diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..60ce3ae65 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +root = true + +[*] +charset = utf-8 +end_of_line = crlf +indent_style = tab +indent_size = tab +insert_final_newline = true +trim_trailing_whitespace = true +max_line_length = off + +[{*.info,*.json,*.mcmeta,*.md,*.cfg,*.yml,*.toml}] +tab_width = 2 + +[{*.info,*.mcmeta,*.cfg}] +end_of_line = lf diff --git a/.gitignore b/.gitignore index 22222fc39..1317d0286 100644 --- a/.gitignore +++ b/.gitignore @@ -1,25 +1,28 @@ # eclipse -eclipse -bin -*.launch -.settings -.metadata -.classpath -.project +/eclipse +/bin +/*.launch +/.settings +/.metadata +/.classpath +/.project # idea -out -*.ipr -*.iws -*.iml -.idea +/out +/*.ipr +/*.iws +/*.iml +/.idea # gradle -build -.gradle +/build +/.gradle + +# vscode +/.vscode # other -run +/run # CurseForge configuration /curseforge.properties diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 34e1e5ca9..e6efdf8c8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -30,11 +30,9 @@ This ties together with the previous point - there's no guarantees that your PR ## I want to help but don't know where to start -If you want to help the project, consider getting involved with the [wiki](ntm.fandom.com) first. Writing an article is the easiest and quickest way of helping, and requires no programming knowledge. If you do know Java and want to help, consider these places first: +If you want to help the project, consider getting involved with the [wiki](https://nucleartech.wiki/) first. Writing an article is the easiest and quickest way of helping, and requires no programming knowledge. If you do know Java and want to help, consider these places first: * Localization, i.e. translations in different language are always accepted. * `IConfigurableMachine`, an interface that allows machines to be added to the `hbmMachines.json` config, is still not used by many machines. * F1 Presentations, also known as "Stare" or "Jar Presentations", is a neat system of creating a short movie explaining functionality. All the relevant code can be found in `com.hbm.wiaj`. -* Some guns still use the old "bow-style" systems and not `ItemGunBase`. -* Many guns don't have any animations whatsoever, just adding a minor recoil would already improve them by a lot. * Adding tooltips to more machines, explaining some of the basics. diff --git a/README.md b/README.md index 0ebb0c7e6..68e85a68e 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ [Official NTM Wiki](https://nucleartech.wiki/wiki/Main_Page) +[Bobcat's Blog (the blag)](https://hbmmods.github.io/), you can find lengthy yapping, upcoming features and some secrets here. + **This is for 1.7.10!** For 1.12, check out these projects: * NTM Reloaded: https://github.com/TheOriginalGolem/Hbm-s-Nuclear-Tech-GIT/releases @@ -93,12 +95,18 @@ If you want to make some changes to the mod, follow this guide: * Click **Add Standard VM**; in the JRE home, navigate to the directory where the JDK is installed, then click finish and select it. 10. Code! +## Contributing animations +Weapon animations in NTM are stored in JSON files, which are used alongside OBJ models to produce high quality animations with reasonable filesizes. Import/Export Blender addons are available for versions 2.79, 3.2, and 4.0 in `tools`, and they should function reasonably well in newer versions as well. See the comments in the header of the export scripts for usage instructions. + ## Compatibility notice NTM has certain behaviors intended to fix vanilla code or to increase compatibility in certain cases where it otherwise would not be possible. These behaviors have the potential of not playing well with other mods, and while no such cases are currently known, here's a list of them. ### Thermos Thermos servers (along with its forks such as Crucible) have a "performance" feature that causes all tile entity ticking to slow down if there's no player present in the same chunk. For obvious reasons, this will heavily impact machines and cause phantom issues that, not having knowledge of this "performance" feature, are near impossible to diagnose. By default, NTM will crash on servers running the Thermos base code and print a lengthy message informing server owners about this "performance" feature as well as how to fix the issues it causes. The error message is printed in plain English on the top of the crash log, failure to read (as well as understand) it will leave the server inoperable. +### Shaders +Shaders (loaded by either Optifine, Iris or otherwise) will in all likelihood break when a gun is held. This is because guns need to skip vanilla's first person item setup for the rendering, however shaders apparently use the setup step for setting certain GL states, and skipping that will break rendering. [Shader Fixer](https://modrinth.com/mod/shader-fixer) is a mod with various fixes, among which is explicit compatibility for NTM's guns. + ### Optifine One of the most common "performance" mods on 1.7.10, Optifine, achieves an increase in performance by breaking small things in spots that are usually hard to notice, although this can cause severe issues with NTM. A short list of problems, along with some solutions, follows: * Get rid of Optifine and use one of the many [other, less intrusive performance mods](https://gist.github.com/makamys/7cb74cd71d93a4332d2891db2624e17c). @@ -108,7 +116,7 @@ One of the most common "performance" mods on 1.7.10, Optifine, achieves an incre ### Angelica In older versions, Angelica caused issues regarding model rendering, often times making 3D models transparent. Ever since the switch to VBOs, models work fine. Another issue was blocks with connected textures not rendering at all, but this too was fixed, meaning as of time of writing there are no major incompatibilities known with Angelica. However there a few minor issues that persist, but those can be fixed: * Often times when making a new world, all items appear as white squares. Somehow, scrolling though the NEI pages fixes this permanently -* Reeds will render weirdly, this is an incompatibility with the "Compact Vertex Format" feature. Disabling it will make reeds look normal +* Reeds will render weirdly, this is an incompatibility with the "Compact Vertex Format" feature. Disabling it will make reeds look normal. Alternatively, reed rendering can be disabled by using `/ntmclient set RENDER_REEDS false`, which works around the issue by not rendering the underwater portion of reeds at all. ### Skybox chainloader NTM adds a few small things to the skybox using a custom skybox renderer. Minecraft can only have a single skybox renderer loaded, so setting the skybox to the NTM custom one would break compatibility with other mods' skyboxes. To mend this, NTM employs a **chainloader**. This chainloader will detect if a different skybox is loaded, save a reference to that skybox and then use NTM's skybox, which when used will also make sure to run the previous modded skybox renderer. In the event that NTM's skybox were to cause trouble, it can be disabled with the config option `1.31_enableSkyboxes`. diff --git a/changelog b/changelog index 3c15d7b6d..90daba41c 100644 --- a/changelog +++ b/changelog @@ -1,6 +1,8 @@ ## Changed -* Changed the multi fluid ID recipe, they now use analog circuits instead of silicon based ones, no longer requiring plastic to make +* Blast doors will now pulverize any block that gets in their way during closing +* The nuclear and RTG furnaces will be retired, their recipes have been removed but they remain operational for now ## Fixed -* Fixed pumpjack gauges not syncing properly -* Fixed some concrete variants not being revertable into uncolored concrete \ No newline at end of file +* Fixed the CCGT's steam output breaking as soon as the steam buffer runs full +* Fixed crash caused by mobs holding belt-fed guns +* Fixed boiler heat input being way too low due to operation order (diffusion was applied AFTER the input heat was capped) \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 93317634f..e33d5f890 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=5061 +mod_build_number=5224 credits=HbMinecraft,\ \ rodolphito (explosion algorithms),\ @@ -11,15 +11,25 @@ credits=HbMinecraft,\ \ Alcater (GUI textures, porting),\ \ MellowArpeggiation (new animation system, turbine sounds, sound fixes, industrial lights, better particle diodes),\ \ Pheo (textures, various machines, models, weapons),\ - \ Vær (gas centrifuges, better worldgen, ZIRNOX, CP-1 parts, starter guide, new cyclotron),\ + \ Vær (gas centrifuges, better worldgen, ZIRNOX, CP-1 parts, starter guide, new cyclotron, weapon animations),\ \ LePeep (coilgun model, BDCL QC),\ \ Adam29 (liquid petroleum, ethanol, electric furnace),\ \ Pvndols (thorium fuel recipe, gas turbine),\ \ JamesH2 (blood mechanics, nitric acid, particle emitter),\ + \ PastaBaguette (coal horse decal),\ \ Doctor17 (russian localization)),\ \ Pashtet (russian localization),\ \ Bismarck (chinese localization),\ \ Creeper-banner (chinese localization),\ + \ 5467864 (chinese localization),\ + \ eeeeee0a (chinese localization),\ + \ hz0909adc (chinese localization),\ + \ LSKLW (chinese localization),\ + \ R-Kaenbyou (chinese localization),\ + \ scp-000000000 (chinese localization),\ + \ UnnameTokiko (chinese localization),\ + \ Herobrine 457985 (chinese localization),\ + \ xxwinhere (chinese localization),\ \ Maksymisio (polish localization)\ \ el3ctro4ndre (italian localization),\ \ Pu-238 (Tom impact effects),\ @@ -39,6 +49,7 @@ credits=HbMinecraft,\ \ Voxelstice (OpenComputers integration, turbine spinup),\ \ BallOfEnergy1 (OpenComputers integration),\ \ sdddddf80 (recipe configs, chinese localization, custom machine holograms),\ + \ Abel1502 (optimization, crate upgrade recipes, strand caster improvements, varous tweaks),\ \ SuperCraftAlex (tooltips)\ \ Ice-Arrow (research reactor tweaks),\ \ 245tt (anvil GUI improvements),\ diff --git a/ntm-animator.blend b/ntm-animator.blend deleted file mode 100644 index 252086d27..000000000 Binary files a/ntm-animator.blend and /dev/null differ diff --git a/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java b/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java index c264d0120..6643e3fcd 100644 --- a/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java +++ b/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java @@ -1,7 +1,7 @@ package api.hbm.energymk2; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.Compat; import api.hbm.energymk2.Nodespace.PowerNode; diff --git a/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java b/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java index 5ec931234..6ff96df42 100644 --- a/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java +++ b/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java @@ -1,7 +1,8 @@ package api.hbm.energymk2; -import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.interfaces.NotableComments; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.Compat; import api.hbm.energymk2.Nodespace.PowerNode; @@ -12,6 +13,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; /** If it receives energy, use this */ +@NotableComments public interface IEnergyReceiverMK2 extends IEnergyHandlerMK2 { public default long transferPower(long power) { diff --git a/src/main/java/api/hbm/energymk2/Nodespace.java b/src/main/java/api/hbm/energymk2/Nodespace.java index cdc618f51..401664333 100644 --- a/src/main/java/api/hbm/energymk2/Nodespace.java +++ b/src/main/java/api/hbm/energymk2/Nodespace.java @@ -5,6 +5,7 @@ import java.util.HashSet; import java.util.Map.Entry; import java.util.Set; +import com.hbm.interfaces.NotableComments; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; @@ -147,7 +148,8 @@ public class Nodespace { if(node != null) popNode(node); } } - + + @NotableComments public static class PowerNode { public BlockPos[] positions; diff --git a/src/main/java/api/hbm/entity/IResistanceProvider.java b/src/main/java/api/hbm/entity/IResistanceProvider.java new file mode 100644 index 000000000..73bc9f507 --- /dev/null +++ b/src/main/java/api/hbm/entity/IResistanceProvider.java @@ -0,0 +1,16 @@ +package api.hbm.entity; + +import net.minecraft.util.DamageSource; + +/** + * Allows custom entities to specify threshold and resistance values based on incoming damage, type and piercing values, along with whatever other internal stats + * the entity has (like glyphid armor). Obviously only works for our own custom entities implementing this, everything else will have to work with the less powerful + * (but still very useful) entity stats in the DamageResistanceHandler. + * + * @author hbm + */ +public interface IResistanceProvider { + + public float[] getCurrentDTDR(DamageSource damage, float amount, float pierceDT, float pierce); + public void onDamageDealt(DamageSource damage, float amount); +} diff --git a/src/main/java/api/hbm/fluid/IFluidConnector.java b/src/main/java/api/hbm/fluid/IFluidConnector.java index a6db68c2c..e299938c1 100644 --- a/src/main/java/api/hbm/fluid/IFluidConnector.java +++ b/src/main/java/api/hbm/fluid/IFluidConnector.java @@ -1,8 +1,8 @@ package api.hbm.fluid; import com.hbm.inventory.fluid.FluidType; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.Compat; import api.hbm.tile.ILoadedTile; diff --git a/src/main/java/api/hbm/fluid/IFluidUser.java b/src/main/java/api/hbm/fluid/IFluidUser.java index 4c98dfd14..3f5ab4f95 100644 --- a/src/main/java/api/hbm/fluid/IFluidUser.java +++ b/src/main/java/api/hbm/fluid/IFluidUser.java @@ -2,8 +2,8 @@ package api.hbm.fluid; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.Compat; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/api/hbm/fluid/PipeNet.java b/src/main/java/api/hbm/fluid/PipeNet.java index 3dacf2f0b..d8a219497 100644 --- a/src/main/java/api/hbm/fluid/PipeNet.java +++ b/src/main/java/api/hbm/fluid/PipeNet.java @@ -1,12 +1,9 @@ package api.hbm.fluid; import java.math.BigInteger; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Date; import java.util.HashSet; import java.util.List; -import java.util.TimeZone; import com.hbm.inventory.fluid.FluidType; @@ -18,18 +15,18 @@ public class PipeNet implements IPipeNet { private FluidType type; private List links = new ArrayList(); private HashSet subscribers = new HashSet(); - + public static List trackingInstances = null; protected BigInteger totalTransfer = BigInteger.ZERO; public List debug = new ArrayList(); - + public PipeNet(FluidType type) { this.type = type; } @Override public void joinNetworks(IPipeNet network) { - + if(network == this) return; @@ -38,11 +35,11 @@ public class PipeNet implements IPipeNet { this.getLinks().add(conductor); } network.getLinks().clear(); - + for(IFluidConnector connector : network.getSubscribers()) { this.subscribe(connector); } - + network.destroy(); } @@ -58,10 +55,10 @@ public class PipeNet implements IPipeNet { @Override public IPipeNet joinLink(IFluidConductor conductor) { - + if(conductor.getPipeNet(type) != null) conductor.getPipeNet(type).leaveLink(conductor); - + conductor.setPipeNet(type, this); this.links.add(conductor); return this; @@ -91,53 +88,54 @@ public class PipeNet implements IPipeNet { @Override public long transferFluid(long fill, int pressure) { - subscribers.removeIf(x -> + subscribers.removeIf(x -> x == null || !(x instanceof TileEntity) || ((TileEntity)x).isInvalid() || !x.isLoaded() ); - + if(this.subscribers.isEmpty()) return fill; - + trackingInstances = new ArrayList(); trackingInstances.add(this); List subList = new ArrayList(subscribers); return fairTransfer(subList, type, pressure, fill); } - + public static long fairTransfer(List subList, FluidType type, int pressure, long fill) { - + if(fill <= 0) return 0; - + List weight = new ArrayList(); long totalReq = 0; - + for(IFluidConnector con : subList) { long req = con.getDemand(type, pressure); weight.add(req); totalReq += req; } - + if(totalReq == 0) return fill; - + long totalGiven = 0; - + for(int i = 0; i < subList.size(); i++) { IFluidConnector con = subList.get(i); long req = weight.get(i); double fraction = (double)req / (double)totalReq; - + long given = (long) Math.floor(fraction * fill); - + if(given > 0) { - + totalGiven += (given - con.transferFluid(type, pressure, given)); - + if(con instanceof TileEntity) { TileEntity tile = (TileEntity) con; tile.getWorldObj().markTileEntityChunkModified(tile.xCoord, tile.yCoord, tile.zCoord, tile); } - + + /* debug code if(trackingInstances != null) { for(int j = 0; j < trackingInstances.size(); j++) { PipeNet net = trackingInstances.get(j); @@ -146,17 +144,18 @@ public class PipeNet implements IPipeNet { log(net, sdf.format(new Date(System.currentTimeMillis())) + " Sending " + given + "mB to " + conToString(con)); } } + */ } } - + if(trackingInstances != null) { - + for(int i = 0; i < trackingInstances.size(); i++) { PipeNet net = trackingInstances.get(i); net.totalTransfer = net.totalTransfer.add(BigInteger.valueOf(totalGiven)); } } - + return fill - totalGiven; } @@ -169,10 +168,10 @@ public class PipeNet implements IPipeNet { public void destroy() { this.valid = false; this.subscribers.clear(); - + for(IFluidConductor con : this.links) con.setPipeNet(type, null); - + this.links.clear(); } @@ -185,22 +184,22 @@ public class PipeNet implements IPipeNet { public BigInteger getTotalTransfer() { return this.totalTransfer; } - + public static void log(PipeNet net, String msg) { net.debug.add(msg); - + while(net.debug.size() > 50) { net.debug.remove(0); } } - + public static String conToString(IFluidConnector con) { - + if(con instanceof TileEntity) { TileEntity tile = (TileEntity) con; return tile.getClass().getSimpleName() + " @ " + tile.xCoord + "/" + tile.yCoord + "/" + tile.zCoord; } - + return "" + con; } } diff --git a/src/main/java/api/hbm/item/IButtonReceiver.java b/src/main/java/api/hbm/item/IButtonReceiver.java deleted file mode 100644 index db1741b55..000000000 --- a/src/main/java/api/hbm/item/IButtonReceiver.java +++ /dev/null @@ -1,17 +0,0 @@ -package api.hbm.item; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -public interface IButtonReceiver { - - /** - * Called in ModEventHandlerClient for any keyboard input related to this item - * @param stack - * @param player - */ - @SideOnly(Side.CLIENT) - public void handleKeyboardInput(ItemStack stack, EntityPlayer player); -} diff --git a/src/main/java/api/hbm/item/IClickReceiver.java b/src/main/java/api/hbm/item/IClickReceiver.java deleted file mode 100644 index fd6830410..000000000 --- a/src/main/java/api/hbm/item/IClickReceiver.java +++ /dev/null @@ -1,20 +0,0 @@ -package api.hbm.item; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -public interface IClickReceiver { - - /** - * Called in ModEventHandlerClient for any mouse input related to this item - * @param stack - * @param player - * @param button - * @param state - * @return true if the event should be canceled - */ - @SideOnly(Side.CLIENT) - public boolean handleMouseInput(ItemStack stack, EntityPlayer player, int button, boolean state); -} diff --git a/src/main/java/api/hbm/redstoneoverradio/IRORInteractive.java b/src/main/java/api/hbm/redstoneoverradio/IRORInteractive.java index 821fc8598..a05b280c9 100644 --- a/src/main/java/api/hbm/redstoneoverradio/IRORInteractive.java +++ b/src/main/java/api/hbm/redstoneoverradio/IRORInteractive.java @@ -8,6 +8,7 @@ public interface IRORInteractive extends IRORInfo { public static String EX_NULL = "Exception: Null Command"; public static String EX_NAME = "Exception: Multiple Name Separators"; + /** Runs a function on the ROR component, usually causing the component to change or do something. Returns are optional. */ public Object runRORFunction(String name, String[] params); /** Extracts the command name from a full command string */ diff --git a/src/main/java/api/hbm/redstoneoverradio/IRORValueProvider.java b/src/main/java/api/hbm/redstoneoverradio/IRORValueProvider.java index 26e615c6b..297882c31 100644 --- a/src/main/java/api/hbm/redstoneoverradio/IRORValueProvider.java +++ b/src/main/java/api/hbm/redstoneoverradio/IRORValueProvider.java @@ -2,5 +2,6 @@ package api.hbm.redstoneoverradio; public interface IRORValueProvider extends IRORInfo { + /** Grabs the specified value from this ROR component, operations should not cause any changes with the component itself */ public Object provideRORValue(String name); } diff --git a/src/main/java/api/hbm/redstoneoverradio/package-info.java b/src/main/java/api/hbm/redstoneoverradio/package-info.java index ef1d4eaad..f3813e512 100644 --- a/src/main/java/api/hbm/redstoneoverradio/package-info.java +++ b/src/main/java/api/hbm/redstoneoverradio/package-info.java @@ -6,17 +6,41 @@ package api.hbm.redstoneoverradio; /* - __ __ __ _______ ________ __ __ __ __ ______ __ - /_/| /_/\ /_/| /______/\ /_______/| /_/| /_/| /_/|_____ /_/| /_____/| /_/| -| || | \\ | || | ___ \\ | ______|/ | ||| || | |/_____| || |___ || | || -| || | \ \\ | || | | \ \\ | ||___ | |/| |/ | ______ || /__| || | ||__ -| || | |\ \\| || | | \ || | |/__/| \ // | |/_____| || | ___|/ | |/_/| -| || | ||\ \| || | | | || | ____|/ > bounding = new ArrayList(); @Override public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB entityBounding, List list, Entity entity) { - + if(!this.useDetailedHitbox()) { super.addCollisionBoxesToList(world, x, y, z, entityBounding, list, entity); return; } - + int[] pos = this.findCore(world, x, y, z); - + if(pos == null) return; - + x = pos[0]; y = pos[1]; z = pos[2]; - + for(AxisAlignedBB aabb :this.bounding) { AxisAlignedBB boxlet = getAABBRotationOffset(aabb, x + 0.5, y, z + 0.5, ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z) - this.offset).getRotation(ForgeDirection.UP)); - + if(entityBounding.intersectsWith(boxlet)) { list.add(boxlet); } } } - + public static AxisAlignedBB getAABBRotationOffset(AxisAlignedBB aabb, double x, double y, double z, ForgeDirection dir) { - + AxisAlignedBB newBox = null; if(dir == ForgeDirection.NORTH) newBox = AxisAlignedBB.getBoundingBox(aabb.minX, aabb.minY, aabb.minZ, aabb.maxX, aabb.maxY, aabb.maxZ); if(dir == ForgeDirection.EAST) newBox = AxisAlignedBB.getBoundingBox(-aabb.maxZ, aabb.minY, aabb.minX, -aabb.minZ, aabb.maxY, aabb.maxX); if(dir == ForgeDirection.SOUTH) newBox = AxisAlignedBB.getBoundingBox(-aabb.maxX, aabb.minY, -aabb.maxZ, -aabb.minX, aabb.maxY, -aabb.minZ); if(dir == ForgeDirection.WEST) newBox = AxisAlignedBB.getBoundingBox(aabb.minZ, aabb.minY, -aabb.maxX, aabb.maxZ, aabb.maxY, -aabb.minX); - + if(newBox != null) { newBox.offset(x, y, z); return newBox; } - + return AxisAlignedBB.getBoundingBox(aabb.minX, aabb.minY, aabb.minZ, aabb.maxX, aabb.maxY, aabb.maxZ).offset(x + 0.5, y + 0.5, z + 0.5); } @@ -476,35 +476,62 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.999F, 1.0F); //for some fucking reason setting maxY to something that isn't 1 magically fixes item collisions } } - + @Override @SideOnly(Side.CLIENT) public boolean shouldDrawHighlight(World world, int x, int y, int z) { return !this.bounding.isEmpty(); } - + @Override @SideOnly(Side.CLIENT) public void drawHighlight(DrawBlockHighlightEvent event, World world, int x, int y, int z) { - + int[] pos = this.findCore(world, x, y, z); if(pos == null) return; - + x = pos[0]; y = pos[1]; z = pos[2]; - + EntityPlayer player = event.player; float interp = event.partialTicks; double dX = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double) interp; double dY = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double) interp; double dZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double)interp; float exp = 0.002F; - + int meta = world.getBlockMetadata(x, y, z); ICustomBlockHighlight.setup(); for(AxisAlignedBB aabb : this.bounding) event.context.drawOutlinedBoundingBox(getAABBRotationOffset(aabb.expand(exp, exp, exp), 0, 0, 0, ForgeDirection.getOrientation(meta - offset).getRotation(ForgeDirection.UP)).getOffsetBoundingBox(x - dX + 0.5, y - dY, z - dZ + 0.5), -1); ICustomBlockHighlight.cleanup(); } + + @Override + public NBTTagCompound getSettings(World world, int x, int y, int z) { + int[] pos = findCore(world, x, y, z); + TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]); + if (tile instanceof ICopiable) + return ((ICopiable) tile).getSettings(world, pos[0], pos[1], pos[2]); + else + return null; + } + + @Override + public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { + int[] pos = findCore(world, x, y, z); + TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]); + if (tile instanceof ICopiable) + ((ICopiable) tile).pasteSettings(nbt, index, world, player, pos[0], pos[1], pos[2]); + } + + @Override + public String[] infoForDisplay(World world, int x, int y, int z) { + int[] pos = findCore(world, x, y, z); + TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]); + if (tile instanceof ICopiable) + return ((ICopiable) tile).infoForDisplay(world, x, y, z); + return null; + } } diff --git a/src/main/java/com/hbm/blocks/BlockEnumMulti.java b/src/main/java/com/hbm/blocks/BlockEnumMulti.java index 0dd222f82..a79493e26 100644 --- a/src/main/java/com/hbm/blocks/BlockEnumMulti.java +++ b/src/main/java/com/hbm/blocks/BlockEnumMulti.java @@ -1,9 +1,6 @@ package com.hbm.blocks; -import java.util.Locale; - import com.hbm.util.EnumUtil; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.material.Material; @@ -11,6 +8,8 @@ import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; +import java.util.Locale; + public class BlockEnumMulti extends BlockMulti { public Class theEnum; @@ -23,17 +22,17 @@ public class BlockEnumMulti extends BlockMulti { this.multiName = multiName; this.multiTexture = multiTexture; } - + protected IIcon[] icons; @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister reg) { - + if(multiTexture) { Enum[] enums = theEnum.getEnumConstants(); this.icons = new IIcon[enums.length]; - + for(int i = 0; i < icons.length; i++) { Enum num = enums[i]; this.icons[i] = reg.registerIcon(this.getTextureMultiName(num)); @@ -42,25 +41,25 @@ public class BlockEnumMulti extends BlockMulti { this.blockIcon = reg.registerIcon(this.getTextureName()); } } - + public String getUnlocalizedName(ItemStack stack) { - + if(this.multiName) { Enum num = EnumUtil.grabEnumSafely(this.theEnum, stack.getItemDamage()); return getUnlocalizedMultiName(num); } - + return this.getUnlocalizedName(); } - + public String getTextureMultiName(Enum num) { return this.getTextureName() + "." + num.name().toLowerCase(Locale.US); } - + public String getUnlocalizedMultiName(Enum num) { return super.getUnlocalizedName() + "." + num.name().toLowerCase(Locale.US); } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { diff --git a/src/main/java/com/hbm/blocks/BlockFallingNT.java b/src/main/java/com/hbm/blocks/BlockFallingNT.java index f880d7268..8e23cc57c 100644 --- a/src/main/java/com/hbm/blocks/BlockFallingNT.java +++ b/src/main/java/com/hbm/blocks/BlockFallingNT.java @@ -1,9 +1,6 @@ package com.hbm.blocks; -import java.util.Random; - import com.hbm.entity.item.EntityFallingBlockNT; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -14,6 +11,8 @@ import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Blocks; import net.minecraft.world.World; +import java.util.Random; + public class BlockFallingNT extends Block { public static boolean fallInstantly; @@ -45,7 +44,7 @@ public class BlockFallingNT extends Block { } protected void fall(World world, int x, int y, int z) { - + if(canFallThrough(world, x, y - 1, z) && y >= 0) { byte range = 32; diff --git a/src/main/java/com/hbm/blocks/BlockMulti.java b/src/main/java/com/hbm/blocks/BlockMulti.java index 21930f6ff..e676c0b71 100644 --- a/src/main/java/com/hbm/blocks/BlockMulti.java +++ b/src/main/java/com/hbm/blocks/BlockMulti.java @@ -1,7 +1,5 @@ package com.hbm.blocks; -import java.util.List; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.material.Material; @@ -9,6 +7,8 @@ import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import java.util.List; + public abstract class BlockMulti extends BlockBase implements IBlockMulti { public BlockMulti() { diff --git a/src/main/java/com/hbm/blocks/BlockRemap.java b/src/main/java/com/hbm/blocks/BlockRemap.java index 1939b2830..97c21a6a1 100644 --- a/src/main/java/com/hbm/blocks/BlockRemap.java +++ b/src/main/java/com/hbm/blocks/BlockRemap.java @@ -1,8 +1,5 @@ package com.hbm.blocks; -import java.util.ArrayList; -import java.util.Random; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -12,8 +9,11 @@ import net.minecraft.util.IIcon; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import java.util.ArrayList; +import java.util.Random; + public class BlockRemap extends Block implements ILookOverlay { - + public Block remapBlock; public int remapMeta; @@ -29,7 +29,7 @@ public class BlockRemap extends Block implements ILookOverlay { public IIcon getIcon(int meta, int side) { return this.remapBlock.getIcon(meta, side); } - + @Override public Item getItemDropped(int meta, Random rand, int fortune) { return this.remapBlock.getItemDropped(meta, rand, fortune); diff --git a/src/main/java/com/hbm/blocks/IAnalyzable.java b/src/main/java/com/hbm/blocks/IAnalyzable.java index e4e76a5ee..7648183c7 100644 --- a/src/main/java/com/hbm/blocks/IAnalyzable.java +++ b/src/main/java/com/hbm/blocks/IAnalyzable.java @@ -1,9 +1,9 @@ package com.hbm.blocks; -import java.util.List; - import net.minecraft.world.World; +import java.util.List; + public interface IAnalyzable { public List getDebugInfo(World world, int x, int y, int z); diff --git a/src/main/java/com/hbm/blocks/ICustomBlockHighlight.java b/src/main/java/com/hbm/blocks/ICustomBlockHighlight.java index 509ddab95..507fe8ff5 100644 --- a/src/main/java/com/hbm/blocks/ICustomBlockHighlight.java +++ b/src/main/java/com/hbm/blocks/ICustomBlockHighlight.java @@ -1,18 +1,17 @@ package com.hbm.blocks; -import org.lwjgl.opengl.GL11; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.world.World; import net.minecraftforge.client.event.DrawBlockHighlightEvent; +import org.lwjgl.opengl.GL11; public interface ICustomBlockHighlight { @SideOnly(Side.CLIENT) public boolean shouldDrawHighlight(World world, int x, int y, int z); @SideOnly(Side.CLIENT) public void drawHighlight(DrawBlockHighlightEvent event, World world, int x, int y, int z); - + @SideOnly(Side.CLIENT) public static void setup() { GL11.glEnable(GL11.GL_BLEND); @@ -22,7 +21,7 @@ public interface ICustomBlockHighlight { GL11.glDisable(GL11.GL_TEXTURE_2D); GL11.glDepthMask(false); } - + @SideOnly(Side.CLIENT) public static void cleanup() { GL11.glDepthMask(true); diff --git a/src/main/java/com/hbm/blocks/ILookOverlay.java b/src/main/java/com/hbm/blocks/ILookOverlay.java index d100ed767..c58c3827b 100644 --- a/src/main/java/com/hbm/blocks/ILookOverlay.java +++ b/src/main/java/com/hbm/blocks/ILookOverlay.java @@ -1,9 +1,5 @@ package com.hbm.blocks; -import java.util.List; - -import org.lwjgl.opengl.GL11; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; @@ -11,6 +7,9 @@ import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent; +import org.lwjgl.opengl.GL11; + +import java.util.List; public interface ILookOverlay { @@ -33,14 +32,14 @@ public interface ILookOverlay { try { for(String line : text) { - + int color = 0xFFFFFF; if(line.startsWith("&[")) { int end = line.lastIndexOf("&]"); color = Integer.parseInt(line.substring(2, end)); line = line.substring(end + 2); } - + mc.fontRenderer.drawStringWithShadow(line, pX, pZ, color); pZ += 10; } diff --git a/src/main/java/com/hbm/blocks/IPersistentInfoProvider.java b/src/main/java/com/hbm/blocks/IPersistentInfoProvider.java index ce033b3cb..4cfb07ad5 100644 --- a/src/main/java/com/hbm/blocks/IPersistentInfoProvider.java +++ b/src/main/java/com/hbm/blocks/IPersistentInfoProvider.java @@ -1,11 +1,11 @@ package com.hbm.blocks; -import java.util.List; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import java.util.List; + public interface IPersistentInfoProvider { public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext); diff --git a/src/main/java/com/hbm/blocks/ITooltipProvider.java b/src/main/java/com/hbm/blocks/ITooltipProvider.java index e959db070..5008b1834 100644 --- a/src/main/java/com/hbm/blocks/ITooltipProvider.java +++ b/src/main/java/com/hbm/blocks/ITooltipProvider.java @@ -1,23 +1,21 @@ package com.hbm.blocks; -import java.util.List; - -import org.lwjgl.input.Keyboard; - import com.hbm.util.I18nUtil; - import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumRarity; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; +import org.lwjgl.input.Keyboard; + +import java.util.List; public interface ITooltipProvider { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext); public default void addStandardInfo(ItemStack stack, EntityPlayer player, List list, boolean ext) { - + if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { for(String s : I18nUtil.resolveKeyArray(((Block)this).getUnlocalizedName() + ".desc")) list.add(EnumChatFormatting.YELLOW + s); } else { @@ -26,7 +24,7 @@ public interface ITooltipProvider { EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); } } - + public default EnumRarity getRarity(ItemStack stack) { return EnumRarity.common; } diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 1bfd61054..c428d8ae0 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1,3467 +1,3505 @@ -package com.hbm.blocks; - -import com.hbm.blocks.BlockEnums.*; -import com.hbm.blocks.bomb.*; -import com.hbm.blocks.fluid.*; -import com.hbm.blocks.gas.*; -import com.hbm.blocks.generic.*; -import com.hbm.blocks.generic.BlockHazard.ExtDisplayEffect; -import com.hbm.blocks.generic.BlockMotherOfAllOres.ItemRandomOreBlock; -import com.hbm.blocks.machine.*; -import com.hbm.blocks.machine.pile.*; -import com.hbm.blocks.machine.rbmk.*; -import com.hbm.blocks.network.*; -import com.hbm.blocks.rail.*; -import com.hbm.blocks.test.*; -import com.hbm.blocks.turret.*; -import com.hbm.items.block.*; -import com.hbm.items.bomb.ItemPrototypeBlock; -import com.hbm.items.special.ItemOreBlock; -import com.hbm.lib.ModDamageSource; -import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; -import com.hbm.tileentity.DoorDecl; -import com.hbm.tileentity.machine.storage.TileEntityFileCabinet; -import cpw.mods.fml.common.registry.GameRegistry; -import net.minecraft.block.Block; -import net.minecraft.block.BlockFalling; -import net.minecraft.block.material.MapColor; -import net.minecraft.block.material.Material; -import net.minecraft.block.material.MaterialLiquid; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.ItemBlock; -import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidRegistry; - -public class ModBlocks { - - public static void mainRegistry() - { - initializeBlock(); - registerBlock(); - } - - public static Block event_tester; - public static Block obj_tester; - public static Block test_core; - public static Block test_charge; - public static Block structure_anchor; - - public static Block ore_uranium; - public static Block ore_uranium_scorched; - public static Block ore_titanium; - public static Block ore_sulfur; - public static Block ore_thorium; - public static Block ore_niter; - public static Block ore_copper; - public static Block ore_tungsten; - public static Block ore_aluminium; - public static Block ore_fluorite; - public static Block ore_lead; - public static Block ore_schrabidium; - public static Block ore_beryllium; - public static Block ore_australium; - public static Block ore_rare; - public static Block ore_cobalt; - public static Block ore_cinnebar; - public static Block ore_coltan; - public static Block ore_alexandrite; - - public static Block ore_random; - public static Block ore_bedrock; - public static Block ore_volcano; - - public static Block ore_nether_coal; - public static Block ore_nether_smoldering; - public static Block ore_nether_uranium; - public static Block ore_nether_uranium_scorched; - public static Block ore_nether_plutonium; - public static Block ore_nether_tungsten; - public static Block ore_nether_sulfur; - public static Block ore_nether_fire; - public static Block ore_nether_cobalt; - public static Block ore_nether_schrabidium; - - public static Block ore_meteor; - - public static Block stone_gneiss; - public static Block ore_gneiss_iron; - public static Block ore_gneiss_gold; - public static Block ore_gneiss_uranium; - public static Block ore_gneiss_uranium_scorched; - public static Block ore_gneiss_copper; - public static Block ore_gneiss_asbestos; - public static Block ore_gneiss_lithium; - public static Block ore_gneiss_schrabidium; - public static Block ore_gneiss_rare; - public static Block ore_gneiss_gas; - - public static Block gneiss_brick; - public static Block gneiss_tile; - public static Block gneiss_chiseled; - - public static Block stone_depth; - public static Block ore_depth_cinnebar; - public static Block ore_depth_zirconium; - public static Block ore_depth_borax; - public static Block cluster_depth_iron; - public static Block cluster_depth_titanium; - public static Block cluster_depth_tungsten; - - public static Block stone_keyhole; - - public static Block stone_depth_nether; - public static Block ore_depth_nether_neodymium; - - public static Block stone_porous; - public static Block stone_resource; - public static Block stalagmite; - public static Block stalactite; - public static Block stone_biome; - - public static Block depth_brick; - public static Block depth_tiles; - public static Block depth_nether_brick; - public static Block depth_nether_tiles; - public static Block depth_dnt; - - public static Block basalt; - public static Block ore_basalt; - public static Block basalt_smooth; - public static Block basalt_brick; - public static Block basalt_polished; - public static Block basalt_tiles; - - public static Block cluster_iron; - public static Block cluster_titanium; - public static Block cluster_aluminium; - public static Block cluster_copper; - - public static Block ore_oil; - public static Block ore_oil_empty; - public static Block ore_oil_sand; - public static Block ore_bedrock_oil; - public static Block ore_lignite; - public static Block ore_asbestos; - public static Block ore_coal_oil; - public static Block ore_coal_oil_burning; - - public static Block ore_tikite; - - public static Block block_thorium; - public static Block block_thorium_fuel; - public static Block block_uranium; - public static Block block_u233; - public static Block block_u235; - public static Block block_u238; - public static Block block_uranium_fuel; - public static Block block_neptunium; - public static Block block_polonium; - public static Block block_mox_fuel; - public static Block block_plutonium; - public static Block block_pu238; - public static Block block_pu239; - public static Block block_pu240; - public static Block block_pu_mix; - public static Block block_plutonium_fuel; - public static Block block_titanium; - public static Block block_sulfur; - public static Block block_niter; - public static Block block_copper; - public static Block block_red_copper; - public static Block block_tungsten; - public static Block block_aluminium; - public static Block block_fluorite; - public static Block block_steel; - public static Block block_tcalloy; - public static Block block_cdalloy; - public static Block block_lead; - public static Block block_bismuth; - public static Block block_cadmium; - public static Block block_coltan; - public static Block block_tantalium; - public static Block block_niobium; - public static Block block_trinitite; - public static Block block_waste; - public static Block block_waste_painted; - public static Block block_waste_vitrified; - public static Block ancient_scrap; - public static Block block_corium; - public static Block block_corium_cobble; - public static Block block_scrap; - public static Block block_electrical_scrap; - public static Block block_beryllium; - public static Block block_schraranium; - public static Block block_schrabidium; - public static Block block_schrabidate; - public static Block block_solinium; - public static Block block_schrabidium_fuel; - public static Block block_euphemium; - public static Block block_schrabidium_cluster; - public static Block block_euphemium_cluster; - public static Block block_dineutronium; - public static Block block_advanced_alloy; - public static Block block_magnetized_tungsten; - public static Block block_combine_steel; - public static Block block_desh; - public static Block block_dura_steel; - public static Block block_starmetal; - public static Block block_polymer; - public static Block block_bakelite; - public static Block block_rubber; - public static Block block_yellowcake; - public static Block block_insulator; - public static Block block_fiberglass; - public static Block block_asbestos; - public static Block block_cobalt; - public static Block block_lithium; - public static Block block_zirconium; - public static Block block_white_phosphorus; - public static Block block_red_phosphorus; - public static Block block_fallout; - public static Block block_foam; - public static Block block_coke; - public static Block block_graphite; - public static Block block_graphite_drilled; - public static Block block_graphite_fuel; - public static Block block_graphite_plutonium; - public static Block block_graphite_rod; - public static Block block_graphite_source; - public static Block block_graphite_lithium; - public static Block block_graphite_tritium; - public static Block block_graphite_detector; - public static Block block_boron; - public static Block block_lanthanium; - public static Block block_ra226; - public static Block block_actinium; - public static Block block_tritium; - public static Block block_semtex; - public static Block block_c4; - public static Block block_smore; - public static Block block_slag; - - public static Block block_australium; - public static Block block_weidanium; - public static Block block_reiium; - public static Block block_unobtainium; - public static Block block_daffergon; - public static Block block_verticium; - - public static Block block_cap; - - public static Block deco_titanium; - public static Block deco_red_copper; - public static Block deco_tungsten; - public static Block deco_aluminium; - public static Block deco_steel; - public static Block deco_lead; - public static Block deco_beryllium; - public static Block deco_asbestos; - public static Block deco_rbmk; - public static Block deco_rbmk_smooth; - - public static Block deco_emitter; - public static Block part_emitter; - public static Block deco_loot; - public static Block pedestal; - public static Block bobblehead; - public static Block snowglobe; - public static Block plushie; - - public static Block gravel_obsidian; - public static Block gravel_diamond; - public static Block asphalt; - public static Block asphalt_light; - - public static Block reinforced_brick; - public static Block reinforced_ducrete; - public static Block reinforced_glass; - public static Block reinforced_glass_pane; - public static Block reinforced_light; - public static Block reinforced_sand; - public static Block reinforced_lamp_off; - public static Block reinforced_lamp_on; - public static Block reinforced_laminate; - public static Block reinforced_laminate_pane; - - public static Block lamp_tritium_green_off; - public static Block lamp_tritium_green_on; - public static Block lamp_tritium_blue_off; - public static Block lamp_tritium_blue_on; - - public static Block lamp_demon; - - public static Block lantern; - public static Block lantern_behemoth; - - public static Block spotlight_incandescent; - public static Block spotlight_incandescent_off; - public static Block spotlight_fluoro; - public static Block spotlight_fluoro_off; - public static Block spotlight_halogen; - public static Block spotlight_halogen_off; - public static Block spotlight_beam; - public static Block floodlight; - public static Block floodlight_beam; - - public static Block reinforced_stone; - public static Block concrete_smooth; - public static Block concrete_colored; - public static Block concrete_colored_ext; - public static Block concrete; - public static Block concrete_asbestos; - public static Block concrete_super; - public static Block concrete_super_broken; - public static Block ducrete_smooth; - public static Block ducrete; - public static Block concrete_pillar; - public static Block brick_concrete; - public static Block brick_concrete_mossy; - public static Block brick_concrete_cracked; - public static Block brick_concrete_broken; - public static Block brick_concrete_marked; - public static Block brick_ducrete; - public static Block brick_obsidian; - public static Block brick_light; - public static Block brick_compound; - public static Block brick_asbestos; - public static Block brick_fire; - - public static Block concrete_slab; - public static Block concrete_double_slab; - public static Block concrete_brick_slab; - public static Block concrete_brick_double_slab; - public static Block brick_slab; - public static Block brick_double_slab; - - public static Block concrete_smooth_stairs; - public static Block concrete_stairs; - public static Block concrete_asbestos_stairs; - public static Block ducrete_smooth_stairs; - public static Block ducrete_stairs; - public static Block brick_concrete_stairs; - public static Block brick_concrete_mossy_stairs; - public static Block brick_concrete_cracked_stairs; - public static Block brick_concrete_broken_stairs; - public static Block brick_ducrete_stairs; - public static Block reinforced_stone_stairs; - public static Block reinforced_brick_stairs; - public static Block brick_obsidian_stairs; - public static Block brick_light_stairs; - public static Block brick_compound_stairs; - public static Block brick_asbestos_stairs; - public static Block brick_fire_stairs; - public static Block asphalt_stairs; - - public static Block cmb_brick; - public static Block cmb_brick_reinforced; - - public static Block vinyl_tile; - - public static Block tile_lab; - public static Block tile_lab_cracked; - public static Block tile_lab_broken; - - public static Block block_meteor; - public static Block block_meteor_cobble; - public static Block block_meteor_broken; - public static Block block_meteor_molten; - public static Block block_meteor_treasure; - public static Block meteor_polished; - public static Block meteor_brick; - public static Block meteor_brick_mossy; - public static Block meteor_brick_cracked; - public static Block meteor_brick_chiseled; - public static Block meteor_pillar; - public static Block meteor_spawner; - public static Block meteor_battery; - - public static Block moon_turf; - - public static Block brick_jungle; - public static Block brick_jungle_cracked; - public static Block brick_jungle_fragile; - public static Block brick_jungle_lava; - public static Block brick_jungle_ooze; - public static Block brick_jungle_mystic; - public static Block brick_jungle_trap; - public static Block brick_jungle_glyph; - public static Block brick_jungle_circle; - - public static Block brick_forgotten; - public static Block brick_red; - - public static Block deco_computer; - public static Block deco_crt; - public static Block deco_toaster; - - public static Block filing_cabinet; - - public static Block tape_recorder; - public static Block steel_poles; - public static Block pole_top; - public static Block pole_satellite_receiver; - public static Block steel_wall; - public static Block steel_corner; - public static Block steel_roof; - public static Block steel_beam; - public static Block steel_scaffold; - public static Block steel_grate; - public static Block steel_grate_wide; - - public static Block deco_pipe; - public static Block deco_pipe_rusted; - public static Block deco_pipe_green; - public static Block deco_pipe_green_rusted; - public static Block deco_pipe_red; - public static Block deco_pipe_marked; - public static Block deco_pipe_rim; - public static Block deco_pipe_rim_rusted; - public static Block deco_pipe_rim_green; - public static Block deco_pipe_rim_green_rusted; - public static Block deco_pipe_rim_red; - public static Block deco_pipe_rim_marked; - public static Block deco_pipe_framed; - public static Block deco_pipe_framed_rusted; - public static Block deco_pipe_framed_green; - public static Block deco_pipe_framed_green_rusted; - public static Block deco_pipe_framed_red; - public static Block deco_pipe_framed_marked; - public static Block deco_pipe_quad; - public static Block deco_pipe_quad_rusted; - public static Block deco_pipe_quad_green; - public static Block deco_pipe_quad_green_rusted; - public static Block deco_pipe_quad_red; - public static Block deco_pipe_quad_marked; - - public static Block broadcaster_pc; - public static Block geiger; - public static Block hev_battery; - - public static Block fence_metal; - - public static Block sand_boron; - public static Block sand_lead; - public static Block sand_uranium; - public static Block sand_polonium; - public static Block sand_quartz; - public static Block ash_digamma; - public static Block glass_boron; - public static Block glass_lead; - public static Block glass_uranium; - public static Block glass_trinitite; - public static Block glass_polonium; - public static Block glass_ash; - public static Block glass_quartz; - - public static Block mush; - public static Block mush_block; - public static Block mush_block_stem; - - public static Block glyphid_base; - public static Block glyphid_spawner; - - public static Block plant_flower; - public static Block plant_tall; - public static Block plant_dead; - public static Block reeds; - - public static Block waste_earth; - public static Block waste_mycelium; - public static Block waste_trinitite; - public static Block waste_trinitite_red; - public static Block waste_log; - public static Block waste_leaves; - public static Block waste_planks; - public static Block frozen_dirt; - public static Block frozen_grass; - public static Block frozen_log; - public static Block frozen_planks; - public static Block dirt_dead; - public static Block dirt_oily; - public static Block sand_dirty; - public static Block sand_dirty_red; - public static Block stone_cracked; - public static Block burning_earth; - public static Block tektite; - public static Block ore_tektite_osmiridium; - public static Block impact_dirt; - - public static Block fallout; - public static Block foam_layer; - public static Block sand_boron_layer; - public static Block leaves_layer; - public static Block oil_spill; - - public static Block sellafield_slaked; - public static Block sellafield_bedrock; - public static Block sellafield; - public static Block ore_sellafield_diamond; - public static Block ore_sellafield_emerald; - public static Block ore_sellafield_uranium_scorched; - public static Block ore_sellafield_schrabidium; - public static Block ore_sellafield_radgem; - - public static Block geysir_water; - public static Block geysir_chlorine; - public static Block geysir_vapor; - public static Block geysir_nether; - - public static Block flame_war; - public static Block float_bomb; - public static Block therm_endo; - public static Block therm_exo; - public static Block emp_bomb; - public static Block det_cord; - public static Block det_charge; - public static Block det_nuke; - public static Block det_miner; - public static Block red_barrel; - public static Block pink_barrel; - public static Block yellow_barrel; - public static Block vitrified_barrel; - public static Block lox_barrel; - public static Block taint_barrel; - public static Block crashed_balefire; - public static Block fireworks; - public static Block dynamite; - public static Block tnt; - public static Block semtex; - public static Block c4; - public static Block fissure_bomb; - - public static Block charge_dynamite; - public static Block charge_miner; - public static Block charge_c4; - public static Block charge_semtex; - - public static Block mine_ap; - public static Block mine_he; - public static Block mine_shrap; - public static Block mine_fat; - - public static Block crate; - public static Block crate_weapon; - public static Block crate_lead; - public static Block crate_metal; - public static Block crate_red; - public static Block crate_can; - public static Block crate_ammo; - public static Block crate_jungle; - - public static Block boxcar; - public static Block boat; - - public static Block seal_frame; - public static Block seal_controller; - public static Block seal_hatch; - - public static Block vault_door; - public static Block blast_door; - public static Block sliding_blast_door; - public static Block fire_door; - public static Block transition_seal; - public static Block silo_hatch; - public static Block silo_hatch_large; - - // 1.12.2 Doors - public static Block secure_access_door; - public static Block large_vehicle_door; - public static Block qe_containment; - public static Block qe_sliding_door; - public static Block round_airlock_door; - public static Block sliding_seal_door; - public static Block water_door; - - public static Block door_metal; - public static Block door_office; - public static Block door_bunker; - public static Block door_red; - - public static Block barbed_wire; - public static Block barbed_wire_fire; - public static Block barbed_wire_poison; - public static Block barbed_wire_acid; - public static Block barbed_wire_wither; - public static Block barbed_wire_ultradeath; - public static Block spikes; - - public static Block charger; - - public static Block tesla; - - public static Block sat_mapper; - public static Block sat_scanner; - public static Block sat_radar; - public static Block sat_laser; - public static Block sat_foeq; - public static Block sat_resonator; - - public static Block sat_dock; - - public static Block soyuz_capsule; - - public static Block crate_iron; - public static Block crate_steel; - public static Block crate_desh; - public static Block crate_tungsten; - public static Block crate_template; - public static Block safe; - public static Block mass_storage; - - public static Block nuke_gadget; - public static Block nuke_boy; - public static Block nuke_man; - public static Block nuke_mike; - public static Block nuke_tsar; - public static Block nuke_fleija; - public static Block nuke_prototype; - public static Block nuke_custom; - public static Block nuke_solinium; - public static Block nuke_n2; - public static Block nuke_fstbmb; - public static Block bomb_multi; - - public static Block pump_steam; - public static Block pump_electric; - - public static Block heater_firebox; - public static Block heater_oven; - 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; - public static Block furnace_combination; - public static Block machine_stirling; - public static Block machine_stirling_steel; - public static Block machine_stirling_creative; - public static Block machine_sawmill; - public static Block machine_crucible; - public static Block machine_boiler; - public static Block machine_industrial_boiler; - - public static Block foundry_mold; - public static Block foundry_basin; - public static Block foundry_channel; - public static Block foundry_tank; - public static Block foundry_outlet; - public static Block machine_strand_caster; - public static Block foundry_slagtap; - public static Block slag; - - public static Block machine_difurnace_off; - public static Block machine_difurnace_on; - public static Block machine_difurnace_extension; - public static Block machine_difurnace_rtg_off; - public static Block machine_difurnace_rtg_on; - //public static final int guiID_test_difurnace = 1; historical - - public static Block machine_centrifuge; - public static Block machine_gascent; - - public static Block machine_fel; - public static Block machine_silex; - - public static Block machine_crystallizer; - - public static Block machine_uf6_tank; - - public static Block machine_puf6_tank; - - public static Block machine_reactor_breeding; - - public static Block machine_furnace_brick_off; - public static Block machine_furnace_brick_on; - public static Block machine_nuke_furnace_off; - public static Block machine_nuke_furnace_on; - public static Block machine_rtg_furnace_off; - public static Block machine_rtg_furnace_on; - - public static Block machine_industrial_generator; - - public static Block machine_cyclotron; - public static Block machine_exposure_chamber; - - public static Block hadron_plating; - public static Block hadron_plating_blue; - public static Block hadron_plating_black; - public static Block hadron_plating_yellow; - public static Block hadron_plating_striped; - public static Block hadron_plating_voltz; - public static Block hadron_plating_glass; - public static Block hadron_coil_alloy; - public static Block hadron_coil_gold; - public static Block hadron_coil_neodymium; - public static Block hadron_coil_magtung; - public static Block hadron_coil_schrabidium; - public static Block hadron_coil_schrabidate; - public static Block hadron_coil_starmetal; - public static Block hadron_coil_chlorophyte; - public static Block hadron_coil_mese; - public static Block hadron_power; - public static Block hadron_power_10m; - public static Block hadron_power_100m; - public static Block hadron_power_1g; - public static Block hadron_power_10g; - public static Block hadron_diode; - public static Block hadron_analysis; - public static Block hadron_analysis_glass; - public static Block hadron_access; - public static Block hadron_core; - public static Block hadron_cooler; - - public static Block machine_electric_furnace_off; - public static Block machine_electric_furnace_on; - - public static Block machine_microwave; - - public static Block machine_arc_furnace_off; - public static Block machine_arc_furnace_on; - - //public static Block machine_deuterium; - - public static Block machine_battery_potato; - public static Block machine_battery; - public static Block machine_lithium_battery; - public static Block machine_schrabidium_battery; - public static Block machine_dineutronium_battery; - public static Block machine_fensu; - public static final int guiID_machine_fensu = 99; - - public static Block capacitor_bus; - public static Block capacitor_copper; - public static Block capacitor_gold; - public static Block capacitor_niobium; - public static Block capacitor_tantalium; - public static Block capacitor_schrabidate; - - public static Block machine_wood_burner; - - public static Block red_wire_coated; - public static Block red_cable; - public static Block red_cable_classic; - public static Block red_cable_paintable; - public static Block red_cable_gauge; - public static Block red_connector; - public static Block red_pylon; - public static Block red_pylon_medium_wood; - public static Block red_pylon_medium_wood_transformer; - public static Block red_pylon_medium_steel; - public static Block red_pylon_medium_steel_transformer; - public static Block red_pylon_large; - public static Block substation; - public static Block cable_switch; - public static Block cable_detector; - public static Block cable_diode; - public static Block machine_detector; - public static Block fluid_duct_neo; - public static Block fluid_duct_box; - public static Block fluid_duct_paintable; - public static Block fluid_duct_gauge; - public static Block fluid_duct_exhaust; - public static Block fluid_valve; - public static Block fluid_switch; - public static Block machine_drain; - public static Block radio_torch_sender; - public static Block radio_torch_receiver; - public static Block radio_torch_counter; - public static Block radio_torch_logic; - public static Block radio_telex; - - public static Block conveyor; - public static Block conveyor_express; - //public static Block conveyor_classic; - public static Block conveyor_double; - public static Block conveyor_triple; - public static Block conveyor_chute; - public static Block conveyor_lift; - public static Block crane_extractor; - public static Block crane_inserter; - public static Block crane_grabber; - public static Block crane_router; - public static Block crane_boxer; - public static Block crane_unboxer; - public static Block crane_splitter; - public static Block crane_partitioner; - - public static Block drone_waypoint; - public static Block drone_crate; - public static Block drone_waypoint_request; - public static Block drone_dock; - public static Block drone_crate_provider; - public static Block drone_crate_requester; - - public static Block fan; - - public static Block piston_inserter; - - public static Block chain; - - public static Block ladder_sturdy; - public static Block ladder_iron; - public static Block ladder_gold; - public static Block ladder_aluminium; - public static Block ladder_copper; - public static Block ladder_titanium; - public static Block ladder_lead; - public static Block ladder_cobalt; - public static Block ladder_steel; - public static Block ladder_tungsten; - - public static Block barrel_plastic; - public static Block barrel_corroded; - public static Block barrel_iron; - public static Block barrel_steel; - public static Block barrel_tcalloy; - public static Block barrel_antimatter; - - public static Block machine_transformer; - public static Block machine_transformer_20; - public static Block machine_transformer_dnt; - public static Block machine_transformer_dnt_20; - - public static Block bomb_multi_large; - public static final int guiID_bomb_multi_large = 18; - - public static Block machine_solar_boiler; - public static final int guiID_solar_boiler = 18; - public static Block solar_mirror; - - public static Block struct_launcher; - public static Block struct_scaffold; - public static Block struct_launcher_core; - public static Block struct_launcher_core_large; - public static Block struct_soyuz_core; - public static Block struct_iter_core; - public static Block struct_plasma_core; - public static Block struct_watz_core; - public static Block struct_icf_core; - - public static Block factory_titanium_hull; - @Deprecated public static Block factory_titanium_furnace; - @Deprecated public static Block factory_titanium_conductor; - - public static Block factory_advanced_hull; - @Deprecated public static Block factory_advanced_furnace; - @Deprecated public static Block factory_advanced_conductor; - - public static Block cm_block; - public static Block cm_sheet; - public static Block cm_engine; - public static Block cm_tank; - public static Block cm_circuit; - public static Block cm_port; - public static Block cm_flux; - public static Block cm_heat; - public static Block custom_machine; - public static Block cm_anchor; - - public static Block pwr_fuel; - public static Block pwr_control; - public static Block pwr_channel; - public static Block pwr_heatex; - public static Block pwr_heatsink; - public static Block pwr_neutron_source; - public static Block pwr_reflector; - public static Block pwr_casing; - public static Block pwr_port; - public static Block pwr_controller; - public static Block pwr_block; - - public static Block fusion_conductor; - public static Block fusion_center; - public static Block fusion_motor; - public static Block fusion_heater; - public static Block fusion_hatch; - public static Block plasma; - - public static Block iter; - public static Block plasma_heater; - - public static Block machine_icf_press; - public static Block icf_component; - public static Block icf; - public static Block icf_controller; - public static Block icf_laser_component; - public static Block icf_block; - - public static Block watz; - public static Block watz_pump; - - public static Block watz_element; - public static Block watz_cooler; - public static Block watz_end; - public static Block watz_conductor; - - public static Block balefire; - public static Block fire_digamma; - public static Block digamma_matter; - - public static Block dfc_emitter; - public static Block dfc_injector; - public static Block dfc_receiver; - public static Block dfc_stabilizer; - public static Block dfc_core; - - public static Block machine_converter_he_rf; - public static Block machine_converter_rf_he; - - public static Block machine_schrabidium_transmutator; - - public static Block machine_diesel; - public static Block machine_combustion_engine; - - public static Block machine_shredder; - - public static Block machine_teleporter; - public static Block teleanchor; - public static Block field_disturber; - - public static Block machine_rtg_grey; - public static Block machine_amgen; - public static Block machine_geo; - public static Block machine_minirtg; - public static Block machine_powerrtg; - public static Block machine_radiolysis; - public static Block machine_hephaestus; - - public static Block machine_well; - public static Block oil_pipe; - public static Block machine_pumpjack; - public static Block machine_fracking_tower; - - public static Block machine_flare; - public static Block chimney_brick; - public static Block chimney_industrial; - - public static Block machine_refinery; - public static Block machine_vacuum_distill; - public static Block machine_fraction_tower; - public static Block fraction_spacer; - public static Block machine_catalytic_cracker; - public static Block machine_catalytic_reformer; - public static Block machine_hydrotreater; - public static Block machine_coker; - - public static Block machine_boiler_off; - - public static Block machine_steam_engine; - public static Block machine_turbine; - public static Block machine_large_turbine; - - public static Block machine_deuterium_extractor; - public static Block machine_deuterium_tower; - - public static Block machine_liquefactor; - public static Block machine_solidifier; - public static Block machine_compressor; - - public static Block machine_chungus; - public static Block machine_condenser; - public static Block machine_tower_small; - public static Block machine_tower_large; - public static Block machine_condenser_powered; - - public static Block machine_electrolyser; - - public static Block machine_excavator; - public static Block machine_ore_slopper; - public static Block machine_autosaw; - - public static Block machine_mining_laser; - public static Block barricade; // a sand bag that drops nothing, for automated walling purposes - - public static Block machine_assembler; - public static Block machine_assemfac; - public static Block machine_arc_welder; - public static Block machine_soldering_station; - public static Block machine_arc_furnace; - - public static Block machine_chemplant; - public static Block machine_chemfac; - public static Block machine_mixer; - - public static Block machine_fluidtank; - public static Block machine_bat9000; - public static Block machine_orbus; - - public static Block launch_pad; - public static Block launch_pad_rusted; - public static Block launch_pad_large; - - public static Block machine_missile_assembly; - - public static Block compact_launcher; - public static Block launch_table; - - public static Block soyuz_launcher; - - public static Block machine_radar; - public static Block machine_radar_large; - public static Block radar_screen; - - public static Block machine_turbofan; - public static Block machine_turbinegas; - - public static Block press_preheater; - public static Block machine_press; - public static Block machine_epress; - public static Block machine_conveyor_press; - - public static Block machine_siren; - - public static Block machine_radgen; - - public static Block machine_satlinker; - public static Block machine_keyforge; - - public static Block machine_armor_table; - - public static Block reactor_research; - public static Block reactor_zirnox; - public static Block zirnox_destroyed; - - public static Block machine_controller; - - public static Block machine_spp_bottom; - public static Block machine_spp_top; - - public static Block radiobox; - public static Block radiorec; - - public static Block machine_forcefield; - - public static Block machine_waste_drum; - public static Block machine_storage_drum; - - public static Block machine_autocrafter; - public static Block machine_funnel; - - public static Block anvil_iron; - public static Block anvil_lead; - public static Block anvil_steel; - public static Block anvil_desh; - public static Block anvil_saturnite; - public static Block anvil_ferrouranium; - public static Block anvil_bismuth_bronze; - public static Block anvil_arsenic_bronze; - public static Block anvil_schrabidate; - public static Block anvil_dnt; - public static Block anvil_osmiridium; - public static Block anvil_murky; - - public static Block turret_chekhov; - public static Block turret_friendly; - public static Block turret_jeremy; - public static Block turret_tauon; - public static Block turret_richard; - public static Block turret_howard; - public static Block turret_howard_damaged; - public static Block turret_maxwell; - public static Block turret_fritz; - public static Block turret_arty; - public static Block turret_himars; - public static Block turret_sentry; - public static Block turret_sentry_damaged; - - public static Block rbmk_rod; - public static Block rbmk_rod_mod; - public static Block rbmk_rod_reasim; - public static Block rbmk_rod_reasim_mod; - public static Block rbmk_control; - public static Block rbmk_control_mod; - public static Block rbmk_control_auto; - public static Block rbmk_blank; - public static Block rbmk_boiler; - public static Block rbmk_reflector; - public static Block rbmk_absorber; - public static Block rbmk_moderator; - public static Block rbmk_outgasser; - public static Block rbmk_storage; - public static Block rbmk_cooler; - public static Block rbmk_heater; - public static Block rbmk_console; - public static Block rbmk_crane_console; - public static Block rbmk_loader; - public static Block rbmk_steam_inlet; - public static Block rbmk_steam_outlet; - public static Block pribris; - public static Block pribris_burning; - public static Block pribris_radiating; - public static Block pribris_digamma; - - public static Block book_guide; - - public static Block rail_wood; - public static Block rail_narrow; - public static Block rail_highspeed; - public static Block rail_booster; - - public static Block rail_narrow_straight; - public static Block rail_narrow_curve; - public static Block rail_large_straight; - public static Block rail_large_straight_short; - public static Block rail_large_curve; - public static Block rail_large_curve_7; - public static Block rail_large_curve_9; - public static Block rail_large_ramp; - public static Block rail_large_buffer; - public static Block rail_large_switch; - public static Block rail_large_switch_flipped; - - public static Block statue_elb; - public static Block statue_elb_g; - public static Block statue_elb_w; - public static Block statue_elb_f; - - public static Block cheater_virus; - public static Block cheater_virus_seed; - public static Block crystal_virus; - public static Block crystal_hardened; - public static Block crystal_pulsar; - public static Block taint; - - public static Block vent_chlorine; - public static Block vent_cloud; - public static Block vent_pink_cloud; - public static Block vent_chlorine_seal; - public static Block chlorine_gas; - - public static Block gas_radon; - public static Block gas_radon_dense; - public static Block gas_radon_tomb; - public static Block gas_meltdown; - public static Block gas_monoxide; - public static Block gas_asbestos; - public static Block gas_coal; - public static Block gas_flammable; - public static Block gas_explosive; - public static Block vacuum; - - public static Block absorber; - public static Block absorber_red; - public static Block absorber_green; - public static Block absorber_pink; - public static Block decon; - public static Block transission_hatch; - - public static Block mud_block; - public static Fluid mud_fluid; - public static final Material fluidmud = (new MaterialLiquid(MapColor.adobeColor)); - - public static Block acid_block; - public static Fluid acid_fluid; - public static final Material fluidacid = (new MaterialLiquid(MapColor.purpleColor)); - - public static Block toxic_block; - public static Fluid toxic_fluid; - public static final Material fluidtoxic = (new MaterialLiquid(MapColor.greenColor)); - - public static Block schrabidic_block; - public static Fluid schrabidic_fluid; - public static final Material fluidschrabidic = (new MaterialLiquid(MapColor.cyanColor)); - - public static Block corium_block; - public static Fluid corium_fluid; - public static final Material fluidcorium = (new MaterialLiquid(MapColor.brownColor) { - - @Override - public boolean blocksMovement() { - return true; - } - - @Override - public Material setImmovableMobility() { //override access modifier - return super.setImmovableMobility(); - } - - }.setImmovableMobility()); - - public static Block volcanic_lava_block; - public static Fluid volcanic_lava_fluid; - public static Block rad_lava_block; - public static Fluid rad_lava_fluid; - - public static Block sulfuric_acid_block; - public static Fluid sulfuric_acid_fluid; - - public static Block concrete_liquid; - - public static Block volcano_core; - public static Block volcano_rad_core; - - public static Block dummy_block_vault; - public static Block dummy_block_blast; - public static Block dummy_block_uf6; - public static Block dummy_block_puf6; - public static Block dummy_plate_compact_launcher; - public static Block dummy_port_compact_launcher; - public static Block dummy_plate_launch_table; - public static Block dummy_port_launch_table; - public static Block dummy_plate_cargo; - - public static Block ntm_dirt; - - public static Block pink_log; - public static Block pink_planks; - public static Block pink_slab; - public static Block pink_double_slab; - public static Block pink_stairs; - - public static Material materialGas = new MaterialGas(); - - private static void initializeBlock() { - - event_tester = new TestEventTester(Material.iron).setBlockName("event_tester").setCreativeTab(null).setHardness(2.5F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":event_tester"); - obj_tester = new TestObjTester(Material.iron).setBlockName("obj_tester").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F); - test_core = new TestCore(Material.iron).setBlockName("test_core").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":test_core"); - test_charge = new TestCharge(Material.iron).setBlockName("test_charge").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F); - structure_anchor = new BlockGeneric(Material.iron).setBlockName("structure_anchor").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":structure_anchor"); - - ore_uranium = new BlockOutgas(Material.rock, true, 5, true).setBlockName("ore_uranium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_uranium"); - ore_uranium_scorched = new BlockOutgas(Material.rock, true, 5, true).setBlockName("ore_uranium_scorched").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_uranium_scorched"); - ore_titanium = new BlockGeneric(Material.rock).setBlockName("ore_titanium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_titanium"); - ore_sulfur = new BlockOre(Material.rock).setBlockName("ore_sulfur").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_sulfur"); - ore_thorium = new BlockGeneric(Material.rock).setBlockName("ore_thorium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_thorium"); - - ore_niter = new BlockOre(Material.rock).setBlockName("ore_niter").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_niter"); - ore_copper = new BlockGeneric(Material.rock).setBlockName("ore_copper").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_copper"); - ore_tungsten = new BlockGeneric(Material.rock).setBlockName("ore_tungsten").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_tungsten"); - ore_aluminium = new BlockGeneric(Material.rock).setBlockName("ore_aluminium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_aluminium"); - ore_fluorite = new BlockOre(Material.rock).setBlockName("ore_fluorite").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_fluorite"); - ore_lead = new BlockGeneric(Material.rock).setBlockName("ore_lead").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_lead"); - ore_schrabidium = new BlockOre(Material.rock, 0.1F, 0.5F).setBlockName("ore_schrabidium").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":ore_schrabidium"); - ore_beryllium = new BlockGeneric(Material.rock).setBlockName("ore_beryllium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":ore_beryllium"); - ore_lignite = new BlockOre(Material.rock).setBlockName("ore_lignite").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":ore_lignite"); - ore_asbestos = new BlockOutgas(Material.rock, true, 5, true).setBlockName("ore_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":ore_asbestos"); - ore_coal_oil = new BlockCoalOil(Material.rock).setBlockName("ore_coal_oil").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":ore_coal_oil"); - ore_coal_oil_burning = new BlockCoalBurning(Material.rock).setBlockName("ore_coal_oil_burning").setCreativeTab(MainRegistry.blockTab).setLightLevel(10F/15F).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":ore_coal_oil_burning"); - - cluster_iron = new BlockCluster(Material.rock).setBlockName("cluster_iron").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":cluster_iron"); - cluster_titanium = new BlockCluster(Material.rock).setBlockName("cluster_titanium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":cluster_titanium"); - cluster_aluminium = new BlockCluster(Material.rock).setBlockName("cluster_aluminium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":cluster_aluminium"); - cluster_copper = new BlockCluster(Material.rock).setBlockName("cluster_copper").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":cluster_copper"); - - ore_nether_coal = new BlockNetherCoal(Material.rock, false, 5, true).setBlockName("ore_nether_coal").setCreativeTab(MainRegistry.blockTab).setLightLevel(10F/15F).setHardness(0.4F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_coal"); - ore_nether_smoldering = new BlockSmolder(Material.rock).setBlockName("ore_nether_smoldering").setCreativeTab(MainRegistry.blockTab).setLightLevel(1F).setHardness(0.4F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_smoldering"); - ore_nether_uranium = new BlockOutgas(Material.rock, true, 5, true).setBlockName("ore_nether_uranium").setCreativeTab(MainRegistry.blockTab).setHardness(0.4F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_uranium"); - ore_nether_uranium_scorched = new BlockOutgas(Material.rock, true, 5, true).setBlockName("ore_nether_uranium_scorched").setCreativeTab(MainRegistry.blockTab).setHardness(0.4F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_uranium_scorched"); - ore_nether_plutonium = new BlockGeneric(Material.rock).setBlockName("ore_nether_plutonium").setCreativeTab(MainRegistry.blockTab).setHardness(0.4F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_plutonium"); - ore_nether_tungsten = new BlockGeneric(Material.rock).setBlockName("ore_nether_tungsten").setCreativeTab(MainRegistry.blockTab).setHardness(0.4F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_tungsten"); - ore_nether_sulfur = new BlockOre(Material.rock).setBlockName("ore_nether_sulfur").setCreativeTab(MainRegistry.blockTab).setHardness(0.4F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_sulfur"); - ore_nether_fire = new BlockOre(Material.rock).setBlockName("ore_nether_fire").setCreativeTab(MainRegistry.blockTab).setHardness(0.4F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_fire"); - ore_nether_cobalt = new BlockOre(Material.rock).setBlockName("ore_nether_cobalt").setCreativeTab(MainRegistry.blockTab).setHardness(0.4F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_cobalt"); - ore_nether_schrabidium = new BlockGeneric(Material.rock).setBlockName("ore_nether_schrabidium").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_schrabidium"); - - ore_meteor = new BlockMeteorOre().setBlockName("ore_meteor").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); - - stone_gneiss = new BlockGeneric(Material.rock).setBlockName("stone_gneiss").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":stone_gneiss_var"); - ore_gneiss_iron = new BlockOre(Material.rock).setBlockName("ore_gneiss_iron").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_gneiss_iron"); - ore_gneiss_gold = new BlockOre(Material.rock).setBlockName("ore_gneiss_gold").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_gneiss_gold"); - ore_gneiss_uranium = new BlockOutgas(Material.rock, true, 5, true).setBlockName("ore_gneiss_uranium").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_gneiss_uranium"); - ore_gneiss_uranium_scorched = new BlockOutgas(Material.rock, true, 5, true).setBlockName("ore_gneiss_uranium_scorched").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_gneiss_uranium_scorched"); - ore_gneiss_copper = new BlockOre(Material.rock).setBlockName("ore_gneiss_copper").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_gneiss_copper"); - ore_gneiss_asbestos = new BlockOutgas(Material.rock, true, 5, true).setBlockName("ore_gneiss_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_gneiss_asbestos"); - ore_gneiss_lithium = new BlockOre(Material.rock).setBlockName("ore_gneiss_lithium").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_gneiss_lithium"); - ore_gneiss_schrabidium = new BlockOre(Material.rock).setBlockName("ore_gneiss_schrabidium").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_gneiss_schrabidium"); - ore_gneiss_rare = new BlockOre(Material.rock).setBlockName("ore_gneiss_rare").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_gneiss_rare"); - ore_gneiss_gas = new BlockOre(Material.rock).setBlockName("ore_gneiss_gas").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_gneiss_gas"); - - gneiss_brick = new BlockGeneric(Material.rock).setBlockName("gneiss_brick").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":gneiss_brick"); - gneiss_tile = new BlockGeneric(Material.rock).setBlockName("gneiss_tile").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":gneiss_tile"); - gneiss_chiseled = new BlockPillar(Material.rock, RefStrings.MODID + ":gneiss_tile").setBlockName("gneiss_chiseled").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":gneiss_chiseled"); - - stone_depth = new BlockDepth().setBlockName("stone_depth").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":stone_depth"); - ore_depth_cinnebar = new BlockDepthOre().setBlockName("ore_depth_cinnebar").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ore_depth_cinnebar"); - ore_depth_zirconium = new BlockDepthOre().setBlockName("ore_depth_zirconium").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ore_depth_zirconium"); - ore_depth_borax = new BlockDepthOre().setBlockName("ore_depth_borax").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ore_depth_borax"); - cluster_depth_iron = new BlockDepthOre().setBlockName("cluster_depth_iron").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":cluster_depth_iron"); - cluster_depth_titanium = new BlockDepthOre().setBlockName("cluster_depth_titanium").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":cluster_depth_titanium"); - cluster_depth_tungsten = new BlockDepthOre().setBlockName("cluster_depth_tungsten").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":cluster_depth_tungsten"); - ore_alexandrite = new BlockDepthOre().setBlockName("ore_alexandrite").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ore_alexandrite"); - - stone_keyhole = new BlockKeyhole().setBlockName("stone_keyhole").setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":stone_keyhole"); - - ore_random = new BlockMotherOfAllOres().setBlockName("ore_random").setCreativeTab(MainRegistry.blockTab); - ore_bedrock = new BlockBedrockOreTE().setBlockName("ore_bedrock").setCreativeTab(null); - ore_volcano = new BlockFissure().setBlockName("ore_volcano").setLightLevel(1F).setCreativeTab(MainRegistry.blockTab); - - depth_brick = new BlockDepth().setBlockName("depth_brick").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":depth_brick"); - depth_tiles = new BlockDepth().setBlockName("depth_tiles").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":depth_tiles"); - depth_nether_brick = new BlockDepth().setBlockName("depth_nether_brick").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":depth_nether_brick"); - depth_nether_tiles = new BlockDepth().setBlockName("depth_nether_tiles").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":depth_nether_tiles"); - depth_dnt = new BlockDepth().setBlockName("depth_dnt").setCreativeTab(MainRegistry.blockTab).setResistance(60000.0F).setBlockTextureName(RefStrings.MODID + ":depth_dnt"); - - stone_depth_nether = new BlockDepth().setBlockName("stone_depth_nether").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":stone_depth_nether"); - ore_depth_nether_neodymium = new BlockDepthOre().setBlockName("ore_depth_nether_neodymium").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ore_depth_nether_neodymium"); - - stone_porous = new BlockPorous().setBlockName("stone_porous").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":stone_porous"); - stone_resource = new BlockResourceStone().setBlockName("stone_resource").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); - stalagmite = new BlockStalagmite().setBlockName("stalagmite").setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.0F); - stalactite = new BlockStalagmite().setBlockName("stalactite").setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.0F); - stone_biome = new BlockBiomeStone().setBlockName("stone_biome").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); - - basalt = new BlockGeneric(Material.rock).setBlockName("basalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt"); - ore_basalt = new BlockOreBasalt().setBlockName("ore_basalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_basalt"); - basalt_smooth = new BlockGeneric(Material.rock).setBlockName("basalt_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_smooth"); - basalt_brick = new BlockGeneric(Material.rock).setBlockName("basalt_brick").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_brick"); - basalt_polished = new BlockGeneric(Material.rock).setBlockName("basalt_polished").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_polished"); - basalt_tiles = new BlockGeneric(Material.rock).setBlockName("basalt_tiles").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_tiles"); - - ore_australium = new BlockGeneric(Material.rock).setBlockName("ore_australium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_australium"); - ore_rare = new BlockOre(Material.rock).setBlockName("ore_rare").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_rare"); - ore_cobalt = new BlockOre(Material.rock).setBlockName("ore_cobalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_cobalt"); - ore_cinnebar = new BlockOre(Material.rock).setBlockName("ore_cinnebar").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_cinnebar"); - ore_coltan = new BlockOre(Material.rock).setBlockName("ore_coltan").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_coltan"); - - ore_oil = new BlockOre(Material.rock).setBlockName("ore_oil").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_oil"); - ore_oil_empty = new BlockGeneric(Material.rock).setBlockName("ore_oil_empty").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_oil_empty"); - ore_oil_sand = new BlockFalling(Material.sand).setBlockName("ore_oil_sand").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeSand).setHardness(0.5F).setResistance(1.0F).setBlockTextureName(RefStrings.MODID + ":ore_oil_sand_alt"); - ore_bedrock_oil = new BlockGeneric(Material.rock).noMobSpawn().setBlockName("ore_bedrock_oil").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(1_000_000).setBlockTextureName(RefStrings.MODID + ":ore_bedrock_oil"); - - ore_tikite = new BlockDragonProof(Material.rock).setBlockName("ore_tikite").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_tikite_alt"); - - block_uranium = new BlockHazard().makeBeaconable().setBlockName("block_uranium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_uranium"); - block_u233 = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_u233").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_u233"); - block_u235 = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_u235").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_u235"); - block_u238 = new BlockHazard().makeBeaconable().setBlockName("block_u238").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_u238"); - block_uranium_fuel = new BlockHazard().makeBeaconable().setBlockName("block_uranium_fuel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_uranium_fuel"); - block_thorium = new BlockHazard().makeBeaconable().setBlockName("block_thorium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_thorium"); - block_thorium_fuel = new BlockHazard().makeBeaconable().setBlockName("block_thorium_fuel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_thorium_fuel"); - block_neptunium = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_neptunium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":block_neptunium"); - block_polonium = new BlockHotHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_polonium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_polonium"); - block_mox_fuel = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_mox_fuel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_mox_fuel"); - block_plutonium = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_plutonium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_plutonium"); - block_pu238 = new BlockHotHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_pu238").setCreativeTab(MainRegistry.blockTab).setLightLevel(5F/15F).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_pu238"); - block_pu239 = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_pu239").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_pu239"); - block_pu240 = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_pu240").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_pu240"); - block_pu_mix = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_pu_mix").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_pu_mix"); - block_plutonium_fuel = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_plutonium_fuel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_plutonium_fuel"); - block_titanium = new BlockBeaconable(Material.iron).setBlockName("block_titanium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_titanium"); - block_sulfur = new BlockBeaconable(Material.iron).setBlockName("block_sulfur").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_sulfur"); - block_niter = new BlockBeaconable(Material.iron).setBlockName("block_niter").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_niter"); - block_copper = new BlockBeaconable(Material.iron).setBlockName("block_copper").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":block_copper"); - block_red_copper = new BlockBeaconable(Material.iron).setBlockName("block_red_copper").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(25.0F).setBlockTextureName(RefStrings.MODID + ":block_red_copper"); - block_tungsten = new BlockBeaconable(Material.iron).setBlockName("block_tungsten").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":block_tungsten"); - block_aluminium = new BlockBeaconable(Material.iron).setBlockName("block_aluminium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":block_aluminium"); - block_fluorite = new BlockBeaconable(Material.iron).setBlockName("block_fluorite").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_fluorite"); - block_steel = new BlockBeaconable(Material.iron).setBlockName("block_steel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); - block_tcalloy = new BlockBeaconable(Material.iron).setBlockName("block_tcalloy").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(70.0F).setBlockTextureName(RefStrings.MODID + ":block_tcalloy"); - block_cdalloy = new BlockBeaconable(Material.iron).setBlockName("block_cdalloy").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(70.0F).setBlockTextureName(RefStrings.MODID + ":block_cdalloy"); - block_lead = new BlockBeaconable(Material.iron).setBlockName("block_lead").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_lead"); - block_bismuth = new BlockBeaconable(Material.iron).setBlockName("block_bismuth").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(90.0F).setBlockTextureName(RefStrings.MODID + ":block_bismuth"); - block_cadmium = new BlockBeaconable(Material.iron).setBlockName("block_cadmium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(90.0F).setBlockTextureName(RefStrings.MODID + ":block_cadmium"); - block_coltan = new BlockBeaconable(Material.iron).setBlockName("block_coltan").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_coltan"); - block_tantalium = new BlockBeaconable(Material.iron).setBlockName("block_tantalium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_tantalium"); - block_niobium = new BlockBeaconable(Material.iron).setBlockName("block_niobium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F); - block_trinitite = new BlockHazard().makeBeaconable().setBlockName("block_trinitite").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_trinitite"); - block_waste = new BlockNuclearWaste().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_waste").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_waste"); - block_waste_painted = new BlockNuclearWaste().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_waste_painted").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_waste_painted"); - block_waste_vitrified = new BlockNuclearWaste().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_waste_vitrified").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_waste_vitrified"); - ancient_scrap = new BlockOutgas(Material.iron, true, 1, true, true).setBlockName("ancient_scrap").setCreativeTab(MainRegistry.blockTab).setHardness(100.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":ancient_scrap"); - block_corium = new BlockHazard(Material.iron).setBlockName("block_corium").setCreativeTab(MainRegistry.blockTab).setHardness(100.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":block_corium"); - block_corium_cobble = new BlockOutgas(Material.iron, true, 1, true, true).setBlockName("block_corium_cobble").setCreativeTab(MainRegistry.blockTab).setHardness(100.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":block_corium_cobble"); - block_scrap = new BlockFalling(Material.sand).setBlockName("block_scrap").setCreativeTab(MainRegistry.blockTab).setHardness(2.5F).setResistance(5.0F).setStepSound(Block.soundTypeGravel).setBlockTextureName(RefStrings.MODID + ":block_scrap"); - block_electrical_scrap = new BlockFalling(Material.iron).setBlockName("block_electrical_scrap").setCreativeTab(MainRegistry.blockTab).setHardness(2.5F).setResistance(5.0F).setStepSound(Block.soundTypeMetal).setBlockTextureName(RefStrings.MODID + ":electrical_scrap_alt2"); - block_beryllium = new BlockBeaconable(Material.iron).setBlockName("block_beryllium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":block_beryllium"); - block_schraranium = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.SCHRAB).setBlockName("block_schraranium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(250.0F).setBlockTextureName(RefStrings.MODID + ":block_schraranium"); - block_schrabidium = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.SCHRAB).setBlockName("block_schrabidium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_schrabidium"); - block_schrabidate = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.SCHRAB).setBlockName("block_schrabidate").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_schrabidate"); - block_solinium = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.SCHRAB).setBlockName("block_solinium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_solinium"); - block_schrabidium_fuel = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.SCHRAB).setBlockName("block_schrabidium_fuel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_schrabidium_fuel"); - block_euphemium = new BlockBeaconable(Material.iron).setBlockName("block_euphemium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(60000.0F).setBlockTextureName(RefStrings.MODID + ":block_euphemium"); - block_dineutronium = new BlockBeaconable(Material.iron).setBlockName("block_dineutronium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(60000.0F).setBlockTextureName(RefStrings.MODID + ":block_dineutronium"); - block_schrabidium_cluster = new BlockRotatablePillar(Material.rock, RefStrings.MODID + ":block_schrabidium_cluster_top").setBlockName("block_schrabidium_cluster").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(60000.0F).setBlockTextureName(RefStrings.MODID + ":block_schrabidium_cluster_side"); - block_euphemium_cluster = new BlockRotatablePillar(Material.rock, RefStrings.MODID + ":block_euphemium_cluster_top").setBlockName("block_euphemium_cluster").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(60000.0F).setBlockTextureName(RefStrings.MODID + ":block_euphemium_cluster_side"); - block_advanced_alloy = new BlockBeaconable(Material.iron).setBlockName("block_advanced_alloy").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":block_advanced_alloy"); - block_magnetized_tungsten = new BlockBeaconable(Material.iron).setBlockName("block_magnetized_tungsten").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(75.0F).setBlockTextureName(RefStrings.MODID + ":block_magnetized_tungsten"); - block_combine_steel = new BlockBeaconable(Material.iron).setBlockName("block_combine_steel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_combine_steel"); - block_desh = new BlockBeaconable(Material.iron).setBlockName("block_desh").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(300.0F).setBlockTextureName(RefStrings.MODID + ":block_desh"); - block_dura_steel = new BlockBeaconable(Material.iron).setBlockName("block_dura_steel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":block_dura_steel"); - block_starmetal = new BlockBeaconable(Material.iron).setBlockName("block_starmetal").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(400.0F).setBlockTextureName(RefStrings.MODID + ":block_starmetal"); - block_polymer = new BlockBeaconable(Material.rock).setBlockName("block_polymer").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypePiston).setHardness(3.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_polymer"); - block_bakelite = new BlockBeaconable(Material.rock).setBlockName("block_bakelite").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypePiston).setHardness(3.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":block_bakelite"); - block_rubber = new BlockBeaconable(Material.rock).setBlockName("block_rubber").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypePiston).setHardness(3.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":block_rubber"); - block_yellowcake = new BlockHazardFalling().makeBeaconable().setBlockName("block_yellowcake").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeSand).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_yellowcake"); - block_insulator = new BlockRotatablePillar(Material.cloth, RefStrings.MODID + ":block_insulator_top").setBlockName("block_insulator").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeCloth).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_insulator_side"); - block_fiberglass = new BlockRotatablePillar(Material.cloth, RefStrings.MODID + ":block_fiberglass_top").setBlockName("block_fiberglass").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeCloth).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":block_fiberglass_side"); - block_asbestos = new BlockOutgas(Material.cloth, true, 5, true).setBlockName("block_asbestos").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeCloth).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":block_asbestos"); - block_cobalt = new BlockBeaconable(Material.iron).setBlockName("block_cobalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_cobalt"); - block_lithium = new BlockLithium(Material.iron).setBlockName("block_lithium").setStepSound(Block.soundTypeMetal).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_lithium"); - block_zirconium = new BlockBeaconable(Material.iron).setBlockName("block_zirconium").setStepSound(Block.soundTypeMetal).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":block_zirconium"); - block_white_phosphorus = new BlockHazard(Material.rock).makeBeaconable().setBlockName("block_white_phosphorus").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_white_phosphorus"); - block_red_phosphorus = new BlockHazardFalling().makeBeaconable().setStepSound(Block.soundTypeSand).setBlockName("block_red_phosphorus").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_red_phosphorus"); - block_fallout = new BlockHazardFalling().setStepSound(Block.soundTypeGravel).setBlockName("block_fallout").setCreativeTab(MainRegistry.blockTab).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":ash"); - block_foam = new BlockGeneric(Material.craftedSnow).setBlockName("block_foam").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeSnow).setHardness(0.5F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":foam"); - block_coke = new BlockCoke().setBlockName("block_coke").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F); - block_graphite = new BlockGraphite(Material.iron, 30, 5).setBlockName("block_graphite").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F); - block_graphite_drilled = new BlockGraphiteDrilled().setBlockName("block_graphite_drilled"); - block_graphite_fuel = new BlockGraphiteFuel().setBlockName("block_graphite_fuel"); - block_graphite_plutonium = new BlockGraphiteSource().setBlockName("block_graphite_plutonium"); - block_graphite_rod = new BlockGraphiteRod().setBlockName("block_graphite_rod").setBlockTextureName(RefStrings.MODID + ":block_graphite_rod_in"); - block_graphite_source = new BlockGraphiteSource().setBlockName("block_graphite_source"); - block_graphite_lithium = new BlockGraphiteBreedingFuel().setBlockName("block_graphite_lithium"); - block_graphite_tritium = new BlockGraphiteBreedingProduct().setBlockName("block_graphite_tritium"); - block_graphite_detector = new BlockGraphiteNeutronDetector().setBlockName("block_graphite_detector"); - block_boron = new BlockBeaconable(Material.iron).setBlockName("block_boron").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_boron"); - block_lanthanium = new BlockBeaconable(Material.iron).setBlockName("block_lanthanium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_lanthanium"); - block_ra226 = new BlockHazard().makeBeaconable().setBlockName("block_ra226").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_ra226"); - block_actinium = new BlockHazard().makeBeaconable().setBlockName("block_actinium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_actinium"); - block_tritium = new BlockRotatablePillar(Material.glass, RefStrings.MODID + ":block_tritium_top").setBlockName("block_tritium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGlass).setHardness(3.0F).setResistance(2.0F).setBlockTextureName(RefStrings.MODID + ":block_tritium_side"); - block_semtex = new BlockPlasticExplosive(Material.tnt).setBlockName("block_semtex").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(2.0F).setBlockTextureName(RefStrings.MODID + ":block_semtex"); - block_c4 = new BlockPlasticExplosive(Material.tnt).setBlockName("block_c4").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(2.0F).setBlockTextureName(RefStrings.MODID + ":block_c4"); - block_smore = new BlockPillar(Material.rock, RefStrings.MODID + ":block_smore_top").setBlockName("block_smore").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_smore_side"); - block_slag = new BlockSlag(Material.rock).setBlockName("block_slag").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeStone).setHardness(2.0F).setBlockTextureName(RefStrings.MODID + ":block_slag"); - - block_australium = new BlockBeaconable(Material.iron).setBlockName("block_australium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_australium"); - block_weidanium = new BlockBeaconable(Material.iron).setBlockName("block_weidanium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_weidanium"); - block_reiium = new BlockBeaconable(Material.iron).setBlockName("block_reiium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_reiium"); - block_unobtainium = new BlockBeaconable(Material.iron).setBlockName("block_unobtainium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_unobtainium"); - block_daffergon = new BlockBeaconable(Material.iron).setBlockName("block_daffergon").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_daffergon"); - block_verticium = new BlockBeaconable(Material.iron).setBlockName("block_verticium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_verticium"); - - block_cap = new BlockCap().setBlockName("block_cap").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); - - deco_titanium = new BlockOre(Material.iron).noFortune().setBlockName("deco_titanium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_titanium"); - deco_red_copper = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_red_copper").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_red_copper"); - deco_tungsten = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_tungsten").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_tungsten"); - deco_aluminium = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_aluminium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_aluminium"); - deco_steel = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_steel").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_steel"); - deco_lead = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_lead").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_lead"); - deco_beryllium = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_beryllium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_beryllium"); - deco_asbestos = new BlockOutgas(Material.cloth, true, 5, true).noFortune().setBlockName("deco_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_asbestos"); - deco_rbmk = new BlockGeneric(Material.iron).setBlockName("deco_rbmk").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_side"); - deco_rbmk_smooth = new BlockGeneric(Material.iron).setBlockName("deco_rbmk_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_top"); - - deco_emitter = new BlockEmitter().setBlockName("deco_emitter").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":emitter"); - part_emitter = new PartEmitter().setBlockName("part_emitter").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":part_top"); - deco_loot = new BlockLoot().setBlockName("deco_loot").setCreativeTab(null).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); - pedestal = new BlockPedestal().setBlockName("pedestal").setCreativeTab(null).setHardness(2.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":pedestal_top"); - bobblehead = new BlockBobble().setBlockName("bobblehead").setCreativeTab(MainRegistry.blockTab).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); - snowglobe = new BlockSnowglobe().setBlockName("snowglobe").setCreativeTab(MainRegistry.blockTab).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":glass_boron"); - plushie = new BlockPlushie().setBlockName("plushie").setStepSound(Block.soundTypeCloth).setResistance(50_0000.0F).setCreativeTab(MainRegistry.blockTab).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":block_fiberglass_side"); - - gravel_obsidian = new BlockFalling(Material.iron).setBlockName("gravel_obsidian").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGravel).setHardness(5.0F).setResistance(240.0F).setBlockTextureName(RefStrings.MODID + ":gravel_obsidian"); - gravel_diamond = new BlockFalling(Material.sand).setBlockName("gravel_diamond").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGravel).setHardness(0.6F).setBlockTextureName(RefStrings.MODID + ":gravel_diamond"); - asphalt = new BlockSpeedy(Material.rock, 1.5).setBlockName("asphalt").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(120.0F).setBlockTextureName(RefStrings.MODID + ":asphalt"); - asphalt_light = new BlockSpeedy(Material.rock, 1.5).setBlockName("asphalt_light").setCreativeTab(MainRegistry.blockTab).setLightLevel(1F).setHardness(15.0F).setResistance(120.0F).setBlockTextureName(RefStrings.MODID + ":asphalt_light"); - - reinforced_brick = new BlockGeneric(Material.rock).setBlockName("reinforced_brick").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(300.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_brick"); - reinforced_glass = new BlockNTMGlassCT(0, RefStrings.MODID + ":reinforced_glass", Material.rock).setBlockName("reinforced_glass").setCreativeTab(MainRegistry.blockTab).setLightOpacity(0).setHardness(2.0F).setResistance(25.0F); - reinforced_glass_pane = new BlockNTMGlassPane(0, RefStrings.MODID + ":reinforced_glass_pane", RefStrings.MODID + ":reinforced_glass_pane_edge", Material.rock, false).setBlockName("reinforced_glass_pane").setCreativeTab(MainRegistry.blockTab).setLightOpacity(1).setHardness(2.0F).setResistance(25.0F); - reinforced_light = new BlockGeneric(Material.rock).setBlockName("reinforced_light").setCreativeTab(MainRegistry.blockTab).setLightLevel(1.0F).setHardness(15.0F).setResistance(80.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_light"); - reinforced_sand = new BlockGeneric(Material.rock).setBlockName("reinforced_sand").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(40.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_sand"); - reinforced_lamp_off = new ReinforcedLamp(Material.rock, false).setBlockName("reinforced_lamp_off").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(80.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_lamp_off"); - reinforced_lamp_on = new ReinforcedLamp(Material.rock, true).setBlockName("reinforced_lamp_on").setHardness(15.0F).setResistance(80.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_lamp_on"); - reinforced_laminate = new BlockNTMGlassCT(1, RefStrings.MODID + ":reinforced_laminate", Material.rock, true).setBlockName("reinforced_laminate").setCreativeTab(MainRegistry.blockTab).setLightOpacity(0).setHardness(15.0F).setResistance(300.0F); - reinforced_laminate_pane = new BlockNTMGlassPane(1, RefStrings.MODID + ":reinforced_laminate_pane", RefStrings.MODID + ":reinforced_laminate_pane_edge", Material.rock, true).setBlockName("reinforced_laminate_pane").setCreativeTab(MainRegistry.blockTab).setLightOpacity(1).setHardness(15.0F).setResistance(300.0F); - - lamp_tritium_green_off = new TritiumLamp(Material.redstoneLight, false).setBlockName("lamp_tritium_green_off").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lamp_tritium_green_off"); - lamp_tritium_green_on = new TritiumLamp(Material.redstoneLight, true).setBlockName("lamp_tritium_green_on").setStepSound(Block.soundTypeGlass).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lamp_tritium_green_on"); - lamp_tritium_blue_off = new TritiumLamp(Material.redstoneLight, false).setBlockName("lamp_tritium_blue_off").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lamp_tritium_blue_off"); - lamp_tritium_blue_on = new TritiumLamp(Material.redstoneLight, true).setBlockName("lamp_tritium_blue_on").setStepSound(Block.soundTypeGlass).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lamp_tritium_blue_on"); - - 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 + ":block_steel"); - lantern_behemoth = new BlockLanternBehemoth().setBlockName("lantern_behemoth").setStepSound(Block.soundTypeMetal).setCreativeTab(null).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":block_rust"); - - spotlight_incandescent = new Spotlight(Material.iron, 2, LightType.INCANDESCENT, true).setBlockName("spotlight_incandescent").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":cage_lamp"); - spotlight_incandescent_off = new Spotlight(Material.iron, 2, LightType.INCANDESCENT, false).setBlockName("spotlight_incandescent_off").setBlockTextureName(RefStrings.MODID + ":cage_lamp_off"); - spotlight_fluoro = new SpotlightModular(Material.iron, 8, LightType.FLUORESCENT, true).setBlockName("spotlight_fluoro").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":fluorescent_lamp"); - spotlight_fluoro_off = new SpotlightModular(Material.iron, 8, LightType.FLUORESCENT, false).setBlockName("spotlight_fluoro_off").setBlockTextureName(RefStrings.MODID + ":fluorescent_lamp_off"); - spotlight_halogen = new Spotlight(Material.iron, 32, LightType.HALOGEN, true).setBlockName("spotlight_halogen").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":flood_lamp"); - spotlight_halogen_off = new Spotlight(Material.iron, 32, LightType.HALOGEN, false).setBlockName("spotlight_halogen_off").setBlockTextureName(RefStrings.MODID + ":flood_lamp_off"); - spotlight_beam = new SpotlightBeam().setBlockName("spotlight_beam"); - floodlight = new Floodlight(Material.iron).setBlockName("floodlight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - floodlight_beam = new FloodlightBeam().setBlockName("floodlight_beam"); - - reinforced_stone = new BlockGeneric(Material.rock).setBlockName("reinforced_stone").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_stone"); - concrete_smooth = new BlockRadResistant(Material.rock).setBlockName("concrete_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(140.0F).setBlockTextureName(RefStrings.MODID + ":concrete"); - concrete_colored = new BlockConcreteColored(Material.rock).setBlockName("concrete_colored").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(140.0F).setBlockTextureName(RefStrings.MODID + ":concrete"); - concrete_colored_ext = new BlockConcreteColoredExt(Material.rock).setBlockName("concrete_colored_ext").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(140.0F).setBlockTextureName(RefStrings.MODID + ":concrete_colored_ext"); - concrete = new BlockGeneric(Material.rock).setBlockName("concrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(140.0F).setBlockTextureName(RefStrings.MODID + ":concrete_tile"); - concrete_asbestos = new BlockGeneric(Material.rock).setBlockName("concrete_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(150.0F).setBlockTextureName(RefStrings.MODID + ":concrete_asbestos"); - concrete_super = new BlockUberConcrete().setBlockName("concrete_super").setCreativeTab(MainRegistry.blockTab).setHardness(150.0F).setResistance(1000.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(180.0F).setBlockTextureName(RefStrings.MODID + ":concrete_pillar_side"); - brick_concrete = new BlockGeneric(Material.rock).setBlockName("brick_concrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(160.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); - brick_concrete_mossy = new BlockGeneric(Material.rock).setBlockName("brick_concrete_mossy").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(160.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(60.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(45.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(160.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_marked"); - brick_obsidian = new BlockGeneric(Material.rock).setBlockName("brick_obsidian").setCreativeTab(MainRegistry.blockTab).setLightOpacity(15).setHardness(15.0F).setResistance(120.0F).setBlockTextureName(RefStrings.MODID + ":brick_obsidian"); - brick_light = new BlockGeneric(Material.rock).setBlockName("brick_light").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":brick_light"); - brick_compound = new BlockGeneric(Material.rock).setBlockName("brick_compound").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(400.0F).setBlockTextureName(RefStrings.MODID + ":brick_compound"); - cmb_brick = new BlockGeneric(Material.rock).setBlockName("cmb_brick").setCreativeTab(MainRegistry.blockTab).setHardness(25.0F).setResistance(5000.0F).setBlockTextureName(RefStrings.MODID + ":cmb_brick"); - cmb_brick_reinforced = new BlockGeneric(Material.rock).setBlockName("cmb_brick_reinforced").setCreativeTab(MainRegistry.blockTab).setHardness(25.0F).setResistance(50000.0F).setBlockTextureName(RefStrings.MODID + ":cmb_brick_reinforced"); - brick_asbestos = new BlockOutgas(Material.rock, true, 5, true).setBlockName("brick_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":brick_asbestos"); - brick_fire = new BlockGeneric(Material.rock).setBlockName("brick_fire").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(35.0F).setBlockTextureName(RefStrings.MODID + ":brick_fire"); - - ducrete_smooth = new BlockGeneric(Material.rock).setBlockName("ducrete_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(20.0F).setResistance(500.0F).setBlockTextureName(RefStrings.MODID + ":ducrete"); - ducrete = new BlockGeneric(Material.rock).setBlockName("ducrete").setCreativeTab(MainRegistry.blockTab).setHardness(20.0F).setResistance(500.0F).setBlockTextureName(RefStrings.MODID + ":ducrete_tile"); - brick_ducrete = new BlockGeneric(Material.rock).setBlockName("brick_ducrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(750.0F).setBlockTextureName(RefStrings.MODID + ":brick_ducrete"); - reinforced_ducrete = new BlockGeneric(Material.rock).setBlockName("reinforced_ducrete").setCreativeTab(MainRegistry.blockTab).setHardness(20.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_ducrete"); - - concrete_slab = new BlockMultiSlab(null, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete, asphalt).setBlockName("concrete_slab").setCreativeTab(MainRegistry.blockTab); - concrete_double_slab = new BlockMultiSlab(concrete_slab, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete, asphalt).setBlockName("concrete_double_slab").setCreativeTab(MainRegistry.blockTab); - concrete_brick_slab = new BlockMultiSlab(null, Material.rock, brick_concrete, brick_concrete_mossy, brick_concrete_cracked, brick_concrete_broken, brick_ducrete).setBlockName("concrete_brick_slab").setCreativeTab(MainRegistry.blockTab); - concrete_brick_double_slab = new BlockMultiSlab(concrete_brick_slab, Material.rock, brick_concrete, brick_concrete_mossy, brick_concrete_cracked, brick_concrete_broken, brick_ducrete).setBlockName("concrete_brick_double_slab").setCreativeTab(MainRegistry.blockTab); - brick_slab = new BlockMultiSlab(null, Material.rock, reinforced_stone, reinforced_brick, brick_obsidian, brick_light, brick_compound, brick_asbestos, brick_fire).setBlockName("brick_slab").setCreativeTab(MainRegistry.blockTab); - brick_double_slab = new BlockMultiSlab(brick_slab, Material.rock, reinforced_stone, reinforced_brick, brick_obsidian, brick_light, brick_compound, brick_asbestos, brick_fire).setBlockName("brick_double_slab").setCreativeTab(MainRegistry.blockTab); - - concrete_smooth_stairs = new BlockGenericStairs(concrete_smooth, 0).setBlockName("concrete_smooth_stairs").setCreativeTab(MainRegistry.blockTab); - concrete_stairs = new BlockGenericStairs(concrete, 0).setBlockName("concrete_stairs").setCreativeTab(MainRegistry.blockTab); - concrete_asbestos_stairs = new BlockGenericStairs(concrete_asbestos, 0).setBlockName("concrete_asbestos_stairs").setCreativeTab(MainRegistry.blockTab); - ducrete_smooth_stairs = new BlockGenericStairs(ducrete_smooth, 0).setBlockName("ducrete_smooth_stairs").setCreativeTab(MainRegistry.blockTab); - ducrete_stairs = new BlockGenericStairs(ducrete, 0).setBlockName("ducrete_stairs").setCreativeTab(MainRegistry.blockTab); - brick_concrete_stairs = new BlockGenericStairs(brick_concrete, 0).setBlockName("brick_concrete_stairs").setCreativeTab(MainRegistry.blockTab); - brick_concrete_mossy_stairs = new BlockGenericStairs(brick_concrete_mossy, 0).setBlockName("brick_concrete_mossy_stairs").setCreativeTab(MainRegistry.blockTab); - brick_concrete_cracked_stairs = new BlockGenericStairs(brick_concrete_cracked, 0).setBlockName("brick_concrete_cracked_stairs").setCreativeTab(MainRegistry.blockTab); - brick_concrete_broken_stairs = new BlockGenericStairs(brick_concrete_broken, 0).setBlockName("brick_concrete_broken_stairs").setCreativeTab(MainRegistry.blockTab); - brick_ducrete_stairs = new BlockGenericStairs(brick_ducrete, 0).setBlockName("brick_ducrete_stairs").setCreativeTab(MainRegistry.blockTab); - reinforced_stone_stairs = new BlockGenericStairs(reinforced_stone, 0).setBlockName("reinforced_stone_stairs").setCreativeTab(MainRegistry.blockTab); - reinforced_brick_stairs = new BlockGenericStairs(reinforced_brick, 0).setBlockName("reinforced_brick_stairs").setCreativeTab(MainRegistry.blockTab); - brick_obsidian_stairs = new BlockGenericStairs(brick_obsidian, 0).setBlockName("brick_obsidian_stairs").setCreativeTab(MainRegistry.blockTab); - brick_light_stairs = new BlockGenericStairs(brick_light, 0).setBlockName("brick_light_stairs").setCreativeTab(MainRegistry.blockTab); - brick_compound_stairs = new BlockGenericStairs(brick_compound, 0).setBlockName("brick_compound_stairs").setCreativeTab(MainRegistry.blockTab); - brick_asbestos_stairs = new BlockGenericStairs(brick_asbestos, 0).setBlockName("brick_asbestos_stairs").setCreativeTab(MainRegistry.blockTab); - brick_fire_stairs = new BlockGenericStairs(brick_fire, 0).setBlockName("brick_fire_stairs").setCreativeTab(MainRegistry.blockTab); - asphalt_stairs = new BlockSpeedyStairs(asphalt, 0, 1.5).setBlockName("asphalt_stairs").setCreativeTab(MainRegistry.blockTab); - - vinyl_tile = new BlockEnumMulti(Material.rock, TileType.class, true, true).setBlockName("vinyl_tile").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(10.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":vinyl_tile"); - - tile_lab = new BlockOutgas(Material.rock, false, 5, true).setBlockName("tile_lab").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":tile_lab"); - tile_lab_cracked = new BlockOutgas(Material.rock, false, 5, true).setBlockName("tile_lab_cracked").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":tile_lab_cracked"); - tile_lab_broken = new BlockOutgas(Material.rock, true, 5, true).setBlockName("tile_lab_broken").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":tile_lab_broken"); - - block_meteor = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor"); - block_meteor_cobble = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor_cobble").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_cobble"); - block_meteor_broken = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor_broken").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_crushed"); - block_meteor_molten = new BlockOre(Material.rock, true).noFortune().setBlockName("block_meteor_molten").setLightLevel(0.75F).setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_cobble_molten"); - block_meteor_treasure = new BlockMeteoriteTreasure(Material.rock).setBlockName("block_meteor_treasure").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_treasure"); - meteor_polished = new BlockGeneric(Material.rock).setBlockName("meteor_polished").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_polished"); - meteor_brick = new BlockGeneric(Material.rock).setBlockName("meteor_brick").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_brick"); - meteor_brick_mossy = new BlockGeneric(Material.rock).setBlockName("meteor_brick_mossy").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_brick_mossy"); - meteor_brick_cracked = new BlockGeneric(Material.rock).setBlockName("meteor_brick_cracked").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_brick_cracked"); - meteor_brick_chiseled = new BlockGeneric(Material.rock).setBlockName("meteor_brick_chiseled").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_brick_chiseled"); - meteor_pillar = new BlockRotatablePillar(Material.rock, RefStrings.MODID + ":meteor_pillar_top").setBlockName("meteor_pillar").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_pillar"); - meteor_spawner = new BlockCybercrab(Material.rock).setBlockName("meteor_spawner").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F); - meteor_battery = new BlockPillar(Material.rock, RefStrings.MODID + ":meteor_power").setBlockName("meteor_battery").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_spawner_side"); - moon_turf = new BlockFalling(Material.sand).setBlockName("moon_turf").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":moon_turf"); - - brick_jungle = new BlockGeneric(Material.rock).setBlockName("brick_jungle").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle"); - brick_jungle_cracked = new BlockGeneric(Material.rock).setBlockName("brick_jungle_cracked").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_cracked"); - brick_jungle_fragile = new FragileBrick(Material.rock).setBlockName("brick_jungle_fragile").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_fragile"); - brick_jungle_lava = new BlockGeneric(Material.rock).setBlockName("brick_jungle_lava").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setLightLevel(5F/15F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_lava"); - brick_jungle_ooze = new BlockOre(Material.rock).setBlockName("brick_jungle_ooze").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setLightLevel(5F/15F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_ooze"); - brick_jungle_mystic = new BlockOre(Material.rock).setBlockName("brick_jungle_mystic").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setLightLevel(5F/15F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_mystic"); - brick_jungle_trap = new TrappedBrick(Material.rock).setBlockName("brick_jungle_trap").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_trap"); - brick_jungle_glyph = new BlockGlyph(Material.rock).setBlockName("brick_jungle_glyph").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F); - brick_jungle_circle = new BlockBallsSpawner(Material.rock).setBlockName("brick_jungle_circle").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_circle"); - - brick_forgotten = new BlockGeneric(Material.rock).setBlockName("brick_forgotten").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(1000000).setBlockTextureName(RefStrings.MODID + ":brick_forgotten"); - brick_red = new BlockRedBrick(Material.rock).setBlockName("brick_red").setResistance(10_000); - - deco_computer = new BlockDecoModel(Material.iron, DecoComputerEnum.class, true, false).setBlockBoundsTo(.160749F, 0F, 0F, .839251F, .867849F, .622184F).setBlockName("deco_computer").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_computer"); - deco_crt = new BlockDecoCRT(Material.iron).setBlockName("deco_crt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); - deco_toaster = new BlockDecoToaster(Material.iron).setBlockName("deco_toaster").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); - filing_cabinet = new BlockDecoContainer(Material.iron, DecoCabinetEnum.class, true, false, TileEntityFileCabinet.class).setBlockBoundsTo(.1875F, 0F, 0F, .8125F, 1F, .75F).setBlockName("filing_cabinet").setCreativeTab(MainRegistry.blockTab).setHardness(10.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); - - tape_recorder = new DecoTapeRecorder(Material.iron).setBlockName("tape_recorder").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":deco_tape_recorder"); - steel_poles = new DecoSteelPoles(Material.iron).setBlockName("steel_poles").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":steel_beam"); - pole_top = new DecoPoleTop(Material.iron).setBlockName("pole_top").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":deco_pole_top"); - pole_satellite_receiver = new DecoPoleSatelliteReceiver(Material.iron).setBlockName("pole_satellite_receiver").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":deco_satellite_receiver"); - steel_wall = new DecoBlock(Material.iron).setBlockName("steel_wall").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":steel_wall"); - steel_corner = new DecoBlock(Material.iron).setBlockName("steel_corner").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":steel_corner"); - steel_roof = new DecoBlock(Material.iron).setBlockName("steel_roof").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":steel_roof"); - steel_beam = new DecoBlock(Material.iron).setBlockName("steel_beam").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":steel_beam"); - steel_scaffold = new BlockScaffold().setBlockName("steel_scaffold").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":deco_steel_orig"); - steel_grate = new BlockGrate(Material.iron).setBlockName("steel_grate").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F); - steel_grate_wide = new BlockGrate(Material.iron).setBlockName("steel_grate_wide").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F); - - deco_pipe = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 0).setBlockName("deco_pipe").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); - deco_pipe_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 0).setBlockName("deco_pipe_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); - deco_pipe_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 0).setBlockName("deco_pipe_green").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); - deco_pipe_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 0).setBlockName("deco_pipe_green_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); - deco_pipe_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 0).setBlockName("deco_pipe_red").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); - deco_pipe_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 0).setBlockName("deco_pipe_marked").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); - deco_pipe_rim = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 1).setBlockName("deco_pipe_rim").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); - deco_pipe_rim_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 1).setBlockName("deco_pipe_rim_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); - deco_pipe_rim_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 1).setBlockName("deco_pipe_rim_green").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); - deco_pipe_rim_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 1).setBlockName("deco_pipe_rim_green_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); - deco_pipe_rim_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 1).setBlockName("deco_pipe_rim_red").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); - deco_pipe_rim_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 1).setBlockName("deco_pipe_rim_marked").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); - deco_pipe_framed = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 3).setBlockName("deco_pipe_framed").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); - deco_pipe_framed_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 3).setBlockName("deco_pipe_framed_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); - deco_pipe_framed_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 3).setBlockName("deco_pipe_framed_green").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); - deco_pipe_framed_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 3).setBlockName("deco_pipe_framed_green_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); - deco_pipe_framed_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 3).setBlockName("deco_pipe_framed_red").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); - deco_pipe_framed_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 3).setBlockName("deco_pipe_framed_marked").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); - deco_pipe_quad = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 2).setBlockName("deco_pipe_quad").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); - deco_pipe_quad_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 2).setBlockName("deco_pipe_quad_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); - deco_pipe_quad_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 2).setBlockName("deco_pipe_quad_green").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); - deco_pipe_quad_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 2).setBlockName("deco_pipe_quad_green_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); - deco_pipe_quad_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 2).setBlockName("deco_pipe_quad_red").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); - deco_pipe_quad_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 2).setBlockName("deco_pipe_quad_marked").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); - - broadcaster_pc = new PinkCloudBroadcaster(Material.iron).setBlockName("broadcaster_pc").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":broadcaster_pc"); - geiger = new GeigerCounter(Material.iron).setBlockName("geiger").setCreativeTab(MainRegistry.machineTab).setHardness(15.0F).setResistance(0.25F).setBlockTextureName(RefStrings.MODID + ":geiger"); - hev_battery = new HEVBattery(Material.iron).setBlockName("hev_battery").setCreativeTab(MainRegistry.machineTab).setLightLevel(10F/15F).setHardness(0.5F).setResistance(0.25F).setBlockTextureName(RefStrings.MODID + ":hev_battery"); - - fence_metal = new BlockMetalFence(Material.iron).setBlockName("fence_metal").setCreativeTab(MainRegistry.machineTab).setHardness(15.0F).setResistance(0.25F).setBlockTextureName(RefStrings.MODID + ":fence_metal"); - - ash_digamma = new BlockAshes(Material.sand).setBlockName("ash_digamma").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setResistance(150.0F).setBlockTextureName(RefStrings.MODID + ":ash_digamma"); - sand_boron = new BlockFalling(Material.sand).setBlockName("sand_boron").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_boron"); - sand_lead = new BlockFalling(Material.sand).setBlockName("sand_lead").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_lead"); - sand_uranium = new BlockFalling(Material.sand).setBlockName("sand_uranium").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_uranium"); - sand_polonium = new BlockFalling(Material.sand).setBlockName("sand_polonium").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_polonium"); - sand_quartz = new BlockFalling(Material.sand).setBlockName("sand_quartz").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_quartz"); - glass_boron = new BlockNTMGlassCT(0, RefStrings.MODID + ":glass_boron", Material.glass).setBlockName("glass_boron").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.machineTab).setHardness(0.3F); - glass_lead = new BlockNTMGlassCT(0, RefStrings.MODID + ":glass_lead", Material.glass).setBlockName("glass_lead").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.machineTab).setHardness(0.3F); - glass_uranium = new BlockNTMGlassCT(1, RefStrings.MODID + ":glass_uranium", Material.glass).setBlockName("glass_uranium").setLightLevel(5F/15F).setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.machineTab).setHardness(0.3F); - glass_trinitite = new BlockNTMGlassCT(1, RefStrings.MODID + ":glass_trinitite", Material.glass).setBlockName("glass_trinitite").setLightLevel(5F/15F).setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.machineTab).setHardness(0.3F); - glass_polonium = new BlockNTMGlassCT(1, RefStrings.MODID + ":glass_polonium", Material.glass).setBlockName("glass_polonium").setLightLevel(5F/15F).setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.machineTab).setHardness(0.3F); - glass_ash = new BlockNTMGlassCT(1, RefStrings.MODID + ":glass_ash", Material.glass).setBlockName("glass_ash").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.machineTab).setHardness(3F); - glass_quartz = new BlockNTMGlassCT(0, RefStrings.MODID + ":glass_quartz", Material.packedIce, true).setBlockName("glass_quartz").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGlass).setHardness(1.0F).setResistance(40.0F).setBlockTextureName(RefStrings.MODID + "glass_quartz"); - - mush = new BlockMush(Material.plants).setBlockName("mush").setCreativeTab(MainRegistry.blockTab).setLightLevel(0.5F).setStepSound(Block.soundTypeGrass).setBlockTextureName(RefStrings.MODID + ":mush"); - mush_block = new BlockMushHuge(Material.plants).setBlockName("mush_block").setLightLevel(1.0F).setStepSound(Block.soundTypeGrass).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":mush_block_skin"); - mush_block_stem = new BlockMushHuge(Material.plants).setBlockName("mush_block_stem").setLightLevel(1.0F).setStepSound(Block.soundTypeGrass).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":mush_block_stem"); - glyphid_base = new BlockGlyphid(Material.coral).setBlockName("glyphid_base").setStepSound(Block.soundTypeCloth).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_base"); - glyphid_spawner = new BlockGlyphidSpawner(Material.coral).setBlockName("glyphid_spawner").setStepSound(Block.soundTypeCloth).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_eggs_alt"); - - plant_flower = new BlockNTMFlower().setBlockName("plant_flower").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); - plant_tall = new BlockTallPlant().setBlockName("plant_tall").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); - plant_dead = new BlockDeadPlant().setBlockName("plant_dead").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); - reeds = new BlockReeds().setBlockName("plant_reeds").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); - - waste_earth = new WasteEarth(Material.ground, true).setBlockName("waste_earth").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.blockTab).setHardness(0.6F).setBlockTextureName(RefStrings.MODID + ":waste_earth"); - waste_mycelium = new WasteEarth(Material.ground, true).setBlockName("waste_mycelium").setStepSound(Block.soundTypeGrass).setLightLevel(1F).setCreativeTab(MainRegistry.blockTab).setHardness(0.6F).setBlockTextureName(RefStrings.MODID + ":waste_mycelium_side"); - waste_trinitite = new BlockOre(Material.sand).noFortune().setBlockName("waste_trinitite").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":waste_trinitite"); - waste_trinitite_red = new BlockOre(Material.sand).noFortune().setBlockName("waste_trinitite_red").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":waste_trinitite_red"); - waste_log = new WasteLog(Material.wood).setBlockName("waste_log").setStepSound(Block.soundTypeWood).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(2.5F); - waste_leaves = new WasteLeaves(Material.leaves).setBlockName("waste_leaves").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.blockTab).setHardness(0.1F).setBlockTextureName(RefStrings.MODID + ":waste_leaves"); - waste_planks = new BlockOre(Material.wood).setBlockName("waste_planks").setStepSound(Block.soundTypeWood).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":waste_planks"); - frozen_dirt = new BlockOre(Material.ground).setBlockName("frozen_dirt").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":frozen_dirt"); - frozen_grass = new WasteEarth(Material.ground, false).setBlockName("frozen_grass").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F); - frozen_log = new WasteLog(Material.wood).setBlockName("frozen_log").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F); - frozen_planks = new BlockOre(Material.wood).setBlockName("frozen_planks").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":frozen_planks"); - fallout = new BlockFallout(Material.sand).setBlockName("fallout").setStepSound(Block.soundTypeGravel).setCreativeTab(MainRegistry.blockTab).setHardness(0.1F).setLightOpacity(0).setBlockTextureName(RefStrings.MODID + ":ash"); - foam_layer = new BlockLayering(Material.snow).setBlockName("foam_layer").setStepSound(Block.soundTypeSnow).setCreativeTab(MainRegistry.blockTab).setHardness(0.1F).setLightOpacity(0).setBlockTextureName(RefStrings.MODID + ":foam"); - sand_boron_layer = new BlockLayering(Material.sand).setBlockName("sand_boron_layer").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.1F).setLightOpacity(0).setBlockTextureName(RefStrings.MODID + ":sand_boron"); - leaves_layer = new BlockLayering(Material.leaves).setBlockName("leaves_layer").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.blockTab).setHardness(0.1F).setLightOpacity(0).setBlockTextureName(RefStrings.MODID + ":waste_leaves"); - oil_spill = new BlockLayering(Material.ground).setBlockName("oil_spill").setStepSound(Block.soundTypeSnow).setCreativeTab(MainRegistry.blockTab).setHardness(0.1F).setLightOpacity(0).setBlockTextureName(RefStrings.MODID + ":oil_spill"); - - burning_earth = new WasteEarth(Material.ground, true).setBlockName("burning_earth").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.blockTab).setHardness(0.6F).setBlockTextureName(RefStrings.MODID + ":burning_earth"); - tektite = new BlockGeneric(Material.sand).setBlockName("tektite").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":tektite"); - ore_tektite_osmiridium = new BlockGeneric(Material.sand).setBlockName("ore_tektite_osmiridium").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":ore_tektite_osmiridium"); - impact_dirt = new BlockDirt(Material.ground, true).setBlockName("impact_dirt").setStepSound(Block.soundTypeGravel).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":waste_earth_bottom"); - dirt_dead = new BlockFalling(Material.ground).setBlockName("dirt_dead").setStepSound(Block.soundTypeGravel).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":dirt_dead"); - dirt_oily = new BlockFalling(Material.ground).setBlockName("dirt_oily").setStepSound(Block.soundTypeGravel).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":dirt_oily"); - sand_dirty = new BlockFalling(Material.sand).setBlockName("sand_dirty").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_dirty"); - sand_dirty_red = new BlockFalling(Material.sand).setBlockName("sand_dirty_red").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_dirty_red"); - stone_cracked = new BlockFalling(Material.rock).setBlockName("stone_cracked").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":stone_cracked"); - - sellafield_slaked = new BlockSellafieldSlaked(Material.rock).setBlockName("sellafield_slaked").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_slaked"); - sellafield_bedrock = new BlockSellafieldSlaked(Material.rock).setBlockName("sellafield_bedrock").setBlockUnbreakable().setResistance(6000000.0F).setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":sellafield_slaked"); - sellafield = new BlockSellafield(Material.rock).setBlockName("sellafield").setStepSound(Block.soundTypeStone).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_0"); - ore_sellafield_diamond = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_diamond").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_diamond"); - ore_sellafield_emerald = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_emerald").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_emerald"); - ore_sellafield_uranium_scorched = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_uranium_scorched").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_uranium_scorched"); - ore_sellafield_schrabidium = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_schrabidium").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_schrabidium"); - ore_sellafield_radgem = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_radgem").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_radgem"); - - geysir_water = new BlockGeysir(Material.rock).setBlockName("geysir_water").setStepSound(Block.soundTypeStone).setHardness(5.0F); - geysir_chlorine = new BlockGeysir(Material.rock).setBlockName("geysir_chlorine").setStepSound(Block.soundTypeStone).setHardness(5.0F); - geysir_vapor = new BlockGeysir(Material.rock).setBlockName("geysir_vapor").setStepSound(Block.soundTypeStone).setHardness(5.0F); - geysir_nether = new BlockGeysir(Material.rock).setBlockName("geysir_nether").setLightLevel(1.0F).setStepSound(Block.soundTypeStone).setHardness(2.0F); - - nuke_gadget = new NukeGadget(Material.iron).setBlockName("nuke_gadget").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":theGadget"); - nuke_boy = new NukeBoy(Material.iron).setBlockName("nuke_boy").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":lilBoy"); - nuke_man = new NukeMan(Material.iron).setBlockName("nuke_man").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":fatMan"); - nuke_mike = new NukeMike(Material.iron).setBlockName("nuke_mike").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":ivyMike"); - nuke_tsar = new NukeTsar(Material.iron).setBlockName("nuke_tsar").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":tsarBomba"); - nuke_fleija = new NukeFleija(Material.iron).setBlockName("nuke_fleija").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":fleija"); - nuke_prototype = new NukePrototype(Material.iron).setBlockName("nuke_prototype").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200).setBlockTextureName(RefStrings.MODID + ":prototype"); - nuke_custom = new NukeCustom(Material.iron).setBlockName("nuke_custom").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":custom"); - nuke_solinium = new NukeSolinium(Material.iron).setBlockName("nuke_solinium").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":nuke_solinium"); - nuke_n2 = new NukeN2(Material.iron).setBlockName("nuke_n2").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":nuke_n2"); - nuke_fstbmb = new NukeBalefire(Material.iron).setBlockName("nuke_fstbmb").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":nuke_fstbmb"); - - bomb_multi = new BombMulti(Material.iron).setBlockName("bomb_multi").setCreativeTab(MainRegistry.nukeTab).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":bomb_multi1"); - - flame_war = new BombFlameWar(Material.iron).setBlockName("flame_war").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":flame_war"); - float_bomb = new BombFloat(Material.iron).setBlockName("float_bomb").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F); - therm_endo = new BombThermo(Material.iron).setBlockName("therm_endo").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F); - therm_exo = new BombThermo(Material.iron).setBlockName("therm_exo").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F); - emp_bomb = new BombFloat(Material.iron).setBlockName("emp_bomb").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F); - det_cord = new DetCord(Material.iron).setBlockName("det_cord").setCreativeTab(MainRegistry.nukeTab).setHardness(0.1F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":det_cord"); - det_charge = new ExplosiveCharge(Material.iron).setBlockName("det_charge").setCreativeTab(MainRegistry.nukeTab).setHardness(0.1F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":det_charge"); - det_nuke = new ExplosiveCharge(Material.iron).setBlockName("det_nuke").setCreativeTab(MainRegistry.nukeTab).setHardness(0.1F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":det_nuke"); - det_miner = new DetMiner(Material.iron, RefStrings.MODID + ":det_miner_top").setBlockName("det_miner").setCreativeTab(MainRegistry.nukeTab).setHardness(0.1F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":det_miner_side"); - red_barrel = new RedBarrel(Material.iron, true).setBlockName("red_barrel").setCreativeTab(MainRegistry.nukeTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":barrel_red"); - pink_barrel = new RedBarrel(Material.iron, true).setBlockName("pink_barrel").setCreativeTab(MainRegistry.nukeTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":barrel_pink"); - yellow_barrel = new YellowBarrel(Material.iron).setBlockName("yellow_barrel").setCreativeTab(MainRegistry.nukeTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":barrel_yellow"); - vitrified_barrel = new YellowBarrel(Material.iron).setBlockName("vitrified_barrel").setCreativeTab(MainRegistry.nukeTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":barrel_vitrified"); - lox_barrel = new RedBarrel(Material.iron, false).setBlockName("lox_barrel").setCreativeTab(MainRegistry.nukeTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":barrel_lox"); - taint_barrel = new RedBarrel(Material.iron, false).setBlockName("taint_barrel").setCreativeTab(MainRegistry.nukeTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":barrel_taint"); - crashed_balefire = new BlockCrashedBomb(Material.iron).setBlockName("crashed_bomb").setCreativeTab(MainRegistry.nukeTab).setBlockUnbreakable().setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":crashed_balefire"); - fireworks = new BlockFireworks(Material.iron).setBlockName("fireworks").setCreativeTab(MainRegistry.nukeTab).setResistance(5.0F); - charge_dynamite = new BlockChargeDynamite().setBlockName("charge_dynamite").setCreativeTab(MainRegistry.nukeTab).setResistance(1.0F); - charge_miner = new BlockChargeMiner().setBlockName("charge_miner").setCreativeTab(MainRegistry.nukeTab).setResistance(1.0F); - charge_c4 = new BlockChargeC4().setBlockName("charge_c4").setCreativeTab(MainRegistry.nukeTab).setResistance(1.0F); - charge_semtex = new BlockChargeSemtex().setBlockName("charge_semtex").setCreativeTab(MainRegistry.nukeTab).setResistance(1.0F); - mine_ap = new Landmine(Material.iron, 1.5D, 1D).setBlockName("mine_ap").setCreativeTab(MainRegistry.nukeTab).setHardness(1.0F).setBlockTextureName(RefStrings.MODID + ":mine_ap"); - mine_he = new Landmine(Material.iron, 2D, 5D).setBlockName("mine_he").setCreativeTab(MainRegistry.nukeTab).setHardness(1.0F).setBlockTextureName(RefStrings.MODID + ":mine_he"); - mine_shrap = new Landmine(Material.iron, 1.5D, 1D).setBlockName("mine_shrap").setCreativeTab(MainRegistry.nukeTab).setHardness(1.0F).setBlockTextureName(RefStrings.MODID + ":mine_shrap"); - mine_fat = new Landmine(Material.iron, 2.5D, 1D).setBlockName("mine_fat").setCreativeTab(MainRegistry.nukeTab).setHardness(1.0F).setBlockTextureName(RefStrings.MODID + ":mine_fat"); - dynamite = new BlockDynamite().setBlockName("dynamite").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":dynamite"); - tnt = new BlockTNT().setBlockName("tnt_ntm").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":tnt"); - semtex = new BlockSemtex().setBlockName("semtex").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":semtex"); - c4 = new BlockC4().setBlockName("c4").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":c4"); - fissure_bomb = new BlockFissureBomb().setBlockName("fissure_bomb").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":fissure_bomb"); - - pump_steam = new MachinePump().setBlockName("pump_steam").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_copper"); - pump_electric = new MachinePump().setBlockName("pump_electric").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - - heater_firebox = new HeaterFirebox().setBlockName("heater_firebox").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - heater_oven = new HeaterOven().setBlockName("heater_oven").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); - 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"); - furnace_combination = new FurnaceCombination().setBlockName("furnace_combination").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_light_alt"); - machine_stirling = new MachineStirling().setBlockName("machine_stirling").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_stirling_steel = new MachineStirling().setBlockName("machine_stirling_steel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_stirling_creative = new MachineStirling().setBlockName("machine_stirling_creative").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_sawmill = new MachineSawmill().setBlockName("machine_sawmill").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_strand_caster = new MachineStrandCaster().setBlockName("machine_strand_caster").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); - machine_crucible = new MachineCrucible().setBlockName("machine_crucible").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); - machine_boiler = new MachineHeatBoiler().setBlockName("machine_boiler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_copper"); - machine_industrial_boiler = new MachineHeatBoilerIndustrial().setBlockName("machine_industrial_boiler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - - foundry_mold = new FoundryMold().setBlockName("foundry_mold").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); - foundry_basin = new FoundryBasin().setBlockName("foundry_basin").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); - foundry_channel = new FoundryChannel().setBlockName("foundry_channel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); - foundry_tank = new FoundryTank().setBlockName("foundry_tank").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); - foundry_outlet = new FoundryOutlet().setBlockName("foundry_outlet").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); - foundry_slagtap = new FoundrySlagtap().setBlockName("foundry_slagtap").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); - slag = new BlockDynamicSlag().setBlockName("slag").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":slag"); - - machine_difurnace_off = new MachineDiFurnace(false).setBlockName("machine_difurnace_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_difurnace_on = new MachineDiFurnace(true).setBlockName("machine_difurnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); - machine_difurnace_extension = new MachineDiFurnaceExtension().setBlockName("machine_difurnace_extension").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_difurnace_rtg_off = new MachineDiFurnaceRTG(false).setBlockName("machine_difurnace_rtg_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_difurnace_rtg_on = new MachineDiFurnaceRTG(true).setBlockName("machine_difurnace_rtg_on").setHardness(5.0F).setResistance(10.0F).setLightLevel(2.0F).setCreativeTab(null); - - machine_centrifuge = new MachineCentrifuge(Material.iron).setBlockName("machine_centrifuge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_gascent = new MachineGasCent(Material.iron).setBlockName("machine_gascent").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_fel = new MachineFEL(Material.iron).setBlockName("machine_fel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_silex = new MachineSILEX(Material.iron).setBlockName("machine_silex").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_crystallizer = new MachineCrystallizer(Material.iron).setBlockName("machine_crystallizer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_crystallizer"); - - machine_uf6_tank = new MachineUF6Tank(Material.iron).setBlockName("machine_uf6_tank").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - - machine_puf6_tank = new MachinePuF6Tank(Material.iron).setBlockName("machine_puf6_tank").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - - machine_reactor_breeding = new MachineReactorBreeding(Material.iron).setBlockName("machine_reactor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_reactor"); - - machine_furnace_brick_off = new MachineBrickFurnace(false).setBlockName("machine_furnace_brick_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_furnace_brick_on = new MachineBrickFurnace(true).setBlockName("machine_furnace_brick_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); - machine_nuke_furnace_off = new MachineNukeFurnace(false).setBlockName("machine_nuke_furnace_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_nuke_furnace_on = new MachineNukeFurnace(true).setBlockName("machine_nuke_furnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); - machine_rtg_furnace_off = new MachineRtgFurnace(false).setBlockName("machine_rtg_furnace_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_rtg_furnace_on = new MachineRtgFurnace(true).setBlockName("machine_rtg_furnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); - - machine_industrial_generator = new MachineIGenerator(Material.iron).setBlockName("machine_industrial_generator").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName("gold_block"); - machine_cyclotron = new MachineCyclotron(Material.iron).setBlockName("machine_cyclotron").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":cyclotron"); - machine_exposure_chamber = new MachineExposureChamber(Material.iron).setBlockName("machine_exposure_chamber").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_aluminium"); - machine_radgen = new MachineRadGen(Material.iron).setBlockName("machine_radgen").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_radgen"); - - hadron_plating = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating"); - hadron_plating_blue = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating_blue").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating_blue"); - hadron_plating_black = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating_black").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating_black"); - hadron_plating_yellow = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating_yellow").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating_yellow"); - hadron_plating_striped = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating_striped").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating_striped"); - hadron_plating_voltz = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating_voltz").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating_voltz"); - hadron_plating_glass = new BlockNTMGlass(0, RefStrings.MODID + ":hadron_plating_glass", Material.iron, true).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating_glass").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating_glass"); - hadron_coil_alloy = new BlockHadronCoil(Material.iron, 10).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_alloy").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_alloy"); - hadron_coil_gold = new BlockHadronCoil(Material.iron, 25).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_gold").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_gold"); - hadron_coil_neodymium = new BlockHadronCoil(Material.iron, 50).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_neodymium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_neodymium"); - hadron_coil_magtung = new BlockHadronCoil(Material.iron, 100).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_magtung").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_magtung"); - hadron_coil_schrabidium = new BlockHadronCoil(Material.iron, 250).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_schrabidium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_schrabidium"); - hadron_coil_schrabidate = new BlockHadronCoil(Material.iron, 500).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_schrabidate").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_schrabidate"); - hadron_coil_starmetal = new BlockHadronCoil(Material.iron, 1000).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_starmetal").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_starmetal"); - hadron_coil_chlorophyte = new BlockHadronCoil(Material.iron, 2500).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_chlorophyte").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_chlorophyte"); - hadron_coil_mese = new BlockHadronCoil(Material.iron, 10000).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_mese").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_mese"); - hadron_power = new BlockHadronPower(Material.iron, 1000000L).setStepSound(Block.soundTypeMetal).setBlockName("hadron_power").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_power"); - hadron_power_10m = new BlockHadronPower(Material.iron, 10000000L).setStepSound(Block.soundTypeMetal).setBlockName("hadron_power_10m").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_power"); - hadron_power_100m = new BlockHadronPower(Material.iron, 100000000L).setStepSound(Block.soundTypeMetal).setBlockName("hadron_power_100m").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_power"); - hadron_power_1g = new BlockHadronPower(Material.iron, 1000000000L).setStepSound(Block.soundTypeMetal).setBlockName("hadron_power_1g").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_power"); - hadron_power_10g = new BlockHadronPower(Material.iron, 10000000000L).setStepSound(Block.soundTypeMetal).setBlockName("hadron_power_10g").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_power"); - hadron_diode = new BlockHadronDiode(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_diode").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - hadron_analysis = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_analysis").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_analysis"); - hadron_analysis_glass = new BlockNTMGlass(0, RefStrings.MODID + ":hadron_analysis_glass", Material.iron, true).setStepSound(Block.soundTypeMetal).setBlockName("hadron_analysis_glass").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_analysis_glass"); - hadron_access = new BlockHadronAccess(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_access").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_access"); - hadron_core = new BlockHadronCore(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_core"); - hadron_cooler = new BlockHadronCooler(Material.iron).setBlockName("hadron_cooler").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); - - machine_electric_furnace_off = new MachineElectricFurnace(false).setBlockName("machine_electric_furnace_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_electric_furnace_on = new MachineElectricFurnace(true).setBlockName("machine_electric_furnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); - machine_arc_furnace_off = new MachineArcFurnace(false).setBlockName("machine_arc_furnace_off").setHardness(5.0F).setResistance(10.0F); - machine_arc_furnace_on = new MachineArcFurnace(true).setBlockName("machine_arc_furnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); - machine_arc_furnace = new MachineArcFurnaceLarge().setBlockName("machine_arc_furnace").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_microwave = new MachineMicrowave(Material.iron).setBlockName("machine_microwave").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_microwave"); - - machine_battery_potato = new MachineBattery(Material.iron, 10_000).setBlockName("machine_battery_potato").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_battery = new MachineBattery(Material.iron, 1_000_000).setBlockName("machine_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_lithium_battery = new MachineBattery(Material.iron, 50_000_000).setBlockName("machine_lithium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_schrabidium_battery = new MachineBattery(Material.iron, 25_000_000_000L).setBlockName("machine_schrabidium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_dineutronium_battery = new MachineBattery(Material.iron, 1_000_000_000_000L).setBlockName("machine_dineutronium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_fensu = new MachineFENSU(Material.iron).setBlockName("machine_fensu").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_fensu"); - - capacitor_bus = new MachineCapacitorBus(Material.iron).setBlockName("capacitor_bus").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - capacitor_copper = new MachineCapacitor(Material.iron, 1_000_000L, "copper").setBlockName("capacitor_copper").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_copper"); - capacitor_gold = new MachineCapacitor(Material.iron, 5_000_000L, "gold").setBlockName("capacitor_gold").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName("gold_block"); - capacitor_niobium = new MachineCapacitor(Material.iron, 25_000_000L, "niobium").setBlockName("capacitor_niobium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_niobium"); - capacitor_tantalium = new MachineCapacitor(Material.iron, 150_000_000L, "tantalium").setBlockName("capacitor_tantalium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_tantalium"); - capacitor_schrabidate = new MachineCapacitor(Material.iron, 50_000_000_000L, "schrabidate").setBlockName("capacitor_schrabidate").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_schrabidate"); - - machine_wood_burner = new MachineWoodBurner(Material.iron).setBlockName("machine_wood_burner").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_diesel = new MachineDiesel().setBlockName("machine_diesel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_combustion_engine = new MachineCombustionEngine().setBlockName("machine_combustion_engine").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - - machine_shredder = new MachineShredder(Material.iron).setBlockName("machine_shredder").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - - machine_teleporter = new MachineTeleporter(Material.iron).setBlockName("machine_teleporter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - teleanchor = new MachineTeleanchor().setBlockName("teleanchor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - field_disturber = new MachineFieldDisturber().setBlockName("field_disturber").setHardness(5.0F).setResistance(200.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":field_disturber"); - - machine_rtg_grey = new MachineRTG(Material.iron).setBlockName("machine_rtg_grey").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtg"); - machine_amgen = new MachineAmgen(Material.iron).setBlockName("machine_amgen").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_geo = new MachineAmgen(Material.iron).setBlockName("machine_geo").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_minirtg = new MachineMiniRTG(Material.iron).setBlockName("machine_minirtg").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtg_cell"); - machine_powerrtg = new MachineMiniRTG(Material.iron).setBlockName("machine_powerrtg").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtg_polonium"); - machine_radiolysis = new MachineRadiolysis(Material.iron).setBlockName("machine_radiolysis").setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); - machine_hephaestus = new MachineHephaestus(Material.iron).setBlockName("machine_hephaestus").setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); - - red_wire_coated = new WireCoated(Material.iron).setBlockName("red_wire_coated").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_wire_coated"); - red_cable = new BlockCable(Material.iron).setBlockName("red_cable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":cable_neo"); - red_cable_classic = new BlockCable(Material.iron).setBlockName("red_cable_classic").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_cable_classic"); - red_cable_paintable = new BlockCablePaintable().setBlockName("red_cable_paintable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - red_cable_gauge = new BlockCableGauge().setBlockName("red_cable_gauge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - red_connector = new ConnectorRedWire(Material.iron).setBlockName("red_connector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_connector"); - red_pylon = new PylonRedWire(Material.iron).setBlockName("red_pylon").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); - red_pylon_medium_wood = new PylonMedium(Material.wood).setBlockName("red_pylon_medium_wood").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); - red_pylon_medium_wood_transformer = new PylonMedium(Material.wood).setBlockName("red_pylon_medium_wood_transformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); - red_pylon_medium_steel = new PylonMedium(Material.iron).setBlockName("red_pylon_medium_steel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); - red_pylon_medium_steel_transformer = new PylonMedium(Material.iron).setBlockName("red_pylon_medium_steel_transformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); - red_pylon_large = new PylonLarge(Material.iron).setBlockName("red_pylon_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon_large"); - substation = new Substation(Material.iron).setBlockName("substation").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":substation"); - cable_switch = new CableSwitch(Material.iron).setBlockName("cable_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - cable_detector = new CableDetector(Material.iron).setBlockName("cable_detector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - cable_diode = new CableDiode(Material.iron).setBlockName("cable_diode").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":cable_diode"); - machine_detector = new PowerDetector(Material.iron).setBlockName("machine_detector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_detector_off"); - fluid_duct_neo = new FluidDuctStandard(Material.iron).setBlockName("fluid_duct_neo").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pipe_neo"); - fluid_duct_box = new FluidDuctBox(Material.iron).setBlockName("fluid_duct_box").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_box"); - fluid_duct_exhaust = new FluidDuctBoxExhaust(Material.iron).setBlockName("fluid_duct_exhaust").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_box"); - fluid_duct_paintable = new FluidDuctPaintable().setBlockName("fluid_duct_paintable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - fluid_duct_gauge = new FluidDuctGauge().setBlockName("fluid_duct_gauge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - fluid_valve = new FluidValve(Material.iron).setBlockName("fluid_valve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - fluid_switch = new FluidSwitch(Material.iron).setBlockName("fluid_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_drain = new MachineDrain(Material.iron).setBlockName("machine_drain").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":concrete"); - radio_torch_sender = new RadioTorchSender().setBlockName("radio_torch_sender").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - radio_torch_receiver = new RadioTorchReceiver().setBlockName("radio_torch_receiver").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - radio_torch_counter = new RadioTorchCounter().setBlockName("radio_torch_counter").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtty_counter"); - radio_torch_logic = new RadioTorchLogic().setBlockName("radio_torch_logic").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - radio_telex = new RadioTelex().setBlockName("radio_telex").setHardness(3F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":radio_telex"); - - conveyor = new BlockConveyor().setBlockName("conveyor").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor"); - conveyor_express = new BlockConveyorExpress().setBlockName("conveyor_express").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor_express"); - //conveyor_classic = new BlockConveyorClassic().setBlockName("conveyor_classic").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor"); - conveyor_double = new BlockConveyorDouble().setBlockName("conveyor_double").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor_double"); - conveyor_triple = new BlockConveyorTriple().setBlockName("conveyor_triple").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor_triple"); - conveyor_chute = new BlockConveyorChute().setBlockName("conveyor_chute").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor"); - conveyor_lift = new BlockConveyorLift().setBlockName("conveyor_lift").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor"); - crane_extractor = new CraneExtractor().setBlockName("crane_extractor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - crane_inserter = new CraneInserter().setBlockName("crane_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - crane_grabber = new CraneGrabber().setBlockName("crane_grabber").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - crane_router = new CraneRouter().setBlockName("crane_router").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - crane_boxer = new CraneBoxer().setBlockName("crane_boxer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - crane_unboxer = new CraneUnboxer().setBlockName("crane_unboxer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - crane_splitter = new CraneSplitter().setBlockName("crane_splitter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":crane_side"); - crane_partitioner = new CranePartitioner().setBlockName("crane_partitioner").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":crane_partitioner_side"); - fan = new MachineFan().setBlockName("fan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - piston_inserter = new PistonInserter().setBlockName("piston_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - - drone_waypoint = new DroneWaypoint().setBlockName("drone_waypoint").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint"); - drone_crate = new DroneCrate().setBlockName("drone_crate").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - drone_waypoint_request = new DroneWaypointRequest().setBlockName("drone_waypoint_request").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint_request"); - drone_dock = new DroneDock().setBlockName("drone_dock").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_dock"); - drone_crate_provider = new DroneDock().setBlockName("drone_crate_provider").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_crate_provider"); - drone_crate_requester = new DroneDock().setBlockName("drone_crate_requester").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_crate_requester"); - - chain = new BlockChain(Material.iron).setBlockName("dungeon_chain").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":chain"); - - ladder_sturdy = new BlockNTMLadder().setBlockName("ladder_sturdy").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_sturdy"); - ladder_iron = new BlockNTMLadder().setBlockName("ladder_iron").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_iron"); - ladder_gold = new BlockNTMLadder().setBlockName("ladder_gold").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_gold"); - ladder_aluminium = new BlockNTMLadder().setBlockName("ladder_aluminium").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_aluminium"); - ladder_copper = new BlockNTMLadder().setBlockName("ladder_copper").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_copper"); - ladder_titanium = new BlockNTMLadder().setBlockName("ladder_titanium").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_titanium"); - ladder_lead = new BlockNTMLadder().setBlockName("ladder_lead").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_lead"); - ladder_cobalt = new BlockNTMLadder().setBlockName("ladder_cobalt").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_cobalt"); - ladder_steel = new BlockNTMLadder().setBlockName("ladder_steel").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_steel"); - ladder_tungsten = new BlockNTMLadder().setBlockName("ladder_tungsten").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_tungsten"); - - barrel_plastic = new BlockFluidBarrel(Material.iron, 12000).setBlockName("barrel_plastic").setStepSound(Block.soundTypeStone).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_plastic"); - barrel_corroded = new BlockFluidBarrel(Material.iron, 6000).setBlockName("barrel_corroded").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_corroded"); - barrel_iron = new BlockFluidBarrel(Material.iron, 8000).setBlockName("barrel_iron").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_iron"); - barrel_steel = new BlockFluidBarrel(Material.iron, 16000).setBlockName("barrel_steel").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_steel"); - barrel_tcalloy = new BlockFluidBarrel(Material.iron, 24000).setBlockName("barrel_tcalloy").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_tcalloy"); - barrel_antimatter = new BlockFluidBarrel(Material.iron, 16000).setBlockName("barrel_antimatter").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_antimatter"); - - machine_transformer = new MachineTransformer(Material.iron, 10000L, 1).setBlockName("machine_transformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_transformer_iron"); - machine_transformer_dnt = new MachineTransformer(Material.iron, 1000000000000000L, 1).setBlockName("machine_transformer_dnt").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_transformer"); - machine_transformer_20 = new MachineTransformer(Material.iron, 10000L, 20).setBlockName("machine_transformer_20").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_transformer_iron"); - machine_transformer_dnt_20 = new MachineTransformer(Material.iron, 1000000000000000L, 20).setBlockName("machine_transformer_dnt_20").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_transformer"); - - machine_satlinker = new MachineSatLinker(Material.iron).setBlockName("machine_satlinker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_satlinker_side"); - machine_keyforge = new MachineKeyForge(Material.iron).setBlockName("machine_keyforge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":machine_keyforge_side"); - machine_armor_table = new BlockArmorTable(Material.iron).setBlockName("machine_armor_table").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab); - - machine_solar_boiler = new MachineSolarBoiler(Material.iron).setBlockName("machine_solar_boiler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_solar_boiler"); - solar_mirror = new SolarMirror(Material.iron).setBlockName("solar_mirror").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":solar_mirror"); - - struct_launcher = new BlockGeneric(Material.iron).setBlockName("struct_launcher").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":struct_launcher"); - struct_scaffold = new BlockGeneric(Material.iron).setBlockName("struct_scaffold").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":struct_scaffold"); - struct_launcher_core = new BlockStruct(Material.iron).setBlockName("struct_launcher_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":struct_launcher_core"); - struct_launcher_core_large = new BlockStruct(Material.iron).setBlockName("struct_launcher_core_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":struct_launcher_core_large"); - struct_soyuz_core = new BlockSoyuzStruct(Material.iron).setBlockName("struct_soyuz_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":struct_soyuz_core"); - struct_iter_core = new BlockITERStruct(Material.iron).setBlockName("struct_iter_core").setLightLevel(1F).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":struct_iter_core"); - struct_plasma_core = new BlockPlasmaStruct(Material.iron).setBlockName("struct_plasma_core").setLightLevel(1F).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":struct_plasma_core"); - struct_watz_core = new BlockWatzStruct(Material.iron).setBlockName("struct_watz_core").setLightLevel(1F).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":struct_watz_core"); - struct_icf_core = new BlockICFStruct(Material.iron).setBlockName("struct_icf_core").setLightLevel(1F).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":struct_icf_core"); - - factory_titanium_hull = new BlockGeneric(Material.iron).setBlockName("factory_titanium_hull").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":factory_titanium_hull"); - factory_titanium_furnace = new FactoryHatch(Material.iron).setBlockName("factory_titanium_furnace").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":factory_titanium_furnace"); - factory_titanium_conductor = new BlockPillar(Material.iron, RefStrings.MODID + ":factory_titanium_conductor").setBlockName("factory_titanium_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":factory_titanium_hull"); - factory_advanced_hull = new BlockGeneric(Material.iron).setBlockName("factory_advanced_hull").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":factory_advanced_hull"); - factory_advanced_furnace = new FactoryHatch(Material.iron).setBlockName("factory_advanced_furnace").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":factory_advanced_furnace"); - factory_advanced_conductor = new BlockPillar(Material.iron, RefStrings.MODID + ":factory_advanced_conductor").setBlockName("factory_advanced_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":factory_advanced_hull"); - - cm_block = new BlockCM(Material.iron, EnumCMMaterials.class, true, true).setBlockName("cm_block").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_block"); - cm_sheet = new BlockCM(Material.iron, EnumCMMaterials.class, true, true).setBlockName("cm_sheet").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_sheet"); - cm_engine = new BlockCM(Material.iron, EnumCMEngines.class, true, true).setBlockName("cm_engine").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_engine"); - cm_tank = new BlockCMGlass(Material.iron, EnumCMMaterials.class, true, true).setBlockName("cm_tank").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_tank"); - cm_circuit = new BlockCM(Material.iron, EnumCMCircuit.class, true, true).setBlockName("cm_circuit").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_circuit"); - cm_port = new BlockCMPort(Material.iron, EnumCMMaterials.class, true, true).setBlockName("cm_port").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_port"); - cm_flux = new BlockCMFlux(Material.iron, RefStrings.MODID + ":cm_flux_top").setBlockName("cm_flux").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_flux_side"); - cm_heat = new BlockCMHeat(Material.iron, RefStrings.MODID +":cm_heat_top").setBlockName("cm_heat").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_heat_side"); - custom_machine = new BlockCustomMachine().setBlockName("custom_machine").setCreativeTab(MainRegistry.machineTab).setLightLevel(1F).setHardness(5.0F).setResistance(10.0F); - cm_anchor = new BlockCMAnchor().setBlockName("custom_machine_anchor").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F); - - pwr_fuel = new BlockPillarPWR(Material.iron, RefStrings.MODID + ":pwr_fuel_top").setBlockName("pwr_fuel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_fuel_side"); - pwr_control = new BlockPillarPWR(Material.iron, RefStrings.MODID + ":pwr_control_top").setBlockName("pwr_control").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_control_side"); - pwr_channel = new BlockPillarPWR(Material.iron, RefStrings.MODID + ":pwr_channel_top").setBlockName("pwr_channel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_channel_side"); - pwr_heatex = new BlockGenericPWR(Material.iron).setBlockName("pwr_heatex").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_heatex"); - pwr_heatsink = new BlockGenericPWR(Material.iron).setBlockName("pwr_heatsink").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_heatsink"); - pwr_neutron_source = new BlockGenericPWR(Material.iron).setBlockName("pwr_neutron_source").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_neutron_source"); - pwr_reflector = new BlockGenericPWR(Material.iron).setBlockName("pwr_reflector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_reflector"); - pwr_casing = new BlockGenericPWR(Material.iron).setBlockName("pwr_casing").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_casing"); - pwr_port = new BlockGenericPWR(Material.iron).setBlockName("pwr_port").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_port"); - pwr_controller = new MachinePWRController(Material.iron).setBlockName("pwr_controller").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_casing_blank"); - pwr_block = new BlockPWR(Material.iron).setBlockName("pwr_block").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pwr_block"); - - fusion_conductor = new BlockToolConversionPillar(Material.iron).addVariant("_welded").setBlockName("fusion_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_conductor"); - fusion_center = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_center_top_alt").setBlockName("fusion_center").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_center_side_alt"); - fusion_motor = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_motor_top_alt").setBlockName("fusion_motor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_motor_side_alt"); - fusion_heater = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_heater_top").setBlockName("fusion_heater").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_heater_side"); - fusion_hatch = new FusionHatch(Material.iron).setBlockName("fusion_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_hatch"); - plasma = new BlockPlasma(Material.iron).setBlockName("plasma").setHardness(5.0F).setResistance(6000.0F).setLightLevel(1.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":plasma"); - iter = new MachineITER().setBlockName("iter").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":iter"); - plasma_heater = new MachinePlasmaHeater().setBlockName("plasma_heater").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":plasma_heater"); - - machine_icf_press = new MachineICFPress().setBlockName("machine_icf_press").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - icf = new MachineICF().setBlockName("icf").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - icf_component = new BlockICFComponent().setBlockName("icf_component").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":icf_component"); - icf_controller = new MachineICFController().setBlockName("icf_controller").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":icf_casing"); - icf_laser_component = new BlockICFLaserComponent().setBlockName("icf_laser_component").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab); - icf_block = new BlockICF(Material.iron).setBlockName("icf_block").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":icf_block"); - - watz_element = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_element_top").setBlockName("watz_element").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_element_side"); - watz_cooler = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_cooler_top").setBlockName("watz_cooler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_cooler_side"); - watz_end = new BlockToolConversion(Material.iron).addVariant("_bolted").setBlockName("watz_end").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_casing"); - watz_conductor = new BlockCableConnect(Material.iron).setBlockName("watz_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":watz_conductor_top"); - watz = new Watz().setBlockName("watz").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - watz_pump = new WatzPump().setBlockName("watz_pump").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - - balefire = new Balefire().setBlockName("balefire").setHardness(0.0F).setLightLevel(1.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":balefire"); - fire_digamma = new DigammaFlame().setBlockName("fire_digamma").setHardness(0.0F).setResistance(150F).setLightLevel(1.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fire_digamma"); - digamma_matter = new DigammaMatter().setBlockName("digamma_matter").setBlockUnbreakable().setResistance(18000000).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":digamma_matter"); - - machine_converter_he_rf = new BlockConverterHeRf(Material.iron).setBlockName("machine_converter_he_rf").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_converter_he_rf"); - machine_converter_rf_he = new BlockConverterRfHe(Material.iron).setBlockName("machine_converter_rf_he").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_converter_rf_he"); - - dfc_emitter = new CoreComponent(Material.iron).setBlockName("dfc_emitter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":dfc_emitter"); - dfc_injector = new CoreComponent(Material.iron).setBlockName("dfc_injector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":dfc_injector"); - dfc_receiver = new CoreComponent(Material.iron).setBlockName("dfc_receiver").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":dfc_receiver"); - dfc_stabilizer = new CoreComponent(Material.iron).setBlockName("dfc_stabilizer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":dfc_stabilizer"); - dfc_core = new CoreCore(Material.iron).setBlockName("dfc_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":dfc_core"); - - seal_frame = new BlockGeneric(Material.iron).setBlockName("seal_frame").setHardness(10.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":seal_frame"); - seal_controller = new BlockSeal(Material.iron).setBlockName("seal_controller").setHardness(10.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab); - seal_hatch = new BlockHatch(Material.iron).setBlockName("seal_hatch").setHardness(Float.POSITIVE_INFINITY).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":seal_hatch_3"); - - vault_door = new VaultDoor(Material.iron).setBlockName("vault_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vault_door"); - blast_door = new BlastDoor(Material.iron).setBlockName("blast_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":blast_door"); - - sliding_blast_door = new BlockDoorGeneric(Material.iron, DoorDecl.SLIDE_DOOR).setBlockName("sliding_blast_door").setHardness(10.0F).setResistance(750.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":sliding_blast_door"); - fire_door = new BlockDoorGeneric(Material.iron, DoorDecl.FIRE_DOOR).setBlockName("fire_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fire_door"); - transition_seal = new BlockDoorGeneric(Material.iron, DoorDecl.TRANSITION_SEAL).setBlockName("transition_seal").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":transition_seal"); - silo_hatch = new BlockDoorGeneric(Material.iron, DoorDecl.SILO_HATCH).setBlockName("silo_hatch").setHardness(10.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - silo_hatch_large = new BlockDoorGeneric(Material.iron, DoorDecl.SILO_HATCH_LARGE).setBlockName("silo_hatch_large").setHardness(10.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - secure_access_door = new BlockDoorGeneric(Material.iron, DoorDecl.SECURE_ACCESS_DOOR).setBlockName("secure_access_door").setHardness(20.0F).setResistance(2_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - large_vehicle_door = new BlockDoorGeneric(Material.iron, DoorDecl.LARGE_VEHICLE_DOOR).setBlockName("large_vehicle_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - qe_containment = new BlockDoorGeneric(Material.iron, DoorDecl.QE_CONTAINMENT).setBlockName("qe_containment").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - qe_sliding_door = new BlockDoorGeneric(Material.iron, DoorDecl.QE_SLIDING).setBlockName("qe_sliding_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - round_airlock_door = new BlockDoorGeneric(Material.iron, DoorDecl.ROUND_AIRLOCK_DOOR).setBlockName("round_airlock_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - sliding_seal_door = new BlockDoorGeneric(Material.iron, DoorDecl.SLIDING_SEAL_DOOR).setBlockName("sliding_seal_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - water_door = new BlockDoorGeneric(Material.iron, DoorDecl.WATER_DOOR).setBlockName("water_door").setHardness(5.0F).setResistance(50.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - - door_metal = new BlockModDoor(Material.iron).setBlockName("door_metal").setHardness(5.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":door_metal"); - door_office = new BlockModDoor(Material.iron).setBlockName("door_office").setHardness(10.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":door_office"); - door_bunker = new BlockModDoor(Material.iron).setBlockName("door_bunker").setHardness(10.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":door_bunker"); - door_red = new BlockModDoor(Material.iron).setBlockName("door_red").setHardness(10.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":door_red"); - - barbed_wire = new BarbedWire(Material.iron).setBlockName("barbed_wire").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":barbed_wire_model"); - barbed_wire_fire = new BarbedWire(Material.iron).setBlockName("barbed_wire_fire").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":barbed_wire_fire_model"); - barbed_wire_poison = new BarbedWire(Material.iron).setBlockName("barbed_wire_poison").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":barbed_wire_poison_model"); - barbed_wire_acid = new BarbedWire(Material.iron).setBlockName("barbed_wire_acid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":barbed_wire_acid_model"); - barbed_wire_wither = new BarbedWire(Material.iron).setBlockName("barbed_wire_wither").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":barbed_wire_wither_model"); - barbed_wire_ultradeath = new BarbedWire(Material.iron).setBlockName("barbed_wire_ultradeath").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":barbed_wire_ultradeath_model"); - spikes = new Spikes(Material.iron).setBlockName("spikes").setHardness(2.5F).setResistance(5.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":spikes"); - - charger = new Charger(Material.iron).setBlockName("charger").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - - tesla = new MachineTesla(Material.iron).setBlockName("tesla").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":tesla"); - - launch_pad = new LaunchPad(Material.iron).setBlockName("launch_pad").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":launch_pad"); - launch_pad_rusted = new LaunchPadRusted(Material.iron).setBlockName("launch_pad_rusted").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_rust"); - launch_pad_large = new LaunchPadLarge(Material.iron).setBlockName("launch_pad_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_radar = new MachineRadar(Material.iron).setBlockName("machine_radar").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_radar"); - machine_radar_large = new MachineRadarLarge(Material.iron).setBlockName("machine_radar_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - radar_screen = new MachineRadarScreen(Material.iron).setBlockName("radar_screen").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - - machine_missile_assembly = new MachineMissileAssembly(Material.iron).setBlockName("machine_missile_assembly").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_missile_assembly"); - compact_launcher = new CompactLauncher(Material.iron).setBlockName("compact_launcher").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":compact_launcher"); - launch_table = new LaunchTable(Material.iron).setBlockName("launch_table").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":launch_table"); - soyuz_launcher = new SoyuzLauncher(Material.iron).setBlockName("soyuz_launcher").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":soyuz_launcher"); - - sat_mapper = new DecoBlock(Material.iron).setBlockName("sat_mapper").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":sat_mapper"); - sat_radar = new DecoBlock(Material.iron).setBlockName("sat_radar").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":sat_radar"); - sat_scanner = new DecoBlock(Material.iron).setBlockName("sat_scanner").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":sat_scanner"); - sat_laser = new DecoBlock(Material.iron).setBlockName("sat_laser").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":sat_laser"); - sat_foeq = new DecoBlock(Material.iron).setBlockName("sat_foeq").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":sat_foeq"); - sat_resonator = new DecoBlock(Material.iron).setBlockName("sat_resonator").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":sat_resonator"); - - sat_dock = new MachineSatDock(Material.iron).setBlockName("sat_dock").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":sat_dock"); - soyuz_capsule = new SoyuzCapsule(Material.iron).setBlockName("soyuz_capsule").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":soyuz_capsule"); - - turret_chekhov = new TurretChekhov(Material.iron).setBlockName("turret_chekhov").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - turret_friendly = new TurretFriendly(Material.iron).setBlockName("turret_friendly").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - turret_jeremy = new TurretJeremy(Material.iron).setBlockName("turret_jeremy").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - turret_tauon = new TurretTauon(Material.iron).setBlockName("turret_tauon").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - turret_richard = new TurretRichard(Material.iron).setBlockName("turret_richard").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - turret_howard = new TurretHoward(Material.iron).setBlockName("turret_howard").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - turret_howard_damaged = new TurretHowardDamaged(Material.iron).setBlockName("turret_howard_damaged").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_rust"); - turret_maxwell = new TurretMaxwell(Material.iron).setBlockName("turret_maxwell").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - turret_fritz = new TurretFritz(Material.iron).setBlockName("turret_fritz").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - //turret_brandon = new TurretBrandon(Material.iron).setBlockName("turret_brandon").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - turret_arty = new TurretArty(Material.iron).setBlockName("turret_arty").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - turret_himars = new TurretHIMARS(Material.iron).setBlockName("turret_himars").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - turret_sentry = new TurretSentry().setBlockName("turret_sentry").setHardness(5.0F).setResistance(5.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - turret_sentry_damaged = new TurretSentryDamaged().setBlockName("turret_sentry_damaged").setHardness(5.0F).setResistance(5.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_rust"); - - rbmk_rod = new RBMKRod(false).setBlockName("rbmk_rod").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_element"); - rbmk_rod_mod = new RBMKRod(true).setBlockName("rbmk_rod_mod").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_element_mod"); - rbmk_rod_reasim = new RBMKRodReaSim(false).setBlockName("rbmk_rod_reasim").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_element_reasim"); - rbmk_rod_reasim_mod = new RBMKRodReaSim(true).setBlockName("rbmk_rod_reasim_mod").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_element_reasim_mod"); - rbmk_control = new RBMKControl(false).setBlockName("rbmk_control").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_control"); - rbmk_control_mod = new RBMKControl(true).setBlockName("rbmk_control_mod").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_control_mod"); - rbmk_control_auto = new RBMKControlAuto().setBlockName("rbmk_control_auto").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_control_auto"); - rbmk_blank = new RBMKBlank().setBlockName("rbmk_blank").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_blank"); - rbmk_boiler = new RBMKBoiler().setBlockName("rbmk_boiler").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_boiler"); - rbmk_reflector = new RBMKReflector().setBlockName("rbmk_reflector").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_reflector"); - rbmk_absorber = new RBMKAbsorber().setBlockName("rbmk_absorber").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_absorber"); - rbmk_moderator = new RBMKModerator().setBlockName("rbmk_moderator").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_moderator"); - rbmk_outgasser = new RBMKOutgasser().setBlockName("rbmk_outgasser").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_outgasser"); - rbmk_storage = new RBMKStorage().setBlockName("rbmk_storage").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_storage"); - rbmk_cooler = new RBMKCooler().setBlockName("rbmk_cooler").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_cooler"); - rbmk_heater = new RBMKHeater().setBlockName("rbmk_heater").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_heater"); - rbmk_console = new RBMKConsole().setBlockName("rbmk_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_console"); - rbmk_crane_console = new RBMKCraneConsole().setBlockName("rbmk_crane_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_crane_console"); - rbmk_loader = new RBMKLoader(Material.iron).setBlockName("rbmk_loader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_loader"); - rbmk_steam_inlet = new RBMKInlet(Material.iron).setBlockName("rbmk_steam_inlet").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_steam_inlet"); - rbmk_steam_outlet = new RBMKOutlet(Material.iron).setBlockName("rbmk_steam_outlet").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_steam_outlet"); - pribris = new RBMKDebris().setBlockName("pribris").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris"); - pribris_burning = new RBMKDebrisBurning().setBlockName("pribris_burning").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris_burning"); - pribris_radiating = new RBMKDebrisRadiating().setBlockName("pribris_radiating").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris_radiating"); - pribris_digamma = new RBMKDebrisDigamma().setBlockName("pribris_digamma").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris_digamma"); - - book_guide = new Guide(Material.iron).setBlockName("book_guide").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.nukeTab); - - rail_wood = new RailGeneric().setMaxSpeed(0.2F).setBlockName("rail_wood").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_wood"); - rail_narrow = new RailGeneric().setBlockName("rail_narrow").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_narrow"); - rail_highspeed = new RailGeneric().setMaxSpeed(1F).setFlexible(false).setBlockName("rail_highspeed").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_highspeed"); - rail_booster = new RailBooster().setBlockName("rail_booster").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_booster"); - rail_narrow_straight = new RailNarrowStraight().setBlockName("rail_narrow_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo"); - rail_narrow_curve = new RailNarrowCurve().setBlockName("rail_narrow_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo"); - rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); - rail_large_straight_short = new RailStandardStraightShort().setBlockName("rail_large_straight_short").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); - rail_large_curve = new RailStandardCurveBase().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); - rail_large_curve_7 = new RailStandardCurveWide7().setBlockName("rail_large_curve_7").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); - rail_large_curve_9 = new RailStandardCurveWide9().setBlockName("rail_large_curve_9").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); - rail_large_ramp = new RailStandardRamp().setBlockName("rail_large_ramp").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); - rail_large_buffer = new RailStandardBuffer().setBlockName("rail_large_buffer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_buffer"); - rail_large_switch = new RailStandardSwitch().setBlockName("rail_large_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); - rail_large_switch_flipped = new RailStandardSwitchFlipped().setBlockName("rail_large_switch_flipped").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); - - crate = new BlockCrate(Material.wood).setBlockName("crate").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate"); - crate_weapon = new BlockCrate(Material.wood).setBlockName("crate_weapon").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_weapon"); - crate_lead = new BlockCrate(Material.iron).setBlockName("crate_lead").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_lead"); - crate_metal = new BlockCrate(Material.iron).setBlockName("crate_metal").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_metal"); - crate_red = new BlockCrate(Material.iron).setBlockName("crate_red").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":crate_red"); - crate_can = new BlockCanCrate(Material.wood).setBlockName("crate_can").setStepSound(Block.soundTypeWood).setHardness(1.0F).setResistance(2.5F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_can"); - crate_ammo = new BlockAmmoCrate(Material.iron).setBlockName("crate_ammo").setStepSound(Block.soundTypeMetal).setHardness(1.0F).setResistance(2.5F).setCreativeTab(MainRegistry.consumableTab); - crate_jungle = new BlockJungleCrate(Material.rock).setBlockName("crate_jungle").setStepSound(Block.soundTypeStone).setHardness(1.0F).setResistance(2.5F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_jungle"); - crate_iron = new BlockStorageCrate(Material.iron).setBlockName("crate_iron").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - crate_steel = new BlockStorageCrate(Material.iron).setBlockName("crate_steel").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - crate_desh = new BlockStorageCrate(Material.iron).setBlockName("crate_desh").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - crate_tungsten = new BlockStorageCrate(Material.iron).setBlockName("crate_tungsten").setStepSound(Block.soundTypeMetal).setHardness(7.5F).setResistance(300.0F).setCreativeTab(MainRegistry.machineTab); - crate_template = new BlockStorageCrate(Material.iron).setBlockName("crate_template").setStepSound(Block.soundTypeMetal).setHardness(7.5F).setResistance(300.0F).setCreativeTab(MainRegistry.machineTab); - safe = new BlockStorageCrate(Material.iron).setBlockName("safe").setStepSound(Block.soundTypeMetal).setHardness(7.5F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab); - mass_storage = new BlockMassStorage().setBlockName("mass_storage").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - - boxcar = new DecoBlock(Material.iron).setBlockName("boxcar").setStepSound(Block.soundTypeMetal).setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":boxcar"); - boat = new DecoBlock(Material.iron).setBlockName("boat").setStepSound(Block.soundTypeMetal).setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":boat"); - - machine_well = new MachineOilWell().setBlockName("machine_well").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_well"); - machine_pumpjack = new MachinePumpjack().setBlockName("machine_pumpjack").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_pumpjack"); - machine_fracking_tower = new MachineFrackingTower().setBlockName("machine_fracking_tower").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - oil_pipe = new BlockNoDrop(Material.iron).setBlockName("oil_pipe").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":oil_pipe"); - machine_flare = new MachineGasFlare(Material.iron).setBlockName("machine_flare").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - chimney_brick = new MachineChimneyBrick(Material.iron).setBlockName("chimney_brick").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); - chimney_industrial = new MachineChimneyIndustrial(Material.iron).setBlockName("chimney_industrial").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":concrete_colored_ext.machine"); - machine_refinery = new MachineRefinery(Material.iron).setBlockName("machine_refinery").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_refinery"); - machine_vacuum_distill = new MachineVacuumDistill(Material.iron).setBlockName("machine_vacuum_distill").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_fraction_tower = new MachineFractionTower(Material.iron).setBlockName("machine_fraction_tower").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - fraction_spacer = new FractionSpacer(Material.iron).setBlockName("fraction_spacer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_catalytic_cracker = new MachineCatalyticCracker(Material.iron).setBlockName("machine_catalytic_cracker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_catalytic_reformer = new MachineCatalyticReformer(Material.iron).setBlockName("machine_catalytic_reformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_hydrotreater = new MachineHydrotreater(Material.iron).setBlockName("machine_hydrotreater").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_coker = new MachineCoker(Material.iron).setBlockName("machine_coker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_autosaw = new MachineAutosaw().setBlockName("machine_autosaw").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_excavator = new MachineExcavator().setBlockName("machine_excavator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_ore_slopper = new MachineOreSlopper().setBlockName("machine_ore_slopper").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_mining_laser = new MachineMiningLaser(Material.iron).setBlockName("machine_mining_laser").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_mining_laser"); - barricade = new BlockNoDrop(Material.sand).setBlockName("barricade").setHardness(1.0F).setResistance(2.5F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":barricade"); - machine_assembler = new MachineAssembler(Material.iron).setBlockName("machine_assembler").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_assembler"); - machine_assemfac = new MachineAssemfac(Material.iron).setBlockName("machine_assemfac").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_arc_welder = new MachineArcWelder(Material.iron).setBlockName("machine_arc_welder").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_soldering_station = new MachineSolderingStation(Material.iron).setBlockName("machine_soldering_station").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_chemplant = new MachineChemplant(Material.iron).setBlockName("machine_chemplant").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_chemfac = new MachineChemfac(Material.iron).setBlockName("machine_chemfac").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_mixer = new MachineMixer(Material.iron).setBlockName("machine_mixer").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_fluidtank = new MachineFluidTank(Material.iron).setBlockName("machine_fluidtank").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_fluidtank"); - machine_bat9000 = new MachineBigAssTank9000(Material.iron).setBlockName("machine_bat9000").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_orbus = new MachineOrbus(Material.iron).setBlockName("machine_orbus").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_turbofan = new MachineTurbofan(Material.iron).setBlockName("machine_turbofan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_turbofan"); - machine_turbinegas = new MachineTurbineGas(Material.iron).setBlockName("machine_turbinegas").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - press_preheater = new BlockBase(Material.iron).setBlockName("press_preheater").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":press_preheater"); - machine_press = new MachinePress(Material.iron).setBlockName("machine_press").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_press"); - machine_epress = new MachineEPress(Material.iron).setBlockName("machine_epress").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_epress"); - machine_conveyor_press = new MachineConveyorPress(Material.iron).setBlockName("machine_conveyor_press").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - reactor_research = new ReactorResearch(Material.iron).setBlockName("machine_reactor_small").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_reactor_small"); - reactor_zirnox = new ReactorZirnox(Material.iron).setBlockName("machine_zirnox").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - zirnox_destroyed = new ZirnoxDestroyed(Material.iron).setBlockName("zirnox_destroyed").setHardness(100.0F).setResistance(800.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_controller = new MachineReactorControl(Material.iron).setBlockName("machine_controller").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null); - - machine_boiler_off = new MachineBoiler(false).setBlockName("machine_boiler_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":machine_boiler_off"); - - machine_steam_engine = new MachineSteamEngine().setBlockName("machine_steam_engine").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); - machine_turbine = new MachineTurbine(Material.iron).setBlockName("machine_turbine").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_turbine"); - machine_large_turbine = new MachineLargeTurbine(Material.iron).setBlockName("machine_large_turbine").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_large_turbine"); - machine_chungus = new MachineChungus(Material.iron).setBlockName("machine_chungus").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_chungus"); - machine_condenser = new MachineCondenser(Material.iron).setBlockName("machine_condenser").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":condenser"); - machine_tower_small = new MachineTowerSmall(Material.iron).setBlockName("machine_tower_small").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); - machine_tower_large = new MachineTowerLarge(Material.iron).setBlockName("machine_tower_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":concrete"); - machine_condenser_powered = new MachineCondenserPowered(Material.iron).setBlockName("machine_condenser_powered").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); - - machine_deuterium_extractor = new MachineDeuteriumExtractor(Material.iron).setBlockName("machine_deuterium_extractor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_deuterium_extractor_side"); - machine_deuterium_tower = new DeuteriumTower(Material.iron).setBlockName("machine_deuterium_tower").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":concrete"); - - machine_liquefactor = new MachineLiquefactor().setBlockName("machine_liquefactor").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); - machine_solidifier = new MachineSolidifier().setBlockName("machine_solidifier").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); - machine_compressor = new MachineCompressor().setBlockName("machine_compressor").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); - - machine_electrolyser = new MachineElectrolyser().setBlockName("machine_electrolyser").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); - - machine_autocrafter = new MachineAutocrafter().setBlockName("machine_autocrafter").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab); - machine_funnel = new MachineFunnel().setBlockName("machine_funnel").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab); - - anvil_iron = new NTMAnvil(Material.iron, NTMAnvil.TIER_IRON).setBlockName("anvil_iron").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_iron"); - anvil_lead = new NTMAnvil(Material.iron, NTMAnvil.TIER_IRON).setBlockName("anvil_lead").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_lead"); - anvil_steel = new NTMAnvil(Material.iron, NTMAnvil.TIER_STEEL).setBlockName("anvil_steel").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_steel"); - anvil_desh = new NTMAnvil(Material.iron, NTMAnvil.TIER_OIL).setBlockName("anvil_desh").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_desh"); - anvil_saturnite = new NTMAnvil(Material.iron, NTMAnvil.TIER_OIL).setBlockName("anvil_saturnite").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_saturnite"); - anvil_ferrouranium = new NTMAnvil(Material.iron, NTMAnvil.TIER_NUCLEAR).setBlockName("anvil_ferrouranium").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_ferrouranium"); - anvil_bismuth_bronze = new NTMAnvil(Material.iron, NTMAnvil.TIER_RBMK).setBlockName("anvil_bismuth_bronze").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_bismuth_bronze"); - anvil_arsenic_bronze = new NTMAnvil(Material.iron, NTMAnvil.TIER_RBMK).setBlockName("anvil_arsenic_bronze").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_arsenic_bronze"); - anvil_schrabidate = new NTMAnvil(Material.iron, NTMAnvil.TIER_FUSION).setBlockName("anvil_schrabidate").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_schrabidate"); - anvil_dnt = new NTMAnvil(Material.iron, NTMAnvil.TIER_PARTICLE).setBlockName("anvil_dnt").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_dnt"); - anvil_osmiridium = new NTMAnvil(Material.iron, NTMAnvil.TIER_GERALD).setBlockName("anvil_osmiridium").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_osmiridium"); - anvil_murky = new NTMAnvil(Material.iron, 1916169).setBlockName("anvil_murky").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_steel"); - - machine_waste_drum = new WasteDrum(Material.iron).setBlockName("machine_waste_drum").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":waste_drum"); - machine_storage_drum = new StorageDrum(Material.iron).setBlockName("machine_storage_drum").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_storage_drum"); - - machine_schrabidium_transmutator = new MachineSchrabidiumTransmutator(Material.iron).setBlockName("machine_schrabidium_transmutator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab); - - machine_siren = new MachineSiren(Material.iron).setBlockName("machine_siren").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_siren"); - - machine_spp_bottom = new SPPBottom(Material.iron).setBlockName("machine_spp_bottom").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_spp_top = new SPPTop(Material.iron).setBlockName("machine_spp_top").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - - radiobox = new Radiobox(Material.iron).setBlockName("radiobox").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":radiobox"); - radiorec = new RadioRec(Material.iron).setBlockName("radiorec").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":radiorec"); - - machine_forcefield = new MachineForceField(Material.iron).setBlockName("machine_forcefield").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_forcefield"); - - cheater_virus = new CheaterVirus(Material.iron).setBlockName("cheater_virus").setHardness(Float.POSITIVE_INFINITY).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":cheater_virus"); - cheater_virus_seed = new CheaterVirusSeed(Material.iron).setBlockName("cheater_virus_seed").setHardness(Float.POSITIVE_INFINITY).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":cheater_virus_seed"); - crystal_virus = new CrystalVirus(Material.iron).setBlockName("crystal_virus").setHardness(15.0F).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":crystal_virus"); - crystal_hardened = new BlockGeneric(Material.iron).setBlockName("crystal_hardened").setHardness(15.0F).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":crystal_hardened"); - crystal_pulsar = new CrystalPulsar(Material.iron).setBlockName("crystal_pulsar").setHardness(15.0F).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":crystal_pulsar"); - taint = new BlockTaint(Material.iron).setBlockName("taint").setHardness(15.0F).setResistance(10.0F).setCreativeTab(null); - - vent_chlorine = new BlockVent(Material.iron).setBlockName("vent_chlorine").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vent_chlorine"); - vent_cloud = new BlockVent(Material.iron).setBlockName("vent_cloud").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vent_cloud"); - vent_pink_cloud = new BlockVent(Material.iron).setBlockName("vent_pink_cloud").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vent_pink_cloud"); - vent_chlorine_seal = new BlockClorineSeal(Material.iron).setBlockName("vent_chlorine_seal").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - chlorine_gas = new BlockGasClorine().setBlockName("chlorine_gas").setHardness(0.0F).setResistance(0.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":chlorine_gas"); - - gas_radon = new BlockGasRadon().setBlockName("gas_radon").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_radon"); - gas_radon_dense = new BlockGasRadonDense().setBlockName("gas_radon_dense").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_radon_dense"); - gas_radon_tomb = new BlockGasRadonTomb().setBlockName("gas_radon_tomb").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_radon_tomb"); - gas_meltdown = new BlockGasMeltdown().setBlockName("gas_meltdown").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_meltdown"); - gas_monoxide = new BlockGasMonoxide().setBlockName("gas_monoxide").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_monoxide"); - gas_asbestos = new BlockGasAsbestos().setBlockName("gas_asbestos").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_asbestos"); - gas_coal = new BlockGasCoal().setBlockName("gas_coal").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_coal"); - gas_flammable = new BlockGasFlammable().setBlockName("gas_flammable").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_flammable"); - gas_explosive = new BlockGasExplosive().setBlockName("gas_explosive").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_explosive"); - vacuum = new BlockVacuum().setBlockName("vacuum").setResistance(1000000F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vacuum"); - - absorber = new BlockAbsorber(Material.iron, 2.5F).setBlockName("absorber").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":absorber"); - absorber_red = new BlockAbsorber(Material.iron, 10F).setBlockName("absorber_red").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":absorber_red"); - absorber_green = new BlockAbsorber(Material.iron, 100F).setBlockName("absorber_green").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":absorber_green"); - absorber_pink = new BlockAbsorber(Material.iron, 10000F).setBlockName("absorber_pink").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":absorber_pink"); - decon = new BlockDecon(Material.iron).setBlockName("decon").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":decon_side"); - transission_hatch = new BlockTransission(Material.iron).setBlockName("transission_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":transission_hatch"); - - volcano_core = new BlockVolcano().setBlockName("volcano_core").setBlockUnbreakable().setResistance(10000.0F).setCreativeTab(MainRegistry.nukeTab).setBlockTextureName(RefStrings.MODID + ":volcano_core"); - volcano_rad_core = new BlockVolcano().setBlockName("volcano_rad_core").setBlockUnbreakable().setResistance(10000.0F).setCreativeTab(MainRegistry.nukeTab).setBlockTextureName(RefStrings.MODID + ":volcano_rad_core"); - - statue_elb = new DecoBlockAlt(Material.iron).setBlockName("#null").setHardness(Float.POSITIVE_INFINITY).setResistance(Float.POSITIVE_INFINITY); - statue_elb_g = new DecoBlockAlt(Material.iron).setBlockName("#void").setHardness(Float.POSITIVE_INFINITY).setResistance(Float.POSITIVE_INFINITY); - statue_elb_w = new DecoBlockAlt(Material.iron).setBlockName("#ngtv").setHardness(Float.POSITIVE_INFINITY).setResistance(Float.POSITIVE_INFINITY); - statue_elb_f = new DecoBlockAlt(Material.iron).setBlockName("#undef").setHardness(Float.POSITIVE_INFINITY).setLightLevel(1.0F).setResistance(Float.POSITIVE_INFINITY); - - mud_fluid = new MudFluid().setDensity(2500).setViscosity(3000).setLuminosity(5).setTemperature(2773).setUnlocalizedName("mud_fluid"); - FluidRegistry.registerFluid(mud_fluid); - mud_block = new MudBlock(mud_fluid, fluidmud.setReplaceable(), ModDamageSource.mudPoisoning).setBlockName("mud_block").setResistance(500F); - - acid_fluid = new AcidFluid().setDensity(2500).setViscosity(1500).setLuminosity(5).setTemperature(2773).setUnlocalizedName("acid_fluid"); - FluidRegistry.registerFluid(acid_fluid); - acid_block = new AcidBlock(acid_fluid, fluidacid.setReplaceable(), ModDamageSource.acid).setBlockName("acid_block").setResistance(500F); - - toxic_fluid = new ToxicFluid().setDensity(2500).setViscosity(2000).setLuminosity(15).setTemperature(2773).setUnlocalizedName("toxic_fluid"); - FluidRegistry.registerFluid(toxic_fluid); - toxic_block = new ToxicBlock(toxic_fluid, fluidtoxic.setReplaceable(), ModDamageSource.radiation).setBlockName("toxic_block").setResistance(500F); - - schrabidic_fluid = new SchrabidicFluid().setDensity(31200).setViscosity(500).setTemperature(273).setUnlocalizedName("schrabidic_fluid"); - FluidRegistry.registerFluid(schrabidic_fluid); - schrabidic_block = new SchrabidicBlock(schrabidic_fluid, fluidschrabidic.setReplaceable(), ModDamageSource.radiation).setBlockName("schrabidic_block").setResistance(500F); - - corium_fluid = new CoriumFluid().setDensity(600000).setViscosity(12000).setLuminosity(10).setTemperature(1500).setUnlocalizedName("corium_fluid"); - FluidRegistry.registerFluid(corium_fluid); - corium_block = new CoriumFinite(corium_fluid, fluidcorium).setBlockName("corium_block").setResistance(500F); - - volcanic_lava_fluid = new VolcanicFluid().setLuminosity(15).setDensity(3000).setViscosity(3000).setTemperature(1300).setUnlocalizedName("volcanic_lava_fluid"); - FluidRegistry.registerFluid(volcanic_lava_fluid); - volcanic_lava_block = new VolcanicBlock(volcanic_lava_fluid, Material.lava).setBlockName("volcanic_lava_block").setResistance(500F); - - rad_lava_fluid = new RadFluid().setLuminosity(15).setDensity(3000).setViscosity(3000).setTemperature(1300).setUnlocalizedName("rad_lava_fluid"); - FluidRegistry.registerFluid(rad_lava_fluid); - rad_lava_block = new RadBlock(rad_lava_fluid, Material.lava).setBlockName("rad_lava_block").setResistance(500F); - - sulfuric_acid_fluid = new GenericFluid("sulfuric_acid_fluid").setDensity(1840).setViscosity(1000).setTemperature(273); - FluidRegistry.registerFluid(sulfuric_acid_fluid); - sulfuric_acid_block = new GenericFluidBlock(sulfuric_acid_fluid, Material.water, "sulfuric_acid_still", "sulfuric_acid_flowing").setDamage(ModDamageSource.acid, 5F).setBlockName("sulfuric_acid_block").setResistance(500F); - - Fluid liquidConcrete = new GenericFluid("concrete_liquid").setViscosity(2000); - concrete_liquid = new GenericFiniteFluid(liquidConcrete, Material.rock, "concrete_liquid", "concrete_liquid_flowing").setQuantaPerBlock(4).setBlockName("concrete_liquid").setResistance(500F); - - dummy_block_vault = new DummyBlockVault(Material.iron).setBlockName("dummy_block_vault").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); - dummy_block_blast = new DummyBlockBlast(Material.iron).setBlockName("dummy_block_blast").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); - dummy_block_uf6 = new DummyBlockMachine(Material.iron, machine_uf6_tank, false).setBlockName("dummy_block_uf6").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_titanium"); - dummy_block_puf6 = new DummyBlockMachine(Material.iron, machine_puf6_tank, false).setBlockName("dummy_block_puf6").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); - dummy_plate_compact_launcher = new DummyBlockMachine(Material.iron, compact_launcher, false).setBounds(0, 16, 0, 16, 16, 16).setBlockName("dummy_plate_compact_launcher").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); - dummy_port_compact_launcher = new DummyBlockMachine(Material.iron, compact_launcher, true).setBlockName("dummy_port_compact_launcher").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); - dummy_plate_launch_table = new DummyBlockMachine(Material.iron, launch_table, false).setBounds(0, 16, 0, 16, 16, 16).setBlockName("dummy_plate_launch_table").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); - dummy_port_launch_table = new DummyBlockMachine(Material.iron, launch_table, true).setBlockName("dummy_port_launch_table").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); - dummy_plate_cargo = new DummyBlockMachine(Material.iron, sat_dock, false).setBounds(0, 0, 0, 16, 8, 16).setBlockName("dummy_plate_cargo").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); - - ntm_dirt = new BlockNTMDirt().setBlockName("ntm_dirt").setHardness(0.5F).setStepSound(Block.soundTypeGravel).setCreativeTab(null).setBlockTextureName("dirt"); - - pink_log = new BlockPinkLog().setBlockName("pink_log").setHardness(0.5F).setStepSound(Block.soundTypeWood).setCreativeTab(null); - pink_planks = new BlockGeneric(Material.wood).setBlockName("pink_planks").setStepSound(Block.soundTypeWood).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pink_planks"); - pink_slab = new BlockPinkSlab(false, Material.wood).setBlockName("pink_slab").setStepSound(Block.soundTypeWood).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pink_planks"); - pink_double_slab = new BlockPinkSlab(true, Material.wood).setBlockName("pink_double_slab").setStepSound(Block.soundTypeWood).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pink_planks"); - pink_stairs = new BlockGenericStairs(pink_planks, 0).setBlockName("pink_stairs").setStepSound(Block.soundTypeWood).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pink_planks"); - } - - private static void registerBlock() { - //Test - GameRegistry.registerBlock(event_tester, event_tester.getUnlocalizedName()); - GameRegistry.registerBlock(obj_tester, obj_tester.getUnlocalizedName()); - GameRegistry.registerBlock(test_core, test_core.getUnlocalizedName()); - GameRegistry.registerBlock(test_charge, test_charge.getUnlocalizedName()); - GameRegistry.registerBlock(structure_anchor, structure_anchor.getUnlocalizedName()); - - //Ores - GameRegistry.registerBlock(ore_uranium, ore_uranium.getUnlocalizedName()); - GameRegistry.registerBlock(ore_uranium_scorched, ore_uranium_scorched.getUnlocalizedName()); - GameRegistry.registerBlock(ore_thorium, ore_thorium.getUnlocalizedName()); - GameRegistry.registerBlock(ore_titanium, ore_titanium.getUnlocalizedName()); - GameRegistry.registerBlock(ore_sulfur, ore_sulfur.getUnlocalizedName()); - GameRegistry.registerBlock(ore_niter, ore_niter.getUnlocalizedName()); - GameRegistry.registerBlock(ore_copper, ore_copper.getUnlocalizedName()); - GameRegistry.registerBlock(ore_tungsten, ore_tungsten.getUnlocalizedName()); - GameRegistry.registerBlock(ore_aluminium, ore_aluminium.getUnlocalizedName()); - GameRegistry.registerBlock(ore_fluorite, ore_fluorite.getUnlocalizedName()); - GameRegistry.registerBlock(ore_beryllium, ore_beryllium.getUnlocalizedName()); - GameRegistry.registerBlock(ore_lead, ore_lead.getUnlocalizedName()); - GameRegistry.registerBlock(ore_oil, ItemBlockLore.class, ore_oil.getUnlocalizedName()); - GameRegistry.registerBlock(ore_oil_empty, ore_oil_empty.getUnlocalizedName()); - GameRegistry.registerBlock(ore_oil_sand, ore_oil_sand.getUnlocalizedName()); - GameRegistry.registerBlock(ore_lignite, ore_lignite.getUnlocalizedName()); - GameRegistry.registerBlock(ore_asbestos, ore_asbestos.getUnlocalizedName()); - GameRegistry.registerBlock(ore_schrabidium, ItemBlockLore.class, ore_schrabidium.getUnlocalizedName()); - - //Rare Minerals - GameRegistry.registerBlock(ore_australium, ItemOreBlock.class, ore_australium.getUnlocalizedName()); - GameRegistry.registerBlock(ore_rare, ItemOreBlock.class, ore_rare.getUnlocalizedName()); - GameRegistry.registerBlock(ore_cobalt, ore_cobalt.getUnlocalizedName()); - GameRegistry.registerBlock(ore_cinnebar, ore_cinnebar.getUnlocalizedName()); - GameRegistry.registerBlock(ore_coltan, ore_coltan.getUnlocalizedName()); - - //Stone clusters - GameRegistry.registerBlock(cluster_iron, ItemBlockBase.class, cluster_iron.getUnlocalizedName()); - GameRegistry.registerBlock(cluster_titanium, ItemBlockBase.class, cluster_titanium.getUnlocalizedName()); - GameRegistry.registerBlock(cluster_aluminium, ItemBlockBase.class, cluster_aluminium.getUnlocalizedName()); - GameRegistry.registerBlock(cluster_copper, ItemBlockBase.class, cluster_copper.getUnlocalizedName()); - - //Bedrock ores - GameRegistry.registerBlock(ore_bedrock_oil, ore_bedrock_oil.getUnlocalizedName()); - - //Nice Meme - GameRegistry.registerBlock(ore_coal_oil, ore_coal_oil.getUnlocalizedName()); - GameRegistry.registerBlock(ore_coal_oil_burning, ore_coal_oil_burning.getUnlocalizedName()); - - //Nether Ores - GameRegistry.registerBlock(ore_nether_coal, ore_nether_coal.getUnlocalizedName()); - GameRegistry.registerBlock(ore_nether_smoldering, ore_nether_smoldering.getUnlocalizedName()); - GameRegistry.registerBlock(ore_nether_uranium, ore_nether_uranium.getUnlocalizedName()); - GameRegistry.registerBlock(ore_nether_uranium_scorched, ore_nether_uranium_scorched.getUnlocalizedName()); - GameRegistry.registerBlock(ore_nether_plutonium, ore_nether_plutonium.getUnlocalizedName()); - GameRegistry.registerBlock(ore_nether_tungsten, ore_nether_tungsten.getUnlocalizedName()); - GameRegistry.registerBlock(ore_nether_sulfur, ore_nether_sulfur.getUnlocalizedName()); - GameRegistry.registerBlock(ore_nether_fire, ore_nether_fire.getUnlocalizedName()); - GameRegistry.registerBlock(ore_nether_cobalt, ore_nether_cobalt.getUnlocalizedName()); - GameRegistry.registerBlock(ore_nether_schrabidium, ItemBlockLore.class, ore_nether_schrabidium.getUnlocalizedName()); - - //Meteor Ores - register(ore_meteor); - - //Gneiss Ores - GameRegistry.registerBlock(ore_gneiss_iron, ore_gneiss_iron.getUnlocalizedName()); - GameRegistry.registerBlock(ore_gneiss_gold, ore_gneiss_gold.getUnlocalizedName()); - GameRegistry.registerBlock(ore_gneiss_uranium, ore_gneiss_uranium.getUnlocalizedName()); - GameRegistry.registerBlock(ore_gneiss_uranium_scorched, ore_gneiss_uranium_scorched.getUnlocalizedName()); - GameRegistry.registerBlock(ore_gneiss_copper, ore_gneiss_copper.getUnlocalizedName()); - GameRegistry.registerBlock(ore_gneiss_asbestos, ore_gneiss_asbestos.getUnlocalizedName()); - GameRegistry.registerBlock(ore_gneiss_lithium, ore_gneiss_lithium.getUnlocalizedName()); - GameRegistry.registerBlock(ore_gneiss_schrabidium, ItemBlockLore.class, ore_gneiss_schrabidium.getUnlocalizedName()); - GameRegistry.registerBlock(ore_gneiss_rare, ItemOreBlock.class, ore_gneiss_rare.getUnlocalizedName()); - GameRegistry.registerBlock(ore_gneiss_gas, ore_gneiss_gas.getUnlocalizedName()); - - //Depth ores - GameRegistry.registerBlock(ore_depth_cinnebar, ItemBlockBase.class, ore_depth_cinnebar.getUnlocalizedName()); - GameRegistry.registerBlock(ore_depth_zirconium, ItemBlockBase.class, ore_depth_zirconium.getUnlocalizedName()); - GameRegistry.registerBlock(ore_depth_borax, ItemBlockBase.class, ore_depth_borax.getUnlocalizedName()); - GameRegistry.registerBlock(cluster_depth_iron, ItemBlockBase.class, cluster_depth_iron.getUnlocalizedName()); - GameRegistry.registerBlock(cluster_depth_titanium, ItemBlockBase.class, cluster_depth_titanium.getUnlocalizedName()); - GameRegistry.registerBlock(cluster_depth_tungsten, ItemBlockBase.class, cluster_depth_tungsten.getUnlocalizedName()); - GameRegistry.registerBlock(ore_alexandrite, ItemBlockBase.class, ore_alexandrite.getUnlocalizedName()); - - //Nether depth ores - GameRegistry.registerBlock(ore_depth_nether_neodymium, ItemBlockBase.class, ore_depth_nether_neodymium.getUnlocalizedName()); - - //Basalt ores - register(ore_basalt); - - //End Ores - GameRegistry.registerBlock(ore_tikite, ore_tikite.getUnlocalizedName()); - - //It's a meme you dip - GameRegistry.registerBlock(ore_random, ItemRandomOreBlock.class, ore_random.getUnlocalizedName()); - - //Bedrock ore - register(ore_bedrock); - register(ore_volcano); - - //Secret - register(stone_keyhole); - - //Resource-bearing Stones - register(stone_resource); - register(stalagmite); - register(stalactite); - register(stone_biome); - - //Stone Variants - GameRegistry.registerBlock(stone_porous, stone_porous.getUnlocalizedName()); - GameRegistry.registerBlock(stone_gneiss, stone_gneiss.getUnlocalizedName()); - GameRegistry.registerBlock(gneiss_brick, gneiss_brick.getUnlocalizedName()); - GameRegistry.registerBlock(gneiss_tile, gneiss_tile.getUnlocalizedName()); - GameRegistry.registerBlock(gneiss_chiseled, gneiss_chiseled.getUnlocalizedName()); - GameRegistry.registerBlock(stone_depth, ItemBlockBase.class, stone_depth.getUnlocalizedName()); - GameRegistry.registerBlock(depth_brick, ItemBlockBase.class, depth_brick.getUnlocalizedName()); - GameRegistry.registerBlock(depth_tiles, ItemBlockBase.class, depth_tiles.getUnlocalizedName()); - GameRegistry.registerBlock(stone_depth_nether, ItemBlockBase.class, stone_depth_nether.getUnlocalizedName()); - GameRegistry.registerBlock(depth_nether_brick, ItemBlockBase.class, depth_nether_brick.getUnlocalizedName()); - GameRegistry.registerBlock(depth_nether_tiles, ItemBlockBase.class, depth_nether_tiles.getUnlocalizedName()); - GameRegistry.registerBlock(depth_dnt, ItemBlockBase.class, depth_dnt.getUnlocalizedName()); - GameRegistry.registerBlock(basalt, basalt.getUnlocalizedName()); - GameRegistry.registerBlock(basalt_smooth, basalt_smooth.getUnlocalizedName()); - GameRegistry.registerBlock(basalt_brick, basalt_brick.getUnlocalizedName()); - GameRegistry.registerBlock(basalt_polished, basalt_polished.getUnlocalizedName()); - GameRegistry.registerBlock(basalt_tiles, basalt_tiles.getUnlocalizedName()); - //GameRegistry.registerBlock(stone_deep_cobble, ItemBlockBase.class, stone_deep_cobble.getUnlocalizedName()); - - //Blocks - GameRegistry.registerBlock(block_uranium, block_uranium.getUnlocalizedName()); - GameRegistry.registerBlock(block_u233, block_u233.getUnlocalizedName()); - GameRegistry.registerBlock(block_u235, block_u235.getUnlocalizedName()); - GameRegistry.registerBlock(block_u238, block_u238.getUnlocalizedName()); - GameRegistry.registerBlock(block_uranium_fuel, block_uranium_fuel.getUnlocalizedName()); - GameRegistry.registerBlock(block_neptunium, block_neptunium.getUnlocalizedName()); - GameRegistry.registerBlock(block_polonium, block_polonium.getUnlocalizedName()); - GameRegistry.registerBlock(block_mox_fuel, block_mox_fuel.getUnlocalizedName()); - GameRegistry.registerBlock(block_plutonium, block_plutonium.getUnlocalizedName()); - GameRegistry.registerBlock(block_pu238, block_pu238.getUnlocalizedName()); - GameRegistry.registerBlock(block_pu239, block_pu239.getUnlocalizedName()); - GameRegistry.registerBlock(block_pu240, block_pu240.getUnlocalizedName()); - GameRegistry.registerBlock(block_pu_mix, block_pu_mix.getUnlocalizedName()); - GameRegistry.registerBlock(block_plutonium_fuel, block_plutonium_fuel.getUnlocalizedName()); - GameRegistry.registerBlock(block_thorium, block_thorium.getUnlocalizedName()); - GameRegistry.registerBlock(block_thorium_fuel, block_thorium_fuel.getUnlocalizedName()); - GameRegistry.registerBlock(block_titanium, block_titanium.getUnlocalizedName()); - GameRegistry.registerBlock(block_sulfur, block_sulfur.getUnlocalizedName()); - GameRegistry.registerBlock(block_niter, block_niter.getUnlocalizedName()); - GameRegistry.registerBlock(block_copper, block_copper.getUnlocalizedName()); - GameRegistry.registerBlock(block_red_copper, block_red_copper.getUnlocalizedName()); - GameRegistry.registerBlock(block_advanced_alloy, block_advanced_alloy.getUnlocalizedName()); - GameRegistry.registerBlock(block_tungsten, block_tungsten.getUnlocalizedName()); - GameRegistry.registerBlock(block_aluminium, block_aluminium.getUnlocalizedName()); - GameRegistry.registerBlock(block_fluorite, block_fluorite.getUnlocalizedName()); - GameRegistry.registerBlock(block_beryllium, block_beryllium.getUnlocalizedName()); - GameRegistry.registerBlock(block_cobalt, block_cobalt.getUnlocalizedName()); - GameRegistry.registerBlock(block_steel, block_steel.getUnlocalizedName()); - GameRegistry.registerBlock(block_tcalloy, block_tcalloy.getUnlocalizedName()); - GameRegistry.registerBlock(block_cdalloy, block_cdalloy.getUnlocalizedName()); - GameRegistry.registerBlock(block_lead, block_lead.getUnlocalizedName()); - GameRegistry.registerBlock(block_bismuth, block_bismuth.getUnlocalizedName()); - GameRegistry.registerBlock(block_cadmium, block_cadmium.getUnlocalizedName()); - GameRegistry.registerBlock(block_coltan, block_coltan.getUnlocalizedName()); - GameRegistry.registerBlock(block_tantalium, block_tantalium.getUnlocalizedName()); - GameRegistry.registerBlock(block_niobium, block_niobium.getUnlocalizedName()); - GameRegistry.registerBlock(block_lithium, block_lithium.getUnlocalizedName()); - GameRegistry.registerBlock(block_zirconium, block_zirconium.getUnlocalizedName()); - GameRegistry.registerBlock(block_white_phosphorus, block_white_phosphorus.getUnlocalizedName()); - GameRegistry.registerBlock(block_red_phosphorus, block_red_phosphorus.getUnlocalizedName()); - GameRegistry.registerBlock(block_yellowcake, block_yellowcake.getUnlocalizedName()); - GameRegistry.registerBlock(block_scrap, block_scrap.getUnlocalizedName()); - GameRegistry.registerBlock(block_electrical_scrap, block_electrical_scrap.getUnlocalizedName()); - GameRegistry.registerBlock(block_fallout, block_fallout.getUnlocalizedName()); - GameRegistry.registerBlock(block_foam, block_foam.getUnlocalizedName()); - GameRegistry.registerBlock(block_graphite, block_graphite.getUnlocalizedName()); - register(block_coke); - GameRegistry.registerBlock(block_graphite_drilled, block_graphite_drilled.getUnlocalizedName()); - GameRegistry.registerBlock(block_graphite_fuel, block_graphite_fuel.getUnlocalizedName()); - GameRegistry.registerBlock(block_graphite_rod, block_graphite_rod.getUnlocalizedName()); - GameRegistry.registerBlock(block_graphite_plutonium, block_graphite_plutonium.getUnlocalizedName()); - GameRegistry.registerBlock(block_graphite_source, block_graphite_source.getUnlocalizedName()); - GameRegistry.registerBlock(block_graphite_lithium, block_graphite_lithium.getUnlocalizedName()); - GameRegistry.registerBlock(block_graphite_tritium, block_graphite_tritium.getUnlocalizedName()); - GameRegistry.registerBlock(block_graphite_detector, block_graphite_detector.getUnlocalizedName()); - GameRegistry.registerBlock(block_boron, block_boron.getUnlocalizedName()); - GameRegistry.registerBlock(block_insulator, block_insulator.getUnlocalizedName()); - GameRegistry.registerBlock(block_fiberglass, block_fiberglass.getUnlocalizedName()); - GameRegistry.registerBlock(block_asbestos, block_asbestos.getUnlocalizedName()); - GameRegistry.registerBlock(block_trinitite, block_trinitite.getUnlocalizedName()); - GameRegistry.registerBlock(block_waste, block_waste.getUnlocalizedName()); - GameRegistry.registerBlock(block_waste_painted, block_waste_painted.getUnlocalizedName()); - GameRegistry.registerBlock(block_waste_vitrified, block_waste_vitrified.getUnlocalizedName()); - GameRegistry.registerBlock(ancient_scrap, ancient_scrap.getUnlocalizedName()); - GameRegistry.registerBlock(block_corium, block_corium.getUnlocalizedName()); - GameRegistry.registerBlock(block_corium_cobble, block_corium_cobble.getUnlocalizedName()); - GameRegistry.registerBlock(block_schraranium, ItemBlockBase.class, block_schraranium.getUnlocalizedName()); - GameRegistry.registerBlock(block_schrabidium, ItemBlockBase.class, block_schrabidium.getUnlocalizedName()); - GameRegistry.registerBlock(block_schrabidate, ItemBlockBase.class, block_schrabidate.getUnlocalizedName()); - GameRegistry.registerBlock(block_solinium, ItemBlockBase.class, block_solinium.getUnlocalizedName()); - GameRegistry.registerBlock(block_schrabidium_fuel, ItemBlockBase.class, block_schrabidium_fuel.getUnlocalizedName()); - GameRegistry.registerBlock(block_euphemium, ItemBlockLore.class, block_euphemium.getUnlocalizedName()); - GameRegistry.registerBlock(block_schrabidium_cluster, ItemBlockBase.class, block_schrabidium_cluster.getUnlocalizedName()); - GameRegistry.registerBlock(block_euphemium_cluster, ItemBlockLore.class, block_euphemium_cluster.getUnlocalizedName()); - GameRegistry.registerBlock(block_dineutronium, block_dineutronium.getUnlocalizedName()); - GameRegistry.registerBlock(block_magnetized_tungsten, block_magnetized_tungsten.getUnlocalizedName()); - GameRegistry.registerBlock(block_combine_steel, block_combine_steel.getUnlocalizedName()); - GameRegistry.registerBlock(block_desh, block_desh.getUnlocalizedName()); - GameRegistry.registerBlock(block_dura_steel, block_dura_steel.getUnlocalizedName()); - GameRegistry.registerBlock(block_starmetal, block_starmetal.getUnlocalizedName()); - GameRegistry.registerBlock(block_polymer, block_polymer.getUnlocalizedName()); - GameRegistry.registerBlock(block_bakelite, block_bakelite.getUnlocalizedName()); - GameRegistry.registerBlock(block_rubber, block_rubber.getUnlocalizedName()); - GameRegistry.registerBlock(block_australium, ItemOreBlock.class, block_australium.getUnlocalizedName()); - GameRegistry.registerBlock(block_weidanium, ItemOreBlock.class, block_weidanium.getUnlocalizedName()); - GameRegistry.registerBlock(block_reiium, ItemOreBlock.class, block_reiium.getUnlocalizedName()); - GameRegistry.registerBlock(block_unobtainium, ItemOreBlock.class, block_unobtainium.getUnlocalizedName()); - GameRegistry.registerBlock(block_daffergon, ItemOreBlock.class, block_daffergon.getUnlocalizedName()); - GameRegistry.registerBlock(block_verticium, ItemOreBlock.class, block_verticium.getUnlocalizedName()); - register(block_cap); - GameRegistry.registerBlock(block_lanthanium, block_lanthanium.getUnlocalizedName()); - GameRegistry.registerBlock(block_ra226, block_ra226.getUnlocalizedName()); - GameRegistry.registerBlock(block_actinium, block_actinium.getUnlocalizedName()); - GameRegistry.registerBlock(block_tritium, block_tritium.getUnlocalizedName()); - GameRegistry.registerBlock(block_semtex, block_semtex.getUnlocalizedName()); - GameRegistry.registerBlock(block_c4, block_c4.getUnlocalizedName()); - GameRegistry.registerBlock(block_smore, block_smore.getUnlocalizedName()); - GameRegistry.registerBlock(block_slag, block_slag.getUnlocalizedName()); - - //Deco Blocks - GameRegistry.registerBlock(deco_titanium, deco_titanium.getUnlocalizedName()); - GameRegistry.registerBlock(deco_red_copper, deco_red_copper.getUnlocalizedName()); - GameRegistry.registerBlock(deco_tungsten, deco_tungsten.getUnlocalizedName()); - GameRegistry.registerBlock(deco_aluminium, deco_aluminium.getUnlocalizedName()); - GameRegistry.registerBlock(deco_steel, deco_steel.getUnlocalizedName()); - GameRegistry.registerBlock(deco_lead, deco_lead.getUnlocalizedName()); - GameRegistry.registerBlock(deco_beryllium, deco_beryllium.getUnlocalizedName()); - GameRegistry.registerBlock(deco_asbestos, deco_asbestos.getUnlocalizedName()); - GameRegistry.registerBlock(deco_emitter, ItemBlockBase.class, deco_emitter.getUnlocalizedName()); - GameRegistry.registerBlock(part_emitter, ItemBlockBase.class, part_emitter.getUnlocalizedName()); - GameRegistry.registerBlock(deco_loot, deco_loot.getUnlocalizedName()); - GameRegistry.registerBlock(pedestal, pedestal.getUnlocalizedName()); - GameRegistry.registerBlock(bobblehead, ItemBlockMeta.class, bobblehead.getUnlocalizedName()); - GameRegistry.registerBlock(snowglobe, ItemBlockMeta.class, snowglobe.getUnlocalizedName()); - GameRegistry.registerBlock(plushie, ItemBlockBase.class, plushie.getUnlocalizedName()); - GameRegistry.registerBlock(deco_rbmk, deco_rbmk.getUnlocalizedName()); - GameRegistry.registerBlock(deco_rbmk_smooth, deco_rbmk_smooth.getUnlocalizedName()); - - //Gravel - GameRegistry.registerBlock(gravel_obsidian, ItemBlockBlastInfo.class, gravel_obsidian.getUnlocalizedName()); - GameRegistry.registerBlock(gravel_diamond, ItemBlockLore.class, gravel_diamond.getUnlocalizedName()); - - //Lamps - GameRegistry.registerBlock(lamp_tritium_green_off, lamp_tritium_green_off.getUnlocalizedName()); - GameRegistry.registerBlock(lamp_tritium_green_on, lamp_tritium_green_on.getUnlocalizedName()); - GameRegistry.registerBlock(lamp_tritium_blue_off, lamp_tritium_blue_off.getUnlocalizedName()); - GameRegistry.registerBlock(lamp_tritium_blue_on, lamp_tritium_blue_on.getUnlocalizedName()); - GameRegistry.registerBlock(lamp_demon, lamp_demon.getUnlocalizedName()); - GameRegistry.registerBlock(lantern, lantern.getUnlocalizedName()); - GameRegistry.registerBlock(lantern_behemoth, lantern_behemoth.getUnlocalizedName()); - GameRegistry.registerBlock(spotlight_incandescent, spotlight_incandescent.getUnlocalizedName()); - GameRegistry.registerBlock(spotlight_incandescent_off, spotlight_incandescent_off.getUnlocalizedName()); - GameRegistry.registerBlock(spotlight_fluoro, spotlight_fluoro.getUnlocalizedName()); - GameRegistry.registerBlock(spotlight_fluoro_off, spotlight_fluoro_off.getUnlocalizedName()); - GameRegistry.registerBlock(spotlight_halogen, spotlight_halogen.getUnlocalizedName()); - GameRegistry.registerBlock(spotlight_halogen_off, spotlight_halogen_off.getUnlocalizedName()); - GameRegistry.registerBlock(spotlight_beam, spotlight_beam.getUnlocalizedName()); - register(floodlight); - GameRegistry.registerBlock(floodlight_beam, floodlight_beam.getUnlocalizedName()); - - //Reinforced Blocks - GameRegistry.registerBlock(asphalt, ItemBlockBlastInfo.class, asphalt.getUnlocalizedName()); - GameRegistry.registerBlock(asphalt_light, ItemBlockBlastInfo.class, asphalt_light.getUnlocalizedName()); - GameRegistry.registerBlock(reinforced_brick, ItemBlockBlastInfo.class, reinforced_brick.getUnlocalizedName()); - GameRegistry.registerBlock(reinforced_glass, ItemBlockBlastInfo.class, reinforced_glass.getUnlocalizedName()); - GameRegistry.registerBlock(reinforced_glass_pane, ItemBlockBlastInfo.class, reinforced_glass_pane.getUnlocalizedName()); - GameRegistry.registerBlock(reinforced_light, ItemBlockBlastInfo.class, reinforced_light.getUnlocalizedName()); - GameRegistry.registerBlock(reinforced_sand, ItemBlockBlastInfo.class, reinforced_sand.getUnlocalizedName()); - GameRegistry.registerBlock(reinforced_lamp_off, ItemBlockBlastInfo.class, reinforced_lamp_off.getUnlocalizedName()); - GameRegistry.registerBlock(reinforced_lamp_on, ItemBlockBlastInfo.class, reinforced_lamp_on.getUnlocalizedName()); - GameRegistry.registerBlock(reinforced_laminate, ItemBlockBlastInfo.class, reinforced_laminate.getUnlocalizedName()); - GameRegistry.registerBlock(reinforced_laminate_pane,ItemBlockBlastInfo.class, reinforced_laminate_pane.getUnlocalizedName()); - - //Bricks - GameRegistry.registerBlock(reinforced_stone, ItemBlockBlastInfo.class, reinforced_stone.getUnlocalizedName()); - GameRegistry.registerBlock(reinforced_ducrete, ItemBlockBlastInfo.class, reinforced_ducrete.getUnlocalizedName()); - GameRegistry.registerBlock(concrete_smooth, ItemBlockBlastInfo.class, concrete_smooth.getUnlocalizedName()); - GameRegistry.registerBlock(concrete_colored, ItemBlockColoredConcrete.class, concrete_colored.getUnlocalizedName()); - register(concrete_colored_ext); - GameRegistry.registerBlock(concrete, ItemBlockBlastInfo.class, concrete.getUnlocalizedName()); - GameRegistry.registerBlock(concrete_asbestos, ItemBlockBlastInfo.class, concrete_asbestos.getUnlocalizedName()); - GameRegistry.registerBlock(concrete_super, ItemBlockBlastInfo.class, concrete_super.getUnlocalizedName()); - GameRegistry.registerBlock(concrete_super_broken, ItemBlockBlastInfo.class, concrete_super_broken.getUnlocalizedName()); - GameRegistry.registerBlock(ducrete_smooth, ItemBlockBlastInfo.class, ducrete_smooth.getUnlocalizedName()); - GameRegistry.registerBlock(ducrete, ItemBlockBlastInfo.class, ducrete.getUnlocalizedName()); - GameRegistry.registerBlock(concrete_pillar, ItemBlockBlastInfo.class, concrete_pillar.getUnlocalizedName()); - GameRegistry.registerBlock(brick_concrete, ItemBlockBlastInfo.class, brick_concrete.getUnlocalizedName()); - GameRegistry.registerBlock(brick_concrete_mossy, ItemBlockBlastInfo.class, brick_concrete_mossy.getUnlocalizedName()); - GameRegistry.registerBlock(brick_concrete_cracked, ItemBlockBlastInfo.class, brick_concrete_cracked.getUnlocalizedName()); - GameRegistry.registerBlock(brick_concrete_broken, ItemBlockBlastInfo.class, brick_concrete_broken.getUnlocalizedName()); - GameRegistry.registerBlock(brick_concrete_marked, ItemBlockBlastInfo.class, brick_concrete_marked.getUnlocalizedName()); - GameRegistry.registerBlock(brick_ducrete, ItemBlockBlastInfo.class, brick_ducrete.getUnlocalizedName()); - GameRegistry.registerBlock(brick_obsidian, ItemBlockBlastInfo.class, brick_obsidian.getUnlocalizedName()); - GameRegistry.registerBlock(brick_compound, ItemBlockBlastInfo.class, brick_compound.getUnlocalizedName()); - GameRegistry.registerBlock(brick_light, ItemBlockBlastInfo.class, brick_light.getUnlocalizedName()); - GameRegistry.registerBlock(brick_asbestos, brick_asbestos.getUnlocalizedName()); - GameRegistry.registerBlock(brick_fire, ItemBlockBlastInfo.class, brick_fire.getUnlocalizedName()); - - GameRegistry.registerBlock(concrete_slab, ItemModSlab.class, concrete_slab.getUnlocalizedName()); - GameRegistry.registerBlock(concrete_double_slab, ItemModSlab.class, concrete_double_slab.getUnlocalizedName()); - GameRegistry.registerBlock(concrete_brick_slab, ItemModSlab.class, concrete_brick_slab.getUnlocalizedName()); - GameRegistry.registerBlock(concrete_brick_double_slab, ItemModSlab.class, concrete_brick_double_slab.getUnlocalizedName()); - GameRegistry.registerBlock(brick_slab, ItemModSlab.class, brick_slab.getUnlocalizedName()); - GameRegistry.registerBlock(brick_double_slab, ItemModSlab.class, brick_double_slab.getUnlocalizedName()); - - GameRegistry.registerBlock(concrete_smooth_stairs, concrete_smooth_stairs.getUnlocalizedName()); - GameRegistry.registerBlock(concrete_stairs, concrete_stairs.getUnlocalizedName()); - GameRegistry.registerBlock(concrete_asbestos_stairs, concrete_asbestos_stairs.getUnlocalizedName()); - GameRegistry.registerBlock(ducrete_smooth_stairs, ducrete_smooth_stairs.getUnlocalizedName()); - GameRegistry.registerBlock(brick_concrete_stairs, brick_concrete_stairs.getUnlocalizedName()); - GameRegistry.registerBlock(brick_concrete_mossy_stairs, brick_concrete_mossy_stairs.getUnlocalizedName()); - GameRegistry.registerBlock(brick_concrete_cracked_stairs, brick_concrete_cracked_stairs.getUnlocalizedName()); - GameRegistry.registerBlock(brick_concrete_broken_stairs, brick_concrete_broken_stairs.getUnlocalizedName()); - GameRegistry.registerBlock(brick_ducrete_stairs, brick_ducrete_stairs.getUnlocalizedName()); - GameRegistry.registerBlock(reinforced_stone_stairs, reinforced_stone_stairs.getUnlocalizedName()); - GameRegistry.registerBlock(reinforced_brick_stairs, reinforced_brick_stairs.getUnlocalizedName()); - GameRegistry.registerBlock(brick_obsidian_stairs, brick_obsidian_stairs.getUnlocalizedName()); - GameRegistry.registerBlock(brick_light_stairs, brick_light_stairs.getUnlocalizedName()); - GameRegistry.registerBlock(brick_compound_stairs, brick_compound_stairs.getUnlocalizedName()); - GameRegistry.registerBlock(brick_asbestos_stairs, brick_asbestos_stairs.getUnlocalizedName()); - GameRegistry.registerBlock(brick_fire_stairs, brick_fire_stairs.getUnlocalizedName()); - GameRegistry.registerBlock(ducrete_stairs, ducrete_stairs.getUnlocalizedName()); - GameRegistry.registerBlock(asphalt_stairs, asphalt_stairs.getUnlocalizedName()); - - //CMB Building Elements - GameRegistry.registerBlock(cmb_brick, ItemBlockBlastInfo.class, cmb_brick.getUnlocalizedName()); - GameRegistry.registerBlock(cmb_brick_reinforced, ItemBlockBlastInfo.class, cmb_brick_reinforced.getUnlocalizedName()); - - //Tiles - GameRegistry.registerBlock(vinyl_tile, ItemBlockBlastInfo.class, vinyl_tile.getUnlocalizedName()); //i would rather die than dip into fucking blocks with subtypes again - - GameRegistry.registerBlock(tile_lab, tile_lab.getUnlocalizedName()); - GameRegistry.registerBlock(tile_lab_cracked, tile_lab_cracked.getUnlocalizedName()); - GameRegistry.registerBlock(tile_lab_broken, tile_lab_broken.getUnlocalizedName()); - - //Other defensive stuff - GameRegistry.registerBlock(barbed_wire, barbed_wire.getUnlocalizedName()); - GameRegistry.registerBlock(barbed_wire_fire, barbed_wire_fire.getUnlocalizedName()); - GameRegistry.registerBlock(barbed_wire_poison, barbed_wire_poison.getUnlocalizedName()); - GameRegistry.registerBlock(barbed_wire_acid, barbed_wire_acid.getUnlocalizedName()); - GameRegistry.registerBlock(barbed_wire_wither, barbed_wire_wither.getUnlocalizedName()); - GameRegistry.registerBlock(barbed_wire_ultradeath, barbed_wire_ultradeath.getUnlocalizedName()); - GameRegistry.registerBlock(spikes, spikes.getUnlocalizedName()); - GameRegistry.registerBlock(tesla, tesla.getUnlocalizedName()); - - //Charger - GameRegistry.registerBlock(charger, charger.getUnlocalizedName()); - //GameRegistry.registerBlock(floodlight, floodlight.getUnlocalizedName()); - - //Decoration Blocks - GameRegistry.registerBlock(block_meteor, block_meteor.getUnlocalizedName()); - GameRegistry.registerBlock(block_meteor_cobble, block_meteor_cobble.getUnlocalizedName()); - GameRegistry.registerBlock(block_meteor_broken, block_meteor_broken.getUnlocalizedName()); - GameRegistry.registerBlock(block_meteor_molten, block_meteor_molten.getUnlocalizedName()); - GameRegistry.registerBlock(block_meteor_treasure, block_meteor_treasure.getUnlocalizedName()); - GameRegistry.registerBlock(meteor_polished, meteor_polished.getUnlocalizedName()); - GameRegistry.registerBlock(meteor_brick, meteor_brick.getUnlocalizedName()); - GameRegistry.registerBlock(meteor_brick_mossy, meteor_brick_mossy.getUnlocalizedName()); - GameRegistry.registerBlock(meteor_brick_cracked, meteor_brick_cracked.getUnlocalizedName()); - GameRegistry.registerBlock(meteor_brick_chiseled, meteor_brick_chiseled.getUnlocalizedName()); - GameRegistry.registerBlock(meteor_pillar, meteor_pillar.getUnlocalizedName()); - GameRegistry.registerBlock(meteor_spawner, meteor_spawner.getUnlocalizedName()); - GameRegistry.registerBlock(meteor_battery, ItemBlockLore.class, meteor_battery.getUnlocalizedName()); - GameRegistry.registerBlock(brick_jungle, brick_jungle.getUnlocalizedName()); - GameRegistry.registerBlock(brick_jungle_cracked, brick_jungle_cracked.getUnlocalizedName()); - GameRegistry.registerBlock(brick_jungle_fragile, brick_jungle_fragile.getUnlocalizedName()); - GameRegistry.registerBlock(brick_jungle_lava, brick_jungle_lava.getUnlocalizedName()); - GameRegistry.registerBlock(brick_jungle_ooze, brick_jungle_ooze.getUnlocalizedName()); - GameRegistry.registerBlock(brick_jungle_mystic, brick_jungle_mystic.getUnlocalizedName()); - GameRegistry.registerBlock(brick_jungle_trap, ItemTrapBlock.class, brick_jungle_trap.getUnlocalizedName()); - GameRegistry.registerBlock(brick_jungle_glyph, ItemGlyphBlock.class, brick_jungle_glyph.getUnlocalizedName()); - GameRegistry.registerBlock(brick_jungle_circle, brick_jungle_circle.getUnlocalizedName()); - GameRegistry.registerBlock(brick_forgotten, brick_forgotten.getUnlocalizedName()); - GameRegistry.registerBlock(brick_red, brick_red.getUnlocalizedName()); - register(deco_computer); - register(deco_crt); - register(deco_toaster); - GameRegistry.registerBlock(filing_cabinet, ItemBlockBase.class, filing_cabinet.getUnlocalizedName()); - GameRegistry.registerBlock(tape_recorder, tape_recorder.getUnlocalizedName()); - GameRegistry.registerBlock(steel_poles, steel_poles.getUnlocalizedName()); - GameRegistry.registerBlock(pole_top, pole_top.getUnlocalizedName()); - GameRegistry.registerBlock(pole_satellite_receiver, pole_satellite_receiver.getUnlocalizedName()); - GameRegistry.registerBlock(steel_wall, steel_wall.getUnlocalizedName()); - GameRegistry.registerBlock(steel_corner, steel_corner.getUnlocalizedName()); - GameRegistry.registerBlock(steel_roof, steel_roof.getUnlocalizedName()); - GameRegistry.registerBlock(steel_beam, steel_beam.getUnlocalizedName()); - register(steel_scaffold); - GameRegistry.registerBlock(steel_grate, steel_grate.getUnlocalizedName()); - register(steel_grate_wide); - GameRegistry.registerBlock(deco_pipe, ItemBlockBase.class, deco_pipe.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_rusted, ItemBlockBase.class, deco_pipe_rusted.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_green, ItemBlockBase.class, deco_pipe_green.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_green_rusted, ItemBlockBase.class, deco_pipe_green_rusted.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_red, ItemBlockBase.class, deco_pipe_red.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_marked, ItemBlockBase.class, deco_pipe_marked.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_rim, ItemBlockBase.class, deco_pipe_rim.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_rim_rusted, ItemBlockBase.class, deco_pipe_rim_rusted.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_rim_green, ItemBlockBase.class, deco_pipe_rim_green.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_rim_green_rusted, ItemBlockBase.class, deco_pipe_rim_green_rusted.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_rim_red, ItemBlockBase.class, deco_pipe_rim_red.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_rim_marked, ItemBlockBase.class, deco_pipe_rim_marked.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_framed, ItemBlockBase.class, deco_pipe_framed.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_framed_rusted, ItemBlockBase.class, deco_pipe_framed_rusted.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_framed_green, ItemBlockBase.class, deco_pipe_framed_green.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_framed_green_rusted, ItemBlockBase.class, deco_pipe_framed_green_rusted.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_framed_red, ItemBlockBase.class, deco_pipe_framed_red.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_framed_marked, ItemBlockBase.class, deco_pipe_framed_marked.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_quad, ItemBlockBase.class, deco_pipe_quad.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_quad_rusted, ItemBlockBase.class, deco_pipe_quad_rusted.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_quad_green, ItemBlockBase.class, deco_pipe_quad_green.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_quad_green_rusted, ItemBlockBase.class, deco_pipe_quad_green_rusted.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_quad_red, ItemBlockBase.class, deco_pipe_quad_red.getUnlocalizedName()); - GameRegistry.registerBlock(deco_pipe_quad_marked, ItemBlockBase.class, deco_pipe_quad_marked.getUnlocalizedName()); - register(plant_flower); - register(plant_tall); - register(plant_dead); - register(reeds); - GameRegistry.registerBlock(mush, mush.getUnlocalizedName()); - GameRegistry.registerBlock(mush_block, mush_block.getUnlocalizedName()); - GameRegistry.registerBlock(mush_block_stem, mush_block_stem.getUnlocalizedName()); - register(glyphid_base); - register(glyphid_spawner); - GameRegistry.registerBlock(moon_turf, moon_turf.getUnlocalizedName()); - - //Waste - GameRegistry.registerBlock(waste_earth, waste_earth.getUnlocalizedName()); - GameRegistry.registerBlock(waste_mycelium, waste_mycelium.getUnlocalizedName()); - GameRegistry.registerBlock(waste_trinitite, waste_trinitite.getUnlocalizedName()); - GameRegistry.registerBlock(waste_trinitite_red, waste_trinitite_red.getUnlocalizedName()); - GameRegistry.registerBlock(waste_log, waste_log.getUnlocalizedName()); - GameRegistry.registerBlock(waste_leaves, waste_leaves.getUnlocalizedName()); - GameRegistry.registerBlock(waste_planks, waste_planks.getUnlocalizedName()); - GameRegistry.registerBlock(frozen_grass, frozen_grass.getUnlocalizedName()); - GameRegistry.registerBlock(frozen_dirt, frozen_dirt.getUnlocalizedName()); - GameRegistry.registerBlock(frozen_log, frozen_log.getUnlocalizedName()); - GameRegistry.registerBlock(frozen_planks, frozen_planks.getUnlocalizedName()); - GameRegistry.registerBlock(dirt_dead, dirt_dead.getUnlocalizedName()); - GameRegistry.registerBlock(dirt_oily, dirt_oily.getUnlocalizedName()); - GameRegistry.registerBlock(sand_dirty, sand_dirty.getUnlocalizedName()); - GameRegistry.registerBlock(sand_dirty_red, sand_dirty_red.getUnlocalizedName()); - GameRegistry.registerBlock(stone_cracked, stone_cracked.getUnlocalizedName()); - GameRegistry.registerBlock(fallout, fallout.getUnlocalizedName()); - GameRegistry.registerBlock(foam_layer, foam_layer.getUnlocalizedName()); - GameRegistry.registerBlock(sand_boron_layer, sand_boron_layer.getUnlocalizedName()); - GameRegistry.registerBlock(leaves_layer, leaves_layer.getUnlocalizedName()); - GameRegistry.registerBlock(oil_spill, oil_spill.getUnlocalizedName()); - GameRegistry.registerBlock(burning_earth, burning_earth.getUnlocalizedName()); - GameRegistry.registerBlock(tektite, tektite.getUnlocalizedName()); - GameRegistry.registerBlock(ore_tektite_osmiridium, ore_tektite_osmiridium.getUnlocalizedName()); - GameRegistry.registerBlock(impact_dirt, impact_dirt.getUnlocalizedName()); - - //RAD - register(sellafield_slaked); - register(sellafield_bedrock); - register(ore_sellafield_diamond); - register(ore_sellafield_emerald); - register(ore_sellafield_uranium_scorched); - register(ore_sellafield_schrabidium); - register(ore_sellafield_radgem); - GameRegistry.registerBlock(sellafield, ItemBlockNamedMeta.class, sellafield.getUnlocalizedName()); - - //Geysirs - GameRegistry.registerBlock(geysir_water, geysir_water.getUnlocalizedName()); - GameRegistry.registerBlock(geysir_chlorine, geysir_chlorine.getUnlocalizedName()); - GameRegistry.registerBlock(geysir_vapor, geysir_vapor.getUnlocalizedName()); - GameRegistry.registerBlock(geysir_nether, geysir_nether.getUnlocalizedName()); - - //Nukes - GameRegistry.registerBlock(nuke_gadget, nuke_gadget.getUnlocalizedName()); - GameRegistry.registerBlock(nuke_boy, nuke_boy.getUnlocalizedName()); - GameRegistry.registerBlock(nuke_man, nuke_man.getUnlocalizedName()); - GameRegistry.registerBlock(nuke_mike, nuke_mike.getUnlocalizedName()); - GameRegistry.registerBlock(nuke_tsar, nuke_tsar.getUnlocalizedName()); - GameRegistry.registerBlock(nuke_prototype, ItemPrototypeBlock.class, nuke_prototype.getUnlocalizedName()); - GameRegistry.registerBlock(nuke_fleija, nuke_fleija.getUnlocalizedName()); - GameRegistry.registerBlock(nuke_solinium, nuke_solinium.getUnlocalizedName()); - GameRegistry.registerBlock(nuke_n2, nuke_n2.getUnlocalizedName()); - GameRegistry.registerBlock(nuke_fstbmb, nuke_fstbmb.getUnlocalizedName()); - GameRegistry.registerBlock(nuke_custom, nuke_custom.getUnlocalizedName()); - - //Generic Bombs - GameRegistry.registerBlock(bomb_multi, bomb_multi.getUnlocalizedName()); - GameRegistry.registerBlock(crashed_balefire, crashed_balefire.getUnlocalizedName()); - GameRegistry.registerBlock(fireworks, fireworks.getUnlocalizedName()); - GameRegistry.registerBlock(dynamite, dynamite.getUnlocalizedName()); - GameRegistry.registerBlock(tnt, tnt.getUnlocalizedName()); - GameRegistry.registerBlock(semtex, semtex.getUnlocalizedName()); - GameRegistry.registerBlock(c4, c4.getUnlocalizedName()); - register(fissure_bomb); - - //Turrets - GameRegistry.registerBlock(turret_chekhov, turret_chekhov.getUnlocalizedName()); - GameRegistry.registerBlock(turret_friendly, turret_friendly.getUnlocalizedName()); - GameRegistry.registerBlock(turret_jeremy, turret_jeremy.getUnlocalizedName()); - GameRegistry.registerBlock(turret_tauon, turret_tauon.getUnlocalizedName()); - GameRegistry.registerBlock(turret_richard, turret_richard.getUnlocalizedName()); - GameRegistry.registerBlock(turret_howard, turret_howard.getUnlocalizedName()); - GameRegistry.registerBlock(turret_howard_damaged, turret_howard_damaged.getUnlocalizedName()); - GameRegistry.registerBlock(turret_maxwell, turret_maxwell.getUnlocalizedName()); - GameRegistry.registerBlock(turret_fritz, turret_fritz.getUnlocalizedName()); - //GameRegistry.registerBlock(turret_brandon, turret_brandon.getUnlocalizedName()); - GameRegistry.registerBlock(turret_arty, turret_arty.getUnlocalizedName()); - GameRegistry.registerBlock(turret_himars, turret_himars.getUnlocalizedName()); - GameRegistry.registerBlock(turret_sentry, turret_sentry.getUnlocalizedName()); - GameRegistry.registerBlock(turret_sentry_damaged, turret_sentry_damaged.getUnlocalizedName()); - - //Wall-mounted Explosives - GameRegistry.registerBlock(charge_dynamite, ItemBlockBase.class, charge_dynamite.getUnlocalizedName()); - GameRegistry.registerBlock(charge_miner, ItemBlockBase.class, charge_miner.getUnlocalizedName()); - GameRegistry.registerBlock(charge_c4, ItemBlockBase.class, charge_c4.getUnlocalizedName()); - GameRegistry.registerBlock(charge_semtex, ItemBlockBase.class, charge_semtex.getUnlocalizedName()); - - //Mines - GameRegistry.registerBlock(mine_ap, mine_ap.getUnlocalizedName()); - GameRegistry.registerBlock(mine_he, mine_he.getUnlocalizedName()); - GameRegistry.registerBlock(mine_shrap, mine_shrap.getUnlocalizedName()); - GameRegistry.registerBlock(mine_fat, mine_fat.getUnlocalizedName()); - - //Block Bombs - GameRegistry.registerBlock(flame_war, flame_war.getUnlocalizedName()); - GameRegistry.registerBlock(float_bomb, float_bomb.getUnlocalizedName()); - GameRegistry.registerBlock(therm_endo, therm_endo.getUnlocalizedName()); - GameRegistry.registerBlock(therm_exo, therm_exo.getUnlocalizedName()); - GameRegistry.registerBlock(emp_bomb, emp_bomb.getUnlocalizedName()); - GameRegistry.registerBlock(det_cord, det_cord.getUnlocalizedName()); - GameRegistry.registerBlock(det_charge, det_charge.getUnlocalizedName()); - GameRegistry.registerBlock(det_nuke, det_nuke.getUnlocalizedName()); - GameRegistry.registerBlock(det_miner, det_miner.getUnlocalizedName()); - GameRegistry.registerBlock(red_barrel, ItemBlockLore.class, red_barrel.getUnlocalizedName()); - GameRegistry.registerBlock(pink_barrel, ItemBlockLore.class, pink_barrel.getUnlocalizedName()); - GameRegistry.registerBlock(lox_barrel, ItemBlockLore.class, lox_barrel.getUnlocalizedName()); - GameRegistry.registerBlock(taint_barrel, taint_barrel.getUnlocalizedName()); - GameRegistry.registerBlock(yellow_barrel, yellow_barrel.getUnlocalizedName()); - GameRegistry.registerBlock(vitrified_barrel, vitrified_barrel.getUnlocalizedName()); - - //Siren - GameRegistry.registerBlock(machine_siren, machine_siren.getUnlocalizedName()); - - //This Thing - GameRegistry.registerBlock(broadcaster_pc, broadcaster_pc.getUnlocalizedName()); - - //Geiger Counter - GameRegistry.registerBlock(geiger, geiger.getUnlocalizedName()); - - //HEV Battery - GameRegistry.registerBlock(hev_battery, hev_battery.getUnlocalizedName()); - - //Chainlink Fence - GameRegistry.registerBlock(fence_metal, ItemBlockBase.class, fence_metal.getUnlocalizedName()); - - //Sands, Glass - GameRegistry.registerBlock(ash_digamma, ash_digamma.getUnlocalizedName()); - GameRegistry.registerBlock(sand_boron, sand_boron.getUnlocalizedName()); - GameRegistry.registerBlock(sand_lead, sand_lead.getUnlocalizedName()); - GameRegistry.registerBlock(sand_uranium, sand_uranium.getUnlocalizedName()); - GameRegistry.registerBlock(sand_polonium, sand_polonium.getUnlocalizedName()); - GameRegistry.registerBlock(sand_quartz, sand_quartz.getUnlocalizedName()); - GameRegistry.registerBlock(glass_boron, glass_boron.getUnlocalizedName()); - GameRegistry.registerBlock(glass_lead, glass_lead.getUnlocalizedName()); - GameRegistry.registerBlock(glass_uranium, glass_uranium.getUnlocalizedName()); - GameRegistry.registerBlock(glass_trinitite, glass_trinitite.getUnlocalizedName()); - GameRegistry.registerBlock(glass_polonium, glass_polonium.getUnlocalizedName()); - GameRegistry.registerBlock(glass_ash, glass_ash.getUnlocalizedName()); - GameRegistry.registerBlock(glass_quartz, glass_quartz.getUnlocalizedName()); - - //Silo Hatch - GameRegistry.registerBlock(seal_frame, seal_frame.getUnlocalizedName()); - GameRegistry.registerBlock(seal_controller, seal_controller.getUnlocalizedName()); - GameRegistry.registerBlock(seal_hatch, seal_hatch.getUnlocalizedName()); - - //Vault Door - GameRegistry.registerBlock(vault_door, vault_door.getUnlocalizedName()); - GameRegistry.registerBlock(blast_door, blast_door.getUnlocalizedName()); - GameRegistry.registerBlock(fire_door, fire_door.getUnlocalizedName()); - GameRegistry.registerBlock(transition_seal, transition_seal.getUnlocalizedName()); - GameRegistry.registerBlock(silo_hatch, silo_hatch.getUnlocalizedName()); - GameRegistry.registerBlock(silo_hatch_large, silo_hatch_large.getUnlocalizedName()); - GameRegistry.registerBlock(sliding_blast_door, sliding_blast_door.getUnlocalizedName()); - - //Doors - GameRegistry.registerBlock(door_metal, door_metal.getUnlocalizedName()); - GameRegistry.registerBlock(door_office, door_office.getUnlocalizedName()); - GameRegistry.registerBlock(door_bunker, door_bunker.getUnlocalizedName()); - GameRegistry.registerBlock(door_red, door_red.getUnlocalizedName()); - GameRegistry.registerBlock(secure_access_door, secure_access_door.getUnlocalizedName()); - GameRegistry.registerBlock(large_vehicle_door, large_vehicle_door.getUnlocalizedName()); - GameRegistry.registerBlock(qe_containment, qe_containment.getUnlocalizedName()); - GameRegistry.registerBlock(qe_sliding_door, qe_sliding_door.getUnlocalizedName()); - GameRegistry.registerBlock(round_airlock_door, round_airlock_door.getUnlocalizedName()); - GameRegistry.registerBlock(sliding_seal_door, sliding_seal_door.getUnlocalizedName()); - GameRegistry.registerBlock(water_door, water_door.getUnlocalizedName()); - - //Crates - register(crate_iron); - register(crate_steel); - register(crate_desh); - register(crate_tungsten); - register(crate_template); - register(safe); - register(mass_storage); - - //Junk - GameRegistry.registerBlock(boxcar, boxcar.getUnlocalizedName()); - GameRegistry.registerBlock(boat, boat.getUnlocalizedName()); - - //Machines - register(machine_autocrafter); - register(machine_funnel); - - register(anvil_iron); - register(anvil_lead); - register(anvil_steel); - register(anvil_desh); - register(anvil_saturnite); - register(anvil_ferrouranium); - register(anvil_bismuth_bronze); - register(anvil_arsenic_bronze); - register(anvil_schrabidate); - register(anvil_dnt); - register(anvil_osmiridium); - register(anvil_murky); - - GameRegistry.registerBlock(press_preheater, press_preheater.getUnlocalizedName()); - GameRegistry.registerBlock(machine_press, machine_press.getUnlocalizedName()); - GameRegistry.registerBlock(machine_epress, machine_epress.getUnlocalizedName()); - register(machine_conveyor_press); - register(pump_steam); - register(pump_electric); - register(heater_firebox); - register(heater_oven); - register(machine_ashpit); - register(heater_oilburner); - register(heater_electric); - register(heater_heatex); - register(furnace_iron); - register(furnace_steel); - register(furnace_combination); - register(machine_stirling); - register(machine_stirling_steel); - register(machine_stirling_creative); - register(machine_sawmill); - register(machine_crucible); - register(machine_strand_caster); - register(machine_boiler); - register(machine_industrial_boiler); - register(foundry_mold); - register(foundry_basin); - register(foundry_channel); - register(foundry_tank); - register(foundry_outlet); - register(foundry_slagtap); - register(slag); - register(machine_furnace_brick_off); - register(machine_furnace_brick_on); - register(machine_difurnace_off); - register(machine_difurnace_on); - register(machine_difurnace_extension); - GameRegistry.registerBlock(machine_difurnace_rtg_off, machine_difurnace_rtg_off.getUnlocalizedName()); - GameRegistry.registerBlock(machine_difurnace_rtg_on, machine_difurnace_rtg_on.getUnlocalizedName()); - GameRegistry.registerBlock(machine_centrifuge, machine_centrifuge.getUnlocalizedName()); - GameRegistry.registerBlock(machine_gascent, machine_gascent.getUnlocalizedName()); - GameRegistry.registerBlock(machine_fel, machine_fel.getUnlocalizedName()); - GameRegistry.registerBlock(machine_silex, machine_silex.getUnlocalizedName()); - GameRegistry.registerBlock(machine_crystallizer, machine_crystallizer.getUnlocalizedName()); - GameRegistry.registerBlock(machine_uf6_tank, machine_uf6_tank.getUnlocalizedName()); - GameRegistry.registerBlock(machine_puf6_tank, machine_puf6_tank.getUnlocalizedName()); - GameRegistry.registerBlock(machine_reactor_breeding, machine_reactor_breeding.getUnlocalizedName()); - GameRegistry.registerBlock(machine_nuke_furnace_off, machine_nuke_furnace_off.getUnlocalizedName()); - GameRegistry.registerBlock(machine_nuke_furnace_on, machine_nuke_furnace_on.getUnlocalizedName()); - GameRegistry.registerBlock(machine_rtg_furnace_off, machine_rtg_furnace_off.getUnlocalizedName()); - GameRegistry.registerBlock(machine_rtg_furnace_on, machine_rtg_furnace_on.getUnlocalizedName()); - register(machine_wood_burner); - register(machine_diesel); - register(machine_combustion_engine); - GameRegistry.registerBlock(machine_controller, machine_controller.getUnlocalizedName()); - GameRegistry.registerBlock(reactor_research, reactor_research.getUnlocalizedName()); - GameRegistry.registerBlock(reactor_zirnox, reactor_zirnox.getUnlocalizedName()); - GameRegistry.registerBlock(zirnox_destroyed, zirnox_destroyed.getUnlocalizedName()); - GameRegistry.registerBlock(machine_industrial_generator, machine_industrial_generator.getUnlocalizedName()); - GameRegistry.registerBlock(machine_radgen, machine_radgen.getUnlocalizedName()); - GameRegistry.registerBlock(machine_cyclotron, machine_cyclotron.getUnlocalizedName()); - GameRegistry.registerBlock(machine_exposure_chamber, machine_exposure_chamber.getUnlocalizedName()); - GameRegistry.registerBlock(machine_rtg_grey, machine_rtg_grey.getUnlocalizedName()); - GameRegistry.registerBlock(machine_geo, machine_geo.getUnlocalizedName()); - GameRegistry.registerBlock(machine_amgen, machine_amgen.getUnlocalizedName()); - GameRegistry.registerBlock(machine_minirtg, machine_minirtg.getUnlocalizedName()); - GameRegistry.registerBlock(machine_powerrtg, machine_powerrtg.getUnlocalizedName()); - GameRegistry.registerBlock(machine_radiolysis, machine_radiolysis.getUnlocalizedName()); - GameRegistry.registerBlock(machine_hephaestus, machine_hephaestus.getUnlocalizedName()); - GameRegistry.registerBlock(machine_spp_bottom, machine_spp_bottom.getUnlocalizedName()); - GameRegistry.registerBlock(machine_spp_top, machine_spp_top.getUnlocalizedName()); - - GameRegistry.registerBlock(hadron_plating, hadron_plating.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_plating_blue, hadron_plating_blue.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_plating_black, hadron_plating_black.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_plating_yellow, hadron_plating_yellow.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_plating_striped, hadron_plating_striped.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_plating_glass, hadron_plating_glass.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_plating_voltz, hadron_plating_voltz.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_coil_alloy, ItemBlockBase.class, hadron_coil_alloy.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_coil_gold, ItemBlockBase.class, hadron_coil_gold.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_coil_neodymium, ItemBlockBase.class, hadron_coil_neodymium.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_coil_magtung, ItemBlockBase.class, hadron_coil_magtung.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_coil_schrabidium, ItemBlockBase.class, hadron_coil_schrabidium.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_coil_schrabidate, ItemBlockBase.class, hadron_coil_schrabidate.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_coil_starmetal, ItemBlockBase.class, hadron_coil_starmetal.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_coil_chlorophyte, ItemBlockBase.class, hadron_coil_chlorophyte.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_coil_mese, ItemBlockBase.class, hadron_coil_mese.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_power, hadron_power.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_power_10m, hadron_power_10m.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_power_100m, hadron_power_100m.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_power_1g, hadron_power_1g.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_power_10g, hadron_power_10g.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_diode, hadron_diode.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_analysis, hadron_analysis.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_analysis_glass, hadron_analysis_glass.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_access, hadron_access.getUnlocalizedName()); - GameRegistry.registerBlock(hadron_core, hadron_core.getUnlocalizedName()); - register(hadron_cooler); - - GameRegistry.registerBlock(rbmk_rod, rbmk_rod.getUnlocalizedName()); - GameRegistry.registerBlock(rbmk_rod_mod, rbmk_rod_mod.getUnlocalizedName()); - GameRegistry.registerBlock(rbmk_rod_reasim, rbmk_rod_reasim.getUnlocalizedName()); - GameRegistry.registerBlock(rbmk_rod_reasim_mod, rbmk_rod_reasim_mod.getUnlocalizedName()); - GameRegistry.registerBlock(rbmk_control, rbmk_control.getUnlocalizedName()); - GameRegistry.registerBlock(rbmk_control_mod, rbmk_control_mod.getUnlocalizedName()); - GameRegistry.registerBlock(rbmk_control_auto, rbmk_control_auto.getUnlocalizedName()); - GameRegistry.registerBlock(rbmk_blank, rbmk_blank.getUnlocalizedName()); - GameRegistry.registerBlock(rbmk_boiler, rbmk_boiler.getUnlocalizedName()); - GameRegistry.registerBlock(rbmk_reflector, rbmk_reflector.getUnlocalizedName()); - GameRegistry.registerBlock(rbmk_absorber, rbmk_absorber.getUnlocalizedName()); - GameRegistry.registerBlock(rbmk_moderator, rbmk_moderator.getUnlocalizedName()); - GameRegistry.registerBlock(rbmk_outgasser, rbmk_outgasser.getUnlocalizedName()); - GameRegistry.registerBlock(rbmk_storage, rbmk_storage.getUnlocalizedName()); - GameRegistry.registerBlock(rbmk_cooler, rbmk_cooler.getUnlocalizedName()); - GameRegistry.registerBlock(rbmk_heater, rbmk_heater.getUnlocalizedName()); - GameRegistry.registerBlock(rbmk_console, rbmk_console.getUnlocalizedName()); - GameRegistry.registerBlock(rbmk_crane_console, rbmk_crane_console.getUnlocalizedName()); - register(rbmk_loader); - register(rbmk_steam_inlet); - register(rbmk_steam_outlet); - GameRegistry.registerBlock(pribris, pribris.getUnlocalizedName()); - GameRegistry.registerBlock(pribris_burning, pribris_burning.getUnlocalizedName()); - GameRegistry.registerBlock(pribris_radiating, pribris_radiating.getUnlocalizedName()); - GameRegistry.registerBlock(pribris_digamma, pribris_digamma.getUnlocalizedName()); - - GameRegistry.registerBlock(red_cable, red_cable.getUnlocalizedName()); - GameRegistry.registerBlock(red_cable_classic, red_cable_classic.getUnlocalizedName()); - GameRegistry.registerBlock(red_cable_paintable, red_cable_paintable.getUnlocalizedName()); - register(red_cable_gauge); - GameRegistry.registerBlock(red_wire_coated, red_wire_coated.getUnlocalizedName()); - GameRegistry.registerBlock(red_connector, ItemBlockBase.class, red_connector.getUnlocalizedName()); - GameRegistry.registerBlock(red_pylon, ItemBlockBase.class, red_pylon.getUnlocalizedName()); - register(red_pylon_medium_wood); - register(red_pylon_medium_wood_transformer); - register(red_pylon_medium_steel); - register(red_pylon_medium_steel_transformer); - GameRegistry.registerBlock(red_pylon_large, ItemBlockBase.class, red_pylon_large.getUnlocalizedName()); - GameRegistry.registerBlock(substation, ItemBlockBase.class, substation.getUnlocalizedName()); - GameRegistry.registerBlock(cable_switch, cable_switch.getUnlocalizedName()); - GameRegistry.registerBlock(cable_detector, cable_detector.getUnlocalizedName()); - GameRegistry.registerBlock(cable_diode, ItemBlockBase.class, cable_diode.getUnlocalizedName()); - GameRegistry.registerBlock(machine_detector, machine_detector.getUnlocalizedName()); - register(fluid_duct_neo); - register(fluid_duct_box); - register(fluid_duct_exhaust); - register(fluid_duct_paintable); - register(fluid_duct_gauge); - register(fluid_valve); - register(fluid_switch); - register(machine_drain); - register(radio_torch_sender); - register(radio_torch_receiver); - register(radio_torch_counter); - register(radio_torch_logic); - register(radio_telex); - - register(crane_extractor); - register(crane_inserter); - register(crane_grabber); - register(crane_router); - register(crane_boxer); - register(crane_unboxer); - register(conveyor); - register(conveyor_express); - register(conveyor_double); - register(conveyor_triple); - register(conveyor_chute); - register(conveyor_lift); - register(crane_splitter); - register(crane_partitioner); - register(drone_waypoint); - register(drone_crate); - register(drone_waypoint_request); - register(drone_dock); - register(drone_crate_provider); - register(drone_crate_requester); - register(fan); - register(piston_inserter); - - GameRegistry.registerBlock(chain, chain.getUnlocalizedName()); - GameRegistry.registerBlock(ladder_sturdy, ladder_sturdy.getUnlocalizedName()); - GameRegistry.registerBlock(ladder_iron, ladder_iron.getUnlocalizedName()); - GameRegistry.registerBlock(ladder_gold, ladder_gold.getUnlocalizedName()); - GameRegistry.registerBlock(ladder_titanium, ladder_titanium.getUnlocalizedName()); - GameRegistry.registerBlock(ladder_copper, ladder_copper.getUnlocalizedName()); - GameRegistry.registerBlock(ladder_tungsten, ladder_tungsten.getUnlocalizedName()); - GameRegistry.registerBlock(ladder_aluminium, ladder_aluminium.getUnlocalizedName()); - GameRegistry.registerBlock(ladder_steel, ladder_steel.getUnlocalizedName()); - GameRegistry.registerBlock(ladder_lead, ladder_lead.getUnlocalizedName()); - GameRegistry.registerBlock(ladder_cobalt, ladder_cobalt.getUnlocalizedName()); - - register(barrel_plastic); - register(barrel_corroded); - register(barrel_iron); - register(barrel_steel); - register(barrel_tcalloy); - register(barrel_antimatter); - register(machine_battery_potato); - register(machine_battery); - register(machine_lithium_battery); - register(machine_schrabidium_battery); - register(machine_dineutronium_battery); - register(machine_fensu); - register(capacitor_bus); - register(capacitor_copper); - register(capacitor_gold); - register(capacitor_niobium); - register(capacitor_tantalium); - register(capacitor_schrabidate); - GameRegistry.registerBlock(machine_transformer, machine_transformer.getUnlocalizedName()); - GameRegistry.registerBlock(machine_transformer_20, machine_transformer_20.getUnlocalizedName()); - GameRegistry.registerBlock(machine_transformer_dnt, machine_transformer_dnt.getUnlocalizedName()); - GameRegistry.registerBlock(machine_transformer_dnt_20, machine_transformer_dnt_20.getUnlocalizedName()); - GameRegistry.registerBlock(machine_converter_he_rf, machine_converter_he_rf.getUnlocalizedName()); - GameRegistry.registerBlock(machine_converter_rf_he, machine_converter_rf_he.getUnlocalizedName()); - GameRegistry.registerBlock(machine_electric_furnace_off, machine_electric_furnace_off.getUnlocalizedName()); - GameRegistry.registerBlock(machine_electric_furnace_on, machine_electric_furnace_on.getUnlocalizedName()); - GameRegistry.registerBlock(machine_arc_furnace_off, machine_arc_furnace_off.getUnlocalizedName()); - GameRegistry.registerBlock(machine_arc_furnace_on, machine_arc_furnace_on.getUnlocalizedName()); - GameRegistry.registerBlock(machine_microwave, machine_microwave.getUnlocalizedName()); - GameRegistry.registerBlock(machine_assembler, machine_assembler.getUnlocalizedName()); - GameRegistry.registerBlock(machine_assemfac, machine_assemfac.getUnlocalizedName()); - GameRegistry.registerBlock(machine_chemplant, machine_chemplant.getUnlocalizedName()); - GameRegistry.registerBlock(machine_chemfac, machine_chemfac.getUnlocalizedName()); - register(machine_arc_welder); - register(machine_soldering_station); - register(machine_arc_furnace); - register(machine_mixer); - register(machine_fluidtank); - register(machine_bat9000); - register(machine_orbus); - GameRegistry.registerBlock(machine_boiler_off, machine_boiler_off.getUnlocalizedName()); - register(machine_steam_engine); - register(machine_turbine); - register(machine_large_turbine); - register(machine_chungus); - GameRegistry.registerBlock(machine_condenser, machine_condenser.getUnlocalizedName()); - GameRegistry.registerBlock(machine_tower_small, machine_tower_small.getUnlocalizedName()); - GameRegistry.registerBlock(machine_tower_large, machine_tower_large.getUnlocalizedName()); - register(machine_condenser_powered); - GameRegistry.registerBlock(machine_deuterium_extractor, machine_deuterium_extractor.getUnlocalizedName()); - GameRegistry.registerBlock(machine_deuterium_tower, machine_deuterium_tower.getUnlocalizedName()); - GameRegistry.registerBlock(machine_liquefactor, ItemBlockBase.class, machine_liquefactor.getUnlocalizedName()); - GameRegistry.registerBlock(machine_solidifier, ItemBlockBase.class, machine_solidifier.getUnlocalizedName()); - register(machine_compressor); - GameRegistry.registerBlock(machine_electrolyser, machine_electrolyser.getUnlocalizedName()); - GameRegistry.registerBlock(machine_waste_drum, machine_waste_drum.getUnlocalizedName()); - GameRegistry.registerBlock(machine_storage_drum, machine_storage_drum.getUnlocalizedName()); - GameRegistry.registerBlock(machine_shredder, machine_shredder.getUnlocalizedName()); - register(machine_well); - register(machine_pumpjack); - register(machine_fracking_tower); - register(machine_flare); - register(chimney_brick); - register(chimney_industrial); - register(machine_refinery); - register(machine_vacuum_distill); - register(machine_fraction_tower); - register(fraction_spacer); - register(machine_catalytic_cracker); - register(machine_catalytic_reformer); - register(machine_hydrotreater); - register(machine_coker); - register(machine_autosaw); - register(machine_excavator); - register(machine_ore_slopper); - register(machine_mining_laser); - register(barricade); - register(machine_turbofan); - register(machine_turbinegas); - GameRegistry.registerBlock(machine_schrabidium_transmutator, machine_schrabidium_transmutator.getUnlocalizedName()); - GameRegistry.registerBlock(machine_teleporter, machine_teleporter.getUnlocalizedName()); - GameRegistry.registerBlock(teleanchor, teleanchor.getUnlocalizedName()); - GameRegistry.registerBlock(field_disturber, field_disturber.getUnlocalizedName()); - GameRegistry.registerBlock(machine_satlinker, machine_satlinker.getUnlocalizedName()); - GameRegistry.registerBlock(machine_keyforge, machine_keyforge.getUnlocalizedName()); - GameRegistry.registerBlock(machine_armor_table, machine_armor_table.getUnlocalizedName()); - GameRegistry.registerBlock(machine_forcefield, machine_forcefield.getUnlocalizedName()); - GameRegistry.registerBlock(radiorec, radiorec.getUnlocalizedName()); - GameRegistry.registerBlock(radiobox, radiobox.getUnlocalizedName()); - - //Multiblock Parts - GameRegistry.registerBlock(struct_launcher, struct_launcher.getUnlocalizedName()); - GameRegistry.registerBlock(struct_scaffold, struct_scaffold.getUnlocalizedName()); - GameRegistry.registerBlock(struct_launcher_core, struct_launcher_core.getUnlocalizedName()); - GameRegistry.registerBlock(struct_launcher_core_large, struct_launcher_core_large.getUnlocalizedName()); - GameRegistry.registerBlock(struct_soyuz_core, struct_soyuz_core.getUnlocalizedName()); - GameRegistry.registerBlock(struct_iter_core, struct_iter_core.getUnlocalizedName()); - GameRegistry.registerBlock(struct_plasma_core, struct_plasma_core.getUnlocalizedName()); - GameRegistry.registerBlock(struct_watz_core, struct_watz_core.getUnlocalizedName()); - GameRegistry.registerBlock(struct_icf_core, struct_icf_core.getUnlocalizedName()); - - //Absorbers - GameRegistry.registerBlock(absorber, absorber.getUnlocalizedName()); - GameRegistry.registerBlock(absorber_red, absorber_red.getUnlocalizedName()); - GameRegistry.registerBlock(absorber_green, absorber_green.getUnlocalizedName()); - GameRegistry.registerBlock(absorber_pink, absorber_pink.getUnlocalizedName()); - GameRegistry.registerBlock(decon, decon.getUnlocalizedName()); - GameRegistry.registerBlock(transission_hatch, transission_hatch.getUnlocalizedName()); - - //Solar Tower Blocks - GameRegistry.registerBlock(machine_solar_boiler, machine_solar_boiler.getUnlocalizedName()); - GameRegistry.registerBlock(solar_mirror, solar_mirror.getUnlocalizedName()); - - //Literal fucking garbage - GameRegistry.registerBlock(factory_titanium_hull, factory_titanium_hull.getUnlocalizedName()); - GameRegistry.registerBlock(factory_advanced_hull, factory_advanced_hull.getUnlocalizedName()); - - //CM stuff - register(custom_machine, ItemCustomMachine.class); - register(cm_block); - register(cm_sheet); - register(cm_engine); - register(cm_tank); - register(cm_circuit); - register(cm_port); - register(cm_flux); - register(cm_heat); - register(cm_anchor); - - //PWR - register(pwr_fuel); - register(pwr_control); - register(pwr_channel); - register(pwr_heatex); - register(pwr_heatsink); - register(pwr_neutron_source); - register(pwr_reflector); - register(pwr_casing); - register(pwr_port); - register(pwr_controller); - register(pwr_block); - - //Multiblock Generators - register(fusion_conductor); - GameRegistry.registerBlock(fusion_center, fusion_center.getUnlocalizedName()); - GameRegistry.registerBlock(fusion_motor, fusion_motor.getUnlocalizedName()); - GameRegistry.registerBlock(fusion_heater, fusion_heater.getUnlocalizedName()); - GameRegistry.registerBlock(fusion_hatch, fusion_hatch.getUnlocalizedName()); - GameRegistry.registerBlock(plasma, ItemBlockLore.class, plasma.getUnlocalizedName()); - GameRegistry.registerBlock(iter, iter.getUnlocalizedName()); - GameRegistry.registerBlock(plasma_heater, plasma_heater.getUnlocalizedName()); - - register(machine_icf_press); - register(icf_laser_component); - register(icf_controller); - register(icf_block); - register(icf_component); - register(icf); - - GameRegistry.registerBlock(watz_element, watz_element.getUnlocalizedName()); - GameRegistry.registerBlock(watz_cooler, watz_cooler.getUnlocalizedName()); - register(watz_end); - GameRegistry.registerBlock(watz_conductor, watz_conductor.getUnlocalizedName()); - GameRegistry.registerBlock(watz, watz.getUnlocalizedName()); - GameRegistry.registerBlock(watz_pump, watz_pump.getUnlocalizedName()); - - //E - GameRegistry.registerBlock(balefire, balefire.getUnlocalizedName()); - GameRegistry.registerBlock(fire_digamma, fire_digamma.getUnlocalizedName()); - GameRegistry.registerBlock(digamma_matter, digamma_matter.getUnlocalizedName()); - register(volcano_core); - register(volcano_rad_core); - - //Dark Fusion Core - GameRegistry.registerBlock(dfc_emitter, dfc_emitter.getUnlocalizedName()); - GameRegistry.registerBlock(dfc_injector, dfc_injector.getUnlocalizedName()); - GameRegistry.registerBlock(dfc_receiver, dfc_receiver.getUnlocalizedName()); - GameRegistry.registerBlock(dfc_stabilizer, dfc_stabilizer.getUnlocalizedName()); - GameRegistry.registerBlock(dfc_core, dfc_core.getUnlocalizedName()); - - //Missile Blocks - GameRegistry.registerBlock(machine_missile_assembly, machine_missile_assembly.getUnlocalizedName()); - GameRegistry.registerBlock(launch_pad, launch_pad.getUnlocalizedName()); - GameRegistry.registerBlock(launch_pad_rusted, launch_pad_rusted.getUnlocalizedName()); - GameRegistry.registerBlock(launch_pad_large, launch_pad_large.getUnlocalizedName()); - GameRegistry.registerBlock(compact_launcher, compact_launcher.getUnlocalizedName()); - GameRegistry.registerBlock(launch_table, launch_table.getUnlocalizedName()); - GameRegistry.registerBlock(soyuz_launcher, soyuz_launcher.getUnlocalizedName()); - GameRegistry.registerBlock(sat_dock, sat_dock.getUnlocalizedName()); - GameRegistry.registerBlock(soyuz_capsule, soyuz_capsule.getUnlocalizedName()); - GameRegistry.registerBlock(machine_radar, machine_radar.getUnlocalizedName()); - GameRegistry.registerBlock(machine_radar_large, machine_radar_large.getUnlocalizedName()); - GameRegistry.registerBlock(radar_screen, radar_screen.getUnlocalizedName()); - - //Guide - GameRegistry.registerBlock(book_guide, book_guide.getUnlocalizedName()); - - //Sat Blocks - GameRegistry.registerBlock(sat_mapper, sat_mapper.getUnlocalizedName()); - GameRegistry.registerBlock(sat_scanner, sat_scanner.getUnlocalizedName()); - GameRegistry.registerBlock(sat_radar, sat_radar.getUnlocalizedName()); - GameRegistry.registerBlock(sat_laser, sat_laser.getUnlocalizedName()); - GameRegistry.registerBlock(sat_foeq, sat_foeq.getUnlocalizedName()); - GameRegistry.registerBlock(sat_resonator, sat_resonator.getUnlocalizedName()); - - //Rails - GameRegistry.registerBlock(rail_wood, ItemBlockBase.class, rail_wood.getUnlocalizedName()); - GameRegistry.registerBlock(rail_narrow, ItemBlockBase.class, rail_narrow.getUnlocalizedName()); - GameRegistry.registerBlock(rail_highspeed, ItemBlockBase.class, rail_highspeed.getUnlocalizedName()); - GameRegistry.registerBlock(rail_booster, ItemBlockBase.class, rail_booster.getUnlocalizedName()); - register(rail_narrow_straight); - register(rail_narrow_curve); - register(rail_large_straight); - register(rail_large_straight_short); - register(rail_large_curve); - register(rail_large_curve_7); - register(rail_large_curve_9); - register(rail_large_ramp); - register(rail_large_buffer); - register(rail_large_switch); - register(rail_large_switch_flipped); - - //Crate - GameRegistry.registerBlock(crate, crate.getUnlocalizedName()); - GameRegistry.registerBlock(crate_weapon, crate_weapon.getUnlocalizedName()); - GameRegistry.registerBlock(crate_lead, crate_lead.getUnlocalizedName()); - GameRegistry.registerBlock(crate_metal, crate_metal.getUnlocalizedName()); - GameRegistry.registerBlock(crate_red, crate_red.getUnlocalizedName()); - GameRegistry.registerBlock(crate_can, crate_can.getUnlocalizedName()); - GameRegistry.registerBlock(crate_ammo, crate_ammo.getUnlocalizedName()); - GameRegistry.registerBlock(crate_jungle, crate_jungle.getUnlocalizedName()); - - //ElB - GameRegistry.registerBlock(statue_elb, statue_elb.getUnlocalizedName()); - GameRegistry.registerBlock(statue_elb_g, statue_elb_g.getUnlocalizedName()); - GameRegistry.registerBlock(statue_elb_w, statue_elb_w.getUnlocalizedName()); - GameRegistry.registerBlock(statue_elb_f, statue_elb_f.getUnlocalizedName()); - - //Fluids - GameRegistry.registerBlock(mud_block, mud_block.getUnlocalizedName()); - GameRegistry.registerBlock(acid_block, acid_block.getUnlocalizedName()); - GameRegistry.registerBlock(toxic_block, toxic_block.getUnlocalizedName()); - GameRegistry.registerBlock(schrabidic_block, schrabidic_block.getUnlocalizedName()); - GameRegistry.registerBlock(corium_block, corium_block.getUnlocalizedName()); - GameRegistry.registerBlock(volcanic_lava_block, volcanic_lava_block.getUnlocalizedName()); - GameRegistry.registerBlock(rad_lava_block, rad_lava_block.getUnlocalizedName()); - GameRegistry.registerBlock(sulfuric_acid_block, sulfuric_acid_block.getUnlocalizedName()); - //GameRegistry.registerBlock(concrete_liquid, concrete_liquid.getUnlocalizedName()); - - //Multiblock Dummy Blocks - GameRegistry.registerBlock(dummy_block_vault, dummy_block_vault.getUnlocalizedName()); - GameRegistry.registerBlock(dummy_block_blast, dummy_block_blast.getUnlocalizedName()); - GameRegistry.registerBlock(dummy_block_uf6, dummy_block_uf6.getUnlocalizedName()); - GameRegistry.registerBlock(dummy_block_puf6, dummy_block_puf6.getUnlocalizedName()); - GameRegistry.registerBlock(dummy_plate_compact_launcher, dummy_plate_compact_launcher.getUnlocalizedName()); - GameRegistry.registerBlock(dummy_port_compact_launcher, dummy_port_compact_launcher.getUnlocalizedName()); - GameRegistry.registerBlock(dummy_plate_launch_table, dummy_plate_launch_table.getUnlocalizedName()); - GameRegistry.registerBlock(dummy_port_launch_table, dummy_port_launch_table.getUnlocalizedName()); - GameRegistry.registerBlock(dummy_plate_cargo, dummy_plate_cargo.getUnlocalizedName()); - - //Other Technical Blocks - GameRegistry.registerBlock(oil_pipe, oil_pipe.getUnlocalizedName()); - GameRegistry.registerBlock(vent_chlorine, vent_chlorine.getUnlocalizedName()); - GameRegistry.registerBlock(vent_cloud, vent_cloud.getUnlocalizedName()); - GameRegistry.registerBlock(vent_pink_cloud, vent_pink_cloud.getUnlocalizedName()); - GameRegistry.registerBlock(vent_chlorine_seal, vent_chlorine_seal.getUnlocalizedName()); - GameRegistry.registerBlock(chlorine_gas, chlorine_gas.getUnlocalizedName()); - GameRegistry.registerBlock(gas_radon, gas_radon.getUnlocalizedName()); - GameRegistry.registerBlock(gas_radon_dense, gas_radon_dense.getUnlocalizedName()); - GameRegistry.registerBlock(gas_radon_tomb, gas_radon_tomb.getUnlocalizedName()); - GameRegistry.registerBlock(gas_meltdown, gas_meltdown.getUnlocalizedName()); - GameRegistry.registerBlock(gas_monoxide, gas_monoxide.getUnlocalizedName()); - GameRegistry.registerBlock(gas_asbestos, gas_asbestos.getUnlocalizedName()); - GameRegistry.registerBlock(gas_coal, gas_coal.getUnlocalizedName()); - GameRegistry.registerBlock(gas_flammable, gas_flammable.getUnlocalizedName()); - GameRegistry.registerBlock(gas_explosive, gas_explosive.getUnlocalizedName()); - GameRegistry.registerBlock(vacuum, vacuum.getUnlocalizedName()); - - //??? - GameRegistry.registerBlock(crystal_virus, crystal_virus.getUnlocalizedName()); - GameRegistry.registerBlock(crystal_hardened, crystal_hardened.getUnlocalizedName()); - GameRegistry.registerBlock(crystal_pulsar, crystal_pulsar.getUnlocalizedName()); - GameRegistry.registerBlock(taint, ItemTaintBlock.class, taint.getUnlocalizedName()); - GameRegistry.registerBlock(cheater_virus, cheater_virus.getUnlocalizedName()); - GameRegistry.registerBlock(cheater_virus_seed, cheater_virus_seed.getUnlocalizedName()); - GameRegistry.registerBlock(ntm_dirt, ntm_dirt.getUnlocalizedName()); - GameRegistry.registerBlock(pink_log, pink_log.getUnlocalizedName()); - GameRegistry.registerBlock(pink_planks, pink_planks.getUnlocalizedName()); - GameRegistry.registerBlock(pink_slab, pink_slab.getUnlocalizedName()); - GameRegistry.registerBlock(pink_double_slab, pink_double_slab.getUnlocalizedName()); - GameRegistry.registerBlock(pink_stairs, pink_stairs.getUnlocalizedName()); - } - - private static void register(Block b) { - GameRegistry.registerBlock(b, ItemBlockBase.class, b.getUnlocalizedName()); - } - - private static void register(Block b, Class clazz) { - GameRegistry.registerBlock(b, clazz, b.getUnlocalizedName()); - } - - public static void addRemap(String unloc, Block block, int meta) { - Block remap = new BlockRemap(block, meta).setBlockName(unloc); - register(remap, ItemBlockRemap.class); - } -} +package com.hbm.blocks; + +import com.hbm.blocks.BlockEnums.*; +import com.hbm.blocks.bomb.*; +import com.hbm.blocks.fluid.*; +import com.hbm.blocks.gas.*; +import com.hbm.blocks.generic.*; +import com.hbm.blocks.generic.BlockHazard.ExtDisplayEffect; +import com.hbm.blocks.machine.*; +import com.hbm.blocks.machine.albion.BlockPABeamline; +import com.hbm.blocks.machine.albion.BlockPADetector; +import com.hbm.blocks.machine.albion.BlockPADipole; +import com.hbm.blocks.machine.albion.BlockPAQuadrupole; +import com.hbm.blocks.machine.albion.BlockPARFC; +import com.hbm.blocks.machine.albion.BlockPASource; +import com.hbm.blocks.machine.pile.*; +import com.hbm.blocks.machine.rbmk.*; +import com.hbm.blocks.network.*; +import com.hbm.blocks.rail.*; +import com.hbm.blocks.test.TestCharge; +import com.hbm.blocks.test.TestCore; +import com.hbm.blocks.test.TestEventTester; +import com.hbm.blocks.test.TestObjTester; +import com.hbm.blocks.turret.*; +import com.hbm.items.block.*; +import com.hbm.items.bomb.ItemPrototypeBlock; +import com.hbm.items.special.ItemOreBlock; +import com.hbm.lib.ModDamageSource; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.DoorDecl; +import com.hbm.tileentity.machine.storage.TileEntityFileCabinet; +import cpw.mods.fml.common.registry.GameRegistry; +import net.minecraft.block.Block; +import net.minecraft.block.BlockFalling; +import net.minecraft.block.material.*; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidRegistry; + +import java.util.ArrayList; + +public class ModBlocks { + + public static void mainRegistry() + { + initializeBlock(); + registerBlock(); + } + + public static Block event_tester; + public static Block obj_tester; + public static Block test_core; + public static Block test_charge; + public static Block structure_anchor; + + public static Block ore_uranium; + public static Block ore_uranium_scorched; + public static Block ore_titanium; + public static Block ore_sulfur; + public static Block ore_thorium; + public static Block ore_niter; + public static Block ore_copper; + public static Block ore_tungsten; + public static Block ore_aluminium; + public static Block ore_fluorite; + public static Block ore_lead; + public static Block ore_schrabidium; + public static Block ore_beryllium; + public static Block ore_australium; + public static Block ore_rare; + public static Block ore_cobalt; + public static Block ore_cinnebar; + public static Block ore_coltan; + public static Block ore_alexandrite; + + public static Block ore_bedrock; + public static Block ore_volcano; + + public static Block ore_nether_coal; + public static Block ore_nether_smoldering; + public static Block ore_nether_uranium; + public static Block ore_nether_uranium_scorched; + public static Block ore_nether_plutonium; + public static Block ore_nether_tungsten; + public static Block ore_nether_sulfur; + public static Block ore_nether_fire; + public static Block ore_nether_cobalt; + public static Block ore_nether_schrabidium; + + public static Block ore_meteor; + + public static Block stone_gneiss; + public static Block ore_gneiss_iron; + public static Block ore_gneiss_gold; + public static Block ore_gneiss_uranium; + public static Block ore_gneiss_uranium_scorched; + public static Block ore_gneiss_copper; + public static Block ore_gneiss_asbestos; + public static Block ore_gneiss_lithium; + public static Block ore_gneiss_schrabidium; + public static Block ore_gneiss_rare; + public static Block ore_gneiss_gas; + + public static Block gneiss_brick; + public static Block gneiss_tile; + public static Block gneiss_chiseled; + + public static Block stone_depth; + public static Block ore_depth_cinnebar; + public static Block ore_depth_zirconium; + public static Block ore_depth_borax; + public static Block cluster_depth_iron; + public static Block cluster_depth_titanium; + public static Block cluster_depth_tungsten; + + public static Block stone_keyhole; + public static Block stone_keyhole_meta; + + public static Block stone_depth_nether; + public static Block ore_depth_nether_neodymium; + + public static Block stone_porous; + public static Block stone_resource; + public static Block stalagmite; + public static Block stalactite; + public static Block stone_biome; + + public static Block depth_brick; + public static Block depth_tiles; + public static Block depth_nether_brick; + public static Block depth_nether_tiles; + public static Block depth_dnt; + + public static Block basalt; + public static Block ore_basalt; + public static Block basalt_smooth; + public static Block basalt_brick; + public static Block basalt_polished; + public static Block basalt_tiles; + + public static Block cluster_iron; + public static Block cluster_titanium; + public static Block cluster_aluminium; + public static Block cluster_copper; + + public static Block ore_oil; + public static Block ore_oil_empty; + public static Block ore_oil_sand; + public static Block ore_bedrock_oil; + public static Block ore_lignite; + public static Block ore_asbestos; + @Deprecated public static Block ore_coal_oil; + @Deprecated public static Block ore_coal_oil_burning; + + public static Block ore_tikite; + + public static Block block_thorium; + public static Block block_thorium_fuel; + public static Block block_uranium; + public static Block block_u233; + public static Block block_u235; + public static Block block_u238; + public static Block block_uranium_fuel; + public static Block block_neptunium; + public static Block block_polonium; + public static Block block_mox_fuel; + public static Block block_plutonium; + public static Block block_pu238; + public static Block block_pu239; + public static Block block_pu240; + public static Block block_pu_mix; + public static Block block_plutonium_fuel; + public static Block block_titanium; + public static Block block_sulfur; + public static Block block_niter; + public static Block block_copper; + public static Block block_red_copper; + public static Block block_tungsten; + public static Block block_aluminium; + public static Block block_fluorite; + public static Block block_steel; + public static Block block_tcalloy; + public static Block block_cdalloy; + public static Block block_lead; + public static Block block_bismuth; + public static Block block_cadmium; + public static Block block_coltan; + public static Block block_tantalium; + public static Block block_niobium; + public static Block block_trinitite; + public static Block block_waste; + public static Block block_waste_painted; + public static Block block_waste_vitrified; + public static Block ancient_scrap; + public static Block block_corium; + public static Block block_corium_cobble; + public static Block block_scrap; + public static Block block_electrical_scrap; + public static Block block_beryllium; + public static Block block_schraranium; + public static Block block_schrabidium; + public static Block block_schrabidate; + public static Block block_solinium; + public static Block block_schrabidium_fuel; + public static Block block_euphemium; + public static Block block_schrabidium_cluster; + public static Block block_euphemium_cluster; + public static Block block_dineutronium; + public static Block block_advanced_alloy; + public static Block block_magnetized_tungsten; + public static Block block_combine_steel; + public static Block block_desh; + public static Block block_dura_steel; + public static Block block_starmetal; + public static Block block_polymer; + public static Block block_bakelite; + public static Block block_rubber; + public static Block block_yellowcake; + public static Block block_insulator; + public static Block block_fiberglass; + public static Block block_asbestos; + public static Block block_cobalt; + public static Block block_lithium; + public static Block block_zirconium; + public static Block block_white_phosphorus; + public static Block block_red_phosphorus; + public static Block block_fallout; + public static Block block_foam; + public static Block block_coke; + public static Block block_graphite; + public static Block block_graphite_drilled; + public static Block block_graphite_fuel; + public static Block block_graphite_plutonium; + public static Block block_graphite_rod; + public static Block block_graphite_source; + public static Block block_graphite_lithium; + public static Block block_graphite_tritium; + public static Block block_graphite_detector; + public static Block block_boron; + public static Block block_lanthanium; + public static Block block_ra226; + public static Block block_actinium; + public static Block block_tritium; + public static Block block_semtex; + public static Block block_c4; + public static Block block_smore; + public static Block block_slag; + + public static Block block_australium; + public static Block block_weidanium; + public static Block block_reiium; + public static Block block_unobtainium; + public static Block block_daffergon; + public static Block block_verticium; + + public static Block block_cap; + + public static Block deco_titanium; + public static Block deco_red_copper; + public static Block deco_tungsten; + public static Block deco_aluminium; + public static Block deco_steel; + public static Block deco_lead; + public static Block deco_beryllium; + public static Block deco_asbestos; + public static Block deco_rbmk; + public static Block deco_rbmk_smooth; + + public static Block deco_emitter; + public static Block part_emitter; + public static Block deco_loot; + public static Block pedestal; + public static Block bobblehead; + public static Block snowglobe; + public static Block plushie; + + public static Block gravel_obsidian; + public static Block gravel_diamond; + public static Block asphalt; + public static Block asphalt_light; + + public static Block reinforced_brick; + public static Block reinforced_ducrete; + public static Block reinforced_glass; + public static Block reinforced_glass_pane; + public static Block reinforced_light; + public static Block reinforced_sand; + public static Block reinforced_lamp_off; + public static Block reinforced_lamp_on; + public static Block reinforced_laminate; + public static Block reinforced_laminate_pane; + + public static Block lamp_tritium_green_off; + public static Block lamp_tritium_green_on; + public static Block lamp_tritium_blue_off; + public static Block lamp_tritium_blue_on; + + public static Block lamp_demon; + + public static Block lantern; + public static Block lantern_behemoth; + + public static Block spotlight_incandescent; + public static Block spotlight_incandescent_off; + public static Block spotlight_fluoro; + public static Block spotlight_fluoro_off; + public static Block spotlight_halogen; + public static Block spotlight_halogen_off; + public static Block spotlight_beam; + public static Block floodlight; + public static Block floodlight_beam; + + public static Block reinforced_stone; + public static Block concrete_smooth; + public static Block concrete_colored; + public static Block concrete_colored_ext; + public static Block concrete; + public static Block concrete_asbestos; + public static Block concrete_super; + public static Block concrete_super_broken; + public static Block ducrete_smooth; + public static Block ducrete; + public static Block concrete_pillar; + public static Block brick_concrete; + public static Block brick_concrete_mossy; + public static Block brick_concrete_cracked; + public static Block brick_concrete_broken; + public static Block brick_concrete_marked; + public static Block brick_ducrete; + public static Block brick_obsidian; + public static Block brick_light; + public static Block brick_compound; + public static Block brick_asbestos; + public static Block brick_fire; + + public static Block concrete_slab; + public static Block concrete_double_slab; + public static Block concrete_brick_slab; + public static Block concrete_brick_double_slab; + public static Block brick_slab; + public static Block brick_double_slab; + + public static Block concrete_smooth_stairs; + public static Block concrete_stairs; + public static Block concrete_asbestos_stairs; + public static Block ducrete_smooth_stairs; + public static Block ducrete_stairs; + public static Block brick_concrete_stairs; + public static Block brick_concrete_mossy_stairs; + public static Block brick_concrete_cracked_stairs; + public static Block brick_concrete_broken_stairs; + public static Block brick_ducrete_stairs; + public static Block reinforced_stone_stairs; + public static Block reinforced_brick_stairs; + public static Block brick_obsidian_stairs; + public static Block brick_light_stairs; + public static Block brick_compound_stairs; + public static Block brick_asbestos_stairs; + public static Block brick_fire_stairs; + public static Block asphalt_stairs; + + public static Block cmb_brick; + public static Block cmb_brick_reinforced; + + public static Block vinyl_tile; + + public static Block tile_lab; + public static Block tile_lab_cracked; + public static Block tile_lab_broken; + + public static Block block_meteor; + public static Block block_meteor_cobble; + public static Block block_meteor_broken; + public static Block block_meteor_molten; + public static Block block_meteor_treasure; + public static Block meteor_polished; + public static Block meteor_brick; + public static Block meteor_brick_mossy; + public static Block meteor_brick_cracked; + public static Block meteor_brick_chiseled; + public static Block meteor_pillar; + public static Block meteor_spawner; + public static Block meteor_battery; + + public static Block moon_turf; + + public static Block brick_jungle; + public static Block brick_jungle_cracked; + public static Block brick_jungle_fragile; + public static Block brick_jungle_lava; + public static Block brick_jungle_ooze; + public static Block brick_jungle_mystic; + public static Block brick_jungle_trap; + public static Block brick_jungle_glyph; + public static Block brick_jungle_circle; + + public static Block brick_red; + + public static Block deco_computer; + public static Block deco_crt; + public static Block deco_toaster; + + public static Block filing_cabinet; + + public static Block tape_recorder; + public static Block steel_poles; + public static Block pole_top; + public static Block pole_satellite_receiver; + public static Block steel_wall; + public static Block steel_corner; + public static Block steel_roof; + public static Block steel_beam; + public static Block steel_scaffold; + public static Block steel_grate; + public static Block steel_grate_wide; + + public static Block deco_pipe; + public static Block deco_pipe_rusted; + public static Block deco_pipe_green; + public static Block deco_pipe_green_rusted; + public static Block deco_pipe_red; + public static Block deco_pipe_marked; + public static Block deco_pipe_rim; + public static Block deco_pipe_rim_rusted; + public static Block deco_pipe_rim_green; + public static Block deco_pipe_rim_green_rusted; + public static Block deco_pipe_rim_red; + public static Block deco_pipe_rim_marked; + public static Block deco_pipe_framed; + public static Block deco_pipe_framed_rusted; + public static Block deco_pipe_framed_green; + public static Block deco_pipe_framed_green_rusted; + public static Block deco_pipe_framed_red; + public static Block deco_pipe_framed_marked; + public static Block deco_pipe_quad; + public static Block deco_pipe_quad_rusted; + public static Block deco_pipe_quad_green; + public static Block deco_pipe_quad_green_rusted; + public static Block deco_pipe_quad_red; + public static Block deco_pipe_quad_marked; + + public static Block broadcaster_pc; + public static Block geiger; + public static Block hev_battery; + + public static Block fence_metal; + + public static Block sand_boron; + public static Block sand_lead; + public static Block sand_uranium; + public static Block sand_polonium; + public static Block sand_quartz; + public static Block ash_digamma; + public static Block glass_boron; + public static Block glass_lead; + public static Block glass_uranium; + public static Block glass_trinitite; + public static Block glass_polonium; + public static Block glass_ash; + public static Block glass_quartz; + + public static Block mush; + public static Block mush_block; + public static Block mush_block_stem; + + public static Block glyphid_base; + public static Block glyphid_spawner; + + public static Block plant_flower; + public static Block plant_tall; + public static Block plant_dead; + public static Block reeds; + public static Block vine_phosphor; + public static final Material thick_foliage = new MaterialLogic(MapColor.foliageColor) { + @Override public boolean getCanBurn() { return true; } + @Override public boolean isToolNotRequired() { return false; } + @Override public int getMaterialMobility() { return 1; } + }; + + public static Block waste_earth; + public static Block waste_mycelium; + public static Block waste_trinitite; + public static Block waste_trinitite_red; + public static Block waste_log; + public static Block waste_leaves; + public static Block waste_planks; + public static Block frozen_dirt; + public static Block frozen_grass; + public static Block frozen_log; + public static Block frozen_planks; + public static Block dirt_dead; + public static Block dirt_oily; + public static Block sand_dirty; + public static Block sand_dirty_red; + public static Block stone_cracked; + public static Block burning_earth; + public static Block tektite; + public static Block ore_tektite_osmiridium; + public static Block impact_dirt; + + public static Block fallout; + public static Block foam_layer; + public static Block sand_boron_layer; + public static Block leaves_layer; + public static Block oil_spill; + + public static Block sellafield_slaked; + public static Block sellafield_bedrock; + public static Block sellafield; + public static Block ore_sellafield_diamond; + public static Block ore_sellafield_emerald; + public static Block ore_sellafield_uranium_scorched; + public static Block ore_sellafield_schrabidium; + public static Block ore_sellafield_radgem; + + public static Block geysir_water; + public static Block geysir_chlorine; + public static Block geysir_vapor; + public static Block geysir_nether; + + public static Block flame_war; + public static Block float_bomb; + public static Block therm_endo; + public static Block therm_exo; + public static Block emp_bomb; + public static Block det_cord; + public static Block det_charge; + public static Block det_nuke; + public static Block det_miner; + public static Block red_barrel; + public static Block pink_barrel; + public static Block yellow_barrel; + public static Block vitrified_barrel; + public static Block lox_barrel; + public static Block taint_barrel; + public static Block crashed_balefire; + public static Block fireworks; + public static Block dynamite; + public static Block tnt; + public static Block semtex; + public static Block c4; + public static Block fissure_bomb; + + public static Block charge_dynamite; + public static Block charge_miner; + public static Block charge_c4; + public static Block charge_semtex; + + public static Block mine_ap; + public static Block mine_he; + public static Block mine_shrap; + public static Block mine_fat; + + public static Block crate; + public static Block crate_weapon; + public static Block crate_lead; + public static Block crate_metal; + public static Block crate_red; + public static Block crate_can; + public static Block crate_ammo; + public static Block crate_jungle; + + public static Block boxcar; + public static Block boat; + + public static Block seal_frame; + public static Block seal_controller; + public static Block seal_hatch; + + public static Block vault_door; + public static Block blast_door; + public static Block sliding_blast_door; + public static Block fire_door; + public static Block transition_seal; + public static Block silo_hatch; + public static Block silo_hatch_large; + + // 1.12.2 Doors + public static Block secure_access_door; + public static Block large_vehicle_door; + public static Block qe_containment; + public static Block qe_sliding_door; + public static Block round_airlock_door; + public static Block sliding_seal_door; + public static Block water_door; + + public static Block door_metal; + public static Block door_office; + public static Block door_bunker; + public static Block door_red; + + public static Block barbed_wire; + public static Block barbed_wire_fire; + public static Block barbed_wire_poison; + public static Block barbed_wire_acid; + public static Block barbed_wire_wither; + public static Block barbed_wire_ultradeath; + public static Block spikes; + + public static Block charger; + + public static Block tesla; + + public static Block sat_mapper; + public static Block sat_scanner; + public static Block sat_radar; + public static Block sat_laser; + public static Block sat_foeq; + public static Block sat_resonator; + + public static Block sat_dock; + + public static Block soyuz_capsule; + public static Block crate_supply; + + public static Block crate_iron; + public static Block crate_steel; + public static Block crate_desh; + public static Block crate_tungsten; + public static Block crate_template; + public static Block safe; + public static Block mass_storage; + + public static Block nuke_gadget; + public static Block nuke_boy; + public static Block nuke_man; + public static Block nuke_mike; + public static Block nuke_tsar; + public static Block nuke_fleija; + public static Block nuke_prototype; + public static Block nuke_custom; + public static Block nuke_solinium; + public static Block nuke_n2; + public static Block nuke_fstbmb; + public static Block bomb_multi; + + public static Block pump_steam; + public static Block pump_electric; + + public static Block heater_firebox; + public static Block heater_oven; + 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; + public static Block furnace_combination; + public static Block machine_stirling; + public static Block machine_stirling_steel; + public static Block machine_stirling_creative; + public static Block machine_sawmill; + public static Block machine_crucible; + public static Block machine_boiler; + public static Block machine_industrial_boiler; + + public static Block foundry_mold; + public static Block foundry_basin; + public static Block foundry_channel; + public static Block foundry_tank; + public static Block foundry_outlet; + public static Block machine_strand_caster; + public static Block foundry_slagtap; + public static Block slag; + + public static Block machine_difurnace_off; + public static Block machine_difurnace_on; + public static Block machine_difurnace_extension; + public static Block machine_difurnace_rtg_off; + public static Block machine_difurnace_rtg_on; + //public static final int guiID_test_difurnace = 1; historical + + public static Block machine_centrifuge; + public static Block machine_gascent; + + public static Block machine_fel; + public static Block machine_silex; + + public static Block machine_rotary_furnace; + public static Block machine_crystallizer; + + public static Block machine_uf6_tank; + public static Block machine_puf6_tank; + + public static Block machine_reactor_breeding; + + public static Block machine_furnace_brick_off; + public static Block machine_furnace_brick_on; + public static Block machine_nuke_furnace_off; + public static Block machine_nuke_furnace_on; + public static Block machine_rtg_furnace_off; + public static Block machine_rtg_furnace_on; + + public static Block machine_industrial_generator; + + public static Block machine_cyclotron; + public static Block machine_exposure_chamber; + + public static Block hadron_plating; + public static Block hadron_plating_blue; + public static Block hadron_plating_black; + public static Block hadron_plating_yellow; + public static Block hadron_plating_striped; + public static Block hadron_plating_voltz; + public static Block hadron_plating_glass; + public static Block hadron_coil_alloy; + public static Block hadron_coil_gold; + public static Block hadron_coil_neodymium; + public static Block hadron_coil_magtung; + public static Block hadron_coil_schrabidium; + public static Block hadron_coil_schrabidate; + public static Block hadron_coil_starmetal; + public static Block hadron_coil_chlorophyte; + public static Block hadron_coil_mese; + public static Block hadron_power; + public static Block hadron_power_10m; + public static Block hadron_power_100m; + public static Block hadron_power_1g; + public static Block hadron_power_10g; + public static Block hadron_diode; + public static Block hadron_analysis; + public static Block hadron_analysis_glass; + public static Block hadron_access; + public static Block hadron_core; + public static Block hadron_cooler; + + public static Block pa_source; + public static Block pa_beamline; + public static Block pa_rfc; + public static Block pa_quadrupole; + public static Block pa_dipole; + public static Block pa_detector; + + public static Block machine_electric_furnace_off; + public static Block machine_electric_furnace_on; + + public static Block machine_microwave; + + public static Block machine_arc_furnace_off; + public static Block machine_arc_furnace_on; + + //public static Block machine_deuterium; + + public static Block machine_battery_potato; + public static Block machine_battery; + public static Block machine_lithium_battery; + public static Block machine_schrabidium_battery; + public static Block machine_dineutronium_battery; + public static Block machine_fensu; + public static final int guiID_machine_fensu = 99; + + public static Block capacitor_bus; + public static Block capacitor_copper; + public static Block capacitor_gold; + public static Block capacitor_niobium; + public static Block capacitor_tantalium; + public static Block capacitor_schrabidate; + + public static Block machine_wood_burner; + + public static Block red_wire_coated; + public static Block red_cable; + public static Block red_cable_classic; + public static Block red_cable_paintable; + public static Block red_cable_gauge; + public static Block red_connector; + public static Block red_pylon; + public static Block red_pylon_medium_wood; + public static Block red_pylon_medium_wood_transformer; + public static Block red_pylon_medium_steel; + public static Block red_pylon_medium_steel_transformer; + public static Block red_pylon_large; + public static Block substation; + public static Block cable_switch; + public static Block cable_detector; + public static Block cable_diode; + public static Block machine_detector; + public static Block fluid_duct_neo; + public static Block fluid_duct_box; + public static Block fluid_duct_paintable; + public static Block fluid_duct_gauge; + public static Block fluid_duct_exhaust; + public static Block fluid_valve; + public static Block fluid_switch; + public static Block machine_drain; + public static Block radio_torch_sender; + public static Block radio_torch_receiver; + public static Block radio_torch_counter; + public static Block radio_torch_logic; + public static Block radio_telex; + + public static Block conveyor; + public static Block conveyor_express; + //public static Block conveyor_classic; + public static Block conveyor_double; + public static Block conveyor_triple; + public static Block conveyor_chute; + public static Block conveyor_lift; + public static Block crane_extractor; + public static Block crane_inserter; + public static Block crane_grabber; + public static Block crane_router; + public static Block crane_boxer; + public static Block crane_unboxer; + public static Block crane_splitter; + public static Block crane_partitioner; + + public static Block drone_waypoint; + public static Block drone_crate; + public static Block drone_waypoint_request; + public static Block drone_dock; + public static Block drone_crate_provider; + public static Block drone_crate_requester; + + public static Block fan; + + public static Block piston_inserter; + + public static Block chain; + + public static Block ladder_sturdy; + public static Block ladder_iron; + public static Block ladder_gold; + public static Block ladder_aluminium; + public static Block ladder_copper; + public static Block ladder_titanium; + public static Block ladder_lead; + public static Block ladder_cobalt; + public static Block ladder_steel; + public static Block ladder_tungsten; + + public static Block barrel_plastic; + public static Block barrel_corroded; + public static Block barrel_iron; + public static Block barrel_steel; + public static Block barrel_tcalloy; + public static Block barrel_antimatter; + + public static Block machine_transformer; + public static Block machine_transformer_20; + public static Block machine_transformer_dnt; + public static Block machine_transformer_dnt_20; + + public static Block bomb_multi_large; + public static final int guiID_bomb_multi_large = 18; + + public static Block machine_solar_boiler; + public static final int guiID_solar_boiler = 18; + public static Block solar_mirror; + + public static Block struct_launcher; + public static Block struct_scaffold; + public static Block struct_launcher_core; + public static Block struct_launcher_core_large; + public static Block struct_soyuz_core; + public static Block struct_iter_core; + public static Block struct_plasma_core; + public static Block struct_watz_core; + public static Block struct_icf_core; + + public static Block factory_titanium_hull; + public static Block factory_advanced_hull; + + public static Block cm_block; + public static Block cm_sheet; + public static Block cm_engine; + public static Block cm_tank; + public static Block cm_circuit; + public static Block cm_port; + public static Block cm_flux; + public static Block cm_heat; + public static Block custom_machine; + public static Block cm_anchor; + + public static Block pwr_fuel; + public static Block pwr_control; + public static Block pwr_channel; + public static Block pwr_heatex; + public static Block pwr_heatsink; + public static Block pwr_neutron_source; + public static Block pwr_reflector; + public static Block pwr_casing; + public static Block pwr_port; + public static Block pwr_controller; + public static Block pwr_block; + + public static Block fusion_conductor; + public static Block fusion_center; + public static Block fusion_motor; + public static Block fusion_heater; + public static Block fusion_hatch; + public static Block plasma; + + public static Block iter; + public static Block plasma_heater; + + public static Block machine_icf_press; + public static Block icf_component; + public static Block icf; + public static Block icf_controller; + public static Block icf_laser_component; + public static Block icf_block; + + public static Block watz; + public static Block watz_pump; + + public static Block watz_element; + public static Block watz_cooler; + public static Block watz_end; + + public static Block balefire; + public static Block fire_digamma; + public static Block digamma_matter; + + public static Block dfc_emitter; + public static Block dfc_injector; + public static Block dfc_receiver; + public static Block dfc_stabilizer; + public static Block dfc_core; + + public static Block machine_converter_he_rf; + public static Block machine_converter_rf_he; + + public static Block machine_schrabidium_transmutator; + + public static Block machine_diesel; + public static Block machine_combustion_engine; + + public static Block machine_shredder; + + public static Block machine_teleporter; + public static Block teleanchor; + public static Block field_disturber; + + public static Block machine_rtg_grey; + public static Block machine_amgen; + public static Block machine_geo; + public static Block machine_minirtg; + public static Block machine_powerrtg; + public static Block machine_radiolysis; + public static Block machine_hephaestus; + + public static Block machine_well; + public static Block oil_pipe; + public static Block machine_pumpjack; + public static Block machine_fracking_tower; + + public static Block machine_flare; + public static Block chimney_brick; + public static Block chimney_industrial; + + public static Block machine_refinery; + public static Block machine_vacuum_distill; + public static Block machine_fraction_tower; + public static Block fraction_spacer; + public static Block machine_catalytic_cracker; + public static Block machine_catalytic_reformer; + public static Block machine_hydrotreater; + public static Block machine_coker; + public static Block machine_pyrooven; + + public static Block machine_boiler_off; + + public static Block machine_steam_engine; + public static Block machine_turbine; + public static Block machine_large_turbine; + + public static Block machine_deuterium_extractor; + public static Block machine_deuterium_tower; + + public static Block machine_liquefactor; + public static Block machine_solidifier; + public static Block machine_compressor; + + public static Block machine_chungus; + public static Block machine_condenser; + public static Block machine_tower_small; + public static Block machine_tower_large; + public static Block machine_condenser_powered; + + public static Block machine_electrolyser; + + public static Block machine_excavator; + public static Block machine_ore_slopper; + public static Block machine_autosaw; + + public static Block machine_mining_laser; + public static Block barricade; // a sand bag that drops nothing, for automated walling purposes + + public static Block machine_assembler; + public static Block machine_assemfac; + public static Block machine_arc_welder; + public static Block machine_soldering_station; + public static Block machine_arc_furnace; + + public static Block machine_chemplant; + public static Block machine_chemfac; + public static Block machine_mixer; + + public static Block machine_fluidtank; + public static Block machine_bat9000; + public static Block machine_orbus; + + public static Block launch_pad; + public static Block launch_pad_rusted; + public static Block launch_pad_large; + + public static Block machine_missile_assembly; + + public static Block compact_launcher; + public static Block launch_table; + + public static Block soyuz_launcher; + + public static Block machine_radar; + public static Block machine_radar_large; + public static Block radar_screen; + + public static Block machine_turbofan; + public static Block machine_turbinegas; + public static Block machine_lpw2; + + public static Block press_preheater; + public static Block machine_press; + public static Block machine_epress; + public static Block machine_conveyor_press; + public static Block machine_ammo_press; + + public static Block machine_siren; + + public static Block machine_radgen; + + public static Block machine_satlinker; + public static Block machine_keyforge; + + public static Block machine_armor_table; + + public static Block reactor_research; + public static Block reactor_zirnox; + public static Block zirnox_destroyed; + + public static Block machine_controller; + + public static Block machine_spp_bottom; + public static Block machine_spp_top; + + public static Block radiobox; + public static Block radiorec; + + public static Block machine_forcefield; + + public static Block machine_waste_drum; + public static Block machine_storage_drum; + + public static Block machine_autocrafter; + public static Block machine_funnel; + + public static Block anvil_iron; + public static Block anvil_lead; + public static Block anvil_steel; + public static Block anvil_desh; + public static Block anvil_ferrouranium; + public static Block anvil_saturnite; + public static Block anvil_bismuth_bronze; + public static Block anvil_arsenic_bronze; + public static Block anvil_schrabidate; + public static Block anvil_dnt; + public static Block anvil_osmiridium; + public static Block anvil_murky; + + public static Block turret_chekhov; + public static Block turret_friendly; + public static Block turret_jeremy; + public static Block turret_tauon; + public static Block turret_richard; + public static Block turret_howard; + public static Block turret_howard_damaged; + public static Block turret_maxwell; + public static Block turret_fritz; + public static Block turret_arty; + public static Block turret_himars; + public static Block turret_sentry; + public static Block turret_sentry_damaged; + + public static Block rbmk_rod; + public static Block rbmk_rod_mod; + public static Block rbmk_rod_reasim; + public static Block rbmk_rod_reasim_mod; + public static Block rbmk_control; + public static Block rbmk_control_mod; + public static Block rbmk_control_auto; + public static Block rbmk_blank; + public static Block rbmk_boiler; + public static Block rbmk_reflector; + public static Block rbmk_absorber; + public static Block rbmk_moderator; + public static Block rbmk_outgasser; + public static Block rbmk_storage; + public static Block rbmk_cooler; + public static Block rbmk_heater; + public static Block rbmk_console; + public static Block rbmk_crane_console; + public static Block rbmk_loader; + public static Block rbmk_steam_inlet; + public static Block rbmk_steam_outlet; + public static Block pribris; + public static Block pribris_burning; + public static Block pribris_radiating; + public static Block pribris_digamma; + + public static Block book_guide; + + public static Block rail_wood; + public static Block rail_narrow; + public static Block rail_highspeed; + public static Block rail_booster; + + public static Block rail_narrow_straight; + public static Block rail_narrow_curve; + public static Block rail_large_straight; + public static Block rail_large_straight_short; + public static Block rail_large_curve; + public static Block rail_large_curve_7; + public static Block rail_large_curve_9; + public static Block rail_large_ramp; + public static Block rail_large_buffer; + public static Block rail_large_switch; + public static Block rail_large_switch_flipped; + + public static Block statue_elb_f; + + public static Block cheater_virus; + public static Block cheater_virus_seed; + public static Block crystal_virus; + public static Block crystal_hardened; + public static Block crystal_pulsar; + public static Block taint; + + public static Block vent_chlorine; + public static Block vent_cloud; + public static Block vent_pink_cloud; + public static Block vent_chlorine_seal; + public static Block chlorine_gas; + + public static Block gas_radon; + public static Block gas_radon_dense; + public static Block gas_radon_tomb; + public static Block gas_meltdown; + public static Block gas_monoxide; + public static Block gas_asbestos; + public static Block gas_coal; + public static Block gas_flammable; + public static Block gas_explosive; + public static Block vacuum; + + public static Block absorber; + public static Block absorber_red; + public static Block absorber_green; + public static Block absorber_pink; + public static Block decon; + public static Block transission_hatch; + + public static Block mud_block; + public static Fluid mud_fluid; + public static final Material fluidmud = (new MaterialLiquid(MapColor.adobeColor)); + + public static Block acid_block; + public static Fluid acid_fluid; + public static final Material fluidacid = (new MaterialLiquid(MapColor.purpleColor)); + + public static Block toxic_block; + public static Fluid toxic_fluid; + public static final Material fluidtoxic = (new MaterialLiquid(MapColor.greenColor)); + + public static Block schrabidic_block; + public static Fluid schrabidic_fluid; + public static final Material fluidschrabidic = (new MaterialLiquid(MapColor.cyanColor)); + + public static Block corium_block; + public static Fluid corium_fluid; + public static final Material fluidcorium = (new MaterialLiquid(MapColor.brownColor) { + + @Override + public boolean blocksMovement() { + return true; + } + + @Override + public Material setImmovableMobility() { //override access modifier + return super.setImmovableMobility(); + } + + }.setImmovableMobility()); + + public static Block volcanic_lava_block; + public static Fluid volcanic_lava_fluid; + public static Block rad_lava_block; + public static Fluid rad_lava_fluid; + + public static Block sulfuric_acid_block; + public static Fluid sulfuric_acid_fluid; + + public static Block concrete_liquid; + + public static Block volcano_core; + public static Block volcano_rad_core; + + public static Block dummy_block_vault; + public static Block dummy_block_blast; + public static Block dummy_plate_compact_launcher; + public static Block dummy_port_compact_launcher; + public static Block dummy_plate_launch_table; + public static Block dummy_port_launch_table; + public static Block dummy_plate_cargo; + + public static Block ntm_dirt; + + public static Block pink_log; + public static Block pink_planks; + public static Block pink_slab; + public static Block pink_double_slab; + public static Block pink_stairs; + + public static Material materialGas = new MaterialGas(); + + private static void initializeBlock() { + + event_tester = new TestEventTester(Material.iron).setBlockName("event_tester").setCreativeTab(null).setHardness(2.5F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":event_tester"); + obj_tester = new TestObjTester(Material.iron).setBlockName("obj_tester").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F); + test_core = new TestCore(Material.iron).setBlockName("test_core").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":test_core"); + test_charge = new TestCharge(Material.iron).setBlockName("test_charge").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F); + structure_anchor = new BlockGeneric(Material.iron).setBlockName("structure_anchor").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":structure_anchor"); + + ore_uranium = new BlockOutgas(Material.rock, true, 5, true).setBlockName("ore_uranium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_uranium"); + ore_uranium_scorched = new BlockOutgas(Material.rock, true, 5, true).setBlockName("ore_uranium_scorched").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_uranium_scorched"); + ore_titanium = new BlockGeneric(Material.rock).setBlockName("ore_titanium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_titanium"); + ore_sulfur = new BlockOre(Material.rock).setBlockName("ore_sulfur").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_sulfur"); + ore_thorium = new BlockGeneric(Material.rock).setBlockName("ore_thorium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_thorium"); + + ore_niter = new BlockOre(Material.rock).setBlockName("ore_niter").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_niter"); + ore_copper = new BlockGeneric(Material.rock).setBlockName("ore_copper").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_copper"); + ore_tungsten = new BlockGeneric(Material.rock).setBlockName("ore_tungsten").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_tungsten"); + ore_aluminium = new BlockGeneric(Material.rock).setBlockName("ore_aluminium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_aluminium"); + ore_fluorite = new BlockOre(Material.rock).setBlockName("ore_fluorite").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_fluorite"); + ore_lead = new BlockGeneric(Material.rock).setBlockName("ore_lead").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_lead"); + ore_schrabidium = new BlockOre(Material.rock, 0.1F, 0.5F).setBlockName("ore_schrabidium").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":ore_schrabidium"); + ore_beryllium = new BlockGeneric(Material.rock).setBlockName("ore_beryllium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":ore_beryllium"); + ore_lignite = new BlockOre(Material.rock).setBlockName("ore_lignite").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":ore_lignite"); + ore_asbestos = new BlockOutgas(Material.rock, true, 5, true).setBlockName("ore_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":ore_asbestos"); + ore_coal_oil = new BlockCoalOil(Material.rock).setBlockName("ore_coal_oil").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":ore_coal_oil"); + ore_coal_oil_burning = new BlockCoalBurning(Material.rock).setBlockName("ore_coal_oil_burning").setCreativeTab(MainRegistry.blockTab).setLightLevel(10F/15F).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":ore_coal_oil_burning"); + + cluster_iron = new BlockCluster(Material.rock).setBlockName("cluster_iron").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":cluster_iron"); + cluster_titanium = new BlockCluster(Material.rock).setBlockName("cluster_titanium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":cluster_titanium"); + cluster_aluminium = new BlockCluster(Material.rock).setBlockName("cluster_aluminium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":cluster_aluminium"); + cluster_copper = new BlockCluster(Material.rock).setBlockName("cluster_copper").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":cluster_copper"); + + ore_nether_coal = new BlockNetherCoal(Material.rock, false, 5, true).setBlockName("ore_nether_coal").setCreativeTab(MainRegistry.blockTab).setLightLevel(10F/15F).setHardness(0.4F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_coal"); + ore_nether_smoldering = new BlockSmolder(Material.rock).setBlockName("ore_nether_smoldering").setCreativeTab(MainRegistry.blockTab).setLightLevel(1F).setHardness(0.4F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_smoldering"); + ore_nether_uranium = new BlockOutgas(Material.rock, true, 5, true).setBlockName("ore_nether_uranium").setCreativeTab(MainRegistry.blockTab).setHardness(0.4F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_uranium"); + ore_nether_uranium_scorched = new BlockOutgas(Material.rock, true, 5, true).setBlockName("ore_nether_uranium_scorched").setCreativeTab(MainRegistry.blockTab).setHardness(0.4F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_uranium_scorched"); + ore_nether_plutonium = new BlockGeneric(Material.rock).setBlockName("ore_nether_plutonium").setCreativeTab(MainRegistry.blockTab).setHardness(0.4F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_plutonium"); + ore_nether_tungsten = new BlockGeneric(Material.rock).setBlockName("ore_nether_tungsten").setCreativeTab(MainRegistry.blockTab).setHardness(0.4F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_tungsten"); + ore_nether_sulfur = new BlockOre(Material.rock).setBlockName("ore_nether_sulfur").setCreativeTab(MainRegistry.blockTab).setHardness(0.4F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_sulfur"); + ore_nether_fire = new BlockOre(Material.rock).setBlockName("ore_nether_fire").setCreativeTab(MainRegistry.blockTab).setHardness(0.4F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_fire"); + ore_nether_cobalt = new BlockOre(Material.rock).setBlockName("ore_nether_cobalt").setCreativeTab(MainRegistry.blockTab).setHardness(0.4F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_cobalt"); + ore_nether_schrabidium = new BlockGeneric(Material.rock).setBlockName("ore_nether_schrabidium").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":ore_nether_schrabidium"); + + ore_meteor = new BlockMeteorOre().setBlockName("ore_meteor").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); + + stone_gneiss = new BlockGeneric(Material.rock).setBlockName("stone_gneiss").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":stone_gneiss_var"); + ore_gneiss_iron = new BlockOre(Material.rock).setBlockName("ore_gneiss_iron").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_gneiss_iron"); + ore_gneiss_gold = new BlockOre(Material.rock).setBlockName("ore_gneiss_gold").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_gneiss_gold"); + ore_gneiss_uranium = new BlockOutgas(Material.rock, true, 5, true).setBlockName("ore_gneiss_uranium").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_gneiss_uranium"); + ore_gneiss_uranium_scorched = new BlockOutgas(Material.rock, true, 5, true).setBlockName("ore_gneiss_uranium_scorched").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_gneiss_uranium_scorched"); + ore_gneiss_copper = new BlockOre(Material.rock).setBlockName("ore_gneiss_copper").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_gneiss_copper"); + ore_gneiss_asbestos = new BlockOutgas(Material.rock, true, 5, true).setBlockName("ore_gneiss_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_gneiss_asbestos"); + ore_gneiss_lithium = new BlockOre(Material.rock).setBlockName("ore_gneiss_lithium").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_gneiss_lithium"); + ore_gneiss_schrabidium = new BlockOre(Material.rock).setBlockName("ore_gneiss_schrabidium").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_gneiss_schrabidium"); + ore_gneiss_rare = new BlockOre(Material.rock).setBlockName("ore_gneiss_rare").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_gneiss_rare"); + ore_gneiss_gas = new BlockOre(Material.rock).setBlockName("ore_gneiss_gas").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_gneiss_gas"); + + gneiss_brick = new BlockGeneric(Material.rock).setBlockName("gneiss_brick").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":gneiss_brick"); + gneiss_tile = new BlockGeneric(Material.rock).setBlockName("gneiss_tile").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":gneiss_tile"); + gneiss_chiseled = new BlockPillar(Material.rock, RefStrings.MODID + ":gneiss_tile").setBlockName("gneiss_chiseled").setCreativeTab(MainRegistry.blockTab).setHardness(1.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":gneiss_chiseled"); + + stone_depth = new BlockDepth().setBlockName("stone_depth").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":stone_depth"); + ore_depth_cinnebar = new BlockDepthOre().setBlockName("ore_depth_cinnebar").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ore_depth_cinnebar"); + ore_depth_zirconium = new BlockDepthOre().setBlockName("ore_depth_zirconium").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ore_depth_zirconium"); + ore_depth_borax = new BlockDepthOre().setBlockName("ore_depth_borax").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ore_depth_borax"); + cluster_depth_iron = new BlockDepthOre().setBlockName("cluster_depth_iron").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":cluster_depth_iron"); + cluster_depth_titanium = new BlockDepthOre().setBlockName("cluster_depth_titanium").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":cluster_depth_titanium"); + cluster_depth_tungsten = new BlockDepthOre().setBlockName("cluster_depth_tungsten").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":cluster_depth_tungsten"); + ore_alexandrite = new BlockDepthOre().setBlockName("ore_alexandrite").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ore_alexandrite"); + + stone_keyhole = new BlockKeyhole().setBlockName("stone_keyhole").setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":stone_keyhole"); + stone_keyhole_meta = new BlockRedBrickKeyhole(Material.rock).setCreativeTab(null).setBlockName("stone_keyhole_meta").setResistance(10_000); + + ore_bedrock = new BlockBedrockOreTE().setBlockName("ore_bedrock").setCreativeTab(null); + ore_volcano = new BlockFissure().setBlockName("ore_volcano").setLightLevel(1F).setCreativeTab(MainRegistry.blockTab); + + depth_brick = new BlockDepth().setBlockName("depth_brick").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":depth_brick"); + depth_tiles = new BlockDepth().setBlockName("depth_tiles").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":depth_tiles"); + depth_nether_brick = new BlockDepth().setBlockName("depth_nether_brick").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":depth_nether_brick"); + depth_nether_tiles = new BlockDepth().setBlockName("depth_nether_tiles").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":depth_nether_tiles"); + depth_dnt = new BlockDepth().setBlockName("depth_dnt").setCreativeTab(MainRegistry.blockTab).setResistance(60000.0F).setBlockTextureName(RefStrings.MODID + ":depth_dnt"); + + stone_depth_nether = new BlockDepth().setBlockName("stone_depth_nether").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":stone_depth_nether"); + ore_depth_nether_neodymium = new BlockDepthOre().setBlockName("ore_depth_nether_neodymium").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ore_depth_nether_neodymium"); + + stone_porous = new BlockPorous().setBlockName("stone_porous").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":stone_porous"); + stone_resource = new BlockResourceStone().setBlockName("stone_resource").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); + stalagmite = new BlockStalagmite().setBlockName("stalagmite").setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.0F); + stalactite = new BlockStalagmite().setBlockName("stalactite").setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.0F); + stone_biome = new BlockBiomeStone().setBlockName("stone_biome").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); + + basalt = new BlockPillar(Material.rock, RefStrings.MODID + ":basalt_top").setBlockName("basalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt"); + ore_basalt = new BlockOreBasalt().setBlockName("ore_basalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_basalt"); + basalt_smooth = new BlockGeneric(Material.rock).setBlockName("basalt_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_smooth"); + basalt_brick = new BlockGeneric(Material.rock).setBlockName("basalt_brick").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_brick"); + basalt_polished = new BlockGeneric(Material.rock).setBlockName("basalt_polished").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_polished"); + basalt_tiles = new BlockGeneric(Material.rock).setBlockName("basalt_tiles").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_tiles"); + + ore_australium = new BlockGeneric(Material.rock).setBlockName("ore_australium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_australium"); + ore_rare = new BlockOre(Material.rock).setBlockName("ore_rare").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_rare"); + ore_cobalt = new BlockOre(Material.rock).setBlockName("ore_cobalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_cobalt"); + ore_cinnebar = new BlockOre(Material.rock).setBlockName("ore_cinnebar").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_cinnebar"); + ore_coltan = new BlockOre(Material.rock).setBlockName("ore_coltan").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_coltan"); + + ore_oil = new BlockOre(Material.rock).setBlockName("ore_oil").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_oil"); + ore_oil_empty = new BlockGeneric(Material.rock).setBlockName("ore_oil_empty").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_oil_empty"); + ore_oil_sand = new BlockFalling(Material.sand).setBlockName("ore_oil_sand").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeSand).setHardness(0.5F).setResistance(1.0F).setBlockTextureName(RefStrings.MODID + ":ore_oil_sand_alt"); + ore_bedrock_oil = new BlockGeneric(Material.rock).noMobSpawn().setBlockName("ore_bedrock_oil").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(1_000_000).setBlockTextureName(RefStrings.MODID + ":ore_bedrock_oil"); + + ore_tikite = new BlockDragonProof(Material.rock).setBlockName("ore_tikite").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_tikite_alt"); + + block_uranium = new BlockHazard().makeBeaconable().setBlockName("block_uranium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_uranium"); + block_u233 = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_u233").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_u233"); + block_u235 = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_u235").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_u235"); + block_u238 = new BlockHazard().makeBeaconable().setBlockName("block_u238").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_u238"); + block_uranium_fuel = new BlockHazard().makeBeaconable().setBlockName("block_uranium_fuel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_uranium_fuel"); + block_thorium = new BlockHazard().makeBeaconable().setBlockName("block_thorium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_thorium"); + block_thorium_fuel = new BlockHazard().makeBeaconable().setBlockName("block_thorium_fuel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_thorium_fuel"); + block_neptunium = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_neptunium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":block_neptunium"); + block_polonium = new BlockHotHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_polonium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_polonium"); + block_mox_fuel = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_mox_fuel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_mox_fuel"); + block_plutonium = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_plutonium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_plutonium"); + block_pu238 = new BlockHotHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_pu238").setCreativeTab(MainRegistry.blockTab).setLightLevel(5F/15F).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_pu238"); + block_pu239 = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_pu239").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_pu239"); + block_pu240 = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_pu240").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_pu240"); + block_pu_mix = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_pu_mix").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_pu_mix"); + block_plutonium_fuel = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_plutonium_fuel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_plutonium_fuel"); + block_titanium = new BlockBeaconable(Material.iron).setBlockName("block_titanium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_titanium"); + block_sulfur = new BlockBeaconable(Material.iron).setBlockName("block_sulfur").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_sulfur"); + block_niter = new BlockBeaconable(Material.iron).setBlockName("block_niter").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_niter"); + block_copper = new BlockBeaconable(Material.iron).setBlockName("block_copper").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":block_copper"); + block_red_copper = new BlockBeaconable(Material.iron).setBlockName("block_red_copper").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(25.0F).setBlockTextureName(RefStrings.MODID + ":block_red_copper"); + block_tungsten = new BlockBeaconable(Material.iron).setBlockName("block_tungsten").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":block_tungsten"); + block_aluminium = new BlockBeaconable(Material.iron).setBlockName("block_aluminium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":block_aluminium"); + block_fluorite = new BlockBeaconable(Material.iron).setBlockName("block_fluorite").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_fluorite"); + block_steel = new BlockBeaconable(Material.iron).setBlockName("block_steel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); + block_tcalloy = new BlockBeaconable(Material.iron).setBlockName("block_tcalloy").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(70.0F).setBlockTextureName(RefStrings.MODID + ":block_tcalloy"); + block_cdalloy = new BlockBeaconable(Material.iron).setBlockName("block_cdalloy").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(70.0F).setBlockTextureName(RefStrings.MODID + ":block_cdalloy"); + block_lead = new BlockBeaconable(Material.iron).setBlockName("block_lead").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_lead"); + block_bismuth = new BlockBeaconable(Material.iron).setBlockName("block_bismuth").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(90.0F).setBlockTextureName(RefStrings.MODID + ":block_bismuth"); + block_cadmium = new BlockBeaconable(Material.iron).setBlockName("block_cadmium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(90.0F).setBlockTextureName(RefStrings.MODID + ":block_cadmium"); + block_coltan = new BlockBeaconable(Material.iron).setBlockName("block_coltan").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_coltan"); + block_tantalium = new BlockBeaconable(Material.iron).setBlockName("block_tantalium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_tantalium"); + block_niobium = new BlockBeaconable(Material.iron).setBlockName("block_niobium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(50.0F); + block_trinitite = new BlockHazard().makeBeaconable().setBlockName("block_trinitite").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_trinitite"); + block_waste = new BlockNuclearWaste().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_waste").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_waste"); + block_waste_painted = new BlockNuclearWaste().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_waste_painted").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_waste_painted"); + block_waste_vitrified = new BlockNuclearWaste().makeBeaconable().setDisplayEffect(ExtDisplayEffect.RADFOG).setBlockName("block_waste_vitrified").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_waste_vitrified"); + ancient_scrap = new BlockOutgas(Material.iron, true, 1, true, true).setBlockName("ancient_scrap").setCreativeTab(MainRegistry.blockTab).setHardness(100.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":ancient_scrap"); + block_corium = new BlockHazard(Material.iron).setBlockName("block_corium").setCreativeTab(MainRegistry.blockTab).setHardness(100.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":block_corium"); + block_corium_cobble = new BlockOutgas(Material.iron, true, 1, true, true).setBlockName("block_corium_cobble").setCreativeTab(MainRegistry.blockTab).setHardness(100.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":block_corium_cobble"); + block_scrap = new BlockFalling(Material.sand).setBlockName("block_scrap").setCreativeTab(MainRegistry.blockTab).setHardness(2.5F).setResistance(5.0F).setStepSound(Block.soundTypeGravel).setBlockTextureName(RefStrings.MODID + ":block_scrap"); + block_electrical_scrap = new BlockFalling(Material.iron).setBlockName("block_electrical_scrap").setCreativeTab(MainRegistry.blockTab).setHardness(2.5F).setResistance(5.0F).setStepSound(Block.soundTypeMetal).setBlockTextureName(RefStrings.MODID + ":electrical_scrap_alt2"); + block_beryllium = new BlockBeaconable(Material.iron).setBlockName("block_beryllium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":block_beryllium"); + block_schraranium = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.SCHRAB).setBlockName("block_schraranium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(250.0F).setBlockTextureName(RefStrings.MODID + ":block_schraranium"); + block_schrabidium = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.SCHRAB).setBlockName("block_schrabidium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_schrabidium"); + block_schrabidate = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.SCHRAB).setBlockName("block_schrabidate").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_schrabidate"); + block_solinium = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.SCHRAB).setBlockName("block_solinium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_solinium"); + block_schrabidium_fuel = new BlockHazard().makeBeaconable().setDisplayEffect(ExtDisplayEffect.SCHRAB).setBlockName("block_schrabidium_fuel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_schrabidium_fuel"); + block_euphemium = new BlockBeaconable(Material.iron).setBlockName("block_euphemium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(60000.0F).setBlockTextureName(RefStrings.MODID + ":block_euphemium"); + block_dineutronium = new BlockBeaconable(Material.iron).setBlockName("block_dineutronium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(60000.0F).setBlockTextureName(RefStrings.MODID + ":block_dineutronium"); + block_schrabidium_cluster = new BlockRotatablePillar(Material.rock, RefStrings.MODID + ":block_schrabidium_cluster_top").setBlockName("block_schrabidium_cluster").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(60000.0F).setBlockTextureName(RefStrings.MODID + ":block_schrabidium_cluster_side"); + block_euphemium_cluster = new BlockRotatablePillar(Material.rock, RefStrings.MODID + ":block_euphemium_cluster_top").setBlockName("block_euphemium_cluster").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(60000.0F).setBlockTextureName(RefStrings.MODID + ":block_euphemium_cluster_side"); + block_advanced_alloy = new BlockBeaconable(Material.iron).setBlockName("block_advanced_alloy").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":block_advanced_alloy"); + block_magnetized_tungsten = new BlockBeaconable(Material.iron).setBlockName("block_magnetized_tungsten").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(75.0F).setBlockTextureName(RefStrings.MODID + ":block_magnetized_tungsten"); + block_combine_steel = new BlockBeaconable(Material.iron).setBlockName("block_combine_steel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_combine_steel"); + block_desh = new BlockBeaconable(Material.iron).setBlockName("block_desh").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(300.0F).setBlockTextureName(RefStrings.MODID + ":block_desh"); + block_dura_steel = new BlockBeaconable(Material.iron).setBlockName("block_dura_steel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":block_dura_steel"); + block_starmetal = new BlockBeaconable(Material.iron).setBlockName("block_starmetal").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(400.0F).setBlockTextureName(RefStrings.MODID + ":block_starmetal"); + block_polymer = new BlockBeaconable(Material.rock).setBlockName("block_polymer").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypePiston).setHardness(3.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_polymer"); + block_bakelite = new BlockBeaconable(Material.rock).setBlockName("block_bakelite").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypePiston).setHardness(3.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":block_bakelite"); + block_rubber = new BlockBeaconable(Material.rock).setBlockName("block_rubber").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypePiston).setHardness(3.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":block_rubber"); + block_yellowcake = new BlockHazardFalling().makeBeaconable().setBlockName("block_yellowcake").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeSand).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_yellowcake"); + block_insulator = new BlockRotatablePillar(Material.cloth, RefStrings.MODID + ":block_insulator_top").setBlockName("block_insulator").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeCloth).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_insulator_side"); + block_fiberglass = new BlockRotatablePillar(Material.cloth, RefStrings.MODID + ":block_fiberglass_top").setBlockName("block_fiberglass").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeCloth).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":block_fiberglass_side"); + block_asbestos = new BlockOutgas(Material.cloth, true, 5, true).setBlockName("block_asbestos").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeCloth).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":block_asbestos"); + block_cobalt = new BlockBeaconable(Material.iron).setBlockName("block_cobalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(50.0F).setBlockTextureName(RefStrings.MODID + ":block_cobalt"); + block_lithium = new BlockLithium(Material.iron).setBlockName("block_lithium").setStepSound(Block.soundTypeMetal).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_lithium"); + block_zirconium = new BlockBeaconable(Material.iron).setBlockName("block_zirconium").setStepSound(Block.soundTypeMetal).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":block_zirconium"); + block_white_phosphorus = new BlockHazard(Material.rock).makeBeaconable().setBlockName("block_white_phosphorus").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_white_phosphorus"); + block_red_phosphorus = new BlockHazardFalling().makeBeaconable().setStepSound(Block.soundTypeSand).setBlockName("block_red_phosphorus").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_red_phosphorus"); + block_fallout = new BlockHazardFalling().setStepSound(Block.soundTypeGravel).setBlockName("block_fallout").setCreativeTab(MainRegistry.blockTab).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":ash"); + block_foam = new BlockGeneric(Material.craftedSnow).setBlockName("block_foam").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeSnow).setHardness(0.5F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":foam"); + block_coke = new BlockCoke().setBlockName("block_coke").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F); + block_graphite = new BlockGraphite(Material.iron, 30, 5).setBlockName("block_graphite").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F); + block_graphite_drilled = new BlockGraphiteDrilled().setBlockName("block_graphite_drilled"); + block_graphite_fuel = new BlockGraphiteFuel().setBlockName("block_graphite_fuel"); + block_graphite_plutonium = new BlockGraphiteSource().setBlockName("block_graphite_plutonium"); + block_graphite_rod = new BlockGraphiteRod().setBlockName("block_graphite_rod").setBlockTextureName(RefStrings.MODID + ":block_graphite_rod_in"); + block_graphite_source = new BlockGraphiteSource().setBlockName("block_graphite_source"); + block_graphite_lithium = new BlockGraphiteBreedingFuel().setBlockName("block_graphite_lithium"); + block_graphite_tritium = new BlockGraphiteBreedingProduct().setBlockName("block_graphite_tritium"); + block_graphite_detector = new BlockGraphiteNeutronDetector().setBlockName("block_graphite_detector"); + block_boron = new BlockBeaconable(Material.iron).setBlockName("block_boron").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_boron"); + block_lanthanium = new BlockBeaconable(Material.iron).setBlockName("block_lanthanium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_lanthanium"); + block_ra226 = new BlockHazard().makeBeaconable().setBlockName("block_ra226").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_ra226"); + block_actinium = new BlockHazard().makeBeaconable().setBlockName("block_actinium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_actinium"); + block_tritium = new BlockRotatablePillar(Material.glass, RefStrings.MODID + ":block_tritium_top").setBlockName("block_tritium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGlass).setHardness(3.0F).setResistance(2.0F).setBlockTextureName(RefStrings.MODID + ":block_tritium_side"); + block_semtex = new BlockPlasticExplosive(Material.tnt).setBlockName("block_semtex").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(2.0F).setBlockTextureName(RefStrings.MODID + ":block_semtex"); + block_c4 = new BlockPlasticExplosive(Material.tnt).setBlockName("block_c4").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(2.0F).setBlockTextureName(RefStrings.MODID + ":block_c4"); + block_smore = new BlockPillar(Material.rock, RefStrings.MODID + ":block_smore_top").setBlockName("block_smore").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":block_smore_side"); + block_slag = new BlockSlag(Material.rock).setBlockName("block_slag").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeStone).setHardness(2.0F).setBlockTextureName(RefStrings.MODID + ":block_slag"); + + block_australium = new BlockBeaconable(Material.iron).setBlockName("block_australium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_australium"); + block_weidanium = new BlockBeaconable(Material.iron).setBlockName("block_weidanium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_deprecated"); + block_reiium = new BlockBeaconable(Material.iron).setBlockName("block_reiium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_deprecated"); + block_unobtainium = new BlockBeaconable(Material.iron).setBlockName("block_unobtainium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_deprecated"); + block_daffergon = new BlockBeaconable(Material.iron).setBlockName("block_daffergon").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_deprecated"); + block_verticium = new BlockBeaconable(Material.iron).setBlockName("block_verticium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_deprecated"); + + block_cap = new BlockCap().setBlockName("block_cap").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); + + deco_titanium = new BlockOre(Material.iron).noFortune().setBlockName("deco_titanium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_titanium"); + deco_red_copper = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_red_copper").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_red_copper"); + deco_tungsten = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_tungsten").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_tungsten"); + deco_aluminium = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_aluminium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_aluminium"); + deco_steel = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_steel").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_steel"); + deco_lead = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_lead").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_lead"); + deco_beryllium = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_beryllium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_beryllium"); + deco_asbestos = new BlockOutgas(Material.cloth, true, 5, true).noFortune().setBlockName("deco_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_asbestos"); + deco_rbmk = new BlockGeneric(Material.iron).setBlockName("deco_rbmk").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_side"); + deco_rbmk_smooth = new BlockGeneric(Material.iron).setBlockName("deco_rbmk_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_top"); + + deco_emitter = new BlockEmitter().setBlockName("deco_emitter").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":emitter"); + part_emitter = new PartEmitter().setBlockName("part_emitter").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":part_top"); + deco_loot = new BlockLoot().setBlockName("deco_loot").setCreativeTab(null).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); + pedestal = new BlockPedestal().setBlockName("pedestal").setCreativeTab(null).setHardness(2.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":pedestal_top"); + bobblehead = new BlockBobble().setBlockName("bobblehead").setCreativeTab(MainRegistry.blockTab).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); + snowglobe = new BlockSnowglobe().setBlockName("snowglobe").setCreativeTab(MainRegistry.blockTab).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":glass_boron"); + plushie = new BlockPlushie().setBlockName("plushie").setStepSound(Block.soundTypeCloth).setResistance(50_0000.0F).setCreativeTab(MainRegistry.blockTab).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":block_fiberglass_side"); + + gravel_obsidian = new BlockFalling(Material.iron).setBlockName("gravel_obsidian").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGravel).setHardness(5.0F).setResistance(240.0F).setBlockTextureName(RefStrings.MODID + ":gravel_obsidian"); + gravel_diamond = new BlockFalling(Material.sand).setBlockName("gravel_diamond").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGravel).setHardness(0.6F).setBlockTextureName(RefStrings.MODID + ":gravel_diamond"); + asphalt = new BlockSpeedy(Material.rock, 1.5).setBlockName("asphalt").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(120.0F).setBlockTextureName(RefStrings.MODID + ":asphalt"); + asphalt_light = new BlockSpeedy(Material.rock, 1.5).setBlockName("asphalt_light").setCreativeTab(MainRegistry.blockTab).setLightLevel(1F).setHardness(15.0F).setResistance(120.0F).setBlockTextureName(RefStrings.MODID + ":asphalt_light"); + + reinforced_brick = new BlockGeneric(Material.rock).setBlockName("reinforced_brick").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(300.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_brick"); + reinforced_glass = new BlockNTMGlassCT(0, RefStrings.MODID + ":reinforced_glass", Material.rock).setBlockName("reinforced_glass").setCreativeTab(MainRegistry.blockTab).setLightOpacity(0).setHardness(2.0F).setResistance(25.0F); + reinforced_glass_pane = new BlockNTMGlassPane(0, RefStrings.MODID + ":reinforced_glass_pane", RefStrings.MODID + ":reinforced_glass_pane_edge", Material.rock, false).setBlockName("reinforced_glass_pane").setCreativeTab(MainRegistry.blockTab).setLightOpacity(1).setHardness(2.0F).setResistance(25.0F); + reinforced_light = new BlockGeneric(Material.rock).setBlockName("reinforced_light").setCreativeTab(MainRegistry.blockTab).setLightLevel(1.0F).setHardness(15.0F).setResistance(80.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_light"); + reinforced_sand = new BlockGeneric(Material.rock).setBlockName("reinforced_sand").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(40.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_sand"); + reinforced_lamp_off = new ReinforcedLamp(Material.rock, false).setBlockName("reinforced_lamp_off").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(80.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_lamp_off"); + reinforced_lamp_on = new ReinforcedLamp(Material.rock, true).setBlockName("reinforced_lamp_on").setHardness(15.0F).setResistance(80.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_lamp_on"); + reinforced_laminate = new BlockNTMGlassCT(1, RefStrings.MODID + ":reinforced_laminate", Material.rock, true).setBlockName("reinforced_laminate").setCreativeTab(MainRegistry.blockTab).setLightOpacity(0).setHardness(15.0F).setResistance(300.0F); + reinforced_laminate_pane = new BlockNTMGlassPane(1, RefStrings.MODID + ":reinforced_laminate_pane", RefStrings.MODID + ":reinforced_laminate_pane_edge", Material.rock, true).setBlockName("reinforced_laminate_pane").setCreativeTab(MainRegistry.blockTab).setLightOpacity(1).setHardness(15.0F).setResistance(300.0F); + + lamp_tritium_green_off = new TritiumLamp(Material.redstoneLight, false).setBlockName("lamp_tritium_green_off").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lamp_tritium_green_off"); + lamp_tritium_green_on = new TritiumLamp(Material.redstoneLight, true).setBlockName("lamp_tritium_green_on").setStepSound(Block.soundTypeGlass).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lamp_tritium_green_on"); + lamp_tritium_blue_off = new TritiumLamp(Material.redstoneLight, false).setBlockName("lamp_tritium_blue_off").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lamp_tritium_blue_off"); + lamp_tritium_blue_on = new TritiumLamp(Material.redstoneLight, true).setBlockName("lamp_tritium_blue_on").setStepSound(Block.soundTypeGlass).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lamp_tritium_blue_on"); + + 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 + ":block_steel"); + lantern_behemoth = new BlockLanternBehemoth().setBlockName("lantern_behemoth").setStepSound(Block.soundTypeMetal).setCreativeTab(null).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":block_rust"); + + spotlight_incandescent = new Spotlight(Material.iron, 2, LightType.INCANDESCENT, true).setBlockName("spotlight_incandescent").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":cage_lamp"); + spotlight_incandescent_off = new Spotlight(Material.iron, 2, LightType.INCANDESCENT, false).setBlockName("spotlight_incandescent_off").setBlockTextureName(RefStrings.MODID + ":cage_lamp_off"); + spotlight_fluoro = new SpotlightModular(Material.iron, 8, LightType.FLUORESCENT, true).setBlockName("spotlight_fluoro").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":fluorescent_lamp"); + spotlight_fluoro_off = new SpotlightModular(Material.iron, 8, LightType.FLUORESCENT, false).setBlockName("spotlight_fluoro_off").setBlockTextureName(RefStrings.MODID + ":fluorescent_lamp_off"); + spotlight_halogen = new Spotlight(Material.iron, 32, LightType.HALOGEN, true).setBlockName("spotlight_halogen").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":flood_lamp"); + spotlight_halogen_off = new Spotlight(Material.iron, 32, LightType.HALOGEN, false).setBlockName("spotlight_halogen_off").setBlockTextureName(RefStrings.MODID + ":flood_lamp_off"); + spotlight_beam = new SpotlightBeam().setBlockName("spotlight_beam"); + floodlight = new Floodlight(Material.iron).setBlockName("floodlight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + floodlight_beam = new FloodlightBeam().setBlockName("floodlight_beam"); + + reinforced_stone = new BlockGeneric(Material.rock).setBlockName("reinforced_stone").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_stone"); + concrete_smooth = new BlockRadResistant(Material.rock).setBlockName("concrete_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(140.0F).setBlockTextureName(RefStrings.MODID + ":concrete"); + concrete_colored = new BlockConcreteColored(Material.rock).setBlockName("concrete_colored").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(140.0F).setBlockTextureName(RefStrings.MODID + ":concrete"); + concrete_colored_ext = new BlockConcreteColoredExt(Material.rock).setBlockName("concrete_colored_ext").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(140.0F).setBlockTextureName(RefStrings.MODID + ":concrete_colored_ext"); + concrete = new BlockGeneric(Material.rock).setBlockName("concrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(140.0F).setBlockTextureName(RefStrings.MODID + ":concrete_tile"); + concrete_asbestos = new BlockGeneric(Material.rock).setBlockName("concrete_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(150.0F).setBlockTextureName(RefStrings.MODID + ":concrete_asbestos"); + concrete_super = new BlockUberConcrete().setBlockName("concrete_super").setCreativeTab(MainRegistry.blockTab).setHardness(150.0F).setResistance(1000.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(180.0F).setBlockTextureName(RefStrings.MODID + ":concrete_pillar_side"); + brick_concrete = new BlockGeneric(Material.rock).setBlockName("brick_concrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(160.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); + brick_concrete_mossy = new BlockGeneric(Material.rock).setBlockName("brick_concrete_mossy").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(160.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(60.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(45.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(160.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_marked"); + brick_obsidian = new BlockGeneric(Material.rock).setBlockName("brick_obsidian").setCreativeTab(MainRegistry.blockTab).setLightOpacity(15).setHardness(15.0F).setResistance(120.0F).setBlockTextureName(RefStrings.MODID + ":brick_obsidian"); + brick_light = new BlockGeneric(Material.rock).setBlockName("brick_light").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":brick_light"); + brick_compound = new BlockGeneric(Material.rock).setBlockName("brick_compound").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(400.0F).setBlockTextureName(RefStrings.MODID + ":brick_compound"); + cmb_brick = new BlockGeneric(Material.rock).setBlockName("cmb_brick").setCreativeTab(MainRegistry.blockTab).setHardness(25.0F).setResistance(5000.0F).setBlockTextureName(RefStrings.MODID + ":cmb_brick"); + cmb_brick_reinforced = new BlockGeneric(Material.rock).setBlockName("cmb_brick_reinforced").setCreativeTab(MainRegistry.blockTab).setHardness(25.0F).setResistance(50000.0F).setBlockTextureName(RefStrings.MODID + ":cmb_brick_reinforced"); + brick_asbestos = new BlockOutgas(Material.rock, true, 5, true).setBlockName("brick_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":brick_asbestos"); + brick_fire = new BlockGeneric(Material.rock).setBlockName("brick_fire").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(35.0F).setBlockTextureName(RefStrings.MODID + ":brick_fire"); + + ducrete_smooth = new BlockGeneric(Material.rock).setBlockName("ducrete_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(20.0F).setResistance(500.0F).setBlockTextureName(RefStrings.MODID + ":ducrete"); + ducrete = new BlockGeneric(Material.rock).setBlockName("ducrete").setCreativeTab(MainRegistry.blockTab).setHardness(20.0F).setResistance(500.0F).setBlockTextureName(RefStrings.MODID + ":ducrete_tile"); + brick_ducrete = new BlockGeneric(Material.rock).setBlockName("brick_ducrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(750.0F).setBlockTextureName(RefStrings.MODID + ":brick_ducrete"); + reinforced_ducrete = new BlockGeneric(Material.rock).setBlockName("reinforced_ducrete").setCreativeTab(MainRegistry.blockTab).setHardness(20.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_ducrete"); + + concrete_slab = new BlockMultiSlab(null, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete, asphalt).setBlockName("concrete_slab").setCreativeTab(MainRegistry.blockTab); + concrete_double_slab = new BlockMultiSlab(concrete_slab, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete, asphalt).setBlockName("concrete_double_slab").setCreativeTab(MainRegistry.blockTab); + concrete_brick_slab = new BlockMultiSlab(null, Material.rock, brick_concrete, brick_concrete_mossy, brick_concrete_cracked, brick_concrete_broken, brick_ducrete).setBlockName("concrete_brick_slab").setCreativeTab(MainRegistry.blockTab); + concrete_brick_double_slab = new BlockMultiSlab(concrete_brick_slab, Material.rock, brick_concrete, brick_concrete_mossy, brick_concrete_cracked, brick_concrete_broken, brick_ducrete).setBlockName("concrete_brick_double_slab").setCreativeTab(MainRegistry.blockTab); + brick_slab = new BlockMultiSlab(null, Material.rock, reinforced_stone, reinforced_brick, brick_obsidian, brick_light, brick_compound, brick_asbestos, brick_fire).setBlockName("brick_slab").setCreativeTab(MainRegistry.blockTab); + brick_double_slab = new BlockMultiSlab(brick_slab, Material.rock, reinforced_stone, reinforced_brick, brick_obsidian, brick_light, brick_compound, brick_asbestos, brick_fire).setBlockName("brick_double_slab").setCreativeTab(MainRegistry.blockTab); + + concrete_smooth_stairs = new BlockGenericStairs(concrete_smooth, 0).setBlockName("concrete_smooth_stairs").setCreativeTab(MainRegistry.blockTab); + concrete_stairs = new BlockGenericStairs(concrete, 0).setBlockName("concrete_stairs").setCreativeTab(MainRegistry.blockTab); + concrete_asbestos_stairs = new BlockGenericStairs(concrete_asbestos, 0).setBlockName("concrete_asbestos_stairs").setCreativeTab(MainRegistry.blockTab); + ducrete_smooth_stairs = new BlockGenericStairs(ducrete_smooth, 0).setBlockName("ducrete_smooth_stairs").setCreativeTab(MainRegistry.blockTab); + ducrete_stairs = new BlockGenericStairs(ducrete, 0).setBlockName("ducrete_stairs").setCreativeTab(MainRegistry.blockTab); + brick_concrete_stairs = new BlockGenericStairs(brick_concrete, 0).setBlockName("brick_concrete_stairs").setCreativeTab(MainRegistry.blockTab); + brick_concrete_mossy_stairs = new BlockGenericStairs(brick_concrete_mossy, 0).setBlockName("brick_concrete_mossy_stairs").setCreativeTab(MainRegistry.blockTab); + brick_concrete_cracked_stairs = new BlockGenericStairs(brick_concrete_cracked, 0).setBlockName("brick_concrete_cracked_stairs").setCreativeTab(MainRegistry.blockTab); + brick_concrete_broken_stairs = new BlockGenericStairs(brick_concrete_broken, 0).setBlockName("brick_concrete_broken_stairs").setCreativeTab(MainRegistry.blockTab); + brick_ducrete_stairs = new BlockGenericStairs(brick_ducrete, 0).setBlockName("brick_ducrete_stairs").setCreativeTab(MainRegistry.blockTab); + reinforced_stone_stairs = new BlockGenericStairs(reinforced_stone, 0).setBlockName("reinforced_stone_stairs").setCreativeTab(MainRegistry.blockTab); + reinforced_brick_stairs = new BlockGenericStairs(reinforced_brick, 0).setBlockName("reinforced_brick_stairs").setCreativeTab(MainRegistry.blockTab); + brick_obsidian_stairs = new BlockGenericStairs(brick_obsidian, 0).setBlockName("brick_obsidian_stairs").setCreativeTab(MainRegistry.blockTab); + brick_light_stairs = new BlockGenericStairs(brick_light, 0).setBlockName("brick_light_stairs").setCreativeTab(MainRegistry.blockTab); + brick_compound_stairs = new BlockGenericStairs(brick_compound, 0).setBlockName("brick_compound_stairs").setCreativeTab(MainRegistry.blockTab); + brick_asbestos_stairs = new BlockGenericStairs(brick_asbestos, 0).setBlockName("brick_asbestos_stairs").setCreativeTab(MainRegistry.blockTab); + brick_fire_stairs = new BlockGenericStairs(brick_fire, 0).setBlockName("brick_fire_stairs").setCreativeTab(MainRegistry.blockTab); + asphalt_stairs = new BlockSpeedyStairs(asphalt, 0, 1.5).setBlockName("asphalt_stairs").setCreativeTab(MainRegistry.blockTab); + + vinyl_tile = new BlockEnumMulti(Material.rock, TileType.class, true, true).setBlockName("vinyl_tile").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(10.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":vinyl_tile"); + + tile_lab = new BlockOutgas(Material.rock, false, 5, true).setBlockName("tile_lab").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":tile_lab"); + tile_lab_cracked = new BlockOutgas(Material.rock, false, 5, true).setBlockName("tile_lab_cracked").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":tile_lab_cracked"); + tile_lab_broken = new BlockOutgas(Material.rock, true, 5, true).setBlockName("tile_lab_broken").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":tile_lab_broken"); + + block_meteor = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor"); + block_meteor_cobble = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor_cobble").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_cobble"); + block_meteor_broken = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor_broken").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_crushed"); + block_meteor_molten = new BlockOre(Material.rock, true).noFortune().setBlockName("block_meteor_molten").setLightLevel(0.75F).setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_cobble_molten"); + block_meteor_treasure = new BlockMeteoriteTreasure(Material.rock).setBlockName("block_meteor_treasure").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_treasure"); + meteor_polished = new BlockGeneric(Material.rock).setBlockName("meteor_polished").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_polished"); + meteor_brick = new BlockGeneric(Material.rock).setBlockName("meteor_brick").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_brick"); + meteor_brick_mossy = new BlockGeneric(Material.rock).setBlockName("meteor_brick_mossy").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_brick_mossy"); + meteor_brick_cracked = new BlockGeneric(Material.rock).setBlockName("meteor_brick_cracked").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_brick_cracked"); + meteor_brick_chiseled = new BlockGeneric(Material.rock).setBlockName("meteor_brick_chiseled").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_brick_chiseled"); + meteor_pillar = new BlockRotatablePillar(Material.rock, RefStrings.MODID + ":meteor_pillar_top").setBlockName("meteor_pillar").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_pillar"); + meteor_spawner = new BlockCybercrab(Material.rock).setBlockName("meteor_spawner").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F); + meteor_battery = new BlockPillar(Material.rock, RefStrings.MODID + ":meteor_power").setBlockName("meteor_battery").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":meteor_spawner_side"); + moon_turf = new BlockFalling(Material.sand).setBlockName("moon_turf").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":moon_turf"); + + brick_jungle = new BlockGeneric(Material.rock).setBlockName("brick_jungle").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle"); + brick_jungle_cracked = new BlockGeneric(Material.rock).setBlockName("brick_jungle_cracked").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_cracked"); + brick_jungle_fragile = new FragileBrick(Material.rock).setBlockName("brick_jungle_fragile").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_fragile"); + brick_jungle_lava = new BlockGeneric(Material.rock).setBlockName("brick_jungle_lava").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setLightLevel(5F/15F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_lava"); + brick_jungle_ooze = new BlockOre(Material.rock).setBlockName("brick_jungle_ooze").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setLightLevel(5F/15F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_ooze"); + brick_jungle_mystic = new BlockOre(Material.rock).setBlockName("brick_jungle_mystic").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setLightLevel(5F/15F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_mystic"); + brick_jungle_trap = new TrappedBrick(Material.rock).setBlockName("brick_jungle_trap").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_trap"); + brick_jungle_glyph = new BlockGlyph(Material.rock).setBlockName("brick_jungle_glyph").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F); + brick_jungle_circle = new BlockBallsSpawner(Material.rock).setBlockName("brick_jungle_circle").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(360.0F).setBlockTextureName(RefStrings.MODID + ":brick_jungle_circle"); + + brick_red = new BlockRedBrick(Material.rock).setBlockName("brick_red").setResistance(10_000); + + deco_computer = new BlockDecoModel(Material.iron, DecoComputerEnum.class, true, false).setBlockBoundsTo(.160749F, 0F, 0F, .839251F, .867849F, .622184F).setBlockName("deco_computer").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_computer"); + deco_crt = new BlockDecoCRT(Material.iron).setBlockName("deco_crt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); + deco_toaster = new BlockDecoToaster(Material.iron).setBlockName("deco_toaster").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); + filing_cabinet = new BlockDecoContainer(Material.iron, DecoCabinetEnum.class, true, false, TileEntityFileCabinet.class).setBlockBoundsTo(.1875F, 0F, 0F, .8125F, 1F, .75F).setBlockName("filing_cabinet").setCreativeTab(MainRegistry.blockTab).setHardness(10.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); + + tape_recorder = new DecoTapeRecorder(Material.iron).setBlockName("tape_recorder").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":deco_tape_recorder"); + steel_poles = new DecoSteelPoles(Material.iron).setBlockName("steel_poles").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":steel_beam"); + pole_top = new DecoPoleTop(Material.iron).setBlockName("pole_top").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":deco_pole_top"); + pole_satellite_receiver = new DecoPoleSatelliteReceiver(Material.iron).setBlockName("pole_satellite_receiver").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":deco_satellite_receiver"); + steel_wall = new DecoBlock(Material.iron).setBlockName("steel_wall").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":steel_wall"); + steel_corner = new DecoBlock(Material.iron).setBlockName("steel_corner").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":steel_wall"); + steel_roof = new DecoBlock(Material.iron).setBlockName("steel_roof").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":steel_roof"); + steel_beam = new DecoBlock(Material.iron).setBlockName("steel_beam").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":steel_beam"); + steel_scaffold = new BlockScaffold().setBlockName("steel_scaffold").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":deco_steel_orig"); + steel_grate = new BlockGrate(Material.iron).setBlockName("steel_grate").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F); + steel_grate_wide = new BlockGrate(Material.iron).setBlockName("steel_grate_wide").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F); + + deco_pipe = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 0).setBlockName("deco_pipe").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); + deco_pipe_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 0).setBlockName("deco_pipe_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); + deco_pipe_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 0).setBlockName("deco_pipe_green").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); + deco_pipe_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 0).setBlockName("deco_pipe_green_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); + deco_pipe_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 0).setBlockName("deco_pipe_red").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); + deco_pipe_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 0).setBlockName("deco_pipe_marked").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); + deco_pipe_rim = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 1).setBlockName("deco_pipe_rim").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); + deco_pipe_rim_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 1).setBlockName("deco_pipe_rim_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); + deco_pipe_rim_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 1).setBlockName("deco_pipe_rim_green").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); + deco_pipe_rim_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 1).setBlockName("deco_pipe_rim_green_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); + deco_pipe_rim_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 1).setBlockName("deco_pipe_rim_red").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); + deco_pipe_rim_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 1).setBlockName("deco_pipe_rim_marked").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); + deco_pipe_framed = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 3).setBlockName("deco_pipe_framed").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); + deco_pipe_framed_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 3).setBlockName("deco_pipe_framed_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); + deco_pipe_framed_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 3).setBlockName("deco_pipe_framed_green").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); + deco_pipe_framed_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 3).setBlockName("deco_pipe_framed_green_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); + deco_pipe_framed_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 3).setBlockName("deco_pipe_framed_red").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); + deco_pipe_framed_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 3).setBlockName("deco_pipe_framed_marked").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); + deco_pipe_quad = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side", 2).setBlockName("deco_pipe_quad").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top"); + deco_pipe_quad_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_rusty", 2).setBlockName("deco_pipe_quad_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_rusty"); + deco_pipe_quad_green = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green", 2).setBlockName("deco_pipe_quad_green").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green"); + deco_pipe_quad_green_rusted = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_green_rusty", 2).setBlockName("deco_pipe_quad_green_rusted").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_green_rusty"); + deco_pipe_quad_red = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_red", 2).setBlockName("deco_pipe_quad_red").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_red"); + deco_pipe_quad_marked = new BlockPipe(Material.iron, RefStrings.MODID + ":pipe_side_marked", 2).setBlockName("deco_pipe_quad_marked").setStepSound(ModSoundTypes.grate).setCreativeTab(MainRegistry.blockTab).setHardness(2.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":pipe_top_marked"); + + broadcaster_pc = new PinkCloudBroadcaster(Material.iron).setBlockName("broadcaster_pc").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":broadcaster_pc"); + geiger = new GeigerCounter(Material.iron).setBlockName("geiger").setCreativeTab(MainRegistry.machineTab).setHardness(15.0F).setResistance(0.25F).setBlockTextureName(RefStrings.MODID + ":geiger"); + hev_battery = new HEVBattery(Material.iron).setBlockName("hev_battery").setCreativeTab(MainRegistry.machineTab).setLightLevel(10F/15F).setHardness(0.5F).setResistance(0.25F).setBlockTextureName(RefStrings.MODID + ":hev_battery"); + + fence_metal = new BlockMetalFence(Material.iron).setBlockName("fence_metal").setCreativeTab(MainRegistry.machineTab).setHardness(15.0F).setResistance(0.25F).setBlockTextureName(RefStrings.MODID + ":fence_metal"); + + ash_digamma = new BlockAshes(Material.sand).setBlockName("ash_digamma").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setResistance(150.0F).setBlockTextureName(RefStrings.MODID + ":ash_digamma"); + sand_boron = new BlockFalling(Material.sand).setBlockName("sand_boron").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_boron"); + sand_lead = new BlockFalling(Material.sand).setBlockName("sand_lead").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_lead"); + sand_uranium = new BlockFalling(Material.sand).setBlockName("sand_uranium").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_uranium"); + sand_polonium = new BlockFalling(Material.sand).setBlockName("sand_polonium").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_polonium"); + sand_quartz = new BlockFalling(Material.sand).setBlockName("sand_quartz").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_quartz"); + glass_boron = new BlockNTMGlassCT(0, RefStrings.MODID + ":glass_boron", Material.glass).setBlockName("glass_boron").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.machineTab).setHardness(0.3F); + glass_lead = new BlockNTMGlassCT(0, RefStrings.MODID + ":glass_lead", Material.glass).setBlockName("glass_lead").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.machineTab).setHardness(0.3F); + glass_uranium = new BlockNTMGlassCT(1, RefStrings.MODID + ":glass_uranium", Material.glass).setBlockName("glass_uranium").setLightLevel(5F/15F).setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.machineTab).setHardness(0.3F); + glass_trinitite = new BlockNTMGlassCT(1, RefStrings.MODID + ":glass_trinitite", Material.glass).setBlockName("glass_trinitite").setLightLevel(5F/15F).setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.machineTab).setHardness(0.3F); + glass_polonium = new BlockNTMGlassCT(1, RefStrings.MODID + ":glass_polonium", Material.glass).setBlockName("glass_polonium").setLightLevel(5F/15F).setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.machineTab).setHardness(0.3F); + glass_ash = new BlockNTMGlassCT(1, RefStrings.MODID + ":glass_ash", Material.glass).setBlockName("glass_ash").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.machineTab).setHardness(3F); + glass_quartz = new BlockNTMGlassCT(0, RefStrings.MODID + ":glass_quartz", Material.packedIce, true).setBlockName("glass_quartz").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGlass).setHardness(1.0F).setResistance(40.0F).setBlockTextureName(RefStrings.MODID + "glass_quartz"); + + mush = new BlockMush(Material.plants).setBlockName("mush").setCreativeTab(MainRegistry.blockTab).setLightLevel(0.5F).setStepSound(Block.soundTypeGrass).setBlockTextureName(RefStrings.MODID + ":mush"); + mush_block = new BlockMushHuge(Material.plants).setBlockName("mush_block").setLightLevel(1.0F).setStepSound(Block.soundTypeGrass).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":mush_block_skin"); + mush_block_stem = new BlockMushHuge(Material.plants).setBlockName("mush_block_stem").setLightLevel(1.0F).setStepSound(Block.soundTypeGrass).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":mush_block_stem"); + glyphid_base = new BlockGlyphid(Material.coral).setBlockName("glyphid_base").setStepSound(Block.soundTypeCloth).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_base"); + glyphid_spawner = new BlockGlyphidSpawner(Material.coral).setBlockName("glyphid_spawner").setStepSound(Block.soundTypeCloth).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_eggs_alt"); + + plant_flower = new BlockNTMFlower().setBlockName("plant_flower").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); + plant_tall = new BlockTallPlant().setBlockName("plant_tall").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); + plant_dead = new BlockDeadPlant().setBlockName("plant_dead").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); + reeds = new BlockReeds().setBlockName("plant_reeds").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); + vine_phosphor = new BlockHangingVine(thick_foliage).setBlockName("vine_phosphor").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.5F); + + waste_earth = new WasteEarth(Material.ground, true).setBlockName("waste_earth").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.blockTab).setHardness(0.6F).setBlockTextureName(RefStrings.MODID + ":waste_earth"); + waste_mycelium = new WasteEarth(Material.ground, true).setBlockName("waste_mycelium").setStepSound(Block.soundTypeGrass).setLightLevel(1F).setCreativeTab(MainRegistry.blockTab).setHardness(0.6F).setBlockTextureName(RefStrings.MODID + ":waste_mycelium_side"); + waste_trinitite = new BlockOre(Material.sand).noFortune().setBlockName("waste_trinitite").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":waste_trinitite"); + waste_trinitite_red = new BlockOre(Material.sand).noFortune().setBlockName("waste_trinitite_red").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":waste_trinitite_red"); + waste_log = new WasteLog(Material.wood).setBlockName("waste_log").setStepSound(Block.soundTypeWood).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(2.5F); + waste_leaves = new WasteLeaves(Material.leaves).setBlockName("waste_leaves").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.blockTab).setHardness(0.1F).setBlockTextureName(RefStrings.MODID + ":waste_leaves"); + waste_planks = new BlockOre(Material.wood).setBlockName("waste_planks").setStepSound(Block.soundTypeWood).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":waste_planks"); + frozen_dirt = new BlockOre(Material.ground).setBlockName("frozen_dirt").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":frozen_dirt"); + frozen_grass = new WasteEarth(Material.ground, false).setBlockName("frozen_grass").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F); + frozen_log = new WasteLog(Material.wood).setBlockName("frozen_log").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F); + frozen_planks = new BlockOre(Material.wood).setBlockName("frozen_planks").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":frozen_planks"); + fallout = new BlockFallout(Material.sand).setBlockName("fallout").setStepSound(Block.soundTypeGravel).setCreativeTab(MainRegistry.blockTab).setHardness(0.1F).setLightOpacity(0).setBlockTextureName(RefStrings.MODID + ":ash"); + foam_layer = new BlockLayering(Material.snow).setBlockName("foam_layer").setStepSound(Block.soundTypeSnow).setCreativeTab(MainRegistry.blockTab).setHardness(0.1F).setLightOpacity(0).setBlockTextureName(RefStrings.MODID + ":foam"); + sand_boron_layer = new BlockLayering(Material.sand).setBlockName("sand_boron_layer").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.1F).setLightOpacity(0).setBlockTextureName(RefStrings.MODID + ":sand_boron"); + leaves_layer = new BlockLayering(Material.leaves).setBlockName("leaves_layer").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.blockTab).setHardness(0.1F).setLightOpacity(0).setBlockTextureName(RefStrings.MODID + ":waste_leaves"); + oil_spill = new BlockLayering(Material.ground).setBlockName("oil_spill").setStepSound(Block.soundTypeSnow).setCreativeTab(MainRegistry.blockTab).setHardness(0.1F).setLightOpacity(0).setBlockTextureName(RefStrings.MODID + ":oil_spill"); + + burning_earth = new WasteEarth(Material.ground, true).setBlockName("burning_earth").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.blockTab).setHardness(0.6F).setBlockTextureName(RefStrings.MODID + ":burning_earth"); + tektite = new BlockGeneric(Material.sand).setBlockName("tektite").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":tektite"); + ore_tektite_osmiridium = new BlockGeneric(Material.sand).setBlockName("ore_tektite_osmiridium").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":ore_tektite_osmiridium"); + impact_dirt = new BlockDirt(Material.ground, true).setBlockName("impact_dirt").setStepSound(Block.soundTypeGravel).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":waste_earth_bottom"); + dirt_dead = new BlockFalling(Material.ground).setBlockName("dirt_dead").setStepSound(Block.soundTypeGravel).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":dirt_dead"); + dirt_oily = new BlockFalling(Material.ground).setBlockName("dirt_oily").setStepSound(Block.soundTypeGravel).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":dirt_oily"); + sand_dirty = new BlockFalling(Material.sand).setBlockName("sand_dirty").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_dirty"); + sand_dirty_red = new BlockFalling(Material.sand).setBlockName("sand_dirty_red").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_dirty_red"); + stone_cracked = new BlockFalling(Material.rock).setBlockName("stone_cracked").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":stone_cracked"); + + sellafield_slaked = new BlockSellafieldSlaked(Material.rock).setBlockName("sellafield_slaked").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_slaked"); + sellafield_bedrock = new BlockSellafieldSlaked(Material.rock).setBlockName("sellafield_bedrock").setBlockUnbreakable().setResistance(6000000.0F).setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":sellafield_slaked"); + sellafield = new BlockSellafield(Material.rock).setBlockName("sellafield").setStepSound(Block.soundTypeStone).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_0"); + ore_sellafield_diamond = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_diamond").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_diamond"); + ore_sellafield_emerald = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_emerald").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_emerald"); + ore_sellafield_uranium_scorched = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_uranium_scorched").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_uranium_scorched"); + ore_sellafield_schrabidium = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_schrabidium").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_schrabidium"); + ore_sellafield_radgem = new BlockSellafieldOre(Material.rock).setBlockName("ore_sellafield_radgem").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":ore_overlay_radgem"); + + geysir_water = new BlockGeysir(Material.rock).setBlockName("geysir_water").setStepSound(Block.soundTypeStone).setHardness(5.0F); + geysir_chlorine = new BlockGeysir(Material.rock).setBlockName("geysir_chlorine").setStepSound(Block.soundTypeStone).setHardness(5.0F); + geysir_vapor = new BlockGeysir(Material.rock).setBlockName("geysir_vapor").setStepSound(Block.soundTypeStone).setHardness(5.0F); + geysir_nether = new BlockGeysir(Material.rock).setBlockName("geysir_nether").setLightLevel(1.0F).setStepSound(Block.soundTypeStone).setHardness(2.0F); + + nuke_gadget = new NukeGadget(Material.iron).setBlockName("nuke_gadget").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":theGadget"); + nuke_boy = new NukeBoy(Material.iron).setBlockName("nuke_boy").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":lilBoy"); + nuke_man = new NukeMan(Material.iron).setBlockName("nuke_man").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":fatMan"); + nuke_mike = new NukeMike(Material.iron).setBlockName("nuke_mike").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":ivyMike"); + nuke_tsar = new NukeTsar(Material.iron).setBlockName("nuke_tsar").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":tsarBomba"); + nuke_fleija = new NukeFleija(Material.iron).setBlockName("nuke_fleija").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":fleija"); + nuke_prototype = new NukePrototype(Material.iron).setBlockName("nuke_prototype").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200).setBlockTextureName(RefStrings.MODID + ":prototype"); + nuke_custom = new NukeCustom(Material.iron).setBlockName("nuke_custom").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":custom"); + nuke_solinium = new NukeSolinium(Material.iron).setBlockName("nuke_solinium").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":nuke_solinium"); + nuke_n2 = new NukeN2(Material.iron).setBlockName("nuke_n2").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":nuke_n2"); + nuke_fstbmb = new NukeBalefire(Material.iron).setBlockName("nuke_fstbmb").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":nuke_fstbmb"); + + bomb_multi = new BombMulti(Material.iron).setBlockName("bomb_multi").setCreativeTab(MainRegistry.nukeTab).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":bomb_multi1"); + + flame_war = new BombFlameWar(Material.iron).setBlockName("flame_war").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":flame_war"); + float_bomb = new BombFloat(Material.iron).setBlockName("float_bomb").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F); + therm_endo = new BombThermo(Material.iron).setBlockName("therm_endo").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F); + therm_exo = new BombThermo(Material.iron).setBlockName("therm_exo").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F); + emp_bomb = new BombFloat(Material.iron).setBlockName("emp_bomb").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F); + det_cord = new DetCord(Material.iron).setBlockName("det_cord").setCreativeTab(MainRegistry.nukeTab).setHardness(0.1F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":det_cord"); + det_charge = new ExplosiveCharge(Material.iron).setBlockName("det_charge").setCreativeTab(MainRegistry.nukeTab).setHardness(0.1F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":det_charge"); + det_nuke = new ExplosiveCharge(Material.iron).setBlockName("det_nuke").setCreativeTab(MainRegistry.nukeTab).setHardness(0.1F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":det_nuke"); + det_miner = new DetMiner(Material.iron, RefStrings.MODID + ":det_miner_top").setBlockName("det_miner").setCreativeTab(MainRegistry.nukeTab).setHardness(0.1F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":det_miner_side"); + red_barrel = new RedBarrel(Material.iron, true).setBlockName("red_barrel").setCreativeTab(MainRegistry.nukeTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":barrel_red"); + pink_barrel = new RedBarrel(Material.iron, true).setBlockName("pink_barrel").setCreativeTab(MainRegistry.nukeTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":barrel_pink"); + yellow_barrel = new YellowBarrel(Material.iron).setBlockName("yellow_barrel").setCreativeTab(MainRegistry.nukeTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":barrel_yellow"); + vitrified_barrel = new YellowBarrel(Material.iron).setBlockName("vitrified_barrel").setCreativeTab(MainRegistry.nukeTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":barrel_vitrified"); + lox_barrel = new RedBarrel(Material.iron, false).setBlockName("lox_barrel").setCreativeTab(MainRegistry.nukeTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":barrel_lox"); + taint_barrel = new RedBarrel(Material.iron, false).setBlockName("taint_barrel").setCreativeTab(MainRegistry.nukeTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":barrel_taint"); + crashed_balefire = new BlockCrashedBomb(Material.iron).setBlockName("crashed_bomb").setCreativeTab(MainRegistry.nukeTab).setBlockUnbreakable().setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":crashed_balefire"); + fireworks = new BlockFireworks(Material.iron).setBlockName("fireworks").setCreativeTab(MainRegistry.nukeTab).setResistance(5.0F); + charge_dynamite = new BlockChargeDynamite().setBlockName("charge_dynamite").setCreativeTab(MainRegistry.nukeTab).setResistance(1.0F); + charge_miner = new BlockChargeMiner().setBlockName("charge_miner").setCreativeTab(MainRegistry.nukeTab).setResistance(1.0F); + charge_c4 = new BlockChargeC4().setBlockName("charge_c4").setCreativeTab(MainRegistry.nukeTab).setResistance(1.0F); + charge_semtex = new BlockChargeSemtex().setBlockName("charge_semtex").setCreativeTab(MainRegistry.nukeTab).setResistance(1.0F); + mine_ap = new Landmine(Material.iron, 1.5D, 1D).setBlockName("mine_ap").setCreativeTab(MainRegistry.nukeTab).setHardness(1.0F).setBlockTextureName(RefStrings.MODID + ":mine_ap"); + mine_he = new Landmine(Material.iron, 2D, 5D).setBlockName("mine_he").setCreativeTab(MainRegistry.nukeTab).setHardness(1.0F).setBlockTextureName(RefStrings.MODID + ":mine_he"); + mine_shrap = new Landmine(Material.iron, 1.5D, 1D).setBlockName("mine_shrap").setCreativeTab(MainRegistry.nukeTab).setHardness(1.0F).setBlockTextureName(RefStrings.MODID + ":mine_shrap"); + mine_fat = new Landmine(Material.iron, 2.5D, 1D).setBlockName("mine_fat").setCreativeTab(MainRegistry.nukeTab).setHardness(1.0F).setBlockTextureName(RefStrings.MODID + ":mine_fat"); + dynamite = new BlockDynamite().setBlockName("dynamite").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":dynamite"); + tnt = new BlockTNT().setBlockName("tnt_ntm").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":tnt"); + semtex = new BlockSemtex().setBlockName("semtex").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":semtex"); + c4 = new BlockC4().setBlockName("c4").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":c4"); + fissure_bomb = new BlockFissureBomb().setBlockName("fissure_bomb").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.nukeTab).setHardness(0.0F).setBlockTextureName(RefStrings.MODID + ":fissure_bomb"); + + pump_steam = new MachinePump().setBlockName("pump_steam").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_copper"); + pump_electric = new MachinePump().setBlockName("pump_electric").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + + heater_firebox = new HeaterFirebox().setBlockName("heater_firebox").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + heater_oven = new HeaterOven().setBlockName("heater_oven").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); + 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"); + furnace_combination = new FurnaceCombination().setBlockName("furnace_combination").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_light_alt"); + machine_stirling = new MachineStirling().setBlockName("machine_stirling").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_stirling_steel = new MachineStirling().setBlockName("machine_stirling_steel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_stirling_creative = new MachineStirling().setBlockName("machine_stirling_creative").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_sawmill = new MachineSawmill().setBlockName("machine_sawmill").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_strand_caster = new MachineStrandCaster().setBlockName("machine_strand_caster").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); + machine_crucible = new MachineCrucible().setBlockName("machine_crucible").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); + machine_boiler = new MachineHeatBoiler().setBlockName("machine_boiler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_copper"); + machine_industrial_boiler = new MachineHeatBoilerIndustrial().setBlockName("machine_industrial_boiler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + + foundry_mold = new FoundryMold().setBlockName("foundry_mold").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); + foundry_basin = new FoundryBasin().setBlockName("foundry_basin").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); + foundry_channel = new FoundryChannel().setBlockName("foundry_channel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); + foundry_tank = new FoundryTank().setBlockName("foundry_tank").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); + foundry_outlet = new FoundryOutlet().setBlockName("foundry_outlet").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); + foundry_slagtap = new FoundrySlagtap().setBlockName("foundry_slagtap").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); + slag = new BlockDynamicSlag().setBlockName("slag").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":slag"); + + machine_difurnace_off = new MachineDiFurnace(false).setBlockName("machine_difurnace_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_difurnace_on = new MachineDiFurnace(true).setBlockName("machine_difurnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); + machine_difurnace_extension = new MachineDiFurnaceExtension().setBlockName("machine_difurnace_extension").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_difurnace_rtg_off = new MachineDiFurnaceRTG(false).setBlockName("machine_difurnace_rtg_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_difurnace_rtg_on = new MachineDiFurnaceRTG(true).setBlockName("machine_difurnace_rtg_on").setHardness(5.0F).setResistance(10.0F).setLightLevel(2.0F).setCreativeTab(null); + + machine_centrifuge = new MachineCentrifuge(Material.iron).setBlockName("machine_centrifuge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_gascent = new MachineGasCent(Material.iron).setBlockName("machine_gascent").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_fel = new MachineFEL(Material.iron).setBlockName("machine_fel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_silex = new MachineSILEX(Material.iron).setBlockName("machine_silex").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_rotary_furnace = new MachineRotaryFurnace(Material.iron).setBlockName("machine_rotary_furnace").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); + machine_crystallizer = new MachineCrystallizer(Material.iron).setBlockName("machine_crystallizer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_crystallizer"); + + machine_uf6_tank = new MachineUF6Tank(Material.iron).setBlockName("machine_uf6_tank").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + + machine_puf6_tank = new MachinePuF6Tank(Material.iron).setBlockName("machine_puf6_tank").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + + machine_reactor_breeding = new MachineReactorBreeding(Material.iron).setBlockName("machine_reactor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_reactor"); + + machine_furnace_brick_off = new MachineBrickFurnace(false).setBlockName("machine_furnace_brick_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_furnace_brick_on = new MachineBrickFurnace(true).setBlockName("machine_furnace_brick_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); + machine_nuke_furnace_off = new MachineNukeFurnace(false).setBlockName("machine_nuke_furnace_off").setHardness(5.0F).setResistance(10.0F); + machine_nuke_furnace_on = new MachineNukeFurnace(true).setBlockName("machine_nuke_furnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); + machine_rtg_furnace_off = new MachineRtgFurnace(false).setBlockName("machine_rtg_furnace_off").setHardness(5.0F).setResistance(10.0F); + machine_rtg_furnace_on = new MachineRtgFurnace(true).setBlockName("machine_rtg_furnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); + + machine_industrial_generator = new MachineIGenerator(Material.iron).setBlockName("machine_industrial_generator").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName("gold_block"); + machine_cyclotron = new MachineCyclotron(Material.iron).setBlockName("machine_cyclotron").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":cyclotron"); + machine_exposure_chamber = new MachineExposureChamber(Material.iron).setBlockName("machine_exposure_chamber").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_aluminium"); + machine_radgen = new MachineRadGen(Material.iron).setBlockName("machine_radgen").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_radgen"); + + hadron_plating = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating"); + hadron_plating_blue = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating_blue").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating_blue"); + hadron_plating_black = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating_black").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating_black"); + hadron_plating_yellow = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating_yellow").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating_yellow"); + hadron_plating_striped = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating_striped").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating_striped"); + hadron_plating_voltz = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating_voltz").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating_voltz"); + hadron_plating_glass = new BlockNTMGlass(0, RefStrings.MODID + ":hadron_plating_glass", Material.iron, true).setStepSound(Block.soundTypeMetal).setBlockName("hadron_plating_glass").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_plating_glass"); + hadron_coil_alloy = new BlockHadronCoil(Material.iron, 10).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_alloy").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_alloy"); + hadron_coil_gold = new BlockHadronCoil(Material.iron, 25).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_gold").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_gold"); + hadron_coil_neodymium = new BlockHadronCoil(Material.iron, 50).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_neodymium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_neodymium"); + hadron_coil_magtung = new BlockHadronCoil(Material.iron, 100).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_magtung").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_magtung"); + hadron_coil_schrabidium = new BlockHadronCoil(Material.iron, 250).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_schrabidium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_schrabidium"); + hadron_coil_schrabidate = new BlockHadronCoil(Material.iron, 500).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_schrabidate").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_schrabidate"); + hadron_coil_starmetal = new BlockHadronCoil(Material.iron, 1000).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_starmetal").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_starmetal"); + hadron_coil_chlorophyte = new BlockHadronCoil(Material.iron, 2500).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_chlorophyte").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_chlorophyte"); + hadron_coil_mese = new BlockHadronCoil(Material.iron, 10000).setStepSound(Block.soundTypeMetal).setBlockName("hadron_coil_mese").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_coil_mese"); + hadron_power = new BlockHadronPower(Material.iron, 1000000L).setStepSound(Block.soundTypeMetal).setBlockName("hadron_power").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_power"); + hadron_power_10m = new BlockHadronPower(Material.iron, 10000000L).setStepSound(Block.soundTypeMetal).setBlockName("hadron_power_10m").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_power"); + hadron_power_100m = new BlockHadronPower(Material.iron, 100000000L).setStepSound(Block.soundTypeMetal).setBlockName("hadron_power_100m").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_power"); + hadron_power_1g = new BlockHadronPower(Material.iron, 1000000000L).setStepSound(Block.soundTypeMetal).setBlockName("hadron_power_1g").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_power"); + hadron_power_10g = new BlockHadronPower(Material.iron, 10000000000L).setStepSound(Block.soundTypeMetal).setBlockName("hadron_power_10g").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_power"); + hadron_diode = new BlockHadronDiode(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_diode").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + hadron_analysis = new BlockHadronPlating(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_analysis").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_analysis"); + hadron_analysis_glass = new BlockNTMGlass(0, RefStrings.MODID + ":hadron_analysis_glass", Material.iron, true).setStepSound(Block.soundTypeMetal).setBlockName("hadron_analysis_glass").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_analysis_glass"); + hadron_access = new BlockHadronAccess(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_access").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_access"); + hadron_core = new BlockHadronCore(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_core"); + hadron_cooler = new BlockHadronCooler(Material.iron).setBlockName("hadron_cooler").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); + + pa_source = new BlockPASource().setStepSound(Block.soundTypeMetal).setBlockName("pa_source").setHardness(5.0F).setResistance(10.0F); + pa_beamline = new BlockPABeamline().setStepSound(Block.soundTypeMetal).setBlockName("pa_beamline").setHardness(5.0F).setResistance(10.0F); + pa_rfc = new BlockPARFC().setStepSound(Block.soundTypeMetal).setBlockName("pa_rfc").setHardness(5.0F).setResistance(10.0F); + pa_quadrupole = new BlockPAQuadrupole().setStepSound(Block.soundTypeMetal).setBlockName("pa_quadrupole").setHardness(5.0F).setResistance(10.0F); + pa_dipole = new BlockPADipole().setStepSound(Block.soundTypeMetal).setBlockName("pa_dipole").setHardness(5.0F).setResistance(10.0F); + pa_detector = new BlockPADetector().setStepSound(Block.soundTypeMetal).setBlockName("pa_detector").setHardness(5.0F).setResistance(10.0F); + + machine_electric_furnace_off = new MachineElectricFurnace(false).setBlockName("machine_electric_furnace_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_electric_furnace_on = new MachineElectricFurnace(true).setBlockName("machine_electric_furnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); + machine_arc_furnace_off = new MachineArcFurnace(false).setBlockName("machine_arc_furnace_off").setHardness(5.0F).setResistance(10.0F); + machine_arc_furnace_on = new MachineArcFurnace(true).setBlockName("machine_arc_furnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); + machine_arc_furnace = new MachineArcFurnaceLarge().setBlockName("machine_arc_furnace").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_microwave = new MachineMicrowave(Material.iron).setBlockName("machine_microwave").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_microwave"); + + machine_battery_potato = new MachineBattery(Material.iron, 10_000).setBlockName("machine_battery_potato").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_battery = new MachineBattery(Material.iron, 1_000_000).setBlockName("machine_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_lithium_battery = new MachineBattery(Material.iron, 50_000_000).setBlockName("machine_lithium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_schrabidium_battery = new MachineBattery(Material.iron, 25_000_000_000L).setBlockName("machine_schrabidium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_dineutronium_battery = new MachineBattery(Material.iron, 1_000_000_000_000L).setBlockName("machine_dineutronium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_fensu = new MachineFENSU(Material.iron).setBlockName("machine_fensu").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_fensu"); + + capacitor_bus = new MachineCapacitorBus(Material.iron).setBlockName("capacitor_bus").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + capacitor_copper = new MachineCapacitor(Material.iron, 1_000_000L, "copper").setBlockName("capacitor_copper").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_copper"); + capacitor_gold = new MachineCapacitor(Material.iron, 5_000_000L, "gold").setBlockName("capacitor_gold").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName("gold_block"); + capacitor_niobium = new MachineCapacitor(Material.iron, 25_000_000L, "niobium").setBlockName("capacitor_niobium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_niobium"); + capacitor_tantalium = new MachineCapacitor(Material.iron, 150_000_000L, "tantalium").setBlockName("capacitor_tantalium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_tantalium"); + capacitor_schrabidate = new MachineCapacitor(Material.iron, 50_000_000_000L, "schrabidate").setBlockName("capacitor_schrabidate").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_schrabidate"); + + machine_wood_burner = new MachineWoodBurner(Material.iron).setBlockName("machine_wood_burner").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_diesel = new MachineDiesel().setBlockName("machine_diesel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_combustion_engine = new MachineCombustionEngine().setBlockName("machine_combustion_engine").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + + machine_shredder = new MachineShredder(Material.iron).setBlockName("machine_shredder").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + + machine_teleporter = new MachineTeleporter(Material.iron).setBlockName("machine_teleporter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + teleanchor = new MachineTeleanchor().setBlockName("teleanchor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + field_disturber = new MachineFieldDisturber().setBlockName("field_disturber").setHardness(5.0F).setResistance(200.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":field_disturber"); + + machine_rtg_grey = new MachineRTG(Material.iron).setBlockName("machine_rtg_grey").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtg"); + machine_amgen = new MachineAmgen(Material.iron).setBlockName("machine_amgen").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_geo = new MachineAmgen(Material.iron).setBlockName("machine_geo").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_minirtg = new MachineMiniRTG(Material.iron).setBlockName("machine_minirtg").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtg_cell"); + machine_powerrtg = new MachineMiniRTG(Material.iron).setBlockName("machine_powerrtg").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtg_polonium"); + machine_radiolysis = new MachineRadiolysis(Material.iron).setBlockName("machine_radiolysis").setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); + machine_hephaestus = new MachineHephaestus(Material.iron).setBlockName("machine_hephaestus").setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); + + red_wire_coated = new WireCoated(Material.iron).setBlockName("red_wire_coated").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_wire_coated"); + red_cable = new BlockCable(Material.iron).setBlockName("red_cable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":cable_neo"); + red_cable_classic = new BlockCable(Material.iron).setBlockName("red_cable_classic").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_cable_classic"); + red_cable_paintable = new BlockCablePaintable().setBlockName("red_cable_paintable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + red_cable_gauge = new BlockCableGauge().setBlockName("red_cable_gauge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + red_connector = new ConnectorRedWire(Material.iron).setBlockName("red_connector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_connector"); + red_pylon = new PylonRedWire(Material.iron).setBlockName("red_pylon").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); + red_pylon_medium_wood = new PylonMedium(Material.wood).setBlockName("red_pylon_medium_wood").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); + red_pylon_medium_wood_transformer = new PylonMedium(Material.wood).setBlockName("red_pylon_medium_wood_transformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); + red_pylon_medium_steel = new PylonMedium(Material.iron).setBlockName("red_pylon_medium_steel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); + red_pylon_medium_steel_transformer = new PylonMedium(Material.iron).setBlockName("red_pylon_medium_steel_transformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); + red_pylon_large = new PylonLarge(Material.iron).setBlockName("red_pylon_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon_large"); + substation = new Substation(Material.iron).setBlockName("substation").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":substation"); + cable_switch = new CableSwitch(Material.iron).setBlockName("cable_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + cable_detector = new CableDetector(Material.iron).setBlockName("cable_detector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + cable_diode = new CableDiode(Material.iron).setBlockName("cable_diode").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":cable_diode"); + machine_detector = new PowerDetector(Material.iron).setBlockName("machine_detector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_detector_off"); + fluid_duct_neo = new FluidDuctStandard(Material.iron).setBlockName("fluid_duct_neo").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pipe_neo"); + fluid_duct_box = new FluidDuctBox(Material.iron).setBlockName("fluid_duct_box").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_box"); + fluid_duct_exhaust = new FluidDuctBoxExhaust(Material.iron).setBlockName("fluid_duct_exhaust").setStepSound(ModSoundTypes.pipe).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_box"); + fluid_duct_paintable = new FluidDuctPaintable().setBlockName("fluid_duct_paintable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + fluid_duct_gauge = new FluidDuctGauge().setBlockName("fluid_duct_gauge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + fluid_valve = new FluidValve(Material.iron).setBlockName("fluid_valve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + fluid_switch = new FluidSwitch(Material.iron).setBlockName("fluid_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_drain = new MachineDrain(Material.iron).setBlockName("machine_drain").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":concrete"); + radio_torch_sender = new RadioTorchSender().setBlockName("radio_torch_sender").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + radio_torch_receiver = new RadioTorchReceiver().setBlockName("radio_torch_receiver").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + radio_torch_counter = new RadioTorchCounter().setBlockName("radio_torch_counter").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtty_counter"); + radio_torch_logic = new RadioTorchLogic().setBlockName("radio_torch_logic").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + radio_telex = new RadioTelex().setBlockName("radio_telex").setHardness(3F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":radio_telex"); + + conveyor = new BlockConveyor().setBlockName("conveyor").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor"); + conveyor_express = new BlockConveyorExpress().setBlockName("conveyor_express").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor_express"); + //conveyor_classic = new BlockConveyorClassic().setBlockName("conveyor_classic").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor"); + conveyor_double = new BlockConveyorDouble().setBlockName("conveyor_double").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor_double"); + conveyor_triple = new BlockConveyorTriple().setBlockName("conveyor_triple").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor_triple"); + conveyor_chute = new BlockConveyorChute().setBlockName("conveyor_chute").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor"); + conveyor_lift = new BlockConveyorLift().setBlockName("conveyor_lift").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor"); + crane_extractor = new CraneExtractor().setBlockName("crane_extractor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + crane_inserter = new CraneInserter().setBlockName("crane_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + crane_grabber = new CraneGrabber().setBlockName("crane_grabber").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + crane_router = new CraneRouter().setBlockName("crane_router").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + crane_boxer = new CraneBoxer().setBlockName("crane_boxer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + crane_unboxer = new CraneUnboxer().setBlockName("crane_unboxer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + crane_splitter = new CraneSplitter().setBlockName("crane_splitter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":crane_side"); + crane_partitioner = new CranePartitioner().setBlockName("crane_partitioner").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":crane_partitioner_side"); + fan = new MachineFan().setBlockName("fan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + piston_inserter = new PistonInserter().setBlockName("piston_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + + drone_waypoint = new DroneWaypoint().setBlockName("drone_waypoint").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint"); + drone_crate = new DroneCrate().setBlockName("drone_crate").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + drone_waypoint_request = new DroneWaypointRequest().setBlockName("drone_waypoint_request").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint_request"); + drone_dock = new DroneDock().setBlockName("drone_dock").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_dock"); + drone_crate_provider = new DroneDock().setBlockName("drone_crate_provider").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_crate_provider"); + drone_crate_requester = new DroneDock().setBlockName("drone_crate_requester").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_crate_requester"); + + chain = new BlockChain(Material.iron).setBlockName("dungeon_chain").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":chain"); + + ladder_sturdy = new BlockNTMLadder().setBlockName("ladder_sturdy").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_sturdy"); + ladder_iron = new BlockNTMLadder().setBlockName("ladder_iron").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_iron"); + ladder_gold = new BlockNTMLadder().setBlockName("ladder_gold").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_gold"); + ladder_aluminium = new BlockNTMLadder().setBlockName("ladder_aluminium").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_aluminium"); + ladder_copper = new BlockNTMLadder().setBlockName("ladder_copper").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_copper"); + ladder_titanium = new BlockNTMLadder().setBlockName("ladder_titanium").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_titanium"); + ladder_lead = new BlockNTMLadder().setBlockName("ladder_lead").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_lead"); + ladder_cobalt = new BlockNTMLadder().setBlockName("ladder_cobalt").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_cobalt"); + ladder_steel = new BlockNTMLadder().setBlockName("ladder_steel").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_steel"); + ladder_tungsten = new BlockNTMLadder().setBlockName("ladder_tungsten").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_tungsten"); + + barrel_plastic = new BlockFluidBarrel(Material.iron, 12000).setBlockName("barrel_plastic").setStepSound(Block.soundTypeStone).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_plastic"); + barrel_corroded = new BlockFluidBarrel(Material.iron, 6000).setBlockName("barrel_corroded").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_corroded"); + barrel_iron = new BlockFluidBarrel(Material.iron, 8000).setBlockName("barrel_iron").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_iron"); + barrel_steel = new BlockFluidBarrel(Material.iron, 16000).setBlockName("barrel_steel").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_steel"); + barrel_tcalloy = new BlockFluidBarrel(Material.iron, 24000).setBlockName("barrel_tcalloy").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_tcalloy"); + barrel_antimatter = new BlockFluidBarrel(Material.iron, 16000).setBlockName("barrel_antimatter").setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(5.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":barrel_antimatter"); + + machine_transformer = new MachineTransformer(Material.iron, 10000L, 1).setBlockName("machine_transformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_transformer_iron"); + machine_transformer_dnt = new MachineTransformer(Material.iron, 1000000000000000L, 1).setBlockName("machine_transformer_dnt").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_transformer"); + machine_transformer_20 = new MachineTransformer(Material.iron, 10000L, 20).setBlockName("machine_transformer_20").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_transformer_iron"); + machine_transformer_dnt_20 = new MachineTransformer(Material.iron, 1000000000000000L, 20).setBlockName("machine_transformer_dnt_20").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_transformer"); + + machine_satlinker = new MachineSatLinker(Material.iron).setBlockName("machine_satlinker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_satlinker_side"); + machine_keyforge = new MachineKeyForge(Material.iron).setBlockName("machine_keyforge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":machine_keyforge_side"); + machine_armor_table = new BlockArmorTable(Material.iron).setBlockName("machine_armor_table").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab); + + machine_solar_boiler = new MachineSolarBoiler(Material.iron).setBlockName("machine_solar_boiler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_solar_boiler"); + solar_mirror = new SolarMirror(Material.iron).setBlockName("solar_mirror").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":solar_mirror"); + + struct_launcher = new BlockGeneric(Material.iron).setBlockName("struct_launcher").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":struct_launcher"); + struct_scaffold = new BlockGeneric(Material.iron).setBlockName("struct_scaffold").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":struct_scaffold"); + struct_launcher_core = new BlockStruct(Material.iron).setBlockName("struct_launcher_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":struct_launcher_core"); + struct_launcher_core_large = new BlockStruct(Material.iron).setBlockName("struct_launcher_core_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":struct_launcher_core_large"); + struct_soyuz_core = new BlockSoyuzStruct(Material.iron).setBlockName("struct_soyuz_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":struct_soyuz_core"); + struct_iter_core = new BlockITERStruct(Material.iron).setBlockName("struct_iter_core").setLightLevel(1F).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":struct_iter_core"); + struct_plasma_core = new BlockPlasmaStruct(Material.iron).setBlockName("struct_plasma_core").setLightLevel(1F).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":struct_plasma_core"); + struct_watz_core = new BlockWatzStruct(Material.iron).setBlockName("struct_watz_core").setLightLevel(1F).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":struct_watz_core"); + struct_icf_core = new BlockICFStruct(Material.iron).setBlockName("struct_icf_core").setLightLevel(1F).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":struct_icf_core"); + + factory_titanium_hull = new BlockGeneric(Material.iron).setBlockName("factory_titanium_hull").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":factory_titanium_hull"); + factory_advanced_hull = new BlockGeneric(Material.iron).setBlockName("factory_advanced_hull").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":factory_advanced_hull"); + + cm_block = new BlockCM(Material.iron, EnumCMMaterials.class, true, true).setBlockName("cm_block").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_block"); + cm_sheet = new BlockCM(Material.iron, EnumCMMaterials.class, true, true).setBlockName("cm_sheet").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_sheet"); + cm_engine = new BlockCM(Material.iron, EnumCMEngines.class, true, true).setBlockName("cm_engine").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_engine"); + cm_tank = new BlockCMGlass(Material.iron, EnumCMMaterials.class, true, true).setBlockName("cm_tank").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_tank"); + cm_circuit = new BlockCM(Material.iron, EnumCMCircuit.class, true, true).setBlockName("cm_circuit").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_circuit"); + cm_port = new BlockCMPort(Material.iron, EnumCMMaterials.class, true, true).setBlockName("cm_port").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_port"); + cm_flux = new BlockCMFlux(Material.iron, RefStrings.MODID + ":cm_flux_top").setBlockName("cm_flux").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_flux_side"); + cm_heat = new BlockCMHeat(Material.iron, RefStrings.MODID +":cm_heat_top").setBlockName("cm_heat").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_heat_side"); + custom_machine = new BlockCustomMachine().setBlockName("custom_machine").setCreativeTab(MainRegistry.machineTab).setLightLevel(1F).setHardness(5.0F).setResistance(10.0F); + cm_anchor = new BlockCMAnchor().setBlockName("custom_machine_anchor").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F); + + pwr_fuel = new BlockPillarPWR(Material.iron, RefStrings.MODID + ":pwr_fuel_top").setBlockName("pwr_fuel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_fuel_side"); + pwr_control = new BlockPillarPWR(Material.iron, RefStrings.MODID + ":pwr_control_top").setBlockName("pwr_control").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_control_side"); + pwr_channel = new BlockPillarPWR(Material.iron, RefStrings.MODID + ":pwr_channel_top").setBlockName("pwr_channel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_channel_side"); + pwr_heatex = new BlockGenericPWR(Material.iron).setBlockName("pwr_heatex").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_heatex"); + pwr_heatsink = new BlockGenericPWR(Material.iron).setBlockName("pwr_heatsink").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_heatsink"); + pwr_neutron_source = new BlockGenericPWR(Material.iron).setBlockName("pwr_neutron_source").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_neutron_source"); + pwr_reflector = new BlockGenericPWR(Material.iron).setBlockName("pwr_reflector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_reflector"); + pwr_casing = new BlockGenericPWR(Material.iron).setBlockName("pwr_casing").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_casing"); + pwr_port = new BlockGenericPWR(Material.iron).setBlockName("pwr_port").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_port"); + pwr_controller = new MachinePWRController(Material.iron).setBlockName("pwr_controller").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_casing_blank"); + pwr_block = new BlockPWR(Material.iron).setBlockName("pwr_block").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pwr_block"); + + fusion_conductor = new BlockToolConversionPillar(Material.iron).addVariant("_welded").setBlockName("fusion_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_conductor"); + fusion_center = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_center_top_alt").setBlockName("fusion_center").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_center_side_alt"); + fusion_motor = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_motor_top_alt").setBlockName("fusion_motor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_motor_side_alt"); + fusion_heater = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_heater_top").setBlockName("fusion_heater").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_heater_side"); + fusion_hatch = new FusionHatch(Material.iron).setBlockName("fusion_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_hatch"); + plasma = new BlockPlasma(Material.iron).setBlockName("plasma").setHardness(5.0F).setResistance(6000.0F).setLightLevel(1.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":plasma"); + iter = new MachineITER().setBlockName("iter").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":iter"); + plasma_heater = new MachinePlasmaHeater().setBlockName("plasma_heater").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":plasma_heater"); + + machine_icf_press = new MachineICFPress().setBlockName("machine_icf_press").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + icf = new MachineICF().setBlockName("icf").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + icf_component = new BlockICFComponent().setBlockName("icf_component").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":icf_component"); + icf_controller = new MachineICFController().setBlockName("icf_controller").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":icf_casing"); + icf_laser_component = new BlockICFLaserComponent().setBlockName("icf_laser_component").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab); + icf_block = new BlockICF(Material.iron).setBlockName("icf_block").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":icf_block"); + + watz_element = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_element_top").setBlockName("watz_element").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_element_side"); + watz_cooler = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_cooler_top").setBlockName("watz_cooler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_cooler_side"); + watz_end = new BlockToolConversion(Material.iron).addVariant("_bolted").setBlockName("watz_end").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_casing"); + watz = new Watz().setBlockName("watz").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + watz_pump = new WatzPump().setBlockName("watz_pump").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + + balefire = new Balefire().setBlockName("balefire").setHardness(0.0F).setLightLevel(1.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":balefire"); + fire_digamma = new DigammaFlame().setBlockName("fire_digamma").setHardness(0.0F).setResistance(150F).setLightLevel(1.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fire_digamma"); + digamma_matter = new DigammaMatter().setBlockName("digamma_matter").setBlockUnbreakable().setResistance(18000000).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":digamma_matter"); + + machine_converter_he_rf = new BlockConverterHeRf(Material.iron).setBlockName("machine_converter_he_rf").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_converter_he_rf"); + machine_converter_rf_he = new BlockConverterRfHe(Material.iron).setBlockName("machine_converter_rf_he").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_converter_rf_he"); + + dfc_emitter = new CoreComponent(Material.iron).setBlockName("dfc_emitter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":dfc_emitter"); + dfc_injector = new CoreComponent(Material.iron).setBlockName("dfc_injector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":dfc_injector"); + dfc_receiver = new CoreComponent(Material.iron).setBlockName("dfc_receiver").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":dfc_receiver"); + dfc_stabilizer = new CoreComponent(Material.iron).setBlockName("dfc_stabilizer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":dfc_stabilizer"); + dfc_core = new CoreCore(Material.iron).setBlockName("dfc_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":dfc_core"); + + seal_frame = new BlockGeneric(Material.iron).setBlockName("seal_frame").setHardness(10.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":seal_frame"); + seal_controller = new BlockSeal(Material.iron).setBlockName("seal_controller").setHardness(10.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab); + seal_hatch = new BlockHatch(Material.iron).setBlockName("seal_hatch").setHardness(Float.POSITIVE_INFINITY).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":seal_hatch_3"); + + vault_door = new VaultDoor(Material.iron).setBlockName("vault_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vault_door"); + blast_door = new BlastDoor(Material.iron).setBlockName("blast_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":blast_door"); + + sliding_blast_door = new BlockDoorGeneric(Material.iron, DoorDecl.SLIDE_DOOR).setBlockName("sliding_blast_door").setHardness(10.0F).setResistance(750.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":sliding_blast_door"); + fire_door = new BlockDoorGeneric(Material.iron, DoorDecl.FIRE_DOOR).setBlockName("fire_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fire_door"); + transition_seal = new BlockDoorGeneric(Material.iron, DoorDecl.TRANSITION_SEAL).setBlockName("transition_seal").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":transition_seal"); + silo_hatch = new BlockDoorGeneric(Material.iron, DoorDecl.SILO_HATCH).setBlockName("silo_hatch").setHardness(10.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + silo_hatch_large = new BlockDoorGeneric(Material.iron, DoorDecl.SILO_HATCH_LARGE).setBlockName("silo_hatch_large").setHardness(10.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + secure_access_door = new BlockDoorGeneric(Material.iron, DoorDecl.SECURE_ACCESS_DOOR).setBlockName("secure_access_door").setHardness(20.0F).setResistance(2_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + large_vehicle_door = new BlockDoorGeneric(Material.iron, DoorDecl.LARGE_VEHICLE_DOOR).setBlockName("large_vehicle_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + qe_containment = new BlockDoorGeneric(Material.iron, DoorDecl.QE_CONTAINMENT).setBlockName("qe_containment").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + qe_sliding_door = new BlockDoorGeneric(Material.iron, DoorDecl.QE_SLIDING).setBlockName("qe_sliding_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + round_airlock_door = new BlockDoorGeneric(Material.iron, DoorDecl.ROUND_AIRLOCK_DOOR).setBlockName("round_airlock_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + sliding_seal_door = new BlockDoorGeneric(Material.iron, DoorDecl.SLIDING_SEAL_DOOR).setBlockName("sliding_seal_door").setHardness(10.0F).setResistance(1_000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + water_door = new BlockDoorGeneric(Material.iron, DoorDecl.WATER_DOOR).setBlockName("water_door").setHardness(5.0F).setResistance(50.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + + door_metal = new BlockModDoor(Material.iron).setBlockName("door_metal").setHardness(5.0F).setResistance(5.0F).setBlockTextureName(RefStrings.MODID + ":door_metal"); + door_office = new BlockModDoor(Material.iron).setBlockName("door_office").setHardness(10.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":door_office"); + door_bunker = new BlockModDoor(Material.iron).setBlockName("door_bunker").setHardness(10.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":door_bunker"); + door_red = new BlockModDoor(Material.iron).setBlockName("door_red").setHardness(10.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":door_red"); + + barbed_wire = new BarbedWire(Material.iron).setBlockName("barbed_wire").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":barbed_wire_model"); + barbed_wire_fire = new BarbedWire(Material.iron).setBlockName("barbed_wire_fire").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":barbed_wire_fire_model"); + barbed_wire_poison = new BarbedWire(Material.iron).setBlockName("barbed_wire_poison").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":barbed_wire_poison_model"); + barbed_wire_acid = new BarbedWire(Material.iron).setBlockName("barbed_wire_acid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":barbed_wire_acid_model"); + barbed_wire_wither = new BarbedWire(Material.iron).setBlockName("barbed_wire_wither").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":barbed_wire_wither_model"); + barbed_wire_ultradeath = new BarbedWire(Material.iron).setBlockName("barbed_wire_ultradeath").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":barbed_wire_ultradeath_model"); + spikes = new Spikes(Material.iron).setBlockName("spikes").setHardness(2.5F).setResistance(5.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":spikes"); + + charger = new Charger(Material.iron).setBlockName("charger").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + + tesla = new MachineTesla(Material.iron).setBlockName("tesla").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":tesla"); + + launch_pad = new LaunchPad(Material.iron).setBlockName("launch_pad").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":launch_pad"); + launch_pad_rusted = new LaunchPadRusted(Material.iron).setBlockName("launch_pad_rusted").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_rust"); + launch_pad_large = new LaunchPadLarge(Material.iron).setBlockName("launch_pad_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_radar = new MachineRadar(Material.iron).setBlockName("machine_radar").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_radar"); + machine_radar_large = new MachineRadarLarge(Material.iron).setBlockName("machine_radar_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + radar_screen = new MachineRadarScreen(Material.iron).setBlockName("radar_screen").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + + machine_missile_assembly = new MachineMissileAssembly(Material.iron).setBlockName("machine_missile_assembly").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_missile_assembly"); + compact_launcher = new CompactLauncher(Material.iron).setBlockName("compact_launcher").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":compact_launcher"); + launch_table = new LaunchTable(Material.iron).setBlockName("launch_table").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":launch_table"); + soyuz_launcher = new SoyuzLauncher(Material.iron).setBlockName("soyuz_launcher").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":soyuz_launcher"); + + sat_mapper = new DecoBlock(Material.iron).setBlockName("sat_mapper").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":sat_mapper"); + sat_radar = new DecoBlock(Material.iron).setBlockName("sat_radar").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":sat_radar"); + sat_scanner = new DecoBlock(Material.iron).setBlockName("sat_scanner").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":sat_scanner"); + sat_laser = new DecoBlock(Material.iron).setBlockName("sat_laser").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":sat_laser"); + sat_foeq = new DecoBlock(Material.iron).setBlockName("sat_foeq").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":sat_foeq"); + sat_resonator = new DecoBlock(Material.iron).setBlockName("sat_resonator").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":sat_resonator"); + + sat_dock = new MachineSatDock(Material.iron).setBlockName("sat_dock").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":sat_dock"); + soyuz_capsule = new SoyuzCapsule(Material.iron).setBlockName("soyuz_capsule").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":soyuz_capsule"); + crate_supply = new BlockSupplyCrate(Material.wood).setBlockName("crate_supply").setStepSound(Block.soundTypeWood).setHardness(1.0F).setResistance(2.5F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":crate_can"); + + turret_chekhov = new TurretChekhov(Material.iron).setBlockName("turret_chekhov").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_friendly = new TurretFriendly(Material.iron).setBlockName("turret_friendly").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_jeremy = new TurretJeremy(Material.iron).setBlockName("turret_jeremy").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_tauon = new TurretTauon(Material.iron).setBlockName("turret_tauon").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_richard = new TurretRichard(Material.iron).setBlockName("turret_richard").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_howard = new TurretHoward(Material.iron).setBlockName("turret_howard").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_howard_damaged = new TurretHowardDamaged(Material.iron).setBlockName("turret_howard_damaged").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_rust"); + turret_maxwell = new TurretMaxwell(Material.iron).setBlockName("turret_maxwell").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_fritz = new TurretFritz(Material.iron).setBlockName("turret_fritz").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_arty = new TurretArty(Material.iron).setBlockName("turret_arty").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_himars = new TurretHIMARS(Material.iron).setBlockName("turret_himars").setHardness(5.0F).setResistance(600.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_sentry = new TurretSentry().setBlockName("turret_sentry").setHardness(5.0F).setResistance(5.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + turret_sentry_damaged = new TurretSentryDamaged().setBlockName("turret_sentry_damaged").setHardness(5.0F).setResistance(5.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":block_rust"); + + rbmk_rod = new RBMKRod(false).setBlockName("rbmk_rod").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_element"); + rbmk_rod_mod = new RBMKRod(true).setBlockName("rbmk_rod_mod").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_element_mod"); + rbmk_rod_reasim = new RBMKRodReaSim(false).setBlockName("rbmk_rod_reasim").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_element_reasim"); + rbmk_rod_reasim_mod = new RBMKRodReaSim(true).setBlockName("rbmk_rod_reasim_mod").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_element_reasim_mod"); + rbmk_control = new RBMKControl(false).setBlockName("rbmk_control").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_control"); + rbmk_control_mod = new RBMKControl(true).setBlockName("rbmk_control_mod").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_control_mod"); + rbmk_control_auto = new RBMKControlAuto().setBlockName("rbmk_control_auto").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_control_auto"); + rbmk_blank = new RBMKBlank().setBlockName("rbmk_blank").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_blank"); + rbmk_boiler = new RBMKBoiler().setBlockName("rbmk_boiler").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_boiler"); + rbmk_reflector = new RBMKReflector().setBlockName("rbmk_reflector").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_reflector"); + rbmk_absorber = new RBMKAbsorber().setBlockName("rbmk_absorber").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_absorber"); + rbmk_moderator = new RBMKModerator().setBlockName("rbmk_moderator").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_moderator"); + rbmk_outgasser = new RBMKOutgasser().setBlockName("rbmk_outgasser").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_outgasser"); + rbmk_storage = new RBMKStorage().setBlockName("rbmk_storage").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_storage"); + rbmk_cooler = new RBMKCooler().setBlockName("rbmk_cooler").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_cooler"); + rbmk_heater = new RBMKHeater().setBlockName("rbmk_heater").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_heater"); + rbmk_console = new RBMKConsole().setBlockName("rbmk_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_console"); + rbmk_crane_console = new RBMKCraneConsole().setBlockName("rbmk_crane_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_crane_console"); + rbmk_loader = new RBMKLoader(Material.iron).setBlockName("rbmk_loader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_loader"); + rbmk_steam_inlet = new RBMKInlet(Material.iron).setBlockName("rbmk_steam_inlet").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_steam_inlet"); + rbmk_steam_outlet = new RBMKOutlet(Material.iron).setBlockName("rbmk_steam_outlet").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_steam_outlet"); + pribris = new RBMKDebris().setBlockName("pribris").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris"); + pribris_burning = new RBMKDebrisBurning().setBlockName("pribris_burning").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris_burning"); + pribris_radiating = new RBMKDebrisRadiating().setBlockName("pribris_radiating").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris_radiating"); + pribris_digamma = new RBMKDebrisDigamma().setBlockName("pribris_digamma").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris_digamma"); + + book_guide = new Guide(Material.iron).setBlockName("book_guide").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.nukeTab); + + rail_wood = new RailGeneric().setMaxSpeed(0.2F).setBlockName("rail_wood").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_wood"); + rail_narrow = new RailGeneric().setBlockName("rail_narrow").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_narrow"); + rail_highspeed = new RailGeneric().setMaxSpeed(1F).setFlexible(false).setBlockName("rail_highspeed").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_highspeed"); + rail_booster = new RailBooster().setBlockName("rail_booster").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_booster"); + rail_narrow_straight = new RailNarrowStraight().setBlockName("rail_narrow_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo"); + rail_narrow_curve = new RailNarrowCurve().setBlockName("rail_narrow_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo"); + rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_straight_short = new RailStandardStraightShort().setBlockName("rail_large_straight_short").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_curve = new RailStandardCurveBase().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_curve_7 = new RailStandardCurveWide7().setBlockName("rail_large_curve_7").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_curve_9 = new RailStandardCurveWide9().setBlockName("rail_large_curve_9").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_ramp = new RailStandardRamp().setBlockName("rail_large_ramp").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_buffer = new RailStandardBuffer().setBlockName("rail_large_buffer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_buffer"); + rail_large_switch = new RailStandardSwitch().setBlockName("rail_large_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_switch_flipped = new RailStandardSwitchFlipped().setBlockName("rail_large_switch_flipped").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + + crate = new BlockCrate(Material.wood).setBlockName("crate").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate"); + crate_weapon = new BlockCrate(Material.wood).setBlockName("crate_weapon").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_weapon"); + crate_lead = new BlockCrate(Material.iron).setBlockName("crate_lead").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_lead"); + crate_metal = new BlockCrate(Material.iron).setBlockName("crate_metal").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_metal"); + crate_red = new BlockCrate(Material.iron).setBlockName("crate_red").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":crate_red"); + crate_can = new BlockCanCrate(Material.wood).setBlockName("crate_can").setStepSound(Block.soundTypeWood).setHardness(1.0F).setResistance(2.5F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_can"); + crate_ammo = new BlockAmmoCrate(Material.iron).setBlockName("crate_ammo").setStepSound(Block.soundTypeMetal).setHardness(1.0F).setResistance(2.5F).setCreativeTab(MainRegistry.consumableTab); + crate_jungle = new BlockJungleCrate(Material.rock).setBlockName("crate_jungle").setStepSound(Block.soundTypeStone).setHardness(1.0F).setResistance(2.5F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_jungle"); + crate_iron = new BlockStorageCrate(Material.iron).setBlockName("crate_iron").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + crate_steel = new BlockStorageCrate(Material.iron).setBlockName("crate_steel").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + crate_desh = new BlockStorageCrate(Material.iron).setBlockName("crate_desh").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + crate_tungsten = new BlockStorageCrate(Material.iron).setBlockName("crate_tungsten").setStepSound(Block.soundTypeMetal).setHardness(7.5F).setResistance(300.0F).setCreativeTab(MainRegistry.machineTab); + crate_template = new BlockStorageCrate(Material.iron).setBlockName("crate_template").setStepSound(Block.soundTypeMetal).setHardness(7.5F).setResistance(300.0F).setCreativeTab(MainRegistry.machineTab); + safe = new BlockStorageCrate(Material.iron).setBlockName("safe").setStepSound(Block.soundTypeMetal).setHardness(7.5F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab); + mass_storage = new BlockMassStorage().setBlockName("mass_storage").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + + boxcar = new DecoBlock(Material.iron).setBlockName("boxcar").setStepSound(Block.soundTypeMetal).setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":boxcar"); + boat = new DecoBlock(Material.iron).setBlockName("boat").setStepSound(Block.soundTypeMetal).setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":boat"); + + machine_well = new MachineOilWell().setBlockName("machine_well").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_well"); + machine_pumpjack = new MachinePumpjack().setBlockName("machine_pumpjack").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_pumpjack"); + machine_fracking_tower = new MachineFrackingTower().setBlockName("machine_fracking_tower").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + oil_pipe = new BlockNoDrop(Material.iron).setBlockName("oil_pipe").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":oil_pipe"); + machine_flare = new MachineGasFlare(Material.iron).setBlockName("machine_flare").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + chimney_brick = new MachineChimneyBrick(Material.iron).setBlockName("chimney_brick").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); + chimney_industrial = new MachineChimneyIndustrial(Material.iron).setBlockName("chimney_industrial").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":concrete_colored_ext.machine"); + machine_refinery = new MachineRefinery(Material.iron).setBlockName("machine_refinery").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_refinery"); + machine_vacuum_distill = new MachineVacuumDistill(Material.iron).setBlockName("machine_vacuum_distill").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_fraction_tower = new MachineFractionTower(Material.iron).setBlockName("machine_fraction_tower").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + fraction_spacer = new FractionSpacer(Material.iron).setBlockName("fraction_spacer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_catalytic_cracker = new MachineCatalyticCracker(Material.iron).setBlockName("machine_catalytic_cracker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_catalytic_reformer = new MachineCatalyticReformer(Material.iron).setBlockName("machine_catalytic_reformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_hydrotreater = new MachineHydrotreater(Material.iron).setBlockName("machine_hydrotreater").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_coker = new MachineCoker(Material.iron).setBlockName("machine_coker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_pyrooven = new MachinePyroOven(Material.iron).setBlockName("machine_pyrooven").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_autosaw = new MachineAutosaw().setBlockName("machine_autosaw").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_excavator = new MachineExcavator().setBlockName("machine_excavator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_ore_slopper = new MachineOreSlopper().setBlockName("machine_ore_slopper").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_mining_laser = new MachineMiningLaser(Material.iron).setBlockName("machine_mining_laser").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_mining_laser"); + barricade = new BlockNoDrop(Material.sand).setBlockName("barricade").setHardness(1.0F).setResistance(2.5F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":barricade"); + machine_assembler = new MachineAssembler(Material.iron).setBlockName("machine_assembler").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_assembler"); + machine_assemfac = new MachineAssemfac(Material.iron).setBlockName("machine_assemfac").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_arc_welder = new MachineArcWelder(Material.iron).setBlockName("machine_arc_welder").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_soldering_station = new MachineSolderingStation(Material.iron).setBlockName("machine_soldering_station").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_chemplant = new MachineChemplant(Material.iron).setBlockName("machine_chemplant").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_chemfac = new MachineChemfac(Material.iron).setBlockName("machine_chemfac").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_mixer = new MachineMixer(Material.iron).setBlockName("machine_mixer").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_fluidtank = new MachineFluidTank(Material.iron).setBlockName("machine_fluidtank").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_fluidtank"); + machine_bat9000 = new MachineBigAssTank9000(Material.iron).setBlockName("machine_bat9000").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_orbus = new MachineOrbus(Material.iron).setBlockName("machine_orbus").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_turbofan = new MachineTurbofan(Material.iron).setBlockName("machine_turbofan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_turbofan"); + machine_turbinegas = new MachineTurbineGas(Material.iron).setBlockName("machine_turbinegas").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_lpw2 = new MachineLPW2().setBlockName("machine_lpw2").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + press_preheater = new BlockBase(Material.iron).setBlockName("press_preheater").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":press_preheater"); + machine_press = new MachinePress(Material.iron).setBlockName("machine_press").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_press"); + machine_epress = new MachineEPress(Material.iron).setBlockName("machine_epress").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_epress"); + machine_conveyor_press = new MachineConveyorPress(Material.iron).setBlockName("machine_conveyor_press").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_ammo_press = new MachineAmmoPress().setBlockName("machine_ammo_press").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + reactor_research = new ReactorResearch(Material.iron).setBlockName("machine_reactor_small").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_reactor_small"); + reactor_zirnox = new ReactorZirnox(Material.iron).setBlockName("machine_zirnox").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + zirnox_destroyed = new ZirnoxDestroyed(Material.iron).setBlockName("zirnox_destroyed").setHardness(100.0F).setResistance(800.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_controller = new MachineReactorControl(Material.iron).setBlockName("machine_controller").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null); + + machine_boiler_off = new MachineBoiler(false).setBlockName("machine_boiler_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":machine_boiler_off"); + + machine_steam_engine = new MachineSteamEngine().setBlockName("machine_steam_engine").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_turbine = new MachineTurbine(Material.iron).setBlockName("machine_turbine").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_turbine"); + machine_large_turbine = new MachineLargeTurbine(Material.iron).setBlockName("machine_large_turbine").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_large_turbine"); + machine_chungus = new MachineChungus(Material.iron).setBlockName("machine_chungus").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_chungus"); + machine_condenser = new MachineCondenser(Material.iron).setBlockName("machine_condenser").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":condenser"); + machine_tower_small = new MachineTowerSmall(Material.iron).setBlockName("machine_tower_small").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); + machine_tower_large = new MachineTowerLarge(Material.iron).setBlockName("machine_tower_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":concrete"); + machine_condenser_powered = new MachineCondenserPowered(Material.iron).setBlockName("machine_condenser_powered").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); + + machine_deuterium_extractor = new MachineDeuteriumExtractor(Material.iron).setBlockName("machine_deuterium_extractor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_deuterium_extractor_side"); + machine_deuterium_tower = new DeuteriumTower(Material.iron).setBlockName("machine_deuterium_tower").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":concrete"); + + machine_liquefactor = new MachineLiquefactor().setBlockName("machine_liquefactor").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); + machine_solidifier = new MachineSolidifier().setBlockName("machine_solidifier").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); + machine_compressor = new MachineCompressor().setBlockName("machine_compressor").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); + + machine_electrolyser = new MachineElectrolyser().setBlockName("machine_electrolyser").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); + + machine_autocrafter = new MachineAutocrafter().setBlockName("machine_autocrafter").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab); + machine_funnel = new MachineFunnel().setBlockName("machine_funnel").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab); + + anvil_iron = new NTMAnvil(Material.iron, NTMAnvil.TIER_IRON).setBlockName("anvil_iron").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_iron"); + anvil_lead = new NTMAnvil(Material.iron, NTMAnvil.TIER_IRON).setBlockName("anvil_lead").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_lead"); + anvil_steel = new NTMAnvil(Material.iron, NTMAnvil.TIER_STEEL).setBlockName("anvil_steel").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_steel"); + anvil_desh = new NTMAnvil(Material.iron, NTMAnvil.TIER_OIL).setBlockName("anvil_desh").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_desh"); + anvil_ferrouranium = new NTMAnvil(Material.iron, NTMAnvil.TIER_NUCLEAR).setBlockName("anvil_ferrouranium").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_ferrouranium"); + anvil_saturnite = new NTMAnvil(Material.iron, NTMAnvil.TIER_RBMK).setBlockName("anvil_saturnite").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_saturnite"); + anvil_bismuth_bronze = new NTMAnvil(Material.iron, NTMAnvil.TIER_RBMK).setBlockName("anvil_bismuth_bronze").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_bismuth_bronze"); + anvil_arsenic_bronze = new NTMAnvil(Material.iron, NTMAnvil.TIER_RBMK).setBlockName("anvil_arsenic_bronze").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_arsenic_bronze"); + anvil_schrabidate = new NTMAnvil(Material.iron, NTMAnvil.TIER_FUSION).setBlockName("anvil_schrabidate").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_schrabidate"); + anvil_dnt = new NTMAnvil(Material.iron, NTMAnvil.TIER_PARTICLE).setBlockName("anvil_dnt").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_dnt"); + anvil_osmiridium = new NTMAnvil(Material.iron, NTMAnvil.TIER_GERALD).setBlockName("anvil_osmiridium").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_osmiridium"); + anvil_murky = new NTMAnvil(Material.iron, 1916169).setBlockName("anvil_murky").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":anvil_steel"); + + machine_waste_drum = new WasteDrum(Material.iron).setBlockName("machine_waste_drum").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":waste_drum"); + machine_storage_drum = new StorageDrum(Material.iron).setBlockName("machine_storage_drum").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_storage_drum"); + + machine_schrabidium_transmutator = new MachineSchrabidiumTransmutator(Material.iron).setBlockName("machine_schrabidium_transmutator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab); + + machine_siren = new MachineSiren(Material.iron).setBlockName("machine_siren").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_siren"); + + machine_spp_bottom = new SPPBottom(Material.iron).setBlockName("machine_spp_bottom").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_spp_top = new SPPTop(Material.iron).setBlockName("machine_spp_top").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + + radiobox = new Radiobox(Material.iron).setBlockName("radiobox").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":radiobox"); + radiorec = new RadioRec(Material.iron).setBlockName("radiorec").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":radiorec"); + + machine_forcefield = new MachineForceField(Material.iron).setBlockName("machine_forcefield").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_forcefield"); + + cheater_virus = new CheaterVirus(Material.iron).setBlockName("cheater_virus").setHardness(Float.POSITIVE_INFINITY).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":cheater_virus"); + cheater_virus_seed = new CheaterVirusSeed(Material.iron).setBlockName("cheater_virus_seed").setHardness(Float.POSITIVE_INFINITY).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":cheater_virus_seed"); + crystal_virus = new CrystalVirus(Material.iron).setBlockName("crystal_virus").setHardness(15.0F).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":crystal_virus"); + crystal_hardened = new BlockGeneric(Material.iron).setBlockName("crystal_hardened").setHardness(15.0F).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":crystal_hardened"); + crystal_pulsar = new CrystalPulsar(Material.iron).setBlockName("crystal_pulsar").setHardness(15.0F).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":crystal_pulsar"); + taint = new BlockTaint(Material.iron).setBlockName("taint").setHardness(15.0F).setResistance(10.0F).setCreativeTab(null); + + vent_chlorine = new BlockVent(Material.iron).setBlockName("vent_chlorine").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vent_chlorine"); + vent_cloud = new BlockVent(Material.iron).setBlockName("vent_cloud").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vent_cloud"); + vent_pink_cloud = new BlockVent(Material.iron).setBlockName("vent_pink_cloud").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vent_pink_cloud"); + vent_chlorine_seal = new BlockClorineSeal(Material.iron).setBlockName("vent_chlorine_seal").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + chlorine_gas = new BlockGasClorine().setBlockName("chlorine_gas").setHardness(0.0F).setResistance(0.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":chlorine_gas"); + + gas_radon = new BlockGasRadon().setBlockName("gas_radon").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_radon"); + gas_radon_dense = new BlockGasRadonDense().setBlockName("gas_radon_dense").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_radon_dense"); + gas_radon_tomb = new BlockGasRadonTomb().setBlockName("gas_radon_tomb").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_radon_tomb"); + gas_meltdown = new BlockGasMeltdown().setBlockName("gas_meltdown").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_meltdown"); + gas_monoxide = new BlockGasMonoxide().setBlockName("gas_monoxide").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_monoxide"); + gas_asbestos = new BlockGasAsbestos().setBlockName("gas_asbestos").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_asbestos"); + gas_coal = new BlockGasCoal().setBlockName("gas_coal").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_coal"); + gas_flammable = new BlockGasFlammable().setBlockName("gas_flammable").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_flammable"); + gas_explosive = new BlockGasExplosive().setBlockName("gas_explosive").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_explosive"); + vacuum = new BlockVacuum().setBlockName("vacuum").setResistance(1000000F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vacuum"); + + absorber = new BlockAbsorber(Material.iron, 2.5F).setBlockName("absorber").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":absorber"); + absorber_red = new BlockAbsorber(Material.iron, 10F).setBlockName("absorber_red").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":absorber_red"); + absorber_green = new BlockAbsorber(Material.iron, 100F).setBlockName("absorber_green").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":absorber_green"); + absorber_pink = new BlockAbsorber(Material.iron, 10000F).setBlockName("absorber_pink").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":absorber_pink"); + decon = new BlockDecon(Material.iron).setBlockName("decon").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":decon_side"); + transission_hatch = new BlockTransission(Material.iron).setBlockName("transission_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":transission_hatch"); + + volcano_core = new BlockVolcano().setBlockName("volcano_core").setBlockUnbreakable().setResistance(10000.0F).setCreativeTab(MainRegistry.nukeTab).setBlockTextureName(RefStrings.MODID + ":volcano_core"); + volcano_rad_core = new BlockVolcano().setBlockName("volcano_rad_core").setBlockUnbreakable().setResistance(10000.0F).setCreativeTab(MainRegistry.nukeTab).setBlockTextureName(RefStrings.MODID + ":volcano_rad_core"); + + statue_elb_f = new DecoBlockAlt(Material.iron).setBlockName("#undef").setHardness(Float.POSITIVE_INFINITY).setLightLevel(1.0F).setResistance(Float.POSITIVE_INFINITY); + + mud_fluid = new MudFluid().setDensity(2500).setViscosity(3000).setLuminosity(5).setTemperature(2773).setUnlocalizedName("mud_fluid"); + FluidRegistry.registerFluid(mud_fluid); + mud_block = new MudBlock(mud_fluid, fluidmud.setReplaceable(), ModDamageSource.mudPoisoning).setBlockName("mud_block").setResistance(500F); + + acid_fluid = new AcidFluid().setDensity(2500).setViscosity(1500).setLuminosity(5).setTemperature(2773).setUnlocalizedName("acid_fluid"); + FluidRegistry.registerFluid(acid_fluid); + acid_block = new AcidBlock(acid_fluid, fluidacid.setReplaceable(), ModDamageSource.acid).setBlockName("acid_block").setResistance(500F); + + toxic_fluid = new ToxicFluid().setDensity(2500).setViscosity(2000).setLuminosity(15).setTemperature(2773).setUnlocalizedName("toxic_fluid"); + FluidRegistry.registerFluid(toxic_fluid); + toxic_block = new ToxicBlock(toxic_fluid, fluidtoxic.setReplaceable(), ModDamageSource.radiation).setBlockName("toxic_block").setResistance(500F); + + schrabidic_fluid = new SchrabidicFluid().setDensity(31200).setViscosity(500).setTemperature(273).setUnlocalizedName("schrabidic_fluid"); + FluidRegistry.registerFluid(schrabidic_fluid); + schrabidic_block = new SchrabidicBlock(schrabidic_fluid, fluidschrabidic.setReplaceable(), ModDamageSource.radiation).setBlockName("schrabidic_block").setResistance(500F); + + corium_fluid = new CoriumFluid().setDensity(600000).setViscosity(12000).setLuminosity(10).setTemperature(1500).setUnlocalizedName("corium_fluid"); + FluidRegistry.registerFluid(corium_fluid); + corium_block = new CoriumFinite(corium_fluid, fluidcorium).setBlockName("corium_block").setResistance(500F); + + volcanic_lava_fluid = new VolcanicFluid().setLuminosity(15).setDensity(3000).setViscosity(3000).setTemperature(1300).setUnlocalizedName("volcanic_lava_fluid"); + FluidRegistry.registerFluid(volcanic_lava_fluid); + volcanic_lava_block = new VolcanicBlock(volcanic_lava_fluid, Material.lava).setBlockName("volcanic_lava_block").setResistance(500F); + + rad_lava_fluid = new RadFluid().setLuminosity(15).setDensity(3000).setViscosity(3000).setTemperature(1300).setUnlocalizedName("rad_lava_fluid"); + FluidRegistry.registerFluid(rad_lava_fluid); + rad_lava_block = new RadBlock(rad_lava_fluid, Material.lava).setBlockName("rad_lava_block").setResistance(500F); + + sulfuric_acid_fluid = new GenericFluid("sulfuric_acid_fluid").setDensity(1840).setViscosity(1000).setTemperature(273); + FluidRegistry.registerFluid(sulfuric_acid_fluid); + sulfuric_acid_block = new GenericFluidBlock(sulfuric_acid_fluid, Material.water, "sulfuric_acid_still", "sulfuric_acid_flowing").setDamage(ModDamageSource.acid, 5F).setBlockName("sulfuric_acid_block").setResistance(500F); + + Fluid liquidConcrete = new GenericFluid("concrete_liquid").setViscosity(2000); + concrete_liquid = new GenericFiniteFluid(liquidConcrete, Material.rock, "concrete_liquid", "concrete_liquid_flowing").setQuantaPerBlock(4).setBlockName("concrete_liquid").setResistance(500F); + + dummy_block_vault = new DummyBlockVault(Material.iron).setBlockName("dummy_block_vault").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); + dummy_block_blast = new DummyBlockBlast(Material.iron).setBlockName("dummy_block_blast").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); + dummy_plate_compact_launcher = new DummyBlockMachine(Material.iron, compact_launcher, false).setBounds(0, 16, 0, 16, 16, 16).setBlockName("dummy_plate_compact_launcher").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); + dummy_port_compact_launcher = new DummyBlockMachine(Material.iron, compact_launcher, true).setBlockName("dummy_port_compact_launcher").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); + dummy_plate_launch_table = new DummyBlockMachine(Material.iron, launch_table, false).setBounds(0, 16, 0, 16, 16, 16).setBlockName("dummy_plate_launch_table").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); + dummy_port_launch_table = new DummyBlockMachine(Material.iron, launch_table, true).setBlockName("dummy_port_launch_table").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); + dummy_plate_cargo = new DummyBlockMachine(Material.iron, sat_dock, false).setBounds(0, 0, 0, 16, 8, 16).setBlockName("dummy_plate_cargo").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); + + ntm_dirt = new BlockNTMDirt().setBlockName("ntm_dirt").setHardness(0.5F).setStepSound(Block.soundTypeGravel).setCreativeTab(null).setBlockTextureName("dirt"); + + pink_log = new BlockPinkLog().setBlockName("pink_log").setHardness(0.5F).setStepSound(Block.soundTypeWood).setCreativeTab(null); + pink_planks = new BlockGeneric(Material.wood).setBlockName("pink_planks").setStepSound(Block.soundTypeWood).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pink_planks"); + pink_slab = new BlockPinkSlab(false, Material.wood).setBlockName("pink_slab").setStepSound(Block.soundTypeWood).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pink_planks"); + pink_double_slab = new BlockPinkSlab(true, Material.wood).setBlockName("pink_double_slab").setStepSound(Block.soundTypeWood).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pink_planks"); + pink_stairs = new BlockGenericStairs(pink_planks, 0).setBlockName("pink_stairs").setStepSound(Block.soundTypeWood).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pink_planks"); + } + + private static void registerBlock() { + //Test + GameRegistry.registerBlock(event_tester, event_tester.getUnlocalizedName()); + GameRegistry.registerBlock(obj_tester, obj_tester.getUnlocalizedName()); + GameRegistry.registerBlock(test_core, test_core.getUnlocalizedName()); + GameRegistry.registerBlock(test_charge, test_charge.getUnlocalizedName()); + GameRegistry.registerBlock(structure_anchor, structure_anchor.getUnlocalizedName()); + + //Ores + GameRegistry.registerBlock(ore_uranium, ore_uranium.getUnlocalizedName()); + GameRegistry.registerBlock(ore_uranium_scorched, ore_uranium_scorched.getUnlocalizedName()); + GameRegistry.registerBlock(ore_thorium, ore_thorium.getUnlocalizedName()); + GameRegistry.registerBlock(ore_titanium, ore_titanium.getUnlocalizedName()); + GameRegistry.registerBlock(ore_sulfur, ore_sulfur.getUnlocalizedName()); + GameRegistry.registerBlock(ore_niter, ore_niter.getUnlocalizedName()); + GameRegistry.registerBlock(ore_copper, ore_copper.getUnlocalizedName()); + GameRegistry.registerBlock(ore_tungsten, ore_tungsten.getUnlocalizedName()); + GameRegistry.registerBlock(ore_aluminium, ore_aluminium.getUnlocalizedName()); + GameRegistry.registerBlock(ore_fluorite, ore_fluorite.getUnlocalizedName()); + GameRegistry.registerBlock(ore_beryllium, ore_beryllium.getUnlocalizedName()); + GameRegistry.registerBlock(ore_lead, ore_lead.getUnlocalizedName()); + GameRegistry.registerBlock(ore_oil, ItemBlockLore.class, ore_oil.getUnlocalizedName()); + GameRegistry.registerBlock(ore_oil_empty, ore_oil_empty.getUnlocalizedName()); + GameRegistry.registerBlock(ore_oil_sand, ore_oil_sand.getUnlocalizedName()); + GameRegistry.registerBlock(ore_lignite, ore_lignite.getUnlocalizedName()); + GameRegistry.registerBlock(ore_asbestos, ore_asbestos.getUnlocalizedName()); + GameRegistry.registerBlock(ore_schrabidium, ItemBlockLore.class, ore_schrabidium.getUnlocalizedName()); + + //Rare Minerals + GameRegistry.registerBlock(ore_australium, ItemOreBlock.class, ore_australium.getUnlocalizedName()); + GameRegistry.registerBlock(ore_rare, ItemOreBlock.class, ore_rare.getUnlocalizedName()); + GameRegistry.registerBlock(ore_cobalt, ore_cobalt.getUnlocalizedName()); + GameRegistry.registerBlock(ore_cinnebar, ore_cinnebar.getUnlocalizedName()); + GameRegistry.registerBlock(ore_coltan, ore_coltan.getUnlocalizedName()); + + //Stone clusters + GameRegistry.registerBlock(cluster_iron, ItemBlockBase.class, cluster_iron.getUnlocalizedName()); + GameRegistry.registerBlock(cluster_titanium, ItemBlockBase.class, cluster_titanium.getUnlocalizedName()); + GameRegistry.registerBlock(cluster_aluminium, ItemBlockBase.class, cluster_aluminium.getUnlocalizedName()); + GameRegistry.registerBlock(cluster_copper, ItemBlockBase.class, cluster_copper.getUnlocalizedName()); + + //Bedrock ores + GameRegistry.registerBlock(ore_bedrock_oil, ore_bedrock_oil.getUnlocalizedName()); + + //Nice Meme + GameRegistry.registerBlock(ore_coal_oil, ore_coal_oil.getUnlocalizedName()); + GameRegistry.registerBlock(ore_coal_oil_burning, ore_coal_oil_burning.getUnlocalizedName()); + + //Nether Ores + GameRegistry.registerBlock(ore_nether_coal, ore_nether_coal.getUnlocalizedName()); + GameRegistry.registerBlock(ore_nether_smoldering, ore_nether_smoldering.getUnlocalizedName()); + GameRegistry.registerBlock(ore_nether_uranium, ore_nether_uranium.getUnlocalizedName()); + GameRegistry.registerBlock(ore_nether_uranium_scorched, ore_nether_uranium_scorched.getUnlocalizedName()); + GameRegistry.registerBlock(ore_nether_plutonium, ore_nether_plutonium.getUnlocalizedName()); + GameRegistry.registerBlock(ore_nether_tungsten, ore_nether_tungsten.getUnlocalizedName()); + GameRegistry.registerBlock(ore_nether_sulfur, ore_nether_sulfur.getUnlocalizedName()); + GameRegistry.registerBlock(ore_nether_fire, ore_nether_fire.getUnlocalizedName()); + GameRegistry.registerBlock(ore_nether_cobalt, ore_nether_cobalt.getUnlocalizedName()); + GameRegistry.registerBlock(ore_nether_schrabidium, ItemBlockLore.class, ore_nether_schrabidium.getUnlocalizedName()); + + //Meteor Ores + register(ore_meteor); + + //Gneiss Ores + GameRegistry.registerBlock(ore_gneiss_iron, ore_gneiss_iron.getUnlocalizedName()); + GameRegistry.registerBlock(ore_gneiss_gold, ore_gneiss_gold.getUnlocalizedName()); + GameRegistry.registerBlock(ore_gneiss_uranium, ore_gneiss_uranium.getUnlocalizedName()); + GameRegistry.registerBlock(ore_gneiss_uranium_scorched, ore_gneiss_uranium_scorched.getUnlocalizedName()); + GameRegistry.registerBlock(ore_gneiss_copper, ore_gneiss_copper.getUnlocalizedName()); + GameRegistry.registerBlock(ore_gneiss_asbestos, ore_gneiss_asbestos.getUnlocalizedName()); + GameRegistry.registerBlock(ore_gneiss_lithium, ore_gneiss_lithium.getUnlocalizedName()); + GameRegistry.registerBlock(ore_gneiss_schrabidium, ItemBlockLore.class, ore_gneiss_schrabidium.getUnlocalizedName()); + GameRegistry.registerBlock(ore_gneiss_rare, ItemOreBlock.class, ore_gneiss_rare.getUnlocalizedName()); + GameRegistry.registerBlock(ore_gneiss_gas, ore_gneiss_gas.getUnlocalizedName()); + + //Depth ores + GameRegistry.registerBlock(ore_depth_cinnebar, ItemBlockBase.class, ore_depth_cinnebar.getUnlocalizedName()); + GameRegistry.registerBlock(ore_depth_zirconium, ItemBlockBase.class, ore_depth_zirconium.getUnlocalizedName()); + GameRegistry.registerBlock(ore_depth_borax, ItemBlockBase.class, ore_depth_borax.getUnlocalizedName()); + GameRegistry.registerBlock(cluster_depth_iron, ItemBlockBase.class, cluster_depth_iron.getUnlocalizedName()); + GameRegistry.registerBlock(cluster_depth_titanium, ItemBlockBase.class, cluster_depth_titanium.getUnlocalizedName()); + GameRegistry.registerBlock(cluster_depth_tungsten, ItemBlockBase.class, cluster_depth_tungsten.getUnlocalizedName()); + GameRegistry.registerBlock(ore_alexandrite, ItemBlockBase.class, ore_alexandrite.getUnlocalizedName()); + + //Nether depth ores + GameRegistry.registerBlock(ore_depth_nether_neodymium, ItemBlockBase.class, ore_depth_nether_neodymium.getUnlocalizedName()); + + //Basalt ores + register(ore_basalt); + + //End Ores + GameRegistry.registerBlock(ore_tikite, ore_tikite.getUnlocalizedName()); + + //Bedrock ore + register(ore_bedrock); + register(ore_volcano); + + //Secret + register(stone_keyhole); + register(stone_keyhole_meta); + + //Resource-bearing Stones + register(stone_resource); + register(stalagmite); + register(stalactite); + register(stone_biome); + + //Stone Variants + GameRegistry.registerBlock(stone_porous, stone_porous.getUnlocalizedName()); + GameRegistry.registerBlock(stone_gneiss, stone_gneiss.getUnlocalizedName()); + GameRegistry.registerBlock(gneiss_brick, gneiss_brick.getUnlocalizedName()); + GameRegistry.registerBlock(gneiss_tile, gneiss_tile.getUnlocalizedName()); + GameRegistry.registerBlock(gneiss_chiseled, gneiss_chiseled.getUnlocalizedName()); + GameRegistry.registerBlock(stone_depth, ItemBlockBase.class, stone_depth.getUnlocalizedName()); + GameRegistry.registerBlock(depth_brick, ItemBlockBase.class, depth_brick.getUnlocalizedName()); + GameRegistry.registerBlock(depth_tiles, ItemBlockBase.class, depth_tiles.getUnlocalizedName()); + GameRegistry.registerBlock(stone_depth_nether, ItemBlockBase.class, stone_depth_nether.getUnlocalizedName()); + GameRegistry.registerBlock(depth_nether_brick, ItemBlockBase.class, depth_nether_brick.getUnlocalizedName()); + GameRegistry.registerBlock(depth_nether_tiles, ItemBlockBase.class, depth_nether_tiles.getUnlocalizedName()); + GameRegistry.registerBlock(depth_dnt, ItemBlockBase.class, depth_dnt.getUnlocalizedName()); + GameRegistry.registerBlock(basalt, basalt.getUnlocalizedName()); + GameRegistry.registerBlock(basalt_smooth, basalt_smooth.getUnlocalizedName()); + GameRegistry.registerBlock(basalt_brick, basalt_brick.getUnlocalizedName()); + GameRegistry.registerBlock(basalt_polished, basalt_polished.getUnlocalizedName()); + GameRegistry.registerBlock(basalt_tiles, basalt_tiles.getUnlocalizedName()); + //GameRegistry.registerBlock(stone_deep_cobble, ItemBlockBase.class, stone_deep_cobble.getUnlocalizedName()); + + //Blocks + GameRegistry.registerBlock(block_uranium, block_uranium.getUnlocalizedName()); + GameRegistry.registerBlock(block_u233, block_u233.getUnlocalizedName()); + GameRegistry.registerBlock(block_u235, block_u235.getUnlocalizedName()); + GameRegistry.registerBlock(block_u238, block_u238.getUnlocalizedName()); + GameRegistry.registerBlock(block_uranium_fuel, block_uranium_fuel.getUnlocalizedName()); + GameRegistry.registerBlock(block_neptunium, block_neptunium.getUnlocalizedName()); + GameRegistry.registerBlock(block_polonium, block_polonium.getUnlocalizedName()); + GameRegistry.registerBlock(block_mox_fuel, block_mox_fuel.getUnlocalizedName()); + GameRegistry.registerBlock(block_plutonium, block_plutonium.getUnlocalizedName()); + GameRegistry.registerBlock(block_pu238, block_pu238.getUnlocalizedName()); + GameRegistry.registerBlock(block_pu239, block_pu239.getUnlocalizedName()); + GameRegistry.registerBlock(block_pu240, block_pu240.getUnlocalizedName()); + GameRegistry.registerBlock(block_pu_mix, block_pu_mix.getUnlocalizedName()); + GameRegistry.registerBlock(block_plutonium_fuel, block_plutonium_fuel.getUnlocalizedName()); + GameRegistry.registerBlock(block_thorium, block_thorium.getUnlocalizedName()); + GameRegistry.registerBlock(block_thorium_fuel, block_thorium_fuel.getUnlocalizedName()); + GameRegistry.registerBlock(block_titanium, block_titanium.getUnlocalizedName()); + GameRegistry.registerBlock(block_sulfur, block_sulfur.getUnlocalizedName()); + GameRegistry.registerBlock(block_niter, block_niter.getUnlocalizedName()); + GameRegistry.registerBlock(block_copper, block_copper.getUnlocalizedName()); + GameRegistry.registerBlock(block_red_copper, block_red_copper.getUnlocalizedName()); + GameRegistry.registerBlock(block_advanced_alloy, block_advanced_alloy.getUnlocalizedName()); + GameRegistry.registerBlock(block_tungsten, block_tungsten.getUnlocalizedName()); + GameRegistry.registerBlock(block_aluminium, block_aluminium.getUnlocalizedName()); + GameRegistry.registerBlock(block_fluorite, block_fluorite.getUnlocalizedName()); + GameRegistry.registerBlock(block_beryllium, block_beryllium.getUnlocalizedName()); + GameRegistry.registerBlock(block_cobalt, block_cobalt.getUnlocalizedName()); + GameRegistry.registerBlock(block_steel, block_steel.getUnlocalizedName()); + GameRegistry.registerBlock(block_tcalloy, block_tcalloy.getUnlocalizedName()); + GameRegistry.registerBlock(block_cdalloy, block_cdalloy.getUnlocalizedName()); + GameRegistry.registerBlock(block_lead, block_lead.getUnlocalizedName()); + GameRegistry.registerBlock(block_bismuth, block_bismuth.getUnlocalizedName()); + GameRegistry.registerBlock(block_cadmium, block_cadmium.getUnlocalizedName()); + GameRegistry.registerBlock(block_coltan, block_coltan.getUnlocalizedName()); + GameRegistry.registerBlock(block_tantalium, block_tantalium.getUnlocalizedName()); + GameRegistry.registerBlock(block_niobium, block_niobium.getUnlocalizedName()); + GameRegistry.registerBlock(block_lithium, block_lithium.getUnlocalizedName()); + GameRegistry.registerBlock(block_zirconium, block_zirconium.getUnlocalizedName()); + GameRegistry.registerBlock(block_white_phosphorus, block_white_phosphorus.getUnlocalizedName()); + GameRegistry.registerBlock(block_red_phosphorus, block_red_phosphorus.getUnlocalizedName()); + GameRegistry.registerBlock(block_yellowcake, block_yellowcake.getUnlocalizedName()); + GameRegistry.registerBlock(block_scrap, block_scrap.getUnlocalizedName()); + GameRegistry.registerBlock(block_electrical_scrap, block_electrical_scrap.getUnlocalizedName()); + GameRegistry.registerBlock(block_fallout, block_fallout.getUnlocalizedName()); + GameRegistry.registerBlock(block_foam, block_foam.getUnlocalizedName()); + GameRegistry.registerBlock(block_graphite, block_graphite.getUnlocalizedName()); + register(block_coke); + GameRegistry.registerBlock(block_graphite_drilled, block_graphite_drilled.getUnlocalizedName()); + GameRegistry.registerBlock(block_graphite_fuel, block_graphite_fuel.getUnlocalizedName()); + GameRegistry.registerBlock(block_graphite_rod, block_graphite_rod.getUnlocalizedName()); + GameRegistry.registerBlock(block_graphite_plutonium, block_graphite_plutonium.getUnlocalizedName()); + GameRegistry.registerBlock(block_graphite_source, block_graphite_source.getUnlocalizedName()); + GameRegistry.registerBlock(block_graphite_lithium, block_graphite_lithium.getUnlocalizedName()); + GameRegistry.registerBlock(block_graphite_tritium, block_graphite_tritium.getUnlocalizedName()); + GameRegistry.registerBlock(block_graphite_detector, block_graphite_detector.getUnlocalizedName()); + GameRegistry.registerBlock(block_boron, block_boron.getUnlocalizedName()); + GameRegistry.registerBlock(block_insulator, block_insulator.getUnlocalizedName()); + GameRegistry.registerBlock(block_fiberglass, block_fiberglass.getUnlocalizedName()); + GameRegistry.registerBlock(block_asbestos, block_asbestos.getUnlocalizedName()); + GameRegistry.registerBlock(block_trinitite, block_trinitite.getUnlocalizedName()); + GameRegistry.registerBlock(block_waste, block_waste.getUnlocalizedName()); + GameRegistry.registerBlock(block_waste_painted, block_waste_painted.getUnlocalizedName()); + GameRegistry.registerBlock(block_waste_vitrified, block_waste_vitrified.getUnlocalizedName()); + GameRegistry.registerBlock(ancient_scrap, ancient_scrap.getUnlocalizedName()); + GameRegistry.registerBlock(block_corium, block_corium.getUnlocalizedName()); + GameRegistry.registerBlock(block_corium_cobble, block_corium_cobble.getUnlocalizedName()); + GameRegistry.registerBlock(block_schraranium, ItemBlockBase.class, block_schraranium.getUnlocalizedName()); + GameRegistry.registerBlock(block_schrabidium, ItemBlockBase.class, block_schrabidium.getUnlocalizedName()); + GameRegistry.registerBlock(block_schrabidate, ItemBlockBase.class, block_schrabidate.getUnlocalizedName()); + GameRegistry.registerBlock(block_solinium, ItemBlockBase.class, block_solinium.getUnlocalizedName()); + GameRegistry.registerBlock(block_schrabidium_fuel, ItemBlockBase.class, block_schrabidium_fuel.getUnlocalizedName()); + GameRegistry.registerBlock(block_euphemium, ItemBlockLore.class, block_euphemium.getUnlocalizedName()); + GameRegistry.registerBlock(block_schrabidium_cluster, ItemBlockBase.class, block_schrabidium_cluster.getUnlocalizedName()); + GameRegistry.registerBlock(block_euphemium_cluster, ItemBlockLore.class, block_euphemium_cluster.getUnlocalizedName()); + GameRegistry.registerBlock(block_dineutronium, block_dineutronium.getUnlocalizedName()); + GameRegistry.registerBlock(block_magnetized_tungsten, block_magnetized_tungsten.getUnlocalizedName()); + GameRegistry.registerBlock(block_combine_steel, block_combine_steel.getUnlocalizedName()); + GameRegistry.registerBlock(block_desh, block_desh.getUnlocalizedName()); + GameRegistry.registerBlock(block_dura_steel, block_dura_steel.getUnlocalizedName()); + GameRegistry.registerBlock(block_starmetal, block_starmetal.getUnlocalizedName()); + GameRegistry.registerBlock(block_polymer, block_polymer.getUnlocalizedName()); + GameRegistry.registerBlock(block_bakelite, block_bakelite.getUnlocalizedName()); + GameRegistry.registerBlock(block_rubber, block_rubber.getUnlocalizedName()); + GameRegistry.registerBlock(block_australium, ItemOreBlock.class, block_australium.getUnlocalizedName()); + GameRegistry.registerBlock(block_weidanium, ItemOreBlock.class, block_weidanium.getUnlocalizedName()); + GameRegistry.registerBlock(block_reiium, ItemOreBlock.class, block_reiium.getUnlocalizedName()); + GameRegistry.registerBlock(block_unobtainium, ItemOreBlock.class, block_unobtainium.getUnlocalizedName()); + GameRegistry.registerBlock(block_daffergon, ItemOreBlock.class, block_daffergon.getUnlocalizedName()); + GameRegistry.registerBlock(block_verticium, ItemOreBlock.class, block_verticium.getUnlocalizedName()); + register(block_cap); + GameRegistry.registerBlock(block_lanthanium, block_lanthanium.getUnlocalizedName()); + GameRegistry.registerBlock(block_ra226, block_ra226.getUnlocalizedName()); + GameRegistry.registerBlock(block_actinium, block_actinium.getUnlocalizedName()); + GameRegistry.registerBlock(block_tritium, block_tritium.getUnlocalizedName()); + GameRegistry.registerBlock(block_semtex, block_semtex.getUnlocalizedName()); + GameRegistry.registerBlock(block_c4, block_c4.getUnlocalizedName()); + GameRegistry.registerBlock(block_smore, block_smore.getUnlocalizedName()); + GameRegistry.registerBlock(block_slag, block_slag.getUnlocalizedName()); + + //Deco Blocks + GameRegistry.registerBlock(deco_titanium, deco_titanium.getUnlocalizedName()); + GameRegistry.registerBlock(deco_red_copper, deco_red_copper.getUnlocalizedName()); + GameRegistry.registerBlock(deco_tungsten, deco_tungsten.getUnlocalizedName()); + GameRegistry.registerBlock(deco_aluminium, deco_aluminium.getUnlocalizedName()); + GameRegistry.registerBlock(deco_steel, deco_steel.getUnlocalizedName()); + GameRegistry.registerBlock(deco_lead, deco_lead.getUnlocalizedName()); + GameRegistry.registerBlock(deco_beryllium, deco_beryllium.getUnlocalizedName()); + GameRegistry.registerBlock(deco_asbestos, deco_asbestos.getUnlocalizedName()); + GameRegistry.registerBlock(deco_emitter, ItemBlockBase.class, deco_emitter.getUnlocalizedName()); + GameRegistry.registerBlock(part_emitter, ItemBlockBase.class, part_emitter.getUnlocalizedName()); + GameRegistry.registerBlock(deco_loot, deco_loot.getUnlocalizedName()); + GameRegistry.registerBlock(pedestal, pedestal.getUnlocalizedName()); + GameRegistry.registerBlock(bobblehead, ItemBlockMeta.class, bobblehead.getUnlocalizedName()); + GameRegistry.registerBlock(snowglobe, ItemBlockMeta.class, snowglobe.getUnlocalizedName()); + GameRegistry.registerBlock(plushie, ItemBlockBase.class, plushie.getUnlocalizedName()); + GameRegistry.registerBlock(deco_rbmk, deco_rbmk.getUnlocalizedName()); + GameRegistry.registerBlock(deco_rbmk_smooth, deco_rbmk_smooth.getUnlocalizedName()); + + //Gravel + GameRegistry.registerBlock(gravel_obsidian, ItemBlockBlastInfo.class, gravel_obsidian.getUnlocalizedName()); + GameRegistry.registerBlock(gravel_diamond, ItemBlockLore.class, gravel_diamond.getUnlocalizedName()); + + //Lamps + GameRegistry.registerBlock(lamp_tritium_green_off, lamp_tritium_green_off.getUnlocalizedName()); + GameRegistry.registerBlock(lamp_tritium_green_on, lamp_tritium_green_on.getUnlocalizedName()); + GameRegistry.registerBlock(lamp_tritium_blue_off, lamp_tritium_blue_off.getUnlocalizedName()); + GameRegistry.registerBlock(lamp_tritium_blue_on, lamp_tritium_blue_on.getUnlocalizedName()); + GameRegistry.registerBlock(lamp_demon, lamp_demon.getUnlocalizedName()); + GameRegistry.registerBlock(lantern, lantern.getUnlocalizedName()); + GameRegistry.registerBlock(lantern_behemoth, lantern_behemoth.getUnlocalizedName()); + GameRegistry.registerBlock(spotlight_incandescent, spotlight_incandescent.getUnlocalizedName()); + GameRegistry.registerBlock(spotlight_incandescent_off, spotlight_incandescent_off.getUnlocalizedName()); + GameRegistry.registerBlock(spotlight_fluoro, spotlight_fluoro.getUnlocalizedName()); + GameRegistry.registerBlock(spotlight_fluoro_off, spotlight_fluoro_off.getUnlocalizedName()); + GameRegistry.registerBlock(spotlight_halogen, spotlight_halogen.getUnlocalizedName()); + GameRegistry.registerBlock(spotlight_halogen_off, spotlight_halogen_off.getUnlocalizedName()); + GameRegistry.registerBlock(spotlight_beam, spotlight_beam.getUnlocalizedName()); + register(floodlight); + GameRegistry.registerBlock(floodlight_beam, floodlight_beam.getUnlocalizedName()); + + //Reinforced Blocks + GameRegistry.registerBlock(asphalt, ItemBlockBlastInfo.class, asphalt.getUnlocalizedName()); + GameRegistry.registerBlock(asphalt_light, ItemBlockBlastInfo.class, asphalt_light.getUnlocalizedName()); + GameRegistry.registerBlock(reinforced_brick, ItemBlockBlastInfo.class, reinforced_brick.getUnlocalizedName()); + GameRegistry.registerBlock(reinforced_glass, ItemBlockBlastInfo.class, reinforced_glass.getUnlocalizedName()); + GameRegistry.registerBlock(reinforced_glass_pane, ItemBlockBlastInfo.class, reinforced_glass_pane.getUnlocalizedName()); + GameRegistry.registerBlock(reinforced_light, ItemBlockBlastInfo.class, reinforced_light.getUnlocalizedName()); + GameRegistry.registerBlock(reinforced_sand, ItemBlockBlastInfo.class, reinforced_sand.getUnlocalizedName()); + GameRegistry.registerBlock(reinforced_lamp_off, ItemBlockBlastInfo.class, reinforced_lamp_off.getUnlocalizedName()); + GameRegistry.registerBlock(reinforced_lamp_on, ItemBlockBlastInfo.class, reinforced_lamp_on.getUnlocalizedName()); + GameRegistry.registerBlock(reinforced_laminate, ItemBlockBlastInfo.class, reinforced_laminate.getUnlocalizedName()); + GameRegistry.registerBlock(reinforced_laminate_pane,ItemBlockBlastInfo.class, reinforced_laminate_pane.getUnlocalizedName()); + + //Bricks + GameRegistry.registerBlock(reinforced_stone, ItemBlockBlastInfo.class, reinforced_stone.getUnlocalizedName()); + GameRegistry.registerBlock(reinforced_ducrete, ItemBlockBlastInfo.class, reinforced_ducrete.getUnlocalizedName()); + GameRegistry.registerBlock(concrete_smooth, ItemBlockBlastInfo.class, concrete_smooth.getUnlocalizedName()); + GameRegistry.registerBlock(concrete_colored, ItemBlockColoredConcrete.class, concrete_colored.getUnlocalizedName()); + GameRegistry.registerBlock(concrete_colored_ext, ItemBlockBlastInfo.class, concrete_colored_ext.getUnlocalizedName()); + GameRegistry.registerBlock(concrete, ItemBlockBlastInfo.class, concrete.getUnlocalizedName()); + GameRegistry.registerBlock(concrete_asbestos, ItemBlockBlastInfo.class, concrete_asbestos.getUnlocalizedName()); + GameRegistry.registerBlock(concrete_super, ItemBlockBlastInfo.class, concrete_super.getUnlocalizedName()); + GameRegistry.registerBlock(concrete_super_broken, ItemBlockBlastInfo.class, concrete_super_broken.getUnlocalizedName()); + GameRegistry.registerBlock(ducrete_smooth, ItemBlockBlastInfo.class, ducrete_smooth.getUnlocalizedName()); + GameRegistry.registerBlock(ducrete, ItemBlockBlastInfo.class, ducrete.getUnlocalizedName()); + GameRegistry.registerBlock(concrete_pillar, ItemBlockBlastInfo.class, concrete_pillar.getUnlocalizedName()); + GameRegistry.registerBlock(brick_concrete, ItemBlockBlastInfo.class, brick_concrete.getUnlocalizedName()); + GameRegistry.registerBlock(brick_concrete_mossy, ItemBlockBlastInfo.class, brick_concrete_mossy.getUnlocalizedName()); + GameRegistry.registerBlock(brick_concrete_cracked, ItemBlockBlastInfo.class, brick_concrete_cracked.getUnlocalizedName()); + GameRegistry.registerBlock(brick_concrete_broken, ItemBlockBlastInfo.class, brick_concrete_broken.getUnlocalizedName()); + GameRegistry.registerBlock(brick_concrete_marked, ItemBlockBlastInfo.class, brick_concrete_marked.getUnlocalizedName()); + GameRegistry.registerBlock(brick_ducrete, ItemBlockBlastInfo.class, brick_ducrete.getUnlocalizedName()); + GameRegistry.registerBlock(brick_obsidian, ItemBlockBlastInfo.class, brick_obsidian.getUnlocalizedName()); + GameRegistry.registerBlock(brick_compound, ItemBlockBlastInfo.class, brick_compound.getUnlocalizedName()); + GameRegistry.registerBlock(brick_light, ItemBlockBlastInfo.class, brick_light.getUnlocalizedName()); + GameRegistry.registerBlock(brick_asbestos, brick_asbestos.getUnlocalizedName()); + GameRegistry.registerBlock(brick_fire, ItemBlockBlastInfo.class, brick_fire.getUnlocalizedName()); + + GameRegistry.registerBlock(concrete_slab, ItemModSlab.class, concrete_slab.getUnlocalizedName()); + GameRegistry.registerBlock(concrete_double_slab, ItemModSlab.class, concrete_double_slab.getUnlocalizedName()); + GameRegistry.registerBlock(concrete_brick_slab, ItemModSlab.class, concrete_brick_slab.getUnlocalizedName()); + GameRegistry.registerBlock(concrete_brick_double_slab, ItemModSlab.class, concrete_brick_double_slab.getUnlocalizedName()); + GameRegistry.registerBlock(brick_slab, ItemModSlab.class, brick_slab.getUnlocalizedName()); + GameRegistry.registerBlock(brick_double_slab, ItemModSlab.class, brick_double_slab.getUnlocalizedName()); + + GameRegistry.registerBlock(concrete_smooth_stairs, concrete_smooth_stairs.getUnlocalizedName()); + GameRegistry.registerBlock(concrete_stairs, concrete_stairs.getUnlocalizedName()); + GameRegistry.registerBlock(concrete_asbestos_stairs, concrete_asbestos_stairs.getUnlocalizedName()); + GameRegistry.registerBlock(ducrete_smooth_stairs, ducrete_smooth_stairs.getUnlocalizedName()); + GameRegistry.registerBlock(brick_concrete_stairs, brick_concrete_stairs.getUnlocalizedName()); + GameRegistry.registerBlock(brick_concrete_mossy_stairs, brick_concrete_mossy_stairs.getUnlocalizedName()); + GameRegistry.registerBlock(brick_concrete_cracked_stairs, brick_concrete_cracked_stairs.getUnlocalizedName()); + GameRegistry.registerBlock(brick_concrete_broken_stairs, brick_concrete_broken_stairs.getUnlocalizedName()); + GameRegistry.registerBlock(brick_ducrete_stairs, brick_ducrete_stairs.getUnlocalizedName()); + GameRegistry.registerBlock(reinforced_stone_stairs, reinforced_stone_stairs.getUnlocalizedName()); + GameRegistry.registerBlock(reinforced_brick_stairs, reinforced_brick_stairs.getUnlocalizedName()); + GameRegistry.registerBlock(brick_obsidian_stairs, brick_obsidian_stairs.getUnlocalizedName()); + GameRegistry.registerBlock(brick_light_stairs, brick_light_stairs.getUnlocalizedName()); + GameRegistry.registerBlock(brick_compound_stairs, brick_compound_stairs.getUnlocalizedName()); + GameRegistry.registerBlock(brick_asbestos_stairs, brick_asbestos_stairs.getUnlocalizedName()); + GameRegistry.registerBlock(brick_fire_stairs, brick_fire_stairs.getUnlocalizedName()); + GameRegistry.registerBlock(ducrete_stairs, ducrete_stairs.getUnlocalizedName()); + GameRegistry.registerBlock(asphalt_stairs, asphalt_stairs.getUnlocalizedName()); + + //CMB Building Elements + GameRegistry.registerBlock(cmb_brick, ItemBlockBlastInfo.class, cmb_brick.getUnlocalizedName()); + GameRegistry.registerBlock(cmb_brick_reinforced, ItemBlockBlastInfo.class, cmb_brick_reinforced.getUnlocalizedName()); + + //Tiles + GameRegistry.registerBlock(vinyl_tile, ItemBlockBlastInfo.class, vinyl_tile.getUnlocalizedName()); //i would rather die than dip into fucking blocks with subtypes again + + GameRegistry.registerBlock(tile_lab, tile_lab.getUnlocalizedName()); + GameRegistry.registerBlock(tile_lab_cracked, tile_lab_cracked.getUnlocalizedName()); + GameRegistry.registerBlock(tile_lab_broken, tile_lab_broken.getUnlocalizedName()); + + //Other defensive stuff + GameRegistry.registerBlock(barbed_wire, barbed_wire.getUnlocalizedName()); + GameRegistry.registerBlock(barbed_wire_fire, barbed_wire_fire.getUnlocalizedName()); + GameRegistry.registerBlock(barbed_wire_poison, barbed_wire_poison.getUnlocalizedName()); + GameRegistry.registerBlock(barbed_wire_acid, barbed_wire_acid.getUnlocalizedName()); + GameRegistry.registerBlock(barbed_wire_wither, barbed_wire_wither.getUnlocalizedName()); + GameRegistry.registerBlock(barbed_wire_ultradeath, barbed_wire_ultradeath.getUnlocalizedName()); + GameRegistry.registerBlock(spikes, spikes.getUnlocalizedName()); + GameRegistry.registerBlock(tesla, tesla.getUnlocalizedName()); + + //Charger + GameRegistry.registerBlock(charger, charger.getUnlocalizedName()); + //GameRegistry.registerBlock(floodlight, floodlight.getUnlocalizedName()); + + //Decoration Blocks + GameRegistry.registerBlock(block_meteor, block_meteor.getUnlocalizedName()); + GameRegistry.registerBlock(block_meteor_cobble, block_meteor_cobble.getUnlocalizedName()); + GameRegistry.registerBlock(block_meteor_broken, block_meteor_broken.getUnlocalizedName()); + GameRegistry.registerBlock(block_meteor_molten, block_meteor_molten.getUnlocalizedName()); + GameRegistry.registerBlock(block_meteor_treasure, block_meteor_treasure.getUnlocalizedName()); + GameRegistry.registerBlock(meteor_polished, meteor_polished.getUnlocalizedName()); + GameRegistry.registerBlock(meteor_brick, meteor_brick.getUnlocalizedName()); + GameRegistry.registerBlock(meteor_brick_mossy, meteor_brick_mossy.getUnlocalizedName()); + GameRegistry.registerBlock(meteor_brick_cracked, meteor_brick_cracked.getUnlocalizedName()); + GameRegistry.registerBlock(meteor_brick_chiseled, meteor_brick_chiseled.getUnlocalizedName()); + GameRegistry.registerBlock(meteor_pillar, meteor_pillar.getUnlocalizedName()); + GameRegistry.registerBlock(meteor_spawner, meteor_spawner.getUnlocalizedName()); + GameRegistry.registerBlock(meteor_battery, ItemBlockLore.class, meteor_battery.getUnlocalizedName()); + GameRegistry.registerBlock(brick_jungle, brick_jungle.getUnlocalizedName()); + GameRegistry.registerBlock(brick_jungle_cracked, brick_jungle_cracked.getUnlocalizedName()); + GameRegistry.registerBlock(brick_jungle_fragile, brick_jungle_fragile.getUnlocalizedName()); + GameRegistry.registerBlock(brick_jungle_lava, brick_jungle_lava.getUnlocalizedName()); + GameRegistry.registerBlock(brick_jungle_ooze, brick_jungle_ooze.getUnlocalizedName()); + GameRegistry.registerBlock(brick_jungle_mystic, brick_jungle_mystic.getUnlocalizedName()); + GameRegistry.registerBlock(brick_jungle_trap, ItemTrapBlock.class, brick_jungle_trap.getUnlocalizedName()); + GameRegistry.registerBlock(brick_jungle_glyph, ItemGlyphBlock.class, brick_jungle_glyph.getUnlocalizedName()); + GameRegistry.registerBlock(brick_jungle_circle, brick_jungle_circle.getUnlocalizedName()); + GameRegistry.registerBlock(brick_red, brick_red.getUnlocalizedName()); + register(deco_computer); + register(deco_crt); + register(deco_toaster); + GameRegistry.registerBlock(filing_cabinet, ItemBlockBase.class, filing_cabinet.getUnlocalizedName()); + GameRegistry.registerBlock(tape_recorder, tape_recorder.getUnlocalizedName()); + GameRegistry.registerBlock(steel_poles, steel_poles.getUnlocalizedName()); + GameRegistry.registerBlock(pole_top, pole_top.getUnlocalizedName()); + GameRegistry.registerBlock(pole_satellite_receiver, pole_satellite_receiver.getUnlocalizedName()); + GameRegistry.registerBlock(steel_wall, steel_wall.getUnlocalizedName()); + GameRegistry.registerBlock(steel_corner, steel_corner.getUnlocalizedName()); + GameRegistry.registerBlock(steel_roof, steel_roof.getUnlocalizedName()); + GameRegistry.registerBlock(steel_beam, steel_beam.getUnlocalizedName()); + register(steel_scaffold); + GameRegistry.registerBlock(steel_grate, steel_grate.getUnlocalizedName()); + register(steel_grate_wide); + //register(scaffold_dynamic); + GameRegistry.registerBlock(deco_pipe, ItemBlockBase.class, deco_pipe.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_rusted, ItemBlockBase.class, deco_pipe_rusted.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_green, ItemBlockBase.class, deco_pipe_green.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_green_rusted, ItemBlockBase.class, deco_pipe_green_rusted.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_red, ItemBlockBase.class, deco_pipe_red.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_marked, ItemBlockBase.class, deco_pipe_marked.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_rim, ItemBlockBase.class, deco_pipe_rim.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_rim_rusted, ItemBlockBase.class, deco_pipe_rim_rusted.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_rim_green, ItemBlockBase.class, deco_pipe_rim_green.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_rim_green_rusted, ItemBlockBase.class, deco_pipe_rim_green_rusted.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_rim_red, ItemBlockBase.class, deco_pipe_rim_red.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_rim_marked, ItemBlockBase.class, deco_pipe_rim_marked.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_framed, ItemBlockBase.class, deco_pipe_framed.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_framed_rusted, ItemBlockBase.class, deco_pipe_framed_rusted.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_framed_green, ItemBlockBase.class, deco_pipe_framed_green.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_framed_green_rusted, ItemBlockBase.class, deco_pipe_framed_green_rusted.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_framed_red, ItemBlockBase.class, deco_pipe_framed_red.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_framed_marked, ItemBlockBase.class, deco_pipe_framed_marked.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_quad, ItemBlockBase.class, deco_pipe_quad.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_quad_rusted, ItemBlockBase.class, deco_pipe_quad_rusted.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_quad_green, ItemBlockBase.class, deco_pipe_quad_green.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_quad_green_rusted, ItemBlockBase.class, deco_pipe_quad_green_rusted.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_quad_red, ItemBlockBase.class, deco_pipe_quad_red.getUnlocalizedName()); + GameRegistry.registerBlock(deco_pipe_quad_marked, ItemBlockBase.class, deco_pipe_quad_marked.getUnlocalizedName()); + register(plant_flower); + register(plant_tall); + register(plant_dead); + register(reeds); + register(vine_phosphor); + GameRegistry.registerBlock(mush, mush.getUnlocalizedName()); + GameRegistry.registerBlock(mush_block, mush_block.getUnlocalizedName()); + GameRegistry.registerBlock(mush_block_stem, mush_block_stem.getUnlocalizedName()); + register(glyphid_base); + register(glyphid_spawner); + GameRegistry.registerBlock(moon_turf, moon_turf.getUnlocalizedName()); + + //Waste + GameRegistry.registerBlock(waste_earth, waste_earth.getUnlocalizedName()); + GameRegistry.registerBlock(waste_mycelium, waste_mycelium.getUnlocalizedName()); + GameRegistry.registerBlock(waste_trinitite, waste_trinitite.getUnlocalizedName()); + GameRegistry.registerBlock(waste_trinitite_red, waste_trinitite_red.getUnlocalizedName()); + GameRegistry.registerBlock(waste_log, waste_log.getUnlocalizedName()); + GameRegistry.registerBlock(waste_leaves, waste_leaves.getUnlocalizedName()); + GameRegistry.registerBlock(waste_planks, waste_planks.getUnlocalizedName()); + GameRegistry.registerBlock(frozen_grass, frozen_grass.getUnlocalizedName()); + GameRegistry.registerBlock(frozen_dirt, frozen_dirt.getUnlocalizedName()); + GameRegistry.registerBlock(frozen_log, frozen_log.getUnlocalizedName()); + GameRegistry.registerBlock(frozen_planks, frozen_planks.getUnlocalizedName()); + GameRegistry.registerBlock(dirt_dead, dirt_dead.getUnlocalizedName()); + GameRegistry.registerBlock(dirt_oily, dirt_oily.getUnlocalizedName()); + GameRegistry.registerBlock(sand_dirty, sand_dirty.getUnlocalizedName()); + GameRegistry.registerBlock(sand_dirty_red, sand_dirty_red.getUnlocalizedName()); + GameRegistry.registerBlock(stone_cracked, stone_cracked.getUnlocalizedName()); + GameRegistry.registerBlock(fallout, fallout.getUnlocalizedName()); + GameRegistry.registerBlock(foam_layer, foam_layer.getUnlocalizedName()); + GameRegistry.registerBlock(sand_boron_layer, sand_boron_layer.getUnlocalizedName()); + GameRegistry.registerBlock(leaves_layer, leaves_layer.getUnlocalizedName()); + GameRegistry.registerBlock(oil_spill, oil_spill.getUnlocalizedName()); + GameRegistry.registerBlock(burning_earth, burning_earth.getUnlocalizedName()); + GameRegistry.registerBlock(tektite, tektite.getUnlocalizedName()); + GameRegistry.registerBlock(ore_tektite_osmiridium, ore_tektite_osmiridium.getUnlocalizedName()); + GameRegistry.registerBlock(impact_dirt, impact_dirt.getUnlocalizedName()); + + //RAD + register(sellafield_slaked); + register(sellafield_bedrock); + register(ore_sellafield_diamond); + register(ore_sellafield_emerald); + register(ore_sellafield_uranium_scorched); + register(ore_sellafield_schrabidium); + register(ore_sellafield_radgem); + GameRegistry.registerBlock(sellafield, ItemBlockNamedMeta.class, sellafield.getUnlocalizedName()); + + //Geysirs + GameRegistry.registerBlock(geysir_water, geysir_water.getUnlocalizedName()); + GameRegistry.registerBlock(geysir_chlorine, geysir_chlorine.getUnlocalizedName()); + GameRegistry.registerBlock(geysir_vapor, geysir_vapor.getUnlocalizedName()); + GameRegistry.registerBlock(geysir_nether, geysir_nether.getUnlocalizedName()); + + //Nukes + GameRegistry.registerBlock(nuke_gadget, nuke_gadget.getUnlocalizedName()); + GameRegistry.registerBlock(nuke_boy, nuke_boy.getUnlocalizedName()); + GameRegistry.registerBlock(nuke_man, nuke_man.getUnlocalizedName()); + GameRegistry.registerBlock(nuke_mike, nuke_mike.getUnlocalizedName()); + GameRegistry.registerBlock(nuke_tsar, nuke_tsar.getUnlocalizedName()); + GameRegistry.registerBlock(nuke_prototype, ItemPrototypeBlock.class, nuke_prototype.getUnlocalizedName()); + GameRegistry.registerBlock(nuke_fleija, nuke_fleija.getUnlocalizedName()); + GameRegistry.registerBlock(nuke_solinium, nuke_solinium.getUnlocalizedName()); + GameRegistry.registerBlock(nuke_n2, nuke_n2.getUnlocalizedName()); + GameRegistry.registerBlock(nuke_fstbmb, nuke_fstbmb.getUnlocalizedName()); + GameRegistry.registerBlock(nuke_custom, nuke_custom.getUnlocalizedName()); + + //Generic Bombs + GameRegistry.registerBlock(bomb_multi, bomb_multi.getUnlocalizedName()); + GameRegistry.registerBlock(crashed_balefire, crashed_balefire.getUnlocalizedName()); + GameRegistry.registerBlock(fireworks, fireworks.getUnlocalizedName()); + GameRegistry.registerBlock(dynamite, dynamite.getUnlocalizedName()); + GameRegistry.registerBlock(tnt, tnt.getUnlocalizedName()); + GameRegistry.registerBlock(semtex, semtex.getUnlocalizedName()); + GameRegistry.registerBlock(c4, c4.getUnlocalizedName()); + register(fissure_bomb); + + //Turrets + GameRegistry.registerBlock(turret_chekhov, turret_chekhov.getUnlocalizedName()); + GameRegistry.registerBlock(turret_friendly, turret_friendly.getUnlocalizedName()); + GameRegistry.registerBlock(turret_jeremy, turret_jeremy.getUnlocalizedName()); + GameRegistry.registerBlock(turret_tauon, turret_tauon.getUnlocalizedName()); + GameRegistry.registerBlock(turret_richard, turret_richard.getUnlocalizedName()); + GameRegistry.registerBlock(turret_howard, turret_howard.getUnlocalizedName()); + GameRegistry.registerBlock(turret_howard_damaged, turret_howard_damaged.getUnlocalizedName()); + GameRegistry.registerBlock(turret_maxwell, turret_maxwell.getUnlocalizedName()); + GameRegistry.registerBlock(turret_fritz, turret_fritz.getUnlocalizedName()); + //GameRegistry.registerBlock(turret_brandon, turret_brandon.getUnlocalizedName()); + GameRegistry.registerBlock(turret_arty, turret_arty.getUnlocalizedName()); + GameRegistry.registerBlock(turret_himars, turret_himars.getUnlocalizedName()); + GameRegistry.registerBlock(turret_sentry, turret_sentry.getUnlocalizedName()); + GameRegistry.registerBlock(turret_sentry_damaged, turret_sentry_damaged.getUnlocalizedName()); + + //Wall-mounted Explosives + GameRegistry.registerBlock(charge_dynamite, ItemBlockBase.class, charge_dynamite.getUnlocalizedName()); + GameRegistry.registerBlock(charge_miner, ItemBlockBase.class, charge_miner.getUnlocalizedName()); + GameRegistry.registerBlock(charge_c4, ItemBlockBase.class, charge_c4.getUnlocalizedName()); + GameRegistry.registerBlock(charge_semtex, ItemBlockBase.class, charge_semtex.getUnlocalizedName()); + + //Mines + GameRegistry.registerBlock(mine_ap, mine_ap.getUnlocalizedName()); + GameRegistry.registerBlock(mine_shrap, mine_shrap.getUnlocalizedName()); + GameRegistry.registerBlock(mine_he, mine_he.getUnlocalizedName()); + GameRegistry.registerBlock(mine_fat, mine_fat.getUnlocalizedName()); + + //Block Bombs + GameRegistry.registerBlock(flame_war, flame_war.getUnlocalizedName()); + GameRegistry.registerBlock(float_bomb, float_bomb.getUnlocalizedName()); + GameRegistry.registerBlock(therm_endo, therm_endo.getUnlocalizedName()); + GameRegistry.registerBlock(therm_exo, therm_exo.getUnlocalizedName()); + GameRegistry.registerBlock(emp_bomb, emp_bomb.getUnlocalizedName()); + GameRegistry.registerBlock(det_cord, det_cord.getUnlocalizedName()); + GameRegistry.registerBlock(det_charge, det_charge.getUnlocalizedName()); + GameRegistry.registerBlock(det_nuke, det_nuke.getUnlocalizedName()); + GameRegistry.registerBlock(det_miner, det_miner.getUnlocalizedName()); + GameRegistry.registerBlock(red_barrel, ItemBlockLore.class, red_barrel.getUnlocalizedName()); + GameRegistry.registerBlock(pink_barrel, ItemBlockLore.class, pink_barrel.getUnlocalizedName()); + GameRegistry.registerBlock(lox_barrel, ItemBlockLore.class, lox_barrel.getUnlocalizedName()); + GameRegistry.registerBlock(taint_barrel, taint_barrel.getUnlocalizedName()); + GameRegistry.registerBlock(yellow_barrel, yellow_barrel.getUnlocalizedName()); + GameRegistry.registerBlock(vitrified_barrel, vitrified_barrel.getUnlocalizedName()); + + //Siren + GameRegistry.registerBlock(machine_siren, machine_siren.getUnlocalizedName()); + + //This Thing + GameRegistry.registerBlock(broadcaster_pc, broadcaster_pc.getUnlocalizedName()); + + //Geiger Counter + GameRegistry.registerBlock(geiger, geiger.getUnlocalizedName()); + + //HEV Battery + GameRegistry.registerBlock(hev_battery, hev_battery.getUnlocalizedName()); + + //Chainlink Fence + GameRegistry.registerBlock(fence_metal, ItemBlockBase.class, fence_metal.getUnlocalizedName()); + + //Sands, Glass + GameRegistry.registerBlock(ash_digamma, ash_digamma.getUnlocalizedName()); + GameRegistry.registerBlock(sand_boron, sand_boron.getUnlocalizedName()); + GameRegistry.registerBlock(sand_lead, sand_lead.getUnlocalizedName()); + GameRegistry.registerBlock(sand_uranium, sand_uranium.getUnlocalizedName()); + GameRegistry.registerBlock(sand_polonium, sand_polonium.getUnlocalizedName()); + GameRegistry.registerBlock(sand_quartz, sand_quartz.getUnlocalizedName()); + GameRegistry.registerBlock(glass_boron, glass_boron.getUnlocalizedName()); + GameRegistry.registerBlock(glass_lead, glass_lead.getUnlocalizedName()); + GameRegistry.registerBlock(glass_uranium, glass_uranium.getUnlocalizedName()); + GameRegistry.registerBlock(glass_trinitite, glass_trinitite.getUnlocalizedName()); + GameRegistry.registerBlock(glass_polonium, glass_polonium.getUnlocalizedName()); + GameRegistry.registerBlock(glass_ash, glass_ash.getUnlocalizedName()); + GameRegistry.registerBlock(glass_quartz, glass_quartz.getUnlocalizedName()); + + //Silo Hatch + GameRegistry.registerBlock(seal_frame, seal_frame.getUnlocalizedName()); + GameRegistry.registerBlock(seal_controller, seal_controller.getUnlocalizedName()); + GameRegistry.registerBlock(seal_hatch, seal_hatch.getUnlocalizedName()); + + //Vault Door + GameRegistry.registerBlock(vault_door, vault_door.getUnlocalizedName()); + GameRegistry.registerBlock(blast_door, blast_door.getUnlocalizedName()); + GameRegistry.registerBlock(fire_door, fire_door.getUnlocalizedName()); + GameRegistry.registerBlock(transition_seal, transition_seal.getUnlocalizedName()); + GameRegistry.registerBlock(silo_hatch, silo_hatch.getUnlocalizedName()); + GameRegistry.registerBlock(silo_hatch_large, silo_hatch_large.getUnlocalizedName()); + GameRegistry.registerBlock(sliding_blast_door, sliding_blast_door.getUnlocalizedName()); + + //Doors + GameRegistry.registerBlock(door_metal, door_metal.getUnlocalizedName()); + GameRegistry.registerBlock(door_office, door_office.getUnlocalizedName()); + GameRegistry.registerBlock(door_bunker, door_bunker.getUnlocalizedName()); + GameRegistry.registerBlock(door_red, door_red.getUnlocalizedName()); + GameRegistry.registerBlock(secure_access_door, secure_access_door.getUnlocalizedName()); + GameRegistry.registerBlock(large_vehicle_door, large_vehicle_door.getUnlocalizedName()); + GameRegistry.registerBlock(qe_containment, qe_containment.getUnlocalizedName()); + GameRegistry.registerBlock(qe_sliding_door, qe_sliding_door.getUnlocalizedName()); + GameRegistry.registerBlock(round_airlock_door, round_airlock_door.getUnlocalizedName()); + GameRegistry.registerBlock(sliding_seal_door, sliding_seal_door.getUnlocalizedName()); + GameRegistry.registerBlock(water_door, water_door.getUnlocalizedName()); + + //Crates + register(crate_iron); + register(crate_steel); + register(crate_desh); + register(crate_tungsten); + register(crate_template); + register(safe); + register(mass_storage); + + //Junk + GameRegistry.registerBlock(boxcar, boxcar.getUnlocalizedName()); + GameRegistry.registerBlock(boat, boat.getUnlocalizedName()); + + //Machines + register(machine_autocrafter); + register(machine_funnel); + + register(anvil_iron); + register(anvil_lead); + register(anvil_steel); + register(anvil_desh); + register(anvil_ferrouranium); + register(anvil_saturnite); + register(anvil_bismuth_bronze); + register(anvil_arsenic_bronze); + register(anvil_schrabidate); + register(anvil_dnt); + register(anvil_osmiridium); + register(anvil_murky); + + GameRegistry.registerBlock(press_preheater, press_preheater.getUnlocalizedName()); + GameRegistry.registerBlock(machine_press, machine_press.getUnlocalizedName()); + GameRegistry.registerBlock(machine_epress, machine_epress.getUnlocalizedName()); + register(machine_conveyor_press); + register(machine_ammo_press); + register(pump_steam); + register(pump_electric); + register(heater_firebox); + register(heater_oven); + register(machine_ashpit); + register(heater_oilburner); + register(heater_electric); + register(heater_heatex); + register(furnace_iron); + register(furnace_steel); + register(furnace_combination); + register(machine_stirling); + register(machine_stirling_steel); + register(machine_stirling_creative); + register(machine_sawmill); + register(machine_crucible); + register(machine_strand_caster); + register(machine_boiler); + register(machine_industrial_boiler); + register(foundry_mold); + register(foundry_basin); + register(foundry_channel); + register(foundry_tank); + register(foundry_outlet); + register(foundry_slagtap); + register(slag); + register(machine_furnace_brick_off); + register(machine_furnace_brick_on); + register(machine_difurnace_off); + register(machine_difurnace_on); + register(machine_difurnace_extension); + GameRegistry.registerBlock(machine_difurnace_rtg_off, machine_difurnace_rtg_off.getUnlocalizedName()); + GameRegistry.registerBlock(machine_difurnace_rtg_on, machine_difurnace_rtg_on.getUnlocalizedName()); + GameRegistry.registerBlock(machine_centrifuge, machine_centrifuge.getUnlocalizedName()); + GameRegistry.registerBlock(machine_gascent, machine_gascent.getUnlocalizedName()); + GameRegistry.registerBlock(machine_fel, machine_fel.getUnlocalizedName()); + GameRegistry.registerBlock(machine_silex, machine_silex.getUnlocalizedName()); + register(machine_rotary_furnace); + GameRegistry.registerBlock(machine_crystallizer, machine_crystallizer.getUnlocalizedName()); + GameRegistry.registerBlock(machine_uf6_tank, machine_uf6_tank.getUnlocalizedName()); + GameRegistry.registerBlock(machine_puf6_tank, machine_puf6_tank.getUnlocalizedName()); + GameRegistry.registerBlock(machine_reactor_breeding, machine_reactor_breeding.getUnlocalizedName()); + GameRegistry.registerBlock(machine_nuke_furnace_off, machine_nuke_furnace_off.getUnlocalizedName()); + GameRegistry.registerBlock(machine_nuke_furnace_on, machine_nuke_furnace_on.getUnlocalizedName()); + GameRegistry.registerBlock(machine_rtg_furnace_off, machine_rtg_furnace_off.getUnlocalizedName()); + GameRegistry.registerBlock(machine_rtg_furnace_on, machine_rtg_furnace_on.getUnlocalizedName()); + register(machine_wood_burner); + register(machine_diesel); + register(machine_combustion_engine); + GameRegistry.registerBlock(machine_controller, machine_controller.getUnlocalizedName()); + GameRegistry.registerBlock(reactor_research, reactor_research.getUnlocalizedName()); + GameRegistry.registerBlock(reactor_zirnox, reactor_zirnox.getUnlocalizedName()); + GameRegistry.registerBlock(zirnox_destroyed, zirnox_destroyed.getUnlocalizedName()); + GameRegistry.registerBlock(machine_industrial_generator, machine_industrial_generator.getUnlocalizedName()); + GameRegistry.registerBlock(machine_radgen, machine_radgen.getUnlocalizedName()); + GameRegistry.registerBlock(machine_cyclotron, machine_cyclotron.getUnlocalizedName()); + GameRegistry.registerBlock(machine_exposure_chamber, machine_exposure_chamber.getUnlocalizedName()); + GameRegistry.registerBlock(machine_rtg_grey, machine_rtg_grey.getUnlocalizedName()); + GameRegistry.registerBlock(machine_geo, machine_geo.getUnlocalizedName()); + GameRegistry.registerBlock(machine_amgen, machine_amgen.getUnlocalizedName()); + GameRegistry.registerBlock(machine_minirtg, machine_minirtg.getUnlocalizedName()); + GameRegistry.registerBlock(machine_powerrtg, machine_powerrtg.getUnlocalizedName()); + GameRegistry.registerBlock(machine_radiolysis, machine_radiolysis.getUnlocalizedName()); + GameRegistry.registerBlock(machine_hephaestus, machine_hephaestus.getUnlocalizedName()); + GameRegistry.registerBlock(machine_spp_bottom, machine_spp_bottom.getUnlocalizedName()); + GameRegistry.registerBlock(machine_spp_top, machine_spp_top.getUnlocalizedName()); + + GameRegistry.registerBlock(hadron_plating, hadron_plating.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_plating_blue, hadron_plating_blue.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_plating_black, hadron_plating_black.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_plating_yellow, hadron_plating_yellow.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_plating_striped, hadron_plating_striped.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_plating_glass, hadron_plating_glass.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_plating_voltz, hadron_plating_voltz.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_coil_alloy, ItemBlockBase.class, hadron_coil_alloy.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_coil_gold, ItemBlockBase.class, hadron_coil_gold.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_coil_neodymium, ItemBlockBase.class, hadron_coil_neodymium.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_coil_magtung, ItemBlockBase.class, hadron_coil_magtung.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_coil_schrabidium, ItemBlockBase.class, hadron_coil_schrabidium.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_coil_schrabidate, ItemBlockBase.class, hadron_coil_schrabidate.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_coil_starmetal, ItemBlockBase.class, hadron_coil_starmetal.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_coil_chlorophyte, ItemBlockBase.class, hadron_coil_chlorophyte.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_coil_mese, ItemBlockBase.class, hadron_coil_mese.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_power, hadron_power.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_power_10m, hadron_power_10m.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_power_100m, hadron_power_100m.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_power_1g, hadron_power_1g.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_power_10g, hadron_power_10g.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_diode, hadron_diode.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_analysis, hadron_analysis.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_analysis_glass, hadron_analysis_glass.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_access, hadron_access.getUnlocalizedName()); + GameRegistry.registerBlock(hadron_core, hadron_core.getUnlocalizedName()); + register(hadron_cooler); + + register(pa_source); + register(pa_beamline); + register(pa_rfc); + register(pa_quadrupole); + register(pa_dipole); + register(pa_detector); + + GameRegistry.registerBlock(rbmk_rod, rbmk_rod.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_rod_mod, rbmk_rod_mod.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_rod_reasim, rbmk_rod_reasim.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_rod_reasim_mod, rbmk_rod_reasim_mod.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_control, rbmk_control.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_control_mod, rbmk_control_mod.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_control_auto, rbmk_control_auto.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_blank, rbmk_blank.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_boiler, rbmk_boiler.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_reflector, rbmk_reflector.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_absorber, rbmk_absorber.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_moderator, rbmk_moderator.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_outgasser, rbmk_outgasser.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_storage, rbmk_storage.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_cooler, rbmk_cooler.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_heater, rbmk_heater.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_console, rbmk_console.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_crane_console, rbmk_crane_console.getUnlocalizedName()); + register(rbmk_loader); + register(rbmk_steam_inlet); + register(rbmk_steam_outlet); + GameRegistry.registerBlock(pribris, pribris.getUnlocalizedName()); + GameRegistry.registerBlock(pribris_burning, pribris_burning.getUnlocalizedName()); + GameRegistry.registerBlock(pribris_radiating, pribris_radiating.getUnlocalizedName()); + GameRegistry.registerBlock(pribris_digamma, pribris_digamma.getUnlocalizedName()); + + GameRegistry.registerBlock(red_cable, red_cable.getUnlocalizedName()); + GameRegistry.registerBlock(red_cable_classic, red_cable_classic.getUnlocalizedName()); + GameRegistry.registerBlock(red_cable_paintable, red_cable_paintable.getUnlocalizedName()); + register(red_cable_gauge); + GameRegistry.registerBlock(red_wire_coated, red_wire_coated.getUnlocalizedName()); + GameRegistry.registerBlock(red_connector, ItemBlockBase.class, red_connector.getUnlocalizedName()); + GameRegistry.registerBlock(red_pylon, ItemBlockBase.class, red_pylon.getUnlocalizedName()); + register(red_pylon_medium_wood); + register(red_pylon_medium_wood_transformer); + register(red_pylon_medium_steel); + register(red_pylon_medium_steel_transformer); + GameRegistry.registerBlock(red_pylon_large, ItemBlockBase.class, red_pylon_large.getUnlocalizedName()); + GameRegistry.registerBlock(substation, ItemBlockBase.class, substation.getUnlocalizedName()); + GameRegistry.registerBlock(cable_switch, cable_switch.getUnlocalizedName()); + GameRegistry.registerBlock(cable_detector, cable_detector.getUnlocalizedName()); + GameRegistry.registerBlock(cable_diode, ItemBlockBase.class, cable_diode.getUnlocalizedName()); + GameRegistry.registerBlock(machine_detector, machine_detector.getUnlocalizedName()); + register(fluid_duct_neo); + register(fluid_duct_box); + register(fluid_duct_exhaust); + register(fluid_duct_paintable); + register(fluid_duct_gauge); + register(fluid_valve); + register(fluid_switch); + register(machine_drain); + register(radio_torch_sender); + register(radio_torch_receiver); + register(radio_torch_counter); + register(radio_torch_logic); + register(radio_telex); + + register(crane_extractor); + register(crane_inserter); + register(crane_grabber); + register(crane_router); + register(crane_boxer); + register(crane_unboxer); + register(conveyor); + register(conveyor_express); + register(conveyor_double); + register(conveyor_triple); + register(conveyor_chute); + register(conveyor_lift); + register(crane_splitter); + register(crane_partitioner); + register(drone_waypoint); + register(drone_crate); + register(drone_waypoint_request); + register(drone_dock); + register(drone_crate_provider); + register(drone_crate_requester); + register(fan); + register(piston_inserter); + + GameRegistry.registerBlock(chain, chain.getUnlocalizedName()); + GameRegistry.registerBlock(ladder_sturdy, ladder_sturdy.getUnlocalizedName()); + GameRegistry.registerBlock(ladder_iron, ladder_iron.getUnlocalizedName()); + GameRegistry.registerBlock(ladder_gold, ladder_gold.getUnlocalizedName()); + GameRegistry.registerBlock(ladder_titanium, ladder_titanium.getUnlocalizedName()); + GameRegistry.registerBlock(ladder_copper, ladder_copper.getUnlocalizedName()); + GameRegistry.registerBlock(ladder_tungsten, ladder_tungsten.getUnlocalizedName()); + GameRegistry.registerBlock(ladder_aluminium, ladder_aluminium.getUnlocalizedName()); + GameRegistry.registerBlock(ladder_steel, ladder_steel.getUnlocalizedName()); + GameRegistry.registerBlock(ladder_lead, ladder_lead.getUnlocalizedName()); + GameRegistry.registerBlock(ladder_cobalt, ladder_cobalt.getUnlocalizedName()); + + register(barrel_plastic); + register(barrel_corroded); + register(barrel_iron); + register(barrel_steel); + register(barrel_tcalloy); + register(barrel_antimatter); + register(machine_battery_potato); + register(machine_battery); + register(machine_lithium_battery); + register(machine_schrabidium_battery); + register(machine_dineutronium_battery); + register(machine_fensu); + register(capacitor_bus); + register(capacitor_copper); + register(capacitor_gold); + register(capacitor_niobium); + register(capacitor_tantalium); + register(capacitor_schrabidate); + GameRegistry.registerBlock(machine_transformer, machine_transformer.getUnlocalizedName()); + GameRegistry.registerBlock(machine_transformer_20, machine_transformer_20.getUnlocalizedName()); + GameRegistry.registerBlock(machine_transformer_dnt, machine_transformer_dnt.getUnlocalizedName()); + GameRegistry.registerBlock(machine_transformer_dnt_20, machine_transformer_dnt_20.getUnlocalizedName()); + GameRegistry.registerBlock(machine_converter_he_rf, machine_converter_he_rf.getUnlocalizedName()); + GameRegistry.registerBlock(machine_converter_rf_he, machine_converter_rf_he.getUnlocalizedName()); + GameRegistry.registerBlock(machine_electric_furnace_off, machine_electric_furnace_off.getUnlocalizedName()); + GameRegistry.registerBlock(machine_electric_furnace_on, machine_electric_furnace_on.getUnlocalizedName()); + GameRegistry.registerBlock(machine_arc_furnace_off, machine_arc_furnace_off.getUnlocalizedName()); + GameRegistry.registerBlock(machine_arc_furnace_on, machine_arc_furnace_on.getUnlocalizedName()); + GameRegistry.registerBlock(machine_microwave, machine_microwave.getUnlocalizedName()); + GameRegistry.registerBlock(machine_assembler, machine_assembler.getUnlocalizedName()); + GameRegistry.registerBlock(machine_assemfac, machine_assemfac.getUnlocalizedName()); + GameRegistry.registerBlock(machine_chemplant, machine_chemplant.getUnlocalizedName()); + GameRegistry.registerBlock(machine_chemfac, machine_chemfac.getUnlocalizedName()); + register(machine_arc_welder); + register(machine_soldering_station); + register(machine_arc_furnace); + register(machine_mixer); + register(machine_fluidtank); + register(machine_bat9000); + register(machine_orbus); + GameRegistry.registerBlock(machine_boiler_off, machine_boiler_off.getUnlocalizedName()); + register(machine_steam_engine); + register(machine_turbine); + register(machine_large_turbine); + register(machine_chungus); + GameRegistry.registerBlock(machine_condenser, machine_condenser.getUnlocalizedName()); + GameRegistry.registerBlock(machine_tower_small, machine_tower_small.getUnlocalizedName()); + GameRegistry.registerBlock(machine_tower_large, machine_tower_large.getUnlocalizedName()); + register(machine_condenser_powered); + GameRegistry.registerBlock(machine_deuterium_extractor, machine_deuterium_extractor.getUnlocalizedName()); + GameRegistry.registerBlock(machine_deuterium_tower, machine_deuterium_tower.getUnlocalizedName()); + GameRegistry.registerBlock(machine_liquefactor, ItemBlockBase.class, machine_liquefactor.getUnlocalizedName()); + GameRegistry.registerBlock(machine_solidifier, ItemBlockBase.class, machine_solidifier.getUnlocalizedName()); + register(machine_compressor); + GameRegistry.registerBlock(machine_electrolyser, machine_electrolyser.getUnlocalizedName()); + GameRegistry.registerBlock(machine_waste_drum, machine_waste_drum.getUnlocalizedName()); + GameRegistry.registerBlock(machine_storage_drum, machine_storage_drum.getUnlocalizedName()); + GameRegistry.registerBlock(machine_shredder, machine_shredder.getUnlocalizedName()); + register(machine_well); + register(machine_pumpjack); + register(machine_fracking_tower); + register(machine_flare); + register(chimney_brick); + register(chimney_industrial); + register(machine_refinery); + register(machine_vacuum_distill); + register(machine_fraction_tower); + register(fraction_spacer); + register(machine_catalytic_cracker); + register(machine_catalytic_reformer); + register(machine_hydrotreater); + register(machine_coker); + register(machine_pyrooven); + register(machine_autosaw); + register(machine_excavator); + register(machine_ore_slopper); + register(machine_mining_laser); + register(barricade); + register(machine_turbofan); + register(machine_turbinegas); + register(machine_lpw2); + GameRegistry.registerBlock(machine_schrabidium_transmutator, machine_schrabidium_transmutator.getUnlocalizedName()); + GameRegistry.registerBlock(machine_teleporter, machine_teleporter.getUnlocalizedName()); + GameRegistry.registerBlock(teleanchor, teleanchor.getUnlocalizedName()); + GameRegistry.registerBlock(field_disturber, field_disturber.getUnlocalizedName()); + GameRegistry.registerBlock(machine_satlinker, machine_satlinker.getUnlocalizedName()); + GameRegistry.registerBlock(machine_keyforge, machine_keyforge.getUnlocalizedName()); + GameRegistry.registerBlock(machine_armor_table, machine_armor_table.getUnlocalizedName()); + GameRegistry.registerBlock(machine_forcefield, machine_forcefield.getUnlocalizedName()); + GameRegistry.registerBlock(radiorec, radiorec.getUnlocalizedName()); + GameRegistry.registerBlock(radiobox, radiobox.getUnlocalizedName()); + + //Multiblock Parts + GameRegistry.registerBlock(struct_launcher, struct_launcher.getUnlocalizedName()); + GameRegistry.registerBlock(struct_scaffold, struct_scaffold.getUnlocalizedName()); + GameRegistry.registerBlock(struct_launcher_core, struct_launcher_core.getUnlocalizedName()); + GameRegistry.registerBlock(struct_launcher_core_large, struct_launcher_core_large.getUnlocalizedName()); + GameRegistry.registerBlock(struct_soyuz_core, struct_soyuz_core.getUnlocalizedName()); + GameRegistry.registerBlock(struct_iter_core, struct_iter_core.getUnlocalizedName()); + GameRegistry.registerBlock(struct_plasma_core, struct_plasma_core.getUnlocalizedName()); + GameRegistry.registerBlock(struct_watz_core, struct_watz_core.getUnlocalizedName()); + GameRegistry.registerBlock(struct_icf_core, struct_icf_core.getUnlocalizedName()); + + //Absorbers + GameRegistry.registerBlock(absorber, absorber.getUnlocalizedName()); + GameRegistry.registerBlock(absorber_red, absorber_red.getUnlocalizedName()); + GameRegistry.registerBlock(absorber_green, absorber_green.getUnlocalizedName()); + GameRegistry.registerBlock(absorber_pink, absorber_pink.getUnlocalizedName()); + GameRegistry.registerBlock(decon, decon.getUnlocalizedName()); + GameRegistry.registerBlock(transission_hatch, transission_hatch.getUnlocalizedName()); + + //Solar Tower Blocks + GameRegistry.registerBlock(machine_solar_boiler, machine_solar_boiler.getUnlocalizedName()); + GameRegistry.registerBlock(solar_mirror, solar_mirror.getUnlocalizedName()); + + //Literal fucking garbage + GameRegistry.registerBlock(factory_titanium_hull, factory_titanium_hull.getUnlocalizedName()); + GameRegistry.registerBlock(factory_advanced_hull, factory_advanced_hull.getUnlocalizedName()); + + //CM stuff + register(custom_machine, ItemCustomMachine.class); + register(cm_block); + register(cm_sheet); + register(cm_engine); + register(cm_tank); + register(cm_circuit); + register(cm_port); + register(cm_flux); + register(cm_heat); + register(cm_anchor); + + //PWR + register(pwr_fuel); + register(pwr_control); + register(pwr_channel); + register(pwr_heatex); + register(pwr_heatsink); + register(pwr_neutron_source); + register(pwr_reflector); + register(pwr_casing); + register(pwr_port); + register(pwr_controller); + register(pwr_block); + + //Multiblock Generators + register(fusion_conductor); + GameRegistry.registerBlock(fusion_center, fusion_center.getUnlocalizedName()); + GameRegistry.registerBlock(fusion_motor, fusion_motor.getUnlocalizedName()); + GameRegistry.registerBlock(fusion_heater, fusion_heater.getUnlocalizedName()); + GameRegistry.registerBlock(fusion_hatch, fusion_hatch.getUnlocalizedName()); + GameRegistry.registerBlock(plasma, ItemBlockLore.class, plasma.getUnlocalizedName()); + GameRegistry.registerBlock(iter, iter.getUnlocalizedName()); + GameRegistry.registerBlock(plasma_heater, plasma_heater.getUnlocalizedName()); + + register(watz_element); + register(watz_cooler); + register(watz_end); + register(watz); + register(watz_pump); + + register(machine_icf_press); + register(icf_laser_component); + register(icf_controller); + register(icf_block); + register(icf_component); + register(icf); + + //E + GameRegistry.registerBlock(balefire, balefire.getUnlocalizedName()); + GameRegistry.registerBlock(fire_digamma, fire_digamma.getUnlocalizedName()); + GameRegistry.registerBlock(digamma_matter, digamma_matter.getUnlocalizedName()); + register(volcano_core); + register(volcano_rad_core); + + //Dark Fusion Core + GameRegistry.registerBlock(dfc_emitter, dfc_emitter.getUnlocalizedName()); + GameRegistry.registerBlock(dfc_injector, dfc_injector.getUnlocalizedName()); + GameRegistry.registerBlock(dfc_receiver, dfc_receiver.getUnlocalizedName()); + GameRegistry.registerBlock(dfc_stabilizer, dfc_stabilizer.getUnlocalizedName()); + GameRegistry.registerBlock(dfc_core, dfc_core.getUnlocalizedName()); + + //Missile Blocks + GameRegistry.registerBlock(machine_missile_assembly, machine_missile_assembly.getUnlocalizedName()); + GameRegistry.registerBlock(launch_pad, launch_pad.getUnlocalizedName()); + GameRegistry.registerBlock(launch_pad_rusted, launch_pad_rusted.getUnlocalizedName()); + GameRegistry.registerBlock(launch_pad_large, launch_pad_large.getUnlocalizedName()); + GameRegistry.registerBlock(compact_launcher, compact_launcher.getUnlocalizedName()); + GameRegistry.registerBlock(launch_table, launch_table.getUnlocalizedName()); + GameRegistry.registerBlock(soyuz_launcher, soyuz_launcher.getUnlocalizedName()); + GameRegistry.registerBlock(sat_dock, sat_dock.getUnlocalizedName()); + GameRegistry.registerBlock(soyuz_capsule, soyuz_capsule.getUnlocalizedName()); + GameRegistry.registerBlock(crate_supply, crate_supply.getUnlocalizedName()); + GameRegistry.registerBlock(machine_radar, machine_radar.getUnlocalizedName()); + GameRegistry.registerBlock(machine_radar_large, machine_radar_large.getUnlocalizedName()); + GameRegistry.registerBlock(radar_screen, radar_screen.getUnlocalizedName()); + + //Guide + GameRegistry.registerBlock(book_guide, book_guide.getUnlocalizedName()); + + //Sat Blocks + GameRegistry.registerBlock(sat_mapper, sat_mapper.getUnlocalizedName()); + GameRegistry.registerBlock(sat_scanner, sat_scanner.getUnlocalizedName()); + GameRegistry.registerBlock(sat_radar, sat_radar.getUnlocalizedName()); + GameRegistry.registerBlock(sat_laser, sat_laser.getUnlocalizedName()); + GameRegistry.registerBlock(sat_foeq, sat_foeq.getUnlocalizedName()); + GameRegistry.registerBlock(sat_resonator, sat_resonator.getUnlocalizedName()); + + //Rails + GameRegistry.registerBlock(rail_wood, ItemBlockBase.class, rail_wood.getUnlocalizedName()); + GameRegistry.registerBlock(rail_narrow, ItemBlockBase.class, rail_narrow.getUnlocalizedName()); + GameRegistry.registerBlock(rail_highspeed, ItemBlockBase.class, rail_highspeed.getUnlocalizedName()); + GameRegistry.registerBlock(rail_booster, ItemBlockBase.class, rail_booster.getUnlocalizedName()); + register(rail_narrow_straight); + register(rail_narrow_curve); + register(rail_large_straight); + register(rail_large_straight_short); + register(rail_large_curve); + register(rail_large_curve_7); + register(rail_large_curve_9); + register(rail_large_ramp); + register(rail_large_buffer); + register(rail_large_switch); + register(rail_large_switch_flipped); + + //Crate + GameRegistry.registerBlock(crate, crate.getUnlocalizedName()); + GameRegistry.registerBlock(crate_weapon, crate_weapon.getUnlocalizedName()); + GameRegistry.registerBlock(crate_lead, crate_lead.getUnlocalizedName()); + GameRegistry.registerBlock(crate_metal, crate_metal.getUnlocalizedName()); + GameRegistry.registerBlock(crate_red, crate_red.getUnlocalizedName()); + GameRegistry.registerBlock(crate_can, crate_can.getUnlocalizedName()); + GameRegistry.registerBlock(crate_ammo, crate_ammo.getUnlocalizedName()); + GameRegistry.registerBlock(crate_jungle, crate_jungle.getUnlocalizedName()); + + //ElB + GameRegistry.registerBlock(statue_elb_f, statue_elb_f.getUnlocalizedName()); + + //Fluids + GameRegistry.registerBlock(mud_block, mud_block.getUnlocalizedName()); + GameRegistry.registerBlock(acid_block, acid_block.getUnlocalizedName()); + GameRegistry.registerBlock(toxic_block, toxic_block.getUnlocalizedName()); + GameRegistry.registerBlock(schrabidic_block, schrabidic_block.getUnlocalizedName()); + GameRegistry.registerBlock(corium_block, corium_block.getUnlocalizedName()); + GameRegistry.registerBlock(volcanic_lava_block, volcanic_lava_block.getUnlocalizedName()); + GameRegistry.registerBlock(rad_lava_block, rad_lava_block.getUnlocalizedName()); + GameRegistry.registerBlock(sulfuric_acid_block, sulfuric_acid_block.getUnlocalizedName()); + //GameRegistry.registerBlock(concrete_liquid, concrete_liquid.getUnlocalizedName()); + + //Multiblock Dummy Blocks + GameRegistry.registerBlock(dummy_block_vault, dummy_block_vault.getUnlocalizedName()); + GameRegistry.registerBlock(dummy_block_blast, dummy_block_blast.getUnlocalizedName()); + GameRegistry.registerBlock(dummy_plate_compact_launcher, dummy_plate_compact_launcher.getUnlocalizedName()); + GameRegistry.registerBlock(dummy_port_compact_launcher, dummy_port_compact_launcher.getUnlocalizedName()); + GameRegistry.registerBlock(dummy_plate_launch_table, dummy_plate_launch_table.getUnlocalizedName()); + GameRegistry.registerBlock(dummy_port_launch_table, dummy_port_launch_table.getUnlocalizedName()); + GameRegistry.registerBlock(dummy_plate_cargo, dummy_plate_cargo.getUnlocalizedName()); + + //Other Technical Blocks + GameRegistry.registerBlock(oil_pipe, oil_pipe.getUnlocalizedName()); + GameRegistry.registerBlock(vent_chlorine, vent_chlorine.getUnlocalizedName()); + GameRegistry.registerBlock(vent_cloud, vent_cloud.getUnlocalizedName()); + GameRegistry.registerBlock(vent_pink_cloud, vent_pink_cloud.getUnlocalizedName()); + GameRegistry.registerBlock(vent_chlorine_seal, vent_chlorine_seal.getUnlocalizedName()); + GameRegistry.registerBlock(chlorine_gas, chlorine_gas.getUnlocalizedName()); + GameRegistry.registerBlock(gas_radon, gas_radon.getUnlocalizedName()); + GameRegistry.registerBlock(gas_radon_dense, gas_radon_dense.getUnlocalizedName()); + GameRegistry.registerBlock(gas_radon_tomb, gas_radon_tomb.getUnlocalizedName()); + GameRegistry.registerBlock(gas_meltdown, gas_meltdown.getUnlocalizedName()); + GameRegistry.registerBlock(gas_monoxide, gas_monoxide.getUnlocalizedName()); + GameRegistry.registerBlock(gas_asbestos, gas_asbestos.getUnlocalizedName()); + GameRegistry.registerBlock(gas_coal, gas_coal.getUnlocalizedName()); + GameRegistry.registerBlock(gas_flammable, gas_flammable.getUnlocalizedName()); + GameRegistry.registerBlock(gas_explosive, gas_explosive.getUnlocalizedName()); + GameRegistry.registerBlock(vacuum, vacuum.getUnlocalizedName()); + + //??? + GameRegistry.registerBlock(crystal_virus, crystal_virus.getUnlocalizedName()); + GameRegistry.registerBlock(crystal_hardened, crystal_hardened.getUnlocalizedName()); + GameRegistry.registerBlock(crystal_pulsar, crystal_pulsar.getUnlocalizedName()); + GameRegistry.registerBlock(taint, ItemTaintBlock.class, taint.getUnlocalizedName()); + GameRegistry.registerBlock(cheater_virus, cheater_virus.getUnlocalizedName()); + GameRegistry.registerBlock(cheater_virus_seed, cheater_virus_seed.getUnlocalizedName()); + GameRegistry.registerBlock(ntm_dirt, ntm_dirt.getUnlocalizedName()); + GameRegistry.registerBlock(pink_log, pink_log.getUnlocalizedName()); + GameRegistry.registerBlock(pink_planks, pink_planks.getUnlocalizedName()); + GameRegistry.registerBlock(pink_slab, pink_slab.getUnlocalizedName()); + GameRegistry.registerBlock(pink_double_slab, pink_double_slab.getUnlocalizedName()); + GameRegistry.registerBlock(pink_stairs, pink_stairs.getUnlocalizedName()); + } + + private static void register(Block b) { + GameRegistry.registerBlock(b, ItemBlockBase.class, b.getUnlocalizedName()); + } + + private static void register(Block b, Class clazz) { + GameRegistry.registerBlock(b, clazz, b.getUnlocalizedName()); + } + + public static void addRemap(String unloc, Block block, int meta) { + Block remap = new BlockRemap(block, meta).setBlockName(unloc); + register(remap, ItemBlockRemap.class); + } + + // Pretty much the default getDrops function but with no damage set on the item (fucks with recipes) + // but setting the meta via damageDropped breaks creative middle-click and any WAILA-like overlays + public static ArrayList getDropsWithoutDamage(World world, Block block, int metadata, int fortune) { + ArrayList ret = new ArrayList(); + + int count = block.quantityDropped(metadata, fortune, world.rand); + for(int i = 0; i < count; i++) { + Item item = block.getItemDropped(metadata, world.rand, fortune); + if(item != null) { + ret.add(new ItemStack(item, 1, 0)); + } + } + + return ret; + } +} diff --git a/src/main/java/com/hbm/blocks/bomb/BlockChargeC4.java b/src/main/java/com/hbm/blocks/bomb/BlockChargeC4.java index ef67c63b8..65cca5d17 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockChargeC4.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockChargeC4.java @@ -5,6 +5,9 @@ import java.util.List; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorStandard; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; +import com.hbm.particle.helper.ExplosionCreator; import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.entity.player.EntityPlayer; @@ -22,10 +25,13 @@ public class BlockChargeC4 extends BlockChargeBase { world.setBlockToAir(x, y, z); safe = false; - ExplosionVNT xnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 15F).makeStandard(); + ExplosionVNT xnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 15F); xnt.setBlockAllocator(new BlockAllocatorStandard(32)); xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop()); + xnt.setEntityProcessor(new EntityProcessorStandard()); + xnt.setPlayerProcessor(new PlayerProcessorStandard()); xnt.explode(); + ExplosionCreator.composeEffectSmall(world, x + 0.5, y + 1, z + 0.5); return BombReturnCode.DETONATED; } diff --git a/src/main/java/com/hbm/blocks/bomb/BlockChargeDynamite.java b/src/main/java/com/hbm/blocks/bomb/BlockChargeDynamite.java index 9513e3c4d..b7f0b328d 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockChargeDynamite.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockChargeDynamite.java @@ -1,7 +1,7 @@ package com.hbm.blocks.bomb; -import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionNT; +import com.hbm.particle.helper.ExplosionSmallCreator; import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.world.World; @@ -17,7 +17,7 @@ public class BlockChargeDynamite extends BlockChargeBase { safe = false; ExplosionNT exp = new ExplosionNT(world, null, x + 0.5, y + 0.5, z + 0.5, 4F); exp.explode(); - ExplosionLarge.spawnParticles(world, x + 0.5, y + 0.5, z + 0.5, 20); + ExplosionSmallCreator.composeEffect(world, x + 0.5, y + 0.5, z + 0.5, 15, 3F, 1.25F); return BombReturnCode.DETONATED; } diff --git a/src/main/java/com/hbm/blocks/bomb/BlockChargeMiner.java b/src/main/java/com/hbm/blocks/bomb/BlockChargeMiner.java index 1470e078c..61903dca3 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockChargeMiner.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockChargeMiner.java @@ -2,9 +2,9 @@ package com.hbm.blocks.bomb; import java.util.List; -import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionNT; import com.hbm.explosion.ExplosionNT.ExAttrib; +import com.hbm.particle.helper.ExplosionSmallCreator; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -23,7 +23,7 @@ public class BlockChargeMiner extends BlockChargeBase { ExplosionNT exp = new ExplosionNT(world, null, x + 0.5, y + 0.5, z + 0.5, 4F); exp.addAllAttrib(ExAttrib.NOHURT, ExAttrib.ALLDROP); exp.explode(); - ExplosionLarge.spawnParticles(world, x + 0.5, y + 0.5, z + 0.5, 20); + ExplosionSmallCreator.composeEffect(world, x + 0.5, y + 0.5, z + 0.5, 15, 3F, 1.25F); return BombReturnCode.DETONATED; } diff --git a/src/main/java/com/hbm/blocks/bomb/BlockChargeSemtex.java b/src/main/java/com/hbm/blocks/bomb/BlockChargeSemtex.java index f731c7df2..ed880233d 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockChargeSemtex.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockChargeSemtex.java @@ -5,7 +5,7 @@ import java.util.List; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; -import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard; +import com.hbm.particle.helper.ExplosionCreator; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -27,8 +27,8 @@ public class BlockChargeSemtex extends BlockChargeBase { xnt.setBlockProcessor(new BlockProcessorStandard() .setAllDrop() .setFortune(3)); - xnt.setSFX(new ExplosionEffectStandard()); xnt.explode(); + ExplosionCreator.composeEffectSmall(world, x + 0.5, y + 1, z + 0.5); return BombReturnCode.DETONATED; } diff --git a/src/main/java/com/hbm/blocks/bomb/BlockCrashedBomb.java b/src/main/java/com/hbm/blocks/bomb/BlockCrashedBomb.java index 93683f0d2..f2a3f7783 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockCrashedBomb.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockCrashedBomb.java @@ -7,8 +7,8 @@ import com.hbm.config.BombConfig; import com.hbm.entity.logic.EntityBalefire; import com.hbm.interfaces.IBomb; import com.hbm.items.ModItems; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.bomb.TileEntityCrashedBomb; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/blocks/bomb/BlockVolcano.java b/src/main/java/com/hbm/blocks/bomb/BlockVolcano.java index f2a8d73d7..8ae9a63a3 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockVolcano.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockVolcano.java @@ -9,8 +9,8 @@ import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityShrapnel; import com.hbm.explosion.ExplosionNT; import com.hbm.explosion.ExplosionNT.ExAttrib; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/blocks/bomb/ExplosiveCharge.java b/src/main/java/com/hbm/blocks/bomb/ExplosiveCharge.java index 84ccebc63..dae6e61d4 100644 --- a/src/main/java/com/hbm/blocks/bomb/ExplosiveCharge.java +++ b/src/main/java/com/hbm/blocks/bomb/ExplosiveCharge.java @@ -5,10 +5,10 @@ import com.hbm.config.BombConfig; import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.item.EntityTNTPrimedBase; import com.hbm.entity.logic.EntityNukeExplosionMK5; -import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionNT; import com.hbm.interfaces.IBomb; import com.hbm.lib.RefStrings; +import com.hbm.particle.helper.ExplosionCreator; import net.minecraft.util.MathHelper; import cpw.mods.fml.relauncher.Side; @@ -65,7 +65,7 @@ public class ExplosiveCharge extends BlockDetonatable implements IBomb, IDetConn } if(this == ModBlocks.det_charge) { new ExplosionNT(world, null, x + 0.5, y + 0.5, z + 0.5, 15).overrideResolution(64).explode(); - ExplosionLarge.spawnParticles(world, x, y, z, ExplosionLarge.cloudFunction(15)); + ExplosionCreator.composeEffectStandard(world, x + 0.5, y + 1, z + 0.5); } if(this == ModBlocks.det_nuke) { world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.missileRadius, x + 0.5, y + 0.5, z + 0.5)); diff --git a/src/main/java/com/hbm/blocks/bomb/Landmine.java b/src/main/java/com/hbm/blocks/bomb/Landmine.java index 5f6b76062..03a505e55 100644 --- a/src/main/java/com/hbm/blocks/bomb/Landmine.java +++ b/src/main/java/com/hbm/blocks/bomb/Landmine.java @@ -5,6 +5,12 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionNukeSmall; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; +import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; +import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.interfaces.IBomb; import com.hbm.items.ModItems; import com.hbm.tileentity.bomb.TileEntityLandmine; @@ -31,7 +37,6 @@ public class Landmine extends BlockContainer implements IBomb { public Landmine(Material mat, double range, double height) { super(mat); - this.range = range; this.height = height; } @@ -41,20 +46,9 @@ public class Landmine extends BlockContainer implements IBomb { return new TileEntityLandmine(); } - @Override - public int getRenderType() { - return -1; - } - - @Override - public boolean isOpaqueCube() { - return false; - } - - @Override - public boolean renderAsNormalBlock() { - return false; - } + @Override public int getRenderType() { return -1; } + @Override public boolean isOpaqueCube() { return false; } + @Override public boolean renderAsNormalBlock() { return false; } @Override public Item getItemDropped(int i, Random rand, int j) { @@ -64,14 +58,10 @@ public class Landmine extends BlockContainer implements IBomb { @Override public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { float f = 0.0625F; - if(this == ModBlocks.mine_ap) - this.setBlockBounds(6 * f, 0.0F, 6 * f, 10 * f, 2 * f, 10 * f); - if(this == ModBlocks.mine_he) - this.setBlockBounds(4 * f, 0.0F, 4 * f, 12 * f, 2 * f, 12 * f); - if(this == ModBlocks.mine_shrap) - this.setBlockBounds(4 * f, 0.0F, 4 * f, 12 * f, 2 * f, 12 * f); - if(this == ModBlocks.mine_fat) - this.setBlockBounds(5 * f, 0.0F, 4 * f, 11 * f, 6 * f, 12 * f); + if(this == ModBlocks.mine_ap) this.setBlockBounds(5 * f, 0.0F, 5 * f, 11 * f, 1 * f, 11 * f); + if(this == ModBlocks.mine_he) this.setBlockBounds(4 * f, 0.0F, 4 * f, 12 * f, 2 * f, 12 * f); + if(this == ModBlocks.mine_shrap) this.setBlockBounds(5 * f, 0.0F, 5 * f, 11 * f, 1 * f, 11 * f); + if(this == ModBlocks.mine_fat) this.setBlockBounds(5 * f, 0.0F, 4 * f, 11 * f, 6 * f, 12 * f); } @Override @@ -147,12 +137,26 @@ public class Landmine extends BlockContainer implements IBomb { Landmine.safeMode = false; if(this == ModBlocks.mine_ap) { - world.newExplosion(null, x + 0.5, y + 0.5, z + 0.5, 2.5F, false, false); + ExplosionVNT vnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 3F); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(0.5, 10F).setupPiercing(5F, 0.2F)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectWeapon(5, 1F, 0.5F)); + vnt.explode(); } else if(this == ModBlocks.mine_he) { - ExplosionLarge.explode(world, x + 0.5, y + 0.5, z + 0.5, 3F, true, false, false); - world.newExplosion(null, x + 0.5, y + 2, z + 0.5, 15F, false, false); + ExplosionVNT vnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 4F); + vnt.setBlockAllocator(new BlockAllocatorStandard()); + vnt.setBlockProcessor(new BlockProcessorStandard()); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, 35).setupPiercing(15F, 0.2F)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectWeapon(15, 3.5F, 1.25F)); + vnt.explode(); } else if(this == ModBlocks.mine_shrap) { - ExplosionLarge.explode(world, x + 0.5, y + 0.5, z + 0.5, 1, true, false, false); + ExplosionVNT vnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 3F); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(0.5, 7.5F)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectWeapon(5, 1F, 0.5F)); + vnt.explode(); + ExplosionLarge.spawnShrapnelShower(world, x + 0.5, y + 0.5, z + 0.5, 0, 1D, 0, 45, 0.2D); ExplosionLarge.spawnShrapnels(world, x + 0.5, y + 0.5, z + 0.5, 5); } else if(this == ModBlocks.mine_fat) { @@ -162,5 +166,4 @@ public class Landmine extends BlockContainer implements IBomb { return BombReturnCode.DETONATED; } - } diff --git a/src/main/java/com/hbm/blocks/generic/BlockAmmoCrate.java b/src/main/java/com/hbm/blocks/generic/BlockAmmoCrate.java index a2925f119..1297da41e 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockAmmoCrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockAmmoCrate.java @@ -3,8 +3,8 @@ package com.hbm.blocks.generic; import java.util.ArrayList; import java.util.Random; -import com.hbm.items.ItemAmmoEnums.*; import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.lib.RefStrings; import cpw.mods.fml.relauncher.Side; @@ -69,27 +69,22 @@ public class BlockAmmoCrate extends Block { ret.add(new ItemStack(ModItems.cap_nuka, 12 + rand.nextInt(21))); ret.add(new ItemStack(ModItems.syringe_metal_stimpak, 1 + rand.nextInt(3))); + + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.P9_SP.ordinal())); + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.P9_FMJ.ordinal())); + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.M357_SP.ordinal())); + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.M357_FMJ.ordinal())); + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.M44_SP.ordinal())); + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.M44_FMJ.ordinal())); + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.R556_SP.ordinal())); + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.R556_FMJ.ordinal())); + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.R762_SP.ordinal())); + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.R762_FMJ.ordinal())); + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.G12.ordinal())); + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 16 + rand.nextInt(17), EnumAmmo.G12_SLUG.ordinal())); + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 2 + rand.nextInt(3), EnumAmmo.G40_HE.ordinal())); + if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_standard, 2 + rand.nextInt(3), EnumAmmo.ROCKET_HE.ordinal())); - if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_22lr, 16 + rand.nextInt(17))); - if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_9mm, 6 + rand.nextInt(13))); - if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_12gauge, 6 + rand.nextInt(4))); - if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_20gauge, 3 + rand.nextInt(4))); - if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_357, 10 + rand.nextInt(11))); - if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_357, 12 + rand.nextInt(15), Ammo357Magnum.IRON.ordinal())); - if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_50bmg, 2 + rand.nextInt(7))); - if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_rocket, 1)); - if(rand.nextBoolean()) ret.add(new ItemStack(ModItems.ammo_grenade, 1 + rand.nextInt(2))); - - if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_12gauge, 3, Ammo12Gauge.INCENDIARY.ordinal())); - if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_20gauge, 3, Ammo20Gauge.INCENDIARY.ordinal())); - if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_20gauge, 3, Ammo20Gauge.CAUSTIC.ordinal())); - if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_20gauge, 3, Ammo20Gauge.FLECHETTE.ordinal())); - if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_9mm, 7, Ammo9mm.AP.ordinal())); - if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_rocket, 1, AmmoRocket.INCENDIARY.ordinal())); - if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_rocket, 1, AmmoRocket.SLEEK.ordinal())); - if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_grenade, 1, AmmoGrenade.HE.ordinal())); - if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_grenade, 1, AmmoGrenade.INCENDIARY.ordinal())); - if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.ammo_grenade, 1, AmmoGrenade.SLEEK.ordinal())); if(rand.nextInt(10) == 0) ret.add(new ItemStack(ModItems.syringe_metal_super, 2)); return ret; diff --git a/src/main/java/com/hbm/blocks/generic/BlockBobble.java b/src/main/java/com/hbm/blocks/generic/BlockBobble.java index 1eae64640..5e5226e6f 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockBobble.java +++ b/src/main/java/com/hbm/blocks/generic/BlockBobble.java @@ -9,7 +9,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; @@ -57,22 +56,22 @@ public class BlockBobble extends BlockContainer implements IGUIProvider { public Item getItemDropped(int i, Random rand, int j) { return null; } - + @Override public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z, EntityPlayer player) { - + TileEntityBobble entity = (TileEntityBobble) world.getTileEntity(x, y, z); - + if(entity != null) { return new ItemStack(this, 1, entity.type.ordinal()); } - + return super.getPickBlock(target, world, x, y, z, player); } @Override public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) { - + if(!player.capabilities.isCreativeMode) { harvesters.set(player); if(!world.isRemote) { @@ -88,7 +87,7 @@ public class BlockBobble extends BlockContainer implements IGUIProvider { harvesters.set(null); } } - + @Override public void harvestBlock(World world, EntityPlayer player, int x, int y, int z, int meta) { player.addStat(StatList.mineBlockStatArray[getIdFromBlock(this)], 1); @@ -97,11 +96,11 @@ public class BlockBobble extends BlockContainer implements IGUIProvider { @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - + if(world.isRemote) { FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); return true; - + } else { return true; } @@ -110,7 +109,7 @@ public class BlockBobble extends BlockContainer implements IGUIProvider { @Override @SideOnly(Side.CLIENT) public void getSubBlocks(Item item, CreativeTabs tab, List list) { - + for(int i = 1; i < BobbleType.values().length; i++) list.add(new ItemStack(item, 1, i)); } @@ -119,12 +118,12 @@ public class BlockBobble extends BlockContainer implements IGUIProvider { public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { int meta = MathHelper.floor_double((double)((player.rotationYaw + 180.0F) * 16.0F / 360.0F) + 0.5D) & 15; world.setBlockMetadataWithNotify(x, y, z, meta, 2); - + TileEntityBobble bobble = (TileEntityBobble) world.getTileEntity(x, y, z); bobble.type = BobbleType.values()[Math.abs(stack.getItemDamage()) % BobbleType.values().length]; bobble.markDirty(); } - + @Override public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { float f = 0.0625F; @@ -143,7 +142,7 @@ public class BlockBobble extends BlockContainer implements IGUIProvider { } public static class TileEntityBobble extends TileEntity { - + public BobbleType type = BobbleType.NONE; @Override @@ -157,7 +156,7 @@ public class BlockBobble extends BlockContainer implements IGUIProvider { this.writeToNBT(nbt); return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); } - + @Override public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { this.readFromNBT(pkt.func_148857_g()); @@ -175,9 +174,9 @@ public class BlockBobble extends BlockContainer implements IGUIProvider { nbt.setByte("type", (byte) type.ordinal()); } } - + public static enum BobbleType { - + NONE( "null", "null", null, null, false, ScrapType.BOARD_BLANK), STRENGTH( "Strength", "Strength", null, "It's essential to give your arguments impact.", false, ScrapType.BRIDGE_BIOS), PERCEPTION( "Perception", "Perception", null, "Only through observation will you perceive weakness.", false, ScrapType.BRIDGE_NORTH), @@ -199,7 +198,7 @@ public class BlockBobble extends BlockContainer implements IGUIProvider { NOS( "Dr Nostalgia", "Dr Nostalgia", "SSG and Vortex models", "Take a picture, I'ma pose, paparazzi$I've been drinking, moving like a zombie", true, ScrapType.BOARD_TRANSISTOR), DRILLGON( "Drillgon200", "Drillgon200", "1.12 Port", null, false, ScrapType.CPU_LOGIC), CIRNO( "Cirno", "Cirno", "the only multi layered skin i had", "No brain. Head empty.", true, ScrapType.BOARD_BLANK), - MICROWAVE( "Microwave", "Microwave", "OC Compatibility", "they call me the food heater", true, ScrapType.BOARD_CONVERTER), + MICROWAVE( "Microwave", "Microwave", "OC Compatibility and massive RBMK/packet optimizations", "they call me the food heater$john optimization", true, ScrapType.BOARD_CONVERTER), PEEP( "Peep", "LePeeperSauvage", "Coilgun, Leadburster and Congo Lake models, BDCL QC", "Fluffy ears can't hide in ash, nor snow.", true, ScrapType.CARD_BOARD), MELLOW( "MELLOWARPEGGIATION", "Mellow", "Industrial lighting, animation tools", "Make something cool now, ask for permission later.", true, ScrapType.CARD_PROCESSOR); @@ -209,7 +208,7 @@ public class BlockBobble extends BlockContainer implements IGUIProvider { public String inscription; //the flavor text public boolean skinLayers; public ScrapType scrap; - + private BobbleType(String name, String label, String contribution, String inscription, boolean layers, ScrapType scrap) { this.name = name; this.label = label; @@ -227,7 +226,7 @@ public class BlockBobble extends BlockContainer implements IGUIProvider { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIScreenBobble((TileEntityBobble) world.getTileEntity(x, y, z)); } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockCoalOil.java b/src/main/java/com/hbm/blocks/generic/BlockCoalOil.java index b2de5b355..cb6f4ea7e 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockCoalOil.java +++ b/src/main/java/com/hbm/blocks/generic/BlockCoalOil.java @@ -3,20 +3,12 @@ package com.hbm.blocks.generic; import java.util.Random; import com.hbm.blocks.ModBlocks; -import com.hbm.items.tool.ItemToolAbility; import net.minecraft.block.Block; import net.minecraft.block.material.Material; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; -import net.minecraft.item.ItemTool; -import net.minecraft.item.Item.ToolMaterial; -import net.minecraft.util.Vec3; -import net.minecraft.world.Explosion; import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; public class BlockCoalOil extends Block { @@ -24,19 +16,6 @@ public class BlockCoalOil extends Block { super(mat); } - @Override - public void onNeighborBlockChange(World world, int x, int y, int z, Block b) { - - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - - Block n = world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ); - - if(n == ModBlocks.ore_coal_oil_burning || n == ModBlocks.balefire || n == Blocks.fire || n.getMaterial() == Material.lava) { - world.scheduleBlockUpdate(x, y, z, this, world.rand.nextInt(20) + 2); - } - } - } - @Override public void updateTick(World world, int x, int y, int z, Random rand) { world.setBlock(x, y, z, ModBlocks.ore_coal_oil_burning); @@ -51,58 +30,4 @@ public class BlockCoalOil extends Block { public int quantityDropped(Random rand) { return 2 + rand.nextInt(2); } - - public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) { - - if(doesToolIgnite(player)) { - if(world.rand.nextInt(10) == 0) - world.setBlock(x, y, z, Blocks.fire); - } - } - - public void onBlockClicked(World world, int x, int y, int z, EntityPlayer player) { - - if(!world.isRemote) - return; - - if(doesToolIgnite(player)) { - - Random rand = world.rand; - for(int i = 0; i < 15; i++) { - Vec3 vec = Vec3.createVectorHelper(1, 0, 0); - vec.rotateAroundZ((float)(Math.PI * rand.nextDouble() * 2D)); - vec.rotateAroundY((float)(Math.PI * rand.nextDouble() * 2D)); - - double dX = vec.xCoord; - double dY = vec.yCoord; - double dZ = vec.zCoord; - - if(Math.abs(dX) > 1) - dX /= Math.abs(dX); - if(Math.abs(dY) > 1) - dY /= Math.abs(dY); - if(Math.abs(dX) > 1) - dZ /= Math.abs(dZ); - - world.spawnParticle("flame", x + 0.5 + dX * 0.75, y + 0.5 + dY * 0.75, z + 0.5 + dZ * 0.75, 0.0, 0.0, 0.0); - } - } - } - - public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion explosion) { - world.setBlock(x, y, z, Blocks.fire); - } - - private boolean doesToolIgnite(EntityPlayer player) { - - if(player.getHeldItem() == null) - return false; - - if(!(player.getHeldItem().getItem() instanceof ItemTool || player.getHeldItem().getItem() instanceof ItemToolAbility)) - return false; - - ItemTool tool = (ItemTool) player.getHeldItem().getItem(); - - return tool.func_150913_i() != ToolMaterial.WOOD; - } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockCrate.java b/src/main/java/com/hbm/blocks/generic/BlockCrate.java index 2fa11286c..a951b93e9 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockCrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockCrate.java @@ -5,7 +5,7 @@ import java.util.List; import java.util.Random; import com.hbm.blocks.ModBlocks; -import com.hbm.items.ItemAmmoEnums.Ammo44Magnum; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; import com.hbm.items.ModItems; import net.minecraft.block.BlockFalling; @@ -52,18 +52,6 @@ public class BlockCrate extends BlockFalling { // Supply Crate BlockCrate.addToListWithWeight(crateList, ModItems.syringe_metal_stimpak, 10); BlockCrate.addToListWithWeight(crateList, ModItems.syringe_antidote, 5); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver_iron, 9); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver, 7); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver_gold, 4); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver_lead, 6); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_revolver_cursed, 5); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_rpg, 5); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_fatman, 1); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_mp40, 7); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_uzi, 7); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_uboinik, 7); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_lever_action, 5); - BlockCrate.addToListWithWeight(crateList, ModItems.clip_bolt_action, 5); BlockCrate.addToListWithWeight(crateList, ModItems.grenade_generic, 8); BlockCrate.addToListWithWeight(crateList, ModItems.grenade_strong, 6); BlockCrate.addToListWithWeight(crateList, ModItems.grenade_mk2, 4); @@ -71,21 +59,13 @@ public class BlockCrate extends BlockFalling { BlockCrate.addToListWithWeight(crateList, ModItems.ammo_container, 2); // Weapon Crate - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_revolver, 9); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_revolver_gold, 7); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_revolver_cursed, 7); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_calamity, 3); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_rpg, 7); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_karl, 4); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_panzerschreck, 6); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_hk69, 8); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_stinger, 7); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_mp40, 9); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_uzi, 6); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_uzi_silencer, 5); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_uboinik, 8); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_lever_action, 7); - BlockCrate.addToListWithWeight(weaponList, ModItems.gun_bolt_action, 7); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_light_revolver, 10); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_maresleg, 7); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_heavy_revolver, 5); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_greasegun, 5); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_liberator, 2); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_flaregun, 8); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_panzerschreck, 1); // Lead Crate BlockCrate.addToListWithWeight(leadList, ModItems.ingot_uranium, 10); @@ -144,12 +124,12 @@ public class BlockCrate extends BlockFalling { // Red Crate BlockCrate.addToListWithWeight(redList, ModItems.mysteryshovel, 1); - BlockCrate.addToListWithWeight(redList, ModItems.gun_revolver_pip, 1); - BlockCrate.addToListWithWeight(redList, ModItems.gun_revolver_blackjack, 1); - BlockCrate.addToListWithWeight(redList, ModItems.gun_revolver_silver, 1); - BlockCrate.addToListWithWeight(redList, ModItems.ammo_44.stackFromEnum(Ammo44Magnum.PIP), 1); - BlockCrate.addToListWithWeight(redList, ModItems.ammo_44.stackFromEnum(Ammo44Magnum.BJ), 1); - BlockCrate.addToListWithWeight(redList, ModItems.ammo_44.stackFromEnum(Ammo44Magnum.SILVER), 1); + BlockCrate.addToListWithWeight(redList, ModItems.gun_heavy_revolver_lilmac, 1); + BlockCrate.addToListWithWeight(redList, ModItems.gun_autoshotgun_sexy, 1); + BlockCrate.addToListWithWeight(redList, ModItems.gun_maresleg_broken, 1); + BlockCrate.addToListWithWeight(redList, new ItemStack(ModItems.ammo_secret, 1, EnumAmmoSecret.M44_EQUESTRIAN.ordinal()), 1); + BlockCrate.addToListWithWeight(redList, new ItemStack(ModItems.ammo_secret, 1, EnumAmmoSecret.G12_EQUESTRIAN.ordinal()), 1); + BlockCrate.addToListWithWeight(redList, new ItemStack(ModItems.ammo_secret, 1, EnumAmmoSecret.BMG50_EQUESTRIAN.ordinal()), 1); BlockCrate.addToListWithWeight(redList, ModItems.battery_spark, 1); BlockCrate.addToListWithWeight(redList, ModItems.bottle_sparkle, 1); BlockCrate.addToListWithWeight(redList, ModItems.bottle_rad, 1); diff --git a/src/main/java/com/hbm/blocks/generic/BlockDynamicSlag.java b/src/main/java/com/hbm/blocks/generic/BlockDynamicSlag.java index fc053c80c..9c8176db1 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockDynamicSlag.java +++ b/src/main/java/com/hbm/blocks/generic/BlockDynamicSlag.java @@ -135,7 +135,7 @@ public class BlockDynamicSlag extends BlockContainer { TileEntitySlag self = (TileEntitySlag) s; /* Flow down */ - if(world.getBlock(x, y - 1, z).isReplaceable(world, x, y - 1, z)) { + if(world.getBlock(x, y - 1, z).isReplaceable(world, x, y - 1, z) && y > 0) { world.setBlock(x, y - 1, z, ModBlocks.slag); TileEntitySlag tile = (TileEntitySlag) Compat.getTileStandard(world, x, y - 1, z); tile.mat = self.mat; diff --git a/src/main/java/com/hbm/blocks/generic/BlockEmitter.java b/src/main/java/com/hbm/blocks/generic/BlockEmitter.java index 4d6b10199..af2b35e7f 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockEmitter.java +++ b/src/main/java/com/hbm/blocks/generic/BlockEmitter.java @@ -4,15 +4,15 @@ import java.awt.Color; import java.util.List; import com.hbm.blocks.ITooltipProvider; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.packet.toclient.AuxParticlePacketNT; import api.hbm.block.IToolable; +import com.hbm.tileentity.TileEntityLoadedBase; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockPistonBase; @@ -41,7 +41,7 @@ public class BlockEmitter extends BlockContainer implements IToolable, ITooltipP public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityEmitter(); } - + @Override public boolean isOpaqueCube() { return false; @@ -56,12 +56,12 @@ public class BlockEmitter extends BlockContainer implements IToolable, ITooltipP @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int i, float fx, float fy, float fz) { - + if(world.isRemote) return true; - + TileEntityEmitter te = (TileEntityEmitter)world.getTileEntity(x, y, z); - + if(player.getHeldItem() != null) { if(player.getHeldItem().getItem() instanceof ItemDye) { @@ -72,7 +72,7 @@ public class BlockEmitter extends BlockContainer implements IToolable, ITooltipP return true; } } - + return false; } @@ -80,31 +80,31 @@ public class BlockEmitter extends BlockContainer implements IToolable, ITooltipP public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { TileEntityEmitter te = (TileEntityEmitter)world.getTileEntity(x, y, z); - + if(tool == ToolType.SCREWDRIVER) { te.girth += 0.125F; te.markDirty(); return true; } - + if(tool == ToolType.DEFUSER) { te.girth -= 0.125F; if(te.girth < 0.125F) te.girth = 0.125F; te.markDirty(); return true; } - + if(tool == ToolType.HAND_DRILL) { te.effect = (te.effect + 1) % te.effectCount; te.markDirty(); return true; } - + return false; } - public static class TileEntityEmitter extends TileEntity implements INBTPacketReceiver { - + public static class TileEntityEmitter extends TileEntityLoadedBase { + public static final int range = 100; public int color; public int beam; @@ -114,39 +114,39 @@ public class BlockEmitter extends BlockContainer implements IToolable, ITooltipP @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); - + if(worldObj.getTotalWorldTime() % 20 == 0) { for(int i = 1; i <= range; i++) { - + beam = i; - + int x = xCoord + dir.offsetX * i; int y = yCoord + dir.offsetY * i; int z = zCoord + dir.offsetZ * i; - + Block b = worldObj.getBlock(x, y, z); if(b.isBlockSolid(worldObj, x, y, z, dir.ordinal())) { break; } } } - + if(effect == 4 && beam > 0) { if(worldObj.getTotalWorldTime() % 5 == 0) { double x = (int) (xCoord + dir.offsetX * (worldObj.getTotalWorldTime() / 5L) % beam) + 0.5; double y = (int) (yCoord + dir.offsetY * (worldObj.getTotalWorldTime() / 5L) % beam) + 0.5; double z = (int) (zCoord + dir.offsetZ * (worldObj.getTotalWorldTime() / 5L) % beam) + 0.5; - + int prevColor = color; if(color == 0) { color = Color.HSBtoRGB(worldObj.getTotalWorldTime() / 50.0F, 0.5F, 0.25F) & 16777215; } - + NBTTagCompound data = new NBTTagCompound(); data.setString("type", "plasmablast"); data.setFloat("r", ((float)((color & 0xff0000) >> 16)) / 256F); @@ -168,20 +168,16 @@ public class BlockEmitter extends BlockContainer implements IToolable, ITooltipP data.setFloat("pitch", -90); data.setFloat("yaw", 90); } - + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(worldObj.provider.dimensionId, x, y, z, 100)); - + color = prevColor; } } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("beam", this.beam); - data.setInteger("color", this.color); - data.setFloat("girth", this.girth); - data.setInteger("effect", this.effect); - PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(data, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 150)); + + networkPackNT(150); + } } @@ -191,7 +187,7 @@ public class BlockEmitter extends BlockContainer implements IToolable, ITooltipP this.writeToNBT(nbt); return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); } - + @Override public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { this.readFromNBT(pkt.func_148857_g()); @@ -212,7 +208,7 @@ public class BlockEmitter extends BlockContainer implements IToolable, ITooltipP nbt.setFloat("girth", this.girth); nbt.setInteger("effect", this.effect); } - + @Override public AxisAlignedBB getRenderBoundingBox() { return TileEntity.INFINITE_EXTENT_AABB; @@ -225,11 +221,19 @@ public class BlockEmitter extends BlockContainer implements IToolable, ITooltipP } @Override - public void networkUnpack(NBTTagCompound nbt) { - this.beam = nbt.getInteger("beam"); - this.color = nbt.getInteger("color"); - this.girth = nbt.getFloat("girth"); - this.effect = nbt.getInteger("effect"); + public void serialize(ByteBuf buf) { + buf.writeInt(this.beam); + buf.writeInt(this.color); + buf.writeFloat(this.girth); + buf.writeInt(this.effect); + } + + @Override + public void deserialize(ByteBuf buf) { + this.beam = buf.readInt(); + this.color = buf.readInt(); + this.girth = buf.readFloat(); + this.effect = buf.readInt(); } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockGlyphid.java b/src/main/java/com/hbm/blocks/generic/BlockGlyphid.java index e94c67f14..d43e266d4 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockGlyphid.java +++ b/src/main/java/com/hbm/blocks/generic/BlockGlyphid.java @@ -22,6 +22,7 @@ public class BlockGlyphid extends Block implements IBlockMulti { public IIcon[] iconsStandard = new IIcon[2]; public IIcon[] iconsInfested = new IIcon[2]; + public IIcon[] iconsRad = new IIcon[2]; public BlockGlyphid(Material mat) { super(mat); @@ -57,16 +58,19 @@ public class BlockGlyphid extends Block implements IBlockMulti { iconsStandard[1] = reg.registerIcon(RefStrings.MODID + ":glyphid_base_alt"); iconsInfested[0] = reg.registerIcon(RefStrings.MODID + ":glyphid_base_infested"); iconsInfested[1] = reg.registerIcon(RefStrings.MODID + ":glyphid_base_infested_alt"); + iconsRad[0] = reg.registerIcon(RefStrings.MODID + ":glyphid_base_rad"); + iconsRad[1] = reg.registerIcon(RefStrings.MODID + ":glyphid_base_rad_alt"); } protected IIcon[] getIconArray(int meta) { if(meta == 1) return this.iconsInfested; + if(meta == 2) return this.iconsRad; return this.iconsStandard; } @Override public int getSubCount() { - return 2; + return 3; } @Override diff --git a/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java b/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java index 1bd37155a..5986d6581 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java +++ b/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java @@ -38,7 +38,7 @@ import net.minecraft.world.World; public class BlockGlyphidSpawner extends BlockContainer implements IBlockMulti { - public IIcon[] icons = new IIcon[2]; + public IIcon[] icons = new IIcon[3]; public BlockGlyphidSpawner(Material mat) { super(mat); @@ -61,11 +61,12 @@ public class BlockGlyphidSpawner extends BlockContainer implements IBlockMulti { public void registerBlockIcons(IIconRegister reg) { icons[0] = reg.registerIcon(RefStrings.MODID + ":glyphid_eggs_alt"); icons[1] = reg.registerIcon(RefStrings.MODID + ":glyphid_eggs_infested"); + icons[2] = reg.registerIcon(RefStrings.MODID + ":glyphid_eggs_rad"); } @Override public int getSubCount() { - return 2; + return 3; } @Override @@ -122,15 +123,16 @@ public class BlockGlyphidSpawner extends BlockContainer implements IBlockMulti { List list = worldObj.getEntitiesWithinAABB(EntityGlyphid.class, AxisAlignedBB.getBoundingBox(xCoord - 5, yCoord + 1, zCoord - 5, xCoord + 6, yCoord + 7, zCoord + 6)); float soot = PollutionHandler.getPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT); - if(list.size() <= 3) { + int subtype = this.getBlockMetadata(); + if(list.size() <= 3 || subtype == EntityGlyphid.TYPE_RADIOACTIVE) { - ArrayList currentSwarm = createSwarm(soot, this.getBlockMetadata()); + ArrayList currentSwarm = createSwarm(soot, subtype); for(EntityGlyphid glyphid : currentSwarm) { trySpawnEntity(glyphid); } - if(!initialSpawn && worldObj.rand.nextInt(MobConfig.scoutSwarmSpawnChance + 1) == 0 && soot >= MobConfig.scoutThreshold) { + if(!initialSpawn && worldObj.rand.nextInt(MobConfig.scoutSwarmSpawnChance + 1) == 0 && soot >= MobConfig.scoutThreshold && subtype != EntityGlyphid.TYPE_RADIOACTIVE) { EntityGlyphidScout scout = new EntityGlyphidScout(worldObj); if(this.getBlockMetadata() == 1) scout.getDataWatcher().updateObject(EntityGlyphid.DW_SUBTYPE, (byte) EntityGlyphid.TYPE_INFECTED); trySpawnEntity(scout); @@ -168,6 +170,7 @@ public class BlockGlyphidSpawner extends BlockContainer implements IBlockMulti { if(soot >= chance[2] && rand.nextInt(100) <= adjustedChance) { EntityGlyphid entity = glyphid.getKey().apply(worldObj); if(meta == 1) entity.getDataWatcher().updateObject(EntityGlyphid.DW_SUBTYPE, (byte) EntityGlyphid.TYPE_INFECTED); + if(meta == 2) entity.getDataWatcher().updateObject(EntityGlyphid.DW_SUBTYPE, (byte) EntityGlyphid.TYPE_RADIOACTIVE); currentSpawns.add(entity); } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockHangingVine.java b/src/main/java/com/hbm/blocks/generic/BlockHangingVine.java new file mode 100644 index 000000000..b5a71c492 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockHangingVine.java @@ -0,0 +1,127 @@ +package com.hbm.blocks.generic; + +import java.util.ArrayList; + +import com.hbm.lib.RefStrings; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.IShearable; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockHangingVine extends Block implements IShearable { + + public BlockHangingVine(Material mat) { + super(mat); + } + + @Override + public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { + entity.motionX *= 0.5; + entity.motionY *= 0.5; + entity.motionZ *= 0.5; + entity.fallDistance = 0F; + } + + @Override + public boolean canPlaceBlockAt(World world, int x, int y, int z) { + return this.canBlockStay(world, x, y, z); + } + + @Override + public boolean canBlockStay(World world, int x, int y, int z) { + Block b = world.getBlock(x, y + 1, z); + return b.isSideSolid(world, x, y + 1, z, ForgeDirection.UP) || b == this; + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { + super.onNeighborBlockChange(world, x, y, z, block); + this.checkAndDropBlock(world, x, y, z); + } + + protected void checkAndDropBlock(World world, int x, int y, int z) { + if(!this.canBlockStay(world, x, y, z)) { + world.setBlock(x, y, z, Blocks.air); + } + } + + @Override protected boolean canSilkHarvest() { return true; } + + @Override + public boolean isShearable(ItemStack item, IBlockAccess world, int x, int y, int z) { + return true; + } + + @Override + public ArrayList onSheared(ItemStack item, IBlockAccess world, int x, int y, int z, int fortune) { + ArrayList ret = new ArrayList(); + ret.add(new ItemStack(this)); //placeholder + return ret; + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + return null; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @SideOnly(Side.CLIENT) public IIcon iconItem; + @SideOnly(Side.CLIENT) public IIcon iconGround; //when touching a solid face below + @SideOnly(Side.CLIENT) public IIcon iconHang; //when hanging mid-air + @SideOnly(Side.CLIENT) public IIcon iconGlow; //regular phosphor + @SideOnly(Side.CLIENT) public IIcon iconHangGlow; //phosphor in different position when hanging for variety + + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + this.iconItem = reg.registerIcon(RefStrings.MODID + ":vine_phosphor_item"); + this.blockIcon = reg.registerIcon(RefStrings.MODID + ":vine_phosphor"); + this.iconGround = reg.registerIcon(RefStrings.MODID + ":vine_phosphor_ground"); + this.iconHang = reg.registerIcon(RefStrings.MODID + ":vine_phosphor_hang"); + this.iconGlow = reg.registerIcon(RefStrings.MODID + ":vine_phosphor_spots"); + this.iconHangGlow = reg.registerIcon(RefStrings.MODID + ":vine_phosphor_spots_hang"); + } + + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess world, int x, int y, int z, boolean pass) { + Block b = world.getBlock(x, y - 1, z); + + if(!pass) + return b.isSideSolid(world, x, y, z, ForgeDirection.UP) ? iconGround : b == this ? blockIcon : iconHang; + else + return b.isAir(world, x, y, z) ? iconHangGlow : iconGlow; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return this.iconItem; + } + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + @Override + public int getRenderType() { + return renderID; + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockKeyhole.java b/src/main/java/com/hbm/blocks/generic/BlockKeyhole.java index d3b5a1bd7..f267857fd 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockKeyhole.java +++ b/src/main/java/com/hbm/blocks/generic/BlockKeyhole.java @@ -108,6 +108,14 @@ public class BlockKeyhole extends BlockStone { } } + if(world.rand.nextInt(1) == 0) { + int r = world.rand.nextInt(4); + if(r == 0) world.setBlock(x + width, y + 2, z, ModBlocks.stone_keyhole_meta, 4, 3); + if(r == 1) world.setBlock(x - width, y + 2, z, ModBlocks.stone_keyhole_meta, 5, 3); + if(r == 2) world.setBlock(x, y + 2, z + width, ModBlocks.stone_keyhole_meta, 2, 3); + if(r == 3) world.setBlock(x, y + 2, z - width, ModBlocks.stone_keyhole_meta, 3, 3); + } + for(int i = -width + 1; i <= width - 1; i++) { for(int j = -width + 1; j <= width - 1; j++) { //Floor and ceiling diff --git a/src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java b/src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java deleted file mode 100644 index bcccfe515..000000000 --- a/src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java +++ /dev/null @@ -1,319 +0,0 @@ -package com.hbm.blocks.generic; - -import java.awt.Color; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Random; - -import com.google.common.collect.HashBiMap; -import com.hbm.blocks.IBlockMultiPass; -import com.hbm.config.WorldConfig; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ModItems; -import com.hbm.lib.RefStrings; -import com.hbm.render.block.RenderBlockMultipass; -import com.hbm.util.ColorUtil; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.init.Blocks; -import net.minecraft.item.Item; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.NetworkManager; -import net.minecraft.network.Packet; -import net.minecraft.network.play.server.S35PacketUpdateTileEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.StatCollector; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; - -public class BlockMotherOfAllOres extends BlockContainer implements IBlockMultiPass { - - public static int override = -1; - - public static void shuffleOverride(Random rand) { - override = rand.nextInt(uniqueItems.size()); - } - - public static void resetOverride() { - override = -1; - } - - public BlockMotherOfAllOres() { - super(Material.rock); - this.setBlockTextureName("stone"); - } - - @Override - public TileEntity createNewTileEntity(World world, int meta) { - return new TileEntityRandomOre(); - } - - @Override - @SideOnly(Side.CLIENT) - public void getSubBlocks(Item item, CreativeTabs tab, List list) { - - for(int i = 0; i < uniqueItems.size(); i++) - list.add(new ItemStack(item, 1, i)); - } - - @Override - public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z) { - - TileEntity te = world.getTileEntity(x, y, z); - - if(te instanceof TileEntityRandomOre) { - TileEntityRandomOre ore = (TileEntityRandomOre) te; - return new ItemStack(this, 1, ore.getStackId()); - } - - return new ItemStack(ModItems.nothing); - } - - @Override - public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { - ArrayList ret = new ArrayList(); - - if(fortune == 0xFECE00) { - TileEntity te = world.getTileEntity(x, y, z); - - if(te instanceof TileEntityRandomOre) { - TileEntityRandomOre ore = (TileEntityRandomOre) te; - ComparableStack item = ore.getCompStack(); - ret.add(item.toStack()); - } - } - - return ret; - } - - - @Override - public void breakBlock(World world, int x, int y, int z, Block block, int meta) { - this.dropBlockAsItemWithChance(world, x, y, z, meta, 1, 0xFECE00); - } - - @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack stack) { - ((TileEntityRandomOre)world.getTileEntity(x, y, z)).setItem(stack.getItemDamage()); - world.markBlockForUpdate(x, y, z); - } - - @Override - public int getRenderType(){ - return IBlockMultiPass.getRenderType(); - } - - @Override - public int getPasses() { - return 2; - } - - private IIcon[] overlays = new IIcon[10]; - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister reg) { - - this.blockIcon = reg.registerIcon("stone"); - for(int i = 0; i < overlays.length; i++) { - overlays[i] = reg.registerIcon(RefStrings.MODID + ":ore_random_" + (i + 1)); - } - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { - - if(RenderBlockMultipass.currentPass == 0) - return Blocks.stone.getIcon(0, 0); - - TileEntity te = world.getTileEntity(x, y, z); - - if(te instanceof TileEntityRandomOre) { - TileEntityRandomOre ore = (TileEntityRandomOre) te; - int index = ore.getStackId() % overlays.length; - return overlays[index]; - } - - return Blocks.stone.getIcon(0, 0); - } - - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int meta) { - - if(RenderBlockMultipass.currentPass == 0) - return Blocks.stone.getIcon(0, 0); - - int index = meta % overlays.length; - return overlays[index]; - } - - @Override - @SideOnly(Side.CLIENT) - public int colorMultiplier(IBlockAccess world, int x, int y, int z) { - - if(RenderBlockMultipass.currentPass == 0) - return 0xffffff; - - TileEntity te = world.getTileEntity(x, y, z); - - if(te instanceof TileEntityRandomOre) { - TileEntityRandomOre ore = (TileEntityRandomOre) te; - ItemStack stack = ore.getStack(); - int color = ColorUtil.getAverageColorFromStack(stack); - color = ColorUtil.amplifyColor(color); - - Color col = new Color(color); - int r = col.getRed(); - int g = col.getGreen(); - int b = col.getBlue(); - - float[] hsb = new Color(color).RGBtoHSB(r, g, b, new float[3]); - - if(hsb[1] > 0F && hsb[1] < 0.75F) - hsb[1] = 0.75F; - - color = Color.HSBtoRGB(hsb[0], hsb[1], hsb[2]); - - return color; - } - - return super.colorMultiplier(world, x, y, z); - } - - public static class TileEntityRandomOre extends TileEntity { - - private ComparableStack stack; - - public TileEntityRandomOre() { - if(override != -1) { - setItem(override); - } - } - - public void setItem(int id) { - ComparableStack comp = itemMap.get(id); - this.stack = comp != null ? ((ComparableStack) comp.copy()) : null; - - if(this.worldObj != null) - this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); - } - - public int getStackId() { - return itemMap.inverse().get(getCompStack()); - } - - public ItemStack getStack() { - return getCompStack().toStack(); - } - - public ComparableStack getCompStack() { - - if(stack == null) { - int rand = worldObj.rand.nextInt(uniqueItems.size()); - stack = (ComparableStack) itemMap.get(rand).copy(); - this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); - } - - return stack != null ? stack : new ComparableStack(ModItems.nothing); - } - - @Override - public boolean canUpdate() { - return false; - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - int key = nbt.getInteger("item"); - this.setItem(key); - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - - try { - Integer key = itemMap.inverse().get(getCompStack()); - nbt.setInteger("item", key != null ? key : 0); - } catch(Exception ex) { } - } - - @Override - public Packet getDescriptionPacket() { - NBTTagCompound nbt = new NBTTagCompound(); - this.writeToNBT(nbt); - return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); - } - - @Override - public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { - this.readFromNBT(pkt.func_148857_g()); - } - } - - public static class ItemRandomOreBlock extends ItemBlock { - - public ItemRandomOreBlock(Block block) { - super(block); - this.setHasSubtypes(true); - this.setMaxDamage(0); - } - - @Override - public String getItemStackDisplayName(ItemStack stack) { - ComparableStack comp = itemMap.get(stack.getItemDamage()); - ItemStack name = comp != null ? comp.toStack() : new ItemStack(ModItems.nothing); - if(name.getItemDamage() == OreDictionary.WILDCARD_VALUE) { - name.setItemDamage(0); - } - return StatCollector.translateToLocalFormatted(this.getUnlocalizedName() + ".name", name.getItem().getItemStackDisplayName(name)); - } - } - - public static HashSet uniqueItems = new HashSet(); - public static HashBiMap itemMap = HashBiMap.create(); - - public static void init() { - - if(WorldConfig.enableRandom) { - for(Object b : Block.blockRegistry.getKeys()) { - Block block = Block.getBlockFromName((String) b); - if(block != null && Item.getItemFromBlock(block) != null) - uniqueItems.add(new ComparableStack(block)); - } - - for(Object i : Item.itemRegistry.getKeys()) { - Item item = (Item) Item.itemRegistry.getObject((String) i); - uniqueItems.add(new ComparableStack(item)); - } - - for(String i : OreDictionary.getOreNames()) { - for(ItemStack stack : OreDictionary.getOres(i)) { - uniqueItems.add(new ComparableStack(stack)); - } - } - } else { - uniqueItems.add(new ComparableStack(ModItems.nothing)); - } - - int i = 0; - for(ComparableStack stack : uniqueItems) { - itemMap.put(i++, stack); - } - } -} diff --git a/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java b/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java index d650c0b95..41e4a35c4 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOreBasalt.java @@ -1,5 +1,6 @@ package com.hbm.blocks.generic; +import java.util.ArrayList; import java.util.Locale; import java.util.Random; @@ -7,15 +8,21 @@ import com.hbm.blocks.BlockEnumMulti; import com.hbm.blocks.ModBlocks; import com.hbm.items.ModItems; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.Entity; import net.minecraft.init.Blocks; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; public class BlockOreBasalt extends BlockEnumMulti { + + protected IIcon[] topIcons; public BlockOreBasalt() { super(Material.rock, EnumBasaltOreType.class, true, true); @@ -47,11 +54,6 @@ public class BlockOreBasalt extends BlockEnumMulti { return super.getItemDropped(meta, rand, fortune); } - @Override - public int damageDropped(int meta) { - return 0; - } - @Override public void onEntityWalking(World world, int x, int y, int z, Entity entity) { int meta = world.getBlockMetadata(x, y, z); @@ -62,18 +64,38 @@ public class BlockOreBasalt extends BlockEnumMulti { } @Override - public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { - int meta = world.getBlockMetadata(x, y, z); - if(meta == EnumBasaltOreType.ASBESTOS.ordinal()) for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - if(world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ) == Blocks.air) { - world.setBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, ModBlocks.gas_asbestos); - } - } - } + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { } //no more BUD outgassing for you, mister @Override public void dropBlockAsItemWithChance(World world, int x, int y, int z, int meta, float chance, int fortune) { if(meta == EnumBasaltOreType.ASBESTOS.ordinal()) world.setBlock(x, y, z, ModBlocks.gas_asbestos); super.dropBlockAsItemWithChance(world, x, y, z, meta, chance, fortune); } + + @Override + public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { + return ModBlocks.getDropsWithoutDamage(world, this, metadata, fortune); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + super.registerBlockIcons(reg); + + Enum[] enums = theEnum.getEnumConstants(); + this.topIcons = new IIcon[enums.length]; + + for(int i = 0; i < topIcons.length; i++) { + Enum num = enums[i]; + this.topIcons[i] = reg.registerIcon(this.getTextureMultiName(num) + "_top"); + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + if(side <= 1) return this.topIcons[meta % this.topIcons.length]; + return super.getIcon(side, meta); + } + } diff --git a/src/main/java/com/hbm/blocks/generic/BlockOutgas.java b/src/main/java/com/hbm/blocks/generic/BlockOutgas.java index ae6107817..9fe92c1b9 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOutgas.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOutgas.java @@ -103,7 +103,7 @@ public class BlockOutgas extends BlockOre { @Override public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { - if(onNeighbour) { + if(onNeighbour && world.rand.nextInt(3) == 0) { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { diff --git a/src/main/java/com/hbm/blocks/generic/BlockPedestal.java b/src/main/java/com/hbm/blocks/generic/BlockPedestal.java index 9f4ace30b..080881687 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockPedestal.java +++ b/src/main/java/com/hbm/blocks/generic/BlockPedestal.java @@ -1,6 +1,10 @@ package com.hbm.blocks.generic; +import com.hbm.inventory.recipes.PedestalRecipes; +import com.hbm.inventory.recipes.PedestalRecipes.PedestalRecipe; import com.hbm.lib.RefStrings; +import com.hbm.particle.helper.ExplosionSmallCreator; +import com.hbm.util.Compat; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; @@ -20,6 +24,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; public class BlockPedestal extends BlockContainer { @@ -108,6 +113,73 @@ public class BlockPedestal extends BlockContainer { super.breakBlock(world, x, y, z, block, meta); } + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block b) { + if(!world.isRemote) { + if(world.isBlockIndirectlyGettingPowered(x, y, z)) { + + TileEntityPedestal nw = castOrNull(Compat.getTileStandard(world, x + ForgeDirection.NORTH.offsetX * 2 + ForgeDirection.WEST.offsetX * 2, y, z + ForgeDirection.NORTH.offsetZ * 2 + ForgeDirection.WEST.offsetZ * 2)); + TileEntityPedestal n = castOrNull(Compat.getTileStandard(world, x + ForgeDirection.NORTH.offsetX * 3, y, z + ForgeDirection.NORTH.offsetZ * 3)); + TileEntityPedestal ne = castOrNull(Compat.getTileStandard(world, x + ForgeDirection.NORTH.offsetX * 2 + ForgeDirection.EAST.offsetX * 2, y, z + ForgeDirection.NORTH.offsetZ * 2 + ForgeDirection.EAST.offsetZ * 2)); + TileEntityPedestal w = castOrNull(Compat.getTileStandard(world, x + ForgeDirection.WEST.offsetX * 3, y, z + ForgeDirection.WEST.offsetZ * 3)); + TileEntityPedestal center = (TileEntityPedestal) world.getTileEntity(x, y, z); + TileEntityPedestal e = castOrNull(Compat.getTileStandard(world, x + ForgeDirection.EAST.offsetX * 3, y, z + ForgeDirection.EAST.offsetZ * 3)); + TileEntityPedestal sw = castOrNull(Compat.getTileStandard(world, x + ForgeDirection.SOUTH.offsetX * 2 + ForgeDirection.WEST.offsetX * 2, y, z + ForgeDirection.SOUTH.offsetZ * 2 + ForgeDirection.WEST.offsetZ * 2)); + TileEntityPedestal s = castOrNull(Compat.getTileStandard(world, x + ForgeDirection.SOUTH.offsetX * 3, y, z + ForgeDirection.SOUTH.offsetZ * 3)); + TileEntityPedestal se = castOrNull(Compat.getTileStandard(world, x + ForgeDirection.SOUTH.offsetX * 2 + ForgeDirection.EAST.offsetX * 2, y, z + ForgeDirection.SOUTH.offsetZ * 2 + ForgeDirection.EAST.offsetZ * 2)); + + TileEntityPedestal[] tileArray = new TileEntityPedestal[] {nw, n, ne, w, center, e, sw, s, se}; + + outer: for(PedestalRecipe recipe : PedestalRecipes.recipes) { + + if(recipe.extra == recipe.extra.FULL_MOON) { + if(world.getCelestialAngle(0) < 0.35 || world.getCelestialAngle(0) > 0.65) continue; + if(world.provider.getMoonPhase(world.getWorldInfo().getWorldTime()) != 0) continue; + } + + if(recipe.extra == recipe.extra.NEW_MOON) { + if(world.getCelestialAngle(0) < 0.35 || world.getCelestialAngle(0) > 0.65) continue; + if(world.provider.getMoonPhase(world.getWorldInfo().getWorldTime()) != 4) continue; + } + + if(recipe.extra == recipe.extra.SUN) { + if(world.getCelestialAngle(0) > 0.15 && world.getCelestialAngle(0) < 0.85) continue; + } + + for(int i = 0; i < 9; i++) { + ItemStack pedestal = tileArray[i] != null ? tileArray[i].item : null; + if(pedestal == null && recipe.input[i] != null) continue outer; + if(pedestal != null && recipe.input[i] == null) continue outer; + if(pedestal == null && recipe.input[i] == null) continue; + + if(!recipe.input[i].matchesRecipe(pedestal, true) || recipe.input[i].stacksize != pedestal.stackSize) continue outer; + } + + for(int i = 0; i < 9; i++) { + if(i == 4) continue; + ItemStack pedestal = tileArray[i] != null ? tileArray[i].item : null; + if(pedestal == null && recipe.input[i] == null) continue; + tileArray[i].item = null; + tileArray[i].markDirty(); + world.markBlockForUpdate(tileArray[i].xCoord, tileArray[i].yCoord, tileArray[i].zCoord); + } + + center.item = recipe.output.copy(); + center.markDirty(); + world.markBlockForUpdate(x, y, z); + ExplosionSmallCreator.composeEffect(world, x + 0.5, y + 1.5, z + 0.5, 10, 2.5F, 1F); + + return; + } + } + } + } + + public static TileEntityPedestal castOrNull(TileEntity tile) { + if(tile instanceof TileEntityPedestal) return (TileEntityPedestal) tile; + return null; + } + public static class TileEntityPedestal extends TileEntity { public ItemStack item; diff --git a/src/main/java/com/hbm/blocks/generic/BlockPlushie.java b/src/main/java/com/hbm/blocks/generic/BlockPlushie.java index 80a739a0b..5d4709b72 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockPlushie.java +++ b/src/main/java/com/hbm/blocks/generic/BlockPlushie.java @@ -140,9 +140,10 @@ public class BlockPlushie extends BlockContainer implements IBlockMulti, IToolti } public static enum PlushieType { - NONE( "NONE", null), - YOMI( "Yomi", "Hi! Can I be your rabbit friend?"), - NUMBERNINE( "Number Nine", "None of y'all deserve coal."); + NONE( "NONE", null), + YOMI( "Yomi", "Hi! Can I be your rabbit friend?"), + NUMBERNINE( "Number Nine", "None of y'all deserve coal."), + POOH( "Winnie the Pooh", "Beloved children's character with no malicious intent."); public String label; public String inscription; diff --git a/src/main/java/com/hbm/blocks/generic/BlockRedBrickKeyhole.java b/src/main/java/com/hbm/blocks/generic/BlockRedBrickKeyhole.java new file mode 100644 index 000000000..bef78f2f2 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockRedBrickKeyhole.java @@ -0,0 +1,161 @@ +package com.hbm.blocks.generic; + +import java.util.List; +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; +import com.hbm.itempool.ItemPool; +import com.hbm.itempool.ItemPoolsRedRoom; +import com.hbm.items.ModItems; +import com.hbm.items.tool.ItemModDoor; +import com.hbm.lib.Library; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockPistonBase; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.IIcon; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.WeightedRandomChestContent; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockRedBrickKeyhole extends Block { + + protected IIcon iconFront; + protected IIcon iconTop; + + public BlockRedBrickKeyhole(Material material) { + super(material); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":stone_keyhole_meta"); + this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":brick_red_top"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":brick_base"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return side == meta ? (side == 0 || side == 1 ? this.iconTop : this.iconFront) : this.blockIcon; + } + + @Override + public Item getItemDropped(int i, Random rand, int j) { + return null; + } + + @Override + public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z, EntityPlayer player) { + return new ItemStack(ModBlocks.brick_red); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + int l = BlockPistonBase.determineOrientation(world, x, y, z, player); + world.setBlockMetadataWithNotify(x, y, z, l, 2); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + + if(player.getHeldItem() != null) { + boolean cracked = player.getHeldItem().getItem() == ModItems.key_red_cracked; + if((player.getHeldItem().getItem() == ModItems.key_red || cracked) && side != 0 && side != 1) { + if(cracked) player.getHeldItem().stackSize--; + if(world.isRemote) return true; + ForgeDirection dir = ForgeDirection.getOrientation(side); + generateRoom(world, x - dir.offsetX * 4, y - 2, z - dir.offsetZ * 4, dir); + int b = 0; + if(side == 2) b = 1; + if(side == 5) b = 2; + if(side == 3) b = 3; + if(side == 4) b = 0; + ItemModDoor.placeDoorBlock(world, x, y - 1, z, b, ModBlocks.door_red); + world.playSoundAtEntity(player, "hbm:block.lockOpen", 1.0F, 1.0F); + player.triggerAchievement(MainRegistry.achRedRoom); + return true; + } + } + + return false; + } + + protected static void generateRoom(World world, int x, int y, int z, ForgeDirection dir) { + + int size = 9; + int height = 5; + int width = size / 2; + + //Outer Edges, top and bottom + for(int i = -width; i <= width; i++) { + world.setBlock(x + i, y, z + width, ModBlocks.brick_red, 6, 3); + world.setBlock(x + i, y, z - width, ModBlocks.brick_red, 6, 3); + world.setBlock(x + width, y, z + i, ModBlocks.brick_red, 6, 3); + world.setBlock(x - width, y, z + i, ModBlocks.brick_red, 6, 3); + world.setBlock(x + i, y + height - 1, z + width, ModBlocks.brick_red, 6, 3); + world.setBlock(x + i, y + height - 1, z - width, ModBlocks.brick_red, 6, 3); + world.setBlock(x + width, y + height - 1, z + i, ModBlocks.brick_red, 6, 3); + world.setBlock(x - width, y + height - 1, z + i, ModBlocks.brick_red, 6, 3); + } + + for(int i = 1; i <= height - 2; i++) { + //Outer edges, sides + world.setBlock(x + width, y + i, z + width, ModBlocks.brick_red, 6, 3); + world.setBlock(x + width, y + i, z - width, ModBlocks.brick_red, 6, 3); + world.setBlock(x - width, y + i, z + width, ModBlocks.brick_red, 6, 3); + world.setBlock(x - width, y + i, z - width, ModBlocks.brick_red, 6, 3); + + //Walls + for(int j = -width + 1; j <= width - 1; j++) { + if(dir != Library.POS_X) world.setBlock(x + width, y + i, z + j, ModBlocks.brick_red, 6, 3); + if(dir != Library.NEG_X) world.setBlock(x - width, y + i, z + j, ModBlocks.brick_red, 6, 3); + if(dir != Library.POS_Z) world.setBlock(x + j, y + i, z + width, ModBlocks.brick_red, 6, 3); + if(dir != Library.NEG_Z) world.setBlock(x + j, y + i, z - width, ModBlocks.brick_red, 6, 3); + } + } + + for(int i = -width + 1; i <= width - 1; i++) { + for(int j = -width + 1; j <= width - 1; j++) { + //Floor and ceiling + world.setBlock(x + i, y, z + j, ModBlocks.brick_red, 6, 3); + world.setBlock(x + i, y + height - 1, z + j, ModBlocks.brick_red, 6, 3); + + for(int k = 1; k <= height - 2; k++) { + world.setBlock(x + i, y + k, z + j, Blocks.air); + } + } + } + + spawnPedestalItem(world, x, y + 1, z, ItemPool.getPool(ItemPoolsRedRoom.POOL_BLACK_SLAB)); + if(world.rand.nextBoolean()) spawnPedestalItem(world, x + 2, y + 1, z, ItemPool.getPool(ItemPoolsRedRoom.POOL_BLACK_PART)); + if(world.rand.nextBoolean()) spawnPedestalItem(world, x - 2, y + 1, z, ItemPool.getPool(ItemPoolsRedRoom.POOL_BLACK_PART)); + if(world.rand.nextBoolean()) spawnPedestalItem(world, x, y + 1, z + 2, ItemPool.getPool(ItemPoolsRedRoom.POOL_BLACK_PART)); + if(world.rand.nextBoolean()) spawnPedestalItem(world, x, y + 1, z - 2, ItemPool.getPool(ItemPoolsRedRoom.POOL_BLACK_PART)); + + //Clear dropped items + List items = world.getEntitiesWithinAABB(EntityItem.class, AxisAlignedBB.getBoundingBox(x + 0.5, y, z + 0.5, x + 0.5, y + height, z + 0.5).expand(size / 2D, 0, size / 2D)); + for(EntityItem item : items) item.setDead(); + } + + public static void spawnPedestalItem(World world, int x, int y, int z, WeightedRandomChestContent[] pool) { + world.setBlock(x, y, z, ModBlocks.pedestal); + TileEntityPedestal pedestal = (TileEntityPedestal) world.getTileEntity(x, y, z); + pedestal.item = ItemPool.getStack(pool, world.rand).copy(); + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockResourceStone.java b/src/main/java/com/hbm/blocks/generic/BlockResourceStone.java index 7100843ab..0283ac38f 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockResourceStone.java +++ b/src/main/java/com/hbm/blocks/generic/BlockResourceStone.java @@ -1,10 +1,16 @@ package com.hbm.blocks.generic; +import java.util.ArrayList; + import com.hbm.blocks.BlockEnumMulti; import com.hbm.blocks.BlockEnums; import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.OreDictManager.DictFrame; +import com.hbm.items.ItemEnums.EnumChunkType; +import com.hbm.items.ModItems; import net.minecraft.block.material.Material; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class BlockResourceStone extends BlockEnumMulti { @@ -22,4 +28,16 @@ public class BlockResourceStone extends BlockEnumMulti { super.dropBlockAsItemWithChance(world, x, y, z, meta, chance, fortune); } + + @Override + public ArrayList getDrops(World world, int x, int y, int z, int meta, int fortune) { + + if(meta == BlockEnums.EnumStoneType.MALACHITE.ordinal()) { + ArrayList ret = new ArrayList(); + ret.add(DictFrame.fromOne(ModItems.chunk_ore, EnumChunkType.MALACHITE, 3 + fortune + world.rand.nextInt(fortune + 2))); + return ret; + } + + return super.getDrops(world, x, y, z, meta, fortune); + } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockScaffold.java b/src/main/java/com/hbm/blocks/generic/BlockScaffold.java index 64a2eb919..1f34d1d84 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockScaffold.java +++ b/src/main/java/com/hbm/blocks/generic/BlockScaffold.java @@ -16,6 +16,7 @@ import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; public class BlockScaffold extends BlockMulti { @@ -59,22 +60,34 @@ public class BlockScaffold extends BlockMulti { public IIcon getIcon(int side, int meta) { return this.icons[this.damageDropped(meta)]; } + + @Override + public int onBlockPlaced(World world, int x, int y, int z, int side, float fx, float fy, float fz, int meta) { + return side; + } @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { - int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + ForgeDirection placed = ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)); int meta = stack.getItemDamage(); - - if(i % 2 == 0) { - world.setBlockMetadataWithNotify(x, y, z, meta, 2); + + if(placed == ForgeDirection.UP || placed == ForgeDirection.DOWN) { + int rot = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + if(rot % 2 == 0) { + world.setBlockMetadataWithNotify(x, y, z, meta, 2); + } else { + world.setBlockMetadataWithNotify(x, y, z, meta + 8, 2); + } + } else if(placed == ForgeDirection.NORTH || placed == ForgeDirection.SOUTH) { + world.setBlockMetadataWithNotify(x, y, z, meta + 4, 2); } else { - world.setBlockMetadataWithNotify(x, y, z, meta + 8, 2); + world.setBlockMetadataWithNotify(x, y, z, meta + 12, 2); } } @Override public int damageDropped(int meta) { - return rectify(meta) & 7; + return rectify(meta); } @Override @@ -83,27 +96,24 @@ public class BlockScaffold extends BlockMulti { } @Override - public void setBlockBoundsBasedOnState(IBlockAccess p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_) { - int te = p_149719_1_.getBlockMetadata(p_149719_2_, p_149719_3_, p_149719_4_); + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + int meta = world.getBlockMetadata(x, y, z); float f = 0.0625F; - if((te & 8) != 0) + if(meta >= 12) { + this.setBlockBounds(0.0F, 2 * f, 0.0F, 1.0F, 14 * f, 1.0F); + } else if(meta >= 8) { this.setBlockBounds(2 * f, 0.0F, 0.0F, 14 * f, 1.0F, 1.0F); - else + } else if(meta >= 4) { + this.setBlockBounds(0.0F, 2 * f, 0.0F, 1.0F, 14 * f, 1.0F); + } else { this.setBlockBounds(0.0F, 0.0F, 2 * f, 1.0F, 1.0F, 14 * f); + } } @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { - - int te = world.getBlockMetadata(x, y, z); - float f = 0.0625F; - - if((te & 8) != 0) - this.setBlockBounds(2 * f, 0.0F, 0.0F, 14 * f, 1.0F, 1.0F); - else - this.setBlockBounds(0.0F, 0.0F, 2 * f, 1.0F, 1.0F, 14 * f); - + setBlockBoundsBasedOnState(world, x, y, z); return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockSnowglobe.java b/src/main/java/com/hbm/blocks/generic/BlockSnowglobe.java index 68047bb3d..c6a4994f3 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockSnowglobe.java +++ b/src/main/java/com/hbm/blocks/generic/BlockSnowglobe.java @@ -12,7 +12,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; @@ -193,7 +192,7 @@ public class BlockSnowglobe extends BlockContainer implements IGUIProvider { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIScreenSnowglobe((TileEntitySnowglobe) world.getTileEntity(x, y, z)); } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java b/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java index f8beed00c..5db100280 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java +++ b/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java @@ -1,5 +1,6 @@ package com.hbm.blocks.generic; +import java.util.ArrayList; import java.util.Random; import com.hbm.blocks.BlockEnumMulti; @@ -10,6 +11,7 @@ import com.hbm.items.ModItems; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -45,11 +47,6 @@ public class BlockStalagmite extends BlockEnumMulti { return null; } - - @Override - public int damageDropped(int meta) { - return 0; - } public static int getMetaFromResource(int meta) { return meta; @@ -75,4 +72,10 @@ public class BlockStalagmite extends BlockEnumMulti { public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { return null; } + + @Override + public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { + return ModBlocks.getDropsWithoutDamage(world, this, metadata, fortune); + } + } diff --git a/src/main/java/com/hbm/blocks/generic/BlockSupplyCrate.java b/src/main/java/com/hbm/blocks/generic/BlockSupplyCrate.java new file mode 100644 index 000000000..961032204 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockSupplyCrate.java @@ -0,0 +1,130 @@ +package com.hbm.blocks.generic; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import com.hbm.items.ModItems; + +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class BlockSupplyCrate extends BlockContainer { + + public BlockSupplyCrate(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntitySupplyCrate(); + } + + @Override public int getRenderType() { return BlockCanCrate.renderID; } + @Override public boolean isOpaqueCube() { return false; } + @Override public boolean renderAsNormalBlock() { return false; } + + @Override public Item getItemDropped(int i, Random rand, int j) { return null; } + + @Override + public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z, boolean willHarvest) { + + if(!player.capabilities.isCreativeMode && !world.isRemote && willHarvest) { + + ItemStack drop = new ItemStack(this); + TileEntitySupplyCrate inv = (TileEntitySupplyCrate) world.getTileEntity(x, y, z); + NBTTagCompound nbt = new NBTTagCompound(); + + if(inv != null) { + for(int i = 0; i < inv.items.size(); i++) { + ItemStack stack = inv.items.get(i); + if(stack == null) continue; + NBTTagCompound slot = new NBTTagCompound(); + stack.writeToNBT(slot); + nbt.setTag("slot" + i, slot); + } + nbt.setInteger("amount", inv.items.size()); + } + + if(!nbt.hasNoTags()) drop.stackTagCompound = nbt; + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, drop)); + } + return world.setBlockToAir(x, y, z); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + + TileEntitySupplyCrate inv = (TileEntitySupplyCrate) world.getTileEntity(x, y, z); + + if(inv != null && stack.hasTagCompound()) { + int amount = stack.stackTagCompound.getInteger("amount"); + for(int i = 0; i < amount; i++) { + inv.items.add(ItemStack.loadItemStackFromNBT(stack.stackTagCompound.getCompoundTag("slot" + i))); + } + } + + super.onBlockPlacedBy(world, x, y, z, player, stack); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) { + if(player.getHeldItem() != null && player.getHeldItem().getItem().equals(ModItems.crowbar)) { + if(!world.isRemote) { + dropContents(world, x, y, z); + world.func_147480_a(x, y, z, false); + world.playSoundEffect(x, y, z, "hbm:block.crateBreak", 0.5F, 1.0F); + } + return true; + } + return false; + } + + public void dropContents(World world, int x, int y, int z) { + TileEntity tile = world.getTileEntity(x, y, z); + if(tile instanceof TileEntitySupplyCrate) { + TileEntitySupplyCrate crate = (TileEntitySupplyCrate) tile; + + for(ItemStack item : crate.items) { + this.dropBlockAsItem(world, x, y, z, item); + } + } + } + + public static class TileEntitySupplyCrate extends TileEntity { + + public List items = new ArrayList(); + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + items.clear(); + NBTTagList list = nbt.getTagList("items", 10); + for(int i = 0; i < list.tagCount(); i++) { + NBTTagCompound nbt1 = list.getCompoundTagAt(i); + items.add(ItemStack.loadItemStackFromNBT(nbt1)); + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + NBTTagList list = new NBTTagList(); + for(int i = 0; i < items.size(); i++) { + NBTTagCompound nbt1 = new NBTTagCompound(); + items.get(i).writeToNBT(nbt1); + list.appendTag(nbt1); + } + nbt.setTag("items", list); + } + } +} diff --git a/src/main/java/com/hbm/blocks/generic/DecoBlock.java b/src/main/java/com/hbm/blocks/generic/DecoBlock.java index 6d946cc3f..9037b4f6a 100644 --- a/src/main/java/com/hbm/blocks/generic/DecoBlock.java +++ b/src/main/java/com/hbm/blocks/generic/DecoBlock.java @@ -1,14 +1,21 @@ package com.hbm.blocks.generic; +import java.util.ArrayList; +import java.util.List; import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.tileentity.deco.TileEntityDecoBlock; +import api.hbm.block.IToolable; import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -17,7 +24,7 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -public class DecoBlock extends BlockContainer { +public class DecoBlock extends BlockContainer implements IToolable { Random rand = new Random(); @@ -25,20 +32,46 @@ public class DecoBlock extends BlockContainer { super(p_i45386_1_); } + @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.SCREWDRIVER) return false; + if(this != ModBlocks.steel_wall && this != ModBlocks.steel_corner) return false; + + int meta = world.getBlockMetadata(x, y, z); + + if(!player.isSneaking()) { + if(meta == 3) world.setBlockMetadataWithNotify(x, y, z, 4, 3); + else if(meta == 4) world.setBlockMetadataWithNotify(x, y, z, 2, 3); + else if(meta == 2) world.setBlockMetadataWithNotify(x, y, z, 5, 3); + else if(meta == 5) world.setBlockMetadataWithNotify(x, y, z, 3, 3); + } else { + if(meta == 3) world.setBlockMetadataWithNotify(x, y, z, 5, 3); + else if(meta == 4) world.setBlockMetadataWithNotify(x, y, z, 3, 3); + else if(meta == 2) world.setBlockMetadataWithNotify(x, y, z, 4, 3); + else if(meta == 5) world.setBlockMetadataWithNotify(x, y, z, 2, 3); + } + + return true; + } + + @Override @SideOnly(Side.CLIENT) public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) { return true; } + @Override public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - if(this == ModBlocks.steel_scaffold || this == ModBlocks.steel_beam) return null; + if(this == ModBlocks.steel_scaffold || this == ModBlocks.steel_beam || this == ModBlocks.steel_wall || this == ModBlocks.steel_corner) return null; return new TileEntityDecoBlock(); } public static int renderIDBeam = RenderingRegistry.getNextAvailableRenderId(); + public static int renderIDWall = RenderingRegistry.getNextAvailableRenderId(); + public static int renderIDCorner = RenderingRegistry.getNextAvailableRenderId(); @Override public int getRenderType(){ - if(this == ModBlocks.steel_beam) - return renderIDBeam; - else - return -1; + if(this == ModBlocks.steel_wall) return renderIDWall; + if(this == ModBlocks.steel_corner) return renderIDCorner; + if(this == ModBlocks.steel_beam) return renderIDBeam; + return -1; } @Override @@ -60,95 +93,23 @@ public class DecoBlock extends BlockContainer { public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - if(i == 0) { - world.setBlockMetadataWithNotify(x, y, z, 3, 2); - } - if(i == 1) { - world.setBlockMetadataWithNotify(x, y, z, 4, 2); - } - if(i == 2) { - world.setBlockMetadataWithNotify(x, y, z, 2, 2); - } - if(i == 3) { - world.setBlockMetadataWithNotify(x, y, z, 5, 2); - } + if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 3, 2); + if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 4, 2); + if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 2, 2); + if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 5, 2); } @Override - public void setBlockBoundsBasedOnState(IBlockAccess p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_) { - int te = p_149719_1_.getBlockMetadata(p_149719_2_, p_149719_3_, p_149719_4_); - float f = 0.0625F; - - if(this == ModBlocks.steel_wall) { - switch(te) { - case 4: - this.setBlockBounds(14 * f, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - break; - case 2: - this.setBlockBounds(0.0F, 0.0F, 14 * f, 1.0F, 1.0F, 1.0F); - break; - case 5: - this.setBlockBounds(0.0F, 0.0F, 0.0F, 2 * f, 1.0F, 1.0F); - break; - case 3: - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 2 * f); - break; - } - } - - if(this == ModBlocks.steel_corner) { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - } - - if(this == ModBlocks.steel_roof) { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1 * f, 1.0F); - } - - if(this == ModBlocks.steel_beam) { - this.setBlockBounds(7 * f, 0.0F, 7 * f, 9 * f, 1.0F, 9 * f); - } - - if(this == ModBlocks.steel_scaffold) { - this.setBlockBounds(0.0F, 0.0F, 2 * f, 1.0F, 1.0F, 14 * f); - switch(te) { - case 4: - this.setBlockBounds(2 * f, 0.0F, 0.0F, 14 * f, 1.0F, 1.0F); - break; - case 2: - this.setBlockBounds(0.0F, 0.0F, 2 * f, 1.0F, 1.0F, 14 * f); - break; - case 5: - this.setBlockBounds(2 * f, 0.0F, 0.0F, 14 * f, 1.0F, 1.0F); - break; - case 3: - this.setBlockBounds(0.0F, 0.0F, 2 * f, 1.0F, 1.0F, 14 * f); - break; - } - } - - // this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - } - - @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { - + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { int te = world.getBlockMetadata(x, y, z); float f = 0.0625F; if(this == ModBlocks.steel_wall) { switch(te) { - case 4: - this.setBlockBounds(14 * f, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - break; - case 2: - this.setBlockBounds(0.0F, 0.0F, 14 * f, 1.0F, 1.0F, 1.0F); - break; - case 5: - this.setBlockBounds(0.0F, 0.0F, 0.0F, 2 * f, 1.0F, 1.0F); - break; - case 3: - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 2 * f); - break; + case 4: this.setBlockBounds(14 * f, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); break; + case 2: this.setBlockBounds(0.0F, 0.0F, 14 * f, 1.0F, 1.0F, 1.0F); break; + case 5: this.setBlockBounds(0.0F, 0.0F, 0.0F, 2 * f, 1.0F, 1.0F); break; + case 3: this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 2 * f); break; } } @@ -167,21 +128,57 @@ public class DecoBlock extends BlockContainer { if(this == ModBlocks.steel_scaffold) { this.setBlockBounds(0.0F, 0.0F, 2 * f, 1.0F, 1.0F, 14 * f); switch(te) { - case 4: - this.setBlockBounds(2 * f, 0.0F, 0.0F, 14 * f, 1.0F, 1.0F); - break; - case 2: - this.setBlockBounds(0.0F, 0.0F, 2 * f, 1.0F, 1.0F, 14 * f); - break; - case 5: - this.setBlockBounds(2 * f, 0.0F, 0.0F, 14 * f, 1.0F, 1.0F); - break; - case 3: - this.setBlockBounds(0.0F, 0.0F, 2 * f, 1.0F, 1.0F, 14 * f); - break; + case 4: this.setBlockBounds(2 * f, 0.0F, 0.0F, 14 * f, 1.0F, 1.0F); break; + case 2: this.setBlockBounds(0.0F, 0.0F, 2 * f, 1.0F, 1.0F, 14 * f); break; + case 5: this.setBlockBounds(2 * f, 0.0F, 0.0F, 14 * f, 1.0F, 1.0F); break; + case 3: this.setBlockBounds(0.0F, 0.0F, 2 * f, 1.0F, 1.0F, 14 * f); break; } } + } + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + this.setBlockBoundsBasedOnState(world, x, y, z); return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); } + + @Override + public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB aabb, List list, Entity collider) { + + if(this == ModBlocks.steel_corner) { + int meta = world.getBlockMetadata(x, y, z); + List bbs = new ArrayList(); + + switch(meta) { + case 2: + bbs.add(AxisAlignedBB.getBoundingBox(x + 0.25D, y + 0D, z + 0.875D, x + 1D, y + 1D, z + 1D)); + bbs.add(AxisAlignedBB.getBoundingBox(x + 0D, y + 0D, z + 0.75D, x + 0.25D, y + 1D, z + 1D)); + bbs.add(AxisAlignedBB.getBoundingBox(x + 0D, y + 0D, z + 0D, x + 0.125D, y + 1D, z + 0.75D)); + break; + case 3: + bbs.add(AxisAlignedBB.getBoundingBox(x + 0D, y + 0D, z + 0D, x + 0.75D, y + 1D, z + 0.125D)); + bbs.add(AxisAlignedBB.getBoundingBox(x + 0.75D, y + 0D, z + 0D, x + 1D, y + 1D, z + 0.25D)); + bbs.add(AxisAlignedBB.getBoundingBox(x + 0.875D, y + 0D, z + 0.25D, x + 1D, y + 1D, z + 1D)); + break; + case 4: + bbs.add(AxisAlignedBB.getBoundingBox(x + 0.875D, y + 0D, z + 0D, x + 1D, y + 1D, z + 0.75D)); + bbs.add(AxisAlignedBB.getBoundingBox(x + 0.75D, y + 0D, z + 0.75D, x + 1D, y + 1D, z + 1D)); + bbs.add(AxisAlignedBB.getBoundingBox(x + 0D, y + 0D, z + 0.875D, x + 0.75D, y + 1D, z + 1D)); + break; + case 5: + bbs.add(AxisAlignedBB.getBoundingBox(x + 0D, y + 0D, z + 0.25D, x + 0.125D, y + 1D, z + 1D)); + bbs.add(AxisAlignedBB.getBoundingBox(x + 0D, y + 0D, z + 0D, x + 0.25D, y + 1D, z + 0.25D)); + bbs.add(AxisAlignedBB.getBoundingBox(x + 0.25D, y + 0D, z + 0D, x + 1D, y + 1D, z + 0.125D)); + break; + } + + for(AxisAlignedBB bb : bbs) { + if(aabb.intersectsWith(bb)) { + list.add(bb); + } + } + } else { + super.addCollisionBoxesToList(world, x, y, z, aabb, list, collider); + } + } } diff --git a/src/main/java/com/hbm/blocks/generic/DecoBlockAlt.java b/src/main/java/com/hbm/blocks/generic/DecoBlockAlt.java index 4e7d7657f..980433dc0 100644 --- a/src/main/java/com/hbm/blocks/generic/DecoBlockAlt.java +++ b/src/main/java/com/hbm/blocks/generic/DecoBlockAlt.java @@ -1,14 +1,9 @@ package com.hbm.blocks.generic; -import java.util.Random; - import com.hbm.blocks.ModBlocks; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; -import com.hbm.tileentity.deco.TileEntityDecoBlockAlt; import com.hbm.tileentity.deco.TileEntityDecoBlockAltF; -import com.hbm.tileentity.deco.TileEntityDecoBlockAltG; -import com.hbm.tileentity.deco.TileEntityDecoBlockAltW; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -17,7 +12,6 @@ import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; @@ -34,28 +28,14 @@ public class DecoBlockAlt extends BlockContainer { @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { - //this.blockIcon = iconRegister.registerIcon("stone"); this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":code"); } @Override public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - if(this == ModBlocks.statue_elb) - return new TileEntityDecoBlockAlt(); - if(this == ModBlocks.statue_elb_g) - return new TileEntityDecoBlockAltG(); - if(this == ModBlocks.statue_elb_w) - return new TileEntityDecoBlockAltW(); - if(this == ModBlocks.statue_elb_f) - return new TileEntityDecoBlockAltF(); + if(this == ModBlocks.statue_elb_f) return new TileEntityDecoBlockAltF(); return null; } - - @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) - { - return Item.getItemFromBlock(ModBlocks.statue_elb); - } @Override public int getRenderType(){ @@ -75,83 +55,34 @@ public class DecoBlockAlt extends BlockContainer { @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - - if(i == 0) - { + + if(i == 0) { world.setBlockMetadataWithNotify(x, y, z, 2, 2); } - if(i == 1) - { + if(i == 1) { world.setBlockMetadataWithNotify(x, y, z, 5, 2); } - if(i == 2) - { + if(i == 2) { world.setBlockMetadataWithNotify(x, y, z, 3, 2); } - if(i == 3) - { + if(i == 3) { world.setBlockMetadataWithNotify(x, y, z, 4, 2); } } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if(world.isRemote) - { + if(world.isRemote) { return true; - } else if(!player.isSneaking()) - { - if(player.getCurrentEquippedItem() != null) - { - if(this == ModBlocks.statue_elb) - { - if(player.getCurrentEquippedItem().getItem() == ModItems.gun_revolver_cursed) - { - world.setBlock(x, y, z, ModBlocks.statue_elb_g, world.getBlockMetadata(x, y, z), 2); - - if (!player.capabilities.isCreativeMode) - { - --player.getCurrentEquippedItem().stackSize; - } - return true; - } + } else if(!player.isSneaking()) { + + if(player.getCurrentEquippedItem() != null) { + boolean cracked = player.getHeldItem().getItem() == ModItems.key_red_cracked; - if(player.getCurrentEquippedItem().getItem() == ModItems.watch) - { - world.setBlock(x, y, z, ModBlocks.statue_elb_w, world.getBlockMetadata(x, y, z), 2); - - if (!player.capabilities.isCreativeMode) - { - --player.getCurrentEquippedItem().stackSize; - } - return true; - } - } - if(this == ModBlocks.statue_elb_g) - { - if(player.getCurrentEquippedItem().getItem() == ModItems.watch) - { - world.setBlock(x, y, z, ModBlocks.statue_elb_f, world.getBlockMetadata(x, y, z), 2); - - if (!player.capabilities.isCreativeMode) - { - --player.getCurrentEquippedItem().stackSize; - } - return true; - } - } - if(this == ModBlocks.statue_elb_w) - { - if(player.getCurrentEquippedItem().getItem() == ModItems.gun_revolver_cursed) - { - world.setBlock(x, y, z, ModBlocks.statue_elb_f, world.getBlockMetadata(x, y, z), 2); - - if (!player.capabilities.isCreativeMode) - { - --player.getCurrentEquippedItem().stackSize; - } - return true; - } + if((player.getHeldItem().getItem() == ModItems.key_red || cracked)) { + if(cracked) player.getHeldItem().stackSize--; + world.func_147480_a(x, y, z, true); + return true; } } } @@ -159,17 +90,15 @@ public class DecoBlockAlt extends BlockContainer { } @Override - public void setBlockBoundsBasedOnState(IBlockAccess p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_) - { - float f = 0.0625F; - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 8*f, 1.0F); - } - - @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { - float f = 0.0625F; - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 8*f, 1.0F); - return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + public void setBlockBoundsBasedOnState(IBlockAccess p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_) { + float f = 0.0625F; + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 8 * f, 1.0F); } + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + float f = 0.0625F; + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 8 * f, 1.0F); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } } diff --git a/src/main/java/com/hbm/blocks/generic/PartEmitter.java b/src/main/java/com/hbm/blocks/generic/PartEmitter.java index db823972c..771c9e37d 100644 --- a/src/main/java/com/hbm/blocks/generic/PartEmitter.java +++ b/src/main/java/com/hbm/blocks/generic/PartEmitter.java @@ -3,8 +3,8 @@ package com.hbm.blocks.generic; import java.util.List; import com.hbm.blocks.ITooltipProvider; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.ParticleUtil; import api.hbm.block.IToolable; diff --git a/src/main/java/com/hbm/blocks/machine/BlockArmorTable.java b/src/main/java/com/hbm/blocks/machine/BlockArmorTable.java index ef92cb244..62146fc24 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockArmorTable.java +++ b/src/main/java/com/hbm/blocks/machine/BlockArmorTable.java @@ -11,7 +11,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -65,7 +64,7 @@ public class BlockArmorTable extends Block implements IGUIProvider { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIArmorTable(player.inventory); } diff --git a/src/main/java/com/hbm/blocks/machine/BlockICFLaserComponent.java b/src/main/java/com/hbm/blocks/machine/BlockICFLaserComponent.java index 5685fee9a..28161bb09 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockICFLaserComponent.java +++ b/src/main/java/com/hbm/blocks/machine/BlockICFLaserComponent.java @@ -2,7 +2,6 @@ package com.hbm.blocks.machine; import com.hbm.blocks.BlockEnumMulti; import com.hbm.lib.RefStrings; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.material.Material; @@ -10,7 +9,7 @@ import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.util.IIcon; public class BlockICFLaserComponent extends BlockEnumMulti { - + protected IIcon[] iconsTop; public BlockICFLaserComponent() { @@ -20,7 +19,7 @@ public class BlockICFLaserComponent extends BlockEnumMulti { @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister reg) { - + Enum[] enums = theEnum.getEnumConstants(); this.icons = new IIcon[enums.length]; this.iconsTop = new IIcon[enums.length]; @@ -33,7 +32,7 @@ public class BlockICFLaserComponent extends BlockEnumMulti { this.icons[5] = reg.registerIcon(RefStrings.MODID + ":icf_turbocharger"); this.iconsTop[4] = this.iconsTop[5] = reg.registerIcon(RefStrings.MODID + ":icf_capacitor_top"); } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { @@ -44,7 +43,7 @@ public class BlockICFLaserComponent extends BlockEnumMulti { public int getSubCount() { return EnumICFPart.values().length; } - + public static enum EnumICFPart { CASING, PORT, diff --git a/src/main/java/com/hbm/blocks/machine/DummyBlockAssembler.java b/src/main/java/com/hbm/blocks/machine/DummyBlockAssembler.java index 18ae7e8d8..005858260 100644 --- a/src/main/java/com/hbm/blocks/machine/DummyBlockAssembler.java +++ b/src/main/java/com/hbm/blocks/machine/DummyBlockAssembler.java @@ -4,7 +4,6 @@ import com.hbm.blocks.ModBlocks; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityDummy; import com.hbm.tileentity.machine.TileEntityMachineAssembler; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -26,7 +25,7 @@ public class DummyBlockAssembler extends DummyOldBase { { return Item.getItemFromBlock(ModBlocks.machine_assembler); } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) @@ -39,7 +38,7 @@ public class DummyBlockAssembler extends DummyOldBase { int a = ((TileEntityDummy)te).targetX; int b = ((TileEntityDummy)te).targetY; int c = ((TileEntityDummy)te).targetZ; - + TileEntityMachineAssembler entity = (TileEntityMachineAssembler) world.getTileEntity(a, b, c); if(entity != null) { diff --git a/src/main/java/com/hbm/blocks/machine/DummyBlockRefinery.java b/src/main/java/com/hbm/blocks/machine/DummyBlockRefinery.java index fbd2c14d1..1230880dd 100644 --- a/src/main/java/com/hbm/blocks/machine/DummyBlockRefinery.java +++ b/src/main/java/com/hbm/blocks/machine/DummyBlockRefinery.java @@ -4,7 +4,6 @@ import com.hbm.blocks.ModBlocks; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityDummy; import com.hbm.tileentity.machine.oil.TileEntityMachineRefinery; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -26,7 +25,7 @@ public class DummyBlockRefinery extends DummyOldBase { { return Item.getItemFromBlock(ModBlocks.machine_refinery); } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) @@ -39,7 +38,7 @@ public class DummyBlockRefinery extends DummyOldBase { int a = ((TileEntityDummy)te).targetX; int b = ((TileEntityDummy)te).targetY; int c = ((TileEntityDummy)te).targetZ; - + TileEntityMachineRefinery entity = (TileEntityMachineRefinery) world.getTileEntity(a, b, c); if(entity != null) { diff --git a/src/main/java/com/hbm/blocks/machine/DummyBlockTurbofan.java b/src/main/java/com/hbm/blocks/machine/DummyBlockTurbofan.java index ecbdf99e1..071b7a529 100644 --- a/src/main/java/com/hbm/blocks/machine/DummyBlockTurbofan.java +++ b/src/main/java/com/hbm/blocks/machine/DummyBlockTurbofan.java @@ -4,7 +4,6 @@ import com.hbm.blocks.ModBlocks; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityDummy; import com.hbm.tileentity.machine.TileEntityMachineTurbofan; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -26,7 +25,7 @@ public class DummyBlockTurbofan extends DummyOldBase { { return Item.getItemFromBlock(ModBlocks.machine_turbofan); } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) @@ -39,7 +38,7 @@ public class DummyBlockTurbofan extends DummyOldBase { int a = ((TileEntityDummy)te).targetX; int b = ((TileEntityDummy)te).targetY; int c = ((TileEntityDummy)te).targetZ; - + TileEntityMachineTurbofan entity = (TileEntityMachineTurbofan) world.getTileEntity(a, b, c); if(entity != null) { diff --git a/src/main/java/com/hbm/blocks/machine/FactoryHatch.java b/src/main/java/com/hbm/blocks/machine/FactoryHatch.java deleted file mode 100644 index b8915a4dc..000000000 --- a/src/main/java/com/hbm/blocks/machine/FactoryHatch.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.hbm.blocks.machine; - -import com.hbm.blocks.ModBlocks; -import com.hbm.lib.RefStrings; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; - -public class FactoryHatch extends Block { - - @SideOnly(Side.CLIENT) - private IIcon iconFront; - - public FactoryHatch(Material p_i45394_1_) { - super(p_i45394_1_); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) { - this.iconFront = iconRegister.registerIcon(RefStrings.MODID + (this == ModBlocks.factory_titanium_furnace ? ":factory_titanium_furnace" : ":factory_advanced_furnace")); - this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + (this == ModBlocks.factory_titanium_furnace ? ":factory_titanium_hull" : ":factory_advanced_hull")); - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) { - return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : this.blockIcon); - } - - @Override - public void onBlockAdded(World world, int x, int y, int z) { - super.onBlockAdded(world, x, y, z); - } - - @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { - int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - - if(i == 0) - { - world.setBlockMetadataWithNotify(x, y, z, 2, 2); - } - if(i == 1) - { - world.setBlockMetadataWithNotify(x, y, z, 5, 2); - } - if(i == 2) - { - world.setBlockMetadataWithNotify(x, y, z, 3, 2); - } - if(i == 3) - { - world.setBlockMetadataWithNotify(x, y, z, 4, 2); - } - } - -} diff --git a/src/main/java/com/hbm/blocks/machine/FoundryCastingBase.java b/src/main/java/com/hbm/blocks/machine/FoundryCastingBase.java index 661bab7cd..380d4f4bf 100644 --- a/src/main/java/com/hbm/blocks/machine/FoundryCastingBase.java +++ b/src/main/java/com/hbm/blocks/machine/FoundryCastingBase.java @@ -1,9 +1,7 @@ package com.hbm.blocks.machine; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - +import api.hbm.block.ICrucibleAcceptor; +import api.hbm.block.IToolable; import com.hbm.blocks.ILookOverlay; import com.hbm.inventory.material.Mats.MaterialStack; import com.hbm.items.ModItems; @@ -12,9 +10,6 @@ import com.hbm.items.machine.ItemMold.Mold; import com.hbm.items.machine.ItemScraps; import com.hbm.tileentity.machine.TileEntityFoundryCastingBase; import com.hbm.util.I18nUtil; - -import api.hbm.block.ICrucibleAcceptor; -import api.hbm.block.IToolable; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -30,6 +25,10 @@ import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + public abstract class FoundryCastingBase extends BlockContainer implements ICrucibleAcceptor, IToolable, ILookOverlay { protected FoundryCastingBase() { @@ -55,30 +54,30 @@ public abstract class FoundryCastingBase extends BlockContainer implements ICruc public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return ((ICrucibleAcceptor) world.getTileEntity(x, y, z)).canAcceptPartialFlow(world, x, y, z, side, stack); } - + @Override public MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return ((ICrucibleAcceptor) world.getTileEntity(x, y, z)).flow(world, x, y, z, side, stack); } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) { return true; } - + TileEntityFoundryCastingBase cast = (TileEntityFoundryCastingBase) world.getTileEntity(x, y, z); - + //remove casted item if(cast.slots[1] != null) { if(!player.inventory.addItemStackToInventory(cast.slots[1].copy())) { @@ -87,17 +86,17 @@ public abstract class FoundryCastingBase extends BlockContainer implements ICruc } else { player.inventoryContainer.detectAndSendChanges(); } - + cast.slots[1] = null; cast.markDirty(); world.markBlockForUpdate(x, y, z); return true; } - + //insert mold if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.mold && cast.slots[0] == null) { Mold mold = ((ItemMold) player.getHeldItem().getItem()).getMold(player.getHeldItem()); - + if(mold.size == cast.getMoldSize()) { cast.slots[0] = player.getHeldItem().copy(); cast.slots[0].stackSize = 1; @@ -108,7 +107,7 @@ public abstract class FoundryCastingBase extends BlockContainer implements ICruc return true; } } - + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemTool && ((ItemTool) player.getHeldItem().getItem()).getToolClasses(player.getHeldItem()).contains("shovel")) { if(cast.amount > 0) { ItemStack scrap = ItemScraps.create(new MaterialStack(cast.type, cast.amount)); @@ -125,13 +124,13 @@ public abstract class FoundryCastingBase extends BlockContainer implements ICruc } return true; } - + return false; } @Override public void breakBlock(World world, int x, int y, int z, Block b, int i) { - + TileEntityFoundryCastingBase cast = (TileEntityFoundryCastingBase) world.getTileEntity(x, y, z); if(cast.amount > 0) { ItemStack scrap = ItemScraps.create(new MaterialStack(cast.type, cast.amount)); @@ -139,14 +138,14 @@ public abstract class FoundryCastingBase extends BlockContainer implements ICruc world.spawnEntityInWorld(item); cast.amount = 0; //just for safety } - + for(ItemStack stack : cast.slots) { if(stack != null) { EntityItem drop = new EntityItem(world, x + 0.5, y + this.maxY, z + 0.5, stack.copy()); world.spawnEntityInWorld(drop); } } - + super.breakBlock(world, x, y, z, b, i); } @@ -154,7 +153,7 @@ public abstract class FoundryCastingBase extends BlockContainer implements ICruc @SideOnly(Side.CLIENT) public void randomDisplayTick(World world, int x, int y, int z, Random rand) { super.randomDisplayTick(world, x, y, z, rand); - + TileEntityFoundryCastingBase cast = (TileEntityFoundryCastingBase) world.getTileEntity(x, y, z); if(cast.amount > 0 && cast.amount >= cast.getCapacity()) { @@ -164,28 +163,28 @@ public abstract class FoundryCastingBase extends BlockContainer implements ICruc @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.SCREWDRIVER) return false; - + TileEntityFoundryCastingBase cast = (TileEntityFoundryCastingBase) world.getTileEntity(x, y, z); - + if(cast.slots[0] == null) return false; if(cast.amount > 0) return false; - + if(!player.inventory.addItemStackToInventory(cast.slots[0].copy())) { EntityItem item = new EntityItem(world, x + 0.5, y + this.maxY, z + 0.5, cast.slots[0].copy()); world.spawnEntityInWorld(item); } else { player.inventoryContainer.detectAndSendChanges(); } - + cast.markDirty(); world.markBlockForUpdate(x, y, z); - + cast.slots[0] = null; cast.markDirty(); - + return true; } @@ -193,18 +192,18 @@ public abstract class FoundryCastingBase extends BlockContainer implements ICruc public void printHook(Pre event, World world, int x, int y, int z) { TileEntityFoundryCastingBase cast = (TileEntityFoundryCastingBase) world.getTileEntity(x, y, z); List text = new ArrayList(); - + if(cast.slots[0] == null) { text.add(EnumChatFormatting.RED + I18nUtil.resolveKey("foundry.noCast")); } else if(cast.slots[0].getItem() == ModItems.mold){ Mold mold = ((ItemMold) cast.slots[0].getItem()).getMold(cast.slots[0]); text.add(EnumChatFormatting.BLUE + mold.getTitle()); } - + if(cast.type != null && cast.amount > 0) { text.add(EnumChatFormatting.YELLOW + cast.type.names[0] + ": " + cast.amount + " / " + cast.getCapacity()); } - + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(this.getUnlocalizedName() + ".name"), 0xFF4000, 0x401000, text); } } diff --git a/src/main/java/com/hbm/blocks/machine/FoundryChannel.java b/src/main/java/com/hbm/blocks/machine/FoundryChannel.java index 8866bfd0f..84faf6dee 100644 --- a/src/main/java/com/hbm/blocks/machine/FoundryChannel.java +++ b/src/main/java/com/hbm/blocks/machine/FoundryChannel.java @@ -176,6 +176,7 @@ public class FoundryChannel extends BlockContainer implements ICrucibleAcceptor } cast.amount = 0; cast.type = null; + cast.propagateMaterial(null); cast.markDirty(); world.markBlockForUpdate(x, y, z); } diff --git a/src/main/java/com/hbm/blocks/machine/FurnaceCombination.java b/src/main/java/com/hbm/blocks/machine/FurnaceCombination.java index 83e4b5ce9..4ce96d14d 100644 --- a/src/main/java/com/hbm/blocks/machine/FurnaceCombination.java +++ b/src/main/java/com/hbm/blocks/machine/FurnaceCombination.java @@ -1,18 +1,17 @@ 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.TileEntityFurnaceCombination; - 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; +import java.util.List; + public class FurnaceCombination extends BlockDummyable implements ITooltipProvider { public FurnaceCombination() { @@ -25,7 +24,7 @@ public class FurnaceCombination extends BlockDummyable implements ITooltipProvid return new TileEntityFurnaceCombination(); return new TileEntityProxyCombo().inventory().fluid(); } - + @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); diff --git a/src/main/java/com/hbm/blocks/machine/MachineAmmoPress.java b/src/main/java/com/hbm/blocks/machine/MachineAmmoPress.java new file mode 100644 index 000000000..b54d34e7f --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineAmmoPress.java @@ -0,0 +1,30 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityMachineAmmoPress; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class MachineAmmoPress extends BlockDummyable { + + public MachineAmmoPress() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return meta >= 12 ? new TileEntityMachineAmmoPress() : 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[] {1, 0, 0, 0, 1, 1}; } + @Override public int getOffset() { return 0; } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineArcFurnaceLarge.java b/src/main/java/com/hbm/blocks/machine/MachineArcFurnaceLarge.java index 1acdd1a10..43a767a9b 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineArcFurnaceLarge.java +++ b/src/main/java/com/hbm/blocks/machine/MachineArcFurnaceLarge.java @@ -7,7 +7,6 @@ import com.hbm.items.machine.ItemScraps; import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityMachineArcFurnaceLarge; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; import net.minecraft.entity.item.EntityItem; @@ -52,11 +51,11 @@ public class MachineArcFurnaceLarge extends BlockDummyable { public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { super.fillSpace(world, x, y, z, dir, o); MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y, z + dir.offsetZ * o, new int[] {4, 0, 3, -2, 1, 1}, this, dir); - + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); x += dir.offsetX * o; z += dir.offsetZ * o; - + this.makeExtra(world, x + dir.offsetX * 2 + rot.offsetX, y, z + dir.offsetZ * 2 + rot.offsetZ); this.makeExtra(world, x + dir.offsetX * 2 - rot.offsetX, y, z + dir.offsetZ * 2 - rot.offsetZ); this.makeExtra(world, x + rot.offsetX * 2 + dir.offsetX, y, z + rot.offsetZ * 2 + dir.offsetZ); @@ -64,10 +63,10 @@ public class MachineArcFurnaceLarge extends BlockDummyable { this.makeExtra(world, x - rot.offsetX * 2 + dir.offsetX, y, z - rot.offsetZ * 2 + dir.offsetZ); this.makeExtra(world, x - rot.offsetX * 2 - dir.offsetX, y, z - rot.offsetZ * 2 - dir.offsetZ); } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - + if(world.isRemote) { return true; } else if(!player.isSneaking()) { @@ -77,7 +76,7 @@ public class MachineArcFurnaceLarge extends BlockDummyable { return false; if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemTool && ((ItemTool) player.getHeldItem().getItem()).getToolClasses(player.getHeldItem()).contains("shovel")) { TileEntityMachineArcFurnaceLarge crucible = (TileEntityMachineArcFurnaceLarge) world.getTileEntity(pos[0], pos[1], pos[2]); - + for(MaterialStack stack : crucible.liquids) { ItemStack scrap = ItemScraps.create(new MaterialStack(stack.material, stack.amount)); if(!player.inventory.addItemStackToInventory(scrap)) { @@ -85,11 +84,11 @@ public class MachineArcFurnaceLarge extends BlockDummyable { world.spawnEntityInWorld(item); } } - + player.inventoryContainer.detectAndSendChanges(); crucible.liquids.clear(); crucible.markDirty(); - + } else { FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineAutocrafter.java b/src/main/java/com/hbm/blocks/machine/MachineAutocrafter.java index 1c922fab5..7cfde7611 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineAutocrafter.java +++ b/src/main/java/com/hbm/blocks/machine/MachineAutocrafter.java @@ -1,11 +1,8 @@ package com.hbm.blocks.machine; -import java.util.Random; - import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityMachineAutocrafter; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -22,6 +19,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.World; +import java.util.Random; + public class MachineAutocrafter extends BlockContainer { @SideOnly(Side.CLIENT) private IIcon iconTop; @@ -72,7 +71,7 @@ public class MachineAutocrafter extends BlockContainer { ISidedInventory tile = (ISidedInventory) world.getTileEntity(x, y, z); if(tile != null) { - + for(int i1 = 10; i1 < tile.getSizeInventory(); ++i1) { ItemStack itemstack = tile.getStackInSlot(i1); diff --git a/src/main/java/com/hbm/blocks/machine/MachineBattery.java b/src/main/java/com/hbm/blocks/machine/MachineBattery.java index 5aa2f11e0..7f4616a5e 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineBattery.java +++ b/src/main/java/com/hbm/blocks/machine/MachineBattery.java @@ -280,6 +280,9 @@ public class MachineBattery extends BlockContainer implements ILookOverlay, IPer @Override public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) { + list.add(EnumChatFormatting.GOLD + "Stores up to "+ BobMathUtil.getShortNumber(this.maxPower) + "HE"); + list.add(EnumChatFormatting.GOLD + "Charge speed: "+ BobMathUtil.getShortNumber(this.maxPower / 200) + "HE"); + list.add(EnumChatFormatting.GOLD + "Discharge speed: "+ BobMathUtil.getShortNumber(this.maxPower / 600) + "HE"); list.add(EnumChatFormatting.YELLOW + "" + BobMathUtil.getShortNumber(persistentTag.getLong("power")) + "/" + BobMathUtil.getShortNumber(this.maxPower) + "HE"); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java index 32ba803a3..bb8759c0d 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java +++ b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java @@ -1,8 +1,5 @@ package com.hbm.blocks.machine; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.handler.MultiblockHandlerXR; @@ -14,7 +11,6 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.storage.TileEntityMachineBAT9000; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; @@ -28,6 +24,9 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.List; + public class MachineBigAssTank9000 extends BlockDummyable implements IPersistentInfoProvider { public MachineBigAssTank9000(Material mat) { @@ -36,7 +35,7 @@ public class MachineBigAssTank9000 extends BlockDummyable implements IPersistent @Override public TileEntity createNewTileEntity(World world, int meta) { - + if(meta >= 12) return new TileEntityMachineBAT9000(); if(meta >= 6) return new TileEntityProxyCombo(false, false, true); return null; @@ -74,22 +73,22 @@ public class MachineBigAssTank9000 extends BlockDummyable implements IPersistent if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, getDimensions(), x, y, z, dir)) return false; if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {4, 0, 1, 1, 2, -2}, x, y, z, dir)) return false; if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {4, 0, 1, 1, -2, 2}, x, y, z, dir)) return false; - + return true; } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - + if(world.isRemote) { return true; } else if(!player.isSneaking()) { - + int[] pos = this.findCore(world, x, y, z); - + if(pos == null) return false; - + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); //we can do this because nobody is stopping me from doing this return true; } else if(player.isSneaking()){ @@ -97,9 +96,9 @@ public class MachineBigAssTank9000 extends BlockDummyable implements IPersistent if(pos == null) return false; - + TileEntityMachineBAT9000 trialEntity = (TileEntityMachineBAT9000) world.getTileEntity(pos[0], pos[1], pos[2]); - + if(trialEntity != null) { if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); @@ -115,7 +114,7 @@ public class MachineBigAssTank9000 extends BlockDummyable implements IPersistent return true; } } - + @Override public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { return IPersistentNBT.getDrops(world, x, y, z, this); @@ -130,19 +129,19 @@ public class MachineBigAssTank9000 extends BlockDummyable implements IPersistent public int getComparatorInputOverride(World world, int x, int y, int z, int side) { int meta = world.getBlockMetadata(x, y, z); - + if(meta >= 6) { int[] pos = this.findCore(world, x, y, z); if(pos == null) return 0; TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); - + if(!(te instanceof TileEntityMachineBAT9000)) return 0; - + TileEntityMachineBAT9000 tank = (TileEntityMachineBAT9000) te; return tank.getComparatorPower(); } - + return 0; } diff --git a/src/main/java/com/hbm/blocks/machine/MachineBrickFurnace.java b/src/main/java/com/hbm/blocks/machine/MachineBrickFurnace.java index 48054e36e..f4164f964 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineBrickFurnace.java +++ b/src/main/java/com/hbm/blocks/machine/MachineBrickFurnace.java @@ -1,13 +1,10 @@ package com.hbm.blocks.machine; -import java.util.Random; - import com.hbm.blocks.ModBlocks; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityFurnaceBrick; import com.hbm.util.ItemStackUtil; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -24,6 +21,8 @@ import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.World; +import java.util.Random; + public class MachineBrickFurnace extends BlockContainer { private final Random rand = new Random(); @@ -38,7 +37,7 @@ public class MachineBrickFurnace extends BlockContainer { super(Material.iron); isActive = blockState; } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -47,7 +46,7 @@ public class MachineBrickFurnace extends BlockContainer { this.iconFront = iconRegister.registerIcon(RefStrings.MODID + (this.isActive ? ":machine_furnace_brick_front_on" : ":machine_furnace_brick_front_off")); this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":machine_furnace_brick_side"); } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { @@ -64,31 +63,31 @@ public class MachineBrickFurnace extends BlockContainer { public Item getItem(World world, int x, int y, int z) { return Item.getItemFromBlock(ModBlocks.machine_furnace_brick_off); } - + @Override public void onBlockAdded(World world, int x, int y, int z) { super.onBlockAdded(world, x, y, z); this.setDefaultDirection(world, x, y, z); } - + private void setDefaultDirection(World world, int x, int y, int z) { if(!world.isRemote) { Block nZ = world.getBlock(x, y, z - 1); Block pZ = world.getBlock(x, y, z + 1); Block nX = world.getBlock(x - 1, y, z); Block pX = world.getBlock(x + 1, y, z); - + byte meta = 3; - + if(nZ.func_149730_j() && !pZ.func_149730_j()) meta = 3; if(pZ.func_149730_j() && !nZ.func_149730_j()) meta = 2; if(nX.func_149730_j() && !pX.func_149730_j()) meta = 5; if(pX.func_149730_j() && !nX.func_149730_j()) meta = 4; - + world.setBlockMetadataWithNotify(x, y, z, meta, 2); } } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; @@ -96,10 +95,10 @@ public class MachineBrickFurnace extends BlockContainer { if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 5, 2); if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 2); if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 4, 2); - + if(itemStack.hasDisplayName()) ((TileEntityFurnaceBrick)world.getTileEntity(x, y, z)).setCustomName(itemStack.getDisplayName()); } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) { @@ -119,22 +118,22 @@ public class MachineBrickFurnace extends BlockContainer { int i = world.getBlockMetadata(x, y, z); TileEntity entity = world.getTileEntity(x, y, z); keepInventory = true; - + if(isProcessing) { world.setBlock(x, y, z, ModBlocks.machine_furnace_brick_on); } else { world.setBlock(x, y, z, ModBlocks.machine_furnace_brick_off); } - + keepInventory = false; world.setBlockMetadataWithNotify(x, y, z, i, 2); - + if(entity != null) { entity.validate(); world.setTileEntity(x, y, z, entity); } } - + @Override public void breakBlock(World world, int x, int y, int z, Block block, int meta) { if(!keepInventory) ItemStackUtil.spillItems(world, x, y, z, block, rand); diff --git a/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java b/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java index 8e06209ca..85bbf4b60 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java @@ -10,9 +10,6 @@ import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ModBlocks; import com.hbm.lib.RefStrings; -import com.hbm.packet.BufPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.BobMathUtil; @@ -22,7 +19,6 @@ import com.hbm.util.fauxpointtwelve.BlockPos; import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.client.registry.RenderingRegistry; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; @@ -48,7 +44,7 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP @SideOnly(Side.CLIENT) public IIcon iconBottom; @SideOnly(Side.CLIENT) public IIcon iconInnerTop; @SideOnly(Side.CLIENT) public IIcon iconInnerSide; - + protected long power; String name; @@ -57,7 +53,7 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP this.power = power; this.name = name; } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -87,34 +83,37 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP @Override public void printHook(Pre event, World world, int x, int y, int z) { - + TileEntity te = world.getTileEntity(x, y, z); - + if(!(te instanceof TileEntityCapacitor)) return; - + TileEntityCapacitor battery = (TileEntityCapacitor) te; List text = new ArrayList(); text.add(BobMathUtil.getShortNumber(battery.getPower()) + " / " + BobMathUtil.getShortNumber(battery.getMaxPower()) + "HE"); - + double percent = (double) battery.getPower() / (double) battery.getMaxPower(); int charge = (int) Math.floor(percent * 10_000D); int color = ((int) (0xFF - 0xFF * percent)) << 16 | ((int)(0xFF * percent) << 8); text.add("&[" + color + "&]" + (charge / 100D) + "%"); text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + "+" + BobMathUtil.getShortNumber(battery.powerReceived) + "HE/t"); text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + "-" + BobMathUtil.getShortNumber(battery.powerSent) + "HE/t"); - + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } @Override public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) { + list.add(EnumChatFormatting.GOLD + "Stores up to "+ BobMathUtil.getShortNumber(this.power) + "HE"); + list.add(EnumChatFormatting.GOLD + "Charge speed: "+ BobMathUtil.getShortNumber(this.power / 200) + "HE"); + list.add(EnumChatFormatting.GOLD + "Discharge speed: "+ BobMathUtil.getShortNumber(this.power / 600) + "HE"); list.add(EnumChatFormatting.YELLOW + "" + BobMathUtil.getShortNumber(persistentTag.getLong("power")) + "/" + BobMathUtil.getShortNumber(persistentTag.getLong("maxPower")) + "HE"); } @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { - + if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { for(String s : I18nUtil.resolveKeyArray("tile.capacitor.desc")) list.add(EnumChatFormatting.YELLOW + s); } else { @@ -123,7 +122,7 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); } } - + @Override public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { return IPersistentNBT.getDrops(world, x, y, z, this); @@ -136,68 +135,68 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP @Override public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) { - + if(!player.capabilities.isCreativeMode) { harvesters.set(player); this.dropBlockAsItem(world, x, y, z, meta, 0); harvesters.set(null); } } - + @Override public void harvestBlock(World world, EntityPlayer player, int x, int y, int z, int meta) { player.addStat(StatList.mineBlockStatArray[getIdFromBlock(this)], 1); player.addExhaustion(0.025F); } - public static class TileEntityCapacitor extends TileEntityLoadedBase implements IEnergyProviderMK2, IEnergyReceiverMK2, IBufPacketReceiver, IPersistentNBT { - + public static class TileEntityCapacitor extends TileEntityLoadedBase implements IEnergyProviderMK2, IEnergyReceiverMK2, IPersistentNBT { + public long power; protected long maxPower; public long powerReceived; public long powerSent; - + public TileEntityCapacitor() { } - + public TileEntityCapacitor(long maxPower) { this.maxPower = maxPower; } - + @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + ForgeDirection opp = ForgeDirection.getOrientation(this.getBlockMetadata()); ForgeDirection dir = opp.getOpposite(); - + BlockPos pos = new BlockPos(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); - + boolean didStep = false; ForgeDirection last = null; - + while(worldObj.getBlock(pos.getX(), pos.getY(), pos.getZ()) == ModBlocks.capacitor_bus) { ForgeDirection current = ForgeDirection.getOrientation(worldObj.getBlockMetadata(pos.getX(), pos.getY(), pos.getZ())); if(!didStep) last = current; didStep = true; - + if(last != current) { pos = null; break; } - + pos = pos.offset(current); } - + if(pos != null && last != null) { this.tryUnsubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ()); this.tryProvide(worldObj, pos.getX(), pos.getY(), pos.getZ(), last); } - + this.trySubscribe(worldObj, xCoord + opp.offsetX, yCoord + opp.offsetY, zCoord + opp.offsetZ, opp); - PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 15)); - + networkPackNT(15); + this.powerSent = 0; this.powerReceived = 0; } @@ -210,7 +209,7 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP buf.writeLong(powerReceived); buf.writeLong(powerSent); } - + @Override public void deserialize(ByteBuf buf) { power = buf.readLong(); @@ -232,7 +231,7 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP this.setPower(this.getMaxPower()); return overshoot; } - + @Override public void usePower(long power) { this.powerSent += Math.min(this.getPower(), power); @@ -249,6 +248,14 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP return maxPower; } + @Override public long getProviderSpeed() { + return this.getMaxPower() / 300; + } + + @Override public long getReceiverSpeed() { + return this.getMaxPower() / 100; + } + @Override public ConnectionPriority getPriority() { return ConnectionPriority.LOW; @@ -258,7 +265,7 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP public void setPower(long power) { this.power = power; } - + @Override public boolean canConnect(ForgeDirection dir) { return dir == ForgeDirection.getOrientation(this.getBlockMetadata()); @@ -278,14 +285,14 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP this.power = data.getLong("power"); this.maxPower = data.getLong("maxPower"); } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); this.power = nbt.getLong("power"); this.maxPower = nbt.getLong("maxPower"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); diff --git a/src/main/java/com/hbm/blocks/machine/MachineCapacitorBus.java b/src/main/java/com/hbm/blocks/machine/MachineCapacitorBus.java index dade916fa..1dcac8474 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCapacitorBus.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCapacitorBus.java @@ -1,11 +1,8 @@ package com.hbm.blocks.machine; -import java.util.List; - +import api.hbm.energymk2.IEnergyConnectorBlock; import com.hbm.blocks.ITooltipProvider; import com.hbm.lib.RefStrings; - -import api.hbm.energymk2.IEnergyConnectorBlock; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -20,8 +17,10 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.List; + public class MachineCapacitorBus extends Block implements IEnergyConnectorBlock, ITooltipProvider { - + @SideOnly(Side.CLIENT) private IIcon topIcon; public MachineCapacitorBus(Material mat) { @@ -38,7 +37,7 @@ public class MachineCapacitorBus extends Block implements IEnergyConnectorBlock, public IIcon getIcon(int side, int meta) { return side == meta ? topIcon : blockIcon; } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { int l = BlockPistonBase.determineOrientation(world, x, y, z, player); diff --git a/src/main/java/com/hbm/blocks/machine/MachineCatalyticCracker.java b/src/main/java/com/hbm/blocks/machine/MachineCatalyticCracker.java index c8d9bd49d..dd10cb3d1 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCatalyticCracker.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCatalyticCracker.java @@ -1,8 +1,5 @@ package com.hbm.blocks.machine; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; import com.hbm.handler.MultiblockHandlerXR; @@ -11,7 +8,6 @@ import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachineCatalyticCracker; import com.hbm.util.I18nUtil; - import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; @@ -23,6 +19,9 @@ import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.List; + public class MachineCatalyticCracker extends BlockDummyable implements ILookOverlay { public MachineCatalyticCracker(Material mat) { @@ -31,12 +30,12 @@ public class MachineCatalyticCracker extends BlockDummyable implements ILookOver @Override public TileEntity createNewTileEntity(World world, int meta) { - + if(meta >= 12) return new TileEntityMachineCatalyticCracker(); if(meta >= extra) return new TileEntityProxyCombo(false, false, true); - + return null; } @@ -49,33 +48,33 @@ public class MachineCatalyticCracker extends BlockDummyable implements ILookOver public int getOffset() { return 3; } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - + if(!world.isRemote && !player.isSneaking()) { - + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { int[] pos = this.findCore(world, x, y, z); - + if(pos == null) return false; - + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); - + if(!(te instanceof TileEntityMachineCatalyticCracker)) return false; - + TileEntityMachineCatalyticCracker cracker = (TileEntityMachineCatalyticCracker) te; FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); cracker.tanks[0].setTankType(type); cracker.markDirty(); player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); - + return true; } return false; - + } else { return true; } @@ -98,7 +97,7 @@ public class MachineCatalyticCracker extends BlockDummyable implements ILookOver MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[]{13, 0, 0, 3, 2, 1}, this, dir); MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[]{14, -13, -1, 2, 1, 0}, this, dir); MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[]{3, -1, 2, 3, -1, 3}, this, dir); - + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); this.makeExtra(world, x + dir.offsetX * o + dir.offsetX * 3 + rot.offsetX, y + dir.offsetY * o, z + dir.offsetZ * o + dir.offsetZ * 3 + rot.offsetZ); @@ -115,22 +114,22 @@ public class MachineCatalyticCracker extends BlockDummyable implements ILookOver @Override public void printHook(Pre event, World world, int x, int y, int z) { int[] pos = this.findCore(world, x, y, z); - + if(pos == null) return; - + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); - + if(!(te instanceof TileEntityMachineCatalyticCracker)) return; - + TileEntityMachineCatalyticCracker cracker = (TileEntityMachineCatalyticCracker) te; - + List text = new ArrayList(); for(int i = 0; i < cracker.tanks.length; i++) text.add((i < 2 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + cracker.tanks[i].getTankType().getLocalizedName() + ": " + cracker.tanks[i].getFill() + "/" + cracker.tanks[i].getMaxFill() + "mB"); - + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineCatalyticReformer.java b/src/main/java/com/hbm/blocks/machine/MachineCatalyticReformer.java index 80c9f2aef..b8401426a 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCatalyticReformer.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCatalyticReformer.java @@ -1,7 +1,5 @@ package com.hbm.blocks.machine; -import java.util.List; - import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.handler.MultiblockHandlerXR; @@ -9,7 +7,6 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachineCatalyticReformer; - import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -19,6 +16,8 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.List; + public class MachineCatalyticReformer extends BlockDummyable implements IPersistentInfoProvider { public MachineCatalyticReformer(Material mat) { @@ -31,7 +30,7 @@ public class MachineCatalyticReformer extends BlockDummyable implements IPersist if(meta >= 6) return new TileEntityProxyCombo().fluid().power(); return null; } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { return standardOpenBehavior(world, x, y, z, player, side); @@ -49,7 +48,7 @@ public class MachineCatalyticReformer extends BlockDummyable implements IPersist super.fillSpace(world, x, y, z, dir, o); MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, -3, 1, 0, -1, 2}, this, dir); MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {6, -3, 1, 1, 2, 0}, this, dir); - + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); this.makeExtra(world, x - dir.offsetX + 1, y, z - dir.offsetZ + 1); @@ -72,7 +71,7 @@ public class MachineCatalyticReformer extends BlockDummyable implements IPersist @Override public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) { - + for(int i = 0; i < 4; i++) { FluidTank tank = new FluidTank(Fluids.NONE, 0); tank.readFromNBT(persistentTag, "" + i); diff --git a/src/main/java/com/hbm/blocks/machine/MachineChimneyBrick.java b/src/main/java/com/hbm/blocks/machine/MachineChimneyBrick.java index 7c8f40bc2..f227488c4 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineChimneyBrick.java +++ b/src/main/java/com/hbm/blocks/machine/MachineChimneyBrick.java @@ -1,12 +1,9 @@ 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.TileEntityChimneyBrick; - import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -14,6 +11,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.List; + public class MachineChimneyBrick extends BlockDummyable implements ITooltipProvider { public MachineChimneyBrick(Material mat) { @@ -22,7 +21,7 @@ public class MachineChimneyBrick extends BlockDummyable implements ITooltipProvi @Override public TileEntity createNewTileEntity(World world, int meta) { - + if(meta >= 12) return new TileEntityChimneyBrick(); if(meta >= 6) return new TileEntityProxyCombo().fluid(); return null; diff --git a/src/main/java/com/hbm/blocks/machine/MachineChimneyIndustrial.java b/src/main/java/com/hbm/blocks/machine/MachineChimneyIndustrial.java index 036273535..f32078e16 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineChimneyIndustrial.java +++ b/src/main/java/com/hbm/blocks/machine/MachineChimneyIndustrial.java @@ -1,12 +1,9 @@ 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.TileEntityChimneyIndustrial; - import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -14,6 +11,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.List; + public class MachineChimneyIndustrial extends BlockDummyable implements ITooltipProvider { public MachineChimneyIndustrial(Material mat) { @@ -22,7 +21,7 @@ public class MachineChimneyIndustrial extends BlockDummyable implements ITooltip @Override public TileEntity createNewTileEntity(World world, int meta) { - + if(meta >= 12) return new TileEntityChimneyIndustrial(); if(meta >= 6) return new TileEntityProxyCombo().fluid(); return null; diff --git a/src/main/java/com/hbm/blocks/machine/MachineChungus.java b/src/main/java/com/hbm/blocks/machine/MachineChungus.java index 957169a40..e545ba4c5 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineChungus.java +++ b/src/main/java/com/hbm/blocks/machine/MachineChungus.java @@ -1,23 +1,31 @@ package com.hbm.blocks.machine; +import java.util.ArrayList; import java.util.List; import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; import com.hbm.handler.MultiblockHandlerXR; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.fluid.trait.FT_Coolable; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityChungus; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; 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.util.EnumChatFormatting; import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.common.util.ForgeDirection; -public class MachineChungus extends BlockDummyable implements ITooltipProvider { +public class MachineChungus extends BlockDummyable implements ITooltipProvider, ILookOverlay { public MachineChungus(Material mat) { super(mat); @@ -135,4 +143,33 @@ public class MachineChungus extends BlockDummyable implements ITooltipProvider { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { this.addStandardInfo(stack, player, list, ext); } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return; + + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + if(!(te instanceof TileEntityChungus)) return; + + TileEntityChungus chungus = (TileEntityChungus) te; + List text = new ArrayList(); + + FluidTank tankInput = chungus.tanks[0]; + FluidTank tankOutput = chungus.tanks[1]; + + FluidType inputType = tankInput.getTankType(); + FluidType outputType = Fluids.NONE; + + if(inputType.hasTrait(FT_Coolable.class)) { + outputType = inputType.getTrait(FT_Coolable.class).coolsTo; + } + + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + inputType.getLocalizedName() + ": " + tankInput.getFill() + "/" + tankInput.getMaxFill() + "mB"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + outputType.getLocalizedName() + ": " + tankOutput.getFill() + "/" + tankOutput.getMaxFill() + "mB"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + BobMathUtil.getShortNumber(chungus.power) + "/" + BobMathUtil.getShortNumber(chungus.getMaxPower()) + "HE"); + + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineCombustionEngine.java b/src/main/java/com/hbm/blocks/machine/MachineCombustionEngine.java index 162841266..47a7f1f27 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCombustionEngine.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCombustionEngine.java @@ -3,7 +3,6 @@ package com.hbm.blocks.machine; import com.hbm.blocks.BlockDummyable; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityMachineCombustionEngine; - import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; @@ -34,15 +33,15 @@ public class MachineCombustionEngine extends BlockDummyable { public int getOffset() { return 0; } - + @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); } - + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { super.fillSpace(world, x, y, z, dir, o); - + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); this.makeExtra(world, x + rot.offsetX, y, z + rot.offsetZ); diff --git a/src/main/java/com/hbm/blocks/machine/MachineCondenserPowered.java b/src/main/java/com/hbm/blocks/machine/MachineCondenserPowered.java index 842c084b7..e4918fc42 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCondenserPowered.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCondenserPowered.java @@ -1,15 +1,11 @@ package com.hbm.blocks.machine; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityCondenserPowered; import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; - import net.minecraft.block.material.Material; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; @@ -17,6 +13,9 @@ import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.List; + public class MachineCondenserPowered extends BlockDummyable implements ILookOverlay { public MachineCondenserPowered(Material mat) { @@ -43,7 +42,7 @@ public class MachineCondenserPowered extends BlockDummyable implements ILookOver @Override public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { super.fillSpace(world, x, y, z, dir, o); - + x = x + dir.offsetX * o; z = z + dir.offsetZ * o; @@ -70,7 +69,7 @@ public class MachineCondenserPowered extends BlockDummyable implements ILookOver TileEntityCondenserPowered tower = (TileEntityCondenserPowered) te; List text = new ArrayList(); - + text.add(BobMathUtil.getShortNumber(tower.power) + "HE / " + BobMathUtil.getShortNumber(tower.maxPower) + "HE"); for(int i = 0; i < tower.tanks.length; i++) diff --git a/src/main/java/com/hbm/blocks/machine/MachineConveyorPress.java b/src/main/java/com/hbm/blocks/machine/MachineConveyorPress.java index 1bddf1a9d..396ee0702 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineConveyorPress.java +++ b/src/main/java/com/hbm/blocks/machine/MachineConveyorPress.java @@ -1,8 +1,7 @@ package com.hbm.blocks.machine; -import java.util.ArrayList; -import java.util.List; - +import api.hbm.block.IToolable; +import api.hbm.conveyor.IConveyorBelt; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; @@ -10,9 +9,6 @@ import com.hbm.items.machine.ItemStamp; import com.hbm.tileentity.machine.TileEntityConveyorPress; import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; - -import api.hbm.block.IToolable; -import api.hbm.conveyor.IConveyorBelt; import net.minecraft.block.material.Material; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -25,6 +21,9 @@ import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.List; + public class MachineConveyorPress extends BlockDummyable implements IConveyorBelt, ILookOverlay, IToolable, ITooltipProvider { public MachineConveyorPress(Material mat) { @@ -46,25 +45,25 @@ public class MachineConveyorPress extends BlockDummyable implements IConveyorBel public int getOffset() { return 0; } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) { return true; } else { - + int[] pos = this.findCore(world, x, y, z); - + if(pos == null) return false; - + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); - + if(!(te instanceof TileEntityConveyorPress)) return false; - + TileEntityConveyorPress press = (TileEntityConveyorPress) te; - + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemStamp && press.slots[0] == null) { press.slots[0] = player.getHeldItem().copy(); press.slots[0].stackSize = 1; @@ -75,39 +74,39 @@ public class MachineConveyorPress extends BlockDummyable implements IConveyorBel return true; } } - + return false; } @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.SCREWDRIVER) return false; - + int[] pos = this.findCore(world, x, y, z); - + if(pos == null) return false; - + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); - + if(!(te instanceof TileEntityConveyorPress)) return false; - + TileEntityConveyorPress press = (TileEntityConveyorPress) te; - + if(press.slots[0] == null) return false; - + if(!player.inventory.addItemStackToInventory(press.slots[0].copy())) { EntityItem item = new EntityItem(world, x + 0.5, y + this.maxY, z + 0.5, press.slots[0].copy()); world.spawnEntityInWorld(item); } else { player.inventoryContainer.detectAndSendChanges(); } - + press.slots[0] = null; press.markChanged(); - + return true; } @@ -121,7 +120,7 @@ public class MachineConveyorPress extends BlockDummyable implements IConveyorBel Vec3 ret = Vec3.createVectorHelper(itemPos.xCoord + motion.xCoord / len * speed, itemPos.yCoord + motion.yCoord / len * speed, itemPos.zCoord + motion.zCoord / len * speed); return ret; } - + public ForgeDirection getTravelDirection(World world, int x, int y, int z, Vec3 itemPos) { int meta = world.getBlockMetadata(x, y - 1, z) - offset; return ForgeDirection.getOrientation(meta).getRotation(ForgeDirection.UP); @@ -148,21 +147,21 @@ public class MachineConveyorPress extends BlockDummyable implements IConveyorBel @Override public void printHook(Pre event, World world, int x, int y, int z) { int[] pos = this.findCore(world, x, y, z); - + if(pos == null) return; - + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); - + if(!(te instanceof TileEntityConveyorPress)) return; - + TileEntityConveyorPress press = (TileEntityConveyorPress) te; List text = new ArrayList(); text.add(BobMathUtil.getShortNumber(press.power) + "HE / " + BobMathUtil.getShortNumber(press.maxPower) + "HE"); text.add("Installed stamp: " + ((press.syncStack == null || press.syncStack.getItem() == null) ? (EnumChatFormatting.RED + "NONE") : press.syncStack.getDisplayName())); - + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineCrystallizer.java b/src/main/java/com/hbm/blocks/machine/MachineCrystallizer.java index 25012acf8..29ed20388 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCrystallizer.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCrystallizer.java @@ -4,7 +4,6 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityMachineCrystallizer; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -16,7 +15,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; public class MachineCrystallizer extends BlockDummyable { - + @SideOnly(Side.CLIENT) private IIcon iconTop; @@ -30,7 +29,7 @@ public class MachineCrystallizer extends BlockDummyable { if(meta >= 6) return new TileEntityProxyCombo().inventory().power().fluid(); return null; } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) { @@ -60,7 +59,7 @@ public class MachineCrystallizer extends BlockDummyable { public int getOffset() { return 1; } - + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { super.fillSpace(world, x, y, z, dir, o); diff --git a/src/main/java/com/hbm/blocks/machine/MachineDeuteriumExtractor.java b/src/main/java/com/hbm/blocks/machine/MachineDeuteriumExtractor.java index 08c921a35..ba472e1d2 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineDeuteriumExtractor.java +++ b/src/main/java/com/hbm/blocks/machine/MachineDeuteriumExtractor.java @@ -1,14 +1,10 @@ package com.hbm.blocks.machine; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.ILookOverlay; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityDeuteriumExtractor; import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; @@ -20,6 +16,9 @@ import net.minecraft.util.IIcon; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import java.util.ArrayList; +import java.util.List; + public class MachineDeuteriumExtractor extends BlockContainer implements ILookOverlay { public MachineDeuteriumExtractor(Material mat) { @@ -54,20 +53,20 @@ public class MachineDeuteriumExtractor extends BlockContainer implements ILookOv @Override public void printHook(Pre event, World world, int x, int y, int z) { - + TileEntity te = world.getTileEntity(x, y, z); - + if(!(te instanceof TileEntityDeuteriumExtractor)) return; - + TileEntityDeuteriumExtractor extractor = (TileEntityDeuteriumExtractor) te; - + List text = new ArrayList(); text.add((extractor.power < extractor.getMaxPower() / 20 ? EnumChatFormatting.RED : EnumChatFormatting.GREEN) + "Power: " + BobMathUtil.getShortNumber(extractor.power) + "HE"); for(int i = 0; i < extractor.tanks.length; i++) text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + extractor.tanks[i].getTankType().getLocalizedName() + ": " + extractor.tanks[i].getFill() + "/" + extractor.tanks[i].getMaxFill() + "mB"); - + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } -} \ No newline at end of file +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineDiFurnaceExtension.java b/src/main/java/com/hbm/blocks/machine/MachineDiFurnaceExtension.java index 7d67a92b5..74dd3595e 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineDiFurnaceExtension.java +++ b/src/main/java/com/hbm/blocks/machine/MachineDiFurnaceExtension.java @@ -6,7 +6,6 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityDiFurnace; import com.hbm.util.Compat; - import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; @@ -20,7 +19,7 @@ import net.minecraft.util.IIcon; import net.minecraft.world.World; public class MachineDiFurnaceExtension extends BlockContainer implements IProxyController { - + @SideOnly(Side.CLIENT) private IIcon iconTop; @SideOnly(Side.CLIENT) private IIcon iconBottom; @@ -32,7 +31,7 @@ public class MachineDiFurnaceExtension extends BlockContainer implements IProxyC public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityProxyCombo().inventory().fluid(); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -40,7 +39,7 @@ public class MachineDiFurnaceExtension extends BlockContainer implements IProxyC this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":difurnace_extension"); this.iconBottom = iconRegister.registerIcon(RefStrings.MODID + ":brick_fire"); } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(!player.isSneaking()) { @@ -52,7 +51,7 @@ public class MachineDiFurnaceExtension extends BlockContainer implements IProxyC } return false; } - + @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { return side == 0 ? this.iconBottom : side == 1 ? this.iconTop : this.blockIcon; diff --git a/src/main/java/com/hbm/blocks/machine/MachineDiFurnaceRTG.java b/src/main/java/com/hbm/blocks/machine/MachineDiFurnaceRTG.java index a90699da4..a8f929c81 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineDiFurnaceRTG.java +++ b/src/main/java/com/hbm/blocks/machine/MachineDiFurnaceRTG.java @@ -1,12 +1,9 @@ package com.hbm.blocks.machine; -import java.util.Random; - import com.hbm.blocks.ModBlocks; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityDiFurnaceRTG; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -25,8 +22,10 @@ import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.World; +import java.util.Random; + public class MachineDiFurnaceRTG extends BlockContainer { - + private final Random rand = new Random(); private final boolean isActive; private static boolean keepInventory; @@ -116,7 +115,7 @@ public class MachineDiFurnaceRTG extends BlockContainer { @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - + if(world.isRemote) { return true; } else if(!player.isSneaking()) { @@ -145,7 +144,7 @@ public class MachineDiFurnaceRTG extends BlockContainer { } else { world.setBlock(x, y, z, ModBlocks.machine_difurnace_rtg_off); } - + keepInventory = false; world.setBlockMetadataWithNotify(x, y, z, i, 2); diff --git a/src/main/java/com/hbm/blocks/machine/MachineElectricFurnace.java b/src/main/java/com/hbm/blocks/machine/MachineElectricFurnace.java index ecdd8c59e..b0a987f27 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineElectricFurnace.java +++ b/src/main/java/com/hbm/blocks/machine/MachineElectricFurnace.java @@ -1,12 +1,9 @@ package com.hbm.blocks.machine; -import java.util.Random; - import com.hbm.blocks.ModBlocks; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityMachineElectricFurnace; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -25,12 +22,14 @@ import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.World; +import java.util.Random; + public class MachineElectricFurnace extends BlockContainer { private final Random field_149933_a = new Random(); private final boolean isActive; private static boolean keepInventory; - + @SideOnly(Side.CLIENT) private IIcon iconFront; private IIcon iconTop; @@ -40,7 +39,7 @@ public class MachineElectricFurnace extends BlockContainer { super(Material.iron); isActive = blockState; } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -49,7 +48,7 @@ public class MachineElectricFurnace extends BlockContainer { this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":machine_electric_furnace_top"); this.iconBottom = iconRegister.registerIcon(RefStrings.MODID + ":machine_electric_furnace_bottom"); } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { @@ -57,19 +56,19 @@ public class MachineElectricFurnace extends BlockContainer { //return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : this.iconTop); return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : side == 0 ? this.iconBottom : side == 1 ? this.iconTop : this.blockIcon); } - + @Override public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { return Item.getItemFromBlock(ModBlocks.machine_electric_furnace_off); } - + @Override public void onBlockAdded(World world, int x, int y, int z) { super.onBlockAdded(world, x, y, z); this.setDefaultDirection(world, x, y, z); } - + private void setDefaultDirection(World world, int x, int y, int z) { if(!world.isRemote) { @@ -77,9 +76,9 @@ public class MachineElectricFurnace extends BlockContainer { Block block2 = world.getBlock(x, y, z + 1); Block block3 = world.getBlock(x - 1, y, z); Block block4 = world.getBlock(x + 1, y, z); - + byte b0 = 3; - + if(block1.func_149730_j() && !block2.func_149730_j()) { b0 = 3; @@ -96,15 +95,15 @@ public class MachineElectricFurnace extends BlockContainer { { b0 = 4; } - + world.setBlockMetadataWithNotify(x, y, z, b0, 2); } } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - + if(i == 0) { world.setBlockMetadataWithNotify(x, y, z, 2, 2); @@ -121,13 +120,13 @@ public class MachineElectricFurnace extends BlockContainer { { world.setBlockMetadataWithNotify(x, y, z, 4, 2); } - + if(itemStack.hasDisplayName()) { ((TileEntityMachineElectricFurnace)world.getTileEntity(x, y, z)).setCustomName(itemStack.getDisplayName()); } } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) @@ -155,23 +154,23 @@ public class MachineElectricFurnace extends BlockContainer { int i = world.getBlockMetadata(x, y, z); TileEntity entity = world.getTileEntity(x, y, z); keepInventory = true; - + if(isProcessing) { world.setBlock(x, y, z, ModBlocks.machine_electric_furnace_on); }else{ world.setBlock(x, y, z, ModBlocks.machine_electric_furnace_off); } - + keepInventory = false; world.setBlockMetadataWithNotify(x, y, z, i, 2); - + if(entity != null) { entity.validate(); world.setTileEntity(x, y, z, entity); } } - + @Override public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) { @@ -223,7 +222,7 @@ public class MachineElectricFurnace extends BlockContainer { super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); } - + @Override @SideOnly(Side.CLIENT) public void randomDisplayTick(World p_149734_1_, int x, int y, int z, Random rand) @@ -265,4 +264,4 @@ public class MachineElectricFurnace extends BlockContainer { public Item getItem(World p_149694_1_, int p_149694_2_, int p_149694_3_, int p_149694_4_) { return Item.getItemFromBlock(ModBlocks.machine_electric_furnace_off);} - } \ No newline at end of file + } diff --git a/src/main/java/com/hbm/blocks/machine/MachineElectrolyser.java b/src/main/java/com/hbm/blocks/machine/MachineElectrolyser.java index 3c6b7beac..ab91cbb43 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineElectrolyser.java +++ b/src/main/java/com/hbm/blocks/machine/MachineElectrolyser.java @@ -4,7 +4,6 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.handler.MultiblockHandlerXR; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityElectrolyser; - import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; @@ -33,19 +32,19 @@ public class MachineElectrolyser extends BlockDummyable { public int getOffset() { return 5; } - + @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 void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { super.fillSpace(world, x, y, z, dir, o); x += dir.offsetX * o; z += dir.offsetZ * o; - + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {2, -1, 5, 5, 1, 1}, this, dir); MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {3, -3, 5, 5, 0, 0}, this, dir); MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {3, -1, 4, -4, -3, 3}, this, dir); @@ -58,7 +57,7 @@ public class MachineElectrolyser extends BlockDummyable { MultiblockHandlerXR.fillSpace(world, x, y + 3, z, new int[] {0, 0, 0, 0, -1, 2}, this, dir); MultiblockHandlerXR.fillSpace(world, x - dir.offsetX * 2, y + 3, z - dir.offsetZ * 2, new int[] {0, 0, 0, 0, -1, 2}, this, dir); MultiblockHandlerXR.fillSpace(world, x - dir.offsetX * 4, y + 3, z - dir.offsetZ * 4, new int[] {0, 0, 0, 0, -1, 2}, this, dir); - + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); this.makeExtra(world, x - dir.offsetX * 5, y, z - dir.offsetZ * 5); @@ -84,13 +83,13 @@ public class MachineElectrolyser extends BlockDummyable { if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {3, -1, 0, 0, -3, 3}, x, y, z, dir)) return false; if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {3, -1, -2, 2, -3, 3}, x, y, z, dir)) return false; if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {3, -1, -4, 4, -3, 3}, x, y, z, dir)) return false; - + if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * 4, y + 3, z + dir.offsetZ * 4, new int[] {0, 0, 0, 0, -1, 2}, x, y, z, dir)) return false; if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * 2, y + 3, z + dir.offsetZ * 2, new int[] {0, 0, 0, 0, -1, 2}, x, y, z, dir)) return false; if(!MultiblockHandlerXR.checkSpace(world, x, y + 3, z, new int[] {0, 0, 0, 0, -1, 2}, x, y, z, dir)) return false; if(!MultiblockHandlerXR.checkSpace(world, x - dir.offsetX * 2, y + 3, z - dir.offsetZ * 2, new int[] {0, 0, 0, 0, -1, 2}, x, y, z, dir)) return false; if(!MultiblockHandlerXR.checkSpace(world, x - dir.offsetX * 4, y + 3, z - dir.offsetZ * 4, new int[] {0, 0, 0, 0, -1, 2}, x, y, z, dir)) return false; - + return true; } diff --git a/src/main/java/com/hbm/blocks/machine/MachineExposureChamber.java b/src/main/java/com/hbm/blocks/machine/MachineExposureChamber.java index 8efe19ae1..e0d906181 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineExposureChamber.java +++ b/src/main/java/com/hbm/blocks/machine/MachineExposureChamber.java @@ -4,7 +4,6 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.handler.MultiblockHandlerXR; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityMachineExposureChamber; - import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; @@ -37,10 +36,10 @@ public class MachineExposureChamber extends BlockDummyable { @Override public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { super.fillSpace(world, x, y, z, dir, o); - + x += dir.offsetX * o; z += dir.offsetZ * o; - + ForgeDirection rot = dir.getRotation(ForgeDirection.UP).getOpposite(); MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {3, 0, 0, 0, -3, 8}, this, dir); @@ -58,10 +57,10 @@ public class MachineExposureChamber extends BlockDummyable { @Override protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { - + x += dir.offsetX * o; z += dir.offsetZ * o; - + ForgeDirection rot = dir.getRotation(ForgeDirection.UP).getOpposite(); if(!MultiblockHandlerXR.checkSpace(world, x, y, z, getDimensions(), x, y, z, dir)) return false; @@ -70,10 +69,10 @@ public class MachineExposureChamber extends BlockDummyable { if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {0, 0, -1, 1, -3, 6}, x, y, z, dir)) return false; if(!MultiblockHandlerXR.checkSpace(world, x + rot.offsetX * 7, y, z + rot.offsetZ * 7, new int[] {3, 0, 1, -1, 0, 1}, x, y, z, dir)) return false; if(!MultiblockHandlerXR.checkSpace(world, x + rot.offsetX * 7, y, z + rot.offsetZ * 7, new int[] {3, 0, -1, 1, 0, 1}, x, y, z, dir)) return false; - + return true; } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { return super.standardOpenBehavior(world, x, y, z, player, 0); diff --git a/src/main/java/com/hbm/blocks/machine/MachineFieldDisturber.java b/src/main/java/com/hbm/blocks/machine/MachineFieldDisturber.java index 4ad885409..751cff978 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFieldDisturber.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFieldDisturber.java @@ -1,20 +1,19 @@ package com.hbm.blocks.machine; -import java.util.Random; - import com.hbm.entity.logic.EntityNukeExplosionMK3; import com.hbm.entity.logic.EntityNukeExplosionMK3.ATEntry; - import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.world.World; +import java.util.Random; + public class MachineFieldDisturber extends Block { public MachineFieldDisturber() { super(Material.iron); } - + @Override public int tickRate(World world) { return 10; diff --git a/src/main/java/com/hbm/blocks/machine/MachineFrackingTower.java b/src/main/java/com/hbm/blocks/machine/MachineFrackingTower.java index 7c6281110..761aa10ed 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFrackingTower.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFrackingTower.java @@ -1,8 +1,5 @@ package com.hbm.blocks.machine; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.handler.MultiblockHandlerXR; @@ -13,7 +10,6 @@ import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachineFrackingTower; import com.hbm.util.BobMathUtil; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; @@ -24,6 +20,9 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.List; + public class MachineFrackingTower extends BlockDummyable implements IPersistentInfoProvider { public MachineFrackingTower() { @@ -32,7 +31,7 @@ public class MachineFrackingTower extends BlockDummyable implements IPersistentI @Override public TileEntity createNewTileEntity(World world, int meta) { - + if(meta >= 12) return new TileEntityMachineFrackingTower(); if(meta >= 6) return new TileEntityProxyCombo(false, true, true); return null; @@ -50,9 +49,9 @@ public class MachineFrackingTower extends BlockDummyable implements IPersistentI @Override protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { - + if(!MultiblockHandlerXR.checkSpace(world, x, y + 2, z, new int[] {1, 0, 3, 3, 3, 3}, x, y, z, dir)) return false; - + if(!MultiblockHandlerXR.checkSpace(world, x - 2, y + 2, z - 2, new int[] {-1, 2, 0, 1, 0, 1}, x, y, z, ForgeDirection.NORTH)) return false; if(!MultiblockHandlerXR.checkSpace(world, x - 2, y + 2, z + 3, new int[] {-1, 2, 0, 1, 0, 1}, x, y, z, ForgeDirection.NORTH)) return false; if(!MultiblockHandlerXR.checkSpace(world, x + 3, y + 2, z - 2, new int[] {-1, 2, 0, 1, 0, 1}, x, y, z, ForgeDirection.NORTH)) return false; @@ -62,7 +61,7 @@ public class MachineFrackingTower extends BlockDummyable implements IPersistentI if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {24, -9, 1, 1, 1, 1}, x, y, z, dir)) return false; if(!MultiblockHandlerXR.checkSpace(world, x, y + 15, z, new int[] {1, 0, 1, 1, -2, 3}, x, y, z, dir)) return false; - + return super.checkRequirement(world, x, y, z, dir, o); } @@ -78,29 +77,29 @@ public class MachineFrackingTower extends BlockDummyable implements IPersistentI MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {10, -4, 2, 2, 2, 2}, this, dir); MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {24, -9, 1, 1, 1, 1}, this, dir); - + MultiblockHandlerXR.fillSpace(world, x, y + 15, z, new int[] {1, 0, 1, 1, -2, 3}, this, ForgeDirection.WEST); } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - + if(world.isRemote) { return true; } else if(!player.isSneaking()) { - + int[] pos = this.findCore(world, x, y, z); - + if(pos == null) return false; - + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); return true; } else { return true; } } - + @Override public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { return IPersistentNBT.getDrops(world, x, y, z, this); diff --git a/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java b/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java index 5c60f53df..1e1fc1e33 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java @@ -1,8 +1,5 @@ package com.hbm.blocks.machine; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; import com.hbm.inventory.fluid.FluidType; @@ -10,7 +7,6 @@ import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachineFractionTower; import com.hbm.util.I18nUtil; - import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; @@ -22,6 +18,9 @@ import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.List; + public class MachineFractionTower extends BlockDummyable implements ILookOverlay { public MachineFractionTower(Material mat) { @@ -30,12 +29,12 @@ public class MachineFractionTower extends BlockDummyable implements ILookOverlay @Override public TileEntity createNewTileEntity(World world, int meta) { - + if(meta >= 12) return new TileEntityMachineFractionTower(); if(meta >= extra) return new TileEntityProxyCombo(false, false, true); - + return null; } @@ -48,25 +47,25 @@ public class MachineFractionTower extends BlockDummyable implements ILookOverlay public int getOffset() { return 1; } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - + if(!world.isRemote && !player.isSneaking()) { - + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { int[] pos = this.findCore(world, x, y, z); - + if(pos == null) return false; - + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); - + if(!(te instanceof TileEntityMachineFractionTower)) return false; - + TileEntityMachineFractionTower frac = (TileEntityMachineFractionTower) te; - + if(world.getTileEntity(pos[0], pos[1] - 3, pos[2]) instanceof TileEntityMachineFractionTower) { player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.RED + "You can only change the type in the bottom segment!")); } else { @@ -75,11 +74,11 @@ public class MachineFractionTower extends BlockDummyable implements ILookOverlay frac.markDirty(); player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); } - + return true; } return false; - + } else { return true; } @@ -88,7 +87,7 @@ public class MachineFractionTower extends BlockDummyable implements ILookOverlay @Override public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { super.fillSpace(world, x, y, z, dir, o); - + x = x + dir.offsetX * o; z = z + dir.offsetZ * o; @@ -101,22 +100,22 @@ public class MachineFractionTower extends BlockDummyable implements ILookOverlay @Override public void printHook(Pre event, World world, int x, int y, int z) { int[] pos = this.findCore(world, x, y, z); - + if(pos == null) return; - + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); - + if(!(te instanceof TileEntityMachineFractionTower)) return; - + TileEntityMachineFractionTower cracker = (TileEntityMachineFractionTower) te; - + List text = new ArrayList(); for(int i = 0; i < cracker.tanks.length; i++) text.add((i == 0 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + cracker.tanks[i].getTankType().getLocalizedName() + ": " + cracker.tanks[i].getFill() + "/" + cracker.tanks[i].getMaxFill() + "mB"); - + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineHeatBoilerIndustrial.java b/src/main/java/com/hbm/blocks/machine/MachineHeatBoilerIndustrial.java index 7869a74bd..a2c411072 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineHeatBoilerIndustrial.java +++ b/src/main/java/com/hbm/blocks/machine/MachineHeatBoilerIndustrial.java @@ -1,9 +1,5 @@ package com.hbm.blocks.machine; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; - import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; @@ -14,7 +10,6 @@ import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityHeatBoilerIndustrial; import com.hbm.util.I18nUtil; - import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -27,6 +22,10 @@ import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + public class MachineHeatBoilerIndustrial extends BlockDummyable implements ILookOverlay, ITooltipProvider { public MachineHeatBoilerIndustrial() { @@ -35,32 +34,32 @@ public class MachineHeatBoilerIndustrial extends BlockDummyable implements ILook @Override public TileEntity createNewTileEntity(World world, int meta) { - + if(meta >= 12) return new TileEntityHeatBoilerIndustrial(); if(meta >= extra) return new TileEntityProxyCombo().fluid(); return null; } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - + if(!world.isRemote && !player.isSneaking()) { - + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { int[] pos = this.findCore(world, x, y, z); - + if(pos == null) return false; - + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); - + if(!(te instanceof TileEntityHeatBoilerIndustrial)) return false; - + TileEntityHeatBoilerIndustrial boiler = (TileEntityHeatBoilerIndustrial) te; - + FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); - + if(type.hasTrait(FT_Heatable.class) && type.getTrait(FT_Heatable.class).getEfficiency(HeatingType.BOILER) > 0) { boiler.tanks[0].setTankType(type); boiler.markDirty(); @@ -69,7 +68,7 @@ public class MachineHeatBoilerIndustrial extends BlockDummyable implements ILook return true; } return false; - + } else { return true; } @@ -98,24 +97,24 @@ public class MachineHeatBoilerIndustrial extends BlockDummyable implements ILook @Override public void printHook(Pre event, World world, int x, int y, int z) { - + int[] pos = this.findCore(world, x, y, z); - + if(pos == null) return; - + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); - + if(!(te instanceof TileEntityHeatBoilerIndustrial)) return; - + TileEntityHeatBoilerIndustrial boiler = (TileEntityHeatBoilerIndustrial) te; - + List text = new ArrayList(); text.add(String.format(Locale.US, "%,d", boiler.heat) + "TU"); text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + boiler.tanks[0].getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", boiler.tanks[0].getFill()) + " / " + String.format(Locale.US, "%,d", boiler.tanks[0].getMaxFill()) + "mB"); text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + boiler.tanks[1].getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", boiler.tanks[1].getFill()) + " / " + String.format(Locale.US, "%,d", boiler.tanks[1].getMaxFill()) + "mB"); - + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineHydrotreater.java b/src/main/java/com/hbm/blocks/machine/MachineHydrotreater.java index c1ed1c005..a0b223a91 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineHydrotreater.java +++ b/src/main/java/com/hbm/blocks/machine/MachineHydrotreater.java @@ -1,14 +1,11 @@ package com.hbm.blocks.machine; -import java.util.List; - import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachineHydrotreater; - import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -18,6 +15,8 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.List; + public class MachineHydrotreater extends BlockDummyable implements IPersistentInfoProvider { public MachineHydrotreater(Material mat) { @@ -30,7 +29,7 @@ public class MachineHydrotreater extends BlockDummyable implements IPersistentIn if(meta >= 6) return new TileEntityProxyCombo().fluid().power(); return null; } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { return standardOpenBehavior(world, x, y, z, player, side); @@ -51,7 +50,7 @@ public class MachineHydrotreater extends BlockDummyable implements IPersistentIn @Override public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) { - + for(int i = 0; i < 4; i++) { FluidTank tank = new FluidTank(Fluids.NONE, 0); tank.readFromNBT(persistentTag, "" + i); diff --git a/src/main/java/com/hbm/blocks/machine/MachineICFController.java b/src/main/java/com/hbm/blocks/machine/MachineICFController.java index 321d8307d..83267cec4 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineICFController.java +++ b/src/main/java/com/hbm/blocks/machine/MachineICFController.java @@ -1,23 +1,16 @@ package com.hbm.blocks.machine; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map.Entry; - import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.BlockICF.TileEntityBlockICF; import com.hbm.blocks.machine.BlockICFLaserComponent.EnumICFPart; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.machine.TileEntityICFController; import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.BlockPos; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -36,8 +29,14 @@ import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map.Entry; + public class MachineICFController extends BlockContainer implements ILookOverlay { - + @SideOnly(Side.CLIENT) private IIcon iconFront; @@ -49,43 +48,43 @@ public class MachineICFController extends BlockContainer implements ILookOverlay public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityICFController(); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { super.registerBlockIcons(iconRegister); this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":icf_controller"); } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : this.blockIcon); } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - + if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 2, 2); if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 5, 2); if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 2); if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 4, 2); } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - + if(world.isRemote) { return true; } else if(!player.isSneaking()) { TileEntityICFController controller = (TileEntityICFController) world.getTileEntity(x, y, z); - + if(!controller.assembled) { assemble(world, x, y, z, player); } - + return true; } else { return false; @@ -101,7 +100,7 @@ public class MachineICFController extends BlockContainer implements ILookOverlay private static HashSet turbochargers = new HashSet(); private static boolean errored; private static final int maxSize = 1024; - + public void assemble(World world, int x, int y, int z, EntityPlayer player) { assembly.clear(); casings.clear(); @@ -111,27 +110,27 @@ public class MachineICFController extends BlockContainer implements ILookOverlay capacitors.clear(); turbochargers.clear(); assembly.put(new BlockPos(x, y, z), 0); - + ForgeDirection dir = ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)).getOpposite(); - + errored = false; floodFill(world, x + dir.offsetX, y, z + dir.offsetZ, player); assembly.remove(new BlockPos(x, y, z)); - + TileEntityICFController controller = (TileEntityICFController) world.getTileEntity(x, y, z); - + if(!errored) { - + for(Entry entry : assembly.entrySet()) { - + BlockPos pos = entry.getKey(); - + if(ports.contains(pos)) { world.setBlock(pos.getX(), pos.getY(), pos.getZ(), ModBlocks.icf_block, 1, 3); } else { world.setBlock(pos.getX(), pos.getY(), pos.getZ(), ModBlocks.icf_block, 0, 3); } - + TileEntityBlockICF icf = (TileEntityBlockICF) world.getTileEntity(pos.getX(), pos.getY(), pos.getZ()); icf.block = ModBlocks.icf_laser_component; icf.meta = entry.getValue(); @@ -140,12 +139,12 @@ public class MachineICFController extends BlockContainer implements ILookOverlay icf.coreZ = z; icf.markDirty(); } - + controller.setup(ports, cells, emitters, capacitors, turbochargers); controller.markDirty(); } controller.assembled = !errored; - + assembly.clear(); casings.clear(); ports.clear(); @@ -154,24 +153,24 @@ public class MachineICFController extends BlockContainer implements ILookOverlay capacitors.clear(); turbochargers.clear(); } - + private void floodFill(World world, int x, int y, int z, EntityPlayer player) { - + BlockPos pos = new BlockPos(x, y, z); - + if(assembly.containsKey(pos)) return; if(assembly.size() >= maxSize) { errored = true; sendError(world, x, y, z, "Max size exceeded", player); return; } - + Block block = world.getBlock(x, y, z); int meta = world.getBlockMetadata(x, y, z); boolean validCasing = false; boolean validCore = false; - + if(block == ModBlocks.icf_laser_component) { if(meta == EnumICFPart.CASING.ordinal()) { casings.add(pos); validCasing = true; } if(meta == EnumICFPart.PORT.ordinal()) { ports.add(pos); validCasing = true; } @@ -180,12 +179,12 @@ public class MachineICFController extends BlockContainer implements ILookOverlay if(meta == EnumICFPart.CAPACITOR.ordinal()) { capacitors.add(pos); validCore = true; } if(meta == EnumICFPart.TURBO.ordinal()) { turbochargers.add(pos); validCore = true; } } - + if(validCasing) { assembly.put(pos, meta); return; } - + if(validCore) { assembly.put(pos, meta); floodFill(world, x + 1, y, z, player); @@ -200,7 +199,7 @@ public class MachineICFController extends BlockContainer implements ILookOverlay sendError(world, x, y, z, "Non-laser block", player); errored = true; } - + private void sendError(World world, int x, int y, int z, String message, EntityPlayer player) { if(player instanceof EntityPlayerMP) { diff --git a/src/main/java/com/hbm/blocks/machine/MachineLPW2.java b/src/main/java/com/hbm/blocks/machine/MachineLPW2.java new file mode 100644 index 000000000..719edddbc --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineLPW2.java @@ -0,0 +1,31 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.machine.TileEntityMachineLPW2; + +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class MachineLPW2 extends BlockDummyable { + + public MachineLPW2() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityMachineLPW2(); + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {6, 0, 3, 3, 9, 10}; + } + + @Override + public int getOffset() { + return 3; + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineLargeTurbine.java b/src/main/java/com/hbm/blocks/machine/MachineLargeTurbine.java index 8150f91e6..cc8328dd3 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineLargeTurbine.java +++ b/src/main/java/com/hbm/blocks/machine/MachineLargeTurbine.java @@ -1,13 +1,10 @@ package com.hbm.blocks.machine; -import java.util.List; - import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ITooltipProvider; import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityMachineLargeTurbine; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; @@ -18,6 +15,8 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.List; + public class MachineLargeTurbine extends BlockDummyable implements ITooltipProvider { public MachineLargeTurbine(Material mat) { @@ -26,13 +25,13 @@ public class MachineLargeTurbine extends BlockDummyable implements ITooltipProvi @Override public TileEntity createNewTileEntity(World world, int meta) { - + if(meta >= 12) return new TileEntityMachineLargeTurbine(); - + if(meta >= 6) return new TileEntityProxyCombo(false, true, true); - + return null; } @@ -45,7 +44,7 @@ public class MachineLargeTurbine extends BlockDummyable implements ITooltipProvi public int getOffset() { return 1; } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) @@ -54,20 +53,20 @@ public class MachineLargeTurbine extends BlockDummyable implements ITooltipProvi } else if(!player.isSneaking()) { int[] pos = this.findCore(world, x, y, z); - + if(pos == null) return false; - + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); return true; } else { return true; } } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { - + super.onBlockPlacedBy(world, x, y, z, player, itemStack); if(world.isRemote) @@ -75,7 +74,7 @@ public class MachineLargeTurbine extends BlockDummyable implements ITooltipProvi int k = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; ForgeDirection dir = ForgeDirection.NORTH; - + if(k == 0) dir = ForgeDirection.getOrientation(2); if(k == 1) @@ -84,9 +83,9 @@ public class MachineLargeTurbine extends BlockDummyable implements ITooltipProvi dir = ForgeDirection.getOrientation(3); if(k == 3) dir = ForgeDirection.getOrientation(4); - + ForgeDirection dir2 = dir.getRotation(ForgeDirection.UP); - + //back connector this.makeExtra(world, x + dir.offsetX * -4, y, z + dir.offsetZ * -4); //front connector @@ -94,7 +93,7 @@ public class MachineLargeTurbine extends BlockDummyable implements ITooltipProvi int xc = x - dir.offsetX; int zc = z - dir.offsetZ; - + //side connectors this.makeExtra(world, xc + dir2.offsetX, y, zc + dir2.offsetZ); this.makeExtra(world, xc - dir2.offsetX, y, zc - dir2.offsetZ); diff --git a/src/main/java/com/hbm/blocks/machine/MachineLiquefactor.java b/src/main/java/com/hbm/blocks/machine/MachineLiquefactor.java index 48165752b..6348106d6 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineLiquefactor.java +++ b/src/main/java/com/hbm/blocks/machine/MachineLiquefactor.java @@ -1,12 +1,9 @@ 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.oil.TileEntityMachineLiquefactor; - import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -14,6 +11,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.List; + public class MachineLiquefactor extends BlockDummyable implements ITooltipProvider { public MachineLiquefactor() { @@ -22,13 +21,13 @@ public class MachineLiquefactor extends BlockDummyable implements ITooltipProvid @Override public TileEntity createNewTileEntity(World world, int meta) { - + if(meta >= 12) return new TileEntityMachineLiquefactor(); - + if(meta >= extra) return new TileEntityProxyCombo(true, true, true); - + return null; } @@ -36,7 +35,7 @@ public class MachineLiquefactor extends BlockDummyable implements ITooltipProvid public int[] getDimensions() { return new int[] {3, 0, 1, 1, 1, 1}; } - + @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); @@ -50,12 +49,12 @@ public class MachineLiquefactor extends BlockDummyable implements ITooltipProvid @Override public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { super.fillSpace(world, x, y, z, dir, o); - + x = x + dir.offsetX * o; z = z + dir.offsetZ * o; this.makeExtra(world, x, y + 3, z); - + this.makeExtra(world, x + 1, y + 1, z); this.makeExtra(world, x - 1, y + 1, z); this.makeExtra(world, x, y + 1, z + 1); diff --git a/src/main/java/com/hbm/blocks/machine/MachineMiningLaser.java b/src/main/java/com/hbm/blocks/machine/MachineMiningLaser.java index ada5bff34..b8fd117ec 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineMiningLaser.java +++ b/src/main/java/com/hbm/blocks/machine/MachineMiningLaser.java @@ -1,14 +1,11 @@ package com.hbm.blocks.machine; -import java.util.List; - import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ITooltipProvider; import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.TileEntityProxyEnergy; import com.hbm.tileentity.machine.TileEntityMachineMiningLaser; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; @@ -17,6 +14,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.List; + public class MachineMiningLaser extends BlockDummyable implements ITooltipProvider { public MachineMiningLaser(Material mat) { @@ -29,7 +28,7 @@ public class MachineMiningLaser extends BlockDummyable implements ITooltipProvid if(meta >= 12) return new TileEntityMachineMiningLaser(); if(meta == 7) return new TileEntityProxyEnergy(); if(meta >= 6) return new TileEntityProxyCombo().inventory().fluid(); - + return null; } @@ -47,26 +46,26 @@ public class MachineMiningLaser extends BlockDummyable implements ITooltipProvid public int getHeightOffset() { return -1; } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - + if(world.isRemote) { return true; } else if(!player.isSneaking()) { - + int[] pos = this.findCore(world, x, y, z); - + if(pos == null) return false; - + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); return true; } else { return true; } } - + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { super.fillSpace(world, x, y, z, dir, o); @@ -78,7 +77,7 @@ public class MachineMiningLaser extends BlockDummyable implements ITooltipProvid this.makeExtra(world, x - 1, y, z); this.makeExtra(world, x, y, z + 1); this.makeExtra(world, x, y, z - 1); - + this.makeExtra(world, x, y + 1, z); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineMissileAssembly.java b/src/main/java/com/hbm/blocks/machine/MachineMissileAssembly.java index ef271e773..87f345b66 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineMissileAssembly.java +++ b/src/main/java/com/hbm/blocks/machine/MachineMissileAssembly.java @@ -1,11 +1,8 @@ package com.hbm.blocks.machine; -import java.util.Random; - import com.hbm.handler.BossSpawnHandler; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityMachineMissileAssembly; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; @@ -20,6 +17,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.World; +import java.util.Random; + public class MachineMissileAssembly extends BlockContainer { public MachineMissileAssembly(Material p_i45386_1_) { @@ -45,7 +44,7 @@ public class MachineMissileAssembly extends BlockContainer { public boolean renderAsNormalBlock() { return false; } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) { @@ -65,7 +64,7 @@ public class MachineMissileAssembly extends BlockContainer { } private final Random field_149933_a = new Random(); - + @Override public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) { @@ -111,11 +110,11 @@ public class MachineMissileAssembly extends BlockContainer { super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - + if(i == 0) { world.setBlockMetadataWithNotify(x, y, z, 2, 2); @@ -132,7 +131,7 @@ public class MachineMissileAssembly extends BlockContainer { { world.setBlockMetadataWithNotify(x, y, z, 4, 2); } - + if(itemStack.hasDisplayName()) { ((TileEntityMachineMissileAssembly)world.getTileEntity(x, y, z)).setCustomName(itemStack.getDisplayName()); diff --git a/src/main/java/com/hbm/blocks/machine/MachineNukeFurnace.java b/src/main/java/com/hbm/blocks/machine/MachineNukeFurnace.java index de87c78ae..94492e91f 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineNukeFurnace.java +++ b/src/main/java/com/hbm/blocks/machine/MachineNukeFurnace.java @@ -1,12 +1,9 @@ package com.hbm.blocks.machine; -import java.util.Random; - import com.hbm.blocks.ModBlocks; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityNukeFurnace; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -25,12 +22,14 @@ import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.World; +import java.util.Random; + public class MachineNukeFurnace extends BlockContainer { private final Random field_149933_a = new Random(); private final boolean isActive; private static boolean keepInventory; - + @SideOnly(Side.CLIENT) private IIcon iconTop; @SideOnly(Side.CLIENT) @@ -40,7 +39,7 @@ public class MachineNukeFurnace extends BlockContainer { super(Material.iron); isActive = blockState; } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -48,25 +47,25 @@ public class MachineNukeFurnace extends BlockContainer { this.iconFront = iconRegister.registerIcon(RefStrings.MODID + (this.isActive ? ":machine_nuke_furnace_front_on_alt" : ":machine_nuke_furnace_front_off_alt")); this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":machine_nuke_furnace_side_alt"); } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : (side == 1 ? this.iconTop : (side == 0 ? this.iconTop : this.blockIcon))); } - + @Override public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { return Item.getItemFromBlock(ModBlocks.machine_nuke_furnace_off); } - + @Override public void onBlockAdded(World world, int x, int y, int z) { super.onBlockAdded(world, x, y, z); this.setDefaultDirection(world, x, y, z); } - + private void setDefaultDirection(World world, int x, int y, int z) { if(!world.isRemote) { @@ -74,9 +73,9 @@ public class MachineNukeFurnace extends BlockContainer { Block block2 = world.getBlock(x, y, z + 1); Block block3 = world.getBlock(x - 1, y, z); Block block4 = world.getBlock(x + 1, y, z); - + byte b0 = 3; - + if(block1.func_149730_j() && !block2.func_149730_j()) { b0 = 3; @@ -93,15 +92,15 @@ public class MachineNukeFurnace extends BlockContainer { { b0 = 4; } - + world.setBlockMetadataWithNotify(x, y, z, b0, 2); } } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - + if(i == 0) { world.setBlockMetadataWithNotify(x, y, z, 2, 2); @@ -118,13 +117,13 @@ public class MachineNukeFurnace extends BlockContainer { { world.setBlockMetadataWithNotify(x, y, z, 4, 2); } - + if(itemStack.hasDisplayName()) { ((TileEntityNukeFurnace)world.getTileEntity(x, y, z)).setCustomName(itemStack.getDisplayName()); } } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) @@ -152,23 +151,23 @@ public class MachineNukeFurnace extends BlockContainer { int i = world.getBlockMetadata(x, y, z); TileEntity entity = world.getTileEntity(x, y, z); keepInventory = true; - + if(isProcessing) { world.setBlock(x, y, z, ModBlocks.machine_nuke_furnace_on); }else{ world.setBlock(x, y, z, ModBlocks.machine_nuke_furnace_off); } - + keepInventory = false; world.setBlockMetadataWithNotify(x, y, z, i, 2); - + if(entity != null) { entity.validate(); world.setTileEntity(x, y, z, entity); } } - + @Override public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) { @@ -220,7 +219,7 @@ public class MachineNukeFurnace extends BlockContainer { super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); } - + @Override @SideOnly(Side.CLIENT) public void randomDisplayTick(World p_149734_1_, int x, int y, int z, Random rand) diff --git a/src/main/java/com/hbm/blocks/machine/MachinePWRController.java b/src/main/java/com/hbm/blocks/machine/MachinePWRController.java index 4c9654659..584877d3f 100644 --- a/src/main/java/com/hbm/blocks/machine/MachinePWRController.java +++ b/src/main/java/com/hbm/blocks/machine/MachinePWRController.java @@ -1,19 +1,14 @@ package com.hbm.blocks.machine; -import java.util.HashMap; -import java.util.List; -import java.util.Map.Entry; - import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.BlockPWR.TileEntityBlockPWR; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.machine.TileEntityPWRController; import com.hbm.util.fauxpointtwelve.BlockPos; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -32,8 +27,12 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; + public class MachinePWRController extends BlockContainer implements ITooltipProvider { - + @SideOnly(Side.CLIENT) private IIcon iconFront; @@ -45,45 +44,45 @@ public class MachinePWRController extends BlockContainer implements ITooltipProv public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityPWRController(); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { super.registerBlockIcons(iconRegister); this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":pwr_controller"); } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : this.blockIcon); } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - + if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 2, 2); if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 5, 2); if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 2); if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 4, 2); } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - + if(world.isRemote) { return true; } else if(!player.isSneaking()) { TileEntityPWRController controller = (TileEntityPWRController) world.getTileEntity(x, y, z); - + if(!controller.assembled) { assemble(world, x, y, z, player); } else { FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); } - + return true; } else { return false; @@ -95,44 +94,44 @@ public class MachinePWRController extends BlockContainer implements ITooltipProv private static HashMap sources = new HashMap(); private static boolean errored; private static final int maxSize = 4096; - + public void assemble(World world, int x, int y, int z, EntityPlayer player) { assembly.clear(); fuelRods.clear(); sources.clear(); assembly.put(new BlockPos(x, y, z), this); - + ForgeDirection dir = ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)).getOpposite(); - + errored = false; floodFill(world, x + dir.offsetX, y, z + dir.offsetZ, player); - + if(fuelRods.size() == 0){ sendError(world, x, y, z, "Fuel rods required", player); errored = true; } - + if(sources.size() == 0) { sendError(world, x, y, z, "Neutron sources required", player); errored = true; } - + TileEntityPWRController controller = (TileEntityPWRController) world.getTileEntity(x, y, z); - + if(!errored) { for(Entry entry : assembly.entrySet()) { - + BlockPos pos = entry.getKey(); Block block = entry.getValue(); - + if(block != ModBlocks.pwr_controller) { - + if(block == ModBlocks.pwr_port) { world.setBlock(pos.getX(), pos.getY(), pos.getZ(), ModBlocks.pwr_block, 1, 3); } else { world.setBlock(pos.getX(), pos.getY(), pos.getZ(), ModBlocks.pwr_block, 0, 3); } - + TileEntityBlockPWR pwr = (TileEntityBlockPWR) world.getTileEntity(pos.getX(), pos.getY(), pos.getZ()); pwr.block = block; pwr.coreX = x; @@ -141,34 +140,34 @@ public class MachinePWRController extends BlockContainer implements ITooltipProv pwr.markDirty(); } } - + controller.setup(assembly, fuelRods); } controller.assembled = !errored; - + assembly.clear(); fuelRods.clear(); sources.clear(); } - + private void floodFill(World world, int x, int y, int z, EntityPlayer player) { - + BlockPos pos = new BlockPos(x, y, z); - + if(assembly.containsKey(pos)) return; if(assembly.size() >= maxSize) { errored = true; sendError(world, x, y, z, "Max size exceeded", player); return; } - + Block block = world.getBlock(x, y, z); - + if(isValidCasing(block)) { assembly.put(pos, block); return; } - + if(isValidCore(block)) { assembly.put(pos, block); if(block == ModBlocks.pwr_fuel) fuelRods.put(pos, block); @@ -185,7 +184,7 @@ public class MachinePWRController extends BlockContainer implements ITooltipProv sendError(world, x, y, z, "Non-reactor block", player); errored = true; } - + private void sendError(World world, int x, int y, int z, String message, EntityPlayer player) { if(player instanceof EntityPlayerMP) { @@ -198,7 +197,7 @@ public class MachinePWRController extends BlockContainer implements ITooltipProv PacketDispatcher.wrapper.sendTo(new AuxParticlePacketNT(data, x, y, z), (EntityPlayerMP) player); } } - + private boolean isValidCore(Block block) { if(block == ModBlocks.pwr_fuel || block == ModBlocks.pwr_control || @@ -209,7 +208,7 @@ public class MachinePWRController extends BlockContainer implements ITooltipProv return true; return false; } - + private boolean isValidCasing(Block block) { if(block == ModBlocks.pwr_casing || block == ModBlocks.pwr_reflector || block == ModBlocks.pwr_port) return true; return false; diff --git a/src/main/java/com/hbm/blocks/machine/MachinePlasmaHeater.java b/src/main/java/com/hbm/blocks/machine/MachinePlasmaHeater.java index 08c7f164f..1c138339a 100644 --- a/src/main/java/com/hbm/blocks/machine/MachinePlasmaHeater.java +++ b/src/main/java/com/hbm/blocks/machine/MachinePlasmaHeater.java @@ -1,14 +1,11 @@ package com.hbm.blocks.machine; -import java.util.Random; - import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.handler.MultiblockHandlerXR; import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityMachinePlasmaHeater; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.Block; import net.minecraft.block.material.Material; @@ -22,6 +19,8 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.Random; + public class MachinePlasmaHeater extends BlockDummyable { public MachinePlasmaHeater() { @@ -36,7 +35,7 @@ public class MachinePlasmaHeater extends BlockDummyable { if(meta >= 6) return new TileEntityProxyCombo(false, true, true); - + return null; } @@ -44,7 +43,7 @@ public class MachinePlasmaHeater extends BlockDummyable { public Item getItemDropped(int i, Random rand, int j) { return null; } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) @@ -53,10 +52,10 @@ public class MachinePlasmaHeater extends BlockDummyable { } else if(!player.isSneaking()) { int[] pos = this.findCore(world, x, y, z); - + if(pos == null) return false; - + TileEntityMachinePlasmaHeater entity = (TileEntityMachinePlasmaHeater) world.getTileEntity(pos[0], pos[1], pos[2]); if(entity != null) { @@ -74,21 +73,21 @@ public class MachinePlasmaHeater extends BlockDummyable { MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {4, -3, 2, 1, 1, 1}, this, dir); MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , y + 2, z + dir.offsetZ * o, new int[] {0, 1, 10, -8, 0, 0}, this, dir); - + ForgeDirection side = dir.getRotation(ForgeDirection.UP); - + for(int i = 1; i < 4; i++) { for(int j = -1; j < 2; j++) { - + this.makeExtra(world, x + side.offsetX * j, y + i, z + side.offsetZ * j); } } } - + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { - + float f = 0.0625F; - + if(world.getBlockMetadata(x, y, z) == ForgeDirection.UP.ordinal() && world.getBlock(x, y + 1, z) != this) { return AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + f * 8F, z + 1); } else if(world.getBlockMetadata(x, y, z) == ForgeDirection.DOWN.ordinal() && world.getBlock(x, y - 1, z) != this) { @@ -97,11 +96,11 @@ public class MachinePlasmaHeater extends BlockDummyable { return AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 1, z + 1); } } - + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { float f = 0.0625F; - + if(world.getBlockMetadata(x, y, z) == ForgeDirection.UP.ordinal() && world.getBlock(x, y + 1, z) != this) { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, f * 8F, 1.0F); } else if(world.getBlockMetadata(x, y, z) == ForgeDirection.DOWN.ordinal() && world.getBlock(x, y - 1, z) != this) { @@ -110,18 +109,18 @@ public class MachinePlasmaHeater extends BlockDummyable { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); } } - + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, getDimensions(), x, y, z, dir)) return false; - + if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {4, -3, 1, 1, 1, 1}, x, y, z, dir)) return false; - + if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + 2, z + dir.offsetZ * o, new int[] {0, 1, 10, -8, 0, 0}, x, y, z, dir)) return false; - + return true; } @@ -134,12 +133,12 @@ public class MachinePlasmaHeater extends BlockDummyable { public int getOffset() { return 1; } - + @Override public void breakBlock(World world, int x, int y, int z, Block block, int i) { - + if(i >= 12) { - + for(int l = 0; l < 2; l++) world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.fusion_heater, 64))); diff --git a/src/main/java/com/hbm/blocks/machine/MachinePuF6Tank.java b/src/main/java/com/hbm/blocks/machine/MachinePuF6Tank.java index e26b9d810..ba671001c 100644 --- a/src/main/java/com/hbm/blocks/machine/MachinePuF6Tank.java +++ b/src/main/java/com/hbm/blocks/machine/MachinePuF6Tank.java @@ -2,28 +2,22 @@ package com.hbm.blocks.machine; import java.util.Random; -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.MultiblockHandler; -import com.hbm.interfaces.IMultiblock; import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.storage.TileEntityMachinePuF6Tank; -import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class MachinePuF6Tank extends BlockContainer implements IMultiblock { +public class MachinePuF6Tank extends BlockContainer { public MachinePuF6Tank(Material p_i45386_1_) { super(p_i45386_1_); @@ -57,7 +51,7 @@ public class MachinePuF6Tank extends BlockContainer implements IMultiblock { @Override public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { - return Item.getItemFromBlock(ModBlocks.machine_puf6_tank); + return null; } @Override @@ -76,26 +70,5 @@ public class MachinePuF6Tank extends BlockContainer implements IMultiblock { if(i == 3) { world.setBlockMetadataWithNotify(x, y, z, 4, 2); } - - if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.uf6Dimension)) { - MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.uf6Dimension, ModBlocks.dummy_block_puf6); - - } else - world.func_147480_a(x, y, z, true); - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if(world.isRemote) { - return true; - } else if(!player.isSneaking()) { - TileEntityMachinePuF6Tank entity = (TileEntityMachinePuF6Tank) world.getTileEntity(x, y, z); - if(entity != null) { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); - } - return true; - } else { - return false; - } } } diff --git a/src/main/java/com/hbm/blocks/machine/MachinePyroOven.java b/src/main/java/com/hbm/blocks/machine/MachinePyroOven.java new file mode 100644 index 000000000..a28eab1a7 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachinePyroOven.java @@ -0,0 +1,55 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.oil.TileEntityMachinePyroOven; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachinePyroOven extends BlockDummyable { + + public MachinePyroOven(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityMachinePyroOven(); + if(meta >= 6) return new TileEntityProxyCombo().inventory().power().fluid(); + return null; + } + + @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[] {2, 0, 3, 3, 2, 2}; + } + + @Override + public int getOffset() { + return 3; + } + + @Override + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + x += dir.offsetX * o; + z += dir.offsetZ * o; + + ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); + + for(int i = -2; i <= 2; i++) { + this.makeExtra(world, x + dir.offsetX * i + rot.offsetX * 2, y, z + dir.offsetZ * i + rot.offsetZ * 2); + } + + this.makeExtra(world, x - rot.offsetX, y + 2, z - rot.offsetZ); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineRadarScreen.java b/src/main/java/com/hbm/blocks/machine/MachineRadarScreen.java index 6f1df1a14..0f6e63d8e 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineRadarScreen.java +++ b/src/main/java/com/hbm/blocks/machine/MachineRadarScreen.java @@ -4,7 +4,6 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityMachineRadarNT; import com.hbm.tileentity.machine.TileEntityMachineRadarScreen; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; @@ -34,18 +33,18 @@ public class MachineRadarScreen extends BlockDummyable { @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - + if(world.isRemote && !player.isSneaking()) { int[] pos = this.findCore(world, x, y, z); if(pos == null) return false; - + TileEntityMachineRadarScreen screen = (TileEntityMachineRadarScreen) world.getTileEntity(pos[0], pos[1], pos[2]); if(screen.linked && world.getTileEntity(screen.refX, screen.refY, screen.refZ) instanceof TileEntityMachineRadarNT) { FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, screen.refX, screen.refY, screen.refZ); } - + return false; } else if(!player.isSneaking()) { return true; diff --git a/src/main/java/com/hbm/blocks/machine/MachineReactorBreeding.java b/src/main/java/com/hbm/blocks/machine/MachineReactorBreeding.java index bde522787..29f5fa213 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineReactorBreeding.java +++ b/src/main/java/com/hbm/blocks/machine/MachineReactorBreeding.java @@ -4,7 +4,6 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyInventory; import com.hbm.tileentity.machine.TileEntityMachineReactorBreeding; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; @@ -12,20 +11,20 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public class MachineReactorBreeding extends BlockDummyable { - + public MachineReactorBreeding(Material mat) { super(mat); } @Override public TileEntity createNewTileEntity(World world, int meta) { - + if(meta >= 12) return new TileEntityMachineReactorBreeding(); - + return new TileEntityProxyInventory(); } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) @@ -34,10 +33,10 @@ public class MachineReactorBreeding extends BlockDummyable { } else if(!player.isSneaking()) { int[] pos = this.findCore(world, x, y, z); - + if(pos == null) return false; - + TileEntityMachineReactorBreeding entity = (TileEntityMachineReactorBreeding) world.getTileEntity(pos[0], pos[1], pos[2]); if(entity != null) { diff --git a/src/main/java/com/hbm/blocks/machine/MachineReactorControl.java b/src/main/java/com/hbm/blocks/machine/MachineReactorControl.java index 9b7cde970..4f3fc61bf 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineReactorControl.java +++ b/src/main/java/com/hbm/blocks/machine/MachineReactorControl.java @@ -1,11 +1,8 @@ package com.hbm.blocks.machine; -import java.util.Random; - import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityReactorControl; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -25,8 +22,10 @@ import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.World; +import java.util.Random; + public class MachineReactorControl extends BlockContainer { - + @SideOnly(Side.CLIENT) private IIcon iconTop; @SideOnly(Side.CLIENT) @@ -40,7 +39,7 @@ public class MachineReactorControl extends BlockContainer { public MachineReactorControl(Material p_i45386_1_) { super(p_i45386_1_); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -49,33 +48,33 @@ public class MachineReactorControl extends BlockContainer { this.iconBack = iconRegister.registerIcon(RefStrings.MODID + ":machine_controller_back"); this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":machine_controller_side"); } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { - + if(metadata == 0) metadata = 3; - + if(metadata == side) return iconFront; - + if(side == 0 || side == 1) return iconTop; - + if(metadata == 2 && side == 3 || metadata == 3 && side == 2 || metadata == 4 && side == 5 || metadata == 5 && side == 4) return iconBack; - + return blockIcon; } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - + if(i == 0) { world.setBlockMetadataWithNotify(x, y, z, 2, 2); @@ -92,7 +91,7 @@ public class MachineReactorControl extends BlockContainer { { world.setBlockMetadataWithNotify(x, y, z, 4, 2); } - + if(itemStack.hasDisplayName()) { ((TileEntityReactorControl)world.getTileEntity(x, y, z)).setCustomName(itemStack.getDisplayName()); @@ -103,13 +102,13 @@ public class MachineReactorControl extends BlockContainer { public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { return new TileEntityReactorControl(); } - + @Override public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { return Item.getItemFromBlock(this); } - + @Override public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) { @@ -161,7 +160,7 @@ public class MachineReactorControl extends BlockContainer { super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) @@ -190,12 +189,12 @@ public class MachineReactorControl extends BlockContainer { public int getComparatorInputOverride(World world, int x, int y, int z, int p_149736_5_) { TileEntityReactorControl entity = (TileEntityReactorControl) world.getTileEntity(x, y, z); - + if(entity != null) { return (int)Math.ceil((double)entity.heat * 15D / 50000D); } - + return 0; } diff --git a/src/main/java/com/hbm/blocks/machine/MachineRotaryFurnace.java b/src/main/java/com/hbm/blocks/machine/MachineRotaryFurnace.java new file mode 100644 index 000000000..1f5e3d119 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineRotaryFurnace.java @@ -0,0 +1,59 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityMachineRotaryFurnace; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineRotaryFurnace extends BlockDummyable { + + public MachineRotaryFurnace(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityMachineRotaryFurnace(); + if(meta >= 6) return new TileEntityProxyCombo().inventory().fluid(); + return null; + } + + @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[] {4, 0, 1, 1, 2, 2}; + } + + @Override + public int getOffset() { + return 1; + } + + @Override + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + x += dir.offsetX * o; + z += dir.offsetZ * o; + + ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); + + //back + for(int i = -2; i <= 2; i++) { + this.makeExtra(world, x - dir.offsetX + rot.offsetX * i, y, z - dir.offsetZ + rot.offsetZ * i); + } + //side fluid + this.makeExtra(world, x + dir.offsetX + rot.offsetX * 2, y, z + dir.offsetZ + rot.offsetZ * 2); + //exhaust + this.makeExtra(world, x + rot.offsetX, y + 4, z + rot.offsetZ); + //solid fuel + this.makeExtra(world, x + dir.offsetX + rot.offsetX, y, z + dir.offsetZ + rot.offsetZ); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineSchrabidiumTransmutator.java b/src/main/java/com/hbm/blocks/machine/MachineSchrabidiumTransmutator.java index d89764265..04bc79818 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineSchrabidiumTransmutator.java +++ b/src/main/java/com/hbm/blocks/machine/MachineSchrabidiumTransmutator.java @@ -1,12 +1,9 @@ package com.hbm.blocks.machine; -import java.util.Random; - import com.hbm.blocks.ModBlocks; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityMachineSchrabidiumTransmutator; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -23,16 +20,18 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.World; +import java.util.Random; + public class MachineSchrabidiumTransmutator extends BlockContainer { private final Random field_149933_a = new Random(); private static boolean keepInventory; - + @SideOnly(Side.CLIENT) //private IIcon iconFront; private IIcon iconTop; private IIcon iconBottom; - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -40,7 +39,7 @@ public class MachineSchrabidiumTransmutator extends BlockContainer { this.iconBottom = iconRegister.registerIcon(RefStrings.MODID + (":transmutator_bottom")); this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":transmutator_side"); } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { @@ -50,13 +49,13 @@ public class MachineSchrabidiumTransmutator extends BlockContainer { public MachineSchrabidiumTransmutator(Material p_i45386_1_) { super(p_i45386_1_); } - + @Override public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { return Item.getItemFromBlock(ModBlocks.machine_schrabidium_transmutator); } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) @@ -79,7 +78,7 @@ public class MachineSchrabidiumTransmutator extends BlockContainer { public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { return new TileEntityMachineSchrabidiumTransmutator(); } - + @Override public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) { diff --git a/src/main/java/com/hbm/blocks/machine/MachineSolarBoiler.java b/src/main/java/com/hbm/blocks/machine/MachineSolarBoiler.java index b4a9479ce..6c4a3e29c 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineSolarBoiler.java +++ b/src/main/java/com/hbm/blocks/machine/MachineSolarBoiler.java @@ -1,15 +1,11 @@ package com.hbm.blocks.machine; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntitySolarBoiler; import com.hbm.util.I18nUtil; - import net.minecraft.block.material.Material; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; @@ -17,6 +13,9 @@ import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.List; + public class MachineSolarBoiler extends BlockDummyable implements ILookOverlay { public MachineSolarBoiler(Material mat) { @@ -25,12 +24,12 @@ public class MachineSolarBoiler extends BlockDummyable implements ILookOverlay { @Override public TileEntity createNewTileEntity(World world, int meta) { - + if(meta >= 12) return new TileEntitySolarBoiler(); if(meta >= extra) return new TileEntityProxyCombo(false, false, true); - + return null; } @@ -47,10 +46,10 @@ public class MachineSolarBoiler extends BlockDummyable implements ILookOverlay { @Override public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { super.fillSpace(world, x, y, z, dir, o); - + x = x + dir.offsetX * o; z = z + dir.offsetZ * o; - + this.makeExtra(world, x, y + 2, z); } @@ -62,19 +61,19 @@ public class MachineSolarBoiler extends BlockDummyable implements ILookOverlay { return; TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); - + if(!(te instanceof TileEntitySolarBoiler)) return; - + TileEntitySolarBoiler boiler = (TileEntitySolarBoiler) te; - + List text = new ArrayList<>(); FluidTank[] tanks = boiler.getAllTanks(); for(int i = 0; i < tanks.length; i++) text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + tanks[i].getTankType().getLocalizedName() + ": " + tanks[i].getFill() + "/" + tanks[i].getMaxFill() + "mB"); - + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineSolderingStation.java b/src/main/java/com/hbm/blocks/machine/MachineSolderingStation.java index 2d1ee34d1..a3d210b79 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineSolderingStation.java +++ b/src/main/java/com/hbm/blocks/machine/MachineSolderingStation.java @@ -3,7 +3,6 @@ package com.hbm.blocks.machine; import com.hbm.blocks.BlockDummyable; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityMachineSolderingStation; - import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; @@ -20,7 +19,7 @@ public class MachineSolderingStation extends BlockDummyable { if(meta >= 12) return new TileEntityMachineSolderingStation(); return new TileEntityProxyCombo().inventory().power().fluid(); } - + @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); diff --git a/src/main/java/com/hbm/blocks/machine/MachineSteamEngine.java b/src/main/java/com/hbm/blocks/machine/MachineSteamEngine.java index b3e1c8cd2..dc7f13426 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineSteamEngine.java +++ b/src/main/java/com/hbm/blocks/machine/MachineSteamEngine.java @@ -1,16 +1,11 @@ package com.hbm.blocks.machine; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; - import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntitySteamEngine; import com.hbm.util.I18nUtil; - import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -20,6 +15,10 @@ import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + public class MachineSteamEngine extends BlockDummyable implements ILookOverlay, ITooltipProvider { public MachineSteamEngine() { @@ -46,10 +45,10 @@ public class MachineSteamEngine extends BlockDummyable implements ILookOverlay, @Override public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { super.fillSpace(world, x, y, z, dir, o); - + x = x + dir.offsetX * o; z = z + dir.offsetZ * o; - + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); this.makeExtra(world, x + rot.offsetX, y + 1, z + rot.offsetZ); @@ -59,23 +58,23 @@ public class MachineSteamEngine extends BlockDummyable implements ILookOverlay, @Override public void printHook(Pre event, World world, int x, int y, int z) { - + int[] pos = this.findCore(world, x, y, z); - + if(pos == null) return; - + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); - + if(!(te instanceof TileEntitySteamEngine)) return; - + TileEntitySteamEngine engine = (TileEntitySteamEngine) te; List text = new ArrayList(); text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + engine.tanks[0].getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", engine.tanks[0].getFill()) + " / " + String.format(Locale.US, "%,d", engine.tanks[0].getMaxFill()) + "mB"); text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + engine.tanks[1].getTankType().getLocalizedName() + ": " + String.format(Locale.US, "%,d", engine.tanks[1].getFill()) + " / " + String.format(Locale.US, "%,d", engine.tanks[1].getMaxFill()) + "mB"); - + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineTransformer.java b/src/main/java/com/hbm/blocks/machine/MachineTransformer.java index 5f1980782..1369765fb 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineTransformer.java +++ b/src/main/java/com/hbm/blocks/machine/MachineTransformer.java @@ -3,7 +3,6 @@ package com.hbm.blocks.machine; import com.hbm.blocks.ModBlocks; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityMachineTransformer; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; @@ -17,7 +16,7 @@ public class MachineTransformer extends BlockContainer { long buffer; int delay; - + @SideOnly(Side.CLIENT) private IIcon iconTop; @@ -26,11 +25,11 @@ public class MachineTransformer extends BlockContainer { buffer = b; delay = d; } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { - + if(this == ModBlocks.machine_transformer || this == ModBlocks.machine_transformer_20) { this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":machine_transformer_top_iron"); this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":machine_transformer_iron"); diff --git a/src/main/java/com/hbm/blocks/machine/MachineUF6Tank.java b/src/main/java/com/hbm/blocks/machine/MachineUF6Tank.java index e4ce120f8..07fcb7baa 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineUF6Tank.java +++ b/src/main/java/com/hbm/blocks/machine/MachineUF6Tank.java @@ -2,28 +2,22 @@ package com.hbm.blocks.machine; import java.util.Random; -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.MultiblockHandler; -import com.hbm.interfaces.IMultiblock; import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.storage.TileEntityMachineUF6Tank; -import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class MachineUF6Tank extends BlockContainer implements IMultiblock { +public class MachineUF6Tank extends BlockContainer { public MachineUF6Tank(Material p_i45386_1_) { super(p_i45386_1_); @@ -57,7 +51,7 @@ public class MachineUF6Tank extends BlockContainer implements IMultiblock { @Override public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { - return Item.getItemFromBlock(ModBlocks.machine_uf6_tank); + return null; } @Override @@ -76,26 +70,5 @@ public class MachineUF6Tank extends BlockContainer implements IMultiblock { if(i == 3) { world.setBlockMetadataWithNotify(x, y, z, 4, 2); } - - if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.uf6Dimension)) { - MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.uf6Dimension, ModBlocks.dummy_block_uf6); - - } else - world.func_147480_a(x, y, z, true); - } - - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if(world.isRemote) { - return true; - } else if(!player.isSneaking()) { - TileEntityMachineUF6Tank entity = (TileEntityMachineUF6Tank) world.getTileEntity(x, y, z); - if(entity != null) { - FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); - } - return true; - } else { - return false; - } } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineVacuumDistill.java b/src/main/java/com/hbm/blocks/machine/MachineVacuumDistill.java index 6382054c7..ad06c6e1d 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineVacuumDistill.java +++ b/src/main/java/com/hbm/blocks/machine/MachineVacuumDistill.java @@ -3,7 +3,6 @@ package com.hbm.blocks.machine; import com.hbm.blocks.BlockDummyable; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.oil.TileEntityMachineVacuumDistill; - import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; @@ -22,7 +21,7 @@ public class MachineVacuumDistill extends BlockDummyable { if(meta >= 6) return new TileEntityProxyCombo().fluid().power(); return null; } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { return standardOpenBehavior(world, x, y, z, player, side); diff --git a/src/main/java/com/hbm/blocks/machine/NTMAnvil.java b/src/main/java/com/hbm/blocks/machine/NTMAnvil.java index 16623e7b1..466c0a02f 100644 --- a/src/main/java/com/hbm/blocks/machine/NTMAnvil.java +++ b/src/main/java/com/hbm/blocks/machine/NTMAnvil.java @@ -22,7 +22,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.IIconRegister; @@ -192,7 +191,7 @@ public class NTMAnvil extends BlockFallingNT implements ITooltipProvider, IGUIPr @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIAnvil(player.inventory, ((NTMAnvil)world.getBlock(x, y, z)).tier); } diff --git a/src/main/java/com/hbm/blocks/machine/PinkCloudBroadcaster.java b/src/main/java/com/hbm/blocks/machine/PinkCloudBroadcaster.java index c975e5ae1..eef9a80be 100644 --- a/src/main/java/com/hbm/blocks/machine/PinkCloudBroadcaster.java +++ b/src/main/java/com/hbm/blocks/machine/PinkCloudBroadcaster.java @@ -1,7 +1,6 @@ package com.hbm.blocks.machine; import com.hbm.tileentity.machine.TileEntityBroadcaster; - import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; @@ -22,26 +21,26 @@ public class PinkCloudBroadcaster extends BlockContainer { public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { return new TileEntityBroadcaster(); } - + @Override public int getRenderType(){ return -1; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - + if(i == 0) { world.setBlockMetadataWithNotify(x, y, z, 3, 2); @@ -59,13 +58,13 @@ public class PinkCloudBroadcaster extends BlockContainer { world.setBlockMetadataWithNotify(x, y, z, 5, 2); } } - + @Override public void setBlockBoundsBasedOnState(IBlockAccess p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_) { int te = p_149719_1_.getBlockMetadata(p_149719_2_, p_149719_3_, p_149719_4_); float f = 0.0625F; - + this.setBlockBounds(0.0F, 0.0F, 2*f, 1.0F, 1.0F, 14*f); switch(te) { @@ -83,13 +82,13 @@ public class PinkCloudBroadcaster extends BlockContainer { break; } } - + @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { int te = world.getBlockMetadata(x, y, z); float f = 0.0625F; - + this.setBlockBounds(0.0F, 0.0F, 2*f, 1.0F, 1.0F, 14*f); switch(te) { @@ -106,7 +105,7 @@ public class PinkCloudBroadcaster extends BlockContainer { this.setBlockBounds(1*f, 0.0F, 4*f, 15*f, 10*f, 12*f); break; } - + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); } diff --git a/src/main/java/com/hbm/blocks/machine/PistonInserter.java b/src/main/java/com/hbm/blocks/machine/PistonInserter.java index 8b95fed92..bb33d205d 100644 --- a/src/main/java/com/hbm/blocks/machine/PistonInserter.java +++ b/src/main/java/com/hbm/blocks/machine/PistonInserter.java @@ -4,11 +4,13 @@ import java.util.List; import com.hbm.blocks.BlockContainerBase; import com.hbm.blocks.ITooltipProvider; -import com.hbm.tileentity.INBTPacketReceiver; import api.hbm.block.IInsertable; +import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.util.BufferUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.block.BlockPistonBase; import net.minecraft.block.material.Material; @@ -34,112 +36,112 @@ public class PistonInserter extends BlockContainerBase implements ITooltipProvid public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityPistonInserter(); } - + @Override public void onNeighborBlockChange(World world, int x, int y, int z, Block neighbor) { this.updateState(world, x, y, z); } - + protected void updateState(World world, int x, int y, int z) { if(!world.isRemote) { ForgeDirection dir = ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)); - + if(world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ).isNormalCube()) return; //no obstructions allowed! - + boolean flag = checkRedstone(world, x, y, z); TileEntityPistonInserter piston = (TileEntityPistonInserter)world.getTileEntity(x, y, z); - + if(flag && !piston.lastState && piston.extend <= 0) piston.isRetracting = false; - + piston.lastState = flag; } } - + protected boolean checkRedstone(World world, int x, int y, int z) { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { if(world.getIndirectPowerOutput(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir.ordinal())) return true; } - + return false; } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - + if(side != world.getBlockMetadata(x, y, z)) return false; - + if(player.isSneaking()) { if(!world.isRemote) { TileEntityPistonInserter piston = (TileEntityPistonInserter)world.getTileEntity(x, y, z); - + if(piston.slot != null && piston.isRetracting) { ForgeDirection dir = ForgeDirection.getOrientation(piston.getBlockMetadata()); - + EntityItem dust = new EntityItem(world, x + 0.5D + dir.offsetX * 0.75D, y + 0.5D + dir.offsetY * 0.75D, z + 0.5D + dir.offsetZ * 0.75D, piston.slot); piston.slot = null; - + dust.motionX = dir.offsetX * 0.25; dust.motionY = dir.offsetY * 0.25; dust.motionZ = dir.offsetZ * 0.25; world.spawnEntityInWorld(dust); } } - + return true; } else if(player.getHeldItem() != null) { if(!world.isRemote) { TileEntityPistonInserter piston = (TileEntityPistonInserter)world.getTileEntity(x, y, z); - + if(piston.slot == null) { piston.slot = player.inventory.decrStackSize(player.inventory.currentItem, 1); player.inventoryContainer.detectAndSendChanges(); } } - + return true; } - + return false; } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { int l = BlockPistonBase.determineOrientation(world, x, y, z, player); world.setBlockMetadataWithNotify(x, y, z, l, 2); } - + @Override public boolean isSideSolid(IBlockAccess world, int x, int y, int z, ForgeDirection side) { int meta = world.getBlockMetadata(x, y, z); return meta != side.ordinal() && meta != side.getOpposite().ordinal(); } - + @Override public void breakBlock(World world, int x, int y, int z, Block block, int meta) { IInventory tileentityfurnace = (IInventory) world.getTileEntity(x, y, z); if(tileentityfurnace != null) { - + ItemStack itemstack = tileentityfurnace.getStackInSlot(0); if(itemstack != null) { float f = world.rand.nextFloat() * 0.8F + 0.1F; float f1 = world.rand.nextFloat() * 0.8F + 0.1F; float f2 = world.rand.nextFloat() * 0.8F + 0.1F; - + while(itemstack.stackSize > 0) { int j1 = world.rand.nextInt(21) + 10; - + if(j1 > itemstack.stackSize) { j1 = itemstack.stackSize; } - + itemstack.stackSize -= j1; EntityItem entityitem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); - + if(itemstack.hasTagCompound()) { entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); } @@ -157,22 +159,22 @@ public class PistonInserter extends BlockContainerBase implements ITooltipProvid super.breakBlock(world, x, y, z, block, meta); } - + @Override public int getRenderType(){ return -1; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; } - + // $%&#$& // %$&&@$%%#% //______ $%@--$@@%&$%$ @@ -203,73 +205,65 @@ public class PistonInserter extends BlockContainerBase implements ITooltipProvid // |--' / /| |/ .^ ,^\ \ ) // | |_|| || |(_( ) | | // | \_/`-``-`----'___/_____ | - // |___..---' _|____`-----..-----'\ + // |___..---' _|____`-----..-----'\ // |_____________________| @ | ) // average coding session involving tile entities - public static class TileEntityPistonInserter extends TileEntity implements IInventory, INBTPacketReceiver { - + public static class TileEntityPistonInserter extends TileEntityLoadedBase implements IInventory { + public ItemStack slot; - + public int extend; //why don't we just make all these ones serverside? we're never using them on the client anyway public static final int maxExtend = 25; public boolean isRetracting = true; public int delay; - + //prevents funkies from happening with block updates or loading into a server private boolean lastState; - - //when a fake animatorcel gives you something so 20fps you gotta hit him with the true interpolation stare + + //when a fake animatorcel gives you something so 20fps you gotta hit him with the true interpolation stare @SideOnly(Side.CLIENT) public double renderExtend; @SideOnly(Side.CLIENT) public double lastExtend; @SideOnly(Side.CLIENT) private int syncExtend; //what are these for? @SideOnly(Side.CLIENT) private int turnProgress; - + public TileEntityPistonInserter() { } - + @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + if(delay <= 0) { - + if(this.isRetracting && this.extend > 0) { this.extend--; } else if(!this.isRetracting) { this.extend++; - + if(this.extend >= this.maxExtend) { worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:block.pressOperate", 1.0F, 1.5F); - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); Block b = worldObj.getBlock(xCoord + dir.offsetX * 2, yCoord + dir.offsetY * 2, zCoord + dir.offsetZ * 2); - + if(b instanceof IInsertable && ((IInsertable) b).insertItem(worldObj, xCoord + dir.offsetX * 2, yCoord + dir.offsetY * 2, zCoord + dir.offsetZ * 2, dir, slot)) { this.decrStackSize(0, 1); } - + this.isRetracting = true; this.delay = 5; } } - + } else { delay--; } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("extend", extend); - if(this.slot != null) { - NBTTagCompound stack = new NBTTagCompound(); - slot.writeToNBT(stack); - data.setTag("stack", stack); - } - - INBTPacketReceiver.networkPack(this, data, 25); - + + networkPackNT(25); + } else { this.lastExtend = this.renderExtend; - + if(this.turnProgress > 0) { this.renderExtend += (this.syncExtend - this.renderExtend) / (double) this.turnProgress; this.turnProgress--; @@ -277,24 +271,34 @@ public class PistonInserter extends BlockContainerBase implements ITooltipProvid this.renderExtend = this.syncExtend; } } - + } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - this.syncExtend = nbt.getInteger("extend"); - - if(nbt.hasKey("stack")) { - NBTTagCompound stack = nbt.getCompoundTag("stack"); + public void serialize(ByteBuf buf) { + buf.writeInt(extend); + + buf.writeBoolean(this.slot != null); + if(this.slot != null) { + BufferUtil.writeNBT(buf, slot.stackTagCompound); + } + + this.turnProgress = 2; + } + + @Override + public void deserialize(ByteBuf buf) { + this.syncExtend = buf.readInt(); + + if(buf.readBoolean()) { + NBTTagCompound stack = BufferUtil.readNBT(buf); this.slot = ItemStack.loadItemStackFromNBT(stack); } else this.slot = null; - + this.turnProgress = 2; } - - /* :3 NBT stuff */ - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -307,7 +311,7 @@ public class PistonInserter extends BlockContainerBase implements ITooltipProvid nbt.setTag("stack", stack); } } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -321,27 +325,27 @@ public class PistonInserter extends BlockContainerBase implements ITooltipProvid this.slot = null; } } - + @SideOnly(Side.CLIENT) private AxisAlignedBB aabb; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(aabb != null) return aabb; - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); aabb = AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 1, zCoord + 1).addCoord(dir.offsetX, dir.offsetY, dir.offsetZ); return aabb; } - + /* BS inventory stuff */ - + @Override public int getSizeInventory() { return 1; } - + @Override public ItemStack getStackInSlot(int slot) { return this.slot; } - + @Override public ItemStack decrStackSize(int slot, int amount) { if(this.slot != null) { @@ -350,41 +354,41 @@ public class PistonInserter extends BlockContainerBase implements ITooltipProvid this.slot = null; return stack; } - + ItemStack stack = this.slot.splitStack(amount); if(this.slot.stackSize == 0) this.slot = null; - + return stack; } - + return null; } - + @Override public ItemStack getStackInSlotOnClosing(int slot) { return null; } - + @Override public void setInventorySlotContents(int slot, ItemStack stack) { this.slot = stack; if(stack != null && stack.stackSize > this.getInventoryStackLimit()) stack.stackSize = this.getInventoryStackLimit(); } - + @Override public String getInventoryName() { return null; } - + @Override public boolean hasCustomInventoryName() { return false; } - + @Override public int getInventoryStackLimit() { return 1; } - + @Override public boolean isUseableByPlayer(EntityPlayer player) { return false; } - + @Override public void openInventory() {} - + @Override public void closeInventory() {} - + @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { return true; } - + } @Override diff --git a/src/main/java/com/hbm/blocks/machine/RadioRec.java b/src/main/java/com/hbm/blocks/machine/RadioRec.java index 53792b48b..d387358b6 100644 --- a/src/main/java/com/hbm/blocks/machine/RadioRec.java +++ b/src/main/java/com/hbm/blocks/machine/RadioRec.java @@ -10,7 +10,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -102,7 +101,7 @@ public class RadioRec extends BlockContainer implements IGUIProvider { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { TileEntity te = world.getTileEntity(x, y, z); if(te instanceof TileEntityRadioRec) diff --git a/src/main/java/com/hbm/blocks/machine/ZirnoxDestroyed.java b/src/main/java/com/hbm/blocks/machine/ZirnoxDestroyed.java index 73526c494..459e958fd 100644 --- a/src/main/java/com/hbm/blocks/machine/ZirnoxDestroyed.java +++ b/src/main/java/com/hbm/blocks/machine/ZirnoxDestroyed.java @@ -8,8 +8,8 @@ import com.hbm.blocks.ModBlocks; import com.hbm.inventory.material.Mats; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityZirnoxDestroyed; diff --git a/src/main/java/com/hbm/blocks/machine/albion/BlockPABeamline.java b/src/main/java/com/hbm/blocks/machine/albion/BlockPABeamline.java new file mode 100644 index 000000000..10e0fa577 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/albion/BlockPABeamline.java @@ -0,0 +1,28 @@ +package com.hbm.blocks.machine.albion; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.machine.albion.TileEntityPABeamline; + +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class BlockPABeamline extends BlockDummyable { + + public BlockPABeamline() { + super(Material.iron); + this.setCreativeTab(MainRegistry.machineTab); + this.setBlockTextureName(RefStrings.MODID + ":block_steel"); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityPABeamline(); + return null; + } + + @Override public int[] getDimensions() { return new int[] {0, 0, 0, 0, 1, 1}; } + @Override public int getOffset() { return 0; } +} diff --git a/src/main/java/com/hbm/blocks/machine/albion/BlockPADetector.java b/src/main/java/com/hbm/blocks/machine/albion/BlockPADetector.java new file mode 100644 index 000000000..0f27704bb --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/albion/BlockPADetector.java @@ -0,0 +1,51 @@ +package com.hbm.blocks.machine.albion; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.albion.TileEntityPADetector; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockPADetector extends BlockDummyable { + + public BlockPADetector() { + super(Material.iron); + this.setCreativeTab(MainRegistry.machineTab); + this.setBlockTextureName(RefStrings.MODID + ":block_steel"); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityPADetector(); + if(meta >= 6) return new TileEntityProxyCombo().inventory().power().fluid(); + return null; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return standardOpenBehavior(world, x, y, z, player, side); + } + + @Override public int[] getDimensions() { return new int[] {2, 2, 2, 2, 4, 4}; } + @Override public int getOffset() { return 0; } + @Override public int getHeightOffset() { return 2; } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + this.makeExtra(world, x - rot.offsetX * 4, y, z - rot.offsetZ * 4); + this.makeExtra(world, x - rot.offsetX * 4, y + 1, z - rot.offsetZ * 4); + this.makeExtra(world, x - rot.offsetX * 4, y - 1, z - rot.offsetZ * 4); + this.makeExtra(world, x - rot.offsetX * 4 + dir.offsetX, y, z - rot.offsetZ * 4 + dir.offsetZ); + this.makeExtra(world, x - rot.offsetX * 4 - dir.offsetX, y, z - rot.offsetZ * 4 - dir.offsetZ); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/albion/BlockPADipole.java b/src/main/java/com/hbm/blocks/machine/albion/BlockPADipole.java new file mode 100644 index 000000000..6e26e4fa4 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/albion/BlockPADipole.java @@ -0,0 +1,52 @@ +package com.hbm.blocks.machine.albion; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.albion.TileEntityPADipole; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockPADipole extends BlockDummyable { + + public BlockPADipole() { + super(Material.iron); + this.setCreativeTab(MainRegistry.machineTab); + this.setBlockTextureName(RefStrings.MODID + ":block_steel"); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityPADipole(); + if(meta >= 6) return new TileEntityProxyCombo().power().fluid(); + return null; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return standardOpenBehavior(world, x, y, z, player, side); + } + + @Override public int[] getDimensions() { return new int[] {1, 1, 1, 1, 1, 1}; } + @Override public int getOffset() { return 0; } + @Override public int getHeightOffset() { return 1; } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + this.makeExtra(world, x + 1, y - 1, z); + this.makeExtra(world, x - 1, y - 1, z); + this.makeExtra(world, x, y - 1, z + 1); + this.makeExtra(world, x, y - 1, z - 1); + this.makeExtra(world, x + 1, y + 1, z); + this.makeExtra(world, x - 1, y + 1, z); + this.makeExtra(world, x, y + 1, z + 1); + this.makeExtra(world, x, y + 1, z - 1); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/albion/BlockPAQuadrupole.java b/src/main/java/com/hbm/blocks/machine/albion/BlockPAQuadrupole.java new file mode 100644 index 000000000..9f8330524 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/albion/BlockPAQuadrupole.java @@ -0,0 +1,48 @@ +package com.hbm.blocks.machine.albion; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.albion.TileEntityPAQuadrupole; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockPAQuadrupole extends BlockDummyable { + + public BlockPAQuadrupole() { + super(Material.iron); + this.setCreativeTab(MainRegistry.machineTab); + this.setBlockTextureName(RefStrings.MODID + ":block_steel"); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityPAQuadrupole(); + if(meta >= 6) return new TileEntityProxyCombo().power().fluid(); + return null; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return standardOpenBehavior(world, x, y, z, player, side); + } + + @Override public int[] getDimensions() { return new int[] {1, 1, 1, 1, 1, 1}; } + @Override public int getOffset() { return 0; } + @Override public int getHeightOffset() { return 1; } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + this.makeExtra(world, x + dir.offsetX, y, z + dir.offsetZ); + this.makeExtra(world, x - dir.offsetX, y, z - dir.offsetZ); + this.makeExtra(world, x, y + 1, z); + this.makeExtra(world, x, y - 1, z); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/albion/BlockPARFC.java b/src/main/java/com/hbm/blocks/machine/albion/BlockPARFC.java new file mode 100644 index 000000000..68e5a1dbb --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/albion/BlockPARFC.java @@ -0,0 +1,51 @@ +package com.hbm.blocks.machine.albion; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.albion.TileEntityPARFC; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockPARFC extends BlockDummyable { + + public BlockPARFC() { + super(Material.iron); + this.setCreativeTab(MainRegistry.machineTab); + this.setBlockTextureName(RefStrings.MODID + ":block_steel"); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityPARFC(); + if(meta >= 6) return new TileEntityProxyCombo().power().fluid(); + return null; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return standardOpenBehavior(world, x, y, z, player, side); + } + + @Override public int[] getDimensions() { return new int[] {1, 1, 1, 1, 4, 4}; } + @Override public int getOffset() { return 0; } + @Override public int getHeightOffset() { return 1; } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + dir = dir.getRotation(ForgeDirection.UP); + this.makeExtra(world, x + dir.offsetX * 3, y + 1, z + dir.offsetZ * 3); + this.makeExtra(world, x - dir.offsetX * 3, y + 1, z - dir.offsetZ * 3); + this.makeExtra(world, x, y + 1, z); + this.makeExtra(world, x + dir.offsetX * 3, y - 1, z + dir.offsetZ * 3); + this.makeExtra(world, x - dir.offsetX * 3, y - 1, z - dir.offsetZ * 3); + this.makeExtra(world, x, y - 1, z); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/albion/BlockPASource.java b/src/main/java/com/hbm/blocks/machine/albion/BlockPASource.java new file mode 100644 index 000000000..f278ccd60 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/albion/BlockPASource.java @@ -0,0 +1,53 @@ +package com.hbm.blocks.machine.albion; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.albion.TileEntityPASource; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockPASource extends BlockDummyable { + + public BlockPASource() { + super(Material.iron); + this.setCreativeTab(MainRegistry.machineTab); + this.setBlockTextureName(RefStrings.MODID + ":block_steel"); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityPASource(); + if(meta >= 6) return new TileEntityProxyCombo().inventory().power().fluid(); + return null; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return standardOpenBehavior(world, x, y, z, player, side); + } + + @Override public int[] getDimensions() { return new int[] {1, 1, 1, 1, 4, 4}; } + @Override public int getOffset() { return 0; } + @Override public int getHeightOffset() { return 1; } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + this.makeExtra(world, x + rot.offsetX * 4, y, z + rot.offsetZ * 4); + this.makeExtra(world, x + dir.offsetX, y, z + dir.offsetZ); + this.makeExtra(world, x + dir.offsetX + rot.offsetX * 2, y, z + dir.offsetZ + rot.offsetZ * 2); + this.makeExtra(world, x + dir.offsetX - rot.offsetX * 2, y, z + dir.offsetZ - rot.offsetZ * 2); + this.makeExtra(world, x - dir.offsetX, y, z - dir.offsetZ); + this.makeExtra(world, x - dir.offsetX + rot.offsetX * 2, y, z - dir.offsetZ + rot.offsetZ * 2); + this.makeExtra(world, x - dir.offsetX - rot.offsetX * 2, y, z - dir.offsetZ - rot.offsetZ * 2); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphite.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphite.java index c5018700a..28ddcd06a 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphite.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphite.java @@ -4,7 +4,7 @@ import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockFlammable; import com.hbm.items.ModItems; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.ParticleBurstPacket; +import com.hbm.packet.toclient.ParticleBurstPacket; import api.hbm.block.IToolable; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKBase.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKBase.java index 1293874a8..234a2a4b9 100644 --- a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKBase.java +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKBase.java @@ -3,6 +3,8 @@ package com.hbm.blocks.machine.rbmk; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.handler.neutron.NeutronNodeWorld; +import com.hbm.handler.neutron.RBMKNeutronHandler.RBMKNeutronNode; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemRBMKLid; import com.hbm.lib.RefStrings; @@ -11,6 +13,7 @@ import com.hbm.tileentity.machine.rbmk.RBMKDials; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBase; import api.hbm.block.IToolable; +import com.hbm.util.fauxpointtwelve.BlockPos; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; @@ -170,6 +173,10 @@ public abstract class RBMKBase extends BlockDummyable implements IToolable, ILoo int i = rbmk.getBlockMetadata(); if(rbmk.hasLid() && rbmk.isLidRemovable()) { + + RBMKNeutronNode node = (RBMKNeutronNode) NeutronNodeWorld.getNode(new BlockPos(te)); + if (node != null) + node.removeLid(); if(!world.isRemote) { if(i == DIR_NORMAL_LID.ordinal() + offset) { diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKCraneConsole.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKCraneConsole.java index 21059f59a..680856254 100644 --- a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKCraneConsole.java +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKCraneConsole.java @@ -4,14 +4,16 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.handler.MultiblockHandlerXR; import com.hbm.tileentity.machine.rbmk.TileEntityCraneConsole; +import api.hbm.block.IToolable; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class RBMKCraneConsole extends BlockDummyable { +public class RBMKCraneConsole extends BlockDummyable implements IToolable { public RBMKCraneConsole() { super(Material.iron); @@ -72,4 +74,20 @@ public class RBMKCraneConsole extends BlockDummyable { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); } } + + @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.SCREWDRIVER) { + if(world.isRemote) return true; + + int[] pos = findCore(world, x, y, z); + TileEntityCraneConsole tile = (TileEntityCraneConsole) world.getTileEntity(pos[0], pos[1], pos[2]); + tile.cycleCraneRotation(); + tile.markDirty(); + return true; + } + + return false; + } } diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisBurning.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisBurning.java index 0480adc74..dc2f70829 100644 --- a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisBurning.java +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisBurning.java @@ -4,8 +4,8 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisRadiating.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisRadiating.java index 299cf9f3c..9aef21c0b 100644 --- a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisRadiating.java +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisRadiating.java @@ -5,8 +5,8 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.items.ModItems; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.ContaminationUtil; import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.HazardType; diff --git a/src/main/java/com/hbm/blocks/network/BlockCable.java b/src/main/java/com/hbm/blocks/network/BlockCable.java index 60906e5fd..e0b8418a8 100644 --- a/src/main/java/com/hbm/blocks/network/BlockCable.java +++ b/src/main/java/com/hbm/blocks/network/BlockCable.java @@ -3,7 +3,6 @@ package com.hbm.blocks.network; import com.hbm.blocks.ModBlocks; import com.hbm.lib.Library; import com.hbm.tileentity.network.TileEntityCableBaseNT; - import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; @@ -28,26 +27,26 @@ public class BlockCable extends BlockContainer { @Override public int getRenderType() { - + if(this == ModBlocks.red_cable_classic) return renderIDClassic; - + return renderID; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; } - + @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { - + boolean posX = Library.canConnect(world, x + 1, y, z, Library.POS_X); boolean negX = Library.canConnect(world, x - 1, y, z, Library.NEG_X); boolean posY = Library.canConnect(world, x, y + 1, z, Library.POS_Y); @@ -56,29 +55,29 @@ public class BlockCable extends BlockContainer { boolean negZ = Library.canConnect(world, x, y, z - 1, Library.NEG_Z); setBlockBounds(posX, negX, posY, negY, posZ, negZ); - + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); } - + @Override public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { - + boolean posX = Library.canConnect(world, x + 1, y, z, Library.POS_X); boolean negX = Library.canConnect(world, x - 1, y, z, Library.NEG_X); boolean posY = Library.canConnect(world, x, y + 1, z, Library.POS_Y); boolean negY = Library.canConnect(world, x, y - 1, z, Library.NEG_Y); boolean posZ = Library.canConnect(world, x, y, z + 1, Library.POS_Z); boolean negZ = Library.canConnect(world, x, y, z - 1, Library.NEG_Z); - + setBlockBounds(posX, negX, posY, negY, posZ, negZ); } - + private void setBlockBounds(boolean posX, boolean negX, boolean posY, boolean negY, boolean posZ, boolean negZ) { - + float pixel = 0.0625F; float min = pixel * 5.5F; float max = pixel * 10.5F; - + float minX = negX ? 0F : min; float maxX = posX ? 1F : max; float minY = negY ? 0F : min; diff --git a/src/main/java/com/hbm/blocks/network/BlockCableGauge.java b/src/main/java/com/hbm/blocks/network/BlockCableGauge.java index bc31744fd..e87094830 100644 --- a/src/main/java/com/hbm/blocks/network/BlockCableGauge.java +++ b/src/main/java/com/hbm/blocks/network/BlockCableGauge.java @@ -1,23 +1,19 @@ package com.hbm.blocks.network; -import java.util.ArrayList; -import java.util.List; - +import api.hbm.energymk2.PowerNetMK2; import com.hbm.blocks.IBlockMultiPass; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; import com.hbm.handler.CompatHandler; import com.hbm.lib.RefStrings; import com.hbm.render.block.RenderBlockMultipass; -import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.network.TileEntityCableBaseNT; import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; - -import api.hbm.energymk2.PowerNetMK2; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -29,15 +25,17 @@ import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import java.util.ArrayList; +import java.util.List; + public class BlockCableGauge extends BlockContainer implements IBlockMultiPass, ILookOverlay, ITooltipProvider { - + @SideOnly(Side.CLIENT) protected IIcon overlayGauge; public BlockCableGauge() { @@ -48,7 +46,7 @@ public class BlockCableGauge extends BlockContainer implements IBlockMultiPass, public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityCableGauge(); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister reg) { @@ -59,11 +57,11 @@ public class BlockCableGauge extends BlockContainer implements IBlockMultiPass, @Override @SideOnly(Side.CLIENT) public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { - + if(RenderBlockMultipass.currentPass == 0) { return blockIcon; } - + return side == world.getBlockMetadata(x, y, z) ? this.overlayGauge : this.blockIcon; } @@ -85,42 +83,42 @@ public class BlockCableGauge extends BlockContainer implements IBlockMultiPass, @Override public void printHook(Pre event, World world, int x, int y, int z) { - + TileEntity te = world.getTileEntity(x, y, z); - + if(!(te instanceof TileEntityCableGauge)) return; - + TileEntityCableGauge duct = (TileEntityCableGauge) te; - + List text = new ArrayList(); text.add(BobMathUtil.getShortNumber(duct.deltaTick) + "HE/t"); text.add(BobMathUtil.getShortNumber(duct.deltaLastSecond) + "HE/s"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } - + @Override public int getRenderType(){ return IBlockMultiPass.getRenderType(); } @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) - public static class TileEntityCableGauge extends TileEntityCableBaseNT implements INBTPacketReceiver, SimpleComponent, CompatHandler.OCComponent { + public static class TileEntityCableGauge extends TileEntityCableBaseNT implements SimpleComponent, CompatHandler.OCComponent { private long deltaTick = 0; private long deltaSecond = 0; private long deltaLastSecond = 0; - + @Override public void updateEntity() { super.updateEntity(); if(!worldObj.isRemote) { - + if(this.node != null && this.node.net != null) { - + PowerNetMK2 net = this.node.net; - + this.deltaTick = net.energyTracker; if(worldObj.getTotalWorldTime() % 20 == 0) { this.deltaLastSecond = this.deltaSecond; @@ -128,18 +126,21 @@ public class BlockCableGauge extends BlockContainer implements IBlockMultiPass, } this.deltaSecond += deltaTick; } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("deltaT", deltaTick); - data.setLong("deltaS", deltaLastSecond); - INBTPacketReceiver.networkPack(this, data, 25); + + networkPackNT(25); } } @Override - public void networkUnpack(NBTTagCompound nbt) { - this.deltaTick = Math.max(nbt.getLong("deltaT"), 0); - this.deltaLastSecond = Math.max(nbt.getLong("deltaS"), 0); + public void serialize(ByteBuf buf) { + buf.writeLong(deltaTick); + buf.writeLong(deltaLastSecond); + } + + @Override + public void deserialize(ByteBuf buf) { + this.deltaTick = Math.max(buf.readLong(), 0); + this.deltaLastSecond = Math.max(buf.readLong(), 0); } @Override diff --git a/src/main/java/com/hbm/blocks/network/BlockCablePaintable.java b/src/main/java/com/hbm/blocks/network/BlockCablePaintable.java index 334654a4d..68a0232ee 100644 --- a/src/main/java/com/hbm/blocks/network/BlockCablePaintable.java +++ b/src/main/java/com/hbm/blocks/network/BlockCablePaintable.java @@ -1,11 +1,10 @@ package com.hbm.blocks.network; +import api.hbm.block.IToolable; import com.hbm.blocks.IBlockMultiPass; import com.hbm.lib.RefStrings; import com.hbm.render.block.RenderBlockMultipass; import com.hbm.tileentity.network.TileEntityCableBaseNT; - -import api.hbm.block.IToolable; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -36,7 +35,7 @@ public class BlockCablePaintable extends BlockContainer implements IToolable, IB public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityCablePaintable(); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister reg) { @@ -48,10 +47,10 @@ public class BlockCablePaintable extends BlockContainer implements IToolable, IB @SideOnly(Side.CLIENT) public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { TileEntity tile = world.getTileEntity(x, y, z); - + if(tile instanceof TileEntityCablePaintable) { TileEntityCablePaintable pipe = (TileEntityCablePaintable) tile; - + if(pipe.block != null) { if(RenderBlockMultipass.currentPass == 1) { return this.overlay; @@ -60,26 +59,26 @@ public class BlockCablePaintable extends BlockContainer implements IToolable, IB } } } - + return RenderBlockMultipass.currentPass == 1 ? this.overlay : this.blockIcon; } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float fX, float fY, float fZ) { - + ItemStack stack = player.getHeldItem(); - + if(stack != null && stack.getItem() instanceof ItemBlock) { ItemBlock ib = (ItemBlock) stack.getItem(); Block block = ib.field_150939_a; - + if(block.renderAsNormalBlock() && block != this) { - + TileEntity tile = world.getTileEntity(x, y, z); - + if(tile instanceof TileEntityCablePaintable) { TileEntityCablePaintable pipe = (TileEntityCablePaintable) tile; - + if(pipe.block == null) { pipe.block = block; pipe.meta = stack.getItemDamage() & 15; @@ -90,20 +89,20 @@ public class BlockCablePaintable extends BlockContainer implements IToolable, IB } } } - + return super.onBlockActivated(world, x, y, z, player, side, fX, fY, fZ); } @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.SCREWDRIVER) return false; - + TileEntity tile = world.getTileEntity(x, y, z); - + if(tile instanceof TileEntityCablePaintable) { TileEntityCablePaintable pipe = (TileEntityCablePaintable) tile; - + if(pipe.block != null) { pipe.block = null; world.markBlockForUpdate(x, y, z); @@ -111,7 +110,7 @@ public class BlockCablePaintable extends BlockContainer implements IToolable, IB return true; } } - + return false; } @@ -119,7 +118,7 @@ public class BlockCablePaintable extends BlockContainer implements IToolable, IB public int getPasses() { return 2; } - + @Override public int getRenderType(){ return IBlockMultiPass.getRenderType(); @@ -149,7 +148,7 @@ public class BlockCablePaintable extends BlockContainer implements IToolable, IB this.writeToNBT(nbt); return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); } - + @Override public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { this.readFromNBT(pkt.func_148857_g()); diff --git a/src/main/java/com/hbm/blocks/network/BlockConveyorBase.java b/src/main/java/com/hbm/blocks/network/BlockConveyorBase.java index 44ce47839..bf816eef1 100644 --- a/src/main/java/com/hbm/blocks/network/BlockConveyorBase.java +++ b/src/main/java/com/hbm/blocks/network/BlockConveyorBase.java @@ -1,12 +1,9 @@ package com.hbm.blocks.network; -import java.util.List; - +import api.hbm.conveyor.IConveyorBelt; import com.hbm.blocks.ITooltipProvider; import com.hbm.entity.item.EntityMovingItem; import com.hbm.lib.RefStrings; - -import api.hbm.conveyor.IConveyorBelt; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -26,6 +23,8 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.List; + public abstract class BlockConveyorBase extends Block implements IConveyorBelt, ITooltipProvider { @SideOnly(Side.CLIENT) @@ -34,14 +33,14 @@ public abstract class BlockConveyorBase extends Block implements IConveyorBelt, public BlockConveyorBase() { super(Material.iron); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { super.registerBlockIcons(iconRegister); this.sideIcon = iconRegister.registerIcon(RefStrings.MODID + ":conveyor_side"); } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { @@ -50,7 +49,7 @@ public abstract class BlockConveyorBase extends Block implements IConveyorBelt, return this.sideIcon; if((metadata == 4 || metadata == 5) && (side == 2 || side == 3)) return this.sideIcon; - + return super.getIcon(side, metadata); } @@ -61,7 +60,7 @@ public abstract class BlockConveyorBase extends Block implements IConveyorBelt, @Override public Vec3 getTravelLocation(World world, int x, int y, int z, Vec3 itemPos, double speed) { - + ForgeDirection dir = this.getTravelDirection(world, x, y, z, itemPos); //snapping point Vec3 snap = this.getClosestSnappingPosition(world, x, y, z, itemPos); @@ -74,7 +73,7 @@ public abstract class BlockConveyorBase extends Block implements IConveyorBelt, Vec3 ret = Vec3.createVectorHelper(itemPos.xCoord + motion.xCoord / len * speed, itemPos.yCoord + motion.yCoord / len * speed, itemPos.zCoord + motion.zCoord / len * speed); return ret; } - + public ForgeDirection getTravelDirection(World world, int x, int y, int z, Vec3 itemPos) { return ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)); } @@ -83,10 +82,10 @@ public abstract class BlockConveyorBase extends Block implements IConveyorBelt, public Vec3 getClosestSnappingPosition(World world, int x, int y, int z, Vec3 itemPos) { ForgeDirection dir = this.getTravelDirection(world, x, y, z, itemPos); - + itemPos.xCoord = MathHelper.clamp_double(itemPos.xCoord, x, x + 1); itemPos.zCoord = MathHelper.clamp_double(itemPos.zCoord, z, z + 1); - + double posX = x + 0.5; double posZ = z + 0.5; @@ -96,7 +95,7 @@ public abstract class BlockConveyorBase extends Block implements IConveyorBelt, if(dir.offsetZ != 0) { posZ = itemPos.zCoord; } - + return Vec3.createVectorHelper(posX, y + 0.25, posZ); } diff --git a/src/main/java/com/hbm/blocks/network/BlockConveyorClassic.java b/src/main/java/com/hbm/blocks/network/BlockConveyorClassic.java index 095615595..7a479c699 100644 --- a/src/main/java/com/hbm/blocks/network/BlockConveyorClassic.java +++ b/src/main/java/com/hbm/blocks/network/BlockConveyorClassic.java @@ -1,9 +1,8 @@ package com.hbm.blocks.network; +import api.hbm.conveyor.IConveyorBelt; import com.hbm.entity.item.EntityMovingItem; import com.hbm.lib.RefStrings; - -import api.hbm.conveyor.IConveyorBelt; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -29,14 +28,14 @@ public class BlockConveyorClassic extends Block implements IConveyorBelt { public BlockConveyorClassic() { super(Material.iron); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { super.registerBlockIcons(iconRegister); this.sideIcon = iconRegister.registerIcon(RefStrings.MODID + ":conveyor_side"); } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { @@ -45,7 +44,7 @@ public class BlockConveyorClassic extends Block implements IConveyorBelt { return this.sideIcon; if((metadata == 4 || metadata == 5) && (side == 2 || side == 3)) return this.sideIcon; - + return super.getIcon(side, metadata); } @@ -56,7 +55,7 @@ public class BlockConveyorClassic extends Block implements IConveyorBelt { @Override public Vec3 getTravelLocation(World world, int x, int y, int z, Vec3 itemPos, double speed) { - + ForgeDirection dir = getTravelDirection(world, x, y, z, itemPos, speed); //snapping point Vec3 snap = this.getClosestSnappingPosition(world, x, y, z, itemPos); @@ -69,7 +68,7 @@ public class BlockConveyorClassic extends Block implements IConveyorBelt { Vec3 ret = Vec3.createVectorHelper(itemPos.xCoord + motion.xCoord / len * speed, itemPos.yCoord + motion.yCoord / len * speed, itemPos.zCoord + motion.zCoord / len * speed); return ret; } - + public ForgeDirection getTravelDirection(World world, int x, int y, int z, Vec3 itemPos, double speed) { return ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)); } @@ -78,10 +77,10 @@ public class BlockConveyorClassic extends Block implements IConveyorBelt { public Vec3 getClosestSnappingPosition(World world, int x, int y, int z, Vec3 itemPos) { ForgeDirection dir = ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)); - + itemPos.xCoord = MathHelper.clamp_double(itemPos.xCoord, x, x + 1); itemPos.zCoord = MathHelper.clamp_double(itemPos.zCoord, z, z + 1); - + double posX = x + 0.5; double posZ = z + 0.5; @@ -91,7 +90,7 @@ public class BlockConveyorClassic extends Block implements IConveyorBelt { if(dir.offsetZ != 0) { posZ = itemPos.zCoord; } - + return Vec3.createVectorHelper(posX, y + 0.25, posZ); } diff --git a/src/main/java/com/hbm/blocks/network/CableDetector.java b/src/main/java/com/hbm/blocks/network/CableDetector.java index 7776212ac..18e80c570 100644 --- a/src/main/java/com/hbm/blocks/network/CableDetector.java +++ b/src/main/java/com/hbm/blocks/network/CableDetector.java @@ -2,7 +2,6 @@ package com.hbm.blocks.network; import com.hbm.lib.RefStrings; import com.hbm.tileentity.network.TileEntityCableSwitch; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -21,14 +20,14 @@ public class CableDetector extends BlockContainer { public CableDetector(Material p_i45386_1_) { super(p_i45386_1_); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { this.iconOn = iconRegister.registerIcon(RefStrings.MODID + ":cable_detector_on"); this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":cable_detector_off"); } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { @@ -42,18 +41,18 @@ public class CableDetector extends BlockContainer { @Override public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { - + boolean on = world.isBlockIndirectlyGettingPowered(x, y, z); int meta = world.getBlockMetadata(x, y, z); - + boolean update = false; - + if(on && meta == 0) { world.setBlockMetadataWithNotify(x, y, z, 1, 2); world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 1.0F); update = true; } - + if(!on && meta == 1) { world.setBlockMetadataWithNotify(x, y, z, 0, 2); world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 0.85F); diff --git a/src/main/java/com/hbm/blocks/network/CableDiode.java b/src/main/java/com/hbm/blocks/network/CableDiode.java index 246094666..d0f17735b 100644 --- a/src/main/java/com/hbm/blocks/network/CableDiode.java +++ b/src/main/java/com/hbm/blocks/network/CableDiode.java @@ -1,22 +1,18 @@ package com.hbm.blocks.network; -import java.util.ArrayList; -import java.util.List; - +import api.hbm.block.IToolable; +import api.hbm.energymk2.IEnergyConnectorBlock; +import api.hbm.energymk2.IEnergyConnectorMK2; +import api.hbm.energymk2.IEnergyReceiverMK2; +import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority; +import api.hbm.energymk2.Nodespace; +import api.hbm.energymk2.Nodespace.PowerNode; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.BobMathUtil; import com.hbm.util.Compat; import com.hbm.util.I18nUtil; - -import api.hbm.block.IToolable; -import api.hbm.energymk2.IEnergyConnectorBlock; -import api.hbm.energymk2.IEnergyConnectorMK2; -import api.hbm.energymk2.IEnergyReceiverMK2; -import api.hbm.energymk2.Nodespace; -import api.hbm.energymk2.Nodespace.PowerNode; -import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -37,8 +33,11 @@ import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.List; + public class CableDiode extends BlockContainer implements IEnergyConnectorBlock, ILookOverlay, IToolable, ITooltipProvider { - + public CableDiode(Material mat) { super(mat); } @@ -49,23 +48,23 @@ public class CableDiode extends BlockContainer implements IEnergyConnectorBlock, public int getRenderType() { return renderID; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; } - + @Override @SideOnly(Side.CLIENT) public boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_) { return true; } - + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { int l = BlockPistonBase.determineOrientation(world, x, y, z, player); world.setBlockMetadataWithNotify(x, y, z, l, 2); @@ -80,10 +79,10 @@ public class CableDiode extends BlockContainer implements IEnergyConnectorBlock, public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { TileEntityDiode te = (TileEntityDiode)world.getTileEntity(x, y, z); - + if(world.isRemote) return true; - + if(tool == ToolType.SCREWDRIVER) { if(te.level < 11) te.level++; @@ -91,7 +90,7 @@ public class CableDiode extends BlockContainer implements IEnergyConnectorBlock, world.markBlockForUpdate(x, y, z); return true; } - + if(tool == ToolType.HAND_DRILL) { if(te.level > 1) te.level--; @@ -99,7 +98,7 @@ public class CableDiode extends BlockContainer implements IEnergyConnectorBlock, world.markBlockForUpdate(x, y, z); return true; } - + if(tool == ToolType.DEFUSER) { int p = te.priority.ordinal() + 1; if(p > 4) p = 0; @@ -108,7 +107,7 @@ public class CableDiode extends BlockContainer implements IEnergyConnectorBlock, world.markBlockForUpdate(x, y, z); return true; } - + return false; } @@ -122,18 +121,18 @@ public class CableDiode extends BlockContainer implements IEnergyConnectorBlock, @Override public void printHook(Pre event, World world, int x, int y, int z) { - + TileEntity te = world.getTileEntity(x, y, z); - + if(!(te instanceof TileEntityDiode)) return; - + TileEntityDiode diode = (TileEntityDiode) te; - + List text = new ArrayList(); text.add("Max.: " + BobMathUtil.getShortNumber(diode.getMaxPower()) + "HE/t"); text.add("Priority: " + diode.priority.name()); - + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } @@ -141,16 +140,16 @@ public class CableDiode extends BlockContainer implements IEnergyConnectorBlock, public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityDiode(); } - + public static class TileEntityDiode extends TileEntityLoadedBase implements IEnergyReceiverMK2 { - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); level = nbt.getInteger("level"); priority = ConnectionPriority.values()[nbt.getByte("p")]; } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -164,30 +163,30 @@ public class CableDiode extends BlockContainer implements IEnergyConnectorBlock, this.writeToNBT(nbt); return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); } - + @Override public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { this.readFromNBT(pkt.func_148857_g()); } - + int level = 1; - + private ForgeDirection getDir() { return ForgeDirection.getOrientation(this.getBlockMetadata()).getOpposite(); } @Override public void updateEntity() { - + if(!worldObj.isRemote) { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - + if(dir == getDir()) continue; - + this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } - + pulses = 0; this.setPower(0); //tick is over, reset our allowed transfe } @@ -197,7 +196,7 @@ public class CableDiode extends BlockContainer implements IEnergyConnectorBlock, public boolean canConnect(ForgeDirection dir) { return dir != getDir(); } - + /** Used as an intra-tick tracker for how much energy has been transmitted, resets to 0 each tick and maxes out based on transfer */ private long power; private boolean recursionBrake = false; @@ -209,23 +208,23 @@ public class CableDiode extends BlockContainer implements IEnergyConnectorBlock, if(recursionBrake) return power; - + pulses++; if(this.getPower() >= this.getMaxPower() || pulses > 10) return power; //if we have already maxed out transfer or max pulses, abort - + recursionBrake = true; - + ForgeDirection dir = getDir(); PowerNode node = Nodespace.getNode(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); TileEntity te = Compat.getTileStandard(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); - + if(node != null && !node.expired && node.hasValidNet() && te instanceof IEnergyConnectorMK2 && ((IEnergyConnectorMK2) te).canConnect(dir.getOpposite())) { long toTransfer = Math.min(power, this.getReceiverSpeed()); long remainder = node.net.sendPowerDiode(toTransfer); long transferred = (toTransfer - remainder); this.power += transferred; power -= transferred; - + } else if(te instanceof IEnergyReceiverMK2 && te != this) { IEnergyReceiverMK2 rec = (IEnergyReceiverMK2) te; if(rec.canConnect(dir.getOpposite())) { @@ -236,7 +235,7 @@ public class CableDiode extends BlockContainer implements IEnergyConnectorBlock, return power; } } - + recursionBrake = false; return power; } @@ -255,7 +254,7 @@ public class CableDiode extends BlockContainer implements IEnergyConnectorBlock, public long getPower() { return Math.min(power, this.getMaxPower()); } - + @Override public void setPower(long power) { this.power = power; diff --git a/src/main/java/com/hbm/blocks/network/CableSwitch.java b/src/main/java/com/hbm/blocks/network/CableSwitch.java index b419ec28a..f62af26b0 100644 --- a/src/main/java/com/hbm/blocks/network/CableSwitch.java +++ b/src/main/java/com/hbm/blocks/network/CableSwitch.java @@ -2,7 +2,6 @@ package com.hbm.blocks.network; import com.hbm.lib.RefStrings; import com.hbm.tileentity.network.TileEntityCableSwitch; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; @@ -21,14 +20,14 @@ public class CableSwitch extends BlockContainer { public CableSwitch(Material p_i45386_1_) { super(p_i45386_1_); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { this.iconOn = iconRegister.registerIcon(RefStrings.MODID + ":cable_switch_on"); this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":cable_switch_off"); } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { @@ -39,7 +38,7 @@ public class CableSwitch extends BlockContainer { public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { return new TileEntityCableSwitch(); } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) @@ -55,10 +54,10 @@ public class CableSwitch extends BlockContainer { world.setBlockMetadataWithNotify(x, y, z, 0, 2); world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 0.85F); } - + TileEntityCableSwitch te = (TileEntityCableSwitch) world.getTileEntity(x, y, z); te.updateState(); - + return true; } else { return false; diff --git a/src/main/java/com/hbm/blocks/network/ConnectorRedWire.java b/src/main/java/com/hbm/blocks/network/ConnectorRedWire.java index c60d9e7a8..c97e067b2 100644 --- a/src/main/java/com/hbm/blocks/network/ConnectorRedWire.java +++ b/src/main/java/com/hbm/blocks/network/ConnectorRedWire.java @@ -1,10 +1,7 @@ package com.hbm.blocks.network; -import java.util.List; - import com.hbm.lib.Library; import com.hbm.tileentity.network.TileEntityConnector; - import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -15,6 +12,8 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.List; + public class ConnectorRedWire extends PylonBase { public ConnectorRedWire(Material mat) { @@ -30,26 +29,26 @@ public class ConnectorRedWire extends PylonBase { public int onBlockPlaced(World world, int x, int y, int z, int side, float fX, float fY, float fZ, int meta) { return side; } - + @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { setBlockBounds(world.getBlockMetadata(x, y, z)); return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); } - + @Override public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { setBlockBounds(world.getBlockMetadata(x, y, z)); } - + private void setBlockBounds(int meta) { - + float pixel = 0.0625F; float min = pixel * 5F; float max = pixel * 11F; - + ForgeDirection dir = ForgeDirection.getOrientation(meta).getOpposite(); - + float minX = dir == Library.NEG_X ? 0F : min; float maxX = dir == Library.POS_X ? 1F : max; float minY = dir == Library.NEG_Y ? 0F : min; diff --git a/src/main/java/com/hbm/blocks/network/CraneInserter.java b/src/main/java/com/hbm/blocks/network/CraneInserter.java index 22dcdcad8..b83da5278 100644 --- a/src/main/java/com/hbm/blocks/network/CraneInserter.java +++ b/src/main/java/com/hbm/blocks/network/CraneInserter.java @@ -7,7 +7,6 @@ import com.hbm.lib.RefStrings; import com.hbm.tileentity.network.TileEntityCraneBase; import com.hbm.tileentity.network.TileEntityCraneInserter; import com.hbm.util.InventoryUtil; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -32,7 +31,7 @@ public class CraneInserter extends BlockCraneBase implements IEnterableBlock { public TileEntityCraneBase createNewTileEntity(World world, int meta) { return new TileEntityCraneInserter(); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -62,82 +61,85 @@ public class CraneInserter extends BlockCraneBase implements IEnterableBlock { public void onItemEnter(World world, int x, int y, int z, ForgeDirection dir, IConveyorItem entity) { ForgeDirection outputDirection = getOutputSide(world, x, y, z); TileEntity te = world.getTileEntity(x + outputDirection.offsetX, y + outputDirection.offsetY, z + outputDirection.offsetZ); - + if(entity == null || entity.getItemStack() == null || entity.getItemStack().stackSize <= 0) { return; } - + ItemStack toAdd = entity.getItemStack().copy(); - + int[] access = null; - + if(te instanceof ISidedInventory) { ISidedInventory sided = (ISidedInventory) te; access = InventoryUtil.masquerade(sided, outputDirection.getOpposite().ordinal()); } - + if(te instanceof IInventory) { IInventory inv = (IInventory) te; - + addToInventory(inv, access, toAdd, outputDirection.getOpposite().ordinal()); } - + + TileEntityCraneInserter inserter = null; + if(toAdd.stackSize > 0) { - addToInventory((TileEntityCraneInserter) world.getTileEntity(x, y, z), null, toAdd, outputDirection.getOpposite().ordinal()); + inserter = (TileEntityCraneInserter) world.getTileEntity(x, y, z); + addToInventory(inserter, null, toAdd, outputDirection.getOpposite().ordinal()); } - if(toAdd.stackSize > 0) { + if(toAdd.stackSize > 0 && inserter != null && !inserter.destroyer) { EntityItem drop = new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, toAdd.copy()); world.spawnEntityInWorld(drop); } } - + public static ItemStack addToInventory(IInventory inv, int[] access, ItemStack toAdd, int side) { - + ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; int limit = inv.getInventoryStackLimit(); - + int size = access == null ? inv.getSizeInventory() : access.length; - + for(int i = 0; i < size; i++) { int index = access == null ? i : access[i]; ItemStack stack = inv.getStackInSlot(index); - + if(stack != null && toAdd.isItemEqual(stack) && ItemStack.areItemStackTagsEqual(toAdd, stack) && stack.stackSize < Math.min(stack.getMaxStackSize(), limit) && ((sided == null || sided.canInsertItem(index, toAdd, side)) && inv.isItemValidForSlot(index, toAdd))) { - + int stackLimit = Math.min(stack.getMaxStackSize(), limit); int amount = Math.min(toAdd.stackSize, stackLimit - stack.stackSize); - + stack.stackSize += amount; toAdd.stackSize -= amount; inv.markDirty(); - + if(toAdd.stackSize == 0) { return null; } } } - + for(int i = 0; i < size; i++) { int index = access == null ? i : access[i]; ItemStack stack = inv.getStackInSlot(index); - + if(stack == null && ((sided == null || sided.canInsertItem(index, toAdd, side)) && inv.isItemValidForSlot(index, toAdd))) { - + int amount = Math.min(toAdd.stackSize, limit); - + ItemStack newStack = toAdd.copy(); newStack.stackSize = amount; inv.setInventorySlotContents(index, newStack); toAdd.stackSize -= amount; inv.markDirty(); - + if(toAdd.stackSize == 0) { return null; } } } - + return toAdd; } @@ -153,7 +155,7 @@ public class CraneInserter extends BlockCraneBase implements IEnterableBlock { public boolean hasComparatorInputOverride() { return true; } - + @Override public int getComparatorInputOverride(World world, int x, int y, int z, int side) { return Container.calcRedstoneFromInventory((TileEntityCraneInserter)world.getTileEntity(x, y, z)); diff --git a/src/main/java/com/hbm/blocks/network/CranePartitioner.java b/src/main/java/com/hbm/blocks/network/CranePartitioner.java index 415ed34aa..f2d0b7cee 100644 --- a/src/main/java/com/hbm/blocks/network/CranePartitioner.java +++ b/src/main/java/com/hbm/blocks/network/CranePartitioner.java @@ -1,21 +1,15 @@ package com.hbm.blocks.network; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Random; - +import api.hbm.conveyor.IConveyorBelt; +import api.hbm.conveyor.IConveyorItem; +import api.hbm.conveyor.IConveyorPackage; +import api.hbm.conveyor.IEnterableBlock; import com.hbm.blocks.ITooltipProvider; import com.hbm.entity.item.EntityMovingItem; import com.hbm.inventory.recipes.CrystallizerRecipes; import com.hbm.lib.RefStrings; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.InventoryUtil; - -import api.hbm.conveyor.IConveyorBelt; -import api.hbm.conveyor.IConveyorItem; -import api.hbm.conveyor.IConveyorPackage; -import api.hbm.conveyor.IEnterableBlock; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -37,6 +31,11 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Random; + public class CranePartitioner extends BlockContainer implements IConveyorBelt, IEnterableBlock, ITooltipProvider { @SideOnly(Side.CLIENT) public IIcon iconTop; @@ -48,7 +47,7 @@ public class CranePartitioner extends BlockContainer implements IConveyorBelt, I public CranePartitioner() { super(Material.iron); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -116,7 +115,7 @@ public class CranePartitioner extends BlockContainer implements IConveyorBelt, I if(dir.offsetZ != 0) posZ = itemPos.zCoord; return Vec3.createVectorHelper(posX, y + 0.25, posZ); } - + public ForgeDirection getTravelDirection(World world, int x, int y, int z, Vec3 itemPos) { int meta = world.getBlockMetadata(x, y, z); return ForgeDirection.getOrientation(meta); @@ -137,7 +136,7 @@ public class CranePartitioner extends BlockContainer implements IConveyorBelt, I world.spawnEntityInWorld(item); } } - + public static class TileEntityCranePartitioner extends TileEntityMachineBase { public TileEntityCranePartitioner() { @@ -148,14 +147,14 @@ public class CranePartitioner extends BlockContainer implements IConveyorBelt, I @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + List stacks = new ArrayList(); for(int i = 0; i < 9; i++) if(slots[i] != null) stacks.add(slots[i]); stacks.sort(stackSizeComparator); boolean markDirty = false; - + for(ItemStack stack : stacks) { int amount = CrystallizerRecipes.getAmount(stack); while(stack.stackSize >= amount) { @@ -168,12 +167,12 @@ public class CranePartitioner extends BlockContainer implements IConveyorBelt, I worldObj.spawnEntityInWorld(item); } } - + for(int i = 0; i < 9; i++) if(slots[i] != null && slots[i].stackSize <= 0) slots[i] = null; if(markDirty) this.markDirty(); } } - + public static Comparator stackSizeComparator = new Comparator() { @Override @@ -204,7 +203,7 @@ public class CranePartitioner extends BlockContainer implements IConveyorBelt, I } private final Random dropRandom = new Random(); - + @Override public void breakBlock(World world, int x, int y, int z, Block block, int meta) { TileEntity tile = world.getTileEntity(x, y, z); diff --git a/src/main/java/com/hbm/blocks/network/CraneRouter.java b/src/main/java/com/hbm/blocks/network/CraneRouter.java index a89d2a695..d6f663817 100644 --- a/src/main/java/com/hbm/blocks/network/CraneRouter.java +++ b/src/main/java/com/hbm/blocks/network/CraneRouter.java @@ -1,8 +1,9 @@ package com.hbm.blocks.network; -import java.util.ArrayList; -import java.util.List; - +import api.hbm.conveyor.IConveyorBelt; +import api.hbm.conveyor.IConveyorItem; +import api.hbm.conveyor.IConveyorPackage; +import api.hbm.conveyor.IEnterableBlock; import com.hbm.blocks.IBlockMultiPass; import com.hbm.blocks.ITooltipProvider; import com.hbm.entity.item.EntityMovingItem; @@ -11,11 +12,6 @@ import com.hbm.main.MainRegistry; import com.hbm.module.ModulePatternMatcher; import com.hbm.render.block.RenderBlockMultipass; import com.hbm.tileentity.network.TileEntityCraneRouter; - -import api.hbm.conveyor.IConveyorBelt; -import api.hbm.conveyor.IConveyorItem; -import api.hbm.conveyor.IConveyorPackage; -import api.hbm.conveyor.IEnterableBlock; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -33,6 +29,9 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.List; + public class CraneRouter extends BlockContainer implements IBlockMultiPass, IEnterableBlock, ITooltipProvider { @SideOnly(Side.CLIENT) protected IIcon iconOverlay; @@ -46,7 +45,7 @@ public class CraneRouter extends BlockContainer implements IBlockMultiPass, IEnt public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityCraneRouter(); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -59,7 +58,7 @@ public class CraneRouter extends BlockContainer implements IBlockMultiPass, IEnt public IIcon getIcon(int side, int metadata) { return RenderBlockMultipass.currentPass == 0 ? this.blockIcon : this.iconOverlay; } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) { @@ -75,10 +74,10 @@ public class CraneRouter extends BlockContainer implements IBlockMultiPass, IEnt @Override @SideOnly(Side.CLIENT) public int colorMultiplier(IBlockAccess world, int x, int y, int z) { - + if(RenderBlockMultipass.currentPass == 0) return 0xffffff; - + switch(RenderBlockMultipass.currentPass - 1) { case 0: return 0xff0000; case 1: return 0xff8000; @@ -89,7 +88,7 @@ public class CraneRouter extends BlockContainer implements IBlockMultiPass, IEnt default: return 0xffffff; } } - + @Override public int getRenderType(){ return IBlockMultiPass.getRenderType(); @@ -101,10 +100,10 @@ public class CraneRouter extends BlockContainer implements IBlockMultiPass, IEnt @Override @SideOnly(Side.CLIENT) public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) { - + if(RenderBlockMultipass.currentPass == 0) return true; - + return side == RenderBlockMultipass.currentPass - 1; } @@ -122,40 +121,40 @@ public class CraneRouter extends BlockContainer implements IBlockMultiPass, IEnt public void onItemEnter(World world, int x, int y, int z, ForgeDirection dir, IConveyorItem entity) { TileEntityCraneRouter router = (TileEntityCraneRouter) world.getTileEntity(x, y, z); ItemStack stack = entity.getItemStack(); - + List validDirs = new ArrayList(); - + //check filters for all sides for(int side = 0; side < 6; side++) { - + ModulePatternMatcher matcher = router.patterns[side]; int mode = router.modes[side]; - + //if the side is disabled or wildcard, skip if(mode == router.MODE_NONE || mode == router.MODE_WILDCARD) continue; - + boolean matchesFilter = false; - + for(int slot = 0; slot < 5; slot++) { ItemStack filter = router.slots[side * 5 + slot]; - + if(filter == null) continue; - + //the filter kicks in so long as one entry matches if(matcher.isValidForFilter(filter, slot, stack)) { matchesFilter = true; break; } } - + //add dir if matches with whitelist on or doesn't match with blacklist on if((mode == router.MODE_WHITELIST && matchesFilter) || (mode == router.MODE_BLACKLIST && !matchesFilter)) { validDirs.add(ForgeDirection.getOrientation(side)); } } - + //if no valid dirs have yet been found, use wildcard if(validDirs.isEmpty()) { for(int side = 0; side < 6; side++) { @@ -164,25 +163,25 @@ public class CraneRouter extends BlockContainer implements IBlockMultiPass, IEnt } } } - + if(validDirs.isEmpty()) { world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, stack.copy())); return; } - + int i = world.rand.nextInt(validDirs.size()); sendOnRoute(world, x, y, z, entity, validDirs.get(i)); } - + protected void sendOnRoute(World world, int x, int y, int z, IConveyorItem item, ForgeDirection dir) { - + IConveyorBelt belt = null; Block block = world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ); - + if(block instanceof IConveyorBelt) { belt = (IConveyorBelt) block; } - + if(belt != null) { EntityMovingItem moving = new EntityMovingItem(world); Vec3 pos = Vec3.createVectorHelper(x + 0.5 + dir.offsetX * 0.55, y + 0.5 + dir.offsetY * 0.55, z + 0.5 + dir.offsetZ * 0.55); diff --git a/src/main/java/com/hbm/blocks/network/CraneSplitter.java b/src/main/java/com/hbm/blocks/network/CraneSplitter.java index a39396fb0..562c495a2 100644 --- a/src/main/java/com/hbm/blocks/network/CraneSplitter.java +++ b/src/main/java/com/hbm/blocks/network/CraneSplitter.java @@ -1,17 +1,14 @@ package com.hbm.blocks.network; -import java.util.List; - -import com.hbm.blocks.BlockDummyable; -import com.hbm.blocks.ITooltipProvider; -import com.hbm.entity.item.EntityMovingItem; -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.network.TileEntityCraneSplitter; - import api.hbm.conveyor.IConveyorBelt; import api.hbm.conveyor.IConveyorItem; import api.hbm.conveyor.IConveyorPackage; import api.hbm.conveyor.IEnterableBlock; +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.entity.item.EntityMovingItem; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityCraneSplitter; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -26,6 +23,8 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.List; + public class CraneSplitter extends BlockDummyable implements IConveyorBelt, IEnterableBlock, ITooltipProvider { @SideOnly(Side.CLIENT) public IIcon iconTopLeft; @@ -39,7 +38,7 @@ public class CraneSplitter extends BlockDummyable implements IConveyorBelt, IEnt @SideOnly(Side.CLIENT) public IIcon iconBelt; @SideOnly(Side.CLIENT) public IIcon iconInner; @SideOnly(Side.CLIENT) public IIcon iconInnerSide; - + public CraneSplitter() { super(Material.iron); } @@ -58,7 +57,7 @@ public class CraneSplitter extends BlockDummyable implements IConveyorBelt, IEnt public int getOffset() { return 0; } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -100,7 +99,7 @@ public class CraneSplitter extends BlockDummyable implements IConveyorBelt, IEnt boolean pos = splitter.getPosition(); ItemStack stack = entity.getItemStack(); ForgeDirection rot = ForgeDirection.getOrientation(splitter.getBlockMetadata() - offset).getRotation(ForgeDirection.DOWN); - + if(stack.stackSize % 2 == 0) { stack.stackSize /= 2; spawnMovingItem(world, x, y, z, stack.copy()); @@ -114,7 +113,7 @@ public class CraneSplitter extends BlockDummyable implements IConveyorBelt, IEnt splitter.setPosition(!pos); } } - + private void spawnMovingItem(World world, int x, int y, int z, ItemStack stack) { if(stack.stackSize <= 0) return; EntityMovingItem moving = new EntityMovingItem(world); @@ -152,7 +151,7 @@ public class CraneSplitter extends BlockDummyable implements IConveyorBelt, IEnt if(dir.offsetZ != 0) posZ = itemPos.zCoord; return Vec3.createVectorHelper(posX, y + 0.25, posZ); } - + public ForgeDirection getTravelDirection(World world, int x, int y, int z, Vec3 itemPos) { int meta = world.getBlockMetadata(x, y, z); if(meta >= 12) return ForgeDirection.getOrientation(meta - offset); diff --git a/src/main/java/com/hbm/blocks/network/DroneCrate.java b/src/main/java/com/hbm/blocks/network/DroneCrate.java index 94641ed8f..78a64be21 100644 --- a/src/main/java/com/hbm/blocks/network/DroneCrate.java +++ b/src/main/java/com/hbm/blocks/network/DroneCrate.java @@ -1,9 +1,5 @@ package com.hbm.blocks.network; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; import com.hbm.items.ModItems; @@ -11,7 +7,6 @@ import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.network.TileEntityDroneCrate; import com.hbm.util.I18nUtil; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -28,8 +23,12 @@ import net.minecraft.util.IIcon; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + public class DroneCrate extends BlockContainer implements ILookOverlay, ITooltipProvider { - + private static Random rand = new Random(); @SideOnly(Side.CLIENT) private IIcon iconTop; @@ -60,9 +59,9 @@ public class DroneCrate extends BlockContainer implements ILookOverlay, ITooltip @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.drone_linker) return false; - + if(world.isRemote) { return true; } else if(!player.isSneaking()) { @@ -72,7 +71,7 @@ public class DroneCrate extends BlockContainer implements ILookOverlay, ITooltip return false; } } - + @Override public void breakBlock(World world, int x, int y, int z, Block block, int meta) { TileEntityDroneCrate tileentityfurnace = (TileEntityDroneCrate) world.getTileEntity(x, y, z); @@ -124,7 +123,7 @@ public class DroneCrate extends BlockContainer implements ILookOverlay, ITooltip public void printHook(Pre event, World world, int x, int y, int z) { TileEntityDroneCrate tile = (TileEntityDroneCrate) world.getTileEntity(x, y, z); List text = new ArrayList(); - + if(tile.nextY != -1) { text.add("Next waypoint: " + tile.nextX + " / " + tile.nextY + " / " + tile.nextZ); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); diff --git a/src/main/java/com/hbm/blocks/network/DroneDock.java b/src/main/java/com/hbm/blocks/network/DroneDock.java index df16956fc..226d3c3f0 100644 --- a/src/main/java/com/hbm/blocks/network/DroneDock.java +++ b/src/main/java/com/hbm/blocks/network/DroneDock.java @@ -1,14 +1,11 @@ package com.hbm.blocks.network; -import java.util.List; - import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ModBlocks; import com.hbm.main.MainRegistry; import com.hbm.tileentity.network.TileEntityDroneDock; import com.hbm.tileentity.network.TileEntityDroneProvider; import com.hbm.tileentity.network.TileEntityDroneRequester; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -21,6 +18,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.World; +import java.util.List; + public class DroneDock extends BlockContainer implements ITooltipProvider { @SideOnly(Side.CLIENT) private IIcon iconTop; @@ -36,7 +35,7 @@ public class DroneDock extends BlockContainer implements ITooltipProvider { if(this == ModBlocks.drone_dock) return new TileEntityDroneDock(); if(this == ModBlocks.drone_crate_provider) return new TileEntityDroneProvider(); if(this == ModBlocks.drone_crate_requester) return new TileEntityDroneRequester(); - + return null; } @@ -53,7 +52,7 @@ public class DroneDock extends BlockContainer implements ITooltipProvider { public IIcon getIcon(int side, int metadata) { return side == 1 ? this.iconTop : (side == 0 ? this.iconBottom : this.blockIcon); } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) { diff --git a/src/main/java/com/hbm/blocks/network/DroneWaypoint.java b/src/main/java/com/hbm/blocks/network/DroneWaypoint.java index 28e9e338b..16f5c60eb 100644 --- a/src/main/java/com/hbm/blocks/network/DroneWaypoint.java +++ b/src/main/java/com/hbm/blocks/network/DroneWaypoint.java @@ -1,14 +1,10 @@ package com.hbm.blocks.network; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; import com.hbm.items.ModItems; import com.hbm.tileentity.network.TileEntityDroneWaypoint; import com.hbm.util.I18nUtil; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -25,6 +21,9 @@ import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.List; + public class DroneWaypoint extends BlockContainer implements ILookOverlay, ITooltipProvider { public DroneWaypoint() { @@ -40,34 +39,34 @@ public class DroneWaypoint extends BlockContainer implements ILookOverlay, ITool public int getRenderType() { return RadioTorchBase.renderID; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; } - + @Override @SideOnly(Side.CLIENT) public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) { return true; } - + @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { return null; } - + @Override public MovingObjectPosition collisionRayTrace(World world, int x, int y, int z, Vec3 vec0, Vec3 vec1) { - + int meta = world.getBlockMetadata(x, y, z) & 7; ForgeDirection dir = ForgeDirection.getOrientation(meta); - + this.setBlockBounds( dir.offsetX == 1 ? 0F : 0.375F, dir.offsetY == 1 ? 0F : 0.375F, @@ -87,34 +86,34 @@ public class DroneWaypoint extends BlockContainer implements ILookOverlay, ITool @Override public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { - + int meta = world.getBlockMetadata(x, y, z); ForgeDirection dir = ForgeDirection.getOrientation(meta); Block b = world.getBlock(x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ); - + if(!b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) && (!b.renderAsNormalBlock() || b.isAir(world, x, y, z))) { this.dropBlockAsItem(world, x, y, z, meta, 0); world.setBlockToAir(x, y, z); } } - + @Override public boolean canPlaceBlockOnSide(World world, int x, int y, int z, int side) { if(!super.canPlaceBlockOnSide(world, x, y, z, side)) return false; - + ForgeDirection dir = ForgeDirection.getOrientation(side); Block b = world.getBlock(x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ); - + return b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) || (b.renderAsNormalBlock() && !b.isAir(world, x, y, z)); } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.drone_linker) return false; - + if(world.isRemote) return true; - + TileEntityDroneWaypoint tile = (TileEntityDroneWaypoint) world.getTileEntity(x, y, z); tile.addHeight(player.isSneaking() ? - 1 : 1); return true; @@ -129,13 +128,13 @@ public class DroneWaypoint extends BlockContainer implements ILookOverlay, ITool public void printHook(Pre event, World world, int x, int y, int z) { TileEntityDroneWaypoint tile = (TileEntityDroneWaypoint) world.getTileEntity(x, y, z); List text = new ArrayList(); - + text.add("Waypoint distance: " + tile.height); - + if(tile.nextY != -1) { text.add("Next waypoint: " + tile.nextX + " / " + tile.nextY + " / " + tile.nextZ); } - + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/blocks/network/DroneWaypointRequest.java b/src/main/java/com/hbm/blocks/network/DroneWaypointRequest.java index a02b63a3c..82318b0a8 100644 --- a/src/main/java/com/hbm/blocks/network/DroneWaypointRequest.java +++ b/src/main/java/com/hbm/blocks/network/DroneWaypointRequest.java @@ -1,7 +1,6 @@ package com.hbm.blocks.network; import com.hbm.tileentity.network.TileEntityDroneWaypointRequest; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -30,34 +29,34 @@ public class DroneWaypointRequest extends BlockContainer { public int getRenderType() { return RadioTorchBase.renderID; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; } - + @Override @SideOnly(Side.CLIENT) public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) { return true; } - + @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { return null; } - + @Override public MovingObjectPosition collisionRayTrace(World world, int x, int y, int z, Vec3 vec0, Vec3 vec1) { - + int meta = world.getBlockMetadata(x, y, z) & 7; ForgeDirection dir = ForgeDirection.getOrientation(meta); - + this.setBlockBounds( dir.offsetX == 1 ? 0F : 0.375F, dir.offsetY == 1 ? 0F : 0.375F, @@ -77,24 +76,24 @@ public class DroneWaypointRequest extends BlockContainer { @Override public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { - + int meta = world.getBlockMetadata(x, y, z); ForgeDirection dir = ForgeDirection.getOrientation(meta); Block b = world.getBlock(x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ); - + if(!b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) && (!b.renderAsNormalBlock() || b.isAir(world, x, y, z))) { this.dropBlockAsItem(world, x, y, z, meta, 0); world.setBlockToAir(x, y, z); } } - + @Override public boolean canPlaceBlockOnSide(World world, int x, int y, int z, int side) { if(!super.canPlaceBlockOnSide(world, x, y, z, side)) return false; - + ForgeDirection dir = ForgeDirection.getOrientation(side); Block b = world.getBlock(x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ); - + return b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) || (b.renderAsNormalBlock() && !b.isAir(world, x, y, z)); } } diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctBase.java b/src/main/java/com/hbm/blocks/network/FluidDuctBase.java index 3422d1f17..3016bc287 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctBase.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctBase.java @@ -1,23 +1,26 @@ package com.hbm.blocks.network; -import java.util.ArrayList; -import java.util.List; - -import com.hbm.blocks.IAnalyzable; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.items.machine.IItemFluidIdentifier; -import com.hbm.tileentity.network.TileEntityPipeBaseNT; - import api.hbm.fluid.IPipeNet; import api.hbm.fluid.PipeNet; +import com.hbm.blocks.IAnalyzable; +import com.hbm.extprop.HbmPlayerProps; +import com.hbm.handler.HbmKeybinds; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.items.machine.ItemFluidIDMulti; +import com.hbm.tileentity.network.TileEntityPipeBaseNT; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; 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.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.List; + public class FluidDuctBase extends BlockContainer implements IBlockFluidDuct, IAnalyzable { public FluidDuctBase(Material mat) { @@ -31,53 +34,76 @@ public class FluidDuctBase extends BlockContainer implements IBlockFluidDuct, IA @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float fX, float fY, float fZ) { - + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { IItemFluidIdentifier id = (IItemFluidIdentifier) player.getHeldItem().getItem(); FluidType type = id.getType(world, x, y, z, player.getHeldItem()); - - if(!player.isSneaking()) { - + + if(!HbmPlayerProps.getData(player).getKeyPressed(HbmKeybinds.EnumKeybind.TOOL_CTRL) && !player.isSneaking()) { + TileEntity te = world.getTileEntity(x, y, z); - + if(te instanceof TileEntityPipeBaseNT) { TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te; - + + if(HbmPlayerProps.getData(player).getKeyPressed(HbmKeybinds.EnumKeybind.TOOL_ALT)) { + Item item = player.getHeldItem().getItem(); + if (item instanceof ItemFluidIDMulti) { + if (id.getType(world, x, y, z, player.getHeldItem()) != pipe.getType()) { + ItemFluidIDMulti.setType(player.getHeldItem(), pipe.getType(), true); + world.playSoundAtEntity(player, "random.orb", 0.25F, 0.75F); + return true; + } + } + } + if(pipe.getType() != type) { pipe.setType(type); return true; } } } else { - + TileEntity te = world.getTileEntity(x, y, z); - + if(te instanceof TileEntityPipeBaseNT) { TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te; + + if(HbmPlayerProps.getData(player).getKeyPressed(HbmKeybinds.EnumKeybind.TOOL_ALT)) { + Item item = player.getHeldItem().getItem(); + if (item instanceof ItemFluidIDMulti) { + if (id.getType(world, x, y, z, player.getHeldItem()) != pipe.getType()) { + ItemFluidIDMulti.setType(player.getHeldItem(), pipe.getType(), true); + world.playSoundAtEntity(player, "random.orb", 0.25F, 0.75F); + return true; + } + } + } + changeTypeRecursively(world, x, y, z, pipe.getType(), type, 64); return true; } } } - + return false; } @Override public void changeTypeRecursively(World world, int x, int y, int z, FluidType prevType, FluidType type, int loopsRemaining) { - + TileEntity te = world.getTileEntity(x, y, z); - + if(te instanceof TileEntityPipeBaseNT) { TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te; - + if(pipe.getType() == prevType && pipe.getType() != type) { pipe.setType(type); - + if(loopsRemaining > 0) { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { Block b = world.getBlock(x, y, z); - + if(b instanceof IBlockFluidDuct) { ((IBlockFluidDuct) b).changeTypeRecursively(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, prevType, type, loopsRemaining - 1); } @@ -89,20 +115,20 @@ public class FluidDuctBase extends BlockContainer implements IBlockFluidDuct, IA @Override public List getDebugInfo(World world, int x, int y, int z) { - + TileEntity te = world.getTileEntity(x, y, z); - + if(te instanceof TileEntityPipeBaseNT) { TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te; FluidType type = pipe.getType(); - + if(type != null) { - + IPipeNet net = pipe.getPipeNet(type); - + if(net instanceof PipeNet) { PipeNet pipeNet = (PipeNet) net; - + List debug = new ArrayList(); debug.add("=== DEBUG START ==="); debug.addAll(pipeNet.debug); @@ -114,7 +140,7 @@ public class FluidDuctBase extends BlockContainer implements IBlockFluidDuct, IA } } } - + return null; } } diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctBox.java b/src/main/java/com/hbm/blocks/network/FluidDuctBox.java index fb759fb93..6d091e422 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctBox.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctBox.java @@ -1,15 +1,11 @@ package com.hbm.blocks.network; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.IBlockMulti; import com.hbm.blocks.ILookOverlay; import com.hbm.lib.Library; import com.hbm.lib.RefStrings; import com.hbm.tileentity.network.TileEntityPipeBaseNT; import com.hbm.util.I18nUtil; - import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -27,6 +23,9 @@ import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.List; + public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOverlay { @SideOnly(Side.CLIENT) public IIcon[] iconStraight; @@ -36,13 +35,13 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve @SideOnly(Side.CLIENT) public IIcon[] iconCurveBL; @SideOnly(Side.CLIENT) public IIcon[] iconCurveBR; @SideOnly(Side.CLIENT) public IIcon[][] iconJunction; - + private static final String[] materials = new String[] { "silver", "copper", "white" }; public FluidDuctBox(Material mat) { super(mat); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -79,13 +78,13 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve boolean pY = canConnectTo(world, x, y, z, Library.POS_Y, te); boolean nZ = canConnectTo(world, x, y, z, Library.NEG_Z, te); boolean pZ = canConnectTo(world, x, y, z, Library.POS_Z, te); - + int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0); - + int meta = world.getBlockMetadata(x, y, z); int m = rectify(meta); - + if((mask & 0b001111) == 0 && mask > 0) { return (side == 4 || side == 5) ? iconEnd[m] : iconStraight[m]; } else if((mask & 0b111100) == 0 && mask > 0) { @@ -112,41 +111,41 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve if(pX && pZ) return side == 0 ? iconCurveBR[m] : iconCurveBR[m]; if(nX && nZ) return side == 0 ? iconCurveTL[m] : iconCurveTL[m]; if(nX && pZ) return side == 0 ? iconCurveBL[m] : iconCurveBL[m]; - + return iconJunction[m][meta / 3]; } - + return iconJunction[m][meta / 3]; } - + @SideOnly(Side.CLIENT) public void getSubBlocks(Item item, CreativeTabs tab, List list) { for(int i = 0; i < 15; ++i) { list.add(new ItemStack(item, 1, i)); } } - + public int damageDropped(int meta) { return meta % 15; } - + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); @Override public int getRenderType() { return renderID; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; } - + @Override @SideOnly(Side.CLIENT) public boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_) { @@ -160,7 +159,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve @Override public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB entityBounding, List list, Entity entity) { - + List bbs = new ArrayList(); TileEntity te = world.getTileEntity(x, y, z); @@ -170,9 +169,9 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve double jLower = 0.0625D; double jUpper = 0.9375D; int meta = world.getBlockMetadata(x, y, z); - + for(int i = 2; i < 13; i += 3) { - + if(meta > i) { lower += 0.0625D; upper -= 0.0625D; @@ -180,7 +179,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve jUpper -= 0.0625D; } } - + boolean nX = canConnectTo(world, x, y, z, Library.NEG_X, te); boolean pX = canConnectTo(world, x, y, z, Library.POS_X, te); boolean nY = canConnectTo(world, x, y, z, Library.NEG_Y, te); @@ -189,7 +188,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve boolean pZ = canConnectTo(world, x, y, z, Library.POS_Z, te); int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0); - + if(mask == 0) { bbs.add(AxisAlignedBB.getBoundingBox(x + jLower, y + jLower, z + jLower, x + jUpper, y + jUpper, z + jUpper)); } else if(mask == 0b100000 || mask == 0b010000 || mask == 0b110000) { @@ -199,13 +198,13 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve } else if(mask == 0b000010 || mask == 0b000001 || mask == 0b000011) { bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + 0.0D, x + upper, y + upper, z + 1.0D)); } else { - + if(count != 2) { bbs.add(AxisAlignedBB.getBoundingBox(x + jLower, y + jLower, z + jLower, x + jUpper, y + jUpper, z + jUpper)); } else { bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + lower, x + upper, y + upper, z + upper)); } - + if(pX) bbs.add(AxisAlignedBB.getBoundingBox(x + upper, y + lower, z + lower, x + 1.0D, y + upper, z + upper)); if(nX) bbs.add(AxisAlignedBB.getBoundingBox(x + 0.0D, y + lower, z + lower, x + lower, y + upper, z + upper)); if(pY) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + upper, z + lower, x + upper, y + 1.0D, z + upper)); @@ -213,7 +212,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve if(pZ) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + upper, x + upper, y + upper, z + 1.0D)); if(nZ) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + 0.0D, x + upper, y + upper, z + lower)); } - + for(AxisAlignedBB bb : bbs) { if(entityBounding.intersectsWith(bb)) { list.add(bb); @@ -244,9 +243,9 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve float jLower = 0.0625F; float jUpper = 0.9375F; int meta = world.getBlockMetadata(x, y, z); - + for(int i = 2; i < 13; i += 3) { - + if(meta > i) { lower += 0.0625F; upper -= 0.0625F; @@ -254,7 +253,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve jUpper -= 0.0625F; } } - + boolean nX = canConnectTo(world, x, y, z, Library.NEG_X, te); boolean pX = canConnectTo(world, x, y, z, Library.POS_X, te); boolean nY = canConnectTo(world, x, y, z, Library.NEG_Y, te); @@ -263,7 +262,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve boolean pZ = canConnectTo(world, x, y, z, Library.POS_Z, te); int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0); - + if(mask == 0) { this.setBlockBounds(jLower, jLower, jLower, jUpper, jUpper, jUpper); } else if(mask == 0b100000 || mask == 0b010000 || mask == 0b110000) { @@ -273,7 +272,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve } else if(mask == 0b000010 || mask == 0b000001 || mask == 0b000011) { this.setBlockBounds(lower, lower, 0F, upper, upper, 1F); } else { - + if(count != 2) { this.setBlockBounds( nX ? 0F : jLower, @@ -293,7 +292,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve } } } - + public boolean canConnectTo(IBlockAccess world, int x, int y, int z, ForgeDirection dir, TileEntity tile) { if(tile instanceof TileEntityPipeBaseNT) { return Library.canConnectFluid(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir, ((TileEntityPipeBaseNT) tile).getType()); @@ -303,21 +302,21 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve @Override public void printHook(Pre event, World world, int x, int y, int z) { - + TileEntity te = world.getTileEntity(x, y, z); - + if(!(te instanceof TileEntityPipeBaseNT)) return; - + TileEntityPipeBaseNT duct = (TileEntityPipeBaseNT) te; - + List text = new ArrayList(); text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName()); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } - + public static int cachedColor = 0xffffff; - + @Override @SideOnly(Side.CLIENT) public int colorMultiplier(IBlockAccess world, int x, int y, int z) { diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctBoxExhaust.java b/src/main/java/com/hbm/blocks/network/FluidDuctBoxExhaust.java index 41a081993..4384b908b 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctBoxExhaust.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctBoxExhaust.java @@ -1,15 +1,11 @@ package com.hbm.blocks.network; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.ILookOverlay; import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.Library; import com.hbm.lib.RefStrings; import com.hbm.tileentity.network.TileEntityPipeExhaust; import com.hbm.util.I18nUtil; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.material.Material; @@ -24,6 +20,9 @@ import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.List; + public class FluidDuctBoxExhaust extends FluidDuctBox { public FluidDuctBoxExhaust(Material mat) { @@ -34,7 +33,7 @@ public class FluidDuctBoxExhaust extends FluidDuctBox { public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityPipeExhaust(); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -56,7 +55,7 @@ public class FluidDuctBoxExhaust extends FluidDuctBox { iconCurveBR[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_br"); for(int i = 0; i < 5; i++) iconJunction[0][i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_junction_" + i); } - + public boolean canConnectTo(IBlockAccess world, int x, int y, int z, ForgeDirection dir, TileEntity tile) { return Library.canConnectFluid(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir, Fluids.SMOKE) || Library.canConnectFluid(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir, Fluids.SMOKE_LEADED) || @@ -67,7 +66,7 @@ public class FluidDuctBoxExhaust extends FluidDuctBox { public int getSubCount() { return 1; } - + @SideOnly(Side.CLIENT) public void getSubBlocks(Item item, CreativeTabs tab, List list) { for(int i = 0; i < 15; i += 3) { diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java index 2c60fbc59..44d66e8f8 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java @@ -1,10 +1,6 @@ package com.hbm.blocks.network; -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; - +import api.hbm.fluid.IPipeNet; import com.hbm.blocks.IBlockMultiPass; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; @@ -12,14 +8,12 @@ import com.hbm.handler.CompatHandler; import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; import com.hbm.render.block.RenderBlockMultipass; -import com.hbm.tileentity.INBTPacketReceiver; 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 io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -30,13 +24,17 @@ import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import java.math.BigInteger; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, ILookOverlay, ITooltipProvider { @SideOnly(Side.CLIENT) protected IIcon overlay; @@ -50,7 +48,7 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityPipeGauge(); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister reg) { @@ -62,11 +60,11 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL @Override @SideOnly(Side.CLIENT) public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { - + if(RenderBlockMultipass.currentPass == 0) { return blockIcon; } - + return side == world.getBlockMetadata(x, y, z) ? this.overlayGauge : this.overlay; } @@ -88,34 +86,34 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL @Override public void printHook(Pre event, World world, int x, int y, int z) { - + TileEntity te = world.getTileEntity(x, y, z); - + if(!(te instanceof TileEntityPipeBaseNT)) return; - + TileEntityPipeGauge duct = (TileEntityPipeGauge) te; - + List text = new ArrayList(); text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName()); text.add(String.format(Locale.US, "%,d", duct.deltaTick) + " mB/t"); text.add(String.format(Locale.US, "%,d", duct.deltaLastSecond) + " mB/s"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } - + @Override public int getRenderType(){ 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, CompatHandler.OCComponent { + public static class TileEntityPipeGauge extends TileEntityPipeBaseNT implements SimpleComponent, CompatHandler.OCComponent { private BigInteger lastMeasurement = BigInteger.valueOf(10); private long deltaTick = 0; private long deltaSecond = 0; private long deltaLastSecond = 0; - + @Override public void updateEntity() { super.updateEntity(); @@ -123,12 +121,12 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL if(!worldObj.isRemote) { IPipeNet net = this.getPipeNet(this.getType()); - + if(net != null && this.getType() != Fluids.NONE) { BigInteger total = net.getTotalTransfer(); BigInteger delta = total.subtract(this.lastMeasurement); this.lastMeasurement = total; - + try { this.deltaTick = delta.longValueExact(); if(worldObj.getTotalWorldTime() % 20 == 0) { @@ -136,21 +134,24 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL this.deltaSecond = 0; } this.deltaSecond += deltaTick; - + } catch(Exception ex) { } } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("deltaT", deltaTick); - data.setLong("deltaS", deltaLastSecond); - INBTPacketReceiver.networkPack(this, data, 25); + + networkPackNT(25); } } @Override - public void networkUnpack(NBTTagCompound nbt) { - this.deltaTick = Math.max(nbt.getLong("deltaT"), 0); - this.deltaLastSecond = Math.max(nbt.getLong("deltaS"), 0); + public void serialize(ByteBuf buf) { + buf.writeLong(deltaTick); + buf.writeLong(deltaLastSecond); + } + + @Override + public void deserialize(ByteBuf buf) { + this.deltaTick = Math.max(buf.readLong(), 0); + this.deltaLastSecond = Math.max(buf.readLong(), 0); } @Optional.Method(modid = "OpenComputers") diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctPaintable.java b/src/main/java/com/hbm/blocks/network/FluidDuctPaintable.java index 6777195d8..37599923b 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctPaintable.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctPaintable.java @@ -1,16 +1,12 @@ package com.hbm.blocks.network; -import java.util.ArrayList; -import java.util.List; - +import api.hbm.block.IToolable; import com.hbm.blocks.IBlockMultiPass; import com.hbm.blocks.ILookOverlay; import com.hbm.lib.RefStrings; import com.hbm.render.block.RenderBlockMultipass; import com.hbm.tileentity.network.TileEntityPipeBaseNT; import com.hbm.util.I18nUtil; - -import api.hbm.block.IToolable; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -26,6 +22,9 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import java.util.ArrayList; +import java.util.List; + public class FluidDuctPaintable extends FluidDuctBase implements IToolable, IBlockMultiPass, ILookOverlay { @SideOnly(Side.CLIENT) protected IIcon overlay; @@ -39,7 +38,7 @@ public class FluidDuctPaintable extends FluidDuctBase implements IToolable, IBlo public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityPipePaintable(); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister reg) { @@ -52,10 +51,10 @@ public class FluidDuctPaintable extends FluidDuctBase implements IToolable, IBlo @SideOnly(Side.CLIENT) public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { TileEntity tile = world.getTileEntity(x, y, z); - + if(tile instanceof TileEntityPipePaintable) { TileEntityPipePaintable pipe = (TileEntityPipePaintable) tile; - + if(pipe.block != null) { if(RenderBlockMultipass.currentPass == 1) { return this.overlay; @@ -64,46 +63,46 @@ public class FluidDuctPaintable extends FluidDuctBase implements IToolable, IBlo } } } - + return RenderBlockMultipass.currentPass == 1 ? this.overlayColor : this.blockIcon; } @Override @SideOnly(Side.CLIENT) public int colorMultiplier(IBlockAccess world, int x, int y, int z) { - + if(RenderBlockMultipass.currentPass == 0) return 0xffffff; - + TileEntity tile = world.getTileEntity(x, y, z); - + if(tile instanceof TileEntityPipePaintable) { TileEntityPipePaintable pipe = (TileEntityPipePaintable) tile; - + if(pipe.block == null) { return pipe.getType().getColor(); } } - + return 0xffffff; } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float fX, float fY, float fZ) { - + ItemStack stack = player.getHeldItem(); - + if(stack != null && stack.getItem() instanceof ItemBlock) { ItemBlock ib = (ItemBlock) stack.getItem(); Block block = ib.field_150939_a; - + if(block.renderAsNormalBlock() && block != this) { - + TileEntity tile = world.getTileEntity(x, y, z); - + if(tile instanceof TileEntityPipePaintable) { TileEntityPipePaintable pipe = (TileEntityPipePaintable) tile; - + if(pipe.block == null) { pipe.block = block; pipe.meta = stack.getItemDamage() & 15; @@ -114,20 +113,20 @@ public class FluidDuctPaintable extends FluidDuctBase implements IToolable, IBlo } } } - + return super.onBlockActivated(world, x, y, z, player, side, fX, fY, fZ); } @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.SCREWDRIVER) return false; - + TileEntity tile = world.getTileEntity(x, y, z); - + if(tile instanceof TileEntityPipePaintable) { TileEntityPipePaintable pipe = (TileEntityPipePaintable) tile; - + if(pipe.block != null) { pipe.block = null; world.markBlockForUpdate(x, y, z); @@ -135,7 +134,7 @@ public class FluidDuctPaintable extends FluidDuctBase implements IToolable, IBlo return true; } } - + return false; } @@ -143,7 +142,7 @@ public class FluidDuctPaintable extends FluidDuctBase implements IToolable, IBlo public int getPasses() { return 2; } - + @Override public int getRenderType(){ return IBlockMultiPass.getRenderType(); @@ -151,19 +150,19 @@ public class FluidDuctPaintable extends FluidDuctBase implements IToolable, IBlo @Override public void printHook(Pre event, World world, int x, int y, int z) { - + TileEntity te = world.getTileEntity(x, y, z); - + if(!(te instanceof TileEntityPipeBaseNT)) return; - + TileEntityPipeBaseNT duct = (TileEntityPipeBaseNT) te; - + List text = new ArrayList(); text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName()); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } - + public static class TileEntityPipePaintable extends TileEntityPipeBaseNT { private Block block; diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java b/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java index e482398c9..d1b46bc94 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctStandard.java @@ -1,8 +1,5 @@ package com.hbm.blocks.network; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.IBlockMulti; import com.hbm.blocks.ILookOverlay; import com.hbm.inventory.fluid.FluidType; @@ -11,7 +8,6 @@ import com.hbm.lib.Library; import com.hbm.lib.RefStrings; import com.hbm.tileentity.network.TileEntityPipeBaseNT; import com.hbm.util.I18nUtil; - import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -31,6 +27,9 @@ import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.List; + public class FluidDuctStandard extends FluidDuctBase implements IBlockMulti, ILookOverlay { @SideOnly(Side.CLIENT) @@ -41,7 +40,7 @@ public class FluidDuctStandard extends FluidDuctBase implements IBlockMulti, ILo public FluidDuctStandard(Material mat) { super(mat); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -56,20 +55,20 @@ public class FluidDuctStandard extends FluidDuctBase implements IBlockMulti, ILo this.overlay[1] = iconRegister.registerIcon(RefStrings.MODID + ":pipe_silver_overlay"); this.overlay[2] = iconRegister.registerIcon(RefStrings.MODID + ":pipe_colored_overlay"); } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { return side == 0 ? this.icon[rectify(metadata)] : this.overlay[rectify(metadata)]; } - + @SideOnly(Side.CLIENT) public void getSubBlocks(Item item, CreativeTabs tab, List list) { for(int i = 0; i < 3; ++i) { list.add(new ItemStack(item, 1, i)); } } - + public int damageDropped(int meta) { return rectify(meta); } @@ -95,7 +94,7 @@ public class FluidDuctStandard extends FluidDuctBase implements IBlockMulti, ILo return new ItemStack(ModItems.fluid_duct, 1, metadata).getItem(); } */ - + @Override @SideOnly(Side.CLIENT) public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z, EntityPlayer player) { @@ -109,19 +108,19 @@ public class FluidDuctStandard extends FluidDuctBase implements IBlockMulti, ILo } return super.getPickBlock(target, world, x, y, z, player); } - + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); - + @Override public int getRenderType() { return renderID; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; @@ -134,7 +133,7 @@ public class FluidDuctStandard extends FluidDuctBase implements IBlockMulti, ILo @Override public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB entityBounding, List list, Entity entity) { - + List bbs = new ArrayList(); TileEntity te = world.getTileEntity(x, y, z); @@ -149,7 +148,7 @@ public class FluidDuctStandard extends FluidDuctBase implements IBlockMulti, ILo boolean nZ = canConnectTo(world, x, y, z, Library.NEG_Z, type); boolean pZ = canConnectTo(world, x, y, z, Library.POS_Z, type); int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); - + if(mask == 0) { bbs.add(AxisAlignedBB.getBoundingBox(x + 0.6875D, y + 0.3125D, z + 0.3125D, x + 1.0D, y + 0.6875D, z + 0.6875D)); bbs.add(AxisAlignedBB.getBoundingBox(x + 0.0D, y + 0.3125D, z + 0.3125D, x + 0.3125D, y + 0.6875D, z + 0.6875D)); @@ -164,9 +163,9 @@ public class FluidDuctStandard extends FluidDuctBase implements IBlockMulti, ILo } else if(mask == 0b000010 || mask == 0b000001 || mask == 0b000011) { bbs.add(AxisAlignedBB.getBoundingBox(x + 0.3125D, y + 0.3125D, z + 0.0D, x + 0.6875D, y + 0.6875D, z + 1.0D)); } else { - + bbs.add(AxisAlignedBB.getBoundingBox(x + 0.3125D, y + 0.3125D, z + 0.3125D, x + 0.6875D, y + 0.6875D, z + 0.6875D)); - + if(pX) bbs.add(AxisAlignedBB.getBoundingBox(x + 0.6875D, y + 0.3125D, z + 0.3125D, x + 1.0D, y + 0.6875D, z + 0.6875D)); if(nX) bbs.add(AxisAlignedBB.getBoundingBox(x + 0.0D, y + 0.3125D, z + 0.3125D, x + 0.3125D, y + 0.6875D, z + 0.6875D)); if(pY) bbs.add(AxisAlignedBB.getBoundingBox(x + 0.3125D, y + 0.6875D, z + 0.3125D, x + 0.6875D, y + 1.0D, z + 0.6875D)); @@ -175,7 +174,7 @@ public class FluidDuctStandard extends FluidDuctBase implements IBlockMulti, ILo if(nZ) bbs.add(AxisAlignedBB.getBoundingBox(x + 0.3125D, y + 0.3125D, z + 0.0D, x + 0.6875D, y + 0.6875D, z + 0.3125D)); } } - + for(AxisAlignedBB bb : bbs) { if(entityBounding.intersectsWith(bb)) { list.add(bb); @@ -211,7 +210,7 @@ public class FluidDuctStandard extends FluidDuctBase implements IBlockMulti, ILo boolean nZ = canConnectTo(world, x, y, z, Library.NEG_Z, type); boolean pZ = canConnectTo(world, x, y, z, Library.POS_Z, type); int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); - + if(mask == 0) { this.setBlockBounds(0F, 0F, 0F, 1F, 1F, 1F); } else if(mask == 0b100000 || mask == 0b010000 || mask == 0b110000) { @@ -221,7 +220,7 @@ public class FluidDuctStandard extends FluidDuctBase implements IBlockMulti, ILo } else if(mask == 0b000010 || mask == 0b000001 || mask == 0b000011) { this.setBlockBounds(0.3125F, 0.3125F, 0F, 0.6875F, 0.6875F, 1F); } else { - + this.setBlockBounds( nX ? 0F : 0.3125F, nY ? 0F : 0.3125F, @@ -232,21 +231,21 @@ public class FluidDuctStandard extends FluidDuctBase implements IBlockMulti, ILo } } } - + public boolean canConnectTo(IBlockAccess world, int x, int y, int z, ForgeDirection dir, FluidType type) { return Library.canConnectFluid(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir, type); } @Override public void printHook(Pre event, World world, int x, int y, int z) { - + TileEntity te = world.getTileEntity(x, y, z); - + if(!(te instanceof TileEntityPipeBaseNT)) return; - + TileEntityPipeBaseNT duct = (TileEntityPipeBaseNT) te; - + List text = new ArrayList(); text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName()); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); diff --git a/src/main/java/com/hbm/blocks/network/FluidSwitch.java b/src/main/java/com/hbm/blocks/network/FluidSwitch.java index f4fc8c82d..77ed6519d 100644 --- a/src/main/java/com/hbm/blocks/network/FluidSwitch.java +++ b/src/main/java/com/hbm/blocks/network/FluidSwitch.java @@ -1,13 +1,9 @@ package com.hbm.blocks.network; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.ILookOverlay; import com.hbm.lib.RefStrings; import com.hbm.tileentity.network.TileEntityFluidValve; import com.hbm.util.I18nUtil; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; @@ -18,6 +14,9 @@ import net.minecraft.util.IIcon; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import java.util.ArrayList; +import java.util.List; + public class FluidSwitch extends FluidDuctBase implements ILookOverlay { @SideOnly(Side.CLIENT) @@ -26,14 +25,14 @@ public class FluidSwitch extends FluidDuctBase implements ILookOverlay { public FluidSwitch(Material mat) { super(mat); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { this.iconOn = iconRegister.registerIcon(RefStrings.MODID + ":fluid_switch_on"); this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":fluid_switch_off"); } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { @@ -47,18 +46,18 @@ public class FluidSwitch extends FluidDuctBase implements ILookOverlay { @Override public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { - + boolean on = world.isBlockIndirectlyGettingPowered(x, y, z); int meta = world.getBlockMetadata(x, y, z); - + boolean update = false; - + if(on && meta == 0) { world.setBlockMetadataWithNotify(x, y, z, 1, 2); world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 1.0F); update = true; } - + if(!on && meta == 1) { world.setBlockMetadataWithNotify(x, y, z, 0, 2); world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 0.85F); @@ -73,14 +72,14 @@ public class FluidSwitch extends FluidDuctBase implements ILookOverlay { @Override public void printHook(Pre event, World world, int x, int y, int z) { - + TileEntity te = world.getTileEntity(x, y, z); - + if(!(te instanceof TileEntityFluidValve)) return; - + TileEntityFluidValve duct = (TileEntityFluidValve) te; - + List text = new ArrayList(); text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName()); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); diff --git a/src/main/java/com/hbm/blocks/network/FluidValve.java b/src/main/java/com/hbm/blocks/network/FluidValve.java index 5a0b3d5b3..7c05600e8 100644 --- a/src/main/java/com/hbm/blocks/network/FluidValve.java +++ b/src/main/java/com/hbm/blocks/network/FluidValve.java @@ -1,13 +1,9 @@ package com.hbm.blocks.network; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.ILookOverlay; import com.hbm.lib.RefStrings; import com.hbm.tileentity.network.TileEntityFluidValve; import com.hbm.util.I18nUtil; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.material.Material; @@ -18,6 +14,9 @@ import net.minecraft.util.IIcon; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import java.util.ArrayList; +import java.util.List; + public class FluidValve extends FluidDuctBase implements ILookOverlay { @SideOnly(Side.CLIENT) @@ -26,14 +25,14 @@ public class FluidValve extends FluidDuctBase implements ILookOverlay { public FluidValve(Material mat) { super(mat); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { this.iconOn = iconRegister.registerIcon(RefStrings.MODID + ":fluid_valve_on"); this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":fluid_valve_off"); } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { @@ -44,16 +43,17 @@ public class FluidValve extends FluidDuctBase implements ILookOverlay { public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { return new TileEntityFluidValve(); } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - + if(world.isRemote) return true; - + if(super.onBlockActivated(world, x, y, z, player, side, hitX, hitY, hitZ)) return true; - + if(!player.isSneaking()) { int meta = world.getBlockMetadata(x, y, z); + TileEntityFluidValve te = (TileEntityFluidValve) world.getTileEntity(x, y, z); if(meta == 0) { world.setBlockMetadataWithNotify(x, y, z, 1, 2); world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 1.0F); @@ -61,10 +61,9 @@ public class FluidValve extends FluidDuctBase implements ILookOverlay { world.setBlockMetadataWithNotify(x, y, z, 0, 2); world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 0.85F); } - - TileEntityFluidValve te = (TileEntityFluidValve) world.getTileEntity(x, y, z); + te.updateState(); - + return true; } else { return false; @@ -73,14 +72,14 @@ public class FluidValve extends FluidDuctBase implements ILookOverlay { @Override public void printHook(Pre event, World world, int x, int y, int z) { - + TileEntity te = world.getTileEntity(x, y, z); - + if(!(te instanceof TileEntityFluidValve)) return; - + TileEntityFluidValve duct = (TileEntityFluidValve) te; - + List text = new ArrayList(); text.add("&[" + duct.getType().getColor() + "&]" + duct.getType().getLocalizedName()); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); diff --git a/src/main/java/com/hbm/blocks/network/IBlockFluidDuct.java b/src/main/java/com/hbm/blocks/network/IBlockFluidDuct.java index c222b595c..c537a374d 100644 --- a/src/main/java/com/hbm/blocks/network/IBlockFluidDuct.java +++ b/src/main/java/com/hbm/blocks/network/IBlockFluidDuct.java @@ -1,7 +1,6 @@ package com.hbm.blocks.network; import com.hbm.inventory.fluid.FluidType; - import net.minecraft.world.World; public interface IBlockFluidDuct { diff --git a/src/main/java/com/hbm/blocks/network/PylonBase.java b/src/main/java/com/hbm/blocks/network/PylonBase.java index bf35c9fbe..95a2476f7 100644 --- a/src/main/java/com/hbm/blocks/network/PylonBase.java +++ b/src/main/java/com/hbm/blocks/network/PylonBase.java @@ -2,7 +2,6 @@ package com.hbm.blocks.network; import com.hbm.blocks.ITooltipProvider; import com.hbm.tileentity.network.TileEntityPylonBase; - import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; @@ -18,31 +17,31 @@ public abstract class PylonBase extends BlockContainer implements ITooltipProvid @Override public void breakBlock(World world, int x, int y, int z, Block b, int m) { - + TileEntity te = world.getTileEntity(x, y, z); - + if(te instanceof TileEntityPylonBase) { ((TileEntityPylonBase)te).disconnectAll(); } - + super.breakBlock(world, x, y, z, b, m); } - + @Override public int getRenderType(){ return -1; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) { diff --git a/src/main/java/com/hbm/blocks/network/PylonLarge.java b/src/main/java/com/hbm/blocks/network/PylonLarge.java index 6333a6e28..a81a1af5f 100644 --- a/src/main/java/com/hbm/blocks/network/PylonLarge.java +++ b/src/main/java/com/hbm/blocks/network/PylonLarge.java @@ -1,12 +1,9 @@ package com.hbm.blocks.network; -import java.util.List; - import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ITooltipProvider; import com.hbm.tileentity.network.TileEntityPylonBase; import com.hbm.tileentity.network.TileEntityPylonLarge; - import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; @@ -17,6 +14,8 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.List; + public class PylonLarge extends BlockDummyable implements ITooltipProvider { public PylonLarge(Material mat) { @@ -25,7 +24,7 @@ public class PylonLarge extends BlockDummyable implements ITooltipProvider { @Override public TileEntity createNewTileEntity(World world, int meta) { - + if(meta >= 12) return new TileEntityPylonLarge(); return null; @@ -50,19 +49,19 @@ public class PylonLarge extends BlockDummyable implements ITooltipProvider { @Override public void breakBlock(World world, int x, int y, int z, Block b, int m) { - + TileEntity te = world.getTileEntity(x, y, z); - + if(te instanceof TileEntityPylonBase) { ((TileEntityPylonBase)te).disconnectAll(); } - + super.breakBlock(world, x, y, z, b, m); } @Override protected int getMetaForCore(World world, int x, int y, int z, EntityPlayer player, int original) { - + int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 180.0F + 0.5D) & 3; ForgeDirection dir = ForgeDirection.NORTH; @@ -79,10 +78,10 @@ public class PylonLarge extends BlockDummyable implements ITooltipProvider { if(i == 3) { dir = ForgeDirection.getOrientation(4); } - + return dir.ordinal() + offset; } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) { diff --git a/src/main/java/com/hbm/blocks/network/PylonMedium.java b/src/main/java/com/hbm/blocks/network/PylonMedium.java index 7a29f4614..5f4e0957d 100644 --- a/src/main/java/com/hbm/blocks/network/PylonMedium.java +++ b/src/main/java/com/hbm/blocks/network/PylonMedium.java @@ -1,12 +1,9 @@ package com.hbm.blocks.network; -import java.util.List; - import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ITooltipProvider; import com.hbm.tileentity.network.TileEntityPylonBase; import com.hbm.tileentity.network.TileEntityPylonMedium; - import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; @@ -15,6 +12,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; +import java.util.List; + public class PylonMedium extends BlockDummyable implements ITooltipProvider { public PylonMedium(Material mat) { @@ -23,7 +22,7 @@ public class PylonMedium extends BlockDummyable implements ITooltipProvider { @Override public TileEntity createNewTileEntity(World world, int meta) { - + if(meta >= 12) return new TileEntityPylonMedium(); return null; } @@ -50,7 +49,7 @@ public class PylonMedium extends BlockDummyable implements ITooltipProvider { if(te instanceof TileEntityPylonBase) ((TileEntityPylonBase)te).disconnectAll(); super.breakBlock(world, x, y, z, b, m); } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) { diff --git a/src/main/java/com/hbm/blocks/network/PylonRedWire.java b/src/main/java/com/hbm/blocks/network/PylonRedWire.java index 79a44f541..8594cbb72 100644 --- a/src/main/java/com/hbm/blocks/network/PylonRedWire.java +++ b/src/main/java/com/hbm/blocks/network/PylonRedWire.java @@ -1,9 +1,6 @@ package com.hbm.blocks.network; -import java.util.List; - import com.hbm.tileentity.network.TileEntityPylon; - import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -11,6 +8,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; +import java.util.List; + public class PylonRedWire extends PylonBase { public PylonRedWire(Material material) { diff --git a/src/main/java/com/hbm/blocks/network/RadioTelex.java b/src/main/java/com/hbm/blocks/network/RadioTelex.java index 8b7614b51..5d042ff63 100644 --- a/src/main/java/com/hbm/blocks/network/RadioTelex.java +++ b/src/main/java/com/hbm/blocks/network/RadioTelex.java @@ -3,7 +3,6 @@ package com.hbm.blocks.network; import com.hbm.blocks.BlockDummyable; import com.hbm.main.MainRegistry; import com.hbm.tileentity.network.TileEntityRadioTelex; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; @@ -31,7 +30,7 @@ public class RadioTelex extends BlockDummyable { public int getOffset() { return 0; } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote && !player.isSneaking()) { diff --git a/src/main/java/com/hbm/blocks/network/RadioTorchBase.java b/src/main/java/com/hbm/blocks/network/RadioTorchBase.java index 4ebd140fd..35e69429c 100644 --- a/src/main/java/com/hbm/blocks/network/RadioTorchBase.java +++ b/src/main/java/com/hbm/blocks/network/RadioTorchBase.java @@ -1,12 +1,9 @@ package com.hbm.blocks.network; -import java.util.List; - import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; - import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; @@ -23,6 +20,8 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.List; + /** * Base class for all torch-like RTTY blocks * @author hbm @@ -39,34 +38,34 @@ public abstract class RadioTorchBase extends BlockContainer implements IGUIProvi public int getRenderType() { return renderID; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; } - + @Override @SideOnly(Side.CLIENT) public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) { return true; } - + @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { return null; } - + @Override public MovingObjectPosition collisionRayTrace(World world, int x, int y, int z, Vec3 vec0, Vec3 vec1) { - + int meta = world.getBlockMetadata(x, y, z) & 7; ForgeDirection dir = ForgeDirection.getOrientation(meta); - + this.setBlockBounds( dir.offsetX == 1 ? 0F : 0.375F, dir.offsetY == 1 ? 0F : 0.375F, @@ -86,31 +85,31 @@ public abstract class RadioTorchBase extends BlockContainer implements IGUIProvi @Override public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { - + int meta = world.getBlockMetadata(x, y, z); ForgeDirection dir = ForgeDirection.getOrientation(meta); Block b = world.getBlock(x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ); - + if(!canBlockStay(world, x, y, z, dir, b)) { this.dropBlockAsItem(world, x, y, z, meta, 0); world.setBlockToAir(x, y, z); } } - + @Override public boolean canPlaceBlockOnSide(World world, int x, int y, int z, int side) { if(!super.canPlaceBlockOnSide(world, x, y, z, side)) return false; - + ForgeDirection dir = ForgeDirection.getOrientation(side); Block b = world.getBlock(x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ); - + return canBlockStay(world, x, y, z, dir, b); } - + public boolean canBlockStay(World world, int x, int y, int z, ForgeDirection dir, Block b) { return b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) || b.hasComparatorInputOverride() || b.canProvidePower() || (b.renderAsNormalBlock() && !b.isAir(world, x, y, z)); } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote && !player.isSneaking()) { diff --git a/src/main/java/com/hbm/blocks/network/RadioTorchCounter.java b/src/main/java/com/hbm/blocks/network/RadioTorchCounter.java index 086031285..80bacd8c4 100644 --- a/src/main/java/com/hbm/blocks/network/RadioTorchCounter.java +++ b/src/main/java/com/hbm/blocks/network/RadioTorchCounter.java @@ -1,8 +1,5 @@ package com.hbm.blocks.network; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.ILookOverlay; import com.hbm.inventory.container.ContainerCounterTorch; import com.hbm.inventory.gui.GUICounterTorch; @@ -10,12 +7,10 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.network.TileEntityRadioTorchCounter; import com.hbm.util.Compat; import com.hbm.util.I18nUtil; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; @@ -25,8 +20,11 @@ import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.List; + public class RadioTorchCounter extends RadioTorchBase { - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(!world.isRemote && !player.isSneaking()) { @@ -56,25 +54,25 @@ public class RadioTorchCounter extends RadioTorchBase { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICounterTorch(player.inventory, (TileEntityRadioTorchCounter) world.getTileEntity(x, y, z)); } @Override public void printHook(Pre event, World world, int x, int y, int z) { TileEntity te = world.getTileEntity(x, y, z); - + if(te instanceof TileEntityRadioTorchCounter) { TileEntityRadioTorchCounter radio = (TileEntityRadioTorchCounter) te; List text = new ArrayList(); - + for(int i = 0; i < 3; i++) { if(!radio.channel[i].isEmpty()) { text.add(EnumChatFormatting.AQUA + "Freq " + (i + 1) + ": " + radio.channel[i]); text.add(EnumChatFormatting.RED + "Signal " + (i + 1) + ": " + radio.lastCount[i]); } } - + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } } diff --git a/src/main/java/com/hbm/blocks/network/RadioTorchLogic.java b/src/main/java/com/hbm/blocks/network/RadioTorchLogic.java index 13cc2d107..65d144ef9 100644 --- a/src/main/java/com/hbm/blocks/network/RadioTorchLogic.java +++ b/src/main/java/com/hbm/blocks/network/RadioTorchLogic.java @@ -1,17 +1,12 @@ package com.hbm.blocks.network; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.ILookOverlay; import com.hbm.inventory.gui.GUIScreenRadioTorchLogic; import com.hbm.lib.RefStrings; import com.hbm.tileentity.network.TileEntityRadioTorchLogic; import com.hbm.util.I18nUtil; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; @@ -20,12 +15,15 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import java.util.ArrayList; +import java.util.List; + public class RadioTorchLogic extends RadioTorchRWBase { - + public RadioTorchLogic() { super(); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -39,30 +37,30 @@ public class RadioTorchLogic extends RadioTorchRWBase { tile.lastUpdate = world.getTotalWorldTime(); return tile; } - + @Override public boolean canProvidePower() { return true; } - + @Override public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int side) { - + TileEntity tile = world.getTileEntity(x, y, z); - + if(tile instanceof TileEntityRadioTorchLogic) { int state = ((TileEntityRadioTorchLogic) tile).lastState; return state; } - + return 0; } - + @Override @SideOnly(Side.CLIENT) public void printHook(Pre event, World world, int x, int y, int z) { TileEntity te = world.getTileEntity(x, y, z); - + if(te instanceof TileEntityRadioTorchLogic) { TileEntityRadioTorchLogic radio = (TileEntityRadioTorchLogic) te; List text = new ArrayList(); @@ -71,15 +69,15 @@ public class RadioTorchLogic extends RadioTorchRWBase { ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } } - + @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { TileEntity te = world.getTileEntity(x, y, z); - + if(te instanceof TileEntityRadioTorchLogic) return new GUIScreenRadioTorchLogic((TileEntityRadioTorchLogic) te); - + return null; } } diff --git a/src/main/java/com/hbm/blocks/network/RadioTorchRWBase.java b/src/main/java/com/hbm/blocks/network/RadioTorchRWBase.java index 8199991a5..c73f7ea5c 100644 --- a/src/main/java/com/hbm/blocks/network/RadioTorchRWBase.java +++ b/src/main/java/com/hbm/blocks/network/RadioTorchRWBase.java @@ -1,16 +1,11 @@ package com.hbm.blocks.network; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.ILookOverlay; import com.hbm.inventory.gui.GUIScreenRadioTorch; import com.hbm.tileentity.network.TileEntityRadioTorchBase; import com.hbm.util.I18nUtil; - 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.tileentity.TileEntity; @@ -19,6 +14,9 @@ import net.minecraft.util.IIcon; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import java.util.ArrayList; +import java.util.List; + /** * Base class for the basic sender and receiver RTTY torch * @author hbm @@ -32,12 +30,12 @@ public abstract class RadioTorchRWBase extends RadioTorchBase { public IIcon getIcon(int side, int metadata) { return side == 0 ? this.blockIcon : this.iconOn; } - + @Override @SideOnly(Side.CLIENT) public void printHook(Pre event, World world, int x, int y, int z) { TileEntity te = world.getTileEntity(x, y, z); - + if(te instanceof TileEntityRadioTorchBase) { TileEntityRadioTorchBase radio = (TileEntityRadioTorchBase) te; List text = new ArrayList(); @@ -51,12 +49,12 @@ public abstract class RadioTorchRWBase extends RadioTorchBase { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { TileEntity te = world.getTileEntity(x, y, z); - + if(te instanceof TileEntityRadioTorchBase) return new GUIScreenRadioTorch((TileEntityRadioTorchBase) te); - + return null; } } diff --git a/src/main/java/com/hbm/blocks/network/RadioTorchReceiver.java b/src/main/java/com/hbm/blocks/network/RadioTorchReceiver.java index 4d7f28c83..cc3c58986 100644 --- a/src/main/java/com/hbm/blocks/network/RadioTorchReceiver.java +++ b/src/main/java/com/hbm/blocks/network/RadioTorchReceiver.java @@ -2,7 +2,6 @@ package com.hbm.blocks.network; import com.hbm.lib.RefStrings; import com.hbm.tileentity.network.TileEntityRadioTorchReceiver; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; @@ -15,7 +14,7 @@ public class RadioTorchReceiver extends RadioTorchRWBase { public RadioTorchReceiver() { super(); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -29,22 +28,22 @@ public class RadioTorchReceiver extends RadioTorchRWBase { tile.lastUpdate = world.getTotalWorldTime(); return tile; } - + @Override public boolean canProvidePower() { return true; } - + @Override public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int side) { - + TileEntity tile = world.getTileEntity(x, y, z); - + if(tile instanceof TileEntityRadioTorchReceiver) { int state = ((TileEntityRadioTorchReceiver) tile).lastState; return state; } - + return 0; } } diff --git a/src/main/java/com/hbm/blocks/network/RadioTorchSender.java b/src/main/java/com/hbm/blocks/network/RadioTorchSender.java index 2045be8a3..1a11b9b0e 100644 --- a/src/main/java/com/hbm/blocks/network/RadioTorchSender.java +++ b/src/main/java/com/hbm/blocks/network/RadioTorchSender.java @@ -2,7 +2,6 @@ package com.hbm.blocks.network; import com.hbm.lib.RefStrings; import com.hbm.tileentity.network.TileEntityRadioTorchSender; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; @@ -14,7 +13,7 @@ public class RadioTorchSender extends RadioTorchRWBase { public RadioTorchSender() { super(); } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { diff --git a/src/main/java/com/hbm/blocks/network/Substation.java b/src/main/java/com/hbm/blocks/network/Substation.java index 6c8e3cb34..6affdeb4e 100644 --- a/src/main/java/com/hbm/blocks/network/Substation.java +++ b/src/main/java/com/hbm/blocks/network/Substation.java @@ -1,13 +1,10 @@ package com.hbm.blocks.network; -import java.util.List; - import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ITooltipProvider; import com.hbm.tileentity.TileEntityProxyConductor; import com.hbm.tileentity.network.TileEntityPylonBase; import com.hbm.tileentity.network.TileEntitySubstation; - import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; @@ -17,6 +14,8 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.List; + public class Substation extends BlockDummyable implements ITooltipProvider { public Substation(Material mat) { @@ -25,13 +24,13 @@ public class Substation extends BlockDummyable implements ITooltipProvider { @Override public TileEntity createNewTileEntity(World world, int meta) { - + if(meta >= 12) return new TileEntitySubstation(); - + if(meta >= 6) return new TileEntityProxyConductor(); - + return null; } @@ -43,13 +42,13 @@ public class Substation extends BlockDummyable implements ITooltipProvider { @Override public void breakBlock(World world, int x, int y, int z, Block b, int m) { - + TileEntity te = world.getTileEntity(x, y, z); - + if(te instanceof TileEntityPylonBase) { ((TileEntityPylonBase)te).disconnectAll(); } - + super.breakBlock(world, x, y, z, b, m); } @@ -72,7 +71,7 @@ public class Substation extends BlockDummyable implements ITooltipProvider { this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o + 1); this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o - 1); } - + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if(world.isRemote) { diff --git a/src/main/java/com/hbm/blocks/network/WireCoated.java b/src/main/java/com/hbm/blocks/network/WireCoated.java index 3e939327c..c96c68ad5 100644 --- a/src/main/java/com/hbm/blocks/network/WireCoated.java +++ b/src/main/java/com/hbm/blocks/network/WireCoated.java @@ -4,7 +4,6 @@ import com.hbm.render.block.ct.CT; import com.hbm.render.block.ct.CTStitchReceiver; import com.hbm.render.block.ct.IBlockCT; import com.hbm.tileentity.network.TileEntityCableBaseNT; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; diff --git a/src/main/java/com/hbm/commands/CommandPacketInfo.java b/src/main/java/com/hbm/commands/CommandPacketInfo.java new file mode 100644 index 000000000..1affa486c --- /dev/null +++ b/src/main/java/com/hbm/commands/CommandPacketInfo.java @@ -0,0 +1,89 @@ +package com.hbm.commands; + +import com.hbm.config.GeneralConfig; +import com.hbm.handler.threading.PacketThreading; +import com.hbm.main.MainRegistry; +import com.hbm.util.BobMathUtil; +import net.minecraft.command.CommandBase; +import net.minecraft.command.ICommandSender; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; + +import java.lang.management.ManagementFactory; +import java.lang.management.ThreadInfo; +import java.util.concurrent.TimeUnit; + +import static com.hbm.handler.threading.PacketThreading.totalCnt; + +public class CommandPacketInfo extends CommandBase { + @Override + public String getCommandName() { + return "ntmpackets"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return EnumChatFormatting.RED + "/ntmpackets [info/resetState/toggleThreadingStatus/forceLock/forceUnlock]"; + } + + @Override + public void processCommand(ICommandSender sender, String[] args) { + + if (args.length > 0) { + switch (args[0]) { + case "resetState": + PacketThreading.hasTriggered = false; + PacketThreading.clearCnt = 0; + return; + case "toggleThreadingStatus": + GeneralConfig.enablePacketThreading = !GeneralConfig.enablePacketThreading; // Force toggle. + PacketThreading.init(); // Reinit threads. + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN + "Packet sending status toggled to " + GeneralConfig.enablePacketThreading + ".")); + return; + case "forceLock": + PacketThreading.lock.lock(); // oh my fucking god never do this please unless you really have to + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Packet thread lock acquired, this may freeze the main thread!")); + MainRegistry.logger.error("Packet thread lock acquired by {}, this may freeze the main thread!", sender.getCommandSenderName()); + return; + case "forceUnlock": + PacketThreading.lock.unlock(); + MainRegistry.logger.warn("Packet thread lock released by {}.", sender.getCommandSenderName()); + return; + case "info": + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD + "NTM Packet Debugger v1.2")); + + if (PacketThreading.isTriggered() && GeneralConfig.enablePacketThreading) + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Packet Threading Errored, check log.")); + else if (GeneralConfig.enablePacketThreading) + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN + "Packet Threading Active")); + else + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Packet Threading Inactive")); + + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Thread Pool Info")); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "# Threads (total): " + PacketThreading.threadPool.getPoolSize())); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "# Threads (core): " + PacketThreading.threadPool.getCorePoolSize())); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "# Threads (idle): " + (PacketThreading.threadPool.getPoolSize() - PacketThreading.threadPool.getActiveCount()))); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "# Threads (maximum): " + PacketThreading.threadPool.getMaximumPoolSize())); + + for (ThreadInfo thread : ManagementFactory.getThreadMXBean().dumpAllThreads(false, false)) + if (thread.getThreadName().startsWith(PacketThreading.threadPrefix)) { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD + "Thread Name: " + thread.getThreadName())); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Thread ID: " + thread.getThreadId())); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Thread state: " + thread.getThreadState())); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Locked by: " + (thread.getLockOwnerName() == null ? "None" : thread.getLockName()))); + } + + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD + "Packet Info: ")); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Amount total: " + totalCnt)); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Amount remaining: " + PacketThreading.threadPool.getQueue().size())); + + if (totalCnt != 0) + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "% Remaining to process: " + BobMathUtil.roundDecimal(((double) PacketThreading.threadPool.getQueue().size() / totalCnt) * 100, 2) + "%")); + + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Time spent waiting on thread(s) last tick: " + BobMathUtil.roundDecimal(TimeUnit.MILLISECONDS.convert(PacketThreading.nanoTimeWaited, TimeUnit.NANOSECONDS), 4) + "ms")); + return; + } + } + sender.addChatMessage(new ChatComponentText(getCommandUsage(sender))); + } +} diff --git a/src/main/java/com/hbm/commands/CommandReloadClient.java b/src/main/java/com/hbm/commands/CommandReloadClient.java new file mode 100644 index 000000000..6f0c9672a --- /dev/null +++ b/src/main/java/com/hbm/commands/CommandReloadClient.java @@ -0,0 +1,128 @@ +package com.hbm.commands; + +import java.util.Collections; +import java.util.List; +import java.util.Map.Entry; +import java.util.stream.Collectors; + +import com.hbm.config.ClientConfig; +import com.hbm.config.ClientConfig.ConfigWrapper; + +import cpw.mods.fml.relauncher.FMLLaunchHandler; +import cpw.mods.fml.relauncher.Side; +import net.minecraft.command.CommandBase; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommandSender; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.client.ClientCommandHandler; + +public class CommandReloadClient extends CommandBase { + + public static void register() { + if(FMLLaunchHandler.side() != Side.CLIENT) return; + ClientCommandHandler.instance.registerCommand(new CommandReloadClient()); + } + + @Override + public String getCommandName() { + return "ntmclient"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/ntmclient help"; + } + + @Override + public boolean canCommandSenderUseCommand(ICommandSender sender) { + return sender instanceof EntityPlayer; + } + + @Override + public void processCommand(ICommandSender sender, String[] args) { + + if(args.length < 1) throw new CommandException(getCommandUsage(sender)); + + String operator = args[0]; + + if("help".equals(operator)) { + + if(args.length >= 2) { + String command = args[1]; + if("help".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Shows usage for /ntmclient subcommands.")); + if("list".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Shows all client variable names and values.")); + if("reload".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Reads client variables from the config file.")); + if("get".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Shows value for the specified variable name.")); + if("set".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Sets a variable's value and saves it to the config file.")); + } else { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "help " + EnumChatFormatting.RED + "")); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "list")); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "reload")); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "get " + EnumChatFormatting.RED + "")); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "set " + EnumChatFormatting.RED + " ")); + } + return; + } + + if("list".equals(operator)) { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "CLIENT VARIABLES:")); + for(Entry line : ClientConfig.configMap.entrySet()) { + sender.addChatMessage(new ChatComponentText(" " + EnumChatFormatting.GOLD + line.getKey() + ": " + EnumChatFormatting.YELLOW + line.getValue().value)); + } + return; + } + + if("reload".equals(operator)) { + ClientConfig.reload(); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Variables loaded from config file.")); + return; + } + + if(args.length < 2) throw new CommandException(getCommandUsage(sender)); + + String key = args[1]; + + if("get".equals(operator)) { + ConfigWrapper wrapper = ClientConfig.configMap.get(key); + if(wrapper == null) throw new CommandException("Key does not exist."); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD + key + ": " + EnumChatFormatting.YELLOW + wrapper.value)); + return; + } + + if(args.length < 3) throw new CommandException(getCommandUsage(sender)); + + String value = args[2]; + + if("set".equals(operator)) { + ConfigWrapper wrapper = ClientConfig.configMap.get(key); + if(wrapper == null) throw new CommandException("Key does not exist."); + + try { + wrapper.update(value); + ClientConfig.refresh(); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Value updated.")); + } catch(Exception ex) { + throw new CommandException("Error parsing type for " + wrapper.value.getClass().getSimpleName() + ": " + ex.getLocalizedMessage()); + } + + return; + } + + throw new CommandException(getCommandUsage(sender)); + } + + @SuppressWarnings("rawtypes") + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args) { + if(!(sender instanceof EntityPlayer)) return Collections.emptyList(); + if(args.length < 1) return Collections.emptyList(); + if(args.length == 1) return getListOfStringsMatchingLastWord(args, "list", "reload", "get", "set"); + String operator = args[0]; + if(args.length == 2 && ("get".equals(operator) || "set".equals(operator))) { + return getListOfStringsFromIterableMatchingLastWord(args, ClientConfig.configMap.keySet().stream().map(String::valueOf).collect(Collectors.toList())); + } + return Collections.emptyList(); + } +} diff --git a/src/main/java/com/hbm/commands/CommandReloadRecipes.java b/src/main/java/com/hbm/commands/CommandReloadRecipes.java index 8b2a939eb..9068adb38 100644 --- a/src/main/java/com/hbm/commands/CommandReloadRecipes.java +++ b/src/main/java/com/hbm/commands/CommandReloadRecipes.java @@ -1,8 +1,10 @@ package com.hbm.commands; import com.hbm.config.ItemPoolConfigJSON; +import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.util.ChatBuilder; +import com.hbm.util.DamageResistanceHandler; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; @@ -26,6 +28,9 @@ public class CommandReloadRecipes extends CommandBase { try { SerializableRecipe.initialize(); ItemPoolConfigJSON.initialize(); + DamageResistanceHandler.init(); + Fluids.reloadFluids(); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Reload complete :)")); } catch(Exception ex) { sender.addChatMessage(ChatBuilder.start("----------------------------------").color(EnumChatFormatting.GRAY).flush()); diff --git a/src/main/java/com/hbm/commands/CommandSatellites.java b/src/main/java/com/hbm/commands/CommandSatellites.java index 6f1a803cd..6b552b6f2 100644 --- a/src/main/java/com/hbm/commands/CommandSatellites.java +++ b/src/main/java/com/hbm/commands/CommandSatellites.java @@ -8,6 +8,7 @@ import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; @@ -17,72 +18,78 @@ import java.util.Locale; import java.util.stream.Collectors; public class CommandSatellites extends CommandBase { - @Override - public String getCommandName() { - return "ntmsatellites"; - } + @Override + public String getCommandName() { + return "ntmsatellites"; + } - @Override - public String getCommandUsage(ICommandSender iCommandSender) { - return String.format(Locale.US, - "%s/%s orbit %s- Launch the held satellite\n" + - "%s/%s descend %s- Deletes satellite by frequency.", - EnumChatFormatting.GREEN, getCommandName(), EnumChatFormatting.LIGHT_PURPLE, - EnumChatFormatting.GREEN, getCommandName(), EnumChatFormatting.LIGHT_PURPLE - ); - } + @Override + public String getCommandUsage(ICommandSender iCommandSender) { + return String.format(Locale.US, "%s/%s orbit %s- Launch the held satellite.\n" + "%s/%s descend %s- Deletes satellite by frequency.\n" + "%s/%s list %s- Lists all active satellites.", EnumChatFormatting.GREEN, getCommandName(), EnumChatFormatting.LIGHT_PURPLE, EnumChatFormatting.GREEN, getCommandName(), EnumChatFormatting.LIGHT_PURPLE, EnumChatFormatting.GREEN, getCommandName(), EnumChatFormatting.LIGHT_PURPLE); + } - @Override - public void processCommand(ICommandSender sender, String[] args) { - if(!(sender instanceof EntityPlayer)) { - sender.addChatMessage(new ChatComponentTranslation( "commands.satellite.should_be_run_as_player").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); - return; - } - switch (args[0]) { - case "orbit": - EntityPlayer player = getCommandSenderAsPlayer(sender); - if(player.getHeldItem().getItem() instanceof ISatChip && player.getHeldItem().getItem() != ModItems.sat_chip) { - Satellite.orbit( - player.worldObj, - Satellite.getIDFromItem(player.getHeldItem().getItem()), - ISatChip.getFreqS(player.getHeldItem()), - player.posX, player.posY, player.posZ - ); - player.getHeldItem().stackSize -= 1; - sender.addChatMessage(new ChatComponentTranslation("commands.satellite.satellite_orbited").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GREEN))); - } else { - sender.addChatMessage(new ChatComponentTranslation("commands.satellite.not_a_satellite").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); - } - break; - case "descend": - int freq = parseInt(sender, args[1]); - SatelliteSavedData data = SatelliteSavedData.getData(sender.getEntityWorld()); - if(data.sats.containsKey(freq)) { - data.sats.remove(freq); - data.markDirty(); - sender.addChatMessage(new ChatComponentTranslation( "commands.satellite.satellite_descended").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GREEN))); - } else { - sender.addChatMessage(new ChatComponentTranslation( "commands.satellite.no_satellite").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); - } - break; - } - } + @Override + public void processCommand(ICommandSender sender, String[] args) { + if(!(sender instanceof EntityPlayer)) { + sender.addChatMessage(new ChatComponentTranslation("commands.satellite.should_be_run_as_player").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); + return; + } + switch(args[0]) { + case "orbit": + EntityPlayer player = getCommandSenderAsPlayer(sender); + if(player.getHeldItem().getItem() instanceof ISatChip && player.getHeldItem().getItem() != ModItems.sat_chip) { + Satellite.orbit(player.worldObj, Satellite.getIDFromItem(player.getHeldItem().getItem()), ISatChip.getFreqS(player.getHeldItem()), player.posX, player.posY, player.posZ); + player.getHeldItem().stackSize -= 1; + sender.addChatMessage(new ChatComponentTranslation("commands.satellite.satellite_orbited").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GREEN))); + } else { + sender.addChatMessage(new ChatComponentTranslation("commands.satellite.not_a_satellite").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); + } + break; + case "descend": + int freq = parseInt(sender, args[1]); + SatelliteSavedData data = SatelliteSavedData.getData(sender.getEntityWorld()); + if(data.sats.containsKey(freq)) { + data.sats.remove(freq); + data.markDirty(); + sender.addChatMessage(new ChatComponentTranslation("commands.satellite.satellite_descended").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GREEN))); + } else { + sender.addChatMessage(new ChatComponentTranslation("commands.satellite.no_satellite").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); + } + break; + case "list": + data = SatelliteSavedData.getData(sender.getEntityWorld()); + if(data.sats.isEmpty()) { + ChatComponentTranslation message = new ChatComponentTranslation("commands.satellite.no_active_satellites"); + message.getChatStyle().setColor(EnumChatFormatting.RED); + sender.addChatMessage(message); + } else { + data.sats.forEach((listFreq, sat) -> { + String messageText = String.valueOf(listFreq) + " - " + sat.getClass().getSimpleName(); + ChatComponentText message = new ChatComponentText(messageText); + message.getChatStyle().setColor(EnumChatFormatting.GREEN); + sender.addChatMessage(message); + }); + } + break; - @SuppressWarnings("rawtypes") - @Override - public List addTabCompletionOptions(ICommandSender sender, String[] args) { - if(!(sender instanceof EntityPlayer)) { - return Collections.emptyList(); - } - if(args.length < 1) { - return Collections.emptyList(); - } - if(args.length == 1) { - return getListOfStringsMatchingLastWord(args, "orbit", "descend"); - } - if (args[0].equals("descend")) { - return getListOfStringsFromIterableMatchingLastWord(args, SatelliteSavedData.getData(sender.getEntityWorld()).sats.keySet().stream().map(String::valueOf).collect(Collectors.toList())); - } - return Collections.emptyList(); - } + } + } + + @SuppressWarnings("rawtypes") + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args) { + if(!(sender instanceof EntityPlayer)) { + return Collections.emptyList(); + } + if(args.length < 1) { + return Collections.emptyList(); + } + if(args.length == 1) { + return getListOfStringsMatchingLastWord(args, "orbit", "descend", "list"); + } + if(args[0].equals("descend")) { + return getListOfStringsFromIterableMatchingLastWord(args, SatelliteSavedData.getData(sender.getEntityWorld()).sats.keySet().stream().map(String::valueOf).collect(Collectors.toList())); + } + return Collections.emptyList(); + } } diff --git a/src/main/java/com/hbm/util/SuicideThreadDump.java b/src/main/java/com/hbm/commands/SuicideThreadDump.java similarity index 95% rename from src/main/java/com/hbm/util/SuicideThreadDump.java rename to src/main/java/com/hbm/commands/SuicideThreadDump.java index 39ad116a2..3abb6c77c 100644 --- a/src/main/java/com/hbm/util/SuicideThreadDump.java +++ b/src/main/java/com/hbm/commands/SuicideThreadDump.java @@ -1,4 +1,4 @@ -package com.hbm.util; +package com.hbm.commands; import java.lang.management.ManagementFactory; import java.lang.management.MonitorInfo; @@ -21,8 +21,7 @@ public class SuicideThreadDump extends CommandBase { public static void register() { if(FMLLaunchHandler.side() != Side.CLIENT) return; - ClientCommandHandler handler = ClientCommandHandler.instance; - handler.registerCommand(new SuicideThreadDump()); + ClientCommandHandler.instance.registerCommand(new SuicideThreadDump()); } @Override diff --git a/src/main/java/com/hbm/config/ClientConfig.java b/src/main/java/com/hbm/config/ClientConfig.java new file mode 100644 index 000000000..9165031d4 --- /dev/null +++ b/src/main/java/com/hbm/config/ClientConfig.java @@ -0,0 +1,174 @@ +package com.hbm.config; + +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.main.MainRegistry; +import com.hbm.util.Compat; + +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; + +// https://youtube.com/shorts/XTHZWqZt_AI +public class ClientConfig { + + public static final Gson gson = new Gson(); + public static HashMap configMap = new HashMap(); + + //separate fields because they are a tad faster than using a hashmap and also because using them is less verbose + public static ConfigWrapper GEIGER_OFFSET_HORIZONTAL = new ConfigWrapper(0); + public static ConfigWrapper GEIGER_OFFSET_VERTICAL = new ConfigWrapper(0); + public static ConfigWrapper INFO_OFFSET_HORIZONTAL = new ConfigWrapper(0); + public static ConfigWrapper INFO_OFFSET_VERTICAL = new ConfigWrapper(0); + public static ConfigWrapper INFO_POSITION = new ConfigWrapper(0); + public static ConfigWrapper GUN_ANIMS_LEGACY = new ConfigWrapper(false); + public static ConfigWrapper GUN_MODEL_FOV = new ConfigWrapper(false); + public static ConfigWrapper GUN_VISUAL_RECOIL = new ConfigWrapper(true); + public static ConfigWrapper ITEM_TOOLTIP_SHOW_OREDICT = new ConfigWrapper(true); + public static ConfigWrapper ITEM_TOOLTIP_SHOW_CUSTOM_NUKE = new ConfigWrapper(true); + public static ConfigWrapper MAIN_MENU_WACKY_SPLASHES = new ConfigWrapper(true); + public static ConfigWrapper DODD_RBMK_DIAGNOSTIC = new ConfigWrapper(true); + public static ConfigWrapper RENDER_CABLE_HANG = new ConfigWrapper(true); + public static ConfigWrapper NUKE_HUD_FLASH = new ConfigWrapper(true); + public static ConfigWrapper NUKE_HUD_SHAKE = new ConfigWrapper(true); + public static ConfigWrapper RENDER_REEDS = new ConfigWrapper(!Compat.isModLoaded(Compat.MOD_ANG)); + + private static void initDefaults() { + configMap.put("GEIGER_OFFSET_HORIZONTAL", GEIGER_OFFSET_HORIZONTAL); + configMap.put("GEIGER_OFFSET_VERTICAL", GEIGER_OFFSET_VERTICAL); + configMap.put("INFO_OFFSET_HORIZONTAL", INFO_OFFSET_HORIZONTAL); + configMap.put("INFO_OFFSET_VERTICAL", INFO_OFFSET_VERTICAL); + configMap.put("INFO_POSITION", INFO_POSITION); + configMap.put("GUN_ANIMS_LEGACY", GUN_ANIMS_LEGACY); + configMap.put("GUN_MODEL_FOV", GUN_MODEL_FOV); + configMap.put("GUN_VISUAL_RECOIL", GUN_VISUAL_RECOIL); + configMap.put("ITEM_TOOLTIP_SHOW_OREDICT", ITEM_TOOLTIP_SHOW_OREDICT); + configMap.put("ITEM_TOOLTIP_SHOW_CUSTOM_NUKE", ITEM_TOOLTIP_SHOW_CUSTOM_NUKE); + configMap.put("MAIN_MENU_WACKY_SPLASHES", MAIN_MENU_WACKY_SPLASHES); + configMap.put("DODD_RBMK_DIAGNOSTIC", DODD_RBMK_DIAGNOSTIC); + configMap.put("RENDER_CABLE_HANG", RENDER_CABLE_HANG); + configMap.put("NUKE_HUD_FLASH", NUKE_HUD_FLASH); + configMap.put("NUKE_HUD_SHAKE", NUKE_HUD_SHAKE); + configMap.put("RENDER_REEDS", RENDER_REEDS); + } + + /** Initializes defaults, then reads the config file if it exists, then writes the config file. */ + public static void initConfig() { + initDefaults(); + File folder = MainRegistry.configHbmDir; + File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmClient.json"); + if(config.exists()) readConfig(config); + refresh(); + } + + /** Writes over the config file using the running config. */ + public static void refresh() { + File folder = MainRegistry.configHbmDir; + File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmClient.json"); + writeConfig(config); + } + + /** Writes over the running config using the config file. */ + public static void reload() { + File folder = MainRegistry.configHbmDir; + File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmClient.json"); + if(config.exists()) readConfig(config); + } + + private static void readConfig(File config) { + + try { + JsonObject json = gson.fromJson(new FileReader(config), JsonObject.class); + + for(Entry line : configMap.entrySet()) { + + if(json.has(line.getKey())) { + JsonElement value = json.get(line.getKey()); + + try { + + //world's shittiest dynamic type parser + if(configMap.containsKey(line.getKey())) { + if(line.getValue().value instanceof String) configMap.get(line.getKey()).set(value.getAsString()); + if(line.getValue().value instanceof Float) configMap.get(line.getKey()).set(value.getAsFloat()); + if(line.getValue().value instanceof Double) configMap.get(line.getKey()).set(value.getAsDouble()); + if(line.getValue().value instanceof Integer) configMap.get(line.getKey()).set(value.getAsInt()); + if(line.getValue().value instanceof Boolean) configMap.get(line.getKey()).set(value.getAsBoolean()); + } + + //gson doesn't give me the option to read the raw value of a JsonPrimitive so we have to this shit effectively twice + //once to make sure that the parsed data matches with what's determined by the default, + //and a second time in the ConfigWrapper to add ease of reading the data without needing manual casts + + } catch(Exception ex) { + ex.printStackTrace(); + } + } + } + + } catch(Exception ex) { + ex.printStackTrace(); + } + } + + private static void writeConfig(File config) { + + try { + JsonWriter writer = new JsonWriter(new FileWriter(config)); + writer.setIndent(" "); + writer.beginObject(); + + writer.name("info").value("This file can be edited ingame using the /ntmclient command."); + + List keys = new ArrayList(); + keys.addAll(configMap.keySet()); + Collections.sort(keys); //readability is cool + + for(String key : keys) { + + ConfigWrapper wrapper = configMap.get(key); + Object value = wrapper.value; + //this sucks and i am too stupid to come up with something better + if(value instanceof String) writer.name(key).value((String) value); + if(value instanceof Float) writer.name(key).value((Float) value); + if(value instanceof Double) writer.name(key).value((Double) value); + if(value instanceof Integer) writer.name(key).value((Integer) value); + if(value instanceof Boolean) writer.name(key).value((Boolean) value); + } + + writer.endObject(); + writer.close(); + } catch(IOException e) { + e.printStackTrace(); + } + } + + public static class ConfigWrapper { + public T value; + + public ConfigWrapper(T o) { + this.value = o; + } + + public T get() { return value; } + public void set(T value) { this.value = value; } + + public void update(String param) { + Object stupidBufferObject = null; // wahh wahh can't cast Float to T wahh wahh shut the fuck up + if(value instanceof String) stupidBufferObject = param; + if(value instanceof Float) stupidBufferObject = Float.parseFloat(param); + if(value instanceof Double) stupidBufferObject = Double.parseDouble(param); + if(value instanceof Integer) stupidBufferObject = Integer.parseInt(param); + if(value instanceof Boolean) stupidBufferObject = Boolean.parseBoolean(param); + if(stupidBufferObject != null) this.value = (T) stupidBufferObject; + } + } +} diff --git a/src/main/java/com/hbm/config/FalloutConfigJSON.java b/src/main/java/com/hbm/config/FalloutConfigJSON.java index ac69f36bb..65636f402 100644 --- a/src/main/java/com/hbm/config/FalloutConfigJSON.java +++ b/src/main/java/com/hbm/config/FalloutConfigJSON.java @@ -62,6 +62,7 @@ public class FalloutConfigJSON { entries.add(new FalloutEntry() .mB(Blocks.brown_mushroom_block).mM(10) .prim(new Triplet(ModBlocks.waste_log, 0, 1)) .max(woodEffectRange)); entries.add(new FalloutEntry() .mB(Blocks.red_mushroom_block) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); entries.add(new FalloutEntry() .mB(Blocks.brown_mushroom_block) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); + entries.add(new FalloutEntry() .mB(Blocks.snow_layer) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); entries.add(new FalloutEntry() .mB(Blocks.planks) .prim(new Triplet(ModBlocks.waste_planks, 0, 1)) .max(woodEffectRange)); /* if it can't be petrified, destroy it */ entries.add(new FalloutEntry() .mMa(Material.wood) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); @@ -72,6 +73,9 @@ public class FalloutConfigJSON { entries.add(new FalloutEntry() .mB(ModBlocks.waste_leaves) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange)); entries.add(new FalloutEntry() .mB(Blocks.leaves) .prim(new Triplet(ModBlocks.waste_leaves, 0, 1)) .min(woodEffectRange - 5D)); entries.add(new FalloutEntry() .mB(Blocks.leaves2) .prim(new Triplet(ModBlocks.waste_leaves, 0, 1)) .min(woodEffectRange - 5D)); + + entries.add(new FalloutEntry() .mB(ModBlocks.glyphid_base) .prim(new Triplet(ModBlocks.glyphid_base, 2, 1))); + entries.add(new FalloutEntry() .mB(ModBlocks.glyphid_spawner) .prim(new Triplet(ModBlocks.glyphid_spawner, 2, 1))); entries.add(new FalloutEntry().mB(Blocks.mossy_cobblestone).prim(new Triplet(Blocks.coal_ore, 0, 1))); entries.add(new FalloutEntry().mB(ModBlocks.ore_nether_uranium).prim(new Triplet(ModBlocks.ore_nether_schrabidium, 0, 1), new Triplet(ModBlocks.ore_nether_uranium_scorched, 0, 99))); diff --git a/src/main/java/com/hbm/config/GeneralConfig.java b/src/main/java/com/hbm/config/GeneralConfig.java index b46a16a23..916bd9e9c 100644 --- a/src/main/java/com/hbm/config/GeneralConfig.java +++ b/src/main/java/com/hbm/config/GeneralConfig.java @@ -5,7 +5,12 @@ import net.minecraftforge.common.config.Configuration; public class GeneralConfig { public static boolean enableThermosPreventer = true; - + + public static boolean enablePacketThreading = true; + public static int packetThreadingCoreCount = 1; + public static int packetThreadingMaxCount = 1; + public static boolean packetThreadingErrorBypass = false; + public static boolean enableDebugMode = true; public static boolean enableMycelium = false; public static boolean enablePlutoniumOre = false; @@ -40,7 +45,7 @@ public class GeneralConfig { public static int hintPos = 0; public static boolean enableExpensiveMode = false; - + public static boolean enable528 = false; public static boolean enable528ReasimBoilers = true; public static boolean enable528ColtanDeposit = true; @@ -49,6 +54,7 @@ public class GeneralConfig { public static boolean enable528BedrockSpawn = false; public static boolean enable528BosniaSimulator = true; public static boolean enable528BedrockReplacement = true; + public static boolean enable528NetherBurn = true; public static int coltanRate = 2; public static int bedrockRate = 50; @@ -67,11 +73,18 @@ public class GeneralConfig { public static boolean enableLBSMSafeMEDrives = true; public static boolean enableLBSMIGen = true; public static int schrabRate = 20; - + public static void loadFromConfig(Configuration config) { final String CATEGORY_GENERAL = CommonConfig.CATEGORY_GENERAL; enableThermosPreventer = config.get(CATEGORY_GENERAL, "0.00_crashOnThermos", true, "When set to true, will prevent the mod to launch on Thermos servers. Only disable this if you understand what \"tileentities.yml\" is, and how it severely cripples the mod.").getBoolean(true); + + enablePacketThreading = config.get(CATEGORY_GENERAL, "0.01_enablePacketThreading", true, "Enables creation of a separate thread to increase packet processing speed on servers. Disable this if you are having anomalous crashes related to memory connections.").getBoolean(true); + + packetThreadingCoreCount = config.get(CATEGORY_GENERAL, "0.02_packetThreadingCoreCount", 1, "Number of core threads to create for packets (recommended 1).").getInt(1); + packetThreadingMaxCount = config.get(CATEGORY_GENERAL, "0.03_packetThreadingMaxCount", 1, "Maximum number of threads to create for packet threading. Must be greater than or equal to 0.02_packetThreadingCoreCount.").getInt(1); + packetThreadingErrorBypass = config.get(CATEGORY_GENERAL, "0.04_packetThreadingErrorBypass", false, "Forces the bypassing of most packet threading errors, only enable this if directed to or if you know what you're doing.").getBoolean(false); + enableDebugMode = config.get(CATEGORY_GENERAL, "1.00_enableDebugMode", false, "Enable debugging mode").getBoolean(false); enableMycelium = config.get(CATEGORY_GENERAL, "1.01_enableMyceliumSpread", false, "Allows glowing mycelium to spread").getBoolean(false); enablePlutoniumOre = config.get(CATEGORY_GENERAL, "1.02_enablePlutoniumNetherOre", false, "Enables plutonium ore generation in the nether").getBoolean(false); @@ -111,14 +124,14 @@ public class GeneralConfig { "Note that a value below 28 or above 200 can cause buggy sounds and issues with other mods running out of sound memory.", 100); enableExpensiveMode = config.get(CATEGORY_GENERAL, "1.99_enableExpensiveMode", false, "It does what the name implies.").getBoolean(false); - + final String CATEGORY_528 = CommonConfig.CATEGORY_528; config.addCustomCategoryComment(CATEGORY_528, "CAUTION\n" + "528 Mode: Please proceed with caution!\n" + "528-Modus: Lassen Sie Vorsicht walten!\n" + "ÑпоÑоб-528: дейÑтвовать Ñ Ð¾ÑторожноÑтью!"); - + enable528 = CommonConfig.createConfigBool(config, CATEGORY_528, "enable528Mode", "The central toggle for 528 mode.", false); enable528ReasimBoilers = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_forceReasimBoilers", "Keeps the RBMK dial for ReaSim boilers on, preventing use of non-ReaSim boiler columns and forcing the use of steam in-/outlets", true); enable528ColtanDeposit = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enableColtanDepsoit", "Enables the coltan deposit. A large amount of coltan will spawn around a single random location in the world.", true); @@ -127,17 +140,18 @@ public class GeneralConfig { enable528BedrockSpawn = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enableBedrockSpawning", "Enables the bedrock coltan ores as a rare spawn. These will be rarely found anywhere in the world.", false); enable528BosniaSimulator = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enableBosniaSimulator", "Enables anti tank mines spawning all over the world.", true); enable528BedrockReplacement = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enable528BedrockReplacement", "Replaces certain bedrock ores with ones that require additional processing.", true); + enable528NetherBurn = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enable528NetherBurn", "Whether players burn in the nether", true); coltanRate = CommonConfig.createConfigInt(config, CATEGORY_528, "X528_oreColtanFrequency", "Determines how many coltan ore veins are to be expected in a chunk. These values do not affect the frequency in deposits, and only apply if random coltan spanwing is enabled.", 2); bedrockRate = CommonConfig.createConfigInt(config, CATEGORY_528, "X528_bedrockColtanFrequency", "Determines how often (1 in X) bedrock coltan ores spawn. Applies for both the bedrock ores in the coltan deposit (if applicable) and the random bedrock ores (if applicable)", 50); - - + + final String CATEGORY_LBSM = CommonConfig.CATEGORY_LBSM; config.addCustomCategoryComment(CATEGORY_LBSM, "Will most likely break standard progression!\n" + "However, the game gets generally easier and more enjoyable for casual players.\n" + "Progression-braking recipes are usually not too severe, so the mode is generally server-friendly!"); - + enableLBSM = CommonConfig.createConfigBool(config, CATEGORY_LBSM, "enableLessBullshitMode", "The central toggle for LBS mode. Forced OFF when 528 is enabled!", false); enableLBSMFullSchrab = CommonConfig.createConfigBool(config, CATEGORY_LBSM, "LBSM_fullSchrab", "When enabled, this will replace schraranium with full schrabidium ingots in the transmutator's output", true); enableLBSMShorterDecay = CommonConfig.createConfigBool(config, CATEGORY_LBSM, "LBSM_shortDecay", "When enabled, this will highly accelerate the speed at which nuclear waste disposal drums decay their contents. 60x faster than 528 mode and 5-12x faster than on normal mode.", true); @@ -153,7 +167,7 @@ public class GeneralConfig { enableLBSMSafeMEDrives = CommonConfig.createConfigBool(config, CATEGORY_LBSM, "LBSM_safeMEDrives", "When enabled, prevents ME Drives and Portable Cells from becoming radioactive", true); enableLBSMIGen = CommonConfig.createConfigBool(config, CATEGORY_LBSM, "LBSM_iGen", "When enabled, restores the industrial generator to pre-nerf power", true); schrabRate = CommonConfig.createConfigInt(config, CATEGORY_LBSM, "LBSM_schrabOreRate", "Changes the amount of uranium ore needed on average to create one schrabidium ore using nukes. Standard mode value is 100", 20); - + if(enable528) enableLBSM = false; } } diff --git a/src/main/java/com/hbm/config/MachineDynConfig.java b/src/main/java/com/hbm/config/MachineDynConfig.java index f88432905..beda03517 100644 --- a/src/main/java/com/hbm/config/MachineDynConfig.java +++ b/src/main/java/com/hbm/config/MachineDynConfig.java @@ -10,6 +10,7 @@ import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import com.hbm.interfaces.NotableComments; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.TileMappings; @@ -20,6 +21,7 @@ import com.hbm.tileentity.TileMappings; * tile entities from the registry automatically and generate config options. * @author hbm */ +@NotableComments public class MachineDynConfig { public static final Gson gson = new Gson(); diff --git a/src/main/java/com/hbm/config/MobConfig.java b/src/main/java/com/hbm/config/MobConfig.java index 171f56935..4828ae781 100644 --- a/src/main/java/com/hbm/config/MobConfig.java +++ b/src/main/java/com/hbm/config/MobConfig.java @@ -27,6 +27,7 @@ public class MobConfig { public static boolean enableDucks = true; public static boolean enableMobGear = true; + public static boolean enableMobWeapons = true; public static boolean enableHives = true; public static int hiveSpawn = 256; @@ -94,6 +95,7 @@ public class MobConfig { enableDucks = CommonConfig.createConfigBool(config, CATEGORY, "12.D00_enableDucks", "Whether pressing O should allow the player to duck", true); enableMobGear = CommonConfig.createConfigBool(config, CATEGORY, "12.D01_enableMobGear", "Whether zombies and skeletons should have additional gear when spawning", true); + enableMobWeapons = CommonConfig.createConfigBool(config, CATEGORY, "12.D02_enableMobWeapons", "Whether skeletons should have bows replaced with guns when spawning at higher soot levels", true); enableHives = CommonConfig.createConfigBool(config, CATEGORY, "12.G00_enableHives", "Whether glyphid hives should spawn", true); hiveSpawn = CommonConfig.createConfigInt(config, CATEGORY, "12.G01_hiveSpawn", "The average amount of chunks per hive", 256); diff --git a/src/main/java/com/hbm/config/WorldConfig.java b/src/main/java/com/hbm/config/WorldConfig.java index c69d5b6f4..fbf08bc63 100644 --- a/src/main/java/com/hbm/config/WorldConfig.java +++ b/src/main/java/com/hbm/config/WorldConfig.java @@ -24,7 +24,6 @@ public class WorldConfig { public static int rareSpawn = 6; public static int lithiumSpawn = 6; public static int cinnebarSpawn = 1; - public static int oilcoalSpawn = 128; public static int gassshaleSpawn = 5; public static int gasbubbleSpawn = 12; public static int explosivebubbleSpawn = 0; @@ -63,7 +62,6 @@ public class WorldConfig { public static int copperClusterSpawn = 4; public static int alexandriteSpawn = 100; - public static int malachiteSpawn = 1; public static int limestoneSpawn = 1; public static int netherUraniumuSpawn = 8; @@ -76,9 +74,6 @@ public class WorldConfig { public static int endTikiteSpawn = 8; - public static boolean enableRandom = false; - public static int randomSpawn = 0; - public static int radioStructure = 500; public static int antennaStructure = 250; public static int atomStructure = 500; @@ -144,7 +139,6 @@ public class WorldConfig { asbestosSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.12_asbestosSpawnRate", "Amount of asbestos ore veins per chunk", 2); lithiumSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.13_lithiumSpawnRate", "Amount of schist lithium ore veins per chunk", 6); rareSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.14_rareEarthSpawnRate", "Amount of rare earth ore veins per chunk", 6); - oilcoalSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.15_oilCoalSpawnRate", "Spawns an oily coal vein every nTH chunk", 128); gassshaleSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.16_gasShaleSpawnRate", "Amount of oil shale veins per chunk", 5); gasbubbleSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.17_gasBubbleSpawnRate", "Spawns a gas bubble every nTH chunk", 12); cinnebarSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.18_cinnebarSpawnRate", "Amount of cinnebar ore veins per chunk", 1); @@ -185,7 +179,6 @@ public class WorldConfig { aluminiumClusterSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.C02_aluminiumClusterSpawn", "Amount of aluminium cluster veins per chunk", 3); copperClusterSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.C03_copperClusterSpawn", "Amount of copper cluster veins per chunk", 4); - malachiteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.L01_malachiteSpawn", "Amount of malachite block veins per chunk", 1); limestoneSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.L02_limestoneSpawn", "Amount of limestone block veins per chunk", 1); netherUraniumuSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.N00_uraniumSpawnrate", "Amount of nether uranium per chunk", 8); @@ -198,9 +191,6 @@ public class WorldConfig { endTikiteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.E00_tikiteSpawnrate", "Amount of end trixite per chunk", 8); - enableRandom = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.R00_enableRandomOre", "Amount of random ore per chunk", false); - randomSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.R01_randomOreSpawnrate", "Amount of random ore per chunk", 0); - final String CATEGORY_DUNGEON = CommonConfig.CATEGORY_DUNGEONS; radioStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.00_radioSpawn", "Spawn radio station on every nTH chunk", 500); antennaStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.01_antennaSpawn", "Spawn antenna on every nTH chunk", 250); diff --git a/src/main/java/com/hbm/crafting/ConsumableRecipes.java b/src/main/java/com/hbm/crafting/ConsumableRecipes.java index 6f0d2e9d8..6cd44bb5b 100644 --- a/src/main/java/com/hbm/crafting/ConsumableRecipes.java +++ b/src/main/java/com/hbm/crafting/ConsumableRecipes.java @@ -4,8 +4,8 @@ import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.fluid.Fluids; -import com.hbm.items.ItemAmmoEnums.AmmoFatman; import com.hbm.items.machine.ItemCircuit.EnumCircuitType; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.items.ItemEnums; import com.hbm.items.ModItems; import com.hbm.main.CraftingManager; @@ -31,7 +31,7 @@ public class ConsumableRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.bomb_caller, 1, 1), new Object[] { "TTT", "TRT", "TTT", 'T', ModItems.grenade_gascan, 'R', ModItems.detonator_laser }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.bomb_caller, 1, 2), new Object[] { "TTT", "TRT", "TTT", 'T', ModItems.pellet_gas, 'R', ModItems.detonator_laser }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.bomb_caller, 1, 3), new Object[] { "TRT", 'T', ModItems.grenade_cloud, 'R', ModItems.detonator_laser }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.bomb_caller, 1, 4), new Object[] { "TR", 'T', ModItems.ammo_nuke.stackFromEnum(AmmoFatman.HIGH), 'R', ModItems.detonator_laser }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.bomb_caller, 1, 4), new Object[] { "TR", 'T', DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_HIGH), 'R', ModItems.detonator_laser }); //Food CraftingManager.addRecipeAuto(new ItemStack(ModItems.bomb_waffle, 1), new Object[] { "WEW", "MPM", "WEW", 'W', Items.wheat, 'E', Items.egg, 'M', Items.milk_bucket, 'P', ModItems.man_core }); @@ -165,8 +165,8 @@ public class ConsumableRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_era, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.ducttape, 'P', IRON.plate(), 'S', ModItems.ingot_semtex }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_kevlar, 1), new Object[] { "KIK", "IDI", "KIK", 'K', ModItems.plate_kevlar, 'I', ANY_RUBBER.ingot(), 'D', ModItems.ducttape }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_sapi, 1), new Object[] { "PKP", "DPD", "PKP", 'P', ANY_PLASTIC.ingot(), 'K', ModItems.insert_kevlar, 'D', ModItems.ducttape }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_esapi, 1), new Object[] { "PKP", "DSD", "PKP", 'P', ANY_PLASTIC.ingot(), 'K', ModItems.insert_sapi, 'D', ModItems.ducttape, 'S', BIGMT.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_xsapi, 1), new Object[] { "PKP", "DSD", "PKP", 'P', ASBESTOS.ingot(), 'K', ModItems.insert_esapi, 'D', ModItems.ducttape, 'S', ModItems.ingot_meteorite_forged }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_esapi, 1), new Object[] { "PKP", "DSD", "PKP", 'P', ANY_PLASTIC.ingot(), 'K', ModItems.insert_sapi, 'D', ModItems.ducttape, 'S', WEAPONSTEEL.plate() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_xsapi, 1), new Object[] { "PKP", "DSD", "PKP", 'P', ASBESTOS.ingot(), 'K', ModItems.insert_esapi, 'D', ModItems.ducttape, 'S', BIGMT.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.insert_yharonite, 1), new Object[] { "YIY", "IYI", "YIY", 'Y', ModItems.billet_yharonite, 'I', ModItems.insert_du }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.australium_iii, 1), new Object[] { "WSW", "PAP", "SPS", 'S', STEEL.plateWelded(), 'P', ANY_PLASTIC.ingot(), 'A', AUSTRALIUM.ingot(), 'W', GOLD.wireDense() }); @@ -183,6 +183,11 @@ public class ConsumableRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.pads_slime, 1), new Object[] { "SPS", "DSD", "SPS", 'S', KEY_SLIME, 'P', ModItems.pads_rubber, 'D', ModItems.ducttape }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.pads_static, 1), new Object[] { "CDC", "ISI", "CDC", 'C', CU.ingot(), 'D', ModItems.ducttape, 'I', ANY_RUBBER.ingot(), 'S', ModItems.pads_slime }); + //Batteries + CraftingManager.addRecipeAuto(new ItemStack(ModItems.armor_battery, 1), new Object[] { "PCP", "PCP", "PCP", 'P', STEEL.plate(), 'C', ModBlocks.capacitor_gold }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.armor_battery_mk2, 1), new Object[] { "PCP", "PCP", "PCP", 'P', ANY_PLASTIC.ingot(), 'C', ModBlocks.capacitor_niobium }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.armor_battery_mk3, 1), new Object[] { "PCP", "PCP", "PCP", 'P', GOLD.plate(), 'C', ModBlocks.capacitor_tantalium }); + //Special Mods CraftingManager.addRecipeAuto(new ItemStack(ModItems.horseshoe_magnet, 1), new Object[] { "L L", "I I", "ILI", 'L', ModItems.lodestone, 'I', IRON.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.industrial_magnet, 1), new Object[] { "SMS", " B ", "SMS", 'S', STEEL.ingot(), 'M', ModItems.horseshoe_magnet, 'B', ModBlocks.fusion_conductor }); diff --git a/src/main/java/com/hbm/crafting/MineralRecipes.java b/src/main/java/com/hbm/crafting/MineralRecipes.java index db125cf8c..6ab5ea10b 100644 --- a/src/main/java/com/hbm/crafting/MineralRecipes.java +++ b/src/main/java/com/hbm/crafting/MineralRecipes.java @@ -2,6 +2,7 @@ package com.hbm.crafting; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.BlockEnums.EnumStoneType; +import com.hbm.inventory.material.MaterialShapes; import com.hbm.items.ItemEnums.EnumCokeType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemRTGPelletDepleted.DepletedRTGMaterial; @@ -106,31 +107,31 @@ public class MineralRecipes { addBillet(ModItems.billet_cobalt, ModItems.ingot_cobalt, ModItems.nugget_cobalt); addBillet(ModItems.billet_co60, ModItems.ingot_co60, ModItems.nugget_co60); - addBillet(ModItems.billet_sr90, ModItems.ingot_sr90, ModItems.nugget_sr90, SR90.allNuggets()); - addBillet(ModItems.billet_uranium, ModItems.ingot_uranium, ModItems.nugget_uranium, U.allNuggets()); - addBillet(ModItems.billet_u233, ModItems.ingot_u233, ModItems.nugget_u233, U233.allNuggets()); - addBillet(ModItems.billet_u235, ModItems.ingot_u235, ModItems.nugget_u235, U235.allNuggets()); - addBillet(ModItems.billet_u238, ModItems.ingot_u238, ModItems.nugget_u238, U238.allNuggets()); - addBillet(ModItems.billet_th232, ModItems.ingot_th232, ModItems.nugget_th232, TH232.allNuggets()); - addBillet(ModItems.billet_plutonium, ModItems.ingot_plutonium, ModItems.nugget_plutonium, PU.allNuggets()); - addBillet(ModItems.billet_pu238, ModItems.ingot_pu238, ModItems.nugget_pu238, PU238.allNuggets()); - addBillet(ModItems.billet_pu239, ModItems.ingot_pu239, ModItems.nugget_pu239, PU239.allNuggets()); - addBillet(ModItems.billet_pu240, ModItems.ingot_pu240, ModItems.nugget_pu240, PU240.allNuggets()); - addBillet(ModItems.billet_pu241, ModItems.ingot_pu241, ModItems.nugget_pu241, PU241.allNuggets()); + addBillet(ModItems.billet_sr90, ModItems.ingot_sr90, ModItems.nugget_sr90, SR90.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_uranium, ModItems.ingot_uranium, ModItems.nugget_uranium, U.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_u233, ModItems.ingot_u233, ModItems.nugget_u233, U233.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_u235, ModItems.ingot_u235, ModItems.nugget_u235, U235.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_u238, ModItems.ingot_u238, ModItems.nugget_u238, U238.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_th232, ModItems.ingot_th232, ModItems.nugget_th232, TH232.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_plutonium, ModItems.ingot_plutonium, ModItems.nugget_plutonium, PU.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_pu238, ModItems.ingot_pu238, ModItems.nugget_pu238, PU238.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_pu239, ModItems.ingot_pu239, ModItems.nugget_pu239, PU239.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_pu240, ModItems.ingot_pu240, ModItems.nugget_pu240, PU240.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_pu241, ModItems.ingot_pu241, ModItems.nugget_pu241, PU241.all(MaterialShapes.NUGGET)); addBillet(ModItems.billet_pu_mix, ModItems.ingot_pu_mix, ModItems.nugget_pu_mix); - addBillet(ModItems.billet_am241, ModItems.ingot_am241, ModItems.nugget_am241, AM241.allNuggets()); - addBillet(ModItems.billet_am242, ModItems.ingot_am242, ModItems.nugget_am242, AM242.allNuggets()); + addBillet(ModItems.billet_am241, ModItems.ingot_am241, ModItems.nugget_am241, AM241.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_am242, ModItems.ingot_am242, ModItems.nugget_am242, AM242.all(MaterialShapes.NUGGET)); addBillet(ModItems.billet_am_mix, ModItems.ingot_am_mix, ModItems.nugget_am_mix); - addBillet(ModItems.billet_neptunium, ModItems.ingot_neptunium, ModItems.nugget_neptunium, NP237.allNuggets()); - addBillet(ModItems.billet_polonium, ModItems.ingot_polonium, ModItems.nugget_polonium, PO210.allNuggets()); - addBillet(ModItems.billet_technetium, ModItems.ingot_technetium, ModItems.nugget_technetium, TC99.allNuggets()); - addBillet(ModItems.billet_au198, ModItems.ingot_au198, ModItems.nugget_au198, AU198.allNuggets()); - addBillet(ModItems.billet_pb209, ModItems.ingot_pb209, ModItems.nugget_pb209, PB209.allNuggets()); //and so forth - addBillet(ModItems.billet_ra226, ModItems.ingot_ra226, ModItems.nugget_ra226, RA226.allNuggets()); - addBillet(ModItems.billet_actinium, ModItems.ingot_actinium, ModItems.nugget_actinium, AC227.allNuggets()); + addBillet(ModItems.billet_neptunium, ModItems.ingot_neptunium, ModItems.nugget_neptunium, NP237.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_polonium, ModItems.ingot_polonium, ModItems.nugget_polonium, PO210.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_technetium, ModItems.ingot_technetium, ModItems.nugget_technetium, TC99.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_au198, ModItems.ingot_au198, ModItems.nugget_au198, AU198.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_pb209, ModItems.ingot_pb209, ModItems.nugget_pb209, PB209.all(MaterialShapes.NUGGET)); //and so forth + addBillet(ModItems.billet_ra226, ModItems.ingot_ra226, ModItems.nugget_ra226, RA226.all(MaterialShapes.NUGGET)); + addBillet(ModItems.billet_actinium, ModItems.ingot_actinium, ModItems.nugget_actinium, AC227.all(MaterialShapes.NUGGET)); addBillet(ModItems.billet_schrabidium, ModItems.ingot_schrabidium, ModItems.nugget_schrabidium, SA326.nugget()); addBillet(ModItems.billet_solinium, ModItems.ingot_solinium, ModItems.nugget_solinium, SA327.nugget()); - addBillet(ModItems.billet_gh336, ModItems.ingot_gh336, ModItems.nugget_gh336, GH336.allNuggets()); + addBillet(ModItems.billet_gh336, ModItems.ingot_gh336, ModItems.nugget_gh336, GH336.all(MaterialShapes.NUGGET)); addBillet(ModItems.billet_uranium_fuel, ModItems.ingot_uranium_fuel, ModItems.nugget_uranium_fuel); addBillet(ModItems.billet_thorium_fuel, ModItems.ingot_thorium_fuel, ModItems.nugget_thorium_fuel); addBillet(ModItems.billet_plutonium_fuel, ModItems.ingot_plutonium_fuel, ModItems.nugget_plutonium_fuel); diff --git a/src/main/java/com/hbm/crafting/SmeltingRecipes.java b/src/main/java/com/hbm/crafting/SmeltingRecipes.java index 8de9de124..18276a4ee 100644 --- a/src/main/java/com/hbm/crafting/SmeltingRecipes.java +++ b/src/main/java/com/hbm/crafting/SmeltingRecipes.java @@ -164,12 +164,6 @@ public class SmeltingRecipes { GameRegistry.addSmelting(ModItems.crystal_cinnebar, new ItemStack(ModItems.cinnebar, 4), 2.0F); GameRegistry.addSmelting(ModItems.crystal_osmiridium, new ItemStack(ModItems.ingot_osmiridium, 1), 2.0F); - GameRegistry.addSmelting(ModItems.casing_357, new ItemStack(ModItems.ingot_copper), 0.1F); - GameRegistry.addSmelting(ModItems.casing_44, new ItemStack(ModItems.ingot_copper), 0.1F); - GameRegistry.addSmelting(ModItems.casing_9, new ItemStack(ModItems.ingot_copper), 0.1F); - GameRegistry.addSmelting(ModItems.casing_50, new ItemStack(ModItems.ingot_copper), 0.1F); - GameRegistry.addSmelting(ModItems.casing_buckshot, new ItemStack(ModItems.ingot_copper), 0.1F); - GameRegistry.addSmelting(ModItems.ingot_chainsteel, ItemHot.heatUp(new ItemStack(ModItems.ingot_chainsteel)), 0.0F); GameRegistry.addSmelting(ModItems.ingot_meteorite, ItemHot.heatUp(new ItemStack(ModItems.ingot_meteorite)), 0.0F); GameRegistry.addSmelting(ModItems.ingot_meteorite_forged, ItemHot.heatUp(new ItemStack(ModItems.ingot_meteorite_forged)), 0.0F); diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index d190636e0..113b4c80a 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -137,6 +137,7 @@ public class ToolRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.bismuth_tool, 1), new Object[] { "TBT", "SRS", "SCS", 'T', TA.nugget(), 'B', ModItems.nugget_bismuth, 'S', ANY_RESISTANTALLOY.ingot(), 'R', ModItems.reacher, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP) }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.sat_designator, 1), new Object[] { "RRD", "PIC", " P", 'P', GOLD.plate(), 'R', Items.redstone, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'D', ModItems.sat_chip, 'I', GOLD.ingot() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.sat_relay), new Object[] { ModItems.sat_chip, ModItems.ducttape, ModItems.radar_linker }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.settings_tool), new Object[] { " P ", "PCP", "III", 'P', IRON.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG), 'I', ModItems.plate_polymer }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.pipette, 1), new Object[] { " L", " G ", "G ", 'L', ANY_RUBBER.ingot(), 'G', KEY_CLEARGLASS}); CraftingManager.addRecipeAuto(new ItemStack(ModItems.pipette_boron, 1), new Object[] { " P", " B ", "B ", 'P', RUBBER.ingot(), 'B', ModBlocks.glass_boron}); diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 665afe7f6..49777c12d 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -2,16 +2,20 @@ package com.hbm.crafting; import com.hbm.blocks.ModBlocks; import com.hbm.inventory.OreDictManager; -import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.material.Mats; import static com.hbm.inventory.OreDictManager.*; import com.hbm.items.ItemAmmoEnums.*; -import com.hbm.items.food.ItemConserve.EnumFoodType; +import com.hbm.items.ItemEnums.EnumCasingType; +import com.hbm.items.ItemEnums.EnumSecretType; import com.hbm.items.machine.ItemCircuit.EnumCircuitType; import com.hbm.items.ModItems; import com.hbm.items.weapon.GunB92Cell; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; import com.hbm.main.CraftingManager; import net.minecraft.init.Blocks; @@ -26,10 +30,87 @@ import net.minecraft.item.ItemStack; public class WeaponRecipes { public static void register() { + + //SEDNA Parts + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_stock, 1, Mats.MAT_WOOD.id), new Object[] { "WWW", " W", 'W', KEY_PLANKS }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_WOOD.id), new Object[] { "W ", " W", " W", 'W', KEY_PLANKS }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_stock, 1, Mats.MAT_POLYMER.id), new Object[] { "WWW", " W", 'W', POLYMER.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_POLYMER.id), new Object[] { "W ", " W", " W", 'W', POLYMER.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_stock, 1, Mats.MAT_BAKELITE.id), new Object[] { "WWW", " W", 'W', BAKELITE.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_BAKELITE.id), new Object[] { "W ", " W", " W", 'W', BAKELITE.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_stock, 1, Mats.MAT_HARDPLASTIC.id), new Object[] { "WWW", " W", 'W', PC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_HARDPLASTIC.id), new Object[] { "W ", " W", " W", 'W', PC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_stock, 1, Mats.MAT_PVC.id), new Object[] { "WWW", " W", 'W', PVC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_PVC.id), new Object[] { "W ", " W", " W", 'W', PVC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_RUBBER.id), new Object[] { "W ", " W", " W", 'W', RUBBER.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_IVORY.id), new Object[] { "W ", " W", " W", 'W', Items.bone }); + + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.casing, EnumCasingType.SHOTSHELL, 2), new Object[] { "P", "C", 'P', GUNMETAL.plate(), 'C', DictFrame.fromOne(ModItems.casing, EnumCasingType.LARGE) }); + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.casing, EnumCasingType.BUCKSHOT, 2), new Object[] { "P", "C", 'P', ANY_PLASTIC.ingot(), 'C', DictFrame.fromOne(ModItems.casing, EnumCasingType.LARGE) }); + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.casing, EnumCasingType.BUCKSHOT_ADVANCED, 2), new Object[] { "P", "C", 'P', ANY_PLASTIC.ingot(), 'C', DictFrame.fromOne(ModItems.casing, EnumCasingType.LARGE_STEEL) }); + + //SEDNA Guns + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_pepperbox, 1), new Object[] { "IIW", " C", 'I', IRON.ingot(), 'W', KEY_PLANKS, 'C', CU.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_light_revolver, 1), new Object[] { "BRM", " G", 'B', STEEL.lightBarrel(), 'R', STEEL.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_light_revolver_atlas, 1), new Object[] { " M ", "MAM", " M ", 'M', WEAPONSTEEL.mechanism(), 'A', ModItems.gun_light_revolver }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_henry, 1), new Object[] { "BRP", "BMS", 'B', STEEL.lightBarrel(), 'R', GUNMETAL.lightReceiver(), 'M', GUNMETAL.mechanism(), 'S', WOOD.stock(), 'P', GUNMETAL.plate() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_greasegun, 1), new Object[] { "BRS", "SMG", 'B', STEEL.lightBarrel(), 'R', STEEL.lightReceiver(), 'S', STEEL.bolt(), 'M', GUNMETAL.mechanism(), 'G', STEEL.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_maresleg, 1), new Object[] { "BRM", "BGS", 'B', STEEL.lightBarrel(), 'R', STEEL.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', STEEL.bolt(), 'S', WOOD.stock() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_maresleg_akimbo, 1), new Object[] { "SMS", 'S', ModItems.gun_maresleg, 'M', WEAPONSTEEL.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flaregun, 1), new Object[] { "BRM", " G", 'B', STEEL.heavyBarrel(), 'R', STEEL.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', STEEL.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_am180, 1), new Object[] { "BBR", "GMS", 'B', DURA.lightBarrel(), 'R', DURA.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip(), 'S', WOOD.stock() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_liberator, 1), new Object[] { "BB ", "BBM", "G G", 'B', DURA.lightBarrel(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_congolake, 1), new Object[] { "BM ", "BRS", "G ", 'B', DURA.heavyBarrel(), 'M', GUNMETAL.mechanism(), 'R', DURA.lightReceiver(), 'S', WOOD.stock(), 'G', WOOD.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flamer, 1), new Object[] { " MG", "BBR", " GM", 'M', GUNMETAL.mechanism(), 'G', DURA.grip(), 'B', DURA.heavyBarrel(), 'R', DURA.heavyReceiver() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flamer_topaz, 1), new Object[] { " M ", "MFM", " M ", 'M', WEAPONSTEEL.mechanism(), 'F', ModItems.gun_flamer }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_heavy_revolver, 1), new Object[] { "BRM", " G", 'B', DESH.lightBarrel(), 'R', DESH.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_carbine, 1), new Object[] { "BRM", "G S", 'B', DESH.lightBarrel(), 'R',DESH.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip(), 'S', WOOD.stock() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi, 1), new Object[] { "BRS", " GM", 'B', DESH.lightBarrel(), 'R', DESH.lightReceiver(), 'S', ANY_PLASTIC.stock(), 'G', ANY_PLASTIC.grip(), 'M', GUNMETAL.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_akimbo, 1), new Object[] { "UMU", 'U', ModItems.gun_uzi, 'M', WEAPONSTEEL.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_spas12, 1), new Object[] { "BRM", "BGS", 'B', DESH.lightBarrel(), 'R', DESH.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', ANY_PLASTIC.grip(), 'S', DESH.stock() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_panzerschreck, 1), new Object[] { "BBB", "PGM", 'B', DESH.heavyBarrel(), 'P', STEEL.plateCast(), 'G', DESH.grip(), 'M', GUNMETAL.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_g3, 1), new Object[] { "BRM", "WGS", 'B', WEAPONSTEEL.lightBarrel(), 'R', WEAPONSTEEL.lightReceiver(), 'M', WEAPONSTEEL.mechanism(), 'W', WOOD.grip(), 'G', RUBBER.grip(), 'S', WOOD.stock() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_stinger, 1), new Object[] { "BBB", "PGM", 'B', WEAPONSTEEL.heavyBarrel(), 'P', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'G', WEAPONSTEEL.grip(), 'M', WEAPONSTEEL.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_chemthrower, 1), new Object[] { "MHW", "PSS", 'M', WEAPONSTEEL.mechanism(), 'H', RUBBER.pipe(), 'W', ModItems.wrench, 'P', WEAPONSTEEL.heavyBarrel(), 'S', WEAPONSTEEL.shell() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_m2, 1), new Object[] { " G", "BRM", " G", 'G', WOOD.grip(), 'B', FERRO.heavyBarrel(), 'R', FERRO.heavyReceiver(), 'M', WEAPONSTEEL.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_autoshotgun, 1), new Object[] { "BRM", "G G", 'B', FERRO.heavyBarrel(), 'R', FERRO.heavyReceiver(), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_autoshotgun_shredder, 1), new Object[] { " M ", "MAM", " M ", 'M', BIGMT.mechanism(), 'A', ModItems.gun_autoshotgun }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_quadro, 1), new Object[] { "BCB", "BMB", "GG ", 'B', FERRO.heavyBarrel(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lag, 1), new Object[] { "BRM", " G", 'B', ANY_RESISTANTALLOY.lightBarrel(), 'R', ANY_RESISTANTALLOY.lightReceiver(), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_minigun, 1), new Object[] { "BMG", "BRE", "BGM", 'B', ANY_RESISTANTALLOY.lightBarrel(), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip(), 'R', ANY_RESISTANTALLOY.heavyReceiver(), 'E', ModItems.motor_desh }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_missile_launcher, 1), new Object[] { " CM", "BBB", "G ", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', WEAPONSTEEL.mechanism(), 'B', ANY_RESISTANTALLOY.heavyBarrel(), 'G', ANY_PLASTIC.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_tesla_cannon, 1), new Object[] { "CCC", "BRB", "MGE", 'C', ModItems.coil_advanced_alloy, 'B', ANY_RESISTANTALLOY.heavyBarrel(), 'R', ANY_RESISTANTALLOY.heavyReceiver(), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip(), 'E', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_stg77, 1), new Object[] { " D ", "BRS", "GM ", 'D', DIAMOND.gem(), 'B', BIGMT.lightBarrel(), 'R', BIGMT.lightReceiver(), 'S', ANY_HARDPLASTIC.stock(), 'G', ANY_HARDPLASTIC.grip(), 'M', BIGMT.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_fatman, 1), new Object[] { "PPP", "BSR", "G M", 'P', BIGMT.plate(), 'B', BIGMT.heavyBarrel(), 'S', BIGMT.shell(), 'R', BIGMT.heavyReceiver(), 'G', ANY_HARDPLASTIC.grip(), 'M', BIGMT.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_tau, 1), new Object[] { " RD", "CTT", "GMS", 'D', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID), 'C', CU.pipe(), 'T', ModItems.coil_advanced_torus, 'G', ANY_HARDPLASTIC.grip(), 'R', BIGMT.lightReceiver(), 'M', BIGMT.mechanism(), 'S', ANY_HARDPLASTIC.stock() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lasrifle, 1), new Object[] { "LC ", "BRS", "MG ", 'L', ModItems.crystal_redstone, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID), 'B', ANY_BISMOIDBRONZE.lightBarrel(), 'R', ANY_BISMOIDBRONZE.lightReceiver(), 'S', ANY_HARDPLASTIC.stock(), 'M', BIGMT.mechanism(), 'G', ANY_HARDPLASTIC.grip() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.gun_double_barrel_sacred_dragon, 1), new Object[] { ModItems.gun_double_barrel, DictFrame.fromOne(ModItems.item_secret, EnumSecretType.SELENIUM_STEEL) }); + + //SEDNA Ammo + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.STONE, 6), new Object[] { "C", "P", "G", 'C', KEY_COBBLESTONE, 'P', Items.paper, 'G', Items.gunpowder }); + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.STONE_AP, 6), new Object[] { "C", "P", "G", 'C', Items.flint, 'P', Items.paper, 'G', Items.gunpowder }); + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.STONE_SHOT, 6), new Object[] { "C", "P", "G", 'C', Blocks.gravel, 'P', Items.paper, 'G', Items.gunpowder }); + CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.STONE_IRON, 6), new Object[] { "C", "P", "G", 'C', IRON.ingot(), 'P', Items.paper, 'G', Items.gunpowder }); + + //Nitra! + CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M357_SP, 6), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M357_SP), ModItems.nitra }); + CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M44_SP, 6), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M44_SP), ModItems.nitra }); + CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.P9_SP, 12), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.P9_SP), ModItems.nitra }); + CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.P22_SP, 32), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.P22_SP), ModItems.nitra }); + CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.R556_SP, 8), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.R556_SP), ModItems.nitra }); + CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.R762_SP, 6), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.R762_SP), ModItems.nitra }); + CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.BMG50_SP, 4), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.BMG50_SP), ModItems.nitra }); + CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_HE, 3), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_HE), ModItems.nitra }); + CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_HE, 2), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_HE), ModItems.nitra }); + + //secrets! + CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_secret, EnumAmmoSecret.M44_EQUESTRIAN, 6), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M44_JHP), DictFrame.fromOne(ModItems.item_secret, EnumSecretType.SELENIUM_STEEL) }); + CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_secret, EnumAmmoSecret.G12_EQUESTRIAN, 6), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G12), DictFrame.fromOne(ModItems.item_secret, EnumSecretType.SELENIUM_STEEL) }); + CraftingManager.addShapelessAuto(DictFrame.fromOne(ModItems.ammo_secret, EnumAmmoSecret.BMG50_EQUESTRIAN, 6), new Object[] { DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.BMG50_FMJ), DictFrame.fromOne(ModItems.item_secret, EnumSecretType.SELENIUM_STEEL) }); //Missiles CraftingManager.addShapelessAuto(new ItemStack(ModItems.missile_taint, 1), new Object[] { ModItems.missile_assembly, ModItems.bucket_mud, ModItems.powder_spark_mix, ModItems.powder_magic }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.missile_micro, 1), new Object[] { ModItems.missile_assembly, ModItems.ducttape, ModItems.ammo_nuke.stackFromEnum(AmmoFatman.HIGH) }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.missile_micro, 1), new Object[] { ModItems.missile_assembly, ModItems.ducttape, DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_HIGH) }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.missile_bhole, 1), new Object[] { ModItems.missile_assembly, ModItems.ducttape, ModItems.grenade_black_hole }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.missile_schrabidium, 1), new Object[] { ModItems.missile_assembly, ModItems.ducttape, ModItems.cell_anti_schrabidium, ANY_HARDPLASTIC.ingot() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.missile_emp, 1), new Object[] { ModItems.missile_assembly, ModItems.ducttape, ModBlocks.emp_bomb }); @@ -70,200 +151,16 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.turret_sentry, 1), new Object[] { "PPL", " MD", " SC", 'P', STEEL.plate(), 'M', ModItems.motor, 'L', ModItems.mechanism_rifle_1, 'S', ModBlocks.steel_scaffold, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'D', ModItems.crt_display }); //Guns - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_rpg, 1), new Object[] { "SSW", " MW", 'S', STEEL.shell(), 'W', IRON.plate(), 'M', ModItems.mechanism_launcher_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_panzerschreck, 1), new Object[] { "SSS", " MW", 'S', STEEL.shell(), 'W', CU.plate(), 'M', ModItems.mechanism_launcher_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_karl, 1), new Object[] { "SSW", " MW", 'S', STEEL.shell(), 'W', ALLOY.plate(), 'M', ModItems.mechanism_launcher_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_quadro, 1), new Object[] { "SSS", "SSS", "CM ", 'S', STEEL.pipe(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'M', ModItems.mechanism_launcher_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_hk69, 1), new Object[] { "SSI", " MB", 'S', STEEL.shell(), 'I', IRON.ingot(), 'M', ModItems.mechanism_launcher_1, 'B', STEEL.bolt() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_congolake, 1), new Object[] { "HHR", "WLW", 'H', AL.shell(), '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', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', ModItems.mechanism_launcher_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver, 1), new Object[] { "SSM", " RW", 'S', STEEL.plate(), 'W', KEY_PLANKS, 'R', AL.wireFine(), 'M', ModItems.mechanism_revolver_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_saturnite, 1), new Object[] { "SSM", " RW", 'S', BIGMT.plate(), 'W', KEY_PLANKS, 'R', W.wireFine(), 'M', ModItems.mechanism_revolver_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_gold, 1), new Object[] { "SSM", " RW", 'S', GOLD.plate(), 'W', W.ingot(), 'R', GOLD.wireFine(), 'M', ModItems.mechanism_revolver_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_schrabidium, 1), new Object[] { "SSM", " RW", 'S', SA326.block(), 'W', W.ingot(), 'R', SA326.wireFine(), 'M', ModItems.mechanism_special }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_pip, 1), new Object[] { " G ", "SSP", " TI", 'G', KEY_ANYPANE, 'S', STEEL.plate(), 'P', ModItems.mechanism_revolver_2, 'T', W.wireFine(), 'I', ANY_PLASTIC.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_nopip, 1), new Object[] { "SSP", " TI", 'S', STEEL.plate(), 'P', ModItems.mechanism_revolver_2, 'T', W.wireFine(), 'I', ANY_PLASTIC.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_blackjack, 1), new Object[] { "SSP", " TI", 'S', STEEL.plate(), 'P', ModItems.mechanism_revolver_2, 'T', W.wireFine(), 'I', KEY_PLANKS }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_silver, 1), new Object[] { "SSP", " TI", 'S', AL.plate(), 'P', ModItems.mechanism_revolver_2, 'T', W.wireFine(), 'I', KEY_PLANKS }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_red, 1), new Object[] { "R ", " B", 'R', ModItems.key_red, 'B', ModItems.gun_revolver_blackjack }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_deagle, 1), new Object[] { "PPM", " BI", 'P', STEEL.plate(), 'B', STEEL.bolt(), 'I', ANY_PLASTIC.ingot(), 'M', ModItems.mechanism_rifle_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uac_pistol, 1), new Object[] { "IIM", " BI", 'B', DURA.bolt(), 'I', ANY_PLASTIC.ingot(), 'M', ModItems.mechanism_rifle_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_cursed, 1), new Object[] { "TTM", "SRI", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'R', MINGRADE.wireFine(), 'T', TI.plate(), 'M', ModItems.mechanism_revolver_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_nightmare, 1), new Object[] { "SEM", " RW", 'S', STEEL.plate(), 'W', KEY_PLANKS, 'R', AL.wireFine(), 'E', ModItems.powder_power, 'M', ModItems.mechanism_revolver_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_nightmare2, 1), new Object[] { "SSM", "RRW", 'S', OreDictManager.getReflector(), 'W', W.ingot(), 'R', GOLD.wireFine(), 'M', ModItems.mechanism_special }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_bio_revolver, 1), new Object[] { "SSM", "BTW", 'S', STEEL.plate(), 'M', ModItems.mechanism_revolver_2, 'B', B.ingot(), 'T', W.bolt(), 'W', KEY_LOG }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_chemthrower, 1), new Object[] { "RWC", "HHT", "RLC", 'R', RUBBER.ingot(), 'W', ModItems.wrench, 'C', CU.plate(), 'H', STEEL.shell(), 'T', ModItems.tank_steel, 'L', ModItems.mechanism_launcher_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_fatman, 1), new Object[] { "SSI", "IIM", "WPH", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'W', AL.wireFine(), 'H', STEEL.shell(), 'P', Item.getItemFromBlock(Blocks.piston), 'M', ModItems.mechanism_launcher_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mirv, 1), new Object[] { "LLL", "WFW", "SSS", 'S', STEEL.plate(), 'L', PB.plate(), 'W', GOLD.wireFine(), 'F', ModItems.gun_fatman }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_proto, 1), new Object[] { "LLL", "WFW", "SSS", 'S', ANY_RUBBER.ingot(), 'L', ModItems.plate_desh, 'W', W.wireFine(), 'F', ModItems.gun_fatman }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_nuke, 1, AmmoFatman.BALEFIRE.ordinal()), new Object[] { " S ", "EBE", " S ", 'S', STEEL.shell(), 'E', ModItems.powder_power, 'B', ModItems.egg_balefire_shard }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mp40, 1), new Object[] { "IIM", " SW", " S ", 'S', STEEL.plate(), 'I', STEEL.ingot(), 'W', KEY_PLANKS, 'M', ModItems.mechanism_rifle_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_thompson, 1), new Object[] { "IIM", " SW", " S ", 'S', IRON.plate(), 'I', STEEL.plate(), 'W', KEY_PLANKS, 'M', ModItems.mechanism_rifle_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flechette, 1), new Object[] { "PPM", "TIS", "G ", 'P', STEEL.plate(), 'M', ModItems.mechanism_rifle_2, 'T', STEEL.shell(), 'I', STEEL.ingot(), 'S', ANY_PLASTIC.ingot(), 'G', ModItems.mechanism_launcher_1 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uboinik, 1), new Object[] { "IIM", "SPW", 'P', STEEL.plate(), 'I', STEEL.ingot(), 'W', KEY_PLANKS, 'S', KEY_STICK, 'M', ModItems.mechanism_revolver_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_supershotgun, 1), new Object[] { "BBM", "BBM", "AWL", 'B', STEEL.pipe(), 'M', ModItems.mechanism_rifle_2, 'A', ModItems.plate_dalekanium, 'W', GOLD.wireFine(), 'L', KEY_LOG }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_ks23, 1), new Object[] { "PPM", "SWL", 'P', STEEL.plate(), 'M', ModItems.mechanism_rifle_1, 'S', KEY_STICK, 'W', W.wireFine(), 'L', KEY_LOG }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.gun_sauer, 1), new Object[] { ModItems.ducttape, ModItems.gun_ks23, Blocks.lever, ModItems.gun_ks23 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_xvl1456, 1), new Object[] { "PBB", "ACC", "PRY", 'P', STEEL.plate(), 'R', ModItems.redcoil_capacitor, 'A', ModItems.coil_advanced_alloy, 'B', ModItems.battery_generic, 'C', ModItems.coil_advanced_torus, 'Y', ModItems.mechanism_special }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_xvl1456_ammo, 16), new Object[] { " S ", "SRS", " S ", 'S', STEEL.plate(), 'R', ModItems.waste_natural_uranium }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_xvl1456_ammo, 16), new Object[] { " S ", "SRS", " S ", 'S', STEEL.plate(), 'R', ModItems.waste_uranium }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_xvl1456_ammo, 20), new Object[] { " S ", " R ", " S ", 'S', STEEL.plate(), 'R', ModItems.waste_plate_u235 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_xvl1456_ammo, 16), new Object[] { "SRS", 'S', STEEL.plate(), 'R', ModItems.waste_u235 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_xvl1456_ammo, 16), new Object[] { " S ", " R ", " S ", 'S', STEEL.plate(), 'R', U238.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_xvl1456_ammo, 16), new Object[] { "SRS", 'S', STEEL.plate(), 'R', U238.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_osipr, 1), new Object[] { "CCT", "WWI", "MCC", 'C', CMB.plate(), 'T', W.ingot(), 'W', MAGTUNG.wireFine(), 'I', ModItems.mechanism_rifle_2, 'M', ModItems.coil_magnetized_tungsten }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_immolator, 1), new Object[] { "WCC", "PMT", "WAA", 'W', GOLD.wireFine(), 'C', CU.plate(), 'P', ALLOY.plate(), 'M', ModItems.mechanism_launcher_1, 'T', ModItems.tank_steel, 'A', STEEL.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_immolator_ammo, 16), new Object[] { "SPS", "PCP", "SPS", 'S', STEEL.plate(), 'C', COAL.dust(), 'P', P_RED.dust() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_immolator_ammo, 16), new Object[] { " F ", "SFS", " F ", 'S', STEEL.plate(), 'F', Fluids.DIESEL.getDict(1000) }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_immolator_ammo, 24), new Object[] { " F ", "SFS", " F ", 'S', STEEL.plate(), 'F', ModItems.canister_napalm }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flamer, 1), new Object[] { "WSS", "SCT", "WMI", 'W', GOLD.wireFine(), 'S', STEEL.pipe(), 'C', ModItems.coil_tungsten, 'T', ModItems.tank_steel, 'M', ModItems.mechanism_launcher_1, 'I', STEEL.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_cryolator, 1), new Object[] { "SSS", "IWL", "LMI", 'S', STEEL.plate(), 'I', IRON.plate(), 'L', Items.leather, 'M', ModItems.mechanism_launcher_1, 'W', AL.wireFine() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_cryolator_ammo, 16), new Object[] { "SPS", "PCP", "SPS", 'S', STEEL.plate(), 'C', KNO.dust(), 'P', Items.snowball }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_cryolator_ammo, 16), new Object[] { " F ", "SFS", " F ", 'S', STEEL.plate(), 'F', ModItems.powder_ice }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mp, 1), new Object[] { "EEE", "SSM", "III", 'E', EUPH.ingot(), 'S', STEEL.plate(), 'I', STEEL.ingot(), 'M', ModItems.mechanism_rifle_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_emp, 1), new Object[] { "CPG", "CMF", "CPI", 'C', ModItems.coil_copper, 'P', PB.plate(), 'G', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', ModItems.magnetron, 'I', W.ingot(), 'F', ModItems.mechanism_special }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_emp_ammo, 8), new Object[] { "IGI", "IPI", "IPI", 'G', GOLD.plate(), 'I', IRON.plate(), 'P', ModItems.powder_power }); - //CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_jack, 1), new Object[] { "WW ", "TSD", " TT", 'W', "ingotWeidanium", 'T', ModItems.toothpicks, 'S', ModItems.gun_uboinik, 'D', ModItems.ducttape }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.gun_jack_ammo, 1), new Object[] { ModItems.ammo_12gauge, ModItems.ammo_12gauge, ModItems.ammo_12gauge, ModItems.ammo_12gauge }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_euthanasia, 1), new Object[] { "TDT", "AAS", " T ", 'A', AUSTRALIUM.ingot(), 'T', ModItems.toothpicks, 'S', ModItems.gun_mp40, 'D', ModItems.ducttape }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_euthanasia_ammo, 12), new Object[] { "P", "S", "N", 'P', ModItems.powder_poison, 'N', KNO.dust(), 'S', ModItems.syringe_metal_empty }); - //CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_spark, 1), new Object[] { "TTD", "AAS", " T", 'A', "ingotDaffergon", 'T', ModItems.toothpicks, 'S', ModItems.gun_rpg, 'D', ModItems.ducttape }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_spark_ammo, 4), new Object[] { "PCP", "DDD", "PCP", 'P', PB.plate(), 'C', ModItems.coil_gold, 'D', ModItems.powder_power }); - //CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_skystinger, 1), new Object[] { "TTT", "AAS", " D ", 'A', "ingotUnobtainium", 'T', ModItems.toothpicks, 'S', ModItems.gun_stinger, 'D', ModItems.ducttape }); - //CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_hp, 1), new Object[] { "TDT", "ASA", " T ", 'A', "ingotReiium", 'T', ModItems.toothpicks, 'S', ModItems.gun_xvl1456, 'D', ModItems.ducttape }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_hp_ammo, 8), new Object[] { " R ", "BSK", " Y ", 'S', STEEL.plate(), 'K', KEY_BLACK, 'R', KEY_RED, 'B', KEY_BLUE, 'Y', KEY_YELLOW }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_defabricator_ammo, 16), new Object[] { "PCP", "DDD", "PCP", 'P', STEEL.plate(), 'C', ModItems.coil_copper, 'D', LI.dust() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lever_action, 1), new Object[] { "PPI", "SWD", 'P', IRON.plate(), 'I', ModItems.mechanism_rifle_1, 'S', KEY_STICK, 'D', KEY_PLANKS, 'W', STEEL.wireFine() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lever_action_dark, 1), new Object[] { "PPI", "SWD", 'P', STEEL.plate(), 'I', ModItems.mechanism_rifle_1, 'S', KEY_STICK, 'D', KEY_PLANKS, 'W', STEEL.wireFine() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_bolt_action, 1), new Object[] { "PPI", "SWD", 'P', STEEL.plate(), 'I', ModItems.mechanism_rifle_1, 'S', KEY_STICK, 'D', KEY_PLANKS, 'W', CU.wireFine() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_bolt_action_green, 1), new Object[] { "PPI", "SWD", 'P', IRON.plate(), 'I', ModItems.mechanism_rifle_1, 'S', KEY_STICK, 'D', KEY_PLANKS, 'W', CU.wireFine() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_bolt_action_saturnite, 1), new Object[] { "PPI", "SWD", 'P', BIGMT.plate(), 'I', ModItems.mechanism_rifle_1, 'S', KEY_STICK, 'D', KEY_PLANKS, 'W', W.wireFine() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b92), new Object[] { "DDD", "SSC", " R", 'D', ModItems.plate_dineutronium, 'S', STAR.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID), 'R', ModItems.gun_revolver_schrabidium }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b93), new Object[] { "PCE", "SEB", "PCE", 'P', ModItems.plate_dineutronium, 'C', ModItems.weaponized_starblaster_cell, 'E', ModItems.component_emitter, 'B', ModItems.gun_b92, 'S', ModItems.singularity_spark }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b92), new Object[] { "DDD", "SSC", " R", 'D', ModItems.plate_dineutronium, 'S', STAR.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID), 'R', ModItems.gun_lasrifle }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b92_ammo, 1), new Object[] { "PSP", "ESE", "PSP", 'P', STEEL.plate(), 'S', STAR.ingot(), 'E', ModItems.powder_spark_mix }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.weaponized_starblaster_cell, 1), new Object[] { new ItemStack(ModItems.fluid_tank_full, 1, Fluids.PEROXIDE.getID()), GunB92Cell.getFullCell(), CU.wireFine() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi, 1), new Object[] { "SMS", " PB", " P ", 'S', STEEL.ingot(), 'M', ModItems.mechanism_rifle_2, 'P', STEEL.plate(), 'B', DURA.bolt() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_silencer, 1), new Object[] { "P ", " P ", " U", 'P', ANY_PLASTIC.ingot(), 'U', ModItems.gun_uzi }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_saturnite, 1), new Object[] { "SMS", " PB", " P ", 'S', BIGMT.ingot(), 'M', ModItems.mechanism_rifle_2, 'P', BIGMT.plate(), 'B', W.bolt() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_saturnite_silencer, 1), new Object[] { "P ", " P ", " U", 'P', ANY_PLASTIC.ingot(), 'U', ModItems.gun_uzi_saturnite }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_bolter, 1), new Object[] { "SSM", "PIP", " I ", 'S', BIGMT.plate(), 'I', BIGMT.ingot(), 'M', ModItems.mechanism_special, 'P', ANY_PLASTIC.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_calamity, 1), new Object[] { " PI", "BBM", " PI", 'P', IRON.plate(), 'B', STEEL.pipe(), 'M', ModItems.mechanism_rifle_1, 'I', STEEL.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_m2, 1), new Object[] { " PI", "BBM", " PI", 'P', STEEL.plate(), 'B', STEEL.pipe(), 'M', ModItems.mechanism_rifle_2, 'I', STEEL.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_minigun, 1), new Object[] { "PIB", "PCM", "PIB", 'P', STEEL.pipe(), 'B', STEEL.block(), 'I', ANY_PLASTIC.ingot(), 'C', ModItems.mechanism_rifle_2, 'M', ModItems.motor }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lacunae, 1), new Object[] { "TIT", "ILI", "PRP", 'T', ModItems.syringe_taint, 'I', STAR.ingot(), 'L', ModItems.gun_minigun, 'P', ModItems.pellet_rtg, 'R', ModBlocks.machine_rtg_grey }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mymy, 1), new Object[] { "PP ", " WP", 'P', ANY_RUBBER.ingot(), 'W', STEEL.wireFine() }); - //CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_darter, 1), new Object[] { "SST", " P", 'S', STEEL.plate(), 'T', ModItems.gas_empty, 'P', ANY_PLASTIC.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_fireext, 1), new Object[] { "HB", " T", 'H', STEEL.pipe(), 'B', STEEL.bolt(), 'T', ModItems.tank_steel }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_spas12, 1), new Object[] { "TPS", "HHR", " L", 'T', STEEL.bolt(), 'P', STEEL.plate(), 'S', STEEL.ingot(), 'H', STEEL.pipe(), 'R', ModItems.mechanism_rifle_1, 'L', ANY_PLASTIC.ingot()}); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_glass_cannon, 1), new Object[] { "GGC", "GTM", 'G', Item.getItemFromBlock(ModBlocks.glass_quartz), 'C', ModItems.battery_lithium_cell, 'T', ModItems.crt_display, 'M', ModItems.mechanism_special }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_remington, 1), new Object[] { "PPM", "S L", 'P', STEEL.plate(), 'M', ModItems.mechanism_rifle_1, 'S', KEY_SLAB, 'L', KEY_LOG }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_benelli), new Object[] { "HHP", "SSM", "AAP", 'H', ModItems.ingot_dura_steel, 'S', STEEL.pipe(), 'A', AL.pipe(), 'P', ANY_PLASTIC.ingot(), 'M', ModItems.mechanism_rifle_2 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lunatic_marksman), new Object[] { " GN", "SSM", " A", 'G', KEY_ANYPANE, 'N', ModItems.powder_nitan_mix, 'S', BIGMT.plate(), 'M', ModItems.mechanism_special, 'A', ANY_RESISTANTALLOY.plateCast() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_coilgun), new Object[] { "CCC", "SSM", " P", 'C', ModBlocks.capacitor_copper, 'S', BIGMT.plate(), 'M', ModItems.mechanism_special, 'P', ANY_PLASTIC.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_coilgun, 16, 0), new Object[] { " T ", "TST", " T ", 'T', W.ingot(), 'S', BIGMT.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_coilgun, 16, 1), new Object[] { " T ", "TST", " T ", 'T', FERRO.ingot(), 'S', BIGMT.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_coilgun, 16, 2), new Object[] { " T ", "TST", " T ", 'T', RUBBER.ingot(), 'S', ANY_PLASTIC.ingot() }); - //TODO: somehow add more variance, 4 gauge is still missing - CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_22lr, 16), new Object[] { ModItems.nitra_small }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_9mm, 16), new Object[] { ModItems.nitra_small, ModItems.nitra_small }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_5mm, 16), new Object[] { ModItems.nitra_small, ModItems.nitra_small, ModItems.nitra_small }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_357, 16, Ammo357Magnum.LEAD.ordinal()), new Object[] { ModItems.nitra, ModItems.nitra_small }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_44, 16), new Object[] { ModItems.nitra, ModItems.nitra_small, ModItems.nitra_small }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_45, 16), new Object[] { ModItems.nitra, ModItems.nitra_small, ModItems.nitra_small, ModItems.nitra_small }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_50ae, 16), new Object[] { ModItems.nitra, ModItems.nitra }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_556, 16), new Object[] { ModItems.nitra, ModItems.nitra, ModItems.nitra_small }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_20gauge, 16), new Object[] { ModItems.nitra, ModItems.nitra, ModItems.nitra_small, ModItems.nitra_small }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_12gauge, 16), new Object[] { ModItems.nitra, ModItems.nitra, ModItems.nitra }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_762, 16), new Object[] { ModItems.nitra, ModItems.nitra, ModItems.nitra, ModItems.nitra_small }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_50bmg, 16), new Object[] { ModItems.nitra, ModItems.nitra, ModItems.nitra, ModItems.nitra }); //Ammo assemblies CraftingManager.addRecipeAuto(new ItemStack(ModItems.pellet_flechette, 1), new Object[] { " L ", " L ", "LLL", 'L', PB.nugget() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.pellet_claws, 1), new Object[] { " X ", "X X", " XX", 'X', STEEL.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_iron, 1), new Object[] { " I", "GC", 'I', IRON.ingot(), 'G', ANY_GUNPOWDER.dust(), 'C', ModItems.casing_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_steel, 1), new Object[] { " I", "GC", 'I', PB.ingot(), 'G', ANY_GUNPOWDER.dust(), 'C', ModItems.casing_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lead, 1), new Object[] { " I", "GC", 'I', U235.ingot(), 'G', ModItems.cordite, 'C', KEY_CLEARGLASS }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lead, 1), new Object[] { " I", "GC", 'I', PU239.ingot(), 'G', ModItems.cordite, 'C', KEY_CLEARGLASS }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lead, 1), new Object[] { " I", "GC", 'I', ModItems.trinitite, 'G', ModItems.cordite, 'C', KEY_CLEARGLASS }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lead, 1), new Object[] { " I", "GC", 'I', ModItems.nuclear_waste_tiny, 'G', ModItems.cordite, 'C', KEY_CLEARGLASS }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_gold, 1), new Object[] { " I", "GC", 'I', GOLD.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_schrabidium, 1), new Object[] { " I ", "GCN", 'I', SA326.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357, 'N', ModItems.billet_yharonite }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nightmare, 1), new Object[] { " I", "GC", 'I', W.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_desh, 1), new Object[] { " I", "GC", 'I', DESH.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_357 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_smg, 1), new Object[] { " I", "GC", 'I', PB.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_9 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_556, 1), new Object[] { " I", "GC", 'I', STEEL.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_9 }); - CraftingManager.addRecipeAuto(ModItems.ammo_556.stackFromEnum(30, Ammo556mm.K), new Object[] { "G", "C", 'G', ANY_GUNPOWDER.dust(), 'C', ModItems.casing_9 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_uzi, 1), new Object[] { " I", "GC", 'I', IRON.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_9 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_lacunae, 1), new Object[] { " I", "GC", 'I', CU.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_9 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nopip, 1), new Object[] { " I", "GC", 'I', PB.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_44 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_12gauge, 12), new Object[] { " I ", "GCL", 'I', ModItems.pellet_buckshot, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'L', ANY_RUBBER.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.PERCUSSION), new Object[] { "G", "C", 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge, 12), new Object[] { " I ", "GCL", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.SLUG), new Object[] { " I ", "GCL", 'I', STEEL.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.FLECHETTE), new Object[] { " I ", "GCL", 'I', ModItems.pellet_flechette, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", 'I', ModBlocks.tnt, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(6, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", 'I', ANY_PLASTICEXPLOSIVE.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.MINING), new Object[] { " I ", "GCL", 'I', ModBlocks.det_miner, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'L', ANY_RUBBER.ingot() }); - CraftingManager.addShapelessAuto(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.QUACK), new Object[] { ModItems.ammo_4gauge, ModItems.nugget_bismuth, ModItems.nugget_tantalium, ModItems.ball_dynamite }); - CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), new Object[] { " I ", "GCL", 'I', ModItems.pellet_buckshot, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.SLUG), new Object[] { " I ", "GCL", 'I', PB.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", 'I', ModItems.pellet_cluster, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(20, Ammo20Gauge.FLECHETTE), new Object[] { " I ", "GCL", 'I', ModItems.pellet_flechette, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'L', CU.plate() }); - CraftingManager.addRecipeAuto(ModItems.ammo_357.stackFromEnum(6, Ammo357Magnum.NIGHTMARE2), new Object[] { "I", "C", 'I', ModItems.powder_power, 'C', ModItems.casing_buckshot }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_calamity, 1), new Object[] { " I ", "GCG", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_actionexpress, 1), new Object[] { " I", "GC", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50 }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nuke, 1), new Object[] { " WP", "SEP", " WP", 'W', STEEL.wireFine(), 'P', STEEL.plate(), 'S', STEEL.shell(), 'E', ANY_HIGHEXPLOSIVE.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_dart.stackFromEnum(16, AmmoDart.GPS), new Object[] { "IPI", "ICI", "IPI", 'I', ANY_RUBBER.ingot(), 'P', IRON.plate(), 'C', new ItemStack(ModItems.fluid_tank_lead_full, 1, Fluids.WATZ.getID()) }); - CraftingManager.addRecipeAuto(ModItems.ammo_dart.stackFromEnum(16, AmmoDart.NERF), new Object[] { "I", "I", 'I', ANY_RUBBER.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_45, 1), " I", "GC", 'I', CU.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_44); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_762, 1), " I", "GC", 'I', CU.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_luna, 1), new Object[] { " B ", "GCG", "GPG", 'B', FERRO.ingot(), 'G', ModItems.powder_nitan_mix, 'C', ModItems.casing_50, 'P', ModItems.powder_power}); - - //Folly shells - CraftingManager.addRecipeAuto(new ItemStack(ModItems.folly_bullet, 1), new Object[] { " S ", "STS", "SMS", 'S', STAR.ingot(), 'T', ModItems.powder_magic, 'M', ModBlocks.block_meteor }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.folly_bullet_nuclear, 1), new Object[] { " N ", "UTU", "UTU", 'N', ModItems.ammo_nuke, 'U', IRON.ingot(), 'T', W.block() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.folly_bullet_du, 1), new Object[] { " U ", "UDU", "UTU", 'U', U238.block(), 'D', DESH.block(), 'T', W.block() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.folly_shell, 1), new Object[] { "IPI", "IPI", "IMI", 'I', IRON.ingot(), 'P', IRON.plate(), 'M', ANY_SMOKELESS.dust() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_folly, 1), new Object[] { " B ", "MEM", " S ", 'B', ModItems.folly_bullet, 'M', ModItems.powder_magic, 'E', ModItems.powder_power, 'S', ModItems.folly_shell }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_folly_nuclear, 1), new Object[] { " B ", "EEE", " S ", 'B', ModItems.folly_bullet_nuclear, 'E', ModBlocks.det_charge, 'S', ModItems.folly_shell }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_folly_du, 1), new Object[] { " B ", "EEE", " S ", 'B', ModItems.folly_bullet_du, 'E', ModBlocks.det_charge, 'S', ModItems.folly_shell }); - - //Rockets - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket, 1), new Object[] { "T", "C", "G", 'T', ModItems.ball_dynamite, 'G', ModItems.rocket_fuel, 'C', STEEL.shell() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_rocket, 2), new Object[] { "T", "C", "G", 'T', ANY_PLASTICEXPLOSIVE.ingot(), 'G', ModItems.rocket_fuel, 'C', STEEL.shell() }); - CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.HE), new Object[] { "G", "R", 'G', ANY_PLASTICEXPLOSIVE.ingot(), 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.INCENDIARY), new Object[] { "G", "R", 'G', P_RED.dust(), 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.PHOSPHORUS), new Object[] { "G", "R", 'G', P_WHITE.ingot(), 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.EMP), new Object[] { "G", "R", 'G', "dustDiamond", 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.SHRAPNEL), new Object[] { "G", "R", 'G', ModItems.pellet_buckshot, 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.GLARE), new Object[] { "GGG", "GRG", "GGG", 'G', REDSTONE.dust(), 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.CHLORINE), new Object[] { "G", "R", 'G', ModItems.pellet_gas, 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.CANISTER), new Object[] { "G", "R", 'G', ModItems.pellet_canister, 'R', ModItems.ammo_rocket }); - CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.NUCLEAR), new Object[] { " P ", "NRN", " P ", 'P', PU239.nugget(), 'N', OreDictManager.getReflector(), 'R', ModItems.ammo_rocket }); - - FluidType[] chainsawTypes = new FluidType[] {Fluids.DIESEL, Fluids.DIESEL_CRACK, Fluids.PETROIL, Fluids.PETROIL_LEADED, Fluids.GASOLINE, Fluids.GASOLINE_LEADED, Fluids.BIOFUEL}; - for(FluidType type : chainsawTypes) CraftingManager.addRecipeAuto(ModItems.ammo_rocket.stackFromEnum(2, AmmoRocket.RPC), new Object[] { "BP ", "CBH", " DR", 'B', ModItems.blades_steel, 'P', STEEL.plate(), 'C', type.getDict(1000), 'H', STEEL.shell(), 'D', ModItems.piston_selenium, 'R', ModItems.ammo_rocket }); - - //Stinger Rockets - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_stinger_rocket, 2), "CE ", " S ", " F ", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), 'E', ANY_PLASTICEXPLOSIVE.ingot(), 'F', ModItems.rocket_fuel, 'S', STEEL.shell()); - CraftingManager.addRecipeAuto(ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.HE), new Object[] { "S", "R", 'S', ANY_PLASTICEXPLOSIVE.ingot(), 'R', ModItems.ammo_stinger_rocket }); - CraftingManager.addRecipeAuto(ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.INCENDIARY), new Object[] { "S", "R", 'S', P_RED.dust(), 'R', ModItems.ammo_stinger_rocket }); - CraftingManager.addRecipeAuto(ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.NUCLEAR), new Object[] { "RPR", "PSP", "RPR", 'R', ModItems.neutron_reflector, 'P', PU239.nugget(), 'S', ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.HE) }); - CraftingManager.addRecipeAuto(ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.BONES), new Object[] { " C ", "SKR", " P ", 'C', ModItems.fallout, 'S', SR90.dust(), 'K', ModItems.ammo_stinger_rocket, 'R', RA226.dust(), 'P', PU.dust() }); - - //40mm grenades - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_grenade, 2), new Object[] { " T ", "GCI", 'T', ANY_HIGHEXPLOSIVE.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'I', IRON.plate() }); - CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(2, AmmoGrenade.TRACER), new Object[] { " T ", "GCI", 'T', LAPIS.dust(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'I', IRON.plate() }); - CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(2, AmmoGrenade.HE), new Object[] { "GIG", 'G', ModItems.ammo_grenade, 'I', ANY_PLASTICEXPLOSIVE.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(2, AmmoGrenade.INCENDIARY), new Object[] { "GIG", 'G', ModItems.ammo_grenade, 'I', P_RED.dust() }); - CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(2, AmmoGrenade.PHOSPHORUS), new Object[] { "GIG", 'G', ModItems.ammo_grenade, 'I', P_WHITE.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(2, AmmoGrenade.CHLORINE), new Object[] { "GIG", 'G', ModItems.ammo_grenade, 'I', ModItems.powder_poison }); - CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(2, AmmoGrenade.CONCUSSION), new Object[] { "GIG", 'G', ModItems.ammo_grenade, 'I', Items.glowstone_dust }); - 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', AL.shell(), 'M', ModItems.motor }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.assembly_nuke, 1), new Object[] { " WP", "SEP", " WP", 'W', GOLD.wireFine(), 'P', STEEL.plate(), 'S', STEEL.shell(), 'E', ModItems.ball_tatb }); //240mm Shells CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_shell, 4), new Object[] { " T ", "GHG", "CCC", 'T', ModBlocks.tnt, 'G', Items.gunpowder, 'H', STEEL.shell(), 'C', CU.ingot() }); @@ -294,35 +191,6 @@ public class WeaponRecipes { //DGK Belts CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_dgk, 1), new Object[] { "LLL", "GGG", "CCC", 'L', PB.plate(), 'G', ModItems.ballistite, 'C', CU.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_dgk, 1), new Object[] { "LLL", "GGG", "CCC", 'L', PB.plate(), 'G', ModItems.cordite, 'C', CU.ingot() }); - - //Mini Nuke - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_nuke, 1), new Object[] { "P", "S", "P", 'P', PU239.nugget(), 'S', ModItems.assembly_nuke }); - CraftingManager.addRecipeAuto(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.LOW), new Object[] { "P", "S", 'P', PU239.nugget(), 'S', ModItems.assembly_nuke }); - CraftingManager.addRecipeAuto(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.HIGH), new Object[] { "PPP", "PSP", "PPP", 'P', PU239.nugget(), 'S', ModItems.assembly_nuke }); - CraftingManager.addRecipeAuto(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.TOTS), new Object[] { "PPP", "PIP", "PPP", 'P', ModItems.pellet_cluster, 'I', PU239.ingot() }); - CraftingManager.addRecipeAuto(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.SAFE), new Object[] { "G", "N", 'G', Items.glowstone_dust, 'N', ModItems.ammo_nuke.stackFromEnum(AmmoFatman.LOW) }); - CraftingManager.addRecipeAuto(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.PUMPKIN), new Object[] { " T ", "TST", " T ", 'T', ModBlocks.tnt, 'S', ModItems.assembly_nuke }); - - //MIRV recycling - CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_nuke, 6), new Object[] { ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV) }); - CraftingManager.addShapelessAuto(ModItems.ammo_nuke.stackFromEnum(6, AmmoFatman.LOW), new Object[] { ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_LOW) }); - CraftingManager.addShapelessAuto(ModItems.ammo_nuke.stackFromEnum(6, AmmoFatman.HIGH), new Object[] { ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_HIGH) }); - CraftingManager.addShapelessAuto(ModItems.ammo_nuke.stackFromEnum(6, AmmoFatman.SAFE), new Object[] { ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_SAFE) }); - - //MIRV - CraftingManager.addRecipeAuto(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV), new Object[] { "NNN", "CDS", "NNN", 'N', ModItems.ammo_nuke, 'C', AL.plate(), 'D', ModBlocks.det_cord, 'S', STEEL.shell() }); - CraftingManager.addRecipeAuto(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_LOW), new Object[] { "NNN", "CDS", "NNN", 'N', ModItems.ammo_nuke.stackFromEnum(AmmoFatman.LOW), 'C', AL.plate(), 'D', ModBlocks.det_cord, 'S', STEEL.shell() }); - CraftingManager.addRecipeAuto(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_HIGH), new Object[] { "NNN", "CDS", "NNN", 'N', ModItems.ammo_nuke.stackFromEnum(AmmoFatman.HIGH), 'C', AL.plate(), 'D', ModBlocks.det_cord, 'S', STEEL.shell() }); - CraftingManager.addRecipeAuto(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_SAFE), new Object[] { "NNN", "CDS", "NNN", 'N', ModItems.ammo_nuke.stackFromEnum(AmmoFatman.SAFE), 'C', AL.plate(), 'D', ModBlocks.det_cord, 'S', STEEL.shell() }); - //since the milk part of the recipe isn't really present in the MIRV's effect, it might as well be replaced with something more sensible, i.e. duct tape - CraftingManager.addRecipeAuto(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_SPECIAL), new Object[] { "CBC", "MCM", "CBC", 'C', ModItems.canned_conserve.stackFromEnum(EnumFoodType.JIZZ), 'B', ModItems.ammo_nuke.stackFromEnum(AmmoFatman.BALEFIRE), 'M', ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV) }); - - //Flamer fuel - CraftingManager.addRecipeAuto(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.DIESEL), new Object[] { " P ", "BDB", " P ", 'P', STEEL.plate(), 'B', STEEL.bolt(), 'D', Fluids.DIESEL.getDict(1000) }); - CraftingManager.addRecipeAuto(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.NAPALM), new Object[] { " P ", "BDB", " P ", 'P', STEEL.plate(), 'B', STEEL.bolt(), 'D', ModItems.canister_napalm }); - CraftingManager.addRecipeAuto(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.PHOSPHORUS), new Object[] { "CPC", "CDC", "CPC", 'C', COAL.dust(), 'P', P_WHITE.ingot(), 'D', ModItems.ammo_fuel }); - CraftingManager.addRecipeAuto(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.CHLORINE), new Object[] { "PDP", "BDB", "PDP", 'P', STEEL.plate(), 'B', STEEL.bolt(), 'D', ModItems.pellet_gas }); - CraftingManager.addRecipeAuto(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.VAPORIZER), new Object[] { "PSP", "SNS", "PSP", 'P', P_WHITE.ingot(), 'S', ModItems.crystal_sulfur, 'N', ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.NAPALM) }); //Fire Extingusisher Tanks CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_fireext, 1), new Object[] { " P ", "BDB", " P ", 'P', STEEL.plate(), 'B', STEEL.bolt(), 'D', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.WATER.getID()) }); @@ -345,7 +213,6 @@ public class WeaponRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModItems.grenade_gascan, 1), new Object[] { Fluids.GASOLINE_LEADED.getDict(1000), Items.flint }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.grenade_gascan, 1), new Object[] { Fluids.BIOFUEL.getDict(1000), Items.flint }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.grenade_lemon, 1), new Object[] { ModItems.lemon, ModItems.grenade_strong }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.gun_moist_nugget, 12), new Object[] { Items.bread, Items.wheat, Items.cooked_chicken, Items.egg }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_smart, 4), new Object[] { " A ", "ACA", " A ", 'A', ModItems.grenade_strong, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP) }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_mirv, 1), new Object[] { "GGG", "GCG", "GGG", 'G', ModItems.grenade_smart, 'C', ModItems.grenade_generic }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_breach, 1), new Object[] { "G", "G", "P", 'G', ModItems.grenade_smart, 'P', BIGMT.plate() }); @@ -387,10 +254,10 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_null, 1), new Object[] { "BAB", "AGA", "BAB", 'G', ModItems.grenade_if_generic, 'A', ModItems.undefined, 'B', BIGMT.ingot() }); //Mines - CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_ap, 4), new Object[] { "C", "P", "T", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'P', IRON.plate(), 'T', ANY_PLASTICEXPLOSIVE.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_ap, 4), new Object[] { "I", "C", "S", 'I', ModItems.plate_polymer, 'C', ANY_SMOKELESS.dust(), 'S', STEEL.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_shrap, 1), new Object[] { "L", "M", 'M', ModBlocks.mine_ap, 'L', ModItems.pellet_buckshot }); CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_he, 1), new Object[] { " C ", "PTP", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'P', STEEL.plate(), 'T', ANY_HIGHEXPLOSIVE.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_shrap, 2), new Object[] { "LLL", " C ", "PTP", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'P', STEEL.plate(), 'T', ModBlocks.det_cord, 'L', ModItems.pellet_buckshot }); - CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_fat, 1), new Object[] { "CDN", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG), 'D', ModItems.ducttape, 'N', ModItems.ammo_nuke }); + CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_fat, 1), new Object[] { "CDN", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG), 'D', ModItems.ducttape, 'N', DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_DEMO) }); //Nuke parts CraftingManager.addRecipeAuto(new ItemStack(ModItems.n2_charge, 1), new Object[] { " D ", "ERE", " D ", 'D', ModItems.ducttape, 'E', ModBlocks.det_charge, 'R', REDSTONE.block() }); diff --git a/src/main/java/com/hbm/crafting/handlers/ContainerUpgradeCraftingHandler.java b/src/main/java/com/hbm/crafting/handlers/ContainerUpgradeCraftingHandler.java new file mode 100644 index 000000000..110967484 --- /dev/null +++ b/src/main/java/com/hbm/crafting/handlers/ContainerUpgradeCraftingHandler.java @@ -0,0 +1,41 @@ +package com.hbm.crafting.handlers; + +import com.hbm.blocks.generic.BlockStorageCrate; +import com.hbm.blocks.machine.BlockMassStorage; + +import net.minecraft.block.Block; +import net.minecraft.inventory.InventoryCrafting; +import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.ShapedOreRecipe; + +/** + * Handles upgrading storage crates and mass storage blocks, preserving their contents. + * + * Note: this assumes the input and the output items store their inventory in the same format + * in the NBT + */ +public class ContainerUpgradeCraftingHandler extends ShapedOreRecipe { + + public ContainerUpgradeCraftingHandler(ItemStack result, Object... items) { + super(result, items); + } + + @Override + public ItemStack getCraftingResult(InventoryCrafting inventoryCrafting) { + ItemStack source = getFirstContainer(inventoryCrafting); + ItemStack result = super.getCraftingResult(inventoryCrafting); + result.setTagCompound(source.getTagCompound()); + return result; + } + + private static ItemStack getFirstContainer(InventoryCrafting inventoryCrafting) { + for(int i = 0; i < 9; ++i) { + ItemStack itemstack = inventoryCrafting.getStackInRowAndColumn(i % 3, i / 3); + if(itemstack == null) continue; + Block block = Block.getBlockFromItem(itemstack.getItem()); + if(block == null) continue; + if(block instanceof BlockStorageCrate || block instanceof BlockMassStorage) return itemstack; + } + return null; + } +} diff --git a/src/main/java/com/hbm/creativetabs/WeaponTab.java b/src/main/java/com/hbm/creativetabs/WeaponTab.java index 01636faa6..28801e152 100644 --- a/src/main/java/com/hbm/creativetabs/WeaponTab.java +++ b/src/main/java/com/hbm/creativetabs/WeaponTab.java @@ -8,18 +8,16 @@ import net.minecraft.item.Item; public class WeaponTab extends CreativeTabs { - public WeaponTab(int p_i1853_1_, String p_i1853_2_) { - super(p_i1853_1_, p_i1853_2_); + public WeaponTab(int index, String name) { + super(index, name); } @Override public Item getTabIconItem() { - - if(ModItems.gun_lever_action != null) - { - return ModItems.gun_lever_action; + + if(ModItems.gun_maresleg != null) { + return ModItems.gun_maresleg; } - return Items.iron_pickaxe; } } diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index b5011714c..9d0437c72 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -74,7 +74,6 @@ public class EntityMappings { addEntity(EntityMissileMirv.class, "entity_missile_mirv", 1000); addEntity(EntityMIRV.class, "entity_mirvlet", 1000); addEntity(EntityGrenadeNuclear.class, "entity_grenade_nuclear", 1000); - addEntity(EntityBSmokeFX.class, "entity_b_smoke_fx", 1000); addEntity(EntityGrenadePlasma.class, "entity_grenade_plasma", 500); addEntity(EntityGrenadeTau.class, "entity_grenade_tau", 500); addEntity(EntityChopperMine.class, "entity_chopper_mine", 1000); @@ -86,10 +85,6 @@ public class EntityMappings { addEntity(EntityGrenadeASchrab.class, "entity_grenade_aschrab", 500); addEntity(EntityFalloutRain.class, "entity_fallout", 1000); addEntity(EntityEMPBlast.class, "entity_emp_blast", 1000); - addEntity(EntityFire.class, "entity_fire", 1000); - addEntity(EntityPlasmaBeam.class, "entity_immolator_beam", 1000); - addEntity(EntityLN2.class, "entity_LN2", 1000); - addEntity(EntityNightmareBlast.class, "entity_ominous_bullet", 1000); addEntity(EntityGrenadePulse.class, "entity_grenade_pulse", 1000); addEntity(EntityLaserBeam.class, "entity_laser_beam", 1000); addEntity(EntityMinerBeam.class, "entity_miner_beam", 1000); @@ -105,15 +100,14 @@ public class EntityMappings { addEntity(EntityNukeExplosionMK3.class, "entity_nuke_mk3", 1000); addEntity(EntityVortex.class, "entity_vortex", 250); addEntity(EntityMeteor.class, "entity_meteor", 250); - addEntity(EntityLaser.class, "entity_laser", 1000); addEntity(EntityBoxcar.class, "entity_boxcar", 1000); + addEntity(EntityTorpedo.class, "entity_torpedo", 1000); addEntity(EntityMissileTaint.class, "entity_missile_taint", 1000); addEntity(EntityGrenadeGascan.class, "entity_grenade_gascan", 1000); addEntity(EntityNukeExplosionMK5.class, "entity_nuke_mk5", 1000); addEntity(EntityCloudFleijaRainbow.class, "entity_cloud_rainbow", 1000); addEntity(EntityExplosiveBeam.class, "entity_beam_bomb", 1000); addEntity(EntityAAShell.class, "entity_aa_shell", 1000); - addEntity(EntityRocketHoming.class, "entity_stinger", 1000); addEntity(EntityMissileTest.class, "entity_missile_test_mk2", 1000); addEntity(EntityMissileMicro.class, "entity_missile_micronuclear", 1000); addEntity(EntityCloudSolinium.class, "entity_cloud_rainbow", 1000); @@ -128,6 +122,7 @@ public class EntityMappings { addEntity(EntityGrenadePC.class, "entity_grenade_pink_cloud", 250); addEntity(EntityGrenadeCloud.class, "entity_grenade_cloud", 250); addEntity(EntityBomber.class, "entity_bomber", 1000); + addEntity(EntityC130.class, "entity_c130", 1000); addEntity(EntityBombletZeta.class, "entity_zeta", 1000); addEntity(EntityOrangeFX.class, "entity_agent_orange", 1000); addEntity(EntityDeathBlast.class, "entity_laser_blast", 1000); @@ -151,6 +146,9 @@ public class EntityMappings { addEntity(EntityGrenadeIFNull.class, "entity_grenade_ironshod_null", 250); addEntity(EntityFallingNuke.class, "entity_falling_bomb", 1000); addEntity(EntityBulletBaseNT.class, "entity_bullet_mk3", 250, false); + addEntity(EntityBulletBaseMK4.class, "entity_bullet_mk4", 250, false); + addEntity(EntityBulletBaseMK4CL.class, "entity_bullet_mk4_cl", 250, false); + addEntity(EntityBulletBeamBase.class, "entity_beam_mk4", 250, false); addEntity(EntityMinerRocket.class, "entity_miner_lander", 1000); addEntity(EntityFogFX.class, "entity_nuclear_fog", 1000); addEntity(EntityDuchessGambit.class, "entity_duchessgambit", 1000); @@ -165,6 +163,7 @@ public class EntityMappings { addEntity(EntityBuilding.class, "entity_falling_building", 1000); addEntity(EntitySoyuz.class, "entity_soyuz", 1000); addEntity(EntitySoyuzCapsule.class, "entity_soyuz_capsule", 1000); + addEntity(EntityParachuteCrate.class, "entity_parachute_crate", 1000); addEntity(EntityMovingItem.class, "entity_c_item", 1000); addEntity(EntityMovingPackage.class, "entity_c_package", 1000); addEntity(EntityDeliveryDrone.class, "entity_delivery_drone", 250, false); @@ -204,6 +203,7 @@ public class EntityMappings { addEntity(EntitySawblade.class, "entity_stray_saw", 1000); addEntity(EntityChemical.class, "entity_chemthrower_splash", 1000); addEntity(EntityMist.class, "entity_mist", 250, false); + addEntity(EntityFireLingering.class, "entity_fire_lingering", 250, false); addEntity(EntityAcidBomb.class, "entity_acid_bomb", 1000); addEntity(EntityFallingBlockNT.class, "entity_falling_block_nt", 1000); addEntity(EntityBoatRubber.class, "entity_rubber_boat", 250, false); @@ -252,6 +252,7 @@ public class EntityMappings { addMob(EntityGlyphidDigger.class, "entity_glyphid_digger", 0x273038, 0x724A21); addMob(EntityPlasticBag.class, "entity_plastic_bag", 0xd0d0d0, 0x808080); addMob(EntityParasiteMaggot.class, "entity_parasite_maggot", 0xd0d0d0, 0x808080); + addMob(EntityDummy.class, "entity_ntm_test_dummy", 0xffffff, 0x000000); addSpawn(EntityCreeperPhosgene.class, 5, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); addSpawn(EntityCreeperVolatile.class, 10, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); diff --git a/src/main/java/com/hbm/entity/cart/EntityMinecartCrate.java b/src/main/java/com/hbm/entity/cart/EntityMinecartCrate.java index 3ce773740..241847f64 100644 --- a/src/main/java/com/hbm/entity/cart/EntityMinecartCrate.java +++ b/src/main/java/com/hbm/entity/cart/EntityMinecartCrate.java @@ -15,7 +15,6 @@ import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -111,7 +110,7 @@ public class EntityMinecartCrate extends EntityMinecartContainerBase implements @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICrateSteel(player.inventory, (EntityMinecartCrate) player.worldObj.getEntityByID(x)); } } diff --git a/src/main/java/com/hbm/entity/cart/EntityMinecartDestroyer.java b/src/main/java/com/hbm/entity/cart/EntityMinecartDestroyer.java index 7d11fc8e4..d7a34e2ed 100644 --- a/src/main/java/com/hbm/entity/cart/EntityMinecartDestroyer.java +++ b/src/main/java/com/hbm/entity/cart/EntityMinecartDestroyer.java @@ -17,7 +17,6 @@ import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -147,7 +146,7 @@ public class EntityMinecartDestroyer extends EntityMinecartContainerBase impleme @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICartDestroyer(player.inventory, (EntityMinecartDestroyer) player.worldObj.getEntityByID(x)); } } diff --git a/src/main/java/com/hbm/entity/effect/EntityFireLingering.java b/src/main/java/com/hbm/entity/effect/EntityFireLingering.java new file mode 100644 index 000000000..1aef970e4 --- /dev/null +++ b/src/main/java/com/hbm/entity/effect/EntityFireLingering.java @@ -0,0 +1,104 @@ +package com.hbm.entity.effect; + +import java.util.List; + +import com.hbm.extprop.HbmLivingProps; +import com.hbm.particle.helper.FlameCreator; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class EntityFireLingering extends Entity { + + public static int TYPE_DIESEL = 0; + public static int TYPE_BALEFIRE = 1; + public static int TYPE_PHOSPHORUS = 2; + public int maxAge = 150; + + public EntityFireLingering(World world) { + super(world); + } + + public EntityFireLingering setArea(float width, float height) { + this.dataWatcher.updateObject(11, width); + this.dataWatcher.updateObject(12, height); + return this; + } + public EntityFireLingering setDuration(int duration){ + this.maxAge = duration; + return this; + } + + @Override + protected void entityInit() { + this.dataWatcher.addObject(10, new Integer(0)); + this.dataWatcher.addObject(11, new Float(0)); + this.dataWatcher.addObject(12, new Float(0)); + } + + public EntityFireLingering setType(int type) { + this.dataWatcher.updateObject(10, type); + return this; + } + + public int getType() { + return this.dataWatcher.getWatchableObjectInt(10); + } + + @Override + public void onEntityUpdate() { + + float height = this.dataWatcher.getWatchableObjectFloat(12); + this.yOffset = 0; + this.setSize(this.dataWatcher.getWatchableObjectFloat(11), height); + this.setPosition(this.posX, this.posY, this.posZ); + + if(!worldObj.isRemote) { + + if(this.ticksExisted >= maxAge) { + this.setDead(); + } + + List affected = worldObj.getEntitiesWithinAABBExcludingEntity(this, AxisAlignedBB.getBoundingBox(posX - width / 2, posY, posZ - width / 2, posX + width / 2, posY + height, posZ + width / 2)); + + for(Entity e : affected) { + if(e instanceof EntityLivingBase) { + EntityLivingBase livng = (EntityLivingBase) e; + HbmLivingProps props = HbmLivingProps.getData(livng); + if(this.getType() == this.TYPE_DIESEL) if(props.fire < 60) props.fire = 60; + if(this.getType() == this.TYPE_PHOSPHORUS) if(props.fire < 300) props.fire = 300; + if(this.getType() == this.TYPE_BALEFIRE) if(props.balefire < 100) props.balefire = 100; + } else { + e.setFire(4); + } + } + } else { + + for(int i = 0; i < (width >= 5 ? 2 : 1); i++) { + double x = posX - width / 2 + rand.nextDouble() * width; + double z = posZ - width / 2 + rand.nextDouble() * width; + + Vec3 up = Vec3.createVectorHelper(x, posY + height, z); + Vec3 down = Vec3.createVectorHelper(x, posY - height, z); + MovingObjectPosition mop = worldObj.func_147447_a(up, down, false, true, true); + if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK) down = mop.hitVec; + if(this.getType() == this.TYPE_DIESEL) FlameCreator.composeEffectClient(worldObj, x, down.yCoord, z, FlameCreator.META_FIRE); + if(this.getType() == this.TYPE_PHOSPHORUS) FlameCreator.composeEffectClient(worldObj, x, down.yCoord, z, FlameCreator.META_FIRE); + if(this.getType() == this.TYPE_BALEFIRE) FlameCreator.composeEffectClient(worldObj, x, down.yCoord, z, FlameCreator.META_BALEFIRE); + } + } + } + + @Override @SideOnly(Side.CLIENT) public boolean canRenderOnFire() { return false; } + @Override protected void writeEntityToNBT(NBTTagCompound nbt) { } + @Override public boolean writeToNBTOptional(NBTTagCompound nbt) { return false; } + @Override public void writeToNBT(NBTTagCompound nbt) { } + @Override public void readEntityFromNBT(NBTTagCompound nbt) { this.setDead(); } +} diff --git a/src/main/java/com/hbm/entity/effect/EntityMist.java b/src/main/java/com/hbm/entity/effect/EntityMist.java index 50df95ae6..8c5fef05e 100644 --- a/src/main/java/com/hbm/entity/effect/EntityMist.java +++ b/src/main/java/com/hbm/entity/effect/EntityMist.java @@ -66,7 +66,6 @@ public class EntityMist extends Entity { public FluidType getType() { return Fluids.fromID(this.dataWatcher.getWatchableObjectInt(10)); } - @Override public void onEntityUpdate() { diff --git a/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java index 4e215b4ed..d26e96767 100644 --- a/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java +++ b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java @@ -201,7 +201,7 @@ public class EntityDeliveryDrone extends EntityDroneBase implements IInventory, if(!worldObj.isRemote && loaderTicket != null) { clearChunkLoader(); ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(newChunkX, newChunkZ)); - ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(newChunkX + (int) Math.ceil((this.posX + this.motionX) / 16D), newChunkZ + (int) Math.ceil((this.posZ + this.motionZ) / 16D))); + ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair((int) Math.ceil((this.posX + this.motionX) / 16D), (int) Math.ceil((this.posZ + this.motionZ) / 16D))); } } diff --git a/src/main/java/com/hbm/entity/item/EntityDroneBase.java b/src/main/java/com/hbm/entity/item/EntityDroneBase.java index f7d12a9e2..b6e269869 100644 --- a/src/main/java/com/hbm/entity/item/EntityDroneBase.java +++ b/src/main/java/com/hbm/entity/item/EntityDroneBase.java @@ -103,14 +103,12 @@ public abstract class EntityDroneBase extends Entity { if(this.targetY != -1) { Vec3 dist = Vec3.createVectorHelper(targetX - posX, targetY - posY, targetZ - posZ); - double speed = getSpeed(); + double speed = Math.min(getSpeed(), dist.lengthVector()); - if(dist.lengthVector() >= speed) { - dist = dist.normalize(); - this.motionX = dist.xCoord * speed; - this.motionY = dist.yCoord * speed; - this.motionZ = dist.zCoord * speed; - } + dist = dist.normalize(); + this.motionX = dist.xCoord * speed; + this.motionY = dist.yCoord * speed; + this.motionZ = dist.zCoord * speed; } if(isCollidedHorizontally){ motionY += 1; diff --git a/src/main/java/com/hbm/entity/item/EntityFallingBlockNT.java b/src/main/java/com/hbm/entity/item/EntityFallingBlockNT.java index 150c4352f..6e1375bbc 100644 --- a/src/main/java/com/hbm/entity/item/EntityFallingBlockNT.java +++ b/src/main/java/com/hbm/entity/item/EntityFallingBlockNT.java @@ -109,6 +109,7 @@ public class EntityFallingBlockNT extends Entity { int x = MathHelper.floor_double(this.posX); int y = MathHelper.floor_double(this.posY); int z = MathHelper.floor_double(this.posZ); + int meta = this.getMeta(); if(this.fallingTicks == 1) { if(this.worldObj.getBlock(x, y, z) != this.getBlock()) { @@ -127,10 +128,10 @@ public class EntityFallingBlockNT extends Entity { if(this.worldObj.getBlock(x, y, z) != Blocks.piston_extension) { this.setDead(); - if(!this.destroyOnLand && replacementCheck(x, y, z) && this.worldObj.setBlock(x, y, z, this.getBlock(), this.getMeta(), 3)) { + if(!this.destroyOnLand && replacementCheck(x, y, z) && this.worldObj.setBlock(x, y, z, this.getBlock(), meta, 3)) { - if(this.getBlock() instanceof BlockFalling) ((BlockFalling) this.getBlock()).func_149828_a(this.worldObj, x, y, z, this.getMeta()); - if(this.getBlock() instanceof BlockFallingNT) ((BlockFallingNT) this.getBlock()).onLand(this.worldObj, x, y, z, this.getMeta()); + if(this.getBlock() instanceof BlockFalling) ((BlockFalling) this.getBlock()).func_149828_a(this.worldObj, x, y, z, meta); + if(this.getBlock() instanceof BlockFallingNT) ((BlockFallingNT) this.getBlock()).onLand(this.worldObj, x, y, z, meta); if(this.tileNBT != null && this.getBlock() instanceof ITileEntityProvider) { TileEntity tileentity = this.worldObj.getTileEntity(x, y, z); @@ -153,13 +154,13 @@ public class EntityFallingBlockNT extends Entity { tileentity.markDirty(); } } - } else if(this.canDrop && !this.destroyOnLand) { - this.entityDropItem(new ItemStack(this.getBlock(), 1, this.getBlock().damageDropped(this.getMeta())), 0.0F); + } else if(this.canDrop && !this.destroyOnLand && this.getBlock().getItemDropped(meta, rand, 0) != null) { + this.entityDropItem(new ItemStack(this.getBlock().getItemDropped(meta, rand, 0), 1, this.getBlock().damageDropped(meta)), 0.0F); } } } else if(this.fallingTicks > 100 && !this.worldObj.isRemote && (y < 1 || y > 256) || this.fallingTicks > 600) { - if(this.canDrop) { - this.entityDropItem(new ItemStack(this.getBlock(), 1, this.getBlock().damageDropped(this.getMeta())), 0.0F); + if(this.canDrop && this.getBlock().getItemDropped(meta, rand, 0) != null) { + this.entityDropItem(new ItemStack(this.getBlock().getItemDropped(meta, rand, 0), 1, this.getBlock().damageDropped(meta)), 0.0F); } this.setDead(); diff --git a/src/main/java/com/hbm/entity/item/EntityFireworks.java b/src/main/java/com/hbm/entity/item/EntityFireworks.java index 64227e4aa..6602c2ef4 100644 --- a/src/main/java/com/hbm/entity/item/EntityFireworks.java +++ b/src/main/java/com/hbm/entity/item/EntityFireworks.java @@ -1,7 +1,7 @@ package com.hbm.entity.item; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/hbm/entity/item/EntityMagnusCartus.java b/src/main/java/com/hbm/entity/item/EntityMagnusCartus.java index 478363a7d..53f379cae 100644 --- a/src/main/java/com/hbm/entity/item/EntityMagnusCartus.java +++ b/src/main/java/com/hbm/entity/item/EntityMagnusCartus.java @@ -1,8 +1,8 @@ package com.hbm.entity.item; import com.hbm.entity.cart.EntityMinecartBogie; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/hbm/entity/item/EntityMovingItem.java b/src/main/java/com/hbm/entity/item/EntityMovingItem.java index 56c291373..364aafc29 100644 --- a/src/main/java/com/hbm/entity/item/EntityMovingItem.java +++ b/src/main/java/com/hbm/entity/item/EntityMovingItem.java @@ -4,6 +4,7 @@ import com.hbm.util.fauxpointtwelve.BlockPos; import api.hbm.conveyor.IConveyorItem; import api.hbm.conveyor.IEnterableBlock; +import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; @@ -14,6 +15,8 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; public class EntityMovingItem extends EntityMovingConveyorObject implements IConveyorItem { + + public EntityItem cacheForRender = null; public EntityMovingItem(World p_i1582_1_) { super(p_i1582_1_); @@ -31,10 +34,11 @@ public class EntityMovingItem extends EntityMovingConveyorObject implements ICon return stack == null ? new ItemStack(Blocks.stone) : stack; } + /** Adds the item to the player's inventory */ @Override public boolean interactFirst(EntityPlayer player) { - if(!worldObj.isRemote && player.inventory.addItemStackToInventory(this.getItemStack().copy())) { + if(!worldObj.isRemote && !this.isDead && player.inventory.addItemStackToInventory(this.getItemStack().copy())) { player.inventoryContainer.detectAndSendChanges(); this.setDead(); } @@ -42,13 +46,21 @@ public class EntityMovingItem extends EntityMovingConveyorObject implements ICon return false; } + /** Knocks the item off the belt */ @Override - public boolean attackEntityFrom(DamageSource source, float amount) { + public boolean hitByEntity(Entity attacker) { - if(!worldObj.isRemote) { + if(!worldObj.isRemote && !this.isDead) { this.setDead(); worldObj.spawnEntityInWorld(new EntityItem(worldObj, posX, posY, posZ, this.getItemStack())); } + return false; + } + + /** Ensures the item is knocked off the belt due to non-player attacks (explosions, etc) */ + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + this.hitByEntity(source.getEntity()); return true; } @@ -57,6 +69,23 @@ public class EntityMovingItem extends EntityMovingConveyorObject implements ICon this.getDataWatcher().addObjectByDataType(10, 5); } + @Override + public void onUpdate() { + super.onUpdate(); + + if(worldObj.isRemote) { + ItemStack item = this.getItemStack(); + //initial cache creation + if(this.cacheForRender == null) { + cacheForRender = new EntityItem(worldObj, 0, 0, 0, item); + } + //if the cache is no longer relevant, update + if(!ItemStack.areItemStacksEqual(cacheForRender.getEntityItem(), item)) { + cacheForRender.setEntityItemStack(item); + } + } + } + @Override protected void readEntityFromNBT(NBTTagCompound nbt) { @@ -78,6 +107,7 @@ public class EntityMovingItem extends EntityMovingConveyorObject implements ICon @Override public void enterBlock(IEnterableBlock enterable, BlockPos pos, ForgeDirection dir) { + if(this.isDead) return; if(enterable.canItemEnter(worldObj, pos.getX(), pos.getY(), pos.getZ(), dir, this)) { enterable.onItemEnter(worldObj, pos.getX(), pos.getY(), pos.getZ(), dir, this); @@ -88,6 +118,8 @@ public class EntityMovingItem extends EntityMovingConveyorObject implements ICon @Override public boolean onLeaveConveyor() { + if(this.isDead) return true; + this.setDead(); EntityItem item = new EntityItem(worldObj, posX + motionX * 2, posY + motionY * 2, posZ + motionZ * 2, this.getItemStack()); item.motionX = this.motionX * 2; diff --git a/src/main/java/com/hbm/entity/item/EntityMovingPackage.java b/src/main/java/com/hbm/entity/item/EntityMovingPackage.java index adbf4a5b6..ddf2fb77d 100644 --- a/src/main/java/com/hbm/entity/item/EntityMovingPackage.java +++ b/src/main/java/com/hbm/entity/item/EntityMovingPackage.java @@ -5,6 +5,7 @@ import com.hbm.util.fauxpointtwelve.BlockPos; import api.hbm.conveyor.IConveyorPackage; import api.hbm.conveyor.IEnterableBlock; +import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -38,7 +39,7 @@ public class EntityMovingPackage extends EntityMovingConveyorObject implements I @Override public boolean interactFirst(EntityPlayer player) { - if(!worldObj.isRemote) { + if(!worldObj.isRemote && !this.isDead) { for(ItemStack stack : contents) { if(!player.inventory.addItemStackToInventory(stack.copy())) { @@ -53,15 +54,21 @@ public class EntityMovingPackage extends EntityMovingConveyorObject implements I } @Override - public boolean attackEntityFrom(DamageSource source, float amount) { + public boolean hitByEntity(Entity attacker) { - if(!worldObj.isRemote) { + if(!worldObj.isRemote && !this.isDead) { this.setDead(); for(ItemStack stack : contents) { worldObj.spawnEntityInWorld(new EntityItem(worldObj, posX, posY + 0.125, posZ, stack)); } } + return false; + } + + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + this.hitByEntity(source.getEntity()); return true; } diff --git a/src/main/java/com/hbm/entity/item/EntityParachuteCrate.java b/src/main/java/com/hbm/entity/item/EntityParachuteCrate.java new file mode 100644 index 000000000..b18195288 --- /dev/null +++ b/src/main/java/com/hbm/entity/item/EntityParachuteCrate.java @@ -0,0 +1,75 @@ +package com.hbm.entity.item; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockSupplyCrate.TileEntitySupplyCrate; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.world.World; + +public class EntityParachuteCrate extends Entity { + + public List items = new ArrayList(); + + public EntityParachuteCrate(World world) { + super(world); + this.ignoreFrustumCheck = true; + this.isImmuneToFire = true; + } + + @Override + public void onUpdate() { + + this.lastTickPosX = this.prevPosX = posX; + this.lastTickPosY = this.prevPosY = posY; + this.lastTickPosZ = this.prevPosZ = posZ; + this.setPosition(posX + this.motionX, posY + this.motionY, posZ + this.motionZ); + + if(this.motionY > -0.2) this.motionY -= 0.02; + if(posY > 600) posY = 600; + + if(this.worldObj.getBlock((int) Math.floor(this.posX), (int) Math.floor(this.posY), (int) Math.floor(this.posZ)) != Blocks.air) { + + this.setDead(); + + if(!worldObj.isRemote) { + + worldObj.setBlock((int) Math.floor(this.posX), (int) Math.floor(this.posY + 1), (int) Math.floor(this.posZ), ModBlocks.crate_supply); + TileEntitySupplyCrate crate = (TileEntitySupplyCrate) worldObj.getTileEntity((int) Math.floor(this.posX), (int) Math.floor(this.posY + 1), (int) Math.floor(this.posZ)); + if(crate != null) crate.items.addAll(this.items); + } + } + } + + @Override protected void entityInit() { } + @Override @SideOnly(Side.CLIENT) public boolean isInRangeToRenderDist(double distance) { return true; } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + items.clear(); + NBTTagList list = nbt.getTagList("items", 10); + for(int i = 0; i < list.tagCount(); i++) { + NBTTagCompound nbt1 = list.getCompoundTagAt(i); + items.add(ItemStack.loadItemStackFromNBT(nbt1)); + } + } + + @Override + public void writeEntityToNBT(NBTTagCompound nbt) { + NBTTagList list = new NBTTagList(); + for(int i = 0; i < items.size(); i++) { + NBTTagCompound nbt1 = new NBTTagCompound(); + items.get(i).writeToNBT(nbt1); + list.appendTag(nbt1); + } + nbt.setTag("items", list); + } +} diff --git a/src/main/java/com/hbm/entity/item/EntityRequestDrone.java b/src/main/java/com/hbm/entity/item/EntityRequestDrone.java index 9a63c5dfd..6e8a742a1 100644 --- a/src/main/java/com/hbm/entity/item/EntityRequestDrone.java +++ b/src/main/java/com/hbm/entity/item/EntityRequestDrone.java @@ -199,7 +199,7 @@ public class EntityRequestDrone extends EntityDroneBase { @Override public double getSpeed() { - return 0.6D; + return 0.625D; } @Override diff --git a/src/main/java/com/hbm/entity/logic/EntityBomber.java b/src/main/java/com/hbm/entity/logic/EntityBomber.java index 820bdfc3b..911a09e28 100644 --- a/src/main/java/com/hbm/entity/logic/EntityBomber.java +++ b/src/main/java/com/hbm/entity/logic/EntityBomber.java @@ -1,516 +1,263 @@ package com.hbm.entity.logic; -import java.util.ArrayList; -import java.util.List; - import com.hbm.config.GeneralConfig; import com.hbm.entity.projectile.EntityBombletZeta; import com.hbm.entity.projectile.EntityBoxcar; -import com.hbm.entity.projectile.EntityRocketHoming; import com.hbm.explosion.ExplosionChaos; -import com.hbm.explosion.ExplosionLarge; -import com.hbm.lib.ModDamageSource; +import com.hbm.interfaces.NotableComments; import com.hbm.main.MainRegistry; -import com.hbm.packet.LoopedEntitySoundPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.util.ParticleUtil; +import com.hbm.sound.AudioWrapper; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; -import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; -import net.minecraftforge.common.ForgeChunkManager; -import net.minecraftforge.common.ForgeChunkManager.Ticket; -import net.minecraftforge.common.ForgeChunkManager.Type; -public class EntityBomber extends Entity implements IChunkLoader { +@NotableComments +public class EntityBomber extends EntityPlaneBase { - int timer = 200; + /* This was probably the dumbest fucking way that I could have handled this. Not gonna change it now, be glad I made a superclass at all. */ int bombStart = 75; int bombStop = 125; int bombRate = 3; int type = 0; - - public int health = 50; - public EntityBomber(World p_i1582_1_) { - super(p_i1582_1_); + protected AudioWrapper audio; + + public EntityBomber(World world) { + super(world); this.ignoreFrustumCheck = true; - this.setSize(8.0F, 4.0F); + this.setSize(8.0F, 4.0F); + } + + @Override + public void entityInit() { + super.entityInit(); + this.dataWatcher.addObject(16, Byte.valueOf((byte) 0)); } - public boolean canBeCollidedWith() - { - return this.health > 0; - } - - public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_) - { - if(p_70097_1_ == ModDamageSource.nuclearBlast) - return false; - - if (this.isEntityInvulnerable()) - { - return false; - } - else - { - if (!this.isDead && !this.worldObj.isRemote && this.health > 0) - { - health -= p_70097_2_; - - if (this.health <= 0) - { - this.killBomber(); - } - } - - return true; - } - } - - private void killBomber() { - ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, false, true); - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "hbm:entity.planeShotDown", 25.0F, 1.0F); - } - + /** This sucks balls. Too bad! */ @Override public void onUpdate() { + super.onUpdate(); - //super.onUpdate(); - - this.lastTickPosX = this.prevPosX = posX; - this.lastTickPosY = this.prevPosY = posY; - this.lastTickPosZ = this.prevPosZ = posZ; - - this.setPosition(posX + motionX, posY + motionY, posZ + motionZ); - - if(!worldObj.isRemote) { - - this.dataWatcher.updateObject(17, health); - - if(health > 0) - PacketDispatcher.wrapper.sendToAllAround(new LoopedEntitySoundPacket(this.getEntityId()), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 250)); - } else { - health = this.dataWatcher.getWatchableObjectInt(17); - } - - this.rotation(); - - if(this.health <= 0) { - motionY -= 0.025; - - for(int i = 0; i < 10; i++) - ParticleUtil.spawnGasFlame(this.worldObj, this.posX + rand.nextGaussian() * 0.5 - motionX * 2, this.posY + rand.nextGaussian() * 0.5 - motionY * 2, this.posZ + rand.nextGaussian() * 0.5 - motionZ * 2, 0.0, 0.1, 0.0); - - if(worldObj.getBlock((int)posX, (int)posY, (int)posZ).isNormalCube() && !worldObj.isRemote) { - this.setDead(); - - /*worldObj.setBlock((int)posX, (int)posY, (int)posZ, ModBlocks.bomber); - TileEntityBomber te = (TileEntityBomber)worldObj.getTileEntity((int)posX, (int)posY, (int)posZ); - - if(te != null) { - te.yaw = (int)(this.rotationYaw); - te.pitch = (int)(this.rotationPitch); - - te.type = this.getDataWatcher().getWatchableObjectByte(16); - }*/ - - ExplosionLarge.explodeFire(worldObj, posX, posY, posZ, 25, true, false, true); - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "hbm:entity.planeCrash", 10.0F, 1.0F); - - return; + if(worldObj.isRemote) { + if(this.getDataWatcher().getWatchableObjectFloat(17) > 0) { + if(audio == null || !audio.isPlaying()) { + int bomberType = this.dataWatcher.getWatchableObjectByte(16); + audio = MainRegistry.proxy.getLoopedSound(bomberType <= 4 ? "hbm:entity.bomberSmallLoop" : "hbm:entity.bomberLoop", (float) posX, (float) posY, (float) posZ, 2F, 250F, 1F, 20); + audio.startSound(); + } + audio.keepAlive(); + audio.updatePosition((float) posX, (float) posY, (float) posZ); + } else { + if(audio != null && audio.isPlaying()) { + audio.stopSound(); + audio = null; + } } } - if(this.ticksExisted > timer) - this.setDead(); - if(!worldObj.isRemote && this.health > 0 && this.ticksExisted > bombStart && this.ticksExisted < bombStop && this.ticksExisted % bombRate == 0) { if(type == 3) { - - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "random.fizz", 5.0F, 2.6F + (rand.nextFloat() - rand.nextFloat()) * 0.8F); + worldObj.playSoundEffect((double) (posX + 0.5F), (double) (posY + 0.5F), (double) (posZ + 0.5F), "random.fizz", 5.0F, 2.6F + (rand.nextFloat() - rand.nextFloat()) * 0.8F); ExplosionChaos.spawnChlorine(worldObj, this.posX, this.posY - 1F, this.posZ, 10, 0.5, 3); - - } else if(type == 5) { - - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "hbm:weapon.missileTakeOff", 10.0F, 0.9F + rand.nextFloat() * 0.2F); - EntityRocketHoming rocket = new EntityRocketHoming(worldObj); - rocket.setIsCritical(true); - //rocket.motionX = motionX; - //rocket.motionZ = motionZ; - rocket.motionY = -1; - rocket.shootingEntity = this; - rocket.homingRadius = 50; - rocket.homingMod = 5; - - rocket.posX = posX + rand.nextDouble() - 0.5; - rocket.posY = posY - rand.nextDouble(); - rocket.posZ = posZ + rand.nextDouble() - 0.5; - - worldObj.spawnEntityInWorld(rocket); - - } else if(type == 6) { - - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "hbm:weapon.missileTakeOff", 10.0F, 0.9F + rand.nextFloat() * 0.2F); - EntityBoxcar rocket = new EntityBoxcar(worldObj); - - rocket.posX = posX + rand.nextDouble() - 0.5; - rocket.posY = posY - rand.nextDouble(); - rocket.posZ = posZ + rand.nextDouble() - 0.5; - - worldObj.spawnEntityInWorld(rocket); - - } else if(type == 7) { - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "random.fizz", 5.0F, 2.6F + (rand.nextFloat() - rand.nextFloat()) * 0.8F); - ExplosionChaos.spawnChlorine(worldObj, this.posX, worldObj.getHeightValue((int)this.posX, (int)this.posZ) + 2, this.posZ, 10, 1, 2); - + } else if(type == 5) { + + } else if(type == 6) { + worldObj.playSoundEffect((double) (posX + 0.5F), (double) (posY + 0.5F), (double) (posZ + 0.5F), "hbm:weapon.missileTakeOff", 10.0F, 0.9F + rand.nextFloat() * 0.2F); + EntityBoxcar rocket = new EntityBoxcar(worldObj); + rocket.posX = posX + rand.nextDouble() - 0.5; + rocket.posY = posY - rand.nextDouble(); + rocket.posZ = posZ + rand.nextDouble() - 0.5; + worldObj.spawnEntityInWorld(rocket); + + } else if(type == 7) { + worldObj.playSoundEffect((double) (posX + 0.5F), (double) (posY + 0.5F), (double) (posZ + 0.5F), "random.fizz", 5.0F, 2.6F + (rand.nextFloat() - rand.nextFloat()) * 0.8F); + ExplosionChaos.spawnChlorine(worldObj, this.posX, worldObj.getHeightValue((int) this.posX, (int) this.posZ) + 2, this.posZ, 10, 1, 2); + } else { - - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "hbm:entity.bombWhistle", 10.0F, 0.9F + rand.nextFloat() * 0.2F); - + worldObj.playSoundEffect((double) (posX + 0.5F), (double) (posY + 0.5F), (double) (posZ + 0.5F), "hbm:entity.bombWhistle", 10.0F, 0.9F + rand.nextFloat() * 0.2F); EntityBombletZeta zeta = new EntityBombletZeta(worldObj); - /*zeta.prevRotationYaw = zeta.rotationYaw = this.rotationYaw; - zeta.prevRotationPitch = zeta.rotationPitch = this.rotationPitch;*/ - zeta.rotation(); - zeta.type = type; - zeta.posX = posX + rand.nextDouble() - 0.5; zeta.posY = posY - rand.nextDouble(); zeta.posZ = posZ + rand.nextDouble() - 0.5; - if(type == 0) { - zeta.motionX = motionX + rand.nextGaussian() * 0.15; - zeta.motionZ = motionZ + rand.nextGaussian() * 0.15; + zeta.motionX = motionX + rand.nextGaussian() * 0.15; zeta.motionZ = motionZ + rand.nextGaussian() * 0.15; } else { - zeta.motionX = motionX; - zeta.motionZ = motionZ; + zeta.motionX = motionX; zeta.motionZ = motionZ; } - worldObj.spawnEntityInWorld(zeta); } } - - if(!worldObj.isRemote) - loadNeighboringChunks((int)(posX / 16), (int)(posZ / 16)); - } - - public void fac(World world, double x, double y, double z) { - - Vec3 vector = Vec3.createVectorHelper(world.rand.nextDouble() - 0.5, 0, world.rand.nextDouble() - 0.5); - vector = vector.normalize(); - vector.xCoord *= GeneralConfig.enableBomberShortMode ? 1 : 2; - vector.zCoord *= GeneralConfig.enableBomberShortMode ? 1 : 2; - - this.setLocationAndAngles(x - vector.xCoord * 100, y + 50, z - vector.zCoord * 100, 0.0F, 0.0F); - this.loadNeighboringChunks((int)(x / 16), (int)(z / 16)); - - this.motionX = vector.xCoord; - this.motionZ = vector.zCoord; - this.motionY = 0.0D; - - this.rotation(); - - int i = 1; - - int rand = world.rand.nextInt(7); - - switch(rand) { - case 0: - case 1: i = 1; break; - case 2: - case 3: i = 2; break; - case 4: i = 5; break; - case 5: i = 6; break; - case 6: i = 7; break; - } - - if(world.rand.nextInt(100) == 0) { - rand = world.rand.nextInt(4); - switch(rand) { - case 0: i = 0; break; - case 1: i = 3; break; - case 2: i = 4; break; - case 3: i = 8; break; - } - } - - this.getDataWatcher().updateObject(16, (byte)i); - this.setSize(8.0F, 4.0F); - } - - public static EntityBomber statFacCarpet(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 50; - bomber.bombStop = 100; - bomber.bombRate = 2; + public void fac(World world, double x, double y, double z) { - bomber.fac(world, x, y, z); - - bomber.type = 0; - - return bomber; - } - - public static EntityBomber statFacNapalm(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 50; - bomber.bombStop = 100; - bomber.bombRate = 5; + Vec3 vector = Vec3.createVectorHelper(world.rand.nextDouble() - 0.5, 0, world.rand.nextDouble() - 0.5); + vector = vector.normalize(); + vector.xCoord *= GeneralConfig.enableBomberShortMode ? 1 : 2; + vector.zCoord *= GeneralConfig.enableBomberShortMode ? 1 : 2; - bomber.fac(world, x, y, z); - - bomber.type = 1; - - return bomber; - } - - public static EntityBomber statFacChlorine(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 50; - bomber.bombStop = 100; - bomber.bombRate = 4; + this.setLocationAndAngles(x - vector.xCoord * 100, y + 50, z - vector.zCoord * 100, 0.0F, 0.0F); + this.loadNeighboringChunks((int) (x / 16), (int) (z / 16)); - bomber.fac(world, x, y, z); - - bomber.type = 2; - - return bomber; - } - - public static EntityBomber statFacOrange(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 75; - bomber.bombStop = 125; - bomber.bombRate = 1; + this.motionX = vector.xCoord; + this.motionZ = vector.zCoord; + this.motionY = 0.0D; - bomber.fac(world, x, y, z); - - bomber.type = 3; - - return bomber; - } - - public static EntityBomber statFacABomb(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 60; - bomber.bombStop = 70; - bomber.bombRate = 65; + this.rotation(); - bomber.fac(world, x, y, z); - - int i = 1; - - int rand = world.rand.nextInt(3); - - switch(rand) { - case 0: i = 5; break; - case 1: i = 6; break; - case 2: i = 7; break; - } - - if(world.rand.nextInt(100) == 0) { - i = 8; - } - - bomber.getDataWatcher().updateObject(16, (byte)i); - - bomber.type = 4; - - return bomber; - } - - public static EntityBomber statFacStinger(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 50; - bomber.bombStop = 150; - bomber.bombRate = 10; + int i = 1; - bomber.fac(world, x, y, z); - - bomber.getDataWatcher().updateObject(16, (byte)4); - - bomber.type = 5; - - return bomber; - } - - public static EntityBomber statFacBoxcar(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 50; - bomber.bombStop = 150; - bomber.bombRate = 10; + int rand = world.rand.nextInt(7); - bomber.fac(world, x, y, z); - - bomber.getDataWatcher().updateObject(16, (byte)6); - - bomber.type = 6; - - return bomber; - } - - public static EntityBomber statFacPC(World world, double x, double y, double z) { - - EntityBomber bomber = new EntityBomber(world); - - bomber.timer = 200; - bomber.bombStart = 75; - bomber.bombStop = 125; - bomber.bombRate = 1; + switch(rand) { + case 0: case 1: i = 1; break; + case 2: case 3: i = 2; break; + case 4: i = 5; break; + case 5: i = 6; break; + case 6: i = 7; break; + } - bomber.fac(world, x, y, z); - - bomber.getDataWatcher().updateObject(16, (byte)6); - - bomber.type = 7; - - return bomber; - } + if(world.rand.nextInt(100) == 0) { + rand = world.rand.nextInt(4); + switch(rand) { + case 0: i = 0; break; + case 1: i = 3; break; + case 2: i = 4; break; + case 3: i = 8; break; + } + } - @Override - public void entityInit() { - init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); - this.dataWatcher.addObject(16, Byte.valueOf((byte)0)); - this.dataWatcher.addObject(17, Integer.valueOf((int)50)); - } + this.getDataWatcher().updateObject(16, (byte) i); + this.setSize(8.0F, 4.0F); + } + + public static EntityBomber statFacCarpet(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 50; + bomber.bombStop = 100; + bomber.bombRate = 2; + bomber.fac(world, x, y, z); + bomber.type = 0; + return bomber; + } + + public static EntityBomber statFacNapalm(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 50; + bomber.bombStop = 100; + bomber.bombRate = 5; + bomber.fac(world, x, y, z); + bomber.type = 1; + return bomber; + } + + public static EntityBomber statFacChlorine(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 50; + bomber.bombStop = 100; + bomber.bombRate = 4; + bomber.fac(world, x, y, z); + bomber.type = 2; + return bomber; + } + + public static EntityBomber statFacOrange(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 75; + bomber.bombStop = 125; + bomber.bombRate = 1; + bomber.fac(world, x, y, z); + bomber.type = 3; + return bomber; + } + + public static EntityBomber statFacABomb(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 60; + bomber.bombStop = 70; + bomber.bombRate = 65; + bomber.fac(world, x, y, z); + int i = 1; + + int rand = world.rand.nextInt(3); + + switch(rand) { + case 0: i = 5; break; + case 1: i = 6; break; + case 2: i = 7; break; + } + if(world.rand.nextInt(100) == 0) i = 8; + + bomber.getDataWatcher().updateObject(16, (byte) i); + bomber.type = 4; + return bomber; + } + + public static EntityBomber statFacStinger(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 50; + bomber.bombStop = 150; + bomber.bombRate = 10; + bomber.fac(world, x, y, z); + bomber.getDataWatcher().updateObject(16, (byte) 4); + bomber.type = 5; + return bomber; + } + + public static EntityBomber statFacBoxcar(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 50; + bomber.bombStop = 150; + bomber.bombRate = 10; + bomber.fac(world, x, y, z); + bomber.getDataWatcher().updateObject(16, (byte) 6); + bomber.type = 6; + return bomber; + } + + public static EntityBomber statFacPC(World world, double x, double y, double z) { + EntityBomber bomber = new EntityBomber(world); + bomber.timer = 200; + bomber.bombStart = 75; + bomber.bombStop = 125; + bomber.bombRate = 1; + bomber.fac(world, x, y, z); + bomber.getDataWatcher().updateObject(16, (byte) 6); + bomber.type = 7; + return bomber; + } @Override protected void readEntityFromNBT(NBTTagCompound nbt) { - ticksExisted = nbt.getInteger("ticksExisted"); + super.readEntityFromNBT(nbt); bombStart = nbt.getInteger("bombStart"); bombStop = nbt.getInteger("bombStop"); bombRate = nbt.getInteger("bombRate"); type = nbt.getInteger("type"); - - this.getDataWatcher().updateObject(16, nbt.getByte("style")); - this.getDataWatcher().updateObject(17, nbt.getInteger("health")); - this.setSize(8.0F, 4.0F); + this.getDataWatcher().updateObject(16, nbt.getByte("style")); + this.setSize(8.0F, 4.0F); } @Override protected void writeEntityToNBT(NBTTagCompound nbt) { - nbt.setInteger("ticksExisted", ticksExisted); + super.writeEntityToNBT(nbt); nbt.setInteger("bombStart", bombStart); nbt.setInteger("bombStop", bombStop); nbt.setInteger("bombRate", bombRate); nbt.setInteger("type", type); nbt.setByte("style", this.getDataWatcher().getWatchableObjectByte(16)); - nbt.setInteger("health", this.getDataWatcher().getWatchableObjectInt(17)); } - - protected void rotation() { - float f2 = 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, f2) * 180.0D / Math.PI) - 90; 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; - } - } - - @Override - @SideOnly(Side.CLIENT) - public boolean isInRangeToRenderDist(double distance) - { - return distance < 500000; - } - - private Ticket loaderTicket; - - public void init(Ticket ticket) { - - if(!worldObj.isRemote) { - - if(ticket != null) { - - if(loaderTicket == null) { - - loaderTicket = ticket; - loaderTicket.bindEntity(this); - loaderTicket.getModData(); - } - - - ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(chunkCoordX, chunkCoordZ)); - } - } - } - - List loadedChunks = new ArrayList(); - - public void loadNeighboringChunks(int newChunkX, int newChunkZ) - { - if(!worldObj.isRemote && loaderTicket != null) - { - for(ChunkCoordIntPair chunk : loadedChunks) - { - ForgeChunkManager.unforceChunk(loaderTicket, chunk); - } - - loadedChunks.clear(); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + 1, newChunkZ + 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX - 1, newChunkZ - 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + 1, newChunkZ - 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX - 1, newChunkZ + 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + 1, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ + 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX - 1, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ - 1)); - - for(ChunkCoordIntPair chunk : loadedChunks) - { - ForgeChunkManager.forceChunk(loaderTicket, chunk); - } - } - } } diff --git a/src/main/java/com/hbm/entity/logic/EntityC130.java b/src/main/java/com/hbm/entity/logic/EntityC130.java new file mode 100644 index 000000000..0b0927845 --- /dev/null +++ b/src/main/java/com/hbm/entity/logic/EntityC130.java @@ -0,0 +1,98 @@ +package com.hbm.entity.logic; + +import com.hbm.entity.item.EntityParachuteCrate; +import com.hbm.itempool.ItemPool; +import com.hbm.itempool.ItemPoolsC130; +import com.hbm.main.MainRegistry; +import com.hbm.sound.AudioWrapper; +import com.hbm.util.EnumUtil; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class EntityC130 extends EntityPlaneBase { + + protected AudioWrapper audio; + public C130PayloadType payload = C130PayloadType.SUPPLIES; + + public EntityC130(World world) { + super(world); + this.ignoreFrustumCheck = true; + this.setSize(8.0F, 4.0F); + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(worldObj.isRemote) { + if(this.getDataWatcher().getWatchableObjectFloat(17) > 0) { + if(audio == null || !audio.isPlaying()) { + audio = MainRegistry.proxy.getLoopedSound("hbm:entity.bomberLoop", (float) posX, (float) posY, (float) posZ, 2F, 250F, 1F, 20); + audio.startSound(); + } + audio.keepAlive(); + audio.updatePosition((float) posX, (float) posY, (float) posZ); + } else { + if(audio != null && audio.isPlaying()) { + audio.stopSound(); + audio = null; + } + } + } + + if(!worldObj.isRemote && this.ticksExisted == this.getLifetime() / 2 && this.health > 0) { + EntityParachuteCrate crate = new EntityParachuteCrate(worldObj); + crate.setPosition(posX - motionX * 7, posY - 10, posZ - motionZ * 7); + + if(this.payload == C130PayloadType.SUPPLIES) { + for(int i = 0; i < 5; i++) crate.items.add(ItemPool.getStack(ItemPoolsC130.POOL_SUPPLIES, this.rand)); + } + if(this.payload == C130PayloadType.WEAPONS) { + int amount = 1 + rand.nextInt(2); + for(int i = 0; i < amount; i++) crate.items.add(ItemPool.getStack(ItemPoolsC130.POOL_WEAPONS, this.rand)); + for(int i = 0; i < 6; i++) crate.items.add(ItemPool.getStack(ItemPoolsC130.POOL_AMMO, this.rand)); + } + + worldObj.spawnEntityInWorld(crate); + } + } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + this.payload = EnumUtil.grabEnumSafely(C130PayloadType.class, nbt.getInteger("payload")); + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + nbt.setInteger("payload", this.payload.ordinal()); + } + + public void fac(World world, double x, double y, double z, C130PayloadType payload) { + + Vec3 vector = Vec3.createVectorHelper(world.rand.nextDouble() - 0.5, 0, world.rand.nextDouble() - 0.5); + vector = vector.normalize(); + vector.xCoord *= 2; + vector.zCoord *= 2; + + this.payload = payload; + + this.setLocationAndAngles(x - vector.xCoord * 100, y + 100, z - vector.zCoord * 100, 0.0F, 0.0F); + this.loadNeighboringChunks((int) (x / 16), (int) (z / 16)); + + this.motionX = vector.xCoord; + this.motionZ = vector.zCoord; + this.motionY = 0.0D; + + this.rotation(); + } + + public static enum C130PayloadType { + SUPPLIES, + WEAPONS, + A_FUCKING_FUEL_TRUCK + } +} diff --git a/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java b/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java index 75fea35f7..e8da0ab89 100644 --- a/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java +++ b/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java @@ -2,8 +2,8 @@ package com.hbm.entity.logic; import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/entity/logic/EntityEMP.java b/src/main/java/com/hbm/entity/logic/EntityEMP.java index 3ba75fc54..c322b4fa7 100644 --- a/src/main/java/com/hbm/entity/logic/EntityEMP.java +++ b/src/main/java/com/hbm/entity/logic/EntityEMP.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.ParticleBurstPacket; +import com.hbm.packet.toclient.ParticleBurstPacket; import api.hbm.energymk2.IEnergyHandlerMK2; import cofh.api.energy.IEnergyProvider; diff --git a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java index 665d9550d..c72a26679 100644 --- a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java +++ b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java @@ -16,8 +16,8 @@ import com.hbm.explosion.ExplosionNukeGeneric; import com.hbm.explosion.ExplosionSolinium; import com.hbm.interfaces.Spaghetti; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/com/hbm/entity/logic/EntityPlaneBase.java b/src/main/java/com/hbm/entity/logic/EntityPlaneBase.java new file mode 100644 index 000000000..ebb1accb2 --- /dev/null +++ b/src/main/java/com/hbm/entity/logic/EntityPlaneBase.java @@ -0,0 +1,204 @@ +package com.hbm.entity.logic; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.lib.ModDamageSource; +import com.hbm.main.MainRegistry; +import com.hbm.particle.helper.ExplosionSmallCreator; +import com.hbm.util.ParticleUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeChunkManager; +import net.minecraftforge.common.ForgeChunkManager.Ticket; +import net.minecraftforge.common.ForgeChunkManager.Type; + +public abstract class EntityPlaneBase extends Entity implements IChunkLoader { + + protected int turnProgress; + protected double syncPosX; + protected double syncPosY; + protected double syncPosZ; + protected double syncYaw; + protected double syncPitch; + @SideOnly(Side.CLIENT) + protected double velocityX; + @SideOnly(Side.CLIENT) + protected double velocityY; + @SideOnly(Side.CLIENT) + protected double velocityZ; + + private Ticket loaderTicket; + private List loadedChunks = new ArrayList(); + + public float health = getMaxHealth(); + public int timer = getLifetime(); + + public EntityPlaneBase(World world) { super(world); } + + public float getMaxHealth() { return 50F; } + public int getLifetime() { return 200; } + + @Override public boolean canBeCollidedWith() { return this.health > 0; } + + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + if(source == ModDamageSource.nuclearBlast) return false; + if(this.isEntityInvulnerable()) return false; + if(!this.isDead && !this.worldObj.isRemote && this.health > 0) { + health -= amount; + if(this.health <= 0) this.killPlane(); + } + return true; + } + + protected void killPlane() { + ExplosionSmallCreator.composeEffect(worldObj, posX, posY, posZ, 25, 3.5F, 2F); + worldObj.playSoundEffect(posX, posY, posZ, "hbm:entity.planeShotDown", 25.0F, 1.0F); + } + + @Override + protected void entityInit() { + init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); + this.dataWatcher.addObject(17, new Float(50F)); + } + + @Override + public void init(Ticket ticket) { + if(!worldObj.isRemote && ticket != null) { + if(loaderTicket == null) { + loaderTicket = ticket; + loaderTicket.bindEntity(this); + loaderTicket.getModData(); + } + ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(chunkCoordX, chunkCoordZ)); + } + } + + @Override + public void onUpdate() { + + if(!worldObj.isRemote) { + this.dataWatcher.updateObject(17, health); + } else { + health = this.dataWatcher.getWatchableObjectFloat(17); + } + + if(worldObj.isRemote) { + + this.lastTickPosX = this.posX; + this.lastTickPosY = this.posY; + this.lastTickPosZ = this.posZ; + if(this.turnProgress > 0) { + double interpX = this.posX + (this.syncPosX - this.posX) / (double) this.turnProgress; + double interpY = this.posY + (this.syncPosY - this.posY) / (double) this.turnProgress; + double interpZ = this.posZ + (this.syncPosZ - this.posZ) / (double) this.turnProgress; + double d = MathHelper.wrapAngleTo180_double(this.syncYaw - (double) this.rotationYaw); + this.rotationYaw = (float) ((double) this.rotationYaw + d / (double) this.turnProgress); + this.rotationPitch = (float)((double)this.rotationPitch + (this.syncPitch - (double)this.rotationPitch) / (double)this.turnProgress); + --this.turnProgress; + this.setPosition(interpX, interpY, interpZ); + } else { + this.setPosition(this.posX, this.posY, this.posZ); + } + + } else { + this.lastTickPosX = this.prevPosX = posX; + this.lastTickPosY = this.prevPosY = posY; + this.lastTickPosZ = this.prevPosZ = posZ; + this.setPosition(posX + motionX, posY + motionY, posZ + motionZ); + + this.rotation(); + + if(this.health <= 0) { + motionY -= 0.025; + + for(int i = 0; i < 10; i++) ParticleUtil.spawnGasFlame(this.worldObj, this.posX + rand.nextGaussian() * 0.5 - motionX * 2, this.posY + rand.nextGaussian() * 0.5 - motionY * 2, this.posZ + rand.nextGaussian() * 0.5 - motionZ * 2, 0.0, 0.1, 0.0); + + if((!worldObj.getBlock((int) posX, (int) posY, (int) posZ).isAir(worldObj, (int) posX, (int) posY, (int) posZ) || posY < 0)) { + this.setDead(); + new ExplosionVNT(worldObj, posX, posY, posZ, 15F).makeStandard().explode(); + worldObj.playSoundEffect(posX, posY, posZ, "hbm:entity.planeCrash", 25.0F, 1.0F); + return; + } + } else { + this.motionY = 0F; + } + + if(this.ticksExisted > timer) this.setDead(); + loadNeighboringChunks((int)Math.floor(posX / 16D), (int)Math.floor(posZ / 16D)); + } + } + + protected void rotation() { + float motionHorizontal = 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, motionHorizontal) * 180.0D / Math.PI) - 90; 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; + } + + @SideOnly(Side.CLIENT) + public void setVelocity(double velX, double velY, double velZ) { + this.velocityX = this.motionX = velX; + this.velocityY = this.motionY = velY; + this.velocityZ = this.motionZ = velZ; + } + + @SideOnly(Side.CLIENT) + public void setPositionAndRotation2(double x, double y, double z, float yaw, float pitch, int theNumberThree) { + this.syncPosX = x; + this.syncPosY = y; + this.syncPosZ = z; + this.syncYaw = yaw; + this.syncPitch = pitch; + this.turnProgress = theNumberThree; + this.motionX = this.velocityX; + this.motionY = this.velocityY; + this.motionZ = this.velocityZ; + } + + @Override + public void setDead() { + super.setDead(); + this.clearChunkLoader(); + } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + ticksExisted = nbt.getInteger("ticksExisted"); + this.getDataWatcher().updateObject(17, nbt.getFloat("health")); + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + nbt.setInteger("ticksExisted", ticksExisted); + nbt.setFloat("health", this.getDataWatcher().getWatchableObjectFloat(17)); + } + + public void clearChunkLoader() { + if(!worldObj.isRemote && loaderTicket != null) { + for(ChunkCoordIntPair chunk : loadedChunks) ForgeChunkManager.unforceChunk(loaderTicket, chunk); + } + } + + public void loadNeighboringChunks(int newChunkX, int newChunkZ) { + if(!worldObj.isRemote && loaderTicket != null) { + clearChunkLoader(); + loadedChunks.clear(); + loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); + for(ChunkCoordIntPair chunk : loadedChunks) ForgeChunkManager.forceChunk(loaderTicket, chunk); + } + } + + @Override @SideOnly(Side.CLIENT) public boolean isInRangeToRenderDist(double distance) { return true; } +} diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java index 3dbb048d8..8cd806ca0 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java @@ -30,7 +30,7 @@ public class EntityMissileAntiBallistic extends EntityThrowableInterp implements public Entity tracking; public double velocity; protected int activationTimer; - + public static double baseSpeed = 1.5D; public EntityMissileAntiBallistic(World world) { @@ -60,22 +60,22 @@ public class EntityMissileAntiBallistic extends EntityThrowableInterp implements super.onUpdate(); if(!worldObj.isRemote) { - + if(velocity < 6) velocity += 0.1; - + if(activationTimer < 40) { activationTimer++; motionY = baseSpeed; } else { Entity prevTracking = this.tracking; - + if(this.tracking == null || this.tracking.isDead) this.targetMissile(); - + if(prevTracking == null && this.tracking != null) { ExplosionLarge.spawnShock(worldObj, posX, posY, posZ, 24, 3F); } - - if(this.tracking != null) { + + if(this.tracking != null && !this.tracking.isDead) { this.aimAtTarget(); } else { if(this.ticksExisted > 600) this.setDead(); @@ -83,15 +83,20 @@ public class EntityMissileAntiBallistic extends EntityThrowableInterp implements } loadNeighboringChunks((int) Math.floor(posX / 16), (int) Math.floor(posZ / 16)); - + if(this.posY > 2000 && (this.tracking == null || this.tracking.isDead)) this.setDead(); - + } else { - + Vec3 vec = Vec3.createVectorHelper(motionX, motionY, motionZ).normalize(); - MainRegistry.proxy.particleControl(posX - vec.xCoord, posY - vec.yCoord, posZ - vec.zCoord, 2); + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "ABMContrail"); + data.setDouble("posX", posX - vec.xCoord); + data.setDouble("posY", posY - vec.yCoord); + data.setDouble("posZ", posZ - vec.zCoord); + MainRegistry.proxy.effectNT(data); } - + float f2 = 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, f2) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F); @@ -102,33 +107,33 @@ public class EntityMissileAntiBallistic extends EntityThrowableInterp implements /** Detects and caches nearby EntityMissileBaseNT */ protected void targetMissile() { - + Entity closest = null; double dist = 1_000; - + for(Entity e : TileEntityMachineRadarNT.matchingEntities) { if(e.dimension != this.dimension) continue; if(!(e instanceof EntityMissileBaseNT)) continue; //can only lock onto missiles if(e instanceof EntityMissileStealth) continue; //cannot lack onto missiles with stealth coating - + Vec3 vec = Vec3.createVectorHelper(e.posX - posX, e.posY - posY, e.posZ - posZ); - + if(vec.lengthVector() < dist) { closest = e; } } - + this.tracking = closest; } - + /** Predictive targeting system */ protected void aimAtTarget() { - + Vec3 delta = Vec3.createVectorHelper(tracking.posX - posX, tracking.posY - posY, tracking.posZ - posZ); double intercept = delta.lengthVector() / (this.baseSpeed * this.velocity); Vec3 predicted = Vec3.createVectorHelper(tracking.posX + (tracking.posX - tracking.lastTickPosX) * intercept, tracking.posY + (tracking.posY - tracking.lastTickPosY) * intercept, tracking.posZ + (tracking.posZ - tracking.lastTickPosZ) * intercept); Vec3 motion = Vec3.createVectorHelper(predicted.xCoord - posX, predicted.yCoord - posY, predicted.zCoord - posZ).normalize(); - + if(delta.lengthVector() < 10 && activationTimer >= 40) { this.setDead(); ExplosionLarge.explode(worldObj, posX, posY, posZ, 15F, true, false, false); @@ -168,13 +173,13 @@ public class EntityMissileAntiBallistic extends EntityThrowableInterp implements super.readEntityFromNBT(nbt); this.velocity = nbt.getDouble("veloc"); } - + @Override public void writeEntityToNBT(NBTTagCompound nbt) { super.writeEntityToNBT(nbt); nbt.setDouble("veloc", this.velocity); } - + @Override public void init(Ticket ticket) { if(!worldObj.isRemote) { @@ -197,7 +202,7 @@ public class EntityMissileAntiBallistic extends EntityThrowableInterp implements public void loadNeighboringChunks(int newChunkX, int newChunkZ) { if(!worldObj.isRemote && loaderTicket != null) { - + clearChunkLoader(); loadedChunks.clear(); @@ -208,13 +213,13 @@ public class EntityMissileAntiBallistic extends EntityThrowableInterp implements } } } - + @Override public void setDead() { super.setDead(); this.clearChunkLoader(); } - + public void clearChunkLoader() { if(!worldObj.isRemote && loaderTicket != null) { for(ChunkCoordIntPair chunk : loadedChunks) { diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java b/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java index 7429e0b8e..0b6a51cf8 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java @@ -30,8 +30,8 @@ import net.minecraft.world.World; public class EntityMissileCustom extends EntityMissileBaseNT implements IChunkLoader { - protected float fuel; - protected float consumption; + public float fuel; + public float consumption; public EntityMissileCustom(World world) { super(world); @@ -78,14 +78,20 @@ public class EntityMissileCustom extends EntityMissileBaseNT implements IChunkLo ExplosionLarge.spawnShrapnelShower(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 15, 0.075); } } - + @Override public void onUpdate() { - + + ItemCustomMissilePart part = (ItemCustomMissilePart) Item.getItemById(this.dataWatcher.getWatchableObjectInt(9)); + WarheadType type = (WarheadType) part.attributes[0]; + if(type != null && type.updateCustom != null) { + type.updateCustom.accept(this); + } + if(!worldObj.isRemote) { if(this.hasPropulsion()) this.fuel -= this.consumption; } - + super.onUpdate(); } @@ -125,7 +131,7 @@ public class EntityMissileCustom extends EntityMissileBaseNT implements IChunkLo nbt.setInteger("fins", this.dataWatcher.getWatchableObjectInt(11)); nbt.setInteger("thruster", this.dataWatcher.getWatchableObjectInt(12)); } - + @Override protected void spawnContrail() { @@ -142,7 +148,16 @@ public class EntityMissileCustom extends EntityMissileBaseNT implements IChunkLo case XENON: break; } - if(!smoke.isEmpty()) for(int i = 0; i < velocity; i++) MainRegistry.proxy.spawnParticle(posX - v.xCoord * i, posY - v.yCoord * i, posZ - v.zCoord * i, smoke, null); + if(!smoke.isEmpty()) { + for (int i = 0; i < velocity; i++) { + NBTTagCompound data = new NBTTagCompound(); + data.setDouble("posX", posX - v.xCoord * i); + data.setDouble("posY", posY - v.yCoord * i); + data.setDouble("posZ", posZ - v.zCoord * i); + data.setString("type", smoke); + MainRegistry.proxy.effectNT(data); + } + } } @Override @@ -153,6 +168,11 @@ public class EntityMissileCustom extends EntityMissileBaseNT implements IChunkLo WarheadType type = (WarheadType) part.attributes[0]; float strength = (Float) part.attributes[1]; + if(type.impactCustom != null) { + type.impactCustom.accept(this); + return; + } + switch(type) { case HE: ExplosionLarge.explode(worldObj, posX, posY, posZ, strength, true, false, true); @@ -233,7 +253,7 @@ public class EntityMissileCustom extends EntityMissileBaseNT implements IChunkLo if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_15) return "radar.target.custom15"; if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_20) return "radar.target.custom1520"; if(top == PartSize.SIZE_20 && bottom == PartSize.SIZE_20) return "radar.target.custom20"; - + return "radar.target.custom"; } @@ -249,7 +269,7 @@ public class EntityMissileCustom extends EntityMissileBaseNT implements IChunkLo if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_15) return IRadarDetectableNT.TIER15; if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_20) return IRadarDetectableNT.TIER15_20; if(top == PartSize.SIZE_20 && bottom == PartSize.SIZE_20) return IRadarDetectableNT.TIER20; - + return IRadarDetectableNT.TIER1; } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java b/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java index bdee6f5f4..6c07d944d 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java @@ -8,8 +8,8 @@ import com.hbm.explosion.ExplosionNT; import com.hbm.explosion.ExplosionNT.ExAttrib; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.init.Blocks; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java index 811d7944f..ed2a47309 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java @@ -12,10 +12,11 @@ import com.hbm.entity.effect.EntityEMPBlast; import com.hbm.entity.logic.EntityNukeExplosionMK3; import com.hbm.explosion.ExplosionNukeGeneric; import com.hbm.explosion.ExplosionNukeSmall; +import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.material.Mats; import com.hbm.items.ModItems; -import com.hbm.items.ItemAmmoEnums.AmmoFatman; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import net.minecraft.block.Block; import net.minecraft.init.Blocks; @@ -81,7 +82,7 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT { public EntityMissileMicro(World world) { super(world); } public EntityMissileMicro(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } @Override public void onImpact() { ExplosionNukeSmall.explode(worldObj, posX, posY + 0.5, posZ, ExplosionNukeSmall.PARAMS_HIGH); } - @Override public ItemStack getDebrisRareDrop() { return ModItems.ammo_nuke.stackFromEnum(AmmoFatman.HIGH); } + @Override public ItemStack getDebrisRareDrop() { return DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_HIGH); } @Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_micro); } } diff --git a/src/main/java/com/hbm/entity/mob/EntityCreeperNuclear.java b/src/main/java/com/hbm/entity/mob/EntityCreeperNuclear.java index ca78f32a9..e81b192dd 100644 --- a/src/main/java/com/hbm/entity/mob/EntityCreeperNuclear.java +++ b/src/main/java/com/hbm/entity/mob/EntityCreeperNuclear.java @@ -5,12 +5,13 @@ import java.util.List; import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.explosion.ExplosionNukeGeneric; import com.hbm.explosion.ExplosionNukeSmall; +import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.items.ModItems; -import com.hbm.items.ItemAmmoEnums.AmmoFatman; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.ContaminationUtil; import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.HazardType; @@ -81,7 +82,7 @@ public class EntityCreeperNuclear extends EntityCreeper { } if(p_70645_1_.getEntity() instanceof EntitySkeleton || (p_70645_1_.isProjectile() && p_70645_1_.getEntity() instanceof EntityArrow && ((EntityArrow) (p_70645_1_.getEntity())).shootingEntity == null)) { - this.entityDropItem(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.STOCK), 1); + this.entityDropItem(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_STANDARD), 1); } } diff --git a/src/main/java/com/hbm/entity/mob/EntityDummy.java b/src/main/java/com/hbm/entity/mob/EntityDummy.java new file mode 100644 index 000000000..cd64ff427 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityDummy.java @@ -0,0 +1,34 @@ +package com.hbm.entity.mob; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.passive.IAnimals; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemArmor; +import net.minecraft.world.World; + +public class EntityDummy extends EntityLiving implements IAnimals { + + public EntityDummy(World world) { + super(world); + } + + @Override + public boolean interact(EntityPlayer player) { + + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemArmor) { + ItemArmor armor = (ItemArmor) player.getHeldItem().getItem(); + this.setCurrentItemOrArmor(4 - armor.armorType, player.getHeldItem().copy()); + } + + return super.interact(player); + } + + @Override @SideOnly(Side.CLIENT) public boolean getAlwaysRenderNameTagForRender() { return true; } + @Override public String getCommandSenderName() { + return (int) (this.getHealth() * 10) / 10F + " / " + (int) (this.getMaxHealth() * 10) / 10F; } + //return (int) this.rotationYaw + " " + (int) this.renderYawOffset + " " + (int) this.rotationYawHead + " " + (int) this.newRotationYaw; } + + @Override protected void dropEquipment(boolean b, int i) { } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityFBI.java b/src/main/java/com/hbm/entity/mob/EntityFBI.java index ae95a2df2..a20e5c415 100644 --- a/src/main/java/com/hbm/entity/mob/EntityFBI.java +++ b/src/main/java/com/hbm/entity/mob/EntityFBI.java @@ -8,7 +8,6 @@ import com.hbm.blocks.ModBlocks; import com.hbm.config.MobConfig; import com.hbm.entity.mob.ai.EntityAIBreaking; import com.hbm.entity.pathfinder.PathFinderUtils; -import com.hbm.entity.projectile.EntityBullet; import com.hbm.items.ModItems; import net.minecraft.block.Block; @@ -97,8 +96,8 @@ public class EntityFBI extends EntityMob implements IRangedAttackMob { int equip = rand.nextInt(2); switch(equip) { - case 0: this.setCurrentItemOrArmor(0, new ItemStack(ModItems.gun_revolver_nopip)); break; - case 1: this.setCurrentItemOrArmor(0, new ItemStack(ModItems.gun_ks23)); break; + case 0: this.setCurrentItemOrArmor(0, new ItemStack(ModItems.gun_heavy_revolver)); break; + case 1: this.setCurrentItemOrArmor(0, new ItemStack(ModItems.gun_spas12)); break; } if(rand.nextInt(5) == 0) { @@ -141,24 +140,6 @@ public class EntityFBI extends EntityMob implements IRangedAttackMob { @Override public void attackEntityWithRangedAttack(EntityLivingBase entity, float f) { - - if(this.getEquipmentInSlot(0) != null) { - if(this.getEquipmentInSlot(0).getItem() == ModItems.gun_revolver_nopip) { - EntityBullet bullet = new EntityBullet(worldObj, this, entity, 3F, 2); - bullet.damage = 10; - this.worldObj.spawnEntityInWorld(bullet); - this.playSound("hbm:weapon.revolverShootAlt", 1.0F, 1.0F); - } - - if(this.getEquipmentInSlot(0).getItem() == ModItems.gun_ks23) { - for(int i = 0; i < 7; i++) { - EntityBullet bullet = new EntityBullet(worldObj, this, entity, 3F, 5); - bullet.damage = 3; - this.worldObj.spawnEntityInWorld(bullet); - } - this.playSound("hbm:weapon.shotgunShoot", 1.0F, 1.0F); - } - } } private static final Set canDestroy = new HashSet(); diff --git a/src/main/java/com/hbm/entity/mob/EntityHunterChopper.java b/src/main/java/com/hbm/entity/mob/EntityHunterChopper.java index c5e3bb9f7..cffaee494 100644 --- a/src/main/java/com/hbm/entity/mob/EntityHunterChopper.java +++ b/src/main/java/com/hbm/entity/mob/EntityHunterChopper.java @@ -5,8 +5,8 @@ import com.hbm.entity.projectile.EntityChopperMine; import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import api.hbm.entity.IRadiationImmune; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/entity/mob/EntityPigeon.java b/src/main/java/com/hbm/entity/mob/EntityPigeon.java index ad6d203fc..34e19c294 100644 --- a/src/main/java/com/hbm/entity/mob/EntityPigeon.java +++ b/src/main/java/com/hbm/entity/mob/EntityPigeon.java @@ -8,8 +8,8 @@ import com.hbm.entity.mob.ai.EntityAIStopFlying; import com.hbm.entity.mob.ai.EntityAISwimmingConditional; import com.hbm.entity.mob.ai.EntityAIWanderConditional; import com.hbm.items.tool.ItemFertilizer; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; diff --git a/src/main/java/com/hbm/entity/mob/EntityQuackos.java b/src/main/java/com/hbm/entity/mob/EntityQuackos.java index e310ac8a5..31169e994 100644 --- a/src/main/java/com/hbm/entity/mob/EntityQuackos.java +++ b/src/main/java/com/hbm/entity/mob/EntityQuackos.java @@ -1,14 +1,17 @@ package com.hbm.entity.mob; -import com.hbm.entity.particle.EntityBSmokeFX; import com.hbm.items.ModItems; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.EntityAgeable; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.boss.IBossDisplayData; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.DamageSource; import net.minecraft.util.MathHelper; import net.minecraft.world.World; @@ -102,10 +105,13 @@ public class EntityQuackos extends EntityDuck implements IBossDisplayData { if(!worldObj.isRemote) { for(int i = 0; i < 150; i++) { - - EntityBSmokeFX fx = new EntityBSmokeFX(worldObj); - fx.setPositionAndRotation(posX + rand.nextDouble() * 20 - 10, posY + rand.nextDouble() * 25, posZ + rand.nextDouble() * 20 - 10, 0, 0); - worldObj.spawnEntityInWorld(fx); + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "bf"); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, + posX + rand.nextDouble() * 20 - 10, + posY + rand.nextDouble() * 25, + posZ + rand.nextDouble() * 20 - 10), + new TargetPoint(dimension, posX, posY, posZ, 150)); } dropItem(ModItems.spawn_duck, 3); diff --git a/src/main/java/com/hbm/entity/mob/EntityTaintCrab.java b/src/main/java/com/hbm/entity/mob/EntityTaintCrab.java index aa0851cc9..b7f33cdd6 100644 --- a/src/main/java/com/hbm/entity/mob/EntityTaintCrab.java +++ b/src/main/java/com/hbm/entity/mob/EntityTaintCrab.java @@ -3,11 +3,11 @@ package com.hbm.entity.mob; import java.util.ArrayList; import java.util.List; -import com.hbm.entity.projectile.EntityBulletBaseNT; -import com.hbm.handler.BulletConfigSyncingUtil; +import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.items.ModItems; -import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.items.weapon.sedna.factory.XFactory762mm; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.potion.HbmPotion; import com.hbm.tileentity.machine.TileEntityTesla; @@ -28,51 +28,47 @@ public class EntityTaintCrab extends EntityCyberCrab { public EntityTaintCrab(World p_i1733_1_) { super(p_i1733_1_); - this.setSize(1.25F, 1.25F); - this.ignoreFrustumCheck = true; + this.setSize(1.25F, 1.25F); + this.ignoreFrustumCheck = true; } - - protected EntityAIArrowAttack arrowAI() { - return new EntityAIArrowAttack(this, 0.5D, 5, 5, 50.0F); - } - @Override - protected void applyEntityAttributes() - { - super.applyEntityAttributes(); - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(25.0D); - this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.5F); - } - - public void onLivingUpdate() { - - targets = TileEntityTesla.zap(worldObj, posX, posY + 1.25, posZ, 10, this); + protected EntityAIArrowAttack arrowAI() { + return new EntityAIArrowAttack(this, 0.5D, 5, 5, 50.0F); + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(25.0D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.5F); + } + + public void onLivingUpdate() { + + targets = TileEntityTesla.zap(worldObj, posX, posY + 1.25, posZ, 10, this); List targets = worldObj.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(posX - 5, posY - 5, posZ - 5, posX + 5, posY + 5, posZ + 5)); for(EntityLivingBase e : targets) { - - if(!(e instanceof EntityCyberCrab)) - e.addPotionEffect(new PotionEffect(HbmPotion.radiation.id, 10, 15)); + if(!(e instanceof EntityCyberCrab)) e.addPotionEffect(new PotionEffect(HbmPotion.radiation.id, 10, 15)); } - - super.onLivingUpdate(); - } - @Override - protected Item getDropItem() - { - return ModItems.coil_advanced_alloy; - } + super.onLivingUpdate(); + } - protected void dropRareDrop(int p_70600_1_) { - this.dropItem(ModItems.coil_magnetized_tungsten, 1); - } + @Override + protected Item getDropItem() { + return ModItems.coil_advanced_alloy; + } + + protected void dropRareDrop(int p_70600_1_) { + this.dropItem(ModItems.coil_magnetized_tungsten, 1); + } @Override public void attackEntityWithRangedAttack(EntityLivingBase entity, float f) { - EntityBulletBaseNT bullet = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.BMG50_STAR, this); + EntityBulletBaseMK4 bullet = new EntityBulletBaseMK4(this, XFactory762mm.r762_fmj, 10F, 0F, 0F, 0F, 0F); Vec3 motion = Vec3.createVectorHelper(posX - entity.posX, posY - entity.posZ - entity.height / 2, posZ - entity.posZ); motion = motion.normalize(); NBTTagCompound data = new NBTTagCompound(); @@ -82,7 +78,7 @@ public class EntityTaintCrab extends EntityCyberCrab { data.setDouble("mY", bullet.motionY * 0.3); data.setDouble("mZ", bullet.motionZ * 0.3); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bullet.posX, bullet.posY, bullet.posZ), new TargetPoint(this.dimension, posX, posY, posZ, 50)); - this.worldObj.spawnEntityInWorld(bullet); - this.playSound("hbm:weapon.sawShoot", 1.0F, 0.5F); + this.worldObj.spawnEntityInWorld(bullet); + this.playSound("hbm:weapon.sawShoot", 1.0F, 0.5F); } } diff --git a/src/main/java/com/hbm/entity/mob/EntityUFO.java b/src/main/java/com/hbm/entity/mob/EntityUFO.java index 4a8f46ee5..f30a84f93 100644 --- a/src/main/java/com/hbm/entity/mob/EntityUFO.java +++ b/src/main/java/com/hbm/entity/mob/EntityUFO.java @@ -9,8 +9,8 @@ import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.ContaminationUtil; import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.HazardType; diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAIFireGun.java b/src/main/java/com/hbm/entity/mob/ai/EntityAIFireGun.java new file mode 100644 index 000000000..1ba8c4eb6 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAIFireGun.java @@ -0,0 +1,136 @@ +package com.hbm.entity.mob.ai; + +import com.hbm.handler.HbmKeybinds.EnumKeybind; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; + +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.ai.EntityAIBase; +import net.minecraft.item.ItemStack; + +public class EntityAIFireGun extends EntityAIBase { + + private final EntityLiving host; + + private double attackMoveSpeed = 1.0D; // how fast we move while in this state + private double maxRange = 20; // how far our target can be before we stop shooting + private int burstTime = 10; // maximum number of ticks in a burst (for automatic weapons) + private int minWait = 10; // minimum number of ticks to wait between bursts/shots + private int maxWait = 40; // maximum number of ticks to wait between bursts/shots + private float inaccuracy = 30; // how many degrees of inaccuracy does the AI have + + // state timers + private int attackTimer = 0; + private FireState state = FireState.IDLE; + private int stateTimer = 0; + + private static enum FireState { + IDLE, + WAIT, + FIRING, + RELOADING, + } + + public EntityAIFireGun(EntityLiving host) { + this.host = host; + } + + @Override + public boolean shouldExecute() { + return host.getAttackTarget() != null && getYerGun() != null; + } + + @Override + public void updateTask() { + EntityLivingBase target = host.getAttackTarget(); + ItemStack stack = host.getHeldItem(); + ItemGunBaseNT gun = getYerGun(); + + gun.onUpdate(stack, host.worldObj, host, 0, true); + + double distanceToTargetSquared = host.getDistanceSq(target.posX, target.posY, target.posZ); + boolean canSeeTarget = host.getEntitySenses().canSee(target); + + if(canSeeTarget) { + attackTimer++; + } else { + attackTimer = 0; + } + + if(distanceToTargetSquared < maxRange * maxRange && attackTimer > 20) { + host.getNavigator().clearPathEntity(); + } else { + host.getNavigator().tryMoveToEntityLiving(target, attackMoveSpeed); + } + + host.getLookHelper().setLookPositionWithEntity(target, 30.0F, 30.0F); + + stateTimer--; + if(stateTimer < 0) { + stateTimer = 0; + + if(state == FireState.WAIT) { + updateState(FireState.IDLE, 0, gun, stack); + } else if(state != FireState.IDLE) { + updateState(FireState.WAIT, host.worldObj.rand.nextInt(maxWait - minWait) + minWait, gun, stack); + } + } else if(state == FireState.FIRING) { + // Keep the trigger held throughout the duration of firing + updateKeybind(gun, stack, EnumKeybind.GUN_PRIMARY); + } + + if(canSeeTarget && distanceToTargetSquared < maxRange * maxRange) { + if(state == FireState.IDLE) { + GunConfig config = gun.getConfig(stack, 0); + Receiver rec = config.getReceivers(stack)[0]; + if(rec.getMagazine(stack).getAmount(stack, null) <= 0) { + updateState(FireState.RELOADING, 20, gun, stack); + } else if(ItemGunBaseNT.getState(stack, 0) == GunState.IDLE) { + updateState(FireState.FIRING, host.worldObj.rand.nextInt(burstTime), gun, stack); + } + } + } + } + + private void updateState(FireState toState, int time, ItemGunBaseNT gun, ItemStack stack) { + state = toState; + stateTimer = time; + + switch(state) { + case FIRING: updateKeybind(gun, stack, EnumKeybind.GUN_PRIMARY); + case RELOADING: updateKeybind(gun, stack, EnumKeybind.RELOAD); + default: clearKeybinds(gun, stack); break; + } + } + + private void clearKeybinds(ItemGunBaseNT gun, ItemStack stack) { + updateKeybind(gun, stack, null); + } + + private void updateKeybind(ItemGunBaseNT gun, ItemStack stack, EnumKeybind bind) { + // Turn body to face firing direction, since the gun is attached to that, not the head + // Also apply accuracy debuff just before firing + if(bind != null && bind != EnumKeybind.RELOAD) { + host.rotationYawHead += (host.worldObj.rand.nextFloat() - 0.5F) * inaccuracy; + host.rotationPitch += (host.worldObj.rand.nextFloat() - 0.5F) * inaccuracy; + host.rotationYaw = host.rotationYawHead; + } + + gun.handleKeybind(host, null, stack, EnumKeybind.GUN_PRIMARY, bind == EnumKeybind.GUN_PRIMARY); + gun.handleKeybind(host, null, stack, EnumKeybind.GUN_SECONDARY, bind == EnumKeybind.GUN_SECONDARY); + gun.handleKeybind(host, null, stack, EnumKeybind.GUN_TERTIARY, bind == EnumKeybind.GUN_TERTIARY); + gun.handleKeybind(host, null, stack, EnumKeybind.RELOAD, bind == EnumKeybind.RELOAD); + } + + public ItemGunBaseNT getYerGun() { + ItemStack stack = host.getHeldItem(); + + if(stack == null || !(stack.getItem() instanceof ItemGunBaseNT)) return null; + + return (ItemGunBaseNT) stack.getItem(); + } + +} diff --git a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphid.java b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphid.java index a3ac74fbf..00162795a 100644 --- a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphid.java +++ b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphid.java @@ -3,21 +3,26 @@ package com.hbm.entity.mob.glyphid; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Locale; import com.hbm.blocks.ModBlocks; import com.hbm.config.MobConfig; import com.hbm.entity.logic.EntityWaypoint; import com.hbm.entity.mob.EntityParasiteMaggot; +import com.hbm.entity.mob.glyphid.GlyphidStats.StatBundle; import com.hbm.entity.pathfinder.PathFinderUtils; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.*; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.items.ModItems; +import com.hbm.lib.ModDamageSource; import com.hbm.main.ResourceManager; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.util.DamageResistanceHandler.DamageClass; +import api.hbm.entity.IResistanceProvider; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; import net.minecraft.entity.Entity; @@ -40,7 +45,7 @@ import net.minecraft.world.World; import javax.annotation.Nullable; -public class EntityGlyphid extends EntityMob { +public class EntityGlyphid extends EntityMob implements IResistanceProvider { //I might have overdone it a little bit @@ -86,6 +91,7 @@ public class EntityGlyphid extends EntityMob { //subtypes public static final int TYPE_NORMAL = 0; public static final int TYPE_INFECTED = 1; + public static final int TYPE_RADIOACTIVE = 2; //data watcher keys public static final int DW_WALL = 16; @@ -116,17 +122,36 @@ public class EntityGlyphid extends EntityMob { @Override protected void applyEntityAttributes() { super.applyEntityAttributes(); + int variant = this.dataWatcher.getWatchableObjectByte(DW_SUBTYPE); this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(GlyphidStats.getStats().getGrunt().health); - this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(GlyphidStats.getStats().getGrunt().speed); - this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(GlyphidStats.getStats().getGrunt().damage); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(GlyphidStats.getStats().getGrunt().speed * (variant == TYPE_RADIOACTIVE ? 2D : 1D)); + this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(GlyphidStats.getStats().getGrunt().damage * (variant == TYPE_RADIOACTIVE ? 5D : 1D)); } - public float getDivisorPerArmorPoint() { - return GlyphidStats.getStats().getGrunt().divisor; + public StatBundle getStats() { + return GlyphidStats.getStats().statsGrunt; } - public float getDamageThreshold() { - return GlyphidStats.getStats().getGrunt().damageThreshold; + @Override + public float[] getCurrentDTDR(DamageSource damage, float amount, float pierceDT, float pierce) { + if(damage.isDamageAbsolute() || damage.isUnblockable()) return new float[] {0F, 0F}; + StatBundle stats = this.getStats(); + float threshold = stats.thresholdMultForArmor * getGlyphidArmor() / 5F; + + if(damage == ModDamageSource.nuclearBlast) return new float[] {threshold * 0.25F, 0F}; // nukes shred shrough glyphids + if(damage.damageType.equals(DamageClass.LASER.name().toLowerCase(Locale.US))) return new float[] {threshold * 0.5F, stats.resistanceMult * 0.5F}; //lasers are quite powerful too + if(damage.damageType.equals(DamageClass.ELECTRIC.name().toLowerCase(Locale.US))) return new float[] {threshold * 0.25F, stats.resistanceMult * 0.25F}; //electricity even more so + if(damage.damageType.equals(DamageClass.SUBATOMIC.name().toLowerCase(Locale.US))) return new float[] {0F, stats.resistanceMult * 0.1F}; //and particles are almsot commpletely unaffected + + if(damage.isFireDamage()) return new float[] {0F, stats.resistanceMult * 0.2F}; //fire ignores DT and most DR + if(damage.isExplosion()) return new float[] {threshold * 0.5F, stats.resistanceMult * 0.35F}; //explosions are still subject to DT and reduce DR by a fair amount + + return new float[] {threshold, stats.resistanceMult}; + } + + @Override + public void onDamageDealt(DamageSource damage, float amount) { + if(this.isArmorBroken(amount)) this.breakOffArmor(); } @Override @@ -293,47 +318,44 @@ public class EntityGlyphid extends EntityMob { protected boolean canDespawn() { return entityToAttack == null && getCurrentTask() == TASK_IDLE && this.ticksExisted > 100; } + + @Override + public void onDeath(DamageSource source) { + super.onDeath(source); + + if(doesInfectedSpawnMaggots() && this.dataWatcher.getWatchableObjectByte(DW_SUBTYPE) == TYPE_INFECTED) { + + int j = 2 + this.rand.nextInt(3); + + for(int k = 0; k < j; ++k) { + float f = ((float) (k % 2) - 0.5F) * 0.5F; + float f1 = ((float) (k / 2) - 0.5F) * 0.5F; + EntityParasiteMaggot maggot = new EntityParasiteMaggot(worldObj); + maggot.setLocationAndAngles(this.posX + (double) f, this.posY + 0.5D, this.posZ + (double) f1, this.rand.nextFloat() * 360.0F, 0.0F); + maggot.motionX = f; + maggot.motionZ = f1; + maggot.velocityChanged = true; + this.worldObj.spawnEntityInWorld(maggot); + } + + worldObj.playSoundEffect(posX, posY, posZ, "mob.zombie.woodbreak", 2.0F, 0.95F + worldObj.rand.nextFloat() * 0.2F); + + NBTTagCompound vdat = new NBTTagCompound(); + vdat.setString("type", "giblets"); + vdat.setInteger("ent", this.getEntityId()); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(vdat, posX, posY + height * 0.5, posZ), new TargetPoint(dimension, posX, posY + height * 0.5, posZ, 150)); + + } + } @Override public boolean attackEntityFrom(DamageSource source, float amount) { - - if(source.getEntity() instanceof EntityGlyphid) { - return false; - } - - boolean alive = this.getHealth() > 0; + if(source.getEntity() instanceof EntityGlyphid) return false; boolean wasAttacked = GlyphidStats.getStats().handleAttack(this, source, amount); - - if(alive && this.getHealth() <= 0) { - if(doesInfectedSpawnMaggots() && this.dataWatcher.getWatchableObjectByte(DW_SUBTYPE) == TYPE_INFECTED) { - - int j = 2 + this.rand.nextInt(3); - - for(int k = 0; k < j; ++k) { - float f = ((float) (k % 2) - 0.5F) * 0.5F; - float f1 = ((float) (k / 2) - 0.5F) * 0.5F; - EntityParasiteMaggot maggot = new EntityParasiteMaggot(worldObj); - maggot.setLocationAndAngles(this.posX + (double) f, this.posY + 0.5D, this.posZ + (double) f1, this.rand.nextFloat() * 360.0F, 0.0F); - maggot.motionX = f; - maggot.motionZ = f1; - maggot.velocityChanged = true; - this.worldObj.spawnEntityInWorld(maggot); - } - - worldObj.playSoundEffect(posX, posY, posZ, "mob.zombie.woodbreak", 2.0F, 0.95F + worldObj.rand.nextFloat() * 0.2F); - - NBTTagCompound vdat = new NBTTagCompound(); - vdat.setString("type", "giblets"); - vdat.setInteger("ent", this.getEntityId()); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(vdat, posX, posY + height * 0.5, posZ), new TargetPoint(dimension, posX, posY + height * 0.5, posZ, 150)); - - } - } - return wasAttacked; } - /** Provides a direct entrypoint from outside to access the superclass' implementation because otherwise we end up wwith infinite recursion */ + /** Provides a direct entrypoint from outside to access the superclass' implementation because otherwise we end up with infinite recursion */ public boolean attackSuperclass(DamageSource source, float amount) { /*NBTTagCompound data = new NBTTagCompound(); @@ -354,22 +376,6 @@ public class EntityGlyphid extends EntityMob { return this.rand.nextInt(100) <= Math.min(Math.pow(amount * 0.6, 2), 100); } - public float calculateDamage(float amount) { - - byte armor = this.dataWatcher.getWatchableObjectByte(DW_ARMOR); - float divisor = 1; - - for(int i = 0; i < 5; i++) { - if((armor & (1 << i)) > 0) { - divisor += getDivisorPerArmorPoint(); - } - } - - amount /= divisor; - - return amount; - } - public void breakOffArmor() { byte armor = this.dataWatcher.getWatchableObjectByte(DW_ARMOR); List indices = Arrays.asList(0, 1, 2, 3, 4); @@ -386,6 +392,16 @@ public class EntityGlyphid extends EntityMob { } } } + + public int getGlyphidArmor() { + int total = 0; + byte armor = this.dataWatcher.getWatchableObjectByte(DW_ARMOR); + List indices = Arrays.asList(0, 1, 2, 3, 4); + for(Integer i : indices) { + total += (armor & (1 << i)) != 0 ? 1 : 0; + } + return total; + } @Override protected void updateArmSwingProgress() { diff --git a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBehemoth.java b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBehemoth.java index 22a53e3d2..743f2aadf 100644 --- a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBehemoth.java +++ b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBehemoth.java @@ -1,6 +1,7 @@ package com.hbm.entity.mob.glyphid; import com.hbm.entity.effect.EntityMist; +import com.hbm.entity.mob.glyphid.GlyphidStats.StatBundle; import com.hbm.entity.projectile.EntityChemical; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; @@ -40,9 +41,10 @@ public class EntityGlyphidBehemoth extends EntityGlyphid { this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(GlyphidStats.getStats().getBehemoth().speed); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(GlyphidStats.getStats().getBehemoth().damage); } - - @Override public float getDivisorPerArmorPoint() { return GlyphidStats.getStats().getBehemoth().divisor; } - @Override public float getDamageThreshold() { return GlyphidStats.getStats().getBehemoth().damageThreshold; } + + public StatBundle getStats() { + return GlyphidStats.getStats().statsBehemoth; + } public int timer = 120; int breathTime = 0; @@ -86,7 +88,7 @@ public class EntityGlyphidBehemoth extends EntityGlyphid { public void acidAttack(){ if(!worldObj.isRemote && entityToAttack instanceof EntityLivingBase && this.getDistanceToEntity(entityToAttack) < 20) { this.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 2 * 20, 6)); - EntityChemical chem = new EntityChemical(worldObj, this); + EntityChemical chem = new EntityChemical(worldObj, this, 0, 0, 0); chem.setFluid(Fluids.SULFURIC_ACID); worldObj.spawnEntityInWorld(chem); diff --git a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBlaster.java b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBlaster.java index fb0b7c320..37f622f3a 100644 --- a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBlaster.java +++ b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBlaster.java @@ -1,5 +1,6 @@ package com.hbm.entity.mob.glyphid; +import com.hbm.entity.mob.glyphid.GlyphidStats.StatBundle; import com.hbm.main.ResourceManager; import net.minecraft.entity.SharedMonsterAttributes; @@ -30,9 +31,10 @@ public class EntityGlyphidBlaster extends EntityGlyphidBombardier { this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(GlyphidStats.getStats().getBlaster().speed); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(GlyphidStats.getStats().getBlaster().damage); } - - @Override public float getDivisorPerArmorPoint() { return GlyphidStats.getStats().getBlaster().divisor; } - @Override public float getDamageThreshold() { return GlyphidStats.getStats().getBlaster().damageThreshold; } + + public StatBundle getStats() { + return GlyphidStats.getStats().statsBlaster; + } @Override public boolean isArmorBroken(float amount) { diff --git a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBombardier.java b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBombardier.java index 6a2f437cf..7fce71444 100644 --- a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBombardier.java +++ b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBombardier.java @@ -1,5 +1,6 @@ package com.hbm.entity.mob.glyphid; +import com.hbm.entity.mob.glyphid.GlyphidStats.StatBundle; import com.hbm.entity.projectile.EntityAcidBomb; import com.hbm.main.ResourceManager; @@ -32,9 +33,10 @@ public class EntityGlyphidBombardier extends EntityGlyphid { this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(GlyphidStats.getStats().getBombardier().speed); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(GlyphidStats.getStats().getBombardier().damage); } - - @Override public float getDivisorPerArmorPoint() { return GlyphidStats.getStats().getBombardier().divisor; } - @Override public float getDamageThreshold() { return GlyphidStats.getStats().getBombardier().damageThreshold; } + + public StatBundle getStats() { + return GlyphidStats.getStats().statsBombardier; + } @Override public void onUpdate() { diff --git a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBrawler.java b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBrawler.java index 7799040e2..acd51c8e0 100644 --- a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBrawler.java +++ b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBrawler.java @@ -1,6 +1,7 @@ package com.hbm.entity.mob.glyphid; +import com.hbm.entity.mob.glyphid.GlyphidStats.StatBundle; import com.hbm.main.ResourceManager; @@ -116,9 +117,11 @@ public class EntityGlyphidBrawler extends EntityGlyphid { this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(GlyphidStats.getStats().getBrawler().speed); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(GlyphidStats.getStats().getBrawler().damage); } - - @Override public float getDivisorPerArmorPoint() { return GlyphidStats.getStats().getBrawler().divisor; } - @Override public float getDamageThreshold() { return GlyphidStats.getStats().getBrawler().damageThreshold; } + + public StatBundle getStats() { + return GlyphidStats.getStats().statsBrawler; + } + @Override public boolean attackEntityFrom(DamageSource source, float amount) { diff --git a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBrenda.java b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBrenda.java index a4b2f8367..1f9263302 100644 --- a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBrenda.java +++ b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidBrenda.java @@ -1,6 +1,7 @@ package com.hbm.entity.mob.glyphid; import com.hbm.entity.effect.EntityMist; +import com.hbm.entity.mob.glyphid.GlyphidStats.StatBundle; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; import com.hbm.main.ResourceManager; @@ -36,9 +37,10 @@ public class EntityGlyphidBrenda extends EntityGlyphid { this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(GlyphidStats.getStats().getBrenda().speed); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(GlyphidStats.getStats().getBrenda().damage); } - - @Override public float getDivisorPerArmorPoint() { return GlyphidStats.getStats().getBrenda().divisor; } - @Override public float getDamageThreshold() { return GlyphidStats.getStats().getBrenda().damageThreshold; } + + public StatBundle getStats() { + return GlyphidStats.getStats().statsBrenda; + } @Override public boolean isArmorBroken(float amount) { diff --git a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidDigger.java b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidDigger.java index 1e044dcca..6e443333d 100644 --- a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidDigger.java +++ b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidDigger.java @@ -2,6 +2,7 @@ package com.hbm.entity.mob.glyphid; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; +import com.hbm.entity.mob.glyphid.GlyphidStats.StatBundle; import com.hbm.entity.projectile.EntityRubble; import com.hbm.lib.Library; import com.hbm.main.ResourceManager; @@ -43,9 +44,10 @@ public class EntityGlyphidDigger extends EntityGlyphid { this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(GlyphidStats.getStats().getDigger().speed); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(GlyphidStats.getStats().getDigger().damage); } - - @Override public float getDivisorPerArmorPoint() { return GlyphidStats.getStats().getDigger().divisor; } - @Override public float getDamageThreshold() { return GlyphidStats.getStats().getDigger().damageThreshold; } + + public StatBundle getStats() { + return GlyphidStats.getStats().statsDigger; + } public int timer = 0; diff --git a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidNuclear.java b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidNuclear.java index 7c1ce74e1..8b2128de0 100644 --- a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidNuclear.java +++ b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidNuclear.java @@ -3,6 +3,7 @@ package com.hbm.entity.mob.glyphid; import com.hbm.blocks.ModBlocks; import com.hbm.entity.logic.EntityWaypoint; import com.hbm.entity.mob.EntityParasiteMaggot; +import com.hbm.entity.mob.glyphid.GlyphidStats.StatBundle; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; import com.hbm.explosion.vanillant.standard.BlockMutatorDebris; @@ -11,8 +12,8 @@ import com.hbm.explosion.vanillant.standard.EntityProcessorStandard; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.main.MainRegistry; import com.hbm.main.ResourceManager; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.Entity; @@ -53,9 +54,10 @@ public class EntityGlyphidNuclear extends EntityGlyphid { this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(GlyphidStats.getStats().getNuclear().speed); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(GlyphidStats.getStats().getNuclear().damage); } - - @Override public float getDivisorPerArmorPoint() { return GlyphidStats.getStats().getNuclear().divisor; } - @Override public float getDamageThreshold() { return GlyphidStats.getStats().getNuclear().damageThreshold; } + + public StatBundle getStats() { + return GlyphidStats.getStats().statsNuclear; + } @Override public void onUpdate() { diff --git a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidScout.java b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidScout.java index ece0ee982..dbe0c8884 100644 --- a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidScout.java +++ b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidScout.java @@ -3,6 +3,7 @@ package com.hbm.entity.mob.glyphid; import com.hbm.blocks.ModBlocks; import com.hbm.config.MobConfig; import com.hbm.entity.logic.EntityWaypoint; +import com.hbm.entity.mob.glyphid.GlyphidStats.StatBundle; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.main.ResourceManager; import com.hbm.world.feature.GlyphidHive; @@ -61,9 +62,10 @@ public class EntityGlyphidScout extends EntityGlyphid { this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(GlyphidStats.getStats().getScout().speed); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(GlyphidStats.getStats().getScout().damage); } - - @Override public float getDivisorPerArmorPoint() { return GlyphidStats.getStats().getScout().divisor; } - @Override public float getDamageThreshold() { return GlyphidStats.getStats().getScout().damageThreshold; } + + public StatBundle getStats() { + return GlyphidStats.getStats().statsScout; + } @Override public boolean isArmorBroken(float amount) { diff --git a/src/main/java/com/hbm/entity/mob/glyphid/GlyphidStats.java b/src/main/java/com/hbm/entity/mob/glyphid/GlyphidStats.java index fa9594ec7..9332cb602 100644 --- a/src/main/java/com/hbm/entity/mob/glyphid/GlyphidStats.java +++ b/src/main/java/com/hbm/entity/mob/glyphid/GlyphidStats.java @@ -28,15 +28,24 @@ public abstract class GlyphidStats { public final double health; public final double speed; public final double damage; - public final float divisor; - public final float damageThreshold; + @Deprecated public final float divisor; + @Deprecated public final float damageThreshold; + /** Base threshold is calculated using this number * the glyphid's armor */ + public final float thresholdMultForArmor; + public final float resistanceMult; public StatBundle(double health, double speed, double damage, float divisor, float damageThreshold) { + this(health, speed, damage, divisor, damageThreshold, 0F, 0F); + } + + public StatBundle(double health, double speed, double damage, float divisor, float damageThreshold, float thresholdMultPerArmor, float resistanceMult) { this.health = health; this.speed = speed; this.damage = damage; this.divisor = divisor; this.damageThreshold = damageThreshold; + this.thresholdMultForArmor = thresholdMultPerArmor; + this.resistanceMult = resistanceMult; } } @@ -74,7 +83,7 @@ public abstract class GlyphidStats { if(armor != 0) { //if at least one bit of armor is present - if(amount < glyphid.getDamageThreshold()) return false; + if(amount < glyphid.getStats().damageThreshold) return false; //chances of armor being broken off if(amount > 1 && glyphid.isArmorBroken(amount)) { @@ -82,11 +91,11 @@ public abstract class GlyphidStats { amount *= 0.25F; } - amount -= glyphid.getDamageThreshold(); + amount -= glyphid.getStats().damageThreshold; if(amount < 0) return true; } - amount = glyphid.calculateDamage(amount); + //amount = glyphid.calculateDamage(amount); } if(source.isFireDamage()) { @@ -111,64 +120,22 @@ public abstract class GlyphidStats { public static class GlyphidStatsNT extends GlyphidStats { public GlyphidStatsNT() { - this.statsGrunt = new StatBundle(20D, 1D, 2D, 0.25F, 0F); - this.statsBombardier = new StatBundle(15D, 1D, 2D, 0.25F, 0F); - this.statsBrawler = new StatBundle(35D, 1D, 10D, 0.5F, 0.5F); - this.statsDigger = new StatBundle(50D, 1D, 10D, 0.5F, 0.5F); - this.statsBlaster = new StatBundle(35D, 1D, 10D, 0.5F, 0.5F); - this.statsBehemoth = new StatBundle(125D, 0.8D, 25D, 1.5F, 2F); - this.statsBrenda = new StatBundle(250D, 1.2D, 50D, 2.5F, 5F); - this.statsNuclear = new StatBundle(100D, 0.8D, 50D, 2.5F, 5F); - this.statsScout = new StatBundle(20D, 1.5D, 5D, 0.5F, 0F); + this.statsGrunt = new StatBundle(20D, 1D, 2D, 0.25F, 0F, 1F, 0.1F); + this.statsBombardier = new StatBundle(15D, 1D, 2D, 0.25F, 0F, 1F, 0.1F); + this.statsBrawler = new StatBundle(35D, 1D, 10D, 0.5F, 0.5F, 2F, 0.15F); + this.statsDigger = new StatBundle(50D, 1D, 10D, 0.5F, 0.5F, 3F, 0.20F); + this.statsBlaster = new StatBundle(35D, 1D, 10D, 0.5F, 0.5F, 2F, 0.15F); + this.statsBehemoth = new StatBundle(125D, 0.8D, 25D, 1.5F, 2F, 5F, 0.35F); + this.statsBrenda = new StatBundle(250D, 1.2D, 50D, 2.5F, 5F, 10F, 0.5F); + this.statsNuclear = new StatBundle(100D, 0.8D, 50D, 2.5F, 5F, 10F, 0.5F); + this.statsScout = new StatBundle(20D, 1.5D, 5D, 0.5F, 0F, 0.5F, 0.5F); } @Override public boolean handleAttack(EntityGlyphid glyphid, DamageSource source, float amount) { - // Completely immune to acid from other glyphids if((source == ModDamageSource.acid || ModDamageSource.s_acid.equals(source.getDamageType())) && source.getSourceOfDamage() instanceof EntityGlyphid) return false; - - // If damage is armor piercing or nuclear damage, don't apply any armor calculation - if(isNuclearDamage(source) || source.isDamageAbsolute() || source.isUnblockable()) { - if(source == DamageSource.inWall) amount *= 15F; - return glyphid.attackSuperclass(source, amount); - // This ensures that nukes will remain hyper-effective - } - - // If damage is fire damage, reduce damage above 5 then ignore armor - if(source.isFireDamage()) { - float dmg = Math.min(amount, 5F); - if(amount > 5) dmg += (amount - 5F) * 0.1F; - return glyphid.attackSuperclass(source, dmg); - // This ensures that afterburn and flamethrowers remain effective wihin reason - } - - // If damage is explosive, reduce by 25% then ignore armor - if(source.isExplosion()) { - amount *= 0.5F; - return glyphid.attackSuperclass(source, amount); - // This ensures that explosions remain mostly effective - } - - byte armor = glyphid.getDataWatcher().getWatchableObjectByte(glyphid.DW_ARMOR); - amount -= glyphid.getDamageThreshold(); - if(amount < 0) return armor == 0; // if armor is present, knockback from 0 damage attacks is negated - - if(armor != 0) { - if(glyphid.isArmorBroken(amount)) { - glyphid.breakOffArmor(); - amount *= 0.5F; - } - - amount = glyphid.calculateDamage((float) Math.min(amount, Math.sqrt(amount) * 50D / 7D)); - // This ensures that higher numbers have a diminishing effect - } - return glyphid.attackSuperclass(source, amount); } - - public boolean isNuclearDamage(DamageSource source) { - return source == ModDamageSource.nuclearBlast || source == ModDamageSource.radiation; - } } } diff --git a/src/main/java/com/hbm/entity/mob/siege/EntitySiegeCraft.java b/src/main/java/com/hbm/entity/mob/siege/EntitySiegeCraft.java index 72c0e29de..47dfee456 100644 --- a/src/main/java/com/hbm/entity/mob/siege/EntitySiegeCraft.java +++ b/src/main/java/com/hbm/entity/mob/siege/EntitySiegeCraft.java @@ -5,8 +5,8 @@ import java.util.List; import com.hbm.entity.mob.EntityUFOBase; import com.hbm.entity.projectile.EntitySiegeLaser; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.ContaminationUtil; import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.HazardType; diff --git a/src/main/java/com/hbm/entity/mob/siege/EntitySiegeTunneler.java b/src/main/java/com/hbm/entity/mob/siege/EntitySiegeTunneler.java index ff64a8476..00d85f351 100644 --- a/src/main/java/com/hbm/entity/mob/siege/EntitySiegeTunneler.java +++ b/src/main/java/com/hbm/entity/mob/siege/EntitySiegeTunneler.java @@ -1,6 +1,7 @@ package com.hbm.entity.mob.siege; import com.hbm.entity.mob.EntityBurrowingSwingingBase; +import com.hbm.interfaces.NotableComments; import net.minecraft.entity.IEntityLivingData; import net.minecraft.entity.SharedMonsterAttributes; @@ -21,6 +22,7 @@ import net.minecraft.world.World; //well it ain't fucking funny //this stupid fucking random ass bullshit is the P R E C I S E reason i loathe working with entities //honest to fucking god was the entire mojang dev team on crack when they wrote this? +@NotableComments public class EntitySiegeTunneler extends EntityBurrowingSwingingBase { public EntitySiegeTunneler(World world) { diff --git a/src/main/java/com/hbm/entity/particle/EntityBSmokeFX.java b/src/main/java/com/hbm/entity/particle/EntityBSmokeFX.java deleted file mode 100644 index ebbed1d98..000000000 --- a/src/main/java/com/hbm/entity/particle/EntityBSmokeFX.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.hbm.entity.particle; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.world.World; - -public class EntityBSmokeFX extends EntityModFX -{ - public EntityBSmokeFX(World world) { - super(world, 0, 0, 0); - } - - public EntityBSmokeFX(World p_i1225_1_, double p_i1225_2_, double p_i1225_4_, double p_i1225_6_, double p_i1225_8_, double p_i1225_10_, double p_i1225_12_) - { - this(p_i1225_1_, p_i1225_2_, p_i1225_4_, p_i1225_6_, p_i1225_8_, p_i1225_10_, p_i1225_12_, 1.0F); - } - - public EntityBSmokeFX(World p_i1226_1_, double p_i1226_2_, double p_i1226_4_, double p_i1226_6_, double p_i1226_8_, double p_i1226_10_, double p_i1226_12_, float p_i1226_14_) - { - super(p_i1226_1_, p_i1226_2_, p_i1226_4_, p_i1226_6_, 0.0D, 0.0D, 0.0D); - this.motionX *= 0.10000000149011612D; - this.motionY *= 0.10000000149011612D; - this.motionZ *= 0.10000000149011612D; - this.motionX += p_i1226_8_; - this.motionY += p_i1226_10_; - this.motionZ += p_i1226_12_; - this.particleRed = this.particleGreen = this.particleBlue = (float)(Math.random() * 0.30000001192092896D); - this.particleScale *= 0.75F; - this.particleScale *= p_i1226_14_; - this.smokeParticleScale = this.particleScale; - //this.particleMaxAge = (int)(8.0D / (Math.random() * 0.8D + 0.2D)); - //this.particleMaxAge = (int)((float)this.particleMaxAge * p_i1226_14_); - this.noClip = false; - } - - /** - * Called to update the entity's position/logic. - */ - - @Override - public void onUpdate() - { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - - if(maxAge < 100) - { - maxAge = rand.nextInt(21) + 65; - } - - this.particleAge++; - - if (this.particleAge >= maxAge) - { - this.setDead(); - } - - this.motionX *= 0.9599999785423279D; - this.motionY *= 0.9599999785423279D; - this.motionZ *= 0.9599999785423279D; - - if (this.onGround) - { - this.motionX *= 0.699999988079071D; - this.motionZ *= 0.699999988079071D; - } - } - - @Override - @SideOnly(Side.CLIENT) - public int getBrightnessForRender(float p_70070_1_) - { - return 15728880; - } -} diff --git a/src/main/java/com/hbm/entity/projectile/EntityArtilleryRocket.java b/src/main/java/com/hbm/entity/projectile/EntityArtilleryRocket.java index 0115dbef3..2c1773df7 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityArtilleryRocket.java +++ b/src/main/java/com/hbm/entity/projectile/EntityArtilleryRocket.java @@ -28,14 +28,14 @@ import net.minecraftforge.common.ForgeChunkManager.Type; public class EntityArtilleryRocket extends EntityThrowableInterp implements IChunkLoader, IRadarDetectable { private Ticket loaderTicket; - + //TODO: find satisfying solution for when an entity is unloaded and reloaded, possibly a custom entity lookup using persistent UUIDs public Entity targetEntity = null; public Vec3 lastTargetPos; - + public IRocketTargetingBehavior targeting; public IRocketSteeringBehavior steering; - + public EntityArtilleryRocket(World world) { super(world); this.ignoreFrustumCheck = true; @@ -49,18 +49,18 @@ public class EntityArtilleryRocket extends EntityThrowableInterp implements IChu init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); this.dataWatcher.addObject(10, new Integer(0)); } - + @Override @SideOnly(Side.CLIENT) public boolean isInRangeToRenderDist(double distance) { return true; } - + public EntityArtilleryRocket setType(int type) { this.dataWatcher.updateObject(10, type); return this; } - + public HIMARSRocket getType() { try { return ItemAmmoHIMARS.itemTypes[this.dataWatcher.getWatchableObjectInt(10)]; @@ -68,34 +68,38 @@ public class EntityArtilleryRocket extends EntityThrowableInterp implements IChu return ItemAmmoHIMARS.itemTypes[0]; } } - + public EntityArtilleryRocket setTarget(Entity target) { this.targetEntity = target; setTarget(target.posX, target.posY - target.yOffset + target.height / 2D, target.posZ); return this; } - + public EntityArtilleryRocket setTarget(double x, double y, double z) { this.lastTargetPos = Vec3.createVectorHelper(x, y, z); return this; } - + public Vec3 getLastTarget() { return this.lastTargetPos; } - + @Override public void onUpdate() { - + if(worldObj.isRemote) { this.lastTickPosX = this.posX; this.lastTickPosY = this.posY; this.lastTickPosZ = this.posZ; } - + super.onUpdate(); - + if(!worldObj.isRemote) { + + //shitty hack, figure out what's happening here + if(this.targeting == null) this.targeting = new RocketTargetingPredictive(); + if(this.steering == null) this.steering = new RocketSteeringBallisticArc(); if(this.targetEntity == null) { Vec3 delta = Vec3.createVectorHelper(this.lastTargetPos.xCoord - this.posX, this.lastTargetPos.yCoord - this.posY, this.lastTargetPos.zCoord - this.posZ); @@ -107,23 +111,32 @@ public class EntityArtilleryRocket extends EntityThrowableInterp implements IChu if(this.targeting != null && this.targetEntity != null) this.targeting.recalculateTargetPosition(this, this.targetEntity); if(this.steering != null) this.steering.adjustCourse(this, 25D, 15D); - + loadNeighboringChunks((int)Math.floor(posX / 16D), (int)Math.floor(posZ / 16D)); this.getType().onUpdate(this); } else { - + Vec3 v = Vec3.createVectorHelper(lastTickPosX - posX, lastTickPosY - posY, lastTickPosZ - posZ); double velocity = v.lengthVector(); v = v.normalize(); - + int offset = 6; - if(velocity > 1) for(int i = offset; i < velocity + offset; i++) MainRegistry.proxy.spawnParticle(posX + v.xCoord * i, posY + v.yCoord * i, posZ + v.zCoord * i, "exKerosene", null); + if(velocity > 1) { + for (int i = offset; i < velocity + offset; i++) { + NBTTagCompound data = new NBTTagCompound(); + data.setDouble("posX", posX + v.xCoord * i); + data.setDouble("posY", posY + v.yCoord * i); + data.setDouble("posZ", posZ + v.zCoord * i); + data.setString("type", "exKerosene"); + MainRegistry.proxy.effectNT(data); + } + } } } @Override protected void onImpact(MovingObjectPosition mop) { - + if(!worldObj.isRemote) { this.getType().onImpact(this, mop); } @@ -145,7 +158,7 @@ public class EntityArtilleryRocket extends EntityThrowableInterp implements IChu public void loadNeighboringChunks(int newChunkX, int newChunkZ) { if(!worldObj.isRemote && loaderTicket != null) { - + clearChunkLoader(); loadedChunks.clear(); @@ -157,12 +170,12 @@ public class EntityArtilleryRocket extends EntityThrowableInterp implements IChu } } } - + public void killAndClear() { this.setDead(); this.clearChunkLoader(); } - + public void clearChunkLoader() { if(!worldObj.isRemote && loaderTicket != null) { for(ChunkCoordIntPair chunk : loadedChunks) { @@ -174,15 +187,15 @@ public class EntityArtilleryRocket extends EntityThrowableInterp implements IChu @Override public void writeEntityToNBT(NBTTagCompound nbt) { super.writeEntityToNBT(nbt); - + if(this.lastTargetPos == null) { this.lastTargetPos = Vec3.createVectorHelper(posX, posY, posZ); } - + nbt.setDouble("targetX", this.lastTargetPos.xCoord); nbt.setDouble("targetY", this.lastTargetPos.yCoord); nbt.setDouble("targetZ", this.lastTargetPos.zCoord); - + nbt.setInteger("type", this.dataWatcher.getWatchableObjectInt(10)); } @@ -191,7 +204,7 @@ public class EntityArtilleryRocket extends EntityThrowableInterp implements IChu super.readEntityFromNBT(nbt); this.lastTargetPos = Vec3.createVectorHelper(nbt.getDouble("targetX"), nbt.getDouble("targetY"), nbt.getDouble("targetZ")); - + this.dataWatcher.updateObject(10, nbt.getInteger("type")); } @@ -209,7 +222,7 @@ public class EntityArtilleryRocket extends EntityThrowableInterp implements IChu public RadarTargetType getTargetType() { return RadarTargetType.ARTILLERY; } - + @Override public int approachNum() { return 0; // diff --git a/src/main/java/com/hbm/entity/projectile/EntityBombletZeta.java b/src/main/java/com/hbm/entity/projectile/EntityBombletZeta.java index 1a21d96c2..9618217ed 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBombletZeta.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBombletZeta.java @@ -3,9 +3,15 @@ package com.hbm.entity.projectile; import com.hbm.config.BombConfig; import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.explosion.ExplosionChaos; -import com.hbm.explosion.ExplosionLarge; -import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; +import com.hbm.explosion.vanillant.standard.BlockMutatorFire; +import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; +import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -29,51 +35,56 @@ public class EntityBombletZeta extends EntityThrowable { @Override public void onUpdate() { - this.lastTickPosX = this.prevPosX = posX; this.lastTickPosY = this.prevPosY = posY; this.lastTickPosZ = this.prevPosZ = posZ; this.setPosition(posX + this.motionX, posY + this.motionY, posZ + this.motionZ); - + this.motionX *= 0.99; this.motionZ *= 0.99; this.motionY -= 0.05D; - - this.rotation(); - - if(this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.air) - { - if(!this.worldObj.isRemote) - { - if(type == 0) { - ExplosionLarge.explode(worldObj, this.posX + 0.5F, this.posY + 0.5F, this.posZ + 0.5F, 5.0F, true, false, false, this); - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "hbm:entity.bombDet", 25.0F, 0.8F + rand.nextFloat() * 0.4F); - } - if(type == 1) { - ExplosionLarge.explode(worldObj, this.posX + 0.5F, this.posY + 0.5F, this.posZ + 0.5F, 2.5F, false, false, false, this); - ExplosionChaos.burn(worldObj, (int)posX, (int)posY, (int)posZ, 9); - ExplosionChaos.flameDeath(worldObj, (int)posX, (int)posY, (int)posZ, 14); - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "hbm:entity.bombDet", 25.0F, 1.0F); - - for(int i = 0; i < 5; i++) - ExplosionLarge.spawnBurst(worldObj, this.posX + 0.5F, this.posY + 1.0F, this.posZ + 0.5F, rand.nextInt(10) + 15, rand.nextFloat() * 2 + 2); - } - if(type == 2) { - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "random.fizz", 5.0F, 2.6F + (rand.nextFloat() - rand.nextFloat()) * 0.8F); - ExplosionChaos.spawnChlorine(worldObj, this.posX + 0.5F - motionX, this.posY + 0.5F - motionY, this.posZ + 0.5F - motionZ, 75, 2, 0); - } - if(type == 4) { - worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, (int) (BombConfig.fatmanRadius * 1.5), posX, posY, posZ)); - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "muke"); - if(rand.nextInt(100) == 0) data.setBoolean("balefire", true); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY + 0.5, posZ), new TargetPoint(dimension, posX, posY, posZ, 250)); - worldObj.playSoundEffect(posX, posY, posZ, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); - } - } - this.setDead(); - } + + this.rotation(); + + if(this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.air) { + if(!this.worldObj.isRemote) { + if(type == 0) { + ExplosionVNT vnt = new ExplosionVNT(worldObj, this.posX + 0.5F, this.posY + 1.5F, this.posZ + 0.5F, 4F); + vnt.setBlockAllocator(new BlockAllocatorStandard()); + vnt.setBlockProcessor(new BlockProcessorStandard()); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, 100)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectWeapon(15, 3.5F, 1.25F)); + vnt.explode(); + } + if(type == 1) { + + ExplosionVNT vnt = new ExplosionVNT(worldObj, this.posX + 0.5F, this.posY + 1.5F, this.posZ + 0.5F, 4F); + vnt.setBlockAllocator(new BlockAllocatorStandard()); + vnt.setBlockProcessor(new BlockProcessorStandard().withBlockEffect(new BlockMutatorFire())); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, 100)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectWeapon(15, 5F, 1.75F)); + vnt.explode(); + + } + if(type == 2) { + worldObj.playSoundEffect((double) (posX + 0.5F), (double) (posY + 0.5F), (double) (posZ + 0.5F), "random.fizz", 5.0F, 2.6F + (rand.nextFloat() - rand.nextFloat()) * 0.8F); + ExplosionChaos.spawnChlorine(worldObj, this.posX + 0.5F - motionX, this.posY + 0.5F - motionY, this.posZ + 0.5F - motionZ, 75, 2, 0); + } + if(type == 4) { + worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, (int) (BombConfig.fatmanRadius * 1.5), posX, posY, posZ)); + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "muke"); + if(rand.nextInt(100) == 0) + data.setBoolean("balefire", true); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY + 0.5, posZ), new TargetPoint(dimension, posX, posY, posZ, 250)); + worldObj.playSoundEffect(posX, posY, posZ, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); + } + this.setDead(); + } + } } public void rotation() { diff --git a/src/main/java/com/hbm/entity/projectile/EntityBoxcar.java b/src/main/java/com/hbm/entity/projectile/EntityBoxcar.java index 8871bd430..7baf2de1f 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBoxcar.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBoxcar.java @@ -5,12 +5,16 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.explosion.ExplosionLarge; import com.hbm.lib.ModDamageSource; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; import net.minecraft.entity.projectile.EntityThrowable; import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; @@ -26,6 +30,17 @@ public class EntityBoxcar extends EntityThrowable { @Override public void onUpdate() { + if(!worldObj.isRemote && this.ticksExisted == 1) { + for(int i = 0; i < 50; i++) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "bf"); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, + posX + (rand.nextDouble() - 0.5) * 3, + posY + (rand.nextDouble() - 0.5) * 15, + posZ + (rand.nextDouble() - 0.5) * 3), + new TargetPoint(dimension, posX, posY, posZ, 150)); + } + } this.lastTickPosX = this.prevPosX = posX; this.lastTickPosY = this.prevPosY = posY; @@ -52,7 +67,7 @@ public class EntityBoxcar extends EntityThrowable { } if(!worldObj.isRemote) - worldObj.setBlock((int) (this.posX - 0.5), (int) (this.posY + 0.5), (int) (this.posZ - 0.5), ModBlocks.boxcar); + worldObj.setBlock((int) Math.floor(this.posX), (int) Math.floor(this.posY + 0.5), (int) Math.floor(this.posZ), ModBlocks.boxcar); } } diff --git a/src/main/java/com/hbm/entity/projectile/EntityBullet.java b/src/main/java/com/hbm/entity/projectile/EntityBullet.java index 51b68c5e9..b26a94e60 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBullet.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBullet.java @@ -32,7 +32,6 @@ import net.minecraft.world.World; import com.hbm.blocks.bomb.BlockDetonatable; import com.hbm.entity.grenade.EntityGrenadeTau; import com.hbm.entity.mob.EntityCreeperNuclear; -import com.hbm.entity.particle.EntityBSmokeFX; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; import com.hbm.util.ArmorUtil; @@ -542,26 +541,6 @@ public class EntityBullet extends Entity implements IProjectile { ((EntityPlayerMP) this.shootingEntity).playerNetServerHandler .sendPacket(new S2BPacketChangeGameState(6, 0.0F)); } - - if(this.pip) { - if(!worldObj.isRemote) { - EntityBoxcar pippo = new EntityBoxcar(worldObj); - pippo.posX = movingobjectposition.entityHit.posX; - pippo.posY = movingobjectposition.entityHit.posY + 50; - pippo.posZ = movingobjectposition.entityHit.posZ; - - for(int j = 0; j < 50; j++) { - EntityBSmokeFX fx = new EntityBSmokeFX(worldObj, pippo.posX + (rand.nextDouble() - 0.5) * 4, pippo.posY + (rand.nextDouble() - 0.5) * 12, pippo.posZ + (rand.nextDouble() - 0.5) * 4, 0, 0, 0); - worldObj.spawnEntityInWorld(fx); - } - - worldObj.spawnEntityInWorld(pippo); - } - - worldObj.playSoundEffect(movingobjectposition.entityHit.posX, - movingobjectposition.entityHit.posY + 50, - movingobjectposition.entityHit.posZ, "hbm:alarm.trainHorn", 100F, 1F); - } } if (!(movingobjectposition.entityHit instanceof EntityEnderman)) { diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4.java new file mode 100644 index 000000000..fac0c3037 --- /dev/null +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4.java @@ -0,0 +1,205 @@ +package com.hbm.entity.projectile; + +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.util.BobMathUtil; +import com.hbm.util.TrackerUtil; +import com.hbm.util.Vec3NT; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.EntityTrackerEntry; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraft.world.WorldServer; + +public class EntityBulletBaseMK4 extends EntityThrowableInterp { + + public BulletConfig config; + //used for rendering tracers + public double velocity; + public double prevVelocity; + public double accel; + public float damage; + public int ricochets = 0; + public Entity lockonTarget = null; + + public EntityBulletBaseMK4(World world) { + super(world); + this.renderDistanceWeight = 10.0D; + this.setSize(0.5F, 0.5F); + this.isImmuneToFire = true; + } + + /** For submunitions! */ + public EntityBulletBaseMK4(World world, EntityLivingBase entity, BulletConfig config, float damage, float gunSpread, double posX, double posY, double posZ, double motionX, double motionY, double motionZ) { + this(world); + + this.thrower = entity; + this.setBulletConfig(config); + + this.damage = damage; + + this.setLocationAndAngles(posX, posY, posZ, 0, 0); + this.setPosition(this.posX, this.posY, this.posZ); + + this.motionX = motionX; + this.motionY = motionY; + this.motionZ = motionZ; + + this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, 1.0F, this.config.spread + gunSpread); + } + + /** For standard guns */ + public EntityBulletBaseMK4(EntityLivingBase entity, BulletConfig config, float baseDamage, float gunSpread, double sideOffset, double heightOffset, double frontOffset) { + this(entity.worldObj); + + this.thrower = entity; + this.setBulletConfig(config); + + this.damage = baseDamage * this.config.damageMult; + + this.setLocationAndAngles(thrower.posX, thrower.posY + thrower.getEyeHeight(), thrower.posZ, thrower.rotationYaw, thrower.rotationPitch); + + Vec3 offset = Vec3.createVectorHelper(sideOffset, heightOffset, frontOffset); + offset.rotateAroundX(-this.rotationPitch / 180F * (float) Math.PI); + offset.rotateAroundY(-this.rotationYaw / 180F * (float) Math.PI); + + this.posX += offset.xCoord; + this.posY += offset.yCoord; + this.posZ += offset.zCoord; + + this.setPosition(this.posX, this.posY, this.posZ); + + this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); + this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); + this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float) Math.PI)); + + this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, 1.0F, gunSpread); + } + + /** For turrets - angles are in radians, and pitch is negative! */ + public EntityBulletBaseMK4(World world, BulletConfig config, float baseDamage, float gunSpread, float yaw, float pitch) { + this(world); + + this.setBulletConfig(config); + this.damage = baseDamage * this.config.damageMult; + + this.prevRotationYaw = this.rotationYaw = yaw * 180F / (float) Math.PI; + this.prevRotationPitch = this.rotationPitch = -pitch * 180F / (float) Math.PI; + + this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); + this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); + this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float) Math.PI)); + this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, 1.0F, gunSpread); + } + + @Override + protected void entityInit() { + super.entityInit(); + this.dataWatcher.addObject(3, Integer.valueOf(0)); + } + + public void setBulletConfig(BulletConfig config) { + this.config = config; + this.dataWatcher.updateObject(3, config.id); + } + + public BulletConfig getBulletConfig() { + int id = this.dataWatcher.getWatchableObjectInt(3); + if(id < 0 || id > BulletConfig.configs.size()) return null; + return BulletConfig.configs.get(id); + } + + @Override + public void onUpdate() { + + if(config == null) config = this.getBulletConfig(); + + if(config == null){ + this.setDead(); + return; + } + + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + + super.onUpdate(); + + double dX = this.posX - this.prevPosX; + double dY = this.posY - this.prevPosY; + double dZ = this.posZ - this.prevPosZ; + + if(this.lockonTarget != null && !this.lockonTarget.isDead) { + Vec3NT motion = new Vec3NT(motionX, motionY, motionZ); + double vel = motion.lengthVector(); + Vec3NT delta = new Vec3NT(lockonTarget.posX - posX, lockonTarget.posY + lockonTarget.height / 2D - posY, lockonTarget.posZ - posZ); + float turn = Math.min(0.005F * this.ticksExisted, 1F); + Vec3NT newVec = new Vec3NT( + BobMathUtil.interp(motion.xCoord, delta.xCoord, turn), + BobMathUtil.interp(motion.yCoord, delta.yCoord, turn), + BobMathUtil.interp(motion.zCoord, delta.zCoord, turn)).normalizeSelf().multiply(vel); + this.motionX = newVec.xCoord; + this.motionY = newVec.yCoord; + this.motionZ = newVec.zCoord; + EntityTrackerEntry entry = TrackerUtil.getTrackerEntry((WorldServer) worldObj, this.getEntityId()); + entry.lastYaw = MathHelper.floor_float(this.rotationYaw * 256.0F / 360.0F) + 10; //force-trigger rotation update + } + + this.prevVelocity = this.velocity; + this.velocity = Math.sqrt(dX * dX + dY * dY + dZ * dZ); + + if(!this.onGround && velocity > 0) { + + float hyp = MathHelper.sqrt_double(dX * dX + dZ * dZ); + this.rotationYaw = (float) (Math.atan2(dX, dZ) * 180.0D / Math.PI); + + for(this.rotationPitch = (float) (Math.atan2(dY, (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; + } + + if(!worldObj.isRemote && this.ticksExisted > config.expires) this.setDead(); + + if(this.config.onUpdate != null) this.config.onUpdate.accept(this); + } + + @Override + public void setDead() { + super.setDead(); + + //send a teleport on collision so that the bullets are forced to move even if their lifetime is only 1 tick, letting them render + if(worldObj instanceof WorldServer) TrackerUtil.sendTeleport((WorldServer) worldObj, this); + } + + + @Override + protected void onImpact(MovingObjectPosition mop) { + if(!worldObj.isRemote) { + + if(this.config.onImpact != null) this.config.onImpact.accept(this, mop); + if(this.isDead) return; + if(this.config.onRicochet != null) this.config.onRicochet.accept(this, mop); + if(this.config.onEntityHit != null) this.config.onEntityHit.accept(this, mop); + } + } + + @Override protected double headingForceMult() { return 1D; } + @Override public double getGravityVelocity() { return this.config.gravity; } + @Override protected double motionMult() { return this.config.velocity + this.accel; } + @Override protected float getAirDrag() { return 1F; } + @Override protected float getWaterDrag() { return 1F; } + + @Override public boolean doesImpactEntities() { return this.config.impactsEntities; } + @Override public boolean doesPenetrate() { return this.config.doesPenetrate; } + @Override public boolean isSpectral() { return this.config.isSpectral; } + @Override public int selfDamageDelay() { return this.config.selfDamageDelay; } + + @Override @SideOnly(Side.CLIENT) public boolean canRenderOnFire() { return false; } +} diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4CL.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4CL.java new file mode 100644 index 000000000..42591af80 --- /dev/null +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseMK4CL.java @@ -0,0 +1,81 @@ +package com.hbm.entity.projectile; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.entity.logic.IChunkLoader; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.main.MainRegistry; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeChunkManager; +import net.minecraftforge.common.ForgeChunkManager.Ticket; +import net.minecraftforge.common.ForgeChunkManager.Type; + +public class EntityBulletBaseMK4CL extends EntityBulletBaseMK4 implements IChunkLoader { + + private Ticket loaderTicket; + private List loadedChunks = new ArrayList(); + + public EntityBulletBaseMK4CL(World world) { + super(world); + } + + public EntityBulletBaseMK4CL(EntityLivingBase entity, BulletConfig config, float damage, float spread, double sideOffset, double heightOffset, double forwardOffset) { + super(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); + } + + @Override + protected void entityInit() { + super.entityInit(); + init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); + } + + @Override + public void init(Ticket ticket) { + if(!worldObj.isRemote && ticket != null) { + if(loaderTicket == null) { + loaderTicket = ticket; + loaderTicket.bindEntity(this); + loaderTicket.getModData(); + } + ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(chunkCoordX, chunkCoordZ)); + } + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(!worldObj.isRemote) loadNeighboringChunks((int)Math.floor(posX / 16D), (int)Math.floor(posZ / 16D)); + } + + @Override + public void setDead() { + super.setDead(); + clearChunkLoader(); + } + + public void clearChunkLoader() { + if(!worldObj.isRemote && loaderTicket != null) { + for(ChunkCoordIntPair chunk : loadedChunks) { + ForgeChunkManager.unforceChunk(loaderTicket, chunk); + } + } + } + + public void loadNeighboringChunks(int newChunkX, int newChunkZ) { + if(!worldObj.isRemote && loaderTicket != null) { + + clearChunkLoader(); + loadedChunks.clear(); + loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); + + for(ChunkCoordIntPair chunk : loadedChunks) { + ForgeChunkManager.forceChunk(loaderTicket, chunk); + } + } + } +} diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java index 2e44faf9f..d6370efb8 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java @@ -25,8 +25,8 @@ import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; import com.hbm.items.weapon.ItemGunBase; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.potion.HbmPotion; import com.hbm.util.ArmorUtil; import com.hbm.util.BobMathUtil; diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java new file mode 100644 index 000000000..aaa65b397 --- /dev/null +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBeamBase.java @@ -0,0 +1,204 @@ +package com.hbm.entity.projectile; + +import java.util.List; + +import com.hbm.items.weapon.sedna.BulletConfig; + +import cpw.mods.fml.common.registry.IEntityAdditionalSpawnData; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class EntityBulletBeamBase extends Entity implements IEntityAdditionalSpawnData { + + public EntityLivingBase thrower; + public BulletConfig config; + public float damage; + public double headingX; + public double headingY; + public double headingZ; + public double beamLength; + + public EntityBulletBeamBase(World world) { + super(world); + this.ignoreFrustumCheck = true; + this.renderDistanceWeight = 10.0D; + this.setSize(0.5F, 0.5F); + this.isImmuneToFire = true; + } + + public EntityLivingBase getThrower() { return this.thrower; } + + public EntityBulletBeamBase(EntityLivingBase entity, BulletConfig config, float baseDamage, float angularInaccuracy, double sideOffset, double heightOffset, double frontOffset) { + this(entity.worldObj); + + this.thrower = entity; + this.setBulletConfig(config); + + this.damage = baseDamage * this.config.damageMult; + + this.setLocationAndAngles(thrower.posX, thrower.posY + thrower.getEyeHeight(), thrower.posZ, thrower.rotationYaw + (float) rand.nextGaussian() * angularInaccuracy, thrower.rotationPitch + (float) rand.nextGaussian() * angularInaccuracy); + + Vec3 offset = Vec3.createVectorHelper(sideOffset, heightOffset, frontOffset); + offset.rotateAroundX(-this.rotationPitch / 180F * (float) Math.PI); + offset.rotateAroundY(-this.rotationYaw / 180F * (float) Math.PI); + + this.posX += offset.xCoord; + this.posY += offset.yCoord; + this.posZ += offset.zCoord; + + this.setPosition(this.posX, this.posY, this.posZ); + + this.headingX = (double) (-MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI)); + this.headingZ = (double) (MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI)); + this.headingY = (double) (-MathHelper.sin((this.rotationPitch) / 180.0F * (float) Math.PI)); + + double range = 250D; + this.headingX *= range; + this.headingY *= range; + this.headingZ *= range; + + performHitscan(); + } + + @Override + protected void entityInit() { + this.dataWatcher.addObject(3, Integer.valueOf(0)); + } + + public void setBulletConfig(BulletConfig config) { + this.config = config; + this.dataWatcher.updateObject(3, config.id); + } + + public BulletConfig getBulletConfig() { + int id = this.dataWatcher.getWatchableObjectInt(3); + if(id < 0 || id > BulletConfig.configs.size()) return null; + return BulletConfig.configs.get(id); + } + + @Override + public void onUpdate() { + + if(config == null) config = this.getBulletConfig(); + + if(config == null){ + this.setDead(); + return; + } + + if(config.onUpdate != null) config.onUpdate.accept(this); + + super.onUpdate(); + + if(!worldObj.isRemote && this.ticksExisted > config.expires) this.setDead(); + } + + protected void performHitscan() { + + Vec3 pos = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); + Vec3 nextPos = Vec3.createVectorHelper(this.posX + this.headingX, this.posY + this.headingY, this.posZ + this.headingZ); + MovingObjectPosition mop = null; + if(!this.isSpectral()) mop = this.worldObj.func_147447_a(pos, nextPos, false, true, false); + pos = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); + nextPos = Vec3.createVectorHelper(this.posX + this.headingX, this.posY + this.headingY, this.posZ + this.headingZ); + + if(mop != null) { + nextPos = Vec3.createVectorHelper(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + } + + if(!this.worldObj.isRemote && this.doesImpactEntities()) { + + Entity hitEntity = null; + List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.headingX, this.headingY, this.headingZ).expand(1.0D, 1.0D, 1.0D)); + double nearest = 0.0D; + MovingObjectPosition nonPenImpact = null; + + for(int j = 0; j < list.size(); ++j) { + Entity entity = (Entity) list.get(j); + + if(entity.canBeCollidedWith() && entity != thrower) { + double hitbox = 0.3F; + AxisAlignedBB aabb = entity.boundingBox.expand(hitbox, hitbox, hitbox); + MovingObjectPosition hitMop = aabb.calculateIntercept(pos, nextPos); + + if(hitMop != null) { + + // if penetration is enabled, run impact for all intersecting entities + if(this.doesPenetrate()) { + this.onImpact(new MovingObjectPosition(entity, hitMop.hitVec)); + } else { + + double dist = pos.distanceTo(hitMop.hitVec); + + if(dist < nearest || nearest == 0.0D) { + hitEntity = entity; + nearest = dist; + nonPenImpact = hitMop; + } + } + } + } + } + + // if not, only run it for the closest MOP + if(!this.doesPenetrate() && hitEntity != null) { + mop = new MovingObjectPosition(hitEntity, nonPenImpact.hitVec); + } + } + + if(mop != null) { + if(mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && this.worldObj.getBlock(mop.blockX, mop.blockY, mop.blockZ) == Blocks.portal) { + this.setInPortal(); + } else { + this.onImpact(mop); + } + + Vec3 vec = Vec3.createVectorHelper(mop.hitVec.xCoord - posX, mop.hitVec.yCoord - posY, mop.hitVec.zCoord - posZ); + this.beamLength = vec.lengthVector(); + } else { + Vec3 vec = Vec3.createVectorHelper(nextPos.xCoord - posX, nextPos.yCoord - posY, nextPos.zCoord - posZ); + this.beamLength = vec.lengthVector(); + } + + } + + + protected void onImpact(MovingObjectPosition mop) { + if(!worldObj.isRemote) { + if(this.config.onImpactBeam != null) this.config.onImpactBeam.accept(this, mop); + } + } + + public boolean doesImpactEntities() { return this.config.impactsEntities; } + public boolean doesPenetrate() { return this.config.doesPenetrate; } + public boolean isSpectral() { return this.config.isSpectral; } + + @Override @SideOnly(Side.CLIENT) public float getShadowSize() { return 0.0F; } + + @Override protected void writeEntityToNBT(NBTTagCompound nbt) { } + @Override public boolean writeToNBTOptional(NBTTagCompound nbt) { return false; } + @Override public void readEntityFromNBT(NBTTagCompound nbt) { this.setDead(); } + + @Override public void writeSpawnData(ByteBuf buf) { + buf.writeDouble(beamLength); + buf.writeFloat(rotationYaw); + buf.writeFloat(rotationPitch); + } + @Override public void readSpawnData(ByteBuf buf) { + this.beamLength = buf.readDouble(); + this.rotationYaw = buf.readFloat(); + this.rotationPitch = buf.readFloat(); + } + + @Override @SideOnly(Side.CLIENT) public boolean canRenderOnFire() { return false; } +} diff --git a/src/main/java/com/hbm/entity/projectile/EntityChemical.java b/src/main/java/com/hbm/entity/projectile/EntityChemical.java index f1a1e5e6c..9cee29064 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityChemical.java +++ b/src/main/java/com/hbm/entity/projectile/EntityChemical.java @@ -62,7 +62,7 @@ public class EntityChemical extends EntityThrowableNT { this.isImmuneToFire = true; } - public EntityChemical(World world, EntityLivingBase thrower) { + public EntityChemical(World world, EntityLivingBase thrower, double sideOffset, double heightOffset, double frontOffset) { super(world, thrower); this.ignoreFrustumCheck = true; this.isImmuneToFire = true; @@ -182,15 +182,6 @@ public class EntityChemical extends EntityThrowableNT { if(style == ChemicalStyle.LIQUID || style == ChemicalStyle.GAS) { if(type.temperature < -20) { if(living != null) { //only living things are affected - - HbmLivingProps.setTemperature(living, HbmLivingProps.getTemperature(living) + type.temperature / 20); - - if(HbmLivingProps.isFrozen(living)) { - if(!EntityDamageUtil.attackEntityFromIgnoreIFrame(e, getDamage(ModDamageSource.s_cryolator), living.getMaxHealth() * -type.temperature / 273 * 0.01F)) - e.attackEntityFrom(getDamage(ModDamageSource.s_cryolator), living.getMaxHealth() * -type.temperature / 273); - living.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 100, 2)); - living.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, 100, 4)); - } } } diff --git a/src/main/java/com/hbm/entity/projectile/EntityCog.java b/src/main/java/com/hbm/entity/projectile/EntityCog.java index 84c27bb77..8fb460a3e 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityCog.java +++ b/src/main/java/com/hbm/entity/projectile/EntityCog.java @@ -2,8 +2,8 @@ package com.hbm.entity.projectile; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/entity/projectile/EntityDuchessGambit.java b/src/main/java/com/hbm/entity/projectile/EntityDuchessGambit.java index 7e717bc29..57cae2213 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityDuchessGambit.java +++ b/src/main/java/com/hbm/entity/projectile/EntityDuchessGambit.java @@ -5,12 +5,16 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.explosion.ExplosionLarge; import com.hbm.lib.ModDamageSource; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; import net.minecraft.entity.projectile.EntityThrowable; import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; @@ -26,52 +30,54 @@ public class EntityDuchessGambit extends EntityThrowable { @Override public void onUpdate() { + if(!worldObj.isRemote && this.ticksExisted == 1) { + for(int i = 0; i < 50; i++) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "bf"); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, + posX + (rand.nextDouble() - 0.5) * 5, + posY + (rand.nextDouble() - 0.5) * 7, + posZ + (rand.nextDouble() - 0.5) * 20), + new TargetPoint(dimension, posX, posY, posZ, 150)); + } + } + this.lastTickPosX = this.prevPosX = posX; this.lastTickPosY = this.prevPosY = posY; this.lastTickPosZ = this.prevPosZ = posZ; this.setPosition(posX + this.motionX, posY + this.motionY, posZ + this.motionZ); - /*this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - - this.posX += this.motionX; - this.posY += this.motionY; - this.posZ += this.motionZ;*/ - this.motionY -= 0.03; if(motionY < -1.5) motionY = -1.5; - - if(this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.air) - { - this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "hbm:alarm.gambit", 10000.0F, 1F); - this.setDead(); - - List list = (List)worldObj.getEntitiesWithinAABBExcludingEntity(null, - AxisAlignedBB.getBoundingBox(posX - 5, posY - 2, posZ - 9, posX + 5, posY + 2, posZ + 9)); - - for(Entity e : list) { - e.attackEntityFrom(ModDamageSource.boat, 1000); - } - - if(!worldObj.isRemote) { - ExplosionLarge.explode(worldObj, posX, posY, posZ - 6, 2, true, false, false); - ExplosionLarge.explode(worldObj, posX, posY, posZ - 3, 2, true, false, false); - ExplosionLarge.explode(worldObj, posX, posY, posZ, 2, true, false, false); - ExplosionLarge.explode(worldObj, posX, posY, posZ + 3, 2, true, false, false); - ExplosionLarge.explode(worldObj, posX, posY, posZ + 6, 2, true, false, false); - - worldObj.setBlock((int)(this.posX - 0.5), (int)(this.posY + 0.5), (int)(this.posZ - 0.5), ModBlocks.boat); - } - ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 3); - ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 2.5); - ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 2); - ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 1.5); - ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 1); - } - } + + if(this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.air) { + this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "hbm:alarm.gambit", 10000.0F, 1F); + this.setDead(); + + List list = (List) worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(posX - 5, posY - 2, posZ - 9, posX + 5, posY + 2, posZ + 9)); + + for(Entity e : list) { + e.attackEntityFrom(ModDamageSource.boat, 1000); + } + + if(!worldObj.isRemote) { + ExplosionLarge.explode(worldObj, posX, posY, posZ - 6, 2, true, false, false); + ExplosionLarge.explode(worldObj, posX, posY, posZ - 3, 2, true, false, false); + ExplosionLarge.explode(worldObj, posX, posY, posZ, 2, true, false, false); + ExplosionLarge.explode(worldObj, posX, posY, posZ + 3, 2, true, false, false); + ExplosionLarge.explode(worldObj, posX, posY, posZ + 6, 2, true, false, false); + + worldObj.setBlock((int) (this.posX - 0.5), (int) (this.posY + 0.5), (int) (this.posZ - 0.5), ModBlocks.boat); + } + ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 3); + ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 2.5); + ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 2); + ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 1.5); + ExplosionLarge.spawnShock(worldObj, posX, posY + 1, posZ, 24, 1); + } + } @Override protected void onImpact(MovingObjectPosition p_70184_1_) { diff --git a/src/main/java/com/hbm/entity/projectile/EntityFire.java b/src/main/java/com/hbm/entity/projectile/EntityFire.java deleted file mode 100644 index 535c82346..000000000 --- a/src/main/java/com/hbm/entity/projectile/EntityFire.java +++ /dev/null @@ -1,572 +0,0 @@ -package com.hbm.entity.projectile; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -import java.util.List; - -import com.hbm.explosion.ExplosionChaos; -import com.hbm.lib.ModDamageSource; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.IProjectile; -import net.minecraft.entity.monster.EntityEnderman; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.play.server.S2BPacketChangeGameState; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -public class EntityFire extends Entity implements IProjectile -{ - private int field_145791_d = -1; - private int field_145792_e = -1; - private int field_145789_f = -1; - public double gravity = 0.0D; - private Block field_145790_g; - private int inData; - private boolean inGround; - /** 1 if the player can pick up the arrow */ - public int canBePickedUp; - /** Seems to be some sort of timer for animating an arrow. */ - public int arrowShake; - /** The owner of this arrow. */ - public Entity shootingEntity; - private int ticksInGround; - private int ticksInAir; - public int maxAge = 20; - private double damage = 2.0D; - /** The amount of knockback an arrow applies when it hits a mob. */ - private int knockbackStrength; - public EntityFire(World p_i1753_1_) - { - super(p_i1753_1_); - this.renderDistanceWeight = 10.0D; - this.setSize(0.5F, 0.5F); - } - - public EntityFire(World p_i1754_1_, double p_i1754_2_, double p_i1754_4_, double p_i1754_6_) - { - super(p_i1754_1_); - this.renderDistanceWeight = 10.0D; - this.setSize(0.5F, 0.5F); - this.setPosition(p_i1754_2_, p_i1754_4_, p_i1754_6_); - this.yOffset = 0.0F; - } - - public EntityFire(World p_i1755_1_, EntityLivingBase p_i1755_2_, EntityLivingBase p_i1755_3_, float p_i1755_4_, float p_i1755_5_) - { - super(p_i1755_1_); - this.renderDistanceWeight = 10.0D; - this.shootingEntity = p_i1755_2_; - - if (p_i1755_2_ instanceof EntityPlayer) - { - this.canBePickedUp = 1; - } - - this.posY = p_i1755_2_.posY + p_i1755_2_.getEyeHeight() - 0.10000000149011612D; - double d0 = p_i1755_3_.posX - p_i1755_2_.posX; - double d1 = p_i1755_3_.boundingBox.minY + p_i1755_3_.height / 3.0F - this.posY; - double d2 = p_i1755_3_.posZ - p_i1755_2_.posZ; - double d3 = MathHelper.sqrt_double(d0 * d0 + d2 * d2); - - if (d3 >= 1.0E-7D) - { - float f2 = (float)(Math.atan2(d2, d0) * 180.0D / Math.PI) - 90.0F; - float f3 = (float)(-(Math.atan2(d1, d3) * 180.0D / Math.PI)); - double d4 = d0 / d3; - double d5 = d2 / d3; - this.setLocationAndAngles(p_i1755_2_.posX + d4, this.posY, p_i1755_2_.posZ + d5, f2, f3); - this.yOffset = 0.0F; - float f4 = (float)d3 * 0.2F; - this.setThrowableHeading(d0, d1 + f4, d2, p_i1755_4_, p_i1755_5_); - } - } - - public EntityFire(World p_i1756_1_, EntityLivingBase p_i1756_2_, float p_i1756_3_) - { - super(p_i1756_1_); - this.renderDistanceWeight = 10.0D; - this.shootingEntity = p_i1756_2_; - - if (p_i1756_2_ instanceof EntityPlayer) - { - this.canBePickedUp = 1; - } - - this.setSize(0.5F, 0.5F); - this.setLocationAndAngles(p_i1756_2_.posX, p_i1756_2_.posY + p_i1756_2_.getEyeHeight(), p_i1756_2_.posZ, p_i1756_2_.rotationYaw, p_i1756_2_.rotationPitch); - this.posX -= MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F; - this.posY -= 0.10000000149011612D; - this.posZ -= MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F; - this.setPosition(this.posX, this.posY, this.posZ); - this.yOffset = 0.0F; - this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI); - this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI); - this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI)); - this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, p_i1756_3_ * 1.5F, 1.0F); - } - - public EntityFire(World world, int x, int y, int z, double mx, double my, double mz, double grav) { - super(world); - this.posX = x + 0.5F; - this.posY = y + 0.5F; - this.posZ = z + 0.5F; - - this.motionX = mx; - this.motionY = my; - this.motionZ = mz; - - this.gravity = grav; - } - - @Override - protected void entityInit() - { - this.dataWatcher.addObject(16, Byte.valueOf((byte)0)); - } - - /** - * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction. - */ - @Override - public void setThrowableHeading(double p_70186_1_, double p_70186_3_, double p_70186_5_, float p_70186_7_, float p_70186_8_) - { - float f2 = MathHelper.sqrt_double(p_70186_1_ * p_70186_1_ + p_70186_3_ * p_70186_3_ + p_70186_5_ * p_70186_5_); - p_70186_1_ /= f2; - p_70186_3_ /= f2; - p_70186_5_ /= f2; - p_70186_1_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * p_70186_8_; - p_70186_3_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * p_70186_8_; - p_70186_5_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * p_70186_8_; - p_70186_1_ *= p_70186_7_; - p_70186_3_ *= p_70186_7_; - p_70186_5_ *= p_70186_7_; - this.motionX = p_70186_1_; - this.motionY = p_70186_3_; - this.motionZ = p_70186_5_; - float f3 = MathHelper.sqrt_double(p_70186_1_ * p_70186_1_ + p_70186_5_ * p_70186_5_); - this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(p_70186_1_, p_70186_5_) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(p_70186_3_, f3) * 180.0D / Math.PI); - this.ticksInGround = 0; - } - - /** - * Sets the position and rotation. Only difference from the other one is no bounding on the rotation. Args: posX, - * posY, posZ, yaw, pitch - */ - @Override - @SideOnly(Side.CLIENT) - public void setPositionAndRotation2(double p_70056_1_, double p_70056_3_, double p_70056_5_, float p_70056_7_, float p_70056_8_, int p_70056_9_) - { - this.setPosition(p_70056_1_, p_70056_3_, p_70056_5_); - this.setRotation(p_70056_7_, p_70056_8_); - } - - /** - * Sets the velocity to the args. Args: x, y, z - */ - @Override - @SideOnly(Side.CLIENT) - public void setVelocity(double p_70016_1_, double p_70016_3_, double p_70016_5_) - { - this.motionX = p_70016_1_; - this.motionY = p_70016_3_; - this.motionZ = p_70016_5_; - - if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) - { - float f = MathHelper.sqrt_double(p_70016_1_ * p_70016_1_ + p_70016_5_ * p_70016_5_); - this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(p_70016_1_, p_70016_5_) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(p_70016_3_, f) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch; - this.prevRotationYaw = this.rotationYaw; - this.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch); - this.ticksInGround = 0; - } - } - - /** - * Called to update the entity's position/logic. - */ - //@Override - @Override - public void onUpdate() - { - super.onUpdate(); - - if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) - { - MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - //this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f) * 180.0D / Math.PI); - } - - Block block = this.worldObj.getBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f); - - if (block.getMaterial() != Material.air) - { - block.setBlockBoundsBasedOnState(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f); - AxisAlignedBB axisalignedbb = block.getCollisionBoundingBoxFromPool(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f); - - if (axisalignedbb != null && axisalignedbb.isVecInside(Vec3.createVectorHelper(this.posX, this.posY, this.posZ))) - { - this.inGround = true; - } - } - - if (this.arrowShake > 0) - { - --this.arrowShake; - } - - if (this.inGround) - { - this.setDead(); - int i = 3; - if(!worldObj.isRemote) { - ExplosionChaos.burn(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, i); - ExplosionChaos.flameDeath(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, i * 2); - } - } - else - { - ++this.ticksInAir; - Vec3 vec31 = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); - Vec3 vec3 = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); - MovingObjectPosition movingobjectposition = this.worldObj.func_147447_a(vec31, vec3, false, true, false); - vec31 = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); - vec3 = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); - - if (movingobjectposition != null) - { - vec3 = Vec3.createVectorHelper(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord); - } - - Entity entity = null; - List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX, this.motionY, this.motionZ).expand(1.0D, 1.0D, 1.0D)); - double d0 = 0.0D; - int i; - float f1; - - for (i = 0; i < list.size(); ++i) - { - Entity entity1 = (Entity)list.get(i); - - if (entity1.canBeCollidedWith() && (entity1 != this.shootingEntity || this.ticksInAir >= 5)) - { - f1 = 0.3F; - AxisAlignedBB axisalignedbb1 = entity1.boundingBox.expand(f1, f1, f1); - MovingObjectPosition movingobjectposition1 = axisalignedbb1.calculateIntercept(vec31, vec3); - - if (movingobjectposition1 != null) - { - double d1 = vec31.distanceTo(movingobjectposition1.hitVec); - - if (d1 < d0 || d0 == 0.0D) - { - entity = entity1; - d0 = d1; - } - } - } - } - - if (entity != null) - { - movingobjectposition = new MovingObjectPosition(entity); - } - - if (movingobjectposition != null && movingobjectposition.entityHit != null && movingobjectposition.entityHit instanceof EntityPlayer) - { - EntityPlayer entityplayer = (EntityPlayer)movingobjectposition.entityHit; - - if (entityplayer.capabilities.disableDamage || this.shootingEntity instanceof EntityPlayer && !((EntityPlayer)this.shootingEntity).canAttackPlayer(entityplayer)) - { - movingobjectposition = null; - } - } - - float f2; - float f4; - - if (movingobjectposition != null) - { - if (movingobjectposition.entityHit != null) - { - f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ); - int k = MathHelper.ceiling_double_int(f2 * this.damage); - - if (this.getIsCritical()) - { - k += this.rand.nextInt(k / 2 + 2); - } - - DamageSource damagesource = null; - - if (this.shootingEntity == null) - { - damagesource = DamageSource.generic; - } - else - { - damagesource = ModDamageSource.causeFireDamage(this, this.shootingEntity); - } - - if (!(movingobjectposition.entityHit instanceof EntityEnderman) && this.ticksExisted >= 5) - { - movingobjectposition.entityHit.setFire(10); - } - - if (movingobjectposition.entityHit.attackEntityFrom(damagesource, k)) - { - if (movingobjectposition.entityHit instanceof EntityLivingBase) - { - EntityLivingBase entitylivingbase = (EntityLivingBase)movingobjectposition.entityHit; - - if (this.knockbackStrength > 0) - { - f4 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - - if (f4 > 0.0F) - { - movingobjectposition.entityHit.addVelocity(this.motionX * this.knockbackStrength * 0.6000000238418579D / f4, 0.1D, this.motionZ * this.knockbackStrength * 0.6000000238418579D / f4); - } - } - - if (this.shootingEntity != null && this.shootingEntity instanceof EntityLivingBase) - { - EnchantmentHelper.func_151384_a(entitylivingbase, this.shootingEntity); - EnchantmentHelper.func_151385_b((EntityLivingBase)this.shootingEntity, entitylivingbase); - } - - if (this.shootingEntity != null && movingobjectposition.entityHit != this.shootingEntity && movingobjectposition.entityHit instanceof EntityPlayer && this.shootingEntity instanceof EntityPlayerMP) - { - ((EntityPlayerMP)this.shootingEntity).playerNetServerHandler.sendPacket(new S2BPacketChangeGameState(6, 0.0F)); - } - } - - if (!(movingobjectposition.entityHit instanceof EntityEnderman)) - { - if (!this.worldObj.isRemote && movingobjectposition.entityHit instanceof EntityLivingBase) - { - movingobjectposition.entityHit.attackEntityFrom(damagesource, 5F); - } - } - } - } - else - { - this.field_145791_d = movingobjectposition.blockX; - this.field_145792_e = movingobjectposition.blockY; - this.field_145789_f = movingobjectposition.blockZ; - this.field_145790_g = this.worldObj.getBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f); - this.inData = this.worldObj.getBlockMetadata(this.field_145791_d, this.field_145792_e, this.field_145789_f); - this.motionX = ((float)(movingobjectposition.hitVec.xCoord - this.posX)); - this.motionY = ((float)(movingobjectposition.hitVec.yCoord - this.posY)); - this.motionZ = ((float)(movingobjectposition.hitVec.zCoord - this.posZ)); - f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ); - this.posX -= this.motionX / f2 * 0.05000000074505806D; - this.posY -= this.motionY / f2 * 0.05000000074505806D; - this.posZ -= this.motionZ / f2 * 0.05000000074505806D; - this.inGround = true; - this.arrowShake = 7; - this.setIsCritical(false); - - if (this.field_145790_g.getMaterial() != Material.air) - { - this.field_145790_g.onEntityCollidedWithBlock(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f, this); - } - } - } - - this.posX += this.motionX; - this.posY += this.motionY; - this.posZ += this.motionZ; - f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - - f1 = 0.05F; - - if (this.isInWater()) - { - this.setDead(); - } - - if (this.isWet()) - { - this.damage *= 0.8F; - } - - float f3 = 0.8F; - this.motionX *= f3; - this.motionY *= f3; - this.motionZ *= f3; - this.motionY -= gravity; - this.setPosition(this.posX, this.posY, this.posZ); - this.func_145775_I(); - } - - if (this.ticksExisted > this.maxAge) - this.setDead(); - } - - /** - * (abstract) Protected helper method to write subclass entity data to NBT. - */ - @Override - public void writeEntityToNBT(NBTTagCompound p_70014_1_) - { - p_70014_1_.setShort("xTile", (short)this.field_145791_d); - p_70014_1_.setShort("yTile", (short)this.field_145792_e); - p_70014_1_.setShort("zTile", (short)this.field_145789_f); - p_70014_1_.setShort("life", (short)this.ticksInGround); - p_70014_1_.setByte("inTile", (byte)Block.getIdFromBlock(this.field_145790_g)); - p_70014_1_.setByte("inData", (byte)this.inData); - p_70014_1_.setByte("shake", (byte)this.arrowShake); - p_70014_1_.setByte("inGround", (byte)(this.inGround ? 1 : 0)); - p_70014_1_.setByte("pickup", (byte)this.canBePickedUp); - p_70014_1_.setDouble("damage", this.damage); - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - */ - @Override - public void readEntityFromNBT(NBTTagCompound p_70037_1_) - { - this.field_145791_d = p_70037_1_.getShort("xTile"); - this.field_145792_e = p_70037_1_.getShort("yTile"); - this.field_145789_f = p_70037_1_.getShort("zTile"); - this.ticksInGround = p_70037_1_.getShort("life"); - this.field_145790_g = Block.getBlockById(p_70037_1_.getByte("inTile") & 255); - this.inData = p_70037_1_.getByte("inData") & 255; - this.arrowShake = p_70037_1_.getByte("shake") & 255; - this.inGround = p_70037_1_.getByte("inGround") == 1; - - if (p_70037_1_.hasKey("damage", 99)) - { - this.damage = p_70037_1_.getDouble("damage"); - } - - if (p_70037_1_.hasKey("pickup", 99)) - { - this.canBePickedUp = p_70037_1_.getByte("pickup"); - } - else if (p_70037_1_.hasKey("player", 99)) - { - this.canBePickedUp = p_70037_1_.getBoolean("player") ? 1 : 0; - } - } - - /** - * Called by a player entity when they collide with an entity - */ - @Override - public void onCollideWithPlayer(EntityPlayer p_70100_1_) - { - if (!this.worldObj.isRemote && this.inGround && this.arrowShake <= 0) - { - boolean flag = this.canBePickedUp == 1 || this.canBePickedUp == 2 && p_70100_1_.capabilities.isCreativeMode; - - if (flag) - { - p_70100_1_.onItemPickup(this, 1); - this.setDead(); - } - } - } - - /** - * returns if this entity triggers Block.onEntityWalking on the blocks they walk on. used for spiders and wolves to - * prevent them from trampling crops - */ - @Override - protected boolean canTriggerWalking() - { - return false; - } - - @Override - @SideOnly(Side.CLIENT) - public float getShadowSize() - { - return 0.0F; - } - - public void setDamage(double p_70239_1_) - { - this.damage = p_70239_1_; - } - - public double getDamage() - { - return this.damage; - } - - /** - * Sets the amount of knockback the arrow applies when it hits a mob. - */ - public void setKnockbackStrength(int p_70240_1_) - { - this.knockbackStrength = p_70240_1_; - } - - /** - * If returns false, the item will not inflict any damage against entities. - */ - @Override - public boolean canAttackWithItem() - { - return false; - } - - /** - * Whether the arrow has a stream of critical hit particles flying behind it. - */ - public void setIsCritical(boolean p_70243_1_) - { - byte b0 = this.dataWatcher.getWatchableObjectByte(16); - - if (p_70243_1_) - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 | 1))); - } - else - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 & -2))); - } - } - - /** - * Whether the arrow has a stream of critical hit particles flying behind it. - */ - public boolean getIsCritical() - { - byte b0 = this.dataWatcher.getWatchableObjectByte(16); - return (b0 & 1) != 0; - } - - @Override - @SideOnly(Side.CLIENT) - public int getBrightnessForRender(float p_70070_1_) - { - return 15728880; - } - - @Override - public float getBrightness(float p_70013_1_) - { - return 1.0F; - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/entity/projectile/EntityLN2.java b/src/main/java/com/hbm/entity/projectile/EntityLN2.java deleted file mode 100644 index a1e64cccc..000000000 --- a/src/main/java/com/hbm/entity/projectile/EntityLN2.java +++ /dev/null @@ -1,569 +0,0 @@ -package com.hbm.entity.projectile; - -import java.util.List; - -import com.hbm.explosion.ExplosionThermo; -import com.hbm.lib.ModDamageSource; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.IProjectile; -import net.minecraft.entity.monster.EntityEnderman; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.play.server.S2BPacketChangeGameState; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -public class EntityLN2 extends Entity implements IProjectile -{ - private int field_145791_d = -1; - private int field_145792_e = -1; - private int field_145789_f = -1; - public double gravity = 0.0D; - private Block field_145790_g; - private int inData; - private boolean inGround; - /** 1 if the player can pick up the arrow */ - public int canBePickedUp; - /** Seems to be some sort of timer for animating an arrow. */ - public int arrowShake; - /** The owner of this arrow. */ - public Entity shootingEntity; - private int ticksInGround; - private int ticksInAir; - public int maxAge = 20; - private double damage = 2.0D; - /** The amount of knockback an arrow applies when it hits a mob. */ - private int knockbackStrength; - public EntityLN2(World p_i1753_1_) - { - super(p_i1753_1_); - this.renderDistanceWeight = 10.0D; - this.setSize(0.5F, 0.5F); - } - - public EntityLN2(World p_i1754_1_, double p_i1754_2_, double p_i1754_4_, double p_i1754_6_) - { - super(p_i1754_1_); - this.renderDistanceWeight = 10.0D; - this.setSize(0.5F, 0.5F); - this.setPosition(p_i1754_2_, p_i1754_4_, p_i1754_6_); - this.yOffset = 0.0F; - } - - public EntityLN2(World p_i1755_1_, EntityLivingBase p_i1755_2_, EntityLivingBase p_i1755_3_, float p_i1755_4_, float p_i1755_5_) - { - super(p_i1755_1_); - this.renderDistanceWeight = 10.0D; - this.shootingEntity = p_i1755_2_; - - if (p_i1755_2_ instanceof EntityPlayer) - { - this.canBePickedUp = 1; - } - - this.posY = p_i1755_2_.posY + p_i1755_2_.getEyeHeight() - 0.10000000149011612D; - double d0 = p_i1755_3_.posX - p_i1755_2_.posX; - double d1 = p_i1755_3_.boundingBox.minY + p_i1755_3_.height / 3.0F - this.posY; - double d2 = p_i1755_3_.posZ - p_i1755_2_.posZ; - double d3 = MathHelper.sqrt_double(d0 * d0 + d2 * d2); - - if (d3 >= 1.0E-7D) - { - float f2 = (float)(Math.atan2(d2, d0) * 180.0D / Math.PI) - 90.0F; - float f3 = (float)(-(Math.atan2(d1, d3) * 180.0D / Math.PI)); - double d4 = d0 / d3; - double d5 = d2 / d3; - this.setLocationAndAngles(p_i1755_2_.posX + d4, this.posY, p_i1755_2_.posZ + d5, f2, f3); - this.yOffset = 0.0F; - float f4 = (float)d3 * 0.2F; - this.setThrowableHeading(d0, d1 + f4, d2, p_i1755_4_, p_i1755_5_); - } - } - - public EntityLN2(World p_i1756_1_, EntityLivingBase p_i1756_2_, float p_i1756_3_) - { - super(p_i1756_1_); - this.renderDistanceWeight = 10.0D; - this.shootingEntity = p_i1756_2_; - - if (p_i1756_2_ instanceof EntityPlayer) - { - this.canBePickedUp = 1; - } - - this.setSize(0.5F, 0.5F); - this.setLocationAndAngles(p_i1756_2_.posX, p_i1756_2_.posY + p_i1756_2_.getEyeHeight(), p_i1756_2_.posZ, p_i1756_2_.rotationYaw, p_i1756_2_.rotationPitch); - this.posX -= MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F; - this.posY -= 0.10000000149011612D; - this.posZ -= MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F; - this.setPosition(this.posX, this.posY, this.posZ); - this.yOffset = 0.0F; - this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI); - this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI); - this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI)); - this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, p_i1756_3_ * 1.5F, 1.0F); - } - - public EntityLN2(World world, int x, int y, int z, double mx, double my, double mz, double grav) { - super(world); - this.posX = x + 0.5F; - this.posY = y + 0.5F; - this.posZ = z + 0.5F; - - this.motionX = mx; - this.motionY = my; - this.motionZ = mz; - - this.gravity = grav; - } - - @Override - protected void entityInit() - { - this.dataWatcher.addObject(16, Byte.valueOf((byte)0)); - } - - /** - * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction. - */ - @Override - public void setThrowableHeading(double p_70186_1_, double p_70186_3_, double p_70186_5_, float p_70186_7_, float p_70186_8_) - { - float f2 = MathHelper.sqrt_double(p_70186_1_ * p_70186_1_ + p_70186_3_ * p_70186_3_ + p_70186_5_ * p_70186_5_); - p_70186_1_ /= f2; - p_70186_3_ /= f2; - p_70186_5_ /= f2; - p_70186_1_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * p_70186_8_; - p_70186_3_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * p_70186_8_; - p_70186_5_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * p_70186_8_; - p_70186_1_ *= p_70186_7_; - p_70186_3_ *= p_70186_7_; - p_70186_5_ *= p_70186_7_; - this.motionX = p_70186_1_; - this.motionY = p_70186_3_; - this.motionZ = p_70186_5_; - float f3 = MathHelper.sqrt_double(p_70186_1_ * p_70186_1_ + p_70186_5_ * p_70186_5_); - this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(p_70186_1_, p_70186_5_) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(p_70186_3_, f3) * 180.0D / Math.PI); - this.ticksInGround = 0; - } - - /** - * Sets the position and rotation. Only difference from the other one is no bounding on the rotation. Args: posX, - * posY, posZ, yaw, pitch - */ - @Override - @SideOnly(Side.CLIENT) - public void setPositionAndRotation2(double p_70056_1_, double p_70056_3_, double p_70056_5_, float p_70056_7_, float p_70056_8_, int p_70056_9_) - { - this.setPosition(p_70056_1_, p_70056_3_, p_70056_5_); - this.setRotation(p_70056_7_, p_70056_8_); - } - - /** - * Sets the velocity to the args. Args: x, y, z - */ - @Override - @SideOnly(Side.CLIENT) - public void setVelocity(double p_70016_1_, double p_70016_3_, double p_70016_5_) - { - this.motionX = p_70016_1_; - this.motionY = p_70016_3_; - this.motionZ = p_70016_5_; - - if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) - { - float f = MathHelper.sqrt_double(p_70016_1_ * p_70016_1_ + p_70016_5_ * p_70016_5_); - this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(p_70016_1_, p_70016_5_) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(p_70016_3_, f) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch; - this.prevRotationYaw = this.rotationYaw; - this.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch); - this.ticksInGround = 0; - } - } - - /** - * Called to update the entity's position/logic. - */ - //@Override - @Override - public void onUpdate() - { - super.onUpdate(); - - if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) - { - MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - //this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f) * 180.0D / Math.PI); - } - - Block block = this.worldObj.getBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f); - - if (block.getMaterial() != Material.air) - { - block.setBlockBoundsBasedOnState(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f); - AxisAlignedBB axisalignedbb = block.getCollisionBoundingBoxFromPool(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f); - - if (axisalignedbb != null && axisalignedbb.isVecInside(Vec3.createVectorHelper(this.posX, this.posY, this.posZ))) - { - this.inGround = true; - } - } - - if (this.arrowShake > 0) - { - --this.arrowShake; - } - - if (this.inGround) - { - this.setDead(); - int i = 3; - if(!worldObj.isRemote) { - ExplosionThermo.freeze(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, i); - ExplosionThermo.snow(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, i); - } - } - else - { - ++this.ticksInAir; - Vec3 vec31 = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); - Vec3 vec3 = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); - MovingObjectPosition movingobjectposition = this.worldObj.func_147447_a(vec31, vec3, false, true, false); - vec31 = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); - vec3 = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); - - if (movingobjectposition != null) - { - vec3 = Vec3.createVectorHelper(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord); - } - - Entity entity = null; - List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX, this.motionY, this.motionZ).expand(1.0D, 1.0D, 1.0D)); - double d0 = 0.0D; - int i; - float f1; - - for (i = 0; i < list.size(); ++i) - { - Entity entity1 = (Entity)list.get(i); - - if (entity1.canBeCollidedWith() && (entity1 != this.shootingEntity || this.ticksInAir >= 5)) - { - f1 = 0.3F; - AxisAlignedBB axisalignedbb1 = entity1.boundingBox.expand(f1, f1, f1); - MovingObjectPosition movingobjectposition1 = axisalignedbb1.calculateIntercept(vec31, vec3); - - if (movingobjectposition1 != null) - { - double d1 = vec31.distanceTo(movingobjectposition1.hitVec); - - if (d1 < d0 || d0 == 0.0D) - { - entity = entity1; - d0 = d1; - } - } - } - } - - if (entity != null) - { - movingobjectposition = new MovingObjectPosition(entity); - } - - if (movingobjectposition != null && movingobjectposition.entityHit != null && movingobjectposition.entityHit instanceof EntityPlayer) - { - EntityPlayer entityplayer = (EntityPlayer)movingobjectposition.entityHit; - - if (entityplayer.capabilities.disableDamage || this.shootingEntity instanceof EntityPlayer && !((EntityPlayer)this.shootingEntity).canAttackPlayer(entityplayer)) - { - movingobjectposition = null; - } - } - - float f2; - float f4; - - if (movingobjectposition != null) - { - if (movingobjectposition.entityHit != null) - { - f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ); - int k = MathHelper.ceiling_double_int(f2 * this.damage); - - if (this.getIsCritical()) - { - k += this.rand.nextInt(k / 2 + 2); - } - - DamageSource damagesource = null; - - if (this.shootingEntity == null) - { - damagesource = DamageSource.generic; - } - else - { - damagesource = ModDamageSource.causeIceDamage(this, this.shootingEntity); - } - - if (movingobjectposition.entityHit.attackEntityFrom(damagesource, k)) - { - if (movingobjectposition.entityHit instanceof EntityLivingBase) - { - EntityLivingBase entitylivingbase = (EntityLivingBase)movingobjectposition.entityHit; - - if (this.knockbackStrength > 0) - { - f4 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - - if (f4 > 0.0F) - { - movingobjectposition.entityHit.addVelocity(this.motionX * this.knockbackStrength * 0.6000000238418579D / f4, 0.1D, this.motionZ * this.knockbackStrength * 0.6000000238418579D / f4); - } - } - - if (this.shootingEntity != null && this.shootingEntity instanceof EntityLivingBase) - { - EnchantmentHelper.func_151384_a(entitylivingbase, this.shootingEntity); - EnchantmentHelper.func_151385_b((EntityLivingBase)this.shootingEntity, entitylivingbase); - } - - if (this.shootingEntity != null && movingobjectposition.entityHit != this.shootingEntity && movingobjectposition.entityHit instanceof EntityPlayer && this.shootingEntity instanceof EntityPlayerMP) - { - ((EntityPlayerMP)this.shootingEntity).playerNetServerHandler.sendPacket(new S2BPacketChangeGameState(6, 0.0F)); - } - } - - if (!(movingobjectposition.entityHit instanceof EntityEnderman)) - { - if (!this.worldObj.isRemote && movingobjectposition.entityHit instanceof EntityLivingBase) - { - movingobjectposition.entityHit.attackEntityFrom(damagesource, 5F); - } - } - } - } - else - { - this.field_145791_d = movingobjectposition.blockX; - this.field_145792_e = movingobjectposition.blockY; - this.field_145789_f = movingobjectposition.blockZ; - this.field_145790_g = this.worldObj.getBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f); - this.inData = this.worldObj.getBlockMetadata(this.field_145791_d, this.field_145792_e, this.field_145789_f); - this.motionX = ((float)(movingobjectposition.hitVec.xCoord - this.posX)); - this.motionY = ((float)(movingobjectposition.hitVec.yCoord - this.posY)); - this.motionZ = ((float)(movingobjectposition.hitVec.zCoord - this.posZ)); - f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ); - this.posX -= this.motionX / f2 * 0.05000000074505806D; - this.posY -= this.motionY / f2 * 0.05000000074505806D; - this.posZ -= this.motionZ / f2 * 0.05000000074505806D; - this.inGround = true; - this.arrowShake = 7; - this.setIsCritical(false); - - if (this.field_145790_g.getMaterial() != Material.air) - { - this.field_145790_g.onEntityCollidedWithBlock(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f, this); - } - } - } - - this.posX += this.motionX; - this.posY += this.motionY; - this.posZ += this.motionZ; - f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - - f1 = 0.05F; - - if (this.isInWater()) - { - int j = 3; - ExplosionThermo.freeze(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, j); - ExplosionThermo.snow(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, j); - this.setDead(); - } - - if (this.isWet()) - { - this.damage *= 0.8F; - } - - float f3 = 0.8F; - this.motionX *= f3; - this.motionY *= f3; - this.motionZ *= f3; - this.motionY -= gravity; - this.setPosition(this.posX, this.posY, this.posZ); - this.func_145775_I(); - } - - if (this.ticksExisted > this.maxAge) - this.setDead(); - } - - /** - * (abstract) Protected helper method to write subclass entity data to NBT. - */ - @Override - public void writeEntityToNBT(NBTTagCompound p_70014_1_) - { - p_70014_1_.setShort("xTile", (short)this.field_145791_d); - p_70014_1_.setShort("yTile", (short)this.field_145792_e); - p_70014_1_.setShort("zTile", (short)this.field_145789_f); - p_70014_1_.setShort("life", (short)this.ticksInGround); - p_70014_1_.setByte("inTile", (byte)Block.getIdFromBlock(this.field_145790_g)); - p_70014_1_.setByte("inData", (byte)this.inData); - p_70014_1_.setByte("shake", (byte)this.arrowShake); - p_70014_1_.setByte("inGround", (byte)(this.inGround ? 1 : 0)); - p_70014_1_.setByte("pickup", (byte)this.canBePickedUp); - p_70014_1_.setDouble("damage", this.damage); - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - */ - @Override - public void readEntityFromNBT(NBTTagCompound p_70037_1_) - { - this.field_145791_d = p_70037_1_.getShort("xTile"); - this.field_145792_e = p_70037_1_.getShort("yTile"); - this.field_145789_f = p_70037_1_.getShort("zTile"); - this.ticksInGround = p_70037_1_.getShort("life"); - this.field_145790_g = Block.getBlockById(p_70037_1_.getByte("inTile") & 255); - this.inData = p_70037_1_.getByte("inData") & 255; - this.arrowShake = p_70037_1_.getByte("shake") & 255; - this.inGround = p_70037_1_.getByte("inGround") == 1; - - if (p_70037_1_.hasKey("damage", 99)) - { - this.damage = p_70037_1_.getDouble("damage"); - } - - if (p_70037_1_.hasKey("pickup", 99)) - { - this.canBePickedUp = p_70037_1_.getByte("pickup"); - } - else if (p_70037_1_.hasKey("player", 99)) - { - this.canBePickedUp = p_70037_1_.getBoolean("player") ? 1 : 0; - } - } - - /** - * Called by a player entity when they collide with an entity - */ - @Override - public void onCollideWithPlayer(EntityPlayer p_70100_1_) - { - if (!this.worldObj.isRemote && this.inGround && this.arrowShake <= 0) - { - boolean flag = this.canBePickedUp == 1 || this.canBePickedUp == 2 && p_70100_1_.capabilities.isCreativeMode; - - if (flag) - { - p_70100_1_.onItemPickup(this, 1); - this.setDead(); - } - } - } - - /** - * returns if this entity triggers Block.onEntityWalking on the blocks they walk on. used for spiders and wolves to - * prevent them from trampling crops - */ - @Override - protected boolean canTriggerWalking() - { - return false; - } - - @Override - @SideOnly(Side.CLIENT) - public float getShadowSize() - { - return 0.0F; - } - - public void setDamage(double p_70239_1_) - { - this.damage = p_70239_1_; - } - - public double getDamage() - { - return this.damage; - } - - /** - * Sets the amount of knockback the arrow applies when it hits a mob. - */ - public void setKnockbackStrength(int p_70240_1_) - { - this.knockbackStrength = p_70240_1_; - } - - /** - * If returns false, the item will not inflict any damage against entities. - */ - @Override - public boolean canAttackWithItem() - { - return false; - } - - /** - * Whether the arrow has a stream of critical hit particles flying behind it. - */ - public void setIsCritical(boolean p_70243_1_) - { - byte b0 = this.dataWatcher.getWatchableObjectByte(16); - - if (p_70243_1_) - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 | 1))); - } - else - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 & -2))); - } - } - - /** - * Whether the arrow has a stream of critical hit particles flying behind it. - */ - public boolean getIsCritical() - { - byte b0 = this.dataWatcher.getWatchableObjectByte(16); - return (b0 & 1) != 0; - } - - @Override - @SideOnly(Side.CLIENT) - public int getBrightnessForRender(float p_70070_1_) - { - return 15728880; - } - - @Override - public float getBrightness(float p_70013_1_) - { - return 1.0F; - } -} diff --git a/src/main/java/com/hbm/entity/projectile/EntityLaser.java b/src/main/java/com/hbm/entity/projectile/EntityLaser.java deleted file mode 100644 index abef03c16..000000000 --- a/src/main/java/com/hbm/entity/projectile/EntityLaser.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.hbm.entity.projectile; - -import java.util.List; - -import com.hbm.lib.Library; -import com.hbm.lib.ModDamageSource; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -public class EntityLaser extends Entity { - - public EntityLaser(World world) { - super(world); - this.ignoreFrustumCheck = true; - } - - public EntityLaser(World world, EntityPlayer player) { - super(world); - this.ignoreFrustumCheck = true; - this.dataWatcher.updateObject(20, player.getDisplayName()); - - Vec3 vec = player.getLookVec(); - vec.rotateAroundY(-90F); - float l = 0.25F; - vec.xCoord *= l; - vec.yCoord *= l; - vec.zCoord *= l; - - this.setPosition(player.posX + vec.xCoord, player.posY + player.getEyeHeight(), player.posZ + vec.zCoord); - - } - - @Override - protected void entityInit() { - this.dataWatcher.addObject(20, ""); - } - - @Override - public void onUpdate() { - - if(this.ticksExisted > 1) - this.setDead(); - - int range = 100; - - EntityPlayer player = worldObj.getPlayerEntityByName(this.dataWatcher.getWatchableObjectString(20)); - - if(player != null) { - - //this.setPosition(player.posX, player.posY + player.getEyeHeight(), player.posZ); - - MovingObjectPosition pos = Library.rayTrace(player, range, 1); - - //worldObj.createExplosion(this, pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord, 1, false); - - worldObj.spawnParticle("cloud", pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord, 0, 0, 0); - worldObj.playSound(pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord, "random.fizz", 1, 1, true); - - List list = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(pos.hitVec.xCoord - 1, pos.hitVec.yCoord - 1, pos.hitVec.zCoord - 1, pos.hitVec.xCoord + 1, pos.hitVec.yCoord + 1, pos.hitVec.zCoord + 1)); - - for(Entity e : list) - e.attackEntityFrom(ModDamageSource.radiation, 5); - } - } - - @Override - protected void readEntityFromNBT(NBTTagCompound p_70037_1_) { - } - - @Override - protected void writeEntityToNBT(NBTTagCompound p_70014_1_) { - } - - @Override - @SideOnly(Side.CLIENT) - public int getBrightnessForRender(float p_70070_1_) - { - return 15728880; - } - - @Override - public float getBrightness(float p_70013_1_) - { - return 1.0F; - } - -} diff --git a/src/main/java/com/hbm/entity/projectile/EntityNightmareBlast.java b/src/main/java/com/hbm/entity/projectile/EntityNightmareBlast.java deleted file mode 100644 index 0ddbb2409..000000000 --- a/src/main/java/com/hbm/entity/projectile/EntityNightmareBlast.java +++ /dev/null @@ -1,530 +0,0 @@ -package com.hbm.entity.projectile; - -import java.util.List; - -import com.hbm.entity.grenade.EntityGrenadeZOMG; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.IProjectile; -import net.minecraft.entity.monster.EntityEnderman; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.init.Blocks; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.play.server.S2BPacketChangeGameState; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -public class EntityNightmareBlast extends Entity implements IProjectile -{ - private int field_145791_d = -1; - private int field_145792_e = -1; - private int field_145789_f = -1; - public double gravity = 0.0D; - private Block field_145790_g; - private int inData; - private boolean inGround; - /** 1 if the player can pick up the arrow */ - public int canBePickedUp; - /** Seems to be some sort of timer for animating an arrow. */ - public int arrowShake; - /** The owner of this arrow. */ - public Entity shootingEntity; - private int ticksInGround; - private int ticksInAir; - private double damage = 2.0D; - /** The amount of knockback an arrow applies when it hits a mob. */ - private int knockbackStrength; - public EntityNightmareBlast(World p_i1753_1_) - { - super(p_i1753_1_); - this.renderDistanceWeight = 10.0D; - this.setSize(0.5F, 0.5F); - } - - public EntityNightmareBlast(World p_i1754_1_, double p_i1754_2_, double p_i1754_4_, double p_i1754_6_) - { - super(p_i1754_1_); - this.renderDistanceWeight = 10.0D; - this.setSize(0.5F, 0.5F); - this.setPosition(p_i1754_2_, p_i1754_4_, p_i1754_6_); - this.yOffset = 0.0F; - } - - public EntityNightmareBlast(World p_i1755_1_, EntityLivingBase p_i1755_2_, EntityLivingBase p_i1755_3_, float p_i1755_4_, float p_i1755_5_) - { - super(p_i1755_1_); - this.renderDistanceWeight = 10.0D; - this.shootingEntity = p_i1755_2_; - - if (p_i1755_2_ instanceof EntityPlayer) - { - this.canBePickedUp = 1; - } - - this.posY = p_i1755_2_.posY + p_i1755_2_.getEyeHeight() - 0.10000000149011612D; - double d0 = p_i1755_3_.posX - p_i1755_2_.posX; - double d1 = p_i1755_3_.boundingBox.minY + p_i1755_3_.height / 3.0F - this.posY; - double d2 = p_i1755_3_.posZ - p_i1755_2_.posZ; - double d3 = MathHelper.sqrt_double(d0 * d0 + d2 * d2); - - if (d3 >= 1.0E-7D) - { - float f2 = (float)(Math.atan2(d2, d0) * 180.0D / Math.PI) - 90.0F; - float f3 = (float)(-(Math.atan2(d1, d3) * 180.0D / Math.PI)); - double d4 = d0 / d3; - double d5 = d2 / d3; - this.setLocationAndAngles(p_i1755_2_.posX + d4, this.posY, p_i1755_2_.posZ + d5, f2, f3); - this.yOffset = 0.0F; - float f4 = (float)d3 * 0.2F; - this.setThrowableHeading(d0, d1 + f4, d2, p_i1755_4_, p_i1755_5_); - } - } - - public EntityNightmareBlast(World p_i1756_1_, EntityLivingBase p_i1756_2_, float p_i1756_3_, int dmgMin, int dmgMax, EntityGrenadeZOMG grenade) { - super(p_i1756_1_); - this.renderDistanceWeight = 10.0D; - this.shootingEntity = p_i1756_2_; - - this.setSize(0.5F, 0.5F); - this.setLocationAndAngles(grenade.posX, grenade.posY + grenade.getEyeHeight(), grenade.posZ, - grenade.rotationYaw, grenade.rotationPitch); - this.posX -= MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * 0.16F; - this.posY -= 0.10000000149011612D; - this.posZ -= MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * 0.16F; - this.setPosition(this.posX, this.posY, this.posZ); - this.yOffset = 0.0F; - this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) - * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); - this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) - * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); - this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float) Math.PI)); - this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, p_i1756_3_ * 1.5F, 1.0F); - } - - public EntityNightmareBlast(World p_i1756_1_, EntityLivingBase p_i1756_2_, float p_i1756_3_) - { - super(p_i1756_1_); - this.renderDistanceWeight = 10.0D; - this.shootingEntity = p_i1756_2_; - - this.setSize(0.5F, 0.5F); - this.setLocationAndAngles(p_i1756_2_.posX, p_i1756_2_.posY + p_i1756_2_.getEyeHeight(), p_i1756_2_.posZ, p_i1756_2_.rotationYaw, p_i1756_2_.rotationPitch); - this.posX -= MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F; - this.posY -= 0.10000000149011612D; - this.posZ -= MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F; - this.setPosition(this.posX, this.posY, this.posZ); - this.yOffset = 0.0F; - this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI); - this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI); - this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI)); - this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, p_i1756_3_ * 1.5F, 1.0F); - } - - public EntityNightmareBlast(World world, int x, int y, int z, double mx, double my, double mz, double grav) { - super(world); - this.posX = x + 0.5F; - this.posY = y + 0.5F; - this.posZ = z + 0.5F; - - this.motionX = mx; - this.motionY = my; - this.motionZ = mz; - - this.gravity = grav; - } - - @Override - protected void entityInit() - { - this.dataWatcher.addObject(16, Byte.valueOf((byte)0)); - } - - /** - * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction. - */ - @Override - public void setThrowableHeading(double p_70186_1_, double p_70186_3_, double p_70186_5_, float p_70186_7_, float p_70186_8_) - { - float f2 = MathHelper.sqrt_double(p_70186_1_ * p_70186_1_ + p_70186_3_ * p_70186_3_ + p_70186_5_ * p_70186_5_); - p_70186_1_ /= f2; - p_70186_3_ /= f2; - p_70186_5_ /= f2; - p_70186_1_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.054499999832361937D * p_70186_8_; - p_70186_3_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.054499999832361937D * p_70186_8_; - p_70186_5_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.054499999832361937D * p_70186_8_; - p_70186_1_ *= p_70186_7_; - p_70186_3_ *= p_70186_7_; - p_70186_5_ *= p_70186_7_; - this.motionX = p_70186_1_; - this.motionY = p_70186_3_; - this.motionZ = p_70186_5_; - float f3 = MathHelper.sqrt_double(p_70186_1_ * p_70186_1_ + p_70186_5_ * p_70186_5_); - this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(p_70186_1_, p_70186_5_) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(p_70186_3_, f3) * 180.0D / Math.PI); - this.ticksInGround = 0; - } - - /** - * Sets the position and rotation. Only difference from the other one is no bounding on the rotation. Args: posX, - * posY, posZ, yaw, pitch - */ - @Override - @SideOnly(Side.CLIENT) - public void setPositionAndRotation2(double p_70056_1_, double p_70056_3_, double p_70056_5_, float p_70056_7_, float p_70056_8_, int p_70056_9_) - { - this.setPosition(p_70056_1_, p_70056_3_, p_70056_5_); - this.setRotation(p_70056_7_, p_70056_8_); - } - - /** - * Sets the velocity to the args. Args: x, y, z - */ - @Override - @SideOnly(Side.CLIENT) - public void setVelocity(double p_70016_1_, double p_70016_3_, double p_70016_5_) - { - this.motionX = p_70016_1_; - this.motionY = p_70016_3_; - this.motionZ = p_70016_5_; - - if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) - { - float f = MathHelper.sqrt_double(p_70016_1_ * p_70016_1_ + p_70016_5_ * p_70016_5_); - this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(p_70016_1_, p_70016_5_) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(p_70016_3_, f) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch; - this.prevRotationYaw = this.rotationYaw; - this.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch); - this.ticksInGround = 0; - } - } - - /** - * Called to update the entity's position/logic. - */ - //@Override - @Override - public void onUpdate() - { - super.onUpdate(); - - if(this.ticksExisted > 100) - this.setDead(); - - if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) - { - MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - //this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f) * 180.0D / Math.PI); - } - - Block block = this.worldObj.getBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f); - - if (block.getMaterial() != Material.air) - { - block.setBlockBoundsBasedOnState(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f); - block.getCollisionBoundingBoxFromPool(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f); - if(!worldObj.isRemote) { - this.worldObj.setBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f, Blocks.air); - this.setDead(); - } - } - - if (this.arrowShake > 0) - { - --this.arrowShake; - } - else - { - ++this.ticksInAir; - Vec3 vec31 = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); - Vec3 vec3 = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); - MovingObjectPosition movingobjectposition = this.worldObj.func_147447_a(vec31, vec3, false, true, false); - vec31 = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); - vec3 = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); - - if (movingobjectposition != null) - { - vec3 = Vec3.createVectorHelper(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord); - } - - Entity entity = null; - List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX, this.motionY, this.motionZ).expand(1.0D, 1.0D, 1.0D)); - double d0 = 0.0D; - int i; - float f1; - - for (i = 0; i < list.size(); ++i) - { - Entity entity1 = (Entity)list.get(i); - - if (entity1.canBeCollidedWith() && (entity1 != this.shootingEntity || this.ticksInAir >= 5)) - { - f1 = 0.3F; - AxisAlignedBB axisalignedbb1 = entity1.boundingBox.expand(f1, f1, f1); - MovingObjectPosition movingobjectposition1 = axisalignedbb1.calculateIntercept(vec31, vec3); - - if (movingobjectposition1 != null) - { - double d1 = vec31.distanceTo(movingobjectposition1.hitVec); - - if (d1 < d0 || d0 == 0.0D) - { - entity = entity1; - d0 = d1; - } - } - } - } - - if (entity != null) - { - movingobjectposition = new MovingObjectPosition(entity); - } - - if (movingobjectposition != null && movingobjectposition.entityHit != null && movingobjectposition.entityHit instanceof EntityPlayer) - { - EntityPlayer entityplayer = (EntityPlayer)movingobjectposition.entityHit; - - if (entityplayer.capabilities.disableDamage || this.shootingEntity instanceof EntityPlayer && !((EntityPlayer)this.shootingEntity).canAttackPlayer(entityplayer)) - { - movingobjectposition = null; - } - } - - float f2; - float f4; - - if (movingobjectposition != null) - { - if (movingobjectposition.entityHit != null) - { - f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ); - int k = MathHelper.ceiling_double_int(f2 * this.damage); - - if (this.getIsCritical()) - { - k += this.rand.nextInt(k / 2 + 2); - } - - DamageSource damagesource = null; - - if (this.shootingEntity == null) - { - damagesource = DamageSource.generic; - } - else - { - damagesource = DamageSource.generic; - } - - if (this.isBurning() && !(movingobjectposition.entityHit instanceof EntityEnderman)) - { - movingobjectposition.entityHit.setFire(5); - } - - if (movingobjectposition.entityHit.attackEntityFrom(damagesource, k)) - { - if (movingobjectposition.entityHit instanceof EntityLivingBase) - { - EntityLivingBase entitylivingbase = (EntityLivingBase)movingobjectposition.entityHit; - - if (this.knockbackStrength > 0) - { - f4 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - - if (f4 > 0.0F) - { - movingobjectposition.entityHit.addVelocity(this.motionX * this.knockbackStrength * 0.6000000238418579D / f4, 0.1D, this.motionZ * this.knockbackStrength * 0.6000000238418579D / f4); - } - } - - if (this.shootingEntity != null && this.shootingEntity instanceof EntityLivingBase) - { - EnchantmentHelper.func_151384_a(entitylivingbase, this.shootingEntity); - EnchantmentHelper.func_151385_b((EntityLivingBase)this.shootingEntity, entitylivingbase); - } - - if (this.shootingEntity != null && movingobjectposition.entityHit != this.shootingEntity && movingobjectposition.entityHit instanceof EntityPlayer && this.shootingEntity instanceof EntityPlayerMP) - { - ((EntityPlayerMP)this.shootingEntity).playerNetServerHandler.sendPacket(new S2BPacketChangeGameState(6, 0.0F)); - } - } - - if (!(movingobjectposition.entityHit instanceof EntityEnderman)) - { - if (!this.worldObj.isRemote && movingobjectposition.entityHit instanceof EntityLivingBase) - { - movingobjectposition.entityHit.attackEntityFrom(damagesource, (float) this.damage); - if(!worldObj.isRemote) - this.worldObj.setBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f, Blocks.air); - this.setDead(); - } - } - } - } - else - { - this.field_145791_d = movingobjectposition.blockX; - this.field_145792_e = movingobjectposition.blockY; - this.field_145789_f = movingobjectposition.blockZ; - this.field_145790_g = this.worldObj.getBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f); - this.inData = this.worldObj.getBlockMetadata(this.field_145791_d, this.field_145792_e, this.field_145789_f); - } - } - - this.posX += this.motionX; - this.posY += this.motionY; - this.posZ += this.motionZ; - f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - - f1 = 0.05F; - - if (this.isInWater()) - { - for (int l = 0; l < 4; ++l) - { - f4 = 0.25F; - this.worldObj.spawnParticle("bubble", this.posX - this.motionX * f4, this.posY - this.motionY * f4, this.posZ - this.motionZ * f4, this.motionX, this.motionY, this.motionZ); - } - } - - if (this.isWet()) - { - this.extinguish(); - } - - this.setPosition(this.posX, this.posY, this.posZ); - this.func_145775_I(); - } - } - - /** - * (abstract) Protected helper method to write subclass entity data to NBT. - */ - @Override - public void writeEntityToNBT(NBTTagCompound p_70014_1_) - { - p_70014_1_.setShort("xTile", (short)this.field_145791_d); - p_70014_1_.setShort("yTile", (short)this.field_145792_e); - p_70014_1_.setShort("zTile", (short)this.field_145789_f); - p_70014_1_.setShort("life", (short)this.ticksInGround); - p_70014_1_.setByte("inTile", (byte)Block.getIdFromBlock(this.field_145790_g)); - p_70014_1_.setByte("inData", (byte)this.inData); - p_70014_1_.setByte("shake", (byte)this.arrowShake); - p_70014_1_.setByte("inGround", (byte)(this.inGround ? 1 : 0)); - p_70014_1_.setByte("pickup", (byte)this.canBePickedUp); - p_70014_1_.setDouble("damage", this.damage); - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - */ - @Override - public void readEntityFromNBT(NBTTagCompound p_70037_1_) - { - this.field_145791_d = p_70037_1_.getShort("xTile"); - this.field_145792_e = p_70037_1_.getShort("yTile"); - this.field_145789_f = p_70037_1_.getShort("zTile"); - this.ticksInGround = p_70037_1_.getShort("life"); - this.field_145790_g = Block.getBlockById(p_70037_1_.getByte("inTile") & 255); - this.inData = p_70037_1_.getByte("inData") & 255; - this.arrowShake = p_70037_1_.getByte("shake") & 255; - this.inGround = p_70037_1_.getByte("inGround") == 1; - - if (p_70037_1_.hasKey("damage", 99)) - { - this.damage = p_70037_1_.getDouble("damage"); - } - - if (p_70037_1_.hasKey("pickup", 99)) - { - this.canBePickedUp = p_70037_1_.getByte("pickup"); - } - else if (p_70037_1_.hasKey("player", 99)) - { - this.canBePickedUp = p_70037_1_.getBoolean("player") ? 1 : 0; - } - } - - /** - * returns if this entity triggers Block.onEntityWalking on the blocks they walk on. used for spiders and wolves to - * prevent them from trampling crops - */ - @Override - protected boolean canTriggerWalking() - { - return false; - } - - @Override - @SideOnly(Side.CLIENT) - public float getShadowSize() - { - return 0.0F; - } - - public void setDamage(double p_70239_1_) - { - this.damage = p_70239_1_; - } - - public double getDamage() - { - return this.damage; - } - - /** - * Sets the amount of knockback the arrow applies when it hits a mob. - */ - public void setKnockbackStrength(int p_70240_1_) - { - this.knockbackStrength = p_70240_1_; - } - - /** - * If returns false, the item will not inflict any damage against entities. - */ - @Override - public boolean canAttackWithItem() - { - return false; - } - - /** - * Whether the arrow has a stream of critical hit particles flying behind it. - */ - public void setIsCritical(boolean p_70243_1_) - { - byte b0 = this.dataWatcher.getWatchableObjectByte(16); - - if (p_70243_1_) - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 | 1))); - } - else - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 & -2))); - } - } - - /** - * Whether the arrow has a stream of critical hit particles flying behind it. - */ - public boolean getIsCritical() - { - byte b0 = this.dataWatcher.getWatchableObjectByte(16); - return (b0 & 1) != 0; - } -} diff --git a/src/main/java/com/hbm/entity/projectile/EntityPlasmaBeam.java b/src/main/java/com/hbm/entity/projectile/EntityPlasmaBeam.java deleted file mode 100644 index 406d71d14..000000000 --- a/src/main/java/com/hbm/entity/projectile/EntityPlasmaBeam.java +++ /dev/null @@ -1,556 +0,0 @@ -package com.hbm.entity.projectile; - -import java.util.List; - -import com.hbm.entity.grenade.EntityGrenadeZOMG; -import com.hbm.explosion.ExplosionChaos; -import com.hbm.explosion.ExplosionThermo; -import com.hbm.items.ModItems; -import com.hbm.lib.ModDamageSource; -import com.hbm.main.MainRegistry; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.IProjectile; -import net.minecraft.entity.monster.EntityEnderman; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.play.server.S2BPacketChangeGameState; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -public class EntityPlasmaBeam extends Entity implements IProjectile -{ - private int field_145791_d = -1; - private int field_145792_e = -1; - private int field_145789_f = -1; - public double gravity = 0.0D; - private Block field_145790_g; - private int inData; - private boolean inGround; - /** 1 if the player can pick up the arrow */ - public int canBePickedUp; - /** Seems to be some sort of timer for animating an arrow. */ - public int arrowShake; - /** The owner of this arrow. */ - public Entity shootingEntity; - private int ticksInGround; - private int ticksInAir; - private double damage = 2.0D; - /** The amount of knockback an arrow applies when it hits a mob. */ - private int knockbackStrength; - public EntityPlasmaBeam(World p_i1753_1_) - { - super(p_i1753_1_); - this.renderDistanceWeight = 10.0D; - this.setSize(0.5F, 0.5F); - } - - public EntityPlasmaBeam(World p_i1754_1_, double p_i1754_2_, double p_i1754_4_, double p_i1754_6_) - { - super(p_i1754_1_); - this.renderDistanceWeight = 10.0D; - this.setSize(0.5F, 0.5F); - this.setPosition(p_i1754_2_, p_i1754_4_, p_i1754_6_); - this.yOffset = 0.0F; - } - - public EntityPlasmaBeam(World p_i1755_1_, EntityLivingBase p_i1755_2_, EntityLivingBase p_i1755_3_, float p_i1755_4_, float p_i1755_5_) - { - super(p_i1755_1_); - this.renderDistanceWeight = 10.0D; - this.shootingEntity = p_i1755_2_; - - if (p_i1755_2_ instanceof EntityPlayer) - { - this.canBePickedUp = 1; - } - - this.posY = p_i1755_2_.posY + p_i1755_2_.getEyeHeight() - 0.10000000149011612D; - double d0 = p_i1755_3_.posX - p_i1755_2_.posX; - double d1 = p_i1755_3_.boundingBox.minY + p_i1755_3_.height / 3.0F - this.posY; - double d2 = p_i1755_3_.posZ - p_i1755_2_.posZ; - double d3 = MathHelper.sqrt_double(d0 * d0 + d2 * d2); - - if (d3 >= 1.0E-7D) - { - float f2 = (float)(Math.atan2(d2, d0) * 180.0D / Math.PI) - 90.0F; - float f3 = (float)(-(Math.atan2(d1, d3) * 180.0D / Math.PI)); - double d4 = d0 / d3; - double d5 = d2 / d3; - this.setLocationAndAngles(p_i1755_2_.posX + d4, this.posY, p_i1755_2_.posZ + d5, f2, f3); - this.yOffset = 0.0F; - float f4 = (float)d3 * 0.2F; - this.setThrowableHeading(d0, d1 + f4, d2, p_i1755_4_, p_i1755_5_); - } - } - - public EntityPlasmaBeam(World p_i1756_1_, EntityLivingBase p_i1756_2_, float p_i1756_3_, int dmgMin, int dmgMax, EntityGrenadeZOMG grenade) { - super(p_i1756_1_); - this.renderDistanceWeight = 10.0D; - this.shootingEntity = p_i1756_2_; - - this.setSize(0.5F, 0.5F); - this.setLocationAndAngles(grenade.posX, grenade.posY + grenade.getEyeHeight(), grenade.posZ, - grenade.rotationYaw, grenade.rotationPitch); - this.posX -= MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * 0.16F; - this.posY -= 0.10000000149011612D; - this.posZ -= MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * 0.16F; - this.setPosition(this.posX, this.posY, this.posZ); - this.yOffset = 0.0F; - this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) - * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); - this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) - * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); - this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float) Math.PI)); - this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, p_i1756_3_ * 1.5F, 1.0F); - } - - public EntityPlasmaBeam(World p_i1756_1_, EntityLivingBase p_i1756_2_, float p_i1756_3_) - { - super(p_i1756_1_); - this.renderDistanceWeight = 10.0D; - this.shootingEntity = p_i1756_2_; - - this.setSize(0.5F, 0.5F); - this.setLocationAndAngles(p_i1756_2_.posX, p_i1756_2_.posY + p_i1756_2_.getEyeHeight(), p_i1756_2_.posZ, p_i1756_2_.rotationYaw, p_i1756_2_.rotationPitch); - this.posX -= MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F; - this.posY -= 0.10000000149011612D; - this.posZ -= MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F; - this.setPosition(this.posX, this.posY, this.posZ); - this.yOffset = 0.0F; - this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI); - this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI); - this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI)); - this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, p_i1756_3_ * 1.5F, 1.0F); - } - - public EntityPlasmaBeam(World world, int x, int y, int z, double mx, double my, double mz, double grav) { - super(world); - this.posX = x + 0.5F; - this.posY = y + 0.5F; - this.posZ = z + 0.5F; - - this.motionX = mx; - this.motionY = my; - this.motionZ = mz; - - this.gravity = grav; - } - - @Override - protected void entityInit() - { - this.dataWatcher.addObject(16, Byte.valueOf((byte)0)); - } - - /** - * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction. - */ - @Override - public void setThrowableHeading(double p_70186_1_, double p_70186_3_, double p_70186_5_, float p_70186_7_, float p_70186_8_) - { - float f2 = MathHelper.sqrt_double(p_70186_1_ * p_70186_1_ + p_70186_3_ * p_70186_3_ + p_70186_5_ * p_70186_5_); - p_70186_1_ /= f2; - p_70186_3_ /= f2; - p_70186_5_ /= f2; - p_70186_1_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.002499999832361937D * p_70186_8_; - p_70186_3_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.002499999832361937D * p_70186_8_; - p_70186_5_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.002499999832361937D * p_70186_8_; - p_70186_1_ *= p_70186_7_; - p_70186_3_ *= p_70186_7_; - p_70186_5_ *= p_70186_7_; - this.motionX = p_70186_1_; - this.motionY = p_70186_3_; - this.motionZ = p_70186_5_; - float f3 = MathHelper.sqrt_double(p_70186_1_ * p_70186_1_ + p_70186_5_ * p_70186_5_); - this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(p_70186_1_, p_70186_5_) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(p_70186_3_, f3) * 180.0D / Math.PI); - this.ticksInGround = 0; - } - - /** - * Sets the position and rotation. Only difference from the other one is no bounding on the rotation. Args: posX, - * posY, posZ, yaw, pitch - */ - @Override - @SideOnly(Side.CLIENT) - public void setPositionAndRotation2(double p_70056_1_, double p_70056_3_, double p_70056_5_, float p_70056_7_, float p_70056_8_, int p_70056_9_) - { - this.setPosition(p_70056_1_, p_70056_3_, p_70056_5_); - this.setRotation(p_70056_7_, p_70056_8_); - } - - /** - * Sets the velocity to the args. Args: x, y, z - */ - @Override - @SideOnly(Side.CLIENT) - public void setVelocity(double p_70016_1_, double p_70016_3_, double p_70016_5_) - { - this.motionX = p_70016_1_; - this.motionY = p_70016_3_; - this.motionZ = p_70016_5_; - - if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) - { - float f = MathHelper.sqrt_double(p_70016_1_ * p_70016_1_ + p_70016_5_ * p_70016_5_); - this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(p_70016_1_, p_70016_5_) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(p_70016_3_, f) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch; - this.prevRotationYaw = this.rotationYaw; - this.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch); - this.ticksInGround = 0; - } - } - - /** - * Called to update the entity's position/logic. - */ - //@Override - @Override - public void onUpdate() - { - super.onUpdate(); - - if(this.ticksExisted > 100) - this.setDead(); - - if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) - { - MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - //this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f) * 180.0D / Math.PI); - } - - Block block = this.worldObj.getBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f); - - if (block.getMaterial() != Material.air) - { - block.setBlockBoundsBasedOnState(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f); - block.getCollisionBoundingBoxFromPool(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f); - if(!worldObj.isRemote) { - ExplosionChaos.burn(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 2); - ExplosionChaos.flameDeath(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 5); - ExplosionThermo.scorchLight(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 3); - } - this.setDead(); - } - - if (this.arrowShake > 0) - { - --this.arrowShake; - } - else - { - ++this.ticksInAir; - Vec3 vec31 = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); - Vec3 vec3 = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); - MovingObjectPosition movingobjectposition = this.worldObj.func_147447_a(vec31, vec3, false, true, false); - vec31 = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); - vec3 = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); - - if (movingobjectposition != null) - { - vec3 = Vec3.createVectorHelper(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord); - } - - Entity entity = null; - List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX, this.motionY, this.motionZ).expand(1.0D, 1.0D, 1.0D)); - double d0 = 0.0D; - int i; - float f1; - - for (i = 0; i < list.size(); ++i) - { - Entity entity1 = (Entity)list.get(i); - - if (entity1.canBeCollidedWith() && (entity1 != this.shootingEntity || this.ticksInAir >= 5)) - { - f1 = 0.3F; - AxisAlignedBB axisalignedbb1 = entity1.boundingBox.expand(f1, f1, f1); - MovingObjectPosition movingobjectposition1 = axisalignedbb1.calculateIntercept(vec31, vec3); - - if (movingobjectposition1 != null) - { - double d1 = vec31.distanceTo(movingobjectposition1.hitVec); - - if (d1 < d0 || d0 == 0.0D) - { - entity = entity1; - d0 = d1; - } - } - } - } - - if (entity != null) - { - movingobjectposition = new MovingObjectPosition(entity); - } - - if (movingobjectposition != null && movingobjectposition.entityHit != null && movingobjectposition.entityHit instanceof EntityPlayer) - { - EntityPlayer entityplayer = (EntityPlayer)movingobjectposition.entityHit; - - if (entityplayer.capabilities.disableDamage || this.shootingEntity instanceof EntityPlayer && !((EntityPlayer)this.shootingEntity).canAttackPlayer(entityplayer)) - { - movingobjectposition = null; - } - - if(this.ticksExisted > 5 && surviveImmolation(entityplayer)) - movingobjectposition = null; - } - - float f2; - float f4; - - if (movingobjectposition != null) - { - if (movingobjectposition.entityHit != null) - { - f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ); - int k = MathHelper.ceiling_double_int(f2 * this.damage); - - if (this.getIsCritical()) - { - k += this.rand.nextInt(k / 2 + 2); - } - - DamageSource damagesource = null; - - if (this.shootingEntity == null) - { - damagesource = DamageSource.generic; - } - else - { - damagesource = ModDamageSource.causePlasmaDamage(this, this.shootingEntity); - } - - if (this.isBurning() && !(movingobjectposition.entityHit instanceof EntityEnderman)) - { - movingobjectposition.entityHit.setFire(5); - } - - if (movingobjectposition.entityHit.attackEntityFrom(damagesource, k)) - { - if (movingobjectposition.entityHit instanceof EntityLivingBase) - { - EntityLivingBase entitylivingbase = (EntityLivingBase)movingobjectposition.entityHit; - - if (this.knockbackStrength > 0) - { - f4 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - - if (f4 > 0.0F) - { - movingobjectposition.entityHit.addVelocity(this.motionX * this.knockbackStrength * 0.6000000238418579D / f4, 0.1D, this.motionZ * this.knockbackStrength * 0.6000000238418579D / f4); - } - } - - if (this.shootingEntity != null && this.shootingEntity instanceof EntityLivingBase) - { - EnchantmentHelper.func_151384_a(entitylivingbase, this.shootingEntity); - EnchantmentHelper.func_151385_b((EntityLivingBase)this.shootingEntity, entitylivingbase); - } - - if (this.shootingEntity != null && movingobjectposition.entityHit != this.shootingEntity && movingobjectposition.entityHit instanceof EntityPlayer && this.shootingEntity instanceof EntityPlayerMP) - { - ((EntityPlayerMP)this.shootingEntity).playerNetServerHandler.sendPacket(new S2BPacketChangeGameState(6, 0.0F)); - } - } - - if (!(movingobjectposition.entityHit instanceof EntityEnderman)) - { - if (!this.worldObj.isRemote && movingobjectposition.entityHit instanceof EntityLivingBase) - { - movingobjectposition.entityHit.attackEntityFrom(damagesource, 25 + rand.nextInt(20)); - if(!worldObj.isRemote) { - ExplosionChaos.burn(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 2); - ExplosionChaos.flameDeath(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 5); - ExplosionThermo.scorchLight(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 3); - } - this.setDead(); - } - } - } - } - else - { - this.field_145791_d = movingobjectposition.blockX; - this.field_145792_e = movingobjectposition.blockY; - this.field_145789_f = movingobjectposition.blockZ; - this.field_145790_g = this.worldObj.getBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f); - this.inData = this.worldObj.getBlockMetadata(this.field_145791_d, this.field_145792_e, this.field_145789_f); - } - } - - this.posX += this.motionX; - this.posY += this.motionY; - this.posZ += this.motionZ; - f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - - f1 = 0.05F; - - if (this.isInWater()) - { - this.setDead(); - if(!worldObj.isRemote) { - ExplosionChaos.burn(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 2); - ExplosionChaos.flameDeath(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 5); - ExplosionThermo.scorchLight(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 3); - } - } - - if (this.isWet()) - { - this.extinguish(); - } - - this.setPosition(this.posX, this.posY, this.posZ); - this.func_145775_I(); - } - } - - /** - * (abstract) Protected helper method to write subclass entity data to NBT. - */ - @Override - public void writeEntityToNBT(NBTTagCompound p_70014_1_) - { - p_70014_1_.setShort("xTile", (short)this.field_145791_d); - p_70014_1_.setShort("yTile", (short)this.field_145792_e); - p_70014_1_.setShort("zTile", (short)this.field_145789_f); - p_70014_1_.setShort("life", (short)this.ticksInGround); - p_70014_1_.setByte("inTile", (byte)Block.getIdFromBlock(this.field_145790_g)); - p_70014_1_.setByte("inData", (byte)this.inData); - p_70014_1_.setByte("shake", (byte)this.arrowShake); - p_70014_1_.setByte("inGround", (byte)(this.inGround ? 1 : 0)); - p_70014_1_.setByte("pickup", (byte)this.canBePickedUp); - p_70014_1_.setDouble("damage", this.damage); - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - */ - @Override - public void readEntityFromNBT(NBTTagCompound p_70037_1_) - { - this.field_145791_d = p_70037_1_.getShort("xTile"); - this.field_145792_e = p_70037_1_.getShort("yTile"); - this.field_145789_f = p_70037_1_.getShort("zTile"); - this.ticksInGround = p_70037_1_.getShort("life"); - this.field_145790_g = Block.getBlockById(p_70037_1_.getByte("inTile") & 255); - this.inData = p_70037_1_.getByte("inData") & 255; - this.arrowShake = p_70037_1_.getByte("shake") & 255; - this.inGround = p_70037_1_.getByte("inGround") == 1; - - if (p_70037_1_.hasKey("damage", 99)) - { - this.damage = p_70037_1_.getDouble("damage"); - } - - if (p_70037_1_.hasKey("pickup", 99)) - { - this.canBePickedUp = p_70037_1_.getByte("pickup"); - } - else if (p_70037_1_.hasKey("player", 99)) - { - this.canBePickedUp = p_70037_1_.getBoolean("player") ? 1 : 0; - } - } - - /** - * returns if this entity triggers Block.onEntityWalking on the blocks they walk on. used for spiders and wolves to - * prevent them from trampling crops - */ - @Override - protected boolean canTriggerWalking() - { - return false; - } - - @Override - @SideOnly(Side.CLIENT) - public float getShadowSize() - { - return 0.0F; - } - - public void setDamage(double p_70239_1_) - { - this.damage = p_70239_1_; - } - - public double getDamage() - { - return this.damage; - } - - /** - * Sets the amount of knockback the arrow applies when it hits a mob. - */ - public void setKnockbackStrength(int p_70240_1_) - { - this.knockbackStrength = p_70240_1_; - } - - /** - * If returns false, the item will not inflict any damage against entities. - */ - @Override - public boolean canAttackWithItem() - { - return false; - } - - /** - * Whether the arrow has a stream of critical hit particles flying behind it. - */ - public void setIsCritical(boolean p_70243_1_) - { - byte b0 = this.dataWatcher.getWatchableObjectByte(16); - - if (p_70243_1_) - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 | 1))); - } - else - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 & -2))); - } - } - - /** - * Whether the arrow has a stream of critical hit particles flying behind it. - */ - public boolean getIsCritical() - { - byte b0 = this.dataWatcher.getWatchableObjectByte(16); - return (b0 & 1) != 0; - } - - private boolean surviveImmolation(EntityPlayer player) { - if(player.inventory.hasItem(ModItems.gun_revolver_pip) && player.inventory.hasItem(ModItems.bottle_sparkle) && player.inventory.hasItem(ModItems.geiger_counter)) { - player.triggerAchievement(MainRegistry.achSacrifice); - player.addPotionEffect(new PotionEffect(Potion.regeneration.id, 3 * 20, 6)); - return true; - } else { - return false; - } - } -} diff --git a/src/main/java/com/hbm/entity/projectile/EntityRocket.java b/src/main/java/com/hbm/entity/projectile/EntityRocket.java index d46c15a82..a573b13dc 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityRocket.java +++ b/src/main/java/com/hbm/entity/projectile/EntityRocket.java @@ -24,6 +24,7 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.World; +// still in use for cluster munitions - somehow! let this fucking class die already public class EntityRocket extends Entity implements IProjectile { private int field_145791_d = -1; diff --git a/src/main/java/com/hbm/entity/projectile/EntityRocketHoming.java b/src/main/java/com/hbm/entity/projectile/EntityRocketHoming.java deleted file mode 100644 index c035c0833..000000000 --- a/src/main/java/com/hbm/entity/projectile/EntityRocketHoming.java +++ /dev/null @@ -1,750 +0,0 @@ -package com.hbm.entity.projectile; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.hbm.explosion.ExplosionLarge; -import com.hbm.explosion.ExplosionNukeSmall; -import com.hbm.handler.radiation.ChunkRadiationManager; -import com.hbm.items.ModItems; -import com.hbm.lib.Library; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.IProjectile; -import net.minecraft.entity.monster.EntityEnderman; -import net.minecraft.entity.monster.EntitySkeleton; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.play.server.S2BPacketChangeGameState; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -public class EntityRocketHoming extends Entity implements IProjectile -{ - private int field_145791_d = -1; - private int field_145792_e = -1; - private int field_145789_f = -1; - public double gravity = 0.0D; - private Block field_145790_g; - private int inData; - private boolean inGround; - public int canBePickedUp; - public int arrowShake; - public Entity shootingEntity; - private int ticksInGround; - private int ticksInAir; - private double damage = 2.0D; - private int knockbackStrength; - private float explosionStrength; - - // specifies the type of stinger rocket that was fired - /* 0 = Normal - * 1 = HE - * 2 = Incendiary - * 4 = Nuclear - * 42 = bone-seeking - */ - public int type; - - - public EntityRocketHoming(World p_i1753_1_) - { - super(p_i1753_1_); - this.renderDistanceWeight = 10.0D; - this.setSize(0.5F, 0.5F); - } - - public EntityRocketHoming(World p_i1754_1_, double p_i1754_2_, double p_i1754_4_, double p_i1754_6_) - { - super(p_i1754_1_); - this.renderDistanceWeight = 10.0D; - this.setSize(0.5F, 0.5F); - this.setPosition(p_i1754_2_, p_i1754_4_, p_i1754_6_); - this.yOffset = 0.0F; - } - - public EntityRocketHoming(World p_i1755_1_, EntityLivingBase p_i1755_2_, EntityLivingBase p_i1755_3_, float p_i1755_4_, float p_i1755_5_, int rocketType) - { - super(p_i1755_1_); - this.renderDistanceWeight = 10.0D; - this.shootingEntity = p_i1755_2_; - this.type = rocketType; - - if (p_i1755_2_ instanceof EntityPlayer) - { - this.canBePickedUp = 1; - } - - this.posY = p_i1755_2_.posY + p_i1755_2_.getEyeHeight() - 0.10000000149011612D; - double d0 = p_i1755_3_.posX - p_i1755_2_.posX; - double d1 = p_i1755_3_.boundingBox.minY + p_i1755_3_.height / 3.0F - this.posY; - double d2 = p_i1755_3_.posZ - p_i1755_2_.posZ; - double d3 = MathHelper.sqrt_double(d0 * d0 + d2 * d2); - - if (d3 >= 1.0E-7D) - { - float f2 = (float)(Math.atan2(d2, d0) * 180.0D / Math.PI) - 90.0F; - float f3 = (float)(-(Math.atan2(d1, d3) * 180.0D / Math.PI)); - double d4 = d0 / d3; - double d5 = d2 / d3; - this.setLocationAndAngles(p_i1755_2_.posX + d4, this.posY, p_i1755_2_.posZ + d5, f2, f3); - this.yOffset = 0.0F; - float f4 = (float)d3 * 0.2F; - this.setThrowableHeading(d0, d1 + f4, d2, p_i1755_4_, p_i1755_5_); - } - } - - public EntityRocketHoming(World p_i1756_1_, EntityLivingBase p_i1756_2_, float p_i1756_3_, float strength, int type) - { - super(p_i1756_1_); - this.renderDistanceWeight = 10.0D; - this.shootingEntity = p_i1756_2_; - this.type = type; - - if (p_i1756_2_ instanceof EntityPlayer) - { - this.canBePickedUp = 1; - } - - this.setSize(0.5F, 0.5F); - this.setLocationAndAngles(p_i1756_2_.posX, p_i1756_2_.posY + p_i1756_2_.getEyeHeight(), p_i1756_2_.posZ, p_i1756_2_.rotationYaw, p_i1756_2_.rotationPitch); - this.posX -= MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F; - this.posY -= 0.10000000149011612D; - this.posZ -= MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F; - this.setPosition(this.posX, this.posY, this.posZ); - this.yOffset = 0.0F; - this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI); - this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI); - this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI)); - this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, p_i1756_3_ * 1.5F, 1.0F); - this.explosionStrength = strength; - } - - public EntityRocketHoming(World world, int x, int y, int z, double mx, double my, double mz, double grav) { - super(world); - this.posX = x + 0.5F; - this.posY = y + 0.5F; - this.posZ = z + 0.5F; - - this.motionX = mx; - this.motionY = my; - this.motionZ = mz; - - this.gravity = grav; - } - - @Override - protected void entityInit() - { - this.dataWatcher.addObject(16, Byte.valueOf((byte)0)); - } - - /** - * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction. - */ - @Override - public void setThrowableHeading(double p_70186_1_, double p_70186_3_, double p_70186_5_, float p_70186_7_, float p_70186_8_) - { - float f2 = MathHelper.sqrt_double(p_70186_1_ * p_70186_1_ + p_70186_3_ * p_70186_3_ + p_70186_5_ * p_70186_5_); - p_70186_1_ /= f2; - p_70186_3_ /= f2; - p_70186_5_ /= f2; - p_70186_1_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * p_70186_8_; - p_70186_3_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * p_70186_8_; - p_70186_5_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * p_70186_8_; - p_70186_1_ *= p_70186_7_; - p_70186_3_ *= p_70186_7_; - p_70186_5_ *= p_70186_7_; - this.motionX = p_70186_1_; - this.motionY = p_70186_3_; - this.motionZ = p_70186_5_; - float f3 = MathHelper.sqrt_double(p_70186_1_ * p_70186_1_ + p_70186_5_ * p_70186_5_); - this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(p_70186_1_, p_70186_5_) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(p_70186_3_, f3) * 180.0D / Math.PI); - this.ticksInGround = 0; - } - - /** - * Sets the position and rotation. Only difference from the other one is no bounding on the rotation. Args: posX, - * posY, posZ, yaw, pitch - */ - @Override - @SideOnly(Side.CLIENT) - public void setPositionAndRotation2(double p_70056_1_, double p_70056_3_, double p_70056_5_, float p_70056_7_, float p_70056_8_, int p_70056_9_) - { - this.setPosition(p_70056_1_, p_70056_3_, p_70056_5_); - this.setRotation(p_70056_7_, p_70056_8_); - } - - /** - * Sets the velocity to the args. Args: x, y, z - */ - @Override - @SideOnly(Side.CLIENT) - public void setVelocity(double p_70016_1_, double p_70016_3_, double p_70016_5_) - { - this.motionX = p_70016_1_; - this.motionY = p_70016_3_; - this.motionZ = p_70016_5_; - - if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) - { - float f = MathHelper.sqrt_double(p_70016_1_ * p_70016_1_ + p_70016_5_ * p_70016_5_); - this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(p_70016_1_, p_70016_5_) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(p_70016_3_, f) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch; - this.prevRotationYaw = this.rotationYaw; - this.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch); - this.ticksInGround = 0; - } - } - - /** - * Called to update the entity's position/logic. - */ - //@Override - @Override - public void onUpdate() - { - super.onUpdate(); - - if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) - { - MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - //this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f) * 180.0D / Math.PI); - } - - Block block = this.worldObj.getBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f); - - if (block.getMaterial() != Material.air) - { - block.setBlockBoundsBasedOnState(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f); - AxisAlignedBB axisalignedbb = block.getCollisionBoundingBoxFromPool(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f); - - if (axisalignedbb != null && axisalignedbb.isVecInside(Vec3.createVectorHelper(this.posX, this.posY, this.posZ))) - { - this.inGround = true; - } - } - - if (this.arrowShake > 0) - { - --this.arrowShake; - } - - if (this.inGround) - { - /*int j = this.worldObj.getBlockMetadata(this.field_145791_d, this.field_145792_e, this.field_145789_f); - if (block == this.field_145790_g && j == this.inData) - { - ++this.ticksInGround; - if (this.ticksInGround == 1200) - { - this.setDead(); - } - } - else - { - this.inGround = false; - this.motionX *= (double)(this.rand.nextFloat() * 0.2F); - this.motionY *= (double)(this.rand.nextFloat() * 0.2F); - this.motionZ *= (double)(this.rand.nextFloat() * 0.2F); - this.ticksInGround = 0; - this.ticksInAir = 0; - }*/ - - - if (!this.worldObj.isRemote) - { - //this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 2.5F, true); - Explode(this.type, this.explosionStrength); - /*EntityNukeExplosionAdvanced explosion = new EntityNukeExplosionAdvanced(this.worldObj); - explosion.speed = 25; - explosion.coefficient = 5.0F; - explosion.destructionRange = 20; - explosion.posX = this.posX; - explosion.posY = this.posY; - explosion.posZ = this.posZ; - this.worldObj.spawnEntityInWorld(explosion);*/ - } - this.setDead(); - } - else - { - ++this.ticksInAir; - Vec3 vec31 = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); - Vec3 vec3 = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); - MovingObjectPosition movingobjectposition = this.worldObj.func_147447_a(vec31, vec3, false, true, false); - vec31 = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); - vec3 = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); - - if (movingobjectposition != null) - { - vec3 = Vec3.createVectorHelper(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord); - } - - Entity entity = null; - List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX, this.motionY, this.motionZ).expand(1.0D, 1.0D, 1.0D)); - double d0 = 0.0D; - int i; - float f1; - - for (i = 0; i < list.size(); ++i) - { - Entity entity1 = (Entity)list.get(i); - - if (entity1.canBeCollidedWith() && (entity1 != this.shootingEntity || this.ticksInAir >= 5)) - { - f1 = 0.3F; - AxisAlignedBB axisalignedbb1 = entity1.boundingBox.expand(f1, f1, f1); - MovingObjectPosition movingobjectposition1 = axisalignedbb1.calculateIntercept(vec31, vec3); - - if (movingobjectposition1 != null) - { - double d1 = vec31.distanceTo(movingobjectposition1.hitVec); - - if (d1 < d0 || d0 == 0.0D) - { - entity = entity1; - d0 = d1; - } - } - } - } - - - if (entity != null) - { - movingobjectposition = new MovingObjectPosition(entity); - } - - if (movingobjectposition != null && movingobjectposition.entityHit != null && movingobjectposition.entityHit instanceof EntityPlayer) - { - EntityPlayer entityplayer = (EntityPlayer)movingobjectposition.entityHit; - - if (entityplayer.capabilities.disableDamage || this.shootingEntity instanceof EntityPlayer && !((EntityPlayer)this.shootingEntity).canAttackPlayer(entityplayer)) - { - movingobjectposition = null; - } - } - - float f2; - float f4; - - if (movingobjectposition != null) - { - if (movingobjectposition.entityHit != null) - { - f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ); - int k = MathHelper.ceiling_double_int(f2 * this.damage); - - if (this.getIsCritical()) - { - k += this.rand.nextInt(k / 2 + 2); - } - - DamageSource damagesource = null; - - if (this.shootingEntity == null) - { - damagesource = DamageSource.causeIndirectMagicDamage(this, this); - } - else - { - damagesource = DamageSource.causeIndirectMagicDamage(this, this); - } - - if (this.isBurning() && !(movingobjectposition.entityHit instanceof EntityEnderman)) - { - movingobjectposition.entityHit.setFire(5); - } - - if (movingobjectposition.entityHit.attackEntityFrom(damagesource, k)) - { - if (movingobjectposition.entityHit instanceof EntityLivingBase) - { - EntityLivingBase entitylivingbase = (EntityLivingBase)movingobjectposition.entityHit; - - if (this.knockbackStrength > 0) - { - f4 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - - if (f4 > 0.0F) - { - movingobjectposition.entityHit.addVelocity(this.motionX * this.knockbackStrength * 0.6000000238418579D / f4, 0.1D, this.motionZ * this.knockbackStrength * 0.6000000238418579D / f4); - } - } - - if (this.shootingEntity != null && this.shootingEntity instanceof EntityLivingBase) - { - EnchantmentHelper.func_151384_a(entitylivingbase, this.shootingEntity); - EnchantmentHelper.func_151385_b((EntityLivingBase)this.shootingEntity, entitylivingbase); - } - - if (this.shootingEntity != null && movingobjectposition.entityHit != this.shootingEntity && movingobjectposition.entityHit instanceof EntityPlayer && this.shootingEntity instanceof EntityPlayerMP) - { - ((EntityPlayerMP)this.shootingEntity).playerNetServerHandler.sendPacket(new S2BPacketChangeGameState(6, 0.0F)); - } - } - - if (!(movingobjectposition.entityHit instanceof EntityEnderman)) - { - if (!this.worldObj.isRemote) - { - //this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 2.5F, true); - Explode(this.type, this.explosionStrength); - } - this.setDead(); - } - } - else - { - if (!this.worldObj.isRemote) - { - //this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 2.5F, true); - Explode(this.type, this.explosionStrength); - } - this.setDead(); - } - } - else - { - this.field_145791_d = movingobjectposition.blockX; - this.field_145792_e = movingobjectposition.blockY; - this.field_145789_f = movingobjectposition.blockZ; - this.field_145790_g = this.worldObj.getBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f); - this.inData = this.worldObj.getBlockMetadata(this.field_145791_d, this.field_145792_e, this.field_145789_f); - this.motionX = ((float)(movingobjectposition.hitVec.xCoord - this.posX)); - this.motionY = ((float)(movingobjectposition.hitVec.yCoord - this.posY)); - this.motionZ = ((float)(movingobjectposition.hitVec.zCoord - this.posZ)); - f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ); - this.posX -= this.motionX / f2 * 0.05000000074505806D; - this.posY -= this.motionY / f2 * 0.05000000074505806D; - this.posZ -= this.motionZ / f2 * 0.05000000074505806D; - this.inGround = true; - this.arrowShake = 7; - this.setIsCritical(false); - - if (this.field_145790_g.getMaterial() != Material.air) - { - this.field_145790_g.onEntityCollidedWithBlock(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f, this); - } - } - } - - this.posX += this.motionX; - this.posY += this.motionY; - this.posZ += this.motionZ; - f2 = 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)f2) * 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; - }*/ - - f1 = 0.05F; - - if (this.isInWater()) - { - for (int l = 0; l < 4; ++l) - { - f4 = 0.25F; - this.worldObj.spawnParticle("bubble", this.posX - this.motionX * f4, this.posY - this.motionY * f4, this.posZ - this.motionZ * f4, this.motionX, this.motionY, this.motionZ); - } - } - - if (this.isWet()) - { - this.extinguish(); - } - - /*this.motionX *= f3; - this.motionY *= f3; - this.motionZ *= f3;*/ - //this.motionY -= gravity; - this.setPosition(this.posX, this.posY, this.posZ); - this.func_145775_I(); - } - - if(!steer()) - lockonTicks = 0; - - if (this.ticksExisted > 250) - this.setDead(); - } - - public int homingRadius = 35; - public int homingMod = 15; - public float acceptance = 120; - int lockonTicks = 0; - boolean hasBeeped = false; - - private boolean steer() { - List all = null; - if(this.type == 42) { - all = worldObj.getEntitiesWithinAABB(EntitySkeleton.class, AxisAlignedBB.getBoundingBox(posX - homingRadius, posY - homingRadius, posZ - homingRadius, posX + homingRadius, posY + homingRadius, posZ + homingRadius)); - } else { - all = worldObj.getEntitiesWithinAABBExcludingEntity(this, AxisAlignedBB.getBoundingBox(posX - homingRadius, posY - homingRadius, posZ - homingRadius, posX + homingRadius, posY + homingRadius, posZ + homingRadius)); - } - - HashMap targetable = new HashMap(); - Vec3 path = Vec3.createVectorHelper(motionX, motionY, motionZ); - double startSpeed = path.lengthVector(); - path.normalize(); - - if(all.isEmpty()) - return false; - - //Iterate through all entities and only allocate ones that can be targeted - for(Entity e : all) { - - if(e == this.shootingEntity) - continue; - - Vec3 rel = Vec3.createVectorHelper(e.posX - posX, e.posY + e.getEyeHeight() - posY, e.posZ - posZ); - double vecProd = rel.xCoord * path.xCoord + rel.yCoord * path.yCoord + rel.zCoord * path.zCoord; - double bot = rel.lengthVector() * path.lengthVector(); - double angle = Math.acos(vecProd / bot) * 180 / Math.PI; - - if(angle <= acceptance); - if(e.height * e.width * e.width >= 0.5D) - if(!Library.isObstructed(worldObj, e.posX, e.posY, e.posZ, posX, posY, posZ)) - targetable.put(e, angle); - } - - if(targetable.isEmpty()) - return false; - - double smallest = Double.POSITIVE_INFINITY; - Entity nearestE = null; - - //Iterate through all entities and choose the one that has the smallest angle - for(Map.Entry entry : targetable.entrySet()) { - if(entry.getValue() < smallest) { - smallest = entry.getValue(); - nearestE = entry.getKey(); - } - } - - if(nearestE == null) - return false; - - Vec3 winVec = Vec3.createVectorHelper(nearestE.posX - posX, nearestE.posY - posY, nearestE.posZ - posZ); - - winVec.normalize(); - - double newX = ((path.xCoord * (smallest * homingMod - 1)) + winVec.xCoord) / (smallest * homingMod); - double newY = ((path.yCoord * (smallest * homingMod - 1)) + winVec.yCoord) / (smallest * homingMod); - double newZ = ((path.zCoord * (smallest * homingMod - 1)) + winVec.zCoord) / (smallest * homingMod); - - Vec3 newPath = Vec3.createVectorHelper(newX, newY, newZ); - newPath.normalize(); - newPath.xCoord *= startSpeed; - newPath.yCoord *= startSpeed; - newPath.zCoord *= startSpeed; - - motionX = newPath.xCoord; - motionY = newPath.yCoord; - motionZ = newPath.zCoord; - this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, (float)startSpeed, 0.0F); - - lockonTicks++; - if(lockonTicks == 5 && !hasBeeped) { - if(this.getIsCritical()) - worldObj.playSoundAtEntity(this, "hbm:weapon.stingerLockOn", 10F, 0.75F); - else - worldObj.playSoundAtEntity(this, "hbm:weapon.stingerLockOn", 10F, 1F); - hasBeeped = true; - } - - return true; - } - - /** - * (abstract) Protected helper method to write subclass entity data to NBT. - */ - @Override - public void writeEntityToNBT(NBTTagCompound p_70014_1_) - { - p_70014_1_.setShort("xTile", (short)this.field_145791_d); - p_70014_1_.setShort("yTile", (short)this.field_145792_e); - p_70014_1_.setShort("zTile", (short)this.field_145789_f); - p_70014_1_.setShort("life", (short)this.ticksInGround); - p_70014_1_.setByte("inTile", (byte)Block.getIdFromBlock(this.field_145790_g)); - p_70014_1_.setByte("inData", (byte)this.inData); - p_70014_1_.setByte("shake", (byte)this.arrowShake); - p_70014_1_.setByte("inGround", (byte)(this.inGround ? 1 : 0)); - p_70014_1_.setByte("pickup", (byte)this.canBePickedUp); - p_70014_1_.setDouble("damage", this.damage); - p_70014_1_.setFloat("strength", (byte)this.explosionStrength); - p_70014_1_.setByte("type", (byte)this.type); - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - */ - @Override - public void readEntityFromNBT(NBTTagCompound p_70037_1_) - { - this.field_145791_d = p_70037_1_.getShort("xTile"); - this.field_145792_e = p_70037_1_.getShort("yTile"); - this.field_145789_f = p_70037_1_.getShort("zTile"); - this.ticksInGround = p_70037_1_.getShort("life"); - this.field_145790_g = Block.getBlockById(p_70037_1_.getByte("inTile") & 255); - this.inData = p_70037_1_.getByte("inData") & 255; - this.arrowShake = p_70037_1_.getByte("shake") & 255; - this.inGround = p_70037_1_.getByte("inGround") == 1; - this.explosionStrength = p_70037_1_.getFloat("strength"); - this.type = p_70037_1_.getByte("type"); - - if (p_70037_1_.hasKey("damage", 99)) - { - this.damage = p_70037_1_.getDouble("damage"); - } - - if (p_70037_1_.hasKey("pickup", 99)) - { - this.canBePickedUp = p_70037_1_.getByte("pickup"); - } - else if (p_70037_1_.hasKey("player", 99)) - { - this.canBePickedUp = p_70037_1_.getBoolean("player") ? 1 : 0; - } - } - - /** - * Called by a player entity when they collide with an entity - */ - @Override - public void onCollideWithPlayer(EntityPlayer p_70100_1_) - { - if (!this.worldObj.isRemote && this.inGround && this.arrowShake <= 0) - { - boolean flag = this.canBePickedUp == 1 || this.canBePickedUp == 2 && p_70100_1_.capabilities.isCreativeMode; - - if (this.canBePickedUp == 1 && !p_70100_1_.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_stinger_rocket, 1))) - { - flag = false; - } - - if (flag) - { - p_70100_1_.onItemPickup(this, 1); - this.setDead(); - } - } - } - - /** - * returns if this entity triggers Block.onEntityWalking on the blocks they walk on. used for spiders and wolves to - * prevent them from trampling crops - */ - @Override - protected boolean canTriggerWalking() - { - return false; - } - - @Override - @SideOnly(Side.CLIENT) - public float getShadowSize() - { - return 0.0F; - } - - public void setDamage(double p_70239_1_) - { - this.damage = p_70239_1_; - } - - public double getDamage() - { - return this.damage; - } - - /** - * Sets the amount of knockback the arrow applies when it hits a mob. - */ - public void setKnockbackStrength(int p_70240_1_) - { - this.knockbackStrength = p_70240_1_; - } - - /** - * If returns false, the item will not inflict any damage against entities. - */ - @Override - public boolean canAttackWithItem() - { - return false; - } - - /** - * Whether the arrow has a stream of critical hit particles flying behind it. - */ - public void setIsCritical(boolean p_70243_1_) - { - byte b0 = this.dataWatcher.getWatchableObjectByte(16); - - if (p_70243_1_) - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 | 1))); - } - else - { - this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 & -2))); - } - } - - /** - * Whether the arrow has a stream of critical hit particles flying behind it. - */ - public boolean getIsCritical() - { - byte b0 = this.dataWatcher.getWatchableObjectByte(16); - return (b0 & 1) != 0; - } - - public void Explode(int type, float strength) { - switch(type) { - case 42: ChunkRadiationManager.proxy.incrementRad(worldObj, (int)posX, (int)posY, (int)posZ, 2000); - case 0: ExplosionLarge.explode(worldObj, posX, posY, posZ, strength, true, false, true); break; - case 1: ExplosionLarge.explode(worldObj, posX, posY, posZ, strength * 2, true, false, true); break; - case 2: ExplosionLarge.explodeFire(worldObj, posX, posY, posZ, strength, true, false, false); break; - case 4: - //ExplosionLarge.explode(worldObj, posX, posY, posZ, strength * 3, false, false, true); - ExplosionNukeSmall.explode(worldObj, posX, posY, posZ, ExplosionNukeSmall.PARAMS_MEDIUM); - break; - default: break; - } - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/entity/projectile/EntityRubble.java b/src/main/java/com/hbm/entity/projectile/EntityRubble.java index b19f7263b..4cc2daf1f 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityRubble.java +++ b/src/main/java/com/hbm/entity/projectile/EntityRubble.java @@ -2,7 +2,7 @@ package com.hbm.entity.projectile; import com.hbm.lib.ModDamageSource; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.ParticleBurstPacket; +import com.hbm.packet.toclient.ParticleBurstPacket; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; diff --git a/src/main/java/com/hbm/entity/projectile/EntitySawblade.java b/src/main/java/com/hbm/entity/projectile/EntitySawblade.java index 9d4a3b592..fcc0c5a79 100644 --- a/src/main/java/com/hbm/entity/projectile/EntitySawblade.java +++ b/src/main/java/com/hbm/entity/projectile/EntitySawblade.java @@ -2,8 +2,8 @@ package com.hbm.entity.projectile; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java b/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java index a96f66097..31a3c2392 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java +++ b/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java @@ -193,7 +193,7 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { for(int j = 0; j < list.size(); ++j) { Entity entity = (Entity) list.get(j); - if(entity.canBeCollidedWith() && (entity != thrower || this.ticksInAir >= this.selfDamageDelay())) { + if(entity.canBeCollidedWith() && (entity != thrower || this.ticksInAir >= this.selfDamageDelay()) && entity.isEntityAlive()) { double hitbox = 0.3F; AxisAlignedBB aabb = entity.boundingBox.expand(hitbox, hitbox, hitbox); MovingObjectPosition hitMop = aabb.calculateIntercept(pos, nextPos); @@ -235,21 +235,11 @@ 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) { - ; - } + 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; - } + 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; diff --git a/src/main/java/com/hbm/entity/projectile/EntityTorpedo.java b/src/main/java/com/hbm/entity/projectile/EntityTorpedo.java new file mode 100644 index 000000000..ddd1dc760 --- /dev/null +++ b/src/main/java/com/hbm/entity/projectile/EntityTorpedo.java @@ -0,0 +1,68 @@ +package com.hbm.entity.projectile; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.particle.helper.ExplosionCreator; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.projectile.EntityThrowable; +import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; + +public class EntityTorpedo extends EntityThrowable { + + public EntityTorpedo(World world) { + super(world); + this.ignoreFrustumCheck = true; + this.isImmuneToFire = true; + } + + @Override + public void onUpdate() { + + if(!worldObj.isRemote && this.ticksExisted == 1) { + for(int i = 0; i < 15; i++) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "bf"); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, + posX + (rand.nextDouble() - 0.5) * 2, + posY + (rand.nextDouble() - 0.5) * 1, + posZ + (rand.nextDouble() - 0.5) * 2), + new TargetPoint(dimension, posX, posY, posZ, 150)); + } + } + + this.lastTickPosX = this.prevPosX = posX; + this.lastTickPosY = this.prevPosY = posY; + this.lastTickPosZ = this.prevPosZ = posZ; + + this.setPosition(posX + this.motionX, posY + this.motionY, posZ + this.motionZ); + + this.motionY -= 0.04; + if(motionY < -2.5) motionY = -2.5; + + if(this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.air) { + if(!worldObj.isRemote) { + this.setDead(); + ExplosionCreator.composeEffectStandard(worldObj, posX, posY + 1, posZ); + ExplosionVNT vnt = new ExplosionVNT(worldObj, posX, posY, posZ, 20F); + vnt.makeStandard(); + vnt.explode(); + } + } + } + + @Override + protected void onImpact(MovingObjectPosition p_70184_1_) { } + + @Override + @SideOnly(Side.CLIENT) + public boolean isInRangeToRenderDist(double distance) { + return distance < 25000; + } +} diff --git a/src/main/java/com/hbm/entity/projectile/EntityWaterSplash.java b/src/main/java/com/hbm/entity/projectile/EntityWaterSplash.java index 4eed4570b..49ea4ae20 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityWaterSplash.java +++ b/src/main/java/com/hbm/entity/projectile/EntityWaterSplash.java @@ -24,7 +24,7 @@ public class EntityWaterSplash extends EntityThrowable { public EntityWaterSplash(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) { super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); } - + @Override public void onUpdate() { super.onUpdate(); @@ -35,8 +35,12 @@ public class EntityWaterSplash extends EntityThrowable { this.setDead(); } } else { - - MainRegistry.proxy.particleControl(posX, posY, posZ, 0); + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "waterSplash"); + data.setDouble("posX", posX); + data.setDouble("posY", posY); + data.setDouble("posZ", posZ); + MainRegistry.proxy.effectNT(data); } } diff --git a/src/main/java/com/hbm/entity/train/TrainCargoTram.java b/src/main/java/com/hbm/entity/train/TrainCargoTram.java index 99f2c5c05..572e3fb4d 100644 --- a/src/main/java/com/hbm/entity/train/TrainCargoTram.java +++ b/src/main/java/com/hbm/entity/train/TrainCargoTram.java @@ -11,7 +11,6 @@ import api.hbm.energymk2.IBatteryItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; @@ -97,7 +96,7 @@ public class TrainCargoTram extends EntityRailCarElectric implements IGUIProvide @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUITrainCargoTram(player.inventory, this); } diff --git a/src/main/java/com/hbm/entity/train/TrainCargoTramTrailer.java b/src/main/java/com/hbm/entity/train/TrainCargoTramTrailer.java index afefb1d9a..85d9a805c 100644 --- a/src/main/java/com/hbm/entity/train/TrainCargoTramTrailer.java +++ b/src/main/java/com/hbm/entity/train/TrainCargoTramTrailer.java @@ -12,7 +12,6 @@ import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; @@ -88,7 +87,7 @@ public class TrainCargoTramTrailer extends EntityRailCarCargo implements IGUIPro @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUITrainCargoTramTrailer(player.inventory, this); } diff --git a/src/main/java/com/hbm/explosion/ExplosionChaos.java b/src/main/java/com/hbm/explosion/ExplosionChaos.java index ea23952ef..19b7caabb 100644 --- a/src/main/java/com/hbm/explosion/ExplosionChaos.java +++ b/src/main/java/com/hbm/explosion/ExplosionChaos.java @@ -42,7 +42,7 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -@Spaghetti("no") +@Spaghetti("my eyes are bleeding") public class ExplosionChaos { private final static Random random = new Random(); @@ -70,29 +70,6 @@ public class ExplosionChaos { } } - public static void antiCheat(World world, int x, int y, int z, int bombStartStrength) { - - int r = bombStartStrength; - int r2 = r * r; - int r22 = r2 / 2; - for (int xx = -r; xx < r; xx++) { - int X = xx + x; - int XX = xx * xx; - for (int yy = -r; yy < r; yy++) { - int Y = yy + y; - int YY = XX + yy * yy; - for (int zz = -r; zz < r; zz++) { - int Z = zz + z; - int ZZ = YY + zz * zz; - if (ZZ < r22) { - if (rand.nextInt(15) == 0 && world.getBlock(X, Y, Z) != Blocks.air) - world.setBlock(X, Y, Z, ModBlocks.cheater_virus); - } - } - } - } - } - public static void hardenVirus(World world, int x, int y, int z, int bombStartStrength) { int r = bombStartStrength; @@ -405,7 +382,6 @@ public class ExplosionChaos { } public static void pDestruction(World world, int x, int y, int z) { - EntityFallingBlockNT entityfallingblock = new EntityFallingBlockNT(world, (double) ((float) x + 0.5F), (double) ((float) y + 0.5F), (double) ((float) z + 0.5F), world.getBlock(x, y, z), world.getBlockMetadata(x, y, z)); world.spawnEntityInWorld(entityfallingblock); } @@ -775,10 +751,7 @@ public class ExplosionChaos { int Z = zz + z; int ZZ = YY + zz * zz; if (ZZ < r22 + world.rand.nextInt(r22 / 2)) { - if (world.getBlock(X, Y, Z) != Blocks.bedrock && world.getBlock(X, Y, Z) != ModBlocks.statue_elb - && world.getBlock(X, Y, Z) != ModBlocks.statue_elb_g - && world.getBlock(X, Y, Z) != ModBlocks.statue_elb_w - && world.getBlock(X, Y, Z) != ModBlocks.statue_elb_f) + if(world.getBlock(X, Y, Z) != ModBlocks.statue_elb_f) world.setBlock(X, Y, Z, ModBlocks.plasma); } } diff --git a/src/main/java/com/hbm/explosion/ExplosionLarge.java b/src/main/java/com/hbm/explosion/ExplosionLarge.java index 2fff85b46..4dcbc9e12 100644 --- a/src/main/java/com/hbm/explosion/ExplosionLarge.java +++ b/src/main/java/com/hbm/explosion/ExplosionLarge.java @@ -5,8 +5,8 @@ import java.util.Random; import com.hbm.entity.projectile.EntityRubble; import com.hbm.entity.projectile.EntityShrapnel; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.ParticleUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -22,7 +22,7 @@ public class ExplosionLarge { static Random rand = new Random(); - public static void spawnParticles(World world, double x, double y, double z, int count) { + @Deprecated public static void spawnParticles(World world, double x, double y, double z, int count) { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "smoke"); @@ -153,7 +153,7 @@ public class ExplosionLarge { } } - public static void explode(World world, double x, double y, double z, float strength, boolean cloud, boolean rubble, boolean shrapnel, Entity exploder) { + @Deprecated public static void explode(World world, double x, double y, double z, float strength, boolean cloud, boolean rubble, boolean shrapnel, Entity exploder) { world.createExplosion(exploder, x, y, z, strength, true); if(cloud) spawnParticles(world, x, y, z, cloudFunction((int)strength)); @@ -163,7 +163,7 @@ public class ExplosionLarge { spawnShrapnels(world, x, y, z, shrapnelFunction((int)strength)); } - public static void explode(World world, double x, double y, double z, float strength, boolean cloud, boolean rubble, boolean shrapnel) { + @Deprecated public static void explode(World world, double x, double y, double z, float strength, boolean cloud, boolean rubble, boolean shrapnel) { world.createExplosion(null, x, y, z, strength, true); if(cloud) spawnParticles(world, x, y, z, cloudFunction((int)strength)); @@ -173,7 +173,7 @@ public class ExplosionLarge { spawnShrapnels(world, x, y, z, shrapnelFunction((int)strength)); } - public static void explodeFire(World world, double x, double y, double z, float strength, boolean cloud, boolean rubble, boolean shrapnel) { + @Deprecated public static void explodeFire(World world, double x, double y, double z, float strength, boolean cloud, boolean rubble, boolean shrapnel) { world.newExplosion((Entity)null, (float)x, (float)y, (float)z, strength, true, true); if(cloud) spawnParticles(world, x, y, z, cloudFunction((int)strength)); @@ -245,7 +245,6 @@ public class ExplosionLarge { } public static int cloudFunction(int i) { - //return (int)(345 * (1 - Math.pow(Math.E, -i/15)) + 15); return (int)(850 * (1 - Math.pow(Math.E, -i/15)) + 15); } diff --git a/src/main/java/com/hbm/explosion/ExplosionNT.java b/src/main/java/com/hbm/explosion/ExplosionNT.java index 5de3072b3..f7aef2c03 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNT.java +++ b/src/main/java/com/hbm/explosion/ExplosionNT.java @@ -21,12 +21,14 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; +import net.minecraft.util.EntityDamageSource; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.ChunkPosition; import net.minecraft.world.Explosion; import net.minecraft.world.World; +@Deprecated public class ExplosionNT extends Explosion { public Set atttributes = new HashSet(); @@ -156,7 +158,7 @@ public class ExplosionNT extends Explosion { currentZ /= d9; double d10 = (double) this.worldObj.getBlockDensity(vec3, entity.boundingBox); double d11 = (1.0D - d4) * d10; - entity.attackEntityFrom(DamageSource.setExplosionSource(this), (float) ((int) ((d11 * d11 + d11) / 2.0D * 8.0D * (double) this.explosionSize + 1.0D))); + entity.attackEntityFrom(setExplosionSource(this), (float) ((int) ((d11 * d11 + d11) / 2.0D * 8.0D * (double) this.explosionSize + 1.0D))); double d8 = EnchantmentProtection.func_92092_a(entity, d11); entity.motionX += currentX * d8; entity.motionY += currentY * d8; @@ -173,6 +175,12 @@ public class ExplosionNT extends Explosion { } } + public static DamageSource setExplosionSource(Explosion explosion) { + return explosion != null && explosion.getExplosivePlacedBy() != null ? + (new EntityDamageSource("explosion.player", explosion.getExplosivePlacedBy())).setExplosion() : + (new DamageSource("explosion")).setExplosion(); + } + public void doExplosionB(boolean p_77279_1_) { if(!has(ExAttrib.NOSOUND)) diff --git a/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java b/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java index 30498fe20..ab9694eb9 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java +++ b/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java @@ -34,6 +34,7 @@ import com.hbm.util.ArmorUtil; import api.hbm.energymk2.IEnergyHandlerMK2; import cofh.api.energy.IEnergyProvider; +@Spaghetti("this sucks ass") public class ExplosionNukeGeneric { private final static Random random = new Random(); diff --git a/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java b/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java index 0734db2e5..cca47893b 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java +++ b/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java @@ -5,8 +5,9 @@ import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.explosion.ExplosionNT.ExAttrib; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; + import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/explosion/ExplosionTom.java b/src/main/java/com/hbm/explosion/ExplosionTom.java index bd049ed6e..21ae8f7cd 100644 --- a/src/main/java/com/hbm/explosion/ExplosionTom.java +++ b/src/main/java/com/hbm/explosion/ExplosionTom.java @@ -106,14 +106,14 @@ public class ExplosionTom { while(y > threshold) { - if(y == 0) - break; + if(y == 0) break; + if(y <= craterFloor) { if(worldObj.rand.nextInt(499) < 1) { - worldObj.setBlock(pX, y, pZ, ModBlocks.ore_tektite_osmiridium); + worldObj.setBlock(pX, y, pZ, ModBlocks.ore_tektite_osmiridium, 0, 2); } else { - worldObj.setBlock(pX, y, pZ, ModBlocks.tektite); + worldObj.setBlock(pX, y, pZ, ModBlocks.tektite, 0, 2); } } else { @@ -130,7 +130,7 @@ public class ExplosionTom { } } } - worldObj.setBlockToAir(pX, y, pZ); + worldObj.setBlock(pX, y, pZ, Blocks.air, 0, 2); } } else { for(int i = -2; i < 3; i++) { diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java index 64c4de445..a6843e9a9 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java @@ -2,7 +2,9 @@ package com.hbm.explosion.vanillant.standard; import java.util.HashMap; import java.util.List; +import java.util.Map.Entry; +import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.interfaces.ICustomDamageHandler; import com.hbm.explosion.vanillant.interfaces.IEntityProcessor; @@ -13,7 +15,9 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; +import net.minecraft.util.EntityDamageSource; import net.minecraft.util.Vec3; +import net.minecraft.world.Explosion; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.event.ForgeEventFactory; @@ -24,10 +28,16 @@ public class EntityProcessorCross implements IEntityProcessor { protected double nodeDist = 2D; protected IEntityRangeMutator range; protected ICustomDamageHandler damage; + protected boolean allowSelfDamage = false; public EntityProcessorCross(double nodeDist) { this.nodeDist = nodeDist; } + + public EntityProcessorCross setAllowSelfDamage() { + this.allowSelfDamage = true; + return this; + } @Override public HashMap process(ExplosionVNT explosion, World world, double x, double y, double z, float size) { @@ -47,7 +57,7 @@ public class EntityProcessorCross implements IEntityProcessor { double minZ = z - (double) size - 1.0D; double maxZ = z + (double) size + 1.0D; - List list = world.getEntitiesWithinAABBExcludingEntity(explosion.exploder, AxisAlignedBB.getBoundingBox(minX, minY, minZ, maxX, maxY, maxZ)); + List list = world.getEntitiesWithinAABBExcludingEntity(allowSelfDamage ? null : explosion.exploder, AxisAlignedBB.getBoundingBox(minX, minY, minZ, maxX, maxY, maxZ)); ForgeEventFactory.onExplosionDetonate(world, explosion.compat, list, size); @@ -57,6 +67,8 @@ public class EntityProcessorCross implements IEntityProcessor { ForgeDirection dir = ForgeDirection.getOrientation(i); nodes[i] = Vec3.createVectorHelper(x + dir.offsetX * nodeDist, y + dir.offsetY * nodeDist, z + dir.offsetZ * nodeDist); } + + HashMap damageMap = new HashMap(); for(int index = 0; index < list.size(); ++index) { @@ -86,28 +98,52 @@ public class EntityProcessorCross implements IEntityProcessor { } double knockback = (1.0D - distanceScaled) * density; - - entity.attackEntityFrom(DamageSource.setExplosionSource(explosion.compat), (float) ((int) ((knockback * knockback + knockback) / 2.0D * 8.0D * size + 1.0D))); + + float dmg = calculateDamage(distanceScaled, density, knockback, size); + if(!damageMap.containsKey(entity) || damageMap.get(entity) < dmg) damageMap.put(entity, dmg); double enchKnockback = EnchantmentProtection.func_92092_a(entity, knockback); - entity.motionX += deltaX * enchKnockback; - entity.motionY += deltaY * enchKnockback; - entity.motionZ += deltaZ * enchKnockback; + if(!(entity instanceof EntityBulletBaseMK4)) { + entity.motionX += deltaX * enchKnockback; + entity.motionY += deltaY * enchKnockback; + entity.motionZ += deltaZ * enchKnockback; + } if(entity instanceof EntityPlayer) { affectedPlayers.put((EntityPlayer) entity, Vec3.createVectorHelper(deltaX * knockback, deltaY * knockback, deltaZ * knockback)); } - - if(damage != null) { - damage.handleAttack(explosion, entity, distanceScaled); - } } } } + for(Entry entry : damageMap.entrySet()) { + + Entity entity = entry.getKey(); + attackEntity(entity, explosion, entry.getValue()); + + if(damage != null) { + double distanceScaled = entity.getDistance(x, y, z) / size; + damage.handleAttack(explosion, entity, distanceScaled); + } + } + return affectedPlayers; } + public void attackEntity(Entity entity, ExplosionVNT source, float amount) { + entity.attackEntityFrom(setExplosionSource(source.compat), amount); + } + + public float calculateDamage(double distanceScaled, double density, double knockback, float size) { + return (float) ((int) ((knockback * knockback + knockback) / 2.0D * 8.0D * size + 1.0D)); + } + + public static DamageSource setExplosionSource(Explosion explosion) { + return explosion != null && explosion.getExplosivePlacedBy() != null ? + (new EntityDamageSource("explosion.player", explosion.getExplosivePlacedBy())).setExplosion() : + (new DamageSource("explosion")).setExplosion(); + } + public EntityProcessorCross withRangeMod(float mod) { range = new IEntityRangeMutator() { @Override diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java new file mode 100644 index 000000000..ff6b03e2f --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java @@ -0,0 +1,54 @@ +package com.hbm.explosion.vanillant.standard; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.ConfettiUtil; +import com.hbm.util.EntityDamageUtil; +import com.hbm.util.DamageResistanceHandler.DamageClass; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.DamageSource; + +public class EntityProcessorCrossSmooth extends EntityProcessorCross { + + protected float fixedDamage; + protected float pierceDT = 0; + protected float pierceDR = 0; + protected DamageClass clazz = DamageClass.EXPLOSIVE; + + public EntityProcessorCrossSmooth(double nodeDist, float fixedDamage) { + super(nodeDist); + this.fixedDamage = fixedDamage; + this.setAllowSelfDamage(); + } + + public EntityProcessorCrossSmooth setupPiercing(float pierceDT, float pierceDR) { + this.pierceDT = pierceDT; + this.pierceDR = pierceDR; + return this; + } + + public EntityProcessorCrossSmooth setDamageClass(DamageClass clazz) { + this.clazz = clazz; + return this; + } + + @Override + public void attackEntity(Entity entity, ExplosionVNT source, float amount) { + if(!entity.isEntityAlive()) return; + if(source.exploder == entity) amount *= 0.5F; + DamageSource dmg = BulletConfig.getDamage(null, source.exploder instanceof EntityLivingBase ? (EntityLivingBase) source.exploder : null, clazz); + if(!(entity instanceof EntityLivingBase)) { + entity.attackEntityFrom(dmg, amount); + } else { + EntityDamageUtil.attackEntityFromNT((EntityLivingBase) entity, dmg, amount, true, false, 0F, pierceDT, pierceDR); + if(!entity.isEntityAlive()) ConfettiUtil.decideConfetti((EntityLivingBase) entity, dmg); + } + } + + @Override + public float calculateDamage(double distanceScaled, double density, double knockback, float size) { + return (float) (fixedDamage * (1 - distanceScaled)); + } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorStandard.java b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorStandard.java index ba9a66cad..9e369ea35 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorStandard.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorStandard.java @@ -13,7 +13,9 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; +import net.minecraft.util.EntityDamageSource; import net.minecraft.util.Vec3; +import net.minecraft.world.Explosion; import net.minecraft.world.World; import net.minecraftforge.event.ForgeEventFactory; @@ -67,7 +69,7 @@ public class EntityProcessorStandard implements IEntityProcessor { double density = world.getBlockDensity(vec3, entity.boundingBox); double knockback = (1.0D - distanceScaled) * density; - entity.attackEntityFrom(DamageSource.setExplosionSource(explosion.compat), (float) ((int) ((knockback * knockback + knockback) / 2.0D * 8.0D * size + 1.0D))); + entity.attackEntityFrom(setExplosionSource(explosion.compat), calculateDamage(distanceScaled, density, knockback, size)); double enchKnockback = EnchantmentProtection.func_92092_a(entity, knockback); entity.motionX += deltaX * enchKnockback; @@ -88,6 +90,16 @@ public class EntityProcessorStandard implements IEntityProcessor { return affectedPlayers; } + public float calculateDamage(double distanceScaled, double density, double knockback, float size) { + return (float) ((int) ((knockback * knockback + knockback) / 2.0D * 8.0D * size + 1.0D)); + } + + public static DamageSource setExplosionSource(Explosion explosion) { + return explosion != null && explosion.getExplosivePlacedBy() != null ? + (new EntityDamageSource("explosion.player", explosion.getExplosivePlacedBy())).setExplosion() : + (new DamageSource("explosion")).setExplosion(); + } + public EntityProcessorStandard withRangeMod(float mod) { range = new IEntityRangeMutator() { @Override diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectAmat.java b/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectAmat.java index 088c38a83..be83da6b2 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectAmat.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectAmat.java @@ -2,8 +2,8 @@ package com.hbm.explosion.vanillant.standard; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.interfaces.IExplosionSFX; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectStandard.java b/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectStandard.java index 79b5b6966..583eaa004 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectStandard.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectStandard.java @@ -4,8 +4,8 @@ import java.util.List; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.interfaces.IExplosionSFX; -import com.hbm.packet.ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.util.MathHelper; diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectWeapon.java b/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectWeapon.java new file mode 100644 index 000000000..6e1d60ef9 --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectWeapon.java @@ -0,0 +1,27 @@ +package com.hbm.explosion.vanillant.standard; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.interfaces.IExplosionSFX; +import com.hbm.particle.helper.ExplosionSmallCreator; + +import net.minecraft.world.World; + +public class ExplosionEffectWeapon implements IExplosionSFX { + + int cloudCount; + float cloudScale; + float cloudSpeedMult; + + public ExplosionEffectWeapon(int cloudCount, float cloudScale, float cloudSpeedMult) { + this.cloudCount = cloudCount; + this.cloudScale = cloudScale; + this.cloudSpeedMult = cloudSpeedMult; + } + + @Override + public void doEffect(ExplosionVNT explosion, World world, double x, double y, double z, float size) { + if(world.isRemote) return; + + ExplosionSmallCreator.composeEffect(world, x, y, z, cloudCount, cloudScale, cloudSpeedMult); + } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/PlayerProcessorStandard.java b/src/main/java/com/hbm/explosion/vanillant/standard/PlayerProcessorStandard.java index 186ea3b85..73f75de27 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/PlayerProcessorStandard.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/PlayerProcessorStandard.java @@ -5,8 +5,8 @@ import java.util.Map.Entry; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.interfaces.IPlayerProcessor; -import com.hbm.packet.ExplosionKnockbackPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.ExplosionKnockbackPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; diff --git a/src/main/java/com/hbm/extprop/HbmLivingProps.java b/src/main/java/com/hbm/extprop/HbmLivingProps.java index 81a44a47a..b09d20d52 100644 --- a/src/main/java/com/hbm/extprop/HbmLivingProps.java +++ b/src/main/java/com/hbm/extprop/HbmLivingProps.java @@ -8,12 +8,13 @@ import com.hbm.config.RadiationConfig; import com.hbm.entity.mob.EntityDuck; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PlayerInformPacket; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.packet.toclient.PlayerInformPacket; import com.hbm.util.ChatBuilder; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -25,16 +26,15 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.IExtendedEntityProperties; public class HbmLivingProps implements IExtendedEntityProperties { - + public static final String key = "NTM_EXT_LIVING"; public static final UUID digamma_UUID = UUID.fromString("2a3d8aec-5ab9-4218-9b8b-ca812bdf378b"); public EntityLivingBase entity; - + /// VALS /// private float radiation; private float digamma; @@ -47,28 +47,28 @@ public class HbmLivingProps implements IExtendedEntityProperties { private int bombTimer; private int contagion; private int oil; - private int temperature; - private boolean frozen = false; - private boolean burning = false; + public int fire; + public int phosphorus; + public int balefire; private List contamination = new ArrayList(); - + public HbmLivingProps(EntityLivingBase entity) { this.entity = entity; } - + /// DATA /// public static HbmLivingProps registerData(EntityLivingBase entity) { - + entity.registerExtendedProperties(key, new HbmLivingProps(entity)); return (HbmLivingProps) entity.getExtendedProperties(key); } - + public static HbmLivingProps getData(EntityLivingBase entity) { - + HbmLivingProps props = (HbmLivingProps) entity.getExtendedProperties(key); return props != null ? props : registerData(entity); } - + /// RADIATION /// public static float getRadiation(EntityLivingBase entity) { if(!RadiationConfig.enableContamination) @@ -76,89 +76,89 @@ public class HbmLivingProps implements IExtendedEntityProperties { return getData(entity).radiation; } - + public static void setRadiation(EntityLivingBase entity, float rad) { if(RadiationConfig.enableContamination) getData(entity).radiation = rad; } - + public static void incrementRadiation(EntityLivingBase entity, float rad) { if(!RadiationConfig.enableContamination) return; - + HbmLivingProps data = getData(entity); float radiation = getData(entity).radiation + rad; - + if(radiation > 2500) radiation = 2500; if(radiation < 0) radiation = 0; - + data.setRadiation(entity, radiation); } - + /// RAD ENV /// public static float getRadEnv(EntityLivingBase entity) { return getData(entity).radEnv; } - + public static void setRadEnv(EntityLivingBase entity, float rad) { getData(entity).radEnv = rad; } - + /// RAD BUF /// public static float getRadBuf(EntityLivingBase entity) { return getData(entity).radBuf; } - + public static void setRadBuf(EntityLivingBase entity, float rad) { getData(entity).radBuf = rad; } - + /// CONTAMINATION /// public static List getCont(EntityLivingBase entity) { return getData(entity).contamination; } - + public static void addCont(EntityLivingBase entity, ContaminationEffect cont) { getData(entity).contamination.add(cont); } - + /// DIGAMA /// public static float getDigamma(EntityLivingBase entity) { return getData(entity).digamma; } - + public static void setDigamma(EntityLivingBase entity, float digamma) { - + if(entity.worldObj.isRemote) return; - + if(entity instanceof EntityDuck) digamma = 0.0F; - + getData(entity).digamma = digamma; - + float healthMod = (float)Math.pow(0.5, digamma) - 1F; - + IAttributeInstance attributeinstance = entity.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.maxHealth); - + try { attributeinstance.removeModifier(attributeinstance.getModifier(digamma_UUID)); } catch(Exception ex) { } - + attributeinstance.applyModifier(new AttributeModifier(digamma_UUID, "digamma", healthMod, 2)); - + if(entity.getHealth() > entity.getMaxHealth() && entity.getMaxHealth() > 0) { entity.setHealth(entity.getMaxHealth()); } - + if((entity.getMaxHealth() <= 0 || digamma >= 10.0F) && entity.isEntityAlive()) { entity.setAbsorptionAmount(0); entity.attackEntityFrom(ModDamageSource.digamma, 500F); entity.setHealth(0); entity.onDeath(ModDamageSource.digamma); - + NBTTagCompound data = new NBTTagCompound(); data.setString("type", "sweat"); data.setInteger("count", 50); @@ -166,9 +166,9 @@ public class HbmLivingProps implements IExtendedEntityProperties { data.setInteger("entity", entity.getEntityId()); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 50)); } - + if(entity instanceof EntityPlayer) { - + float di = getData(entity).digamma; if(di > 0F) @@ -179,128 +179,136 @@ public class HbmLivingProps implements IExtendedEntityProperties { ((EntityPlayer) entity).triggerAchievement(MainRegistry.digammaKnow); } } - + public static void incrementDigamma(EntityLivingBase entity, float digamma) { - + if(entity instanceof EntityDuck) digamma = 0.0F; - + HbmLivingProps data = getData(entity); float dRad = getDigamma(entity) + digamma; - + if(dRad > 10) dRad = 10; if(dRad < 0) dRad = 0; - + data.setDigamma(entity, dRad); } - - + + /// ASBESTOS /// public static int getAsbestos(EntityLivingBase entity) { if(RadiationConfig.disableAsbestos) return 0; return getData(entity).asbestos; } - + public static void setAsbestos(EntityLivingBase entity, int asbestos) { if(RadiationConfig.disableAsbestos) return; getData(entity).asbestos = asbestos; - + if(asbestos >= maxAsbestos) { getData(entity).asbestos = 0; entity.attackEntityFrom(ModDamageSource.asbestos, 1000); } } - + public static void incrementAsbestos(EntityLivingBase entity, int asbestos) { if(RadiationConfig.disableAsbestos) return; setAsbestos(entity, getAsbestos(entity) + asbestos); - + if(entity instanceof EntityPlayerMP) { PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation("info.asbestos").color(EnumChatFormatting.RED).flush(), MainRegistry.proxy.ID_GAS_HAZARD, 3000), (EntityPlayerMP) entity); } } - - + + /// BLACK LUNG DISEASE /// public static int getBlackLung(EntityLivingBase entity) { if(RadiationConfig.disableCoal) return 0; return getData(entity).blacklung; } - + public static void setBlackLung(EntityLivingBase entity, int blacklung) { if(RadiationConfig.disableCoal) return; getData(entity).blacklung = blacklung; - + if(blacklung >= maxBlacklung) { getData(entity).blacklung = 0; entity.attackEntityFrom(ModDamageSource.blacklung, 1000); } } - + public static void incrementBlackLung(EntityLivingBase entity, int blacklung) { if(RadiationConfig.disableCoal) return; setBlackLung(entity, getBlackLung(entity) + blacklung); - + if(entity instanceof EntityPlayerMP) { PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation("info.coaldust").color(EnumChatFormatting.RED).flush(), MainRegistry.proxy.ID_GAS_HAZARD, 3000), (EntityPlayerMP) entity); } } - + /// TIME BOMB /// public static int getTimer(EntityLivingBase entity) { return getData(entity).bombTimer; } - + public static void setTimer(EntityLivingBase entity, int bombTimer) { getData(entity).bombTimer = bombTimer; } - + /// CONTAGION /// public static int getContagion(EntityLivingBase entity) { return getData(entity).contagion; } - + public static void setContagion(EntityLivingBase entity, int contageon) { getData(entity).contagion = contageon; } - - /// OIL /// - public static int getOil(EntityLivingBase entity) { - return getData(entity).oil; - } - - public static void setOil(EntityLivingBase entity, int oil) { - getData(entity).oil = oil; - } - - /// TEMPERATURE /// - public static int getTemperature(EntityLivingBase entity) { - return getData(entity).temperature; - } - - public static void setTemperature(EntityLivingBase entity, int temperature) { - HbmLivingProps data = getData(entity); - temperature = MathHelper.clamp_int(temperature, -2500, 2500); - data.temperature = temperature; - if(temperature > 1000) data.burning = true; - if(temperature < 800) data.burning = false; - if(temperature < -1000) data.frozen = true; - if(temperature > -800) data.frozen = false; - } - public static boolean isFrozen(EntityLivingBase entity) { return getData(entity).frozen; }; - public static boolean isBurning(EntityLivingBase entity) { return getData(entity).burning; }; + /// OIL /// + public static int getOil(EntityLivingBase entity) { return getData(entity).oil; } + public static void setOil(EntityLivingBase entity, int oil) { getData(entity).oil = oil; } @Override public void init(Entity entity, World world) { } + public void serialize(ByteBuf buf) { + buf.writeFloat(radiation); + buf.writeFloat(digamma); + buf.writeInt(asbestos); + buf.writeInt(bombTimer); + buf.writeInt(contagion); + buf.writeInt(blacklung); + buf.writeInt(oil); + buf.writeInt(this.contamination.size()); + for (ContaminationEffect contaminationEffect : this.contamination) { + contaminationEffect.serialize(buf); // long ass buffers? uh, yes please! + } + } + + public void deserialize(ByteBuf buf) { + if(buf.readableBytes() > 0) { + radiation = buf.readFloat(); + digamma = buf.readFloat(); + asbestos = buf.readInt(); + bombTimer = buf.readInt(); + contagion = buf.readInt(); + blacklung = buf.readInt(); + oil = buf.readInt(); + int size = buf.readInt(); + for (int i = 0; i < size; i++) { + this.contamination.add(ContaminationEffect.deserialize(buf)); + } + } + } + + @Deprecated @Override public void saveNBTData(NBTTagCompound nbt) { - + NBTTagCompound props = new NBTTagCompound(); - + props.setFloat("hfr_radiation", radiation); props.setFloat("hfr_digamma", digamma); props.setInteger("hfr_asbestos", asbestos); @@ -308,21 +316,25 @@ public class HbmLivingProps implements IExtendedEntityProperties { props.setInteger("hfr_contagion", contagion); props.setInteger("hfr_blacklung", blacklung); props.setInteger("hfr_oil", oil); - + props.setInteger("hfr_fire", fire); + props.setInteger("hfr_phosphorus", phosphorus); + props.setInteger("hfr_balefire", balefire); + props.setInteger("hfr_cont_count", this.contamination.size()); - + for(int i = 0; i < this.contamination.size(); i++) { this.contamination.get(i).save(props, i); } - + nbt.setTag("HbmLivingProps", props); } + @Deprecated @Override public void loadNBTData(NBTTagCompound nbt) { - + NBTTagCompound props = (NBTTagCompound) nbt.getTag("HbmLivingProps"); - + if(props != null) { radiation = props.getFloat("hfr_radiation"); digamma = props.getFloat("hfr_digamma"); @@ -331,32 +343,52 @@ public class HbmLivingProps implements IExtendedEntityProperties { contagion = props.getInteger("hfr_contagion"); blacklung = props.getInteger("hfr_blacklung"); oil = props.getInteger("hfr_oil"); - + fire = props.getInteger("hfr_fire"); + phosphorus = props.getInteger("hfr_phosphorus"); + balefire = props.getInteger("hfr_balefire"); + int cont = props.getInteger("hfr_cont_count"); - + for(int i = 0; i < cont; i++) { this.contamination.add(ContaminationEffect.load(props, i)); } } } - + public static class ContaminationEffect { - + public float maxRad; public int maxTime; public int time; public boolean ignoreArmor; - + public ContaminationEffect(float rad, int time, boolean ignoreArmor) { this.maxRad = rad; this.maxTime = this.time = time; this.ignoreArmor = ignoreArmor; } - + public float getRad() { return maxRad * ((float)time / (float)maxTime); } - + + public void serialize(ByteBuf buf) { + buf.writeFloat(this.maxRad); + buf.writeInt(this.maxTime); + buf.writeInt(this.time); + buf.writeBoolean(ignoreArmor); + } + + public static ContaminationEffect deserialize(ByteBuf buf) { + float maxRad = buf.readFloat(); + int maxTime = buf.readInt(); + int time = buf.readInt(); + boolean ignoreArmor = buf.readBoolean(); + ContaminationEffect effect = new ContaminationEffect(maxRad, maxTime, ignoreArmor); + effect.time = time; + return effect; + } + public void save(NBTTagCompound nbt, int index) { NBTTagCompound me = new NBTTagCompound(); me.setFloat("maxRad", this.maxRad); @@ -365,14 +397,14 @@ public class HbmLivingProps implements IExtendedEntityProperties { me.setBoolean("ignoreArmor", ignoreArmor); nbt.setTag("cont_" + index, me); } - + public static ContaminationEffect load(NBTTagCompound nbt, int index) { NBTTagCompound me = (NBTTagCompound) nbt.getTag("cont_" + index); float maxRad = me.getFloat("maxRad"); int maxTime = nbt.getInteger("maxTime"); int time = nbt.getInteger("time"); boolean ignoreArmor = nbt.getBoolean("ignoreArmor"); - + ContaminationEffect effect = new ContaminationEffect(maxRad, maxTime, ignoreArmor); effect.time = time; return effect; diff --git a/src/main/java/com/hbm/extprop/HbmPlayerProps.java b/src/main/java/com/hbm/extprop/HbmPlayerProps.java index b1dfbd74d..9439b5572 100644 --- a/src/main/java/com/hbm/extprop/HbmPlayerProps.java +++ b/src/main/java/com/hbm/extprop/HbmPlayerProps.java @@ -8,6 +8,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -17,68 +18,68 @@ import net.minecraft.world.World; import net.minecraftforge.common.IExtendedEntityProperties; public class HbmPlayerProps implements IExtendedEntityProperties { - + public static final String key = "NTM_EXT_PLAYER"; public EntityPlayer player; - + public boolean hasReceivedBook = false; - + public boolean enableHUD = true; public boolean enableBackpack = true; - + private boolean[] keysPressed = new boolean[EnumKeybind.values().length]; - + public boolean dashActivated = true; - + public static final int dashCooldownLength = 5; public int dashCooldown = 0; - + public int totalDashCount = 0; public int stamina = 0; - + public static final int plinkCooldownLength = 10; public int plinkCooldown = 0; - + public float shield = 0; public float maxShield = 0; public int lastDamage = 0; public static final float shieldCap = 100; - + public int reputation; - + public boolean isOnLadder = false; - + public HbmPlayerProps(EntityPlayer player) { this.player = player; } - + public static HbmPlayerProps registerData(EntityPlayer player) { player.registerExtendedProperties(key, new HbmPlayerProps(player)); return (HbmPlayerProps) player.getExtendedProperties(key); } - + public static HbmPlayerProps getData(EntityPlayer player) { HbmPlayerProps props = (HbmPlayerProps) player.getExtendedProperties(key); return props != null ? props : registerData(player); } - + public boolean getKeyPressed(EnumKeybind key) { return keysPressed[key.ordinal()]; } - + public boolean isJetpackActive() { return this.enableBackpack && getKeyPressed(EnumKeybind.JETPACK); } - + public void setKeyPressed(EnumKeybind key, boolean pressed) { - + if(!getKeyPressed(key) && pressed) { - + if(key == EnumKeybind.TOGGLE_JETPACK) { - + if(!player.worldObj.isRemote) { this.enableBackpack = !this.enableBackpack; - + if(this.enableBackpack) MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "Jetpack ON", MainRegistry.proxy.ID_JETPACK); else @@ -86,19 +87,19 @@ public class HbmPlayerProps implements IExtendedEntityProperties { } } if(key == EnumKeybind.TOGGLE_HEAD) { - + if(!player.worldObj.isRemote) { this.enableHUD = !this.enableHUD; - + if(this.enableHUD) MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "HUD ON", MainRegistry.proxy.ID_HUD); else MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "HUD OFF", MainRegistry.proxy.ID_HUD); } } - + if(key == EnumKeybind.TRAIN) { - + if(!this.player.worldObj.isRemote) { if(player.ridingEntity != null && player.ridingEntity instanceof EntityRailCarBase && player.ridingEntity instanceof IGUIProvider) { @@ -107,50 +108,50 @@ public class HbmPlayerProps implements IExtendedEntityProperties { } } } - + keysPressed[key.ordinal()] = pressed; } - + public void setDashCooldown(int cooldown) { this.dashCooldown = cooldown; return; } - + public int getDashCooldown() { return this.dashCooldown; } - + public void setStamina(int stamina) { this.stamina = stamina; return; } - + public int getStamina() { return this.stamina; } - + public void setDashCount(int count) { this.totalDashCount = count; return; } - + public int getDashCount() { return this.totalDashCount; } - + public static void plink(EntityPlayer player, String sound, float volume, float pitch) { HbmPlayerProps props = HbmPlayerProps.getData(player); - + if(props.plinkCooldown <= 0) { player.worldObj.playSoundAtEntity(player, sound, volume, pitch); props.plinkCooldown = props.plinkCooldownLength; } } - + public float getEffectiveMaxShield() { - + float max = this.maxShield; - + if(player.getCurrentArmor(2) != null) { ItemStack[] mods = ArmorModHandler.pryMods(player.getCurrentArmor(2)); if(mods[ArmorModHandler.kevlar] != null && mods[ArmorModHandler.kevlar].getItem() instanceof ItemModShield) { @@ -158,16 +159,39 @@ public class HbmPlayerProps implements IExtendedEntityProperties { max += mod.shield; } } - + return max; } @Override public void init(Entity entity, World world) { } + public void serialize(ByteBuf buf) { + buf.writeBoolean(this.hasReceivedBook); + buf.writeFloat(this.shield); + buf.writeFloat(this.maxShield); + buf.writeBoolean(this.enableBackpack); + buf.writeBoolean(this.enableHUD); + buf.writeInt(this.reputation); + buf.writeBoolean(this.isOnLadder); + } + + public void deserialize(ByteBuf buf) { + if(buf.readableBytes() > 0) { + this.hasReceivedBook = buf.readBoolean(); + this.shield = buf.readFloat(); + this.maxShield = buf.readFloat(); + this.enableBackpack = buf.readBoolean(); + this.enableHUD = buf.readBoolean(); + this.reputation = buf.readInt(); + this.isOnLadder = buf.readBoolean(); + } + } + + @Deprecated @Override public void saveNBTData(NBTTagCompound nbt) { - + NBTTagCompound props = new NBTTagCompound(); props.setBoolean("hasReceivedBook", hasReceivedBook); @@ -177,15 +201,16 @@ public class HbmPlayerProps implements IExtendedEntityProperties { props.setBoolean("enableHUD", enableHUD); props.setInteger("reputation", reputation); props.setBoolean("isOnLadder", isOnLadder); - + nbt.setTag("HbmPlayerProps", props); } + @Deprecated @Override public void loadNBTData(NBTTagCompound nbt) { - + NBTTagCompound props = (NBTTagCompound) nbt.getTag("HbmPlayerProps"); - + if(props != null) { this.hasReceivedBook = props.getBoolean("hasReceivedBook"); this.shield = props.getFloat("shield"); diff --git a/src/main/java/com/hbm/handler/ArmorModHandler.java b/src/main/java/com/hbm/handler/ArmorModHandler.java index 04877a1df..9104d826b 100644 --- a/src/main/java/com/hbm/handler/ArmorModHandler.java +++ b/src/main/java/com/hbm/handler/ArmorModHandler.java @@ -1,13 +1,12 @@ package com.hbm.handler; -import java.util.UUID; - import com.hbm.items.armor.ItemArmorMod; - import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import java.util.UUID; + public class ArmorModHandler { public static final int helmet_only = 0; @@ -19,28 +18,28 @@ public class ArmorModHandler { public static final int kevlar = 6; public static final int extra = 7; public static final int battery = 8; - + public static final int MOD_SLOTS = 9; - + public static final UUID[] UUIDs = new UUID[] { UUID.fromString("8d6e5c77-133e-4056-9c80-a9e42a1a0b65"), UUID.fromString("b1b7ee0e-1d14-4400-8037-f7f2e02f21ca"), UUID.fromString("30b50d2a-4858-4e5b-88d4-3e3612224238"), UUID.fromString("426ee0d0-7587-4697-aaef-4772ab202e78") }; - + public static final UUID[] fixedUUIDs = new UUID[] { UUID.fromString("e572caf4-3e65-4152-bc79-c4d4048cbd29"), UUID.fromString("bed30902-8a6a-4769-9f65-2a9b67469fff"), UUID.fromString("baebf7b3-1eda-4a14-b233-068e2493e9a2"), UUID.fromString("28016c1b-d992-4324-9409-a9f9f0ffb85c") }; - + //The key for the NBTTagCompound that holds the armor mods public static final String MOD_COMPOUND_KEY = "ntm_armor_mods"; //The key for the specific slot inside the armor mod NBT Tag public static final String MOD_SLOT_KEY = "mod_slot_"; - + /** * Checks if a mod can be applied to an armor piece * Needs to be used to prevent people from inserting invalid items into the armor table @@ -49,23 +48,23 @@ public class ArmorModHandler { * @return */ public static boolean isApplicable(ItemStack armor, ItemStack mod) { - + if(armor == null || mod == null) return false; - + if(!(armor.getItem() instanceof ItemArmor)) return false; - + if(!(mod.getItem() instanceof ItemArmorMod)) return false; - + int type = ((ItemArmor)armor.getItem()).armorType; - + ItemArmorMod aMod = (ItemArmorMod)mod.getItem(); - + return (type == 0 && aMod.helmet) || (type == 1 && aMod.chestplate) || (type == 2 && aMod.leggings) || (type == 3 && aMod.boots); } - + /** * Applies an mod to the given armor piece * Make sure to check for applicability first @@ -74,119 +73,124 @@ public class ArmorModHandler { * @param mod */ public static void applyMod(ItemStack armor, ItemStack mod) { - + if(!armor.hasTagCompound()) armor.stackTagCompound = new NBTTagCompound(); - + NBTTagCompound nbt = armor.getTagCompound(); - + if(!nbt.hasKey(MOD_COMPOUND_KEY)) nbt.setTag(MOD_COMPOUND_KEY, new NBTTagCompound()); - + NBTTagCompound mods = nbt.getCompoundTag(MOD_COMPOUND_KEY); - + ItemArmorMod aMod = (ItemArmorMod)mod.getItem(); int slot = aMod.type; - + NBTTagCompound cmp = new NBTTagCompound(); mod.writeToNBT(cmp); - + mods.setTag(MOD_SLOT_KEY + slot, cmp); } - + /** * Removes the mod from the given slot * @param armor * @param slot */ public static void removeMod(ItemStack armor, int slot) { - + if(armor == null) return; - + if(!armor.hasTagCompound()) armor.stackTagCompound = new NBTTagCompound(); - + NBTTagCompound nbt = armor.getTagCompound(); - + if(!nbt.hasKey(MOD_COMPOUND_KEY)) nbt.setTag(MOD_COMPOUND_KEY, new NBTTagCompound()); - + NBTTagCompound mods = nbt.getCompoundTag(MOD_COMPOUND_KEY); mods.removeTag(MOD_SLOT_KEY + slot); - + if(mods.hasNoTags()) clearMods(armor); } - + /** * Removes ALL mods * Should be used when the armor piece is put in the armor table slot AFTER the armor pieces have been separated * @param armor */ public static void clearMods(ItemStack armor) { - + if(!armor.hasTagCompound()) return; - + NBTTagCompound nbt = armor.getTagCompound(); nbt.removeTag(MOD_COMPOUND_KEY); } - + /** * Does what the name implies. Returns true if the stack has NBT and that NBT has the MOD_COMPOUND_KEY tag. * @param armor * @return */ public static boolean hasMods(ItemStack armor) { - + if(!armor.hasTagCompound()) return false; - + NBTTagCompound nbt = armor.getTagCompound(); return nbt.hasKey(MOD_COMPOUND_KEY); } - + + /** + * Gets all the modifications in the provided armor + * @param armor + * @return + */ public static ItemStack[] pryMods(ItemStack armor) { - + ItemStack[] slots = new ItemStack[MOD_SLOTS]; if(!hasMods(armor)) return slots; - + NBTTagCompound nbt = armor.getTagCompound(); NBTTagCompound mods = nbt.getCompoundTag(MOD_COMPOUND_KEY); - + for(int i = 0; i < MOD_SLOTS; i++) { - + NBTTagCompound cmp = mods.getCompoundTag(MOD_SLOT_KEY + i); - + ItemStack stack = ItemStack.loadItemStackFromNBT(cmp); - + if(stack != null) slots[i] = stack; else // Any non-existing armor mods will be sorted out automatically removeMod(armor, i); } - + return slots; } - + public static ItemStack pryMod(ItemStack armor, int slot) { - + if(!hasMods(armor)) return null; - + NBTTagCompound nbt = armor.getTagCompound(); NBTTagCompound mods = nbt.getCompoundTag(MOD_COMPOUND_KEY); NBTTagCompound cmp = mods.getCompoundTag(MOD_SLOT_KEY + slot); ItemStack stack = ItemStack.loadItemStackFromNBT(cmp); - + if(stack != null) return stack; - + removeMod(armor, slot); - + return null; } } diff --git a/src/main/java/com/hbm/handler/BobmazonOfferFactory.java b/src/main/java/com/hbm/handler/BobmazonOfferFactory.java index 2c0f4fc8d..26fcfd55b 100644 --- a/src/main/java/com/hbm/handler/BobmazonOfferFactory.java +++ b/src/main/java/com/hbm/handler/BobmazonOfferFactory.java @@ -7,12 +7,12 @@ import com.hbm.blocks.ModBlocks; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.gui.GUIScreenBobmazon.Offer; import com.hbm.inventory.gui.GUIScreenBobmazon.Requirement; -import com.hbm.items.ItemAmmoEnums.*; import com.hbm.items.ModItems; import com.hbm.items.food.ItemConserve.EnumFoodType; import com.hbm.items.machine.ItemBattery; import com.hbm.items.special.ItemKitCustom; import com.hbm.items.special.ItemKitNBT; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -110,32 +110,6 @@ public class BobmazonOfferFactory { weapons.add(new Offer(new ItemStack(ModItems.detonator), Requirement.ASSEMBLY, 15 * inflation)); weapons.add(new Offer(new ItemStack(ModItems.detonator_laser), Requirement.CHEMICS, 60 * inflation)); weapons.add(new Offer(new ItemStack(ModItems.defuser), Requirement.OIL, 5 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.gun_revolver), Requirement.ASSEMBLY, 15 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.gun_revolver_nopip), Requirement.ASSEMBLY, 20 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.gun_minigun), Requirement.OIL, 100 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.gun_panzerschreck), Requirement.ASSEMBLY, 95 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.gun_hk69), Requirement.ASSEMBLY, 60 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.gun_uzi), Requirement.OIL, 80 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.gun_lever_action), Requirement.ASSEMBLY, 60 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.gun_bolt_action), Requirement.ASSEMBLY, 35 * inflation)); - weapons.add(new Offer(ModItems.ammo_357.stackFromEnum(6, Ammo357Magnum.LEAD), Requirement.OIL, 12 * inflation)); - weapons.add(new Offer(ModItems.ammo_357.stackFromEnum(6, Ammo357Magnum.DESH), Requirement.OIL, 36 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.ammo_44, 6), Requirement.OIL, 12 * inflation)); - weapons.add(new Offer(ModItems.ammo_44.stackFromEnum(6, Ammo44Magnum.AP), Requirement.OIL, 18 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.ammo_5mm, 50), Requirement.OIL, 50 * inflation)); - weapons.add(new Offer(ModItems.ammo_5mm.stackFromEnum(50, Ammo5mm.DU), Requirement.OIL, 75 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.ammo_rocket), Requirement.OIL, 5 * inflation)); - weapons.add(new Offer(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.INCENDIARY), Requirement.OIL, 8 * inflation)); - weapons.add(new Offer(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.SLEEK), Requirement.OIL, 12 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.ammo_grenade), Requirement.OIL, 4 * inflation)); - weapons.add(new Offer(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.INCENDIARY), Requirement.OIL, 6 * inflation)); - weapons.add(new Offer(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.SLEEK), Requirement.OIL, 10 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.ammo_22lr, 32), Requirement.OIL, 24 * inflation)); - weapons.add(new Offer(ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.AP), Requirement.OIL, 32 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.ammo_20gauge, 6), Requirement.OIL, 18 * inflation)); - weapons.add(new Offer(ModItems.ammo_20gauge.stackFromEnum(6, Ammo20Gauge.SLUG), Requirement.OIL, 20 * inflation)); - weapons.add(new Offer(ModItems.ammo_20gauge.stackFromEnum(6, Ammo20Gauge.FLECHETTE), Requirement.OIL, 22 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.gun_hp_ammo, 1), Requirement.ASSEMBLY, 1000 * inflation)); tools.add(new Offer(new ItemStack(ModBlocks.crate_can, 1), Requirement.STEEL, 20 * inflation)); tools.add(new Offer(new ItemStack(ModBlocks.machine_keyforge), Requirement.STEEL, 10 * inflation)); @@ -238,24 +212,18 @@ public class BobmazonOfferFactory { ), Requirement.HIDDEN, 64)); special.add(new Offer(ItemKitCustom.create("Maid's Cleaning Utensils", "For the hard to reach spots", 0x00ff00, 0x008000, - new ItemStack(ModItems.gun_calamity), - ModItems.ammo_50bmg.stackFromEnum(64, Ammo50BMG.CHLOROPHYTE), - ModItems.ammo_50bmg.stackFromEnum(64, Ammo50BMG.CHLOROPHYTE), - ModItems.ammo_50bmg.stackFromEnum(64, Ammo50BMG.CHLOROPHYTE), - ModItems.ammo_50ae.stackFromEnum(64, Ammo50AE.STAR), - ModItems.ammo_50ae.stackFromEnum(64, Ammo50AE.STAR), - new ItemStack(ModItems.gun_supershotgun), - ModItems.ammo_12gauge.stackFromEnum(64, Ammo12Gauge.DU), - ModItems.ammo_12gauge.stackFromEnum(64, Ammo12Gauge.DU), - ModItems.ammo_12gauge.stackFromEnum(64, Ammo12Gauge.SHRAPNEL), - ModItems.ammo_12gauge.stackFromEnum(64, Ammo12Gauge.SHRAPNEL), - ModItems.ammo_12gauge.stackFromEnum(4, Ammo12Gauge.MARAUDER), - new ItemStack(ModItems.gun_sauer), - new ItemStack(ModItems.ammo_4gauge, 64), - ModItems.ammo_4gauge.stackFromEnum(64, Ammo4Gauge.CLAW), - ModItems.ammo_4gauge.stackFromEnum(64, Ammo4Gauge.KAMPF), - ModItems.ammo_4gauge.stackFromEnum(64, Ammo4Gauge.FLECHETTE), - ModItems.ammo_4gauge.stackFromEnum(64, Ammo4Gauge.VOID) + new ItemStack(ModItems.gun_m2), + new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.BMG50_DU.ordinal()), + new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.BMG50_DU.ordinal()), + new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.BMG50_DU.ordinal()), + new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.BMG50_DU.ordinal()), + new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.BMG50_DU.ordinal()), + new ItemStack(ModItems.gun_autoshotgun), + new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.G12_MAGNUM.ordinal()), + new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.G12_MAGNUM.ordinal()), + new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.G12_MAGNUM.ordinal()), + new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.G12_EXPLOSIVE.ordinal()), + new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.G12_EXPLOSIVE.ordinal()) ), Requirement.HIDDEN, 64)); special.add(new Offer(ItemKitNBT.create( @@ -270,14 +238,10 @@ public class BobmazonOfferFactory { new ItemStack(ModItems.rpa_plate), new ItemStack(ModItems.rpa_legs), new ItemStack(ModItems.rpa_boots), - new ItemStack(ModItems.gun_lacunae), - ModItems.ammo_5mm.stackFromEnum(64, Ammo5mm.STAR), - ModItems.ammo_5mm.stackFromEnum(64, Ammo5mm.STAR), - ModItems.ammo_5mm.stackFromEnum(64, Ammo5mm.STAR), - ModItems.ammo_5mm.stackFromEnum(64, Ammo5mm.STAR), - ModItems.ammo_5mm.stackFromEnum(64, Ammo5mm.STAR), - ModItems.ammo_5mm.stackFromEnum(64, Ammo5mm.STAR), - ModItems.ammo_5mm.stackFromEnum(64, Ammo5mm.STAR) + new ItemStack(ModItems.gun_minigun_lacunae), + new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.CAPACITOR_OVERCHARGE.ordinal()), + new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.CAPACITOR_OVERCHARGE.ordinal()), + new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.CAPACITOR_OVERCHARGE.ordinal()) ).setStackDisplayName("Frenchman's Reward"), Requirement.HIDDEN, 32)); } diff --git a/src/main/java/com/hbm/handler/BossSpawnHandler.java b/src/main/java/com/hbm/handler/BossSpawnHandler.java index 485de324f..fa14f7d41 100644 --- a/src/main/java/com/hbm/handler/BossSpawnHandler.java +++ b/src/main/java/com/hbm/handler/BossSpawnHandler.java @@ -245,8 +245,9 @@ public class BossSpawnHandler { Vec3 vec; if(repell) { vec = Vec3.createVectorHelper(meteor.posX - player.posX, 0, meteor.posZ - player.posZ).normalize(); - vec.xCoord = vec.xCoord * meteorRand.nextDouble() - 0.5D; - vec.zCoord = vec.zCoord * meteorRand.nextDouble() - 0.5D; + double vel = meteorRand.nextDouble(); + vec.xCoord = vec.xCoord * vel; + vec.zCoord = vec.zCoord * vel; meteor.safe = true; } else { vec = Vec3.createVectorHelper(meteorRand.nextDouble() - 0.5D, 0, 0); diff --git a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java index 29aaf510e..f3401ff0b 100644 --- a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java +++ b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java @@ -4,8 +4,6 @@ import java.util.HashMap; import java.util.Map.Entry; import com.hbm.handler.guncfg.*; -import com.hbm.items.ItemAmmoEnums.*; -import com.hbm.items.ModItems; public class BulletConfigSyncingUtil { @@ -13,163 +11,7 @@ public class BulletConfigSyncingUtil { static int i = 0; - /// duplicate ids will cause wrong configs to be loaded /// public static int TEST_CONFIG = i++; - public static int IRON_REVOLVER = i++; - public static int STEEL_REVOLVER = i++; - public static int LEAD_REVOLVER = i++; - public static int GOLD_REVOLVER = i++; - public static int CURSED_REVOLVER = i++; - public static int SCHRABIDIUM_REVOLVER = i++; - public static int NIGHT_REVOLVER = i++; - public static int NIGHT2_REVOLVER = i++; - public static int SATURNITE_REVOLVER = i++; - public static int DESH_REVOLVER = i++; - - public static int IRON_HS = i++; - public static int STEEL_HS = i++; - public static int GOLD_HS = i++; - public static int LEAD_HS = i++; - public static int DESH_HS = i++; - - public static int G20_NORMAL = i++; - public static int G20_SLUG = i++; - public static int G20_FLECHETTE = i++; - public static int G20_FIRE = i++; - public static int G20_SHRAPNEL = i++; - public static int G20_EXPLOSIVE = i++; - public static int G20_CAUSTIC = i++; - public static int G20_SHOCK = i++; - public static int G20_WITHER = i++; - public static int G20_SLEEK = i++; - - public static int ROCKET_NORMAL = i++; - public static int ROCKET_HE = i++; - public static int ROCKET_INCENDIARY = i++; - public static int ROCKET_SHRAPNEL = i++; - public static int ROCKET_EMP = i++; - public static int ROCKET_GLARE = i++; - public static int ROCKET_SLEEK = i++; - public static int ROCKET_NUKE = i++; - public static int ROCKET_CHAINSAW = i++; - public static int ROCKET_TOXIC = i++; - public static int ROCKET_PHOSPHORUS = i++; - public static int ROCKET_CANISTER = i++; - public static int ROCKET_ERROR = i++; - - public static int GRENADE_NORMAL = i++; - public static int GRENADE_HE = i++; - public static int GRENADE_INCENDIARY = i++; - public static int GRENADE_CHEMICAL = i++; - public static int GRENADE_SLEEK = i++; - public static int GRENADE_CONCUSSION = i++; - public static int GRENADE_FINNED = i++; - public static int GRENADE_NUCLEAR = i++; - 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++; - public static int G12_SHRAPNEL = i++; - public static int G12_DU = i++; - public static int G12_AM = i++; - public static int G12_SLEEK = i++; - public static int G12_PERCUSSION = i++; - - public static int G12HS_NORMAL = i++; - public static int G12HS_INCENDIARY = i++; - public static int G12HS_SHRAPNEL = i++; - public static int G12HS_DU = i++; - public static int G12HS_AM = i++; - public static int G12HS_SLEEK = i++; - public static int G12HS_PERCUSSION = i++; - - public static int LR22_NORMAL = i++; - public static int LR22_AP = i++; - public static int LR22_NORMAL_FIRE = i++; - public static int LR22_AP_FIRE = i++; - - public static int M44_NORMAL = i++; - public static int M44_AP = i++; - public static int M44_DU = i++; - public static int M44_STAR = i++; - public static int M44_PIP = i++; - public static int M44_BJ = i++; - public static int M44_SILVER = i++; - public static int M44_ROCKET = i++; - public static int M44_PHOSPHORUS = i++; - - public static int P9_NORMAL = i++; - public static int P9_AP = i++; - public static int P9_DU = i++; - public static int P9_ROCKET = i++; - - public static int ACP_45 = i++; - public static int ACP_45_AP = i++; - public static int ACP_45_DU = i++; - - public static int BMG50_NORMAL = i++; - public static int BMG50_INCENDIARY = i++; - public static int BMG50_EXPLOSIVE = i++; - public static int BMG50_AP = i++; - public static int BMG50_DU = i++; - public static int BMG50_STAR = i++; - public static int BMG50_PHOSPHORUS = i++; - public static int BMG50_SLEEK = i++; - public static int BMG50_FLECHETTE_NORMAL = i++; - public static int BMG50_FLECHETTE_AM = i++; - public static int BMG50_FLECHETTE_PO = i++; - - public static int ROUND_LUNA_SNIPER_SABOT = i++; - public static int ROUND_LUNA_SNIPER_INCENDIARY = i++; - public static int ROUND_LUNA_SNIPER_EXPLOSIVE = i++; - - public static int R5_NORMAL = i++; - public static int R5_EXPLOSIVE = i++; - public static int R5_DU = i++; - public static int R5_STAR = i++; - public static int R5_NORMAL_BOLT = i++; - public static int R5_EXPLOSIVE_BOLT = i++; - public static int R5_DU_BOLT = i++; - public static int R5_STAR_BOLT = i++; - - public static int AE50_NORMAL = i++; - public static int AE50_AP = i++; - public static int AE50_DU = i++; - public static int AE50_STAR = i++; - - public static int G4_NORMAL = i++; - public static int G4_SLUG = i++; - public static int G4_FLECHETTE = i++; - public static int G4_FLECHETTE_PHOSPHORUS = i++; - public static int G4_EXPLOSIVE = i++; - public static int G4_SEMTEX = i++; - public static int G4_BALEFIRE = i++; - public static int G4_KAMPF = i++; - public static int G4_CANISTER = i++; - public static int G4_CLAW = i++; - public static int G4_VAMPIRE = i++; - public static int G4_VOID = i++; - public static int G4_TITAN = i++; - public static int G4_SLEEK = i++; - - public static int SPECIAL_OSIPR = i++; - public static int SPECIAL_OSIPR_CHARGED = i++; - public static int SPECIAL_GAUSS = i++; - public static int SPECIAL_GAUSS_CHARGED = i++; - public static int SPECIAL_EMP = i++; - - public static int COIL_NORMAL = i++; - public static int COIL_DU = i++; - public static int COIL_RUBBER = i++; - - public static int FLAMER_NORMAL = i++; - public static int FLAMER_NAPALM = i++; - public static int FLAMER_WP = i++; - public static int FLAMER_VAPORIZER = i++; - public static int FLAMER_GAS = i++; public static int CRYO_NORMAL = i++; @@ -177,119 +19,7 @@ public class BulletConfigSyncingUtil { public static int FEXT_FOAM = i++; public static int FEXT_SAND = i++; - public static int R556_NORMAL = i++; - public static int R556_GOLD = i++; - public static int R556_PHOSPHORUS = i++; - public static int R556_AP = i++; - public static int R556_DU = i++; - public static int R556_STAR = i++; - public static int R556_SLEEK = i++; - public static int R556_TRACER = i++; - public static int R556_FLECHETTE = i++; - public static int R556_FLECHETTE_INCENDIARY = i++; - public static int R556_FLECHETTE_PHOSPHORUS = i++; - public static int R556_FLECHETTE_DU = i++; - public static int R556_FLECHETTE_SLEEK = i++; - public static int R556_K = i++; - - public static int R762_NORMAL = i++; - public static int R762_PHOSPHORUS = i++; - public static int R762_AP = i++; - public static int R762_DU = i++; - public static int R762_TRACER = i++; - public static int R762_K = i++; - - public static int B75_NORMAL = i++; - public static int B75_INCENDIARY = i++; - public static int B75_HE = i++; - - public static int NEEDLE_GPS = i++; - public static int NEEDLE_NUKE = i++; - public static int DART_NORMAL = i++; - - public static int G20_NORMAL_FIRE = i++; - public static int G20_SHRAPNEL_FIRE = i++; - public static int G20_SLUG_FIRE = i++; - public static int G20_FLECHETTE_FIRE = i++; - public static int G20_EXPLOSIVE_FIRE = i++; - public static int G20_CAUSTIC_FIRE = i++; - public static int G20_SHOCK_FIRE = i++; - public static int G20_WITHER_FIRE = i++; - - public static int ROCKET_NORMAL_LASER = i++; - public static int ROCKET_HE_LASER = i++; - public static int ROCKET_INCENDIARY_LASER = i++; - public static int ROCKET_SHRAPNEL_LASER = i++; - public static int ROCKET_EMP_LASER = i++; - public static int ROCKET_GLARE_LASER = i++; - public static int ROCKET_SLEEK_LASER = i++; - public static int ROCKET_NUKE_LASER = i++; - public static int ROCKET_CHAINSAW_LASER = i++; - public static int ROCKET_TOXIC_LASER = i++; - public static int ROCKET_PHOSPHORUS_LASER = i++; - - public static int ROCKET_STINGER = i++; - public static int ROCKET_STINGER_HE = i++; - public static int ROCKET_STINGER_INCENDIARY = i++; - public static int ROCKET_STINGER_NUCLEAR = i++; - public static int ROCKET_STINGER_BONES = i++; - - public static int SHELL_NORMAL = i++; - public static int SHELL_EXPLOSIVE = i++; - public static int SHELL_AP = i++; - public static int SHELL_DU = i++; - public static int SHELL_W9 = i++; - public static int DGK_NORMAL = i++; - public static int FLA_NORMAL = i++; - - public static int NUKE_NORMAL = i++; - public static int NUKE_LOW = i++; - public static int NUKE_HIGH = i++; - public static int NUKE_TOTS = i++; - public static int NUKE_SAFE = i++; - public static int NUKE_PUMPKIN = i++; - public static int NUKE_BARREL = i++; - public static int NUKE_PROTO_NORMAL = i++; - public static int NUKE_PROTO_LOW = i++; - public static int NUKE_PROTO_HIGH = i++; - public static int NUKE_PROTO_TOTS = i++; - public static int NUKE_PROTO_SAFE = i++; - public static int NUKE_PROTO_PUMPKIN = i++; - public static int NUKE_MIRV_NORMAL = i++; - public static int NUKE_MIRV_LOW = i++; - public static int NUKE_MIRV_HIGH = i++; - public static int NUKE_MIRV_SAFE = i++; - public static int NUKE_MIRV_SPECIAL = i++; - - public static int NUKE_AMAT = i++; - - public static int TWR_RAY = i++; - public static int HLR_NORMAL = i++; - public static int HLR_ALT = i++; - - public static int ZOMG_BOLT = i++; - public static int DET_BOLT = i++; - public static int TURBINE = i++; - - public static int GLASS_EMRADIO = i++; - public static int GLASS_EMMICRO = i++; - public static int GLASS_EMIR = i++; - public static int GLASS_EMVISIBLE = i++; - public static int GLASS_EMUV = i++; - public static int GLASS_EMXRAY = i++; - public static int GLASS_EMGAMMA = i++; - - public static int CHL_LR22 = i++; - public static int CHL_LR22_FIRE = i++; - public static int CHL_M44 = i++; - public static int CHL_P9 = i++; - public static int CHL_BMG50 = i++; - public static int CHL_R5 = i++; - public static int CHL_R5_BOLT = i++; - public static int CHL_AE50 = i++; - public static int CHL_R556 = i++; - public static int CHL_R556_FLECHETTE = i++; public static int MASKMAN_BULLET = i++; public static int MASKMAN_ORB = i++; @@ -305,283 +35,13 @@ public class BulletConfigSyncingUtil { public static void loadConfigsForSync() { - configSet.put(TEST_CONFIG, BulletConfigFactory.getTestConfig()); - - configSet.put(IRON_REVOLVER, Gun357MagnumFactory.getRevIronConfig()); - configSet.put(STEEL_REVOLVER, Gun357MagnumFactory.getRevLeadConfig()); - configSet.put(LEAD_REVOLVER, Gun357MagnumFactory.getRevNuclearConfig()); - configSet.put(GOLD_REVOLVER, Gun357MagnumFactory.getRevGoldConfig()); - configSet.put(CURSED_REVOLVER, Gun357MagnumFactory.getRevCursedConfig()); - configSet.put(SCHRABIDIUM_REVOLVER, Gun357MagnumFactory.getRevSchrabidiumConfig()); - configSet.put(NIGHT_REVOLVER, Gun357MagnumFactory.getRevNightmare1Config()); - configSet.put(NIGHT2_REVOLVER, Gun357MagnumFactory.getRevNightmare2Config()); - configSet.put(SATURNITE_REVOLVER, Gun357MagnumFactory.getRevLeadConfig().setToFire(3)); - configSet.put(DESH_REVOLVER, Gun357MagnumFactory.getRevDeshConfig()); - - configSet.put(IRON_HS, Gun357MagnumFactory.getRevIronConfig().setHeadshot(3F)); - configSet.put(STEEL_HS, Gun357MagnumFactory.getRevCursedConfig().setHeadshot(3F)); - configSet.put(GOLD_HS, Gun357MagnumFactory.getRevGoldConfig().setHeadshot(3F)); - configSet.put(LEAD_HS, Gun357MagnumFactory.getRevLeadConfig().setHeadshot(3F)); - configSet.put(DESH_HS, Gun357MagnumFactory.getRevDeshConfig().setHeadshot(3F)); - - configSet.put(G20_NORMAL, Gun20GaugeFactory.get20GaugeConfig()); - configSet.put(G20_SLUG, Gun20GaugeFactory.get20GaugeSlugConfig()); - configSet.put(G20_FLECHETTE, Gun20GaugeFactory.get20GaugeFlechetteConfig()); - configSet.put(G20_FIRE, Gun20GaugeFactory.get20GaugeFireConfig()); - configSet.put(G20_SHRAPNEL, Gun20GaugeFactory.get20GaugeShrapnelConfig()); - configSet.put(G20_EXPLOSIVE, Gun20GaugeFactory.get20GaugeExplosiveConfig()); - configSet.put(G20_CAUSTIC, Gun20GaugeFactory.get20GaugeCausticConfig()); - configSet.put(G20_SHOCK, Gun20GaugeFactory.get20GaugeShockConfig()); - configSet.put(G20_WITHER, Gun20GaugeFactory.get20GaugeWitherConfig()); - configSet.put(G20_SLEEK, Gun20GaugeFactory.get20GaugeSleekConfig()); - - configSet.put(ROCKET_NORMAL, GunRocketFactory.getRocketConfig()); - configSet.put(ROCKET_HE, GunRocketFactory.getRocketHEConfig()); - configSet.put(ROCKET_INCENDIARY, GunRocketFactory.getRocketIncendiaryConfig()); - configSet.put(ROCKET_PHOSPHORUS, GunRocketFactory.getRocketPhosphorusConfig()); - configSet.put(ROCKET_SHRAPNEL, GunRocketFactory.getRocketShrapnelConfig()); - configSet.put(ROCKET_EMP, GunRocketFactory.getRocketEMPConfig()); - configSet.put(ROCKET_GLARE, GunRocketFactory.getRocketGlareConfig()); - configSet.put(ROCKET_SLEEK, GunRocketFactory.getRocketSleekConfig()); - configSet.put(ROCKET_NUKE, GunRocketFactory.getRocketNukeConfig()); - configSet.put(ROCKET_CHAINSAW, GunRocketFactory.getRocketRPCConfig()); - configSet.put(ROCKET_TOXIC, GunRocketFactory.getRocketChlorineConfig()); - configSet.put(ROCKET_CANISTER, GunRocketFactory.getRocketCanisterConfig()); - configSet.put(ROCKET_ERROR, GunRocketFactory.getRocketErrorConfig()); - - configSet.put(ROCKET_STINGER, GunRocketHomingFactory.getRocketStingerConfig()); - configSet.put(ROCKET_STINGER_HE, GunRocketHomingFactory.getRocketStingerHEConfig()); - configSet.put(ROCKET_STINGER_INCENDIARY, GunRocketHomingFactory.getRocketStingerIncendiaryConfig()); - configSet.put(ROCKET_STINGER_NUCLEAR, GunRocketHomingFactory.getRocketStingerNuclearConfig()); - configSet.put(ROCKET_STINGER_BONES, GunRocketHomingFactory.getRocketStingerBonesConfig()); - - configSet.put(GRENADE_NORMAL, GunGrenadeFactory.getGrenadeConfig()); - configSet.put(GRENADE_HE, GunGrenadeFactory.getGrenadeHEConfig()); - configSet.put(GRENADE_INCENDIARY, GunGrenadeFactory.getGrenadeIncendirayConfig()); - configSet.put(GRENADE_PHOSPHORUS, GunGrenadeFactory.getGrenadePhosphorusConfig()); - configSet.put(GRENADE_CHEMICAL, GunGrenadeFactory.getGrenadeChlorineConfig()); - configSet.put(GRENADE_SLEEK, GunGrenadeFactory.getGrenadeSleekConfig()); - configSet.put(GRENADE_CONCUSSION, GunGrenadeFactory.getGrenadeConcussionConfig()); - configSet.put(GRENADE_FINNED, GunGrenadeFactory.getGrenadeFinnedConfig()); - 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()); - configSet.put(G12_SHRAPNEL, Gun12GaugeFactory.get12GaugeShrapnelConfig()); - configSet.put(G12_DU, Gun12GaugeFactory.get12GaugeDUConfig()); - configSet.put(G12_AM, Gun12GaugeFactory.get12GaugeAMConfig()); - configSet.put(G12_SLEEK, Gun12GaugeFactory.get12GaugeSleekConfig()); - configSet.put(G12_PERCUSSION, Gun12GaugeFactory.get12GaugePercussionConfig()); - configSet.put(G12HS_NORMAL, Gun12GaugeFactory.get12GaugeConfig().setHeadshot(2F)); - configSet.put(G12HS_INCENDIARY, Gun12GaugeFactory.get12GaugeFireConfig().setHeadshot(2F)); - configSet.put(G12HS_SHRAPNEL, Gun12GaugeFactory.get12GaugeShrapnelConfig().setHeadshot(2F)); - configSet.put(G12HS_DU, Gun12GaugeFactory.get12GaugeDUConfig().setHeadshot(2F)); - configSet.put(G12HS_AM, Gun12GaugeFactory.get12GaugeAMConfig().setHeadshot(2F)); - configSet.put(G12HS_SLEEK, Gun12GaugeFactory.get12GaugeSleekConfig().setHeadshot(2F)); - configSet.put(G12HS_PERCUSSION, Gun12GaugeFactory.get12GaugePercussionConfig().setHeadshot(2F)); - - configSet.put(LR22_NORMAL, Gun22LRFactory.get22LRConfig()); - configSet.put(LR22_AP, Gun22LRFactory.get22LRAPConfig()); - configSet.put(LR22_NORMAL_FIRE, Gun22LRFactory.get22LRConfig().setToFire(3)); - configSet.put(LR22_AP_FIRE, Gun22LRFactory.get22LRAPConfig().setToFire(3)); - - configSet.put(M44_NORMAL, Gun44MagnumFactory.getNoPipConfig()); - configSet.put(M44_AP, Gun44MagnumFactory.getNoPipAPConfig()); - configSet.put(M44_DU, Gun44MagnumFactory.getNoPipDUConfig()); - configSet.put(M44_PHOSPHORUS, Gun44MagnumFactory.getPhosphorusConfig()); - configSet.put(M44_STAR, Gun44MagnumFactory.getNoPipStarConfig()); - configSet.put(M44_PIP, Gun44MagnumFactory.getPipConfig()); - configSet.put(M44_BJ, Gun44MagnumFactory.getBJConfig()); - configSet.put(M44_SILVER, Gun44MagnumFactory.getSilverStormConfig()); - configSet.put(M44_ROCKET, Gun44MagnumFactory.getRocketConfig()); - - configSet.put(P9_NORMAL, Gun9mmFactory.get9mmConfig()); - configSet.put(P9_AP, Gun9mmFactory.get9mmAPConfig()); - configSet.put(P9_DU, Gun9mmFactory.get9mmDUConfig()); - configSet.put(P9_ROCKET, Gun9mmFactory.get9mmRocketConfig()); - - configSet.put(ACP_45, Gun45ACPFactory.get45AutoConfig()); - configSet.put(ACP_45_AP, Gun45ACPFactory.get45AutoAPConfig()); - configSet.put(ACP_45_DU, Gun45ACPFactory.get45AutoDUConfig()); - - configSet.put(BMG50_NORMAL, Gun50BMGFactory.get50BMGConfig()); - configSet.put(BMG50_INCENDIARY, Gun50BMGFactory.get50BMGFireConfig()); - configSet.put(BMG50_PHOSPHORUS, Gun50BMGFactory.get50BMGPhosphorusConfig()); - configSet.put(BMG50_EXPLOSIVE, Gun50BMGFactory.get50BMGExplosiveConfig()); - configSet.put(BMG50_AP, Gun50BMGFactory.get50BMGAPConfig()); - configSet.put(BMG50_DU, Gun50BMGFactory.get50BMGDUConfig()); - configSet.put(BMG50_STAR, Gun50BMGFactory.get50BMGStarConfig()); - configSet.put(BMG50_SLEEK, Gun50BMGFactory.get50BMGSleekConfig()); - configSet.put(BMG50_FLECHETTE_NORMAL, Gun50BMGFactory.get50BMGFlechetteConfig()); - configSet.put(BMG50_FLECHETTE_AM, Gun50BMGFactory.get50BMGFlechetteAMConfig()); - configSet.put(BMG50_FLECHETTE_PO, Gun50BMGFactory.get50BMGFlechettePOConfig()); - - configSet.put(ROUND_LUNA_SNIPER_SABOT, Gun50BMGFactory.getLunaticSabotRound()); - configSet.put(ROUND_LUNA_SNIPER_INCENDIARY, Gun50BMGFactory.getLunaticIncendiaryRound()); - configSet.put(ROUND_LUNA_SNIPER_EXPLOSIVE, Gun50BMGFactory.getLunaticExplosiveRound()); - - configSet.put(R5_NORMAL, Gun5mmFactory.get5mmConfig()); - configSet.put(R5_EXPLOSIVE, Gun5mmFactory.get5mmExplosiveConfig()); - configSet.put(R5_DU, Gun5mmFactory.get5mmDUConfig()); - configSet.put(R5_STAR, Gun5mmFactory.get5mmStarConfig()); - configSet.put(R5_NORMAL_BOLT, Gun5mmFactory.get5mmConfig().setToBolt(BulletConfiguration.BOLT_LACUNAE)); - configSet.put(R5_EXPLOSIVE_BOLT, Gun5mmFactory.get5mmExplosiveConfig().setToBolt(BulletConfiguration.BOLT_LACUNAE)); - configSet.put(R5_DU_BOLT, Gun5mmFactory.get5mmDUConfig().setToBolt(BulletConfiguration.BOLT_LACUNAE)); - configSet.put(R5_STAR_BOLT, Gun5mmFactory.get5mmStarConfig().setToBolt(BulletConfiguration.BOLT_LACUNAE)); - - configSet.put(AE50_NORMAL, Gun50AEFactory.get50AEConfig()); - configSet.put(AE50_AP, Gun50AEFactory.get50APConfig()); - configSet.put(AE50_DU, Gun50AEFactory.get50DUConfig()); - configSet.put(AE50_STAR, Gun50AEFactory.get50StarConfig()); - - configSet.put(G4_NORMAL, Gun4GaugeFactory.get4GaugeConfig()); - configSet.put(G4_SLUG, Gun4GaugeFactory.get4GaugeSlugConfig()); - configSet.put(G4_FLECHETTE, Gun4GaugeFactory.get4GaugeFlechetteConfig()); - configSet.put(G4_FLECHETTE_PHOSPHORUS, Gun4GaugeFactory.get4GaugeFlechettePhosphorusConfig()); - configSet.put(G4_EXPLOSIVE, Gun4GaugeFactory.get4GaugeExplosiveConfig()); - configSet.put(G4_SEMTEX, Gun4GaugeFactory.get4GaugeMiningConfig()); - configSet.put(G4_BALEFIRE, Gun4GaugeFactory.get4GaugeBalefireConfig()); - configSet.put(G4_KAMPF, Gun4GaugeFactory.getGrenadeKampfConfig()); - configSet.put(G4_CANISTER, Gun4GaugeFactory.getGrenadeCanisterConfig()); - configSet.put(G4_CLAW, Gun4GaugeFactory.get4GaugeClawConfig()); - configSet.put(G4_VAMPIRE, Gun4GaugeFactory.get4GaugeVampireConfig()); - configSet.put(G4_VOID, Gun4GaugeFactory.get4GaugeVoidConfig()); - configSet.put(G4_TITAN, Gun4GaugeFactory.get4GaugeQuackConfig()); - configSet.put(G4_SLEEK, Gun4GaugeFactory.get4GaugeSleekConfig()); - - configSet.put(SPECIAL_OSIPR, GunOSIPRFactory.getPulseConfig()); - configSet.put(SPECIAL_OSIPR_CHARGED, GunOSIPRFactory.getPulseChargedConfig()); - configSet.put(SPECIAL_GAUSS, GunGaussFactory.getGaussConfig()); - configSet.put(SPECIAL_GAUSS_CHARGED, GunGaussFactory.getAltConfig()); - configSet.put(SPECIAL_EMP, GunEnergyFactory.getOrbusConfig()); - - configSet.put(COIL_NORMAL, GunEnergyFactory.getCoilConfig()); - configSet.put(COIL_DU, GunEnergyFactory.getCoilDUConfig()); - configSet.put(COIL_RUBBER, GunEnergyFactory.getCoilRubberConfig()); - - configSet.put(FLAMER_NORMAL, GunEnergyFactory.getFlameConfig()); - configSet.put(FLAMER_NAPALM, GunEnergyFactory.getNapalmConfig()); - configSet.put(FLAMER_WP, GunEnergyFactory.getPhosphorusConfig()); - configSet.put(FLAMER_VAPORIZER, GunEnergyFactory.getVaporizerConfig()); - configSet.put(FLAMER_GAS, GunEnergyFactory.getGasConfig()); - configSet.put(CRYO_NORMAL, GunEnergyFactory.getCryoConfig()); configSet.put(FEXT_NORMAL, GunEnergyFactory.getFextConfig()); configSet.put(FEXT_FOAM, GunEnergyFactory.getFextFoamConfig()); configSet.put(FEXT_SAND, GunEnergyFactory.getFextSandConfig()); - configSet.put(R556_NORMAL, Gun556mmFactory.get556Config()); - configSet.put(R556_GOLD, Gun556mmFactory.get556GoldConfig()); - configSet.put(R556_PHOSPHORUS, Gun556mmFactory.get556PhosphorusConfig()); - configSet.put(R556_AP, Gun556mmFactory.get556APConfig()); - configSet.put(R556_DU, Gun556mmFactory.get556DUConfig()); - configSet.put(R556_STAR, Gun556mmFactory.get556StarConfig()); - configSet.put(R556_SLEEK, Gun556mmFactory.get556SleekConfig()); - configSet.put(R556_TRACER, Gun556mmFactory.get556TracerConfig()); - configSet.put(R556_FLECHETTE, Gun556mmFactory.get556FlechetteConfig()); - configSet.put(R556_FLECHETTE_INCENDIARY, Gun556mmFactory.get556FlechetteIncendiaryConfig()); - configSet.put(R556_FLECHETTE_PHOSPHORUS, Gun556mmFactory.get556FlechettePhosphorusConfig()); - configSet.put(R556_FLECHETTE_DU, Gun556mmFactory.get556FlechetteDUConfig()); - configSet.put(R556_FLECHETTE_SLEEK, Gun556mmFactory.get556FlechetteSleekConfig()); - configSet.put(R556_K, Gun556mmFactory.get556KConfig()); - - configSet.put(R762_NORMAL, Gun762mmFactory.get762NATOConfig()); - configSet.put(R762_PHOSPHORUS, Gun762mmFactory.get762WPConfig()); - configSet.put(R762_AP, Gun762mmFactory.get762APConfig()); - configSet.put(R762_DU, Gun762mmFactory.get762DUConfig()); - configSet.put(R762_TRACER, Gun762mmFactory.get762TracerConfig()); - configSet.put(R762_K, Gun762mmFactory.get762BlankConfig()); - - configSet.put(B75_NORMAL, Gun75BoltFactory.get75BoltConfig()); - configSet.put(B75_INCENDIARY, Gun75BoltFactory.get75BoltIncConfig()); - configSet.put(B75_HE, Gun75BoltFactory.get75BoltHEConfig()); - - configSet.put(NEEDLE_GPS, GunDartFactory.getGPSConfig()); - configSet.put(NEEDLE_NUKE, GunDartFactory.getNukeConfig()); - configSet.put(DART_NORMAL, GunDartFactory.getNERFConfig()); - - configSet.put(G20_NORMAL_FIRE, Gun20GaugeFactory.get20GaugeConfig().setToFire(3)); - configSet.put(G20_SHRAPNEL_FIRE, Gun20GaugeFactory.get20GaugeShrapnelConfig().setToFire(3)); - configSet.put(G20_SLUG_FIRE, Gun20GaugeFactory.get20GaugeSlugConfig().setToFire(3)); - configSet.put(G20_FLECHETTE_FIRE, Gun20GaugeFactory.get20GaugeFlechetteConfig().setToFire(3)); - configSet.put(G20_EXPLOSIVE_FIRE, Gun20GaugeFactory.get20GaugeExplosiveConfig().setToFire(3)); - configSet.put(G20_CAUSTIC_FIRE, Gun20GaugeFactory.get20GaugeCausticConfig().setToFire(3)); - configSet.put(G20_SHOCK_FIRE, Gun20GaugeFactory.get20GaugeShockConfig().setToFire(3)); - configSet.put(G20_WITHER_FIRE, Gun20GaugeFactory.get20GaugeWitherConfig().setToFire(3)); - - configSet.put(ROCKET_NORMAL_LASER, GunRocketFactory.getRocketConfig().setToGuided()); - configSet.put(ROCKET_HE_LASER, GunRocketFactory.getRocketHEConfig().setToGuided()); - configSet.put(ROCKET_INCENDIARY_LASER, GunRocketFactory.getRocketIncendiaryConfig().setToGuided()); - configSet.put(ROCKET_PHOSPHORUS_LASER, GunRocketFactory.getRocketPhosphorusConfig().setToGuided()); - configSet.put(ROCKET_SHRAPNEL_LASER, GunRocketFactory.getRocketShrapnelConfig().setToGuided()); - configSet.put(ROCKET_EMP_LASER, GunRocketFactory.getRocketEMPConfig().setToGuided()); - configSet.put(ROCKET_GLARE_LASER, GunRocketFactory.getRocketGlareConfig().setToGuided()); - configSet.put(ROCKET_SLEEK_LASER, GunRocketFactory.getRocketSleekConfig().setToGuided()); - configSet.put(ROCKET_NUKE_LASER, GunRocketFactory.getRocketNukeConfig().setToGuided()); - configSet.put(ROCKET_CHAINSAW_LASER, GunRocketFactory.getRocketRPCConfig().setToGuided()); - configSet.put(ROCKET_TOXIC_LASER, GunRocketFactory.getRocketChlorineConfig().setToGuided()); - - configSet.put(SHELL_NORMAL, GunCannonFactory.getShellConfig()); - configSet.put(SHELL_EXPLOSIVE, GunCannonFactory.getShellExplosiveConfig()); - configSet.put(SHELL_AP, GunCannonFactory.getShellAPConfig()); - configSet.put(SHELL_DU, GunCannonFactory.getShellDUConfig()); - configSet.put(SHELL_W9, GunCannonFactory.getShellW9Config()); - configSet.put(DGK_NORMAL, GunDGKFactory.getDGKConfig()); - configSet.put(FLA_NORMAL, GunEnergyFactory.getTurretConfig()); - - configSet.put(NUKE_NORMAL, GunFatmanFactory.getNukeConfig()); - configSet.put(NUKE_LOW, GunFatmanFactory.getNukeLowConfig()); - configSet.put(NUKE_HIGH, GunFatmanFactory.getNukeHighConfig()); - configSet.put(NUKE_TOTS, GunFatmanFactory.getNukeTotsConfig()); - configSet.put(NUKE_SAFE, GunFatmanFactory.getNukeSafeConfig()); - configSet.put(NUKE_PUMPKIN, GunFatmanFactory.getNukePumpkinConfig()); - configSet.put(NUKE_BARREL, GunFatmanFactory.getNukeBarrelConfig()); - configSet.put(NUKE_PROTO_NORMAL, GunFatmanFactory.getNukeConfig().accuracyMod(20F)); - configSet.put(NUKE_PROTO_LOW, GunFatmanFactory.getNukeLowConfig().accuracyMod(20F)); - configSet.put(NUKE_PROTO_HIGH, GunFatmanFactory.getNukeHighConfig().accuracyMod(20F)); - configSet.put(NUKE_PROTO_TOTS, GunFatmanFactory.getNukeTotsConfig().accuracyMod(20F)); - configSet.put(NUKE_PROTO_SAFE, GunFatmanFactory.getNukeSafeConfig().accuracyMod(20F)); - configSet.put(NUKE_PROTO_PUMPKIN, GunFatmanFactory.getNukePumpkinConfig().accuracyMod(20F)); - configSet.put(NUKE_MIRV_NORMAL, GunFatmanFactory.getMirvConfig()); - configSet.put(NUKE_MIRV_LOW, GunFatmanFactory.getMirvLowConfig()); - configSet.put(NUKE_MIRV_HIGH, GunFatmanFactory.getMirvHighConfig()); - configSet.put(NUKE_MIRV_SAFE, GunFatmanFactory.getMirvSafeConfig()); - configSet.put(NUKE_MIRV_SPECIAL, GunFatmanFactory.getMirvSpecialConfig()); - - configSet.put(NUKE_AMAT, GunFatmanFactory.getBalefireConfig()); - - //configSet.put(TWR_RAY, GunEnergyFactory.getSingConfig()); - //configSet.put(HLR_NORMAL, GunEnergyFactory.getHLRPrecisionConfig()); - //configSet.put(HLR_ALT, GunEnergyFactory.getHLRScatterConfig()); - - configSet.put(ZOMG_BOLT, GunEnergyFactory.getZOMGBoltConfig()); - configSet.put(DET_BOLT, GunDetonatorFactory.getLaserConfig()); - configSet.put(TURBINE, GunEnergyFactory.getTurbineConfig()); - - configSet.put(GLASS_EMRADIO, GunPoweredFactory.getEMRadioConfig()); - configSet.put(GLASS_EMMICRO, GunPoweredFactory.getEMMicroConfig()); - configSet.put(GLASS_EMIR, GunPoweredFactory.getEMInfraredConfig()); - configSet.put(GLASS_EMVISIBLE, GunPoweredFactory.getEMVisibleConfig()); - configSet.put(GLASS_EMUV, GunPoweredFactory.getEMUVConfig()); - configSet.put(GLASS_EMXRAY, GunPoweredFactory.getEMXrayConfig()); - configSet.put(GLASS_EMGAMMA, GunPoweredFactory.getEMGammaConfig()); - - - configSet.put(CHL_LR22, Gun22LRFactory.get22LRConfig().setToHoming(ModItems.ammo_22lr.stackFromEnum(Ammo22LR.CHLOROPHYTE))); - configSet.put(CHL_LR22_FIRE, Gun22LRFactory.get22LRConfig().setToFire(3).setToHoming(ModItems.ammo_22lr.stackFromEnum(Ammo22LR.CHLOROPHYTE))); - configSet.put(CHL_M44, Gun44MagnumFactory.getNoPipConfig().setToHoming(ModItems.ammo_44.stackFromEnum(Ammo44Magnum.CHLOROPHYTE))); - configSet.put(CHL_P9, Gun9mmFactory.get9mmConfig().setToHoming(ModItems.ammo_9mm.stackFromEnum(Ammo9mm.CHLOROPHYTE))); - configSet.put(CHL_BMG50, Gun50BMGFactory.get50BMGConfig().setToHoming(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.CHLOROPHYTE))); - configSet.put(CHL_R5, Gun5mmFactory.get5mmConfig().setToHoming(ModItems.ammo_5mm.stackFromEnum(Ammo5mm.CHLOROPHYTE))); - configSet.put(CHL_R5_BOLT, Gun5mmFactory.get5mmConfig().setToBolt(BulletConfiguration.BOLT_LACUNAE).setToHoming(ModItems.ammo_5mm.stackFromEnum(Ammo5mm.CHLOROPHYTE))); - configSet.put(CHL_AE50, Gun50AEFactory.get50AEConfig().setToHoming(ModItems.ammo_50ae.stackFromEnum(Ammo50AE.CHLOROPHYTE))); - configSet.put(CHL_R556, Gun556mmFactory.get556Config().setToHoming(ModItems.ammo_556.stackFromEnum(Ammo556mm.CHLOROPHYTE))); - configSet.put(CHL_R556_FLECHETTE, Gun556mmFactory.get556FlechetteConfig().setToHoming(ModItems.ammo_556.stackFromEnum(Ammo556mm.FLECHETTE_CHLOROPHYTE))); configSet.put(MASKMAN_BULLET, GunNPCFactory.getMaskmanBullet()); configSet.put(MASKMAN_ORB, GunNPCFactory.getMaskmanOrb()); diff --git a/src/main/java/com/hbm/handler/CasingEjector.java b/src/main/java/com/hbm/handler/CasingEjector.java index eda29d1a0..321aa8d71 100644 --- a/src/main/java/com/hbm/handler/CasingEjector.java +++ b/src/main/java/com/hbm/handler/CasingEjector.java @@ -30,9 +30,9 @@ public class CasingEjector implements Cloneable { private static int nextId = 0; private Vec3 posOffset = Vec3.createVectorHelper(0, 0, 0); private Vec3 initialMotion = Vec3.createVectorHelper(0, 0, 0); - private int casingAmount = 1; - private boolean afterReload = false; - private int delay = 0; + @Deprecated private int casingAmount = 1; + @Deprecated private boolean afterReload = false; + @Deprecated private int delay = 0; private float randomYaw = 0F; private float randomPitch = 0F; @@ -61,17 +61,17 @@ public class CasingEjector implements Cloneable { return this; } - public CasingEjector setAmount(int am) { + @Deprecated public CasingEjector setAmount(int am) { this.casingAmount = am; return this; } - public CasingEjector setAfterReload() { + @Deprecated public CasingEjector setAfterReload() { this.afterReload = true; return this; } - public CasingEjector setDelay(int delay) { + @Deprecated public CasingEjector setDelay(int delay) { this.delay = delay; return this; } @@ -94,7 +94,7 @@ public class CasingEjector implements Cloneable { @SideOnly(Side.CLIENT) public void spawnCasing(TextureManager textureManager, SpentCasing config, World world, double x, double y, double z, float pitch, float yaw, boolean crouched) { Vec3 rotatedMotionVec = rotateVector(getMotion(), pitch + (float) rand.nextGaussian() * getPitchFactor(), yaw + (float) rand.nextGaussian() * getPitchFactor(), getPitchFactor(), getPitchFactor()); - ParticleSpentCasing casing = new ParticleSpentCasing(textureManager, world, x, y, z, rotatedMotionVec.xCoord, rotatedMotionVec.yCoord, rotatedMotionVec.zCoord, (float) (getPitchFactor() * rand.nextGaussian()), (float) (getYawFactor() * rand.nextGaussian()), config); + ParticleSpentCasing casing = new ParticleSpentCasing(textureManager, world, x, y, z, rotatedMotionVec.xCoord, rotatedMotionVec.yCoord, rotatedMotionVec.zCoord, (float) (getPitchFactor() * rand.nextGaussian()), (float) (getYawFactor() * rand.nextGaussian()), config, false, 0, 0, 0); offsetCasing(casing, getOffset(), pitch, yaw, crouched); diff --git a/src/main/java/com/hbm/handler/CompatHandler.java b/src/main/java/com/hbm/handler/CompatHandler.java index fe0b08ca0..2a59c92fe 100644 --- a/src/main/java/com/hbm/handler/CompatHandler.java +++ b/src/main/java/com/hbm/handler/CompatHandler.java @@ -39,14 +39,14 @@ public class CompatHandler { */ public static Object[] steamTypeToInt(FluidType type) { switch(type.getID()) { - default: - return new Object[] {0}; case(4): // Fluids.HOTSTEAM return new Object[] {1}; case(5): // Fluids.SUPERHOTSTEAM return new Object[] {2}; case(6): // Fluids.ULTRAHOTSTEAM return new Object[] {3}; + default: + return new Object[] {0}; } } @@ -57,14 +57,14 @@ public class CompatHandler { */ public static FluidType intToSteamType(int arg) { switch(arg) { - default: - return Fluids.STEAM; case(1): return Fluids.HOTSTEAM; case(2): return Fluids.SUPERHOTSTEAM; case(3): return Fluids.ULTRAHOTSTEAM; + default: + return Fluids.STEAM; } } @@ -72,7 +72,7 @@ public class CompatHandler { * Allows for easy creation of read-only filesystems. Primarily for floppy disks. * (Though maybe reading directly from VOTV drives as filesystems could be implemented. :3) **/ - private static class ReadOnlyFileSystem implements Callable { + protected static class ReadOnlyFileSystem implements Callable { private final String name; @@ -90,7 +90,7 @@ public class CompatHandler { // Floppy disk class. public static class FloppyDisk { // Specifies the callable ReadOnlyFileSystem to allow OC to access the floppy. - public final ReadOnlyFileSystem fs; + protected final ReadOnlyFileSystem fs; // Specifies the color of the floppy disk (0-16 colors defined by OC). public final Byte color; // Set after loading the disk; allows for adding a recipe to the item. @@ -103,7 +103,7 @@ public class CompatHandler { // Disk names will be sanitized before the FileSystem is created. // This only affects the location/directory, not the display name. - // (Prevents filesystems from breaking/crashing due to having file separators, wildcards, etc. + // (Prevents filesystems from breaking/crashing due to having file separators, wildcards, etc.) public static String sanitizeName(String input) { return input.toLowerCase().replaceAll("\\W", ""); } @@ -152,7 +152,7 @@ public class CompatHandler { // begin registering disks Logger logger = LogManager.getLogger("HBM"); logger.info("Loading OpenComputers disks..."); - if(disks.size() == 0) { + if(disks.isEmpty()) { logger.info("No disks registered; see com.hbm.handler.CompatHandler.disks"); return; } @@ -163,13 +163,13 @@ public class CompatHandler { if (fs == null) { // Disk path does NOT exist, and it should not be loaded. - logger.error("Error loading disk: " + s + " at /assets/" + RefStrings.MODID + "/disks/" + disk.fs.name); + logger.error("Error loading disk: {} at /assets/" + RefStrings.MODID + "/disks/{}", s, disk.fs.name); logger.error("This is likely due to the path to the disk being non-existent."); } else { // Disk path DOES exist, and it should be loaded. disk.item = Items.registerFloppy(s, disk.color, disk.fs); // The big part, actually registering the floppies! - logger.info("Registered disk: " + s + " at /assets/" + RefStrings.MODID + "/disks/" + disk.fs.name); + logger.info("Registered disk: {} at /assets/" + RefStrings.MODID + "/disks/{}", s, disk.fs.name); } }); @@ -178,10 +178,10 @@ public class CompatHandler { // OC disk recipes! List floppyDisks = new RecipesCommon.OreDictStack("oc:floppy").toStacks(); - if(floppyDisks.size() > 0) { //check that floppy disks even exist in oredict. + if(!floppyDisks.isEmpty()) { //check that floppy disks even exist in oredict. // Recipes must be initialized here, since if they were initialized in `CraftingManager` then the disk item would not be created yet. - addShapelessAuto(disks.get("PWRangler").item, new Object[] {"oc:floppy", new ItemStack(ModBlocks.pwr_casing)}); + addShapelessAuto(disks.get("PWRangler").item, "oc:floppy", new ItemStack(ModBlocks.pwr_casing)); logger.info("OpenComputers disk recipe added for PWRangler."); } else { diff --git a/src/main/java/com/hbm/handler/EntityEffectHandler.java b/src/main/java/com/hbm/handler/EntityEffectHandler.java index a7f68661a..19536eace 100644 --- a/src/main/java/com/hbm/handler/EntityEffectHandler.java +++ b/src/main/java/com/hbm/handler/EntityEffectHandler.java @@ -16,14 +16,17 @@ import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.handler.radiation.ChunkRadiationManager; +import com.hbm.handler.threading.PacketThreading; import com.hbm.interfaces.IArmorModDash; import com.hbm.items.armor.ArmorFSB; +import com.hbm.items.weapon.sedna.factory.ConfettiUtil; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.packet.toclient.ExtPropPacket; +import com.hbm.particle.helper.FlameCreator; import com.hbm.potion.HbmPotion; -import com.hbm.packet.ExtPropPacket; import com.hbm.saveddata.AuxSavedData; import com.hbm.util.ArmorRegistry; import com.hbm.util.ArmorUtil; @@ -47,6 +50,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; +import net.minecraft.util.DamageSource; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -55,12 +59,12 @@ import net.minecraft.world.biome.BiomeGenBase; public class EntityEffectHandler { public static void onUpdate(EntityLivingBase entity) { - + if(entity.ticksExisted % 20 == 0) { HbmLivingProps.setRadBuf(entity, HbmLivingProps.getRadEnv(entity)); HbmLivingProps.setRadEnv(entity, 0); } - + if(entity instanceof EntityPlayer && entity == MainRegistry.proxy.me()) { EntityPlayer player = MainRegistry.proxy.me(); if(player != null) { @@ -75,7 +79,6 @@ public class EntityEffectHandler { if(entity instanceof EntityPlayerMP) { HbmLivingProps props = HbmLivingProps.getData(entity); HbmPlayerProps pprps = HbmPlayerProps.getData((EntityPlayerMP) entity); - NBTTagCompound data = new NBTTagCompound(); if(pprps.shield < pprps.getEffectiveMaxShield() && entity.ticksExisted > pprps.lastDamage + 60) { int tsd = entity.ticksExisted - (pprps.lastDamage + 60); @@ -85,33 +88,31 @@ public class EntityEffectHandler { if(pprps.shield > pprps.getEffectiveMaxShield()) pprps.shield = pprps.getEffectiveMaxShield(); - props.saveNBTData(data); - pprps.saveNBTData(data); - PacketDispatcher.wrapper.sendTo(new ExtPropPacket(data), (EntityPlayerMP) entity); + PacketThreading.createSendToThreadedPacket(new ExtPropPacket(props, pprps), (EntityPlayerMP) entity); } if(!entity.worldObj.isRemote) { int timer = HbmLivingProps.getTimer(entity); if(timer > 0) { HbmLivingProps.setTimer(entity, timer - 1); - + if(timer == 1) { ExplosionNukeSmall.explode(entity.worldObj, entity.posX, entity.posY, entity.posZ, ExplosionNukeSmall.PARAMS_MEDIUM); } } - - if(GeneralConfig.enable528 && entity instanceof EntityLivingBase && !entity.isImmuneToFire() && entity.worldObj.provider.isHellWorld) { + //only sets players on fire so mod compatibility doesnt die + if((GeneralConfig.enable528 && GeneralConfig.enable528NetherBurn) && entity instanceof EntityPlayer && !entity.isImmuneToFire() && entity.worldObj.provider.isHellWorld) { entity.setFire(5); } - + BiomeGenBase biome = entity.worldObj.getBiomeGenForCoords((int) Math.floor(entity.posX), (int) Math.floor(entity.posZ)); float radiation = 0; if(biome == BiomeGenCraterBase.craterOuterBiome) radiation = WorldConfig.craterBiomeOuterRad; if(biome == BiomeGenCraterBase.craterBiome) radiation = WorldConfig.craterBiomeRad; if(biome == BiomeGenCraterBase.craterInnerBiome) radiation = WorldConfig.craterBiomeInnerRad; - + if(entity.isWet()) radiation *= WorldConfig.craterBiomeWaterMult; - + if(radiation > 0) { ContaminationUtil.contaminate(entity, HazardType.RADIATION, ContaminationType.CREATIVE, radiation / 20F); } @@ -128,14 +129,14 @@ public class EntityEffectHandler { handleDashing(entity); handlePlinking(entity); - + if(entity instanceof EntityPlayer) handleFauxLadder((EntityPlayer) entity); } - + private static void handleFauxLadder(EntityPlayer player) { - + HbmPlayerProps props = HbmPlayerProps.getData(player); - + if(props.isOnLadder) { float f5 = 0.15F; @@ -170,67 +171,67 @@ public class EntityEffectHandler { } props.isOnLadder = false; - + if(!player.worldObj.isRemote) ArmorUtil.resetFlightTime(player); } } - + private static void handleContamination(EntityLivingBase entity) { - + if(entity.worldObj.isRemote) return; - + List contamination = HbmLivingProps.getCont(entity); List rem = new ArrayList(); - + for(ContaminationEffect con : contamination) { ContaminationUtil.contaminate(entity, HazardType.RADIATION, con.ignoreArmor ? ContaminationType.RAD_BYPASS : ContaminationType.CREATIVE, con.getRad()); - + con.time--; - + if(con.time <= 0) rem.add(con); } - + contamination.removeAll(rem); } - + private static void handleRadiation(EntityLivingBase entity) { - + World world = entity.worldObj; - + if(!world.isRemote) { - + if(ContaminationUtil.isRadImmune(entity)) return; - + int ix = (int)MathHelper.floor_double(entity.posX); int iy = (int)MathHelper.floor_double(entity.posY); int iz = (int)MathHelper.floor_double(entity.posZ); - + float rad = ChunkRadiationManager.proxy.getRadiation(world, ix, iy, iz); - + if(world.provider.isHellWorld && RadiationConfig.hellRad > 0 && rad < RadiationConfig.hellRad) rad = (float) RadiationConfig.hellRad; - + if(rad > 0) { ContaminationUtil.contaminate(entity, HazardType.RADIATION, ContaminationType.CREATIVE, rad / 20F); } - + if(entity.worldObj.isRaining() && BombConfig.cont > 0 && AuxSavedData.getThunder(entity.worldObj) > 0 && entity.worldObj.canBlockSeeTheSky(ix, iy, iz)) { ContaminationUtil.contaminate(entity, HazardType.RADIATION, ContaminationType.CREATIVE, BombConfig.cont * 0.0005F); } - + if(entity instanceof EntityPlayer && ((EntityPlayer)entity).capabilities.isCreativeMode) return; - + Random rand = new Random(entity.getEntityId()); int r600 = rand.nextInt(600); int r1200 = rand.nextInt(1200); - + if(HbmLivingProps.getRadiation(entity) > 600) { - + if((world.getTotalWorldTime() + r600) % 600 < 20 && canVomit(entity)) { NBTTagCompound nbt = new NBTTagCompound(); nbt.setString("type", "vomit"); @@ -238,44 +239,44 @@ public class EntityEffectHandler { nbt.setInteger("count", 25); nbt.setInteger("entity", entity.getEntityId()); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25)); - + if((world.getTotalWorldTime() + r600) % 600 == 1) { world.playSoundEffect(ix, iy, iz, "hbm:player.vomit", 1.0F, 1.0F); entity.addPotionEffect(new PotionEffect(Potion.hunger.id, 60, 19)); } } - + } else if(HbmLivingProps.getRadiation(entity) > 200 && (world.getTotalWorldTime() + r1200) % 1200 < 20 && canVomit(entity)) { - + NBTTagCompound nbt = new NBTTagCompound(); nbt.setString("type", "vomit"); nbt.setString("mode", "normal"); nbt.setInteger("count", 15); nbt.setInteger("entity", entity.getEntityId()); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25)); - + if((world.getTotalWorldTime() + r1200) % 1200 == 1) { world.playSoundEffect(ix, iy, iz, "hbm:player.vomit", 1.0F, 1.0F); entity.addPotionEffect(new PotionEffect(Potion.hunger.id, 60, 19)); } - + } - + if(HbmLivingProps.getRadiation(entity) > 900 && (world.getTotalWorldTime() + rand.nextInt(10)) % 10 == 0) { - + NBTTagCompound nbt = new NBTTagCompound(); nbt.setString("type", "sweat"); nbt.setInteger("count", 1); nbt.setInteger("block", Block.getIdFromBlock(Blocks.redstone_block)); nbt.setInteger("entity", entity.getEntityId()); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25)); - + } } else { float radiation = HbmLivingProps.getRadiation(entity); - + if(entity instanceof EntityPlayer && radiation > 600) { - + NBTTagCompound nbt = new NBTTagCompound(); nbt.setString("type", "radiation"); nbt.setInteger("count", radiation > 900 ? 4 : radiation > 800 ? 2 : 1); @@ -283,20 +284,20 @@ public class EntityEffectHandler { } } } - + private static void handleDigamma(EntityLivingBase entity) { - + if(!entity.worldObj.isRemote) { - + float digamma = HbmLivingProps.getDigamma(entity); - + if(digamma < 0.01F) return; - + int chance = Math.max(10 - (int)(digamma), 1); - + if(chance == 1 || entity.getRNG().nextInt(chance) == 0) { - + NBTTagCompound data = new NBTTagCompound(); data.setString("type", "sweat"); data.setInteger("count", 1); @@ -306,41 +307,41 @@ public class EntityEffectHandler { } } } - + private static void handleContagion(EntityLivingBase entity) { - + World world = entity.worldObj; - + if(!entity.worldObj.isRemote) { - + Random rand = entity.getRNG(); int minute = 60 * 20; int hour = 60 * minute; - + int contagion = HbmLivingProps.getContagion(entity); - + if(entity instanceof EntityPlayer) { - + EntityPlayer player = (EntityPlayer) entity; int randSlot = rand.nextInt(player.inventory.mainInventory.length); ItemStack stack = player.inventory.getStackInSlot(randSlot); - + if(rand.nextInt(100) == 0) { stack = player.inventory.armorItemInSlot(rand.nextInt(4)); } - + //only affect unstackables (e.g. tools and armor) so that the NBT tag's stack restrictions isn't noticeable if(stack != null && stack.getMaxStackSize() == 1) { - + if(contagion > 0) { - + if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); - + stack.stackTagCompound.setBoolean("ntmContagion", true); - + } else { - + if(stack.hasTagCompound() && stack.stackTagCompound.getBoolean("ntmContagion")) { if(!ArmorUtil.checkForHaz2(player) || !ArmorRegistry.hasProtection(player, 3, HazardClass.BACTERIA)) //liable to change to hazmat 1 at bob's pleasure HbmLivingProps.setContagion(player, 3 * hour); @@ -348,19 +349,19 @@ public class EntityEffectHandler { } } } - + if(contagion > 0) { HbmLivingProps.setContagion(entity, contagion - 1); - + //aerial transmission only happens once a second 5 minutes into the contagion if(contagion < (2 * hour + 55 * minute) && contagion % 20 == 0) { - + double range = entity.isWet() ? 16D : 2D; //avoid rain, just avoid it - + List list = world.getEntitiesWithinAABBExcludingEntity(entity, entity.boundingBox.expand(range, range, range)); - + for(Entity ent : list) { - + if(ent instanceof EntityLivingBase) { EntityLivingBase living = (EntityLivingBase) ent; if(HbmLivingProps.getContagion(living) <= 0) { @@ -368,39 +369,39 @@ public class EntityEffectHandler { HbmLivingProps.setContagion(living, 3 * hour); } } - + if(ent instanceof EntityItem) { ItemStack stack = ((EntityItem)ent).getEntityItem(); - + if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); - + stack.stackTagCompound.setBoolean("ntmContagion", true); } } } - + //one hour in, add rare and subtle screen fuckery if(contagion < 2 * hour && rand.nextInt(1000) == 0) { entity.addPotionEffect(new PotionEffect(Potion.confusion.id, 20, 0)); } - + //two hours in, give 'em the full blast if(contagion < 1 * hour && rand.nextInt(100) == 0) { entity.addPotionEffect(new PotionEffect(Potion.confusion.id, 60, 0)); entity.addPotionEffect(new PotionEffect(Potion.weakness.id, 300, 4)); } - + //T-30 minutes, take damage every 20 seconds if(contagion < 30 * minute && rand.nextInt(400) == 0) { entity.attackEntityFrom(ModDamageSource.mku, 1F); } - + //T-5 minutes, take damage every 5 seconds if(contagion < 5 * minute && rand.nextInt(100) == 0) { entity.attackEntityFrom(ModDamageSource.mku, 2F); } - + if(contagion < 30 * minute && (contagion + entity.getEntityId()) % 200 < 20 && canVomit(entity)) { NBTTagCompound nbt = new NBTTagCompound(); nbt.setString("type", "vomit"); @@ -408,11 +409,11 @@ public class EntityEffectHandler { nbt.setInteger("count", 25); nbt.setInteger("entity", entity.getEntityId()); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25)); - + if((contagion + entity.getEntityId()) % 200 == 19) world.playSoundEffect(entity.posX, entity.posY, entity.posZ, "hbm:player.vomit", 1.0F, 1.0F); } - + //end of contagion, drop dead if(contagion == 0) { entity.attackEntityFrom(ModDamageSource.mku, 1000F); @@ -420,20 +421,20 @@ public class EntityEffectHandler { } } } - + private static void handleLungDisease(EntityLivingBase entity) { - + if(entity.worldObj.isRemote) return; - + if(entity instanceof EntityPlayer && ((EntityPlayer) entity).capabilities.isCreativeMode) { HbmLivingProps.setBlackLung(entity, 0); HbmLivingProps.setAsbestos(entity, 0); return; } else { - + int bl = HbmLivingProps.getBlackLung(entity); - + if(bl > 0 && bl < HbmLivingProps.maxBlacklung * 0.5) HbmLivingProps.setBlackLung(entity, HbmLivingProps.getBlackLung(entity) - 1); } @@ -441,13 +442,13 @@ public class EntityEffectHandler { double blacklung = Math.min(HbmLivingProps.getBlackLung(entity), HbmLivingProps.maxBlacklung); double asbestos = Math.min(HbmLivingProps.getAsbestos(entity), HbmLivingProps.maxAsbestos); double soot = PollutionHandler.getPollution(entity.worldObj, (int) Math.floor(entity.posX), (int) Math.floor(entity.posY + entity.getEyeHeight()), (int) Math.floor(entity.posZ), PollutionType.SOOT); - + if(!(entity instanceof EntityPlayer)) soot = 0; - + if(ArmorRegistry.hasProtection(entity, 3, HazardClass.PARTICLE_COARSE)) soot = 0; - + boolean coughs = blacklung / HbmLivingProps.maxBlacklung > 0.25D || asbestos / HbmLivingProps.maxAsbestos > 0.25D || soot > 30; - + if(!coughs) return; @@ -458,25 +459,25 @@ public class EntityEffectHandler { double blacklungDelta = 1D - (blacklung / (double)HbmLivingProps.maxBlacklung); double asbestosDelta = 1D - (asbestos / (double)HbmLivingProps.maxAsbestos); double sootDelta = 1D - Math.min(soot / 100, 1D); - + double total = 1 - (blacklungDelta * asbestosDelta); - + World world = entity.worldObj; - + if(total > 0.75D) { entity.addPotionEffect(new PotionEffect(Potion.weakness.id, 100, 2)); } - + if(total > 0.95D) { entity.addPotionEffect(new PotionEffect(Potion.confusion.id, 100, 0)); } - + total = 1 - (blacklungDelta * asbestosDelta * sootDelta); int freq = Math.max((int) (1000 - 950 * total), 20); - + if(world.getTotalWorldTime() % freq == entity.getEntityId() % freq) { world.playSoundEffect(entity.posX, entity.posY, entity.posZ, "hbm:player.cough", 1.0F, 1.0F); - + if(coughsBlood) { NBTTagCompound nbt = new NBTTagCompound(); nbt.setString("type", "vomit"); @@ -485,7 +486,7 @@ public class EntityEffectHandler { nbt.setInteger("entity", entity.getEntityId()); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25)); } - + if(coughsCoal) { NBTTagCompound nbt = new NBTTagCompound(); nbt.setString("type", "vomit"); @@ -496,23 +497,23 @@ public class EntityEffectHandler { } } } - + private static void handleOil(EntityLivingBase entity) { - + if(entity.worldObj.isRemote) return; - + int oil = HbmLivingProps.getOil(entity); - + if(oil > 0) { - + if(entity.isBurning()) { HbmLivingProps.setOil(entity, 0); entity.worldObj.newExplosion(null, entity.posX, entity.posY + entity.height / 2, entity.posZ, 3F, false, true); } else { HbmLivingProps.setOil(entity, oil - 1); } - + if(entity.ticksExisted % 5 == 0) { NBTTagCompound nbt = new NBTTagCompound(); nbt.setString("type", "sweat"); @@ -523,17 +524,17 @@ public class EntityEffectHandler { } } } - + private static void handlePollution(EntityLivingBase entity) { - + if(!RadiationConfig.enablePollution) return; - + if(RadiationConfig.enablePoison && !ArmorRegistry.hasProtection(entity, 3, HazardClass.GAS_BLISTERING) && entity.ticksExisted % 60 == 0) { - + float poison = PollutionHandler.getPollution(entity.worldObj, (int) Math.floor(entity.posX), (int) Math.floor(entity.posY + entity.getEyeHeight()), (int) Math.floor(entity.posZ), PollutionType.POISON); - + if(poison > 10) { - + if(poison < 25) { entity.addPotionEffect(new PotionEffect(Potion.poison.id, 100, 0)); } else if(poison < 50) { @@ -543,13 +544,13 @@ public class EntityEffectHandler { } } } - + if(RadiationConfig.enableLeadPoisoning && !ArmorRegistry.hasProtection(entity, 3, HazardClass.PARTICLE_FINE) && entity.ticksExisted % 60 == 0) { - + float poison = PollutionHandler.getPollution(entity.worldObj, (int) Math.floor(entity.posX), (int) Math.floor(entity.posY + entity.getEyeHeight()), (int) Math.floor(entity.posZ), PollutionType.HEAVYMETAL); - + if(poison > 25) { - + if(poison < 50) { entity.addPotionEffect(new PotionEffect(HbmPotion.lead.id, 100, 0)); } else if(poison < 75) { @@ -560,76 +561,86 @@ public class EntityEffectHandler { } } } - + private static void handleTemperature(Entity entity) { - + if(!(entity instanceof EntityLivingBase)) return; if(entity.worldObj.isRemote) return; - - EntityLivingBase living = (EntityLivingBase) entity; - int temp = HbmLivingProps.getTemperature(living); - if(temp < 0) HbmLivingProps.setTemperature(living, temp + Math.min(-temp, 5)); - if(temp > 0) HbmLivingProps.setTemperature(living, temp - Math.min(temp, 5)); - - if(HbmLivingProps.isFrozen(living)) { - living.motionX = 0; - living.motionZ = 0; - living.motionY = Math.min(living.motionY, 0); - - if(entity.ticksExisted % 5 == 0) { - NBTTagCompound nbt0 = new NBTTagCompound(); - nbt0.setString("type", "sweat"); - nbt0.setInteger("count", 1); - nbt0.setInteger("block", Block.getIdFromBlock(Blocks.snow)); - nbt0.setInteger("entity", entity.getEntityId()); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt0, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25)); - - if(entity instanceof EntityPlayerMP) { - NBTTagCompound nbt1 = new NBTTagCompound(); - nbt1.setString("type", "frozen"); - PacketDispatcher.wrapper.sendTo(new AuxParticlePacketNT(nbt1, 0, 0, 0), (EntityPlayerMP) entity); - } - } + EntityLivingBase living = (EntityLivingBase) entity; + HbmLivingProps props = HbmLivingProps.getData(living); + Random rand = living.getRNG(); + + if(!entity.isEntityAlive()) return; + + if(living.isImmuneToFire()) { + props.fire = 0; + props.phosphorus = 0; } - - if(HbmLivingProps.isBurning(living)) { - living.setFire(1); + + double x = living.posX; + double y = living.posY; + double z = living.posZ; + + if(living.isInWater() || living.isWet()) props.fire = 0; + + if(props.fire > 0) { + props.fire--; + if((living.ticksExisted + living.getEntityId()) % 15 == 0) living.worldObj.playSoundEffect(living.posX, living.posY + living.height / 2, living.posZ, "random.fizz", 1F, 1.5F + rand.nextFloat() * 0.5F); + if((living.ticksExisted + living.getEntityId()) % 40 == 0) living.attackEntityFrom(DamageSource.onFire, 2F); + FlameCreator.composeEffect(entity.worldObj, x - living.width / 2 + living.width * rand.nextDouble(), y + rand.nextDouble() * living.height, z - living.width / 2 + living.width * rand.nextDouble(), FlameCreator.META_FIRE); } + + if(props.phosphorus > 0) { + props.phosphorus--; + if((living.ticksExisted + living.getEntityId()) % 15 == 0) living.worldObj.playSoundEffect(living.posX, living.posY + living.height / 2, living.posZ, "random.fizz", 1F, 1.5F + rand.nextFloat() * 0.5F); + if((living.ticksExisted + living.getEntityId()) % 40 == 0) living.attackEntityFrom(DamageSource.onFire, 5F); + FlameCreator.composeEffect(entity.worldObj, x - living.width / 2 + living.width * rand.nextDouble(), y + rand.nextDouble() * living.height, z - living.width / 2 + living.width * rand.nextDouble(), FlameCreator.META_FIRE); + } + + if(props.balefire > 0) { + props.balefire--; + if((living.ticksExisted + living.getEntityId()) % 15 == 0) living.worldObj.playSoundEffect(living.posX, living.posY + living.height / 2, living.posZ, "random.fizz", 1F, 1.5F + rand.nextFloat() * 0.5F); + ContaminationUtil.contaminate(living, HazardType.RADIATION, ContaminationType.CREATIVE, 5F); + if((living.ticksExisted + living.getEntityId()) % 20 == 0) living.attackEntityFrom(DamageSource.onFire, 5F); + FlameCreator.composeEffect(entity.worldObj, x - living.width / 2 + living.width * rand.nextDouble(), y + rand.nextDouble() * living.height, z - living.width / 2 + living.width * rand.nextDouble(), FlameCreator.META_BALEFIRE); + } + + if(props.fire > 0 || props.phosphorus > 0 || props.balefire > 0) if(!entity.isEntityAlive()) ConfettiUtil.decideConfetti(living, DamageSource.onFire); } - + private static void handleDashing(Entity entity) { - + //AAAAAAAAAAAAAAAAAAAAEEEEEEEEEEEEEEEEEEEE if(entity instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)entity; - + HbmPlayerProps props = HbmPlayerProps.getData(player); - + props.setDashCount(0); - + ArmorFSB chestplate = null; - + int armorDashCount = 0; int armorModDashCount = 0; - + if(ArmorFSB.hasFSBArmor(player)) { - ItemStack plate = player.inventory.armorInventory[2]; - + ItemStack plate = player.inventory.armorInventory[2]; + chestplate = (ArmorFSB)plate.getItem(); } - + if(chestplate != null) armorDashCount = chestplate.dashCount; - + for(int armorSlot = 0; armorSlot < 4; armorSlot++) { ItemStack armorStack = player.inventory.armorInventory[armorSlot]; - + if(armorStack != null && armorStack.getItem() instanceof ItemArmor) { - + for(int modSlot = 0; modSlot < 8; modSlot++) { ItemStack mod = ArmorModHandler.pryMods(armorStack)[modSlot]; - + if(mod != null && mod.getItem() instanceof IArmorModDash) { int count = ((IArmorModDash)mod.getItem()).getDashes(); armorModDashCount += count; @@ -637,24 +648,24 @@ public class EntityEffectHandler { } } } - + int dashCount = armorDashCount + armorModDashCount; - + boolean dashActivated = props.getKeyPressed(EnumKeybind.DASH); - + if(dashCount * 30 < props.getStamina()) props.setStamina(dashCount * 30); - + if(dashCount > 0) { int perDash = 30; - + props.setDashCount(dashCount); - + int stamina = props.getStamina(); - + if(props.getDashCooldown() <= 0) { - + if(dashActivated && stamina >= perDash) { Vec3 lookingIn = player.getLookVec(); @@ -663,7 +674,7 @@ public class EntityEffectHandler { int forward = (int) Math.signum(player.moveForward); int strafe = (int) Math.signum(player.moveStrafing); - + if(forward == 0 && strafe == 0) forward = 1; @@ -671,42 +682,42 @@ public class EntityEffectHandler { player.motionY = 0; player.fallDistance = 0F; player.playSound("hbm:weapon.rocketFlame", 1.0F, 1.0F); - + props.setDashCooldown(HbmPlayerProps.dashCooldownLength); stamina -= perDash; } - } else { + } else { props.setDashCooldown(props.getDashCooldown() - 1); props.setKeyPressed(EnumKeybind.DASH, false); } - + if(stamina < props.getDashCount() * perDash) { stamina++; - + if(stamina % perDash == perDash-1) { - + player.playSound("hbm:item.techBoop", 1.0F, (1.0F + ((1F/12F)*(stamina/perDash)))); stamina++; } } - + props.setStamina(stamina); - } - + } + } } - + private static void handlePlinking(Entity entity) { - + if(entity instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)entity; HbmPlayerProps props = HbmPlayerProps.getData(player); - + if(props.plinkCooldown > 0) props.plinkCooldown--; } } - + private static boolean canVomit(Entity e) { if(e.isCreatureType(EnumCreatureType.waterCreature, false)) return false; return true; diff --git a/src/main/java/com/hbm/handler/GunConfiguration.java b/src/main/java/com/hbm/handler/GunConfiguration.java index 3fe99df52..974322d00 100644 --- a/src/main/java/com/hbm/handler/GunConfiguration.java +++ b/src/main/java/com/hbm/handler/GunConfiguration.java @@ -5,10 +5,10 @@ import java.util.HashMap; import java.util.List; import java.util.function.Consumer; +import com.hbm.items.weapon.sedna.Crosshair; import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.HbmAnimations.AnimType; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; import net.minecraft.util.ResourceLocation; diff --git a/src/main/java/com/hbm/handler/HbmKeybinds.java b/src/main/java/com/hbm/handler/HbmKeybinds.java index 6ae2507e1..30ed60a37 100644 --- a/src/main/java/com/hbm/handler/HbmKeybinds.java +++ b/src/main/java/com/hbm/handler/HbmKeybinds.java @@ -1,17 +1,19 @@ package com.hbm.handler; import com.hbm.inventory.gui.GUICalculator; + import cpw.mods.fml.common.FMLCommonHandler; import org.lwjgl.input.Keyboard; import com.hbm.extprop.HbmPlayerProps; import com.hbm.main.MainRegistry; -import com.hbm.packet.KeybindPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.KeybindPacket; import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.InputEvent.KeyInputEvent; +import cpw.mods.fml.common.gameevent.InputEvent.MouseInputEvent; import net.minecraft.client.settings.KeyBinding; public class HbmKeybinds { @@ -21,9 +23,16 @@ public class HbmKeybinds { public static KeyBinding calculatorKey = new KeyBinding(category + ".calculator", Keyboard.KEY_N, category); public static KeyBinding jetpackKey = new KeyBinding(category + ".toggleBack", Keyboard.KEY_C, category); public static KeyBinding hudKey = new KeyBinding(category + ".toggleHUD", Keyboard.KEY_V, category); - public static KeyBinding reloadKey = new KeyBinding(category + ".reload", Keyboard.KEY_R, category); public static KeyBinding dashKey = new KeyBinding(category + ".dash", Keyboard.KEY_LSHIFT, category); public static KeyBinding trainKey = new KeyBinding(category + ".trainInv", Keyboard.KEY_R, category); + + public static KeyBinding copyToolAlt = new KeyBinding(category + ".copyToolAlt", Keyboard.KEY_LMENU, category); + public static KeyBinding copyToolCtrl = new KeyBinding(category + ".copyToolCtrl", Keyboard.KEY_LCONTROL, category); + + public static KeyBinding reloadKey = new KeyBinding(category + ".reload", Keyboard.KEY_R, category); + public static KeyBinding gunPrimaryKey = new KeyBinding(category + ".gunPrimary", -100, category); + public static KeyBinding gunSecondaryKey = new KeyBinding(category + ".gunSecondary", -99, category); + public static KeyBinding gunTertiaryKey = new KeyBinding(category + ".gunTertitary", -98, category); public static KeyBinding craneUpKey = new KeyBinding(category + ".craneMoveUp", Keyboard.KEY_UP, category); public static KeyBinding craneDownKey = new KeyBinding(category + ".craneMoveDown", Keyboard.KEY_DOWN, category); @@ -35,15 +44,36 @@ public class HbmKeybinds { ClientRegistry.registerKeyBinding(calculatorKey); ClientRegistry.registerKeyBinding(jetpackKey); ClientRegistry.registerKeyBinding(hudKey); - ClientRegistry.registerKeyBinding(reloadKey); ClientRegistry.registerKeyBinding(dashKey); ClientRegistry.registerKeyBinding(trainKey); + ClientRegistry.registerKeyBinding(reloadKey); + ClientRegistry.registerKeyBinding(gunPrimaryKey); + ClientRegistry.registerKeyBinding(gunSecondaryKey); + ClientRegistry.registerKeyBinding(gunTertiaryKey); + ClientRegistry.registerKeyBinding(craneUpKey); ClientRegistry.registerKeyBinding(craneDownKey); ClientRegistry.registerKeyBinding(craneLeftKey); ClientRegistry.registerKeyBinding(craneRightKey); ClientRegistry.registerKeyBinding(craneLoadKey); + ClientRegistry.registerKeyBinding(copyToolAlt); + ClientRegistry.registerKeyBinding(copyToolCtrl); + } + + @SubscribeEvent + public void mouseEvent(MouseInputEvent event) { + HbmPlayerProps props = HbmPlayerProps.getData(MainRegistry.proxy.me()); + + for(EnumKeybind key : EnumKeybind.values()) { + boolean last = props.getKeyPressed(key); + boolean current = MainRegistry.proxy.getIsKeyPressed(key); + + if(last != current) { + PacketDispatcher.wrapper.sendToServer(new KeybindPacket(key, current)); + props.setKeyPressed(key, current); + } + } } @SubscribeEvent @@ -69,13 +99,18 @@ public class HbmKeybinds { JETPACK, TOGGLE_JETPACK, TOGGLE_HEAD, - RELOAD, DASH, TRAIN, CRANE_UP, CRANE_DOWN, CRANE_LEFT, CRANE_RIGHT, - CRANE_LOAD + CRANE_LOAD, + TOOL_ALT, + TOOL_CTRL, + GUN_PRIMARY, + GUN_SECONDARY, + GUN_TERTIARY, + RELOAD } } diff --git a/src/main/java/com/hbm/handler/HbmKeybindsServer.java b/src/main/java/com/hbm/handler/HbmKeybindsServer.java new file mode 100644 index 000000000..a8f5a99d6 --- /dev/null +++ b/src/main/java/com/hbm/handler/HbmKeybindsServer.java @@ -0,0 +1,26 @@ +package com.hbm.handler; + +import com.hbm.extprop.HbmPlayerProps; +import com.hbm.handler.HbmKeybinds.EnumKeybind; +import com.hbm.items.IKeybindReceiver; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +public class HbmKeybindsServer { + + /** Can't put this in HbmKeybinds because it's littered with clientonly stuff */ + public static void onPressedServer(EntityPlayer player, EnumKeybind key, boolean state) { + + // EXTPROP HANDLING + HbmPlayerProps props = HbmPlayerProps.getData(player); + props.setKeyPressed(key, state); + + // ITEM HANDLING + ItemStack held = player.getHeldItem(); + if(held != null && held.getItem() instanceof IKeybindReceiver) { + IKeybindReceiver rec = (IKeybindReceiver) held.getItem(); + if(rec.canHandleKeybind(player, held, key)) rec.handleKeybind(player, held, key, state); + } + } +} diff --git a/src/main/java/com/hbm/handler/ImpactWorldHandler.java b/src/main/java/com/hbm/handler/ImpactWorldHandler.java index fc528fc6d..365f17cd4 100644 --- a/src/main/java/com/hbm/handler/ImpactWorldHandler.java +++ b/src/main/java/com/hbm/handler/ImpactWorldHandler.java @@ -31,28 +31,32 @@ public class ImpactWorldHandler { return; } + TomSaveData data = TomSaveData.forWorld(world); + + if (data.dust <= 0 && data.fire <= 0) + return; + WorldServer serv = (WorldServer) world; List list = serv.theChunkProviderServer.loadedChunks; int listSize = list.size(); - + if(listSize > 0) { for(int i = 0; i < 3; i++) { - + Chunk chunk = list.get(serv.rand.nextInt(listSize)); ChunkCoordIntPair coord = chunk.getChunkCoordIntPair(); - + for(int x = 0; x < 16; x++) { for(int z = 0; z < 16; z++) { - + if(world.rand.nextBoolean()) continue; - + int X = coord.getCenterXPos() - 8 + x; int Z = coord.getCenterZPosition() - 8 + z; int Y = world.getHeightValue(X, Z) - world.rand.nextInt(Math.max(1, world.getHeightValue(X, Z))); - TomSaveData data = TomSaveData.forWorld(world); - + if(data.dust > 0) { die(world, X, Y, Z); } @@ -70,7 +74,7 @@ public class ImpactWorldHandler { TomSaveData data = TomSaveData.forWorld(world); int light = Math.max(world.getSavedLightValue(EnumSkyBlock.Block, x, y + 1, z), (int) (world.getBlockLightValue(x, y + 1, z) * (1 - data.dust))); - + if(light < 4) { if(world.getBlock(x, y, z) == Blocks.grass) { world.setBlock(x, y, z, Blocks.dirt); @@ -86,18 +90,18 @@ public class ImpactWorldHandler { /// Burn the world. public static void burn(World world, int x, int y, int z) { - + Block b = world.getBlock(x, y, z); if(b.isFlammable(world, x, y, z, ForgeDirection.UP) && world.getBlock(x, y + 1, z) == Blocks.air && world.getSavedLightValue(EnumSkyBlock.Sky, x, y + 1, z) >= 7) { if(b instanceof BlockLeaves || b instanceof BlockBush) { world.setBlockToAir(x, y, z); } world.setBlock(x, y + 1, z, Blocks.fire); - + } else if((b == Blocks.grass || b == Blocks.mycelium || b == ModBlocks.waste_earth || b == ModBlocks.frozen_grass || b == ModBlocks.waste_mycelium) && !world.canLightningStrikeAt(x, y, z) && world.getSavedLightValue(EnumSkyBlock.Sky, x, y + 1, z) >= 7) { world.setBlock(x, y, z, ModBlocks.burning_earth); - + } else if(b == ModBlocks.frozen_dirt && world.getSavedLightValue(EnumSkyBlock.Sky, x, y + 1, z) >= 7) { world.setBlock(x, y, z, Blocks.dirt); } @@ -125,4 +129,4 @@ public class ImpactWorldHandler { if(world != lastSyncWorld) return false; return impact; } -} \ No newline at end of file +} diff --git a/src/main/java/com/hbm/handler/WeaponAbility.java b/src/main/java/com/hbm/handler/WeaponAbility.java index 11e2621b3..c4f953993 100644 --- a/src/main/java/com/hbm/handler/WeaponAbility.java +++ b/src/main/java/com/hbm/handler/WeaponAbility.java @@ -4,8 +4,8 @@ import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockBobble.BobbleType; import com.hbm.items.ModItems; import com.hbm.items.tool.IItemAbility; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.potion.HbmPotion; import com.hbm.util.ContaminationUtil; @@ -82,7 +82,7 @@ public abstract class WeaponAbility { if(victim instanceof EntityLivingBase) { EntityLivingBase living = (EntityLivingBase) victim; - + if(living.getHealth() <= 0) return; living.setHealth(living.getHealth() - amount); if(living.getHealth() <= 0) living.onDeath(DamageSource.magic); player.heal(amount); diff --git a/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java b/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java index 5dac19082..b20f47490 100644 --- a/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java @@ -1,21 +1,15 @@ package com.hbm.handler.guncfg; import java.util.List; -import java.util.Random; -import com.hbm.entity.particle.EntityBSmokeFX; import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.entity.projectile.EntityBulletBaseNT.*; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.explosion.ExplosionNukeSmall.MukeParams; -import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ItemAmmoEnums.*; -import com.hbm.items.ModItems; import com.hbm.lib.Library; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.potion.HbmPotion; import com.hbm.util.ArmorRegistry; import com.hbm.util.ArmorRegistry.HazardClass; @@ -34,36 +28,6 @@ import net.minecraft.util.Vec3; public class BulletConfigFactory { - /// configs should never be loaded manually due to syncing issues: use the syncing util and pass the UID in the DW of the bullet to make the client load the config correctly //// - - public static BulletConfiguration getTestConfig() { - - BulletConfiguration bullet = new BulletConfiguration(); - - bullet.ammo = new ComparableStack(ModItems.ammo_357.stackFromEnum(Ammo357Magnum.LEAD)); - bullet.velocity = 5.0F; - bullet.spread = 0.05F; - bullet.wear = 10; - bullet.dmgMin = 15; - bullet.dmgMax = 17; - bullet.bulletsMin = 1; - bullet.bulletsMax = 1; - bullet.gravity = 0D; - bullet.maxAge = 100; - bullet.doesRicochet = true; - bullet.ricochetAngle = 10; - bullet.HBRC = 2; - bullet.LBRC = 90; - bullet.bounceMod = 0.8; - bullet.doesPenetrate = true; - bullet.doesBreakGlass = true; - bullet.style = 0; - bullet.plink = 1; - - return bullet; - - } - public static final float defaultSpread = 0.005F; /// STANDARD CONFIGS /// @@ -125,62 +89,6 @@ public class BulletConfigFactory { return bullet; } - public static BulletConfiguration standardAirstrikeConfig() { - - BulletConfiguration bullet = new BulletConfiguration(); - - bullet.velocity = 5.0F; - bullet.spread = 0.0F; - bullet.wear = 50; - bullet.bulletsMin = 1; - bullet.bulletsMax = 1; - bullet.gravity = 0D; - bullet.maxAge = 100; - bullet.doesRicochet = false; - bullet.doesPenetrate = false; - bullet.doesBreakGlass = false; - bullet.style = BulletConfiguration.STYLE_BOLT; - bullet.leadChance = 0; - bullet.vPFX = "reddust"; - - bullet.bntImpact = new IBulletImpactBehaviorNT() { - - @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { - - if(bullet.worldObj.isRemote) - return; - - Random rand = bullet.worldObj.rand; - int count = rand.nextInt(11) + 95; - - for(int i = 0; i < count; i++) { - - double dx = bullet.posX + rand.nextGaussian() * 4; - double dy = bullet.posY + 25 + rand.nextGaussian() * 5; - double dz = bullet.posZ + rand.nextGaussian() * 4; - - Vec3 motion = Vec3.createVectorHelper(bullet.posX - dx, bullet.posY - dy, bullet.posZ - dz); - motion = motion.normalize(); - - EntityBulletBaseNT bolt = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.R556_FLECHETTE_DU); - bolt.setPosition(dx, dy, dz); - bolt.setThrowableHeading(motion.xCoord, motion.yCoord, motion.zCoord, 0.5F, 0.1F); - bolt.setThrower(bullet.getThrower()); - bullet.worldObj.spawnEntityInWorld(bolt); - - if(i < 30) { - EntityBSmokeFX bsmoke = new EntityBSmokeFX(bullet.worldObj); - bsmoke.setPosition(dx, dy, dz); - bullet.worldObj.spawnEntityInWorld(bsmoke); - } - } - } - }; - - return bullet; - } - public static BulletConfiguration standardRocketConfig() { BulletConfiguration bullet = new BulletConfiguration(); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java deleted file mode 100644 index 0bb1f6103..000000000 --- a/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java +++ /dev/null @@ -1,403 +0,0 @@ -package com.hbm.handler.guncfg; - -import java.util.List; - -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.CasingEjector; -import com.hbm.handler.GunConfiguration; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ItemAmmoEnums.Ammo12Gauge; -import com.hbm.items.ModItems; -import com.hbm.lib.HbmCollection; -import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.main.ResourceManager; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.PacketDispatcher; -import com.hbm.particle.SpentCasing; -import com.hbm.particle.SpentCasing.CasingType; -import com.hbm.potion.HbmPotion; -import com.hbm.render.anim.BusAnimation; -import com.hbm.render.anim.BusAnimationSequence; -import com.hbm.render.anim.HbmAnimations.AnimType; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.DamageSource; -import net.minecraft.util.Vec3; - -public class Gun12GaugeFactory { - - private static final CasingEjector EJECTOR_SPAS, EJECTOR_SPAS_ALT, EJECTOR_BENELLI, EJECTOR_UBOINIK, EJECTOR_SSG; - private static final SpentCasing CASING12GAUGE; - - static { - EJECTOR_SPAS = new CasingEjector().setMotion(-0.4, 0.1, 0).setOffset(-0.35, 0, 0.5).setAngleRange(0.01F, 0.03F).setDelay(12); - EJECTOR_SPAS_ALT = new CasingEjector().setMotion(-0.4, 0.1, 0).setOffset(-0.35, 0, 0.5).setAngleRange(0.01F, 0.03F).setDelay(12).setAmount(2); - EJECTOR_BENELLI = new CasingEjector().setMotion(-0.4, 0.3, 0).setOffset(-0.3, 0, 0.5).setAngleRange(0.01F, 0.03F); - EJECTOR_UBOINIK = new CasingEjector().setMotion(-0.4, 0.1, 0).setOffset(-0.35, -0.3, 0.5).setAngleRange(0.01F, 0.03F); - EJECTOR_SSG = new CasingEjector().setMotion(0.2, 0, -0.2).setOffset(0.8, 0, 0).setAngleRange(0.05F, 0.02F).setDelay(20).setAmount(2); - - CASING12GAUGE = new SpentCasing(CasingType.SHOTGUN).setScale(1.5F).setBounceMotion(0.05F, 0.02F).setupSmoke(0.5F, 0.5D, 60, 20); - } - - public static GunConfiguration getRemington870Config() { - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 25; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.reloadDuration = 10; - config.firingDuration = 5; - config.ammoCap = 5; - config.durability = 1000; - config.reloadType = GunConfiguration.RELOAD_SINGLE; - config.allowsInfinity = true; - config.crosshair = Crosshair.CIRCLE; - config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; - config.firingSound = "hbm:weapon.shotgunPump"; - - config.name = "remington870"; - config.manufacturer = EnumGunManufacturer.REMINGTON; - - config.config = HbmCollection.g12hs; - - config.animations.put(AnimType.CYCLE, new BusAnimation() - .addBus("RECOIL_TRANSLATE", new BusAnimationSequence() - .addKeyframePosition(0, 0, -2, 100) - .addKeyframePosition(0, 0, 0, 200) - ) - .addBus("PUMP", new BusAnimationSequence() - .addKeyframePosition(0, 0, 0, 450) - .addKeyframePosition(0, 0, -1.8, 200) - .addKeyframePosition(0, 0, 0, 200) - ) - ); - - config.ejector = EJECTOR_SPAS; - return config; - } - - public static GunConfiguration getSpas12Config() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 20; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.reloadDuration = 10; - config.emptyReloadAdditionalDuration = 5; - config.firingDuration = 5; - config.ammoCap = 8; - config.durability = 2500; - config.reloadType = GunConfiguration.RELOAD_SINGLE; - config.allowsInfinity = true; - config.crosshair = Crosshair.CIRCLE; - config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; - config.reloadSoundEnd = false; - config.firingSound = "hbm:weapon.shotgunPump"; - - config.name = "spas12"; - config.manufacturer = EnumGunManufacturer.BLACK_MESA; - config.comment.add("\"Here, I have a more suitable gun for you. You'll need it - Catch!\""); - config.comment.add("Alt-fire with Mouse 2 (Right-click) to fire 2 shells at once"); - - config.config = HbmCollection.g12hs; - - config.reloadAnimationsSequential = true; - - config.loadAnimations = i -> { - config.animations.put(AnimType.CYCLE, ResourceManager.spas_12_anim.get("Fire")); - config.animations.put(AnimType.ALT_CYCLE, ResourceManager.spas_12_anim.get("FireAlt")); - config.animations.put(AnimType.RELOAD, ResourceManager.spas_12_anim.get("ReloadStart")); - config.animations.put(AnimType.RELOAD_EMPTY, ResourceManager.spas_12_anim.get("ReloadEmptyStart")); - config.animations.put(AnimType.RELOAD_CYCLE, ResourceManager.spas_12_anim.get("Reload")); - config.animations.put(AnimType.RELOAD_END, ResourceManager.spas_12_anim.get("ReloadEnd")); - }; - - config.ejector = EJECTOR_SPAS; - - return config; - } - - public static GunConfiguration getSpas12AltConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 35; - config.roundsPerCycle = 2; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.firingDuration = 10; - config.ammoCap = 8; - config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; - config.firingSound = "hbm:weapon.shotgunPumpAlt"; - config.reloadType = GunConfiguration.RELOAD_SINGLE; - - config.config = HbmCollection.g12hs; - - config.ejector = EJECTOR_SPAS_ALT; - - return config; - } - - public static GunConfiguration getUboinikConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 8; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.reloadDuration = 10; - config.firingDuration = 0; - config.ammoCap = 6; - config.durability = 1500; - config.reloadType = GunConfiguration.RELOAD_SINGLE; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_CIRCLE; - config.reloadSound = GunConfiguration.RSOUND_REVOLVER; - config.firingSound = "hbm:weapon.shotgunShoot"; - - config.name = "uboinik"; - config.manufacturer = EnumGunManufacturer.METRO; - - config.config = HbmCollection.g12hs; - - config.ejector = EJECTOR_UBOINIK; - - return config; - } - - public static GunConfiguration getShottyConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 30; - config.roundsPerCycle = 2; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.reloadDuration = 10; - config.firingDuration = 0; - config.ammoCap = 0; - config.durability = 3000; - config.reloadType = GunConfiguration.RELOAD_NONE; - config.allowsInfinity = true; - config.isCentered = true; - config.crosshair = Crosshair.L_CIRCLE; - config.reloadSound = GunConfiguration.RSOUND_REVOLVER; - config.firingSound = "hbm:weapon.shottyShoot"; - - config.loadAnimations = i -> { - config.animations.put(AnimType.CYCLE, ResourceManager.supershotty_anim.get("Fire")); - }; - - config.name = "supershotty"; - config.manufacturer = EnumGunManufacturer.UAC; - config.comment.add("God-damned ARCH-VILES!"); - - config.config = HbmCollection.g12hs; - - config.ejector = EJECTOR_SSG; - - return config; - } - - public static GunConfiguration getBenelliConfig() { - - GunConfiguration config = getUboinikConfig(); - - config.gunMode = 0; - config.firingMode = 1; - config.rateOfFire = 5; - config.ammoCap = 8; - config.reloadDuration = 8; - config.crosshair = Crosshair.CIRCLE; - config.hasSights = true; - config.durability = 250000; - config.allowsInfinity = true; - config.firingSound = "hbm:weapon.deagleShoot"; - config.firingPitch = 0.75F; - config.reloadType = 2; - - config.name = "benelli"; - config.manufacturer = EnumGunManufacturer.BENELLI; - config.comment.add("Eat your heart out SPAS-12"); - config.config = HbmCollection.g12; - - config.ejector = EJECTOR_BENELLI; - - return config; - } - - public static GunConfiguration getBenelliModConfig() { - - GunConfiguration config = getBenelliConfig(); - - config.reloadType = 1; - config.ammoCap = 24; - config.reloadDuration = 21; - config.emptyReloadAdditionalDuration = 15; - config.reloadSound = GunConfiguration.RSOUND_MAG; - config.reloadSoundEmpty = GunConfiguration.RSOUND_MAG_BOLT; - config.reloadSoundEnd = false; - config.name += "Drum"; - - config.loadAnimations = i -> { - config.animations.put(AnimType.CYCLE, ResourceManager.benelli_anim.get("Fire")); - config.animations.put(AnimType.RELOAD, ResourceManager.benelli_anim.get("Reload")); - config.animations.put(AnimType.RELOAD_EMPTY, ResourceManager.benelli_anim.get("ReloadEmpty")); - }; - - return config; - } - - public static BulletConfiguration get12GaugeConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_12gauge.stackFromEnum(Ammo12Gauge.STOCK)); - bullet.dmgMin = 5; - bullet.dmgMax = 7; - - bullet.spentCasing = CASING12GAUGE.clone().register("12GaStock").setColor(0x2847FF, SpentCasing.COLOR_CASE_12GA); - - return bullet; - } - - public static BulletConfiguration get12GaugeFireConfig() { - - BulletConfiguration bullet = get12GaugeConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_12gauge.stackFromEnum(Ammo12Gauge.INCENDIARY)); - bullet.wear = 15; - bullet.dmgMin = 5; - bullet.dmgMax = 7; - bullet.incendiary = 5; - - bullet.spentCasing = CASING12GAUGE.clone().register("12GaInc").setColor(0xFF6329, SpentCasing.COLOR_CASE_12GA).setupSmoke(1F, 0.5D, 60, 40); - - return bullet; - } - - public static BulletConfiguration get12GaugeShrapnelConfig() { - - BulletConfiguration bullet = get12GaugeConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_12gauge.stackFromEnum(Ammo12Gauge.SHRAPNEL)); - bullet.wear = 15; - bullet.dmgMin = 10; - bullet.dmgMax = 17; - bullet.ricochetAngle = 15; - bullet.HBRC = 80; - bullet.LBRC = 95; - - bullet.spentCasing = CASING12GAUGE.clone().register("12GaShrap").setColor(0xF0E800, SpentCasing.COLOR_CASE_12GA); - - return bullet; - } - - public static BulletConfiguration get12GaugeDUConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_12gauge.stackFromEnum(Ammo12Gauge.DU)); - bullet.wear = 20; - bullet.dmgMin = 18; - bullet.dmgMax = 22; - bullet.doesPenetrate = true; - bullet.leadChance = 50; - - bullet.spentCasing = CASING12GAUGE.clone().register("12GaDU").setColor(0x62A362, SpentCasing.COLOR_CASE_12GA); - - return bullet; - } - - public static BulletConfiguration get12GaugeAMConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_12gauge.stackFromEnum(Ammo12Gauge.MARAUDER)); - bullet.wear = 20; - bullet.dmgMin = 100; - bullet.dmgMax = 500; - bullet.leadChance = 50; - - bullet.bntHurt = (bulletnt, hit) -> { - - if(hit instanceof EntityLivingBase) - ((EntityLivingBase)hit).addPotionEffect(new PotionEffect(HbmPotion.bang.id, 20, 0)); - - }; - - bullet.spentCasing = CASING12GAUGE.clone().register("12GaAM").setColor(0x416645, SpentCasing.COLOR_CASE_12GA); - - return bullet; - } - - public static BulletConfiguration get12GaugeSleekConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardAirstrikeConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_12gauge.stackFromEnum(Ammo12Gauge.SLEEK)); - - bullet.spentCasing = CASING12GAUGE.clone().register("12GaIF").setColor(0x2A2A2A, SpentCasing.COLOR_CASE_12GA); - - return bullet; - } - - public static BulletConfiguration get12GaugePercussionConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_12gauge.stackFromEnum(Ammo12Gauge.PERCUSSION)); - bullet.velocity = 2F; - bullet.spread = 0F; - bullet.wear = 10; - bullet.dmgMin = 30F; - bullet.dmgMax = 30F; - bullet.maxAge = 0; - - bullet.spentCasing = CASING12GAUGE.clone().register("12GaPerc").setColor(0x9E1616, SpentCasing.COLOR_CASE_12GA).setupSmoke(1F, 0.5D, 60, 40); - - bullet.bntUpdate = (bulletnt) -> { - - if(!bulletnt.worldObj.isRemote) { - - Vec3 vec = Vec3.createVectorHelper(bulletnt.motionX, bulletnt.motionY, bulletnt.motionZ); - double radius = 4; - double x = bulletnt.posX + vec.xCoord; - double y = bulletnt.posY + vec.yCoord; - double z = bulletnt.posZ + vec.zCoord; - AxisAlignedBB aabb = AxisAlignedBB.getBoundingBox(x, y, z, x, y, z).expand(radius, radius, radius); - List list = bulletnt.worldObj.getEntitiesWithinAABBExcludingEntity(bulletnt.getThrower(), aabb); - - for(Entity e : list) { - DamageSource source = bulletnt.getThrower() instanceof EntityPlayer ? DamageSource.causePlayerDamage((EntityPlayer) bulletnt.getThrower()) : DamageSource.magic; - e.attackEntityFrom(source, 30F); - } - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "plasmablast"); - data.setFloat("r", 0.75F); - data.setFloat("g", 0.75F); - data.setFloat("b", 0.75F); - data.setFloat("pitch", (float) -bulletnt.rotationPitch + 90); - data.setFloat("yaw", (float) bulletnt.rotationYaw); - data.setFloat("scale", 2F); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(bulletnt.dimension, x, y, z, 100)); - - bulletnt.setDead(); - } - }; - - return bullet; - } -} diff --git a/src/main/java/com/hbm/handler/guncfg/Gun20GaugeFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun20GaugeFactory.java deleted file mode 100644 index 2bf40a528..000000000 --- a/src/main/java/com/hbm/handler/guncfg/Gun20GaugeFactory.java +++ /dev/null @@ -1,273 +0,0 @@ -package com.hbm.handler.guncfg; - -import java.util.ArrayList; - -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.CasingEjector; -import com.hbm.handler.GunConfiguration; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ModItems; -import com.hbm.items.ItemAmmoEnums.Ammo20Gauge; -import com.hbm.lib.HbmCollection; -import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.particle.SpentCasing; -import com.hbm.particle.SpentCasing.CasingType; -import com.hbm.render.anim.BusAnimation; -import com.hbm.render.anim.BusAnimationSequence; -import com.hbm.render.anim.HbmAnimations.AnimType; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.Vec3; - -public class Gun20GaugeFactory { - - private static final CasingEjector EJECTOR_SHOTGUN; - private static final SpentCasing CASING20GAUGE; - - static { - EJECTOR_SHOTGUN = new CasingEjector().setMotion(Vec3.createVectorHelper(-0.4, 0.95, 0)).setOffset(Vec3.createVectorHelper(-0.55, 0, 0.5)).setAngleRange(0.01F, 0.05F); - CASING20GAUGE = new SpentCasing(CasingType.SHOTGUN).setScale(1.25F).setBounceMotion(0.01F, 0.05F).setupSmoke(0.25F, 0.5D, 60, 20); - } - - public static GunConfiguration getShotgunConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 25; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.reloadDuration = 10; - config.firingDuration = 0; - config.ammoCap = 6; - config.reloadType = GunConfiguration.RELOAD_SINGLE; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_CIRCLE; - config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; - - config.animations.put(AnimType.CYCLE, new BusAnimation() - .addBus("LEVER_ROTATE", new BusAnimationSequence() - .addKeyframePosition(0, 0, 0, 250) - .addKeyframePosition(0, 0, 45, 500) - .addKeyframePosition(0, 0, 0, 500) - ) - .addBus("LEVER_RECOIL", new BusAnimationSequence() - .addKeyframePosition(0.5, 0, 0, 50) - .addKeyframePosition(0, 0, 0, 50) - .addKeyframePosition(0, 0, 0, 150) - .addKeyframePosition(0, -0.5, 0, 500) - .addKeyframePosition(0, 0, 0, 500) - ) - ); - - config.config = HbmCollection.g20; - - config.ejector = EJECTOR_SHOTGUN; - - return config; - } - - public static GunConfiguration getMareConfig() { - - GunConfiguration config = getShotgunConfig(); - - config.durability = 2000; - config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; - config.firingSound = "hbm:weapon.revolverShootAlt"; - config.firingPitch = 0.75F; - config.hasSights = true; - config.zoomFOV = 0.75F; - - config.name = "win1887"; - config.manufacturer = EnumGunManufacturer.WINCHESTER; - - config.config = HbmCollection.g20; - - return config; - } - - public static GunConfiguration getMareDarkConfig() { - - GunConfiguration config = getShotgunConfig(); - - config.durability = 2500; - config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; - config.firingSound = "hbm:weapon.revolverShootAlt"; - config.firingPitch = 0.75F; - config.hasSights = true; - config.zoomFOV = 0.75F; - - config.name = "win1887Inox"; - config.manufacturer = EnumGunManufacturer.WINCHESTER; - - config.config = HbmCollection.g20; - - return config; - } - - public static BulletConfiguration get20GaugeConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.STOCK)); - bullet.dmgMin = 3; - bullet.dmgMax = 5; - - bullet.spentCasing = CASING20GAUGE.clone().register("20GaStock").setColor(0xB52B2B, SpentCasing.COLOR_CASE_BRASS); - - return bullet; - } - - public static BulletConfiguration get20GaugeSlugConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.SLUG)); - bullet.dmgMin = 18; - bullet.dmgMax = 22; - bullet.wear = 7; - bullet.style = BulletConfiguration.STYLE_NORMAL; - - bullet.spentCasing = CASING20GAUGE.clone().register("20GaSlug").setColor(0x2A2A2A, SpentCasing.COLOR_CASE_BRASS); - - return bullet; - } - - public static BulletConfiguration get20GaugeFlechetteConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.FLECHETTE)); - bullet.dmgMin = 8; - bullet.dmgMax = 15; - bullet.wear = 15; - 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); - - return bullet; - } - - public static BulletConfiguration get20GaugeFireConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.INCENDIARY)); - bullet.dmgMin = 3; - bullet.dmgMax = 6; - bullet.wear = 15; - bullet.incendiary = 5; - - bullet.spentCasing = CASING20GAUGE.clone().register("20GaInc").setColor(0xFF6329, SpentCasing.COLOR_CASE_BRASS).setupSmoke(1F, 0.5D, 60, 40); - - return bullet; - } - - public static BulletConfiguration get20GaugeShrapnelConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.SHRAPNEL)); - bullet.wear = 15; - bullet.dmgMin = 7; - bullet.dmgMax = 12; - bullet.ricochetAngle = 15; - bullet.HBRC = 80; - bullet.LBRC = 95; - - bullet.spentCasing = CASING20GAUGE.clone().register("20GaShrap").setColor(0xF0E800, SpentCasing.COLOR_CASE_BRASS); - - return bullet; - } - - public static BulletConfiguration get20GaugeExplosiveConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.EXPLOSIVE)); - bullet.dmgMin = 7; - bullet.dmgMax = 12; - bullet.wear = 25; - bullet.explosive = 0.5F; - - bullet.spentCasing = CASING20GAUGE.clone().register("20GaExp").setColor(0xF0E800, SpentCasing.COLOR_CASE_BRASS); - - return bullet; - } - - public static BulletConfiguration get20GaugeCausticConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.CAUSTIC)); - bullet.dmgMin = 3; - bullet.dmgMax = 7; - bullet.wear = 25; - bullet.caustic = 5; - bullet.doesRicochet = false; - bullet.HBRC = 0; - bullet.LBRC = 0; - - bullet.effects = new ArrayList(); - bullet.effects.add(new PotionEffect(Potion.poison.id, 10 * 20, 1)); - - bullet.spentCasing = CASING20GAUGE.clone().register("20GaCaus").setColor(0x64E800, SpentCasing.COLOR_CASE_BRASS); - - return bullet; - } - - public static BulletConfiguration get20GaugeShockConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.SHOCK)); - bullet.dmgMin = 4; - bullet.dmgMax = 8; - bullet.wear = 25; - bullet.emp = 2; - bullet.doesRicochet = false; - bullet.HBRC = 0; - bullet.LBRC = 0; - - bullet.effects = new ArrayList(); - bullet.effects.add(new PotionEffect(Potion.moveSlowdown.id, 10 * 20, 1)); - bullet.effects.add(new PotionEffect(Potion.weakness.id, 10 * 20, 4)); - - bullet.spentCasing = CASING20GAUGE.clone().register("20GaShock").setColor(0x00EFEF, SpentCasing.COLOR_CASE_BRASS); - - return bullet; - } - - public static BulletConfiguration get20GaugeWitherConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.WITHER)); - bullet.dmgMin = 4; - bullet.dmgMax = 8; - - bullet.effects = new ArrayList(); - bullet.effects.add(new PotionEffect(Potion.wither.id, 10 * 20, 2)); - - bullet.spentCasing = CASING20GAUGE.clone().register("20GaWith").setColor(0x391717, SpentCasing.COLOR_CASE_BRASS); - - return bullet; - } - - public static BulletConfiguration get20GaugeSleekConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardAirstrikeConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_20gauge.stackFromEnum(Ammo20Gauge.SLEEK)); - - bullet.spentCasing = CASING20GAUGE.clone().register("20GaIF").setColor(0x2A2A2A, SpentCasing.COLOR_CASE_BRASS); - - return bullet; - } - -} diff --git a/src/main/java/com/hbm/handler/guncfg/Gun22LRFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun22LRFactory.java deleted file mode 100644 index aa9070ed8..000000000 --- a/src/main/java/com/hbm/handler/guncfg/Gun22LRFactory.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.hbm.handler.guncfg; - -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.CasingEjector; -import com.hbm.handler.GunConfiguration; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ModItems; -import com.hbm.items.ItemAmmoEnums.Ammo22LR; -import com.hbm.lib.HbmCollection; -import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.particle.SpentCasing; -import com.hbm.particle.SpentCasing.CasingType; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -public class Gun22LRFactory { - - private static final CasingEjector EJECTOR_22LR; - private static final SpentCasing CASING22LR; - - static { - EJECTOR_22LR = new CasingEjector().setMotion(-0.4, 0.1, 0).setOffset(-0.35, -0.2, 0.35).setAngleRange(0.01F, 0.03F); - CASING22LR = new SpentCasing(CasingType.STRAIGHT).setScale(0.8F).setBounceMotion(0.05F, 0.02F).setColor(SpentCasing.COLOR_CASE_BRASS); - } - - public static GunConfiguration getUziConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 1; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_AUTO; - config.reloadDuration = 20; - config.firingDuration = 0; - config.ammoCap = 32; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_CROSS; - config.durability = 3000; - config.reloadSound = GunConfiguration.RSOUND_MAG; - config.firingSound = "hbm:weapon.uziShoot"; - config.reloadSoundEnd = false; - - config.name = "uzi"; - config.manufacturer = EnumGunManufacturer.IMI; - config.comment.add("Mom, where are my mittens?"); - - config.config = HbmCollection.lr22; - - config.ejector = EJECTOR_22LR; - - return config; - } - - public static GunConfiguration getSaturniteConfig() { - - GunConfiguration config = getUziConfig(); - - config.durability = 4500; - - config.name = "uziSatur"; - config.manufacturer = EnumGunManufacturer.IMI_BIGMT; - - config.config = HbmCollection.lr22Inc; - - return config; - } - - static float inaccuracy = 5; - public static BulletConfiguration get22LRConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_22lr.stackFromEnum(Ammo22LR.STOCK)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 6; - bullet.dmgMax = 8; - - bullet.spentCasing = CASING22LR.clone().register("22LRStock"); - - return bullet; - } - - public static BulletConfiguration get22LRAPConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_22lr.stackFromEnum(Ammo22LR.AP)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 12; - bullet.dmgMax = 16; - bullet.leadChance = 10; - bullet.wear = 15; - - bullet.spentCasing = CASING22LR.clone().register("22LRAP"); - - return bullet; - } - -} diff --git a/src/main/java/com/hbm/handler/guncfg/Gun357MagnumFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun357MagnumFactory.java deleted file mode 100644 index 29340e37e..000000000 --- a/src/main/java/com/hbm/handler/guncfg/Gun357MagnumFactory.java +++ /dev/null @@ -1,353 +0,0 @@ -package com.hbm.handler.guncfg; - -import java.util.ArrayList; - -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.CasingEjector; -import com.hbm.handler.GunConfiguration; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ModItems; -import com.hbm.items.ItemAmmoEnums.Ammo357Magnum; -import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.main.ResourceManager; -import com.hbm.particle.SpentCasing; -import com.hbm.particle.SpentCasing.CasingType; -import com.hbm.lib.ModDamageSource; -import com.hbm.potion.HbmPotion; -import com.hbm.render.anim.HbmAnimations.AnimType; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.Vec3; - -public class Gun357MagnumFactory { - - private static final CasingEjector EJECTOR_REVOLVER; - private static final SpentCasing CASING357; - private static final SpentCasing CASINGNM; - - static { - EJECTOR_REVOLVER = new CasingEjector().setMotion(Vec3.createVectorHelper(0, 0, -0.03)).setOffset(Vec3.createVectorHelper(0, -0.15, 0)).setAngleRange(0.01F, 0.05F).setAfterReload().setAmount(6); - CASING357 = new SpentCasing(CasingType.STRAIGHT).setBounceMotion(0.01F, 0.05F); - CASINGNM = new SpentCasing(CasingType.SHOTGUN).setScale(1.25F).setBounceMotion(0.01F, 0.05F).setColor(0xC7AB1C, 0x6D63A6).register("357N2"); - } - - public static GunConfiguration getBaseConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 10; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.reloadDuration = 30; - config.firingDuration = 0; - config.ammoCap = 6; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_CLASSIC; - config.reloadSound = GunConfiguration.RSOUND_REVOLVER; - config.firingSound = "hbm:weapon.revolverShoot"; - config.reloadSoundEnd = false; - - config.ejector = EJECTOR_REVOLVER; - - config.loadAnimations = i -> { - config.animations.put(AnimType.CYCLE, ResourceManager.python_anim.get("Fire")); - config.animations.put(AnimType.RELOAD, ResourceManager.python_anim.get("Reload")); - }; - - return config; - } - - public static GunConfiguration getRevolverConfig() { - - GunConfiguration config = getBaseConfig(); - - config.durability = 3500; - - config.name = "ffiVInox"; - config.manufacturer = EnumGunManufacturer.FLIMFLAM; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.STEEL_REVOLVER); - config.config.add(BulletConfigSyncingUtil.IRON_REVOLVER); - config.config.add(BulletConfigSyncingUtil.LEAD_REVOLVER); - config.config.add(BulletConfigSyncingUtil.DESH_REVOLVER); - - return config; - } - - public static GunConfiguration getRevolverSaturniteConfig() { - - GunConfiguration config = getBaseConfig(); - - config.durability = 3500; - - config.name = "ffivSatur"; - config.manufacturer = EnumGunManufacturer.FLIMFLAM; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.SATURNITE_REVOLVER); - config.config.add(BulletConfigSyncingUtil.DESH_REVOLVER); - - return config; - } - - public static GunConfiguration getRevolverGoldConfig() { - - GunConfiguration config = getBaseConfig(); - - config.durability = 2500; - - config.name = "ffivBling"; - config.manufacturer = EnumGunManufacturer.FLIMFLAM; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.GOLD_REVOLVER); - config.config.add(BulletConfigSyncingUtil.STEEL_REVOLVER); - config.config.add(BulletConfigSyncingUtil.IRON_REVOLVER); - config.config.add(BulletConfigSyncingUtil.LEAD_REVOLVER); - config.config.add(BulletConfigSyncingUtil.DESH_REVOLVER); - - return config; - } - - public static GunConfiguration getRevolverCursedConfig() { - - GunConfiguration config = getBaseConfig(); - - config.rateOfFire = 7; - config.ammoCap = 17; - config.durability = 5000; - config.firingSound = "hbm:weapon.heavyShoot"; - - config.name = "revolverCursed"; - config.manufacturer = EnumGunManufacturer.BAE; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.CURSED_REVOLVER); - config.config.add(BulletConfigSyncingUtil.DESH_REVOLVER); - - config.loadAnimations = i -> { - config.animations.put(AnimType.CYCLE, ResourceManager.cursed_anim.get("Fire")); - config.animations.put(AnimType.RELOAD, ResourceManager.cursed_anim.get("Reload")); - }; - - return config; - } - - public static GunConfiguration getRevolverSchrabidiumConfig() { - - GunConfiguration config = getBaseConfig(); - - config.durability = 7500; - config.firingSound = "hbm:weapon.schrabidiumShoot"; - - config.name = "ffiVUltra"; - config.manufacturer = EnumGunManufacturer.FLIMFLAM; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.SCHRABIDIUM_REVOLVER); - config.config.add(BulletConfigSyncingUtil.GOLD_REVOLVER); - config.config.add(BulletConfigSyncingUtil.STEEL_REVOLVER); - config.config.add(BulletConfigSyncingUtil.IRON_REVOLVER); - config.config.add(BulletConfigSyncingUtil.LEAD_REVOLVER); - config.config.add(BulletConfigSyncingUtil.DESH_REVOLVER); - - return config; - } - - public static GunConfiguration getRevolverNightmareConfig() { - - GunConfiguration config = getBaseConfig(); - - config.durability = 4000; - config.firingSound = "hbm:weapon.schrabidiumShoot"; - - config.name = "ffiVN1"; - config.manufacturer = EnumGunManufacturer.FLIMFLAM; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.NIGHT_REVOLVER); - config.config.add(BulletConfigSyncingUtil.DESH_REVOLVER); - - return config; - } - - public static GunConfiguration getRevolverNightmare2Config() { - - GunConfiguration config = getBaseConfig(); - - config.durability = 4000; - config.firingSound = "hbm:weapon.schrabidiumShoot"; - config.crosshair = Crosshair.NONE; - - config.name = "ffiVN2"; - config.manufacturer = EnumGunManufacturer.FLIMFLAM; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.NIGHT2_REVOLVER); - - return config; - } - - public static GunConfiguration getRevolverBioConfig() { - - GunConfiguration config = getBaseConfig(); - - config.durability = 100000; - config.firingSound = "hbm:weapon.deagleShoot"; - config.reloadDuration = 53; - config.crosshair = Crosshair.CIRCLE; - - config.name = "bio"; - config.manufacturer = EnumGunManufacturer.RYAN; - - config.config.add(BulletConfigSyncingUtil.STEEL_HS); - config.config.add(BulletConfigSyncingUtil.GOLD_HS); - config.config.add(BulletConfigSyncingUtil.IRON_HS); - config.config.add(BulletConfigSyncingUtil.LEAD_HS); - config.config.add(BulletConfigSyncingUtil.DESH_HS); - - return config; - } - - //// // // // // ////// ////// ////// - // // // // // // // // // - //// // // // // //// // ////// - // // // // // // // // // - //// ////// ////// ////// ////// // ////// - - public static BulletConfiguration getRevIronConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_357.stackFromEnum(Ammo357Magnum.IRON)); - bullet.dmgMin = 8; - bullet.dmgMax = 10; - - bullet.spentCasing = CASING357.clone().register("357Iron").setColor(0xA8A8A8); - - return bullet; - } - - public static BulletConfiguration getRevLeadConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_357.stackFromEnum(Ammo357Magnum.LEAD)); - bullet.dmgMin = 18; - bullet.dmgMax = 22; - - bullet.spentCasing = CASING357.clone().register("357Lead").setColor(0x646470); - - return bullet; - } - - public static BulletConfiguration getRevNuclearConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_357.stackFromEnum(Ammo357Magnum.NUCLEAR)); - bullet.dmgMin = 10; - bullet.dmgMax = 15; - - bullet.effects = new ArrayList(); - bullet.effects.add(new PotionEffect(HbmPotion.radiation.id, 10 * 20, 4)); - - bullet.spentCasing = CASING357.clone().register("357Nuc").setColor(0xFEFEFE); - - return bullet; - } - - public static BulletConfiguration getRevGoldConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_357.stackFromEnum(Ammo357Magnum.GOLD)); - bullet.dmgMin = 25; - bullet.dmgMax = 28; - - bullet.spentCasing = CASING357.clone().register("357Gold").setColor(0xF9FF3E); - - return bullet; - } - - public static BulletConfiguration getRevDeshConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_357.stackFromEnum(Ammo357Magnum.DESH)); - bullet.dmgMin = 30; - bullet.dmgMax = 33; - - bullet.spentCasing = CASING357.clone().register("357Desh").setColor(0xF22929); - - return bullet; - } - - public static BulletConfiguration getRevSchrabidiumConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_357.stackFromEnum(Ammo357Magnum.SCHRABIDIUM)); - bullet.dmgMin = 10000; - bullet.dmgMax = 100000; - bullet.instakill = true; - - bullet.spentCasing = CASING357.clone().register("357Schrab").setColor(0x32FFFF); - - return bullet; - } - - public static BulletConfiguration getRevCursedConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_357.stackFromEnum(Ammo357Magnum.STEEL)); - bullet.dmgMin = 18; - bullet.dmgMax = 25; - - bullet.spentCasing = CASING357.clone().register("357Cursed").setColor(0x565656); - - return bullet; - } - - public static BulletConfiguration getRevNightmare1Config() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_357.stackFromEnum(Ammo357Magnum.NIGHTMARE1)); - bullet.dmgMin = 1; - bullet.dmgMax = 100; - - bullet.spentCasing = CASING357.clone().register("357N1").setColor(0x3A3A3A); - - return bullet; - } - - public static BulletConfiguration getRevNightmare2Config() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_357.stackFromEnum(Ammo357Magnum.NIGHTMARE2)); - bullet.spread *= 10; - bullet.bulletsMin = 4; - bullet.bulletsMax = 6; - bullet.dmgMin = 25; - bullet.dmgMax = 100; - bullet.doesRicochet = false; - bullet.destroysBlocks = true; - bullet.style = BulletConfiguration.STYLE_BOLT; - bullet.trail = BulletConfiguration.BOLT_NIGHTMARE; - - bullet.damageType = ModDamageSource.s_laser; - - bullet.spentCasing = CASINGNM; - - return bullet; - } - -} diff --git a/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java deleted file mode 100644 index 9f7a5aca7..000000000 --- a/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java +++ /dev/null @@ -1,376 +0,0 @@ -package com.hbm.handler.guncfg; - -import java.util.ArrayList; - -import com.hbm.entity.particle.EntityBSmokeFX; -import com.hbm.entity.projectile.EntityBoxcar; -import com.hbm.entity.projectile.EntityBuilding; -import com.hbm.entity.projectile.EntityDuchessGambit; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.CasingEjector; -import com.hbm.handler.GunConfiguration; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ModItems; -import com.hbm.items.ItemAmmoEnums.Ammo44Magnum; -import com.hbm.lib.HbmCollection; -import com.hbm.lib.RefStrings; -import com.hbm.main.ResourceManager; -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.potion.HbmPotion; -import com.hbm.render.anim.HbmAnimations.AnimType; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.Vec3; - -public class Gun44MagnumFactory { - - private static final CasingEjector EJECTOR_PIP; - private static final SpentCasing CASING44; - - static { - EJECTOR_PIP = new CasingEjector().setMotion(Vec3.createVectorHelper(0, 0, -0.05)).setOffset(Vec3.createVectorHelper(0, -0.15, 0)).setAngleRange(0.01F, 0.05F).setAfterReload().setAmount(6); - CASING44 = new SpentCasing(CasingType.STRAIGHT).setScale(1.5F, 1.0F, 1.5F).setBounceMotion(0.01F, 0.05F).setColor(SpentCasing.COLOR_CASE_44); - } - - public static GunConfiguration getBaseConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 10; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.reloadDuration = 50; - config.firingDuration = 0; - config.ammoCap = 6; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_CLASSIC; - config.reloadSound = GunConfiguration.RSOUND_REVOLVER; - config.firingSound = "hbm:weapon.44Shoot"; - config.reloadSoundEnd = false; - - config.config.addAll(HbmCollection.m44Normal); - - config.ejector = EJECTOR_PIP; - - config.loadAnimations = i -> { - config.animations.put(AnimType.CYCLE, ResourceManager.novac_anim.get("Fire")); - }; - - return config; - } - - public static GunConfiguration getNovacConfig() { - - GunConfiguration config = getBaseConfig(); - - config.durability = 2500; - - config.name = "ifHorseshoe"; - config.manufacturer = EnumGunManufacturer.IF; - config.comment.add("Fallout New Vegas wasn't THAT good."); - - return config; - } - - public static final ResourceLocation scope_lilmac = new ResourceLocation(RefStrings.MODID, "textures/misc/scope_44.png"); - - public static GunConfiguration getMacintoshConfig() { - - GunConfiguration config = getBaseConfig(); - - config.durability = 31_000; - - config.name = "ifScope"; - config.manufacturer = EnumGunManufacturer.IF; - config.comment.add("Poppin' mentats like tic tacs"); - - config.allowsInfinity = false; - config.hasSights = true; - config.absoluteFOV = true; - config.zoomFOV = 0.25F; - config.scopeTexture = scope_lilmac; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.M44_PIP); - config.config.addAll(HbmCollection.m44Normal); - - return config; - } - - public static GunConfiguration getBlackjackConfig() { - - GunConfiguration config = getBaseConfig(); - - config.durability = 4000; - config.ammoCap = 5; - - config.allowsInfinity = false; - config.name = "ifVanity"; - config.manufacturer = EnumGunManufacturer.IF; - config.comment.add("Alcoholism is cool!"); - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.M44_BJ); - config.config.addAll(HbmCollection.m44Normal); - - config.ejector = EJECTOR_PIP.clone().setAmount(5); - - return config; - } - - public static GunConfiguration getSilverConfig() { - - GunConfiguration config = getBaseConfig(); - - config.durability = 4000; - config.ammoCap = 6; - - config.allowsInfinity = false; - config.name = "ifStorm"; - config.manufacturer = EnumGunManufacturer.IF; - config.comment.add("Our friendship is based on abusive behaviour"); - config.comment.add("and mutual hate. It's not that complicated."); - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.M44_SILVER); - config.config.addAll(HbmCollection.m44Normal); - - return config; - } - - public static GunConfiguration getRedConfig() { - - GunConfiguration config = getBaseConfig(); - - config.durability = 4000; - config.ammoCap = 8; - - config.allowsInfinity = false; - config.name = "ifPit"; - config.manufacturer = EnumGunManufacturer.IF; - config.comment.add("Explore the other side"); - config.comment.add("...from afar!"); - - config.config = new ArrayList(); - config.config.addAll(HbmCollection.m44All); - - config.ejector = EJECTOR_PIP.clone().setAmount(64); - - return config; - } - - public static BulletConfiguration getNoPipConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_44.stackFromEnum(Ammo44Magnum.STOCK)); - bullet.dmgMin = 18; - bullet.dmgMax = 26; - - bullet.spentCasing = CASING44.clone().register("44NoPip"); - - return bullet; - } - - public static BulletConfiguration getNoPipAPConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_44.stackFromEnum(Ammo44Magnum.AP)); - bullet.dmgMin = 25; - bullet.dmgMax = 32; - bullet.wear = 15; - bullet.leadChance = 10; - - bullet.spentCasing = CASING44.clone().register("44AP"); - - return bullet; - } - - public static BulletConfiguration getNoPipDUConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_44.stackFromEnum(Ammo44Magnum.DU)); - bullet.dmgMin = 28; - bullet.dmgMax = 40; - bullet.wear = 25; - bullet.leadChance = 50; - - bullet.spentCasing = CASING44.clone().register("44DU"); - - return bullet; - } - - public static BulletConfiguration getPhosphorusConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_44.stackFromEnum(Ammo44Magnum.PHOSPHORUS)); - bullet.dmgMin = 18; - bullet.dmgMax = 26; - bullet.wear = 15; - bullet.incendiary = 5; - bullet.doesPenetrate = false; - - PotionEffect eff = new PotionEffect(HbmPotion.phosphorus.id, 20 * 20, 0, true); - eff.getCurativeItems().clear(); - bullet.effects = new ArrayList(); - bullet.effects.add(new PotionEffect(eff)); - - bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "vanillaburst"); - data.setString("mode", "flame"); - data.setInteger("count", 15); - data.setDouble("motion", 0.05D); - - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX, bulletnt.posY, bulletnt.posZ), new TargetPoint(bulletnt.dimension, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 50)); - }; - - bullet.spentCasing = CASING44.clone().register("44Phos"); - - return bullet; - } - - public static BulletConfiguration getNoPipStarConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_44.stackFromEnum(Ammo44Magnum.STAR)); - bullet.dmgMin = 42; - bullet.dmgMax = 50; - bullet.wear = 25; - bullet.leadChance = 100; - - bullet.spentCasing = CASING44.clone().register("44Star"); - - return bullet; - } - - public static BulletConfiguration getPipConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_44.stackFromEnum(Ammo44Magnum.PIP)); - bullet.dmgMin = 30; - bullet.dmgMax = 36; - bullet.wear = 25; - bullet.doesPenetrate = false; - - bullet.bntHit = (bulletnt, hit) -> { - - if(!bulletnt.worldObj.isRemote) { - EntityBoxcar pippo = new EntityBoxcar(bulletnt.worldObj); - pippo.posX = hit.posX; - pippo.posY = hit.posY + 50; - pippo.posZ = hit.posZ; - - for(int j = 0; j < 50; j++) { - EntityBSmokeFX fx = new EntityBSmokeFX(bulletnt.worldObj, pippo.posX + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 4, pippo.posY + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 12, pippo.posZ + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 4, 0, 0, 0); - bulletnt.worldObj.spawnEntityInWorld(fx); - } - bulletnt.worldObj.spawnEntityInWorld(pippo); - - bulletnt.worldObj.playSoundEffect(pippo.posX, pippo.posY + 50, pippo.posZ, "hbm:alarm.trainHorn", 100F, 1F); - } - }; - - bullet.spentCasing = CASING44.clone().register("44Pip").setColor(0x532C64); - - return bullet; - } - - public static BulletConfiguration getBJConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_44.stackFromEnum(Ammo44Magnum.BJ)); - bullet.dmgMin = 30; - bullet.dmgMax = 36; - bullet.wear = 25; - bullet.doesPenetrate = false; - - bullet.bntHit = (bulletnt, hit) -> { - - if(!bulletnt.worldObj.isRemote) { - EntityDuchessGambit pippo = new EntityDuchessGambit(bulletnt.worldObj); - pippo.posX = hit.posX; - pippo.posY = hit.posY + 50; - pippo.posZ = hit.posZ; - - for(int j = 0; j < 150; j++) { - EntityBSmokeFX fx = new EntityBSmokeFX(bulletnt.worldObj, pippo.posX + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 7, pippo.posY + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 8, pippo.posZ + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 18, 0, 0, 0); - bulletnt.worldObj.spawnEntityInWorld(fx); - } - bulletnt.worldObj.spawnEntityInWorld(pippo); - - bulletnt.worldObj.playSoundEffect(pippo.posX, pippo.posY + 50, pippo.posZ, "hbm:weapon.boat", 100F, 1F); - } - }; - - bullet.spentCasing = CASING44.clone().register("44BJ").setColor(0x632B2C); - - return bullet; - } - - public static BulletConfiguration getSilverStormConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_44.stackFromEnum(Ammo44Magnum.SILVER)); - bullet.dmgMin = 30; - bullet.dmgMax = 36; - bullet.wear = 25; - bullet.doesPenetrate = false; - - bullet.bntHit = (bulletnt, hit) -> { - - if(!bulletnt.worldObj.isRemote) { - EntityBuilding pippo = new EntityBuilding(bulletnt.worldObj); - pippo.posX = hit.posX; - pippo.posY = hit.posY + 50; - pippo.posZ = hit.posZ; - - for(int j = 0; j < 150; j++) { - EntityBSmokeFX fx = new EntityBSmokeFX(bulletnt.worldObj, pippo.posX + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 15, pippo.posY + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 15, pippo.posZ + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 15, 0, 0, 0); - bulletnt.worldObj.spawnEntityInWorld(fx); - } - bulletnt.worldObj.spawnEntityInWorld(pippo); - - bulletnt.worldObj.playSoundEffect(pippo.posX, pippo.posY + 50, pippo.posZ, "hbm:block.debris", 100F, 1F); - } - }; - - bullet.spentCasing = CASING44.clone().register("44Silver").setColor(0x2B5963); - - return bullet; - } - - public static BulletConfiguration getRocketConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_44.stackFromEnum(Ammo44Magnum.ROCKET)); - bullet.velocity = 5; - bullet.explosive = 15F; - bullet.trail = 1; - - bullet.spentCasing = CASING44.clone().register("44Rocket"); - - return bullet; - } - -} diff --git a/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java deleted file mode 100644 index d21ebf9c9..000000000 --- a/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java +++ /dev/null @@ -1,173 +0,0 @@ -package com.hbm.handler.guncfg; - -import java.util.ArrayList; - -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.GunConfiguration; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ModItems; -import com.hbm.items.ItemAmmoEnums.Ammo45ACP; -import com.hbm.lib.HbmCollection; -import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.particle.SpentCasing; -import com.hbm.particle.SpentCasing.CasingType; -import com.hbm.render.anim.BusAnimation; -import com.hbm.render.anim.BusAnimationSequence; -import com.hbm.render.anim.HbmAnimations.AnimType; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -public class Gun45ACPFactory { - - private static final SpentCasing CASING45; - - static { - CASING45 = new SpentCasing(CasingType.STRAIGHT).setBounceMotion(0.01F, 0.05F).setScale(1.25F, 1.25F, 1F).setColor(SpentCasing.COLOR_CASE_BRASS).register("45ACP"); - } - - public static GunConfiguration getThompsonConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 2; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_AUTO; - config.reloadDuration = 20; - config.firingDuration = 0; - config.ammoCap = 30; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_SPLIT; - config.durability = 5000; - config.reloadSound = GunConfiguration.RSOUND_MAG; - config.firingSound = "hbm:weapon.rifleShoot"; - config.reloadSoundEnd = false; - - config.name = "tommy"; - config.manufacturer = EnumGunManufacturer.AUTO_ORDINANCE; - - config.config = new ArrayList(); - config.config.addAll(HbmCollection.acp45); - - return config; - } - - public static GunConfiguration getUACPistolConfig() { - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 4; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.reloadDuration = 10; - config.firingDuration = 8; - config.ammoCap = 21; - config.durability = 10000; - config.reloadType = 1; - config.allowsInfinity = true; - config.hasSights = true; - config.absoluteFOV = true; - config.zoomFOV = 0.5F; - config.crosshair = Crosshair.CROSS; - config.reloadSound = GunConfiguration.RSOUND_MAG; - config.firingSound = "hbm:weapon.deagleShoot"; - config.reloadSoundEnd = true; - - config.name = "uacPistol"; - config.manufacturer = EnumGunManufacturer.UAC; - - config.config.addAll(HbmCollection.acp45); - - config.animations.put(AnimType.CYCLE, new BusAnimation() - .addBus("SLIDE", new BusAnimationSequence() - .addKeyframePosition(0, 0, 0, 10)// Wait for hammer - .addKeyframePosition(0, 0, -3.5, 40)// Slide back - .addKeyframePosition(0, 0, 0, 40))// Return - .addBus("HAMMER", new BusAnimationSequence() - .addKeyframePosition(15, 0, 0, 10) - .addKeyframePosition(0, 0, 0, 40))); - - return config; - } - - public static GunConfiguration getUACPistolBurstConfig() { - GunConfiguration config = getUACPistolConfig(); - config.rateOfFire = 5; - config.roundsPerBurst = 3; - config.firingDuration = 2; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_BURST; - - return config; - } - - public static GunConfiguration getUACSMGConfig() { - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 1; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_AUTO; - config.reloadDuration = 10; - config.firingDuration = 4; - config.ammoCap = 40; - config.durability = 40000; - config.reloadType = 1; - config.allowsInfinity = true; - config.hasSights = true; - config.crosshair = Crosshair.CROSS; - config.reloadSound = "hbm:weapon.SMGMagInPB3"; - config.firingSound = "hbm:weapon.SMGFirePB3"; - config.firingPitch = 1.15F; - config.reloadSoundEnd = true; - - config.name = "uacSMG"; - config.manufacturer = EnumGunManufacturer.UAC; - - config.config.addAll(HbmCollection.acp45); - - return config; - } - - static float inaccuracy = 5; - public static BulletConfiguration get45AutoConfig() { - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_45.stackFromEnum(Ammo45ACP.STOCK)); - bullet.spread *= inaccuracy; - bullet.dmgMax = 12; - bullet.dmgMin = 16; - - bullet.spentCasing = CASING45; - - return bullet; - } - - public static BulletConfiguration get45AutoAPConfig() { - BulletConfiguration bullet = get45AutoConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_45.stackFromEnum(Ammo45ACP.AP)); - bullet.dmgMax = 18; - bullet.dmgMin = 26; - bullet.wear = 15; - bullet.leadChance = 10; - - bullet.spentCasing = CASING45; - - return bullet; - } - - public static BulletConfiguration get45AutoDUConfig() { - BulletConfiguration bullet = get45AutoConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_45.stackFromEnum(Ammo45ACP.DU)); - bullet.dmgMax = 30; - bullet.dmgMin = 44; - bullet.wear = 25; - bullet.leadChance = 50; - - bullet.spentCasing = CASING45; - - return bullet; - } -} diff --git a/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java deleted file mode 100644 index 786346617..000000000 --- a/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java +++ /dev/null @@ -1,523 +0,0 @@ -package com.hbm.handler.guncfg; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.entity.projectile.EntityBulletBaseNT; -import com.hbm.explosion.ExplosionLarge; -import com.hbm.explosion.ExplosionNT; -import com.hbm.explosion.ExplosionNT.ExAttrib; -import com.hbm.explosion.ExplosionNukeSmall; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.CasingEjector; -import com.hbm.handler.GunConfiguration; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ModItems; -import com.hbm.items.ItemAmmoEnums.Ammo4Gauge; -import com.hbm.lib.HbmCollection; -import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.main.ResourceManager; -import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.PacketDispatcher; -import com.hbm.particle.SpentCasing; -import com.hbm.particle.SpentCasing.CasingType; -import com.hbm.potion.HbmPotion; -import com.hbm.render.anim.BusAnimation; -import com.hbm.render.anim.BusAnimationSequence; -import com.hbm.render.anim.HbmAnimations.AnimType; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.entity.EntityCreature; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.Vec3; -import net.minecraftforge.common.IExtendedEntityProperties; - -public class Gun4GaugeFactory { - - private static final CasingEjector EJECTOR_SHOTGUN; - private static final SpentCasing CASING4GAUGE; - - static { - EJECTOR_SHOTGUN = new CasingEjector().setMotion(Vec3.createVectorHelper(-0.4, 0.4, 0)).setOffset(Vec3.createVectorHelper(-0.5, 0, 0.5)).setAngleRange(0.01F, 0.03F); - CASING4GAUGE = new SpentCasing(CasingType.SHOTGUN).setScale(2.5F).setBounceMotion(0.01F, 0.03F); - } - - private static GunConfiguration getShotgunConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 15; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.reloadDuration = 10; - config.firingDuration = 0; - config.ammoCap = 4; - config.reloadType = GunConfiguration.RELOAD_SINGLE; - config.allowsInfinity = true; - config.hasSights = true; - config.absoluteFOV = true; - config.zoomFOV = 0.5F; - config.crosshair = Crosshair.L_CIRCLE; - config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; - - config.ejector = EJECTOR_SHOTGUN; - - return config; - } - - public static GunConfiguration getKS23Config() { - - GunConfiguration config = getShotgunConfig(); - - config.durability = 3000; - config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; - config.reloadSoundEnd = false; - config.firingSound = "hbm:weapon.revolverShootAlt"; - config.firingPitch = 0.65F; - - config.ejector = EJECTOR_SHOTGUN.clone().setDelay(10); - - config.name = "ks23"; - config.manufacturer = EnumGunManufacturer.TULSKY; - - config.emptyReloadAdditionalDuration = 5; - - config.reloadAnimationsSequential = true; - - config.loadAnimations = i -> { - config.animations.put(AnimType.CYCLE, ResourceManager.ks23_anim.get("Fire")); - config.animations.put(AnimType.RELOAD, ResourceManager.ks23_anim.get("ReloadStart")); - config.animations.put(AnimType.RELOAD_EMPTY, ResourceManager.ks23_anim.get("ReloadEmptyStart")); - config.animations.put(AnimType.RELOAD_CYCLE, ResourceManager.ks23_anim.get("Reload")); - config.animations.put(AnimType.RELOAD_END, ResourceManager.ks23_anim.get("ReloadEnd")); - }; - - config.config = HbmCollection.g4; - - return config; - } - - public static GunConfiguration getSauerConfig() { - - GunConfiguration config = getShotgunConfig(); - - config.rateOfFire = 20; - config.ammoCap = 0; - config.reloadType = GunConfiguration.RELOAD_NONE; - config.firingMode = GunConfiguration.FIRE_AUTO; - config.durability = 3000; - config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; - config.firingSound = "hbm:weapon.sauergun"; - config.firingPitch = 1.0F; - - config.ejector = EJECTOR_SHOTGUN.clone().setDelay(12); - - config.name = "sauer"; - config.manufacturer = EnumGunManufacturer.CUBE; - - config.animations.put(AnimType.CYCLE, new BusAnimation() - .addBus("SAUER_RECOIL", new BusAnimationSequence() - .addKeyframePosition(0.5, 0, 0, 50) - .addKeyframePosition(0, 0, 0, 50) - ) - .addBus("SAUER_TILT", new BusAnimationSequence() - .addKeyframePosition(0.0, 0, 0, 200) // do nothing for 200ms - .addKeyframePosition(0, 0, 30, 150) //tilt forward - .addKeyframePosition(45, 0, 30, 150) //tilt sideways - .addKeyframePosition(45, 0, 30, 200) //do nothing for 200ms (eject) - .addKeyframePosition(0, 0, 30, 150) //restore sideways - .addKeyframePosition(0, 0, 0, 150) //restore forward - ) - .addBus("SAUER_COCK", new BusAnimationSequence() - .addKeyframePosition(0, 0, 0, 500) //do nothing for 500ms - .addKeyframePosition(1, 0, 0, 100) //pull back lever for 100ms - .addKeyframePosition(0, 0, 0, 100) //release lever for 100ms - ) - .addBus("SAUER_SHELL_EJECT", new BusAnimationSequence() - .addKeyframePosition(0, 0, 0, 500) //do nothing for 500ms - .addKeyframePosition(0, 0, 1, 500) //FLING! - ) - ); - - config.config = HbmCollection.g4; - - return config; - } - - public static BulletConfiguration get4GaugeConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.STOCK)); - bullet.dmgMin = 5; - bullet.dmgMax = 8; - bullet.bulletsMin *= 2; - bullet.bulletsMax *= 2; - - bullet.spentCasing = CASING4GAUGE.clone().register("4GaStock").setColor(0xFFD800, SpentCasing.COLOR_CASE_4GA); - - return bullet; - } - - public static BulletConfiguration get4GaugeSlugConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.SLUG)); - bullet.dmgMin = 25; - bullet.dmgMax = 32; - bullet.wear = 7; - bullet.style = BulletConfiguration.STYLE_NORMAL; - - bullet.spentCasing = CASING4GAUGE.clone().register("4GaSlug").setColor(0xE01A1A, SpentCasing.COLOR_CASE_4GA); - - return bullet; - } - - public static BulletConfiguration get4GaugeFlechetteConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.FLECHETTE)); - bullet.dmgMin = 8; - bullet.dmgMax = 15; - bullet.bulletsMin *= 2; - bullet.bulletsMax *= 2; - bullet.wear = 15; - 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); - - return bullet; - } - - public static BulletConfiguration get4GaugeFlechettePhosphorusConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.FLECHETTE_PHOSPHORUS)); - bullet.dmgMin = 8; - bullet.dmgMax = 15; - bullet.bulletsMin *= 2; - bullet.bulletsMax *= 2; - bullet.wear = 15; - bullet.style = BulletConfiguration.STYLE_FLECHETTE; - bullet.HBRC = 2; - bullet.LBRC = 95; - bullet.incendiary = 5; - - PotionEffect eff = new PotionEffect(HbmPotion.phosphorus.id, 20 * 20, 0, true); - eff.getCurativeItems().clear(); - bullet.effects = new ArrayList(); - bullet.effects.add(new PotionEffect(eff)); - - bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "vanillaburst"); - data.setString("mode", "flame"); - data.setInteger("count", 15); - data.setDouble("motion", 0.05D); - - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX, bulletnt.posY, bulletnt.posZ), new TargetPoint(bulletnt.dimension, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 50)); - }; - - bullet.spentCasing = CASING4GAUGE.clone().register("4GaPhos").setColor(0xF6871A, SpentCasing.COLOR_CASE_4GA); - - return bullet; - } - - public static BulletConfiguration get4GaugeExplosiveConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.EXPLOSIVE)); - bullet.velocity *= 2; - bullet.gravity *= 2; - bullet.dmgMin = 20; - bullet.dmgMax = 25; - bullet.wear = 25; - bullet.trail = 1; - - bullet.spentCasing = CASING4GAUGE.clone().register("4GaExp").setColor(0x3F8243, SpentCasing.COLOR_CASE_4GA); - - return bullet; - } - - public static BulletConfiguration get4GaugeMiningConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.MINING)); - bullet.velocity *= 2; - bullet.gravity *= 2; - bullet.dmgMin = 10; - bullet.dmgMax = 15; - bullet.wear = 25; - bullet.trail = 1; - bullet.explosive = 0.0F; - - bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - - if(bulletnt.worldObj.isRemote) - return; - - ExplosionNT explosion = new ExplosionNT(bulletnt.worldObj, null, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 4); - explosion.atttributes.add(ExAttrib.ALLDROP); - explosion.atttributes.add(ExAttrib.NOHURT); - explosion.doExplosionA(); - explosion.doExplosionB(false); - - ExplosionLarge.spawnParticles(bulletnt.worldObj, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 15); - }; - - bullet.spentCasing = CASING4GAUGE.clone().register("4GaSem").setColor(0x5C5C5C, SpentCasing.COLOR_CASE_4GA); - - return bullet; - } - - public static BulletConfiguration get4GaugeBalefireConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.BALEFIRE)); - bullet.velocity *= 2; - bullet.gravity *= 2; - bullet.dmgMin = 50; - bullet.dmgMax = 65; - bullet.wear = 25; - bullet.trail = 1; - bullet.explosive = 0.0F; - - bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - - if(bulletnt.worldObj.isRemote) - return; - - ExplosionNT explosion = new ExplosionNT(bulletnt.worldObj, null, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 6); - explosion.atttributes.add(ExAttrib.BALEFIRE); - explosion.doExplosionA(); - explosion.doExplosionB(false); - - ExplosionLarge.spawnParticles(bulletnt.worldObj, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 30); - }; - - bullet.spentCasing = CASING4GAUGE.clone().register("4GaBale").setColor(0x7BFF44, SpentCasing.COLOR_CASE_4GA); - - return bullet; - } - - public static BulletConfiguration getGrenadeKampfConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.KAMPF)); - bullet.spread = 0.0F; - bullet.gravity = 0.0D; - bullet.wear = 15; - bullet.explosive = 3.5F; - bullet.style = BulletConfiguration.STYLE_GRENADE; - bullet.trail = 4; - bullet.vPFX = "smoke"; - - bullet.spentCasing = CASING4GAUGE.clone().register("4GaKampf").setColor(0xE7BA48, SpentCasing.COLOR_CASE_4GA); - - return bullet; - } - - public static BulletConfiguration getGrenadeCanisterConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.CANISTER)); - bullet.spread = 0.0F; - bullet.gravity = 0.0D; - bullet.wear = 15; - bullet.explosive = 1F; - bullet.style = BulletConfiguration.STYLE_GRENADE; - bullet.trail = 4; - bullet.vPFX = "smoke"; - - bullet.bntUpdate = (bulletnt) -> { - - if(!bulletnt.worldObj.isRemote) { - - if(bulletnt.ticksExisted > 10) { - bulletnt.setDead(); - - for(int i = 0; i < 50; i++) { - - EntityBulletBaseNT bolt = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.M44_AP); - bolt.setPosition(bulletnt.posX, bulletnt.posY, bulletnt.posZ); - bolt.setThrowableHeading(bulletnt.motionX, bulletnt.motionY, bulletnt.motionZ, 0.25F, 0.1F); - bolt.setThrower(bulletnt.getThrower()); - bulletnt.worldObj.spawnEntityInWorld(bolt); - } - } - } - }; - - bullet.spentCasing = CASING4GAUGE.clone().register("4GaCan").setColor(0xCACACA, SpentCasing.COLOR_CASE_4GA); - - return bullet; - } - - public static BulletConfiguration get4GaugeSleekConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardAirstrikeConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.SLEEK)); - - bullet.spentCasing = CASING4GAUGE.clone().register("4GaIF").setColor(0x1D1D1D, SpentCasing.COLOR_CASE_4GA); - - return bullet; - } - - public static BulletConfiguration get4GaugeClawConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.CLAW)); - bullet.dmgMin = 6; - bullet.dmgMax = 9; - bullet.bulletsMin *= 2; - bullet.bulletsMax *= 2; - bullet.leadChance = 100; - - bullet.bntHurt = (bulletnt, hit) -> { - - if(bulletnt.worldObj.isRemote) - return; - - if(hit instanceof EntityLivingBase) { - EntityLivingBase living = (EntityLivingBase) hit; - float f = living.getHealth(); - - if(f > 0) { - f = Math.max(0, f - 2); - living.setHealth(f); - - if(f == 0) - living.onDeath(ModDamageSource.causeBulletDamage(bulletnt, hit)); - } - } - }; - - bullet.spentCasing = CASING4GAUGE.clone().register("4GaClaw").setColor(0x5E38CC, SpentCasing.COLOR_CASE_4GA); - - return bullet; - } - - public static BulletConfiguration get4GaugeVampireConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.VAMPIRE)); - bullet.dmgMin = 6; - bullet.dmgMax = 9; - bullet.bulletsMin *= 2; - bullet.bulletsMax *= 2; - bullet.leadChance = 100; - bullet.style = BulletConfiguration.STYLE_FLECHETTE; - - bullet.bntHurt = (bulletnt, hit) -> { - - if(bulletnt.worldObj.isRemote) - return; - - if(hit instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer) hit; - - IExtendedEntityProperties prop = player.getExtendedProperties("WitcheryExtendedPlayer"); - - NBTTagCompound blank = new NBTTagCompound(); - blank.setTag("WitcheryExtendedPlayer", new NBTTagCompound()); - - if(prop != null) { - prop.loadNBTData(blank); - } - } - }; - - bullet.spentCasing = CASING4GAUGE.clone().register("4GaVamp").setColor(0x278400, SpentCasing.COLOR_CASE_4GA); - - return bullet; - } - - public static BulletConfiguration get4GaugeVoidConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.VOID)); - bullet.dmgMin = 6; - bullet.dmgMax = 9; - bullet.bulletsMin *= 2; - bullet.bulletsMax *= 2; - bullet.leadChance = 0; - - bullet.bntHurt = (bulletnt, hit) -> { - - if(bulletnt.worldObj.isRemote) - return; - - if(hit instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer) hit; - - player.inventory.dropAllItems(); - player.worldObj.newExplosion(bulletnt.getThrower(), player.posX, player.posY, player.posZ, 5.0F, true, true); - } - }; - - bullet.spentCasing = CASING4GAUGE.clone().register("4GaVoid").setColor(0x3F3F3F, SpentCasing.COLOR_CASE_4GA); - - return bullet; - } - - public static BulletConfiguration get4GaugeQuackConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.QUACK)); - bullet.velocity *= 2D; - bullet.spread = 0.0F; - bullet.gravity = 0.0D; - bullet.wear = 10; - bullet.explosive = 1F; - bullet.style = BulletConfiguration.STYLE_BOLT; - bullet.trail = 4; - bullet.vPFX = "explode"; - - bullet.bntUpdate = (bulletnt) -> { - - if(!bulletnt.worldObj.isRemote) { - if(bulletnt.ticksExisted % 2 == 0) { - - List creatures = bulletnt.worldObj.getEntitiesWithinAABB(EntityCreature.class, bulletnt.boundingBox.expand(10, 10, 10)); - for(EntityCreature creature : creatures) { - - if(creature.getClass().getCanonicalName().startsWith("net.minecraft.entity.titan")) { - BulletConfigFactory.nuclearExplosion(creature, 0, 0, 0, ExplosionNukeSmall.PARAMS_TOTS); - - bulletnt.worldObj.removeEntity(creature); - bulletnt.worldObj.unloadEntities(new ArrayList() {{ add(creature); }}); - } - } - } - } - }; - - bullet.spentCasing = CASING4GAUGE.clone().register("4GaDucc").setColor(0x1E1E1E, SpentCasing.COLOR_CASE_4GA); - - return bullet; - } -} diff --git a/src/main/java/com/hbm/handler/guncfg/Gun50AEFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun50AEFactory.java deleted file mode 100644 index d03724f89..000000000 --- a/src/main/java/com/hbm/handler/guncfg/Gun50AEFactory.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.hbm.handler.guncfg; - -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.CasingEjector; -import com.hbm.handler.GunConfiguration; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ModItems; -import com.hbm.items.ItemAmmoEnums.Ammo50AE; -import com.hbm.lib.HbmCollection; -import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.particle.SpentCasing; -import com.hbm.particle.SpentCasing.CasingType; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -public class Gun50AEFactory { - - private static final CasingEjector EJECTOR_PISTOL; - private static final SpentCasing CASING50AE; - - static { - EJECTOR_PISTOL = new CasingEjector().setMotion(-0.3, 0.7, 0).setOffset(-0.5, 0, 0.5).setAngleRange(0.01F, 0.03F); - CASING50AE = new SpentCasing(CasingType.STRAIGHT).setScale(1.5F).setBounceMotion(0.01F, 0.03F).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(0.25F, 0.5D, 60, 20); - } - - public static GunConfiguration getBaseConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 10; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.reloadDuration = 10; - config.firingDuration = 0; - config.ammoCap = 7; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_CLASSIC; - config.reloadSound = GunConfiguration.RSOUND_REVOLVER; - config.firingSound = "hbm:weapon.deagleShoot"; - config.reloadSoundEnd = false; - - return config; - } - - public static GunConfiguration getDeagleConfig() { - - GunConfiguration config = getBaseConfig(); - - config.durability = 2500; - - config.name = "deagle"; - config.manufacturer = EnumGunManufacturer.MAGNUM_R_IMI; - - config.absoluteFOV = true; - config.zoomFOV = 0.5F; - - config.hasSights = true; - config.config = HbmCollection.ae50; - - config.ejector = EJECTOR_PISTOL; - - return config; - } - - private static float inaccuracy = 0.0005F; - public static BulletConfiguration get50AEConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_50ae.stackFromEnum(Ammo50AE.STOCK)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 28; - bullet.dmgMax = 32; - - bullet.spentCasing = CASING50AE.clone().register("50AEStock"); - - return bullet; - } - - public static BulletConfiguration get50APConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_50ae.stackFromEnum(Ammo50AE.AP)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 30; - bullet.dmgMax = 36; - bullet.leadChance = 10; - bullet.wear = 15; - - bullet.spentCasing = CASING50AE.clone().register("50AEAP"); - - return bullet; - } - - public static BulletConfiguration get50DUConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_50ae.stackFromEnum(Ammo50AE.DU)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 38; - bullet.dmgMax = 46; - bullet.leadChance = 50; - bullet.wear = 25; - - bullet.spentCasing = CASING50AE.clone().register("50AEDU"); - - return bullet; - } - - public static BulletConfiguration get50StarConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_50ae.stackFromEnum(Ammo50AE.STAR)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 52; - bullet.dmgMax = 60; - bullet.leadChance = 100; - bullet.wear = 25; - - bullet.spentCasing = CASING50AE.clone().register("50AEStar"); - - return bullet; - } - -} diff --git a/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java deleted file mode 100644 index 847a3f3ab..000000000 --- a/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java +++ /dev/null @@ -1,488 +0,0 @@ -package com.hbm.handler.guncfg; - -import java.util.ArrayList; - -import com.hbm.entity.projectile.EntityBulletBaseNT; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.CasingEjector; -import com.hbm.handler.GunConfiguration; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ModItems; -import com.hbm.items.ItemAmmoEnums.Ammo50BMG; -import com.hbm.items.ItemAmmoEnums.AmmoLunaticSniper; -import com.hbm.lib.HbmCollection; -import com.hbm.lib.RefStrings; -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.potion.HbmPotion; -import com.hbm.render.anim.BusAnimation; -import com.hbm.render.anim.BusAnimationSequence; -import com.hbm.render.anim.HbmAnimations.AnimType; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; -import com.hbm.util.ContaminationUtil; -import com.hbm.util.ContaminationUtil.ContaminationType; -import com.hbm.util.ContaminationUtil.HazardType; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.ResourceLocation; - -public class Gun50BMGFactory { - - private static final CasingEjector EJECTOR_BMG; - private static final CasingEjector EJECTOR_SNIPER; - private static final SpentCasing CASING50BMG; - private static final SpentCasing CASINGLUNA; - - static { - EJECTOR_BMG = new CasingEjector().setMotion(-0.35, 0.9, 0).setOffset(-0.45, -0.2, 0.35).setAngleRange(0.01F, 0.05F); - EJECTOR_SNIPER = new CasingEjector().setMotion(-2, 0.15, 0).setOffset(-0.45, -0.2, 0.35).setAngleRange(0.02F, 0.05F); - CASING50BMG = new SpentCasing(CasingType.BOTTLENECK).setScale(3F).setBounceMotion(0.01F, 0.05F).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(0.125F, 0.5D, 60, 20); - CASINGLUNA = new SpentCasing(CasingType.BOTTLENECK).setScale(4F).setBounceMotion(0.02F, 0.05F).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(0.125F, 0.5D, 60, 30); - } - - public static BulletConfiguration getLunaticSabotRound() { - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_luna_sniper.stackFromEnum(AmmoLunaticSniper.SABOT)); - bullet.spread = 0.0F; - bullet.dmgMax = 500F; - bullet.dmgMin = 450F; - bullet.headshotMult = 2.5F; - bullet.wear = 2000; - bullet.velocity = 10F; - bullet.doesPenetrate = true; - bullet.leadChance = 20; - - bullet.blockDamage = 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"); - - return bullet; - } - - public static BulletConfiguration getLunaticIncendiaryRound() { - BulletConfiguration bullet = getLunaticSabotRound().clone(); - - bullet.ammo = new ComparableStack(ModItems.ammo_luna_sniper.stackFromEnum(AmmoLunaticSniper.INCENDIARY)); - - bullet.ammo.meta = 1; - bullet.incendiary = 10; - bullet.bntImpact = (projectile, x, y, z, sideHit) -> projectile.worldObj.newExplosion(projectile, x, y, z, 5.0F, true, false); - - bullet.spentCasing = CASINGLUNA.clone().register("LunaInc"); - - return bullet; - } - - public static BulletConfiguration getLunaticExplosiveRound() { - BulletConfiguration bullet = getLunaticSabotRound().clone(); - - bullet.ammo = new ComparableStack(ModItems.ammo_luna_sniper.stackFromEnum(AmmoLunaticSniper.EXPLOSIVE)); - - bullet.ammo.meta = 2; - bullet.explosive = 25; - bullet.destroysBlocks = true; - bullet.bntImpact = (projectile, x, y, z, sideHit) -> projectile.worldObj.newExplosion(projectile, x, y, z, 25.0F, true, false); - - bullet.spentCasing = CASINGLUNA.clone().register("LunaExp"); - - return bullet; - } - - public static GunConfiguration getAR15Config() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 1; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_AUTO; - config.reloadDuration = 20; - config.firingDuration = 0; - config.reloadSoundEnd = false; - config.ammoCap = 50; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.allowsInfinity = true; - config.crosshair = Crosshair.NONE; - config.durability = 100_000; - config.reloadSound = GunConfiguration.RSOUND_MAG; - config.firingSound = "hbm:turret.howard_fire"; - - config.name = "ar15_50"; - config.manufacturer = EnumGunManufacturer.ARMALITE; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.BMG50_FLECHETTE_AM); - config.config.add(BulletConfigSyncingUtil.BMG50_FLECHETTE_PO); - config.config.add(BulletConfigSyncingUtil.BMG50_FLECHETTE_NORMAL); - config.config.add(BulletConfigSyncingUtil.BMG50_NORMAL); - config.config.add(BulletConfigSyncingUtil.BMG50_INCENDIARY); - config.config.add(BulletConfigSyncingUtil.BMG50_PHOSPHORUS); - config.config.add(BulletConfigSyncingUtil.BMG50_EXPLOSIVE); - config.config.add(BulletConfigSyncingUtil.BMG50_AP); - config.config.add(BulletConfigSyncingUtil.BMG50_DU); - config.config.add(BulletConfigSyncingUtil.BMG50_STAR); - config.config.add(BulletConfigSyncingUtil.CHL_BMG50); - config.config.add(BulletConfigSyncingUtil.BMG50_SLEEK); - - config.ejector = EJECTOR_BMG; - - config.animations.put(AnimType.CYCLE, new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addKeyframePosition(1, 0, 0, 25) - .addKeyframePosition(0, 0, 0, 75) - ) - ); - config.animations.put(AnimType.RELOAD, new BusAnimation() - .addBus("TILT", new BusAnimationSequence() - .addKeyframePosition(1, 0, 0, 125) - .addKeyframePosition(1, 0, 0, 750) - .addKeyframePosition(0, 0, 0, 125) - ) - .addBus("MAG", new BusAnimationSequence() - .addKeyframePosition(0, 0, 1, 200) - .addKeyframePosition(1, 0, 1, 200) - .addKeyframePosition(0, 0, 0, 200) - ) - ); - - return config; - } - - public static GunConfiguration getAR15BurstConfig(){ - GunConfiguration config = getAR15Config(); - config.rateOfFire = 4; - config.roundsPerBurst = 3; - config.firingDuration = 2; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_BURST; - - return config; - } - - public static GunConfiguration getM2Config() { - GunConfiguration config = getAR15Config(); - - config.rateOfFire = 2; - config.durability *= 10; - config.ammoCap = 0; - config.crosshair = Crosshair.L_BOX; - config.reloadType = GunConfiguration.RELOAD_NONE; - config.hasSights = true; - config.zoomFOV = 0.66F; - config.allowsInfinity = true; - config.durability = 10_000; - config.firingSound = "hbm:turret.chekhov_fire"; - config.equipSound = "hbm:turret.howard_reload"; - - config.name = "m2"; - config.manufacturer = EnumGunManufacturer.COLT; - config.comment.add("\"A single man can do unbelievable things..."); - config.comment.add("A single man with a .50 cal machine gun can do even more.\""); - - config.animations.put(AnimType.CYCLE, new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addKeyframePosition(1, 0, 0, 25) - .addKeyframePosition(0, 0, 0, 75) - ) - ); - - config.ejector = EJECTOR_BMG; - - config.config.clear(); - config.config.addAll(HbmCollection.bmg50); - - return config; - } - - public static final ResourceLocation scope_luna = new ResourceLocation(RefStrings.MODID, "textures/misc/scope_luna.png"); - - public static GunConfiguration getLunaticMarksman() { - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 15; - config.reloadDuration = 15; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.roundsPerCycle = 1; - config.firingSound = "hbm:weapon.hicalShot"; - config.firingPitch = 0.75F; - config.ammoCap = 4; - config.reloadType = GunConfiguration.RELOAD_SINGLE; - config.hasSights = true; - config.zoomFOV = 0.2F; //x5 magnification - config.scopeTexture = scope_luna; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_CLASSIC; - config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; - config.reloadSoundEnd = true; - config.durability = 500_000; - - config.name = "lunaSniper"; - config.manufacturer = EnumGunManufacturer.LUNA; - config.comment.add("\"You do not spark joy\""); - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.ROUND_LUNA_SNIPER_SABOT); - config.config.add(BulletConfigSyncingUtil.ROUND_LUNA_SNIPER_INCENDIARY); - config.config.add(BulletConfigSyncingUtil.ROUND_LUNA_SNIPER_EXPLOSIVE); - - config.animations.put(AnimType.CYCLE, - new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addKeyframePosition(-0.45, 0.15, 0, 40) // Moves back and raise slightly - .addKeyframePosition(0, 0, 0, 75)) // Then forward again - .addBus("EJECT", new BusAnimationSequence().addKeyframePosition(0, 0, 0, 30) // Wait - .addKeyframePosition(50, 0, 0, 120))); // Fly // out - - config.ejector = EJECTOR_SNIPER; - return config; - } - - static float inaccuracy = 2.5F; - public static BulletConfiguration get50BMGConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.STOCK)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 30; - bullet.dmgMax = 36; - - bullet.spentCasing = CASING50BMG.clone().register("50BMGStock"); - - return bullet; - } - - public static BulletConfiguration get50BMGFireConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.INCENDIARY)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 30; - bullet.dmgMax = 36; - bullet.wear = 15; - bullet.incendiary = 5; - - bullet.spentCasing = CASING50BMG.clone().register("50BMGInc"); - - return bullet; - } - - public static BulletConfiguration get50BMGPhosphorusConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.PHOSPHORUS)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 30; - bullet.dmgMax = 36; - bullet.wear = 15; - bullet.incendiary = 5; - bullet.doesPenetrate = false; - - PotionEffect eff = new PotionEffect(HbmPotion.phosphorus.id, 20 * 20, 0, true); - eff.getCurativeItems().clear(); - bullet.effects = new ArrayList(); - bullet.effects.add(new PotionEffect(eff)); - - bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "vanillaburst"); - data.setString("mode", "flame"); - data.setInteger("count", 15); - data.setDouble("motion", 0.05D); - - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX, bulletnt.posY, bulletnt.posZ), new TargetPoint(bulletnt.dimension, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 50)); - }; - - bullet.spentCasing = CASING50BMG.clone().register("50BMGPhos"); - - return bullet; - } - - public static BulletConfiguration get50BMGExplosiveConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.EXPLOSIVE)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 60; - bullet.dmgMax = 64; - bullet.wear = 25; - bullet.explosive = 1; - - bullet.spentCasing = CASING50BMG.clone().register("50BMGExp"); - - return bullet; - } - - public static BulletConfiguration get50BMGAPConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.AP)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 62; - bullet.dmgMax = 68; - bullet.wear = 15; - bullet.leadChance = 10; - - bullet.spentCasing = CASING50BMG.clone().register("50BMGAP"); - - return bullet; - } - - public static BulletConfiguration get50BMGDUConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.DU)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 80; - bullet.dmgMax = 86; - bullet.wear = 25; - bullet.leadChance = 50; - - bullet.spentCasing = CASING50BMG.clone().register("50BMGDU"); - - return bullet; - } - - public static BulletConfiguration get50BMGStarConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.STAR)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 98; - bullet.dmgMax = 102; - bullet.wear = 25; - bullet.leadChance = 100; - - bullet.spentCasing = CASING50BMG.clone().register("50BMGStar"); - - return bullet; - } - - public static BulletConfiguration get50BMGSleekConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.SLEEK)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 50; - bullet.dmgMax = 70; - bullet.wear = 10; - bullet.leadChance = 100; - bullet.doesPenetrate = false; - - bullet.bntHit = (bulletnt, hit) -> { - - if(bulletnt.worldObj.isRemote) - return; - - EntityBulletBaseNT meteor = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); - meteor.setPosition(hit.posX, hit.posY + 30 + meteor.worldObj.rand.nextInt(10), hit.posZ); - meteor.motionY = -1D; - meteor.setThrower(bulletnt.getThrower()); - bulletnt.worldObj.spawnEntityInWorld(meteor); - }; - - bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - - if(bulletnt.worldObj.isRemote) - return; - - if(y == -1) - return; - - EntityBulletBaseNT meteor = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); - meteor.setPosition(bulletnt.posX, bulletnt.posY + 30 + meteor.worldObj.rand.nextInt(10), bulletnt.posZ); - meteor.motionY = -1D; - meteor.setThrower(bulletnt.getThrower()); - bulletnt.worldObj.spawnEntityInWorld(meteor); - }; - - bullet.spentCasing = CASING50BMG.clone().register("50BMGIF"); - - return bullet; - } - - public static BulletConfiguration get50BMGFlechetteConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.FLECHETTE)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 50; - bullet.dmgMax = 54; - bullet.style = bullet.STYLE_FLECHETTE; - BulletConfigFactory.makeFlechette(bullet); - - bullet.spentCasing = CASING50BMG.clone().register("50BMGFlech"); - - return bullet; - } - - public static BulletConfiguration get50BMGFlechetteAMConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.FLECHETTE_AM)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 60; - bullet.dmgMax = 64; - bullet.style = bullet.STYLE_FLECHETTE; - BulletConfigFactory.makeFlechette(bullet); - - bullet.bntHit = (bulletnt, hit) -> { - - if(bulletnt.worldObj.isRemote) - return; - - if(hit instanceof EntityLivingBase) { - ContaminationUtil.contaminate((EntityLivingBase) hit, HazardType.RADIATION, ContaminationType.RAD_BYPASS, 100F); - } - }; - - bullet.spentCasing = CASING50BMG.clone().register("50BMGAM"); - - return bullet; - } - - public static BulletConfiguration get50BMGFlechettePOConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.FLECHETTE_PO)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 60; - bullet.dmgMax = 64; - bullet.style = bullet.STYLE_FLECHETTE; - BulletConfigFactory.makeFlechette(bullet); - - bullet.bntHit = (bulletnt, hit) -> { - - if(bulletnt.worldObj.isRemote) - return; - - if(hit instanceof EntityLivingBase) { - ContaminationUtil.contaminate((EntityLivingBase) hit, HazardType.RADIATION, ContaminationType.RAD_BYPASS, 50F); - } - }; - - bullet.spentCasing = CASING50BMG.clone().register("50BMGPO"); - - return bullet; - } -} diff --git a/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java deleted file mode 100644 index 4c0f19804..000000000 --- a/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java +++ /dev/null @@ -1,430 +0,0 @@ -package com.hbm.handler.guncfg; - -import java.util.ArrayList; - -import com.hbm.entity.projectile.EntityBulletBaseNT; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.CasingEjector; -import com.hbm.handler.GunConfiguration; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ItemAmmoEnums.Ammo556mm; -import com.hbm.items.ModItems; -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.potion.HbmPotion; -import com.hbm.render.anim.BusAnimation; -import com.hbm.render.anim.BusAnimationSequence; -import com.hbm.render.anim.HbmAnimations.AnimType; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.PotionEffect; - -public class Gun556mmFactory { - - private static final CasingEjector EJECTOR_RIFLE; - private static final CasingEjector EJECTOR_GRENADE; - private static final SpentCasing CASING556; - - static { - EJECTOR_RIFLE = new CasingEjector().setMotion(-0.35, 0.6, 0).setOffset(-0.35, 0, 0.35).setAngleRange(0.01F, 0.03F); - EJECTOR_GRENADE = new CasingEjector().setAngleRange(0.02F, 0.03F).setDelay(30); - CASING556 = new SpentCasing(CasingType.BOTTLENECK).setScale(1.25F).setBounceMotion(0.01F, 0.03F).setColor(SpentCasing.COLOR_CASE_BRASS); - } - - public static GunConfiguration getEuphieConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 2; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_AUTO; - config.hasSights = false; - config.reloadDuration = 20; - config.firingDuration = 0; - config.ammoCap = 40; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_CROSS; - config.durability = 10000; - config.reloadSound = GunConfiguration.RSOUND_MAG; - config.firingSound = "hbm:weapon.hksShoot"; - config.reloadSoundEnd = false; - - config.name = "baeAR"; - config.manufacturer = EnumGunManufacturer.BAE; - - config.comment.add("Why is this gun so sticky?"); - - //config.config = new ArrayList(); - //config.config.add(BulletConfigSyncingUtil.R556_GOLD); - - config.config = HbmCollection.r556; - - return config; - } - - public static GunConfiguration getSPIWConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 3; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_AUTO; - config.hasSights = true; - config.reloadDuration = 25; - config.firingDuration = 0; - config.ammoCap = 20; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_BOX; - config.durability = 7000; - config.reloadSound = GunConfiguration.RSOUND_MAG; - config.firingSound = "hbm:weapon.hksShoot"; - config.reloadSoundEnd = false; - - config.animations.put(AnimType.CYCLE, new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addKeyframePosition(0.5, 0, 0, 25) - .addKeyframePosition(0, 0, 0, 75) - ) - ); - - config.name = "spiw"; - config.manufacturer = EnumGunManufacturer.H_AND_R; - - config.comment.add("Launch some flechettes in the breeze"); - config.comment.add("Find his arms nailed to the trees"); - config.comment.add("Napalm sticks to kids"); - - config.config = HbmCollection.r556Flechette; - - config.ejector = EJECTOR_RIFLE; - - return config; - } - - public static GunConfiguration getGLauncherConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 60; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.hasSights = true; - config.reloadDuration = 40; - config.firingDuration = 0; - config.ammoCap = 0; - config.reloadType = GunConfiguration.RELOAD_NONE; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_CIRCUMFLEX; - config.firingSound = "hbm:weapon.glauncher"; - config.reloadSound = GunConfiguration.RSOUND_GRENADE; - config.reloadSoundEnd = false; - - config.config = HbmCollection.grenade; - - config.ejector = EJECTOR_GRENADE; - - return config; - } - - private static float inaccuracy = 2.5F; - public static BulletConfiguration get556Config() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.STOCK)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 16; - bullet.dmgMax = 20; - - bullet.spentCasing = CASING556.clone().register("556Stock"); - - return bullet; - } - - public static BulletConfiguration get556GoldConfig() { - - BulletConfiguration bullet = get556Config(); - - bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.GOLD)); - bullet.dmgMin = 250; - bullet.dmgMax = 320; - bullet.spread = 0.0F; - - bullet.spentCasing = null; - - return bullet; - } - - public static BulletConfiguration get556PhosphorusConfig() { - - BulletConfiguration bullet = get556Config(); - - bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.PHOSPHORUS)); - bullet.wear = 15; - bullet.incendiary = 5; - bullet.doesPenetrate = false; - - PotionEffect eff = new PotionEffect(HbmPotion.phosphorus.id, 20 * 20, 0, true); - eff.getCurativeItems().clear(); - bullet.effects = new ArrayList(); - bullet.effects.add(new PotionEffect(eff)); - - bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "vanillaburst"); - data.setString("mode", "flame"); - data.setInteger("count", 15); - data.setDouble("motion", 0.05D); - - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX, bulletnt.posY, bulletnt.posZ), new TargetPoint(bulletnt.dimension, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 50)); - }; - - bullet.spentCasing = CASING556.clone().register("556Phos"); - - return bullet; - } - - public static BulletConfiguration get556APConfig() { - - BulletConfiguration bullet = get556Config(); - - bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.AP)); - bullet.dmgMin = 20; - bullet.dmgMax = 26; - bullet.wear = 15; - bullet.leadChance = 10; - - bullet.spentCasing = CASING556.clone().register("556AP"); - - return bullet; - } - - public static BulletConfiguration get556DUConfig() { - - BulletConfiguration bullet = get556Config(); - - bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.DU)); - bullet.dmgMin = 24; - bullet.dmgMax = 32; - bullet.wear = 25; - bullet.leadChance = 50; - - bullet.spentCasing = CASING556.clone().register("556DU"); - - return bullet; - } - - public static BulletConfiguration get556StarConfig() { - - BulletConfiguration bullet = get556Config(); - - bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.STAR)); - bullet.dmgMin = 30; - bullet.dmgMax = 36; - bullet.wear = 25; - bullet.leadChance = 100; - - bullet.spentCasing = CASING556.clone().register("556Star"); - - return bullet; - } - - public static BulletConfiguration get556SleekConfig() { - - BulletConfiguration bullet = get556Config(); - - bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.SLEEK)); - bullet.dmgMin = 45; - bullet.dmgMax = 50; - bullet.wear = 10; - bullet.leadChance = 100; - bullet.doesPenetrate = false; - - bullet.bntHit = (bulletnt, hit) -> { - - if(bulletnt.worldObj.isRemote) - return; - - EntityBulletBaseNT meteor = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); - meteor.setPosition(hit.posX, hit.posY + 30 + meteor.worldObj.rand.nextInt(10), hit.posZ); - meteor.motionY = -1D; - meteor.setThrower(bulletnt.getThrower()); - bulletnt.worldObj.spawnEntityInWorld(meteor); - }; - - bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - - if(bulletnt.worldObj.isRemote) - return; - - if(y == -1) - return; - - EntityBulletBaseNT meteor = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); - meteor.setPosition(bulletnt.posX, bulletnt.posY + 30 + meteor.worldObj.rand.nextInt(10), bulletnt.posZ); - meteor.motionY = -1D; - meteor.setThrower(bulletnt.getThrower()); - bulletnt.worldObj.spawnEntityInWorld(meteor); - }; - - bullet.spentCasing = CASING556.clone().register("556IF"); - - return bullet; - } - - public static BulletConfiguration get556TracerConfig() { - - BulletConfiguration bullet = get556Config(); - - bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.TRACER)); - bullet.vPFX = "reddust"; - - bullet.spentCasing = CASING556.clone().register("556Trac"); - - return bullet; - } - - public static BulletConfiguration get556FlechetteConfig() { - - BulletConfiguration bullet = get556Config(); - - bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.FLECHETTE)); - bullet.dmgMin = 26; - bullet.dmgMax = 32; - bullet.HBRC = 2; - bullet.LBRC = 95; - bullet.wear = 15; - bullet.style = BulletConfiguration.STYLE_FLECHETTE; - bullet.doesPenetrate = false; - BulletConfigFactory.makeFlechette(bullet); - - bullet.spentCasing = CASING556.clone().register("556Flec"); - - return bullet; - } - - public static BulletConfiguration get556FlechetteIncendiaryConfig() { - - BulletConfiguration bullet = get556FlechetteConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.FLECHETTE_INCENDIARY)); - bullet.incendiary = 5; - BulletConfigFactory.makeFlechette(bullet); - - bullet.spentCasing = CASING556.clone().register("556FlecInc"); - - return bullet; - } - - public static BulletConfiguration get556FlechettePhosphorusConfig() { - - BulletConfiguration bullet = get556FlechetteConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.FLECHETTE_PHOSPHORUS)); - bullet.incendiary = 5; - - PotionEffect eff = new PotionEffect(HbmPotion.phosphorus.id, 20 * 20, 0, true); - eff.getCurativeItems().clear(); - bullet.effects = new ArrayList(); - bullet.effects.add(new PotionEffect(eff)); - - bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "vanillaburst"); - data.setString("mode", "flame"); - data.setInteger("count", 15); - data.setDouble("motion", 0.05D); - - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX, bulletnt.posY, bulletnt.posZ), new TargetPoint(bulletnt.dimension, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 50)); - }; - - bullet.spentCasing = CASING556.clone().register("556FlecPhos"); - - return bullet; - } - - public static BulletConfiguration get556FlechetteDUConfig() { - - BulletConfiguration bullet = get556FlechetteConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.FLECHETTE_DU)); - bullet.dmgMin = 46; - bullet.dmgMax = 52; - bullet.wear = 25; - bullet.leadChance = 50; - bullet.doesPenetrate = true; - - bullet.spentCasing = CASING556.clone().register("556FlecDU"); - - return bullet; - } - - public static BulletConfiguration get556FlechetteSleekConfig() { - - BulletConfiguration bullet = get556FlechetteConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.FLECHETTE_SLEEK)); - bullet.dmgMin = 45; - bullet.dmgMax = 50; - bullet.wear = 10; - bullet.leadChance = 50; - bullet.doesPenetrate = false; - - bullet.bntHit = (bulletnt, hit) -> { - - if(bulletnt.worldObj.isRemote) - return; - - EntityBulletBaseNT meteor = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); - meteor.setPosition(hit.posX, hit.posY + 30 + meteor.worldObj.rand.nextInt(10), hit.posZ); - meteor.motionY = -1D; - meteor.setThrower(bulletnt.getThrower()); - bulletnt.worldObj.spawnEntityInWorld(meteor); - }; - - bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - - if(bulletnt.worldObj.isRemote) - return; - - if(y == -1) - return; - - EntityBulletBaseNT meteor = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); - meteor.setPosition(bulletnt.posX, bulletnt.posY + 30 + meteor.worldObj.rand.nextInt(10), bulletnt.posZ); - meteor.motionY = -1D; - meteor.setThrower(bulletnt.getThrower()); - bulletnt.worldObj.spawnEntityInWorld(meteor); - }; - - bullet.spentCasing = CASING556.clone().register("556FlecIF"); - - return bullet; - } - - public static BulletConfiguration get556KConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.K)); - bullet.dmgMin = 0; - bullet.dmgMax = 0; - bullet.maxAge = 0; - - return bullet; - } -} diff --git a/src/main/java/com/hbm/handler/guncfg/Gun5mmFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun5mmFactory.java deleted file mode 100644 index 88c83cda1..000000000 --- a/src/main/java/com/hbm/handler/guncfg/Gun5mmFactory.java +++ /dev/null @@ -1,146 +0,0 @@ -package com.hbm.handler.guncfg; - -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.CasingEjector; -import com.hbm.handler.GunConfiguration; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ItemAmmoEnums.Ammo5mm; -import com.hbm.items.ModItems; -import com.hbm.lib.HbmCollection; -import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.particle.SpentCasing; -import com.hbm.particle.SpentCasing.CasingType; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -public class Gun5mmFactory { - - private static final CasingEjector EJECTOR_MINIGUN; - private static final SpentCasing CASING5MM; - - static { - EJECTOR_MINIGUN = new CasingEjector().setMotion(-0.4, 0.1, 0).setOffset(-0.35, -0.2, 0.35).setAngleRange(0.01F, 0.03F).setAmount(5); - CASING5MM = new SpentCasing(CasingType.STRAIGHT).setScale(1.25F).setBounceMotion(0.05F, 0.02F).setColor(SpentCasing.COLOR_CASE_BRASS).setMaxAge(100); - } - - public static GunConfiguration getMinigunConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 1; - config.roundsPerCycle = 5; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_AUTO; - config.reloadDuration = 20; - config.firingDuration = 0; - config.ammoCap = 0; - config.reloadType = GunConfiguration.RELOAD_NONE; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_CIRCLE; - config.durability = 10000; - config.firingSound = "hbm:weapon.lacunaeShoot"; - - config.config = HbmCollection.r5; - - config.ejector = EJECTOR_MINIGUN; - - return config; - } - - public static GunConfiguration get53Config() { - - GunConfiguration config = getMinigunConfig(); - - config.name = "cz53"; - config.manufacturer = EnumGunManufacturer.ROCKWELL; - - return config; - } - - public static GunConfiguration get57Config() { - - GunConfiguration config = getMinigunConfig(); - - config.durability = 15000; - config.name = "cz57"; - config.manufacturer = EnumGunManufacturer.ROCKWELL; - - return config; - } - - public static GunConfiguration getLacunaeConfig() { - - GunConfiguration config = getMinigunConfig(); - - config.durability = 25000; - config.name = "lacunae"; - config.manufacturer = EnumGunManufacturer.ROCKWELL_U; - - config.config = HbmCollection.r5Bolt; - - return config; - } - - private static float inaccuracy = 10; - public static BulletConfiguration get5mmConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_5mm.stackFromEnum(Ammo5mm.STOCK)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 12; - bullet.dmgMax = 14; - - bullet.spentCasing = CASING5MM.clone().register("5mmStock"); - - return bullet; - } - - public static BulletConfiguration get5mmExplosiveConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_5mm.stackFromEnum(Ammo5mm.EXPLOSIVE)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 30; - bullet.dmgMax = 32; - bullet.explosive = 1F; - bullet.wear = 25; - - bullet.spentCasing = CASING5MM.clone().register("5mmExp"); - - return bullet; - } - - public static BulletConfiguration get5mmDUConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_5mm.stackFromEnum(Ammo5mm.DU)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 36; - bullet.dmgMax = 40; - bullet.wear = 25; - bullet.leadChance = 50; - - bullet.spentCasing = CASING5MM.clone().register("5mmDU"); - - return bullet; - } - - public static BulletConfiguration get5mmStarConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_5mm.stackFromEnum(Ammo5mm.STAR)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 46; - bullet.dmgMax = 50; - bullet.wear = 25; - bullet.leadChance = 100; - - bullet.spentCasing = CASING5MM.clone().register("5mmStar"); - - return bullet; - } - -} diff --git a/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java deleted file mode 100644 index 47ae1fb7d..000000000 --- a/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.hbm.handler.guncfg; - -import java.util.ArrayList; - -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.GunConfiguration; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ItemAmmoEnums.Ammo75Bolt; -import com.hbm.items.ModItems; -import com.hbm.lib.HbmCollection; -import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.PacketDispatcher; -import com.hbm.potion.HbmPotion; -import com.hbm.render.anim.BusAnimation; -import com.hbm.render.anim.BusAnimationSequence; -import com.hbm.render.anim.HbmAnimations.AnimType; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.PotionEffect; - -public class Gun75BoltFactory { - - public static GunConfiguration getBolterConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 2; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_AUTO; - config.hasSights = false; - config.reloadDuration = 40; - config.firingDuration = 0; - config.ammoCap = 30; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.allowsInfinity = true; - config.crosshair = Crosshair.NONE; - config.durability = 10000; - config.reloadSound = GunConfiguration.RSOUND_MAG; - config.firingSound = "hbm:weapon.hksShoot"; - config.reloadSoundEnd = false; - config.showAmmo = false; - - config.animations.put(AnimType.CYCLE, new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addKeyframePosition(1, 0, 0, 25) - .addKeyframePosition(0, 0, 0, 75) - ) - .addBus("EJECT", new BusAnimationSequence() - .addKeyframePosition(0, 0, 0, 25) - .addKeyframePosition(0, 0, 1, 75) - ) - ); - - config.animations.put(AnimType.RELOAD, new BusAnimation() - .addBus("TILT", new BusAnimationSequence() - .addKeyframePosition(1, 0, 0, 250) - .addKeyframePosition(1, 0, 0, 1500) - .addKeyframePosition(0, 0, 0, 250) - ) - .addBus("MAG", new BusAnimationSequence() - .addKeyframePosition(0, 0, 1, 500) - .addKeyframePosition(1, 0, 1, 500) - .addKeyframePosition(0, 0, 0, 500) - ) - ); - - config.name = "bolter"; - config.manufacturer = EnumGunManufacturer.CERIX; - - config.config = HbmCollection.b75; - - return config; - } - - private static float inaccuracy = 0.5F; - public static BulletConfiguration get75BoltConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_75bolt.stackFromEnum(Ammo75Bolt.STOCK)); - bullet.ammoCount = 30; - bullet.spread *= inaccuracy; - bullet.dmgMin = 74; - bullet.dmgMax = 82; - bullet.doesRicochet = false; - bullet.explosive = 0.25F; - - bullet.bntHurt = (bulletnt, hit) -> { - - if(bulletnt.worldObj.isRemote) - return; - - if(hit instanceof EntityLivingBase) { - EntityLivingBase living = (EntityLivingBase) hit; - float f = living.getHealth(); - - if(f > 0) { - f = Math.max(0, f - 2); - living.setHealth(f); - - if(f == 0) - living.onDeath(ModDamageSource.lead); - } - } - }; - - return bullet; - } - - public static BulletConfiguration get75BoltIncConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_75bolt.stackFromEnum(Ammo75Bolt.INCENDIARY)); - bullet.ammoCount = 30; - bullet.spread *= inaccuracy; - bullet.dmgMin = 72; - bullet.dmgMax = 76; - bullet.doesRicochet = false; - bullet.explosive = 0.25F; - - bullet.incendiary = 5; - bullet.doesPenetrate = false; - - PotionEffect eff = new PotionEffect(HbmPotion.phosphorus.id, 20 * 20, 0, true); - eff.getCurativeItems().clear(); - bullet.effects = new ArrayList(); - bullet.effects.add(new PotionEffect(eff)); - - bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "vanillaburst"); - data.setString("mode", "flame"); - data.setInteger("count", 15); - data.setDouble("motion", 0.05D); - - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX, bulletnt.posY, bulletnt.posZ), new TargetPoint(bulletnt.dimension, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 50)); - }; - - return bullet; - } - - public static BulletConfiguration get75BoltHEConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_75bolt.stackFromEnum(Ammo75Bolt.HE)); - bullet.ammoCount = 30; - bullet.spread *= inaccuracy; - bullet.dmgMin = 94; - bullet.dmgMax = 100; - bullet.doesRicochet = false; - bullet.explosive = 2.5F; - bullet.blockDamage = false; - - return bullet; - } -} diff --git a/src/main/java/com/hbm/handler/guncfg/Gun762mmFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun762mmFactory.java deleted file mode 100644 index 3419a631b..000000000 --- a/src/main/java/com/hbm/handler/guncfg/Gun762mmFactory.java +++ /dev/null @@ -1,365 +0,0 @@ -package com.hbm.handler.guncfg; - -import java.util.ArrayList; - -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.CasingEjector; -import com.hbm.handler.GunConfiguration; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ModItems; -import com.hbm.items.ItemAmmoEnums.Ammo762NATO; -import com.hbm.lib.HbmCollection; -import com.hbm.lib.RefStrings; -import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.particle.SpentCasing; -import com.hbm.particle.SpentCasing.CasingType; -import com.hbm.potion.HbmPotion; -import com.hbm.render.anim.BusAnimation; -import com.hbm.render.anim.BusAnimationSequence; -import com.hbm.render.anim.HbmAnimations.AnimType; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.ResourceLocation; - -public class Gun762mmFactory { - - public static final ResourceLocation scope_bolt = new ResourceLocation(RefStrings.MODID, "textures/misc/scope_bolt.png"); - - private static final CasingEjector EJECTOR_RIFLE; - private static final CasingEjector EJECTOR_BOLT; - private static final SpentCasing CASING762NATO; - - static { - EJECTOR_RIFLE = new CasingEjector().setMotion(-0.35, 0.6, 0).setOffset(-0.35, 0, 0.35).setAngleRange(0.01F, 0.03F); - EJECTOR_BOLT = new CasingEjector().setMotion(-0.35, 0.6, 0).setOffset(-0.35, 0, 0.35).setAngleRange(0.01F, 0.03F).setDelay(15); - CASING762NATO = new SpentCasing(CasingType.BOTTLENECK).setScale(1.7F).setBounceMotion(0.01F, 0.05F).setColor(SpentCasing.COLOR_CASE_BRASS); - } - - public static GunConfiguration getCalamityConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 1; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_AUTO; - config.reloadDuration = 20; - config.firingDuration = 0; - config.ammoCap = 50; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.allowsInfinity = true; - config.crosshair = Crosshair.NONE; - config.durability = 15 * 50 * 10; //15 * capacity * default wear - config.reloadSound = GunConfiguration.RSOUND_MAG; - config.firingSound = "hbm:weapon.calShoot"; - config.reloadSoundEnd = false; - - config.animations.put(AnimType.CYCLE, new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addKeyframePosition(1, 0, 0, 25) - .addKeyframePosition(0, 0, 0, 75) - ) - ); - - config.animations.put(AnimType.RELOAD, new BusAnimation() - .addBus("MAG", new BusAnimationSequence() - .addKeyframePosition(0, -1, 0, 500) - .addKeyframePosition(0, 0, 0, 500) - ) - ); - - config.name = "mg3"; - config.manufacturer = EnumGunManufacturer.WGW; - - config.config = HbmCollection.r762; - - config.ejector = EJECTOR_RIFLE; - - return config; - } - - public static GunConfiguration getUACDMRConfig() { - final GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 4; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_AUTO; - config.reloadDuration = 30; - config.firingDuration = 8; - config.ammoCap = 30; - config.durability = 30000; - config.reloadType = 1; - config.allowsInfinity = true; - config.hasSights = true; - config.crosshair = Crosshair.CROSS; - config.reloadSound = "hbm:weapon.DMRMagInPB3"; - config.firingSound = "hbm:weapon.DMRShootPB3Alt"; - config.reloadSoundEnd = true; - - config.name = "uacDMR"; - config.manufacturer = EnumGunManufacturer.UAC; - - config.config.addAll(HbmCollection.r762); - - config.ejector = EJECTOR_RIFLE; - - return config; - } - - public static GunConfiguration getUACCarbineConfig() { - final GunConfiguration config = getUACDMRConfig(); - - config.rateOfFire = 2; - config.reloadDuration = 20; - config.ammoCap = 40; - config.durability = 40000; - config.crosshair = Crosshair.SPLIT; - config.reloadSound = "hbm:weapon.carbineMagInPB3"; - config.firingSound = "hbm:weapon.carbineShootPB3"; - - config.name = "uacCarbine"; - - return config; - } - - public static GunConfiguration getUACLMGConfig() { - final GunConfiguration config = getUACCarbineConfig(); - - config.ammoCap = 60; - config.durability = 50000; - config.crosshair = Crosshair.BOX; - config.reloadSound = "hbm:weapon.LMGMagInPB3"; - config.firingSound = "hbm:weapon.LMGShootPB3Alt"; - - config.name = "uacLMG"; - - return config; - } - - public static GunConfiguration getM60Config() { - final GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 2; - config.durability = 10000; - config.roundsPerCycle = 1; - config.firingMode = GunConfiguration.FIRE_AUTO; - config.reloadType = GunConfiguration.RELOAD_NONE; - config.ammoCap = 0; - config.allowsInfinity = true; - config.hasSights = true; - config.crosshair = Crosshair.L_BOX; - config.firingSound = "hbm:weapon.LMGShootPB3"; - - config.name = "m60"; - config.manufacturer = EnumGunManufacturer.SACO; - config.comment.add("\"Get some!\""); - config.comment.add(" ~ Stuart Brown (aka Ahoy)"); - config.config.addAll(HbmCollection.r762); - - config.ejector = EJECTOR_RIFLE; - - return config; - } - - public static GunConfiguration getBoltConfig() { - - GunConfiguration config = Gun20GaugeFactory.getShotgunConfig(); - - config.ammoCap = 5; - config.durability = 3000; - config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; - config.firingSound = "hbm:weapon.revolverShoot"; - config.firingPitch = 0.75F; - config.crosshair = Crosshair.CIRCLE; - - config.animations.put(AnimType.CYCLE, new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addKeyframePosition(1, 0, 0, 25) - .addKeyframePosition(0, 0, 0, 75) - ) - .addBus("LEVER_PULL", new BusAnimationSequence() - .addKeyframePosition(0, 0, 0, 375) //wait out recoil and lever flick - .addKeyframePosition(-1, 0, 0, 375) //pull back bolt - .addKeyframePosition(0, 0, 0, 375) //release bolt - ) - .addBus("LEVER_ROTATE", new BusAnimationSequence() - .addKeyframePosition(0, 0, 0, 250) //wait out recoil - .addKeyframePosition(1, 0, 0, 125) //flick up lever in 125ms - .addKeyframePosition(1, 0, 0, 750) //pull action - .addKeyframePosition(0, 0, 0, 125) //flick down lever again - ) - ); - - config.name = "win20Inox"; - config.manufacturer = EnumGunManufacturer.WINCHESTER; - - config.ejector = EJECTOR_BOLT; - - config.config = HbmCollection.r762; - - return config; - } - - public static GunConfiguration getBoltGreenConfig() { - - GunConfiguration config = Gun20GaugeFactory.getShotgunConfig(); - - config.ammoCap = 5; - config.durability = 2500; - config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; - config.firingSound = "hbm:weapon.revolverShoot"; - config.firingPitch = 0.75F; - config.crosshair = Crosshair.CIRCLE; - - config.animations.put(AnimType.CYCLE, new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addKeyframePosition(1, 0, 0, 25) - .addKeyframePosition(0, 0, 0, 75) - ) - .addBus("LEVER_PULL", new BusAnimationSequence() - .addKeyframePosition(0, 0, 0, 375) //wait out recoil and lever flick - .addKeyframePosition(-1, 0, 0, 375) //pull back bolt - .addKeyframePosition(0, 0, 0, 375) //release bolt - ) - .addBus("LEVER_ROTATE", new BusAnimationSequence() - .addKeyframePosition(0, 0, 0, 250) //wait out recoil - .addKeyframePosition(1, 0, 0, 125) //flick up lever in 125ms - .addKeyframePosition(1, 0, 0, 750) //pull action - .addKeyframePosition(0, 0, 0, 125) //flick down lever again - ) - ); - - config.name = "win20Poly"; - config.manufacturer = EnumGunManufacturer.WINCHESTER; - - config.ejector = EJECTOR_BOLT; - - config.config = HbmCollection.r762; - - return config; - } - - public static GunConfiguration getBoltSaturniteConfig() { - - GunConfiguration config = Gun20GaugeFactory.getShotgunConfig(); - - config.ammoCap = 5; - config.durability = 4000; - config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; - config.firingSound = "hbm:weapon.revolverShoot"; - config.firingPitch = 0.75F; - config.hasSights = true; - config.absoluteFOV = true; - config.zoomFOV = 0.25F; - config.scopeTexture = scope_bolt; - config.crosshair = Crosshair.CIRCLE; - - config.animations.put(AnimType.CYCLE, new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addKeyframePosition(1, 0, 0, 25) - .addKeyframePosition(0, 0, 0, 75) - ) - .addBus("LEVER_PULL", new BusAnimationSequence() - .addKeyframePosition(0, 0, 0, 375) //wait out recoil and lever flick - .addKeyframePosition(-1, 0, 0, 375) //pull back bolt - .addKeyframePosition(0, 0, 0, 375) //release bolt - ) - .addBus("LEVER_ROTATE", new BusAnimationSequence() - .addKeyframePosition(0, 0, 0, 250) //wait out recoil - .addKeyframePosition(1, 0, 0, 125) //flick up lever in 125ms - .addKeyframePosition(1, 0, 0, 750) //pull action - .addKeyframePosition(0, 0, 0, 125) //flick down lever again - ) - ); - - config.name = "win20Satur"; - config.manufacturer = EnumGunManufacturer.WINCHESTER_BIGMT; - - config.ejector = EJECTOR_BOLT; - - config.config = HbmCollection.r762; - - return config; - } - - public static BulletConfiguration get762NATOConfig() { - final BulletConfiguration bullet = Gun556mmFactory.get556Config().clone(); - - bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.STOCK)); - bullet.dmgMax = 20; - bullet.dmgMin = 24; - bullet.velocity *= 2.5; - bullet.maxAge *= 2; - bullet.spread /= 2; - - bullet.spentCasing = CASING762NATO.clone().register("762NATOStock"); - - return bullet; - } - - public static BulletConfiguration get762APConfig() { - final BulletConfiguration bullet = get762NATOConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.AP)); - bullet.dmgMax = 24; - bullet.dmgMin = 28; - - bullet.spentCasing = CASING762NATO.clone().register("762NATOAP"); - - return bullet; - } - - public static BulletConfiguration get762DUConfig() { - final BulletConfiguration bullet = get762NATOConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.DU)); - bullet.dmgMax = 36; - bullet.dmgMin = 40; - - bullet.spentCasing = CASING762NATO.clone().register("762NATODU"); - - return bullet; - } - - public static BulletConfiguration get762TracerConfig() { - final BulletConfiguration bullet = get762NATOConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.TRACER)); - bullet.vPFX = "reddust"; - - bullet.spentCasing = CASING762NATO.clone().register("762NATOTrac"); - - return bullet; - } - - public static BulletConfiguration get762WPConfig() { - final BulletConfiguration bullet = get762NATOConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.PHOSPHORUS)); - bullet.setToFire(20 * 5); - bullet.vPFX = "reddust"; - final PotionEffect eff = new PotionEffect(HbmPotion.phosphorus.id, 20 * 20, 0, true); - eff.getCurativeItems().clear(); - bullet.effects = new ArrayList(); - bullet.effects.add(new PotionEffect(eff)); - - bullet.spentCasing = CASING762NATO.clone().register("762NATOPhos"); - - return bullet; - } - - public static BulletConfiguration get762BlankConfig() { - final BulletConfiguration bullet = get762NATOConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.BLANK)); - bullet.dmgMax = 0; - bullet.dmgMin = 0; - bullet.maxAge = 0; - - bullet.spentCasing = CASING762NATO.clone().register("762NATOK"); - - return bullet; - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/handler/guncfg/Gun9mmFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun9mmFactory.java deleted file mode 100644 index 2e7c68cc4..000000000 --- a/src/main/java/com/hbm/handler/guncfg/Gun9mmFactory.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.hbm.handler.guncfg; - -import java.util.ArrayList; - -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.CasingEjector; -import com.hbm.handler.GunConfiguration; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ModItems; -import com.hbm.items.ItemAmmoEnums.Ammo9mm; -import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.particle.SpentCasing; -import com.hbm.particle.SpentCasing.CasingType; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -public class Gun9mmFactory { - - private static final CasingEjector EJECTOR_SMG; - private static final SpentCasing CASING9MM; - - static { - EJECTOR_SMG = new CasingEjector().setMotion(-0.3, 0.6, 0).setOffset(-0.35, -0.2, 0.55).setAngleRange(0.01F, 0.03F); - CASING9MM = new SpentCasing(CasingType.STRAIGHT).setScale(1F, 1F, 0.6F).setBounceMotion(0.01F, 0.03F).setColor(SpentCasing.COLOR_CASE_BRASS); - } - - public static GunConfiguration getMP40Config() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 2; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_AUTO; - config.reloadDuration = 20; - config.firingDuration = 0; - config.ammoCap = 32; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_SPLIT; - config.durability = 2500; - config.reloadSound = GunConfiguration.RSOUND_MAG; - config.firingSound = "hbm:weapon.rifleShoot"; - config.reloadSoundEnd = false; - - config.name = "mp40"; - config.manufacturer = EnumGunManufacturer.ERFURT; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.P9_NORMAL); - config.config.add(BulletConfigSyncingUtil.P9_AP); - config.config.add(BulletConfigSyncingUtil.P9_DU); - config.config.add(BulletConfigSyncingUtil.CHL_P9); - config.config.add(BulletConfigSyncingUtil.P9_ROCKET); - - config.ejector = EJECTOR_SMG; - - return config; - } - - //rechambered to .45 - /*public static GunConfiguration getThompsonConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 2; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_AUTO; - config.reloadDuration = 20; - config.firingDuration = 0; - config.ammoCap = 30; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_SPLIT; - config.durability = 2500; - config.reloadSound = GunConfiguration.RSOUND_MAG; - config.firingSound = "hbm:weapon.rifleShoot"; - config.reloadSoundEnd = false; - - config.name = "tommy9"; - config.manufacturer = EnumGunManufacturer.AUTO_ORDINANCE; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.P9_NORMAL); - config.config.add(BulletConfigSyncingUtil.P9_AP); - config.config.add(BulletConfigSyncingUtil.P9_DU); - config.config.add(BulletConfigSyncingUtil.CHL_P9); - config.config.add(BulletConfigSyncingUtil.P9_ROCKET); - - return config; - }*/ - - static float inaccuracy = 5; - public static BulletConfiguration get9mmConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_9mm.stackFromEnum(Ammo9mm.STOCK)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 10; - bullet.dmgMax = 14; - - bullet.spentCasing = CASING9MM.clone().register("9MMStock"); - - return bullet; - } - - public static BulletConfiguration get9mmAPConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_9mm.stackFromEnum(Ammo9mm.AP)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 18; - bullet.dmgMax = 20; - bullet.leadChance = 10; - bullet.wear = 15; - - bullet.spentCasing = CASING9MM.clone().register("9MMAP"); - - return bullet; - } - - public static BulletConfiguration get9mmDUConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardPistolConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_9mm.stackFromEnum(Ammo9mm.DU)); - bullet.spread *= inaccuracy; - bullet.dmgMin = 22; - bullet.dmgMax = 26; - bullet.leadChance = 50; - bullet.wear = 25; - - bullet.spentCasing = CASING9MM.clone().register("9MMDU"); - - return bullet; - } - - public static BulletConfiguration get9mmRocketConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_9mm.stackFromEnum(Ammo9mm.ROCKET)); - bullet.velocity = 5; - bullet.explosive = 7.5F; - bullet.trail = 5; - - bullet.spentCasing = CASING9MM.clone().register("9MMRocket"); - - return bullet; - } - -} diff --git a/src/main/java/com/hbm/handler/guncfg/GunDGKFactory.java b/src/main/java/com/hbm/handler/guncfg/GunDGKFactory.java index 86bc1bb2f..240521609 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunDGKFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunDGKFactory.java @@ -1,8 +1,5 @@ package com.hbm.handler.guncfg; -import com.hbm.handler.BulletConfiguration; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ModItems; import com.hbm.particle.SpentCasing; import com.hbm.particle.SpentCasing.CasingType; @@ -11,15 +8,14 @@ public class GunDGKFactory { public static final SpentCasing CASINGDGK; static { - CASINGDGK = new SpentCasing(CasingType.STRAIGHT).setScale(1.5F).setBounceMotion(0.05F, 0.02F).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(0.02F, 0.5D, 60, 20).setMaxAge(60); //3 instead of 12 seconds + CASINGDGK = new SpentCasing(CasingType.STRAIGHT).setScale(1.5F).setBounceMotion(0.05F, 0.02F).setColor(SpentCasing.COLOR_CASE_BRASS).register("DGK").setupSmoke(0.02F, 0.5D, 60, 20).setMaxAge(60); //3 instead of 12 seconds } - public static BulletConfiguration getDGKConfig() { + /*public static BulletConfiguration getDGKConfig() { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); bullet.ammo = new ComparableStack(ModItems.ammo_dgk); bullet.spentCasing = CASINGDGK.register("DGK"); return bullet; - } - + }*/ } diff --git a/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java b/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java deleted file mode 100644 index 07bcc2878..000000000 --- a/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java +++ /dev/null @@ -1,174 +0,0 @@ -package com.hbm.handler.guncfg; - -import java.util.ArrayList; - -import com.hbm.extprop.HbmLivingProps; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.GunConfiguration; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ItemAmmoEnums.AmmoDart; -import com.hbm.items.ModItems; -import com.hbm.items.weapon.ItemGunDart; -import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.main.MainRegistry; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; - -public class GunDartFactory { - - public static GunConfiguration getDarterConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 1; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.hasSights = false; - config.reloadDuration = 20; - config.firingDuration = 0; - config.ammoCap = 1; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_CROSS; - config.durability = 1000; - config.reloadSound = GunConfiguration.RSOUND_GRENADE; - config.firingSound = "hbm:weapon.dartShoot"; - config.reloadSoundEnd = false; - config.showAmmo = true; - - config.name = "dart"; - config.manufacturer = EnumGunManufacturer.NONE; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.NEEDLE_GPS); - config.config.add(BulletConfigSyncingUtil.NEEDLE_NUKE); - - return config; - } - - public static GunConfiguration getMymyConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 1; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.hasSights = false; - config.reloadDuration = 10; - config.firingDuration = 0; - config.ammoCap = 1; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.allowsInfinity = true; - config.crosshair = Crosshair.NONE; - config.durability = 1000; - config.reloadSound = GunConfiguration.RSOUND_GRENADE; - config.firingSound = "hbm:weapon.dartShoot"; - config.reloadSoundEnd = false; - config.showAmmo = true; - - config.name = "nerf"; - config.manufacturer = EnumGunManufacturer.HASBRO; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.DART_NORMAL); - config.config.add(BulletConfigSyncingUtil.NEEDLE_NUKE); - - return config; - } - - public static BulletConfiguration getGPSConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_dart.stackFromEnum(AmmoDart.GPS)); - bullet.velocity = 5.0F; - bullet.spread = 0; - bullet.dmgMin = 1; - bullet.dmgMax = 2; - bullet.doesRicochet = true; - bullet.doesPenetrate = false; - bullet.style = bullet.STYLE_FLECHETTE; - bullet.leadChance = 0; - - bullet.effects = new ArrayList(); - bullet.effects.add(new PotionEffect(Potion.wither.id, 60 * 20, 2)); - - bullet.bntHurt = (bulletnt, hit) -> { - - if(bulletnt.worldObj.isRemote) - return; - - if(hit instanceof EntityPlayer) { - - if(((EntityPlayer) hit).inventory.hasItem(ModItems.ingot_meteorite_forged)) - return; - - if(bulletnt.getThrower() instanceof EntityPlayer) { - - EntityPlayer shooter = (EntityPlayer) bulletnt.getThrower(); - - if(shooter.getHeldItem() != null && shooter.getHeldItem().getItem() == ModItems.gun_darter) { - ItemGunDart.writePlayer(shooter.getHeldItem(), (EntityPlayer) hit); - shooter.playSound("random.orb", 1.0F, 1.0F); - } - } - } - }; - - return bullet; - } - - public static BulletConfiguration getNukeConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_dart.stackFromEnum(AmmoDart.NUCLEAR)); - bullet.velocity = 5.0F; - bullet.spread = 0; - bullet.dmgMin = 1; - bullet.dmgMax = 2; - bullet.doesRicochet = true; - bullet.doesPenetrate = false; - bullet.style = bullet.STYLE_FLECHETTE; - bullet.leadChance = 0; - - bullet.bntHurt = (bulletnt, hit) -> { - - if(bulletnt.worldObj.isRemote) - return; - - if(hit instanceof EntityLivingBase) { - - EntityLivingBase e = (EntityLivingBase) hit; - - if(HbmLivingProps.getRadiation(e) < 250) - HbmLivingProps.setRadiation(e, 250); - if(HbmLivingProps.getTimer(e) <= 0) - HbmLivingProps.setTimer(e, MainRegistry.polaroidID * 60 * 20); - } - }; - - return bullet; - } - - public static BulletConfiguration getNERFConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_dart.stackFromEnum(AmmoDart.NERF)); - bullet.velocity = 1.0F; - bullet.gravity = 0.04D; - bullet.dmgMin = 0; - bullet.dmgMax = 0; - bullet.leadChance = 0; - - return bullet; - } -} diff --git a/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java b/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java deleted file mode 100644 index 2d76d18e6..000000000 --- a/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.hbm.handler.guncfg; - -import java.util.ArrayList; - -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBomb; -import com.hbm.interfaces.IBomb.BombReturnCode; -import com.hbm.main.MainRegistry; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PlayerInformPacket; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; -import com.hbm.util.ChatBuilder; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.init.Items; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.world.World; - -public class GunDetonatorFactory { - - public static GunConfiguration getDetonatorConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 1; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_AUTO; - config.hasSights = false; - config.reloadDuration = 20; - config.firingDuration = 0; - config.ammoCap = 1; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.allowsInfinity = true; - config.crosshair = Crosshair.DUAL; - config.durability = 1_000_000_000; - config.reloadSound = GunConfiguration.RSOUND_LAUNCHER; - config.firingSound = "hbm:weapon.dartShoot"; - config.reloadSoundEnd = false; - config.showAmmo = true; - - config.name = "laserDet"; - config.manufacturer = EnumGunManufacturer.WESTTEK; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.DET_BOLT); - config.config.add(BulletConfigSyncingUtil.R5_NORMAL_BOLT); - config.config.add(BulletConfigSyncingUtil.R5_EXPLOSIVE_BOLT); - config.config.add(BulletConfigSyncingUtil.R5_DU_BOLT); - config.config.add(BulletConfigSyncingUtil.R5_STAR_BOLT); - config.config.add(BulletConfigSyncingUtil.CHL_R5_BOLT); - config.config.add(BulletConfigSyncingUtil.G12_NORMAL); - config.config.add(BulletConfigSyncingUtil.G12_INCENDIARY); - config.config.add(BulletConfigSyncingUtil.G12_SHRAPNEL); - config.config.add(BulletConfigSyncingUtil.G12_DU); - config.config.add(BulletConfigSyncingUtil.G12_SLEEK); - config.config.add(BulletConfigSyncingUtil.G12_AM); - config.config.add(BulletConfigSyncingUtil.G12_PERCUSSION); - config.config.add(BulletConfigSyncingUtil.NUKE_NORMAL); - config.config.add(BulletConfigSyncingUtil.NUKE_LOW); - config.config.add(BulletConfigSyncingUtil.NUKE_SAFE); - config.config.add(BulletConfigSyncingUtil.NUKE_HIGH); - config.config.add(BulletConfigSyncingUtil.NUKE_TOTS); - config.config.add(BulletConfigSyncingUtil.NUKE_PUMPKIN); - config.config.add(BulletConfigSyncingUtil.NUKE_BARREL); - config.config.add(BulletConfigSyncingUtil.NUKE_MIRV_NORMAL); - config.config.add(BulletConfigSyncingUtil.NUKE_MIRV_LOW); - config.config.add(BulletConfigSyncingUtil.NUKE_MIRV_SAFE); - config.config.add(BulletConfigSyncingUtil.NUKE_MIRV_HIGH); - - return config; - } - - public static BulletConfiguration getLaserConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(Items.redstone); - bullet.spread = 0.0F; - bullet.maxAge = 100; - bullet.dmgMin = 0; - bullet.dmgMax = 0; - bullet.leadChance = 0; - bullet.doesRicochet = false; - bullet.setToBolt(BulletConfiguration.BOLT_LASER); - - bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - - World world = bulletnt.worldObj; - if(!world.isRemote && y > 0) { - Block b = world.getBlock(x, y, z); - if(b instanceof IBomb) { - BombReturnCode ret = ((IBomb) b).explode(world, x, y, z); - - if(ret.wasSuccessful() && bulletnt.getThrower() instanceof EntityPlayerMP) { - EntityPlayerMP player = (EntityPlayerMP) bulletnt.getThrower(); - world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); - PacketDispatcher.wrapper.sendTo( - new PlayerInformPacket(ChatBuilder.start("").nextTranslation(ret.getUnlocalizedMessage()).color(EnumChatFormatting.YELLOW).flush(), MainRegistry.proxy.ID_DETONATOR), - (EntityPlayerMP) player); - } - } - } - }; - - return bullet; - } -} diff --git a/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java b/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java index 0ea31f450..f6f6a7933 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java @@ -6,153 +6,26 @@ import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.entity.projectile.EntityBulletBaseNT.IBulletImpactBehaviorNT; import com.hbm.entity.projectile.EntityBulletBaseNT.IBulletUpdateBehaviorNT; -import com.hbm.explosion.ExplosionChaos; -import com.hbm.explosion.ExplosionLarge; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ItemAmmoEnums.AmmoCoilgun; import com.hbm.items.ItemAmmoEnums.AmmoFireExt; -import com.hbm.items.ItemAmmoEnums.AmmoFlamethrower; import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.Crosshair; import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.ExplosionKnockbackPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.potion.HbmPotion; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; import com.hbm.tileentity.IRepairable; import com.hbm.tileentity.IRepairable.EnumExtinguishType; import com.hbm.util.CompatExternal; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; import net.minecraft.block.material.Material; -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Vec3; public class GunEnergyFactory { - - public static GunConfiguration getChemConfig() { - - GunConfiguration config = new GunConfiguration(); - config.rateOfFire = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_AUTO; - config.allowsInfinity = false; - config.ammoCap = 3_000; - config.durability = 90_000; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.crosshair = Crosshair.CIRCLE; - - config.name = "Chemical Thrower"; - config.manufacturer = EnumGunManufacturer.LANGFORD; - - config.config = new ArrayList(); - - return config; - } - - public static GunConfiguration getEMPConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 30; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.reloadDuration = 10; - config.firingDuration = 0; - config.ammoCap = 0; - config.durability = 1500; - config.reloadType = GunConfiguration.RELOAD_NONE; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_SPLIT; - config.firingSound = "hbm:weapon.teslaShoot"; - - config.name = "EMP Orb Projector"; - config.manufacturer = EnumGunManufacturer.MWT; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.SPECIAL_EMP); - - return config; - } - - public static GunConfiguration getFlamerConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 1; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_AUTO; - config.reloadDuration = 20; - config.reloadSoundEnd = false; - config.firingDuration = 0; - config.ammoCap = 100; - config.durability = 1000; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_CIRCLE; - config.firingSound = "hbm:weapon.flamethrowerShoot"; - config.reloadSound = "hbm:weapon.flamerReload"; - - config.name = "Heavy Duty Flamer"; - config.manufacturer = EnumGunManufacturer.MWT; - - config.comment.add("Dragon-slaying: Advanced techniques, part 1:"); - config.comment.add("Try not to get eaten by the dragon."); - config.comment.add(""); - config.comment.add("Hope that helps."); - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.FLAMER_NORMAL); - config.config.add(BulletConfigSyncingUtil.FLAMER_NAPALM); - config.config.add(BulletConfigSyncingUtil.FLAMER_WP); - config.config.add(BulletConfigSyncingUtil.FLAMER_VAPORIZER); - config.config.add(BulletConfigSyncingUtil.FLAMER_GAS); - - return config; - } - - public static GunConfiguration getZOMGConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 1; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_AUTO; - config.reloadDuration = 10; - config.reloadSoundEnd = false; - config.firingDuration = 0; - config.durability = 100000; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.ammoCap = 1000; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_ARROWS; - config.firingSound = "hbm:weapon.zomgShoot"; - config.reloadSound = "hbm:weapon.b92Reload"; - - config.name = "EMC101 Prismatic Negative Energy Cannon"; - config.manufacturer = EnumGunManufacturer.MWT; - - config.comment.add("Taste the rainbow!"); - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.ZOMG_BOLT); - - return config; - } public static GunConfiguration getExtConfig() { @@ -183,36 +56,6 @@ public class GunEnergyFactory { return config; } - - public static GunConfiguration getCoilgunConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 5; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.reloadDuration = 20; - config.firingDuration = 0; - config.ammoCap = 1; - config.durability = 2_500; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.allowsInfinity = true; - config.crosshair = Crosshair.CIRCLE; - config.firingSound = "hbm:weapon.coilgunShoot"; - config.reloadSoundEnd = false; - config.reloadSound = "hbm:weapon.coilgunReload"; - - config.name = "ArmsKore Coilgun"; - config.manufacturer = EnumGunManufacturer.DRG; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.COIL_NORMAL); - config.config.add(BulletConfigSyncingUtil.COIL_DU); - config.config.add(BulletConfigSyncingUtil.COIL_RUBBER); - - return config; - } public static GunConfiguration getCryoCannonConfig() { @@ -238,295 +81,6 @@ public class GunEnergyFactory { return config; } - public static GunConfiguration getVortexConfig() { - - GunConfiguration config = new GunConfiguration(); - - return config; - - } - - public static BulletConfiguration getOrbusConfig() { - - BulletConfiguration bullet = new BulletConfiguration(); - - bullet.ammo = new ComparableStack(ModItems.gun_emp_ammo); - - bullet.velocity = 1F; - bullet.spread = 0.0F; - bullet.wear = 10; - bullet.bulletsMin = 1; - bullet.bulletsMax = 1; - bullet.dmgMin = 10; - bullet.dmgMax = 12; - bullet.gravity = 0D; - bullet.maxAge = 100; - bullet.doesRicochet = false; - bullet.doesPenetrate = true; - bullet.doesBreakGlass = false; - bullet.style = BulletConfiguration.STYLE_ORB; - bullet.plink = BulletConfiguration.PLINK_NONE; - bullet.emp = 10; - - bullet.damageType = ModDamageSource.s_emp; - bullet.dmgProj = false; - bullet.dmgBypass = true; - - bullet.effects = new ArrayList(); - bullet.effects.add(new PotionEffect(Potion.moveSlowdown.id, 10 * 20, 1)); - bullet.effects.add(new PotionEffect(Potion.weakness.id, 10 * 20, 4)); - - return bullet; - } - - public static BulletConfiguration getCoilConfig() { - - BulletConfiguration bullet = new BulletConfiguration(); - - bullet.ammo = new ComparableStack(ModItems.ammo_coilgun, 1, AmmoCoilgun.STOCK.ordinal()); - - bullet.velocity = 7.5F; - bullet.spread = 0.0F; - bullet.wear = 10; - bullet.bulletsMin = 1; - bullet.bulletsMax = 1; - bullet.dmgMin = 35; - bullet.dmgMax = 45; - bullet.gravity = 0D; - bullet.maxAge = 50; - bullet.doesPenetrate = true; - bullet.isSpectral = true; - - bullet.style = bullet.STYLE_BOLT; - bullet.trail = bullet.BOLT_NIGHTMARE; - bullet.vPFX = "fireworks"; - - bullet.bntUpdate = (entity) -> breakInPath(entity, 1.25F); - - return bullet; - } - - public static BulletConfiguration getCoilDUConfig() { - - BulletConfiguration bullet = new BulletConfiguration(); - - bullet.ammo = new ComparableStack(ModItems.ammo_coilgun, 1, AmmoCoilgun.DU.ordinal()); - - bullet.velocity = 7.5F; - bullet.spread = 0.0F; - bullet.wear = 25; - bullet.bulletsMin = 1; - bullet.bulletsMax = 1; - bullet.dmgMin = 65; - bullet.dmgMax = 80; - bullet.gravity = 0D; - bullet.maxAge = 50; - bullet.doesPenetrate = true; - bullet.isSpectral = true; - - bullet.style = bullet.STYLE_BOLT; - bullet.trail = bullet.BOLT_NIGHTMARE; - bullet.vPFX = "fireworks"; - - bullet.bntUpdate = (entity) -> breakInPath(entity, 2.5F); - - return bullet; - } - - public static BulletConfiguration getCoilRubberConfig() { - - BulletConfiguration bullet = new BulletConfiguration(); - - bullet.ammo = new ComparableStack(ModItems.ammo_coilgun, 1, AmmoCoilgun.RUBBER.ordinal()); - - bullet.velocity = 5F; - bullet.spread = 0.0F; - bullet.wear = 10; - bullet.bulletsMin = 1; - bullet.bulletsMax = 1; - bullet.dmgMin = 10; - bullet.dmgMax = 20; - bullet.gravity = 0D; - bullet.maxAge = 50; - bullet.doesPenetrate = false; - bullet.isSpectral = false; - bullet.doesRicochet = true; - bullet.ricochetAngle = 30; - bullet.HBRC = 90; - bullet.LBRC = 100; - bullet.bounceMod = 1; - bullet.selfDamageDelay = 2; - - bullet.style = bullet.STYLE_PELLET; - - bullet.bntHurt = (entity, hit) -> { - Vec3 vec = Vec3.createVectorHelper(entity.motionX, entity.motionY, entity.motionZ); - vec = vec.normalize(); - vec.xCoord *= 10; - vec.yCoord *= 10; - vec.zCoord *= 10; - hit.motionX += vec.xCoord; - hit.motionY += vec.yCoord; - hit.motionZ += vec.zCoord; - - if(hit instanceof EntityPlayerMP) { - PacketDispatcher.wrapper.sendTo(new ExplosionKnockbackPacket(vec), (EntityPlayerMP) hit); - } - }; - - return bullet; - } - - public static void breakInPath(EntityBulletBaseNT entity, float threshold) { - - if(entity.worldObj.isRemote) return; - - Vec3 vec = Vec3.createVectorHelper(entity.posX - entity.prevPosX, entity.posY - entity.prevPosY, entity.posZ - entity.prevPosZ); - double motion = Math.max(vec.lengthVector(), 0.1); - vec = vec.normalize(); - - for(double d = 0; d < motion; d += 0.5) { - - int x = (int) Math.floor(entity.posX - vec.xCoord * d); - int y = (int) Math.floor(entity.posY - vec.yCoord * d); - int z = (int) Math.floor(entity.posZ - vec.zCoord * d); - - Block b = entity.worldObj.getBlock(x, y, z); - float hardness = b.getBlockHardness(entity.worldObj, x, y, z); - - if(b.getMaterial() != Material.air && hardness >= 0 && hardness < threshold) { - entity.worldObj.func_147480_a(x, y, z, false); - } - } - } - - public static BulletConfiguration getFlameConfig() { - - BulletConfiguration bullet = new BulletConfiguration(); - - bullet.ammo = new ComparableStack(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.DIESEL)); - bullet.ammoCount = 100; - - bullet.velocity = 0.75F; - bullet.spread = 0.025F; - bullet.wear = 1; - bullet.bulletsMin = 3; - bullet.bulletsMax = 5; - bullet.dmgMin = 2; - bullet.dmgMax = 4; - bullet.gravity = 0.01D; - bullet.maxAge = 60; - bullet.doesRicochet = false; - bullet.doesPenetrate = true; - bullet.doesBreakGlass = false; - bullet.style = BulletConfiguration.STYLE_NONE; - bullet.plink = BulletConfiguration.PLINK_NONE; - bullet.vPFX = "flame"; - bullet.incendiary = 10; - - bullet.damageType = ModDamageSource.s_flamethrower; - bullet.dmgProj = false; - bullet.dmgFire = true; - - bullet.bntImpact = new IBulletImpactBehaviorNT() { - - @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { - - if(!bullet.worldObj.isRemote) { - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "vanillaburst"); - data.setString("mode", "flame"); - data.setInteger("count", 15); - data.setDouble("motion", 0.1D); - - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bullet.posX, bullet.posY, bullet.posZ), new TargetPoint(bullet.dimension, bullet.posX, bullet.posY, bullet.posZ, 50)); - } - } - }; - - return bullet; - } - - public static BulletConfiguration getNapalmConfig() { - - BulletConfiguration bullet = getFlameConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.NAPALM)); - bullet.wear = 2; - bullet.dmgMin = 4; - bullet.dmgMax = 6; - bullet.maxAge = 200; - - return bullet; - } - - public static BulletConfiguration getPhosphorusConfig() { - - BulletConfiguration bullet = getFlameConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.PHOSPHORUS)); - bullet.wear = 2; - bullet.spread = 0.0F; - bullet.bulletsMin = 1; - bullet.bulletsMax = 1; - bullet.dmgMin = 4; - bullet.dmgMax = 6; - bullet.maxAge = 200; - bullet.vPFX = "smoke"; - - bullet.bntImpact = BulletConfigFactory.getPhosphorousEffect(5, 60 * 20, 25, 0.25, 0.1F); - - return bullet; - } - - public static BulletConfiguration getVaporizerConfig() { - - BulletConfiguration bullet = getFlameConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.VAPORIZER)); - bullet.wear = 4; - bullet.spread = 0.25F; - bullet.bulletsMin = 8; - bullet.bulletsMax = 10; - bullet.dmgMin = 6; - bullet.dmgMax = 10; - bullet.maxAge = 15; - bullet.vPFX = "flame"; - bullet.incendiary = 0; - - bullet.dmgBypass = true; - - PotionEffect eff = new PotionEffect(HbmPotion.phosphorus.id, 20 * 20, 0, true); - eff.getCurativeItems().clear(); - bullet.effects = new ArrayList(); - bullet.effects.add(new PotionEffect(eff)); - - return bullet; - } - - public static BulletConfiguration getGasConfig() { - - BulletConfiguration bullet = getFlameConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_fuel.stackFromEnum(AmmoFlamethrower.CHLORINE)); - bullet.wear = 1; - bullet.spread = 0.05F; - bullet.gravity = 0D; - bullet.bulletsMin = 5; - bullet.bulletsMax = 7; - bullet.dmgMin = 0; - bullet.dmgMax = 0; - bullet.vPFX = "cloud"; - bullet.incendiary = 0; - - bullet.dmgFire = false; - - bullet.bntImpact = BulletConfigFactory.getGasEffect(5, 60 * 20); - - return bullet; - } - public static BulletConfiguration getFextConfig() { BulletConfiguration bullet = new BulletConfiguration(); @@ -782,49 +336,6 @@ public class GunEnergyFactory { return bullet; } - public static BulletConfiguration getZOMGBoltConfig() { - - BulletConfiguration bullet = new BulletConfiguration(); - - bullet.ammo = new ComparableStack(ModItems.nugget_euphemium); - bullet.ammoCount = 1000; - bullet.wear = 1; - bullet.velocity = 1F; - bullet.spread = 0.125F; - bullet.maxAge = 100; - bullet.gravity = 0D; - bullet.bulletsMin = 5; - bullet.bulletsMax = 5; - bullet.dmgMin = 10000; - bullet.dmgMax = 25000; - bullet.liveAfterImpact = true; - - bullet.damageType = ModDamageSource.s_zomg_prefix; - bullet.dmgProj = false; - bullet.dmgBypass = true; - - bullet.style = bullet.STYLE_BOLT; - bullet.trail = bullet.BOLT_ZOMG; - - bullet.effects = new ArrayList(); - bullet.effects.add(new PotionEffect(HbmPotion.bang.id, 10 * 20, 0)); - - bullet.bntImpact = new IBulletImpactBehaviorNT() { - - @Override - 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); - bullet.worldObj.playSoundEffect(bullet.posX, bullet.posY, bullet.posZ, "hbm:entity.bombDet", 5.0F, 1.0F); - ExplosionLarge.spawnParticles(bullet.worldObj, bullet.posX, bullet.posY, bullet.posZ, 5); - } - } - }; - - return bullet; - } - public static BulletConfiguration getCryoConfig() { BulletConfiguration bullet = new BulletConfiguration(); bullet.ammo = new ComparableStack(ModItems.gun_cryolator_ammo); @@ -850,11 +361,4 @@ public class GunEnergyFactory { return bullet; } - - public static BulletConfiguration getTurretConfig() { - BulletConfiguration bullet = getFlameConfig(); - bullet.spread *= 2F; - bullet.gravity = 0.0025D; - return bullet; - } } diff --git a/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java b/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java deleted file mode 100644 index 5ed0b21db..000000000 --- a/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java +++ /dev/null @@ -1,544 +0,0 @@ -package com.hbm.handler.guncfg; - -import java.util.ArrayList; - -import com.hbm.blocks.ModBlocks; -import com.hbm.entity.projectile.EntityBulletBaseNT; -import com.hbm.entity.projectile.EntityBulletBaseNT.*; -import com.hbm.explosion.ExplosionLarge; -import com.hbm.explosion.ExplosionNT; -import com.hbm.explosion.ExplosionNukeSmall; -import com.hbm.explosion.ExplosionNT.ExAttrib; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.GunConfiguration; -import com.hbm.handler.radiation.ChunkRadiationManager; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ModItems; -import com.hbm.items.ItemAmmoEnums.AmmoFatman; -import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.PacketDispatcher; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.init.Blocks; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; - -public class GunFatmanFactory { - - public static GunConfiguration getFatmanConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 20; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.reloadDuration = 120; - config.firingDuration = 0; - config.ammoCap = 1; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_CIRCUMFLEX; - config.firingSound = "hbm:weapon.fatmanShoot"; - config.reloadSound = GunConfiguration.RSOUND_FATMAN; - config.reloadSoundEnd = false; - - config.name = "m42"; - config.manufacturer = EnumGunManufacturer.F_STRONG; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.NUKE_NORMAL); - config.config.add(BulletConfigSyncingUtil.NUKE_LOW); - config.config.add(BulletConfigSyncingUtil.NUKE_HIGH); - config.config.add(BulletConfigSyncingUtil.NUKE_TOTS); - config.config.add(BulletConfigSyncingUtil.NUKE_SAFE); - config.config.add(BulletConfigSyncingUtil.NUKE_PUMPKIN); - config.config.add(BulletConfigSyncingUtil.NUKE_BARREL); - config.durability = 1000; - - return config; - } - - public static GunConfiguration getMIRVConfig() { - - GunConfiguration config = getFatmanConfig(); - - config.name = "m42MIRV"; - config.manufacturer = EnumGunManufacturer.F_STRONG; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.NUKE_MIRV_NORMAL); - config.config.add(BulletConfigSyncingUtil.NUKE_MIRV_LOW); - config.config.add(BulletConfigSyncingUtil.NUKE_MIRV_HIGH); - config.config.add(BulletConfigSyncingUtil.NUKE_MIRV_SAFE); - config.config.add(BulletConfigSyncingUtil.NUKE_MIRV_SPECIAL); - config.durability = 1000; - - return config; - } - - public static GunConfiguration getBELConfig() { - - GunConfiguration config = getFatmanConfig(); - - config.name = "bel"; - config.manufacturer = EnumGunManufacturer.F_STRONG; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.NUKE_AMAT); - - return config; - } - - public static GunConfiguration getProtoConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 20; - config.roundsPerCycle = 8; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.reloadDuration = 120; - config.firingDuration = 0; - config.ammoCap = 8; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_CIRCUMFLEX; - config.firingSound = "hbm:weapon.fatmanShoot"; - config.reloadSound = GunConfiguration.RSOUND_FATMAN; - config.reloadSoundEnd = false; - - config.name = "m42"; - config.manufacturer = EnumGunManufacturer.F_STRONG; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.NUKE_PROTO_NORMAL); - config.config.add(BulletConfigSyncingUtil.NUKE_PROTO_LOW); - config.config.add(BulletConfigSyncingUtil.NUKE_PROTO_HIGH); - config.config.add(BulletConfigSyncingUtil.NUKE_PROTO_TOTS); - config.config.add(BulletConfigSyncingUtil.NUKE_PROTO_SAFE); - config.config.add(BulletConfigSyncingUtil.NUKE_PROTO_PUMPKIN); - config.config.add(BulletConfigSyncingUtil.NUKE_BARREL); - config.durability = 1000; - - return config; - } - - public static BulletConfiguration getNukeConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.STOCK)); - - bullet.bntImpact = new IBulletImpactBehaviorNT() { - - @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { - BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_MEDIUM); - } - }; - - return bullet; - } - - public static BulletConfiguration getNukeLowConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.LOW)); - - bullet.bntImpact = new IBulletImpactBehaviorNT() { - - @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { - BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_LOW); - } - }; - - return bullet; - } - - public static BulletConfiguration getNukeHighConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.HIGH)); - - bullet.bntImpact = new IBulletImpactBehaviorNT() { - - @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { - BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_HIGH); - } - }; - - return bullet; - } - - public static BulletConfiguration getNukeTotsConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.TOTS)); - bullet.bulletsMin = 8; - bullet.bulletsMax = 8; - bullet.spread = 0.1F; - bullet.style = bullet.STYLE_GRENADE; - - bullet.bntImpact = new IBulletImpactBehaviorNT() { - - @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { - BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_TOTS); - } - }; - - return bullet; - } - - public static BulletConfiguration getNukeSafeConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.SAFE)); - - bullet.bntImpact = new IBulletImpactBehaviorNT() { - - @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { - BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_SAFE); - } - }; - - return bullet; - } - - public static BulletConfiguration getNukePumpkinConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.PUMPKIN)); - bullet.explosive = 10F; - - bullet.bntImpact = new IBulletImpactBehaviorNT() { - - @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { - - if(!bullet.worldObj.isRemote) { - - double posX = bullet.posX; - double posY = bullet.posY + 0.5; - double posZ = bullet.posZ; - - if(y >= 0) { - posX = x + 0.5; - posY = y + 1.5; - posZ = z + 0.5; - } - - ExplosionLarge.spawnParticles(bullet.worldObj, posX, posY, posZ, 45); - } - } - }; - - return bullet; - } - - public static BulletConfiguration getNukeBarrelConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.BARREL)); - bullet.explosive = 3F; - bullet.style = bullet.STYLE_BARREL; - - bullet.bntImpact = new IBulletImpactBehaviorNT() { - - @Override - public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { - - if(!bullet.worldObj.isRemote) { - - double posX = bullet.posX; - double posY = bullet.posY + 0.5; - double posZ = bullet.posZ; - - if(y >= 0) { - posX = x + 0.5; - posY = y + 1.5; - posZ = z + 0.5; - } - - x = (int)Math.floor(posX); - y = (int)Math.floor(posY); - z = (int)Math.floor(posZ); - - World worldObj = bullet.worldObj; - - for(int ix = x - 3; ix <= x + 3; ix++) { - for(int iy = y - 3; iy <= y + 3; iy++) { - for(int iz = z - 3; iz <= z + 3; iz++) { - - if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock(ix, iy, iz).isReplaceable(worldObj, ix, iy, iz) && ModBlocks.fallout.canPlaceBlockAt(worldObj, ix, iy, iz)) { - worldObj.setBlock(ix, iy, iz, ModBlocks.fallout); - } else if(worldObj.getBlock(ix, iy, iz) == Blocks.air) { - - if(worldObj.rand.nextBoolean()) - worldObj.setBlock(ix, iy, iz, ModBlocks.gas_radon); - else - worldObj.setBlock(ix, iy, iz, ModBlocks.gas_radon_dense); - } - } - } - } - - ChunkRadiationManager.proxy.incrementRad(worldObj, x, y, z, 100F); - - ExplosionLarge.spawnParticles(bullet.worldObj, posX, posY, posZ, 45); - } - } - }; - - return bullet; - } - - public static BulletConfiguration getMirvConfig() { - - BulletConfiguration bullet = getNukeConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV)); - bullet.style = BulletConfiguration.STYLE_MIRV; - bullet.velocity *= 3; - - bullet.bntUpdate = new IBulletUpdateBehaviorNT() { - - @Override - public void behaveUpdate(EntityBulletBaseNT bullet) { - - if(bullet.worldObj.isRemote) - return; - - if(bullet.ticksExisted == 15) { - bullet.setDead(); - - for(int i = 0; i < 6; i++) { - - EntityBulletBaseNT nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_NORMAL); - nuke.setPosition(bullet.posX, bullet.posY, bullet.posZ); - double mod = 0.1D; - nuke.motionX = bullet.worldObj.rand.nextGaussian() * mod; - nuke.motionY = -0.1D; - nuke.motionZ = bullet.worldObj.rand.nextGaussian() * mod; - bullet.worldObj.spawnEntityInWorld(nuke); - } - } - } - - }; - - return bullet; - } - - public static BulletConfiguration getMirvLowConfig() { - - BulletConfiguration bullet = getNukeLowConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_LOW)); - bullet.style = BulletConfiguration.STYLE_MIRV; - bullet.velocity *= 3; - - bullet.bntUpdate = new IBulletUpdateBehaviorNT() { - - @Override - public void behaveUpdate(EntityBulletBaseNT bullet) { - - if(bullet.worldObj.isRemote) - return; - - if(bullet.ticksExisted == 15) { - bullet.setDead(); - - for(int i = 0; i < 6; i++) { - - EntityBulletBaseNT nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_LOW); - nuke.setPosition(bullet.posX, bullet.posY, bullet.posZ); - double mod = 0.1D; - nuke.motionX = bullet.worldObj.rand.nextGaussian() * mod; - nuke.motionY = -0.1D; - nuke.motionZ = bullet.worldObj.rand.nextGaussian() * mod; - bullet.worldObj.spawnEntityInWorld(nuke); - } - } - } - - }; - - return bullet; - } - - public static BulletConfiguration getMirvHighConfig() { - - BulletConfiguration bullet = getNukeHighConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_HIGH)); - bullet.style = BulletConfiguration.STYLE_MIRV; - bullet.velocity *= 3; - - bullet.bntUpdate = new IBulletUpdateBehaviorNT() { - - @Override - public void behaveUpdate(EntityBulletBaseNT bullet) { - - if(bullet.worldObj.isRemote) - return; - - if(bullet.ticksExisted == 15) { - bullet.setDead(); - - for(int i = 0; i < 6; i++) { - - EntityBulletBaseNT nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_HIGH); - nuke.setPosition(bullet.posX, bullet.posY, bullet.posZ); - double mod = 0.1D; - nuke.motionX = bullet.worldObj.rand.nextGaussian() * mod; - nuke.motionY = -0.1D; - nuke.motionZ = bullet.worldObj.rand.nextGaussian() * mod; - bullet.worldObj.spawnEntityInWorld(nuke); - } - } - } - - }; - - return bullet; - } - - public static BulletConfiguration getMirvSafeConfig() { - - BulletConfiguration bullet = getNukeSafeConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_SAFE)); - bullet.style = BulletConfiguration.STYLE_MIRV; - bullet.velocity *= 3; - - bullet.bntUpdate = new IBulletUpdateBehaviorNT() { - - @Override - public void behaveUpdate(EntityBulletBaseNT bullet) { - - if(bullet.worldObj.isRemote) - return; - - if(bullet.ticksExisted == 15) { - bullet.setDead(); - - for(int i = 0; i < 6; i++) { - - EntityBulletBaseNT nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_SAFE); - nuke.setPosition(bullet.posX, bullet.posY, bullet.posZ); - double mod = 0.1D; - nuke.motionX = bullet.worldObj.rand.nextGaussian() * mod; - nuke.motionY = -0.1D; - nuke.motionZ = bullet.worldObj.rand.nextGaussian() * mod; - bullet.worldObj.spawnEntityInWorld(nuke); - } - } - } - - }; - - return bullet; - } - - public static BulletConfiguration getMirvSpecialConfig() { - - BulletConfiguration bullet = getNukeConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.MIRV_SPECIAL)); - bullet.style = BulletConfiguration.STYLE_MIRV; - bullet.velocity *= 3; - - bullet.bntUpdate = new IBulletUpdateBehaviorNT() { - - @Override - public void behaveUpdate(EntityBulletBaseNT bullet) { - - if(bullet.worldObj.isRemote) - return; - - if(bullet.ticksExisted == 15) { - bullet.setDead(); - - for(int i = 0; i < 24; i++) { - - EntityBulletBaseNT nuke = null; - - if(i < 6) - nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_LOW); - else if(i < 12) - nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_TOTS); - else if(i < 18) - nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_NORMAL); - else - nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_AMAT); - - nuke.setPosition(bullet.posX, bullet.posY, bullet.posZ); - - double mod = 0.25D; - nuke.motionX = bullet.worldObj.rand.nextGaussian() * mod; - nuke.motionY = -0.1D; - nuke.motionZ = bullet.worldObj.rand.nextGaussian() * mod; - bullet.worldObj.spawnEntityInWorld(nuke); - } - } - } - - }; - - return bullet; - } - - public static BulletConfiguration getBalefireConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.BALEFIRE)); - bullet.style = BulletConfiguration.STYLE_BF; - - bullet.bntImpact = new IBulletImpactBehaviorNT() { - @Override public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) { - - if(!bullet.worldObj.isRemote) { - - double posX = bullet.posX; - double posY = bullet.posY + 0.5; - double posZ = bullet.posZ; - - if(y >= 0) { - posX = x + 0.5; - posY = y + 1.5; - posZ = z + 0.5; - } - - bullet.worldObj.playSoundEffect(x, y, z, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); - - ExplosionLarge.spawnShrapnels(bullet.worldObj, posX, posY, posZ, 25); - - ExplosionNT exp = new ExplosionNT(bullet.worldObj, null, posX, posY, posZ, 15F) - .addAttrib(ExAttrib.BALEFIRE) - .addAttrib(ExAttrib.NOPARTICLE) - .addAttrib(ExAttrib.NOSOUND) - .addAttrib(ExAttrib.NODROP) - .overrideResolution(64); - exp.doExplosionA(); - exp.doExplosionB(false); - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "muke"); - data.setBoolean("balefire", true); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y + 0.5, z), new TargetPoint(bullet.dimension, bullet.posX, bullet.posY, bullet.posZ, 250)); - } - } - }; - - return bullet; - } - -} diff --git a/src/main/java/com/hbm/handler/guncfg/GunGaussFactory.java b/src/main/java/com/hbm/handler/guncfg/GunGaussFactory.java deleted file mode 100644 index 905f80321..000000000 --- a/src/main/java/com/hbm/handler/guncfg/GunGaussFactory.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.hbm.handler.guncfg; - -import java.util.ArrayList; - -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.GunConfiguration; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ModItems; -import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.render.anim.BusAnimation; -import com.hbm.render.anim.BusAnimationSequence; -import com.hbm.render.anim.HbmAnimations.AnimType; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -public class GunGaussFactory { - - public static GunConfiguration getXVLConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 4; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_AUTO; - config.reloadDuration = 20; - config.firingDuration = 0; - config.ammoCap = 0; - config.reloadType = GunConfiguration.RELOAD_NONE; - config.allowsInfinity = true; - config.crosshair = Crosshair.CIRCLE; - config.durability = 15000; - config.firingSound = "hbm:weapon.tauShoot"; - config.firingVolume = 0.5F; - - config.name = "tau"; - config.manufacturer = EnumGunManufacturer.BLACK_MESA; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.SPECIAL_GAUSS); - - config.animations.put(AnimType.CYCLE, new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addKeyframePosition(1, 0, 0, 25) - .addKeyframePosition(0, 0, 0, 75) - ) - ); - - return config; - } - - public static GunConfiguration getChargedConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 10; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.reloadDuration = 1; - config.firingDuration = 0; - config.ammoCap = 0; - config.reloadType = GunConfiguration.RELOAD_NONE; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_ARROWS; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.SPECIAL_GAUSS_CHARGED); - - return config; - } - - public static BulletConfiguration getGaussConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.gun_xvl1456_ammo); - bullet.dmgMin = 18; - bullet.dmgMax = 27; - bullet.style = bullet.STYLE_TAU; - bullet.LBRC = 80; - bullet.HBRC = 5; - - return bullet; - } - - public static BulletConfiguration getAltConfig() { - - BulletConfiguration bullet = getGaussConfig(); - - bullet.trail = 1; - - return bullet; - } -} diff --git a/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java b/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java deleted file mode 100644 index 1d7f84c1f..000000000 --- a/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java +++ /dev/null @@ -1,393 +0,0 @@ -package com.hbm.handler.guncfg; - -import com.hbm.entity.projectile.EntityBulletBaseNT; -import com.hbm.explosion.ExplosionNukeSmall; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.CasingEjector; -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.main.ResourceManager; -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.anim.HbmAnimations.AnimType; -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; - -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(SpentCasing.COLOR_CASE_40MM, 0x4B5443).setupSmoke(1F, 0.5D, 60, 40); - } - - public static GunConfiguration getHK69Config() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 30; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.hasSights = true; - config.zoomFOV = 0.66F; - config.reloadDuration = 40; - config.firingDuration = 0; - config.ammoCap = 1; - 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 = "gPistol"; - config.manufacturer = EnumGunManufacturer.H_AND_K; - - config.config = HbmCollection.grenade; - config.durability = 300; - - config.ejector = EJECTOR_LAUNCHER; - - return config; - } - - public static GunConfiguration getCongoConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 24; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.reloadDuration = 16; - config.firingDuration = 0; - config.ammoCap = 4; - config.reloadType = GunConfiguration.RELOAD_SINGLE; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_CIRCUMFLEX; - config.firingSound = "hbm:weapon.glShoot"; - config.reloadSound = GunConfiguration.RSOUND_GRENADE_NEW; - config.reloadSoundEnd = false; - - config.name = "congoLake"; - config.manufacturer = EnumGunManufacturer.NAWS; - - config.config = HbmCollection.grenade; - config.durability = 2500; - - config.ejector = EJECTOR_CONGOLAKE; - - config.reloadAnimationsSequential = true; - - config.loadAnimations = i -> { - config.animations.put(AnimType.CYCLE, ResourceManager.congolake_anim.get("Fire")); - config.animations.put(AnimType.CYCLE_EMPTY, ResourceManager.congolake_anim.get("FireEmpty")); - config.animations.put(AnimType.RELOAD, ResourceManager.congolake_anim.get("ReloadStart")); - config.animations.put(AnimType.RELOAD_EMPTY, ResourceManager.congolake_anim.get("ReloadEmpty")); - config.animations.put(AnimType.RELOAD_CYCLE, ResourceManager.congolake_anim.get("Reload")); - config.animations.put(AnimType.RELOAD_END, ResourceManager.congolake_anim.get("ReloadEnd")); - }; - - return config; - } - - public static BulletConfiguration getGrenadeConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.STOCK)); - bullet.velocity = 2.0F; - bullet.dmgMin = 10; - bullet.dmgMax = 15; - bullet.wear = 10; - bullet.trail = 0; - - bullet.spentCasing = CASING40MM.clone().register("40MMStock"); - - return bullet; - } - - public static BulletConfiguration getGrenadeHEConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.HE)); - bullet.velocity = 2.0F; - bullet.dmgMin = 20; - bullet.dmgMax = 15; - bullet.wear = 15; - bullet.explosive = 5.0F; - bullet.trail = 1; - - bullet.spentCasing = CASING40MM.clone().register("40MMHE"); - - return bullet; - } - - public static BulletConfiguration getGrenadeIncendirayConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.INCENDIARY)); - bullet.velocity = 2.0F; - bullet.dmgMin = 15; - bullet.dmgMax = 15; - bullet.wear = 15; - bullet.trail = 0; - bullet.incendiary = 2; - - bullet.spentCasing = CASING40MM.clone().register("40MMInc"); - - return bullet; - } - - public static BulletConfiguration getGrenadePhosphorusConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.PHOSPHORUS)); - bullet.velocity = 2.0F; - bullet.dmgMin = 15; - bullet.dmgMax = 15; - bullet.wear = 15; - bullet.trail = 0; - bullet.incendiary = 2; - - bullet.bntImpact = BulletConfigFactory.getPhosphorousEffect(10, 60 * 20, 100, 0.5D, 1F); - - bullet.spentCasing = CASING40MM.clone().register("40MMPhos"); - - return bullet; - } - - public static BulletConfiguration getGrenadeChlorineConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.CHLORINE)); - bullet.velocity = 2.0F; - bullet.dmgMin = 10; - bullet.dmgMax = 15; - bullet.wear = 10; - bullet.trail = 3; - bullet.explosive = 0; - bullet.chlorine = 50; - - bullet.spentCasing = CASING40MM.clone().register("40MMTox"); - - return bullet; - } - - public static BulletConfiguration getGrenadeSleekConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.SLEEK)); - bullet.velocity = 2.0F; - bullet.dmgMin = 10; - bullet.dmgMax = 15; - bullet.wear = 10; - bullet.trail = 4; - bullet.explosive = 7.5F; - bullet.jolt = 6.5D; - - bullet.spentCasing = CASING40MM.clone().register("40MMIF").setColor(SpentCasing.COLOR_CASE_40MM, 0x1C1C1C); - - return bullet; - } - - public static BulletConfiguration getGrenadeConcussionConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.CONCUSSION)); - bullet.velocity = 2.0F; - bullet.dmgMin = 15; - bullet.dmgMax = 20; - bullet.blockDamage = false; - bullet.explosive = 10.0F; - bullet.trail = 3; - - bullet.spentCasing = CASING40MM.clone().register("40MMCon").setColor(SpentCasing.COLOR_CASE_40MM, 0x3D5E1D); - - return bullet; - } - - public static BulletConfiguration getGrenadeFinnedConfig() { - - BulletConfiguration bullet = getGrenadeConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.FINNED)); - bullet.gravity = 0.02; - bullet.explosive = 1.5F; - bullet.trail = 5; - - bullet.spentCasing = CASING40MM.clone().register("40MMFin").setColor(SpentCasing.COLOR_CASE_40MM, 0x007FDB); - - return bullet; - } - - public static BulletConfiguration getGrenadeNuclearConfig() { - - BulletConfiguration bullet = getGrenadeConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.NUCLEAR)); - bullet.velocity = 4; - bullet.explosive = 0.0F; - - bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - BulletConfigFactory.nuclearExplosion(bulletnt, x, y, z, ExplosionNukeSmall.PARAMS_TOTS); - }; - - bullet.spentCasing = CASING40MM.clone().register("40MMNuke").setColor(SpentCasing.COLOR_CASE_40MM, 0xE2C000); - - return bullet; - } - - public static BulletConfiguration getGrenadeTracerConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.TRACER)); - bullet.velocity = 2.0F; - bullet.wear = 10; - bullet.explosive = 0F; - bullet.trail = 5; - bullet.vPFX = "bluedust"; - - bullet.spentCasing = CASING40MM.clone().register("40MMTrac").setColor(0xEEEEEE, 0x0075CA); - - return bullet; - } - - public static BulletConfiguration getGrenadeKampfConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.KAMPF)); - bullet.spread = 0.0F; - bullet.gravity = 0.0D; - bullet.wear = 15; - bullet.explosive = 3.5F; - bullet.style = BulletConfiguration.STYLE_GRENADE; - bullet.trail = 4; - bullet.vPFX = "smoke"; - - //bullet.spentCasing = CASING40MM.clone().register("40MMKampf").setColor(0xEBC35E); //does not eject, whole cartridge leaves the gun - - return bullet; - } - - public static BulletConfiguration getGrenadeLeadbursterConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig(); - - 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_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)); - - 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); - }; - - 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; - - 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++) { - 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; - 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; - 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/handler/guncfg/GunNPCFactory.java b/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java index d7fff5e2b..2bdf1cb63 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java @@ -12,8 +12,8 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.BobMathUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/handler/guncfg/GunOSIPRFactory.java b/src/main/java/com/hbm/handler/guncfg/GunOSIPRFactory.java deleted file mode 100644 index deb53436a..000000000 --- a/src/main/java/com/hbm/handler/guncfg/GunOSIPRFactory.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.hbm.handler.guncfg; - -import java.util.ArrayList; - -import com.hbm.blocks.bomb.BlockDetonatable; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.GunConfiguration; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ModItems; -import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.lib.ModDamageSource; -import com.hbm.potion.HbmPotion; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -import net.minecraft.block.Block; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.potion.PotionEffect; - -public class GunOSIPRFactory { - - public static GunConfiguration getOSIPRConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 2; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_AUTO; - config.reloadDuration = 20; - config.firingDuration = 0; - config.ammoCap = 30; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_ARROWS; - config.durability = 50_000; - config.reloadSound = "hbm:weapon.osiprReload"; - config.firingSound = "hbm:weapon.osiprShoot"; - config.reloadSoundEnd = false; - - config.name = "osipr"; - config.manufacturer = EnumGunManufacturer.COMBINE; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.SPECIAL_OSIPR); - - return config; - } - - public static GunConfiguration getAltConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 15; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.reloadDuration = 20; - config.firingDuration = 0; - config.ammoCap = 0; - config.reloadType = GunConfiguration.RELOAD_NONE; - config.allowsInfinity = true; - config.firingSound = "hbm:weapon.singFlyby"; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.SPECIAL_OSIPR_CHARGED); - - return config; - } - - static float inaccuracy = 1.25F; - public static BulletConfiguration getPulseConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.gun_osipr_ammo); - bullet.ammoCount = 30; - bullet.doesRicochet = false; - bullet.spread *= inaccuracy; - bullet.dmgMin = 15; - bullet.dmgMax = 21; - bullet.trail = 2; - - return bullet; - } - - public static BulletConfiguration getPulseChargedConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - - bullet.ammo = new ComparableStack(ModItems.gun_osipr_ammo2); - bullet.ricochetAngle = 360; - bullet.LBRC = 100; - bullet.HBRC = 100; - bullet.bounceMod = 1; - bullet.style = BulletConfiguration.STYLE_ORB; - bullet.damageType = ModDamageSource.s_combineball; - bullet.liveAfterImpact = true; - bullet.spread = 0; - bullet.gravity = 0; - bullet.maxAge = 150; - bullet.velocity = 2; - - bullet.bntHurt = (ball, entity) -> { - if(entity instanceof EntityLivingBase) { - EntityLivingBase entityLiving = (EntityLivingBase) entity; - entity.addVelocity(ball.motionX / 2, ball.motionY / 2, ball.motionZ / 2); - - if(entity == ball.getThrower()) - return; - - if(entityLiving.getHealth() <= 1000) { - entityLiving.addPotionEffect(new PotionEffect(HbmPotion.bang.id, 1, 0)); - entityLiving.setLastAttacker(ball.getThrower()); - } else if(entityLiving.getHealth() > 1000) { - ball.setDead(); - return; - } - - } - }; - - bullet.bntRicochet = (ball, x, y, z) -> { - Block block = ball.worldObj.getBlock(x, y, z); - if(block instanceof BlockDetonatable) { - ((BlockDetonatable) block).onShot(ball.worldObj, x, y, z); - } - }; - - bullet.bntImpact = (ball, x, y, z, sideHit) -> { - Block block = ball.worldObj.getBlock(x, y, z); - if(block instanceof BlockDetonatable) { - ((BlockDetonatable) block).onShot(ball.worldObj, x, y, z); - } - }; - - return bullet; - } -} diff --git a/src/main/java/com/hbm/handler/guncfg/GunPoweredFactory.java b/src/main/java/com/hbm/handler/guncfg/GunPoweredFactory.java deleted file mode 100644 index c80cb8f1d..000000000 --- a/src/main/java/com/hbm/handler/guncfg/GunPoweredFactory.java +++ /dev/null @@ -1,249 +0,0 @@ -package com.hbm.handler.guncfg; - -import java.util.ArrayList; - -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.GunConfiguration; -import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -import net.minecraft.util.EnumChatFormatting; - -public class GunPoweredFactory { - - public static GunConfiguration getGlassCannonConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_AUTO; - config.firingDuration = 0; - config.durability = 2500; - config.allowsInfinity = false; - config.crosshair = Crosshair.BOX; - config.firingSound = "hbm:weapon.zomgShoot"; - config.maxCharge = 1_000_000; - config.chargeRate = 2500; - - config.name = "LIY2001 Anti-Material Electromagnetic Rifle Prototype"; - config.manufacturer = EnumGunManufacturer.OXFORD; - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.GLASS_EMRADIO); - config.config.add(BulletConfigSyncingUtil.GLASS_EMMICRO); - config.config.add(BulletConfigSyncingUtil.GLASS_EMIR); - config.config.add(BulletConfigSyncingUtil.GLASS_EMVISIBLE); - config.config.add(BulletConfigSyncingUtil.GLASS_EMUV); - config.config.add(BulletConfigSyncingUtil.GLASS_EMXRAY); - config.config.add(BulletConfigSyncingUtil.GLASS_EMGAMMA); - - return config; - } - - public static BulletConfiguration getEMRadioConfig() { - - BulletConfiguration bullet = new BulletConfiguration(); - - bullet.velocity = 4.0F; - bullet.spread = 0F; - bullet.dmgMin = 35; - bullet.dmgMax = 45; - bullet.bulletsMin = 1; - bullet.bulletsMax = 1; - bullet.gravity = 0D; - bullet.maxAge = 100; - bullet.doesRicochet = true; - bullet.ricochetAngle = 90; - bullet.HBRC = 2; - bullet.LBRC = 90; - bullet.bounceMod = 1; - bullet.doesPenetrate = true; - bullet.style = BulletConfiguration.STYLE_BOLT; - bullet.trail = BulletConfiguration.BOLT_LASER; - bullet.plink = BulletConfiguration.PLINK_ENERGY; - bullet.dischargePerShot = 25_000; - bullet.firingRate = 20; - bullet.modeName = "weapon.elecGun.glass_cannon.radio"; - bullet.chatColour = EnumChatFormatting.DARK_RED; - bullet.setToFire(200); - - return bullet; - } - - public static BulletConfiguration getEMMicroConfig() { - - BulletConfiguration bullet = new BulletConfiguration(); - - bullet.velocity = 3.0F; - bullet.spread = 0F; - bullet.dmgMin = 18; - bullet.dmgMax = 22; - bullet.bulletsMin = 1; - bullet.bulletsMax = 1; - bullet.gravity = 0D; - bullet.maxAge = 100; - bullet.doesRicochet = true; - bullet.ricochetAngle = 90; - bullet.HBRC = 2; - bullet.LBRC = 90; - bullet.bounceMod = 1; - bullet.doesPenetrate = true; - bullet.style = BulletConfiguration.STYLE_BOLT; - bullet.trail = BulletConfiguration.BOLT_LASER; - bullet.dischargePerShot = 12_500; - bullet.firingRate = 15; - bullet.modeName = "weapon.elecGun.glass_cannon.micro"; - bullet.chatColour = EnumChatFormatting.RED; - bullet.setToFire(200); - - return bullet; - } - - public static BulletConfiguration getEMInfraredConfig() { - - BulletConfiguration bullet = new BulletConfiguration(); - - bullet.velocity = 2.0F; - bullet.spread = 0F; - bullet.dmgMin = 9; - bullet.dmgMax = 11; - bullet.bulletsMin = 1; - bullet.bulletsMax = 1; - bullet.gravity = 0D; - bullet.maxAge = 100; - bullet.doesRicochet = true; - bullet.ricochetAngle = 90; - bullet.HBRC = 2; - bullet.LBRC = 90; - bullet.bounceMod = 1; - bullet.doesPenetrate = true; - bullet.style = BulletConfiguration.STYLE_BOLT; - bullet.trail = BulletConfiguration.BOLT_LASER; - bullet.dischargePerShot = 6_000; - bullet.firingRate = 10; - bullet.modeName = "weapon.elecGun.glass_cannon.ir"; - bullet.chatColour = EnumChatFormatting.RED; - bullet.setToFire(100); - - return bullet; - } - - public static BulletConfiguration getEMVisibleConfig() { - - BulletConfiguration bullet = new BulletConfiguration(); - - bullet.velocity = 2.0F; - bullet.spread = 0F; - bullet.dmgMin = 4; - bullet.dmgMax = 6; - bullet.bulletsMin = 1; - bullet.bulletsMax = 1; - bullet.gravity = 0D; - bullet.maxAge = 100; - bullet.doesRicochet = true; - bullet.ricochetAngle = 90; - bullet.HBRC = 2; - bullet.LBRC = 90; - bullet.bounceMod = 1; - bullet.doesPenetrate = true; - bullet.style = BulletConfiguration.STYLE_BOLT; - bullet.trail = BulletConfiguration.BOLT_WORM; - bullet.dischargePerShot = 2_500; - bullet.firingRate = 5; - bullet.modeName = "weapon.elecGun.glass_cannon.visible"; - bullet.chatColour = EnumChatFormatting.GREEN; - bullet.setToFire(100); - - return bullet; - } - - public static BulletConfiguration getEMUVConfig() { - - BulletConfiguration bullet = new BulletConfiguration(); - - bullet.velocity = 2.0F; - bullet.spread = 0F; - bullet.dmgMin = 3; - bullet.dmgMax = 3; - bullet.bulletsMin = 1; - bullet.bulletsMax = 1; - bullet.gravity = 0D; - bullet.maxAge = 100; - bullet.doesRicochet = true; - bullet.ricochetAngle = 90; - bullet.HBRC = 2; - bullet.LBRC = 90; - bullet.bounceMod = 1; - bullet.doesPenetrate = true; - bullet.style = BulletConfiguration.STYLE_BOLT; - bullet.trail = BulletConfiguration.BOLT_GLASS_CYAN; - bullet.dischargePerShot = 1_200; - bullet.firingRate = 3; - bullet.modeName = "weapon.elecGun.glass_cannon.uv"; - bullet.chatColour = EnumChatFormatting.AQUA; - bullet.setToFire(100); - - return bullet; - } - - public static BulletConfiguration getEMXrayConfig() { - - BulletConfiguration bullet = new BulletConfiguration(); - - bullet.velocity = 2.0F; - bullet.spread = 0F; - bullet.dmgMin = 2; - bullet.dmgMax = 2; - bullet.bulletsMin = 1; - bullet.bulletsMax = 1; - bullet.gravity = 0D; - bullet.maxAge = 100; - bullet.doesRicochet = true; - bullet.ricochetAngle = 90; - bullet.HBRC = 2; - bullet.LBRC = 90; - bullet.bounceMod = 1; - bullet.doesPenetrate = true; - bullet.style = BulletConfiguration.STYLE_BOLT; - bullet.trail = BulletConfiguration.BOLT_GLASS_BLUE; - bullet.dischargePerShot = 800; - bullet.firingRate = 2; - bullet.modeName = "weapon.elecGun.glass_cannon.xray"; - bullet.chatColour = EnumChatFormatting.BLUE; - bullet.setToFire(40); - - return bullet; - } - - public static BulletConfiguration getEMGammaConfig() { - - BulletConfiguration bullet = new BulletConfiguration(); - - bullet.velocity = 2.0F; - bullet.spread = 0F; - bullet.dmgMin = 1; - bullet.dmgMax = 1; - bullet.bulletsMin = 1; - bullet.bulletsMax = 1; - bullet.gravity = 0D; - bullet.maxAge = 100; - bullet.doesRicochet = true; - bullet.ricochetAngle = 90; - bullet.HBRC = 2; - bullet.LBRC = 90; - bullet.bounceMod = 1; - bullet.doesPenetrate = true; - bullet.style = BulletConfiguration.STYLE_BOLT; - bullet.trail = BulletConfiguration.BOLT_LACUNAE; - bullet.dischargePerShot = 400; - bullet.firingRate = 1; - bullet.modeName = "weapon.elecGun.glass_cannon.gamma"; - bullet.chatColour = EnumChatFormatting.LIGHT_PURPLE; - bullet.setToFire(40); - - return bullet; - } - -} diff --git a/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java b/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java index 1c933ce55..214aca559 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java @@ -1,179 +1,16 @@ package com.hbm.handler.guncfg; -import java.util.ArrayList; - -import com.hbm.entity.effect.EntitySpear; -import com.hbm.entity.projectile.EntityBulletBaseNT; -import com.hbm.explosion.ExplosionNukeSmall; -import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.GunConfiguration; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; -import com.hbm.items.ItemAmmoEnums.AmmoRocket; -import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.render.anim.BusAnimation; -import com.hbm.render.anim.BusAnimationSequence; -import com.hbm.render.anim.HbmAnimations.AnimType; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -import net.minecraft.block.material.Material; -import net.minecraft.world.World; public class GunRocketFactory { - public static GunConfiguration getGustavConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 30; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.reloadDuration = 30; - config.firingDuration = 0; - config.ammoCap = 1; - config.reloadType = GunConfiguration.RELOAD_SINGLE; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_CIRCUMFLEX; - config.firingSound = "hbm:weapon.rpgShoot"; - config.reloadSound = GunConfiguration.RSOUND_LAUNCHER; - config.reloadSoundEnd = false; - - config.name = "gustav"; - config.manufacturer = EnumGunManufacturer.SAAB; - config.comment.add("Fun fact of the day: Recoilless"); - config.comment.add("rifles don't actually fire rockets."); - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.ROCKET_NORMAL); - config.config.add(BulletConfigSyncingUtil.ROCKET_HE); - config.config.add(BulletConfigSyncingUtil.ROCKET_INCENDIARY); - config.config.add(BulletConfigSyncingUtil.ROCKET_PHOSPHORUS); - config.config.add(BulletConfigSyncingUtil.ROCKET_SHRAPNEL); - config.config.add(BulletConfigSyncingUtil.ROCKET_EMP); - config.config.add(BulletConfigSyncingUtil.ROCKET_GLARE); - config.config.add(BulletConfigSyncingUtil.ROCKET_TOXIC); - config.config.add(BulletConfigSyncingUtil.ROCKET_CANISTER); - config.config.add(BulletConfigSyncingUtil.ROCKET_SLEEK); - config.config.add(BulletConfigSyncingUtil.ROCKET_NUKE); - config.config.add(BulletConfigSyncingUtil.ROCKET_CHAINSAW); - config.durability = 140; - - return config; - } - - public static GunConfiguration getQuadroConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 5; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.reloadDuration = 100; - config.firingDuration = 0; - config.ammoCap = 4; - config.reloadType = GunConfiguration.RELOAD_FULL; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_CIRCUMFLEX; - config.firingSound = "hbm:weapon.rpgShoot"; - config.reloadSound = "hbm:weapon.quadroReload"; - config.reloadSoundEnd = false; - - config.animations.put(AnimType.CYCLE, new BusAnimation() - .addBus("QUADRO_RECOIL", new BusAnimationSequence() - .addKeyframePosition(0, 0, -0.5, 50) - .addKeyframePosition(0, 0, 0, 50) - ) - ); - - config.animations.put(AnimType.RELOAD, new BusAnimation() - .addBus("QUADRO_RELOAD_ROTATE", new BusAnimationSequence() - .addKeyframePosition(0, 0, 60, 750) - .addKeyframePosition(0, 0, 60, 3500) - .addKeyframePosition(0, 0, 0, 750) - ) - .addBus("QUADRO_RELOAD_PUSH", new BusAnimationSequence() - .addKeyframePosition(-1, -1, 0, 0) - .addKeyframePosition(-1, -1, 0, 750) - .addKeyframePosition(-1, 0, 0, 500) - .addKeyframePosition(0, 0, 0, 3000) - .addKeyframePosition(0, 0, 0, 750) - ) - ); - - config.name = "quadro"; - config.manufacturer = EnumGunManufacturer.MANN; - config.comment.add("For the next three hundred years, people who needed to get to the second"); - config.comment.add("floor used the only method available to them, which was rocket jumping."); - config.comment.add("This persisted until 1857, when the young bearded inventor named"); - config.comment.add("President Abraham Lincoln invented stairs."); - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.ROCKET_NORMAL_LASER); - config.config.add(BulletConfigSyncingUtil.ROCKET_HE_LASER); - config.config.add(BulletConfigSyncingUtil.ROCKET_INCENDIARY_LASER); - config.config.add(BulletConfigSyncingUtil.ROCKET_PHOSPHORUS_LASER); - config.config.add(BulletConfigSyncingUtil.ROCKET_SHRAPNEL_LASER); - config.config.add(BulletConfigSyncingUtil.ROCKET_EMP_LASER); - config.config.add(BulletConfigSyncingUtil.ROCKET_GLARE_LASER); - config.config.add(BulletConfigSyncingUtil.ROCKET_TOXIC_LASER); - config.config.add(BulletConfigSyncingUtil.ROCKET_CANISTER); - config.config.add(BulletConfigSyncingUtil.ROCKET_SLEEK_LASER); - config.config.add(BulletConfigSyncingUtil.ROCKET_NUKE_LASER); - config.config.add(BulletConfigSyncingUtil.ROCKET_CHAINSAW_LASER); - config.durability = 500; - - return config; - } - - public static GunConfiguration getKarlConfig() { - - GunConfiguration config = getGustavConfig(); - - config.reloadDuration = 20; - - config.name = "karl"; - config.manufacturer = EnumGunManufacturer.UNKNOWN; - config.comment.clear(); - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.ROCKET_HE); - config.config.add(BulletConfigSyncingUtil.ROCKET_EMP); - config.config.add(BulletConfigSyncingUtil.ROCKET_SLEEK); - config.config.add(BulletConfigSyncingUtil.ROCKET_TOXIC); - config.config.add(BulletConfigSyncingUtil.ROCKET_CANISTER); - config.config.add(BulletConfigSyncingUtil.ROCKET_NUKE); - config.config.add(BulletConfigSyncingUtil.ROCKET_CHAINSAW); - config.config.add(BulletConfigSyncingUtil.ROCKET_ERROR); - config.durability = 500; - - return config; - } - - public static GunConfiguration getPanzConfig() { - - GunConfiguration config = getGustavConfig(); - - config.reloadDuration = 25; - config.hasSights = true; - - config.name = "panz"; - config.manufacturer = EnumGunManufacturer.ENZINGER; - config.comment.clear(); - config.comment.add("Panzer-Shrek"); - - config.durability = 260; - - return config; - } - public static BulletConfiguration getRocketConfig() { BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.STOCK)); + bullet.ammo = new ComparableStack(ModItems.nothing); bullet.dmgMin = 10; bullet.dmgMax = 15; bullet.explosive = 4F; @@ -181,232 +18,4 @@ public class GunRocketFactory { return bullet; } - - public static BulletConfiguration getRocketHEConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.HE)); - bullet.dmgMin = 10; - bullet.dmgMax = 15; - bullet.wear = 15; - bullet.explosive = 6.5F; - bullet.trail = 1; - - return bullet; - } - - public static BulletConfiguration getRocketIncendiaryConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.INCENDIARY)); - bullet.dmgMin = 10; - bullet.dmgMax = 15; - bullet.wear = 15; - bullet.explosive = 4F; - bullet.incendiary = 5; - bullet.trail = 2; - - return bullet; - } - - public static BulletConfiguration getRocketEMPConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.EMP)); - bullet.dmgMin = 10; - bullet.dmgMax = 15; - bullet.explosive = 2.5F; - bullet.emp = 10; - bullet.trail = 4; - - return bullet; - } - - public static BulletConfiguration getRocketSleekConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.SLEEK)); - bullet.dmgMin = 10; - bullet.dmgMax = 15; - bullet.explosive = 10F; - bullet.trail = 6; - bullet.gravity = 0; - bullet.jolt = 6.5D; - - return bullet; - } - - public static BulletConfiguration getRocketShrapnelConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.SHRAPNEL)); - bullet.dmgMin = 10; - bullet.dmgMax = 15; - bullet.explosive = 4F; - bullet.shrapnel = 25; - bullet.trail = 3; - - return bullet; - } - - public static BulletConfiguration getRocketGlareConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.GLARE)); - bullet.velocity = 5.0F; - bullet.dmgMin = 10; - bullet.dmgMax = 15; - bullet.wear = 20; - bullet.explosive = 4F; - bullet.incendiary = 5; - bullet.trail = 5; - - return bullet; - } - - public static BulletConfiguration getRocketNukeConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.NUCLEAR)); - bullet.velocity = 1.5F; - bullet.dmgMin = 10; - bullet.dmgMax = 15; - bullet.wear = 35; - bullet.explosive = 0; - bullet.incendiary = 0; - bullet.trail = 7; - - bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - BulletConfigFactory.nuclearExplosion(bulletnt, x, y, z, ExplosionNukeSmall.PARAMS_MEDIUM); - }; - - return bullet; - } - - public static BulletConfiguration getRocketChlorineConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.CHLORINE)); - bullet.velocity = 1.5F; - bullet.dmgMin = 10; - bullet.dmgMax = 15; - bullet.wear = 10; - bullet.explosive = 0; - bullet.chlorine = 50; - bullet.trail = 7; - - return bullet; - } - - public static BulletConfiguration getRocketRPCConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.RPC)); - bullet.velocity = 3.0F; - bullet.dmgMin = 20; - bullet.dmgMax = 25; - bullet.wear = 15; - bullet.explosive = 0; - bullet.incendiary = 0; - bullet.trail = 8; - bullet.gravity = 0.000D; - bullet.ricochetAngle = 90; - bullet.LBRC = 100; - bullet.doesPenetrate = true; - - bullet.bntRicochet = (bulletnt, bX, bY, bZ) -> { - World worldObj = bulletnt.worldObj; - if(!worldObj.isRemote && (worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.wood || - worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.plants || - worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.glass || - worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.leaves)) - worldObj.func_147480_a(bX, bY, bZ, false); - - }; - - return bullet; - } - - public static BulletConfiguration getRocketPhosphorusConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.PHOSPHORUS)); - bullet.dmgMin = 10; - bullet.dmgMax = 15; - bullet.wear = 15; - bullet.explosive = 4F; - bullet.incendiary = 5; - bullet.trail = 9; - - bullet.bntImpact = BulletConfigFactory.getPhosphorousEffect(10, 60 * 20, 100, 0.5D, 1F); - - return bullet; - } - - public static BulletConfiguration getRocketCanisterConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.CANISTER)); - bullet.dmgMin = 10; - bullet.dmgMax = 15; - bullet.explosive = 2F; - bullet.trail = 0; - - bullet.bntUpdate = (bulletnt) -> { - if(!bulletnt.worldObj.isRemote) { - if(bulletnt.ticksExisted > 10) { - bulletnt.setDead(); - for(int i = 0; i < 50; i++) { - EntityBulletBaseNT bolt = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.M44_AP); - bolt.setPosition(bulletnt.posX, bulletnt.posY, bulletnt.posZ); - bolt.setThrowableHeading(bulletnt.motionX, bulletnt.motionY, bulletnt.motionZ, 0.25F, 0.1F); - bolt.setThrower(bulletnt.getThrower()); - bulletnt.worldObj.spawnEntityInWorld(bolt); - } - } - } - }; - - return bullet; - } - - public static BulletConfiguration getRocketErrorConfig() { - - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.DIGAMMA)); - bullet.velocity = 0.5F; - bullet.dmgMin = 10; - bullet.dmgMax = 15; - bullet.wear = 35; - bullet.explosive = 0; - bullet.incendiary = 0; - bullet.trail = 7; - - bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> { - - if(bulletnt.worldObj.isRemote) - return; - - EntitySpear spear = new EntitySpear(bulletnt.worldObj); - spear.posX = bulletnt.posX; - spear.posZ = bulletnt.posZ; - spear.posY = bulletnt.posY + 100; - - bulletnt.worldObj.spawnEntityInWorld(spear); - }; - - return bullet; - } } diff --git a/src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java b/src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java deleted file mode 100644 index 3e2808d40..000000000 --- a/src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java +++ /dev/null @@ -1,258 +0,0 @@ -package com.hbm.handler.guncfg; - -import java.util.ArrayList; - -import com.hbm.entity.projectile.EntityRocketHoming; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.GunConfiguration; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ItemAmmoEnums.AmmoStinger; -import com.hbm.items.ModItems; -import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -import net.minecraft.entity.player.EntityPlayer; - -public class GunRocketHomingFactory { - - public static GunConfiguration getStingerConfig() { - - GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 20; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.reloadDuration = 20; - config.firingDuration = 0; - config.ammoCap = 1; - config.reloadType = GunConfiguration.RELOAD_SINGLE; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_KRUCK; - config.firingSound = "hbm:weapon.rpgShoot"; - config.reloadSound = GunConfiguration.RSOUND_LAUNCHER; - config.reloadSoundEnd = false; - - config.name = "stinger"; - config.manufacturer = EnumGunManufacturer.RAYTHEON; - config.comment.add("Woosh, beep-beep-beep!"); - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.ROCKET_STINGER); - config.config.add(BulletConfigSyncingUtil.ROCKET_STINGER_HE); - config.config.add(BulletConfigSyncingUtil.ROCKET_STINGER_INCENDIARY); - config.config.add(BulletConfigSyncingUtil.ROCKET_STINGER_NUCLEAR); - config.config.add(BulletConfigSyncingUtil.ROCKET_STINGER_BONES); - config.durability = 250; - - return config; - } - - public static GunConfiguration getSkyStingerConfig() { -GunConfiguration config = new GunConfiguration(); - - config.rateOfFire = 20; - config.roundsPerCycle = 1; - config.gunMode = GunConfiguration.MODE_NORMAL; - config.firingMode = GunConfiguration.FIRE_MANUAL; - config.reloadDuration = 20; - config.firingDuration = 0; - config.ammoCap = 1; - config.reloadType = GunConfiguration.RELOAD_SINGLE; - config.allowsInfinity = true; - config.crosshair = Crosshair.L_KRUCK; - config.firingSound = "hbm:weapon.rpgShoot"; - config.reloadSound = GunConfiguration.RSOUND_LAUNCHER; - config.reloadSoundEnd = false; - - config.name = "stingerOneSky"; - config.manufacturer = EnumGunManufacturer.EQUESTRIA; - config.comment.add("Oh, I get it, because of the...nyeees!"); - config.comment.add("It all makes sense now!"); - config.comment.add(""); - config.comment.add("Rockets travel faster, are Three times stronger"); - config.comment.add("and fires a second rocket for free"); - config.comment.add(""); - config.comment.add("[LEGENDARY WEAPON]"); - - config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.ROCKET_STINGER); - config.config.add(BulletConfigSyncingUtil.ROCKET_STINGER_HE); - config.config.add(BulletConfigSyncingUtil.ROCKET_STINGER_INCENDIARY); - config.config.add(BulletConfigSyncingUtil.ROCKET_STINGER_NUCLEAR); - config.config.add(BulletConfigSyncingUtil.ROCKET_STINGER_BONES); - config.durability = 1000; - - return config; - } - - public static BulletConfiguration getRocketStingerConfig() { - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.STOCK)); - bullet.dmgMin = 20; - bullet.dmgMax = 25; - bullet.explosive = 4F; - bullet.trail = 0; - - bullet.bntUpdate = (bulletnt) -> { - - if(!bulletnt.worldObj.isRemote) { - - EntityPlayer player = bulletnt.worldObj.getClosestPlayerToEntity(bulletnt, -1.0D); - EntityRocketHoming rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.0F, 5.0F, 0); - if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { - EntityRocketHoming rocket2 = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 0); - rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 0); - rocket.setIsCritical(true); - rocket2.setIsCritical(true); - bulletnt.worldObj.spawnEntityInWorld(rocket2); - } - rocket.homingMod = 5; - rocket.homingRadius = 25; - bulletnt.worldObj.spawnEntityInWorld(rocket); - bulletnt.setDead(); - - } - }; - return bullet; - } - - public static BulletConfiguration getRocketStingerHEConfig() { - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.HE)); - bullet.dmgMin = 30; - bullet.dmgMax = 35; - bullet.explosive = 8F; - bullet.trail = 0; - bullet.wear = 15; - - bullet.bntUpdate = (bulletnt) -> { - - if(!bulletnt.worldObj.isRemote) { - - EntityPlayer player = bulletnt.worldObj.getClosestPlayerToEntity(bulletnt, -1.0D); - EntityRocketHoming rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.0F, 5.0F, 1); - if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { - EntityRocketHoming rocket2 = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 1); - rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 1); - rocket.setIsCritical(true); - rocket2.setIsCritical(true); - bulletnt.worldObj.spawnEntityInWorld(rocket2); - } - rocket.homingMod = 5; - rocket.homingRadius = 25; - bulletnt.worldObj.spawnEntityInWorld(rocket); - bulletnt.setDead(); - - } - }; - return bullet; - } - - public static BulletConfiguration getRocketStingerIncendiaryConfig() { - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.INCENDIARY)); - bullet.dmgMin = 15; - bullet.dmgMax = 20; - bullet.explosive = 4F; - bullet.trail = 0; - bullet.wear = 12; - - bullet.bntUpdate = (bulletnt) -> { - - if(!bulletnt.worldObj.isRemote) { - - EntityPlayer player = bulletnt.worldObj.getClosestPlayerToEntity(bulletnt, -1.0D); - EntityRocketHoming rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.0F, 5.0F, 2); - if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { - EntityRocketHoming rocket2 = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 2); - rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 2); - rocket.setIsCritical(true); - rocket2.setIsCritical(true); - bulletnt.worldObj.spawnEntityInWorld(rocket2); - } - rocket.homingMod = 5; - rocket.homingRadius = 25; - bulletnt.worldObj.spawnEntityInWorld(rocket); - bulletnt.setDead(); - - } - }; - return bullet; - } - - public static BulletConfiguration getRocketStingerNuclearConfig() { - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.NUCLEAR)); - bullet.dmgMin = 50; - bullet.dmgMax = 55; - bullet.explosive = 15F; - bullet.trail = 0; - bullet.wear = 30; - - bullet.bntUpdate = (bulletnt) -> { - - if(!bulletnt.worldObj.isRemote) { - - EntityPlayer player = bulletnt.worldObj.getClosestPlayerToEntity(bulletnt, -1.0D); - - if(player.getDistanceToEntity(bulletnt) < 16) { - EntityRocketHoming rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.0F, 5.0F, 4); - if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { - EntityRocketHoming rocket2 = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 4); - rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 4); - rocket.setIsCritical(true); - rocket2.setIsCritical(true); - bulletnt.worldObj.spawnEntityInWorld(rocket2); - } - rocket.homingMod = 5; - rocket.homingRadius = 25; - bulletnt.worldObj.spawnEntityInWorld(rocket); - } - bulletnt.setDead(); - - } - }; - return bullet; - } - - public static BulletConfiguration getRocketStingerBonesConfig() { - BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); - - bullet.ammo = new ComparableStack(ModItems.ammo_stinger_rocket.stackFromEnum(AmmoStinger.BONES)); - bullet.dmgMin = 20; - bullet.dmgMax = 25; - bullet.explosive = 8F; - bullet.trail = 0; - - bullet.bntUpdate = (bulletnt) -> { - - if(!bulletnt.worldObj.isRemote) { - - EntityPlayer player = bulletnt.worldObj.getClosestPlayerToEntity(bulletnt, -1.0D); - - if(player.getDistanceToEntity(bulletnt) < 16) { - EntityRocketHoming rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.0F, 5.0F, 42); - if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { - EntityRocketHoming rocket2 = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 42); - rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 42); - rocket.setIsCritical(true); - rocket2.setIsCritical(true); - bulletnt.worldObj.spawnEntityInWorld(rocket2); - } - rocket.homingMod = 5; - rocket.homingRadius = 25; - bulletnt.worldObj.spawnEntityInWorld(rocket); - } - bulletnt.setDead(); - - } - }; - return bullet; - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/handler/nei/AmmoPressHandler.java b/src/main/java/com/hbm/handler/nei/AmmoPressHandler.java new file mode 100644 index 000000000..3f1ba26b8 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/AmmoPressHandler.java @@ -0,0 +1,16 @@ +package com.hbm.handler.nei; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.recipes.AmmoPressRecipes; + +public class AmmoPressHandler extends NEIUniversalHandler { + + public AmmoPressHandler() { + super(ModBlocks.machine_ammo_press.getLocalizedName(), ModBlocks.machine_ammo_press, AmmoPressRecipes.getRecipes()); + } + + @Override + public String getKey() { + return "ntmAmmoPress"; + } +} diff --git a/src/main/java/com/hbm/handler/nei/ArcFurnaceFluidHandler.java b/src/main/java/com/hbm/handler/nei/ArcFurnaceFluidHandler.java index 228cb786c..b7290eedb 100644 --- a/src/main/java/com/hbm/handler/nei/ArcFurnaceFluidHandler.java +++ b/src/main/java/com/hbm/handler/nei/ArcFurnaceFluidHandler.java @@ -6,7 +6,7 @@ import com.hbm.inventory.recipes.ArcFurnaceRecipes; public class ArcFurnaceFluidHandler extends NEIUniversalHandler { public ArcFurnaceFluidHandler() { - super("Arc Furnace (Fluid)", ModBlocks.machine_arc_furnace, ArcFurnaceRecipes.getFluidRecipes()); + super(ModBlocks.machine_arc_furnace.getLocalizedName(), ModBlocks.machine_arc_furnace, ArcFurnaceRecipes.getFluidRecipes()); } @Override diff --git a/src/main/java/com/hbm/handler/nei/ArcFurnaceSolidHandler.java b/src/main/java/com/hbm/handler/nei/ArcFurnaceSolidHandler.java index b2b21ffd9..7345e4f72 100644 --- a/src/main/java/com/hbm/handler/nei/ArcFurnaceSolidHandler.java +++ b/src/main/java/com/hbm/handler/nei/ArcFurnaceSolidHandler.java @@ -6,7 +6,7 @@ import com.hbm.inventory.recipes.ArcFurnaceRecipes; public class ArcFurnaceSolidHandler extends NEIUniversalHandler { public ArcFurnaceSolidHandler() { - super("Arc Furnace (Solid)", ModBlocks.machine_arc_furnace, ArcFurnaceRecipes.getSolidRecipes()); + super(ModBlocks.machine_arc_furnace.getLocalizedName(), ModBlocks.machine_arc_furnace, ArcFurnaceRecipes.getSolidRecipes()); } @Override diff --git a/src/main/java/com/hbm/handler/nei/ArcWelderHandler.java b/src/main/java/com/hbm/handler/nei/ArcWelderHandler.java index e598840fc..b1eb411bf 100644 --- a/src/main/java/com/hbm/handler/nei/ArcWelderHandler.java +++ b/src/main/java/com/hbm/handler/nei/ArcWelderHandler.java @@ -15,7 +15,7 @@ import net.minecraft.item.ItemStack; public class ArcWelderHandler extends NEIUniversalHandler { public ArcWelderHandler() { - super("Arc Welder", ModBlocks.machine_arc_welder, ArcWelderRecipes.getRecipes()); + super(ModBlocks.machine_arc_welder.getLocalizedName(), ModBlocks.machine_arc_welder, ArcWelderRecipes.getRecipes()); } @Override diff --git a/src/main/java/com/hbm/handler/nei/AshpitHandler.java b/src/main/java/com/hbm/handler/nei/AshpitHandler.java index d7cf8af20..6e4313a84 100644 --- a/src/main/java/com/hbm/handler/nei/AshpitHandler.java +++ b/src/main/java/com/hbm/handler/nei/AshpitHandler.java @@ -17,7 +17,7 @@ import net.minecraft.item.ItemStack; public class AshpitHandler extends NEIUniversalHandler { public AshpitHandler() { - super("Ashpit", ModBlocks.machine_ashpit, getRecipes()); + super(ModBlocks.machine_ashpit.getLocalizedName(), ModBlocks.machine_ashpit, getRecipes()); } @Override diff --git a/src/main/java/com/hbm/handler/nei/BoilingHandler.java b/src/main/java/com/hbm/handler/nei/BoilingHandler.java index a048cfb44..392468a89 100644 --- a/src/main/java/com/hbm/handler/nei/BoilingHandler.java +++ b/src/main/java/com/hbm/handler/nei/BoilingHandler.java @@ -13,34 +13,35 @@ import com.hbm.items.machine.ItemFluidIcon; public class BoilingHandler extends NEIUniversalHandler { public BoilingHandler() { - super("Boiler", ModBlocks.machine_boiler, generateRecipes()); + super(ModBlocks.machine_boiler.getLocalizedName(), ModBlocks.machine_boiler, generateRecipes()); } @Override public String getKey() { return "ntmBoiling"; } - + public static HashMap cache; - + public static boolean isReload=false; + public static HashMap generateRecipes() { - - if(cache != null) return cache; - + + if(cache != null && !isReload) return cache; + cache = new HashMap(); - + for(FluidType type : Fluids.getInNiceOrder()) { - + if(type.hasTrait(FT_Heatable.class)) { FT_Heatable trait = type.getTrait(FT_Heatable.class); - + if(trait.getEfficiency(HeatingType.BOILER) > 0) { HeatingStep step = trait.getFirstStep(); cache.put(ItemFluidIcon.make(type, step.amountReq), ItemFluidIcon.make(step.typeProduced, step.amountProduced)); } } } - + isReload=false; return cache; } } diff --git a/src/main/java/com/hbm/handler/nei/CokingHandler.java b/src/main/java/com/hbm/handler/nei/CokingHandler.java index a0227147e..41d0c72ce 100644 --- a/src/main/java/com/hbm/handler/nei/CokingHandler.java +++ b/src/main/java/com/hbm/handler/nei/CokingHandler.java @@ -9,7 +9,7 @@ import com.hbm.inventory.recipes.CokerRecipes; public class CokingHandler extends NEIUniversalHandler { public CokingHandler() { - super("Coking", ModBlocks.machine_coker, CokerRecipes.getRecipes()); + super(ModBlocks.machine_coker.getLocalizedName(), ModBlocks.machine_coker, CokerRecipes.getRecipes()); } @Override diff --git a/src/main/java/com/hbm/handler/nei/CombinationHandler.java b/src/main/java/com/hbm/handler/nei/CombinationHandler.java index 0c07afbbc..b303a2b53 100644 --- a/src/main/java/com/hbm/handler/nei/CombinationHandler.java +++ b/src/main/java/com/hbm/handler/nei/CombinationHandler.java @@ -9,7 +9,7 @@ import com.hbm.inventory.recipes.CombinationRecipes; public class CombinationHandler extends NEIUniversalHandler { public CombinationHandler() { - super("Combination Furnace", ModBlocks.furnace_combination, CombinationRecipes.getRecipes()); + super(ModBlocks.furnace_combination.getLocalizedName(), ModBlocks.furnace_combination, CombinationRecipes.getRecipes()); } @Override diff --git a/src/main/java/com/hbm/handler/nei/CompressorHandler.java b/src/main/java/com/hbm/handler/nei/CompressorHandler.java new file mode 100644 index 000000000..79beb12ff --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/CompressorHandler.java @@ -0,0 +1,16 @@ +package com.hbm.handler.nei; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.recipes.CompressorRecipes; + +public class CompressorHandler extends NEIUniversalHandler { + + public CompressorHandler() { + super(ModBlocks.machine_compressor.getLocalizedName(), ModBlocks.machine_compressor, CompressorRecipes.getRecipes()); + } + + @Override + public String getKey() { + return "ntmCompressor"; + } +} diff --git a/src/main/java/com/hbm/handler/nei/ElectrolyserFluidHandler.java b/src/main/java/com/hbm/handler/nei/ElectrolyserFluidHandler.java index 11af20db8..5072b1bfb 100644 --- a/src/main/java/com/hbm/handler/nei/ElectrolyserFluidHandler.java +++ b/src/main/java/com/hbm/handler/nei/ElectrolyserFluidHandler.java @@ -9,7 +9,7 @@ import com.hbm.inventory.recipes.ElectrolyserFluidRecipes; public class ElectrolyserFluidHandler extends NEIUniversalHandler { public ElectrolyserFluidHandler() { - super("Electrolysis", ModBlocks.machine_electrolyser, ElectrolyserFluidRecipes.getRecipes()); + super(ModBlocks.machine_electrolyser.getLocalizedName(), ModBlocks.machine_electrolyser, ElectrolyserFluidRecipes.getRecipes()); } @Override diff --git a/src/main/java/com/hbm/handler/nei/ElectrolyserMetalHandler.java b/src/main/java/com/hbm/handler/nei/ElectrolyserMetalHandler.java index f1d5b6e68..b695f86b9 100644 --- a/src/main/java/com/hbm/handler/nei/ElectrolyserMetalHandler.java +++ b/src/main/java/com/hbm/handler/nei/ElectrolyserMetalHandler.java @@ -9,7 +9,7 @@ import com.hbm.inventory.recipes.ElectrolyserMetalRecipes; public class ElectrolyserMetalHandler extends NEIUniversalHandler { public ElectrolyserMetalHandler() { - super("Electrolysis", ModBlocks.machine_electrolyser, ElectrolyserMetalRecipes.getRecipes()); + super(ModBlocks.machine_electrolyser.getLocalizedName(), ModBlocks.machine_electrolyser, ElectrolyserMetalRecipes.getRecipes()); } @Override diff --git a/src/main/java/com/hbm/handler/nei/ExposureChamberHandler.java b/src/main/java/com/hbm/handler/nei/ExposureChamberHandler.java index 4969763e4..a9f16bb50 100644 --- a/src/main/java/com/hbm/handler/nei/ExposureChamberHandler.java +++ b/src/main/java/com/hbm/handler/nei/ExposureChamberHandler.java @@ -9,7 +9,7 @@ import com.hbm.inventory.recipes.ExposureChamberRecipes; public class ExposureChamberHandler extends NEIUniversalHandler { public ExposureChamberHandler() { - super("Exposure Chamber", ModBlocks.machine_exposure_chamber, ExposureChamberRecipes.getRecipes()); + super(ModBlocks.machine_exposure_chamber.getLocalizedName(), ModBlocks.machine_exposure_chamber, ExposureChamberRecipes.getRecipes()); } @Override diff --git a/src/main/java/com/hbm/handler/nei/FractioningHandler.java b/src/main/java/com/hbm/handler/nei/FractioningHandler.java index 158ab9b4d..fb54c4d51 100644 --- a/src/main/java/com/hbm/handler/nei/FractioningHandler.java +++ b/src/main/java/com/hbm/handler/nei/FractioningHandler.java @@ -6,7 +6,7 @@ import com.hbm.inventory.recipes.FractionRecipes; public class FractioningHandler extends NEIUniversalHandler { public FractioningHandler() { - super("Fractioning", ModBlocks.machine_fraction_tower, FractionRecipes.getFractionRecipesForNEI()); + super(ModBlocks.machine_fraction_tower.getLocalizedName(), ModBlocks.machine_fraction_tower, FractionRecipes.getFractionRecipesForNEI()); } @Override diff --git a/src/main/java/com/hbm/handler/nei/LiquefactionHandler.java b/src/main/java/com/hbm/handler/nei/LiquefactionHandler.java index b3f31e9cb..5d0398d4c 100644 --- a/src/main/java/com/hbm/handler/nei/LiquefactionHandler.java +++ b/src/main/java/com/hbm/handler/nei/LiquefactionHandler.java @@ -6,7 +6,7 @@ import com.hbm.inventory.recipes.LiquefactionRecipes; public class LiquefactionHandler extends NEIUniversalHandler { public LiquefactionHandler() { - super("Liquefaction", ModBlocks.machine_liquefactor, LiquefactionRecipes.getRecipes()); + super(ModBlocks.machine_liquefactor.getLocalizedName(), ModBlocks.machine_liquefactor, LiquefactionRecipes.getRecipes()); } @Override diff --git a/src/main/java/com/hbm/handler/nei/MixerHandler.java b/src/main/java/com/hbm/handler/nei/MixerHandler.java index 320cde187..b93ff9ca1 100644 --- a/src/main/java/com/hbm/handler/nei/MixerHandler.java +++ b/src/main/java/com/hbm/handler/nei/MixerHandler.java @@ -9,7 +9,7 @@ import com.hbm.inventory.recipes.MixerRecipes; public class MixerHandler extends NEIUniversalHandler { public MixerHandler() { - super("Mixer", ModBlocks.machine_mixer, MixerRecipes.getRecipes()); + super(ModBlocks.machine_mixer.getLocalizedName(), ModBlocks.machine_mixer, MixerRecipes.getRecipes()); } @Override diff --git a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java index 996e1dc27..2b8eeed8b 100644 --- a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java +++ b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java @@ -139,7 +139,7 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler implemen drawTexturedModalRect(pos[0] - 1, pos[1] - 1, 5, 87, 18, 18); } - drawTexturedModalRect(74, 14, 59, 87, 18, 38); + drawTexturedModalRect(74, 14, 59, 87, 18, 36); } public static int[][] getInputCoords(int count) { @@ -242,19 +242,19 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler implemen case 6: return new int[][] { {102, 6}, {120, 6}, {102, 24}, {120, 24}, - {102, 32}, {120, 32}, + {102, 42}, {120, 42}, }; case 7: return new int[][] { {102, 6}, {120, 6}, {102, 24}, {120, 24}, - {102, 32}, {120, 32}, + {102, 42}, {120, 42}, {138, 24}, }; case 8: return new int[][] { {102, 6}, {120, 6}, {102, 24}, {120, 24}, - {102, 32}, {120, 32}, - {138, 24}, {138, 32}, + {102, 42}, {120, 42}, + {138, 24}, {138, 42}, }; } diff --git a/src/main/java/com/hbm/handler/nei/OreSlopperHandler.java b/src/main/java/com/hbm/handler/nei/OreSlopperHandler.java new file mode 100644 index 000000000..28c953010 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/OreSlopperHandler.java @@ -0,0 +1,37 @@ +package com.hbm.handler.nei; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemFluidIcon; +import com.hbm.items.special.ItemBedrockOreNew; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; + +import net.minecraft.item.ItemStack; + +public class OreSlopperHandler extends NEIUniversalHandler { + + public OreSlopperHandler() { + super(ModBlocks.machine_ore_slopper.getLocalizedName(), ModBlocks.machine_ore_slopper, getRecipes()); + } + + @Override + public String getKey() { + return "ntmOreSlopper"; + } + + public static HashMap getRecipes() { + HashMap recipes = new HashMap(); + List outputs = new ArrayList(); + for(BedrockOreType type : BedrockOreType.values()) outputs.add(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type)); + outputs.add(ItemFluidIcon.make(Fluids.SLOP, 1000)); + recipes.put(new ItemStack[] {ItemFluidIcon.make(Fluids.WATER, 1000), new ItemStack(ModItems.bedrock_ore_base)}, outputs.toArray(new ItemStack[0])); + + return recipes; + } +} diff --git a/src/main/java/com/hbm/handler/nei/OutgasserHandler.java b/src/main/java/com/hbm/handler/nei/OutgasserHandler.java index e3965aea1..6a7575609 100644 --- a/src/main/java/com/hbm/handler/nei/OutgasserHandler.java +++ b/src/main/java/com/hbm/handler/nei/OutgasserHandler.java @@ -9,7 +9,7 @@ import com.hbm.inventory.recipes.OutgasserRecipes; public class OutgasserHandler extends NEIUniversalHandler { public OutgasserHandler() { - super("Irradiation", ModBlocks.rbmk_outgasser, OutgasserRecipes.getRecipes()); + super(ModBlocks.rbmk_outgasser.getLocalizedName(), ModBlocks.rbmk_outgasser, OutgasserRecipes.getRecipes()); } @Override diff --git a/src/main/java/com/hbm/handler/nei/PyroHandler.java b/src/main/java/com/hbm/handler/nei/PyroHandler.java new file mode 100644 index 000000000..b81813e53 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/PyroHandler.java @@ -0,0 +1,27 @@ +package com.hbm.handler.nei; + +import java.awt.Rectangle; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.gui.GUIPyroOven; +import com.hbm.inventory.recipes.PyroOvenRecipes; + +public class PyroHandler extends NEIUniversalHandler { + + public PyroHandler() { + super(ModBlocks.machine_pyrooven.getLocalizedName(), ModBlocks.machine_pyrooven, PyroOvenRecipes.getRecipes()); + } + + @Override + public String getKey() { + return "ntmPyrolysis"; + } + + @Override + public void loadTransferRects() { + super.loadTransferRects(); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(50, 35, 28, 14), "ntmPyrolysis")); + guiGui.add(GUIPyroOven.class); + RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); + } +} diff --git a/src/main/java/com/hbm/handler/nei/RTGRecipeHandler.java b/src/main/java/com/hbm/handler/nei/RTGRecipeHandler.java index 9a92cde64..ed76b9d91 100644 --- a/src/main/java/com/hbm/handler/nei/RTGRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/RTGRecipeHandler.java @@ -10,8 +10,7 @@ public class RTGRecipeHandler extends NEIUniversalHandler { public RTGRecipeHandler() { super("RTG", new ItemStack[] { new ItemStack(ModBlocks.machine_rtg_grey), - new ItemStack(ModBlocks.machine_difurnace_rtg_off), - new ItemStack(ModBlocks.machine_rtg_furnace_off) + new ItemStack(ModBlocks.machine_difurnace_rtg_off) }, ItemRTGPellet.getRecipeMap()); } diff --git a/src/main/java/com/hbm/handler/nei/RotaryFurnaceHandler.java b/src/main/java/com/hbm/handler/nei/RotaryFurnaceHandler.java new file mode 100644 index 000000000..ca6c3b628 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/RotaryFurnaceHandler.java @@ -0,0 +1,62 @@ +package com.hbm.handler.nei; + +import java.awt.Rectangle; +import java.util.Locale; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.gui.GUIMachineRotaryFurnace; +import com.hbm.inventory.recipes.RotaryFurnaceRecipes; +import com.hbm.inventory.recipes.RotaryFurnaceRecipes.RotaryFurnaceRecipe; +import com.hbm.items.machine.ItemScraps; +import com.hbm.util.I18nUtil; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.item.ItemStack; + +public class RotaryFurnaceHandler extends NEIUniversalHandler { + + public RotaryFurnaceHandler() { + super(ModBlocks.machine_rotary_furnace.getLocalizedName(), ModBlocks.machine_rotary_furnace, RotaryFurnaceRecipes.getRecipes()); + } + + @Override + public String getKey() { + return "ntmRotaryFurnace"; + } + + @Override + public void loadTransferRects() { + super.loadTransferRects(); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(58, 19, 32, 10), "ntmRotaryFurnace")); + guiGui.add(GUIMachineRotaryFurnace.class); + RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); + } + + @Override + public void drawExtras(int recipe) { + + RecipeSet rec = (RecipeSet) this.arecipes.get(recipe); + Object[] original = (Object[]) rec.originalInputInstance; + ItemStack output = rec.output[0].item; + + outer: for(RotaryFurnaceRecipe arc : RotaryFurnaceRecipes.recipes) { + + if(ItemStack.areItemStacksEqual(ItemScraps.create(arc.output, true), output) && arc.ingredients.length == original.length - (arc.fluid == null ? 0 : 1)) { + + for(int i = 0; i < rec.input.length - (arc.fluid == null ? 0 : 1); i++) { + if(arc.ingredients[i] != original[i]) continue outer; + } + + FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer; + String duration = String.format(Locale.US, "%,d", arc.duration) + " ticks"; + String consumption = I18nUtil.resolveKey(Fluids.STEAM.getUnlocalizedName()) + ": " + String.format(Locale.US, "%,d", arc.steam) + " mB/t"; + int side = 160; + fontRenderer.drawString(duration, side - fontRenderer.getStringWidth(duration), 43, 0x404040); + fontRenderer.drawString(consumption, side - fontRenderer.getStringWidth(consumption), 55, 0x404040); + return; + } + } + } +} diff --git a/src/main/java/com/hbm/handler/nei/SawmillHandler.java b/src/main/java/com/hbm/handler/nei/SawmillHandler.java index e573e9f42..43d79bf87 100644 --- a/src/main/java/com/hbm/handler/nei/SawmillHandler.java +++ b/src/main/java/com/hbm/handler/nei/SawmillHandler.java @@ -6,7 +6,7 @@ import com.hbm.tileentity.machine.TileEntitySawmill; public class SawmillHandler extends NEIUniversalHandler { public SawmillHandler() { - super("Sawmill", ModBlocks.machine_sawmill, TileEntitySawmill.getRecipes()); + super(ModBlocks.machine_sawmill.getLocalizedName(), ModBlocks.machine_sawmill, TileEntitySawmill.getRecipes()); } @Override diff --git a/src/main/java/com/hbm/handler/nei/SolderingStationHandler.java b/src/main/java/com/hbm/handler/nei/SolderingStationHandler.java index a48f5f620..a1f127692 100644 --- a/src/main/java/com/hbm/handler/nei/SolderingStationHandler.java +++ b/src/main/java/com/hbm/handler/nei/SolderingStationHandler.java @@ -15,7 +15,7 @@ import net.minecraft.item.ItemStack; public class SolderingStationHandler extends NEIUniversalHandler { public SolderingStationHandler() { - super("Soldering Station", ModBlocks.machine_soldering_station, SolderingRecipes.getRecipes()); + super(ModBlocks.machine_soldering_station.getLocalizedName(), ModBlocks.machine_soldering_station, SolderingRecipes.getRecipes()); } @Override diff --git a/src/main/java/com/hbm/handler/nei/SolidificationHandler.java b/src/main/java/com/hbm/handler/nei/SolidificationHandler.java index 181f7dfa8..5eda6e643 100644 --- a/src/main/java/com/hbm/handler/nei/SolidificationHandler.java +++ b/src/main/java/com/hbm/handler/nei/SolidificationHandler.java @@ -6,7 +6,7 @@ import com.hbm.inventory.recipes.SolidificationRecipes; public class SolidificationHandler extends NEIUniversalHandler { public SolidificationHandler() { - super("Solidification", ModBlocks.machine_solidifier, SolidificationRecipes.getRecipes()); + super(ModBlocks.machine_solidifier.getLocalizedName(), ModBlocks.machine_solidifier, SolidificationRecipes.getRecipes()); } @Override diff --git a/src/main/java/com/hbm/handler/nei/ZirnoxRecipeHandler.java b/src/main/java/com/hbm/handler/nei/ZirnoxRecipeHandler.java index a39208d98..b5ab368d5 100644 --- a/src/main/java/com/hbm/handler/nei/ZirnoxRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/ZirnoxRecipeHandler.java @@ -6,7 +6,7 @@ import com.hbm.tileentity.machine.TileEntityReactorZirnox; public class ZirnoxRecipeHandler extends NEIUniversalHandler { public ZirnoxRecipeHandler() { - super("ZIRNOX", ModBlocks.reactor_zirnox, TileEntityReactorZirnox.fuelMap); + super(ModBlocks.reactor_zirnox.getLocalizedName(), ModBlocks.reactor_zirnox, TileEntityReactorZirnox.fuelMap); } @Override diff --git a/src/main/java/com/hbm/handler/neutron/NeutronHandler.java b/src/main/java/com/hbm/handler/neutron/NeutronHandler.java new file mode 100644 index 000000000..efc536f2e --- /dev/null +++ b/src/main/java/com/hbm/handler/neutron/NeutronHandler.java @@ -0,0 +1,80 @@ +package com.hbm.handler.neutron; + +import com.hbm.tileentity.machine.rbmk.RBMKDials; +import com.hbm.util.fauxpointtwelve.BlockPos; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.TickEvent; +import net.minecraft.world.World; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + + +// General neutron handler because I didn't feel like having each handler class have its own interaction function. +public class NeutronHandler { + + private static int ticks = 0; + + @SubscribeEvent + public void onServerTick(TickEvent.ServerTickEvent event) { + if(event.phase != TickEvent.Phase.START) + return; + + // Remove `StreamWorld` objects if they have no streams. + { // aflghdkljghlkbhfjkghgilurbhlkfjghkffdjgn + List toRemove = new ArrayList<>(); + NeutronNodeWorld.streamWorlds.forEach((world, streamWorld) -> { + if (streamWorld.streams.isEmpty()) + toRemove.add(world); + }); + + for (World world : toRemove) { + NeutronNodeWorld.streamWorlds.remove(world); + } + } + + for (Map.Entry world : NeutronNodeWorld.streamWorlds.entrySet()) { + + // Gamerule caching because this apparently is kinda slow? + // meh, good enough + RBMKNeutronHandler.reflectorEfficiency = RBMKDials.getReflectorEfficiency(world.getKey()); + RBMKNeutronHandler.absorberEfficiency = RBMKDials.getAbsorberEfficiency(world.getKey()); + RBMKNeutronHandler.moderatorEfficiency = RBMKDials.getModeratorEfficiency(world.getKey()); + + // I hate this. + // this broke everything because it was ONE OFF + // IT'S NOT THE TOTAL HEIGHT IT'S THE AMOUNT OF BLOCKS ABOVE AAAAAAAAAAAAA + RBMKNeutronHandler.columnHeight = RBMKDials.getColumnHeight(world.getKey()) + 1; + RBMKNeutronHandler.fluxRange = RBMKDials.getFluxRange(world.getKey()); + + for (NeutronStream stream : world.getValue().streams) { + stream.runStreamInteraction(world.getKey()); + } + world.getValue().removeAllStreams(); + } + + // Freshen the node cache every `cacheTime` ticks to prevent huge RAM usage from idle nodes. + int cacheTime = 20; + if (ticks >= cacheTime) { + ticks = 0; + List toRemove = new ArrayList<>(); + for (NeutronNode cachedNode : NeutronNodeWorld.nodeCache.values()) { + if (cachedNode.type == NeutronStream.NeutronType.RBMK) { + RBMKNeutronHandler.RBMKNeutronNode node = (RBMKNeutronHandler.RBMKNeutronNode) cachedNode; + toRemove.addAll(node.checkNode()); + } + /* TODO: actually do this and uncache pile nodes + if (cachedNode.type == NeutronStream.NeutronType.PILE) { + PileNeutronNode node = (PileNeutronNode) cachedNode; + toRemove.addAll(node.checkNode()); + } + */ + } + + toRemove.forEach(NeutronNodeWorld::removeNode); + + } + ticks++; + } +} diff --git a/src/main/java/com/hbm/handler/neutron/NeutronNode.java b/src/main/java/com/hbm/handler/neutron/NeutronNode.java new file mode 100644 index 000000000..0c11d3a05 --- /dev/null +++ b/src/main/java/com/hbm/handler/neutron/NeutronNode.java @@ -0,0 +1,27 @@ +package com.hbm.handler.neutron; + +import com.hbm.handler.neutron.NeutronStream.NeutronType; +import com.hbm.util.fauxpointtwelve.BlockPos; +import net.minecraft.tileentity.TileEntity; + +import java.util.HashMap; +import java.util.Map; + +public abstract class NeutronNode { + + protected NeutronType type; + + protected BlockPos pos; + + protected TileEntity tile; + + // like NBT but less fucking CANCER + // Holds things like cached RBMK lid values. + protected Map data = new HashMap<>(); + + public NeutronNode(TileEntity tile, NeutronType type) { + this.type = type; + this.tile = tile; + this.pos = new BlockPos(tile); + } +} diff --git a/src/main/java/com/hbm/handler/neutron/NeutronNodeWorld.java b/src/main/java/com/hbm/handler/neutron/NeutronNodeWorld.java new file mode 100644 index 000000000..1f544ae7f --- /dev/null +++ b/src/main/java/com/hbm/handler/neutron/NeutronNodeWorld.java @@ -0,0 +1,62 @@ +package com.hbm.handler.neutron; + +import com.hbm.util.fauxpointtwelve.BlockPos; +import net.minecraft.world.World; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class NeutronNodeWorld { + // HashMap of all neutron nodes and their positions. + protected static HashMap nodeCache = new HashMap<>(); + + public static void addNode(NeutronNode node) { + nodeCache.put(node.pos, node); + } + + public static void removeNode(BlockPos position) { + nodeCache.remove(position); + } + + public static NeutronNode getNode(BlockPos position) { + return nodeCache.get(position); + } + + public static void removeAllNodes() { + nodeCache.clear(); + } + + // List of all stream worlds. + public static HashMap streamWorlds = new HashMap<>(); + + public static class StreamWorld { + + List streams; + + public StreamWorld() { + streams = new ArrayList<>(); + } + + public void addStream(NeutronStream stream) { + this.streams.add(stream); + } + + public void removeAllStreams() { + this.streams.clear(); + } + + public void removeAllStreamsOfType(NeutronStream.NeutronType type) { + List toRemove = new ArrayList<>(); + for (NeutronStream stream : streams) { + if (stream.type == type) + toRemove.add(stream); + } + toRemove.forEach((stream) -> streams.remove(stream)); + } + } + + public static void removeAllWorlds() { + streamWorlds.clear(); + } +} diff --git a/src/main/java/com/hbm/handler/neutron/NeutronStream.java b/src/main/java/com/hbm/handler/neutron/NeutronStream.java new file mode 100644 index 000000000..7de1cc4aa --- /dev/null +++ b/src/main/java/com/hbm/handler/neutron/NeutronStream.java @@ -0,0 +1,82 @@ +package com.hbm.handler.neutron; + +import com.hbm.util.fauxpointtwelve.BlockPos; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import com.hbm.handler.neutron.NeutronNodeWorld.StreamWorld; + +import java.util.Iterator; + +public abstract class NeutronStream { + + public enum NeutronType { + DUMMY, // Dummy streams for node decaying + RBMK, // RBMK neutron streams + PILE // Chicago pile streams + } + + public NeutronNode origin; + + // doubles!! + public double fluxQuantity; + // Hey, new implementation! Basically a ratio for slow flux to fast flux + // 0 = all slow flux + // 1 = all fast flux + public double fluxRatio; + + public NeutronType type = NeutronType.DUMMY; + + // Vector for direction of neutron flow. + public Vec3 vector; + + // Primarily used as a "dummy stream", not to be added to the streams list. + public NeutronStream(NeutronNode origin, Vec3 vector) { + this.origin = origin; + this.vector = vector; + posInstance = origin.pos.clone(); + } + + public NeutronStream(NeutronNode origin, Vec3 vector, double flux, double ratio, NeutronType type) { + this.origin = origin; + this.vector = vector; + posInstance = origin.pos.clone(); + this.fluxQuantity = flux; + this.fluxRatio = ratio; + this.type = type; + World worldObj = origin.tile.getWorldObj(); + if (NeutronNodeWorld.streamWorlds.get(worldObj) == null) { + StreamWorld world = new StreamWorld(); + world.addStream(this); + NeutronNodeWorld.streamWorlds.put(worldObj, world); + } else + NeutronNodeWorld.streamWorlds.get(worldObj).addStream(this); + } + + protected BlockPos posInstance; + + private int i; + + // USES THE CACHE!!! + public Iterator getBlocks(int range) { + + i = 1; + + return new Iterator() { + @Override + public boolean hasNext() { + return i <= range; + } + + @Override + public BlockPos next() { + int x = (int) Math.floor(0.5 + vector.xCoord * i); + int z = (int) Math.floor(0.5 + vector.zCoord * i); + + i++; + return posInstance.mutate(origin.tile.xCoord + x, origin.tile.yCoord, origin.tile.zCoord + z); + } + }; + } + + public abstract void runStreamInteraction(World worldObj); +} diff --git a/src/main/java/com/hbm/handler/neutron/PileNeutronHandler.java b/src/main/java/com/hbm/handler/neutron/PileNeutronHandler.java new file mode 100644 index 000000000..56913bc91 --- /dev/null +++ b/src/main/java/com/hbm/handler/neutron/PileNeutronHandler.java @@ -0,0 +1,116 @@ +package com.hbm.handler.neutron; + +import api.hbm.block.IPileNeutronReceiver; +import com.hbm.blocks.ModBlocks; +import com.hbm.tileentity.machine.pile.TileEntityPileBase; +import com.hbm.util.ContaminationUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; +import net.minecraft.block.Block; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +import java.util.List; + +public class PileNeutronHandler { + + public static int range = 5; + + public static class PileNeutronNode extends NeutronNode { + + public PileNeutronNode(TileEntityPileBase tile) { + super(tile, NeutronStream.NeutronType.PILE); + } + + } + + public static PileNeutronNode makeNode(TileEntityPileBase tile) { + BlockPos pos = new BlockPos(tile); + if (NeutronNodeWorld.nodeCache.containsKey(pos)) + return (PileNeutronNode) NeutronNodeWorld.getNode(pos); + return new PileNeutronNode(tile); + } + + private static TileEntity blockPosToTE(World worldObj, BlockPos pos) { + return worldObj.getTileEntity(pos.getX(), pos.getY(), pos.getZ()); + } + + public static class PileNeutronStream extends NeutronStream { + + public PileNeutronStream(NeutronNode origin, Vec3 vector, double flux) { + super(origin, vector, flux, 0D, NeutronType.PILE); + } + + @Override + public void runStreamInteraction(World worldObj) { + + TileEntityPileBase originTE = (TileEntityPileBase) origin.tile; + BlockPos pos = new BlockPos(originTE); + + for(float i = 1; i <= range; i += 0.5F) { + + BlockPos node = new BlockPos( + (int)Math.floor(pos.getX() + 0.5 + vector.xCoord * i), + (int)Math.floor(pos.getY() + 0.5 + vector.yCoord * i), + (int)Math.floor(pos.getZ() + 0.5 + vector.zCoord * i) + ); + + if(node.equals(pos)) + continue; // don't interact with itself! + + pos.mutate(node.getX(), node.getY(), node.getZ()); + + TileEntity tile; + + if (NeutronNodeWorld.nodeCache.containsKey(node)) + tile = NeutronNodeWorld.nodeCache.get(node).tile; + else { + tile = blockPosToTE(worldObj, node); + if (tile == null) + return; // Doesn't exist! + if (tile instanceof TileEntityPileBase) + NeutronNodeWorld.addNode(new PileNeutronNode((TileEntityPileBase) tile)); + } + + Block block = tile.getBlockType(); + int meta = tile.getBlockMetadata(); + if(!(tile instanceof TileEntityPileBase)) { + + // Return when a boron block is hit + if (block == ModBlocks.block_boron) + return; + + else if (block == ModBlocks.concrete || + block == ModBlocks.concrete_smooth || + block == ModBlocks.concrete_asbestos || + block == ModBlocks.concrete_colored || + block == ModBlocks.brick_concrete) + fluxQuantity *= 0.25; + + if (block == ModBlocks.block_graphite_rod && (meta & 8) == 0) + return; + } + + if(tile instanceof IPileNeutronReceiver) { + + IPileNeutronReceiver rec = (IPileNeutronReceiver) tile; + rec.receiveNeutrons((int) Math.floor(fluxQuantity)); + + if(block != ModBlocks.block_graphite_detector || (meta & 8) == 0) + return; + } + + int x = (int) (node.getX() + 0.5); + int y = (int) (node.getY() + 0.5); + int z = (int) (node.getZ() + 0.5); + List entities = worldObj.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(x, y, z, x, y, z)); + + if(entities != null) + for(EntityLivingBase e : entities) + ContaminationUtil.contaminate(e, ContaminationUtil.HazardType.RADIATION, ContaminationUtil.ContaminationType.CREATIVE, (float) (fluxQuantity / 4D)); + } + } + } +} diff --git a/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java b/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java new file mode 100644 index 000000000..d3f883589 --- /dev/null +++ b/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java @@ -0,0 +1,415 @@ +package com.hbm.handler.neutron; + +import com.hbm.blocks.machine.rbmk.RBMKBase; +import com.hbm.handler.radiation.ChunkRadiationManager; +import com.hbm.tileentity.machine.rbmk.*; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import java.util.ArrayList; +import java.util.List; +import java.util.Iterator; + +import net.minecraft.block.Block; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class RBMKNeutronHandler { + + static double moderatorEfficiency; + static double reflectorEfficiency; + static double absorberEfficiency; + static int columnHeight; + static int fluxRange; + + public enum RBMKType { + ROD, + MODERATOR, + CONTROL_ROD, + REFLECTOR, + ABSORBER, + OUTGASSER, + OTHER // why do neutron calculations on them if they won't change anything? + } + + private static TileEntity blockPosToTE(World worldObj, BlockPos pos) { + return worldObj.getTileEntity(pos.getX(), pos.getY(), pos.getZ()); + } + + public static RBMKNeutronNode makeNode(TileEntityRBMKBase tile) { + BlockPos pos = new BlockPos(tile); + if (NeutronNodeWorld.nodeCache.containsKey(pos)) + return (RBMKNeutronNode) NeutronNodeWorld.getNode(pos); + return new RBMKNeutronNode(tile, tile.getRBMKType(), tile.hasLid()); + } + + public static class RBMKNeutronNode extends NeutronNode { + + public RBMKNeutronNode(TileEntityRBMKBase tile, RBMKType type, boolean hasLid) { + super(tile, NeutronStream.NeutronType.RBMK); + this.data.put("hasLid", hasLid); + this.data.put("type", type); + posInstance = new BlockPos(tile); + } + + public void addLid() { + this.data.replace("hasLid", true); + } + + public void removeLid() { + this.data.replace("hasLid", false); + } + + protected BlockPos posInstance; + + private int x; + private int z; + + public Iterator getReaSimNodes() { + + x = -fluxRange; + z = -fluxRange; + + return new Iterator() { + @Override + public boolean hasNext() { + return (fluxRange + x) * (fluxRange * 2 + 1) + z + fluxRange + 1 < (fluxRange * 2 + 1) * (fluxRange * 2 + 1); + } + + @Override + public BlockPos next() { + if (Math.pow(x, 2) + Math.pow(z, 2) <= fluxRange * fluxRange) { + z++; + if (z > fluxRange) { + z = -fluxRange; + x++; + } + return posInstance.mutate(tile.xCoord + x, tile.yCoord, tile.zCoord + z); + } else { + z++; + if (z > fluxRange) { + z = -fluxRange; + x++; + } + return null; + } + } + }; + } + + public List checkNode() { + List list = new ArrayList<>(); + + BlockPos pos = new BlockPos(this.tile); + + RBMKNeutronStream[] streams = new RBMKNeutronStream[TileEntityRBMKRod.fluxDirs.length]; + + // Simulate streams coming out of the RBMK rod. + ForgeDirection[] fluxDirs = TileEntityRBMKRod.fluxDirs; + for (int i = 0; i < fluxDirs.length; i++) { + streams[i] = (new RBMKNeutronStream(this, Vec3.createVectorHelper(fluxDirs[i].offsetX, 0, fluxDirs[i].offsetZ))); + } + + // Check if the rod should uncache nodes. + if (tile instanceof TileEntityRBMKRod && !(tile instanceof TileEntityRBMKRodReaSim)) { + TileEntityRBMKRod rod = (TileEntityRBMKRod) tile; + if (!rod.hasRod || rod.lastFluxQuantity == 0) { + + for (RBMKNeutronStream stream : streams) { + for(RBMKNeutronNode node : stream.getNodes(false)) + if (node != null) + list.add(new BlockPos(node.tile)); + } + + return list; + } + } + + { + Iterator reaSimNodes = getReaSimNodes(); + + // Check if the ReaSim rod should be culled from the cache due to no rod or no flux. + if (tile instanceof TileEntityRBMKRodReaSim) { // fuckkkkkkk + TileEntityRBMKRodReaSim rod = (TileEntityRBMKRodReaSim) tile; + if (!rod.hasRod || rod.lastFluxQuantity == 0) { + reaSimNodes.forEachRemaining((a) -> { + if (a != null) + list.add(a.clone()); // ae The RAM usage will be really high here but hopefully the GC can take care of it :pray: + }); + return list; + } + } + } + + // Check if non-rod nodes should be uncached... but now with ReaSim! + { // Yeah, I don't want to contaminate the surrounding scope. + Iterator reaSimNodes = getReaSimNodes(); + + boolean hasRod = false; + + while(reaSimNodes.hasNext()) { + + BlockPos nodePos = reaSimNodes.next(); + + if(nodePos == null) + continue; + + NeutronNode node = NeutronNodeWorld.nodeCache.get(nodePos); + + if (node != null && node.tile instanceof TileEntityRBMKRod) { + + TileEntityRBMKRod rod = (TileEntityRBMKRod) node.tile; + + if (rod.hasRod && rod.lastFluxQuantity > 0) { + hasRod = true; + break; + } + } + } + + if (!hasRod) { + list.add(pos); + return list; + } + } + + // Check if non-rod nodes should be uncached due to no rod in range. + for (RBMKNeutronStream stream : streams) { + + RBMKNeutronNode[] nodes = stream.getNodes(false); + + for (RBMKNeutronNode node : nodes) { + if (!(node == null) && node.tile instanceof TileEntityRBMKRod) + return list; + } + } + + // If we get here, then no rods were found along this stream's path! + // This, most of the time, means we can just uncache all the nodes inside the stream's path. + // That other part of the time, streams will be crossing paths. + // This is fine though, we can just uncache them anyway and the streams later on (next tick) will recache them. + // /\ idk what this guy was on about but this is just plain wrong. /\ + list.add(pos); + + return list; + } + } + + + public static class RBMKNeutronStream extends NeutronStream { + + public RBMKNeutronStream(NeutronNode origin, Vec3 vector) { + super(origin, vector); + } + + public RBMKNeutronStream(NeutronNode origin, Vec3 vector, double flux, double ratio) { + super(origin, vector, flux, ratio, NeutronType.RBMK); + } + + // Does NOT include the origin node + // USES THE CACHE!!! + public RBMKNeutronNode[] getNodes(boolean addNode) { + RBMKNeutronNode[] positions = new RBMKNeutronNode[fluxRange]; + + BlockPos pos = new BlockPos(origin.tile); + + for (int i = 1; i <= fluxRange; i++) { + int x = (int) Math.floor(0.5 + vector.xCoord * i); + int z = (int) Math.floor(0.5 + vector.zCoord * i); + + pos.mutate(origin.tile.xCoord + x, origin.tile.yCoord, origin.tile.zCoord + z); + + if (NeutronNodeWorld.nodeCache.containsKey(pos)) + positions[i - 1] = (RBMKNeutronNode) NeutronNodeWorld.getNode(pos); + + else if (this.origin.tile.getBlockType() instanceof RBMKBase) { + TileEntity te = blockPosToTE(this.origin.tile.getWorldObj(), pos); + if (te instanceof TileEntityRBMKBase) { + TileEntityRBMKBase rbmkBase = (TileEntityRBMKBase) te; + RBMKNeutronNode node = makeNode(rbmkBase); + positions[i - 1] = node; + if (addNode) + NeutronNodeWorld.addNode(node); + } + } + } + return positions; + } + + // The... small one? whatever it's still pretty big, runs the interaction for the stream. + public void runStreamInteraction(World worldObj) { + + // do nothing if there's nothing to do lmao + if (fluxQuantity == 0D) + return; + + BlockPos pos = new BlockPos(origin.tile); + + TileEntityRBMKBase originTE; + + if (NeutronNodeWorld.nodeCache.containsKey(pos)) + originTE = (TileEntityRBMKBase) NeutronNodeWorld.nodeCache.get(pos).tile; + else { + originTE = (TileEntityRBMKBase) blockPosToTE(worldObj, pos); + if (originTE == null) + return; // Doesn't exist anymore! + NeutronNodeWorld.addNode(new RBMKNeutronNode(originTE, originTE.getRBMKType(), originTE.hasLid())); + } + + int moderatedCount = 0; + + Iterator iterator = getBlocks(fluxRange); + + while(iterator.hasNext()) { + + BlockPos nodePos = iterator.next(); + + if (fluxQuantity == 0D) // Whoops, used it all up! + return; + + RBMKNeutronNode node; + + if (!NeutronNodeWorld.nodeCache.containsKey(nodePos)) { + TileEntity te = blockPosToTE(worldObj, nodePos); // ok, maybe it didn't get added to the list somehow?? + if (te instanceof TileEntityRBMKBase) { + node = makeNode((TileEntityRBMKBase) te); + NeutronNodeWorld.addNode(node); // whoops! + } else { + int hits = getHits(nodePos); // Get the amount of hits on blocks. + if (hits == columnHeight) // If stream is fully blocked. + return; + else if (hits > 0) { // If stream is partially blocked. + irradiateFromFlux(pos, hits); + fluxQuantity *= 1 - ((double) hits / columnHeight); // Inverse to get partial blocking by blocks. + continue; + } else { // Nothing hit! + irradiateFromFlux(pos, 0); + continue; + } + } + } + + node = (RBMKNeutronNode) NeutronNodeWorld.nodeCache.get(nodePos); + + RBMKType type = (RBMKType) node.data.get("type"); + + if (type == RBMKType.OTHER) // pass right on by! + continue; + + // we established earlier during `getNodes()` that they should all be RBMKBase TEs + // no issue with casting here! + TileEntityRBMKBase nodeTE = (TileEntityRBMKBase) node.tile; + + if (!(boolean) node.data.get("hasLid")) + ChunkRadiationManager.proxy.incrementRad(worldObj, nodePos.getX(), nodePos.getY(), nodePos.getZ(), (float) (this.fluxQuantity * 0.05F)); + + if (type == RBMKType.MODERATOR || nodeTE.isModerated()) { + moderatedCount++; + moderateStream(); + } + + if (nodeTE instanceof IRBMKFluxReceiver) { + IRBMKFluxReceiver column = (IRBMKFluxReceiver) nodeTE; + + if (type == RBMKType.ROD) { + TileEntityRBMKRod rod = (TileEntityRBMKRod) column; + + if (rod.hasRod) { + rod.receiveFlux(this); + return; + } + + } else if (type == RBMKType.OUTGASSER) { + TileEntityRBMKOutgasser outgasser = ((TileEntityRBMKOutgasser) column); + + if (outgasser.canProcess()) { + column.receiveFlux(this); + return; + } + } + + } else if (type == RBMKType.CONTROL_ROD) { + TileEntityRBMKControl rod = (TileEntityRBMKControl) nodeTE; + + if (rod.level > 0.0D) { + + this.fluxQuantity *= rod.getMult(); + continue; + } + return; + } else if (type == RBMKType.REFLECTOR) { + + if (((TileEntityRBMKBase) this.origin.tile).isModerated()) + moderatedCount++; + + if (this.fluxRatio > 0 && moderatedCount > 0) + for (int i = 0; i < moderatedCount; i++) + moderateStream(); + + if (reflectorEfficiency != 1.0D) { + this.fluxQuantity *= reflectorEfficiency; + continue; + } + + ((TileEntityRBMKRod) originTE).receiveFlux(this); + return; + } else if (type == RBMKType.ABSORBER) { + if (absorberEfficiency == 1) + return; + + this.fluxQuantity *= absorberEfficiency; + } + } + + RBMKNeutronNode[] nodes = getNodes(true); + + RBMKNeutronNode lastNode = nodes[(nodes.length - 1)]; + + if(lastNode == null) { // This implies that there was *no* last node, meaning either way it was never caught. + // There is really no good way to figure out where exactly it should irradiate, so just irradiate at the origin tile. + irradiateFromFlux(new BlockPos(origin.tile.xCoord + this.vector.xCoord, origin.tile.yCoord, origin.tile.zCoord + this.vector.zCoord)); + return; + } + + RBMKType lastNodeType = (RBMKType) lastNode.data.get("type"); + + if (lastNodeType == RBMKType.CONTROL_ROD) { + TileEntityRBMKControl rod = (TileEntityRBMKControl) lastNode.tile; + if (rod.getMult() > 0.0D) { + this.fluxQuantity *= rod.getMult(); + irradiateFromFlux(new BlockPos(lastNode.tile.xCoord + this.vector.xCoord, lastNode.tile.yCoord, lastNode.tile.zCoord + this.vector.zCoord)); + } + } + } + + public int getHits(BlockPos pos) { + int hits = 0; + + for(int h = 0; h < columnHeight; h++) { + // holy fucking shit + // I have had this one line cause me like tens of problems + // I FUCKING HATE THIS + // total count of bugs fixed attributed to this function: 13 + Block block = origin.tile.getWorldObj().getBlock(pos.getX(), pos.getY() + h, pos.getZ()); + if (block.isOpaqueCube()) + hits += 1; + } + + return hits; + } + + public void irradiateFromFlux(BlockPos pos) { + ChunkRadiationManager.proxy.incrementRad(origin.tile.getWorldObj(), pos.getX(), pos.getY(), pos.getZ(), (float) (fluxQuantity * 0.05F * (1 - (double) getHits(pos) / columnHeight))); + } + + public void irradiateFromFlux(BlockPos pos, int hits) { + ChunkRadiationManager.proxy.incrementRad(origin.tile.getWorldObj(), pos.getX(), pos.getY(), pos.getZ(), (float) (fluxQuantity * 0.05F * (1 - (double) hits / columnHeight))); + } + + public void moderateStream() { + fluxRatio *= (1 - moderatorEfficiency); + } + + } +} diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java index 161dd5522..d77c6b34b 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java @@ -5,12 +5,11 @@ import java.util.Map.Entry; import com.hbm.blocks.ModBlocks; import com.hbm.config.RadiationConfig; -import com.hbm.packet.AuxParticlePacket; -import com.hbm.packet.PacketDispatcher; +import com.hbm.main.MainRegistry; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MathHelper; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; @@ -25,31 +24,31 @@ import net.minecraftforge.event.world.WorldEvent; * @author hbm */ public class ChunkRadiationHandlerSimple extends ChunkRadiationHandler { - + private HashMap perWorld = new HashMap(); private static final float maxRad = 100_000F; @Override public float getRadiation(World world, int x, int y, int z) { SimpleRadiationPerWorld radWorld = perWorld.get(world); - + if(radWorld != null) { ChunkCoordIntPair coords = new ChunkCoordIntPair(x >> 4, z >> 4); Float rad = radWorld.radiation.get(coords); return rad == null ? 0F : MathHelper.clamp_float(rad, 0, maxRad); } - + return 0; } @Override public void setRadiation(World world, int x, int y, int z, float rad) { SimpleRadiationPerWorld radWorld = perWorld.get(world); - + if(radWorld != null) { - + if(world.blockExists(x, 0, z)) { - + ChunkCoordIntPair coords = new ChunkCoordIntPair(x >> 4, z >> 4); radWorld.radiation.put(coords, MathHelper.clamp_float(rad, 0, maxRad)); world.getChunkFromBlockCoords(x, z).isModified = true; @@ -69,28 +68,28 @@ public class ChunkRadiationHandlerSimple extends ChunkRadiationHandler { @Override public void updateSystem() { - + for(Entry entry : perWorld.entrySet()) { - + HashMap radiation = entry.getValue().radiation; HashMap buff = new HashMap(radiation); radiation.clear(); World world = entry.getKey(); - + for(Entry chunk : buff.entrySet()) { - + if(chunk.getValue() == 0) continue; - + ChunkCoordIntPair coord = chunk.getKey(); - + for(int i = -1; i <= 1; i++) { for(int j = -1; j<= 1; j++) { - + int type = Math.abs(i) + Math.abs(j); float percent = type == 0 ? 0.6F : type == 1 ? 0.075F : 0.025F; ChunkCoordIntPair newCoord = new ChunkCoordIntPair(coord.chunkXPos + i, coord.chunkZPos + j); - + if(buff.containsKey(newCoord)) { Float val = radiation.get(newCoord); float rad = val == null ? 0 : val; @@ -100,15 +99,20 @@ public class ChunkRadiationHandlerSimple extends ChunkRadiationHandler { } else { radiation.put(newCoord, chunk.getValue() * percent); } - + float rad = radiation.get(newCoord); if(rad > RadiationConfig.fogRad && world != null && world.rand.nextInt(RadiationConfig.fogCh) == 0 && world.getChunkProvider().chunkExists(coord.chunkXPos, coord.chunkZPos)) { - + int x = coord.chunkXPos * 16 + world.rand.nextInt(16); int z = coord.chunkZPos * 16 + world.rand.nextInt(16); int y = world.getHeightValue(x, z) + world.rand.nextInt(5); - - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacket(x, y, z, 3), new TargetPoint(world.provider.dimensionId, x, y, z, 100)); + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "radFog"); + data.setDouble("posX", x); + data.setDouble("posY", y); + data.setDouble("posZ", z); + MainRegistry.proxy.effectNT(data); } } } @@ -119,7 +123,7 @@ public class ChunkRadiationHandlerSimple extends ChunkRadiationHandler { @Override public void clearSystem(World world) { SimpleRadiationPerWorld radWorld = perWorld.get(world); - + if(radWorld != null) { radWorld.radiation.clear(); } @@ -136,15 +140,15 @@ public class ChunkRadiationHandlerSimple extends ChunkRadiationHandler { if(!event.world.isRemote) perWorld.remove(event.world); } - + private static final String NBT_KEY_CHUNK_RADIATION = "hfr_simple_radiation"; @Override public void receiveChunkLoad(ChunkDataEvent.Load event) { - + if(!event.world.isRemote) { SimpleRadiationPerWorld radWorld = perWorld.get(event.world); - + if(radWorld != null) { radWorld.radiation.put(event.getChunk().getChunkCoordIntPair(), event.getData().getFloat(NBT_KEY_CHUNK_RADIATION)); } @@ -153,10 +157,10 @@ public class ChunkRadiationHandlerSimple extends ChunkRadiationHandler { @Override public void receiveChunkSave(ChunkDataEvent.Save event) { - + if(!event.world.isRemote) { SimpleRadiationPerWorld radWorld = perWorld.get(event.world); - + if(radWorld != null) { Float val = radWorld.radiation.get(event.getChunk().getChunkCoordIntPair()); float rad = val == null ? 0F : val; @@ -167,74 +171,74 @@ public class ChunkRadiationHandlerSimple extends ChunkRadiationHandler { @Override public void receiveChunkUnload(ChunkEvent.Unload event) { - + if(!event.world.isRemote) { SimpleRadiationPerWorld radWorld = perWorld.get(event.world); - + if(radWorld != null) { radWorld.radiation.remove(event.getChunk()); } } } - + public static class SimpleRadiationPerWorld { - + public HashMap radiation = new HashMap(); } - + @Override public void handleWorldDestruction() { - + int count = 10; int threshold = 10; int chunks = 5; - + //for all worlds for(Entry per : perWorld.entrySet()) { - + World world = per.getKey(); SimpleRadiationPerWorld list = per.getValue(); - + Object[] entries = list.radiation.entrySet().toArray(); - + if(entries.length == 0) continue; - + //chose this many random chunks for(int c = 0; c < chunks; c++) { - + Entry randEnt = (Entry) entries[world.rand.nextInt(entries.length)]; - + ChunkCoordIntPair coords = randEnt.getKey(); WorldServer serv = (WorldServer) world; ChunkProviderServer provider = (ChunkProviderServer) serv.getChunkProvider(); - + //choose this many random locations within the chunk for(int i = 0; i < count; i++) { - + if(randEnt == null || randEnt.getValue() < threshold) continue; - + if(provider.chunkExists(coords.chunkXPos, coords.chunkZPos)) { - + for(int a = 0; a < 16; a++) { for(int b = 0; b < 16; b++) { - + if(world.rand.nextInt(3) != 0) continue; - + int x = coords.getCenterXPos() - 8 + a; int z = coords.getCenterZPosition() - 8 + b; int y = world.getHeightValue(x, z) - world.rand.nextInt(2); - + if(world.getBlock(x, y, z) == Blocks.grass) { world.setBlock(x, y, z, ModBlocks.waste_earth); - + } else if(world.getBlock(x, y, z) == Blocks.tallgrass) { world.setBlock(x, y, z, Blocks.air); - + } else if(world.getBlock(x, y, z).getMaterial() == Material.leaves && !(world.getBlock(x, y, z) == ModBlocks.waste_leaves)) { - + if(world.rand.nextInt(7) <= 5) { world.setBlock(x, y, z, ModBlocks.waste_leaves); } else { diff --git a/src/main/java/com/hbm/handler/threading/PacketThreading.java b/src/main/java/com/hbm/handler/threading/PacketThreading.java new file mode 100644 index 000000000..1111d0ae6 --- /dev/null +++ b/src/main/java/com/hbm/handler/threading/PacketThreading.java @@ -0,0 +1,197 @@ +package com.hbm.handler.threading; + +import com.google.common.util.concurrent.ThreadFactoryBuilder; +import com.hbm.config.GeneralConfig; +import com.hbm.main.MainRegistry; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.PrecompiledPacket; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import net.minecraft.entity.player.EntityPlayerMP; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.*; +import java.util.concurrent.locks.ReentrantLock; + +public class PacketThreading { + + public static final String threadPrefix = "NTM-Packet-Thread-"; + + public static final ThreadFactory packetThreadFactory = new ThreadFactoryBuilder().setNameFormat(threadPrefix + "%d").build(); + + public static final ThreadPoolExecutor threadPool = (ThreadPoolExecutor) Executors.newFixedThreadPool(1, packetThreadFactory); + + public static int totalCnt = 0; + + public static long nanoTimeWaited = 0; + + public static final List> futureList = new ArrayList<>(); + + public static ReentrantLock lock = new ReentrantLock(); + + /** + * Sets up thread pool settings during mod initialization. + */ + public static void init() { + threadPool.setKeepAliveTime(50, TimeUnit.MILLISECONDS); + if (GeneralConfig.enablePacketThreading) { + if (GeneralConfig.packetThreadingCoreCount < 0 || GeneralConfig.packetThreadingMaxCount <= 0) { + MainRegistry.logger.error("0.02_packetThreadingCoreCount < 0 or 0.03_packetThreadingMaxCount is <= 0, defaulting to 1 each."); + threadPool.setCorePoolSize(1); // beugh + threadPool.setMaximumPoolSize(1); + } else if (GeneralConfig.packetThreadingMaxCount > GeneralConfig.packetThreadingCoreCount) { + MainRegistry.logger.error("0.03_packetThreadingMaxCount is > 0.02_packetThreadingCoreCount, defaulting to 1 each."); + threadPool.setCorePoolSize(1); + threadPool.setMaximumPoolSize(1); + } else { + threadPool.setCorePoolSize(GeneralConfig.packetThreadingCoreCount); + threadPool.setMaximumPoolSize(GeneralConfig.packetThreadingMaxCount); + } + threadPool.allowCoreThreadTimeOut(false); + } else { + threadPool.allowCoreThreadTimeOut(true); + try { + lock.lock(); + for (Runnable task : threadPool.getQueue()) { + task.run(); // Run all tasks async just in-case there *are* tasks left to run. + } + clearThreadPoolTasks(); + } finally { + lock.unlock(); + } + } + } + + /** + * Adds a packet to the thread pool to be processed in the future. This is only compatible with the `sendToAllAround` dispatch operation. + * @param message Message to process. + * @param target TargetPoint to send to. + */ + public static void createAllAroundThreadedPacket(IMessage message, TargetPoint target) { + // `message` can be precompiled or not. + if(message instanceof PrecompiledPacket) + ((PrecompiledPacket) message).getPreBuf(); // Gets the precompiled buffer, doing nothing if it already exists. + totalCnt++; + + Runnable task = () -> { + try { + lock.lock(); + PacketDispatcher.wrapper.sendToAllAround(message, target); + if (message instanceof PrecompiledPacket) + ((PrecompiledPacket) message).getPreBuf().release(); + } finally { + lock.unlock(); + } + }; + + addTask(task); + } + + /** + * Adds a packet to the thread pool to be processed in the future. This is only compatible with the `sendTo` dispatch operation. + * + * @param message Message to process. + * @param player PlayerMP to send to. + */ + public static void createSendToThreadedPacket(IMessage message, EntityPlayerMP player) { + if(message instanceof PrecompiledPacket) + ((PrecompiledPacket) message).getPreBuf(); + totalCnt++; + + Runnable task = () -> { + try { + lock.lock(); + PacketDispatcher.wrapper.sendTo(message, player); + if (message instanceof PrecompiledPacket) + ((PrecompiledPacket) message).getPreBuf().release(); + } finally { + lock.unlock(); + } + }; + + addTask(task); + } + + private static void addTask(Runnable task) { + if(isTriggered()) + task.run(); + else if(GeneralConfig.enablePacketThreading) + futureList.add(threadPool.submit(task)); + else + task.run(); + } + + /** + * Wait until the packet thread is finished processing. + */ + public static void waitUntilThreadFinished() { + long startTime = System.nanoTime(); + try { + if (GeneralConfig.enablePacketThreading && (!GeneralConfig.packetThreadingErrorBypass && !hasTriggered)) { + for (Future future : futureList) { + nanoTimeWaited = System.nanoTime() - startTime; + future.get(50, TimeUnit.MILLISECONDS); // I HATE EVERYTHING + // if(TimeUnit.MILLISECONDS.convert(nanoTimeWaited, TimeUnit.NANOSECONDS) > 50) throw new TimeoutException(); // >50ms total time? timeout? yes sir, ooh rah! + // this seems to cause big problems with large worlds, never mind... + } + } + } catch (ExecutionException ignored) { + // impossible + } catch (TimeoutException e) { + if(!GeneralConfig.packetThreadingErrorBypass && !hasTriggered) + MainRegistry.logger.warn("A packet has taken >50ms to process, discarding {}/{} packets to prevent pausing of main thread ({} total futures).", threadPool.getQueue().size(), totalCnt, futureList.size()); + clearThreadPoolTasks(); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); // maybe not the best thing but it's gotta be here + } finally { + futureList.clear(); + if(!threadPool.getQueue().isEmpty()) { + if(!GeneralConfig.packetThreadingErrorBypass && !hasTriggered) + MainRegistry.logger.warn("Residual packets in packet threading queue detected, discarding {}/{} packets.", threadPool.getQueue().size(), totalCnt); + clearThreadPoolTasks(); // Just in case the thread somehow doesn't process all the tasks, we don't want this backing up too far. + } + + totalCnt = 0; + } + } + + public static int clearCnt = 0; + + public static boolean hasTriggered = false; + + public static void clearThreadPoolTasks() { + + if(threadPool.getQueue().isEmpty()) { + clearCnt = 0; + return; + } + + threadPool.getQueue().clear(); + + if(!GeneralConfig.packetThreadingErrorBypass && !hasTriggered) + MainRegistry.logger.warn("Packet work queue cleared forcefully (clear count: {}).", clearCnt); + + clearCnt++; + + if(clearCnt > 5 && !isTriggered()) { + // If it's been cleared 5 times in a row, something may have gone really wrong. + // Best case scenario here, the server is lagging terribly, has a bad CPU, or has a poor network connection + // Worst case scenario, the entire packet thread is dead. (very not good) + // So just log it with a special message and only once. + MainRegistry.logger.error( + "Something has gone wrong and the packet pool has cleared 5 times (or more) in a row. " + + "This can indicate that the thread has been killed, suspended, or is otherwise non-functioning. " + + "This message will only be logged once, further packet operations will continue on the main thread. " + + "If this message is a common occurrence and is *completely expected*, then it can be bypassed permanently by setting " + + "the \"0.04_packetThreadingErrorBypass\" config option to true. This can lead to adverse effects, so do this at your own risk. " + + "Running \"/ntmpacket resetState\" resets this trigger as a temporary fix." + ); + hasTriggered = true; + } + } + + public static boolean isTriggered() { + return hasTriggered && !GeneralConfig.packetThreadingErrorBypass; + } +} diff --git a/src/main/java/com/hbm/hazard/HazardRegistry.java b/src/main/java/com/hbm/hazard/HazardRegistry.java index 0653efe8c..6c7b2a19b 100644 --- a/src/main/java/com/hbm/hazard/HazardRegistry.java +++ b/src/main/java/com/hbm/hazard/HazardRegistry.java @@ -394,6 +394,7 @@ public class HazardRegistry { registerRBMKRod(rbmk_fuel_zfb_pu241, pu239 * rod_rbmk * 0.1F, wst * rod_rbmk * 7.5F); registerRBMKRod(rbmk_fuel_zfb_am_mix, pu241 * rod_rbmk * 0.1F, wst * rod_rbmk * 10F); registerRBMK(rbmk_fuel_drx, bf * rod_rbmk, bf * rod_rbmk * 100F, true, true, 0, 1F/3F); + //registerRBMKRod(rbmk_fuel_curve, saf * rod_rbmk * np237 * rod_rbmk, wst * rod_rbmk * 35F); registerRBMKPellet(rbmk_pellet_ueu, u * billet, wst * billet * 20F); registerRBMKPellet(rbmk_pellet_meu, uf * billet, wst * billet * 21.5F); @@ -498,8 +499,8 @@ public class HazardRegistry { /* * Blacklist */ - for(String ore : TH232.ores()) HazardSystem.blacklist(ore); - for(String ore : U.ores()) HazardSystem.blacklist(ore); + for(String ore : TH232.all(MaterialShapes.ORE)) HazardSystem.blacklist(ore); + for(String ore : U.all(MaterialShapes.ORE)) HazardSystem.blacklist(ore); /* @@ -523,7 +524,7 @@ public class HazardRegistry { }; for(MaterialShapes shape : MaterialShapes.allShapes) { - for(String prefix : shape.prefixes) { + if(!shape.noAutogen) for(String prefix : shape.prefixes) { for(Object[] o : data) { HazardSystem.register(prefix + o[0], new HazardData().setMutex(0b1).addEntry(new HazardEntry(RADIATION, (float) o[1] * shape.q(1) / MaterialShapes.INGOT.q(1)))); } diff --git a/src/main/java/com/hbm/hazard/type/HazardTypeHydroactive.java b/src/main/java/com/hbm/hazard/type/HazardTypeHydroactive.java index f7d6a3c49..a716f925c 100644 --- a/src/main/java/com/hbm/hazard/type/HazardTypeHydroactive.java +++ b/src/main/java/com/hbm/hazard/type/HazardTypeHydroactive.java @@ -6,6 +6,7 @@ import com.hbm.config.RadiationConfig; import com.hbm.hazard.modifier.HazardModifier; import com.hbm.util.I18nUtil; +import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -32,7 +33,7 @@ public class HazardTypeHydroactive extends HazardTypeBase { if(RadiationConfig.disableHydro) return; - if(item.isWet()) { + if(item.isWet() || item.worldObj.getBlock((int) Math.floor(item.posX), (int) Math.floor(item.posY), (int) Math.floor(item.posZ)).getMaterial() == Material.water) { item.setDead(); item.worldObj.newExplosion(null, item.posX, item.posY + item.height * 0.5, item.posZ, level, false, true); } diff --git a/src/main/java/com/hbm/interfaces/ICopiable.java b/src/main/java/com/hbm/interfaces/ICopiable.java new file mode 100644 index 000000000..e0b8c94f5 --- /dev/null +++ b/src/main/java/com/hbm/interfaces/ICopiable.java @@ -0,0 +1,29 @@ +package com.hbm.interfaces; + +import com.hbm.util.Either; +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public interface ICopiable { + + NBTTagCompound getSettings(World world, int x, int y, int z); + + void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z); + + default String getSettingsSourceID(Either self) { + Block block = self.isLeft() ? self.left().getBlockType() : self.right(); + return block.getUnlocalizedName(); + } + + default String getSettingsSourceDisplay(Either self) { + Block block = self.isLeft() ? self.left().getBlockType() : self.right(); + return block.getLocalizedName(); + } + + default String[] infoForDisplay(World world, int x, int y, int z){ + return null; + } +} diff --git a/src/main/java/com/hbm/interfaces/IHoldableWeapon.java b/src/main/java/com/hbm/interfaces/IHoldableWeapon.java index 22647eb3b..b1a228d05 100644 --- a/src/main/java/com/hbm/interfaces/IHoldableWeapon.java +++ b/src/main/java/com/hbm/interfaces/IHoldableWeapon.java @@ -1,6 +1,6 @@ package com.hbm.interfaces; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; +import com.hbm.items.weapon.sedna.Crosshair; public interface IHoldableWeapon { diff --git a/src/main/java/com/hbm/interfaces/IOrderedEnum.java b/src/main/java/com/hbm/interfaces/IOrderedEnum.java new file mode 100644 index 000000000..59f00f84d --- /dev/null +++ b/src/main/java/com/hbm/interfaces/IOrderedEnum.java @@ -0,0 +1,6 @@ +package com.hbm.interfaces; + +public interface IOrderedEnum { + + public Enum[] getOrder(); +} diff --git a/src/main/java/com/hbm/interfaces/NotableComments.java b/src/main/java/com/hbm/interfaces/NotableComments.java new file mode 100644 index 000000000..24ced52c9 --- /dev/null +++ b/src/main/java/com/hbm/interfaces/NotableComments.java @@ -0,0 +1,7 @@ +package com.hbm.interfaces; + +/* + * Historically, NTM has had so many comments that are either funny or lengthy rants or other silly shit that it's + * hard to keep track of all of it, this annotation shall be used on classes with noteworthy comments. + */ +public @interface NotableComments { } diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 973bf8000..3157d450a 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -9,7 +9,7 @@ import java.util.List; import static com.hbm.items.ModItems.*; import static com.hbm.blocks.ModBlocks.*; import static com.hbm.inventory.OreDictManager.DictFrame.*; -import static com.hbm.inventory.OreNames.*; +import static com.hbm.inventory.material.MaterialShapes.*; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockOreBasalt.EnumBasaltOreType; @@ -20,6 +20,7 @@ import com.hbm.hazard.HazardData; import com.hbm.hazard.HazardEntry; import com.hbm.hazard.HazardRegistry; import com.hbm.hazard.HazardSystem; +import com.hbm.interfaces.NotableComments; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.material.MaterialShapes; import com.hbm.inventory.material.Mats; @@ -45,6 +46,7 @@ import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.OreDictionary.OreRegisterEvent; //the more i optimize this, the more it starts looking like gregtech +@NotableComments public class OreDictManager { /** Alternate, additional names for ore dict registration. Used mostly for DictGroups */ @@ -108,6 +110,8 @@ public class OreDictManager { /* * VANILLA */ + public static final DictFrame WOOD = new DictFrame("Wood"); + public static final DictFrame BONE = new DictFrame("Bone"); public static final DictFrame COAL = new DictFrame("Coal"); public static final DictFrame IRON = new DictFrame("Iron"); public static final DictFrame GOLD = new DictFrame("Gold"); @@ -205,6 +209,8 @@ public class OreDictManager { public static final DictFrame CMB = new DictFrame("CMBSteel"); public static final DictFrame DESH = new DictFrame("WorkersAlloy"); public static final DictFrame STAR = new DictFrame("Starmetal"); + public static final DictFrame GUNMETAL = new DictFrame("GunMetal"); + public static final DictFrame WEAPONSTEEL = new DictFrame("WeaponSteel"); public static final DictFrame BIGMT = new DictFrame("Saturnite"); public static final DictFrame FERRO = new DictFrame("Ferrouranium"); public static final DictFrame EUPH = new DictFrame("Euphemium"); @@ -304,7 +310,7 @@ public class OreDictManager { public static final DictGroup ANY_HARDPLASTIC = new DictGroup("AnyHardPlastic", PC, PVC); /** Any post nuclear steel like TCA or CDA */ public static final DictGroup ANY_RESISTANTALLOY = new DictGroup("AnyResistantAlloy", TCALLOY, CDALLOY); - /** Any post nuclear steel like TCA or CDA */ + /** Any post RBMK bronze like BB or AB */ public static final DictGroup ANY_BISMOIDBRONZE = new DictGroup("AnyBismoidBronze", BBRONZE, ABRONZE); /** Any "powder" propellant like gunpowder, ballistite and cordite */ public static final DictFrame ANY_GUNPOWDER = new DictFrame("AnyPropellant"); @@ -409,6 +415,8 @@ public class OreDictManager { CMB .ingot(ingot_combine_steel) .dust(powder_combine_steel) .plate(plate_combine_steel) .block(block_combine_steel); DESH .nugget(nugget_desh) .ingot(ingot_desh) .dust(powder_desh) .block(block_desh); STAR .ingot(ingot_starmetal) .block(block_starmetal); + GUNMETAL .ingot(ingot_gunmetal) .plate(plate_gunmetal); + WEAPONSTEEL .ingot(ingot_weaponsteel) .plate(plate_weaponsteel); BIGMT .ingot(ingot_saturnite) .plate(plate_saturnite); FERRO .ingot(ingot_ferrouranium); EUPH .nugget(nugget_euphemium) .ingot(ingot_euphemium) .dust(powder_euphemium) .block(block_euphemium); @@ -434,7 +442,7 @@ public class OreDictManager { SODALITE .gem(gem_sodalite); VOLCANIC .gem(gem_volcanic) .ore(DictFrame.fromOne(ore_basalt, EnumBasaltOreType.GEM)); HEMATITE .ore(fromOne(stone_resource, EnumStoneType.HEMATITE)); - MALACHITE .ore(fromOne(stone_resource, EnumStoneType.MALACHITE)); + MALACHITE .ingot(DictFrame.fromOne(chunk_ore, EnumChunkType.MALACHITE)) .ore(fromOne(stone_resource, EnumStoneType.MALACHITE)); LIMESTONE .dust(powder_limestone) .ore(fromOne(stone_resource, EnumStoneType.LIMESTONE)); SLAG .block(block_slag); @@ -454,11 +462,11 @@ public class OreDictManager { * RARE METALS */ AUSTRALIUM .nugget(nugget_australium) .billet(billet_australium) .ingot(ingot_australium) .dust(powder_australium) .block(block_australium) .ore(ore_australium); - REIIUM .nugget(nugget_reiium) .ingot(ingot_reiium) .dust(powder_reiium) .block(block_reiium); - WEIDANIUM .nugget(nugget_weidanium) .ingot(ingot_weidanium) .dust(powder_weidanium) .block(block_weidanium); - UNOBTAINIUM .nugget(nugget_unobtainium) .ingot(ingot_unobtainium) .dust(powder_unobtainium) .block(block_unobtainium); - VERTICIUM .nugget(nugget_verticium) .ingot(ingot_verticium) .dust(powder_verticium) .block(block_verticium); - DAFFERGON .nugget(nugget_daffergon) .ingot(ingot_daffergon) .dust(powder_daffergon) .block(block_daffergon); + REIIUM .block(block_reiium); + WEIDANIUM .block(block_weidanium); + UNOBTAINIUM .block(block_unobtainium); + VERTICIUM .block(block_verticium); + DAFFERGON .block(block_daffergon); /* * RARE EARTHS @@ -538,16 +546,25 @@ public class OreDictManager { for(NTMMaterial mat : Mats.orderedList) { if(mat.smeltable == SmeltingBehavior.SMELTABLE) { - if(mat.shapes.contains(MaterialShapes.BOLT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.BOLT.name() + name, new ItemStack(ModItems.bolt, 1, mat.id)); - if(mat.shapes.contains(MaterialShapes.CASTPLATE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.CASTPLATE.name() + name, new ItemStack(ModItems.plate_cast, 1, mat.id)); - if(mat.shapes.contains(MaterialShapes.WELDEDPLATE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.WELDEDPLATE.name() + name, new ItemStack(ModItems.plate_welded, 1, mat.id)); - if(mat.shapes.contains(MaterialShapes.HEAVY_COMPONENT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.HEAVY_COMPONENT.name() + name, new ItemStack(ModItems.heavy_component, 1, mat.id)); - if(mat.shapes.contains(MaterialShapes.DENSEWIRE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.DENSEWIRE.name() + name, new ItemStack(ModItems.wire_dense, 1, mat.id)); - if(mat.shapes.contains(MaterialShapes.SHELL)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.SHELL.name() + name, new ItemStack(ModItems.shell, 1, mat.id)); - if(mat.shapes.contains(MaterialShapes.PIPE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.PIPE.name() + name, new ItemStack(ModItems.pipe, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.CASTPLATE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.CASTPLATE.name() + name, new ItemStack(ModItems.plate_cast, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.WELDEDPLATE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.WELDEDPLATE.name() + name, new ItemStack(ModItems.plate_welded, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.HEAVY_COMPONENT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.HEAVY_COMPONENT.name() + name, new ItemStack(ModItems.heavy_component, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.DENSEWIRE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.DENSEWIRE.name() + name, new ItemStack(ModItems.wire_dense, 1, mat.id)); } - if(mat.shapes.contains(MaterialShapes.FRAGMENT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.FRAGMENT.name() + name, new ItemStack(ModItems.bedrock_ore_fragment, 1, mat.id)); - if(mat.shapes.contains(MaterialShapes.WIRE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.WIRE.name() + name, new ItemStack(ModItems.wire_fine, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.BOLT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.BOLT.name() + name, new ItemStack(ModItems.bolt, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.INGOT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.INGOT.name() + name, new ItemStack(ModItems.ingot_raw, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.SHELL)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.SHELL.name() + name, new ItemStack(ModItems.shell, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.PIPE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.PIPE.name() + name, new ItemStack(ModItems.pipe, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.FRAGMENT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.FRAGMENT.name() + name, new ItemStack(ModItems.bedrock_ore_fragment, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.WIRE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.WIRE.name() + name, new ItemStack(ModItems.wire_fine, 1, mat.id)); + + if(mat.autogen.contains(MaterialShapes.LIGHTBARREL)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.LIGHTBARREL.name() + name, new ItemStack(ModItems.part_barrel_light, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.HEAVYBARREL)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.HEAVYBARREL.name() + name, new ItemStack(ModItems.part_barrel_heavy, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.LIGHTRECEIVER)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.LIGHTRECEIVER.name() + name, new ItemStack(ModItems.part_receiver_light, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.HEAVYRECEIVER)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.HEAVYRECEIVER.name() + name, new ItemStack(ModItems.part_receiver_heavy, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.MECHANISM)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.MECHANISM.name() + name, new ItemStack(ModItems.part_mechanism, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.STOCK)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.STOCK.name() + name, new ItemStack(ModItems.part_stock, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.GRIP)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.GRIP.name() + name, new ItemStack(ModItems.part_grip, 1, mat.id)); } for(EnumBedrockOre ore : EnumBedrockOre.values()) { @@ -635,18 +652,8 @@ public class OreDictManager { OreDictionary.registerOre("container1000lubricant", bdcl); OreDictionary.registerOre("itemSilicon", billet_silicon); - //Legacy wires - OreDictionary.registerOre(AL.wireFine(), wire_aluminium); - OreDictionary.registerOre(CU.wireFine(), wire_copper); - OreDictionary.registerOre(MINGRADE.wireFine(), wire_red_copper); - OreDictionary.registerOre(GOLD.wireFine(), wire_gold); - OreDictionary.registerOre(W.wireFine(), wire_tungsten); - OreDictionary.registerOre(ALLOY.wireFine(), wire_advanced_alloy); - OreDictionary.registerOre(MAGTUNG.wireFine(), wire_magnetized_tungsten); - OreDictionary.registerOre(SA326.wireFine(), wire_schrabidium); - for(NTMMaterial mat : Mats.orderedList) { - if(mat.shapes.contains(MaterialShapes.FRAGMENT)) { + if(mat.autogen.contains(MaterialShapes.FRAGMENT)) { String name = mat.names[0]; if(!OreDictionary.getOres(MaterialShapes.DUST.name() + name).isEmpty()) MineralRecipes.add9To1(mat.make(ModItems.bedrock_ore_fragment), OreDictionary.getOres(MaterialShapes.DUST.name() + name).get(0)); else if(!OreDictionary.getOres(MaterialShapes.GEM.name() + name).isEmpty()) MineralRecipes.add9To1(mat.make(ModItems.bedrock_ore_fragment), OreDictionary.getOres(MaterialShapes.GEM.name() + name).get(0)); @@ -667,10 +674,11 @@ public class OreDictManager { public static void registerGroups() { ANY_RUBBER.addPrefix(INGOT, true); - ANY_PLASTIC.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(BLOCK, true); - ANY_HARDPLASTIC.addPrefix(INGOT, true); - ANY_RESISTANTALLOY.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(PLATECAST, true).addPrefix(PLATEWELDED, true).addPrefix(HEAVY_COMPONENT, true).addPrefix(BLOCK, true); - ANY_BISMOIDBRONZE.addPrefix(INGOT, true).addPrefix(PLATECAST, true); + ANY_PLASTIC.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(BLOCK, true).addPrefix(GRIP, true).addPrefix(STOCK, true); + ANY_HARDPLASTIC.addPrefix(INGOT, true).addPrefix(STOCK, true).addPrefix(GRIP, true); + ANY_RESISTANTALLOY.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(CASTPLATE, true).addPrefix(WELDEDPLATE, true).addPrefix(HEAVY_COMPONENT, true).addPrefix(BLOCK, true) + .addPrefix(LIGHTBARREL, true).addPrefix(HEAVYBARREL, true).addPrefix(LIGHTRECEIVER, true).addPrefix(HEAVYRECEIVER, true); + ANY_BISMOIDBRONZE.addPrefix(INGOT, true).addPrefix(CASTPLATE, true).addPrefix(LIGHTBARREL, true).addPrefix(HEAVYBARREL, true).addPrefix(LIGHTRECEIVER, true).addPrefix(HEAVYRECEIVER, true); ANY_TAR.addPrefix(ANY, false); } @@ -678,9 +686,7 @@ public class OreDictManager { @SubscribeEvent public void onRegisterOre(OreRegisterEvent event) { - - if(recursionBrake) - return; + if(recursionBrake) return; recursionBrake = true; @@ -737,44 +743,35 @@ public class OreDictManager { /* * Quick access methods to grab ore names for recipes. */ - public String any() { return ANY + mats[0]; } - public String nugget() { return NUGGET + mats[0]; } - public String tiny() { return TINY + mats[0]; } - public String bolt() { return BOLT + mats[0]; } - public String ingot() { return INGOT + mats[0]; } - public String dustTiny() { return DUSTTINY + mats[0]; } - public String dust() { return DUST + mats[0]; } - public String gem() { return GEM + mats[0]; } - public String crystal() { return CRYSTAL + mats[0]; } - public String plate() { return PLATE + mats[0]; } - public String plateCast() { return PLATECAST + mats[0]; } - public String plateWelded() { return PLATEWELDED + mats[0]; } - public String heavyComp() { return HEAVY_COMPONENT + mats[0]; } - public String wireFine() { return WIRE + mats[0]; } - public String wireDense() { return WIREDENSE + mats[0]; } - public String shell() { return SHELL + mats[0]; } - public String pipe() { return PIPE + mats[0]; } - public String billet() { return BILLET + mats[0]; } - public String block() { return BLOCK + mats[0]; } - public String ore() { return ORE + mats[0]; } - public String fragment() { return FRAGMENT + mats[0]; } - public String[] anys() { return appendToAll(ANY); } - public String[] nuggets() { return appendToAll(NUGGET); } - public String[] tinys() { return appendToAll(TINY); } - public String[] allNuggets() { return appendToAll(NUGGET, TINY); } - public String[] ingots() { return appendToAll(INGOT); } - public String[] dustTinys() { return appendToAll(DUSTTINY); } - public String[] dusts() { return appendToAll(DUST); } - public String[] gems() { return appendToAll(GEM); } - public String[] crystals() { return appendToAll(CRYSTAL); } - public String[] plates() { return appendToAll(PLATE); } - public String[] plateCasts() { return appendToAll(PLATECAST); } - public String[] shells() { return appendToAll(SHELL); } - public String[] pipes() { return appendToAll(PIPE); } - public String[] billets() { return appendToAll(BILLET); } - public String[] blocks() { return appendToAll(BLOCK); } - public String[] ores() { return appendToAll(ORE); } - public String[] fragments() { return appendToAll(FRAGMENT); } + public String any() { return ANY.name() + mats[0]; } + public String nugget() { return NUGGET.name() + mats[0]; } + public String tiny() { return TINY.name() + mats[0]; } + public String bolt() { return BOLT.name() + mats[0]; } + public String ingot() { return INGOT.name() + mats[0]; } + public String dustTiny() { return DUSTTINY.name() + mats[0]; } + public String dust() { return DUST.name() + mats[0]; } + public String gem() { return GEM.name() + mats[0]; } + public String crystal() { return CRYSTAL.name() + mats[0]; } + public String plate() { return PLATE.name() + mats[0]; } + public String plateCast() { return CASTPLATE.name() + mats[0]; } + public String plateWelded() { return WELDEDPLATE.name() + mats[0]; } + public String heavyComp() { return HEAVY_COMPONENT.name() + mats[0]; } + public String wireFine() { return WIRE.name() + mats[0]; } + public String wireDense() { return DENSEWIRE.name() + mats[0]; } + public String shell() { return SHELL.name() + mats[0]; } + public String pipe() { return PIPE.name() + mats[0]; } + public String billet() { return BILLET.name() + mats[0]; } + public String block() { return BLOCK.name() + mats[0]; } + public String ore() { return ORE.name() + mats[0]; } + public String fragment() { return FRAGMENT.name() + mats[0]; } + public String lightBarrel() { return LIGHTBARREL.name() + mats[0]; } + public String heavyBarrel() { return HEAVYBARREL.name() + mats[0]; } + public String lightReceiver() { return LIGHTRECEIVER.name() + mats[0]; } + public String heavyReceiver() { return HEAVYRECEIVER.name() + mats[0]; } + public String mechanism() { return MECHANISM.name() + mats[0]; } + public String stock() { return STOCK.name() + mats[0]; } + public String grip() { return GRIP.name() + mats[0]; } + public String[] all(MaterialShapes shape) { return appendToAll(shape.prefixes); } /** Returns cast (triple) plates if 528 mode is enabled or normal plates if not */ public String plate528() { return GeneralConfig.enable528 ? plateCast() : plate(); } @@ -868,7 +865,7 @@ public class OreDictManager { } public DictFrame plateCast(Object... plate) { hazMult = HazardRegistry.plateCast; - return makeObject(PLATECAST, plate); + return makeObject(CASTPLATE, plate); } public DictFrame billet(Object... billet) { hazMult = HazardRegistry.billet; @@ -888,8 +885,9 @@ public class OreDictManager { return makeObject(ORENETHER, oreNether); } - public DictFrame makeObject(String tag, Object... objects) { + public DictFrame makeObject(MaterialShapes shape, Object... objects) { + String tag = shape.name(); for(Object o : objects) { if(o instanceof Item) registerStack(tag, new ItemStack((Item) o)); if(o instanceof Block) registerStack(tag, new ItemStack((Block) o)); @@ -974,8 +972,9 @@ public class OreDictManager { * @param prefix The prefix of both the input and result of the reregistration * @return */ - public DictGroup addPrefix(String prefix, boolean inputPrefix) { + public DictGroup addPrefix(MaterialShapes shape, boolean inputPrefix) { + String prefix = shape.name(); String group = prefix + groupName; for(String name : names) { @@ -998,24 +997,31 @@ public class OreDictManager { return this; } - public String any() { return ANY + groupName; } - public String nugget() { return NUGGET + groupName; } - public String tiny() { return TINY + groupName; } - public String bolt() { return BOLT + groupName; } - public String ingot() { return INGOT + groupName; } - public String dustTiny() { return DUSTTINY + groupName; } - public String dust() { return DUST + groupName; } - public String gem() { return GEM + groupName; } - public String crystal() { return CRYSTAL + groupName; } - public String plate() { return PLATE + groupName; } - public String plateCast() { return PLATECAST + groupName; } - public String plateWelded() { return PLATEWELDED + groupName; } - public String heavyComp() { return HEAVY_COMPONENT + groupName; } - public String wireFine() { return WIRE + groupName; } - public String wireDense() { return WIREDENSE + groupName; } - public String billet() { return BILLET + groupName; } - public String block() { return BLOCK + groupName; } - public String ore() { return ORE + groupName; } + public String any() { return ANY.name() + groupName; } + public String nugget() { return NUGGET.name() + groupName; } + public String tiny() { return TINY.name() + groupName; } + public String bolt() { return BOLT.name() + groupName; } + public String ingot() { return INGOT.name() + groupName; } + public String dustTiny() { return DUSTTINY .name() + groupName; } + public String dust() { return DUST.name() + groupName; } + public String gem() { return GEM.name() + groupName; } + public String crystal() { return CRYSTAL.name() + groupName; } + public String plate() { return PLATE.name() + groupName; } + public String plateCast() { return CASTPLATE.name() + groupName; } + public String plateWelded() { return WELDEDPLATE.name() + groupName; } + public String heavyComp() { return HEAVY_COMPONENT.name() + groupName; } + public String wireFine() { return WIRE.name() + groupName; } + public String wireDense() { return DENSEWIRE.name() + groupName; } + public String billet() { return BILLET.name() + groupName; } + public String block() { return BLOCK.name() + groupName; } + public String ore() { return ORE.name() + groupName; } + public String lightBarrel() { return LIGHTBARREL.name() + groupName; } + public String heavyBarrel() { return HEAVYBARREL.name() + groupName; } + public String lightReceiver() { return LIGHTRECEIVER.name() + groupName; } + public String heavyReceiver() { return HEAVYRECEIVER.name() + groupName; } + public String mechanism() { return MECHANISM.name() + groupName; } + public String stock() { return STOCK.name() + groupName; } + public String grip() { return GRIP.name() + groupName; } } private static void addReRegistration(String original, String additional) { diff --git a/src/main/java/com/hbm/inventory/OreNames.java b/src/main/java/com/hbm/inventory/OreNames.java deleted file mode 100644 index 036d82ead..000000000 --- a/src/main/java/com/hbm/inventory/OreNames.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.hbm.inventory; - -public class OreNames { - - /* - * PREFIXES - */ - public static final String ANY = "any"; - public static final String NUGGET = "nugget"; - public static final String TINY = "tiny"; - public static final String FRAGMENT = "bedrockorefragment"; - public static final String BOLT = "bolt"; - public static final String INGOT = "ingot"; - public static final String DUSTTINY = "dustTiny"; - public static final String DUST = "dust"; - public static final String GEM = "gem"; - public static final String CRYSTAL = "crystal"; - public static final String PLATE = "plate"; - public static final String PLATECAST = "plateTriple"; //cast plates are solid plates made from 3 ingots, turns out that's literally just a GT triple plate - public static final String PLATEWELDED = "plateSextuple"; - public static final String SHELL = "shell"; - public static final String PIPE = "ntmpipe"; - public static final String WIRE = "wireFine"; - public static final String WIREDENSE = "wireDense"; - public static final String BILLET = "billet"; - public static final String BLOCK = "block"; - public static final String ORE = "ore"; - public static final String ORENETHER = "oreNether"; - public static final String HEAVY_COMPONENT = "componentHeavy"; - - public static final String[] prefixes = new String[] { - ANY, NUGGET, TINY, FRAGMENT, BOLT, INGOT, DUSTTINY, DUST, GEM, CRYSTAL, PLATE, PLATECAST, BILLET, BLOCK, ORE, ORENETHER, HEAVY_COMPONENT, WIRE, WIREDENSE - }; -} diff --git a/src/main/java/com/hbm/inventory/RecipesCommon.java b/src/main/java/com/hbm/inventory/RecipesCommon.java index 85a43f6bf..c2b9116a5 100644 --- a/src/main/java/com/hbm/inventory/RecipesCommon.java +++ b/src/main/java/com/hbm/inventory/RecipesCommon.java @@ -116,10 +116,17 @@ public class RecipesCommon { this.stacksize = 1; return; } - this.item = stack.getItem(); - if(this.item == null) this.item = ModItems.nothing; //i'm going to bash some fuckard's head in - this.stacksize = stack.stackSize; - this.meta = stack.getItemDamage(); + try { + this.item = stack.getItem(); + if(this.item == null) this.item = ModItems.nothing; //i'm going to bash some fuckard's head in + this.stacksize = stack.stackSize; + this.meta = stack.getItemDamage(); + } catch(Exception ex) { + this.item = ModItems.nothing; + if(!GeneralConfig.enableSilentCompStackErrors) { + ex.printStackTrace(); + } + } } public ComparableStack makeSingular() { @@ -271,6 +278,10 @@ public class RecipesCommon { public AStack copy() { return new ComparableStack(item, stacksize, meta); } + + public ComparableStack copy(int stacksize) { + return new ComparableStack(item, stacksize, meta); + } @Override public boolean matchesRecipe(ItemStack stack, boolean ignoreSize) { @@ -383,6 +394,10 @@ public class RecipesCommon { public AStack copy() { return new OreDictStack(name, stacksize); } + + public OreDictStack copy(int stacksize) { + return new OreDictStack(name, stacksize); + } @Override public boolean matchesRecipe(ItemStack stack, boolean ignoreSize) { diff --git a/src/main/java/com/hbm/inventory/SlotNonRetarded.java b/src/main/java/com/hbm/inventory/SlotNonRetarded.java index 02b7faa05..87c166277 100644 --- a/src/main/java/com/hbm/inventory/SlotNonRetarded.java +++ b/src/main/java/com/hbm/inventory/SlotNonRetarded.java @@ -1,5 +1,7 @@ package com.hbm.inventory; +import com.hbm.interfaces.NotableComments; + import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; @@ -8,6 +10,7 @@ import net.minecraft.item.ItemStack; * Because vanilla slots have severe mental disabilities that prevent them from working as expected. * @author hbm */ +@NotableComments public class SlotNonRetarded extends Slot { public SlotNonRetarded(IInventory inventory, int id, int x, int y) { diff --git a/src/main/java/com/hbm/inventory/UpgradeManager.java b/src/main/java/com/hbm/inventory/UpgradeManager.java deleted file mode 100644 index 39c366de4..000000000 --- a/src/main/java/com/hbm/inventory/UpgradeManager.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.hbm.inventory; - -import java.util.HashMap; - -import com.hbm.interfaces.Untested; -import com.hbm.items.machine.ItemMachineUpgrade; -import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; - -import net.minecraft.item.ItemStack; - -public class UpgradeManager { - - private static HashMap upgrades = new HashMap(); - private static UpgradeType mutexType = null; - - @Untested - public static void eval(ItemStack[] slots, int start, int end) { - - upgrades.clear(); - - for(int i = start; i <= end; i++) { - - if(slots[i] != null && slots[i].getItem() instanceof ItemMachineUpgrade) { - ItemMachineUpgrade item = (ItemMachineUpgrade) slots[i].getItem(); - - if(item.type.mutex) { - - if(mutexType == null || mutexType.ordinal() < item.type.ordinal()) { - mutexType = item.type; - } - - } else { - Integer up = upgrades.get(item.type); - int upgrade = (up == null ? 0 : up); - upgrade += item.tier; - upgrades.put(item.type, upgrade); - } - } - } - } - - public static int getLevel(UpgradeType type) { - Integer up = upgrades.get(type); - return up == null ? 0 : up; - } - - public static UpgradeType getMinerMutex() { - return mutexType; - } -} diff --git a/src/main/java/com/hbm/inventory/UpgradeManagerNT.java b/src/main/java/com/hbm/inventory/UpgradeManagerNT.java new file mode 100644 index 000000000..55422fb8d --- /dev/null +++ b/src/main/java/com/hbm/inventory/UpgradeManagerNT.java @@ -0,0 +1,80 @@ +package com.hbm.inventory; + +import com.hbm.items.machine.ItemMachineUpgrade; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; +import com.hbm.tileentity.IUpgradeInfoProvider; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; + +import java.util.Arrays; +import java.util.HashMap; + +/* + Steps for use: + 1. TE implements IUpgradeInfoProvider + 2. TE creates a new instance of UpgradeManagerNT + 3. Upgrades and their levels can then be pulled from there. + */ + +/** + * Upgrade system, now with caching! + * @author BallOfEnergy1 + */ +public class UpgradeManagerNT { + + public ItemStack[] cachedSlots; + + private UpgradeType mutexType; + public HashMap upgrades = new HashMap<>(); + + public void checkSlots(TileEntity te, ItemStack[] slots, int start, int end) { + + if(!(te instanceof IUpgradeInfoProvider) || slots == null) + return; + + ItemStack[] upgradeSlots = Arrays.copyOfRange(slots, start, end + 1); + + if(Arrays.equals(upgradeSlots, cachedSlots)) + return; + + cachedSlots = upgradeSlots.clone(); + + upgrades.clear(); + + for (int i = 0; i <= end - start; i++) { + + if(upgradeSlots[i] != null && upgradeSlots[i].getItem() instanceof ItemMachineUpgrade) { + + ItemMachineUpgrade item = (ItemMachineUpgrade) upgradeSlots[i].getItem(); + IUpgradeInfoProvider upgradable = (IUpgradeInfoProvider) te; + + if(upgradable.getValidUpgrades() == null) + return; + + if (upgradable.getValidUpgrades().containsKey(item.type)) { // Check if upgrade can even be accepted by the machine. + if (item.type.mutex) { + if (mutexType == null) { + upgrades.put(item.type, 1); + mutexType = item.type; + } else if(item.type.ordinal() > mutexType.ordinal()) { + upgrades.remove(mutexType); + upgrades.put(item.type, 1); + mutexType = item.type; + } + } else { + + Integer levelBefore = upgrades.get(item.type); + int upgradeLevel = (levelBefore == null ? 0 : levelBefore); + upgradeLevel += item.tier; + // Add additional check to make sure it doesn't go over the max. + upgrades.put(item.type, Math.min(upgradeLevel, upgradable.getValidUpgrades().get(item.type))); + } + } + } + } + } + + public Integer getLevel(UpgradeType type) { + return upgrades.getOrDefault(type, 0); + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerCasingBag.java b/src/main/java/com/hbm/inventory/container/ContainerCasingBag.java new file mode 100644 index 000000000..d02549627 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerCasingBag.java @@ -0,0 +1,85 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotNonRetarded; +import com.hbm.items.tool.ItemCasingBag.InventoryCasingBag; +import com.hbm.util.InventoryUtil; + +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 ContainerCasingBag extends Container { + + private InventoryCasingBag bag; + + public ContainerCasingBag(InventoryPlayer invPlayer, InventoryCasingBag box) { + this.bag = box; + this.bag.openInventory(); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 5; j++) { + this.addSlotToContainer(new SlotNonRetarded(box, j + i * 5, 44 + j * 18, 18 + i * 18)); + } + } + + 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, 100 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 158)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(par2 <= bag.getSizeInventory() - 1) { + if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, bag.getSizeInventory(), this.inventorySlots.size(), true)) { + return null; + } + } else if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, 0, bag.getSizeInventory(), false)) { + return null; + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + + var4.onPickupFromSlot(p_82846_1_, var5); + } + + return var3; + } + + @Override + public ItemStack slotClick(int index, int button, int mode, EntityPlayer player) { + // prevents the player from moving around the currently open box + if(mode == 2 && button == player.inventory.currentItem) return null; + if(index == player.inventory.currentItem + 27 + bag.getSizeInventory()) return null; + return super.slotClick(index, button, mode, player); + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return bag.isUseableByPlayer(player); + } + + @Override + public void onContainerClosed(EntityPlayer player) { + super.onContainerClosed(player); + this.bag.closeInventory(); + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerChemfac.java b/src/main/java/com/hbm/inventory/container/ContainerChemfac.java index 45604135d..c04792035 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerChemfac.java +++ b/src/main/java/com/hbm/inventory/container/ContainerChemfac.java @@ -1,5 +1,6 @@ package com.hbm.inventory.container; +import com.hbm.inventory.SlotCraftingOutput; import com.hbm.inventory.SlotUpgrade; import com.hbm.tileentity.machine.TileEntityMachineChemfac; @@ -35,7 +36,7 @@ public class ContainerChemfac extends Container { for(int k = 0; k < 2; k++) { for(int l = 0; l < 2; l++) { - this.addSlotToContainer(new Slot(tile, this.inventorySlots.size(), 69 + j * 110 + l * 16, 14 + i * 38 + k * 16)); + this.addSlotToContainer(new SlotCraftingOutput(playerInv.player, tile, this.inventorySlots.size(), 69 + j * 110 + l * 16, 14 + i * 38 + k * 16)); } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerCraneInserter.java b/src/main/java/com/hbm/inventory/container/ContainerCraneInserter.java index ad08c4a45..aa5acf950 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCraneInserter.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCraneInserter.java @@ -17,7 +17,7 @@ public class ContainerCraneInserter extends Container { for(int i = 0; i < 3; i++) { for(int j = 0; j < 7; j++) { - this.addSlotToContainer(new Slot(inserter, j + i * 7, 26 + j * 18, 17 + i * 18)); + this.addSlotToContainer(new Slot(inserter, j + i * 7, 8 + j * 18, 17 + i * 18)); } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerCrucible.java b/src/main/java/com/hbm/inventory/container/ContainerCrucible.java index 5061bb4a6..f04d9e9f1 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCrucible.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCrucible.java @@ -38,6 +38,12 @@ public class ContainerCrucible extends Container { } } + @Override + public ItemStack slotClick(int slot, int button, int mode, EntityPlayer player) { + if(mode == 2) return null; + return super.slotClick(slot, button, mode, player); + } + @Override public ItemStack transferStackInSlot(EntityPlayer player, int index) { ItemStack stack = null; diff --git a/src/main/java/com/hbm/inventory/container/ContainerFEL.java b/src/main/java/com/hbm/inventory/container/ContainerFEL.java index c80e69e44..357c7378b 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerFEL.java +++ b/src/main/java/com/hbm/inventory/container/ContainerFEL.java @@ -42,8 +42,8 @@ public class ContainerFEL extends Container { ItemStack stack = slot.getStack(); rStack = stack.copy(); - if(index == 0) { - if(!this.mergeItemStack(stack, 1, this.inventorySlots.size(), false)) { + if(index <= 1) { + if(!this.mergeItemStack(stack, 2, this.inventorySlots.size(), false)) { return null; } } else { diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineAmmoPress.java b/src/main/java/com/hbm/inventory/container/ContainerMachineAmmoPress.java new file mode 100644 index 000000000..1dbe82ef2 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineAmmoPress.java @@ -0,0 +1,84 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.inventory.recipes.AmmoPressRecipes; +import com.hbm.inventory.recipes.AmmoPressRecipes.AmmoPressRecipe; +import com.hbm.tileentity.machine.TileEntityMachineAmmoPress; + +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 ContainerMachineAmmoPress extends Container { + + private TileEntityMachineAmmoPress press; + + public ContainerMachineAmmoPress(InventoryPlayer playerInv, TileEntityMachineAmmoPress tile) { + press = tile; + + //Inputs + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 3; j++) { + this.addSlotToContainer(new Slot(tile, i * 3 + j, 116 + j * 18, 18 + i * 18)); + } + } + //Output + this.addSlotToContainer(new SlotCraftingOutput(playerInv.player, tile, 9, 134, 72)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(playerInv, j + i * 9 + 9, 8 + j * 18, 118 + i * 18)); + } + } + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(playerInv, i, 8 + i * 18, 176)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack rStack = null; + Slot slot = (Slot) this.inventorySlots.get(index); + + if(slot != null && slot.getHasStack()) { + ItemStack stack = slot.getStack(); + rStack = stack.copy(); + + if(index <= 9) { + if(!this.mergeItemStack(stack, 10, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(press.selectedRecipe < 0 || press.selectedRecipe >= AmmoPressRecipes.recipes.size()) return null; + AmmoPressRecipe recipe = AmmoPressRecipes.recipes.get(press.selectedRecipe); + + for(int i = 0; i < 9; i++) { + if(recipe.input[i] == null) continue; + if(recipe.input[i].matchesRecipe(stack, true)) { + if(!this.mergeItemStack(stack, i, i + 1, false)) { + return null; + } + } + } + + return null; + } + + if(stack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + + return rStack; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return press.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineReactorBreeding.java b/src/main/java/com/hbm/inventory/container/ContainerMachineReactorBreeding.java index cab45d330..331b69d1d 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineReactorBreeding.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineReactorBreeding.java @@ -43,8 +43,8 @@ public class ContainerMachineReactorBreeding extends Container { ItemStack stack = slot.getStack(); var3 = stack.copy(); - if(index <= 2) { - if(!this.mergeItemStack(stack, 2, this.inventorySlots.size(), true)) { + if(index <= 1) { + if(!this.mergeItemStack(stack, 1, this.inventorySlots.size(), true)) { return null; } diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineRotaryFurnace.java b/src/main/java/com/hbm/inventory/container/ContainerMachineRotaryFurnace.java new file mode 100644 index 000000000..219f1f0e6 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineRotaryFurnace.java @@ -0,0 +1,75 @@ +package com.hbm.inventory.container; + +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.tileentity.machine.TileEntityMachineRotaryFurnace; + +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; +import net.minecraft.tileentity.TileEntityFurnace; + +public class ContainerMachineRotaryFurnace extends Container { + + private TileEntityMachineRotaryFurnace furnace; + + public ContainerMachineRotaryFurnace(InventoryPlayer invPlayer, TileEntityMachineRotaryFurnace tile) { + furnace = tile; + + //Inputs + this.addSlotToContainer(new Slot(tile, 0, 8, 18)); + this.addSlotToContainer(new Slot(tile, 1, 26, 18)); + this.addSlotToContainer(new Slot(tile, 2, 44, 18)); + //Fluid ID + this.addSlotToContainer(new Slot(tile, 3, 8, 54)); + //Solid fuel + this.addSlotToContainer(new Slot(tile, 4, 44, 54)); + + 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, 104 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 162)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack rStack = null; + Slot slot = (Slot) this.inventorySlots.get(index); + + if(slot != null && slot.getHasStack()) { + ItemStack stack = slot.getStack(); + rStack = stack.copy(); + + if(index <= 4) { + if(!this.mergeItemStack(stack, 5, this.inventorySlots.size(), true)) return null; + } else { + if(TileEntityFurnace.isItemFuel(rStack)) { + if(!this.mergeItemStack(stack, 4, 5, false)) return null; + } else if(rStack.getItem() instanceof IItemFluidIdentifier) { + if(!this.mergeItemStack(stack, 3, 4, false)) return null; + } else { + if(!this.mergeItemStack(stack, 0, 3, false)) return null; + } + } + + if(stack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + + return rStack; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return furnace.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineShredder.java b/src/main/java/com/hbm/inventory/container/ContainerMachineShredder.java index c10e47ae7..983129533 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineShredder.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineShredder.java @@ -55,12 +55,12 @@ public class ContainerMachineShredder extends Container { 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, 84 + i * 18 + 56)); + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + 67)); } } for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 56)); + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 67)); } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerPADetector.java b/src/main/java/com/hbm/inventory/container/ContainerPADetector.java new file mode 100644 index 000000000..08e8f9e81 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerPADetector.java @@ -0,0 +1,77 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotTakeOnly; +import com.hbm.items.ModItems; +import com.hbm.tileentity.machine.albion.TileEntityPADetector; + +import api.hbm.energymk2.IBatteryItem; +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 ContainerPADetector extends Container { + + private TileEntityPADetector detector; + + public ContainerPADetector(InventoryPlayer playerInv, TileEntityPADetector tile) { + detector = tile; + + //Battery + this.addSlotToContainer(new Slot(tile, 0, 8, 72)); + //Containers + this.addSlotToContainer(new Slot(tile, 1, 62, 18)); + this.addSlotToContainer(new Slot(tile, 2, 80, 18)); + //Outputs + this.addSlotToContainer(new SlotTakeOnly(tile, 3, 62, 45)); + this.addSlotToContainer(new SlotTakeOnly(tile, 4, 80, 45)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(playerInv, j + i * 9 + 9, 8 + j * 18, 122 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(playerInv, i, 8 + i * 18, 180)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return detector.isUseableByPlayer(player); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack rStack = null; + Slot slot = (Slot) this.inventorySlots.get(index); + + if(slot != null && slot.getHasStack()) { + ItemStack stack = slot.getStack(); + rStack = stack.copy(); + + if(index <= 5) { + if(!this.mergeItemStack(stack, 6, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(rStack.getItem() instanceof IBatteryItem || rStack.getItem() == ModItems.battery_creative) { + if(!this.mergeItemStack(stack, 0, 1, false)) return null; + } else { + if(!this.mergeItemStack(stack, 1, 3, false)) return null; + } + } + + if(stack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + + return rStack; + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerPADipole.java b/src/main/java/com/hbm/inventory/container/ContainerPADipole.java new file mode 100644 index 000000000..aedd8dc47 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerPADipole.java @@ -0,0 +1,72 @@ +package com.hbm.inventory.container; + +import com.hbm.items.ModItems; +import com.hbm.tileentity.machine.albion.TileEntityPADipole; + +import api.hbm.energymk2.IBatteryItem; +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 ContainerPADipole extends Container { + + private TileEntityPADipole quadrupole; + + public ContainerPADipole(InventoryPlayer playerInv, TileEntityPADipole tile) { + quadrupole = tile; + + //Battery + this.addSlotToContainer(new Slot(tile, 0, 8, 72)); + //Coil + this.addSlotToContainer(new Slot(tile, 1, 89, 26)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(playerInv, j + i * 9 + 9, 8 + j * 18, 122 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(playerInv, i, 8 + i * 18, 180)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return quadrupole.isUseableByPlayer(player); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack rStack = null; + Slot slot = (Slot) this.inventorySlots.get(index); + + if(slot != null && slot.getHasStack()) { + ItemStack stack = slot.getStack(); + rStack = stack.copy(); + + if(index <= 1) { + if(!this.mergeItemStack(stack, 2, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(rStack.getItem() instanceof IBatteryItem || rStack.getItem() == ModItems.battery_creative) { + if(!this.mergeItemStack(stack, 0, 1, false)) return null; + } else { + if(!this.mergeItemStack(stack, 1, 2, false)) return null; + } + } + + if(stack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + + return rStack; + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerPAQuadrupole.java b/src/main/java/com/hbm/inventory/container/ContainerPAQuadrupole.java new file mode 100644 index 000000000..eefd839db --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerPAQuadrupole.java @@ -0,0 +1,72 @@ +package com.hbm.inventory.container; + +import com.hbm.items.ModItems; +import com.hbm.tileentity.machine.albion.TileEntityPAQuadrupole; + +import api.hbm.energymk2.IBatteryItem; +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 ContainerPAQuadrupole extends Container { + + private TileEntityPAQuadrupole quadrupole; + + public ContainerPAQuadrupole(InventoryPlayer playerInv, TileEntityPAQuadrupole tile) { + quadrupole = tile; + + //Battery + this.addSlotToContainer(new Slot(tile, 0, 26, 72)); + //Coil + this.addSlotToContainer(new Slot(tile, 1, 71, 36)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(playerInv, j + i * 9 + 9, 8 + j * 18, 122 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(playerInv, i, 8 + i * 18, 180)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return quadrupole.isUseableByPlayer(player); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack rStack = null; + Slot slot = (Slot) this.inventorySlots.get(index); + + if(slot != null && slot.getHasStack()) { + ItemStack stack = slot.getStack(); + rStack = stack.copy(); + + if(index <= 1) { + if(!this.mergeItemStack(stack, 2, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(rStack.getItem() instanceof IBatteryItem || rStack.getItem() == ModItems.battery_creative) { + if(!this.mergeItemStack(stack, 0, 1, false)) return null; + } else { + if(!this.mergeItemStack(stack, 1, 2, false)) return null; + } + } + + if(stack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + + return rStack; + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerPARFC.java b/src/main/java/com/hbm/inventory/container/ContainerPARFC.java new file mode 100644 index 000000000..ebbc2ac1e --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerPARFC.java @@ -0,0 +1,63 @@ +package com.hbm.inventory.container; + +import com.hbm.tileentity.machine.albion.TileEntityPARFC; + +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 ContainerPARFC extends Container { + + private TileEntityPARFC rfc; + + public ContainerPARFC(InventoryPlayer playerInv, TileEntityPARFC tile) { + rfc = tile; + + //Battery + this.addSlotToContainer(new Slot(tile, 0, 53, 72)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(playerInv, j + i * 9 + 9, 8 + j * 18, 122 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(playerInv, i, 8 + i * 18, 180)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return rfc.isUseableByPlayer(player); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack rStack = null; + Slot slot = (Slot) this.inventorySlots.get(index); + + if(slot != null && slot.getHasStack()) { + ItemStack stack = slot.getStack(); + rStack = stack.copy(); + + if(index <= 0) { + if(!this.mergeItemStack(stack, 1, this.inventorySlots.size(), true)) { + return null; + } + } else { + if(!this.mergeItemStack(stack, 0, 1, false)) return null; + } + + if(stack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + + return rStack; + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerPASource.java b/src/main/java/com/hbm/inventory/container/ContainerPASource.java new file mode 100644 index 000000000..4b30637f5 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerPASource.java @@ -0,0 +1,77 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotTakeOnly; +import com.hbm.items.ModItems; +import com.hbm.tileentity.machine.albion.TileEntityPASource; + +import api.hbm.energymk2.IBatteryItem; +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 ContainerPASource extends Container { + + private TileEntityPASource source; + + public ContainerPASource(InventoryPlayer playerInv, TileEntityPASource tile) { + source = tile; + + //Battery + this.addSlotToContainer(new Slot(tile, 0, 8, 72)); + //Inputs + this.addSlotToContainer(new Slot(tile, 1, 62, 18)); + this.addSlotToContainer(new Slot(tile, 2, 80, 18)); + //Containers + this.addSlotToContainer(new SlotTakeOnly(tile, 3, 62, 45)); + this.addSlotToContainer(new SlotTakeOnly(tile, 4, 80, 45)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(playerInv, j + i * 9 + 9, 8 + j * 18, 122 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(playerInv, i, 8 + i * 18, 180)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return source.isUseableByPlayer(player); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack rStack = null; + Slot slot = (Slot) this.inventorySlots.get(index); + + if(slot != null && slot.getHasStack()) { + ItemStack stack = slot.getStack(); + rStack = stack.copy(); + + if(index <= 5) { + if(!this.mergeItemStack(stack, 6, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(rStack.getItem() instanceof IBatteryItem || rStack.getItem() == ModItems.battery_creative) { + if(!this.mergeItemStack(stack, 0, 1, false)) return null; + } else { + if(!this.mergeItemStack(stack, 1, 3, false)) return null; + } + } + + if(stack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + + return rStack; + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerPyroOven.java b/src/main/java/com/hbm/inventory/container/ContainerPyroOven.java new file mode 100644 index 000000000..554569c1a --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerPyroOven.java @@ -0,0 +1,86 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.items.ModItems; +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.items.machine.ItemMachineUpgrade; +import com.hbm.tileentity.machine.oil.TileEntityMachinePyroOven; + +import api.hbm.energymk2.IBatteryItem; +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 ContainerPyroOven extends Container { + + private TileEntityMachinePyroOven pyro; + + public ContainerPyroOven(InventoryPlayer invPlayer, TileEntityMachinePyroOven tedf) { + pyro = tedf; + + //Battery + this.addSlotToContainer(new Slot(tedf, 0, 152, 72)); + //Input + this.addSlotToContainer(new Slot(tedf, 1, 35, 45)); + //Output + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 2, 89, 45)); + //Fluid ID + this.addSlotToContainer(new Slot(tedf, 3, 8, 72)); + //Upgrades + this.addSlotToContainer(new Slot(tedf, 4, 71, 72)); + this.addSlotToContainer(new Slot(tedf, 5, 89, 72)); + + 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, 122 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 180)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack rStack = null; + Slot slot = (Slot) this.inventorySlots.get(index); + + if(slot != null && slot.getHasStack()) { + ItemStack stack = slot.getStack(); + rStack = stack.copy(); + + if(index <= 5) { + if(!this.mergeItemStack(stack, 6, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(rStack.getItem() instanceof IBatteryItem || rStack.getItem() == ModItems.battery_creative) { + if(!this.mergeItemStack(stack, 0, 1, false)) return null; + } else if(rStack.getItem() instanceof IItemFluidIdentifier) { + if(!this.mergeItemStack(stack, 3, 4, false)) return null; + } else if(rStack.getItem() instanceof ItemMachineUpgrade) { + if(!this.mergeItemStack(stack, 4, 6, false)) return null; + } else { + if(!this.mergeItemStack(stack, 1, 2, false)) return null; + } + } + + if(stack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + + return rStack; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return pyro.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index cc933de8e..5b3fed36d 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -14,6 +14,7 @@ import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import com.hbm.handler.nei.BoilingHandler; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.inventory.fluid.trait.*; @@ -43,6 +44,9 @@ public class Fluids { public static FluidType ULTRAHOTSTEAM; public static FluidType COOLANT; public static FluidType COOLANT_HOT; + public static FluidType PERFLUOROMETHYL; + public static FluidType PERFLUOROMETHYL_COLD; + public static FluidType PERFLUOROMETHYL_HOT; public static FluidType LAVA; public static FluidType DEUTERIUM; public static FluidType TRITIUM; @@ -170,6 +174,8 @@ public class Fluids { public static FluidType HEAVYWATER_HOT; public static FluidType SODIUM; public static FluidType SODIUM_HOT; + public static FluidType LEAD; + public static FluidType LEAD_HOT; public static FluidType THORIUM_SALT; public static FluidType THORIUM_SALT_HOT; public static FluidType THORIUM_SALT_DEPLETED; @@ -177,12 +183,12 @@ public class Fluids { public static FluidType STELLAR_FLUX; public static FluidType VITRIOL; public static FluidType SLOP; - + /* Lagacy names for compatibility purposes */ @Deprecated public static FluidType ACID; //JAOPCA uses this, apparently - + public static final HashBiMap renameMapping = HashBiMap.create(); - + public static List customFluids = new ArrayList(); private static final HashMap idMapping = new HashMap(); @@ -224,20 +230,20 @@ public class Fluids { public static final FT_Polluting P_LIQUID_GAS = new FT_Polluting().burn(PollutionType.SOOT, SOOT_GAS * 2F); public static void init() { - + // ##### ##### ##### ##### ## # ##### # # ##### ## # ##### // # # # # # ## # # # # # # ## # # // ##### # # ### # # # ##### ##### # # # # # ### // # # # # # # ## # # # # # # ## # // # # # # ##### # ## ##### # # ##### # ## ##### - + /* * The mapping ID is set in the CTOR, which is the static, never shifting ID that is used to save the fluid type. * Therefore, ALWAYS append new fluid entries AT THE BOTTOM to avoid unnecessary ID shifting. * In addition, you have to add your fluid to 'metaOrder' which is what is used to sort fluid identifiers and whatnot in the inventory. * You may screw with metaOrder as much as you like, as long as you keep all fluids in the list exactly once. */ - + NONE = new FluidType("NONE", 0x888888, 0, 0, 0, EnumSymbol.NONE); WATER = new FluidType("WATER", 0x3333FF, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, UNSIPHONABLE); STEAM = new FluidType("STEAM", 0xe5e5e5, 3, 0, 0, EnumSymbol.NONE).setTemp(100).addTraits(GASEOUS, UNSIPHONABLE); @@ -305,8 +311,8 @@ public class Fluids { NAPHTHA_CRACK = new FluidType("NAPHTHA_CRACK", 0x595744, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x5F6D44)).addTraits(new FT_Flammable(125_000), new FT_Combustible(FuelGrade.MEDIUM, 200_000), LIQUID, VISCOUS, P_FUEL); LIGHTOIL_CRACK = new FluidType("LIGHTOIL_CRACK", 0x8c7451, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xB46B52)).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.MEDIUM, 500_000), LIQUID, P_FUEL); DIESEL_CRACK = new FluidType("DIESEL_CRACK", 0xf2eed5, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xFF2C2C)).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.HIGH, 450_000), LIQUID, P_FUEL); - AROMATICS = new FluidType("AROMATICS", 0x68A09A, 1, 4, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(25_000), LIQUID, VISCOUS, P_GAS); - UNSATURATEDS = new FluidType("UNSATURATEDS", 0x628FAE, 1, 4, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(1_000_000), GASEOUS, P_GAS); //acetylene burns as hot as satan's asshole + AROMATICS = new FluidType("AROMATICS", 0x68A09A, 1, 4, 1, EnumSymbol.NONE).addContainers(new CD_Gastank(0x68A09A, 0xEDCF27)).addTraits(new FT_Flammable(25_000), LIQUID, VISCOUS, P_GAS); + UNSATURATEDS = new FluidType("UNSATURATEDS", 0x628FAE, 1, 4, 1, EnumSymbol.NONE).addContainers(new CD_Gastank(0x628FAE, 0xEDCF27)).addTraits(new FT_Flammable(1_000_000), GASEOUS, P_GAS); //acetylene burns as hot as satan's asshole SALIENT = new FluidType("SALIENT", 0x457F2D, 0, 0, 0, EnumSymbol.NONE).addTraits(DELICIOUS, LIQUID, VISCOUS); XPJUICE = new FluidType("XPJUICE", 0xBBFF09, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); ENDERJUICE = new FluidType("ENDERJUICE", 0x127766, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); @@ -379,19 +385,24 @@ public class Fluids { LIGHTOIL_DS = new FluidType("LIGHTOIL_DS", 0x63543E, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xB46B52)).addTraits(LIQUID, P_FUEL); STELLAR_FLUX = new FluidType("STELLAR_FLUX", 0xE300FF, 0, 4, 4, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS); VITRIOL = new FluidType("VITRIOL", 0x6E5222, 2, 0, 1, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); - SLOP = new FluidType(141, "SLOP", 0x929D45, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); - + SLOP = new FluidType("SLOP", 0x929D45, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); + LEAD = new FluidType("LEAD", 0x666672, 4, 0, 0, EnumSymbol.NONE).setTemp(350).addTraits(LIQUID, VISCOUS); + LEAD_HOT = new FluidType("LEAD_HOT", 0x776563, 4, 0, 0, EnumSymbol.NONE).setTemp(1500).addTraits(LIQUID, VISCOUS); + PERFLUOROMETHYL = new FluidType("PERFLUOROMETHYL", 0xBDC8DC, 1, 0, 1, EnumSymbol.NONE).setTemp(15).addTraits(LIQUID); + PERFLUOROMETHYL_COLD = new FluidType("PERFLUOROMETHYL_COLD",0x99DADE, 1, 0, 1, EnumSymbol.NONE).setTemp(-150).addTraits(LIQUID); + PERFLUOROMETHYL_HOT = new FluidType(146, "PERFLUOROMETHYL_HOT",0xB899DE, 1, 0, 1, EnumSymbol.NONE).setTemp(250).addTraits(LIQUID); + // ^ ^ ^ ^ ^ ^ ^ ^ //ADD NEW FLUIDS HERE - + File folder = MainRegistry.configHbmDir; File customTypes = new File(folder.getAbsolutePath() + File.separatorChar + "hbmFluidTypes.json"); if(!customTypes.exists()) initDefaultFluids(customTypes); readCustomFluids(customTypes); - + //AND DON'T FORGET THE META DOWN HERE // V V V V V V V V - + //null metaOrder.add(NONE); //vanilla @@ -409,6 +420,9 @@ public class Fluids { metaOrder.add(CARBONDIOXIDE); metaOrder.add(COOLANT); metaOrder.add(COOLANT_HOT); + metaOrder.add(PERFLUOROMETHYL); + metaOrder.add(PERFLUOROMETHYL_COLD); + metaOrder.add(PERFLUOROMETHYL_HOT); metaOrder.add(CRYOGEL); metaOrder.add(MUG); metaOrder.add(MUG_HOT); @@ -416,6 +430,8 @@ public class Fluids { metaOrder.add(BLOOD_HOT); metaOrder.add(SODIUM); metaOrder.add(SODIUM_HOT); + metaOrder.add(LEAD); + metaOrder.add(LEAD_HOT); metaOrder.add(THORIUM_SALT); metaOrder.add(THORIUM_SALT_HOT); metaOrder.add(THORIUM_SALT_DEPLETED); @@ -550,15 +566,15 @@ public class Fluids { //bug meth metaOrder.add(PHEROMONE); metaOrder.add(PHEROMONE_M); - + //ANY INTERNAL RENAMING MUST BE REFLECTED HERE - DON'T FORGET TO CHANGE: LANG FILES + TYPE'S STRING ID + NAME OF TANK/GUI TEXTURE FILES! // V - + renameMapping.put("ACID", PEROXIDE); - + // LEGACY ACID = PEROXIDE; - + for(FluidType custom : customFluids) metaOrder.add(custom); CHLORINE.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 2F, 20, HazardClass.GAS_LUNG, false))); @@ -570,7 +586,7 @@ public class Fluids { double eff_steam_boil = 1.0D; double eff_steam_heatex = 0.25D; - + WATER.addTraits(new FT_Heatable().setEff(HeatingType.BOILER, eff_steam_boil).setEff(HeatingType.HEATEXCHANGER, eff_steam_heatex) .addStep(200, 1, STEAM, 100) .addStep(220, 1, HOTSTEAM, 10) @@ -600,29 +616,38 @@ public class Fluids { COOLANT.addTraits(new FT_Heatable().setEff(HeatingType.HEATEXCHANGER, 1.0D).setEff(HeatingType.PWR, 1.0D).setEff(HeatingType.ICF, 1.0D).addStep(300, 1, COOLANT_HOT, 1)); COOLANT_HOT.addTraits(new FT_Coolable(COOLANT, 1, 1, 300).setEff(CoolingType.HEATEXCHANGER, 1.0D)); - + + PERFLUOROMETHYL_COLD.addTraits(new FT_Heatable().setEff(HeatingType.PA, 1.0D).addStep(300, 1, PERFLUOROMETHYL, 1)); + PERFLUOROMETHYL.addTraits(new FT_Heatable().setEff(HeatingType.HEATEXCHANGER, 1.0D).setEff(HeatingType.PWR, 1.0D).setEff(HeatingType.ICF, 1.0D).addStep(300, 1, PERFLUOROMETHYL_HOT, 1)); + PERFLUOROMETHYL_HOT.addTraits(new FT_Coolable(PERFLUOROMETHYL, 1, 1, 300).setEff(CoolingType.HEATEXCHANGER, 1.0D)); + MUG.addTraits(new FT_Heatable().setEff(HeatingType.HEATEXCHANGER, 1.0D).setEff(HeatingType.PWR, 1.0D).setEff(HeatingType.ICF, 1.25D).addStep(400, 1, MUG_HOT, 1), new FT_PWRModerator(1.15D)); MUG_HOT.addTraits(new FT_Coolable(MUG, 1, 1, 400).setEff(CoolingType.HEATEXCHANGER, 1.0D)); - + BLOOD.addTraits(new FT_Heatable().setEff(HeatingType.HEATEXCHANGER, 1.0D).setEff(HeatingType.ICF, 1.25D).addStep(500, 1, BLOOD_HOT, 1)); BLOOD_HOT.addTraits(new FT_Coolable(BLOOD, 1, 1, 500).setEff(CoolingType.HEATEXCHANGER, 1.0D)); - + HEAVYWATER.addTraits(new FT_Heatable().setEff(HeatingType.PWR, 1.0D).addStep(300, 1, HEAVYWATER_HOT, 1), new FT_PWRModerator(1.25D)); HEAVYWATER_HOT.addTraits(new FT_Coolable(HEAVYWATER, 1, 1, 300).setEff(CoolingType.HEATEXCHANGER, 1.0D)); - + SODIUM.addTraits(new FT_Heatable().setEff(HeatingType.PWR, 2.5D).setEff(HeatingType.ICF, 3D).addStep(400, 1, SODIUM_HOT, 1)); SODIUM_HOT.addTraits(new FT_Coolable(SODIUM, 1, 1, 400).setEff(CoolingType.HEATEXCHANGER, 1.0D)); - + /* Fuck you, this is final now. If you had any concerns, you could have told me like a normal person instead of shitting on in-dev values that change every other day */ + LEAD.addTraits(new FT_Heatable().setEff(HeatingType.PWR, 0.75D).setEff(HeatingType.ICF, 4D).addStep(800, 1, LEAD_HOT, 1), new FT_PWRModerator(0.75D)); + /* Or maybe not, because I blocked your sorry ass. Guess why that is? */ + LEAD_HOT.addTraits(new FT_Coolable(LEAD, 1, 1, 680).setEff(CoolingType.HEATEXCHANGER, 1.0D)); + /* Maybe shittalking me in some corner where you thought I wouldn't listen was not that bright of an idea afterall? */ + THORIUM_SALT.addTraits(new FT_Heatable().setEff(HeatingType.PWR, 1.0D).addStep(400, 1, THORIUM_SALT_HOT, 1), new FT_PWRModerator(2.5D)); THORIUM_SALT_HOT.addTraits(new FT_Coolable(THORIUM_SALT_DEPLETED, 1, 1, 400).setEff(CoolingType.HEATEXCHANGER, 1.0D)); - + if(idMapping.size() != metaOrder.size()) { throw new IllegalStateException("A severe error has occoured during NTM's fluid registering process! The MetaOrder and Mappings are inconsistent! Mapping size: " + idMapping.size()+ " / MetaOrder size: " + metaOrder.size()); } - - + + /// FINAL /// - + long baseline = 100_000L; //we do not know double demandVeryLow = 0.5D; //for waste gasses double demandLow = 1.0D; //for fuel oils @@ -684,11 +709,11 @@ public class Fluids { registerCalculatedFuel(DIESEL_CRACK_REFORM, DIESEL_CRACK.getTrait(FT_Flammable.class).getHeatEnergy() * complexityReform, 2.5D, FuelGrade.HIGH); registerCalculatedFuel(KEROSENE_REFORM, KEROSENE.getTrait(FT_Flammable.class).getHeatEnergy() * complexityReform, 1.5D, FuelGrade.AERO); registerCalculatedFuel(REFORMGAS, (baseline / 0.06 * flammabilityHigh * demandLow * complexityVacuum * complexityFraction), 1.5D, FuelGrade.GAS); - + //all hail the spreadsheet //the spreadsheet must not be questioned //none may enter the orb- i mean the spreadsheet - + int coalHeat = 400_000; // 200TU/t for 2000 ticks registerCalculatedFuel(COALOIL, (coalHeat * (1000 /* bucket */ / 100 /* mB per coal */) * flammabilityLow * demandLow * complexityChemplant), 0, null); long coaloil = COALOIL.getTrait(FT_Flammable.class).getHeatEnergy(); @@ -710,24 +735,24 @@ public class Fluids { registerCalculatedFuel(SYNGAS, (coalHeat * (1000 /* bucket */ / 100 /* mB per coal */) * flammabilityLow * demandLow * complexityChemplant) * 1.5, 1.25, FuelGrade.GAS); //same as coal oil, +50% bonus registerCalculatedFuel(OXYHYDROGEN, 5_000, 3, FuelGrade.GAS); // whatever - + File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmFluidTraits.json"); File template = new File(folder.getAbsolutePath() + File.separatorChar + "_hbmFluidTraits.json"); - + if(!config.exists()) { writeDefaultTraits(template); } else { readTraits(config); } } - + private static void initDefaultFluids(File file) { - + try { JsonWriter writer = new JsonWriter(new FileWriter(file)); writer.setIndent(" "); writer.beginObject(); - + writer.name("CUSTOM_DEMO").beginObject(); writer.name("name").value("Custom Fluid Demo"); writer.name("id").value(1000); @@ -738,21 +763,21 @@ public class Fluids { writer.name("texture").value("custom_water"); writer.name("temperature").value(20); writer.endObject(); - + writer.endObject(); writer.close(); } catch(IOException e) { e.printStackTrace(); } } - + private static void readCustomFluids(File file) { - + try { JsonObject json = gson.fromJson(new FileReader(file), JsonObject.class); - + for(Entry entry : json.entrySet()) { - + JsonObject obj = (JsonObject) entry.getValue(); String name = entry.getKey(); @@ -766,54 +791,54 @@ public class Fluids { EnumSymbol symbol = EnumSymbol.valueOf(obj.get("symbol").getAsString()); String texture = obj.get("texture").getAsString(); int temperature = obj.get("temperature").getAsInt(); - + FluidType type = new FluidType(name, color, p, f, r, symbol, texture, tint, id, displayName).setTemp(temperature); customFluids.add(type); } - + } catch(Exception ex) { ex.printStackTrace(); } } - + private static void writeDefaultTraits(File file) { try { JsonWriter writer = new JsonWriter(new FileWriter(file)); writer.setIndent(" "); writer.beginObject(); - + for(FluidType type : metaOrder) { writer.name(type.getName()).beginObject(); - + for(Entry, FluidTrait> entry : type.traits.entrySet()) { writer.name(FluidTrait.traitNameMap.inverse().get(entry.getKey())).beginObject(); entry.getValue().serializeJSON(writer); writer.endObject(); } - + writer.endObject(); } - + writer.endObject(); writer.close(); } catch(IOException e) { e.printStackTrace(); } } - + private static void readTraits(File config) { - + try { JsonObject json = gson.fromJson(new FileReader(config), JsonObject.class); - + for(FluidType type : metaOrder) { - + JsonElement element = json.get(type.getName()); if(element != null) { type.traits.clear(); JsonObject obj = element.getAsJsonObject(); - + for(Entry entry : obj.entrySet()) { Class traitClass = FluidTrait.traitNameMap.get(entry.getKey()); try { @@ -826,14 +851,36 @@ public class Fluids { } } } - + } catch(Exception ex) { ex.printStackTrace(); } } - + public static void reloadFluids(){ + File folder = MainRegistry.configHbmDir; + File customTypes = new File(folder.getAbsolutePath() + File.separatorChar + "hbmFluidTypes.json"); + if(!customTypes.exists()) initDefaultFluids(customTypes); + for(FluidType type : customFluids){ + idMapping.remove(type.getID()); + registerOrder.remove(type); + nameMapping.remove(type.getName()); + metaOrder.remove(type); + } + customFluids.clear(); + readCustomFluids(customTypes); + for(FluidType custom : customFluids) metaOrder.add(custom); + File config = new File(MainRegistry.configHbmDir.getAbsolutePath() + File.separatorChar + "hbmFluidTraits.json"); + File template = new File(MainRegistry.configHbmDir.getAbsolutePath() + File.separatorChar + "_hbmFluidTraits.json"); + + if(!config.exists()) { + writeDefaultTraits(template); + } else { + readTraits(config); + } + BoilingHandler.isReload=true; + } private static void registerCalculatedFuel(FluidType type, double base, double combustMult, FuelGrade grade) { - + long flammable = (long) base; long combustible = (long) (base * combustMult); @@ -841,11 +888,11 @@ public class Fluids { combustible = round(combustible); type.addTraits(new FT_Flammable(flammable)); - + if(combustible > 0 && grade != null) type.addTraits(new FT_Combustible(grade, combustible)); } - + /** ugly but it does the thing well enough */ private static long round(long l) { if(l > 10_000_000L) return l - (l % 100_000L); @@ -853,10 +900,10 @@ public class Fluids { if(l > 100_000L) return l - (l % 1_000L); if(l > 10_000L) return l - (l % 100L); if(l > 1_000L) return l - (l % 10L); - + return l; } - + protected static int registerSelf(FluidType fluid) { int id = idMapping.size(); idMapping.put(id, fluid); @@ -864,90 +911,90 @@ public class Fluids { nameMapping.put(fluid.getName(), fluid); return id; } - + protected static void register(FluidType fluid, int id) { idMapping.put(id, fluid); registerOrder.add(fluid); nameMapping.put(fluid.getName(), fluid); } - + public static FluidType fromID(int id) { FluidType fluid = idMapping.get(id); - + if(fluid == null) fluid = Fluids.NONE; - + return fluid; } - + public static FluidType fromName(String name) { FluidType fluid = nameMapping.get(name); - + if(fluid == null) fluid = Fluids.NONE; - + return fluid; } - + /** for old worlds with types saved as name, do not use otherwise */ public static FluidType fromNameCompat(String name) { if(renameMapping.containsKey(name)) { FluidType fluid = renameMapping.get(name); - + if(fluid == null) //null safety never killed nobody fluid = Fluids.NONE; - + return fluid; } - + return fromName(name); } - + /** basically the inverse of the above method */ public static String toNameCompat(FluidType type) { if(renameMapping.containsValue(type)) { String name = renameMapping.inverse().get(type); - + if(name == null) //ditto name = Fluids.NONE.getName(); - + return name; } - + return type.getName(); } - + public static FluidType[] getAll() { return getInOrder(false); } - + public static FluidType[] getInNiceOrder() { return getInOrder(true); } - + private static FluidType[] getInOrder(final boolean nice) { FluidType[] all = new FluidType[idMapping.size()]; - + for(int i = 0; i < all.length; i++) { FluidType type = nice ? metaOrder.get(i) : registerOrder.get(i); - + if(type == null) { throw new IllegalStateException("A severe error has occoured with NTM's fluid system! Fluid of the ID " + i + " has returned NULL in the registry!"); } - + all[i] = type; } - + return all; } - + public static class CD_Canister { public int color; public CD_Canister(int color) { this.color = color; } } - + public static class CD_Gastank { public int bottleColor, labelColor; public CD_Gastank(int color1, int color2) { this.bottleColor = color1; this.labelColor = color2; } } -} \ No newline at end of file +} diff --git a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java index 135582280..dbc23d138 100644 --- a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java +++ b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java @@ -12,7 +12,10 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.gui.GuiInfoContainer; import com.hbm.items.ModItems; import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.util.BobMathUtil; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.Tessellator; @@ -183,11 +186,11 @@ public class FluidTank { * @param width * @param height */ - public void renderTank(int x, int y, double z, int width, int height) { + @SideOnly(Side.CLIENT) public void renderTank(int x, int y, double z, int width, int height) { renderTank(x, y, z, width, height, 0); } - public void renderTank(int x, int y, double z, int width, int height, int orientation) { + @SideOnly(Side.CLIENT) public void renderTank(int x, int y, double z, int width, int height, int orientation) { GL11.glEnable(GL11.GL_BLEND); @@ -242,7 +245,7 @@ public class FluidTank { GL11.glDisable(GL11.GL_BLEND); } - public void renderTankInfo(GuiInfoContainer gui, int mouseX, int mouseY, int x, int y, int width, int height) { + @SideOnly(Side.CLIENT) public void renderTankInfo(GuiInfoContainer gui, int mouseX, int mouseY, int x, int y, int width, int height) { if(x <= mouseX && x + width > mouseX && y < mouseY && y + height >= mouseY) { List list = new ArrayList(); @@ -251,6 +254,7 @@ public class FluidTank { if(this.pressure != 0) { list.add(EnumChatFormatting.RED + "Pressure: " + this.pressure + " PU"); + list.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_RED) + "Pressurized, use compressor!"); } type.addInfo(list); diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java index 87f595015..3e57ac963 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java @@ -42,7 +42,7 @@ public class FT_Coolable extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.RED + "Thermal capacity: " + heatEnergy + " TU"); + info.add(EnumChatFormatting.RED + "Thermal capacity: " + heatEnergy + " TU per " + amountReq + "mB"); for(CoolingType type : CoolingType.values()) { double eff = getEfficiency(type); diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java index 0ec79abb7..f51d64ab8 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java @@ -42,7 +42,7 @@ public class FT_Heatable extends FluidTrait { @Override public void addInfoHidden(List info) { - info.add(EnumChatFormatting.RED + "Thermal capacity: " + this.getFirstStep().heatReq + " TU"); + info.add(EnumChatFormatting.RED + "Thermal capacity: " + this.getFirstStep().heatReq + " TU per " + this.getFirstStep().amountReq + "mB"); for(HeatingType type : HeatingType.values()) { double eff = getEfficiency(type); @@ -71,7 +71,8 @@ public class FT_Heatable extends FluidTrait { BOILER("Boilable"), HEATEXCHANGER("Heatable"), PWR("PWR Coolant"), - ICF("ICF Coolant"); + ICF("ICF Coolant"), + PA("Particle Accelerator Coolant"); public String name; diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_PWRModerator.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_PWRModerator.java index 65386405a..26f254e54 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_PWRModerator.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_PWRModerator.java @@ -11,15 +11,15 @@ import net.minecraft.util.EnumChatFormatting; public class FT_PWRModerator extends FluidTrait { private double multiplier; - + public FT_PWRModerator(){} public FT_PWRModerator(double mulitplier) { this.multiplier = mulitplier; } - + public double getMultiplier() { return multiplier; } - + @Override public void addInfo(List info) { info.add(EnumChatFormatting.BLUE + "[PWR Flux Multiplier]"); @@ -35,7 +35,7 @@ public class FT_PWRModerator extends FluidTrait { public void serializeJSON(JsonWriter writer) throws IOException { writer.name("multiplier").value(multiplier); } - + @Override public void deserializeJSON(JsonObject obj) { this.multiplier = obj.get("multiplier").getAsDouble(); diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Pheromone.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Pheromone.java index 52e467d6f..123b2751b 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Pheromone.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Pheromone.java @@ -11,6 +11,7 @@ import java.util.List; public class FT_Pheromone extends FluidTrait{ public int type; + public FT_Pheromone() {} public FT_Pheromone(int type) { this.type = type; diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Polluting.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Polluting.java index 457c5b639..79103bc68 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Polluting.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Polluting.java @@ -20,12 +20,12 @@ public class FT_Polluting extends FluidTrait { //original draft had both of them inside a hashmap for the release type but honestly handling hash maps in hash maps adds more complexity than it removes public HashMap releaseMap = new HashMap(); public HashMap burnMap = new HashMap(); - + public FT_Polluting release(PollutionType type, float amount) { releaseMap.put(type, amount); return this; } - + public FT_Polluting burn(PollutionType type, float amount) { burnMap.put(type, amount); return this; @@ -38,12 +38,12 @@ public class FT_Polluting extends FluidTrait { @Override public void addInfoHidden(List info) { - + if(!this.releaseMap.isEmpty()) { info.add(EnumChatFormatting.GREEN + "When spilled:"); for(Entry entry : releaseMap.entrySet()) info.add(EnumChatFormatting.GREEN + " - " + entry.getValue() + " " + entry.getKey() + " per mB"); } - + if(!this.burnMap.isEmpty()) { info.add(EnumChatFormatting.RED + "When burned:"); for(Entry entry : burnMap.entrySet()) info.add(EnumChatFormatting.RED + " - " + entry.getValue() + " " + entry.getKey() + " per mB"); @@ -60,16 +60,16 @@ public class FT_Polluting extends FluidTrait { public void serializeJSON(JsonWriter writer) throws IOException { writer.name("release").beginObject(); for(Entry entry : releaseMap.entrySet()) { - writer.name(entry.toString()).value(entry.getValue()); + writer.name(entry.getKey().name()).value(entry.getValue()); } writer.endObject(); writer.name("burn").beginObject(); for(Entry entry : burnMap.entrySet()) { - writer.name(entry.toString()).value(entry.getValue()); + writer.name(entry.getKey().name()).value(entry.getValue()); } writer.endObject(); } - + @Override public void deserializeJSON(JsonObject obj) { if(obj.has("release")) { @@ -89,14 +89,14 @@ public class FT_Polluting extends FluidTrait { } } } - + public static void pollute(World world, int x, int y, int z, FluidType type, FluidReleaseType release, float mB) { FT_Polluting trait = type.getTrait(FT_Polluting.class); if(trait == null) return; if(release == FluidReleaseType.VOID) return; - + HashMap map = release == FluidReleaseType.BURN ? trait.burnMap : trait.releaseMap; - + for(Entry entry : map.entrySet()) { PollutionHandler.incrementPollution(world, x, y, z, entry.getKey(), entry.getValue() * mB); } diff --git a/src/main/java/com/hbm/inventory/gui/GUIAnvil.java b/src/main/java/com/hbm/inventory/gui/GUIAnvil.java index 2b9bbe7ea..9a59e9b29 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIAnvil.java +++ b/src/main/java/com/hbm/inventory/gui/GUIAnvil.java @@ -17,8 +17,8 @@ import com.hbm.inventory.recipes.anvil.AnvilRecipes; import com.hbm.inventory.recipes.anvil.AnvilRecipes.AnvilConstructionRecipe; import com.hbm.inventory.recipes.anvil.AnvilRecipes.AnvilOutput; import com.hbm.lib.RefStrings; -import com.hbm.packet.AnvilCraftPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AnvilCraftPacket; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.FontRenderer; @@ -119,24 +119,6 @@ public class GUIAnvil extends GuiContainer { this.size = Math.max(0, (int)Math.ceil((this.recipes.size() - 10) / 2D)); } - /*@Override - protected void mouseMovedOrUp(int x, int y, int mode) { - super.mouseMovedOrUp(x, y, mode); - - if(mode == -1) return; // we don't care about mouseMove - for(Object obj : this.inventorySlots.inventorySlots) { - Slot slot = (Slot) obj; - - // if the mouse is over a slot, cancel - if(this.func_146978_c(slot.xDisplayPosition, slot.yDisplayPosition, 16, 16, x, y)) { - return; - } - } - - if(mode == 0 && this.index > 0) this.index--; - if(mode == 1 && this.index < this.size) this.index++; - }*/ - @Override public void drawScreen(int x, int y, float interp) { super.drawScreen(x, y, interp); diff --git a/src/main/java/com/hbm/inventory/gui/GUIAutocrafter.java b/src/main/java/com/hbm/inventory/gui/GUIAutocrafter.java index d1d04592d..49ed13445 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIAutocrafter.java +++ b/src/main/java/com/hbm/inventory/gui/GUIAutocrafter.java @@ -4,6 +4,7 @@ import java.util.Arrays; import org.lwjgl.opengl.GL11; +import com.hbm.interfaces.NotableComments; import com.hbm.inventory.container.ContainerAutocrafter; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityMachineAutocrafter; @@ -15,6 +16,7 @@ import net.minecraft.inventory.Slot; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.ResourceLocation; +@NotableComments public class GUIAutocrafter extends GuiInfoContainer { private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_autocrafter.png"); diff --git a/src/main/java/com/hbm/inventory/gui/GUIBarrel.java b/src/main/java/com/hbm/inventory/gui/GUIBarrel.java index e739e81d6..bba645724 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIBarrel.java +++ b/src/main/java/com/hbm/inventory/gui/GUIBarrel.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerBarrel; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.storage.TileEntityBarrel; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUICasingBag.java b/src/main/java/com/hbm/inventory/gui/GUICasingBag.java new file mode 100644 index 000000000..413c47613 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUICasingBag.java @@ -0,0 +1,51 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerCasingBag; +import com.hbm.items.tool.ItemCasingBag.InventoryCasingBag; +import com.hbm.lib.RefStrings; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUICasingBag extends GuiContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_casing_bag.png"); + private final InventoryCasingBag inventory; + + public GUICasingBag(InventoryPlayer invPlayer, InventoryCasingBag bag) { + super(new ContainerCasingBag(invPlayer, bag)); + this.inventory = bag; + + this.xSize = 176; + this.ySize = 186; + } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = I18n.format(this.inventory.getInventoryName()); + + if(inventory.hasCustomInventoryName()) { + name = inventory.box.getDisplayName(); + } + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xffffff); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 98, 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/gui/GUICombustionEngine.java b/src/main/java/com/hbm/inventory/gui/GUICombustionEngine.java index dc8f89785..d75127785 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICombustionEngine.java +++ b/src/main/java/com/hbm/inventory/gui/GUICombustionEngine.java @@ -9,8 +9,8 @@ import com.hbm.inventory.fluid.trait.FT_Combustible; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemPistons.EnumPistonType; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineCombustionEngine; import com.hbm.util.EnumUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUICompressor.java b/src/main/java/com/hbm/inventory/gui/GUICompressor.java index 66e72609b..9e2d4aa51 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICompressor.java +++ b/src/main/java/com/hbm/inventory/gui/GUICompressor.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCompressor; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineCompressor; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUICoreEmitter.java b/src/main/java/com/hbm/inventory/gui/GUICoreEmitter.java index e8ac99bda..89502cc38 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICoreEmitter.java +++ b/src/main/java/com/hbm/inventory/gui/GUICoreEmitter.java @@ -6,8 +6,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCoreEmitter; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.TileEntityCoreEmitter; import com.hbm.util.BobMathUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUICoreStabilizer.java b/src/main/java/com/hbm/inventory/gui/GUICoreStabilizer.java index 99c6fb2be..30ec1aa1d 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICoreStabilizer.java +++ b/src/main/java/com/hbm/inventory/gui/GUICoreStabilizer.java @@ -6,8 +6,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCoreStabilizer; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.TileEntityCoreStabilizer; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUICounterTorch.java b/src/main/java/com/hbm/inventory/gui/GUICounterTorch.java index b4c4dd7b2..6a066a684 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICounterTorch.java +++ b/src/main/java/com/hbm/inventory/gui/GUICounterTorch.java @@ -7,8 +7,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCounterTorch; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityRadioTorchCounter; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUICraneBoxer.java b/src/main/java/com/hbm/inventory/gui/GUICraneBoxer.java index e2faf5fa4..80dc88555 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICraneBoxer.java +++ b/src/main/java/com/hbm/inventory/gui/GUICraneBoxer.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCraneBoxer; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityCraneBoxer; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java b/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java index e6937c829..7e8f74ab0 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java +++ b/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java @@ -6,8 +6,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCraneExtractor; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityCraneExtractor; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUICraneGrabber.java b/src/main/java/com/hbm/inventory/gui/GUICraneGrabber.java index ef1465205..6bff412fc 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICraneGrabber.java +++ b/src/main/java/com/hbm/inventory/gui/GUICraneGrabber.java @@ -6,8 +6,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCraneGrabber; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityCraneGrabber; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUICraneInserter.java b/src/main/java/com/hbm/inventory/gui/GUICraneInserter.java index 28813d9ae..a4890ae00 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICraneInserter.java +++ b/src/main/java/com/hbm/inventory/gui/GUICraneInserter.java @@ -4,11 +4,15 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCraneInserter; import com.hbm.lib.RefStrings; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityCraneInserter; import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; public class GUICraneInserter extends GuiInfoContainer { @@ -23,11 +27,23 @@ public class GUICraneInserter extends GuiInfoContainer { this.xSize = 176; this.ySize = 185; } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 151 <= x && guiLeft + 151 + 18 > x && guiTop + 34 < y && guiTop + 34 + 18 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("destroyer", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, inserter.xCoord, inserter.yCoord, inserter.zCoord)); + } + } @Override protected void drawGuiContainerForegroundLayer(int i, int j) { String name = this.inserter.hasCustomInventoryName() ? this.inserter.getInventoryName() : I18n.format(this.inserter.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 18, 5, 4210752); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); } @@ -36,5 +52,8 @@ public class GUICraneInserter extends GuiInfoContainer { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(inserter.destroyer) + drawTexturedModalRect(guiLeft + 151, guiTop + 34, 176, 0, 18, 18); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUICraneRouter.java b/src/main/java/com/hbm/inventory/gui/GUICraneRouter.java index f378237df..77798355b 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICraneRouter.java +++ b/src/main/java/com/hbm/inventory/gui/GUICraneRouter.java @@ -8,8 +8,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCraneRouter; import com.hbm.lib.RefStrings; import com.hbm.module.ModulePatternMatcher; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityCraneRouter; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIDroneCrate.java b/src/main/java/com/hbm/inventory/gui/GUIDroneCrate.java index cd99405b4..4e98d7c4a 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIDroneCrate.java +++ b/src/main/java/com/hbm/inventory/gui/GUIDroneCrate.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerDroneCrate; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityDroneCrate; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIElectrolyserFluid.java b/src/main/java/com/hbm/inventory/gui/GUIElectrolyserFluid.java index 914228045..32a547130 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIElectrolyserFluid.java +++ b/src/main/java/com/hbm/inventory/gui/GUIElectrolyserFluid.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerElectrolyserFluid; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityElectrolyser; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIElectrolyserMetal.java b/src/main/java/com/hbm/inventory/gui/GUIElectrolyserMetal.java index 3e4eabfd9..670acabb0 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIElectrolyserMetal.java +++ b/src/main/java/com/hbm/inventory/gui/GUIElectrolyserMetal.java @@ -8,8 +8,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerElectrolyserMetal; import com.hbm.inventory.material.Mats; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityElectrolyser; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIFEL.java b/src/main/java/com/hbm/inventory/gui/GUIFEL.java index 890cb3299..443c01cac 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIFEL.java +++ b/src/main/java/com/hbm/inventory/gui/GUIFEL.java @@ -7,8 +7,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerFEL; import com.hbm.items.machine.ItemFELCrystal.EnumWavelengths; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.TileEntityFEL; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIForceField.java b/src/main/java/com/hbm/inventory/gui/GUIForceField.java index 506541074..e18aca9f1 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIForceField.java +++ b/src/main/java/com/hbm/inventory/gui/GUIForceField.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerForceField; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.TileEntityForceField; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIFunnel.java b/src/main/java/com/hbm/inventory/gui/GUIFunnel.java index 817be3b10..80fd75371 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIFunnel.java +++ b/src/main/java/com/hbm/inventory/gui/GUIFunnel.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerFunnel; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineFunnel; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIHadron.java b/src/main/java/com/hbm/inventory/gui/GUIHadron.java index b39db1804..92d97a872 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIHadron.java +++ b/src/main/java/com/hbm/inventory/gui/GUIHadron.java @@ -8,8 +8,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerHadron; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.TileEntityHadron; import com.hbm.tileentity.machine.TileEntityHadron.EnumHadronState; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIHeaterHeatex.java b/src/main/java/com/hbm/inventory/gui/GUIHeaterHeatex.java index a5a2a781f..d4eefef9a 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIHeaterHeatex.java +++ b/src/main/java/com/hbm/inventory/gui/GUIHeaterHeatex.java @@ -8,8 +8,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerHeaterHeatex; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityHeaterHeatex; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIICF.java b/src/main/java/com/hbm/inventory/gui/GUIICF.java index 4569fed1d..0effa9b4d 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIICF.java +++ b/src/main/java/com/hbm/inventory/gui/GUIICF.java @@ -32,7 +32,7 @@ public class GUIICF extends GuiInfoContainer { icf.tanks[1].renderTankInfo(this, x, y, guiLeft + 188, guiTop + 18, 16, 70); icf.tanks[2].renderTankInfo(this, x, y, guiLeft + 224, guiTop + 18, 16, 70); - this.drawCustomInfoStat(x, y, guiLeft + 8, guiTop + 18, 16, 70, x, y, icf.maxLaser <= 0 ? "OFFLINE" : (BobMathUtil.getShortNumber(icf.laser) + "TU - " + (icf.laser * 1000 / icf.maxLaser) / 10D + "%")); + this.drawCustomInfoStat(x, y, guiLeft + 8, guiTop + 18, 16, 70, x, y, icf.maxLaser <= 0 ? "OFFLINE" : (BobMathUtil.getShortNumber(icf.laser) + "TU/t - " + (icf.laser * 1000 / icf.maxLaser) / 10D + "%")); this.drawCustomInfoStat(x, y, guiLeft + 187, guiTop + 89, 18, 18, x, y, BobMathUtil.getShortNumber(icf.heat) + " / " + BobMathUtil.getShortNumber(icf.maxHeat) + "TU"); } diff --git a/src/main/java/com/hbm/inventory/gui/GUIITER.java b/src/main/java/com/hbm/inventory/gui/GUIITER.java index 4e9b1d85c..27f78ff5d 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIITER.java +++ b/src/main/java/com/hbm/inventory/gui/GUIITER.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerITER; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.TileEntityITER; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUILaunchPadRusted.java b/src/main/java/com/hbm/inventory/gui/GUILaunchPadRusted.java index a90bd4799..d3bf1c87f 100644 --- a/src/main/java/com/hbm/inventory/gui/GUILaunchPadRusted.java +++ b/src/main/java/com/hbm/inventory/gui/GUILaunchPadRusted.java @@ -10,8 +10,8 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.container.ContainerLaunchPadRusted; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.render.item.ItemRenderMissileGeneric; import com.hbm.tileentity.bomb.TileEntityLaunchPadRusted; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineAmmoPress.java b/src/main/java/com/hbm/inventory/gui/GUIMachineAmmoPress.java new file mode 100644 index 000000000..94c5499c9 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineAmmoPress.java @@ -0,0 +1,305 @@ +package com.hbm.inventory.gui; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import org.lwjgl.input.Keyboard; +import org.lwjgl.input.Mouse; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.container.ContainerMachineAmmoPress; +import com.hbm.inventory.recipes.AmmoPressRecipes; +import com.hbm.inventory.recipes.AmmoPressRecipes.AmmoPressRecipe; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; +import com.hbm.tileentity.machine.TileEntityMachineAmmoPress; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.GuiTextField; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineAmmoPress extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_ammo_press.png"); + private TileEntityMachineAmmoPress press; + + private List recipes = new ArrayList(); + int index; + int size; + int selection; + private GuiTextField search; + + public GUIMachineAmmoPress(InventoryPlayer invPlayer, TileEntityMachineAmmoPress press) { + super(new ContainerMachineAmmoPress(invPlayer, press)); + this.press = press; + + this.xSize = 176; + this.ySize = 200; + + this.selection = press.selectedRecipe; + + regenerateRecipes(); + } + + @Override + public void initGui() { + + super.initGui(); + + Keyboard.enableRepeatEvents(true); + this.search = new GuiTextField(this.fontRendererObj, guiLeft + 10, guiTop + 75, 66, 12); + this.search.setTextColor(-1); + this.search.setDisabledTextColour(-1); + this.search.setEnableBackgroundDrawing(false); + this.search.setMaxStringLength(25); + } + + private void regenerateRecipes() { + + this.recipes.clear(); + this.recipes.addAll(AmmoPressRecipes.recipes); + + resetPaging(); + } + + private void search(String search) { + + search = search.toLowerCase(Locale.US); + + this.recipes.clear(); + + if(search.isEmpty()) { + this.recipes.addAll(AmmoPressRecipes.recipes); + + } else { + for(AmmoPressRecipe recipe : AmmoPressRecipes.recipes) { + if(recipe.output.getDisplayName().toLowerCase(Locale.US).contains(search)) { + this.recipes.add(recipe); + } + } + } + + resetPaging(); + } + + private void resetPaging() { + + this.index = 0; + this.size = Math.max(0, (int)Math.ceil((this.recipes.size() - 12) / 3D)); + } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + + for(Object obj : this.inventorySlots.inventorySlots) { + Slot slot = (Slot) obj; + + // if the mouse is over a slot, cancel + if(this.func_146978_c(slot.xDisplayPosition, slot.yDisplayPosition, 16, 16, x, y) && slot.getHasStack()) { + return; + } + } + + if(guiLeft <= x && guiLeft + xSize > x && guiTop < y && guiTop + ySize >= y && getSlotAtPosition(x, y) == null) { + if(!Mouse.isButtonDown(0) && !Mouse.isButtonDown(1) && Mouse.next()) { + int scroll = Mouse.getEventDWheel(); + + if(scroll > 0 && this.index > 0) this.index--; + if(scroll < 0 && this.index < this.size) this.index++; + } + } + + for(int i = index * 3; i < index * 3 + 12; i++) { + + if(i >= this.recipes.size()) + break; + + int ind = i - index * 3; + + int ix = 16 + 18 * (ind / 3); + int iy = 17 + 18 * (ind % 3); + if(guiLeft + ix <= x && guiLeft + ix + 18 > x && guiTop + iy < y && guiTop + iy + 18 >= y) { + AmmoPressRecipe recipe = this.recipes.get(i); + this.renderToolTip(recipe.output, x, y); + } + } + } + + @Override + protected void mouseClicked(int x, int y, int k) { + super.mouseClicked(x, y, k); + + this.search.mouseClicked(x, y, k); + + if(guiLeft + 7 <= x && guiLeft + 7 + 9 > x && guiTop + 17 < y && guiTop + 17 + 54 >= y) { + click(); + if(this.index > 0) this.index--; + return; + } + + if(guiLeft + 88 <= x && guiLeft + 88 + 9 > x && guiTop + 17 < y && guiTop + 17 + 54 >= y) { + click(); + if(this.index < this.size) this.index++; + return; + } + + for(int i = index * 3; i < index * 3 + 12; i++) { + + if(i >= this.recipes.size()) + break; + + int ind = i - index * 3; + + int ix = 16 + 18 * (ind / 3); + int iy = 17 + 18 * (ind % 3); + if(guiLeft + ix <= x && guiLeft + ix + 18 > x && guiTop + iy < y && guiTop + iy + 18 >= y) { + + int newSelection = AmmoPressRecipes.recipes.indexOf(this.recipes.get(i)); + + if(this.selection != newSelection) + this.selection = newSelection; + else + this.selection = -1; + + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("selection", this.selection); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, press.xCoord, press.yCoord, press.zCoord)); + click(); + return; + } + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.press.hasCustomInventoryName() ? this.press.getInventoryName() : I18n.format(this.press.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xffffff); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(guiLeft + 7 <= x && guiLeft + 7 + 9 > x && guiTop + 17 < y && guiTop + 17 + 54 >= y) { + drawTexturedModalRect(guiLeft + 7, guiTop + 17, 176, 0, 9, 54); + } + if(guiLeft + 88 <= x && guiLeft + 88 + 9 > x && guiTop + 17 < y && guiTop + 17 + 54 >= y) { + drawTexturedModalRect(guiLeft + 88, guiTop + 17, 185, 0, 9, 54); + } + + if(this.search.isFocused()) { + drawTexturedModalRect(guiLeft + 8, guiTop + 72, 176, 54, 70, 16); + } + + for(int i = index * 3; i < index * 3 + 12; i++) { + if(i >= recipes.size()) + break; + + int ind = i - index * 3; + + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + RenderHelper.enableGUIStandardItemLighting(); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + + AmmoPressRecipe recipe = recipes.get(i); + + FontRenderer font = null; + if(recipe.output != null) font = recipe.output.getItem().getFontRenderer(recipe.output); + if(font == null) font = fontRendererObj; + + itemRender.zLevel = 100.0F; + itemRender.renderItemAndEffectIntoGUI(font, this.mc.getTextureManager(), recipe.output, guiLeft + 17 + 18 * (ind / 3), guiTop + 18 + 18 * (ind % 3)); + + itemRender.zLevel = 0.0F; + + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glDisable(GL11.GL_LIGHTING); + this.mc.getTextureManager().bindTexture(texture); + this.zLevel = 300.0F; + + if(selection == AmmoPressRecipes.recipes.indexOf(this.recipes.get(i))) + this.drawTexturedModalRect(guiLeft + 16 + 18 * (ind / 3), guiTop + 17 + 18 * (ind % 3), 194, 0, 18, 18); + else + this.drawTexturedModalRect(guiLeft + 16 + 18 * (ind / 3), guiTop + 17 + 18 * (ind % 3), 212, 0, 18, 18); + + GL11.glPushMatrix(); + GL11.glTranslated(guiLeft + 17 + 18 * (ind / 3) + 8, guiTop + 18 + 18 * (ind % 3) + 8, 0); + GL11.glScaled(0.5, 0.5, 1); + itemRender.renderItemOverlayIntoGUI(font, this.mc.getTextureManager(), recipe.output, 0, 0, recipe.output.stackSize + ""); + GL11.glPopMatrix(); + } + + if(selection >= 0 && selection < AmmoPressRecipes.recipes.size()) { + AmmoPressRecipe recipe = AmmoPressRecipes.recipes.get(selection); + + for(int i = 0; i < 9; i++) { + AStack stack = recipe.input[i]; + if(stack == null) continue; + if(press.slots[i] != null) continue; + List inputs = stack.extractForNEI(); + ItemStack input = inputs.size() <= 0 ? new ItemStack(ModItems.nothing) : inputs.get((int) (Math.abs(System.currentTimeMillis() / 1000) % inputs.size())); + + RenderHelper.enableGUIStandardItemLighting(); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + + FontRenderer font = input.getItem().getFontRenderer(input); + if(font == null) font = fontRendererObj; + + itemRender.zLevel = 10.0F; + itemRender.renderItemAndEffectIntoGUI(font, this.mc.getTextureManager(), input, guiLeft + 116 + 18 * (i % 3), guiTop + 18 + 18 * (i / 3)); + itemRender.renderItemOverlayIntoGUI(font, this.mc.getTextureManager(), input, guiLeft + 116 + 18 * (i % 3), guiTop + 18 + 18 * (i / 3), input.stackSize > 1 ? (input.stackSize + "") : null); + itemRender.zLevel = 0.0F; + + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glDisable(GL11.GL_LIGHTING); + + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + this.zLevel = 300.0F; + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + GL11.glColor4f(1F, 1F, 1F, 0.5F); + GL11.glEnable(GL11.GL_BLEND); + drawTexturedModalRect(guiLeft + 116 + 18 * (i % 3), guiTop + 18+ 18 * (i / 3), 116 + 18 * (i % 3), 18+ 18 * (i / 3), 18, 18); + GL11.glColor4f(1F, 1F, 1F, 1F); + GL11.glDisable(GL11.GL_BLEND); + } + } + + RenderHelper.disableStandardItemLighting(); + GL11.glColor4f(1F, 1F, 1F, 1F); + this.search.drawTextBox(); + } + + @Override + protected void keyTyped(char c, int key) { + + if(this.search.textboxKeyTyped(c, key)) { + search(this.search.getText()); + } else { + super.keyTyped(c, key); + } + } + + @Override + public void onGuiClosed() { + Keyboard.enableRepeatEvents(false); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineArcFurnaceLarge.java b/src/main/java/com/hbm/inventory/gui/GUIMachineArcFurnaceLarge.java index f1fdb4d91..7e50956a2 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineArcFurnaceLarge.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineArcFurnaceLarge.java @@ -11,8 +11,8 @@ import com.hbm.inventory.container.ContainerMachineArcFurnaceLarge; import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.Mats.MaterialStack; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineArcFurnaceLarge; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineBattery.java b/src/main/java/com/hbm/inventory/gui/GUIMachineBattery.java index 11480d37d..2fa8c4bbe 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineBattery.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineBattery.java @@ -14,8 +14,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineBattery; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.storage.TileEntityMachineBattery; import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineExcavator.java b/src/main/java/com/hbm/inventory/gui/GUIMachineExcavator.java index 4b78d4aa5..fe81cccba 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineExcavator.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineExcavator.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineExcavator; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineExcavator; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineFluidTank.java b/src/main/java/com/hbm/inventory/gui/GUIMachineFluidTank.java index 54ddb47e9..9ef320390 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineFluidTank.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineFluidTank.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineFluidTank; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineGasFlare.java b/src/main/java/com/hbm/inventory/gui/GUIMachineGasFlare.java index abcc30b6e..eca4887c6 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineGasFlare.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineGasFlare.java @@ -5,8 +5,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineGasFlare; import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.oil.TileEntityMachineGasFlare; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineLaunchTable.java b/src/main/java/com/hbm/inventory/gui/GUIMachineLaunchTable.java index c5373d331..975fb7ad1 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineLaunchTable.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineLaunchTable.java @@ -6,8 +6,8 @@ import com.hbm.inventory.container.ContainerLaunchTable; import com.hbm.items.weapon.ItemCustomMissile; import com.hbm.items.weapon.ItemCustomMissilePart.PartSize; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.render.util.MissileMultipart; import com.hbm.render.util.MissilePronter; import com.hbm.tileentity.bomb.TileEntityLaunchTable; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineMissileAssembly.java b/src/main/java/com/hbm/inventory/gui/GUIMachineMissileAssembly.java index c40100afa..d8aec81b6 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineMissileAssembly.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineMissileAssembly.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineMissileAssembly; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.render.util.MissileMultipart; import com.hbm.render.util.MissilePart; import com.hbm.render.util.MissilePronter; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java index 68fd71f77..43fd1ba61 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java @@ -5,8 +5,8 @@ import java.util.Arrays; import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineRadarNT; import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRotaryFurnace.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRotaryFurnace.java new file mode 100644 index 000000000..84a46915d --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRotaryFurnace.java @@ -0,0 +1,93 @@ +package com.hbm.inventory.gui; + +import java.awt.Color; + +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerMachineRotaryFurnace; +import com.hbm.inventory.material.Mats; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityMachineRotaryFurnace; +import com.hbm.util.I18nUtil; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineRotaryFurnace extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_rotary_furnace.png"); + private TileEntityMachineRotaryFurnace furnace; + + public GUIMachineRotaryFurnace(InventoryPlayer playerInv, TileEntityMachineRotaryFurnace tile) { + super(new ContainerMachineRotaryFurnace(playerInv, tile)); + + this.furnace = tile; + this.xSize = 176; + this.ySize = 186; + } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + + furnace.tanks[0].renderTankInfo(this, x, y, guiLeft + 8, guiTop + 36, 52, 16); + furnace.tanks[1].renderTankInfo(this, x, y, guiLeft + 134, guiTop + 18, 16, 52); + furnace.tanks[2].renderTankInfo(this, x, y, guiLeft + 152, guiTop + 18, 16, 52); + + if(furnace.output == null) { + this.drawCustomInfoStat(x, y, guiLeft + 98, guiTop + 18, 16, 52, x, y, EnumChatFormatting.RED + "Empty"); + } else { + this.drawCustomInfoStat(x, y, guiLeft + 98, guiTop + 18, 16, 52, x, y,EnumChatFormatting.YELLOW + + I18nUtil.resolveKey(furnace.output.material.getUnlocalizedName()) + ": " + Mats.formatAmount(furnace.output.amount, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))); + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.furnace.hasCustomInventoryName() ? this.furnace.getInventoryName() : I18n.format(this.furnace.getInventoryName()); + this.fontRendererObj.drawString(name, (this.xSize - 54) / 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 interp, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int p = (int) Math.ceil(furnace.progress * 33); + drawTexturedModalRect(guiLeft + 63, guiTop + 30, 176, 0, p, 10); + + if(furnace.maxBurnTime > 0) { + int b = furnace.burnTime * 14 / furnace.maxBurnTime; + drawTexturedModalRect(guiLeft + 26, guiTop + 69 - b, 176, 24 - b, 14, b); + } + + if(furnace.output != null) { + + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + + int hex = furnace.output.material.moltenColor; + int amount = furnace.output.amount * 52 / furnace.maxOutput; + Color color = new Color(hex); + GL11.glColor3f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); + drawTexturedModalRect(guiLeft + 98, guiTop + 70 - amount, 176, 76 - amount, 16, amount); + GL11.glEnable(GL11.GL_BLEND); + GL11.glColor4f(1F, 1F, 1F, 0.3F); + drawTexturedModalRect(guiLeft + 98, guiTop + 70 - amount, 176, 76 - amount, 16, amount); + GL11.glDisable(GL11.GL_BLEND); + + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + GL11.glColor3f(255, 255, 255); + } + + furnace.tanks[0].renderTank(guiLeft + 8, guiTop + 52, this.zLevel, 52, 16, 1); + furnace.tanks[1].renderTank(guiLeft + 134, guiTop + 70, this.zLevel, 16, 52); + furnace.tanks[2].renderTank(guiLeft + 152, guiTop + 70, this.zLevel, 16, 52); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineShredder.java b/src/main/java/com/hbm/inventory/gui/GUIMachineShredder.java index 255b789ba..ef433374e 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineShredder.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineShredder.java @@ -21,7 +21,7 @@ public class GUIMachineShredder extends GuiInfoContainer { diFurnace = tedf; this.xSize = 176; - this.ySize = 222; + this.ySize = 233; } @Override diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineSolderingStation.java b/src/main/java/com/hbm/inventory/gui/GUIMachineSolderingStation.java index 1a3a3f363..7e718b9f9 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineSolderingStation.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineSolderingStation.java @@ -4,11 +4,16 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineSolderingStation; import com.hbm.lib.RefStrings; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineSolderingStation; import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.ResourceLocation; public class GUIMachineSolderingStation extends GuiInfoContainer { @@ -32,6 +37,24 @@ public class GUIMachineSolderingStation extends GuiInfoContainer { this.drawElectricityInfo(this, x, y, guiLeft + 152, guiTop + 18, 16, 52, solderer.getPower(), solderer.getMaxPower()); this.drawCustomInfoStat(x, y, guiLeft + 78, guiTop + 67, 8, 8, guiLeft + 78, guiTop + 67, this.getUpgradeInfo(solderer)); + + + this.drawCustomInfoStat(x, y, guiLeft + 5, guiTop + 66, 10, 10, x, y, + "Recipe Collision Prevention: " + (solderer.collisionPrevention ? EnumChatFormatting.GREEN + "ON" : EnumChatFormatting.RED + "OFF"), + "Prevents no-fluid recipes from being processed", + "when fluid is present."); + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 5 <= x && guiLeft + 5 + 10 > x && guiTop + 66 < y && guiTop + 66 + 10 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("collision", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, solderer.xCoord, solderer.yCoord, solderer.zCoord)); + } } @Override diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java b/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java index 310bc7db0..fe6ecbdea 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java @@ -11,8 +11,8 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.trait.FT_Combustible; import com.hbm.inventory.fluid.trait.FT_Combustible.FuelGrade; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineTurbineGas; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java b/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java index 977f11d20..659febdab 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java @@ -7,8 +7,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineWoodBurner; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineWoodBurner; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMassStorage.java b/src/main/java/com/hbm/inventory/gui/GUIMassStorage.java index dfa413f97..08d74a6c3 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMassStorage.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMassStorage.java @@ -7,8 +7,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMassStorage; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.storage.TileEntityMassStorage; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMicrowave.java b/src/main/java/com/hbm/inventory/gui/GUIMicrowave.java index bc64a398e..13a3ac0f7 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMicrowave.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMicrowave.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMicrowave; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.TileEntityMicrowave; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMiningLaser.java b/src/main/java/com/hbm/inventory/gui/GUIMiningLaser.java index 79681e6f8..6f5441984 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMiningLaser.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMiningLaser.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMiningLaser; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.TileEntityMachineMiningLaser; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMixer.java b/src/main/java/com/hbm/inventory/gui/GUIMixer.java index 79f6461d6..974e41635 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMixer.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMixer.java @@ -9,8 +9,8 @@ import com.hbm.inventory.container.ContainerMixer; import com.hbm.inventory.recipes.MixerRecipes; import com.hbm.inventory.recipes.MixerRecipes.MixerRecipe; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineMixer; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUINukeFstbmb.java b/src/main/java/com/hbm/inventory/gui/GUINukeFstbmb.java index b03155b93..a3147d449 100644 --- a/src/main/java/com/hbm/inventory/gui/GUINukeFstbmb.java +++ b/src/main/java/com/hbm/inventory/gui/GUINukeFstbmb.java @@ -6,8 +6,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerNukeFstbmb; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.bomb.TileEntityNukeBalefire; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIOilburner.java b/src/main/java/com/hbm/inventory/gui/GUIOilburner.java index 8d040b03f..d93949e1a 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIOilburner.java +++ b/src/main/java/com/hbm/inventory/gui/GUIOilburner.java @@ -7,8 +7,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerOilburner; import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityHeaterOilburner; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIPADetector.java b/src/main/java/com/hbm/inventory/gui/GUIPADetector.java new file mode 100644 index 000000000..de0ee89f8 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIPADetector.java @@ -0,0 +1,66 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerPADetector; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.albion.TileEntityPADetector; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; + +public class GUIPADetector extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/particleaccelerator/gui_detector.png"); + private TileEntityPADetector source; + + public GUIPADetector(InventoryPlayer player, TileEntityPADetector source) { + super(new ContainerPADetector(player, source)); + this.source = source; + + this.xSize = 176; + this.ySize = 204; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + source.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 36, 16, 52); + source.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 36, 16, 52); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 18, 16, 52, source.power, source.getMaxPower()); + } + + @Override + protected void drawGuiContainerForegroundLayer( int i, int j) { + + String name = this.source.hasCustomInventoryName() ? this.source.getInventoryName() : I18n.format(this.source.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + + this.fontRendererObj.drawString(EnumChatFormatting.AQUA + "/123K", 136, 22, 4210752); + int heat = (int) Math.ceil(source.temperature); + String label = (heat > 123 ? EnumChatFormatting.RED : EnumChatFormatting.AQUA) + "" + heat + "K"; + this.fontRendererObj.drawString(label, 166 - this.fontRendererObj.getStringWidth(label), 12, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int j = (int) (source.power * 52 / source.getMaxPower()); + drawTexturedModalRect(guiLeft + 8, guiTop + 70 - j, 184, 52 - j, 16, j); + + int heat = (int) Math.ceil(source.temperature); + if(heat <= 123) drawTexturedModalRect(guiLeft + 44, guiTop + 18, 176, 8, 8, 8); + if(source.power >= source.usage) drawTexturedModalRect(guiLeft + 44, guiTop + 43, 176, 8, 8, 8); + + source.tanks[0].renderTank(guiLeft + 134, guiTop + 88, this.zLevel, 16, 52); + source.tanks[1].renderTank(guiLeft + 152, guiTop + 88, this.zLevel, 16, 52); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIPADipole.java b/src/main/java/com/hbm/inventory/gui/GUIPADipole.java new file mode 100644 index 000000000..da63bd28c --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIPADipole.java @@ -0,0 +1,179 @@ +package com.hbm.inventory.gui; + +import org.apache.commons.lang3.math.NumberUtils; +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerPADipole; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; +import com.hbm.tileentity.machine.albion.TileEntityPADipole; +import com.hbm.util.Vec3NT; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.gui.GuiTextField; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; + +public class GUIPADipole extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/particleaccelerator/gui_dipole.png"); + private TileEntityPADipole dipole; + + protected GuiTextField threshold; + + public GUIPADipole(InventoryPlayer player, TileEntityPADipole dipole) { + super(new ContainerPADipole(player, dipole)); + this.dipole = dipole; + + this.xSize = 176; + this.ySize = 204; + } + + @Override + public void initGui() { + super.initGui(); + + Keyboard.enableRepeatEvents(true); + + this.threshold = new GuiTextField(this.fontRendererObj, guiLeft + 47, guiTop + 77, 66, 8); + this.threshold.setTextColor(0x00ff00); + this.threshold.setDisabledTextColour(0x00ff00); + this.threshold.setEnableBackgroundDrawing(false); + this.threshold.setMaxStringLength(9); + this.threshold.setText("" + dipole.threshold); + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + dipole.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 36, 16, 52); + dipole.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 36, 16, 52); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 18, 16, 52, dipole.power, dipole.getMaxPower()); + + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 62, guiTop + 29, 12, 12, mouseX, mouseY, EnumChatFormatting.BLUE + "Player orientation", EnumChatFormatting.RED + "Output orientation:", dipole.ditToForgeDir(dipole.dirLower).name()); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 62, guiTop + 43, 12, 12, mouseX, mouseY, EnumChatFormatting.BLUE + "Player orientation", EnumChatFormatting.RED + "Output orientation:", dipole.ditToForgeDir(dipole.dirUpper).name()); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 62, guiTop + 57, 12, 12, mouseX, mouseY, EnumChatFormatting.BLUE + "Player orientation", EnumChatFormatting.RED + "Output orientation:", dipole.ditToForgeDir(dipole.dirRedstone).name()); + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + this.threshold.mouseClicked(x, y, i); + + if(guiLeft + 62 <= x && guiLeft + 62 + 12 > x && guiTop + 29 < y && guiTop + 29 + 12 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("lower", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, dipole.xCoord, dipole.yCoord, dipole.zCoord)); + } + + if(guiLeft + 62 <= x && guiLeft + 62 + 12 > x && guiTop + 43 < y && guiTop + 43 + 12 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("upper", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, dipole.xCoord, dipole.yCoord, dipole.zCoord)); + } + + if(guiLeft + 62 <= x && guiLeft + 62 + 12 > x && guiTop + 57 < y && guiTop + 57 + 12 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("redstone", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, dipole.xCoord, dipole.yCoord, dipole.zCoord)); + } + } + + @Override + protected void drawGuiContainerForegroundLayer( int i, int j) { + + String name = this.dipole.hasCustomInventoryName() ? this.dipole.getInventoryName() : I18n.format(this.dipole.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + + this.fontRendererObj.drawString(EnumChatFormatting.AQUA + "/123K", 136, 22, 4210752); + int heat = (int) Math.ceil(dipole.temperature); + String label = (heat > 123 ? EnumChatFormatting.RED : EnumChatFormatting.AQUA) + "" + heat + "K"; + this.fontRendererObj.drawString(label, 166 - this.fontRendererObj.getStringWidth(label), 12, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int j = (int) (dipole.power * 52 / dipole.getMaxPower()); + drawTexturedModalRect(guiLeft + 8, guiTop + 70 - j, 184, 52 - j, 16, j); + + int heat = (int) Math.ceil(dipole.temperature); + if(heat <= 123) drawTexturedModalRect(guiLeft + 93, guiTop + 54, 176, 8, 8, 8); + if(dipole.slots[1] != null && dipole.slots[1].getItem() == ModItems.pa_coil) drawTexturedModalRect(guiLeft + 103, guiTop + 54, 176, 8, 8, 8); + if(dipole.power >= dipole.usage) drawTexturedModalRect(guiLeft + 83, guiTop + 54, 176, 8, 8, 8); + + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glLineWidth(3F); + + Vec3NT vec = new Vec3NT(0, 0, 0); + vec.rotateAroundZDeg(MainRegistry.proxy.me().rotationYaw); + + Tessellator tessellator = Tessellator.instance; + tessellator.startDrawing(1); + addLine(tessellator, 68, 35, 0x8080ff, vec, 180); + addLine(tessellator, 68, 35, 0xff0000, vec, MainRegistry.proxy.me().rotationYaw - dipole.dirLower * 90); + addLine(tessellator, 68, 49, 0x8080ff, vec, 180); + addLine(tessellator, 68, 49, 0xff0000, vec, MainRegistry.proxy.me().rotationYaw - dipole.dirUpper * 90); + addLine(tessellator, 68, 63, 0x8080ff, vec, 180); + addLine(tessellator, 68, 63, 0xff0000, vec, MainRegistry.proxy.me().rotationYaw - dipole.dirRedstone * 90); + tessellator.draw(); + + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glPopMatrix(); + + this.threshold.drawTextBox(); + + dipole.tanks[0].renderTank(guiLeft + 134, guiTop + 88, this.zLevel, 16, 52); + dipole.tanks[1].renderTank(guiLeft + 152, guiTop + 88, this.zLevel, 16, 52); + } + + public void addLine(Tessellator tess, int x, int y, int color, Vec3NT vec, float yaw) { + vec.setComponents(0, 6, 0); + vec.rotateAroundZDeg(yaw); + tess.setColorOpaque_I(color); + tess.addVertex(guiLeft + x, guiTop + y, this.zLevel); + tess.addVertex(guiLeft + x + vec.xCoord, guiTop + y + vec.yCoord, this.zLevel); + } + + @Override + protected void keyTyped(char c, int i) { + if(this.threshold.textboxKeyTyped(c, i)) { + String text = this.threshold.getText(); + if(text.startsWith("0")) this.threshold.setText(text.substring(1)); + if(this.threshold.getText().isEmpty()) this.threshold.setText("0"); + if(NumberUtils.isDigits(this.threshold.getText())) { + int num = NumberUtils.toInt(this.threshold.getText()); + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("threshold", num); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, dipole.xCoord, dipole.yCoord, dipole.zCoord)); + } + return; + } + super.keyTyped(c, i); + } + + @Override + public void onGuiClosed() { + super.onGuiClosed(); + Keyboard.enableRepeatEvents(false); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIPAQuadrupole.java b/src/main/java/com/hbm/inventory/gui/GUIPAQuadrupole.java new file mode 100644 index 000000000..868317dc7 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIPAQuadrupole.java @@ -0,0 +1,68 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerPAQuadrupole; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.albion.TileEntityPAQuadrupole; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; + +public class GUIPAQuadrupole extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/particleaccelerator/gui_quadrupole.png"); + private TileEntityPAQuadrupole quadrupole; + + public GUIPAQuadrupole(InventoryPlayer player, TileEntityPAQuadrupole slopper) { + super(new ContainerPAQuadrupole(player, slopper)); + this.quadrupole = slopper; + + this.xSize = 176; + this.ySize = 204; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + quadrupole.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 116, guiTop + 36, 16, 52); + quadrupole.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 36, 16, 52); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 26, guiTop + 18, 16, 52, quadrupole.power, quadrupole.getMaxPower()); + } + + @Override + protected void drawGuiContainerForegroundLayer( int i, int j) { + + String name = this.quadrupole.hasCustomInventoryName() ? this.quadrupole.getInventoryName() : I18n.format(this.quadrupole.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + + this.fontRendererObj.drawString(EnumChatFormatting.AQUA + "/123K", 118, 22, 4210752); + int heat = (int) Math.ceil(quadrupole.temperature); + String label = (heat > 123 ? EnumChatFormatting.RED : EnumChatFormatting.AQUA) + "" + heat + "K"; + this.fontRendererObj.drawString(label, 148 - this.fontRendererObj.getStringWidth(label), 12, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int j = (int) (quadrupole.power * 52 / quadrupole.getMaxPower()); + drawTexturedModalRect(guiLeft + 26, guiTop + 70 - j, 184, 52 - j, 16, j); + + int heat = (int) Math.ceil(quadrupole.temperature); + if(heat <= 123) drawTexturedModalRect(guiLeft + 75, guiTop + 64, 176, 8, 8, 8); + if(quadrupole.slots[1] != null && quadrupole.slots[1].getItem() == ModItems.pa_coil) drawTexturedModalRect(guiLeft + 85, guiTop + 64, 176, 8, 8, 8); + if(quadrupole.power >= quadrupole.usage) drawTexturedModalRect(guiLeft + 65, guiTop + 64, 176, 8, 8, 8); + + quadrupole.tanks[0].renderTank(guiLeft + 116, guiTop + 88, this.zLevel, 16, 52); + quadrupole.tanks[1].renderTank(guiLeft + 134, guiTop + 88, this.zLevel, 16, 52); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIPARFC.java b/src/main/java/com/hbm/inventory/gui/GUIPARFC.java new file mode 100644 index 000000000..deba67b70 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIPARFC.java @@ -0,0 +1,59 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerPARFC; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.albion.TileEntityPARFC; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; + +public class GUIPARFC extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/particleaccelerator/gui_rfc.png"); + private TileEntityPARFC quadrupole; + + public GUIPARFC(InventoryPlayer player, TileEntityPARFC slopper) { + super(new ContainerPARFC(player, slopper)); + this.quadrupole = slopper; + + this.xSize = 176; + this.ySize = 204; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + quadrupole.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 89, guiTop + 36, 16, 52); + quadrupole.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 107, guiTop + 36, 16, 52); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 53, guiTop + 18, 16, 52, quadrupole.power, quadrupole.getMaxPower()); + } + + @Override + protected void drawGuiContainerForegroundLayer( int i, int j) { + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + + this.fontRendererObj.drawString(EnumChatFormatting.AQUA + "/123K", 91, 22, 4210752); + int heat = (int) Math.ceil(quadrupole.temperature); + String label = (heat > 123 ? EnumChatFormatting.RED : EnumChatFormatting.AQUA) + "" + heat + "K"; + this.fontRendererObj.drawString(label, 121 - this.fontRendererObj.getStringWidth(label), 12, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int j = (int) (quadrupole.power * 52 / quadrupole.getMaxPower()); + drawTexturedModalRect(guiLeft + 53, guiTop + 70 - j, 184, 52 - j, 16, j); + + quadrupole.tanks[0].renderTank(guiLeft + 89, guiTop + 88, this.zLevel, 16, 52); + quadrupole.tanks[1].renderTank(guiLeft + 107, guiTop + 88, this.zLevel, 16, 52); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIPASource.java b/src/main/java/com/hbm/inventory/gui/GUIPASource.java new file mode 100644 index 000000000..c95e3f344 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIPASource.java @@ -0,0 +1,99 @@ + package com.hbm.inventory.gui; + +import java.util.Locale; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerPASource; +import com.hbm.lib.RefStrings; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; +import com.hbm.tileentity.machine.albion.TileEntityPASource; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; + +public class GUIPASource extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/particleaccelerator/gui_source.png"); + private TileEntityPASource source; + + public GUIPASource(InventoryPlayer player, TileEntityPASource source) { + super(new ContainerPASource(player, source)); + this.source = source; + + this.xSize = 176; + this.ySize = 204; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + source.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 36, 16, 52); + source.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 36, 16, 52); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 18, 16, 52, source.power, source.getMaxPower()); + + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 105, guiTop + 18, 10, 10, mouseX, mouseY, "Last momentum: " + source.lastSpeed); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 105, guiTop + 30, 10, 10, mouseX, mouseY, EnumChatFormatting.RED + "Cancel operation"); + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 105 <= x && guiLeft + 105 + 10 > x && guiTop + 30 < y && guiTop + 30 + 10 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("cancel", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, source.xCoord, source.yCoord, source.zCoord)); + } + } + + @Override + protected void drawGuiContainerForegroundLayer( int i, int j) { + + String name = this.source.hasCustomInventoryName() ? this.source.getInventoryName() : I18n.format(this.source.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + + this.fontRendererObj.drawString(EnumChatFormatting.AQUA + "/123K", 136, 22, 4210752); + int heat = (int) Math.ceil(source.temperature); + String label = (heat > 123 ? EnumChatFormatting.RED : EnumChatFormatting.AQUA) + "" + heat + "K"; + this.fontRendererObj.drawString(label, 166 - this.fontRendererObj.getStringWidth(label), 12, 4210752); + + String state = I18n.format("pa." + this.source.state.name().toLowerCase(Locale.US)); + this.fontRendererObj.drawString(state, 79 - this.fontRendererObj.getStringWidth(state) / 2, 76, this.source.state.color); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int j = (int) (source.power * 52 / source.getMaxPower()); + drawTexturedModalRect(guiLeft + 8, guiTop + 70 - j, 184, 52 - j, 16, j); + + int heat = (int) Math.ceil(source.temperature); + if(heat <= 123) drawTexturedModalRect(guiLeft + 44, guiTop + 18, 176, 8, 8, 8); + if(source.power >= source.usage) drawTexturedModalRect(guiLeft + 44, guiTop + 43, 176, 8, 8, 8); + + int color = source.state.color; + float red = (color & 0xff0000) >> 16; + float green = (color & 0x00ff00) >> 8; + float blue = (color & 0x0000ff); + + GL11.glColor4f(red, green, blue, 1.0F); + drawTexturedModalRect(guiLeft + 45, guiTop + 73, 176, 52, 68, 14); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + + source.tanks[0].renderTank(guiLeft + 134, guiTop + 88, this.zLevel, 16, 52); + source.tanks[1].renderTank(guiLeft + 152, guiTop + 88, this.zLevel, 16, 52); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIPWR.java b/src/main/java/com/hbm/inventory/gui/GUIPWR.java index db21f4194..3220d178b 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIPWR.java +++ b/src/main/java/com/hbm/inventory/gui/GUIPWR.java @@ -9,8 +9,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerPWR; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.render.util.GaugeUtil; import com.hbm.tileentity.machine.TileEntityPWRController; diff --git a/src/main/java/com/hbm/inventory/gui/GUIPyroOven.java b/src/main/java/com/hbm/inventory/gui/GUIPyroOven.java new file mode 100644 index 000000000..a7befa9f0 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIPyroOven.java @@ -0,0 +1,62 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerPyroOven; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.oil.TileEntityMachinePyroOven; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIPyroOven extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_pyrooven.png"); + private TileEntityMachinePyroOven pyro; + + public GUIPyroOven(InventoryPlayer playerInv, TileEntityMachinePyroOven tile) { + super(new ContainerPyroOven(playerInv, tile)); + + this.pyro = tile; + this.xSize = 176; + this.ySize = 204; + } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + + pyro.tanks[0].renderTankInfo(this, x, y, guiLeft + 8, guiTop + 18, 16, 52); + pyro.tanks[1].renderTankInfo(this, x, y, guiLeft + 116, guiTop + 18, 16, 52); + this.drawElectricityInfo(this, x, y, guiLeft + 152, guiTop + 18, 16, 52, pyro.getPower(), pyro.getMaxPower()); + + this.drawCustomInfoStat(x, y, guiLeft + 108, guiTop + 76, 8, 8, guiLeft + 108, guiTop + 76, this.getUpgradeInfo(pyro)); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.pyro.hasCustomInventoryName() ? this.pyro.getInventoryName() : I18n.format(this.pyro.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 18, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int i = (int) (pyro.power * 52 / pyro.maxPower); + drawTexturedModalRect(guiLeft + 152, guiTop + 70 - i, 176, 64 - i, 16, i); + + int p = (int) (pyro.progress * 27); + drawTexturedModalRect(guiLeft + 57, guiTop + 47, 176, 0, p, 12); + + pyro.tanks[0].renderTank(guiLeft + 8, guiTop + 70, this.zLevel, 16, 52); + pyro.tanks[1].renderTank(guiLeft + 116, guiTop + 70, this.zLevel, 16, 52); + + this.drawInfoPanel(guiLeft + 108, guiTop + 76, 8, 8, 8); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKBoiler.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKBoiler.java index 0b32f00e1..8a645908c 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRBMKBoiler.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKBoiler.java @@ -6,8 +6,8 @@ import com.hbm.inventory.container.ContainerRBMKGeneric; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBoiler; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java index b07d3a19c..7867f1bc2 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java @@ -11,8 +11,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.RBMKColumn; diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKControl.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKControl.java index fecf9b8e3..b1c8f415e 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRBMKControl.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKControl.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerRBMKControl; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlManual; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKControlAuto.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKControlAuto.java index 13ce7330f..e55576bef 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRBMKControlAuto.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKControlAuto.java @@ -6,8 +6,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerRBMKControlAuto; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlAuto; import net.minecraft.client.Minecraft; @@ -78,7 +78,7 @@ public class GUIRBMKControlAuto extends GuiInfoContainer { this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 61, guiTop + 70, 22, 10, mouseX, mouseY, new String[]{ "Select inverse quadratic interpolation" } ); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 28, guiTop + 26, 30, 10, mouseX, mouseY, new String[]{ "Level at max heat", "Should be smaller than level at min heat" } ); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 28, guiTop + 37, 30, 10, mouseX, mouseY, new String[]{ "Level at min heat", "Should be larger than level at min heat" } ); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 28, guiTop + 37, 30, 10, mouseX, mouseY, new String[]{ "Level at min heat", "Should be larger than level at max heat" } ); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 28, guiTop + 48, 30, 10, mouseX, mouseY, new String[]{ "Max heat", "Must be larger than min heat" } ); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 28, guiTop + 59, 30, 10, mouseX, mouseY, new String[]{ "Min heat", "Must be smaller than max heat" } ); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 28, guiTop + 70, 30, 10, mouseX, mouseY, new String[]{ "Save parameters" } ); diff --git a/src/main/java/com/hbm/inventory/gui/GUIRadioRec.java b/src/main/java/com/hbm/inventory/gui/GUIRadioRec.java index f9014122c..c1fb2b367 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRadioRec.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRadioRec.java @@ -6,8 +6,8 @@ import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityRadioRec; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIReactorControl.java b/src/main/java/com/hbm/inventory/gui/GUIReactorControl.java index b141317da..b44711ee5 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIReactorControl.java +++ b/src/main/java/com/hbm/inventory/gui/GUIReactorControl.java @@ -7,8 +7,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerReactorControl; import com.hbm.lib.RefStrings; import com.hbm.module.NumberDisplay; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityReactorControl; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIReactorResearch.java b/src/main/java/com/hbm/inventory/gui/GUIReactorResearch.java index e02d155a5..e8d13b703 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIReactorResearch.java +++ b/src/main/java/com/hbm/inventory/gui/GUIReactorResearch.java @@ -7,8 +7,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerReactorResearch; import com.hbm.lib.RefStrings; import com.hbm.module.NumberDisplay; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityReactorResearch; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; diff --git a/src/main/java/com/hbm/inventory/gui/GUIReactorZirnox.java b/src/main/java/com/hbm/inventory/gui/GUIReactorZirnox.java index f09558da7..be0312a00 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIReactorZirnox.java +++ b/src/main/java/com/hbm/inventory/gui/GUIReactorZirnox.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerReactorZirnox; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityReactorZirnox; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUISILEX.java b/src/main/java/com/hbm/inventory/gui/GUISILEX.java index 64b9f36bd..b36c07fcd 100644 --- a/src/main/java/com/hbm/inventory/gui/GUISILEX.java +++ b/src/main/java/com/hbm/inventory/gui/GUISILEX.java @@ -10,8 +10,8 @@ import com.hbm.inventory.recipes.SILEXRecipes; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFELCrystal.EnumWavelengths; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.TileEntitySILEX; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenBobmazon.java b/src/main/java/com/hbm/inventory/gui/GUIScreenBobmazon.java index a96b12b6a..14ed3b483 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenBobmazon.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenBobmazon.java @@ -9,8 +9,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; -import com.hbm.packet.ItemBobmazonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.ItemBobmazonPacket; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenClayTablet.java b/src/main/java/com/hbm/inventory/gui/GUIScreenClayTablet.java new file mode 100644 index 000000000..0038befa3 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenClayTablet.java @@ -0,0 +1,141 @@ +package com.hbm.inventory.gui; + +import java.util.List; +import java.util.Random; + +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.recipes.PedestalRecipes; +import com.hbm.inventory.recipes.PedestalRecipes.PedestalRecipe; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +public class GUIScreenClayTablet extends GuiScreen { + + protected int xSize = 142; + protected int ySize = 84; + protected int guiLeft; + protected int guiTop; + + protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/guide_pedestal.png"); + + public GUIScreenClayTablet() { } + + public void initGui() { + super.initGui(); + this.guiLeft = (this.width - this.xSize) / 2; + this.guiTop = (this.height - this.ySize) / 2; + } + + public void drawScreen(int mouseX, int mouseY, float f) { + this.drawDefaultBackground(); + this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY); + GL11.glDisable(GL11.GL_LIGHTING); + this.drawGuiContainerForegroundLayer(mouseX, mouseY); + GL11.glEnable(GL11.GL_LIGHTING); + } + + protected void drawGuiContainerForegroundLayer(int i, int j) { } + + protected void drawGuiContainerBackgroundLayer(float f, int i, int j) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + + if(player.getHeldItem() != null && player.getHeldItem().hasTagCompound() && player.getHeldItem().stackTagCompound.hasKey("tabletSeed") && !PedestalRecipes.recipes.isEmpty()) { + Random rand = new Random(player.getHeldItem().stackTagCompound.getLong("tabletSeed")); + PedestalRecipe recipe = PedestalRecipes.recipes.get(rand.nextInt(PedestalRecipes.recipes.size())); + + if(recipe.extra == recipe.extra.FULL_MOON) drawTexturedModalRect(guiLeft + 120, guiTop + 62, 142, 32, 16, 16); + if(recipe.extra == recipe.extra.NEW_MOON) drawTexturedModalRect(guiLeft + 120, guiTop + 62, 142, 48, 16, 16); + if(recipe.extra == recipe.extra.SUN) drawTexturedModalRect(guiLeft + 120, guiTop + 62, 142, 64, 16, 16); + + for(int l = 0; l < 3; l++) { + for(int r = 0; r < 3; r++) { + if(rand.nextBoolean()) { + drawTexturedModalRect(guiLeft + 7 + r * 27, guiTop + 7 + l * 27, 142, 16, 16, 16); + } else { + + AStack ingredient = recipe.input[r + l * 3]; + + if(ingredient == null) { + drawTexturedModalRect(guiLeft + 7 + r * 27, guiTop + 7 + l * 27, 142, 0, 16, 16); + continue; + } + + List inputs = ingredient.extractForNEI(); + ItemStack input = inputs.size() <= 0 ? new ItemStack(ModItems.nothing) : inputs.get((int) (Math.abs(System.currentTimeMillis() / 1000) % inputs.size())); + + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + RenderHelper.enableGUIStandardItemLighting(); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + + FontRenderer font = null; + if(input != null) font = input.getItem().getFontRenderer(recipe.output); + if(font == null) font = fontRendererObj; + + itemRender.zLevel = 300.0F; + itemRender.renderItemAndEffectIntoGUI(font, this.mc.getTextureManager(), input, guiLeft + 7 + r * 27, guiTop + 7 + l * 27); + itemRender.renderItemOverlayIntoGUI(font, this.mc.getTextureManager(), input, guiLeft + 7 + r * 27, guiTop + 7 + l * 27, input.stackSize > 1 ? (input.stackSize + "") : null); + itemRender.zLevel = 0.0F; + + GL11.glDisable(GL11.GL_LIGHTING); + this.mc.getTextureManager().bindTexture(texture); + this.zLevel = 300.0F; + } + } + } + + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + RenderHelper.enableGUIStandardItemLighting(); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + + FontRenderer font = null; + if(recipe.output != null) font = recipe.output.getItem().getFontRenderer(recipe.output); + if(font == null) font = fontRendererObj; + + itemRender.zLevel = 300.0F; + itemRender.renderItemAndEffectIntoGUI(font, this.mc.getTextureManager(), recipe.output, guiLeft + xSize / 2 - 8, guiTop - 20); + itemRender.renderItemOverlayIntoGUI(font, this.mc.getTextureManager(), recipe.output, guiLeft + xSize / 2 - 8, guiTop - 20, recipe.output.stackSize > 1 ? (recipe.output.stackSize + "") : null); + itemRender.zLevel = 0.0F; + + GL11.glDisable(GL11.GL_LIGHTING); + + this.mc.getTextureManager().bindTexture(texture); + this.zLevel = 300.0F; + + GL11.glDisable(GL11.GL_DEPTH_TEST); + String label = recipe.output.getDisplayName(); + font.drawString(label, guiLeft + (xSize - font.getStringWidth(label)) / 2, guiTop - 30, 0xffffff); + + } else { + + for(int l = 0; l < 3; l++) { + for(int r = 0; r < 3; r++) { + drawTexturedModalRect(guiLeft + 7 + r * 27, guiTop + 7 + l * 27, 142, 16, 16, 16); + } + } + } + } + + @Override + protected void keyTyped(char c, int key) { + if(key == 1 || key == this.mc.gameSettings.keyBindInventory.getKeyCode()) { + this.mc.thePlayer.closeScreen(); + } + } + + @Override public boolean doesGuiPauseGame() { return false; } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenDesignator.java b/src/main/java/com/hbm/inventory/gui/GUIScreenDesignator.java index 67cae4179..7f9c35ac9 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenDesignator.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenDesignator.java @@ -8,8 +8,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; -import com.hbm.packet.ItemDesignatorPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.ItemDesignatorPacket; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java b/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java index e72526ced..e25744def 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java @@ -12,8 +12,8 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIDMulti; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTItemControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTItemControlPacket; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorch.java b/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorch.java index fc90751df..1f879d0a7 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorch.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorch.java @@ -6,8 +6,8 @@ import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityRadioTorchBase; import com.hbm.tileentity.network.TileEntityRadioTorchSender; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorchLogic.java b/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorchLogic.java index c78ea3061..11b38f125 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorchLogic.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorchLogic.java @@ -7,8 +7,8 @@ import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityRadioTorchLogic; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenSatCoord.java b/src/main/java/com/hbm/inventory/gui/GUIScreenSatCoord.java index af560d0d9..e7f4fe2bb 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenSatCoord.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenSatCoord.java @@ -8,7 +8,7 @@ import com.hbm.items.ISatChip; import com.hbm.items.tool.ItemSatInterface; import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.SatCoordPacket; +import com.hbm.packet.toserver.SatCoordPacket; import com.hbm.saveddata.satellites.Satellite.CoordActions; import com.hbm.saveddata.satellites.Satellite.Interfaces; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenSatInterface.java b/src/main/java/com/hbm/inventory/gui/GUIScreenSatInterface.java index 392f620f9..bba6b5b4f 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenSatInterface.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenSatInterface.java @@ -10,7 +10,7 @@ import com.hbm.items.ISatChip; import com.hbm.items.tool.ItemSatInterface; import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.SatLaserPacket; +import com.hbm.packet.toserver.SatLaserPacket; import com.hbm.saveddata.satellites.Satellite.InterfaceActions; import com.hbm.saveddata.satellites.Satellite.Interfaces; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java b/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java index f58519d0a..a91652ef0 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java @@ -24,8 +24,8 @@ import com.hbm.items.machine.ItemStamp; import com.hbm.items.machine.ItemStamp.StampType; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; -import com.hbm.packet.ItemFolderPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.ItemFolderPacket; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; diff --git a/src/main/java/com/hbm/inventory/gui/GUISoyuzLauncher.java b/src/main/java/com/hbm/inventory/gui/GUISoyuzLauncher.java index 644f6eff6..a1fdb30cc 100644 --- a/src/main/java/com/hbm/inventory/gui/GUISoyuzLauncher.java +++ b/src/main/java/com/hbm/inventory/gui/GUISoyuzLauncher.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerSoyuzLauncher; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.TileEntitySoyuzLauncher; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUITurretArty.java b/src/main/java/com/hbm/inventory/gui/GUITurretArty.java index f53a71a13..04b188f14 100644 --- a/src/main/java/com/hbm/inventory/gui/GUITurretArty.java +++ b/src/main/java/com/hbm/inventory/gui/GUITurretArty.java @@ -1,8 +1,8 @@ package com.hbm.inventory.gui; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.turret.TileEntityTurretArty; import com.hbm.tileentity.turret.TileEntityTurretBaseNT; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUITurretBase.java b/src/main/java/com/hbm/inventory/gui/GUITurretBase.java index c4c79e551..c5964c108 100644 --- a/src/main/java/com/hbm/inventory/gui/GUITurretBase.java +++ b/src/main/java/com/hbm/inventory/gui/GUITurretBase.java @@ -8,9 +8,9 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerTurretBase; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.turret.TileEntityTurretBaseNT; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUITurretHIMARS.java b/src/main/java/com/hbm/inventory/gui/GUITurretHIMARS.java index 1458112b9..2ca5524f1 100644 --- a/src/main/java/com/hbm/inventory/gui/GUITurretHIMARS.java +++ b/src/main/java/com/hbm/inventory/gui/GUITurretHIMARS.java @@ -1,8 +1,8 @@ package com.hbm.inventory.gui; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.turret.TileEntityTurretBaseNT; import com.hbm.tileentity.turret.TileEntityTurretHIMARS; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIWatz.java b/src/main/java/com/hbm/inventory/gui/GUIWatz.java index c22046d29..cf190b93e 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIWatz.java +++ b/src/main/java/com/hbm/inventory/gui/GUIWatz.java @@ -6,8 +6,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerWatz; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.render.util.GaugeUtil; import com.hbm.render.util.GaugeUtil.Gauge; import com.hbm.tileentity.machine.TileEntityWatz; diff --git a/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java b/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java index bec49c8d3..58075788b 100644 --- a/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java +++ b/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java @@ -7,10 +7,10 @@ import codechicken.nei.api.INEIGuiHandler; import codechicken.nei.api.TaggedInventoryArea; import com.hbm.inventory.SlotPattern; import com.hbm.inventory.container.ContainerBase; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; + import cpw.mods.fml.common.Optional; -import net.minecraft.item.Item; import net.minecraft.nbt.NBTTagCompound; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; @@ -22,6 +22,7 @@ import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.renderer.RenderHelper; @@ -40,36 +41,36 @@ public abstract class GuiInfoContainer extends GuiContainer implements INEIGuiHa public GuiInfoContainer(Container p_i1072_1_) { super(p_i1072_1_); } - + public void drawElectricityInfo(GuiInfoContainer gui, int mouseX, int mouseY, int x, int y, int width, int height, long power, long maxPower) { if(x <= mouseX && x + width > mouseX && y < mouseY && y + height >= mouseY) gui.drawInfo(new String[] { BobMathUtil.getShortNumber(power) + "/" + BobMathUtil.getShortNumber(maxPower) + "HE" }, mouseX, mouseY); } - + public void drawCustomInfoStat(int mouseX, int mouseY, int x, int y, int width, int height, int tPosX, int tPosY, String... text) { drawCustomInfoStat(mouseX, mouseY, x, y, width, height, tPosX, tPosY, Arrays.asList(text)); } - + public void drawCustomInfoStat(int mouseX, int mouseY, int x, int y, int width, int height, int tPosX, int tPosY, List text) { - + if(x <= mouseX && x + width > mouseX && y < mouseY && y + height >= mouseY) this.func_146283_a(text, tPosX, tPosY); } - + public void drawInfo(String[] text, int x, int y) { this.func_146283_a(Arrays.asList(text), x, y); } - + /** Automatically grabs upgrade info out of the tile entity if it's a IUpgradeInfoProvider and crams the available info into a list for display. Automation, yeah! */ public List getUpgradeInfo(TileEntity tile) { List lines = new ArrayList(); - + if(tile instanceof IUpgradeInfoProvider) { IUpgradeInfoProvider provider = (IUpgradeInfoProvider) tile; - + lines.add(I18nUtil.resolveKey("upgrade.gui.title")); - + for(UpgradeType type : UpgradeType.values()) { if(provider.canProvideInfo(type, 0, false)) { - int maxLevel = provider.getMaxLevel(type); + int maxLevel = provider.getValidUpgrades().get(type); switch(type) { case SPEED: lines.add(I18nUtil.resolveKey("upgrade.gui.speed", maxLevel)); break; case POWER: lines.add(I18nUtil.resolveKey("upgrade.gui.power", maxLevel)); break; @@ -81,20 +82,20 @@ public abstract class GuiInfoContainer extends GuiContainer implements INEIGuiHa } } } - + return lines; } - + @Deprecated public void drawCustomInfo(GuiInfoContainer gui, int mouseX, int mouseY, int x, int y, int width, int height, String[] text) { if(x <= mouseX && x + width > mouseX && y < mouseY && y + height >= mouseY) this.func_146283_a(Arrays.asList(text), mouseX, mouseY); } - + public void drawInfoPanel(int x, int y, int width, int height, int type) { Minecraft.getMinecraft().getTextureManager().bindTexture(guiUtil); - + switch(type) { case 0: drawTexturedModalRect(x, y, 0, 0, 8, 8); break; //Small blue I case 1: drawTexturedModalRect(x, y, 0, 8, 8, 8); break; //Small green I @@ -110,7 +111,7 @@ public abstract class GuiInfoContainer extends GuiContainer implements INEIGuiHa case 11: drawTexturedModalRect(x, y, 24, 32, 16, 16); break; //Large grey * } } - + protected boolean isMouseOverSlot(Slot slot, int x, int y) { return this.func_146978_c(slot.xDisplayPosition, slot.yDisplayPosition, 16, 16, x, y); } @@ -130,32 +131,32 @@ public abstract class GuiInfoContainer extends GuiContainer implements INEIGuiHa return null; } - + protected boolean checkClick(int x, int y, int left, int top, int sizeX, int sizeY) { return guiLeft + left <= x && guiLeft + left + sizeX > x && guiTop + top < y && guiTop + top + sizeY >= y; } - + /* Getters for external use of the GUI's rect rendering, such as NumberDisplay */ public int getGuiTop() { return this.guiTop; } - + public int getGuiLeft() { return this.guiLeft; } - + public float getZLevel() { return this.zLevel; } - + public void setZLevel(float level) { this.zLevel = level; } - + public RenderItem getItemRenderer() { return this.itemRender; } - + public FontRenderer getFontRenderer() { return this.fontRendererObj; } @@ -175,7 +176,7 @@ public abstract class GuiInfoContainer extends GuiContainer implements INEIGuiHa } protected void drawStackText(List lines, int x, int y, FontRenderer font) { - + if(!lines.isEmpty()) { GL11.glDisable(GL12.GL_RESCALE_NORMAL); RenderHelper.disableStandardItemLighting(); @@ -189,11 +190,11 @@ public abstract class GuiInfoContainer extends GuiContainer implements INEIGuiHa while(iterator.hasNext()) { Object[] line = (Object[]) iterator.next(); int lineWidth = 0; - + boolean hasStack = false; - + for(Object o : line) { - + if(o instanceof String) { lineWidth += font.getStringWidth((String) o); } else { @@ -201,7 +202,7 @@ public abstract class GuiInfoContainer extends GuiContainer implements INEIGuiHa hasStack = true; } } - + if(hasStack) { height += 18; } else { @@ -243,19 +244,19 @@ public abstract class GuiInfoContainer extends GuiContainer implements INEIGuiHa this.drawGradientRect(minX - 3, minY + height + 2, minX + longestline + 3, minY + height + 3, color1, color1); for(int index = 0; index < lines.size(); ++index) { - + Object[] line = (Object[]) lines.get(index); int indent = 0; boolean hasStack = false; - + for(Object o : line) { if(!(o instanceof String)) { hasStack = true; } } - + for(Object o : line) { - + if(o instanceof String) { font.drawStringWithShadow((String) o, minX + indent, minY + (hasStack ? 4 : 0), -1); indent += font.getStringWidth((String) o) + 2; @@ -291,6 +292,11 @@ public abstract class GuiInfoContainer extends GuiContainer implements INEIGuiHa GL11.glEnable(GL12.GL_RESCALE_NORMAL); } } + + public void click() { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + } + ///NEI drag and drop support @Override @Optional.Method(modid = "NotEnoughItems") @@ -301,10 +307,10 @@ public abstract class GuiInfoContainer extends GuiContainer implements INEIGuiHa if(inventorySlots instanceof ContainerBase) { NBTTagCompound tag = new NBTTagCompound(); tag.setInteger("slot", slot.slotNumber); - //Item IDs are usually dangerous, but this is only getting called from clientside, while ingame anyway - //if someone somehow gets an ID shift with this i will eat my shoe - 70k - tag.setInteger("id", Item.getIdFromItem(stack.getItem())); - tag.setInteger("meta", stack.getItemDamage()); + + NBTTagCompound item = new NBTTagCompound(); + stack.writeToNBT(item); + tag.setTag("stack", item); TileEntity te = (TileEntity) ((ContainerBase) inventorySlots).tile; PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(tag, te.xCoord, te.yCoord, te.zCoord)); diff --git a/src/main/java/com/hbm/inventory/gui/GuiScreenRadioTelex.java b/src/main/java/com/hbm/inventory/gui/GuiScreenRadioTelex.java index 316c6e9fb..c406fd3c9 100644 --- a/src/main/java/com/hbm/inventory/gui/GuiScreenRadioTelex.java +++ b/src/main/java/com/hbm/inventory/gui/GuiScreenRadioTelex.java @@ -7,8 +7,8 @@ import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityRadioTelex; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/material/MatDistribution.java b/src/main/java/com/hbm/inventory/material/MatDistribution.java index 12e6d4f6e..962606582 100644 --- a/src/main/java/com/hbm/inventory/material/MatDistribution.java +++ b/src/main/java/com/hbm/inventory/material/MatDistribution.java @@ -23,6 +23,7 @@ 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.items.ItemEnums.EnumCasingType; import com.hbm.util.Compat; import net.minecraft.block.Block; @@ -57,6 +58,11 @@ public class MatDistribution extends SerializableRecipe { registerEntry(ModItems.stamp_obsidian_flat, MAT_OBSIDIAN, INGOT.q(3)); registerEntry(ModItems.pipes_steel, MAT_STEEL, BLOCK.q(3)); + registerEntry(DictFrame.fromOne(ModItems.casing, EnumCasingType.SMALL), MAT_GUNMETAL, PLATE.q(1, 4)); + registerEntry(DictFrame.fromOne(ModItems.casing, EnumCasingType.SMALL_STEEL), MAT_WEAPONSTEEL, PLATE.q(1, 4)); + registerEntry(DictFrame.fromOne(ModItems.casing, EnumCasingType.LARGE), MAT_GUNMETAL, PLATE.q(1, 2)); + registerEntry(DictFrame.fromOne(ModItems.casing, EnumCasingType.LARGE_STEEL), MAT_WEAPONSTEEL, PLATE.q(1, 2)); + //actual ores if(!Compat.isModLoaded(Compat.MOD_GT6)) { registerOre(OreDictManager.IRON.ore(), MAT_IRON, INGOT.q(2), MAT_TITANIUM, NUGGET.q(3), MAT_STONE, QUART.q(1)); @@ -68,7 +74,7 @@ public class MatDistribution extends SerializableRecipe { registerOre(OreDictManager.COAL.ore(), MAT_CARBON, GEM.q(3), MAT_STONE, QUART.q(1)); registerOre(OreDictManager.GOLD.ore(), MAT_GOLD, INGOT.q(2), MAT_LEAD, NUGGET.q(3), MAT_STONE, QUART.q(1)); registerOre(OreDictManager.U.ore(), MAT_URANIUM, INGOT.q(2), MAT_LEAD, NUGGET.q(3), MAT_STONE, QUART.q(1)); - registerOre(OreDictManager.TH232.ore(), MAT_THORIUM, INGOT.q(2), MAT_URANIUM, NUGGET.q(3), MAT_STONE, QUART.q(1)); + for(String ore : OreDictManager.TH232.all(MaterialShapes.ORE)) registerOre(ore, MAT_THORIUM, INGOT.q(2), MAT_URANIUM, NUGGET.q(3), MAT_STONE, QUART.q(1)); registerOre(OreDictManager.CU.ore(), MAT_COPPER, INGOT.q(2), MAT_STONE, QUART.q(1)); registerOre(OreDictManager.PB.ore(), MAT_LEAD, INGOT.q(2), MAT_GOLD, NUGGET.q(1), MAT_STONE, QUART.q(1)); registerOre(OreDictManager.BE.ore(), MAT_BERYLLIUM, INGOT.q(2), MAT_STONE, QUART.q(1)); @@ -76,7 +82,7 @@ public class MatDistribution extends SerializableRecipe { registerOre(OreDictManager.REDSTONE.ore(), MAT_REDSTONE, INGOT.q(4), MAT_STONE, QUART.q(1)); registerOre(OreDictManager.HEMATITE.ore(), MAT_HEMATITE, INGOT.q(1)); - registerOre(OreDictManager.MALACHITE.ore(), MAT_MALACHITE, INGOT.q(1)); + registerOre(OreDictManager.MALACHITE.ore(), MAT_MALACHITE, INGOT.q(6)); registerEntry(DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.LIMESTONE), MAT_FLUX, DUST.q(10)); registerEntry(ModItems.powder_flux, MAT_FLUX, DUST.q(1)); @@ -93,6 +99,7 @@ public class MatDistribution extends SerializableRecipe { if(key instanceof Item) comp = new ComparableStack((Item) key); if(key instanceof Block) comp = new ComparableStack((Block) key); if(key instanceof ItemStack) comp = new ComparableStack((ItemStack) key); + if(key instanceof ComparableStack) comp = (ComparableStack) key; if(comp == null) return; if(matDef.length % 2 == 1) return; diff --git a/src/main/java/com/hbm/inventory/material/MaterialShapes.java b/src/main/java/com/hbm/inventory/material/MaterialShapes.java index a7cd59f3d..ffe1db8ee 100644 --- a/src/main/java/com/hbm/inventory/material/MaterialShapes.java +++ b/src/main/java/com/hbm/inventory/material/MaterialShapes.java @@ -9,8 +9,14 @@ public class MaterialShapes { public static final List allShapes = new ArrayList(); + public static final MaterialShapes ANY = new MaterialShapes(0).noAutogen(); + public static final MaterialShapes ONLY_ORE = new MaterialShapes(0, "ore").noAutogen(); + public static final MaterialShapes ORE = new MaterialShapes(0, "ore", "oreNether").noAutogen(); + public static final MaterialShapes ORENETHER = new MaterialShapes(0, "oreNether").noAutogen(); + public static final MaterialShapes QUANTUM = new MaterialShapes(1); // 1/72 of an ingot, allows the ingot to be divisible through 2, 4, 6, 8, 9, 12, 24 and 36 - public static final MaterialShapes NUGGET = new MaterialShapes(8, "nugget"); + public static final MaterialShapes NUGGET = new MaterialShapes(8, "nugget", "tiny"); + public static final MaterialShapes TINY = new MaterialShapes(8, "tiny").noAutogen(); public static final MaterialShapes FRAGMENT = new MaterialShapes(8, "bedrockorefragment"); public static final MaterialShapes DUSTTINY = new MaterialShapes(NUGGET.quantity, "dustTiny"); public static final MaterialShapes WIRE = new MaterialShapes(9, "wireFine"); @@ -29,28 +35,37 @@ public class MaterialShapes { public static final MaterialShapes QUART = new MaterialShapes(162); public static final MaterialShapes BLOCK = new MaterialShapes(INGOT.quantity * 9, "block"); public static final MaterialShapes HEAVY_COMPONENT = new MaterialShapes(CASTPLATE.quantity * 256, "componentHeavy"); + + public static final MaterialShapes LIGHTBARREL = new MaterialShapes(INGOT.quantity * 3, "barrelLight"); + public static final MaterialShapes HEAVYBARREL = new MaterialShapes(INGOT.quantity * 6, "barrelHeavy"); + public static final MaterialShapes LIGHTRECEIVER = new MaterialShapes(INGOT.quantity * 4, "receiverLight"); + public static final MaterialShapes HEAVYRECEIVER = new MaterialShapes(INGOT.quantity * 9, "receiverHeavy"); + public static final MaterialShapes MECHANISM = new MaterialShapes(INGOT.quantity * 4, "gunMechanism"); + public static final MaterialShapes STOCK = new MaterialShapes(INGOT.quantity * 4, "stock"); + public static final MaterialShapes GRIP = new MaterialShapes(INGOT.quantity * 2, "grip"); public static void registerCompatShapes() { if(Compat.isModLoaded(Compat.MOD_GT6)) { - new MaterialShapes(BLOCK.q(1), "blockDust"); - new MaterialShapes(BLOCK.q(1), "blockGem"); - new MaterialShapes(BLOCK.q(1), "blockIngot"); - new MaterialShapes(BLOCK.q(1), "blockSolid"); - new MaterialShapes(INGOT.q(9, 8), "crushed"); - new MaterialShapes(INGOT.q(9, 72), "crushedTiny"); - new MaterialShapes(INGOT.q(10, 8), "crushedPurified"); - new MaterialShapes(INGOT.q(10, 72), "crushedPurifiedTiny"); - new MaterialShapes(INGOT.q(11, 8), "crushedCentrifuged"); - new MaterialShapes(INGOT.q(11, 72), "crushedCentrifugedTiny"); - new MaterialShapes(INGOT.q(1, 4), "dustSmall"); - new MaterialShapes(INGOT.q(1, 72), "dustDiv72"); - new MaterialShapes(INGOT.q(10, 9), "dustImpure"); - new MaterialShapes(INGOT.q(11, 9), "dustPure"); - new MaterialShapes(INGOT.q(12, 9), "dustRefined"); + new MaterialShapes(BLOCK.q(1), "blockDust").noAutogen(); + new MaterialShapes(BLOCK.q(1), "blockGem").noAutogen(); + new MaterialShapes(BLOCK.q(1), "blockIngot").noAutogen(); + new MaterialShapes(BLOCK.q(1), "blockSolid").noAutogen(); + new MaterialShapes(INGOT.q(9, 8), "crushed").noAutogen(); + new MaterialShapes(INGOT.q(9, 72), "crushedTiny").noAutogen(); + new MaterialShapes(INGOT.q(10, 8), "crushedPurified").noAutogen(); + new MaterialShapes(INGOT.q(10, 72), "crushedPurifiedTiny").noAutogen(); + new MaterialShapes(INGOT.q(11, 8), "crushedCentrifuged").noAutogen(); + new MaterialShapes(INGOT.q(11, 72), "crushedCentrifugedTiny").noAutogen(); + new MaterialShapes(INGOT.q(1, 4), "dustSmall").noAutogen(); + new MaterialShapes(INGOT.q(1, 72), "dustDiv72").noAutogen(); + new MaterialShapes(INGOT.q(10, 9), "dustImpure").noAutogen(); + new MaterialShapes(INGOT.q(11, 9), "dustPure").noAutogen(); + new MaterialShapes(INGOT.q(12, 9), "dustRefined").noAutogen(); } } + public boolean noAutogen = false; private int quantity; public final String[] prefixes; @@ -65,6 +80,12 @@ public class MaterialShapes { allShapes.add(this); } + /** Disables recipe autogen for special cases like compatibility prefixes (TINY, ORENETHER), technical prefixes (ANY) or prefixes that have to be handled manually (ORE) */ + public MaterialShapes noAutogen() { + this.noAutogen = true; + return this; + } + public int q(int amount) { return this.quantity * amount; } @@ -76,4 +97,8 @@ public class MaterialShapes { public String name() { return (prefixes != null && prefixes.length > 0) ? prefixes[0] : "unknown"; } + + public String make(NTMMaterial mat) { + return this.name() + mat.names[0]; + } } diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index 8879a622e..4eb3cdf92 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -47,112 +47,121 @@ public class Mats { public static final int _ES = 20_000; //Vanilla and vanilla-like - public static final NTMMaterial MAT_STONE = makeSmeltable(_VS + 00, df("Stone"), 0x7F7F7F, 0x353535, 0x4D2F23).n(); - public static final NTMMaterial MAT_CARBON = makeAdditive( 699, CARBON, 0x363636, 0x030303, 0x404040).setShapes(WIRE, INGOT, BLOCK).n(); - public static final NTMMaterial MAT_COAL = makeNonSmeltable(600, COAL, 0x363636, 0x030303, 0x404040).setConversion(MAT_CARBON, 2, 1).setShapes(FRAGMENT).n(); - public static final NTMMaterial MAT_LIGNITE = makeNonSmeltable(601, LIGNITE, 0x542D0F, 0x261508, 0x472913).setConversion(MAT_CARBON, 3, 1).setShapes(FRAGMENT).n(); - public static final NTMMaterial MAT_COALCOKE = make( 610, COALCOKE) .setConversion(MAT_CARBON, 4, 3).n(); - public static final NTMMaterial MAT_PETCOKE = make( 611, PETCOKE) .setConversion(MAT_CARBON, 4, 3).n(); - public static final NTMMaterial MAT_LIGCOKE = make( 612, LIGCOKE) .setConversion(MAT_CARBON, 4, 3).n(); - public static final NTMMaterial MAT_GRAPHITE = make( 620, GRAPHITE) .setConversion(MAT_CARBON, 1, 1).n(); - public static final NTMMaterial MAT_DIAMOND = makeNonSmeltable(1430, DIAMOND, 0xFFFFFF, 0x1B7B6B, 0x8CF4E2).setConversion(MAT_CARBON, 1, 1).setShapes(FRAGMENT).n(); - public static final NTMMaterial MAT_IRON = makeSmeltable(2600, IRON, 0xFFFFFF, 0x353535, 0xFFA259).setShapes(FRAGMENT, INGOT, DUST, PIPE, CASTPLATE, WELDEDPLATE, BLOCK).m(); - public static final NTMMaterial MAT_GOLD = makeSmeltable(7900, GOLD, 0xFFFF8B, 0xC26E00, 0xE8D754).setShapes(FRAGMENT, WIRE, NUGGET, INGOT, DUST, DENSEWIRE, CASTPLATE, BLOCK).m(); - public static final NTMMaterial MAT_REDSTONE = makeSmeltable(_VS + 01, REDSTONE, 0xE3260C, 0x700E06, 0xFF1000).setShapes(FRAGMENT).n(); - public static final NTMMaterial MAT_OBSIDIAN = makeSmeltable(_VS + 02, df("Obsidian"), 0x3D234D).n(); - public static final NTMMaterial MAT_HEMATITE = makeAdditive( 2601, HEMATITE, 0xDFB7AE, 0x5F372E, 0x6E463D).m(); - public static final NTMMaterial MAT_WROUGHTIRON = makeSmeltable(2602, df("WroughtIron"), 0xFAAB89).m(); - public static final NTMMaterial MAT_PIGIRON = makeSmeltable(2603, df("PigIron"), 0xFF8B59).m(); - public static final NTMMaterial MAT_METEORICIRON = makeSmeltable(2604, df("MeteoricIron"), 0x715347).m(); - public static final NTMMaterial MAT_MALACHITE = makeAdditive( 2901, MALACHITE, 0xA2F0C8, 0x227048, 0x61AF87).m(); + public static final NTMMaterial MAT_WOOD = makeNonSmeltable(_VS + 03, WOOD, 0x896727, 0x281E0B, 0x896727).setAutogen(STOCK, GRIP).n(); + public static final NTMMaterial MAT_IVORY = makeNonSmeltable(_VS + 04, BONE, 0xFFFEEE, 0x797870, 0xEDEBCA).setAutogen(GRIP).n(); + public static final NTMMaterial MAT_STONE = makeSmeltable(_VS + 00, df("Stone"), 0x7F7F7F, 0x353535, 0x4D2F23).n(); + public static final NTMMaterial MAT_CARBON = makeAdditive( 699, CARBON, 0x363636, 0x030303, 0x404040).setAutogen(WIRE, BLOCK).n(); + public static final NTMMaterial MAT_COAL = makeNonSmeltable(600, COAL, 0x363636, 0x030303, 0x404040).setConversion(MAT_CARBON, 2, 1).setAutogen(FRAGMENT).n(); + public static final NTMMaterial MAT_LIGNITE = makeNonSmeltable(601, LIGNITE, 0x542D0F, 0x261508, 0x472913).setConversion(MAT_CARBON, 3, 1).setAutogen(FRAGMENT).n(); + public static final NTMMaterial MAT_COALCOKE = make( 610, COALCOKE) .setConversion(MAT_CARBON, 4, 3).n(); + public static final NTMMaterial MAT_PETCOKE = make( 611, PETCOKE) .setConversion(MAT_CARBON, 4, 3).n(); + public static final NTMMaterial MAT_LIGCOKE = make( 612, LIGCOKE) .setConversion(MAT_CARBON, 4, 3).n(); + public static final NTMMaterial MAT_GRAPHITE = make( 620, GRAPHITE) .setConversion(MAT_CARBON, 1, 1).n(); + public static final NTMMaterial MAT_DIAMOND = makeNonSmeltable(1430, DIAMOND, 0xFFFFFF, 0x1B7B6B, 0x8CF4E2).setConversion(MAT_CARBON, 1, 1).setAutogen(FRAGMENT).n(); + public static final NTMMaterial MAT_IRON = makeSmeltable(2600, IRON, 0xFFFFFF, 0x353535, 0xFFA259).setAutogen(FRAGMENT, DUST, PIPE, CASTPLATE, WELDEDPLATE, BLOCK).m(); + public static final NTMMaterial MAT_GOLD = makeSmeltable(7900, GOLD, 0xFFFF8B, 0xC26E00, 0xE8D754).setAutogen(FRAGMENT, WIRE, NUGGET, DUST, DENSEWIRE, CASTPLATE, BLOCK).m(); + public static final NTMMaterial MAT_REDSTONE = makeSmeltable(_VS + 01, REDSTONE, 0xE3260C, 0x700E06, 0xFF1000).setAutogen(FRAGMENT).n(); + public static final NTMMaterial MAT_OBSIDIAN = makeSmeltable(_VS + 02, df("Obsidian"), 0x3D234D).n(); + public static final NTMMaterial MAT_HEMATITE = makeAdditive( 2601, HEMATITE, 0xDFB7AE, 0x5F372E, 0x6E463D).m(); + public static final NTMMaterial MAT_WROUGHTIRON = makeSmeltable(2602, df("WroughtIron"), 0xFAAB89).m(); + public static final NTMMaterial MAT_PIGIRON = makeSmeltable(2603, df("PigIron"), 0xFF8B59).m(); + public static final NTMMaterial MAT_METEORICIRON = makeSmeltable(2604, df("MeteoricIron"), 0x715347).m(); + public static final NTMMaterial MAT_MALACHITE = makeAdditive( 2901, MALACHITE, 0xA2F0C8, 0x227048, 0x61AF87).m(); //Radioactive - public static final NTMMaterial MAT_URANIUM = makeSmeltable(9200, U, 0xC1C7BD, 0x2B3227, 0x9AA196).setShapes(FRAGMENT, NUGGET, BILLET, INGOT, DUST, BLOCK).m(); - public static final NTMMaterial MAT_U233 = makeSmeltable(9233, U233, 0xC1C7BD, 0x2B3227, 0x9AA196).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK).m(); - public static final NTMMaterial MAT_U235 = makeSmeltable(9235, U235, 0xC1C7BD, 0x2B3227, 0x9AA196).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK).m(); - public static final NTMMaterial MAT_U238 = makeSmeltable(9238, U238, 0xC1C7BD, 0x2B3227, 0x9AA196).setShapes(FRAGMENT, NUGGET, BILLET, INGOT, DUST, BLOCK).m(); - public static final NTMMaterial MAT_THORIUM = makeSmeltable(9032, TH232, 0xBF825F, 0x1C0000, 0xBF825F).setShapes(FRAGMENT, NUGGET, BILLET, INGOT, DUST, BLOCK).m(); - public static final NTMMaterial MAT_PLUTONIUM = makeSmeltable(9400, PU, 0x9AA3A0, 0x111A17, 0x78817E).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK).m(); - public static final NTMMaterial MAT_RGP = makeSmeltable(9401, PURG, 0x9AA3A0, 0x111A17, 0x78817E).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); - public static final NTMMaterial MAT_PU238 = makeSmeltable(9438, PU238, 0xFFBC59, 0xFF8E2B, 0x78817E).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); - public static final NTMMaterial MAT_PU239 = makeSmeltable(9439, PU239, 0x9AA3A0, 0x111A17, 0x78817E).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); - public static final NTMMaterial MAT_PU240 = makeSmeltable(9440, PU240, 0x9AA3A0, 0x111A17, 0x78817E).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); - public static final NTMMaterial MAT_PU241 = makeSmeltable(9441, PU241, 0x9AA3A0, 0x111A17, 0x78817E).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); - public static final NTMMaterial MAT_RGA = makeSmeltable(9501, AMRG, 0xCEB3B9, 0x3A1C21, 0x93767B).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); - public static final NTMMaterial MAT_AM241 = makeSmeltable(9541, AM241, 0xCEB3B9, 0x3A1C21, 0x93767B).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); - public static final NTMMaterial MAT_AM242 = makeSmeltable(9542, AM242, 0xCEB3B9, 0x3A1C21, 0x93767B).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); - public static final NTMMaterial MAT_NEPTUNIUM = makeSmeltable(9337, NP237, 0xA6B2A6, 0x030F03, 0x647064).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK).m(); - public static final NTMMaterial MAT_POLONIUM = makeSmeltable(8410, PO210, 0x968779, 0x3D1509, 0x715E4A).setShapes(FRAGMENT, NUGGET, BILLET, INGOT, DUST, BLOCK).m(); - public static final NTMMaterial MAT_TECHNETIUM = makeSmeltable(4399, TC99, 0xFAFFFF, 0x576C6C, 0xCADFDF).setShapes(FRAGMENT, NUGGET, BILLET, INGOT, BLOCK).m(); - public static final NTMMaterial MAT_RADIUM = makeSmeltable(8826, RA226, 0xFCFCFC, 0xADBFBA, 0xE9FAF6).setShapes(FRAGMENT, NUGGET, BILLET, INGOT, DUST, BLOCK).m(); - public static final NTMMaterial MAT_ACTINIUM = makeSmeltable(8927, AC227, 0xECE0E0, 0x221616, 0x958989).setShapes(NUGGET, BILLET, INGOT).m(); - public static final NTMMaterial MAT_CO60 = makeSmeltable(2760, CO60, 0xC2D1EE, 0x353554, 0x8F72AE).setShapes(NUGGET, BILLET, INGOT, DUST).m(); - public static final NTMMaterial MAT_AU198 = makeSmeltable(7998, AU198, 0xFFFF8B, 0xC26E00, 0xE8D754).setShapes(NUGGET, BILLET, INGOT, DUST).m(); - public static final NTMMaterial MAT_PB209 = makeSmeltable(8209, PB209, 0xB38A94, 0x12020E, 0x7B535D).setShapes(NUGGET, BILLET, INGOT, DUST).m(); - public static final NTMMaterial MAT_SCHRABIDIUM = makeSmeltable(12626, SA326, 0x32FFFF, 0x005C5C, 0x32FFFF).setShapes(NUGGET, WIRE, BILLET, INGOT, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK).m(); - public static final NTMMaterial MAT_SOLINIUM = makeSmeltable(12627, SA327, 0xA2E6E0, 0x00433D, 0x72B6B0).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); - public static final NTMMaterial MAT_SCHRABIDATE = makeSmeltable(12600, SBD, 0x77C0D7, 0x39005E, 0x6589B4).setShapes(INGOT, DUST, DENSEWIRE, CASTPLATE, BLOCK).m(); - public static final NTMMaterial MAT_SCHRARANIUM = makeSmeltable(12601, SRN, 0x2B3227, 0x2B3227, 0x24AFAC).setShapes(INGOT, BLOCK).m(); - public static final NTMMaterial MAT_GHIORSIUM = makeSmeltable(12836, GH336, 0xF4EFE1, 0x2A3306, 0xC6C6A1).setShapes(NUGGET, BILLET, INGOT, BLOCK).m(); + public static final NTMMaterial MAT_URANIUM = makeSmeltable(9200, U, 0xC1C7BD, 0x2B3227, 0x9AA196).setAutogen(FRAGMENT, NUGGET, BILLET, DUST, BLOCK).m(); + public static final NTMMaterial MAT_U233 = makeSmeltable(9233, U233, 0xC1C7BD, 0x2B3227, 0x9AA196).setAutogen(NUGGET, BILLET, DUST, BLOCK).m(); + public static final NTMMaterial MAT_U235 = makeSmeltable(9235, U235, 0xC1C7BD, 0x2B3227, 0x9AA196).setAutogen(NUGGET, BILLET, DUST, BLOCK).m(); + public static final NTMMaterial MAT_U238 = makeSmeltable(9238, U238, 0xC1C7BD, 0x2B3227, 0x9AA196).setAutogen(FRAGMENT, NUGGET, BILLET, DUST, BLOCK).m(); + public static final NTMMaterial MAT_THORIUM = makeSmeltable(9032, TH232, 0xBF825F, 0x1C0000, 0xBF825F).setAutogen(FRAGMENT, NUGGET, BILLET, DUST, BLOCK).m(); + public static final NTMMaterial MAT_PLUTONIUM = makeSmeltable(9400, PU, 0x9AA3A0, 0x111A17, 0x78817E).setAutogen(NUGGET, BILLET, DUST, BLOCK).m(); + public static final NTMMaterial MAT_RGP = makeSmeltable(9401, PURG, 0x9AA3A0, 0x111A17, 0x78817E).setAutogen(NUGGET, BILLET, BLOCK).m(); + public static final NTMMaterial MAT_PU238 = makeSmeltable(9438, PU238, 0xFFBC59, 0xFF8E2B, 0x78817E).setAutogen(NUGGET, BILLET, BLOCK).m(); + public static final NTMMaterial MAT_PU239 = makeSmeltable(9439, PU239, 0x9AA3A0, 0x111A17, 0x78817E).setAutogen(NUGGET, BILLET, BLOCK).m(); + public static final NTMMaterial MAT_PU240 = makeSmeltable(9440, PU240, 0x9AA3A0, 0x111A17, 0x78817E).setAutogen(NUGGET, BILLET, BLOCK).m(); + public static final NTMMaterial MAT_PU241 = makeSmeltable(9441, PU241, 0x9AA3A0, 0x111A17, 0x78817E).setAutogen(NUGGET, BILLET, BLOCK).m(); + public static final NTMMaterial MAT_RGA = makeSmeltable(9501, AMRG, 0xCEB3B9, 0x3A1C21, 0x93767B).setAutogen(NUGGET, BILLET, BLOCK).m(); + public static final NTMMaterial MAT_AM241 = makeSmeltable(9541, AM241, 0xCEB3B9, 0x3A1C21, 0x93767B).setAutogen(NUGGET, BILLET, BLOCK).m(); + public static final NTMMaterial MAT_AM242 = makeSmeltable(9542, AM242, 0xCEB3B9, 0x3A1C21, 0x93767B).setAutogen(NUGGET, BILLET, BLOCK).m(); + public static final NTMMaterial MAT_NEPTUNIUM = makeSmeltable(9337, NP237, 0xA6B2A6, 0x030F03, 0x647064).setAutogen(NUGGET, BILLET, DUST, BLOCK).m(); + public static final NTMMaterial MAT_POLONIUM = makeSmeltable(8410, PO210, 0x968779, 0x3D1509, 0x715E4A).setAutogen(FRAGMENT, NUGGET, BILLET, DUST, BLOCK).m(); + public static final NTMMaterial MAT_TECHNETIUM = makeSmeltable(4399, TC99, 0xFAFFFF, 0x576C6C, 0xCADFDF).setAutogen(FRAGMENT, NUGGET, BILLET, BLOCK).m(); + public static final NTMMaterial MAT_RADIUM = makeSmeltable(8826, RA226, 0xFCFCFC, 0xADBFBA, 0xE9FAF6).setAutogen(FRAGMENT, NUGGET, BILLET, DUST, BLOCK).m(); + public static final NTMMaterial MAT_ACTINIUM = makeSmeltable(8927, AC227, 0xECE0E0, 0x221616, 0x958989).setAutogen(NUGGET, BILLET).m(); + public static final NTMMaterial MAT_CO60 = makeSmeltable(2760, CO60, 0xC2D1EE, 0x353554, 0x8F72AE).setAutogen(NUGGET, BILLET, DUST).m(); + public static final NTMMaterial MAT_AU198 = makeSmeltable(7998, AU198, 0xFFFF8B, 0xC26E00, 0xE8D754).setAutogen(NUGGET, BILLET, DUST).m(); + public static final NTMMaterial MAT_PB209 = makeSmeltable(8209, PB209, 0xB38A94, 0x12020E, 0x7B535D).setAutogen(NUGGET, BILLET, DUST).m(); + public static final NTMMaterial MAT_SCHRABIDIUM = makeSmeltable(12626, SA326, 0x32FFFF, 0x005C5C, 0x32FFFF).setAutogen(NUGGET, WIRE, BILLET, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK).m(); + public static final NTMMaterial MAT_SOLINIUM = makeSmeltable(12627, SA327, 0xA2E6E0, 0x00433D, 0x72B6B0).setAutogen(NUGGET, BILLET, BLOCK).m(); + public static final NTMMaterial MAT_SCHRABIDATE = makeSmeltable(12600, SBD, 0x77C0D7, 0x39005E, 0x6589B4).setAutogen(DUST, DENSEWIRE, CASTPLATE, BLOCK).m(); + public static final NTMMaterial MAT_SCHRARANIUM = makeSmeltable(12601, SRN, 0x2B3227, 0x2B3227, 0x24AFAC).setAutogen(BLOCK).m(); + public static final NTMMaterial MAT_GHIORSIUM = makeSmeltable(12836, GH336, 0xF4EFE1, 0x2A3306, 0xC6C6A1).setAutogen(NUGGET, BILLET, BLOCK).m(); //Base metals - public static final NTMMaterial MAT_TITANIUM = makeSmeltable(2200, TI, 0xF7F3F2, 0x4F4C4B, 0xA99E79).setShapes(FRAGMENT, INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, BLOCK, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_COPPER = makeSmeltable(2900, CU, 0xFDCA88, 0x601E0D, 0xC18336).setShapes(FRAGMENT, WIRE, INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(7400, W, 0x868686, 0x000000, 0x977474).setShapes(FRAGMENT, WIRE, BOLT, INGOT, DUST, DENSEWIRE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_ALUMINIUM = makeSmeltable(1300, AL, 0xFFFFFF, 0x344550, 0xD0B8EB).setShapes(FRAGMENT, WIRE, INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_LEAD = makeSmeltable(8200, PB, 0xA6A6B2, 0x03030F, 0x646470).setShapes(FRAGMENT, NUGGET, WIRE, INGOT, DUST, PLATE, CASTPLATE, PIPE, BLOCK, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_BISMUTH = makeSmeltable(8300, BI, 0xB200FF, 0xB200FF, 0xB200FF).setShapes(FRAGMENT, NUGGET, BILLET, INGOT, DUST, BLOCK).m(); - public static final NTMMaterial MAT_ARSENIC = makeSmeltable(3300, AS, 0x6CBABA, 0x242525, 0x558080).setShapes(NUGGET, INGOT).m(); - public static final NTMMaterial MAT_TANTALIUM = makeSmeltable(7300, TA, 0xFFFFFF, 0x1D1D36, 0xA89B74).setShapes(NUGGET, INGOT, DUST, BLOCK).m(); - public static final NTMMaterial MAT_NEODYMIUM = makeSmeltable(6000, ND, 0xE6E6B6, 0x1C1C00, 0x8F8F5F).setShapes(FRAGMENT, NUGGET, DUSTTINY, INGOT, DUST, DENSEWIRE, BLOCK).m(); - public static final NTMMaterial MAT_NIOBIUM = makeSmeltable(4100, NB, 0xB76EC9, 0x2F2D42, 0xD576B1).setShapes(FRAGMENT, NUGGET, DUSTTINY, INGOT, DUST, BLOCK).m(); - public static final NTMMaterial MAT_BERYLLIUM = makeSmeltable(400, BE, 0xB2B2A6, 0x0F0F03, 0xAE9572).setShapes(FRAGMENT, NUGGET, INGOT, DUST, BLOCK).m(); - public static final NTMMaterial MAT_EMERALD = makeNonSmeltable(401, EMERALD, 0xBAFFD4, 0x003900, 0x17DD62).setConversion(MAT_BERYLLIUM, 4, 3).setShapes(FRAGMENT, DUST, GEM, BLOCK).n(); - public static final NTMMaterial MAT_COBALT = makeSmeltable(2700, CO, 0xC2D1EE, 0x353554, 0x8F72AE).setShapes(FRAGMENT, NUGGET, DUSTTINY, BILLET, INGOT, DUST, BLOCK).m(); - public static final NTMMaterial MAT_BORON = makeSmeltable(500, B, 0xBDC8D2, 0x29343E, 0xAD72AE).setShapes(FRAGMENT, DUSTTINY, INGOT, DUST, BLOCK).m(); - public static final NTMMaterial MAT_BORAX = makeSmeltable(501, BORAX, 0xFFFFFF, 0x946E23, 0xFFECC6).setShapes(FRAGMENT, DUST).n(); - public static final NTMMaterial MAT_LANTHANIUM = makeSmeltable(5700, LA, 0xC8E0E0, 0x3B5353, 0xA1B9B9).setShapes(FRAGMENT, INGOT, BLOCK).m(); - public static final NTMMaterial MAT_ZIRCONIUM = makeSmeltable(4000, ZR, 0xE3DCBE, 0x3E3719, 0xADA688).setShapes(FRAGMENT, NUGGET, WIRE, DUSTTINY, BILLET, INGOT, DUST, CASTPLATE, WELDEDPLATE, BLOCK).m(); - public static final NTMMaterial MAT_SODIUM = makeSmeltable(1100, NA, 0xD3BF9E, 0x3A5A6B, 0x7E9493).setShapes(FRAGMENT, DUST).m(); - public static final NTMMaterial MAT_SODALITE = makeNonSmeltable(1101, SODALITE, 0xDCE5F6, 0x4927B4, 0x96A7E6).setShapes(FRAGMENT, GEM).n(); - public static final NTMMaterial MAT_STRONTIUM = makeSmeltable(3800, SR, 0xF1E8BA, 0x271E00, 0xCAC193).setShapes(FRAGMENT, DUST).m(); - public static final NTMMaterial MAT_CALCIUM = makeSmeltable(2000, CA, 0xCFCFA6, 0x747F6E, 0xB7B784).setShapes(INGOT, DUST).m(); - public static final NTMMaterial MAT_LITHIUM = makeSmeltable(300, LI, 0xFFFFFF, 0x818181, 0xD6D6D6).setShapes(FRAGMENT, INGOT, DUST, BLOCK).m(); - public static final NTMMaterial MAT_SULFUR = makeNonSmeltable(1600, S, 0xFCEE80, 0xBDA022, 0xF1DF68).setShapes(FRAGMENT, DUST, BLOCK).n(); - public static final NTMMaterial MAT_KNO = makeNonSmeltable(700, KNO, 0xD4D4D4, 0x969696, 0xC9C9C9).setShapes(FRAGMENT, DUST, BLOCK).n(); - public static final NTMMaterial MAT_FLUORITE = makeNonSmeltable(900, F, 0xFFFFFF, 0xB0A192, 0xE1DBD4).setShapes(FRAGMENT, DUST, BLOCK).n(); - public static final NTMMaterial MAT_PHOSPHORUS = makeNonSmeltable(1500, P_RED, 0xCB0213, 0x600006, 0xBA0615).setShapes(FRAGMENT, DUST, BLOCK).n(); - public static final NTMMaterial MAT_CHLOROCALCITE = makeNonSmeltable(1701, CHLOROCALCITE, 0xF7E761, 0x475B46, 0xB8B963).setShapes(FRAGMENT, DUST).n(); - public static final NTMMaterial MAT_MOLYSITE = makeNonSmeltable(1702, MOLYSITE, 0xF9E97B, 0x216E00, 0xD0D264).setShapes(FRAGMENT, DUST).n(); - public static final NTMMaterial MAT_CINNABAR = makeNonSmeltable(8001, CINNABAR, 0xD87070, 0x993030, 0xBF4E4E).setShapes(FRAGMENT, GEM).n(); - public static final NTMMaterial MAT_CADMIUM = makeSmeltable(4800, CD, 0xFFFADE, 0x350000, 0xA85600).setShapes(INGOT, DUST).m(); - public static final NTMMaterial MAT_SILICON = makeSmeltable(1400, SI, 0xD1D7DF, 0x1A1A3D, 0x878B9E).setShapes(FRAGMENT, NUGGET, BILLET, INGOT).m(); - public static final NTMMaterial MAT_ASBESTOS = makeSmeltable(1401, ASBESTOS, 0xD8D9CF, 0x616258, 0xB0B3A8).setShapes(FRAGMENT, INGOT, BLOCK).n(); - public static final NTMMaterial MAT_OSMIRIDIUM = makeSmeltable(7699, OSMIRIDIUM, 0xDBE3EF, 0x7891BE, 0xACBDD9).setShapes(NUGGET, INGOT, CASTPLATE, WELDEDPLATE).m(); + public static final NTMMaterial MAT_TITANIUM = makeSmeltable(2200, TI, 0xF7F3F2, 0x4F4C4B, 0xA99E79).setAutogen(FRAGMENT, DUST, PLATE, DENSEWIRE, CASTPLATE, WELDEDPLATE, SHELL, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_COPPER = makeSmeltable(2900, CU, 0xFDCA88, 0x601E0D, 0xC18336).setAutogen(FRAGMENT, WIRE, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(7400, W, 0x868686, 0x000000, 0x977474).setAutogen(FRAGMENT, WIRE, BOLT, DUST, DENSEWIRE, CASTPLATE, WELDEDPLATE, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_ALUMINIUM = makeSmeltable(1300, AL, 0xFFFFFF, 0x344550, 0xD0B8EB).setAutogen(FRAGMENT, WIRE, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_LEAD = makeSmeltable(8200, PB, 0xA6A6B2, 0x03030F, 0x646470).setAutogen(FRAGMENT, NUGGET, WIRE, BOLT, DUST, PLATE, CASTPLATE, PIPE, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_BISMUTH = makeSmeltable(8300, BI, 0xB200FF, 0xB200FF, 0xB200FF).setAutogen(FRAGMENT, NUGGET, BILLET, DUST, BLOCK).m(); + public static final NTMMaterial MAT_ARSENIC = makeSmeltable(3300, AS, 0x6CBABA, 0x242525, 0x558080).setAutogen(NUGGET).m(); + public static final NTMMaterial MAT_TANTALIUM = makeSmeltable(7300, TA, 0xFFFFFF, 0x1D1D36, 0xA89B74).setAutogen(NUGGET, DUST, BLOCK).m(); + public static final NTMMaterial MAT_NEODYMIUM = makeSmeltable(6000, ND, 0xE6E6B6, 0x1C1C00, 0x8F8F5F).setAutogen(FRAGMENT, NUGGET, DUSTTINY, INGOT, DUST, DENSEWIRE, BLOCK).m(); + public static final NTMMaterial MAT_NIOBIUM = makeSmeltable(4100, NB, 0xB76EC9, 0x2F2D42, 0xD576B1).setAutogen(FRAGMENT, NUGGET, DUSTTINY, DUST, DENSEWIRE, BLOCK).m(); + public static final NTMMaterial MAT_BERYLLIUM = makeSmeltable(400, BE, 0xB2B2A6, 0x0F0F03, 0xAE9572).setAutogen(FRAGMENT, NUGGET, DUST, BLOCK).m(); + public static final NTMMaterial MAT_EMERALD = makeNonSmeltable(401, EMERALD, 0xBAFFD4, 0x003900, 0x17DD62).setConversion(MAT_BERYLLIUM, 4, 3).setAutogen(FRAGMENT, DUST, GEM, BLOCK).n(); + public static final NTMMaterial MAT_COBALT = makeSmeltable(2700, CO, 0xC2D1EE, 0x353554, 0x8F72AE).setAutogen(FRAGMENT, NUGGET, DUSTTINY, BILLET, DUST, BLOCK).m(); + public static final NTMMaterial MAT_BORON = makeSmeltable(500, B, 0xBDC8D2, 0x29343E, 0xAD72AE).setAutogen(FRAGMENT, DUSTTINY, DUST, BLOCK).m(); + public static final NTMMaterial MAT_BORAX = makeSmeltable(501, BORAX, 0xFFFFFF, 0x946E23, 0xFFECC6).setAutogen(FRAGMENT, INGOT, DUST).n(); + public static final NTMMaterial MAT_LANTHANIUM = makeSmeltable(5700, LA, 0xC8E0E0, 0x3B5353, 0xA1B9B9).setAutogen(FRAGMENT, BLOCK).m(); + public static final NTMMaterial MAT_ZIRCONIUM = makeSmeltable(4000, ZR, 0xE3DCBE, 0x3E3719, 0xADA688).setAutogen(FRAGMENT, NUGGET, WIRE, DUSTTINY, BILLET, DUST, CASTPLATE, WELDEDPLATE, BLOCK).m(); + public static final NTMMaterial MAT_SODIUM = makeSmeltable(1100, NA, 0xD3BF9E, 0x3A5A6B, 0x7E9493).setAutogen(FRAGMENT, INGOT, DUST).m(); + public static final NTMMaterial MAT_SODALITE = makeNonSmeltable(1101, SODALITE, 0xDCE5F6, 0x4927B4, 0x96A7E6).setAutogen(FRAGMENT, GEM).n(); + public static final NTMMaterial MAT_STRONTIUM = makeSmeltable(3800, SR, 0xF1E8BA, 0x271E00, 0xCAC193).setAutogen(FRAGMENT, INGOT, DUST).m(); + public static final NTMMaterial MAT_CALCIUM = makeSmeltable(2000, CA, 0xCFCFA6, 0x747F6E, 0xB7B784).setAutogen(DUST).m(); + public static final NTMMaterial MAT_LITHIUM = makeSmeltable(300, LI, 0xFFFFFF, 0x818181, 0xD6D6D6).setAutogen(FRAGMENT, DUST, BLOCK).m(); + public static final NTMMaterial MAT_SULFUR = makeNonSmeltable(1600, S, 0xFCEE80, 0xBDA022, 0xF1DF68).setAutogen(FRAGMENT, DUST, BLOCK).n(); + public static final NTMMaterial MAT_KNO = makeNonSmeltable(700, KNO, 0xD4D4D4, 0x969696, 0xC9C9C9).setAutogen(FRAGMENT, DUST, BLOCK).n(); + public static final NTMMaterial MAT_FLUORITE = makeNonSmeltable(900, F, 0xFFFFFF, 0xB0A192, 0xE1DBD4).setAutogen(FRAGMENT, DUST, BLOCK).n(); + public static final NTMMaterial MAT_PHOSPHORUS = makeNonSmeltable(1500, P_RED, 0xCB0213, 0x600006, 0xBA0615).setAutogen(FRAGMENT, DUST, BLOCK).n(); + public static final NTMMaterial MAT_CHLOROCALCITE = makeNonSmeltable(1701, CHLOROCALCITE, 0xF7E761, 0x475B46, 0xB8B963).setAutogen(FRAGMENT, DUST).n(); + public static final NTMMaterial MAT_MOLYSITE = makeNonSmeltable(1702, MOLYSITE, 0xF9E97B, 0x216E00, 0xD0D264).setAutogen(FRAGMENT, DUST).n(); + public static final NTMMaterial MAT_CINNABAR = makeNonSmeltable(8001, CINNABAR, 0xD87070, 0x993030, 0xBF4E4E).setAutogen(FRAGMENT, GEM).n(); + public static final NTMMaterial MAT_CADMIUM = makeSmeltable(4800, CD, 0xFFFADE, 0x350000, 0xA85600).setAutogen(DUST).m(); + public static final NTMMaterial MAT_SILICON = makeSmeltable(1400, SI, 0xD1D7DF, 0x1A1A3D, 0x878B9E).setAutogen(FRAGMENT, NUGGET, BILLET).m(); + public static final NTMMaterial MAT_ASBESTOS = makeSmeltable(1401, ASBESTOS, 0xD8D9CF, 0x616258, 0xB0B3A8).setAutogen(FRAGMENT, BLOCK).n(); + public static final NTMMaterial MAT_OSMIRIDIUM = makeSmeltable(7699, OSMIRIDIUM, 0xDBE3EF, 0x7891BE, 0xACBDD9).setAutogen(NUGGET, CASTPLATE, WELDEDPLATE).m(); //Alloys - public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0xAFAFAF, 0x0F0F0F, 0x4A4A4A).setShapes(DUSTTINY, BOLT, WIRE, INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_MINGRADE = makeSmeltable(_AS + 1, MINGRADE, 0xFFBA7D, 0xAF1700, 0xE44C0F).setShapes(WIRE, INGOT, DUST, BLOCK).m(); - public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setShapes(WIRE, INGOT, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_DURA = makeSmeltable(_AS + 3, DURA, 0x183039, 0x030B0B, 0x376373).setShapes(BOLT, INGOT, DUST, PIPE, BLOCK).m(); - public static final NTMMaterial MAT_SATURN = makeSmeltable(_AS + 4, BIGMT, 0x4DA3AF, 0x00000C, 0x4DA3AF).setShapes(INGOT, DUST, PLATE, CASTPLATE, BLOCK).m(); - public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setShapes(INGOT, DUST, CASTPLATE, BLOCK, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0xCCCCEA, 0x11111A, 0xA5A5D3).setShapes(INGOT, DUST, DENSEWIRE, BLOCK).m(); - public static final NTMMaterial MAT_FERRO = makeSmeltable(_AS + 7, FERRO, 0xB7B7C9, 0x101022, 0x6B6B8B).setShapes(INGOT).m(); - public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setShapes(INGOT, DUST, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setShapes(INGOT, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_BBRONZE = makeSmeltable(_AS + 16, BBRONZE, 0xE19A69, 0x485353, 0x987D65).setShapes(INGOT, CASTPLATE).m(); - public static final NTMMaterial MAT_ABRONZE = makeSmeltable(_AS + 17, ABRONZE, 0xDB9462, 0x203331, 0x77644D).setShapes(INGOT, CASTPLATE).m(); - public static final NTMMaterial MAT_BSCCO = makeSmeltable(_AS + 18, BSCCO, 0x767BF1, 0x000000, 0x5E62C0).setShapes(INGOT, DENSEWIRE).m(); - public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(_AS + 8, MAGTUNG, 0x22A2A2, 0x0F0F0F, 0x22A2A2).setShapes(WIRE, INGOT, DUST, DENSEWIRE, BLOCK).m(); - public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setShapes(INGOT, DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK).m(); - public static final NTMMaterial MAT_DNT = makeSmeltable(_AS + 15, DNT, 0x7582B9, 0x16000E, 0x455289).setShapes(INGOT, DUST, DENSEWIRE, BLOCK).m(); - public static final NTMMaterial MAT_FLUX = makeAdditive(_AS + 10, df("Flux"), 0xF1E0BB, 0x6F6256, 0xDECCAD).setShapes(DUST).n(); - public static final NTMMaterial MAT_SLAG = makeSmeltable(_AS + 11, SLAG, 0x554940, 0x34281F, 0x6C6562).setShapes(BLOCK).n(); - public static final NTMMaterial MAT_MUD = makeSmeltable(_AS + 14, MUD, 0xBCB5A9, 0x481213, 0x96783B).setShapes(INGOT).n(); + public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0xAFAFAF, 0x0F0F0F, 0x4A4A4A).setAutogen(DUSTTINY, BOLT, WIRE, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, GRIP).m(); + public static final NTMMaterial MAT_MINGRADE = makeSmeltable(_AS + 1, MINGRADE, 0xFFBA7D, 0xAF1700, 0xE44C0F).setAutogen(WIRE, DUST, BLOCK).m(); + public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setAutogen(WIRE, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_DURA = makeSmeltable(_AS + 3, DURA, 0x183039, 0x030B0B, 0x376373).setAutogen(BOLT, DUST, PIPE, BLOCK, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, GRIP).m(); + public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setAutogen(DUST, CASTPLATE, BLOCK, HEAVY_COMPONENT, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, STOCK, GRIP).m(); + public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0xCCCCEA, 0x11111A, 0xA5A5D3).setAutogen(DUST, DENSEWIRE, BLOCK).m(); + public static final NTMMaterial MAT_FERRO = makeSmeltable(_AS + 7, FERRO, 0xB7B7C9, 0x101022, 0x6B6B8B).setAutogen(HEAVYBARREL, HEAVYRECEIVER).m(); + public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setAutogen(DUST, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER).m(); + public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setAutogen(CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER).m(); + public static final NTMMaterial MAT_BBRONZE = makeSmeltable(_AS + 16, BBRONZE, 0xE19A69, 0x485353, 0x987D65).setAutogen(CASTPLATE, LIGHTBARREL, LIGHTRECEIVER).m(); + public static final NTMMaterial MAT_ABRONZE = makeSmeltable(_AS + 17, ABRONZE, 0xDB9462, 0x203331, 0x77644D).setAutogen(CASTPLATE, LIGHTBARREL, LIGHTRECEIVER).m(); + public static final NTMMaterial MAT_BSCCO = makeSmeltable(_AS + 18, BSCCO, 0x767BF1, 0x000000, 0x5E62C0).setAutogen(DENSEWIRE).m(); + public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(_AS + 8, MAGTUNG, 0x22A2A2, 0x0F0F0F, 0x22A2A2).setAutogen(WIRE, DUST, DENSEWIRE, BLOCK).m(); + public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setAutogen(DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK).m(); + public static final NTMMaterial MAT_DNT = makeSmeltable(_AS + 15, DNT, 0x7582B9, 0x16000E, 0x455289).setAutogen(DUST, DENSEWIRE, BLOCK).m(); + public static final NTMMaterial MAT_FLUX = makeAdditive(_AS + 10, df("Flux"), 0xF1E0BB, 0x6F6256, 0xDECCAD).setAutogen(DUST).n(); + public static final NTMMaterial MAT_SLAG = makeSmeltable(_AS + 11, SLAG, 0x554940, 0x34281F, 0x6C6562).setAutogen(BLOCK).n(); + public static final NTMMaterial MAT_MUD = makeSmeltable(_AS + 14, MUD, 0xBCB5A9, 0x481213, 0x96783B).n(); + public static final NTMMaterial MAT_GUNMETAL = makeSmeltable(_AS + 19, GUNMETAL, 0xFFEF3F, 0xAD3600, 0xF9C62C).setAutogen(LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).n(); + public static final NTMMaterial MAT_WEAPONSTEEL = makeSmeltable(_AS + 20, WEAPONSTEEL, 0xA0A0A0, 0x000000, 0x808080).setAutogen(SHELL, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).n(); + public static final NTMMaterial MAT_SATURN = makeSmeltable(_AS + 4, BIGMT, 0x3AC4DA, 0x09282C, 0x30A4B7).setAutogen(PLATE, CASTPLATE, SHELL, BLOCK, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).m(); //Extension - public static final NTMMaterial MAT_RAREEARTH = makeNonSmeltable(_ES + 00, RAREEARTH, 0xC1BDBD, 0x384646, 0x7B7F7F).setShapes(FRAGMENT, INGOT).n(); + public static final NTMMaterial MAT_RAREEARTH = makeNonSmeltable(_ES + 00, RAREEARTH, 0xC1BDBD, 0x384646, 0x7B7F7F).setAutogen(FRAGMENT).n(); + public static final NTMMaterial MAT_POLYMER = makeNonSmeltable(_ES + 01, POLYMER, 0x363636, 0x040404, 0x272727).setAutogen(STOCK, GRIP).n(); + public static final NTMMaterial MAT_BAKELITE = makeNonSmeltable(_ES + 02, BAKELITE, 0xF28086, 0x2B0608, 0xC93940).setAutogen(STOCK, GRIP).n(); + public static final NTMMaterial MAT_RUBBER = makeNonSmeltable(_ES + 03, RUBBER, 0x817F75, 0x0F0D03, 0x4B4A3F).setAutogen(PIPE, GRIP).n(); + public static final NTMMaterial MAT_HARDPLASTIC = makeNonSmeltable(_ES + 04, PC, 0xEDE7C4, 0x908A67, 0xE1DBB8).setAutogen(STOCK, GRIP).n(); + public static final NTMMaterial MAT_PVC = makeNonSmeltable(_ES + 05, PVC, 0xFCFCFC, 0x9F9F9F, 0xF0F0F0).setAutogen(STOCK, GRIP).n(); public static NTMMaterial makeSmeltable(int id, DictFrame dict, int color) { return makeSmeltable(id, dict, color, color, color); } @@ -199,7 +208,7 @@ public class Mats { String materialName = name.substring(prefix.length()); NTMMaterial material = matByName.get(materialName); - if(material != null) { + if(material != null && (material.smeltsInto.smeltable == SmeltingBehavior.SMELTABLE || material.smeltsInto.smeltable == SmeltingBehavior.ADDITIVE)) { list.add(new MaterialStack(material, prefixEntry.getValue().q(1))); break outer; } @@ -211,7 +220,7 @@ public class Mats { List entries = materialEntries.get(new ComparableStack(stack).makeSingular()); if(entries != null) { - list.addAll(entries); + entries.forEach(x -> { if(x != null) list.add(x); }); } if(stack.getItem() == ModItems.scraps) { diff --git a/src/main/java/com/hbm/inventory/material/NTMMaterial.java b/src/main/java/com/hbm/inventory/material/NTMMaterial.java index 193ad939a..7f15f1bed 100644 --- a/src/main/java/com/hbm/inventory/material/NTMMaterial.java +++ b/src/main/java/com/hbm/inventory/material/NTMMaterial.java @@ -18,7 +18,7 @@ public class NTMMaterial { public final int id; public String[] names; - public Set shapes = new HashSet(); + public Set autogen = new HashSet(); public Set traits = new HashSet(); public SmeltingBehavior smeltable = SmeltingBehavior.NOT_SMELTABLE; public int solidColorLight = 0xFF4A00; @@ -58,8 +58,8 @@ public class NTMMaterial { } /** Shapes for autogen */ - public NTMMaterial setShapes(MaterialShapes... shapes) { - for(MaterialShapes shape : shapes) this.shapes.add(shape); + public NTMMaterial setAutogen(MaterialShapes... shapes) { + for(MaterialShapes shape : shapes) this.autogen.add(shape); return this; } diff --git a/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java b/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java new file mode 100644 index 000000000..e1fddc0de --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java @@ -0,0 +1,483 @@ +package com.hbm.inventory.recipes; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import static com.hbm.inventory.OreDictManager.*; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.inventory.OreDictManager.DictFrame; +import com.hbm.inventory.RecipesCommon.AStack; +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.EnumCasingType; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; + +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; + +public class AmmoPressRecipes extends SerializableRecipe { + + public static List recipes = new ArrayList(); + + @Override + public void registerDefaults() { + + OreDictStack lead = new OreDictStack(PB.ingot()); + OreDictStack nugget = new OreDictStack(PB.nugget()); + OreDictStack flechette = new OreDictStack(PB.bolt()); + OreDictStack steel = new OreDictStack(STEEL.ingot()); + OreDictStack wSteel = new OreDictStack(WEAPONSTEEL.ingot()); + OreDictStack copper = new OreDictStack(CU.ingot()); + OreDictStack plastic = new OreDictStack(ANY_PLASTIC.ingot()); + OreDictStack uranium = new OreDictStack(U238.ingot()); + ComparableStack smokeful = new ComparableStack(Items.gunpowder); + OreDictStack smokeless = new OreDictStack(ANY_SMOKELESS.dust()); + ComparableStack rocket = new ComparableStack(ModItems.rocket_fuel); + OreDictStack he = new OreDictStack(ANY_HIGHEXPLOSIVE.ingot()); + OreDictStack wp = new OreDictStack(P_WHITE.ingot()); + OreDictStack rp = new OreDictStack(P_RED.dust()); + ComparableStack cSmall = new ComparableStack(ModItems.casing, 1, EnumCasingType.SMALL); + ComparableStack cBig = new ComparableStack(ModItems.casing, 1, EnumCasingType.LARGE); + ComparableStack sSmall = new ComparableStack(ModItems.casing, 1, EnumCasingType.SMALL_STEEL); + ComparableStack sBig = new ComparableStack(ModItems.casing, 1, EnumCasingType.LARGE_STEEL); + ComparableStack bpShell = new ComparableStack(ModItems.casing, 1, EnumCasingType.SHOTSHELL); + ComparableStack pShell = new ComparableStack(ModItems.casing, 1, EnumCasingType.BUCKSHOT); + ComparableStack sShell = new ComparableStack(ModItems.casing, 1, EnumCasingType.BUCKSHOT_ADVANCED); + + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M357_BP, 16), + null, lead.copy(2), null, + null, smokeful, null, + null, cSmall, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M357_SP, 8), + null, lead, null, + null, smokeless, null, + null, cSmall, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M357_FMJ, 8), + null, steel, null, + null, smokeless, null, + null, cSmall, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M357_JHP, 8), + plastic, copper, null, + null, smokeless, null, + null, cSmall, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M357_AP, 8), + null, wSteel, null, + null, smokeless.copy(2), null, + null, sSmall, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M357_EXPRESS, 8), + null, steel, null, + null, smokeless.copy(3), null, + null, cSmall, null)); + + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M44_BP, 12), + null, lead.copy(2), null, + null, smokeful, null, + null, cSmall, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M44_SP, 6), + null, lead, null, + null, smokeless, null, + null, cSmall, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M44_FMJ, 6), + null, steel, null, + null, smokeless, null, + null, cSmall, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M44_JHP, 6), + plastic, copper, null, + null, smokeless, null, + null, cSmall, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M44_AP, 6), + null, wSteel, null, + null, smokeless.copy(2), null, + null, sSmall, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.M44_EXPRESS, 6), + null, steel, null, + null, smokeless.copy(3), null, + null, cSmall, null)); + + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.P22_SP, 24), + null, lead, null, + null, smokeless, null, + null, cSmall, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.P22_FMJ, 24), + null, steel, null, + null, smokeless, null, + null, cSmall, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.P22_JHP, 24), + plastic, copper, null, + null, smokeless, null, + null, cSmall, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.P22_AP, 24), + null, wSteel, null, + null, smokeless.copy(2), null, + null, sSmall, null)); + + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.P9_SP, 12), + null, lead, null, + null, smokeless, null, + null, cSmall, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.P9_FMJ, 12), + null, steel, null, + null, smokeless, null, + null, cSmall, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.P9_JHP, 12), + plastic, copper, null, + null, smokeless, null, + null, cSmall, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.P9_AP, 12), + null, wSteel, null, + null, smokeless.copy(2), null, + null, sSmall, null)); + + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.R556_SP, 16), + null, lead.copy(2), null, + null, smokeless.copy(2), null, + null, cSmall.copy(2), null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.R556_FMJ, 16), + null, steel.copy(2), null, + null, smokeless.copy(2), null, + null, cSmall.copy(2), null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.R556_JHP, 16), + plastic, copper.copy(2), null, + null, smokeless.copy(2), null, + null, cSmall.copy(2), null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.R556_AP, 16), + null, wSteel.copy(2), null, + null, smokeless.copy(4), null, + null, sSmall.copy(2), null)); + + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.R762_SP, 12), + null, lead.copy(2), null, + null, smokeless.copy(2), null, + null, cSmall.copy(2), null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.R762_FMJ, 12), + null, steel.copy(2), null, + null, smokeless.copy(2), null, + null, cSmall.copy(2), null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.R762_JHP, 12), + plastic, copper.copy(2), null, + null, smokeless.copy(2), null, + null, cSmall.copy(2), null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.R762_AP, 12), + null, wSteel.copy(2), null, + null, smokeless.copy(4), null, + null, sSmall.copy(2), null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.R762_DU, 12), + null, uranium.copy(2), null, + null, smokeless.copy(4), null, + null, sSmall.copy(2), null)); + + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.BMG50_SP, 12), + null, lead.copy(2), null, + null, smokeless.copy(3), null, + null, cBig, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.BMG50_FMJ, 12), + null, steel.copy(2), null, + null, smokeless.copy(3), null, + null, cBig, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.BMG50_JHP, 12), + plastic, copper.copy(2), null, + null, smokeless.copy(3), null, + null, cBig, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.BMG50_AP, 12), + null, wSteel.copy(2), null, + null, smokeless.copy(6), null, + null, sBig, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.BMG50_DU, 12), + null, uranium.copy(2), null, + null, smokeless.copy(6), null, + null, sBig, null)); + + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G12_BP, 6), + null, nugget.copy(6), null, + null, smokeful, null, + null, bpShell, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G12_BP_MAGNUM, 6), + null, nugget.copy(8), null, + null, smokeful, null, + null, bpShell, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G12_BP_SLUG, 6), + null, lead, null, + null, smokeful, null, + null, bpShell, null)); + + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G12, 6), + null, nugget.copy(6), null, + null, smokeless, null, + null, pShell, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G12_SLUG, 6), + null, lead, null, + null, smokeless, null, + null, pShell, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G12_FLECHETTE, 6), + null, flechette.copy(12), null, + null, smokeless, null, + null, pShell, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G12_MAGNUM, 6), + null, nugget.copy(8), null, + null, smokeless, null, + null, sShell, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G12_EXPLOSIVE, 6), + null, he, null, + null, smokeless, null, + null, sShell, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G12_PHOSPHORUS, 6), + null, wp, null, + null, smokeless, null, + null, sShell, null)); + + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G10, 4), + null, nugget.copy(8), null, + null, smokeless.copy(2), null, + null, sShell, null)); + + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G10_SHRAPNEL, 4), + plastic, nugget.copy(8), null, + null, smokeless.copy(2), null, + null, sShell, null)); + + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G10_DU, 4), + null, uranium, null, + null, smokeless.copy(2), null, + null, sShell, null)); + + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G10_SLUG, 4), + null, lead, null, + null, smokeless.copy(2), null, + null, sShell, null)); + + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G26_FLARE, 4), + null, rp, null, + null, smokeless, null, + null, cBig, null)); + + ComparableStack dyn = new ComparableStack(ModItems.ball_dynamite); + OreDictStack coplate = new OreDictStack(CU.plate()); + OreDictStack diesel = new OreDictStack(Fluids.DIESEL.getDict(1_000)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_HE, 4), + null, dyn, null, + null, smokeless, null, + null, cBig, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_HEAT, 4), + coplate, he, null, + null, smokeless, null, + null, cBig, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_DEMO, 4), + null, he.copy(2), null, + null, smokeless, null, + null, cBig, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_INC, 4), + diesel, dyn, null, + null, smokeless, null, + null, cBig, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_PHOSPHORUS, 4), + wp, he, null, + null, smokeless, null, + null, cBig, null)); + + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_HE, 2), + null, dyn, null, + null, cBig, null, + null, smokeless.copy(3), null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_HE, 2), + null, dyn, null, + null, cBig, null, + null, rocket, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_HEAT, 2), + coplate, he, null, + null, cBig, null, + null, smokeless.copy(3), null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_HEAT, 2), + coplate, he, null, + null, cBig, null, + null, rocket, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_DEMO, 2), + null, he.copy(2), null, + null, cBig, null, + null, smokeless.copy(3), null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_DEMO, 2), + null, he.copy(2), null, + null, cBig, null, + null, rocket, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_INC, 2), + diesel, dyn, null, + null, cBig, null, + null, smokeless.copy(3), null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_INC, 2), + diesel, dyn, null, + null, cBig, null, + null, rocket, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_PHOSPHORUS, 2), + wp, he, null, + null, cBig, null, + null, smokeless.copy(3), null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_PHOSPHORUS, 2), + wp, he, null, + null, cBig, null, + null, rocket, null)); + + OreDictStack sPlate = new OreDictStack(STEEL.plate()); + ComparableStack napalm = new ComparableStack(ModItems.canister_napalm); + OreDictStack gas = new OreDictStack(Fluids.GAS.getDict(1000)); + OreDictStack bf = new OreDictStack(Fluids.BALEFIRE.getDict(1000)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.FLAME_DIESEL, 1), + null, sPlate, null, + null, diesel, null, + null, sPlate, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.FLAME_NAPALM, 1), + null, sPlate, null, + null, napalm, null, + null, sPlate, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.FLAME_GAS, 1), + null, sPlate, null, + null, gas, null, + null, sPlate, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.FLAME_BALEFIRE, 1), + null, sPlate, null, + null, bf, null, + null, sPlate, null)); + + OreDictStack silicon = new OreDictStack(SI.billet()); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.CAPACITOR, 4), + null, plastic, null, + null, silicon.copy(4), null, + null, plastic, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.CAPACITOR_OVERCHARGE, 4), + null, plastic, null, + null, silicon.copy(6), null, + null, plastic, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.CAPACITOR_IR, 4), + null, plastic, null, + null, silicon.copy(4), null, + null, plastic, null)); + + OreDictStack lPlate = new OreDictStack(PB.plate()); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.TAU_URANIUM, 16), + null, lPlate, null, + null, uranium, null, + null, lPlate , null)); + + OreDictStack tungsten = new OreDictStack(W.ingot()); + OreDictStack ferro = new OreDictStack(FERRO.ingot()); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.COIL_TUNGSTEN, 4), + null, null, null, + null, tungsten, null, + null, null , null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.COIL_FERROURANIUM, 4), + null, null, null, + null, ferro, null, + null, null , null)); + + ComparableStack shell = new ComparableStack(ModItems.assembly_nuke); + ComparableStack tatb = new ComparableStack(ModItems.ball_tatb); + OreDictStack plutonium = new OreDictStack(PU239.nugget()); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_STANDARD, 1), + null, plutonium, null, + null, shell, null, + null, null , null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_DEMO, 1), + null, plutonium.copy(2), null, + null, shell, null, + null, null , null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_HIGH, 1), + null, plutonium.copy(4), null, + null, shell, null, + null, null , null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_TOTS, 1), + null, plutonium.copy(2), null, + null, tatb.copy(2), null, + null, sPlate.copy(4) , null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_HIVE, 1), + null, he.copy(8), null, + null, sBig.copy(2), null, + null, sPlate.copy(4), null)); + } + + public static HashMap getRecipes() { + HashMap recipes = new HashMap(); + + for(AmmoPressRecipe recipe : AmmoPressRecipes.recipes) { + List inputs = new ArrayList(); + for(AStack stack : recipe.input) if(stack != null) inputs.add(stack); + recipes.put(inputs.toArray(new AStack[0]), recipe.output.copy()); + } + + return recipes; + } + + @Override + public String getFileName() { + return "hbmAmmoPress.json"; + } + + @Override + public String getComment() { + return "Input array describes slots from left to right, top to bottom. Make sure the input array is exactly 9 elements long, empty slots are represented by null."; + } + + @Override + public Object getRecipeObject() { + return recipes; + } + + @Override + public void deleteRecipes() { + recipes.clear(); + } + + @Override + public void readRecipe(JsonElement recipe) { + JsonObject obj = (JsonObject) recipe; + + ItemStack output = this.readItemStack(obj.get("output").getAsJsonArray()); + JsonArray inputArray = obj.get("input").getAsJsonArray(); + AStack[] input = new AStack[9]; + + for(int i = 0; i < 9; i++) { + JsonElement element = inputArray.get(i); + if(element.isJsonNull()) { + input[i] = null; + } else { + input[i] = this.readAStack(element.getAsJsonArray()); + } + } + + this.recipes.add(new AmmoPressRecipe(output, input)); + } + + @Override + public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { + AmmoPressRecipe rec = (AmmoPressRecipe) recipe; + + writer.name("output"); + this.writeItemStack(rec.output, writer); + + writer.name("input").beginArray(); + for(int i = 0; i < rec.input.length; i++) { + if(rec.input[i] == null) { + writer.nullValue(); + } else { + this.writeAStack(rec.input[i], writer); + } + } + writer.endArray(); + } + + public static class AmmoPressRecipe { + public ItemStack output; + public AStack[] input; + + public AmmoPressRecipe(ItemStack output, AStack... input) { + this.output = output; + this.input = input; + } + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java index eaafa0638..35b202158 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java @@ -3,6 +3,7 @@ package com.hbm.inventory.recipes; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map.Entry; @@ -28,6 +29,7 @@ import com.hbm.items.machine.ItemScraps; import com.hbm.items.special.ItemBedrockOreNew; import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade; import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; +import com.hbm.util.Tuple.Pair; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -36,43 +38,47 @@ import net.minecraftforge.oredict.OreDictionary; public class ArcFurnaceRecipes extends SerializableRecipe { - public static HashMap recipes = new HashMap(); + public static List> recipeList = new ArrayList(); + /* quick lookup for translating input stacks into the output, created lazily whenever a recipe is checked for the first time */ public static HashMap fastCacheSolid = new HashMap(); public static HashMap fastCacheLiquid = new HashMap(); + /* used for the recipe creation process to cache which inputs are already in use to prevent input collisions */ + public static HashSet occupiedSolid = new HashSet(); + public static HashSet occupiedLiquid = new HashSet(); @Override public void registerDefaults() { - recipes.put(new OreDictStack(KEY_SAND), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(1)))); - recipes.put(new ComparableStack(Items.flint), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 4)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(1, 2)))); - recipes.put(new OreDictStack(QUARTZ.gem()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 3)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(3)))); - recipes.put(new OreDictStack(QUARTZ.dust()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 3)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(3)))); - recipes.put(new OreDictStack(QUARTZ.block()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 12)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(12)))); - recipes.put(new OreDictStack(FIBER.ingot()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 4)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(1, 2)))); - recipes.put(new OreDictStack(FIBER.block()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 40)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(9, 2)))); - recipes.put(new OreDictStack(ASBESTOS.ingot()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 4)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(1, 2)))); - recipes.put(new OreDictStack(ASBESTOS.dust()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 4)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(1, 2)))); - recipes.put(new OreDictStack(ASBESTOS.block()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 40)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(9, 2)))); + register(new OreDictStack(KEY_SAND), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(1)))); + register(new ComparableStack(Items.flint), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 4)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(1, 2)))); + register(new OreDictStack(QUARTZ.gem()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 3)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(3)))); + register(new OreDictStack(QUARTZ.dust()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 3)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(3)))); + register(new OreDictStack(QUARTZ.block()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 12)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(12)))); + register(new OreDictStack(FIBER.ingot()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 4)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(1, 2)))); + register(new OreDictStack(FIBER.block()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 40)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(9, 2)))); + register(new OreDictStack(ASBESTOS.ingot()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 4)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(1, 2)))); + register(new OreDictStack(ASBESTOS.dust()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 4)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(1, 2)))); + register(new OreDictStack(ASBESTOS.block()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 40)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(9, 2)))); - recipes.put(new ComparableStack(ModBlocks.sand_quartz), new ArcFurnaceRecipe().solid(new ItemStack(ModBlocks.glass_quartz))); - recipes.put(new OreDictStack(BORAX.dust()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.powder_boron_tiny, 3)).fluid(new MaterialStack(Mats.MAT_BORON, MaterialShapes.NUGGET.q(3)))); + register(new ComparableStack(ModBlocks.sand_quartz), new ArcFurnaceRecipe().solid(new ItemStack(ModBlocks.glass_quartz))); + register(new OreDictStack(BORAX.dust()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.powder_boron_tiny, 3)).fluid(new MaterialStack(Mats.MAT_BORON, MaterialShapes.NUGGET.q(3)))); for(BedrockOreType type : BedrockOreType.values()) { - recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 2))); - recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 4))); - recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ARC, type, 2))); - recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ARC, type, 4))); - recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ARC, type, 2))); - recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ARC, type, 4))); + register(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 2))); + register(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 4))); + register(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ARC, type, 2))); + register(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ARC, type, 4))); + register(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ARC, type, 2))); + register(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ARC, type, 4))); - recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.primary1, 5), ItemBedrockOreNew.toFluid(type.primary2, 2))); - recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.primary1, 2), ItemBedrockOreNew.toFluid(type.primary2, 5))); - recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.primary1, 1), ItemBedrockOreNew.toFluid(type.primary2, 1))); + register(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.primary1, 5), ItemBedrockOreNew.toFluid(type.primary2, 2))); + register(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.primary1, 2), ItemBedrockOreNew.toFluid(type.primary2, 5))); + register(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.primary1, 1), ItemBedrockOreNew.toFluid(type.primary2, 1))); int i3 = 3; - recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.byproductAcid1, i3), ItemBedrockOreNew.toFluid(type.byproductAcid2, i3), ItemBedrockOreNew.toFluid(type.byproductAcid3, i3))); - recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.byproductSolvent1, i3), ItemBedrockOreNew.toFluid(type.byproductSolvent2, i3), ItemBedrockOreNew.toFluid(type.byproductSolvent3, i3))); - recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.byproductRad1, i3), ItemBedrockOreNew.toFluid(type.byproductRad2, i3), ItemBedrockOreNew.toFluid(type.byproductRad3, i3))); + register(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.byproductAcid1, i3), ItemBedrockOreNew.toFluid(type.byproductAcid2, i3), ItemBedrockOreNew.toFluid(type.byproductAcid3, i3))); + register(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.byproductSolvent1, i3), ItemBedrockOreNew.toFluid(type.byproductSolvent2, i3), ItemBedrockOreNew.toFluid(type.byproductSolvent3, i3))); + register(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.byproductRad1, i3), ItemBedrockOreNew.toFluid(type.byproductRad2, i3), ItemBedrockOreNew.toFluid(type.byproductRad3, i3))); } // Autogen for simple single type items @@ -82,14 +88,13 @@ public class ArcFurnaceRecipes extends SerializableRecipe { NTMMaterial convert = material.smeltsInto; if(convert.smeltable == SmeltingBehavior.SMELTABLE) { for(MaterialShapes shape : MaterialShapes.allShapes) { - String name = shape.name() + material.names[0]; - if(!OreDictionary.getOres(name).isEmpty()) { - OreDictStack dict = new OreDictStack(name); - ArcFurnaceRecipe recipe = recipes.get(dict); - if(recipe == null) recipe = new ArcFurnaceRecipe(); - if(recipe.fluidOutput == null) { + if(!shape.noAutogen) { + String name = shape.name() + material.names[0]; + if(!OreDictionary.getOres(name).isEmpty()) { + OreDictStack dict = new OreDictStack(name); + ArcFurnaceRecipe recipe = new ArcFurnaceRecipe(); recipe.fluid(new MaterialStack(convert, (int) (shape.q(1) * out / in))); - recipes.put(dict, recipe); + register(dict, recipe); } } } @@ -114,17 +119,31 @@ public class ArcFurnaceRecipes extends SerializableRecipe { if(input != null && output != null) { ComparableStack comp = new ComparableStack(input); if(OreDictManager.arcSmeltable.contains(comp) || OreDictManager.arcSmeltable.contains(new ComparableStack(output))) { - ArcFurnaceRecipe recipe = recipes.get(comp); - if(recipe == null) recipe = new ArcFurnaceRecipe(); - if(recipe.solidOutput == null) { - recipe.solid(output.copy()); - recipes.put(comp, recipe); - } + ArcFurnaceRecipe recipe = new ArcFurnaceRecipe(); + recipe.solid(output.copy()); + register(comp, recipe); } } } } + public static void register(AStack input, ArcFurnaceRecipe output) { + List inputs = input.extractForNEI(); + for(ItemStack stack : inputs) { + ComparableStack compStack = new ComparableStack(stack); + if(compStack.meta == OreDictionary.WILDCARD_VALUE) compStack.meta = 0; + if(output.solidOutput != null) if(occupiedSolid.contains(compStack)) return; + if(output.fluidOutput != null) if(occupiedLiquid.contains(compStack)) return; + } + recipeList.add(new Pair(input, output)); + for(ItemStack stack : inputs) { + ComparableStack compStack = new ComparableStack(stack); + if(compStack.meta == OreDictionary.WILDCARD_VALUE) compStack.meta = 0; + if(output.solidOutput != null) occupiedSolid.add(compStack); + if(output.fluidOutput != null) occupiedLiquid.add(compStack); + } + } + private static void addCustomSmeltable(AStack astack, List mats) { List smeltables = new ArrayList(); for(MaterialStack mat : mats) { @@ -133,12 +152,9 @@ public class ArcFurnaceRecipes extends SerializableRecipe { } } if(smeltables.isEmpty()) return; - ArcFurnaceRecipe recipe = recipes.get(astack); - if(recipe == null) recipe = new ArcFurnaceRecipe(); - if(recipe.fluidOutput == null) { - recipe.fluid(smeltables.toArray(new MaterialStack[0])); - recipes.put(astack, recipe); - } + ArcFurnaceRecipe recipe = new ArcFurnaceRecipe(); + recipe.fluid(smeltables.toArray(new MaterialStack[0])); + register(astack, recipe); } public static ArcFurnaceRecipe getOutput(ItemStack stack, boolean liquid) { @@ -158,7 +174,7 @@ public class ArcFurnaceRecipes extends SerializableRecipe { if(!liquid && fastCacheSolid.containsKey(cacheKey)) return fastCacheSolid.get(cacheKey); if(liquid && fastCacheLiquid.containsKey(cacheKey)) return fastCacheLiquid.get(cacheKey); - for(Entry entry : recipes.entrySet()) { + for(Pair entry : recipeList) { if(entry.getKey().matchesRecipe(stack, true)) { ArcFurnaceRecipe rec = entry.getValue(); if((liquid && rec.fluidOutput != null) || (!liquid && rec.solidOutput != null)) { @@ -177,7 +193,7 @@ public class ArcFurnaceRecipes extends SerializableRecipe { public static HashMap getSolidRecipes() { HashMap recipes = new HashMap(); - for(Entry recipe : ArcFurnaceRecipes.recipes.entrySet()) { + for(Pair recipe : ArcFurnaceRecipes.recipeList) { if(recipe.getValue().solidOutput != null) recipes.put(recipe.getKey().copy(), recipe.getValue().solidOutput.copy()); } return recipes; @@ -185,7 +201,7 @@ public class ArcFurnaceRecipes extends SerializableRecipe { public static HashMap getFluidRecipes() { HashMap recipes = new HashMap(); - for(Entry recipe : ArcFurnaceRecipes.recipes.entrySet()) { + for(Pair recipe : ArcFurnaceRecipes.recipeList) { if(recipe.getValue().fluidOutput != null && recipe.getValue().fluidOutput.length > 0) { Object[] out = new Object[recipe.getValue().fluidOutput.length]; for(int i = 0; i < out.length; i++) out[i] = ItemScraps.create(recipe.getValue().fluidOutput[i], true); @@ -207,12 +223,14 @@ public class ArcFurnaceRecipes extends SerializableRecipe { @Override public Object getRecipeObject() { - return recipes; + return recipeList; } @Override public void deleteRecipes() { - recipes.clear(); + occupiedSolid.clear(); + occupiedLiquid.clear(); + recipeList.clear(); fastCacheSolid.clear(); fastCacheLiquid.clear(); } @@ -233,7 +251,7 @@ public class ArcFurnaceRecipes extends SerializableRecipe { List mats = new ArrayList(); for(JsonElement fluid : fluids) { JsonArray matStack = fluid.getAsJsonArray(); - MaterialStack stack = new MaterialStack(Mats.matById.get(matStack.get(0).getAsInt()), matStack.get(1).getAsInt()); + MaterialStack stack = new MaterialStack(Mats.matByName.get(matStack.get(0).getAsString()), matStack.get(1).getAsInt()); if(stack.material.smeltable == SmeltingBehavior.SMELTABLE) { mats.add(stack); } @@ -243,12 +261,12 @@ public class ArcFurnaceRecipes extends SerializableRecipe { } } - this.recipes.put(input, arc); + register(input, arc); } @Override public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { - Entry rec = (Entry) recipe; + Pair rec = (Pair) recipe; writer.name("input"); this.writeAStack(rec.getKey(), writer); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 39fff4c81..5f66525e2 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -27,7 +27,6 @@ import com.hbm.inventory.material.MaterialShapes; import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.NTMMaterial; import com.hbm.inventory.recipes.loader.SerializableRecipe; -import com.hbm.items.ItemAmmoEnums; import com.hbm.items.ModItems; import com.hbm.items.ItemGenericPart.EnumPartType; import com.hbm.items.machine.ItemAssemblyTemplate; @@ -35,6 +34,7 @@ import com.hbm.items.machine.ItemCircuit.EnumCircuitType; import com.hbm.items.machine.ItemDrillbit.EnumDrillType; import com.hbm.items.machine.ItemPistons.EnumPistonType; import com.hbm.items.weapon.ItemAmmoHIMARS; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.main.MainRegistry; import cpw.mods.fml.common.Loader; @@ -123,7 +123,6 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModBlocks.seal_controller, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 3), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(MINGRADE.ingot(), 1), new OreDictStack(REDSTONE.dust(), 4), new ComparableStack(ModBlocks.steel_roof, 5), },100); makeRecipe(new ComparableStack(ModBlocks.machine_centrifuge, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_element, 1), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(STEEL.plate528(), 8), new OreDictStack(CU.plate(), 8), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG), }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_gascent, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_element, 4), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(DESH.ingot(), 2), new OreDictStack(STEEL.plate528(), 8), new ComparableStack(ModItems.coil_tungsten, 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal()) }, 300); - makeRecipe(new ComparableStack(ModBlocks.machine_rtg_furnace_off, 1), new AStack[] {new ComparableStack(Blocks.furnace, 1), new ComparableStack(ModItems.rtg_unit, 3), new OreDictStack(PB.plate528(), 6), new OreDictStack(OreDictManager.getReflector(), 4), new OreDictStack(CU.plate(), 2), },150); makeRecipe(new ComparableStack(ModBlocks.machine_diesel, 1), new AStack[] {new OreDictStack(STEEL.shell(), 1), new ComparableStack(ModItems.piston_selenium, 1), new OreDictStack(STEEL.plateCast(), 1), new ComparableStack(ModItems.coil_copper, 4), }, 60); makeRecipe(new ComparableStack(ModBlocks.machine_rtg_grey, 1), new AStack[] {new ComparableStack(ModItems.rtg_unit, 3), new OreDictStack(STEEL.plate528(), 4), new OreDictStack(MINGRADE.wireFine(), 4), new OreDictStack(ANY_PLASTIC.ingot(), 3), },200); makeRecipe(new ComparableStack(ModBlocks.machine_battery, 1), new AStack[] {new OreDictStack(STEEL.plateWelded(), 1), new OreDictStack(S.dust(), 12), new OreDictStack(PB.dust(), 12) },100); @@ -169,9 +168,6 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModBlocks.therm_endo, 1), new AStack[] {new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.powder_ice, 32), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.coil_gold, 4), },250); makeRecipe(new ComparableStack(ModBlocks.therm_exo, 1), new AStack[] {new OreDictStack(TI.plate(), 12), new OreDictStack(P_RED.dust(), 32), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.coil_gold, 4), },250); makeRecipe(new ComparableStack(ModItems.spawn_chopper, 1), new AStack[] {new ComparableStack(ModItems.chopper_blades, 5), new ComparableStack(ModItems.chopper_gun, 1), new ComparableStack(ModItems.chopper_head, 1), new ComparableStack(ModItems.chopper_tail, 1), new ComparableStack(ModItems.chopper_torso, 1), new ComparableStack(ModItems.chopper_wing, 2), },300); - makeRecipe(new ComparableStack(ModItems.gun_defabricator, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(ANY_PLASTIC.ingot(), 8), new OreDictStack(IRON.plate(), 5), new ComparableStack(ModItems.mechanism_special, 3), new ComparableStack(Items.diamond, 1), new ComparableStack(ModItems.plate_dalekanium, 3), },200); - makeRecipe(new ComparableStack(ModItems.gun_osipr_ammo, 24), new AStack[] {new OreDictStack(STEEL.plate(), 2), new OreDictStack(REDSTONE.dust(), 1), new ComparableStack(Items.glowstone_dust, 1), },50); - makeRecipe(new ComparableStack(ModItems.gun_osipr_ammo2, 1), new AStack[] {new OreDictStack(CMB.plate(), 4), new OreDictStack(REDSTONE.dust(), 7), new ComparableStack(ModItems.powder_power, 3), },200); makeRecipe(new ComparableStack(ModItems.grenade_fire, 1), new AStack[] {new ComparableStack(ModItems.grenade_frag, 1), new OreDictStack(P_RED.dust(), 1), new OreDictStack(CU.plate(), 2), },150); makeRecipe(new ComparableStack(ModItems.grenade_shrapnel, 1), new AStack[] {new ComparableStack(ModItems.grenade_frag, 1), new ComparableStack(ModItems.pellet_buckshot, 1), new OreDictStack(STEEL.plate(), 2), },150); makeRecipe(new ComparableStack(ModItems.grenade_cluster, 1), new AStack[] {new ComparableStack(ModItems.grenade_frag, 1), new ComparableStack(ModItems.pellet_cluster, 1), new OreDictStack(STEEL.plate(), 2), },200); @@ -179,7 +175,7 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModItems.grenade_electric, 1), new AStack[] {new ComparableStack(ModItems.grenade_generic, 1), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CAPACITOR.ordinal()), new OreDictStack(GOLD.plate(), 2), },200); makeRecipe(new ComparableStack(ModItems.grenade_pulse, 4), new AStack[] {new OreDictStack(STEEL.plate(), 1), new OreDictStack(IRON.plate(), 3), new OreDictStack(MINGRADE.wireFine(), 6), new ComparableStack(Items.diamond, 1), },300); makeRecipe(new ComparableStack(ModItems.grenade_plasma, 2), new AStack[] {new OreDictStack(STEEL.plate(), 3), new OreDictStack(ALLOY.plate(), 1), new ComparableStack(ModItems.coil_advanced_torus, 1), new ComparableStack(ModItems.cell_deuterium, 1), new ComparableStack(ModItems.cell_tritium, 1), },300); - makeRecipe(new ComparableStack(ModItems.grenade_tau, 2), new AStack[] {new OreDictStack(PB.plate(), 3), new OreDictStack(ALLOY.plate(), 1), new ComparableStack(ModItems.coil_advanced_torus, 1), new ComparableStack(ModItems.gun_xvl1456_ammo, 1), },300); + makeRecipe(new ComparableStack(ModItems.grenade_tau, 2), new AStack[] {new OreDictStack(PB.plate(), 3), new OreDictStack(ALLOY.plate(), 1), new ComparableStack(ModItems.coil_advanced_torus, 1), new ComparableStack(ModItems.ammo_standard, 1, EnumAmmo.TAU_URANIUM), },300); makeRecipe(new ComparableStack(ModItems.grenade_schrabidium, 1), new AStack[] {new ComparableStack(ModItems.grenade_flare, 1), new OreDictStack(SA326.dust(), 1), new OreDictStack(OreDictManager.getReflector(), 2), },300); makeRecipe(new ComparableStack(ModItems.grenade_nuclear, 1), new AStack[] {new OreDictStack(IRON.plate(), 1), new OreDictStack(STEEL.plate(), 1), new OreDictStack(PU239.nugget(), 2), new OreDictStack(MINGRADE.wireFine(), 2), },200); makeRecipe(new ComparableStack(ModItems.grenade_zomg, 1), new AStack[] {new ComparableStack(ModItems.plate_paa, 3), new OreDictStack(OreDictManager.getReflector(), 1), new ComparableStack(ModItems.coil_magnetized_tungsten, 3), new ComparableStack(ModItems.powder_power, 3), },300); @@ -362,8 +358,8 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModItems.upgrade_overdrive_1, 1), new AStack[] { new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), - new OreDictStack(DESH.ingot(), 16), - new ComparableStack(ModItems.crystal_lithium, 4), + new OreDictStack(BIGMT.ingot(), 16), + new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED), }, 200); makeRecipe(new ComparableStack(ModItems.upgrade_overdrive_2, 1), new AStack[] { @@ -371,15 +367,15 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new OreDictStack(BIGMT.ingot(), 16), - new ComparableStack(ModItems.crystal_lithium, 8), + new ComparableStack(ModItems.ingot_cft, 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD), }, 300); makeRecipe(new ComparableStack(ModItems.upgrade_overdrive_3, 1), new AStack[] { new ComparableStack(ModItems.upgrade_overdrive_2, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), - new OreDictStack(STAR.ingot(), 16), - new ComparableStack(ModItems.crystal_lithium, 16), + new OreDictStack(ANY_BISMOIDBRONZE.ingot(), 16), + new ComparableStack(ModItems.ingot_cft, 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID), }, 500); @@ -585,40 +581,6 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC) }, 600); - makeRecipe(new ComparableStack(ModItems.gun_zomg, 1), new AStack[] { - new ComparableStack(ModItems.crystal_xen, 2), - new ComparableStack(ModItems.singularity_counter_resonant, 1), - new ComparableStack(ModItems.mechanism_special, 3), - new ComparableStack(ModItems.plate_paa, 12), - new OreDictStack(OreDictManager.getReflector(), 8), - new ComparableStack(ModItems.coil_magnetized_tungsten, 5), - new ComparableStack(ModItems.powder_magic, 4), - new OreDictStack(ASBESTOS.ingot(), 8) - }, 200); - - makeRecipe(new ComparableStack(ModItems.ammo_75bolt, 2, ItemAmmoEnums.Ammo75Bolt.STOCK.ordinal()), new AStack[] { - new OreDictStack(STEEL.plate(), 4), - new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 2), - new OreDictStack(ANY_HARDPLASTIC.ingot(), 2), - new ComparableStack(ModItems.cordite, 3), - new OreDictStack(U238.ingot(), 1) - }, 60); - - makeRecipe(new ComparableStack(ModItems.ammo_75bolt, 2, ItemAmmoEnums.Ammo75Bolt.INCENDIARY.ordinal()), new AStack[] { - new OreDictStack(STEEL.plate(), 4), - new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 2), - new OreDictStack(ANY_HARDPLASTIC.ingot(), 2), - new ComparableStack(ModItems.cordite, 3), - new OreDictStack(P_WHITE.ingot(), 3) - }, 60); - - makeRecipe(new ComparableStack(ModItems.ammo_75bolt, 2, ItemAmmoEnums.Ammo75Bolt.HE.ordinal()), new AStack[] { - new OreDictStack(STEEL.plate(), 4), - new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 2), - new OreDictStack(ANY_HARDPLASTIC.ingot(), 5), - new ComparableStack(ModItems.cordite, 5) - }, 60); - makeRecipe(new ComparableStack(ModItems.spawn_worm, 1), new AStack[] { new OreDictStack(TI.block(), 75), new ComparableStack(ModItems.motor, 75), @@ -957,6 +919,14 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BISMOID) }, 200); + makeRecipe(new ComparableStack(ModBlocks.machine_pyrooven, 1), new AStack[] { + !exp ? new OreDictStack(STEEL.plateWelded(), 16) : new OreDictStack(STEEL.heavyComp(), 4), + new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), + new ComparableStack(ModItems.ingot_cft, 4), + new OreDictStack(CU.pipe(), 12), + new ComparableStack(ModItems.motor_desh, 1), + new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BISMOID) + }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_compressor, 1), new AStack[] { new OreDictStack(STEEL.plateCast(), 8), @@ -1277,7 +1247,7 @@ public class AssemblerRecipes extends SerializableRecipe { } for(NTMMaterial mat : Mats.orderedList) { - if(mat.shapes.contains(MaterialShapes.CASTPLATE) && mat.shapes.contains(MaterialShapes.HEAVY_COMPONENT)) { + if(mat.autogen.contains(MaterialShapes.CASTPLATE) && mat.autogen.contains(MaterialShapes.HEAVY_COMPONENT)) { makeRecipe(new ComparableStack(ModItems.heavy_component, 1, mat.id), new AStack[] { new OreDictStack(MaterialShapes.CASTPLATE.name() + mat.names[0], 256) }, 12_000); } } diff --git a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java index 2c91e4e4a..cbf275343 100644 --- a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java @@ -15,10 +15,12 @@ import com.hbm.config.GeneralConfig; import com.hbm.handler.imc.IMCCentrifuge; import static com.hbm.inventory.OreDictManager.*; import com.hbm.inventory.OreDictManager.DictFrame; +import com.hbm.inventory.OreDictManager; import com.hbm.inventory.RecipesCommon; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.material.MaterialShapes; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.items.ItemEnums.EnumChunkType; @@ -395,7 +397,7 @@ public class CentrifugeRecipes extends SerializableRecipe { lbs ? new ItemStack(ModItems.nugget_ra226, 2) : new ItemStack(ModItems.nugget_ra226, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack(TH232.ore()), new ItemStack[] { + for(String ore : OreDictManager.TH232.all(MaterialShapes.ORE)) recipes.put(new OreDictStack(ore), new ItemStack[] { new ItemStack(ModItems.powder_thorium, 1), new ItemStack(ModItems.powder_thorium, 1), new ItemStack(ModItems.powder_uranium, 1), @@ -527,8 +529,8 @@ public class CentrifugeRecipes extends SerializableRecipe { recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1, 1), ItemBedrockOreNew.extract(type.primary2, 1), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1, 1), ItemBedrockOreNew.extract(type.primary2, 1), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1, 1), ItemBedrockOreNew.extract(type.primary2, 1), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); - recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1, 1), ItemBedrockOreNew.extract(type.primary1, 1), ItemBedrockOreNew.extract(type.primary2, 1), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type, 2)}); - recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1, 1), ItemBedrockOreNew.extract(type.primary2, 1), ItemBedrockOreNew.extract(type.primary2, 1), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type, 2)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1, 1), ItemBedrockOreNew.extract(type.primary1, 1), ItemBedrockOreNew.extract(type.primary2, 1), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type, 1)}); + recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1, 1), ItemBedrockOreNew.extract(type.primary2, 1), ItemBedrockOreNew.extract(type.primary2, 1), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type, 1)}); recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductAcid1, 1), ItemBedrockOreNew.extract(type.byproductAcid2, 1), ItemBedrockOreNew.extract(type.byproductAcid3, 1), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductSolvent1, 1), ItemBedrockOreNew.extract(type.byproductSolvent2, 1), ItemBedrockOreNew.extract(type.byproductSolvent3, 1), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)}); diff --git a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java index 06b7f69cd..3e8513f7c 100644 --- a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java @@ -224,13 +224,6 @@ public class ChemplantRecipes extends SerializableRecipe { recipes.add(new ChemRecipe(60, "XENON_OXY", 20) .inputFluids(new FluidStack(Fluids.OXYGEN, 250)) .outputFluids(new FluidStack(Fluids.XENON, 50))); - recipes.add(new ChemRecipe(61, "SATURN", 60) - .inputItems( - new OreDictStack(DURA.dust(), 2), - new OreDictStack(CU.dust(), 1), - new OreDictStack(COAL.dust(), 1)) - .inputFluids(new FluidStack(Fluids.SULFURIC_ACID, 100)) - .outputItems(new ItemStack(ModItems.ingot_saturnite, 4))); recipes.add(new ChemRecipe(62, "BALEFIRE", 100) .inputItems(new ComparableStack(ModItems.egg_balefire_shard)) .inputFluids(new FluidStack(Fluids.KEROSENE, 6000)) diff --git a/src/main/java/com/hbm/inventory/recipes/CompressorRecipes.java b/src/main/java/com/hbm/inventory/recipes/CompressorRecipes.java index a611276ae..ed97b9efb 100644 --- a/src/main/java/com/hbm/inventory/recipes/CompressorRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CompressorRecipes.java @@ -11,22 +11,37 @@ import com.hbm.inventory.FluidStack; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.machine.ItemFluidIcon; import com.hbm.util.Tuple.Pair; +import net.minecraft.item.ItemStack; + public class CompressorRecipes extends SerializableRecipe { public static HashMap, CompressorRecipe> recipes = new HashMap(); @Override public void registerDefaults() { - recipes.put(new Pair(Fluids.STEAM, 0), new CompressorRecipe(1_000, new FluidStack(Fluids.HOTSTEAM, 100))); - recipes.put(new Pair(Fluids.HOTSTEAM, 0), new CompressorRecipe(1_000, new FluidStack(Fluids.SUPERHOTSTEAM, 100))); - recipes.put(new Pair(Fluids.SUPERHOTSTEAM, 0), new CompressorRecipe(1_000, new FluidStack(Fluids.ULTRAHOTSTEAM, 100))); - recipes.put(new Pair(Fluids.PETROLEUM, 0), new CompressorRecipe(2_000, new FluidStack(Fluids.PETROLEUM, 2_000, 1), 20)); recipes.put(new Pair(Fluids.PETROLEUM, 1), new CompressorRecipe(2_000, new FluidStack(Fluids.LPG, 1_000, 0), 20)); recipes.put(new Pair(Fluids.BLOOD, 3), new CompressorRecipe(1_000, new FluidStack(Fluids.HEAVYOIL, 250, 0), 200)); + + recipes.put(new Pair(Fluids.PERFLUOROMETHYL, 1), new CompressorRecipe(1_000, new FluidStack(Fluids.PERFLUOROMETHYL_COLD, 1_000, 0), 100)); + } + + public static HashMap getRecipes() { + + HashMap recipes = new HashMap(); + + for(Entry, CompressorRecipe> entry : CompressorRecipes.recipes.entrySet()) { + ItemStack input = ItemFluidIcon.make(entry.getKey().getKey(), entry.getValue().inputAmount, entry.getKey().getValue()); + ItemStack output = ItemFluidIcon.make(entry.getValue().output); + if(input.getItemDamage() == output.getItemDamage()) continue; + recipes.put(input, output); + } + + return recipes; } public static class CompressorRecipe { diff --git a/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java index 919efab4f..fe489691e 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java @@ -258,14 +258,15 @@ public class CrucibleRecipes extends SerializableRecipe { NTMMaterial convert = material.smeltsInto; if(convert.smeltable == SmeltingBehavior.SMELTABLE || convert.smeltable == SmeltingBehavior.ADDITIVE) for(MaterialShapes shape : MaterialShapes.allShapes) { //TODO: buffer these - - String name = shape.name() + material.names[0]; - List ores = OreDictionary.getOres(name); - - if(!ores.isEmpty()) { - List stacks = new ArrayList(); - stacks.add(ItemScraps.create(new MaterialStack(convert, (int) (shape.q(1) * out / in)), true)); - map.put(new OreDictStack(name), stacks); + if(!shape.noAutogen) { + String name = shape.make(material); + List ores = OreDictionary.getOres(name); + + if(!ores.isEmpty()) { + List stacks = new ArrayList(); + stacks.add(ItemScraps.create(new MaterialStack(convert, (int) (shape.q(1) * out / in)), true)); + map.put(new OreDictStack(name), stacks); + } } } } diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index 5930101dd..a17779bd6 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -13,11 +13,15 @@ import com.google.gson.stream.JsonWriter; import com.hbm.blocks.ModBlocks; import com.hbm.handler.imc.IMCCrystallizer; import com.hbm.inventory.FluidStack; +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.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.material.MaterialShapes; +import com.hbm.inventory.material.Mats; +import com.hbm.inventory.material.Mats.MaterialStack; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.items.ItemEnums.EnumPlantType; @@ -25,6 +29,7 @@ import com.hbm.items.ItemEnums.EnumTarType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemChemicalDye.EnumChemDye; import com.hbm.items.machine.ItemFluidIcon; +import com.hbm.items.machine.ItemScraps; import com.hbm.items.special.ItemBedrockOreNew; import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade; @@ -63,7 +68,7 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(LAPIS.ore(), new CrystallizerRecipe(ModItems.crystal_lapis, baseTime)); registerRecipe(DIAMOND.ore(), new CrystallizerRecipe(ModItems.crystal_diamond, baseTime)); registerRecipe(U.ore(), new CrystallizerRecipe(ModItems.crystal_uranium, baseTime), sulfur); - registerRecipe(TH232.ore(), new CrystallizerRecipe(ModItems.crystal_thorium, baseTime), sulfur); + for(String ore : OreDictManager.TH232.all(MaterialShapes.ONLY_ORE)) registerRecipe(ore, new CrystallizerRecipe(ModItems.crystal_thorium, baseTime), sulfur); registerRecipe(PU.ore(), new CrystallizerRecipe(ModItems.crystal_plutonium, baseTime), sulfur); registerRecipe(TI.ore(), new CrystallizerRecipe(ModItems.crystal_titanium, baseTime), sulfur); registerRecipe(S.ore(), new CrystallizerRecipe(ModItems.crystal_sulfur, baseTime)); @@ -79,6 +84,8 @@ public class CrystallizerRecipes extends SerializableRecipe { //registerRecipe(STAR.ore(), new CrystallizerRecipe(ModItems.crystal_starmetal, baseTime), sulfur); registerRecipe(CO.ore(), new CrystallizerRecipe(ModItems.crystal_cobalt, baseTime), sulfur); + registerRecipe(MALACHITE.ingot(), new CrystallizerRecipe(ItemScraps.create(new MaterialStack(Mats.MAT_COPPER, MaterialShapes.INGOT.q(1))), 300), new FluidStack(Fluids.SULFURIC_ACID, 250)); + registerRecipe("oreRareEarth", new CrystallizerRecipe(ModItems.crystal_rare, baseTime), sulfur); registerRecipe("oreCinnabar", new CrystallizerRecipe(ModItems.crystal_cinnebar, baseTime)); diff --git a/src/main/java/com/hbm/inventory/recipes/CyclotronRecipes.java b/src/main/java/com/hbm/inventory/recipes/CyclotronRecipes.java index f5030c34f..734c24b5c 100644 --- a/src/main/java/com/hbm/inventory/recipes/CyclotronRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CyclotronRecipes.java @@ -44,7 +44,6 @@ public class CyclotronRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModItems.part_lithium), new OreDictStack("dustActinium"), new ItemStack(ModItems.powder_thorium), liA); makeRecipe(new ComparableStack(ModItems.part_lithium), new OreDictStack(U.dust()), new ItemStack(ModItems.powder_neptunium), liA); makeRecipe(new ComparableStack(ModItems.part_lithium), new OreDictStack(NP237.dust()), new ItemStack(ModItems.powder_plutonium), liA); - makeRecipe(new ComparableStack(ModItems.part_lithium), new ComparableStack(ModItems.powder_reiium), new ItemStack(ModItems.powder_weidanium), liA); /// LITHIUM END /// /// BERYLLIUM START /// @@ -57,7 +56,6 @@ public class CyclotronRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModItems.part_beryllium), new ComparableStack(ModItems.powder_strontium), new ItemStack(ModItems.powder_niobium), beA); makeRecipe(new ComparableStack(ModItems.part_beryllium), new ComparableStack(ModItems.powder_cerium), new ItemStack(ModItems.powder_neodymium), beA); makeRecipe(new ComparableStack(ModItems.part_beryllium), new OreDictStack("dustThorium"), new ItemStack(ModItems.powder_uranium), beA); - makeRecipe(new ComparableStack(ModItems.part_beryllium), new ComparableStack(ModItems.powder_weidanium), new ItemStack(ModItems.powder_australium), beA); /// BERYLLIUM END /// /// CARBON START /// @@ -71,7 +69,6 @@ public class CyclotronRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModItems.part_carbon), new ComparableStack(ModItems.ingot_mercury), new ItemStack(ModItems.powder_polonium), caA); makeRecipe(new ComparableStack(ModItems.part_carbon), new OreDictStack(PB.dust()), new ItemStack(ModItems.powder_ra226),caA); makeRecipe(new ComparableStack(ModItems.part_carbon), new ComparableStack(ModItems.powder_astatine), new ItemStack(ModItems.powder_actinium), caA); - makeRecipe(new ComparableStack(ModItems.part_carbon), new ComparableStack(ModItems.powder_australium), new ItemStack(ModItems.powder_verticium), caA); /// CARBON END /// /// COPPER START /// @@ -87,7 +84,6 @@ public class CyclotronRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModItems.part_copper), new ComparableStack(ModItems.powder_iodine), new ItemStack(ModItems.powder_polonium), coA); makeRecipe(new ComparableStack(ModItems.part_copper), new ComparableStack(ModItems.powder_caesium), new ItemStack(ModItems.powder_actinium), coA); makeRecipe(new ComparableStack(ModItems.part_copper), new OreDictStack("dustGold"), new ItemStack(ModItems.powder_uranium), coA); - makeRecipe(new ComparableStack(ModItems.part_copper), new ComparableStack(ModItems.powder_verticium), new ItemStack(ModItems.powder_unobtainium), coA); /// COPPER END /// /// PLUTONIUM START /// @@ -95,13 +91,10 @@ public class CyclotronRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModItems.part_plutonium), new OreDictStack("dustPhosphorus"), new ItemStack(ModItems.powder_tennessine), plA); makeRecipe(new ComparableStack(ModItems.part_plutonium), new OreDictStack(PU.dust()), new ItemStack(ModItems.powder_tennessine), plA); - makeRecipe(new ComparableStack(ModItems.part_plutonium), new ComparableStack(ModItems.powder_tennessine), new ItemStack(ModItems.powder_reiium), plA); + makeRecipe(new ComparableStack(ModItems.part_plutonium), new ComparableStack(ModItems.powder_tennessine), new ItemStack(ModItems.powder_australium), plA); makeRecipe(new ComparableStack(ModItems.part_plutonium), new ComparableStack(ModItems.pellet_charged), new ItemStack(ModItems.nugget_schrabidium), 1000); - makeRecipe(new ComparableStack(ModItems.part_plutonium), new ComparableStack(ModItems.powder_unobtainium), new ItemStack(ModItems.powder_daffergon), plA); makeRecipe(new ComparableStack(ModItems.part_plutonium), new ComparableStack(ModItems.cell_antimatter), new ItemStack(ModItems.cell_anti_schrabidium), 0); /// PLUTONIUM END /// - - ///TODO: fictional elements } private static void makeRecipe(ComparableStack part, AStack in, ItemStack out, int amat) { @@ -124,23 +117,6 @@ public class CyclotronRecipes extends SerializableRecipe { } } - //there's literally 0 reason why this doesn't work yet it refuses, fuck this - - /*Pair output = recipes.get(new Pair(boxStack, comp)); - - if(output != null) { - return new Object[] { output.getKey().copy(), output.getValue() }; - } - - for(String name : ItemStackUtil.getOreDictNames(stack)) { - OreDictStack ods = new OreDictStack(name); - output = recipes.get(new Pair(new ComparableStack(ModItems.part_beryllium), new OreDictStack("dustCobalt"))); - - if(output != null) { - return new Object[] { output.getKey().copy(), output.getValue() }; - } - }*/ - return null; } diff --git a/src/main/java/com/hbm/inventory/recipes/ElectrolyserMetalRecipes.java b/src/main/java/com/hbm/inventory/recipes/ElectrolyserMetalRecipes.java index 5d3559f34..958673c11 100644 --- a/src/main/java/com/hbm/inventory/recipes/ElectrolyserMetalRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ElectrolyserMetalRecipes.java @@ -136,13 +136,13 @@ public class ElectrolyserMetalRecipes extends SerializableRecipe { ArrayList> productsF = new ArrayList<>(); productsF.add(new Pair(type.primary1, 8)); productsF.add(new Pair(type.primary2, 4)); - productsF.add(new Pair(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type), 3)); + productsF.add(new Pair(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type), 1)); recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type)), makeBedrockOreProduct(productsF)); ArrayList> productsS = new ArrayList<>(); productsS.add(new Pair(type.primary1, 4)); productsS.add(new Pair(type.primary2, 8)); - productsS.add(new Pair(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type),3)); + productsS.add(new Pair(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type), 1)); recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type)), makeBedrockOreProduct(productsS)); diff --git a/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java b/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java index 4b2ea8f6b..feb244d49 100644 --- a/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java @@ -43,6 +43,8 @@ public class LiquefactionRecipes extends SerializableRecipe { recipes.put(KEY_LOG, new FluidStack(100, Fluids.MUG)); recipes.put(KNO.dust(), new FluidStack(750, Fluids.NITRIC_ACID)); recipes.put(NA.dust(), new FluidStack(100, Fluids.SODIUM)); + recipes.put(PB.ingot(), new FluidStack(100, Fluids.LEAD)); + recipes.put(PB.dust(), new FluidStack(100, Fluids.LEAD)); //general utility recipes because why not recipes.put(new ComparableStack(Blocks.netherrack), new FluidStack(250, Fluids.LAVA)); recipes.put(new ComparableStack(Blocks.cobblestone), new FluidStack(250, Fluids.LAVA)); diff --git a/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java b/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java index f1333cd0c..dfb802485 100644 --- a/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java @@ -9,9 +9,7 @@ import com.hbm.blocks.ModBlocks; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ItemAmmoEnums; import com.hbm.items.ModItems; -import com.hbm.items.machine.ItemCircuit.EnumCircuitType; import net.minecraft.init.Items; import net.minecraft.inventory.InventoryCrafting; @@ -46,28 +44,6 @@ public class MagicRecipes { recipes.add(new MagicRecipe(new ItemStack(ModItems.balefire_and_steel), new OreDictStack(STEEL.ingot()), new ComparableStack(ModItems.egg_balefire_shard))); recipes.add(new MagicRecipe(new ItemStack(ModItems.mysteryshovel), new ComparableStack(Items.iron_shovel), new ComparableStack(Items.bone), new ComparableStack(ModItems.ingot_starmetal), new ComparableStack(ModItems.ducttape))); recipes.add(new MagicRecipe(new ItemStack(ModItems.ingot_electronium), new ComparableStack(ModItems.pellet_charged), new ComparableStack(ModItems.pellet_charged), new ComparableStack(ModItems.ingot_dineutronium), new ComparableStack(ModItems.ingot_dineutronium))); - - recipes.add(new MagicRecipe(new ItemStack(ModItems.ammo_44, 1, ItemAmmoEnums.Ammo44Magnum.PIP.ordinal()), - new ComparableStack(ModItems.ammo_44), - new ComparableStack(ModItems.powder_magic), - new ComparableStack(ModItems.powder_magic), - new ComparableStack(ModItems.powder_magic))); - recipes.add(new MagicRecipe(new ItemStack(ModItems.ammo_44, 1, ItemAmmoEnums.Ammo44Magnum.BJ.ordinal()), - new ComparableStack(ModItems.ammo_44), - new ComparableStack(ModItems.powder_magic), - new ComparableStack(ModItems.powder_magic), - new ComparableStack(ModItems.powder_desh))); - recipes.add(new MagicRecipe(new ItemStack(ModItems.ammo_44, 1, ItemAmmoEnums.Ammo44Magnum.SILVER.ordinal()), - new ComparableStack(ModItems.ammo_44), - new ComparableStack(ModItems.powder_magic), - new ComparableStack(ModItems.powder_magic), - new ComparableStack(ModItems.ingot_starmetal))); - - recipes.add(new MagicRecipe(new ItemStack(ModItems.gun_bf), - new ComparableStack(ModItems.gun_fatman), - new ComparableStack(ModItems.egg_balefire_shard), - new ComparableStack(ModItems.powder_magic), - new ComparableStack(ModItems.powder_magic))); recipes.add(new MagicRecipe(new ItemStack(ModItems.diamond_gavel), new ComparableStack(ModBlocks.gravel_diamond), @@ -92,17 +68,6 @@ public class MagicRecipes { new OreDictStack(DNT.wireDense()), new OreDictStack(W.wireDense()), new OreDictStack(GOLD.wireDense()))); - - recipes.add(new MagicRecipe(new ItemStack(ModItems.gun_darter), - new OreDictStack(STEEL.plate()), - new OreDictStack(STEEL.plate()), - new OreDictStack(ANY_PLASTIC.ingot()), - new OreDictStack(GOLD.plate()))); - - recipes.add(new MagicRecipe(new ItemStack(ModItems.ammo_dart, 4, ItemAmmoEnums.AmmoDart.NUCLEAR.ordinal()), - new OreDictStack(ANY_RUBBER.ingot()), - new ComparableStack(ModItems.nugget_pu239), - new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CHIP))); } public static List getRecipes() { diff --git a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java index 6b182c05b..03a1d95fc 100644 --- a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java @@ -91,6 +91,8 @@ public class MixerRecipes extends SerializableRecipe { register(Fluids.CHLOROCALCITE_MIX, new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.CHLOROCALCITE_SOLUTION, 500)).setStack2(new FluidStack(Fluids.SULFURIC_ACID, 500)).setSolid(new ComparableStack(ModItems.powder_flux))); register(Fluids.PHEROMONE_M, new MixerRecipe(2000, 10).setStack1(new FluidStack(Fluids.PHEROMONE, 1500)).setStack2(new FluidStack(Fluids.BLOOD, 500)).setSolid(new ComparableStack(ModItems.pill_herbal))); + register(Fluids.PERFLUOROMETHYL, new MixerRecipe(1000, 20).setStack1(new FluidStack(Fluids.PETROLEUM, 1000)).setStack2(new FluidStack(Fluids.UNSATURATEDS, 500)).setSolid(new OreDictStack(F.dust()))); + } public static void register(FluidType type, MixerRecipe... rec) { diff --git a/src/main/java/com/hbm/inventory/recipes/ParticleAcceleratorRecipes.java b/src/main/java/com/hbm/inventory/recipes/ParticleAcceleratorRecipes.java new file mode 100644 index 000000000..24349890b --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/ParticleAcceleratorRecipes.java @@ -0,0 +1,182 @@ +package com.hbm.inventory.recipes; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ModItems; + +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; + +public class ParticleAcceleratorRecipes extends SerializableRecipe { + + public static final List recipes = new ArrayList(); + + @Override + public void registerDefaults() { + + recipes.add(new ParticleAcceleratorRecipe( + new ComparableStack(ModItems.particle_hydrogen), + new ComparableStack(ModItems.particle_copper), + 900, + new ItemStack(ModItems.particle_aproton), + new ItemStack(ModItems.particle_aelectron) + )); + recipes.add(new ParticleAcceleratorRecipe( + new ComparableStack(ModItems.particle_amat), + new ComparableStack(ModItems.particle_amat), + 900, + new ItemStack(ModItems.particle_aschrab), + new ItemStack(ModItems.particle_empty) + )); + recipes.add(new ParticleAcceleratorRecipe( + new ComparableStack(ModItems.particle_aschrab), + new ComparableStack(ModItems.particle_aschrab), + 100000, + new ItemStack(ModItems.particle_dark), + new ItemStack(ModItems.particle_empty) + )); + recipes.add(new ParticleAcceleratorRecipe( + new ComparableStack(ModItems.particle_hydrogen), + new ComparableStack(ModItems.particle_amat), + 2000, + new ItemStack(ModItems.particle_muon), + new ItemStack(ModItems.particle_empty) + )); + recipes.add(new ParticleAcceleratorRecipe( + new ComparableStack(ModItems.particle_hydrogen), + new ComparableStack(ModItems.particle_lead), + 5000, + new ItemStack(ModItems.particle_higgs), + new ItemStack(ModItems.particle_empty) + )); + recipes.add(new ParticleAcceleratorRecipe( + new ComparableStack(ModItems.particle_muon), + new ComparableStack(ModItems.particle_higgs), + 2000, + new ItemStack(ModItems.particle_tachyon), + new ItemStack(ModItems.particle_empty) + )); + recipes.add(new ParticleAcceleratorRecipe( + new ComparableStack(ModItems.particle_muon), + new ComparableStack(ModItems.particle_dark), + 100000, + new ItemStack(ModItems.particle_strange), + new ItemStack(ModItems.particle_empty) + )); + recipes.add(new ParticleAcceleratorRecipe( + new ComparableStack(ModItems.particle_strange), + new ComparableStack(ModItems.powder_magic), + 500000, + new ItemStack(ModItems.particle_sparkticle), + new ItemStack(ModItems.dust) + )); + recipes.add(new ParticleAcceleratorRecipe( + new ComparableStack(ModItems.particle_sparkticle), + new ComparableStack(ModItems.particle_higgs), + 1000000, + new ItemStack(ModItems.particle_digamma), + new ItemStack(ModItems.particle_empty) + )); + recipes.add(new ParticleAcceleratorRecipe( + new ComparableStack(Items.chicken), + new ComparableStack(Items.chicken), + 100, + new ItemStack(ModItems.nugget), + new ItemStack(ModItems.nugget) + )); + recipes.add(new ParticleAcceleratorRecipe( + new ComparableStack(Blocks.sand), + new ComparableStack(Blocks.sand), + 10, + new ItemStack(ModItems.static_sandwich), + new ItemStack(ModItems.static_sandwich) + )); + } + + public ParticleAcceleratorRecipe getOutput(ItemStack input1, ItemStack input2, int momentum) { + + for(ParticleAcceleratorRecipe recipe : recipes) { + + if(momentum >= recipe.momentum && + ((recipe.input1.matchesRecipe(input1, true) && recipe.input2.matchesRecipe(input2, true)) || + (recipe.input1.matchesRecipe(input2, true) && recipe.input2.matchesRecipe(input1, true)))) { + return recipe; + } + } + + return null; + } + + public static class ParticleAcceleratorRecipe { + public AStack input1; + public AStack input2; + public int momentum; + public ItemStack output1; + public ItemStack output2; + + public ParticleAcceleratorRecipe(AStack in1, AStack in2, int momentum, ItemStack out1, ItemStack out2) { + this.input1 = in1; + this.input2 = in2; + this.momentum = momentum; + this.output1 = out1; + this.output2 = out2; + } + } + + @Override + public String getFileName() { + return "hbmParticleAccelerator.json"; + } + + @Override + public Object getRecipeObject() { + return recipes; + } + + @Override + public void deleteRecipes() { + recipes.clear(); + } + + @Override + public void readRecipe(JsonElement recipe) { + JsonObject obj = (JsonObject) recipe; + int momentum = obj.get("momentum").getAsInt(); + AStack[] in = this.readAStackArray(obj.get("inputs").getAsJsonArray()); + ItemStack[] out = this.readItemStackArray(obj.get("outputs").getAsJsonArray()); + + this.recipes.add(new ParticleAcceleratorRecipe( + in[0], + in[1], + momentum, + out[0], + out[1] + )); + } + + @Override + public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { + ParticleAcceleratorRecipe rec = (ParticleAcceleratorRecipe) recipe; + + writer.name("momentum").value(rec.momentum); + + writer.name("inputs").beginArray(); + this.writeAStack(rec.input1, writer); + this.writeAStack(rec.input2, writer); + writer.endArray(); + + writer.name("outputs").beginArray(); + this.writeItemStack(rec.output1, writer); + this.writeItemStack(rec.output2, writer); + writer.endArray(); + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java b/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java new file mode 100644 index 000000000..fcbfb1934 --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java @@ -0,0 +1,155 @@ +package com.hbm.inventory.recipes; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import static com.hbm.inventory.OreDictManager.*; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.blocks.ModBlocks; +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.EnumSecretType; +import com.hbm.items.food.ItemConserve.EnumFoodType; +import com.hbm.items.ModItems; + +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; + +public class PedestalRecipes extends SerializableRecipe { + + public static List recipes = new ArrayList(); + + @Override + public void registerDefaults() { + + recipes.add(new PedestalRecipe(new ItemStack(ModItems.gun_light_revolver_dani), + null, new OreDictStack(PB.plate()), null, + new OreDictStack(GOLD.plate()), new ComparableStack(ModItems.gun_light_revolver), new OreDictStack(GOLD.plate()), + null, new OreDictStack(PB.plate()), null)); + + recipes.add(new PedestalRecipe(new ItemStack(ModItems.gun_maresleg_broken), + new ComparableStack(ModBlocks.barbed_wire), new OreDictStack(WEAPONSTEEL.plate()), new ComparableStack(ModBlocks.barbed_wire), + new OreDictStack(WEAPONSTEEL.plate()), new ComparableStack(ModItems.gun_maresleg), new OreDictStack(WEAPONSTEEL.plate()), + new ComparableStack(ModBlocks.barbed_wire), new OreDictStack(WEAPONSTEEL.plate()), new ComparableStack(ModBlocks.barbed_wire))); + + recipes.add(new PedestalRecipe(new ItemStack(ModItems.gun_heavy_revolver_lilmac), + new OreDictStack(WEAPONSTEEL.plate()), new OreDictStack(DIAMOND.gem()), new OreDictStack(WEAPONSTEEL.plate()), + new ComparableStack(ModItems.powder_magic), new ComparableStack(ModItems.gun_heavy_revolver), null, + null, new OreDictStack(BONE.grip()), new ComparableStack(Items.apple, 3))); + + recipes.add(new PedestalRecipe(new ItemStack(ModItems.gun_heavy_revolver_protege), + new ComparableStack(ModBlocks.chain, 16), new OreDictStack(CINNABAR.gem()), new ComparableStack(ModBlocks.chain, 16), + new ComparableStack(ModItems.scrap_nuclear), new ComparableStack(ModItems.gun_heavy_revolver), new ComparableStack(ModItems.scrap_nuclear), + new ComparableStack(ModBlocks.chain, 16), new OreDictStack(CINNABAR.gem()), new ComparableStack(ModBlocks.chain, 16))); + + recipes.add(new PedestalRecipe(new ItemStack(ModItems.gun_flamer_daybreaker), + new OreDictStack(GOLD.plateCast()), new ComparableStack(ModItems.canned_conserve, 1, EnumFoodType.JIZZ), new OreDictStack(GOLD.plateCast()), + new OreDictStack(P_WHITE.ingot()), new ComparableStack(ModItems.gun_flamer), new OreDictStack(P_WHITE.ingot()), + new OreDictStack(GOLD.plateCast()), new ComparableStack(ModItems.stick_dynamite), new OreDictStack(GOLD.plateCast())) + .extra(PedestalExtraCondition.SUN)); + + recipes.add(new PedestalRecipe(new ItemStack(ModItems.gun_autoshotgun_sexy), + new ComparableStack(ModItems.bolt_spike, 16), new OreDictStack(STAR.ingot(), 4), new ComparableStack(ModItems.bolt_spike, 16), + new ComparableStack(ModItems.card_qos), new ComparableStack(ModItems.gun_autoshotgun), new ComparableStack(ModItems.card_aos), + new ComparableStack(ModItems.bolt_spike, 16), new OreDictStack(STAR.ingot(), 4), new ComparableStack(ModItems.bolt_spike, 16))); + + recipes.add(new PedestalRecipe(new ItemStack(ModItems.gun_minigun_lacunae), + null, new ComparableStack(ModItems.powder_magic, 4), null, + new ComparableStack(ModItems.item_secret, 4, EnumSecretType.SELENIUM_STEEL), new ComparableStack(ModItems.gun_minigun), new ComparableStack(ModItems.item_secret, 4, EnumSecretType.SELENIUM_STEEL), + null, new ComparableStack(ModItems.powder_magic, 4), null) + .extra(PedestalExtraCondition.FULL_MOON)); + + recipes.add(new PedestalRecipe(new ItemStack(ModItems.gun_folly), + new ComparableStack(ModItems.item_secret, 4, EnumSecretType.SELENIUM_STEEL), new ComparableStack(ModItems.item_secret, 2, EnumSecretType.CONTROLLER), new ComparableStack(ModItems.item_secret, 4, EnumSecretType.SELENIUM_STEEL), + new OreDictStack(BSCCO.ingot(), 16), new OreDictStack(STAR.block(), 64), new OreDictStack(BSCCO.ingot(), 16), + new ComparableStack(ModItems.item_secret, 4, EnumSecretType.SELENIUM_STEEL), new ComparableStack(ModItems.item_secret, 2, EnumSecretType.CONTROLLER), new ComparableStack(ModItems.item_secret, 4, EnumSecretType.SELENIUM_STEEL)) + .extra(PedestalExtraCondition.FULL_MOON)); + } + + @Override + public String getFileName() { + return "hbmPedestal.json"; + } + + @Override + public Object getRecipeObject() { + return recipes; + } + + @Override + public void deleteRecipes() { + recipes.clear(); + } + + @Override + public void readRecipe(JsonElement recipe) { + JsonObject obj = (JsonObject) recipe; + + ItemStack output = this.readItemStack(obj.get("output").getAsJsonArray()); + JsonArray inputArray = obj.get("input").getAsJsonArray(); + AStack[] input = new AStack[9]; + + for(int i = 0; i < 9; i++) { + JsonElement element = inputArray.get(i); + if(element.isJsonNull()) { + input[i] = null; + } else { + input[i] = this.readAStack(element.getAsJsonArray()); + } + } + + PedestalRecipe rec = new PedestalRecipe(output, input); + if(obj.has("extra")) { + rec.extra = PedestalExtraCondition.valueOf(obj.get("extra").getAsString()); + } + + this.recipes.add(rec); + } + + @Override + public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { + PedestalRecipe rec = (PedestalRecipe) recipe; + + writer.name("output"); + this.writeItemStack(rec.output, writer); + + writer.name("input").beginArray(); + for(int i = 0; i < rec.input.length; i++) { + if(rec.input[i] == null) { + writer.nullValue(); + } else { + this.writeAStack(rec.input[i], writer); + } + } + writer.endArray(); + + writer.name("extra").value(rec.extra.name()); + } + + public static enum PedestalExtraCondition { + NONE, FULL_MOON, NEW_MOON, SUN + } + + public static class PedestalRecipe { + public ItemStack output; + public AStack[] input; + public PedestalExtraCondition extra = PedestalExtraCondition.NONE; + + public PedestalRecipe(ItemStack output, AStack... input) { + this.output = output; + this.input = input; + } + + public PedestalRecipe extra(PedestalExtraCondition extra) { + this.extra = extra; + return this; + } + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/PressRecipes.java b/src/main/java/com/hbm/inventory/recipes/PressRecipes.java index db090d982..dcfa350d2 100644 --- a/src/main/java/com/hbm/inventory/recipes/PressRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PressRecipes.java @@ -10,7 +10,6 @@ import static com.hbm.inventory.OreDictManager.*; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; -import com.hbm.inventory.OreNames; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; @@ -19,10 +18,8 @@ import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.NTMMaterial; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ItemEnums.EnumBriquetteType; +import com.hbm.items.ItemEnums.EnumCasingType; import com.hbm.items.ItemEnums.EnumPages; -import com.hbm.items.ItemAmmoEnums.Ammo357Magnum; -import com.hbm.items.ItemAmmoEnums.Ammo556mm; -import com.hbm.items.ItemAmmoEnums.AmmoLunaticSniper; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemStamp; import com.hbm.items.machine.ItemCircuit.EnumCircuitType; @@ -33,6 +30,7 @@ import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; public class PressRecipes extends SerializableRecipe { @@ -73,50 +71,34 @@ public class PressRecipes extends SerializableRecipe { makeRecipe(StampType.FLAT, new OreDictStack(LIGNITE.dust()), DictFrame.fromOne(ModItems.briquette, EnumBriquetteType.LIGNITE)); makeRecipe(StampType.FLAT, new ComparableStack(ModItems.powder_sawdust), DictFrame.fromOne(ModItems.briquette, EnumBriquetteType.WOOD)); - makeRecipe(StampType.PLATE, new OreDictStack(IRON.ingot()), ModItems.plate_iron); - makeRecipe(StampType.PLATE, new OreDictStack(GOLD.ingot()), ModItems.plate_gold); - makeRecipe(StampType.PLATE, new OreDictStack(TI.ingot()), ModItems.plate_titanium); - makeRecipe(StampType.PLATE, new OreDictStack(AL.ingot()), ModItems.plate_aluminium); - makeRecipe(StampType.PLATE, new OreDictStack(STEEL.ingot()), ModItems.plate_steel); - makeRecipe(StampType.PLATE, new OreDictStack(PB.ingot()), ModItems.plate_lead); - makeRecipe(StampType.PLATE, new OreDictStack(CU.ingot()), ModItems.plate_copper); - makeRecipe(StampType.PLATE, new OreDictStack(ALLOY.ingot()), ModItems.plate_advanced_alloy); - makeRecipe(StampType.PLATE, new OreDictStack(SA326.ingot()), ModItems.plate_schrabidium); - makeRecipe(StampType.PLATE, new OreDictStack(CMB.ingot()), ModItems.plate_combine_steel); - makeRecipe(StampType.PLATE, new OreDictStack(BIGMT.ingot()), ModItems.plate_saturnite); - makeRecipe(StampType.PLATE, new OreDictStack(DURA.ingot()), ModItems.plate_dura_steel); + makeRecipe(StampType.PLATE, new OreDictStack(IRON.ingot()), ModItems.plate_iron); + makeRecipe(StampType.PLATE, new OreDictStack(GOLD.ingot()), ModItems.plate_gold); + makeRecipe(StampType.PLATE, new OreDictStack(TI.ingot()), ModItems.plate_titanium); + makeRecipe(StampType.PLATE, new OreDictStack(AL.ingot()), ModItems.plate_aluminium); + makeRecipe(StampType.PLATE, new OreDictStack(STEEL.ingot()), ModItems.plate_steel); + makeRecipe(StampType.PLATE, new OreDictStack(PB.ingot()), ModItems.plate_lead); + makeRecipe(StampType.PLATE, new OreDictStack(CU.ingot()), ModItems.plate_copper); + makeRecipe(StampType.PLATE, new OreDictStack(ALLOY.ingot()), ModItems.plate_advanced_alloy); + makeRecipe(StampType.PLATE, new OreDictStack(SA326.ingot()), ModItems.plate_schrabidium); + makeRecipe(StampType.PLATE, new OreDictStack(CMB.ingot()), ModItems.plate_combine_steel); + makeRecipe(StampType.PLATE, new OreDictStack(GUNMETAL.ingot()), ModItems.plate_gunmetal); + makeRecipe(StampType.PLATE, new OreDictStack(WEAPONSTEEL.ingot()), ModItems.plate_weaponsteel); + makeRecipe(StampType.PLATE, new OreDictStack(BIGMT.ingot()), ModItems.plate_saturnite); + makeRecipe(StampType.PLATE, new OreDictStack(DURA.ingot()), ModItems.plate_dura_steel); + + makeRecipe(StampType.C9, new OreDictStack(GUNMETAL.plate()), DictFrame.fromOne(ModItems.casing, EnumCasingType.SMALL, 4)); + makeRecipe(StampType.C50, new OreDictStack(GUNMETAL.plate()), DictFrame.fromOne(ModItems.casing, EnumCasingType.LARGE, 2)); + makeRecipe(StampType.C9, new OreDictStack(WEAPONSTEEL.plate()), DictFrame.fromOne(ModItems.casing, EnumCasingType.SMALL_STEEL, 4)); + makeRecipe(StampType.C50, new OreDictStack(WEAPONSTEEL.plate()), DictFrame.fromOne(ModItems.casing, EnumCasingType.LARGE_STEEL, 2)); for(NTMMaterial mat : Mats.orderedList) { - if(mat.shapes.contains(MaterialShapes.WIRE) && mat.shapes.contains(MaterialShapes.INGOT)) { - makeRecipe(StampType.WIRE, new OreDictStack(OreNames.INGOT + mat.names[0]), new ItemStack(ModItems.wire_fine, 8, mat.id)); + if(mat.autogen.contains(MaterialShapes.WIRE) && OreDictionary.doesOreNameExist(MaterialShapes.INGOT.make(mat))) { + makeRecipe(StampType.WIRE, new OreDictStack(MaterialShapes.INGOT.make(mat)), new ItemStack(ModItems.wire_fine, 8, mat.id)); } } makeRecipe(StampType.CIRCUIT, new OreDictStack(SI.billet()), DictFrame.fromOne(ModItems.circuit, EnumCircuitType.SILICON)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_iron), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.IRON)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_steel), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.LEAD)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_lead), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.NUCLEAR)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_gold), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.GOLD)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_schrabidium), ModItems.ammo_357.stackFromEnum(6, Ammo357Magnum.SCHRABIDIUM)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_nightmare), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.NIGHTMARE1)); - makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_desh), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.DESH)); - makeRecipe(StampType.C357, new OreDictStack(STEEL.ingot()), ModItems.ammo_357.stackFromEnum(24, Ammo357Magnum.STEEL)); - - makeRecipe(StampType.C44, new ComparableStack(ModItems.assembly_nopip), new ItemStack(ModItems.ammo_44, 24)); - makeRecipe(StampType.C44, new ComparableStack(ModItems.assembly_45), new ItemStack(ModItems.ammo_45, 32)); - - makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_smg), new ItemStack(ModItems.ammo_9mm, 32)); - makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_uzi), new ItemStack(ModItems.ammo_22lr, 32)); - makeRecipe(StampType.C9, new OreDictStack(GOLD.ingot()), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.GOLD)); - makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_lacunae), new ItemStack(ModItems.ammo_5mm, 64)); - makeRecipe(StampType.C9, new ComparableStack(ModItems.assembly_556), new ItemStack(ModItems.ammo_556, 32)); - - makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_calamity), new ItemStack(ModItems.ammo_50bmg, 12)); - makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_actionexpress), new ItemStack(ModItems.ammo_50ae, 12)); - makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_luna), ModItems.ammo_luna_sniper.stackFromEnum(4, AmmoLunaticSniper.SABOT)); - makeRecipe(StampType.C50, new ComparableStack(ModItems.assembly_762), new ItemStack(ModItems.ammo_762, 32)); - makeRecipe(StampType.PRINTING1, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE1)); makeRecipe(StampType.PRINTING2, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE2)); makeRecipe(StampType.PRINTING3, new ComparableStack(Items.paper), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE3)); diff --git a/src/main/java/com/hbm/inventory/recipes/PyroOvenRecipes.java b/src/main/java/com/hbm/inventory/recipes/PyroOvenRecipes.java new file mode 100644 index 000000000..384783d3f --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/PyroOvenRecipes.java @@ -0,0 +1,224 @@ +package com.hbm.inventory.recipes; + +import static com.hbm.inventory.OreDictManager.*; +import static com.hbm.inventory.fluid.Fluids.*; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.trait.FT_Flammable; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ItemEnums.EnumAshType; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemFluidIcon; +import com.hbm.items.special.ItemBedrockOreNew; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade; +import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; + +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +public class PyroOvenRecipes extends SerializableRecipe { + + public static List recipes = new ArrayList(); + + @Override + public void registerDefaults() { + + //solid fuel + registerSFAuto(SMEAR); + registerSFAuto(HEATINGOIL); + registerSFAuto(HEATINGOIL_VACUUM); + registerSFAuto(RECLAIMED); + registerSFAuto(PETROIL); + registerSFAuto(NAPHTHA); + registerSFAuto(NAPHTHA_CRACK); + registerSFAuto(DIESEL); + registerSFAuto(DIESEL_REFORM); + registerSFAuto(DIESEL_CRACK); + registerSFAuto(DIESEL_CRACK_REFORM); + registerSFAuto(LIGHTOIL); + registerSFAuto(LIGHTOIL_CRACK); + registerSFAuto(LIGHTOIL_VACUUM); + registerSFAuto(KEROSENE); + registerSFAuto(KEROSENE_REFORM); + registerSFAuto(SOURGAS); + registerSFAuto(REFORMGAS); + registerSFAuto(SYNGAS); + registerSFAuto(PETROLEUM); + registerSFAuto(LPG); + registerSFAuto(BIOFUEL); + registerSFAuto(AROMATICS); + registerSFAuto(UNSATURATEDS); + registerSFAuto(REFORMATE); + registerSFAuto(XYLENE); + registerSFAuto(BALEFIRE, 24_000_000L, ModItems.solid_fuel_bf); + + //bedrock ores + + for(BedrockOreType type : BedrockOreType.values()) { + recipes.add(new PyroOvenRecipe(10).in(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type))).out(new FluidStack(Fluids.VITRIOL, 50)).out(ItemBedrockOreNew.make(BedrockOreGrade.BASE_ROASTED, type))); + recipes.add(new PyroOvenRecipe(10).in(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type))).out(new FluidStack(Fluids.VITRIOL, 50)).out(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type))); + recipes.add(new PyroOvenRecipe(10).in(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type))).out(new FluidStack(Fluids.VITRIOL, 50)).out(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ROASTED, type))); + recipes.add(new PyroOvenRecipe(10).in(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type))).out(new FluidStack(Fluids.VITRIOL, 50)).out(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ROASTED, type))); + recipes.add(new PyroOvenRecipe(10).in(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type))).out(new FluidStack(Fluids.VITRIOL, 50)).out(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type))); + } + + //syngas from coal + recipes.add(new PyroOvenRecipe(100) + .in(new FluidStack(Fluids.STEAM, 500)).in(new OreDictStack(COAL.gem())) + .out(new FluidStack(Fluids.SYNGAS, 1_000))); + recipes.add(new PyroOvenRecipe(100) + .in(new FluidStack(Fluids.STEAM, 500)).in(new OreDictStack(COAL.dust())) + .out(new FluidStack(Fluids.SYNGAS, 1_000))); + recipes.add(new PyroOvenRecipe(100) + .in(new FluidStack(Fluids.STEAM, 250)).in(new OreDictStack(ANY_COKE.gem())) + .out(new FluidStack(Fluids.SYNGAS, 1_000))); + //syngas from biomass + recipes.add(new PyroOvenRecipe(100) + .in(new ComparableStack(ModItems.biomass, 4)) + .out(new FluidStack(Fluids.SYNGAS, 1_000)).out(new ItemStack(Items.coal, 1, 1))); + //soot from tar + recipes.add(new PyroOvenRecipe(40) + .out(new FluidStack(Fluids.HYDROGEN, 250)).in(new OreDictStack(ANY_TAR.any(), 4)) + .out(new FluidStack(Fluids.CARBONDIOXIDE, 1_000)).out(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.SOOT))); + //heavyoil from coal + recipes.add(new PyroOvenRecipe(100) + .in(new FluidStack(Fluids.HYDROGEN, 500)).in(new OreDictStack(COAL.gem())) + .out(new FluidStack(Fluids.HEAVYOIL, 1_000))); + recipes.add(new PyroOvenRecipe(100) + .in(new FluidStack(Fluids.HYDROGEN, 500)).in(new OreDictStack(COAL.dust())) + .out(new FluidStack(Fluids.HEAVYOIL, 1_000))); + recipes.add(new PyroOvenRecipe(100) + .in(new FluidStack(Fluids.HYDROGEN, 250)).in(new OreDictStack(ANY_COKE.gem())) + .out(new FluidStack(Fluids.HEAVYOIL, 1_000))); + //coalgas from coal + recipes.add(new PyroOvenRecipe(50) + .in(new FluidStack(Fluids.HEAVYOIL, 500)).in(new OreDictStack(COAL.gem())) + .out(new FluidStack(Fluids.COALGAS, 1_000))); + recipes.add(new PyroOvenRecipe(50) + .in(new FluidStack(Fluids.HEAVYOIL, 500)).in(new OreDictStack(COAL.dust())) + .out(new FluidStack(Fluids.COALGAS, 1_000))); + recipes.add(new PyroOvenRecipe(50) + .in(new FluidStack(Fluids.HEAVYOIL, 500)).in(new OreDictStack(ANY_COKE.gem())) + .out(new FluidStack(Fluids.COALGAS, 1_000))); + //refgas from coker gas + recipes.add(new PyroOvenRecipe(60) + .in(new FluidStack(GAS_COKER, 4_000)) + .out(new FluidStack(Fluids.REFORMGAS, 100))); + } + + private static void registerSFAuto(FluidType fluid) { + registerSFAuto(fluid, 1_440_000L, ModItems.solid_fuel); //3200 burntime * 1.5 burntime bonus * 300 TU/t + } + private static void registerSFAuto(FluidType fluid, long tuPerSF, Item fuel) { + long tuPerBucket = fluid.getTrait(FT_Flammable.class).getHeatEnergy(); + double bonus = 0.5D; //double efficiency!! + + int mB = (int) (tuPerSF * 1000L * bonus / tuPerBucket); + + if(mB > 10_000) mB -= (mB % 1000); + else if(mB > 1_000) mB -= (mB % 100); + else if(mB > 100) mB -= (mB % 10); + + mB = Math.max(mB, 1); + + registerRecipe(fluid, mB, fuel); + } + + private static void registerRecipe(FluidType type, int quantity, Item output) { registerRecipe(type, quantity, new ItemStack(output)); } + private static void registerRecipe(FluidType type, int quantity, ItemStack output) { recipes.add(new PyroOvenRecipe(60).in(new FluidStack(type, quantity)).out(output)); } + + public static HashMap getRecipes() { + HashMap map = new HashMap(); + + for(PyroOvenRecipe rec : recipes) { + + Object[] in = null; + Object[] out = null; + + if(rec.inputFluid != null && rec.inputItem != null) in = new Object[] {ItemFluidIcon.make(rec.inputFluid), rec.inputItem}; + if(rec.inputFluid != null && rec.inputItem == null) in = new Object[] {ItemFluidIcon.make(rec.inputFluid)}; + if(rec.inputFluid == null && rec.inputItem != null) in = new Object[] {rec.inputItem}; + + if(rec.outputFluid != null && rec.outputItem != null) out = new Object[] {rec.outputItem, ItemFluidIcon.make(rec.outputFluid)}; + if(rec.outputFluid != null && rec.outputItem == null) out = new Object[] {ItemFluidIcon.make(rec.outputFluid)}; + if(rec.outputFluid == null && rec.outputItem != null) out = new Object[] {rec.outputItem}; + + if(in != null && out != null) { + map.put(in, out); + } + } + + return map; + } + + @Override + public String getFileName() { + return "hbmPyrolysis.json"; + } + + @Override + public Object getRecipeObject() { + return recipes; + } + + @Override + public void deleteRecipes() { + recipes.clear(); + } + + @Override + public void readRecipe(JsonElement recipe) { + JsonObject obj = (JsonObject) recipe; + + AStack inputItem = obj.has("inputItem") ? this.readAStack(obj.get("inputItem").getAsJsonArray()) : null; + FluidStack inputFluid = obj.has("inputFluid") ? this.readFluidStack(obj.get("inputFluid").getAsJsonArray()) : null; + ItemStack outputItem = obj.has("outputItem") ? this.readItemStack(obj.get("outputItem").getAsJsonArray()) : null; + FluidStack outputFluid = obj.has("outputFluid") ? this.readFluidStack(obj.get("outputFluid").getAsJsonArray()) : null; + int duration = obj.get("duration").getAsInt(); + + recipes.add(new PyroOvenRecipe(duration).in(inputFluid).in(inputItem).out(outputFluid).out(outputItem)); + } + + @Override + public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { + + PyroOvenRecipe rec = (PyroOvenRecipe) recipe; + + if(rec.inputFluid != null) { writer.name("inputFluid"); this.writeFluidStack(rec.inputFluid, writer); } + if(rec.inputItem != null) { writer.name("inputItem"); this.writeAStack(rec.inputItem, writer); } + if(rec.outputFluid != null) { writer.name("outputFluid"); this.writeFluidStack(rec.outputFluid, writer); } + if(rec.outputItem != null) { writer.name("outputItem"); this.writeItemStack(rec.outputItem, writer); } + writer.name("duration").value(rec.duration); + } + + public static class PyroOvenRecipe { + public FluidStack inputFluid; + public AStack inputItem; + public FluidStack outputFluid; + public ItemStack outputItem; + public int duration; + + public PyroOvenRecipe(int duration) { + this.duration = duration; + } + + public PyroOvenRecipe in(FluidStack stack) { this.inputFluid = stack; return this; } + public PyroOvenRecipe in(AStack stack) { this.inputItem = stack; return this; } + public PyroOvenRecipe out(FluidStack stack) { this.outputFluid = stack; return this; } + public PyroOvenRecipe out(ItemStack stack) { this.outputItem = stack; return this; } + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/RotaryFurnaceRecipes.java b/src/main/java/com/hbm/inventory/recipes/RotaryFurnaceRecipes.java new file mode 100644 index 000000000..7cfba6a50 --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/RotaryFurnaceRecipes.java @@ -0,0 +1,188 @@ +package com.hbm.inventory.recipes; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +import static com.hbm.inventory.OreDictManager.*; +import static com.hbm.inventory.material.Mats.*; +import static com.hbm.inventory.material.MaterialShapes.*; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.material.Mats; +import com.hbm.inventory.material.Mats.MaterialStack; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemFluidIcon; +import com.hbm.items.machine.ItemScraps; + +import net.minecraft.item.ItemStack; + +public class RotaryFurnaceRecipes extends SerializableRecipe { + + public static List recipes = new ArrayList(); + + @Override + public void registerDefaults() { + + recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_STEEL, INGOT.q(1)), 100, 100, new OreDictStack(IRON.ingot()), new OreDictStack(COAL.gem()))); + recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_STEEL, INGOT.q(1)), 100, 100, new OreDictStack(IRON.ingot()), new OreDictStack(ANY_COKE.gem()))); + + recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_STEEL, INGOT.q(2)), 200, 25, new OreDictStack(IRON.fragment(), 9), new OreDictStack(COAL.gem()))); + recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_STEEL, INGOT.q(3)), 200, 25, new OreDictStack(IRON.fragment(), 9), new OreDictStack(ANY_COKE.gem()))); + recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_STEEL, INGOT.q(4)), 400, 25, new OreDictStack(IRON.fragment(), 9), new OreDictStack(ANY_COKE.gem()), new ComparableStack(ModItems.powder_flux))); + + recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_DESH, INGOT.q(1)), 100, 200, new FluidStack(Fluids.LIGHTOIL, 100), new ComparableStack(ModItems.powder_desh_ready))); + + recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_GUNMETAL, INGOT.q(4)), 200, 100, new OreDictStack(CU.ingot(), 3), new OreDictStack(AL.ingot(), 1))); + recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_WEAPONSTEEL, INGOT.q(1)), 200, 400, new FluidStack(Fluids.GAS_COKER, 100), new OreDictStack(STEEL.ingot(), 1), new ComparableStack(ModItems.powder_flux, 2))); + recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_SATURN, INGOT.q(2)), 200, 400, new FluidStack(Fluids.REFORMGAS, 250), new OreDictStack(DURA.dust(), 4), new OreDictStack(CU.dust()))); + } + + public static HashMap getRecipes() { + + HashMap recipes = new HashMap(); + + for(RotaryFurnaceRecipe recipe : RotaryFurnaceRecipes.recipes) { + + int size = recipe.ingredients.length + (recipe.fluid != null ? 1 : 0); + Object[] array = new Object[size]; + + for(int i = 0; i < recipe.ingredients.length; i++) { + array[i] = recipe.ingredients[i]; + } + + if(recipe.fluid != null) array[size - 1] = ItemFluidIcon.make(recipe.fluid); + + recipes.put(array, ItemScraps.create(recipe.output, true)); + } + + return recipes; + } + + public static RotaryFurnaceRecipe getRecipe(ItemStack... inputs) { + + outer: + for(RotaryFurnaceRecipe recipe : recipes) { + + List recipeList = new ArrayList(); + for(AStack ingredient : recipe.ingredients) recipeList.add(ingredient); + + for(int i = 0; i < inputs.length; i++) { + + ItemStack inputStack = inputs[i]; + + if(inputStack != null) { + + boolean hasMatch = false; + Iterator iterator = recipeList.iterator(); + + while(iterator.hasNext()) { + AStack recipeStack = iterator.next(); + + if(recipeStack.matchesRecipe(inputStack, true) && inputStack.stackSize >= recipeStack.stacksize) { + hasMatch = true; + recipeList.remove(recipeStack); + break; + } + } + + if(!hasMatch) { + continue outer; + } + } + } + + if(recipeList.isEmpty()) return recipe; + } + + return null; + } + + @Override + public String getFileName() { + return "hbmRotaryFurnace.json"; + } + + @Override + public Object getRecipeObject() { + return recipes; + } + + @Override + public void deleteRecipes() { + recipes.clear(); + } + + @Override + public void readRecipe(JsonElement recipe) { + JsonObject obj = (JsonObject) recipe; + + AStack[] inputs = this.readAStackArray(obj.get("inputs").getAsJsonArray()); + FluidStack fluid = obj.has("fluid") ? this.readFluidStack(obj.get("fluid").getAsJsonArray()) : null; + + JsonArray array = obj.get("output").getAsJsonArray(); + MaterialStack stack = new MaterialStack(Mats.matByName.get(array.get(0).getAsString()), array.get(1).getAsInt()); + + int duration = obj.get("duration").getAsInt(); + int steam = obj.get("steam").getAsInt(); + + recipes.add(new RotaryFurnaceRecipe(stack, duration, steam, fluid, inputs)); + } + + @Override + public void writeRecipe(Object obj, JsonWriter writer) throws IOException { + RotaryFurnaceRecipe recipe = (RotaryFurnaceRecipe) obj; + + writer.name("inputs").beginArray(); + for(AStack aStack : recipe.ingredients) { + this.writeAStack(aStack, writer); + } + writer.endArray(); + + if(recipe.fluid != null) { + writer.name("fluid"); + this.writeFluidStack(recipe.fluid, writer); + } + + writer.name("output").beginArray(); + writer.setIndent(""); + writer.value(recipe.output.material.names[0]).value(recipe.output.amount); + writer.endArray(); + writer.setIndent(" "); + + writer.name("duration").value(recipe.duration); + writer.name("steam").value(recipe.steam); + } + + public static class RotaryFurnaceRecipe { + + public AStack[] ingredients; + public FluidStack fluid; + public MaterialStack output; + public int duration; + public int steam; + + public RotaryFurnaceRecipe(MaterialStack output, int duration, int steam, FluidStack fluid, AStack... ingredients) { + this.ingredients = ingredients; + this.fluid = fluid; + this.output = output; + this.duration = duration; + this.steam = steam; + } + + public RotaryFurnaceRecipe(MaterialStack output, int duration, int steam, AStack... ingredients) { + this(output, duration, steam, null, ingredients); + } + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/SILEXRecipes.java b/src/main/java/com/hbm/inventory/recipes/SILEXRecipes.java index 8bdecce61..69867b131 100644 --- a/src/main/java/com/hbm/inventory/recipes/SILEXRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SILEXRecipes.java @@ -20,6 +20,7 @@ import com.hbm.util.WeightedRandomObject; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; +import net.minecraft.item.Item; import net.minecraftforge.oredict.OreDictionary; public class SILEXRecipes { @@ -33,615 +34,623 @@ public class SILEXRecipes { itemTranslation.put(new ComparableStack(ModItems.fluid_icon, 1, Fluids.UF6.getID()), new ComparableStack(ModItems.ingot_uranium)); dictTranslation.put(U.dust(), U.ingot()); recipes.put(U.ingot(), new SILEXRecipe(900, 100, EnumWavelengths.VISIBLE) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u235), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u238), 11)) + .addOut(new ItemStack(ModItems.nugget_u235), 1) + .addOut(new ItemStack(ModItems.nugget_u238), 11) ); recipes.put(new ComparableStack(ModItems.ingot_pu_mix), new SILEXRecipe(900, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu239), 6)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu240), 3)) + .addOut(new ItemStack(ModItems.nugget_pu239), 6) + .addOut(new ItemStack(ModItems.nugget_pu240), 3) ); recipes.put(new ComparableStack(ModItems.ingot_am_mix), new SILEXRecipe(900, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_am241), 3)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_am242), 6)) + .addOut(new ItemStack(ModItems.nugget_am241), 3) + .addOut(new ItemStack(ModItems.nugget_am242), 6) ); itemTranslation.put(new ComparableStack(ModItems.fluid_icon, 1, Fluids.PUF6.getID()), new ComparableStack(ModItems.ingot_plutonium)); dictTranslation.put(PU.dust(), PU.ingot()); recipes.put(PU.ingot(), new SILEXRecipe(900, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu238), 3)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu239), 4)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu240), 2)) + .addOut(new ItemStack(ModItems.nugget_pu238), 3) + .addOut(new ItemStack(ModItems.nugget_pu239), 4) + .addOut(new ItemStack(ModItems.nugget_pu240), 2) ); recipes.put(new ComparableStack(ModItems.ingot_schraranium), new SILEXRecipe(900, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_schrabidium), 4)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_uranium), 3)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_neptunium), 2)) + .addOut(new ItemStack(ModItems.nugget_schrabidium), 4) + .addOut(new ItemStack(ModItems.nugget_uranium), 3) + .addOut(new ItemStack(ModItems.nugget_neptunium), 2) ); itemTranslation.put(new ComparableStack(ModItems.powder_australium), new ComparableStack(ModItems.ingot_australium)); recipes.put(new ComparableStack(ModItems.ingot_australium), new SILEXRecipe(900, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_australium_lesser), 5)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_australium_greater), 1)) + .addOut(new ItemStack(ModItems.nugget_australium_lesser), 5) + .addOut(new ItemStack(ModItems.nugget_australium_greater), 1) ); recipes.put(new ComparableStack(ModItems.crystal_schraranium), new SILEXRecipe(900, 100, 3) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_schrabidium), 5)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_uranium), 2)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_neptunium), 2)) + .addOut(new ItemStack(ModItems.nugget_schrabidium), 5) + .addOut(new ItemStack(ModItems.nugget_uranium), 2) + .addOut(new ItemStack(ModItems.nugget_neptunium), 2) ); recipes.put(new ComparableStack(ModBlocks.ore_tikite), new SILEXRecipe(900, 100, EnumWavelengths.UV) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_plutonium), 2)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_cobalt), 3)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_niobium), 3)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_nitan_mix), 2)) + .addOut(new ItemStack(ModItems.powder_plutonium), 2) + .addOut(new ItemStack(ModItems.powder_cobalt), 3) + .addOut(new ItemStack(ModItems.powder_niobium), 3) + .addOut(new ItemStack(ModItems.powder_nitan_mix), 2) ); recipes.put(new ComparableStack(ModItems.crystal_trixite), new SILEXRecipe(1200, 100, EnumWavelengths.UV) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_plutonium), 2)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_cobalt), 3)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_niobium), 3)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_nitan_mix), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_spark_mix), 1)) + .addOut(new ItemStack(ModItems.powder_plutonium), 2) + .addOut(new ItemStack(ModItems.powder_cobalt), 3) + .addOut(new ItemStack(ModItems.powder_niobium), 3) + .addOut(new ItemStack(ModItems.powder_nitan_mix), 1) + .addOut(new ItemStack(ModItems.powder_spark_mix), 1) ); itemTranslation.put(new ComparableStack(ModItems.powder_lapis), new ComparableStack(Items.dye, 1, 4)); recipes.put(new ComparableStack(Items.dye, 1, 4), new SILEXRecipe(100, 100 ,1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.sulfur), 4)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_aluminium), 3)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_cobalt), 3)) + .addOut(new ItemStack(ModItems.sulfur), 4) + .addOut(new ItemStack(ModItems.powder_aluminium), 3) + .addOut(new ItemStack(ModItems.powder_cobalt), 3) ); recipes.put(new ComparableStack(ModItems.fluid_icon, 1, Fluids.DEATH.getID()), new SILEXRecipe(1000, 1000, 4) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_impure_osmiridium), 1)) + .addOut(new ItemStack(ModItems.powder_impure_osmiridium), 1) ); recipes.put(new ComparableStack(ModItems.fluid_icon, 1, Fluids.VITRIOL.getID()), new SILEXRecipe(1000, 1000, EnumWavelengths.IR) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_bromine), 5)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_iodine), 5)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_iron), 5)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.sulfur), 15)) + .addOut(new ItemStack(ModItems.powder_bromine), 5) + .addOut(new ItemStack(ModItems.powder_iodine), 5) + .addOut(new ItemStack(ModItems.powder_iron), 5) + .addOut(new ItemStack(ModItems.sulfur), 15) ); for(int i = 0; i < 5; i++) { // UEU // recipes.put(new ComparableStack(ModItems.rbmk_pellet_ueu, 1, i), new SILEXRecipe(600, 100, 1) //NU and MEU will breed more plutonium due to their higher concentrations of U-238 - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_uranium), 86 - i * 11)) //NU is unenriched to the point where it'll always be lower burnup; so more Pu239 for longer - .addOut(new WeightedRandomObject(i < 2 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 10 + i * 3)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 2 + 3 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 2 + 5 * i)) ); + .addOut(new ItemStack(ModItems.nugget_uranium), 86 - i * 11) //NU is unenriched to the point where it'll always be lower burnup; so more Pu239 for longer + .addOut(i < 2 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 10 + i * 3) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 2 + 3 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 2 + 5 * i) ); recipes.put(new ComparableStack(ModItems.rbmk_pellet_ueu, 1, i + 5), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_xe135_tiny), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_uranium), 86 - i * 11)) - .addOut(new WeightedRandomObject(i < 2 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 10 + i * 3)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 2 + 3 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 1 + 5 * i)) ); + .addOut(new ItemStack(ModItems.powder_xe135_tiny), 1) + .addOut(new ItemStack(ModItems.nugget_uranium), 86 - i * 11) + .addOut(i < 2 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 10 + i * 3) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 2 + 3 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 1 + 5 * i) ); // MEU // recipes.put(new ComparableStack(ModItems.rbmk_pellet_meu, 1, i), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_uranium_fuel), 84 - i * 16)) - .addOut(new WeightedRandomObject(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 4)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 4 + 5 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 6 + 7 * i)) ); + .addOut(new ItemStack(ModItems.nugget_uranium_fuel), 84 - i * 16) + .addOut(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 4) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 4 + 5 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 6 + 7 * i) ); recipes.put(new ComparableStack(ModItems.rbmk_pellet_meu, 1, i + 5), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_xe135_tiny), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_uranium_fuel), 83 - i * 16)) - .addOut(new WeightedRandomObject(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 4)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 4 + 5 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 6 + 7 * i)) ); + .addOut(new ItemStack(ModItems.powder_xe135_tiny), 1) + .addOut(new ItemStack(ModItems.nugget_uranium_fuel), 83 - i * 16) + .addOut(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 4) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 4 + 5 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 6 + 7 * i) ); // HEU233 // recipes.put(new ComparableStack(ModItems.rbmk_pellet_heu233, 1, i), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u233), 90 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM233.ordinal()), 4 + 8 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM233.ordinal()), 6 + 12 * i)) ); + .addOut(new ItemStack(ModItems.nugget_u233), 90 - i * 20) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM233.ordinal()), 4 + 8 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM233.ordinal()), 6 + 12 * i) ); recipes.put(new ComparableStack(ModItems.rbmk_pellet_heu233, 1, i + 5), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_xe135_tiny), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u233), 89 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM233.ordinal()), 4 + 8 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM233.ordinal()), 6 + 12 * i)) ); + .addOut(new ItemStack(ModItems.powder_xe135_tiny), 1) + .addOut(new ItemStack(ModItems.nugget_u233), 89 - i * 20) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM233.ordinal()), 4 + 8 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM233.ordinal()), 6 + 12 * i) ); // HEU235 // recipes.put(new ComparableStack(ModItems.rbmk_pellet_heu235, 1, i), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u235), 90 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 4 + 8 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 6 + 12 * i)) ); + .addOut(new ItemStack(ModItems.nugget_u235), 90 - i * 20) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 4 + 8 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 6 + 12 * i) ); recipes.put(new ComparableStack(ModItems.rbmk_pellet_heu235, 1, i + 5), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_xe135_tiny), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u235), 89 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 4 + 8 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 6 + 12 * i)) ); + .addOut(new ItemStack(ModItems.powder_xe135_tiny), 1) + .addOut(new ItemStack(ModItems.nugget_u235), 89 - i * 20) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 4 + 8 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 6 + 12 * i) ); // TH232 // recipes.put(new ComparableStack(ModItems.rbmk_pellet_thmeu, 1, i), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_thorium_fuel), 84 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u233), 6 + i * 4)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.THORIUM.ordinal()), 10 + 16 * i)) ); + .addOut(new ItemStack(ModItems.nugget_thorium_fuel), 84 - i * 20) + .addOut(new ItemStack(ModItems.nugget_u233), 6 + i * 4) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.THORIUM.ordinal()), 10 + 16 * i) ); recipes.put(new ComparableStack(ModItems.rbmk_pellet_thmeu, 1, i + 5), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_xe135_tiny), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_thorium_fuel), 83 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u233), 6 + i * 4)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.THORIUM.ordinal()), 10 + 16 * i)) ); + .addOut(new ItemStack(ModItems.powder_xe135_tiny), 1) + .addOut(new ItemStack(ModItems.nugget_thorium_fuel), 83 - i * 20) + .addOut(new ItemStack(ModItems.nugget_u233), 6 + i * 4) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.THORIUM.ordinal()), 10 + 16 * i) ); // LEP // recipes.put(new ComparableStack(ModItems.rbmk_pellet_lep, 1, i), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_plutonium_fuel), 84 - i * 14)) - .addOut(new WeightedRandomObject(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 2)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 7 + 8 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), 3 + 4 * i)) ); + .addOut(new ItemStack(ModItems.nugget_plutonium_fuel), 84 - i * 14) + .addOut(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 2) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 7 + 8 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), 3 + 4 * i) ); recipes.put(new ComparableStack(ModItems.rbmk_pellet_lep, 1, i + 5), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_xe135_tiny), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_plutonium_fuel), 83 - i * 14)) - .addOut(new WeightedRandomObject(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 2)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 7 + 8 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), 3 + 4 * i)) ); + .addOut(new ItemStack(ModItems.powder_xe135_tiny), 1) + .addOut(new ItemStack(ModItems.nugget_plutonium_fuel), 83 - i * 14) + .addOut(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 2) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 7 + 8 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), 3 + 4 * i) ); // MEP // recipes.put(new ComparableStack(ModItems.rbmk_pellet_mep, 1, i), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu_mix), 85 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 10 + 10 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), 5 + 5 * i)) ); + .addOut(new ItemStack(ModItems.nugget_pu_mix), 85 - i * 20) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 10 + 10 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), 5 + 5 * i) ); recipes.put(new ComparableStack(ModItems.rbmk_pellet_mep, 1, i + 5), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_xe135_tiny), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu_mix), 84 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 10 + 10 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), 5 + 5 * i)) ); + .addOut(new ItemStack(ModItems.powder_xe135_tiny), 1) + .addOut(new ItemStack(ModItems.nugget_pu_mix), 84 - i * 20) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 10 + 10 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), 5 + 5 * i) ); // HEP239 // recipes.put(new ComparableStack(ModItems.rbmk_pellet_hep239, 1, i), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu239), 85 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 15 + 20 * i)) ); + .addOut(new ItemStack(ModItems.nugget_pu239), 85 - i * 20) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 15 + 20 * i) ); recipes.put(new ComparableStack(ModItems.rbmk_pellet_hep239, 1, i + 5), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_xe135_tiny), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu239), 84 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 15 + 20 * i)) ); + .addOut(new ItemStack(ModItems.powder_xe135_tiny), 1) + .addOut(new ItemStack(ModItems.nugget_pu239), 84 - i * 20) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 15 + 20 * i) ); // HEP241 // recipes.put(new ComparableStack(ModItems.rbmk_pellet_hep241, 1, i), new SILEXRecipe(600, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu241), 85 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM241.ordinal()), 15 + 20 * i)) ); + .addOut(new ItemStack(ModItems.nugget_pu241), 85 - i * 20) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM241.ordinal()), 15 + 20 * i) ); recipes.put(new ComparableStack(ModItems.rbmk_pellet_hep241, 1, i + 5), new SILEXRecipe(600, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_xe135_tiny), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu241), 84 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM241.ordinal()), 15 + 20 * i)) ); + .addOut(new ItemStack(ModItems.powder_xe135_tiny), 1) + .addOut(new ItemStack(ModItems.nugget_pu241), 84 - i * 20) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM241.ordinal()), 15 + 20 * i) ); // MEN // recipes.put(new ComparableStack(ModItems.rbmk_pellet_men, 1, i), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_neptunium_fuel), 84 - i * 14)) - .addOut(new WeightedRandomObject(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 2)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 4 + 5 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 6 + 7 * i)) ); + .addOut(new ItemStack(ModItems.nugget_neptunium_fuel), 84 - i * 14) + .addOut(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 2) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 4 + 5 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 6 + 7 * i) ); recipes.put(new ComparableStack(ModItems.rbmk_pellet_men, 1, i + 5), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_xe135_tiny), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_neptunium_fuel), 83 - i * 14)) - .addOut(new WeightedRandomObject(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 2)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 4 + 5 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 6 + 7 * i)) ); + .addOut(new ItemStack(ModItems.powder_xe135_tiny), 1) + .addOut(new ItemStack(ModItems.nugget_neptunium_fuel), 83 - i * 14) + .addOut(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 2) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 4 + 5 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 6 + 7 * i) ); // HEN // recipes.put(new ComparableStack(ModItems.rbmk_pellet_hen, 1, i), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_neptunium), 90 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 4 + 8 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 6 + 12 * i)) ); + .addOut(new ItemStack(ModItems.nugget_neptunium), 90 - i * 20) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 4 + 8 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 6 + 12 * i) ); recipes.put(new ComparableStack(ModItems.rbmk_pellet_hen, 1, i + 5), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_xe135_tiny), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_neptunium), 89 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 4 + 8 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 6 + 12 * i)) ); + .addOut(new ItemStack(ModItems.powder_xe135_tiny), 1) + .addOut(new ItemStack(ModItems.nugget_neptunium), 89 - i * 20) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 4 + 8 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 6 + 12 * i) ); // MOX // recipes.put(new ComparableStack(ModItems.rbmk_pellet_mox, 1, i), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_mox_fuel), 84 - i * 20)) - .addOut(new WeightedRandomObject(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 4)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 2 + 3 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 3 + 5 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 3 + 5 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), 2 + 3 * i)) ); + .addOut(new ItemStack(ModItems.nugget_mox_fuel), 84 - i * 20) + .addOut(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 4) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 2 + 3 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 3 + 5 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 3 + 5 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), 2 + 3 * i) ); //TODO: Readd xenon processing if/when the NEI handler can display more than 6 outputs properly recipes.put(new ComparableStack(ModItems.rbmk_pellet_mox, 1, i + 5), new SILEXRecipe(600, 100, 1) //Plutonium processing isn't possible w/o fucking up the NEI handler or removing xenon - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_mox_fuel), 84 - i * 20)) //To prevent people from taking advantage of differing waste types, conform to the latter - .addOut(new WeightedRandomObject(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 4)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 2 + 3 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 3 + 5 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 3 + 5 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), 2 + 3 * i)) ); + .addOut(new ItemStack(ModItems.nugget_mox_fuel), 84 - i * 20) //To prevent people from taking advantage of differing waste types, conform to the latter + .addOut(i < 1 ? new ItemStack(ModItems.nugget_pu239) : new ItemStack(ModItems.nugget_pu_mix), 6 + i * 4) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), 2 + 3 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), 3 + 5 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), 3 + 5 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), 2 + 3 * i) ); // LEAUS // recipes.put(new ComparableStack(ModItems.rbmk_pellet_leaus, 1, i), new SILEXRecipe(600, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_australium_lesser), 90 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_lead), 6 + 12 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pb209), 4 + 8 * i)) ); + .addOut(new ItemStack(ModItems.nugget_australium_lesser), 90 - i * 20) + .addOut(new ItemStack(ModItems.nugget_lead), 6 + 12 * i) + .addOut(new ItemStack(ModItems.nugget_pb209), 4 + 8 * i) ); recipes.put(new ComparableStack(ModItems.rbmk_pellet_leaus, 1, i + 5), new SILEXRecipe(600, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_xe135_tiny), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_australium_lesser), 89 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_lead), 6 + 12 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pb209), 4 + 8 * i)) ); + .addOut(new ItemStack(ModItems.powder_xe135_tiny), 1) + .addOut(new ItemStack(ModItems.nugget_australium_lesser), 89 - i * 20) + .addOut(new ItemStack(ModItems.nugget_lead), 6 + 12 * i) + .addOut(new ItemStack(ModItems.nugget_pb209), 4 + 8 * i) ); // HEAUS // recipes.put(new ComparableStack(ModItems.rbmk_pellet_heaus, 1, i), new SILEXRecipe(600, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_australium_greater), 90 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_au198), 5 + 10 * i)) - .addOut(new WeightedRandomObject(new ItemStack(Items.gold_nugget), 3 + 6 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pb209), 2 + 4 * i)) ); + .addOut(new ItemStack(ModItems.nugget_australium_greater), 90 - i * 20) + .addOut(new ItemStack(ModItems.nugget_au198), 5 + 10 * i) + .addOut(new ItemStack(Items.gold_nugget), 3 + 6 * i) + .addOut(new ItemStack(ModItems.nugget_pb209), 2 + 4 * i) ); recipes.put(new ComparableStack(ModItems.rbmk_pellet_heaus, 1, i + 5), new SILEXRecipe(600, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_xe135_tiny), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_australium_greater), 89 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_au198), 5 + 10 * i)) - .addOut(new WeightedRandomObject(new ItemStack(Items.gold_nugget), 3 + 6 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pb209), 2 + 4 * i)) ); + .addOut(new ItemStack(ModItems.powder_xe135_tiny), 1) + .addOut(new ItemStack(ModItems.nugget_australium_greater), 89 - i * 20) + .addOut(new ItemStack(ModItems.nugget_au198), 5 + 10 * i) + .addOut(new ItemStack(Items.gold_nugget), 3 + 6 * i) + .addOut(new ItemStack(ModItems.nugget_pb209), 2 + 4 * i) ); // LES // recipes.put(new ComparableStack(ModItems.rbmk_pellet_les, 1, i), new SILEXRecipe(600, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_les), 90 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 2 + 3 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 2 + 5 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.SCHRABIDIUM.ordinal()), 1 + 2 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.SCHRABIDIUM.ordinal()), 1 + 2 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_coal_tiny), 4 + 8 * i)) ); + .addOut(new ItemStack(ModItems.nugget_les), 90 - i * 20) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 2 + 3 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 2 + 5 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.SCHRABIDIUM.ordinal()), 1 + 2 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.SCHRABIDIUM.ordinal()), 1 + 2 * i) + .addOut(new ItemStack(ModItems.powder_coal_tiny), 4 + 8 * i) ); //TODO: Readd xenon processing if/when the NEI handler can display more than 6 outputs properly recipes.put(new ComparableStack(ModItems.rbmk_pellet_les, 1, i + 5), new SILEXRecipe(600, 100, 2) //I'd rather not fuck up the NEI handler, so six items it is - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_les), 90 - i * 20)) //Just bullshit something about "not enough np237 for extractable amounts of xe135" - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 2 + 3 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 2 + 5 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.SCHRABIDIUM.ordinal()), 1 + 2 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.SCHRABIDIUM.ordinal()), 1 + 2 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_coal_tiny), 4 + 8 * i)) ); + .addOut(new ItemStack(ModItems.nugget_les), 90 - i * 20) //Just bullshit something about "not enough np237 for extractable amounts of xe135" + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 2 + 3 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 2 + 5 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.SCHRABIDIUM.ordinal()), 1 + 2 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.SCHRABIDIUM.ordinal()), 1 + 2 * i) + .addOut(new ItemStack(ModItems.powder_coal_tiny), 4 + 8 * i) ); // MES // recipes.put(new ComparableStack(ModItems.rbmk_pellet_mes, 1, i), new SILEXRecipe(600, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_schrabidium_fuel), 90 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 1 + 3 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 2 + 4 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.SCHRABIDIUM.ordinal()), 1 + 3 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.SCHRABIDIUM.ordinal()), 2 + 4 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_coal_tiny), 4 + 6 * i)) ); + .addOut(new ItemStack(ModItems.nugget_schrabidium_fuel), 90 - i * 20) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 1 + 3 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 2 + 4 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.SCHRABIDIUM.ordinal()), 1 + 3 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.SCHRABIDIUM.ordinal()), 2 + 4 * i) + .addOut(new ItemStack(ModItems.powder_coal_tiny), 4 + 6 * i) ); //TODO: Readd xenon processing if/when the NEI handler can display more than 6 outputs properly recipes.put(new ComparableStack(ModItems.rbmk_pellet_mes, 1, i + 5), new SILEXRecipe(600, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_schrabidium_fuel), 90 - i * 20)) //ditto - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 1 + 3 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 2 + 4 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.SCHRABIDIUM.ordinal()), 1 + 3 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.SCHRABIDIUM.ordinal()), 2 + 4 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_coal_tiny), 4 + 6 * i)) ); + .addOut(new ItemStack(ModItems.nugget_schrabidium_fuel), 90 - i * 20) //ditto + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 1 + 3 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 2 + 4 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.SCHRABIDIUM.ordinal()), 1 + 3 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.SCHRABIDIUM.ordinal()), 2 + 4 * i) + .addOut(new ItemStack(ModItems.powder_coal_tiny), 4 + 6 * i) ); // HES // recipes.put(new ComparableStack(ModItems.rbmk_pellet_hes, 1, i), new SILEXRecipe(600, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_hes), 90 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 1 + 2 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 1 + 3 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.SCHRABIDIUM.ordinal()), 2 + 5 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.SCHRABIDIUM.ordinal()), 4 + 6 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_coal_tiny), 2 + 4 * i)) ); + .addOut(new ItemStack(ModItems.nugget_hes), 90 - i * 20) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 1 + 2 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 1 + 3 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.SCHRABIDIUM.ordinal()), 2 + 5 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.SCHRABIDIUM.ordinal()), 4 + 6 * i) + .addOut(new ItemStack(ModItems.powder_coal_tiny), 2 + 4 * i) ); //TODO: Readd xenon processing if/when the NEI handler can display more than 6 outputs properly recipes.put(new ComparableStack(ModItems.rbmk_pellet_hes, 1, i + 5), new SILEXRecipe(600, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_hes), 90 - i * 20)) //ditto - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 1 + 2 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 1 + 3 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.SCHRABIDIUM.ordinal()), 2 + 5 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.SCHRABIDIUM.ordinal()), 4 + 6 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_coal_tiny), 2 + 4 * i)) ); + .addOut(new ItemStack(ModItems.nugget_hes), 90 - i * 20) //ditto + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), 1 + 2 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), 1 + 3 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_long_tiny, 1, ItemWasteLong.WasteClass.SCHRABIDIUM.ordinal()), 2 + 5 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_short_tiny, 1, ItemWasteShort.WasteClass.SCHRABIDIUM.ordinal()), 4 + 6 * i) + .addOut(new ItemStack(ModItems.powder_coal_tiny), 2 + 4 * i) ); // BALEFIRE // recipes.put(new ComparableStack(ModItems.rbmk_pellet_balefire, 1, i), new SILEXRecipe(400, 100, 3) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_balefire), 90 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 10 + 20 * i)) ); + .addOut(new ItemStack(ModItems.powder_balefire), 90 - i * 20) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 10 + 20 * i) ); // FLASHGOLD // recipes.put(new ComparableStack(ModItems.rbmk_pellet_balefire_gold, 1, i), new SILEXRecipe(600, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_au198), 90 - 20 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_balefire), 10 + 20 * i)) ); + .addOut(new ItemStack(ModItems.nugget_au198), 90 - 20 * i) + .addOut(new ItemStack(ModItems.powder_balefire), 10 + 20 * i) ); // FLASHLEAD // recipes.put(new ComparableStack(ModItems.rbmk_pellet_flashlead, 1, i), new SILEXRecipe(600, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_au198), 44 - 10 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pb209), 44 - 10 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_bismuth), 1 + 6 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_mercury), 1 + 6 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_gh336), 10 + 8 * i)) ); //Reimumunch + .addOut(new ItemStack(ModItems.nugget_au198), 44 - 10 * i) + .addOut(new ItemStack(ModItems.nugget_pb209), 44 - 10 * i) + .addOut(new ItemStack(ModItems.nugget_bismuth), 1 + 6 * i) + .addOut(new ItemStack(ModItems.nugget_mercury), 1 + 6 * i) + .addOut(new ItemStack(ModItems.nugget_gh336), 10 + 8 * i) ); //Reimumunch // POBE // recipes.put(new ComparableStack(ModItems.rbmk_pellet_po210be, 1, i), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_polonium), 45 - 10 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_beryllium), 45 - 10 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_lead), 5 + 10 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_coal_tiny), 5 + 10 * i)) ); + .addOut(new ItemStack(ModItems.nugget_polonium), 45 - 10 * i) + .addOut(new ItemStack(ModItems.nugget_beryllium), 45 - 10 * i) + .addOut(new ItemStack(ModItems.nugget_lead), 5 + 10 * i) + .addOut(new ItemStack(ModItems.powder_coal_tiny), 5 + 10 * i) ); // PUBE // recipes.put(new ComparableStack(ModItems.rbmk_pellet_pu238be, 1, i), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu238), 45 - 10 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_beryllium), 45 - 10 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_lead), 3 + 5 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 2 + 5 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_coal_tiny), 5 + 10 * i)) ); + .addOut(new ItemStack(ModItems.nugget_pu238), 45 - 10 * i) + .addOut(new ItemStack(ModItems.nugget_beryllium), 45 - 10 * i) + .addOut(new ItemStack(ModItems.nugget_lead), 3 + 5 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 2 + 5 * i) + .addOut(new ItemStack(ModItems.powder_coal_tiny), 5 + 10 * i) ); recipes.put(new ComparableStack(ModItems.rbmk_pellet_pu238be, 1, i + 5), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_xe135_tiny), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu238), 44 - 10 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_beryllium), 45 - 10 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_lead), 3 + 5 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 2 + 5 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_coal_tiny), 5 + 10 * i)) ); + .addOut(new ItemStack(ModItems.powder_xe135_tiny), 1) + .addOut(new ItemStack(ModItems.nugget_pu238), 44 - 10 * i) + .addOut(new ItemStack(ModItems.nugget_beryllium), 45 - 10 * i) + .addOut(new ItemStack(ModItems.nugget_lead), 3 + 5 * i) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 2 + 5 * i) + .addOut(new ItemStack(ModItems.powder_coal_tiny), 5 + 10 * i) ); // RABE // recipes.put(new ComparableStack(ModItems.rbmk_pellet_ra226be, 1, i), new SILEXRecipe(600, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_ra226), 45 - 10 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_beryllium), 45 - 10 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_lead), 3 + 5 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_polonium), 2 + 5 * i)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_coal_tiny), 5 + 10 * i)) ); + .addOut(new ItemStack(ModItems.nugget_ra226), 45 - 10 * i) + .addOut(new ItemStack(ModItems.nugget_beryllium), 45 - 10 * i) + .addOut(new ItemStack(ModItems.nugget_lead), 3 + 5 * i) + .addOut(new ItemStack(ModItems.nugget_polonium), 2 + 5 * i) + .addOut(new ItemStack(ModItems.powder_coal_tiny), 5 + 10 * i) ); // DRX // recipes.put(new ComparableStack(ModItems.rbmk_pellet_drx, 1, i), new SILEXRecipe(600, 100, 4) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.undefined), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.undefined), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.undefined), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.undefined), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.undefined), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.undefined), 1)) ); + .addOut(new ItemStack(ModItems.undefined), 1) + .addOut(new ItemStack(ModItems.undefined), 1) + .addOut(new ItemStack(ModItems.undefined), 1) + .addOut(new ItemStack(ModItems.undefined), 1) + .addOut(new ItemStack(ModItems.undefined), 1) + .addOut(new ItemStack(ModItems.undefined), 1) ); recipes.put(new ComparableStack(ModItems.rbmk_pellet_drx, 1, i + 5), new SILEXRecipe(600, 100, 4) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.undefined), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.undefined), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.undefined), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.undefined), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.undefined), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.undefined), 1)) ); + .addOut(new ItemStack(ModItems.undefined), 1) + .addOut(new ItemStack(ModItems.undefined), 1) + .addOut(new ItemStack(ModItems.undefined), 1) + .addOut(new ItemStack(ModItems.undefined), 1) + .addOut(new ItemStack(ModItems.undefined), 1) + .addOut(new ItemStack(ModItems.undefined), 1) ); // ZFB BI // recipes.put(new ComparableStack(ModItems.rbmk_pellet_zfb_bismuth, 1, i), new SILEXRecipe(600, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_uranium), 50 - i * 10)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu241), 50 - i * 10)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_bismuth), 50 + i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_zirconium), 150)) ); + .addOut(new ItemStack(ModItems.nugget_uranium), 50 - i * 10) + .addOut(new ItemStack(ModItems.nugget_pu241), 50 - i * 10) + .addOut(new ItemStack(ModItems.nugget_bismuth), 50 + i * 20) + .addOut(new ItemStack(ModItems.nugget_zirconium), 150) ); recipes.put(new ComparableStack(ModItems.rbmk_pellet_zfb_bismuth, 1, i + 5), new SILEXRecipe(600, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_xe135_tiny), 3)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_uranium), 50 - i * 10)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu241), 50 - i * 10)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_bismuth), 50 + i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_zirconium), 147)) ); + .addOut(new ItemStack(ModItems.powder_xe135_tiny), 3) + .addOut(new ItemStack(ModItems.nugget_uranium), 50 - i * 10) + .addOut(new ItemStack(ModItems.nugget_pu241), 50 - i * 10) + .addOut(new ItemStack(ModItems.nugget_bismuth), 50 + i * 20) + .addOut(new ItemStack(ModItems.nugget_zirconium), 147) ); // ZFB PU-241 // recipes.put(new ComparableStack(ModItems.rbmk_pellet_zfb_pu241, 1, i), new SILEXRecipe(600, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u235), 50 - i * 10)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu240), 50 - i * 10)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu241), 50 + i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_zirconium), 150)) ); + .addOut(new ItemStack(ModItems.nugget_u235), 50 - i * 10) + .addOut(new ItemStack(ModItems.nugget_pu240), 50 - i * 10) + .addOut(new ItemStack(ModItems.nugget_pu241), 50 + i * 20) + .addOut(new ItemStack(ModItems.nugget_zirconium), 150) ); recipes.put(new ComparableStack(ModItems.rbmk_pellet_zfb_pu241, 1, i + 5), new SILEXRecipe(600, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_xe135_tiny), 3)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u235), 50 - i * 10)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu240), 50 - i * 10)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu241), 50 + i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_zirconium), 147)) ); + .addOut(new ItemStack(ModItems.powder_xe135_tiny), 3) + .addOut(new ItemStack(ModItems.nugget_u235), 50 - i * 10) + .addOut(new ItemStack(ModItems.nugget_pu240), 50 - i * 10) + .addOut(new ItemStack(ModItems.nugget_pu241), 50 + i * 20) + .addOut(new ItemStack(ModItems.nugget_zirconium), 147) ); // ZFB RG-AM // recipes.put(new ComparableStack(ModItems.rbmk_pellet_zfb_am_mix, 1, i), new SILEXRecipe(600, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu241), 100 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_am_mix), 50 + i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_zirconium), 150)) ); + .addOut(new ItemStack(ModItems.nugget_pu241), 100 - i * 20) + .addOut(new ItemStack(ModItems.nugget_am_mix), 50 + i * 20) + .addOut(new ItemStack(ModItems.nugget_zirconium), 150) ); recipes.put(new ComparableStack(ModItems.rbmk_pellet_zfb_am_mix, 1, i + 5), new SILEXRecipe(600, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_xe135_tiny), 3)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu241), 100 - i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_am_mix), 50 + i * 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_zirconium), 147)) ); + .addOut(new ItemStack(ModItems.powder_xe135_tiny), 3) + .addOut(new ItemStack(ModItems.nugget_pu241), 100 - i * 20) + .addOut(new ItemStack(ModItems.nugget_am_mix), 50 + i * 20) + .addOut(new ItemStack(ModItems.nugget_zirconium), 147) ); } recipes.put(new ComparableStack(ModItems.nuclear_waste_long, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), new SILEXRecipe(900, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_neptunium), 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu239), 45)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu240), 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_technetium), 15)) + .addOut(new ItemStack(ModItems.nugget_neptunium), 20) + .addOut(new ItemStack(ModItems.nugget_pu239), 45) + .addOut(new ItemStack(ModItems.nugget_pu240), 20) + .addOut(new ItemStack(ModItems.nugget_technetium), 15) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_long_depleted, 1, ItemWasteLong.WasteClass.URANIUM235.ordinal()), new SILEXRecipe(900, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_lead), 65)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_bismuth), 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.dust_tiny), 15)) + .addOut(new ItemStack(ModItems.nugget_lead), 65) + .addOut(new ItemStack(ModItems.nugget_bismuth), 20) + .addOut(new ItemStack(ModItems.dust_tiny), 15) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_short, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), new SILEXRecipe(900, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu238), 12)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_sr90_tiny), 10)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_i131_tiny), 10)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_cs137_tiny), 12)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 56)) + .addOut(new ItemStack(ModItems.nugget_pu238), 12) + .addOut(new ItemStack(ModItems.powder_sr90_tiny), 10) + .addOut(new ItemStack(ModItems.powder_i131_tiny), 10) + .addOut(new ItemStack(ModItems.powder_cs137_tiny), 12) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 56) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_short_depleted, 1, ItemWasteShort.WasteClass.URANIUM235.ordinal()), new SILEXRecipe(900, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_zirconium), 10)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.dust_tiny), 32)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_lead), 22)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u238), 5)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_bismuth), 15)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 16)) + .addOut(new ItemStack(ModItems.nugget_zirconium), 10) + .addOut(new ItemStack(ModItems.dust_tiny), 32) + .addOut(new ItemStack(ModItems.nugget_lead), 22) + .addOut(new ItemStack(ModItems.nugget_u238), 5) + .addOut(new ItemStack(ModItems.nugget_bismuth), 15) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 16) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_long, 1, ItemWasteLong.WasteClass.URANIUM233.ordinal()), new SILEXRecipe(900, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u235), 15)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_neptunium), 25)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu239), 45)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_technetium), 15)) + .addOut(new ItemStack(ModItems.nugget_u235), 15) + .addOut(new ItemStack(ModItems.nugget_neptunium), 25) + .addOut(new ItemStack(ModItems.nugget_pu239), 45) + .addOut(new ItemStack(ModItems.nugget_technetium), 15) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_long_depleted, 1, ItemWasteLong.WasteClass.URANIUM233.ordinal()), new SILEXRecipe(900, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_lead), 60)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_bismuth), 25)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.dust_tiny), 15)) + .addOut(new ItemStack(ModItems.nugget_lead), 60) + .addOut(new ItemStack(ModItems.nugget_bismuth), 25) + .addOut(new ItemStack(ModItems.dust_tiny), 15) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_short, 1, ItemWasteShort.WasteClass.URANIUM233.ordinal()), new SILEXRecipe(900, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu238), 4)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_sr90_tiny), 12)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_i131_tiny), 10)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_cs137_tiny), 14)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 60)) + .addOut(new ItemStack(ModItems.nugget_pu238), 4) + .addOut(new ItemStack(ModItems.powder_sr90_tiny), 12) + .addOut(new ItemStack(ModItems.powder_i131_tiny), 10) + .addOut(new ItemStack(ModItems.powder_cs137_tiny), 14) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 60) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_short_depleted, 1, ItemWasteShort.WasteClass.URANIUM233.ordinal()), new SILEXRecipe(900, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_zirconium), 12)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.dust_tiny), 34)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_lead), 13)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u238), 2)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_bismuth), 10)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 29)) + .addOut(new ItemStack(ModItems.nugget_zirconium), 12) + .addOut(new ItemStack(ModItems.dust_tiny), 34) + .addOut(new ItemStack(ModItems.nugget_lead), 13) + .addOut(new ItemStack(ModItems.nugget_u238), 2) + .addOut(new ItemStack(ModItems.nugget_bismuth), 10) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 29) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_short, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), new SILEXRecipe(900, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu240), 10)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu241), 25)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_sr90_tiny), 2)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_i131_tiny), 5)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_cs137_tiny), 6)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 52)) + .addOut(new ItemStack(ModItems.nugget_pu240), 10) + .addOut(new ItemStack(ModItems.nugget_pu241), 25) + .addOut(new ItemStack(ModItems.powder_sr90_tiny), 2) + .addOut(new ItemStack(ModItems.powder_i131_tiny), 5) + .addOut(new ItemStack(ModItems.powder_cs137_tiny), 6) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 52) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_short_depleted, 1, ItemWasteShort.WasteClass.PLUTONIUM239.ordinal()), new SILEXRecipe(900, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_zirconium), 2)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.dust_tiny), 16)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_lead), 40)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u238), 3)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 39)) + .addOut(new ItemStack(ModItems.nugget_zirconium), 2) + .addOut(new ItemStack(ModItems.dust_tiny), 16) + .addOut(new ItemStack(ModItems.nugget_lead), 40) + .addOut(new ItemStack(ModItems.nugget_u238), 3) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 39) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_short, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), new SILEXRecipe(900, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu241), 15)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_neptunium), 5)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_sr90_tiny), 2)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_i131_tiny), 5)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_cs137_tiny), 7)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 66)) + .addOut(new ItemStack(ModItems.nugget_pu241), 15) + .addOut(new ItemStack(ModItems.nugget_neptunium), 5) + .addOut(new ItemStack(ModItems.powder_sr90_tiny), 2) + .addOut(new ItemStack(ModItems.powder_i131_tiny), 5) + .addOut(new ItemStack(ModItems.powder_cs137_tiny), 7) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 66) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_short_depleted, 1, ItemWasteShort.WasteClass.PLUTONIUM240.ordinal()), new SILEXRecipe(900, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_zirconium), 2)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.dust_tiny), 22)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_bismuth), 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_lead), 17)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u238), 3)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 36)) + .addOut(new ItemStack(ModItems.nugget_zirconium), 2) + .addOut(new ItemStack(ModItems.dust_tiny), 22) + .addOut(new ItemStack(ModItems.nugget_bismuth), 20) + .addOut(new ItemStack(ModItems.nugget_lead), 17) + .addOut(new ItemStack(ModItems.nugget_u238), 3) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 36) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_short, 1, ItemWasteShort.WasteClass.PLUTONIUM241.ordinal()), new SILEXRecipe(900, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_am241), 25)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_am242), 35)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_technetium), 5)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_i131_tiny), 3)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_cs137_tiny), 7)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 25)) + .addOut(new ItemStack(ModItems.nugget_am241), 25) + .addOut(new ItemStack(ModItems.nugget_am242), 35) + .addOut(new ItemStack(ModItems.nugget_technetium), 5) + .addOut(new ItemStack(ModItems.powder_i131_tiny), 3) + .addOut(new ItemStack(ModItems.powder_cs137_tiny), 7) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 25) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_short_depleted, 1, ItemWasteShort.WasteClass.PLUTONIUM241.ordinal()), new SILEXRecipe(900, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_bismuth), 60)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.dust_tiny), 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_lead), 15)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 5)) + .addOut(new ItemStack(ModItems.nugget_bismuth), 60) + .addOut(new ItemStack(ModItems.dust_tiny), 20) + .addOut(new ItemStack(ModItems.nugget_lead), 15) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 5) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_long, 1, ItemWasteLong.WasteClass.THORIUM.ordinal()), new SILEXRecipe(900, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u233), 40)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u235), 35)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 25)) + .addOut(new ItemStack(ModItems.nugget_u233), 40) + .addOut(new ItemStack(ModItems.nugget_u235), 35) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 25) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_long_depleted, 1, ItemWasteLong.WasteClass.THORIUM.ordinal()), new SILEXRecipe(900, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_lead), 35)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_bismuth), 40)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.dust_tiny), 15)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 10)) + .addOut(new ItemStack(ModItems.nugget_lead), 35) + .addOut(new ItemStack(ModItems.nugget_bismuth), 40) + .addOut(new ItemStack(ModItems.dust_tiny), 15) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 10) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_long, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), new SILEXRecipe(900, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u238), 15)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu239), 40)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu240), 15)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_technetium), 15)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 15)) + .addOut(new ItemStack(ModItems.nugget_u238), 15) + .addOut(new ItemStack(ModItems.nugget_pu239), 40) + .addOut(new ItemStack(ModItems.nugget_pu240), 15) + .addOut(new ItemStack(ModItems.nugget_technetium), 15) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 15) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_long_depleted, 1, ItemWasteLong.WasteClass.NEPTUNIUM.ordinal()), new SILEXRecipe(900, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u238), 16)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_lead), 55)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.dust_tiny), 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 9)) + .addOut(new ItemStack(ModItems.nugget_u238), 16) + .addOut(new ItemStack(ModItems.nugget_lead), 55) + .addOut(new ItemStack(ModItems.dust_tiny), 20) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 9) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_short, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), new SILEXRecipe(900, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu238), 40)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_sr90_tiny), 7)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_i131_tiny), 5)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_cs137_tiny), 8)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 40)) + .addOut(new ItemStack(ModItems.nugget_pu238), 40) + .addOut(new ItemStack(ModItems.powder_sr90_tiny), 7) + .addOut(new ItemStack(ModItems.powder_i131_tiny), 5) + .addOut(new ItemStack(ModItems.powder_cs137_tiny), 8) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 40) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_short_depleted, 1, ItemWasteShort.WasteClass.NEPTUNIUM.ordinal()), new SILEXRecipe(900, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_zirconium), 7)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.dust_tiny), 29)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u238), 2)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_lead), 45)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 17)) + .addOut(new ItemStack(ModItems.nugget_zirconium), 7) + .addOut(new ItemStack(ModItems.dust_tiny), 29) + .addOut(new ItemStack(ModItems.nugget_u238), 2) + .addOut(new ItemStack(ModItems.nugget_lead), 45) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 17) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_long, 1, ItemWasteLong.WasteClass.SCHRABIDIUM.ordinal()), new SILEXRecipe(900, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_solinium), 25)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_euphemium), 18)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_gh336), 16)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_tantalium), 8)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_neodymium_tiny), 8)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 25)) + .addOut(new ItemStack(ModItems.nugget_solinium), 25) + .addOut(new ItemStack(ModItems.nugget_euphemium), 18) + .addOut(new ItemStack(ModItems.nugget_gh336), 16) + .addOut(new ItemStack(ModItems.nugget_tantalium), 8) + .addOut(new ItemStack(ModItems.powder_neodymium_tiny), 8) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 25) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_long_depleted, 1, ItemWasteLong.WasteClass.SCHRABIDIUM.ordinal()), new SILEXRecipe(900, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_solinium), 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_euphemium), 18)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_gh336), 15)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_tantalium), 8)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_neodymium_tiny), 8)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 31)) + .addOut(new ItemStack(ModItems.nugget_solinium), 20) + .addOut(new ItemStack(ModItems.nugget_euphemium), 18) + .addOut(new ItemStack(ModItems.nugget_gh336), 15) + .addOut(new ItemStack(ModItems.nugget_tantalium), 8) + .addOut(new ItemStack(ModItems.powder_neodymium_tiny), 8) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 31) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_short, 1, ItemWasteShort.WasteClass.SCHRABIDIUM.ordinal()), new SILEXRecipe(900, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pb209), 7)) //We don't have any spicy lanthanides, and lead 209 + gold 198 is already *severely* pushing it, but there's no - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_au198), 7)) //point in contributing to pointless item bloat, so this will have to do - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_cs137_tiny), 5)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_i131_tiny), 5)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 76)) + .addOut(new ItemStack(ModItems.nugget_pb209), 7) //We don't have any spicy lanthanides, and lead 209 + gold 198 is already *severely* pushing it, but there's no + .addOut(new ItemStack(ModItems.nugget_au198), 7) //point in contributing to pointless item bloat, so this will have to do + .addOut(new ItemStack(ModItems.powder_cs137_tiny), 5) + .addOut(new ItemStack(ModItems.powder_i131_tiny), 5) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 76) ); recipes.put(new ComparableStack(ModItems.nuclear_waste_short_depleted, 1, ItemWasteShort.WasteClass.SCHRABIDIUM.ordinal()), new SILEXRecipe(900, 100, 1) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_bismuth), 7)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_mercury), 12)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_cerium_tiny), 14)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_lanthanium_tiny), 15)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.dust_tiny), 20)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nuclear_waste_tiny), 32)) + .addOut(new ItemStack(ModItems.nugget_bismuth), 7) + .addOut(new ItemStack(ModItems.nugget_mercury), 12) + .addOut(new ItemStack(ModItems.powder_cerium_tiny), 14) + .addOut(new ItemStack(ModItems.powder_lanthanium_tiny), 15) + .addOut(new ItemStack(ModItems.dust_tiny), 20) + .addOut(new ItemStack(ModItems.nuclear_waste_tiny), 32) ); recipes.put(new ComparableStack(ModItems.fallout, 1), new SILEXRecipe(900, 100, 2) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.dust_tiny), 90)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_co60), 2)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_sr90_tiny), 3)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_i131_tiny), 1)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_cs137_tiny), 3)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_au198), 1)) + .addOut(new ItemStack(ModItems.dust_tiny), 90) + .addOut(new ItemStack(ModItems.nugget_co60), 2) + .addOut(new ItemStack(ModItems.powder_sr90_tiny), 3) + .addOut(new ItemStack(ModItems.powder_i131_tiny), 1) + .addOut(new ItemStack(ModItems.powder_cs137_tiny), 3) + .addOut(new ItemStack(ModItems.nugget_au198), 1) ); recipes.put(new ComparableStack(Blocks.gravel, 1), new SILEXRecipe(1000, 250, EnumWavelengths.VISIBLE) - .addOut(new WeightedRandomObject(new ItemStack(Items.flint), 80)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_boron), 5)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.powder_lithium), 10)) - .addOut(new WeightedRandomObject(new ItemStack(ModItems.fluorite), 5)) + .addOut(new ItemStack(Items.flint), 80) + .addOut(new ItemStack(ModItems.powder_boron), 5) + .addOut(new ItemStack(ModItems.powder_lithium), 10) + .addOut(new ItemStack(ModItems.fluorite), 5) ); - recipes.put(new ComparableStack(ModItems.fluid_icon, 1, Fluids.FULLERENE.getID()), new SILEXRecipe(1_000, 1_000, EnumWavelengths.UV) - .addOut(new WeightedRandomObject(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.FULLERENE), 1)) - ); + recipes.put(new ComparableStack(ModItems.fluid_icon, 1, Fluids.FULLERENE.getID()), + new SILEXRecipe(1_000, 1_000, EnumWavelengths.VISIBLE).addOut(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.FULLERENE), 1)); + } + + private static final HashMap tinyWasteTranslation = new HashMap(); + + static { + tinyWasteTranslation.put(ModItems.nuclear_waste_short_tiny, ModItems.nuclear_waste_short); + tinyWasteTranslation.put(ModItems.nuclear_waste_long_tiny, ModItems.nuclear_waste_long); + tinyWasteTranslation.put(ModItems.nuclear_waste_short_depleted_tiny, ModItems.nuclear_waste_short_depleted); + tinyWasteTranslation.put(ModItems.nuclear_waste_long_depleted_tiny, ModItems.nuclear_waste_long_depleted); } public static SILEXRecipe getOutput(ItemStack stack) { @@ -657,11 +666,27 @@ public class SILEXRecipes { String[] dictKeys = comp.getDictKeys(); for(String key : dictKeys) { - String translation = translateDict(key); if(recipes.containsKey(translation)) return recipes.get(translation); } + + if(tinyWasteTranslation.containsKey(comp.item)) { + SILEXRecipe result = getOutput(new ItemStack(tinyWasteTranslation.get(comp.item), comp.stacksize, comp.meta)); + + if(result != null) { + // This way it rounds down if somehow the recipe's fluid produced is not divisible by 900 + int fluidProduced = (result.fluidProduced / 900) * 100; + SILEXRecipe tinyVersion = new SILEXRecipe(fluidProduced, result.fluidConsumed, result.laserStrength); + // Shared ownership shouldn't be an issue since the resulting recipe isn't modified by the caller + tinyVersion.outputs = result.outputs; + + // TODO: Cache? Might break saving recipes, IDK + // recipes.put(comp, tinyVersion); + + return tinyVersion; + } + } return null; } @@ -689,15 +714,9 @@ public class SILEXRecipes { public static List getAllIngredients() { List ing = new ArrayList(); - for(Entry entry : SILEXRecipes.recipes.entrySet()) { - ing.add(entry.getKey()); - } - for(Entry entry : SILEXRecipes.itemTranslation.entrySet()) { - ing.add(entry.getKey()); - } - for(Entry entry : SILEXRecipes.dictTranslation.entrySet()) { - ing.add(entry.getKey()); - } + for(Entry entry : SILEXRecipes.recipes.entrySet()) ing.add(entry.getKey()); + for(Entry entry : SILEXRecipes.itemTranslation.entrySet()) ing.add(entry.getKey()); + for(Entry entry : SILEXRecipes.dictTranslation.entrySet()) ing.add(entry.getKey()); return ing; } @@ -744,6 +763,10 @@ public static class SILEXRecipe { this(fluidProduced, fluidConsumed, EnumWavelengths.values()[laserStrength]); } + public SILEXRecipe addOut(ItemStack stack, int weight) { + return addOut(new WeightedRandomObject(stack, weight)); + } + public SILEXRecipe addOut(WeightedRandomObject entry) { outputs.add(entry); return this; diff --git a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java index a23c3e2c9..2aaa8413c 100644 --- a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java @@ -196,7 +196,7 @@ public class ShredderRecipes extends SerializableRecipe { ShredderRecipes.setRecipe(ModBlocks.boxcar, new ItemStack(ModItems.powder_steel, 32)); ShredderRecipes.setRecipe(ModItems.ingot_schrabidate, new ItemStack(ModItems.powder_schrabidate, 1)); ShredderRecipes.setRecipe(ModBlocks.block_schrabidate, new ItemStack(ModItems.powder_schrabidate, 9)); - ShredderRecipes.setRecipe(ModItems.coal_infernal, new ItemStack(ModItems.powder_coal, 3)); + ShredderRecipes.setRecipe(ModItems.coal_infernal, new ItemStack(ModItems.powder_coal, 2)); ShredderRecipes.setRecipe(Items.fermented_spider_eye, new ItemStack(ModItems.powder_poison, 3)); ShredderRecipes.setRecipe(Items.poisonous_potato, new ItemStack(ModItems.powder_poison, 1)); ShredderRecipes.setRecipe(ModBlocks.ore_tektite_osmiridium, new ItemStack(ModItems.powder_tektite, 1)); diff --git a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java index 54d3a9b68..ed3176d54 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java @@ -110,6 +110,7 @@ public class SolderingRecipes extends SerializableRecipe { // a very, very vague guess on what the recipes should be. testing still needed, upgrade requirements are likely to change. maybe inclusion of caesium? recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER.ordinal()), 400, 15_000, + new FluidStack(Fluids.PERFLUOROMETHYL, 1_000), new AStack[] { new ComparableStack(ModItems.circuit, lbsm ? 8 : 32, EnumCircuitType.CHIP), new ComparableStack(ModItems.circuit, lbsm ? 8 : 32, EnumCircuitType.CAPACITOR), @@ -121,6 +122,7 @@ public class SolderingRecipes extends SerializableRecipe { new OreDictStack(PB.wireFine(), 16)} )); recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_ADVANCED.ordinal()), 600, 25_000, + new FluidStack(Fluids.PERFLUOROMETHYL, 4_000), new AStack[] { new ComparableStack(ModItems.circuit, lbsm ? 8 : 16, EnumCircuitType.CHIP_BISMOID), new ComparableStack(ModItems.circuit, lbsm ? 16 : 48, EnumCircuitType.CAPACITOR_TANTALIUM), @@ -132,6 +134,7 @@ public class SolderingRecipes extends SerializableRecipe { new OreDictStack(PB.wireFine(), 24)} )); recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_QUANTUM.ordinal()), 600, 250_000, + new FluidStack(Fluids.PERFLUOROMETHYL_COLD, 6_000), new AStack[] { new ComparableStack(ModItems.circuit, lbsm ? 8 : 16, EnumCircuitType.CHIP_QUANTUM), new ComparableStack(ModItems.circuit, lbsm ? 16 : 48, EnumCircuitType.CHIP_BISMOID), diff --git a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java index fcef009fe..cc1f38a79 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java @@ -70,6 +70,7 @@ public class SolidificationRecipes extends SerializableRecipe { registerRecipe(WATZ, 1000, ModItems.ingot_mud); registerRecipe(REDMUD, 1000, Items.iron_ingot); registerRecipe(SODIUM, 100, ModItems.powder_sodium); + registerRecipe(LEAD, 100, ModItems.ingot_lead); registerRecipe(SLOP, 250, ModBlocks.ore_oil_sand); registerRecipe(OIL, SF_OIL, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)); @@ -99,6 +100,7 @@ public class SolidificationRecipes extends SerializableRecipe { registerSFAuto(LIGHTOIL_CRACK); registerSFAuto(LIGHTOIL_VACUUM); registerSFAuto(KEROSENE); + registerSFAuto(KEROSENE_REFORM); //registerSFAuto(GAS); registerSFAuto(SOURGAS); registerSFAuto(REFORMGAS); @@ -111,7 +113,7 @@ public class SolidificationRecipes extends SerializableRecipe { registerSFAuto(UNSATURATEDS); registerSFAuto(REFORMATE); registerSFAuto(XYLENE); - registerSFAuto(BALEFIRE, 24000000L, ModItems.solid_fuel_bf); //holy shit this is energy dense*/ + registerSFAuto(BALEFIRE, 24_000_000L, ModItems.solid_fuel_bf); //holy shit this is energy dense*/ } @@ -127,6 +129,8 @@ public class SolidificationRecipes extends SerializableRecipe { if(mB > 10_000) mB -= (mB % 1000); else if(mB > 1_000) mB -= (mB % 100); else if(mB > 100) mB -= (mB % 10); + + mB = Math.max(mB, 1); registerRecipe(fluid, mB, fuel); } 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 8ca863583..9ff9ae027 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -1,12 +1,15 @@ package com.hbm.inventory.recipes.anvil; +import java.io.IOException; import java.util.ArrayList; import java.util.List; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; import com.hbm.inventory.OreDictManager; -import com.hbm.inventory.OreNames; import com.hbm.inventory.OreDictManager.DictFrame; import static com.hbm.inventory.OreDictManager.*; @@ -19,21 +22,21 @@ import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.NTMMaterial; import com.hbm.inventory.recipes.AssemblerRecipes; import com.hbm.inventory.recipes.AssemblerRecipes.AssemblerRecipe; -import com.hbm.items.ItemAmmoEnums.*; +import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ItemEnums.EnumChunkType; import com.hbm.items.ModItems; import com.hbm.items.food.ItemFlask.EnumInfusion; import com.hbm.items.machine.ItemCircuit.EnumCircuitType; +import com.hbm.util.Tuple.Pair; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.init.Items; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; -public class AnvilRecipes { +public class AnvilRecipes extends SerializableRecipe { private static List smithingRecipes = new ArrayList(); private static List constructionRecipes = new ArrayList(); @@ -42,6 +45,11 @@ public class AnvilRecipes { registerSmithing(); registerConstruction(); } + + @Override public String getFileName() { return "hbmAnvil.json"; } + @Override public Object getRecipeObject() { return constructionRecipes; } + @Override public void deleteRecipes() { constructionRecipes.clear(); } + @Override public void registerDefaults() { registerConstruction(); } /* * ////// // // // ////// // // // // // ////// @@ -84,10 +92,11 @@ public class AnvilRecipes { smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.cobalt_decorated_shovel, 1), new ComparableStack(ModItems.cobalt_shovel), new ComparableStack(ModItems.ingot_meteorite))); smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.cobalt_decorated_hoe, 1), new ComparableStack(ModItems.cobalt_hoe), new ComparableStack(ModItems.ingot_meteorite))); - smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModItems.gun_ar15, 1), new ComparableStack(ModItems.gun_thompson), new ComparableStack(ModItems.pipe_lead))); smithingRecipes.add(new AnvilSmithingRecipe(1916169, new ItemStack(ModItems.wings_murk, 1), new ComparableStack(ModItems.wings_limp), new ComparableStack(ModItems.particle_tachyon))); smithingRecipes.add(new AnvilSmithingRecipe(4, new ItemStack(ModItems.flask_infusion, 1, EnumInfusion.SHIELD.ordinal()), new ComparableStack(ModItems.gem_alexandrite), new ComparableStack(ModItems.bottle_nuka))); + smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModItems.ingot_gunmetal, 1), new OreDictStack(CU.ingot()), new OreDictStack(AL.ingot()))); + smithingRecipes.add(new AnvilSmithingMold(0, new OreDictStack(GOLD.nugget()), new OreDictStack("nugget"))); smithingRecipes.add(new AnvilSmithingMold(1, new OreDictStack(U.billet()), new OreDictStack("billet"))); smithingRecipes.add(new AnvilSmithingMold(2, new OreDictStack(IRON.ingot()), new OreDictStack("ingot"))); @@ -110,17 +119,12 @@ public class AnvilRecipes { new ItemStack(ModItems.stamp_titanium_flat), new ItemStack(ModItems.stamp_obsidian_flat) })); - smithingRecipes.add(new AnvilSmithingMold(8, new OreDictStack(STEEL.shell()), new OreDictStack(OreNames.SHELL))); - smithingRecipes.add(new AnvilSmithingMold(9, new OreDictStack(STEEL.pipe()), new OreDictStack(OreNames.PIPE))); + smithingRecipes.add(new AnvilSmithingMold(8, new OreDictStack(STEEL.shell()), new OreDictStack(MaterialShapes.SHELL.name()))); + smithingRecipes.add(new AnvilSmithingMold(9, new OreDictStack(STEEL.pipe()), new OreDictStack(MaterialShapes.PIPE.name()))); smithingRecipes.add(new AnvilSmithingMold(10, new OreDictStack(IRON.ingot(), 9), new OreDictStack("ingot", 9))); smithingRecipes.add(new AnvilSmithingMold(11, new OreDictStack(IRON.plate(), 9), new OreDictStack("plate", 9))); smithingRecipes.add(new AnvilSmithingMold(12, new OreDictStack(IRON.block()), new OreDictStack("block"))); smithingRecipes.add(new AnvilSmithingMold(13, new ComparableStack(ModItems.pipes_steel), new ItemStack[] {new ItemStack(ModItems.pipes_steel)})); - smithingRecipes.add(new AnvilSmithingMold(14, new ComparableStack(ModItems.casing_357), new ItemStack[] {new ItemStack(ModItems.casing_357)})); - smithingRecipes.add(new AnvilSmithingMold(15, new ComparableStack(ModItems.casing_44), new ItemStack[] {new ItemStack(ModItems.casing_44)})); - smithingRecipes.add(new AnvilSmithingMold(16, new ComparableStack(ModItems.casing_9), new ItemStack[] {new ItemStack(ModItems.casing_9)})); - smithingRecipes.add(new AnvilSmithingMold(17, new ComparableStack(ModItems.casing_50), new ItemStack[] {new ItemStack(ModItems.casing_50)})); - smithingRecipes.add(new AnvilSmithingMold(18, new ComparableStack(ModItems.casing_buckshot), new ItemStack[] {new ItemStack(ModItems.casing_buckshot)})); smithingRecipes.add(new AnvilSmithingMold(20, new OreDictStack(ALLOY.wireDense(), 1), new OreDictStack("wireDense", 1))); smithingRecipes.add(new AnvilSmithingMold(21, new OreDictStack(ALLOY.wireDense(), 9), new OreDictStack("wireDense", 9))); @@ -145,14 +149,16 @@ public class AnvilRecipes { constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(PB.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_lead))).setTier(3)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_copper))).setTier(3)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(ALLOY.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_advanced_alloy))).setTier(3)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(SA326.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_schrabidium))).setTier(3)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CMB.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_combine_steel))).setTier(3)); + constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(GUNMETAL.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_gunmetal))).setTier(3)); + constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(WEAPONSTEEL.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_weaponsteel))).setTier(3)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(BIGMT.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_saturnite))).setTier(3)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(DURA.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_dura_steel))).setTier(3)); + constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(SA326.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_schrabidium))).setTier(3)); + constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CMB.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_combine_steel))).setTier(3)); for(NTMMaterial mat : Mats.orderedList) { - if(mat.shapes.contains(MaterialShapes.WIRE) && mat.shapes.contains(MaterialShapes.INGOT)) { - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(OreNames.INGOT + mat.names[0]), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, mat.id))).setTier(4)); + if(mat.autogen.contains(MaterialShapes.WIRE) && OreDictionary.doesOreNameExist(MaterialShapes.INGOT.make(mat))) { + constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(MaterialShapes.INGOT.name() + mat.names[0]), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, mat.id))).setTier(4)); } } @@ -182,12 +188,16 @@ public class AnvilRecipes { new AStack[] {new OreDictStack(DNT.ingot(), 4), new ComparableStack(ModBlocks.depth_brick)}, new AnvilOutput(new ItemStack(ModBlocks.depth_dnt))).setTier(1916169)); - for(NTMMaterial mat : Mats.orderedList) if(mat.shapes.contains(MaterialShapes.SHELL)) constructionRecipes.add(new AnvilConstructionRecipe( + for(NTMMaterial mat : Mats.orderedList) if(mat.autogen.contains(MaterialShapes.SHELL)) constructionRecipes.add(new AnvilConstructionRecipe( new OreDictStack(MaterialShapes.PLATE.name() + mat.names[0], 4), new AnvilOutput(new ItemStack(ModItems.shell, 1, mat.id))).setTier(1)); - for(NTMMaterial mat : Mats.orderedList) if(mat.shapes.contains(MaterialShapes.PIPE)) constructionRecipes.add(new AnvilConstructionRecipe( - new OreDictStack(MaterialShapes.PLATE.name() + mat.names[0], 3), - new AnvilOutput(new ItemStack(ModItems.pipe, 1, mat.id))).setTier(1)); + for(NTMMaterial mat : Mats.orderedList) if(mat.autogen.contains(MaterialShapes.PIPE)) { + String key = (OreDictionary.doesOreNameExist(MaterialShapes.PLATE.name() + mat.names[0]) ? + MaterialShapes.PLATE.name() + mat.names[0] : MaterialShapes.INGOT.name() + mat.names[0]); + constructionRecipes.add(new AnvilConstructionRecipe( + new OreDictStack(key, 3), + new AnvilOutput(new ItemStack(ModItems.pipe, 1, mat.id))).setTier(1)); + } constructionRecipes.add(new AnvilConstructionRecipe( new ComparableStack(ModItems.coil_copper, 2), @@ -307,6 +317,14 @@ public class AnvilRecipes { new OreDictStack(KEY_BRICK, 16) }, new AnvilOutput(new ItemStack(ModBlocks.furnace_combination))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new AStack[] { + new ComparableStack(Blocks.stonebrick, 8), + new ComparableStack(ModItems.ingot_firebrick, 16), + new OreDictStack(IRON.ingot(), 4), + new OreDictStack(CU.plate(), 8), + }, new AnvilOutput(new ItemStack(ModBlocks.machine_rotary_furnace))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new OreDictStack(KEY_PLANKS, 16), @@ -515,13 +533,13 @@ public class AnvilRecipes { new AStack[] {new OreDictStack(TI.plate(), 2), new OreDictStack(STEEL.ingot(), 1), new OreDictStack(STEEL.bolt(), 4)}, new AnvilOutput(new ItemStack(ModItems.plate_armor_titanium))).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe( - new AStack[] {new OreDictStack(IRON.plate(), 4), new OreDictStack(BIGMT.plate(), 2), new ComparableStack(ModItems.plate_armor_titanium, 1)}, - new AnvilOutput(new ItemStack(ModItems.plate_armor_ajr))).setTier(3)); + new AStack[] {new OreDictStack(IRON.plate(), 6), new OreDictStack(NB.ingot(), 1), new ComparableStack(ModItems.plate_armor_titanium, 1)}, + new AnvilOutput(new ItemStack(ModItems.plate_armor_ajr, 2))).setTier(3)); constructionRecipes.add(new AnvilConstructionRecipe( - new AStack[] {new OreDictStack(ALLOY.plate(), 4), new ComparableStack(ModItems.plate_armor_titanium, 1), new OreDictStack(W.wireFine(), 6)}, + new AStack[] {new OreDictStack(ALLOY.plate(), 4), new ComparableStack(ModItems.plate_armor_titanium, 1), new OreDictStack(W.wireFine(), 8)}, new AnvilOutput(new ItemStack(ModItems.plate_armor_hev))).setTier(4)); constructionRecipes.add(new AnvilConstructionRecipe( - new AStack[] {new OreDictStack(OreDictManager.getReflector(), 4), new OreDictStack(STAR.ingot(), 1), new OreDictStack(MAGTUNG.wireFine(), 6)}, + new AStack[] {new OreDictStack(OreDictManager.getReflector(), 4), new OreDictStack(STAR.ingot(), 1), new OreDictStack(MAGTUNG.wireFine(), 8)}, new AnvilOutput(new ItemStack(ModItems.plate_armor_lunar))).setTier(4)); constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] {new ComparableStack(ModItems.ingot_meteorite_forged, 4), new OreDictStack(DESH.ingot(), 1), new ComparableStack(ModItems.billet_yharonite, 1)}, @@ -562,113 +580,25 @@ public class AnvilRecipes { } public static void registerConstructionAmmo() { - - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_357))).setTier(1)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_44))).setTier(1)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_9))).setTier(1)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_50))).setTier(1)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_buckshot))).setTier(1)); + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.stamp_iron_flat), new OreDictStack(GUNMETAL.ingot(), 2)}, new AnvilOutput(new ItemStack(ModItems.stamp_9))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.stamp_iron_flat), new OreDictStack(GUNMETAL.ingot(), 2)}, new AnvilOutput(new ItemStack(ModItems.stamp_50))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.stamp_desh_flat), new OreDictStack(WEAPONSTEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.stamp_desh_9))).setTier(4)); + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.stamp_desh_flat), new OreDictStack(WEAPONSTEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.stamp_desh_50))).setTier(4)); + + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(IRON.ingot(), 2)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 16))).setTier(1)); + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(IRON.ingot(), 2)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 17))).setTier(1)); + + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 22))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 23))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 24))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 25))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 26))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 27))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 28))).setTier(2)); + pullFromAssembler(new ComparableStack(ModItems.pellet_buckshot), 1); pullFromAssembler(new ComparableStack(ModItems.pellet_canister), 1); - - constructionRecipes.add(new AnvilConstructionRecipe( new AStack[]{ - new ComparableStack(ModItems.powder_chlorophyte, 1), - new OreDictStack(PB.nugget(), 12),}, - new AnvilOutput(new ItemStack(ModItems.pellet_chlorophyte, 2))).setTier(1)); - - Object[][] recs = new Object[][] { - {ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.STOCK), P_RED.dust(), ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.INCENDIARY), 2}, - {ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.STOCK), Item.getItemFromBlock(ModBlocks.gravel_obsidian), ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.SHRAPNEL), 2}, - {ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.STOCK), U238.ingot(), ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.DU), 3}, - {ModItems.ammo_12gauge.stackFromEnum(120, Ammo12Gauge.STOCK), ModItems.coin_maskman, ModItems.ammo_12gauge.stackFromEnum(120, Ammo12Gauge.SLEEK), 4}, - - {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), P_RED.dust(), ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.INCENDIARY), 2}, - {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), Item.getItemFromBlock(ModBlocks.gravel_obsidian), ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.SHRAPNEL), 2}, - {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), ModItems.powder_poison, ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.CAUSTIC), 2}, - {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), DIAMOND.dust(), ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.SHOCK), 2}, - {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), Item.getItemFromBlock(Blocks.soul_sand), ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.WITHER), 3}, - {ModItems.ammo_20gauge.stackFromEnum(120, Ammo20Gauge.STOCK), ModItems.coin_maskman, ModItems.ammo_20gauge.stackFromEnum(120, Ammo20Gauge.SLEEK), 4}, - - {ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.FLECHETTE), P_WHITE.ingot(), ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.FLECHETTE_PHOSPHORUS), 2}, - {ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.EXPLOSIVE), ModItems.egg_balefire_shard, ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.BALEFIRE), 4}, - {ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.EXPLOSIVE), ModItems.ammo_rocket, ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.KAMPF), 2}, - {ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.KAMPF), ModItems.pellet_canister, ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.CANISTER), 3}, - {ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.STOCK), ModItems.pellet_claws, ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.CLAW), 5}, - {ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.STOCK), ModItems.toothpicks, ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.VAMPIRE), 5}, - {ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.STOCK), ModItems.pellet_charged, ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.VOID), 5}, - {ModItems.ammo_4gauge.stackFromEnum(120, Ammo4Gauge.STOCK), ModItems.coin_maskman, ModItems.ammo_4gauge.stackFromEnum(120, Ammo4Gauge.SLEEK), 4}, - - {ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.STOCK), DURA.ingot(), ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.AP), 2}, - {ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.STOCK), U238.ingot(), ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.DU), 2}, - {ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.STOCK), P_WHITE.ingot(), ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.PHOSPHORUS), 2}, - {ModItems.ammo_44.stackFromEnum(12, Ammo44Magnum.DU), STAR.ingot(), ModItems.ammo_44.stackFromEnum(12, Ammo44Magnum.STAR), 3}, - {ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.CHLOROPHYTE), 3}, - - {ModItems.ammo_45.stackFromEnum(32, Ammo45ACP.STOCK), DURA.ingot(), ModItems.ammo_45.stackFromEnum(32, Ammo45ACP.AP), 3}, - {ModItems.ammo_45.stackFromEnum(32, Ammo45ACP.STOCK), U238.ingot(), ModItems.ammo_45.stackFromEnum(32, Ammo45ACP.DU), 3}, - - {ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.STOCK), ModItems.ingot_semtex, ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.EXPLOSIVE), 2}, - {ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.STOCK), U238.ingot(), ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.DU), 2}, - {ModItems.ammo_5mm.stackFromEnum(32, Ammo5mm.DU), STAR.ingot(), ModItems.ammo_5mm.stackFromEnum(32, Ammo5mm.STAR), 3}, - {ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.CHLOROPHYTE), 3}, - - {ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.STOCK), DURA.ingot(), ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.AP), 2}, - {ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.STOCK), U238.ingot(), ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.DU), 2}, - {ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.CHLOROPHYTE), 3}, - - {ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.STOCK), DURA.ingot(), ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.AP), 2}, - {ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.CHLOROPHYTE), 3}, - - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), P_RED.dust(), ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.INCENDIARY), 2}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), P_WHITE.ingot(), ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.PHOSPHORUS), 2}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), ModItems.ingot_semtex, ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.EXPLOSIVE), 2}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), DURA.ingot(), ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.AP), 2}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), U238.ingot(), ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.DU), 2}, - {ModItems.ammo_50bmg.stackFromEnum(8, Ammo50BMG.DU), STAR.ingot(), ModItems.ammo_50bmg.stackFromEnum(8, Ammo50BMG.STAR), 3}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.CHLOROPHYTE), 3}, - {ModItems.ammo_50bmg.stackFromEnum(128, Ammo50BMG.STOCK), ModItems.coin_maskman, ModItems.ammo_50bmg.stackFromEnum(128, Ammo50BMG.SLEEK), 4}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), ModItems.pellet_flechette, ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.FLECHETTE), 2}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.FLECHETTE), ModItems.nugget_am_mix, ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.FLECHETTE_AM), 3}, - {ModItems.ammo_50bmg.stackFromEnum(32, Ammo50BMG.FLECHETTE), ModItems.powder_polonium, ModItems.ammo_50bmg.stackFromEnum(32, Ammo50BMG.FLECHETTE_PO), 3}, - - {ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.STOCK), DURA.ingot(), ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.AP), 2}, - {ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.STOCK), U238.ingot(), ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.DU), 2}, - {ModItems.ammo_50ae.stackFromEnum(16, Ammo50AE.DU), STAR.ingot(), ModItems.ammo_50ae.stackFromEnum(16, Ammo50AE.STAR), 3}, - {ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.CHLOROPHYTE), 3}, - - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), P_WHITE.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.PHOSPHORUS), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), DURA.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.AP), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), U238.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.DU), 2}, - {ModItems.ammo_556.stackFromEnum(16, Ammo556mm.DU), STAR.ingot(), ModItems.ammo_556.stackFromEnum(16, Ammo556mm.STAR), 3}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_556.stackFromEnum(32, Ammo556mm.CHLOROPHYTE), 3}, - {ModItems.ammo_556.stackFromEnum(128, Ammo556mm.STOCK), ModItems.coin_maskman, ModItems.ammo_556.stackFromEnum(128, Ammo556mm.SLEEK), 4}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), Items.redstone, ModItems.ammo_556.stackFromEnum(32, Ammo556mm.TRACER), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), ModItems.pellet_flechette, ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), P_RED.dust(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE_INCENDIARY), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), P_WHITE.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE_PHOSPHORUS), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), U238.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE_DU), 2}, - {ModItems.ammo_556.stackFromEnum(100, Ammo556mm.FLECHETTE), ModItems.coin_maskman, ModItems.ammo_556.stackFromEnum(128, Ammo556mm.FLECHETTE_SLEEK), 4}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), ModItems.pellet_chlorophyte, ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE_CHLOROPHYTE), 3}, - - {ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.STOCK), Items.redstone, ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.TRACER), 2}, - {ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.STOCK), DURA.ingot(), ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.AP), 2}, - {ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.STOCK), P_WHITE.ingot(), ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.PHOSPHORUS), 2}, - {ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.STOCK), U238.ingot(), ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.DU), 2} - }; - - for(Object[] objs : recs) { - - ComparableStack ammoIn = new ComparableStack((ItemStack) objs[0]); - ItemStack out = (ItemStack) objs[2]; - - if(objs[1] instanceof Item) { - constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] { ammoIn, new ComparableStack((Item)objs[1], 1) }, new AnvilOutput(out)).setTier((int)objs[3])); - - } else if(objs[1] instanceof String) { - constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] { ammoIn, new OreDictStack((String)objs[1], 1) }, new AnvilOutput(out)).setTier((int)objs[3])); - } - } } public static void registerConstructionUpgrades() { @@ -1145,6 +1075,12 @@ public class AnvilRecipes { this.setOverlay(OverlayType.NONE); //no preferred overlay for many:many conversions } + public AnvilConstructionRecipe(AStack[] input, Pair[] output) { + for(AStack stack : input) this.input.add(stack); + for(Pair out : output) this.output.add(new AnvilOutput(out.getKey(), out.getValue())); + this.setOverlay(OverlayType.NONE); //no preferred overlay for many:many conversions + } + public AnvilConstructionRecipe setTier(int tier) { this.tierLower = tier; if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMUnlockAnvil) this.tierLower = 1; @@ -1211,4 +1147,42 @@ public class AnvilRecipes { RECYCLING, SMITHING; } + + @Override + public void readRecipe(JsonElement recipe) { + JsonObject obj = (JsonObject) recipe; + + AStack[] inputs = this.readAStackArray(obj.get("inputs").getAsJsonArray()); + Pair[] outputs = this.readItemStackArrayChance(obj.get("outputs").getAsJsonArray()); + + int tierLower = obj.get("tierLower").getAsInt(); + int tierUpper = obj.has("tierUpper") ? obj.get("tierUpper").getAsInt() : -1; + + OverlayType overlay = OverlayType.NONE; + if(obj.has("overlay")) { + String overlayName = obj.get("overlay").getAsString(); + overlay = OverlayType.valueOf(overlayName); + if(overlay == null) overlay = OverlayType.NONE; + } + + this.constructionRecipes.add(new AnvilConstructionRecipe(inputs, outputs).setTierRange(tierLower, tierUpper).setOverlay(overlay)); + } + + @Override + public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { + AnvilConstructionRecipe rec = (AnvilConstructionRecipe) recipe; + + writer.name("inputs").beginArray(); + for(AStack stack : rec.input) this.writeAStack(stack, writer); + writer.endArray(); + + writer.name("outputs").beginArray(); + for(AnvilOutput stack : rec.output) this.writeItemStackChance(new Pair(stack.stack, stack.chance), writer); + writer.endArray(); + + writer.name("tierLower").value(rec.tierLower); + writer.name("tierUpper").value(rec.tierUpper); + + writer.name("overlay").value(rec.overlay.name()); + } } diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingMold.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingMold.java index 5dd1bef82..11a1693a3 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingMold.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingMold.java @@ -2,10 +2,10 @@ package com.hbm.inventory.recipes.anvil; import java.util.List; -import com.hbm.inventory.OreNames; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.material.MaterialShapes; import com.hbm.items.ModItems; import com.hbm.util.ItemStackUtil; @@ -34,7 +34,7 @@ public class AnvilSmithingMold extends AnvilSmithingRecipe { for(String name : names) { - for(String otherPrefix : OreNames.prefixes) { + for(MaterialShapes shape : MaterialShapes.allShapes) for(String otherPrefix : shape.prefixes) { if(otherPrefix.length() > matchesPrefix.name.length() && name.startsWith(otherPrefix)) { return false; //ignore if there's a longer prefix that matches (i.e. a more accurate match) } diff --git a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java index 807c78765..7b99b1b9f 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java @@ -24,6 +24,7 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.material.MatDistribution; import com.hbm.inventory.recipes.*; +import com.hbm.inventory.recipes.anvil.AnvilRecipes; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; import com.hbm.util.Tuple.Pair; @@ -37,6 +38,8 @@ public abstract class SerializableRecipe { public static final Gson gson = new Gson(); public static List recipeHandlers = new ArrayList(); + public boolean modified = false; + /* * INIT */ @@ -58,6 +61,7 @@ public abstract class SerializableRecipe { recipeHandlers.add(new LiquefactionRecipes()); recipeHandlers.add(new SolidificationRecipes()); recipeHandlers.add(new CokerRecipes()); + recipeHandlers.add(new PyroOvenRecipes()); recipeHandlers.add(new BreederRecipes()); recipeHandlers.add(new CyclotronRecipes()); recipeHandlers.add(new HadronRecipes()); @@ -68,8 +72,14 @@ public abstract class SerializableRecipe { recipeHandlers.add(new ElectrolyserFluidRecipes()); recipeHandlers.add(new ElectrolyserMetalRecipes()); recipeHandlers.add(new ArcWelderRecipes()); + recipeHandlers.add(new RotaryFurnaceRecipes()); recipeHandlers.add(new ExposureChamberRecipes()); + recipeHandlers.add(new ParticleAcceleratorRecipes()); + recipeHandlers.add(new AmmoPressRecipes()); recipeHandlers.add(new AssemblerRecipes()); + //AFTER Assembler + recipeHandlers.add(new AnvilRecipes()); + recipeHandlers.add(new PedestalRecipes()); recipeHandlers.add(new MatDistribution()); recipeHandlers.add(new CustomMachineRecipes()); @@ -99,6 +109,7 @@ public abstract class SerializableRecipe { if(recFile.exists() && recFile.isFile()) { MainRegistry.logger.info("Reading recipe file " + recFile.getName()); recipe.readRecipeFile(recFile); + recipe.modified = true; } else { MainRegistry.logger.info("No recipe file found, registering defaults for " + recipe.getFileName()); recipe.registerDefaults(); @@ -106,6 +117,7 @@ public abstract class SerializableRecipe { File recTemplate = new File(recDir.getAbsolutePath() + File.separatorChar + "_" + recipe.getFileName()); MainRegistry.logger.info("Writing template file " + recTemplate.getName()); recipe.writeTemplateFile(recTemplate); + recipe.modified = false; } recipe.registerPost(); diff --git a/src/main/java/com/hbm/itempool/ItemPool.java b/src/main/java/com/hbm/itempool/ItemPool.java index 0d4fd2d11..b9b537d43 100644 --- a/src/main/java/com/hbm/itempool/ItemPool.java +++ b/src/main/java/com/hbm/itempool/ItemPool.java @@ -25,6 +25,7 @@ public class ItemPool { ItemPoolsRedRoom.init(); ItemPoolsSatellite.init(); ItemPoolsPile.init(); + ItemPoolsC130.init(); } public static HashMap pools = new HashMap(); @@ -65,6 +66,10 @@ public class ItemPool { return pool.pool; } + public static ItemStack getStack(String pool, Random rand) { + return getStack(ItemPool.getPool(pool), rand); + } + public static ItemStack getStack(WeightedRandomChestContent[] pool, Random rand) { WeightedRandomChestContent weighted = (WeightedRandomChestContent) WeightedRandom.getRandomItem(rand, pool); ItemStack stack = weighted.theItemId.copy(); diff --git a/src/main/java/com/hbm/itempool/ItemPoolsC130.java b/src/main/java/com/hbm/itempool/ItemPoolsC130.java new file mode 100644 index 000000000..c39fa9dbe --- /dev/null +++ b/src/main/java/com/hbm/itempool/ItemPoolsC130.java @@ -0,0 +1,61 @@ +package com.hbm.itempool; + +import static com.hbm.lib.HbmChestContents.weighted; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; + +import net.minecraft.util.WeightedRandomChestContent; + +public class ItemPoolsC130 { + + public static final String POOL_SUPPLIES = "POOL_SUPPLIES"; + public static final String POOL_WEAPONS = "POOL_WEAPONS"; + public static final String POOL_AMMO = "POOL_AMMO"; + + + public static void init() { + + new ItemPool(POOL_SUPPLIES) {{ + this.pool = new WeightedRandomChestContent[] { + weighted(ModItems.definitelyfood, 0, 3, 10, 25), + weighted(ModItems.syringe_metal_stimpak, 0, 1, 3, 10), + weighted(ModItems.pill_iodine, 0, 1, 2, 2), + weighted(ModItems.canister_full, Fluids.DIESEL.getID(), 1, 4, 5), + weighted(ModBlocks.machine_diesel, 0, 1, 1, 1), + weighted(ModItems.geiger_counter, 0, 1, 1, 2), + weighted(ModItems.med_bag, 0, 1, 1, 3), + weighted(ModItems.radaway, 0, 1, 5, 10), + }; + }}; + + new ItemPool(POOL_WEAPONS) {{ + this.pool = new WeightedRandomChestContent[] { + weighted(ModItems.gun_light_revolver, 0, 1, 1, 10), + weighted(ModItems.gun_henry, 0, 1, 1, 10), + weighted(ModItems.gun_maresleg, 0, 1, 1, 10), + weighted(ModItems.gun_greasegun, 0, 1, 1, 10), + weighted(ModItems.gun_carbine, 0, 1, 1, 5), + weighted(ModItems.gun_heavy_revolver, 0, 1, 1, 5), + weighted(ModItems.gun_panzerschreck, 0, 1, 1, 2), + weighted(ModItems.gun_double_barrel, 0, 1, 1, 1), + }; + }}; + + new ItemPool(POOL_AMMO) {{ + this.pool = new WeightedRandomChestContent[] { + weighted(ModItems.ammo_standard, EnumAmmo.M357_SP.ordinal(), 12, 12, 10), + weighted(ModItems.ammo_standard, EnumAmmo.M357_FMJ.ordinal(), 6, 6, 10), + weighted(ModItems.ammo_standard, EnumAmmo.M44_SP.ordinal(), 12, 12, 5), + weighted(ModItems.ammo_standard, EnumAmmo.M44_FMJ.ordinal(), 6, 6, 5), + weighted(ModItems.ammo_standard, EnumAmmo.P9_SP.ordinal(), 12, 12, 10), + weighted(ModItems.ammo_standard, EnumAmmo.P9_FMJ.ordinal(), 6, 6, 10), + weighted(ModItems.ammo_standard, EnumAmmo.R762_SP.ordinal(), 6, 6, 5), + weighted(ModItems.ammo_standard, EnumAmmo.G12_BP.ordinal(), 6, 6, 10), + weighted(ModItems.ammo_standard, EnumAmmo.ROCKET_HE.ordinal(), 1, 1, 3), + }; + }}; + } +} diff --git a/src/main/java/com/hbm/itempool/ItemPoolsComponent.java b/src/main/java/com/hbm/itempool/ItemPoolsComponent.java index 05bfdeb52..02d14641c 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsComponent.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsComponent.java @@ -77,7 +77,6 @@ public class ItemPoolsComponent { weighted(ModItems.gas_mask_m65, 0, 1, 1, 5), weighted(ModItems.battery_advanced, 0, 1, 1, 5), weighted(ModItems.designator, 0, 1, 1, 5), - weighted(ModItems.crate_caller, 0, 1, 1, 1), weighted(ModItems.thruster_small, 0, 1, 1, 5), weighted(ModItems.thruster_medium, 0, 1, 1, 4), weighted(ModItems.fuel_tank_small, 0, 1, 1, 5), diff --git a/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java b/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java index 52ba8708d..ef3bc5569 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsLegacy.java @@ -2,12 +2,12 @@ package com.hbm.itempool; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.material.Mats; +import com.hbm.items.ItemEnums.EnumCasingType; import com.hbm.items.ModItems; -import com.hbm.items.ItemAmmoEnums.Ammo357Magnum; -import com.hbm.items.ItemAmmoEnums.AmmoFatman; import com.hbm.items.machine.ItemBreedingRod.BreedingRodType; import com.hbm.items.machine.ItemCircuit.EnumCircuitType; import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import static com.hbm.lib.HbmChestContents.*; @@ -43,13 +43,14 @@ public class ItemPoolsLegacy { weighted(ModItems.ingot_beryllium, 0, 1, 2, 4), weighted(ModItems.ingot_titanium, 0, 1, 1, 3), weighted(ModItems.circuit, EnumCircuitType.VACUUM_TUBE.ordinal(), 1, 1, 5), - weighted(ModItems.gun_revolver, 0, 1, 1, 3), - weighted(ModItems.ammo_357, Ammo357Magnum.LEAD.ordinal(), 2, 6, 4), + weighted(ModItems.gun_light_revolver, 0, 1, 1, 3), + weighted(ModItems.ammo_standard, EnumAmmo.M357_SP.ordinal(), 2, 6, 4), + weighted(ModItems.ammo_standard, EnumAmmo.G12_BP.ordinal(), 3, 6, 3), + weighted(ModItems.ammo_standard, EnumAmmo.G26_FLARE_SUPPLY.ordinal(), 1, 1, 1), weighted(ModItems.gun_kit_1, 0, 1, 3, 4), - weighted(ModItems.gun_lever_action, 0, 1, 1, 1), - weighted(ModItems.ammo_20gauge, 0, 2, 6, 3), - weighted(ModItems.casing_9, 0, 4, 10, 3), - weighted(ModItems.casing_50, 0, 4, 10, 3), + weighted(ModItems.gun_maresleg, 0, 1, 1, 1), + weighted(ModItems.casing, EnumCasingType.SMALL.ordinal(), 4, 10, 3), + weighted(ModItems.casing, EnumCasingType.SHOTSHELL.ordinal(), 4, 10, 3), weighted(ModItems.cordite, 0, 4, 6, 5), weighted(ModItems.battery_generic, 0, 1, 1, 4), weighted(ModItems.battery_advanced, 0, 1, 1, 2), @@ -106,12 +107,10 @@ public class ItemPoolsLegacy { weighted(ModItems.circuit, EnumCircuitType.CHIP.ordinal(), 1, 1, 2), weighted(ModItems.gun_kit_1, 0, 1, 3, 6), weighted(ModItems.gun_kit_2, 0, 1, 2, 3), - weighted(ModItems.gun_rpg, 0, 1, 1, 4), - weighted(ModItems.ammo_rocket, 0, 1, 4, 5), - weighted(ModItems.gun_fatman, 0, 1, 1, 1), - weighted(ModItems.ammo_nuke, AmmoFatman.SAFE.ordinal(), 1, 2, 1), - weighted(ModItems.ammo_nuke, AmmoFatman.LOW.ordinal(), 1, 2, 1), - weighted(ModItems.ammo_nuke, AmmoFatman.PUMPKIN.ordinal(), 1, 2, 1), + weighted(ModItems.gun_panzerschreck, 0, 1, 1, 4), + weighted(ModItems.ammo_standard, EnumAmmo.ROCKET_HE.ordinal(), 1, 4, 5), + weighted(ModItems.ammo_standard, EnumAmmo.G26_FLARE_SUPPLY.ordinal(), 1, 1, 5), + weighted(ModItems.ammo_standard, EnumAmmo.G26_FLARE_WEAPON.ordinal(), 1, 1, 3), weighted(ModItems.grenade_nuclear, 0, 1, 1, 2), weighted(ModItems.grenade_smart, 0, 1, 3, 3), weighted(ModItems.grenade_mirv, 0, 1, 1, 2), @@ -120,7 +119,6 @@ public class ItemPoolsLegacy { weighted(ModItems.battery_advanced_cell, 0, 1, 1, 2), weighted(ModItems.battery_schrabidium, 0, 1, 1, 1), weighted(ModItems.syringe_awesome, 0, 1, 1, 1), - weighted(ModItems.crate_caller, 0, 1, 1, 3), weighted(ModItems.fusion_core, 0, 1, 1, 4), weighted(ModItems.bottle_nuka, 0, 1, 3, 6), weighted(ModItems.bottle_quantum, 0, 1, 1, 3), @@ -134,7 +132,8 @@ public class ItemPoolsLegacy { weighted(ModItems.gas_mask_filter, 0, 1, 1, 4), weighted(ModItems.journal_pip, 0, 1, 1, 1), weighted(ModItems.journal_bj, 0, 1, 1, 1), - weighted(ModItems.launch_code_piece, 0, 1, 1, 1) + weighted(ModItems.launch_code_piece, 0, 1, 1, 1), + weighted(ModItems.gun_double_barrel, 0, 1, 1, 1), }; }}; @@ -194,20 +193,17 @@ public class ItemPoolsLegacy { weighted(ModItems.t45_boots, 0, 1, 1, 15), weighted(ModItems.t45_kit, 0, 1, 1, 3), weighted(ModItems.fusion_core, 0, 1, 1, 10), - weighted(ModItems.gun_revolver, 0, 1, 1, 4), - weighted(ModItems.ammo_357, Ammo357Magnum.LEAD.ordinal(), 1, 24, 4), + weighted(ModItems.gun_light_revolver, 0, 1, 1, 4), weighted(ModItems.gun_kit_1, 0, 2, 3, 4), - weighted(ModItems.gun_rpg, 0, 1, 1, 3), - weighted(ModItems.ammo_rocket, 0, 1, 6, 3), + weighted(ModItems.ammo_standard, EnumAmmo.M357_FMJ.ordinal(), 1, 24, 4), + weighted(ModItems.ammo_standard, EnumAmmo.G40_HE.ordinal(), 1, 6, 3), + weighted(ModItems.ammo_standard, EnumAmmo.G26_FLARE_WEAPON.ordinal(), 1, 1, 5), weighted(ModItems.rod, BreedingRodType.U235.ordinal(), 1, 1, 2), weighted(ModItems.billet_uranium_fuel, 0, 1, 1, 2), weighted(ModItems.ingot_uranium_fuel, 0, 1, 1, 2), - weighted(ModItems.ammo_nuke, AmmoFatman.SAFE.ordinal(), 1, 2, 1), - weighted(ModItems.gun_fatman, 0, 1, 1, 1), weighted(ModItems.bottle_nuka, 0, 1, 3, 6), weighted(ModItems.bottle_quantum, 0, 1, 1, 3), weighted(ModItems.stealth_boy, 0, 1, 1, 7), - weighted(ModItems.crate_caller, 0, 1, 1, 3), weighted(ModItems.gas_mask_m65, 0, 1, 1, 5), weighted(ModItems.gas_mask_filter, 0, 1, 1, 5), weighted(ModItems.grenade_nuclear, 0, 1, 2, 2), diff --git a/src/main/java/com/hbm/itempool/ItemPoolsPile.java b/src/main/java/com/hbm/itempool/ItemPoolsPile.java index 46bf7adca..ad2a7f3ae 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsPile.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsPile.java @@ -2,9 +2,9 @@ package com.hbm.itempool; import static com.hbm.lib.HbmChestContents.weighted; -import com.hbm.items.ItemAmmoEnums.Ammo357Magnum; -import com.hbm.items.ItemAmmoEnums.AmmoFatman; +import com.hbm.inventory.material.Mats; import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import net.minecraft.init.Items; import net.minecraft.util.WeightedRandomChestContent; @@ -14,6 +14,13 @@ public class ItemPoolsPile { public static final String POOL_PILE_HIVE = "POOL_PILE_HIVE"; public static final String POOL_PILE_BONES = "POOL_PILE_BONES"; public static final String POOL_PILE_CAPS = "POOL_PILE_CAPS"; + public static final String POOL_PILE_MED_SYRINGE = "POOL_PILE_MED_SYRINGE"; + public static final String POOL_PILE_MED_PILLS = "POOL_PILE_MED_PILLS"; + public static final String POOL_PILE_MAKESHIFT_GUN = "POOL_PILE_MAKESHIFT_GUN"; + public static final String POOL_PILE_MAKESHIFT_WRENCH = "POOL_PILE_MAKESHIFT_WRENCH"; + public static final String POOL_PILE_MAKESHIFT_PLATES = "POOL_PILE_MAKESHIFT_PLATES"; + public static final String POOL_PILE_MAKESHIFT_WIRE = "POOL_PILE_MAKESHIFT_WIRE"; + public static final String POOL_PILE_NUKE_STORAGE = "POOL_PILE_NUKE_STORAGE"; public static void init() { @@ -33,14 +40,12 @@ public class ItemPoolsPile { weighted(ModItems.steel_pickaxe, 0, 1, 1, 5), weighted(ModItems.steel_shovel, 0, 1, 1, 5), //Weapons - weighted(ModItems.gun_lever_action, 0, 1, 1, 5), - weighted(ModItems.gun_bio_revolver, 0, 1, 1, 1), + weighted(ModItems.gun_maresleg, 0, 1, 1, 5), + weighted(ModItems.gun_light_revolver, 0, 1, 1, 1), weighted(ModItems.grenade_if_generic, 0, 1, 2, 5), - weighted(ModItems.ammo_20gauge, 0, 8, 8, 10), - weighted(ModItems.ammo_12gauge, 0, 4, 4, 10), - weighted(ModItems.ammo_357, Ammo357Magnum.LEAD.ordinal(), 6, 12, 10), - weighted(ModItems.ammo_grenade, 0, 1, 1, 2), - weighted(ModItems.ammo_nuke, AmmoFatman.PUMPKIN.ordinal(), 1, 1, 1), + weighted(ModItems.ammo_standard, EnumAmmo.G12.ordinal(), 4, 4, 10), + weighted(ModItems.ammo_standard, EnumAmmo.M357_SP.ordinal(), 6, 12, 10), + weighted(ModItems.ammo_standard, EnumAmmo.G40_HE.ordinal(), 1, 1, 2), //Consumables weighted(ModItems.bottle_nuka, 0, 1, 2, 20), weighted(ModItems.bottle_quantum, 0, 1, 2, 1), @@ -69,5 +74,37 @@ public class ItemPoolsPile { weighted(ModItems.cap_sparkle, 0, 4, 4, 1), }; }}; + + //medicine stashes + new ItemPool(POOL_PILE_MED_SYRINGE) {{ + this.pool = new WeightedRandomChestContent[] { + weighted(ModItems.syringe_metal_stimpak, 0, 1, 1, 10), + weighted(ModItems.syringe_metal_medx, 0, 1, 1, 5), + weighted(ModItems.syringe_metal_psycho, 0, 1, 1, 5), + }; + }}; + new ItemPool(POOL_PILE_MED_PILLS) {{ + this.pool = new WeightedRandomChestContent[] { + weighted(ModItems.radaway, 0, 1, 1, 10), + weighted(ModItems.radx, 0, 1, 1, 10), + weighted(ModItems.iv_blood, 0, 1, 1, 15), + weighted(ModItems.siox, 0, 1, 1, 5), + }; + }}; + + //makeshift gun + new ItemPool(POOL_PILE_MAKESHIFT_GUN) {{ this.pool = new WeightedRandomChestContent[] { weighted(ModItems.gun_maresleg, 0, 1, 1, 10) }; }}; + new ItemPool(POOL_PILE_MAKESHIFT_WRENCH) {{ this.pool = new WeightedRandomChestContent[] { weighted(ModItems.wrench, 0, 1, 1, 10) }; }}; + new ItemPool(POOL_PILE_MAKESHIFT_PLATES) {{ this.pool = new WeightedRandomChestContent[] { weighted(ModItems.plate_steel, 0, 1, 1, 10) }; }}; + new ItemPool(POOL_PILE_MAKESHIFT_WIRE) {{ this.pool = new WeightedRandomChestContent[] { weighted(ModItems.wire_fine, Mats.MAT_ALUMINIUM.id, 1, 1, 10) }; }}; + + new ItemPool(POOL_PILE_NUKE_STORAGE) {{ + this.pool = new WeightedRandomChestContent[] { + weighted(ModItems.ammo_standard, EnumAmmo.NUKE_STANDARD.ordinal(), 1, 1, 50), + weighted(ModItems.ammo_standard, EnumAmmo.NUKE_HIGH.ordinal(), 1, 1, 10), + weighted(ModItems.ammo_standard, EnumAmmo.NUKE_TOTS.ordinal(), 1, 1, 10), + + }; + }}; } } diff --git a/src/main/java/com/hbm/itempool/ItemPoolsRedRoom.java b/src/main/java/com/hbm/itempool/ItemPoolsRedRoom.java index f2de185bb..690f2580e 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsRedRoom.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsRedRoom.java @@ -3,13 +3,16 @@ package com.hbm.itempool; import static com.hbm.lib.HbmChestContents.weighted; import com.hbm.blocks.ModBlocks; +import com.hbm.items.ItemEnums.EnumSecretType; import com.hbm.items.ModItems; import net.minecraft.util.WeightedRandomChestContent; public class ItemPoolsRedRoom { - + public static final String POOL_RED_PEDESTAL = "POOL_RED_PEDESTAL"; + public static final String POOL_BLACK_SLAB = "POOL_BLACK_SLAB"; + public static final String POOL_BLACK_PART = "POOL_BLACK_PART"; public static void init() { @@ -36,7 +39,22 @@ public class ItemPoolsRedRoom { weighted(ModItems.flask_infusion, 0, 1, 1, 5), weighted(ModBlocks.boxcar, 0, 1, 1, 5), weighted(ModItems.book_of_, 0, 1, 1, 5), - weighted(ModItems.gun_revolver_pip, 0, 1, 1, 5) + }; + }}; + + //pedestal weapons + new ItemPool(POOL_BLACK_SLAB) {{ + this.pool = new WeightedRandomChestContent[] { + weighted(ModItems.clay_tablet, 0, 1, 1, 10) + }; + }}; + + //pedestal weapons + new ItemPool(POOL_BLACK_PART) {{ + this.pool = new WeightedRandomChestContent[] { + weighted(ModItems.item_secret, EnumSecretType.SELENIUM_STEEL.ordinal(), 4, 4, 10), + weighted(ModItems.item_secret, EnumSecretType.CONTROLLER.ordinal(), 1, 1, 10), + weighted(ModItems.item_secret, EnumSecretType.CANISTER.ordinal(), 1, 1, 10), }; }}; } diff --git a/src/main/java/com/hbm/itempool/ItemPoolsSingle.java b/src/main/java/com/hbm/itempool/ItemPoolsSingle.java index 61afecf6b..47c0a9c17 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsSingle.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsSingle.java @@ -4,8 +4,8 @@ import static com.hbm.lib.HbmChestContents.weighted; import com.hbm.blocks.ModBlocks; import com.hbm.items.ModItems; -import com.hbm.items.ItemAmmoEnums.AmmoFatman; import com.hbm.items.machine.ItemCircuit.EnumCircuitType; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import net.minecraft.init.Items; import net.minecraft.util.WeightedRandomChestContent; @@ -42,13 +42,13 @@ public class ItemPoolsSingle { new ItemPool(POOL_VAULT_RUSTY) {{ this.pool = new WeightedRandomChestContent[] { weighted(Items.gold_ingot, 0, 3, 14, 1), - weighted(ModItems.gun_uac_pistol, 0, 1, 1, 2), + weighted(ModItems.gun_heavy_revolver, 0, 1, 1, 2), weighted(ModItems.pin, 0, 8, 8, 1), - weighted(ModItems.gun_calamity, 0, 1, 1, 1), + weighted(ModItems.gun_am180, 0, 1, 1, 1), weighted(ModItems.bottle_quantum, 0, 1, 3, 1), weighted(ModItems.ingot_advanced_alloy, 0, 4, 12, 1), - weighted(ModItems.ammo_50bmg, 0, 24, 48, 1), - weighted(ModItems.ammo_45, 0, 48, 64, 2), + weighted(ModItems.ammo_standard, EnumAmmo.BMG50_FMJ.ordinal(), 24, 48, 1), + weighted(ModItems.ammo_standard, EnumAmmo.P9_JHP.ordinal(), 48, 64, 2), weighted(ModItems.circuit, EnumCircuitType.CHIP.ordinal(), 3, 6, 1), weighted(ModItems.gas_mask_m65, 0, 1, 1, 1), weighted(ModItems.grenade_if_he, 0, 1, 1, 1), @@ -63,14 +63,12 @@ public class ItemPoolsSingle { weighted(ModItems.battery_advanced_cell_4, 0, 1, 1, 1), weighted(ModItems.powder_desh_mix, 0, 1, 5, 1), weighted(Items.diamond, 0, 3, 6, 1), - weighted(ModItems.ammo_nuke, 0, 1, 1, 1), + weighted(ModItems.ammo_standard, EnumAmmo.NUKE_STANDARD.ordinal(), 1, 1, 1), weighted(ModItems.ammo_container, 0, 1, 1, 1), weighted(ModItems.grenade_nuclear, 0, 1, 1, 1), weighted(ModItems.grenade_smart, 0, 1, 6, 1), weighted(ModItems.powder_yellowcake, 0, 16, 24, 1), weighted(ModItems.gun_uzi, 0, 1, 1, 1), - weighted(ModItems.gun_uzi_silencer, 0, 1, 1, 1), - weighted(ModItems.clip_uzi, 0, 1, 3, 1), weighted(ModItems.circuit, EnumCircuitType.VACUUM_TUBE.ordinal(), 12, 16, 1), weighted(ModItems.circuit, EnumCircuitType.CHIP.ordinal(), 2, 6, 1) }; @@ -83,16 +81,12 @@ public class ItemPoolsSingle { weighted(ModItems.powder_power, 0, 1, 5, 1), weighted(ModItems.sat_chip, 0, 1, 1, 1), weighted(Items.diamond, 0, 5, 9, 1), - weighted(ModItems.warhead_nuclear, 0, 1, 1, 1), - weighted(ModItems.ammo_nuke, 0, 1, 3, 1), + weighted(ModItems.ammo_standard, EnumAmmo.NUKE_STANDARD.ordinal(), 1, 3, 1), weighted(ModItems.ammo_container, 0, 1, 4, 1), weighted(ModItems.grenade_nuclear, 0, 1, 2, 1), weighted(ModItems.grenade_mirv, 0, 1, 1, 1), weighted(ModItems.powder_yellowcake, 0, 26, 42, 1), - weighted(ModItems.ingot_u235, 0, 3, 6, 1), - weighted(ModItems.gun_fatman, 0, 1, 1, 1), - weighted(ModItems.gun_revolver_pip, 0, 1, 1, 1), - weighted(ModItems.clip_revolver_pip, 0, 2, 4, 1), + weighted(ModItems.gun_heavy_revolver, 0, 1, 1, 1), weighted(ModItems.circuit, EnumCircuitType.CHIP.ordinal(), 18, 32, 1), weighted(ModItems.circuit, EnumCircuitType.BASIC.ordinal(), 6, 12, 1) }; @@ -101,20 +95,12 @@ public class ItemPoolsSingle { new ItemPool(POOL_VAULT_UNBREAKABLE) {{ this.pool = new WeightedRandomChestContent[] { weighted(ModItems.ammo_container, 0, 3, 6, 1), - weighted(ModItems.clip_fatman, 0, 2, 3, 1), - weighted(ModItems.ammo_nuke, AmmoFatman.MIRV.ordinal(), 2, 3, 1), - weighted(ModItems.gun_mirv, 0, 1, 1, 1), - weighted(ModItems.gun_fatman, 0, 1, 1, 1), - weighted(ModItems.gun_proto, 0, 1, 1, 1), - weighted(ModItems.gun_b92, 0, 1, 1, 1), - weighted(ModItems.ingot_combine_steel, 0, 16, 28, 1), - weighted(ModItems.man_core, 0, 1, 1, 1), - weighted(ModItems.boy_kit, 0, 1, 1, 1), - weighted(ModItems.nuke_starter_kit, 0, 1, 1, 1), - weighted(ModItems.weaponized_starblaster_cell, 0, 1, 1, 1), - weighted(ModItems.warhead_mirv, 0, 1, 1, 1), + weighted(ModItems.ammo_standard, EnumAmmo.NUKE_DEMO.ordinal(), 2, 3, 1), + weighted(ModItems.gun_carbine, 0, 1, 1, 1), + weighted(ModItems.ammo_standard, EnumAmmo.R762_DU.ordinal(), 16, 32, 1), + weighted(ModItems.gun_congolake, 0, 1, 1, 1), weighted(ModItems.battery_schrabidium_cell, 0, 1, 1, 1), - weighted(ModItems.powder_nitan_mix, 0, 16, 32, 1) + weighted(ModItems.circuit, EnumCircuitType.ADVANCED.ordinal(), 6, 12, 1) }; }}; diff --git a/src/main/java/com/hbm/items/IEquipReceiver.java b/src/main/java/com/hbm/items/IEquipReceiver.java index 1f0c76ecd..62746e4b0 100644 --- a/src/main/java/com/hbm/items/IEquipReceiver.java +++ b/src/main/java/com/hbm/items/IEquipReceiver.java @@ -1,9 +1,10 @@ package com.hbm.items; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; public interface IEquipReceiver { - public void onEquip(EntityPlayer player); + public void onEquip(EntityPlayer player, ItemStack stack); } diff --git a/src/main/java/com/hbm/items/IKeybindReceiver.java b/src/main/java/com/hbm/items/IKeybindReceiver.java new file mode 100644 index 000000000..5a44b4cce --- /dev/null +++ b/src/main/java/com/hbm/items/IKeybindReceiver.java @@ -0,0 +1,12 @@ +package com.hbm.items; + +import com.hbm.handler.HbmKeybinds.EnumKeybind; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +public interface IKeybindReceiver { + + public boolean canHandleKeybind(EntityPlayer player, ItemStack stack, EnumKeybind keybind); + public void handleKeybind(EntityPlayer player, ItemStack stack, EnumKeybind keybind, boolean state); +} diff --git a/src/main/java/com/hbm/items/ISyncButtons.java b/src/main/java/com/hbm/items/ISyncButtons.java deleted file mode 100644 index e06e3e78c..000000000 --- a/src/main/java/com/hbm/items/ISyncButtons.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.hbm.items; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.event.MouseEvent; - -public interface ISyncButtons { - - public boolean canReceiveMouse(EntityPlayer player, ItemStack stack, MouseEvent event, int button, boolean buttonstate); - public void receiveMouse(EntityPlayer player, ItemStack stack, int button, boolean buttonstate); -} diff --git a/src/main/java/com/hbm/items/ItemAmmoEnums.java b/src/main/java/com/hbm/items/ItemAmmoEnums.java index 54ad9f1c6..03b5219e8 100644 --- a/src/main/java/com/hbm/items/ItemAmmoEnums.java +++ b/src/main/java/com/hbm/items/ItemAmmoEnums.java @@ -4,34 +4,9 @@ import java.util.Set; import com.google.common.collect.ImmutableSet; import com.hbm.items.weapon.ItemAmmo.AmmoItemTrait; -import com.hbm.lib.HbmCollection; public class ItemAmmoEnums { - public enum AmmoLunaticSniper implements IAmmoItemEnum { - SABOT("ammo_luna"), - INCENDIARY("ammo_luna_incendiary"), - EXPLOSIVE("ammo_luna_explosive"); - - private final Set traits; - private final String unloc; - - private AmmoLunaticSniper(String unloc, AmmoItemTrait... traits) { - this.traits = safeAssign(traits); - this.unloc = unloc; - } - - @Override - public Set getTraits() { - return traits; - } - - @Override - public String getInternalName() { - return unloc; - } - } - public enum AmmoFireExt implements IAmmoItemEnum { WATER("ammo_fireext"), FOAM("ammo_fireext_foam"), @@ -55,33 +30,7 @@ public class ItemAmmoEnums { return unloc; } } - - public enum AmmoFlamethrower implements IAmmoItemEnum { - DIESEL("ammo_fuel"), - NAPALM("ammo_fuel_napalm", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_RANGE, AmmoItemTrait.CON_HEAVY_WEAR), - PHOSPHORUS("ammo_fuel_phosphorus", AmmoItemTrait.PRO_PHOSPHORUS_SPLASH, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_RANGE, AmmoItemTrait.PRO_RANGE, AmmoItemTrait.PRO_ACCURATE1, AmmoItemTrait.NEU_WARCRIME1, AmmoItemTrait.CON_SING_PROJECTILE, AmmoItemTrait.CON_HEAVY_WEAR), - VAPORIZER("ammo_fuel_vaporizer", AmmoItemTrait.PRO_PHOSPHORUS, AmmoItemTrait.PRO_FLAMES, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.NEU_ERASER, AmmoItemTrait.CON_ACCURACY2, AmmoItemTrait.CON_RANGE2, AmmoItemTrait.CON_HEAVY_WEAR, AmmoItemTrait.CON_LING_FIRE), - CHLORINE("ammo_fuel_gas", AmmoItemTrait.PRO_NO_GRAVITY, AmmoItemTrait.PRO_POISON_GAS, AmmoItemTrait.CON_NO_DAMAGE, AmmoItemTrait.CON_NO_FIRE); - - private final Set traits; - private final String unloc; - - private AmmoFlamethrower(String unloc, AmmoItemTrait... traits) { - this.traits = safeAssign(traits); - this.unloc = unloc; - } - - @Override - public Set getTraits() { - return traits; - } - - @Override - public String getInternalName() { - return unloc; - } - } - + public enum AmmoMisc implements IAmmoItemEnum { //LUNA_SNIPER("ammo_lunar", Gun50BMGFactory.getLunaticSabotRound(), AmmoItemTrait.PRO_HEAVY_DAMAGE, AmmoItemTrait.PRO_ACCURATE2, AmmoItemTrait.NEU_HEAVY_METAL), DGK("ammo_dkg"); @@ -105,167 +54,6 @@ public class ItemAmmoEnums { } } - public enum AmmoStinger implements IAmmoItemEnum { - STOCK("ammo_stinger_rocket"), - HE("ammo_stinger_rocket_he", AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.CON_WEAR), - INCENDIARY("ammo_stinger_rocket_incendiary", HbmCollection.IncendiaryType), - NUCLEAR("ammo_stinger_rocket_nuclear", AmmoItemTrait.PRO_NUCLEAR, AmmoItemTrait.CON_SUPER_WEAR), - BONES("ammo_stinger_rocket_bones"); - - private final Set traits; - private final String unloc; - - private AmmoStinger(String unloc, AmmoItemTrait... traits) { - this.traits = safeAssign(traits); - this.unloc = unloc; - } - - private AmmoStinger(String unloc, Set traits) { - this.traits = traits; - this.unloc = unloc; - } - - @Override - public Set getTraits() { - return traits; - } - - @Override - public String getInternalName() { - return unloc; - } - } - - public enum AmmoRocket implements IAmmoItemEnum { - STOCK("ammo_rocket"), - HE("ammo_rocket_he", AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.CON_WEAR), - INCENDIARY("ammo_rocket_incendiary", HbmCollection.IncendiaryType), - EMP("ammo_rocket_emp", AmmoItemTrait.PRO_EMP, AmmoItemTrait.CON_RADIUS), - SLEEK("ammo_rocket_sleek", AmmoItemTrait.PRO_RADIUS_HIGH, AmmoItemTrait.PRO_NO_GRAVITY, AmmoItemTrait.CON_SPEED), - SHRAPNEL("ammo_rocket_shrapnel", AmmoItemTrait.PRO_SHRAPNEL), - GLARE("ammo_rocket_glare", AmmoItemTrait.PRO_SPEED, AmmoItemTrait.PRO_INCENDIARY, AmmoItemTrait.CON_WEAR), - NUCLEAR("ammo_rocket_nuclear", AmmoItemTrait.PRO_NUCLEAR, AmmoItemTrait.CON_SUPER_WEAR, AmmoItemTrait.CON_SPEED), - CHLORINE("ammo_rocket_toxic", AmmoItemTrait.PRO_CHLORINE, AmmoItemTrait.CON_NO_EXPLODE1, AmmoItemTrait.CON_SPEED), - RPC("ammo_rocket_rpc", AmmoItemTrait.PRO_CHAINSAW, AmmoItemTrait.PRO_PENETRATION, AmmoItemTrait.PRO_NO_GRAVITY, AmmoItemTrait.CON_WEAR, AmmoItemTrait.CON_NO_EXPLODE1, AmmoItemTrait.NEU_UHH ), - PHOSPHORUS("ammo_rocket_phosphorus", HbmCollection.PhosphorusTypeSpecial), - CANISTER("ammo_rocket_canister"), - DIGAMMA("ammo_rocket_digamma"); - - private final Set traits; - private final String unloc; - - private AmmoRocket(String unloc, AmmoItemTrait... traits) { - this.traits = safeAssign(traits); - this.unloc = unloc; - } - - private AmmoRocket(String unloc, Set traits) { - this.traits = traits; - this.unloc = unloc; - } - - @Override - public Set getTraits() { - return traits; - } - - @Override - public String getInternalName() { - return unloc; - } - } - - public enum AmmoGrenade implements IAmmoItemEnum { - STOCK("ammo_grenade"), - HE("ammo_grenade_he", AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.CON_WEAR), - INCENDIARY("ammo_grenade_incendiary", AmmoItemTrait.PRO_INCENDIARY, AmmoItemTrait.CON_WEAR), - PHOSPHORUS("ammo_grenade_phosphorus", AmmoItemTrait.PRO_PHOSPHORUS_SPLASH, AmmoItemTrait.NEU_WARCRIME1, AmmoItemTrait.CON_WEAR), - CHLORINE("ammo_grenade_toxic", AmmoItemTrait.PRO_CHLORINE, AmmoItemTrait.CON_NO_EXPLODE1), - SLEEK("ammo_grenade_sleek", AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.NEU_JOLT), - CONCUSSION("ammo_grenade_concussion", AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.CON_NO_EXPLODE2), - 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), - LEADBURSTER("ammo_grenade_leadburster", AmmoItemTrait.NEU_LEADBURSTER, AmmoItemTrait.CON_NO_EXPLODE1); - - private final Set traits; - private final String unloc; - - private AmmoGrenade(String unloc, AmmoItemTrait... traits) { - this.traits = safeAssign(traits); - this.unloc = unloc; - } - - @Override - public Set getTraits() { - return traits; - } - - @Override - public String getInternalName() { - return unloc; - } - } - - public enum AmmoFatman implements IAmmoItemEnum { - STOCK("ammo_nuke"), - LOW("ammo_nuke_low", AmmoItemTrait.CON_RADIUS), - HIGH("ammo_nuke_high", AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.PRO_FALLOUT), - TOTS("ammo_nuke_tots", AmmoItemTrait.PRO_BOMB_COUNT, AmmoItemTrait.NEU_FUN, AmmoItemTrait.CON_ACCURACY2, AmmoItemTrait.CON_RADIUS, AmmoItemTrait.CON_NO_MIRV), - SAFE("ammo_nuke_safe", AmmoItemTrait.CON_RADIUS, AmmoItemTrait.CON_NO_EXPLODE2), - PUMPKIN("ammo_nuke_pumpkin", AmmoItemTrait.CON_NN), - MIRV("ammo_mirv"), - MIRV_LOW("ammo_mirv_low", AmmoItemTrait.CON_RADIUS), - MIRV_HIGH("ammo_mirv_high", AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.PRO_FALLOUT), - MIRV_SAFE("ammo_mirv_safe", AmmoItemTrait.CON_RADIUS, AmmoItemTrait.CON_NO_EXPLODE2), - MIRV_SPECIAL("ammo_mirv_special"), - BALEFIRE("gun_bf_ammo"), - BARREL("ammo_nuke_barrel"); - - private final Set traits; - private final String unloc; - - private AmmoFatman(String unloc, AmmoItemTrait... traits) { - this.traits = safeAssign(traits); - this.unloc = unloc; - } - - @Override - public Set getTraits() { - return traits; - } - - @Override - public String getInternalName() { - return unloc; - } - } - - public enum AmmoDart implements IAmmoItemEnum { - GPS("ammo_dart"), - NUCLEAR("ammo_dart_nuclear"), - NERF("ammo_dart_nerf"); - - private final Set traits; - private final String unloc; - - private AmmoDart(String unloc, AmmoItemTrait... traits) { - this.traits = safeAssign(traits); - this.unloc = unloc; - } - - @Override - public Set getTraits() { - return traits; - } - - @Override - public String getInternalName() { - return unloc; - } - } - public enum Ammo240Shell implements IAmmoItemEnum { STOCK("ammo_shell"), EXPLOSIVE("ammo_shell_explosive"), @@ -292,480 +80,6 @@ public class ItemAmmoEnums { } } - public enum Ammo9mm implements IAmmoItemEnum { - STOCK("ammo_9mm"), - AP("ammo_9mm_ap", HbmCollection.APType), - DU("ammo_9mm_du", HbmCollection.DUType), - CHLOROPHYTE("ammo_9mm_chlorophyte", HbmCollection.ChlorophyteType), - ROCKET("ammo_9mm_rocket", AmmoItemTrait.PRO_ROCKET, AmmoItemTrait.NEU_UHH); - - private final Set traits; - private final String unloc; - - private Ammo9mm(String unloc, AmmoItemTrait... traits) { - this.traits = safeAssign(traits); - this.unloc = unloc; - } - - private Ammo9mm(String unloc, Set traits) { - this.traits = traits; - this.unloc = unloc; - } - - @Override - public Set getTraits() { - return traits; - } - - @Override - public String getInternalName() { - return unloc; - } - } - - public enum Ammo762NATO implements IAmmoItemEnum { - STOCK("ammo_762"), - AP("ammo_762_ap", HbmCollection.APType), - DU("ammo_762_du", HbmCollection.DUType), - TRACER("ammo_762_tracer", AmmoItemTrait.NEU_TRACER), - PHOSPHORUS("ammo_762_phosphorus", HbmCollection.PhosphorusType), - BLANK("ammo_762_k", AmmoItemTrait.NEU_BLANK); - - private final Set traits; - private final String unloc; - - private Ammo762NATO(String unloc, AmmoItemTrait... traits) { - this.traits = safeAssign(traits); - this.unloc = unloc; - } - - private Ammo762NATO(String unloc, Set traits) { - this.traits = traits; - this.unloc = unloc; - } - - @Override - public Set getTraits() { - return traits; - } - - @Override - public String getInternalName() { - return unloc; - } - } - - public enum Ammo75Bolt implements IAmmoItemEnum { - STOCK("ammo_75bolt"), - INCENDIARY("ammo_75bolt_incendiary"), - HE("ammo_75bolt_he"); - - private final Set traits; - private final String unloc; - - private Ammo75Bolt(String unloc, AmmoItemTrait... traits) { - this.traits = safeAssign(traits); - this.unloc = unloc; - } - - @Override - public Set getTraits() { - return traits; - } - - @Override - public String getInternalName() { - return unloc; - } - } - - public enum Ammo5mm implements IAmmoItemEnum { - STOCK("ammo_5mm"), - EXPLOSIVE("ammo_5mm_explosive", HbmCollection.ExplosiveType), - DU("ammo_5mm_du", HbmCollection.DUType), - STAR("ammo_5mm_star", HbmCollection.StarmetalType), - CHLOROPHYTE("ammo_5mm_chlorophyte", HbmCollection.ChlorophyteType); - - private final Set traits; - private final String unloc; - - private Ammo5mm(String unloc, AmmoItemTrait... traits) { - this.traits = safeAssign(traits); - this.unloc = unloc; - } - - private Ammo5mm(String unloc, Set traits) { - this.traits = traits; - this.unloc = unloc; - } - - @Override - public Set getTraits() { - return traits; - } - - @Override - public String getInternalName() { - return unloc; - } - } - - public enum Ammo556mm implements IAmmoItemEnum { - STOCK("ammo_556"), - GOLD("gun_pm_ammo"), - PHOSPHORUS("ammo_556_phosphorus", HbmCollection.PhosphorusType), - AP("ammo_556_ap", HbmCollection.APType), - DU("ammo_556_du", HbmCollection.DUType), - STAR("ammo_556_star", HbmCollection.StarmetalType), - CHLOROPHYTE("ammo_556_chlorophyte", HbmCollection.ChlorophyteType), - SLEEK("ammo_556_sleek", AmmoItemTrait.NEU_MASKMAN_METEORITE), - TRACER("ammo_556_tracer", AmmoItemTrait.NEU_TRACER), - FLECHETTE("ammo_556_flechette", HbmCollection.FlechetteType), - FLECHETTE_INCENDIARY("ammo_556_flechette_incendiary", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_INCENDIARY, AmmoItemTrait.NEU_LESS_BOUNCY, AmmoItemTrait.CON_WEAR, AmmoItemTrait.CON_PENETRATION), - FLECHETTE_PHOSPHORUS("ammo_556_flechette_phosphorus", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_PHOSPHORUS, AmmoItemTrait.NEU_WARCRIME2, AmmoItemTrait.NEU_LESS_BOUNCY, AmmoItemTrait.CON_WEAR, AmmoItemTrait.CON_PENETRATION), - FLECHETTE_DU("ammo_556_flechette_du", AmmoItemTrait.PRO_HEAVY_DAMAGE, AmmoItemTrait.PRO_PENETRATION, AmmoItemTrait.NEU_HEAVY_METAL, AmmoItemTrait.NEU_LESS_BOUNCY, AmmoItemTrait.CON_HEAVY_WEAR), - FLECHETTE_CHLOROPHYTE("ammo_556_flechette_chlorophyte", HbmCollection.ChlorophyteType), - FLECHETTE_SLEEK("ammo_556_flechette_sleek", AmmoItemTrait.NEU_MASKMAN_METEORITE), - K("ammo_556_k", AmmoItemTrait.NEU_BLANK); - - private final Set traits; - private final String unloc; - - private Ammo556mm(String unloc, AmmoItemTrait... traits) { - this.traits = safeAssign(traits); - this.unloc = unloc; - } - - private Ammo556mm(String unloc, Set traits) { - this.traits = traits; - this.unloc = unloc; - } - - @Override - public Set getTraits() { - return traits; - } - - @Override - public String getInternalName() { - return unloc; - } - } - - public enum Ammo50BMG implements IAmmoItemEnum { - STOCK("ammo_50bmg"), - INCENDIARY("ammo_50bmg_incendiary", HbmCollection.IncendiaryType), - PHOSPHORUS("ammo_50bmg_phosphorus", HbmCollection.PhosphorusType), - EXPLOSIVE("ammo_50bmg_explosive", HbmCollection.ExplosiveType), - AP("ammo_50bmg_ap", HbmCollection.APType), - DU("ammo_50bmg_du", HbmCollection.DUType), - STAR("ammo_50bmg_star", HbmCollection.StarmetalType), - CHLOROPHYTE("ammo_50bmg_chlorophyte", HbmCollection.ChlorophyteType), - SLEEK("ammo_50bmg_sleek", AmmoItemTrait.NEU_MASKMAN_METEORITE), - FLECHETTE("ammo_50bmg_flechette", AmmoItemTrait.PRO_DAMAGE), - FLECHETTE_AM("ammo_50bmg_flechette_am", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.NEU_UHH), - FLECHETTE_PO("ammo_50bmg_flechette_po", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.NEU_UHH); - - private final Set traits; - private final String unloc; - - private Ammo50BMG(String unloc, AmmoItemTrait... traits) { - this.traits = safeAssign(traits); - this.unloc = unloc; - } - - private Ammo50BMG(String unloc, Set traits) { - this.traits = traits; - this.unloc = unloc; - } - - @Override - public Set getTraits() { - return traits; - } - - @Override - public String getInternalName() { - return unloc; - } - } - - public enum Ammo50AE implements IAmmoItemEnum { - STOCK("ammo_50ae"), - AP("ammo_50ae_ap", HbmCollection.APType), - DU("ammo_50ae_du", HbmCollection.DUType), - STAR("ammo_50ae_star", HbmCollection.StarmetalType), - CHLOROPHYTE("ammo_50ae_chlorophyte", HbmCollection.ChlorophyteType); - - private final Set traits; - private final String unloc; - - private Ammo50AE(String unloc, AmmoItemTrait... traits) { - this.traits = safeAssign(traits); - this.unloc = unloc; - } - - private Ammo50AE(String unloc, Set traits) { - this.traits = traits; - this.unloc = unloc; - } - - @Override - public Set getTraits() { - return traits; - } - - @Override - public String getInternalName() { - return unloc; - } - } - - public enum Ammo4Gauge implements IAmmoItemEnum { - STOCK("ammo_4gauge"), - SLUG("ammo_4gauge_slug", AmmoItemTrait.PRO_ACCURATE2, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_WEAR, AmmoItemTrait.CON_SING_PROJECTILE), - FLECHETTE("ammo_4gauge_flechette", HbmCollection.FlechetteType), - FLECHETTE_PHOSPHORUS("ammo_4gauge_flechette_phosphorus", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_PHOSPHORUS, AmmoItemTrait.NEU_WARCRIME2, AmmoItemTrait.NEU_LESS_BOUNCY, AmmoItemTrait.CON_WEAR), - EXPLOSIVE("ammo_4gauge_explosive", AmmoItemTrait.PRO_EXPLOSIVE, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.NEU_40MM, AmmoItemTrait.CON_HEAVY_WEAR, AmmoItemTrait.CON_SING_PROJECTILE), - MINING("ammo_4gauge_semtex", AmmoItemTrait.PRO_EXPLOSIVE, AmmoItemTrait.PRO_MINING, AmmoItemTrait.CON_NO_EXPLODE3, AmmoItemTrait.CON_HEAVY_WEAR, AmmoItemTrait.CON_SING_PROJECTILE), - BALEFIRE("ammo_4gauge_balefire", AmmoItemTrait.PRO_EXPLOSIVE, AmmoItemTrait.PRO_BALEFIRE, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.CON_HEAVY_WEAR, AmmoItemTrait.CON_SING_PROJECTILE), - KAMPF("ammo_4gauge_kampf", AmmoItemTrait.PRO_EXPLOSIVE, AmmoItemTrait.PRO_ROCKET_PROPELLED, AmmoItemTrait.PRO_ACCURATE1, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.CON_WEAR, AmmoItemTrait.CON_SING_PROJECTILE), - CANISTER("ammo_4gauge_canister"), - SLEEK("ammo_4gauge_sleek", AmmoItemTrait.NEU_MASKMAN_FLECHETTE), - CLAW("ammo_4gauge_claw"), - VAMPIRE("ammo_4gauge_vampire"), - VOID("ammo_4gauge_void"), - QUACK("ammo_4gauge_titan", AmmoItemTrait.PRO_MARAUDER, AmmoItemTrait.NEU_NO_CON); - - private final Set traits; - private final String unloc; - - private Ammo4Gauge(String unloc, AmmoItemTrait... traits) { - this.traits = safeAssign(traits); - this.unloc = unloc; - } - - private Ammo4Gauge(String unloc, Set traits) { - this.traits = traits; - this.unloc = unloc; - } - - @Override - public Set getTraits() { - return traits; - } - - @Override - public String getInternalName() { - return unloc; - } - } - - public enum Ammo45ACP implements IAmmoItemEnum { - STOCK("ammo_45"), - AP("ammo_45_ap", HbmCollection.APType), - DU("ammo_45_du", HbmCollection.DUType); - - private final Set traits; - private final String unloc; - - private Ammo45ACP(String unloc, AmmoItemTrait... traits) { - this.traits = safeAssign(traits); - this.unloc = unloc; - } - - private Ammo45ACP(String unloc, Set traits) { - this.traits = traits; - this.unloc = unloc; - } - - @Override - public Set getTraits() { - return traits; - } - - @Override - public String getInternalName() { - return unloc; - } - } - - public enum Ammo44Magnum implements IAmmoItemEnum { - STOCK("ammo_44"), - AP("ammo_44_ap", HbmCollection.APType), - DU("ammo_44_du", HbmCollection.DUType), - PHOSPHORUS("ammo_44_phosphorus", HbmCollection.PhosphorusType), - STAR("ammo_44_star", HbmCollection.StarmetalType), - CHLOROPHYTE("ammo_44_chlorophyte", HbmCollection.ChlorophyteType), - PIP("ammo_44_pip", AmmoItemTrait.NEU_BOXCAR, AmmoItemTrait.CON_DAMAGE), - BJ("ammo_44_bj", AmmoItemTrait.NEU_BOAT, AmmoItemTrait.CON_DAMAGE), - SILVER("ammo_44_silver", AmmoItemTrait.NEU_BUILDING, AmmoItemTrait.CON_DAMAGE), - ROCKET("ammo_44_rocket", AmmoItemTrait.PRO_ROCKET, AmmoItemTrait.NEU_UHH); - - private final Set traits; - private final String unloc; - - private Ammo44Magnum(String unloc, AmmoItemTrait... traits) { - this.traits = safeAssign(traits); - this.unloc = unloc; - } - - private Ammo44Magnum(String unloc, Set traits) { - this.traits = traits; - this.unloc = unloc; - } - - @Override - public Set getTraits() { - return traits; - } - - @Override - public String getInternalName() { - return unloc; - } - } - - public enum Ammo357Magnum implements IAmmoItemEnum { - IRON("gun_revolver_iron_ammo"), - LEAD("gun_revolver_ammo"), - NUCLEAR("gun_revolver_lead_ammo"), - GOLD("gun_revolver_gold_ammo"), - DESH("ammo_357_desh", AmmoItemTrait.PRO_FIT_357, AmmoItemTrait.PRO_DAMAGE_SLIGHT), - SCHRABIDIUM("gun_revolver_schrabidium_ammo"), - STEEL("gun_revolver_cursed_ammo"), - NIGHTMARE1("gun_revolver_nightmare_ammo"), - NIGHTMARE2("gun_revolver_nightmare2_ammo"); - - private final Set traits; - private final String unloc; - - private Ammo357Magnum(String unloc, AmmoItemTrait... traits) { - this.traits = safeAssign(traits); - this.unloc = unloc; - } - - @Override - public Set getTraits() { - return traits; - } - - @Override - public String getInternalName() { - return unloc; - } - } - - public enum Ammo22LR implements IAmmoItemEnum { - STOCK("ammo_22lr"), - AP("ammo_22lr_ap", HbmCollection.APType), - CHLOROPHYTE("ammo_22lr_chlorophyte", HbmCollection.ChlorophyteType); - - private final Set traits; - private final String unloc; - - private Ammo22LR(String unloc, AmmoItemTrait... traits) { - this.traits = safeAssign(traits); - this.unloc = unloc; - } - - private Ammo22LR(String unloc, Set traits) { - this.traits = traits; - this.unloc = unloc; - } - - @Override - public Set getTraits() { - return traits; - } - - @Override - public String getInternalName() { - return unloc; - } - } - - public enum Ammo20Gauge implements IAmmoItemEnum { - STOCK("ammo_20gauge"), - SLUG("ammo_20gauge_slug", AmmoItemTrait.PRO_ACCURATE2, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_WEAR, AmmoItemTrait.CON_SING_PROJECTILE), - FLECHETTE("ammo_20gauge_flechette", HbmCollection.FlechetteType), - INCENDIARY("ammo_20gauge_incendiary", AmmoItemTrait.PRO_INCENDIARY, AmmoItemTrait.CON_WEAR), - SHRAPNEL("ammo_20gauge_shrapnel", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.NEU_MORE_BOUNCY, AmmoItemTrait.CON_WEAR), - EXPLOSIVE("ammo_20gauge_explosive", HbmCollection.ExplosiveType), - CAUSTIC("ammo_20gauge_caustic", AmmoItemTrait.PRO_TOXIC, AmmoItemTrait.PRO_CAUSTIC, AmmoItemTrait.NEU_NO_BOUNCE, AmmoItemTrait.CON_HEAVY_WEAR), - SHOCK("ammo_20gauge_shock", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_STUNNING, AmmoItemTrait.PRO_EMP, AmmoItemTrait.NEU_NO_BOUNCE, AmmoItemTrait.CON_HEAVY_WEAR), - WITHER("ammo_20gauge_wither", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_WITHERING), - SLEEK("ammo_20gauge_sleek", AmmoItemTrait.NEU_MASKMAN_FLECHETTE); - - private final Set traits; - private final String unloc; - - private Ammo20Gauge(String unloc, AmmoItemTrait... traits) { - this.traits = safeAssign(traits); - this.unloc = unloc; - } - - private Ammo20Gauge(String unloc, Set traits) { - this.traits = traits; - this.unloc = unloc; - } - - @Override - public Set getTraits() { - return traits; - } - - @Override - public String getInternalName() { - return unloc; - } - } - - public enum Ammo12Gauge implements IAmmoItemEnum { - STOCK("ammo_12gauge"), - INCENDIARY("ammo_12gauge_incendiary", AmmoItemTrait.PRO_INCENDIARY, AmmoItemTrait.CON_WEAR), - SHRAPNEL("ammo_12gauge_shrapnel", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.NEU_MORE_BOUNCY, AmmoItemTrait.CON_WEAR), - DU("ammo_12gauge_du", AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_PENETRATION, AmmoItemTrait.NEU_HEAVY_METAL, AmmoItemTrait.CON_HEAVY_WEAR), - MARAUDER("ammo_12gauge_marauder", AmmoItemTrait.PRO_MARAUDER, AmmoItemTrait.NEU_NO_CON), - SLEEK("ammo_12gauge_sleek", AmmoItemTrait.NEU_MASKMAN_FLECHETTE), - PERCUSSION("ammo_12gauge_percussion", AmmoItemTrait.PRO_PERCUSSION, AmmoItemTrait.CON_NO_PROJECTILE); - - private final Set traits; - private final String unloc; - - private Ammo12Gauge(String unloc, AmmoItemTrait... traits) { - this.traits = safeAssign(traits); - this.unloc = unloc; - } - - @Override - public Set getTraits() { - return traits; - } - - @Override - public String getInternalName() { - return unloc; - } - } - - public enum AmmoCoilgun implements IAmmoItemEnum { - STOCK("ammo_coilgun"), - DU("ammo_coilgun_du", AmmoItemTrait.PRO_HEAVY_DAMAGE, AmmoItemTrait.CON_HEAVY_WEAR), - RUBBER("ammo_coilgun_rubber", AmmoItemTrait.NEU_MORE_BOUNCY, AmmoItemTrait.CON_DAMAGE); - - private final Set traits; - private final String unloc; - - private AmmoCoilgun(String unloc, AmmoItemTrait... traits) { - this.traits = safeAssign(traits); - this.unloc = unloc; - } - - @Override public Set getTraits() { return traits; } - @Override public String getInternalName() { return unloc; } - } - public interface IAmmoItemEnum { public Set getTraits(); public String getInternalName(); diff --git a/src/main/java/com/hbm/items/ItemCustomLore.java b/src/main/java/com/hbm/items/ItemCustomLore.java index b8598c288..15dab0dd7 100644 --- a/src/main/java/com/hbm/items/ItemCustomLore.java +++ b/src/main/java/com/hbm/items/ItemCustomLore.java @@ -51,23 +51,27 @@ public class ItemCustomLore extends Item { if(this == ModItems.undefined) { - if(player.worldObj.rand.nextInt(10) == 0) { - list.add(EnumChatFormatting.DARK_RED + "UNDEFINED"); - } else { - Random rand = new Random(System.currentTimeMillis() / 500); - - if(setSize == 0) - setSize = Item.itemRegistry.getKeys().size(); - - int r = rand.nextInt(setSize); - - Item item = Item.getItemById(r); - - if(item != null) { - list.add(new ItemStack(item).getDisplayName()); + try { + if(player.worldObj.rand.nextInt(10) == 0) { + list.add(EnumChatFormatting.DARK_RED + "UNDEFINED"); } else { - list.add(EnumChatFormatting.RED + "ERROR #" + r); + Random rand = new Random(System.currentTimeMillis() / 500); + + if(setSize == 0) + setSize = Item.itemRegistry.getKeys().size(); + + int r = rand.nextInt(setSize); + + Item item = Item.getItemById(r); + + if(item != null) { + list.add(new ItemStack(item).getDisplayName()); + } else { + list.add(EnumChatFormatting.RED + "ERROR #" + r); + } } + } catch(Exception ex) { + list.add(EnumChatFormatting.DARK_RED + "UNDEFINED"); } } } diff --git a/src/main/java/com/hbm/items/ItemEnumMulti.java b/src/main/java/com/hbm/items/ItemEnumMulti.java index 8085625d1..3d677b7ff 100644 --- a/src/main/java/com/hbm/items/ItemEnumMulti.java +++ b/src/main/java/com/hbm/items/ItemEnumMulti.java @@ -3,6 +3,7 @@ package com.hbm.items; import java.util.List; import java.util.Locale; +import com.hbm.interfaces.IOrderedEnum; import com.hbm.lib.RefStrings; import com.hbm.util.EnumUtil; @@ -31,8 +32,12 @@ public class ItemEnumMulti extends Item { @Override @SideOnly(Side.CLIENT) public void getSubItems(Item item, CreativeTabs tab, List list) { - for(int i = 0; i < theEnum.getEnumConstants().length; i++) { - list.add(new ItemStack(item, 1, i)); + + Enum[] order = theEnum.getEnumConstants(); + if(order[0] instanceof IOrderedEnum) order = ((IOrderedEnum) order[0]).getOrder(); + + for(int i = 0; i < order.length; i++) { + list.add(new ItemStack(item, 1, order[i].ordinal())); } } diff --git a/src/main/java/com/hbm/items/ItemEnums.java b/src/main/java/com/hbm/items/ItemEnums.java index 8e4592d72..e794945d0 100644 --- a/src/main/java/com/hbm/items/ItemEnums.java +++ b/src/main/java/com/hbm/items/ItemEnums.java @@ -51,7 +51,7 @@ public class ItemEnums { } public static enum EnumChunkType { - RARE + RARE, MALACHITE } public static enum EnumAchievementType { @@ -77,6 +77,10 @@ public class ItemEnums { } public static enum EnumSecretType { - CANISTER, CONTROLLER + CANISTER, CONTROLLER, SELENIUM_STEEL + } + + public static enum EnumCasingType { + SMALL, LARGE, SMALL_STEEL, LARGE_STEEL, SHOTSHELL, BUCKSHOT, BUCKSHOT_ADVANCED } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index b7789ba87..a4da0ac16 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -36,7 +36,7 @@ import com.hbm.items.weapon.ItemCustomMissilePart.*; import com.hbm.items.weapon.ItemMissile.MissileFormFactor; import com.hbm.items.weapon.ItemMissile.MissileFuel; import com.hbm.items.weapon.ItemMissile.MissileTier; -import com.hbm.items.weapon.gununified.ItemEnergyGunBase; +import com.hbm.items.weapon.sedna.factory.GunFactory; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.potion.HbmPotion; @@ -166,19 +166,9 @@ public class ModItems { public static Item nugget_gh336; public static Item ingot_australium; - public static Item ingot_weidanium; - public static Item ingot_reiium; - public static Item ingot_unobtainium; - public static Item ingot_daffergon; - public static Item ingot_verticium; public static Item nugget_australium; public static Item nugget_australium_lesser; public static Item nugget_australium_greater; - public static Item nugget_weidanium; - public static Item nugget_reiium; - public static Item nugget_unobtainium; - public static Item nugget_daffergon; - public static Item nugget_verticium; public static Item ingot_desh; public static Item nugget_desh; @@ -189,6 +179,10 @@ public class ModItems { public static Item nugget_tetraneutronium; public static Item powder_tetraneutronium; public static Item ingot_starmetal; + public static Item ingot_gunmetal; + public static Item plate_gunmetal; + public static Item ingot_weaponsteel; + public static Item plate_weaponsteel; public static Item ingot_saturnite; public static Item plate_saturnite; public static Item ingot_ferrouranium; @@ -499,11 +493,6 @@ public class ModItems { public static Item powder_sodium; public static Item powder_australium; - public static Item powder_weidanium; - public static Item powder_reiium; - public static Item powder_unobtainium; - public static Item powder_daffergon; - public static Item powder_verticium; public static Item powder_dura_steel; public static Item powder_polymer; @@ -576,15 +565,6 @@ public class ModItems { public static Item rtg_unit; public static Item levitation_unit; - public static Item wire_aluminium; - public static Item wire_copper; - public static Item wire_red_copper; - public static Item wire_tungsten; - public static Item wire_gold; - public static Item wire_schrabidium; - public static Item wire_advanced_alloy; - public static Item wire_magnetized_tungsten; - public static Item coil_advanced_alloy; public static Item coil_advanced_torus; public static Item coil_magnetized_tungsten; @@ -612,36 +592,10 @@ public class ModItems { public static Item mechanism_launcher_1; public static Item mechanism_launcher_2; public static Item mechanism_special; - - public static Item casing_357; - public static Item casing_44; - public static Item casing_9; - public static Item casing_50; - public static Item casing_buckshot; - public static Item assembly_iron; - public static Item assembly_steel; - public static Item assembly_lead; - public static Item assembly_gold; - public static Item assembly_schrabidium; - public static Item assembly_nightmare; - public static Item assembly_desh; - //public static Item assembly_pip; - public static Item assembly_nopip; - public static Item assembly_smg; - public static Item assembly_556; - public static Item assembly_762; - public static Item assembly_45; - public static Item assembly_uzi; - public static Item assembly_actionexpress; - public static Item assembly_calamity; - public static Item assembly_lacunae; + public static Item assembly_nuke; - public static Item assembly_luna; - public static Item folly_shell; - public static Item folly_bullet; - public static Item folly_bullet_nuclear; - public static Item folly_bullet_du; + public static Item casing; public static Item wiring_red_copper; public static Item shell; @@ -761,11 +715,19 @@ public class ModItems { public static Item mold_base; public static Item mold; public static Item scraps; + public static Item ingot_raw; public static Item plate_cast; public static Item plate_welded; public static Item heavy_component; public static Item wire_fine; public static Item wire_dense; + public static Item part_barrel_light; + public static Item part_barrel_heavy; + public static Item part_receiver_light; + public static Item part_receiver_heavy; + public static Item part_mechanism; + public static Item part_stock; + public static Item part_grip; public static Item part_lithium; public static Item part_beryllium; @@ -794,7 +756,6 @@ public class ModItems { public static Item pellet_rtg_actinium; public static Item pellet_rtg_polonium; public static Item pellet_rtg_americium; - public static Item pellet_rtg_berkelium; public static Item pellet_rtg_gold; public static Item pellet_rtg_lead; @@ -862,6 +823,8 @@ public class ModItems { public static Item demon_core_open; public static Item demon_core_closed; + public static Item pa_coil; + public static Item particle_empty; public static Item particle_hydrogen; public static Item particle_copper; @@ -1129,6 +1092,7 @@ public class ModItems { public static ItemRBMKRod rbmk_fuel_zfb_am_mix; public static ItemRBMKRod rbmk_fuel_drx; public static ItemRBMKRod rbmk_fuel_test; + //public static ItemRBMKRod rbmk_fuel_curve; public static ItemRBMKPellet rbmk_pellet_ueu; public static ItemRBMKPellet rbmk_pellet_meu; public static ItemRBMKPellet rbmk_pellet_heu233; @@ -1196,6 +1160,7 @@ public class ModItems { public static Item containment_box; public static Item plastic_bag; + public static Item casing_bag; public static Item test_nuke_igniter; public static Item test_nuke_propellant; @@ -1248,6 +1213,7 @@ public class ModItems { public static Item coupling_tool; public static Item drone_linker; public static Item radar_linker; + public static Item settings_tool; public static Item template_folder; public static Item journal_pip; @@ -1476,144 +1442,72 @@ public class ModItems { public static Item sat_relay; public static ItemEnumMulti ammo_misc; - public static ItemEnumMulti ammo_12gauge; - public static ItemEnumMulti ammo_20gauge; - public static ItemEnumMulti ammo_4gauge; - public static ItemEnumMulti ammo_357; - public static ItemEnumMulti ammo_44; - public static ItemEnumMulti ammo_5mm; - public static ItemEnumMulti ammo_9mm; - public static ItemEnumMulti ammo_45; - public static ItemEnumMulti ammo_556; - public static ItemEnumMulti ammo_762; - public static ItemEnumMulti ammo_22lr; - public static ItemEnumMulti ammo_50ae; - public static ItemEnumMulti ammo_50bmg; - public static ItemEnumMulti ammo_75bolt; - public static ItemEnumMulti ammo_rocket; - public static ItemEnumMulti ammo_grenade; public static ItemEnumMulti ammo_shell; - public static ItemEnumMulti ammo_nuke; - public static ItemEnumMulti ammo_fuel; public static ItemEnumMulti ammo_fireext; - public static ItemEnumMulti ammo_dart; - public static ItemEnumMulti ammo_stinger_rocket; - public static ItemEnumMulti ammo_luna_sniper; - public static ItemEnumMulti ammo_coilgun; - public static Item ammo_cell; - - public static Item ammo_folly; - public static Item ammo_folly_nuclear; - public static Item ammo_folly_du; public static Item ammo_dgk; public static Item ammo_arty; public static Item ammo_himars; - public static Item gun_rpg; - public static Item gun_karl; - 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; - public static Item gun_revolver_saturnite; - public static Item gun_revolver_gold; - public static Item gun_revolver_schrabidium; - public static Item gun_revolver_cursed; - public static Item gun_revolver_nightmare; - public static Item gun_revolver_nightmare2; - public static Item gun_revolver_pip; - public static Item gun_revolver_nopip; - public static Item gun_revolver_blackjack; - public static Item gun_revolver_silver; - public static Item gun_revolver_red; - public static Item gun_bio_revolver; - public static Item gun_deagle; - public static Item gun_flechette; - public static Item gun_ar15; - public static Item gun_calamity; - public static Item gun_minigun; - public static Item gun_lacunae; - public static Item gun_folly; - public static Item gun_fatman; - public static Item gun_proto; - public static Item gun_mirv; - public static Item gun_bf; - public static Item gun_chemthrower; - public static Item gun_mp40; - public static Item gun_thompson; - public static Item gun_uzi; - public static Item gun_uzi_silencer; - public static Item gun_uzi_saturnite; - public static Item gun_uzi_saturnite_silencer; - public static Item gun_uboinik; - public static Item gun_remington; - public static Item gun_spas12; - public static Item gun_supershotgun; - public static Item gun_benelli; - public static Item gun_ks23; - public static Item gun_sauer; - public static Item gun_lever_action; - public static Item gun_lever_action_dark; - public static Item gun_lever_action_sonata; - public static Item gun_bolt_action; - public static Item gun_bolt_action_green; - public static Item gun_bolt_action_saturnite; - public static Item gun_mymy; public static Item gun_b92; public static Item gun_b92_ammo; - public static Item gun_b93; - public static Item gun_coilgun; - public static Item gun_xvl1456; - public static Item gun_xvl1456_ammo; - public static Item gun_osipr; - public static Item gun_osipr_ammo; - public static Item gun_osipr_ammo2; - public static Item gun_immolator; - public static Item gun_immolator_ammo; - public static Item gun_flamer; - public static Item gun_cryolator; public static Item gun_cryocannon; public static Item gun_cryolator_ammo; public static Item gun_fireext; - public static Item gun_mp; - public static Item gun_bolter; - public static Item gun_bolter_digamma; - public static Item gun_zomg; - public static Item gun_super_shotgun; - public static Item gun_moist_nugget; - public static Item gun_revolver_inverted; - public static Item gun_emp; - public static Item gun_emp_ammo; - public static Item gun_jack; - public static Item gun_jack_ammo; - public static Item gun_spark; - public static Item gun_spark_ammo; - public static Item gun_hp; - public static Item gun_hp_ammo; - public static Item gun_euthanasia; - public static Item gun_euthanasia_ammo; - public static Item gun_dash; - public static Item gun_dash_ammo; - public static Item gun_twigun; - public static Item gun_twigun_ammo; - public static Item gun_defabricator; - public static Item gun_defabricator_ammo; - public static Item gun_vortex; - public static Item gun_waluigi; - public static Item gun_darter; - public static Item gun_glass_cannon; + + public static Item gun_debug; + public static Item ammo_debug; + + public static Item gun_pepperbox; + public static Item gun_light_revolver; + public static Item gun_light_revolver_atlas; + public static Item gun_light_revolver_dani; + public static Item gun_henry; + public static Item gun_greasegun; + public static Item gun_maresleg; + public static Item gun_maresleg_akimbo; + public static Item gun_maresleg_broken; + public static Item gun_flaregun; + public static Item gun_heavy_revolver; + public static Item gun_heavy_revolver_lilmac; + public static Item gun_heavy_revolver_protege; + public static Item gun_carbine; + public static Item gun_am180; + public static Item gun_liberator; + public static Item gun_congolake; + public static Item gun_flamer; + public static Item gun_flamer_topaz; + public static Item gun_flamer_daybreaker; + public static Item gun_uzi; + public static Item gun_uzi_akimbo; + public static Item gun_spas12; + public static Item gun_panzerschreck; + public static Item gun_g3; + public static Item gun_stinger; + public static Item gun_chemthrower; public static Item gun_m2; - public static Item gun_lunatic_marksman; - public static Item gun_uac_pistol; - - // We'll figure this part out later - //public static Item gun_llr, gun_mlr, gun_hlr, gun_twr, gun_lunatic, gun_lunatic_shotty; - //public static Item gun_uac_pistol, gun_uac_dmr, gun_uac_carbine, gun_uac_lmg; - //public static Item gun_benelli, gun_benelli_mod, gun_g36, spear_bishamonten, pagoda; + public static Item gun_autoshotgun; + public static Item gun_autoshotgun_shredder; + public static Item gun_autoshotgun_sexy; + public static Item gun_quadro; + public static Item gun_lag; + public static Item gun_minigun; + public static Item gun_minigun_lacunae; + public static Item gun_missile_launcher; + public static Item gun_tesla_cannon; + public static Item gun_stg77; + public static Item gun_tau; + public static Item gun_fatman; + public static Item gun_lasrifle; + public static Item gun_coilgun; + public static Item gun_hangman; + public static Item gun_bolter; + public static Item gun_folly; + public static Item gun_double_barrel; + public static Item gun_double_barrel_sacred_dragon; + + public static Item ammo_standard; + public static Item ammo_secret; public static Item crucible; @@ -2246,38 +2140,6 @@ public class ModItems { public static Item loot_10; public static Item loot_15; public static Item loot_misc; - - public static Item clip_revolver_iron; - public static Item clip_revolver; - public static Item clip_revolver_gold; - public static Item clip_revolver_lead; - public static Item clip_revolver_schrabidium; - public static Item clip_revolver_cursed; - public static Item clip_revolver_nightmare; - public static Item clip_revolver_nightmare2; - public static Item clip_revolver_pip; - public static Item clip_revolver_nopip; - public static Item clip_rpg; - public static Item clip_stinger; - public static Item clip_fatman; - public static Item clip_mirv; - public static Item clip_bf; - public static Item clip_mp40; - public static Item clip_uzi; - public static Item clip_uboinik; - public static Item clip_lever_action; - public static Item clip_bolt_action; - public static Item clip_osipr; - public static Item clip_immolator; - public static Item clip_cryolator; - public static Item clip_mp; - public static Item clip_xvl1456; - public static Item clip_emp; - public static Item clip_jack; - public static Item clip_spark; - public static Item clip_hp; - public static Item clip_euthanasia; - public static Item clip_defabricator; public static Item ammo_container; @@ -2287,7 +2149,6 @@ public class ModItems { public static Item detonator_laser; public static Item detonator_deadman; public static Item detonator_de; - public static Item crate_caller; public static Item bomb_caller; public static Item meteor_remote; public static Item anchor_remote; @@ -2336,6 +2197,7 @@ public class ModItems { public static Item book_lore; public static Item holotape_image; public static Item holotape_damaged; + public static Item clay_tablet; public static Item polaroid; public static Item glitch; @@ -2346,14 +2208,6 @@ public class ModItems { public static Item book_lemegeton; public static Item burnt_bark; - public static Item b_smoke1; - public static Item b_smoke2; - public static Item b_smoke3; - public static Item b_smoke4; - public static Item b_smoke5; - public static Item b_smoke6; - public static Item b_smoke7; - public static Item b_smoke8; public static Item chlorine1; public static Item chlorine2; public static Item chlorine3; @@ -2386,34 +2240,6 @@ public class ModItems { public static Item orange6; public static Item orange7; public static Item orange8; - /*public static Item gasflame1; - public static Item gasflame2; - public static Item gasflame3; - public static Item gasflame4; - public static Item gasflame5; - public static Item gasflame6; - public static Item gasflame7; - public static Item gasflame8;*/ - public static Item flame_1; - public static Item flame_2; - public static Item flame_3; - public static Item flame_4; - public static Item flame_5; - public static Item flame_6; - public static Item flame_7; - public static Item flame_8; - public static Item flame_9; - public static Item flame_10; - public static Item ln2_1; - public static Item ln2_2; - public static Item ln2_3; - public static Item ln2_4; - public static Item ln2_5; - public static Item ln2_6; - public static Item ln2_7; - public static Item ln2_8; - public static Item ln2_9; - public static Item ln2_10; public static Item nothing; public static Item achievement_icon; @@ -2519,7 +2345,6 @@ public class ModItems { ingot_semtex = new ItemLemon(4, 5, true).setUnlocalizedName("ingot_semtex").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_semtex"); ingot_c4 = new Item().setUnlocalizedName("ingot_c4").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_c4"); ingot_phosphorus = new Item().setUnlocalizedName("ingot_phosphorus").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_phosphorus"); - wire_advanced_alloy = new Item().setUnlocalizedName("wire_advanced_alloy").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_advanced_alloy"); coil_advanced_alloy = new Item().setUnlocalizedName("coil_advanced_alloy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_advanced_alloy"); coil_advanced_torus = new Item().setUnlocalizedName("coil_advanced_torus").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_advanced_torus"); ingot_magnetized_tungsten = new Item().setUnlocalizedName("ingot_magnetized_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_magnetized_tungsten"); @@ -2618,6 +2443,10 @@ public class ModItems { nugget_dineutronium = new ItemCustomLore().setUnlocalizedName("nugget_dineutronium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_dineutronium"); powder_dineutronium = new ItemCustomLore().setUnlocalizedName("powder_dineutronium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_dineutronium"); ingot_starmetal = new ItemStarmetal().setUnlocalizedName("ingot_starmetal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_starmetal"); + ingot_gunmetal = new Item().setUnlocalizedName("ingot_gunmetal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_gunmetal"); + plate_gunmetal = new Item().setUnlocalizedName("plate_gunmetal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_gunmetal"); + ingot_weaponsteel = new Item().setUnlocalizedName("ingot_weaponsteel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_gunsteel"); + plate_weaponsteel = new Item().setUnlocalizedName("plate_weaponsteel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_gunsteel"); ingot_saturnite = new ItemCustomLore().setRarity(EnumRarity.rare).setUnlocalizedName("ingot_saturnite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_saturnite"); plate_saturnite = new ItemCustomLore().setRarity(EnumRarity.rare).setUnlocalizedName("plate_saturnite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_saturnite"); ingot_ferrouranium = new ItemCustomLore().setUnlocalizedName("ingot_ferrouranium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_ferrouranium"); @@ -2691,19 +2520,9 @@ public class ModItems { nugget_gh336 = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("nugget_gh336").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_gh336"); ingot_australium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("ingot_australium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_australium"); - ingot_weidanium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("ingot_weidanium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":ingot_weidanium"); - ingot_reiium = new ItemCustomLore().setUnlocalizedName("ingot_reiium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":ingot_reiium"); - ingot_unobtainium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("ingot_unobtainium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":ingot_unobtainium"); - ingot_daffergon = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("ingot_daffergon").setCreativeTab(null).setTextureName(RefStrings.MODID + ":ingot_daffergon"); - ingot_verticium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("ingot_verticium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":ingot_verticium"); nugget_australium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("nugget_australium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_australium"); nugget_australium_lesser = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("nugget_australium_lesser").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_australium_lesser"); nugget_australium_greater = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("nugget_australium_greater").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_australium_greater"); - nugget_weidanium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("nugget_weidanium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":nugget_weidanium"); - nugget_reiium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("nugget_reiium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":nugget_reiium"); - nugget_unobtainium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("nugget_unobtainium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":nugget_unobtainium"); - nugget_daffergon = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("nugget_daffergon").setCreativeTab(null).setTextureName(RefStrings.MODID + ":nugget_daffergon"); - nugget_verticium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("nugget_verticium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":nugget_verticium"); nugget_th232 = new Item().setUnlocalizedName("nugget_th232").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_th232"); nugget_uranium = new Item().setUnlocalizedName("nugget_uranium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_uranium"); @@ -2731,8 +2550,6 @@ public class ModItems { nugget_actinium = new Item().setUnlocalizedName("nugget_actinium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_actinium"); plate_titanium = new Item().setUnlocalizedName("plate_titanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_titanium"); plate_aluminium = new Item().setUnlocalizedName("plate_aluminium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_aluminium"); - wire_red_copper = new Item().setUnlocalizedName("wire_red_copper").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_red_copper"); - wire_tungsten = new ItemCustomLore().setUnlocalizedName("wire_tungsten").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_tungsten"); neutron_reflector = new Item().setUnlocalizedName("neutron_reflector").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":neutron_reflector"); nugget_lead = new Item().setUnlocalizedName("nugget_lead").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_lead"); ingot_bismuth = new ItemCustomLore().setUnlocalizedName("ingot_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_bismuth"); @@ -2845,22 +2662,17 @@ public class ModItems { powder_zirconium = new Item().setUnlocalizedName("powder_zirconium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_zirconium"); powder_sodium = new Item().setUnlocalizedName("powder_sodium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_sodium"); powder_power = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("powder_power").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_energy_alt"); - powder_iodine = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("powder_iodine").setCreativeTab(null).setTextureName(RefStrings.MODID + ":powder_iodine"); - powder_thorium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("powder_thorium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":powder_thorium"); + powder_iodine = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("powder_iodine").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_iodine"); + powder_thorium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("powder_thorium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_thorium"); powder_neodymium = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("powder_neodymium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_neodymium"); - powder_astatine = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("powder_astatine").setCreativeTab(null).setTextureName(RefStrings.MODID + ":powder_astatine"); - powder_caesium = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("powder_caesium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":powder_caesium"); + powder_astatine = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("powder_astatine").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_astatine"); + powder_caesium = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("powder_caesium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_caesium"); powder_australium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("powder_australium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_australium"); - powder_weidanium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("powder_weidanium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":powder_weidanium"); - powder_reiium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("powder_reiium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":powder_reiium"); - powder_unobtainium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("powder_unobtainium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":powder_unobtainium"); - powder_daffergon = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("powder_daffergon").setCreativeTab(null).setTextureName(RefStrings.MODID + ":powder_daffergon"); - powder_verticium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("powder_verticium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":powder_verticium"); - powder_strontium = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("powder_strontium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":powder_strontium"); + powder_strontium = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("powder_strontium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_strontium"); powder_cobalt = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("powder_cobalt").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_cobalt"); - powder_bromine = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("powder_bromine").setCreativeTab(null).setTextureName(RefStrings.MODID + ":powder_bromine"); + powder_bromine = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("powder_bromine").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_bromine"); powder_niobium = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("powder_niobium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_niobium"); - powder_tennessine = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("powder_tennessine").setCreativeTab(null).setTextureName(RefStrings.MODID + ":powder_tennessine"); + powder_tennessine = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("powder_tennessine").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_tennessine"); powder_cerium = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("powder_cerium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_cerium"); powder_dura_steel = new ItemCustomLore().setUnlocalizedName("powder_dura_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_dura_steel"); powder_polymer = new ItemCustomLore().setUnlocalizedName("powder_polymer").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_polymer"); @@ -2929,11 +2741,6 @@ public class ModItems { reactor_core = new Item().setUnlocalizedName("reactor_core").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":reactor_core"); rtg_unit = new Item().setUnlocalizedName("rtg_unit").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":rtg_unit"); levitation_unit = new Item().setUnlocalizedName("levitation_unit").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":levitation_unit"); - wire_aluminium = new Item().setUnlocalizedName("wire_aluminium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_aluminium"); - wire_copper = new Item().setUnlocalizedName("wire_copper").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_copper"); - wire_gold = new Item().setUnlocalizedName("wire_gold").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_gold"); - wire_schrabidium = new ItemCustomLore().setRarity(EnumRarity.rare).setUnlocalizedName("wire_schrabidium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_schrabidium"); - wire_magnetized_tungsten = new Item().setUnlocalizedName("wire_magnetized_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_magnetized_tungsten"); coil_magnetized_tungsten = new Item().setUnlocalizedName("coil_magnetized_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_magnetized_tungsten"); coil_gold = new Item().setUnlocalizedName("coil_gold").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_gold"); coil_gold_torus = new Item().setUnlocalizedName("coil_gold_torus").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_gold_torus"); @@ -3029,33 +2836,8 @@ public class ModItems { mechanism_launcher_1 = new Item().setUnlocalizedName("mechanism_launcher_1").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":mechanism_5"); mechanism_launcher_2 = new Item().setUnlocalizedName("mechanism_launcher_2").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":mechanism_6"); mechanism_special = new Item().setUnlocalizedName("mechanism_special").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":mechanism_7"); - casing_357 = new Item().setUnlocalizedName("casing_357").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":casing_357"); - casing_44 = new Item().setUnlocalizedName("casing_44").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":casing_44"); - casing_9 = new Item().setUnlocalizedName("casing_9").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":casing_9"); - casing_50 = new Item().setUnlocalizedName("casing_50").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":casing_50"); - casing_buckshot = new Item().setUnlocalizedName("casing_buckshot").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":casing_buckshot"); - assembly_iron = new Item().setUnlocalizedName("assembly_iron").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_iron"); - assembly_steel = new Item().setUnlocalizedName("assembly_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_steel"); - assembly_lead = new Item().setUnlocalizedName("assembly_lead").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_lead"); - assembly_gold = new Item().setUnlocalizedName("assembly_gold").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_gold"); - assembly_schrabidium = new Item().setUnlocalizedName("assembly_schrabidium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_schrabidium"); - assembly_nightmare = new Item().setUnlocalizedName("assembly_nightmare").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_nightmare"); - assembly_desh = new Item().setUnlocalizedName("assembly_desh").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_desh"); - assembly_nopip = new Item().setUnlocalizedName("assembly_nopip").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_nopip"); - assembly_smg = new Item().setUnlocalizedName("assembly_smg").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_smg"); - assembly_556 = new Item().setUnlocalizedName("assembly_556").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_556"); - assembly_762 = new Item().setUnlocalizedName("assembly_762").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_762"); - assembly_45 = new Item().setUnlocalizedName("assembly_45").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_45"); - assembly_uzi = new Item().setUnlocalizedName("assembly_uzi").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_uzi"); - assembly_actionexpress = new Item().setUnlocalizedName("assembly_actionexpress").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_actionexpress"); - assembly_calamity = new Item().setUnlocalizedName("assembly_calamity").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_calamity"); - assembly_lacunae = new Item().setUnlocalizedName("assembly_lacunae").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_lacunae"); assembly_nuke = new Item().setUnlocalizedName("assembly_nuke").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_nuke"); - assembly_luna = new Item().setUnlocalizedName("assembly_luna").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":assembly_luna"); - folly_shell = new Item().setUnlocalizedName("folly_shell").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":folly_shell"); - folly_bullet = new Item().setUnlocalizedName("folly_bullet").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":folly_bullet"); - folly_bullet_nuclear = new Item().setUnlocalizedName("folly_bullet_nuclear").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":folly_bullet_nuclear"); - folly_bullet_du = new Item().setUnlocalizedName("folly_bullet_du").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":folly_bullet_du"); + casing = new ItemEnumMulti(ItemEnums.EnumCasingType.class, true, true).setUnlocalizedName("casing").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":casing"); wiring_red_copper = new ItemWiring().setUnlocalizedName("wiring_red_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wiring_red_copper"); @@ -3068,7 +2850,6 @@ public class ModItems { pellet_rtg_cobalt = new ItemRTGPellet(15).setDecays(DepletedRTGMaterial.NICKEL, (long) (RTGUtil.getLifespan(5.3F, HalfLifeType.MEDIUM, false) * 1.5)).setUnlocalizedName("pellet_rtg_cobalt").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pellet_rtg_cobalt"); pellet_rtg_actinium = new ItemRTGPellet(20).setDecays(DepletedRTGMaterial.LEAD, (long) (RTGUtil.getLifespan(21.8F, HalfLifeType.MEDIUM, false) * 1.5)).setUnlocalizedName("pellet_rtg_actinium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pellet_rtg_actinium"); pellet_rtg_americium = new ItemRTGPellet(20).setDecays(DepletedRTGMaterial.NEPTUNIUM, (long) (RTGUtil.getLifespan(4.7F, HalfLifeType.LONG, false) * 1.5)).setUnlocalizedName("pellet_rtg_americium").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_americium"); - pellet_rtg_berkelium = new ItemRTGPellet(20).setUnlocalizedName("pellet_rtg_berkelium").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_berkelium"); pellet_rtg_polonium = new ItemRTGPellet(50).setDecays(DepletedRTGMaterial.LEAD, (long) (RTGUtil.getLifespan(138.0F, HalfLifeType.SHORT, false) * 1.5)).setUnlocalizedName("pellet_rtg_polonium").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_polonium"); pellet_rtg_gold = new ItemRTGPellet(VersatileConfig.rtgDecay() ? 200 : 100).setDecays(DepletedRTGMaterial.MERCURY, (long) (RTGUtil.getLifespan(2.7F, HalfLifeType.SHORT, false) * 1.5)).setUnlocalizedName("pellet_rtg_gold").setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":pellet_rtg_gold"); pellet_rtg_lead = new ItemRTGPellet(VersatileConfig.rtgDecay() ? 600 : 200).setDecays(DepletedRTGMaterial.BISMUTH, (long) (RTGUtil.getLifespan(0.3F, HalfLifeType.SHORT, false) * 1.5)).setUnlocalizedName("pellet_rtg_lead").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pellet_rtg_lead"); @@ -3115,6 +2896,8 @@ public class ModItems { demon_core_open = new ItemDemonCore().setUnlocalizedName("demon_core_open").setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":demon_core_open"); demon_core_closed = new Item().setUnlocalizedName("demon_core_closed").setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":demon_core_closed"); + + pa_coil = new ItemPACoil().setUnlocalizedName("pa_coil").setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":pa_coil"); particle_empty = new Item().setUnlocalizedName("particle_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":particle_empty"); particle_hydrogen = new Item().setUnlocalizedName("particle_hydrogen").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.particle_empty).setTextureName(RefStrings.MODID + ":particle_hydrogen"); @@ -3185,6 +2968,7 @@ public class ModItems { mold_base = new Item().setUnlocalizedName("mold_base").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":mold_base"); mold = new ItemMold().setUnlocalizedName("mold").setCreativeTab(MainRegistry.controlTab); scraps = new ItemScraps().aot(Mats.MAT_BISMUTH, "scraps_bismuth").setUnlocalizedName("scraps").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":scraps"); + ingot_raw = new ItemAutogen(MaterialShapes.INGOT).setUnlocalizedName("ingot_raw").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_raw"); plate_cast = new ItemAutogen(MaterialShapes.CASTPLATE).aot(Mats.MAT_BISMUTH, "plate_cast_bismuth").setUnlocalizedName("plate_cast").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_cast"); plate_welded = new ItemAutogen(MaterialShapes.WELDEDPLATE).setUnlocalizedName("plate_welded").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_welded"); heavy_component = new ItemAutogen(MaterialShapes.HEAVY_COMPONENT).setUnlocalizedName("heavy_component").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":heavy_component"); @@ -3195,6 +2979,14 @@ public class ModItems { .aot(Mats.MAT_CARBON, "wire_carbon").aot(Mats.MAT_SCHRABIDIUM, "wire_schrabidium") .aot(Mats.MAT_MAGTUNG, "wire_magnetized_tungsten").setUnlocalizedName("wire_fine").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_fine"); wire_dense = new ItemAutogen(MaterialShapes.DENSEWIRE).setUnlocalizedName("wire_dense").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_dense"); + + part_barrel_light = new ItemAutogen(MaterialShapes.LIGHTBARREL).setUnlocalizedName("part_barrel_light").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":part_barrel_light"); + part_barrel_heavy = new ItemAutogen(MaterialShapes.HEAVYBARREL).setUnlocalizedName("part_barrel_heavy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":part_barrel_heavy"); + part_receiver_light = new ItemAutogen(MaterialShapes.LIGHTRECEIVER).setUnlocalizedName("part_receiver_light").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":part_receiver_light"); + part_receiver_heavy = new ItemAutogen(MaterialShapes.HEAVYRECEIVER).setUnlocalizedName("part_receiver_heavy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":part_receiver_heavy"); + part_mechanism = new ItemAutogen(MaterialShapes.MECHANISM).setUnlocalizedName("part_mechanism").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":part_mechanism"); + part_stock = new ItemAutogen(MaterialShapes.STOCK).setUnlocalizedName("part_stock").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":part_stock"); + part_grip = new ItemAutogen(MaterialShapes.GRIP).setUnlocalizedName("part_grip").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":part_grip"); part_lithium = new Item().setUnlocalizedName("part_lithium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":part_lithium"); part_beryllium = new Item().setUnlocalizedName("part_beryllium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":part_beryllium"); @@ -3287,8 +3079,8 @@ public class ModItems { gas_mask_filter_rag = new ItemFilter().setUnlocalizedName("gas_mask_filter_rag").setTextureName(RefStrings.MODID + ":gas_mask_filter_rag"); gas_mask_filter_piss = new ItemFilter().setUnlocalizedName("gas_mask_filter_piss").setTextureName(RefStrings.MODID + ":gas_mask_filter_piss"); jetpack_tank = new ItemSyringe().setUnlocalizedName("jetpack_tank").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":jetpack_tank"); - gun_kit_1 = new ItemSyringe().setUnlocalizedName("gun_kit_1").setMaxStackSize(16).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":gun_kit_1"); - gun_kit_2 = new ItemSyringe().setUnlocalizedName("gun_kit_2").setMaxStackSize(16).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":gun_kit_2"); + gun_kit_1 = new ItemRepairKit(10).setUnlocalizedName("gun_kit_1").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":gun_kit_1"); + gun_kit_2 = new ItemRepairKit(100).setUnlocalizedName("gun_kit_2").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":gun_kit_2"); cbt_device = new ItemSyringe().setUnlocalizedName("cbt_device").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":cbt_device"); cigarette = new ItemCigarette().setUnlocalizedName("cigarette").setFull3D().setMaxStackSize(16).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cigarette"); crackpipe = new ItemCigarette().setUnlocalizedName("crackpipe").setFull3D().setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":crackpipe"); @@ -3666,9 +3458,9 @@ public class ModItems { rbmk_fuel_heaus = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_heaus) .setYield(100000000D) .setStats(35) - .setFunction(EnumBurnFunc.SQUARE_ROOT) + .setFunction(EnumBurnFunc.LINEAR) .setXenon(0.05D, 50D) - .setHeat(2D) + .setHeat(1.5D) .setMeltingPoint(5211).setUnlocalizedName("rbmk_fuel_heaus").setTextureName(RefStrings.MODID + ":rbmk_fuel_heaus"); rbmk_fuel_po210be = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_po210be) .setYield(25000000D) @@ -3746,7 +3538,7 @@ public class ModItems { .setMeltingPoint(2744) .setUnlocalizedName("rbmk_fuel_zfb_am_mix").setTextureName(RefStrings.MODID + ":rbmk_fuel_zfb_am_mix"); rbmk_fuel_drx = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_drx) - .setYield(1000000D) + .setYield(10000000D) .setStats(1000, 10) .setFunction(EnumBurnFunc.QUADRATIC) .setHeat(0.1D) @@ -3759,6 +3551,18 @@ public class ModItems { .setHeat(1.0D) .setMeltingPoint(100000) .setUnlocalizedName("rbmk_fuel_test").setTextureName(RefStrings.MODID + ":rbmk_fuel_test"); + /* Experimental flux curve shit + rbmk_fuel_curve = (ItemRBMKRod) new ItemRBMKRod("3D Flux Curve Test") + .setFluxCurve(true) + .setOutputFluxCurve((fluxQuantity, fluxRatio) -> fluxQuantity * (1 - Math.pow(fluxRatio, 2))) + .setDepletionOutputRatioCurve((ratioIn, depletion) -> Math.pow(ratioIn, 2) * depletion) + .setYield(1000000D) + .setStats(75) + .setFunction(EnumBurnFunc.SQUARE_ROOT) + .setHeat(1.5D) + .setMeltingPoint(100000) + .setUnlocalizedName("rbmk_fuel_curve").setTextureName(RefStrings.MODID + ":rbmk_fuel_curve"); + */ watz_pellet = new ItemWatzPellet().setUnlocalizedName("watz_pellet").setTextureName(RefStrings.MODID + ":watz_pellet"); watz_pellet_depleted = new ItemWatzPellet().setUnlocalizedName("watz_pellet_depleted").setTextureName(RefStrings.MODID + ":watz_pellet"); @@ -3786,6 +3590,7 @@ public class ModItems { scrap_nuclear = new Item().setUnlocalizedName("scrap_nuclear").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":scrap_nuclear"); containment_box = new ItemLeadBox().setUnlocalizedName("containment_box").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":containment_box"); plastic_bag = new ItemPlasticBag().setUnlocalizedName("plastic_bag").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":plastic_bag"); + casing_bag = new ItemCasingBag().setUnlocalizedName("casing_bag").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":casing_bag"); debris_graphite = new Item().setUnlocalizedName("debris_graphite").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":debris_graphite"); debris_metal = new Item().setUnlocalizedName("debris_metal").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":debris_metal"); @@ -3868,7 +3673,7 @@ public class ModItems { sat_interface = new ItemSatInterface().setUnlocalizedName("sat_interface").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_interface"); sat_coord = new ItemSatInterface().setUnlocalizedName("sat_coord").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_coord"); sat_designator = new ItemSatDesignator().setUnlocalizedName("sat_designator").setFull3D().setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_designator"); - sat_relay = new ItemSatRelay().setUnlocalizedName("sat_relay").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_relay"); + sat_relay = new ItemSatChip().setUnlocalizedName("sat_relay").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_relay"); mp_thruster_10_kerosene = new ItemCustomMissilePart().makeThruster(FuelType.KEROSENE, 1F, 1.5F, PartSize.SIZE_10).setHealth(10F) .setUnlocalizedName("mp_thruster_10_kerosene"); mp_thruster_10_kerosene_tec = new ItemCustomMissilePart().makeThruster(FuelType.KEROSENE, 1F, 1.5F, PartSize.SIZE_10).setHealth(15F).setRarity(Rarity.COMMON).setUnlocalizedName("mp_thruster_10_kerosene_tec"); @@ -4022,137 +3827,18 @@ public class ModItems { missile_skin_soviet_stank = new ItemCustomLore().setUnlocalizedName("missile_skin_soviet_stank").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_skin_soviet_stank"); missile_skin_metal = new ItemCustomLore().setUnlocalizedName("missile_skin_metal").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_skin_metal"); - ammo_12gauge = new ItemAmmo(Ammo12Gauge.class).setUnlocalizedName("ammo_12gauge"); - ammo_20gauge = new ItemAmmo(Ammo20Gauge.class).setUnlocalizedName("ammo_20gauge"); - ammo_4gauge = new ItemAmmo(Ammo4Gauge.class).setUnlocalizedName("ammo_4gauge"); - ammo_5mm = new ItemAmmo(Ammo5mm.class).setUnlocalizedName("ammo_5mm"); - ammo_9mm = new ItemAmmo(Ammo9mm.class).setUnlocalizedName("ammo_9mm"); - ammo_45 = new ItemAmmo(Ammo45ACP.class).setUnlocalizedName("ammo_45"); - ammo_556 = new ItemAmmo(Ammo556mm.class).setUnlocalizedName("ammo_556"); - ammo_762 = new ItemAmmo(Ammo762NATO.class).setUnlocalizedName("ammo_762"); - ammo_50ae = new ItemAmmo(Ammo50AE.class).setUnlocalizedName("ammo_50ae"); - ammo_50bmg = new ItemAmmo(Ammo50BMG.class).setUnlocalizedName("ammo_50bmg"); - ammo_75bolt = new ItemAmmo(Ammo75Bolt.class).setUnlocalizedName("ammo_75bolt"); - ammo_357 = new ItemAmmo(Ammo357Magnum.class).setUnlocalizedName("ammo_357"); - ammo_44 = new ItemAmmo(Ammo44Magnum.class).setUnlocalizedName("ammo_44"); - ammo_22lr = new ItemAmmo(Ammo22LR.class).setUnlocalizedName("ammo_22lr"); - ammo_rocket = new ItemAmmo(AmmoRocket.class).setUnlocalizedName("ammo_rocket"); - ammo_grenade = new ItemAmmo(AmmoGrenade.class).setUnlocalizedName("ammo_grenade"); - ammo_shell = new ItemAmmo(Ammo240Shell.class).setUnlocalizedName("ammo_shell"); + ammo_shell = (ItemEnumMulti) new ItemAmmo(Ammo240Shell.class).setCreativeTab(MainRegistry.weaponTab).setUnlocalizedName("ammo_shell"); ammo_dgk = new ItemCustomLore().setUnlocalizedName("ammo_dgk").setCreativeTab(MainRegistry.weaponTab); - ammo_nuke = new ItemAmmo(AmmoFatman.class).setUnlocalizedName("ammo_nuke"); - ammo_fuel = new ItemAmmo(AmmoFlamethrower.class).setUnlocalizedName("ammo_fuel"); - ammo_fireext = new ItemAmmo(AmmoFireExt.class).setUnlocalizedName("ammo_fireext"); - ammo_cell = new ItemCustomLore().setCreativeTab(MainRegistry.weaponTab).setUnlocalizedName("ammo_cell").setMaxStackSize(16); - ammo_coilgun = new ItemAmmo(AmmoCoilgun.class).setUnlocalizedName("ammo_coilgun"); - ammo_dart = (ItemEnumMulti) new ItemAmmo(AmmoDart.class).setUnlocalizedName("ammo_dart").setMaxStackSize(16); - ammo_stinger_rocket = new ItemAmmo(AmmoStinger.class).setUnlocalizedName("ammo_stinger_rocket"); - ammo_luna_sniper = new ItemAmmo(AmmoLunaticSniper.class).setUnlocalizedName("ammo_luna_sniper"); + ammo_fireext = (ItemEnumMulti) new ItemAmmo(AmmoFireExt.class).setCreativeTab(MainRegistry.weaponTab).setUnlocalizedName("ammo_fireext"); ammo_misc = new ItemAmmo(AmmoMisc.class).setUnlocalizedName("ammo_misc"); - ammo_folly = new ItemCustomLore().setUnlocalizedName("ammo_folly"); - ammo_folly_nuclear = new ItemCustomLore().setUnlocalizedName("ammo_folly_nuclear"); - ammo_folly_du = new ItemCustomLore().setUnlocalizedName("ammo_folly_du"); ammo_arty = new ItemAmmoArty().setUnlocalizedName("ammo_arty"); ammo_himars = new ItemAmmoHIMARS().setUnlocalizedName("ammo_himars"); - gun_rpg = new ItemGunBase(GunRocketFactory.getGustavConfig()).setUnlocalizedName("gun_rpg").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_rpg"); - gun_karl = new ItemGunBase(GunRocketFactory.getKarlConfig()).setUnlocalizedName("gun_karl").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_karl"); - 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_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"); - gun_revolver_saturnite = new ItemGunBase(Gun357MagnumFactory.getRevolverSaturniteConfig()).setUnlocalizedName("gun_revolver_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_saturnite"); - gun_revolver_gold = new ItemGunBase(Gun357MagnumFactory.getRevolverGoldConfig()).setUnlocalizedName("gun_revolver_gold").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_gold"); - gun_revolver_schrabidium = new ItemGunBase(Gun357MagnumFactory.getRevolverSchrabidiumConfig()).setUnlocalizedName("gun_revolver_schrabidium").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_schrabidium"); - gun_revolver_cursed = new ItemGunBase(Gun357MagnumFactory.getRevolverCursedConfig()).setUnlocalizedName("gun_revolver_cursed").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_cursed"); - gun_revolver_nightmare = new ItemGunBase(Gun357MagnumFactory.getRevolverNightmareConfig()).setUnlocalizedName("gun_revolver_nightmare").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare"); - gun_revolver_nightmare2 = new ItemGunBase(Gun357MagnumFactory.getRevolverNightmare2Config()).setUnlocalizedName("gun_revolver_nightmare2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare2"); - gun_revolver_pip = new ItemGunPip(Gun44MagnumFactory.getMacintoshConfig()).setUnlocalizedName("gun_revolver_pip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_pip"); - gun_revolver_nopip = new ItemGunBase(Gun44MagnumFactory.getNovacConfig()).setUnlocalizedName("gun_revolver_nopip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nopip"); - gun_revolver_blackjack = new ItemGunBase(Gun44MagnumFactory.getBlackjackConfig()).setUnlocalizedName("gun_revolver_blackjack").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_blackjack"); - gun_revolver_silver = new ItemGunBase(Gun44MagnumFactory.getSilverConfig()).setUnlocalizedName("gun_revolver_silver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_silver"); - gun_revolver_red = new ItemGunBase(Gun44MagnumFactory.getRedConfig()).setUnlocalizedName("gun_revolver_red").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_red"); - gun_deagle = new ItemGunBase(Gun50AEFactory.getDeagleConfig()).setUnlocalizedName("gun_deagle").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_deagle"); - gun_bio_revolver = new ItemGunBio(Gun357MagnumFactory.getRevolverBioConfig()).setUnlocalizedName("gun_bio_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bio_revolver"); - gun_flechette = new ItemGunBase(Gun556mmFactory.getSPIWConfig(), Gun556mmFactory.getGLauncherConfig()).setUnlocalizedName("gun_flechette").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_flechette"); - gun_ar15 = new ItemGunBase(Gun50BMGFactory.getAR15Config(), Gun50BMGFactory.getAR15BurstConfig()).setUnlocalizedName("gun_ar15").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_ar15"); - gun_calamity = new ItemGunBase(Gun762mmFactory.getCalamityConfig()).setUnlocalizedName("gun_calamity").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_calamity"); - gun_minigun = new ItemGunLacunae(Gun5mmFactory.get53Config()).setUnlocalizedName("gun_minigun").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_minigun"); - gun_lacunae = new ItemGunLacunae(Gun5mmFactory.getLacunaeConfig()).setUnlocalizedName("gun_lacunae").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lacunae"); - gun_folly = new GunFolly().setUnlocalizedName("gun_folly").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_folly"); - gun_fatman = new ItemGunBase(GunFatmanFactory.getFatmanConfig()).setUnlocalizedName("gun_fatman").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); - gun_proto = new ItemGunBase(GunFatmanFactory.getProtoConfig()).setUnlocalizedName("gun_proto").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); - gun_mirv = new ItemGunBase(GunFatmanFactory.getMIRVConfig()).setUnlocalizedName("gun_mirv").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mirv"); - gun_bf = new ItemGunBase(GunFatmanFactory.getBELConfig()).setUnlocalizedName("gun_bf").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_bf"); - gun_chemthrower = new ItemGunChemthrower().setUnlocalizedName("gun_chemthrower").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); - gun_mp40 = new ItemGunBase(Gun9mmFactory.getMP40Config()).setUnlocalizedName("gun_mp40").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mp40"); - gun_thompson = new ItemGunBase(Gun45ACPFactory.getThompsonConfig()).setUnlocalizedName("gun_thompson").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_thompson"); - gun_uzi = new ItemGunBase(Gun22LRFactory.getUziConfig()).setUnlocalizedName("gun_uzi").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi"); - gun_uzi_silencer = new ItemGunBase(Gun22LRFactory.getUziConfig().silenced()).setUnlocalizedName("gun_uzi_silencer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_silencer"); - gun_uzi_saturnite = new ItemGunBase(Gun22LRFactory.getSaturniteConfig()).setUnlocalizedName("gun_uzi_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_saturnite"); - gun_uzi_saturnite_silencer = new ItemGunBase(Gun22LRFactory.getSaturniteConfig().silenced()).setUnlocalizedName("gun_uzi_saturnite_silencer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_saturnite_silencer"); - gun_uboinik = new ItemGunBase(Gun12GaugeFactory.getUboinikConfig()).setUnlocalizedName("gun_uboinik").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); - gun_remington = new ItemGunBase(Gun12GaugeFactory.getRemington870Config()).setUnlocalizedName("gun_remington").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spas12"); - gun_spas12 = new ItemGunBase(Gun12GaugeFactory.getSpas12Config(), Gun12GaugeFactory.getSpas12AltConfig()).setUnlocalizedName("gun_spas12").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spas12"); - gun_benelli = new ItemGunBase(Gun12GaugeFactory.getBenelliModConfig()).setUnlocalizedName("gun_benelli").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spas12"); - gun_supershotgun = new ItemGunShotty(Gun12GaugeFactory.getShottyConfig()).setUnlocalizedName("gun_supershotgun").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); - gun_ks23 = new ItemGunBase(Gun4GaugeFactory.getKS23Config()).setUnlocalizedName("gun_ks23").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); - gun_sauer = new ItemGunBase(Gun4GaugeFactory.getSauerConfig()).setUnlocalizedName("gun_sauer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); - gun_lever_action = new ItemGunBase(Gun20GaugeFactory.getMareConfig()).setUnlocalizedName("gun_lever_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action"); - gun_lever_action_dark = new ItemGunBase(Gun20GaugeFactory.getMareDarkConfig()).setUnlocalizedName("gun_lever_action_dark").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action_dark"); - gun_lever_action_sonata = new GunLeverActionS().setUnlocalizedName("gun_lever_action_sonata").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action_sonata"); - gun_bolt_action = new ItemGunBase(Gun762mmFactory.getBoltConfig()).setUnlocalizedName("gun_bolt_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action"); - gun_bolt_action_green = new ItemGunBase(Gun762mmFactory.getBoltGreenConfig()).setUnlocalizedName("gun_bolt_action_green").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_green"); - gun_bolt_action_saturnite = new ItemGunBase(Gun762mmFactory.getBoltSaturniteConfig()).setUnlocalizedName("gun_bolt_action_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_saturnite"); - gun_mymy = new ItemGunBase(GunDartFactory.getMymyConfig()).setUnlocalizedName("gun_mymy").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mymy"); gun_b92_ammo = new GunB92Cell().setUnlocalizedName("gun_b92_ammo").setMaxStackSize(1).setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b92_ammo_alt"); gun_b92 = new GunB92().setUnlocalizedName("gun_b92").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b92"); - gun_b93 = new GunB93().setUnlocalizedName("gun_b93").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b93"); - gun_coilgun = new ItemCoilgun(GunEnergyFactory.getCoilgunConfig()).setUnlocalizedName("gun_coilgun").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_coilgun"); - gun_xvl1456_ammo = new Item().setUnlocalizedName("gun_xvl1456_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_xvl1456_ammo"); - gun_xvl1456 = new ItemGunGauss(GunGaussFactory.getXVLConfig(), GunGaussFactory.getChargedConfig()).setUnlocalizedName("gun_xvl1456").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_xvl1456"); - gun_osipr_ammo = new Item().setUnlocalizedName("gun_osipr_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_osipr_ammo"); - gun_osipr_ammo2 = new Item().setUnlocalizedName("gun_osipr_ammo2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_osipr_ammo2"); - gun_osipr = new ItemGunOSIPR(GunOSIPRFactory.getOSIPRConfig(), GunOSIPRFactory.getAltConfig()).setUnlocalizedName("gun_osipr").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_osipr"); - gun_immolator_ammo = new Item().setUnlocalizedName("gun_immolator_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_immolator_ammo"); - gun_immolator = new GunImmolator().setUnlocalizedName("gun_immolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_immolator"); - gun_flamer = new ItemGunBase(GunEnergyFactory.getFlamerConfig()).setUnlocalizedName("gun_flamer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_flamer"); gun_cryolator_ammo = new Item().setUnlocalizedName("gun_cryolator_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator_ammo"); - gun_cryolator = new GunCryolator().setUnlocalizedName("gun_cryolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator"); gun_cryocannon = new ItemCryoCannon(GunEnergyFactory.getCryoCannonConfig()).setUnlocalizedName("gun_cryocannon").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryocannon"); gun_fireext = new ItemGunBase(GunEnergyFactory.getExtConfig()).setUnlocalizedName("gun_fireext").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fireext"); - gun_mp = new ItemGunBase(Gun556mmFactory.getEuphieConfig()).setUnlocalizedName("gun_mp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_pm"); - gun_bolter = new ItemGunBase(Gun75BoltFactory.getBolterConfig()).setUnlocalizedName("gun_bolter").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolter"); - gun_bolter_digamma = new ItemGunBase(Gun75BoltFactory.getBolterConfig()).setUnlocalizedName("gun_bolter_digamma").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolter_digamma"); - gun_zomg = new ItemGunBase(GunEnergyFactory.getZOMGConfig()).setUnlocalizedName("gun_zomg").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_zomg"); - gun_revolver_inverted = new GunSuicide().setUnlocalizedName("gun_revolver_inverted").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_inverted"); - gun_emp_ammo = new Item().setUnlocalizedName("gun_emp_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_emp_ammo"); - gun_emp = new ItemGunBase(GunEnergyFactory.getEMPConfig()).setUnlocalizedName("gun_emp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_emp"); - gun_jack_ammo = new Item().setUnlocalizedName("gun_jack_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_jack_ammo"); - gun_jack = new GunJack().setUnlocalizedName("gun_jack").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_jack"); - gun_spark_ammo = new Item().setUnlocalizedName("gun_spark_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spark_ammo"); - gun_spark = new GunSpark().setUnlocalizedName("gun_spark").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spark"); - gun_hp_ammo = new Item().setUnlocalizedName("gun_hp_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_hp_ammo"); - gun_hp = new GunHP().setUnlocalizedName("gun_hp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_hp"); - gun_euthanasia_ammo = new Item().setUnlocalizedName("gun_euthanasia_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_euthanasia_ammo"); - gun_euthanasia = new GunEuthanasia().setUnlocalizedName("gun_euthanasia").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_euthanasia"); - gun_dash_ammo = new Item().setUnlocalizedName("gun_dash_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_dash_ammo"); - gun_dash = new GunDash().setUnlocalizedName("gun_dash").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_dash"); - gun_twigun_ammo = new Item().setUnlocalizedName("gun_twigun_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_twigun_ammo"); - gun_twigun = new GunEuthanasia().setUnlocalizedName("gun_twigun").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_twigun"); - gun_defabricator_ammo = new Item().setUnlocalizedName("gun_defabricator_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_defabricator_ammo"); - gun_defabricator = new GunDefabricator().setUnlocalizedName("gun_defabricator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_defabricator"); - gun_vortex = new ItemGunBase(Gun556mmFactory.getEuphieConfig()).setUnlocalizedName("gun_vortex").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_vortex"); - gun_super_shotgun = new ItemCustomLore().setUnlocalizedName("gun_super_shotgun").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_super_shotgun"); - gun_moist_nugget = new ItemNugget(3, false).setUnlocalizedName("gun_moist_nugget").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_moist_nugget"); - gun_darter = new ItemGunDart(GunDartFactory.getDarterConfig()).setFull3D().setUnlocalizedName("gun_darter").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); - gun_glass_cannon = new ItemEnergyGunBase(GunPoweredFactory.getGlassCannonConfig()).setFull3D().setUnlocalizedName("gun_glass_cannon").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); - gun_m2 = new ItemGunBase(Gun50BMGFactory.getM2Config()).setFull3D().setUnlocalizedName("gun_m2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); - gun_lunatic_marksman = new ItemGunBase(Gun50BMGFactory.getLunaticMarksman()).setFull3D().setUnlocalizedName("gun_lunatic_marksman").setCreativeTab(MainRegistry.weaponTab); - gun_uac_pistol = new ItemGunBase(Gun45ACPFactory.getUACPistolConfig(), Gun45ACPFactory.getUACPistolBurstConfig()).setFull3D().setUnlocalizedName("gun_uac_pistol").setCreativeTab(MainRegistry.weaponTab); ToolMaterial matCrucible = EnumHelper.addToolMaterial("CRUCIBLE", 10, 3, 50.0F, 100.0F, 0); crucible = new ItemCrucible(5000, 1F, matCrucible).setUnlocalizedName("crucible").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":crucible"); @@ -4449,38 +4135,6 @@ public class ModItems { loot_10 = new ItemLootCrate().setUnlocalizedName("loot_10").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":loot_10"); loot_15 = new ItemLootCrate().setUnlocalizedName("loot_15").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":loot_15"); loot_misc = new ItemLootCrate().setUnlocalizedName("loot_misc").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":loot_misc"); - - clip_revolver_iron = new ItemClip(ammo_357.stackFromEnum(20, Ammo357Magnum.IRON)).setUnlocalizedName("clip_revolver_iron").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_iron"); - clip_revolver = new ItemClip(ammo_357.stackFromEnum(12, Ammo357Magnum.LEAD)).setUnlocalizedName("clip_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver"); - clip_revolver_gold = new ItemClip(ammo_357.stackFromEnum(6, Ammo357Magnum.GOLD)).setUnlocalizedName("clip_revolver_gold").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_gold"); - clip_revolver_lead = new ItemClip(ammo_357.stackFromEnum(6, Ammo357Magnum.NUCLEAR)).setUnlocalizedName("clip_revolver_lead").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_lead"); - clip_revolver_schrabidium = new ItemClip(ammo_357.stackFromEnum(2, Ammo357Magnum.SCHRABIDIUM)).setUnlocalizedName("clip_revolver_schrabidium").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_schrabidium"); - clip_revolver_cursed = new ItemClip(ammo_357.stackFromEnum(17, Ammo357Magnum.STEEL)).setUnlocalizedName("clip_revolver_cursed").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_cursed"); - clip_revolver_nightmare = new ItemClip(ammo_357.stackFromEnum(6, Ammo357Magnum.NIGHTMARE1)).setUnlocalizedName("clip_revolver_nightmare").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_nightmare"); - clip_revolver_nightmare2 = new ItemClip(ammo_357.stackFromEnum(6, Ammo357Magnum.NIGHTMARE2)).setUnlocalizedName("clip_revolver_nightmare2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_nightmare2"); - clip_revolver_pip = new ItemClip(ammo_44.stackFromEnum(6, Ammo44Magnum.PIP)).setUnlocalizedName("clip_revolver_pip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_pip"); - clip_revolver_nopip = new ItemClip(ammo_44.stackFromEnum(6, Ammo44Magnum.STOCK)).setUnlocalizedName("clip_revolver_nopip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_revolver_nopip"); - clip_rpg = new ItemClip(ammo_rocket.stackFromEnum(4, AmmoRocket.STOCK)).setUnlocalizedName("clip_rpg").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_rpg_alt"); - clip_stinger = new ItemClip(ammo_stinger_rocket.stackFromEnum(4, AmmoStinger.STOCK)).setUnlocalizedName("clip_stinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_stinger"); - clip_fatman = new ItemClip(ammo_nuke.stackFromEnum(6, AmmoFatman.STOCK)).setUnlocalizedName("clip_fatman").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_fatman"); - clip_mirv = new ItemClip(ammo_nuke.stackFromEnum(3, AmmoFatman.MIRV)).setUnlocalizedName("clip_mirv").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_mirv"); - clip_bf = new ItemClip(ammo_nuke.stackFromEnum(2, AmmoFatman.BALEFIRE)).setUnlocalizedName("clip_bf").setCreativeTab(null).setTextureName(RefStrings.MODID + ":clip_bf"); - clip_mp40 = new ItemClip(ammo_9mm.stackFromEnum(32, Ammo9mm.STOCK)).setUnlocalizedName("clip_mp40").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_mp40"); - clip_uzi = new ItemClip(ammo_22lr.stackFromEnum(32, Ammo22LR.STOCK)).setUnlocalizedName("clip_uzi").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_uzi"); - clip_uboinik = new ItemClip(ammo_12gauge.stackFromEnum(12, Ammo12Gauge.STOCK)).setUnlocalizedName("clip_uboinik").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_uboinik"); - clip_lever_action = new ItemClip(ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK)).setUnlocalizedName("clip_lever_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_lever_action"); - clip_bolt_action = new ItemClip(ammo_20gauge.stackFromEnum(12, Ammo20Gauge.SLUG)).setUnlocalizedName("clip_bolt_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_bolt_action"); - clip_osipr = new ItemClip(new ItemStack(gun_osipr_ammo, 3)).setUnlocalizedName("clip_osipr").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_osipr"); - clip_immolator = new ItemClip(new ItemStack(gun_immolator_ammo, 60)).setUnlocalizedName("clip_immolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_immolator"); - clip_cryolator = new ItemClip(new ItemStack(gun_cryolator_ammo, 60)).setUnlocalizedName("clip_cryolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_cryolator"); - clip_mp = new ItemClip(ammo_556.stackFromEnum(2, Ammo556mm.GOLD)).setUnlocalizedName("clip_mp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_mp"); - clip_xvl1456 = new ItemClip(new ItemStack(gun_xvl1456_ammo, 50)).setUnlocalizedName("clip_xvl1456").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_xvl1456"); - clip_emp = new ItemClip(new ItemStack(gun_emp_ammo, 12)).setUnlocalizedName("clip_emp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_emp"); - clip_jack = new ItemClip(new ItemStack(gun_jack_ammo, 12)).setUnlocalizedName("clip_jack").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_jack"); - clip_spark = new ItemClip(new ItemStack(gun_spark_ammo, 12)).setUnlocalizedName("clip_spark").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_spark"); - clip_hp = new ItemClip(new ItemStack(gun_hp_ammo, 24)).setUnlocalizedName("clip_hp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_hp"); - clip_euthanasia = new ItemClip(new ItemStack(gun_euthanasia_ammo, 32)).setUnlocalizedName("clip_euthanasia").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_euthanasia"); - clip_defabricator = new ItemClip(new ItemStack(gun_defabricator_ammo, 50)).setUnlocalizedName("clip_defabricator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":clip_defabricator"); ammo_container = new ItemAmmoContainer().setUnlocalizedName("ammo_container").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_container"); @@ -4495,7 +4149,6 @@ public class ModItems { detonator_laser = new ItemLaserDetonator().setUnlocalizedName("detonator_laser").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":detonator_laser"); detonator_deadman = new ItemDrop().setUnlocalizedName("detonator_deadman").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":detonator_deadman"); detonator_de = new ItemDrop().setUnlocalizedName("detonator_de").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":detonator_de"); - crate_caller = new ItemCrateCaller().setUnlocalizedName("crate_caller").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":crate_caller"); bomb_caller = new ItemBombCaller().setUnlocalizedName("bomb_caller").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":bomb_caller"); meteor_remote = new ItemMeteorRemote().setUnlocalizedName("meteor_remote").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":meteor_remote"); anchor_remote = new ItemAnchorRemote().setUnlocalizedName("anchor_remote").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":anchor_remote"); @@ -4523,6 +4176,7 @@ public class ModItems { coupling_tool = new ItemCouplingTool().setUnlocalizedName("coupling_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coupling_tool"); drone_linker = new ItemDroneLinker().setUnlocalizedName("drone_linker").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":drone_linker"); radar_linker = new ItemRadarLinker().setUnlocalizedName("radar_linker").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":radar_linker"); + settings_tool = new ItemSettingsTool().setUnlocalizedName("settings_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":settings_tool"); key = new ItemKey().setUnlocalizedName("key").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":key"); key_red = new ItemCustomLore().setUnlocalizedName("key_red").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":key_red"); @@ -4602,69 +4256,68 @@ public class ModItems { beta = new ItemDrop().setUnlocalizedName("beta").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":beta"); //oxy_mask = new ArmorModel(ArmorMaterial.IRON, 7, 0).setUnlocalizedName("oxy_mask").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":oxy_mask"); - schrabidium_helmet = new ArmorFSB(MainRegistry.aMatSchrab, 0, RefStrings.MODID + ":textures/armor/schrabidium_1.png").setCap(4F).setMod(0.1F) + schrabidium_helmet = new ArmorFSB(MainRegistry.aMatSchrab, 0, RefStrings.MODID + ":textures/armor/schrabidium_1.png") .addEffect(new PotionEffect(Potion.digSpeed.id, 20, 2)) .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 2)) .addEffect(new PotionEffect(Potion.jump.id, 20, 1)) .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 2)) - .setFireproof(true).setUnlocalizedName("schrabidium_helmet").setTextureName(RefStrings.MODID + ":schrabidium_helmet"); + .setUnlocalizedName("schrabidium_helmet").setTextureName(RefStrings.MODID + ":schrabidium_helmet"); schrabidium_plate = new ArmorFSB(MainRegistry.aMatSchrab, 1, RefStrings.MODID + ":textures/armor/schrabidium_1.png").cloneStats((ArmorFSB) schrabidium_helmet).setUnlocalizedName("schrabidium_plate").setTextureName(RefStrings.MODID + ":schrabidium_plate"); - schrabidium_legs = new ArmorFSB(MainRegistry.aMatSchrab, 2, RefStrings.MODID + ":textures/armor/schrabidium_2.png").cloneStats((ArmorFSB) schrabidium_helmet).setCap(4F).setMod(0.1F).setUnlocalizedName("schrabidium_legs").setTextureName(RefStrings.MODID + ":schrabidium_legs"); - schrabidium_boots = new ArmorFSB(MainRegistry.aMatSchrab, 3, RefStrings.MODID + ":textures/armor/schrabidium_1.png").cloneStats((ArmorFSB) schrabidium_helmet).setCap(4F).setMod(0.1F).setUnlocalizedName("schrabidium_boots").setTextureName(RefStrings.MODID + ":schrabidium_boots"); - bismuth_helmet = new ArmorBismuth(MainRegistry.aMatBismuth, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png").setCap(8F).setMod(0.3F) - .addResistance("fall", 0) + schrabidium_legs = new ArmorFSB(MainRegistry.aMatSchrab, 2, RefStrings.MODID + ":textures/armor/schrabidium_2.png").cloneStats((ArmorFSB) schrabidium_helmet).setUnlocalizedName("schrabidium_legs").setTextureName(RefStrings.MODID + ":schrabidium_legs"); + schrabidium_boots = new ArmorFSB(MainRegistry.aMatSchrab, 3, RefStrings.MODID + ":textures/armor/schrabidium_1.png").cloneStats((ArmorFSB) schrabidium_helmet).setUnlocalizedName("schrabidium_boots").setTextureName(RefStrings.MODID + ":schrabidium_boots"); + bismuth_helmet = new ArmorBismuth(MainRegistry.aMatBismuth, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png") .addEffect(new PotionEffect(Potion.jump.id, 20, 6)) .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 6)) .addEffect(new PotionEffect(Potion.regeneration.id, 20, 1)) .addEffect(new PotionEffect(Potion.nightVision.id, 15 * 20, 0)) .setDashCount(3) .setUnlocalizedName("bismuth_helmet").setTextureName(RefStrings.MODID + ":bismuth_helmet"); - bismuth_plate = new ArmorBismuth(MainRegistry.aMatBismuth, 1, RefStrings.MODID + ":textures/armor/starmetal_2.png").cloneStats((ArmorFSB) bismuth_helmet).setCap(8F).setMod(0.3F).setUnlocalizedName("bismuth_plate").setTextureName(RefStrings.MODID + ":bismuth_plate"); - bismuth_legs = new ArmorBismuth(MainRegistry.aMatBismuth, 2, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) bismuth_helmet).setCap(8F).setMod(0.3F).setUnlocalizedName("bismuth_legs").setTextureName(RefStrings.MODID + ":bismuth_legs"); - bismuth_boots = new ArmorBismuth(MainRegistry.aMatBismuth, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) bismuth_helmet).setCap(8F).setMod(0.3F).setUnlocalizedName("bismuth_boots").setTextureName(RefStrings.MODID + ":bismuth_boots"); - titanium_helmet = new ArmorFSB(MainRegistry.aMatTitan, 0, RefStrings.MODID + ":textures/armor/titanium_1.png").setMod(0.85F).setUnlocalizedName("titanium_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":titanium_helmet"); + bismuth_plate = new ArmorBismuth(MainRegistry.aMatBismuth, 1, RefStrings.MODID + ":textures/armor/starmetal_2.png").cloneStats((ArmorFSB) bismuth_helmet).setUnlocalizedName("bismuth_plate").setTextureName(RefStrings.MODID + ":bismuth_plate"); + bismuth_legs = new ArmorBismuth(MainRegistry.aMatBismuth, 2, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) bismuth_helmet).setUnlocalizedName("bismuth_legs").setTextureName(RefStrings.MODID + ":bismuth_legs"); + bismuth_boots = new ArmorBismuth(MainRegistry.aMatBismuth, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) bismuth_helmet).setUnlocalizedName("bismuth_boots").setTextureName(RefStrings.MODID + ":bismuth_boots"); + titanium_helmet = new ArmorFSB(MainRegistry.aMatTitan, 0, RefStrings.MODID + ":textures/armor/titanium_1.png").setUnlocalizedName("titanium_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":titanium_helmet"); titanium_plate = new ArmorFSB(MainRegistry.aMatTitan, 1, RefStrings.MODID + ":textures/armor/titanium_1.png").cloneStats((ArmorFSB) titanium_helmet).setUnlocalizedName("titanium_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":titanium_plate"); titanium_legs = new ArmorFSB(MainRegistry.aMatTitan, 2, RefStrings.MODID + ":textures/armor/titanium_2.png").cloneStats((ArmorFSB) titanium_helmet).setUnlocalizedName("titanium_legs").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":titanium_legs"); titanium_boots = new ArmorFSB(MainRegistry.aMatTitan, 3, RefStrings.MODID + ":textures/armor/titanium_1.png").cloneStats((ArmorFSB) titanium_helmet).setUnlocalizedName("titanium_boots").setTextureName(RefStrings.MODID + ":titanium_boots"); - steel_helmet = new ArmorFSB(MainRegistry.aMatSteel, 0, RefStrings.MODID + ":textures/armor/steel_1.png").setMod(0.9F).setUnlocalizedName("steel_helmet").setTextureName(RefStrings.MODID + ":steel_helmet"); + steel_helmet = new ArmorFSB(MainRegistry.aMatSteel, 0, RefStrings.MODID + ":textures/armor/steel_1.png").setUnlocalizedName("steel_helmet").setTextureName(RefStrings.MODID + ":steel_helmet"); steel_plate = new ArmorFSB(MainRegistry.aMatSteel, 1, RefStrings.MODID + ":textures/armor/steel_1.png").cloneStats((ArmorFSB) steel_helmet).setUnlocalizedName("steel_plate").setTextureName(RefStrings.MODID + ":steel_plate"); steel_legs = new ArmorFSB(MainRegistry.aMatSteel, 2, RefStrings.MODID + ":textures/armor/steel_2.png").cloneStats((ArmorFSB) steel_helmet).setUnlocalizedName("steel_legs").setTextureName(RefStrings.MODID + ":steel_legs"); steel_boots = new ArmorFSB(MainRegistry.aMatSteel, 3, RefStrings.MODID + ":textures/armor/steel_1.png").cloneStats((ArmorFSB) steel_helmet).setUnlocalizedName("steel_boots").setTextureName(RefStrings.MODID + ":steel_boots"); - alloy_helmet = new ArmorFSB(MainRegistry.aMatAlloy, 0, RefStrings.MODID + ":textures/armor/alloy_1.png").setMod(0.75F).setUnlocalizedName("alloy_helmet").setTextureName(RefStrings.MODID + ":alloy_helmet"); + alloy_helmet = new ArmorFSB(MainRegistry.aMatAlloy, 0, RefStrings.MODID + ":textures/armor/alloy_1.png").setUnlocalizedName("alloy_helmet").setTextureName(RefStrings.MODID + ":alloy_helmet"); alloy_plate = new ArmorFSB(MainRegistry.aMatAlloy, 1, RefStrings.MODID + ":textures/armor/alloy_1.png").cloneStats((ArmorFSB) alloy_helmet).setUnlocalizedName("alloy_plate").setTextureName(RefStrings.MODID + ":alloy_plate"); alloy_legs = new ArmorFSB(MainRegistry.aMatAlloy, 2, RefStrings.MODID + ":textures/armor/alloy_2.png").cloneStats((ArmorFSB) alloy_helmet).setUnlocalizedName("alloy_legs").setTextureName(RefStrings.MODID + ":alloy_legs"); alloy_boots = new ArmorFSB(MainRegistry.aMatAlloy, 3, RefStrings.MODID + ":textures/armor/alloy_1.png").cloneStats((ArmorFSB) alloy_helmet).setUnlocalizedName("alloy_boots").setTextureName(RefStrings.MODID + ":alloy_boots"); - cmb_helmet = new ArmorFSB(MainRegistry.aMatCMB, 0, RefStrings.MODID + ":textures/armor/cmb_1.png").setCap(2F).setThreshold(2F).setMod(0.05F) + cmb_helmet = new ArmorFSB(MainRegistry.aMatCMB, 0, RefStrings.MODID + ":textures/armor/cmb_1.png") .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 2)) .addEffect(new PotionEffect(Potion.digSpeed.id, 20, 2)) .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 4)) - .setFireproof(true).setUnlocalizedName("cmb_helmet").setTextureName(RefStrings.MODID + ":cmb_helmet"); + .setUnlocalizedName("cmb_helmet").setTextureName(RefStrings.MODID + ":cmb_helmet"); cmb_plate = new ArmorFSB(MainRegistry.aMatCMB, 1, RefStrings.MODID + ":textures/armor/cmb_1.png").cloneStats((ArmorFSB) cmb_helmet).setUnlocalizedName("cmb_plate").setTextureName(RefStrings.MODID + ":cmb_plate"); cmb_legs = new ArmorFSB(MainRegistry.aMatCMB, 2, RefStrings.MODID + ":textures/armor/cmb_2.png").cloneStats((ArmorFSB) cmb_helmet).setUnlocalizedName("cmb_legs").setTextureName(RefStrings.MODID + ":cmb_legs"); cmb_boots = new ArmorFSB(MainRegistry.aMatCMB, 3, RefStrings.MODID + ":textures/armor/cmb_1.png").cloneStats((ArmorFSB) cmb_helmet).setUnlocalizedName("cmb_boots").setTextureName(RefStrings.MODID + ":cmb_boots"); - paa_plate = new ArmorFSB(MainRegistry.aMatPaa, 1, RefStrings.MODID + ":textures/armor/paa_1.png").setCap(6F).setMod(0.3F).setNoHelmet(true) + paa_plate = new ArmorFSB(MainRegistry.aMatPaa, 1, RefStrings.MODID + ":textures/armor/paa_1.png").setNoHelmet(true) .addEffect(new PotionEffect(Potion.digSpeed.id, 20, 0)).setUnlocalizedName("paa_plate").setTextureName(RefStrings.MODID + ":paa_plate"); paa_legs = new ArmorFSB(MainRegistry.aMatPaa, 2, RefStrings.MODID + ":textures/armor/paa_2.png").cloneStats((ArmorFSB) paa_plate).setUnlocalizedName("paa_legs").setTextureName(RefStrings.MODID + ":paa_legs"); paa_boots = new ArmorFSB(MainRegistry.aMatPaa, 3, RefStrings.MODID + ":textures/armor/paa_1.png").cloneStats((ArmorFSB) paa_plate).setUnlocalizedName("paa_boots").setTextureName(RefStrings.MODID + ":paa_boots"); - asbestos_helmet = new ArmorFSB(MainRegistry.aMatAsbestos, 0, RefStrings.MODID + ":textures/armor/asbestos_1.png").setFireproof(true).setOverlay(RefStrings.MODID + ":textures/misc/overlay_asbestos.png").setUnlocalizedName("asbestos_helmet").setTextureName(RefStrings.MODID + ":asbestos_helmet"); - asbestos_plate = new ArmorFSB(MainRegistry.aMatAsbestos, 1, RefStrings.MODID + ":textures/armor/asbestos_1.png").setFireproof(true).setUnlocalizedName("asbestos_plate").setTextureName(RefStrings.MODID + ":asbestos_plate"); - asbestos_legs = new ArmorFSB(MainRegistry.aMatAsbestos, 2, RefStrings.MODID + ":textures/armor/asbestos_2.png").setFireproof(true).setUnlocalizedName("asbestos_legs").setTextureName(RefStrings.MODID + ":asbestos_legs"); - asbestos_boots = new ArmorFSB(MainRegistry.aMatAsbestos, 3, RefStrings.MODID + ":textures/armor/asbestos_1.png").setFireproof(true).setUnlocalizedName("asbestos_boots").setTextureName(RefStrings.MODID + ":asbestos_boots"); - security_helmet = new ArmorFSB(MainRegistry.aMatSecurity, 0, RefStrings.MODID + ":textures/armor/security_1.png").setMod(0.65F).setProjectileProtection(0.5F).setUnlocalizedName("security_helmet").setTextureName(RefStrings.MODID + ":security_helmet"); + asbestos_helmet = new ArmorFSB(MainRegistry.aMatAsbestos, 0, RefStrings.MODID + ":textures/armor/asbestos_1.png").setOverlay(RefStrings.MODID + ":textures/misc/overlay_asbestos.png").setUnlocalizedName("asbestos_helmet").setTextureName(RefStrings.MODID + ":asbestos_helmet"); + asbestos_plate = new ArmorFSB(MainRegistry.aMatAsbestos, 1, RefStrings.MODID + ":textures/armor/asbestos_1.png").setUnlocalizedName("asbestos_plate").setTextureName(RefStrings.MODID + ":asbestos_plate"); + asbestos_legs = new ArmorFSB(MainRegistry.aMatAsbestos, 2, RefStrings.MODID + ":textures/armor/asbestos_2.png").setUnlocalizedName("asbestos_legs").setTextureName(RefStrings.MODID + ":asbestos_legs"); + asbestos_boots = new ArmorFSB(MainRegistry.aMatAsbestos, 3, RefStrings.MODID + ":textures/armor/asbestos_1.png").setUnlocalizedName("asbestos_boots").setTextureName(RefStrings.MODID + ":asbestos_boots"); + security_helmet = new ArmorFSB(MainRegistry.aMatSecurity, 0, RefStrings.MODID + ":textures/armor/security_1.png").setUnlocalizedName("security_helmet").setTextureName(RefStrings.MODID + ":security_helmet"); security_plate = new ArmorFSB(MainRegistry.aMatSecurity, 1, RefStrings.MODID + ":textures/armor/security_1.png").cloneStats((ArmorFSB) security_helmet).setUnlocalizedName("security_plate").setTextureName(RefStrings.MODID + ":security_plate"); security_legs = new ArmorFSB(MainRegistry.aMatSecurity, 2, RefStrings.MODID + ":textures/armor/security_2.png").cloneStats((ArmorFSB) security_helmet).setUnlocalizedName("security_legs").setTextureName(RefStrings.MODID + ":security_legs"); security_boots = new ArmorFSB(MainRegistry.aMatSecurity, 3, RefStrings.MODID + ":textures/armor/security_1.png").cloneStats((ArmorFSB) security_helmet).setUnlocalizedName("security_boots").setTextureName(RefStrings.MODID + ":security_boots"); - cobalt_helmet = new ArmorFSB(MainRegistry.aMatCobalt, 0, RefStrings.MODID + ":textures/armor/cobalt_1.png").setMod(0.7F).setUnlocalizedName("cobalt_helmet").setTextureName(RefStrings.MODID + ":cobalt_helmet"); + cobalt_helmet = new ArmorFSB(MainRegistry.aMatCobalt, 0, RefStrings.MODID + ":textures/armor/cobalt_1.png").setUnlocalizedName("cobalt_helmet").setTextureName(RefStrings.MODID + ":cobalt_helmet"); cobalt_plate = new ArmorFSB(MainRegistry.aMatCobalt, 1, RefStrings.MODID + ":textures/armor/cobalt_1.png").cloneStats((ArmorFSB) cobalt_helmet).setUnlocalizedName("cobalt_plate").setTextureName(RefStrings.MODID + ":cobalt_plate"); cobalt_legs = new ArmorFSB(MainRegistry.aMatCobalt, 2, RefStrings.MODID + ":textures/armor/cobalt_2.png").cloneStats((ArmorFSB) cobalt_helmet).setUnlocalizedName("cobalt_legs").setTextureName(RefStrings.MODID + ":cobalt_legs"); cobalt_boots = new ArmorFSB(MainRegistry.aMatCobalt, 3, RefStrings.MODID + ":textures/armor/cobalt_1.png").cloneStats((ArmorFSB) cobalt_helmet).setUnlocalizedName("cobalt_boots").setTextureName(RefStrings.MODID + ":cobalt_boots"); - starmetal_helmet = new ArmorFSB(MainRegistry.aMatStarmetal, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png").setMod(0.5F).setCap(15F) - .setFireproof(true).setUnlocalizedName("starmetal_helmet").setTextureName(RefStrings.MODID + ":starmetal_helmet"); + starmetal_helmet = new ArmorFSB(MainRegistry.aMatStarmetal, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png") + .setUnlocalizedName("starmetal_helmet").setTextureName(RefStrings.MODID + ":starmetal_helmet"); starmetal_plate = new ArmorFSB(MainRegistry.aMatStarmetal, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) starmetal_helmet).setUnlocalizedName("starmetal_plate").setTextureName(RefStrings.MODID + ":starmetal_plate"); starmetal_legs = new ArmorFSB(MainRegistry.aMatStarmetal, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png").cloneStats((ArmorFSB) starmetal_helmet).setUnlocalizedName("starmetal_legs").setTextureName(RefStrings.MODID + ":starmetal_legs"); starmetal_boots = new ArmorFSB(MainRegistry.aMatStarmetal, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) starmetal_helmet).setUnlocalizedName("starmetal_boots").setTextureName(RefStrings.MODID + ":starmetal_boots"); - robes_helmet = new ArmorFSB(ArmorMaterial.CHAIN, 0, RefStrings.MODID + ":textures/armor/robes_1.png").setThreshold(1.0F).setUnlocalizedName("robes_helmet").setTextureName(RefStrings.MODID + ":robes_helmet"); + robes_helmet = new ArmorFSB(ArmorMaterial.CHAIN, 0, RefStrings.MODID + ":textures/armor/robes_1.png").setUnlocalizedName("robes_helmet").setTextureName(RefStrings.MODID + ":robes_helmet"); robes_plate = new ArmorFSB(ArmorMaterial.CHAIN, 1, RefStrings.MODID + ":textures/armor/robes_1.png").cloneStats((ArmorFSB) robes_helmet).setUnlocalizedName("robes_plate").setTextureName(RefStrings.MODID + ":robes_plate"); robes_legs = new ArmorFSB(ArmorMaterial.CHAIN, 2, RefStrings.MODID + ":textures/armor/robes_2.png").cloneStats((ArmorFSB) robes_helmet).setUnlocalizedName("robes_legs").setTextureName(RefStrings.MODID + ":robes_legs"); robes_boots = new ArmorFSB(ArmorMaterial.CHAIN, 3, RefStrings.MODID + ":textures/armor/robes_1.png").cloneStats((ArmorFSB) robes_helmet).setUnlocalizedName("robes_boots").setTextureName(RefStrings.MODID + ":robes_boots"); @@ -4676,27 +4329,23 @@ public class ModItems { ArmorMaterial aMatZirconium = EnumHelper.addArmorMaterial("HBM_ZIRCONIUM", 1000, new int[] { 2, 5, 3, 1 }, 100); aMatZirconium.customCraftingMaterial = ModItems.ingot_zirconium; - zirconium_legs = new ArmorFSB(aMatZirconium, 2, RefStrings.MODID + ":textures/armor/zirconium_2.png").setMod(0.0F).setUnlocalizedName("zirconium_legs").setTextureName(RefStrings.MODID + ":zirconium_legs"); + zirconium_legs = new ArmorFSB(aMatZirconium, 2, RefStrings.MODID + ":textures/armor/zirconium_2.png").setUnlocalizedName("zirconium_legs").setTextureName(RefStrings.MODID + ":zirconium_legs"); ArmorMaterial aMatDNT = EnumHelper.addArmorMaterial("HBM_DNT_LOLOLOL", 3, new int[] { 1, 1, 1, 1 }, 0); aMatDNT.customCraftingMaterial = ModItems.ingot_dineutronium; dnt_helmet = new ArmorFSB(aMatDNT, 0, RefStrings.MODID + ":textures/armor/dnt_1.png") - .setMod(5F).setUnlocalizedName("dnt_helmet").setTextureName(RefStrings.MODID + ":dnt_helmet"); + .setUnlocalizedName("dnt_helmet").setTextureName(RefStrings.MODID + ":dnt_helmet"); dnt_plate = new ArmorFSB(aMatDNT, 1, RefStrings.MODID + ":textures/armor/dnt_1.png").cloneStats((ArmorFSB) dnt_helmet).setUnlocalizedName("dnt_plate").setTextureName(RefStrings.MODID + ":dnt_plate"); dnt_legs = new ArmorFSB(aMatDNT, 2, RefStrings.MODID + ":textures/armor/dnt_2.png").cloneStats((ArmorFSB) dnt_helmet).setUnlocalizedName("dnt_legs").setTextureName(RefStrings.MODID + ":dnt_legs"); dnt_boots = new ArmorFSB(aMatDNT, 3, RefStrings.MODID + ":textures/armor/dnt_1.png").cloneStats((ArmorFSB) dnt_helmet).setUnlocalizedName("dnt_boots").setTextureName(RefStrings.MODID + ":dnt_boots"); ArmorMaterial aMatT45 = EnumHelper.addArmorMaterial("HBM_T45", 150, new int[] { 3, 8, 6, 3 }, 0); aMatT45.customCraftingMaterial = ModItems.plate_armor_titanium; - t45_helmet = new ArmorT45(aMatT45, 0, 1000000, 10000, 1000, 5).setCap(10F).setMod(0.5F) - .setFireproof(true) + t45_helmet = new ArmorT45(aMatT45, 0, 1000000, 10000, 1000, 5) .enableVATS(true) .setHasGeigerSound(true) .setHasHardLanding(true) .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 0)) - .setBlastProtection(0.5F) - .addResistance("monoxide", 0F) - .addResistance("fall", 0) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("t45_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t45_helmet"); t45_plate = new ArmorT45(aMatT45, 1, 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t45_helmet).setUnlocalizedName("t45_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t45_plate"); @@ -4705,13 +4354,9 @@ public class ModItems { ArmorMaterial aMatDesh = EnumHelper.addArmorMaterial("HBM_DESH", 150, new int[] { 3, 8, 6, 3 }, 0); aMatDesh.customCraftingMaterial = ModItems.ingot_desh; - steamsuit_helmet = new ArmorDesh(aMatDesh, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", Fluids.STEAM, 64_000, 500, 50, 1).setThreshold(5F).setMod(0.8F) - .setFireproof(true) + steamsuit_helmet = new ArmorDesh(aMatDesh, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", Fluids.STEAM, 64_000, 500, 50, 1) .setHasHardLanding(true) .addEffect(new PotionEffect(Potion.digSpeed.id, 20, 4)) - .setBlastProtection(0.5F) - .addResistance("monoxide", 0F) - .addResistance("fall", 0) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("steamsuit_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":steamsuit_helmet"); steamsuit_plate = new ArmorDesh(aMatDesh, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", Fluids.STEAM, 64_000, 500, 50, 1).cloneStats((ArmorFSB) steamsuit_helmet).setUnlocalizedName("steamsuit_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":steamsuit_plate"); @@ -4720,12 +4365,11 @@ public class ModItems { ArmorMaterial aMatDiesel = EnumHelper.addArmorMaterial("HBM_BNUUY", 150, new int[] { 3, 8, 6, 3 }, 0); aMatDiesel.customCraftingMaterial = ModItems.plate_copper; - dieselsuit_helmet = new ArmorDiesel(aMatDiesel, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", Fluids.DIESEL, 64_000, 500, 50, 1).setThreshold(2F).setMod(0.7F) + dieselsuit_helmet = new ArmorDiesel(aMatDiesel, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", Fluids.DIESEL, 64_000, 500, 50, 1) .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 2)) .addEffect(new PotionEffect(Potion.jump.id, 20, 2)) .enableThermalSight(true) .enableVATS(true) - .addResistance("fall", 0) .setUnlocalizedName("dieselsuit_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":dieselsuit_helmet"); dieselsuit_plate = new ArmorDiesel(aMatDiesel, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", Fluids.DIESEL, 64_000, 500, 50, 1).cloneStats((ArmorFSB) dieselsuit_helmet).setUnlocalizedName("dieselsuit_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":dieselsuit_plate"); dieselsuit_legs = new ArmorDiesel(aMatDiesel, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", Fluids.DIESEL, 64_000, 500, 50, 1).cloneStats((ArmorFSB) dieselsuit_helmet).setUnlocalizedName("dieselsuit_legs").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":dieselsuit_legs"); @@ -4733,57 +4377,40 @@ public class ModItems { ArmorMaterial aMatAJR = EnumHelper.addArmorMaterial("HBM_T45AJR", 150, new int[] { 3, 8, 6, 3 }, 100); aMatAJR.customCraftingMaterial = ModItems.plate_armor_ajr; - ajr_helmet = new ArmorAJR(aMatAJR, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).setMod(0.25F).setCap(6.0F).setThreshold(4F) - .setFireproof(true) + ajr_helmet = new ArmorAJR(aMatAJR, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25) .enableVATS(true) .setHasGeigerSound(true) .setHasHardLanding(true) .addEffect(new PotionEffect(Potion.jump.id, 20, 0)) .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 0)) - .setBlastProtection(0.25F) - .setStep("hbm:step.metal") - .setJump("hbm:step.iron_jump") - .setFall("hbm:step.iron_land") - .addResistance("monoxide", 0F) - .addResistance("fall", 0) + .setStep("hbm:step.metal").setJump("hbm:step.iron_jump").setFall("hbm:step.iron_land") .hides(EnumPlayerPart.HAT) .setUnlocalizedName("ajr_helmet").setTextureName(RefStrings.MODID + ":ajr_helmet"); ajr_plate = new ArmorAJR(aMatAJR, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajr_helmet).setUnlocalizedName("ajr_plate").setTextureName(RefStrings.MODID + ":ajr_plate"); ajr_legs = new ArmorAJR(aMatAJR, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajr_helmet).setUnlocalizedName("ajr_legs").setTextureName(RefStrings.MODID + ":ajr_legs"); ajr_boots = new ArmorAJR(aMatAJR, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajr_helmet).setUnlocalizedName("ajr_boots").setTextureName(RefStrings.MODID + ":ajr_boots"); - ajro_helmet = new ArmorAJRO(aMatAJR, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).setMod(0.25F).setCap(6.0F).setThreshold(4F) - .setFireproof(true) + ajro_helmet = new ArmorAJRO(aMatAJR, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25) .enableVATS(true) .setHasGeigerSound(true) .setHasHardLanding(true) .addEffect(new PotionEffect(Potion.jump.id, 20, 0)) .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 0)) - .setBlastProtection(0.25F) - .setStep("hbm:step.metal") - .setJump("hbm:step.iron_jump") - .setFall("hbm:step.iron_land") - .addResistance("monoxide", 0F) - .addResistance("fall", 0) + .setStep("hbm:step.metal").setJump("hbm:step.iron_jump").setFall("hbm:step.iron_land") .hides(EnumPlayerPart.HAT) .setUnlocalizedName("ajro_helmet").setTextureName(RefStrings.MODID + ":ajro_helmet"); ajro_plate = new ArmorAJRO(aMatAJR, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajro_helmet).setUnlocalizedName("ajro_plate").setTextureName(RefStrings.MODID + ":ajro_plate"); ajro_legs = new ArmorAJRO(aMatAJR, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajro_helmet).setUnlocalizedName("ajro_legs").setTextureName(RefStrings.MODID + ":ajro_legs"); ajro_boots = new ArmorAJRO(aMatAJR, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajro_helmet).setUnlocalizedName("ajro_boots").setTextureName(RefStrings.MODID + ":ajro_boots"); - rpa_helmet = new ArmorRPA(aMatAJR, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).setMod(0.1F).setCap(6.0F).setThreshold(20F) - .setFireproof(true) + rpa_helmet = new ArmorRPA(aMatAJR, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25) .enableVATS(true) .setHasGeigerSound(true) .setHasHardLanding(true) .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 3)) - .setBlastProtection(0.25F) - .setProjectileProtection(0.25F) - .setProtectionLevel(1500) .setStep("hbm:step.powered") .setJump("hbm:step.powered") .setFall("hbm:step.powered") - .addResistance("fall", 0) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("rpa_helmet").setTextureName(RefStrings.MODID + ":rpa_helmet"); rpa_plate = new ArmorRPA(aMatAJR, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) rpa_helmet).setUnlocalizedName("rpa_plate").setTextureName(RefStrings.MODID + ":rpa_plate"); @@ -4792,8 +4419,7 @@ public class ModItems { ArmorMaterial aMatBJ = EnumHelper.addArmorMaterial("HBM_BLACKJACK", 150, new int[] { 3, 8, 6, 3 }, 100); aMatBJ.customCraftingMaterial = ModItems.plate_armor_lunar; - bj_helmet = new ArmorBJ(aMatBJ, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).setMod(0.25F).setCap(4.0F).setThreshold(4F) - .setFireproof(true) + bj_helmet = new ArmorBJ(aMatBJ, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100) .enableVATS(true) .enableThermalSight(true) .setHasGeigerSound(true) @@ -4802,12 +4428,9 @@ public class ModItems { .addEffect(new PotionEffect(Potion.jump.id, 20, 0)) .addEffect(new PotionEffect(Potion.field_76443_y.id, 20, 0)) .addEffect(new PotionEffect(HbmPotion.radx.id, 20, 0)) - .setBlastProtection(0.5F) - .setProtectionLevel(500F) .setStep("hbm:step.metal") .setJump("hbm:step.iron_jump") - .setFall("hbm:step.iron_land") - .addResistance("fall", 0).setUnlocalizedName("bj_helmet").setTextureName(RefStrings.MODID + ":bj_helmet"); + .setFall("hbm:step.iron_land").setUnlocalizedName("bj_helmet").setTextureName(RefStrings.MODID + ":bj_helmet"); bj_plate = new ArmorBJ(aMatBJ, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_plate").setTextureName(RefStrings.MODID + ":bj_plate"); bj_plate_jetpack = new ArmorBJJetpack(aMatBJ, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_plate_jetpack").setTextureName(RefStrings.MODID + ":bj_plate_jetpack"); bj_legs = new ArmorBJ(aMatBJ, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_legs").setTextureName(RefStrings.MODID + ":bj_legs"); @@ -4815,12 +4438,9 @@ public class ModItems { ArmorMaterial aMatEnv = EnumHelper.addArmorMaterial("HBM_ENV", 150, new int[] { 3, 8, 6, 3 }, 100); aMatEnv.customCraftingMaterial = ModItems.plate_armor_hev; - envsuit_helmet = new ArmorEnvsuit(aMatEnv, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 100_000, 1_000, 250, 0).setMod(0.5F).setThreshold(2.0F) + envsuit_helmet = new ArmorEnvsuit(aMatEnv, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 100_000, 1_000, 250, 0) .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 1)) .addEffect(new PotionEffect(Potion.jump.id, 20, 0)) - .addResistance("fall", 0.25F) - .addResistance("monoxide", 0F) - .addResistance("onFire", 0F) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("envsuit_helmet").setTextureName(RefStrings.MODID + ":envsuit_helmet"); envsuit_plate = new ArmorEnvsuit(aMatEnv, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 100_000, 1_000, 250, 0).cloneStats((ArmorFSB) envsuit_helmet).setUnlocalizedName("envsuit_plate").setTextureName(RefStrings.MODID + ":envsuit_plate"); @@ -4829,16 +4449,11 @@ public class ModItems { ArmorMaterial aMatHEV = EnumHelper.addArmorMaterial("HBM_HEV", 150, new int[] { 3, 8, 6, 3 }, 100); aMatHEV.customCraftingMaterial = ModItems.plate_armor_hev; - hev_helmet = new ArmorHEV(aMatHEV, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 2500, 0).setMod(0.20F).setCap(4.0F).setThreshold(2.0F) + hev_helmet = new ArmorHEV(aMatHEV, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 2500, 0) .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 1)) .addEffect(new PotionEffect(Potion.jump.id, 20, 0)) - .setBlastProtection(0.25F) - .setProtectionLevel(500F) .setHasGeigerSound(true) .setHasCustomGeiger(true) - .addResistance("fall", 0.5F) - .addResistance("monoxide", 0F) - .addResistance("onFire", 0F) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("hev_helmet").setTextureName(RefStrings.MODID + ":hev_helmet"); hev_plate = new ArmorHEV(aMatHEV, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 2500, 0).cloneStats((ArmorFSB) hev_helmet).setUnlocalizedName("hev_plate").setTextureName(RefStrings.MODID + ":hev_plate"); @@ -4850,20 +4465,14 @@ public class ModItems { ArmorMaterial aMatFau = EnumHelper.addArmorMaterial("HBM_DIGAMMA", 150, new int[] { 3, 8, 6, 3 }, 100); aMatFau.customCraftingMaterial = ModItems.plate_armor_fau; - fau_helmet = new ArmorDigamma(aMatFau, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 2500, 0).setMod(0.25F).setCap(4.0F).setThreshold(2.0F) + fau_helmet = new ArmorDigamma(aMatFau, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 2500, 0) .addEffect(new PotionEffect(Potion.jump.id, 20, 1)) - .setBlastProtection(0.05F) - .setMod(0.05F) .setHasGeigerSound(true) .enableThermalSight(true) .setHasHardLanding(true) .setStep("hbm:step.metal") .setJump("hbm:step.iron_jump") .setFall("hbm:step.iron_land") - .setProtectionLevel(1000F) - .addResistance("fall", 0F) - .addResistance("monoxide", 0F) - .setFireproof(true) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("fau_helmet").setTextureName(RefStrings.MODID + ":fau_helmet"); fau_plate = new ArmorDigamma(aMatFau, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 2500, 0).cloneStats((ArmorFSB) fau_helmet).setFullSetForHide().setUnlocalizedName("fau_plate").setTextureName(RefStrings.MODID + ":fau_plate"); @@ -4883,7 +4492,6 @@ public class ModItems { .setStep("hbm:step.metal") .setJump("hbm:step.iron_jump") .setFall("hbm:step.iron_land") - .setFireproof(true) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("dns_helmet").setTextureName(RefStrings.MODID + ":dns_helmet"); dns_plate = new ArmorDNT(aMatDNS, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000000, 1000000, 100000, 115).cloneStats((ArmorFSB) dns_helmet).setUnlocalizedName("dns_plate").setTextureName(RefStrings.MODID + ":dns_plate"); @@ -4892,14 +4500,12 @@ public class ModItems { ArmorMaterial aMatTrench = EnumHelper.addArmorMaterial("HBM_TRENCH", 150, new int[] { 3, 8, 6, 3 }, 100); aMatTrench.customCraftingMaterial = ModItems.plate_iron; - trenchmaster_helmet = new ArmorTrenchmaster(aMatTrench, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png").setMod(0.125F).setThreshold(5.0F) + trenchmaster_helmet = new ArmorTrenchmaster(aMatTrench, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png") .addEffect(new PotionEffect(Potion.damageBoost.id, 20, 2)) .addEffect(new PotionEffect(Potion.digSpeed.id, 20, 1)) .addEffect(new PotionEffect(Potion.jump.id, 20, 1)) .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 0)) .enableVATS(true) - .addResistance("fall", 0F) - .setFireproof(true) .setStepSize(1) .hides(EnumPlayerPart.HAT) .setUnlocalizedName("trenchmaster_helmet").setTextureName(RefStrings.MODID + ":trenchmaster_helmet"); @@ -4917,7 +4523,7 @@ public class ModItems { .addHitAbility(new WeaponAbility.ChainsawAbility(10)) .addHitAbility(new WeaponAbility.BeheaderAbility()).setShears().setUnlocalizedName("chainsaw").setTextureName(RefStrings.MODID + ":chainsaw"); - schrabidium_sword = new ItemSwordAbility(150, 0, MainRegistry.tMatSchrab) + schrabidium_sword = new ItemSwordAbility(75, 0, MainRegistry.tMatSchrab) .addHitAbility(new WeaponAbility.RadiationAbility(50F)) .addHitAbility(new WeaponAbility.VampireAbility(2F)) .setRarity(EnumRarity.rare).setUnlocalizedName("schrabidium_sword").setTextureName(RefStrings.MODID + ":schrabidium_sword"); @@ -4968,22 +4574,22 @@ public class ModItems { steel_shovel = new ItemToolAbility(3F, 0, MainRegistry.tMatSteel, EnumToolType.SHOVEL).setUnlocalizedName("steel_shovel").setTextureName(RefStrings.MODID + ":steel_shovel"); steel_hoe = new ModHoe(MainRegistry.tMatSteel).setUnlocalizedName("steel_hoe").setTextureName(RefStrings.MODID + ":steel_hoe"); - alloy_sword = new ItemSwordAbility(9F, 0, MainRegistry.tMatAlloy) + alloy_sword = new ItemSwordAbility(8F, 0, MainRegistry.tMatAlloy) .addHitAbility(new WeaponAbility.StunAbility(2)).setUnlocalizedName("alloy_sword").setTextureName(RefStrings.MODID + ":alloy_sword"); - alloy_pickaxe = new ItemToolAbility(6F, 0, MainRegistry.tMatAlloy, EnumToolType.PICKAXE) + alloy_pickaxe = new ItemToolAbility(5F, 0, MainRegistry.tMatAlloy, EnumToolType.PICKAXE) .addBreakAbility(new ToolAbility.RecursionAbility(3)).setUnlocalizedName("alloy_pickaxe").setTextureName(RefStrings.MODID + ":alloy_pickaxe"); alloy_axe = new ItemToolAbility(7F, 0, MainRegistry.tMatAlloy, EnumToolType.AXE) .addBreakAbility(new ToolAbility.RecursionAbility(3)) .addHitAbility(new WeaponAbility.BeheaderAbility()).setUnlocalizedName("alloy_axe").setTextureName(RefStrings.MODID + ":alloy_axe"); - alloy_shovel = new ItemToolAbility(5F, 0, MainRegistry.tMatAlloy, EnumToolType.SHOVEL) + alloy_shovel = new ItemToolAbility(4F, 0, MainRegistry.tMatAlloy, EnumToolType.SHOVEL) .addBreakAbility(new ToolAbility.RecursionAbility(3)).setUnlocalizedName("alloy_shovel").setTextureName(RefStrings.MODID + ":alloy_shovel"); alloy_hoe = new ModHoe(MainRegistry.tMatAlloy).setUnlocalizedName("alloy_hoe").setTextureName(RefStrings.MODID + ":alloy_hoe"); - cmb_sword = new ItemSwordAbility(50F, 0, MainRegistry.tMatCMB) + cmb_sword = new ItemSwordAbility(35F, 0, MainRegistry.tMatCMB) .addHitAbility(new WeaponAbility.StunAbility(2)) .addHitAbility(new WeaponAbility.VampireAbility(2F)).setUnlocalizedName("cmb_sword").setTextureName(RefStrings.MODID + ":cmb_sword"); @@ -4993,7 +4599,7 @@ public class ModItems { .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new LuckAbility(3)).setUnlocalizedName("cmb_pickaxe").setTextureName(RefStrings.MODID + ":cmb_pickaxe"); - cmb_axe = new ItemToolAbility(12.5F, 0, MainRegistry.tMatCMB, EnumToolType.AXE) + cmb_axe = new ItemToolAbility(30F, 0, MainRegistry.tMatCMB, EnumToolType.AXE) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SmelterAbility()) .addBreakAbility(new ToolAbility.SilkAbility()) @@ -5008,16 +4614,16 @@ public class ModItems { cmb_hoe = new ModHoe(MainRegistry.tMatCMB).setUnlocalizedName("cmb_hoe").setTextureName(RefStrings.MODID + ":cmb_hoe"); - elec_sword = new ItemSwordAbilityPower(15F, 0, MainRegistry.tMatElec, 500000, 1000, 100) + elec_sword = new ItemSwordAbilityPower(12.5F, 0, MainRegistry.tMatElec, 500000, 1000, 100) .addHitAbility(new WeaponAbility.StunAbility(5)).setUnlocalizedName("elec_sword").setTextureName(RefStrings.MODID + ":elec_sword_anim"); - elec_pickaxe = new ItemToolAbilityPower(10F, 0, MainRegistry.tMatElec, EnumToolType.PICKAXE, 500000, 1000, 100) + elec_pickaxe = new ItemToolAbilityPower(6F, 0, MainRegistry.tMatElec, EnumToolType.PICKAXE, 500000, 1000, 100) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new LuckAbility(2)).setUnlocalizedName("elec_pickaxe").setTextureName(RefStrings.MODID + ":elec_drill_anim"); - elec_axe = new ItemToolAbilityPower(12.5F, 0, MainRegistry.tMatElec, EnumToolType.AXE, 500000, 1000, 100) + elec_axe = new ItemToolAbilityPower(10F, 0, MainRegistry.tMatElec, EnumToolType.AXE, 500000, 1000, 100) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SilkAbility()) @@ -5025,13 +4631,13 @@ public class ModItems { .addHitAbility(new WeaponAbility.ChainsawAbility(15)) .addHitAbility(new WeaponAbility.BeheaderAbility()).setShears().setUnlocalizedName("elec_axe").setTextureName(RefStrings.MODID + ":elec_chainsaw_anim"); - elec_shovel = new ItemToolAbilityPower(7.5F, 0, MainRegistry.tMatElec, EnumToolType.SHOVEL, 500000, 1000, 100) + elec_shovel = new ItemToolAbilityPower(5F, 0, MainRegistry.tMatElec, EnumToolType.SHOVEL, 500000, 1000, 100) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new LuckAbility(2)).setUnlocalizedName("elec_shovel").setTextureName(RefStrings.MODID + ":elec_shovel_anim"); - desh_sword = new ItemSwordAbility(15F, 0, MainRegistry.tMatDesh) + desh_sword = new ItemSwordAbility(12.5F, 0, MainRegistry.tMatDesh) .addHitAbility(new WeaponAbility.StunAbility(2)).setUnlocalizedName("desh_sword").setTextureName(RefStrings.MODID + ":desh_sword"); desh_pickaxe = new ItemToolAbility(5F, -0.05, MainRegistry.tMatDesh, EnumToolType.PICKAXE) @@ -5040,7 +4646,7 @@ public class ModItems { .addBreakAbility(new ToolAbility.SilkAbility()) .addBreakAbility(new LuckAbility(2)).setUnlocalizedName("desh_pickaxe").setTextureName(RefStrings.MODID + ":desh_pickaxe"); - desh_axe = new ItemToolAbility(6.5F, -0.05, MainRegistry.tMatDesh, EnumToolType.AXE) + desh_axe = new ItemToolAbility(7.5F, -0.05, MainRegistry.tMatDesh, EnumToolType.AXE) .addBreakAbility(new ToolAbility.HammerAbility(1)) .addBreakAbility(new ToolAbility.RecursionAbility(3)) .addBreakAbility(new ToolAbility.SilkAbility()) @@ -5122,14 +4728,14 @@ public class ModItems { .addBreakAbility(new ToolAbility.CentrifugeAbility()).setMaxDamage(50).setUnlocalizedName("centri_stick").setTextureName(RefStrings.MODID + ":centri_stick"); smashing_hammer = new ItemToolAbility(12F, -0.1, MainRegistry.tMatSteel, EnumToolType.MINER) .addBreakAbility(new ToolAbility.ShredderAbility()).setMaxDamage(2500).setUnlocalizedName("smashing_hammer").setTextureName(RefStrings.MODID + ":smashing_hammer"); - drax = new ItemToolAbilityPower(15F, -0.05, MainRegistry.tMatElec, EnumToolType.MINER, 500000000, 100000, 5000) + drax = new ItemToolAbilityPower(10F, -0.05, MainRegistry.tMatElec, EnumToolType.MINER, 500000000, 100000, 5000) .addBreakAbility(new ToolAbility.SmelterAbility()) .addBreakAbility(new ToolAbility.ShredderAbility()) .addBreakAbility(new ToolAbility.LuckAbility(2)) .addBreakAbility(new ToolAbility.HammerAbility(1)) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(5)).setUnlocalizedName("drax").setTextureName(RefStrings.MODID + ":drax"); - drax_mk2 = new ItemToolAbilityPower(20F, -0.05, MainRegistry.tMatElec, EnumToolType.MINER, 1000000000, 250000, 7500) + drax_mk2 = new ItemToolAbilityPower(15F, -0.05, MainRegistry.tMatElec, EnumToolType.MINER, 1000000000, 250000, 7500) .addBreakAbility(new ToolAbility.SmelterAbility()) .addBreakAbility(new ToolAbility.ShredderAbility()) .addBreakAbility(new ToolAbility.CentrifugeAbility()) @@ -5162,7 +4768,7 @@ public class ModItems { .addHitAbility(new WeaponAbility.VampireAbility(2F)) .addHitAbility(new WeaponAbility.BeheaderAbility()) .setDepthRockBreaker().setUnlocalizedName("bismuth_pickaxe").setTextureName(RefStrings.MODID + ":bismuth_pickaxe"); - bismuth_axe = new ItemToolAbility(125F, 0, matBismuth, EnumToolType.AXE) + bismuth_axe = new ItemToolAbility(25F, 0, matBismuth, EnumToolType.AXE) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(4)) .addBreakAbility(new ToolAbility.ShredderAbility()) @@ -5184,7 +4790,7 @@ public class ModItems { .addHitAbility(new WeaponAbility.VampireAbility(2F)) .addHitAbility(new WeaponAbility.BeheaderAbility()) .setDepthRockBreaker().setUnlocalizedName("volcanic_pickaxe").setTextureName(RefStrings.MODID + ":volcanic_pickaxe"); - volcanic_axe = new ItemToolAbility(125F, 0, matVolcano, EnumToolType.AXE) + volcanic_axe = new ItemToolAbility(25F, 0, matVolcano, EnumToolType.AXE) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(4)) .addBreakAbility(new ToolAbility.SmelterAbility()) @@ -5205,7 +4811,7 @@ public class ModItems { .addHitAbility(new WeaponAbility.VampireAbility(5F)) .addHitAbility(new WeaponAbility.BeheaderAbility()) .setDepthRockBreaker().setUnlocalizedName("chlorophyte_pickaxe").setTextureName(RefStrings.MODID + ":chlorophyte_pickaxe"); - chlorophyte_axe = new ItemToolAbility(175F, 0, matChlorophyte, EnumToolType.AXE) + chlorophyte_axe = new ItemToolAbility(50F, 0, matChlorophyte, EnumToolType.AXE) .addBreakAbility(new ToolAbility.HammerAbility(2)) .addBreakAbility(new ToolAbility.RecursionAbility(4)) .addBreakAbility(new ToolAbility.LuckAbility(4)) @@ -5228,7 +4834,7 @@ public class ModItems { .addHitAbility(new WeaponAbility.PhosphorusAbility(60)) .addHitAbility(new WeaponAbility.BeheaderAbility()) .setDepthRockBreaker().setUnlocalizedName("mese_pickaxe").setTextureName(RefStrings.MODID + ":mese_pickaxe"); - mese_axe = new ItemToolAbility(250F, 0, matMese, EnumToolType.AXE) + mese_axe = new ItemToolAbility(75F, 0, matMese, EnumToolType.AXE) .addBreakAbility(new ToolAbility.HammerAbility(3)) .addBreakAbility(new ToolAbility.RecursionAbility(5)) .addBreakAbility(new ToolAbility.SilkAbility()) @@ -5248,18 +4854,18 @@ public class ModItems { .addBreakAbility(new ToolAbility.HammerAbility(1)).setUnlocalizedName("dwarven_pickaxe").setMaxDamage(250).setTextureName(RefStrings.MODID + ":dwarven_pickaxe"); ToolMaterial matMeteorite = EnumHelper.addToolMaterial("HBM_METEORITE", 4, 0, 50F, 0.0F, 200).setRepairItem(new ItemStack(ModItems.plate_paa)); - meteorite_sword = new ItemSwordMeteorite(10F, 0, matMeteorite).setUnlocalizedName("meteorite_sword").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_seared = new ItemSwordMeteorite(15F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_seared").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_reforged = new ItemSwordMeteorite(25F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_reforged").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_hardened = new ItemSwordMeteorite(35F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_hardened").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_alloyed = new ItemSwordMeteorite(50F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_alloyed").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_machined = new ItemSwordMeteorite(65F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_machined").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_treated = new ItemSwordMeteorite(80F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_treated").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_etched = new ItemSwordMeteorite(100F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_etched").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_bred = new ItemSwordMeteorite(125F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_bred").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_irradiated = new ItemSwordMeteorite(175F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_irradiated").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_fused = new ItemSwordMeteorite(250F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_fused").setTextureName(RefStrings.MODID + ":meteorite_sword"); - meteorite_sword_baleful = new ItemSwordMeteorite(500F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_baleful").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword = new ItemSwordMeteorite(9F, 0, matMeteorite).setUnlocalizedName("meteorite_sword").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_seared = new ItemSwordMeteorite(10F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_seared").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_reforged = new ItemSwordMeteorite(12.5F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_reforged").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_hardened = new ItemSwordMeteorite(15F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_hardened").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_alloyed = new ItemSwordMeteorite(17.5F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_alloyed").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_machined = new ItemSwordMeteorite(20F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_machined").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_treated = new ItemSwordMeteorite(22.5F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_treated").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_etched = new ItemSwordMeteorite(25F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_etched").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_bred = new ItemSwordMeteorite(30F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_bred").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_irradiated = new ItemSwordMeteorite(35F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_irradiated").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_fused = new ItemSwordMeteorite(50F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_fused").setTextureName(RefStrings.MODID + ":meteorite_sword"); + meteorite_sword_baleful = new ItemSwordMeteorite(75F, 0, matMeteorite).setUnlocalizedName("meteorite_sword_baleful").setTextureName(RefStrings.MODID + ":meteorite_sword"); mask_of_infamy = new MaskOfInfamy(ArmorMaterial.IRON, 0).setUnlocalizedName("mask_of_infamy").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":mask_of_infamy"); @@ -5272,12 +4878,12 @@ public class ModItems { hazmat_legs_red = new ArmorHazmat(MainRegistry.aMatHaz2, 2, RefStrings.MODID + ":textures/armor/hazmat_2_red.png").setUnlocalizedName("hazmat_legs_red").setTextureName(RefStrings.MODID + ":hazmat_legs_red"); hazmat_boots_red = new ArmorHazmat(MainRegistry.aMatHaz2, 3, RefStrings.MODID + ":textures/armor/hazmat_1_red.png").setUnlocalizedName("hazmat_boots_red").setTextureName(RefStrings.MODID + ":hazmat_boots_red"); hazmat_helmet_grey = new ArmorHazmatMask(MainRegistry.aMatHaz3, 0, "hbm:textures/models/ModelHazGrey.png") - .setFireproof(true).setUnlocalizedName("hazmat_helmet_grey").setTextureName(RefStrings.MODID + ":hazmat_helmet_grey"); + .setUnlocalizedName("hazmat_helmet_grey").setTextureName(RefStrings.MODID + ":hazmat_helmet_grey"); hazmat_plate_grey = new ArmorHazmat(MainRegistry.aMatHaz3, 1, RefStrings.MODID + ":textures/armor/hazmat_1_grey.png").cloneStats((ArmorFSB) hazmat_helmet_grey).setUnlocalizedName("hazmat_plate_grey").setTextureName(RefStrings.MODID + ":hazmat_plate_grey"); hazmat_legs_grey = new ArmorHazmat(MainRegistry.aMatHaz3, 2, RefStrings.MODID + ":textures/armor/hazmat_2_grey.png").cloneStats((ArmorFSB) hazmat_helmet_grey).setUnlocalizedName("hazmat_legs_grey").setTextureName(RefStrings.MODID + ":hazmat_legs_grey"); hazmat_boots_grey = new ArmorHazmat(MainRegistry.aMatHaz3, 3, RefStrings.MODID + ":textures/armor/hazmat_1_grey.png").cloneStats((ArmorFSB) hazmat_helmet_grey).setUnlocalizedName("hazmat_boots_grey").setTextureName(RefStrings.MODID + ":hazmat_boots_grey"); hazmat_paa_helmet = new ArmorHazmatMask(MainRegistry.aMatPaa, 0, RefStrings.MODID + ":textures/armor/hazmat_paa_1.png") - .setFireproof(true).setUnlocalizedName("hazmat_paa_helmet").setTextureName(RefStrings.MODID + ":hazmat_paa_helmet"); + .setUnlocalizedName("hazmat_paa_helmet").setTextureName(RefStrings.MODID + ":hazmat_paa_helmet"); hazmat_paa_plate = new ArmorHazmat(MainRegistry.aMatPaa, 1, RefStrings.MODID + ":textures/armor/hazmat_paa_1.png").cloneStats((ArmorFSB) hazmat_paa_helmet).setUnlocalizedName("hazmat_paa_plate").setTextureName(RefStrings.MODID + ":hazmat_paa_plate"); hazmat_paa_legs = new ArmorHazmat(MainRegistry.aMatPaa, 2, RefStrings.MODID + ":textures/armor/hazmat_paa_2.png").cloneStats((ArmorFSB) hazmat_paa_helmet).setUnlocalizedName("hazmat_paa_legs").setTextureName(RefStrings.MODID + ":hazmat_paa_legs"); hazmat_paa_boots = new ArmorHazmat(MainRegistry.aMatPaa, 3, RefStrings.MODID + ":textures/armor/hazmat_paa_1.png").cloneStats((ArmorFSB) hazmat_paa_helmet).setUnlocalizedName("hazmat_paa_boots").setTextureName(RefStrings.MODID + ":hazmat_paa_boots"); @@ -5285,9 +4891,6 @@ public class ModItems { ArmorMaterial aMatLiquidator = EnumHelper.addArmorMaterial("HBM_LIQUIDATOR", 750, new int[] { 3, 8, 6, 3 }, 10); aMatLiquidator.customCraftingMaterial = ModItems.plate_lead; liquidator_helmet = new ArmorLiquidatorMask(aMatLiquidator, 0, RefStrings.MODID + ":textures/armor/liquidator_helmet.png") - .setThreshold(1.0F) - .setBlastProtection(0.25F) - .setFireproof(true) .setStep("hbm:step.metal") .setJump("hbm:step.iron_jump") .setFall("hbm:step.iron_land").setUnlocalizedName("liquidator_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":liquidator_helmet"); @@ -5299,8 +4902,8 @@ public class ModItems { jetpack_break = new JetpackBreak(Fluids.KEROSENE, 12000).setUnlocalizedName("jetpack_break").setCreativeTab(CreativeTabs.tabCombat).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":jetpack_break"); jetpack_fly = new JetpackRegular(Fluids.KEROSENE, 12000).setUnlocalizedName("jetpack_fly").setCreativeTab(CreativeTabs.tabCombat).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":jetpack_fly"); jetpack_vector = new JetpackVectorized(Fluids.KEROSENE, 16000).setUnlocalizedName("jetpack_vector").setCreativeTab(CreativeTabs.tabCombat).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":jetpack_vector"); - wings_murk = new WingsMurk(MainRegistry.aMatCobalt).setUnlocalizedName("wings_murk").setCreativeTab(CreativeTabs.tabCombat).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":wings_murk"); - wings_limp = new WingsMurk(MainRegistry.aMatCobalt).setUnlocalizedName("wings_limp").setCreativeTab(CreativeTabs.tabCombat).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":wings_limp"); + wings_murk = new WingsMurk().setUnlocalizedName("wings_murk").setCreativeTab(CreativeTabs.tabCombat).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":wings_murk"); + wings_limp = new WingsMurk().setUnlocalizedName("wings_limp").setCreativeTab(CreativeTabs.tabCombat).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":wings_limp"); cape_radiation = new ArmorModel(ArmorMaterial.CHAIN, 1).setUnlocalizedName("cape_radiation").setCreativeTab(MainRegistry.consumableTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":cape_radiation"); cape_gasmask = new ArmorModel(ArmorMaterial.CHAIN, 1).setUnlocalizedName("cape_gasmask").setCreativeTab(MainRegistry.consumableTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":cape_gasmask"); @@ -5376,6 +4979,7 @@ public class ModItems { book_lore = new ItemBookLore().setUnlocalizedName("book_lore").setCreativeTab(null).setTextureName(RefStrings.MODID + ":book_pages"); holotape_image = new ItemHolotapeImage().setUnlocalizedName("holotape_image").setCreativeTab(null).setTextureName(RefStrings.MODID + ":holotape"); holotape_damaged = new Item().setUnlocalizedName("holotape_damaged").setCreativeTab(null).setTextureName(RefStrings.MODID + ":holotape_damaged"); + clay_tablet = new ItemClayTablet().setUnlocalizedName("clay_tablet").setCreativeTab(null).setTextureName(RefStrings.MODID + ":clay_tablet"); polaroid = new ItemPolaroid().setUnlocalizedName("polaroid").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":polaroid_" + MainRegistry.polaroidID); glitch = new ItemGlitch().setUnlocalizedName("glitch").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":glitch_" + MainRegistry.polaroidID); @@ -5386,14 +4990,6 @@ public class ModItems { book_lemegeton = new ItemBookLemegeton().setUnlocalizedName("book_lemegeton").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":book_lemegeton"); burnt_bark = new ItemCustomLore().setUnlocalizedName("burnt_bark").setCreativeTab(null).setTextureName(RefStrings.MODID + ":burnt_bark"); - b_smoke1 = new Item().setUnlocalizedName("b_smoke1").setTextureName(RefStrings.MODID + ":b_smoke1"); - b_smoke2 = new Item().setUnlocalizedName("b_smoke2").setTextureName(RefStrings.MODID + ":b_smoke2"); - b_smoke3 = new Item().setUnlocalizedName("b_smoke3").setTextureName(RefStrings.MODID + ":b_smoke3"); - b_smoke4 = new Item().setUnlocalizedName("b_smoke4").setTextureName(RefStrings.MODID + ":b_smoke4"); - b_smoke5 = new Item().setUnlocalizedName("b_smoke5").setTextureName(RefStrings.MODID + ":b_smoke5"); - b_smoke6 = new Item().setUnlocalizedName("b_smoke6").setTextureName(RefStrings.MODID + ":b_smoke6"); - b_smoke7 = new Item().setUnlocalizedName("b_smoke7").setTextureName(RefStrings.MODID + ":b_smoke7"); - b_smoke8 = new Item().setUnlocalizedName("b_smoke8").setTextureName(RefStrings.MODID + ":b_smoke8"); chlorine1 = new Item().setUnlocalizedName("chlorine1").setTextureName(RefStrings.MODID + ":chlorine1"); chlorine2 = new Item().setUnlocalizedName("chlorine2").setTextureName(RefStrings.MODID + ":chlorine2"); chlorine3 = new Item().setUnlocalizedName("chlorine3").setTextureName(RefStrings.MODID + ":chlorine3"); @@ -5426,26 +5022,6 @@ public class ModItems { orange6 = new Item().setUnlocalizedName("orange6").setTextureName(RefStrings.MODID + ":orange6"); orange7 = new Item().setUnlocalizedName("orange7").setTextureName(RefStrings.MODID + ":orange7"); orange8 = new Item().setUnlocalizedName("orange8").setTextureName(RefStrings.MODID + ":orange8"); - flame_1 = new Item().setUnlocalizedName("flame_1").setTextureName(RefStrings.MODID + ":flame_1"); - flame_2 = new Item().setUnlocalizedName("flame_2").setTextureName(RefStrings.MODID + ":flame_2"); - flame_3 = new Item().setUnlocalizedName("flame_3").setTextureName(RefStrings.MODID + ":flame_3"); - flame_4 = new Item().setUnlocalizedName("flame_4").setTextureName(RefStrings.MODID + ":flame_4"); - flame_5 = new Item().setUnlocalizedName("flame_5").setTextureName(RefStrings.MODID + ":flame_5"); - flame_6 = new Item().setUnlocalizedName("flame_6").setTextureName(RefStrings.MODID + ":flame_6"); - flame_7 = new Item().setUnlocalizedName("flame_7").setTextureName(RefStrings.MODID + ":flame_7"); - flame_8 = new Item().setUnlocalizedName("flame_8").setTextureName(RefStrings.MODID + ":flame_8"); - flame_9 = new Item().setUnlocalizedName("flame_9").setTextureName(RefStrings.MODID + ":flame_9"); - flame_10 = new Item().setUnlocalizedName("flame_10").setTextureName(RefStrings.MODID + ":flame_10"); - ln2_1 = new Item().setUnlocalizedName("ln2_1").setTextureName(RefStrings.MODID + ":ln2_1"); - ln2_2 = new Item().setUnlocalizedName("ln2_2").setTextureName(RefStrings.MODID + ":ln2_2"); - ln2_3 = new Item().setUnlocalizedName("ln2_3").setTextureName(RefStrings.MODID + ":ln2_3"); - ln2_4 = new Item().setUnlocalizedName("ln2_4").setTextureName(RefStrings.MODID + ":ln2_4"); - ln2_5 = new Item().setUnlocalizedName("ln2_5").setTextureName(RefStrings.MODID + ":ln2_5"); - ln2_6 = new Item().setUnlocalizedName("ln2_6").setTextureName(RefStrings.MODID + ":ln2_6"); - ln2_7 = new Item().setUnlocalizedName("ln2_7").setTextureName(RefStrings.MODID + ":ln2_7"); - ln2_8 = new Item().setUnlocalizedName("ln2_8").setTextureName(RefStrings.MODID + ":ln2_8"); - ln2_9 = new Item().setUnlocalizedName("ln2_9").setTextureName(RefStrings.MODID + ":ln2_9"); - ln2_10 = new Item().setUnlocalizedName("ln2_10").setTextureName(RefStrings.MODID + ":ln2_10"); nothing = new Item().setUnlocalizedName("nothing").setTextureName(RefStrings.MODID + ":nothing"); @@ -5459,6 +5035,8 @@ public class ModItems { mysteryshovel = new ItemMS().setUnlocalizedName("mysteryshovel").setFull3D().setMaxStackSize(1).setTextureName(RefStrings.MODID + ":cursed_shovel"); memory = new ItemBattery(Long.MAX_VALUE / 100L, 100000000000000L, 100000000000000L).setUnlocalizedName("memory").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":mo8_anim"); + GunFactory.init(); + FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.mud_fluid, 1000), new ItemStack(ModItems.bucket_mud), new ItemStack(Items.bucket)); FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.acid_fluid, 1000), new ItemStack(ModItems.bucket_acid), new ItemStack(Items.bucket)); FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.toxic_fluid, 1000), new ItemStack(ModItems.bucket_toxic), new ItemStack(Items.bucket)); @@ -5562,16 +5140,13 @@ public class ModItems { GameRegistry.registerItem(ingot_hes, ingot_hes.getUnlocalizedName()); GameRegistry.registerItem(ingot_les, ingot_les.getUnlocalizedName()); GameRegistry.registerItem(ingot_australium, ingot_australium.getUnlocalizedName()); - GameRegistry.registerItem(ingot_weidanium, ingot_weidanium.getUnlocalizedName()); - GameRegistry.registerItem(ingot_reiium, ingot_reiium.getUnlocalizedName()); - GameRegistry.registerItem(ingot_unobtainium, ingot_unobtainium.getUnlocalizedName()); - GameRegistry.registerItem(ingot_daffergon, ingot_daffergon.getUnlocalizedName()); - GameRegistry.registerItem(ingot_verticium, ingot_verticium.getUnlocalizedName()); GameRegistry.registerItem(ingot_lanthanium, ingot_lanthanium.getUnlocalizedName()); GameRegistry.registerItem(ingot_actinium, ingot_actinium.getUnlocalizedName()); GameRegistry.registerItem(ingot_desh, ingot_desh.getUnlocalizedName()); GameRegistry.registerItem(ingot_ferrouranium, ingot_ferrouranium.getUnlocalizedName()); GameRegistry.registerItem(ingot_starmetal, ingot_starmetal.getUnlocalizedName()); + GameRegistry.registerItem(ingot_gunmetal, ingot_gunmetal.getUnlocalizedName()); + GameRegistry.registerItem(ingot_weaponsteel, ingot_weaponsteel.getUnlocalizedName()); GameRegistry.registerItem(ingot_saturnite, ingot_saturnite.getUnlocalizedName()); GameRegistry.registerItem(ingot_euphemium, ingot_euphemium.getUnlocalizedName()); GameRegistry.registerItem(ingot_dineutronium, ingot_dineutronium.getUnlocalizedName()); @@ -5602,6 +5177,7 @@ public class ModItems { GameRegistry.registerItem(rocket_fuel, rocket_fuel.getUnlocalizedName()); GameRegistry.registerItem(ingot_fiberglass, ingot_fiberglass.getUnlocalizedName()); GameRegistry.registerItem(ingot_asbestos, ingot_asbestos.getUnlocalizedName()); + GameRegistry.registerItem(ingot_raw, ingot_raw.getUnlocalizedName()); //Billets GameRegistry.registerItem(billet_uranium, billet_uranium.getUnlocalizedName()); @@ -5741,11 +5317,6 @@ public class ModItems { GameRegistry.registerItem(powder_astatine, powder_astatine.getUnlocalizedName()); GameRegistry.registerItem(powder_caesium, powder_caesium.getUnlocalizedName()); GameRegistry.registerItem(powder_australium, powder_australium.getUnlocalizedName()); - GameRegistry.registerItem(powder_weidanium, powder_weidanium.getUnlocalizedName()); - GameRegistry.registerItem(powder_reiium, powder_reiium.getUnlocalizedName()); - GameRegistry.registerItem(powder_unobtainium, powder_unobtainium.getUnlocalizedName()); - GameRegistry.registerItem(powder_daffergon, powder_daffergon.getUnlocalizedName()); - GameRegistry.registerItem(powder_verticium, powder_verticium.getUnlocalizedName()); GameRegistry.registerItem(powder_strontium, powder_strontium.getUnlocalizedName()); GameRegistry.registerItem(powder_cobalt, powder_cobalt.getUnlocalizedName()); GameRegistry.registerItem(powder_cobalt_tiny, powder_cobalt_tiny.getUnlocalizedName()); @@ -5915,11 +5486,6 @@ public class ModItems { GameRegistry.registerItem(nugget_australium, nugget_australium.getUnlocalizedName()); GameRegistry.registerItem(nugget_australium_lesser, nugget_australium_lesser.getUnlocalizedName()); GameRegistry.registerItem(nugget_australium_greater, nugget_australium_greater.getUnlocalizedName()); - GameRegistry.registerItem(nugget_weidanium, nugget_weidanium.getUnlocalizedName()); - GameRegistry.registerItem(nugget_reiium, nugget_reiium.getUnlocalizedName()); - GameRegistry.registerItem(nugget_unobtainium, nugget_unobtainium.getUnlocalizedName()); - GameRegistry.registerItem(nugget_daffergon, nugget_daffergon.getUnlocalizedName()); - GameRegistry.registerItem(nugget_verticium, nugget_verticium.getUnlocalizedName()); GameRegistry.registerItem(nugget_desh, nugget_desh.getUnlocalizedName()); GameRegistry.registerItem(nugget_euphemium, nugget_euphemium.getUnlocalizedName()); GameRegistry.registerItem(nugget_dineutronium, nugget_dineutronium.getUnlocalizedName()); @@ -5939,6 +5505,8 @@ public class ModItems { GameRegistry.registerItem(plate_schrabidium, plate_schrabidium.getUnlocalizedName()); GameRegistry.registerItem(plate_combine_steel, plate_combine_steel.getUnlocalizedName()); GameRegistry.registerItem(plate_mixed, plate_mixed.getUnlocalizedName()); + GameRegistry.registerItem(plate_gunmetal, plate_gunmetal.getUnlocalizedName()); + GameRegistry.registerItem(plate_weaponsteel, plate_weaponsteel.getUnlocalizedName()); GameRegistry.registerItem(plate_saturnite, plate_saturnite.getUnlocalizedName()); GameRegistry.registerItem(plate_paa, plate_paa.getUnlocalizedName()); GameRegistry.registerItem(plate_polymer, plate_polymer.getUnlocalizedName()); @@ -5979,14 +5547,6 @@ public class ModItems { GameRegistry.registerItem(filter_coal, filter_coal.getUnlocalizedName()); //Wires - GameRegistry.registerItem(wire_aluminium, wire_aluminium.getUnlocalizedName()); - GameRegistry.registerItem(wire_copper, wire_copper.getUnlocalizedName()); - GameRegistry.registerItem(wire_tungsten, wire_tungsten.getUnlocalizedName()); - GameRegistry.registerItem(wire_red_copper, wire_red_copper.getUnlocalizedName()); - GameRegistry.registerItem(wire_advanced_alloy, wire_advanced_alloy.getUnlocalizedName()); - GameRegistry.registerItem(wire_gold, wire_gold.getUnlocalizedName()); - GameRegistry.registerItem(wire_schrabidium, wire_schrabidium.getUnlocalizedName()); - GameRegistry.registerItem(wire_magnetized_tungsten, wire_magnetized_tungsten.getUnlocalizedName()); GameRegistry.registerItem(wire_fine, wire_fine.getUnlocalizedName()); GameRegistry.registerItem(wire_dense, wire_dense.getUnlocalizedName()); @@ -6005,15 +5565,9 @@ public class ModItems { GameRegistry.registerItem(motor_desh, motor_desh.getUnlocalizedName()); GameRegistry.registerItem(motor_bismuth, motor_bismuth.getUnlocalizedName()); GameRegistry.registerItem(centrifuge_element, centrifuge_element.getUnlocalizedName()); - //GameRegistry.registerItem(centrifuge_tower, centrifuge_tower.getUnlocalizedName()); - //GameRegistry.registerItem(magnet_dee, magnet_dee.getUnlocalizedName()); GameRegistry.registerItem(magnet_circular, magnet_circular.getUnlocalizedName()); - //GameRegistry.registerItem(cyclotron_tower, cyclotron_tower.getUnlocalizedName()); GameRegistry.registerItem(reactor_core, reactor_core.getUnlocalizedName()); GameRegistry.registerItem(rtg_unit, rtg_unit.getUnlocalizedName()); - //GameRegistry.registerItem(thermo_unit_empty, thermo_unit_empty.getUnlocalizedName()); - //GameRegistry.registerItem(thermo_unit_endo, thermo_unit_endo.getUnlocalizedName()); - //GameRegistry.registerItem(thermo_unit_exo, thermo_unit_exo.getUnlocalizedName()); GameRegistry.registerItem(levitation_unit, levitation_unit.getUnlocalizedName()); GameRegistry.registerItem(pipes_steel, pipes_steel.getUnlocalizedName()); GameRegistry.registerItem(drill_titanium, drill_titanium.getUnlocalizedName()); @@ -6028,6 +5582,13 @@ public class ModItems { GameRegistry.registerItem(parts_legendary, parts_legendary.getUnlocalizedName()); GameRegistry.registerItem(gear_large, gear_large.getUnlocalizedName()); GameRegistry.registerItem(sawblade, sawblade.getUnlocalizedName()); + GameRegistry.registerItem(part_barrel_light, part_barrel_light.getUnlocalizedName()); + GameRegistry.registerItem(part_barrel_heavy, part_barrel_heavy.getUnlocalizedName()); + GameRegistry.registerItem(part_receiver_light, part_receiver_light.getUnlocalizedName()); + GameRegistry.registerItem(part_receiver_heavy, part_receiver_heavy.getUnlocalizedName()); + GameRegistry.registerItem(part_mechanism, part_mechanism.getUnlocalizedName()); + GameRegistry.registerItem(part_stock, part_stock.getUnlocalizedName()); + GameRegistry.registerItem(part_grip, part_grip.getUnlocalizedName()); //Plant Products GameRegistry.registerItem(plant_item, plant_item.getUnlocalizedName()); @@ -6119,39 +5680,12 @@ public class ModItems { GameRegistry.registerItem(mechanism_launcher_1, mechanism_launcher_1.getUnlocalizedName()); GameRegistry.registerItem(mechanism_launcher_2, mechanism_launcher_2.getUnlocalizedName()); GameRegistry.registerItem(mechanism_special, mechanism_special.getUnlocalizedName()); - - //Casings - GameRegistry.registerItem(casing_357, casing_357.getUnlocalizedName()); - GameRegistry.registerItem(casing_44, casing_44.getUnlocalizedName()); - GameRegistry.registerItem(casing_9, casing_9.getUnlocalizedName()); - GameRegistry.registerItem(casing_50, casing_50.getUnlocalizedName()); - GameRegistry.registerItem(casing_buckshot, casing_buckshot.getUnlocalizedName()); + + //Casing + GameRegistry.registerItem(casing, casing.getUnlocalizedName()); //Bullet Assemblies - GameRegistry.registerItem(assembly_iron, assembly_iron.getUnlocalizedName()); - GameRegistry.registerItem(assembly_steel, assembly_steel.getUnlocalizedName()); - GameRegistry.registerItem(assembly_lead, assembly_lead.getUnlocalizedName()); - GameRegistry.registerItem(assembly_gold, assembly_gold.getUnlocalizedName()); - GameRegistry.registerItem(assembly_schrabidium, assembly_schrabidium.getUnlocalizedName()); - GameRegistry.registerItem(assembly_nightmare, assembly_nightmare.getUnlocalizedName()); - GameRegistry.registerItem(assembly_desh, assembly_desh.getUnlocalizedName()); - GameRegistry.registerItem(assembly_nopip, assembly_nopip.getUnlocalizedName()); - GameRegistry.registerItem(assembly_smg, assembly_smg.getUnlocalizedName()); - GameRegistry.registerItem(assembly_556, assembly_556.getUnlocalizedName()); - GameRegistry.registerItem(assembly_762, assembly_762.getUnlocalizedName()); - GameRegistry.registerItem(assembly_45, assembly_45.getUnlocalizedName()); - GameRegistry.registerItem(assembly_uzi, assembly_uzi.getUnlocalizedName()); - GameRegistry.registerItem(assembly_lacunae, assembly_lacunae.getUnlocalizedName()); - GameRegistry.registerItem(assembly_actionexpress, assembly_actionexpress.getUnlocalizedName()); - GameRegistry.registerItem(assembly_calamity, assembly_calamity.getUnlocalizedName()); GameRegistry.registerItem(assembly_nuke, assembly_nuke.getUnlocalizedName()); - GameRegistry.registerItem(assembly_luna, assembly_luna.getUnlocalizedName()); - - //Folly Parts - GameRegistry.registerItem(folly_shell, folly_shell.getUnlocalizedName()); - GameRegistry.registerItem(folly_bullet, folly_bullet.getUnlocalizedName()); - GameRegistry.registerItem(folly_bullet_nuclear, folly_bullet_nuclear.getUnlocalizedName()); - GameRegistry.registerItem(folly_bullet_du, folly_bullet_du.getUnlocalizedName()); //Wiring GameRegistry.registerItem(wiring_red_copper, wiring_red_copper.getUnlocalizedName()); @@ -6171,7 +5705,6 @@ public class ModItems { GameRegistry.registerItem(pellet_rtg_actinium, pellet_rtg_actinium.getUnlocalizedName()); GameRegistry.registerItem(pellet_rtg_polonium, pellet_rtg_polonium.getUnlocalizedName()); GameRegistry.registerItem(pellet_rtg_americium, pellet_rtg_americium.getUnlocalizedName()); - GameRegistry.registerItem(pellet_rtg_berkelium, pellet_rtg_berkelium.getUnlocalizedName()); GameRegistry.registerItem(pellet_rtg_gold, pellet_rtg_gold.getUnlocalizedName()); GameRegistry.registerItem(pellet_rtg_lead, pellet_rtg_lead.getUnlocalizedName()); GameRegistry.registerItem(pellet_rtg_depleted, pellet_rtg_depleted.getUnlocalizedName()); @@ -6206,6 +5739,9 @@ public class ModItems { GameRegistry.registerItem(demon_core_open, demon_core_open.getUnlocalizedName()); GameRegistry.registerItem(demon_core_closed, demon_core_closed.getUnlocalizedName()); + //PA + GameRegistry.registerItem(pa_coil, pa_coil.getUnlocalizedName()); + //Particle Containers GameRegistry.registerItem(particle_empty, particle_empty.getUnlocalizedName()); GameRegistry.registerItem(particle_hydrogen, particle_hydrogen.getUnlocalizedName()); @@ -6600,6 +6136,7 @@ public class ModItems { GameRegistry.registerItem(rbmk_fuel_zfb_am_mix, rbmk_fuel_zfb_am_mix.getUnlocalizedName()); GameRegistry.registerItem(rbmk_fuel_drx, rbmk_fuel_drx.getUnlocalizedName()); GameRegistry.registerItem(rbmk_fuel_test, rbmk_fuel_test.getUnlocalizedName()); + //GameRegistry.registerItem(rbmk_fuel_curve, rbmk_fuel_curve.getUnlocalizedName()); GameRegistry.registerItem(rbmk_pellet_ueu, rbmk_pellet_ueu.getUnlocalizedName()); GameRegistry.registerItem(rbmk_pellet_meu, rbmk_pellet_meu.getUnlocalizedName()); @@ -6692,12 +6229,14 @@ public class ModItems { GameRegistry.registerItem(power_net_tool, power_net_tool.getUnlocalizedName()); GameRegistry.registerItem(analysis_tool, analysis_tool.getUnlocalizedName()); GameRegistry.registerItem(coupling_tool, coupling_tool.getUnlocalizedName()); + GameRegistry.registerItem(settings_tool, settings_tool.getUnlocalizedName()); GameRegistry.registerItem(dosimeter, dosimeter.getUnlocalizedName()); GameRegistry.registerItem(geiger_counter, geiger_counter.getUnlocalizedName()); GameRegistry.registerItem(digamma_diagnostic, digamma_diagnostic.getUnlocalizedName()); GameRegistry.registerItem(pollution_detector, pollution_detector.getUnlocalizedName()); GameRegistry.registerItem(containment_box, containment_box.getUnlocalizedName()); GameRegistry.registerItem(plastic_bag, plastic_bag.getUnlocalizedName()); + GameRegistry.registerItem(casing_bag, casing_bag.getUnlocalizedName()); //Keys and Locks GameRegistry.registerItem(key, key.getUnlocalizedName()); @@ -6910,170 +6449,74 @@ public class ModItems { GameRegistry.registerItem(sat_relay, sat_relay.getUnlocalizedName()); //Guns - GameRegistry.registerItem(gun_revolver, gun_revolver.getUnlocalizedName()); - GameRegistry.registerItem(gun_revolver_saturnite, gun_revolver_saturnite.getUnlocalizedName()); - GameRegistry.registerItem(gun_revolver_gold, gun_revolver_gold.getUnlocalizedName()); - GameRegistry.registerItem(gun_revolver_schrabidium, gun_revolver_schrabidium.getUnlocalizedName()); - GameRegistry.registerItem(gun_revolver_cursed, gun_revolver_cursed.getUnlocalizedName()); - GameRegistry.registerItem(gun_revolver_nightmare, gun_revolver_nightmare.getUnlocalizedName()); - GameRegistry.registerItem(gun_revolver_nightmare2, gun_revolver_nightmare2.getUnlocalizedName()); - GameRegistry.registerItem(gun_revolver_pip, gun_revolver_pip.getUnlocalizedName()); - GameRegistry.registerItem(gun_revolver_nopip, gun_revolver_nopip.getUnlocalizedName()); - GameRegistry.registerItem(gun_revolver_blackjack, gun_revolver_blackjack.getUnlocalizedName()); - GameRegistry.registerItem(gun_revolver_silver, gun_revolver_silver.getUnlocalizedName()); - GameRegistry.registerItem(gun_revolver_red, gun_revolver_red.getUnlocalizedName()); - GameRegistry.registerItem(gun_bio_revolver, gun_bio_revolver.getUnlocalizedName()); - GameRegistry.registerItem(gun_deagle, gun_deagle.getUnlocalizedName()); - GameRegistry.registerItem(gun_uac_pistol, gun_uac_pistol.getUnlocalizedName()); - GameRegistry.registerItem(gun_flechette, gun_flechette.getUnlocalizedName()); - GameRegistry.registerItem(gun_ar15, gun_ar15.getUnlocalizedName()); - GameRegistry.registerItem(gun_calamity, gun_calamity.getUnlocalizedName()); - GameRegistry.registerItem(gun_m2, gun_m2.getUnlocalizedName()); - GameRegistry.registerItem(gun_minigun, gun_minigun.getUnlocalizedName()); - GameRegistry.registerItem(gun_lacunae, gun_lacunae.getUnlocalizedName()); - GameRegistry.registerItem(gun_folly, gun_folly.getUnlocalizedName()); GameRegistry.registerItem(gun_b92, gun_b92.getUnlocalizedName()); - GameRegistry.registerItem(gun_b93, gun_b93.getUnlocalizedName()); - GameRegistry.registerItem(gun_rpg, gun_rpg.getUnlocalizedName()); - GameRegistry.registerItem(gun_karl, gun_karl.getUnlocalizedName()); - 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()); - GameRegistry.registerItem(gun_mirv, gun_mirv.getUnlocalizedName()); - GameRegistry.registerItem(gun_bf, gun_bf.getUnlocalizedName()); - GameRegistry.registerItem(gun_chemthrower, gun_chemthrower.getUnlocalizedName()); - GameRegistry.registerItem(gun_mp40, gun_mp40.getUnlocalizedName()); - GameRegistry.registerItem(gun_thompson, gun_thompson.getUnlocalizedName()); - GameRegistry.registerItem(gun_uzi, gun_uzi.getUnlocalizedName()); - GameRegistry.registerItem(gun_uzi_silencer,gun_uzi_silencer.getUnlocalizedName()); - GameRegistry.registerItem(gun_uzi_saturnite, gun_uzi_saturnite.getUnlocalizedName()); - GameRegistry.registerItem(gun_uzi_saturnite_silencer,gun_uzi_saturnite_silencer.getUnlocalizedName()); - GameRegistry.registerItem(gun_uboinik, gun_uboinik.getUnlocalizedName()); - GameRegistry.registerItem(gun_remington, gun_remington.getUnlocalizedName()); - GameRegistry.registerItem(gun_spas12, gun_spas12.getUnlocalizedName()); - GameRegistry.registerItem(gun_benelli, gun_benelli.getUnlocalizedName()); - GameRegistry.registerItem(gun_supershotgun, gun_supershotgun.getUnlocalizedName()); - GameRegistry.registerItem(gun_ks23, gun_ks23.getUnlocalizedName()); - GameRegistry.registerItem(gun_sauer, gun_sauer.getUnlocalizedName()); - GameRegistry.registerItem(gun_lever_action, gun_lever_action.getUnlocalizedName()); - GameRegistry.registerItem(gun_lever_action_dark, gun_lever_action_dark.getUnlocalizedName()); - GameRegistry.registerItem(gun_lever_action_sonata, gun_lever_action_sonata.getUnlocalizedName()); - GameRegistry.registerItem(gun_bolt_action, gun_bolt_action.getUnlocalizedName()); - GameRegistry.registerItem(gun_bolt_action_green, gun_bolt_action_green.getUnlocalizedName()); - GameRegistry.registerItem(gun_bolt_action_saturnite, gun_bolt_action_saturnite.getUnlocalizedName()); - GameRegistry.registerItem(gun_mymy, gun_mymy.getUnlocalizedName()); - GameRegistry.registerItem(gun_coilgun, gun_coilgun.getUnlocalizedName()); - GameRegistry.registerItem(gun_xvl1456, gun_xvl1456.getUnlocalizedName()); - GameRegistry.registerItem(gun_osipr, gun_osipr.getUnlocalizedName()); - GameRegistry.registerItem(gun_immolator, gun_immolator.getUnlocalizedName()); - GameRegistry.registerItem(gun_flamer, gun_flamer.getUnlocalizedName()); - GameRegistry.registerItem(gun_cryolator, gun_cryolator.getUnlocalizedName()); GameRegistry.registerItem(gun_cryocannon, gun_cryocannon.getUnlocalizedName()); GameRegistry.registerItem(gun_fireext, gun_fireext.getUnlocalizedName()); - GameRegistry.registerItem(gun_mp, gun_mp.getUnlocalizedName()); - GameRegistry.registerItem(gun_bolter, gun_bolter.getUnlocalizedName()); - GameRegistry.registerItem(gun_bolter_digamma, gun_bolter_digamma.getUnlocalizedName()); - GameRegistry.registerItem(gun_zomg, gun_zomg.getUnlocalizedName()); - GameRegistry.registerItem(gun_emp, gun_emp.getUnlocalizedName()); - GameRegistry.registerItem(gun_revolver_inverted, gun_revolver_inverted.getUnlocalizedName()); - GameRegistry.registerItem(gun_jack, gun_jack.getUnlocalizedName()); - GameRegistry.registerItem(gun_spark, gun_spark.getUnlocalizedName()); - GameRegistry.registerItem(gun_hp, gun_hp.getUnlocalizedName()); - GameRegistry.registerItem(gun_euthanasia, gun_euthanasia.getUnlocalizedName()); - GameRegistry.registerItem(gun_skystinger, gun_skystinger.getUnlocalizedName()); - //GameRegistry.registerItem(gun_dash, gun_dash.getUnlocalizedName()); - //GameRegistry.registerItem(gun_twigun, gun_twigun.getUnlocalizedName()); - GameRegistry.registerItem(gun_defabricator, gun_defabricator.getUnlocalizedName()); - GameRegistry.registerItem(gun_vortex, gun_vortex.getUnlocalizedName()); - GameRegistry.registerItem(gun_super_shotgun, gun_super_shotgun.getUnlocalizedName()); - GameRegistry.registerItem(gun_moist_nugget, gun_moist_nugget.getUnlocalizedName()); - GameRegistry.registerItem(gun_darter, gun_darter.getUnlocalizedName()); GameRegistry.registerItem(crucible, crucible.getUnlocalizedName()); - GameRegistry.registerItem(gun_glass_cannon, gun_glass_cannon.getUnlocalizedName()); - GameRegistry.registerItem(gun_lunatic_marksman, gun_lunatic_marksman.getUnlocalizedName()); + + GameRegistry.registerItem(gun_debug, gun_debug.getUnlocalizedName()); + GameRegistry.registerItem(ammo_debug, ammo_debug.getUnlocalizedName()); + + GameRegistry.registerItem(gun_pepperbox, gun_pepperbox.getUnlocalizedName()); + GameRegistry.registerItem(gun_light_revolver, gun_light_revolver.getUnlocalizedName()); + GameRegistry.registerItem(gun_light_revolver_atlas, gun_light_revolver_atlas.getUnlocalizedName()); + GameRegistry.registerItem(gun_light_revolver_dani, gun_light_revolver_dani.getUnlocalizedName()); + GameRegistry.registerItem(gun_henry, gun_henry.getUnlocalizedName()); + GameRegistry.registerItem(gun_greasegun, gun_greasegun.getUnlocalizedName()); + GameRegistry.registerItem(gun_maresleg, gun_maresleg.getUnlocalizedName()); + GameRegistry.registerItem(gun_maresleg_akimbo, gun_maresleg_akimbo.getUnlocalizedName()); + GameRegistry.registerItem(gun_maresleg_broken, gun_maresleg_broken.getUnlocalizedName()); + GameRegistry.registerItem(gun_flaregun, gun_flaregun.getUnlocalizedName()); + GameRegistry.registerItem(gun_heavy_revolver, gun_heavy_revolver.getUnlocalizedName()); + GameRegistry.registerItem(gun_heavy_revolver_lilmac, gun_heavy_revolver_lilmac.getUnlocalizedName()); + GameRegistry.registerItem(gun_heavy_revolver_protege, gun_heavy_revolver_protege.getUnlocalizedName()); + GameRegistry.registerItem(gun_carbine, gun_carbine.getUnlocalizedName()); + GameRegistry.registerItem(gun_am180, gun_am180.getUnlocalizedName()); + GameRegistry.registerItem(gun_liberator, gun_liberator.getUnlocalizedName()); + GameRegistry.registerItem(gun_congolake, gun_congolake.getUnlocalizedName()); + GameRegistry.registerItem(gun_flamer, gun_flamer.getUnlocalizedName()); + GameRegistry.registerItem(gun_flamer_topaz, gun_flamer_topaz.getUnlocalizedName()); + GameRegistry.registerItem(gun_flamer_daybreaker, gun_flamer_daybreaker.getUnlocalizedName()); + GameRegistry.registerItem(gun_uzi, gun_uzi.getUnlocalizedName()); + GameRegistry.registerItem(gun_uzi_akimbo, gun_uzi_akimbo.getUnlocalizedName()); + GameRegistry.registerItem(gun_spas12, gun_spas12.getUnlocalizedName()); + GameRegistry.registerItem(gun_panzerschreck, gun_panzerschreck.getUnlocalizedName()); + GameRegistry.registerItem(gun_g3, gun_g3.getUnlocalizedName()); + GameRegistry.registerItem(gun_stinger, gun_stinger.getUnlocalizedName()); + GameRegistry.registerItem(gun_chemthrower, gun_chemthrower.getUnlocalizedName()); + GameRegistry.registerItem(gun_m2, gun_m2.getUnlocalizedName()); + GameRegistry.registerItem(gun_autoshotgun, gun_autoshotgun.getUnlocalizedName()); + GameRegistry.registerItem(gun_autoshotgun_shredder, gun_autoshotgun_shredder.getUnlocalizedName()); + GameRegistry.registerItem(gun_autoshotgun_sexy, gun_autoshotgun_sexy.getUnlocalizedName()); + GameRegistry.registerItem(gun_quadro, gun_quadro.getUnlocalizedName()); + GameRegistry.registerItem(gun_lag, gun_lag.getUnlocalizedName()); + GameRegistry.registerItem(gun_minigun, gun_minigun.getUnlocalizedName()); + GameRegistry.registerItem(gun_minigun_lacunae, gun_minigun_lacunae.getUnlocalizedName()); + GameRegistry.registerItem(gun_missile_launcher, gun_missile_launcher.getUnlocalizedName()); + GameRegistry.registerItem(gun_tesla_cannon, gun_tesla_cannon.getUnlocalizedName()); + GameRegistry.registerItem(gun_stg77, gun_stg77.getUnlocalizedName()); + GameRegistry.registerItem(gun_tau, gun_tau.getUnlocalizedName()); + GameRegistry.registerItem(gun_fatman, gun_fatman.getUnlocalizedName()); + GameRegistry.registerItem(gun_lasrifle, gun_lasrifle.getUnlocalizedName()); + GameRegistry.registerItem(gun_coilgun, gun_coilgun.getUnlocalizedName()); + GameRegistry.registerItem(gun_hangman, gun_hangman.getUnlocalizedName()); + GameRegistry.registerItem(gun_bolter, gun_bolter.getUnlocalizedName()); + GameRegistry.registerItem(gun_folly, gun_folly.getUnlocalizedName()); + GameRegistry.registerItem(gun_double_barrel, gun_double_barrel.getUnlocalizedName()); + GameRegistry.registerItem(gun_double_barrel_sacred_dragon, gun_double_barrel_sacred_dragon.getUnlocalizedName()); + + GameRegistry.registerItem(ammo_standard, ammo_standard.getUnlocalizedName()); + GameRegistry.registerItem(ammo_secret, ammo_secret.getUnlocalizedName()); //Ammo GameRegistry.registerItem(gun_b92_ammo, gun_b92_ammo.getUnlocalizedName()); - GameRegistry.registerItem(gun_xvl1456_ammo, gun_xvl1456_ammo.getUnlocalizedName()); - GameRegistry.registerItem(gun_osipr_ammo, gun_osipr_ammo.getUnlocalizedName()); - GameRegistry.registerItem(gun_osipr_ammo2, gun_osipr_ammo2.getUnlocalizedName()); - GameRegistry.registerItem(gun_immolator_ammo, gun_immolator_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_cryolator_ammo, gun_cryolator_ammo.getUnlocalizedName()); - GameRegistry.registerItem(gun_emp_ammo, gun_emp_ammo.getUnlocalizedName()); - GameRegistry.registerItem(gun_jack_ammo, gun_jack_ammo.getUnlocalizedName()); - GameRegistry.registerItem(gun_spark_ammo, gun_spark_ammo.getUnlocalizedName()); - GameRegistry.registerItem(gun_hp_ammo, gun_hp_ammo.getUnlocalizedName()); - GameRegistry.registerItem(gun_defabricator_ammo, gun_defabricator_ammo.getUnlocalizedName()); - GameRegistry.registerItem(gun_euthanasia_ammo, gun_euthanasia_ammo.getUnlocalizedName()); - GameRegistry.registerItem(ammo_12gauge, ammo_12gauge.getUnlocalizedName()); - GameRegistry.registerItem(ammo_20gauge, ammo_20gauge.getUnlocalizedName()); - GameRegistry.registerItem(ammo_4gauge, ammo_4gauge.getUnlocalizedName()); - GameRegistry.registerItem(ammo_357, ammo_357.getUnlocalizedName()); - GameRegistry.registerItem(ammo_44, ammo_44.getUnlocalizedName()); - GameRegistry.registerItem(ammo_45, ammo_45.getUnlocalizedName()); - GameRegistry.registerItem(ammo_5mm, ammo_5mm.getUnlocalizedName()); - GameRegistry.registerItem(ammo_9mm, ammo_9mm.getUnlocalizedName()); - GameRegistry.registerItem(ammo_556, ammo_556.getUnlocalizedName()); - GameRegistry.registerItem(ammo_762, ammo_762.getUnlocalizedName()); - GameRegistry.registerItem(ammo_22lr, ammo_22lr.getUnlocalizedName()); - GameRegistry.registerItem(ammo_50ae, ammo_50ae.getUnlocalizedName()); - GameRegistry.registerItem(ammo_50bmg, ammo_50bmg.getUnlocalizedName()); - GameRegistry.registerItem(ammo_75bolt, ammo_75bolt.getUnlocalizedName()); - GameRegistry.registerItem(ammo_nuke, ammo_nuke.getUnlocalizedName()); - GameRegistry.registerItem(ammo_fuel, ammo_fuel.getUnlocalizedName()); GameRegistry.registerItem(ammo_fireext, ammo_fireext.getUnlocalizedName()); - GameRegistry.registerItem(ammo_cell, ammo_cell.getUnlocalizedName()); - GameRegistry.registerItem(ammo_dart, ammo_dart.getUnlocalizedName()); - GameRegistry.registerItem(ammo_rocket, ammo_rocket.getUnlocalizedName()); - GameRegistry.registerItem(ammo_stinger_rocket, ammo_stinger_rocket.getUnlocalizedName()); - GameRegistry.registerItem(ammo_luna_sniper, ammo_luna_sniper.getUnlocalizedName()); - GameRegistry.registerItem(ammo_coilgun, ammo_coilgun.getUnlocalizedName()); - GameRegistry.registerItem(ammo_grenade, ammo_grenade.getUnlocalizedName()); GameRegistry.registerItem(ammo_shell, ammo_shell.getUnlocalizedName()); GameRegistry.registerItem(ammo_dgk, ammo_dgk.getUnlocalizedName()); GameRegistry.registerItem(ammo_arty, ammo_arty.getUnlocalizedName()); GameRegistry.registerItem(ammo_himars, ammo_himars.getUnlocalizedName()); - GameRegistry.registerItem(ammo_folly, ammo_folly.getUnlocalizedName()); - GameRegistry.registerItem(ammo_folly_nuclear, ammo_folly_nuclear.getUnlocalizedName()); - GameRegistry.registerItem(ammo_folly_du, ammo_folly_du.getUnlocalizedName()); - - //-C-l-i-p-s- Magazines - GameRegistry.registerItem(clip_revolver_iron, clip_revolver_iron.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver, clip_revolver.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_gold, clip_revolver_gold.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_lead, clip_revolver_lead.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_schrabidium, clip_revolver_schrabidium.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_cursed, clip_revolver_cursed.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_nightmare, clip_revolver_nightmare.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_nightmare2, clip_revolver_nightmare2.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_pip, clip_revolver_pip.getUnlocalizedName()); - GameRegistry.registerItem(clip_revolver_nopip, clip_revolver_nopip.getUnlocalizedName()); - GameRegistry.registerItem(clip_rpg, clip_rpg.getUnlocalizedName()); - GameRegistry.registerItem(clip_stinger, clip_stinger.getUnlocalizedName()); - GameRegistry.registerItem(clip_fatman, clip_fatman.getUnlocalizedName()); - GameRegistry.registerItem(clip_mirv, clip_mirv.getUnlocalizedName()); - GameRegistry.registerItem(clip_bf, clip_bf.getUnlocalizedName()); - GameRegistry.registerItem(clip_mp40, clip_mp40.getUnlocalizedName()); - GameRegistry.registerItem(clip_uzi, clip_uzi.getUnlocalizedName()); - GameRegistry.registerItem(clip_uboinik, clip_uboinik.getUnlocalizedName()); - GameRegistry.registerItem(clip_lever_action, clip_lever_action.getUnlocalizedName()); - GameRegistry.registerItem(clip_bolt_action, clip_bolt_action.getUnlocalizedName()); - GameRegistry.registerItem(clip_xvl1456, clip_xvl1456.getUnlocalizedName()); - GameRegistry.registerItem(clip_osipr, clip_osipr.getUnlocalizedName()); - GameRegistry.registerItem(clip_immolator, clip_immolator.getUnlocalizedName()); - GameRegistry.registerItem(clip_cryolator, clip_cryolator.getUnlocalizedName()); - GameRegistry.registerItem(clip_mp, clip_mp.getUnlocalizedName()); - GameRegistry.registerItem(clip_emp, clip_emp.getUnlocalizedName()); - GameRegistry.registerItem(clip_jack, clip_jack.getUnlocalizedName()); - GameRegistry.registerItem(clip_spark, clip_spark.getUnlocalizedName()); - GameRegistry.registerItem(clip_hp, clip_hp.getUnlocalizedName()); - GameRegistry.registerItem(clip_euthanasia, clip_euthanasia.getUnlocalizedName()); - GameRegistry.registerItem(clip_defabricator, clip_defabricator.getUnlocalizedName()); GameRegistry.registerItem(ammo_container, ammo_container.getUnlocalizedName()); @@ -7604,7 +7047,6 @@ public class ModItems { GameRegistry.registerItem(detonator_laser, detonator_laser.getUnlocalizedName()); GameRegistry.registerItem(detonator_deadman, detonator_deadman.getUnlocalizedName()); GameRegistry.registerItem(detonator_de, detonator_de.getUnlocalizedName()); - GameRegistry.registerItem(crate_caller, crate_caller.getUnlocalizedName()); GameRegistry.registerItem(bomb_caller, bomb_caller.getUnlocalizedName()); GameRegistry.registerItem(meteor_remote, meteor_remote.getUnlocalizedName()); GameRegistry.registerItem(anchor_remote, anchor_remote.getUnlocalizedName()); @@ -7771,16 +7213,9 @@ public class ModItems { GameRegistry.registerItem(book_lore, book_lore.getUnlocalizedName()); GameRegistry.registerItem(holotape_image, holotape_image.getUnlocalizedName()); GameRegistry.registerItem(holotape_damaged, holotape_damaged.getUnlocalizedName()); + GameRegistry.registerItem(clay_tablet, clay_tablet.getUnlocalizedName()); //Technical Items - GameRegistry.registerItem(b_smoke1, b_smoke1.getUnlocalizedName()); - GameRegistry.registerItem(b_smoke2, b_smoke2.getUnlocalizedName()); - GameRegistry.registerItem(b_smoke3, b_smoke3.getUnlocalizedName()); - GameRegistry.registerItem(b_smoke4, b_smoke4.getUnlocalizedName()); - GameRegistry.registerItem(b_smoke5, b_smoke5.getUnlocalizedName()); - GameRegistry.registerItem(b_smoke6, b_smoke6.getUnlocalizedName()); - GameRegistry.registerItem(b_smoke7, b_smoke7.getUnlocalizedName()); - GameRegistry.registerItem(b_smoke8, b_smoke8.getUnlocalizedName()); GameRegistry.registerItem(chlorine1, chlorine1.getUnlocalizedName()); GameRegistry.registerItem(chlorine2, chlorine2.getUnlocalizedName()); GameRegistry.registerItem(chlorine3, chlorine3.getUnlocalizedName()); @@ -7813,26 +7248,6 @@ public class ModItems { GameRegistry.registerItem(orange6, orange6.getUnlocalizedName()); GameRegistry.registerItem(orange7, orange7.getUnlocalizedName()); GameRegistry.registerItem(orange8, orange8.getUnlocalizedName()); - GameRegistry.registerItem(flame_1, flame_1.getUnlocalizedName()); - GameRegistry.registerItem(flame_2, flame_2.getUnlocalizedName()); - GameRegistry.registerItem(flame_3, flame_3.getUnlocalizedName()); - GameRegistry.registerItem(flame_4, flame_4.getUnlocalizedName()); - GameRegistry.registerItem(flame_5, flame_5.getUnlocalizedName()); - GameRegistry.registerItem(flame_6, flame_6.getUnlocalizedName()); - GameRegistry.registerItem(flame_7, flame_7.getUnlocalizedName()); - GameRegistry.registerItem(flame_8, flame_8.getUnlocalizedName()); - GameRegistry.registerItem(flame_9, flame_9.getUnlocalizedName()); - GameRegistry.registerItem(flame_10, flame_10.getUnlocalizedName()); - GameRegistry.registerItem(ln2_1, ln2_1.getUnlocalizedName()); - GameRegistry.registerItem(ln2_2, ln2_2.getUnlocalizedName()); - GameRegistry.registerItem(ln2_3, ln2_3.getUnlocalizedName()); - GameRegistry.registerItem(ln2_4, ln2_4.getUnlocalizedName()); - GameRegistry.registerItem(ln2_5, ln2_5.getUnlocalizedName()); - GameRegistry.registerItem(ln2_6, ln2_6.getUnlocalizedName()); - GameRegistry.registerItem(ln2_7, ln2_7.getUnlocalizedName()); - GameRegistry.registerItem(ln2_8, ln2_8.getUnlocalizedName()); - GameRegistry.registerItem(ln2_9, ln2_9.getUnlocalizedName()); - GameRegistry.registerItem(ln2_10, ln2_10.getUnlocalizedName()); GameRegistry.registerItem(nothing, nothing.getUnlocalizedName()); GameRegistry.registerItem(achievement_icon, achievement_icon.getUnlocalizedName()); GameRegistry.registerItem(bob_metalworks, bob_metalworks.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/armor/ArmorBJJetpack.java b/src/main/java/com/hbm/items/armor/ArmorBJJetpack.java index 5882236e7..5702fed77 100644 --- a/src/main/java/com/hbm/items/armor/ArmorBJJetpack.java +++ b/src/main/java/com/hbm/items/armor/ArmorBJJetpack.java @@ -3,8 +3,8 @@ package com.hbm.items.armor; import java.util.List; import com.hbm.extprop.HbmPlayerProps; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.render.model.ModelArmorBJ; import com.hbm.util.ArmorUtil; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/items/armor/ArmorDNT.java b/src/main/java/com/hbm/items/armor/ArmorDNT.java index 068ae49f1..7f245c7f2 100644 --- a/src/main/java/com/hbm/items/armor/ArmorDNT.java +++ b/src/main/java/com/hbm/items/armor/ArmorDNT.java @@ -6,8 +6,8 @@ import java.util.UUID; import com.google.common.collect.Multimap; import com.hbm.extprop.HbmPlayerProps; import com.hbm.items.ModItems; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.render.model.ModelArmorDNT; import com.hbm.util.ArmorUtil; import com.hbm.util.BobMathUtil; @@ -173,7 +173,7 @@ public class ArmorDNT extends ArmorFSBPowered { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add("Charge: " + BobMathUtil.getShortNumber(getCharge(stack)) + " / " + BobMathUtil.getShortNumber(maxPower)); + list.add("Charge: " + BobMathUtil.getShortNumber(getCharge(stack)) + " / " + BobMathUtil.getShortNumber(this.getMaxCharge(stack))); list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("armor.fullSetBonus")); @@ -184,13 +184,9 @@ public class ArmorDNT extends ArmorFSBPowered { } } - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.explosionImmune")); - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.cap", 5)); - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.modifier", 0.001F)); list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.vats")); list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.thermal")); list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.hardLanding")); - list.add(EnumChatFormatting.DARK_RED + " " + I18nUtil.resolveKey("armor.ignoreLimit")); list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.rocketBoots")); list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.fastFall")); list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.sprintBoost")); diff --git a/src/main/java/com/hbm/items/armor/ArmorDiesel.java b/src/main/java/com/hbm/items/armor/ArmorDiesel.java index e42510fc3..2bc61d99c 100644 --- a/src/main/java/com/hbm/items/armor/ArmorDiesel.java +++ b/src/main/java/com/hbm/items/armor/ArmorDiesel.java @@ -6,8 +6,8 @@ import com.hbm.handler.ArmorModHandler; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.render.model.ModelArmorDiesel; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/items/armor/ArmorEnvsuit.java b/src/main/java/com/hbm/items/armor/ArmorEnvsuit.java index e7ee41f79..940955329 100644 --- a/src/main/java/com/hbm/items/armor/ArmorEnvsuit.java +++ b/src/main/java/com/hbm/items/armor/ArmorEnvsuit.java @@ -1,11 +1,9 @@ package com.hbm.items.armor; -import java.util.UUID; - import com.google.common.collect.Multimap; +import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; import com.hbm.render.model.ModelArmorEnvsuit; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; @@ -19,6 +17,8 @@ import net.minecraft.potion.PotionEffect; import net.minecraft.util.Vec3; import net.minecraft.world.World; +import java.util.UUID; + public class ArmorEnvsuit extends ArmorFSBPowered { public ArmorEnvsuit(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) { @@ -41,14 +41,14 @@ public class ArmorEnvsuit extends ArmorFSBPowered { return models[armorSlot]; } - + private static final UUID speed = UUID.fromString("6ab858ba-d712-485c-bae9-e5e765fc555a"); @Override public void onArmorTick(World world, EntityPlayer player, ItemStack stack) { super.onArmorTick(world, player, stack); - + if(this != ModItems.envsuit_plate) return; @@ -56,13 +56,13 @@ public class ArmorEnvsuit extends ArmorFSBPowered { Multimap multimap = super.getAttributeModifiers(stack); multimap.put(SharedMonsterAttributes.movementSpeed.getAttributeUnlocalizedName(), new AttributeModifier(speed, "SQUIRREL SPEED", 0.1, 0)); player.getAttributeMap().removeAttributeModifiers(multimap); - + if(this.hasFSBArmor(player)) { - + if(player.isSprinting()) player.getAttributeMap().applyAttributeModifiers(multimap); - + if(player.isInWater()) { - + if(!world.isRemote) { player.setAir(300); player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 15 * 20, 0)); @@ -78,7 +78,14 @@ public class ArmorEnvsuit extends ArmorFSBPowered { player.motionY += vec.yCoord; player.motionZ += vec.zCoord; } else { - if(!world.isRemote) { + boolean canRemoveNightVision = true; + ItemStack helmet = player.inventory.armorInventory[3]; + ItemStack helmetMod = ArmorModHandler.pryMod(helmet, ArmorModHandler.helmet_only); // Get the modification! + if (helmetMod != null && helmetMod.getItem() instanceof ItemModNightVision) { + canRemoveNightVision = false; + } + + if(!world.isRemote && canRemoveNightVision) { player.removePotionEffect(Potion.nightVision.id); } } diff --git a/src/main/java/com/hbm/items/armor/ArmorFSB.java b/src/main/java/com/hbm/items/armor/ArmorFSB.java index 115c298fb..cf83bf1be 100644 --- a/src/main/java/com/hbm/items/armor/ArmorFSB.java +++ b/src/main/java/com/hbm/items/armor/ArmorFSB.java @@ -3,10 +3,8 @@ package com.hbm.items.armor; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Collections; -import java.util.HashMap; import java.util.HashSet; import java.util.List; -import java.util.Map.Entry; import org.lwjgl.opengl.GL11; @@ -28,7 +26,6 @@ import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.resources.I18n; import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemArmor; @@ -51,21 +48,12 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { private String texture = ""; private ResourceLocation overlay = null; public List effects = new ArrayList(); - public HashMap resistance = new HashMap(); - public float blastProtection = -1; - public float projectileProtection = -1; - public float damageCap = -1; - public float damageMod = -1; - public float damageThreshold = 0; - public float protectionYield = 100F; - public boolean fireproof = false; public boolean noHelmet = false; public boolean vats = false; public boolean thermal = false; public boolean geigerSound = false; public boolean customGeiger = false; public boolean hardLanding = false; - public double gravity = 0; public int dashCount = 0; public int stepSize = 0; public String step; @@ -82,46 +70,6 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { return this; } - public ArmorFSB addResistance(String damage, float mod) { - resistance.put(damage, mod); - return this; - } - - public ArmorFSB setCap(float cap) { - this.damageCap = cap; - return this; - } - - public ArmorFSB setMod(float mod) { - this.damageMod = mod; - return this; - } - - public ArmorFSB setThreshold(float threshold) { - this.damageThreshold = threshold; - return this; - } - - public ArmorFSB setProtectionLevel(float damageYield) { - this.protectionYield = damageYield; - return this; - } - - public ArmorFSB setBlastProtection(float blastProtection) { - this.blastProtection = blastProtection; - return this; - } - - public ArmorFSB setProjectileProtection(float projectileProtection) { - this.projectileProtection = projectileProtection; - return this; - } - - public ArmorFSB setFireproof(boolean fire) { - this.fireproof = fire; - return this; - } - public ArmorFSB setNoHelmet(boolean noHelmet) { this.noHelmet = noHelmet; return this; @@ -151,11 +99,6 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { this.hardLanding = hardLanding; return this; } - - public ArmorFSB setGravity(double gravity) { - this.gravity = gravity; - return this; - } public ArmorFSB setDashCount(int dashCount) { this.dashCount = dashCount; @@ -191,21 +134,12 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { //lists aren't being modified after instantiation, so there's no need to dereference this.effects = original.effects; - this.resistance = original.resistance; - this.damageCap = original.damageCap; - this.damageMod = original.damageMod; - this.damageThreshold = original.damageThreshold; - this.protectionYield = original.protectionYield; - this.blastProtection = original.blastProtection; - this.projectileProtection = original.projectileProtection; - this.fireproof = original.fireproof; this.noHelmet = original.noHelmet; this.vats = original.vats; this.thermal = original.thermal; this.geigerSound = original.geigerSound; this.customGeiger = original.customGeiger; this.hardLanding = original.hardLanding; - this.gravity = original.gravity; this.dashCount = original.dashCount; this.stepSize = original.stepSize; this.step = original.step; @@ -222,85 +156,29 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - - list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("armor.fullSetBonus")); + + List toAdd = new ArrayList(); if(!effects.isEmpty()) { - + List potionList = new ArrayList(); for(PotionEffect effect : effects) { - list.add(EnumChatFormatting.AQUA + " " + I18n.format(Potion.potionTypes[effect.getPotionID()].getName())); + potionList.add(I18n.format(Potion.potionTypes[effect.getPotionID()].getName())); } + + toAdd.add(EnumChatFormatting.AQUA + String.join(", ", potionList)); } - if(!resistance.isEmpty()) { + if(geigerSound) toAdd.add(EnumChatFormatting.GOLD + " " + I18nUtil.resolveKey("armor.geigerSound")); + if(customGeiger) toAdd.add(EnumChatFormatting.GOLD + " " + I18nUtil.resolveKey("armor.geigerHUD")); + if(vats) toAdd.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.vats")); + if(thermal) toAdd.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.thermal")); + if(hardLanding) toAdd.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.hardLanding")); + if(stepSize != 0) toAdd.add(EnumChatFormatting.BLUE + " " + I18nUtil.resolveKey("armor.stepSize", stepSize)); + if(dashCount > 0) toAdd.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.dash", dashCount)); - for(Entry struct : resistance.entrySet()) { - - if(struct.getValue() != 0) - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.damageModifier", struct.getValue(), I18n.format(struct.getKey()))); - else - list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.nullDamage", I18n.format(struct.getKey()))); - } - } - - if(blastProtection != -1) { - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.blastProtection", blastProtection)); - } - - if(projectileProtection != -1) { - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.projectileProtection", projectileProtection)); - } - - if(damageCap != -1) { - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.cap", damageCap)); - } - - if(damageMod != -1) { - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.modifier", damageMod)); - } - - if(damageThreshold > 0) { - list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey("armor.threshold", damageThreshold)); - } - - if(fireproof) { - list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.fireproof")); - } - - if(geigerSound) { - list.add(EnumChatFormatting.GOLD + " " + I18nUtil.resolveKey("armor.geigerSound")); - } - - if(customGeiger) { - list.add(EnumChatFormatting.GOLD + " " + I18nUtil.resolveKey("armor.geigerHUD")); - } - - if(vats) { - list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.vats")); - } - - if(thermal) { - list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.thermal")); - } - - if(hardLanding) { - list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.hardLanding")); - } - - if(gravity != 0) { - list.add(EnumChatFormatting.BLUE + " " + I18nUtil.resolveKey("armor.gravity", gravity)); - } - - if(stepSize != 0) { - list.add(EnumChatFormatting.BLUE + " " + I18nUtil.resolveKey("armor.stepSize", stepSize)); - } - - if(dashCount > 0) { - list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.dash", dashCount)); - } - - if(protectionYield != 100F) { - list.add(EnumChatFormatting.BLUE + " " + I18nUtil.resolveKey("armor.yield", protectionYield)); + if(!toAdd.isEmpty()) { + list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("armor.fullSetBonus")); + list.addAll(toAdd); } } @@ -359,80 +237,6 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { return false; } - public void handleAttack(LivingAttackEvent event) { - - EntityLivingBase e = event.entityLiving; - - if(e instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer) e; - - if(ArmorFSB.hasFSBArmor(player)) { - - ItemStack plate = player.inventory.armorInventory[2]; - - ArmorFSB chestplate = (ArmorFSB) plate.getItem(); - - if(chestplate.damageThreshold >= event.ammount && !event.source.isUnblockable()) { - event.setCanceled(true); - } - - if(chestplate.fireproof && event.source.isFireDamage()) { - player.extinguish(); - event.setCanceled(true); - } - - if(chestplate.resistance.get(event.source.getDamageType()) != null && chestplate.resistance.get(event.source.getDamageType()) <= 0) { - event.setCanceled(true); - } - } - } - } - - public void handleHurt(LivingHurtEvent event) { - - EntityLivingBase e = event.entityLiving; - - if(e instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer) e; - - if(ArmorFSB.hasFSBArmor(player)) { - - ArmorFSB chestplate = (ArmorFSB) player.inventory.armorInventory[2].getItem(); - - //store any damage above the yield - float overFlow = Math.max(0, event.ammount - chestplate.protectionYield); - //reduce the damage to the yield cap if it exceeds the yield - event.ammount = Math.min(event.ammount, chestplate.protectionYield); - - if(!event.source.isUnblockable()) - event.ammount -= chestplate.damageThreshold; - - if(chestplate.damageMod != -1) { - event.ammount *= chestplate.damageMod; - } - - if(chestplate.resistance.get(event.source.getDamageType()) != null) { - event.ammount *= chestplate.resistance.get(event.source.getDamageType()); - } - - if(chestplate.blastProtection != -1 && event.source.isExplosion()) { - event.ammount *= chestplate.blastProtection; - } - - if(chestplate.projectileProtection != -1 && event.source.isProjectile()) { - event.ammount *= chestplate.projectileProtection; - } - - if(chestplate.damageCap != -1) { - event.ammount = Math.min(event.ammount, chestplate.damageCap); - } - - //add back anything that was above the protection yield before - event.ammount += overFlow; - } - } - } - public void handleTick(TickEvent.PlayerTickEvent event) { EntityPlayer player = event.player; @@ -450,9 +254,6 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { } } - if(!player.capabilities.isFlying && !player.isInWater()) - player.motionY -= chestplate.gravity; - if(chestplate.step != null && player.worldObj.isRemote && player.onGround) { try { @@ -531,14 +332,9 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { @Override public void onArmorTick(World world, EntityPlayer entity, ItemStack stack) { - if(this.armorType != 1) - return; - - if(!hasFSBArmor(entity) || !this.geigerSound) - return; - - if(entity.inventory.hasItem(ModItems.geiger_counter) || entity.inventory.hasItem(ModItems.dosimeter)) - return; + if(this.armorType != 1) return; + if(!hasFSBArmor(entity) || !this.geigerSound) return; + if(entity.inventory.hasItem(ModItems.geiger_counter) || entity.inventory.hasItem(ModItems.dosimeter)) return; if(world.getTotalWorldTime() % 5 == 0) { @@ -560,26 +356,20 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { int r = list.get(world.rand.nextInt(list.size())); - if(r > 0) - world.playSoundAtEntity(entity, "hbm:item.geiger" + r, 1.0F, 1.0F); + if(r > 0) world.playSoundAtEntity(entity, "hbm:item.geiger" + r, 1.0F, 1.0F); } } } public static int check(World world, int x, int y, int z) { - int rads = (int) Math.ceil(ChunkRadiationManager.proxy.getRadiation(world, x, y, z)); return rads; } // For crazier stuff not possible without hooking the event - @SideOnly(Side.CLIENT) - public void handleOverlay(RenderGameOverlayEvent.Pre event, EntityPlayer player) { - } + @SideOnly(Side.CLIENT) public void handleOverlay(RenderGameOverlayEvent.Pre event, EntityPlayer player) { } - public boolean isArmorEnabled(ItemStack stack) { - return true; - } + public boolean isArmorEnabled(ItemStack stack) { return true; } @SideOnly(Side.CLIENT) public void renderHelmetOverlay(ItemStack stack, EntityPlayer player, ScaledResolution resolution, float partialTicks, boolean hasScreen, int mouseX, int mouseY) { @@ -624,4 +414,7 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { public boolean disablesPart(EntityPlayer player, ItemStack stack, EnumPlayerPart part) { return hidden.contains(part) && (!needsFullSet || hasFSBArmorIgnoreCharge(player)); } + + public void handleAttack(LivingAttackEvent event) { } + public void handleHurt(LivingHurtEvent event) { } } diff --git a/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java b/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java index 4967059fc..415da3813 100644 --- a/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java +++ b/src/main/java/com/hbm/items/armor/ArmorTrenchmaster.java @@ -4,7 +4,6 @@ import java.util.List; import com.hbm.extprop.HbmPlayerProps; import com.hbm.render.model.ModelArmorTrenchmaster; -import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -12,7 +11,6 @@ import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent; @@ -44,8 +42,8 @@ public class ArmorTrenchmaster extends ArmorFSB { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { super.addInformation(stack, player, list, ext); - list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.fasterReload")); - list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.moreAmmo")); + //list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.fasterReload")); + //list.add(EnumChatFormatting.RED + " " + I18nUtil.resolveKey("armor.moreAmmo")); } @Override diff --git a/src/main/java/com/hbm/items/armor/ItemModCladding.java b/src/main/java/com/hbm/items/armor/ItemModCladding.java index a71b8cb28..c18eae1fb 100644 --- a/src/main/java/com/hbm/items/armor/ItemModCladding.java +++ b/src/main/java/com/hbm/items/armor/ItemModCladding.java @@ -27,6 +27,6 @@ public class ItemModCladding extends ItemArmorMod { @Override public void addDesc(List list, ItemStack stack, ItemStack armor) { - list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + " (+" + rad + " radiation resistence)"); + list.add(EnumChatFormatting.YELLOW + " " + stack.getDisplayName() + " (+" + rad + " radiation resistance)"); } } diff --git a/src/main/java/com/hbm/items/armor/ItemModKnife.java b/src/main/java/com/hbm/items/armor/ItemModKnife.java index 9d61d7e2e..0c49f092f 100644 --- a/src/main/java/com/hbm/items/armor/ItemModKnife.java +++ b/src/main/java/com/hbm/items/armor/ItemModKnife.java @@ -5,8 +5,8 @@ import java.util.UUID; import com.hbm.handler.ArmorModHandler; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/com/hbm/items/armor/ItemModLens.java b/src/main/java/com/hbm/items/armor/ItemModLens.java index a9df9cfff..7aeafb941 100644 --- a/src/main/java/com/hbm/items/armor/ItemModLens.java +++ b/src/main/java/com/hbm/items/armor/ItemModLens.java @@ -5,8 +5,8 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ISatChip; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.saveddata.SatelliteSavedData; import com.hbm.saveddata.satellites.Satellite; import com.hbm.saveddata.satellites.SatelliteScanner; diff --git a/src/main/java/com/hbm/items/armor/ItemModPads.java b/src/main/java/com/hbm/items/armor/ItemModPads.java index 9e7d62556..a29a570b3 100644 --- a/src/main/java/com/hbm/items/armor/ItemModPads.java +++ b/src/main/java/com/hbm/items/armor/ItemModPads.java @@ -74,7 +74,7 @@ public class ItemModPads extends ItemArmorMod { if(charge == 0) charge = powered.consumption / 40; - long power = Math.min(powered.maxPower, powered.getCharge(stack) + charge); + long power = Math.min(powered.getMaxCharge(stack), powered.getCharge(stack) + charge); powered.setCharge(stack, power); } } diff --git a/src/main/java/com/hbm/items/armor/JetpackBase.java b/src/main/java/com/hbm/items/armor/JetpackBase.java index f7dd9b7cd..7b13478d7 100644 --- a/src/main/java/com/hbm/items/armor/JetpackBase.java +++ b/src/main/java/com/hbm/items/armor/JetpackBase.java @@ -3,11 +3,9 @@ package com.hbm.items.armor; import java.util.List; import com.hbm.handler.ArmorModHandler; -import com.hbm.inventory.fluid.FluidType; import com.hbm.render.model.ModelJetPack; import com.hbm.util.ArmorUtil; -import api.hbm.fluid.IFillableItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; @@ -17,28 +15,21 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.event.RenderPlayerEvent; -public abstract class JetpackBase extends ItemArmorMod implements IFillableItem { +public abstract class JetpackBase extends ItemArmorMod { - private ModelJetPack model; - public FluidType fuel; - public int maxFuel; + protected ModelBiped cachedModel; - public JetpackBase(FluidType fuel, int maxFuel) { + public JetpackBase() { super(ArmorModHandler.plate_only, false, true, false, false); - this.fuel = fuel; - this.maxFuel = maxFuel; } @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - list.add(EnumChatFormatting.LIGHT_PURPLE + fuel.getLocalizedName() + ": " + this.getFuel(itemstack) + "mB / " + this.maxFuel + "mB"); - list.add(""); super.addInformation(itemstack, player, list, bool); list.add(EnumChatFormatting.GOLD + "Can be worn on its own!"); } @@ -51,7 +42,7 @@ public abstract class JetpackBase extends ItemArmorMod implements IFillableItem if(jetpack == null) return; - list.add(EnumChatFormatting.RED + " " + stack.getDisplayName() + " (" + fuel.getLocalizedName() + ": " + this.getFuel(jetpack) + "mB / " + this.maxFuel + "mB"); + list.add(EnumChatFormatting.RED + " " + stack.getDisplayName()); } @Override @@ -103,87 +94,12 @@ public abstract class JetpackBase extends ItemArmorMod implements IFillableItem @SideOnly(Side.CLIENT) public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) { if (armorSlot == 1) { - if (model == null) { - this.model = new ModelJetPack(); + if (cachedModel == null) { + this.cachedModel = new ModelJetPack(); } - return this.model; + return this.cachedModel; } return null; } - - protected void useUpFuel(EntityPlayer player, ItemStack stack, int rate) { - - if(player.ticksExisted % rate == 0) - this.setFuel(stack, this.getFuel(stack) - 1); - } - - public static int getFuel(ItemStack stack) { - if(stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - return 0; - } - - return stack.stackTagCompound.getInteger("fuel"); - - } - - public static void setFuel(ItemStack stack, int i) { - if(stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - } - - stack.stackTagCompound.setInteger("fuel", i); - - } - - public int getMaxFill(ItemStack stack) { - return this.maxFuel; - } - - public int getLoadSpeed(ItemStack stack) { - return 10; - } - - @Override - public boolean acceptsFluid(FluidType type, ItemStack stack) { - return type == this.fuel; - } - - @Override - public int tryFill(FluidType type, int amount, ItemStack stack) { - - if(!acceptsFluid(type, stack)) - return amount; - - int fill = this.getFuel(stack); - int req = maxFuel - fill; - - int toFill = Math.min(amount, req); - //toFill = Math.min(toFill, getLoadSpeed(stack)); - - this.setFuel(stack, fill + toFill); - - return amount - toFill; - } - - @Override - public boolean providesFluid(FluidType type, ItemStack stack) { - return false; - } - - @Override - public int tryEmpty(FluidType type, int amount, ItemStack stack) { - return 0; - } - - @Override - public FluidType getFirstFluidType(ItemStack stack) { - return null; - } - - @Override - public int getFill(ItemStack stack) { - return 0; - } } diff --git a/src/main/java/com/hbm/items/armor/JetpackBooster.java b/src/main/java/com/hbm/items/armor/JetpackBooster.java index 09b90947b..de35ee89a 100644 --- a/src/main/java/com/hbm/items/armor/JetpackBooster.java +++ b/src/main/java/com/hbm/items/armor/JetpackBooster.java @@ -4,8 +4,8 @@ import java.util.List; import com.hbm.extprop.HbmPlayerProps; import com.hbm.inventory.fluid.FluidType; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -17,7 +17,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; import net.minecraft.world.World; -public class JetpackBooster extends JetpackBase { +public class JetpackBooster extends JetpackFueledBase { public JetpackBooster(FluidType fuel, int maxFuel) { super(fuel, maxFuel); diff --git a/src/main/java/com/hbm/items/armor/JetpackBreak.java b/src/main/java/com/hbm/items/armor/JetpackBreak.java index 340fd2f09..02251ed16 100644 --- a/src/main/java/com/hbm/items/armor/JetpackBreak.java +++ b/src/main/java/com/hbm/items/armor/JetpackBreak.java @@ -4,8 +4,8 @@ import java.util.List; import com.hbm.extprop.HbmPlayerProps; import com.hbm.inventory.fluid.FluidType; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -16,7 +16,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class JetpackBreak extends JetpackBase { +public class JetpackBreak extends JetpackFueledBase { public static int maxFuel = 1200; diff --git a/src/main/java/com/hbm/items/armor/JetpackFueledBase.java b/src/main/java/com/hbm/items/armor/JetpackFueledBase.java new file mode 100644 index 000000000..b1a5f07f8 --- /dev/null +++ b/src/main/java/com/hbm/items/armor/JetpackFueledBase.java @@ -0,0 +1,117 @@ +package com.hbm.items.armor; + +import java.util.List; + +import com.hbm.handler.ArmorModHandler; +import com.hbm.inventory.fluid.FluidType; + +import api.hbm.fluid.IFillableItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; + +public abstract class JetpackFueledBase extends JetpackBase implements IFillableItem { + + public FluidType fuel; + public int maxFuel; + + public JetpackFueledBase(FluidType fuel, int maxFuel) { + super(); + this.fuel = fuel; + this.maxFuel = maxFuel; + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + list.add(EnumChatFormatting.LIGHT_PURPLE + fuel.getLocalizedName() + ": " + this.getFuel(itemstack) + "mB / " + this.maxFuel + "mB"); + list.add(""); + super.addInformation(itemstack, player, list, bool); + } + + @Override + public void addDesc(List list, ItemStack stack, ItemStack armor) { + + ItemStack jetpack = ArmorModHandler.pryMods(armor)[ArmorModHandler.plate_only]; + + if(jetpack == null) + return; + + list.add(EnumChatFormatting.RED + " " + stack.getDisplayName() + " (" + fuel.getLocalizedName() + ": " + this.getFuel(jetpack) + "mB / " + this.maxFuel + "mB)"); + } + + protected void useUpFuel(EntityPlayer player, ItemStack stack, int rate) { + if(player.ticksExisted % rate == 0){ + this.setFuel(stack, this.getFuel(stack) - 1); + } + } + + public static int getFuel(ItemStack stack) { + if(stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + return 0; + } + + return stack.stackTagCompound.getInteger("fuel"); + + } + + public static void setFuel(ItemStack stack, int i) { + if(stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + } + + stack.stackTagCompound.setInteger("fuel", i); + + } + + public int getMaxFill(ItemStack stack) { + return this.maxFuel; + } + + public int getLoadSpeed(ItemStack stack) { + return 10; + } + + @Override + public boolean acceptsFluid(FluidType type, ItemStack stack) { + return type == this.fuel; + } + + @Override + public int tryFill(FluidType type, int amount, ItemStack stack) { + + if(!acceptsFluid(type, stack)) + return amount; + + int fill = this.getFuel(stack); + int req = maxFuel - fill; + + int toFill = Math.min(amount, req); + //toFill = Math.min(toFill, getLoadSpeed(stack)); + + this.setFuel(stack, fill + toFill); + + return amount - toFill; + } + + @Override + public boolean providesFluid(FluidType type, ItemStack stack) { + return false; + } + + @Override + public int tryEmpty(FluidType type, int amount, ItemStack stack) { + return 0; + } + + @Override + public FluidType getFirstFluidType(ItemStack stack) { + return null; + } + + @Override + public int getFill(ItemStack stack) { + return 0; + } +} diff --git a/src/main/java/com/hbm/items/armor/JetpackRegular.java b/src/main/java/com/hbm/items/armor/JetpackRegular.java index cbf04933b..6acaa030e 100644 --- a/src/main/java/com/hbm/items/armor/JetpackRegular.java +++ b/src/main/java/com/hbm/items/armor/JetpackRegular.java @@ -4,8 +4,8 @@ import java.util.List; import com.hbm.extprop.HbmPlayerProps; import com.hbm.inventory.fluid.FluidType; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -16,7 +16,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class JetpackRegular extends JetpackBase { +public class JetpackRegular extends JetpackFueledBase { public JetpackRegular(FluidType fuel, int maxFuel) { super(fuel, maxFuel); diff --git a/src/main/java/com/hbm/items/armor/JetpackVectorized.java b/src/main/java/com/hbm/items/armor/JetpackVectorized.java index d95312f80..e64593990 100644 --- a/src/main/java/com/hbm/items/armor/JetpackVectorized.java +++ b/src/main/java/com/hbm/items/armor/JetpackVectorized.java @@ -4,8 +4,8 @@ import java.util.List; import com.hbm.extprop.HbmPlayerProps; import com.hbm.inventory.fluid.FluidType; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -17,7 +17,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; import net.minecraft.world.World; -public class JetpackVectorized extends JetpackBase { +public class JetpackVectorized extends JetpackFueledBase { public JetpackVectorized(FluidType fuel, int maxFuel) { super(fuel, maxFuel); diff --git a/src/main/java/com/hbm/items/armor/WingsMurk.java b/src/main/java/com/hbm/items/armor/WingsMurk.java index d74840b42..daec63319 100644 --- a/src/main/java/com/hbm/items/armor/WingsMurk.java +++ b/src/main/java/com/hbm/items/armor/WingsMurk.java @@ -2,37 +2,43 @@ package com.hbm.items.armor; import com.hbm.extprop.HbmPlayerProps; import com.hbm.items.ModItems; +import com.hbm.main.ResourceManager; import com.hbm.render.model.ModelArmorWings; import com.hbm.util.ArmorUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; import net.minecraft.util.Vec3; import net.minecraft.world.World; -public class WingsMurk extends ItemArmor { +public class WingsMurk extends JetpackBase { - public WingsMurk(ArmorMaterial material) { - super(material, 0, 1); + public WingsMurk() { + super(); } - @SideOnly(Side.CLIENT) - ModelArmorWings model; + @Override + public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) { + return ResourceManager.wings_murk.toString(); + } @Override @SideOnly(Side.CLIENT) public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) { - - if(model == null) { - model = new ModelArmorWings(this == ModItems.wings_murk ? 0 : 1); + if (armorSlot == 1) { + if(cachedModel == null) { + cachedModel = new ModelArmorWings(this == ModItems.wings_murk ? 0 : 1); + } + + return cachedModel; } - - return model; + + return null; } public void onArmorTick(World world, EntityPlayer player, ItemStack stack) { diff --git a/src/main/java/com/hbm/items/block/ItemModSlab.java b/src/main/java/com/hbm/items/block/ItemModSlab.java index a562c28f2..9a6720064 100644 --- a/src/main/java/com/hbm/items/block/ItemModSlab.java +++ b/src/main/java/com/hbm/items/block/ItemModSlab.java @@ -1,11 +1,13 @@ package com.hbm.items.block; import com.hbm.blocks.ModBlocks; +import com.hbm.interfaces.NotableComments; import net.minecraft.block.Block; import net.minecraft.block.BlockSlab; import net.minecraft.item.ItemSlab; +@NotableComments public class ItemModSlab extends ItemSlab { public ItemModSlab(Block block) { diff --git a/src/main/java/com/hbm/items/food/ItemLemon.java b/src/main/java/com/hbm/items/food/ItemLemon.java index 17499655c..032fbf61a 100644 --- a/src/main/java/com/hbm/items/food/ItemLemon.java +++ b/src/main/java/com/hbm/items/food/ItemLemon.java @@ -3,8 +3,8 @@ package com.hbm.items.food; import java.util.List; import com.hbm.items.ModItems; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/com/hbm/items/food/ItemNugget.java b/src/main/java/com/hbm/items/food/ItemNugget.java deleted file mode 100644 index b6da8bc71..000000000 --- a/src/main/java/com/hbm/items/food/ItemNugget.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.hbm.items.food; - -import java.util.List; - -import com.hbm.items.ModItems; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemFood; -import net.minecraft.item.ItemStack; - -public class ItemNugget extends ItemFood { - - public ItemNugget(int p_i45340_1_, boolean p_i45340_2_) { - super(p_i45340_1_, p_i45340_2_); - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - if (this == ModItems.gun_moist_nugget) { - list.add("A Mosin-Na...no wait, it's"); - list.add("just a moist nugget."); - } - } - -} diff --git a/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java b/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java index 612eb8442..85af4ab67 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java @@ -8,14 +8,13 @@ import com.hbm.inventory.gui.GUIScreenFluid; import com.hbm.items.IItemControlReceiver; import com.hbm.main.MainRegistry; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PlayerInformPacket; +import com.hbm.packet.toclient.PlayerInformPacket; import com.hbm.tileentity.IGUIProvider; import com.hbm.util.ChatBuilder; import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -150,7 +149,7 @@ public class ItemFluidIDMulti extends Item implements IItemFluidIdentifier, IIte @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIScreenFluid(player); } } diff --git a/src/main/java/com/hbm/items/machine/ItemFluidIcon.java b/src/main/java/com/hbm/items/machine/ItemFluidIcon.java index 358d498d8..f41ec69eb 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidIcon.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidIcon.java @@ -6,6 +6,7 @@ import com.hbm.inventory.FluidStack; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; +import com.hbm.util.BobMathUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -40,7 +41,10 @@ public class ItemFluidIcon extends Item { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { if(stack.hasTagCompound()) { if(getQuantity(stack) > 0) list.add(getQuantity(stack) + "mB"); - if(getPressure(stack) > 0) list.add(EnumChatFormatting.RED + "" + getPressure(stack) + "PU"); + if(getPressure(stack) > 0) { + list.add(EnumChatFormatting.RED + "" + getPressure(stack) + "PU"); + list.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_RED) + "Pressurized, use compressor!"); + } } Fluids.fromID(stack.getItemDamage()).addInfo(list); diff --git a/src/main/java/com/hbm/items/machine/ItemMold.java b/src/main/java/com/hbm/items/machine/ItemMold.java index 81b8fb0b8..b92c60640 100644 --- a/src/main/java/com/hbm/items/machine/ItemMold.java +++ b/src/main/java/com/hbm/items/machine/ItemMold.java @@ -6,8 +6,10 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.inventory.material.Mats; +import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.material.MaterialShapes; import com.hbm.inventory.material.NTMMaterial; +import com.hbm.items.ItemEnums.EnumCasingType; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.util.I18nUtil; @@ -75,11 +77,20 @@ public class ItemMold extends Item { registerMold(new MoldBlock( 12, L, "block", MaterialShapes.BLOCK)); registerMold(new MoldSingle( 13, L, "pipes", new ItemStack(ModItems.pipes_steel), Mats.MAT_STEEL, MaterialShapes.BLOCK.q(3))); - registerMold(new MoldSingle( 14, S, "c357", new ItemStack(ModItems.casing_357), Mats.MAT_COPPER, MaterialShapes.PLATE.q(1))); - registerMold(new MoldSingle( 15, S, "c44", new ItemStack(ModItems.casing_44), Mats.MAT_COPPER, MaterialShapes.PLATE.q(1))); - registerMold(new MoldSingle( 16, S, "c9", new ItemStack(ModItems.casing_9), Mats.MAT_COPPER, MaterialShapes.PLATE.q(1))); - registerMold(new MoldSingle( 17, S, "c50", new ItemStack(ModItems.casing_50), Mats.MAT_COPPER, MaterialShapes.PLATE.q(1))); - registerMold(new MoldSingle( 18, S, "cbuckshot", new ItemStack(ModItems.casing_buckshot), Mats.MAT_COPPER, MaterialShapes.PLATE.q(1))); + registerMold(new MoldMulti( 16, S, "c9", MaterialShapes.PLATE.q(1, 4), + Mats.MAT_GUNMETAL, DictFrame.fromOne(ModItems.casing, EnumCasingType.SMALL), + Mats.MAT_WEAPONSTEEL, DictFrame.fromOne(ModItems.casing, EnumCasingType.SMALL_STEEL))); + registerMold(new MoldMulti( 17, S, "c50", MaterialShapes.PLATE.q(1, 2), + Mats.MAT_GUNMETAL, DictFrame.fromOne(ModItems.casing, EnumCasingType.LARGE), + Mats.MAT_WEAPONSTEEL, DictFrame.fromOne(ModItems.casing, EnumCasingType.LARGE_STEEL))); + + registerMold(new MoldShape( 22, S, "barrel_light", MaterialShapes.LIGHTBARREL)); + registerMold(new MoldShape( 23, S, "barrel_heavy", MaterialShapes.HEAVYBARREL)); + registerMold(new MoldShape( 24, S, "receiver_light", MaterialShapes.LIGHTRECEIVER)); + registerMold(new MoldShape( 25, S, "receiver_heavy", MaterialShapes.HEAVYRECEIVER)); + registerMold(new MoldShape( 26, S, "mechanism", MaterialShapes.MECHANISM)); + registerMold(new MoldShape( 27, S, "stock", MaterialShapes.STOCK)); + registerMold(new MoldShape( 28, S, "grip", MaterialShapes.GRIP)); } public void registerMold(Mold mold) { @@ -174,6 +185,15 @@ public class ItemMold extends Item { String od = shape.name() + name; List ores = OreDictionary.getOres(od); if(!ores.isEmpty()) { + //prioritize NTM items + for(ItemStack ore : ores) { + if(Item.itemRegistry.getNameForObject(ore.getItem()).startsWith(RefStrings.MODID)) { + ItemStack copy = ore.copy(); + copy.stackSize = this.amount; + return copy; + } + } + //...then try whatever comes first ItemStack copy = ores.get(0).copy(); copy.stackSize = this.amount; return copy; diff --git a/src/main/java/com/hbm/items/machine/ItemPACoil.java b/src/main/java/com/hbm/items/machine/ItemPACoil.java new file mode 100644 index 000000000..0bd562e21 --- /dev/null +++ b/src/main/java/com/hbm/items/machine/ItemPACoil.java @@ -0,0 +1,45 @@ +package com.hbm.items.machine; + +import java.util.List; + +import com.hbm.items.ItemEnumMulti; +import com.hbm.util.EnumUtil; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +public class ItemPACoil extends ItemEnumMulti { + + public ItemPACoil() { + super(EnumCoilType.class, true, true); + this.setMaxStackSize(1); + } + + public static enum EnumCoilType { + GOLD(0, 10_000, 0, 10_000, 0.99D), + NIOBIUM(5_000, 100_000, 5_000, 100_000, 0.999D), + BSCCO(50_000, 500_000, 50_000, 500_000, 0.99975D); + + public int quadMin; + public int quadMax; + public int diMin; + public int diMax; + public double diMult; + + private EnumCoilType(int quadMin, int quadMax, int diMin, int diMax, double diMult) { + this.quadMin = quadMin; + this.quadMax = quadMax; + this.diMin = diMin; + this.diMax = diMax; + this.diMult = diMult; + } + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + EnumCoilType type = EnumUtil.grabEnumSafely(theEnum, stack.getItemDamage()); + list.add("Quadrupole operational range: " + type.quadMin + " - " + type.quadMax); + list.add("Dipole operational range: " + type.diMin + " - " + type.diMax); + list.add("Dipole momentum multiplier: x" + type.diMult); + } +} diff --git a/src/main/java/com/hbm/items/machine/ItemRBMKLid.java b/src/main/java/com/hbm/items/machine/ItemRBMKLid.java index 1c1490798..853fe918f 100644 --- a/src/main/java/com/hbm/items/machine/ItemRBMKLid.java +++ b/src/main/java/com/hbm/items/machine/ItemRBMKLid.java @@ -2,9 +2,12 @@ package com.hbm.items.machine; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.rbmk.RBMKBase; +import com.hbm.handler.neutron.NeutronNodeWorld; +import com.hbm.handler.neutron.RBMKNeutronHandler.RBMKNeutronNode; import com.hbm.items.ModItems; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBase; +import com.hbm.util.fauxpointtwelve.BlockPos; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; @@ -37,7 +40,11 @@ public class ItemRBMKLid extends Item { if(tile.hasLid()) return false; - + + RBMKNeutronNode node = (RBMKNeutronNode) NeutronNodeWorld.getNode(new BlockPos(te)); + if (node != null) + node.addLid(); + int meta = RBMKBase.DIR_NORMAL_LID.ordinal(); if(this == ModItems.rbmk_lid_glass) { diff --git a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java index 93e30f4ac..895c788c6 100644 --- a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java +++ b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java @@ -2,6 +2,8 @@ package com.hbm.items.machine; import java.util.List; import java.util.Locale; +import java.util.function.BiFunction; +import java.util.function.Function; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; @@ -14,6 +16,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; public class ItemRBMKRod extends Item { @@ -131,26 +134,32 @@ public class ItemRBMKRod extends Item { inFlux += selfRate; - double xenon = getPoison(stack); - xenon -= xenonBurnFunc(inFlux); - - inFlux *= (1D - getPoisonLevel(stack)); - - xenon += xenonGenFunc(inFlux); - - if(xenon < 0D) xenon = 0D; - if(xenon > 100D) xenon = 100D; - - setPoison(stack, xenon); + //if xenon poison is enabled + if(RBMKDials.getXenon(world)) { + double xenon = getPoison(stack); + xenon -= xenonBurnFunc(inFlux); + + inFlux *= (1D - getPoisonLevel(stack)); + + xenon += xenonGenFunc(inFlux); + + if(xenon < 0D) xenon = 0D; + if(xenon > 100D) xenon = 100D; + + setPoison(stack, xenon); + } double outFlux = reactivityFunc(inFlux, getEnrichment(stack)) * RBMKDials.getReactivityMod(world); - - double y = getYield(stack); - y -= inFlux; - - if(y < 0D) y = 0D; - - setYield(stack, y); + + //if depletion is enabled + if(RBMKDials.getDepletion(world)) { + double y = getYield(stack); + y -= inFlux; + + if(y < 0D) y = 0D; + + setYield(stack, y); + } double coreHeat = this.getCoreHeat(stack); coreHeat += outFlux * heat; @@ -241,7 +250,7 @@ public class ItemRBMKRod extends Item { } /** - * @param reactivity [0;100] ...or at least those are sane levels + * @param enrichment [0;100] ...or at least those are sane levels * @return the amount of reactivity yielded, unmodified by xenon */ public double reactivityFunc(double in, double enrichment) { @@ -355,7 +364,55 @@ public class ItemRBMKRod extends Item { public static double getPoisonLevel(ItemStack stack) { return getPoison(stack) / 100D; } - + + // START Special flux curve handling! + // Nothing really uses this yet, though it's a really fun feature to play around with. + + // For the RBMK handler to see if the rod is special. + public boolean specialFluxCurve = false; + + public ItemRBMKRod setFluxCurve(boolean bool) { + specialFluxCurve = bool; + return this; + } + + /** Double 1: Flux ratio in. + * Double 2: Depletion value. + * Return double: Output flux ratio. + **/ + BiFunction ratioCurve; + + /** Double 1: Flux quantity in.
+ * Double 2: Flux ratio in.
+ * Return double: Output flux quantity. + **/ + BiFunction fluxCurve; + + public ItemRBMKRod setOutputRatioCurve(Function func) { + this.ratioCurve = (fluxRatioIn, depletion) -> func.apply(fluxRatioIn) * 1.0D; + return this; + } + + public ItemRBMKRod setDepletionOutputRatioCurve(BiFunction func) { + this.ratioCurve = func; + return this; + } + + public ItemRBMKRod setOutputFluxCurve(BiFunction func) { + this.fluxCurve = func; + return this; + } + + public double fluxRatioOut(double fluxRatioIn, double depletion) { + return MathHelper.clamp_double(ratioCurve.apply(fluxRatioIn, depletion), 0, 1); + } + + public double fluxFromRatio(double quantity, double ratio) { + return fluxCurve.apply(quantity, ratio); + } + + // END Special flux curve handling. + @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { diff --git a/src/main/java/com/hbm/items/machine/ItemTemplateFolder.java b/src/main/java/com/hbm/items/machine/ItemTemplateFolder.java index f25fd20df..a459e3fee 100644 --- a/src/main/java/com/hbm/items/machine/ItemTemplateFolder.java +++ b/src/main/java/com/hbm/items/machine/ItemTemplateFolder.java @@ -10,7 +10,6 @@ import com.hbm.util.I18nUtil; 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.Item; @@ -44,7 +43,7 @@ public class ItemTemplateFolder extends Item implements IGUIProvider { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIScreenTemplateFolder(player); } } diff --git a/src/main/java/com/hbm/items/special/ItemAutogen.java b/src/main/java/com/hbm/items/special/ItemAutogen.java index ea2be4db1..b828c9d2b 100644 --- a/src/main/java/com/hbm/items/special/ItemAutogen.java +++ b/src/main/java/com/hbm/items/special/ItemAutogen.java @@ -52,7 +52,7 @@ public class ItemAutogen extends Item { TextureMap map = (TextureMap) reg; for(NTMMaterial mat : Mats.orderedList) { - if(!textureOverrides.containsKey(mat) && mat.solidColorLight != mat.solidColorDark && (shape == null || mat.shapes.contains(shape))) { //only generate icons if there is no override, color variation is available and if the icon will actually be used + if(!textureOverrides.containsKey(mat) && mat.solidColorLight != mat.solidColorDark && (shape == null || mat.autogen.contains(shape))) { //only generate icons if there is no override, color variation is available and if the icon will actually be used String placeholderName = this.getIconString() + "-" + mat.names[0]; //the part after the dash is discarded - the name only has to be unique so that the hashmap which holds all the icon definitions can hold multiple references TextureAtlasSpriteMutatable mutableIcon = new TextureAtlasSpriteMutatable(placeholderName, new RGBMutatorInterpolatedComponentRemap(0xFFFFFF, 0x505050, mat.solidColorLight, mat.solidColorDark)); map.setTextureEntry(placeholderName, mutableIcon); @@ -71,7 +71,7 @@ public class ItemAutogen extends Item { public void getSubItems(Item item, CreativeTabs tab, List list) { for(NTMMaterial mat : Mats.orderedList) { - if(mat.shapes.contains(this.shape)) { + if(mat.autogen.contains(this.shape)) { list.add(new ItemStack(item, 1, mat.id)); } } diff --git a/src/main/java/com/hbm/items/special/ItemBedrockOreBase.java b/src/main/java/com/hbm/items/special/ItemBedrockOreBase.java index a20220d8e..c7a784844 100644 --- a/src/main/java/com/hbm/items/special/ItemBedrockOreBase.java +++ b/src/main/java/com/hbm/items/special/ItemBedrockOreBase.java @@ -5,7 +5,11 @@ import java.util.Random; import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; import com.hbm.items.tool.ItemOreDensityScanner; +import com.hbm.main.MainRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -16,6 +20,15 @@ import net.minecraft.util.StatCollector; import net.minecraft.world.gen.NoiseGeneratorPerlin; public class ItemBedrockOreBase extends Item { + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tab, List list) { + ItemStack ore = new ItemStack(item); + EntityPlayer player = MainRegistry.proxy.me(); + if(player != null) setOreAmount(ore, (int) Math.floor(player.posX), (int) Math.floor(player.posZ)); + list.add(ore); + } public static double getOreAmount(ItemStack stack, BedrockOreType type) { if(!stack.hasTagCompound()) return 0; @@ -38,7 +51,7 @@ public class ItemBedrockOreBase extends Item { for(BedrockOreType type : BedrockOreType.values()) { double amount = this.getOreAmount(stack, type); String typeName = StatCollector.translateToLocalFormatted("item.bedrock_ore.type." + type.suffix + ".name"); - list.add(typeName + ": " + ((int) (amount * 100)) / 100D + " (" + ItemOreDensityScanner.translateDensity(amount) + EnumChatFormatting.RESET + ")"); + list.add(typeName + ": " + ((int) (amount * 100)) / 100D + " (" + ItemOreDensityScanner.getColor(amount) + StatCollector.translateToLocalFormatted(ItemOreDensityScanner.translateDensity(amount)) + EnumChatFormatting.GRAY + ")"); } } diff --git a/src/main/java/com/hbm/items/special/ItemBook.java b/src/main/java/com/hbm/items/special/ItemBook.java index 56995b012..1a409b52f 100644 --- a/src/main/java/com/hbm/items/special/ItemBook.java +++ b/src/main/java/com/hbm/items/special/ItemBook.java @@ -9,7 +9,6 @@ import com.hbm.tileentity.IGUIProvider; 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.Item; @@ -40,7 +39,7 @@ public class ItemBook extends Item implements IGUIProvider { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIBook(player.inventory); } } diff --git a/src/main/java/com/hbm/items/special/ItemBookLore.java b/src/main/java/com/hbm/items/special/ItemBookLore.java index 866bd0866..7c4b63446 100644 --- a/src/main/java/com/hbm/items/special/ItemBookLore.java +++ b/src/main/java/com/hbm/items/special/ItemBookLore.java @@ -10,7 +10,6 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -115,7 +114,7 @@ public class ItemBookLore extends Item implements IGUIProvider { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIBookLore(player); } diff --git a/src/main/java/com/hbm/items/special/ItemCigarette.java b/src/main/java/com/hbm/items/special/ItemCigarette.java index 092885af4..b38fd2d29 100644 --- a/src/main/java/com/hbm/items/special/ItemCigarette.java +++ b/src/main/java/com/hbm/items/special/ItemCigarette.java @@ -5,8 +5,8 @@ import java.util.List; import com.hbm.extprop.HbmLivingProps; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/items/special/ItemClayTablet.java b/src/main/java/com/hbm/items/special/ItemClayTablet.java new file mode 100644 index 000000000..c41a8a1d9 --- /dev/null +++ b/src/main/java/com/hbm/items/special/ItemClayTablet.java @@ -0,0 +1,39 @@ +package com.hbm.items.special; + +import com.hbm.inventory.gui.GUIScreenClayTablet; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IGUIProvider; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class ItemClayTablet extends Item implements IGUIProvider { + + public ItemClayTablet() { + this.setMaxDamage(0); + this.setMaxStackSize(1); + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + if(!world.isRemote && !stack.hasTagCompound()) { + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setLong("tabletSeed", player.getRNG().nextLong()); + } + if(world.isRemote) player.openGui(MainRegistry.instance, 0, world, 0, 0, 0); + return stack; + } + + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } + + @Override @SideOnly(Side.CLIENT) + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIScreenClayTablet(); + } +} diff --git a/src/main/java/com/hbm/items/special/ItemGlitch.java b/src/main/java/com/hbm/items/special/ItemGlitch.java index 4145b0fbf..077ae4ab0 100644 --- a/src/main/java/com/hbm/items/special/ItemGlitch.java +++ b/src/main/java/com/hbm/items/special/ItemGlitch.java @@ -9,6 +9,7 @@ import com.hbm.entity.projectile.EntityBoxcar; import com.hbm.explosion.ExplosionChaos; import com.hbm.explosion.ExplosionLarge; import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; @@ -91,7 +92,7 @@ public class ItemGlitch extends Item implements IBatteryItem { } break; case 13: - player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_pip)); + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_heavy_revolver_lilmac)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.bottle_sparkle)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.geiger_counter)); player.addChatMessage(new ChatComponentText("Have some free stuff. You'll need it for that one cryptic achievement.")); @@ -111,8 +112,8 @@ public class ItemGlitch extends Item implements IBatteryItem { player.addChatMessage(new ChatComponentText("89% of magic tricks are not magic. Technically, they are sorcery.")); break; case 18: - player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_lever_action)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_20gauge, 12)); + player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_maresleg)); + player.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_standard, 12, EnumAmmo.G12.ordinal())); player.addChatMessage(new ChatComponentText("Here ya go.")); break; case 19: diff --git a/src/main/java/com/hbm/items/special/ItemHolotapeImage.java b/src/main/java/com/hbm/items/special/ItemHolotapeImage.java index 5c4cb8a27..a319a176e 100644 --- a/src/main/java/com/hbm/items/special/ItemHolotapeImage.java +++ b/src/main/java/com/hbm/items/special/ItemHolotapeImage.java @@ -9,7 +9,6 @@ import com.hbm.util.EnumUtil; 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; @@ -81,7 +80,7 @@ public class ItemHolotapeImage extends ItemHoloTape implements IGUIProvider { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIScreenHolotape(); } } diff --git a/src/main/java/com/hbm/items/special/ItemStarterKit.java b/src/main/java/com/hbm/items/special/ItemStarterKit.java index 67cebf52f..e18021e96 100644 --- a/src/main/java/com/hbm/items/special/ItemStarterKit.java +++ b/src/main/java/com/hbm/items/special/ItemStarterKit.java @@ -111,7 +111,6 @@ public class ItemStarterKit extends Item { player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_uf6_tank, 2)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_puf6_tank, 2)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_reactor_breeding, 2)); - player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_rtg_furnace_off, 2)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.reactor_research, 4)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_turbine, 4)); player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_radgen, 1)); @@ -174,29 +173,6 @@ public class ItemStarterKit extends Item { if(this == ModItems.nuke_electric_kit) { - /*player.inventory.addItemStackToInventory(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_coal_off), 2)); - player.inventory.addItemStackToInventory(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_diesel), 1)); - player.inventory.addItemStackToInventory(new ItemStack(Item.getItemFromBlock(ModBlocks.red_cable), 64)); - player.inventory.addItemStackToInventory(new ItemStack(Item.getItemFromBlock(ModBlocks.red_cable), 64)); - player.inventory.addItemStackToInventory(new ItemStack(Item.getItemFromBlock(ModBlocks.red_wire_coated), 64)); - player.inventory.addItemStackToInventory(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_battery), 6)); - player.inventory.addItemStackToInventory(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_electric_furnace_off), 2)); - player.inventory.addItemStackToInventory(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_chemplant), 1)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.battery_red_cell_24, 1)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.battery_advanced_cell_4, 1)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.battery_advanced_cell_4, 1)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.battery_lithium, 1)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.fusion_core, 1)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.energy_core, 1)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.plate_aluminium, 32)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.plate_titanium, 32)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.plate_steel, 32)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.circuit_aluminium, 16)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.circuit_copper, 8)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.circuit_red_copper, 4)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.circuit_gold, 2)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.motor, 4));*/ - player.inventory.addItemStackToInventory(new ItemStack(ModItems.coil_copper, 16)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.coil_gold, 8)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.coil_tungsten, 8)); @@ -463,9 +439,7 @@ public class ItemStarterKit extends Item { player.inventory.addItemStackToInventory(new ItemStack(ModItems.euphemium_plate, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.euphemium_legs, 1)); player.inventory.addItemStackToInventory(new ItemStack(ModItems.euphemium_boots, 1)); - player.inventory.addItemStackToInventory(new ItemStack(Item.getItemFromBlock(ModBlocks.statue_elb), 1)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_cursed, 1)); - player.inventory.addItemStackToInventory(new ItemStack(ModItems.watch, 1)); + player.inventory.addItemStackToInventory(new ItemStack(Item.getItemFromBlock(ModBlocks.statue_elb_f), 1)); } if(this == ModItems.hazmat_kit) diff --git a/src/main/java/com/hbm/items/tool/ItemAmmoContainer.java b/src/main/java/com/hbm/items/tool/ItemAmmoContainer.java index 2657bb7fe..53ef51595 100644 --- a/src/main/java/com/hbm/items/tool/ItemAmmoContainer.java +++ b/src/main/java/com/hbm/items/tool/ItemAmmoContainer.java @@ -1,13 +1,8 @@ package com.hbm.items.tool; -import java.util.ArrayList; import java.util.List; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.GunConfiguration; import com.hbm.items.ModItems; -import com.hbm.items.weapon.ItemGunBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -16,52 +11,19 @@ import net.minecraft.world.World; public class ItemAmmoContainer extends Item { - public static final List configBlacklist = new ArrayList(); - public ItemAmmoContainer() { - this.setMaxDamage(1); - - configBlacklist.add(BulletConfigSyncingUtil.SCHRABIDIUM_REVOLVER); + this.setMaxStackSize(1); } @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - - for(ItemStack slot : player.inventory.mainInventory) { - - if(slot == null || !(slot.getItem() instanceof ItemGunBase)) continue; - List cfgs = new ArrayList(); - ItemGunBase gun = (ItemGunBase) slot.getItem(); - if(gun.mainConfig != null) cfgs.add(gun.mainConfig); - if(gun.altConfig != null) cfgs.add(gun.altConfig); - - for(GunConfiguration cfg : cfgs) { - if(cfg.config.isEmpty()) continue; - Integer first = cfg.config.get(0); - if(configBlacklist.contains(first)) continue; - BulletConfiguration bullet = BulletConfigSyncingUtil.pullConfig(first); - if(bullet == null) continue; - if(bullet.ammo == null) continue; - - ItemStack ammo = bullet.ammo.toStack(); - //for belt-fed guns: 64 is main config, 1 if alt config - //for reloaded guns: mag capacity divided by reload amount (equals one stack) - ammo.stackSize = cfg.reloadType == cfg.RELOAD_NONE ? cfg == gun.mainConfig ? 64 : 1 : (int) Math.ceil((double) cfg.ammoCap / (double) bullet.ammoCount); - player.inventory.addItemStackToInventory(ammo); - } - } - - stack.stackSize--; - if(stack.stackSize <= 0) - stack.damageItem(5, player); - return stack; } @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { if(this == ModItems.ammo_container) { - list.add("Gives ammo for most held weapons."); + list.add("to be implemented :P"); } } } diff --git a/src/main/java/com/hbm/items/tool/ItemBlowtorch.java b/src/main/java/com/hbm/items/tool/ItemBlowtorch.java index e690582c0..57698b4a0 100644 --- a/src/main/java/com/hbm/items/tool/ItemBlowtorch.java +++ b/src/main/java/com/hbm/items/tool/ItemBlowtorch.java @@ -8,8 +8,8 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import api.hbm.block.IToolable; import api.hbm.block.IToolable.ToolType; diff --git a/src/main/java/com/hbm/items/tool/ItemBoltgun.java b/src/main/java/com/hbm/items/tool/ItemBoltgun.java index 0b4ef3dd2..837eb7207 100644 --- a/src/main/java/com/hbm/items/tool/ItemBoltgun.java +++ b/src/main/java/com/hbm/items/tool/ItemBoltgun.java @@ -5,8 +5,8 @@ import com.hbm.items.IAnimatedItem; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.util.EntityDamageUtil; @@ -127,7 +127,7 @@ public class ItemBoltgun extends Item implements IAnimatedItem { public BusAnimation getAnimation(NBTTagCompound data, ItemStack stack) { return new BusAnimation() .addBus("RECOIL", new BusAnimationSequence() - .addKeyframePosition(1, 0, 1, 50) - .addKeyframePosition(0, 0, 1, 100)); + .addPos(1, 0, 1, 50) + .addPos(0, 0, 1, 100)); } } diff --git a/src/main/java/com/hbm/items/tool/ItemBombCaller.java b/src/main/java/com/hbm/items/tool/ItemBombCaller.java index 5ea5c732e..87394ece7 100644 --- a/src/main/java/com/hbm/items/tool/ItemBombCaller.java +++ b/src/main/java/com/hbm/items/tool/ItemBombCaller.java @@ -37,10 +37,7 @@ public class ItemBombCaller extends Item { case 5: list.add("Type: VT stinger rockets"); break; case 6: list.add("Type: PIP OH GOD"); break; case 7: list.add("Type: Cloud the cloud oh god the cloud"); break; - default: list.add("Type: INVALID, Report it to mod creator"); - } - } @Override diff --git a/src/main/java/com/hbm/items/tool/ItemBookLemegeton.java b/src/main/java/com/hbm/items/tool/ItemBookLemegeton.java index 90bcdd20c..b8bc68810 100644 --- a/src/main/java/com/hbm/items/tool/ItemBookLemegeton.java +++ b/src/main/java/com/hbm/items/tool/ItemBookLemegeton.java @@ -7,7 +7,6 @@ import com.hbm.tileentity.IGUIProvider; 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.Item; @@ -29,7 +28,7 @@ public class ItemBookLemegeton extends Item implements IGUIProvider { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUILemegeton(player.inventory); } } diff --git a/src/main/java/com/hbm/items/tool/ItemCasingBag.java b/src/main/java/com/hbm/items/tool/ItemCasingBag.java new file mode 100644 index 000000000..6329998f2 --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemCasingBag.java @@ -0,0 +1,180 @@ +package com.hbm.items.tool; + +import com.hbm.inventory.container.ContainerCasingBag; +import com.hbm.inventory.gui.GUICasingBag; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.util.ItemStackUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class ItemCasingBag extends Item implements IGUIProvider { + + public ItemCasingBag() { + this.setMaxStackSize(1); + } + + @Override + public int getMaxItemUseDuration(ItemStack stack) { + return 1; + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + if(!world.isRemote) player.openGui(MainRegistry.instance, 0, world, 0, 0, 0); + return stack; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerCasingBag(player.inventory, new InventoryCasingBag(player.getHeldItem())); + } + + @Override + @SideOnly(Side.CLIENT) + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUICasingBag(player.inventory, new InventoryCasingBag(player.getHeldItem())); + } + + /** + * Returns true if ammo was able to be added + * @param bag + * @param casing + * @param amount + * @return + */ + public static boolean pushCasing(ItemStack bag, ItemStack casing, float amount) { + if(!bag.hasTagCompound()) bag.stackTagCompound = new NBTTagCompound(); + String name = casing.getUnlocalizedName() + "@" + casing.getItemDamage(); + boolean ret = false; + //only add if the previous number did not exceed 1 (i.e. the bag ran full, and may have been emptied, we don't know) + //this may also cause minor loss, which evens out the dupe mentioned below. not that it matters, casings only have a 50% recovery rate! + if(bag.stackTagCompound.getFloat(name) < 1) { + ret = true; + bag.stackTagCompound.setFloat(name, bag.stackTagCompound.getFloat(name) + amount); + } + if(bag.stackTagCompound.getFloat(name) >= 1) { + InventoryCasingBag inv = new InventoryCasingBag(bag); + ItemStack toAdd = casing.copy(); + while(bag.stackTagCompound.getFloat(name) >= 1) { + + boolean didSomething = false; + + for(int i = 0; i < inv.getSizeInventory(); i++) { + if(toAdd.stackSize <= 0) break; + ItemStack slot = inv.getStackInSlot(i); + if(slot != null && slot.getItem() == toAdd.getItem() && slot.getItemDamage() == toAdd.getItemDamage()) { + int am = Math.min(toAdd.stackSize, slot.getMaxStackSize() - slot.stackSize); + toAdd.stackSize -= am; + slot.stackSize += am; + if(am > 0) didSomething = true; + } + } + + for(int i = 0; i < inv.getSizeInventory(); i++) { + if(toAdd.stackSize <= 0) break; + ItemStack slot = inv.getStackInSlot(i); + if(slot == null) { + inv.setInventorySlotContents(i, toAdd); + didSomething = true; + break; + } + } + + if(didSomething) { + bag.stackTagCompound.setFloat(name, bag.stackTagCompound.getFloat(name) - 1F); + ret = true; + } else { + break; + } + } + inv.markDirty(); + } + return ret; + } + + public static class InventoryCasingBag implements IInventory { + + public final ItemStack box; + public ItemStack[] slots; + + public InventoryCasingBag(ItemStack box) { + this.box = box; + slots = new ItemStack[this.getSizeInventory()]; + + if(!box.hasTagCompound()) + box.setTagCompound(new NBTTagCompound()); + + ItemStack[] fromNBT = ItemStackUtil.readStacksFromNBT(box, slots.length); + + if(fromNBT != null) { + for(int i = 0; i < slots.length; i++) { + slots[i] = fromNBT[i]; + } + } + } + + @Override public int getSizeInventory() { return 15; } + @Override public ItemStack getStackInSlot(int slot) { return slots[slot]; } + + @Override + public ItemStack decrStackSize(int slot, int amount) { + ItemStack stack = getStackInSlot(slot); + if (stack != null) { + if (stack.stackSize > amount) { + stack = stack.splitStack(amount); + markDirty(); + } else { + setInventorySlotContents(slot, null); + } + } + return stack; + } + + @Override + public ItemStack getStackInSlotOnClosing(int slot) { + ItemStack stack = getStackInSlot(slot); + setInventorySlotContents(slot, null); + return stack; + } + + @Override + public void setInventorySlotContents(int slot, ItemStack stack) { + + if(stack != null) { + stack.stackSize = Math.min(stack.stackSize, this.getInventoryStackLimit()); + } + + slots[slot] = stack; + markDirty(); + } + + @Override public String getInventoryName() { return "container.casingBag"; } + @Override public boolean hasCustomInventoryName() { return box.hasDisplayName(); } + @Override public int getInventoryStackLimit() { return 64; } + + @Override + public void markDirty() { + for(int i = 0; i < getSizeInventory(); ++i) { + if(getStackInSlot(i) != null && getStackInSlot(i).stackSize == 0) { + slots[i] = null; + } + } + + ItemStackUtil.addStacksToNBT(box, slots); + } + + @Override public boolean isUseableByPlayer(EntityPlayer player) { return true; } + @Override public void openInventory() { } + @Override public void closeInventory() { } + @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { return false; } + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemCatalog.java b/src/main/java/com/hbm/items/tool/ItemCatalog.java index db2eeb413..1f679a88a 100644 --- a/src/main/java/com/hbm/items/tool/ItemCatalog.java +++ b/src/main/java/com/hbm/items/tool/ItemCatalog.java @@ -10,7 +10,6 @@ import com.hbm.tileentity.IGUIProvider; 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.Item; @@ -44,7 +43,7 @@ public class ItemCatalog extends Item implements IGUIProvider { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { if(BobmazonOfferFactory.getOffers(player.getHeldItem()) != null) return new GUIScreenBobmazon(player, BobmazonOfferFactory.getOffers(player.getHeldItem())); diff --git a/src/main/java/com/hbm/items/tool/ItemChainsaw.java b/src/main/java/com/hbm/items/tool/ItemChainsaw.java index a2d4dfb38..b20f5ba3b 100644 --- a/src/main/java/com/hbm/items/tool/ItemChainsaw.java +++ b/src/main/java/com/hbm/items/tool/ItemChainsaw.java @@ -2,8 +2,8 @@ package com.hbm.items.tool; import com.hbm.inventory.fluid.FluidType; import com.hbm.items.IHeldSoundProvider; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayerMP; diff --git a/src/main/java/com/hbm/items/tool/ItemColtanCompass.java b/src/main/java/com/hbm/items/tool/ItemColtanCompass.java index b8cbe6b8e..c39efde01 100644 --- a/src/main/java/com/hbm/items/tool/ItemColtanCompass.java +++ b/src/main/java/com/hbm/items/tool/ItemColtanCompass.java @@ -31,7 +31,7 @@ public class ItemColtanCompass extends Item { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { list.add("Points towards the coltan deposit."); list.add("The deposit is a large area where coltan ore spawns like standard ore,"); - list.add("it's not one large blob of ore on that exact location, dipshit."); + list.add("it's not one large blob of ore on that exact location."); } @Override diff --git a/src/main/java/com/hbm/items/tool/ItemCrateCaller.java b/src/main/java/com/hbm/items/tool/ItemCrateCaller.java deleted file mode 100644 index 5ec1ff32d..000000000 --- a/src/main/java/com/hbm/items/tool/ItemCrateCaller.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.hbm.items.tool; - -import java.util.List; -import java.util.Random; - -import com.hbm.blocks.ModBlocks; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ChatComponentText; -import net.minecraft.world.World; - -public class ItemCrateCaller extends Item { - - Random rand = new Random(); - - public ItemCrateCaller() { - this.canRepair = false; - this.setMaxDamage(4); - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) - { - list.add("Right click to request supply drop!"); - } - - @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - - stack.damageItem(1, player); - - int x = rand.nextInt(31) - 15; - int z = rand.nextInt(31) - 15; - - Block crate = ModBlocks.crate; - - int i = rand.nextInt(1000); - - if(i < 350) - crate = ModBlocks.crate_weapon; - if(i < 100) - crate = ModBlocks.crate_metal; - if(i < 50) - crate = ModBlocks.crate_lead; - if(i == 0) - crate = ModBlocks.crate_red; - - if(!world.isRemote) - { - if(world.getBlock((int)player.posX + x, 255, (int)player.posZ + z) == Blocks.air) - world.setBlock((int)player.posX + x, 255, (int)player.posZ + z, crate); - } - if(world.isRemote) - { - player.addChatMessage(new ChatComponentText("Called in supply drop!")); - } - - world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); - - player.swingItem(); - - return stack; - - } - -} diff --git a/src/main/java/com/hbm/items/tool/ItemDesingatorManual.java b/src/main/java/com/hbm/items/tool/ItemDesingatorManual.java index bfffd9b3b..3cb8b732d 100644 --- a/src/main/java/com/hbm/items/tool/ItemDesingatorManual.java +++ b/src/main/java/com/hbm/items/tool/ItemDesingatorManual.java @@ -9,7 +9,6 @@ import com.hbm.tileentity.IGUIProvider; import api.hbm.item.IDesignatorItem; 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.Item; @@ -56,7 +55,7 @@ public class ItemDesingatorManual extends Item implements IDesignatorItem, IGUIP @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIScreenDesignator(player); } } diff --git a/src/main/java/com/hbm/items/tool/ItemDiscord.java b/src/main/java/com/hbm/items/tool/ItemDiscord.java index 75f8893de..b17818c25 100644 --- a/src/main/java/com/hbm/items/tool/ItemDiscord.java +++ b/src/main/java/com/hbm/items/tool/ItemDiscord.java @@ -20,7 +20,7 @@ public class ItemDiscord extends Item { MovingObjectPosition pos = Library.rayTrace(player, 100, 1); - if(pos.typeOfHit == MovingObjectType.BLOCK) { + if(pos != null && pos.typeOfHit == MovingObjectType.BLOCK) { if(!world.isRemote) { diff --git a/src/main/java/com/hbm/items/tool/ItemGuideBook.java b/src/main/java/com/hbm/items/tool/ItemGuideBook.java index f9579af33..948638f0f 100644 --- a/src/main/java/com/hbm/items/tool/ItemGuideBook.java +++ b/src/main/java/com/hbm/items/tool/ItemGuideBook.java @@ -11,7 +11,6 @@ import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -324,7 +323,7 @@ public class ItemGuideBook extends Item implements IGUIProvider { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIScreenGuide(player); } } diff --git a/src/main/java/com/hbm/items/tool/ItemLaserDetonator.java b/src/main/java/com/hbm/items/tool/ItemLaserDetonator.java index 4fee946c8..4e0d022bc 100644 --- a/src/main/java/com/hbm/items/tool/ItemLaserDetonator.java +++ b/src/main/java/com/hbm/items/tool/ItemLaserDetonator.java @@ -8,11 +8,11 @@ import com.hbm.config.GeneralConfig; import com.hbm.interfaces.IBomb; import com.hbm.interfaces.IBomb.BombReturnCode; import com.hbm.interfaces.IHoldableWeapon; +import com.hbm.items.weapon.sedna.Crosshair; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PlayerInformPacket; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; +import com.hbm.packet.toclient.PlayerInformPacket; import com.hbm.util.ChatBuilder; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/com/hbm/items/tool/ItemLeadBox.java b/src/main/java/com/hbm/items/tool/ItemLeadBox.java index 0e4384955..bfa427cc7 100644 --- a/src/main/java/com/hbm/items/tool/ItemLeadBox.java +++ b/src/main/java/com/hbm/items/tool/ItemLeadBox.java @@ -8,7 +8,6 @@ import com.hbm.util.ItemStackUtil; 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.inventory.IInventory; @@ -42,7 +41,7 @@ public class ItemLeadBox extends Item implements IGUIProvider { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUILeadBox(player.inventory, new InventoryLeadBox(player, player.getHeldItem())); } diff --git a/src/main/java/com/hbm/items/tool/ItemOilDetector.java b/src/main/java/com/hbm/items/tool/ItemOilDetector.java index 45d41af10..3b9cf86b7 100644 --- a/src/main/java/com/hbm/items/tool/ItemOilDetector.java +++ b/src/main/java/com/hbm/items/tool/ItemOilDetector.java @@ -5,7 +5,7 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.main.MainRegistry; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PlayerInformPacket; +import com.hbm.packet.toclient.PlayerInformPacket; import com.hbm.util.ChatBuilder; import net.minecraft.client.resources.I18n; diff --git a/src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java b/src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java index ffe5b17f0..5fd3ac58f 100644 --- a/src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java +++ b/src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java @@ -3,14 +3,14 @@ package com.hbm.items.tool; import com.hbm.items.special.ItemBedrockOreBase; import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PlayerInformPacket; +import com.hbm.packet.toclient.PlayerInformPacket; +import com.hbm.util.ChatBuilder; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.StatCollector; import net.minecraft.world.World; public class ItemOreDensityScanner extends Item { @@ -25,18 +25,31 @@ public class ItemOreDensityScanner extends Item { for(BedrockOreType type : BedrockOreType.values()) { double level = ItemBedrockOreBase.getOreLevel((int) Math.floor(player.posX), (int) Math.floor(player.posZ), type); PacketDispatcher.wrapper.sendTo(new PlayerInformPacket( - StatCollector.translateToLocalFormatted("item.bedrock_ore.type." + type.suffix + ".name") + ": " + ((int) (level * 100) / 100D) + " (" + translateDensity(level) + EnumChatFormatting.RESET + ")", + ChatBuilder.startTranslation("item.bedrock_ore.type." + type.suffix + ".name") + .next(": " + ((int) (level * 100) / 100D) + " (") + .nextTranslation(translateDensity(level)).color(getColor(level)) + .next(")").color(EnumChatFormatting.RESET).flush(), 777 + type.ordinal(), 4000), player); } } public static String translateDensity(double density) { - if(density <= 0.1) return EnumChatFormatting.DARK_RED + "Very poor"; - if(density <= 0.35) return EnumChatFormatting.RED + "Poor"; - if(density <= 0.75) return EnumChatFormatting.GOLD + "Low"; - if(density >= 1.9) return EnumChatFormatting.AQUA + "Excellent"; - if(density >= 1.65) return EnumChatFormatting.BLUE + "Very high"; - if(density >= 1.25) return EnumChatFormatting.GREEN + "High"; - return EnumChatFormatting.YELLOW + "Moderate"; + if(density <= 0.1) return "item.ore_density_scanner.verypoor"; + if(density <= 0.35) return "item.ore_density_scanner.poor"; + if(density <= 0.75) return "item.ore_density_scanner.low"; + if(density >= 1.9) return "item.ore_density_scanner.excellent"; + if(density >= 1.65) return "item.ore_density_scanner.veryhigh"; + if(density >= 1.25) return "item.ore_density_scanner.high"; + return "item.ore_density_scanner.moderate"; + } + + public static EnumChatFormatting getColor(double density) { + if(density <= 0.1) return EnumChatFormatting.DARK_RED; + if(density <= 0.35) return EnumChatFormatting.RED; + if(density <= 0.75) return EnumChatFormatting.GOLD; + if(density >= 1.9) return EnumChatFormatting.AQUA; + if(density >= 1.65) return EnumChatFormatting.BLUE; + if(density >= 1.25) return EnumChatFormatting.GREEN; + return EnumChatFormatting.YELLOW; } } diff --git a/src/main/java/com/hbm/items/tool/ItemPlasticBag.java b/src/main/java/com/hbm/items/tool/ItemPlasticBag.java index 1d575e314..6393832a5 100644 --- a/src/main/java/com/hbm/items/tool/ItemPlasticBag.java +++ b/src/main/java/com/hbm/items/tool/ItemPlasticBag.java @@ -8,7 +8,6 @@ import com.hbm.util.ItemStackUtil; 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.inventory.IInventory; @@ -42,7 +41,7 @@ public class ItemPlasticBag extends Item implements IGUIProvider { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIPlasticBag(player.inventory, new InventoryPlasticBag(player, player.getHeldItem())); } diff --git a/src/main/java/com/hbm/items/tool/ItemPollutionDetector.java b/src/main/java/com/hbm/items/tool/ItemPollutionDetector.java index 1776249cf..c83ca9459 100644 --- a/src/main/java/com/hbm/items/tool/ItemPollutionDetector.java +++ b/src/main/java/com/hbm/items/tool/ItemPollutionDetector.java @@ -4,7 +4,7 @@ import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionData; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PlayerInformPacket; +import com.hbm.packet.toclient.PlayerInformPacket; import com.hbm.util.ChatBuilder; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java b/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java index a5907f3f5..660c0ed82 100644 --- a/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java +++ b/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java @@ -3,8 +3,8 @@ package com.hbm.items.tool; import java.util.List; import com.hbm.blocks.BlockDummyable; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.ChatBuilder; import com.hbm.util.fauxpointtwelve.BlockPos; diff --git a/src/main/java/com/hbm/items/tool/ItemRepairKit.java b/src/main/java/com/hbm/items/tool/ItemRepairKit.java new file mode 100644 index 000000000..11bb57989 --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemRepairKit.java @@ -0,0 +1,54 @@ +package com.hbm.items.tool; + +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class ItemRepairKit extends Item { + + public ItemRepairKit(int dura) { + this.setMaxStackSize(1); + this.setMaxDamage(dura - 1); + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + if(world.isRemote) return stack; + + boolean didSomething = false; + + for(int i = 0; i < 9; i++) { + + ItemStack item = player.inventory.mainInventory[i]; + + if(item != null && item.getItem() instanceof ItemGunBaseNT) { + ItemGunBaseNT gun = (ItemGunBaseNT) item.getItem(); + int configs = gun.getConfigCount(); + + for(int j = 0; j < configs; j++) { + GunConfig cfg = gun.getConfig(item, j); + float maxDura = cfg.getDurability(item); + float wear = Math.min(gun.getWear(item, j), maxDura); + if(wear > 0) { + gun.setWear(item, j, Math.max(0F, gun.getWear(item, j) - maxDura * 0.25F)); + didSomething = true; + } + } + } + } + + if(didSomething) { + if(this == ModItems.gun_kit_1) world.playSoundAtEntity(player, "hbm:item.spray", 1.0F, 1.0F); + if(this == ModItems.gun_kit_2) world.playSoundAtEntity(player, "hbm:item.repair", 1.0F, 1.0F); + + stack.damageItem(1, player); + } + + return stack; + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemSatInterface.java b/src/main/java/com/hbm/items/tool/ItemSatInterface.java index f67a8cc9e..480993e35 100644 --- a/src/main/java/com/hbm/items/tool/ItemSatInterface.java +++ b/src/main/java/com/hbm/items/tool/ItemSatInterface.java @@ -6,14 +6,13 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemSatChip; import com.hbm.main.MainRegistry; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.SatPanelPacket; +import com.hbm.packet.toclient.SatPanelPacket; import com.hbm.saveddata.SatelliteSavedData; import com.hbm.saveddata.satellites.Satellite; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -59,7 +58,7 @@ public class ItemSatInterface extends ItemSatChip implements IGUIProvider { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { if(this == ModItems.sat_interface) return new GUIScreenSatInterface(player); else if(this == ModItems.sat_coord) diff --git a/src/main/java/com/hbm/items/tool/ItemSatRelay.java b/src/main/java/com/hbm/items/tool/ItemSatRelay.java deleted file mode 100644 index ba040cbd0..000000000 --- a/src/main/java/com/hbm/items/tool/ItemSatRelay.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.hbm.items.tool; - -import com.hbm.items.machine.ItemSatChip; - -public class ItemSatRelay extends ItemSatChip { -//Schrabby doesn't fucking know how this works so I HOPE it will create a new item that works without fucking everything up - - -} diff --git a/src/main/java/com/hbm/items/tool/ItemSettingsTool.java b/src/main/java/com/hbm/items/tool/ItemSettingsTool.java new file mode 100644 index 000000000..e6636d0f2 --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemSettingsTool.java @@ -0,0 +1,139 @@ +package com.hbm.items.tool; + +import com.hbm.extprop.HbmPlayerProps; +import com.hbm.handler.HbmKeybinds; +import com.hbm.interfaces.ICopiable; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.PlayerInformPacket; +import com.hbm.util.ChatBuilder; +import com.hbm.util.Either; +import com.hbm.util.I18nUtil; + +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; + +import javax.annotation.Nullable; +import java.util.List; + +public class ItemSettingsTool extends Item { + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean bool) { + NBTTagList displayInfo; + if(!(entity instanceof EntityPlayerMP)) return; + + if(((EntityPlayer) entity).getHeldItem() == stack && stack.hasTagCompound()) { + EntityPlayer player = ((EntityPlayer) entity); + int delay = stack.stackTagCompound.getInteger("inputDelay"); + delay++; + displayInfo = stack.stackTagCompound.getTagList("displayInfo", 10); + + if (HbmPlayerProps.getData(player).getKeyPressed(HbmKeybinds.EnumKeybind.TOOL_ALT) && delay > 4) { + int index = stack.stackTagCompound.getInteger("copyIndex") + 1; + if(index > displayInfo.tagCount() - 1) index = 0; + stack.stackTagCompound.setInteger("copyIndex", index); + delay = 0; + } + + stack.stackTagCompound.setInteger("inputDelay", delay); + if(world.getTotalWorldTime() % 5 != 0) return; + + if(displayInfo.tagCount() > 0){ + for (int j = 0; j < displayInfo.tagCount(); j++) { + NBTTagCompound nbt = displayInfo.getCompoundTagAt(j); + EnumChatFormatting format = stack.stackTagCompound.getInteger("copyIndex") == j ? EnumChatFormatting.AQUA : EnumChatFormatting.YELLOW; + PacketDispatcher.wrapper.sendTo( + new PlayerInformPacket(ChatBuilder.startTranslation(nbt.getString("info")) + .color(format) + .flush() + , 897 + j, 4000 ), (EntityPlayerMP) entity); + } + } + } + + } + @SuppressWarnings("unchecked") + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + list.add("Can copy the settings (filters, fluid ID, etc) of machines"); + list.add("Shift right-click to copy, right click to paste"); + list.add("Ctrl click on pipes to paste settings to multiple pipes"); + if(stack.stackTagCompound != null) { + NBTTagCompound nbt = stack.stackTagCompound; + if (nbt.hasKey("tileName")){ + list.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey(nbt.getString("tileName") + ".name")); + } else { + list.add(EnumChatFormatting.RED + " None "); + } + + } + } + @Override + public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fX, float fY, float fZ) { + Either schrodinger = getCopyInfoSource(world, x, y, z); + if(schrodinger == null) return false; + ICopiable copiable = schrodinger.cast(); + + if(player.isSneaking()) { + stack.stackTagCompound = copiable.getSettings(world, x, y, z); + if(stack.stackTagCompound != null) { + + stack.stackTagCompound.setString("tileName", copiable.getSettingsSourceID(schrodinger)); + stack.stackTagCompound.setInteger("copyIndex", 0); + stack.stackTagCompound.setInteger("inputDelay", 0); + String[] info = copiable.infoForDisplay(world, x, y, z); + if (info != null) { + NBTTagList displayInfo = new NBTTagList(); + for (String str : info) { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setString("info", str); + displayInfo.appendTag(nbt); + } + stack.stackTagCompound.setTag("displayInfo", displayInfo); + } + + if (world.isRemote) { + player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA) + .nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA) + .next("] ").color(EnumChatFormatting.DARK_AQUA) + .next("Copied settings of " + copiable.getSettingsSourceDisplay(schrodinger)).color(EnumChatFormatting.AQUA).flush()); + } + } else { + player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA) + .nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA) + .next("] ").color(EnumChatFormatting.DARK_AQUA) + .next("Copy failed, machine has no settings tool support: " + copiable.getSettingsSourceDisplay(schrodinger)).color(EnumChatFormatting.RED).flush()); + } + + } else if(stack.hasTagCompound()) { + int index = stack.stackTagCompound.getInteger("copyIndex"); + copiable.pasteSettings(stack.stackTagCompound, index, world, player, x, y, z); + } + + return !world.isRemote; + } + + @Nullable + private Either getCopyInfoSource(World world, int x, int y, int z) { + TileEntity te = world.getTileEntity(x, y, z); + if(te instanceof ICopiable) { + return Either.left(te); + } + + Block block = world.getBlock(x, y, z); + if(block instanceof ICopiable) { + return Either.right(block); + } + + return null; + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemSurveyScanner.java b/src/main/java/com/hbm/items/tool/ItemSurveyScanner.java index 0e3517671..e4906b2ea 100644 --- a/src/main/java/com/hbm/items/tool/ItemSurveyScanner.java +++ b/src/main/java/com/hbm/items/tool/ItemSurveyScanner.java @@ -37,16 +37,13 @@ public class ItemSurveyScanner extends Item { Block block = world.getBlock(x + a * 5, i, z + b * 5); - if(block == ModBlocks.ore_oil) - hasOil = true; - else if(block == ModBlocks.ore_coltan) - hasColtan = true; - else if(block == ModBlocks.stone_depth) - hasDepth = true; - else if(block == ModBlocks.stone_gneiss) - hasSchist = true; - else if(block == ModBlocks.ore_australium) - hasAussie = true; + //wow, this sucks! + if(block == ModBlocks.ore_oil) hasOil = true; + else if(block == ModBlocks.ore_coltan) hasColtan = true; + else if(block == ModBlocks.stone_depth) hasDepth = true; + else if(block == ModBlocks.stone_depth_nether) hasDepth = true; + else if(block == ModBlocks.stone_gneiss) hasSchist = true; + else if(block == ModBlocks.ore_australium) hasAussie = true; } Block block = world.getBlock(x + a * 2, 0, z + b * 2); @@ -57,18 +54,12 @@ public class ItemSurveyScanner extends Item { } } - if(hasOil) - player.addChatComponentMessage(new ChatComponentText("Found OIL!").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.BLACK))); - if(hasColtan) - player.addChatComponentMessage(new ChatComponentText("Found COLTAN!").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD))); - if(hasDepth) - player.addChatComponentMessage(new ChatComponentText("Found DEPTH ROCK!").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GRAY))); - if(hasSchist) - player.addChatComponentMessage(new ChatComponentText("Found SCHIST!").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.DARK_AQUA))); - if(hasAussie) - player.addChatComponentMessage(new ChatComponentText("Found AUSTRALIUM!").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); - if(tile != null && tile.resource != null) - player.addChatComponentMessage(new ChatComponentText("Found BEDROCK ORE for " + tile.resource.getDisplayName() + "!").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); + if(hasOil) player.addChatComponentMessage(new ChatComponentText("Found OIL!").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.BLACK))); + if(hasColtan) player.addChatComponentMessage(new ChatComponentText("Found COLTAN!").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD))); + if(hasDepth) player.addChatComponentMessage(new ChatComponentText("Found DEPTH ROCK!").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GRAY))); + if(hasSchist) player.addChatComponentMessage(new ChatComponentText("Found SCHIST!").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.DARK_AQUA))); + if(hasAussie) player.addChatComponentMessage(new ChatComponentText("Found AUSTRALIUM!").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); + if(tile != null && tile.resource != null) player.addChatComponentMessage(new ChatComponentText("Found BEDROCK ORE for " + tile.resource.getDisplayName() + "!").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); } player.swingItem(); diff --git a/src/main/java/com/hbm/items/tool/ItemToolAbility.java b/src/main/java/com/hbm/items/tool/ItemToolAbility.java index 43b6c885e..99ce2d356 100644 --- a/src/main/java/com/hbm/items/tool/ItemToolAbility.java +++ b/src/main/java/com/hbm/items/tool/ItemToolAbility.java @@ -13,7 +13,7 @@ import com.hbm.handler.ToolAbility; import com.hbm.handler.ToolAbility.*; import com.hbm.main.MainRegistry; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PlayerInformPacket; +import com.hbm.packet.toclient.PlayerInformPacket; import com.hbm.util.ChatBuilder; import com.hbm.handler.WeaponAbility; diff --git a/src/main/java/com/hbm/items/weapon/GunB92Cell.java b/src/main/java/com/hbm/items/weapon/GunB92Cell.java index eac40f6f3..282e228d3 100644 --- a/src/main/java/com/hbm/items/weapon/GunB92Cell.java +++ b/src/main/java/com/hbm/items/weapon/GunB92Cell.java @@ -38,7 +38,7 @@ public class GunB92Cell extends Item { list.add("Draws energy from the B92, allowing you to"); list.add("reload it an additional 25 times."); - list.add("The cell will permanently hold it's charge,"); + list.add("The cell will permanently hold its charge,"); list.add("it is not meant to be used as a battery enhancement"); list.add("for the B92, but rather as a bomb."); list.add(""); diff --git a/src/main/java/com/hbm/items/weapon/GunB93.java b/src/main/java/com/hbm/items/weapon/GunB93.java deleted file mode 100644 index 245279dd9..000000000 --- a/src/main/java/com/hbm/items/weapon/GunB93.java +++ /dev/null @@ -1,270 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.effect.EntityCloudFleijaRainbow; -import com.hbm.entity.logic.EntityNukeExplosionMK3; -import com.hbm.entity.projectile.EntityModBeam; -import net.minecraft.entity.Entity; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.EnumRarity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunB93 extends Item { - - Random rand = new Random(); - - public int dmgMin = 16; - public int dmgMax = 28; - - public GunB93() { - - this.maxStackSize = 1; - } - - @Override - public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { - if (!p_77615_3_.isSneaking()) { - int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; - - ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); - MinecraftForge.EVENT_BUS.post(event); - j = event.charge; - - boolean flag = true; - - if (flag) { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (j < 10.0D) { - return; - } - - if (j > 10.0F) { - f = 10.0F; - } - - if (!p_77615_2_.isRemote) { - - EntityModBeam entityarrow1; - entityarrow1 = new EntityModBeam(p_77615_2_, p_77615_3_, 3.0F); - entityarrow1.mode = getPower(p_77615_1_) - 1; - p_77615_1_.damageItem(1, p_77615_3_); - - p_77615_2_.spawnEntityInWorld(entityarrow1); - - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.sparkShoot", 5.0F, 1.0F); - } - - setAnim(p_77615_1_, 1); - setPower(p_77615_1_, 0); - } - } else { - } - } - - @Override - public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) { - int j = getAnim(stack); - - if (j > 0) { - if (j < 30) - setAnim(stack, j + 1); - else - setAnim(stack, 0); - - if (j == 15) { - world.playSoundAtEntity(entity, "hbm:weapon.b92Reload", 2F, 0.9F); - setPower(stack, getPower(stack) + 1); - - if(getPower(stack) > 10) { - - setPower(stack, 0); - - if(!world.isRemote) { - EntityNukeExplosionMK3 ex = EntityNukeExplosionMK3.statFacFleija(world, entity.posX, entity.posY, entity.posZ, 50); - if(!ex.isDead) { - world.playSoundEffect(entity.posX, entity.posY, entity.posZ, "random.explode", 100.0f, world.rand.nextFloat() * 0.1F + 0.9F); - - world.spawnEntityInWorld(ex); - - EntityCloudFleijaRainbow cloud = new EntityCloudFleijaRainbow(world, 50); - cloud.posX = entity.posX; - cloud.posY = entity.posY; - cloud.posZ = entity.posZ; - world.spawnEntityInWorld(cloud); - } - } - } - } - } - - } - - @Override - public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { - return p_77654_1_; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - /** - * returns the action that specifies what animation to play when the items - * is being used - */ - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) { - return EnumAction.bow; - } - - /** - * Called whenever this item is equipped and the right mouse button is - * pressed. Args: itemStack, world, entityPlayer - */ - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - if (!p_77659_3_.isSneaking() && getPower(p_77659_1_) > 0) { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - - if (this.getAnim(p_77659_1_) == 0) - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } else { - if (getAnim(p_77659_1_) == 0) { - setAnim(p_77659_1_, 1); - } - } - - return p_77659_1_; - } - - /** - * Return the enchantability factor of the item, most of the time is based - * on material. - */ - @Override - public int getItemEnchantability() { - return 1; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 3.5, 0)); - return multimap; - } - - private static int getAnim(ItemStack stack) { - if (stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - return 0; - } - - return stack.stackTagCompound.getInteger("animation"); - - } - - private static void setAnim(ItemStack stack, int i) { - if (stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - } - - stack.stackTagCompound.setInteger("animation", i); - - } - - private static int getPower(ItemStack stack) { - if (stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - return 0; - } - - return stack.stackTagCompound.getInteger("energy"); - - } - - private static void setPower(ItemStack stack, int i) { - if (stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - } - - stack.stackTagCompound.setInteger("energy", i); - - } - - public static float getRotationFromAnim(ItemStack stack) { - float rad = 0.0174533F; - rad *= 7.5F; - int i = getAnim(stack); - - if (i < 10) - return 0; - i -= 10; - - if (i < 6) - return rad * i; - if (i > 14) - return rad * (5 - (i - 15)); - return rad * 5; - } - - public static float getOffsetFromAnim(ItemStack stack) { - float i = getAnim(stack); - - if (i < 10) - return 0; - i -= 10; - - if (i < 10) - return i / 10; - else - return 2 - (i / 10); - } - - public static float getTransFromAnim(ItemStack stack) { - float i = getAnim(stack); - - if (i < 10) - return 0; - i -= 10; - - if (i > 4 && i < 10) - return (i - 5) * 0.05F; - - if (i > 9 && i < 15) - return (10 * 0.05F) - ((i - 5) * 0.05F); - - return 0; - } - - @Override - public EnumRarity getRarity(ItemStack p_77613_1_) { - - return EnumRarity.uncommon; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunCryolator.java b/src/main/java/com/hbm/items/weapon/GunCryolator.java deleted file mode 100644 index 1a0c8b44f..000000000 --- a/src/main/java/com/hbm/items/weapon/GunCryolator.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityLN2; -import com.hbm.items.ModItems; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunCryolator extends Item { - - Random rand = new Random(); - - public GunCryolator() { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) { - World world = player.worldObj; - - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_cryolator_ammo))) { - EntityLN2 entityarrow = new EntityLN2(world, player, 3.0F); - - if (flag) { - entityarrow.canBePickedUp = 2; - } else { - if (count % 10 == 0) - player.inventory.consumeInventoryItem(ModItems.gun_cryolator_ammo); - } - - if (count % 5 == 0) - world.playSoundAtEntity(player, "hbm:weapon.cryolatorShoot", 1.0F, 1F); - - if (!world.isRemote) { - world.spawnEntityInWorld(entityarrow); - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("Ice to meet you!"); - list.add(""); - list.add("Ammo: Cryolator Ammo"); - list.add("Damage: 5"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 4, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunDash.java b/src/main/java/com/hbm/items/weapon/GunDash.java deleted file mode 100644 index c0ebd1e06..000000000 --- a/src/main/java/com/hbm/items/weapon/GunDash.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityLaser; -import com.hbm.items.ModItems; -import com.hbm.lib.Library; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunDash extends Item { - - Random rand = new Random(); - - public GunDash() - { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) - { - World world = player.worldObj; - - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_dash_ammo)) - && count % 2 == 0) { - - EntityLaser laser = new EntityLaser(world, player); - MovingObjectPosition pos = Library.rayTrace(player, 200, 1.0F); - laser.posX = pos.blockX + 0.5; - laser.posY = pos.blockY + 0.5; - laser.posZ = pos.blockZ + 0.5; - - world.playSoundAtEntity(player, "hbm:weapon.rifleShoot", 1.0F, 0.8F + (rand.nextFloat() * 0.4F)); - - if (!flag) { - player.inventory.consumeInventoryItem(ModItems.gun_dash_ammo); - } - - if (!world.isRemote) { - world.spawnEntityInWorld(laser); - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("Ratatatatatatatata!!"); - list.add(""); - list.add("Ammo: SMG Round"); - list.add("Damage: 2 - 8"); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 3, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunDefabricator.java b/src/main/java/com/hbm/items/weapon/GunDefabricator.java deleted file mode 100644 index ce1457033..000000000 --- a/src/main/java/com/hbm/items/weapon/GunDefabricator.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBullet; -import com.hbm.items.ModItems; -import com.hbm.main.MainRegistry; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunDefabricator extends Item { - - Random rand = new Random(); - - public GunDefabricator() - { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) - { - World world = player.worldObj; - - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_defabricator_ammo)) - && count % 2 == 0) { - EntityBullet entitybullet = new EntityBullet(world, player, 3.0F, 40, 120, false, "tauDay"); - entitybullet.setDamage(40 + rand.nextInt(120 - 40)); - - //world.playSoundAtEntity(player, "random.explode", 1.0F, 1.5F + (rand.nextFloat() / 4)); - world.playSoundAtEntity(player, "hbm:weapon.defabShoot", 1.0F, 0.9F + (rand.nextFloat() * 0.2F)); - if(count == this.getMaxItemUseDuration(stack)) - world.playSoundAtEntity(player, "hbm:weapon.defabSpinup", 1.0F, 1.0F); - - if(count % 20 == 0 && !flag) - player.inventory.consumeInventoryItem(ModItems.gun_defabricator_ammo); - - if (!world.isRemote) { - world.spawnEntityInWorld(entitybullet); - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - if(MainRegistry.polaroidID == 11) - list.add("Did you set your alarm for volcano day?"); - else - list.add("BAD WOLF"); - list.add(""); - list.add("Ammo: Defabricator Energy Cell"); - list.add("Damage: 40 - 120"); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 6.5, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunEuthanasia.java b/src/main/java/com/hbm/items/weapon/GunEuthanasia.java deleted file mode 100644 index adf81090d..000000000 --- a/src/main/java/com/hbm/items/weapon/GunEuthanasia.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBullet; -import com.hbm.items.ModItems; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunEuthanasia extends Item { - - Random rand = new Random(); - - public GunEuthanasia() - { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) - { - World world = player.worldObj; - - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_euthanasia_ammo)) - && count % 8 == 0) { - - int deadly = rand.nextInt(5); - - EntityBullet entityarrow = new EntityBullet(world, player, 3.0F, 2, 8, deadly == 0, false); - entityarrow.setDamage(1 + rand.nextInt(3)); - entityarrow.antidote = true; - - //world.playSoundAtEntity(player, "random.explode", 1.0F, 1.5F + (rand.nextFloat() / 4)); - world.playSoundAtEntity(player, "hbm:weapon.rifleShoot", 1.0F, 0.8F + (rand.nextFloat() * 0.4F)); - - if (flag) { - entityarrow.canBePickedUp = 2; - } else { - player.inventory.consumeInventoryItem(ModItems.gun_euthanasia_ammo); - } - - if (!world.isRemote) { - world.spawnEntityInWorld(entityarrow); - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("Say hello to my little syringe gun!"); - list.add(""); - list.add("Ammo: Syringe"); - list.add("Damage: 1 - 4"); - list.add("Syringes have a 20% chance to instakill the enemy."); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 3, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunFolly.java b/src/main/java/com/hbm/items/weapon/GunFolly.java deleted file mode 100644 index c4bb2506f..000000000 --- a/src/main/java/com/hbm/items/weapon/GunFolly.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.entity.projectile.EntityBulletBaseNT; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.interfaces.IHoldableWeapon; -import com.hbm.items.ModItems; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; - -public class GunFolly extends Item implements IHoldableWeapon { - - @Override - public Crosshair getCrosshair() { - return Crosshair.L_SPLIT; - } - - @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - - int state = getState(stack); - - if(state == 0) { - - world.playSoundAtEntity(player, "hbm:weapon.follyOpen", 1.0F, 1.0F); - setState(stack, 1); - - } else if(state == 1) { - - if(player.inventory.hasItem(ModItems.ammo_folly)) { - - world.playSoundAtEntity(player, "hbm:weapon.follyReload", 1.0F, 1.0F); - player.inventory.consumeInventoryItem(ModItems.ammo_folly); - setState(stack, 2); - } else { - - world.playSoundAtEntity(player, "hbm:weapon.follyClose", 1.0F, 1.0F); - setState(stack, 0); - } - - } else if(state == 2) { - - world.playSoundAtEntity(player, "hbm:weapon.follyClose", 1.0F, 1.0F); - setState(stack, 3); - setTimer(stack, 100); - } else if(state == 3) { - - if(getTimer(stack) == 0) { - - setState(stack, 0); - world.playSoundAtEntity(player, "hbm:weapon.follyFire", 1.0F, 1.0F); - - double mult = 1.75D; - - player.motionX -= player.getLookVec().xCoord * mult; - player.motionY -= player.getLookVec().yCoord * mult; - player.motionZ -= player.getLookVec().zCoord * mult; - - if (!world.isRemote) { - EntityBulletBaseNT bullet = new EntityBulletBaseNT(world, BulletConfigSyncingUtil.TEST_CONFIG, player); - world.spawnEntityInWorld(bullet); - } - } - } - - return stack; - } - - @Override - public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isCurrentItem) { - - if(getState(stack) == 3) { - - if(isCurrentItem) { - int timer = getTimer(stack); - - if(timer > 0) { - timer--; - - if(timer % 20 == 0 && timer != 0) - world.playSoundAtEntity(entity, "hbm:weapon.follyBuzzer", 1.0F, 1.0F); - - if(timer == 0) - world.playSoundAtEntity(entity, "hbm:weapon.follyAquired", 1.0F, 1.0F); - - setTimer(stack, timer); - } - } else { - setTimer(stack, 100); - } - } - } - - //0: closed, empty, - //1: open, empty - //2: open, full - //3: closed, full - public static void setState(ItemStack stack, int i) { - writeNBT(stack, "state", i); - } - - public static int getState(ItemStack stack) { - return readNBT(stack, "state"); - } - - public static void setTimer(ItemStack stack, int i) { - writeNBT(stack, "timer", i); - } - - public static int getTimer(ItemStack stack) { - return readNBT(stack, "timer"); - } - - private static void writeNBT(ItemStack stack, String key, int value) { - - if(!stack.hasTagCompound()) - stack.stackTagCompound = new NBTTagCompound(); - - stack.stackTagCompound.setInteger(key, value); - } - - private static int readNBT(ItemStack stack, String key) { - - if(!stack.hasTagCompound()) - return 0; - - return stack.stackTagCompound.getInteger(key); - } - -} diff --git a/src/main/java/com/hbm/items/weapon/GunHP.java b/src/main/java/com/hbm/items/weapon/GunHP.java deleted file mode 100644 index 8d3d0f31b..000000000 --- a/src/main/java/com/hbm/items/weapon/GunHP.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityPlasmaBeam; -import com.hbm.items.ModItems; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunHP extends Item { - - Random rand = new Random(); - - public GunHP() { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) { - World world = player.worldObj; - - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_hp_ammo))) { - - EntityPlasmaBeam plasma = new EntityPlasmaBeam(world, player, 1F); - EntityPlasmaBeam plasma1 = new EntityPlasmaBeam(world, player, 1F); - EntityPlasmaBeam plasma2 = new EntityPlasmaBeam(world, player, 1F); - EntityPlasmaBeam plasma3 = new EntityPlasmaBeam(world, player, 1F); - EntityPlasmaBeam plasma4 = new EntityPlasmaBeam(world, player, 1F); - plasma1.motionX *= (0.75 + (rand.nextDouble() * 0.5)); - plasma1.motionY *= (0.75 + (rand.nextDouble() * 0.5)); - plasma1.motionZ *= (0.75 + (rand.nextDouble() * 0.5)); - plasma2.motionX *= (0.75 + (rand.nextDouble() * 0.5)); - plasma2.motionY *= (0.75 + (rand.nextDouble() * 0.5)); - plasma2.motionZ *= (0.75 + (rand.nextDouble() * 0.5)); - plasma3.motionX *= (0.75 + (rand.nextDouble() * 0.5)); - plasma3.motionY *= (0.75 + (rand.nextDouble() * 0.5)); - plasma3.motionZ *= (0.75 + (rand.nextDouble() * 0.5)); - plasma4.motionX *= (0.75 + (rand.nextDouble() * 0.5)); - plasma4.motionY *= (0.75 + (rand.nextDouble() * 0.5)); - plasma4.motionZ *= (0.75 + (rand.nextDouble() * 0.5)); - - if (flag) { - plasma.canBePickedUp = 2; - } else { - if (count % 20 == 0) - player.inventory.consumeInventoryItem(ModItems.gun_hp_ammo); - } - - if (count == this.getMaxItemUseDuration(stack)) - world.playSoundAtEntity(player, "hbm:weapon.immolatorIgnite", 1.0F, 1F); - if (count % 10 == 0) - world.playSoundAtEntity(player, "hbm:weapon.immolatorShoot", 1.0F, 1F); - - if (!world.isRemote) { - world.spawnEntityInWorld(plasma); - world.spawnEntityInWorld(plasma1); - world.spawnEntityInWorld(plasma2); - world.spawnEntityInWorld(plasma3); - world.spawnEntityInWorld(plasma4); - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("Rrrrt - rrrrt - rrrrt, weeee!"); - list.add(""); - list.add("Ammo: Ink Cartridge"); - list.add("Damage: 25 - 45"); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 4, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunImmolator.java b/src/main/java/com/hbm/items/weapon/GunImmolator.java deleted file mode 100644 index e725f19b1..000000000 --- a/src/main/java/com/hbm/items/weapon/GunImmolator.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityFire; -import com.hbm.entity.projectile.EntityPlasmaBeam; -import com.hbm.items.ModItems; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunImmolator extends Item { - - Random rand = new Random(); - - public GunImmolator() { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) { - World world = player.worldObj; - - if (!player.isSneaking()) { - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_immolator_ammo))) { - EntityFire entityarrow = new EntityFire(world, player, 3.0F); - entityarrow.setDamage(6 + rand.nextInt(5)); - - if (flag) { - entityarrow.canBePickedUp = 2; - } else { - if(count % 10 == 0) - player.inventory.consumeInventoryItem(ModItems.gun_immolator_ammo); - } - - if(count == this.getMaxItemUseDuration(stack)) - world.playSoundAtEntity(player, "hbm:weapon.flamethrowerIgnite", 1.0F, 1F); - if(count % 5 == 0) - world.playSoundAtEntity(player, "hbm:weapon.flamethrowerShoot", 1.0F, 1F); - - if (!world.isRemote) { - world.spawnEntityInWorld(entityarrow); - } - } - } else { - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_immolator_ammo))) { - - EntityPlasmaBeam plasma = new EntityPlasmaBeam(world, player, 1F); - - if (flag) { - plasma.canBePickedUp = 2; - } else { - if(count % 4 == 0) - player.inventory.consumeInventoryItem(ModItems.gun_immolator_ammo); - } - - if(count == this.getMaxItemUseDuration(stack)) - world.playSoundAtEntity(player, "hbm:weapon.immolatorIgnite", 1.0F, 1F); - if(count % 10 == 0) - world.playSoundAtEntity(player, "hbm:weapon.immolatorShoot", 1.0F, 1F); - - if (!world.isRemote) - world.spawnEntityInWorld(plasma); - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("Hold right mouse button"); - list.add("to shoot fire,"); - list.add("sneak to shoot"); - list.add("plasma beams!"); - list.add(""); - list.add("Ammo: Immolator Fuel"); - list.add("Damage: 5"); - list.add("Secondary Damage: 25 - 45"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 4, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunJack.java b/src/main/java/com/hbm/items/weapon/GunJack.java deleted file mode 100644 index efb6e453e..000000000 --- a/src/main/java/com/hbm/items/weapon/GunJack.java +++ /dev/null @@ -1,150 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBullet; -import com.hbm.items.ModItems; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunJack extends Item { - Random rand = new Random(); - - public int dmgMin = 12; - public int dmgMax = 24; - - public GunJack() { - - this.maxStackSize = 1; - } - - /** - * called when the player releases the use item button. Args: itemstack, - * world, entityplayer, itemInUseCount - */ - @Override - public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { - int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; - - ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); - MinecraftForge.EVENT_BUS.post(event); - j = event.charge; - - boolean flag = p_77615_3_.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; - - if (flag || p_77615_3_.inventory.hasItem(ModItems.gun_jack_ammo)) { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (j < 10.0D) { - return; - } - - if (j > 10.0F) { - f = 10.0F; - } - - p_77615_1_.damageItem(1, p_77615_3_); - - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.shotgunShoot", 1.0F, 1.0F); - - if (flag) { } else { - p_77615_3_.inventory.consumeInventoryItem(ModItems.gun_jack_ammo); - } - - int k = rand.nextInt(25) + 24; - - for(int i = 0; i < k; i++) { - - EntityBullet entityarrow1 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow1.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - - if(!p_77615_2_.isRemote) - p_77615_2_.spawnEntityInWorld(entityarrow1); - } - } - } - - @Override - public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { - return p_77654_1_; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - /** - * returns the action that specifies what animation to play when the items - * is being used - */ - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) { - return EnumAction.bow; - } - - /** - * Called whenever this item is equipped and the right mouse button is - * pressed. Args: itemStack, world, entityPlayer - */ - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - - if (p_77659_3_.capabilities.isCreativeMode || p_77659_3_.inventory.hasItem(ModItems.gun_jack_ammo)) { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - /** - * Return the enchantability factor of the item, most of the time is based - * on material. - */ - @Override - public int getItemEnchantability() { - return 1; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("One barrel? Boring."); - list.add("Two barrels? Nah."); - list.add("Four barrels? Heck yes!"); - list.add(""); - list.add("Ammo: Quadruple Shotgun Shells"); - list.add("Damage: 12 - 24"); - list.add("Projectiles: 24 - 48"); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 4.5, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunLeverActionS.java b/src/main/java/com/hbm/items/weapon/GunLeverActionS.java deleted file mode 100644 index 2d90d50ca..000000000 --- a/src/main/java/com/hbm/items/weapon/GunLeverActionS.java +++ /dev/null @@ -1,232 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.items.ModItems; -import com.hbm.lib.ModDamageSource; -import com.hbm.main.MainRegistry; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.Entity; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.StatCollector; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunLeverActionS extends Item { - - Random rand = new Random(); - - public int dmgMin = 8; - public int dmgMax = 16; - - public GunLeverActionS() { - - this.maxStackSize = 1; - - this.setMaxDamage(500); - } - - /** - * called when the player releases the use item button. Args: itemstack, - * world, entityplayer, itemInUseCount - */ - @Override - public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { - int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; - - ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); - MinecraftForge.EVENT_BUS.post(event); - j = event.charge; - - boolean flag = p_77615_3_.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; - - if (flag || p_77615_3_.inventory.hasItem(ModItems.ammo_20gauge)) { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (j < 10.0D) { - return; - } - - if (j > 10.0F) { - f = 10.0F; - } - - Vec3 vec = p_77615_3_.getLookVec(); - vec.xCoord *= -1; - vec.yCoord *= -1; - vec.zCoord *= -1; - vec.normalize(); - - p_77615_3_.motionX += vec.xCoord * 0.75; - p_77615_3_.motionY += vec.yCoord * 0.75; - p_77615_3_.motionZ += vec.zCoord * 0.75; - - p_77615_3_.inventory.consumeInventoryItem(ModItems.ammo_20gauge); - - p_77615_1_.damageItem(1, p_77615_3_); - - p_77615_3_.attackEntityFrom(ModDamageSource.suicide, 10000); - if(!p_77615_3_.capabilities.isCreativeMode) - p_77615_3_.setHealth(0.0F); - - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.revolverShootAlt", 5.0F, 0.75F); - - setAnim(p_77615_1_, 1); - } - } - - - @Override - public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) { - int j = getAnim(stack); - - if(j > 0) { - if(j < 30) - setAnim(stack, j + 1); - else - setAnim(stack, 0); - - if(j == 15) - world.playSoundAtEntity(entity, "hbm:weapon.leverActionReload", 2F, 0.85F); - } - - } - - @Override - public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { - return p_77654_1_; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - /** - * returns the action that specifies what animation to play when the items - * is being used - */ - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) { - return EnumAction.bow; - } - - /** - * Called whenever this item is equipped and the right mouse button is - * pressed. Args: itemStack, world, entityPlayer - */ - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - - if(this.getAnim(p_77659_1_) == 0) - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - - return p_77659_1_; - } - - /** - * Return the enchantability factor of the item, most of the time is based - * on material. - */ - @Override - public int getItemEnchantability() { - return 1; - } - - public String getItemStackDisplayName(ItemStack stack) - { - if(MainRegistry.polaroidID == 11) - return ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + "_2.name")).trim(); - else - return ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + ".name")).trim(); - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - if(MainRegistry.polaroidID == 11) - list.add("Vee guilt-tripped me into this."); - else - list.add("I hate your guts, Vee."); - list.add(""); - list.add("Ammo: 12x74 Buckshot"); - list.add("Damage: Infinite"); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 3.5, 0)); - return multimap; - } - - private static int getAnim(ItemStack stack) { - if(stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - return 0; - } - - return stack.stackTagCompound.getInteger("animation"); - - } - - private static void setAnim(ItemStack stack, int i) { - if(stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - } - - stack.stackTagCompound.setInteger("animation", i); - - } - - public static float getRotationFromAnim(ItemStack stack) { - float rad = 0.0174533F; - rad *= 7.5F; - int i = getAnim(stack); - - if(i < 10) - return 0; - i -= 10; - - if(i < 10) - return rad * i; - else - return (rad * 10) - (rad * (i - 10)); - } - - public static float getOffsetFromAnim(ItemStack stack) { - float i = getAnim(stack); - - if(i < 10) - return 0; - i -= 10; - - if(i < 10) - return i / 10; - else - return 2 - (i / 10); - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunRpg.java b/src/main/java/com/hbm/items/weapon/GunRpg.java deleted file mode 100644 index e3c8fa53e..000000000 --- a/src/main/java/com/hbm/items/weapon/GunRpg.java +++ /dev/null @@ -1,144 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityRocket; -import com.hbm.items.ModItems; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunRpg extends Item { - public static final String[] bowPullIconNameArray = new String[] { "pulling_0", "pulling_1", "pulling_2" }; - @SideOnly(Side.CLIENT) - private IIcon[] iconArray; - public GunRpg() { - this.maxStackSize = 1; - this.setMaxDamage(500); - } - - /** - * called when the player releases the use item button. Args: itemstack, - * world, entityplayer, itemInUseCount - */ - @Override - public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { - int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; - - ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); - MinecraftForge.EVENT_BUS.post(event); - j = event.charge; - - boolean flag = p_77615_3_.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; - - if (flag || p_77615_3_.inventory.hasItem(ModItems.ammo_rocket)) { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (j < 25.0D) { - return; - } - - if (j > 25.0F) { - f = 25.0F; - } - - EntityRocket entityarrow = new EntityRocket(p_77615_2_, p_77615_3_, 3.0F); - - if (f == 1.0F) { - entityarrow.setIsCritical(true); - } - - p_77615_1_.damageItem(1, p_77615_3_); - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.rpgShoot", 1.0F, 0.25F); - - if (flag) { - entityarrow.canBePickedUp = 2; - } else { - p_77615_3_.inventory.consumeInventoryItem(ModItems.ammo_rocket); - } - - if (!p_77615_2_.isRemote) { - entityarrow.canBePickedUp = 2; - p_77615_2_.spawnEntityInWorld(entityarrow); - } - } - } - - @Override - public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { - return p_77654_1_; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - /** - * returns the action that specifies what animation to play when the items - * is being used - */ - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) { - return EnumAction.bow; - } - - /** - * Called whenever this item is equipped and the right mouse button is - * pressed. Args: itemStack, world, entityPlayer - */ - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - - return p_77659_1_; - } - - /** - * Return the enchantability factor of the item, most of the time is based - * on material. - */ - @Override - public int getItemEnchantability() { - return 1; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("Kaboom!"); - list.add(""); - list.add("Ammo: Rockets"); - list.add("Projectiles explode on impact."); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 4, 0)); - return multimap; - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/items/weapon/GunSpark.java b/src/main/java/com/hbm/items/weapon/GunSpark.java deleted file mode 100644 index 55b34c1d7..000000000 --- a/src/main/java/com/hbm/items/weapon/GunSpark.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntitySparkBeam; -import com.hbm.items.ModItems; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunSpark extends Item { - Random rand = new Random(); - - public int dmgMin = 12; - public int dmgMax = 24; - - public GunSpark() { - - this.maxStackSize = 1; - } - - /** - * called when the player releases the use item button. Args: itemstack, - * world, entityplayer, itemInUseCount - */ - @Override - public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { - int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; - - ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); - MinecraftForge.EVENT_BUS.post(event); - j = event.charge; - - boolean flag = p_77615_3_.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; - - if (flag || p_77615_3_.inventory.hasItem(ModItems.gun_spark_ammo)) { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (j < 10.0D) { - return; - } - - if (j > 10.0F) { - f = 10.0F; - } - - p_77615_1_.damageItem(1, p_77615_3_); - - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.sparkShoot", 1.0F, 1.0F); - - if (flag) { } else { - p_77615_3_.inventory.consumeInventoryItem(ModItems.gun_spark_ammo); - } - - EntitySparkBeam beam = new EntitySparkBeam(p_77615_2_, p_77615_3_, 3F); - beam.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - - if(!p_77615_2_.isRemote) - p_77615_2_.spawnEntityInWorld(beam); - } - } - - @Override - public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { - return p_77654_1_; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - /** - * returns the action that specifies what animation to play when the items - * is being used - */ - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) { - return EnumAction.bow; - } - - /** - * Called whenever this item is equipped and the right mouse button is - * pressed. Args: itemStack, world, entityPlayer - */ - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - - return p_77659_1_; - } - - /** - * Return the enchantability factor of the item, most of the time is based - * on material. - */ - @Override - public int getItemEnchantability() { - return 1; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("'magic does not compute'"); - list.add("'aeiou'"); - list.add(""); - list.add("Ammo: Electromagnetic Cartridge"); - list.add("Projectiles explode on impact."); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 4.5, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunSuicide.java b/src/main/java/com/hbm/items/weapon/GunSuicide.java deleted file mode 100644 index b94700be1..000000000 --- a/src/main/java/com/hbm/items/weapon/GunSuicide.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.items.ModItems; -import com.hbm.lib.ModDamageSource; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunSuicide extends Item { - - public static final String[] bowPullIconNameArray = new String[] {"pulling_0", "pulling_1", "pulling_2"}; - @SideOnly(Side.CLIENT) - private IIcon[] iconArray; - private Item ammo; - Random rand = new Random(); - - public GunSuicide() - { - this.maxStackSize = 1; - //if(this == ModItems.gun_revolver) - { - this.setMaxDamage(500); - } - - this.ammo = ModItems.ammo_357; - } - - /** - * called when the player releases the use item button. Args: itemstack, world, entityplayer, itemInUseCount - */ - @Override - public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) - { - int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; - - ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); - MinecraftForge.EVENT_BUS.post(event); - j = event.charge; - - boolean flag = p_77615_3_.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; - - - if (flag || p_77615_3_.inventory.hasItem(ammo)) - { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (j < 10.0D) - { - return; - } - - if (j > 10.0F) - { - f = 10.0F; - } - - p_77615_1_.damageItem(1, p_77615_3_); - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.revolverShoot", 1.0F, 1.0F); - - if (flag) - { } - else - { - p_77615_3_.inventory.consumeInventoryItem(ammo); - } - - if (!p_77615_2_.isRemote) - { - p_77615_3_.attackEntityFrom(ModDamageSource.suicide, 10000); - if(!p_77615_3_.capabilities.isCreativeMode) - p_77615_3_.setHealth(0.0F); - } - } - } - - @Override - public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) - { - return p_77654_1_; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) - { - return 72000; - } - - /** - * returns the action that specifies what animation to play when the items is being used - */ - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) - { - return EnumAction.bow; - } - - /** - * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer - */ - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) - { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - - return p_77659_1_; - } - - /** - * Return the enchantability factor of the item, most of the time is based on material. - */ - @Override - public int getItemEnchantability() - { - return 1; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("I've seen things..."); - list.add("...I shouldn't have seen."); - list.add(""); - list.add("Ammo: Lead Bullets"); - list.add("Damage: Infinite"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 2.5, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunUZI.java b/src/main/java/com/hbm/items/weapon/GunUZI.java deleted file mode 100644 index 630347f80..000000000 --- a/src/main/java/com/hbm/items/weapon/GunUZI.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBullet; -import com.hbm.interfaces.IHoldableWeapon; -import com.hbm.items.ModItems; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.EnumRarity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunUZI extends Item implements IHoldableWeapon { - - Random rand = new Random(); - - public GunUZI() - { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.none; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) - { - World world = player.worldObj; - - boolean flag = player.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - - if (player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.ammo_22lr)) { - - EntityBullet entityarrow = new EntityBullet(world, player, 3.0F, 2, 4, false, false); - entityarrow.setDamage(2 + rand.nextInt(3)); - - if(this == ModItems.gun_uzi_saturnite || this == ModItems.gun_uzi_saturnite_silencer) { - entityarrow.setDamage(4 + rand.nextInt(5)); - entityarrow.fire = true; - } - - if(this == ModItems.gun_uzi || this == ModItems.gun_uzi_saturnite) - world.playSoundAtEntity(player, "hbm:weapon.uziShoot", 10.0F, 1.0F); - if(this == ModItems.gun_uzi_silencer || this == ModItems.gun_uzi_saturnite_silencer) - world.playSoundAtEntity(player, "hbm:weapon.silencerShoot", 0.15F, 1.0F); - - if (!flag) { - player.inventory.consumeInventoryItem(ModItems.ammo_22lr); - } - - if (!world.isRemote) { - world.spawnEntityInWorld(entityarrow); - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - if(this == ModItems.gun_uzi) - list.add("[very intense pewpew-ing]"); - if(this == ModItems.gun_uzi_silencer) - list.add("Mom, where are my mittens?"); - if(this == ModItems.gun_uzi_saturnite) - list.add("The real deal."); - if(this == ModItems.gun_uzi_saturnite_silencer) - list.add("The real deal 2: Electric boogaloo"); - list.add(""); - list.add("Ammo: .22 LR Round"); - - if(this == ModItems.gun_uzi || this == ModItems.gun_uzi_silencer) { - list.add("Damage: 2 - 4"); - } - if(this == ModItems.gun_uzi_saturnite || this == ModItems.gun_uzi_saturnite_silencer) { - list.add("Damage: 4 - 8"); - list.add("Sets enemy on fire."); - } - } - - @Override - public EnumRarity getRarity(ItemStack p_77613_1_) { - - if (this == ModItems.gun_uzi_saturnite || this == ModItems.gun_uzi_saturnite_silencer) { - return EnumRarity.rare; - } - - return EnumRarity.common; - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 2.5D, 0)); - return multimap; - } - - @Override - public Crosshair getCrosshair() { - return Crosshair.L_CROSS; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunXVL1456.java b/src/main/java/com/hbm/items/weapon/GunXVL1456.java deleted file mode 100644 index 56381afe1..000000000 --- a/src/main/java/com/hbm/items/weapon/GunXVL1456.java +++ /dev/null @@ -1,180 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBullet; -import com.hbm.items.ModItems; -import com.hbm.lib.ModDamageSource; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunXVL1456 extends Item { - - Random rand = new Random(); - - public GunXVL1456() - { - this.maxStackSize = 1; - this.setMaxDamage(2500); - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public void onPlayerStoppedUsing(ItemStack stack, World world, EntityPlayer player, int i) { - - int j = this.getMaxItemUseDuration(stack) - i; - ArrowLooseEvent event = new ArrowLooseEvent(player, stack, j); - MinecraftForge.EVENT_BUS.post(event); - // if (event.isCanceled()) { - // return; - // } - j = event.charge * 2; - - if (player.isSneaking() && j >= 20) { - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - - if (flag || player.inventory.hasItem(ModItems.gun_xvl1456_ammo)) { - EntityBullet entitybullet = new EntityBullet(world, player, 3.0F, j, j + 5, false, "tauDay"); - - entitybullet.setDamage(j + rand.nextInt(6)); - - world.playSoundAtEntity(player, "hbm:weapon.tauShoot", 1.0F, 0.5F); - - if (flag) { - entitybullet.canBePickedUp = 2; - } else { - player.inventory.consumeInventoryItem(ModItems.gun_xvl1456_ammo); - } - - entitybullet.setIsCritical(true); - - if (!world.isRemote) { - world.spawnEntityInWorld(entitybullet); - } - stack.damageItem((int)(j * 0.05F), player); - - player.rotationPitch -= (j * 0.1F); - } - } - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - // if (event.isCanceled()) { - // return event.result; - // } - // Made uncancelable to prevent intermod idiocy - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) - { - World world = player.worldObj; - - if (!player.isSneaking()) { - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_xvl1456_ammo)) && count % 4 == 0) { - - EntityBullet entityarrow = new EntityBullet(world, player, 3.0F, 25, 65, false, "eyyOk"); - entityarrow.setDamage(25 + rand.nextInt(65 - 25)); - - world.playSoundAtEntity(player, "hbm:weapon.tauShoot", 1.0F, 0.8F + (rand.nextFloat() * 0.4F)); - - if (flag) { - entityarrow.canBePickedUp = 2; - } else { - player.inventory.consumeInventoryItem(ModItems.gun_xvl1456_ammo); - } - - if (!world.isRemote) { - world.spawnEntityInWorld(entityarrow); - } - } - } else { - if (count % 20 == 0 && this.getMaxItemUseDuration(stack) - count != 0) { - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_xvl1456_ammo))) { - if (!flag) { - player.inventory.consumeInventoryItem(ModItems.gun_xvl1456_ammo); - } - } - } - - world.playSoundAtEntity(player, "hbm:misc.nullTau", 0.1F, 1.0F); - } - - if(player instanceof EntityPlayer) - { - if(count < getMaxItemUseDuration(stack) - 200 && player.isSneaking() && count != 0) - { - if(!world.isRemote) - { - stack.damageItem(1250, player); - - world.createExplosion(player, player.posX, player.posY, player.posZ, 10.0F, true); - player.attackEntityFrom(ModDamageSource.tauBlast, 1000F); - player.dropOneItem(false); - } - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("Hold right mouse button"); - list.add("to shoot tauons,"); - list.add("sneak to charge up for"); - list.add("stronger shots!"); - list.add(""); - list.add("Ammo: Depleted Uranium"); - list.add("Damage: 25 - 65"); - list.add("Charged Damage: 40 - 400"); - list.add("Projectiles penetrate walls."); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 6, 0)); - return multimap; - } - -} diff --git a/src/main/java/com/hbm/items/weapon/GunZOMG.java b/src/main/java/com/hbm/items/weapon/GunZOMG.java deleted file mode 100644 index 971592633..000000000 --- a/src/main/java/com/hbm/items/weapon/GunZOMG.java +++ /dev/null @@ -1,226 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBullet; -import com.hbm.entity.projectile.EntityRainbow; -import com.hbm.items.ModItems; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ChatComponentText; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunZOMG extends Item { - - Random rand = new Random(); - - public GunZOMG() { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - new ArrowNockEvent(player, stack); - { - player.setItemInUse(stack, this.getMaxItemUseDuration(stack)); - } - - if (!stack.hasTagCompound()) { - stack.stackTagCompound = new NBTTagCompound(); - stack.stackTagCompound.setBoolean("valid", false); - stack.stackTagCompound.setBoolean("superuser", false); - } - - if (!player.isSneaking()) { - if (stack.stackTagCompound.getBoolean("valid")) { - if ((player.inventory.hasItem(ModItems.nugget_euphemium) - || player.inventory.hasItem(ModItems.ingot_euphemium))) { - } else { - if (!player.inventory.hasItem(ModItems.nugget_euphemium) - && !player.inventory.hasItem(ModItems.ingot_euphemium)) { - stack.stackTagCompound.setBoolean("valid", false); - if (!world.isRemote) { - player.addChatMessage(new ChatComponentText("[ZOMG] Validation lost!")); - player.addChatMessage(new ChatComponentText("[ZOMG] Request new validation!")); - } - } - } - } else { - if (!world.isRemote) { - player.addChatMessage(new ChatComponentText("[ZOMG] Gun not validated!")); - player.addChatMessage(new ChatComponentText("[ZOMG] Validate your gun with shift right-click.")); - } - } - } else { - if (stack.stackTagCompound.getBoolean("valid")) { - if (!world.isRemote) { - player.addChatMessage(new ChatComponentText("[ZOMG] Gun has already been validated.")); - } - } else { - if (player.inventory.hasItem(ModItems.nugget_euphemium) || player.inventory.hasItem(ModItems.ingot_euphemium)) { - stack.stackTagCompound.setBoolean("valid", true); - if (!world.isRemote) { - player.addChatMessage(new ChatComponentText("[ZOMG] Gun has been validated!")); - } - - //if(Library.superuser.contains(player.getUniqueID().toString())) { - if(player.inventory.hasItem(ModItems.polaroid)) { - if (!world.isRemote) { - player.addChatMessage(new ChatComponentText("[ZOMG] Welcome, superuser!")); - } - stack.stackTagCompound.setBoolean("superuser", true); - } else { - if (!world.isRemote) { - player.addChatMessage(new ChatComponentText("[ZOMG] Welcome, user!")); - } - stack.stackTagCompound.setBoolean("superuser", false); - } - } else { - if (!world.isRemote) { - player.addChatMessage(new ChatComponentText("[ZOMG] Validation failed!")); - player.addChatMessage(new ChatComponentText("[ZOMG] No external negative gravity well found!")); - } - } - } - } - - return stack; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) { - World world = player.worldObj; - - if (!stack.hasTagCompound()) { - stack.stackTagCompound = new NBTTagCompound(); - stack.stackTagCompound.setBoolean("valid", false); - stack.stackTagCompound.setBoolean("superuser", false); - } - - if (!player.isSneaking()) { - if (stack.stackTagCompound.getBoolean("valid")) { - EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack); - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.nugget_euphemium) - || player.inventory.hasItem(ModItems.ingot_euphemium)) && count % 1 == 0) { - if (!stack.stackTagCompound.getBoolean("superuser")) { - EntityBullet entityarrow = new EntityBullet(world, player, 3.0F, 35, 45, false, "chopper"); - EntityBullet entityarrow1 = new EntityBullet(world, player, 3.0F, 35, 45, false, "chopper"); - EntityBullet entityarrow2 = new EntityBullet(world, player, 3.0F, 35, 45, false, "chopper"); - EntityBullet entityarrow3 = new EntityBullet(world, player, 3.0F, 35, 45, false, "chopper"); - EntityBullet entityarrow4 = new EntityBullet(world, player, 3.0F, 35, 45, false, "chopper"); - EntityBullet entityarrow5 = new EntityBullet(world, player, 3.0F, 35, 45, false, "chopper"); - entityarrow.setDamage(35 + rand.nextInt(45 - 35)); - entityarrow1.setDamage(35 + rand.nextInt(45 - 35)); - entityarrow2.setDamage(35 + rand.nextInt(45 - 35)); - entityarrow3.setDamage(35 + rand.nextInt(45 - 35)); - entityarrow4.setDamage(35 + rand.nextInt(45 - 35)); - entityarrow5.setDamage(35 + rand.nextInt(45 - 35)); - - world.playSoundAtEntity(player, "hbm:weapon.osiprShoot", 1.0F, 0.6F + (rand.nextFloat() * 0.4F)); - - if (!world.isRemote) { - world.spawnEntityInWorld(entityarrow); - world.spawnEntityInWorld(entityarrow1); - world.spawnEntityInWorld(entityarrow2); - world.spawnEntityInWorld(entityarrow3); - world.spawnEntityInWorld(entityarrow4); - world.spawnEntityInWorld(entityarrow5); - } - } else { - EntityRainbow entityarrow = new EntityRainbow(world, player, 1F); - EntityRainbow entityarrow1 = new EntityRainbow(world, player, 1F); - EntityRainbow entityarrow2 = new EntityRainbow(world, player, 1F); - EntityRainbow entityarrow3 = new EntityRainbow(world, player, 1F); - EntityRainbow entityarrow4 = new EntityRainbow(world, player, 1F); - entityarrow.setDamage(10000 + rand.nextInt(90000)); - entityarrow1.setDamage(10000 + rand.nextInt(90000)); - entityarrow2.setDamage(10000 + rand.nextInt(90000)); - entityarrow3.setDamage(10000 + rand.nextInt(90000)); - entityarrow4.setDamage(10000 + rand.nextInt(90000)); - - //world.playSoundAtEntity(player, "random.explode", 1.0F, 1.5F + (rand.nextFloat() / 4)); - world.playSoundAtEntity(player, "hbm:weapon.zomgShoot", 1.0F, 0.8F + (rand.nextFloat() * 0.4F)); - - if (!world.isRemote) { - world.spawnEntityInWorld(entityarrow); - world.spawnEntityInWorld(entityarrow1); - world.spawnEntityInWorld(entityarrow2); - world.spawnEntityInWorld(entityarrow3); - world.spawnEntityInWorld(entityarrow4); - } - } - } else { - if (!player.inventory.hasItem(ModItems.nugget_euphemium) - && !player.inventory.hasItem(ModItems.ingot_euphemium)) { - stack.stackTagCompound.setBoolean("valid", false); - if (!world.isRemote) { - player.addChatMessage(new ChatComponentText("[ZOMG] Validation lost!")); - player.addChatMessage(new ChatComponentText("[ZOMG] Request new validation!")); - } - } - } - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - if(itemstack.getTagCompound() == null) - { - list.add("Gun not validated."); - } else if(itemstack.getTagCompound().getBoolean("valid")) { - if(itemstack.getTagCompound().getBoolean("superuser")) { - list.add("Gun set to superuser mode."); - list.add("Firing mode: Negative energy bursts"); - } else { - list.add("Gun set to regular user mode."); - list.add("Firing mode: Dark pulse spray"); - } - } else { - list.add("Gun not validated."); - } - list.add(""); - list.add("Ammo: None (Requires Validation)"); - list.add("Damage: 35 - 45"); - list.add("Energy Damage: 10000 - 100000"); - list.add("Energy projectiles destroy blocks."); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - //for(int i = 0; i < 25; i++) - // list.add("How do I use the ZOMG? How do I use the ZOMG? How do I use the ZOMG?"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 6, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmo.java b/src/main/java/com/hbm/items/weapon/ItemAmmo.java index eebc241a8..a887e20b8 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmo.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmo.java @@ -6,12 +6,9 @@ import java.util.List; import java.util.Locale; import java.util.Set; -import com.hbm.items.ItemAmmoEnums.AmmoRocket; import com.hbm.items.ItemAmmoEnums.IAmmoItemEnum; import com.hbm.items.ItemEnumMulti; -import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; import com.hbm.util.EnumUtil; import com.hbm.util.I18nUtil; @@ -122,7 +119,7 @@ public class ItemAmmo extends ItemEnumMulti { public ItemAmmo(Class> clazz, String altName) { super(clazz, true, true); - setCreativeTab(MainRegistry.weaponTab); + this.setCreativeTab(null); this.altName = altName; } @@ -131,10 +128,6 @@ public class ItemAmmo extends ItemEnumMulti { super.addInformation(stack, player, list, ext); if(!altName.isEmpty()) list.add(EnumChatFormatting.ITALIC + I18nUtil.resolveKey(altName)); - - if(stack.getItem() == ModItems.ammo_rocket && stack.getItemDamage() == AmmoRocket.DIGAMMA.ordinal()) { - list.add(player.worldObj.rand.nextInt(3) < 2 ? EnumChatFormatting.RED + "COVER YOURSELF IN OIL" : EnumChatFormatting.RED + "" + EnumChatFormatting.OBFUSCATED + "COVER YOURSELF IN OIL"); - } IAmmoItemEnum item = (IAmmoItemEnum) EnumUtil.grabEnumSafely(theEnum, stack.getItemDamage()); Set ammoTraits = item.getTraits(); diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java b/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java index d6482e22f..0014cb736 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java @@ -23,8 +23,8 @@ import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.particle.SpentCasing; import com.hbm.particle.SpentCasing.CasingType; import com.hbm.particle.helper.ExplosionCreator; diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java index 61ad4299d..f50d3ba0f 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java @@ -15,8 +15,8 @@ import com.hbm.explosion.vanillant.standard.EntityProcessorCross; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.particle.helper.ExplosionCreator; import com.hbm.potion.HbmPotion; diff --git a/src/main/java/com/hbm/items/weapon/ItemCoilgun.java b/src/main/java/com/hbm/items/weapon/ItemCoilgun.java deleted file mode 100644 index af245c5d2..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemCoilgun.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.handler.GunConfiguration; -import com.hbm.render.anim.BusAnimation; -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 ItemCoilgun extends ItemGunBase { - - public ItemCoilgun(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() - .addKeyframePosition(1, 0, 0, 100) - .addKeyframePosition(0, 0, 0, 200)); - } - - if(type == AnimType.RELOAD) { - return new BusAnimation() - .addBus("RELOAD", new BusAnimationSequence() - .addKeyframePosition(1, 0, 0, 250) - .addKeyframePosition(1, 0, 0, 500) - .addKeyframePosition(0, 0, 0, 250)); - } - - GunConfiguration config = ((ItemGunBase) stack.getItem()).mainConfig; - return config.animations.get(type); - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemCrucible.java b/src/main/java/com/hbm/items/weapon/ItemCrucible.java index 0fbfb1a64..b2201d593 100644 --- a/src/main/java/com/hbm/items/weapon/ItemCrucible.java +++ b/src/main/java/com/hbm/items/weapon/ItemCrucible.java @@ -6,8 +6,8 @@ import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import com.hbm.items.IEquipReceiver; import com.hbm.items.tool.ItemSwordAbility; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.ShadyUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -34,7 +34,7 @@ public class ItemCrucible extends ItemSwordAbility implements IEquipReceiver { } @Override - public void onEquip(EntityPlayer player) { + public void onEquip(EntityPlayer player, ItemStack stack) { if(!(player instanceof EntityPlayerMP)) return; diff --git a/src/main/java/com/hbm/items/weapon/ItemCryoCannon.java b/src/main/java/com/hbm/items/weapon/ItemCryoCannon.java index 6a69055ab..d35d177b1 100644 --- a/src/main/java/com/hbm/items/weapon/ItemCryoCannon.java +++ b/src/main/java/com/hbm/items/weapon/ItemCryoCannon.java @@ -5,8 +5,8 @@ import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; import com.hbm.inventory.fluid.Fluids; -import com.hbm.packet.GunAnimationPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.GunAnimationPacket; import com.hbm.render.anim.HbmAnimations.AnimType; import net.minecraft.enchantment.Enchantment; @@ -69,7 +69,7 @@ public class ItemCryoCannon extends ItemGunBase { @Override protected void spawnProjectile(World world, EntityPlayer player, ItemStack stack, int config) { - EntityChemical chem = new EntityChemical(world, player); + EntityChemical chem = new EntityChemical(world, player, 0, 0, 0); chem.setFluid(Fluids.OXYGEN); world.spawnEntityInWorld(chem); diff --git a/src/main/java/com/hbm/items/weapon/ItemCustomMissilePart.java b/src/main/java/com/hbm/items/weapon/ItemCustomMissilePart.java index 7c660a189..26c459982 100644 --- a/src/main/java/com/hbm/items/weapon/ItemCustomMissilePart.java +++ b/src/main/java/com/hbm/items/weapon/ItemCustomMissilePart.java @@ -2,7 +2,9 @@ package com.hbm.items.weapon; import java.util.HashMap; import java.util.List; +import java.util.function.Consumer; +import com.hbm.entity.missile.EntityMissileCustom; import com.hbm.items.special.ItemLootCrate; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; @@ -86,7 +88,17 @@ public class ItemCustomMissilePart extends Item { SCHRAB, TAINT, CLOUD, - TURBINE + TURBINE, + + //shit solution but it works. this allows traits to be attached to these empty dummy types, allowing for custom warheads + CUSTOM0, CUSTOM1, CUSTOM2, CUSTOM3, CUSTOM4, CUSTOM5, CUSTOM6, CUSTOM7, CUSTOM8, CUSTOM9; + + /** Overrides that type's impact effect. Only runs serverside */ + public Consumer impactCustom = null; + /** Runs at the beginning of the missile's update cycle, both client and serverside. */ + public Consumer updateCustom = null; + /** Override for the warhead's name in the missile description */ + public String labelCustom = null; } public enum FuelType { @@ -246,6 +258,8 @@ public class ItemCustomMissilePart extends Item { public String getWarhead(WarheadType type) { + if(type.labelCustom != null) return type.labelCustom; + switch(type) { case HE: return EnumChatFormatting.YELLOW + "HE"; diff --git a/src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java b/src/main/java/com/hbm/items/weapon/ItemEnergyGunBase.java similarity index 94% rename from src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java rename to src/main/java/com/hbm/items/weapon/ItemEnergyGunBase.java index 554f5a6ea..12340864e 100644 --- a/src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java +++ b/src/main/java/com/hbm/items/weapon/ItemEnergyGunBase.java @@ -1,4 +1,4 @@ -package com.hbm.items.weapon.gununified; +package com.hbm.items.weapon; import java.util.List; @@ -9,13 +9,12 @@ import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; import com.hbm.interfaces.IHoldableWeapon; -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.packet.GunAnimationPacket; -import com.hbm.packet.GunButtonPacket; +import com.hbm.items.weapon.sedna.Crosshair; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.GunAnimationPacket; +import com.hbm.packet.toserver.GunButtonPacket; import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; import com.hbm.util.BobMathUtil; import com.hbm.util.ChatBuilder; diff --git a/src/main/java/com/hbm/items/weapon/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/ItemGunBase.java index e40e9889c..b599776f0 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunBase.java @@ -18,15 +18,15 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.IEquipReceiver; import com.hbm.items.ModItems; import com.hbm.items.armor.ArmorFSB; +import com.hbm.items.weapon.sedna.Crosshair; import com.hbm.lib.HbmCollection; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.GunAnimationPacket; -import com.hbm.packet.GunButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.packet.toclient.GunAnimationPacket; +import com.hbm.packet.toserver.GunButtonPacket; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; import com.hbm.util.I18nUtil; import com.hbm.util.InventoryUtil; @@ -801,7 +801,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu } @Override - public void onEquip(EntityPlayer player) { + public void onEquip(EntityPlayer player, ItemStack stack) { if(!mainConfig.equipSound.isEmpty() && !player.worldObj.isRemote) { player.worldObj.playSoundAtEntity(player, mainConfig.equipSound, 1, 1); } diff --git a/src/main/java/com/hbm/items/weapon/ItemGunBio.java b/src/main/java/com/hbm/items/weapon/ItemGunBio.java deleted file mode 100644 index 1e7184e84..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunBio.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.handler.GunConfiguration; -import com.hbm.render.anim.BusAnimation; -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.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -public class ItemGunBio extends ItemGunBase { - - public ItemGunBio(GunConfiguration config) { - super(config); - } - - public static long lastShot; - public static List smokeNodes = new ArrayList(); - - @Override - public void startActionClient(ItemStack stack, World world, EntityPlayer player, boolean main) { } - - @Override - @SideOnly(Side.CLIENT) - protected void updateClient(ItemStack stack, World world, EntityPlayer entity, int slot, boolean isCurrentItem) { - super.updateClient(stack, world, entity, slot, isCurrentItem); - - boolean smoking = lastShot + 2000 > System.currentTimeMillis(); - - if(!smoking && !smokeNodes.isEmpty()) { - smokeNodes.clear(); - } - - if(smoking) { - - Vec3 prev = Vec3.createVectorHelper(-entity.motionX, -entity.motionY, -entity.motionZ); - prev.rotateAroundY((float) (entity.rotationYaw * Math.PI / 180D)); - double accel = 15D; - double side = (entity.rotationYaw - entity.prevRotationYawHead) * 0.1D; - double waggle = 0.025D; - - for(double[] node : smokeNodes) { - node[0] += prev.xCoord * accel + world.rand.nextGaussian() * waggle + side; - node[1] += prev.yCoord + 1.5D; - node[2] += prev.zCoord * accel + world.rand.nextGaussian() * waggle; - } - - double alpha = (System.currentTimeMillis() - ItemGunBio.lastShot) / 2000D; - alpha = (1 - alpha) * 0.5D; - - if(this.getIsReloading(stack)) alpha = 0; - - smokeNodes.add(new double[] {0, 0, 0, alpha}); - } - } - - @Override - @SideOnly(Side.CLIENT) - public BusAnimation getAnimation(ItemStack stack, AnimType type) { - - if(type == AnimType.CYCLE) { - lastShot = System.currentTimeMillis(); - return new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addKeyframePosition(0, 0, 0, 50) - .addKeyframePosition(0, 0, -3, 50) - .addKeyframePosition(0, 0, 0, 250) - ) - .addBus("HAMMER", new BusAnimationSequence() - .addKeyframePosition(0, 0, 1, 50) - .addKeyframePosition(0, 0, 1, 300) - .addKeyframePosition(0, 0, 0, 200) - ) - .addBus("DRUM", new BusAnimationSequence() - .addKeyframePosition(0, 0, 1, 50) - ); - } - - if(type == AnimType.RELOAD) { - return new BusAnimation() - .addBus("LATCH", new BusAnimationSequence() - .addKeyframePosition(0, 0, 90, 300) - .addKeyframePosition(0, 0, 90, 2000) - .addKeyframePosition(0, 0, 0, 150) - ) - .addBus("FRONT", new BusAnimationSequence() - .addKeyframePosition(0, 0, 0, 200) - .addKeyframePosition(0, 0, 45, 150) - .addKeyframePosition(0, 0, 45, 2000) - .addKeyframePosition(0, 0, 0, 75) - ) - .addBus("RELOAD_ROT", new BusAnimationSequence() - .addKeyframePosition(0, 0, 0, 300) - .addKeyframePosition(60, 0, 0, 500) - .addKeyframePosition(60, 0, 0, 500) - .addKeyframePosition(0, -90, -90, 0) - .addKeyframePosition(0, -90, -90, 600) - .addKeyframePosition(0, 0, 0, 300) - .addKeyframePosition(0, 0, 0, 100) - .addKeyframePosition(-45, 0, 0, 50) - .addKeyframePosition(-45, 0, 0, 100) - .addKeyframePosition(0, 0, 0, 300) - ) - .addBus("RELOAD_MOVE", new BusAnimationSequence() - .addKeyframePosition(0, 0, 0, 300) - .addKeyframePosition(0, -15, 0, 1000) - .addKeyframePosition(0, 0, 0, 450) - ) - .addBus("DRUM_PUSH", new BusAnimationSequence() - .addKeyframePosition(0, 0, 0, 1600) - .addKeyframePosition(0, 0, -5, 0) - .addKeyframePosition(0, 0, 0, 300) - ); - } - - return null; - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java b/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java deleted file mode 100644 index 110ed0f3e..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java +++ /dev/null @@ -1,227 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; - -import com.hbm.config.GeneralConfig; -import com.hbm.entity.projectile.EntityChemical; -import com.hbm.handler.GunConfiguration; -import com.hbm.handler.guncfg.GunEnergyFactory; -import com.hbm.interfaces.IHoldableWeapon; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.items.machine.ItemFluidIcon; -import com.hbm.packet.GunAnimationPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.render.anim.HbmAnimations.AnimType; -import com.hbm.render.util.RenderScreenOverlay; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -import api.hbm.fluid.IFillableItem; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.Minecraft; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.world.World; -import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; -import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; - -public class ItemGunChemthrower extends ItemGunBase implements IFillableItem { - - public ItemGunChemthrower() { - super(GunEnergyFactory.getChemConfig()); - } - - @Override - protected void fire(ItemStack stack, World world, EntityPlayer player) { - - if(!hasAmmo(stack, player, true)) - return; - - int bullets = 1; - - for(int i = 0; i < bullets; i++) { - spawnProjectile(world, player, stack, 0); - } - - if(player instanceof EntityPlayerMP) - PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(AnimType.CYCLE.ordinal()), (EntityPlayerMP) player); - - useUpAmmo(player, stack, true); - player.inventoryContainer.detectAndSendChanges(); - - int wear = (int) Math.ceil(10 / (1F + EnchantmentHelper.getEnchantmentLevel(Enchantment.unbreaking.effectId, stack))); - setItemWear(stack, getItemWear(stack) + wear); - } - - @Override - public boolean hasAmmo(ItemStack stack, EntityPlayer player, boolean main) { - return getMag(stack) >= 0 + this.getConsumption(stack); - } - - @Override - public void useUpAmmo(EntityPlayer player, ItemStack stack, boolean main) { - - if(!main && altConfig == null) - return; - - GunConfiguration config = mainConfig; - - if(!main) - config = altConfig; - - if(hasInfinity(stack, config)) - return; - - setMag(stack, getMag(stack) - this.getConsumption(stack)); - } - - @Override - public boolean canReload(ItemStack stack, World world, EntityPlayer player) { - return false; - } - - @Override - protected void spawnProjectile(World world, EntityPlayer player, ItemStack stack, int config) { - //spawn fluid projectile - EntityChemical chem = new EntityChemical(world, player); - chem.setFluid(this.getFluidType(stack)); - world.spawnEntityInWorld(chem); - } - - @Override - public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - - list.add("Ammo: " + getMag(stack) + " / " + mainConfig.ammoCap + "mB"); - - list.add("Ammo Type: " + this.getFluidType(stack).getLocalizedName()); - - int dura = mainConfig.durability - getItemWear(stack); - - if(dura < 0) - dura = 0; - - list.add("Durability: " + dura + " / " + mainConfig.durability); - list.add(""); - list.add("Name: " + mainConfig.name); - list.add("Manufacturer: " + mainConfig.manufacturer); - - if(!mainConfig.comment.isEmpty()) { - list.add(""); - for(String s : mainConfig.comment) - list.add(EnumChatFormatting.ITALIC + s); - } - - if(GeneralConfig.enableExtendedLogging) { - list.add(""); - list.add("Type: " + getMagType(stack)); - list.add("Is Reloading: " + getIsReloading(stack)); - list.add("Reload Cycle: " + getReloadCycle(stack)); - list.add("RoF Cooldown: " + getDelay(stack)); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void renderHUD(Pre event, ElementType type, EntityPlayer player, ItemStack stack) { - - ItemGunBase gun = ((ItemGunBase)stack.getItem()); - GunConfiguration gcfg = gun.mainConfig; - - if(type == ElementType.HOTBAR) { - - FluidType fluid = this.getFluidType(stack); - - ItemStack ammo = ItemFluidIcon.make(fluid, 1); - - int count = ItemGunBase.getMag(stack); - int max = gcfg.ammoCap; - boolean showammo = gcfg.showAmmo; - - int dura = ItemGunBase.getItemWear(stack) * 50 / gcfg.durability; - - RenderScreenOverlay.renderAmmo(event.resolution, Minecraft.getMinecraft().ingameGUI, ammo, count, max, dura, showammo); - } - - if(type == ElementType.CROSSHAIRS && GeneralConfig.enableCrosshairs) { - - event.setCanceled(true); - - if(!(gcfg.hasSights && player.isSneaking())) - RenderScreenOverlay.renderCustomCrosshairs(event.resolution, Minecraft.getMinecraft().ingameGUI, ((IHoldableWeapon)player.getHeldItem().getItem()).getCrosshair()); - else - RenderScreenOverlay.renderCustomCrosshairs(event.resolution, Minecraft.getMinecraft().ingameGUI, Crosshair.NONE); - } - } - - @Override - protected void reload2(ItemStack stack, World world, EntityPlayer player) { - this.setIsReloading(stack, false); - } - - public FluidType getFluidType(ItemStack stack) { - return Fluids.fromID(this.getMagType(stack)); - } - - public int getConsumption(ItemStack stack) { - return 3; - } - - @Override - public boolean acceptsFluid(FluidType type, ItemStack stack) { - return getFluidType(stack) == type || this.getMag(stack) == 0; - } - - public static final int transferSpeed = 50; - - @Override - public int tryFill(FluidType type, int amount, ItemStack stack) { - - if(!acceptsFluid(type, stack)) - return amount; - - if(this.getMag(stack) == 0) - this.setMagType(stack, type.getID()); - - int fill = this.getMag(stack); - int req = this.mainConfig.ammoCap - fill; - - int toFill = Math.min(amount, req); - toFill = Math.min(toFill, transferSpeed); - - this.setMag(stack, fill + toFill); - - return amount - toFill; - } - - @Override - public boolean providesFluid(FluidType type, ItemStack stack) { - return getFluidType(stack) == type; - } - - @Override - public int tryEmpty(FluidType type, int amount, ItemStack stack) { - - int fill = this.getMag(stack); - int toUnload = Math.min(fill, amount); - toUnload = Math.min(toUnload, transferSpeed); - - this.setMag(stack, fill - toUnload); - - return toUnload; - } - - @Override - public FluidType getFirstFluidType(ItemStack stack) { - return this.getFluidType(stack); - } - - @Override - public int getFill(ItemStack stack) { - return this.getMag(stack); - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunDart.java b/src/main/java/com/hbm/items/weapon/ItemGunDart.java deleted file mode 100644 index 1840cda68..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunDart.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.handler.GunConfiguration; - -import api.hbm.item.IDesignatorItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.ChatStyle; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -public class ItemGunDart extends ItemGunBase implements IDesignatorItem { - - public ItemGunDart(GunConfiguration config) { - super(config); - } - - public static void writePlayer(ItemStack stack, EntityPlayer player) { - - if(!stack.hasTagCompound()) - stack.stackTagCompound = new NBTTagCompound(); - - stack.stackTagCompound.setString("player", player.getDisplayName()); - stack.stackTagCompound.setLong("lease", player.worldObj.getTotalWorldTime() + 60 * 60 * 20); - } - - public static EntityPlayer readPlayer(World world, ItemStack stack) { - - if(!stack.hasTagCompound()) - return null; - - if(stack.stackTagCompound.getLong("lease") < world.getTotalWorldTime()) - return null; - - return MinecraftServer.getServer().getConfigurationManager().func_152612_a(stack.stackTagCompound.getString("player")); - } - - public void startAction(ItemStack stack, World world, EntityPlayer player, boolean main) { - - if(main) { - super.startAction(stack, world, player, main); - } else { - - EntityPlayer target = readPlayer(world, stack); - - if(target != null) { - - int dim = target.worldObj.provider.dimensionId; - int x = (int)target.posX; - int y = (int)target.posY; - int z = (int)target.posZ; - int dist = (int) target.getDistanceToEntity(player); - - player.addChatComponentMessage(new ChatComponentText(target.getDisplayName()).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); - player.addChatComponentMessage(new ChatComponentText("Dim: " + dim + " X:" + x + " Y:" + y + " Z:" + z + " (" + dist + " blocks away)").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); - } else { - - player.addChatComponentMessage(new ChatComponentText("No Target").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); - } - } - } - - @Override - public boolean isReady(World world, ItemStack stack, int x, int y, int z) { - EntityPlayer target = readPlayer(world, stack); - return target != null && target.dimension == world.provider.dimensionId; - } - - @Override - public Vec3 getCoords(World world, ItemStack stack, int x, int y, int z) { - EntityPlayer target = readPlayer(world, stack); - return Vec3.createVectorHelper(target.posX, target.posY, target.posZ); - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunDetonator.java b/src/main/java/com/hbm/items/weapon/ItemGunDetonator.java deleted file mode 100644 index ae89da2c9..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunDetonator.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.handler.GunConfiguration; - -import net.minecraft.item.ItemStack; - -public class ItemGunDetonator extends ItemGunBase { - - public ItemGunDetonator(GunConfiguration config) { - super(config); - } - - @Override - public boolean hasInfinity(ItemStack stack, GunConfiguration config) { - return true; - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunGauss.java b/src/main/java/com/hbm/items/weapon/ItemGunGauss.java deleted file mode 100644 index 7dd20b1a0..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunGauss.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.entity.projectile.EntityBulletBaseNT; -import com.hbm.handler.GunConfiguration; -import com.hbm.items.ModItems; -import com.hbm.lib.ModDamageSource; -import com.hbm.main.MainRegistry; -import com.hbm.packet.GunAnimationPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.render.anim.HbmAnimations.AnimType; -import com.hbm.sound.AudioWrapper; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class ItemGunGauss extends ItemGunBase { - - private AudioWrapper chargeLoop; - - public ItemGunGauss(GunConfiguration config, GunConfiguration alt) { - super(config, alt); - } - - public void endAction(ItemStack stack, World world, EntityPlayer player, boolean main) { - - if(getHasShot(stack)) { - world.playSoundAtEntity(player, "hbm:weapon.sparkShoot", 2.0F, 1.0F); - setHasShot(stack, false); - } - - if(!main && getStored(stack) > 0) { - EntityBulletBaseNT bullet = new EntityBulletBaseNT(world, altConfig.config.get(0), player); - bullet.overrideDamage = Math.max(getStored(stack), 1) * 10F; - world.spawnEntityInWorld(bullet); - world.playSoundAtEntity(player, "hbm:weapon.tauShoot", 0.5F, 0.75F); - setItemWear(stack, getItemWear(stack) + (getCharge(stack)) * 2); - setCharge(stack, 0); - - if(player instanceof EntityPlayerMP) - PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(AnimType.CYCLE.ordinal()), (EntityPlayerMP) player); - } - } - - public void endActionClient(ItemStack stack, World world, EntityPlayer player, boolean main) { - - if(chargeLoop != null) { - chargeLoop.stopSound(); - chargeLoop = null; - } - } - - protected void altFire(ItemStack stack, World world, EntityPlayer player) { - setCharge(stack, 1); - } - - @Override - public void startActionClient(ItemStack stack, World world, EntityPlayer player, boolean main) { - - if(!main && getItemWear(stack) < mainConfig.durability && player.inventory.hasItem(ModItems.gun_xvl1456_ammo)) { - chargeLoop = MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop2", (float)player.posX, (float)player.posY, (float)player.posZ, 1.0F, 5F, 0.75F); - world.playSoundAtEntity(player, "hbm:weapon.tauChargeLoop2", 1.0F, 0.75F); - - if(chargeLoop != null) { - chargeLoop.startSound(); - } - } - } - - protected void updateServer(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { - - super.updateServer(stack, world, player, slot, isCurrentItem); - - if(getIsAltDown(stack) && getItemWear(stack) < mainConfig.durability) { - - int c = getCharge(stack); - - if(c > 200) { - setCharge(stack, 0); - setItemWear(stack, mainConfig.durability); - player.attackEntityFrom(ModDamageSource.tauBlast, 1000); - world.newExplosion(player, player.posX, player.posY + player.eyeHeight, player.posZ, 5.0F, true, true); - return; - } - - if(c > 0) { - setCharge(stack, c + 1); - - if(c % 10 == 1 && c < 140 && c > 2) { - - if(player.inventory.hasItem(ModItems.gun_xvl1456_ammo)) { - player.inventory.consumeInventoryItem(ModItems.gun_xvl1456_ammo); - setStored(stack, getStored(stack) + 1); - } else { - setCharge(stack, 0); - setStored(stack, 0); - } - } - } else { - setStored(stack, 0); - } - } else { - setCharge(stack, 0); - setStored(stack, 0); - } - } - - protected void updateClient(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { - super.updateClient(stack, world, player, slot, isCurrentItem); - - if(chargeLoop != null) { - if(!chargeLoop.isPlaying()) { - chargeLoop = rebootAudio(chargeLoop, player); - } - chargeLoop.updatePosition((float)player.posX, (float)player.posY, (float)player.posZ); - chargeLoop.updatePitch(1 + (getCharge(stack)) * 0.01F); - } - } - - public AudioWrapper rebootAudio(AudioWrapper wrapper, EntityPlayer player) { - wrapper.stopSound(); - AudioWrapper audio = MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop2", (float)player.posX, (float)player.posY, (float)player.posZ, wrapper.getVolume(), wrapper.getRange(), wrapper.getPitch()); - audio.startSound(); - return audio; - } - - protected void spawnProjectile(World world, EntityPlayer player, ItemStack stack, int config) { - - super.spawnProjectile(world, player, stack, config); - setHasShot(stack, true); - } - - public static void setHasShot(ItemStack stack, boolean b) { - writeNBT(stack, "hasShot", b ? 1 : 0); - } - - public static boolean getHasShot(ItemStack stack) { - return readNBT(stack, "hasShot") == 1; - } - - /// gauss charge state /// - public static void setCharge(ItemStack stack, int i) { - writeNBT(stack, "gauss_charge", i); - } - - public static int getCharge(ItemStack stack) { - return readNBT(stack, "gauss_charge"); - } - - public static void setStored(ItemStack stack, int i) { - writeNBT(stack, "gauss_stored", i); - } - - public static int getStored(ItemStack stack) { - return readNBT(stack, "gauss_stored"); - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunLacunae.java b/src/main/java/com/hbm/items/weapon/ItemGunLacunae.java deleted file mode 100644 index 03fa31c1c..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunLacunae.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.handler.GunConfiguration; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class ItemGunLacunae extends ItemGunBase { - - public ItemGunLacunae(GunConfiguration config) { - super(config); - } - - @Override - public void startAction(ItemStack stack, World world, EntityPlayer player, boolean main) { - - if(main) { - setDelay(stack, 20); - world.playSoundAtEntity(player, "hbm:weapon.lacunaeSpinup", 1.0F, 1.0F); - } - } - - @Override - public void endAction(ItemStack stack, World world, EntityPlayer player, boolean main) { - - if(main) - world.playSoundAtEntity(player, "hbm:weapon.lacunaeSpindown", 1.0F, 1.0F); - } - - protected void updateServer(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { - - super.updateServer(stack, world, player, slot, isCurrentItem); - - if(getIsMouseDown(stack)) { - - int rot = readNBT(stack, "rot") % 360; - rot += 25; - writeNBT(stack, "rot", rot); - } - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunOSIPR.java b/src/main/java/com/hbm/items/weapon/ItemGunOSIPR.java deleted file mode 100644 index dd8f945bc..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunOSIPR.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.entity.projectile.EntityCombineBallNT; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.GunConfiguration; -import com.hbm.items.ModItems; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class ItemGunOSIPR extends ItemGunBase { - - public ItemGunOSIPR(GunConfiguration config, GunConfiguration alt) { - super(config, alt); - } - - @Override - protected void altFire(ItemStack stack, World world, EntityPlayer player) { - - setCharge(stack, 1); - world.playSoundAtEntity(player, "hbm:weapon.osiprCharging", 1.0F, 1F); - } - - @Override - protected void updateServer(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { - super.updateServer(stack, world, player, slot, isCurrentItem); - - if(!isCurrentItem) { - setCharge(stack, 0); - return; - } - - int i = getCharge(stack); - - if(i >= 20) { - EntityCombineBallNT energyBall = new EntityCombineBallNT(world, BulletConfigSyncingUtil.SPECIAL_OSIPR_CHARGED, player); - world.spawnEntityInWorld(energyBall); - world.playSoundAtEntity(player, altConfig.firingSound, 1.0F, 1F); - setCharge(stack, 0); - setDelay(stack, altConfig.rateOfFire); - player.inventory.consumeInventoryItem(ModItems.gun_osipr_ammo2); - - } else if(i > 0) - setCharge(stack, i + 1); - } - - @Override - protected boolean tryShoot(ItemStack stack, World world, EntityPlayer player, boolean main) { - - return super.tryShoot(stack, world, player, main) && getCharge(stack) == 0; - } - - /// CMB charge state /// - public static void setCharge(ItemStack stack, int i) { - writeNBT(stack, "cmb_charge", i); - } - - public static int getCharge(ItemStack stack) { - return readNBT(stack, "cmb_charge"); - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunPip.java b/src/main/java/com/hbm/items/weapon/ItemGunPip.java deleted file mode 100644 index c6ed8aaf9..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunPip.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.handler.GunConfiguration; -import com.hbm.render.anim.BusAnimation; -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.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -public class ItemGunPip extends ItemGunBase { - - public static long lastShot; - public static List smokeNodes = new ArrayList(); - - public ItemGunPip(GunConfiguration config) { - super(config); - } - - @Override - @SideOnly(Side.CLIENT) - protected void updateClient(ItemStack stack, World world, EntityPlayer entity, int slot, boolean isCurrentItem) { - super.updateClient(stack, world, entity, slot, isCurrentItem); - - boolean smoking = lastShot + 2000 > System.currentTimeMillis(); - - if(!smoking && !smokeNodes.isEmpty()) { - smokeNodes.clear(); - } - - if(smoking) { - Vec3 prev = Vec3.createVectorHelper(-entity.motionX, -entity.motionY, -entity.motionZ); - prev.rotateAroundY((float) (entity.rotationYaw * Math.PI / 180D)); - double accel = 15D; - double side = (entity.rotationYaw - entity.prevRotationYawHead) * 0.1D; - double waggle = 0.025D; - - for(double[] node : smokeNodes) { - node[0] += -prev.zCoord * accel + world.rand.nextGaussian() * waggle; - node[1] += prev.yCoord + 1.5D; - node[2] += prev.xCoord * accel + world.rand.nextGaussian() * waggle + side; - } - - double alpha = (System.currentTimeMillis() - lastShot) / 2000D; - alpha = (1 - alpha) * 0.5D; - - if(this.getIsReloading(stack)) alpha = 0; - - smokeNodes.add(new double[] {0, 0, 0, alpha}); - } - } - - @Override - @SideOnly(Side.CLIENT) - public BusAnimation getAnimation(ItemStack stack, AnimType type) { - - if(type == AnimType.EQUIP) { - return new BusAnimation() - .addBus("ROTATE", new BusAnimationSequence() - .addKeyframePosition(-360, 0, 0, 350) - ); - } - - if(type == AnimType.CYCLE) { - lastShot = System.currentTimeMillis(); - int s = 1; - return new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addKeyframePosition(0, 0, 0, 50 * s) - .addKeyframePosition(0, 0, -3, 50 * s) - .addKeyframePosition(0, 0, 0, 250 * s) - ) - .addBus("HAMMER", new BusAnimationSequence() - .addKeyframePosition(0, 0, 1, 50 * s) - .addKeyframePosition(0, 0, 1, 300 * s) - .addKeyframePosition(0, 0, 0, 200 * s) - ) - .addBus("DRUM", new BusAnimationSequence() - .addKeyframePosition(0, 0, 1, 50 * s) - ); - } - - if(type == AnimType.RELOAD) { - int s = 1; - return new BusAnimation() - .addBus("RELAOD_TILT", new BusAnimationSequence() - .addKeyframePosition(-15, 0, 0, 100 * s) - .addKeyframePosition(65, 0, 0, 100 * s) //200 - .addKeyframePosition(45, 0, 0, 50 * s) //250 - .addKeyframePosition(0, 0, 0, 200 * s) //450 - .addKeyframePosition(0, 0, 0, 1450 * s) //1900 - .addKeyframePosition(-80, 0, 0, 100 * s) //2000 - .addKeyframePosition(-80, 0, 0, 100 * s) //2100 - .addKeyframePosition(0, 0, 0, 200 * s) //2300 - ) - .addBus("RELOAD_CYLINDER", new BusAnimationSequence() - .addKeyframePosition(0, 0, 0, 200 * s) - .addKeyframePosition(90, 0, 0, 100 * s) //300 - .addKeyframePosition(90, 0, 0, 1700 * s) //2000 - .addKeyframePosition(0, 0, 0, 70 * s) //2100 - ) - .addBus("RELOAD_LIFT", new BusAnimationSequence() - .addKeyframePosition(0, 0, 0, 350 * s) - .addKeyframePosition(-45, 0, 0, 250 * s) //600 - .addKeyframePosition(-45, 0, 0, 350 * s) //950 - .addKeyframePosition(-15, 0, 0, 200 * s) //1150 - .addKeyframePosition(-15, 0, 0, 1050 * s) //2200 - .addKeyframePosition(0, 0, 0, 100 * s) //2300 - ) - .addBus("RELOAD_JOLT", new BusAnimationSequence() - .addKeyframePosition(0, 0, 0, 600 * s) - .addKeyframePosition(2, 0, 0, 50 * s) //650 - .addKeyframePosition(0, 0, 0, 100 * s) //750 - ) - .addBus("RELOAD_BULLETS", new BusAnimationSequence() - .addKeyframePosition(0, 0, 0, 650 * s) - .addKeyframePosition(10, 0, 0, 300 * s) //950 - .addKeyframePosition(10, 0, 0, 200 * s) //1150 - .addKeyframePosition(0, 0, 0, 700 * s) //1850 - ) - .addBus("RELOAD_BULLETS_CON", new BusAnimationSequence() - .addKeyframePosition(1, 0, 0, 0 * s) - .addKeyframePosition(1, 0, 0, 950 * s) - .addKeyframePosition(0, 0, 0, 1 * s) - ); - } - - return null; - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemGunShotty.java b/src/main/java/com/hbm/items/weapon/ItemGunShotty.java deleted file mode 100644 index 39588922c..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemGunShotty.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.hbm.items.weapon; - -import com.hbm.handler.GunConfiguration; -import com.hbm.util.ShadyUtil; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class ItemGunShotty extends ItemGunBase { - - public ItemGunShotty(GunConfiguration config) { - super(config); - } - - protected void updateServer(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { - super.updateServer(stack, world, player, slot, isCurrentItem); - - if((player.getUniqueID().toString().equals(ShadyUtil.Dr_Nostalgia) || player.getDisplayName().equals("Tankish") || player.getDisplayName().equals("Tankish020")) && - this.getDelay(stack) < this.mainConfig.rateOfFire * 0.9) - this.setDelay(stack, 0); - } - -} diff --git a/src/main/java/com/hbm/items/weapon/ItemPlasmaSpear.java b/src/main/java/com/hbm/items/weapon/ItemPlasmaSpear.java deleted file mode 100644 index 38b210a38..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemPlasmaSpear.java +++ /dev/null @@ -1,179 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; - -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.items.ISyncButtons; -import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.PacketDispatcher; - -import api.hbm.fluid.IFillableItem; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.EntityDamageSource; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.client.event.MouseEvent; - -public class ItemPlasmaSpear extends Item implements IFillableItem, ISyncButtons { - - public static final int maxFuel = 3_000; - - @Override - public boolean showDurabilityBar(ItemStack stack) { - return getFill(stack) < maxFuel; - } - - @Override - public double getDurabilityForDisplay(ItemStack stack) { - return 1 - (double) getFill(stack) / (double) maxFuel; - } - - @Override - public int getFill(ItemStack stack) { - if(stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - setFill(stack, maxFuel); - return maxFuel; - } - - return stack.stackTagCompound.getInteger("fuel"); - } - - public void setFill(ItemStack stack, int fill) { - if(stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - } - - stack.stackTagCompound.setInteger("fuel", fill); - } - - public static ItemStack getEmptyTool(Item item) { - ItemPlasmaSpear tool = (ItemPlasmaSpear) item; - ItemStack stack = new ItemStack(item); - tool.setFill(stack, 0); - return stack; - } - - @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - - if(world.isRemote) return stack; - - if(!stack.hasTagCompound()) { - stack.stackTagCompound = new NBTTagCompound(); - } - - stack.stackTagCompound.setBoolean("melee", !stack.stackTagCompound.getBoolean("melee")); - world.playSoundAtEntity(player, "random.orb", 0.25F, 1.25F); - - return stack; - } - - @Override - public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity) { - - if(stack.hasTagCompound() && !stack.stackTagCompound.getBoolean("melee")) { - return true; //cancel hitting, it's ranged - } - - return false; - } - - @Override - public boolean onEntitySwing(EntityLivingBase entityLiving, ItemStack stack) { - - if(!(entityLiving instanceof EntityPlayerMP)) - return false; - - if(getFill(stack) <= 0) - return false; - - if(stack.hasTagCompound() && stack.stackTagCompound.getBoolean("melee")) { - return true; //cancel hitting, it's ranged - } - - NBTTagCompound nbt = new NBTTagCompound(); - nbt.setString("type", "anim"); - nbt.setString("mode", "lSwing"); - PacketDispatcher.wrapper.sendTo(new AuxParticlePacketNT(nbt, 0, 0, 0), (EntityPlayerMP)entityLiving); - - return false; - } - - @Override - public boolean canReceiveMouse(EntityPlayer player, ItemStack stack, MouseEvent event, int button, boolean buttonstate) { - - if(stack.hasTagCompound() && stack.stackTagCompound.getBoolean("melee")) { - return false; - } - - if(button == 0) { - event.setCanceled(true); - return true; - } - - return false; - } - - @Override - public void receiveMouse(EntityPlayer player, ItemStack stack, int button, boolean buttonstate) { - Vec3 start = Vec3.createVectorHelper(player.posX, player.posY + player.getEyeHeight() - player.yOffset, player.posZ); - Vec3 look = player.getLookVec(); - Vec3 end = start.addVector(look.xCoord * 100, look.yCoord * 100, look.zCoord * 100); - - List targets = player.worldObj.getEntitiesWithinAABBExcludingEntity(player, AxisAlignedBB.getBoundingBox( - Math.min(start.xCoord, end.xCoord), - Math.min(start.yCoord, end.yCoord), - Math.min(start.zCoord, end.zCoord), - Math.max(start.xCoord, end.xCoord), - Math.max(start.yCoord, end.yCoord), - Math.max(start.zCoord, end.zCoord) - )); - - for(Entity target : targets) { - - AxisAlignedBB aabb = target.boundingBox; - MovingObjectPosition hitMop = aabb.calculateIntercept(start, end); - - if(hitMop != null) { - target.attackEntityFrom(new EntityDamageSource(ModDamageSource.s_laser, player).setDamageBypassesArmor(), 15F); - } - } - } - - @Override - public boolean acceptsFluid(FluidType type, ItemStack stack) { - return type == Fluids.SCHRABIDIC; - } - - @Override - public int tryFill(FluidType type, int amount, ItemStack stack) { - - int fill = this.getFill(stack); - int toFill = this.maxFuel - fill; - toFill = Math.min(toFill, amount); - toFill = Math.min(toFill, 10); - - this.setFill(stack, fill + toFill); - - return amount - toFill; - } - - @Override public boolean providesFluid(FluidType type, ItemStack stack) { return false; } - @Override public int tryEmpty(FluidType type, int amount, ItemStack stack) { return 0; } - - @Override - public FluidType getFirstFluidType(ItemStack stack) { - return Fluids.SCHRABIDIC; - } -} diff --git a/src/main/java/com/hbm/items/weapon/gununified/GunFrame.java b/src/main/java/com/hbm/items/weapon/gununified/GunFrame.java deleted file mode 100644 index ad2ab4f0d..000000000 --- a/src/main/java/com/hbm/items/weapon/gununified/GunFrame.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.hbm.items.weapon.gununified; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.util.Tuple.Pair; -import com.hbm.util.Tuple.Triplet; - -import api.hbm.item.IClickReceiver; -import api.hbm.item.IGunHUDProvider; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; - -@Deprecated -public abstract class GunFrame extends Item implements IGunHUDProvider, IClickReceiver { - - @Override - public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isCurrentItem) { - - if(entity instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer) entity; - - if(world.isRemote) { - this.updatePlayerClient(stack, world, player, slot, isCurrentItem); - } else { - this.updatePlayerServer(stack, world, player, slot, isCurrentItem); - } - } - } - - public void updatePlayerClient(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { } - public void updatePlayerServer(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { } - - @Override - @SideOnly(Side.CLIENT) - public boolean handleMouseInput(ItemStack stack, EntityPlayer player, int button, boolean state) { - return false; - } - - @Override - public List> getStatusBars(ItemStack stack, EntityPlayer player) { - return new ArrayList(); - } - - @Override - public List> getAmmoInfo(ItemStack stack, EntityPlayer player) { - return null; - } - - public static double getDurabilityBar(ItemStack stack) { - return 1.0D; - } -} diff --git a/src/main/java/com/hbm/items/weapon/gununified/GunRealoadable.java b/src/main/java/com/hbm/items/weapon/gununified/GunRealoadable.java deleted file mode 100644 index d1cfc831f..000000000 --- a/src/main/java/com/hbm/items/weapon/gununified/GunRealoadable.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.hbm.items.weapon.gununified; - -import org.lwjgl.input.Keyboard; - -import com.hbm.handler.HbmKeybinds; - -import api.hbm.item.IButtonReceiver; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -public class GunRealoadable extends GunFrame implements IButtonReceiver { - - private IReloadBehavior reload; - public static boolean lastReload = false; - - @Override - @SideOnly(Side.CLIENT) - public void handleKeyboardInput(ItemStack stack, EntityPlayer player) { - - boolean reload = Keyboard.isKeyDown(HbmKeybinds.reloadKey.getKeyCode()); - - if(this.reload != null) { - this.reload.tryStartReload(stack, player); - } - - lastReload = reload; - } -} diff --git a/src/main/java/com/hbm/items/weapon/gununified/IReloadBehavior.java b/src/main/java/com/hbm/items/weapon/gununified/IReloadBehavior.java deleted file mode 100644 index 1bc6e3d19..000000000 --- a/src/main/java/com/hbm/items/weapon/gununified/IReloadBehavior.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.hbm.items.weapon.gununified; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -public interface IReloadBehavior { - - public boolean tryStartReload(ItemStack stack, EntityPlayer player); - public boolean updateRelaod(ItemStack stack, EntityPlayer player); -} diff --git a/src/main/java/com/hbm/items/weapon/gununified/IStatusBarProvider.java b/src/main/java/com/hbm/items/weapon/gununified/IStatusBarProvider.java deleted file mode 100644 index 6d91fce96..000000000 --- a/src/main/java/com/hbm/items/weapon/gununified/IStatusBarProvider.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.hbm.items.weapon.gununified; - -import java.util.List; - -import com.hbm.util.Tuple.Triplet; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -public interface IStatusBarProvider { - - public void provideBars(ItemStack stack, EntityPlayer player, List> bars); -} diff --git a/src/main/java/com/hbm/items/weapon/gununified/StatusBarDurability.java b/src/main/java/com/hbm/items/weapon/gununified/StatusBarDurability.java deleted file mode 100644 index 9a47d0664..000000000 --- a/src/main/java/com/hbm/items/weapon/gununified/StatusBarDurability.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.hbm.items.weapon.gununified; - -import java.util.List; - -import com.hbm.util.Tuple.Triplet; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -public class StatusBarDurability implements IStatusBarProvider { - - @Override - public void provideBars(ItemStack stack, EntityPlayer player, List> bars) { - //TODO - } -} diff --git a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java new file mode 100644 index 000000000..faefed4f7 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java @@ -0,0 +1,311 @@ +package com.hbm.items.weapon.sedna; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.BiConsumer; +import java.util.function.Consumer; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.bomb.BlockDetonatable; +import com.hbm.entity.projectile.EntityBulletBaseMK4; +import com.hbm.entity.projectile.EntityBulletBeamBase; +import com.hbm.interfaces.NotableComments; +import com.hbm.inventory.OreDictManager.DictFrame; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ItemEnums.EnumCasingType; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.factory.ConfettiUtil; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; +import com.hbm.particle.SpentCasing; +import com.hbm.util.BobMathUtil; +import com.hbm.util.EntityDamageUtil; +import com.hbm.util.TrackerUtil; + +import com.hbm.util.DamageResistanceHandler.DamageClass; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.WorldServer; +import net.minecraftforge.common.util.ForgeDirection; + +@NotableComments +public class BulletConfig implements Cloneable { + + public static List configs = new ArrayList(); + + public int id; + + public ComparableStack ammo; + public ItemStack casingItem; + public int casingAmount; + /** How much ammo is added to a standard mag when loading one item */ + public int ammoReloadCount = 1; + public float velocity = 10F; + public float spread = 0F; + public float wear = 1F; + public int projectilesMin = 1; + public int projectilesMax = 1; + public ProjectileType pType = ProjectileType.BULLET; + + public float damageMult = 1.0F; + public float armorThresholdNegation = 0.0F; + public float armorPiercingPercent = 0.0F; + public float knockbackMult = 0.1F; + public float headshotMult = 1.25F; + + public DamageClass dmgClass = DamageClass.PHYSICAL; + + public float ricochetAngle = 5F; + public int maxRicochetCount = 2; + /** Whether damage dealt to an entity is subtracted from the projectile's damage on penetration */ + public boolean damageFalloffByPen = true; + + public Consumer onUpdate; + public BiConsumer onImpact; + public BiConsumer onImpactBeam; //fuck fuck fuck fuck i should have used a better base class here god dammit + public BiConsumer onRicochet = LAMBDA_STANDARD_RICOCHET; + public BiConsumer onEntityHit = LAMBDA_STANDARD_ENTITY_HIT; + + public double gravity = 0; + public int expires = 30; + public boolean impactsEntities = true; + public boolean doesPenetrate = false; + /** Whether projectiles ignore blocks entirely */ + public boolean isSpectral = false; + public int selfDamageDelay = 2; + + public boolean blackPowder = false; + public boolean renderRotations = true; + public SpentCasing casing; + public BiConsumer renderer; + public BiConsumer rendererBeam; + + public BulletConfig() { + this.id = configs.size(); + configs.add(this); + } + + /** Required for the clone() operation to reset the ID, otherwise the ID and config entry will be the same as the original */ + public BulletConfig forceReRegister() { + this.id = configs.size(); + configs.add(this); + return this; + } + + public BulletConfig setBeam() { this.pType = ProjectileType.BEAM; return this; } + public BulletConfig setChunkloading() { this.pType = ProjectileType.BULLET_CHUNKLOADING; return this; } + public BulletConfig setItem(Item ammo) { this.ammo = new ComparableStack(ammo); return this; } + public BulletConfig setItem(ItemStack ammo) { this.ammo = new ComparableStack(ammo); return this; } + public BulletConfig setItem(ComparableStack ammo) { this.ammo = ammo; return this; } + public BulletConfig setItem(EnumAmmo ammo) { this.ammo = new ComparableStack(ModItems.ammo_standard, 1, ammo.ordinal()); return this; } + public BulletConfig setItem(EnumAmmoSecret ammo) { this.ammo = new ComparableStack(ModItems.ammo_secret, 1, ammo.ordinal()); return this; } + public BulletConfig setCasing(ItemStack item, int amount) { this.casingItem = item; this.casingAmount = amount; return this; } + public BulletConfig setCasing(EnumCasingType item, int amount) { this.casingItem = DictFrame.fromOne(ModItems.casing, item); this.casingAmount = amount; return this; } + public BulletConfig setReloadCount(int ammoReloadCount) { this.ammoReloadCount = ammoReloadCount; return this; } + public BulletConfig setVel(float velocity) { this.velocity = velocity; return this; } + public BulletConfig setSpread(float spread) { this.spread = spread; return this; } + public BulletConfig setWear(float wear) { this.wear = wear; return this; } + public BulletConfig setProjectiles(int amount) { this.projectilesMin = this.projectilesMax = amount; return this; } + public BulletConfig setProjectiles(int min, int max) { this.projectilesMin = min; this.projectilesMax = max; return this; } + public BulletConfig setDamage(float damageMult) { this.damageMult = damageMult; return this; } + public BulletConfig setThresholdNegation(float armorThresholdNegation) { this.armorThresholdNegation = armorThresholdNegation; return this; } + public BulletConfig setArmorPiercing(float armorPiercingPercent) { this.armorPiercingPercent = armorPiercingPercent; return this; } + public BulletConfig setKnockback(float knockbackMult) { this.knockbackMult = knockbackMult; return this; } + public BulletConfig setHeadshot(float headshotMult) { this.headshotMult = headshotMult; return this; } + public BulletConfig setupDamageClass(DamageClass clazz) { this.dmgClass = clazz; return this; } + public BulletConfig setRicochetAngle(float angle) { this.ricochetAngle = angle; return this; } + public BulletConfig setRicochetCount(int count) { this.maxRicochetCount = count; return this; } + public BulletConfig setDamageFalloutByPen(boolean falloff) { this.damageFalloffByPen = falloff; return this; } + public BulletConfig setGrav(double gravity) { this.gravity = gravity; return this; } + public BulletConfig setLife(int expires) { this.expires = expires; return this; } + public BulletConfig setImpactsEntities(boolean impact) { this.impactsEntities = impact; return this; } + public BulletConfig setDoesPenetrate(boolean pen) { this.doesPenetrate = pen; return this; } + public BulletConfig setSpectral(boolean spectral) { this.isSpectral = spectral; return this; } + public BulletConfig setSelfDamageDelay(int delay) { this.selfDamageDelay = delay; return this; } + public BulletConfig setBlackPowder(boolean bp) { this.blackPowder = bp; return this; } + public BulletConfig setRenderRotations(boolean rot) { this.renderRotations = rot; return this; } + public BulletConfig setCasing(SpentCasing casing) { this.casing = casing; return this; } + + public BulletConfig setRenderer(BiConsumer renderer) { this.renderer = renderer; return this; } + public BulletConfig setRendererBeam(BiConsumer renderer) { this.rendererBeam = renderer; return this; } + + public BulletConfig setOnUpdate(Consumer lambda) { this.onUpdate = lambda; return this; } + public BulletConfig setOnRicochet(BiConsumer lambda) { this.onRicochet = lambda; return this; } + public BulletConfig setOnImpact(BiConsumer lambda) { this.onImpact = lambda; return this; } + public BulletConfig setOnBeamImpact(BiConsumer lambda) { this.onImpactBeam = lambda; return this; } + public BulletConfig setOnEntityHit(BiConsumer lambda) { this.onEntityHit = lambda; return this; } + + public static enum ProjectileType { + BULLET, + BULLET_CHUNKLOADING, + BEAM + } + + @SuppressWarnings("incomplete-switch") //shut up + public static DamageSource getDamage(Entity projectile, EntityLivingBase shooter, DamageClass dmgClass) { + + DamageSource dmg; + + if(shooter != null) dmg = new DamageSourceSednaWithAttacker(dmgClass.name(), projectile, shooter); + else dmg = new DamageSourceSednaNoAttacker(dmgClass.name()); + + switch(dmgClass) { + case PHYSICAL: dmg.setProjectile(); break; + case FIRE: dmg.setFireDamage(); break; + case EXPLOSIVE: dmg.setExplosion(); break; + case ELECTRIC: break; + case LASER: break; + case SUBATOMIC: break; + } + + return dmg; + } + + public static BiConsumer LAMBDA_STANDARD_RICOCHET = (bullet, mop) -> { + + if(mop.typeOfHit == mop.typeOfHit.BLOCK) { + + Block b = bullet.worldObj.getBlock(mop.blockX, mop.blockY, mop.blockZ); + if(b.getMaterial() == Material.glass) { + bullet.worldObj.func_147480_a(mop.blockX, mop.blockY, mop.blockZ, false); + bullet.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + return; + } + if(b instanceof BlockDetonatable) { + ((BlockDetonatable) b).onShot(bullet.worldObj, mop.blockX, mop.blockY, mop.blockZ); + } + if(b == ModBlocks.deco_crt) { + int meta = bullet.worldObj.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ); + bullet.worldObj.setBlockMetadataWithNotify(mop.blockX, mop.blockY, mop.blockZ, meta % 4 + 4, 3); + } + + ForgeDirection dir = ForgeDirection.getOrientation(mop.sideHit); + Vec3 face = Vec3.createVectorHelper(dir.offsetX, dir.offsetY, dir.offsetZ); + Vec3 vel = Vec3.createVectorHelper(bullet.motionX, bullet.motionY, bullet.motionZ).normalize(); + + double angle = Math.abs(BobMathUtil.getCrossAngle(vel, face) - 90); + + if(angle <= bullet.config.ricochetAngle) { + + bullet.ricochets++; + if(bullet.ricochets > bullet.config.maxRicochetCount) { + bullet.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + bullet.setDead(); + } + + switch(mop.sideHit) { + case 0: case 1: bullet.motionY *= -1; break; + case 2: case 3: bullet.motionZ *= -1; break; + case 4: case 5: bullet.motionX *= -1; break; + } + bullet.worldObj.playSoundAtEntity(bullet, "hbm:weapon.ricochet", 0.25F, 1.0F); + bullet.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + //send a teleport so the ricochet is more accurate instead of the interp smoothing fucking everything up + if(bullet.worldObj instanceof WorldServer) TrackerUtil.sendTeleport((WorldServer) bullet.worldObj, bullet); + return; + + } else { + bullet.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + bullet.setDead(); + } + } + }; + + public static BiConsumer LAMBDA_STANDARD_ENTITY_HIT = (bullet, mop) -> { + + if(mop.typeOfHit == mop.typeOfHit.ENTITY) { + Entity entity = mop.entityHit; + + if(entity == bullet.getThrower() && bullet.ticksExisted < bullet.selfDamageDelay()) return; + if(entity instanceof EntityLivingBase && ((EntityLivingBase) entity).getHealth() <= 0) return; + + DamageSource source = bullet.config.getDamage(bullet, bullet.getThrower(), bullet.config.dmgClass); + float intendedDamage = bullet.damage; + + if(!(entity instanceof EntityLivingBase)) { + EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, source, bullet.damage); + return; + } else if(bullet.config.headshotMult > 1F) { + + EntityLivingBase living = (EntityLivingBase) entity; + double head = living.height - living.getEyeHeight(); + + if(!!living.isEntityAlive() && mop.hitVec != null && mop.hitVec.yCoord > (living.posY + living.height - head * 2)) { + intendedDamage *= bullet.config.headshotMult; + } + } + + EntityLivingBase living = (EntityLivingBase) entity; + float prevHealth = living.getHealth(); + + EntityDamageUtil.attackEntityFromNT(living, source, intendedDamage, true, true, bullet.config.knockbackMult, bullet.config.armorThresholdNegation, bullet.config.armorPiercingPercent); + + float newHealth = living.getHealth(); + + if(bullet.config.damageFalloffByPen) bullet.damage -= Math.max(prevHealth - newHealth, 0) * 0.5; + if(!bullet.doesPenetrate() || bullet.damage < 0) { + bullet.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + bullet.setDead(); + } + + if(!living.isEntityAlive()) ConfettiUtil.decideConfetti(living, source); + } + }; + + public static BiConsumer LAMBDA_STANDARD_BEAM_HIT = (bullet, mop) -> { + + if(mop.typeOfHit == mop.typeOfHit.ENTITY) { + Entity entity = mop.entityHit; + + if(entity instanceof EntityLivingBase && ((EntityLivingBase) entity).getHealth() <= 0) return; + + DamageSource source = bullet.config.getDamage(bullet, bullet.getThrower(), bullet.config.dmgClass); + + if(!(entity instanceof EntityLivingBase)) { + EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, source, bullet.damage); + return; + } + + EntityLivingBase living = (EntityLivingBase) entity; + EntityDamageUtil.attackEntityFromNT(living, source, bullet.damage, true, true, bullet.config.knockbackMult, bullet.config.armorThresholdNegation, bullet.config.armorPiercingPercent); + if(!living.isEntityAlive()) ConfettiUtil.decideConfetti(living, source); + } + }; + + public static BiConsumer LAMBDA_BEAM_HIT = (beam, mop) -> { + + if(mop.typeOfHit == mop.typeOfHit.ENTITY) { + Entity entity = mop.entityHit; + + if(entity instanceof EntityLivingBase && ((EntityLivingBase) entity).getHealth() <= 0) return; + + DamageSource source = beam.config.getDamage(beam, beam.thrower, beam.config.dmgClass); + + if(!(entity instanceof EntityLivingBase)) { + EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, source, beam.damage); + return; + } + + EntityLivingBase living = (EntityLivingBase) entity; + EntityDamageUtil.attackEntityFromNT(living, source, beam.damage, true, false, beam.config.knockbackMult, beam.config.armorThresholdNegation, beam.config.armorPiercingPercent); + } + }; + + @Override + public BulletConfig clone() { + try { + BulletConfig clone = (BulletConfig) super.clone(); + clone.forceReRegister(); + return clone; + } catch(CloneNotSupportedException e) { } + return null; + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/Crosshair.java b/src/main/java/com/hbm/items/weapon/sedna/Crosshair.java new file mode 100644 index 000000000..6292b6785 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/Crosshair.java @@ -0,0 +1,36 @@ +package com.hbm.items.weapon.sedna; + +public enum Crosshair { + + NONE(0, 0, 0), + CROSS(1, 55, 16), + CIRCLE(19, 55, 16), + SEMI(37, 55, 16), + KRUCK(55, 55, 16), + DUAL(1, 73, 16), + SPLIT(19, 73, 16), + CLASSIC(37, 73, 16), + BOX(55, 73, 16), + + L_CROSS(0, 90, 32), + L_KRUCK(32, 90, 32), + L_CLASSIC(64, 90, 32), + L_CIRCLE(96, 90, 32), + L_SPLIT(0, 122, 32), + L_ARROWS(32, 122, 32), + L_BOX(64, 122, 32), + L_CIRCUMFLEX(96, 122, 32), + L_RAD(0, 154, 32), + L_MODERN(32, 154, 32), + L_BOX_OUTLINE(64, 154, 32); + + public int x; + public int y; + public int size; + + private Crosshair(int x, int y, int size) { + this.x = x; + this.y = y; + this.size = size; + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/DamageSourceSednaNoAttacker.java b/src/main/java/com/hbm/items/weapon/sedna/DamageSourceSednaNoAttacker.java new file mode 100644 index 000000000..889583f0d --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/DamageSourceSednaNoAttacker.java @@ -0,0 +1,21 @@ +package com.hbm.items.weapon.sedna; + +import java.util.Locale; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.DamageSource; +import net.minecraft.util.IChatComponent; + +public class DamageSourceSednaNoAttacker extends DamageSource { + + public DamageSourceSednaNoAttacker(String type) { + super(type.toLowerCase(Locale.US)); + } + + @Override + public IChatComponent func_151519_b(EntityLivingBase died) { + IChatComponent diedName = died.func_145748_c_(); + return new ChatComponentTranslation("death.sedna." + this.damageType, diedName); + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/DamageSourceSednaWithAttacker.java b/src/main/java/com/hbm/items/weapon/sedna/DamageSourceSednaWithAttacker.java new file mode 100644 index 000000000..e63ab3097 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/DamageSourceSednaWithAttacker.java @@ -0,0 +1,32 @@ +package com.hbm.items.weapon.sedna; + +import java.util.Locale; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.IChatComponent; + +public class DamageSourceSednaWithAttacker extends DamageSourceSednaNoAttacker { + + public Entity projectile; + public Entity shooter; + + public DamageSourceSednaWithAttacker(String type, Entity projectile, Entity shooter) { + super(type.toLowerCase(Locale.US)); + this.projectile = projectile; + this.shooter = shooter; + } + + @Override public Entity getSourceOfDamage() { return this.projectile; } //what even uses this, except for the wackass "shot by bullet" death messages? + @Override public Entity getEntity() { return this.shooter; } + + @Override + public IChatComponent func_151519_b(EntityLivingBase died) { + IChatComponent diedName = died.func_145748_c_(); + IChatComponent shooterName = shooter != null ? shooter.func_145748_c_() : new ChatComponentText("Unknown").setChatStyle(new ChatStyle().setObfuscated(true)); + return new ChatComponentTranslation("death.sedna." + this.damageType + ".attacker", diedName, shooterName); + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java new file mode 100644 index 000000000..90f21ddf5 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java @@ -0,0 +1,156 @@ +package com.hbm.items.weapon.sedna; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.BiConsumer; +import java.util.function.BiFunction; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.SmokeNode; +import com.hbm.items.weapon.sedna.factory.GunStateDecider; +import com.hbm.items.weapon.sedna.factory.Lego; +import com.hbm.items.weapon.sedna.hud.IHUDComponent; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +/** + * Despite how complicated the GunConfig looks, it actually only exists to hold together a bunch of fields. Everything else is infrastructure for getting and setting. + * The gun config determines general gun specific stats like durability, crosshair, animations, receivers, click handling and the decider. + * + * @author hbm + * */ +public class GunConfig { + + public List smokeNodes = new ArrayList(); + + public static final String O_RECEIVERS = "O_RECEIVERS"; + public static final String F_DURABILITY = "F_DURABILITY"; + public static final String I_DRAWDURATION = "I_DRAWDURATION"; + public static final String I_INSPECTDURATION = "I_INSPECTDURATION"; + public static final String I_INSPECTCANCEL = "I_INSPECTCANCEL"; + public static final String O_CROSSHAIR = "O_CROSSHAIR"; + public static final String B_HIDECROSSHAIR = "B_HIDECROSSHAIR"; + public static final String B_RELOADANIMATIONSEQUENTIAL = "B_RELOADANIMATIONSEQUENTIAL"; + public static final String O_SCOPETEXTURE = "O_SCOPETEXTURE"; + public static final String CON_SMOKE = "CON_SMOKE"; + public static final String CON_ORCHESTRA = "CON_ORCHESTRA"; + public static final String CON_ONPRESSPRIMARY = "CON_ONPRESSPRIMARY"; + public static final String CON_ONPRESSSECONDARY = "CON_ONPRESSSECONDARY"; + public static final String CON_ONPRESSTERTIARY = "CON_ONPRESSTERTIARY"; + public static final String CON_ONPRESSRELOAD = "CON_ONPRESSRELOAD"; + public static final String CON_ONRELEASEPRIMARY = "CON_ONRELEASEPRIMARY"; + public static final String CON_ONRELEASESECONDARY = "CON_ONRELEASESECONDARY"; + public static final String CON_ONRELEASETERTIARY = "CON_ONRELEASETERTIARY"; + public static final String CON_ONRELEASERELOAD = "CON_ONRELEASERELOAD"; + public static final String CON_DECIDER = "CON_DECIDER"; + public static final String FUN_ANIMNATIONS = "FUN_ANIMNATIONS"; + public static final String O_HUDCOMPONENTS = "O_HUDCOMPONENTS"; + + /* FIELDS */ + + /** List of receivers used by the gun, primary and secondary are usually indices 0 and 1 respectively, if applicable */ + protected Receiver[] receivers_DNA; + protected float durability_DNA; + protected int drawDuration_DNA = 0; + protected int inspectDuration_DNA = 0; + protected boolean inspectCancel_DNA = true; + protected Crosshair crosshair_DNA; + protected boolean hideCrosshair_DNA = true; + protected boolean reloadAnimationsSequential_DNA; + protected ResourceLocation scopeTexture_DNA; + /** Handles smoke clientside */ + protected BiConsumer smokeHandler_DNA; + /** This piece only triggers during reloads, playing sounds depending on the reload's progress making reload sounds easier and synced to animations */ + protected BiConsumer orchestra_DNA; + /** Lambda functions for clicking shit */ + protected BiConsumer onPressPrimary_DNA; + protected BiConsumer onPressSecondary_DNA; + protected BiConsumer onPressTertiary_DNA; + protected BiConsumer onPressReload_DNA; + /** Lambda functions for releasing the aforementioned shit */ + protected BiConsumer onReleasePrimary_DNA; + protected BiConsumer onReleaseSecondary_DNA; + protected BiConsumer onReleaseTertiary_DNA; + protected BiConsumer onReleaseReload_DNA; + /** The engine for the state machine that determines the gun's overall behavior */ + protected BiConsumer decider_DNA; + /** Lambda that returns the relevant animation for the given params */ + protected BiFunction animations_DNA; + protected IHUDComponent[] hudComponents_DNA; + + /* GETTERS */ + + public Receiver[] getReceivers(ItemStack stack) { return WeaponUpgradeManager.eval(receivers_DNA, stack, O_RECEIVERS, this); } + public float getDurability(ItemStack stack) { return WeaponUpgradeManager.eval(durability_DNA, stack, F_DURABILITY, this); } + public int getDrawDuration(ItemStack stack) { return WeaponUpgradeManager.eval(drawDuration_DNA, stack, I_DRAWDURATION, this); } + public int getInspectDuration(ItemStack stack) { return WeaponUpgradeManager.eval(inspectDuration_DNA, stack, I_INSPECTDURATION, this); } + public boolean getInspectCancel(ItemStack stack) { return WeaponUpgradeManager.eval(inspectCancel_DNA, stack, I_INSPECTCANCEL, this); } + public Crosshair getCrosshair(ItemStack stack) { return WeaponUpgradeManager.eval(crosshair_DNA, stack, O_CROSSHAIR, this); } + public boolean getHideCrosshair(ItemStack stack) { return WeaponUpgradeManager.eval(hideCrosshair_DNA, stack, B_HIDECROSSHAIR, this); } + public boolean getReloadAnimSequential(ItemStack stack) { return WeaponUpgradeManager.eval(reloadAnimationsSequential_DNA, stack, B_RELOADANIMATIONSEQUENTIAL, this); } + public ResourceLocation getScopeTexture(ItemStack stack) { return WeaponUpgradeManager.eval(scopeTexture_DNA, stack, O_SCOPETEXTURE, this); } + public BiConsumer getSmokeHandler(ItemStack stack) { return WeaponUpgradeManager.eval(smokeHandler_DNA, stack, CON_SMOKE, this); } + public BiConsumer getOrchestra(ItemStack stack) { return WeaponUpgradeManager.eval(this.orchestra_DNA, stack, CON_ORCHESTRA, this); } + + public BiConsumer getPressPrimary(ItemStack stack) { return WeaponUpgradeManager.eval(this.onPressPrimary_DNA, stack, CON_ONPRESSPRIMARY, this); } + public BiConsumer getPressSecondary(ItemStack stack) { return WeaponUpgradeManager.eval(this.onPressSecondary_DNA, stack, CON_ONPRESSSECONDARY, this); } + public BiConsumer getPressTertiary(ItemStack stack) { return WeaponUpgradeManager.eval(this.onPressTertiary_DNA, stack, CON_ONPRESSTERTIARY, this); } + public BiConsumer getPressReload(ItemStack stack) { return WeaponUpgradeManager.eval(this.onPressReload_DNA, stack, CON_ONPRESSRELOAD, this); } + + public BiConsumer getReleasePrimary(ItemStack stack) { return WeaponUpgradeManager.eval(this.onReleasePrimary_DNA, stack, CON_ONRELEASEPRIMARY, this); } + public BiConsumer getReleaseSecondary(ItemStack stack) { return WeaponUpgradeManager.eval(this.onReleaseSecondary_DNA, stack, CON_ONRELEASESECONDARY, this); } + public BiConsumer getReleaseTertiary(ItemStack stack) { return WeaponUpgradeManager.eval(this.onReleaseTertiary_DNA, stack, CON_ONRELEASETERTIARY, this); } + public BiConsumer getReleaseReload(ItemStack stack) { return WeaponUpgradeManager.eval(this.onReleaseReload_DNA, stack, CON_ONRELEASERELOAD, this); } + + public BiConsumer getDecider(ItemStack stack) { return WeaponUpgradeManager.eval(this.decider_DNA, stack, CON_DECIDER, this); } + + public BiFunction getAnims(ItemStack stack) { return WeaponUpgradeManager.eval(this.animations_DNA, stack, FUN_ANIMNATIONS, this); } + public IHUDComponent[] getHUDComponents(ItemStack stack) { return WeaponUpgradeManager.eval(this.hudComponents_DNA, stack, O_HUDCOMPONENTS, this); } + + /* SETTERS */ + + public GunConfig rec(Receiver... receivers) { this.receivers_DNA = receivers; return this; } + public GunConfig dura(float dura) { this.durability_DNA = dura; return this; } + public GunConfig draw(int draw) { this.drawDuration_DNA = draw; return this; } + public GunConfig inspect(int inspect) { this.inspectDuration_DNA = inspect; return this; } + public GunConfig inspectCancel(boolean flag) { this.inspectCancel_DNA = flag; return this; } + public GunConfig crosshair(Crosshair crosshair) { this.crosshair_DNA = crosshair; return this; } + public GunConfig hideCrosshair(boolean flag) { this.hideCrosshair_DNA = flag; return this; } + public GunConfig reloadSequential(boolean flag) { this.reloadAnimationsSequential_DNA = flag; return this; } + public GunConfig scopeTexture(ResourceLocation tex) { this.scopeTexture_DNA = tex; return this; } + + public GunConfig smoke(BiConsumer smoke) { this.smokeHandler_DNA = smoke; return this; } + public GunConfig orchestra(BiConsumer orchestra) { this.orchestra_DNA = orchestra; return this; } + + //press + public GunConfig pp(BiConsumer lambda) { this.onPressPrimary_DNA = lambda; return this; } + public GunConfig ps(BiConsumer lambda) { this.onPressSecondary_DNA = lambda; return this; } + public GunConfig pt(BiConsumer lambda) { this.onPressTertiary_DNA = lambda; return this; } + public GunConfig pr(BiConsumer lambda) { this.onPressReload_DNA = lambda; return this; } + + //release + public GunConfig rp(BiConsumer lambda) { this.onReleasePrimary_DNA = lambda; return this; } + public GunConfig rs(BiConsumer lambda) { this.onReleaseSecondary_DNA = lambda; return this; } + public GunConfig rt(BiConsumer lambda) { this.onReleaseTertiary_DNA = lambda; return this; } + public GunConfig rr(BiConsumer lambda) { this.onReleaseReload_DNA = lambda; return this; } + + //decider + public GunConfig decider(BiConsumer lambda) { this.decider_DNA = lambda; return this; } + + //client + public GunConfig anim(BiFunction lambda) { this.animations_DNA = lambda; return this; } + public GunConfig hud(IHUDComponent... components) { this.hudComponents_DNA = components; return this; } + + /** Standard package for keybind handling and decider using LEGO prefabs: Primary fire on LMB, + * reload on R, aiming on MMB and the standard decider which includes jamming and auto fire handling*/ + public GunConfig setupStandardConfiguration() { + this.pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY); + this.pr(Lego.LAMBDA_STANDARD_RELOAD); + this.pt(Lego.LAMBDA_TOGGLE_AIM); + this.decider(GunStateDecider.LAMBDA_STANDARD_DECIDER); + return this; + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/IWeaponUpgrade.java b/src/main/java/com/hbm/items/weapon/sedna/IWeaponUpgrade.java new file mode 100644 index 000000000..502f12aec --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/IWeaponUpgrade.java @@ -0,0 +1,14 @@ +package com.hbm.items.weapon.sedna; + +import net.minecraft.item.ItemStack; + +public interface IWeaponUpgrade { + + /** Lower numbers get installed and therefore evaluated first. Important when multiplicative and additive bonuses are supposed to stack */ + public int getModPriority(ItemStack stack); + /** Which "slots" this upgrade occupies, can be any value, upgrades that have at least one matching slot are incompatible */ + public String[] getSlots(ItemStack stack); + /** The meat and bones of the upgrade eval. Requires the base value, the held gun, the value's + * identifier and the yet unmodified parent (i.e. if the value is part of the receiver, that receiver) */ + public default T eval(T base, ItemStack stack, String key, Object parent) { return base; } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java new file mode 100644 index 000000000..ce88b06df --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java @@ -0,0 +1,392 @@ +package com.hbm.items.weapon.sedna; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.BiConsumer; + +import com.hbm.handler.HbmKeybinds.EnumKeybind; +import com.hbm.interfaces.IItemHUD; +import com.hbm.items.IEquipReceiver; +import com.hbm.items.IKeybindReceiver; +import com.hbm.items.weapon.sedna.hud.IHUDComponent; +import com.hbm.items.weapon.sedna.mags.IMagazine; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.GunAnimationPacket; +import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.render.util.RenderScreenOverlay; +import com.hbm.sound.AudioWrapper; +import com.hbm.util.BobMathUtil; +import com.hbm.util.EnumUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Gui; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipReceiver, IItemHUD { + + /** Timestamp for rendering smoke nodes and muzzle flashes */ + public long[] lastShot; + /** [0;1] randomized every shot for various rendering applications */ + public double shotRand = 0D; + + public static List secrets = new ArrayList(); + + public static float recoilVertical = 0; + public static float recoilHorizontal = 0; + public static float recoilDecay = 0.75F; + public static float recoilRebound = 0.25F; + public static float offsetVertical = 0; + public static float offsetHorizontal = 0; + + public static void setupRecoil(float vertical, float horizontal, float decay, float rebound) { + recoilVertical += vertical; + recoilHorizontal += horizontal; + recoilDecay = decay; + recoilRebound = rebound; + } + + public static void setupRecoil(float vertical, float horizontal) { + setupRecoil(vertical, horizontal, 0.75F, 0.25F); + } + + public static final String O_GUNCONFIG = "O_GUNCONFIG_"; + + public static final String KEY_DRAWN = "drawn"; + public static final String KEY_AIMING = "aiming"; + public static final String KEY_MODE = "mode_"; + public static final String KEY_WEAR = "wear_"; + public static final String KEY_TIMER = "timer_"; + public static final String KEY_STATE = "state_"; + public static final String KEY_PRIMARY = "mouse1_"; + public static final String KEY_SECONDARY = "mouse2_"; + public static final String KEY_TERTIARY = "mouse3_"; + public static final String KEY_RELOAD = "reload_"; + public static final String KEY_LASTANIM = "lastanim_"; + public static final String KEY_ANIMTIMER = "animtimer_"; + public static final String KEY_LOCKONTARGET = "lockontarget"; + public static final String KEY_LOCKEDON = "lockedon"; + public static final String KEY_CANCELRELOAD = "cancel"; + + public static ConcurrentHashMap loopedSounds = new ConcurrentHashMap(); + + public static float prevAimingProgress; + public static float aimingProgress; + + /** NEVER ACCESS DIRECTLY - USE GETTER */ + protected GunConfig[] configs_DNA; + + public WeaponQuality quality; + + public GunConfig getConfig(ItemStack stack, int index) { + GunConfig cfg = configs_DNA[index]; + return WeaponUpgradeManager.eval(cfg, stack, O_GUNCONFIG + index, this); + } + + public int getConfigCount() { + return configs_DNA.length; + } + + public ItemGunBaseNT(WeaponQuality quality, GunConfig... cfg) { + this.setMaxStackSize(1); + this.configs_DNA = cfg; + this.quality = quality; + this.lastShot = new long[cfg.length]; + if(quality == WeaponQuality.A_SIDE || quality == WeaponQuality.SPECIAL) this.setCreativeTab(MainRegistry.weaponTab); + if(quality == WeaponQuality.LEGENDARY || quality == WeaponQuality.SECRET) this.secrets.add(this); + this.setTextureName(RefStrings.MODID + ":gun_darter"); + } + + public static enum WeaponQuality { + A_SIDE, + B_SIDE, + LEGENDARY, + SPECIAL, + SECRET, + DEBUG + } + + public static enum GunState { + DRAWING, //forced delay where nothing can be done + IDLE, //the gun is ready to fire or reload + COOLDOWN, //forced delay, but with option for refire + RELOADING, //forced delay after which a reload action happens, may be canceled (TBI) + JAMMED, //forced delay due to jamming + } + + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + + int configs = this.configs_DNA.length; + for(int i = 0; i < configs; i++) { + GunConfig config = getConfig(stack, i); + for(Receiver rec : config.getReceivers(stack)) { + IMagazine mag = rec.getMagazine(stack); + list.add("Ammo: " + mag.getIconForHUD(stack, player).getDisplayName() + " " + mag.reportAmmoStateForHUD(stack, player)); + float dmg = rec.getBaseDamage(stack); + list.add("Base Damage: " + dmg); + if(mag.getType(stack, player.inventory) instanceof BulletConfig) { + BulletConfig bullet = (BulletConfig) mag.getType(stack, player.inventory); + list.add("Damage with current ammo: " + dmg * bullet.damageMult + (bullet.projectilesMin > 1 ? (" x" + (bullet.projectilesMin != bullet.projectilesMax ? (bullet.projectilesMin + "-" + bullet.projectilesMax) : bullet.projectilesMin)) : "")); + } + } + } + + switch(this.quality) { + case A_SIDE: list.add(EnumChatFormatting.YELLOW + "Standard Arsenal"); break; + case B_SIDE: list.add(EnumChatFormatting.GOLD + "B-Side"); break; + case LEGENDARY: list.add(EnumChatFormatting.RED + "Legendary Weapon"); break; + case SPECIAL: list.add(EnumChatFormatting.AQUA + "Special Weapon"); break; + case SECRET: list.add((BobMathUtil.getBlink() ? EnumChatFormatting.DARK_RED : EnumChatFormatting.RED) + "SECRET"); break; + case DEBUG: list.add((BobMathUtil.getBlink() ? EnumChatFormatting.YELLOW : EnumChatFormatting.GOLD) + "DEBUG"); break; + } + } + + @Override + public boolean canHandleKeybind(EntityPlayer player, ItemStack stack, EnumKeybind keybind) { + return keybind == EnumKeybind.GUN_PRIMARY || keybind == EnumKeybind.GUN_SECONDARY || keybind == EnumKeybind.GUN_TERTIARY || keybind == EnumKeybind.RELOAD; + } + + @Override + public void handleKeybind(EntityPlayer player, ItemStack stack, EnumKeybind keybind, boolean newState) { + handleKeybind(player, player.inventory, stack, keybind, newState); + } + + public void handleKeybind(EntityLivingBase entity, IInventory inventory, ItemStack stack, EnumKeybind keybind, boolean newState) { + int configs = this.configs_DNA.length; + + for(int i = 0; i < configs; i++) { + GunConfig config = getConfig(stack, i); + LambdaContext ctx = new LambdaContext(config, entity, inventory, i); + + if(keybind == EnumKeybind.GUN_PRIMARY && newState && !getPrimary(stack, i)) { if(config.getPressPrimary(stack) != null) config.getPressPrimary(stack).accept(stack, ctx); this.setPrimary(stack, i, newState); continue; } + if(keybind == EnumKeybind.GUN_PRIMARY && !newState && getPrimary(stack, i)) { if(config.getReleasePrimary(stack) != null) config.getReleasePrimary(stack).accept(stack, ctx); this.setPrimary(stack, i, newState); continue; } + if(keybind == EnumKeybind.GUN_SECONDARY && newState && !getSecondary(stack, i)) { if(config.getPressSecondary(stack) != null) config.getPressSecondary(stack).accept(stack, ctx); this.setSecondary(stack, i, newState); continue; } + if(keybind == EnumKeybind.GUN_SECONDARY && !newState && getSecondary(stack, i)) { if(config.getReleaseSecondary(stack) != null) config.getReleaseSecondary(stack).accept(stack, ctx); this.setSecondary(stack, i, newState); continue; } + if(keybind == EnumKeybind.GUN_TERTIARY && newState && !getTertiary(stack, i)) { if(config.getPressTertiary(stack) != null) config.getPressTertiary(stack).accept(stack, ctx); this.setTertiary(stack, i, newState); continue; } + if(keybind == EnumKeybind.GUN_TERTIARY && !newState && getTertiary(stack, i)) { if(config.getReleaseTertiary(stack) != null) config.getReleaseTertiary(stack).accept(stack, ctx); this.setTertiary(stack, i, newState); continue; } + if(keybind == EnumKeybind.RELOAD && newState && !getReloadKey(stack, i)) { if(config.getPressReload(stack) != null) config.getPressReload(stack).accept(stack, ctx); this.setReloadKey(stack, i, newState); continue; } + if(keybind == EnumKeybind.RELOAD && !newState && getReloadKey(stack, i)) { if(config.getReleaseReload(stack) != null) config.getReleaseReload(stack).accept(stack, ctx); this.setReloadKey(stack, i, newState); continue; } + } + } + + @Override + public void onEquip(EntityPlayer player, ItemStack stack) { + for(int i = 0; i < this.configs_DNA.length; i++) { + playAnimation(player, stack, AnimType.EQUIP, i); + this.setPrimary(stack, i, false); + this.setSecondary(stack, i, false); + this.setTertiary(stack, i, false); + this.setReloadKey(stack, i, false); + } + } + + public static void playAnimation(EntityPlayer player, ItemStack stack, AnimType type, int index) { + if(player instanceof EntityPlayerMP) { + PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(type.ordinal(), 0, index), (EntityPlayerMP) player); + setLastAnim(stack, index, type); + setAnimTimer(stack, index, 0); + } + } + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isHeld) { + + if(!(entity instanceof EntityLivingBase)) return; + EntityPlayer player = entity instanceof EntityPlayer ? (EntityPlayer) entity : null; + int confNo = this.configs_DNA.length; + GunConfig[] configs = new GunConfig[confNo]; + LambdaContext[] ctx = new LambdaContext[confNo]; + for(int i = 0; i < confNo; i++) { + configs[i] = this.getConfig(stack, i); + ctx[i] = new LambdaContext(configs[i], (EntityLivingBase) entity, player != null ? player.inventory : null, i); + } + + if(world.isRemote) { + + if(isHeld && player == MainRegistry.proxy.me()) { + + /// DEBUG /// + /*Vec3 offset = Vec3.createVectorHelper(-0.2, -0.1, 0.75); + offset.rotateAroundX(-entity.rotationPitch / 180F * (float) Math.PI); + offset.rotateAroundY(-entity.rotationYaw / 180F * (float) Math.PI); + world.spawnParticle("flame", entity.posX + offset.xCoord, entity.posY + entity.getEyeHeight() + offset.yCoord, entity.posZ + offset.zCoord, 0, 0, 0);*/ + + /// AIMING /// + prevAimingProgress = aimingProgress; + boolean aiming = this.getIsAiming(stack); + float aimSpeed = 0.25F; + if(aiming && aimingProgress < 1F) aimingProgress += aimSpeed; + if(!aiming && aimingProgress > 0F) aimingProgress -= aimSpeed; + aimingProgress = MathHelper.clamp_float(aimingProgress, 0F, 1F); + + /// SMOKE NODES /// + for(int i = 0; i < confNo; i++) if(configs[i].getSmokeHandler(stack) != null) { + configs[i].getSmokeHandler(stack).accept(stack, ctx[i]); + } + + for(int i = 0; i < confNo; i++) { + BiConsumer orchestra = configs[i].getOrchestra(stack); + if(orchestra != null) orchestra.accept(stack, ctx[i]); + } + } + return; + } + + /// RESET WHEN NOT EQUIPPED /// + if(!isHeld) { + for(int i = 0; i < confNo; i++) { + GunState current = this.getState(stack, i); + if(current != GunState.JAMMED) { + this.setState(stack, i, GunState.DRAWING); + this.setTimer(stack, i, configs[i].getDrawDuration(stack)); + } + } + this.setIsAiming(stack, false); + return; + } + + for(int i = 0; i < confNo; i++) { + BiConsumer orchestra = configs[i].getOrchestra(stack); + if(orchestra != null) orchestra.accept(stack, ctx[i]); + + setAnimTimer(stack, i, getAnimTimer(stack, i) + 1); + + /// STTATE MACHINE /// + int timer = this.getTimer(stack, i); + if(timer > 0) this.setTimer(stack, i, timer - 1); + if(timer <= 1) configs[i].getDecider(stack).accept(stack, ctx[i]); + } + } + + // GUN DRAWN // + public static boolean getIsDrawn(ItemStack stack) { return getValueBool(stack, KEY_DRAWN); } + public static void setIsDrawn(ItemStack stack, boolean value) { setValueBool(stack, KEY_DRAWN, value); } + // GUN STATE TIMER // + public static int getTimer(ItemStack stack, int index) { return getValueInt(stack, KEY_TIMER + index); } + public static void setTimer(ItemStack stack, int index, int value) { setValueInt(stack, KEY_TIMER + index, value); } + // GUN STATE // + public static GunState getState(ItemStack stack, int index) { return EnumUtil.grabEnumSafely(GunState.class, getValueByte(stack, KEY_STATE + index)); } + public static void setState(ItemStack stack, int index, GunState value) { setValueByte(stack, KEY_STATE + index, (byte) value.ordinal()); } + // GUN MODE // + public static int getMode(ItemStack stack, int index) { return getValueInt(stack, KEY_MODE + index); } + public static void setMode(ItemStack stack, int index, int value) { setValueInt(stack, KEY_MODE + index, value); } + // GUN AIMING // + public static boolean getIsAiming(ItemStack stack) { return getValueBool(stack, KEY_AIMING); } + public static void setIsAiming(ItemStack stack, boolean value) { setValueBool(stack, KEY_AIMING, value); } + // GUN AIMING // + public static float getWear(ItemStack stack, int index) { return getValueFloat(stack, KEY_WEAR + index); } + public static void setWear(ItemStack stack, int index, float value) { setValueFloat(stack, KEY_WEAR + index, value); } + // LOCKON // + public static int getLockonTarget(ItemStack stack) { return getValueInt(stack, KEY_LOCKONTARGET); } + public static void setLockonTarget(ItemStack stack, int value) { setValueInt(stack, KEY_LOCKONTARGET, value); } + public static boolean getIsLockedOn(ItemStack stack) { return getValueBool(stack, KEY_LOCKEDON); } + public static void setIsLockedOn(ItemStack stack, boolean value) { setValueBool(stack, KEY_LOCKEDON, value); } + // ANIM TRACKING // + public static AnimType getLastAnim(ItemStack stack, int index) { return EnumUtil.grabEnumSafely(AnimType.class, getValueInt(stack, KEY_LASTANIM + index)); } + public static void setLastAnim(ItemStack stack, int index, AnimType value) { setValueInt(stack, KEY_LASTANIM + index, value.ordinal()); } + public static int getAnimTimer(ItemStack stack, int index) { return getValueInt(stack, KEY_ANIMTIMER + index); } + public static void setAnimTimer(ItemStack stack, int index, int value) { setValueInt(stack, KEY_ANIMTIMER + index, value); } + + // BUTTON STATES // + public static boolean getPrimary(ItemStack stack, int index) { return getValueBool(stack, KEY_PRIMARY + index); } + public static void setPrimary(ItemStack stack, int index, boolean value) { setValueBool(stack, KEY_PRIMARY + index, value); } + public static boolean getSecondary(ItemStack stack, int index) { return getValueBool(stack, KEY_SECONDARY + index); } + public static void setSecondary(ItemStack stack, int index, boolean value) { setValueBool(stack, KEY_SECONDARY + index, value); } + public static boolean getTertiary(ItemStack stack, int index) { return getValueBool(stack, KEY_TERTIARY + index); } + public static void setTertiary(ItemStack stack, int index, boolean value) { setValueBool(stack, KEY_TERTIARY + index, value); } + public static boolean getReloadKey(ItemStack stack, int index) { return getValueBool(stack, KEY_RELOAD + index); } + public static void setReloadKey(ItemStack stack, int index, boolean value) { setValueBool(stack, KEY_RELOAD + index, value); } + // RELOAD CANCEL // + public static boolean getReloadCancel(ItemStack stack) { return getValueBool(stack, KEY_CANCELRELOAD); } + public static void setReloadCancel(ItemStack stack, boolean value) { setValueBool(stack, KEY_CANCELRELOAD, value); } + + + /// UTIL /// + public static int getValueInt(ItemStack stack, String name) { if(stack.hasTagCompound()) return stack.getTagCompound().getInteger(name); return 0; } + public static void setValueInt(ItemStack stack, String name, int value) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setInteger(name, value); } + + public static float getValueFloat(ItemStack stack, String name) { if(stack.hasTagCompound()) return stack.getTagCompound().getFloat(name); return 0; } + public static void setValueFloat(ItemStack stack, String name, float value) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setFloat(name, value); } + + public static byte getValueByte(ItemStack stack, String name) { if(stack.hasTagCompound()) return stack.getTagCompound().getByte(name); return 0; } + public static void setValueByte(ItemStack stack, String name, byte value) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setByte(name, value); } + + public static boolean getValueBool(ItemStack stack, String name) { if(stack.hasTagCompound()) return stack.getTagCompound().getBoolean(name); return false; } + public static void setValueBool(ItemStack stack, String name, boolean value) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setBoolean(name, value); } + + /** Wrapper for extra context used in most Consumer lambdas which are part of the guncfg */ + public static class LambdaContext { + public final GunConfig config; + public final EntityLivingBase entity; + public final IInventory inventory; + public final int configIndex; + + public LambdaContext(GunConfig config, EntityLivingBase player, IInventory inventory, int configIndex) { + this.config = config; + this.entity = player; + this.inventory = inventory; + this.configIndex = configIndex; + } + + public EntityPlayer getPlayer() { + if(!(entity instanceof EntityPlayer)) return null; + return (EntityPlayer) entity; + } + } + + @Override + @SideOnly(Side.CLIENT) + public void renderHUD(Pre event, ElementType type, EntityPlayer player, ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + + if(type == ElementType.CROSSHAIRS) { + event.setCanceled(true); + GunConfig config = gun.getConfig(stack, 0); + if(config.getHideCrosshair(stack) && aimingProgress >= 1F) return; + RenderScreenOverlay.renderCustomCrosshairs(event.resolution, Minecraft.getMinecraft().ingameGUI, config.getCrosshair(stack)); + } + + int confNo = this.configs_DNA.length; + + for(int i = 0; i < confNo; i++) { + IHUDComponent[] components = gun.getConfig(stack, i).getHUDComponents(stack); + + if(components != null) for(IHUDComponent component : components) { + int bottomOffset = 0; + component.renderHUDComponent(event, type, player, stack, bottomOffset, i); + bottomOffset += component.getComponentHeight(player, stack); + } + } + + Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons); + } + + public static class SmokeNode { + + public double forward = 0D; + public double side = 0D; + public double lift = 0D; + public double alpha; + public double width = 1D; + + public SmokeNode(double alpha) { this.alpha = alpha; } + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/Receiver.java b/src/main/java/com/hbm/items/weapon/sedna/Receiver.java new file mode 100644 index 000000000..8a3468d75 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/Receiver.java @@ -0,0 +1,162 @@ +package com.hbm.items.weapon.sedna; + +import java.util.function.BiConsumer; +import java.util.function.BiFunction; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.factory.Lego; +import com.hbm.items.weapon.sedna.mags.IMagazine; + +import net.minecraft.item.ItemStack; +import net.minecraft.util.Vec3; + +/** + * Receivers are the gun's "moving parts", i.e. they determine things like base damage, spread, the ejector and the magazine. Think of this class like the + * barrel, receiver and chamber of the gun, an underbarrel grenade launcher for example would be a separate receiver instance compared to the regular gun it is attached to. + * + * @author hbm + */ +public class Receiver { + + public static final String F_BASEDAMAGE = "F_BASEDAMAGE"; + public static final String I_DELAYAFTERFIRE = "I_DELAYAFTERFIRE"; + public static final String I_DELAYAFTERDRYFIRE = "I_DELAYAFTERDRYFIRE"; + public static final String I_ROUNDSPERCYCLE = "I_ROUNDSPERCYCLE"; + public static final String F_SPRADINNATE = "F_SPRADINNATE"; + public static final String F_SPREADAMMO = "F_SPREADAMMO"; + public static final String F_SPREADHIPFIRE = "F_SPREADHIPFIRE"; + public static final String F_SPREADDURABILITY = "F_SPREADDURABILITY"; + public static final String B_REFIREONHOLD = "B_REFIREONHOLD"; + public static final String B_REFIREAFTERDRY = "B_REFIREAFTERDRY"; + public static final String B_DOESDRYFIRE = "B_DOESDRYFIRE"; + public static final String B_DOESDRYFIREAFTERAUTO = "B_DOESDRYFIREAFTERAUTO"; + public static final String B_EJECTONFIRE = "B_EJECTONFIRE"; + public static final String B_RELOADONEMPTY = "B_RELOADONEMPTY"; + public static final String I_RELOADBEGINDURATION = "I_RELOADBEGINDURATION"; + public static final String I_RELOADCYCLEDURATION = "I_RELOADCYCLEDURATION"; + public static final String I_RELOADENDDURATION = "I_RELOADENDDURATION"; + public static final String I_RELOADCOCKONEMPTYPRE = "I_RELOADCOCKONEMPTYPRE"; + public static final String I_RELOADCOCKONEMPTYPOST = "I_RELOADCOCKONEMPTYPOST"; + public static final String I_JAMDURATION = "I_JAMDURATION"; + public static final String S_FIRESOUND = "S_FIRESOUND"; + public static final String F_FIREVOLUME = "F_FIREVOLUME"; + public static final String F_FIREPITCH = "F_FIREPITCH"; + public static final String O_MAGAZINE = "O_MAGAZINE"; + public static final String O_PROJECTILEOFFSET = "O_PROJECTILEOFFSET"; + public static final String O_PROJECTILEOFFSETSCOPED = "O_PROJECTILEOFFSETSCOPED"; + public static final String FUN_CANFIRE = "FUN_CANFIRE"; + public static final String CON_ONFIRE = "CON_ONFIRE"; + public static final String CON_ONRECOIL = "CON_ONRECOIL"; + + public Receiver(int index) { + this.index = index; + } + + protected int index; + protected float baseDamage_DNA; + protected int delayAfterFire_DNA; + protected int delayAfterDryFire_DNA; + protected int roundsPerCycle_DNA = 1; + protected float spreadInnate_DNA = 0F; + protected float spreadMultAmmo_DNA = 1F; + protected float spreadPenaltyHipfire_DNA = 0.025F; + protected float spreadDurability_DNA = 0.125F; + protected boolean refireOnHold_DNA = false; + protected boolean refireAfterDry_DNA = false; + protected boolean doesDryFire_DNA = true; + protected boolean doesDryFireAfterAuto_DNA = false; + protected boolean ejectOnFire_DNA = true; + protected boolean reloadOnEmpty_DNA = false; + protected int reloadBeginDuration_DNA; + protected int reloadCycleDuration_DNA; + protected int reloadEndDuration_DNA; + protected int reloadCockOnEmptyPre_DNA; + protected int reloadCockOnEmptyPost_DNA; + protected int jamDuration_DNA = 0; + protected String fireSound_DNA; + protected float fireVolume_DNA = 1.0F; + protected float firePitch_DNA = 1.0F; + protected IMagazine magazine_DNA; + protected Vec3 projectileOffset_DNA = Vec3.createVectorHelper(0, 0, 0); + protected Vec3 projectileOffsetScoped_DNA = Vec3.createVectorHelper(0, 0, 0); + protected BiFunction canFire_DNA; + protected BiConsumer onFire_DNA; + protected BiConsumer onRecoil_DNA; + + /* GETTERS */ + public float getBaseDamage(ItemStack stack) { return WeaponUpgradeManager.eval(this.baseDamage_DNA, stack, F_BASEDAMAGE, this); } + public int getDelayAfterFire(ItemStack stack) { return WeaponUpgradeManager.eval(this.delayAfterFire_DNA, stack, I_DELAYAFTERFIRE, this); } + public int getDelayAfterDryFire(ItemStack stack) { return WeaponUpgradeManager.eval(this.delayAfterDryFire_DNA, stack, I_DELAYAFTERDRYFIRE, this); } + public int getRoundsPerCycle(ItemStack stack) { return WeaponUpgradeManager.eval(this.roundsPerCycle_DNA, stack, I_ROUNDSPERCYCLE, this); } + public float getInnateSpread(ItemStack stack) { return WeaponUpgradeManager.eval(this.spreadInnate_DNA, stack, F_SPRADINNATE, this); } + public float getAmmoSpread(ItemStack stack) { return WeaponUpgradeManager.eval(this.spreadMultAmmo_DNA, stack, F_SPREADAMMO, this); } + public float getHipfireSpread(ItemStack stack) { return WeaponUpgradeManager.eval(this.spreadPenaltyHipfire_DNA, stack, F_SPREADHIPFIRE, this); } + public float getDurabilitySpread(ItemStack stack) { return WeaponUpgradeManager.eval(this.spreadDurability_DNA, stack, F_SPREADDURABILITY, this); } + public boolean getRefireOnHold(ItemStack stack) { return WeaponUpgradeManager.eval(this.refireOnHold_DNA, stack, B_REFIREONHOLD, this); } + public boolean getRefireAfterDry(ItemStack stack) { return WeaponUpgradeManager.eval(this.refireAfterDry_DNA, stack, B_REFIREAFTERDRY, this); } + public boolean getDoesDryFire(ItemStack stack) { return WeaponUpgradeManager.eval(this.doesDryFire_DNA, stack, B_DOESDRYFIRE, this); } + public boolean getDoesDryFireAfterAuto(ItemStack stack) { return WeaponUpgradeManager.eval(this.doesDryFireAfterAuto_DNA, stack, B_DOESDRYFIREAFTERAUTO, this); } + public boolean getEjectOnFire(ItemStack stack) { return WeaponUpgradeManager.eval(this.ejectOnFire_DNA, stack, B_EJECTONFIRE, this); } + public boolean getReloadOnEmpty(ItemStack stack) { return WeaponUpgradeManager.eval(this.reloadOnEmpty_DNA, stack, B_RELOADONEMPTY, this); } + public int getReloadBeginDuration(ItemStack stack) { return WeaponUpgradeManager.eval(this.reloadBeginDuration_DNA, stack, I_RELOADBEGINDURATION, this); } + public int getReloadCycleDuration(ItemStack stack) { return WeaponUpgradeManager.eval(this.reloadCycleDuration_DNA, stack, I_RELOADCYCLEDURATION, this); } + public int getReloadEndDuration(ItemStack stack) { return WeaponUpgradeManager.eval(this.reloadEndDuration_DNA, stack, I_RELOADENDDURATION, this); } + public int getReloadCockOnEmptyPre(ItemStack stack) { return WeaponUpgradeManager.eval(this.reloadCockOnEmptyPre_DNA, stack, I_RELOADCOCKONEMPTYPRE, this); } + public int getReloadCockOnEmptyPost(ItemStack stack) { return WeaponUpgradeManager.eval(this.reloadCockOnEmptyPost_DNA, stack, I_RELOADCOCKONEMPTYPOST, this); } + public int getJamDuration(ItemStack stack) { return WeaponUpgradeManager.eval(this.jamDuration_DNA, stack, I_JAMDURATION, this); } + public String getFireSound(ItemStack stack) { return WeaponUpgradeManager.eval(this.fireSound_DNA, stack, S_FIRESOUND, this); } + public float getFireVolume(ItemStack stack) { return WeaponUpgradeManager.eval(this.fireVolume_DNA, stack, F_FIREVOLUME, this); } + public float getFirePitch(ItemStack stack) { return WeaponUpgradeManager.eval(this.firePitch_DNA, stack, F_FIREPITCH, this); } + public IMagazine getMagazine(ItemStack stack) { return WeaponUpgradeManager.eval(this.magazine_DNA, stack, O_MAGAZINE, this); } + public Vec3 getProjectileOffset(ItemStack stack) { return WeaponUpgradeManager.eval(this.projectileOffset_DNA, stack, O_PROJECTILEOFFSET, this); } + public Vec3 getProjectileOffsetScoped(ItemStack stack) { return WeaponUpgradeManager.eval(this.projectileOffsetScoped_DNA, stack, O_PROJECTILEOFFSETSCOPED, this); } + + public BiFunction getCanFire(ItemStack stack) { return WeaponUpgradeManager.eval(this.canFire_DNA, stack, FUN_CANFIRE, this); } + public BiConsumer getOnFire(ItemStack stack) { return WeaponUpgradeManager.eval(this.onFire_DNA, stack, CON_ONFIRE, this); } + public BiConsumer getRecoil(ItemStack stack) { return WeaponUpgradeManager.eval(this.onRecoil_DNA, stack, CON_ONRECOIL, this); } + + /* SETTERS */ + public Receiver dmg(float dmg) { this.baseDamage_DNA = dmg; return this; } + public Receiver delay(int delay) { this.delayAfterFire_DNA = this.delayAfterDryFire_DNA = delay; return this; } + public Receiver dry(int delay) { this.delayAfterDryFire_DNA = delay; return this; } + public Receiver rounds(int rounds) { this.roundsPerCycle_DNA = rounds; return this; } + public Receiver spread(float spread) { this.spreadInnate_DNA = spread; return this; } + public Receiver spreadAmmo(float spread) { this.spreadMultAmmo_DNA = spread; return this; } + public Receiver spreadHipfire(float spread) { this.spreadPenaltyHipfire_DNA = spread; return this; } + public Receiver spreadDurability(float spread) { this.spreadDurability_DNA = spread; return this; } + public Receiver auto(boolean auto) { this.refireOnHold_DNA = auto; return this; } + public Receiver autoAfterDry(boolean auto) { this.refireAfterDry_DNA = auto; return this; } + public Receiver dryfire(boolean dryfire) { this.doesDryFire_DNA = dryfire; return this; } + public Receiver dryfireAfterAuto(boolean dryfire) { this.doesDryFireAfterAuto_DNA = dryfire; return this; } + public Receiver ejectOnFire(boolean eject) { this.ejectOnFire_DNA = eject; return this; } + public Receiver reloadOnEmpty(boolean reload) { this.reloadOnEmpty_DNA = reload; return this; } + public Receiver mag(IMagazine magazine) { this.magazine_DNA = magazine; return this; } + public Receiver offset(double f, double u, double s) { this.projectileOffset_DNA = Vec3.createVectorHelper(f, u, s); this.projectileOffsetScoped_DNA = Vec3.createVectorHelper(f, u, 0); return this; } + public Receiver offsetScoped(double f, double u, double s) { this.projectileOffsetScoped_DNA = Vec3.createVectorHelper(f, u, s); return this; } + public Receiver jam(int jam) { this.jamDuration_DNA = jam; return this; } + + public Receiver reload(int delay) { return reload(0, delay, delay, 0, 0); } + public Receiver reload(int begin, int cycle, int end, int cock) { return reload(0, begin, cycle, end, cock); } + public Receiver reload(int pre, int begin, int cycle, int end, int post) { + this.reloadBeginDuration_DNA = begin; + this.reloadCycleDuration_DNA = cycle; + this.reloadEndDuration_DNA = end; + this.reloadCockOnEmptyPre_DNA = pre; + this.reloadCockOnEmptyPost_DNA = post; + return this; + } + + public Receiver canFire(BiFunction lambda) { this.canFire_DNA = lambda; return this; } + public Receiver fire(BiConsumer lambda) { this.onFire_DNA = lambda; return this; } + public Receiver recoil(BiConsumer lambda) { this.onRecoil_DNA = lambda; return this; } + + public Receiver sound(String sound, float volume, float pitch) { + this.fireSound_DNA = sound; + this.fireVolume_DNA = volume; + this.firePitch_DNA = pitch; + return this; + } + + public Receiver setupStandardFire() { return this.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE) .fire(Lego.LAMBDA_STANDARD_FIRE); } + public Receiver setupLockonFire() { return this.canFire(Lego.LAMBDA_LOCKON_CAN_FIRE) .fire(Lego.LAMBDA_STANDARD_FIRE); } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/WeaponUpgradeManager.java b/src/main/java/com/hbm/items/weapon/sedna/WeaponUpgradeManager.java new file mode 100644 index 000000000..4f0602a0f --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/WeaponUpgradeManager.java @@ -0,0 +1,36 @@ +package com.hbm.items.weapon.sedna; + +import net.minecraft.item.ItemStack; + +/** + * The upgrade manager operates by scraping upgrades from a gun, then iterating over them and evaluating the given value, passing the modified value to successive mods. + * The way that mods stack (additive vs multiplicative) depends on the order the mod is installed in + * + * @author hbm + */ +public class WeaponUpgradeManager { + + //TODO: add caching so this doesn't have to run 15 times per single action + + + public static ItemStack[] getUpgrades(ItemStack stack) { + return null; // TBI + } + + /** Scrapes all upgrades, iterates over them and evaluates the given value. The parent (i.e. holder of the base value) + * is passed for context (so upgrades can differentiate primary and secondary receivers for example). Passing a null + * stack causes the base value to be returned. */ + public static T eval(T base, ItemStack stack, String key, Object parent) { + if(stack == null) return base; + + ItemStack[] upgrades = getUpgrades(stack); + if(upgrades != null) for(ItemStack upgradeStack : upgrades) { + if(upgradeStack.getItem() instanceof IWeaponUpgrade) { + IWeaponUpgrade upgrade = (IWeaponUpgrade) upgradeStack.getItem(); + base = upgrade.eval(base, upgradeStack, key, parent); + } + } + + return base; + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java b/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java new file mode 100644 index 000000000..7bf6381df --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java @@ -0,0 +1,48 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.Locale; + +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.particle.helper.AshesCreator; +import com.hbm.particle.helper.SkeletonCreator; +import com.hbm.util.DamageResistanceHandler.DamageClass; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; + +public class ConfettiUtil { + + public static void decideConfetti(EntityLivingBase entity, DamageSource source) { + if(entity.isEntityAlive()) return; + if(source.damageType.equals(DamageClass.LASER.name().toLowerCase(Locale.US))) pulverize(entity); + if(source.damageType.equals(DamageClass.ELECTRIC.name().toLowerCase(Locale.US))) pulverize(entity); + if(source.isExplosion()) gib(entity); + if(source.isFireDamage()) cremate(entity); + } + + public static void pulverize(EntityLivingBase entity) { + int amount = MathHelper.clamp_int((int) (entity.width * entity.height * entity.width * 25), 5, 50); + AshesCreator.composeEffect(entity.worldObj, entity, amount, 0.125F); + SkeletonCreator.composeEffect(entity.worldObj, entity, 1F); + entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, "hbm:weapon.fire.disintegration", 2.0F, 0.9F + entity.getRNG().nextFloat() * 0.2F); + } + + public static void cremate(EntityLivingBase entity) { + int amount = MathHelper.clamp_int((int) (entity.width * entity.height * entity.width * 25), 5, 50); + AshesCreator.composeEffect(entity.worldObj, entity, amount, 0.125F); + SkeletonCreator.composeEffect(entity.worldObj, entity, 0.25F); + entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, "hbm:weapon.fire.disintegration", 2.0F, 0.9F + entity.getRNG().nextFloat() * 0.2F); + } + + public static void gib(EntityLivingBase entity) { + NBTTagCompound vdat = new NBTTagCompound(); + vdat.setString("type", "giblets"); + vdat.setInteger("ent", entity.getEntityId()); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(vdat, entity.posX, entity.posY + entity.height * 0.5, entity.posZ), new TargetPoint(entity.dimension, entity.posX, entity.posY + entity.height * 0.5, entity.posZ, 150)); + entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, "mob.zombie.woodbreak", 2.0F, 0.95F + entity.getRNG().nextFloat() * 0.2F); + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java new file mode 100644 index 000000000..afd0b437a --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java @@ -0,0 +1,129 @@ +package com.hbm.items.weapon.sedna.factory; + +import com.hbm.interfaces.IOrderedEnum; +import com.hbm.items.ItemEnumMulti; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; +import com.hbm.items.weapon.sedna.mags.MagazineFullReload; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; + +import net.minecraft.item.Item; + +public class GunFactory { + + public static BulletConfig ammo_debug; + + public static SpentCasing CASING44 = new SpentCasing(CasingType.STRAIGHT).setScale(1.5F, 1.0F, 1.5F).setBounceMotion(0.01F, 0.05F).setColor(SpentCasing.COLOR_CASE_44); + + public static void init() { + + /// AMMO ITEMS /// + ModItems.ammo_debug = new Item().setUnlocalizedName("ammo_debug").setTextureName(RefStrings.MODID + ":ammo_45"); + ModItems.ammo_standard = new ItemEnumMulti(EnumAmmo.class, true, true).setUnlocalizedName("ammo_standard").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_standard"); + ModItems.ammo_secret = new ItemEnumMulti(EnumAmmoSecret.class, true, true).setUnlocalizedName("ammo_secret").setCreativeTab(null).setTextureName(RefStrings.MODID + ":ammo_secret"); + + /// BULLLET CFGS /// + ammo_debug = new BulletConfig().setItem(ModItems.ammo_debug).setSpread(0.01F).setRicochetAngle(45).setCasing(CASING44.clone().register("DEBUG0")); + + /// GUNS /// + ModItems.gun_debug = new ItemGunBaseNT(WeaponQuality.DEBUG, new GunConfig() + .dura(600F).draw(15).inspect(23).crosshair(Crosshair.L_CLASSIC).smoke(Lego.LAMBDA_STANDARD_SMOKE).orchestra(Orchestras.DEBUG_ORCHESTRA) + .rec(new Receiver(0) + .dmg(10F).delay(14).reload(46).jam(23).sound("hbm:weapon.44Shoot", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 12).addConfigs(ammo_debug)) + .offset(0.75, -0.0625, -0.3125D) + .canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE)) + .pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD).pt(Lego.LAMBDA_TOGGLE_AIM) + .decider(GunStateDecider.LAMBDA_STANDARD_DECIDER) + .anim(Lego.LAMBDA_DEBUG_ANIMS) + ).setUnlocalizedName("gun_debug"); + + XFactoryBlackPowder.init(); + XFactory357.init(); + XFactory44.init(); + XFactory9mm.init(); + XFactory12ga.init(); + XFactory40mm.init(); + XFactory762mm.init(); + XFactory22lr.init(); + XFactoryFlamer.init(); + XFactoryRocket.init(); + XFactory556mm.init(); + XFactory50.init(); + XFactoryEnergy.init(); + XFactoryAccelerator.init(); + XFactoryCatapult.init(); + XFactory75Bolt.init(); + XFactoryFolly.init(); + XFactoryTurret.init(); + XFactory10ga.init(); + + /// PROXY BULLSHIT /// + MainRegistry.proxy.registerGunCfg(); + } + + public static enum EnumAmmo implements IOrderedEnum { + STONE, STONE_AP, STONE_IRON, STONE_SHOT, + M357_BP, M357_SP, M357_FMJ, M357_JHP, M357_AP, M357_EXPRESS, + M44_BP, M44_SP, M44_FMJ, M44_JHP, M44_AP, M44_EXPRESS, + P22_SP, P22_FMJ, P22_JHP, P22_AP, + P9_SP, P9_FMJ, P9_JHP, P9_AP, + R556_SP, R556_FMJ, R556_JHP, R556_AP, + R762_SP, R762_FMJ, R762_JHP, R762_AP, R762_DU, + BMG50_SP, BMG50_FMJ, BMG50_JHP, BMG50_AP, BMG50_DU, + B75, B75_INC, B75_EXP, + G12_BP, G12_BP_MAGNUM, G12_BP_SLUG, G12, G12_SLUG, G12_FLECHETTE, G12_MAGNUM, G12_EXPLOSIVE, G12_PHOSPHORUS, //G12_ANTHRAX, + G26_FLARE, G26_FLARE_SUPPLY, G26_FLARE_WEAPON, + G40_HE, G40_HEAT, G40_DEMO, G40_INC, G40_PHOSPHORUS, + ROCKET_HE, ROCKET_HEAT, ROCKET_DEMO, ROCKET_INC, ROCKET_PHOSPHORUS, + FLAME_DIESEL, FLAME_GAS, FLAME_NAPALM, FLAME_BALEFIRE, + CAPACITOR, CAPACITOR_OVERCHARGE, CAPACITOR_IR, + TAU_URANIUM, + COIL_TUNGSTEN, COIL_FERROURANIUM, + NUKE_STANDARD, NUKE_DEMO, NUKE_HIGH, NUKE_TOTS, NUKE_HIVE, + G10, G10_SHRAPNEL, G10_DU, G10_SLUG, + + //ONLY ADD NEW ENTRIES AT THE BOTTOM TO AVOID SHIFTING! + ; + + /** used for creative tab order */ + public static EnumAmmo[] order = new EnumAmmo[] { + STONE, STONE_AP, STONE_IRON, STONE_SHOT, + M357_BP, M357_SP, M357_FMJ, M357_JHP, M357_AP, M357_EXPRESS, + M44_BP, M44_SP, M44_FMJ, M44_JHP, M44_AP, M44_EXPRESS, + P22_SP, P22_FMJ, P22_JHP, P22_AP, + P9_SP, P9_FMJ, P9_JHP, P9_AP, + R556_SP, R556_FMJ, R556_JHP, R556_AP, + R762_SP, R762_FMJ, R762_JHP, R762_AP, R762_DU, + BMG50_SP, BMG50_FMJ, BMG50_JHP, BMG50_AP, BMG50_DU, + B75, B75_INC, B75_EXP, + G12_BP, G12_BP_MAGNUM, G12_BP_SLUG, G12, G12_SLUG, G12_FLECHETTE, G12_MAGNUM, G12_EXPLOSIVE, G12_PHOSPHORUS, + G10, G10_SHRAPNEL, G10_DU, G10_SLUG, + G26_FLARE, G26_FLARE_SUPPLY, G26_FLARE_WEAPON, + G40_HE, G40_HEAT, G40_DEMO, G40_INC, G40_PHOSPHORUS, + ROCKET_HE, ROCKET_HEAT, ROCKET_DEMO, ROCKET_INC, ROCKET_PHOSPHORUS, + FLAME_DIESEL, FLAME_GAS, FLAME_NAPALM, FLAME_BALEFIRE, + CAPACITOR, CAPACITOR_OVERCHARGE, CAPACITOR_IR, + TAU_URANIUM, + COIL_TUNGSTEN, COIL_FERROURANIUM, + NUKE_STANDARD, NUKE_DEMO, NUKE_HIGH, NUKE_TOTS, NUKE_HIVE, + }; + + public Enum[] getOrder() { + return order; + } + } + + public static enum EnumAmmoSecret { + FOLLY_SM, FOLLY_NUKE, + M44_EQUESTRIAN, G12_EQUESTRIAN, BMG50_EQUESTRIAN + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java new file mode 100644 index 000000000..600dfbd19 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java @@ -0,0 +1,252 @@ +package com.hbm.items.weapon.sedna.factory; + +import static com.hbm.items.weapon.sedna.factory.GunFactory.*; +import static com.hbm.items.weapon.sedna.factory.XFactory10ga.*; +import static com.hbm.items.weapon.sedna.factory.XFactory12ga.*; +import static com.hbm.items.weapon.sedna.factory.XFactory22lr.*; +import static com.hbm.items.weapon.sedna.factory.XFactory357.*; +import static com.hbm.items.weapon.sedna.factory.XFactory40mm.*; +import static com.hbm.items.weapon.sedna.factory.XFactory44.*; +import static com.hbm.items.weapon.sedna.factory.XFactory50.*; +import static com.hbm.items.weapon.sedna.factory.XFactory556mm.*; +import static com.hbm.items.weapon.sedna.factory.XFactory75Bolt.*; +import static com.hbm.items.weapon.sedna.factory.XFactory762mm.*; +import static com.hbm.items.weapon.sedna.factory.XFactory9mm.*; +import static com.hbm.items.weapon.sedna.factory.XFactoryAccelerator.*; +import static com.hbm.items.weapon.sedna.factory.XFactoryBlackPowder.*; +import static com.hbm.items.weapon.sedna.factory.XFactoryCatapult.*; +import static com.hbm.items.weapon.sedna.factory.XFactoryEnergy.*; +import static com.hbm.items.weapon.sedna.factory.XFactoryFolly.*; +import static com.hbm.items.weapon.sedna.factory.XFactoryTurret.*; +import static com.hbm.items.weapon.sedna.factory.XFactoryRocket.*; + +import java.util.function.BiConsumer; + +import com.hbm.entity.projectile.EntityBulletBaseMK4; +import com.hbm.entity.projectile.EntityBulletBeamBase; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.weapon.sedna.*; + +import net.minecraftforge.client.MinecraftForgeClient; + +public class GunFactoryClient { + + public static void init() { + //GUNS + MinecraftForgeClient.registerItemRenderer(ModItems.gun_debug, new ItemRenderDebug()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_pepperbox, new ItemRenderPepperbox()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_light_revolver, new ItemRenderAtlas(ResourceManager.bio_revolver_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_light_revolver_atlas, new ItemRenderAtlas(ResourceManager.bio_revolver_atlas_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_light_revolver_dani, new ItemRenderDANI()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_henry, new ItemRenderHenry()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_greasegun, new ItemRenderGreasegun()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_maresleg, new ItemRenderMaresleg(ResourceManager.maresleg_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_maresleg_akimbo, new ItemRenderMareslegAkimbo()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_maresleg_broken, new ItemRenderMaresleg(ResourceManager.maresleg_broken_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_flaregun, new ItemRenderFlaregun()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_heavy_revolver, new ItemRenderHeavyRevolver(ResourceManager.heavy_revolver_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_heavy_revolver_lilmac, new ItemRenderHeavyRevolver(ResourceManager.lilmac_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_heavy_revolver_protege, new ItemRenderHeavyRevolver(ResourceManager.heavy_revolver_protege_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_carbine, new ItemRenderCarbine()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_am180, new ItemRenderAm180()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_liberator, new ItemRenderLiberator()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_congolake, new ItemRenderCongoLake()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer, new ItemRenderFlamer(ResourceManager.flamethrower_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer_topaz, new ItemRenderFlamer(ResourceManager.flamethrower_topaz_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer_daybreaker, new ItemRenderFlamer(ResourceManager.flamethrower_daybreaker_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_lag, new ItemRenderLAG()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi, new ItemRenderUzi()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_akimbo, new ItemRenderUziAkimbo()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_spas12, new ItemRenderSPAS12()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_panzerschreck, new ItemRenderPanzerschreck()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_g3, new ItemRenderG3()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_stinger, new ItemRenderStinger()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_chemthrower, new ItemRenderChemthrower()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_m2, new ItemRenderM2()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun, new ItemRenderShredder(ResourceManager.shredder_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun_shredder, new ItemRenderShredder(ResourceManager.shredder_orig_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun_sexy, new ItemRenderShredder(ResourceManager.sexy_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_quadro, new ItemRenderQuadro()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_minigun, new ItemRenderMinigun(ResourceManager.minigun_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_minigun_lacunae, new ItemRenderMinigun(ResourceManager.minigun_lacunae_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_missile_launcher, new ItemRenderMissileLauncher()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_tesla_cannon, new ItemRenderTeslaCannon()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_stg77, new ItemRenderSTG77()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_tau, new ItemRenderTau()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_fatman, new ItemRenderFatMan()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_lasrifle, new ItemRenderLasrifle()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_coilgun, new ItemRenderCoilgun()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_hangman, new ItemRenderHangman()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolter, new ItemRenderBolter()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_folly, new ItemRenderFolly()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_double_barrel, new ItemRenderDoubleBarrel(ResourceManager.double_barrel_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_double_barrel_sacred_dragon, new ItemRenderDoubleBarrel(ResourceManager.double_barrel_sacred_dragon_tex)); + //PROJECTILES + ammo_debug.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + + stone.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + flint.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + iron.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + shot.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + + m357_bp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + m357_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + m357_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + m357_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + m357_ap.setRenderer(LegoClient.RENDER_AP_BULLET); + m357_express.setRenderer(LegoClient.RENDER_EXPRESS_BULLET); + + m44_bp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + m44_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + m44_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + m44_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + m44_ap.setRenderer(LegoClient.RENDER_AP_BULLET); + m44_express.setRenderer(LegoClient.RENDER_EXPRESS_BULLET); + m44_equestrian_pip.setRenderer(LegoClient.RENDER_LEGENDARY_BULLET); + m44_equestrian_mn7.setRenderer(LegoClient.RENDER_LEGENDARY_BULLET); + + p22_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + p22_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + p22_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + p22_ap.setRenderer(LegoClient.RENDER_AP_BULLET); + + p9_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + p9_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + p9_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + p9_ap.setRenderer(LegoClient.RENDER_AP_BULLET); + + r556_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + r556_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + r556_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + r556_ap.setRenderer(LegoClient.RENDER_AP_BULLET); + + r762_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + r762_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + r762_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + r762_ap.setRenderer(LegoClient.RENDER_AP_BULLET); + r762_du.setRenderer(LegoClient.RENDER_DU_BULLET); + + bmg50_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + bmg50_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + bmg50_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + bmg50_ap.setRenderer(LegoClient.RENDER_AP_BULLET); + bmg50_du.setRenderer(LegoClient.RENDER_DU_BULLET); + + b75.setRenderer(LegoClient.RENDER_AP_BULLET); + b75_inc.setRenderer(LegoClient.RENDER_AP_BULLET); + b75_exp.setRenderer(LegoClient.RENDER_EXPRESS_BULLET); + + g12_bp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + g12_bp_magnum.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + g12_bp_slug.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + g12.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + g12_slug.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + g12_flechette.setRenderer(LegoClient.RENDER_FLECHETTE_BULLET); + g12_magnum.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + g12_explosive.setRenderer(LegoClient.RENDER_EXPRESS_BULLET); + g12_phosphorus.setRenderer(LegoClient.RENDER_AP_BULLET); + g12_equestrian_bj.setRenderer(LegoClient.RENDER_LEGENDARY_BULLET); + g12_equestrian_tkr.setRenderer(LegoClient.RENDER_LEGENDARY_BULLET); + + g12_sub.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + g12_sub_slug.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + g12_sub_flechette.setRenderer(LegoClient.RENDER_FLECHETTE_BULLET); + g12_sub_magnum.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + g12_sub_explosive.setRenderer(LegoClient.RENDER_EXPRESS_BULLET); + g12_sub_phosphorus.setRenderer(LegoClient.RENDER_AP_BULLET); + + setRendererBulkBeam(LegoClient.RENDER_LASER_CYAN, g12_shredder, g12_shredder_slug, g12_shredder_flechette, g12_shredder_magnum, g12_shredder_explosive, g12_shredder_phosphorus); + + g10.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + g10_shrapnel.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + g10_du.setRenderer(LegoClient.RENDER_DU_BULLET); + g10_slug.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + + g26_flare.setRenderer(LegoClient.RENDER_FLARE); + g26_flare_supply.setRenderer(LegoClient.RENDER_FLARE_SUPPLY); + g26_flare_weapon.setRenderer(LegoClient.RENDER_FLARE_WEAPON); + + setRendererBulk(LegoClient.RENDER_GRENADE, g40_he, g40_heat, g40_demo, g40_inc, g40_phosphorus); + + setRendererBulk(LegoClient.RENDER_RPZB, rocket_rpzb); + setRendererBulk(LegoClient.RENDER_QD, rocket_qd); + setRendererBulk(LegoClient.RENDER_ML, rocket_ml); + + setRendererBulk(LegoClient.RENDER_NUKE, nuke_standard, nuke_demo, nuke_high); + nuke_tots.setRenderer(LegoClient.RENDER_GRENADE); + nuke_hive.setRenderer(LegoClient.RENDER_HIVE); + + setRendererBulkBeam(LegoClient.RENDER_LIGHTNING, energy_tesla, energy_tesla_overcharge); + setRendererBulkBeam(LegoClient.RENDER_TAU, tau_uranium); + setRendererBulkBeam(LegoClient.RENDER_TAU_CHARGE, tau_uranium_charge); + setRendererBulkBeam(LegoClient.RENDER_LASER_RED, energy_las, energy_las_overcharge, energy_las_ir); + setRendererBulkBeam(LegoClient.RENDER_LASER_PURPLE, energy_lacunae, energy_lacunae_overcharge, energy_lacunae_ir); + + setRendererBulk(LegoClient.RENDER_AP_BULLET, coil_tungsten, coil_ferrouranium); + + folly_sm.setRendererBeam(LegoClient.RENDER_FOLLY); + folly_nuke.setRenderer(LegoClient.RENDER_BIG_NUKE); + + setRendererBulk(LegoClient.RENDER_GRENADE, shell_normal, shell_explosive, shell_ap, shell_du, shell_w9); //TODO: change the sabots + + //HUDS + ((ItemGunBaseNT) ModItems.gun_debug) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_pepperbox) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_light_revolver) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_light_revolver_atlas) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_henry) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_greasegun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_maresleg) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_maresleg_broken) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_flaregun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_heavy_revolver) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_heavy_revolver_lilmac) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_heavy_revolver_protege) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_carbine) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_am180) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_liberator) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_congolake) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_flamer) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER); + ((ItemGunBaseNT) ModItems.gun_flamer_topaz) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER); + ((ItemGunBaseNT) ModItems.gun_flamer_daybreaker) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER); + ((ItemGunBaseNT) ModItems.gun_uzi) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_spas12) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_panzerschreck) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_g3) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_stinger) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_chemthrower) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_m2) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_autoshotgun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_autoshotgun_shredder) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_autoshotgun_sexy) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_quadro) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_lag) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_minigun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_minigun_lacunae) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_missile_launcher) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_tesla_cannon) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_stg77) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_tau) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_fatman) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_lasrifle) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_coilgun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_hangman) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_bolter) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_folly) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_double_barrel) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_double_barrel_sacred_dragon) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + + ((ItemGunBaseNT) ModItems.gun_light_revolver_dani) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY_MIRROR, LegoClient.HUD_COMPONENT_AMMO_MIRROR); + ((ItemGunBaseNT) ModItems.gun_light_revolver_dani) .getConfig(null, 1).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_maresleg_akimbo) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY_MIRROR, LegoClient.HUD_COMPONENT_AMMO_MIRROR); + ((ItemGunBaseNT) ModItems.gun_maresleg_akimbo) .getConfig(null, 1).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_uzi_akimbo) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY_MIRROR, LegoClient.HUD_COMPONENT_AMMO_MIRROR); + ((ItemGunBaseNT) ModItems.gun_uzi_akimbo) .getConfig(null, 1).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + } + + public static void setRendererBulk(BiConsumer renderer, BulletConfig... configs) { for(BulletConfig config : configs) config.setRenderer(renderer); } + public static void setRendererBulkBeam(BiConsumer renderer, BulletConfig... configs) { for(BulletConfig config : configs) config.setRendererBeam(renderer); } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunStateDecider.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunStateDecider.java new file mode 100644 index 000000000..75992ca7e --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunStateDecider.java @@ -0,0 +1,159 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.function.BiConsumer; +import java.util.function.BooleanSupplier; + +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.mags.IMagazine; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +public class GunStateDecider { + + /** + * The meat and bones of the gun system's state machine. + * This standard decider can handle guns with an automatic primary receiver, as well as one receiver's reloading state. + * It supports draw delays as well as semi and auto fire + */ + public static BiConsumer LAMBDA_STANDARD_DECIDER = (stack, ctx) -> { + int index = ctx.configIndex; + GunState lastState = ItemGunBaseNT.getState(stack, index); + deciderStandardFinishDraw(stack, lastState, index); + deciderStandardClearJam(stack, lastState, index); + deciderStandardReload(stack, ctx, lastState, 0, index); + deciderAutoRefire(stack, ctx, lastState, 0, index, () -> { return ItemGunBaseNT.getPrimary(stack, index) && ItemGunBaseNT.getMode(stack, ctx.configIndex) == 0; }); + }; + + /** Transitions the gun from DRAWING to IDLE */ + public static void deciderStandardFinishDraw(ItemStack stack, GunState lastState, int index) { + + //transition to idle + if(lastState == GunState.DRAWING) { + ItemGunBaseNT.setState(stack, index, GunState.IDLE); + ItemGunBaseNT.setTimer(stack, index, 0); + } + } + + /** Transitions the gun from DRAWING to IDLE */ + public static void deciderStandardClearJam(ItemStack stack, GunState lastState, int index) { + + //transition to idle + if(lastState == GunState.JAMMED) { + ItemGunBaseNT.setState(stack, index, GunState.IDLE); + ItemGunBaseNT.setTimer(stack, index, 0); + } + } + + /** Triggers a reload action on the first receiver. If the mag is not full and reloading is still possible, set to RELOADING, otherwise IDLE */ + public static void deciderStandardReload(ItemStack stack, LambdaContext ctx, GunState lastState, int recIndex, int gunIndex) { + + if(lastState == GunState.RELOADING) { + + EntityLivingBase entity = ctx.entity; + EntityPlayer player = ctx.getPlayer(); + GunConfig cfg = ctx.config; + Receiver rec = cfg.getReceivers(stack)[recIndex]; + IMagazine mag = rec.getMagazine(stack); + + mag.reloadAction(stack, ctx.inventory); + boolean cancel = ItemGunBaseNT.getReloadCancel(stack); + + //if after reloading the gun can still reload, assume a tube mag and resume reloading + if(!cancel && mag.canReload(stack, ctx.inventory)) { + ItemGunBaseNT.setState(stack, gunIndex, GunState.RELOADING); + ItemGunBaseNT.setTimer(stack, gunIndex, rec.getReloadCycleDuration(stack)); + ItemGunBaseNT.playAnimation(player, stack, AnimType.RELOAD_CYCLE, gunIndex); + //if no more reloading can be done, go idle + } else { + + if(getStandardJamChance(stack, cfg, gunIndex) > entity.getRNG().nextFloat()) { + ItemGunBaseNT.setState(stack, gunIndex, GunState.JAMMED); + ItemGunBaseNT.setTimer(stack, gunIndex, rec.getJamDuration(stack)); + ItemGunBaseNT.playAnimation(player, stack, AnimType.JAMMED, gunIndex); + } else { + ItemGunBaseNT.setState(stack, gunIndex, GunState.DRAWING); + int duration = rec.getReloadEndDuration(stack) + (mag.getAmountBeforeReload(stack) <= 0 ? rec.getReloadCockOnEmptyPost(stack) : 0); + ItemGunBaseNT.setTimer(stack, gunIndex, duration); + ItemGunBaseNT.playAnimation(player, stack, AnimType.RELOAD_END, gunIndex); + } + + ItemGunBaseNT.setReloadCancel(stack, false); + } + + mag.setAmountAfterReload(stack, mag.getAmount(stack, ctx.inventory)); + } + } + + public static float getStandardJamChance(ItemStack stack, GunConfig config, int index) { + float percent = (float) ItemGunBaseNT.getWear(stack, index) / config.getDurability(stack); + if(percent < 0.66F) return 0F; + return Math.min((percent - 0.66F) * 4F, 1F); + } + + /** Triggers a re-fire of the primary if the fire delay has expired, the left mouse button is down and re-firing is enabled, otherwise switches to IDLE */ + public static void deciderAutoRefire(ItemStack stack, LambdaContext ctx, GunState lastState, int recIndex, int gunIndex, BooleanSupplier refireCondition) { + + if(lastState == GunState.COOLDOWN) { + + EntityLivingBase entity = ctx.entity; + EntityPlayer player = ctx.getPlayer(); + GunConfig cfg = ctx.config; + Receiver rec = cfg.getReceivers(stack)[recIndex]; + + //if the gun supports re-fire (i.e. if it's an auto) + if(rec.getRefireOnHold(stack) && refireCondition.getAsBoolean()) { + //if there's a bullet loaded, fire again + if(rec.getCanFire(stack).apply(stack, ctx)) { + rec.getOnFire(stack).accept(stack, ctx); + ItemGunBaseNT.setState(stack, gunIndex, GunState.COOLDOWN); + ItemGunBaseNT.setTimer(stack, gunIndex, rec.getDelayAfterFire(stack)); + + if(rec.getFireSound(stack) != null) entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, rec.getFireSound(stack), rec.getFireVolume(stack), rec.getFirePitch(stack)); + + int remaining = rec.getRoundsPerCycle(stack) - 1; + for(int i = 0; i < remaining; i++) if(rec.getCanFire(stack).apply(stack, ctx)) rec.getOnFire(stack).accept(stack, ctx); + //if not, check if dry firing is allowed for refires + } else if(rec.getDoesDryFireAfterAuto(stack)) { + //if refire after dry is allowed, switch to COOLDOWN which will trigger a refire, otherwise switch to DRAWING + ItemGunBaseNT.setState(stack, gunIndex, rec.getRefireAfterDry(stack) ? GunState.COOLDOWN : GunState.DRAWING); + ItemGunBaseNT.setTimer(stack, gunIndex, rec.getDelayAfterDryFire(stack)); + ItemGunBaseNT.playAnimation(player, stack, AnimType.CYCLE_DRY, gunIndex); + //if not, revert to idle + } else { + ItemGunBaseNT.setState(stack, gunIndex, GunState.IDLE); + ItemGunBaseNT.setTimer(stack, gunIndex, 0); + } + //if not, go idle + } else { + + //reload on empty, only for non-refiring guns + if(rec.getReloadOnEmpty(stack) && rec.getMagazine(stack).getAmount(stack, ctx.inventory) <= 0) { + ItemGunBaseNT.setIsAiming(stack, false); + IMagazine mag = rec.getMagazine(stack); + + if(mag.canReload(stack, ctx.inventory)) { + int loaded = mag.getAmount(stack, ctx.inventory); + mag.setAmountBeforeReload(stack, loaded); + ItemGunBaseNT.setState(stack, ctx.configIndex, GunState.RELOADING); + ItemGunBaseNT.setTimer(stack, ctx.configIndex, rec.getReloadBeginDuration(stack) + (loaded <= 0 ? rec.getReloadCockOnEmptyPre(stack) : 0)); + ItemGunBaseNT.playAnimation(player, stack, AnimType.RELOAD, ctx.configIndex); + } else { + ItemGunBaseNT.setState(stack, gunIndex, GunState.IDLE); + ItemGunBaseNT.setTimer(stack, gunIndex, 0); + } + + } else { + ItemGunBaseNT.setState(stack, gunIndex, GunState.IDLE); + ItemGunBaseNT.setTimer(stack, gunIndex, 0); + } + } + } + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java new file mode 100644 index 000000000..693180de3 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java @@ -0,0 +1,319 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.List; +import java.util.Random; +import java.util.function.BiConsumer; +import java.util.function.BiFunction; + +import com.hbm.entity.projectile.EntityBulletBaseMK4; +import com.hbm.entity.projectile.EntityBulletBaseMK4CL; +import com.hbm.entity.projectile.EntityBulletBeamBase; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; +import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; +import com.hbm.interfaces.NotableComments; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.BulletConfig.ProjectileType; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.SmokeNode; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.mags.IMagazine; +import com.hbm.particle.helper.BlackPowderCreator; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; + +/** + * "LEGO" - i.e. standardized building blocks which can be used to set up gun configs easily. + * + * small update, 24/11/03: this turned into fucking spaghetti. fuuuuuuuck. + * + * @author hbm + */ +@NotableComments +public class Lego { + + public static final Random ANIM_RAND = new Random(); + + /** + * If IDLE and the mag of receiver 0 can be loaded, set state to RELOADING. Used by keybinds. */ + public static BiConsumer LAMBDA_STANDARD_RELOAD = (stack, ctx) -> { + + EntityPlayer player = ctx.getPlayer(); + Receiver rec = ctx.config.getReceivers(stack)[0]; + GunState state = ItemGunBaseNT.getState(stack, ctx.configIndex); + + if(state == GunState.IDLE) { + + ItemGunBaseNT.setIsAiming(stack, false); + IMagazine mag = rec.getMagazine(stack); + + if(mag.canReload(stack, ctx.inventory)) { + int loaded = mag.getAmount(stack, ctx.inventory); + mag.setAmountBeforeReload(stack, loaded); + ItemGunBaseNT.setState(stack, ctx.configIndex, GunState.RELOADING); + ItemGunBaseNT.setTimer(stack, ctx.configIndex, rec.getReloadBeginDuration(stack) + (loaded <= 0 ? rec.getReloadCockOnEmptyPre(stack) : 0)); + ItemGunBaseNT.playAnimation(player, stack, AnimType.RELOAD, ctx.configIndex); + } else { + ItemGunBaseNT.playAnimation(player, stack, AnimType.INSPECT, ctx.configIndex); + if(!ctx.config.getInspectCancel(stack)) { + ItemGunBaseNT.setState(stack, ctx.configIndex, GunState.DRAWING); + ItemGunBaseNT.setTimer(stack, ctx.configIndex, ctx.config.getInspectDuration(stack)); + } + } + } + }; + + /** If IDLE and ammo is loaded, fire and set to JUST_FIRED. */ + public static BiConsumer LAMBDA_STANDARD_CLICK_PRIMARY = (stack, ctx) -> { clickReceiver(stack, ctx, 0); }; + + public static void clickReceiver(ItemStack stack, LambdaContext ctx, int receiver) { + + EntityLivingBase entity = ctx.entity; + EntityPlayer player = ctx.getPlayer(); + Receiver rec = ctx.config.getReceivers(stack)[receiver]; + int index = ctx.configIndex; + GunState state = ItemGunBaseNT.getState(stack, index); + + if(state == GunState.IDLE) { + + if(rec.getCanFire(stack).apply(stack, ctx)) { + rec.getOnFire(stack).accept(stack, ctx); + + if(rec.getFireSound(stack) != null) + entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, rec.getFireSound(stack), rec.getFireVolume(stack), rec.getFirePitch(stack)); + + int remaining = rec.getRoundsPerCycle(stack) - 1; + for(int i = 0; i < remaining; i++) if(rec.getCanFire(stack).apply(stack, ctx)) rec.getOnFire(stack).accept(stack, ctx); + + ItemGunBaseNT.setState(stack, index, GunState.COOLDOWN); + ItemGunBaseNT.setTimer(stack, index, rec.getDelayAfterFire(stack)); + } else { + + if(rec.getDoesDryFire(stack)) { + ItemGunBaseNT.playAnimation(player, stack, AnimType.CYCLE_DRY, index); + ItemGunBaseNT.setState(stack, index, rec.getRefireAfterDry(stack) ? GunState.COOLDOWN : GunState.DRAWING); + ItemGunBaseNT.setTimer(stack, index, rec.getDelayAfterDryFire(stack)); + } + } + } + + if(state == GunState.RELOADING) { + ItemGunBaseNT.setReloadCancel(stack, true); + } + } + + /** If IDLE, switch mode between 0 and 1. */ + public static BiConsumer LAMBDA_STANDARD_CLICK_SECONDARY = (stack, ctx) -> { + + EntityLivingBase entity = ctx.entity; + int index = ctx.configIndex; + GunState state = ItemGunBaseNT.getState(stack, index); + + if(state == GunState.IDLE) { + int mode = ItemGunBaseNT.getMode(stack, 0); + ItemGunBaseNT.setMode(stack, index, 1 - mode); + if(mode == 0) + entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, "hbm:weapon.switchmode1", 1F, 1F); + else + entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, "hbm:weapon.switchmode2", 1F, 1F); + } + }; + + /** Default smoke. */ + public static BiConsumer LAMBDA_STANDARD_SMOKE = (stack, ctx) -> { + handleStandardSmoke(ctx.entity, stack, 2000, 0.025D, 1.15D, ctx.configIndex); + }; + + public static void handleStandardSmoke(EntityLivingBase entity, ItemStack stack, int smokeDuration, double alphaDecay, double widthGrowth, int index) { + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + long lastShot = gun.lastShot[index]; + List smokeNodes = gun.getConfig(stack, index).smokeNodes; + + boolean smoking = lastShot + smokeDuration > System.currentTimeMillis(); + if(!smoking && !smokeNodes.isEmpty()) smokeNodes.clear(); + + if(smoking) { + Vec3 prev = Vec3.createVectorHelper(-entity.motionX, -entity.motionY, -entity.motionZ); + prev.rotateAroundY((float) (entity.rotationYaw * Math.PI / 180D)); + double accel = 15D; + double side = (entity.rotationYaw - entity.prevRotationYawHead) * 0.1D; + double waggle = 0.025D; + + for(SmokeNode node : smokeNodes) { + node.forward += -prev.zCoord * accel + entity.worldObj.rand.nextGaussian() * waggle; + node.lift += prev.yCoord + 1.5D; + node.side += prev.xCoord * accel + entity.worldObj.rand.nextGaussian() * waggle + side; + if(node.alpha > 0) node.alpha -= alphaDecay; + node.width *= widthGrowth; + } + + double alpha = (System.currentTimeMillis() - lastShot) / (double) smokeDuration; + alpha = (1 - alpha) * 0.5D; + + if(gun.getState(stack, index) == GunState.RELOADING || smokeNodes.size() == 0) alpha = 0; + smokeNodes.add(new SmokeNode(alpha)); + } + } + + /** Toggles isAiming. Used by keybinds. */ + public static BiConsumer LAMBDA_TOGGLE_AIM = (stack, ctx) -> { ItemGunBaseNT.setIsAiming(stack, !ItemGunBaseNT.getIsAiming(stack)); }; + + /** Returns true if the mag has ammo in it. Used by keybind functions on whether to fire, and deciders on whether to trigger a refire. */ + public static BiFunction LAMBDA_STANDARD_CAN_FIRE = (stack, ctx) -> { return ctx.config.getReceivers(stack)[0].getMagazine(stack).getAmount(stack, ctx.inventory) > 0; }; + + /** Returns true if the mag has ammo in it, and the gun is in the locked on state */ + public static BiFunction LAMBDA_LOCKON_CAN_FIRE = (stack, ctx) -> { return ctx.config.getReceivers(stack)[0].getMagazine(stack).getAmount(stack, ctx.inventory) > 0 && ItemGunBaseNT.getIsLockedOn(stack); }; + + + + + /** JUMPER - bypasses mag testing and just allows constant fire */ + public static BiFunction LAMBDA_DEBUG_CAN_FIRE = (stack, ctx) -> { return true; }; + + /** Spawns an EntityBulletBaseMK4 with the loaded bulletcfg */ + public static BiConsumer LAMBDA_STANDARD_FIRE = (stack, ctx) -> { + doStandardFire(stack, ctx, AnimType.CYCLE, true); + }; + /** Spawns an EntityBulletBaseMK4 with the loaded bulletcfg, ignores wear */ + public static BiConsumer LAMBDA_NOWEAR_FIRE = (stack, ctx) -> { + doStandardFire(stack, ctx, AnimType.CYCLE, false); + }; + /** Spawns an EntityBulletBaseMK4 with the loaded bulletcfg, then resets lockon progress */ + public static BiConsumer LAMBDA_LOCKON_FIRE = (stack, ctx) -> { + doStandardFire(stack, ctx, AnimType.CYCLE, true); + ItemGunBaseNT.setIsLockedOn(stack, false); + }; + + public static void doStandardFire(ItemStack stack, LambdaContext ctx, AnimType anim, boolean calcWear) { + EntityLivingBase entity = ctx.entity; + EntityPlayer player = ctx.getPlayer(); + int index = ctx.configIndex; + if(anim != null) ItemGunBaseNT.playAnimation(player, stack, anim, ctx.configIndex); + + boolean aim = ItemGunBaseNT.getIsAiming(stack); + Receiver primary = ctx.config.getReceivers(stack)[0]; + IMagazine mag = primary.getMagazine(stack); + BulletConfig config = (BulletConfig) mag.getType(stack, ctx.inventory); + + Vec3 offset = ItemGunBaseNT.getIsAiming(stack) ? primary.getProjectileOffsetScoped(stack) : primary.getProjectileOffset(stack); + double forwardOffset = offset.xCoord; + double heightOffset = offset.yCoord; + double sideOffset = offset.zCoord; + + /*forwardOffset = 0.75; + heightOffset = -0.125; + sideOffset = -0.25D;*/ + + int projectiles = config.projectilesMin; + if(config.projectilesMax > config.projectilesMin) projectiles += entity.getRNG().nextInt(config.projectilesMax - config.projectilesMin + 1); + + for(int i = 0; i < projectiles; i++) { + float damage = calcDamage(ctx, stack, primary, calcWear, index); + float spread = calcSpread(ctx, stack, primary, config, calcWear, index, aim); + + if(config.pType == ProjectileType.BULLET) { + EntityBulletBaseMK4 mk4 = new EntityBulletBaseMK4(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); + if(ItemGunBaseNT.getIsLockedOn(stack)) mk4.lockonTarget = entity.worldObj.getEntityByID(ItemGunBaseNT.getLockonTarget(stack)); + if(i == 0 && config.blackPowder) BlackPowderCreator.composeEffect(entity.worldObj, mk4.posX, mk4.posY, mk4.posZ, mk4.motionX, mk4.motionY, mk4.motionZ, 10, 0.25F, 0.5F, 10, 0.25F); + entity.worldObj.spawnEntityInWorld(mk4); + } else if(config.pType == ProjectileType.BULLET_CHUNKLOADING) { + EntityBulletBaseMK4CL mk4 = new EntityBulletBaseMK4CL(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); + if(ItemGunBaseNT.getIsLockedOn(stack)) mk4.lockonTarget = entity.worldObj.getEntityByID(ItemGunBaseNT.getLockonTarget(stack)); + if(i == 0 && config.blackPowder) BlackPowderCreator.composeEffect(entity.worldObj, mk4.posX, mk4.posY, mk4.posZ, mk4.motionX, mk4.motionY, mk4.motionZ, 10, 0.25F, 0.5F, 10, 0.25F); + entity.worldObj.spawnEntityInWorld(mk4); + } else if(config.pType == ProjectileType.BEAM) { + EntityBulletBeamBase mk4 = new EntityBulletBeamBase(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); + entity.worldObj.spawnEntityInWorld(mk4); + } + } + + mag.useUpAmmo(stack, ctx.inventory, 1); + if(calcWear) ItemGunBaseNT.setWear(stack, index, Math.min(ItemGunBaseNT.getWear(stack, index) + config.wear, ctx.config.getDurability(stack))); + } + + public static float getStandardWearSpread(ItemStack stack, GunConfig config, int index) { + float percent = (float) ItemGunBaseNT.getWear(stack, index) / config.getDurability(stack); + if(percent < 0.5F) return 0F; + return (percent - 0.5F) * 2F; + } + + /** Returns the standard multiplier for damage based on wear */ + public static float getStandardWearDamage(ItemStack stack, GunConfig config, int index) { + float percent = (float) ItemGunBaseNT.getWear(stack, index) / config.getDurability(stack); + if(percent < 0.75F) return 1F; + return 1F - (percent - 0.75F) * 2F; + } + + /** Returns the full calculated damage based on guncfg and wear */ + public static float calcDamage(LambdaContext ctx, ItemStack stack, Receiver primary, boolean calcWear, int index) { + return primary.getBaseDamage(stack) * (calcWear ? getStandardWearDamage(stack, ctx.config, index) : 1); + } + + public static float calcSpread(LambdaContext ctx, ItemStack stack, Receiver primary, BulletConfig config, boolean calcWear, int index, boolean aim) { + // the gun's innate spread, SMGs will have poor accuracy no matter what + float spreadInnate = primary.getInnateSpread(stack); + // the ammo's spread (for example for buckshot) multiplied with the gun's ammo modifier (choke or sawed off barrel) + float spreadAmmo = config.spread * primary.getAmmoSpread(stack); + // hipfire penalty, i.e. extra spread when not aiming + float spreadHipfire = aim ? 0F : primary.getHipfireSpread(stack); + // extra spread caused by weapon durability, [0;0.125] by default + float spreadWear = !calcWear ? 0F : (getStandardWearSpread(stack, ctx.config, index) * primary.getDurabilitySpread(stack)); + + return spreadInnate + spreadAmmo + spreadHipfire + spreadWear; + } + + public static void standardExplode(EntityBulletBaseMK4 bullet, MovingObjectPosition mop, float range) { standardExplode(bullet, mop, range, 1F); } + public static void standardExplode(EntityBulletBaseMK4 bullet, MovingObjectPosition mop, float range, float damageMod) { + ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, range, bullet.getThrower()); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage * damageMod).setupPiercing(bullet.config.armorThresholdNegation, bullet.config.armorPiercingPercent)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F)); + vnt.explode(); + } + + /** anims for the DEBUG revolver, mostly a copy of the li'lpip but with some fixes regarding the cylinder movement */ + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_DEBUG_ANIMS = (stack, type) -> { + switch(type) { + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, 0, 50).addPos(0, 0, -3, 50).addPos(0, 0, 0, 250)) + .addBus("HAMMER", new BusAnimationSequence().addPos(0, 0, 1, 50).addPos(0, 0, 1, 400).addPos(0, 0, 0, 200)) + .addBus("DRUM", new BusAnimationSequence().addPos(0, 0, 0, 450).addPos(0, 0, 1, 200)); + case CYCLE_DRY: return new BusAnimation() + .addBus("HAMMER", new BusAnimationSequence().addPos(0, 0, 1, 50).addPos(0, 0, 1, 300 + 100).addPos(0, 0, 0, 200)) + .addBus("DRUM", new BusAnimationSequence().addPos(0, 0, 0, 450).addPos(0, 0, 1, 200)); + case EQUIP: return new BusAnimation().addBus("ROTATE", new BusAnimationSequence().addPos(-360, 0, 0, 350)); + case RELOAD: return new BusAnimation() + .addBus("RELAOD_TILT", new BusAnimationSequence().addPos(-15, 0, 0, 100).addPos(65, 0, 0, 100).addPos(45, 0, 0, 50).addPos(0, 0, 0, 200).addPos(0, 0, 0, 1450).addPos(-80, 0, 0, 100).addPos(-80, 0, 0, 100).addPos(0, 0, 0, 200)) + .addBus("RELOAD_CYLINDER", new BusAnimationSequence().addPos(0, 0, 0, 200).addPos(90, 0, 0, 100).addPos(90, 0, 0, 1700).addPos(0, 0, 0, 70)) + .addBus("RELOAD_LIFT", new BusAnimationSequence().addPos(0, 0, 0, 350).addPos(-45, 0, 0, 250).addPos(-45, 0, 0, 350).addPos(-15, 0, 0, 200).addPos(-15, 0, 0, 1050).addPos(0, 0, 0, 100)) + .addBus("RELOAD_JOLT", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(2, 0, 0, 50).addPos(0, 0, 0, 100)) + .addBus("RELOAD_BULLETS", new BusAnimationSequence().addPos(0, 0, 0, 650).addPos(10, 0, 0, 300).addPos(10, 0, 0, 200).addPos(0, 0, 0, 700)) + .addBus("RELOAD_BULLETS_CON", new BusAnimationSequence().addPos(1, 0, 0, 0).addPos(1, 0, 0, 950).addPos(0, 0, 0, 1 ) ); + case INSPECT: + case JAMMED: return new BusAnimation() + .addBus("RELAOD_TILT", new BusAnimationSequence().addPos(-15, 0, 0, 100).addPos(65, 0, 0, 100).addPos(45, 0, 0, 50).addPos(0, 0, 0, 200).addPos(0, 0, 0, 200).addPos(-80, 0, 0, 100).addPos(-80, 0, 0, 100).addPos(0, 0, 0, 200)) + .addBus("RELOAD_CYLINDER", new BusAnimationSequence().addPos(0, 0, 0, 200).addPos(90, 0, 0, 100).addPos(90, 0, 0, 450).addPos(0, 0, 0, 70)); + } + + return null; + }; + + /* + * Be honest. Do you genuinely think posting a random screenshot of your game with absolutely ZERO context of what modpack, what + * Shaders if any or literally any context at all would come to a magic solution? + * For all we know you accidentally rubbed Vaseline all over your monitor and jizzed in the hdmi socket of your pc + * + * ~ u/Wolfyy47_, 2024 + */ +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java new file mode 100644 index 000000000..10f124031 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java @@ -0,0 +1,397 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.function.BiConsumer; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.projectile.EntityBulletBaseMK4; +import com.hbm.entity.projectile.EntityBulletBeamBase; +import com.hbm.items.weapon.sedna.hud.HUDComponentAmmoCounter; +import com.hbm.items.weapon.sedna.hud.HUDComponentDurabilityBar; +import com.hbm.lib.RefStrings; +import com.hbm.main.ResourceManager; +import com.hbm.render.tileentity.RenderArcFurnace; +import com.hbm.render.util.BeamPronter; +import com.hbm.render.util.BeamPronter.EnumBeamType; +import com.hbm.render.util.BeamPronter.EnumWaveType; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.ActiveRenderInfo; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.entity.Entity; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; + +public class LegoClient { + + public static HUDComponentDurabilityBar HUD_COMPONENT_DURABILITY = new HUDComponentDurabilityBar(); + public static HUDComponentDurabilityBar HUD_COMPONENT_DURABILITY_MIRROR = new HUDComponentDurabilityBar(true); + public static HUDComponentAmmoCounter HUD_COMPONENT_AMMO = new HUDComponentAmmoCounter(0); + public static HUDComponentAmmoCounter HUD_COMPONENT_AMMO_MIRROR = new HUDComponentAmmoCounter(0).mirror(); + public static HUDComponentAmmoCounter HUD_COMPONENT_AMMO_NOCOUNTER = new HUDComponentAmmoCounter(0).noCounter(); + + public static BiConsumer RENDER_STANDARD_BULLET = (bullet, interp) -> { + double length = bullet.prevVelocity + (bullet.velocity - bullet.prevVelocity) * interp; + if(length <= 0) return; + renderBulletStandard(Tessellator.instance, 0xFFBF00, 0xFFFFFF, length, false); + }; + + public static BiConsumer RENDER_FLECHETTE_BULLET = (bullet, interp) -> { + double length = bullet.prevVelocity + (bullet.velocity - bullet.prevVelocity) * interp; + if(length <= 0) return; + renderBulletStandard(Tessellator.instance, 0x8C8C8C, 0xCACACA, length, false); + }; + + public static BiConsumer RENDER_AP_BULLET = (bullet, interp) -> { + double length = bullet.prevVelocity + (bullet.velocity - bullet.prevVelocity) * interp; + if(length <= 0) return; + renderBulletStandard(Tessellator.instance, 0xFF6A00, 0xFFE28D, length, false); + }; + + public static BiConsumer RENDER_EXPRESS_BULLET = (bullet, interp) -> { + double length = bullet.prevVelocity + (bullet.velocity - bullet.prevVelocity) * interp; + if(length <= 0) return; + renderBulletStandard(Tessellator.instance, 0x9E082E, 0xFF8A79, length, false); + }; + + public static BiConsumer RENDER_DU_BULLET = (bullet, interp) -> { + double length = bullet.prevVelocity + (bullet.velocity - bullet.prevVelocity) * interp; + if(length <= 0) return; + renderBulletStandard(Tessellator.instance, 0x5CCD41, 0xE9FF8D, length, false); + }; + + public static BiConsumer RENDER_TRACER_BULLET = (bullet, interp) -> { + double length = bullet.prevVelocity + (bullet.velocity - bullet.prevVelocity) * interp; + if(length <= 0) return; + renderBulletStandard(Tessellator.instance, 0x9E082E, 0xFF8A79, length, true); + }; + + public static BiConsumer RENDER_LEGENDARY_BULLET = (bullet, interp) -> { + double length = bullet.prevVelocity + (bullet.velocity - bullet.prevVelocity) * interp; + if(length <= 0) return; + renderBulletStandard(Tessellator.instance, 0x7F006E, 0xFF7FED, length, true); + }; + + public static void renderBulletStandard(Tessellator tess, int dark, int light, double length, boolean fullbright) { renderBulletStandard(tess, dark, light, length, 0.03125D, 0.03125D * 0.25D, fullbright); } + + public static void renderBulletStandard(Tessellator tess, int dark, int light, double length, double widthF, double widthB, boolean fullbright) { + + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glColor4f(1F, 1F, 1F, 1F); + + tess.startDrawingQuads(); + if(fullbright) tess.setBrightness(240); + tess.setNormal(0F, 1F, 0F); + tess.setColorOpaque_I(dark); + tess.addVertex(length, widthB, -widthB); tess.addVertex(length, widthB, widthB); + tess.setColorOpaque_I(light); + tess.addVertex(0, widthF, widthF); tess.addVertex(0, widthF, -widthF); + tess.setColorOpaque_I(dark); + tess.addVertex(length, -widthB, -widthB); tess.addVertex(length, -widthB, widthB); + tess.setColorOpaque_I(light); + tess.addVertex(0, -widthF, widthF); tess.addVertex(0, -widthF, -widthF); + tess.setColorOpaque_I(dark); + tess.addVertex(length, -widthB, widthB); tess.addVertex(length, widthB, widthB); + tess.setColorOpaque_I(light); + tess.addVertex(0, widthF, widthF); tess.addVertex(0, -widthF, widthF); + tess.setColorOpaque_I(dark); + tess.addVertex(length, -widthB, -widthB); tess.addVertex(length, widthB, -widthB); + tess.setColorOpaque_I(light); + tess.addVertex(0, widthF, -widthF); tess.addVertex(0, -widthF, -widthF); + tess.setColorOpaque_I(dark); + tess.addVertex(length, widthB, widthB); tess.addVertex(length, widthB, -widthB); + tess.addVertex(length, -widthB, -widthB); tess.addVertex(length, -widthB, widthB); + tess.setColorOpaque_I(light); + tess.addVertex(0, widthF, widthF); tess.addVertex(0, widthF, -widthF); + tess.addVertex(0, -widthF, -widthF); tess.addVertex(0, -widthF, widthF); + tess.draw(); + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_TEXTURE_2D); + } + + public static BiConsumer RENDER_FLARE = (bullet, interp) -> { renderFlare(bullet, interp, 1F, 0.5F, 0.5F); }; + public static BiConsumer RENDER_FLARE_SUPPLY = (bullet, interp) -> { renderFlare(bullet, interp, 0.5F, 0.5F, 1F); }; + public static BiConsumer RENDER_FLARE_WEAPON = (bullet, interp) -> { renderFlare(bullet, interp, 0.5F, 1F, 0.5F); }; + + private static final ResourceLocation flare = new ResourceLocation(RefStrings.MODID + ":textures/particle/flare.png"); + public static void renderFlare(Entity bullet, float interp, float r, float g, float b) { + + if(bullet.ticksExisted < 2) return; + RenderArcFurnace.fullbright(true); + + double scale = Math.min(5, (bullet.ticksExisted + interp - 2) * 0.5) * (0.8 + bullet.worldObj.rand.nextDouble() * 0.4); + renderFlareSprite(bullet, interp, r, g, b, scale, 0.5F, 0.75F); + + RenderArcFurnace.fullbright(false); + } + public static void renderFlareSprite(Entity bullet, float interp, float r, float g, float b, double scale, float outerAlpha, float innerAlpha) { + + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glAlphaFunc(GL11.GL_GREATER, 0); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glDepthMask(false); + RenderHelper.disableStandardItemLighting(); + + Minecraft.getMinecraft().getTextureManager().bindTexture(flare); + + Tessellator tess = Tessellator.instance; + tess.startDrawingQuads(); + + float f1 = ActiveRenderInfo.rotationX; + float f2 = ActiveRenderInfo.rotationZ; + float f3 = ActiveRenderInfo.rotationYZ; + float f4 = ActiveRenderInfo.rotationXY; + float f5 = ActiveRenderInfo.rotationXZ; + + double posX = 0; + double posY = 0; + double posZ = 0; + + tess.setColorRGBA_F(r, g, b, outerAlpha); + tess.addVertexWithUV((double) (posX - f1 * scale - f3 * scale), (double) (posY - f5 * scale), (double) (posZ - f2 * scale - f4 * scale), 1, 1); + tess.addVertexWithUV((double) (posX - f1 * scale + f3 * scale), (double) (posY + f5 * scale), (double) (posZ - f2 * scale + f4 * scale), 1, 0); + tess.addVertexWithUV((double) (posX + f1 * scale + f3 * scale), (double) (posY + f5 * scale), (double) (posZ + f2 * scale + f4 * scale), 0, 0); + tess.addVertexWithUV((double) (posX + f1 * scale - f3 * scale), (double) (posY - f5 * scale), (double) (posZ + f2 * scale - f4 * scale), 0, 1); + + scale *= 0.5D; + + tess.setColorRGBA_F(1F, 1F, 1F, innerAlpha); + tess.addVertexWithUV((double) (posX - f1 * scale - f3 * scale), (double) (posY - f5 * scale), (double) (posZ - f2 * scale - f4 * scale), 1, 1); + tess.addVertexWithUV((double) (posX - f1 * scale + f3 * scale), (double) (posY + f5 * scale), (double) (posZ - f2 * scale + f4 * scale), 1, 0); + tess.addVertexWithUV((double) (posX + f1 * scale + f3 * scale), (double) (posY + f5 * scale), (double) (posZ + f2 * scale + f4 * scale), 0, 0); + tess.addVertexWithUV((double) (posX + f1 * scale - f3 * scale), (double) (posY - f5 * scale), (double) (posZ + f2 * scale - f4 * scale), 0, 1); + + tess.draw(); + + GL11.glDepthMask(true); + GL11.glEnable(GL11.GL_ALPHA_TEST); + RenderHelper.enableStandardItemLighting(); + GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + GL11.glDisable(GL11.GL_BLEND); + GL11.glPopMatrix(); + } + + public static BiConsumer RENDER_GRENADE = (bullet, interp) -> { + GL11.glScalef(0.25F, 0.25F, 0.25F); + GL11.glRotated(90, 0, 0, 1); + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.grenade_tex); + ResourceManager.projectiles.renderPart("Grenade"); + GL11.glShadeModel(GL11.GL_FLAT); + }; + + public static BiConsumer RENDER_BIG_NUKE = (bullet, interp) -> { + GL11.glScalef(0.5F, 0.5F, 0.5F); + GL11.glRotated(90, 0, 0, 1); + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.rocket_mirv_tex); + ResourceManager.projectiles.renderPart("MissileMIRV"); + GL11.glShadeModel(GL11.GL_FLAT); + }; + + public static BiConsumer RENDER_RPZB = (bullet, interp) -> { + + GL11.glPushMatrix(); + GL11.glScalef(0.125F, 0.125F, 0.125F); + GL11.glRotated(90, 0, -1, 0); + GL11.glTranslatef(0, 0, 3.5F); + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.panzerschreck_tex); + ResourceManager.panzerschreck.renderPart("Rocket"); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glPopMatrix(); + + GL11.glTranslatef(0.375F, 0, 0); + double length = bullet.prevVelocity + (bullet.velocity - bullet.prevVelocity) * interp; + if(length > 0) renderBulletStandard(Tessellator.instance, 0x808080, 0xFFF2A7, length * 2, true); + }; + + public static BiConsumer RENDER_QD = (bullet, interp) -> { + + GL11.glPushMatrix(); + GL11.glRotated(90, 0, 0, 1); + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.rocket_tex); + ResourceManager.projectiles.renderPart("Rocket"); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glPopMatrix(); + + GL11.glTranslatef(0.375F, 0, 0); + double length = bullet.prevVelocity + (bullet.velocity - bullet.prevVelocity) * interp; + if(length > 0) renderBulletStandard(Tessellator.instance, 0x808080, 0xFFF2A7, length * 2, true); + }; + + public static BiConsumer RENDER_ML = (bullet, interp) -> { + + GL11.glPushMatrix(); + GL11.glScalef(0.25F, 0.25F, 0.25F); + GL11.glRotated(-90, 0, 1, 0); + GL11.glTranslatef(0, -1, -4.5F); + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.missile_launcher_tex); + ResourceManager.missile_launcher.renderPart("Missile"); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glPopMatrix(); + + GL11.glTranslatef(0.375F, 0, 0); + double length = bullet.prevVelocity + (bullet.velocity - bullet.prevVelocity) * interp; + if(length > 0) renderBulletStandard(Tessellator.instance, 0x808080, 0xFFF2A7, length * 2, true); + }; + + public static BiConsumer RENDER_LIGHTNING = (bullet, interp) -> { + + RenderArcFurnace.fullbright(true); + GL11.glPushMatrix(); + GL11.glRotatef(180 - bullet.rotationYaw, 0, 1F, 0); + GL11.glRotatef(-bullet.rotationPitch - 90, 1F, 0, 0); + Vec3 delta = Vec3.createVectorHelper(0, bullet.beamLength, 0); + double age = MathHelper.clamp_double(1D - ((double) bullet.ticksExisted - 2 + interp) / (double) bullet.getBulletConfig().expires, 0, 1); + GL11.glScaled(age / 2 + 0.5, 1, age / 2 + 0.5); + double scale = 0.075D; + int colorInner = ((int)(0x20 * age) << 16) | ((int)(0x20 * age) << 8) | (int) (0x40 * age); + int colorOuter = ((int)(0x40 * age) << 16) | ((int)(0x40 * age) << 8) | (int) (0x80 * age); + BeamPronter.prontBeam(delta, EnumWaveType.RANDOM, EnumBeamType.SOLID, colorInner, colorInner, bullet.ticksExisted / 3, (int)(bullet.beamLength / 2 + 1), (float)scale * 1F, 4, 0.25F); + BeamPronter.prontBeam(delta, EnumWaveType.RANDOM, EnumBeamType.SOLID, colorOuter, colorOuter, bullet.ticksExisted, (int)(bullet.beamLength / 2 + 1), (float)scale * 7F, 2, 0.0625F); + BeamPronter.prontBeam(delta, EnumWaveType.RANDOM, EnumBeamType.SOLID, colorOuter, colorOuter, bullet.ticksExisted / 2, (int)(bullet.beamLength / 2 + 1), (float)scale * 7F, 2, 0.0625F); + GL11.glPopMatrix(); + RenderArcFurnace.fullbright(false); + }; + + public static BiConsumer RENDER_TAU = (bullet, interp) -> { + + RenderArcFurnace.fullbright(true); + double age = MathHelper.clamp_double(1D - ((double) bullet.ticksExisted - 2 + interp) / (double) bullet.getBulletConfig().expires, 0, 1); + + GL11.glPushMatrix(); + GL11.glRotatef(180 - bullet.rotationYaw, 0, 1F, 0); + GL11.glRotatef(-bullet.rotationPitch - 90, 1F, 0, 0); + + GL11.glPushMatrix(); + Vec3 delta = Vec3.createVectorHelper(0, bullet.beamLength, 0); + GL11.glScaled(age / 2 + 0.5, 1, age / 2 + 0.5); + double scale = 0.075D; + int colorInner = ((int)(0x30 * age) << 16) | ((int)(0x25 * age) << 8) | (int) (0x10 * age); + BeamPronter.prontBeam(delta, EnumWaveType.RANDOM, EnumBeamType.SOLID, colorInner, colorInner, (bullet.ticksExisted + bullet.getEntityId()) / 2, (int)(bullet.beamLength / 2 + 1), (float)scale * 4F, 2, 0.0625F); + GL11.glPopMatrix(); + + GL11.glScaled(age * 2, 1, age * 2); + GL11.glTranslated(0, bullet.beamLength, 0); + GL11.glRotatef(-90, 0, 0, 1); + renderBulletStandard(Tessellator.instance, 0xFFBF00, 0xFFFFFF, bullet.beamLength, true); + + GL11.glPopMatrix(); + RenderArcFurnace.fullbright(false); + }; + + public static BiConsumer RENDER_TAU_CHARGE = (bullet, interp) -> { + + RenderArcFurnace.fullbright(true); + double age = MathHelper.clamp_double(1D - ((double) bullet.ticksExisted - 2 + interp) / (double) bullet.getBulletConfig().expires, 0, 1); + + GL11.glPushMatrix(); + GL11.glRotatef(180 - bullet.rotationYaw, 0, 1F, 0); + GL11.glRotatef(-bullet.rotationPitch - 90, 1F, 0, 0); + + GL11.glPushMatrix(); + Vec3 delta = Vec3.createVectorHelper(0, bullet.beamLength, 0); + GL11.glScaled(age / 2 + 0.5, 1, age / 2 + 0.5); + double scale = 0.075D; + int colorInner = ((int)(0x60 * age) << 16) | ((int)(0x50 * age) << 8) | (int) (0x30 * age); + BeamPronter.prontBeam(delta, EnumWaveType.RANDOM, EnumBeamType.SOLID, colorInner, colorInner, (bullet.ticksExisted + bullet.getEntityId()) / 2, (int)(bullet.beamLength / 2 + 1), (float)scale * 4F, 2, 0.0625F); + GL11.glPopMatrix(); + + GL11.glScaled(age * 2, 1, age * 2); + GL11.glTranslated(0, bullet.beamLength, 0); + GL11.glRotatef(-90, 0, 0, 1); + renderBulletStandard(Tessellator.instance, 0xFFF0A0, 0xFFFFFF, bullet.beamLength, true); + + GL11.glPopMatrix(); + RenderArcFurnace.fullbright(false); + }; + + public static BiConsumer RENDER_LASER_RED = (bullet, interp) -> { + renderStandardLaser(bullet, interp, 0x80, 0x15, 0x15); + }; + public static BiConsumer RENDER_LASER_CYAN = (bullet, interp) -> { + renderStandardLaser(bullet, interp, 0x15, 0x15, 0x80); + }; + public static BiConsumer RENDER_LASER_PURPLE = (bullet, interp) -> { + renderStandardLaser(bullet, interp, 0x60, 0x15, 0x80); + }; + + public static void renderStandardLaser(EntityBulletBeamBase bullet, float interp, int r, int g, int b) { + + RenderArcFurnace.fullbright(true); + GL11.glPushMatrix(); + GL11.glRotatef(180 - bullet.rotationYaw, 0, 1F, 0); + GL11.glRotatef(-bullet.rotationPitch - 90, 1F, 0, 0); + Vec3 delta = Vec3.createVectorHelper(0, bullet.beamLength, 0); + double age = MathHelper.clamp_double(1D - ((double) bullet.ticksExisted - 2 + interp) / (double) bullet.getBulletConfig().expires, 0, 1); + GL11.glScaled(age / 2 + 0.5, 1, age / 2 + 0.5); + int colorInner = ((int)(r * age) << 16) | ((int)(g * age) << 8) | (int) (b * age); + BeamPronter.prontBeam(delta, EnumWaveType.RANDOM, EnumBeamType.SOLID, colorInner, colorInner, bullet.ticksExisted / 3, (int)(bullet.beamLength / 2 + 1), 0F, 8, 0.0625F); + GL11.glPopMatrix(); + RenderArcFurnace.fullbright(false); + } + + public static BiConsumer RENDER_FOLLY = (bullet, interp) -> { + + double age = MathHelper.clamp_double(1D - ((double) bullet.ticksExisted - 2 + interp) / (double) bullet.getBulletConfig().expires, 0, 1); + RenderArcFurnace.fullbright(true); + + GL11.glPushMatrix(); + renderFlareSprite(bullet, interp, 1F, 1F, 1F, (1 - age) * 7.5 + 1.5, 0.5F * (float) age, 0.75F * (float) age); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glAlphaFunc(GL11.GL_GREATER, 0); + GL11.glRotatef(180 - bullet.rotationYaw, 0, 1F, 0); + GL11.glRotatef(-bullet.rotationPitch - 90, 1F, 0, 0); + Vec3 delta = Vec3.createVectorHelper(0, bullet.beamLength, 0); + GL11.glScaled((1 - age) * 25 + 2.5, 1, (1 - age) * 25 + 2.5); + int colorInner = ((int)(0x20 * age) << 16) | ((int)(0x20 * age) << 8) | (int) (0x20 * age); + BeamPronter.prontBeam(delta, EnumWaveType.RANDOM, EnumBeamType.SOLID, colorInner, colorInner, bullet.ticksExisted / 3, (int)(bullet.beamLength / 2 + 1), 0F, 8, 0.0625F); + GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + GL11.glDisable(GL11.GL_BLEND); + GL11.glPopMatrix(); + + RenderArcFurnace.fullbright(false); + }; + + public static BiConsumer RENDER_NUKE = (bullet, interp) -> { + + GL11.glPushMatrix(); + GL11.glScalef(0.125F, 0.125F, 0.125F); + GL11.glRotated(-90, 0, 1, 0); + GL11.glTranslatef(0, -1, 1F); + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.fatman_mininuke_tex); + ResourceManager.fatman.renderPart("MiniNuke"); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glPopMatrix(); + }; + + public static BiConsumer RENDER_HIVE = (bullet, interp) -> { + + GL11.glPushMatrix(); + GL11.glScalef(0.125F, 0.125F, 0.125F); + GL11.glRotated(90, 0, -1, 0); + GL11.glTranslatef(0, 0, 3.5F); + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.panzerschreck_tex); + ResourceManager.panzerschreck.renderPart("Rocket"); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glPopMatrix(); + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java new file mode 100644 index 000000000..1f1ba45d3 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java @@ -0,0 +1,1280 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.function.BiConsumer; + +import com.hbm.config.ClientConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.impl.ItemGunStinger; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.mags.IMagazine; +import com.hbm.lib.ModDamageSource; +import com.hbm.main.MainRegistry; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.helper.CasingCreator; +import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.sound.AudioWrapper; +import com.hbm.util.EntityDamageUtil; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.block.Block; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MovingObjectPosition; + +/** Orchestras are server-side components that run along client-side animations. + * The orchestra only knows what animation is or was playing and how long it started, but not if it is still active. + * Orchestras are useful for things like playing server-side sound, spawning casings or sending particle packets.*/ +public class Orchestras { + + public static BiConsumer DEBUG_ORCHESTRA = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.RELOAD) { + if(timer == 3) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 1F); + if(timer == 10) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 1F); + if(timer == 34) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallInsert", 1F, 1F); + if(timer == 40) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + + if(timer == 16) { + Receiver rec = ctx.config.getReceivers(stack)[0]; + IMagazine mag = rec.getMagazine(stack); + SpentCasing casing = mag.getCasing(stack, ctx.inventory); + if(casing != null) for(int i = 0; i < mag.getCapacity(stack); i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.25, -0.125, -0.125, -0.05, 0, 0, 0.01, casing.getName()); + } + } + if(type == AnimType.CYCLE) { + if(timer == 11) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 1F); + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 11) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 1F); + } + if(type == AnimType.INSPECT) { + if(timer == 3) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 1F); + if(timer == 16) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_PEPPERBOX = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.RELOAD) { + if(timer == 24) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallInsert", 1F, 1F); + if(timer == 55) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverSpin", 1F, 1F); + } + if(type == AnimType.CYCLE) { + if(timer == 21) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.6F); + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 0.8F); + if(timer == 11) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.6F); + } + if(type == AnimType.INSPECT) { + if(timer == 3) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverSpin", 1F, 1F); + } + if(type == AnimType.JAMMED) { + if(timer == 28) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 0.75F); + if(timer == 45) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 0.6F); + } + }; + + public static BiConsumer ORCHESTRA_ATLAS = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.RELOAD) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 1F); + if(timer == 36) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallInsert", 1F, 1F); + if(timer == 44) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + if(type == AnimType.CYCLE) { + if(timer == 14) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.9F); + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 14) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.9F); + } + if(type == AnimType.INSPECT) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 1F); + if(timer == 24) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + if(type == AnimType.JAMMED) { + if(timer == 12) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 1F); + if(timer == 34) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_DANI = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.RELOAD) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 1F); + if(timer == 36) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallInsert", 1F, 1F); + if(timer == 44) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + if(type == AnimType.CYCLE) { + if(timer == 9) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.9F); + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 9) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.9F); + } + if(type == AnimType.INSPECT) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 1F); + if(timer == 24) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + if(type == AnimType.JAMMED) { + if(timer == 12) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 1F); + if(timer == 34) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_HENRY = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(type == AnimType.RELOAD) { + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 1F); + if(timer == 16) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallInsert", 1F, 1F); + } + if(type == AnimType.RELOAD_CYCLE) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallInsert", 1F, 1F); + } + if(type == AnimType.RELOAD_END) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 0.9F); + if(timer == 12 && ctx.config.getReceivers(stack)[0].getMagazine(stack).getAmountBeforeReload(stack) <= 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 1F); + } + if(type == AnimType.JAMMED) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 0.9F); + if(timer == 12) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 1F); + if(timer == 36) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 1F); + if(timer == 44) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 1F); + } + if(type == AnimType.CYCLE) { + if(timer == 14) { + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.5, -0.125, aiming ? -0.125 : -0.375D, 0, 0.12, -0.12, 0.01, casing.getName(), true, 60, 0.5D, 20); + } + if(timer == 12) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 1F); + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 12) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_GREASEGUN = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(type == AnimType.EQUIP) { + if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.openLatch", 1F, 1F); + } + if(type == AnimType.CYCLE) { + if(timer == 2) { + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.55, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + } + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 0.8F); + if(timer == 11) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 0.8F); + + } + if(type == AnimType.RELOAD) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 24) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + if(timer == 36) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 0.8F); + } + if(type == AnimType.INSPECT) { + if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.8F); + if(timer == 26) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallInsert", 1F, 1.25F); + } + if(type == AnimType.JAMMED) { + if(timer == 11) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 0.8F); + if(timer == 26) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 0.8F); + } + }; + + public static BiConsumer ORCHESTRA_MARESLEG = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(type == AnimType.RELOAD) { + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.8F); + if(timer == 16) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.shotgunReload", 1F, 1F); + } + if(type == AnimType.RELOAD_CYCLE) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.shotgunReload", 1F, 1F); + } + if(type == AnimType.RELOAD_END) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.7F); + } + if(type == AnimType.JAMMED) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.7F); + if(timer == 17) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 0.8F); + if(timer == 29) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 0.8F); + } + if(type == AnimType.CYCLE) { + if(timer == 14) { + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, -0.125, aiming ? -0.125 : -0.375D, 0, 0.18, -0.12, 0.01, casing.getName(), true, 60, 0.5D, 20); + } + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 0.8F); + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 0.8F); + } + }; + + public static BiConsumer ORCHESTRA_MARESLEG_SHORT = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(type == AnimType.RELOAD) { + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.8F); + if(timer == 16) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.shotgunReload", 1F, 1F); + } + if(type == AnimType.RELOAD_CYCLE) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.shotgunReload", 1F, 1F); + } + if(type == AnimType.RELOAD_END) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.7F); + } + if(type == AnimType.JAMMED) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.7F); + if(timer == 17) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 0.8F); + if(timer == 29) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 0.8F); + } + if(type == AnimType.CYCLE) { + if(timer == 14) { + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, -0.125, aiming ? -0.125 : -0.375D, 0, -0.08, 0, 0.01, casing.getName(), true, 60, 0.5D, 20); + } + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 0.8F); + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 0.8F); + } + }; + + public static BiConsumer ORCHESTRA_MARESLEG_AKIMBO = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(type == AnimType.CYCLE) { + if(timer == 14) { + int offset = ctx.configIndex == 0 ? -1 : 1; + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, -0.125, aiming ? -0.125 * offset : -0.375D * offset, 0, -0.08, 0, 0.01, casing.getName(), true, 60, 0.5D, 20); + } + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 0.8F); + return; + } + + ORCHESTRA_MARESLEG_SHORT.accept(stack, ctx); + }; + + public static BiConsumer ORCHESTRA_FLAREGUN = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(type == AnimType.RELOAD) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 0.8F); + if(timer == 4) { + IMagazine mag = ctx.config.getReceivers(stack)[0].getMagazine(stack); + if(mag.getAmountAfterReload(stack) > 0) { + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, -0.125, aiming ? -0.125 : -0.375D, -0.12, 0.18, 0, 0.01, casing.getName(), true, 60, 0.5D, 20); + mag.setAmountBeforeReload(stack, 0); + } + } + if(timer == 16) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.insertCanister", 1F, 1F); + if(timer == 24) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallInsert", 1F, 1F); + } + if(type == AnimType.JAMMED) { + if(timer == 10) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 0.8F); + if(timer == 29) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallInsert", 1F, 1F); + } + if(type == AnimType.CYCLE) { + if(timer == 12) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 1F); + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 12) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_NOPIP = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.RELOAD) { + if(timer == 3) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 1F); + if(timer == 10) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 1F); + if(timer == 34) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallInsert", 1F, 1F); + if(timer == 40) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + + if(timer == 16) { + Receiver rec = ctx.config.getReceivers(stack)[0]; + IMagazine mag = rec.getMagazine(stack); + SpentCasing casing = mag.getCasing(stack, ctx.inventory); + if(casing != null) for(int i = 0; i < mag.getCapacity(stack); i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.25, -0.125, -0.125, -0.05, 0, 0, 0.01, casing.getName()); + } + } + if(type == AnimType.CYCLE) { + if(timer == 11) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 1F); + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 11) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 1F); + } + if(type == AnimType.INSPECT) { + if(timer == 3) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 1F); + if(timer == 16) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_CARBIBE = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(type == AnimType.CYCLE) { + if(timer == 2) { + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.06, 0.01, casing.getName(), true, 60, 0.5D, 20); + } + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 0.8F); + } + if(type == AnimType.RELOAD) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 26) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + } + if(type == AnimType.RELOAD_END) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 0.8F); + } + if(type == AnimType.JAMMED) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 0.8F); + if(timer == 31) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 0.8F); + } + if(type == AnimType.INSPECT) { + if(timer == 6) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + if(timer == 30) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.9F); + } + }; + + public static BiConsumer ORCHESTRA_AM180 = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(ClientConfig.GUN_ANIMS_LEGACY.get()) { + if(type == AnimType.CYCLE) { + if(timer == 0) { + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.4375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, -0.06, 0, 0.01, casing.getName()); + } + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 6) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 0.9F); + } + if(type == AnimType.RELOAD) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 20) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.impact", 0.25F, 1F); + if(timer == 32) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + if(timer == 40) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 0.9F); + } + if(type == AnimType.JAMMED) { + if(timer == 15) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 0.8F); + } + if(type == AnimType.INSPECT) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 35) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + } + } else { + if(type == AnimType.CYCLE) { + if(timer == 0) { + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.4375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, -0.06, 0, 0.01, casing.getName()); + } + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 6) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 0.9F); + } + if(type == AnimType.RELOAD) { + if(timer == 6) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 26) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.impact", 0.25F, 1F); + if(timer == 48) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + if(timer == 54) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 0.9F); + } + if(type == AnimType.JAMMED) { + if(timer == 6) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 0.8F); + if(timer == 20) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 1.0F); + } + if(type == AnimType.INSPECT) { + if(timer == 6) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 53) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + } + } + }; + + public static BiConsumer ORCHESTRA_LIBERATOR = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.RELOAD) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.75F); + if(timer == 4) { + IMagazine mag = ctx.config.getReceivers(stack)[0].getMagazine(stack); + int toEject = mag.getAmountAfterReload(stack) - mag.getAmount(stack, ctx.inventory); + SpentCasing casing = mag.getCasing(stack, ctx.inventory); + if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, casing.getName(), true, 60, 0.5D, 20); + } + if(timer == 15) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallInsert", 1F, 1F); + } + if(type == AnimType.RELOAD_CYCLE) { + if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallInsert", 1F, 1F); + } + if(type == AnimType.RELOAD_END) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.9F); + } + if(type == AnimType.JAMMED) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.9F); + if(timer == 12) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.75F); + if(timer == 26) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.9F); + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + } + if(type == AnimType.INSPECT) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.75F); + IMagazine mag = ctx.config.getReceivers(stack)[0].getMagazine(stack); + int toEject = mag.getAmountAfterReload(stack) - mag.getAmount(stack, ctx.inventory); + if(timer == 4 && toEject > 0) { + SpentCasing casing = mag.getCasing(stack, ctx.inventory); + if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, casing.getName(), true, 60, 0.5D, 20); + mag.setAmountAfterReload(stack, 0); + } + if(timer == 20) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.9F); + } + }; + + public static BiConsumer ORCHESTRA_CONGOLAKE = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(type == AnimType.CYCLE) { + if(timer == 15) { + IMagazine mag = ctx.config.getReceivers(stack)[0].getMagazine(stack); + SpentCasing casing = mag.getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, aiming ? -0.0625 : -0.25, aiming ? 0 : -0.375D, 0, 0.18, 0.12, 0.01, casing.getName(), true, 60, 0.5D, 20); + } + } + if(type == AnimType.RELOAD || type == AnimType.RELOAD_CYCLE) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.glReload", 1F, 1F); + } + if(type == AnimType.INSPECT) { + if(timer == 9) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.glOpen", 1F, 1F); + if(timer == 27) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.glClose", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_FLAMER = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.CYCLE && entity.worldObj.isRemote) { + AudioWrapper runningAudio = ItemGunBaseNT.loopedSounds.get(entity); + + if(timer < 5) { + //start sound + if(runningAudio == null || !runningAudio.isPlaying()) { + AudioWrapper audio = MainRegistry.proxy.getLoopedSound("hbm:weapon.fire.flameLoop", (float) entity.posX, (float) entity.posY, (float) entity.posZ, 1F, 15F, 1F, 10); + ItemGunBaseNT.loopedSounds.put(entity, audio); + audio.startSound(); + } + //keepalive + if(runningAudio != null && runningAudio.isPlaying()) { + runningAudio.keepAlive(); + runningAudio.updatePosition((float) entity.posX, (float) entity.posY, (float) entity.posZ); + } + } else { + //stop sound due to timeout + if(runningAudio != null && runningAudio.isPlaying()) runningAudio.stopSound(); + } + } + //stop sound due to state change + if(type != AnimType.CYCLE && entity.worldObj.isRemote) { + AudioWrapper runningAudio = ItemGunBaseNT.loopedSounds.get(entity); + if(runningAudio != null && runningAudio.isPlaying()) runningAudio.stopSound(); + } + if(entity.worldObj.isRemote) return; + + if(type == AnimType.RELOAD) { + if(timer == 15) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.openLatch", 1F, 1F); + if(timer == 35) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.impact", 0.5F, 1F); + if(timer == 60) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.75F); + if(timer == 70) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.insertCanister", 1F, 1F); + if(timer == 85) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pressureValve", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_FLAMER_DAYBREAKER = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.RELOAD) { + if(timer == 15) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.openLatch", 1F, 1F); + if(timer == 35) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.impact", 0.5F, 1F); + if(timer == 60) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.75F); + if(timer == 70) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.insertCanister", 1F, 1F); + if(timer == 85) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pressureValve", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_LAG = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(type == AnimType.CYCLE) { + if(timer == 1) { + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.0625, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + } + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 1F); + + } + if(type == AnimType.RELOAD) { + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 26) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + if(timer == 40) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 1F); + } + if(type == AnimType.JAMMED) { + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 20) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.impact", 0.5F, 1.6F); + if(timer == 36) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_UZI = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(type == AnimType.EQUIP) { + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.openLatch", 1F, 1.25F); + } + if(type == AnimType.CYCLE) { + if(timer == 1) { + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + } + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 1F); + + } + if(type == AnimType.RELOAD) { + if(timer == 4) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 26) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + if(timer == 36) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 1F); + } + if(type == AnimType.JAMMED) { + if(timer == 17) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 1F); + if(timer == 31) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_UZI_AKIMBO = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.EQUIP) { + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.openLatch", 1F, 1.25F); + } + if(type == AnimType.CYCLE) { + if(timer == 1) { + int mult = ctx.configIndex == 0 ? -1 : 1; + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, -0.125, -0.375D * mult, 0, 0.18, -0.12 * mult, 0.01, casing.getName()); + } + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 1F); + + } + if(type == AnimType.RELOAD) { + if(timer == 4) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 26) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + if(timer == 36) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 1F); + } + if(type == AnimType.JAMMED) { + if(timer == 17) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 1F); + if(timer == 31) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_SPAS = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(type == AnimType.CYCLE || type == AnimType.ALT_CYCLE) { + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.shotgunCock", 1F, 1F); + if(timer == 10) { + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + } + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.shotgunCock", 1F, 1F); + } + if(type == AnimType.RELOAD) { + IMagazine mag = ctx.config.getReceivers(stack)[0].getMagazine(stack); + if(mag.getAmount(stack, ctx.inventory) == 0) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 1F); + if(timer == 7) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.shotgunReload", 1F, 1F); + } + if(type == AnimType.RELOAD_CYCLE) { + if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.shotgunReload", 1F, 1F); + } + if(type == AnimType.INSPECT) { + if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.shotgunCockOpen", 1F, 1F); + if(timer == 18) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.shotgunCockClose", 1F, 1F); + } + if(type == AnimType.JAMMED) { + if(timer == 18) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.foley.gunWhack", 1F, 1F); + if(timer == 25) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.foley.gunWhack", 1F, 1F); + if(timer == 29) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.shotgunCockClose", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_PANERSCHRECK = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.RELOAD) { + if(timer == 30) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.insertCanister", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_G3 = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(type == AnimType.CYCLE) { + if(timer == 0) { + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.5, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + } + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 0.8F); + if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 0.9F); + + } + if(type == AnimType.RELOAD) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 4) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.9F); + if(timer == 32) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + if(timer == 36) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + if(type == AnimType.INSPECT) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 28) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + } + if(type == AnimType.JAMMED) { + if(timer == 16) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.9F); + if(timer == 20) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + if(timer == 24) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.9F); + if(timer == 28) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_STINGER = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + AudioWrapper runningAudio = ItemGunBaseNT.loopedSounds.get(entity); + if(ItemGunStinger.getLockonProgress(stack) > 0 && !ItemGunStinger.getIsLockedOn(stack)) { + //start sound + if(runningAudio == null || !runningAudio.isPlaying()) { + AudioWrapper audio = MainRegistry.proxy.getLoopedSound("hbm:weapon.fire.lockon", (float) entity.posX, (float) entity.posY, (float) entity.posZ, 1F, 15F, 1F, 10); + ItemGunBaseNT.loopedSounds.put(entity, audio); + audio.startSound(); + } + //keepalive + if(runningAudio != null && runningAudio.isPlaying()) { + runningAudio.keepAlive(); + runningAudio.updatePosition((float) entity.posX, (float) entity.posY, (float) entity.posZ); + } + } else { + //stop sound due to timeout + if(runningAudio != null && runningAudio.isPlaying()) runningAudio.stopSound(); + } + + if(type == AnimType.RELOAD) { + if(timer == 30) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.insertCanister", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_CHEMTHROWER = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.CYCLE && entity.worldObj.isRemote) { + AudioWrapper runningAudio = ItemGunBaseNT.loopedSounds.get(entity); + + if(timer < 5) { + //start sound + if(runningAudio == null || !runningAudio.isPlaying()) { + AudioWrapper audio = MainRegistry.proxy.getLoopedSound("hbm:weapon.fire.flameLoop", (float) entity.posX, (float) entity.posY, (float) entity.posZ, 1F, 15F, 1F, 10); + ItemGunBaseNT.loopedSounds.put(entity, audio); + audio.startSound(); + } + //keepalive + if(runningAudio != null && runningAudio.isPlaying()) { + runningAudio.keepAlive(); + runningAudio.updatePosition((float) entity.posX, (float) entity.posY, (float) entity.posZ); + } + } else { + //stop sound due to timeout + if(runningAudio != null && runningAudio.isPlaying()) runningAudio.stopSound(); + } + } + //stop sound due to state change + if(type != AnimType.CYCLE && entity.worldObj.isRemote) { + AudioWrapper runningAudio = ItemGunBaseNT.loopedSounds.get(entity); + if(runningAudio != null && runningAudio.isPlaying()) runningAudio.stopSound(); + } + }; + + public static BiConsumer ORCHESTRA_M2 = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(type == AnimType.EQUIP) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:turret.howard_reload", 1F, 1F); + } + + if(type == AnimType.CYCLE) { + if(timer == 0) { + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? 0 : -0.3125D, 0, 0.06, -0.18, 0.01, casing.getName()); + } + } + }; + + public static BiConsumer ORCHESTRA_SHREDDER = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.CYCLE) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.fire.shredderCycle", 0.25F, 1.5F); + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.fire.shredderCycle", 0.25F, 1.5F); + } + if(type == AnimType.RELOAD) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 32) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + } + if(type == AnimType.INSPECT) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 28) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_SHREDDER_SEXY = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.CYCLE) { + if(timer == 0 && ctx.config.getReceivers(stack)[0].getMagazine(stack).getType(stack, null) == XFactory12ga.g12_equestrian_bj) { + ItemGunBaseNT.setTimer(stack, 0, 20); + } + } + + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + } + if(type == AnimType.RELOAD) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 32) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + } + if(type == AnimType.INSPECT) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 28) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_QUADRO = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.RELOAD) { + if(timer == 30) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.insertCanister", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_MINIGUN = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(type == AnimType.CYCLE) { + if(timer == 0) { + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, aiming ? 0.125 : 0.5, aiming ? -0.125 : -0.25, aiming ? -0.25 : -0.5D, 0, 0.18, -0.12, 0.01, casing.getName()); + } + if(timer == 1) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverSpin", 1F, 0.75F); + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 0.75F); + if(timer == 1) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverSpin", 1F, 0.75F); + } + if(type == AnimType.RELOAD) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverSpin", 1F, 0.75F); + } + if(type == AnimType.INSPECT) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverSpin", 1F, 0.75F); + } + }; + + public static BiConsumer ORCHESTRA_MISSILE_LAUNCHER = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1.25F); + } + if(type == AnimType.RELOAD) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltOpen", 1F, 0.9F); + if(timer == 30) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.insertCanister", 1F, 1F); + if(timer == 42) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltClose", 1F, 0.9F); + } + + if(type == AnimType.JAMMED || type == AnimType.INSPECT) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltOpen", 1F, 0.9F); + if(timer == 27) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltClose", 1F, 0.9F); + } + }; + + public static BiConsumer ORCHESTRA_TESLA = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.CYCLE) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.fire.shredderCycle", 0.25F, 1.25F); + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.fire.shredderCycle", 0.25F, 1.25F); + } + if(type == AnimType.INSPECT) { + if(timer == 12) entity.worldObj.playSoundAtEntity(entity, "hbm:block.squeakyToy", 0.25F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_STG77 = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(ClientConfig.GUN_ANIMS_LEGACY.get()) { + if(type == AnimType.CYCLE) { + if(timer == 0) { + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, aiming ? 0.125 : 0.125, aiming ? -0.125 : -0.25, aiming ? -0.125 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + } + if(timer == 40) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 0.25F, 1.25F); + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 0.8F); + if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 0.9F); + if(timer == 40) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 0.25F, 1.25F); + } + if(type == AnimType.RELOAD) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.9F); + if(timer == 10) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 24) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + if(timer == 34) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + if(type == AnimType.INSPECT) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.9F); + if(timer == 10) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 1F); + + if(timer == 114) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallInsert", 1F, 1F); + if(timer == 124) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + } else { + if(type == AnimType.CYCLE) { + if(timer == 0) { + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, aiming ? 0.125 : 0.25, aiming ? -0.125 : -0.25, aiming ? -0.125 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + } + if(timer == 40) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 0.25F, 1.25F); + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 0.8F); + if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 0.9F); + if(timer == 40) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 0.25F, 1.25F); + } + if(type == AnimType.RELOAD) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.9F); + if(timer == 16) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 32) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.impact", 0.25F, 1.25F); + if(timer == 38) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + if(timer == 43) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + if(type == AnimType.INSPECT) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.9F); + if(timer == 11) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 1F); + + if(timer == 72) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallInsert", 1F, 1F); + if(timer == 84) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + } + }; + + public static BiConsumer ORCHESTRA_TAU = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.SPINUP && entity.worldObj.isRemote) { + AudioWrapper runningAudio = ItemGunBaseNT.loopedSounds.get(entity); + + if(timer < 300) { + if(runningAudio == null || !runningAudio.isPlaying()) { + AudioWrapper audio = MainRegistry.proxy.getLoopedSound("hbm:weapon.fire.tauLoop", (float) entity.posX, (float) entity.posY, (float) entity.posZ, 1F, 15F, 0.75F, 10); + audio.updatePitch(0.75F); + ItemGunBaseNT.loopedSounds.put(entity, audio); + audio.startSound(); + } + if(runningAudio != null && runningAudio.isPlaying()) { + runningAudio.keepAlive(); + runningAudio.updatePosition((float) entity.posX, (float) entity.posY, (float) entity.posZ); + runningAudio.updatePitch(0.75F + timer * 0.01F); + } + } else { + if(runningAudio != null && runningAudio.isPlaying()) runningAudio.stopSound(); + } + } + //stop sound due to state change + if(type != AnimType.SPINUP && entity.worldObj.isRemote) { + AudioWrapper runningAudio = ItemGunBaseNT.loopedSounds.get(entity); + if(runningAudio != null && runningAudio.isPlaying()) runningAudio.stopSound(); + } + if(entity.worldObj.isRemote) return; + + if(type == AnimType.CYCLE) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.fire.tau", 0.5F, 0.9F + entity.getRNG().nextFloat() * 0.2F); + } + + if(type == AnimType.ALT_CYCLE) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.fire.tau", 0.5F, 0.7F + entity.getRNG().nextFloat() * 0.2F); + } + + if(type == AnimType.SPINUP) { + if(timer % 10 == 0 && timer < 130) { + IMagazine mag = ctx.config.getReceivers(stack)[0].getMagazine(stack); + if(mag.getAmount(stack, ctx.inventory) <= 0) { + ItemGunBaseNT.playAnimation(ctx.getPlayer(), stack, AnimType.CYCLE_DRY, ctx.configIndex); + return; + } + mag.useUpAmmo(stack, ctx.inventory, 1); + } + + if(timer > 200) { + ItemGunBaseNT.playAnimation(ctx.getPlayer(), stack, AnimType.CYCLE_DRY, ctx.configIndex); + + entity.attackEntityFrom(ModDamageSource.tauBlast, 1_000F); + + ItemGunBaseNT.setWear(stack, ctx.configIndex, Math.min(ItemGunBaseNT.getWear(stack, ctx.configIndex) + 10_000F, ctx.config.getDurability(stack))); + + entity.worldObj.playSoundEffect(entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ, "hbm:entity.ufoBlast", 5.0F, 0.9F); + entity.worldObj.playSoundEffect(entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ, "fireworks.blast", 5.0F, 0.5F); + + float yaw = entity.worldObj.rand.nextFloat() * 180F; + for(int i = 0; i < 3; i++) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "plasmablast"); + data.setFloat("r", 1.0F); + data.setFloat("g", 0.8F); + data.setFloat("b", 0.5F); + data.setFloat("pitch", -60F + 60F * i); + data.setFloat("yaw", yaw); + data.setFloat("scale", 2F); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ), + new TargetPoint(entity.dimension, entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ, 100)); + } + } + } + }; + + public static BiConsumer ORCHESTRA_FATMAN = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.RELOAD) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.fatmanFull", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_LASRIFLE = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1.5F); + } + + if(type == AnimType.RELOAD) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 1F); + if(timer == 18) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.impact", 0.25F, 1F); + if(timer == 30) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + if(timer == 38) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + + if(type == AnimType.INSPECT) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 1F); + if(timer == 12) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + if(timer == 20) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + + if(type == AnimType.JAMMED) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 1F); + if(timer == 22) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + if(timer == 30) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_COILGUN = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.RELOAD) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.coilgunReload", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_HANGMAN = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + } + + if(type == AnimType.RELOAD) { + + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.8F); + if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 0.8F); + if(timer == 25) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + if(timer == 35) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.75F); + + if(timer == 10) { + Receiver rec = ctx.config.getReceivers(stack)[0]; + IMagazine mag = rec.getMagazine(stack); + SpentCasing casing = mag.getCasing(stack, ctx.inventory); + if(casing != null) for(int i = 0; i < mag.getCapacity(stack); i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.25, -0.25, -0.125, -0.05, 0, 0, 0.01, casing.getName()); + } + } + + if(type == AnimType.INSPECT) { + if(timer == 16 && ctx.getPlayer() != null) { + MovingObjectPosition mop = EntityDamageUtil.getMouseOver(ctx.getPlayer(), 3.0D); + if(mop != null) { + if(mop.typeOfHit == mop.typeOfHit.ENTITY) { + float damage = 10F; + mop.entityHit.attackEntityFrom(DamageSource.causePlayerDamage(ctx.getPlayer()), damage); + mop.entityHit.motionX *= 2; + mop.entityHit.motionZ *= 2; + entity.worldObj.playSoundAtEntity(mop.entityHit, "hbm:weapon.fire.smack", 1F, 0.9F + entity.getRNG().nextFloat() * 0.2F); + } + if(mop.typeOfHit == mop.typeOfHit.BLOCK) { + Block b = entity.worldObj.getBlock(mop.blockX, mop.blockY, mop.blockZ); + entity.worldObj.playSoundEffect(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, b.stepSound.getStepResourcePath(), 2F, 0.9F + entity.getRNG().nextFloat() * 0.2F); + } + } + } + } + + if(type == AnimType.JAMMED) { + if(timer == 10) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.8F); + if(timer == 15) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallRemove", 1F, 0.8F); + if(timer == 20) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + if(timer == 25) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.75F); + } + }; + + public static BiConsumer ORCHESTRA_BOLTER = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(type == AnimType.CYCLE) { + if(timer == 1) { + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.5, aiming ? 0 : -0.125, aiming ? -0.0625 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + } + } + + if(type == AnimType.RELOAD) { + if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magRemove", 1F, 1F); + if(timer == 26) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magInsert", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_FOLLY = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.RELOAD) { + if(timer == 20) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.screw", 1F, 1F); + if(timer == 80) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.insertRocket", 1F, 1F); + if(timer == 120) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.screw", 1F, 1F); + } + }; + + public static BiConsumer ORCHESTRA_DOUBLE_BARREL = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(type == AnimType.RELOAD) { + if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.75F); + if(timer == 19) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallInsert", 1F, 0.9F); + if(timer == 29) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.8F); + + if(timer == 12) { + IMagazine mag = ctx.config.getReceivers(stack)[0].getMagazine(stack); + int toEject = mag.getAmountAfterReload(stack) - mag.getAmount(stack, ctx.inventory); + SpentCasing casing = mag.getCasing(stack, ctx.inventory); + if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(entity.worldObj, entity, 0, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, casing.getName(), true, 60, 0.5D, 20); + } + } + + if(type == AnimType.INSPECT) { + if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverCock", 1F, 0.75F); + if(timer == 19) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.8F); + } + + if(type == AnimType.CYCLE_DRY) { + if(timer == 2) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 1F); + } + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory10ga.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory10ga.java new file mode 100644 index 000000000..3cfd53c12 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory10ga.java @@ -0,0 +1,133 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.function.BiConsumer; +import java.util.function.BiFunction; + +import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumCasingType; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.mags.MagazineFullReload; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.BusAnimationKeyframe.IType; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import net.minecraft.item.ItemStack; + +public class XFactory10ga { + + public static BulletConfig g10; + public static BulletConfig g10_shrapnel; + public static BulletConfig g10_du; + public static BulletConfig g10_slug; + + public static void init() { + + g10 = new BulletConfig().setItem(EnumAmmo.G10).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 4).setProjectiles(10).setDamage(1F/10F).setSpread(0.05F).setRicochetAngle(15).setThresholdNegation(5F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xB52B2B, SpentCasing.COLOR_CASE_12GA).setScale(1F).register("10GA")); + g10_shrapnel = new BulletConfig().setItem(EnumAmmo.G10_SHRAPNEL).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 4).setProjectiles(10).setDamage(1F/10F).setSpread(0.05F).setRicochetAngle(90).setRicochetCount(15).setThresholdNegation(5F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xE5DD00, SpentCasing.COLOR_CASE_12GA).setScale(1F).register("10GAShrapnel")); + g10_du = new BulletConfig().setItem(EnumAmmo.G10_DU).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 4).setProjectiles(10).setDamage(1F/4F).setSpread(0.05F).setRicochetAngle(15).setThresholdNegation(10F).setArmorPiercing(0.2F).setDoesPenetrate(true).setDamageFalloutByPen(false).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x538D53, SpentCasing.COLOR_CASE_12GA).setScale(1F).register("10GADU")); + g10_slug = new BulletConfig().setItem(EnumAmmo.G10_SLUG).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 4).setRicochetAngle(15).setThresholdNegation(10F).setArmorPiercing(0.1F).setDoesPenetrate(true).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x808080, SpentCasing.COLOR_CASE_12GA).setScale(1F).register("10GASlug")); + + ModItems.gun_double_barrel = new ItemGunBaseNT(WeaponQuality.SPECIAL, new GunConfig() + .dura(1000).draw(10).inspect(39).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(30F).rounds(2).delay(10).reload(41).reloadOnEmpty(true).sound("hbm:weapon.fire.shotgun", 1.0F, 0.9F) + .mag(new MagazineFullReload(0, 2).addConfigs(g10, g10_shrapnel, g10_du, g10_slug)) + .offset(0.75, -0.0625, -0.1875) + .setupStandardFire().recoil(LAMBDA_RECOIL_DOUBLE_BARREL)) + .setupStandardConfiguration() + .anim(LAMBDA_DOUBLE_BARREL_ANIMS).orchestra(Orchestras.ORCHESTRA_DOUBLE_BARREL) + ).setUnlocalizedName("gun_double_barrel"); + ModItems.gun_double_barrel_sacred_dragon = new ItemGunBaseNT(WeaponQuality.B_SIDE, new GunConfig() + .dura(6000).draw(10).inspect(39).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(45F).spreadAmmo(1.35F).rounds(2).delay(10).reload(41).reloadOnEmpty(true).sound("hbm:weapon.fire.shotgun", 1.0F, 0.9F) + .mag(new MagazineFullReload(0, 2).addConfigs(g10, g10_shrapnel, g10_du, g10_slug)) + .offset(0.75, -0.0625, -0.1875) + .setupStandardFire().recoil(LAMBDA_RECOIL_DOUBLE_BARREL)) + .setupStandardConfiguration() + .anim(LAMBDA_DOUBLE_BARREL_ANIMS).orchestra(Orchestras.ORCHESTRA_DOUBLE_BARREL) + ).setUnlocalizedName("gun_double_barrel_sacred_dragon"); + } + + public static BiConsumer LAMBDA_RECOIL_DOUBLE_BARREL = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil(10, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5)); + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_DOUBLE_BARREL_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(-60, 0, 0, 0).addPos(0, 0, -3, 500, IType.SIN_DOWN)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, -1, 50).addPos(0, 0, 0, 250)) + .addBus("BUCKLE", new BusAnimationSequence().addPos(0, -60, 0, 50).addPos(0, 0, 0, 250)); + case RELOAD: return new BusAnimation() + .addBus("TURN", new BusAnimationSequence() + .addPos(0, 30, 0, 350, IType.SIN_FULL) + .addPos(0, 30, 0, 1150) + .addPos(0, 0, 0, 350, IType.SIN_FULL)) + .addBus("LEVER", new BusAnimationSequence() + .addPos(0, 0, 0, 250) + .addPos(0, 0, -90, 100, IType.SIN_FULL) + .addPos(0, 0, -90, 1300) + .addPos(0, 0, 0, 100, IType.SIN_FULL)) + .addBus("BARREL", new BusAnimationSequence() + .addPos(0, 0, 0, 300) + .addPos(60, 0, 0, 150, IType.SIN_UP) + .addPos(60, 0, 0, 1150) + .addPos(0, 0, 0, 150, IType.SIN_UP)) + .addBus("LIFT", new BusAnimationSequence() + .addPos(0, 0, 0, 350) + .addPos(-5, 0, 0, 150, IType.SIN_FULL) + .addPos(0, 0, 0, 100, IType.SIN_FULL) + .addPos(0, 0, 0, 700) + .addPos(-5, 0, 0, 100, IType.SIN_FULL) + .addPos(0, 0, 0, 100, IType.SIN_UP) //1500 + .addPos(45, 0, 0, 150) + .addPos(45, 0, 0, 150) + .addPos(-5, 0, 0, 150, IType.SIN_DOWN) + .addPos(0, 0, 0, 100, IType.SIN_FULL)) //2050 + .addBus("SHELLS", new BusAnimationSequence() + .addPos(0, 0, 0, 450) + .addPos(0, 0, -2.5, 100) + .addPos(0, -5, -5, 350, IType.SIN_DOWN) + .addPos(0, -3, -2, 0) + .addPos(0, 0, -2, 250) + .addPos(0, 0, 0, 150, IType.SIN_UP)) //1300 + .addBus("SHELL_FLIP", new BusAnimationSequence().addPos(0, 0, 0, 450).addPos(-360, 0, 0, 450).addPos(0, 0, 0, 0)); + case INSPECT: return new BusAnimation() + .addBus("LEVER", new BusAnimationSequence() + .addPos(0, 0, 0, 250) + .addPos(0, 0, -90, 100, IType.SIN_FULL) + .addPos(0, 0, -90, 800) + .addPos(0, 0, 0, 100, IType.SIN_FULL)) + .addBus("BARREL", new BusAnimationSequence() + .addPos(0, 0, 0, 300) + .addPos(60, 0, 0, 150, IType.SIN_UP) + .addPos(60, 0, 0, 650) + .addPos(0, 0, 0, 150, IType.SIN_UP)) + .addBus("LIFT", new BusAnimationSequence() + .addPos(0, 0, 0, 350) + .addPos(-5, 0, 0, 150, IType.SIN_FULL) + .addPos(0, 0, 0, 100, IType.SIN_FULL) + .addPos(0, 0, 0, 200) + .addPos(-5, 0, 0, 100, IType.SIN_FULL) + .addPos(0, 0, 0, 100, IType.SIN_UP) //1500 + .addPos(45, 0, 0, 150) + .addPos(45, 0, 0, 150) + .addPos(-5, 0, 0, 150, IType.SIN_DOWN) + .addPos(0, 0, 0, 100, IType.SIN_FULL)); + } + + return null; + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java new file mode 100644 index 000000000..3afc84c3c --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java @@ -0,0 +1,654 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.List; +import java.util.function.BiConsumer; +import java.util.function.BiFunction; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.bomb.BlockDetonatable; +import com.hbm.entity.projectile.EntityBulletBaseMK4; +import com.hbm.entity.projectile.EntityDuchessGambit; +import com.hbm.extprop.HbmLivingProps; +import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumCasingType; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; +import com.hbm.items.weapon.sedna.mags.MagazineBelt; +import com.hbm.items.weapon.sedna.mags.MagazineFullReload; +import com.hbm.items.weapon.sedna.mags.MagazineSingleReload; +import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.BusAnimationKeyframe.IType; +import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.BobMathUtil; +import com.hbm.util.TrackerUtil; +import com.hbm.util.Vec3NT; +import com.hbm.util.DamageResistanceHandler.DamageClass; +import com.hbm.util.EntityDamageUtil; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraft.world.WorldServer; +import net.minecraftforge.common.util.ForgeDirection; + +public class XFactory12ga { + + public static BulletConfig g12_bp; + public static BulletConfig g12_bp_magnum; + public static BulletConfig g12_bp_slug; + public static BulletConfig g12; + public static BulletConfig g12_slug; + public static BulletConfig g12_flechette; + public static BulletConfig g12_magnum; + public static BulletConfig g12_explosive; + public static BulletConfig g12_phosphorus; + public static BulletConfig g12_anthrax; + public static BulletConfig g12_equestrian_bj; + public static BulletConfig g12_equestrian_tkr; + + public static BulletConfig g12_shredder; + public static BulletConfig g12_shredder_slug; + public static BulletConfig g12_shredder_flechette; + public static BulletConfig g12_shredder_magnum; + public static BulletConfig g12_shredder_explosive; + public static BulletConfig g12_shredder_phosphorus; + + public static BulletConfig g12_sub; + public static BulletConfig g12_sub_slug; + public static BulletConfig g12_sub_flechette; + public static BulletConfig g12_sub_magnum; + public static BulletConfig g12_sub_explosive; + public static BulletConfig g12_sub_phosphorus; + + public static BiConsumer LAMBDA_STANDARD_EXPLODE = (bullet, mop) -> { + Lego.standardExplode(bullet, mop, 2F); bullet.setDead(); + }; + + public static BiConsumer LAMBDA_BOAT = (bullet, mop) -> { + EntityDuchessGambit pippo = new EntityDuchessGambit(bullet.worldObj); + pippo.posX = mop.hitVec.xCoord; + pippo.posY = mop.hitVec.yCoord + 50; + pippo.posZ = mop.hitVec.zCoord;; + bullet.worldObj.spawnEntityInWorld(pippo); + bullet.worldObj.playSoundEffect(pippo.posX, pippo.posY + 50, pippo.posZ, "hbm:weapon.boat", 100F, 1F); + bullet.setDead(); + }; + + public static BulletConfig makeShredderConfig(BulletConfig original, BulletConfig submunition) { + BulletConfig cfg = new BulletConfig().setBeam().setRenderRotations(false).setLife(5).setDamage(original.damageMult * original.projectilesMax).setupDamageClass(DamageClass.LASER); + cfg.setItem(original.ammo); + cfg.setCasing(original.casing); + cfg.setOnBeamImpact((beam, mop) -> { + + int projectiles = submunition.projectilesMin; + if(submunition.projectilesMax > submunition.projectilesMin) projectiles += beam.worldObj.rand.nextInt(submunition.projectilesMax - submunition.projectilesMin + 1); + + if(mop.typeOfHit == mop.typeOfHit.BLOCK) { + + ForgeDirection dir = ForgeDirection.getOrientation(mop.sideHit); + + mop.hitVec.xCoord += dir.offsetX * 0.1; + mop.hitVec.yCoord += dir.offsetY * 0.1; + mop.hitVec.zCoord += dir.offsetZ * 0.1; + + spawnPulse(beam.worldObj, mop, beam.rotationYaw, beam.rotationPitch); + + List blast = beam.worldObj.getEntitiesWithinAABBExcludingEntity(beam, AxisAlignedBB.getBoundingBox(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord).expand(0.75, 0.75, 0.75)); + DamageSource source = BulletConfig.getDamage(beam, beam.getThrower(), DamageClass.LASER); + + for(Entity e : blast) { + if(!e.isEntityAlive()) continue; + if(e instanceof EntityLivingBase) { + EntityDamageUtil.attackEntityFromNT((EntityLivingBase) e, source, beam.damage, true, false, 0D, 0F, 0F); + if(!e.isEntityAlive()) ConfettiUtil.decideConfetti((EntityLivingBase) e, source); + } else { + e.attackEntityFrom(source, beam.damage); + } + } + + for(int i = 0; i < projectiles; i++) { + EntityBulletBaseMK4 bullet = new EntityBulletBaseMK4(beam.worldObj, beam.thrower, submunition, beam.damage * submunition.damageMult, 0.2F, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, dir.offsetX, dir.offsetY, dir.offsetZ); + bullet.worldObj.spawnEntityInWorld(bullet); + } + } + + if(mop.typeOfHit == mop.typeOfHit.ENTITY) { + + spawnPulse(beam.worldObj, mop, beam.rotationYaw, beam.rotationPitch); + + for(int i = 0; i < projectiles; i++) { + Vec3NT vec = new Vec3NT(beam.worldObj.rand.nextGaussian(), beam.worldObj.rand.nextGaussian(), beam.worldObj.rand.nextGaussian()).normalizeSelf(); + EntityBulletBaseMK4 bullet = new EntityBulletBaseMK4(beam.worldObj, beam.thrower, submunition, beam.damage * submunition.damageMult, 0.2F, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, vec.xCoord, vec.yCoord, vec.zCoord); + bullet.worldObj.spawnEntityInWorld(bullet); + } + } + }); + return cfg; + } + + public static BulletConfig makeShredderSubmunition(BulletConfig original) { + BulletConfig cfg = original.clone(); + cfg.setRicochetAngle(90).setRicochetCount(3).setVel(0.5F).setLife(50).setupDamageClass(DamageClass.LASER).setOnRicochet(LAMBDA_SHREDDER_RICOCHET); + return cfg; + } + + //this sucks + public static BiConsumer LAMBDA_SHREDDER_RICOCHET = (bullet, mop) -> { + + if(mop.typeOfHit == mop.typeOfHit.BLOCK) { + + Block b = bullet.worldObj.getBlock(mop.blockX, mop.blockY, mop.blockZ); + if(b.getMaterial() == Material.glass) { + bullet.worldObj.func_147480_a(mop.blockX, mop.blockY, mop.blockZ, false); + bullet.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + return; + } + if(b instanceof BlockDetonatable) { + ((BlockDetonatable) b).onShot(bullet.worldObj, mop.blockX, mop.blockY, mop.blockZ); + } + if(b == ModBlocks.deco_crt) { + int meta = bullet.worldObj.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ); + bullet.worldObj.setBlockMetadataWithNotify(mop.blockX, mop.blockY, mop.blockZ, meta % 4 + 4, 3); + } + + ForgeDirection dir = ForgeDirection.getOrientation(mop.sideHit); + Vec3 face = Vec3.createVectorHelper(dir.offsetX, dir.offsetY, dir.offsetZ); + Vec3 vel = Vec3.createVectorHelper(bullet.motionX, bullet.motionY, bullet.motionZ).normalize(); + + double angle = Math.abs(BobMathUtil.getCrossAngle(vel, face) - 90); + + if(angle <= bullet.config.ricochetAngle) { + + spawnPulse(bullet.worldObj, mop, bullet.rotationYaw, bullet.rotationPitch); + + List blast = bullet.worldObj.getEntitiesWithinAABBExcludingEntity(bullet, AxisAlignedBB.getBoundingBox(bullet.posX, bullet.posY, bullet.posZ, bullet.posX, bullet.posY, bullet.posZ).expand(0.5, 0.5, 0.5)); + DamageSource source = BulletConfig.getDamage(bullet, bullet.getThrower(), DamageClass.LASER); + + for(Entity e : blast) { + if(!e.isEntityAlive()) continue; + if(e instanceof EntityLivingBase) { + EntityDamageUtil.attackEntityFromNT((EntityLivingBase) e, source, bullet.damage, true, false, 0D, 0F, 0F); + if(!e.isEntityAlive()) ConfettiUtil.decideConfetti((EntityLivingBase) e, source); + } else { + e.attackEntityFrom(source, bullet.damage); + } + } + + bullet.ricochets++; + if(bullet.ricochets > bullet.config.maxRicochetCount) { + bullet.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + bullet.setDead(); + } + + switch(mop.sideHit) { + case 0: case 1: bullet.motionY *= -1; break; + case 2: case 3: bullet.motionZ *= -1; break; + case 4: case 5: bullet.motionX *= -1; break; + } + bullet.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + //send a teleport so the ricochet is more accurate instead of the interp smoothing fucking everything up + if(bullet.worldObj instanceof WorldServer) TrackerUtil.sendTeleport((WorldServer) bullet.worldObj, bullet); + return; + + } else { + bullet.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + bullet.setDead(); + } + } + }; + + public static void spawnPulse(World world, MovingObjectPosition mop, float yaw, float pitch) { + + double x = mop.hitVec.xCoord; + double y = mop.hitVec.yCoord; + double z = mop.hitVec.zCoord; + + if(mop.typeOfHit == mop.typeOfHit.BLOCK) { + if(mop.sideHit == ForgeDirection.UP.ordinal()) { yaw = 0F; pitch = 0F; } + if(mop.sideHit == ForgeDirection.DOWN.ordinal()) { yaw = 0F; pitch = 0F; } + if(mop.sideHit == ForgeDirection.NORTH.ordinal()) { yaw = 0F; pitch = 90F; } + if(mop.sideHit == ForgeDirection.SOUTH.ordinal()) { yaw = 180F; pitch = 90F; } + if(mop.sideHit == ForgeDirection.EAST.ordinal()) { yaw = 90F; pitch = 90F; } + if(mop.sideHit == ForgeDirection.WEST.ordinal()) { yaw = 270F; pitch = 90F; } + + ForgeDirection dir = ForgeDirection.getOrientation(mop.sideHit); + + x += dir.offsetX * 0.05; + y += dir.offsetY * 0.05; + z += dir.offsetZ * 0.05; + } + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "plasmablast"); + data.setFloat("r", 0.5F); + data.setFloat("g", 0.5F); + data.setFloat("b", 1.0F); + data.setFloat("pitch", pitch); + data.setFloat("yaw", yaw); + data.setFloat("scale", 0.75F); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(world.provider.dimensionId, x, y, z, 100)); + } + + public static void init() { + + g12_bp = new BulletConfig().setItem(EnumAmmo.G12_BP).setCasing(EnumCasingType.SHOTSHELL, 12).setBlackPowder(true).setProjectiles(8).setDamage(0.75F/8F).setSpread(0.05F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP")); + g12_bp_magnum = new BulletConfig().setItem(EnumAmmo.G12_BP_MAGNUM).setCasing(EnumCasingType.SHOTSHELL, 12).setBlackPowder(true).setProjectiles(4).setDamage(0.75F/4F).setSpread(0.05F).setRicochetAngle(25).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP_MAGNUM")); + g12_bp_slug = new BulletConfig().setItem(EnumAmmo.G12_BP_SLUG).setCasing(EnumCasingType.SHOTSHELL, 12).setBlackPowder(true).setDamage(0.75F).setSpread(0.01F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP_SLUG")); + g12 = new BulletConfig().setItem(EnumAmmo.G12).setCasing(EnumCasingType.BUCKSHOT, 6).setProjectiles(8).setDamage(1F/8F).setSpread(0.05F).setRicochetAngle(15).setThresholdNegation(2F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xB52B2B, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA")); + g12_slug = new BulletConfig().setItem(EnumAmmo.G12_SLUG).setCasing(EnumCasingType.BUCKSHOT, 6).setHeadshot(1.5F).setSpread(0.0F).setRicochetAngle(25).setThresholdNegation(4F).setArmorPiercing(0.15F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x393939, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_SLUG")); + g12_flechette = new BulletConfig().setItem(EnumAmmo.G12_FLECHETTE).setCasing(EnumCasingType.BUCKSHOT, 6).setProjectiles(8).setDamage(1F/8F).setThresholdNegation(5F).setThresholdNegation(3F).setArmorPiercing(0.2F).setSpread(0.025F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x3C80F0, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_FLECHETTE")); + g12_magnum = new BulletConfig().setItem(EnumAmmo.G12_MAGNUM).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 6).setProjectiles(4).setDamage(2F/4F).setSpread(0.015F).setRicochetAngle(15).setThresholdNegation(4F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x278400, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_MAGNUM")); + g12_explosive = new BulletConfig().setItem(EnumAmmo.G12_EXPLOSIVE).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 6).setDamage(2.5F).setOnImpact(LAMBDA_STANDARD_EXPLODE).setSpread(0F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xDA4127, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_EXPLOSIVE")); + g12_phosphorus = new BulletConfig().setItem(EnumAmmo.G12_PHOSPHORUS).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 6).setProjectiles(8).setDamage(1F/8F).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x910001, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_PHOSPHORUS")) + .setOnImpact((bullet, mop) -> { if(mop.entityHit != null && mop.entityHit instanceof EntityLivingBase) { HbmLivingProps data = HbmLivingProps.getData((EntityLivingBase) mop.entityHit); if(data.phosphorus < 300) data.phosphorus = 300; } }); + //g12_anthrax = new BulletConfig().setItem(EnumAmmo.G12_ANTHRAX).setProjectiles(8).setDamage(1F/8F).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x749300, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_ANTHRAX")); + g12_equestrian_bj = new BulletConfig().setItem(EnumAmmoSecret.G12_EQUESTRIAN).setDamage(0F).setOnImpact(LAMBDA_BOAT).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_EQUESTRIAN, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12gaEquestrianBJ")); + g12_equestrian_tkr = new BulletConfig().setItem(EnumAmmoSecret.G12_EQUESTRIAN).setDamage(0F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_EQUESTRIAN, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12gaEquestrianTKR")); + + BulletConfig[] all = new BulletConfig[] {g12_bp, g12_bp_magnum, g12_bp_slug, g12, g12_slug, g12_flechette, g12_magnum, g12_explosive, g12_phosphorus}; + + g12_sub = makeShredderSubmunition(g12); + g12_sub_slug = makeShredderSubmunition(g12_slug); + g12_sub_flechette = makeShredderSubmunition(g12_flechette); + g12_sub_magnum = makeShredderSubmunition(g12_magnum); + g12_sub_explosive = makeShredderSubmunition(g12_explosive); + g12_sub_phosphorus = makeShredderSubmunition(g12_phosphorus); + g12_shredder = makeShredderConfig(g12, g12_sub); + g12_shredder_slug = makeShredderConfig(g12_slug, g12_sub_slug); + g12_shredder_flechette = makeShredderConfig(g12_flechette, g12_sub_flechette); + g12_shredder_magnum = makeShredderConfig(g12_magnum, g12_sub_magnum); + g12_shredder_explosive = makeShredderConfig(g12_explosive, g12_sub_explosive); + g12_shredder_phosphorus = makeShredderConfig(g12_phosphorus, g12_sub_phosphorus); + + ModItems.gun_maresleg = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(600).draw(10).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(16F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.shotgun", 1.0F, 1.0F) + .mag(new MagazineSingleReload(0, 6).addConfigs(all)) + .offset(0.75, -0.0625, -0.1875) + .setupStandardFire().recoil(LAMBDA_RECOIL_MARESLEG)) + .setupStandardConfiguration() + .anim(LAMBDA_MARESLEG_ANIMS).orchestra(Orchestras.ORCHESTRA_MARESLEG) + ).setUnlocalizedName("gun_maresleg"); + ModItems.gun_maresleg_akimbo = new ItemGunBaseNT(WeaponQuality.B_SIDE, + new GunConfig().dura(600).draw(5).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(16F).spreadHipfire(0F).spreadAmmo(1.35F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.shotgun", 1.0F, 1.0F) + .mag(new MagazineSingleReload(0, 6).addConfigs(all)) + .offset(0.75, -0.0625, 0.1875D) + .setupStandardFire().recoil(LAMBDA_RECOIL_MARESLEG)) + .pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD) + .decider(GunStateDecider.LAMBDA_STANDARD_DECIDER) + .anim(LAMBDA_MARESLEG_SHORT_ANIMS).orchestra(Orchestras.ORCHESTRA_MARESLEG_AKIMBO), + new GunConfig().dura(600).draw(5).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(16F).spreadHipfire(0F).spreadAmmo(1.35F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.shotgun", 1.0F, 1.0F) + .mag(new MagazineSingleReload(1, 6).addConfigs(all)) + .offset(0.75, -0.0625, -0.1875) + .setupStandardFire().recoil(LAMBDA_RECOIL_MARESLEG)) + .ps(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD) + .decider(GunStateDecider.LAMBDA_STANDARD_DECIDER) + .anim(LAMBDA_MARESLEG_SHORT_ANIMS).orchestra(Orchestras.ORCHESTRA_MARESLEG_AKIMBO) + ).setUnlocalizedName("gun_maresleg_akimbo"); + ModItems.gun_maresleg_broken = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() + .dura(0).draw(5).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(32F).spreadAmmo(1.35F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.shotgun", 1.0F, 1.0F) + .mag(new MagazineSingleReload(0, 6).addConfigs(g12_equestrian_tkr, g12_bp, g12_bp_magnum, g12_bp_slug, g12, g12_slug, g12_flechette, g12_magnum, g12_explosive, g12_phosphorus)) + .offset(0.75, -0.0625, -0.1875) + .canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_NOWEAR_FIRE).recoil(LAMBDA_RECOIL_MARESLEG)) + .setupStandardConfiguration() + .anim(LAMBDA_MARESLEG_SHORT_ANIMS).orchestra(Orchestras.ORCHESTRA_MARESLEG_SHORT) + ).setUnlocalizedName("gun_maresleg_broken"); + + ModItems.gun_liberator = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(200).draw(20).inspect(21).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(16F).delay(20).rounds(4).reload(25, 15, 7, 0).jam(45).sound("hbm:weapon.fire.shotgunAlt", 1.0F, 1.0F) + .mag(new MagazineSingleReload(0, 4).addConfigs(all)) + .offset(0.75, -0.0625, -0.1875) + .setupStandardFire().recoil(LAMBDA_RECOIL_LIBERATOR)) + .setupStandardConfiguration() + .anim(LAMBDA_LIBERATOR_ANIMS).orchestra(Orchestras.ORCHESTRA_LIBERATOR) + ).setUnlocalizedName("gun_liberator"); + + ModItems.gun_spas12 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(600).draw(20).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(32F).spreadHipfire(0F).delay(20).reload(5, 10, 10, 10, 0).jam(36).sound("hbm:weapon.shotgunShoot", 1.0F, 1.0F) + .mag(new MagazineSingleReload(0, 8).addConfigs(all)) + .offset(0.75, -0.0625, -0.1875) + .setupStandardFire().recoil(LAMBDA_RECOIL_MARESLEG)) + .setupStandardConfiguration().ps(LAMBDA_SPAS_SECONDARY).pt(null) + .anim(LAMBDA_SPAS_ANIMS).orchestra(Orchestras.ORCHESTRA_SPAS) + ).setUnlocalizedName("gun_spas12"); + + ModItems.gun_autoshotgun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(2_000).draw(10).inspect(33).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(48F).delay(10).auto(true).autoAfterDry(true).dryfireAfterAuto(true).reload(44).jam(19).sound("hbm:weapon.fire.shotgunAuto", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 20).addConfigs(all)) + .offset(0.75, -0.125, -0.25) + .setupStandardFire().recoil(LAMBDA_RECOIL_AUTOSHOTGUN)) + .setupStandardConfiguration() + .anim(LAMBDA_SHREDDER_ANIMS).orchestra(Orchestras.ORCHESTRA_SHREDDER) + ).setUnlocalizedName("gun_autoshotgun"); + ModItems.gun_autoshotgun_shredder = new ItemGunBaseNT(WeaponQuality.B_SIDE, new GunConfig() + .dura(2_000).draw(10).inspect(33).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(50F).delay(10).auto(true).autoAfterDry(true).dryfireAfterAuto(true).reload(44).jam(19).sound("hbm:weapon.fire.shotgunAuto", 1.0F, 1.0F) + .mag(new MagazineBelt().addConfigs(g12_shredder, g12_shredder_slug, g12_shredder_flechette, g12_shredder_magnum, g12_shredder_explosive, g12_shredder_phosphorus)) + .offset(0.75, -0.125, -0.25) + .setupStandardFire().recoil(LAMBDA_RECOIL_AUTOSHOTGUN)) + .setupStandardConfiguration() + .anim(LAMBDA_SHREDDER_ANIMS).orchestra(Orchestras.ORCHESTRA_SHREDDER) + ).setUnlocalizedName("gun_autoshotgun_shredder"); + ModItems.gun_autoshotgun_sexy = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() + .dura(5_000).draw(10).inspect(33).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(64F).delay(1).auto(true).dryfireAfterAuto(true).reload(44).jam(19).sound("hbm:weapon.fire.shotgunAuto", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 100).addConfigs(g12_equestrian_bj, g12_bp, g12_bp_magnum, g12_bp_slug, g12, g12_slug, g12_flechette, g12_magnum, g12_explosive, g12_phosphorus)) + .offset(0.75, -0.125, -0.25) + .setupStandardFire().recoil(LAMBDA_RECOIL_SEXY)) + .setupStandardConfiguration() + .anim(LAMBDA_SEXY_ANIMS).orchestra(Orchestras.ORCHESTRA_SHREDDER_SEXY) + ).setUnlocalizedName("gun_autoshotgun_sexy"); + } + + public static BiConsumer LAMBDA_RECOIL_MARESLEG = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil(10, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5)); + }; + + public static BiConsumer LAMBDA_RECOIL_LIBERATOR = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil(5, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5)); + }; + + public static BiConsumer LAMBDA_RECOIL_AUTOSHOTGUN = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil((float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5) + 1.5F, (float) (ctx.getPlayer().getRNG().nextGaussian() * 0.5)); + }; + + public static BiConsumer LAMBDA_RECOIL_SEXY = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil((float) (ctx.getPlayer().getRNG().nextGaussian() * 0.5), (float) (ctx.getPlayer().getRNG().nextGaussian() * 0.5)); + }; + + public static BiConsumer LAMBDA_SPAS_SECONDARY = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + EntityPlayer player = ctx.getPlayer(); + Receiver rec = ctx.config.getReceivers(stack)[0]; + int index = ctx.configIndex; + GunState state = ItemGunBaseNT.getState(stack, index); + if(state == GunState.IDLE) { + if(rec.getCanFire(stack).apply(stack, ctx)) { + rec.getOnFire(stack).accept(stack, ctx); + int remaining = rec.getRoundsPerCycle(stack); + int timeFired = 1; + for(int i = 0; i < remaining; i++) { + if(rec.getCanFire(stack).apply(stack, ctx)) { + rec.getOnFire(stack).accept(stack, ctx); + timeFired++; + } + } + if(rec.getFireSound(stack) != null) entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, rec.getFireSound(stack), rec.getFireVolume(stack), rec.getFirePitch(stack) * (timeFired > 1 ? 0.9F : 1F)); + ItemGunBaseNT.setState(stack, index, GunState.COOLDOWN); + ItemGunBaseNT.setTimer(stack, index, 20); + } else { + if(rec.getDoesDryFire(stack)) { + ItemGunBaseNT.playAnimation(player, stack, AnimType.CYCLE_DRY, index); + ItemGunBaseNT.setState(stack, index, GunState.DRAWING); + ItemGunBaseNT.setTimer(stack, index, rec.getDelayAfterDryFire(stack)); + } + } + } + if(state == GunState.RELOADING) { + ItemGunBaseNT.setReloadCancel(stack, true); + } + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_MARESLEG_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(-60, 0, 0, 0).addPos(0, 0, -3, 500, IType.SIN_DOWN)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, 0, 50).addPos(0, 0, -1, 50).addPos(0, 0, 0, 250)) + .addBus("SIGHT", new BusAnimationSequence().addPos(35, 0, 0, 100, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL)) + .addBus("LEVER", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(-85, 0, 0, 200).addPos(0, 0, 0, 200)) + .addBus("TURN", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(0, 0, 45, 200, IType.SIN_DOWN).addPos(0, 0, 0, 200, IType.SIN_UP)) + .addBus("HAMMER", new BusAnimationSequence().addPos(30, 0, 0, 50).addPos(30, 0, 0, 550).addPos(0, 0, 0, 200)); + case CYCLE_DRY: return new BusAnimation() + .addBus("LEVER", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(-90, 0, 0, 200).addPos(0, 0, 0, 200)) + .addBus("TURN", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(0, 0, 45, 200, IType.SIN_DOWN).addPos(0, 0, 0, 200, IType.SIN_UP)) + .addBus("HAMMER", new BusAnimationSequence().addPos(30, 0, 0, 50).addPos(30, 0, 0, 550).addPos(0, 0, 0, 200)); + case RELOAD: + boolean empty = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory) <= 0; + return new BusAnimation() + .addBus("LIFT", new BusAnimationSequence().addPos(30, 0, 0, 400, IType.SIN_FULL)) + .addBus("LEVER", new BusAnimationSequence().addPos(0, 0, 0, 400).addPos(-85, 0, 0, 200)) + .addBus("SHELL", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(0, 0.25, -3, 0).addPos(0, empty ? 0.25 : 0.125, -1.5, 150, IType.SIN_UP).addPos(0, empty ? 0.25 : -0.25, 0, 150, IType.SIN_DOWN)) + .addBus("FLAG", new BusAnimationSequence().addPos(0, 0, 0, empty ? 900 : 0).addPos(1, 1, 1, 0)); + case RELOAD_CYCLE: return new BusAnimation() + .addBus("LIFT", new BusAnimationSequence().addPos(30, 0, 0, 0)) + .addBus("LEVER", new BusAnimationSequence().addPos(-85, 0, 0, 0)) + .addBus("SHELL", new BusAnimationSequence().addPos(0, 0.25, -3, 0).addPos(0, 0.125, -1.5, 150, IType.SIN_UP).addPos(0, -0.125, 0, 150, IType.SIN_DOWN)) + .addBus("FLAG", new BusAnimationSequence().addPos(1, 1, 1, 0)); + case RELOAD_END: return new BusAnimation() + .addBus("LIFT", new BusAnimationSequence().addPos(30, 0, 0, 0).addPos(30, 0, 0, 250).addPos(0, 0, 0, 400, IType.SIN_FULL)) + .addBus("LEVER", new BusAnimationSequence().addPos(-85, 0, 0, 0).addPos(0, 0, 0, 200)) + .addBus("FLAG", new BusAnimationSequence().addPos(1, 1, 1, 0)); + case JAMMED: return new BusAnimation() + .addBus("LIFT", new BusAnimationSequence().addPos(30, 0, 0, 0).addPos(30, 0, 0, 250).addPos(0, 0, 0, 400, IType.SIN_FULL)) + .addBus("LEVER", new BusAnimationSequence().addPos(-85, 0, 0, 0).addPos(-15, 0, 0, 200).addPos(-15, 0, 0, 650).addPos(-85, 0, 0, 200).addPos(-15, 0, 0, 200).addPos(-15, 0, 0, 200).addPos(-85, 0, 0, 200).addPos(0, 0, 0, 200)) + .addBus("TURN", new BusAnimationSequence().addPos(0, 0, 0, 850).addPos(0, 0, 45, 200, IType.SIN_DOWN).addPos(0, 0, 45, 800).addPos(0, 0, 0, 200, IType.SIN_UP)) + .addBus("FLAG", new BusAnimationSequence().addPos(1, 1, 1, 0)); + case INSPECT: return new BusAnimation() + .addBus("LIFT", new BusAnimationSequence().addPos(-35, 0, 0, 300, IType.SIN_FULL).addPos(-35, 0, 0, 1150).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("TURN", new BusAnimationSequence().addPos(0, 0, 0, 450).addPos(0, 0, -90, 500, IType.SIN_FULL).addPos(0, 0, -90, 500).addPos(0, 0, 0, 500, IType.SIN_FULL)); + } + + return null; + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_MARESLEG_SHORT_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(-60, 0, 0, 0).addPos(0, 0, -3, 250, IType.SIN_DOWN)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, 0, 50).addPos(0, 0, -1, 50).addPos(0, 0, 0, 250)) + .addBus("SIGHT", new BusAnimationSequence().addPos(35, 0, 0, 100, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL)) + .addBus("LEVER", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(-85, 0, 0, 200).addPos(0, 0, 0, 200)) + .addBus("HAMMER", new BusAnimationSequence().addPos(30, 0, 0, 50).addPos(30, 0, 0, 550).addPos(0, 0, 0, 200)) + .addBus("FLIP", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(360, 0, 0, 400)) + .addBus("SHELL", new BusAnimationSequence().addPos(-20, 0, 0, 0)); //gets rid of the shell in the barrel during cycling + case CYCLE_DRY: return new BusAnimation() + .addBus("LEVER", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(-90, 0, 0, 200).addPos(0, 0, 0, 200)) + .addBus("HAMMER", new BusAnimationSequence().addPos(30, 0, 0, 50).addPos(30, 0, 0, 550).addPos(0, 0, 0, 200)) + .addBus("FLIP", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(360, 0, 0, 400)) + .addBus("SHELL", new BusAnimationSequence().addPos(-20, 0, 0, 0)); + case JAMMED: return new BusAnimation() + .addBus("LIFT", new BusAnimationSequence().addPos(30, 0, 0, 0).addPos(30, 0, 0, 250).addPos(0, 0, 0, 400, IType.SIN_FULL)) + .addBus("LEVER", new BusAnimationSequence().addPos(-85, 0, 0, 0).addPos(-15, 0, 0, 200).addPos(-15, 0, 0, 650).addPos(-85, 0, 0, 200).addPos(-15, 0, 0, 200).addPos(-15, 0, 0, 200).addPos(-85, 0, 0, 200).addPos(0, 0, 0, 200)) + .addBus("FLAG", new BusAnimationSequence().addPos(1, 1, 1, 0)); + } + + return LAMBDA_MARESLEG_ANIMS.apply(stack, type); + }; + + /** This fucking sucks */ + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_LIBERATOR_ANIMS = (stack, type) -> { + int ammo = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory); + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(60, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_DOWN)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, -2.5, 50, IType.SIN_DOWN).addPos(0, 0, 0, 350, IType.SIN_FULL)); + case CYCLE_DRY: return new BusAnimation(); + case RELOAD: if(ammo == 0) return new BusAnimation() + .addBus("LATCH", new BusAnimationSequence().addPos(15, 0, 0, 100)) + .addBus("BREAK", new BusAnimationSequence().addPos(0, 0, 0, 100).addPos(60, 0, 0, 350, IType.SIN_DOWN)) + .addBus("SHELL1", new BusAnimationSequence().addPos(2, -4, -2, 0).addPos(2, -4, -2, 400).addPos(0, 0, -2, 450, IType.SIN_FULL).addPos(0, 0, 0, 50, IType.SIN_UP)) + .addBus("SHELL2", new BusAnimationSequence().addPos(2, -4, -2, 0)) + .addBus("SHELL3", new BusAnimationSequence().addPos(2, -4, -2, 0)) + .addBus("SHELL4", new BusAnimationSequence().addPos(2, -4, -2, 0)); + if(ammo == 1) return new BusAnimation() + .addBus("LATCH", new BusAnimationSequence().addPos(15, 0, 0, 100)) + .addBus("BREAK", new BusAnimationSequence().addPos(0, 0, 0, 100).addPos(60, 0, 0, 350, IType.SIN_DOWN)) + .addBus("SHELL1", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus("SHELL2", new BusAnimationSequence().addPos(2, -4, -2, 0).addPos(2, -4, -2, 400).addPos(0, 0, -2, 450, IType.SIN_FULL).addPos(0, 0, 0, 50, IType.SIN_UP)) + .addBus("SHELL3", new BusAnimationSequence().addPos(2, -4, -2, 0)) + .addBus("SHELL4", new BusAnimationSequence().addPos(2, -4, -2, 0)); + if(ammo == 2) return new BusAnimation() + .addBus("LATCH", new BusAnimationSequence().addPos(15, 0, 0, 100)) + .addBus("BREAK", new BusAnimationSequence().addPos(0, 0, 0, 100).addPos(60, 0, 0, 350, IType.SIN_DOWN)) + .addBus("SHELL1", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus("SHELL2", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus("SHELL3", new BusAnimationSequence().addPos(2, -4, -2, 0).addPos(2, -4, -2, 400).addPos(0, 0, -2, 450, IType.SIN_FULL).addPos(0, 0, 0, 50, IType.SIN_UP)) + .addBus("SHELL4", new BusAnimationSequence().addPos(2, -4, -2, 0)); + if(ammo == 3) return new BusAnimation() + .addBus("LATCH", new BusAnimationSequence().addPos(15, 0, 0, 100)) + .addBus("BREAK", new BusAnimationSequence().addPos(0, 0, 0, 100).addPos(60, 0, 0, 350, IType.SIN_DOWN)) + .addBus("SHELL1", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus("SHELL2", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus("SHELL3", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus("SHELL4", new BusAnimationSequence().addPos(2, -4, -2, 0).addPos(2, -4, -2, 400).addPos(0, 0, -2, 450, IType.SIN_FULL).addPos(0, 0, 0, 50, IType.SIN_UP)); + case RELOAD_CYCLE: + if(ammo == 0) return new BusAnimation() + .addBus("LATCH", new BusAnimationSequence().addPos(15, 0, 0, 0)) + .addBus("BREAK", new BusAnimationSequence().addPos(60, 0, 0, 0)) + .addBus("SHELL1", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus("SHELL2", new BusAnimationSequence().addPos(2, -4, -2, 0).addPos(0, 0, -2, 450, IType.SIN_FULL).addPos(0, 0, 0, 50, IType.SIN_UP)) + .addBus("SHELL3", new BusAnimationSequence().addPos(2, -4, -2, 0)) + .addBus("SHELL4", new BusAnimationSequence().addPos(2, -4, -2, 0)); + if(ammo == 1) return new BusAnimation() + .addBus("LATCH", new BusAnimationSequence().addPos(15, 0, 0, 0)) + .addBus("BREAK", new BusAnimationSequence().addPos(60, 0, 0, 0)) + .addBus("SHELL1", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus("SHELL2", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus("SHELL3", new BusAnimationSequence().addPos(2, -4, -2, 0).addPos(0, 0, -2, 450, IType.SIN_FULL).addPos(0, 0, 0, 50, IType.SIN_UP)) + .addBus("SHELL4", new BusAnimationSequence().addPos(2, -4, -2, 0)); + if(ammo == 2) return new BusAnimation() + .addBus("LATCH", new BusAnimationSequence().addPos(15, 0, 0, 0)) + .addBus("BREAK", new BusAnimationSequence().addPos(60, 0, 0, 0)) + .addBus("SHELL1", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus("SHELL2", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus("SHELL3", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus("SHELL4", new BusAnimationSequence().addPos(2, -4, -2, 0).addPos(0, 0, -2, 450, IType.SIN_FULL).addPos(0, 0, 0, 50, IType.SIN_UP)); + return null; + case RELOAD_END: return new BusAnimation() + .addBus("LATCH", new BusAnimationSequence().addPos(15, 0, 0, 0).addPos(15, 0, 0, 250).addPos(0, 0, 0, 50)) + .addBus("BREAK", new BusAnimationSequence().addPos(60, 0, 0, 0).addPos(0, 0, 0, 250, IType.SIN_UP)) + .addBus(ammo >= 0 ? "SHELL1" : "NULL", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus(ammo >= 1 ? "SHELL2" : "NULL", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus(ammo >= 2 ? "SHELL3" : "NULL", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus(ammo >= 3 ? "SHELL4" : "NULL", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus(ammo < 0 ? "SHELL1" : "NULL", new BusAnimationSequence().addPos(2, -8, -2, 0)) + .addBus(ammo < 1 ? "SHELL2" : "NULL", new BusAnimationSequence().addPos(2, -8, -2, 0)) + .addBus(ammo < 2 ? "SHELL3" : "NULL", new BusAnimationSequence().addPos(2, -8, -2, 0)) + .addBus(ammo < 3 ? "SHELL4" : "NULL", new BusAnimationSequence().addPos(2, -8, -2, 0)); + case JAMMED: return new BusAnimation() + .addBus("LATCH", new BusAnimationSequence().addPos(15, 0, 0, 0).addPos(15, 0, 0, 250).addPos(0, 0, 0, 50).addPos(0, 0, 0, 550).addPos(15, 0, 0, 100).addPos(15, 0, 0, 600).addPos(0, 0, 0, 50)) + .addBus("BREAK", new BusAnimationSequence().addPos(60, 0, 0, 0).addPos(0, 0, 0, 250, IType.SIN_UP).addPos(0, 0, 0, 600).addPos(45, 0, 0, 250, IType.SIN_DOWN).addPos(45, 0, 0, 300).addPos(0, 0, 0, 150, IType.SIN_UP)) + .addBus(ammo >= 0 ? "SHELL1" : "NULL", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus(ammo >= 1 ? "SHELL2" : "NULL", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus(ammo >= 2 ? "SHELL3" : "NULL", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus(ammo >= 3 ? "SHELL4" : "NULL", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus(ammo < 0 ? "SHELL1" : "NULL", new BusAnimationSequence().addPos(2, -8, -2, 0)) + .addBus(ammo < 1 ? "SHELL2" : "NULL", new BusAnimationSequence().addPos(2, -8, -2, 0)) + .addBus(ammo < 2 ? "SHELL3" : "NULL", new BusAnimationSequence().addPos(2, -8, -2, 0)) + .addBus(ammo < 3 ? "SHELL4" : "NULL", new BusAnimationSequence().addPos(2, -8, -2, 0)); + case INSPECT: return new BusAnimation() + .addBus("LATCH", new BusAnimationSequence().addPos(15, 0, 0, 100).addPos(15, 0, 0, 1100).addPos(0, 0, 0, 50)) + .addBus("BREAK", new BusAnimationSequence().addPos(0, 0, 0, 100).addPos(60, 0, 0, 350, IType.SIN_DOWN).addPos(60, 0, 0, 500).addPos(0, 0, 0, 250, IType.SIN_UP)) + .addBus(ammo > 0 ? "SHELL1" : "NULL", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus(ammo > 1 ? "SHELL2" : "NULL", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus(ammo > 2 ? "SHELL3" : "NULL", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus(ammo > 3 ? "SHELL4" : "NULL", new BusAnimationSequence().addPos(0, 0, 0, 0)) + .addBus(ammo < 1 ? "SHELL1" : "NULL", new BusAnimationSequence().addPos(2, -8, -2, 0)) + .addBus(ammo < 2 ? "SHELL2" : "NULL", new BusAnimationSequence().addPos(2, -8, -2, 0)) + .addBus(ammo < 3 ? "SHELL3" : "NULL", new BusAnimationSequence().addPos(2, -8, -2, 0)) + .addBus(ammo < 4 ? "SHELL4" : "NULL", new BusAnimationSequence().addPos(2, -8, -2, 0)); + } + + return null; + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_SPAS_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(-60, 0, 0, 0).addPos(0, 0, -3, 500, IType.SIN_DOWN)); + case CYCLE: return ResourceManager.spas_12_anim.get("Fire"); + case CYCLE_DRY: return ResourceManager.spas_12_anim.get("FireDry"); + case ALT_CYCLE: return ResourceManager.spas_12_anim.get("FireAlt"); + case RELOAD: + boolean empty = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory) <= 0; + return ResourceManager.spas_12_anim.get(empty ? "ReloadEmptyStart" : "ReloadStart"); + case RELOAD_CYCLE: return ResourceManager.spas_12_anim.get("Reload"); + case RELOAD_END: return ResourceManager.spas_12_anim.get("ReloadEnd"); + case JAMMED: return ResourceManager.spas_12_anim.get("Jammed"); + case INSPECT: return ResourceManager.spas_12_anim.get("Inspect"); + } + + return null; + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_SHREDDER_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(60, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_DOWN)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, -1, 50, IType.SIN_DOWN).addPos(0, 0, 0, 150, IType.SIN_FULL)) + .addBus("CYCLE", new BusAnimationSequence().addPos(0, 0, 0, 150).addPos(0, 0, 18, 100)); + case CYCLE_DRY: return new BusAnimation() + .addBus("CYCLE", new BusAnimationSequence().addPos(0, 0, 0, 150).addPos(0, 0, 18, 100)); + case RELOAD: return new BusAnimation() + .addBus("MAG", new BusAnimationSequence().addPos(0, -8, 0, 250, IType.SIN_UP).addPos(0, -8, 0, 1000).addPos(0, 0, 0, 300)) + .addBus("LIFT", new BusAnimationSequence().addPos(0, 0, 0, 750).addPos(-25, 0, 0, 300, IType.SIN_FULL).addPos(-25, 0, 0, 500).addPos(-27, 0, 0, 100, IType.SIN_DOWN).addPos(-25, 0, 0, 100, IType.SIN_FULL).addPos(-25, 0, 0, 150).addPos(0, 0, 0, 300, IType.SIN_FULL)); + case JAMMED: return new BusAnimation() + .addBus("MAG", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, -2, 0, 150, IType.SIN_UP).addPos(0, 0, 0, 100)) + .addBus("LIFT", new BusAnimationSequence().addPos(0, 0, 0, 750).addPos(-2, 0, 0, 100, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL)); + case INSPECT: return new BusAnimation() + .addBus("MAG", new BusAnimationSequence() + .addPos(0, -1, 0, 150).addPos(6, -1, 0, 150).addPos(6, 12, 0, 350, IType.SIN_DOWN).addPos(6, -2, 0, 350, IType.SIN_UP).addPos(6, -1, 0, 50) + .addPos(6, -1, 0, 100).addPos(0, -1, 0, 150, IType.SIN_FULL).addPos(0, 0, 0, 150, IType.SIN_UP)) + .addBus("SPEEN", new BusAnimationSequence().addPos(0, 0, 0, 300).addPos(360, 0, 0, 700)) + .addBus("LIFT", new BusAnimationSequence().addPos(0, 0, 0, 1450).addPos(-2, 0, 0, 100, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL)); + } + + return null; + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_SEXY_ANIMS = (stack, type) -> { + switch(type) { + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, -1, 50, IType.SIN_DOWN).addPos(0, 0, 0, 150, IType.SIN_FULL)) + .addBus("CYCLE", new BusAnimationSequence().addPos(0, 0, 18, 50)); + case CYCLE_DRY: return new BusAnimation() + .addBus("CYCLE", new BusAnimationSequence().addPos(0, 0, 18, 50)); + } + + return LAMBDA_SHREDDER_ANIMS.apply(stack, type); + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java new file mode 100644 index 000000000..150bb843d --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java @@ -0,0 +1,104 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.function.BiConsumer; +import java.util.function.BiFunction; + +import com.hbm.config.ClientConfig; +import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumCasingType; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.mags.MagazineFullReload; +import com.hbm.main.ResourceManager; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.BusAnimationKeyframe.IType; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import net.minecraft.item.ItemStack; + +public class XFactory22lr { + + public static BulletConfig p22_sp; + public static BulletConfig p22_fmj; + public static BulletConfig p22_jhp; + public static BulletConfig p22_ap; + + public static void init() { + SpentCasing casing22 = new SpentCasing(CasingType.STRAIGHT).setColor(SpentCasing.COLOR_CASE_BRASS).setScale(0.5F); + p22_sp = new BulletConfig().setItem(EnumAmmo.P22_SP).setCasing(EnumCasingType.SMALL, 24).setKnockback(0F) + .setCasing(casing22.clone().register("p22")); + p22_fmj = new BulletConfig().setItem(EnumAmmo.P22_FMJ).setCasing(EnumCasingType.SMALL, 24).setKnockback(0F).setDamage(0.8F).setThresholdNegation(1F).setArmorPiercing(0.1F) + .setCasing(casing22.clone().register("p22fmj")); + p22_jhp = new BulletConfig().setItem(EnumAmmo.P22_JHP).setCasing(EnumCasingType.SMALL, 24).setKnockback(0F).setDamage(1.5F).setHeadshot(1.5F).setArmorPiercing(-0.25F) + .setCasing(casing22.clone().register("p22jhp")); + p22_ap = new BulletConfig().setItem(EnumAmmo.P22_AP).setCasing(EnumCasingType.SMALL_STEEL, 24).setKnockback(0F).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(1.5F).setThresholdNegation(2.5F).setArmorPiercing(0.15F) + .setCasing(casing22.clone().setColor(SpentCasing.COLOR_CASE_44).register("p22ap")); + + ModItems.gun_am180 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(177 * 25).draw(15).inspect(38).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(2F).delay(1).dry(10).auto(true).spread(0.02F).reload(66).jam(30).sound("hbm:weapon.fire.silenced", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 177).addConfigs(p22_sp, p22_fmj, p22_jhp, p22_ap)) + .offset(1, -0.0625 * 1.5, -0.1875D) + .setupStandardFire().recoil(LAMBDA_RECOIL_AM180)) + .setupStandardConfiguration() + .anim(LAMBDA_AM180_ANIMS).orchestra(Orchestras.ORCHESTRA_AM180) + ).setUnlocalizedName("gun_am180"); + } + + public static BiConsumer LAMBDA_SMOKE = (stack, ctx) -> { + Lego.handleStandardSmoke(ctx.entity, stack, 3000, 0.05D, 1.1D, 0); + }; + + public static BiConsumer LAMBDA_RECOIL_AM180 = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil((float) (ctx.getPlayer().getRNG().nextGaussian() * 0.25), (float) (ctx.getPlayer().getRNG().nextGaussian() * 0.25)); + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_AM180_ANIMS = (stack, type) -> { + if(ClientConfig.GUN_ANIMS_LEGACY.get()) { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(45, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_FULL)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, ItemGunBaseNT.getIsAiming(stack) ? -0.125 : -0.25, 15, IType.SIN_DOWN).addPos(0, 0, 0, 35, IType.SIN_FULL)); + case CYCLE_DRY: return new BusAnimation() + .addBus("BOLT", new BusAnimationSequence().addPos(0, 0, 0, 550).addPos(0, 0, -1.5, 100, IType.SIN_UP).addPos(0, 0, 0, 100, IType.SIN_UP)) + .addBus("TURN", new BusAnimationSequence().addPos(0, 0, 0, 300).addPos(0, 0, 15, 250, IType.SIN_FULL).addPos(0, 0, 15, 400).addPos(0, 0, 0, 250, IType.SIN_FULL)); + case RELOAD: + return new BusAnimation() + .addBus("MAGTURN", new BusAnimationSequence().addPos(15, 0, 0, 250, IType.SIN_FULL).addPos(15, 0, 0, 250).addPos(15, 0, 70, 300, IType.SIN_FULL).addPos(15, 0, 0, 0).addPos(15, 0, 0, 750).addPos(0, 0, 0, 250, IType.SIN_FULL)) + .addBus("MAG", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(2, 0, -4, 250, IType.SIN_FULL).addPos(-10, 2, -4, 300, IType.SIN_UP).addPos(3, -6, -4, 0).addPos(2, 0, -4, 500, IType.SIN_FULL).addPos(0, 0, 0, 250, IType.SIN_FULL)) + .addBus("BOLT", new BusAnimationSequence().addPos(0, 0, 0, 2250).addPos(0, 0, -1.5, 100, IType.SIN_UP).addPos(0, 0, 0, 100, IType.SIN_UP)) + .addBus("TURN", new BusAnimationSequence().addPos(0, 0, 0, 2000).addPos(0, 0, 15, 250, IType.SIN_FULL).addPos(0, 0, 15, 400).addPos(0, 0, 0, 250, IType.SIN_FULL)); + case JAMMED: return new BusAnimation() + .addBus("BOLT", new BusAnimationSequence().addPos(0, 0, 0, 750).addPos(0, 0, -1.5, 100, IType.SIN_UP).addPos(0, 0, 0, 100, IType.SIN_UP)) + .addBus("TURN", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, 45, 250, IType.SIN_FULL).addPos(0, 0, 45, 400).addPos(0, 0, 0, 250, IType.SIN_FULL)); + case INSPECT: return new BusAnimation() + .addBus("MAGTURN", new BusAnimationSequence().addPos(15, 0, 0, 250, IType.SIN_FULL).addPos(15, 0, 0, 1400).addPos(0, 0, 0, 250, IType.SIN_FULL)) + .addBus("MAG", new BusAnimationSequence().addPos(0, 0, 0, 200).addPos(4, -1, -4, 200, IType.SIN_FULL).addPos(4, -1.5, -4, 50).addPos(4, 0, -4, 100).addPos(4, 6, -4, 250, IType.SIN_DOWN).addPos(4, 0, -4, 150, IType.SIN_UP).addPos(4, -1, -4, 100, IType.SIN_DOWN).addPos(4, -1, -4, 250).addPos(0, 0, 0, 250, IType.SIN_FULL)) + .addBus("MAGSPIN", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(-400, 0, 0, 500, IType.SIN_FULL).addPos(-400, 0, 0, 250).addPos(-360, 0, 0, 250)); + } + } else { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(45, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_FULL)); + case CYCLE: return ResourceManager.am180_anim.get("Fire"); + case CYCLE_DRY: return ResourceManager.am180_anim.get("FireDry"); + case RELOAD: return ResourceManager.am180_anim.get("Reload"); + case JAMMED: return ResourceManager.am180_anim.get("Jammed"); + case INSPECT: return ResourceManager.am180_anim.get("Inspect"); + } + } + + return null; + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java new file mode 100644 index 000000000..4ed982903 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java @@ -0,0 +1,137 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.function.BiConsumer; +import java.util.function.BiFunction; + +import com.hbm.items.ItemEnums.EnumCasingType; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.mags.MagazineFullReload; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationKeyframe.IType; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import net.minecraft.item.ItemStack; + +public class XFactory357 { + + public static BulletConfig m357_bp; + public static BulletConfig m357_sp; + public static BulletConfig m357_fmj; + public static BulletConfig m357_jhp; + public static BulletConfig m357_ap; + public static BulletConfig m357_express; + + public static void init() { + m357_bp = new BulletConfig().setItem(EnumAmmo.M357_BP).setCasing(EnumCasingType.SMALL, 16).setDamage(0.75F).setBlackPowder(true); + m357_sp = new BulletConfig().setItem(EnumAmmo.M357_SP).setCasing(EnumCasingType.SMALL, 8); + m357_fmj = new BulletConfig().setItem(EnumAmmo.M357_FMJ).setCasing(EnumCasingType.SMALL, 8).setDamage(0.8F).setThresholdNegation(2F).setArmorPiercing(0.1F); + m357_jhp = new BulletConfig().setItem(EnumAmmo.M357_JHP).setCasing(EnumCasingType.SMALL, 8).setDamage(1.5F).setHeadshot(1.5F).setArmorPiercing(-0.25F); + m357_ap = new BulletConfig().setItem(EnumAmmo.M357_AP).setCasing(EnumCasingType.SMALL_STEEL, 8).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(1.5F).setThresholdNegation(5F).setArmorPiercing(0.15F); + m357_express = new BulletConfig().setItem(EnumAmmo.M357_EXPRESS).setCasing(EnumCasingType.SMALL, 8).setDoesPenetrate(true).setDamage(1.5F).setThresholdNegation(2F).setArmorPiercing(0.1F).setWear(1.5F); + + ModItems.gun_light_revolver = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(300).draw(4).inspect(23).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(7.5F).delay(16).reload(55).jam(45).sound("hbm:weapon.fire.pistol", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 6).addConfigs(m357_bp, m357_sp, m357_fmj, m357_jhp, m357_ap, m357_express)) + .offset(0.75, -0.0625, -0.3125D) + .setupStandardFire().recoil(LAMBDA_RECOIL_ATLAS)) + .setupStandardConfiguration() + .anim(LAMBDA_ATLAS_ANIMS).orchestra(Orchestras.ORCHESTRA_ATLAS) + ).setUnlocalizedName("gun_light_revolver"); + ModItems.gun_light_revolver_atlas = new ItemGunBaseNT(WeaponQuality.B_SIDE, new GunConfig() + .dura(300).draw(4).inspect(23).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(12.5F).delay(16).reload(55).jam(45).sound("hbm:weapon.fire.pistol", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 6).addConfigs(m357_bp, m357_sp, m357_fmj, m357_jhp, m357_ap, m357_express)) + .offset(0.75, -0.0625, -0.3125D) + .setupStandardFire().recoil(LAMBDA_RECOIL_ATLAS)) + .setupStandardConfiguration() + .anim(LAMBDA_ATLAS_ANIMS).orchestra(Orchestras.ORCHESTRA_ATLAS) + ).setUnlocalizedName("gun_light_revolver_atlas"); + ModItems.gun_light_revolver_dani = new ItemGunBaseNT(WeaponQuality.LEGENDARY, + new GunConfig().dura(30_000).draw(20).inspect(23).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(15F).spreadHipfire(0F).delay(11).reload(55).jam(45).sound("hbm:weapon.fire.pistol", 1.0F, 1.1F) + .mag(new MagazineFullReload(0, 6).addConfigs(m357_bp, m357_sp, m357_fmj, m357_jhp, m357_ap, m357_express)) + .offset(0.75, -0.0625, 0.3125D) + .setupStandardFire().recoil(LAMBDA_RECOIL_DANI)) + .pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD) + .decider(GunStateDecider.LAMBDA_STANDARD_DECIDER) + .anim(LAMBDA_DANI_ANIMS).orchestra(Orchestras.ORCHESTRA_DANI), + new GunConfig().dura(30_000).draw(20).inspect(23).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(15F).spreadHipfire(0F).delay(11).reload(55).jam(45).sound("hbm:weapon.fire.pistol", 1.0F, 0.9F) + .mag(new MagazineFullReload(1, 6).addConfigs(m357_bp, m357_sp, m357_fmj, m357_jhp, m357_ap, m357_express)) + .offset(0.75, -0.0625, -0.3125D) + .setupStandardFire().recoil(LAMBDA_RECOIL_DANI)) + .ps(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD) + .decider(GunStateDecider.LAMBDA_STANDARD_DECIDER) + .anim(LAMBDA_DANI_ANIMS).orchestra(Orchestras.ORCHESTRA_DANI) + ).setUnlocalizedName("gun_light_revolver_dani"); + } + + public static BiConsumer LAMBDA_RECOIL_ATLAS = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil(10, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5)); + }; + + public static BiConsumer LAMBDA_RECOIL_DANI = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil(5, (float) (ctx.getPlayer().getRNG().nextGaussian() * 0.75)); + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_ATLAS_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(-90, 0, 0, 0).addPos(0, 0, 0, 350, IType.SIN_DOWN)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, 0, 50).addPos(0, 0, -3, 50).addPos(0, 0, 0, 250)) + .addBus("HAMMER", new BusAnimationSequence().addPos(0, 0, 1, 50).addPos(0, 0, 1, 550).addPos(0, 0, 0, 200)) + .addBus("DRUM", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(0, 0, 1, 200)); + case CYCLE_DRY: return new BusAnimation() + .addBus("HAMMER", new BusAnimationSequence().addPos(0, 0, 1, 50).addPos(0, 0, 1, 550).addPos(0, 0, 0, 200)) + .addBus("DRUM", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(0, 0, 1, 200)); + case RELOAD: return new BusAnimation() + .addBus("LATCH", new BusAnimationSequence().addPos(0, 0, 90, 300).addPos(0, 0, 90, 2000).addPos(0, 0, 0, 150)) + .addBus("FRONT", new BusAnimationSequence().addPos(0, 0, 0, 200).addPos(0, 0, 45, 150).addPos(0, 0, 45, 2000).addPos(0, 0, 0, 75)) + .addBus("RELOAD_ROT", new BusAnimationSequence().addPos(0, 0, 0, 300).addPos(60, 0, 0, 500).addPos(60, 0, 0, 500).addPos(0, -90, -90, 0).addPos(0, -90, -90, 600).addPos(0, 0, 0, 300).addPos(0, 0, 0, 100).addPos(-45, 0, 0, 50).addPos(-45, 0, 0, 100).addPos(0, 0, 0, 300)) + .addBus("RELOAD_MOVE", new BusAnimationSequence().addPos(0, 0, 0, 300).addPos(0, -15, 0, 1000).addPos(0, 0, 0, 450)) + .addBus("DRUM_PUSH", new BusAnimationSequence().addPos(0, 0, 0, 1600).addPos(0, 0, -5, 0).addPos(0, 0, 0, 300)); + case INSPECT: return new BusAnimation() + .addBus("LATCH", new BusAnimationSequence().addPos(0, 0, 90, 300).addPos(0, 0, 90, 1000).addPos(0, 0, 0, 150)) + .addBus("FRONT", new BusAnimationSequence().addPos(0, 0, 0, 200).addPos(0, 0, 45, 150).addPos(0, 0, 45, 1000).addPos(0, 0, 0, 75)) + .addBus("RELOAD_ROT", new BusAnimationSequence().addPos(0, 0, 0, 300).addPos(45, 0, 0, 500, IType.SIN_FULL).addPos(45, 0, 0, 500).addPos(-45, 0, 0, 50).addPos(-45, 0, 0, 100).addPos(0, 0, 0, 300)) + .addBus("RELOAD_MOVE", new BusAnimationSequence().addPos(0, 0, 0, 300).addPos(0, -2.5, 0, 500, IType.SIN_FULL).addPos(0, -2.5, 0, 500).addPos(0, 0, 0, 350)); + case JAMMED: return new BusAnimation() + .addBus("LATCH", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, 90, 300).addPos(0, 0, 90, 1000).addPos(0, 0, 0, 150)) + .addBus("FRONT", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, 0, 200).addPos(0, 0, 45, 150).addPos(0, 0, 45, 1000).addPos(0, 0, 0, 75)) + .addBus("RELOAD_ROT", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, 0, 300).addPos(45, 0, 0, 500, IType.SIN_FULL).addPos(45, 0, 0, 500).addPos(-45, 0, 0, 50).addPos(-45, 0, 0, 100).addPos(0, 0, 0, 300)) + .addBus("RELOAD_MOVE", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, 0, 300).addPos(0, -2.5, 0, 500, IType.SIN_FULL).addPos(0, -2.5, 0, 500).addPos(0, 0, 0, 350)); + } + + return null; + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_DANI_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation().addBus("EQUIP", new BusAnimationSequence().addPos(360 * 3, 0, 0, 1000, IType.SIN_DOWN)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, 0, 50).addPos(0, 0, -3, 50).addPos(0, 0, 0, 250)) + .addBus("HAMMER", new BusAnimationSequence().addPos(0, 0, 1, 50).addPos(0, 0, 1, 300).addPos(0, 0, 0, 200)) + .addBus("DRUM", new BusAnimationSequence().addPos(0, 0, 0, 350).addPos(0, 0, 1, 200)); + case CYCLE_DRY: return new BusAnimation() + .addBus("HAMMER", new BusAnimationSequence().addPos(0, 0, 1, 50).addPos(0, 0, 1, 200).addPos(0, 0, 0, 200)) + .addBus("DRUM", new BusAnimationSequence().addPos(0, 0, 0, 350).addPos(0, 0, 1, 200)); + } + + return LAMBDA_ATLAS_ANIMS.apply(stack, type); + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java new file mode 100644 index 000000000..56a9fa690 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java @@ -0,0 +1,224 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.function.BiConsumer; +import java.util.function.BiFunction; +import java.util.function.Consumer; + +import com.hbm.entity.effect.EntityFireLingering; +import com.hbm.entity.logic.EntityC130; +import com.hbm.entity.logic.EntityC130.C130PayloadType; +import com.hbm.entity.projectile.EntityBulletBaseMK4; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; +import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; +import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; +import com.hbm.extprop.HbmLivingProps; +import com.hbm.items.ItemEnums.EnumCasingType; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.mags.MagazineSingleReload; +import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.BusAnimationKeyframe.IType; +import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.EntityDamageUtil; +import com.hbm.util.TrackerUtil; +import com.hbm.util.DamageResistanceHandler.DamageClass; +import com.hbm.world.WorldUtil; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class XFactory40mm { + + public static BulletConfig g26_flare; + public static BulletConfig g26_flare_supply; + public static BulletConfig g26_flare_weapon; + + public static BulletConfig g40_he; + public static BulletConfig g40_heat; + public static BulletConfig g40_demo; + public static BulletConfig g40_inc; + public static BulletConfig g40_phosphorus; + + public static BiConsumer LAMBDA_STANDARD_IGNITE = (bullet, mop) -> { + if(mop.typeOfHit == mop.typeOfHit.ENTITY) { + if(mop.entityHit instanceof EntityLivingBase) { + HbmLivingProps props = HbmLivingProps.getData((EntityLivingBase) mop.entityHit); + props.fire += 200; + } + } + }; + public static BiConsumer LAMBDA_STANDARD_EXPLODE = (bullet, mop) -> { + Lego.standardExplode(bullet, mop, 5F); bullet.setDead(); + }; + public static BiConsumer LAMBDA_STANDARD_EXPLODE_HEAT = (bullet, mop) -> { + if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; + Lego.standardExplode(bullet, mop, 3.5F); bullet.setDead(); + if(mop.typeOfHit == mop.typeOfHit.ENTITY && mop.entityHit instanceof EntityLivingBase) { + EntityLivingBase living = (EntityLivingBase) mop.entityHit; + EntityDamageUtil.attackEntityFromNT(living, bullet.config.getDamage(bullet, bullet.getThrower(), DamageClass.EXPLOSIVE), bullet.damage * 3F, true, true, 0.5F, 3F, 0.15F); + } else if(mop.typeOfHit == mop.typeOfHit.ENTITY) { + mop.entityHit.attackEntityFrom(bullet.config.getDamage(bullet, bullet.getThrower(), DamageClass.EXPLOSIVE), bullet.damage * 3F); + } + }; + public static BiConsumer LAMBDA_STANDARD_EXPLODE_DEMO = (bullet, mop) -> { + if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; + ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 5F, bullet.getThrower()); + vnt.setBlockAllocator(new BlockAllocatorStandard()); + vnt.setBlockProcessor(new BlockProcessorStandard()); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F)); + vnt.explode(); + bullet.setDead(); + }; + public static BiConsumer LAMBDA_STANDARD_EXPLODE_INC = (bullet, mop) -> { + spawnFire(bullet, mop, false, 200); + }; + public static BiConsumer LAMBDA_STANDARD_EXPLODE_PHOSPHORUS = (bullet, mop) -> { + spawnFire(bullet, mop, true, 400); + }; + + public static void spawnFire(EntityBulletBaseMK4 bullet, MovingObjectPosition mop, boolean phosphorus, int duration) { + if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; + World world = bullet.worldObj; + Lego.standardExplode(bullet, mop, 3F); + EntityFireLingering fire = new EntityFireLingering(world).setArea(5, 2).setDuration(duration).setType(phosphorus ? EntityFireLingering.TYPE_PHOSPHORUS : EntityFireLingering.TYPE_DIESEL); + fire.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + world.spawnEntityInWorld(fire); + bullet.setDead(); + for(int dx = -1; dx <= 1; dx++) { + for(int dy = -1; dy <= 1; dy++) { + for(int dz = -1; dz <= 1; dz++) { + int x = (int) Math.floor(mop.hitVec.xCoord) + dx; + int y = (int) Math.floor(mop.hitVec.yCoord) + dy; + int z = (int) Math.floor(mop.hitVec.zCoord) + dz; + if(world.getBlock(x, y, z).isAir(bullet.worldObj, x, y, z)) for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + if(world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ).isFlammable(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir.getOpposite())) { + world.setBlock(x, y, z, Blocks.fire); + break; + } + } + } + } + } + } + + public static Consumer LAMBDA_SPAWN_C130_SUPPLIESS = (entity) -> { spawnPlane(entity, C130PayloadType.SUPPLIES); }; + public static Consumer LAMBDA_SPAWN_C130_WEAPONS = (entity) -> { spawnPlane(entity, C130PayloadType.WEAPONS); }; + + public static void spawnPlane(Entity entity, C130PayloadType payload) { + if(!entity.worldObj.isRemote && entity.ticksExisted == 40) { + EntityBulletBaseMK4 bullet = (EntityBulletBaseMK4) entity; + if(bullet.getThrower() != null) bullet.worldObj.playSoundAtEntity(bullet.getThrower(), "hbm:item.techBleep", 1.0F, 1.0F); + EntityC130 c130 = new EntityC130(bullet.worldObj); + int x = (int) Math.floor(bullet.posX); + int z = (int) Math.floor(bullet.posZ); + int y = bullet.worldObj.getHeightValue(x, z); + c130.fac(bullet.worldObj, x, y, z, payload); + WorldUtil.loadAndSpawnEntityInWorld(c130); + TrackerUtil.setTrackingRange(bullet.worldObj, c130, 250); + } + } + + public static void init() { + + g26_flare = new BulletConfig().setItem(EnumAmmo.G26_FLARE).setCasing(EnumCasingType.LARGE, 4).setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false).setOnImpact(LAMBDA_STANDARD_IGNITE).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x9E1616).setScale(2F).register("g26Flare")); + g26_flare_supply = new BulletConfig().setItem(EnumAmmo.G26_FLARE_SUPPLY).setCasing(EnumCasingType.LARGE, 4).setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false).setOnImpact(LAMBDA_STANDARD_IGNITE).setOnUpdate(LAMBDA_SPAWN_C130_SUPPLIESS).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x3C80F0).setScale(2F).register("g26FlareSupply")); + g26_flare_weapon = new BulletConfig().setItem(EnumAmmo.G26_FLARE_WEAPON).setCasing(EnumCasingType.LARGE, 4).setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false).setOnImpact(LAMBDA_STANDARD_IGNITE).setOnUpdate(LAMBDA_SPAWN_C130_WEAPONS).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x278400).setScale(2F).register("g26FlareWeapon")); + + BulletConfig g40_base = new BulletConfig().setLife(200).setVel(2F).setGrav(0.035D); + g40_he = g40_base.clone().setItem(EnumAmmo.G40_HE).setCasing(EnumCasingType.LARGE, 4).setOnImpact(LAMBDA_STANDARD_EXPLODE).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x777777).setScale(2, 2F, 1.5F).register("g40")); + g40_heat = g40_base.clone().setItem(EnumAmmo.G40_HEAT).setCasing(EnumCasingType.LARGE, 4).setOnImpact(LAMBDA_STANDARD_EXPLODE_HEAT).setDamage(0.5F).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x5E6854).setScale(2, 2F, 1.5F).register("g40heat")); + g40_demo = g40_base.clone().setItem(EnumAmmo.G40_DEMO).setCasing(EnumCasingType.LARGE, 4).setOnImpact(LAMBDA_STANDARD_EXPLODE_DEMO).setDamage(0.75F).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0xE30000).setScale(2, 2F, 1.5F).register("g40demo")); + g40_inc = g40_base.clone().setItem(EnumAmmo.G40_INC).setCasing(EnumCasingType.LARGE, 4).setOnImpact(LAMBDA_STANDARD_EXPLODE_INC).setDamage(0.75F).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0xE86F20).setScale(2, 2F, 1.5F).register("g40inc")); + g40_phosphorus = g40_base.clone().setItem(EnumAmmo.G40_PHOSPHORUS).setCasing(EnumCasingType.LARGE, 4).setOnImpact(LAMBDA_STANDARD_EXPLODE_PHOSPHORUS).setDamage(0.75F).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0xC8C8C8).setScale(2, 2F, 1.5F).register("g40phos")); + + ModItems.gun_flaregun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(100).draw(7).inspect(39).crosshair(Crosshair.L_CIRCUMFLEX).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(15F).delay(20).reload(28).jam(33).sound("hbm:weapon.hkShoot", 1.0F, 1.0F) + .mag(new MagazineSingleReload(0, 1).addConfigs(g26_flare, g26_flare_supply, g26_flare_weapon)) + .offset(0.75, -0.0625, -0.1875D) + .setupStandardFire().recoil(LAMBDA_RECOIL_GL)) + .setupStandardConfiguration() + .anim(LAMBDA_FLAREGUN_ANIMS).orchestra(Orchestras.ORCHESTRA_FLAREGUN) + ).setUnlocalizedName("gun_flaregun"); + + ModItems.gun_congolake = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(400).draw(7).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCUMFLEX).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(20F).delay(24).reload(16, 16, 16, 0).jam(0).sound("hbm:weapon.glShoot", 1.0F, 1.0F) + .mag(new MagazineSingleReload(0, 4).addConfigs(g40_he, g40_heat, g40_demo, g40_inc, g40_phosphorus)) + .offset(0.75, -0.0625, -0.1875D) + .setupStandardFire().recoil(LAMBDA_RECOIL_GL)) + .setupStandardConfiguration() + .anim(LAMBDA_CONGOLAKE_ANIMS).orchestra(Orchestras.ORCHESTRA_CONGOLAKE) + ).setUnlocalizedName("gun_congolake"); + } + + public static BiConsumer LAMBDA_SMOKE = (stack, ctx) -> { + Lego.handleStandardSmoke(ctx.entity, stack, 1500, 0.025D, 1.05D, 0); + }; + + public static BiConsumer LAMBDA_RECOIL_GL = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil(10, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5)); + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_FLAREGUN_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(-90, 0, 0, 0).addPos(0, 0, 0, 350, IType.SIN_DOWN)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, 0, 50).addPos(0, 0, -3, 50).addPos(0, 0, 0, 250)) + .addBus("HAMMER", new BusAnimationSequence().addPos(15, 0, 0, 50).addPos(15, 0, 0, 550).addPos(0, 0, 0, 100)); + case CYCLE_DRY: return new BusAnimation() + .addBus("HAMMER", new BusAnimationSequence().addPos(15, 0, 0, 50).addPos(15, 0, 0, 550).addPos(0, 0, 0, 100)); + case RELOAD: return new BusAnimation() + .addBus("OPEN", new BusAnimationSequence().addPos(45, 0, 0, 200, IType.SIN_FULL).addPos(45, 0, 0, 750).addPos(0, 0, 0, 200, IType.SIN_UP)) + .addBus("SHELL", new BusAnimationSequence().addPos(4, -8, -4, 0).addPos(4, -8, -4, 200).addPos(0, 0, -5, 500, IType.SIN_DOWN).addPos(0, 0, 0, 200, IType.SIN_UP)) + .addBus("FLIP", new BusAnimationSequence().addPos(0, 0, 0, 200).addPos(25, 0, 0, 200, IType.SIN_DOWN).addPos(25, 0, 0, 800).addPos(0, 0, 0, 200, IType.SIN_DOWN)); + case JAMMED: return new BusAnimation() + .addBus("OPEN", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(45, 0, 0, 200, IType.SIN_FULL).addPos(45, 0, 0, 500).addPos(0, 0, 0, 200, IType.SIN_UP)) + .addBus("FLIP", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, 0, 200).addPos(25, 0, 0, 200, IType.SIN_DOWN).addPos(25, 0, 0, 550).addPos(0, 0, 0, 200, IType.SIN_DOWN)); + case INSPECT: return new BusAnimation() + .addBus("FLIP", new BusAnimationSequence().addPos(-360 * 3, 0, 0, 1500, IType.SIN_FULL)); + } + + return null; + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_CONGOLAKE_ANIMS = (stack, type) -> { + int ammo = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory); + switch(type) { + case EQUIP: return ResourceManager.congolake_anim.get("Equip"); + case CYCLE: return ResourceManager.congolake_anim.get(ammo <= 1 ? "FireEmpty" : "Fire"); + case RELOAD: return ResourceManager.congolake_anim.get(ammo == 0 ? "ReloadEmpty": "ReloadStart"); + case RELOAD_CYCLE: return ResourceManager.congolake_anim.get("Reload"); + case RELOAD_END: return ResourceManager.congolake_anim.get("ReloadEnd"); + case JAMMED: return ResourceManager.congolake_anim.get("Jammed"); + case INSPECT: return ResourceManager.congolake_anim.get("Inspect"); + } + + return null; + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java new file mode 100644 index 000000000..7597104b3 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory44.java @@ -0,0 +1,261 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.function.BiConsumer; +import java.util.function.BiFunction; + +import com.hbm.entity.projectile.EntityBoxcar; +import com.hbm.entity.projectile.EntityBulletBaseMK4; +import com.hbm.entity.projectile.EntityTorpedo; +import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumCasingType; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; +import com.hbm.items.weapon.sedna.mags.MagazineFullReload; +import com.hbm.items.weapon.sedna.mags.MagazineSingleReload; +import com.hbm.lib.RefStrings; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.BusAnimationKeyframe.IType; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import net.minecraft.item.ItemStack; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.ResourceLocation; + +public class XFactory44 { + + public static final ResourceLocation scope_lilmac = new ResourceLocation(RefStrings.MODID, "textures/misc/scope_44.png"); + + public static BulletConfig m44_bp; + public static BulletConfig m44_sp; + public static BulletConfig m44_fmj; + public static BulletConfig m44_jhp; + public static BulletConfig m44_ap; + public static BulletConfig m44_express; + public static BulletConfig m44_equestrian_pip; + public static BulletConfig m44_equestrian_mn7; + + public static BiConsumer LAMBDA_BOXCAR = (bullet, mop) -> { + EntityBoxcar pippo = new EntityBoxcar(bullet.worldObj); + pippo.posX = mop.hitVec.xCoord; + pippo.posY = mop.hitVec.yCoord + 50; + pippo.posZ = mop.hitVec.zCoord;; + bullet.worldObj.spawnEntityInWorld(pippo); + bullet.worldObj.playSoundEffect(pippo.posX, pippo.posY + 50, pippo.posZ, "hbm:alarm.trainHorn", 100F, 1F); + bullet.setDead(); + }; + + public static BiConsumer LAMBDA_TORPEDO = (bullet, mop) -> { + EntityTorpedo pippo = new EntityTorpedo(bullet.worldObj); + pippo.posX = mop.hitVec.xCoord; + pippo.posY = mop.hitVec.yCoord + 50; + pippo.posZ = mop.hitVec.zCoord;; + bullet.worldObj.spawnEntityInWorld(pippo); + //bullet.worldObj.playSoundEffect(pippo.posX, pippo.posY + 50, pippo.posZ, "hbm:alarm.trainHorn", 100F, 1F); + bullet.setDead(); + }; + + public static void init() { + SpentCasing casing44 = new SpentCasing(CasingType.STRAIGHT).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(1F, 0.5D, 60, 20); + m44_bp = new BulletConfig().setItem(EnumAmmo.M44_BP).setCasing(EnumCasingType.SMALL, 12).setDamage(0.75F).setBlackPowder(true) + .setCasing(casing44.clone().register("m44bp")); + m44_sp = new BulletConfig().setItem(EnumAmmo.M44_SP).setCasing(EnumCasingType.SMALL, 6) + .setCasing(casing44.clone().register("m44")); + m44_fmj = new BulletConfig().setItem(EnumAmmo.M44_FMJ).setCasing(EnumCasingType.SMALL, 6).setDamage(0.8F).setThresholdNegation(3F).setArmorPiercing(0.1F) + .setCasing(casing44.clone().register("m44fmj")); + m44_jhp = new BulletConfig().setItem(EnumAmmo.M44_JHP).setCasing(EnumCasingType.SMALL, 6).setDamage(1.5F).setHeadshot(1.5F).setArmorPiercing(-0.25F) + .setCasing(casing44.clone().register("m44jhp")); + m44_ap = new BulletConfig().setItem(EnumAmmo.M44_AP).setCasing(EnumCasingType.SMALL_STEEL, 6).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(1.5F).setThresholdNegation(7.5F).setArmorPiercing(0.15F) + .setCasing(casing44.clone().setColor(SpentCasing.COLOR_CASE_44).register("m44ap")); + m44_express = new BulletConfig().setItem(EnumAmmo.M44_EXPRESS).setCasing(EnumCasingType.SMALL, 6).setDoesPenetrate(true).setDamage(1.5F).setThresholdNegation(3F).setArmorPiercing(0.1F).setWear(1.5F) + .setCasing(casing44.clone().register("m44express")); + m44_equestrian_pip = new BulletConfig().setItem(EnumAmmoSecret.M44_EQUESTRIAN).setDamage(0F).setOnImpact(LAMBDA_BOXCAR) + .setCasing(casing44.clone().setColor(SpentCasing.COLOR_CASE_EQUESTRIAN).register("m44equestrianPip")); + m44_equestrian_mn7 = new BulletConfig().setItem(EnumAmmoSecret.M44_EQUESTRIAN).setDamage(0F).setOnImpact(LAMBDA_TORPEDO) + .setCasing(casing44.clone().setColor(SpentCasing.COLOR_CASE_EQUESTRIAN).register("m44equestrianMn7")); + + ModItems.gun_henry = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(300).draw(15).inspect(23).reloadSequential(true).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(10F).delay(20).reload(25, 11, 14, 8).jam(45).sound("hbm:weapon.fire.rifle", 1.0F, 1.0F) + .mag(new MagazineSingleReload(0, 14).addConfigs(m44_bp, m44_sp, m44_fmj, m44_jhp, m44_ap, m44_express)) + .offset(0.75, -0.0625, -0.1875D) + .setupStandardFire().recoil(LAMBDA_RECOIL_HENRY)) + .setupStandardConfiguration() + .anim(LAMBDA_HENRY_ANIMS).orchestra(Orchestras.ORCHESTRA_HENRY) + ).setUnlocalizedName("gun_henry"); + + ModItems.gun_heavy_revolver = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(600).draw(10).inspect(23).crosshair(Crosshair.L_CLASSIC).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(15F).delay(14).reload(46).jam(23).sound("hbm:weapon.44Shoot", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 6).addConfigs(m44_bp, m44_sp, m44_fmj, m44_jhp, m44_ap, m44_express)) + .offset(0.75, -0.0625, -0.3125D) + .setupStandardFire().recoil(LAMBDA_RECOIL_NOPIP)) + .setupStandardConfiguration() + .anim(LAMBDA_NOPIP_ANIMS).orchestra(Orchestras.ORCHESTRA_NOPIP) + ).setUnlocalizedName("gun_heavy_revolver"); + ModItems.gun_heavy_revolver_lilmac = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() + .dura(31_000).draw(10).inspect(23).crosshair(Crosshair.L_CLASSIC).scopeTexture(scope_lilmac).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(30F).delay(14).reload(46).jam(23).sound("hbm:weapon.44Shoot", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 6).addConfigs(m44_equestrian_pip, m44_bp, m44_sp, m44_fmj, m44_jhp, m44_ap, m44_express)) + .offset(0.75, -0.0625, -0.3125D) + .setupStandardFire().recoil(LAMBDA_RECOIL_NOPIP)) + .setupStandardConfiguration() + .anim(LAMBDA_LILMAC_ANIMS).orchestra(Orchestras.ORCHESTRA_NOPIP) + ).setUnlocalizedName("gun_heavy_revolver_lilmac"); + ModItems.gun_heavy_revolver_protege = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() + .dura(31_000).draw(10).inspect(23).crosshair(Crosshair.L_CLASSIC).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(30F).delay(14).reload(46).jam(23).sound("hbm:weapon.44Shoot", 1.0F, 0.8F) + .mag(new MagazineFullReload(0, 6).addConfigs(m44_equestrian_mn7, m44_bp, m44_sp, m44_fmj, m44_jhp, m44_ap, m44_express)) + .offset(0.75, -0.0625, -0.3125D) + .setupStandardFire().recoil(LAMBDA_RECOIL_NOPIP)) + .setupStandardConfiguration() + .anim(LAMBDA_LILMAC_ANIMS).orchestra(Orchestras.ORCHESTRA_NOPIP) + ).setUnlocalizedName("gun_heavy_revolver_protege"); + + ModItems.gun_hangman = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() + .dura(600).draw(10).inspect(31).inspectCancel(false).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(25F).delay(10).reload(46).jam(23).sound("hbm:weapon.44Shoot", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 8).addConfigs(m44_bp, m44_sp, m44_fmj, m44_jhp, m44_ap, m44_express)) + .offset(1, -0.0625 * 2.5, -0.25D) + .setupStandardFire().recoil(LAMBDA_RECOIL_HANGMAN)) + .setupStandardConfiguration().ps(SMACK_A_FUCKER) + .anim(LAMBDA_HANGMAN_ANIMS).orchestra(Orchestras.ORCHESTRA_HANGMAN) + ).setUnlocalizedName("gun_hangman"); + } + + public static BiConsumer SMACK_A_FUCKER = (stack, ctx) -> { + if(ItemGunBaseNT.getState(stack, ctx.configIndex) == GunState.IDLE || ItemGunBaseNT.getLastAnim(stack, ctx.configIndex) == AnimType.CYCLE) { + ItemGunBaseNT.setState(stack, ctx.configIndex, GunState.DRAWING); + ItemGunBaseNT.setTimer(stack, ctx.configIndex, ctx.config.getInspectDuration(stack)); + ItemGunBaseNT.playAnimation(ctx.getPlayer(), stack, AnimType.INSPECT, ctx.configIndex); + } + }; + + public static BiConsumer LAMBDA_RECOIL_HENRY = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil(5, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1)); + }; + + public static BiConsumer LAMBDA_RECOIL_NOPIP = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil(10, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5)); + }; + + public static BiConsumer LAMBDA_RECOIL_HANGMAN = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil(5, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1)); + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_HENRY_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(-90, 0, 0, 0).addPos(0, 0, -3, 350, IType.SIN_DOWN)) + .addBus("SIGHT", new BusAnimationSequence().addPos(80, 0, 0, 0).addPos(80, 0, 0, 500).addPos(0, 0, -3, 250, IType.SIN_DOWN)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, 0, 50).addPos(0, 0, -1, 50).addPos(0, 0, 0, 250)) + .addBus("SIGHT", new BusAnimationSequence().addPos(35, 0, 0, 100, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL)) + .addBus("LEVER", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(-90, 0, 0, 200).addPos(0, 0, 0, 200)) + .addBus("TURN", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(0, 0, 45, 200, IType.SIN_DOWN).addPos(0, 0, 0, 200, IType.SIN_UP)) + .addBus("HAMMER", new BusAnimationSequence().addPos(30, 0, 0, 50).addPos(30, 0, 0, 550).addPos(0, 0, 0, 200)); + case CYCLE_DRY: return new BusAnimation() + .addBus("LEVER", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(-90, 0, 0, 200).addPos(0, 0, 0, 200)) + .addBus("TURN", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(0, 0, 45, 200, IType.SIN_DOWN).addPos(0, 0, 0, 200, IType.SIN_UP)) + .addBus("HAMMER", new BusAnimationSequence().addPos(30, 0, 0, 50).addPos(30, 0, 0, 550).addPos(0, 0, 0, 200)); + case RELOAD: return new BusAnimation() + .addBus("LIFT", new BusAnimationSequence().addPos(-60, 0, 0, 400, IType.SIN_FULL)) + .addBus("TWIST", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, -90, 200, IType.SIN_FULL)) + .addBus("BULLET", new BusAnimationSequence().addPos(0, 0, 0, 700).addPos(3, 0, -6, 0).addPos(0, 0, 1, 300, IType.SIN_FULL).addPos(0, 0, 0, 250, IType.SIN_FULL)); + case RELOAD_CYCLE: return new BusAnimation() + .addBus("LIFT", new BusAnimationSequence().addPos(-60, 0, 0, 0)) + .addBus("TWIST", new BusAnimationSequence().addPos(0, 0, -90, 0)) + .addBus("BULLET", new BusAnimationSequence().addPos(3, 0, -6, 0).addPos(0, 0, 1, 300, IType.SIN_FULL).addPos(0, 0, 0, 250, IType.SIN_FULL)); + case RELOAD_END: + boolean empty = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmountBeforeReload(stack) <= 0; + return new BusAnimation() + .addBus("LIFT", new BusAnimationSequence().addPos(-60, 0, 0, 0).addPos(-60, 0, 0, 300).addPos(0, 0, 0, 400, IType.SIN_FULL)) + .addBus("TWIST", new BusAnimationSequence().addPos(0, 0, -90, 0).addPos(0, 0, 0, 200, IType.SIN_FULL)) + .addBus("LEVER", new BusAnimationSequence().addPos(0, 0, 0, 700).addPos(empty ? -90 : 0, 0, 0, 200).addPos(0, 0, 0, 200)) + .addBus("TURN", new BusAnimationSequence().addPos(0, 0, 0, 700).addPos(0, 0, empty ? 45 : 0, 200, IType.SIN_DOWN).addPos(0, 0, 0, 200, IType.SIN_UP)); + case JAMMED: return new BusAnimation() + .addBus("LIFT", new BusAnimationSequence().addPos(-60, 0, 0, 0).addPos(-60, 0, 0, 300).addPos(0, 0, 0, 400, IType.SIN_FULL)) + .addBus("TWIST", new BusAnimationSequence().addPos(0, 0, -90, 0).addPos(0, 0, 0, 200, IType.SIN_FULL)) + .addBus("LEVER", new BusAnimationSequence().addPos(0, 0, 0, 700).addPos(-90, 0, 0, 200).addPos(0, 0, 0, 200).addPos(0, 0, 0, 500).addPos(-90, 0, 0, 200).addPos(0, 0, 0, 200).addPos(0, 0, 0, 200).addPos(-90, 0, 0, 200).addPos(0, 0, 0, 200)) + .addBus("TURN", new BusAnimationSequence().addPos(0, 0, 0, 700).addPos(0, 0, 45, 200, IType.SIN_DOWN).addPos(0, 0, 0, 200, IType.SIN_UP).addPos(0, 0, 0, 500).addPos(0, 0, 45, 200, IType.SIN_FULL).addPos(0, 0, 45, 600).addPos(0, 0, 0, 200, IType.SIN_FULL)); + case INSPECT: return new BusAnimation() + .addBus("YEET", new BusAnimationSequence().addPos(0, 2, 0, 200, IType.SIN_DOWN).addPos(0, 0, 0, 200, IType.SIN_UP)) + .addBus("ROLL", new BusAnimationSequence().addPos(0, 0, 360, 400)); + } + + return null; + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_NOPIP_ANIMS = (stack, type) -> { + switch(type) { + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, 0, 50).addPos(0, 0, -3, 50).addPos(0, 0, 0, 250)) + .addBus("HAMMER", new BusAnimationSequence().addPos(0, 0, 1, 50).addPos(0, 0, 1, 400).addPos(0, 0, 0, 200)) + .addBus("DRUM", new BusAnimationSequence().addPos(0, 0, 0, 450).addPos(0, 0, 1, 200)); + case CYCLE_DRY: return new BusAnimation() + .addBus("HAMMER", new BusAnimationSequence().addPos(0, 0, 1, 50).addPos(0, 0, 1, 300 + 100).addPos(0, 0, 0, 200)) + .addBus("DRUM", new BusAnimationSequence().addPos(0, 0, 0, 450).addPos(0, 0, 1, 200)); + case EQUIP: return new BusAnimation().addBus("ROTATE", new BusAnimationSequence().addPos(90, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_DOWN)); + case RELOAD: return new BusAnimation() + .addBus("RELAOD_TILT", new BusAnimationSequence().addPos(-15, 0, 0, 100).addPos(65, 0, 0, 100).addPos(45, 0, 0, 50).addPos(0, 0, 0, 200).addPos(0, 0, 0, 1450).addPos(-80, 0, 0, 100).addPos(-80, 0, 0, 100).addPos(0, 0, 0, 200)) + .addBus("RELOAD_CYLINDER", new BusAnimationSequence().addPos(0, 0, 0, 200).addPos(90, 0, 0, 100).addPos(90, 0, 0, 1700).addPos(0, 0, 0, 70)) + .addBus("RELOAD_LIFT", new BusAnimationSequence().addPos(0, 0, 0, 350).addPos(-45, 0, 0, 250).addPos(-45, 0, 0, 350).addPos(-15, 0, 0, 200).addPos(-15, 0, 0, 1050).addPos(0, 0, 0, 100)) + .addBus("RELOAD_JOLT", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(2, 0, 0, 50).addPos(0, 0, 0, 100)) + .addBus("RELOAD_BULLETS", new BusAnimationSequence().addPos(0, 0, 0, 650).addPos(10, 0, 0, 300).addPos(10, 0, 0, 200).addPos(0, 0, 0, 700)) + .addBus("RELOAD_BULLETS_CON", new BusAnimationSequence().addPos(1, 0, 0, 0).addPos(1, 0, 0, 950).addPos(0, 0, 0, 1 ) ); + case INSPECT: + case JAMMED: return new BusAnimation() + .addBus("RELAOD_TILT", new BusAnimationSequence().addPos(-15, 0, 0, 100).addPos(65, 0, 0, 100).addPos(45, 0, 0, 50).addPos(0, 0, 0, 200).addPos(0, 0, 0, 200).addPos(-80, 0, 0, 100).addPos(-80, 0, 0, 100).addPos(0, 0, 0, 200)) + .addBus("RELOAD_CYLINDER", new BusAnimationSequence().addPos(0, 0, 0, 200).addPos(90, 0, 0, 100).addPos(90, 0, 0, 450).addPos(0, 0, 0, 70)); + } + + return null; + }; + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_LILMAC_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation().addBus("SPIN", new BusAnimationSequence().addPos(-360, 0, 0, 350)); + } + + return LAMBDA_NOPIP_ANIMS.apply(stack, type); + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_HANGMAN_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation().addBus("EQUIP", new BusAnimationSequence().addPos(60, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_DOWN)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, 0, 50).addPos(0, 0, -3, 50).addPos(0, 0, 0, 250)); + case RELOAD: return new BusAnimation() + .addBus("LID", new BusAnimationSequence().addPos(0, 0, -90, 250).addPos(0, 0, -90, 1500).addPos(0, 0, 0, 250)) + .addBus("MAG", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(0, -10, 0, 250, IType.SIN_UP).addPos(0, -10, 0, 500).addPos(0, 0, 0, 350, IType.SIN_FULL)) + .addBus("BULLETS", new BusAnimationSequence().addPos(1, 1, 1, 0).addPos(0, 0, 0, 500)) + .addBus("EQUIP", new BusAnimationSequence().addPos(-15, 0, 0, 500, IType.SIN_FULL).addPos(-15, 0, 0, 850).addPos(-25, 0, 0, 100, IType.SIN_DOWN).addPos(0, 0, 0, 350, IType.SIN_FULL)) + .addBus("ROLL", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, 25, 250, IType.SIN_FULL).addPos(0, 0, 25, 1000).addPos(0, 0, 0, 250, IType.SIN_FULL)); + case INSPECT: return new BusAnimation() + .addBus("TURN", new BusAnimationSequence().addPos(0, 170, 0, 500, IType.SIN_UP).addPos(0, 170, 0, 550).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("ROLL", new BusAnimationSequence().addPos(0, 0, 110, 500, IType.SIN_FULL).addPos(0, 0, 110, 550).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("SMACK", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, 1, 150, IType.SIN_DOWN).addPos(0, 0, -3, 150, IType.SIN_UP).addPos(0, 0, 0, 350, IType.SIN_FULL)); + case JAMMED: return new BusAnimation() + .addBus("LID", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, -90, 250).addPos(0, 0, -90, 300).addPos(0, 0, 0, 250)) + .addBus("MAG", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, 0, 250).addPos(0, -3, 0, 150, IType.SIN_UP).addPos(0, 0, 0, 150, IType.SIN_FULL)) + .addBus("EQUIP", new BusAnimationSequence().addPos(0, 0, 0, 1000).addPos(-10, 0, 0, 100, IType.SIN_DOWN).addPos(0, 0, 0, 350, IType.SIN_FULL)) + .addBus("ROLL", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, 25, 250, IType.SIN_FULL).addPos(0, 0, 25, 300).addPos(0, 0, 0, 250, IType.SIN_FULL)); + } + + return null; + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory50.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory50.java new file mode 100644 index 000000000..e7dd3b390 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory50.java @@ -0,0 +1,77 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.function.BiConsumer; +import java.util.function.BiFunction; + +import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumCasingType; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.mags.MagazineBelt; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.BusAnimationKeyframe.IType; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import net.minecraft.item.ItemStack; + +public class XFactory50 { + + public static BulletConfig bmg50_sp; + public static BulletConfig bmg50_fmj; + public static BulletConfig bmg50_jhp; + public static BulletConfig bmg50_ap; + public static BulletConfig bmg50_du; + + public static void init() { + SpentCasing casing762 = new SpentCasing(CasingType.BOTTLENECK).setColor(SpentCasing.COLOR_CASE_BRASS).setScale(1.5F); + bmg50_sp = new BulletConfig().setItem(EnumAmmo.BMG50_SP).setCasing(EnumCasingType.LARGE, 12) + .setCasing(casing762.clone().register("bmg50")); + bmg50_fmj = new BulletConfig().setItem(EnumAmmo.BMG50_FMJ).setCasing(EnumCasingType.LARGE, 12).setDamage(0.8F).setThresholdNegation(7F).setArmorPiercing(0.1F) + .setCasing(casing762.clone().register("bmg50fmj")); + bmg50_jhp = new BulletConfig().setItem(EnumAmmo.BMG50_JHP).setCasing(EnumCasingType.LARGE, 12).setDamage(1.5F).setHeadshot(1.5F).setArmorPiercing(-0.25F) + .setCasing(casing762.clone().register("bmg50jhp")); + bmg50_ap = new BulletConfig().setItem(EnumAmmo.BMG50_AP).setCasing(EnumCasingType.LARGE_STEEL, 12).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(1.5F).setThresholdNegation(17.5F).setArmorPiercing(0.15F) + .setCasing(casing762.clone().setColor(SpentCasing.COLOR_CASE_44).register("bmg50ap")); + bmg50_du = new BulletConfig().setItem(EnumAmmo.BMG50_DU).setCasing(EnumCasingType.LARGE_STEEL, 12).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(2.5F).setThresholdNegation(21F).setArmorPiercing(0.25F) + .setCasing(casing762.clone().setColor(SpentCasing.COLOR_CASE_44).register("bmg50du")); + + ModItems.gun_m2 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(3_000).draw(10).inspect(31).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(7.5F).delay(2).dry(10).auto(true).spread(0.005F).sound("hbm:turret.chekhov_fire", 1.0F, 1.0F) + .mag(new MagazineBelt().addConfigs(bmg50_sp, bmg50_fmj, bmg50_jhp, bmg50_ap, bmg50_du)) + .offset(1, -0.0625 * 2.5, -0.25D) + .setupStandardFire().recoil(LAMBDA_RECOIL_M2)) + .setupStandardConfiguration() + .anim(LAMBDA_M2_ANIMS).orchestra(Orchestras.ORCHESTRA_M2) + ).setUnlocalizedName("gun_m2"); + } + + public static BiConsumer LAMBDA_SMOKE = (stack, ctx) -> { + Lego.handleStandardSmoke(ctx.entity, stack, 2000, 0.05D, 1.1D, 0); + }; + + public static BiConsumer LAMBDA_RECOIL_M2 = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil((float) (ctx.getPlayer().getRNG().nextGaussian() * 0.5), (float) (ctx.getPlayer().getRNG().nextGaussian() * 0.5)); + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_M2_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(80, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_FULL)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, -0.25, 25).addPos(0, 0, 0, 75)); + } + + return null; + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory556mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory556mm.java new file mode 100644 index 000000000..b4a43e789 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory556mm.java @@ -0,0 +1,187 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.function.BiConsumer; +import java.util.function.BiFunction; + +import com.hbm.config.ClientConfig; +import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumCasingType; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.mags.MagazineFullReload; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.BusAnimationKeyframe.IType; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +public class XFactory556mm { + + public static final ResourceLocation scope_lilmac = new ResourceLocation(RefStrings.MODID, "textures/misc/scope_44.png"); + + public static BulletConfig r556_sp; + public static BulletConfig r556_fmj; + public static BulletConfig r556_jhp; + public static BulletConfig r556_ap; + + public static void init() { + SpentCasing casing556 = new SpentCasing(CasingType.BOTTLENECK).setColor(SpentCasing.COLOR_CASE_BRASS).setScale(0.8F); + r556_sp = new BulletConfig().setItem(EnumAmmo.R556_SP).setCasing(EnumCasingType.SMALL, 8) + .setCasing(casing556.clone().register("r556")); + r556_fmj = new BulletConfig().setItem(EnumAmmo.R556_FMJ).setCasing(EnumCasingType.SMALL, 8).setDamage(0.8F).setThresholdNegation(4F).setArmorPiercing(0.1F) + .setCasing(casing556.clone().register("r556fmj")); + r556_jhp = new BulletConfig().setItem(EnumAmmo.R556_JHP).setCasing(EnumCasingType.SMALL, 8).setDamage(1.5F).setHeadshot(1.5F).setArmorPiercing(-0.25F) + .setCasing(casing556.clone().register("r556jhp")); + r556_ap = new BulletConfig().setItem(EnumAmmo.R556_AP).setCasing(EnumCasingType.SMALL_STEEL, 8).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(1.5F).setThresholdNegation(10F).setArmorPiercing(0.15F) + .setCasing(casing556.clone().setColor(SpentCasing.COLOR_CASE_44).register("r556ap")); + + ModItems.gun_g3 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(3_000).draw(10).inspect(33).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(5F).delay(2).auto(true).dry(15).spread(0.0F).reload(50).jam(47).sound("hbm:weapon.fire.assault", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 30).addConfigs(r556_sp, r556_fmj, r556_jhp, r556_ap)) + .offset(1, -0.0625 * 2.5, -0.25D) + .setupStandardFire().recoil(LAMBDA_RECOIL_G3)) + .setupStandardConfiguration().ps(Lego.LAMBDA_STANDARD_CLICK_SECONDARY) + .anim(LAMBDA_G3_ANIMS).orchestra(Orchestras.ORCHESTRA_G3) + ).setUnlocalizedName("gun_g3"); + + ModItems.gun_stg77 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(3_000).draw(10).inspect(125).crosshair(Crosshair.CIRCLE).scopeTexture(scope_lilmac).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(10F).delay(2).dry(15).auto(true).spread(0.0F).reload(46).jam(0).sound("hbm:weapon.fire.assault", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 30).addConfigs(r556_sp, r556_fmj, r556_jhp, r556_ap)) + .offset(1, -0.0625 * 2.5, -0.25D) + .setupStandardFire().recoil(LAMBDA_RECOIL_STG)) + .pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).ps(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD).pt(Lego.LAMBDA_TOGGLE_AIM) + .decider(LAMBDA_STG77_DECIDER) + .anim(LAMBDA_STG77_ANIMS).orchestra(Orchestras.ORCHESTRA_STG77) + ).setUnlocalizedName("gun_stg77"); + } + + public static BiConsumer LAMBDA_SMOKE = (stack, ctx) -> { + Lego.handleStandardSmoke(ctx.entity, stack, 1500, 0.075D, 1.1D, 0); + }; + + public static BiConsumer LAMBDA_STG77_DECIDER = (stack, ctx) -> { + int index = ctx.configIndex; + GunState lastState = ItemGunBaseNT.getState(stack, index); + GunStateDecider.deciderStandardFinishDraw(stack, lastState, index); + GunStateDecider.deciderStandardClearJam(stack, lastState, index); + GunStateDecider.deciderStandardReload(stack, ctx, lastState, 0, index); + GunStateDecider.deciderAutoRefire(stack, ctx, lastState, 0, index, () -> { return ItemGunBaseNT.getSecondary(stack, index); }); + }; + + public static BiConsumer LAMBDA_RECOIL_G3 = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil((float) (ctx.getPlayer().getRNG().nextGaussian() * 0.25), (float) (ctx.getPlayer().getRNG().nextGaussian() * 0.25)); + }; + + public static BiConsumer LAMBDA_RECOIL_STG = (stack, ctx) -> { }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_G3_ANIMS = (stack, type) -> { + boolean empty = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory) <= 0; + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(45, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_FULL)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, ItemGunBaseNT.getIsAiming(stack) ? -0.5 : -0.75, 25, IType.SIN_DOWN).addPos(0, 0, 0, 75, IType.SIN_FULL)); + case CYCLE_DRY: return new BusAnimation() + .addBus("BOLT", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(0, 0, -3.25, 150).addPos(0, 0, 0, 100)) + .addBus("LIFT", new BusAnimationSequence().addPos(0, 0, 0, 400).addPos(-1, 0, 0, 100, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL)); + case RELOAD: + return new BusAnimation() + .addBus("MAG", new BusAnimationSequence() + .addPos(0, -8, 0, 250, IType.SIN_UP) //250 + .addPos(0, -8, 0, 1000) //1250 + .addPos(0, 0, 0, 300)) //1550 + .addBus("BOLT", new BusAnimationSequence() + .addPos(0, 0, 0, 250) //250 + .addPos(0, 0, -3.25, 150) //400 + .addPos(0, 0, -3.25, 1250) //1750 + .addPos(0, 0, 0, 100)) //1850 + .addBus("HANDLE", new BusAnimationSequence() + .addPos(0, 0, 0, 500) //500 + .addPos(0, 0, 45, 50) //550 + .addPos(0, 0, 45, 1150) //1700 + .addPos(0, 0, 0, 50)) //1750 + .addBus("LIFT", new BusAnimationSequence() + .addPos(0, 0, 0, 750) //750 + .addPos(-25, 0, 0, 500, IType.SIN_FULL) //1250 + .addPos(-25, 0, 0, 750) //2000 + .addPos(0, 0, 0, 500, IType.SIN_FULL)) //3500 + .addBus("BULLET", new BusAnimationSequence().addPos(empty ? 1 : 0, 0, 0, 0).addPos(0, 0, 0, 1000)); + case INSPECT: return new BusAnimation() + .addBus("MAG", new BusAnimationSequence() + .addPos(0, -1, 0, 150) //150 + .addPos(2, -1, 0, 150) //300 + .addPos(2, 8, 0, 350, IType.SIN_DOWN) //650 + .addPos(2, -2, 0, 350, IType.SIN_UP) //1000 + .addPos(2, -1, 0, 50) //1050 + .addPos(2, -1, 0, 100) //1150 + .addPos(0, -1, 0, 150, IType.SIN_FULL) //1300 + .addPos(0, 0, 0, 150, IType.SIN_UP)) //1450 + .addBus("SPEEN", new BusAnimationSequence().addPos(0, 0, 0, 300).addPos(0, 360, 360, 700)) + .addBus("LIFT", new BusAnimationSequence().addPos(0, 0, 0, 1450).addPos(-2, 0, 0, 100, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL)) + .addBus("BULLET", new BusAnimationSequence().addPos(empty ? 1 : 0, 0, 0, 0)); + case JAMMED: return new BusAnimation() + .addBus("LIFT", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(-25, 0, 0, 250, IType.SIN_FULL).addPos(-25, 0, 0, 1250).addPos(0, 0, 0, 350, IType.SIN_FULL)) + .addBus("BOLT", new BusAnimationSequence().addPos(0, 0, 0, 1000).addPos(0, 0, -3.25, 150).addPos(0, 0, 0, 100).addPos(0, 0, 0, 250).addPos(0, 0, -3.25, 150).addPos(0, 0, 0, 100)); + } + + return null; + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_STG77_ANIMS = (stack, type) -> { + if(ClientConfig.GUN_ANIMS_LEGACY.get()) { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(45, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_FULL)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, ItemGunBaseNT.getIsAiming(stack) ? -0.125 : -0.375, 25, IType.SIN_DOWN).addPos(0, 0, 0, 75, IType.SIN_FULL)) + .addBus("SAFETY", new BusAnimationSequence().addPos(0.25, 0, 0, 0).addPos(0.25, 0, 0, 2000).addPos(0, 0, 0, 50)); + case CYCLE_DRY: return new BusAnimation() + .addBus("BOLT", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(0, 0, -2, 150).addPos(0, 0, 0, 100, IType.SIN_UP)) + .addBus("SAFETY", new BusAnimationSequence().addPos(0.25, 0, 0, 0).addPos(0.25, 0, 0, 2000).addPos(0, 0, 0, 50)); + case RELOAD: return new BusAnimation() + .addBus("BOLT", new BusAnimationSequence().addPos(0, 0, -2, 150).addPos(0, 0, -2, 1600).addPos(0, 0, 0, 100, IType.SIN_UP)) + .addBus("HANDLE", new BusAnimationSequence().addPos(0, 0, 0, 150).addPos(0, 0, 20, 50).addPos(0, 0, 20, 1500).addPos(0, 0, 0, 50)) + .addBus("LIFT", new BusAnimationSequence().addPos(0, 0, 0, 200).addPos(-2, 0, 0, 100, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL)); + case INSPECT: return new BusAnimation() + .addBus("BOLT", new BusAnimationSequence().addPos(0, 0, -2, 150).addPos(0, 0, -2, 6100).addPos(0, 0, 0, 100, IType.SIN_UP)) + .addBus("HANDLE", new BusAnimationSequence().addPos(0, 0, 0, 150).addPos(0, 0, 20, 50).addPos(0, 0, 20, 6000).addPos(0, 0, 0, 50)) + .addBus("INSPECT_LEVER", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, -10, 100).addPos(0, 0, -10, 100).addPos(0, 0, 0, 100)) + .addBus("INSPECT_BARREL", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(0, 0, 20, 150).addPos(0, 0, 0, 400).addPos(0, 0, 0, 500).addPos(15, 0, 0, 500).addPos(15, 0, 0, 2000).addPos(0, 0, 0, 500).addPos(0, 0, 0, 500).addPos(0, 0, 20, 200).addPos(0, 0, 20, 400).addPos(0, 0, 0, 150)) + .addBus("INSPECT_MOVE", new BusAnimationSequence().addPos(0, 0, 0, 750).addPos(0, 0, 6, 1000).addPos(2, 0, 3, 500, IType.SIN_FULL).addPos(2, 0.75, 0, 500, IType.SIN_FULL).addPos(2, 0.75, 0, 1000).addPos(2, 0, 3, 500, IType.SIN_FULL).addPos(0, 0, 6, 500).addPos(0, 0, 0, 1000)) + .addBus("INSPECT_GUN", new BusAnimationSequence().addPos(0, 0, 0, 1750).addPos(15, 0, -70, 500, IType.SIN_FULL).addPos(15, 0, -70, 1500).addPos(0, 0, 0, 500, IType.SIN_FULL)); + } + } else { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(45, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_FULL)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, ItemGunBaseNT.getIsAiming(stack) ? -0.125 : -0.375, 25, IType.SIN_DOWN).addPos(0, 0, 0, 75, IType.SIN_FULL)) + .addBus("SAFETY", new BusAnimationSequence().addPos(0.25, 0, 0, 0).addPos(0.25, 0, 0, 2000).addPos(0, 0, 0, 50)); + case CYCLE_DRY: return ResourceManager.stg77_anim.get("FireDry"); + case RELOAD: return ResourceManager.stg77_anim.get("Reload"); + case INSPECT: return ResourceManager.stg77_anim.get("Inspect"); + } + } + + + return null; + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory75Bolt.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory75Bolt.java new file mode 100644 index 000000000..92d47c361 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory75Bolt.java @@ -0,0 +1,74 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.function.BiConsumer; +import java.util.function.BiFunction; + +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.mags.MagazineFullReload; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import net.minecraft.item.ItemStack; + +public class XFactory75Bolt { + + public static BulletConfig b75; + public static BulletConfig b75_inc; + public static BulletConfig b75_exp; + + public static void init() { + SpentCasing casing75 = new SpentCasing(CasingType.STRAIGHT).setColor(SpentCasing.COLOR_CASE_BRASS).setScale(2F, 2F, 1.5F); + + b75 = new BulletConfig().setItem(EnumAmmo.B75) + .setCasing(casing75.clone().register("b75")); + b75_inc = new BulletConfig().setItem(EnumAmmo.B75_INC).setDamage(0.8F).setArmorPiercing(0.1F) + .setCasing(casing75.clone().register("b75inc")); + b75_exp = new BulletConfig().setItem(EnumAmmo.B75_EXP).setDamage(1.5F).setArmorPiercing(-0.25F) + .setCasing(casing75.clone().register("b75exp")); + + ModItems.gun_bolter = new ItemGunBaseNT(WeaponQuality.SPECIAL, new GunConfig() + .dura(3_000).draw(20).inspect(31).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(15F).delay(2).auto(true).spread(0.005F).reload(40).jam(55).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 30).addConfigs(b75, b75_inc, b75_exp)) + .offset(1, -0.0625 * 2.5, -0.25D) + .setupStandardFire().recoil(LAMBDA_RECOIL_BOLT)) + .setupStandardConfiguration() + .anim(LAMBDA_BOLTER_ANIMS).orchestra(Orchestras.ORCHESTRA_BOLTER) + ).setUnlocalizedName("gun_bolter"); + } + + public static BiConsumer LAMBDA_SMOKE = (stack, ctx) -> { + Lego.handleStandardSmoke(ctx.entity, stack, 2000, 0.05D, 1.1D, 0); + }; + + public static BiConsumer LAMBDA_RECOIL_BOLT = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil((float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5), (float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5)); + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_BOLTER_ANIMS = (stack, type) -> { + switch(type) { + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(1, 0, 0, 25).addPos(0, 0, 0, 75)); + case RELOAD: return new BusAnimation() + .addBus("TILT", new BusAnimationSequence().addPos(1, 0, 0, 250).addPos(1, 0, 0, 1500).addPos(0, 0, 0, 250)) + .addBus("MAG", new BusAnimationSequence().addPos(0, 0, 1, 500).addPos(1, 0, 1, 500).addPos(0, 0, 0, 500)); + case JAMMED: return new BusAnimation() + .addBus("TILT", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(1, 0, 0, 250).addPos(1, 0, 0, 700).addPos(0, 0, 0, 250)) + .addBus("MAG", new BusAnimationSequence().addPos(0, 0, 0, 750).addPos(0.6, 0, 0, 250).addPos(0, 0, 0, 250)); + } + + return null; + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java new file mode 100644 index 000000000..bdea3cedb --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java @@ -0,0 +1,156 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.function.BiConsumer; +import java.util.function.BiFunction; + +import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumCasingType; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.mags.MagazineBelt; +import com.hbm.items.weapon.sedna.mags.MagazineFullReload; +import com.hbm.main.MainRegistry; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.BusAnimationKeyframe.IType; +import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.DamageResistanceHandler.DamageClass; + +import net.minecraft.item.ItemStack; + +public class XFactory762mm { + + public static BulletConfig r762_sp; + public static BulletConfig r762_fmj; + public static BulletConfig r762_jhp; + public static BulletConfig r762_ap; + public static BulletConfig r762_du; + + public static BulletConfig energy_lacunae; + public static BulletConfig energy_lacunae_overcharge; + public static BulletConfig energy_lacunae_ir; + + public static void init() { + SpentCasing casing762 = new SpentCasing(CasingType.BOTTLENECK).setColor(SpentCasing.COLOR_CASE_BRASS); + r762_sp = new BulletConfig().setItem(EnumAmmo.R762_SP).setCasing(EnumCasingType.SMALL, 6) + .setCasing(casing762.clone().register("r762")); + r762_fmj = new BulletConfig().setItem(EnumAmmo.R762_FMJ).setCasing(EnumCasingType.SMALL, 6).setDamage(0.8F).setThresholdNegation(5F).setArmorPiercing(0.1F) + .setCasing(casing762.clone().register("r762fmj")); + r762_jhp = new BulletConfig().setItem(EnumAmmo.R762_JHP).setCasing(EnumCasingType.SMALL, 6).setDamage(1.5F).setHeadshot(1.5F).setArmorPiercing(-0.25F) + .setCasing(casing762.clone().register("r762jhp")); + r762_ap = new BulletConfig().setItem(EnumAmmo.R762_AP).setCasing(EnumCasingType.SMALL_STEEL, 6).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(1.5F).setThresholdNegation(12.5F).setArmorPiercing(0.15F) + .setCasing(casing762.clone().setColor(SpentCasing.COLOR_CASE_44).register("r762ap")); + r762_du = new BulletConfig().setItem(EnumAmmo.R762_DU).setCasing(EnumCasingType.SMALL_STEEL, 6).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(2.5F).setThresholdNegation(15F).setArmorPiercing(0.25F) + .setCasing(casing762.clone().setColor(SpentCasing.COLOR_CASE_44).register("r762du")); + + energy_lacunae = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setCasing(new ItemStack(ModItems.ingot_polymer, 2), 4 * 40).setupDamageClass(DamageClass.LASER).setBeam().setReloadCount(40).setSpread(0.0F).setLife(5).setRenderRotations(false).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); + energy_lacunae_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setCasing(new ItemStack(ModItems.ingot_polymer, 2), 4 * 40).setupDamageClass(DamageClass.LASER).setBeam().setReloadCount(40).setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); + energy_lacunae_ir = new BulletConfig().setItem(EnumAmmo.CAPACITOR_IR).setCasing(new ItemStack(ModItems.ingot_polymer, 2), 4 * 40).setupDamageClass(DamageClass.FIRE).setBeam().setReloadCount(40).setSpread(0.0F).setLife(5).setRenderRotations(false).setOnBeamImpact(XFactoryEnergy.LAMBDA_IR_HIT); + + ModItems.gun_carbine = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(3_000).draw(10).inspect(31).reloadSequential(true).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(15F).delay(5).dry(15).spread(0.0F).reload(30, 0, 15, 0).jam(60).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 14).addConfigs(r762_sp, r762_fmj, r762_jhp, r762_ap, r762_du)) + .offset(1, -0.0625 * 2.5, -0.25D) + .setupStandardFire().recoil(LAMBDA_RECOIL_CARBINE)) + .setupStandardConfiguration() + .anim(LAMBDA_CARBINE_ANIMS).orchestra(Orchestras.ORCHESTRA_CARBIBE) + ).setUnlocalizedName("gun_carbine"); + + ModItems.gun_minigun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(50_000).draw(20).inspect(20).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(6F).delay(1).auto(true).dry(15).spread(0.01F).sound("hbm:weapon.calShoot", 1.0F, 1.0F) + .mag(new MagazineBelt().addConfigs(r762_sp, r762_fmj, r762_jhp, r762_ap, r762_du)) + .offset(1, -0.0625 * 2.5, -0.25D) + .setupStandardFire().recoil(LAMBDA_RECOIL_MINIGUN)) + .setupStandardConfiguration() + .anim(LAMBDA_MINIGUN_ANIMS).orchestra(Orchestras.ORCHESTRA_MINIGUN) + ).setUnlocalizedName("gun_minigun"); + ModItems.gun_minigun_lacunae = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() + .dura(50_000).draw(20).inspect(20).crosshair(Crosshair.L_CIRCLE) + .rec(new Receiver(0) + .dmg(12F).delay(1).auto(true).dry(15).reload(15).spread(0.01F).sound("hbm:weapon.fire.laserGatling", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 200).addConfigs(energy_lacunae, energy_lacunae_overcharge, energy_lacunae_ir)) + .offset(1, -0.0625 * 2.5, -0.25D) + .setupStandardFire().recoil(LAMBDA_RECOIL_LACUNAE)) + .setupStandardConfiguration() + .anim(LAMBDA_MINIGUN_ANIMS).orchestra(Orchestras.ORCHESTRA_MINIGUN) + ).setUnlocalizedName("gun_minigun_lacunae"); + } + + public static BiConsumer LAMBDA_SMOKE = (stack, ctx) -> { + Lego.handleStandardSmoke(ctx.entity, stack, 1500, 0.075D, 1.1D, 0); + }; + + public static BiConsumer LAMBDA_RECOIL_CARBINE = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil(5, (float) (ctx.getPlayer().getRNG().nextGaussian() * 0.5)); + }; + + public static BiConsumer LAMBDA_RECOIL_MINIGUN = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil((float) (ctx.getPlayer().getRNG().nextGaussian() * 0.5), (float) (ctx.getPlayer().getRNG().nextGaussian() * 0.5)); + }; + + public static BiConsumer LAMBDA_RECOIL_LACUNAE = (stack, ctx) -> { }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_CARBINE_ANIMS = (stack, type) -> { + boolean empty = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory) <= 0; + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(45, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_FULL)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, ItemGunBaseNT.getIsAiming(stack) ? -0.25 : -0.5, 50, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL)) + .addBus("SLIDE", new BusAnimationSequence().addPos(0, 0, -1, 50, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_UP)) + .addBus(empty ? "NULL" : "REL", new BusAnimationSequence().addPos(0, 0, 0.25, 50).addPos(0, 0.125, 1.25, 100, IType.SIN_UP)); + case CYCLE_DRY: return new BusAnimation() + .addBus("SLIDE", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, -1, 100, IType.SIN_DOWN).addPos(0, 0, -1, 50).addPos(0, 0, 0, 100, IType.SIN_UP)); + case RELOAD: return new BusAnimation() + .addBus("MAG", new BusAnimationSequence().addPos(0, -4, 0, 250, IType.SIN_UP).addPos(0, -4, 0, 750).addPos(0, 0, 0, 500, IType.SIN_DOWN)) + .addBus("LIFT", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(-25, 0, 0, 250, IType.SIN_FULL).addPos(-25, 0, 0, 1000)) + .addBus("BULLET", new BusAnimationSequence().addPos(empty ? 1 : 0, 0, 0, 0).addPos(0, 0, 0, 1000)); + case RELOAD_END: return new BusAnimation() + .addBus("LIFT", new BusAnimationSequence().addPos(-25, 0, 0, 0).addPos(-25, 0, 0, 750).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("SLIDE", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(0, 0, -1, 100, IType.SIN_DOWN).addPos(0, 0, -1, 50).addPos(0, 0, 0, 100, IType.SIN_UP)) + .addBus("REL", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(0, 0, 0.25, 150).addPos(0, 0.125, 1.25, 100, IType.SIN_UP)); + case JAMMED: return new BusAnimation() + .addBus("LIFT", new BusAnimationSequence().addPos(-25, 0, 0, 0).addPos(-25, 0, 0, 750).addPos(0, 0, 0, 500, IType.SIN_FULL).addPos(0, 0, 0, 250).addPos(-25, 0, 0, 250, IType.SIN_FULL).addPos(-25, 0, 0, 750).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("SLIDE", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(0, 0, -1, 100, IType.SIN_DOWN).addPos(0, 0, -1, 50).addPos(0, 0, -0.25, 100, IType.SIN_UP).addPos(0, 0, -0.25, 1250).addPos(0, 0, -1, 100, IType.SIN_DOWN).addPos(0, 0, -1, 50).addPos(0, 0, 0, 100, IType.SIN_UP)) + .addBus("REL", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(0, 0, 0.25, 150).addPos(0, 0.125, 1, 100, IType.SIN_UP).addPos(0, 0.125, 1, 1250).addPos(0, 0.125, 0.25, 100, IType.SIN_DOWN).addPos(0, 0.125, 1, 100, IType.SIN_UP)); + case INSPECT: return new BusAnimation() + .addBus("LIFT", new BusAnimationSequence().addPos(-25, 0, 0, 250, IType.SIN_FULL).addPos(-25, 0, 0, 1500).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("SLIDE", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, -0.75, 150, IType.SIN_DOWN).addPos(0, 0, -0.75, 1000).addPos(0, 0, 0, 100, IType.SIN_UP)) + .addBus(empty ? "NULL" : "REL", new BusAnimationSequence().addPos(0, 0.125, 1.25, 0).addPos(0, 0.125, 1.25, 500).addPos(0, 0.125, 0.5, 150, IType.SIN_DOWN).addPos(0, 0.125, 0.5, 1000).addPos(0, 0.125, 1.25, 100, IType.SIN_UP)); + } + + return null; + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_MINIGUN_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(45, 0, 0, 0).addPos(0, 0, 0, 1000, IType.SIN_FULL)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, ItemGunBaseNT.getIsAiming(stack) ? -0.25 : -0.5, 0).addPos(0, 0, ItemGunBaseNT.getIsAiming(stack) ? -0.25 : -0.5, 100).addPos(0, 0, 0, 150, IType.SIN_FULL)) + .addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, 60, 50).addPos(0, 0, 720, 1000, IType.SIN_DOWN)); + case CYCLE_DRY: return new BusAnimation() + .addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, 60, 50).addPos(0, 0, 720, 1000, IType.SIN_DOWN)); + case RELOAD: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(-15, 0, 0, 250, IType.SIN_DOWN).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, 60, 50).addPos(0, 0, 720, 1000, IType.SIN_DOWN)); + case INSPECT: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(3, 0, 0, 150, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL)) + .addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, -720, 1000, IType.SIN_DOWN)); + } + + return null; + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java new file mode 100644 index 000000000..e018a3f2d --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java @@ -0,0 +1,202 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.function.BiConsumer; +import java.util.function.BiFunction; + +import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumCasingType; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.mags.MagazineFullReload; +import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.BusAnimationKeyframe.IType; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import net.minecraft.item.ItemStack; + +public class XFactory9mm { + + public static BulletConfig p9_sp; + public static BulletConfig p9_fmj; + public static BulletConfig p9_jhp; + public static BulletConfig p9_ap; + + public static void init() { + SpentCasing casing9 = new SpentCasing(CasingType.STRAIGHT).setColor(SpentCasing.COLOR_CASE_BRASS).setScale(1F, 1F, 0.75F); + p9_sp = new BulletConfig().setItem(EnumAmmo.P9_SP).setCasing(EnumCasingType.SMALL, 12) + .setCasing(casing9.clone().register("p9")); + p9_fmj = new BulletConfig().setItem(EnumAmmo.P9_FMJ).setCasing(EnumCasingType.SMALL, 12).setDamage(0.8F).setThresholdNegation(2F).setArmorPiercing(0.1F) + .setCasing(casing9.clone().register("p9fmj")); + p9_jhp = new BulletConfig().setItem(EnumAmmo.P9_JHP).setCasing(EnumCasingType.SMALL, 12).setDamage(1.5F).setHeadshot(1.5F).setArmorPiercing(-0.25F) + .setCasing(casing9.clone().register("p9jhp")); + p9_ap = new BulletConfig().setItem(EnumAmmo.P9_AP).setCasing(EnumCasingType.SMALL_STEEL, 12).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(1.5F).setThresholdNegation(5F).setArmorPiercing(0.15F) + .setCasing(casing9.clone().setColor(SpentCasing.COLOR_CASE_44).register("p9ap")); + + ModItems.gun_greasegun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(3_000).draw(20).inspect(31).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(3F).delay(4).dry(40).auto(true).spread(0.015F).reload(60).jam(55).sound("hbm:weapon.fire.greaseGun", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 30).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap)) + .offset(1, -0.0625 * 2.5, -0.25D) + .setupStandardFire().recoil(LAMBDA_RECOIL_GREASEGUN)) + .setupStandardConfiguration() + .anim(LAMBDA_GREASEGUN_ANIMS).orchestra(Orchestras.ORCHESTRA_GREASEGUN) + ).setUnlocalizedName("gun_greasegun"); + + ModItems.gun_lag = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(1_700).draw(7).inspect(31).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(25F).delay(4).dry(10).spread(0.005F).reload(53).jam(44).sound("hbm:weapon.fire.pistol", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 17).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap)) + .offset(1, -0.0625 * 2.5, -0.25D) + .setupStandardFire().recoil(LAMBDA_RECOIL_LAG)) + .setupStandardConfiguration() + .anim(LAMBDA_LAG_ANIMS).orchestra(Orchestras.ORCHESTRA_LAG) + ).setUnlocalizedName("gun_lag"); + + ModItems.gun_uzi = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(3_000).draw(15).inspect(31).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(3F).delay(2).dry(25).auto(true).spread(0.005F).reload(55).jam(50).sound("hbm:weapon.fire.uzi", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 30).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap)) + .offset(1, -0.0625 * 2.5, -0.25D) + .setupStandardFire().recoil(LAMBDA_RECOIL_UZI)) + .setupStandardConfiguration() + .anim(LAMBDA_UZI_ANIMS).orchestra(Orchestras.ORCHESTRA_UZI) + ).setUnlocalizedName("gun_uzi"); + ModItems.gun_uzi_akimbo = new ItemGunBaseNT(WeaponQuality.B_SIDE, + new GunConfig().dura(3_000).draw(15).inspect(31).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(3F).spreadHipfire(0F).delay(2).dry(25).auto(true).spread(0.005F).reload(55).jam(50).sound("hbm:weapon.fire.uzi", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 30).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap)) + .offset(1, -0.0625 * 2.5, 0.375D) + .setupStandardFire().recoil(LAMBDA_RECOIL_UZI)) + .pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD) + .decider(GunStateDecider.LAMBDA_STANDARD_DECIDER) + .anim(LAMBDA_UZI_ANIMS).orchestra(Orchestras.ORCHESTRA_UZI_AKIMBO), + new GunConfig().dura(3_000).draw(15).inspect(31).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(3F).spreadHipfire(0F).delay(2).dry(25).auto(true).spread(0.005F).reload(55).jam(50).sound("hbm:weapon.fire.uzi", 1.0F, 1.0F) + .mag(new MagazineFullReload(1, 30).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap)) + .offset(1, -0.0625 * 2.5, -0.375D) + .setupStandardFire().recoil(LAMBDA_RECOIL_UZI)) + .ps(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD) + .decider(LAMBDA_SECOND_UZI) + .anim(LAMBDA_UZI_ANIMS).orchestra(Orchestras.ORCHESTRA_UZI_AKIMBO) + ).setUnlocalizedName("gun_uzi_akimbo"); + } + + public static BiConsumer LAMBDA_RECOIL_GREASEGUN = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil(2, (float) (ctx.getPlayer().getRNG().nextGaussian() * 0.5)); + }; + + public static BiConsumer LAMBDA_RECOIL_LAG = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil(5, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5)); + }; + + public static BiConsumer LAMBDA_RECOIL_UZI = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil(1, (float) (ctx.getPlayer().getRNG().nextGaussian() * 0.25)); + }; + + public static BiConsumer LAMBDA_SECOND_UZI = (stack, ctx) -> { + int index = ctx.configIndex; + GunState lastState = ItemGunBaseNT.getState(stack, index); + GunStateDecider.deciderStandardFinishDraw(stack, lastState, index); + GunStateDecider.deciderStandardClearJam(stack, lastState, index); + GunStateDecider.deciderStandardReload(stack, ctx, lastState, 0, index); + GunStateDecider.deciderAutoRefire(stack, ctx, lastState, 0, index, () -> { return ItemGunBaseNT.getSecondary(stack, index) && ItemGunBaseNT.getMode(stack, ctx.configIndex) == 0; }); + }; + + public static BiConsumer LAMBDA_SMOKE = (stack, ctx) -> { + Lego.handleStandardSmoke(ctx.entity, stack, 2000, 0.05D, 1.1D, ctx.configIndex); + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_GREASEGUN_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(80, 0, 0, 0).addPos(80, 0, 0, 500).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("STOCK", new BusAnimationSequence().addPos(0, 0, -4, 0).addPos(0, 0, -4, 200).addPos(0, 0, 0, 300, IType.SIN_FULL)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, ItemGunBaseNT.getIsAiming(stack) ? -0.25 : -0.5, 50, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL)) + .addBus("FLAP", new BusAnimationSequence().addPos(0, 0, 15, 100, IType.SIN_DOWN).addPos(0, 0, -5, 100, IType.SIN_FULL).addPos(0, 0, 0, 50, IType.SIN_FULL)); + case CYCLE_DRY: return new BusAnimation() + .addBus("LIFT", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(-25, 0, 0, 250, IType.SIN_FULL).addPos(-25, 0, 0, 750).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("TURN", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, -45, 250, IType.SIN_FULL).addPos(0, 0, -45, 750).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("HANDLE", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, 0, 250).addPos(-90, 0, 0, 250, IType.SIN_FULL).addPos(0, 0, 0, 250, IType.SIN_FULL)); + case RELOAD: + boolean empty = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory) <= 0; + return new BusAnimation() + .addBus("MAG", new BusAnimationSequence().addPos(0, -8, 0, 250, IType.SIN_UP).addPos(0, -8, 0, 750).addPos(0, 0, 0, 500, IType.SIN_DOWN)) + .addBus("LIFT", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(-25, 0, 0, 250, IType.SIN_FULL).addPos(-25, 0, 0, 1750).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("TURN", new BusAnimationSequence().addPos(0, 0, 0, 1750).addPos(0, 0, -45, 250, IType.SIN_FULL).addPos(0, 0, -45, 500).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("HANDLE", new BusAnimationSequence().addPos(0, 0, 0, 2000).addPos(-90, 0, 0, 250, IType.SIN_FULL).addPos(0, 0, 0, 250, IType.SIN_FULL)) + .addBus("BULLET", new BusAnimationSequence().addPos(empty ? 1 : 0, 0, 0, 0).addPos(0, 0, 0, 1000)); + case JAMMED: return new BusAnimation() + .addBus("LIFT", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(-25, 0, 0, 250, IType.SIN_FULL).addPos(-25, 0, 0, 1500).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("TURN", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, -45, 250, IType.SIN_FULL).addPos(0, 0, -45, 1500).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("HANDLE", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, 0, 250).addPos(-90, 0, 0, 250, IType.SIN_FULL).addPos(0, 0, 0, 250, IType.SIN_FULL).addPos(0, 0, 0, 250).addPos(-90, 0, 0, 250, IType.SIN_FULL).addPos(0, 0, 0, 250, IType.SIN_FULL)); + case INSPECT: return new BusAnimation() + .addBus("TURN", new BusAnimationSequence().addPos(0, 0, -45, 150).addPos(0, 0, 45, 150).addPos(0, 0, 45, 50).addPos(0, 0, 0, 250).addPos(0, 0, 0, 500).addPos(0, 0, 45, 150).addPos(0, 0, -45, 150).addPos(0, 0, 0, 150)) + .addBus("FLAP", new BusAnimationSequence().addPos(0, 0, 0, 300).addPos(0, 0, 180, 150).addPos(0, 0, 180, 850).addPos(0, 0, 0, 150)); + } + + return null; + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_LAG_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(-90, 0, 0, 0).addPos(0, 0, 0, 350, IType.SIN_DOWN)); + case CYCLE: return ResourceManager.lag_anim.get("Firing"); + //.addBus("HAMMER", new BusAnimationSequence().addPos(0, 0, 25, 50).addPos(0, 0, 25, 50).addPos(0, 0, 0, 100, IType.SIN_DOWN)); + case CYCLE_DRY: return ResourceManager.lag_anim.get("Dryfire"); + case RELOAD: return ResourceManager.lag_anim.get("Reload"); + case JAMMED: return ResourceManager.lag_anim.get("Jam"); + case INSPECT: return ResourceManager.lag_anim.get("Inspect") + .addBus("ADD_TRANS", new BusAnimationSequence().addPos(-4, 0, -3, 500).addPos(-4, 0, -3, 2000).addPos(0, 0, 0, 500)) + .addBus("ADD_ROT", new BusAnimationSequence().addPos(0, -2, 5, 500).addPos(0, -2, 5, 2000).addPos(0, 0, 0, 500)); + } + + return null; + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_UZI_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(80, 0, 0, 0).addPos(80, 0, 0, 500).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("STOCKBACK", new BusAnimationSequence().addPos(-200, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("STOCKFRONT", new BusAnimationSequence().addPos(180, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_FULL)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, ItemGunBaseNT.getIsAiming(stack) ? -0.5 : -0.75, 25, IType.SIN_DOWN).addPos(0, 0, 0, 75, IType.SIN_FULL)); + case CYCLE_DRY: return new BusAnimation() + .addBus("LIFT", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(-25, 0, 0, 250, IType.SIN_FULL).addPos(-25, 0, 0, 500).addPos(0, 0, 0, 250, IType.SIN_FULL)) + .addBus("SLIDE", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, -2, 150, IType.SIN_FULL).addPos(0, 0, 0, 50, IType.SIN_UP)); + case RELOAD: + boolean empty = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory) <= 0; + return new BusAnimation() + .addBus("MAG", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(0, -10, 0, 250, IType.SIN_UP).addPos(0, -10, 0, 750).addPos(0, 0, 0, 500, IType.SIN_DOWN)) + .addBus("LIFT", new BusAnimationSequence().addPos(-25, 0, 0, 250, IType.SIN_FULL).addPos(-25, 0, 0, 2000).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("SLIDE", new BusAnimationSequence().addPos(0, 0, 0, 2000).addPos(0, 0, -2, 150, IType.SIN_FULL).addPos(0, 0, 0, 50, IType.SIN_UP)) + .addBus("BULLET", new BusAnimationSequence().addPos(empty ? 0 : 1, 0, 0, 0).addPos(empty ? 0 : 1, 0, 0, 500).addPos(1, 0, 0, 0)); + case JAMMED: return new BusAnimation() + .addBus("LIFT", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(-25, 0, 0, 250, IType.SIN_FULL).addPos(-25, 0, 0, 1250).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("SLIDE", new BusAnimationSequence().addPos(0, 0, 0, 1000).addPos(0, 0, -2, 150, IType.SIN_FULL).addPos(0, 0, 0, 50, IType.SIN_UP).addPos(0, 0, 0, 500).addPos(0, 0, -2, 150, IType.SIN_FULL).addPos(0, 0, 0, 50, IType.SIN_UP)); + case INSPECT: return new BusAnimation() + .addBus("YEET", new BusAnimationSequence().addPos(0, -1, 0, 100).addPos(0, 0, 0, 100, IType.SIN_UP).addPos(0, 12, 0, 350, IType.SIN_DOWN).addPos(0, 0, 0, 350, IType.SIN_UP).addPos(0, -1, 0, 50, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL)) + .addBus("SPEEN", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(-360, 0, 0, 600)); + } + return null; + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryAccelerator.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryAccelerator.java new file mode 100644 index 000000000..5773e2ab7 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryAccelerator.java @@ -0,0 +1,199 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.function.BiConsumer; +import java.util.function.BiFunction; +import java.util.function.Consumer; + +import com.hbm.entity.projectile.EntityBulletBeamBase; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.mags.MagazineBelt; +import com.hbm.items.weapon.sedna.mags.MagazineSingleReload; +import com.hbm.main.MainRegistry; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.BusAnimationKeyframe.IType; +import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.DamageResistanceHandler.DamageClass; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.Vec3; + +public class XFactoryAccelerator { + + public static MagazineBelt tauChargeMag = new MagazineBelt(); + + public static BulletConfig tau_uranium; + public static BulletConfig tau_uranium_charge; + + public static BulletConfig coil_tungsten; + public static BulletConfig coil_ferrouranium; + + public static Consumer LAMBDA_UPDATE_TUNGSTEN = (entity) -> {breakInPath(entity, 1.25F); }; + public static Consumer LAMBDA_UPDATE_FERRO = (entity) -> { breakInPath(entity, 2.5F); }; + + public static void breakInPath(Entity entity, float threshold) { + + Vec3 vec = Vec3.createVectorHelper(entity.posX - entity.prevPosX, entity.posY - entity.prevPosY, entity.posZ - entity.prevPosZ); + double motion = Math.max(vec.lengthVector(), 0.1); + vec = vec.normalize(); + + for(double d = 0; d < motion; d += 0.5) { + + double dX = entity.posX - vec.xCoord * d; + double dY = entity.posY - vec.yCoord * d; + double dZ = entity.posZ - vec.zCoord * d; + + if(entity.worldObj.isRemote) { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setString("type", "vanillaExt"); + nbt.setString("mode", "fireworks"); + nbt.setDouble("posX", dX); + nbt.setDouble("posY", dY); + nbt.setDouble("posZ", dZ); + MainRegistry.proxy.effectNT(nbt); + + } else { + int x = (int) Math.floor(dX); + int y = (int) Math.floor(dY); + int z = (int) Math.floor(dZ); + Block b = entity.worldObj.getBlock(x, y, z); + float hardness = b.getBlockHardness(entity.worldObj, x, y, z); + if(b.getMaterial() != Material.air && hardness >= 0 && hardness < threshold) { + entity.worldObj.func_147480_a(x, y, z, false); + } + } + } + } + + public static void init() { + + tau_uranium = new BulletConfig().setItem(EnumAmmo.TAU_URANIUM).setCasing(new ItemStack(ModItems.plate_lead, 2), 16).setupDamageClass(DamageClass.SUBATOMIC).setBeam().setLife(5).setRenderRotations(false).setDoesPenetrate(true).setDamageFalloutByPen(false) + .setOnBeamImpact(BulletConfig.LAMBDA_BEAM_HIT); + tau_uranium_charge = new BulletConfig().setItem(EnumAmmo.TAU_URANIUM).setCasing(new ItemStack(ModItems.plate_lead, 2), 16).setupDamageClass(DamageClass.SUBATOMIC).setBeam().setLife(5).setRenderRotations(false).setDoesPenetrate(true).setDamageFalloutByPen(false).setSpectral(true) + .setOnBeamImpact(BulletConfig.LAMBDA_BEAM_HIT); + + coil_tungsten = new BulletConfig().setItem(EnumAmmo.COIL_TUNGSTEN).setVel(7.5F).setLife(50).setDoesPenetrate(true).setDamageFalloutByPen(false).setSpectral(true) + .setOnUpdate(LAMBDA_UPDATE_TUNGSTEN); + coil_ferrouranium = new BulletConfig().setItem(EnumAmmo.COIL_FERROURANIUM).setVel(7.5F).setLife(50).setDoesPenetrate(true).setDamageFalloutByPen(false).setSpectral(true) + .setOnUpdate(LAMBDA_UPDATE_FERRO); + + tauChargeMag.addConfigs(tau_uranium_charge); + + ModItems.gun_tau = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(6_400).draw(10).inspect(10).crosshair(Crosshair.CIRCLE) + .rec(new Receiver(0) + .dmg(25F).spreadHipfire(0F).delay(4).auto(true).spread(0F) + .mag(new MagazineBelt().addConfigs(tau_uranium)) + .offset(1, -0.0625 * 2.5, -0.25D) + .setupStandardFire().recoil(LAMBDA_RECOIL_TAU)) + .pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY) + .rp(LAMBDA_TAU_PRIMARY_RELEASE) + .ps(LAMBDA_TAU_SECONDARY_PRESS) + .rs(LAMBDA_TAU_SECONDARY_RELEASE) + .pr(Lego.LAMBDA_STANDARD_RELOAD) + .decider(GunStateDecider.LAMBDA_STANDARD_DECIDER) + .anim(LAMBDA_TAU_ANIMS).orchestra(Orchestras.ORCHESTRA_TAU) + ).setUnlocalizedName("gun_tau"); + + ModItems.gun_coilgun = new ItemGunBaseNT(WeaponQuality.SPECIAL, new GunConfig() + .dura(400).draw(5).inspect(39).crosshair(Crosshair.L_CIRCUMFLEX) + .rec(new Receiver(0) + .dmg(35F).delay(5).reload(20).jam(33).sound("hbm:weapon.coilgunShoot", 1.0F, 1.0F) + .mag(new MagazineSingleReload(0, 1).addConfigs(coil_tungsten, coil_ferrouranium)) + .offset(0.75, -0.0625, -0.1875D) + .setupStandardFire().recoil(LAMBDA_RECOIL_COILGUN)) + .setupStandardConfiguration() + .anim(LAMBDA_COILGUN_ANIMS).orchestra(Orchestras.ORCHESTRA_COILGUN) + ).setUnlocalizedName("gun_coilgun"); + } + + public static BiConsumer LAMBDA_TAU_PRIMARY_RELEASE = (stack, ctx) -> { + if(ctx.getPlayer() == null || ItemGunBaseNT.getLastAnim(stack, ctx.configIndex) != AnimType.CYCLE) return; + ctx.getPlayer().worldObj.playSoundEffect(ctx.getPlayer().posX, ctx.getPlayer().posY, ctx.getPlayer().posZ, "hbm:weapon.fire.tauRelease", 1F, 1F); + }; + + public static BiConsumer LAMBDA_TAU_SECONDARY_PRESS = (stack, ctx) -> { + if(ctx.getPlayer() == null) return; + if(ctx.config.getReceivers(stack)[0].getMagazine(stack).getAmount(stack, ctx.inventory) <= 0) return; + ItemGunBaseNT.playAnimation(ctx.getPlayer(), stack, AnimType.SPINUP, ctx.configIndex); + tauChargeMag.getMagType(stack); //caches the last loaded ammo + }; + + public static BiConsumer LAMBDA_TAU_SECONDARY_RELEASE = (stack, ctx) -> { + if(ctx.getPlayer() == null) return; + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + + if(timer >= 10 && ItemGunBaseNT.getLastAnim(stack, ctx.configIndex) == AnimType.SPINUP) { + ItemGunBaseNT.playAnimation(ctx.getPlayer(), stack, AnimType.ALT_CYCLE, ctx.configIndex); + int unitsUsed = 1 + Math.min(12, timer / 10); + + EntityLivingBase entity = ctx.entity; + int index = ctx.configIndex; + + Receiver primary = ctx.config.getReceivers(stack)[0]; + BulletConfig config = tauChargeMag.getFirstConfig(stack, ctx.inventory); + + Vec3 offset = primary.getProjectileOffset(stack); + double forwardOffset = offset.xCoord; + double heightOffset = offset.yCoord; + double sideOffset = offset.zCoord; + + float damage = Lego.getStandardWearDamage(stack, ctx.config, index) * unitsUsed * 5; + float spread = Lego.calcSpread(ctx, stack, primary, config, true, index, false); + EntityBulletBeamBase mk4 = new EntityBulletBeamBase(entity, config, damage, spread, sideOffset, heightOffset, forwardOffset); + entity.worldObj.spawnEntityInWorld(mk4); + + ItemGunBaseNT.setWear(stack, index, Math.min(ItemGunBaseNT.getWear(stack, index) + config.wear * unitsUsed, ctx.config.getDurability(stack))); + + } else { + ItemGunBaseNT.playAnimation(ctx.getPlayer(), stack, AnimType.CYCLE_DRY, ctx.configIndex); + } + }; + + public static BiConsumer LAMBDA_RECOIL_TAU = (stack, ctx) -> { }; + + public static BiConsumer LAMBDA_RECOIL_COILGUN = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil(10, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5)); + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_TAU_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(45, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_FULL)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, -0.5, 50).addPos(0, 0, 0, 150, IType.SIN_FULL)) + .addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, -5, 50, IType.SIN_DOWN).addPos(0, 0, 5, 100, IType.SIN_FULL).addPos(0, 0, 0, 50, IType.SIN_UP)); + case ALT_CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, -3, 100, IType.SIN_DOWN).addPos(0, 0, 0, 250, IType.SIN_FULL)) + .addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, -5, 50, IType.SIN_DOWN).addPos(0, 0, 5, 100, IType.SIN_FULL).addPos(0, 0, 0, 50, IType.SIN_UP)); + case CYCLE_DRY: return new BusAnimation(); + case INSPECT: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(2, 0, 0, 150, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL)) + .addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, -360 * 3, 500 * 3, IType.SIN_DOWN)); + case SPINUP: return new BusAnimation() + .addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, 360 * 6, 3000, IType.SIN_UP).addPos(0, 0, 0, 0).addPos(0, 0, 360 * 40, 500 * 20)); + } + + return null; + }; + + public static BiFunction LAMBDA_COILGUN_ANIMS = (stack, type) -> { + if(type == AnimType.EQUIP) return new BusAnimation().addBus("RELOAD", new BusAnimationSequence().addPos(1, 0, 0, 0).addPos(0, 0, 0, 250)); + if(type == AnimType.CYCLE) return new BusAnimation().addBus("RECOIL", new BusAnimationSequence().addPos(ItemGunBaseNT.getIsAiming(stack) ? 0.5 : 1, 0, 0, 100).addPos(0, 0, 0, 200)); + if(type == AnimType.RELOAD) return new BusAnimation().addBus("RELOAD", new BusAnimationSequence().addPos(1, 0, 0, 250).addPos(1, 0, 0, 500).addPos(0, 0, 0, 250)); + return null; + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryBlackPowder.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryBlackPowder.java new file mode 100644 index 000000000..e3366bca2 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryBlackPowder.java @@ -0,0 +1,78 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.function.BiConsumer; +import java.util.function.BiFunction; + +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.mags.MagazineFullReload; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.BusAnimationKeyframe.IType; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import net.minecraft.item.ItemStack; + +public class XFactoryBlackPowder { + + public static BulletConfig stone = new BulletConfig().setItem(EnumAmmo.STONE).setBlackPowder(true).setHeadshot(1F).setSpread(0.025F).setRicochetAngle(15); + public static BulletConfig flint = new BulletConfig().setItem(EnumAmmo.STONE_AP).setBlackPowder(true).setHeadshot(1F).setSpread(0.01F).setRicochetAngle(5).setDoesPenetrate(true).setDamage(1.5F); + public static BulletConfig iron = new BulletConfig().setItem(EnumAmmo.STONE_IRON).setBlackPowder(true).setHeadshot(1F).setSpread(0F).setRicochetAngle(90).setRicochetCount(5).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(1.5F); + public static BulletConfig shot = new BulletConfig().setItem(EnumAmmo.STONE_SHOT).setBlackPowder(true).setHeadshot(1F).setSpread(0.1F).setRicochetAngle(45).setProjectiles(6, 6).setDamage(1F/6F); + + public static void init() { + + ModItems.gun_pepperbox = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(300).draw(4).inspect(23).crosshair(Crosshair.CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(5F).delay(27).reload(67).jam(58).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 6).addConfigs(stone, flint, iron, shot)) + .offset(0.75, -0.0625, -0.1875D) + .setupStandardFire().recoil(LAMBDA_RECOIL_PEPPERBOX)) + .setupStandardConfiguration() + .anim(LAMBDA_PEPPERBOX_ANIMS).orchestra(Orchestras.ORCHESTRA_PEPPERBOX) + ).setUnlocalizedName("gun_pepperbox"); + } + + public static BiConsumer LAMBDA_RECOIL_PEPPERBOX = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil(10, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5)); + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_PEPPERBOX_ANIMS = (stack, type) -> { + switch(type) { + case CYCLE: return new BusAnimation() + .addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, 0, 1025).addPos(60, 0, 0, 250)) + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, 0, 50).addPos(45, 0, 0, 150, IType.SIN_DOWN).addPos(45, 0, 0, 50).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("HAMMER", new BusAnimationSequence().addPos(80, 0, 0, 25).addPos(80, 0, 0, 1000).addPos(0, 0, 0, 250)) + .addBus("TRIGGER", new BusAnimationSequence().addPos(1, 0, 0, 25).addPos(1, 0, 0, 250).addPos(0, 0, 0, 100)); + case CYCLE_DRY: return new BusAnimation() + .addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, 0, 525).addPos(60, 0, 0, 250)) + .addBus("HAMMER", new BusAnimationSequence().addPos(80, 0, 0, 25).addPos(80, 0, 0, 500).addPos(0, 0, 0, 250)) + .addBus("TRIGGER", new BusAnimationSequence().addPos(1, 0, 0, 25).addPos(1, 0, 0, 250).addPos(0, 0, 0, 100)); + case EQUIP: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(-45, 0, 0, 0).addPos(0, 0, 0, 200, IType.SIN_DOWN)); + case RELOAD: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(90, 0, 0, 500, IType.SIN_FULL).addPos(90, 0, 0, 1600).addPos(0, 0, 0, 500, IType.SIN_FULL).addPos(-5, 0, 0, 200, IType.SIN_UP).addPos(0, 0, 0, 200, IType.SIN_DOWN)) + .addBus("TRANSLATE", new BusAnimationSequence().addPos(0, -12, 5, 500, IType.SIN_FULL).addPos(0, -12, 5, 700).addPos(0, -13, 5, 200).addPos(0, -12, 5, 200).addPos(0, -12, 5, 500).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("LOADER", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 5, -5, 0).addPos(0, 0, -0.1, 500, IType.SIN_FULL).addPos(0, 0, -1, 200).addPos(0, 0, -1, 200).addPos(0, 0, -0.1, 200).addPos(0, 5, -5, 500, IType.SIN_FULL).addPos(0, 0, 0, 0)) + .addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, 0, 2600).addPos(-360 * 1, 0, 0, 750, IType.SIN_FULL)) + .addBus("SHOT", new BusAnimationSequence().addPos(1, 0, 0, 1400).addPos(0, 0, 0, 0)); + case INSPECT: return new BusAnimation() + .addBus("ROTATE", new BusAnimationSequence().addPos(-360 * 1, 0, 0, 750, IType.SIN_FULL)) + .addBus("RECOIL", new BusAnimationSequence().addPos(-5, 0, 0, 200, IType.SIN_UP).addPos(0, 0, 0, 200, IType.SIN_DOWN)); + case JAMMED: return new BusAnimation() + .addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, 0, 1300).addPos(60, 0, 0, 500, IType.SIN_FULL).addPos(60, 0, 0, 400).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("TRANSLATE", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, -6, 0, 400, IType.SIN_FULL).addPos(0, -6, 0, 2000).addPos(0, 0, 0, 400, IType.SIN_FULL)) + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(45, 0, 0, 400, IType.SIN_FULL).addPos(45, 0, 0, 2000).addPos(0, 0, 0, 400, IType.SIN_FULL)); + } + + return null; + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryCatapult.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryCatapult.java new file mode 100644 index 000000000..c512ec7d7 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryCatapult.java @@ -0,0 +1,179 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.Random; +import java.util.function.BiConsumer; +import java.util.function.BiFunction; + +import com.hbm.entity.logic.EntityNukeExplosionMK5; +import com.hbm.entity.projectile.EntityBulletBaseMK4; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; +import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; +import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; +import com.hbm.handler.radiation.ChunkRadiationManager; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.mags.MagazineSingleReload; +import com.hbm.main.MainRegistry; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.BusAnimationKeyframe.IType; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; + +public class XFactoryCatapult { + + public static BulletConfig nuke_standard; + public static BulletConfig nuke_demo; + public static BulletConfig nuke_high; + public static BulletConfig nuke_tots; + public static BulletConfig nuke_hive; + + public static BiConsumer LAMBDA_NUKE_STANDARD = (bullet, mop) -> { + if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3 && mop.entityHit == bullet.getThrower()) return; + if(bullet.isDead) return; + bullet.setDead(); + + ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 10); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(2, bullet.damage).withRangeMod(1.5F)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.explode(); + + incrementRad(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 1F); + spawnMush(bullet, mop); + }; + + public static BiConsumer LAMBDA_NUKE_DEMO = (bullet, mop) -> { + if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3 && mop.entityHit == bullet.getThrower()) return; + if(bullet.isDead) return; + bullet.setDead(); + + ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 10); + vnt.setBlockAllocator(new BlockAllocatorStandard(64)); + vnt.setBlockProcessor(new BlockProcessorStandard()); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(2, bullet.damage).withRangeMod(1.5F)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.explode(); + + incrementRad(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 1.5F); + spawnMush(bullet, mop); + }; + + public static BiConsumer LAMBDA_NUKE_HIGH = (bullet, mop) -> { + if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3 && mop.entityHit == bullet.getThrower()) return; + if(bullet.isDead) return; + bullet.setDead(); + bullet.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(bullet.worldObj, 35, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord)); + spawnMush(bullet, mop); + }; + + public static void incrementRad(World world, double posX, double posY, double posZ, float mult) { + for(int i = -2; i <= 2; i++) { for(int j = -2; j <= 2; j++) { + if(Math.abs(i) + Math.abs(j) < 4) { + ChunkRadiationManager.proxy.incrementRad(world, (int) Math.floor(posX + i * 16), (int) Math.floor(posY), (int) Math.floor(posZ + j * 16), 50F / (Math.abs(i) + Math.abs(j) + 1) * mult); + } + } + } + } + + public static void spawnMush(EntityBulletBaseMK4 bullet, MovingObjectPosition mop) { + bullet.worldObj.playSoundEffect(mop.hitVec.xCoord, mop.hitVec.yCoord + 0.5, mop.hitVec.zCoord, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "muke"); + data.setBoolean("balefire", MainRegistry.polaroidID == 11 || bullet.worldObj.rand.nextInt(100) == 0); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.5, mop.hitVec.zCoord), new TargetPoint(bullet.dimension, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 250)); + } + + public static BiConsumer LAMBDA_NUKE_TINYTOT = (bullet, mop) -> { + if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3 && mop.entityHit == bullet.getThrower()) return; + if(bullet.isDead) return; + bullet.setDead(); + + ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 5); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(2, bullet.damage).withRangeMod(1.5F)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.explode(); + + incrementRad(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 0.25F); + bullet.worldObj.playSoundEffect(mop.hitVec.xCoord, mop.hitVec.yCoord + 0.5, mop.hitVec.zCoord, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "tinytot"); + data.setBoolean("balefire", MainRegistry.polaroidID == 11 || bullet.worldObj.rand.nextInt(100) == 0); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.5, mop.hitVec.zCoord), new TargetPoint(bullet.dimension, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 250)); + }; + + public static BiConsumer LAMBDA_NUKE_HIVE = (bullet, mop) -> { + if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3 && mop.entityHit == bullet.getThrower()) return; + if(bullet.isDead) return; + bullet.setDead(); + ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 5); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage).withRangeMod(1.5F)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F)); + vnt.explode(); + }; + + public static void init() { + + nuke_standard = new BulletConfig().setItem(EnumAmmo.NUKE_STANDARD).setLife(300).setVel(3F).setGrav(0.025F).setOnImpact(LAMBDA_NUKE_STANDARD); + nuke_demo = new BulletConfig().setItem(EnumAmmo.NUKE_DEMO).setLife(300).setVel(3F).setGrav(0.025F).setOnImpact(LAMBDA_NUKE_DEMO); + nuke_high = new BulletConfig().setItem(EnumAmmo.NUKE_HIGH).setLife(300).setVel(3F).setGrav(0.025F).setOnImpact(LAMBDA_NUKE_HIGH); + nuke_tots = new BulletConfig().setItem(EnumAmmo.NUKE_TOTS).setProjectiles(8).setLife(300).setVel(3F).setGrav(0.025F).setSpread(0.1F).setDamage(0.35F).setOnImpact(LAMBDA_NUKE_TINYTOT); + nuke_hive = new BulletConfig().setItem(EnumAmmo.NUKE_HIVE).setProjectiles(12).setLife(300).setVel(1F).setGrav(0.025F).setSpread(0.15F).setDamage(0.25F).setOnImpact(LAMBDA_NUKE_HIVE); + + ModItems.gun_fatman = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(300).draw(20).inspect(30).crosshair(Crosshair.L_CIRCUMFLEX).hideCrosshair(false) + .rec(new Receiver(0) + .dmg(100F).spreadHipfire(0F).delay(10).reload(57).jam(40).sound("hbm:weapon.fire.fatman", 1.0F, 1.0F) + .mag(new MagazineSingleReload(0, 1).addConfigs(nuke_standard, nuke_demo, nuke_high, nuke_tots, nuke_hive)) + .offset(1, -0.0625 * 1.5, -0.1875D).offsetScoped(1, -0.0625 * 1.5, -0.125D) + .setupStandardFire().recoil(LAMBDA_RECOIL_FATMAN)) + .setupStandardConfiguration() + .anim(LAMBDA_FATMAN_ANIMS).orchestra(Orchestras.ORCHESTRA_FATMAN) + ).setUnlocalizedName("gun_fatman"); + } + + public static BiConsumer LAMBDA_RECOIL_FATMAN = (stack, ctx) -> { }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_FATMAN_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(60, 0, 0, 0).addPos(0, 0, 0, 1000, IType.SIN_DOWN)); + case CYCLE: + Random rand = MainRegistry.proxy.me().getRNG(); + return new BusAnimation() + .addBus("GAUGE", new BusAnimationSequence().addPos(0, 0, 135 + rand.nextInt(136), 100, IType.SIN_DOWN).addPos(0, 0, 0, 500, IType.SIN_DOWN)) + .addBus("PISTON", new BusAnimationSequence().addPos(0, 0, 3, 100, IType.SIN_UP)) + .addBus("NUKE", new BusAnimationSequence().addPos(0, 0, 3, 100, IType.SIN_UP).addPos(0, 0, 0, 0)); + case RELOAD: return new BusAnimation() + .addBus("LID", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(0, 0, -45, 250, IType.SIN_UP).addPos(0, 0, -45, 1200).addPos(0, 0, 0, 250, IType.SIN_UP)) + .addBus("HANDLE", new BusAnimationSequence().addPos(0, 0, -2, 500, IType.SIN_FULL).addPos(0, 0, -2, 1700).addPos(0, 0, 0, 750, IType.SIN_FULL)) + .addBus("NUKE", new BusAnimationSequence().addPos(5, -4, 3, 0).addPos(5, -4, 3, 750).addPos(2, 0.5, 3, 500, IType.SIN_UP).addPos(1, 0.5, 3, 100).addPos(0, 0, 3, 100).addPos(0, 0, 3, 750).addPos(0, 0, 0, 750, IType.SIN_FULL)) + .addBus("PISTON", new BusAnimationSequence().addPos(0, 0, 3, 0).addPos(0, 0, 3, 2200).addPos(0, 0, 0, 750, IType.SIN_FULL)) + .addBus("EQUIP", new BusAnimationSequence().addPos(5, 0, 0, 500, IType.SIN_FULL).addPos(0, 0, 0, 500, IType.SIN_FULL).addPos(0, 0, 0, 450).addPos(3, 0, 0, 100, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL).addPos(0, 0, 0, 500).addPos(-10, 0, 0, 375, IType.SIN_DOWN).addPos(0, 0, 0, 375, IType.SIN_UP)); + case JAMMED: return new BusAnimation() + .addBus("HANDLE", new BusAnimationSequence().addPos(0, 0, 0, 750).addPos(0, 0, -2, 250, IType.SIN_FULL).addPos(0, 0, 0, 250, IType.SIN_FULL).addPos(0, 0, -2, 250, IType.SIN_FULL).addPos(0, 0, 0, 250, IType.SIN_FULL)) + .addBus("EQUIP", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(-15, 0, 0, 250, IType.SIN_FULL).addPos(-15, 0, 0, 1000).addPos(0, 0, 0, 250, IType.SIN_FULL)); + case INSPECT: return new BusAnimation() + .addBus("HANDLE", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(0, 0, -2, 250, IType.SIN_FULL).addPos(0, 0, 0, 250, IType.SIN_FULL).addPos(0, 0, -2, 250, IType.SIN_FULL).addPos(0, 0, 0, 250, IType.SIN_FULL)) + .addBus("EQUIP", new BusAnimationSequence().addPos(-15, 0, 0, 250, IType.SIN_FULL).addPos(-15, 0, 0, 1000).addPos(0, 0, 0, 250, IType.SIN_FULL)); + } + return null; + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java new file mode 100644 index 000000000..2085f2516 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java @@ -0,0 +1,203 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.function.BiConsumer; +import java.util.function.BiFunction; + +import com.hbm.entity.effect.EntityFireLingering; +import com.hbm.entity.projectile.EntityBulletBeamBase; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; +import com.hbm.extprop.HbmLivingProps; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.mags.MagazineBelt; +import com.hbm.items.weapon.sedna.mags.MagazineFullReload; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.BusAnimationKeyframe.IType; +import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.DamageResistanceHandler.DamageClass; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.block.Block; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class XFactoryEnergy { + + public static final ResourceLocation scope_luna = new ResourceLocation(RefStrings.MODID, "textures/misc/scope_luna.png"); + + public static BulletConfig energy_tesla; + public static BulletConfig energy_tesla_overcharge; + + public static BulletConfig energy_las; + public static BulletConfig energy_las_overcharge; + public static BulletConfig energy_las_ir; + + public static BiConsumer LAMBDA_LIGHTNING_HIT = (beam, mop) -> { + + if(mop.typeOfHit == mop.typeOfHit.BLOCK) { + ForgeDirection dir = ForgeDirection.getOrientation(mop.sideHit); + mop.hitVec.xCoord += dir.offsetX * 0.5; + mop.hitVec.yCoord += dir.offsetY * 0.5; + mop.hitVec.zCoord += dir.offsetZ * 0.5; + } + + ExplosionVNT vnt = new ExplosionVNT(beam.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 2F, beam.getThrower()); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, beam.damage).setDamageClass(beam.config.dmgClass)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.explode(); + beam.worldObj.playSoundEffect(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, "hbm:entity.ufoBlast", 5.0F, 0.9F + beam.worldObj.rand.nextFloat() * 0.2F); + beam.worldObj.playSoundEffect(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, "fireworks.blast", 5.0F, 0.5F); + + float yaw = beam.worldObj.rand.nextFloat() * 180F; + for(int i = 0; i < 3; i++) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "plasmablast"); + data.setFloat("r", 0.5F); + data.setFloat("g", 0.5F); + data.setFloat("b", 1.0F); + data.setFloat("pitch", -60F + 60F * i); + data.setFloat("yaw", yaw); + data.setFloat("scale", 2F); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord), + new TargetPoint(beam.worldObj.provider.dimensionId, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 100)); + } + + if(mop.typeOfHit == mop.typeOfHit.ENTITY) { + if(mop.entityHit instanceof EntityLivingBase) { + ((EntityLivingBase) mop.entityHit).addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 60, 9)); + ((EntityLivingBase) mop.entityHit).addPotionEffect(new PotionEffect(Potion.digSlowdown.id, 60, 9)); + } + } + }; + + public static BiConsumer LAMBDA_IR_HIT = (beam, mop) -> { + BulletConfig.LAMBDA_STANDARD_BEAM_HIT.accept(beam, mop); + + if(mop.typeOfHit == mop.typeOfHit.ENTITY) { + if(mop.entityHit instanceof EntityLivingBase) { + EntityLivingBase living = (EntityLivingBase) mop.entityHit; + HbmLivingProps props = HbmLivingProps.getData(living); + if(props.fire < 100) props.fire = 100; + } + } + + if(mop.typeOfHit == mop.typeOfHit.BLOCK) { + World world = beam.worldObj; + Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ); + ForgeDirection dir = ForgeDirection.getOrientation(mop.sideHit); + if(b.isFlammable(world, mop.blockX, mop.blockY, mop.blockZ, dir.getOpposite())) { + if(world.getBlock(mop.blockX + dir.offsetX, mop.blockY + dir.offsetY, mop.blockZ + dir.offsetZ).isAir(world, mop.blockX + dir.offsetX, mop.blockY + dir.offsetY, mop.blockZ + dir.offsetZ)) { + world.setBlock(mop.blockX + dir.offsetX, mop.blockY + dir.offsetY, mop.blockZ + dir.offsetZ, Blocks.fire); + return; + } + } + + EntityFireLingering fire = new EntityFireLingering(beam.worldObj).setArea(2, 1).setDuration(100).setType(EntityFireLingering.TYPE_DIESEL); + fire.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + beam.worldObj.spawnEntityInWorld(fire); + } + }; + + public static void init() { + + energy_tesla = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setCasing(new ItemStack(ModItems.ingot_polymer, 2), 4).setupDamageClass(DamageClass.ELECTRIC).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) + .setOnBeamImpact(LAMBDA_LIGHTNING_HIT); + energy_tesla_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setCasing(new ItemStack(ModItems.ingot_polymer, 2), 4).setupDamageClass(DamageClass.ELECTRIC).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true) + .setDamage(1.5F).setOnBeamImpact(LAMBDA_LIGHTNING_HIT); + + energy_las = new BulletConfig().setItem(EnumAmmo.CAPACITOR).setCasing(new ItemStack(ModItems.ingot_polymer, 2), 4).setupDamageClass(DamageClass.LASER).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); + energy_las_overcharge = new BulletConfig().setItem(EnumAmmo.CAPACITOR_OVERCHARGE).setCasing(new ItemStack(ModItems.ingot_polymer, 2), 4).setupDamageClass(DamageClass.LASER).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setDoesPenetrate(true).setOnBeamImpact(BulletConfig.LAMBDA_STANDARD_BEAM_HIT); + energy_las_ir = new BulletConfig().setItem(EnumAmmo.CAPACITOR_IR).setCasing(new ItemStack(ModItems.ingot_polymer, 2), 4).setupDamageClass(DamageClass.FIRE).setBeam().setSpread(0.0F).setLife(5).setRenderRotations(false).setOnBeamImpact(LAMBDA_IR_HIT); + + ModItems.gun_tesla_cannon = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(2_000).draw(10).inspect(33).reloadSequential(true).crosshair(Crosshair.CIRCLE) + .rec(new Receiver(0) + .dmg(35F).delay(20).reload(44).jam(19).sound("hbm:weapon.fire.tesla", 1.0F, 1.0F) + .mag(new MagazineBelt().addConfigs(energy_tesla, energy_tesla_overcharge)) + .offset(0.75, 0, -0.375).offsetScoped(0.75, 0, -0.25) + .setupStandardFire().recoil(LAMBDA_RECOIL_ENERGY)) + .setupStandardConfiguration() + .anim(LAMBDA_TESLA_ANIMS).orchestra(Orchestras.ORCHESTRA_TESLA) + ).setUnlocalizedName("gun_tesla_cannon"); + + ModItems.gun_lasrifle = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(2_000).draw(10).inspect(26).reloadSequential(true).crosshair(Crosshair.CIRCLE).scopeTexture(scope_luna) + .rec(new Receiver(0) + .dmg(50F).delay(8).reload(44).jam(36).sound("hbm:weapon.fire.laser", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 24).addConfigs(energy_las, energy_las_overcharge, energy_las_ir)) + .offset(0.75, -0.0625 * 1.5, -0.1875) + .setupStandardFire().recoil(LAMBDA_RECOIL_ENERGY)) + .setupStandardConfiguration() + .anim(LAMBDA_LASRIFLE).orchestra(Orchestras.ORCHESTRA_LASRIFLE) + ).setUnlocalizedName("gun_lasrifle"); + } + + public static BiConsumer LAMBDA_RECOIL_ENERGY = (stack, ctx) -> { }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_TESLA_ANIMS = (stack, type) -> { + int amount = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory); + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(60, 0, 0, 0).addPos(0, 0, 0, 1000, IType.SIN_DOWN)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, ItemGunBaseNT.getIsAiming(stack) ? -0.5 : -1, 100, IType.SIN_DOWN).addPos(0, 0, 0, 250, IType.SIN_FULL)) + .addBus("CYCLE", new BusAnimationSequence().addPos(0, 0, 0, 150).addPos(0, 0, 22.5, 350)) + .addBus("COUNT", new BusAnimationSequence().addPos(amount, 0, 0, 0)); + case CYCLE_DRY: return new BusAnimation() + .addBus("CYCLE", new BusAnimationSequence().addPos(0, 0, 0, 150).addPos(0, 0, 22.5, 350)); + case INSPECT: return new BusAnimation() + .addBus("YOMI", new BusAnimationSequence().addPos(8, -4, 0, 0).addPos(4, -1, 0, 500, IType.SIN_DOWN).addPos(4, -1, 0, 1000).addPos(6, -6, 0, 500, IType.SIN_UP)) + .addBus("SQUEEZE", new BusAnimationSequence().addPos(1, 1, 1, 0).addPos(1, 1, 1, 750).addPos(1, 1, 0.5, 125).addPos(1, 1, 1, 125)); + } + + return null; + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_LASRIFLE = (stack, type) -> { + int amount = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory); + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(60, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_DOWN)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, -0.5, 50, IType.SIN_DOWN).addPos(0, 0, 0, 150, IType.SIN_FULL)) + .addBus("CYCLE", new BusAnimationSequence().addPos(0, 0, 0, 150).addPos(0, 0, 22.5, 350)) + .addBus("COUNT", new BusAnimationSequence().addPos(amount, 0, 0, 0)); + case RELOAD: return new BusAnimation() + .addBus("LEVER", new BusAnimationSequence().addPos(-90, 0, 0, 350, IType.SIN_UP).addPos(-90, 0, 0, 1500).addPos(0, 0, 0, 350, IType.SIN_UP)) + .addBus("MAG", new BusAnimationSequence().addPos(0, 0, 0, 350).addPos(0, -5, 0, 350, IType.SIN_UP).addPos(0, -5, 0, 500).addPos(0, -0.25, 0, 500, IType.SIN_FULL).addPos(0, -0.25, 0, 150).addPos(0, 0, 0, 350)) + .addBus("EQUIP", new BusAnimationSequence().addPos(0, 0, 0, 1700).addPos(-2, 0, 0, 100, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL)); + case JAMMED: return new BusAnimation() + .addBus("LEVER", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(-90, 0, 0, 350, IType.SIN_UP).addPos(-90, 0, 0, 600).addPos(0, 0, 0, 350, IType.SIN_UP)) + .addBus("MAG", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, 0, 350).addPos(0, -2, 0, 200, IType.SIN_UP).addPos(0, -0.25, 0, 250, IType.SIN_FULL).addPos(0, -0.25, 0, 150).addPos(0, 0, 0, 350)) + .addBus("EQUIP", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, 0, 800).addPos(-2, 0, 0, 100, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL)); + case INSPECT: return new BusAnimation() + .addBus("LEVER", new BusAnimationSequence().addPos(-90, 0, 0, 350, IType.SIN_UP).addPos(-90, 0, 0, 600).addPos(0, 0, 0, 350, IType.SIN_UP)) + .addBus("MAG", new BusAnimationSequence().addPos(0, 0, 0, 350).addPos(0, -2, 0, 200, IType.SIN_UP).addPos(0, -0.25, 0, 250, IType.SIN_FULL).addPos(0, -0.25, 0, 150).addPos(0, 0, 0, 350)) + .addBus("EQUIP", new BusAnimationSequence().addPos(0, 0, 0, 800).addPos(-2, 0, 0, 100, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL)); + } + + return null; + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java new file mode 100644 index 000000000..465f8506e --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFlamer.java @@ -0,0 +1,202 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.List; +import java.util.function.BiConsumer; +import java.util.function.BiFunction; +import java.util.function.Consumer; + +import com.hbm.entity.effect.EntityFireLingering; +import com.hbm.entity.projectile.EntityBulletBaseMK4; +import com.hbm.extprop.HbmLivingProps; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.impl.ItemGunChemthrower; +import com.hbm.items.weapon.sedna.mags.MagazineFluid; +import com.hbm.items.weapon.sedna.mags.MagazineFullReload; +import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; +import com.hbm.particle.helper.FlameCreator; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.BusAnimationKeyframe.IType; +import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.DamageResistanceHandler.DamageClass; + +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class XFactoryFlamer { + + public static BulletConfig flame_nograv; + + public static BulletConfig flame_diesel; + public static BulletConfig flame_gas; + public static BulletConfig flame_napalm; + public static BulletConfig flame_balefire; + + public static BulletConfig flame_topaz_diesel; + public static BulletConfig flame_topaz_gas; + public static BulletConfig flame_topaz_napalm; + public static BulletConfig flame_topaz_balefire; + + public static BulletConfig flame_daybreaker_diesel; + public static BulletConfig flame_daybreaker_gas; + public static BulletConfig flame_daybreaker_napalm; + public static BulletConfig flame_daybreaker_balefire; + + public static Consumer LAMBDA_FIRE = (bullet) -> { + if(bullet.worldObj.isRemote && MainRegistry.proxy.me().getDistanceToEntity(bullet) < 100) FlameCreator.composeEffectClient(bullet.worldObj, bullet.posX, bullet.posY - 0.125, bullet.posZ, FlameCreator.META_FIRE); + }; + public static Consumer LAMBDA_BALEFIRE = (bullet) -> { + if(bullet.worldObj.isRemote && MainRegistry.proxy.me().getDistanceToEntity(bullet) < 100) FlameCreator.composeEffectClient(bullet.worldObj, bullet.posX, bullet.posY - 0.125, bullet.posZ, FlameCreator.META_BALEFIRE); + }; + public static BiConsumer LAMBDA_IGNITE_FIRE = (bullet, mop) -> { + if(mop.entityHit instanceof EntityLivingBase) { + HbmLivingProps props = HbmLivingProps.getData((EntityLivingBase) mop.entityHit); + if(props.fire < 100) props.fire = 100; + } + }; + public static BiConsumer LAMBDA_IGNITE_BALEFIRE = (bullet, mop) -> { + if(mop.entityHit instanceof EntityLivingBase) { + HbmLivingProps props = HbmLivingProps.getData((EntityLivingBase) mop.entityHit); + if(props.balefire < 200) props.balefire = 200; + } + }; + public static BiConsumer LAMBDA_LINGER_DIESEL = (bullet, mop) -> { if(!igniteIfPossible(bullet, mop)) spawnFire(bullet, mop, 2F, 1F, 100, EntityFireLingering.TYPE_DIESEL); }; + public static BiConsumer LAMBDA_LINGER_GAS = (bullet, mop) -> { igniteIfPossible(bullet, mop); }; + public static BiConsumer LAMBDA_LINGER_NAPALM = (bullet, mop) -> { if(!igniteIfPossible(bullet, mop)) spawnFire(bullet, mop, 2.5F, 1F, 200, EntityFireLingering.TYPE_DIESEL); }; + public static BiConsumer LAMBDA_LINGER_BALEFIRE = (bullet, mop) -> { spawnFire(bullet, mop, 3F, 1F, 300, EntityFireLingering.TYPE_BALEFIRE); }; + + public static boolean igniteIfPossible(EntityBulletBaseMK4 bullet, MovingObjectPosition mop) { + if(mop.typeOfHit == mop.typeOfHit.BLOCK) { + World world = bullet.worldObj; + Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ); + ForgeDirection dir = ForgeDirection.getOrientation(mop.sideHit); + if(b.isFlammable(world, mop.blockX, mop.blockY, mop.blockZ, dir.getOpposite())) { + if(world.getBlock(mop.blockX + dir.offsetX, mop.blockY + dir.offsetY, mop.blockZ + dir.offsetZ).isAir(world, mop.blockX + dir.offsetX, mop.blockY + dir.offsetY, mop.blockZ + dir.offsetZ)) { + world.setBlock(mop.blockX + dir.offsetX, mop.blockY + dir.offsetY, mop.blockZ + dir.offsetZ, Blocks.fire); + return true; + } + } + bullet.setDead(); + } + return false; + } + + public static void spawnFire(EntityBulletBaseMK4 bullet, MovingObjectPosition mop, float width, float height, int duration, int type) { + if(mop.typeOfHit == mop.typeOfHit.BLOCK) { + List fires = bullet.worldObj.getEntitiesWithinAABB(EntityFireLingering.class, + AxisAlignedBB.getBoundingBox(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord).expand(width / 2 + 0.5, height / 2 + 0.5, width / 2 + 0.5)); + if(fires.isEmpty()) { + EntityFireLingering fire = new EntityFireLingering(bullet.worldObj).setArea(width, height).setDuration(duration).setType(type); + fire.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + bullet.worldObj.spawnEntityInWorld(fire); + } + bullet.setDead(); + } + } + + public static void init() { + flame_diesel = new BulletConfig().setItem(EnumAmmo.FLAME_DIESEL).setCasing(new ItemStack(ModItems.plate_steel, 2), 500).setupDamageClass(DamageClass.FIRE).setLife(100).setVel(1F).setGrav(0.02D).setReloadCount(500).setSelfDamageDelay(20).setKnockback(0F) + .setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_DIESEL); + flame_gas = new BulletConfig().setItem(EnumAmmo.FLAME_GAS).setCasing(new ItemStack(ModItems.plate_steel, 2), 500).setupDamageClass(DamageClass.FIRE).setLife(10).setSpread(0.05F).setVel(1F).setGrav(0.0D).setReloadCount(500).setSelfDamageDelay(20).setKnockback(0F) + .setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_GAS); + flame_napalm = new BulletConfig().setItem(EnumAmmo.FLAME_NAPALM).setCasing(new ItemStack(ModItems.plate_steel, 2), 500).setupDamageClass(DamageClass.FIRE).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(500).setSelfDamageDelay(20).setKnockback(0F) + .setOnUpdate(LAMBDA_FIRE).setOnRicochet(LAMBDA_LINGER_NAPALM); + flame_balefire = new BulletConfig().setItem(EnumAmmo.FLAME_BALEFIRE).setCasing(new ItemStack(ModItems.plate_steel, 2), 500).setupDamageClass(DamageClass.FIRE).setLife(200).setVel(1F).setGrav(0.02D).setReloadCount(500).setSelfDamageDelay(20).setKnockback(0F) + .setOnUpdate(LAMBDA_BALEFIRE).setOnRicochet(LAMBDA_LINGER_BALEFIRE); + + flame_nograv = flame_diesel.clone().setGrav(0); + + flame_topaz_diesel = flame_diesel .clone().setProjectiles(2).setSpread(0.05F).setLife(60).setGrav(0.0D); + flame_topaz_gas = flame_gas .clone().setProjectiles(2).setSpread(0.05F); + flame_topaz_napalm = flame_napalm .clone().setProjectiles(2).setSpread(0.05F).setLife(60).setGrav(0.0D); + flame_topaz_balefire = flame_balefire .clone().setProjectiles(2).setSpread(0.05F).setLife(60).setGrav(0.0D); + + flame_daybreaker_diesel = flame_diesel.clone().setLife(200).setVel(2F).setGrav(0.035D) + .setOnImpact((bullet, mop) -> { Lego.standardExplode(bullet, mop, 5F); spawnFire(bullet, mop, 6F, 2F, 200, EntityFireLingering.TYPE_DIESEL); bullet.setDead(); }); + flame_daybreaker_gas = flame_gas.clone().setLife(200).setVel(2F).setGrav(0.035D) + .setOnImpact((bullet, mop) -> { Lego.standardExplode(bullet, mop, 5F); bullet.setDead(); }); + flame_daybreaker_napalm = flame_napalm.clone().setLife(200).setVel(2F).setGrav(0.035D) + .setOnImpact((bullet, mop) -> { Lego.standardExplode(bullet, mop, 7.5F); spawnFire(bullet, mop, 6F, 2F, 300, EntityFireLingering.TYPE_DIESEL); bullet.setDead(); }); + flame_daybreaker_balefire = flame_balefire.clone().setLife(200).setVel(2F).setGrav(0.035D) + .setOnImpact((bullet, mop) -> { Lego.standardExplode(bullet, mop, 5F); spawnFire(bullet, mop, 7.5F, 2.5F, 400, EntityFireLingering.TYPE_BALEFIRE); bullet.setDead(); }); + + ModItems.gun_flamer = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(20_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE) + .rec(new Receiver(0) + .dmg(1F).spreadHipfire(0F).delay(1).auto(true).reload(90).jam(17) + .mag(new MagazineFullReload(0, 300).addConfigs(flame_diesel, flame_gas, flame_napalm, flame_balefire)) + .offset(0.75, -0.0625, -0.25D) + .setupStandardFire()) + .setupStandardConfiguration() + .anim(LAMBDA_FLAMER_ANIMS).orchestra(Orchestras.ORCHESTRA_FLAMER) + ).setUnlocalizedName("gun_flamer"); + ModItems.gun_flamer_topaz = new ItemGunBaseNT(WeaponQuality.B_SIDE, new GunConfig() + .dura(20_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE) + .rec(new Receiver(0) + .dmg(1.5F).spreadHipfire(0F).delay(1).auto(true).reload(90).jam(17) + .mag(new MagazineFullReload(0, 500).addConfigs(flame_topaz_diesel, flame_topaz_gas, flame_topaz_napalm, flame_topaz_balefire)) + .offset(0.75, -0.0625, -0.25D) + .setupStandardFire()) + .setupStandardConfiguration() + .anim(LAMBDA_FLAMER_ANIMS).orchestra(Orchestras.ORCHESTRA_FLAMER) + ).setUnlocalizedName("gun_flamer_topaz"); + ModItems.gun_flamer_daybreaker = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() + .dura(20_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE) + .rec(new Receiver(0) + .dmg(25F).spreadHipfire(0F).delay(10).auto(true).reload(90).jam(17).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 50).addConfigs(flame_daybreaker_diesel, flame_daybreaker_gas, flame_daybreaker_napalm, flame_daybreaker_balefire)) + .offset(0.75, -0.0625, -0.25D) + .setupStandardFire()) + .setupStandardConfiguration() + .anim(LAMBDA_FLAMER_ANIMS).orchestra(Orchestras.ORCHESTRA_FLAMER_DAYBREAKER) + ).setUnlocalizedName("gun_flamer_daybreaker"); + + ModItems.gun_chemthrower = new ItemGunChemthrower(WeaponQuality.A_SIDE, new GunConfig() + .dura(90_000).draw(10).inspect(17).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .delay(1).spreadHipfire(0F).auto(true) + .mag(new MagazineFluid(0, 3_000)) + .offset(0.75, -0.0625, -0.25D) + .canFire(ItemGunChemthrower.LAMBDA_CAN_FIRE).fire(ItemGunChemthrower.LAMBDA_FIRE)) + .pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).decider(GunStateDecider.LAMBDA_STANDARD_DECIDER) + .anim(LAMBDA_CHEMTHROWER_ANIMS).orchestra(Orchestras.ORCHESTRA_CHEMTHROWER) + ).setUnlocalizedName("gun_chemthrower"); + } + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_FLAMER_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(-45, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_DOWN)); + case RELOAD: return ResourceManager.flamethrower_anim.get("Reload"); + case INSPECT: + case JAMMED: return new BusAnimation() + .addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, 45, 250, IType.SIN_FULL).addPos(0, 0, 45, 350).addPos(0, 0, -15, 150, IType.SIN_FULL).addPos(0, 0, 0, 100, IType.SIN_FULL)); + } + + return null; + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_CHEMTHROWER_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(-45, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_DOWN)); + } + + return null; + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java new file mode 100644 index 000000000..41caa05c7 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryFolly.java @@ -0,0 +1,157 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.List; +import java.util.function.BiConsumer; +import java.util.function.BiFunction; +import java.util.function.Consumer; + +import com.hbm.entity.effect.EntityNukeTorex; +import com.hbm.entity.logic.EntityNukeExplosionMK5; +import com.hbm.entity.projectile.EntityBulletBaseMK4; +import com.hbm.entity.projectile.EntityBulletBeamBase; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; +import com.hbm.items.weapon.sedna.mags.MagazineSingleReload; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.BusAnimationKeyframe.IType; +import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.ContaminationUtil; +import com.hbm.util.EntityDamageUtil; +import com.hbm.util.Vec3NT; +import com.hbm.util.ContaminationUtil.ContaminationType; +import com.hbm.util.ContaminationUtil.HazardType; +import com.hbm.util.DamageResistanceHandler.DamageClass; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MovingObjectPosition; + +public class XFactoryFolly { + + public static BulletConfig folly_sm; + public static BulletConfig folly_nuke; + + public static Consumer LAMBDA_SM_UPDATE = (entity) -> { + if(entity.worldObj.isRemote) return; + EntityBulletBeamBase beam = (EntityBulletBeamBase) entity; + Vec3NT dir = new Vec3NT(beam.headingX, beam.headingY, beam.headingZ).normalizeSelf(); + + if(beam.ticksExisted < 50) { + double spacing = 10; + double dist = beam.ticksExisted * spacing; + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "plasmablast"); + data.setFloat("r", 0.75F); + data.setFloat("g", 0.75F); + data.setFloat("b", 0.75F); + data.setFloat("pitch", (float) beam.rotationPitch + 90); + data.setFloat("yaw", (float) -beam.rotationYaw); + data.setFloat("scale", 2F + beam.ticksExisted / (float)(beam.beamLength / spacing) * 3F); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, beam.posX + dir.xCoord * dist, beam.posY + dir.yCoord * dist, beam.posZ + dir.zCoord * dist), new TargetPoint(beam.dimension, beam.posX, beam.posY, beam.posZ, 250)); + } + + if(entity.ticksExisted != 2) return; + + if(beam.thrower != null) ContaminationUtil.contaminate(beam.thrower, HazardType.RADIATION, ContaminationType.CREATIVE, 150F); + + List entities = beam.worldObj.getEntitiesWithinAABBExcludingEntity(beam, beam.boundingBox.addCoord(beam.headingX, beam.headingY, beam.headingZ).expand(1.0D, 1.0D, 1.0D)); + + for(int i = 1; i < beam.beamLength; i += 2) { + int x = (int) Math.floor(beam.posX + dir.xCoord * i); + int y = (int) Math.floor(beam.posY + dir.yCoord * i); + int z = (int) Math.floor(beam.posZ + dir.zCoord * i); + + for(int ix = x - 1; ix <= x + 1; ix++) for(int iy = y - 1; iy <= y + 1; iy++) for(int iz = z - 1; iz <= z + 1; iz++) { + if(iy > 0 && iy < 256) beam.worldObj.setBlock(ix, iy, iz, Blocks.air); + AxisAlignedBB aabb = AxisAlignedBB.getBoundingBox(ix - 1, iy - 1, iz - 1, ix + 2, iy + 2, iz + 2); + for(Entity e : entities) if(e != beam.thrower && e.boundingBox.intersectsWith(aabb)) { + if(e instanceof EntityLivingBase) EntityDamageUtil.attackEntityFromNT((EntityLivingBase) e, beam.config.getDamage(beam, beam.thrower, beam.config.dmgClass), beam.damage, true, false, 0D, 100F, 0.99F); + else EntityDamageUtil.attackEntityFromIgnoreIFrame(e, beam.config.getDamage(beam, beam.thrower, beam.config.dmgClass), beam.damage); + } + } + } + }; + + public static BiConsumer LAMBDA_NUKE_IMPACT = (bullet, mop) -> { + if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 2) return; + if(bullet.isDead) return; + bullet.setDead(); + bullet.worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(bullet.worldObj, 100, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord)); + EntityNukeTorex.statFac(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 100); + }; + + public static void init() { + + folly_sm = new BulletConfig().setItem(EnumAmmoSecret.FOLLY_SM).setupDamageClass(DamageClass.SUBATOMIC).setBeam().setLife(100).setVel(2F).setGrav(0.015D).setRenderRotations(false).setSpectral(true).setDoesPenetrate(true) + .setOnUpdate(LAMBDA_SM_UPDATE); + folly_nuke = new BulletConfig().setItem(EnumAmmoSecret.FOLLY_NUKE).setChunkloading().setLife(600).setVel(4F).setGrav(0.015D) + .setOnImpact(LAMBDA_NUKE_IMPACT); + + ModItems.gun_folly = new ItemGunBaseNT(WeaponQuality.SECRET, new GunConfig() + .dura(0).draw(40).crosshair(Crosshair.NONE) + .rec(new Receiver(0) + .dmg(1_000F).delay(26).dryfire(false).reload(160).jam(0).sound("hbm:weapon.fire.loudestNoiseOnEarth", 100.0F, 1.0F) + .mag(new MagazineSingleReload(0, 1).addConfigs(folly_sm, folly_nuke)) + .offset(0.75, -0.0625, -0.1875D).offsetScoped(0.75, -0.0625, -0.125D) + .canFire(LAMBDA_CAN_FIRE).fire(LAMBDA_FIRE).recoil(LAMBDA_RECOIL_FOLLY)) + .setupStandardConfiguration().pt(LAMBDA_TOGGLE_AIM) + .anim(LAMBDA_FOLLY_ANIMS).orchestra(Orchestras.ORCHESTRA_FOLLY) + ).setUnlocalizedName("gun_folly"); + } + + public static BiConsumer LAMBDA_TOGGLE_AIM = (stack, ctx) -> { + if(ItemGunBaseNT.getState(stack, ctx.configIndex) == GunState.IDLE) { + boolean wasAiming = ItemGunBaseNT.getIsAiming(stack); + ItemGunBaseNT.setIsAiming(stack, !wasAiming); + if(!wasAiming) ItemGunBaseNT.playAnimation(ctx.getPlayer(), stack, AnimType.SPINUP, ctx.configIndex); + } + }; + + public static BiConsumer LAMBDA_FIRE = (stack, ctx) -> { + Lego.doStandardFire(stack, ctx, AnimType.CYCLE, false); + }; + + public static BiFunction LAMBDA_CAN_FIRE = (stack, ctx) -> { + if(!ItemGunBaseNT.getIsAiming(stack)) return false; + if(ItemGunBaseNT.getLastAnim(stack, ctx.configIndex) != AnimType.SPINUP) return false; + if(ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex) < 100) return false; + return ctx.config.getReceivers(stack)[0].getMagazine(stack).getAmount(stack, ctx.inventory) > 0; + }; + + public static BiConsumer LAMBDA_RECOIL_FOLLY = (stack, ctx) -> { + ItemGunBaseNT.setupRecoil(25, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5)); + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_FOLLY_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(-60, 0, 0, 0).addPos(5, 0, 0, 1500, IType.SIN_DOWN).addPos(0, 0, 0, 500, IType.SIN_FULL)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, -4.5, 50).addPos(0, 0, -4.5, 500).addPos(0, 0, 0, 500, IType.SIN_UP)) + .addBus("LOAD", new BusAnimationSequence().addPos(0, 0, 0, 50).addPos(-25, 0, 0, 250, IType.SIN_DOWN).addPos(0, 0, 0, 1000, IType.SIN_FULL)); + case RELOAD: return new BusAnimation() + .addBus("LOAD", new BusAnimationSequence().addPos(60, 0, 0, 1000, IType.SIN_FULL).addPos(60, 0, 0, 6000).addPos(0, 0, 0, 1000, IType.SIN_FULL)) + .addBus("SCREW", new BusAnimationSequence().addPos(0, 0, 0, 1000).addPos(0, 0, -135, 1000, IType.SIN_FULL).addPos(0, 0, -135, 4000).addPos(0, 0, 0, 1000, IType.SIN_FULL)) + .addBus("BREECH", new BusAnimationSequence().addPos(0, 0, 0, 1000).addPos(0, 0, -0.5, 1000, IType.SIN_FULL).addPos(0, -4, -0.5, 1000, IType.SIN_FULL).addPos(0, -4, -0.5, 2000).addPos(0, 0, -0.5, 1000, IType.SIN_FULL).addPos(0, 0, 0, 1000, IType.SIN_FULL)) + .addBus("SHELL", new BusAnimationSequence().addPos(0, -4, -4.5, 0).addPos(0, -4, -4.5, 3000).addPos(0, 0, -4.5, 1000, IType.SIN_FULL).addPos(0, 0, 0, 500, IType.SIN_UP)); + } + + return null; + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java new file mode 100644 index 000000000..a70a284d5 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java @@ -0,0 +1,278 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.function.BiConsumer; +import java.util.function.BiFunction; +import java.util.function.Consumer; + +import com.hbm.entity.effect.EntityFireLingering; +import com.hbm.entity.projectile.EntityBulletBaseMK4; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; +import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; +import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.impl.ItemGunStinger; +import com.hbm.items.weapon.sedna.mags.MagazineFullReload; +import com.hbm.items.weapon.sedna.mags.MagazineSingleReload; +import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.BusAnimationKeyframe.IType; +import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.EntityDamageUtil; +import com.hbm.util.DamageResistanceHandler.DamageClass; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class XFactoryRocket { + + public static BulletConfig[] rocket_template; + + public static BulletConfig[] rocket_rpzb; + public static BulletConfig[] rocket_qd; + public static BulletConfig[] rocket_ml; + + // FLYING + public static Consumer LAMBDA_STANDARD_ACCELERATE = (entity) -> { + EntityBulletBaseMK4 bullet = (EntityBulletBaseMK4) entity; + if(bullet.accel < 7) bullet.accel += 0.4D; + }; + public static Consumer LAMBDA_STEERING_ACCELERATE = (entity) -> { + EntityBulletBaseMK4 bullet = (EntityBulletBaseMK4) entity; + if(bullet.accel < 4) bullet.accel += 0.4D; + if(bullet.getThrower() == null || !(bullet.getThrower() instanceof EntityPlayer)) return; + + EntityPlayer player = (EntityPlayer) bullet.getThrower(); + if(Vec3.createVectorHelper(bullet.posX - player.posX, bullet.posY - player.posY, bullet.posZ - player.posZ).lengthVector() > 100) return; + if(player.getHeldItem() == null || !(player.getHeldItem().getItem() instanceof ItemGunBaseNT) || !ItemGunBaseNT.getIsAiming(player.getHeldItem())) return; + + MovingObjectPosition mop = Library.rayTrace(player, 200, 1); + if(mop == null || mop.hitVec == null) return; + + Vec3 vec = Vec3.createVectorHelper(mop.hitVec.xCoord - bullet.posX, mop.hitVec.yCoord - bullet.posY, mop.hitVec.zCoord - bullet.posZ); + if(vec.lengthVector() < 3) return; + vec = vec.normalize(); + + double speed = Vec3.createVectorHelper(bullet.motionX, bullet.motionY, bullet.motionZ).lengthVector(); + bullet.motionX = vec.xCoord * speed; + bullet.motionY = vec.yCoord * speed; + bullet.motionZ = vec.zCoord * speed; + }; + + // IMPACT + public static BiConsumer LAMBDA_STANDARD_EXPLODE = (bullet, mop) -> { + if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; + Lego.standardExplode(bullet, mop, 5F); bullet.setDead(); + }; + public static BiConsumer LAMBDA_STANDARD_EXPLODE_HEAT = (bullet, mop) -> { + if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; + Lego.standardExplode(bullet, mop, 3.5F); bullet.setDead(); + if(mop.typeOfHit == mop.typeOfHit.ENTITY && mop.entityHit instanceof EntityLivingBase) { + EntityLivingBase living = (EntityLivingBase) mop.entityHit; + EntityDamageUtil.attackEntityFromNT(living, bullet.config.getDamage(bullet, bullet.getThrower(), DamageClass.EXPLOSIVE), bullet.damage * 3F, true, true, 0.5F, 5F, 0.2F); + } else if(mop.typeOfHit == mop.typeOfHit.ENTITY) { + mop.entityHit.attackEntityFrom(bullet.config.getDamage(bullet, bullet.getThrower(), DamageClass.EXPLOSIVE), bullet.damage * 3F); + } + }; + public static BiConsumer LAMBDA_STANDARD_EXPLODE_DEMO = (bullet, mop) -> { + if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; + ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 5F, bullet.getThrower()); + vnt.setBlockAllocator(new BlockAllocatorStandard()); + vnt.setBlockProcessor(new BlockProcessorStandard()); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F)); + vnt.explode(); + bullet.setDead(); + }; + public static BiConsumer LAMBDA_STANDARD_EXPLODE_INC = (bullet, mop) -> { + spawnFire(bullet, mop, false, 300); + }; + public static BiConsumer LAMBDA_STANDARD_EXPLODE_PHOSPHORUS = (bullet, mop) -> { + spawnFire(bullet, mop, true, 600); + }; + + public static void spawnFire(EntityBulletBaseMK4 bullet, MovingObjectPosition mop, boolean phosphorus, int duration) { + if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; + World world = bullet.worldObj; + Lego.standardExplode(bullet, mop, 3F); + EntityFireLingering fire = new EntityFireLingering(world).setArea(6, 2).setDuration(duration).setType(phosphorus ? EntityFireLingering.TYPE_PHOSPHORUS : EntityFireLingering.TYPE_DIESEL); + fire.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + world.spawnEntityInWorld(fire); + bullet.setDead(); + for(int dx = -2; dx <= 2; dx++) { + for(int dy = -2; dy <= 2; dy++) { + for(int dz = -2; dz <= 2; dz++) { + int x = (int) Math.floor(mop.hitVec.xCoord) + dx; + int y = (int) Math.floor(mop.hitVec.yCoord) + dy; + int z = (int) Math.floor(mop.hitVec.zCoord) + dz; + if(world.getBlock(x, y, z).isAir(bullet.worldObj, x, y, z)) for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + if(world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ).isFlammable(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir.getOpposite())) { + world.setBlock(x, y, z, Blocks.fire); + break; + } + } + } + } + } + } + + public static BulletConfig makeRPZB(BulletConfig original) { return original.clone(); } + public static BulletConfig makeQD(BulletConfig original) { return original.clone().setLife(400).setOnUpdate(LAMBDA_STEERING_ACCELERATE); } + public static BulletConfig makeML(BulletConfig original) { return original.clone(); } + + //this is starting to get messy but we need to put this crap *somewhere* and fragmenting it into a billion classes with two methods each just isn't gonna help + public static void init() { + + rocket_template = new BulletConfig[5]; + + BulletConfig baseRocket = new BulletConfig().setLife(300).setSelfDamageDelay(10).setVel(0F).setGrav(0D).setOnEntityHit(null).setOnRicochet(null).setOnUpdate(LAMBDA_STANDARD_ACCELERATE); + + rocket_template[0] = baseRocket.clone().setItem(EnumAmmo.ROCKET_HE).setOnImpact(LAMBDA_STANDARD_EXPLODE); + rocket_template[1] = baseRocket.clone().setItem(EnumAmmo.ROCKET_HEAT).setDamage(0.5F).setOnImpact(LAMBDA_STANDARD_EXPLODE_HEAT); + rocket_template[2] = baseRocket.clone().setItem(EnumAmmo.ROCKET_DEMO).setDamage(0.75F).setOnImpact(LAMBDA_STANDARD_EXPLODE_DEMO); + rocket_template[3] = baseRocket.clone().setItem(EnumAmmo.ROCKET_INC).setDamage(0.75F).setOnImpact(LAMBDA_STANDARD_EXPLODE_INC); + rocket_template[4] = baseRocket.clone().setItem(EnumAmmo.ROCKET_PHOSPHORUS).setDamage(0.75F).setOnImpact(LAMBDA_STANDARD_EXPLODE_PHOSPHORUS); + + rocket_rpzb = new BulletConfig[rocket_template.length]; + rocket_qd = new BulletConfig[rocket_template.length]; + rocket_ml = new BulletConfig[rocket_template.length]; + + for(int i = 0; i < rocket_template.length; i++) { + rocket_rpzb[i] = makeRPZB(rocket_template[i]); + rocket_qd[i] = makeQD(rocket_template[i]); + rocket_ml[i] = makeML(rocket_template[i]); + } + + ModItems.gun_panzerschreck = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(300).draw(7).inspect(40).crosshair(Crosshair.L_CIRCUMFLEX) + .rec(new Receiver(0) + .dmg(25F).delay(5).reload(50).jam(40).sound("hbm:weapon.rpgShoot", 1.0F, 1.0F) + .mag(new MagazineSingleReload(0, 1).addConfigs(rocket_rpzb)) + .offset(1, -0.0625 * 1.5, -0.1875D) + .setupStandardFire().recoil(LAMBDA_RECOIL_ROCKET)) + .setupStandardConfiguration() + .anim(LAMBDA_PANZERSCHRECK_ANIMS).orchestra(Orchestras.ORCHESTRA_PANERSCHRECK) + ).setUnlocalizedName("gun_panzerschreck"); + + ModItems.gun_stinger = new ItemGunStinger(WeaponQuality.A_SIDE, new GunConfig() + .dura(300).draw(7).inspect(40).crosshair(Crosshair.L_BOX_OUTLINE) + .rec(new Receiver(0) + .dmg(35F).delay(5).reload(50).jam(40).sound("hbm:weapon.rpgShoot", 1.0F, 1.0F) + .mag(new MagazineSingleReload(0, 1).addConfigs(rocket_rpzb)) + .offset(1, -0.0625 * 1.5, -0.1875D) + .setupLockonFire().recoil(LAMBDA_RECOIL_ROCKET)) + .setupStandardConfiguration().ps(LAMBDA_STINGER_SECONDARY_PRESS).rs(LAMBDA_STINGER_SECONDARY_RELEASE) + .anim(LAMBDA_PANZERSCHRECK_ANIMS).orchestra(Orchestras.ORCHESTRA_STINGER) + ).setUnlocalizedName("gun_stinger"); + + ModItems.gun_quadro = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(400).draw(7).inspect(40).crosshair(Crosshair.L_CIRCUMFLEX).hideCrosshair(false) + .rec(new Receiver(0) + .dmg(40F).spreadHipfire(0F).delay(10).reload(55).jam(40).sound("hbm:weapon.rpgShoot", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 4).addConfigs(rocket_qd)) + .offset(1, -0.0625 * 1.5, -0.1875D) + .setupStandardFire().recoil(LAMBDA_RECOIL_ROCKET)) + .setupStandardConfiguration() + .anim(LAMBDA_QUADRO_ANIMS).orchestra(Orchestras.ORCHESTRA_QUADRO) + ).setUnlocalizedName("gun_quadro"); + + ModItems.gun_missile_launcher = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() + .dura(500).draw(20).inspect(40).crosshair(Crosshair.L_CIRCUMFLEX).hideCrosshair(false) + .rec(new Receiver(0) + .dmg(50F).spreadHipfire(0F).delay(5).reload(48).jam(33).sound("hbm:weapon.rpgShoot", 1.0F, 1.0F) + .mag(new MagazineSingleReload(0, 1).addConfigs(rocket_ml)) + .offset(1, -0.0625 * 1.5, -0.1875D) + .setupStandardFire().recoil(LAMBDA_RECOIL_ROCKET)) + .setupStandardConfiguration().pp(LAMBDA_MISSILE_LAUNCHER_PRIMARY_PRESS) + .anim(LAMBDA_MISSILE_LAUNCHER_ANIMS).orchestra(Orchestras.ORCHESTRA_MISSILE_LAUNCHER) + ).setUnlocalizedName("gun_missile_launcher"); + } + + public static BiConsumer LAMBDA_STINGER_SECONDARY_PRESS = (stack, ctx) -> { ItemGunStinger.setIsLockingOn(stack, true); }; + public static BiConsumer LAMBDA_STINGER_SECONDARY_RELEASE = (stack, ctx) -> { ItemGunStinger.setIsLockingOn(stack, false); }; + + public static BiConsumer LAMBDA_MISSILE_LAUNCHER_PRIMARY_PRESS = (stack, ctx) -> { + if(ItemGunBaseNT.getIsAiming(stack)) { + int target = ItemGunStinger.getLockonTarget(ctx.getPlayer(), 150D, 20D); + if(target != -1) { + ItemGunBaseNT.setLockonTarget(stack, target); + ItemGunBaseNT.setIsLockedOn(stack, true); + } + } + Lego.LAMBDA_STANDARD_CLICK_PRIMARY.accept(stack, ctx); + ItemGunBaseNT.setIsLockedOn(stack, false); + }; + + public static BiConsumer LAMBDA_RECOIL_ROCKET = (stack, ctx) -> { }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_PANZERSCHRECK_ANIMS = (stack, type) -> { + boolean empty = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory) <= 0; + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(60, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_DOWN)); + case RELOAD: return new BusAnimation() + .addBus("RELOAD", new BusAnimationSequence().addPos(90, 0, 0, 750, IType.SIN_FULL).addPos(90, 0, 0, 1000).addPos(0, 0, 0, 750, IType.SIN_FULL)) + .addBus("ROCKET", new BusAnimationSequence().addPos(0, -3, -6, 0).addPos(0, -3, -6, 750).addPos(0, 0, -6.5, 500, IType.SIN_DOWN).addPos(0, 0, 0, 350, IType.SIN_UP)); + case JAMMED: empty = false; + case INSPECT: + return new BusAnimation() + .addBus("RELOAD", new BusAnimationSequence().addPos(90, 0, 0, 750, IType.SIN_FULL).addPos(90, 0, 0, 500).addPos(0, 0, 0, 750, IType.SIN_FULL)) + .addBus("ROCKET", new BusAnimationSequence().addPos(0, empty ? -3 : 0, 0, 0)); + } + return null; + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_QUADRO_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(60, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_DOWN)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, -0.5, 50).addPos(0, 0, 0, 50)); + case RELOAD: return new BusAnimation() + .addBus("RELOAD_ROTATE", new BusAnimationSequence().addPos(0, 0, 60, 500, IType.SIN_FULL).addPos(0, 0, 60, 1500).addPos(0, 0, 0, 750, IType.SIN_FULL)) + .addBus("RELOAD_PUSH", new BusAnimationSequence().addPos(-1, -1, 0, 0).addPos(-1, -1, 0, 500).addPos(-1, 0, 0, 350).addPos(0, 0, 0, 1000)); + case JAMMED: + case INSPECT: return new BusAnimation() + .addBus("RELOAD_ROTATE", new BusAnimationSequence().addPos(0, 0, 60, 750, IType.SIN_FULL).addPos(0, 0, 60, 500).addPos(0, 0, 0, 750, IType.SIN_FULL)); + } + return null; + }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_MISSILE_LAUNCHER_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(60, 0, 0, 0).addPos(0, 0, 0, 1000, IType.SIN_DOWN)); + case RELOAD: return new BusAnimation() + .addBus("BARREL", new BusAnimationSequence().addPos(0, 0, 1.5, 150).addPos(0, 0, 1.5, 2100).addPos(0, 0, 0, 150)) + .addBus("OPEN", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(90, 0, 0, 500, IType.SIN_FULL).addPos(90, 0, 0, 1000).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("EQUIP", new BusAnimationSequence().addPos(0, 0, 0, 2250).addPos(-1, 0, 0, 150, IType.SIN_DOWN).addPos(0, 0, 0, 150, IType.SIN_UP)) + .addBus("MISSILE", new BusAnimationSequence().addPos(-10, 0, 0, 0).addPos(-10, 0, 0, 750).addPos(3, 0, 2, 0).addPos(0, 0, -6, 350, IType.SIN_FULL).addPos(0, 0, 0, 350, IType.SIN_UP)); + case JAMMED: + case INSPECT: return new BusAnimation() + .addBus("BARREL", new BusAnimationSequence().addPos(0, 0, 1.5, 150).addPos(0, 0, 1.5, 1350).addPos(0, 0, 0, 150)) + .addBus("OPEN", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(90, 0, 0, 500, IType.SIN_FULL).addPos(90, 0, 0, 250).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("EQUIP", new BusAnimationSequence().addPos(0, 0, 0, 1500).addPos(-1, 0, 0, 150, IType.SIN_DOWN).addPos(0, 0, 0, 150, IType.SIN_UP)); + } + return null; + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryTurret.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryTurret.java new file mode 100644 index 000000000..0c5e332aa --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryTurret.java @@ -0,0 +1,48 @@ +package com.hbm.items.weapon.sedna.factory; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; +import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; +import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; +import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.Ammo240Shell; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; + +import net.minecraft.item.ItemStack; + +public class XFactoryTurret { + + public static BulletConfig dgk_normal; + + public static SpentCasing CASINNG240MM = new SpentCasing(CasingType.BOTTLENECK).setScale(7.5F).setBounceMotion(0.02F, 0.05F).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(1F, 0.5D, 60, 20); + public static BulletConfig shell_normal; + public static BulletConfig shell_explosive; + public static BulletConfig shell_ap; + public static BulletConfig shell_du; + public static BulletConfig shell_w9; + + public static void init() { + dgk_normal = new BulletConfig().setItem(new ItemStack(ModItems.ammo_dgk)); + + shell_normal = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.STOCK)).setDamage(1F).setCasing(CASINNG240MM.clone().register("240standard")).setOnImpact((bullet, mop) -> { + Lego.standardExplode(bullet, mop, 10F); bullet.setDead(); + }); + shell_explosive = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.EXPLOSIVE)).setDamage(1.5F).setCasing(CASINNG240MM.clone().register("240ext")).setOnImpact((bullet, mop) -> { + ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 10F); + vnt.setBlockAllocator(new BlockAllocatorStandard()); + vnt.setBlockProcessor(new BlockProcessorStandard()); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F)); + vnt.explode(); + bullet.setDead(); + }); + shell_ap = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.APFSDS_T)).setDamage(2F).setDoesPenetrate(true).setCasing(CASINNG240MM.clone().register("240w")); + shell_du = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.APFSDS_DU)).setDamage(2.5F).setDoesPenetrate(true).setDamageFalloutByPen(false).setCasing(CASINNG240MM.clone().register("240u")); + shell_w9 = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.W9)).setDamage(2.5F).setCasing(CASINNG240MM.clone().register("240n")).setOnImpact(XFactoryCatapult.LAMBDA_NUKE_STANDARD); + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentAmmoCounter.java b/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentAmmoCounter.java new file mode 100644 index 000000000..90398bda4 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentAmmoCounter.java @@ -0,0 +1,70 @@ +package com.hbm.items.weapon.sedna.hud; + +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.mags.IMagazine; +import com.hbm.lib.RefStrings; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class HUDComponentAmmoCounter implements IHUDComponent { + + private static final ResourceLocation misc = new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_misc.png"); + protected static final RenderItem itemRenderer = RenderItem.getInstance(); + protected int receiver; + protected boolean mirrored; + protected boolean noCounter; + + public HUDComponentAmmoCounter(int receiver) { + this.receiver = receiver; + } + + public HUDComponentAmmoCounter mirror() { + this.mirrored = true; + return this; + } + + public HUDComponentAmmoCounter noCounter() { + this.noCounter = true; + return this; + } + + @Override + public int getComponentHeight(EntityPlayer player, ItemStack stack){ + return 24; + } + + @Override + public void renderHUDComponent(Pre event, ElementType type, EntityPlayer player, ItemStack stack, int bottomOffset, int gunIndex) { + + if(type != type.HOTBAR) return; + ScaledResolution resolution = event.resolution; + Minecraft mc = Minecraft.getMinecraft(); + + int pX = resolution.getScaledWidth() / 2 + (mirrored ? -(62 + 36 + 52) : (62 + 36)) + (noCounter ? 14 : 0); + int pZ = resolution.getScaledHeight() - bottomOffset - 23; + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + IMagazine mag = gun.getConfig(stack, gunIndex).getReceivers(stack)[this.receiver].getMagazine(stack); + + if(!noCounter) mc.fontRenderer.drawString(mag.reportAmmoStateForHUD(stack, player), pX + 17, pZ + 6, 0xFFFFFF); + + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + RenderHelper.enableGUIStandardItemLighting(); + itemRenderer.renderItemAndEffectIntoGUI(mc.fontRenderer, mc.getTextureManager(), mag.getIconForHUD(stack, player), pX, pZ); + RenderHelper.disableStandardItemLighting(); + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glDisable(GL12.GL_RESCALE_NORMAL); + mc.renderEngine.bindTexture(misc); + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentDurabilityBar.java b/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentDurabilityBar.java new file mode 100644 index 000000000..d7160bfd3 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/hud/HUDComponentDurabilityBar.java @@ -0,0 +1,53 @@ +package com.hbm.items.weapon.sedna.hud; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.lib.RefStrings; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.ScaledResolution; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class HUDComponentDurabilityBar implements IHUDComponent { + + private static final ResourceLocation misc = new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_misc.png"); + + protected boolean mirrored = false; + + public HUDComponentDurabilityBar() { + this(false); + } + public HUDComponentDurabilityBar(boolean mirror) { + this.mirrored = mirror; + } + + @Override + public int getComponentHeight(EntityPlayer player, ItemStack stack) { + return 5; + } + + @Override + public void renderHUDComponent(Pre event, ElementType type, EntityPlayer player, ItemStack stack, int bottomOffset, int gunIndex) { + + if(type != type.HOTBAR) return; + ScaledResolution resolution = event.resolution; + Minecraft mc = Minecraft.getMinecraft(); + + int pX = resolution.getScaledWidth() / 2 + (mirrored ? -(62 + 36 + 52) : (62 + 36)); + int pZ = resolution.getScaledHeight() - 21; + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + int dura = (int) (50 * gun.getWear(stack, gunIndex) / gun.getConfig(stack, gunIndex).getDurability(stack)); + + GL11.glColor4f(1F, 1F, 1F, 1F); + + mc.renderEngine.bindTexture(misc); + mc.ingameGUI.drawTexturedModalRect(pX, pZ + 16, 94, 0, 52, 3); + mc.ingameGUI.drawTexturedModalRect(pX + 1, pZ + 16, 95, 3, 50 - dura, 3); + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/hud/IHUDComponent.java b/src/main/java/com/hbm/items/weapon/sedna/hud/IHUDComponent.java new file mode 100644 index 000000000..071ad0ad6 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/hud/IHUDComponent.java @@ -0,0 +1,12 @@ +package com.hbm.items.weapon.sedna.hud; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public interface IHUDComponent { + + public int getComponentHeight(EntityPlayer player, ItemStack stack); + public void renderHUDComponent(Pre event, ElementType type, EntityPlayer player, ItemStack stack, int bottomOffset, int gunIndex); +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/impl/ItemGunChemthrower.java b/src/main/java/com/hbm/items/weapon/sedna/impl/ItemGunChemthrower.java new file mode 100644 index 000000000..c2aaee876 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/impl/ItemGunChemthrower.java @@ -0,0 +1,101 @@ +package com.hbm.items.weapon.sedna.impl; + +import java.util.function.BiConsumer; +import java.util.function.BiFunction; + +import com.hbm.entity.projectile.EntityChemical; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.mags.IMagazine; +import com.hbm.items.weapon.sedna.mags.MagazineFluid; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import api.hbm.fluid.IFillableItem; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Vec3; + +public class ItemGunChemthrower extends ItemGunBaseNT implements IFillableItem { + + public static final int CONSUMPTION = 3; + + public ItemGunChemthrower(WeaponQuality quality, GunConfig... cfg) { + super(quality, cfg); + } + + @Override + public boolean acceptsFluid(FluidType type, ItemStack stack) { + return getFluidType(stack) == type || this.getMagCount(stack) == 0; + } + + public static final int transferSpeed = 50; + + @Override + public int tryFill(FluidType type, int amount, ItemStack stack) { + + if(!acceptsFluid(type, stack)) return amount; + if(this.getMagCount(stack) == 0) this.setMagType(stack, type.getID()); + + int fill = this.getMagCount(stack); + int req = this.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getCapacity(stack) - fill; + int toFill = Math.min(amount, req); + toFill = Math.min(toFill, transferSpeed); + this.setMagCount(stack, fill + toFill); + + return amount - toFill; + } + + public FluidType getFluidType(ItemStack stack) { + return Fluids.fromID(this.getMagType(stack)); + } + + @Override + public boolean providesFluid(FluidType type, ItemStack stack) { + return getFluidType(stack) == type; + } + + @Override + public int tryEmpty(FluidType type, int amount, ItemStack stack) { + int fill = this.getMagCount(stack); + int toUnload = Math.min(fill, amount); + toUnload = Math.min(toUnload, transferSpeed); + this.setMagCount(stack, fill - toUnload); + return toUnload; + } + + @Override public FluidType getFirstFluidType(ItemStack stack) { return Fluids.fromID(this.getMagType(stack)); } + @Override public int getFill(ItemStack stack) { return this.getMagCount(stack); } + + public static int getMagType(ItemStack stack) { return ItemGunBaseNT.getValueInt(stack, MagazineFluid.KEY_MAG_TYPE + 0); } + public static void setMagType(ItemStack stack, int value) { ItemGunBaseNT.setValueInt(stack, MagazineFluid.KEY_MAG_TYPE + 0, value); } + public static int getMagCount(ItemStack stack) { return ItemGunBaseNT.getValueInt(stack, MagazineFluid.KEY_MAG_COUNT + 0); } + public static void setMagCount(ItemStack stack, int value) { ItemGunBaseNT.setValueInt(stack, MagazineFluid.KEY_MAG_COUNT + 0, value); } + + public static BiFunction LAMBDA_CAN_FIRE = (stack, ctx) -> { return ctx.config.getReceivers(stack)[0].getMagazine(stack).getAmount(stack, ctx.inventory) >= CONSUMPTION; }; + + public static BiConsumer LAMBDA_FIRE = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + EntityPlayer player = ctx.getPlayer(); + int index = ctx.configIndex; + ItemGunBaseNT.playAnimation(player, stack, AnimType.CYCLE, ctx.configIndex); + + Receiver primary = ctx.config.getReceivers(stack)[0]; + IMagazine mag = primary.getMagazine(stack); + + Vec3 offset = primary.getProjectileOffset(stack); + double forwardOffset = offset.xCoord; + double heightOffset = offset.yCoord; + double sideOffset = offset.zCoord; + + EntityChemical chem = new EntityChemical(entity.worldObj, entity, sideOffset, heightOffset, forwardOffset); + chem.setFluid((FluidType) mag.getType(stack, ctx.inventory)); + entity.worldObj.spawnEntityInWorld(chem); + + mag.useUpAmmo(stack, ctx.inventory, CONSUMPTION); + ItemGunBaseNT.setWear(stack, index, Math.min(ItemGunBaseNT.getWear(stack, index) + 1F, ctx.config.getDurability(stack))); + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/impl/ItemGunStinger.java b/src/main/java/com/hbm/items/weapon/sedna/impl/ItemGunStinger.java new file mode 100644 index 000000000..20fe6ef71 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/impl/ItemGunStinger.java @@ -0,0 +1,156 @@ +package com.hbm.items.weapon.sedna.impl; + +import java.util.List; + +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.hud.IHUDComponent; +import com.hbm.render.util.RenderScreenOverlay; +import com.hbm.util.Vec3NT; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class ItemGunStinger extends ItemGunBaseNT { + + public static final String KEY_LOCKINGON = "lockingon"; + public static final String KEY_LOCKONPROGRESS = "lockonprogress"; + + public static float prevLockon; + public static float lockon; + + public ItemGunStinger(WeaponQuality quality, GunConfig... cfg) { + super(quality, cfg); + } + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isHeld) { + super.onUpdate(stack, world, entity, slot, isHeld); + + if(entity instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer) entity; + if(!world.isRemote && !isHeld && this.getIsLockingOn(stack)) { + this.setIsLockingOn(stack, false); + } + + this.prevLockon = this.lockon; + + if(!world.isRemote) { + int prevTarget = this.getLockonTarget(stack); + if(isHeld && this.getIsLockingOn(stack) && this.getIsAiming(stack) && this.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, player.inventory) > 0) { + int newLockonTarget = this.getLockonTarget(player, 150D, 10D); + + if(newLockonTarget == -1) { + if(!this.getIsLockedOn(stack)) resetLockon(world, stack); + } else { + if(!this.getIsLockedOn(stack) && newLockonTarget != prevTarget) { + resetLockon(world, stack); + this.setLockonTarget(stack, newLockonTarget); + } + progressLockon(world, stack); + + if(this.getLockonProgress(stack) >= 60 && !this.getIsLockedOn(stack)) { + player.worldObj.playSoundAtEntity(player, "hbm:item.techBleep", 1F, 1F); + this.setIsLockedOn(stack, true); + } + } + } else { + resetLockon(world, stack); + } + } else { + if(this.getLockonProgress(stack) > 1) { + this.lockon += (1F / 60F); + } else { + this.lockon = 0; + } + } + } + } + + public void resetLockon(World world, ItemStack stack) { + this.setLockonProgress(stack, 0); + this.setIsLockedOn(stack, false); + } + + public void progressLockon(World world, ItemStack stack) { + this.setLockonProgress(stack, this.getLockonProgress(stack) + 1); + } + + public static int getLockonTarget(EntityPlayer player, double distance, double angleThreshold) { + + if(player == null) return -1; + + double x = player.posX; + double y = player.posY + player.getEyeHeight(); + double z = player.posZ; + + Vec3NT delta = new Vec3NT(player.getLook(1F)).multiply(distance); + Vec3NT look = new Vec3NT(delta).add(x, y, z); + Vec3NT left = new Vec3NT(delta).add(x, y, z).rotateAroundYDeg(-angleThreshold).add(0, 10, 0); + Vec3NT right = new Vec3NT(delta).add(x, y, z).rotateAroundYDeg(angleThreshold).add(0, -10, 0); + Vec3NT pos = new Vec3NT(x, y, z); + + AxisAlignedBB aabb = AxisAlignedBB.getBoundingBox(Vec3NT.getMinX(look, left, right, pos), Vec3NT.getMinY(look, left, right, pos), Vec3NT.getMinZ(look, left, right, pos), + Vec3NT.getMaxX(look, left, right, pos), Vec3NT.getMaxY(look, left, right, pos), Vec3NT.getMaxZ(look, left, right, pos)); + List entities = player.worldObj.getEntitiesWithinAABBExcludingEntity(player, aabb); + Entity closestEntity = null; + double closestAngle = 360D; + + Vec3NT toEntity = new Vec3NT(0, 0, 0); + + for(Entity entity : entities) { + if(entity.height < 0.5F || !entity.canBeCollidedWith()) continue; + toEntity.setComponents(entity.posX - x, entity.posY + entity.height / 2D - y, entity.posZ - z); + + double vecProd = toEntity.xCoord * delta.xCoord + toEntity.yCoord * delta.yCoord + toEntity.zCoord * delta.zCoord; + double bot = toEntity.lengthVector() * delta.lengthVector(); + double angle = Math.abs(Math.acos(vecProd / bot) * 180 / Math.PI); + + if(angle < closestAngle && angle < angleThreshold) { + closestAngle = angle; + closestEntity = entity; + } + } + + return closestEntity == null ? - 1 : closestEntity.getEntityId(); + } + + @Override + @SideOnly(Side.CLIENT) + public void renderHUD(Pre event, ElementType type, EntityPlayer player, ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + + if(type == ElementType.CROSSHAIRS) { + event.setCanceled(true); + if(aimingProgress < 1F) return; + RenderScreenOverlay.renderCustomCrosshairs(event.resolution, Minecraft.getMinecraft().ingameGUI, gun.getConfig(stack, 0).getCrosshair(stack)); + RenderScreenOverlay.renderStingerLockon(event.resolution, Minecraft.getMinecraft().ingameGUI); + } + + int confNo = this.configs_DNA.length; + + for(int i = 0; i < confNo; i++) { + IHUDComponent[] components = gun.getConfig(stack, i).getHUDComponents(stack); + + if(components != null) for(IHUDComponent component : components) { + int bottomOffset = 0; + component.renderHUDComponent(event, type, player, stack, bottomOffset, i); + bottomOffset += component.getComponentHeight(player, stack); + } + } + } + + public static boolean getIsLockingOn(ItemStack stack) { return getValueBool(stack, KEY_LOCKINGON); } + public static void setIsLockingOn(ItemStack stack, boolean value) { setValueBool(stack, KEY_LOCKINGON, value); } + public static int getLockonProgress(ItemStack stack) { return getValueInt(stack, KEY_LOCKONPROGRESS); } + public static void setLockonProgress(ItemStack stack, int value) { setValueInt(stack, KEY_LOCKONPROGRESS, value); } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java b/src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java new file mode 100644 index 000000000..e1d9ae758 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java @@ -0,0 +1,61 @@ +package com.hbm.items.weapon.sedna.mags; + +import com.hbm.items.ModItems; +import com.hbm.items.tool.ItemCasingBag; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.particle.SpentCasing; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; + +/** + * The magazine simply provides the receiver it's attached to with ammo, the receiver does not care where it comes from. + * Therefore it is the mag's responsibility to handle reloading, any type restrictions as well as belt-like action from "magless" guns. + * + * @author hbm + */ +public interface IMagazine { + + /** What ammo is loaded currently */ + public T getType(ItemStack stack, IInventory inventory); + /** Sets the mag's ammo type */ + public void setType(ItemStack stack, T type); + /** How much ammo this mag can carry */ + public int getCapacity(ItemStack stack); + /** How much ammo is currently loaded */ + public int getAmount(ItemStack stack, IInventory inventory); + /** Sets the mag's ammo level */ + public void setAmount(ItemStack stack, int amount); + /** removes the specified amount from the magazine */ + public void useUpAmmo(ItemStack stack, IInventory inventory, int amount); + /** If a reload can even be initiated, i.e. the player even has bullets to load, inventory can be null */ + public boolean canReload(ItemStack stack, IInventory inventory); + /** The action done at the end of one reload cycle, either loading one shell or replacing the whole mag, inventory can be null */ + public void reloadAction(ItemStack stack, IInventory inventory); + /** The stack that should be displayed for the ammo HUD */ + public ItemStack getIconForHUD(ItemStack stack, EntityPlayer player); + /** It explains itself */ + public String reportAmmoStateForHUD(ItemStack stack, EntityPlayer player); + /** Casing config to use then ejecting */ + public SpentCasing getCasing(ItemStack stack, IInventory inventory); + /** When reloading, remember the amount before reload is initiated */ + public void setAmountBeforeReload(ItemStack stack, int amount); + /** Amount of rounds before reload has started. Do note that the NBT stack sync likely arrives + * after the animation packets, so for RELOAD type anims, use the live ammo count instead! */ + public int getAmountBeforeReload(ItemStack stack); + /** Sets amount of ammo after each reload operation */ + public void setAmountAfterReload(ItemStack stack, int amount); + /** Cached amount of ammo after the most recent reload */ + public int getAmountAfterReload(ItemStack stack); + + public static void handleAmmoBag(IInventory inventory, BulletConfig config, int shotsFired) { + if(config.casingItem != null && config.casingAmount > 0 && inventory instanceof InventoryPlayer) { + InventoryPlayer inv = (InventoryPlayer) inventory; + for(ItemStack stack : inv.mainInventory) { + if(stack != null && stack.getItem() == ModItems.casing_bag && ItemCasingBag.pushCasing(stack, config.casingItem, 1F / config.casingAmount * 0.5F * shotsFired)) return; + } + } + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineBelt.java b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineBelt.java new file mode 100644 index 000000000..46c91c4ba --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineBelt.java @@ -0,0 +1,111 @@ +package com.hbm.items.weapon.sedna.mags; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.particle.SpentCasing; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; + +public class MagazineBelt implements IMagazine { + + protected List acceptedBullets = new ArrayList(); + + public MagazineBelt addConfigs(BulletConfig... cfgs) { for(BulletConfig cfg : cfgs) acceptedBullets.add(cfg); return this; } + + @Override + public BulletConfig getType(ItemStack stack, IInventory inventory) { + BulletConfig config = getFirstConfig(stack, inventory); + if(this.getMagType(stack) != config.id) { + this.setMagType(stack, config.id); + } + return config; + } + + @Override + public void useUpAmmo(ItemStack stack, IInventory inventory, int amount) { + + BulletConfig first = this.getFirstConfig(stack, inventory); + + for(int i = 0; i < inventory.getSizeInventory(); i++) { + ItemStack slot = inventory.getStackInSlot(i); + + if(slot != null) { + if(first.ammo.matchesRecipe(slot, true)) { + int toRemove = Math.min(slot.stackSize, amount); + amount -= toRemove; + inventory.decrStackSize(i, toRemove); + IMagazine.handleAmmoBag(inventory, first, toRemove); + if(amount <= 0) return; + } + } + } + } + + @Override public void setType(ItemStack stack, BulletConfig type) { } + @Override public int getCapacity(ItemStack stack) { return 0; } + @Override public void setAmount(ItemStack stack, int amount) { } + @Override public boolean canReload(ItemStack stack, IInventory inventory) { return false; } + @Override public void reloadAction(ItemStack stack, IInventory inventory) { } + @Override public void setAmountBeforeReload(ItemStack stack, int amount) { } + @Override public int getAmountBeforeReload(ItemStack stack) { return 0; } + @Override public void setAmountAfterReload(ItemStack stack, int amount) { } + @Override public int getAmountAfterReload(ItemStack stack) { return 0; } + + @Override + public int getAmount(ItemStack stack, IInventory inventory) { + if(inventory == null) return 1; // for EntityAIFireGun + BulletConfig first = this.getFirstConfig(stack, inventory); + int count = 0; + for(int i = 0; i < inventory.getSizeInventory(); i++) { + ItemStack slot = inventory.getStackInSlot(i); + + if(slot != null) { + if(first.ammo.matchesRecipe(slot, true)) count += slot.stackSize; + } + } + return count; + } + + @Override + public ItemStack getIconForHUD(ItemStack stack, EntityPlayer player) { + BulletConfig first = this.getFirstConfig(stack, player.inventory); + return first.ammo.toStack(); + } + + @Override + public String reportAmmoStateForHUD(ItemStack stack, EntityPlayer player) { + return "x" + getAmount(stack, player.inventory); + } + + @Override + public SpentCasing getCasing(ItemStack stack, IInventory invnetory) { + return getFirstConfig(stack, invnetory).casing; + } + + public BulletConfig getFirstConfig(ItemStack stack, IInventory inventory) { + + if(inventory == null) return acceptedBullets.get(0); + + for(int i = 0; i < inventory.getSizeInventory(); i++) { + ItemStack slot = inventory.getStackInSlot(i); + + if(slot != null) { + for(BulletConfig config : this.acceptedBullets) { + if(config.ammo.matchesRecipe(slot, true)) return config; + } + } + } + + BulletConfig cached = BulletConfig.configs.get(this.getMagType(stack)); + return acceptedBullets.contains(cached) ? cached : acceptedBullets.get(0); + } + + public static final String KEY_MAG_TYPE = "magtype"; + public static int getMagType(ItemStack stack) { return ItemGunBaseNT.getValueInt(stack, KEY_MAG_TYPE); } + public static void setMagType(ItemStack stack, int value) { ItemGunBaseNT.setValueInt(stack, KEY_MAG_TYPE, value); } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineFluid.java b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineFluid.java new file mode 100644 index 000000000..e02b49aaa --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineFluid.java @@ -0,0 +1,70 @@ +package com.hbm.items.weapon.sedna.mags; + +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.particle.SpentCasing; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; + +public class MagazineFluid implements IMagazine { + + public static final String KEY_MAG_COUNT = "magcount"; + public static final String KEY_MAG_TYPE = "magtype"; + public static final String KEY_MAG_PREV = "magprev"; + public static final String KEY_MAG_AFTER = "magafter"; + + /** A number so the gun tell multiple mags apart */ + public int index; + /** How much ammo this mag can hold */ + public int capacity; + + public MagazineFluid(int index, int capacity) { + this.index = index; + this.capacity = capacity; + } + + @Override + public FluidType getType(ItemStack stack, IInventory inventory) { + int id = this.getMagType(stack, index); + return Fluids.fromID(id); + } + + @Override + public void setType(ItemStack stack, FluidType type) { + this.setMagType(stack, index, type.getID()); + } + + @Override + public int getCapacity(ItemStack stack) { + return capacity; + } + + @Override + public void useUpAmmo(ItemStack stack, IInventory inventory, int amount) { + this.setAmount(stack, this.getAmount(stack, inventory) - amount); + } + + @Override public int getAmount(ItemStack stack, IInventory inventory) { return getMagCount(stack, index); } + @Override public void setAmount(ItemStack stack, int amount) { setMagCount(stack, index, amount); } + + @Override public boolean canReload(ItemStack stack, IInventory inventory) { return false; } + @Override public void reloadAction(ItemStack stack, IInventory inventory) { } + @Override public SpentCasing getCasing(ItemStack stack, IInventory inventory) { return null; } + + @Override public ItemStack getIconForHUD(ItemStack stack, EntityPlayer player) { return new ItemStack(ModItems.fluid_icon, 1, this.getMagType(stack, index)); } + @Override public String reportAmmoStateForHUD(ItemStack stack, EntityPlayer player) { return getIconForHUD(stack, player).getDisplayName(); } + + @Override public void setAmountBeforeReload(ItemStack stack, int amount) { ItemGunBaseNT.setValueInt(stack, KEY_MAG_PREV + index, amount); } + @Override public int getAmountBeforeReload(ItemStack stack) { return ItemGunBaseNT.getValueInt(stack, KEY_MAG_PREV + index); } + @Override public void setAmountAfterReload(ItemStack stack, int amount) { ItemGunBaseNT.setValueInt(stack, KEY_MAG_AFTER + index, amount); } + @Override public int getAmountAfterReload(ItemStack stack) { return ItemGunBaseNT.getValueInt(stack, KEY_MAG_AFTER + index); } + + public static int getMagType(ItemStack stack, int index) { return ItemGunBaseNT.getValueInt(stack, KEY_MAG_TYPE + index); } + public static void setMagType(ItemStack stack, int index, int value) { ItemGunBaseNT.setValueInt(stack, KEY_MAG_TYPE + index, value); } + public static int getMagCount(ItemStack stack, int index) { return ItemGunBaseNT.getValueInt(stack, KEY_MAG_COUNT + index); } + public static void setMagCount(ItemStack stack, int index, int value) { ItemGunBaseNT.setValueInt(stack, KEY_MAG_COUNT + index, value); } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineFullReload.java b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineFullReload.java new file mode 100644 index 000000000..f93420294 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineFullReload.java @@ -0,0 +1,87 @@ +package com.hbm.items.weapon.sedna.mags; + +import com.hbm.items.weapon.sedna.BulletConfig; + +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; + +/** Uses individual bullets which are loaded all at once */ +public class MagazineFullReload extends MagazineSingleTypeBase { + + public MagazineFullReload(int index, int capacity) { + super(index, capacity); + } + + /** Returns true if the player has the same ammo if partially loaded, or any valid ammo if not */ + @Override + public boolean canReload(ItemStack stack, IInventory inventory) { + + if(this.getAmount(stack, inventory) >= this.getCapacity(stack)) return false; + + if(inventory == null) return true; + + for(int i = 0; i < inventory.getSizeInventory(); i++) { + ItemStack slot = inventory.getStackInSlot(i); + + if(slot != null) { + if(this.getAmount(stack, inventory) == 0) { + for(BulletConfig config : this.acceptedBullets) { + if(config.ammo.matchesRecipe(slot, true)) return true; + } + } else { + BulletConfig config = this.getType(stack, inventory); + if(config == null) { config = this.acceptedBullets.get(0); this.setType(stack, config); } + if(config.ammo.matchesRecipe(slot, true)) return true; + } + } + } + + return false; + } + + /** Reloads all rounds at once. If the mag is empty, the mag's type will change to the first valid ammo type */ + @Override + public void reloadAction(ItemStack stack, IInventory inventory) { + + if(inventory == null) { + BulletConfig config = this.getType(stack, inventory); + if(config == null) { config = this.acceptedBullets.get(0); this.setType(stack, config); } //fixing broken NBT + this.setAmount(stack, this.capacity); + return; + } + + for(int i = 0; i < inventory.getSizeInventory(); i++) { + ItemStack slot = inventory.getStackInSlot(i); + + if(slot != null) { + + //mag is empty, assume next best type + if(this.getAmount(stack, inventory) == 0) { + + for(BulletConfig config : this.acceptedBullets) { + if(config.ammo.matchesRecipe(slot, true)) { + this.setType(stack, config); + int wantsToLoad = (int) Math.ceil((double) this.getCapacity(stack) / (double) config.ammoReloadCount); + int toLoad = Math.min(wantsToLoad, slot.stackSize); + this.setAmount(stack, Math.min(toLoad * config.ammoReloadCount, this.capacity)); + inventory.decrStackSize(i, toLoad); + break; + } + } + //mag has a type set, only load that + } else { + BulletConfig config = this.getType(stack, inventory); + if(config == null) { config = this.acceptedBullets.get(0); this.setType(stack, config); } //fixing broken NBT + + if(config.ammo.matchesRecipe(slot, true)) { + int alreadyLoaded = this.getAmount(stack, inventory); + int wantsToLoad = (int) Math.ceil((double) this.getCapacity(stack) / (double) config.ammoReloadCount) - (alreadyLoaded / config.ammoReloadCount); + int toLoad = Math.min(wantsToLoad, slot.stackSize); + this.setAmount(stack, Math.min((toLoad * config.ammoReloadCount) + alreadyLoaded, this.capacity)); + inventory.decrStackSize(i, toLoad); + } + } + } + } + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineSingleReload.java b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineSingleReload.java new file mode 100644 index 000000000..879155413 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineSingleReload.java @@ -0,0 +1,84 @@ +package com.hbm.items.weapon.sedna.mags; + +import com.hbm.items.weapon.sedna.BulletConfig; + +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; + +/** Uses individual bullets which are loaded one by one */ +public class MagazineSingleReload extends MagazineSingleTypeBase { + + public MagazineSingleReload(int index, int capacity) { + super(index, capacity); + } + + /** Returns true if the player has the same ammo if partially loaded, or any valid ammo if not */ + @Override + public boolean canReload(ItemStack stack, IInventory inventory) { + + if(this.getAmount(stack, inventory) >= this.getCapacity(stack)) return false; + + if(inventory == null) return true; + + for(int i = 0; i < inventory.getSizeInventory(); i++) { + ItemStack slot = inventory.getStackInSlot(i); + + if(slot != null) { + if(this.getAmount(stack, inventory) == 0) { + for(BulletConfig config : this.acceptedBullets) { + if(config.ammo.matchesRecipe(slot, true)) return true; + } + } else { + BulletConfig config = this.getType(stack, inventory); + if(config == null) { config = this.acceptedBullets.get(0); this.setType(stack, config); } + if(config.ammo.matchesRecipe(slot, true)) return true; + } + } + } + + return false; + } + + /** Reloads all rounds at once. If the mag is empty, the mag's type will change to the first valid ammo type */ + @Override + public void reloadAction(ItemStack stack, IInventory inventory) { + + if(inventory == null) { + BulletConfig config = this.getType(stack, inventory); + if(config == null) { config = this.acceptedBullets.get(0); this.setType(stack, config); } //fixing broken NBT + this.setAmount(stack, this.getAmount(stack, inventory) + 1); + return; + } + + for(int i = 0; i < inventory.getSizeInventory(); i++) { + ItemStack slot = inventory.getStackInSlot(i); + + if(slot != null) { + + //mag is empty, assume next best type + if(this.getAmount(stack, inventory) == 0) { + + for(BulletConfig config : this.acceptedBullets) { + if(config.ammo.matchesRecipe(slot, true)) { + this.setType(stack, config); + this.setAmount(stack, 1); + inventory.decrStackSize(i, 1); + return; + } + } + //mag has a type set, only load that + } else { + BulletConfig config = this.getType(stack, inventory); + if(config == null) { config = this.acceptedBullets.get(0); this.setType(stack, config); } //fixing broken NBT + + if(config.ammo.matchesRecipe(slot, true)) { + int alreadyLoaded = this.getAmount(stack, inventory); + this.setAmount(stack, alreadyLoaded + 1); + inventory.decrStackSize(i, 1); + return; + } + } + } + } + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineSingleTypeBase.java b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineSingleTypeBase.java new file mode 100644 index 000000000..343d45b1a --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineSingleTypeBase.java @@ -0,0 +1,92 @@ +package com.hbm.items.weapon.sedna.mags; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.particle.SpentCasing; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; + +/** Base class for typical magazines, i.e. ones that hold bullets, shells, grenades, etc, any ammo item. Stores a single type of BulletConfigs */ +public abstract class MagazineSingleTypeBase implements IMagazine { + + public static final String KEY_MAG_COUNT = "magcount"; + public static final String KEY_MAG_TYPE = "magtype"; + public static final String KEY_MAG_PREV = "magprev"; + public static final String KEY_MAG_AFTER = "magafter"; + + protected List acceptedBullets = new ArrayList(); + + /** A number so the gun tell multiple mags apart */ + public int index; + /** How much ammo this mag can hold */ + public int capacity; + + public MagazineSingleTypeBase(int index, int capacity) { + this.index = index; + this.capacity = capacity; + } + + public MagazineSingleTypeBase addConfigs(BulletConfig... cfgs) { for(BulletConfig cfg : cfgs) acceptedBullets.add(cfg); return this; } + + @Override + public BulletConfig getType(ItemStack stack, IInventory inventory) { + int type = getMagType(stack, index); + if(type >= 0 && type < BulletConfig.configs.size()) { + BulletConfig cfg = BulletConfig.configs.get(type); + if(acceptedBullets.contains(cfg)) return cfg; + return acceptedBullets.get(0); + } + return null; + } + + @Override + public void setType(ItemStack stack, BulletConfig type) { + int i = BulletConfig.configs.indexOf(type); + if(i >= 0) setMagType(stack, index, i); + } + + @Override + public ItemStack getIconForHUD(ItemStack stack, EntityPlayer player) { + BulletConfig config = this.getType(stack, player.inventory); + if(config != null) return config.ammo.toStack(); + return null; + } + + @Override + public String reportAmmoStateForHUD(ItemStack stack, EntityPlayer player) { + return getAmount(stack, player.inventory) + " / " + getCapacity(stack); + } + + @Override + public SpentCasing getCasing(ItemStack stack, IInventory inventory) { + return this.getType(stack, inventory).casing; + } + + @Override + public void useUpAmmo(ItemStack stack, IInventory inventory, int amount) { + this.setAmount(stack, this.getAmount(stack, inventory) - amount); + IMagazine.handleAmmoBag(inventory, this.getType(stack, inventory), amount); + } + + @Override public int getCapacity(ItemStack stack) { return capacity; } + @Override public int getAmount(ItemStack stack, IInventory inventory) { return getMagCount(stack, index); } + @Override public void setAmount(ItemStack stack, int amount) { setMagCount(stack, index, amount); } + + @Override public void setAmountBeforeReload(ItemStack stack, int amount) { ItemGunBaseNT.setValueInt(stack, KEY_MAG_PREV + index, amount); } + @Override public int getAmountBeforeReload(ItemStack stack) { return ItemGunBaseNT.getValueInt(stack, KEY_MAG_PREV + index); } + @Override public void setAmountAfterReload(ItemStack stack, int amount) { ItemGunBaseNT.setValueInt(stack, KEY_MAG_AFTER + index, amount); } + @Override public int getAmountAfterReload(ItemStack stack) { return ItemGunBaseNT.getValueInt(stack, KEY_MAG_AFTER + index); } + + // MAG TYPE // + public static int getMagType(ItemStack stack, int index) { return ItemGunBaseNT.getValueInt(stack, KEY_MAG_TYPE + index); } //TODO: replace with named tags to avoid ID shifting + public static void setMagType(ItemStack stack, int index, int value) { ItemGunBaseNT.setValueInt(stack, KEY_MAG_TYPE + index, value); } + + // MAG COUNT // + public static int getMagCount(ItemStack stack, int index) { return ItemGunBaseNT.getValueInt(stack, KEY_MAG_COUNT + index); } + public static void setMagCount(ItemStack stack, int index, int value) { ItemGunBaseNT.setValueInt(stack, KEY_MAG_COUNT + index, value); } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/package-info.java b/src/main/java/com/hbm/items/weapon/sedna/package-info.java new file mode 100644 index 000000000..a23713eca --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/package-info.java @@ -0,0 +1,24 @@ +/** + * + */ +/** + * @author hbm + * + */ +package com.hbm.items.weapon.sedna; + +/* + +The MK2 unified gun system SEDNA + +ItemGunBase - NBT, timer, keybind handling + | GunConfig (1) - durability and sights + | Receiver (n) - base damage, fire modes + | Magazine (1) - NBT, reload management + | BulletConfig (n) - ammo stats + +Based on this system, alt fire that should logically use the same receiver actually use two different receivers, and +by extension two different mag fields. In this case, make sure to use the same mag instance (or an identical one) +on either receiver to ensure that both receivers access the same ammo pool and accept the same ammo types. + +*/ \ No newline at end of file diff --git a/src/main/java/com/hbm/lib/HbmChestContents.java b/src/main/java/com/hbm/lib/HbmChestContents.java index 7c3c1f9f6..157ff80ea 100644 --- a/src/main/java/com/hbm/lib/HbmChestContents.java +++ b/src/main/java/com/hbm/lib/HbmChestContents.java @@ -1,20 +1,19 @@ package com.hbm.lib; -import java.util.Random; - import com.hbm.items.special.ItemBookLore; - import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.WeightedRandomChestContent; +import java.util.Random; + public class HbmChestContents { public static WeightedRandomChestContent weighted(Item item, int meta, int min, int max, int weight) { return new WeightedRandomChestContent(item, meta, Math.min(min, max), Math.max(min, max), weight); } public static WeightedRandomChestContent weighted(Block block, int meta, int min, int max, int weight) { return new WeightedRandomChestContent(Item.getItemFromBlock(block), meta, Math.min(min, max), Math.max(min, max), weight); } public static WeightedRandomChestContent weighted(ItemStack item, int min, int max, int weight) { return new WeightedRandomChestContent(item, Math.min(min, max), Math.max(min, max), weight); } - + /** ITEMBOOKLORE SHIT */ //one downside of all this huge flexibility, make a wrapper if it's too annoying public static ItemStack generateOfficeBook(Random rand) { //TODO rework this lore in general @@ -28,14 +27,14 @@ public class HbmChestContents { case 4: key = "memo_schrab_nuke"; pages = 3; break; default: return null; } - + return ItemBookLore.createBook(key, pages, 0x6BC8FF, 0x0A0A0A); } - + public static ItemStack generateLabBook(Random rand) { String key; int pages; - + switch(rand.nextInt(5)) { case 0: key = "bf_bomb_1"; pages = 4; break; case 1: key = "bf_bomb_2"; pages = 6; break; @@ -44,7 +43,7 @@ public class HbmChestContents { case 4: key = "bf_bomb_5"; pages = 9; break; default: return null; } - + return ItemBookLore.createBook(key, pages, 0x1E1E1E, 0x46EA44); } } diff --git a/src/main/java/com/hbm/lib/HbmCollection.java b/src/main/java/com/hbm/lib/HbmCollection.java index 6c2e7df23..577e990a8 100644 --- a/src/main/java/com/hbm/lib/HbmCollection.java +++ b/src/main/java/com/hbm/lib/HbmCollection.java @@ -1,79 +1,7 @@ package com.hbm.lib; -import java.util.List; -import java.util.Set; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.items.weapon.ItemAmmo.AmmoItemTrait; - public class HbmCollection { - - public static final Set APType = ImmutableSet.of(AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.CON_WEAR); - public static final Set FlechetteType = ImmutableSet.of(AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.NEU_LESS_BOUNCY, AmmoItemTrait.CON_WEAR); - public static final Set IncendiaryType = ImmutableSet.of(AmmoItemTrait.PRO_INCENDIARY, AmmoItemTrait.CON_WEAR); - public static final Set PhosphorusType = ImmutableSet.of(AmmoItemTrait.PRO_PHOSPHORUS, AmmoItemTrait.NEU_WARCRIME1, AmmoItemTrait.CON_WEAR, AmmoItemTrait.CON_PENETRATION); - public static final Set PhosphorusTypeSpecial = ImmutableSet.of(AmmoItemTrait.PRO_PHOSPHORUS_SPLASH, AmmoItemTrait.NEU_WARCRIME1, AmmoItemTrait.CON_WEAR); - public static final Set ExplosiveType = ImmutableSet.of(AmmoItemTrait.PRO_EXPLOSIVE, AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.CON_HEAVY_WEAR); - public static final Set DUType = ImmutableSet.of(AmmoItemTrait.PRO_HEAVY_DAMAGE, AmmoItemTrait.NEU_HEAVY_METAL, AmmoItemTrait.CON_HEAVY_WEAR); - public static final Set StarmetalType = ImmutableSet.of(AmmoItemTrait.PRO_HEAVY_DAMAGE, AmmoItemTrait.NEU_STARMETAL, AmmoItemTrait.CON_HEAVY_WEAR); - public static final Set ChlorophyteType = ImmutableSet.of(AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.PRO_WEAR, AmmoItemTrait.PRO_PENETRATION, AmmoItemTrait.NEU_CHLOROPHYTE, AmmoItemTrait.NEU_HOMING, AmmoItemTrait.CON_SPEED); - - /// BULLET COLLECTIONS - // SHOTGUNS - /** 12 GAUGE **/ - public static final List g12 = ImmutableList.of(BulletConfigSyncingUtil.G12_NORMAL, BulletConfigSyncingUtil.G12_INCENDIARY, BulletConfigSyncingUtil.G12_SHRAPNEL, BulletConfigSyncingUtil.G12_DU, BulletConfigSyncingUtil.G12_AM, BulletConfigSyncingUtil.G12_SLEEK, BulletConfigSyncingUtil.G12_PERCUSSION); - public static final List g12hs = ImmutableList.of(BulletConfigSyncingUtil.G12HS_NORMAL, BulletConfigSyncingUtil.G12HS_INCENDIARY, BulletConfigSyncingUtil.G12HS_SHRAPNEL, BulletConfigSyncingUtil.G12HS_DU, BulletConfigSyncingUtil.G12HS_AM, BulletConfigSyncingUtil.G12HS_SLEEK, BulletConfigSyncingUtil.G12HS_PERCUSSION); - /** 20 GAUGE **/ - public static final List g20 = ImmutableList.of(BulletConfigSyncingUtil.G20_NORMAL, BulletConfigSyncingUtil.G20_SLUG, BulletConfigSyncingUtil.G20_FLECHETTE, BulletConfigSyncingUtil.G20_FIRE, BulletConfigSyncingUtil.G20_SHRAPNEL, BulletConfigSyncingUtil.G20_EXPLOSIVE, BulletConfigSyncingUtil.G20_CAUSTIC, BulletConfigSyncingUtil.G20_SHOCK, BulletConfigSyncingUtil.G20_WITHER, BulletConfigSyncingUtil.G20_SLEEK); - /** 4 GAUGE **/ - public static final List g4 = ImmutableList.of(BulletConfigSyncingUtil.G4_NORMAL, BulletConfigSyncingUtil.G4_SLUG, BulletConfigSyncingUtil.G4_FLECHETTE, BulletConfigSyncingUtil.G4_FLECHETTE_PHOSPHORUS, BulletConfigSyncingUtil.G4_EXPLOSIVE, BulletConfigSyncingUtil.G4_SEMTEX, BulletConfigSyncingUtil.G4_BALEFIRE, BulletConfigSyncingUtil.G4_KAMPF, BulletConfigSyncingUtil.G4_CANISTER, BulletConfigSyncingUtil.G4_CLAW, BulletConfigSyncingUtil.G4_VAMPIRE, BulletConfigSyncingUtil.G4_VOID, BulletConfigSyncingUtil.G4_TITAN, BulletConfigSyncingUtil.G4_SLEEK); - // PISTOL CALIBER - /** .22 LONG RIFLE **/ - public static final List lr22 = ImmutableList.of(BulletConfigSyncingUtil.LR22_NORMAL, BulletConfigSyncingUtil.LR22_AP, BulletConfigSyncingUtil.CHL_LR22); - public static final List lr22Inc = ImmutableList.of(BulletConfigSyncingUtil.LR22_NORMAL_FIRE, BulletConfigSyncingUtil.LR22_AP_FIRE, BulletConfigSyncingUtil.CHL_LR22_FIRE); - /** .44 MAGNUM (BASIC) **/ - public static final List m44Normal = ImmutableList.of(BulletConfigSyncingUtil.M44_NORMAL, BulletConfigSyncingUtil.M44_AP, BulletConfigSyncingUtil.M44_DU, BulletConfigSyncingUtil.M44_PHOSPHORUS, BulletConfigSyncingUtil.M44_STAR, BulletConfigSyncingUtil.CHL_M44, BulletConfigSyncingUtil.M44_ROCKET); - /** .44 MAGNUM (ALL) **/ - public static final List m44All = ImmutableList.of(BulletConfigSyncingUtil.M44_NORMAL, BulletConfigSyncingUtil.M44_AP, BulletConfigSyncingUtil.M44_DU, BulletConfigSyncingUtil.M44_PHOSPHORUS, BulletConfigSyncingUtil.M44_STAR, BulletConfigSyncingUtil.CHL_M44, BulletConfigSyncingUtil.M44_ROCKET, BulletConfigSyncingUtil.M44_PIP, BulletConfigSyncingUtil.M44_BJ, BulletConfigSyncingUtil.M44_SILVER); - /** .50 ACTION EXPRESS **/ - public static final List ae50 = ImmutableList.of(BulletConfigSyncingUtil.AE50_NORMAL, BulletConfigSyncingUtil.AE50_AP, BulletConfigSyncingUtil.AE50_DU, BulletConfigSyncingUtil.AE50_STAR, BulletConfigSyncingUtil.CHL_AE50); - /** 9MM Parabellum **/ - public static final List p9 = ImmutableList.of(BulletConfigSyncingUtil.P9_NORMAL, BulletConfigSyncingUtil.P9_AP, BulletConfigSyncingUtil.P9_DU, BulletConfigSyncingUtil.CHL_P9, BulletConfigSyncingUtil.P9_ROCKET); - /** .45 AUTOMATIC COLT PISTOL **/ - public static final List acp45 = ImmutableList.of(BulletConfigSyncingUtil.ACP_45, BulletConfigSyncingUtil.ACP_45_AP, BulletConfigSyncingUtil.ACP_45_DU); - // RIFLE CALIBER - /** .50 BROWNING MACHINE GUN **/ - public static final List bmg50 = ImmutableList.of(BulletConfigSyncingUtil.BMG50_NORMAL, BulletConfigSyncingUtil.BMG50_INCENDIARY, BulletConfigSyncingUtil.BMG50_PHOSPHORUS, BulletConfigSyncingUtil.BMG50_EXPLOSIVE, BulletConfigSyncingUtil.BMG50_AP, BulletConfigSyncingUtil.BMG50_DU, BulletConfigSyncingUtil.BMG50_STAR, BulletConfigSyncingUtil.CHL_BMG50, BulletConfigSyncingUtil.BMG50_SLEEK); - /** .50 BROWNING MACHINE GUN (FLECHETTE) **/ - public static final List bmg50Flechette = ImmutableList.of(BulletConfigSyncingUtil.BMG50_FLECHETTE_AM, BulletConfigSyncingUtil.BMG50_FLECHETTE_NORMAL, BulletConfigSyncingUtil.BMG50_FLECHETTE_PO); - /** 5.56MMx45 NATO (BASIC) **/ - public static final List r556 = ImmutableList.of(BulletConfigSyncingUtil.R556_NORMAL, BulletConfigSyncingUtil.R556_TRACER, BulletConfigSyncingUtil.R556_PHOSPHORUS, BulletConfigSyncingUtil.R556_AP, BulletConfigSyncingUtil.R556_DU, BulletConfigSyncingUtil.R556_STAR, BulletConfigSyncingUtil.CHL_R556, BulletConfigSyncingUtil.R556_SLEEK, BulletConfigSyncingUtil.R556_K, BulletConfigSyncingUtil.R556_GOLD); - /** 5.56MMx45 NATO (FLECHETTE) **/ - public static final List r556Flechette = ImmutableList.of(BulletConfigSyncingUtil.R556_FLECHETTE, BulletConfigSyncingUtil.R556_FLECHETTE_INCENDIARY, BulletConfigSyncingUtil.R556_FLECHETTE_PHOSPHORUS, BulletConfigSyncingUtil.R556_FLECHETTE_DU, BulletConfigSyncingUtil.CHL_R556_FLECHETTE, BulletConfigSyncingUtil.R556_FLECHETTE_SLEEK, BulletConfigSyncingUtil.R556_K); - /** 7.62x51mm NATO **/ - public static final List r762 = ImmutableList.of(BulletConfigSyncingUtil.R762_NORMAL, BulletConfigSyncingUtil.R762_PHOSPHORUS, BulletConfigSyncingUtil.R762_AP, BulletConfigSyncingUtil.R762_DU, BulletConfigSyncingUtil.R762_TRACER, BulletConfigSyncingUtil.R762_K); - /** 5MM **/ - public static final List r5 = ImmutableList.of(BulletConfigSyncingUtil.R5_NORMAL, BulletConfigSyncingUtil.R5_EXPLOSIVE, BulletConfigSyncingUtil.R5_DU, BulletConfigSyncingUtil.R5_STAR, BulletConfigSyncingUtil.CHL_R5); - /** 5MM LACUNAE **/ - public static final List r5Bolt = ImmutableList.of(BulletConfigSyncingUtil.R5_NORMAL_BOLT, BulletConfigSyncingUtil.R5_EXPLOSIVE_BOLT, BulletConfigSyncingUtil.R5_DU_BOLT, BulletConfigSyncingUtil.R5_STAR_BOLT, BulletConfigSyncingUtil.CHL_R5_BOLT); - // MISC - /** .75 **/ - public static final List b75 = ImmutableList.of(BulletConfigSyncingUtil.B75_NORMAL, BulletConfigSyncingUtil.B75_INCENDIARY, BulletConfigSyncingUtil.B75_HE); - /** 240MM SHELL **/ - public static final List cannon = ImmutableList.of(BulletConfigSyncingUtil.SHELL_NORMAL, BulletConfigSyncingUtil.SHELL_EXPLOSIVE, BulletConfigSyncingUtil.SHELL_AP, BulletConfigSyncingUtil.SHELL_DU, BulletConfigSyncingUtil.SHELL_W9); - /** FLAMETHROWER FUEL **/ - public static final List flamer = ImmutableList.of(BulletConfigSyncingUtil.FLAMER_NORMAL, BulletConfigSyncingUtil.FLAMER_NAPALM, BulletConfigSyncingUtil.FLAMER_WP, BulletConfigSyncingUtil.FLAMER_VAPORIZER, BulletConfigSyncingUtil.FLAMER_GAS); - /** MINI-NUKES **/ - public static final List fatman = ImmutableList.of(BulletConfigSyncingUtil.NUKE_NORMAL, BulletConfigSyncingUtil.NUKE_LOW, BulletConfigSyncingUtil.NUKE_HIGH, BulletConfigSyncingUtil.NUKE_TOTS, BulletConfigSyncingUtil.NUKE_SAFE, BulletConfigSyncingUtil.NUKE_PUMPKIN, BulletConfigSyncingUtil.NUKE_BARREL); - /** 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, 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); - + /// FREQUENTLY USED TRANSLATION KEYS // GUN MANUFACTURERS public static enum EnumGunManufacturer { @@ -171,12 +99,12 @@ public class HbmCollection { WINCHESTER, /**Winchester Repeating Arms Company / Big MT**/ WINCHESTER_BIGMT; - + public String getKey() { return "gun.make." + toString(); } } - + // GUN DETAILS public static final String ammo = "desc.item.gun.ammo"; public static final String ammoMag = "desc.item.gun.ammoMag"; diff --git a/src/main/java/com/hbm/lib/HbmWorld.java b/src/main/java/com/hbm/lib/HbmWorld.java index 3c6b89701..3cd40d0ba 100644 --- a/src/main/java/com/hbm/lib/HbmWorld.java +++ b/src/main/java/com/hbm/lib/HbmWorld.java @@ -2,26 +2,21 @@ package com.hbm.lib; import com.hbm.world.gen.MapGenNTMFeatures; import com.hbm.world.gen.NTMWorldGenerator; -import com.hbm.world.gen.component.BunkerComponents; +import com.hbm.world.gen.component.*; import com.hbm.world.gen.component.BunkerComponents.BunkerStart; -import com.hbm.world.gen.component.CivilianFeatures; -import com.hbm.world.gen.component.OfficeFeatures; -import com.hbm.world.gen.component.RuinFeatures; -import com.hbm.world.gen.component.SiloComponent; - import cpw.mods.fml.common.IWorldGenerator; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.world.gen.structure.MapGenStructureIO; import net.minecraftforge.common.MinecraftForge; public class HbmWorld { - + public static void mainRegistry() { initWorldGen(); } - + public static NTMWorldGenerator worldGenerator; - + public static void initWorldGen() { //MapGenStructureIO.registerStructure(StructureStartTest.class, "HFR_STRUCTURE"); @@ -29,19 +24,19 @@ public class HbmWorld { MapGenStructureIO.registerStructure(MapGenNTMFeatures.Start.class, "NTMFeatures"); MapGenStructureIO.registerStructure(BunkerStart.class, "NTMBunker"); registerNTMFeatures(); - + registerWorldGen(new HbmWorldGen(), 1); - + worldGenerator = new NTMWorldGenerator(); registerWorldGen(worldGenerator, 1); //Ideally, move everything over from HbmWorldGen to NTMWorldGenerator MinecraftForge.EVENT_BUS.register(worldGenerator); //registerWorldGen(new WorldGenTest(), 1); } - + public static void registerWorldGen(IWorldGenerator nukerWorldGen, int weightedProbability) { GameRegistry.registerWorldGenerator(nukerWorldGen, weightedProbability); } - + /** Register structures in MapGenStructureIO */ public static void registerNTMFeatures() { CivilianFeatures.registerComponents(); diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index e17c1b0fd..d3ed3f571 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -1,10 +1,7 @@ package com.hbm.lib; -import java.util.Random; - import com.hbm.blocks.BlockEnums.EnumStoneType; import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.generic.BlockMotherOfAllOres; import com.hbm.blocks.generic.BlockNTMFlower.EnumFlowerType; import com.hbm.config.GeneralConfig; import com.hbm.config.MobConfig; @@ -22,21 +19,11 @@ import com.hbm.tileentity.machine.storage.TileEntitySoyuzCapsule; import com.hbm.util.LootGenerator; import com.hbm.util.WeightedRandomGeneric; import com.hbm.world.dungeon.*; -import com.hbm.world.feature.BedrockOre; +import com.hbm.world.feature.*; import com.hbm.world.feature.BedrockOre.BedrockOreDefinition; -import com.hbm.world.feature.DepthDeposit; -import com.hbm.world.feature.Dud; -import com.hbm.world.feature.Geyser; -import com.hbm.world.feature.GeyserLarge; -import com.hbm.world.feature.GlyphidHive; -import com.hbm.world.feature.Meteorite; -import com.hbm.world.feature.OilBubble; -import com.hbm.world.feature.OilSandBubble; -import com.hbm.world.feature.OilSpot; -import com.hbm.world.feature.Sellafield; import com.hbm.world.generator.CellularDungeonFactory; import com.hbm.world.generator.DungeonToolbox; - +import cpw.mods.fml.common.IWorldGenerator; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; @@ -45,15 +32,12 @@ import net.minecraft.tileentity.TileEntitySkull; import net.minecraft.util.WeightedRandom; import net.minecraft.util.WeightedRandomChestContent; import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.BiomeGenBeach; -import net.minecraft.world.biome.BiomeGenForest; -import net.minecraft.world.biome.BiomeGenJungle; -import net.minecraft.world.biome.BiomeGenRiver; +import net.minecraft.world.biome.*; 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; + +import java.util.Random; public class HbmWorldGen implements IWorldGenerator { @@ -71,13 +55,13 @@ public class HbmWorldGen implements IWorldGenerator { generateSurface(world, rand, chunkX * 16, chunkZ * 16); break; } } - + private void generateSurface(World world, Random rand, int i, int j) { BiomeGenBase biome = world.getWorldChunkManager().getBiomeGenAt(i, j); if(!TomSaveData.forWorld(world).impact) { - + if(biome instanceof BiomeGenForest && rand.nextInt(16) == 0) { DungeonToolbox.generateFlowers(world, rand, i, j, ModBlocks.plant_flower, EnumFlowerType.FOXGLOVE.ordinal()); } @@ -97,9 +81,6 @@ public class HbmWorldGen implements IWorldGenerator { DungeonToolbox.generateFlowers(world, rand, i, j, ModBlocks.reeds, 0); } } - - if(WorldConfig.oilcoalSpawn > 0 && rand.nextInt(WorldConfig.oilcoalSpawn) == 0) - DungeonToolbox.generateOre(world, rand, i, j, 1, 64, 32, 32, ModBlocks.ore_coal_oil); if(WorldConfig.gasbubbleSpawn > 0 && rand.nextInt(WorldConfig.gasbubbleSpawn) == 0) DungeonToolbox.generateOre(world, rand, i, j, 1, 32, 30, 10, ModBlocks.gas_flammable, 1); @@ -118,7 +99,7 @@ public class HbmWorldGen implements IWorldGenerator { DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.8D, ModBlocks.ore_depth_cinnebar, rand, 16); DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.8D, ModBlocks.ore_depth_zirconium, rand, 16); DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.8D, ModBlocks.ore_depth_borax, rand, 16); - + DungeonToolbox.generateOre(world, rand, i, j, 25, 6, 30, 10, ModBlocks.ore_gneiss_iron, ModBlocks.stone_gneiss); DungeonToolbox.generateOre(world, rand, i, j, 10, 6, 30, 10, ModBlocks.ore_gneiss_gold, ModBlocks.stone_gneiss); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.uraniumSpawn * 3, 6, 30, 10, ModBlocks.ore_gneiss_uranium, ModBlocks.stone_gneiss); @@ -127,7 +108,7 @@ public class HbmWorldGen implements IWorldGenerator { DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.lithiumSpawn, 6, 30, 10, ModBlocks.ore_gneiss_lithium, ModBlocks.stone_gneiss); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.rareSpawn, 6, 30, 10, ModBlocks.ore_gneiss_rare, ModBlocks.stone_gneiss); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.gassshaleSpawn * 3, 10, 30, 10, ModBlocks.ore_gneiss_gas, ModBlocks.stone_gneiss); - + DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.uraniumSpawn, 5, 5, 20, ModBlocks.ore_uranium); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.thoriumSpawn, 5, 5, 25, ModBlocks.ore_thorium); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.titaniumSpawn, 6, 5, 30, ModBlocks.ore_titanium); @@ -144,21 +125,20 @@ public class HbmWorldGen implements IWorldGenerator { DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.asbestosSpawn, 4, 16, 16, ModBlocks.ore_asbestos); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.cinnebarSpawn, 4, 8, 16, ModBlocks.ore_cinnebar); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.cobaltSpawn, 4, 4, 8, ModBlocks.ore_cobalt); - + DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.ironClusterSpawn, 6, 15, 45, ModBlocks.cluster_iron); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.titaniumClusterSpawn, 6, 15, 30, ModBlocks.cluster_titanium); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.aluminiumClusterSpawn, 6, 15, 35, ModBlocks.cluster_aluminium); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.copperClusterSpawn, 6, 15, 20, ModBlocks.cluster_copper); - DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.malachiteSpawn, 16, 6, 40, ModBlocks.stone_resource, EnumStoneType.MALACHITE.ordinal()); - DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.limestoneSpawn, 12, 25, 30, ModBlocks.stone_resource, EnumStoneType.LIMESTONE.ordinal()); + DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.limestoneSpawn, 16, 25, 30, ModBlocks.stone_resource, EnumStoneType.LIMESTONE.ordinal()); if(WorldConfig.newBedrockOres) { if(rand.nextInt(10) == 0) { int randPosX = i + rand.nextInt(2) + 8; int randPosZ = j + rand.nextInt(2) + 8; - + BedrockOre.generate(world, randPosX, randPosZ, new ItemStack(ModItems.bedrock_ore_base), null, 0xD78A16, 1); } @@ -180,12 +160,6 @@ public class HbmWorldGen implements IWorldGenerator { } } - for(int k = 0; k < WorldConfig.randomSpawn; k++) { - BlockMotherOfAllOres.shuffleOverride(rand); - DungeonToolbox.generateOre(world, rand, i, j, 1, 10, 4, 30, ModBlocks.ore_random); - } - BlockMotherOfAllOres.resetOverride(); - if(GeneralConfig.enable528ColtanSpawn) { DungeonToolbox.generateOre(world, rand, i, j, GeneralConfig.coltanRate, 4, 15, 40, ModBlocks.ore_coltan); } @@ -194,16 +168,16 @@ public class HbmWorldGen implements IWorldGenerator { int colX = (int) (colRand.nextGaussian() * 1500); int colZ = (int) (colRand.nextGaussian() * 1500); int colRange = 750; - + if((GeneralConfig.enable528BedrockSpawn || GeneralConfig.enable528BedrockDeposit) && rand.nextInt(GeneralConfig.bedrockRate) != 0) { int x = i + rand.nextInt(16) + 8; int z = j + rand.nextInt(16) + 8; - + if(GeneralConfig.enable528BedrockSpawn || (GeneralConfig.enable528BedrockDeposit && x <= colX + colRange && x >= colX - colRange && z <= colZ + colRange && z >= colZ - colRange)) { BedrockOre.generate(world, x, z, new ItemStack(ModItems.fragment_coltan), null, 0xA78D7A, 1); } } - + if(GeneralConfig.enable528ColtanDeposit) { for(int k = 0; k < 2; k++) { @@ -230,18 +204,18 @@ public class HbmWorldGen implements IWorldGenerator { (new WorldGenMinable(ModBlocks.ore_australium, 50)).generate(world, rand, randPosX, randPosY, randPosZ); } } - + boolean enableDungeons = world.getWorldInfo().isMapFeaturesEnabled(); if(GeneralConfig.enableDungeons == 1) enableDungeons = true; if(GeneralConfig.enableDungeons == 0) enableDungeons = false; - + if(enableDungeons && world.provider.dimensionId == 0) { - + if(MobConfig.enableHives && rand.nextInt(MobConfig.hiveSpawn) == 0) { int x = i + rand.nextInt(16) + 8; int z = j + rand.nextInt(16) + 8; int y = world.getHeightValue(x, z); - + for(int k = 3; k >= -1; k--) { if(world.getBlock(x, y - 1 + k, z).isNormalCube()) { GlyphidHive.generateSmall(world, x, y + k, z, rand, rand.nextInt(10) == 0, true); @@ -393,7 +367,7 @@ public class HbmWorldGen implements IWorldGenerator { if(world.getBlock(x, y - 1, z).canPlaceTorchOnTop(world, x, y - 1, z)) { world.setBlock(x, y, z, ModBlocks.broadcaster_pc, rand.nextInt(4) + 2, 2); - + if(GeneralConfig.enableDebugMode) MainRegistry.logger.info("[Debug] Successfully spawned corrupted broadcaster at " + x + " " + (y) +" " + z); } @@ -404,13 +378,15 @@ public class HbmWorldGen implements IWorldGenerator { int z = j + rand.nextInt(16) + 8; int y = world.getHeightValue(x, z); - if(world.getBlock(x, y - 1, z).canPlaceTorchOnTop(world, x, y - 1, z)) { - world.setBlock(x, y, z, ModBlocks.mine_ap); - TileEntityLandmine landmine = (TileEntityLandmine) world.getTileEntity(x, y, z); - landmine.waitingForPlayer = true; + for(int g = y + 2; g >= y; g--) { - if(GeneralConfig.enableDebugMode) - MainRegistry.logger.info("[Debug] Successfully spawned landmine at " + x + " " + (y) + " " + z); + if(world.getBlock(x, g - 1, z).canPlaceTorchOnTop(world, x, g - 1, z)) { + world.setBlock(x, g, z, ModBlocks.mine_ap); + TileEntityLandmine landmine = (TileEntityLandmine) world.getTileEntity(x, g, z); + landmine.waitingForPlayer = true; + if(GeneralConfig.enableDebugMode) MainRegistry.logger.info("[Debug] Successfully spawned landmine at " + x + " " + g + " " + z); + break; + } } } @@ -420,13 +396,13 @@ public class HbmWorldGen implements IWorldGenerator { 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); @@ -449,13 +425,13 @@ public class HbmWorldGen implements IWorldGenerator { } if(WorldConfig.radfreq > 0 && GeneralConfig.enableRad && rand.nextInt(WorldConfig.radfreq) == 0 && biome == BiomeGenBase.desert) { - + for (int a = 0; a < 1; a++) { int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); - + double r = rand.nextInt(15) + 10; - + if(rand.nextInt(50) == 0) r = 50; @@ -470,7 +446,7 @@ public class HbmWorldGen implements IWorldGenerator { 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) == Blocks.grass) new Geyser().generate(world, rand, x, y, z); } @@ -488,17 +464,17 @@ public class HbmWorldGen implements IWorldGenerator { int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); int y = world.getHeightValue(x, z) - 4; - + if(world.getBlock(x, y + 1, z).canPlaceTorchOnTop(world, x, y + 1, z)) { - + world.setBlock(x, y, z, ModBlocks.soyuz_capsule, 3, 2); - + TileEntitySoyuzCapsule cap = (TileEntitySoyuzCapsule)world.getTileEntity(x, y, z); - + if(cap != null) { cap.setInventorySlotContents(rand.nextInt(cap.getSizeInventory()), new ItemStack(ModItems.record_glass)); } - + if(GeneralConfig.enableDebugMode) MainRegistry.logger.info("[Debug] Successfully spawned capsule at " + x + " " + z); } @@ -518,9 +494,9 @@ public class HbmWorldGen implements IWorldGenerator { if (rand.nextInt(1000) == 0) { int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); - + boolean done = false; - + for(int k = 0; k < 256; k++) { if(world.getBlock(x, k, z) == Blocks.log && world.getBlockMetadata(x, k, z) == 0) { world.setBlock(x, k, z, ModBlocks.pink_log); @@ -540,7 +516,7 @@ public class HbmWorldGen implements IWorldGenerator { if(world.getBlock(x, y - 1, z).canPlaceTorchOnTop(world, x, y - 1, z)) { world.setBlock(x, y, z, ModBlocks.safe, rand.nextInt(4) + 2, 2); TileEntitySafe safe = (TileEntitySafe) world.getTileEntity(x, y, z); - + switch(rand.nextInt(10)) { case 0: case 1: case 2: case 3: safe.setMod(1); @@ -562,38 +538,38 @@ public class HbmWorldGen implements IWorldGenerator { safe.setPins(rand.nextInt(999) + 1); safe.lock(); - + if(GeneralConfig.enableDebugMode) MainRegistry.logger.info("[Debug] Successfully spawned safe at " + x + " " + (y + 1) +" " + z); } - + } if (WorldConfig.meteorStructure > 0 && rand.nextInt(WorldConfig.meteorStructure) == 0 && biome != BiomeGenBase.ocean && biome != BiomeGenBase.deepOcean) { int x = i + rand.nextInt(16) + 8; int z = j + rand.nextInt(16) + 8; - + CellularDungeonFactory.meteor.generate(world, x, 10, z, rand); - + if(GeneralConfig.enableDebugMode) MainRegistry.logger.info("[Debug] Successfully spawned meteor dungeon at " + x + " 10 " + z); - + int y = world.getHeightValue(x, z); - + for(int f = 0; f < 3; f++) world.setBlock(x, y + f, z, ModBlocks.meteor_pillar); world.setBlock(x, y + 3, z, ModBlocks.meteor_brick_chiseled); - + for(int f = 0; f < 10; f++) { x = i + rand.nextInt(65) - 32; z = j + rand.nextInt(65) - 32; y = world.getHeightValue(x, z); - + if(world.getBlock(x, y - 1, z).canPlaceTorchOnTop(world, x, y - 1, z)) { world.setBlock(x, y, z, Blocks.skull, 1, 2); TileEntitySkull skull = (TileEntitySkull)world.getTileEntity(x, y, z); - + if(skull != null) skull.func_145903_a(rand.nextInt(16)); } @@ -604,16 +580,16 @@ public class HbmWorldGen implements IWorldGenerator { WorldConfig.jungleStructure > 0 && rand.nextInt(WorldConfig.jungleStructure) == 0) { int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); - + CellularDungeonFactory.jungle.generate(world, x, 20, z, world.rand); CellularDungeonFactory.jungle.generate(world, x, 24, z, world.rand); CellularDungeonFactory.jungle.generate(world, x, 28, z, world.rand); - + if(GeneralConfig.enableDebugMode) MainRegistry.logger.info("[Debug] Successfully spawned jungle dungeon at " + x + " 10 " + z); - + int y = world.getHeightValue(x, z); - + for(int f = 0; f < 3; f++) world.setBlock(x, y + f, z, ModBlocks.deco_titanium); world.setBlock(x, y + 3, z, Blocks.redstone_block); @@ -625,12 +601,12 @@ public class HbmWorldGen implements IWorldGenerator { int y = 16 + rand.nextInt(32); new ArcticVault().trySpawn(world, x, y, z); } - + if (WorldConfig.pyramidStructure > 0 && biome.temperature >= 2.0F && !biome.canSpawnLightningBolt() && rand.nextInt(WorldConfig.pyramidStructure) == 0) { int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); int y = world.getHeightValue(x, z); - + new AncientTomb().build(world, rand, x, y, z); } } @@ -646,11 +622,11 @@ public class HbmWorldGen implements IWorldGenerator { if(WorldConfig.bedrockOilSpawn > 0 && rand.nextInt(WorldConfig.bedrockOilSpawn) == 0) { int randPosX = i + rand.nextInt(16); int randPosZ = j + rand.nextInt(16); - + for(int x = -4; x <= 4; x++) { for(int y = 0; y <= 4; y++) { for(int z = -4; z <= 4; z++) { - + if(Math.abs(x) + Math.abs(y) + Math.abs(z) <= 6) { Block b = world.getBlock(randPosX + x, y, randPosZ + z); if(b.isReplaceableOreGen(world, randPosX + x, y, randPosZ + z, Blocks.stone) || b.isReplaceableOreGen(world, randPosX + x, y, randPosZ + z, Blocks.bedrock)) { @@ -660,7 +636,7 @@ public class HbmWorldGen implements IWorldGenerator { } } } - + DungeonToolbox.generateOre(world, rand, i, j, 16, 8, 10, 50, ModBlocks.stone_porous); OilSpot.generateOilSpot(world, randPosX, randPosZ, 5, 50, true); } @@ -739,12 +715,12 @@ public class HbmWorldGen implements IWorldGenerator { } } } - + if(rand.nextInt(4) == 0) { int x = i + rand.nextInt(16) + 8; int y = 6 + rand.nextInt(13); int z = j + rand.nextInt(16) + 8; - + if(world.getBlock(x, y, z).isReplaceableOreGen(world, x, y, z, Blocks.stone)) { world.setBlock(x, y, z, ModBlocks.stone_keyhole); } @@ -761,10 +737,10 @@ public class HbmWorldGen implements IWorldGenerator { DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.netherPhosphorusSpawn, 6, 0, 127, ModBlocks.ore_nether_fire, Blocks.netherrack); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.netherCoalSpawn, 32, 16, 96, ModBlocks.ore_nether_coal, Blocks.netherrack); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.netherCobaltSpawn, 6, 100, 26, ModBlocks.ore_nether_cobalt, Blocks.netherrack); - + if(GeneralConfig.enablePlutoniumOre) DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.netherPlutoniumSpawn, 4, 0, 127, ModBlocks.ore_nether_plutonium, Blocks.netherrack); - + if(rand.nextInt(10) == 0) { @SuppressWarnings("unchecked") WeightedRandomGeneric item = (WeightedRandomGeneric) WeightedRandom.getRandomItem(rand, BedrockOre.weightedOresNether); @@ -800,15 +776,15 @@ public class HbmWorldGen implements IWorldGenerator { } private void generateEnd(World world, Random rand, int i, int j) { - + if(WorldConfig.endOre) { DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.endTikiteSpawn, 6, 0, 127, ModBlocks.ore_tikite, Blocks.end_stone); - + /*for(int k = 0; k < 50; k++){ int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); int d = 5 + rand.nextInt(60); - + for(int y = d - 5; y <= d; y++) if(world.getBlock(x, y, z) == Blocks.air && world.getBlock(x, y + 1, z).isSideSolid(world, x, y, z, ForgeDirection.DOWN)) world.setBlock(x, y, z, ModBlocks.crystal_trixite); diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index 828433470..96a019726 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -1,21 +1,16 @@ package com.hbm.lib; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import com.hbm.blocks.ModBlocks; -import com.hbm.entity.mob.EntityHunterChopper; -import com.hbm.entity.projectile.EntityChopperMine; -import com.hbm.interfaces.Spaghetti; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.items.ModItems; - import api.hbm.energymk2.IBatteryItem; import api.hbm.energymk2.IEnergyConnectorBlock; import api.hbm.energymk2.IEnergyConnectorMK2; import api.hbm.fluid.IFluidConnector; import api.hbm.fluid.IFluidConnectorBlock; +import com.hbm.blocks.ModBlocks; +import com.hbm.entity.mob.EntityHunterChopper; +import com.hbm.entity.projectile.EntityChopperMine; +import com.hbm.interfaces.Spaghetti; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.items.ModItems; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -30,11 +25,15 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + @Spaghetti("this whole class") public class Library { - + static Random rand = new Random(); - + public static boolean checkForHeld(EntityPlayer player, Item item) { if(player.getHeldItem() == null) return false; return player.getHeldItem().getItem() == item; @@ -46,60 +45,60 @@ public class Library { public static final ForgeDirection NEG_Y = ForgeDirection.DOWN; public static final ForgeDirection POS_Z = ForgeDirection.SOUTH; public static final ForgeDirection NEG_Z = ForgeDirection.NORTH; - + /* * Is putting this into this trash can a good idea? No. Do I have a better idea? Not currently. */ public static boolean canConnect(IBlockAccess world, int x, int y, int z, ForgeDirection dir /* cable's connecting side */) { - + if(y > 255 || y < 0) return false; - + Block b = world.getBlock(x, y, z); - + if(b instanceof IEnergyConnectorBlock) { IEnergyConnectorBlock con = (IEnergyConnectorBlock) b; - + if(con.canConnect(world, x, y, z, dir.getOpposite() /* machine's connecting side */)) return true; } - + TileEntity te = world.getTileEntity(x, y, z); - + if(te instanceof IEnergyConnectorMK2) { IEnergyConnectorMK2 con = (IEnergyConnectorMK2) te; - + if(con.canConnect(dir.getOpposite() /* machine's connecting side */)) return true; } - + return false; } /** dir is the direction along the fluid duct entering the block */ public static boolean canConnectFluid(IBlockAccess world, int x, int y, int z, ForgeDirection dir /* duct's connecting side */, FluidType type) { - + if(y > 255 || y < 0) return false; - + Block b = world.getBlock(x, y, z); - + if(b instanceof IFluidConnectorBlock) { IFluidConnectorBlock con = (IFluidConnectorBlock) b; - + if(con.canConnect(type, world, x, y, z, dir.getOpposite() /* machine's connecting side */)) return true; } - + TileEntity te = world.getTileEntity(x, y, z); - + if(te instanceof IFluidConnector) { IFluidConnector con = (IFluidConnector) te; - + if(con.canConnect(type, dir.getOpposite() /* machine's connecting side */)) return true; } - + return false; } @@ -192,7 +191,7 @@ public class Library { return entity; } - + public static MovingObjectPosition rayTrace(EntityPlayer player, double length, float interpolation) { Vec3 vec3 = getPosition(interpolation, player); vec3.yCoord += player.eyeHeight; @@ -208,7 +207,7 @@ public class Library { Vec3 vec32 = vec3.addVector(vec31.xCoord * length, vec31.yCoord * length, vec31.zCoord * length); return player.worldObj.func_147447_a(vec3, vec32, allowLiquids, disallowNonCollidingBlocks, mopOnMiss); } - + public static Vec3 getPosition(float interpolation, EntityPlayer player) { if(interpolation == 1.0F) { return Vec3.createVectorHelper(player.posX, player.posY + (player.getEyeHeight() - player.getDefaultEyeHeight()), player.posZ); @@ -219,43 +218,43 @@ public class Library { return Vec3.createVectorHelper(d0, d1, d2); } } - + public static List getBlockPosInPath(int x, int y, int z, int length, Vec3 vec0) { List list = new ArrayList(); - + for(int i = 0; i <= length; i++) { list.add(new int[] { (int)(x + (vec0.xCoord * i)), y, (int)(z + (vec0.zCoord * i)), i }); } - + return list; } - + //not great either but certainly better public static long chargeItemsFromTE(ItemStack[] slots, int index, long power, long maxPower) { - + if(power < 0) return 0; - + if(power > maxPower) return maxPower; if(slots[index] != null && slots[index].getItem() instanceof IBatteryItem) { - + IBatteryItem battery = (IBatteryItem) slots[index].getItem(); long batMax = battery.getMaxCharge(slots[index]); long batCharge = battery.getCharge(slots[index]); long batRate = battery.getChargeRate(); long toCharge = Math.min(Math.min(power, batRate), batMax - batCharge); - + power -= toCharge; - + battery.chargeBattery(slots[index], toCharge); } - + return power; } - + public static long chargeTEFromItems(ItemStack[] slots, int index, long power, long maxPower) { if(slots[index] != null && slots[index].getItem() == ModItems.battery_creative) { @@ -280,11 +279,11 @@ public class Library { return power; } - + //Flut-Füll gesteuerter Energieübertragungsalgorithmus //Flood fill controlled energy transmission algorithm public static void ffgeua(int x, int y, int z, boolean newTact, Object that, World worldObj) { - + /* * This here smoldering crater is all that remains from the old energy system. * In loving memory, 2016-2021. @@ -307,12 +306,12 @@ public class Library { MovingObjectPosition pos = world.rayTraceBlocks(Vec3.createVectorHelper(x, y, z), Vec3.createVectorHelper(a, b, c)); return pos != null; } - + public static boolean isObstructedOpaque(World world, double x, double y, double z, double a, double b, double c) { MovingObjectPosition pos = world.func_147447_a(Vec3.createVectorHelper(x, y, z), Vec3.createVectorHelper(a, b, c), false, true, false); return pos != null; } - + public static Block getRandomConcrete() { int i = rand.nextInt(20); if(i <= 1) return ModBlocks.brick_concrete_broken; diff --git a/src/main/java/com/hbm/lib/ModDamageSource.java b/src/main/java/com/hbm/lib/ModDamageSource.java index 142c57380..deaeca1f7 100644 --- a/src/main/java/com/hbm/lib/ModDamageSource.java +++ b/src/main/java/com/hbm/lib/ModDamageSource.java @@ -1,13 +1,14 @@ package com.hbm.lib; -import com.hbm.entity.projectile.*; - +import com.hbm.entity.projectile.EntityBullet; +import com.hbm.entity.projectile.EntityLaserBeam; +import com.hbm.entity.projectile.EntityMinerBeam; import net.minecraft.entity.Entity; import net.minecraft.util.DamageSource; import net.minecraft.util.EntityDamageSourceIndirect; public class ModDamageSource extends DamageSource { - + public static DamageSource nuclearBlast = (new DamageSource("nuclearBlast")).setExplosion(); public static DamageSource mudPoisoning = (new DamageSource("mudPoisoning")).setDamageBypassesArmor(); public static DamageSource acid = (new DamageSource("acid")); //.setDamageBypassesArmor(); @@ -95,18 +96,6 @@ public class ModDamageSource extends DamageSource { return (new EntityDamageSourceIndirect(s_euthanized, ent, hit)).setDamageBypassesArmor(); } - public static DamageSource causeFireDamage(EntityFire ent, Entity hit) { - return (new EntityDamageSourceIndirect(s_flamethrower, ent, hit)).setFireDamage().setDamageBypassesArmor(); - } - - public static DamageSource causePlasmaDamage(EntityPlasmaBeam ent, Entity hit) { - return (new EntityDamageSourceIndirect(s_immolator, ent, hit)).setDamageBypassesArmor(); - } - - public static DamageSource causeIceDamage(EntityLN2 ent, Entity hit) { - return (new EntityDamageSourceIndirect(s_cryolator, ent, hit)).setDamageBypassesArmor(); - } - public static DamageSource causeLaserDamage(EntityLaserBeam ent, Entity hit) { return (new EntityDamageSourceIndirect(s_laser, ent, hit)).setDamageBypassesArmor(); } diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index af861b280..413e6868e 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 (5061)"; + public static final String VERSION = "1.0.27 BETA (5224)"; //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 0bb37ca90..04feaf810 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -1,142 +1,148 @@ package com.hbm.main; -import com.hbm.handler.imc.IMCHandlerNHNEI; -import net.minecraft.block.Block; -import net.minecraft.client.Minecraft; -import net.minecraft.client.audio.PositionedSoundRecord; -import net.minecraft.client.model.ModelChicken; -import net.minecraft.client.particle.EntityAuraFX; -import net.minecraft.client.particle.EntityBlockDustFX; -import net.minecraft.client.particle.EntityCloudFX; -import net.minecraft.client.particle.EntityFX; -import net.minecraft.client.particle.EntityFireworkSparkFX; -import net.minecraft.client.particle.EntityFlameFX; -import net.minecraft.client.particle.EntityReddustFX; -import net.minecraft.client.renderer.entity.RenderMinecart; -import net.minecraft.client.renderer.entity.RenderSnowball; -import net.minecraft.client.renderer.texture.TextureManager; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.client.resources.Language; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.Vec3; -import net.minecraft.util.MovingObjectPosition.MovingObjectType; -import net.minecraft.world.World; -import net.minecraftforge.client.MinecraftForgeClient; -import net.minecraftforge.client.model.AdvancedModelLoader; -import net.minecraftforge.common.MinecraftForge; -import paulscode.sound.SoundSystemConfig; - -import java.awt.Color; -import java.awt.Desktop; -import java.net.URI; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import java.util.Random; - -import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; -import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; -import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; -import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; -import com.hbm.blocks.generic.BlockPlushie.TileEntityPlushie; -import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; -import com.hbm.blocks.machine.Floodlight.TileEntityFloodlight; -import com.hbm.blocks.machine.MachineFan.TileEntityFan; -import com.hbm.blocks.machine.PistonInserter.TileEntityPistonInserter; -import com.hbm.blocks.machine.WatzPump.TileEntityWatzPump; -import com.hbm.config.GeneralConfig; -import com.hbm.entity.cart.*; -import com.hbm.entity.effect.*; -import com.hbm.entity.grenade.*; -import com.hbm.entity.item.*; -import com.hbm.entity.logic.*; -import com.hbm.entity.missile.*; -import com.hbm.entity.missile.EntityMissileTier0.*; -import com.hbm.entity.missile.EntityMissileTier1.*; -import com.hbm.entity.missile.EntityMissileTier2.*; -import com.hbm.entity.missile.EntityMissileTier3.*; -import com.hbm.entity.missile.EntityMissileTier4.*; -import com.hbm.entity.mob.*; -import com.hbm.entity.mob.botprime.*; -import com.hbm.entity.mob.glyphid.*; -import com.hbm.entity.mob.siege.*; -import com.hbm.entity.particle.*; -import com.hbm.entity.projectile.*; -import com.hbm.entity.train.*; -import com.hbm.entity.train.EntityRailCarBase.BoundingBoxDummyEntity; -import com.hbm.entity.train.EntityRailCarRidable.SeatDummyEntity; -import com.hbm.handler.CasingEjector; -import com.hbm.handler.HbmKeybinds; -import com.hbm.handler.ImpactWorldHandler; -import com.hbm.handler.HbmKeybinds.EnumKeybind; -import com.hbm.items.IAnimatedItem; -import com.hbm.items.ModItems; -import com.hbm.lib.RefStrings; -import com.hbm.particle.*; -import com.hbm.particle.helper.ExplosionCreator; -import com.hbm.particle.helper.IParticleCreator; -import com.hbm.particle.psys.engine.EventHandlerParticleEngine; -import com.hbm.render.anim.*; -import com.hbm.render.anim.HbmAnimations.Animation; -import com.hbm.render.block.*; -import com.hbm.render.entity.*; -import com.hbm.render.entity.effect.*; -import com.hbm.render.entity.item.*; -import com.hbm.render.entity.mob.*; -import com.hbm.render.entity.projectile.*; -import com.hbm.render.entity.rocket.*; -import com.hbm.render.item.*; -import com.hbm.render.item.ItemRenderMissileGeneric.RenderMissileType; -import com.hbm.render.item.block.*; -import com.hbm.render.item.weapon.*; -import com.hbm.render.loader.HmfModelLoader; -import com.hbm.render.model.ModelPigeon; -import com.hbm.render.tileentity.*; -import com.hbm.render.util.MissilePart; -import com.hbm.render.util.RenderInfoSystem; -import com.hbm.render.util.RenderInfoSystem.InfoEntry; -import com.hbm.render.util.RenderOverhead; -import com.hbm.render.util.RenderOverhead.Marker; -import com.hbm.sound.AudioWrapper; -import com.hbm.sound.AudioWrapperClient; -import com.hbm.tileentity.TileEntityDoorGeneric; -import com.hbm.tileentity.bomb.*; -import com.hbm.tileentity.deco.*; -import com.hbm.tileentity.machine.*; + import com.hbm.blocks.ModBlocks; + import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; + import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; + import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; + import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; + import com.hbm.blocks.generic.BlockPlushie.TileEntityPlushie; + import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; + import com.hbm.blocks.machine.Floodlight.TileEntityFloodlight; + import com.hbm.blocks.machine.MachineFan.TileEntityFan; + import com.hbm.blocks.machine.PistonInserter.TileEntityPistonInserter; + import com.hbm.blocks.machine.WatzPump.TileEntityWatzPump; + import com.hbm.config.GeneralConfig; + import com.hbm.entity.cart.EntityMinecartCrate; + import com.hbm.entity.cart.EntityMinecartNTM; + import com.hbm.entity.effect.*; + import com.hbm.entity.grenade.*; + import com.hbm.entity.item.*; + import com.hbm.entity.logic.*; + import com.hbm.entity.missile.*; + import com.hbm.entity.missile.EntityMissileTier0.*; + import com.hbm.entity.missile.EntityMissileTier1.*; + import com.hbm.entity.missile.EntityMissileTier2.*; + import com.hbm.entity.missile.EntityMissileTier3.EntityMissileBurst; + import com.hbm.entity.missile.EntityMissileTier3.EntityMissileDrill; + import com.hbm.entity.missile.EntityMissileTier3.EntityMissileInferno; + import com.hbm.entity.missile.EntityMissileTier3.EntityMissileRain; + import com.hbm.entity.missile.EntityMissileTier4.*; + import com.hbm.entity.mob.*; + import com.hbm.entity.mob.botprime.EntityBOTPrimeBody; + import com.hbm.entity.mob.botprime.EntityBOTPrimeHead; + import com.hbm.entity.mob.glyphid.*; + import com.hbm.entity.mob.siege.*; + import com.hbm.entity.particle.*; + import com.hbm.entity.projectile.*; + import com.hbm.entity.train.EntityRailCarBase.BoundingBoxDummyEntity; + import com.hbm.entity.train.EntityRailCarRidable.SeatDummyEntity; + import com.hbm.entity.train.TrainCargoTram; + import com.hbm.entity.train.TrainCargoTramTrailer; + import com.hbm.entity.train.TrainTunnelBore; + import com.hbm.handler.CasingEjector; + import com.hbm.handler.HbmKeybinds; + import com.hbm.handler.HbmKeybinds.EnumKeybind; + import com.hbm.handler.ImpactWorldHandler; + import com.hbm.handler.imc.IMCHandlerNHNEI; + import com.hbm.items.IAnimatedItem; + import com.hbm.items.ModItems; + import com.hbm.items.weapon.sedna.factory.GunFactoryClient; + import com.hbm.lib.RefStrings; + import com.hbm.particle.*; + import com.hbm.particle.helper.ParticleCreators; + import com.hbm.particle.psys.engine.EventHandlerParticleEngine; +import com.hbm.qmaw.QMAWLoader; +import com.hbm.render.anim.BusAnimation; + import com.hbm.render.anim.BusAnimationSequence; + import com.hbm.render.anim.HbmAnimations; + import com.hbm.render.anim.HbmAnimations.Animation; + import com.hbm.render.block.*; + import com.hbm.render.entity.RenderEmpty; + import com.hbm.render.entity.effect.*; + import com.hbm.render.entity.item.*; + import com.hbm.render.entity.mob.*; + import com.hbm.render.entity.projectile.*; + import com.hbm.render.entity.rocket.*; + import com.hbm.render.item.*; + import com.hbm.render.item.ItemRenderMissileGeneric.RenderMissileType; + import com.hbm.render.item.block.ItemRenderDecoBlock; + import com.hbm.render.item.weapon.*; + import com.hbm.render.loader.HmfModelLoader; + import com.hbm.render.model.ModelPigeon; + import com.hbm.render.tileentity.*; + import com.hbm.render.util.MissilePart; + import com.hbm.render.util.RenderInfoSystem; + import com.hbm.render.util.RenderInfoSystem.InfoEntry; + import com.hbm.render.util.RenderOverhead; + import com.hbm.render.util.RenderOverhead.Marker; + import com.hbm.sound.AudioWrapper; + import com.hbm.sound.AudioWrapperClient; + import com.hbm.tileentity.TileEntityDoorGeneric; + import com.hbm.tileentity.bomb.*; + import com.hbm.tileentity.deco.*; + import com.hbm.tileentity.machine.*; +import com.hbm.tileentity.machine.albion.*; import com.hbm.tileentity.machine.oil.*; -import com.hbm.tileentity.machine.rbmk.*; -import com.hbm.tileentity.machine.storage.*; -import com.hbm.tileentity.network.*; -import com.hbm.tileentity.turret.*; -import com.hbm.util.BobMathUtil; -import com.hbm.util.ColorUtil; -import com.hbm.util.fauxpointtwelve.BlockPos; -import com.hbm.wiaj.cannery.Jars; + import com.hbm.tileentity.machine.rbmk.*; + import com.hbm.tileentity.machine.storage.*; + import com.hbm.tileentity.network.*; + import com.hbm.tileentity.turret.*; + import com.hbm.util.BobMathUtil; + import com.hbm.util.ColorUtil; + import com.hbm.util.fauxpointtwelve.BlockPos; + import com.hbm.wiaj.cannery.Jars; + import cpw.mods.fml.client.registry.ClientRegistry; + import cpw.mods.fml.client.registry.RenderingRegistry; + import cpw.mods.fml.common.FMLCommonHandler; + import cpw.mods.fml.relauncher.ReflectionHelper; + import net.minecraft.block.Block; + import net.minecraft.client.Minecraft; + import net.minecraft.client.audio.PositionedSoundRecord; + import net.minecraft.client.model.ModelChicken; + import net.minecraft.client.particle.EntityCloudFX; + import net.minecraft.client.particle.*; + import net.minecraft.client.renderer.entity.RenderMinecart; + import net.minecraft.client.renderer.entity.RenderSnowball; + import net.minecraft.client.renderer.texture.TextureManager; + import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; + import net.minecraft.client.resources.IReloadableResourceManager; + import net.minecraft.client.resources.Language; + import net.minecraft.entity.Entity; + import net.minecraft.entity.EntityLivingBase; + import net.minecraft.entity.player.EntityPlayer; + import net.minecraft.init.Blocks; + import net.minecraft.init.Items; + import net.minecraft.item.Item; + import net.minecraft.item.ItemBlock; + import net.minecraft.item.ItemStack; + import net.minecraft.nbt.NBTTagCompound; + import net.minecraft.util.MovingObjectPosition; + import net.minecraft.util.MovingObjectPosition.MovingObjectType; + import net.minecraft.util.ResourceLocation; + import net.minecraft.util.Vec3; + import net.minecraft.world.World; + import net.minecraftforge.client.MinecraftForgeClient; + import net.minecraftforge.client.model.AdvancedModelLoader; + import net.minecraftforge.common.MinecraftForge; + import paulscode.sound.SoundSystemConfig; -import cpw.mods.fml.client.registry.ClientRegistry; -import cpw.mods.fml.client.registry.RenderingRegistry; -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.relauncher.ReflectionHelper; + import java.awt.*; + import java.net.URI; + import java.util.List; + import java.util.*; + import java.util.Map.Entry; public class ClientProxy extends ServerProxy { - + public RenderInfoSystem theInfoSystem = new RenderInfoSystem(); - + + /** Runs just before item an block init */ + @Override + public void registerPreRenderInfo() { + AdvancedModelLoader.registerModelHandler(new HmfModelLoader()); + } + + /** Runs right after item and block init */ @Override public void registerRenderInfo() { @@ -145,21 +151,21 @@ public class ClientProxy extends ServerProxy { registerClientEventHandler(new EventHandlerParticleEngine()); registerClientEventHandler(theInfoSystem); - AdvancedModelLoader.registerModelHandler(new HmfModelLoader()); - registerTileEntitySpecialRenderer(); registerItemRenderer(); registerEntityRenderer(); registerBlockRenderer(); - + Jars.initJars(); + ((IReloadableResourceManager) Minecraft.getMinecraft().getResourceManager()).registerReloadListener(new QMAWLoader()); + if(GeneralConfig.enableSoundExtension) { SoundSystemConfig.setNumberNormalChannels(GeneralConfig.normalSoundChannels); SoundSystemConfig.setNumberStreamingChannels(50); } } - + private void registerClientEventHandler(Object handler) { MinecraftForge.EVENT_BUS.register(handler); FMLCommonHandler.instance().bus().register(handler); @@ -170,6 +176,11 @@ public class ClientProxy extends ServerProxy { IMCHandlerNHNEI.IMCSender(); } + @Override + public void registerGunCfg() { + GunFactoryClient.init(); + } + @Override public void registerTileEntitySpecialRenderer() { //test crap @@ -237,6 +248,12 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePuF6Tank.class, new RenderPuF6Tank()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineIGenerator.class, new RenderIGenerator()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCyclotron.class, new RenderCyclotron()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPASource.class, new RenderPASource()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPABeamline.class, new RenderPABeamline()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPARFC.class, new RenderPARFC()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPAQuadrupole.class, new RenderPAQuadrupole()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPADipole.class, new RenderPADipole()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPADetector.class, new RenderPADetector()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineExposureChamber.class, new RenderExposureChamber()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineOilWell.class, new RenderDerrick()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineGasFlare.class, new RenderGasFlare()); @@ -257,8 +274,10 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineFrackingTower.class, new RenderFrackingTower()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineTurbofan.class, new RenderTurbofan()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineTurbineGas.class, new RenderTurbineGas()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineLPW2.class, new RenderLPW2()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePress.class, new RenderPress()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineEPress.class, new RenderEPress()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAmmoPress.class, new RenderAmmoPress()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadGen.class, new RenderRadGen()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarNT.class, new RenderRadar()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarLarge.class, new RenderRadarLarge()); @@ -266,6 +285,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityReactorResearch.class, new RenderSmallReactor()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTesla.class, new RenderTesla()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBarrel.class, new RenderFluidBarrel()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRotaryFurnace.class, new RenderRotaryFurnace()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCrystallizer.class, new RenderCrystallizer()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMicrowave.class, new RenderMicrowave()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRTG.class, new RenderRTG()); @@ -315,6 +335,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCatalyticReformer.class, new RenderCatalyticReformer()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineHydrotreater.class, new RenderHydrotreater()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCoker.class, new RenderCoker()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePyroOven.class, new RenderPyroOven()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFan.class, new RenderFan()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPistonInserter.class, new RenderPistonInserter()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityConveyorPress.class, new RenderConveyorPress()); @@ -397,12 +418,12 @@ public class ClientProxy extends ServerProxy { @Override public void registerItemRenderer() { - + ItemRenderLibrary.init(); - + for(Entry entry : ItemRenderLibrary.renderers.entrySet()) MinecraftForgeClient.registerItemRenderer(entry.getKey(), entry.getValue()); - + //this bit registers an item renderer for every existing tile entity renderer that implements IItemRendererProvider Iterator iterator = TileEntityRendererDispatcher.instance.mapSpecialRenderers.values().iterator(); while(iterator.hasNext()) { @@ -414,7 +435,7 @@ public class ClientProxy extends ServerProxy { } } } - + //universal JSON translated items double[] rtp = new double[] {0, 180, -90}; double[] ttp_high = new double[] {0.125, 0.625, 0}; @@ -440,7 +461,7 @@ public class ClientProxy extends ServerProxy { double[] sfp_default = new double[] {1, 1, 1}; double[] tfp_default = new double[] {0, 0, 0}; double[] sir_default = new double[] {1, 1, 1}; - + MinecraftForgeClient.registerItemRenderer(ModItems.bismuth_pickaxe, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp_default, sfp_default, rir, tir, sir_default)); MinecraftForgeClient.registerItemRenderer(ModItems.bismuth_axe, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp_default, sfp_default, rir, tir, sir_default)); MinecraftForgeClient.registerItemRenderer(ModItems.volcanic_pickaxe, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp_default, sfp_default, rir, tir, sir_default)); @@ -449,7 +470,7 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.chlorophyte_axe, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp_default, sfp_default, rir, tir, sir_default)); MinecraftForgeClient.registerItemRenderer(ModItems.mese_pickaxe, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp_default, sfp_default, rir, tir, sir_default)); MinecraftForgeClient.registerItemRenderer(ModItems.mese_axe, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp_default, sfp_default, rir, tir, sir_default)); - + ItemRenderMissileGeneric.init(); MinecraftForgeClient.registerItemRenderer(ModItems.missile_test, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER0)); MinecraftForgeClient.registerItemRenderer(ModItems.missile_taint, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER0)); @@ -480,7 +501,7 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.missile_doomsday_rusted, new ItemRenderMissileGeneric(RenderMissileType.TYPE_NUCLEAR)); MinecraftForgeClient.registerItemRenderer(ModItems.missile_carrier, new ItemRenderMissileGeneric(RenderMissileType.TYPE_CARRIER)); MinecraftForgeClient.registerItemRenderer(ModItems.missile_shuttle, new ItemRenderMissileGeneric(RenderMissileType.TYPE_ROBIN)); - + //templates MinecraftForgeClient.registerItemRenderer(ModItems.assembly_template, new ItemRenderTemplate()); MinecraftForgeClient.registerItemRenderer(ModItems.chemistry_template, new ItemRenderTemplate()); @@ -519,88 +540,10 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.chainsaw, new ItemRenderChainsaw()); MinecraftForgeClient.registerItemRenderer(ModItems.boltgun, new ItemRenderBoltgun()); //guns - MinecraftForgeClient.registerItemRenderer(ModItems.gun_rpg, new ItemRenderRpg()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_karl, new ItemRenderRpg()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_panzerschreck, new ItemRenderRpg()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_stinger, new ItemRenderStinger()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_skystinger, new ItemRenderStinger()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver, new ItemRenderWeaponFFColt(ResourceManager.ff_gun_bright, ResourceManager.ff_iron, ResourceManager.ff_wood)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_saturnite, new ItemRenderWeaponFFColt(ResourceManager.ff_saturnite, ResourceManager.ff_iron, ResourceManager.ff_wood)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_gold, new ItemRenderWeaponFFColt(ResourceManager.ff_gold, ResourceManager.ff_gold, ResourceManager.ff_gun_dark)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_schrabidium, new ItemRenderWeaponFFColt(ResourceManager.ff_schrabidium, ResourceManager.ff_schrabidium, ResourceManager.ff_gun_dark)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_cursed, new ItemRenderWeaponFFCursed()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_nightmare, new ItemRenderWeaponFFNightmare()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_nightmare2, new ItemRenderWeaponFFNightmareDark()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_fatman, new ItemRenderFatMan()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_proto, new ItemRenderFatMan()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_mirv, new ItemRenderMIRVLauncher()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_bf, new ItemRenderBFLauncher()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_xvl1456, new ItemRenderWeaponTau()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_zomg, new ItemRenderZOMG()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_osipr, new ItemRenderOSIPR()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_mp, new ItemRenderMP()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_inverted, new ItemRenderRevolverInverted()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_mp40, new ItemRenderMP40()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_emp, new ItemRenderEMPRay()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_immolator, new ItemRenderImmolator()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_cryolator, new ItemRenderCryolator()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_uboinik, new ItemRenderUboinik()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_jack, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_spark, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_hp, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_euthanasia, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_defabricator, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_dash, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_twigun, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_lever_action, new ItemRenderWeaponFFMaresLeg(ResourceManager.ff_gun_bright, ResourceManager.ff_wood)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolt_action, new ItemRenderWeaponFFBolt(ResourceManager.rem700, ResourceManager.rem700_tex)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_lever_action_dark, new ItemRenderWeaponFFMaresLeg(ResourceManager.ff_gun_normal, ResourceManager.ff_wood_red)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolt_action_green, new ItemRenderWeaponFFBolt(ResourceManager.rem700poly, ResourceManager.rem700poly_tex)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_lever_action_sonata, new ItemRenderGunAnim()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolt_action_saturnite, new ItemRenderGunAnim()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolt_action_saturnite, new ItemRenderWeaponFFBolt(ResourceManager.rem700sat, ResourceManager.rem700sat_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_b92, new ItemRenderGunAnim()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_b93, new ItemRenderGunAnim()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi, new ItemRenderUZI()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_silencer, new ItemRenderUZI()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_saturnite, new ItemRenderUZI()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_saturnite_silencer, new ItemRenderUZI()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_calamity, new ItemRenderWeaponFFMG42()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_minigun, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_lacunae, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_folly, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_hk69, new ItemRenderWeaponObj()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_bio_revolver, new ItemRenderBioRevolver()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_deagle, new ItemRenderWeaponObj()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_supershotgun, new ItemRenderWeaponShotty()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_ks23, new ItemRenderWeaponKS23()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer, new ItemRenderWeaponObj()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_flechette, new ItemRenderWeaponObj()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_quadro, new ItemRenderWeaponQuadro()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_sauer, new ItemRenderWeaponSauer()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_vortex, new ItemRenderWeaponVortex()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_thompson, new ItemRenderWeaponThompson()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolter, new ItemRenderWeaponBolter()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolter_digamma, new ItemRenderWeaponBolter()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_fireext, new ItemRenderFireExt()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_ar15, new ItemRenderWeaponAR15()); - MinecraftForgeClient.registerItemRenderer(ModItems.detonator_laser, new ItemRenderDetonatorLaser()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_remington, new ItemRenderWeaponRemington()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_spas12, new ItemRenderWeaponSpas12()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_glass_cannon, new ItemRenderWeaponGlass()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_chemthrower, new ItemRenderWeaponChemthrower()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_m2, new ItemRenderM2()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_nopip, new ItemRenderWeaponNovac()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_pip, new ItemRenderWeaponLilMac()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_blackjack, new ItemRenderWeaponNovac()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_silver, new ItemRenderWeaponNovac()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_red, new ItemRenderWeaponNovac()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_lunatic_marksman, new ItemRenderLunaticSniper()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_benelli, new ItemRenderBenelli()); - 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()); + MinecraftForgeClient.registerItemRenderer(ModItems.detonator_laser, new ItemRenderDetonatorLaser()); //multitool MinecraftForgeClient.registerItemRenderer(ModItems.multitool_dig, new ItemRenderMultitool()); MinecraftForgeClient.registerItemRenderer(ModItems.multitool_silk, new ItemRenderMultitool()); @@ -613,8 +556,6 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.multitool_joule, new ItemRenderMultitool()); MinecraftForgeClient.registerItemRenderer(ModItems.multitool_decon, new ItemRenderMultitool()); //blocks - MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(ModBlocks.steel_wall), new ItemRenderDecoBlock()); - MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(ModBlocks.steel_corner), new ItemRenderDecoBlock()); MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(ModBlocks.steel_roof), new ItemRenderDecoBlock()); } @@ -625,31 +566,30 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntitySchrab.class, new RenderFlare()); RenderingRegistry.registerEntityRenderingHandler(EntityBullet.class, new RenderRocket()); RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseNT.class, new RenderBullet()); + RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseMK4.class, new RenderBulletMK4()); + RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseMK4CL.class, new RenderBulletMK4()); + RenderingRegistry.registerEntityRenderingHandler(EntityBulletBeamBase.class, new RenderBeam()); RenderingRegistry.registerEntityRenderingHandler(EntityRainbow.class, new RenderRainbow()); - RenderingRegistry.registerEntityRenderingHandler(EntityNightmareBlast.class, new RenderOminousBullet()); - RenderingRegistry.registerEntityRenderingHandler(EntityFire.class, new RenderFireball(ModItems.nothing)); - RenderingRegistry.registerEntityRenderingHandler(EntityPlasmaBeam.class, new RenderBeam()); RenderingRegistry.registerEntityRenderingHandler(EntityLaserBeam.class, new RenderBeam2()); RenderingRegistry.registerEntityRenderingHandler(EntityMinerBeam.class, new RenderBeam3()); RenderingRegistry.registerEntityRenderingHandler(EntitySparkBeam.class, new RenderBeam4()); RenderingRegistry.registerEntityRenderingHandler(EntityExplosiveBeam.class, new RenderBeam5()); RenderingRegistry.registerEntityRenderingHandler(EntityModBeam.class, new RenderBeam6()); RenderingRegistry.registerEntityRenderingHandler(EntitySiegeLaser.class, new RenderSiegeLaser()); - RenderingRegistry.registerEntityRenderingHandler(EntityLN2.class, new RenderLN2(ModItems.nothing)); - RenderingRegistry.registerEntityRenderingHandler(EntityLaser.class, new RenderLaser()); RenderingRegistry.registerEntityRenderingHandler(EntityBombletZeta.class, new RenderBombletTheta()); RenderingRegistry.registerEntityRenderingHandler(EntityMeteor.class, new RenderMeteor()); RenderingRegistry.registerEntityRenderingHandler(EntityBoxcar.class, new RenderBoxcar()); RenderingRegistry.registerEntityRenderingHandler(EntityDuchessGambit.class, new RenderBoxcar()); RenderingRegistry.registerEntityRenderingHandler(EntityBuilding.class, new RenderBoxcar()); + RenderingRegistry.registerEntityRenderingHandler(EntityTorpedo.class, new RenderBoxcar()); RenderingRegistry.registerEntityRenderingHandler(EntityBomber.class, new RenderBomber()); + RenderingRegistry.registerEntityRenderingHandler(EntityC130.class, new RenderC130()); RenderingRegistry.registerEntityRenderingHandler(EntityBurningFOEQ.class, new RenderFOEQ()); RenderingRegistry.registerEntityRenderingHandler(EntityFallingNuke.class, new RenderFallingNuke()); RenderingRegistry.registerEntityRenderingHandler(EntityMinerRocket.class, new RenderMinerRocket()); RenderingRegistry.registerEntityRenderingHandler(EntityBobmazon.class, new RenderMinerRocket()); RenderingRegistry.registerEntityRenderingHandler(EntityTom.class, new RenderTom()); RenderingRegistry.registerEntityRenderingHandler(EntityAAShell.class, new RenderMirv()); - RenderingRegistry.registerEntityRenderingHandler(EntityRocketHoming.class, new RenderSRocket()); RenderingRegistry.registerEntityRenderingHandler(EntityChopperMine.class, new RenderChopperMine()); RenderingRegistry.registerEntityRenderingHandler(EntityRubble.class, new RenderRubble()); RenderingRegistry.registerEntityRenderingHandler(EntityShrapnel.class, new RenderShrapnel()); @@ -665,6 +605,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntitySawblade.class, new RenderSawblade()); RenderingRegistry.registerEntityRenderingHandler(EntityChemical.class, new RenderChemical()); RenderingRegistry.registerEntityRenderingHandler(EntityMist.class, new RenderMist()); + RenderingRegistry.registerEntityRenderingHandler(EntityFireLingering.class, new RenderMist()); RenderingRegistry.registerEntityRenderingHandler(EntityWaypoint.class, new RenderMist()); RenderingRegistry.registerEntityRenderingHandler(EntityAcidBomb.class, new RenderSnowball(Items.slime_ball)); //grenades @@ -740,6 +681,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityMissileDoomsdayRusted.class, new RenderMissileNuclear()); RenderingRegistry.registerEntityRenderingHandler(EntitySoyuz.class, new RenderSoyuz()); RenderingRegistry.registerEntityRenderingHandler(EntitySoyuzCapsule.class, new RenderSoyuzCapsule()); + RenderingRegistry.registerEntityRenderingHandler(EntityParachuteCrate.class, new RenderParachuteCrate()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileTaint.class, new RenderMissileTaint()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileMicro.class, new RenderMissileTaint()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileBHole.class, new RenderMissileTaint()); @@ -816,8 +758,8 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityFBIDrone.class, new RenderDrone()); RenderingRegistry.registerEntityRenderingHandler(EntityPlasticBag.class, new RenderPlasticBag()); RenderingRegistry.registerEntityRenderingHandler(EntityPigeon.class, new RenderPigeon(new ModelPigeon(), 0.3F)); + RenderingRegistry.registerEntityRenderingHandler(EntityDummy.class, new RenderDummy()); //"particles" - RenderingRegistry.registerEntityRenderingHandler(EntityBSmokeFX.class, new MultiCloudRenderer(new Item[] { ModItems.b_smoke1, ModItems.b_smoke2, ModItems.b_smoke3, ModItems.b_smoke4, ModItems.b_smoke5, ModItems.b_smoke6, ModItems.b_smoke7, ModItems.b_smoke8 })); RenderingRegistry.registerEntityRenderingHandler(EntityChlorineFX.class, new MultiCloudRenderer(new Item[] { ModItems.chlorine1, ModItems.chlorine2, ModItems.chlorine3, ModItems.chlorine4, ModItems.chlorine5, ModItems.chlorine6, ModItems.chlorine7, ModItems.chlorine8 })); RenderingRegistry.registerEntityRenderingHandler(EntityPinkCloudFX.class, new MultiCloudRenderer(new Item[] { ModItems.pc1, ModItems.pc2, ModItems.pc3, ModItems.pc4, ModItems.pc5, ModItems.pc6, ModItems.pc7, ModItems.pc8 })); RenderingRegistry.registerEntityRenderingHandler(com.hbm.entity.particle.EntityCloudFX.class, new MultiCloudRenderer(new Item[] { ModItems.cloud1, ModItems.cloud2, ModItems.cloud3, ModItems.cloud4, ModItems.cloud5, ModItems.cloud6, ModItems.cloud7, ModItems.cloud8 })); @@ -825,7 +767,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityFogFX.class, new FogRenderer()); RenderingRegistry.registerEntityRenderingHandler(EntityEMPBlast.class, new RenderEMPBlast()); } - + @Override public void registerBlockRenderer() { @@ -833,6 +775,8 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderScaffoldBlock()); RenderingRegistry.registerBlockHandler(new RenderTapeBlock()); RenderingRegistry.registerBlockHandler(new RenderSteelBeam()); + RenderingRegistry.registerBlockHandler(new RenderSteelWall()); + RenderingRegistry.registerBlockHandler(new RenderSteelCorner()); RenderingRegistry.registerBlockHandler(new RenderBarrel()); RenderingRegistry.registerBlockHandler(new RenderFence()); RenderingRegistry.registerBlockHandler(new RenderBarbedWire()); @@ -860,6 +804,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderBoxDuct()); RenderingRegistry.registerBlockHandler(new RenderBlockDecoModel(ModBlocks.deco_computer.getRenderType(), ResourceManager.deco_computer)); RenderingRegistry.registerBlockHandler(new RenderReeds()); + RenderingRegistry.registerBlockHandler(new RenderHangingVine()); RenderingRegistry.registerBlockHandler(new RenderRTTY()); RenderingRegistry.registerBlockHandler(new RenderDiFurnaceExtension()); RenderingRegistry.registerBlockHandler(new RenderSplitter()); @@ -877,7 +822,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderFoundryOutlet()); RenderingRegistry.registerBlockHandler(new RenderRail()); - + RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_dynamite.getRenderType(), ResourceManager.charge_dynamite)); RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_c4.getRenderType(), ResourceManager.charge_c4)); @@ -886,112 +831,32 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderRBMKControl()); RenderingRegistry.registerBlockHandler(new RenderPribris()); } - + @Override public void registerMissileItems() { - + MissilePart.registerAllParts(); - + Iterator it = MissilePart.parts.entrySet().iterator(); - + while(it.hasNext()) { Map.Entry pair = (Map.Entry) it.next(); MissilePart part = (MissilePart) pair.getValue(); MinecraftForgeClient.registerItemRenderer(part.part, new ItemRenderMissilePart(part)); } - + MinecraftForgeClient.registerItemRenderer(ModItems.missile_custom, new ItemRenderMissile()); } - @Deprecated - @Override - public void particleControl(double x, double y, double z, int type) { - - - World world = Minecraft.getMinecraft().theWorld; - TextureManager man = Minecraft.getMinecraft().renderEngine; - - switch(type) { - case 0: - - for(int i = 0; i < 10; i++) { - EntityCloudFX smoke = new EntityCloudFX(world, x + world.rand.nextGaussian(), y + world.rand.nextGaussian(), z + world.rand.nextGaussian(), 0.0, 0.0, 0.0); - Minecraft.getMinecraft().effectRenderer.addEffect(smoke); - } - break; - - case 1: - - EntityCloudFX smoke = new EntityCloudFX(world, x, y, z, 0.0, 0.1, 0.0); - Minecraft.getMinecraft().effectRenderer.addEffect(smoke); - break; - - case 2: - - ParticleContrail contrail = new ParticleContrail(man, world, x, y, z); - Minecraft.getMinecraft().effectRenderer.addEffect(contrail); - break; - - case 3: - - ParticleRadiationFog fog = new ParticleRadiationFog(man, world, x, y, z); - Minecraft.getMinecraft().effectRenderer.addEffect(fog); - break; - } - } - - //version 2, now with strings! - @Deprecated - @Override - public void spawnParticle(double x, double y, double z, String type, float args[]) { - - World world = Minecraft.getMinecraft().theWorld; - TextureManager man = Minecraft.getMinecraft().renderEngine; - - if("launchsmoke".equals(type) && args.length == 3) { - ParticleSmokePlume contrail = new ParticleSmokePlume(man, world, x, y, z); - contrail.motionX = args[0]; - contrail.motionY = args[1]; - contrail.motionZ = args[2]; - Minecraft.getMinecraft().effectRenderer.addEffect(contrail); - } - if("exKerosene".equals(type)) { - ParticleContrail contrail = new ParticleContrail(man, world, x, y, z, 0F, 0F, 0F, 1F); - Minecraft.getMinecraft().effectRenderer.addEffect(contrail); - } - if("exSolid".equals(type)) { - ParticleContrail contrail = new ParticleContrail(man, world, x, y, z, 0.3F, 0.2F, 0.05F, 1F); - Minecraft.getMinecraft().effectRenderer.addEffect(contrail); - } - if("exHydrogen".equals(type)) { - ParticleContrail contrail = new ParticleContrail(man, world, x, y, z, 0.7F, 0.7F, 0.7F, 1F); - Minecraft.getMinecraft().effectRenderer.addEffect(contrail); - } - if("exBalefire".equals(type)) { - ParticleContrail contrail = new ParticleContrail(man, world, x, y, z, 0.2F, 0.7F, 0.2F, 1F); - Minecraft.getMinecraft().effectRenderer.addEffect(contrail); - } - if("radSmoke".equals(type)) { - ParticleRadiationFog contrail = new ParticleRadiationFog(man, world, x, y, z); - Minecraft.getMinecraft().effectRenderer.addEffect(contrail); - } - } - - public static HashMap particleCreators = new HashMap(); - - static { - particleCreators.put("explosionLarge", new ExplosionCreator()); - } - //mk3, only use this one @Override public void effectNT(NBTTagCompound data) { - + World world = Minecraft.getMinecraft().theWorld; - + if(world == null) //might i ask why? return; - + TextureManager man = Minecraft.getMinecraft().renderEngine; EntityPlayer player = Minecraft.getMinecraft().thePlayer; int particleSetting = Minecraft.getMinecraft().gameSettings.particleSetting; @@ -1000,27 +865,85 @@ public class ClientProxy extends ServerProxy { double x = data.getDouble("posX"); double y = data.getDouble("posY"); double z = data.getDouble("posZ"); - - if(particleCreators.containsKey(type)) { - particleCreators.get(type).makeParticle(world, player, man, rand, x, y, z, data); + + if(ParticleCreators.particleCreators.containsKey(type)) { + ParticleCreators.particleCreators.get(type).makeParticle(world, player, man, rand, x, y, z, data); return; } - + + // Old MK1 system ported to MK3: + + if("waterSplash".equals(type)) { + for (int i = 0; i < 10; i++) { + EntityCloudFX smoke = new EntityCloudFX(world, x + world.rand.nextGaussian(), y + world.rand.nextGaussian(), z + world.rand.nextGaussian(), 0.0, 0.0, 0.0); + Minecraft.getMinecraft().effectRenderer.addEffect(smoke); + } + } + + if("cloudFX2".equals(type)) { // i have genuinely no idea what used this + EntityCloudFX smoke = new EntityCloudFX(world, x, y, z, 0.0, 0.1, 0.0); + Minecraft.getMinecraft().effectRenderer.addEffect(smoke); + } + + if("ABMContrail".equals(type)) { + ParticleContrail contrail = new ParticleContrail(man, world, x, y, z); + Minecraft.getMinecraft().effectRenderer.addEffect(contrail); + } + + // End MK1 porting. + + // Old MK2 system ported to MK3: + + if("launchSmoke".equals(type)) { + ParticleSmokePlume contrail = new ParticleSmokePlume(man, world, x, y, z); + contrail.motionX = data.getDouble("moX"); + contrail.motionY = data.getDouble("moY"); + contrail.motionZ = data.getDouble("moZ"); + Minecraft.getMinecraft().effectRenderer.addEffect(contrail); + } + + if("exKerosene".equals(type)) { + ParticleContrail contrail = new ParticleContrail(man, world, x, y, z, 0F, 0F, 0F, 1F); + Minecraft.getMinecraft().effectRenderer.addEffect(contrail); + } + + if("exSolid".equals(type)) { + ParticleContrail contrail = new ParticleContrail(man, world, x, y, z, 0.3F, 0.2F, 0.05F, 1F); + Minecraft.getMinecraft().effectRenderer.addEffect(contrail); + } + + if("exHydrogen".equals(type)) { + ParticleContrail contrail = new ParticleContrail(man, world, x, y, z, 0.7F, 0.7F, 0.7F, 1F); + Minecraft.getMinecraft().effectRenderer.addEffect(contrail); + } + + if("exBalefire".equals(type)) { + ParticleContrail contrail = new ParticleContrail(man, world, x, y, z, 0.2F, 0.7F, 0.2F, 1F); + Minecraft.getMinecraft().effectRenderer.addEffect(contrail); + } + + if("radFog".equals(type)) { + ParticleRadiationFog contrail = new ParticleRadiationFog(man, world, x, y, z); + Minecraft.getMinecraft().effectRenderer.addEffect(contrail); + } + + // End MK2 porting. + if("missileContrail".equals(type)) { - + if(Vec3.createVectorHelper(player.posX - x, player.posY - y, player.posZ - z).lengthVector() > 350) return; - + float scale = data.hasKey("scale") ? data.getFloat("scale") : 1F; double mX = data.getDouble("moX"); double mY = data.getDouble("moY"); double mZ = data.getDouble("moZ"); - + /*ParticleContrail contrail = new ParticleContrail(man, world, x, y, z, 0, 0, 0, scale); contrail.motionX = mX; contrail.motionY = mY; contrail.motionZ = mZ; Minecraft.getMinecraft().effectRenderer.addEffect(contrail);*/ - + ParticleRocketFlame fx = new ParticleRocketFlame(man, world, x, y, z).setScale(scale); fx.motionX = mX; fx.motionY = mY; @@ -1028,14 +951,14 @@ public class ClientProxy extends ServerProxy { if(data.hasKey("maxAge")) fx.setMaxAge(data.getInteger("maxAge")); Minecraft.getMinecraft().effectRenderer.addEffect(fx); } - + if("smoke".equals(type)) { - + String mode = data.getString("mode"); int count = Math.max(1, data.getInteger("count")); - + if("cloud".equals(mode)) { - + for(int i = 0; i < count; i++) { ParticleExSmoke fx = new ParticleExSmoke(man, world, x, y, z); fx.motionY = rand.nextGaussian() * (1 + (count / 100)); @@ -1061,25 +984,25 @@ public class ClientProxy extends ServerProxy { Vec3 vec = Vec3.createVectorHelper(2, 0, 0); vec.rotateAroundY(rand.nextFloat() * (float)Math.PI * 2F); - + for(int i = 0; i < count; i++) { ParticleDigammaSmoke fx = new ParticleDigammaSmoke(man, world, x, y, z); fx.motionY = 0; fx.motionX = vec.xCoord; fx.motionZ = vec.zCoord; Minecraft.getMinecraft().effectRenderer.addEffect(fx); - + vec.rotateAroundY((float)Math.PI * 2F / (float)count); } } - + if("shock".equals(mode)) { - + double strength = data.getDouble("strength"); Vec3 vec = Vec3.createVectorHelper(strength, 0, 0); vec.rotateAroundY(rand.nextInt(360)); - + for(int i = 0; i < count; i++) { ParticleExSmoke fx = new ParticleExSmoke(man, world, x, y, z); fx.motionY = 0; @@ -1090,15 +1013,15 @@ public class ClientProxy extends ServerProxy { vec.rotateAroundY((float)Math.PI * 2F / (float)count); } } - + if("shockRand".equals(mode)) { - + double strength = data.getDouble("strength"); Vec3 vec = Vec3.createVectorHelper(strength, 0, 0); vec.rotateAroundY(rand.nextInt(360)); double r; - + for(int i = 0; i < count; i++) { r = rand.nextDouble(); ParticleExSmoke fx = new ParticleExSmoke(man, world, x, y, z); @@ -1106,76 +1029,76 @@ public class ClientProxy extends ServerProxy { fx.motionX = vec.xCoord * r; fx.motionZ = vec.zCoord * r; Minecraft.getMinecraft().effectRenderer.addEffect(fx); - + vec.rotateAroundY(360 / count); } } - + if("wave".equals(mode)) { - + double strength = data.getDouble("range"); Vec3 vec = Vec3.createVectorHelper(strength, 0, 0); - + for(int i = 0; i < count; i++) { - + vec.rotateAroundY((float) Math.toRadians(rand.nextFloat() * 360F)); - + ParticleExSmoke fx = new ParticleExSmoke(man, world, x + vec.xCoord, y, z + vec.zCoord); fx.maxAge = 50; fx.motionY = 0; fx.motionX = 0; fx.motionZ = 0; Minecraft.getMinecraft().effectRenderer.addEffect(fx); - + vec.rotateAroundY(360 / count); } } } - + if("exhaust".equals(type)) { String mode = data.getString("mode"); - + if("soyuz".equals(mode)) { - + if(Vec3.createVectorHelper(player.posX - x, player.posY - y, player.posZ - z).lengthVector() > 350) return; - + int count = Math.max(1, data.getInteger("count")); double width = data.getDouble("width"); - + for(int i = 0; i < count; i++) { - + ParticleRocketFlame fx = new ParticleRocketFlame(man, world, x + rand.nextGaussian() * width, y, z + rand.nextGaussian() * width); fx.motionY = -0.75 + rand.nextDouble() * 0.5; Minecraft.getMinecraft().effectRenderer.addEffect(fx); } } - + if("meteor".equals(mode)) { - + if(Vec3.createVectorHelper(player.posX - x, player.posY - y, player.posZ - z).lengthVector() > 350) return; - + int count = Math.max(1, data.getInteger("count")); double width = data.getDouble("width"); - + for(int i = 0; i < count; i++) { - + ParticleRocketFlame fx = new ParticleRocketFlame(man, world, x + rand.nextGaussian() * width, y + rand.nextGaussian() * width, z + rand.nextGaussian() * width); Minecraft.getMinecraft().effectRenderer.addEffect(fx); } } } - + if("fireworks".equals(type)) { int color = data.getInteger("color"); char c = (char)data.getInteger("char"); - + ParticleLetter fx = new ParticleLetter(world, x, y, z, color, c); Minecraft.getMinecraft().effectRenderer.addEffect(fx); - + for(int i = 0; i < 50; i++) { EntityFireworkSparkFX blast = new EntityFireworkSparkFX(world, x, y, z, 0.4 * world.rand.nextGaussian(), @@ -1185,17 +1108,17 @@ public class ClientProxy extends ServerProxy { Minecraft.getMinecraft().effectRenderer.addEffect(blast); } } - + if("vanillaburst".equals(type)) { - + double motion = data.getDouble("motion"); - + for(int i = 0; i < data.getInteger("count"); i++) { double mX = rand.nextGaussian() * motion; double mY = rand.nextGaussian() * motion; double mZ = rand.nextGaussian() * motion; - + EntityFX fx = null; if("flame".equals(data.getString("mode"))) { @@ -1222,23 +1145,23 @@ public class ClientProxy extends ServerProxy { } if("blockdust".equals(data.getString("mode"))) { - + Block b = Block.getBlockById(data.getInteger("block")); fx = new net.minecraft.client.particle.EntityBlockDustFX(world, x, y, z, mX, mY + 0.2, mZ, b, 0); ReflectionHelper.setPrivateValue(EntityFX.class, fx, 50 + rand.nextInt(50), "particleMaxAge", "field_70547_e"); } - + if(fx != null) Minecraft.getMinecraft().effectRenderer.addEffect(fx); } } - + if("vanillaExt".equals(type)) { double mX = data.getDouble("mX"); double mY = data.getDouble("mY"); double mZ = data.getDouble("mZ"); - + EntityFX fx = null; if("flame".equals(data.getString("mode"))) { @@ -1262,7 +1185,7 @@ public class ClientProxy extends ServerProxy { if("cloud".equals(data.getString("mode"))) { fx = new net.minecraft.client.particle.EntityCloudFX(world, x, y, z, mX, mY, mZ); - + if(data.hasKey("r")) { float rng = rand.nextFloat() * 0.1F; fx.setRBGColorF(data.getFloat("r") + rng, data.getFloat("g") + rng, data.getFloat("b") + rng); @@ -1290,12 +1213,12 @@ public class ClientProxy extends ServerProxy { } if("largeexplode".equals(data.getString("mode"))) { - - + + fx = new net.minecraft.client.particle.EntityLargeExplodeFX(man, world, x, y, z, data.getFloat("size"), 0.0F, 0.0F); float r = 1.0F - rand.nextFloat() * 0.2F; fx.setRBGColorF(1F * r, 0.9F * r, 0.5F * r); - + for(int i = 0; i < data.getByte("count"); i++) { net.minecraft.client.particle.EntityExplodeFX sec = new net.minecraft.client.particle.EntityExplodeFX(world, x, y, z, 0.0F, 0.0F, 0.0F); float r2 = 1.0F - rand.nextFloat() * 0.5F; @@ -1313,34 +1236,34 @@ public class ClientProxy extends ServerProxy { } if("blockdust".equals(data.getString("mode"))) { - + Block b = Block.getBlockById(data.getInteger("block")); fx = new net.minecraft.client.particle.EntityBlockDustFX(world, x, y, z, mX, mY + 0.2, mZ, b, 0); ReflectionHelper.setPrivateValue(EntityFX.class, fx, 10 + rand.nextInt(20), "particleMaxAge", "field_70547_e"); } if("colordust".equals(data.getString("mode"))) { - + Block b = Blocks.wool; fx = new net.minecraft.client.particle.EntityBlockDustFX(world, x, y, z, mX, mY + 0.2, mZ, b, 0); fx.setRBGColorF(data.getFloat("r"), data.getFloat("g"), data.getFloat("b")); ReflectionHelper.setPrivateValue(EntityFX.class, fx, 10 + rand.nextInt(20), "particleMaxAge", "field_70547_e"); } - + if(fx != null) { - + if(data.getBoolean("noclip")) { fx.noClip = true; } - + if(data.getInteger("overrideAge") > 0) { ReflectionHelper.setPrivateValue(EntityFX.class, fx, data.getInteger("overrideAge"), "particleMaxAge", "field_70547_e"); } - + Minecraft.getMinecraft().effectRenderer.addEffect(fx); } } - + if("vanilla".equals(type)) { double mX = data.getDouble("mX"); @@ -1348,41 +1271,41 @@ public class ClientProxy extends ServerProxy { double mZ = data.getDouble("mZ"); world.spawnParticle(data.getString("mode"), x, y, z, mX, mY, mZ); } - + if("jetpack".equals(type)) { - + if(particleSetting == 2) return; - + Entity ent = world.getEntityByID(data.getInteger("player")); - + if(ent instanceof EntityPlayer) { - + EntityPlayer p = (EntityPlayer)ent; - + Vec3 vec = Vec3.createVectorHelper(0, 0, -0.25); Vec3 offset = Vec3.createVectorHelper(0.125, 0, 0); float angle = (float) -Math.toRadians(p.rotationYawHead - (p.rotationYawHead - p.renderYawOffset)); vec.rotateAroundY(angle); offset.rotateAroundY(angle); - + double ix = p.posX + vec.xCoord; double iy = p.posY + p.eyeHeight - 1; double iz = p.posZ + vec.zCoord; double ox = offset.xCoord; double oz = offset.zCoord; - + double moX = 0; double moY = 0; double moZ = 0; - + int mode = data.getInteger("mode"); - + if(mode == 0) { moY -= 0.2; } - + if(mode == 1) { Vec3 look = p.getLookVec(); @@ -1397,15 +1320,15 @@ public class ClientProxy extends ServerProxy { thrust = thrust.normalize(); Vec3 target = pos.addVector(thrust.xCoord * 10, thrust.yCoord * 10, thrust.zCoord * 10); MovingObjectPosition mop = player.worldObj.func_147447_a(pos, target, false, false, true); - + if(mop != null && mop.typeOfHit == MovingObjectType.BLOCK && mop.sideHit == 1) { - + Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ); int meta = world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ); - + Vec3 delta = Vec3.createVectorHelper(ix - mop.hitVec.xCoord, iy - mop.hitVec.yCoord, iz - mop.hitVec.zCoord); Vec3 vel = Vec3.createVectorHelper(0.75 - delta.lengthVector() * 0.075, 0, 0); - + for(int i = 0; i < (10 - delta.lengthVector()); i++) { vel.rotateAroundY(world.rand.nextFloat() * (float)Math.PI * 2F); Minecraft.getMinecraft().effectRenderer.addEffect(new EntityBlockDustFX(world, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.1, mop.hitVec.zCoord, vel.xCoord, 0.1, vel.zCoord, b, meta)); @@ -1422,50 +1345,50 @@ public class ClientProxy extends ServerProxy { Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix + ox, iy, iz + oz, mX2, mY2, mZ2)); Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix - ox, iy, iz - oz, mX2, mY2, mZ2)); - + if(particleSetting == 0) { Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix + ox, iy, iz + oz, mX3, mY3, mZ3)); Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix - ox, iy, iz - oz, mX3, mY3, mZ3)); } } } - + if("bnuuy".equals(type)) { - + if(particleSetting == 2) return; - + Entity ent = world.getEntityByID(data.getInteger("player")); - + if(ent instanceof EntityPlayer) { - + EntityPlayer p = (EntityPlayer)ent; - + Vec3 vec = Vec3.createVectorHelper(0, 0, -0.6); Vec3 offset = Vec3.createVectorHelper(0.275, 0, 0); float angle = (float) -Math.toRadians(p.rotationYawHead - (p.rotationYawHead - p.renderYawOffset)); vec.rotateAroundY(angle); offset.rotateAroundY(angle); - + double ix = p.posX + vec.xCoord; double iy = p.posY + p.eyeHeight - 1 + 0.4; double iz = p.posZ + vec.zCoord; double ox = offset.xCoord; double oz = offset.zCoord; - + if(player.isSneaking()) { iy += 0.25; } - + vec = vec.normalize(); double mult = 0.025D; double mX = vec.xCoord * mult; double mZ = vec.zCoord * mult; - + //Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix + ox, iy, iz + oz, 0, 0, 0)); //Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix - ox, iy, iz - oz, 0, 0, 0)); - + for(int i = 0; i < 2; i++) { net.minecraft.client.particle.EntitySmokeFX fx = new net.minecraft.client.particle.EntitySmokeFX(world, ix + ox * (i == 0 ? -1 : 1), iy, iz + oz * (i == 0 ? -1 : 1), mX, 0, mZ); float scale = 0.5F; @@ -1474,25 +1397,25 @@ public class ClientProxy extends ServerProxy { } } } - + if("jetpack_bj".equals(type)) { - + if(particleSetting == 2) return; - + Entity ent = world.getEntityByID(data.getInteger("player")); - + if(ent instanceof EntityPlayer) { - + EntityPlayer p = (EntityPlayer)ent; - + Vec3 vec = Vec3.createVectorHelper(0, 0, -0.3125); Vec3 offset = Vec3.createVectorHelper(0.125, 0, 0); float angle = (float) -Math.toRadians(p.rotationYawHead - (p.rotationYawHead - p.renderYawOffset)); vec.rotateAroundY(angle); offset.rotateAroundY(angle); - + double ix = p.posX + vec.xCoord; double iy = p.posY + p.eyeHeight - 0.9375; double iz = p.posZ + vec.zCoord; @@ -1504,15 +1427,15 @@ public class ClientProxy extends ServerProxy { Vec3 thrust = Vec3.createVectorHelper(0, -1, 0); Vec3 target = pos.addVector(thrust.xCoord * 10, thrust.yCoord * 10, thrust.zCoord * 10); MovingObjectPosition mop = player.worldObj.func_147447_a(pos, target, false, false, true); - + if(mop != null && mop.typeOfHit == MovingObjectType.BLOCK && mop.sideHit == 1) { - + Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ); int meta = world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ); - + Vec3 delta = Vec3.createVectorHelper(ix - mop.hitVec.xCoord, iy - mop.hitVec.yCoord, iz - mop.hitVec.zCoord); Vec3 vel = Vec3.createVectorHelper(0.75 - delta.lengthVector() * 0.075, 0, 0); - + for(int i = 0; i < (10 - delta.lengthVector()); i++) { vel.rotateAroundY(world.rand.nextFloat() * (float)Math.PI * 2F); Minecraft.getMinecraft().effectRenderer.addEffect(new EntityBlockDustFX(world, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.1, mop.hitVec.zCoord, vel.xCoord, 0.1, vel.zCoord, b, meta)); @@ -1528,23 +1451,23 @@ public class ClientProxy extends ServerProxy { Minecraft.getMinecraft().effectRenderer.addEffect(dust2); } } - + if("jetpack_dns".equals(type)) { - + if(particleSetting == 2) return; - + Entity ent = world.getEntityByID(data.getInteger("player")); - + if(ent instanceof EntityPlayer) { - + EntityPlayer p = (EntityPlayer)ent; - + Vec3 offset = Vec3.createVectorHelper(0.125, 0, 0); float angle = (float) -Math.toRadians(p.rotationYawHead - (p.rotationYawHead - p.renderYawOffset)); offset.rotateAroundY(angle); - + double ix = p.posX; double iy = p.posY - p.getYOffset() - 0.5D; double iz = p.posZ; @@ -1556,15 +1479,15 @@ public class ClientProxy extends ServerProxy { Vec3 thrust = Vec3.createVectorHelper(0, -1, 0); Vec3 target = pos.addVector(thrust.xCoord * 10, thrust.yCoord * 10, thrust.zCoord * 10); MovingObjectPosition mop = player.worldObj.func_147447_a(pos, target, false, false, true); - + if(mop != null && mop.typeOfHit == MovingObjectType.BLOCK && mop.sideHit == 1) { - + Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ); int meta = world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ); - + Vec3 delta = Vec3.createVectorHelper(ix - mop.hitVec.xCoord, iy - mop.hitVec.yCoord, iz - mop.hitVec.zCoord); Vec3 vel = Vec3.createVectorHelper(0.75 - delta.lengthVector() * 0.075, 0, 0); - + for(int i = 0; i < (10 - delta.lengthVector()); i++) { vel.rotateAroundY(world.rand.nextFloat() * (float)Math.PI * 2F); Minecraft.getMinecraft().effectRenderer.addEffect(new EntityBlockDustFX(world, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.1, mop.hitVec.zCoord, vel.xCoord, 0.1, vel.zCoord, b, meta)); @@ -1580,7 +1503,7 @@ public class ClientProxy extends ServerProxy { Minecraft.getMinecraft().effectRenderer.addEffect(dust2); } } - + if("muke".equals(type)) { ParticleMukeWave wave = new ParticleMukeWave(man, world, x, y, z); @@ -1596,12 +1519,12 @@ public class ClientProxy extends ServerProxy { player.maxHurtTime = 15; player.attackedAtYaw = 0F; } - + if("tinytot".equals(type)) { ParticleMukeWave wave = new ParticleMukeWave(man, world, x, y, z); Minecraft.getMinecraft().effectRenderer.addEffect(wave); - + for(double d = 0.0D; d <= 1.6D; d += 0.1) { ParticleMukeCloud cloud = new ParticleMukeCloud(man, world, x, y, z, rand.nextGaussian() * 0.05, d + rand.nextGaussian() * 0.02, rand.nextGaussian() * 0.05); Minecraft.getMinecraft().effectRenderer.addEffect(cloud); @@ -1613,14 +1536,14 @@ public class ClientProxy extends ServerProxy { for(int i = 0; i < 15; i++) { double ix = rand.nextGaussian() * 0.2; double iz = rand.nextGaussian() * 0.2; - + if(ix * ix + iz * iz > 0.75) { ix *= 0.5; iz *= 0.5; } - + double iy = 1.6 + (rand.nextDouble() * 2 - 1) * (0.75 - (ix * ix + iz * iz)) * 0.5; - + ParticleMukeCloud cloud = new ParticleMukeCloud(man, world, x, y, z, ix, iy + rand.nextGaussian() * 0.02, iz); Minecraft.getMinecraft().effectRenderer.addEffect(cloud); } @@ -1628,89 +1551,94 @@ public class ClientProxy extends ServerProxy { player.maxHurtTime = 15; player.attackedAtYaw = 0F; } - + if("ufo".equals(type)) { double motion = data.getDouble("motion"); ParticleMukeCloud cloud = new ParticleMukeCloud(man, world, x, y, z, rand.nextGaussian() * motion, 0, rand.nextGaussian() * motion); Minecraft.getMinecraft().effectRenderer.addEffect(cloud); } - + + if("bf".equals(type)) { + ParticleMukeCloud cloud = new ParticleMukeCloudBF(man, world, x, y, z, 0, 0, 0); + Minecraft.getMinecraft().effectRenderer.addEffect(cloud); + } + if("haze".equals(type)) { ParticleHaze fog = new ParticleHaze(man, world, x, y, z); Minecraft.getMinecraft().effectRenderer.addEffect(fog); } - + if("plasmablast".equals(type)) { - + ParticlePlasmaBlast cloud = new ParticlePlasmaBlast(man, world, x, y, z, data.getFloat("r"), data.getFloat("g"), data.getFloat("b"), data.getFloat("pitch"), data.getFloat("yaw")); cloud.setScale(data.getFloat("scale")); Minecraft.getMinecraft().effectRenderer.addEffect(cloud); } - + if("justTilt".equals(type)) { - + player.hurtTime = player.maxHurtTime = data.getInteger("time"); player.attackedAtYaw = 0F; } - + if("properJolt".equals(type)) { - + player.hurtTime = data.getInteger("time"); player.maxHurtTime = data.getInteger("maxTime"); player.attackedAtYaw = 0F; } - + if("sweat".equals(type)) { - + Entity e = world.getEntityByID(data.getInteger("entity")); Block b = Block.getBlockById(data.getInteger("block")); int meta = data.getInteger("meta"); - + if(e instanceof EntityLivingBase) { - + for(int i = 0; i < data.getInteger("count"); i++) { - + double ix = e.boundingBox.minX - 0.2 + (e.boundingBox.maxX - e.boundingBox.minX + 0.4) * rand.nextDouble(); double iy = e.boundingBox.minY + (e.boundingBox.maxY - e.boundingBox.minY + 0.2) * rand.nextDouble(); double iz = e.boundingBox.minZ - 0.2 + (e.boundingBox.maxZ - e.boundingBox.minZ + 0.4) * rand.nextDouble(); - - + + EntityFX fx = new net.minecraft.client.particle.EntityBlockDustFX(world, ix, iy, iz, 0, 0, 0, b, meta); ReflectionHelper.setPrivateValue(EntityFX.class, fx, 150 + rand.nextInt(50), "particleMaxAge", "field_70547_e"); - + Minecraft.getMinecraft().effectRenderer.addEffect(fx); } } } - + if("vomit".equals(type)) { - + Entity e = world.getEntityByID(data.getInteger("entity")); int count = data.getInteger("count") / (particleSetting + 1); - + if(e instanceof EntityLivingBase) { double ix = e.posX; double iy = e.posY - e.getYOffset() + e.getEyeHeight() + (e instanceof EntityPlayer ? 1 : 0); double iz = e.posZ; - + Vec3 vec = e.getLookVec(); - + for(int i = 0; i < count; i++) { - + if("normal".equals(data.getString("mode"))) { EntityFX fx = new net.minecraft.client.particle.EntityBlockDustFX(world, ix, iy, iz, (vec.xCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.yCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.zCoord + rand.nextGaussian() * 0.2) * 0.2, Blocks.stained_hardened_clay, (rand.nextBoolean() ? 5 : 13)); ReflectionHelper.setPrivateValue(EntityFX.class, fx, 150 + rand.nextInt(50), "particleMaxAge", "field_70547_e"); Minecraft.getMinecraft().effectRenderer.addEffect(fx); } - + if("blood".equals(data.getString("mode"))) { EntityFX fx = new net.minecraft.client.particle.EntityBlockDustFX(world, ix, iy, iz, (vec.xCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.yCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.zCoord + rand.nextGaussian() * 0.2) * 0.2, Blocks.redstone_block, 0); ReflectionHelper.setPrivateValue(EntityFX.class, fx, 150 + rand.nextInt(50), "particleMaxAge", "field_70547_e"); Minecraft.getMinecraft().effectRenderer.addEffect(fx); } - + if("smoke".equals(data.getString("mode"))) { EntityFX fx = new net.minecraft.client.particle.EntitySmokeFX(world, ix, iy, iz, (vec.xCoord + rand.nextGaussian() * 0.1) * 0.05, (vec.yCoord + rand.nextGaussian() * 0.1) * 0.05, (vec.zCoord + rand.nextGaussian() * 0.1) * 0.05, 0.2F); ReflectionHelper.setPrivateValue(EntityFX.class, fx, 10 + rand.nextInt(10), "particleMaxAge", "field_70547_e"); @@ -1719,50 +1647,50 @@ public class ClientProxy extends ServerProxy { } } } - + if("radiation".equals(type)) { - + for(int i = 0; i < data.getInteger("count"); i++) { - + EntityAuraFX flash = new EntityAuraFX(world, player.posX + rand.nextGaussian() * 4, player.posY + rand.nextGaussian() * 2, player.posZ + rand.nextGaussian() * 4, 0, 0, 0); - + flash.setRBGColorF(0F, 0.75F, 1F); flash.setVelocity(rand.nextGaussian(), rand.nextGaussian(), rand.nextGaussian()); Minecraft.getMinecraft().effectRenderer.addEffect(flash); } } - + if("schrabfog".equals(type)) { - + EntityAuraFX flash = new EntityAuraFX(world, x, y, z, 0, 0, 0); flash.setRBGColorF(0F, 1F, 1F); Minecraft.getMinecraft().effectRenderer.addEffect(flash); } - + if("hadron".equals(type)) { - + Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleHadron(man, world, x, y, z)); } - + if("rift".equals(type)) { - + Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRift(man, world, x, y, z)); } - + if("rbmkflame".equals(type)) { int maxAge = data.getInteger("maxAge"); Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRBMKFlame(man, world, x, y, z, maxAge)); } - + if("rbmkmush".equals(type)) { float scale = data.getFloat("scale"); Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleRBMKMush(man, world, x, y, z, scale)); } - + if("tower".equals(type)) { if(particleSetting == 0 || (particleSetting == 1 && rand.nextBoolean())) { ParticleCoolingTower fx = new ParticleCoolingTower(man, world, x, y, z); @@ -1773,178 +1701,178 @@ public class ClientProxy extends ServerProxy { if(data.hasKey("noWind")) fx.noWind(); if(data.hasKey("strafe")) fx.setStrafe(data.getFloat("strafe")); if(data.hasKey("alpha")) fx.alphaMod(data.getFloat("alpha")); - + if(data.hasKey("color")) { Color color = new Color(data.getInteger("color")); fx.setRBGColorF(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); } - + Minecraft.getMinecraft().effectRenderer.addEffect(fx); } } - + if("splash".equals(type)) { if(particleSetting == 0 || (particleSetting == 1 && rand.nextBoolean())) { ParticleSplash fx = new ParticleSplash(man, world, x, y, z); - + if(data.hasKey("color")) { Color color = new Color(data.getInteger("color")); float f = 1F - rand.nextFloat() * 0.2F; fx.setRBGColorF(color.getRed() / 255F * f, color.getGreen() / 255F * f, color.getBlue() / 255F * f); } - + Minecraft.getMinecraft().effectRenderer.addEffect(fx); } } - + if("deadleaf".equals(type)) { if(particleSetting == 0 || (particleSetting == 1 && rand.nextBoolean())) Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleDeadLeaf(man, world, x, y, z)); } - + if("anim".equals(type)) { - + String mode = data.getString("mode"); - + /* crucible deploy */ if("crucible".equals(mode) && player.getHeldItem() != null) { - + BusAnimation animation = new BusAnimation() .addBus("GUARD_ROT", new BusAnimationSequence() - .addKeyframePosition(90, 0, 1, 0) - .addKeyframePosition(90, 0, 1, 800) - .addKeyframePosition(0, 0, 1, 50)); - - HbmAnimations.hotbar[player.inventory.currentItem] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation); + .addPos(90, 0, 1, 0) + .addPos(90, 0, 1, 800) + .addPos(0, 0, 1, 50)); + + HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation); } - + /* crucible swing */ if("cSwing".equals(mode)) { - + if(HbmAnimations.getRelevantTransformation("SWING_ROT")[0] == 0) { - + int offset = rand.nextInt(80) - 20; - + BusAnimation animation = new BusAnimation() .addBus("SWING_ROT", new BusAnimationSequence() - .addKeyframePosition(90 - offset, 90 - offset, 35, 75) - .addKeyframePosition(90 + offset, 90 - offset, -45, 150) - .addKeyframePosition(0, 0, 0, 500)) + .addPos(90 - offset, 90 - offset, 35, 75) + .addPos(90 + offset, 90 - offset, -45, 150) + .addPos(0, 0, 0, 500)) .addBus("SWING_TRANS", new BusAnimationSequence() - .addKeyframePosition(-3, 0, 0, 75) - .addKeyframePosition(8, 0, 0, 150) - .addKeyframePosition(0, 0, 0, 500)); + .addPos(-3, 0, 0, 75) + .addPos(8, 0, 0, 150) + .addPos(0, 0, 0, 500)); Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("hbm:weapon.cSwing"), 0.8F + player.getRNG().nextFloat() * 0.2F)); - - HbmAnimations.hotbar[player.inventory.currentItem] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation); + + HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation); } } - + /* chainsaw swing */ if("sSwing".equals(mode) || "lSwing".equals(mode)) { //temp for lance int forward = 150; int sideways = 100; int retire = 200; - + if(HbmAnimations.getRelevantAnim() == null) { - + BusAnimation animation = new BusAnimation() .addBus("SWING_ROT", new BusAnimationSequence() - .addKeyframePosition(0, 0, 90, forward) - .addKeyframePosition(45, 0, 90, sideways) - .addKeyframePosition(0, 0, 0, retire)) + .addPos(0, 0, 90, forward) + .addPos(45, 0, 90, sideways) + .addPos(0, 0, 0, retire)) .addBus("SWING_TRANS", new BusAnimationSequence() - .addKeyframePosition(0, 0, 3, forward) - .addKeyframePosition(2, 0, 2, sideways) - .addKeyframePosition(0, 0, 0, retire)); + .addPos(0, 0, 3, forward) + .addPos(2, 0, 2, sideways) + .addPos(0, 0, 0, retire)); + + + HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation); - - HbmAnimations.hotbar[player.inventory.currentItem] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation); - } else { double[] rot = HbmAnimations.getRelevantTransformation("SWING_ROT"); double[] trans = HbmAnimations.getRelevantTransformation("SWING_TRANS"); - + if(System.currentTimeMillis() - HbmAnimations.getRelevantAnim().startMillis < 50) return; - + BusAnimation animation = new BusAnimation() .addBus("SWING_ROT", new BusAnimationSequence() - .addKeyframePosition(rot[0], rot[1], rot[2], 0) - .addKeyframePosition(0, 0, 90, forward) - .addKeyframePosition(45, 0, 90, sideways) - .addKeyframePosition(0, 0, 0, retire)) + .addPos(rot[0], rot[1], rot[2], 0) + .addPos(0, 0, 90, forward) + .addPos(45, 0, 90, sideways) + .addPos(0, 0, 0, retire)) .addBus("SWING_TRANS", new BusAnimationSequence() - .addKeyframePosition(trans[0], trans[1], trans[2], 0) - .addKeyframePosition(0, 0, 3, forward) - .addKeyframePosition(2, 0, 2, sideways) - .addKeyframePosition(0, 0, 0, retire)); - - HbmAnimations.hotbar[player.inventory.currentItem] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation); + .addPos(trans[0], trans[1], trans[2], 0) + .addPos(0, 0, 3, forward) + .addPos(2, 0, 2, sideways) + .addPos(0, 0, 0, retire)); + + HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation); } } - + if("generic".equals(mode)) { ItemStack stack = player.getHeldItem(); - + if(stack != null && stack.getItem() instanceof IAnimatedItem) { IAnimatedItem item = (IAnimatedItem) stack.getItem(); BusAnimation anim = item.getAnimation(data, stack); - + if(anim != null) { - HbmAnimations.hotbar[player.inventory.currentItem] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), anim); + HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), anim); } } } } - + if("tau".equals(type)) { - + for(int i = 0; i < data.getByte("count"); i++) Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleSpark(world, x, y, z, rand.nextGaussian() * 0.05, 0.05, rand.nextGaussian() * 0.05)); Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleHadron(man, world, x, y, z)); } - + if("vanish".equals(type)) { int ent = data.getInteger("ent"); this.vanish(ent); } - + if("giblets".equals(type)) { int ent = data.getInteger("ent"); this.vanish(ent); Entity e = world.getEntityByID(ent); - + if(e == null) return; - + float width = e.width; float height = e.height; int gW = (int)(width / 0.25F); int gH = (int)(height / 0.25F); - + int count = (int) (gW * 1.5 * gH); - + if(data.hasKey("cDiv")) count = (int) Math.ceil(count / (double)data.getInteger("cDiv")); - + boolean blowMeIntoTheGodDamnStratosphere = rand.nextInt(15) == 0; double mult = 1D; - + if(blowMeIntoTheGodDamnStratosphere) mult *= 10; - + for(int i = 0; i < count; i++) { Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleGiblet(man, world, x, y, z, rand.nextGaussian() * 0.25 * mult, rand.nextDouble() * mult, rand.nextGaussian() * 0.25 * mult)); } } - + if("amat".equals(type)) { Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleAmatFlash(world, x, y, z, data.getFloat("scale"))); } - + if("debug".equals(type)) { String t = data.getString("text"); int color = data.getInteger("color"); @@ -1953,7 +1881,7 @@ public class ClientProxy extends ServerProxy { text.multipleParticleScaleBy(scale); Minecraft.getMinecraft().effectRenderer.addEffect(text); } - + if("debugline".equals(type)) { double mX = data.getDouble("mX"); double mY = data.getDouble("mY"); @@ -1962,10 +1890,10 @@ public class ClientProxy extends ServerProxy { ParticleDebugLine text = new ParticleDebugLine(world, x, y, z, mX, mY, mZ, color); Minecraft.getMinecraft().effectRenderer.addEffect(text); } - + if("debugdrone".equals(type)) { Item held = player.getHeldItem() == null ? null : player.getHeldItem().getItem(); - + if(held == ModItems.drone || held == Item.getItemFromBlock(ModBlocks.drone_crate_provider) || held == Item.getItemFromBlock(ModBlocks.drone_crate_requester) || @@ -1981,7 +1909,7 @@ public class ClientProxy extends ServerProxy { Minecraft.getMinecraft().effectRenderer.addEffect(text); } } - + if("network".equals(type)) { ParticleDebug debug = null; double mX = data.getDouble("mX"); @@ -1997,7 +1925,7 @@ public class ClientProxy extends ServerProxy { } Minecraft.getMinecraft().effectRenderer.addEffect(debug); } - + if("gasfire".equals(type)) { double mX = data.getDouble("mX"); double mY = data.getDouble("mY"); @@ -2006,38 +1934,38 @@ public class ClientProxy extends ServerProxy { ParticleGasFlame text = new ParticleGasFlame(world, x, y, z, mX, mY, mZ, scale > 0 ? scale : 6.5F); Minecraft.getMinecraft().effectRenderer.addEffect(text); } - + if("marker".equals(type)) { int color = data.getInteger("color"); String label = data.getString("label"); int expires = data.getInteger("expires"); double dist = data.getDouble("dist"); - + RenderOverhead.queuedMarkers.put(new BlockPos(x, y, z), new Marker(color).setDist(dist).setExpire(expires > 0 ? System.currentTimeMillis() + expires : 0).withLabel(label.isEmpty() ? null : label)); } - + if("casing".equals(type)) { CasingEjector ejector = CasingEjector.fromId(data.getInteger("ej")); if(ejector == null) return; SpentCasing casingConfig = SpentCasing.fromName((data.getString("name"))); if(casingConfig == null) return; - + for(int i = 0; i < ejector.getAmount(); i++) { ejector.spawnCasing(man, casingConfig, world, x, y, z, data.getFloat("pitch"), data.getFloat("yaw"), data.getBoolean("crouched")); } } - + if("foundry".equals(type)) { int color = data.getInteger("color"); byte dir = data.getByte("dir"); float length = data.getFloat("len"); float base = data.getFloat("base"); float offset = data.getFloat("off"); - + ParticleFoundry sploosh = new ParticleFoundry(man, world, x, y, z, color, dir, length, base, offset); Minecraft.getMinecraft().effectRenderer.addEffect(sploosh); } - + if("frozen".equals(type)) { player.motionX = 0; player.motionZ = 0; @@ -2046,35 +1974,28 @@ public class ClientProxy extends ServerProxy { player.moveStrafing = 0; } } - - private HashMap vanished = new HashMap(); - - public void vanish(int ent) { - vanished.put(ent, System.currentTimeMillis() + 2000); - } - + + private static HashMap vanished = new HashMap(); + public static void vanish(int ent) { vanished.put(ent, System.currentTimeMillis() + 2000); } + public static void vanish(int ent, int duration) { vanished.put(ent, System.currentTimeMillis() + duration); } + @Override public boolean isVanished(Entity e) { - - if(e == null) - return false; - - if(!this.vanished.containsKey(e.getEntityId())) - return false; - + if(e == null) return false; + if(!this.vanished.containsKey(e.getEntityId())) return false; return this.vanished.get(e.getEntityId()) > System.currentTimeMillis(); } - + @Override public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float range, float pitch) { - + AudioWrapperClient audio = new AudioWrapperClient(new ResourceLocation(sound)); audio.updatePosition(x, y, z); audio.updateVolume(volume); audio.updateRange(range); return audio; } - + @Override public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float range, float pitch, int keepAlive) { AudioWrapper audio = getLoopedSound(sound, x, y, z, volume, range, pitch); @@ -2084,10 +2005,10 @@ public class ClientProxy extends ServerProxy { @Override public void playSound(String sound, Object data) { } - + @Override public void displayTooltip(String msg, int time, int id) { - + if(id != 0) this.theInfoSystem.push(new InfoEntry(msg, time), id); else @@ -2109,8 +2030,13 @@ public class ClientProxy extends ServerProxy { case CRANE_LEFT: return HbmKeybinds.craneLeftKey.getIsKeyPressed(); case CRANE_RIGHT: return HbmKeybinds.craneRightKey.getIsKeyPressed(); case CRANE_LOAD: return HbmKeybinds.craneLoadKey.getIsKeyPressed(); + case TOOL_ALT: return HbmKeybinds.copyToolAlt.getIsKeyPressed(); + case TOOL_CTRL: return HbmKeybinds.copyToolCtrl.getIsKeyPressed(); + case GUN_PRIMARY: return HbmKeybinds.gunPrimaryKey.getIsKeyPressed(); + case GUN_SECONDARY: return HbmKeybinds.gunSecondaryKey.getIsKeyPressed(); + case GUN_TERTIARY: return HbmKeybinds.gunTertiaryKey.getIsKeyPressed(); } - + return false; } @@ -2118,17 +2044,17 @@ public class ClientProxy extends ServerProxy { public EntityPlayer me() { return Minecraft.getMinecraft().thePlayer; } - + @Override public void openLink(String url) { try { Desktop.getDesktop().browse(new URI(url)); } catch (Exception e) { } } - + @Override public List getSubItems(ItemStack stack) { - + List list = new ArrayList(); stack.getItem().getSubItems(stack.getItem(), stack.getItem().getCreativeTab(), list); for(ItemStack sta : list) { @@ -2162,7 +2088,7 @@ public class ClientProxy extends ServerProxy { Language lang = Minecraft.getMinecraft().getLanguageManager().getCurrentLanguage(); return lang.getLanguageCode(); } - + @Override public int getStackColor(ItemStack stack, boolean amplify) { if(stack == null) return 0x000000; diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index b279cb7a2..7b59c3c46 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -1,8 +1,5 @@ package com.hbm.main; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.BlockEnums.DecoCabinetEnum; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockConcreteColoredExt.EnumConcreteType; @@ -22,8 +19,6 @@ import com.hbm.inventory.material.NTMMaterial; import static com.hbm.inventory.OreDictManager.*; import com.hbm.items.ModItems; -import com.hbm.items.ItemAmmoEnums.Ammo50BMG; -import com.hbm.items.ItemAmmoEnums.Ammo5mm; import com.hbm.items.ItemEnums.EnumLegendaryType; import com.hbm.items.ItemEnums.EnumPages; import com.hbm.items.ItemEnums.EnumPlantType; @@ -37,10 +32,9 @@ import com.hbm.items.special.ItemHolotapeImage.EnumHoloImage; import com.hbm.items.special.ItemPlasticScrap.ScrapType; import com.hbm.items.tool.ItemDrone.EnumDroneType; import com.hbm.items.tool.ItemGuideBook.BookType; -import com.hbm.util.EnchantmentUtil; - +import cpw.mods.fml.common.Loader; +import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.block.Block; -import net.minecraft.enchantment.Enchantment; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; @@ -50,16 +44,17 @@ import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.RecipeSorter; import net.minecraftforge.oredict.ShapedOreRecipe; import net.minecraftforge.oredict.ShapelessOreRecipe; -import cpw.mods.fml.common.Loader; -import cpw.mods.fml.common.registry.GameRegistry; + +import java.util.ArrayList; +import java.util.List; public class CraftingManager { - + public static void mainRegistry() { - + AddCraftingRec(); SmeltingRecipes.AddSmeltingRec(); - + MineralRecipes.register(); RodRecipes.register(); ToolRecipes.register(); @@ -67,18 +62,19 @@ public class CraftingManager { WeaponRecipes.register(); ConsumableRecipes.register(); PowderRecipes.register(); - + GameRegistry.addRecipe(new RBMKFuelCraftingHandler()); GameRegistry.addRecipe(new MKUCraftingHandler()); GameRegistry.addRecipe(new ToolboxCraftingHandler()); GameRegistry.addRecipe(new CargoShellCraftingHandler()); GameRegistry.addRecipe(new ScrapsCraftingHandler()); - + RecipeSorter.register("hbm:rbmk", RBMKFuelCraftingHandler.class, RecipeSorter.Category.SHAPELESS, "after:minecraft:shapeless"); RecipeSorter.register("hbm:toolbox", ToolboxCraftingHandler.class, RecipeSorter.Category.SHAPELESS, "after:minecraft:shapeless"); RecipeSorter.register("hbm:cargo", CargoShellCraftingHandler.class, RecipeSorter.Category.SHAPELESS, "after:minecraft:shapeless"); RecipeSorter.register("hbm:scraps", ScrapsCraftingHandler.class, RecipeSorter.Category.SHAPELESS, "after:minecraft:shapeless"); RecipeSorter.register("hbm:mku", MKUCraftingHandler.class, RecipeSorter.Category.SHAPED, "after:minecraft:shaped before:minecraft:shapeless"); + RecipeSorter.register("hbm:containerupgrade", ContainerUpgradeCraftingHandler.class, RecipeSorter.Category.SHAPED, "after:minecraft:shaped before:minecraft:shapeless"); } public static void AddCraftingRec() { @@ -89,7 +85,7 @@ public class CraftingManager { for(Object[] array : BlockGenericStairs.recipeGen) { addRecipeAuto(new ItemStack((Block) array[2], 4), new Object[] { "# ", "## ", "###", '#', new ItemStack((Block) array[0], 1, (int) array[1]) }); } - + addRecipeAuto(new ItemStack(ModItems.redstone_sword, 1), new Object[] { "R", "R", "S", 'R', REDSTONE.block(), 'S', KEY_STICK }); addRecipeAuto(new ItemStack(ModItems.big_sword, 1), new Object[] { "QIQ", "QIQ", "GSG", 'G', Items.gold_ingot, 'S', KEY_STICK, 'I', Items.iron_ingot, 'Q', Items.quartz}); @@ -97,9 +93,6 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.hazmat_cloth_red, 1), new Object[] { "C", "R", "C", 'C', ModItems.hazmat_cloth, 'R', REDSTONE.dust() }); addRecipeAuto(new ItemStack(ModItems.hazmat_cloth_grey, 1), new Object[] { " P ", "ICI", " L ", 'C', ModItems.hazmat_cloth_red, 'P', IRON.plate(), 'L', PB.plate(), 'I', ANY_RUBBER.ingot() }); addRecipeAuto(new ItemStack(ModItems.asbestos_cloth, 8), new Object[] { "SCS", "CPC", "SCS", 'S', Items.string, 'P', BR.dust(), 'C', Blocks.wool }); - addRecipeAuto(Mats.MAT_TUNGSTEN.make(ModItems.bolt, 16), new Object[] { "D", "D", 'D', W.ingot()}); - addRecipeAuto(Mats.MAT_STEEL.make(ModItems.bolt, 16), new Object[] { "D", "D", 'D', STEEL.ingot()}); - addRecipeAuto(Mats.MAT_DURA.make(ModItems.bolt, 16), new Object[] { "D", "D", 'D', DURA.ingot()}); addRecipeAuto(new ItemStack(ModItems.bolt_spike, 2), new Object[] { "BB", "B ", "B ", 'B', STEEL.bolt()}); addRecipeAuto(new ItemStack(ModItems.pipes_steel, 1), new Object[] { "B", "B", "B", 'B', STEEL.block() }); addRecipeAuto(new ItemStack(ModItems.plate_polymer, 8), new Object[] { "DD", 'D', ANY_PLASTIC.ingot() }); @@ -128,9 +121,9 @@ public class CraftingManager { addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP_QUANTUM), new Object[] { "HHH", "SIS", "WWW", 'H', ANY_HARDPLASTIC.ingot(), 'S', BSCCO.wireDense(), 'I', ModItems.pellet_charged, 'W', GOLD.wireFine() }); addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER_CHASSIS), new Object[] { "PPP", "CBB", "PPP", 'P', ANY_PLASTIC.ingot(), 'C', ModItems.crt_display, 'B', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.PCB) }); addRecipeAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ATOMIC_CLOCK), new Object[] { "ICI", "CSC", "ICI", 'I', ModItems.plate_polymer, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), 'S', SR.dust() }); - + addRecipeAuto(new ItemStack(ModItems.crt_display, 4), new Object[] { " A ", "SGS", " T ", 'A', AL.dust(), 'S', STEEL.plate(), 'G', KEY_ANYPANE, 'T', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) }); - + addRecipeAuto(new ItemStack(ModItems.cell_empty, 6), new Object[] { " S ", "G G", " S ", 'S', STEEL.plate(), 'G', KEY_ANYPANE }); addRecipeAuto(new ItemStack(ModItems.cell_deuterium, 8), new Object[] { "DDD", "DTD", "DDD", 'D', ModItems.cell_empty, 'T', ModItems.mike_deut }); addRecipeAuto(new ItemStack(ModItems.particle_empty, 2), new Object[] { "STS", "G G", "STS", 'S', STEEL.plate(), 'T', W.ingot(), 'G', KEY_ANYPANE }); @@ -214,16 +207,6 @@ public class CraftingManager { addShapelessAuto(new ItemStack(Items.string, 3), new Object[] { DictFrame.fromOne(ModBlocks.plant_flower, EnumFlowerType.WEED) }); addRecipeAuto(new ItemStack(Items.paper, 3), new Object[] { "SSS", 'S', ModItems.powder_sawdust }); - ItemStack infinity = new ItemStack(Items.enchanted_book); - EnchantmentUtil.addEnchantment(infinity, Enchantment.infinity, 1); - addRecipeAuto(infinity, new Object[] { "SBS", "BDB", "SBS", 'S', ModItems.ammo_50bmg.stackFromEnum(Ammo50BMG.STAR), 'B', ModItems.ammo_5mm.stackFromEnum(Ammo5mm.STAR), 'D', ModItems.powder_magic }); - ItemStack unbreaking = new ItemStack(Items.enchanted_book); - EnchantmentUtil.addEnchantment(unbreaking, Enchantment.unbreaking, 3); - addRecipeAuto(unbreaking, new Object[] { "SBS", "BDB", "SBS", 'S', BIGMT.ingot(), 'B', ModItems.plate_armor_lunar, 'D', ModItems.powder_magic }); - ItemStack thorns = new ItemStack(Items.enchanted_book); - EnchantmentUtil.addEnchantment(thorns, Enchantment.thorns, 3); - addRecipeAuto(thorns, new Object[] { "SBS", "BDB", "SBS", 'S', ModBlocks.barbed_wire, 'B', ModBlocks.spikes, 'D', ModItems.powder_magic }); - addRecipeAuto(new ItemStack(ModItems.wrench, 1), new Object[] { " S ", " IS", "I ", 'S', STEEL.ingot(), 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModItems.wrench_flipped, 1), new Object[] { "S", "D", "W", 'S', Items.iron_sword, 'D', ModItems.ducttape, 'W', ModItems.wrench }); addRecipeAuto(new ItemStack(ModItems.memespoon, 1), new Object[] { "CGC", "PSP", "IAI", 'C', ModItems.powder_yellowcake, 'G', TH232.block(), 'P', ModItems.photo_panel, 'S', ModItems.steel_shovel, 'I', ModItems.plate_polymer, 'A', "ingotAustralium" }); @@ -237,7 +220,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.radio_torch_logic, 4), new Object[] { "G", "R", "I", 'G', "dustGlowstone", 'R', Blocks.redstone_torch, 'I', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP) }); addRecipeAuto(new ItemStack(ModBlocks.radio_torch_counter, 4), new Object[] { "G", "R", "I", 'G', "dustGlowstone", 'R', Blocks.redstone_torch, 'I', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) }); addRecipeAuto(new ItemStack(ModBlocks.radio_telex, 2), new Object[] { "SCR", "W#W", "WWW", 'S', ModBlocks.radio_torch_sender, 'C', ModItems.crt_display, 'R', ModBlocks.radio_torch_receiver, 'W', KEY_PLANKS, '#', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG) }); - + addRecipeAuto(new ItemStack(ModBlocks.conveyor, 16), new Object[] { "LLL", "I I", "LLL", 'L', Items.leather, 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.conveyor, 16), new Object[] { "RSR", "I I", "RSR", 'I', IRON.ingot(), 'R', DictFrame.fromOne(ModItems.plant_item, EnumPlantType.ROPE), 'S', IRON.plate() }); addRecipeAuto(new ItemStack(ModBlocks.conveyor, 64), new Object[] { "LLL", "I I", "LLL", 'L', ANY_RUBBER.ingot(), 'I', IRON.ingot() }); @@ -249,7 +232,6 @@ public class CraftingManager { //addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_difurnace_off), 1), new Object[] { "T T", "PHP", "TFT", 'T', W.ingot(), 'P', ModItems.board_copper, 'H', Blocks.hopper, 'F', Blocks.furnace }); addRecipeAuto(new ItemStack(ModBlocks.machine_difurnace_extension, 1), new Object[] { " C ", "BGB", "BGB", 'C', CU.plate(), 'B', ModItems.ingot_firebrick, 'G', ModBlocks.steel_grate }); - addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_nuke_furnace_off), 1), new Object[] { "SSS", "LFL", "CCC", 'S', STEEL.plate(), 'C', CU.plateCast(), 'L', PB.plate(), 'F', Item.getItemFromBlock(Blocks.furnace) }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_electric_furnace_off), 1), new Object[] { "BBB", "WFW", "RRR", 'B', BE.ingot(), 'R', ModItems.coil_tungsten, 'W', CU.plateCast(), 'F', Item.getItemFromBlock(Blocks.furnace) }); addRecipeAuto(new ItemStack(ModBlocks.red_wire_coated, 16), new Object[] { "WRW", "RIR", "WRW", 'W', ModItems.plate_polymer, 'I', MINGRADE.ingot(), 'R', MINGRADE.wireFine() }); addRecipeAuto(new ItemStack(ModBlocks.red_cable_paintable, 16), new Object[] { "WRW", "RIR", "WRW", 'W', STEEL.plate(), 'I', MINGRADE.ingot(), 'R', MINGRADE.wireFine() }); @@ -282,17 +264,22 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.crate_template, 1), new Object[] { "IPI", "P P", "IPI", 'I', IRON.ingot(), 'P', Items.paper }); addRecipeAuto(new ItemStack(ModBlocks.crate_iron, 1), new Object[] { "PPP", "I I", "III", 'P', IRON.plate(), 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.crate_steel, 1), new Object[] { "PPP", "I I", "III", 'P', STEEL.plate(), 'I', STEEL.ingot() }); - addRecipeAuto(new ItemStack(ModBlocks.crate_desh, 1), new Object[] { " D ", "DSD", " D ", 'D', ModItems.plate_desh, 'S', ModBlocks.crate_steel }); - addRecipeAuto(new ItemStack(ModBlocks.crate_tungsten, 1), new Object[] { "BPB", "PCP", "BPB", 'B', W.block(), 'P', CU.plateCast(), 'C', ModBlocks.crate_steel }); - addRecipeAuto(new ItemStack(ModBlocks.safe, 1), new Object[] { "LAL", "ACA", "LAL", 'L', PB.plate(), 'A', ALLOY.plate(), 'C', ModBlocks.crate_steel }); + + GameRegistry.addRecipe(new ContainerUpgradeCraftingHandler(new ItemStack(ModBlocks.crate_desh, 1), new Object[] { " D ", "DSD", " D ", 'D', ModItems.plate_desh, 'S', ModBlocks.crate_steel })); + GameRegistry.addRecipe(new ContainerUpgradeCraftingHandler(new ItemStack(ModBlocks.crate_tungsten, 1), new Object[] { "BPB", "PCP", "BPB", 'B', W.block(), 'P', CU.plateCast(), 'C', ModBlocks.crate_steel })); + // Note: voids the last few slots when placed, because a safe's inventory is smaller than a crate's one + GameRegistry.addRecipe(new ContainerUpgradeCraftingHandler(new ItemStack(ModBlocks.safe, 1), new Object[] { "LAL", "ACA", "LAL", 'L', PB.plate(), 'A', ALLOY.plate(), 'C', ModBlocks.crate_steel })); + // Note: doesn't preserve storage because a crate's contents are different items, but a mass storage's is just one addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 0), new Object[] { "ICI", "CLC", "ICI", 'I', TI.ingot(), 'C', ModBlocks.crate_steel, 'L', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) }); - addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 1), new Object[] { "PCP", "PMP", "PPP", 'P', DESH.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), 'M', new ItemStack(ModBlocks.mass_storage, 1, 0) }); - addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 2), new Object[] { "PCP", "PMP", "PPP", 'P', ANY_RESISTANTALLOY.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', new ItemStack(ModBlocks.mass_storage, 1, 1) }); + GameRegistry.addRecipe(new ContainerUpgradeCraftingHandler(new ItemStack(ModBlocks.mass_storage, 1, 1), new Object[] { "PCP", "PMP", "PPP", 'P', DESH.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), 'M', new ItemStack(ModBlocks.mass_storage, 1, 0) })); + GameRegistry.addRecipe(new ContainerUpgradeCraftingHandler(new ItemStack(ModBlocks.mass_storage, 1, 2), new Object[] { "PCP", "PMP", "PPP", 'P', ANY_RESISTANTALLOY.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', new ItemStack(ModBlocks.mass_storage, 1, 1) })); addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 3), new Object[] { "PPP", "PIP", "PPP", 'P', KEY_PLANKS, 'I', IRON.plate() }); + addRecipeAuto(new ItemStack(ModBlocks.machine_autocrafter, 1), new Object[] { "SCS", "MWM", "SCS", 'S', STEEL.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'M', ModItems.motor, 'W', Blocks.crafting_table }); addRecipeAuto(new ItemStack(ModBlocks.machine_funnel, 1), new Object[] { "S S", "SRS", " S ", 'S', STEEL.ingot(), 'R', REDSTONE.dust() }); addRecipeAuto(new ItemStack(ModBlocks.machine_waste_drum, 1), new Object[] { "LRL", "BRB", "LRL", 'L', PB.ingot(), 'B', Blocks.iron_bars, 'R', ModItems.rod_quad_empty }); addRecipeAuto(new ItemStack(ModBlocks.machine_press, 1), new Object[] { "IRI", "IPI", "IBI", 'I', IRON.ingot(), 'R', Blocks.furnace, 'B', IRON.block(), 'P', Blocks.piston }); + addRecipeAuto(new ItemStack(ModBlocks.machine_ammo_press, 1), new Object[] { "IPI", "C C", "SSS", 'I', IRON.ingot(), 'P', Blocks.piston, 'C', CU.ingot(), 'S', Blocks.stone }); addRecipeAuto(new ItemStack(ModBlocks.machine_siren, 1), new Object[] { "SIS", "ICI", "SRS", 'S', STEEL.plate(), 'I', ANY_RUBBER.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'R', REDSTONE.dust() }); addRecipeAuto(new ItemStack(ModBlocks.machine_microwave, 1), new Object[] { "III", "SGM", "IDI", 'I', ModItems.plate_polymer, 'S', STEEL.plate(), 'G', KEY_ANYPANE, 'M', ModItems.magnetron, 'D', ModItems.motor }); addRecipeAuto(new ItemStack(ModBlocks.machine_solar_boiler), new Object[] { "SHS", "DHD", "SHS", 'S', STEEL.ingot(), 'H', STEEL.shell(), 'D', KEY_BLACK }); @@ -321,7 +308,7 @@ public class CraftingManager { addRecipeAuto(DictFrame.fromOne(ModItems.arc_electrode, EnumElectrodeType.DESH), new Object[] { "C", "T", "C", 'C', DESH.ingot(), 'T', TI.ingot() }); addRecipeAuto(DictFrame.fromOne(ModItems.arc_electrode, EnumElectrodeType.DESH), new Object[] { "C", "T", "C", 'C', DESH.ingot(), 'T', W.ingot() }); addRecipeAuto(DictFrame.fromOne(ModItems.arc_electrode, EnumElectrodeType.SATURNITE), new Object[] { "C", "T", "C", 'C', BIGMT.ingot(), 'T', NB.ingot() }); - + addRecipeAuto(new ItemStack(ModItems.detonator, 1), new Object[] { " W", "SC", "CE", 'S', STEEL.plate(), 'W', MINGRADE.wireFine(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'E', STEEL.ingot() }); addShapelessAuto(new ItemStack(ModItems.detonator_multi, 1), new Object[] { ModItems.detonator, DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); addRecipeAuto(new ItemStack(ModItems.detonator_laser, 1), new Object[] { "RRD", "PIC", " P", 'P', STEEL.plate(), 'R', REDSTONE.dust(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'D', DIAMOND.gem(), 'I', STEEL.ingot() }); @@ -338,16 +325,16 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModItems.fuse, 1), new Object[] { STEEL.plate(), ModItems.plate_polymer, W.wireFine() }); addShapelessAuto(new ItemStack(ModItems.overfuse, 1), new Object[] { STEEL.bolt(), NP237.dust(), I.dust(), TH232.dust(), AT.dust(), ND.dust(), CU.plateCast(), ModItems.black_hole, CS.dust() }); addShapelessAuto(new ItemStack(ModItems.overfuse, 1), new Object[] { STEEL.bolt(), ST.dust(), BR.dust(), CO.dust(), TS.dust(), NB.dust(), CU.plateCast(), ModItems.black_hole, CE.dust() }); - + addRecipeAuto(new ItemStack(ModItems.blades_steel, 1), new Object[] { " P ", "PIP", " P ", 'P', STEEL.plate(), 'I', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModItems.blades_titanium, 1), new Object[] { " P ", "PIP", " P ", 'P', TI.plate(), 'I', TI.ingot() }); addRecipeAuto(new ItemStack(ModItems.blades_advanced_alloy, 1), new Object[] { " P ", "PIP", " P ", 'P', ALLOY.plate(), 'I', ALLOY.ingot() }); - addRecipeAuto(new ItemStack(ModItems.blades_desh, 1), new Object[] { " S ", "PBP", " S ", 'S', BIGMT.plate(), 'P', ModItems.plate_desh, 'B', ModItems.blades_advanced_alloy }); //4 desh ingots still needed to do anything - + addRecipeAuto(new ItemStack(ModItems.blades_desh, 1), new Object[] { " P ", "PBP", " P ", 'P', ModItems.plate_desh, 'B', ModItems.blades_advanced_alloy }); //4 desh ingots still needed to do anything + addRecipeAuto(new ItemStack(ModItems.blades_steel, 1), new Object[] { "PIP", 'P', STEEL.plate(), 'I', new ItemStack(ModItems.blades_steel, 1, OreDictionary.WILDCARD_VALUE) }); addRecipeAuto(new ItemStack(ModItems.blades_titanium, 1), new Object[] { "PIP", 'P', TI.plate(), 'I', new ItemStack(ModItems.blades_titanium, 1, OreDictionary.WILDCARD_VALUE) }); addRecipeAuto(new ItemStack(ModItems.blades_advanced_alloy, 1), new Object[] { "PIP", 'P', ALLOY.plate(), 'I', new ItemStack(ModItems.blades_advanced_alloy, 1, OreDictionary.WILDCARD_VALUE) }); - + addRecipeAuto(new ItemStack(ModItems.laser_crystal_co2, 1), new Object[] { "QDQ", "NCN", "QDQ", 'Q', ModBlocks.glass_quartz, 'D', DESH.ingot(), 'N', NB.ingot(), 'C', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.CARBONDIOXIDE.getID()) }); addRecipeAuto(new ItemStack(ModItems.laser_crystal_bismuth, 1), new Object[] {"QUQ", "BCB", "QTQ", 'Q', ModBlocks.glass_quartz, 'U', U.ingot(), 'T', TH232.ingot(), 'B', ModItems.nugget_bismuth, 'C', ModItems.crystal_rare }); addRecipeAuto(new ItemStack(ModItems.laser_crystal_cmb, 1), new Object[] {"QBQ", "CSC", "QBQ", 'Q', ModBlocks.glass_quartz, 'B', CMB.ingot(), 'C', SBD.ingot(), 'S', ModItems.cell_anti_schrabidium }); @@ -355,16 +342,16 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.laser_crystal_digamma, 1), new Object[] {"QUQ", "UEU", "QUQ", 'Q', ModBlocks.glass_quartz, 'U', ModItems.undefined, 'E', ModItems.ingot_electronium } ); Item[] bricks = new Item[] {Items.brick, Items.netherbrick}; - + for(Item brick : bricks) { addRecipeAuto(new ItemStack(ModItems.stamp_stone_flat, 1), new Object[] { "III", "SSS", 'I', brick, 'S', "stone" }); addRecipeAuto(new ItemStack(ModItems.stamp_iron_flat, 1), new Object[] { "III", "SSS", 'I', brick, 'S', IRON.ingot() }); addRecipeAuto(new ItemStack(ModItems.stamp_steel_flat, 1), new Object[] { "III", "SSS", 'I', brick, 'S', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModItems.stamp_titanium_flat, 1), new Object[] { "III", "SSS", 'I', brick, 'S', TI.ingot() }); addRecipeAuto(new ItemStack(ModItems.stamp_obsidian_flat, 1), new Object[] { "III", "SSS", 'I', brick, 'S', Blocks.obsidian }); - addRecipeAuto(new ItemStack(ModItems.stamp_desh_flat, 1), new Object[] { "BDB", "DSD", "BDB", 'B', brick, 'D', DESH.ingot(), 'S', BIGMT.ingot() }); + addRecipeAuto(new ItemStack(ModItems.stamp_desh_flat, 1), new Object[] { "BDB", "DSD", "BDB", 'B', brick, 'D', DESH.ingot(), 'S', FERRO.ingot() }); } - + addRecipeAuto(new ItemStack(ModItems.mechanism_revolver_1, 1), new Object[] { "ICI", "CAC", "ICI", 'I', IRON.plate(), 'C', CU.ingot(), 'A', AL.ingot() }); addRecipeAuto(new ItemStack(ModItems.mechanism_revolver_2, 1), new Object[] { "ATA", "TDT", "ATA", 'A', ALLOY.plate(), 'T', W.ingot(), 'D', DURA.ingot() }); addRecipeAuto(new ItemStack(ModItems.mechanism_rifle_1, 1), new Object[] { "ICI", "MAM", "ICI", 'I', IRON.plate(), 'C', CU.ingot(), 'A', AL.ingot(), 'M', ModItems.mechanism_revolver_1 }); @@ -401,16 +388,16 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.tile_lab_broken, 6), new Object[] { " C " , "C C", " C ", 'C', ModBlocks.tile_lab_cracked }); addShapelessAuto(new ItemStack(ModBlocks.asphalt_light, 1), new Object[] { ModBlocks.asphalt, Items.glowstone_dust }); addShapelessAuto(new ItemStack(ModBlocks.asphalt, 1), new Object[] { ModBlocks.asphalt_light }); - + String[] dyes = { "Black", "Red", "Green", "Brown", "Blue", "Purple", "Cyan", "LightGray", "Gray", "Pink", "Lime", "Yellow", "LightBlue", "Magenta", "Orange", "White" }; - + for(int i = 0; i < 16; i++) { String dyeName = "dye" + dyes[15 - i]; addRecipeAuto(new ItemStack(ModBlocks.concrete_colored, 8, i), new Object[] { "CCC", "CDC", "CCC", 'C', ModBlocks.concrete_smooth, 'D', dyeName }); } addShapelessAuto(new ItemStack(ModBlocks.concrete_smooth, 1), new Object[] { new ItemStack(ModBlocks.concrete_colored, 1, OreDictionary.WILDCARD_VALUE) }); addShapelessAuto(new ItemStack(ModBlocks.concrete_smooth, 1), new Object[] { new ItemStack(ModBlocks.concrete_colored_ext, 1, OreDictionary.WILDCARD_VALUE) }); - + addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.MACHINE.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_BROWN, '2', KEY_GRAY }); addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.MACHINE_STRIPE.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_BROWN, '2', KEY_BLACK }); addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.INDIGO.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_BLUE, '2', KEY_PURPLE }); @@ -448,7 +435,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.spotlight_fluoro, 8), new Object[] { "G", "M", "A", 'G', KEY_ANYPANE, 'M', ModItems.ingot_mercury, 'A', ModItems.plate_aluminium }); addRecipeAuto(new ItemStack(ModBlocks.spotlight_halogen, 8), new Object[] { "G", "B", "S", 'G', KEY_ANYPANE, 'B', ModItems.powder_bromine, 'S', STEEL.plate() }); addRecipeAuto(new ItemStack(ModBlocks.floodlight, 2), new Object[] { "CSC", "TST", "G G", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR), 'S', STEEL.plate(), 'T', ModItems.coil_tungsten, 'G', KEY_ANYPANE }); - + addRecipeAuto(new ItemStack(ModBlocks.barbed_wire, 16), new Object[] { "AIA", "I I", "AIA", 'A', STEEL.wireFine(), 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.barbed_wire_fire, 8), new Object[] { "BBB", "BIB", "BBB", 'B', ModBlocks.barbed_wire, 'I', P_RED.dust() }); addRecipeAuto(new ItemStack(ModBlocks.barbed_wire_poison, 8), new Object[] { "BBB", "BIB", "BBB", 'B', ModBlocks.barbed_wire, 'I', ModItems.powder_poison }); @@ -470,28 +457,18 @@ public class CraftingManager { addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.steel_grate), 4), new Object[] { "SS", "SS", 'S', ModBlocks.steel_beam }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.steel_grate_wide), 4), new Object[] { "SS", 'S', ModBlocks.steel_grate }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.steel_grate), 1), new Object[] { "SS", 'S', ModBlocks.steel_grate_wide }); - + addRecipeAuto(new ItemStack(ModBlocks.steel_scaffold, 8, 0), new Object[] { "SSS", "SDS", "SSS", 'S', ModBlocks.steel_scaffold, 'D', "dyeGray" }); addRecipeAuto(new ItemStack(ModBlocks.steel_scaffold, 8, 1), new Object[] { "SSS", "SDS", "SSS", 'S', ModBlocks.steel_scaffold, 'D', "dyeRed" }); addRecipeAuto(new ItemStack(ModBlocks.steel_scaffold, 8, 2), new Object[] { "SSS", "SDS", "SSS", 'S', ModBlocks.steel_scaffold, 'D', "dyeWhite" }); addRecipeAuto(new ItemStack(ModBlocks.steel_scaffold, 8, 3), new Object[] { "SSS", "SDS", "SSS", 'S', ModBlocks.steel_scaffold, 'D', "dyeYellow" }); - + reg2(); } - + public static void reg2() { - addRecipeAuto(new ItemStack(ModItems.stamp_357, 1), new Object[] { "RSR", "III", " C ", 'R', REDSTONE.dust(), 'S', ModItems.stamp_iron_flat, 'I', ModItems.plate_polymer, 'C', ModItems.casing_357 }); - addRecipeAuto(new ItemStack(ModItems.stamp_44, 1), new Object[] { "RSR", "III", " C ", 'R', REDSTONE.dust(), 'S', ModItems.stamp_iron_flat, 'I', ModItems.plate_polymer, 'C', ModItems.casing_44 }); - addRecipeAuto(new ItemStack(ModItems.stamp_9, 1), new Object[] { "RSR", "III", " C ", 'R', REDSTONE.dust(), 'S', ModItems.stamp_iron_flat, 'I', ModItems.plate_polymer, 'C', ModItems.casing_9 }); - addRecipeAuto(new ItemStack(ModItems.stamp_50, 1), new Object[] { "RSR", "III", " C ", 'R', REDSTONE.dust(), 'S', ModItems.stamp_iron_flat, 'I', ModItems.plate_polymer, 'C', ModItems.casing_50 }); - - addRecipeAuto(new ItemStack(ModItems.stamp_desh_357, 1), new Object[] { "RSR", "III", " C ", 'R', ModItems.ingot_dura_steel, 'S', ModItems.stamp_desh_flat, 'I', ModItems.ingot_saturnite, 'C', ModItems.casing_357 }); - addRecipeAuto(new ItemStack(ModItems.stamp_desh_44, 1), new Object[] { "RSR", "III", " C ", 'R', ModItems.ingot_dura_steel, 'S', ModItems.stamp_desh_flat, 'I', ModItems.ingot_saturnite, 'C', ModItems.casing_44 }); - addRecipeAuto(new ItemStack(ModItems.stamp_desh_9, 1), new Object[] { "RSR", "III", " C ", 'R', ModItems.ingot_dura_steel, 'S', ModItems.stamp_desh_flat, 'I', ModItems.ingot_saturnite, 'C', ModItems.casing_9 }); - addRecipeAuto(new ItemStack(ModItems.stamp_desh_50, 1), new Object[] { "RSR", "III", " C ", 'R', ModItems.ingot_dura_steel, 'S', ModItems.stamp_desh_flat, 'I', ModItems.ingot_saturnite, 'C', ModItems.casing_50 }); - addRecipeAuto(new ItemStack(ModBlocks.sat_dock, 1), new Object[] { "SSS", "PCP", 'S', STEEL.ingot(), 'P', ANY_PLASTIC.ingot(), 'C', ModBlocks.crate_iron }); addRecipeAuto(new ItemStack(ModBlocks.book_guide, 1), new Object[] { "IBI", "LBL", "IBI", 'B', Items.book, 'I', KEY_BLACK, 'L', KEY_BLUE }); @@ -521,12 +498,12 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.flame_conspiracy, 1), new Object[] { " S ", "STS", " S ", 'S', Fluids.KEROSENE.getDict(1000), 'T', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModItems.flame_politics, 1), new Object[] { " I ", "IPI", " I ", 'P', Items.paper, 'I', KEY_BLACK }); addRecipeAuto(new ItemStack(ModItems.flame_opinion, 1), new Object[] { " R ", "RPR", " R ", 'P', Items.paper, 'R', KEY_RED }); - + addRecipeAuto(new ItemStack(ModItems.solid_fuel_presto, 1), new Object[] { " P ", "SRS", " P ", 'P', Items.paper, 'S', ModItems.solid_fuel, 'R', REDSTONE.dust() }); addShapelessAuto(new ItemStack(ModItems.solid_fuel_presto_triplet, 1), new Object[] { ModItems.solid_fuel_presto, ModItems.solid_fuel_presto, ModItems.solid_fuel_presto, ModItems.ball_dynamite }); addRecipeAuto(new ItemStack(ModItems.solid_fuel_presto_bf, 1), new Object[] { " P ", "SRS", " P ", 'P', Items.paper, 'S', ModItems.solid_fuel_bf, 'R', REDSTONE.dust() }); addShapelessAuto(new ItemStack(ModItems.solid_fuel_presto_triplet_bf, 1), new Object[] { ModItems.solid_fuel_presto_bf, ModItems.solid_fuel_presto_bf, ModItems.solid_fuel_presto_bf, ModItems.ingot_c4 }); - + addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.flame_war), 1), new Object[] { "WHW", "CTP", "WOW", 'W', Item.getItemFromBlock(Blocks.planks), 'T', Item.getItemFromBlock(Blocks.tnt), 'H', ModItems.flame_pony, 'C', ModItems.flame_conspiracy, 'P', ModItems.flame_politics, 'O', ModItems.flame_opinion }); addRecipeAuto(new ItemStack(ModBlocks.det_cord, 4), new Object[] { " P ", "PGP", " P ", 'P', Items.paper, 'G', Items.gunpowder }); addRecipeAuto(new ItemStack(ModBlocks.det_charge, 1), new Object[] { "PDP", "DTD", "PDP", 'P', STEEL.plate(), 'D', ModBlocks.det_cord, 'T', ANY_PLASTICEXPLOSIVE.ingot() }); @@ -588,12 +565,12 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.battery_sc_gold), new Object[] { "NBN", "PCP", "NBN", 'N', TA.nugget(), 'B', AU198.billet(), 'P', ANY_PLASTIC.ingot(), 'C', ModItems.battery_sc_polonium }); addRecipeAuto(new ItemStack(ModItems.battery_sc_lead), new Object[] { "NBN", "PCP", "NBN", 'N', TA.nugget(), 'B', PB209.billet(), 'P', ANY_PLASTIC.ingot(), 'C', ModItems.battery_sc_gold }); addRecipeAuto(new ItemStack(ModItems.battery_sc_americium), new Object[] { "NBN", "PCP", "NBN", 'N', TA.nugget(), 'B', AM241.billet(), 'P', ANY_PLASTIC.ingot(), 'C', ModItems.battery_sc_lead }); - + addRecipeAuto(new ItemStack(ModItems.wiring_red_copper, 1), new Object[] { "PPP", "PIP", "PPP", 'P', STEEL.plate(), 'I', STEEL.ingot() }); - + addRecipeAuto(new ItemStack(ModItems.jetpack_tank, 1), new Object[] { " S ", "BKB", " S ", 'S', STEEL.plate(), 'B', STEEL.bolt(), 'K', Fluids.KEROSENE.getDict(1000) }); - addRecipeAuto(new ItemStack(ModItems.gun_kit_1, 4), new Object[] { "I ", "LB", "P ", 'I', ANY_RUBBER.ingot(), 'L', Fluids.LUBRICANT.getDict(1000), 'B', STEEL.bolt(), 'P', IRON.plate() }); - addRecipeAuto(new ItemStack(ModItems.gun_kit_2, 1), new Object[] { "III", "GLG", "PPP", 'I', ANY_RUBBER.ingot(), 'L', ModItems.ducttape, 'G', ModItems.gun_kit_1, 'P', IRON.plate() }); + addShapelessAuto(new ItemStack(ModItems.gun_kit_1, 1), new Object[] { ANY_RUBBER.ingot(), Fluids.WOODOIL.getDict(1_000), IRON.ingot() }); + addShapelessAuto(new ItemStack(ModItems.gun_kit_2, 1), new Object[] { ModItems.gun_kit_1, ModItems.wrench, ModItems.ducttape, Fluids.LUBRICANT.getDict(1_000) }); addRecipeAuto(new ItemStack(ModItems.igniter, 1), new Object[] { " W", "SC", "CE", 'S', STEEL.plate(), 'W', SA326.wireFine(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'E', EUPH.ingot() }); addRecipeAuto(new ItemStack(ModItems.watch, 1), new Object[] { "LYL", "EWE", "LYL", 'E', EUPH.ingot(), 'L', KEY_BLUE, 'W', Items.clock, 'Y', ModItems.billet_yharonite }); @@ -606,7 +583,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.padlock, 1), new Object[] { " P ", "PBP", "PPP", 'P', STEEL.plate(), 'B', STEEL.bolt() }); addRecipeAuto(new ItemStack(ModItems.padlock_reinforced, 1), new Object[] { " P ", "PBP", "PDP", 'P', ALLOY.plate(), 'D', ModItems.plate_desh, 'B', DURA.bolt() }); addRecipeAuto(new ItemStack(ModItems.padlock_unbreakable, 1), new Object[] { " P ", "PBP", "PDP", 'P', BIGMT.plate(), 'D', DIAMOND.gem(), 'B', DURA.bolt() }); - + addRecipeAuto(new ItemStack(ModItems.record_lc, 1), new Object[] { " S ", "SDS", " S ", 'S', ANY_PLASTIC.ingot(), 'D', LAPIS.dust() }); addRecipeAuto(new ItemStack(ModItems.record_ss, 1), new Object[] { " S ", "SDS", " S ", 'S', ANY_PLASTIC.ingot(), 'D', ALLOY.dust() }); addRecipeAuto(new ItemStack(ModItems.record_vc, 1), new Object[] { " S ", "SDS", " S ", 'S', ANY_PLASTIC.ingot(), 'D', CMB.dust() }); @@ -630,12 +607,12 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.fluid_tank_empty, 8), new Object[] { "121", "1G1", "121", '1', AL.plate(), '2', IRON.plate(), 'G', KEY_ANYPANE }); addRecipeAuto(new ItemStack(ModItems.fluid_tank_lead_empty, 4), new Object[] { "LUL", "LTL", "LUL", 'L', PB.plate(), 'U', U238.billet(), 'T', ModItems.fluid_tank_empty }); addRecipeAuto(new ItemStack(ModItems.fluid_barrel_empty, 2), new Object[] { "121", "1G1", "121", '1', STEEL.plate(), '2', AL.plate(), 'G', KEY_ANYPANE }); - + if(!GeneralConfig.enable528) { addRecipeAuto(new ItemStack(ModItems.inf_water, 1), new Object[] { "222", "131", "222", '1', Items.water_bucket, '2', AL.plate(), '3', DIAMOND.gem() }); addRecipeAuto(new ItemStack(ModItems.inf_water_mk2, 1), new Object[] { "BPB", "PTP", "BPB", 'B', ModItems.inf_water, 'P', ModBlocks.fluid_duct_neo, 'T', ModItems.tank_steel }); } - + //not so Temporary Crappy Recipes addRecipeAuto(new ItemStack(ModItems.piston_selenium, 1), new Object[] { "SSS", "STS", " D ", 'S', STEEL.plate(), 'T', W.ingot(), 'D', DURA.bolt() }); addShapelessAuto(new ItemStack(ModItems.catalyst_clay), new Object[] { IRON.dust(), Items.clay_ball }); @@ -672,13 +649,14 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.custom_fall, 1), new Object[] { "IIP", "CHW", "IIP", 'I', ANY_RUBBER.ingot(), 'P', BIGMT.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'H', STEEL.shell(), 'W', ModItems.coil_copper }); addRecipeAuto(new ItemStack(ModBlocks.machine_controller, 1), new Object[] { "TDT", "DCD", "TDT", 'T', ANY_RESISTANTALLOY.ingot(), 'D', ModItems.crt_display, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); addRecipeAuto(new ItemStack(ModItems.containment_box, 1), new Object[] { "LUL", "UCU", "LUL", 'L', PB.plate(), 'U', U238.billet(), 'C', ModBlocks.crate_steel }); + addRecipeAuto(new ItemStack(ModItems.casing_bag, 1), new Object[] { " L ", "LGL", " L ", 'L', Items.leather, 'G', GUNMETAL.plate() }); + addRecipeAuto(new ItemStack(ModItems.casing_bag, 1), new Object[] { " L ", "LGL", " L ", 'L', ANY_RUBBER.ingot(), 'G', GUNMETAL.plate() }); addRecipeAuto(new ItemStack(ModBlocks.absorber, 1), new Object[] { "ICI", "CPC", "ICI", 'I', CU.ingot(), 'C', COAL.dust(), 'P', PB.dust() }); addRecipeAuto(new ItemStack(ModBlocks.absorber_red, 1), new Object[] { "ICI", "CPC", "ICI", 'I', TI.ingot(), 'C', COAL.dust(), 'P', ModBlocks.absorber }); addRecipeAuto(new ItemStack(ModBlocks.absorber_green, 1), new Object[] { "ICI", "CPC", "ICI", 'I', ANY_PLASTIC.ingot(), 'C', ModItems.powder_desh_mix, 'P', ModBlocks.absorber_red }); addRecipeAuto(new ItemStack(ModBlocks.absorber_pink, 1), new Object[] { "ICI", "CPC", "ICI", 'I', BIGMT.ingot(), 'C', ModItems.powder_nitan_mix, 'P', ModBlocks.absorber_green }); addRecipeAuto(new ItemStack(ModBlocks.decon, 1), new Object[] { "BGB", "SAS", "BSB", 'B', BE.ingot(), 'G', Blocks.iron_bars, 'S', STEEL.ingot(), 'A', ModBlocks.absorber }); - addRecipeAuto(new ItemStack(ModBlocks.machine_amgen, 1), new Object[] { "ITI", "TAT", "ITI", 'I', ALLOY.ingot(), 'T', ModItems.thermo_element, 'A', ModBlocks.absorber }); addRecipeAuto(new ItemStack(ModBlocks.machine_geo, 1), new Object[] { "ITI", "PCP", "ITI", 'I', DURA.ingot(), 'T', ModItems.thermo_element, 'P', CU.plateCast(), 'C', ModBlocks.red_wire_coated }); addRecipeAuto(new ItemStack(ModBlocks.machine_minirtg, 1), new Object[] { "LLL", "PPP", "TRT", 'L', PB.plate(), 'P', PU238.billet(), 'T', ModItems.thermo_element, 'R', ModItems.rtg_unit }); addRecipeAuto(new ItemStack(ModBlocks.machine_powerrtg, 1), new Object[] { "SRS", "PTP", "SRS", 'S', STAR.ingot(), 'R', ModItems.rtg_unit, 'P', PO210.billet(), 'T', TS.dust() }); @@ -698,15 +676,15 @@ public class CraftingManager { for(int i = 1; i < Fluids.getAll().length; ++i) { addShapelessAuto(new ItemStack(ModItems.fluid_duct, 1, i), new Object[] { new ItemStack(ModBlocks.fluid_duct_neo, 1), new ItemStack(ModItems.fluid_identifier, 1, i) }); - - addShapelessAuto(new ItemStack(ModItems.fluid_duct, 8, i), new Object[] { new ItemStack(ModBlocks.fluid_duct_neo, 1), new ItemStack(ModBlocks.fluid_duct_neo, 1), - new ItemStack(ModBlocks.fluid_duct_neo, 1), new ItemStack(ModBlocks.fluid_duct_neo, 1), new ItemStack(ModBlocks.fluid_duct_neo, 1), + + addShapelessAuto(new ItemStack(ModItems.fluid_duct, 8, i), new Object[] { new ItemStack(ModBlocks.fluid_duct_neo, 1), new ItemStack(ModBlocks.fluid_duct_neo, 1), + new ItemStack(ModBlocks.fluid_duct_neo, 1), new ItemStack(ModBlocks.fluid_duct_neo, 1), new ItemStack(ModBlocks.fluid_duct_neo, 1), new ItemStack(ModBlocks.fluid_duct_neo, 1), new ItemStack(ModBlocks.fluid_duct_neo, 1), new ItemStack(ModBlocks.fluid_duct_neo, 1), new ItemStack(ModItems.fluid_identifier, 1, i) }); - + addShapelessAuto(new ItemStack(ModItems.fluid_duct, 1, i), new Object[] { new ItemStack(ModItems.fluid_duct, 1, OreDictionary.WILDCARD_VALUE), new ItemStack(ModItems.fluid_identifier, 1, i) }); - - addShapelessAuto(new ItemStack(ModItems.fluid_duct, 8, i), new Object[] { new ItemStack(ModItems.fluid_duct, 1, OreDictionary.WILDCARD_VALUE), new ItemStack(ModItems.fluid_duct, 1, OreDictionary.WILDCARD_VALUE), - new ItemStack(ModItems.fluid_duct, 1, OreDictionary.WILDCARD_VALUE), new ItemStack(ModItems.fluid_duct, 1, OreDictionary.WILDCARD_VALUE), new ItemStack(ModItems.fluid_duct, 1, OreDictionary.WILDCARD_VALUE), + + addShapelessAuto(new ItemStack(ModItems.fluid_duct, 8, i), new Object[] { new ItemStack(ModItems.fluid_duct, 1, OreDictionary.WILDCARD_VALUE), new ItemStack(ModItems.fluid_duct, 1, OreDictionary.WILDCARD_VALUE), + new ItemStack(ModItems.fluid_duct, 1, OreDictionary.WILDCARD_VALUE), new ItemStack(ModItems.fluid_duct, 1, OreDictionary.WILDCARD_VALUE), new ItemStack(ModItems.fluid_duct, 1, OreDictionary.WILDCARD_VALUE), new ItemStack(ModItems.fluid_duct, 1, OreDictionary.WILDCARD_VALUE), new ItemStack(ModItems.fluid_duct, 1, OreDictionary.WILDCARD_VALUE), new ItemStack(ModItems.fluid_duct, 1, OreDictionary.WILDCARD_VALUE), new ItemStack(ModItems.fluid_identifier, 1, i) }); } @@ -736,7 +714,7 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModBlocks.sand_boron, 8), new Object[] { "sand", "sand", "sand", "sand", "sand", "sand", "sand", "sand", B.dust() }); addShapelessAuto(new ItemStack(ModBlocks.sand_lead, 8), new Object[] { "sand", "sand", "sand", "sand", "sand", "sand", "sand", "sand", PB.dust() }); addShapelessAuto(new ItemStack(ModBlocks.sand_quartz, 1), new Object[] { "sand", "sand", NETHERQUARTZ.dust(), NETHERQUARTZ.dust() }); - + addRecipeAuto(new ItemStack(ModItems.rune_blank, 1), new Object[] { "PSP", "SDS", "PSP", 'P', ModItems.powder_magic, 'S', STAR.ingot(), 'D', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID) }); addShapelessAuto(new ItemStack(ModItems.rune_isa, 1), new Object[] { ModItems.rune_blank, ModItems.powder_spark_mix, ModItems.singularity_counter_resonant }); addShapelessAuto(new ItemStack(ModItems.rune_dagaz, 1), new Object[] { ModItems.rune_blank, ModItems.powder_spark_mix, ModItems.singularity }); @@ -745,8 +723,6 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModItems.rune_thurisaz, 1), new Object[] { ModItems.rune_blank, ModItems.powder_spark_mix, ModItems.black_hole }); addRecipeAuto(new ItemStack(ModItems.ams_lens, 1), new Object[] { "PDP", "GDG", "PDP", 'P', ModItems.plate_dineutronium, 'G', ModBlocks.reinforced_glass, 'D', Blocks.diamond_block }); addRecipeAuto(new ItemStack(ModItems.ams_catalyst_blank, 1), new Object[] { "TET", "ETE", "TET", 'T', TS.dust(), 'E', EUPH.ingot()}); - addRecipeAuto(new ItemStack(ModItems.ams_focus_limiter, 1), new Object[] { "PDP", "GDG", "PDP", 'P', BIGMT.plate(), 'G', ModBlocks.reinforced_glass, 'D', Blocks.diamond_block }); - addRecipeAuto(new ItemStack(ModItems.ams_muzzle, 1), new Object[] { "GDG", "GDG", "PGP", 'P', BIGMT.plate(), 'G', ModBlocks.reinforced_glass, 'D', Blocks.diamond_block }); addShapelessAuto(new ItemStack(ModItems.ams_catalyst_lithium, 1), new Object[] { ModItems.ams_catalyst_blank, ModItems.rune_isa, ModItems.rune_isa, ModItems.rune_jera, ModItems.rune_jera, LI.dust(), LI.dust(), LI.dust(), LI.dust() }); addShapelessAuto(new ItemStack(ModItems.ams_catalyst_beryllium, 1), new Object[] { ModItems.ams_catalyst_blank, ModItems.rune_isa, ModItems.rune_dagaz, ModItems.rune_jera, ModItems.rune_jera, BE.dust(), BE.dust(), BE.dust(), BE.dust() }); addShapelessAuto(new ItemStack(ModItems.ams_catalyst_copper, 1), new Object[] { ModItems.ams_catalyst_blank, ModItems.rune_dagaz, ModItems.rune_dagaz, ModItems.rune_jera, ModItems.rune_jera, CU.dust(), CU.dust(), CU.dust(), CU.dust() }); @@ -787,7 +763,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.upgrade_crystallizer, 1), new Object[] { "PHP", "CUC", "DTD", 'P', new ItemStack(ModItems.fluid_barrel_full, 1, Fluids.PEROXIDE.getID()), 'H', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'C', ModBlocks.barrel_steel, 'U', ModItems.upgrade_centrifuge, 'D', ModItems.motor, 'T', ModBlocks.machine_transformer }); addRecipeAuto(new ItemStack(ModItems.upgrade_screm, 1), new Object[] { "SUS", "SCS", "SUS", 'S', STEEL.plate(), 'U', ModItems.upgrade_template, 'C', ModItems.crystal_xen }); addRecipeAuto(new ItemStack(ModItems.upgrade_gc_speed, 1), new Object[] {"GNG", "RUR", "GMG", 'R', RUBBER.ingot(), 'M', ModItems.motor, 'G', ModItems.coil_gold, 'N', NB.ingot(), 'U', ModItems.upgrade_template}); - + addRecipeAuto(new ItemStack(ModItems.upgrade_stack, 1, 0), new Object[] { " C ", "PUP", " C ", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'U', ModItems.upgrade_template }); addRecipeAuto(new ItemStack(ModItems.upgrade_stack, 1, 1), new Object[] { " C ", "PUP", " C ", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR), 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_HYDRAULIC), 'U', new ItemStack(ModItems.upgrade_stack, 1, 0) }); addRecipeAuto(new ItemStack(ModItems.upgrade_stack, 1, 2), new Object[] { " C ", "PUP", " C ", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_ELECTRIC), 'U', new ItemStack(ModItems.upgrade_stack, 1, 1) }); @@ -797,7 +773,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.mech_key, 1), new Object[] { "MCM", "MKM", "MMM", 'M', ModItems.ingot_meteorite_forged, 'C', ModItems.coin_maskman, 'K', ModItems.key }); addRecipeAuto(new ItemStack(ModItems.spawn_ufo, 1), new Object[] { "MMM", "DCD", "MMM", 'M', ModItems.ingot_meteorite, 'D', DNT.ingot(), 'C', ModItems.coin_worm }); - + addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_alloy, 1), new Object[] { "WWW", "WCW", "WWW", 'W', ALLOY.wireFine(), 'C', ModBlocks.fusion_conductor }); addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_alloy, 1), new Object[] { "WW", "WW", 'W', ALLOY.wireDense() }); addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_gold, 1), new Object[] { "PGP", "PCP", "PGP", 'G', GOLD.dust(), 'C', ModBlocks.hadron_coil_alloy, 'P', IRON.plate() }); @@ -834,7 +810,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.fireworks, 1), new Object[] { "PPP", "PPP", "WIW", 'P', Items.paper, 'W', KEY_PLANKS, 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModItems.safety_fuse, 8), new Object[] { "SSS", "SGS", "SSS", 'S', Items.string, 'G', Items.gunpowder }); - + addRecipeAuto(new ItemStack(ModItems.rbmk_lid, 4), new Object[] { "PPP", "CCC", "PPP", 'P', STEEL.plate(), 'C', ModBlocks.concrete_asbestos }); addRecipeAuto(new ItemStack(ModItems.rbmk_lid_glass, 4), new Object[] { "LLL", "BBB", "P P", 'P', STEEL.plate(), 'L', ModBlocks.glass_lead, 'B', ModBlocks.glass_boron }); addRecipeAuto(new ItemStack(ModItems.rbmk_lid_glass, 4), new Object[] { "BBB", "LLL", "P P", 'P', STEEL.plate(), 'L', ModBlocks.glass_lead, 'B', ModBlocks.glass_boron }); @@ -917,7 +893,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.deco_pipe_rim_marked, 8), new Object[] { "PPP", "PCP", "PPP", 'P', ModBlocks.deco_pipe_rim_green, 'C', KEY_GREEN }); addRecipeAuto(new ItemStack(ModBlocks.deco_pipe_quad_marked, 8), new Object[] { "PPP", "PCP", "PPP", 'P', ModBlocks.deco_pipe_quad_green, 'C', KEY_GREEN }); addRecipeAuto(new ItemStack(ModBlocks.deco_pipe_framed_marked, 8), new Object[] { "PPP", "PCP", "PPP", 'P', ModBlocks.deco_pipe_framed_green, 'C', KEY_GREEN }); - + addRecipeAuto(new ItemStack(ModBlocks.deco_emitter), new Object[] { "IDI", "DRD", "IDI", 'I', IRON.ingot(), 'D', DIAMOND.gem(), 'R', REDSTONE.block() }); addRecipeAuto(new ItemStack(Items.name_tag), new Object[] { "SB ", "BPB", " BP", 'S', Items.string, 'B', KEY_SLIME, 'P', Items.paper }); @@ -943,20 +919,20 @@ public class CraftingManager { addShapelessAuto(ItemBattery.getEmptyBattery(ModItems.anchor_remote), new Object[] { DIAMOND.gem(), ModItems.ducttape, DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) }); addRecipeAuto(new ItemStack(ModBlocks.teleanchor), new Object[] { "ODO", "EAE", "ODO", 'O', Blocks.obsidian, 'D', DIAMOND.gem(), 'E', ModItems.powder_magic, 'A', ModItems.gem_alexandrite }); addRecipeAuto(new ItemStack(ModBlocks.field_disturber), new Object[] { "ICI", "CAC", "ICI", 'I', STAR.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID), 'A', ModItems.gem_alexandrite }); - + addShapelessAuto(new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_RESTORED.ordinal()), new Object[] { new ItemStack(ModItems.holotape_image, 1, EnumHoloImage.HOLO_DIGAMMA.ordinal()), KEY_TOOL_SCREWDRIVER, ModItems.ducttape, ModItems.armor_polish }); addShapelessAuto(new ItemStack(ModItems.holotape_damaged), new Object[] { DictFrame.fromOne(ModItems.holotape_image, EnumHoloImage.HOLO_RESTORED), ModItems.upgrade_muffler, ModItems.crt_display, ModItems.gem_alexandrite /* placeholder for amplifier */ }); addRecipeAuto(DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC, 4), new Object[] { " I ", "CPC", " I ", 'I', IRON.ingot(), 'C', CU.ingot(), 'P', IRON.plate() }); addRecipeAuto(DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_HYDRAULIC, 4), new Object[] { " I ", "CPC", " I ", 'I', STEEL.ingot(), 'C', TI.ingot(), 'P', Fluids.LUBRICANT.getDict(1000) }); addRecipeAuto(DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_ELECTRIC, 4), new Object[] { " I ", "CPC", " I ", 'I', ANY_RESISTANTALLOY.ingot(), 'C', ANY_PLASTIC.ingot(), 'P', ModItems.motor }); - + Object[] craneCasing = new Object[] { Blocks.stonebrick, 1, IRON.ingot(), 2, STEEL.ingot(), 4 }; - + for(int i = 0; i < craneCasing.length / 2; i++) { Object casing = craneCasing[i * 2]; int amount = (int) craneCasing[i * 2 + 1]; @@ -993,7 +969,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.drone_dock), new Object[] { "T", "C", "B", 'T', ModBlocks.drone_waypoint_request, 'C', ModBlocks.crate_steel, 'B', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); addRecipeAuto(new ItemStack(ModItems.ball_resin), new Object[] { "DD", "DD", 'D', Blocks.yellow_flower }); - + addShapelessAuto(DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER1), new Object[] { ModItems.ingot_chainsteel, ASBESTOS.ingot(), ModItems.gem_alexandrite }); addShapelessAuto(DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER1, 3), new Object[] { DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER2) }); addShapelessAuto(DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER2), new Object[] { ModItems.ingot_chainsteel, ModItems.ingot_bismuth, ModItems.gem_alexandrite, ModItems.gem_alexandrite }); @@ -1015,19 +991,19 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModItems.ingot_firebrick, 4), new Object[] { ModBlocks.brick_fire }); addRecipeAuto(new ItemStack(ModBlocks.machine_drain), new Object[] { "PPP", "T ", "PPP", 'P', STEEL.plateCast(), 'T', ModItems.tank_steel }); - + addRecipeAuto(new ItemStack(ModBlocks.filing_cabinet, 1, DecoCabinetEnum.STEEL.ordinal()), new Object[] { " P ", "PIP", " P ", 'P', STEEL.plate(), 'I', ModItems.plate_polymer }); - + addRecipeAuto(new ItemStack(ModBlocks.vinyl_tile, 4), new Object[] { " I ", "IBI", " I ", 'I', ModItems.plate_polymer, 'B', ModBlocks.brick_light }); addRecipeAuto(new ItemStack(ModBlocks.vinyl_tile, 4, 1), new Object[] { "BB", "BB", 'B', new ItemStack(ModBlocks.vinyl_tile, 1, 0) }); addShapelessAuto(new ItemStack(ModBlocks.vinyl_tile), new Object[] { new ItemStack(ModBlocks.vinyl_tile, 1, 1) }); - + addShapelessAuto(new ItemStack(ModItems.upgrade_5g), new Object[] { ModItems.upgrade_template, ModItems.gem_alexandrite }); - + addShapelessAuto(new ItemStack(ModItems.bdcl), new Object[] { ANY_TAR.any(), Fluids.WATER.getDict(1_000), KEY_WHITE }); - + addShapelessAuto(new ItemStack(ModItems.book_of_), new Object[] { DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE1), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE2), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE3), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE4), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE5), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE6), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE7), DictFrame.fromOne(ModItems.page_of_, EnumPages.PAGE8), ModItems.egg_balefire }); - + if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCrafting) { addShapelessAuto(new ItemStack(ModItems.cordite, 3), new Object[] { ModItems.ballistite, Items.gunpowder, new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) }); addShapelessAuto(new ItemStack(ModItems.ingot_semtex, 3), new Object[] { Items.slime_ball, Blocks.tnt, KNO.dust() }); @@ -1056,12 +1032,16 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.neutron_reflector, 4), new Object[] { "##", "##", '#', W.ingot() }); for(NTMMaterial mat : Mats.orderedList) { - if(mat.shapes.contains(MaterialShapes.WIRE)) for(String name : mat.names) addRecipeAuto(new ItemStack(ModItems.wire_fine, 24, mat.id), new Object[] { "###", '#', MaterialShapes.INGOT.prefixes[0] + name }); + if(mat.autogen.contains(MaterialShapes.WIRE)) for(String name : mat.names) addRecipeAuto(new ItemStack(ModItems.wire_fine, 24, mat.id), new Object[] { "###", '#', MaterialShapes.INGOT.prefixes[0] + name }); } - + addRecipeAuto(new ItemStack(ModItems.book_of_), new Object[] { "BGB", "GAG", "BGB", 'B', ModItems.egg_balefire_shard, 'G', GOLD.ingot(), 'A', Items.book }); } + for(NTMMaterial mat : Mats.orderedList) { + if(mat.autogen.contains(MaterialShapes.BOLT)) for(String name : mat.names) addRecipeAuto(new ItemStack(ModItems.bolt, 16, mat.id), new Object[] { "#", "#", '#', MaterialShapes.INGOT.prefixes[0] + name }); + } + if(!GeneralConfig.enable528) { addRecipeAuto(new ItemStack(ModBlocks.machine_spp_bottom), new Object[] { "MDM", "LCL", "LWL", 'M', MAGTUNG.ingot(), 'D', ModItems.plate_desh, 'L', PB.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'W', ModItems.coil_magnetized_tungsten }); addRecipeAuto(new ItemStack(ModBlocks.machine_spp_top), new Object[] { "LWL", "LCL", "MDM", 'M', MAGTUNG.ingot(), 'D', ModItems.plate_desh, 'L', PB.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'W', ModItems.coil_magnetized_tungsten }); @@ -1080,7 +1060,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.rbmk_heater, 1), new Object[] { "CIC", "PRP", "CIC", 'C', CU.pipe(), 'P', STEEL.shell(), 'R', ModBlocks.rbmk_blank, 'I', ANY_PLASTIC.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.rbmk_cooler, 1), new Object[] { "IGI", "GCG", "IGI", 'C', ModBlocks.rbmk_blank, 'I', ModItems.plate_polymer, 'G', ModBlocks.steel_grate }); } - + addShapelessAuto(new ItemStack(ModItems.launch_code), new Object[] { new ItemStack(ModItems.launch_code_piece), new ItemStack(ModItems.launch_code_piece), new ItemStack(ModItems.launch_code_piece), new ItemStack(ModItems.launch_code_piece), @@ -1088,7 +1068,7 @@ public class CraftingManager { new ItemStack(ModItems.launch_code_piece), new ItemStack(ModItems.launch_code_piece), DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); - + addShapelessAuto(ModItems.circuit_star_component.stackFromEnum(CircuitComponentType.CHIPSET), new Object[] { ModItems.circuit_star_piece.stackFromEnum(ScrapType.BRIDGE_BIOS), ModItems.circuit_star_piece.stackFromEnum(ScrapType.BRIDGE_BUS), @@ -1098,7 +1078,7 @@ public class CraftingManager { ModItems.circuit_star_piece.stackFromEnum(ScrapType.BRIDGE_NORTH), ModItems.circuit_star_piece.stackFromEnum(ScrapType.BRIDGE_SOUTH) }); - + addShapelessAuto(ModItems.circuit_star_component.stackFromEnum(CircuitComponentType.CPU), new Object[] { ModItems.circuit_star_piece.stackFromEnum(ScrapType.CPU_CACHE), ModItems.circuit_star_piece.stackFromEnum(ScrapType.CPU_CLOCK), @@ -1107,7 +1087,7 @@ public class CraftingManager { ModItems.circuit_star_piece.stackFromEnum(ScrapType.CPU_REGISTER), ModItems.circuit_star_piece.stackFromEnum(ScrapType.CPU_SOCKET) }); - + addShapelessAuto(ModItems.circuit_star_component.stackFromEnum(CircuitComponentType.RAM), new Object[] { ModItems.circuit_star_piece.stackFromEnum(ScrapType.MEM_SOCKET), ModItems.circuit_star_piece.stackFromEnum(ScrapType.MEM_16K_A), @@ -1115,12 +1095,12 @@ public class CraftingManager { ModItems.circuit_star_piece.stackFromEnum(ScrapType.MEM_16K_C), ModItems.circuit_star_piece.stackFromEnum(ScrapType.MEM_16K_D) }); - + addShapelessAuto(ModItems.circuit_star_component.stackFromEnum(CircuitComponentType.CARD), new Object[] { ModItems.circuit_star_piece.stackFromEnum(ScrapType.CARD_BOARD), ModItems.circuit_star_piece.stackFromEnum(ScrapType.CARD_PROCESSOR) }); - + addShapelessAuto(new ItemStack(ModItems.circuit_star), new Object[] { ModItems.circuit_star_component.stackFromEnum(CircuitComponentType.CHIPSET), ModItems.circuit_star_component.stackFromEnum(CircuitComponentType.CPU), @@ -1140,7 +1120,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.cm_block, 4, 1), " I ", "IPI", " I ", 'I', ALLOY.ingot(), 'P', ALLOY.plateCast()); addRecipeAuto(new ItemStack(ModBlocks.cm_block, 4, 2), " I ", "IPI", " I ", 'I', DESH.ingot(), 'P', DESH.plateCast()); addRecipeAuto(new ItemStack(ModBlocks.cm_block, 4, 3), " I ", "IPI", " I ", 'I', ANY_RESISTANTALLOY.ingot(), 'P', ANY_RESISTANTALLOY.plateCast()); - + for(int i = 0; i < 4; i++) { addRecipeAuto(new ItemStack(ModBlocks.cm_sheet, 16, i), "BB", "BB", 'B', new ItemStack(ModBlocks.cm_block, 1, i)); addRecipeAuto(new ItemStack(ModBlocks.cm_tank, 4, i), " B ", "BGB", " B ", 'B', new ItemStack(ModBlocks.cm_block, 1, i), 'G', KEY_ANYGLASS); @@ -1163,39 +1143,39 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.plushie, 1, PlushieType.YOMI.ordinal()), "LCR", 'L', "cropCarrot", 'C', ModItems.rag, 'R', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE)); addRecipeAuto(new ItemStack(ModBlocks.plushie, 1, PlushieType.NUMBERNINE.ordinal()), " C ", "LCR", " C ", 'L', ModItems.cigarette, 'C', ModItems.rag, 'R', COAL.gem()); } - + public static void crumple() { - + List targets = new ArrayList(); - + if(GeneralConfig.enableMekanismChanges) { - + if(Loader.isModLoaded("Mekanism")) { Block mb = (Block) Block.blockRegistry.getObject("Mekanism:MachineBlock"); Item disassembler = (Item) Item.itemRegistry.getObject("Mekanism:AtomicDisassembler"); targets.add(new ItemStack(mb, 1, 4)); // digiminer targets.add(new ItemStack(disassembler)); // atomic disassembler } - + if(Loader.isModLoaded("MekanismGenerators")) { Block mb = (Block) Block.blockRegistry.getObject("MekanismGenerators:Generator"); targets.add(new ItemStack(mb, 1, 6)); // wind turbine } - + List toDestroy = new ArrayList(); - + for(Object o : net.minecraft.item.crafting.CraftingManager.getInstance().getRecipeList()) { - + if(o instanceof IRecipe) { IRecipe rec = (IRecipe)o; ItemStack stack = rec.getRecipeOutput(); - + for(ItemStack target : targets) { if(stack != null && stack.getItem() == target.getItem() && stack.getItemDamage() == target.getItemDamage()) toDestroy.add(rec); } } } - + if(toDestroy.size() > 0) { net.minecraft.item.crafting.CraftingManager.getInstance().getRecipeList().removeAll(toDestroy); } @@ -1204,26 +1184,26 @@ public class CraftingManager { Item disassembler = (Item) Item.itemRegistry.getObject("Mekanism:AtomicDisassembler"); if(disassembler != null) addRecipeAuto(new ItemStack(disassembler, 1), "GAG", "EIE", " I ", 'G', GOLD.plateCast(), 'A', "alloyUltimate", 'E', "battery", 'I', "ingotRefinedObsidian"); } - + if(Loader.isModLoaded("MekanismGenerators")) { Block generator = (Block) Block.blockRegistry.getObject("MekanismGenerators:Generator"); if(generator != null) addRecipeAuto(new ItemStack(generator, 1, 6), " T ", "TAT", "BCB", 'T', TI.plateCast(), 'A', "alloyAdvanced", 'B', "battery", 'C', ANY_PLASTIC.ingot()); } } } - + //option 1: find every entry that needs to be ore dicted and change the recipe method by hand and commit to doing it right in the future //option 2: just make the computer do all the stupid work for us public static void addRecipeAuto(ItemStack result, Object... ins) { - + boolean shouldUseOD = false; boolean engage = false; - + for(int i = 0; i < ins.length; i++) { Object ingredient = ins[i]; - + if(ingredient instanceof String) { - + if(engage) { shouldUseOD = true; break; @@ -1232,26 +1212,26 @@ public class CraftingManager { engage = true; } } - + if(shouldUseOD) GameRegistry.addRecipe(new ShapedOreRecipe(result, ins)); else GameRegistry.addRecipe(result, ins); } - + public static void addShapelessAuto(ItemStack result, Object... ins) { - + boolean shouldUseOD = false; - + for(int i = 0; i < ins.length; i ++) { Object ingredient = ins[i]; - + if(ingredient instanceof String) { shouldUseOD = true; break; } } - + if(shouldUseOD) GameRegistry.addRecipe(new ShapelessOreRecipe(result, ins)); else diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 78f5f6034..97ff87f63 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -3,7 +3,6 @@ package com.hbm.main; import com.google.common.collect.ImmutableList; import com.hbm.blocks.BlockEnums.EnumStoneType; import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.generic.BlockMotherOfAllOres; import com.hbm.blocks.generic.BlockToolConversion; import com.hbm.commands.*; import com.hbm.config.*; @@ -18,6 +17,7 @@ import com.hbm.handler.imc.IMCBlastFurnace; import com.hbm.handler.imc.IMCCentrifuge; import com.hbm.handler.imc.IMCCrystallizer; import com.hbm.handler.imc.IMCHandler; +import com.hbm.handler.neutron.NeutronHandler; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.hazard.HazardRegistry; @@ -29,7 +29,6 @@ import com.hbm.inventory.material.Mats; import com.hbm.inventory.recipes.*; import com.hbm.inventory.recipes.anvil.AnvilRecipes; import com.hbm.inventory.recipes.loader.SerializableRecipe; -import com.hbm.items.ItemAmmoEnums.Ammo4Gauge; import com.hbm.items.ItemEnums.EnumAchievementType; import com.hbm.items.ModItems; import com.hbm.items.tool.ItemFertilizer; @@ -42,7 +41,6 @@ import com.hbm.saveddata.satellites.Satellite; import com.hbm.tileentity.TileMappings; import com.hbm.tileentity.bomb.TileEntityLaunchPadBase; import com.hbm.tileentity.bomb.TileEntityNukeCustom; -import com.hbm.tileentity.machine.TileEntityNukeFurnace; import com.hbm.tileentity.machine.rbmk.RBMKDials; import com.hbm.util.*; import com.hbm.world.biome.BiomeGenCraterBase; @@ -100,7 +98,7 @@ import java.util.Random; @Mod(modid = RefStrings.MODID, name = RefStrings.NAME, version = RefStrings.VERSION) public class MainRegistry { - + @Instance(RefStrings.MODID) public static MainRegistry instance; @@ -155,7 +153,7 @@ public class MainRegistry { public static ArmorMaterial aMatBismuth = EnumHelper.addArmorMaterial("HBM_BISMUTH", 100, new int[] { 3, 8, 6, 3 }, 100); // Creative Tabs - + public static CreativeTabs partsTab = new PartsTab(CreativeTabs.getNextID(), "tabParts"); // ingots, nuggets, wires, machine parts public static CreativeTabs controlTab = new ControlTab(CreativeTabs.getNextID(), "tabControl"); // items that belong in machines, fuels, etc public static CreativeTabs templateTab = new TemplateTab(CreativeTabs.getNextID(), "tabTemplate"); // templates, siren tracks @@ -170,9 +168,7 @@ public class MainRegistry { public static Achievement achSacrifice; public static Achievement achImpossible; public static Achievement achTOB; - public static Achievement achFreytag; public static Achievement achPotato; - public static Achievement achC44; public static Achievement achC20_5; public static Achievement achFiend; public static Achievement achFiend2; @@ -183,7 +179,6 @@ public class MainRegistry { public static Achievement achSomeWounds; public static Achievement achSlimeball; public static Achievement achSulfuric; - public static Achievement achWitchtaunter; public static Achievement achGoFish; public static Achievement achNo9; public static Achievement achInferno; @@ -202,7 +197,7 @@ public class MainRegistry { public static Achievement digammaKnow; public static Achievement digammaKauaiMoho; public static Achievement digammaUpOnTop; - + public static Achievement achBurnerPress; public static Achievement achBlastFurnace; public static Achievement achAssembly; @@ -234,10 +229,10 @@ public class MainRegistry { public static Achievement achBreeding; public static Achievement achFusion; public static Achievement achMeltdown; - + public static int generalOverride = 0; public static int polaroidID = 1; - + public static long startupTime = 0; public static File configDir; public static File configHbmDir; @@ -246,13 +241,14 @@ public class MainRegistry { @EventHandler public void PreLoad(FMLPreInitializationEvent PreEvent) { - + CrashHelper.init(); + startupTime = System.currentTimeMillis(); configDir = PreEvent.getModConfigurationDirectory(); configHbmDir = new File(configDir.getAbsolutePath() + File.separatorChar + "hbmConfig"); if(!configHbmDir.exists()) configHbmDir.mkdir(); - + logger.info("Let us celebrate the fact that the logger finally works again!"); // Reroll Polaroid @@ -267,11 +263,12 @@ public class MainRegistry { //ShadyUtil.test(); loadConfig(PreEvent); HbmPotion.init(); - + /* For whichever fucking reason, replacing the bolt items with a bolt autogen broke all autogen items, most likely due to the load order. * This "fix" just makes sure that the material system is loaded first no matter what. */ Mats.MAT_STONE.getUnlocalizedName(); Fluids.init(); + proxy.registerPreRenderInfo(); ModBlocks.mainRegistry(); ModItems.mainRegistry(); proxy.registerRenderInfo(); @@ -285,20 +282,13 @@ public class MainRegistry { SiegeTier.registerTiers(); HazardRegistry.registerItems(); HazardRegistry.registerTrafos(); - + OreDictManager oreMan = new OreDictManager(); MinecraftForge.EVENT_BUS.register(oreMan); //OreRegisterEvent OreDictManager.registerGroups(); //important to run first OreDictManager.registerOres(); - - if(WorldConfig.enableCraterBiomes) BiomeGenCraterBase.initDictionary(); - /*Library.superuser.add("192af5d7-ed0f-48d8-bd89-9d41af8524f8"); - Library.superuser.add("5aee1e3d-3767-4987-a222-e7ce1fbdf88e"); - Library.superuser.add("937c9804-e11f-4ad2-a5b1-42e62ac73077"); - Library.superuser.add("3af1c262-61c0-4b12-a4cb-424cc3a9c8c0"); - Library.superuser.add("4729b498-a81c-42fd-8acd-20d6d9f759e0"); - Library.superuser.add("c3f5e449-6d8c-4fe3-acc9-47ef50e7e7ae");*/ + if(WorldConfig.enableCraterBiomes) BiomeGenCraterBase.initDictionary(); aMatSchrab.customCraftingMaterial = ModItems.ingot_schrabidium; aMatHaz.customCraftingMaterial = ModItems.hazmat_cloth; @@ -325,13 +315,13 @@ public class MainRegistry { tMatDesh.setRepairItem(new ItemStack(ModItems.ingot_desh)); NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GUIHandler()); - + TileMappings.writeMappings(); MachineDynConfig.initialize(); TileEntityLaunchPadBase.registerLaunchables(); - + for(Entry, String[]> e : TileMappings.map.entrySet()) { - + if(e.getValue().length == 1) GameRegistry.registerTileEntity(e.getKey(), e.getValue()[0]); else @@ -354,7 +344,7 @@ public class MainRegistry { EntityMappings.writeMappings(); //CompatNER.init(); - + ForgeChunkManager.setForcedChunkLoadingCallback(this, new LoadingCallback() { @Override @@ -642,7 +632,7 @@ public class MainRegistry { private boolean dispenseSound = true; @Override protected ItemStack dispenseStack(IBlockSource source, ItemStack stack) { - + EnumFacing facing = BlockDispenser.func_149937_b(source.getBlockMetadata()); World world = source.getWorld(); int x = source.getXInt() + facing.getFrontOffsetX(); @@ -663,29 +653,26 @@ public class MainRegistry { @EventHandler public static void load(FMLInitializationEvent event) { - + RodRecipes.registerInit(); achSacrifice = new Achievement("achievement.sacrifice", "sacrifice", -3, 1, ModItems.burnt_bark, null).initIndependentStat().setSpecial().registerStat(); achImpossible = new Achievement("achievement.impossible", "impossible", 18, 10, ModItems.nothing, null).initIndependentStat().setSpecial().registerStat(); achTOB = new Achievement("achievement.tasteofblood", "tasteofblood", 3, 10, new ItemStack(ModItems.fluid_icon, 1, Fluids.ASCHRAB.getID()), null).initIndependentStat().setSpecial().registerStat(); achGoFish = new Achievement("achievement.goFish", "goFish", 5, 10, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.GOFISH), null).initIndependentStat().setSpecial().registerStat(); - achFreytag = new Achievement("achievement.freytag", "freytag", 0, -4, ModItems.gun_mp40, null).initIndependentStat().setSpecial().registerStat(); achPotato = new Achievement("achievement.potato", "potato", -2, -2, ModItems.battery_potatos, null).initIndependentStat().setSpecial().registerStat(); - achC44 = new Achievement("achievement.c44", "c44", 2, -4, ModItems.gun_revolver_pip, null).initIndependentStat().setSpecial().registerStat(); achC20_5 = new Achievement("achievement.c20_5", "c20_5", 3, 6, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.QUESTIONMARK), null).initIndependentStat().setSpecial().registerStat(); achFiend = new Achievement("achievement.fiend", "fiend", -6, 8, ModItems.shimmer_sledge, null).initIndependentStat().setSpecial().registerStat(); achFiend2 = new Achievement("achievement.fiend2", "fiend2", -4, 9, ModItems.shimmer_axe, null).initIndependentStat().setSpecial().registerStat(); achStratum = new Achievement("achievement.stratum", "stratum", -4, -2, new ItemStack(ModBlocks.stone_gneiss), null).initIndependentStat().setSpecial().registerStat(); achOmega12 = new Achievement("achievement.omega12", "omega12", 17, -1, ModItems.particle_digamma, null).initIndependentStat().setSpecial().registerStat(); - achWitchtaunter = new Achievement("achievement.witchtaunter", "witchtaunter", -8, 7, ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.VAMPIRE), null).initIndependentStat().setSpecial().registerStat(); achNo9 = new Achievement("achievement.no9", "no9", -8, 12, ModItems.no9, null).initIndependentStat().registerStat(); achSlimeball = new Achievement("achievement.slimeball", "slimeball", -10, 6, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.ACID), null).initIndependentStat().registerStat(); achSulfuric = new Achievement("achievement.sulfuric", "sulfuric", -10, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.BALLS), achSlimeball).initIndependentStat().setSpecial().registerStat(); achInferno = new Achievement("achievement.inferno", "inferno", -8, 10, ModItems.canister_napalm, null).initIndependentStat().setSpecial().registerStat(); achRedRoom = new Achievement("achievement.redRoom", "redRoom", -10, 10, ModItems.key_red, null).initIndependentStat().setSpecial().registerStat(); - + bobHidden = new Achievement("achievement.hidden", "hidden", 15, -4, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.QUESTIONMARK), null).initIndependentStat().registerStat(); horizonsStart = new Achievement("achievement.horizonsStart", "horizonsStart", -5, 4, ModItems.sat_gerald, null).initIndependentStat().registerStat(); @@ -702,13 +689,13 @@ public class MainRegistry { achRadDeath = new Achievement("achievement.radDeath", "radDeath", 0, 6, Items.skull, achRadPoison).initIndependentStat().registerStat().setSpecial(); achSomeWounds = new Achievement("achievement.someWounds", "someWounds", -2, 10, ModItems.injector_knife, null).initIndependentStat().registerStat(); - + digammaSee = new Achievement("achievement.digammaSee", "digammaSee", -1, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.DIGAMMASEE), null).initIndependentStat().registerStat(); digammaFeel = new Achievement("achievement.digammaFeel", "digammaFeel", 1, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.DIGAMMAFEEL), digammaSee).initIndependentStat().registerStat(); digammaKnow = new Achievement("achievement.digammaKnow", "digammaKnow", 3, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.DIGAMMAKNOW), digammaFeel).initIndependentStat().registerStat().setSpecial(); digammaKauaiMoho = new Achievement("achievement.digammaKauaiMoho", "digammaKauaiMoho", 5, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.DIGAMMAKAUAIMOHO), digammaKnow).initIndependentStat().registerStat().setSpecial(); digammaUpOnTop = new Achievement("achievement.digammaUpOnTop", "digammaUpOnTop", 7, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.DIGAMMAUPONTOP), digammaKauaiMoho).initIndependentStat().registerStat().setSpecial(); - + //progression achieves achBurnerPress = new Achievement("achievement.burnerPress", "burnerPress", 0, 0, new ItemStack(ModBlocks.machine_press), null).initIndependentStat().registerStat(); achBlastFurnace = new Achievement("achievement.blastFurnace", "blastFurnace", 1, 3, new ItemStack(ModBlocks.machine_difurnace_off), achBurnerPress).initIndependentStat().registerStat(); @@ -741,75 +728,72 @@ public class MainRegistry { achMeltdown = new Achievement("achievement.meltdown", "meltdown", 15, -7, ModItems.powder_balefire, achFusion).initIndependentStat().setSpecial().registerStat(); achRedBalloons = new Achievement("achievement.redBalloons", "redBalloons", 11, 0, ModItems.missile_nuclear, achPolymer).initIndependentStat().setSpecial().registerStat(); achManhattan = new Achievement("achievement.manhattan", "manhattan", 11, -4, new ItemStack(ModBlocks.nuke_boy), achPolymer).initIndependentStat().setSpecial().registerStat(); - + AchievementPage.registerAchievementPage(new AchievementPage("Nuclear Tech", new Achievement[] { - achSacrifice, - achImpossible, - achTOB, - achGoFish, - achFreytag, - achPotato, - achC44, - achC20_5, - achFiend, - achFiend2, - achStratum, - achOmega12, - bobHidden, - horizonsStart, - horizonsEnd, - horizonsBonus, - achRadPoison, - achRadDeath, - achWitchtaunter, - achNo9, - achInferno, - achRedRoom, - achSlimeball, - achSulfuric, - bossCreeper, - bossMeltdown, - bossMaskman, - bossWorm, - bossUFO, - achSomeWounds, - digammaSee, - digammaFeel, - digammaKnow, - digammaKauaiMoho, - digammaUpOnTop, - - achBurnerPress, - achBlastFurnace, - achAssembly, - achSelenium, - achChemplant, - achConcrete, - achPolymer, - achDesh, - achTantalum, - achGasCent, - achCentrifuge, - achFOEQ, - achSoyuz, - achSpace, - achSchrab, - achAcidizer, - achRadium, - achTechnetium, - achZIRNOXBoom, - achChicagoPile, - achSILEX, - achWatz, - achWatzBoom, - achRBMK, - achRBMKBoom, - achBismuth, - achBreeding, - achFusion, - achMeltdown, - achRedBalloons, - achManhattan + achSacrifice, + achImpossible, + achTOB, + achGoFish, + achPotato, + achC20_5, + achFiend, + achFiend2, + achStratum, + achOmega12, + bobHidden, + horizonsStart, + horizonsEnd, + horizonsBonus, + achRadPoison, + achRadDeath, + achNo9, + achInferno, + achRedRoom, + achSlimeball, + achSulfuric, + bossCreeper, + bossMeltdown, + bossMaskman, + bossWorm, + bossUFO, + achSomeWounds, + digammaSee, + digammaFeel, + digammaKnow, + digammaKauaiMoho, + digammaUpOnTop, + + achBurnerPress, + achBlastFurnace, + achAssembly, + achSelenium, + achChemplant, + achConcrete, + achPolymer, + achDesh, + achTantalum, + achGasCent, + achCentrifuge, + achFOEQ, + achSoyuz, + achSpace, + achSchrab, + achAcidizer, + achRadium, + achTechnetium, + achZIRNOXBoom, + achChicagoPile, + achSILEX, + achWatz, + achWatzBoom, + achRBMK, + achRBMKBoom, + achBismuth, + achBreeding, + achFusion, + achMeltdown, + achRedBalloons, + achManhattan })); // MUST be initialized AFTER achievements!! @@ -825,15 +809,15 @@ public class MainRegistry { } } } - + @EventHandler public static void initIMC(IMCEvent event) { - + ImmutableList inbox = event.getMessages(); //tee-hee - + for(IMCMessage message : inbox) { IMCHandler handler = IMCHandler.getHandler(message.key); - + if(handler != null) { MainRegistry.logger.info("Received IMC of type >" + message.key + "< from " + message.getSender() + "!"); handler.process(message); @@ -845,38 +829,37 @@ public class MainRegistry { @EventHandler public static void PostLoad(FMLPostInitializationEvent PostEvent) { - TileEntityNukeFurnace.registerFuels(); MagicRecipes.register(); LemegetonRecipes.register(); SILEXRecipes.register(); RefineryRecipes.registerRefinery(); GasCentrifugeRecipes.register(); - + CustomMachineConfigJSON.initialize(); //the good stuff SerializableRecipe.registerAllHandlers(); SerializableRecipe.initialize(); - + //Anvil has to come after serializables (i.e. anvil) AnvilRecipes.register(); //has to register after cracking, and therefore after all serializable recipes RadiolysisRecipes.registerRadiolysis(); - + FalloutConfigJSON.initialize(); ItemPoolConfigJSON.initialize(); + ClientConfig.initConfig(); TileEntityNukeCustom.registerBombItems(); ArmorUtil.register(); HazmatRegistry.registerHazmats(); + DamageResistanceHandler.init(); FluidContainerRegistry.register(); BlockToolConversion.registerRecipes(); AchievementHandler.register(); proxy.registerMissileItems(); - - BlockMotherOfAllOres.init(); // Load compatibility for OC. CompatHandler.init(); @@ -891,13 +874,15 @@ public class MainRegistry { new OreCave(ModBlocks.stone_resource, 1).setThreshold(1.75D).setRangeMult(20).setYLevel(25).setMaxRange(20); //asbestos new OreLayer3D(ModBlocks.stone_resource, EnumStoneType.HEMATITE.ordinal()).setScaleH(0.04D).setScaleV(0.25D).setThreshold(230); new OreLayer3D(ModBlocks.stone_resource, EnumStoneType.BAUXITE.ordinal()).setScaleH(0.03D).setScaleV(0.15D).setThreshold(300); + new OreLayer3D(ModBlocks.stone_resource, EnumStoneType.MALACHITE.ordinal()).setScaleH(0.1D).setScaleV(0.15D).setThreshold(275); //new BiomeCave().setThreshold(1.5D).setRangeMult(20).setYLevel(40).setMaxRange(20); //new OreLayer(Blocks.coal_ore, 0.2F).setThreshold(4).setRangeMult(3).setYLevel(70); BedrockOre.init(); - + Compat.handleRailcraftNonsense(); SuicideThreadDump.register(); - + CommandReloadClient.register(); + //ExplosionTests.runTest(); } @@ -916,7 +901,7 @@ public class MainRegistry { FMLCommonHandler.instance().bus().register(impactHandler); MinecraftForge.EVENT_BUS.register(impactHandler); MinecraftForge.TERRAIN_GEN_BUS.register(impactHandler); - + PacketDispatcher.registerPackets(); ChunkRadiationManager radiationSystem = new ChunkRadiationManager(); @@ -926,14 +911,21 @@ public class MainRegistry { PollutionHandler pollution = new PollutionHandler(); MinecraftForge.EVENT_BUS.register(pollution); FMLCommonHandler.instance().bus().register(pollution); - + + DamageResistanceHandler dmgHandler = new DamageResistanceHandler(); + MinecraftForge.EVENT_BUS.register(dmgHandler); + + NeutronHandler neutronHandler = new NeutronHandler(); + MinecraftForge.EVENT_BUS.register(neutronHandler); + FMLCommonHandler.instance().bus().register(neutronHandler); + if(event.getSide() == Side.CLIENT) { HbmKeybinds.register(); HbmKeybinds keyHandler = new HbmKeybinds(); FMLCommonHandler.instance().bus().register(keyHandler); } } - + //yes kids, this is where we would usually register commands @EventHandler public void serverStart(FMLServerStartingEvent event) { @@ -943,18 +935,19 @@ public class MainRegistry { event.registerServerCommand(new CommandDebugChunkLoad()); event.registerServerCommand(new CommandSatellites()); event.registerServerCommand(new CommandRadiation()); + event.registerServerCommand(new CommandPacketInfo()); } - + @EventHandler public void serverStart(FMLServerStartedEvent event) { - + if(GeneralConfig.enableStatReRegistering) { logger.info("Attempting to re-register item stats..."); StatHelper.resetStatShitFuck(); //shit yourself logger.info("Item stats re-registered"); } } - + private void loadConfig(FMLPreInitializationEvent event) { Configuration config = new Configuration(event.getSuggestedConfigurationFile()); @@ -972,30 +965,30 @@ public class MainRegistry { StructureConfig.loadFromConfig(config); config.save(); - + try { if(GeneralConfig.enableThermosPreventer && Class.forName("thermos.ThermosClassTransformer") != null) { - throw new IllegalStateException("The mod tried to start on a Thermos or it's fork server and therefore stopped. To allow the server to start on Thermos, change the appropriate " - + "config entry (0.00 in hbm.cfg). This was done because, by default, Thermos " - + "uses a so-called \"optimization\" feature that reduces tile ticking a lot, which will inevitably break a lot of machines. Most people aren't even aware " - + "of this, and start blaming random mods for all their stuff breaking. In order to adjust or even disable this feature, edit \"tileentities.yml\" in your " - + "Thermos install folder. If you believe that crashing the server until a config option is changed is annoying, then I would agree, but it's still preferable " - + "over wasting hours trying to fix an issue that is really just an \"intended feature\" added by Thermos itself, and not a bug in the mod. You'll have to " - + "change Thermos' config anyway so that extra change in NTM's config can't be that big of a burden."); + throw new IllegalStateException("The mod tried to start on a Thermos or its fork server and therefore stopped. To allow the server to start on Thermos, change the appropriate " + + "config entry (0.00 in hbm.cfg). This was done because, by default, Thermos " + + "uses a so-called \"optimization\" feature that reduces tile ticking a lot, which will inevitably break a lot of machines. Most people aren't even aware " + + "of this, and start blaming random mods for all their stuff breaking. In order to adjust or even disable this feature, edit \"tileentities.yml\" in your " + + "Thermos install folder. If you believe that crashing the server until a config option is changed is annoying, then I would agree, but it's still preferable " + + "over wasting hours trying to fix an issue that is really just an \"intended feature\" added by Thermos itself, and not a bug in the mod. You'll have to " + + "change Thermos' config anyway so that extra change in NTM's config can't be that big of a burden."); } } catch(ClassNotFoundException e) { } } - + private static HashSet ignoreMappings = new HashSet(); private static HashMap remapItems = new HashMap(); - + @EventHandler public void handleMissingMappings(FMLMissingMappingsEvent event) { - + ignoreMappings.clear(); remapItems.clear(); - + /// IGNORE /// for(int i = 1; i <= 8; i++) ignoreMappings.add("hbm:item.gasflame" + i); ignoreMappings.add("hbm:item.cyclotron_tower"); @@ -1421,15 +1414,240 @@ public class MainRegistry { ignoreMappings.add("hbm:item.gas6"); ignoreMappings.add("hbm:item.gas7"); ignoreMappings.add("hbm:item.gas8"); - + ignoreMappings.add("hbm:tile.brick_forgotten"); + ignoreMappings.add("hbm:tile.watz_conductor"); + ignoreMappings.add("hbm:item.flame_1"); + ignoreMappings.add("hbm:item.flame_2"); + ignoreMappings.add("hbm:item.flame_3"); + ignoreMappings.add("hbm:item.flame_3"); + ignoreMappings.add("hbm:item.flame_4"); + ignoreMappings.add("hbm:item.flame_5"); + ignoreMappings.add("hbm:item.flame_6"); + ignoreMappings.add("hbm:item.flame_7"); + ignoreMappings.add("hbm:item.flame_8"); + ignoreMappings.add("hbm:item.flame_9"); + ignoreMappings.add("hbm:item.flame_10"); + ignoreMappings.add("hbm:tile.dummy_block_uf6"); + ignoreMappings.add("hbm:tile.dummy_block_puf6"); + ignoreMappings.add("hbm:item.wire_aluminium"); + ignoreMappings.add("hbm:item.wire_copper"); + ignoreMappings.add("hbm:item.wire_red_copper"); + ignoreMappings.add("hbm:item.wire_tungsten"); + ignoreMappings.add("hbm:item.wire_gold"); + ignoreMappings.add("hbm:item.wire_schrabidium"); + ignoreMappings.add("hbm:item.wire_advanced_alloy"); + ignoreMappings.add("hbm:item.wire_magnetized_tungsten"); + ignoreMappings.add("hbm:item.nugget_weidanium"); + ignoreMappings.add("hbm:item.nugget_reiium"); + ignoreMappings.add("hbm:item.nugget_unobtainium"); + ignoreMappings.add("hbm:item.nugget_daffergon"); + ignoreMappings.add("hbm:item.nugget_verticium"); + ignoreMappings.add("hbm:item.ingot_weidanium"); + ignoreMappings.add("hbm:item.ingot_reiium"); + ignoreMappings.add("hbm:item.ingot_unobtainium"); + ignoreMappings.add("hbm:item.ingot_daffergon"); + ignoreMappings.add("hbm:item.ingot_verticium"); + ignoreMappings.add("hbm:item.powder_weidanium"); + ignoreMappings.add("hbm:item.powder_reiium"); + ignoreMappings.add("hbm:item.powder_unobtainium"); + ignoreMappings.add("hbm:item.powder_daffergon"); + ignoreMappings.add("hbm:item.powder_verticium"); + ignoreMappings.add("hbm:tile.ore_random"); + ignoreMappings.add("hbm:item.crate_caller"); + ignoreMappings.add("hbm:item.pellet_rtg_berkelium"); + ignoreMappings.add("hbm:item.folly_shell"); + ignoreMappings.add("hbm:item.folly_bullet"); + ignoreMappings.add("hbm:item.folly_bullet_nuclear"); + ignoreMappings.add("hbm:item.folly_bullet_du"); + ignoreMappings.add("hbm:item.ammo_folly"); + ignoreMappings.add("hbm:item.ammo_folly_nuclear"); + ignoreMappings.add("hbm:item.ammo_folly_du"); + ignoreMappings.add("hbm:item.clip_revolver_iron"); + ignoreMappings.add("hbm:item.clip_revolver"); + ignoreMappings.add("hbm:item.clip_revolver_gold"); + ignoreMappings.add("hbm:item.clip_revolver_lead"); + ignoreMappings.add("hbm:item.clip_revolver_schrabidium"); + ignoreMappings.add("hbm:item.clip_revolver_cursed"); + ignoreMappings.add("hbm:item.clip_revolver_nightmare"); + ignoreMappings.add("hbm:item.clip_revolver_nightmare2"); + ignoreMappings.add("hbm:item.clip_revolver_pip"); + ignoreMappings.add("hbm:item.clip_revolver_nopip"); + ignoreMappings.add("hbm:item.clip_rpg"); + ignoreMappings.add("hbm:item.clip_stinger"); + ignoreMappings.add("hbm:item.clip_fatman"); + ignoreMappings.add("hbm:item.clip_mirv"); + ignoreMappings.add("hbm:item.clip_bf"); + ignoreMappings.add("hbm:item.clip_mp40"); + ignoreMappings.add("hbm:item.clip_uzi"); + ignoreMappings.add("hbm:item.clip_uboinik"); + ignoreMappings.add("hbm:item.clip_lever_action"); + ignoreMappings.add("hbm:item.clip_bolt_action"); + ignoreMappings.add("hbm:item.clip_xvl1456"); + ignoreMappings.add("hbm:item.clip_osipr"); + ignoreMappings.add("hbm:item.clip_immolator"); + ignoreMappings.add("hbm:item.clip_cryolator"); + ignoreMappings.add("hbm:item.clip_mp"); + ignoreMappings.add("hbm:item.clip_emp"); + ignoreMappings.add("hbm:item.clip_jack"); + ignoreMappings.add("hbm:item.clip_spark"); + ignoreMappings.add("hbm:item.clip_hp"); + ignoreMappings.add("hbm:item.clip_euthanasia"); + ignoreMappings.add("hbm:item.clip_defabricator"); + ignoreMappings.add("hbm:item.ammo_folly_du"); + ignoreMappings.add("hbm:tile.#null"); + ignoreMappings.add("hbm:tile.#void"); + ignoreMappings.add("hbm:tile.#ngtv"); + ignoreMappings.add("hbm:item.gun_rpg"); + ignoreMappings.add("hbm:item.gun_karl"); + ignoreMappings.add("hbm:item.gun_hk69"); + ignoreMappings.add("hbm:item.gun_skystinger"); + ignoreMappings.add("hbm:item.gun_revolver"); + ignoreMappings.add("hbm:item.gun_revolver_saturnite"); + ignoreMappings.add("hbm:item.gun_revolver_gold"); + ignoreMappings.add("hbm:item.gun_revolver_schrabidium"); + ignoreMappings.add("hbm:item.gun_revolver_cursed"); + ignoreMappings.add("hbm:item.gun_revolver_nightmare"); + ignoreMappings.add("hbm:item.gun_revolver_nightmare2"); + ignoreMappings.add("hbm:item.gun_revolver_pip"); + ignoreMappings.add("hbm:item.gun_revolver_nopip"); + ignoreMappings.add("hbm:item.gun_revolver_blackjack"); + ignoreMappings.add("hbm:item.gun_revolver_silver"); + ignoreMappings.add("hbm:item.gun_revolver_red"); + ignoreMappings.add("hbm:item.gun_bio_revolver"); + ignoreMappings.add("hbm:item.gun_deagle"); + ignoreMappings.add("hbm:item.gun_flechette"); + ignoreMappings.add("hbm:item.gun_ar15"); + ignoreMappings.add("hbm:item.gun_calamity"); + ignoreMappings.add("hbm:item.gun_lacunae"); + ignoreMappings.add("hbm:item.gun_proto"); + ignoreMappings.add("hbm:item.gun_mirv"); + ignoreMappings.add("hbm:item.gun_bf"); + ignoreMappings.add("hbm:item.gun_mp40"); + ignoreMappings.add("hbm:item.gun_thompson"); + ignoreMappings.add("hbm:item.gun_uzi_silencer"); + ignoreMappings.add("hbm:item.gun_uzi_saturnite"); + ignoreMappings.add("hbm:item.gun_uzi_saturnite_silencer"); + ignoreMappings.add("hbm:item.gun_uboinik"); + ignoreMappings.add("hbm:item.gun_remington"); + ignoreMappings.add("hbm:item.gun_supershotgun"); + ignoreMappings.add("hbm:item.gun_benelli"); + ignoreMappings.add("hbm:item.gun_ks23"); + ignoreMappings.add("hbm:item.gun_sauer"); + ignoreMappings.add("hbm:item.gun_lever_action"); + ignoreMappings.add("hbm:item.gun_lever_action_dark"); + ignoreMappings.add("hbm:item.gun_lever_action_sonata"); + ignoreMappings.add("hbm:item.gun_bolt_action"); + ignoreMappings.add("hbm:item.gun_bolt_action_green"); + ignoreMappings.add("hbm:item.gun_bolt_action_saturnite"); + ignoreMappings.add("hbm:item.gun_mymy"); + ignoreMappings.add("hbm:item.gun_b93"); + ignoreMappings.add("hbm:item.gun_xvl1456"); + ignoreMappings.add("hbm:item.gun_xvl1456_ammo"); + ignoreMappings.add("hbm:item.gun_osipr"); + ignoreMappings.add("hbm:item.gun_osipr_ammo"); + ignoreMappings.add("hbm:item.gun_osipr_ammo2"); + ignoreMappings.add("hbm:item.gun_immolator"); + ignoreMappings.add("hbm:item.gun_immolator_ammo"); + ignoreMappings.add("hbm:item.gun_cryolator"); + ignoreMappings.add("hbm:item.gun_mp"); + ignoreMappings.add("hbm:item.gun_bolter_digamma"); + ignoreMappings.add("hbm:item.gun_zomg"); + ignoreMappings.add("hbm:item.gun_super_shotgun"); + ignoreMappings.add("hbm:item.gun_moist_nugget"); + ignoreMappings.add("hbm:item.gun_revolver_inverted"); + ignoreMappings.add("hbm:item.gun_emp"); + ignoreMappings.add("hbm:item.gun_emp_ammo"); + ignoreMappings.add("hbm:item.gun_jack"); + ignoreMappings.add("hbm:item.gun_jack_ammo"); + ignoreMappings.add("hbm:item.gun_spark"); + ignoreMappings.add("hbm:item.gun_spark_ammo"); + ignoreMappings.add("hbm:item.gun_hp"); + ignoreMappings.add("hbm:item.gun_hp_ammo"); + ignoreMappings.add("hbm:item.gun_euthanasia"); + ignoreMappings.add("hbm:item.gun_euthanasia_ammo"); + ignoreMappings.add("hbm:item.gun_defabricator"); + ignoreMappings.add("hbm:item.gun_defabricator_ammo"); + ignoreMappings.add("hbm:item.gun_vortex"); + ignoreMappings.add("hbm:item.gun_waluigi"); + ignoreMappings.add("hbm:item.gun_darter"); + ignoreMappings.add("hbm:item.gun_glass_cannon"); + ignoreMappings.add("hbm:item.gun_lunatic_marksman"); + ignoreMappings.add("hbm:item.gun_uac_pistol"); + ignoreMappings.add("hbm:item.ammo_misc"); + ignoreMappings.add("hbm:item.ammo_12gauge"); + ignoreMappings.add("hbm:item.ammo_20gauge"); + ignoreMappings.add("hbm:item.ammo_4gauge"); + ignoreMappings.add("hbm:item.ammo_357"); + ignoreMappings.add("hbm:item.ammo_44"); + ignoreMappings.add("hbm:item.ammo_5mm"); + ignoreMappings.add("hbm:item.ammo_9mm"); + ignoreMappings.add("hbm:item.ammo_45"); + ignoreMappings.add("hbm:item.ammo_556"); + ignoreMappings.add("hbm:item.ammo_762"); + ignoreMappings.add("hbm:item.ammo_22lr"); + ignoreMappings.add("hbm:item.ammo_50ae"); + ignoreMappings.add("hbm:item.ammo_50bmg"); + ignoreMappings.add("hbm:item.ammo_75bolt"); + ignoreMappings.add("hbm:item.ammo_rocket"); + ignoreMappings.add("hbm:item.ammo_grenade"); + ignoreMappings.add("hbm:item.ammo_shell"); + ignoreMappings.add("hbm:item.ammo_nuke"); + ignoreMappings.add("hbm:item.ammo_fuel"); + ignoreMappings.add("hbm:item.ammo_fireext"); + ignoreMappings.add("hbm:item.ammo_dart"); + ignoreMappings.add("hbm:item.ammo_stinger_rocket"); + ignoreMappings.add("hbm:item.ammo_luna_sniper"); + ignoreMappings.add("hbm:item.ammo_coilgun"); + ignoreMappings.add("hbm:item.ammo_cell"); + ignoreMappings.add("hbm:item.b_smoke1"); + ignoreMappings.add("hbm:item.b_smoke2"); + ignoreMappings.add("hbm:item.b_smoke3"); + ignoreMappings.add("hbm:item.b_smoke4"); + ignoreMappings.add("hbm:item.b_smoke5"); + ignoreMappings.add("hbm:item.b_smoke6"); + ignoreMappings.add("hbm:item.b_smoke7"); + ignoreMappings.add("hbm:item.b_smoke8"); + ignoreMappings.add("hbm:item.ln2_1"); + ignoreMappings.add("hbm:item.ln2_2"); + ignoreMappings.add("hbm:item.ln2_3"); + ignoreMappings.add("hbm:item.ln2_4"); + ignoreMappings.add("hbm:item.ln2_5"); + ignoreMappings.add("hbm:item.ln2_6"); + ignoreMappings.add("hbm:item.ln2_7"); + ignoreMappings.add("hbm:item.ln2_8"); + ignoreMappings.add("hbm:item.ln2_9"); + ignoreMappings.add("hbm:item.ln2_10"); + ignoreMappings.add("hbm:item.casing_357"); + ignoreMappings.add("hbm:item.casing_44"); + ignoreMappings.add("hbm:item.casing_9"); + ignoreMappings.add("hbm:item.casing_50"); + ignoreMappings.add("hbm:item.casing_buckshot"); + ignoreMappings.add("hbm:item.assembly_iron"); + ignoreMappings.add("hbm:item.assembly_steel"); + ignoreMappings.add("hbm:item.assembly_lead"); + ignoreMappings.add("hbm:item.assembly_gold"); + ignoreMappings.add("hbm:item.assembly_schrabidium"); + ignoreMappings.add("hbm:item.assembly_nightmare"); + ignoreMappings.add("hbm:item.assembly_desh"); + ignoreMappings.add("hbm:item.assembly_nopip"); + ignoreMappings.add("hbm:item.assembly_smg"); + ignoreMappings.add("hbm:item.assembly_556"); + ignoreMappings.add("hbm:item.assembly_762"); + ignoreMappings.add("hbm:item.assembly_45"); + ignoreMappings.add("hbm:item.assembly_uzi"); + ignoreMappings.add("hbm:item.assembly_actionexpress"); + ignoreMappings.add("hbm:item.assembly_calamity"); + ignoreMappings.add("hbm:item.assembly_lacunae"); + ignoreMappings.add("hbm:item.assembly_luna"); + /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); remapItems.put("hbm:item.man_explosive8", ModItems.explosive_lenses); remapItems.put("hbm:item.briquette_lignite", ModItems.briquette); remapItems.put("hbm:item.antiknock", ModItems.fuel_additive); - + for(MissingMapping mapping : event.get()) { - + // ignore all ammo prefixes because those are from the time we threw out all the ammo items if(mapping.name.startsWith("hbm:item.ammo_")) { mapping.ignore(); @@ -1440,9 +1658,9 @@ public class MainRegistry { mapping.ignore(); continue; } - + if(mapping.type == GameRegistry.Type.ITEM) { - + if(remapItems.get(mapping.name) != null) { mapping.remap(remapItems.get(mapping.name)); continue; diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 4f0d2f55b..bd5ec48e4 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -1,17 +1,6 @@ package com.hbm.main; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Random; -import java.util.UUID; - -import org.apache.commons.lang3.math.NumberUtils; -import org.apache.logging.log4j.Level; - +import api.hbm.energymk2.Nodespace; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import com.hbm.blocks.IStepTickReceiver; @@ -20,12 +9,10 @@ import com.hbm.blocks.generic.BlockAshes; import com.hbm.config.GeneralConfig; import com.hbm.config.MobConfig; import com.hbm.config.RadiationConfig; -import com.hbm.entity.mob.EntityCyberCrab; -import com.hbm.entity.mob.EntityDuck; -import com.hbm.entity.mob.EntityCreeperNuclear; -import com.hbm.entity.mob.EntityQuackos; +import com.hbm.entity.mob.*; +import com.hbm.entity.mob.ai.EntityAIFireGun; import com.hbm.entity.mob.EntityCreeperTainted; -import com.hbm.entity.projectile.EntityBulletBaseNT; +import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.entity.projectile.EntityBurningFOEQ; import com.hbm.entity.train.EntityRailCarBase; import com.hbm.extprop.HbmLivingProps; @@ -33,49 +20,39 @@ import com.hbm.extprop.HbmPlayerProps; import com.hbm.handler.ArmorModHandler; import com.hbm.handler.BobmazonOfferFactory; import com.hbm.handler.BossSpawnHandler; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; import com.hbm.handler.EntityEffectHandler; import com.hbm.hazard.HazardSystem; import com.hbm.interfaces.IBomb; import com.hbm.handler.HTTPHandler; import com.hbm.handler.HbmKeybinds.EnumKeybind; +import com.hbm.handler.neutron.NeutronNodeWorld; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; +import com.hbm.handler.threading.PacketThreading; import com.hbm.items.IEquipReceiver; import com.hbm.items.ModItems; -import com.hbm.items.armor.ArmorFSB; -import com.hbm.items.armor.IAttackHandler; -import com.hbm.items.armor.IDamageHandler; -import com.hbm.items.armor.ItemArmorMod; -import com.hbm.items.armor.ItemModRevive; -import com.hbm.items.armor.ItemModShackles; +import com.hbm.items.armor.*; import com.hbm.items.food.ItemConserve.EnumFoodType; import com.hbm.items.tool.ItemGuideBook.BookType; import com.hbm.items.weapon.ItemGunBase; -import com.hbm.lib.HbmCollection; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.factory.XFactory12ga; import com.hbm.lib.ModDamageSource; import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PermaSyncPacket; -import com.hbm.packet.PlayerInformPacket; +import com.hbm.packet.toclient.PermaSyncPacket; +import com.hbm.packet.toclient.PlayerInformPacket; +import com.hbm.particle.helper.BlackPowderCreator; import com.hbm.potion.HbmPotion; import com.hbm.saveddata.AuxSavedData; import com.hbm.tileentity.machine.TileEntityMachineRadarNT; +import com.hbm.tileentity.machine.rbmk.RBMKDials; import com.hbm.tileentity.network.RTTYSystem; import com.hbm.tileentity.network.RequestNetwork; -import com.hbm.util.AchievementHandler; -import com.hbm.util.ArmorRegistry; -import com.hbm.util.ArmorUtil; -import com.hbm.util.ContaminationUtil; -import com.hbm.util.EnchantmentUtil; -import com.hbm.util.EnumUtil; -import com.hbm.util.InventoryUtil; -import com.hbm.util.ShadyUtil; +import com.hbm.util.*; import com.hbm.util.ArmorRegistry.HazardClass; import com.hbm.world.generator.TimedGenerator; - -import api.hbm.energymk2.Nodespace; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent; @@ -84,20 +61,22 @@ import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.common.gameevent.TickEvent.Phase; import cpw.mods.fml.common.gameevent.TickEvent.WorldTickEvent; import cpw.mods.fml.relauncher.ReflectionHelper; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.PooledByteBufAllocator; import net.minecraft.block.Block; +import net.minecraft.command.CommandGameRule; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.EntityAITasks; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.monster.EntityCaveSpider; -import net.minecraft.entity.monster.EntityCreeper; -import net.minecraft.entity.monster.EntitySkeleton; -import net.minecraft.entity.monster.EntitySpider; -import net.minecraft.entity.monster.EntityZombie; -import net.minecraft.entity.monster.IMob; +import net.minecraft.entity.monster.*; import net.minecraft.entity.passive.EntityAnimal; import net.minecraft.entity.passive.EntityCow; import net.minecraft.entity.passive.EntityMooshroom; @@ -115,50 +94,45 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.tileentity.TileEntitySign; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.ChatStyle; -import net.minecraft.util.EntityDamageSource; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.FoodStats; -import net.minecraft.util.MathHelper; -import net.minecraft.util.Vec3; +import net.minecraft.util.*; import net.minecraft.world.World; import net.minecraftforge.common.util.FakePlayer; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.event.AnvilUpdateEvent; +import net.minecraftforge.event.CommandEvent; import net.minecraftforge.event.ServerChatEvent; import net.minecraftforge.event.entity.EntityEvent; import net.minecraftforge.event.entity.EntityEvent.EnteringChunk; import net.minecraftforge.event.entity.EntityJoinWorldEvent; import net.minecraftforge.event.entity.item.ItemTossEvent; -import net.minecraftforge.event.entity.living.LivingAttackEvent; -import net.minecraftforge.event.entity.living.LivingDeathEvent; -import net.minecraftforge.event.entity.living.LivingDropsEvent; +import net.minecraftforge.event.entity.living.*; import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent; import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; -import net.minecraftforge.event.entity.living.LivingFallEvent; -import net.minecraftforge.event.entity.living.LivingHurtEvent; -import net.minecraftforge.event.entity.living.LivingSpawnEvent; import net.minecraftforge.event.entity.player.AttackEntityEvent; import net.minecraftforge.event.entity.player.PlayerFlyableFallEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; -import net.minecraftforge.event.entity.player.PlayerUseItemEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action; +import net.minecraftforge.event.entity.player.PlayerUseItemEvent; import net.minecraftforge.event.world.BlockEvent.BreakEvent; import net.minecraftforge.event.world.WorldEvent; +import org.apache.commons.lang3.math.NumberUtils; +import org.apache.logging.log4j.Level; + +import java.lang.reflect.Field; +import java.util.*; public class ModEventHandler { - + private static Random rand = new Random(); - + @SubscribeEvent public void onPlayerLogin(PlayerEvent.PlayerLoggedInEvent event) { if(!event.player.worldObj.isRemote) { - + if(GeneralConfig.enableMOTD) { event.player.addChatMessage(new ChatComponentText("Loaded world with Hbm's Nuclear Tech Mod " + RefStrings.VERSION + " for Minecraft 1.7.10!")); - + if(HTTPHandler.newVersion) { event.player.addChatMessage( new ChatComponentText("New version " + HTTPHandler.versionNumber + " is available! Click ") @@ -174,14 +148,14 @@ public class ModEventHandler { ); } } - + if(MobConfig.enableDucks && event.player instanceof EntityPlayerMP && !event.player.getEntityData().getCompoundTag(EntityPlayer.PERSISTED_NBT_TAG).getBoolean("hasDucked")) PacketDispatcher.wrapper.sendTo(new PlayerInformPacket("Press O to Duck!", MainRegistry.proxy.ID_DUCK, 30_000), (EntityPlayerMP) event.player); - + if(GeneralConfig.enableGuideBook) { HbmPlayerProps props = HbmPlayerProps.getData(event.player); - + if(!props.hasReceivedBook) { event.player.inventory.addItemStackToInventory(new ItemStack(ModItems.book_guide, 1, BookType.STARTER.ordinal())); event.player.inventoryContainer.detectAndSendChanges(); @@ -190,17 +164,17 @@ public class ModEventHandler { } } } - + @SubscribeEvent public void onPlayerRespawn(PlayerEvent.PlayerRespawnEvent event) { - + EntityPlayer player = event.player; - + if((player.getUniqueID().toString().equals(ShadyUtil.Dr_Nostalgia) || player.getDisplayName().equals("Dr_Nostalgia")) && !player.worldObj.isRemote) { - + if(!player.inventory.hasItem(ModItems.hat)) player.inventory.addItemStackToInventory(new ItemStack(ModItems.hat)); - + if(!player.inventory.hasItem(ModItems.beta)) player.inventory.addItemStackToInventory(new ItemStack(ModItems.beta)); } @@ -208,18 +182,18 @@ public class ModEventHandler { @SubscribeEvent public void onEntityConstructing(EntityEvent.EntityConstructing event) { - + if(event.entity instanceof EntityPlayer) { - + EntityPlayer player = (EntityPlayer) event.entity; HbmPlayerProps.getData(player); //this already calls the register method if it's null so no further action required - + if(event.entity == MainRegistry.proxy.me()) BlockAshes.ashes = 0; } - + if(event.entity instanceof EntityLivingBase) { - + EntityLivingBase living = (EntityLivingBase) event.entity; HbmLivingProps.getData(living); //ditto } @@ -232,44 +206,44 @@ public class ModEventHandler { data.setKeyPressed(EnumKeybind.JETPACK, false); data.setKeyPressed(EnumKeybind.DASH, false); } - + @SubscribeEvent(priority = EventPriority.HIGHEST) public void onEntityDeathFirst(LivingDeathEvent event) { - + for(int i = 1; i < 5; i++) { - + ItemStack stack = event.entityLiving.getEquipmentInSlot(i); - + if(stack != null && stack.getItem() instanceof ItemArmor && ArmorModHandler.hasMods(stack)) { - + ItemStack revive = ArmorModHandler.pryMods(stack)[ArmorModHandler.extra]; - + if(revive != null) { - + //Classic revive if(revive.getItem() instanceof ItemModRevive) { revive.setItemDamage(revive.getItemDamage() + 1); - + if(revive.getItemDamage() >= revive.getMaxDamage()) { ArmorModHandler.removeMod(stack, ArmorModHandler.extra); } else { ArmorModHandler.applyMod(stack, revive); } - + event.entityLiving.setHealth(event.entityLiving.getMaxHealth()); event.entityLiving.addPotionEffect(new PotionEffect(Potion.resistance.id, 60, 99)); event.setCanceled(true); return; } - + //Shackles if(revive.getItem() instanceof ItemModShackles && HbmLivingProps.getRadiation(event.entityLiving) < 1000F) { - + revive.setItemDamage(revive.getItemDamage() + 1); - + int dmg = revive.getItemDamage(); ArmorModHandler.applyMod(stack, revive); - + event.entityLiving.setHealth(event.entityLiving.getMaxHealth()); HbmLivingProps.incrementRadiation(event.entityLiving, dmg * dmg); event.setCanceled(true); @@ -278,104 +252,104 @@ public class ModEventHandler { } } } - + } - + @SubscribeEvent public void onEntityDeath(LivingDeathEvent event) { - + HbmLivingProps.setRadiation(event.entityLiving, 0); - + if(event.entity.worldObj.isRemote) return; - + if(GeneralConfig.enableCataclysm) { EntityBurningFOEQ foeq = new EntityBurningFOEQ(event.entity.worldObj); foeq.setPositionAndRotation(event.entity.posX, 500, event.entity.posZ, 0.0F, 0.0F); event.entity.worldObj.spawnEntityInWorld(foeq); } - + if(event.entity.getUniqueID().toString().equals(ShadyUtil.HbMinecraft) || event.entity.getCommandSenderName().equals("HbMinecraft")) { event.entity.dropItem(ModItems.book_of_, 1); } - + if(event.entity instanceof EntityCreeperTainted && event.source == ModDamageSource.boxcar) { - + for(Object o : event.entity.worldObj.getEntitiesWithinAABB(EntityPlayer.class, event.entity.boundingBox.expand(50, 50, 50))) { EntityPlayer player = (EntityPlayer)o; player.triggerAchievement(MainRegistry.bobHidden); } } - + if(!event.entityLiving.worldObj.isRemote) { - + if(event.source instanceof EntityDamageSource && ((EntityDamageSource)event.source).getEntity() instanceof EntityPlayer && !(((EntityDamageSource)event.source).getEntity() instanceof FakePlayer)) { - + if(event.entityLiving instanceof EntitySpider && event.entityLiving.getRNG().nextInt(500) == 0) { event.entityLiving.dropItem(ModItems.spider_milk, 1); } - + if(event.entityLiving instanceof EntityCaveSpider && event.entityLiving.getRNG().nextInt(100) == 0) { event.entityLiving.dropItem(ModItems.serum, 1); } - + if(event.entityLiving instanceof EntityAnimal && event.entityLiving.getRNG().nextInt(500) == 0) { event.entityLiving.dropItem(ModItems.bandaid, 1); } - + if(event.entityLiving instanceof IMob) { if(event.entityLiving.getRNG().nextInt(1000) == 0) event.entityLiving.dropItem(ModItems.heart_piece, 1); if(event.entityLiving.getRNG().nextInt(250) == 0) event.entityLiving.dropItem(ModItems.key_red_cracked, 1); if(event.entityLiving.getRNG().nextInt(250) == 0) event.entityLiving.dropItem(ModItems.launch_code_piece, 1); } - + if(event.entityLiving instanceof EntityCyberCrab && event.entityLiving.getRNG().nextInt(500) == 0) { event.entityLiving.dropItem(ModItems.wd40, 1); } } } } - + @SubscribeEvent(priority = EventPriority.LOWEST) public void onEntityDeathLast(LivingDeathEvent event) { - + if(event.entityLiving instanceof EntityPlayer) { - + EntityPlayer player = (EntityPlayer) event.entityLiving; - + for(int i = 0; i < player.inventory.getSizeInventory(); i++) { - + ItemStack stack = player.inventory.getStackInSlot(i); - + if(stack != null && stack.getItem() == ModItems.detonator_deadman) { - + if(stack.stackTagCompound != null) { - + int x = stack.stackTagCompound.getInteger("x"); int y = stack.stackTagCompound.getInteger("y"); int z = stack.stackTagCompound.getInteger("z"); if(!player.worldObj.isRemote && player.worldObj.getBlock(x, y, z) instanceof IBomb) { - + ((IBomb) player.worldObj.getBlock(x, y, z)).explode(player.worldObj, x, y, z); - + if(GeneralConfig.enableExtendedLogging) MainRegistry.logger.log(Level.INFO, "[DET] Tried to detonate block at " + x + " / " + y + " / " + z + " by dead man's switch from " + player.getDisplayName() + "!"); } - + player.inventory.setInventorySlotContents(i, null); } } } } } - + @SubscribeEvent public void decorateMob(LivingSpawnEvent event) { EntityLivingBase entity = event.entityLiving; World world = event.world; - + if(!MobConfig.enableMobGear || entity.isChild() || world.isRemote) return; @@ -394,7 +368,7 @@ public class ModEventHandler { entity.setCurrentItemOrArmor(4, new ItemStack(ModItems.mask_of_infamy, 1, world.rand.nextInt(100))); if(rand.nextInt(1024) == 0) entity.setCurrentItemOrArmor(3, new ItemStack(ModItems.starmetal_plate, 1, world.rand.nextInt(ModItems.starmetal_plate.getMaxDamage()))); - + if(rand.nextInt(128) == 0) entity.setCurrentItemOrArmor(0, new ItemStack(ModItems.pipe_lead, 1, world.rand.nextInt(100))); if(rand.nextInt(128) == 0) @@ -422,98 +396,154 @@ public class ModEventHandler { } if(rand.nextInt(64) == 0) entity.setCurrentItemOrArmor(3, new ItemStack(ModItems.steel_plate, 1, world.rand.nextInt(ModItems.steel_plate.getMaxDamage()))); + + float soot = PollutionHandler.getPollution(entity.worldObj, MathHelper.floor_double(event.x), MathHelper.floor_double(event.y), MathHelper.floor_double(event.z), PollutionType.SOOT); + ItemStack bowReplacement = getSkelegun(soot, entity.worldObj.rand); + if(bowReplacement != null) { + entity.setCurrentItemOrArmor(0, bowReplacement); + addFireTask((EntityLiving) entity); + } } } - + + private static ItemStack getSkelegun(float soot, Random rand) { + if(!MobConfig.enableMobWeapons) return null; + if(rand.nextDouble() > Math.log(soot) * 0.25) return null; + + ArrayList pool = new ArrayList(); + pool.add(new WeightedRandomObject(new ItemStack(ModItems.gun_light_revolver), 12)); + pool.add(new WeightedRandomObject(new ItemStack(ModItems.gun_heavy_revolver), 8)); + + if(soot > 2) pool.add(new WeightedRandomObject(new ItemStack(ModItems.gun_pepperbox), 10)); + if(soot > 2) pool.add(new WeightedRandomObject(new ItemStack(ModItems.gun_henry), 8)); + if(soot > 2) pool.add(new WeightedRandomObject(new ItemStack(ModItems.gun_greasegun), 6)); + + if(soot > 4) pool.add(new WeightedRandomObject(new ItemStack(ModItems.gun_maresleg), 4)); + if(soot > 4) pool.add(new WeightedRandomObject(new ItemStack(ModItems.gun_uzi), 6)); + + if(soot > 8) pool.add(new WeightedRandomObject(new ItemStack(ModItems.gun_spas12), 3)); + if(soot > 8) pool.add(new WeightedRandomObject(new ItemStack(ModItems.gun_am180), 4)); + + if(soot > 12) pool.add(new WeightedRandomObject(new ItemStack(ModItems.gun_congolake), 1)); + + WeightedRandomObject selected = (WeightedRandomObject) WeightedRandom.getRandomItem(rand, pool); + + return selected.asStack(); + } + + // these fucking tasks keep stacking on top of themselves + private static void addFireTask(EntityLiving entity) { + entity.setEquipmentDropChance(0, 0); // Prevent dropping guns + + for(Object entry : entity.tasks.taskEntries) { + EntityAITasks.EntityAITaskEntry task = (EntityAITasks.EntityAITaskEntry) entry; + if(task.action instanceof EntityAIFireGun) return; + } + + entity.tasks.addTask(3, new EntityAIFireGun(entity)); + } + + @SubscribeEvent + public void addAITasks(EntityJoinWorldEvent event) { + if(event.world.isRemote || !(event.entity instanceof EntityLiving)) return; + + EntityLiving living = (EntityLiving) event.entity; + ItemStack held = living.getHeldItem(); + + if(held != null && held.getItem() instanceof ItemGunBaseNT) { + addFireTask(living); + } + } + @SubscribeEvent public void onItemToss(ItemTossEvent event) { - + ItemStack yeet = event.entityItem.getEntityItem(); - + if(yeet.getItem() instanceof ItemArmor && ArmorModHandler.hasMods(yeet)) { - + ItemStack[] mods = ArmorModHandler.pryMods(yeet); ItemStack cladding = mods[ArmorModHandler.cladding]; - + if(cladding != null && cladding.getItem() == ModItems.cladding_obsidian) { ReflectionHelper.setPrivateValue(Entity.class, event.entityItem, true, "field_149119_a", "field_83001_bt", "field_149500_a", "invulnerable"); } } - + if(yeet.getItem() == ModItems.bismuth_tool) { ReflectionHelper.setPrivateValue(Entity.class, event.entityItem, true, "field_149119_a", "field_83001_bt", "field_149500_a", "invulnerable"); } } - + @SubscribeEvent public void onLivingDrop(LivingDropsEvent event) { - + if(!event.entityLiving.worldObj.isRemote) { boolean contaminated = HbmLivingProps.getContagion(event.entityLiving) > 0; - + if(contaminated) { - + for(EntityItem item : event.drops) { ItemStack stack = item.getEntityItem(); - + if(!stack.hasTagCompound()) { stack.stackTagCompound = new NBTTagCompound(); } - + stack.stackTagCompound.setBoolean("ntmContagion", true); } } } } - + @SubscribeEvent public void onLivingUpdate(LivingUpdateEvent event) { - + ItemStack[] prevArmor = event.entityLiving.previousEquipment; - if(event.entityLiving instanceof EntityPlayer && prevArmor != null && event.entityLiving.getHeldItem() != null + if(event.entityLiving instanceof EntityPlayer && prevArmor != null && event.entityLiving.getHeldItem() != null && (prevArmor[0] == null || prevArmor[0].getItem() != event.entityLiving.getHeldItem().getItem()) && event.entityLiving.getHeldItem().getItem() instanceof IEquipReceiver) { - ((IEquipReceiver)event.entityLiving.getHeldItem().getItem()).onEquip((EntityPlayer) event.entityLiving); + ((IEquipReceiver)event.entityLiving.getHeldItem().getItem()).onEquip((EntityPlayer) event.entityLiving, event.entityLiving.getHeldItem()); } - + for(int i = 1; i < 5; i++) { - + ItemStack prev = prevArmor != null ? prevArmor[i] : null; ItemStack armor = event.entityLiving.getEquipmentInSlot(i); - + boolean reapply = prevArmor != null && !ItemStack.areItemStacksEqual(prev, armor); - + if(reapply) { - + if(prev != null && ArmorModHandler.hasMods(prev)) { - + for(ItemStack mod : ArmorModHandler.pryMods(prev)) { - + if(mod != null && mod.getItem() instanceof ItemArmorMod) { - + Multimap map = ((ItemArmorMod)mod.getItem()).getModifiers(prev); - + if(map != null) event.entityLiving.getAttributeMap().removeAttributeModifiers(map); } } } } - + if(armor != null && ArmorModHandler.hasMods(armor)) { - + for(ItemStack mod : ArmorModHandler.pryMods(armor)) { - + if(mod != null && mod.getItem() instanceof ItemArmorMod) { ((ItemArmorMod)mod.getItem()).modUpdate(event.entityLiving, armor); HazardSystem.applyHazards(mod, event.entityLiving); - + if(reapply) { - + Multimap map = ((ItemArmorMod)mod.getItem()).getModifiers(armor); - + if(map != null) event.entityLiving.getAttributeMap().applyAttributeModifiers(map); } @@ -521,28 +551,34 @@ public class ModEventHandler { } } } - + EntityEffectHandler.onUpdate(event.entityLiving); - + if(!event.entity.worldObj.isRemote && !(event.entityLiving instanceof EntityPlayer)) { HazardSystem.updateLivingInventory(event.entityLiving); } } - + @SubscribeEvent(priority = EventPriority.LOWEST) public void onLoad(WorldEvent.Load event) { BobmazonOfferFactory.init(); } - + + @SubscribeEvent + public void onUnload(WorldEvent.Unload event) { + NeutronNodeWorld.removeAllWorlds(); // Remove world from worlds when unloaded to avoid world issues. + NeutronNodeWorld.removeAllNodes(); // Remove all nodes. + } + public static boolean didSit = false; public static Field reference = null; - + @SubscribeEvent public void worldTick(WorldTickEvent event) { - + /// RADIATION STUFF START /// if(event.world != null && !event.world.isRemote) { - + if(reference != null) { for(Object player : event.world.playerEntities) { if(((EntityPlayer) player).ridingEntity != null) { didSit = true; } @@ -551,37 +587,37 @@ public class ModEventHandler { try { reference.setFloat(null, (float) (rand.nextGaussian() * 0.1 + Math.PI)); } catch(Throwable e) { } } } - + int thunder = AuxSavedData.getThunder(event.world); - + if(thunder > 0) AuxSavedData.setThunder(event.world, thunder - 1); - + if(!event.world.loadedEntityList.isEmpty()) { - + List oList = new ArrayList(); oList.addAll(event.world.loadedEntityList); - + /** * REMOVE THIS V V V */ for(Object e : oList) { if(e instanceof EntityLivingBase) { - + //effect for radiation EntityLivingBase entity = (EntityLivingBase) e; - + if(entity instanceof EntityPlayer && ((EntityPlayer)entity).capabilities.isCreativeMode) continue; - + float eRad = HbmLivingProps.getRadiation(entity); - + if(entity.getClass().equals(EntityCreeper.class) && eRad >= 200 && entity.getHealth() > 0) { - + if(event.world.rand.nextInt(3) == 0 ) { EntityCreeperNuclear creep = new EntityCreeperNuclear(event.world); creep.setLocationAndAngles(entity.posX, entity.posY, entity.posZ, entity.rotationYaw, entity.rotationPitch); - + if(!entity.isDead) if(!event.world.isRemote) event.world.spawnEntityInWorld(creep); @@ -590,7 +626,7 @@ public class ModEventHandler { entity.attackEntityFrom(ModDamageSource.radiation, 100F); } continue; - + } else if(entity instanceof EntityCow && !(entity instanceof EntityMooshroom) && eRad >= 50) { EntityMooshroom creep = new EntityMooshroom(event.world); creep.setLocationAndAngles(entity.posX, entity.posY, entity.posZ, entity.rotationYaw, entity.rotationPitch); @@ -600,47 +636,47 @@ public class ModEventHandler { event.world.spawnEntityInWorld(creep); entity.setDead(); continue; - + } else if(entity instanceof EntityVillager && eRad >= 500) { EntityZombie creep = new EntityZombie(event.world); creep.setLocationAndAngles(entity.posX, entity.posY, entity.posZ, entity.rotationYaw, entity.rotationPitch); - + if(!entity.isDead) if(!event.world.isRemote) event.world.spawnEntityInWorld(creep); entity.setDead(); continue; } else if(entity.getClass().equals(EntityDuck.class) && eRad >= 200) { - + EntityQuackos quacc = new EntityQuackos(event.world); quacc.setLocationAndAngles(entity.posX, entity.posY, entity.posZ, entity.rotationYaw, entity.rotationPitch); - + if(!entity.isDead && !event.world.isRemote) event.world.spawnEntityInWorld(quacc); - + entity.setDead(); continue; } - + if(eRad < 200 || ContaminationUtil.isRadImmune(entity)) continue; - + if(eRad > 2500) HbmLivingProps.setRadiation(entity, 2500); - + if(eRad >= 1000) { entity.attackEntityFrom(ModDamageSource.radiation, 1000F); HbmLivingProps.setRadiation(entity, 0); - + if(entity.getHealth() > 0) { entity.setHealth(0); entity.onDeath(ModDamageSource.radiation); } - + if(entity instanceof EntityPlayer) ((EntityPlayer)entity).triggerAchievement(MainRegistry.achRadDeath); - + } else if(eRad >= 800) { if(event.world.rand.nextInt(300) == 0) entity.addPotionEffect(new PotionEffect(Potion.confusion.id, 5 * 30, 0)); @@ -652,7 +688,7 @@ public class ModEventHandler { entity.addPotionEffect(new PotionEffect(Potion.poison.id, 3 * 20, 2)); if(event.world.rand.nextInt(700) == 0) entity.addPotionEffect(new PotionEffect(Potion.wither.id, 3 * 20, 1)); - + } else if(eRad >= 600) { if(event.world.rand.nextInt(300) == 0) entity.addPotionEffect(new PotionEffect(Potion.confusion.id, 5 * 30, 0)); @@ -662,7 +698,7 @@ public class ModEventHandler { entity.addPotionEffect(new PotionEffect(Potion.weakness.id, 10 * 20, 2)); if(event.world.rand.nextInt(500) == 0) entity.addPotionEffect(new PotionEffect(Potion.poison.id, 3 * 20, 1)); - + } else if(eRad >= 400) { if(event.world.rand.nextInt(300) == 0) entity.addPotionEffect(new PotionEffect(Potion.confusion.id, 5 * 30, 0)); @@ -670,18 +706,18 @@ public class ModEventHandler { entity.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 5 * 20, 0)); if(event.world.rand.nextInt(300) == 0) entity.addPotionEffect(new PotionEffect(Potion.weakness.id, 5 * 20, 1)); - + } else if(eRad >= 200) { if(event.world.rand.nextInt(300) == 0) entity.addPotionEffect(new PotionEffect(Potion.confusion.id, 5 * 20, 0)); if(event.world.rand.nextInt(500) == 0) entity.addPotionEffect(new PotionEffect(Potion.weakness.id, 5 * 20, 0)); - + if(entity instanceof EntityPlayer) ((EntityPlayer)entity).triggerAchievement(MainRegistry.achRadPoison); } } - + if(e instanceof EntityItem) { EntityItem item = (EntityItem) e; HazardSystem.updateDroppedItem(item); @@ -692,36 +728,36 @@ public class ModEventHandler { */ } /// RADIATION STUFF END /// - - + + if(event.phase == Phase.END) { EntityRailCarBase.updateMotion(event.world); } } - + if(event.phase == Phase.START) { BossSpawnHandler.rollTheDice(event.world); TimedGenerator.automaton(event.world, 100); } } - + @SubscribeEvent public void onEntityAttacked(LivingAttackEvent event) { - + EntityLivingBase e = event.entityLiving; if(e instanceof EntityPlayer) { - + EntityPlayer player = (EntityPlayer) e; - + if(ArmorUtil.checkArmor(player, ModItems.euphemium_helmet, ModItems.euphemium_plate, ModItems.euphemium_legs, ModItems.euphemium_boots)) { HbmPlayerProps.plink(player, "random.break", 0.5F, 1.0F + e.getRNG().nextFloat() * 0.5F); event.setCanceled(true); } - + if(player.inventory.armorInventory[2] != null && player.inventory.armorInventory[2].getItem() instanceof ArmorFSB) ((ArmorFSB)player.inventory.armorInventory[2].getItem()).handleAttack(event); - + for(ItemStack stack : player.inventory.armorInventory) { if(stack != null && stack.getItem() instanceof IAttackHandler) { ((IAttackHandler)stack.getItem()).handleAttack(event, stack); @@ -729,16 +765,16 @@ public class ModEventHandler { } } } - + @SubscribeEvent public void onEntityDamaged(LivingHurtEvent event) { - + EntityLivingBase e = event.entityLiving; - + if(e instanceof EntityPlayer) { - + EntityPlayer player = (EntityPlayer) e; - + HbmPlayerProps props = HbmPlayerProps.getData(player); if(props.shield > 0) { float reduce = Math.min(props.shield, event.ammount); @@ -747,35 +783,35 @@ public class ModEventHandler { } props.lastDamage = player.ticksExisted; } - + if(HbmLivingProps.getContagion(e) > 0 && event.ammount < 100) event.ammount *= 2F; - + /// ARMOR MODS /// for(int i = 1; i < 5; i++) { - + ItemStack armor = e.getEquipmentInSlot(i); - + if(armor != null && ArmorModHandler.hasMods(armor)) { - + for(ItemStack mod : ArmorModHandler.pryMods(armor)) { - + if(mod != null && mod.getItem() instanceof ItemArmorMod) { ((ItemArmorMod)mod.getItem()).modDamage(event, armor); } } } } - + if(e instanceof EntityPlayer) { - + EntityPlayer player = (EntityPlayer) e; - + /// FSB ARMOR /// if(player.inventory.armorInventory[2] != null && player.inventory.armorInventory[2].getItem() instanceof ArmorFSB) ((ArmorFSB)player.inventory.armorInventory[2].getItem()).handleHurt(event); - - + + for(ItemStack stack : player.inventory.armorInventory) { if(stack != null && stack.getItem() instanceof IDamageHandler) { ((IDamageHandler)stack.getItem()).handleDamage(event, stack); @@ -783,103 +819,108 @@ public class ModEventHandler { } } } - + @SubscribeEvent public void onPlayerFall(PlayerFlyableFallEvent event) { - + EntityPlayer e = event.entityPlayer; - + if(e.inventory.armorInventory[2] != null && e.inventory.armorInventory[2].getItem() instanceof ArmorFSB) ((ArmorFSB)e.inventory.armorInventory[2].getItem()).handleFall(e); } - + + // only for the ballistic gauntlet! contains dangerous conditional returns! @SubscribeEvent public void onPlayerPunch(AttackEntityEvent event) { - + EntityPlayer player = event.entityPlayer; ItemStack chestplate = player.inventory.armorInventory[2]; - - if(!player.worldObj.isRemote && player.getHeldItem() == null && chestplate != null && ArmorModHandler.hasMods(chestplate)) { + + if(!player.worldObj.isRemote && chestplate != null && ArmorModHandler.hasMods(chestplate)) { + + if(player.getHeldItem() != null && player.getHeldItem().getAttributeModifiers().containsKey(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName())) return; + ItemStack[] mods = ArmorModHandler.pryMods(chestplate); ItemStack servo = mods[ArmorModHandler.servos]; - - if(servo != null && servo.getItem() == ModItems.ballistic_gauntlet) { - - BulletConfiguration firedConfig = null; - for(Integer config : HbmCollection.g12) { - BulletConfiguration cfg = BulletConfigSyncingUtil.pullConfig(config); - - if(InventoryUtil.doesPlayerHaveAStack(player, cfg.ammo, true, true)) { - firedConfig = cfg; + if(servo != null && servo.getItem() == ModItems.ballistic_gauntlet) { + + BulletConfig firedConfig = null; + BulletConfig[] gauntletConfigs = new BulletConfig[] {XFactory12ga.g12_bp, XFactory12ga.g12_bp_magnum, XFactory12ga.g12_bp_slug, XFactory12ga.g12, XFactory12ga.g12_slug, XFactory12ga.g12_flechette, XFactory12ga.g12_magnum, XFactory12ga.g12_explosive, XFactory12ga.g12_phosphorus}; + + for(BulletConfig config : gauntletConfigs) { + + if(InventoryUtil.doesPlayerHaveAStack(player, config.ammo, true, true)) { + firedConfig = config; break; } } - + if(firedConfig != null) { - int bullets = firedConfig.bulletsMin; - - if(firedConfig.bulletsMax > firedConfig.bulletsMin) { - bullets += player.getRNG().nextInt(firedConfig.bulletsMax - firedConfig.bulletsMin); + int bullets = firedConfig.projectilesMin; + + if(firedConfig.projectilesMax > firedConfig.projectilesMin) { + bullets += player.getRNG().nextInt(firedConfig.projectilesMax - firedConfig.projectilesMin); } - + for(int i = 0; i < bullets; i++) { - EntityBulletBaseNT bullet = new EntityBulletBaseNT(player.worldObj, BulletConfigSyncingUtil.getKey(firedConfig), player); - player.worldObj.spawnEntityInWorld(bullet); + EntityBulletBaseMK4 mk4 = new EntityBulletBaseMK4(player, firedConfig, 15F, 0F, -0.1875, -0.0625, 0.5); + player.worldObj.spawnEntityInWorld(mk4); + if(i == 0 && firedConfig.blackPowder) BlackPowderCreator.composeEffect(player.worldObj, mk4.posX, mk4.posY, mk4.posZ, mk4.motionX, mk4.motionY, mk4.motionZ, 10, 0.25F, 0.5F, 10, 0.25F); } - + player.worldObj.playSoundAtEntity(player, "hbm:weapon.shotgunShoot", 1.0F, 1.0F); } } } } - + @SubscribeEvent public void onEntityJump(LivingJumpEvent event) { - + EntityLivingBase e = event.entityLiving; - + if(e instanceof EntityPlayer && ((EntityPlayer)e).inventory.armorInventory[2] != null && ((EntityPlayer)e).inventory.armorInventory[2].getItem() instanceof ArmorFSB) ((ArmorFSB)((EntityPlayer)e).inventory.armorInventory[2].getItem()).handleJump((EntityPlayer)e); } - + @SubscribeEvent public void onEntityFall(LivingFallEvent event) { - + EntityLivingBase e = event.entityLiving; - + if(e instanceof EntityPlayer && ((EntityPlayer)e).inventory.armorInventory[2] != null && ((EntityPlayer)e).inventory.armorInventory[2].getItem() instanceof ArmorFSB) ((ArmorFSB)((EntityPlayer)e).inventory.armorInventory[2].getItem()).handleFall((EntityPlayer)e); } - + private static final UUID fopSpeed = UUID.fromString("e5a8c95d-c7a0-4ecf-8126-76fb8c949389"); - + @SubscribeEvent public void onWingFlop(TickEvent.PlayerTickEvent event) { EntityPlayer player = event.player; - + if(event.phase == TickEvent.Phase.START) { - + if(player.getCurrentArmor(2) == null && !player.onGround) { - + if(player.getUniqueID().toString().equals(ShadyUtil.Barnaby99_x) || player.getDisplayName().equals("pheo7")) { ArmorUtil.resetFlightTime(player); HbmPlayerProps props = HbmPlayerProps.getData(player); - + if(props.isJetpackActive()) { - + if(player.motionY < 0.4D) player.motionY += 0.1D; - + Vec3 look = player.getLookVec(); - + if(Vec3.createVectorHelper(player.motionX, player.motionY, player.motionZ).lengthVector() < 2) { player.motionX += look.xCoord * 0.2; player.motionY += look.yCoord * 0.2; player.motionZ += look.zCoord * 0.2; - + if(look.yCoord > 0) player.fallDistance = 0; } @@ -888,42 +929,42 @@ public class ModEventHandler { if(player.fallDistance > 0) player.fallDistance = 0; } } - + boolean isBob = player.getUniqueID().toString().equals(ShadyUtil.HbMinecraft) || player.getDisplayName().equals("HbMinecraft"); boolean isOther = player.getUniqueID().toString().equals(ShadyUtil.the_NCR) || player.getDisplayName().equals("the_NCR"); - + if(isBob || isOther) { - + ArmorUtil.resetFlightTime(player); - + if(player.fallDistance > 0) player.fallDistance = 0; - + if(player.motionY < -0.4D) player.motionY = -0.4D; - + HbmPlayerProps props = HbmPlayerProps.getData(player); - + if(isBob || player.getFoodStats().getFoodLevel() > 6) { - + if(props.isJetpackActive()) { - + double cap = (isBob ? 0.8D : 0.4D); - + if(player.motionY < cap) player.motionY += 0.15D; else player.motionY = cap + 0.15D; - + if(isOther) { if(player.getFoodStats().getSaturationLevel() > 0F) player.addExhaustion(4F); //burn up saturation so that super-saturating foods have no effect else player.addExhaustion(0.2F); //4:1 -> 0.05 hunger per tick or 1 per second } - + } else if(props.enableBackpack && !player.isSneaking()) { - + if(player.motionY < -1) player.motionY += 0.4D; else if(player.motionY < -0.1) @@ -937,35 +978,35 @@ public class ModEventHandler { else player.addExhaustion(0.04F); } - + } else if(!props.enableBackpack && player.isSneaking()) { - + if(player.motionY < -0.08) { - + double mo = player.motionY * (isBob ? -0.6 : -0.4); player.motionY += mo; - + Vec3 vec = player.getLookVec(); vec.xCoord *= mo; vec.yCoord *= mo; vec.zCoord *= mo; - + player.motionX += vec.xCoord; player.motionY += vec.yCoord; player.motionZ += vec.zCoord; } } } - + Vec3 orig = player.getLookVec(); Vec3 look = Vec3.createVectorHelper(orig.xCoord, 0, orig.zCoord).normalize(); double mod = props.enableBackpack ? (isBob ? 0.5D : 0.25D) : 0.125D; - + if(player.moveForward != 0) { player.motionX += look.xCoord * 0.35 * player.moveForward * mod; player.motionZ += look.zCoord * 0.35 * player.moveForward * mod; } - + if(player.moveStrafing != 0) { look.rotateAroundY((float) Math.PI * 0.5F); player.motionX += look.xCoord * 0.15 * player.moveStrafing * mod; @@ -973,65 +1014,65 @@ public class ModEventHandler { } } } - + if(player.getUniqueID().toString().equals(ShadyUtil.LePeeperSauvage) || player.getDisplayName().equals("LePeeperSauvage")) { - + Multimap multimap = HashMultimap.create(); multimap.put(SharedMonsterAttributes.movementSpeed.getAttributeUnlocalizedName(), new AttributeModifier(fopSpeed, "FOP SPEED", 0.5, 1)); player.getAttributeMap().removeAttributeModifiers(multimap); - + if(player.isSprinting()) { player.getAttributeMap().applyAttributeModifiers(multimap); } } } } - + @SubscribeEvent public void onPlayerTick(TickEvent.PlayerTickEvent event) { - + EntityPlayer player = event.player; - + if(player.inventory.armorInventory[2] != null && player.inventory.armorInventory[2].getItem() instanceof ArmorFSB) ((ArmorFSB)player.inventory.armorInventory[2].getItem()).handleTick(event); - + if(player.ticksExisted == 100 || player.ticksExisted == 200) CraftingManager.crumple(); - + if(event.phase == TickEvent.Phase.START) { int x = MathHelper.floor_double(player.posX); int y = MathHelper.floor_double(player.posY - player.yOffset - 0.01); int z = MathHelper.floor_double(player.posZ); Block b = player.worldObj.getBlock(x, y, z); - + if(b instanceof IStepTickReceiver && !player.capabilities.isFlying) { IStepTickReceiver step = (IStepTickReceiver) b; step.onPlayerStep(player.worldObj, x, y, z, player); } } - + if(!player.worldObj.isRemote && event.phase == TickEvent.Phase.START) { - + /// GHOST FIX START /// - + if(!Float.isFinite(player.getHealth()) || !Float.isFinite(player.getAbsorptionAmount())) { player.addChatComponentMessage(new ChatComponentText("Your health has been restored!")); player.worldObj.playSoundAtEntity(player, "hbm:item.syringe", 1.0F, 1.0F); player.setHealth(player.getMaxHealth()); player.setAbsorptionAmount(0); } - + /// GHOST FIX END /// - + /// BETA HEALTH START /// if(player.inventory.hasItem(ModItems.beta)) { - + if(player.getFoodStats().getFoodLevel() > 10) { player.heal(player.getFoodStats().getFoodLevel() - 10); } - + if(player.getFoodStats().getFoodLevel() != 10) { - + // Why can't you be normal?? try { Field food = ReflectionHelper.findField(FoodStats.class, "field_75127_a", "foodLevel"); @@ -1042,27 +1083,27 @@ public class ModEventHandler { /// BETA HEALTH END /// /// PU RADIATION START /// - + if(player.getUniqueID().toString().equals(ShadyUtil.Pu_238)) { - + List entities = player.worldObj.getEntitiesWithinAABB(EntityLivingBase.class, player.boundingBox.expand(3, 3, 3)); - + for(EntityLivingBase e : entities) { - + if(e != player) { e.addPotionEffect(new PotionEffect(HbmPotion.radiation.id, 300, 2)); } } } - + /// PU RADIATION END /// - + /*if(player instanceof EntityPlayerMP) { int x = (int) Math.floor(player.posX); int y = (int) Math.floor(player.posY - 0.01); int z = (int) Math.floor(player.posZ); - + if(player.worldObj.getTileEntity(x, y, z) instanceof IEnergyConductor) { PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(((IEnergyConductor) player.worldObj.getTileEntity(x, y, z)).getPowerNet() + ""), (EntityPlayerMP) player); } @@ -1071,46 +1112,46 @@ public class ModEventHandler { /// NEW ITEM SYS START /// HazardSystem.updatePlayerInventory(player); /// NEW ITEM SYS END /// - + /// SYNC START /// - if(player instanceof EntityPlayerMP) PacketDispatcher.wrapper.sendTo(new PermaSyncPacket((EntityPlayerMP) player), (EntityPlayerMP) player); + if(!player.worldObj.isRemote && player instanceof EntityPlayerMP) PacketDispatcher.wrapper.sendTo(new PermaSyncPacket((EntityPlayerMP) player), (EntityPlayerMP) player); /// SYNC END /// } if(player.worldObj.isRemote && event.phase == event.phase.START && !player.isInvisible() && !player.isSneaking()) { - + if(player.getUniqueID().toString().equals(ShadyUtil.Pu_238)) { - + Vec3 vec = Vec3.createVectorHelper(3 * rand.nextDouble(), 0, 0); vec.rotateAroundZ((float) (rand.nextDouble() * Math.PI)); vec.rotateAroundY((float) (rand.nextDouble() * Math.PI * 2)); player.worldObj.spawnParticle("townaura", player.posX + vec.xCoord, player.posY + 1 + vec.yCoord, player.posZ + vec.zCoord, 0.0, 0.0, 0.0); } } - + // OREDBG /*if(!event.player.worldObj.isRemote) { for(BedrockOreType type : BedrockOreType.values()) { PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(StatCollector.translateToLocalFormatted("item.bedrock_ore.type." + type.suffix + ".name") + ": " + ((int) (ItemBedrockOreBase.getOreLevel((int) Math.floor(player.posX), (int) Math.floor(player.posZ), type) * 100) / 100D), 777 + type.ordinal()), (EntityPlayerMP) player); } }*/ - + // PRISMDBG /*if(!event.player.worldObj.isRemote) { ChunkRadiationHandlerPRISM prism = (ChunkRadiationHandlerPRISM) ChunkRadiationManager.proxy; - + RadPerWorld perWorld = prism.perWorld.get(player.worldObj); - + if(perWorld != null) { SubChunk[] chunk = perWorld.radiation.get(new ChunkCoordIntPair(((int) Math.floor(player.posX)) >> 4, ((int) Math.floor(player.posZ)) >> 4)); - + if(chunk != null) { - + int y = ((int) Math.floor(player.posY)) >> 4; - + if(y >= 0 && y <= 15) { SubChunk sub = chunk[y]; - + if(sub != null) { float xSum = 0, ySum = 0, zSum = 0; for(int i = 0; i < 16; i++) { @@ -1134,21 +1175,54 @@ public class ModEventHandler { } }*/ } - + @SubscribeEvent public void onServerTick(TickEvent.ServerTickEvent event) { - - if(event.phase == event.phase.START) { + + if(event.phase == Phase.START) { + + // do other shit I guess? RTTYSystem.updateBroadcastQueue(); RequestNetwork.updateEntries(); TileEntityMachineRadarNT.updateSystem(); Nodespace.updateNodespace(); + // bob i beg of you i need fluid nodespace :pray: + } + + // There is an issue here somewhere... + // I cannot, for the life of me, figure out why a single certain bug happens. + // Every 20-30 or so ticks, players will receive wrong/outdated/weird information in packets + // I have tried everything to see if I can get this to stop, but it just doesn't seem to work. + + // ^ Update ^ - I figured it out, when the packets were being made for some machines they were being created inside the thread, + // meaning sometimes the machine would change data *after* the packet was supposed to be sent, meaning incorrect data was being sent. + // This has since been fixed. + + if(event.phase == Phase.END) { + // As ByteBufs are added to the queue in `com.hbm.packet.toclient.PacketThreading`, they are processed by the packet thread. + // This waits until the thread is finished, which most of the time will be instantly since it has plenty of time to process in parallel to everything else. + PacketThreading.waitUntilThreadFinished(); + + NetworkHandler.flush(); // Flush ALL network packets. } } - + + @SubscribeEvent + public void commandEvent(CommandEvent event) { + ICommand command = event.command; + ICommandSender sender = event.sender; + if(command instanceof CommandGameRule) { + if(command.canCommandSenderUseCommand(sender)) { + command.processCommand(sender,event.parameters); + RBMKDials.refresh(sender.getEntityWorld()); // Refresh RBMK gamerules. + event.setCanceled(true); + } + } + } + @SubscribeEvent public void enteringChunk(EnteringChunk evt) { - + /*if(evt.entity instanceof EntityMissileBaseNT) { ((EntityMissileBaseNT) evt.entity).loadNeighboringChunks(evt.newChunkX, evt.newChunkZ); } @@ -1157,41 +1231,42 @@ public class ModEventHandler { ((EntityMissileCustom) evt.entity).loadNeighboringChunks(evt.newChunkX, evt.newChunkZ); }*/ } - + @SubscribeEvent public void onPlayerClone(net.minecraftforge.event.entity.player.PlayerEvent.Clone event) { - - NBTTagCompound data = new NBTTagCompound(); - HbmPlayerProps.getData(event.original).saveNBTData(data); - HbmPlayerProps.getData(event.entityPlayer).loadNBTData(data); + + ByteBuf buf = PooledByteBufAllocator.DEFAULT.buffer(); + HbmPlayerProps.getData(event.original).serialize(buf); + HbmPlayerProps.getData(event.entityPlayer).deserialize(buf); + buf.release(); } - + @SubscribeEvent public void itemCrafted(PlayerEvent.ItemCraftedEvent e) { AchievementHandler.fire(e.player, e.crafting); } - + @SubscribeEvent public void itemSmelted(PlayerEvent.ItemSmeltedEvent e) { AchievementHandler.fire(e.player, e.smelting); - + if(!e.player.worldObj.isRemote && e.smelting.getItem() == Items.iron_ingot && e.player.getRNG().nextInt(64) == 0) { - + if(!e.player.inventory.addItemStackToInventory(new ItemStack(ModItems.lodestone))) e.player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.lodestone), false); else e.player.inventoryContainer.detectAndSendChanges(); } - + if(!e.player.worldObj.isRemote && e.smelting.getItem() == ModItems.ingot_uranium && e.player.getRNG().nextInt(64) == 0) { - + if(!e.player.inventory.addItemStackToInventory(new ItemStack(ModItems.quartz_plutonium))) e.player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.quartz_plutonium), false); else e.player.inventoryContainer.detectAndSendChanges(); } } - + @SubscribeEvent public void onItemPickup(PlayerEvent.ItemPickupEvent event) { if(event.pickedUp.getEntityItem().getItem() == ModItems.canned_conserve && EnumUtil.grabEnumSafely(EnumFoodType.class, event.pickedUp.getEntityItem().getItemDamage()) == EnumFoodType.JIZZ) @@ -1199,40 +1274,40 @@ public class ModEventHandler { if(event.pickedUp.getEntityItem().getItem() == Items.slime_ball) event.player.triggerAchievement(MainRegistry.achSlimeball); } - + @SubscribeEvent public void onBlockBreak(BreakEvent event) { - + EntityPlayer player = event.getPlayer(); - + if(!(player instanceof EntityPlayerMP)) return; - + if(event.block == ModBlocks.stone_gneiss && !((EntityPlayerMP) player).func_147099_x().hasAchievementUnlocked(MainRegistry.achStratum)) { event.getPlayer().triggerAchievement(MainRegistry.achStratum); event.setExpToDrop(500); } - + if(event.block == Blocks.coal_ore || event.block == Blocks.coal_block || event.block == ModBlocks.ore_lignite) { - + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { int x = event.x + dir.offsetX; int y = event.y + dir.offsetY; int z = event.z + dir.offsetZ; - + if(event.world.rand.nextInt(2) == 0 && event.world.getBlock(x, y, z) == Blocks.air) event.world.setBlock(x, y, z, ModBlocks.gas_coal); } } - + if(RadiationConfig.enablePollution && RadiationConfig.enableLeadFromBlocks) { if(!ArmorRegistry.hasProtection(player, 3, HazardClass.PARTICLE_FINE)) { - + float metal = PollutionHandler.getPollution(player.worldObj, event.x, event.y, event.z, PollutionType.HEAVYMETAL); - + if(metal < 5) return; - + if(metal < 10) { player.addPotionEffect(new PotionEffect(HbmPotion.lead.id, 100, 0)); } else if(metal < 25) { @@ -1243,21 +1318,21 @@ public class ModEventHandler { } } } - + @SubscribeEvent public void onClickSign(PlayerInteractEvent event) { int x = event.x; - int y = event.y; - int z = event.z; + int y = event.z; + int z = event.y; World world = event.world; - + if(!world.isRemote && event.action == Action.RIGHT_CLICK_BLOCK && world.getTileEntity(x, y, z) instanceof TileEntitySign) { - + TileEntitySign sign = (TileEntitySign)world.getTileEntity(x, y, z); - + String result = ShadyUtil.smoosh(sign.signText[0], sign.signText[1], sign.signText[2], sign.signText[3]); - + if(ShadyUtil.hashes.contains(result)) { world.func_147480_a(x, y, z, false); EntityItem entityitem = new EntityItem(world, x, y, z, new ItemStack(ModItems.bobmazon_hidden)); @@ -1266,22 +1341,22 @@ public class ModEventHandler { } } } - + @SubscribeEvent public void chatEvent(ServerChatEvent event) { - + EntityPlayerMP player = event.player; String message = event.message; - + //boolean conditions for the illiterate, edition 1 //bellow you can see the header of an if-block. inside the brackets, there is a boolean statement. //that means nothing other than its value totaling either 'true' or 'false' //examples: 'true' would just mean true //'1 > 3' would equal false //'i < 10' would equal true if 'i' is smaller than 10, if equal or greater, it will result in false - + //let's start from the back: - + //this part means that the message's first character has to equal a '!': ----------------------------+ // | //this is a logical AND operator: ----------------------------------------------------------------+ | @@ -1307,72 +1382,72 @@ public class ModEventHandler { //the config file: | | | | | | // V V V V V V if(GeneralConfig.enableDebugMode && player.getUniqueID().toString().equals(ShadyUtil.HbMinecraft) && message.startsWith("!")) { - + String[] msg = message.split(" "); - + String m = msg[0].substring(1, msg[0].length()).toLowerCase(Locale.US); - + if("gv".equals(m)) { - + int id = 0; int size = 1; int meta = 0; - + if(msg.length > 1 && NumberUtils.isNumber(msg[1])) { id = (int)(double)NumberUtils.createDouble(msg[1]); } - + if(msg.length > 2 && NumberUtils.isNumber(msg[2])) { size = (int)(double)NumberUtils.createDouble(msg[2]); } - + if(msg.length > 3 && NumberUtils.isNumber(msg[3])) { meta = (int)(double)NumberUtils.createDouble(msg[3]); } - + Item item = Item.getItemById(id); - + if(item != null && size > 0 && meta >= 0) { player.inventory.addItemStackToInventory(new ItemStack(item, size, meta)); } } - + player.inventoryContainer.detectAndSendChanges(); event.setCanceled(true); } } - + @SubscribeEvent public void anvilUpdateEvent(AnvilUpdateEvent event) { - + if(event.left.getItem() instanceof ItemGunBase && event.right.getItem() == Items.enchanted_book) { - + event.output = event.left.copy(); - + Map mapright = EnchantmentHelper.getEnchantments(event.right); Iterator itr = mapright.keySet().iterator(); - + while(itr.hasNext()) { - + int i = ((Integer) itr.next()).intValue(); int j = ((Integer) mapright.get(Integer.valueOf(i))).intValue(); Enchantment e = Enchantment.enchantmentsList[i]; - + EnchantmentUtil.removeEnchantment(event.output, e); EnchantmentUtil.addEnchantment(event.output, e, j); } - + event.cost = 10; } } - + @SubscribeEvent public void onFoodEaten(PlayerUseItemEvent.Finish event) { - + ItemStack stack = event.item; - + if(stack != null && stack.getItem() instanceof ItemFood) { - + if(stack.hasTagCompound() && stack.getTagCompound().getBoolean("ntmCyanide")) { for(int i = 0; i < 10; i++) { event.entityPlayer.attackEntityFrom(rand.nextBoolean() ? ModDamageSource.euthanizedSelf : ModDamageSource.euthanizedSelf2, 1000); @@ -1380,17 +1455,17 @@ public class ModEventHandler { } } } - + @SubscribeEvent public void filterBrokenEntity(EntityJoinWorldEvent event) { - + Entity entity = event.entity; Entity[] parts = entity.getParts(); - + //MainRegistry.logger.error("Trying to spawn entity " + entity.getClass().getCanonicalName()); - + if(parts != null) { - + for(int i = 0; i < parts.length; i++) { if(parts[i] == null) { MainRegistry.logger.error("Prevented spawning of multipart entity " + entity.getClass().getCanonicalName() + " due to parts being null!"); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 317e05ba7..79ea907c7 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -1,19 +1,9 @@ package com.hbm.main; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Locale; -import java.util.Random; - -import org.lwjgl.input.Keyboard; -import org.lwjgl.input.Mouse; -import org.lwjgl.opengl.GL11; - import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockAshes; +import com.hbm.config.ClientConfig; import com.hbm.config.GeneralConfig; import com.hbm.entity.mob.EntityHunterChopper; import com.hbm.entity.projectile.EntityChopperMine; @@ -24,7 +14,9 @@ import com.hbm.handler.ArmorModHandler; import com.hbm.handler.GunConfiguration; import com.hbm.handler.HTTPHandler; import com.hbm.handler.HazmatRegistry; +import com.hbm.handler.HbmKeybinds; import com.hbm.handler.ImpactWorldHandler; +import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.hazard.HazardSystem; import com.hbm.interfaces.IHoldableWeapon; import com.hbm.interfaces.IItemHUD; @@ -33,26 +25,24 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.gui.GUIArmorTable; import com.hbm.inventory.gui.GUIScreenPreview; import com.hbm.inventory.gui.GUIScreenWikiRender; -import com.hbm.items.ISyncButtons; import com.hbm.items.ModItems; -import com.hbm.items.armor.ArmorFSB; -import com.hbm.items.armor.ArmorFSBPowered; -import com.hbm.items.armor.ArmorNo9; -import com.hbm.items.armor.ItemArmorMod; -import com.hbm.items.armor.JetpackBase; +import com.hbm.items.armor.*; import com.hbm.items.machine.ItemDepletedFuel; import com.hbm.items.machine.ItemFluidDuct; import com.hbm.items.machine.ItemRBMKPellet; import com.hbm.items.weapon.ItemGunBase; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.lib.Library; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; -import com.hbm.packet.GunButtonPacket; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.SyncButtonsPacket; +import com.hbm.packet.toserver.AuxButtonPacket; +import com.hbm.packet.toserver.GunButtonPacket; +import com.hbm.packet.toserver.KeybindPacket; import com.hbm.render.anim.HbmAnimations; import com.hbm.render.anim.HbmAnimations.Animation; import com.hbm.render.block.ct.CTStitchReceiver; +import com.hbm.render.item.weapon.sedna.ItemRenderWeaponBase; import com.hbm.render.util.RenderAccessoryUtility; import com.hbm.render.util.RenderOverhead; import com.hbm.render.util.RenderScreenOverlay; @@ -63,35 +53,26 @@ import com.hbm.sound.MovingSoundChopper; import com.hbm.sound.MovingSoundChopperMine; import com.hbm.sound.MovingSoundCrashing; import com.hbm.sound.MovingSoundPlayerLoop; -import com.hbm.sound.MovingSoundXVL1456; +import com.hbm.sound.MovingSoundPlayerLoop.EnumHbmSound; import com.hbm.tileentity.bomb.TileEntityNukeCustom; import com.hbm.tileentity.bomb.TileEntityNukeCustom.CustomNukeEntry; import com.hbm.tileentity.bomb.TileEntityNukeCustom.EnumEntryType; import com.hbm.tileentity.machine.TileEntityNukeFurnace; -import com.hbm.util.I18nUtil; -import com.hbm.util.ItemStackUtil; -import com.hbm.util.LoggingUtil; -import com.hbm.util.ShadyUtil; +import com.hbm.util.*; +import com.hbm.util.ArmorRegistry.HazardClass; import com.hbm.wiaj.GuiWorldInAJar; import com.hbm.wiaj.cannery.CanneryBase; import com.hbm.wiaj.cannery.Jars; import com.hbm.util.ArmorRegistry; import com.hbm.util.ArmorUtil; -import com.hbm.util.ArmorRegistry.HazardClass; +import com.hbm.util.DamageResistanceHandler; import com.mojang.authlib.minecraft.MinecraftProfileTexture.Type; - -import api.hbm.item.IButtonReceiver; -import api.hbm.item.IClickReceiver; - -import com.hbm.sound.MovingSoundPlayerLoop.EnumHbmSound; - import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.InputEvent; -import cpw.mods.fml.common.gameevent.InputEvent.KeyInputEvent; import cpw.mods.fml.common.gameevent.TickEvent.ClientTickEvent; import cpw.mods.fml.common.gameevent.TickEvent.Phase; import cpw.mods.fml.common.gameevent.TickEvent.WorldTickEvent; @@ -113,8 +94,8 @@ import net.minecraft.client.renderer.entity.RenderPlayer; import net.minecraft.client.settings.KeyBinding; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Items; import net.minecraft.init.Blocks; +import net.minecraft.init.Items; import net.minecraft.inventory.Slot; import net.minecraft.item.Item; import net.minecraft.item.ItemArmor; @@ -123,45 +104,39 @@ import net.minecraft.network.play.client.C03PacketPlayer; import net.minecraft.network.play.client.C0CPacketInput; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.IIcon; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.Vec3; +import net.minecraft.util.*; import net.minecraft.world.World; import net.minecraft.world.WorldProviderSurface; import net.minecraftforge.client.GuiIngameForge; +import net.minecraftforge.client.IItemRenderer; import net.minecraftforge.client.IRenderHandler; -import net.minecraftforge.client.event.FOVUpdateEvent; -import net.minecraftforge.client.event.GuiOpenEvent; -import net.minecraftforge.client.event.MouseEvent; -import net.minecraftforge.client.event.RenderGameOverlayEvent; +import net.minecraftforge.client.MinecraftForgeClient; +import net.minecraftforge.client.event.*; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; -import net.minecraftforge.client.event.RenderHandEvent; -import net.minecraftforge.client.event.RenderItemInFrameEvent; -import net.minecraftforge.client.event.RenderLivingEvent; -import net.minecraftforge.client.event.RenderPlayerEvent; -import net.minecraftforge.client.event.RenderWorldLastEvent; -import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.client.event.sound.PlaySoundEvent17; import net.minecraftforge.common.ForgeHooks; import net.minecraftforge.event.entity.player.ItemTooltipEvent; +import org.lwjgl.input.Keyboard; +import org.lwjgl.input.Mouse; +import org.lwjgl.opengl.GL11; + +import java.lang.reflect.Method; +import java.util.*; public class ModEventHandlerClient { - + public static final int flashDuration = 5_000; public static long flashTimestamp; public static final int shakeDuration = 1_500; public static long shakeTimestamp; - + @SubscribeEvent public void onOverlayRender(RenderGameOverlayEvent.Pre event) { - + EntityPlayer player = Minecraft.getMinecraft().thePlayer; - + /// NUKE FLASH /// - if(event.type == ElementType.CROSSHAIRS && (flashTimestamp + flashDuration - System.currentTimeMillis()) > 0) { + if(event.type == ElementType.CROSSHAIRS && (flashTimestamp + flashDuration - System.currentTimeMillis()) > 0 && ClientConfig.NUKE_HUD_FLASH.get()) { int width = event.resolution.getScaledWidth(); int height = event.resolution.getScaledHeight(); Tessellator tess = Tessellator.instance; @@ -184,62 +159,62 @@ public class ModEventHandlerClient { GL11.glDepthMask(true); return; } - + /// HANDLE GUN OVERLAYS /// if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemHUD) { ((IItemHUD)player.getHeldItem().getItem()).renderHUD(event, event.type, player, player.getHeldItem()); } - + /// HANDLE GEIGER COUNTER HUD /// if(event.type == ElementType.HOTBAR) { - + if(!(ArmorFSB.hasFSBArmor(player) && ((ArmorFSB)player.inventory.armorInventory[2].getItem()).customGeiger)) { - + if(player.inventory.hasItem(ModItems.geiger_counter)) { - + float rads = HbmLivingProps.getRadiation(player); - + RenderScreenOverlay.renderRadCounter(event.resolution, rads, Minecraft.getMinecraft().ingameGUI); } } } /// DODD DIAG HOOK FOR RBMK - if(event.type == ElementType.CROSSHAIRS) { + if(event.type == ElementType.CROSSHAIRS && ClientConfig.DODD_RBMK_DIAGNOSTIC.get()) { Minecraft mc = Minecraft.getMinecraft(); World world = mc.theWorld; MovingObjectPosition mop = mc.objectMouseOver; - + if(mop != null) { - + if(mop.typeOfHit == mop.typeOfHit.BLOCK) { - + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ILookOverlay) { ((ILookOverlay) player.getHeldItem().getItem()).printHook(event, world, mop.blockX, mop.blockY, mop.blockZ); - + } else if(world.getBlock(mop.blockX, mop.blockY, mop.blockZ) instanceof ILookOverlay) { ((ILookOverlay) world.getBlock(mop.blockX, mop.blockY, mop.blockZ)).printHook(event, world, mop.blockX, mop.blockY, mop.blockZ); } - + /*List text = new ArrayList(); text.add("Meta: " + world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ)); ILookOverlay.printGeneric(event, "DEBUG", 0xffff00, 0x4040000, text);*/ - + } else if(mop.typeOfHit == mop.typeOfHit.ENTITY) { Entity entity = mop.entityHit; - + if(entity instanceof ILookOverlay) { ((ILookOverlay) entity).printHook(event, world, 0, 0, 0); } } } - + /*List text = new ArrayList(); text.add("IMPACT: " + ImpactWorldHandler.getImpactForClient(world)); text.add("DUST: " + ImpactWorldHandler.getDustForClient(world)); text.add("FIRE: " + ImpactWorldHandler.getFireForClient(world)); ILookOverlay.printGeneric(event, "DEBUG", 0xffff00, 0x4040000, text);*/ - + /*if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK) { ScaledResolution resolution = event.resolution; GL11.glPushMatrix(); @@ -251,134 +226,145 @@ public class ModEventHandlerClient { GL11.glPopMatrix(); Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons); }*/ - + /*List text = new ArrayList(); MovingObjectPosition pos = Library.rayTrace(player, 500, 1, false, true, false); - + for(int i = 0; i < 2; i++) if(pos != null && pos.typeOfHit == pos.typeOfHit.BLOCK) { - + float yaw = player.rotationYaw; - + Vec3 next = Vec3.createVectorHelper(pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord); int it = 0; - + BlockPos anchor = new BlockPos(pos.blockX, pos.blockY, pos.blockZ); - + double distanceToCover = 4D * (i == 0 ? 1 : -1); - + if(distanceToCover < 0) { distanceToCover *= -1; yaw += 180; } - + do { - + it++; - + if(it > 30) { world.createExplosion(player, pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord, 5F, false); break; } - + int x = anchor.getX(); int y = anchor.getY(); int z = anchor.getZ(); Block block = world.getBlock(x, y, z); - + Vec3 rot = Vec3.createVectorHelper(0, 0, 1); rot.rotateAroundY((float) (-yaw * Math.PI / 180D)); - + if(block instanceof IRailNTM) { IRailNTM rail = (IRailNTM) block; RailContext info = new RailContext(); - + boolean flip = distanceToCover < 0; - + if(it == 1) { Vec3 snap = next = rail.getTravelLocation(world, x, y, z, next.xCoord, next.yCoord, next.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, 0, info, new MoveContext(RailCheckType.CORE, 0)); if(i == 0) world.spawnParticle("reddust", snap.xCoord, snap.yCoord + 0.25, snap.zCoord, 0.1, 1, 0.1); } - + Vec3 prev = next; next = rail.getTravelLocation(world, x, y, z, prev.xCoord, prev.yCoord, prev.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, distanceToCover, info, new MoveContext(i == 0 ? RailCheckType.FRONT : RailCheckType.BACK, 0)); distanceToCover = info.overshoot; anchor = info.pos; if(i == 0) world.spawnParticle("reddust", next.xCoord, next.yCoord + 0.25, next.zCoord, 0, distanceToCover != 0 ? 0.5 : 0, 0); else world.spawnParticle("reddust", next.xCoord, next.yCoord + 0.25, next.zCoord, 0, distanceToCover != 0 ? 0.5 : 0, 1); - + double deltaX = next.xCoord - prev.xCoord; double deltaZ = next.zCoord - prev.zCoord; double radians = -Math.atan2(deltaX, deltaZ); yaw = (float) MathHelper.wrapAngleTo180_double(radians * 180D / Math.PI + (flip ? 180 : 0)); - + text.add(it + ": " + yaw); - + } else { break; } - + } while(distanceToCover != 0); - + ILookOverlay.printGeneric(event, "DEBUG", 0xffff00, 0x4040000, text); }*/ } - - /// HANLDE ANIMATION BUSES /// - - for(int i = 0; i < HbmAnimations.hotbar.length; i++) { - - Animation animation = HbmAnimations.hotbar[i]; - - if(animation == null) - continue; - if(animation.holdLastFrame) - continue; - - long time = System.currentTimeMillis() - animation.startMillis; - - if(time > animation.animation.getDuration()) - HbmAnimations.hotbar[i] = null; + /// HANLDE ANIMATION BUSES /// + + for(int i = 0; i < HbmAnimations.hotbar.length; i++) { + for(int j = 0; j < HbmAnimations.hotbar[i].length; j++) { + + Animation animation = HbmAnimations.hotbar[i][j]; + + if(animation == null) + continue; + + if(animation.holdLastFrame) + continue; + + long time = System.currentTimeMillis() - animation.startMillis; + + if(time > animation.animation.getDuration()) + HbmAnimations.hotbar[i][j] = null; + } } - + if(!ducked && Keyboard.isKeyDown(Keyboard.KEY_O) && Minecraft.getMinecraft().currentScreen == null) { ducked = true; PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(0, 0, 0, 999, 0)); } - + /// HANDLE SCOPE OVERLAY /// ItemStack held = player.getHeldItem(); - + if(player.isSneaking() && held != null && held.getItem() instanceof ItemGunBase && event.type == event.type.HOTBAR) { GunConfiguration config = ((ItemGunBase) held.getItem()).mainConfig; - + if(config.scopeTexture != null) { ScaledResolution resolution = event.resolution; RenderScreenOverlay.renderScope(resolution, config.scopeTexture); } } - + + if(held != null && held.getItem() instanceof ItemGunBaseNT && ItemGunBaseNT.aimingProgress == ItemGunBaseNT.prevAimingProgress && ItemGunBaseNT.aimingProgress == 1F && event.type == event.type.HOTBAR) { + ItemGunBaseNT gun = (ItemGunBaseNT) held.getItem(); + GunConfig cfg = gun.getConfig(held, 0); + if(cfg.getScopeTexture(held) != null) { + ScaledResolution resolution = event.resolution; + RenderScreenOverlay.renderScope(resolution, cfg.getScopeTexture(held)); + } + } + /// HANDLE FSB HUD /// ItemStack helmet = player.inventory.armorInventory[3]; - + if(helmet != null && helmet.getItem() instanceof ArmorFSB) { ((ArmorFSB)helmet.getItem()).handleOverlay(event, player); } if(!event.isCanceled() && event.type == event.type.HOTBAR) { - + HbmPlayerProps props = HbmPlayerProps.getData(player); if(props.getDashCount() > 0) { RenderScreenOverlay.renderDashBar(event.resolution, Minecraft.getMinecraft().ingameGUI, props); - + } } } - + @SubscribeEvent(receiveCanceled = true) public void onHUDRenderShield(RenderGameOverlayEvent.Pre event) { EntityPlayer player = Minecraft.getMinecraft().thePlayer; - + if(event.type == event.type.ARMOR) { HbmPlayerProps props = HbmPlayerProps.getData(player); @@ -387,17 +373,17 @@ public class ModEventHandlerClient { } } } - + @SubscribeEvent(receiveCanceled = true, priority = EventPriority.LOW) public void onHUDRenderBar(RenderGameOverlayEvent.Post event) { - + /// HANDLE ELECTRIC FSB HUD /// - + EntityPlayer player = Minecraft.getMinecraft().thePlayer; Tessellator tess = Tessellator.instance; - + if(event.type == event.type.ARMOR) { - + if(ForgeHooks.getTotalArmorValue(player) == 0) { GuiIngameForge.left_height -= 10; } @@ -414,7 +400,7 @@ public class ModEventHandlerClient { tess.startDrawingQuads(); for(int i = 0; i < (noHelmet ? 3 : 4); i++) { - + int top = height - GuiIngameForge.left_height + 7; ItemStack stack = player.inventory.armorInventory[i]; @@ -443,12 +429,12 @@ public class ModEventHandlerClient { GL11.glEnable(GL11.GL_TEXTURE_2D); - } else if(player.inventory.armorInventory[2] != null && player.inventory.armorInventory[2].getItem() instanceof JetpackBase) { + } else if(player.inventory.armorInventory[2] != null && player.inventory.armorInventory[2].getItem() instanceof JetpackFueledBase) { ItemStack stack = player.inventory.armorInventory[2]; - float tot = (float) ((JetpackBase) stack.getItem()).getFuel(stack) / (float) ((JetpackBase) stack.getItem()).getMaxFill(stack); - + float tot = (float) ((JetpackFueledBase) stack.getItem()).getFuel(stack) / (float) ((JetpackFueledBase) stack.getItem()).getMaxFill(stack); + int top = height - GuiIngameForge.left_height + 3; GL11.glDisable(GL11.GL_TEXTURE_2D); @@ -471,45 +457,59 @@ public class ModEventHandlerClient { } } } - + @SubscribeEvent public void setupFOV(FOVUpdateEvent event) { - + EntityPlayer player = Minecraft.getMinecraft().thePlayer; ItemStack held = player.getHeldItem(); - + if(held == null) return; if(!(held.getItem() instanceof ItemGunBase)) return; - + GunConfiguration config = ((ItemGunBase) held.getItem()).mainConfig; - + if(config == null) return; if(config.zoomFOV == 0F || !player.isSneaking()) return; - + if(config.absoluteFOV) { event.newfov = config.zoomFOV; } else { event.newfov += config.zoomFOV; } } - + + @SubscribeEvent + public void setupNewFOV(FOVUpdateEvent event) { + + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + ItemStack held = player.getHeldItem(); + + if(held == null) return; + + IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(held, IItemRenderer.ItemRenderType.EQUIPPED); + if(!(customRenderer instanceof ItemRenderWeaponBase)) return; + ItemRenderWeaponBase renderGun = (ItemRenderWeaponBase) customRenderer; + event.newfov = renderGun.getViewFOV(held, event.fov); + } + public static boolean ducked = false; - + @SubscribeEvent public void preRenderEvent(RenderPlayerEvent.Pre event) { - + RenderPlayer renderer = event.renderer; AbstractClientPlayer player = (AbstractClientPlayer)event.entityPlayer; - + PotionEffect invis = player.getActivePotionEffect(Potion.invisibility); - + if(invis != null && invis.getAmplifier() > 0) event.setCanceled(true); if(player.getDisplayName().toLowerCase(Locale.US).equals("martmn")) { - + event.setCanceled(true); - + float pX = (float) (player.prevPosX + (player.posX - player.prevPosX) * (double)event.partialRenderTick); float pY = (float) (player.prevPosY + (player.posY - player.prevPosY) * (double)event.partialRenderTick); float pZ = (float) (player.prevPosZ + (player.posZ - player.prevPosZ) * (double)event.partialRenderTick); @@ -533,49 +533,49 @@ public class ModEventHandlerClient { t.addVertexWithUV(1, -1, 0, 1, 1); t.addVertexWithUV(-1, -1, 0, 0, 1); t.draw(); - + GL11.glEnable(GL11.GL_LIGHTING); - + GL11.glPopMatrix(); } - + ResourceLocation cloak = RenderAccessoryUtility.getCloakFromPlayer(player); - + if(cloak != null) player.func_152121_a(Type.CAPE, cloak); - + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IHoldableWeapon) { renderer.modelBipedMain.aimedBow = true; renderer.modelArmor.aimedBow = true; renderer.modelArmorChestplate.aimedBow = true; } } - + @SubscribeEvent public void onRenderArmorEvent(RenderPlayerEvent.SetArmorModel event) { - + EntityPlayer player = event.entityPlayer; - + for(int i = 0; i < 4; i++) { - + ItemStack armor = player.getCurrentArmor(i); - + if(armor != null && ArmorModHandler.hasMods(armor)) { - + for(ItemStack mod : ArmorModHandler.pryMods(armor)) { - + if(mod != null && mod.getItem() instanceof ItemArmorMod) { ((ItemArmorMod)mod.getItem()).modRender(event, armor); } } } - + //because armor that isn't ItemArmor doesn't render at all if(armor != null && armor.getItem() instanceof JetpackBase) { ((ItemArmorMod)armor.getItem()).modRender(event, armor); } } - + if(player.getCurrentArmor(2) == null && !player.isPotionActive(Potion.invisibility)) { if(player.getUniqueID().toString().equals(ShadyUtil.HbMinecraft) || player.getDisplayName().equals("HbMinecraft")) RenderAccessoryUtility.renderWings(event, 2); if(player.getUniqueID().toString().equals(ShadyUtil.the_NCR) || player.getDisplayName().equals("the_NCR")) RenderAccessoryUtility.renderWings(event, 3); @@ -586,29 +586,20 @@ public class ModEventHandlerClient { @SubscribeEvent public void clickHandler(MouseEvent event) { - + EntityPlayer player = Minecraft.getMinecraft().thePlayer; - + if(player.getHeldItem() != null) { - + Item held = player.getHeldItem().getItem(); - - if(held instanceof IClickReceiver) { - IClickReceiver rec = (IClickReceiver) held; - - if(rec.handleMouseInput(player.getHeldItem(), player, event.button, event.buttonstate)) { - event.setCanceled(true); - return; - } - } - + if(held instanceof ItemGunBase) { - + if(event.button == 0) event.setCanceled(true); - + ItemGunBase item = (ItemGunBase)player.getHeldItem().getItem(); - + if(event.button == 0 && !item.m1 && !item.m2) { item.m1 = true; PacketDispatcher.wrapper.sendToServer(new GunButtonPacket(true, (byte) 0)); @@ -620,98 +611,61 @@ public class ModEventHandlerClient { item.startActionClient(player.getHeldItem(), player.worldObj, player, false); } } - - if(held instanceof ISyncButtons) { - ISyncButtons rec = (ISyncButtons) held; - - if(rec.canReceiveMouse(player, player.getHeldItem(), event, event.button, event.buttonstate)) { - PacketDispatcher.wrapper.sendToServer(new SyncButtonsPacket(event.buttonstate, event.button)); - } - } - } - } - - @SubscribeEvent - public void keyEvent(KeyInputEvent event) { - - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - - if(player.getHeldItem() != null) { - - Item held = player.getHeldItem().getItem(); - - if(held instanceof IButtonReceiver) { - IButtonReceiver rec = (IButtonReceiver) held; - rec.handleKeyboardInput(player.getHeldItem(), player); - } } } @Spaghetti("please get this shit out of my face") @SubscribeEvent public void onPlaySound(PlaySoundEvent17 e) { - + EntityPlayer player = MainRegistry.proxy.me(); Minecraft mc = Minecraft.getMinecraft(); - + if(player != null && mc.theWorld != null) { int i = MathHelper.floor_double(player.posX); int j = MathHelper.floor_double(player.posY); int k = MathHelper.floor_double(player.posZ); Block block = mc.theWorld.getBlock(i, j, k); - + if(block == ModBlocks.vacuum) { e.result = null; return; } } - + ResourceLocation r = e.sound.getPositionedSoundLocation(); WorldClient wc = mc.theWorld; - + //Alright, alright, I give the fuck up, you've wasted my time enough with this bullshit. You win. //A winner is you. //Conglaturations. //Fuck you. - if(r.toString().equals("hbm:misc.nullTau") && Library.getClosestPlayerForSound(wc, e.sound.getXPosF(), e.sound.getYPosF(), e.sound.getZPosF(), 2) != null) - { - EntityPlayer ent = Library.getClosestPlayerForSound(wc, e.sound.getXPosF(), e.sound.getYPosF(), e.sound.getZPosF(), 2); - - if(MovingSoundPlayerLoop.getSoundByPlayer(ent, EnumHbmSound.soundTauLoop) == null) { - MovingSoundPlayerLoop.globalSoundList.add(new MovingSoundXVL1456(new ResourceLocation("hbm:weapon.tauChargeLoop2"), ent, EnumHbmSound.soundTauLoop)); - MovingSoundPlayerLoop.getSoundByPlayer(ent, EnumHbmSound.soundTauLoop).setPitch(0.5F); - } else { - if(MovingSoundPlayerLoop.getSoundByPlayer(ent, EnumHbmSound.soundTauLoop).getPitch() < 1.5F) - MovingSoundPlayerLoop.getSoundByPlayer(ent, EnumHbmSound.soundTauLoop).setPitch(MovingSoundPlayerLoop.getSoundByPlayer(ent, EnumHbmSound.soundTauLoop).getPitch() + 0.01F); - } - } - if(r.toString().equals("hbm:misc.nullChopper") && Library.getClosestChopperForSound(wc, e.sound.getXPosF(), e.sound.getYPosF(), e.sound.getZPosF(), 2) != null) { EntityHunterChopper ent = Library.getClosestChopperForSound(wc, e.sound.getXPosF(), e.sound.getYPosF(), e.sound.getZPosF(), 2); - + if(MovingSoundPlayerLoop.getSoundByPlayer(ent, EnumHbmSound.soundChopperLoop) == null) { MovingSoundPlayerLoop.globalSoundList.add(new MovingSoundChopper(new ResourceLocation("hbm:entity.chopperFlyingLoop"), ent, EnumHbmSound.soundChopperLoop)); MovingSoundPlayerLoop.getSoundByPlayer(ent, EnumHbmSound.soundChopperLoop).setVolume(10.0F); } } - + if(r.toString().equals("hbm:misc.nullCrashing") && Library.getClosestChopperForSound(wc, e.sound.getXPosF(), e.sound.getYPosF(), e.sound.getZPosF(), 2) != null) { EntityHunterChopper ent = Library.getClosestChopperForSound(wc, e.sound.getXPosF(), e.sound.getYPosF(), e.sound.getZPosF(), 2); - + if(MovingSoundPlayerLoop.getSoundByPlayer(ent, EnumHbmSound.soundCrashingLoop) == null) { MovingSoundPlayerLoop.globalSoundList.add(new MovingSoundCrashing(new ResourceLocation("hbm:entity.chopperCrashingLoop"), ent, EnumHbmSound.soundCrashingLoop)); MovingSoundPlayerLoop.getSoundByPlayer(ent, EnumHbmSound.soundCrashingLoop).setVolume(10.0F); } } - + if(r.toString().equals("hbm:misc.nullMine") && Library.getClosestMineForSound(wc, e.sound.getXPosF(), e.sound.getYPosF(), e.sound.getZPosF(), 2) != null) { EntityChopperMine ent = Library.getClosestMineForSound(wc, e.sound.getXPosF(), e.sound.getYPosF(), e.sound.getZPosF(), 2); - + if(MovingSoundPlayerLoop.getSoundByPlayer(ent, EnumHbmSound.soundMineLoop) == null) { MovingSoundPlayerLoop.globalSoundList.add(new MovingSoundChopperMine(new ResourceLocation("hbm:entity.chopperMineLoop"), ent, EnumHbmSound.soundMineLoop)); MovingSoundPlayerLoop.getSoundByPlayer(ent, EnumHbmSound.soundMineLoop).setVolume(10.0F); @@ -727,67 +681,70 @@ public class ModEventHandlerClient { } } } - + @SubscribeEvent public void drawTooltip(ItemTooltipEvent event) { - + ItemStack stack = event.itemStack; List list = event.toolTip; - + + /// DAMAGE RESISTANCE /// + DamageResistanceHandler.addInfo(stack, list); + /// HAZMAT INFO /// List hazInfo = ArmorRegistry.hazardClasses.get(stack.getItem()); - + if(hazInfo != null) { - + if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("hazard.prot")); for(HazardClass clazz : hazInfo) { list.add(EnumChatFormatting.YELLOW + " " + I18nUtil.resolveKey(clazz.lang)); } } else { - + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display protection info"); } } - + /// CLADDING (LEGACY) /// double rad = HazmatRegistry.getResistance(stack); rad = ((int)(rad * 1000)) / 1000D; if(rad > 0) list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("trait.radResistance", rad)); - + /// ARMOR MODS /// if(stack.getItem() instanceof ItemArmor && ArmorModHandler.hasMods(stack)) { - + if(!Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) && !(Minecraft.getMinecraft().currentScreen instanceof GUIArmorTable)) { - + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display installed armor mods"); - + } else { - + list.add(EnumChatFormatting.YELLOW + "Mods:"); - + ItemStack[] mods = ArmorModHandler.pryMods(stack); - + for(int i = 0; i < 8; i++) { - + if(mods[i] != null && mods[i].getItem() instanceof ItemArmorMod) { - + ((ItemArmorMod)mods[i].getItem()).addDesc(list, mods[i], stack); } } } } - + /// HAZARDS /// HazardSystem.addFullTooltip(stack, event.entityPlayer, list); - - if(event.showAdvancedItemTooltips) { + + if(event.showAdvancedItemTooltips && ClientConfig.ITEM_TOOLTIP_SHOW_OREDICT.get()) { List names = ItemStackUtil.getOreDictNames(stack); - + if(names.size() > 0) { list.add(EnumChatFormatting.BLUE + "Ore Dict:"); for(String s : names) { @@ -797,30 +754,33 @@ public class ModEventHandlerClient { list.add(EnumChatFormatting.RED + "No Ore Dict data!"); } } - + /// NUCLEAR FURNACE FUELS /// int breeder = TileEntityNukeFurnace.getFuelValue(stack); - + if(breeder != 0) { list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("trait.furnace", breeder)); } - + /// CUSTOM NUKE /// ComparableStack comp = new ComparableStack(stack).makeSingular(); - CustomNukeEntry entry = TileEntityNukeCustom.entries.get(comp); - - if(entry != null) { - - if(!list.isEmpty()) - list.add(""); - - if(entry.entry == EnumEntryType.ADD) - list.add(EnumChatFormatting.GOLD + "Adds " + entry.value + " to the custom nuke stage " + entry.type); - if(entry.entry == EnumEntryType.MULT) - list.add(EnumChatFormatting.GOLD + "Adds multiplier " + entry.value + " to the custom nuke stage " + entry.type); + if(ClientConfig.ITEM_TOOLTIP_SHOW_CUSTOM_NUKE.get()) { + CustomNukeEntry entry = TileEntityNukeCustom.entries.get(comp); + + if(entry != null) { + + if(!list.isEmpty()) + list.add(""); + + if(entry.entry == EnumEntryType.ADD) + list.add(EnumChatFormatting.GOLD + "Adds " + entry.value + " to the custom nuke stage " + entry.type); + + if(entry.entry == EnumEntryType.MULT) + list.add(EnumChatFormatting.GOLD + "Adds multiplier " + entry.value + " to the custom nuke stage " + entry.type); + } } - + try { CanneryBase cannery = Jars.canneries.get(comp); if(cannery != null) { @@ -831,36 +791,36 @@ public class ModEventHandlerClient { } catch(Exception ex) { list.add(EnumChatFormatting.RED + "Error loading cannery: " + ex.getLocalizedMessage()); } - + /*ItemStack copy = stack.copy(); List materials = Mats.getMaterialsFromItem(copy); - + if(!materials.isEmpty()) { for(MaterialStack mat : materials) { list.add(EnumChatFormatting.DARK_PURPLE + mat.material.names[0] + ": " + Mats.formatAmount(mat.amount * stack.stackSize)); } }*/ } - + private static long canneryTimestamp; private static ComparableStack lastCannery = null; - + private ResourceLocation ashes = new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_ash.png"); - + @SideOnly(Side.CLIENT) //@SubscribeEvent public void onRenderStorm(RenderHandEvent event) { - + if(BlockAshes.ashes == 0) return; - + GL11.glPushMatrix(); - + Minecraft mc = Minecraft.getMinecraft(); GL11.glRotatef((float)-mc.thePlayer.rotationYaw, 0, 1, 0); GL11.glRotatef((float)(mc.thePlayer.rotationPitch), 1, 0, 0); - + ScaledResolution resolution = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight); GL11.glDisable(GL11.GL_DEPTH_TEST); @@ -868,12 +828,12 @@ public class ModEventHandlerClient { GL11.glEnable(GL11.GL_BLEND); OpenGlHelper.glBlendFunc(770, 771, 1, 0); GL11.glEnable(GL11.GL_ALPHA_TEST); - + int w = resolution.getScaledWidth(); int h = resolution.getScaledHeight(); double off = System.currentTimeMillis() / -10000D % 10000D; double aw = 25; - + Tessellator tessellator = Tessellator.instance; //int d = mc.theWorld.getLightBrightnessForSkyBlocks(MathHelper.floor_double(mc.thePlayer.posX), MathHelper.floor_double(mc.thePlayer.posY), MathHelper.floor_double(mc.thePlayer.posZ), 0); @@ -882,21 +842,21 @@ public class ModEventHandlerClient { int lX = lastBrightness % 65536; int lY = lastBrightness / 65536; float interp = (mc.theWorld.getTotalWorldTime() % 20) * 0.05F; - + if(mc.theWorld.getTotalWorldTime() == 1) lastBrightness = currentBrightness; - + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)(lX + (cX - lX) * interp) / 1.0F, (float)(lY + (cY - lY) * interp) / 1.0F); mc.entityRenderer.enableLightmap((double)event.partialTicks); - + mc.getTextureManager().bindTexture(ashes); - + for(int i = 1; i < 3; i++) { - + GL11.glRotatef(-15, 0, 0, 1); GL11.glColor4f(1.0F, 1.0F, 1.0F, BlockAshes.ashes / 256F * 0.98F / i); - + tessellator.startDrawingQuads(); tessellator.addVertexWithUV(-w * 0.25, h * 0.25, aw, 0.0D + off * i, 1.0D); tessellator.addVertexWithUV(w * 0.25, h * 0.25, aw, 1.0D + off * i, 1.0D); @@ -906,7 +866,7 @@ public class ModEventHandlerClient { } mc.entityRenderer.disableLightmap((double)event.partialTicks); - + GL11.glDepthMask(true); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); @@ -919,15 +879,15 @@ public class ModEventHandlerClient { public static int lastBrightness = 0; static boolean isRenderingItems = false; - + @SubscribeEvent public void clientTick(ClientTickEvent event) { - + Minecraft mc = Minecraft.getMinecraft(); ArmorNo9.updateWorldHook(mc.theWorld); boolean supportsHighRenderDistance = FMLClientHandler.instance().hasOptifine() || Loader.isModLoaded("angelica"); - + if(mc.gameSettings.renderDistanceChunks > 16 && GeneralConfig.enableRenderDistCheck && !supportsHighRenderDistance) { mc.gameSettings.renderDistanceChunks = 16; LoggingUtil.errorWithHighlight("========================== WARNING =========================="); @@ -938,35 +898,35 @@ public class ModEventHandlerClient { LoggingUtil.errorWithHighlight("If you got this error after downgrading your Minecraft version: Consider using a launcher that doesn't reuse the same folders for every game instance. MultiMC for example, it's really good and it comes with a dedicated cat button. You like cats, right? Are you using the Microsoft launcher? The one launcher that turns every version switch into a tightrope act because all the old config and options files are still here because different instances all use the same folder structure instead of different folders like a competent launcher would, because some MO-RON thought that this was an acceptable way of doing things? Really? The launcher that circumcises every crashlog into indecipherable garbage, tricking oblivious people into posting that as a \"crash report\", effectively wasting everyone's time? The launcher made by the company that thought it would be HI-LA-RI-OUS to force everyone to use Microsoft accounts, effectively breaking every other launcher until they implement their terrible auth system?"); LoggingUtil.errorWithHighlight("========================== WARNING =========================="); } - + if(mc.theWorld == null || mc.thePlayer == null) return; - + if(event.phase == Phase.START && event.side == Side.CLIENT) { - + if(BlockAshes.ashes > 256) BlockAshes.ashes = 256; if(BlockAshes.ashes > 0) BlockAshes.ashes -= 2; if(BlockAshes.ashes < 0) BlockAshes.ashes = 0; - + if(mc.theWorld.getTotalWorldTime() % 20 == 0) { this.lastBrightness = this.currentBrightness; currentBrightness = mc.theWorld.getLightBrightnessForSkyBlocks(MathHelper.floor_double(mc.thePlayer.posX), MathHelper.floor_double(mc.thePlayer.posY), MathHelper.floor_double(mc.thePlayer.posZ), 0); } - + if(ArmorUtil.isWearingEmptyMask(mc.thePlayer)) { MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "Your mask has no filter!", MainRegistry.proxy.ID_FILTER); } } - - if(Keyboard.isKeyDown(Keyboard.KEY_F1)) { - + + if(Keyboard.isKeyDown(Keyboard.KEY_F1) && Minecraft.getMinecraft().currentScreen != null) { + ComparableStack comp = canneryTimestamp > System.currentTimeMillis() - 100 ? lastCannery : null; - + if(comp == null) { ItemStack stack = getMouseOverStack(); if(stack != null) comp = new ComparableStack(stack).makeSingular(); } - + if(comp != null) { CanneryBase cannery = Jars.canneries.get(comp); if(cannery != null) { @@ -974,9 +934,9 @@ public class ModEventHandlerClient { } } } - + if(Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) && Keyboard.isKeyDown(Keyboard.KEY_LMENU)) { - + ItemStack stack = getMouseOverStack(); if(stack != null) { stack = stack.copy(); @@ -1023,29 +983,55 @@ public class ModEventHandlerClient { } else { isRenderingItems = false; } - + + EntityPlayer player = mc.thePlayer; + if(event.phase == Phase.START) { - EntityPlayer player = mc.thePlayer; - + float discriminator = 0.003F; float defaultStepSize = 0.5F; int newStepSize = 0; - + if(player.inventory.armorInventory[2] != null && player.inventory.armorInventory[2].getItem() instanceof ArmorFSB) { ArmorFSB plate = (ArmorFSB) player.inventory.armorInventory[2].getItem(); if(plate.hasFSBArmor(player)) newStepSize = plate.stepSize; } - + if(newStepSize > 0) { player.stepHeight = newStepSize + discriminator; } else { for(int i = 1; i < 4; i++) if(player.stepHeight == i + discriminator) player.stepHeight = defaultStepSize; } } + + if(event.phase == Phase.END) { + + if(ClientConfig.GUN_VISUAL_RECOIL.get()) { + ItemGunBaseNT.offsetVertical += ItemGunBaseNT.recoilVertical; + ItemGunBaseNT.offsetHorizontal += ItemGunBaseNT.recoilHorizontal; + player.rotationPitch -= ItemGunBaseNT.recoilVertical; + player.rotationYaw -= ItemGunBaseNT.recoilHorizontal; + + ItemGunBaseNT.recoilVertical *= ItemGunBaseNT.recoilDecay; + ItemGunBaseNT.recoilHorizontal *= ItemGunBaseNT.recoilDecay; + float dV = ItemGunBaseNT.offsetVertical * ItemGunBaseNT.recoilRebound; + float dH = ItemGunBaseNT.offsetHorizontal * ItemGunBaseNT.recoilRebound; + + ItemGunBaseNT.offsetVertical -= dV; + ItemGunBaseNT.offsetHorizontal -= dH; + player.rotationPitch += dV; + player.rotationYaw += dH; + } else { + ItemGunBaseNT.offsetVertical = 0; + ItemGunBaseNT.offsetHorizontal = 0; + ItemGunBaseNT.recoilVertical = 0; + ItemGunBaseNT.recoilHorizontal = 0; + } + } } - + public static ItemStack getMouseOverStack() { - + Minecraft mc = Minecraft.getMinecraft(); if(mc.currentScreen instanceof GuiContainer) { @@ -1054,41 +1040,41 @@ public class ModEventHandlerClient { int height = scaledresolution.getScaledHeight(); int mouseX = Mouse.getX() * width / mc.displayWidth; int mouseY = height - Mouse.getY() * height / mc.displayHeight - 1; - + GuiContainer container = (GuiContainer) mc.currentScreen; - + for(Object o : container.inventorySlots.inventorySlots) { Slot slot = (Slot) o; - + if(slot.getHasStack()) { try { Method isMouseOverSlot = ReflectionHelper.findMethod(GuiContainer.class, container, new String[] {"func_146981_a", "isMouseOverSlot"}, Slot.class, int.class, int.class); - + if((boolean) isMouseOverSlot.invoke(container, slot, mouseX, mouseY)) { return slot.getStack(); } - + } catch(Exception ex) { } } } } - + return null; } - + @SideOnly(Side.CLIENT) @SubscribeEvent(priority = EventPriority.LOWEST) public void onClientTickLast(ClientTickEvent event) { - + if(event.phase == Phase.START && GeneralConfig.enableSkyboxes) { - + World world = Minecraft.getMinecraft().theWorld; if(world == null) return; - + IRenderHandler sky = world.provider.getSkyRenderer(); - + if(world.provider instanceof WorldProviderSurface) { - + if(ImpactWorldHandler.getDustForClient(world) > 0 || ImpactWorldHandler.getFireForClient(world) > 0) { //using a chainloader isn't necessary since none of the sky effects should render anyway @@ -1098,34 +1084,28 @@ public class ModEventHandlerClient { } } } - + if(world.provider.dimensionId == 0) { - + if(!(sky instanceof RenderNTMSkyboxChainloader)) { world.provider.setSkyRenderer(new RenderNTMSkyboxChainloader(sky)); } } } - } - @SideOnly(Side.CLIENT) - @SubscribeEvent - public void onMouseClicked(InputEvent.KeyInputEvent event) { + if(event.phase == Phase.START) { - Minecraft mc = Minecraft.getMinecraft(); - if(GeneralConfig.enableKeybindOverlap && (mc.currentScreen == null || mc.currentScreen.allowUserInput)) { - boolean state = Mouse.getEventButtonState(); - int keyCode = Mouse.getEventButton() - 100; - - //if anything errors here, run ./gradlew clean setupDecompWorkSpace - for(Object o : KeyBinding.keybindArray) { - KeyBinding key = (KeyBinding) o; - - if(key.getKeyCode() == keyCode && KeyBinding.hash.lookup(key.getKeyCode()) != key) { - - key.pressed = state; - if(state) { - key.pressTime++; + Minecraft mc = Minecraft.getMinecraft(); + + if(mc.currentScreen != null && mc.currentScreen.allowUserInput) { + HbmPlayerProps props = HbmPlayerProps.getData(MainRegistry.proxy.me()); + + for(EnumKeybind key : EnumKeybind.values()) { + boolean last = props.getKeyPressed(key); + + if(last) { + PacketDispatcher.wrapper.sendToServer(new KeybindPacket(key, !last)); + props.setKeyPressed(key, !last); } } } @@ -1133,29 +1113,72 @@ public class ModEventHandlerClient { } @SideOnly(Side.CLIENT) - @SubscribeEvent + @SubscribeEvent(priority = EventPriority.LOW) + public void onMouseClicked(InputEvent.MouseInputEvent event) { + + Minecraft mc = Minecraft.getMinecraft(); + if(GeneralConfig.enableKeybindOverlap && (mc.currentScreen == null || mc.currentScreen.allowUserInput)) { + boolean state = Mouse.getEventButtonState(); + int keyCode = Mouse.getEventButton() - 100; + + //if anything errors here, run ./gradlew clean setupDecompWorkSpace + for(Object o : KeyBinding.keybindArray) { + KeyBinding key = (KeyBinding) o; + + if(key.getKeyCode() == keyCode && KeyBinding.hash.lookup(key.getKeyCode()) != key) { + + key.pressed = state; + if(state && key.pressTime == 0) { + key.pressTime = 1; + } + } + } + + boolean gunKey = keyCode == HbmKeybinds.gunPrimaryKey.getKeyCode() || keyCode == HbmKeybinds.gunSecondaryKey.getKeyCode() || + keyCode == HbmKeybinds.gunTertiaryKey.getKeyCode() || keyCode == HbmKeybinds.reloadKey.getKeyCode(); + + EntityPlayer player = mc.thePlayer; + + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemGunBaseNT) { + + /* Shoot in favor of attacking */ + if(gunKey && keyCode == mc.gameSettings.keyBindAttack.getKeyCode()) { + mc.gameSettings.keyBindAttack.pressed = false; + mc.gameSettings.keyBindAttack.pressTime = 0; + } + + if(gunKey && keyCode == mc.gameSettings.keyBindPickBlock.getKeyCode()) { + mc.gameSettings.keyBindPickBlock.pressed = false; + mc.gameSettings.keyBindPickBlock.pressTime = 0; + } + } + } + } + + @SideOnly(Side.CLIENT) + @SubscribeEvent(priority = EventPriority.LOW) public void onKeyTyped(InputEvent.KeyInputEvent event) { Minecraft mc = Minecraft.getMinecraft(); if(GeneralConfig.enableKeybindOverlap && (mc.currentScreen == null || mc.currentScreen.allowUserInput)) { boolean state = Keyboard.getEventKeyState(); int keyCode = Keyboard.getEventKey(); - + //if anything errors here, run ./gradlew clean setupDecompWorkSpace for(Object o : KeyBinding.keybindArray) { KeyBinding key = (KeyBinding) o; - + if(keyCode != 0 && key.getKeyCode() == keyCode && KeyBinding.hash.lookup(key.getKeyCode()) != key) { - + key.pressed = state; - if(state) { - key.pressTime++; + if(state && key.pressTime == 0) { + key.pressTime = 1; } } } } } - + @SideOnly(Side.CLIENT) @SubscribeEvent public void onRenderWorldLastEvent(RenderWorldLastEvent event) { @@ -1226,7 +1249,7 @@ public class ModEventHandlerClient { GL11.glEnable(GL11.GL_CULL_FACE); GL11.glPopMatrix(); } - + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); RenderHelper.disableStandardItemLighting(); @@ -1235,87 +1258,71 @@ public class ModEventHandlerClient { } GL11.glPopMatrix(); - + boolean hudOn = HbmPlayerProps.getData(player).enableHUD; - + if(hudOn) { RenderOverhead.renderMarkers(event.partialTicks); - + if(ArmorFSB.hasFSBArmor(player)) { ItemStack plate = player.inventory.armorInventory[2]; ArmorFSB chestplate = (ArmorFSB) plate.getItem(); - + if(chestplate.thermal) RenderOverhead.renderThermalSight(event.partialTicks); } } } - + @SubscribeEvent(priority = EventPriority.HIGHEST) public void preRenderEventFirst(RenderLivingEvent.Pre event) { - + if(MainRegistry.proxy.isVanished(event.entity)) event.setCanceled(true); } - + @SubscribeEvent public void preRenderEvent(RenderLivingEvent.Pre event) { - + EntityPlayer player = Minecraft.getMinecraft().thePlayer; - + if(ArmorFSB.hasFSBArmor(player) && HbmPlayerProps.getData(player).enableHUD) { ItemStack plate = player.inventory.armorInventory[2]; ArmorFSB chestplate = (ArmorFSB)plate.getItem(); - + if(chestplate.vats) { - + int count = (int)Math.min(event.entity.getMaxHealth(), 100); - + int bars = (int)Math.ceil(event.entity.getHealth() * count / event.entity.getMaxHealth()); - + String bar = EnumChatFormatting.RED + ""; - + for(int i = 0; i < count; i++) { - + if(i == bars) bar += EnumChatFormatting.RESET + ""; - + bar += "|"; } RenderOverhead.renderTag(event.entity, event.x, event.y, event.z, event.renderer, bar, chestplate.thermal); } } } - - /*@SubscribeEvent - public void setupFog(RenderFogEvent event) { - event.setResult(Result.DENY); - } - - @SubscribeEvent - public void thickenFog(FogDensity event) { - event.density = 0.05F; - event.setCanceled(true); - } - - @SubscribeEvent - public void tintFog(FogColors event) { - event.red = 0.5F; - event.green = 0.0F; - event.blue = 0.0F; - }*/ public static IIcon particleBase; public static IIcon particleLeaf; public static IIcon particleSplash; + public static IIcon particleAshes; @SubscribeEvent public void onTextureStitch(TextureStitchEvent.Pre event) { - + if(event.map.getTextureType() == 0) { particleBase = event.map.registerIcon(RefStrings.MODID + ":particle/particle_base"); particleLeaf = event.map.registerIcon(RefStrings.MODID + ":particle/dead_leaf"); particleSplash = event.map.registerIcon(RefStrings.MODID + ":particle/particle_splash"); + particleAshes = event.map.registerIcon(RefStrings.MODID + ":particle/particle_ashes"); } } @@ -1326,16 +1333,16 @@ public class ModEventHandlerClient { private static final ResourceLocation poster = new ResourceLocation(RefStrings.MODID + ":textures/models/misc/poster.png"); private static final ResourceLocation poster_cat = new ResourceLocation(RefStrings.MODID + ":textures/models/misc/poster_cat.png"); - + @SubscribeEvent public void renderFrame(RenderItemInFrameEvent event) { - + if(event.item != null && event.item.getItem() == ModItems.flame_pony) { event.setCanceled(true); - + double p = 0.0625D; double o = p * 2.75D; - + GL11.glDisable(GL11.GL_LIGHTING); Minecraft.getMinecraft().renderEngine.bindTexture(poster); Tessellator tess = Tessellator.instance; @@ -1347,10 +1354,10 @@ public class ModEventHandlerClient { tess.draw(); GL11.glEnable(GL11.GL_LIGHTING); } - + if(event.item != null && event.item.getItem() == Items.paper) { event.setCanceled(true); - + double p = 0.0625D; double o = p * 2.75D; @@ -1366,16 +1373,16 @@ public class ModEventHandlerClient { GL11.glEnable(GL11.GL_LIGHTING); } } - + @SubscribeEvent public void worldTick(WorldTickEvent event) { - + EntityPlayer player = Minecraft.getMinecraft().thePlayer; - + if(player != null && player.ridingEntity instanceof EntityRailCarRidable && player instanceof EntityClientPlayerMP) { EntityRailCarRidable train = (EntityRailCarRidable) player.ridingEntity; EntityClientPlayerMP client = (EntityClientPlayerMP) player; - + //mojank compensation, because apparently the "this makes the render work" method also determines the fucking input if(!train.shouldRiderSit()) { client.sendQueue.addToSendQueue(new C03PacketPlayer.C05PacketPlayerLook(client.rotationYaw, client.rotationPitch, client.onGround)); @@ -1383,14 +1390,14 @@ public class ModEventHandlerClient { } } } - + @SubscribeEvent public void onOpenGUI(GuiOpenEvent event) { - - if(event.gui instanceof GuiMainMenu) { + + if(event.gui instanceof GuiMainMenu && ClientConfig.MAIN_MENU_WACKY_SPLASHES.get()) { GuiMainMenu main = (GuiMainMenu) event.gui; int rand = (int)(Math.random() * 150); - + switch(rand) { case 0: main.splashText = "Floppenheimer!"; break; case 1: main.splashText = "i should dip my balls in sulfuric acid"; break; @@ -1406,7 +1413,7 @@ public class ModEventHandlerClient { case 11: main.splashText = "Do drugs!"; break; case 12: main.splashText = "Imagine being scared by splash texts!"; break; } - + double d = Math.random(); if(d < 0.1) main.splashText = "Redditors aren't people!"; else if(d < 0.2) main.splashText = "Can someone tell me what corrosive fumes the people on Reddit are huffing so I can avoid those more effectively?"; diff --git a/src/main/java/com/hbm/main/ModEventHandlerImpact.java b/src/main/java/com/hbm/main/ModEventHandlerImpact.java index 7f178531f..723410c6d 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerImpact.java +++ b/src/main/java/com/hbm/main/ModEventHandlerImpact.java @@ -1,26 +1,16 @@ package com.hbm.main; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; import com.hbm.handler.ImpactWorldHandler; import com.hbm.saveddata.TomSaveData; import com.hbm.world.WorldProviderNTM; - +import cpw.mods.fml.common.eventhandler.Event.Result; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.eventhandler.Event.Result; import cpw.mods.fml.common.gameevent.TickEvent.Phase; import cpw.mods.fml.common.gameevent.TickEvent.WorldTickEvent; -import net.minecraft.block.Block; -import net.minecraft.block.BlockBush; -import net.minecraft.block.BlockCrops; -import net.minecraft.block.BlockDoor; -import net.minecraft.block.BlockLeaves; -import net.minecraft.block.BlockLog; +import net.minecraft.block.*; import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.passive.EntityWaterMob; @@ -34,50 +24,54 @@ import net.minecraftforge.common.DimensionManager; import net.minecraftforge.event.entity.living.LivingSpawnEvent.CheckSpawn; import net.minecraftforge.event.terraingen.BiomeEvent; import net.minecraftforge.event.terraingen.DecorateBiomeEvent; +import net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType; import net.minecraftforge.event.terraingen.PopulateChunkEvent; import net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate; -import net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType; import net.minecraftforge.event.world.WorldEvent; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + public class ModEventHandlerImpact { - + ////////////////////////////////////////// private static Random rand = new Random(); ////////////////////////////////////////// - + @SubscribeEvent public void worldTick(WorldTickEvent event) { if(event.world != null && !event.world.isRemote && event.phase == Phase.START) { float settle = 1F / 14400000F; // 600 days to completely clear all dust. float cool = 1F / 24000F; // One MC day between initial impact and total darkness. - + ImpactWorldHandler.impactEffects(event.world); TomSaveData data = TomSaveData.forWorld(event.world); - + if(data.dust > 0 && data.fire == 0) { data.dust = Math.max(0, data.dust - settle); data.markDirty(); } - + if(data.fire > 0) { data.fire = Math.max(0, (data.fire - cool)); data.dust = Math.min(1, (data.dust + cool)); data.markDirty(); } - + if(!event.world.loadedEntityList.isEmpty()) { - + List oList = new ArrayList(); oList.addAll(event.world.loadedEntityList); - + for(Object e : oList) { if(e instanceof EntityLivingBase) { EntityLivingBase entity = (EntityLivingBase) e; - + if(entity.worldObj.provider.dimensionId == 0 && data.fire > 0 && data.dust < 0.75f && event.world.getSavedLightValue(EnumSkyBlock.Sky, (int) entity.posX, (int) entity.posY, (int) entity.posZ) > 7) { - + entity.setFire(5); entity.attackEntityFrom(DamageSource.onFire, 2); } @@ -102,9 +96,9 @@ public class ModEventHandlerImpact { @SubscribeEvent public void extinction(CheckSpawn event) { - + TomSaveData data = TomSaveData.forWorld(event.world); - + if(data.impact) { if(!(event.entityLiving instanceof EntityPlayer) && event.entityLiving instanceof EntityLivingBase) { if(event.world.provider.dimensionId == 0) { @@ -126,22 +120,22 @@ public class ModEventHandlerImpact { @SubscribeEvent public void onPopulate(Populate event) { - + if(event.type == Populate.EventType.ANIMALS) { - + TomSaveData data = TomSaveData.forWorld(event.world); - + if(data.impact) { event.setResult(Result.DENY); } } } - + @SubscribeEvent(priority = EventPriority.LOWEST) public void onLoad(WorldEvent.Load event) { - + TomSaveData.resetLastCached(); - + if(GeneralConfig.enableImpactWorldProvider) { DimensionManager.unregisterProviderType(0); DimensionManager.registerProviderType(0, WorldProviderNTM.class, true); @@ -152,18 +146,18 @@ public class ModEventHandlerImpact { public void modifyVillageGen(BiomeEvent.GetVillageBlockID event) { Block b = event.original; Material mat = event.original.getMaterial(); - + TomSaveData data = TomSaveData.getLastCachedOrNull(); - + if(data == null || event.biome == null) { return; } - + if(data.impact) { if(mat == Material.wood || mat == Material.glass || b == Blocks.ladder || b instanceof BlockCrops || b == Blocks.chest || b instanceof BlockDoor || mat == Material.cloth || mat == Material.water || b == Blocks.stone_slab) { event.replacement = Blocks.air; - + } else if(b == Blocks.cobblestone || b == Blocks.stonebrick) { if(rand.nextInt(3) == 1) { event.replacement = Blocks.gravel; @@ -176,19 +170,19 @@ public class ModEventHandlerImpact { event.replacement = Blocks.dirt; } } - + if(event.replacement != null) { event.setResult(Result.DENY); } } - + @SubscribeEvent public void postImpactGeneration(BiomeEvent event) { /// Disables post-impact surface replacement for superflat worlds /// because they are retarded and crash with a NullPointerException if /// you try to look for biome-specific blocks. - TomSaveData data = TomSaveData.getLastCachedOrNull(); //despite forcing the data, we cannot rule out canceling events or custom firing shenanigans + TomSaveData data = TomSaveData.getLastCachedOrNull(); //despite forcing the data, we cannot rule out canceling events or custom firing shenanigans if(data != null && event.biome != null) { if(event.biome.topBlock != null) { if(event.biome.topBlock == Blocks.grass) { @@ -204,18 +198,18 @@ public class ModEventHandlerImpact { @SubscribeEvent public void postImpactDecoration(DecorateBiomeEvent.Decorate event) { - + TomSaveData data = TomSaveData.forWorld(event.world); - + if(data.impact) { EventType type = event.type; - + if(data.dust > 0 || data.fire > 0) { if(type == event.type.TREE || type == event.type.BIG_SHROOM || type == event.type.GRASS || type == event.type.REED || type == event.type.FLOWERS || type == event.type.DEAD_BUSH || type == event.type.CACTUS || type == event.type.PUMPKIN || type == event.type.LILYPAD) { event.setResult(Result.DENY); } - + } else if(data.dust == 0 && data.fire == 0) { if(type == event.type.TREE || type == event.type.BIG_SHROOM || type == event.type.CACTUS) { if(event.world.rand.nextInt(9) == 0) { @@ -224,12 +218,12 @@ public class ModEventHandlerImpact { event.setResult(Result.DENY); } } - + if(type == event.type.GRASS || type == event.type.REED) { event.setResult(Result.DEFAULT); } } - + } else { event.setResult(Result.DEFAULT); } @@ -242,20 +236,20 @@ public class ModEventHandlerImpact { @SubscribeEvent public void populateChunkPost(PopulateChunkEvent.Post event) { - + TomSaveData data = TomSaveData.forWorld(event.world); - + if(data.impact) { Chunk chunk = event.world.getChunkFromChunkCoords(event.chunkX, event.chunkZ); - + for(ExtendedBlockStorage storage : chunk.getBlockStorageArray()) { - + if(storage != null) { - + for(int x = 0; x < 16; ++x) { for(int y = 0; y < 16; ++y) { for(int z = 0; z < 16; ++z) { - + if(data.dust > 0.25 || data.fire > 0) { if(storage.getBlockByExtId(x, y, z) == Blocks.grass) { storage.func_150818_a(x, y, z, ModBlocks.impact_dirt); diff --git a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java index 7fb0fc35b..d19c8bd2f 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java +++ b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java @@ -1,23 +1,24 @@ package com.hbm.main; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GLContext; - import com.hbm.blocks.ICustomBlockHighlight; +import com.hbm.config.ClientConfig; import com.hbm.config.RadiationConfig; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.items.armor.IArmorDisableModel; import com.hbm.items.armor.IArmorDisableModel.EnumPlayerPart; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.packet.PermaSyncHandler; +import com.hbm.render.item.weapon.sedna.ItemRenderWeaponBase; import com.hbm.render.model.ModelMan; import com.hbm.world.biome.BiomeGenCraterBase; - import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.TickEvent.WorldTickEvent; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.AbstractClientPlayer; +import net.minecraft.client.model.ModelBiped; import net.minecraft.client.model.ModelRenderer; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.entity.RenderManager; @@ -33,13 +34,20 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; +import net.minecraftforge.client.IItemRenderer; +import net.minecraftforge.client.IItemRenderer.ItemRenderType; +import net.minecraftforge.client.MinecraftForgeClient; import net.minecraftforge.client.event.DrawBlockHighlightEvent; -import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.EntityViewRenderEvent.FogColors; import net.minecraftforge.client.event.EntityViewRenderEvent.FogDensity; +import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; +import net.minecraftforge.client.event.RenderHandEvent; import net.minecraftforge.client.event.RenderPlayerEvent; import net.minecraftforge.common.ForgeModContainer; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; +import org.lwjgl.opengl.GLContext; public class ModEventHandlerRenderer { @@ -51,6 +59,7 @@ public class ModEventHandlerRenderer { EntityPlayer player = event.entityPlayer; RenderPlayer renderer = event.renderer; + ItemStack held = player.getHeldItem(); boolean isManly = PermaSyncHandler.boykissers.contains(player.getEntityId()); @@ -66,6 +75,18 @@ public class ModEventHandlerRenderer { } } + if(held != null) { + IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(held, IItemRenderer.ItemRenderType.EQUIPPED); + if(customRenderer instanceof ItemRenderWeaponBase) { + ItemRenderWeaponBase renderGun = (ItemRenderWeaponBase) customRenderer; + if(renderGun.isAkimbo()) { + partsHidden[EnumPlayerPart.LEFT_ARM.ordinal()] = true; + ModelRenderer box = getBoxFromType(renderer, EnumPlayerPart.LEFT_ARM); + box.isHidden = true; + } + } + } + if(isManly) { return; } @@ -94,8 +115,34 @@ public class ModEventHandlerRenderer { EntityPlayer player = event.entityPlayer; RenderPlayer renderer = event.renderer; + boolean akimbo = false; + + ItemStack held = player.getHeldItem(); + + if(held != null) { + IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(held, IItemRenderer.ItemRenderType.EQUIPPED); + if(customRenderer instanceof ItemRenderWeaponBase) { + ItemRenderWeaponBase renderGun = (ItemRenderWeaponBase) customRenderer; + if(renderGun.isAkimbo()) { + akimbo = true; + } + } + } + boolean isManly = PermaSyncHandler.boykissers.contains(player.getEntityId()); + if(akimbo) { + ModelBiped biped = renderer.modelBipedMain; + renderer.modelArmorChestplate.bipedLeftArm.rotateAngleY = renderer.modelArmor.bipedLeftArm.rotateAngleY = biped.bipedLeftArm.rotateAngleY = + 0.1F + biped.bipedHead.rotateAngleY; + if(!isManly) { + AbstractClientPlayer acp = (AbstractClientPlayer) player; + Minecraft.getMinecraft().getTextureManager().bindTexture(acp.getLocationSkin()); + biped.bipedLeftArm.isHidden = false; + biped.bipedLeftArm.render(0.0625F); + } + } + if(isManly) { if(manlyModel == null) manlyModel = new ModelMan(); @@ -110,6 +157,7 @@ public class ModEventHandlerRenderer { if(f6 > 1.0F) { f6 = 1.0F; } + manlyModel.render(event.entityPlayer, f7, f6, yawWrapped, yaw, pitch, 0.0625F, renderer); } } @@ -127,6 +175,69 @@ public class ModEventHandlerRenderer { } } + @SubscribeEvent + public void onRenderHeldGun(RenderPlayerEvent.Pre event) { + + EntityPlayer player = event.entityPlayer; + RenderPlayer renderer = event.renderer; + ItemStack held = player.getHeldItem(); + + if(held != null && player.getHeldItem().getItem() instanceof ItemGunBaseNT) { + renderer.modelBipedMain.aimedBow = true; + renderer.modelArmor.aimedBow = true; + renderer.modelArmorChestplate.aimedBow = true; + + //technically not necessary but it probably fixes some issues with mods that implement their armor weirdly + IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(held, IItemRenderer.ItemRenderType.EQUIPPED); + if(customRenderer instanceof ItemRenderWeaponBase) { + ItemRenderWeaponBase renderGun = (ItemRenderWeaponBase) customRenderer; + if(renderGun.isAkimbo()) { + ModelBiped biped = renderer.modelBipedMain; + renderer.modelArmorChestplate.bipedLeftArm.rotateAngleY = renderer.modelArmor.bipedLeftArm.rotateAngleY = biped.bipedLeftArm.rotateAngleY = 0.1F + biped.bipedHead.rotateAngleY; + } + } + } + } + + @SubscribeEvent + public void onRenderAkimbo(RenderPlayerEvent.Specials.Pre event) { + + EntityPlayer player = event.entityPlayer; + RenderPlayer renderer = event.renderer; + ItemStack held = player.getHeldItem(); + if(held == null) return; + + IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(held, IItemRenderer.ItemRenderType.EQUIPPED); + + if(customRenderer instanceof ItemRenderWeaponBase) { + ItemRenderWeaponBase renderWeapon = (ItemRenderWeaponBase) customRenderer; + if(renderWeapon.isAkimbo()) { + GL11.glPushMatrix(); + renderer.modelBipedMain.bipedLeftArm.isHidden = false; + renderer.modelBipedMain.bipedLeftArm.postRender(0.0625F); + //vanilla bullshit + GL11.glTranslatef(-0.0625F, 0.4375F, 0.0625F); + float scale = 0.375F; + GL11.glTranslatef(0.25F, 0.1875F, -0.1875F); + GL11.glScalef(scale, scale, scale); + GL11.glRotatef(60.0F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(-90.0F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(20.0F, 0.0F, 0.0F, 1.0F); + // forge bullshit + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + GL11.glTranslatef(0.0F, -0.3F, 0.0F); + GL11.glScalef(1.5F, 1.5F, 1.5F); + GL11.glRotatef(50.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(335.0F, 0.0F, 0.0F, 1.0F); + GL11.glTranslatef(-0.9375F, -0.0625F, 0.0F); + renderWeapon.setupThirdPersonAkimbo(held); + renderWeapon.renderEquippedAkimbo(held); + GL11.glDisable(GL12.GL_RESCALE_NORMAL); + GL11.glPopMatrix(); + } + } + } + @SubscribeEvent public void onRenderHeldItem(RenderPlayerEvent.Specials.Pre event) { @@ -134,22 +245,20 @@ public class ModEventHandlerRenderer { //RenderPlayer renderer = event.renderer; boolean isManly = PermaSyncHandler.boykissers.contains(player.getEntityId()); - - if(!isManly) - return; + if(!isManly) return; if(manlyModel == null) manlyModel = new ModelMan(); - + event.renderItem = false; float f2 = 1.3333334F; ItemStack held = player.getHeldItem(); - + if(held == null) return; - + GL11.glPushMatrix(); manlyModel.rightArm.postRender(0.0625F); GL11.glTranslatef(-0.0625F, 0.4375F, 0.0625F); @@ -164,8 +273,8 @@ public class ModEventHandlerRenderer { enumaction = held.getItemUseAction(); } - net.minecraftforge.client.IItemRenderer customRenderer = net.minecraftforge.client.MinecraftForgeClient.getItemRenderer(held, net.minecraftforge.client.IItemRenderer.ItemRenderType.EQUIPPED); - boolean is3D = (customRenderer != null && customRenderer.shouldUseRenderHelper(net.minecraftforge.client.IItemRenderer.ItemRenderType.EQUIPPED, held, net.minecraftforge.client.IItemRenderer.ItemRendererHelper.BLOCK_3D)); + IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(held, IItemRenderer.ItemRenderType.EQUIPPED); + boolean is3D = (customRenderer != null && customRenderer.shouldUseRenderHelper(IItemRenderer.ItemRenderType.EQUIPPED, held, IItemRenderer.ItemRendererHelper.BLOCK_3D)); if(is3D || held.getItem() instanceof ItemBlock && RenderBlocks.renderItemIn3d(Block.getBlockFromItem(held.getItem()).getRenderType())) { f2 = 0.5F; @@ -247,16 +356,16 @@ public class ModEventHandlerRenderer { default: return null; } } - + @SubscribeEvent public void onDrawHighlight(DrawBlockHighlightEvent event) { MovingObjectPosition mop = event.target; - + if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK) { Block b = event.player.worldObj.getBlock(mop.blockX, mop.blockY, mop.blockZ); if(b instanceof ICustomBlockHighlight) { ICustomBlockHighlight cus = (ICustomBlockHighlight) b; - + if(cus.shouldDrawHighlight(event.player.worldObj, mop.blockX, mop.blockY, mop.blockZ)) { cus.drawHighlight(event, event.player.worldObj, mop.blockX, mop.blockY, mop.blockZ); event.setCanceled(true); @@ -334,17 +443,17 @@ public class ModEventHandlerRenderer { GL11.glPopMatrix(); } }*/ - + float renderSoot = 0; - + @SubscribeEvent public void worldTick(WorldTickEvent event) { - + if(event.phase == event.phase.START && RadiationConfig.enableSootFog) { float step = 0.05F; float soot = PermaSyncHandler.pollution[PollutionType.SOOT.ordinal()]; - + if(Math.abs(renderSoot - soot) < step) { renderSoot = soot; } else if(renderSoot < soot) { @@ -359,7 +468,7 @@ public class ModEventHandlerRenderer { public void thickenFog(FogDensity event) { float soot = (float) (renderSoot - RadiationConfig.sootFogThreshold); if(soot > 0 && RadiationConfig.enableSootFog) { - + float farPlaneDistance = (float) (Minecraft.getMinecraft().gameSettings.renderDistanceChunks * 16); float fogDist = farPlaneDistance / (1 + soot * 5F / (float) RadiationConfig.sootFogDivisor); GL11.glFogf(GL11.GL_FOG_START, 0); @@ -373,10 +482,10 @@ public class ModEventHandlerRenderer { event.setCanceled(true); } } - + @SubscribeEvent(priority = EventPriority.LOW) public void tintFog(FogColors event) { - + EntityPlayer player = MainRegistry.proxy.me(); if(player.worldObj.getBlock((int) Math.floor(player.posX), (int) Math.floor(player.posY), (int) Math.floor(player.posZ)).getMaterial() != Material.water) { Vec3 color = getFogBlendColor(player.worldObj, (int) Math.floor(player.posX), (int) Math.floor(player.posZ), event.red, event.green, event.blue, event.renderPartialTicks); @@ -386,7 +495,7 @@ public class ModEventHandlerRenderer { event.blue = (float) color.zCoord; } } - + float soot = (float) (renderSoot - RadiationConfig.sootFogThreshold); float sootColor = 0.15F; float sootReq = (float) RadiationConfig.sootFogDivisor; @@ -397,11 +506,11 @@ public class ModEventHandlerRenderer { event.blue = event.blue * (1 - interp) + sootColor * interp; } } - - @SubscribeEvent + + @SubscribeEvent(priority = EventPriority.HIGHEST) public void onRenderHUD(RenderGameOverlayEvent.Pre event) { - - if(event.type == ElementType.HOTBAR && (ModEventHandlerClient.shakeTimestamp + ModEventHandlerClient.shakeDuration - System.currentTimeMillis()) > 0) { + + if(event.type == ElementType.HOTBAR && (ModEventHandlerClient.shakeTimestamp + ModEventHandlerClient.shakeDuration - System.currentTimeMillis()) > 0 && ClientConfig.NUKE_HUD_SHAKE.get()) { double mult = (ModEventHandlerClient.shakeTimestamp + ModEventHandlerClient.shakeDuration - System.currentTimeMillis()) / (double) ModEventHandlerClient.shakeDuration * 2; double horizontal = MathHelper.clamp_double(Math.sin(System.currentTimeMillis() * 0.02), -0.7, 0.7) * 15; double vertical = MathHelper.clamp_double(Math.sin(System.currentTimeMillis() * 0.01 + 2), -0.7, 0.7) * 3; @@ -409,16 +518,32 @@ public class ModEventHandlerRenderer { } } + @SubscribeEvent + public void onRenderHand(RenderHandEvent event) { + + //can't use plaxer.getHeldItem() here because the item rendering persists for a few frames after hitting the switch key + ItemStack toRender = Minecraft.getMinecraft().entityRenderer.itemRenderer.itemToRender; + + if(toRender != null) { + IItemRenderer renderer = MinecraftForgeClient.getItemRenderer(toRender, ItemRenderType.EQUIPPED_FIRST_PERSON); + + if(renderer instanceof ItemRenderWeaponBase) { + ((ItemRenderWeaponBase) renderer).setPerspectiveAndRender(toRender, event.partialTicks); + event.setCanceled(true); + } + } + } + private static boolean fogInit = false; private static int fogX; private static int fogZ; private static Vec3 fogRGBMultiplier; private static boolean doesBiomeApply = false; private static long fogTimer = 0; - + /** Same procedure as getting the blended sky color but for fog */ public static Vec3 getFogBlendColor(World world, int playerX, int playerZ, float red, float green, float blue, double partialTicks) { - + long millis = System.currentTimeMillis() - fogTimer; if(playerX == fogX && playerZ == fogZ && fogInit && millis < 3000) return fogRGBMultiplier; @@ -427,7 +552,7 @@ public class ModEventHandlerRenderer { GameSettings settings = Minecraft.getMinecraft().gameSettings; int[] ranges = ForgeModContainer.blendRanges; int distance = 0; - + if(settings.fancyGraphics && settings.renderDistanceChunks >= 0) { distance = ranges[Math.min(settings.renderDistanceChunks, ranges.length - 1)]; } @@ -435,10 +560,10 @@ public class ModEventHandlerRenderer { float r = 0F; float g = 0F; float b = 0F; - + int divider = 0; doesBiomeApply = false; - + for(int x = -distance; x <= distance; x++) { for(int z = -distance; z <= distance; z++) { BiomeGenBase biome = world.getBiomeGenForCoords(playerX + x, playerZ + z); @@ -452,7 +577,7 @@ public class ModEventHandlerRenderer { fogX = playerX; fogZ = playerZ; - + if(doesBiomeApply) { fogRGBMultiplier = Vec3.createVectorHelper(r / divider, g / divider, b / divider); } else { @@ -461,25 +586,25 @@ public class ModEventHandlerRenderer { return fogRGBMultiplier; } - + /** Returns the current biome's fog color adjusted for brightness if in a crater, or the world's cached fog color if not */ public static Vec3 getBiomeFogColors(World world, BiomeGenBase biome, float r, float g, float b, double partialTicks) { - + if(biome instanceof BiomeGenCraterBase) { int color = biome.getSkyColorByTemp(biome.temperature); r = ((color & 0xff0000) >> 16) / 255F; g = ((color & 0x00ff00) >> 8) / 255F; b = (color & 0x0000ff) / 255F; - + float celestialAngle = world.getCelestialAngle((float) partialTicks); float skyBrightness = MathHelper.clamp_float(MathHelper.cos(celestialAngle * (float) Math.PI * 2.0F) * 2.0F + 0.5F, 0F, 1F); r *= skyBrightness; g *= skyBrightness; b *= skyBrightness; - + doesBiomeApply = true; } - + return Vec3.createVectorHelper(r, g, b); } } diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index 394c4feab..2e94e548c 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -1,29 +1,31 @@ package com.hbm.main; -import java.util.List; - -import codechicken.nei.recipe.*; -import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre; -import com.hbm.blocks.generic.BlockPlushie.TileEntityPlushie; -import com.hbm.config.CustomMachineConfigJSON; -import com.hbm.handler.nei.CustomMachineHandler; -import com.hbm.items.ModItems; -import com.hbm.items.machine.ItemBattery; -import com.hbm.lib.RefStrings; - import codechicken.nei.api.API; import codechicken.nei.api.IConfigureNEI; import codechicken.nei.api.IHighlightHandler; import codechicken.nei.api.ItemInfo.Layout; +import codechicken.nei.recipe.*; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockPlushie.TileEntityPlushie; +import com.hbm.config.CustomMachineConfigJSON; +import com.hbm.handler.nei.CustomMachineHandler; +import com.hbm.items.ItemEnums.EnumSecretType; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemBattery; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret; +import com.hbm.lib.RefStrings; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; +import java.util.List; + public class NEIConfig implements IConfigureNEI { - + @Override public void loadConfig() { for (TemplateRecipeHandler handler: NEIRegistry.listAllHandlers()) { @@ -33,20 +35,23 @@ public class NEIConfig implements IConfigureNEI { for(CustomMachineConfigJSON.MachineConfiguration conf : CustomMachineConfigJSON.niceList) { registerHandlerBypass(new CustomMachineHandler(conf)); } - + + for(Item item : ItemGunBaseNT.secrets) { + API.hideItem(new ItemStack(item)); + } + + for(int i = 0; i < EnumAmmoSecret.values().length; i++) API.hideItem(new ItemStack(ModItems.ammo_secret, 1, i)); + //Some things are even beyond my control...or are they? API.hideItem(ItemBattery.getEmptyBattery(ModItems.memory)); API.hideItem(ItemBattery.getFullBattery(ModItems.memory)); - API.hideItem(new ItemStack(ModItems.item_secret)); + for(int i = 0; i < EnumSecretType.values().length; i++) API.hideItem(new ItemStack(ModItems.item_secret, 1, i)); API.hideItem(new ItemStack(ModBlocks.machine_electric_furnace_on)); API.hideItem(new ItemStack(ModBlocks.machine_difurnace_on)); API.hideItem(new ItemStack(ModBlocks.machine_nuke_furnace_on)); API.hideItem(new ItemStack(ModBlocks.machine_rtg_furnace_on)); API.hideItem(new ItemStack(ModBlocks.reinforced_lamp_on)); - API.hideItem(new ItemStack(ModBlocks.statue_elb)); - API.hideItem(new ItemStack(ModBlocks.statue_elb_g)); - API.hideItem(new ItemStack(ModBlocks.statue_elb_w)); API.hideItem(new ItemStack(ModBlocks.statue_elb_f)); API.hideItem(new ItemStack(ModBlocks.cheater_virus)); API.hideItem(new ItemStack(ModBlocks.cheater_virus_seed)); @@ -62,8 +67,6 @@ public class NEIConfig implements IConfigureNEI { } API.hideItem(new ItemStack(ModBlocks.dummy_block_vault)); API.hideItem(new ItemStack(ModBlocks.dummy_block_blast)); - API.hideItem(new ItemStack(ModBlocks.dummy_block_uf6)); - API.hideItem(new ItemStack(ModBlocks.dummy_block_puf6)); API.hideItem(new ItemStack(ModBlocks.dummy_port_compact_launcher)); API.hideItem(new ItemStack(ModBlocks.dummy_port_launch_table)); API.hideItem(new ItemStack(ModBlocks.dummy_plate_compact_launcher)); @@ -80,32 +83,7 @@ public class NEIConfig implements IConfigureNEI { API.hideItem(new ItemStack(ModBlocks.spotlight_fluoro_off)); API.hideItem(new ItemStack(ModBlocks.spotlight_halogen_off)); API.hideItem(new ItemStack(ModBlocks.spotlight_beam)); - - API.registerHighlightIdentifier(ModBlocks.ore_random, new IHighlightHandler() { - @Override - public ItemStack identifyHighlight(World world, EntityPlayer player, MovingObjectPosition mop) { - int x = mop.blockX; - int y = mop.blockY; - int z = mop.blockZ; - - TileEntity te = world.getTileEntity(x, y, z); - - if(te instanceof TileEntityRandomOre) { - TileEntityRandomOre ore = (TileEntityRandomOre) te; - return new ItemStack(ModBlocks.ore_random, 1, ore.getStackId()); - } - - return null; - } - - @Override - public List handleTextData(ItemStack itemStack, World world, EntityPlayer player, MovingObjectPosition mop, List currenttip, Layout layout) { - return currenttip; - } - - }); - API.registerHighlightIdentifier(ModBlocks.plushie, new IHighlightHandler() { @Override public ItemStack identifyHighlight(World world, EntityPlayer player, MovingObjectPosition mop) { int x = mop.blockX; @@ -121,12 +99,12 @@ public class NEIConfig implements IConfigureNEI { @Override public List handleTextData(ItemStack itemStack, World world, EntityPlayer player, MovingObjectPosition mop, List currenttip, Layout layout) { return currenttip; } }); } - + public static void registerHandler(Object o) { API.registerRecipeHandler((ICraftingHandler) o); API.registerUsageHandler((IUsageHandler) o); } - + /** Bypasses the utterly useless restriction of one registered handler per class */ public static void registerHandlerBypass(Object o) { GuiCraftingRecipe.craftinghandlers.add((ICraftingHandler) o); diff --git a/src/main/java/com/hbm/main/NEIRegistry.java b/src/main/java/com/hbm/main/NEIRegistry.java index ee7d42e5f..0d541e52f 100644 --- a/src/main/java/com/hbm/main/NEIRegistry.java +++ b/src/main/java/com/hbm/main/NEIRegistry.java @@ -1,19 +1,18 @@ package com.hbm.main; +import codechicken.nei.recipe.TemplateRecipeHandler; +import com.hbm.config.VersatileConfig; +import com.hbm.handler.nei.*; + import java.util.ArrayList; import java.util.List; -import com.hbm.config.VersatileConfig; -import com.hbm.handler.nei.*; - -import codechicken.nei.recipe.TemplateRecipeHandler; - public class NEIRegistry { public static List handlers = new ArrayList(); - + public static List listAllHandlers() { - + if(!handlers.isEmpty()) return handlers; handlers.add(new AnvilRecipeHandler()); @@ -33,6 +32,7 @@ public class NEIRegistry { handlers.add(new ReformingHandler()); handlers.add(new HydrotreatingHandler()); handlers.add(new ChemplantRecipeHandler()); + handlers.add(new OreSlopperHandler()); //before acidizing handlers.add(new CrystallizerRecipeHandler()); handlers.add(new BookRecipeHandler()); handlers.add(new FusionRecipeHandler()); @@ -51,6 +51,7 @@ public class NEIRegistry { handlers.add(new LiquefactionHandler()); handlers.add(new SolidificationHandler()); handlers.add(new CokingHandler()); + handlers.add(new PyroHandler()); handlers.add(new FractioningHandler()); handlers.add(new BoilingHandler()); handlers.add(new CombinationHandler()); @@ -65,10 +66,13 @@ public class NEIRegistry { handlers.add(new ExposureChamberHandler()); handlers.add(new ArcFurnaceSolidHandler()); handlers.add(new ArcFurnaceFluidHandler()); + handlers.add(new RotaryFurnaceHandler()); + handlers.add(new AmmoPressHandler()); + handlers.add(new CompressorHandler()); //this shit comes last handlers.add(new FluidRecipeHandler()); - + return handlers; } } diff --git a/src/main/java/com/hbm/main/NetworkHandler.java b/src/main/java/com/hbm/main/NetworkHandler.java new file mode 100644 index 000000000..06ff25dc1 --- /dev/null +++ b/src/main/java/com/hbm/main/NetworkHandler.java @@ -0,0 +1,215 @@ +package com.hbm.main; + +import com.hbm.handler.threading.PacketThreading; +import com.hbm.packet.PrecompiledPacket; +import cpw.mods.fml.common.network.FMLEmbeddedChannel; +import cpw.mods.fml.common.network.FMLOutboundHandler; +import cpw.mods.fml.common.network.NetworkRegistry; +import cpw.mods.fml.common.network.internal.FMLProxyPacket; +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper; +import cpw.mods.fml.relauncher.Side; +import gnu.trove.map.hash.TByteObjectHashMap; +import gnu.trove.map.hash.TObjectByteHashMap; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.PooledByteBufAllocator; +import io.netty.buffer.Unpooled; +import io.netty.channel.ChannelHandler; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.CodecException; +import io.netty.handler.codec.MessageToMessageCodec; +import net.minecraft.entity.player.EntityPlayerMP; + +import java.lang.ref.WeakReference; +import java.util.EnumMap; +import java.util.List; + +import static cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.INBOUNDPACKETTRACKER; + +// Essentially the `SimpleNetworkWrapper` from FML but doesn't flush the packets immediately. Also now with a custom codec! +public class NetworkHandler { + + // Network codec for allowing packets to be "precompiled". + @ChannelHandler.Sharable + private static class PrecompilingNetworkCodec extends MessageToMessageCodec { + + private final TByteObjectHashMap> discriminators = new TByteObjectHashMap<>(); + private final TObjectByteHashMap> types = new TObjectByteHashMap<>(); + + public void addDiscriminator(int discriminator, Class type) { + discriminators.put((byte) discriminator, type); + types.put(type, (byte) discriminator); + } + + @Override + public void handlerAdded(ChannelHandlerContext ctx) { + ctx.attr(INBOUNDPACKETTRACKER).set(new ThreadLocal<>()); + } + + @Override + protected void encode(ChannelHandlerContext ctx, Object msg, List out) { + ByteBuf outboundBuf = PooledByteBufAllocator.DEFAULT.heapBuffer(); + byte discriminator; + Class msgClass = msg.getClass(); + discriminator = types.get(msgClass); + outboundBuf.writeByte(discriminator); + + if(msg instanceof PrecompiledPacket) // Precompiled packet to avoid race conditions/speed up serialization. + outboundBuf.writeBytes(((PrecompiledPacket) msg).getPreBuf()); + else if(msg instanceof IMessage) + ((IMessage) msg).toBytes(outboundBuf); + else + throw new CodecException("Unknown packet codec requested during encoding, expected IMessage/PrecompiledPacket, got " + msg.getClass().getName()); + + FMLProxyPacket proxy = new FMLProxyPacket(Unpooled.buffer().writeBytes(outboundBuf), ctx.channel().attr(NetworkRegistry.FML_CHANNEL).get()); + outboundBuf.release(); + WeakReference ref = ctx.attr(INBOUNDPACKETTRACKER).get().get(); + FMLProxyPacket old = ref == null ? null : ref.get(); + if (old != null) { + proxy.setDispatcher(old.getDispatcher()); + } + out.add(proxy); + } + + @Override + protected void decode(ChannelHandlerContext ctx, FMLProxyPacket msg, List out) throws Exception { + ByteBuf inboundBuf = msg.payload(); + byte discriminator = inboundBuf.readByte(); + Class originalMsgClass = discriminators.get(discriminator); + + if(originalMsgClass == null) + throw new CodecException("Undefined message for discriminator " + discriminator + " in channel " + msg.channel()); + + Object newMsg = originalMsgClass.newInstance(); + ctx.attr(INBOUNDPACKETTRACKER).get().set(new WeakReference<>(msg)); + + if(newMsg instanceof IMessage) // pretty much always the case + ((IMessage) newMsg).fromBytes(inboundBuf.slice()); + else + throw new CodecException("Unknown packet codec requested during decoding, expected IMessage/PrecompiledPacket, got " + msg.getClass().getName()); + + out.add(newMsg); + } + } + + private static FMLEmbeddedChannel clientChannel; + private static FMLEmbeddedChannel serverChannel; + + private static PrecompilingNetworkCodec packetCodec; + + public NetworkHandler(String name) { + packetCodec = new PrecompilingNetworkCodec(); + EnumMap channels = NetworkRegistry.INSTANCE.newChannel(name, packetCodec); + clientChannel = channels.get(Side.CLIENT); + serverChannel = channels.get(Side.SERVER); + } + + public void registerMessage(Class> messageHandler, Class requestMessageType, int discriminator, Side side) { + + packetCodec.addDiscriminator(discriminator, requestMessageType); + + FMLEmbeddedChannel channel; + if(side.isClient()) + channel = clientChannel; + else + channel = serverChannel; + String type = channel.findChannelHandlerNameForType(PrecompilingNetworkCodec.class); + SimpleChannelHandlerWrapper handler; + handler = new SimpleChannelHandlerWrapper<>(messageHandler, side, requestMessageType); + channel.pipeline().addAfter(type, messageHandler.getName(), handler); + } + + public static void flush() { + clientChannel.flush(); + serverChannel.flush(); + } + + public void sendToServer(IMessage message) { // No thread protection needed here, since the client never threads packets to the server. + clientChannel.attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.TOSERVER); + clientChannel.write(message); + } + + public void sendToDimension(IMessage message, int dimensionId) { + if(!Thread.currentThread().getName().contains(PacketThreading.threadPrefix)) { + try { + PacketThreading.lock.lock(); + serverChannel.attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.DIMENSION); + serverChannel.attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(dimensionId); + serverChannel.write(message); + } finally { + PacketThreading.lock.unlock(); + } + } else { + serverChannel.attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.DIMENSION); + serverChannel.attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(dimensionId); + serverChannel.write(message); + } + } + + public void sendToAllAround(IMessage message, NetworkRegistry.TargetPoint point) { + if(!Thread.currentThread().getName().contains(PacketThreading.threadPrefix)) { + try { + PacketThreading.lock.lock(); + serverChannel.attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALLAROUNDPOINT); + serverChannel.attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(point); + serverChannel.write(message); + } finally { + PacketThreading.lock.unlock(); + } + } else { + serverChannel.attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALLAROUNDPOINT); + serverChannel.attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(point); + serverChannel.write(message); + } + } + + public void sendToAllAround(ByteBuf message, NetworkRegistry.TargetPoint point) { + if(!Thread.currentThread().getName().contains(PacketThreading.threadPrefix)) { + try { + PacketThreading.lock.lock(); + serverChannel.attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALLAROUNDPOINT); + serverChannel.attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(point); + serverChannel.write(message); + } finally { + PacketThreading.lock.unlock(); + } + } else { + serverChannel.attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALLAROUNDPOINT); + serverChannel.attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(point); + serverChannel.write(message); + } + } + + public void sendTo(IMessage message, EntityPlayerMP player) { + if(!Thread.currentThread().getName().contains(PacketThreading.threadPrefix)) { + try { + PacketThreading.lock.lock(); + serverChannel.attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.PLAYER); + serverChannel.attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(player); + serverChannel.write(message); + } finally { + PacketThreading.lock.unlock(); + } + } else { + serverChannel.attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.PLAYER); + serverChannel.attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(player); + serverChannel.write(message); + } + } + + public void sendToAll(IMessage message) { + if(!Thread.currentThread().getName().contains(PacketThreading.threadPrefix)) { + try { + PacketThreading.lock.lock(); + serverChannel.attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALL); + serverChannel.write(message); + } finally { + PacketThreading.lock.unlock(); + } + } else { + serverChannel.attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALL); + serverChannel.write(message); + } + } +} diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 56a731df4..010e5e9bf 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1,7 +1,5 @@ package com.hbm.main; -import java.util.HashMap; - import com.hbm.animloader.AnimatedModel; import com.hbm.animloader.Animation; import com.hbm.animloader.ColladaLoader; @@ -10,15 +8,16 @@ import com.hbm.render.anim.AnimationLoader; import com.hbm.render.anim.BusAnimation; import com.hbm.render.loader.HFRWavefrontObject; import com.hbm.render.loader.IModelCustomNamed; - import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.AdvancedModelLoader; import net.minecraftforge.client.model.IModelCustom; +import java.util.HashMap; + public class ResourceManager { - + ////Obj TEs - + //Turrets public static final IModelCustom turret_chekhov = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_chekhov.obj")).asVBO(); public static final IModelCustom turret_jeremy = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_jeremy.obj")).asVBO(); @@ -33,14 +32,14 @@ public class ResourceManager { public static final IModelCustom turret_sentry = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_sentry.obj")).asVBO(); public static final IModelCustom turret_howard_damaged = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/turrets/turret_howard_damaged.obj")).asVBO(); - + //Heaters public static final IModelCustom heater_firebox = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/firebox.obj"), false).asVBO(); public static final IModelCustom heater_oven = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/heating_oven.obj"), false).asVBO(); public static final IModelCustom heater_oilburner = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/oilburner.obj")).asVBO(); public static final IModelCustom heater_electric = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/electric_heater.obj"), false).asVBO(); public static final IModelCustom heater_heatex = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/heatex.obj")).asVBO(); - + //Heat Engines public static final IModelCustom stirling = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/stirling.obj")); public static final IModelCustom sawmill = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/sawmill.obj")); @@ -57,18 +56,17 @@ public class ResourceManager { public static final IModelCustom furnace_iron = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/furnace_iron.obj")); public static final IModelCustom furnace_steel = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/furnace_steel.obj")); public static final IModelCustom combination_oven = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/combination_oven.obj")); - + //Landmines - public static final IModelCustom mine_ap = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mine_ap.obj")); - public static final IModelCustom mine_he = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mine_he.obj")); - public static final IModelCustom mine_marelet = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/marelet.obj")); + public static final IModelCustom mine_ap = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/ap_mine.obj")).asVBO(); + public static final IModelCustom mine_marelet = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/marelet.obj")).asVBO(); public static final IModelCustom mine_fat = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mine_fat.obj")); - + //Oil Pumps public static final IModelCustom derrick = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/derrick.obj")).asVBO(); public static final IModelCustom pumpjack = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/pumpjack.obj")).asVBO(); public static final IModelCustom fracking_tower = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/fracking_tower.obj")).asVBO(); - + //Refinery public static final IModelCustom refinery = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/refinery.obj")).asVBO(); public static final IModelCustom vacuum_distill = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/vacuum_distill.obj")).asVBO(); @@ -82,7 +80,8 @@ public class ResourceManager { public static final IModelCustom solidifier = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/solidifier.obj")).asVBO(); public static final IModelCustom compressor = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/compressor.obj")).asVBO(); public static final IModelCustom coker = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/coker.obj")).asVBO(); - + public static final IModelCustom pyrooven = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/pyrooven.obj")).asVBO(); + //Flare Stack public static final IModelCustom oilflare = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/flare_stack.obj")).asVBO(); public static final IModelCustom chimney_brick = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/chimney_brick.obj")).asVBO(); @@ -93,50 +92,51 @@ public class ResourceManager { public static final IModelCustom fluidtank_exploded = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/fluidtank_exploded.obj")).asVBO(); public static final IModelCustom bat9000 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/bat9000.obj")).asVBO(); public static final IModelCustom orbus = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/orbus.obj")).asVBO(); - + //Turbofan public static final IModelCustom turbofan = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/turbofan.obj")).asVBO(); - + //Gas Turbine public static final IModelCustom turbinegas = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/turbinegas.obj")).asVBO(); - + //Pumps public static final IModelCustom pump = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/pump.obj")).asVBO(); - + //Large Turbine public static final IModelCustom steam_engine = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/steam_engine.obj")).asVBO(); public static final IModelCustom turbine = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/turbine.obj")); public static final IModelCustom chungus = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/chungus.obj")).asVBO(); - + //Cooling Tower public static final IModelCustom tower_small = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/tower_small.obj")).asVBO(); public static final IModelCustom tower_large = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/tower_large.obj")).asVBO(); public static final IModelCustom condenser = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/condenser.obj")).asVBO(); - + //Wood burner public static final IModelCustom wood_burner = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/wood_burner.obj")); - + //IGen public static final IModelCustom igen = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/igen.obj")); - + //Combustion Engine public static final IModelCustom dieselgen = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/dieselgen.obj")); public static final IModelCustom combustion_engine = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/combustion_engine.obj")).asVBO(); - + //Press public static final IModelCustom press_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/press_body.obj")); public static final IModelCustom press_head = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/press_head.obj")); public static final IModelCustom epress_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/epress_body.obj")); public static final IModelCustom epress_head = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/epress_head.obj")); public static final IModelCustom conveyor_press = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/conveyor_press.obj")); - + public static final IModelCustom ammo_press = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/ammo_press.obj")).asVBO(); + //Assembler public static final IModelCustom assembler_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/assembler_new_body.obj")); public static final IModelCustom assembler_cog = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/assembler_new_cog.obj")); public static final IModelCustom assembler_slider = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/assembler_new_slider.obj")); public static final IModelCustom assembler_arm = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/assembler_new_arm.obj")); public static final IModelCustom assemfac = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/assemfac.obj")); - + //Chemplant public static final IModelCustom chemplant_body = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_body.obj")); public static final IModelCustom chemplant_spinner = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_spinner.obj")); @@ -144,114 +144,122 @@ public class ResourceManager { public static final IModelCustom chemplant_fluid = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_fluid.hmf")); public static final IModelCustom chemplant_fluidcap = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_fluidcap.hmf")); public static final IModelCustom chemfac = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/chemfac.obj")); - + //Mixer public static final IModelCustom mixer = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/mixer.obj")); - + //Arc Welder public static final IModelCustom arc_welder = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/arc_welder.obj"), false).asVBO(); - + //Solderer public static final IModelCustom soldering_station = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/soldering_station.obj"), false).asVBO(); - + //Arc Furnace public static final IModelCustom arc_furnace = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/arc_furnace.obj")).asVBO(); - + //F6 TANKS public static final IModelCustom tank = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/tank.obj")); - + //Centrifuge public static final IModelCustom centrifuge = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/centrifuge.obj")).asVBO(); public static final IModelCustom gascent = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/gascent.obj")).asVBO(); public static final IModelCustom silex = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/silex.obj")).asVBO(); public static final IModelCustom fel = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/fel.obj")).asVBO(); - + //Magnusson Device public static final IModelCustom microwave = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/microwave.obj")); - + //Big Man Johnson public static final IModelCustom autosaw = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/autosaw.obj")); - + //Mining Drill public static final IModelCustom mining_drill = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/mining_drill.obj")).asVBO(); public static final IModelCustom ore_slopper = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/ore_slopper.obj")).asVBO(); - + //Laser Miner public static final IModelCustom mining_laser = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/mining_laser.obj")).asVBO(); - + //Crystallizer public static final IModelCustom crystallizer = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/acidizer.obj")).asVBO(); - + //Cyclotron public static final IModelCustom cyclotron = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/cyclotron.obj")).asVBO(); - + + //Albion Particle Accelerator + public static final IModelCustom pa_source = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/particleaccelerator/source.obj")).asVBO(); + public static final IModelCustom pa_beamline = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/particleaccelerator/beamline.obj")).asVBO(); + public static final IModelCustom pa_rfc = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/particleaccelerator/rfc.obj")).asVBO(); + public static final IModelCustom pa_quadrupole = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/particleaccelerator/quadrupole.obj")).asVBO(); + public static final IModelCustom pa_dipole = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/particleaccelerator/dipole.obj")).asVBO(); + public static final IModelCustom pa_detector = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/particleaccelerator/detector.obj")).asVBO(); + //Exposure Chamber public static final IModelCustom exposure_chamber = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/exposure_chamber.obj")).asVBO(); - + //RTG public static final IModelCustom rtg = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/rtg.obj")); //Waste Drum public static final IModelCustom waste_drum = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/drum.obj")); - + //Deuterium Tower public static final IModelCustom deuterium_tower = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/machine_deuterium_tower.obj")).asVBO(); - + //Dark Matter Core public static final IModelCustom dfc_emitter = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/core_emitter.obj")); public static final IModelCustom dfc_receiver = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/core_receiver.obj")); public static final IModelCustom dfc_injector = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/core_injector.obj")); - + //Fan public static final IModelCustom fan = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/fan.obj")); - + //Piston Inserter public static final IModelCustom piston_inserter = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/piston_inserter.obj")); - + //Sphere public static final IModelCustom sphere_ruv = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sphere_ruv.obj")); public static final IModelCustom sphere_iuv = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sphere_iuv.obj")); public static final IModelCustom sphere_uv = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sphere_uv.obj")); public static final IModelCustom sphere_uv_anim = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sphere_uv.hmf")); - + //Meteor public static final IModelCustom meteor = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/weapons/meteor.obj")); - + //Radgen public static final IModelCustom radgen = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radgen.obj")); - + //Small Reactor public static final IModelCustom reactor_small_base = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/reactors/reactor_small_base.obj")); public static final IModelCustom reactor_small_rods = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/reactors/reactor_small_rods.obj")); - + //Breeder public static final IModelCustom breeder = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/reactors/breeder.obj")); - + //ITER public static final IModelCustom iter = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/reactors/iter.obj")).asVBO(); - + //ICF public static final IModelCustom icf = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/reactors/icf.obj")).asVBO(); - + + //ICF + public static final IModelCustom lpw2 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/lpw2.obj")).asVBO(); + //Watz public static final IModelCustom watz = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/reactors/watz.obj")).asVBO(); public static final IModelCustom watz_pump = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/watz_pump.obj")).asVBO(); - + //FENSU public static final IModelCustom fensu = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/fensu.obj")).asVBO(); - + //Radar public static final IModelCustom radar_body = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/radar_base.obj"), false).asVBO(); public static final IModelCustom radar = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar.obj"), false).asVBO(); public static final IModelCustom radar_large = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar_large.obj"), false).asVBO(); public static final IModelCustom radar_screen = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar_screen.obj"), false).asVBO(); - + //Forcefield public static final IModelCustom forcefield_top = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/forcefield_top.obj")); - - //Shredder - public static final IModelCustom shredder = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/shredder.obj")); - + //Bombs public static final IModelCustom bomb_gadget = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/gadget.obj")).asVBO(); public static final IModelCustom bomb_boy = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/LilBoy1.obj")); @@ -263,8 +271,8 @@ public class ResourceManager { public static final IModelCustom bomb_solinium = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/bombs/ufp.obj")); public static final IModelCustom n2 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/bombs/n2.obj")); public static final IModelCustom bomb_multi = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/BombGeneric.obj")); - public static final IModelCustom fstbmb = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/fstbmb.obj")); - public static final IModelCustom dud = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/BalefireCrashed.obj")); + public static final IModelCustom fstbmb = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/fstbmb.obj")).asVBO(); + public static final IModelCustom dud = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/BalefireCrashed.obj")).asVBO(); //Satellites public static final IModelCustom sat_base = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sat_base.obj")); @@ -279,20 +287,20 @@ public class ResourceManager { //SatDock public static final IModelCustom satDock = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sat_dock.obj")); - + //Solar Tower - public static final IModelCustom solar_boiler = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/solar_boiler.obj")); + public static final IModelCustom solar_boiler = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/solar_boiler.obj")).asVBO(); public static final IModelCustom solar_mirror = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/solar_mirror.obj")); - + //Drain public static final IModelCustom drain = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/drain.obj")); - + //Vault Door public static final IModelCustom vault_cog = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vault_cog.obj")); public static final IModelCustom vault_frame = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vault_frame.obj")); public static final IModelCustom vault_teeth = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vault_teeth.obj")); public static final IModelCustom vault_label = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vault_label.obj")); - + //Blast Door public static final IModelCustom blast_door_base = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blast_door_base.obj")); public static final IModelCustom blast_door_tooth = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blast_door_tooth.obj")); @@ -340,13 +348,13 @@ public class ResourceManager { public static final ResourceLocation silo_hatch_large_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/silo_hatch_large.png"); public static IModelCustomNamed silo_hatch_large = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/silo_hatch_large.obj")).asVBO(); - + //Lights public static final IModelCustom lantern = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/trinkets/lantern.obj")); public static final IModelCustom cage_lamp = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/lights/cage_lamp.obj")); public static final IModelCustom fluorescent_lamp = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/lights/fluorescent_lamp.obj")); public static final IModelCustom flood_lamp = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/lights/flood_lamp.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")); @@ -358,40 +366,43 @@ public class ResourceManager { public static final IModelCustom siege_ufo = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/mobs/siege_ufo.obj")); public static final IModelCustom glyphid = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/mobs/glyphid.obj")); public static final IModelCustom drone = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mobs/quadcopter.obj")); - + //ZIRNOX - public static final IModelCustom zirnox = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/zirnox.obj")); - public static final IModelCustom zirnox_destroyed = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/zirnox_destroyed.obj")); - + public static final IModelCustom zirnox = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/zirnox.obj")).asVBO(); + public static final IModelCustom zirnox_destroyed = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/zirnox_destroyed.obj")).asVBO(); + //Belt public static final IModelCustom arrow = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/arrow.obj")); - + //Network public static final IModelCustom connector = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/network/connector.obj")); public static final IModelCustom pylon_medium = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/network/pylon_medium.obj")); public static final IModelCustom pylon_large = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/network/pylon_large.obj")); public static final IModelCustom substation = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/network/substation.obj")); - + //Radiolysis public static final IModelCustom radiolysis = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/radiolysis.obj")); - + + //RotaryFurnace + public static final IModelCustom rotary_furnace = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/rotary_furnace.obj")).asVBO(); + //Electrolyser - public static final IModelCustom electrolyser = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/electrolyser.obj")); - + public static final IModelCustom electrolyser = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/electrolyser.obj")).asVBO(); + //Charging Station public static final IModelCustom charger = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/charger.obj")); - + //DecoContainer (File Cabinet for now) public static final IModelCustom file_cabinet = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/file_cabinet.obj")); - + //TELEX public static final IModelCustom telex = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/telex.obj")); - + ////Textures TEs - + public static final ResourceLocation universal = new ResourceLocation(RefStrings.MODID, "textures/models/TheGadget3_.png"); public static final ResourceLocation universal_bright = new ResourceLocation(RefStrings.MODID, "textures/models/turbofan_blades.png"); - + public static final ResourceLocation turret_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/base.png"); public static final ResourceLocation turret_base_friendly_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/base_friendly.png"); public static final ResourceLocation turret_carriage_tex = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/carriage.png"); @@ -420,16 +431,19 @@ public class ResourceManager { public static final ResourceLocation turret_carriage_ciws_rusted = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/rusted/carriage_ciws.png"); public static final ResourceLocation turret_howard_rusted = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/rusted/howard.png"); public static final ResourceLocation turret_howard_barrels_rusted = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/rusted/howard_barrels.png"); - + public static final ResourceLocation brandon_explosive = new ResourceLocation(RefStrings.MODID, "textures/models/turrets/brandon_drum.png"); //Landmines - public static final ResourceLocation mine_ap_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_ap.png"); + public static final ResourceLocation mine_ap_grass_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_ap_grass.png"); + public static final ResourceLocation mine_ap_desert_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_ap_desert.png"); + public static final ResourceLocation mine_ap_snow_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_ap_snow.png"); + public static final ResourceLocation mine_ap_stone_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_ap_stone.png"); //public static final ResourceLocation mine_he_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_he.png"); public static final ResourceLocation mine_marelet_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_marelet.png"); - public static final ResourceLocation mine_shrap_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_shrap.png"); + public static final ResourceLocation mine_shrap_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_shrapnel.png"); public static final ResourceLocation mine_fat_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_fat.png"); - + //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"); @@ -437,7 +451,7 @@ public class ResourceManager { 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"); - + //Heat Engines public static final ResourceLocation stirling_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/stirling.png"); public static final ResourceLocation stirling_steel_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/stirling_steel.png"); @@ -455,12 +469,12 @@ public class ResourceManager { public static final ResourceLocation furnace_iron_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/furnace_iron.png"); public static final ResourceLocation furnace_steel_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/furnace_steel.png"); public static final ResourceLocation combination_oven_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/combination_oven.png"); - + //Oil Pumps public static final ResourceLocation derrick_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/derrick.png"); public static final ResourceLocation pumpjack_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/pumpjack.png"); public static final ResourceLocation fracking_tower_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/fracking_tower.png"); - + //Refinery public static final ResourceLocation refinery_tex = new ResourceLocation(RefStrings.MODID, "textures/models/refinery.png"); public static final ResourceLocation vacuum_distill_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/vacuum_distill.png"); @@ -473,27 +487,28 @@ public class ResourceManager { public static final ResourceLocation solidifier_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/solidifier.png"); public static final ResourceLocation compressor_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/compressor.png"); public static final ResourceLocation coker_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/coker.png"); - + public static final ResourceLocation pyrooven_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/pyrooven.png"); + //Flare Stack public static final ResourceLocation oilflare_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/flare_stack.png"); public static final ResourceLocation chimney_brick_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/chimney_brick.png"); public static final ResourceLocation chimney_industrial_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/chimney_industrial.png"); - + //Tank public static final ResourceLocation tank_tex = new ResourceLocation(RefStrings.MODID, "textures/models/tank.png"); public static final ResourceLocation tank_inner_tex = new ResourceLocation(RefStrings.MODID, "textures/models/tank/tank_inner.png"); public static final ResourceLocation tank_label_tex = new ResourceLocation(RefStrings.MODID, "textures/models/tank/tank_NONE.png"); public static final ResourceLocation bat9000_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/bat9000.png"); public static final ResourceLocation orbus_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/orbus.png"); - + //Turbofan public static final ResourceLocation turbofan_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/turbofan.png"); public static final ResourceLocation turbofan_back_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/turbofan_back.png"); public static final ResourceLocation turbofan_afterburner_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/turbofan_afterburner.png"); - + //Gas Turbine public static final ResourceLocation turbinegas_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/turbinegas.png"); - + //Pumps public static final ResourceLocation pump_steam_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/pump_steam.png"); public static final ResourceLocation pump_electric_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/pump_electric.png"); @@ -502,29 +517,29 @@ public class ResourceManager { public static final ResourceLocation steam_engine_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/steam_engine.png"); public static final ResourceLocation turbine_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/turbine.png"); public static final ResourceLocation chungus_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/chungus.png"); - + //Cooling Tower public static final ResourceLocation tower_small_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/tower_small.png"); public static final ResourceLocation tower_large_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/tower_large.png"); public static final ResourceLocation condenser_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/condenser.png"); - + //Deuterium Tower public static final ResourceLocation deuterium_tower_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/machine_deuterium_tower.png"); - + //Wood Burner public static final ResourceLocation wood_burner_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/wood_burner.png"); - + //IGen public static final ResourceLocation igen_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/igen.png"); public static final ResourceLocation igen_rotor = new ResourceLocation(RefStrings.MODID, "textures/models/machines/igen_rotor.png"); public static final ResourceLocation igen_cog = new ResourceLocation(RefStrings.MODID, "textures/models/machines/igen_cog.png"); public static final ResourceLocation igen_arm = new ResourceLocation(RefStrings.MODID, "textures/models/machines/igen_arm.png"); public static final ResourceLocation igen_pistons = new ResourceLocation(RefStrings.MODID, "textures/models/machines/igen_pistons.png"); - + //Combustion Engine public static final ResourceLocation dieselgen_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/dieselgen.png"); public static final ResourceLocation combustion_engine_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/combustion_engine.png"); - + //Press public static final ResourceLocation press_body_tex = new ResourceLocation(RefStrings.MODID, "textures/models/press_body.png"); public static final ResourceLocation press_head_tex = new ResourceLocation(RefStrings.MODID, "textures/models/press_head.png"); @@ -532,49 +547,50 @@ public class ResourceManager { public static final ResourceLocation epress_head_tex = new ResourceLocation(RefStrings.MODID, "textures/models/epress_head.png"); public static final ResourceLocation conveyor_press_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/conveyor_press.png"); public static final ResourceLocation conveyor_press_belt_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/conveyor_press_belt.png"); - + public static final ResourceLocation ammo_press_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/ammo_press.png"); + //Assembler public static final ResourceLocation assembler_body_tex = new ResourceLocation(RefStrings.MODID, "textures/models/assembler_base_new.png"); public static final ResourceLocation assembler_cog_tex = new ResourceLocation(RefStrings.MODID, "textures/models/assembler_cog_new.png"); public static final ResourceLocation assembler_slider_tex = new ResourceLocation(RefStrings.MODID, "textures/models/assembler_slider_new.png"); public static final ResourceLocation assembler_arm_tex = new ResourceLocation(RefStrings.MODID, "textures/models/assembler_arm_new.png"); public static final ResourceLocation assemfac_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/assemfac.png"); - + //Chemplant public static final ResourceLocation chemplant_body_tex = new ResourceLocation(RefStrings.MODID, "textures/models/chemplant_base_new.png"); public static final ResourceLocation chemplant_spinner_tex = new ResourceLocation(RefStrings.MODID, "textures/models/chemplant_spinner_new.png"); public static final ResourceLocation chemplant_piston_tex = new ResourceLocation(RefStrings.MODID, "textures/models/chemplant_piston_new.png"); public static final ResourceLocation chemplant_fluid_tex = new ResourceLocation(RefStrings.MODID, "textures/models/lavabase_small.png"); public static final ResourceLocation chemfac_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/chemfac.png"); - + //Mixer public static final ResourceLocation mixer_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/mixer.png"); - + //Welder public static final ResourceLocation arc_welder_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/arc_welder.png"); - + //Solderer public static final ResourceLocation soldering_station_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/soldering_station.png"); - + //Arc Furnace public static final ResourceLocation arc_furnace_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/arc_furnace.png"); //F6 TANKS public static final ResourceLocation uf6_tex = new ResourceLocation(RefStrings.MODID, "textures/models/UF6Tank.png"); public static final ResourceLocation puf6_tex = new ResourceLocation(RefStrings.MODID, "textures/models/PUF6Tank.png"); - + //Centrifuge public static final ResourceLocation centrifuge_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/centrifuge.png"); public static final ResourceLocation gascent_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/gascent.png"); public static final ResourceLocation fel_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/fel.png"); public static final ResourceLocation silex_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/silex.png"); - + //Magnusson Device public static final ResourceLocation microwave_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/microwave.png"); - + //Big Man Johnson public static final ResourceLocation autosaw_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/autosaw.png"); - + //Mining Drill public static final ResourceLocation mining_drill_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/mining_drill.png"); public static final ResourceLocation ore_slopper_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/ore_slopper.png"); @@ -583,10 +599,10 @@ public class ResourceManager { public static final ResourceLocation mining_laser_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/mining_laser_base.png"); public static final ResourceLocation mining_laser_pivot_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/mining_laser_pivot.png"); public static final ResourceLocation mining_laser_laser_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/mining_laser_laser.png"); - + //Crystallizer public static final ResourceLocation crystallizer_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/acidizer.png"); - + //Cyclotron public static final ResourceLocation cyclotron_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/cyclotron.png"); public static final ResourceLocation cyclotron_ashes = new ResourceLocation(RefStrings.MODID, "textures/models/machines/cyclotron_ashes.png"); @@ -597,40 +613,48 @@ public class ResourceManager { public static final ResourceLocation cyclotron_gavel_filled = new ResourceLocation(RefStrings.MODID, "textures/models/machines/cyclotron_gavel_filled.png"); public static final ResourceLocation cyclotron_coin = new ResourceLocation(RefStrings.MODID, "textures/models/machines/cyclotron_coin.png"); public static final ResourceLocation cyclotron_coin_filled = new ResourceLocation(RefStrings.MODID, "textures/models/machines/cyclotron_coin_filled.png"); - + + //Albion Particle Accelerator + public static final ResourceLocation pa_source_tex = new ResourceLocation(RefStrings.MODID, "textures/models/particleaccelerator/source.png"); + public static final ResourceLocation pa_beamline_tex = new ResourceLocation(RefStrings.MODID, "textures/models/particleaccelerator/beamline.png"); + public static final ResourceLocation pa_rfc_tex = new ResourceLocation(RefStrings.MODID, "textures/models/particleaccelerator/rfc.png"); + public static final ResourceLocation pa_quadrupole_tex = new ResourceLocation(RefStrings.MODID, "textures/models/particleaccelerator/quadrupole.png"); + public static final ResourceLocation pa_dipole_tex = new ResourceLocation(RefStrings.MODID, "textures/models/particleaccelerator/dipole.png"); + public static final ResourceLocation pa_detector_tex = new ResourceLocation(RefStrings.MODID, "textures/models/particleaccelerator/detector.png"); + //Exposure Chamber public static final ResourceLocation exposure_chamber_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/exposure_chamber.png"); - + //RTG public static final ResourceLocation rtg_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rtg.png"); public static final ResourceLocation rtg_cell_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rtg_cell.png"); public static final ResourceLocation rtg_polonium_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rtg_polonium.png"); - + //Waste Drum public static final ResourceLocation waste_drum_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/drum_gray.png"); - + //Dark Matter Core public static final ResourceLocation dfc_emitter_tex = new ResourceLocation(RefStrings.MODID, "textures/models/core_emitter.png"); public static final ResourceLocation dfc_receiver_tex = new ResourceLocation(RefStrings.MODID, "textures/models/core_receiver.png"); public static final ResourceLocation dfc_injector_tex = new ResourceLocation(RefStrings.MODID, "textures/models/core_injector.png"); public static final ResourceLocation dfc_stabilizer_tex = new ResourceLocation(RefStrings.MODID, "textures/models/core_stabilizer.png"); - + //Fan public static final ResourceLocation fan_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/fan.png"); - + //Piston_Inserter public static final ResourceLocation piston_inserter_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/piston_inserter.png"); - + //Radgen public static final ResourceLocation radgen_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radgen.png"); - + //Small Reactor public static final ResourceLocation reactor_small_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/reactor_small_base.png"); public static final ResourceLocation reactor_small_rods_tex = new ResourceLocation(RefStrings.MODID, "textures/models/reactor_small_rods.png"); //Breeder public static final ResourceLocation breeder_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/breeder.png"); - + //ITER public static final ResourceLocation iter_glass = new ResourceLocation(RefStrings.MODID, "textures/models/iter/glass.png"); public static final ResourceLocation iter_microwave = new ResourceLocation(RefStrings.MODID, "textures/models/iter/microwave.png"); @@ -644,17 +668,22 @@ public class ResourceManager { public static final ResourceLocation iter_torus_desh = new ResourceLocation(RefStrings.MODID, "textures/models/iter/torus_desh.png"); public static final ResourceLocation iter_torus_chlorophyte = new ResourceLocation(RefStrings.MODID, "textures/models/iter/torus_chlorophyte.png"); public static final ResourceLocation iter_torus_vaporwave = new ResourceLocation(RefStrings.MODID, "textures/models/iter/torus_vaporwave.png"); - + //ICF public static final ResourceLocation icf_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/icf.png"); - + + //Fat Fuck + public static final ResourceLocation lpw2_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/lpw2.png"); + public static final ResourceLocation lpw2_term_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/lpw2_term.png"); + public static final ResourceLocation lpw2_error_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/lpw2_term_error.png"); + //Watz public static final ResourceLocation watz_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/watz.png"); public static final ResourceLocation watz_pump_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/watz_pump.png"); - + //FENSU public static final ResourceLocation fensu_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/fensu.png"); - + //Radar public static final ResourceLocation radar_body_tex = new ResourceLocation(RefStrings.MODID, "textures/models/radar_base.png"); public static final ResourceLocation radar_head_tex = new ResourceLocation(RefStrings.MODID, "textures/models/radar_head.png"); @@ -662,14 +691,11 @@ public class ResourceManager { public static final ResourceLocation radar_dish_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_dish.png"); public static final ResourceLocation radar_large_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_large.png"); public static final ResourceLocation radar_screen_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_screen.png"); - + //Forcefield public static final ResourceLocation forcefield_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/forcefield_base.png"); public static final ResourceLocation forcefield_top_tex = new ResourceLocation(RefStrings.MODID, "textures/models/forcefield_top.png"); - - //Shredder - public static final ResourceLocation shredder_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/shredder.png"); - + //Bombs public static final ResourceLocation bomb_gadget_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/gadget.png"); public static final ResourceLocation bomb_boy_tex = new ResourceLocation(RefStrings.MODID, "textures/models/lilboy.png"); @@ -689,7 +715,7 @@ public class ResourceManager { public static final ResourceLocation n45_chain_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/n45_chain.png"); public static final ResourceLocation fstbmb_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/fstbmb.png"); public static final ResourceLocation dud_tex = new ResourceLocation(RefStrings.MODID, "textures/models/BalefireCrashed.png"); - + //Satellites public static final ResourceLocation sat_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/sat_base.png"); public static final ResourceLocation sat_radar_tex = new ResourceLocation(RefStrings.MODID, "textures/models/sat_radar.png"); @@ -699,10 +725,10 @@ public class ResourceManager { public static final ResourceLocation sat_laser_tex = new ResourceLocation(RefStrings.MODID, "textures/models/sat_laser.png"); public static final ResourceLocation sat_foeq_tex = new ResourceLocation(RefStrings.MODID, "textures/models/sat_foeq.png"); public static final ResourceLocation sat_foeq_burning_tex = new ResourceLocation(RefStrings.MODID, "textures/models/sat_foeq_burning.png"); - + //SatDock public static final ResourceLocation satdock_tex = new ResourceLocation(RefStrings.MODID, "textures/models/sat_dock.png"); - + //Vault Door public static final ResourceLocation vault_cog_tex = new ResourceLocation(RefStrings.MODID, "textures/models/vault_cog.png"); public static final ResourceLocation vault_frame_tex = new ResourceLocation(RefStrings.MODID, "textures/models/vault_frame.png"); @@ -715,20 +741,20 @@ public class ResourceManager { public static final ResourceLocation vault4_cog_tex = new ResourceLocation(RefStrings.MODID, "textures/models/vault4_cog.png"); public static final ResourceLocation vault4_label_111_tex = new ResourceLocation(RefStrings.MODID, "textures/models/vault4_label_111.png"); public static final ResourceLocation vault4_label_81_tex = new ResourceLocation(RefStrings.MODID, "textures/models/vault4_label_81.png"); - + //Solar Tower public static final ResourceLocation solar_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/solar_boiler.png"); public static final ResourceLocation solar_mirror_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/solar_mirror.png"); - + //Drain public static final ResourceLocation drain_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/drain.png"); - + //Blast Door public static final ResourceLocation blast_door_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/blast_door_base.png"); public static final ResourceLocation blast_door_tooth_tex = new ResourceLocation(RefStrings.MODID, "textures/models/blast_door_tooth.png"); public static final ResourceLocation blast_door_slider_tex = new ResourceLocation(RefStrings.MODID, "textures/models/blast_door_slider.png"); public static final ResourceLocation blast_door_block_tex = new ResourceLocation(RefStrings.MODID, "textures/models/blast_door_block.png"); - + //Doors 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"); @@ -754,11 +780,11 @@ public class ResourceManager { public static final ResourceLocation glyphid_scout_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_scout.png"); public static final ResourceLocation glyphid_nuclear_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_nuclear.png"); public static final ResourceLocation glyphid_digger_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_digger.png"); - + //ZIRNOX public static final ResourceLocation zirnox_tex = new ResourceLocation(RefStrings.MODID, "textures/models/zirnox.png"); public static final ResourceLocation zirnox_destroyed_tex = new ResourceLocation(RefStrings.MODID, "textures/models/zirnox_destroyed.png"); - + //Electricity public static final ResourceLocation connector_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/connector.png"); public static final ResourceLocation pylon_medium_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/pylon_medium.png"); @@ -770,22 +796,25 @@ public class ResourceManager { //Radiolysis public static final ResourceLocation radiolysis_tex = new ResourceLocation(RefStrings.MODID, "textures/models/radiolysis.png"); - + + //Rotary Furnace + public static final ResourceLocation rotary_furnace_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rotary_furnace.png"); + //Electrolyser public static final ResourceLocation electrolyser_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/electrolyser.png"); - + //Charger public static final ResourceLocation charger_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/charger.png"); - + //DecoContainer public static final ResourceLocation file_cabinet_tex = new ResourceLocation(RefStrings.MODID, "textures/models/file_cabinet.png"); public static final ResourceLocation file_cabinet_steel_tex = new ResourceLocation(RefStrings.MODID, "textures/models/file_cabinet_steel.png"); - + //TELEX public static final ResourceLocation telex_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/telex.png"); - + ////Obj Items - + //Shimmer Sledge public static final IModelCustom shimmer_sledge = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/shimmer_sledge.obj")); public static final IModelCustom shimmer_axe = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/shimmer_axe.obj")); @@ -799,9 +828,7 @@ public class ResourceManager { public static final IModelCustom deagle = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/deagle.obj")); public static final IModelCustom shotty = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/supershotty.obj")); public static final IModelCustom ks23 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/ks23.obj")); - public static final IModelCustom flamer = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/flamer.obj")); public static final IModelCustom flechette = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/flechette.obj")); - public static final IModelCustom quadro = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/quadro.obj")); public static final IModelCustom sauergun = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/sauergun.obj")); public static final IModelCustom vortex = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/vortex.obj")); public static final IModelCustom thompson = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/thompson.obj")); @@ -811,7 +838,6 @@ public class ResourceManager { public static final IModelCustom ff_nightmare = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/nightmare.obj")); public static final IModelCustom fireext = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/fireext.obj")); public static final IModelCustom ar15 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/ar15.obj")); - public static final IModelCustom stinger = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/stinger.obj")); public static final IModelCustom mg42 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/mg42.obj")); public static final IModelCustom rem700 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/rem700.obj")); public static final IModelCustom rem700poly = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/rem700poly.obj")); @@ -819,21 +845,47 @@ public class ResourceManager { public static final IModelCustom cursed_revolver = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/cursed.obj")); public static final IModelCustom detonator_laser = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/detonator_laser.obj")); public static final IModelCustom remington = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/remington.obj")); - public static final IModelCustom spas_12 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/spas-12.obj")); public static final IModelCustom nightmare_dark = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/nightmare_dark.obj")); public static final IModelCustom glass_cannon = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/glass_cannon.obj")); - public static final IModelCustom bio_revolver = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/bio_revolver.obj")); - public static final IModelCustom chemthrower = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/chemthrower.obj")).asVBO(); public static final IModelCustom novac = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/novac.obj")); - public static final IModelCustom m2 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/m2_browning.obj")).asVBO(); //large fella should be a display list public static final IModelCustom lunatic_sniper = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lunatic_sniper.obj")).asVBO(); - public static final IModelCustom tau = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/tau.obj")); public static final IModelCustom benelli = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/benelli_new.obj")).asVBO(); public static final IModelCustom coilgun = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/coilgun.obj")).asVBO(); public static final IModelCustom cryocannon = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/cryo_cannon.obj")).asVBO(); public static final IModelCustom uac_pistol = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/UAC pistol.obj")).asVBO(); + + public static final IModelCustom pepperbox = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/pepperbox.obj")).asVBO(); + public static final IModelCustom bio_revolver = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/bio_revolver.obj")).asVBO(); + public static final IModelCustom henry = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/henry.obj")).asVBO(); + public static final IModelCustom greasegun = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/greasegun.obj")).asVBO(); + public static final IModelCustom maresleg = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/maresleg.obj")).asVBO(); + public static final IModelCustom flaregun = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/flaregun.obj")).asVBO(); + public static final IModelCustom am180 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/am180.obj")).asVBO(); + public static final IModelCustom liberator = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/liberator.obj")).asVBO(); public static final IModelCustom congolake = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/congolake.obj")).asVBO(); + public static final IModelCustom flamethrower = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/flamethrower.obj")).asVBO(); public static final IModelCustom lilmac = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lilmac.obj")).asVBO(); + public static final IModelCustom carbine = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/carbine.obj")).asVBO(); + public static final IModelCustom uzi = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/uzi.obj")).asVBO(); + public static final IModelCustom spas_12 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/spas-12.obj")).asVBO(); + public static final IModelCustom panzerschreck = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/panzerschreck.obj")).asVBO(); + public static final IModelCustom g3 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/g3.obj")).asVBO(); + public static final IModelCustom stinger = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/stinger.obj")).asVBO(); + public static final IModelCustom chemthrower = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/chemthrower.obj")).asVBO(); + public static final IModelCustom m2 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/m2_browning.obj")).asVBO(); + public static final IModelCustom shredder = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/shredder.obj")).asVBO(); + public static final IModelCustom quadro = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/quadro.obj")).asVBO(); + public static final IModelCustom mike_hawk = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/mike_hawk.obj")).asVBO(); + public static final IModelCustom minigun = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/minigun.obj")).asVBO(); + public static final IModelCustom missile_launcher = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/missile_launcher.obj")).asVBO(); + public static final IModelCustom tesla_cannon = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/tesla_cannon.obj")).asVBO(); + public static final IModelCustom stg77 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/stg77.obj")).asVBO(); + public static final IModelCustom tau = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/tau.obj")).asVBO(); + public static final IModelCustom fatman = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/fatman.obj")).asVBO(); + public static final IModelCustom lasrifle = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lasrifle.obj")).asVBO(); + public static final IModelCustom hangman = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/hangman.obj")).asVBO(); + public static final IModelCustom folly = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/folly.obj")).asVBO(); + public static final IModelCustom double_barrel = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/sacred_dragon.obj")).asVBO(); public static final HashMap python_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/python.json")); public static final HashMap cursed_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/cursed.json")); @@ -843,7 +895,11 @@ public class ResourceManager { public static final HashMap supershotty_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/supershotty.json")); public static final HashMap benelli_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/benelli.json")); public static final HashMap congolake_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/congolake.json")); - + public static final HashMap am180_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/am180.json")); + public static final HashMap flamethrower_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/flamethrower.json")); + public static final HashMap stg77_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/stg77.json")); + public static final HashMap lag_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/lag.json")); + public static final IModelCustom lance = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lance.obj")); public static final IModelCustom grenade_frag = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/grenade_frag.obj")); @@ -868,7 +924,7 @@ public class ResourceManager { public static final IModelCustom player_manly_af = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/armor/player_fem.obj")); public static final IModelCustom armor_envsuit = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/envsuit.obj")); public static final IModelCustom armor_trenchmaster = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/trenchmaster.obj")); - + ////Texture Items //Shimmer Sledge @@ -892,7 +948,6 @@ public class ResourceManager { public static final ResourceLocation deagle_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/deagle.png"); public static final ResourceLocation ks23_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/ks23.png"); public static final ResourceLocation shotty_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/shotty.png"); - public static final ResourceLocation flamer_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flamer.png"); public static final ResourceLocation flechette_body = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flechette_body.png"); public static final ResourceLocation flechette_barrel = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flechette_barrel.png"); public static final ResourceLocation flechette_gren_tube = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flechette_gren_tube.png"); @@ -904,8 +959,6 @@ public class ResourceManager { public static final ResourceLocation flechette_drum = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flechette_drum.png"); public static final ResourceLocation flechette_trigger = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flechette_trigger.png"); public static final ResourceLocation flechette_stock = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flechette_stock.png"); - public static final ResourceLocation quadro_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/quadro.png"); - public static final ResourceLocation quadro_rocket_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/quadro_rocket.png"); public static final ResourceLocation sauergun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/sauergun.png"); public static final ResourceLocation vortex_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/vortex.png"); public static final ResourceLocation thompson_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/thompson.png"); @@ -925,25 +978,63 @@ public class ResourceManager { public static final ResourceLocation remington_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/remington.png"); public static final ResourceLocation spas_12_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/spas-12.png"); public static final ResourceLocation glass_cannon_panel_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/glass_cannon_panel.png"); - public static final ResourceLocation bio_revolver_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/bio_revolver.png"); public static final ResourceLocation chemthrower_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/chemthrower.png"); public static final ResourceLocation novac_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/novac.png"); - public static final ResourceLocation novac_scope_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/novac_scope.png"); - public static final ResourceLocation lil_pip_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lil_pip.png"); public static final ResourceLocation blackjack_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/blackjack.png"); public static final ResourceLocation lent_gun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lent_gun.png"); public static final ResourceLocation red_key_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/red_key.png"); public static final ResourceLocation m2_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/m2_browning.png"); public static final ResourceLocation lunatic_sniper_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lunatic_sniper.png"); - public static final ResourceLocation tau_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/tau.png"); public static final ResourceLocation benelli_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/benelli_tex.png"); 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 debug_gun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/debug_gun.png"); + public static final ResourceLocation pepperbox_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/pepperbox.png"); + public static final ResourceLocation bio_revolver_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/bio_revolver.png"); + public static final ResourceLocation bio_revolver_atlas_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/bio_revolver_atlas.png"); + public static final ResourceLocation dani_celestial_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/dani_celestial.png"); + public static final ResourceLocation dani_lunar_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/dani_lunar.png"); + public static final ResourceLocation henry_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/henry.png"); + public static final ResourceLocation greasegun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/greasegun.png"); + public static final ResourceLocation maresleg_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/maresleg.png"); + public static final ResourceLocation maresleg_broken_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/maresleg_broken.png"); + public static final ResourceLocation flaregun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flaregun.png"); + public static final ResourceLocation heavy_revolver_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/heavy_revolver.png"); + public static final ResourceLocation heavy_revolver_protege_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/protege.png"); public static final ResourceLocation lilmac_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lilmac.png"); public static final ResourceLocation lilmac_scope_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lilmac_scope.png"); - + public static final ResourceLocation carbine_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/huntsman.png"); + public static final ResourceLocation am180_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/am180.png"); + public static final ResourceLocation liberator_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/liberator.png"); + public static final ResourceLocation flamethrower_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flamethrower.png"); + public static final ResourceLocation flamethrower_topaz_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flamethrower_topaz.png"); + public static final ResourceLocation flamethrower_daybreaker_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flamethrower_daybreaker.png"); + public static final ResourceLocation mike_hawk_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lag.png"); + public static final ResourceLocation uzi_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/uzi.png"); + public static final ResourceLocation panzerschreck_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/panzerschreck.png"); + public static final ResourceLocation g3_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/g3.png"); + public static final ResourceLocation shredder_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/shredder.png"); + public static final ResourceLocation shredder_orig_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/shredder_orig.png"); + public static final ResourceLocation sexy_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/sexy.png"); + public static final ResourceLocation quadro_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/quadro.png"); + public static final ResourceLocation quadro_rocket_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/quadro_rocket.png"); + public static final ResourceLocation minigun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/minigun.png"); + public static final ResourceLocation minigun_lacunae_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/minigun_lacunae.png"); + public static final ResourceLocation missile_launcher_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/missile_launcher.png"); + public static final ResourceLocation tesla_cannon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/tesla_cannon.png"); + public static final ResourceLocation stg77_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/stg77.png"); + public static final ResourceLocation tau_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/tau.png"); + public static final ResourceLocation fatman_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/fatman.png"); + public static final ResourceLocation fatman_mininuke_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/fatman_mininuke.png"); + public static final ResourceLocation lasrifle_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lasrifle.png"); + public static final ResourceLocation hangman_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/hangman.png"); + public static final ResourceLocation folly_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/moonlight.png"); + public static final ResourceLocation double_barrel_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/double_barrel.png"); + public static final ResourceLocation double_barrel_sacred_dragon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/double_barrel_sacred_dragon.png"); + public static final ResourceLocation lance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lance.png"); public static final ResourceLocation ff_gold = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/ff/gold.png"); @@ -1022,7 +1113,7 @@ public class ResourceManager { public static final ResourceLocation trenchmaster_arm = new ResourceLocation(RefStrings.MODID, "textures/armor/trenchmaster_arm.png"); public static final ResourceLocation mod_tesla = new ResourceLocation(RefStrings.MODID, "textures/armor/mod_tesla.png"); - + public static final ResourceLocation armor_bismuth_tex = new ResourceLocation(RefStrings.MODID, "textures/armor/bismuth.png"); public static final ResourceLocation wings_murk = new ResourceLocation(RefStrings.MODID, "textures/armor/wings_murk.png"); @@ -1035,31 +1126,33 @@ public class ResourceManager { public static final ResourceLocation no9 = new ResourceLocation(RefStrings.MODID, "textures/armor/no9.png"); public static final ResourceLocation no9_insignia = new ResourceLocation(RefStrings.MODID, "textures/armor/no9_insignia.png"); public static final ResourceLocation goggles = new ResourceLocation(RefStrings.MODID, "textures/armor/goggles.png"); - - public static final ResourceLocation player_manly_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/player_fem.png"); - - - + + public static final ResourceLocation player_manly_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/player_fem.png"); + + + ////Obj Entities - + //Boxcar public static final IModelCustom boxcar = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/boxcar.obj")); public static final IModelCustom duchessgambit = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/duchessgambit.obj")); public static final IModelCustom building = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/weapons/building.obj")); + public static final IModelCustom torpedo = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/torpedo.obj")); public static final IModelCustom rpc = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/rpc.obj")); public static final IModelCustom tom_main = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/weapons/tom_main.obj")); public static final IModelCustom tom_flame = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/weapons/tom_flame.hmf")); public static final IModelCustom nikonium = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/nikonium.obj")); - + //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 public static final IModelCustom dornier = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/dornier.obj")); public static final IModelCustom b29 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/b29.obj")); - + public static final IModelCustom c130 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/c130.obj")).asVBO(); + //Missiles public static final IModelCustom missileV2 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_v2.obj")).asVBO(); public static final IModelCustom missileABM = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_abm.obj")).asVBO(); @@ -1079,7 +1172,7 @@ public class ResourceManager { public static final IModelCustom soyuz_launcher_tower = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/launch_table/soyuz_launcher_tower.obj"), false).asVBO(); public static final IModelCustom soyuz_launcher_support_base = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/launch_table/soyuz_launcher_support_base.obj"), false).asVBO(); public static final IModelCustom soyuz_launcher_support = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/launch_table/soyuz_launcher_support.obj"), false).asVBO(); - + //Missile Parts public static final IModelCustom missile_pad = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/weapons/launch_pad_silo.obj")); public static final IModelCustom missile_erector = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/launch_pad_erector.obj")).asVBO(); @@ -1130,7 +1223,7 @@ public class ResourceManager { public static final IModelCustom mp_f_15_hydrogen = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_f_15_hydrogen.obj")); public static final IModelCustom mp_f_15_20_kerosene = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_f_15_20_kerosene.obj")); public static final IModelCustom mp_f_20 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_f_20.obj")); - + public static final IModelCustom mp_w_10_he = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_w_10_he.obj")); public static final IModelCustom mp_w_10_incendiary = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_w_10_incendiary.obj")); public static final IModelCustom mp_w_10_buster = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_w_10_buster.obj")); @@ -1145,7 +1238,7 @@ public class ResourceManager { public static final IModelCustom mp_w_15_balefire = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_w_15_balefire.obj")); public static final IModelCustom mp_w_15_turbine = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_w_15_turbine.obj")); public static final IModelCustom mp_w_20 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_w_20.obj")); - + //Carts public static final IModelCustom cart = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/cart.obj")); public static final IModelCustom cart_destroyer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/cart_destroyer.obj")); @@ -1153,26 +1246,27 @@ public class ResourceManager { public static final IModelCustom train_cargo_tram = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/tram.obj")); public static final IModelCustom train_cargo_tram_trailer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/tram_trailer.obj")); public static final IModelCustom tunnel_bore = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/vehicles/tunnel_bore.obj")); - + //Drones public static final IModelCustom delivery_drone = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/drone.obj")); - + ////Texture Entities - + //Blast public static final ResourceLocation fireball = new ResourceLocation(RefStrings.MODID, "textures/models/explosion/fireball.png"); public static final ResourceLocation balefire = new ResourceLocation(RefStrings.MODID, "textures/models/explosion/balefire.png"); public static final ResourceLocation tomblast = new ResourceLocation(RefStrings.MODID, "textures/models/explosion/tomblast.png"); - + //Boxcar public static final ResourceLocation boxcar_tex = new ResourceLocation(RefStrings.MODID, "textures/models/boxcar.png"); public static final ResourceLocation duchessgambit_tex = new ResourceLocation(RefStrings.MODID, "textures/models/duchessgambit.png"); public static final ResourceLocation building_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/building.png"); + public static final ResourceLocation torpedo_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/torpedo.png"); public static final ResourceLocation rpc_tex = new ResourceLocation(RefStrings.MODID, "textures/models/rpc.png"); public static final ResourceLocation tom_main_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/tom_main.png"); public static final ResourceLocation tom_flame_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/tom_flame.png"); public static final ResourceLocation nikonium_tex = new ResourceLocation(RefStrings.MODID, "textures/models/misc/nikonium.png"); - + //Projectiles public static final ResourceLocation bullet_pistol_tex = new ResourceLocation(RefStrings.MODID, "textures/models/projectiles/bullet_pistol.png"); public static final ResourceLocation bullet_rifle_tex = new ResourceLocation(RefStrings.MODID, "textures/models/projectiles/bullet_rifle.png"); @@ -1185,18 +1279,17 @@ public class ResourceManager { 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 - public static final ResourceLocation dornier_0_tex = new ResourceLocation(RefStrings.MODID, "textures/models/dornier_0.png"); public static final ResourceLocation dornier_1_tex = new ResourceLocation(RefStrings.MODID, "textures/models/dornier_1.png"); public static final ResourceLocation dornier_2_tex = new ResourceLocation(RefStrings.MODID, "textures/models/dornier_2.png"); - public static final ResourceLocation dornier_3_tex = new ResourceLocation(RefStrings.MODID, "textures/models/dornier_3.png"); public static final ResourceLocation dornier_4_tex = new ResourceLocation(RefStrings.MODID, "textures/models/dornier_4.png"); public static final ResourceLocation b29_0_tex = new ResourceLocation(RefStrings.MODID, "textures/models/b29_0.png"); public static final ResourceLocation b29_1_tex = new ResourceLocation(RefStrings.MODID, "textures/models/b29_1.png"); public static final ResourceLocation b29_2_tex = new ResourceLocation(RefStrings.MODID, "textures/models/b29_2.png"); public static final ResourceLocation b29_3_tex = new ResourceLocation(RefStrings.MODID, "textures/models/b29_3.png"); - + public static final ResourceLocation c130_0_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/c130_0.png"); + //Missiles public static final ResourceLocation missileV2_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2.png"); public static final ResourceLocation missileV2_IN_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_inc.png"); @@ -1231,7 +1324,7 @@ public class ResourceManager { public static final ResourceLocation missileMicroSchrab_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_micro_schrab.png"); public static final ResourceLocation missileMicroEMP_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_micro_emp.png"); public static final ResourceLocation missileMicroTest_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_test.png"); - + public static final ResourceLocation soyuz_engineblock = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz/engineblock.png"); public static final ResourceLocation soyuz_bottomstage = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz/bottomstage.png"); public static final ResourceLocation soyuz_topstage = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz/topstage.png"); @@ -1270,6 +1363,7 @@ public class ResourceManager { public static final ResourceLocation soyuz_lander_tex = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz_capsule/soyuz_lander.png"); public static final ResourceLocation soyuz_lander_rust_tex = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz_capsule/soyuz_lander_rust.png"); public static final ResourceLocation soyuz_chute_tex = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz_capsule/soyuz_chute.png"); + public static final ResourceLocation supply_crate = new ResourceLocation(RefStrings.MODID, "textures/blocks/crate_can.png"); public static final ResourceLocation soyuz_module_dome_tex = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz_capsule/module_dome.png"); public static final ResourceLocation soyuz_module_lander_tex = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz_capsule/module_lander.png"); @@ -1282,7 +1376,7 @@ public class ResourceManager { public static final ResourceLocation soyuz_launcher_tower_tex = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz_launcher/launcher_tower.png"); public static final ResourceLocation soyuz_launcher_support_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz_launcher/launcher_support_base.png"); public static final ResourceLocation soyuz_launcher_support_tex = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz_launcher/launcher_support.png"); - + //Missile Parts public static final ResourceLocation missile_pad_tex = new ResourceLocation(RefStrings.MODID, "textures/models/launchpad/silo.png"); public static final ResourceLocation missile_pad_rusted_tex = new ResourceLocation(RefStrings.MODID, "textures/models/launchpad/silo_rusted.png"); @@ -1303,7 +1397,7 @@ public class ResourceManager { public static final ResourceLocation launch_table_large_scaffold_connector_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/launch_table_large_scaffold_connector.png"); public static final ResourceLocation launch_table_small_scaffold_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/launch_table_small_scaffold_base.png"); public static final ResourceLocation launch_table_small_scaffold_connector_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/launch_table_small_scaffold_connector.png"); - + public static final ResourceLocation mp_t_10_kerosene_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/thrusters/mp_t_10_kerosene.png"); public static final ResourceLocation mp_t_10_solid_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/thrusters/mp_t_10_solid.png"); public static final ResourceLocation mp_t_10_xenon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/thrusters/mp_t_10_xenon.png"); @@ -1317,7 +1411,7 @@ public class ResourceManager { public static final ResourceLocation mp_t_15_balefire_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/thrusters/mp_t_15_balefire.png"); public static final ResourceLocation mp_t_15_balefire_large_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/thrusters/mp_t_15_balefire_large.png"); public static final ResourceLocation mp_t_15_balefire_large_rad_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/thrusters/mp_t_15_balefire_large_rad.png"); - + public static final ResourceLocation mp_t_20_kerosene_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/thrusters/mp_t_20_kerosene.png"); public static final ResourceLocation mp_t_20_kerosene_dual_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/thrusters/mp_t_20_kerosene_dual.png"); public static final ResourceLocation mp_t_20_solid_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/thrusters/mp_t_20_solid.png"); @@ -1340,7 +1434,7 @@ public class ResourceManager { public static final ResourceLocation mp_f_10_kerosene_sleek_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_10_kerosene_sleek.png"); public static final ResourceLocation mp_f_10_kerosene_metal_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_10_kerosene_metal.png"); public static final ResourceLocation mp_f_10_kerosene_taint_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/contest/mp_f_10_kerosene_taint.png"); - + public static final ResourceLocation mp_f_10_solid_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_10_solid.png"); public static final ResourceLocation mp_f_10_solid_flames_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_10_solid_flames.png"); public static final ResourceLocation mp_f_10_solid_insulation_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_10_solid_insulation.png"); @@ -1353,7 +1447,7 @@ public class ResourceManager { public static final ResourceLocation mp_f_10_xenon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_10_xenon.png"); public static final ResourceLocation mp_f_10_xenon_bhole_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/contest/mp_f_10_xenon_bhole.png"); - + public static final ResourceLocation mp_f_10_long_kerosene_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_10_long_kerosene.png"); public static final ResourceLocation mp_f_10_long_kerosene_camo_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_10_long_kerosene_camo.png"); public static final ResourceLocation mp_f_10_long_kerosene_desert_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_10_long_kerosene_desert.png"); @@ -1365,7 +1459,7 @@ public class ResourceManager { public static final ResourceLocation mp_f_10_long_kerosene_dash_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/contest/mp_f_10_long_kerosene_dash.png"); public static final ResourceLocation mp_f_10_long_kerosene_taint_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/contest/mp_f_10_long_kerosene_taint.png"); public static final ResourceLocation mp_f_10_long_kerosene_vap_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/contest/mp_f_10_long_kerosene_vap.png"); - + public static final ResourceLocation mp_f_10_long_solid_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_10_long_solid.png"); public static final ResourceLocation mp_f_10_long_solid_flames_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_10_long_solid_flames.png"); public static final ResourceLocation mp_f_10_long_solid_insulation_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_10_long_solid_insulation.png"); @@ -1373,12 +1467,12 @@ public class ResourceManager { public static final ResourceLocation mp_f_10_long_solid_soviet_glory_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_10_long_solid_soviet_glory.png"); public static final ResourceLocation mp_f_10_long_solid_bullet_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/contest/mp_f_10_long_solid_bullet.png"); public static final ResourceLocation mp_f_10_long_solid_silvermoonlight_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/contest/mp_f_10_long_solid_silvermoonlight.png"); - + public static final ResourceLocation mp_f_10_15_kerosene_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_10_15_kerosene.png"); public static final ResourceLocation mp_f_10_15_solid_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_10_15_solid.png"); public static final ResourceLocation mp_f_10_15_hydrogen_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_10_15_hydrogen.png"); public static final ResourceLocation mp_f_10_15_balefire_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_10_15_balefire.png"); - + public static final ResourceLocation mp_f_15_kerosene_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_15_kerosene.png"); public static final ResourceLocation mp_f_15_kerosene_camo_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_15_kerosene_camo.png"); public static final ResourceLocation mp_f_15_kerosene_desert_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_15_kerosene_desert.png"); @@ -1394,7 +1488,7 @@ public class ResourceManager { public static final ResourceLocation mp_f_15_kerosene_pip_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/contest/mp_f_15_kerosene_pip.png"); public static final ResourceLocation mp_f_15_kerosene_taint_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/contest/mp_f_15_kerosene_taint.png"); public static final ResourceLocation mp_f_15_kerosene_yuck_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_15_kerosene_yuck.png"); - + public static final ResourceLocation mp_f_15_solid_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_15_solid.png"); public static final ResourceLocation mp_f_15_solid_insulation_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_15_solid_insulation.png"); public static final ResourceLocation mp_f_15_solid_desh_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_15_solid_desh.png"); @@ -1415,7 +1509,7 @@ public class ResourceManager { public static final ResourceLocation mp_f_15_20_kerosene_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_15_20_kerosene.png"); public static final ResourceLocation mp_f_15_20_kerosene_magnusson_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_15_20_kerosene_magnusson.png"); public static final ResourceLocation mp_f_15_20_solid_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/fuselages/mp_f_15_20_solid.png"); - + public static final ResourceLocation mp_w_10_he_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/warheads/mp_w_10_he.png"); public static final ResourceLocation mp_w_10_incendiary_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/warheads/mp_w_10_incendiary.png"); public static final ResourceLocation mp_w_10_buster_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/warheads/mp_w_10_buster.png"); @@ -1431,7 +1525,7 @@ public class ResourceManager { public static final ResourceLocation mp_w_15_n2_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/warheads/mp_w_15_n2.png"); public static final ResourceLocation mp_w_15_balefire_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/warheads/mp_w_15_balefire.png"); public static final ResourceLocation mp_w_15_turbine_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/warheads/mp_w_15_turbine.png"); - + //Carts public static final ResourceLocation cart_metal = new ResourceLocation(RefStrings.MODID, "textures/entity/cart_metal.png"); public static final ResourceLocation cart_blank = new ResourceLocation(RefStrings.MODID, "textures/entity/cart_metal_naked.png"); @@ -1442,12 +1536,12 @@ public class ResourceManager { public static final ResourceLocation cart_semtex_top = new ResourceLocation(RefStrings.MODID, "textures/blocks/semtex_bottom.png"); public static final ResourceLocation train_tram = new ResourceLocation(RefStrings.MODID, "textures/models/trains/tram.png"); public static final ResourceLocation tram_trailer = new ResourceLocation(RefStrings.MODID, "textures/models/trains/tram_trailer.png"); - + //Drone public static final ResourceLocation delivery_drone_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/drone.png"); public static final ResourceLocation delivery_drone_express_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/drone_express.png"); public static final ResourceLocation delivery_drone_request_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/drone_request.png"); - + //ISBRHs public static final IModelCustom scaffold = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/scaffold.obj")); public static final IModelCustom taperecorder = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/taperecorder.obj")); @@ -1467,7 +1561,7 @@ public class ResourceManager { public static final IModelCustom toaster = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/toaster.obj")); public static final IModelCustom deco_computer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/puter.obj")); - + // Some RBMK elements are loaded twice due to VBOs not supporting tessellation public static final IModelCustom rbmk_element = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/rbmk/rbmk_element.obj")); public static final IModelCustom rbmk_element_vbo = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/rbmk_element.obj")).asVBO(); @@ -1508,7 +1602,7 @@ public class ResourceManager { public static final IModelCustom charge_dynamite = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_dynamite.obj")); public static final IModelCustom charge_c4 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_c4.obj")); - + //RBMK DEBRIS public static final IModelCustom deb_blank = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/projectiles/deb_blank.obj")); public static final IModelCustom deb_element = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/projectiles/deb_element.obj")); @@ -1522,5 +1616,5 @@ public class ResourceManager { public static final IModelCustom deb_zirnox_element = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/zirnox/deb_element.obj")); public static final IModelCustom deb_zirnox_exchanger = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/zirnox/deb_exchanger.obj")); public static final IModelCustom deb_zirnox_shrapnel = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/zirnox/deb_shrapnel.obj")); - + } diff --git a/src/main/java/com/hbm/main/ServerProxy.java b/src/main/java/com/hbm/main/ServerProxy.java index 3e48b8e15..19b9723ce 100644 --- a/src/main/java/com/hbm/main/ServerProxy.java +++ b/src/main/java/com/hbm/main/ServerProxy.java @@ -1,18 +1,17 @@ package com.hbm.main; -import java.util.ArrayList; -import java.util.List; - import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.saveddata.TomSaveData; import com.hbm.sound.AudioWrapper; - import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import java.util.ArrayList; +import java.util.List; + public class ServerProxy { //sort by estimated time of display. longer lasting ones should be sorted at the top. @@ -28,32 +27,33 @@ public class ServerProxy { public static final int ID_TOOLABILITY = 9; public static final int ID_GUN_MODE = 10; public static final int ID_GAS_HAZARD = 11; - + + public void registerPreRenderInfo() { } public void registerRenderInfo() { } public void registerTileEntitySpecialRenderer() { } public void registerItemRenderer() { } public void registerEntityRenderer() { } public void registerBlockRenderer() { } + public void registerGunCfg() { } public void handleNHNEICompat() { } - - public void particleControl(double x, double y, double z, int type) { } public void spawnParticle(double x, double y, double z, String type, float[] args) { } - + public void effectNT(NBTTagCompound data) { } public void registerMissileItems() { } - public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float range, float pitch) { return null; } + /** Retired in favor of the version that uses keepAlive */ + @Deprecated public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float range, float pitch) { return null; } public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float range, float pitch, int keepAlive) { return null; } - + public void playSound(String sound, Object data) { } public void displayTooltip(String msg, int id) { displayTooltip(msg, 1000, id); } public void displayTooltip(String msg, int time, int id) { } - + public boolean getIsKeyPressed(EnumKeybind key) { return false; } @@ -66,29 +66,29 @@ public class ServerProxy { } public void openLink(String url) { } - + public List getSubItems(ItemStack stack) { - + List list = new ArrayList(); list.add(stack); return list; } - + public float getImpactDust(World world) { return TomSaveData.forWorld(world).dust; } - + public float getImpactFire(World world) { return TomSaveData.forWorld(world).fire; } - + public boolean getImpact(World world) { return TomSaveData.forWorld(world).impact; } - + public void playSoundClient(double x, double y, double z, String sound, float volume, float pitch) { } - + public String getLanguageCode() { return "en_US"; } - + public int getStackColor(ItemStack stack, boolean amplify) { return 0x000000; } -} \ No newline at end of file +} diff --git a/src/main/java/com/hbm/packet/AuxElectricityPacket.java b/src/main/java/com/hbm/packet/AuxElectricityPacket.java deleted file mode 100644 index 39c27e7e1..000000000 --- a/src/main/java/com/hbm/packet/AuxElectricityPacket.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.hbm.packet; - -import api.hbm.energymk2.IEnergyHandlerMK2; -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; - -@Deprecated //use the NBT packet instead -public class AuxElectricityPacket implements IMessage { - - int x; - int y; - int z; - long charge; - - public AuxElectricityPacket() - { - - } - - public AuxElectricityPacket(int x, int y, int z, long charge) - { - this.x = x; - this.y = y; - this.z = z; - this.charge = charge; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - charge = buf.readLong(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeLong(charge); - } - - public static class Handler implements IMessageHandler { - - @Override - @SideOnly(Side.CLIENT) - public IMessage onMessage(AuxElectricityPacket m, MessageContext ctx) { - try { - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - if (te instanceof IEnergyHandlerMK2) { - - IEnergyHandlerMK2 gen = (IEnergyHandlerMK2) te; - gen.setPower(m.charge); - } - } catch (Exception x) { } - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/AuxGaugePacket.java b/src/main/java/com/hbm/packet/AuxGaugePacket.java deleted file mode 100644 index 17af20444..000000000 --- a/src/main/java/com/hbm/packet/AuxGaugePacket.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.hbm.packet; - -import com.hbm.interfaces.Spaghetti; -import com.hbm.items.weapon.ItemCustomMissilePart.PartSize; -import com.hbm.tileentity.TileEntityMachineBase; -import com.hbm.tileentity.bomb.TileEntityCompactLauncher; -import com.hbm.tileentity.bomb.TileEntityLaunchTable; -import com.hbm.tileentity.machine.TileEntityMachineArcFurnace; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; - -@Spaghetti("Changing all machines to use TileEntityMachineBase will reduce the total chaos in this class") -@Deprecated //use the NBT packet instead -public class AuxGaugePacket implements IMessage { - - int x; - int y; - int z; - int value; - int id; - - public AuxGaugePacket() - { - - } - - public AuxGaugePacket(int x, int y, int z, int value, int id) - { - this.x = x; - this.y = y; - this.z = z; - this.value = value; - this.id = id; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - value = buf.readInt(); - id = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeInt(value); - buf.writeInt(id); - } - - public static class Handler implements IMessageHandler { - - @Override - @SideOnly(Side.CLIENT) - public IMessage onMessage(AuxGaugePacket m, MessageContext ctx) { - try { - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - if (te instanceof TileEntityMachineArcFurnace) { - TileEntityMachineArcFurnace furn = (TileEntityMachineArcFurnace)te; - - if(m.id == 0) - furn.dualCookTime = m.value; - } - if (te instanceof TileEntityCompactLauncher) { - TileEntityCompactLauncher launcher = (TileEntityCompactLauncher)te; - - launcher.solid = m.value; - } - if (te instanceof TileEntityLaunchTable) { - TileEntityLaunchTable launcher = (TileEntityLaunchTable)te; - - if(m.id == 0) - launcher.solid = m.value; - if(m.id == 1) - launcher.padSize = PartSize.values()[m.value]; - } - - if(te instanceof TileEntityMachineBase) { - ((TileEntityMachineBase)te).processGauge(m.value, m.id); - } - - } catch (Exception x) {} - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/AuxParticlePacket.java b/src/main/java/com/hbm/packet/AuxParticlePacket.java deleted file mode 100644 index 1483e297d..000000000 --- a/src/main/java/com/hbm/packet/AuxParticlePacket.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.hbm.packet; - -import com.hbm.main.MainRegistry; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; - -public class AuxParticlePacket implements IMessage { - - double x; - double y; - double z; - int type; - - public AuxParticlePacket() - { - - } - - public AuxParticlePacket(double x, double y, double z, int type) - { - this.x = x; - this.y = y; - this.z = z; - this.type = type; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readDouble(); - y = buf.readDouble(); - z = buf.readDouble(); - type = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeDouble(x); - buf.writeDouble(y); - buf.writeDouble(z); - buf.writeInt(type); - } - - public static class Handler implements IMessageHandler { - - @Override - public IMessage onMessage(AuxParticlePacket m, MessageContext ctx) { - - try { - - MainRegistry.proxy.particleControl(m.x, m.y, m.z, m.type); - - } catch(Exception x) { } - - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/ExtPropPacket.java b/src/main/java/com/hbm/packet/ExtPropPacket.java deleted file mode 100644 index 641bc9b68..000000000 --- a/src/main/java/com/hbm/packet/ExtPropPacket.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.hbm.packet; - -import java.io.IOException; - -import com.hbm.extprop.HbmLivingProps; -import com.hbm.extprop.HbmPlayerProps; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import io.netty.buffer.ByteBuf; -import io.netty.buffer.Unpooled; -import net.minecraft.client.Minecraft; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.PacketBuffer; - -public class ExtPropPacket implements IMessage { - - PacketBuffer buffer; - - public ExtPropPacket() { } - - public ExtPropPacket(NBTTagCompound nbt) { - - this.buffer = new PacketBuffer(Unpooled.buffer()); - - try { - buffer.writeNBTTagCompoundToBuffer(nbt); - - } catch (IOException e) { - e.printStackTrace(); - } - } - - @Override - public void fromBytes(ByteBuf buf) { - - if (buffer == null) { - buffer = new PacketBuffer(Unpooled.buffer()); - } - buffer.writeBytes(buf); - } - - @Override - public void toBytes(ByteBuf buf) { - - if (buffer == null) { - buffer = new PacketBuffer(Unpooled.buffer()); - } - buf.writeBytes(buffer); - } - - public static class Handler implements IMessageHandler { - - @Override - @SideOnly(Side.CLIENT) - public IMessage onMessage(ExtPropPacket m, MessageContext ctx) { - - if(Minecraft.getMinecraft().theWorld == null) - return null; - - try { - - NBTTagCompound nbt = m.buffer.readNBTTagCompoundFromBuffer(); - HbmLivingProps props = HbmLivingProps.getData(Minecraft.getMinecraft().thePlayer); - HbmPlayerProps pprps = HbmPlayerProps.getData(Minecraft.getMinecraft().thePlayer); - props.loadNBTData(nbt); - pprps.loadNBTData(nbt); - - } catch (IOException e) { - e.printStackTrace(); - } - - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/GunAnimationPacket.java b/src/main/java/com/hbm/packet/GunAnimationPacket.java deleted file mode 100644 index c744f72fd..000000000 --- a/src/main/java/com/hbm/packet/GunAnimationPacket.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.hbm.packet; - -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.render.anim.BusAnimation; -import com.hbm.render.anim.HbmAnimations; -import com.hbm.render.anim.HbmAnimations.AnimType; -import com.hbm.render.anim.HbmAnimations.Animation; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -public class GunAnimationPacket implements IMessage { - - int type; - - public GunAnimationPacket() { } - - public GunAnimationPacket(int type) { - this.type = type; - } - - @Override - public void fromBytes(ByteBuf buf) { - type = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(type); - } - - public static class Handler implements IMessageHandler { - - @Override - @SideOnly(Side.CLIENT) - public IMessage onMessage(GunAnimationPacket m, MessageContext ctx) { - - try { - - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - ItemStack stack = player.getHeldItem(); - int slot = player.inventory.currentItem; - - if(stack == null) - return null; - - if(!(stack.getItem() instanceof ItemGunBase)) - return null; - - if(m.type < 0 || m.type >= AnimType.values().length) - return null; - - AnimType type = AnimType.values()[m.type]; - ItemGunBase base = (ItemGunBase) stack.getItem(); - - BusAnimation animation = base.getAnimation(stack, type); - - // Fallback to regular reload if no empty reload animation - if(animation == null && type == AnimType.RELOAD_EMPTY) { - animation = base.getAnimation(stack, AnimType.RELOAD); - } - - // Fallback to regular CYCLE if no ALT_CYCLE (or CYCLE_EMPTY) exists - if(animation == null && (type == AnimType.ALT_CYCLE || type == AnimType.CYCLE_EMPTY)) { - animation = base.getAnimation(stack, AnimType.CYCLE); - } - - if(animation != null) { - boolean isReloadAnimation = type == AnimType.RELOAD || type == AnimType.RELOAD_CYCLE || type == AnimType.RELOAD_EMPTY; - HbmAnimations.hotbar[slot] = new Animation(stack.getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, isReloadAnimation && base.mainConfig.reloadAnimationsSequential); - } - - } catch(Exception x) { } - - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/LoopedEntitySoundPacket.java b/src/main/java/com/hbm/packet/LoopedEntitySoundPacket.java deleted file mode 100644 index 0d364608f..000000000 --- a/src/main/java/com/hbm/packet/LoopedEntitySoundPacket.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.hbm.packet; - -import com.hbm.entity.logic.EntityBomber; -import com.hbm.sound.MovingSoundBomber; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; - -public class LoopedEntitySoundPacket implements IMessage { - - int entityID; - - public LoopedEntitySoundPacket() - { - - } - - public LoopedEntitySoundPacket(int entityID) - { - this.entityID = entityID; - } - - @Override - public void fromBytes(ByteBuf buf) { - entityID = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(entityID); - } - - public static class Handler implements IMessageHandler { - - @Override - //Tamaized, I love you! - @SideOnly(Side.CLIENT) - public IMessage onMessage(LoopedEntitySoundPacket m, MessageContext ctx) { - - Entity e = Minecraft.getMinecraft().theWorld.getEntityByID(m.entityID); - - if(e instanceof EntityBomber) { - - int n = 1; - int x = e.getDataWatcher().getWatchableObjectByte(16); - - switch(x) { - case 0: - case 1: - case 2: - case 3: - case 4: n = 2; break; - case 5: - case 6: - case 7: - case 8: n = 1; break; - default: n = 2; break; - } - - boolean flag = true; - for(int i = 0; i < MovingSoundBomber.globalSoundList.size(); i++) { - if(MovingSoundBomber.globalSoundList.get(i).bomber == e && !MovingSoundBomber.globalSoundList.get(i).isDonePlaying()) - flag = false; - } - - if(flag) { - if(n == 2) - Minecraft.getMinecraft().getSoundHandler().playSound(new MovingSoundBomber(new ResourceLocation("hbm:entity.bomberSmallLoop"), (EntityBomber)e)); - if(n == 1) - Minecraft.getMinecraft().getSoundHandler().playSound(new MovingSoundBomber(new ResourceLocation("hbm:entity.bomberLoop"), (EntityBomber)e)); - } - } - - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/LoopedSoundPacket.java b/src/main/java/com/hbm/packet/LoopedSoundPacket.java deleted file mode 100644 index 0312680a0..000000000 --- a/src/main/java/com/hbm/packet/LoopedSoundPacket.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.hbm.packet; - -import com.hbm.interfaces.Spaghetti; -import com.hbm.sound.*; -import com.hbm.tileentity.machine.*; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import io.netty.buffer.ByteBuf; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; - -@Spaghetti("this class should be destroyed") -public class LoopedSoundPacket implements IMessage { - - int x; - int y; - int z; - - public LoopedSoundPacket() - { - - } - - public LoopedSoundPacket(int x, int y, int z) - { - this.x = x; - this.y = y; - this.z = z; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - } - - public static class Handler implements IMessageHandler { - - @Override - //Tamaized, I love you! - @SideOnly(Side.CLIENT) - public IMessage onMessage(LoopedSoundPacket m, MessageContext ctx) { - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - if (te != null && te instanceof TileEntityMachineAssembler) { - - boolean flag = true; - for(int i = 0; i < SoundLoopAssembler.list.size(); i++) { - if(SoundLoopAssembler.list.get(i).getTE() == te && !SoundLoopAssembler.list.get(i).isDonePlaying()) - flag = false; - } - - if(flag && te.getWorldObj().isRemote && ((TileEntityMachineAssembler)te).isProgressing) - Minecraft.getMinecraft().getSoundHandler().playSound(new SoundLoopAssembler(new ResourceLocation("hbm:block.assemblerOperate"), te)); - } - - if (te != null && te instanceof TileEntityMachineTurbofan) { - - boolean flag = true; - for(int i = 0; i < SoundLoopTurbofan.list.size(); i++) { - if(SoundLoopTurbofan.list.get(i).getTE() == te && !SoundLoopTurbofan.list.get(i).isDonePlaying()) - flag = false; - } - - if(flag && te.getWorldObj().isRemote && ((TileEntityMachineTurbofan)te).wasOn) - Minecraft.getMinecraft().getSoundHandler().playSound(new SoundLoopTurbofan(new ResourceLocation("hbm:block.turbofanOperate"), te)); - } - - if (te != null && te instanceof TileEntityBroadcaster) { - - boolean flag = true; - for(int i = 0; i < SoundLoopBroadcaster.list.size(); i++) { - if(SoundLoopBroadcaster.list.get(i).getTE() == te && !SoundLoopBroadcaster.list.get(i).isDonePlaying()) - flag = false; - } - - int j = te.xCoord + te.zCoord + te.yCoord; - - if(flag && te.getWorldObj().isRemote) - Minecraft.getMinecraft().getSoundHandler().playSound(new SoundLoopBroadcaster(new ResourceLocation("hbm:block.broadcast" + (Math.abs(j) % 3 + 1)), te)); - } - - if (te != null && te instanceof TileEntityMachineCentrifuge) { - - boolean flag = true; - for(int i = 0; i < SoundLoopCentrifuge.list.size(); i++) { - if(SoundLoopCentrifuge.list.get(i).getTE() == te && !SoundLoopCentrifuge.list.get(i).isDonePlaying()) - flag = false; - } - - if(flag && te.getWorldObj().isRemote && ((TileEntityMachineCentrifuge)te).isProgressing) - Minecraft.getMinecraft().getSoundHandler().playSound(new SoundLoopCentrifuge(new ResourceLocation("hbm:block.centrifugeOperate"), te)); - } - - if (te != null && te instanceof TileEntityMachineGasCent) { - - boolean flag = true; - for(int i = 0; i < SoundLoopCentrifuge.list.size(); i++) { - if(SoundLoopCentrifuge.list.get(i).getTE() == te && !SoundLoopCentrifuge.list.get(i).isDonePlaying()) - flag = false; - } - - if(flag && te.getWorldObj().isRemote && ((TileEntityMachineGasCent)te).isProgressing) - Minecraft.getMinecraft().getSoundHandler().playSound(new SoundLoopCentrifuge(new ResourceLocation("hbm:block.centrifugeOperate"), te)); - } - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/NBTPacket.java b/src/main/java/com/hbm/packet/NBTPacket.java deleted file mode 100644 index 3bd5afbcb..000000000 --- a/src/main/java/com/hbm/packet/NBTPacket.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.hbm.packet; - -import java.io.IOException; - -import com.hbm.tileentity.INBTPacketReceiver; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import io.netty.buffer.ByteBuf; -import io.netty.buffer.Unpooled; -import net.minecraft.client.Minecraft; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.PacketBuffer; -import net.minecraft.tileentity.TileEntity; - - -@Deprecated // rest in peace sweet little prince -public class NBTPacket implements IMessage { - - PacketBuffer buffer; - int x; - int y; - int z; - - public NBTPacket() { } - - public NBTPacket(NBTTagCompound nbt, int x, int y, int z) { - - this.buffer = new PacketBuffer(Unpooled.buffer()); - this.x = x; - this.y = y; - this.z = z; - - try { - buffer.writeNBTTagCompoundToBuffer(nbt); - - } catch (IOException e) { - e.printStackTrace(); - } - } - - @Override - public void fromBytes(ByteBuf buf) { - - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - - if (buffer == null) { - buffer = new PacketBuffer(Unpooled.buffer()); - } - buffer.writeBytes(buf); - } - - @Override - public void toBytes(ByteBuf buf) { - - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - - if (buffer == null) { - buffer = new PacketBuffer(Unpooled.buffer()); - } - buf.writeBytes(buffer); - } - - public static class Handler implements IMessageHandler { - - @Override - public IMessage onMessage(NBTPacket m, MessageContext ctx) { - - if(Minecraft.getMinecraft().theWorld == null) - return null; - - TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - try { - - NBTTagCompound nbt = m.buffer.readNBTTagCompoundFromBuffer(); - - if(nbt != null) { - - if(te instanceof INBTPacketReceiver) - ((INBTPacketReceiver) te).networkUnpack(nbt); - } - - } catch (IOException e) { - e.printStackTrace(); - } - - return null; - } - } - -} diff --git a/src/main/java/com/hbm/packet/PacketDispatcher.java b/src/main/java/com/hbm/packet/PacketDispatcher.java index e2dea4a51..b749cfdd3 100644 --- a/src/main/java/com/hbm/packet/PacketDispatcher.java +++ b/src/main/java/com/hbm/packet/PacketDispatcher.java @@ -1,26 +1,22 @@ package com.hbm.packet; import com.hbm.lib.RefStrings; +import com.hbm.main.NetworkHandler; +import com.hbm.packet.toclient.*; +import com.hbm.packet.toserver.*; -import cpw.mods.fml.common.network.NetworkRegistry; -import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; import cpw.mods.fml.relauncher.Side; public class PacketDispatcher { - //Mark 1 Packet Sending Device - public static final SimpleNetworkWrapper wrapper = NetworkRegistry.INSTANCE.newSimpleChannel(RefStrings.MODID); + //Mark 1.5 Packet Sending Device + public static final NetworkHandler wrapper = new NetworkHandler(RefStrings.MODID); - public static final void registerPackets() - { + public static void registerPackets() { int i = 0; - - //Sound packet that keeps client and server separated - wrapper.registerMessage(LoopedSoundPacket.Handler.class, LoopedSoundPacket.class, i++, Side.CLIENT); + //Signals server to consume items and create template wrapper.registerMessage(ItemFolderPacket.Handler.class, ItemFolderPacket.class, i++, Side.SERVER); - //Electricity gauge for GUI rendering - wrapper.registerMessage(AuxElectricityPacket.Handler.class, AuxElectricityPacket.class, i++, Side.CLIENT); //Siren packet for looped sounds wrapper.registerMessage(TESirenPacket.Handler.class, TESirenPacket.class, i++, Side.CLIENT); //Signals server to change ItemStacks @@ -37,14 +33,10 @@ public class PacketDispatcher { wrapper.registerMessage(ParticleBurstPacket.Handler.class, ParticleBurstPacket.class, i++, Side.CLIENT); //Packet to send chunk radiation info to individual players wrapper.registerMessage(ExtPropPacket.Handler.class, ExtPropPacket.class, i++, Side.CLIENT); - //Entity sound packet that keeps client and server separated - wrapper.registerMessage(LoopedEntitySoundPacket.Handler.class, LoopedEntitySoundPacket.class, i++, Side.CLIENT); //Packet for force fields wrapper.registerMessage(TEFFPacket.Handler.class, TEFFPacket.class, i++, Side.CLIENT); //Sends button information for ItemGunBase wrapper.registerMessage(GunButtonPacket.Handler.class, GunButtonPacket.class, i++, Side.SERVER); - //Packet to send block break particles - wrapper.registerMessage(AuxParticlePacket.Handler.class, AuxParticlePacket.class, i++, Side.CLIENT); //Signals server to buy offer from bobmazon wrapper.registerMessage(ItemBobmazonPacket.Handler.class, ItemBobmazonPacket.class, i++, Side.SERVER); //Packet to send missile multipart information to TEs @@ -71,17 +63,12 @@ public class PacketDispatcher { wrapper.registerMessage(ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.Handler.class, ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.class, i++, Side.CLIENT); //Packet to send NBT data from clients to the serverside held item wrapper.registerMessage(NBTItemControlPacket.Handler.class, NBTItemControlPacket.class, i++, Side.SERVER); - //sends a button press to the held item, assuming it is an ISyncButtons - wrapper.registerMessage(SyncButtonsPacket.Handler.class, SyncButtonsPacket.class, i++, Side.SERVER); //General syncing for global values wrapper.registerMessage(PermaSyncPacket.Handler.class, PermaSyncPacket.class, i++, Side.CLIENT); //Syncs biome information for single positions or entire chunks wrapper.registerMessage(BiomeSyncPacket.Handler.class, BiomeSyncPacket.class, i++, Side.CLIENT); - - //Tile sync - wrapper.registerMessage(AuxGaugePacket.Handler.class, AuxGaugePacket.class, i++, Side.CLIENT); //The horrid one - wrapper.registerMessage(NBTPacket.Handler.class, NBTPacket.class, i++, Side.CLIENT); //The convenient but laggy one - wrapper.registerMessage(BufPacket.Handler.class, BufPacket.class, i++, Side.CLIENT); //The not-so-convenient but not laggy one + //The not-so-convenient but not laggy one + wrapper.registerMessage(BufPacket.Handler.class, BufPacket.class, i++, Side.CLIENT); } - + } diff --git a/src/main/java/com/hbm/packet/PrecompiledPacket.java b/src/main/java/com/hbm/packet/PrecompiledPacket.java new file mode 100644 index 000000000..30d4c456d --- /dev/null +++ b/src/main/java/com/hbm/packet/PrecompiledPacket.java @@ -0,0 +1,35 @@ +package com.hbm.packet; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; + +/** + * Abstract class for precompiled packets. This should be used if the packet is going to be threaded through the `PacketThreading` handler. + */ +public abstract class PrecompiledPacket implements IMessage { + + ByteBuf preCompiledBuf; + + /** + * Returns a precompiled buffer used to avoid race conditions when sending certain packets in threads. + * @return The precompiled packet in a `ByteBuf`. + */ + public ByteBuf getPreBuf() { + if(preCompiledBuf == null || preCompiledBuf.readableBytes() <= 0 /* No data written */) + this.makePreBuf(); + return preCompiledBuf; + } + + /** + * Forcefully creates the precompiled buffer, use `getPreBuf()` whenever possible. + */ + public void makePreBuf() { + if(preCompiledBuf != null) + preCompiledBuf.release(); + + preCompiledBuf = Unpooled.buffer(); + + this.toBytes(preCompiledBuf); // Create buffer and read data to it. + } +} diff --git a/src/main/java/com/hbm/packet/SyncButtonsPacket.java b/src/main/java/com/hbm/packet/SyncButtonsPacket.java deleted file mode 100644 index b460a4141..000000000 --- a/src/main/java/com/hbm/packet/SyncButtonsPacket.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.hbm.packet; - -import com.hbm.items.ISyncButtons; - -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import cpw.mods.fml.relauncher.Side; -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayer; - -public class SyncButtonsPacket implements IMessage { - - boolean state; - int button; - - public SyncButtonsPacket() { } - - public SyncButtonsPacket(boolean s, int b) { - state = s; - button = b; - } - - @Override - public void fromBytes(ByteBuf buf) { - state = buf.readBoolean(); - button = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeBoolean(state); - buf.writeInt(button); - } - - public static class Handler implements IMessageHandler { - - @Override - public IMessage onMessage(SyncButtonsPacket m, MessageContext ctx) { - - if(FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) - return null; - - EntityPlayer p = ctx.getServerHandler().playerEntity; - - if(p.getHeldItem() != null && p.getHeldItem().getItem() instanceof ISyncButtons) { - - ISyncButtons item = (ISyncButtons)p.getHeldItem().getItem(); - item.receiveMouse(p, p.getHeldItem(), m.button, m.state); - } - - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/AuxParticlePacketNT.java b/src/main/java/com/hbm/packet/toclient/AuxParticlePacketNT.java similarity index 95% rename from src/main/java/com/hbm/packet/AuxParticlePacketNT.java rename to src/main/java/com/hbm/packet/toclient/AuxParticlePacketNT.java index f3b311e3a..a9d44e0b7 100644 --- a/src/main/java/com/hbm/packet/AuxParticlePacketNT.java +++ b/src/main/java/com/hbm/packet/toclient/AuxParticlePacketNT.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import java.io.IOException; @@ -14,22 +14,22 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.PacketBuffer; public class AuxParticlePacketNT implements IMessage { - + PacketBuffer buffer; public AuxParticlePacketNT() { } public AuxParticlePacketNT(NBTTagCompound nbt, double x, double y, double z) { - + this.buffer = new PacketBuffer(Unpooled.buffer()); nbt.setDouble("posX", x); nbt.setDouble("posY", y); nbt.setDouble("posZ", z); - + try { buffer.writeNBTTagCompoundToBuffer(nbt); - + } catch (IOException e) { e.printStackTrace(); } @@ -37,7 +37,7 @@ public class AuxParticlePacketNT implements IMessage { @Override public void fromBytes(ByteBuf buf) { - + if (buffer == null) { buffer = new PacketBuffer(Unpooled.buffer()); } @@ -46,7 +46,7 @@ public class AuxParticlePacketNT implements IMessage { @Override public void toBytes(ByteBuf buf) { - + if (buffer == null) { buffer = new PacketBuffer(Unpooled.buffer()); } @@ -54,25 +54,27 @@ public class AuxParticlePacketNT implements IMessage { } public static class Handler implements IMessageHandler { - + @Override public IMessage onMessage(AuxParticlePacketNT m, MessageContext ctx) { - + if(Minecraft.getMinecraft().theWorld == null) return null; - + try { NBTTagCompound nbt = m.buffer.readNBTTagCompoundFromBuffer(); - + if(nbt != null) MainRegistry.proxy.effectNT(nbt); - + } catch (IOException e) { e.printStackTrace(); + } finally { + m.buffer.release(); } - + return null; } } diff --git a/src/main/java/com/hbm/packet/BiomeSyncPacket.java b/src/main/java/com/hbm/packet/toclient/BiomeSyncPacket.java similarity index 53% rename from src/main/java/com/hbm/packet/BiomeSyncPacket.java rename to src/main/java/com/hbm/packet/toclient/BiomeSyncPacket.java index 203ddc281..aee64d099 100644 --- a/src/main/java/com/hbm/packet/BiomeSyncPacket.java +++ b/src/main/java/com/hbm/packet/toclient/BiomeSyncPacket.java @@ -1,4 +1,8 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; + +import cpw.mods.fml.common.Loader; +import com.hbm.util.Compat; +import com.hbm.world.WorldUtil; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; @@ -16,18 +20,26 @@ public class BiomeSyncPacket implements IMessage { int chunkZ; byte blockX; byte blockZ; - byte biome; - byte[] biomeArray; + short biome; + short[] biomeArray; public BiomeSyncPacket() { } - + public BiomeSyncPacket(int chunkX, int chunkZ, byte[] biomeArray) { + this(chunkX, chunkZ, bytesToShorts(biomeArray)); + } + + public BiomeSyncPacket(int blockX, int blockZ, byte biome) { + this(blockX, blockZ, (short) biome); + } + + public BiomeSyncPacket(int chunkX, int chunkZ, short[] biomeArray) { this.chunkX = chunkX; this.chunkZ = chunkZ; this.biomeArray = biomeArray; } - public BiomeSyncPacket(int blockX, int blockZ, byte biome) { + public BiomeSyncPacket(int blockX, int blockZ, short biome) { this.chunkX = blockX >> 4; this.chunkZ = blockZ >> 4; this.blockX = (byte) (blockX & 15); @@ -42,13 +54,13 @@ public class BiomeSyncPacket implements IMessage { if(this.biomeArray == null) { buf.writeBoolean(false); - buf.writeByte(this.biome); + buf.writeShort(this.biome); buf.writeByte(this.blockX); buf.writeByte(this.blockZ); } else { buf.writeBoolean(true); for(int i = 0; i < 256; i++) { - buf.writeByte(this.biomeArray[i]); + buf.writeShort(this.biomeArray[i]); } } } @@ -59,17 +71,27 @@ public class BiomeSyncPacket implements IMessage { this.chunkZ = buf.readInt(); if(!buf.readBoolean()) { - this.biome = buf.readByte(); + this.biome = buf.readShort(); this.blockX = buf.readByte(); this.blockZ = buf.readByte(); } else { - this.biomeArray = new byte[256]; + this.biomeArray = new short[256]; for(int i = 0; i < 256; i++) { - this.biomeArray[i] = buf.readByte(); + this.biomeArray[i] = buf.readShort(); } } } + private final static short[] bytesToShorts(byte[] byteArray) { + int size = byteArray.length; + short[] shortArray = new short[size]; + + for(int index = 0; index < size; index++) + shortArray[index] = (short) byteArray[index]; + + return shortArray; + } + public static class Handler implements IMessageHandler { @Override @@ -80,14 +102,28 @@ public class BiomeSyncPacket implements IMessage { if(!world.getChunkProvider().chunkExists(m.chunkX, m.chunkZ)) return null; Chunk chunk = world.getChunkFromChunkCoords(m.chunkX, m.chunkZ); chunk.isModified = true; - - if(m.biomeArray == null) { - chunk.getBiomeArray()[(m.blockZ & 15) << 4 | (m.blockX & 15)] = m.biome; - world.markBlockRangeForRenderUpdate(m.chunkX << 4, 0, m.chunkZ << 4, m.chunkX << 4, 255, m.chunkZ << 4); + + if(Loader.isModLoaded(Compat.MOD_EIDS)) { + short[] target = WorldUtil.getBiomeShortArray(chunk); + if(m.biomeArray == null) { + target[(m.blockZ & 15) << 4 | m.blockX & 15] = m.biome; + world.markBlockRangeForRenderUpdate(m.chunkX << 4, 0, m.chunkZ << 4, m.chunkX << 4, 255, m.chunkZ << 4); + } else { + for(int i = 0; i < 255; ++i) { + target[i] = m.biomeArray[i]; + world.markBlockRangeForRenderUpdate(m.chunkX << 4, 0, m.chunkZ << 4, (m.chunkX << 4) + 15, 255, (m.chunkZ << 4) + 15); + } + } } else { - for(int i = 0; i < 256; i++) { - chunk.getBiomeArray()[i] = m.biomeArray[i]; - world.markBlockRangeForRenderUpdate(m.chunkX << 4, 0, m.chunkZ << 4, (m.chunkX << 4) + 15, 255, (m.chunkZ << 4) + 15); + byte[] target = chunk.getBiomeArray(); + if(m.biomeArray == null) { + target[(m.blockZ & 15) << 4 | (m.blockX & 15)] = (byte) m.biome; + world.markBlockRangeForRenderUpdate(m.chunkX << 4, 0, m.chunkZ << 4, m.chunkX << 4, 255, m.chunkZ << 4); + } else { + for(int i = 0; i < 256; i++) { + target[i] = (byte) m.biomeArray[i]; + world.markBlockRangeForRenderUpdate(m.chunkX << 4, 0, m.chunkZ << 4, (m.chunkX << 4) + 15, 255, (m.chunkZ << 4) + 15); + } } } diff --git a/src/main/java/com/hbm/packet/BufPacket.java b/src/main/java/com/hbm/packet/toclient/BufPacket.java similarity index 62% rename from src/main/java/com/hbm/packet/BufPacket.java rename to src/main/java/com/hbm/packet/toclient/BufPacket.java index 7ff502c9d..2cc78b657 100644 --- a/src/main/java/com/hbm/packet/BufPacket.java +++ b/src/main/java/com/hbm/packet/toclient/BufPacket.java @@ -1,5 +1,7 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; +import com.hbm.main.MainRegistry; +import com.hbm.packet.PrecompiledPacket; import com.hbm.tileentity.IBufPacketReceiver; import cpw.mods.fml.common.network.simpleimpl.IMessage; @@ -9,14 +11,14 @@ import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.tileentity.TileEntity; -public class BufPacket implements IMessage { +public class BufPacket extends PrecompiledPacket { int x; int y; int z; IBufPacketReceiver rec; ByteBuf buf; - + public BufPacket() { } public BufPacket(int x, int y, int z, IBufPacketReceiver rec) { @@ -43,19 +45,27 @@ public class BufPacket implements IMessage { } public static class Handler implements IMessageHandler { - + @Override public IMessage onMessage(BufPacket m, MessageContext ctx) { - + if(Minecraft.getMinecraft().theWorld == null) return null; - + TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); - - if(te instanceof IBufPacketReceiver) { - ((IBufPacketReceiver) te).deserialize(m.buf); + + if (te instanceof IBufPacketReceiver) { + try { + ((IBufPacketReceiver) te).deserialize(m.buf); + } catch(Exception e) { // just in case I fucked up + MainRegistry.logger.warn("A ByteBuf packet failed to be read and has thrown an error. This normally means that there was a buffer underflow and more data was read than was actually in the packet."); + MainRegistry.logger.warn("Tile: {}", te.getBlockType().getUnlocalizedName()); + MainRegistry.logger.warn(e.getMessage()); + } finally { + m.buf.release(); + } } - + return null; } } diff --git a/src/main/java/com/hbm/packet/ExplosionKnockbackPacket.java b/src/main/java/com/hbm/packet/toclient/ExplosionKnockbackPacket.java similarity index 97% rename from src/main/java/com/hbm/packet/ExplosionKnockbackPacket.java rename to src/main/java/com/hbm/packet/toclient/ExplosionKnockbackPacket.java index 9d0aa99c2..0a4972bfe 100644 --- a/src/main/java/com/hbm/packet/ExplosionKnockbackPacket.java +++ b/src/main/java/com/hbm/packet/toclient/ExplosionKnockbackPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; diff --git a/src/main/java/com/hbm/packet/ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.java b/src/main/java/com/hbm/packet/toclient/ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.java similarity index 97% rename from src/main/java/com/hbm/packet/ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.java rename to src/main/java/com/hbm/packet/toclient/ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.java index c8300a0da..e11d45dc4 100644 --- a/src/main/java/com/hbm/packet/ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.java +++ b/src/main/java/com/hbm/packet/toclient/ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.java @@ -1,10 +1,11 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard; +import com.hbm.interfaces.NotableComments; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; @@ -20,6 +21,7 @@ import net.minecraft.world.ChunkPosition; * @author hbm * */ +@NotableComments public class ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket implements IMessage { private double posX; diff --git a/src/main/java/com/hbm/packet/toclient/ExtPropPacket.java b/src/main/java/com/hbm/packet/toclient/ExtPropPacket.java new file mode 100644 index 000000000..97ac8016a --- /dev/null +++ b/src/main/java/com/hbm/packet/toclient/ExtPropPacket.java @@ -0,0 +1,59 @@ +package com.hbm.packet.toclient; + +import com.hbm.extprop.HbmLivingProps; +import com.hbm.extprop.HbmPlayerProps; + +import com.hbm.packet.PrecompiledPacket; +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; + +public class ExtPropPacket extends PrecompiledPacket { + + HbmLivingProps props; + HbmPlayerProps pprps; + ByteBuf buf; + + public ExtPropPacket() { } + + public ExtPropPacket(HbmLivingProps props, HbmPlayerProps pprps) { + this.props = props; + this.pprps = pprps; + } + + @Override + public void fromBytes(ByteBuf buf) { + this.buf = buf; + } + + @Override + public void toBytes(ByteBuf buf) { + props.serialize(buf); + pprps.serialize(buf); + } + + public static class Handler implements IMessageHandler { + + @Override + @SideOnly(Side.CLIENT) + public IMessage onMessage(ExtPropPacket m, MessageContext ctx) { + + if(Minecraft.getMinecraft().theWorld == null) + return null; + + HbmLivingProps props = HbmLivingProps.getData(Minecraft.getMinecraft().thePlayer); + HbmPlayerProps pprps = HbmPlayerProps.getData(Minecraft.getMinecraft().thePlayer); + + props.deserialize(m.buf); + pprps.deserialize(m.buf); + + m.buf.release(); + + return null; + } + } +} diff --git a/src/main/java/com/hbm/packet/toclient/GunAnimationPacket.java b/src/main/java/com/hbm/packet/toclient/GunAnimationPacket.java new file mode 100644 index 000000000..922d19200 --- /dev/null +++ b/src/main/java/com/hbm/packet/toclient/GunAnimationPacket.java @@ -0,0 +1,150 @@ +package com.hbm.packet.toclient; + +import java.util.function.BiConsumer; +import java.util.function.BiFunction; + +import com.hbm.items.weapon.ItemGunBase; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.HbmAnimations; +import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.render.anim.HbmAnimations.Animation; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +public class GunAnimationPacket implements IMessage { + + public short type; + public int receiverIndex; + public int gunIndex; + + public GunAnimationPacket() { } + + public GunAnimationPacket(int type) { + this.type = (short) type; + this.receiverIndex = 0; + this.gunIndex = 0; + } + + public GunAnimationPacket(int type, int rec) { + this.type = (short) type; + this.receiverIndex = rec; + this.gunIndex = 0; + } + + public GunAnimationPacket(int type, int rec, int gun) { + this.type = (short) type; + this.receiverIndex = rec; + this.gunIndex = gun; + } + + @Override + public void fromBytes(ByteBuf buf) { + type = buf.readShort(); + receiverIndex = buf.readInt(); + gunIndex = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeShort(type); + buf.writeInt(receiverIndex); + buf.writeInt(gunIndex); + } + + public static class Handler implements IMessageHandler { + + @Override + @SideOnly(Side.CLIENT) + public IMessage onMessage(GunAnimationPacket m, MessageContext ctx) { + + try { + + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + ItemStack stack = player.getHeldItem(); + int slot = player.inventory.currentItem; + + if(stack == null) + return null; + + if(stack.getItem() instanceof ItemGunBaseNT) { + handleSedna(player, stack, slot, AnimType.values()[m.type], m.receiverIndex, m.gunIndex); + } + + if(!(stack.getItem() instanceof ItemGunBase)) + return null; + + if(m.type < 0 || m.type >= AnimType.values().length) + return null; + + AnimType type = AnimType.values()[m.type]; + ItemGunBase base = (ItemGunBase) stack.getItem(); + + BusAnimation animation = base.getAnimation(stack, type); + + // Fallback to regular reload if no empty reload animation + if(animation == null && type == AnimType.RELOAD_EMPTY) { + animation = base.getAnimation(stack, AnimType.RELOAD); + } + + // Fallback to regular CYCLE if no ALT_CYCLE (or CYCLE_EMPTY) exists + if(animation == null && (type == AnimType.ALT_CYCLE || type == AnimType.CYCLE_EMPTY)) { + animation = base.getAnimation(stack, AnimType.CYCLE); + } + + if(animation != null) { + boolean isReloadAnimation = type == AnimType.RELOAD || type == AnimType.RELOAD_CYCLE || type == AnimType.RELOAD_EMPTY; + HbmAnimations.hotbar[slot][0] = new Animation(stack.getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, isReloadAnimation && base.mainConfig.reloadAnimationsSequential); + } + + } catch(Exception x) { } + + return null; + } + + public static void handleSedna(EntityPlayer player, ItemStack stack, int slot, AnimType type, int receiverIndex, int gunIndex) { + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + GunConfig config = gun.getConfig(stack, gunIndex); + + if(type == AnimType.CYCLE) { + if(gunIndex < gun.lastShot.length) gun.lastShot[gunIndex] = System.currentTimeMillis(); + gun.shotRand = player.worldObj.rand.nextDouble(); + + Receiver[] receivers = config.getReceivers(stack); + if(receiverIndex >= 0 && receiverIndex < receivers.length) { + Receiver rec = receivers[receiverIndex]; + BiConsumer onRecoil= rec.getRecoil(stack); + if(onRecoil != null) onRecoil.accept(stack, new LambdaContext(config, player, player.inventory, receiverIndex)); + } + } + + BiFunction anims = config.getAnims(stack); + BusAnimation animation = anims.apply(stack, type); + + if(animation == null && type == AnimType.RELOAD_EMPTY) { + animation = anims.apply(stack, AnimType.RELOAD); + } + if(animation == null && (type == AnimType.ALT_CYCLE || type == AnimType.CYCLE_EMPTY)) { + animation = anims.apply(stack, AnimType.CYCLE); + } + + if(animation != null) { + Minecraft.getMinecraft().entityRenderer.itemRenderer.resetEquippedProgress(); + Minecraft.getMinecraft().entityRenderer.itemRenderer.itemToRender = stack; + boolean isReloadAnimation = type == AnimType.RELOAD || type == AnimType.RELOAD_CYCLE || type == AnimType.RELOAD_EMPTY; + HbmAnimations.hotbar[slot][gunIndex] = new Animation(stack.getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, isReloadAnimation && config.getReloadAnimSequential(stack)); + } + } + } +} diff --git a/src/main/java/com/hbm/packet/ParticleBurstPacket.java b/src/main/java/com/hbm/packet/toclient/ParticleBurstPacket.java similarity index 97% rename from src/main/java/com/hbm/packet/ParticleBurstPacket.java rename to src/main/java/com/hbm/packet/toclient/ParticleBurstPacket.java index c6b58a8b7..6be55c831 100644 --- a/src/main/java/com/hbm/packet/ParticleBurstPacket.java +++ b/src/main/java/com/hbm/packet/toclient/ParticleBurstPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; diff --git a/src/main/java/com/hbm/packet/PermaSyncPacket.java b/src/main/java/com/hbm/packet/toclient/PermaSyncPacket.java similarity index 89% rename from src/main/java/com/hbm/packet/PermaSyncPacket.java rename to src/main/java/com/hbm/packet/toclient/PermaSyncPacket.java index 2415e3696..f756d9f3e 100644 --- a/src/main/java/com/hbm/packet/PermaSyncPacket.java +++ b/src/main/java/com/hbm/packet/toclient/PermaSyncPacket.java @@ -1,4 +1,6 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; + +import com.hbm.packet.PermaSyncHandler; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; @@ -11,7 +13,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; public class PermaSyncPacket implements IMessage { - + EntityPlayerMP player; //server only, for writing ByteBuf out; //client only, for reading @@ -32,18 +34,20 @@ public class PermaSyncPacket implements IMessage { } public static class Handler implements IMessageHandler { - + @Override @SideOnly(Side.CLIENT) public IMessage onMessage(PermaSyncPacket m, MessageContext ctx) { - + try { EntityPlayer player = Minecraft.getMinecraft().thePlayer; if(player != null) PermaSyncHandler.readPacket(m.out, player.worldObj, player); - - } catch(Exception x) { } - + + } catch(Exception x) { } finally { + m.out.release(); + } + return null; } } diff --git a/src/main/java/com/hbm/packet/PlayerInformPacket.java b/src/main/java/com/hbm/packet/toclient/PlayerInformPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/PlayerInformPacket.java rename to src/main/java/com/hbm/packet/toclient/PlayerInformPacket.java index 01bb8b599..0cdb23d20 100644 --- a/src/main/java/com/hbm/packet/PlayerInformPacket.java +++ b/src/main/java/com/hbm/packet/toclient/PlayerInformPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import com.hbm.main.MainRegistry; diff --git a/src/main/java/com/hbm/packet/SatPanelPacket.java b/src/main/java/com/hbm/packet/toclient/SatPanelPacket.java similarity index 95% rename from src/main/java/com/hbm/packet/SatPanelPacket.java rename to src/main/java/com/hbm/packet/toclient/SatPanelPacket.java index 89252d7e1..e3b815808 100644 --- a/src/main/java/com/hbm/packet/SatPanelPacket.java +++ b/src/main/java/com/hbm/packet/toclient/SatPanelPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import java.io.IOException; @@ -17,7 +17,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.PacketBuffer; public class SatPanelPacket implements IMessage { - + PacketBuffer buffer; int type; @@ -31,10 +31,10 @@ public class SatPanelPacket implements IMessage { this.buffer = new PacketBuffer(Unpooled.buffer()); NBTTagCompound nbt = new NBTTagCompound(); sat.writeToNBT(nbt); - + try { buffer.writeNBTTagCompoundToBuffer(nbt); - + } catch (IOException e) { e.printStackTrace(); } @@ -42,9 +42,9 @@ public class SatPanelPacket implements IMessage { @Override public void fromBytes(ByteBuf buf) { - + type = buf.readInt(); - + if (buffer == null) { buffer = new PacketBuffer(Unpooled.buffer()); } @@ -53,9 +53,9 @@ public class SatPanelPacket implements IMessage { @Override public void toBytes(ByteBuf buf) { - + buf.writeInt(type); - + if (buffer == null) { buffer = new PacketBuffer(Unpooled.buffer()); } @@ -67,18 +67,20 @@ public class SatPanelPacket implements IMessage { @Override @SideOnly(Side.CLIENT) public IMessage onMessage(SatPanelPacket m, MessageContext ctx) { - + Minecraft.getMinecraft(); try { - + NBTTagCompound nbt = m.buffer.readNBTTagCompoundFromBuffer(); ItemSatInterface.currentSat = Satellite.create(m.type); - + if(nbt != null) ItemSatInterface.currentSat.readFromNBT(nbt); - + } catch (Exception x) { + } finally { + m.buffer.release(); } return null; } diff --git a/src/main/java/com/hbm/packet/TEDoorAnimationPacket.java b/src/main/java/com/hbm/packet/toclient/TEDoorAnimationPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/TEDoorAnimationPacket.java rename to src/main/java/com/hbm/packet/toclient/TEDoorAnimationPacket.java index 7321aa015..3511f0d07 100644 --- a/src/main/java/com/hbm/packet/TEDoorAnimationPacket.java +++ b/src/main/java/com/hbm/packet/toclient/TEDoorAnimationPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import com.hbm.interfaces.IAnimatedDoor; diff --git a/src/main/java/com/hbm/packet/TEFFPacket.java b/src/main/java/com/hbm/packet/toclient/TEFFPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/TEFFPacket.java rename to src/main/java/com/hbm/packet/toclient/TEFFPacket.java index 4549dfc11..26de5bd91 100644 --- a/src/main/java/com/hbm/packet/TEFFPacket.java +++ b/src/main/java/com/hbm/packet/toclient/TEFFPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import com.hbm.tileentity.machine.TileEntityForceField; import cpw.mods.fml.common.network.simpleimpl.IMessage; diff --git a/src/main/java/com/hbm/packet/TEMissileMultipartPacket.java b/src/main/java/com/hbm/packet/toclient/TEMissileMultipartPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/TEMissileMultipartPacket.java rename to src/main/java/com/hbm/packet/toclient/TEMissileMultipartPacket.java index 9bf955906..e25d5bbac 100644 --- a/src/main/java/com/hbm/packet/TEMissileMultipartPacket.java +++ b/src/main/java/com/hbm/packet/toclient/TEMissileMultipartPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import com.hbm.handler.MissileStruct; import com.hbm.tileentity.bomb.TileEntityCompactLauncher; diff --git a/src/main/java/com/hbm/packet/TESirenPacket.java b/src/main/java/com/hbm/packet/toclient/TESirenPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/TESirenPacket.java rename to src/main/java/com/hbm/packet/toclient/TESirenPacket.java index bdd3d0ea0..8e6f79825 100644 --- a/src/main/java/com/hbm/packet/TESirenPacket.java +++ b/src/main/java/com/hbm/packet/toclient/TESirenPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import com.hbm.items.machine.ItemCassette.SoundType; import com.hbm.items.machine.ItemCassette.TrackType; diff --git a/src/main/java/com/hbm/packet/TEVaultPacket.java b/src/main/java/com/hbm/packet/toclient/TEVaultPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/TEVaultPacket.java rename to src/main/java/com/hbm/packet/toclient/TEVaultPacket.java index 2b0139e92..84721d0b9 100644 --- a/src/main/java/com/hbm/packet/TEVaultPacket.java +++ b/src/main/java/com/hbm/packet/toclient/TEVaultPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import com.hbm.tileentity.machine.TileEntityBlastDoor; import com.hbm.tileentity.machine.TileEntityVaultDoor; diff --git a/src/main/java/com/hbm/packet/AnvilCraftPacket.java b/src/main/java/com/hbm/packet/toserver/AnvilCraftPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/AnvilCraftPacket.java rename to src/main/java/com/hbm/packet/toserver/AnvilCraftPacket.java index d8b1049a4..1a33e48a6 100644 --- a/src/main/java/com/hbm/packet/AnvilCraftPacket.java +++ b/src/main/java/com/hbm/packet/toserver/AnvilCraftPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toserver; import com.hbm.inventory.container.ContainerAnvil; import com.hbm.inventory.recipes.anvil.AnvilRecipes; diff --git a/src/main/java/com/hbm/packet/AuxButtonPacket.java b/src/main/java/com/hbm/packet/toserver/AuxButtonPacket.java similarity index 99% rename from src/main/java/com/hbm/packet/AuxButtonPacket.java rename to src/main/java/com/hbm/packet/toserver/AuxButtonPacket.java index c80dfd5ef..7f41feeb1 100644 --- a/src/main/java/com/hbm/packet/AuxButtonPacket.java +++ b/src/main/java/com/hbm/packet/toserver/AuxButtonPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toserver; import com.hbm.config.MobConfig; import com.hbm.entity.mob.EntityDuck; diff --git a/src/main/java/com/hbm/packet/GunButtonPacket.java b/src/main/java/com/hbm/packet/toserver/GunButtonPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/GunButtonPacket.java rename to src/main/java/com/hbm/packet/toserver/GunButtonPacket.java index a9688de1d..0dc5f0e99 100644 --- a/src/main/java/com/hbm/packet/GunButtonPacket.java +++ b/src/main/java/com/hbm/packet/toserver/GunButtonPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toserver; import com.hbm.items.weapon.ItemGunBase; diff --git a/src/main/java/com/hbm/packet/ItemBobmazonPacket.java b/src/main/java/com/hbm/packet/toserver/ItemBobmazonPacket.java similarity index 99% rename from src/main/java/com/hbm/packet/ItemBobmazonPacket.java rename to src/main/java/com/hbm/packet/toserver/ItemBobmazonPacket.java index c665f8891..9866b4596 100644 --- a/src/main/java/com/hbm/packet/ItemBobmazonPacket.java +++ b/src/main/java/com/hbm/packet/toserver/ItemBobmazonPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toserver; import java.util.Random; diff --git a/src/main/java/com/hbm/packet/ItemDesignatorPacket.java b/src/main/java/com/hbm/packet/toserver/ItemDesignatorPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/ItemDesignatorPacket.java rename to src/main/java/com/hbm/packet/toserver/ItemDesignatorPacket.java index 126325b16..8acdcc808 100644 --- a/src/main/java/com/hbm/packet/ItemDesignatorPacket.java +++ b/src/main/java/com/hbm/packet/toserver/ItemDesignatorPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toserver; import com.hbm.items.ModItems; diff --git a/src/main/java/com/hbm/packet/ItemFolderPacket.java b/src/main/java/com/hbm/packet/toserver/ItemFolderPacket.java similarity index 99% rename from src/main/java/com/hbm/packet/ItemFolderPacket.java rename to src/main/java/com/hbm/packet/toserver/ItemFolderPacket.java index 7f70ce19a..e6258ba19 100644 --- a/src/main/java/com/hbm/packet/ItemFolderPacket.java +++ b/src/main/java/com/hbm/packet/toserver/ItemFolderPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toserver; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.recipes.AssemblerRecipes; diff --git a/src/main/java/com/hbm/packet/KeybindPacket.java b/src/main/java/com/hbm/packet/toserver/KeybindPacket.java similarity index 84% rename from src/main/java/com/hbm/packet/KeybindPacket.java rename to src/main/java/com/hbm/packet/toserver/KeybindPacket.java index 3b3f2a80c..945d21e69 100644 --- a/src/main/java/com/hbm/packet/KeybindPacket.java +++ b/src/main/java/com/hbm/packet/toserver/KeybindPacket.java @@ -1,7 +1,7 @@ -package com.hbm.packet; +package com.hbm.packet.toserver; -import com.hbm.extprop.HbmPlayerProps; import com.hbm.handler.HbmKeybinds.EnumKeybind; +import com.hbm.handler.HbmKeybindsServer; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; @@ -39,9 +39,7 @@ public class KeybindPacket implements IMessage { public IMessage onMessage(KeybindPacket m, MessageContext ctx) { EntityPlayer p = ctx.getServerHandler().playerEntity; - HbmPlayerProps props = HbmPlayerProps.getData(p); - - props.setKeyPressed(EnumKeybind.values()[m.key], m.pressed); + HbmKeybindsServer.onPressedServer(p, EnumKeybind.values()[m.key], m.pressed); return null; } diff --git a/src/main/java/com/hbm/packet/NBTControlPacket.java b/src/main/java/com/hbm/packet/toserver/NBTControlPacket.java similarity index 95% rename from src/main/java/com/hbm/packet/NBTControlPacket.java rename to src/main/java/com/hbm/packet/toserver/NBTControlPacket.java index 226b3eae1..6a2a58c16 100644 --- a/src/main/java/com/hbm/packet/NBTControlPacket.java +++ b/src/main/java/com/hbm/packet/toserver/NBTControlPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toserver; import java.io.IOException; @@ -15,7 +15,7 @@ import net.minecraft.network.PacketBuffer; import net.minecraft.tileentity.TileEntity; public class NBTControlPacket implements IMessage { - + PacketBuffer buffer; int x; int y; @@ -24,12 +24,12 @@ public class NBTControlPacket implements IMessage { public NBTControlPacket() { } public NBTControlPacket(NBTTagCompound nbt, int x, int y, int z) { - + this.buffer = new PacketBuffer(Unpooled.buffer()); this.x = x; this.y = y; this.z = z; - + try { buffer.writeNBTTagCompoundToBuffer(nbt); } catch (IOException e) { @@ -39,60 +39,62 @@ public class NBTControlPacket implements IMessage { @Override public void fromBytes(ByteBuf buf) { - + x = buf.readInt(); y = buf.readInt(); z = buf.readInt(); - + if(buffer == null) buffer = new PacketBuffer(Unpooled.buffer()); - + buffer.writeBytes(buf); } @Override public void toBytes(ByteBuf buf) { - + buf.writeInt(x); buf.writeInt(y); buf.writeInt(z); - + if (buffer == null) buffer = new PacketBuffer(Unpooled.buffer()); - + buf.writeBytes(buffer); } public static class Handler implements IMessageHandler { - + @Override public IMessage onMessage(NBTControlPacket m, MessageContext ctx) { EntityPlayer p = ctx.getServerHandler().playerEntity; - + if(p.worldObj == null) return null; - + TileEntity te = p.worldObj.getTileEntity(m.x, m.y, m.z); - + try { - + NBTTagCompound nbt = m.buffer.readNBTTagCompoundFromBuffer(); - + if(nbt != null) { if(te instanceof IControlReceiver) { - + IControlReceiver tile = (IControlReceiver)te; - + if(tile.hasPermission(p)) { tile.receiveControl(p, nbt); tile.receiveControl(nbt); } } } - + } catch (IOException e) { e.printStackTrace(); + } finally { + m.buffer.release(); } - + return null; } } diff --git a/src/main/java/com/hbm/packet/NBTItemControlPacket.java b/src/main/java/com/hbm/packet/toserver/NBTItemControlPacket.java similarity index 95% rename from src/main/java/com/hbm/packet/NBTItemControlPacket.java rename to src/main/java/com/hbm/packet/toserver/NBTItemControlPacket.java index 7f03f6894..499617bac 100644 --- a/src/main/java/com/hbm/packet/NBTItemControlPacket.java +++ b/src/main/java/com/hbm/packet/toserver/NBTItemControlPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toserver; import java.io.IOException; @@ -15,18 +15,18 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.PacketBuffer; public class NBTItemControlPacket implements IMessage { - + PacketBuffer buffer; public NBTItemControlPacket() { } public NBTItemControlPacket(NBTTagCompound nbt) { - + this.buffer = new PacketBuffer(Unpooled.buffer()); - + try { buffer.writeNBTTagCompoundToBuffer(nbt); - + } catch (IOException e) { e.printStackTrace(); } @@ -34,7 +34,7 @@ public class NBTItemControlPacket implements IMessage { @Override public void fromBytes(ByteBuf buf) { - + if (buffer == null) { buffer = new PacketBuffer(Unpooled.buffer()); } @@ -43,7 +43,7 @@ public class NBTItemControlPacket implements IMessage { @Override public void toBytes(ByteBuf buf) { - + if (buffer == null) { buffer = new PacketBuffer(Unpooled.buffer()); } @@ -51,28 +51,30 @@ public class NBTItemControlPacket implements IMessage { } public static class Handler implements IMessageHandler { - + @Override public IMessage onMessage(NBTItemControlPacket m, MessageContext ctx) { EntityPlayer p = ctx.getServerHandler().playerEntity; - + try { - + NBTTagCompound nbt = m.buffer.readNBTTagCompoundFromBuffer(); - + if(nbt != null) { ItemStack held = p.getHeldItem(); - + if(held != null && held.getItem() instanceof IItemControlReceiver) { ((IItemControlReceiver) held.getItem()).receiveControl(held, nbt); } } - + } catch (IOException e) { e.printStackTrace(); + } finally { + m.buffer.release(); } - + return null; } } diff --git a/src/main/java/com/hbm/packet/SatCoordPacket.java b/src/main/java/com/hbm/packet/toserver/SatCoordPacket.java similarity index 97% rename from src/main/java/com/hbm/packet/SatCoordPacket.java rename to src/main/java/com/hbm/packet/toserver/SatCoordPacket.java index 0d165165d..b36ef3245 100644 --- a/src/main/java/com/hbm/packet/SatCoordPacket.java +++ b/src/main/java/com/hbm/packet/toserver/SatCoordPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toserver; import com.hbm.items.ISatChip; import com.hbm.items.tool.ItemSatInterface; diff --git a/src/main/java/com/hbm/packet/SatLaserPacket.java b/src/main/java/com/hbm/packet/toserver/SatLaserPacket.java similarity index 97% rename from src/main/java/com/hbm/packet/SatLaserPacket.java rename to src/main/java/com/hbm/packet/toserver/SatLaserPacket.java index 1dc430a7b..9b0bacea8 100644 --- a/src/main/java/com/hbm/packet/SatLaserPacket.java +++ b/src/main/java/com/hbm/packet/toserver/SatLaserPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toserver; import com.hbm.items.ISatChip; import com.hbm.items.tool.ItemSatInterface; diff --git a/src/main/java/com/hbm/particle/EntityFXRotating.java b/src/main/java/com/hbm/particle/EntityFXRotating.java new file mode 100644 index 000000000..0c05cd9ca --- /dev/null +++ b/src/main/java/com/hbm/particle/EntityFXRotating.java @@ -0,0 +1,72 @@ +package com.hbm.particle; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +@SideOnly(Side.CLIENT) +public class EntityFXRotating extends EntityFX { + + protected EntityFXRotating(World world, double x, double y, double z) { + super(world, x, y, z); + } + + @Override + public int getFXLayer() { + return 1; + } + + public void renderParticleRotated(Tessellator tess, float interp, float sX, float sY, float sZ, float dX, float dZ, double scale) { + + float pX = (float) (this.prevPosX + (this.posX - this.prevPosX) * (double) interp - interpPosX); + float pY = (float) (this.prevPosY + (this.posY - this.prevPosY) * (double) interp - interpPosY); + float pZ = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - interpPosZ); + float rotation = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * interp; + + double x1 = 0 - sX * scale - dX * scale; + double y1 = 0 - sY * scale; + double z1 = 0 - sZ * scale - dZ * scale; + double x2 = 0 - sX * scale + dX * scale; + double y2 = 0 + sY * scale; + double z2 = 0 - sZ * scale + dZ * scale; + double x3 = 0 + sX * scale + dX * scale; + double y3 = 0 + sY * scale; + double z3 = 0 + sZ * scale + dZ * scale; + double x4 = 0 + sX * scale - dX * scale; + double y4 = 0 - sY * scale; + double z4 = 0 + sZ * scale - dZ * scale; + + double nX = ((y2 - y1) * (z3 - z1)) - ((z2 - z1) * (y3 - y1)); + double nY = ((z2 - z1) * (x3 - x1)) - ((x2 - x1) * (z3 - z1)); + double nZ = ((x2 - x1) * (y3 - y1)) - ((y2 - y1) * (x3 - x1)); + + Vec3 vec = Vec3.createVectorHelper(nX, nY, nZ).normalize(); + nX = vec.xCoord; + nY = vec.yCoord; + nZ = vec.zCoord; + + double cosTh = Math.cos(rotation * Math.PI / 180D); + double sinTh = Math.sin(rotation * Math.PI / 180D); + + double x01 = x1 * cosTh + (nY * z1 - nZ * y1) * sinTh; + double y01 = y1 * cosTh + (nZ * x1 - nX * z1) * sinTh; + double z01 = z1 * cosTh + (nX * y1 - nY * x1) * sinTh; + double x02 = x2 * cosTh + (nY * z2 - nZ * y2) * sinTh; + double y02 = y2 * cosTh + (nZ * x2 - nX * z2) * sinTh; + double z02 = z2 * cosTh + (nX * y2 - nY * x2) * sinTh; + double x03 = x3 * cosTh + (nY * z3 - nZ * y3) * sinTh; + double y03 = y3 * cosTh + (nZ * x3 - nX * z3) * sinTh; + double z03 = z3 * cosTh + (nX * y3 - nY * x3) * sinTh; + double x04 = x4 * cosTh + (nY * z4 - nZ * y4) * sinTh; + double y04 = y4 * cosTh + (nZ * x4 - nX * z4) * sinTh; + double z04 = z4 * cosTh + (nX * y4 - nY * x4) * sinTh; + + tess.addVertexWithUV(pX + x01, pY + y01, pZ + z01, particleIcon.getMaxU(), particleIcon.getMaxV()); + tess.addVertexWithUV(pX + x02, pY + y02, pZ + z02, particleIcon.getMaxU(), particleIcon.getMinV()); + tess.addVertexWithUV(pX + x03, pY + y03, pZ + z03, particleIcon.getMinU(), particleIcon.getMinV()); + tess.addVertexWithUV(pX + x04, pY + y04, pZ + z04, particleIcon.getMinU(), particleIcon.getMaxV()); + } +} diff --git a/src/main/java/com/hbm/particle/ParticleAshes.java b/src/main/java/com/hbm/particle/ParticleAshes.java new file mode 100644 index 000000000..4b76c52ac --- /dev/null +++ b/src/main/java/com/hbm/particle/ParticleAshes.java @@ -0,0 +1,87 @@ +package com.hbm.particle; + +import com.hbm.main.ModEventHandlerClient; +import com.hbm.util.Vec3NT; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.World; + +@SideOnly(Side.CLIENT) +public class ParticleAshes extends EntityFXRotating { + + public ParticleAshes(World world, double x, double y, double z, float scale) { + super(world, x, y, z); + particleIcon = ModEventHandlerClient.particleBase; + this.particleMaxAge = 1200 + rand.nextInt(20); + this.particleScale = scale * 0.9F + rand.nextFloat() * 0.2F; + + this.particleGravity = 0.01F; + + this.particleRed = this.particleGreen = this.particleBlue = this.rand.nextFloat() * 0.1F + 0.1F; + } + + @Override + public void onUpdate() { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + + this.particleAge++; + + if(this.particleAge >= this.particleMaxAge) { + this.setDead(); + } + + this.motionY -= particleGravity; + this.prevRotationPitch = this.rotationPitch; + + if(!this.onGround) this.rotationPitch += 2 * ((this.getEntityId() % 2) - 0.5); + + this.motionX *= 0.95D; + this.motionY *= 0.99D; + this.motionZ *= 0.95D; + + boolean wasOnGround = this.onGround; + this.moveEntity(this.motionX, this.motionY, this.motionZ); + if(!wasOnGround && this.onGround) this.rotationPitch = rand.nextFloat() * 360F; + + if(this.getEntityId() % 5 == 0 && this.onGround && rand.nextInt(15) == 0) { + worldObj.spawnParticle("smoke", posX, posY + 0.125, posZ, 0, 0.05, 0); + } + } + + @Override + public void renderParticle(Tessellator tess, float interp, float sX, float sY, float sZ, float dX, float dZ) { + + float timeLeft = this.particleMaxAge - (this.particleAge + interp); + + if(timeLeft < 40) { + this.particleAlpha = timeLeft / 40F; + } else { + this.particleAlpha = 1F; + } + + tess.setColorRGBA_F(this.particleRed, this.particleGreen, this.particleBlue, this.particleAlpha); + tess.setNormal(0.0F, 1.0F, 0.0F); + + if(this.onGround) { + float pX = (float) (this.prevPosX + (this.posX - this.prevPosX) * (double) interp - interpPosX); + float pY = (float) (this.prevPosY + (this.posY - this.prevPosY) * (double) interp - interpPosY); + float pZ = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - interpPosZ); + + Vec3NT vec = new Vec3NT(particleScale, 0, particleScale).rotateAroundYDeg(this.rotationPitch); + + tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMaxV()); + vec.rotateAroundYDeg(90); + tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMinV()); + vec.rotateAroundYDeg(90); + tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMinV()); + vec.rotateAroundYDeg(90); + tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMaxV()); + } else { + renderParticleRotated(tess, interp, sX, sY, sZ, dX, dZ, this.particleScale); + } + } +} diff --git a/src/main/java/com/hbm/particle/ParticleBlackPowderSmoke.java b/src/main/java/com/hbm/particle/ParticleBlackPowderSmoke.java new file mode 100644 index 000000000..9469bac57 --- /dev/null +++ b/src/main/java/com/hbm/particle/ParticleBlackPowderSmoke.java @@ -0,0 +1,78 @@ +package com.hbm.particle; + +import java.awt.Color; + +import com.hbm.main.ModEventHandlerClient; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +@SideOnly(Side.CLIENT) +public class ParticleBlackPowderSmoke extends EntityFXRotating { + + public float hue; + + public ParticleBlackPowderSmoke(World world, double x, double y, double z, float scale) { + super(world, x, y, z); + particleIcon = ModEventHandlerClient.particleBase; + this.particleMaxAge = 30 + rand.nextInt(15); + this.particleScale = scale * 0.9F + rand.nextFloat() * 0.2F; + + this.particleGravity = 0F; + + this.hue = 20F + rand.nextFloat() * 20F; + Color color = Color.getHSBColor(hue / 255F, 1F, 1F); + this.particleRed = color.getRed() / 255F; + this.particleGreen = color.getGreen() / 255F; + this.particleBlue = color.getBlue() / 255F; + + this.noClip = true; + } + + @Override + public void onUpdate() { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + + this.particleAge++; + + if(this.particleAge >= this.particleMaxAge) { + this.setDead(); + } + + this.motionY -= particleGravity; + this.prevRotationPitch = this.rotationPitch; + + float ageScaled = (float) this.particleAge / (float) this.particleMaxAge; + this.rotationPitch += (1 - ageScaled) * 2 * ((this.getEntityId() % 2) - 0.5); + + this.motionX *= 0.65D; + this.motionY *= 0.65D; + this.motionZ *= 0.65D; + + this.moveEntity(this.motionX, this.motionY, this.motionZ); + } + + @Override + public void renderParticle(Tessellator tess, float interp, float sX, float sY, float sZ, float dX, float dZ) { + + double ageScaled = (double) (this.particleAge + interp) / (double) this.particleMaxAge; + + Color color = Color.getHSBColor(hue / 255F, Math.max(1F - (float) ageScaled * 4F, 0), MathHelper.clamp_float(1.25F - (float) ageScaled * 2F, 0.7F, 1F)); + this.particleRed = color.getRed() / 255F; + this.particleGreen = color.getGreen() / 255F; + this.particleBlue = color.getBlue() / 255F; + + this.particleAlpha = (float) Math.pow(1 - Math.min(ageScaled, 1), 0.25); + + tess.setColorRGBA_F(this.particleRed, this.particleGreen, this.particleBlue, this.particleAlpha * 0.25F); + tess.setNormal(0.0F, 1.0F, 0.0F); + + double scale = (0.25 + ageScaled + (this.particleAge + interp) * 0.025) * this.particleScale; + renderParticleRotated(tess, interp, sX, sY, sZ, dX, dZ, scale); + } +} diff --git a/src/main/java/com/hbm/particle/ParticleBlackPowderSpark.java b/src/main/java/com/hbm/particle/ParticleBlackPowderSpark.java new file mode 100644 index 000000000..7c0e9ea22 --- /dev/null +++ b/src/main/java/com/hbm/particle/ParticleBlackPowderSpark.java @@ -0,0 +1,51 @@ +package com.hbm.particle; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.particle.EntityFX; +import net.minecraft.world.World; + +@SideOnly(Side.CLIENT) +public class ParticleBlackPowderSpark extends EntityFX { + + public ParticleBlackPowderSpark(World world, double x, double y, double z, double mX, double mY, double mZ) { + super(world, x, y, z, mX, mY, mZ); + + this.motionX = mX; + this.motionY = mY; + this.motionZ = mZ; + + float f = this.rand.nextFloat() * 0.1F + 0.2F; + this.particleRed = f + 0.7F; + this.particleGreen = f + 0.5F; + this.particleBlue = f; + this.setParticleTextureIndex(0); + this.setSize(0.02F, 0.02F); + this.particleScale *= this.rand.nextFloat() * 0.6F + 0.5F; + this.particleMaxAge = 15 + this.rand.nextInt(5); + + this.particleGravity = 0.01F; + } + + @Override + public void onUpdate() { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + this.motionY -= particleGravity; + this.moveEntity(this.motionX, this.motionY, this.motionZ); + this.motionX *= 0.95D; + this.motionY *= 0.95D; + this.motionZ *= 0.95D; + + if(this.particleMaxAge-- <= 0) { + this.setDead(); + } + } + + @Override + @SideOnly(Side.CLIENT) + public int getBrightnessForRender(float interp) { + return 15728880; + } +} diff --git a/src/main/java/com/hbm/particle/ParticleExplosionSmall.java b/src/main/java/com/hbm/particle/ParticleExplosionSmall.java new file mode 100644 index 000000000..18c7158bd --- /dev/null +++ b/src/main/java/com/hbm/particle/ParticleExplosionSmall.java @@ -0,0 +1,80 @@ +package com.hbm.particle; + +import java.awt.Color; + +import com.hbm.main.ModEventHandlerClient; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +@SideOnly(Side.CLIENT) +public class ParticleExplosionSmall extends EntityFXRotating { + + public float hue; + + public ParticleExplosionSmall(World world, double x, double y, double z, float scale, float speedMult) { + super(world, x, y, z); + particleIcon = ModEventHandlerClient.particleBase; + this.particleMaxAge = 25 + rand.nextInt(10); + this.particleScale = scale * 0.9F + rand.nextFloat() * 0.2F; + + this.motionX = world.rand.nextGaussian() * speedMult; + this.motionZ = world.rand.nextGaussian() * speedMult; + + this.particleGravity = rand.nextFloat() * -0.01F; + + this.hue = 20F + rand.nextFloat() * 20F; + Color color = Color.getHSBColor(hue / 255F, 1F, 1F); + this.particleRed = color.getRed() / 255F; + this.particleGreen = color.getGreen() / 255F; + this.particleBlue = color.getBlue() / 255F; + + this.noClip = true; + } + + @Override + public void onUpdate() { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + + this.particleAge++; + + if(this.particleAge >= this.particleMaxAge) { + this.setDead(); + } + + this.motionY -= particleGravity; + this.prevRotationPitch = this.rotationPitch; + + float ageScaled = (float) this.particleAge / (float) this.particleMaxAge; + this.rotationPitch += (1 - ageScaled) * 5 * ((this.getEntityId() % 2) - 0.5); + + this.motionX *= 0.65D; + this.motionZ *= 0.65D; + + this.moveEntity(this.motionX, this.motionY, this.motionZ); + } + + @Override + public void renderParticle(Tessellator tess, float interp, float sX, float sY, float sZ, float dX, float dZ) { + + double ageScaled = (double) (this.particleAge + interp) / (double) this.particleMaxAge; + + Color color = Color.getHSBColor(hue / 255F, Math.max(1F - (float) ageScaled * 2F, 0), MathHelper.clamp_float(1.25F - (float) ageScaled * 2F, hue * 0.01F - 0.1F, 1F)); + this.particleRed = color.getRed() / 255F; + this.particleGreen = color.getGreen() / 255F; + this.particleBlue = color.getBlue() / 255F; + + this.particleAlpha = (float) Math.pow(1 - Math.min(ageScaled, 1), 0.25); + + tess.setColorRGBA_F(this.particleRed, this.particleGreen, this.particleBlue, this.particleAlpha * 0.5F); + tess.setNormal(0.0F, 1.0F, 0.0F); + + double scale = (0.25 + 1 - Math.pow(1 - ageScaled, 4) + (this.particleAge + interp) * 0.02) * this.particleScale; + renderParticleRotated(tess, interp, sX, sY, sZ, dX, dZ, scale); + } +} diff --git a/src/main/java/com/hbm/particle/ParticleFlamethrower.java b/src/main/java/com/hbm/particle/ParticleFlamethrower.java new file mode 100644 index 000000000..636ef82a9 --- /dev/null +++ b/src/main/java/com/hbm/particle/ParticleFlamethrower.java @@ -0,0 +1,80 @@ +package com.hbm.particle; + +import java.awt.Color; + +import com.hbm.main.ModEventHandlerClient; +import com.hbm.particle.helper.FlameCreator; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.World; + +@SideOnly(Side.CLIENT) +public class ParticleFlamethrower extends EntityFXRotating { + + public ParticleFlamethrower(World world, double x, double y, double z, int type) { + super(world, x, y, z); + particleIcon = ModEventHandlerClient.particleBase; + this.particleMaxAge = 20 + rand.nextInt(10); + this.particleScale = 0.5F; + + this.motionX = world.rand.nextGaussian() * 0.02; + this.motionZ = world.rand.nextGaussian() * 0.02; + + float initialColor = 15F + rand.nextFloat() * 25F; + + if(type == FlameCreator.META_BALEFIRE) initialColor = 65F + rand.nextFloat() * 35F; + if(type == FlameCreator.META_DIGAMMA) initialColor = 0F - rand.nextFloat() * 15F; + + Color color = Color.getHSBColor(initialColor / 255F, 1F, 1F); + this.particleRed = color.getRed() / 255F; + this.particleGreen = color.getGreen() / 255F; + this.particleBlue = color.getBlue() / 255F; + } + + @Override + public void onUpdate() { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + + this.particleAge++; + + if(this.particleAge >= this.particleMaxAge) { + this.setDead(); + } + + this.motionX *= 0.91D; + this.motionY *= 0.91D; + this.motionZ *= 0.91D; + + this.motionY += 0.01D; + this.prevRotationPitch = this.rotationPitch; + this.rotationPitch += 30 * ((this.getEntityId() % 2) - 0.5); + + this.moveEntity(this.motionX, this.motionY, this.motionZ); + } + + @Override + public void renderParticle(Tessellator tess, float interp, float sX, float sY, float sZ, float dX, float dZ) { + + double ageScaled = (double) this.particleAge / (double) this.particleMaxAge; + + this.particleAlpha = (float) Math.pow(1 - Math.min(ageScaled, 1), 0.5); + float add = 0.75F - (float) ageScaled; + + tess.setColorRGBA_F(this.particleRed + add, this.particleGreen + add, this.particleBlue + add, this.particleAlpha * 0.5F); + tess.setNormal(0.0F, 1.0F, 0.0F); + tess.setBrightness(240); + + double scale = (ageScaled * 1.25 + 0.25) * particleScale; + renderParticleRotated(tess, interp, sX, sY, sZ, dX, dZ, scale); + } + + @Override + @SideOnly(Side.CLIENT) + public int getBrightnessForRender(float p_70070_1_) { + return 15728880; + } +} diff --git a/src/main/java/com/hbm/particle/ParticleGiblet.java b/src/main/java/com/hbm/particle/ParticleGiblet.java index c09a00799..a5fdd3439 100644 --- a/src/main/java/com/hbm/particle/ParticleGiblet.java +++ b/src/main/java/com/hbm/particle/ParticleGiblet.java @@ -9,10 +9,12 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; +import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; @@ -66,6 +68,7 @@ public class ParticleGiblet extends EntityFX { GL11.glPushMatrix(); GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_BLEND); this.theRenderEngine.bindTexture(texture); /* use this instead of EntityFX.interpPosN since interpPosN isn't set up correctly for the current tick for layer 3 particles */ @@ -79,9 +82,17 @@ public class ParticleGiblet extends EntityFX { float f12 = (float) (this.prevPosY + (this.posY - this.prevPosY) * (double) interp - dY); float f13 = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - dZ); + double pX = prevPosX + (posX - prevPosX) * interp; + double pY = prevPosY + (posY - prevPosY) * interp; + double pZ = prevPosZ + (posZ - prevPosZ) * interp; + int brightness = worldObj.getLightBrightnessForSkyBlocks(MathHelper.floor_double(pX), MathHelper.floor_double(pY), MathHelper.floor_double(pZ), 0); + int lX = brightness % 65536; + int lY = brightness / 65536; + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)lX / 1.0F, (float)lY / 1.0F); + tess.startDrawingQuads(); tess.setNormal(0.0F, 1.0F, 0.0F); - tess.setBrightness(240); + //tess.setBrightness(240); tess.setColorRGBA_F(this.particleRed, this.particleGreen, this.particleBlue, this.particleAlpha); tess.addVertexWithUV((double) (f11 - x * f10 - tx * f10), (double) (f12 - y * f10), (double) (f13 - z * f10 - tz * f10), (double) 0, (double) 0); tess.addVertexWithUV((double) (f11 - x * f10 + tx * f10), (double) (f12 + y * f10), (double) (f13 - z * f10 + tz * f10), (double) 0, (double) 1); diff --git a/src/main/java/com/hbm/particle/ParticleLargeFlame.java b/src/main/java/com/hbm/particle/ParticleLargeFlame.java deleted file mode 100644 index 38e96e04b..000000000 --- a/src/main/java/com/hbm/particle/ParticleLargeFlame.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.hbm.particle; - -import net.minecraft.client.particle.EntityFX; -import net.minecraft.world.World; - -//TODO: everything -public class ParticleLargeFlame extends EntityFX { - - protected ParticleLargeFlame(World world, double x, double y, double z) { - super(world, x, y, z); - } -} diff --git a/src/main/java/com/hbm/particle/ParticleMukeCloud.java b/src/main/java/com/hbm/particle/ParticleMukeCloud.java index b9b479b2a..e265396ea 100644 --- a/src/main/java/com/hbm/particle/ParticleMukeCloud.java +++ b/src/main/java/com/hbm/particle/ParticleMukeCloud.java @@ -54,27 +54,29 @@ public class ParticleMukeCloud extends EntityFX { return 3; } - public void onUpdate() { - - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; + public void onUpdate() { + + this.noClip = this.particleAge <= 2; - if (this.particleAge++ >= this.particleMaxAge - 2) { - this.setDead(); - } + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; - this.motionY -= 0.04D * (double)this.particleGravity; - this.moveEntity(this.motionX, this.motionY, this.motionZ); - this.motionX *= friction; - this.motionY *= friction; - this.motionZ *= friction; + if(this.particleAge++ >= this.particleMaxAge - 2) { + this.setDead(); + } - if (this.onGround) { - this.motionX *= 0.7D; - this.motionZ *= 0.7D; - } - } + this.motionY -= 0.04D * (double) this.particleGravity; + this.moveEntity(this.motionX, this.motionY, this.motionZ); + this.motionX *= friction; + this.motionY *= friction; + this.motionZ *= friction; + + if(this.onGround) { + this.motionX *= 0.7D; + this.motionZ *= 0.7D; + } + } public void renderParticle(Tessellator tess, float interp, float x, float y, float z, float tx, float tz) { diff --git a/src/main/java/com/hbm/particle/ParticlePlasmaBlast.java b/src/main/java/com/hbm/particle/ParticlePlasmaBlast.java index 18430e811..8f449ef14 100644 --- a/src/main/java/com/hbm/particle/ParticlePlasmaBlast.java +++ b/src/main/java/com/hbm/particle/ParticlePlasmaBlast.java @@ -7,6 +7,7 @@ import com.hbm.lib.RefStrings; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureManager; @@ -76,17 +77,18 @@ public class ParticlePlasmaBlast extends EntityFX { tess.setColorRGBA_F(this.particleRed, this.particleGreen, this.particleBlue, this.particleAlpha); - tess.addVertexWithUV((double)(- 1 * scale), (double)(- 0.25), (double)(- 1 * scale), 1, 1); - tess.addVertexWithUV((double)(- 1 * scale), (double)(- 0.25), (double)(+ 1 * scale), 1, 0); - tess.addVertexWithUV((double)(+ 1 * scale), (double)(- 0.25), (double)(+ 1 * scale), 0, 0); - tess.addVertexWithUV((double)(+ 1 * scale), (double)(- 0.25), (double)(- 1 * scale), 0, 1); + tess.addVertexWithUV((double)(- 1 * scale), 0, (double)(- 1 * scale), 1, 1); + tess.addVertexWithUV((double)(- 1 * scale), 0, (double)(+ 1 * scale), 1, 0); + tess.addVertexWithUV((double)(+ 1 * scale), 0, (double)(+ 1 * scale), 0, 0); + tess.addVertexWithUV((double)(+ 1 * scale), 0, (double)(- 1 * scale), 0, 1); tess.draw(); if(fog) GL11.glEnable(GL11.GL_FOG); GL11.glPolygonOffset(0.0F, 0.0F); - GL11.glEnable(GL11.GL_CULL_FACE); GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDepthMask(true); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); GL11.glPopMatrix(); } } diff --git a/src/main/java/com/hbm/particle/ParticleSkeleton.java b/src/main/java/com/hbm/particle/ParticleSkeleton.java new file mode 100644 index 000000000..a3eb3f4c9 --- /dev/null +++ b/src/main/java/com/hbm/particle/ParticleSkeleton.java @@ -0,0 +1,161 @@ +package com.hbm.particle; + +import org.lwjgl.opengl.GL11; + +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.particle.helper.SkeletonCreator.EnumSkeletonType; +import com.hbm.render.loader.HFRWavefrontObject; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraftforge.client.model.IModelCustom; + +@SideOnly(Side.CLIENT) +public class ParticleSkeleton extends EntityFX { + + public static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/particle/skeleton.png"); + public static final ResourceLocation texture_ext = new ResourceLocation(RefStrings.MODID + ":textures/particle/skoilet.png"); + public static final IModelCustom skeleton = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/effect/skeleton.obj"), false).asVBO(); + protected EnumSkeletonType type; + + private float momentumYaw; + private float momentumPitch; + private int initialDelay; + + private final TextureManager textureManager; + + public ParticleSkeleton(TextureManager textureManager, World world, double x, double y, double z, float r, float g, float b, EnumSkeletonType type) { + super(world, x, y, z); + this.textureManager = textureManager; + this.type = type; + + this.particleMaxAge = 1200 + rand.nextInt(20); + + this.particleRed = r; + this.particleGreen = g; + this.particleBlue = b; + this.particleGravity = 0.02F; + this.initialDelay = 20; + + this.momentumPitch = rand.nextFloat() * 5 * (rand.nextBoolean() ? 1 : -1); + this.momentumYaw = rand.nextFloat() * 5 * (rand.nextBoolean() ? 1 : -1); + } + + @Override + public void onUpdate() { + + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + this.prevRotationPitch = this.rotationPitch; + this.prevRotationYaw = this.rotationYaw; + + if(initialDelay-- > 0) return; + + if(initialDelay == -1) { + this.motionX = rand.nextGaussian() * 0.025; + this.motionZ = rand.nextGaussian() * 0.025; + } + + if(this.particleAge++ >= this.particleMaxAge) { + this.setDead(); + } + boolean wasOnGround = this.onGround; + + this.motionY -= this.particleGravity; + this.moveEntity(this.motionX, this.motionY, this.motionZ); + this.motionX *= 0.98D; + this.motionY *= 0.98D; + this.motionZ *= 0.98D; + + if(!this.onGround) { + this.rotationPitch += this.momentumPitch; + this.rotationYaw += this.momentumYaw; + } else { + this.motionX = 0; + this.motionY = 0; + this.motionZ = 0; + + if(!wasOnGround) { + MainRegistry.proxy.playSoundClient(posX, posY, posZ, "mob.skeleton.hurt", 0.25F, 0.8F + rand.nextFloat() * 0.4F); + } + } + } + + @Override + public int getFXLayer() { + return 3; + } + + @Override + public void renderParticle(Tessellator tess, float interp, float x, float y, float z, float tx, float tz) { + + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_BLEND); + GL11.glAlphaFunc(GL11.GL_GREATER, 0); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + RenderHelper.enableStandardItemLighting(); + + double pX = prevPosX + (posX - prevPosX) * interp; + double pY = prevPosY + (posY - prevPosY) * interp; + double pZ = prevPosZ + (posZ - prevPosZ) * interp; + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + double dX = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double)interp; + double dY = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double)interp; + double dZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double)interp; + + GL11.glTranslated(pX - dX, pY - dY, pZ - dZ); + + GL11.glRotated(this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * interp, 0, 1, 0); + GL11.glRotated(this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * interp, 1, 0, 0); + + float timeLeft = this.particleMaxAge - (this.particleAge + interp); + if(timeLeft < 40) { + this.particleAlpha = timeLeft / 40F; + } else { + this.particleAlpha = 1F; + } + + int brightness = worldObj.getLightBrightnessForSkyBlocks(MathHelper.floor_double(pX), MathHelper.floor_double(pY), MathHelper.floor_double(pZ), 0); + int lX = brightness % 65536; + int lY = brightness / 65536; + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)lX / 1.0F, (float)lY / 1.0F); + + GL11.glColor4f(particleRed, particleGreen, particleBlue, particleAlpha); + GL11.glRotated(-90, 0, 1, 0); + + switch(type) { + case SKULL: + this.textureManager.bindTexture(texture); + skeleton.renderPart("Skull"); break; + case TORSO: + this.textureManager.bindTexture(texture); + skeleton.renderPart("Torso"); break; + case LIMB: + this.textureManager.bindTexture(texture); + skeleton.renderPart("Limb"); break; + case SKULL_VILLAGER: + this.textureManager.bindTexture(texture_ext); + skeleton.renderPart("SkullVillager"); break; + } + + GL11.glColor4f(1F, 1F, 1F, 1F); + GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + GL11.glDisable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/particle/ParticleSpentCasing.java b/src/main/java/com/hbm/particle/ParticleSpentCasing.java index 59e6ae201..a21aad162 100644 --- a/src/main/java/com/hbm/particle/ParticleSpentCasing.java +++ b/src/main/java/com/hbm/particle/ParticleSpentCasing.java @@ -42,10 +42,8 @@ public class ParticleSpentCasing extends EntityFX { private boolean isSmoking; private float momentumPitch, momentumYaw; - private boolean onGroundPreviously = false; - private double maxHeight; - public ParticleSpentCasing(TextureManager textureManager, World world, double x, double y, double z, double mx, double my, double mz, float momentumPitch, float momentumYaw, SpentCasing config) { + public ParticleSpentCasing(TextureManager textureManager, World world, double x, double y, double z, double mx, double my, double mz, float momentumPitch, float momentumYaw, SpentCasing config, boolean smoking, int smokeLife, double smokeLift, int nodeLife) { super(world, x, y, z, 0, 0, 0); this.textureManager = textureManager; this.momentumPitch = momentumPitch; @@ -53,10 +51,11 @@ public class ParticleSpentCasing extends EntityFX { this.config = config; this.particleMaxAge = config.getMaxAge(); - this.isSmoking = rand.nextFloat() < config.getSmokeChance(); - this.maxSmokeGen = config.getSmokeDuration(); - this.smokeLift = config.getSmokeLift(); - this.nodeLife = config.getSmokeNodeLife(); + + this.isSmoking = smoking; + this.maxSmokeGen = smokeLife; + this.smokeLift = smokeLift; + this.nodeLife = nodeLife; this.prevPosX = x; this.prevPosY = y; @@ -66,9 +65,7 @@ public class ParticleSpentCasing extends EntityFX { this.motionY = my; this.motionZ = mz; - particleGravity = 8F; - - maxHeight = y; + particleGravity = 1F; } @Override @@ -78,24 +75,34 @@ public class ParticleSpentCasing extends EntityFX { @Override public void onUpdate() { - super.onUpdate(); + + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; - if(motionY > 0 && posY > maxHeight) - maxHeight = posY; + if(this.particleAge++ >= this.particleMaxAge) { + this.setDead(); + } - if(!onGroundPreviously && onGround) - tryPlayBounceSound(); + this.motionY -= 0.04D * (double) this.particleGravity; + double prevMotionY = this.motionY; + this.moveEntity(this.motionX, this.motionY, this.motionZ); + this.motionX *= 0.98D; + this.motionY *= 0.98D; + this.motionZ *= 0.98D; - if(!onGroundPreviously && onGround) { + if(this.onGround) { + this.motionX *= 0.7D; + this.motionZ *= 0.7D; + } + + if(onGround) { + this.onGround = false; + motionY = prevMotionY * -0.5; + this.rotationPitch = 0; + //momentumPitch = (float) rand.nextGaussian() * config.getBouncePitch(); + //momentumYaw = (float) rand.nextGaussian() * config.getBounceYaw(); - onGroundPreviously = true; - motionY = Math.log10(maxHeight - posY + 2); - momentumPitch = (float) rand.nextGaussian() * config.getBouncePitch(); - momentumYaw = (float) rand.nextGaussian() * config.getBounceYaw(); - maxHeight = posY; - - } else if(onGroundPreviously && !onGround) { - onGroundPreviously = false; } if(particleAge > maxSmokeGen && !smokeNodes.isEmpty()) @@ -193,8 +200,6 @@ public class ParticleSpentCasing extends EntityFX { GL11.glPushMatrix(); GL11.glTranslated(pX - dX, pY - dY - this.height / 4, pZ - dZ); - //GL11.glScalef(dScale, dScale, dScale); - //GL11.glScalef(config.getScaleX(), config.getScaleY(), config.getScaleZ()); if(!smokeNodes.isEmpty()) { tessellator.startDrawingQuads(); @@ -271,24 +276,15 @@ public class ParticleSpentCasing extends EntityFX { @Override @SideOnly(Side.CLIENT) public int getBrightnessForRender(float p_70070_1_) { - int i = MathHelper.floor_double(this.posX); - int j = MathHelper.floor_double(this.posZ); + int x = MathHelper.floor_double(this.posX); + int z = MathHelper.floor_double(this.posZ); - if(this.worldObj.blockExists(i, 0, j)) { + if(this.worldObj.blockExists(x, 0, z)) { double d0 = (this.boundingBox.maxY - this.boundingBox.minY) * 0.66D; - int k = MathHelper.floor_double(this.posY - (double) this.yOffset + d0); - return this.worldObj.getLightBrightnessForSkyBlocks(i, k, j, 0); + int y = MathHelper.floor_double(this.posY - (double) this.yOffset + d0); + return this.worldObj.getLightBrightnessForSkyBlocks(x, y, z, 0); } else { return 0; - } - } - - private void tryPlayBounceSound() { - - String sound = config.getSound(); - - if(sound != null && !sound.isEmpty()) { - worldObj.playSoundAtEntity(this, sound, 2, 1); } } } \ No newline at end of file diff --git a/src/main/java/com/hbm/particle/SpentCasing.java b/src/main/java/com/hbm/particle/SpentCasing.java index 200f12893..13f79ef89 100644 --- a/src/main/java/com/hbm/particle/SpentCasing.java +++ b/src/main/java/com/hbm/particle/SpentCasing.java @@ -9,6 +9,7 @@ import java.util.HashMap; public class SpentCasing implements Cloneable { public static final int COLOR_CASE_BRASS = 0xEBC35E; + public static final int COLOR_CASE_EQUESTRIAN = 0x957BA0; public static final int COLOR_CASE_12GA = 0x757575; public static final int COLOR_CASE_4GA = 0xD8D8D8; public static final int COLOR_CASE_44 = 0x3E3E3E; @@ -32,17 +33,13 @@ public class SpentCasing implements Cloneable { } } - private String registryName; + private String registryName = "CHANGEME"; private float scaleX = 1F; private float scaleY = 1F; private float scaleZ = 1F; private int[] colors; private CasingType type; private String bounceSound; - private float smokeChance; - private int smokeDuration; - private double smokeLift; - private int smokeNodeLife; private float bounceYaw = 0F; private float bouncePitch = 0F; private int maxAge = 240; @@ -83,13 +80,7 @@ public class SpentCasing implements Cloneable { return this; } - public SpentCasing setupSmoke(float chance, double lift, int duration, int nodeLife) { - this.smokeChance = chance; - this.smokeDuration = duration; - this.smokeLift = lift; - this.smokeNodeLife = nodeLife; - return this; - } + @Deprecated public SpentCasing setupSmoke(float chance, double lift, int duration, int nodeLife) { return this; } public static SpentCasing fromName(String name) { return casingMap.get(name); @@ -113,13 +104,9 @@ public class SpentCasing implements Cloneable { public int[] getColors() { return this.colors; } public CasingType getType() { return this.type; } public String getSound() { return this.bounceSound; } - public float getSmokeChance() { return this.smokeChance; } public float getBounceYaw() { return this.bounceYaw; } public float getBouncePitch() { return this.bouncePitch; } public int getMaxAge() { return this.maxAge; } - public int getSmokeDuration() { return this.smokeDuration; } - public double getSmokeLift() { return this.smokeLift; } - public int getSmokeNodeLife() { return this.smokeNodeLife; } @Override public SpentCasing clone() { diff --git a/src/main/java/com/hbm/particle/helper/AshesCreator.java b/src/main/java/com/hbm/particle/helper/AshesCreator.java new file mode 100644 index 000000000..56a36acc5 --- /dev/null +++ b/src/main/java/com/hbm/particle/helper/AshesCreator.java @@ -0,0 +1,54 @@ +package com.hbm.particle.helper; + +import java.util.Random; + +import com.hbm.main.ClientProxy; +import com.hbm.particle.ParticleAshes; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.particle.EntityFlameFX; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class AshesCreator implements IParticleCreator { + + public static void composeEffect(World world, Entity toPulverize, int ashesCount, float ashesScale) { + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "ashes"); + data.setInteger("entityID", toPulverize.getEntityId()); + data.setInteger("ashesCount", ashesCount); + data.setFloat("ashesScale", ashesScale); + IParticleCreator.sendPacket(world, toPulverize.posX, toPulverize.posY, toPulverize.posZ, 100, data); + } + + @Override + @SideOnly(Side.CLIENT) + public void makeParticle(World world, EntityPlayer player, TextureManager texman, Random rand, double x, double y, double z, NBTTagCompound data) { + + int entityID = data.getInteger("entityID"); + Entity entity = world.getEntityByID(entityID); + if(entity == null) return; + + ClientProxy.vanish(entityID); + + int amount = data.getInteger("ashesCount"); + float scale = data.getFloat("ashesScale"); + + for(int i = 0; i < amount; i++) { + ParticleAshes particle = new ParticleAshes(world, + entity.posX + (entity.width + scale * 2) * (rand.nextDouble() - 0.5), + entity.posY + entity.height * rand.nextDouble(), + entity.posZ + (entity.width + scale * 2) * (rand.nextDouble() - 0.5), + scale); + Minecraft.getMinecraft().effectRenderer.addEffect(particle); + EntityFlameFX flame = new EntityFlameFX(world, particle.posX, particle.posY, particle.posZ, 0.0, 0.0, 0.0); + Minecraft.getMinecraft().effectRenderer.addEffect(flame); + } + } +} diff --git a/src/main/java/com/hbm/particle/helper/BlackPowderCreator.java b/src/main/java/com/hbm/particle/helper/BlackPowderCreator.java new file mode 100644 index 000000000..6705449f7 --- /dev/null +++ b/src/main/java/com/hbm/particle/helper/BlackPowderCreator.java @@ -0,0 +1,67 @@ +package com.hbm.particle.helper; + +import java.util.Random; + +import com.hbm.particle.ParticleBlackPowderSmoke; +import com.hbm.particle.ParticleBlackPowderSpark; +import com.hbm.util.Vec3NT; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class BlackPowderCreator implements IParticleCreator { + + public static void composeEffect(World world, double x, double y, double z, double headingX, double headingY, double headingZ, int cloudCount, float cloudScale, float cloudSpeedMult, int sparkCount, float sparkSpeedMult) { + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "blackPowder"); + data.setInteger("cloudCount", cloudCount); + data.setFloat("cloudScale", cloudScale); + data.setFloat("cloudSpeedMult", cloudSpeedMult); + data.setInteger("sparkCount", sparkCount); + data.setFloat("sparkSpeedMult", sparkSpeedMult); + data.setDouble("hX", headingX); + data.setDouble("hY", headingY); + data.setDouble("hZ", headingZ); + IParticleCreator.sendPacket(world, x, y, z, 200, data); + } + + @Override + @SideOnly(Side.CLIENT) + public void makeParticle(World world, EntityPlayer player, TextureManager texman, Random rand, double x, double y, double z, NBTTagCompound data) { + + double headingX = data.getDouble("hX"); + double headingY = data.getDouble("hY"); + double headingZ = data.getDouble("hZ"); + int cloudCount = data.getInteger("cloudCount"); + float cloudScale = data.getFloat("cloudScale"); + float cloudSpeedMult = data.getFloat("cloudSpeedMult"); + int sparkCount = data.getInteger("sparkCount"); + float sparkSpeedMult = data.getFloat("sparkSpeedMult"); + + Vec3NT heading = new Vec3NT(headingX, headingY, headingZ).normalizeSelf(); + + for(int i = 0; i < cloudCount; i++) { + ParticleBlackPowderSmoke particle = new ParticleBlackPowderSmoke(world, x, y, z, cloudScale); + double speedMult = 0.85 + rand.nextDouble() * 0.3; + particle.motionX = heading.xCoord * cloudSpeedMult * speedMult + rand.nextGaussian() * 0.05; + particle.motionY = heading.yCoord * cloudSpeedMult * speedMult + rand.nextGaussian() * 0.05; + particle.motionZ = heading.zCoord * cloudSpeedMult * speedMult + rand.nextGaussian() * 0.05; + Minecraft.getMinecraft().effectRenderer.addEffect(particle); + } + + for(int i = 0; i < sparkCount; i++) { + double speedMult = 0.85 + rand.nextDouble() * 0.3; + ParticleBlackPowderSpark particle = new ParticleBlackPowderSpark(world, x, y, z, + heading.xCoord * sparkSpeedMult * speedMult + rand.nextGaussian() * 0.02, + heading.yCoord * sparkSpeedMult * speedMult + rand.nextGaussian() * 0.02, + heading.zCoord * sparkSpeedMult * speedMult + rand.nextGaussian() * 0.02); + Minecraft.getMinecraft().effectRenderer.addEffect(particle); + } + } +} diff --git a/src/main/java/com/hbm/particle/helper/CasingCreator.java b/src/main/java/com/hbm/particle/helper/CasingCreator.java new file mode 100644 index 000000000..967f6a381 --- /dev/null +++ b/src/main/java/com/hbm/particle/helper/CasingCreator.java @@ -0,0 +1,83 @@ +package com.hbm.particle.helper; + +import java.util.Random; + +import com.hbm.particle.ParticleSpentCasing; +import com.hbm.particle.SpentCasing; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class CasingCreator implements IParticleCreator { + + /** Casing without smoke */ + public static void composeEffect(World world, EntityLivingBase player, double frontOffset, double heightOffset, double sideOffset, double frontMotion, double heightMotion, double sideMotion, double motionVariance, String casing) { + composeEffect(world, player, frontOffset, heightOffset, sideOffset, frontMotion, heightMotion, sideMotion, motionVariance, casing, false, 0, 0, 0); + } + + public static void composeEffect(World world, EntityLivingBase player, double frontOffset, double heightOffset, double sideOffset, double frontMotion, double heightMotion, double sideMotion, double motionVariance, String casing, boolean smoking, int smokeLife, double smokeLift, int nodeLife) { + + if(player.isSneaking()) heightOffset -= 0.075F; + + Vec3 offset = Vec3.createVectorHelper(sideOffset, heightOffset, frontOffset); + offset.rotateAroundX(-player.rotationPitch / 180F * (float) Math.PI); + offset.rotateAroundY(-player.rotationYaw / 180F * (float) Math.PI); + + double x = player.posX + offset.xCoord; + double y = player.posY + player.getEyeHeight() + offset.yCoord; + double z = player.posZ + offset.zCoord; + + Vec3 motion = Vec3.createVectorHelper(sideMotion, heightMotion, frontMotion); + motion.rotateAroundX(-player.rotationPitch / 180F * (float) Math.PI); + motion.rotateAroundY(-player.rotationYaw / 180F * (float) Math.PI); + + double mX = player.motionX + motion.xCoord + player.getRNG().nextGaussian() * motionVariance; + double mY = player.motionY + motion.yCoord + player.getRNG().nextGaussian() * motionVariance; + double mZ = player.motionZ + motion.zCoord + player.getRNG().nextGaussian() * motionVariance; + + if(player instanceof EntityPlayer && ((EntityPlayer) player).capabilities.isFlying) mY -= 0.04D; + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "casingNT"); + data.setDouble("mX", mX); + data.setDouble("mY", mY); + data.setDouble("mZ", mZ); + data.setFloat("yaw", player.rotationYaw); + data.setFloat("pitch", player.rotationPitch); + data.setString("name", casing); + data.setBoolean("smoking", smoking); + data.setInteger("smokeLife", smokeLife); + data.setDouble("smokeLift", smokeLift); + data.setInteger("nodeLife", nodeLife); + + IParticleCreator.sendPacket(world, x, y, z, 50, data); + } + + @Override + @SideOnly(Side.CLIENT) + public void makeParticle(World world, EntityPlayer player, TextureManager texman, Random rand, double x, double y, double z, NBTTagCompound data) { + + String name = data.getString("name"); + SpentCasing casingConfig = SpentCasing.casingMap.get(name); + double mX = data.getDouble("mX"); + double mY = data.getDouble("mY"); + double mZ = data.getDouble("mZ"); + float yaw = data.getFloat("yaw"); + float pitch = data.getFloat("pitch"); + boolean smoking = data.getBoolean("smoking"); + int smokeLife = data.getInteger("smokeLife"); + double smokeLift = data.getDouble("smokeLift"); + int nodeLife = data.getInteger("nodeLife"); + ParticleSpentCasing casing = new ParticleSpentCasing(texman, world, x, y, z, mX, mY, mZ, 0, 0, casingConfig, smoking, smokeLife, smokeLift, nodeLife); + casing.prevRotationYaw = casing.rotationYaw = yaw; + casing.prevRotationPitch = casing.rotationPitch = pitch; + Minecraft.getMinecraft().effectRenderer.addEffect(casing); + } +} diff --git a/src/main/java/com/hbm/particle/helper/ExplosionSmallCreator.java b/src/main/java/com/hbm/particle/helper/ExplosionSmallCreator.java new file mode 100644 index 000000000..8c8862738 --- /dev/null +++ b/src/main/java/com/hbm/particle/helper/ExplosionSmallCreator.java @@ -0,0 +1,77 @@ +package com.hbm.particle.helper; + +import java.util.Random; + +import com.hbm.particle.ParticleExplosionSmall; + +import cpw.mods.fml.relauncher.ReflectionHelper; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.particle.EntityBlockDustFX; +import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class ExplosionSmallCreator implements IParticleCreator { + + public static final double speedOfSound = (17.15D) * 0.5; + + public static void composeEffect(World world, double x, double y, double z, int cloudCount, float cloudScale, float cloudSpeedMult) { + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "explosionSmall"); + data.setInteger("cloudCount", cloudCount); + data.setFloat("cloudScale", cloudScale); + data.setFloat("cloudSpeedMult", cloudSpeedMult); + data.setInteger("debris", 15); + IParticleCreator.sendPacket(world, x, y, z, 200, data); + } + + @Override + @SideOnly(Side.CLIENT) + public void makeParticle(World world, EntityPlayer player, TextureManager texman, Random rand, double x, double y, double z, NBTTagCompound data) { + + int cloudCount = data.getInteger("cloudCount"); + float cloudScale = data.getFloat("cloudScale"); + float cloudSpeedMult = data.getFloat("cloudSpeedMult"); + int debris = data.getInteger("debris"); + + float dist = (float) player.getDistance(x, y, z); + float soundRange = 200F; + + if(dist <= soundRange) { + String sound = dist <= soundRange * 0.4 ? "hbm:weapon.explosionSmallNear" : "hbm:weapon.explosionSmallFar"; + PositionedSoundRecord positionedsoundrecord = new PositionedSoundRecord(new ResourceLocation(sound), 100F, 0.9F + rand.nextFloat() * 0.2F, (float) x, (float) y, (float) z); + Minecraft.getMinecraft().getSoundHandler().playDelayedSound(positionedsoundrecord, (int) (dist / speedOfSound)); + } + + for(int i = 0; i < cloudCount; i++) { + ParticleExplosionSmall particle = new ParticleExplosionSmall(world, x, y, z, cloudScale, cloudSpeedMult); + Minecraft.getMinecraft().effectRenderer.addEffect(particle); + } + + Block b = Blocks.air; + int meta = 0; + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + b = world.getBlock((int) Math.floor(x) + dir.offsetX, (int) Math.floor(y) + dir.offsetY, (int) Math.floor(z) + dir.offsetZ); + meta = world.getBlockMetadata((int) Math.floor(x) + dir.offsetX, (int) Math.floor(y) + dir.offsetY, (int) Math.floor(z) + dir.offsetZ); + if(b != Blocks.air) break; + } + + if(b != Blocks.air) for(int i = 0; i < debris; i++) { + EntityBlockDustFX fx = new EntityBlockDustFX(world, x, y + 0.1, z, world.rand.nextGaussian() * 0.2, 0.5F + world.rand.nextDouble() * 0.7, world.rand.nextGaussian() * 0.2, b, meta); + fx.multipleParticleScaleBy(2); + ReflectionHelper.setPrivateValue(EntityFX.class, fx, 50 + rand.nextInt(20), "particleMaxAge", "field_70547_e"); + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + } + } +} diff --git a/src/main/java/com/hbm/particle/helper/FlameCreator.java b/src/main/java/com/hbm/particle/helper/FlameCreator.java new file mode 100644 index 000000000..d47fd0095 --- /dev/null +++ b/src/main/java/com/hbm/particle/helper/FlameCreator.java @@ -0,0 +1,45 @@ +package com.hbm.particle.helper; + +import java.util.Random; + +import com.hbm.main.MainRegistry; +import com.hbm.particle.ParticleFlamethrower; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class FlameCreator implements IParticleCreator { + + public static int META_FIRE = 0; + public static int META_BALEFIRE = 1; + public static int META_DIGAMMA = 2; + + public static void composeEffect(World world, double x, double y, double z, int meta) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "flamethrower"); + data.setInteger("meta", meta); + IParticleCreator.sendPacket(world, x, y, z, 50, data); + } + + public static void composeEffectClient(World world, double x, double y, double z, int meta) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "flamethrower"); + data.setInteger("meta", meta); + data.setDouble("posX", x); + data.setDouble("posY", y); + data.setDouble("posZ", z); + MainRegistry.proxy.effectNT(data); + } + + @Override + @SideOnly(Side.CLIENT) + public void makeParticle(World world, EntityPlayer player, TextureManager texman, Random rand, double x, double y, double z, NBTTagCompound data) { + ParticleFlamethrower particle = new ParticleFlamethrower(world, x, y, z, data.getInteger("meta")); + Minecraft.getMinecraft().effectRenderer.addEffect(particle); + } +} diff --git a/src/main/java/com/hbm/particle/helper/IParticleCreator.java b/src/main/java/com/hbm/particle/helper/IParticleCreator.java index 2dbae2da1..dce577ced 100644 --- a/src/main/java/com/hbm/particle/helper/IParticleCreator.java +++ b/src/main/java/com/hbm/particle/helper/IParticleCreator.java @@ -2,8 +2,8 @@ package com.hbm.particle.helper; import java.util.Random; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -13,6 +13,13 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +/** + * Does two cool things: + *
- requires no more additions to ClientProxy which is already bloated, full of other stuff and cumbersome to work with + *
- being a separate class, we can get as messy as we want without affecting other particles, so effects can overall have more logic behind them without turning into a big ugly clump + * @author hbm + * + */ public interface IParticleCreator { @SideOnly(Side.CLIENT) diff --git a/src/main/java/com/hbm/particle/helper/ParticleCreators.java b/src/main/java/com/hbm/particle/helper/ParticleCreators.java new file mode 100644 index 000000000..2f23f88f4 --- /dev/null +++ b/src/main/java/com/hbm/particle/helper/ParticleCreators.java @@ -0,0 +1,18 @@ +package com.hbm.particle.helper; + +import java.util.HashMap; + +public class ParticleCreators { + + public static HashMap particleCreators = new HashMap(); + + static { + particleCreators.put("explosionLarge", new ExplosionCreator()); + particleCreators.put("casingNT", new CasingCreator()); + particleCreators.put("flamethrower", new FlameCreator()); + particleCreators.put("explosionSmall", new ExplosionSmallCreator()); + particleCreators.put("blackPowder", new BlackPowderCreator()); + particleCreators.put("ashes", new AshesCreator()); + particleCreators.put("skeleton", new SkeletonCreator()); + } +} diff --git a/src/main/java/com/hbm/particle/helper/SkeletonCreator.java b/src/main/java/com/hbm/particle/helper/SkeletonCreator.java new file mode 100644 index 000000000..48ee29761 --- /dev/null +++ b/src/main/java/com/hbm/particle/helper/SkeletonCreator.java @@ -0,0 +1,171 @@ +package com.hbm.particle.helper; + +import java.util.HashMap; +import java.util.Random; +import java.util.function.Function; + +import com.hbm.entity.mob.EntityDummy; +import com.hbm.main.ClientProxy; +import com.hbm.particle.ParticleSkeleton; +import com.hbm.util.Vec3NT; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityClientPlayerMP; +import net.minecraft.client.entity.EntityOtherPlayerMP; +import net.minecraft.client.entity.EntityPlayerSP; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.monster.EntityPigZombie; +import net.minecraft.entity.monster.EntitySkeleton; +import net.minecraft.entity.monster.EntityWitch; +import net.minecraft.entity.monster.EntityZombie; +import net.minecraft.entity.passive.EntityVillager; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class SkeletonCreator implements IParticleCreator { + + public static HashMap> skullanizer = new HashMap(); + + public static void composeEffect(World world, Entity toSkeletonize, float brightness) { + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "skeleton"); + data.setInteger("entityID", toSkeletonize.getEntityId()); + data.setFloat("brightness", brightness); + IParticleCreator.sendPacket(world, toSkeletonize.posX, toSkeletonize.posY, toSkeletonize.posZ, 100, data); + } + + @Override + @SideOnly(Side.CLIENT) + public void makeParticle(World world, EntityPlayer player, TextureManager texman, Random rand, double x, double y, double z, NBTTagCompound data) { + + if(skullanizer.isEmpty()) init(); + + int entityID = data.getInteger("entityID"); + Entity entity = world.getEntityByID(entityID); + if(!(entity instanceof EntityLivingBase)) return; + EntityLivingBase living = (EntityLivingBase) entity; + + ClientProxy.vanish(entityID); + + float brightness = data.getFloat("brightness"); + + Function bonealizer = skullanizer.get(entity.getClass().getSimpleName()); + + if(bonealizer != null) { + BoneDefinition[] bones = bonealizer.apply(living); + for(BoneDefinition bone : bones) { + ParticleSkeleton skeleton = new ParticleSkeleton(Minecraft.getMinecraft().getTextureManager(), world, bone.x, bone.y, bone.z, brightness, brightness, brightness, bone.type); + skeleton.prevRotationYaw = skeleton.rotationYaw = bone.yaw; + skeleton.prevRotationPitch = skeleton.rotationPitch = bone.pitch; + Minecraft.getMinecraft().effectRenderer.addEffect(skeleton); + } + } + } + + public static class BoneDefinition { + public EnumSkeletonType type; + public float yaw; + public float pitch; + public double x; + public double y; + public double z; + + public BoneDefinition(EnumSkeletonType type, float yaw, float pitch, double x, double y, double z) { + this.type = type; + this.yaw = yaw; + this.pitch = pitch; + this.x = x; + this.y = y; + this.z = z; + } + } + + public static enum EnumSkeletonType { + SKULL, TORSO, LIMB, SKULL_VILLAGER + } + + public static Function BONES_BIPED = (entity) -> { + Vec3NT leftarm = new Vec3NT(0.375, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + Vec3NT leftleg = new Vec3NT(0.125, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + return new BoneDefinition[] { + new BoneDefinition(EnumSkeletonType.SKULL, -entity.rotationYawHead, entity.rotationPitch, entity.posX, entity.posY + 1.75, entity.posZ), + new BoneDefinition(EnumSkeletonType.TORSO, -entity.renderYawOffset, 0, entity.posX, entity.posY + 1.125, entity.posZ), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftarm.xCoord, entity.posY + 1.125, entity.posZ + leftarm.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftarm.xCoord, entity.posY + 1.125, entity.posZ - leftarm.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.375, entity.posZ + leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.375, entity.posZ - leftleg.zCoord), + }; + }; + + public static Function BONES_ZOMBIE = (entity) -> { + Vec3NT leftarm = new Vec3NT(0.375, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + Vec3NT forward = new Vec3NT(0, 0, 0.25).rotateAroundYDeg(-entity.renderYawOffset); + Vec3NT leftleg = new Vec3NT(0.125, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + return new BoneDefinition[] { + new BoneDefinition(EnumSkeletonType.SKULL, -entity.rotationYawHead, entity.rotationPitch, entity.posX, entity.posY + 1.75, entity.posZ), + new BoneDefinition(EnumSkeletonType.TORSO, -entity.renderYawOffset, 0, entity.posX, entity.posY + 1.125, entity.posZ), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, -90, entity.posX + leftarm.xCoord + forward.xCoord, entity.posY + 1.375, entity.posZ + leftarm.zCoord + forward.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, -90, entity.posX - leftarm.xCoord + forward.xCoord, entity.posY + 1.375, entity.posZ - leftarm.zCoord + forward.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.375, entity.posZ + leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.375, entity.posZ - leftleg.zCoord), + }; + }; + + public static Function BONES_VILLAGER = (entity) -> { + Vec3NT leftarm = new Vec3NT(0.375, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + Vec3NT forward = new Vec3NT(0, 0, 0.25).rotateAroundYDeg(-entity.renderYawOffset); + Vec3NT leftleg = new Vec3NT(0.125, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + return new BoneDefinition[] { + new BoneDefinition(EnumSkeletonType.SKULL_VILLAGER, -entity.rotationYawHead, entity.rotationPitch, entity.posX, entity.posY + 1.6875, entity.posZ), + new BoneDefinition(EnumSkeletonType.TORSO, -entity.renderYawOffset, 0, entity.posX, entity.posY + 1, entity.posZ), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, -45, entity.posX + leftarm.xCoord + forward.xCoord, entity.posY + 1.125, entity.posZ + leftarm.zCoord + forward.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, -45, entity.posX - leftarm.xCoord + forward.xCoord, entity.posY + 1.125, entity.posZ - leftarm.zCoord + forward.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.375, entity.posZ + leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.375, entity.posZ - leftleg.zCoord), + }; + }; + + public static Function BONES_DUMMY = (entity) -> { + Vec3NT leftarm = new Vec3NT(0.375, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + Vec3NT leftleg = new Vec3NT(0.125, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + return new BoneDefinition[] { + new BoneDefinition(EnumSkeletonType.SKULL, -entity.rotationYawHead, entity.rotationPitch, entity.posX, entity.posY + 1.75, entity.posZ), + new BoneDefinition(EnumSkeletonType.TORSO, -entity.renderYawOffset, 0, entity.posX, entity.posY + 1.125, entity.posZ), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftarm.xCoord, entity.posY + 1.125, entity.posZ + leftarm.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftarm.xCoord, entity.posY + 1.125, entity.posZ - leftarm.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.375, entity.posZ + leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.375, entity.posZ - leftleg.zCoord), + }; + }; + + public static void init() { + skullanizer.put(EntityOtherPlayerMP.class.getSimpleName(), BONES_BIPED); + skullanizer.put(EntityClientPlayerMP.class.getSimpleName(), BONES_BIPED); + skullanizer.put(EntityPlayerSP.class.getSimpleName(), BONES_BIPED); + + skullanizer.put(EntityZombie.class.getSimpleName(), BONES_ZOMBIE); + skullanizer.put(EntitySkeleton.class.getSimpleName(), BONES_ZOMBIE); + skullanizer.put(EntityPigZombie.class.getSimpleName(), BONES_ZOMBIE); + + skullanizer.put(EntityVillager.class.getSimpleName(), BONES_VILLAGER); + skullanizer.put(EntityWitch.class.getSimpleName(), BONES_VILLAGER); + + skullanizer.put(EntityDummy.class.getSimpleName(), BONES_DUMMY); + + //techguns compat, for some reason + //not alwayss accurate because of variable arm position, but better than nothing + skullanizer.put("ArmySoldier", BONES_ZOMBIE); + skullanizer.put("PsychoSteve", BONES_ZOMBIE); + skullanizer.put("SkeletonSoldier", BONES_ZOMBIE); + skullanizer.put("ZombieFarmer", BONES_ZOMBIE); + skullanizer.put("ZombieMiner", BONES_ZOMBIE); + skullanizer.put("ZombiePigmanSoldier", BONES_ZOMBIE); + skullanizer.put("ZombieSoldier", BONES_ZOMBIE); + } +} diff --git a/src/main/java/com/hbm/particle/psys/engine/EventHandlerParticleEngine.java b/src/main/java/com/hbm/particle/psys/engine/EventHandlerParticleEngine.java index 17c189f19..30b798e35 100644 --- a/src/main/java/com/hbm/particle/psys/engine/EventHandlerParticleEngine.java +++ b/src/main/java/com/hbm/particle/psys/engine/EventHandlerParticleEngine.java @@ -21,7 +21,7 @@ public class EventHandlerParticleEngine { @SubscribeEvent public void onRenderWorldLast(RenderWorldLastEvent event) { - float interp = event.partialTicks; + //float interp = event.partialTicks; } @SubscribeEvent diff --git a/src/main/java/com/hbm/qmaw/GuiQMAW.java b/src/main/java/com/hbm/qmaw/GuiQMAW.java new file mode 100644 index 000000000..b579a846e --- /dev/null +++ b/src/main/java/com/hbm/qmaw/GuiQMAW.java @@ -0,0 +1,5 @@ +package com.hbm.qmaw; + +public class GuiQMAW { + +} diff --git a/src/main/java/com/hbm/qmaw/IManualElement.java b/src/main/java/com/hbm/qmaw/IManualElement.java new file mode 100644 index 000000000..e981ad87a --- /dev/null +++ b/src/main/java/com/hbm/qmaw/IManualElement.java @@ -0,0 +1,9 @@ +package com.hbm.qmaw; + +public interface IManualElement { + + public int getWidth(); + public int getHeight(); + public void render(boolean isMouseOver, int mouseX, int mouseY); + public void onClick(); +} diff --git a/src/main/java/com/hbm/qmaw/QMAWLoader.java b/src/main/java/com/hbm/qmaw/QMAWLoader.java new file mode 100644 index 000000000..710511a4b --- /dev/null +++ b/src/main/java/com/hbm/qmaw/QMAWLoader.java @@ -0,0 +1,160 @@ +package com.hbm.qmaw; + +import java.io.File; +import java.io.FileReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.HashSet; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; + +import com.google.gson.Gson; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.hbm.interfaces.NotableComments; +import com.hbm.main.MainRegistry; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.FileResourcePack; +import net.minecraft.client.resources.FolderResourcePack; +import net.minecraft.client.resources.IResourceManager; +import net.minecraft.client.resources.IResourceManagerReloadListener; +import net.minecraft.client.resources.IResourcePack; +import net.minecraft.client.resources.ResourcePackRepository; + +@NotableComments +public class QMAWLoader implements IResourceManagerReloadListener { + + public static final HashSet registeredModFiles = new HashSet(); + public static final Gson gson = new Gson(); + public static final JsonParser parser = new JsonParser(); + public static HashMap qmaw = new HashMap(); + + @Override + public void onResourceManagerReload(IResourceManager resMan) { + long timestamp = System.currentTimeMillis(); + MainRegistry.logger.info("[QMAW] Reloading manual..."); + init(); + MainRegistry.logger.info("[QMAW] Loaded " + qmaw.size() + " manual entries! (" + (System.currentTimeMillis() - timestamp) + "ms)"); + } + + /** For the like 2 people who might consider making an NTM addon and want to include manual pages */ + public static void registerModFileURL(File file) { + registeredModFiles.add(file); + } + + /** Searches the asset folder for QMAW format JSON files and adds entries based on that */ + public static void init() { + + //the mod's file, assuming the mod is a file (not the case in a dev env, fuck!) + //no fucking null check, if this fails then the entire game will sink along with the ship + registerModFileURL(new File(QMAWLoader.class.getProtectionDomain().getCodeSource().getLocation().getPath())); // i am going to shit myself + + qmaw.clear(); + agonyEngine(); + } + + /** "digital equivalent to holywater" yielded few results on google, if only i had the answer i would drown this entire class in it */ + public static void agonyEngine() { + + for(File modFile : registeredModFiles) dissectZip(modFile); + + File devEnvManualFolder = new File(Minecraft.getMinecraft().mcDataDir.getAbsolutePath().replace("/eclipse/.", "") + "/src/main/resources/assets/hbm/manual"); + if(devEnvManualFolder.exists() && devEnvManualFolder.isDirectory()) { + MainRegistry.logger.info("[QMAW] Exploring " + devEnvManualFolder.getAbsolutePath()); + dissectManualFolder(devEnvManualFolder); + } + + ResourcePackRepository repo = Minecraft.getMinecraft().getResourcePackRepository(); + + for(Object o : repo.getRepositoryEntries()) { + ResourcePackRepository.Entry entry = (ResourcePackRepository.Entry) o; + IResourcePack pack = entry.getResourcePack(); + + logPackAttempt(pack.getPackName()); + + if(pack instanceof FileResourcePack) { + dissectZip(((FileResourcePack) pack).resourcePackFile); + } + + if(pack instanceof FolderResourcePack) { + dissectFolder(((FolderResourcePack) pack).resourcePackFile); + } + } + } + + public static void logPackAttempt(String name) { MainRegistry.logger.info("[QMAW] Dissecting resource " + name); } + public static void logFoundManual(String name) { MainRegistry.logger.info("[QMAW] Found manual " + name); } + + /** You put your white gloves on, you get your hand in there, and then you iterate OVER THE ENTIRE FUCKING ZIP until we find things we deem usable */ + public static void dissectZip(File zipFile) { + + if(zipFile == null) { + MainRegistry.logger.info("[QMAW] Pack file does not exist!"); + return; + } + + ZipFile zip = null; + + try { + zip = new ZipFile(zipFile); + Enumeration enumerator = zip.entries(); + + while(enumerator.hasMoreElements()) { + ZipEntry entry = enumerator.nextElement(); + String name = entry.getName(); + if(name.startsWith("assets/hbm/manual/") && name.endsWith(".json")) { + InputStream fileStream = zip.getInputStream(entry); + InputStreamReader reader = new InputStreamReader(fileStream); + try { + JsonObject obj = (JsonObject) parser.parse(reader); + String manName = name.replace("assets/hbm/manual/", ""); + registerJson(manName, obj); + reader.close(); + logFoundManual(manName); + } catch(Exception ex) { + MainRegistry.logger.info("[QMAW] Error reading manual " + name + ": " + ex); + } + } + } + + } catch(Exception ex) { + MainRegistry.logger.info("[QMAW] Error dissecting zip " + zipFile.getName() + ": " + ex); + } finally { + try { + if(zip != null) zip.close(); + } catch(Exception ex) { } + } + } + + /** Opens a resource pack folder, skips to the manual folder, then tries to dissect that */ + public static void dissectFolder(File folder) { + File manualFolder = new File(folder, "/assets/manual"); + if(manualFolder.exists() && manualFolder.isDirectory()) dissectManualFolder(manualFolder); + } + + /** Anal bleeding */ + public static void dissectManualFolder(File folder) { + + File[] files = folder.listFiles(); + for(File file : files) { + String name = file.getName(); + if(file.isFile() && name.endsWith(".json")) { + try { + FileReader reader = new FileReader(file); + JsonObject obj = (JsonObject) parser.parse(reader); + registerJson(name, obj); + logFoundManual(name); + } catch(Exception ex) { + MainRegistry.logger.info("[QMAW] Error reading manual " + name + ": " + ex); + } + } + } + } + + public static void registerJson(String name, JsonObject json) { + //TBI + } +} diff --git a/src/main/java/com/hbm/qmaw/QuickManualAndWiki.java b/src/main/java/com/hbm/qmaw/QuickManualAndWiki.java new file mode 100644 index 000000000..7f206bad6 --- /dev/null +++ b/src/main/java/com/hbm/qmaw/QuickManualAndWiki.java @@ -0,0 +1,5 @@ +package com.hbm.qmaw; + +public class QuickManualAndWiki { + +} diff --git a/src/main/java/com/hbm/render/anim/AnimationLoader.java b/src/main/java/com/hbm/render/anim/AnimationLoader.java index 4ad0edb6a..686e13965 100644 --- a/src/main/java/com/hbm/render/anim/AnimationLoader.java +++ b/src/main/java/com/hbm/render/anim/AnimationLoader.java @@ -14,138 +14,198 @@ import com.google.gson.JsonArray; import net.minecraft.client.Minecraft; import net.minecraft.util.ResourceLocation; -import com.hbm.render.anim.BusAnimationKeyframe.InterpolationType; +import com.hbm.render.anim.BusAnimationKeyframe.IType; +import com.hbm.render.anim.BusAnimationKeyframe.EType; +import com.hbm.render.anim.BusAnimationKeyframe.HType; import com.hbm.render.anim.BusAnimationSequence.Dimension; public class AnimationLoader { - // The collada loader is great, but is not so backwards compatible and spews keyframes rather than doing interpolation - // Yeah - more animation loading is not so great, but 3mb for a single door opening is maybe overkill on a 50mb mod - // and even though the format supports multiple animations, no fucking animation software will actually export multiple animations, - // (even though blender even has a fucking toggle for it, but it doesn't _do_ anything) - // This instead just loads transformation data from a JSON file, turning it into a set of BusAnimations - // See ntm-animator.blend for a JSON format creation script + // The collada loader is great, but is not so backwards compatible and spews keyframes rather than doing interpolation + // Yeah - more animation loading is not so great, but 3mb for a single door opening is maybe overkill on a 50mb mod + // and even though the format supports multiple animations, no fucking animation software will actually export multiple animations, + // (even though blender even has a fucking toggle for it, but it doesn't _do_ anything) + // This instead just loads transformation data from a JSON file, turning it into a set of BusAnimations + // See ntm-animator.blend for a JSON format creation script - // "How do I make animations?" - // See ntm-animator.blend, it has the Colt/Python already setup and animated as an example, it'll generate JSON data that this can load + // "How do I make animations?" + // See ntm-animator.blend, it has the Colt/Python already setup and animated as an example, it'll generate JSON data that this can load public static final Gson gson = new Gson(); - public static HashMap load(ResourceLocation file) { - HashMap animations = new HashMap(); + public static HashMap load(ResourceLocation file) { + HashMap animations = new HashMap(); - InputStream in; - try { - in = Minecraft.getMinecraft().getResourceManager().getResource(file).getInputStream(); - } catch (IOException ex) { - return null; - } + InputStream in; + try { + in = Minecraft.getMinecraft().getResourceManager().getResource(file).getInputStream(); + } catch (IOException ex) { + return null; + } - InputStreamReader reader = new InputStreamReader(in); - JsonObject json = gson.fromJson(reader, JsonObject.class); + InputStreamReader reader = new InputStreamReader(in); + JsonObject json = gson.fromJson(reader, JsonObject.class); - // Load our model offsets, we'll place these into all the sequences that share the name of the offset - // The offsets are only required when sequences are played for an object, which is why we don't globally offset! The obj rendering handles the non-animated case fine - // Effectively, this removes double translation AND ensures that rotations occur around the individual object origin, rather than the weapon origin - HashMap offsets = new HashMap(); - for (Map.Entry root : json.getAsJsonObject("offset").entrySet()) { - double[] offset = new double[3]; + // Load our model offsets, we'll place these into all the sequences that share the name of the offset + // The offsets are only required when sequences are played for an object, which is why we don't globally offset! The obj rendering handles the non-animated case fine + // Effectively, this removes double translation AND ensures that rotations occur around the individual object origin, rather than the weapon origin + HashMap offsets = new HashMap(); + for(Map.Entry root : json.getAsJsonObject("offset").entrySet()) { + JsonArray array = root.getValue().getAsJsonArray(); - for (int i = 0; i < 3; i++) { - offset[i] = root.getValue().getAsJsonArray().get(i).getAsDouble(); - } + double[] offset = new double[3]; + for(int i = 0; i < 3; i++) { + offset[i] = array.get(i).getAsDouble(); + } - offsets.put(root.getKey(), offset); - } + offsets.put(root.getKey(), offset); + } + + // Rotation modes, swizzled into our local space. YZX in blender becomes XYZ due to: + // * rotation order reversed in blender (XYZ -> ZYX) + // * dimensions Y and Z are swapped in blender (ZYX -> YZX) + HashMap rotModes = new HashMap(); + if(json.has("rotmode")) { + for(Map.Entry root : json.getAsJsonObject("rotmode").entrySet()) { + String mode = root.getValue().getAsString(); + + double[] rotMode = new double[3]; + rotMode[0] = getRot(mode.charAt(2)); + rotMode[1] = getRot(mode.charAt(0)); + rotMode[2] = getRot(mode.charAt(1)); + } + } - // Top level parsing, this is for the animation name as set in Blender - for (Map.Entry root : json.getAsJsonObject("anim").entrySet()) { - BusAnimation animation = new BusAnimation(); + // Top level parsing, this is for the animation name as set in Blender + for(Map.Entry root : json.getAsJsonObject("anim").entrySet()) { + BusAnimation animation = new BusAnimation(); - // Loading the buses for this animation - JsonObject entryObject = root.getValue().getAsJsonObject(); - for (Map.Entry model : entryObject.entrySet()) { - String modelName = model.getKey(); - double[] offset = new double[3]; - if (offsets.containsKey(modelName)) offset = offsets.get(modelName); - animation.addBus(modelName, loadSequence(model.getValue().getAsJsonObject(), offset)); - } + // Loading the buses for this animation + JsonObject entryObject = root.getValue().getAsJsonObject(); + for(Map.Entry model : entryObject.entrySet()) { + String modelName = model.getKey(); + double[] offset = new double[3]; + double[] rotMode = new double[] { 0, 1, 2 }; + if(offsets.containsKey(modelName)) offset = offsets.get(modelName); + if(rotModes.containsKey(modelName)) rotMode = rotModes.get(modelName); + animation.addBus(modelName, loadSequence(model.getValue().getAsJsonObject(), offset, rotMode)); + } - animations.put(root.getKey(), animation); - } + animations.put(root.getKey(), animation); + } - return animations; - } + return animations; + } - private static BusAnimationSequence loadSequence(JsonObject json, double[] offset) { - BusAnimationSequence sequence = new BusAnimationSequence(); + private static double getRot(char value) { + switch(value) { + case 'X': return 0; + case 'Y': return 1; + case 'Z': return 2; + default: return 0; + } + } - // Location fcurves - if (json.has("location")) { - JsonObject location = json.getAsJsonObject("location"); + private static BusAnimationSequence loadSequence(JsonObject json, double[] offset, double[] rotMode) { + BusAnimationSequence sequence = new BusAnimationSequence(); - if (location.has("x")) { - addToSequence(sequence, Dimension.TX, location.getAsJsonArray("x")); - } - if (location.has("y")) { - addToSequence(sequence, Dimension.TY, location.getAsJsonArray("y")); - } - if (location.has("z")) { - addToSequence(sequence, Dimension.TZ, location.getAsJsonArray("z")); - } - } + // Location fcurves + if(json.has("location")) { + JsonObject location = json.getAsJsonObject("location"); - // Rotation fcurves, only euler at the moment - if (json.has("rotation_euler")) { - JsonObject rotation = json.getAsJsonObject("rotation_euler"); + if(location.has("x")) { + addToSequence(sequence, Dimension.TX, location.getAsJsonArray("x")); + } + if(location.has("y")) { + addToSequence(sequence, Dimension.TY, location.getAsJsonArray("y")); + } + if(location.has("z")) { + addToSequence(sequence, Dimension.TZ, location.getAsJsonArray("z")); + } + } - if (rotation.has("x")) { - addToSequence(sequence, Dimension.RX, rotation.getAsJsonArray("x")); - } - if (rotation.has("y")) { - addToSequence(sequence, Dimension.RY, rotation.getAsJsonArray("y")); - } - if (rotation.has("z")) { - addToSequence(sequence, Dimension.RZ, rotation.getAsJsonArray("z")); - } - } + // Rotation fcurves, only euler at the moment + if(json.has("rotation_euler")) { + JsonObject rotation = json.getAsJsonObject("rotation_euler"); - // Scale fcurves - if (json.has("scale")) { - JsonObject scale = json.getAsJsonObject("scale"); + if(rotation.has("x")) { + addToSequence(sequence, Dimension.RX, rotation.getAsJsonArray("x")); + } + if(rotation.has("y")) { + addToSequence(sequence, Dimension.RY, rotation.getAsJsonArray("y")); + } + if(rotation.has("z")) { + addToSequence(sequence, Dimension.RZ, rotation.getAsJsonArray("z")); + } + } - if (scale.has("x")) { - addToSequence(sequence, Dimension.SX, scale.getAsJsonArray("x")); - } - if (scale.has("y")) { - addToSequence(sequence, Dimension.SY, scale.getAsJsonArray("y")); - } - if (scale.has("z")) { - addToSequence(sequence, Dimension.SZ, scale.getAsJsonArray("z")); - } - } + // Scale fcurves + if(json.has("scale")) { + JsonObject scale = json.getAsJsonObject("scale"); - sequence.offset = offset; + if(scale.has("x")) { + addToSequence(sequence, Dimension.SX, scale.getAsJsonArray("x")); + } + if(scale.has("y")) { + addToSequence(sequence, Dimension.SY, scale.getAsJsonArray("y")); + } + if(scale.has("z")) { + addToSequence(sequence, Dimension.SZ, scale.getAsJsonArray("z")); + } + } - return sequence; - } + sequence.offset = offset; + sequence.rotMode = rotMode; - private static void addToSequence(BusAnimationSequence sequence, Dimension dimension, JsonArray array) { - for (JsonElement element : array) { - sequence.addKeyframe(dimension, loadKeyframe(element)); - } - } + return sequence; + } - private static BusAnimationKeyframe loadKeyframe(JsonElement element) { - JsonArray array = element.getAsJsonArray(); + private static void addToSequence(BusAnimationSequence sequence, Dimension dimension, JsonArray array) { + IType prevInterp = null; + for(JsonElement element : array) { + BusAnimationKeyframe keyframe = loadKeyframe(element, prevInterp); + prevInterp = keyframe.interpolationType; + sequence.addKeyframe(dimension, keyframe); + } + } - double value = array.get(0).getAsDouble(); - int duration = array.get(1).getAsInt(); - InterpolationType interpolation = array.size() >= 3 ? InterpolationType.valueOf(array.get(2).getAsString()) : InterpolationType.LINEAR; + private static BusAnimationKeyframe loadKeyframe(JsonElement element, IType prevInterp) { + JsonArray array = element.getAsJsonArray(); - return new BusAnimationKeyframe(value, duration, interpolation); - } + double value = array.get(0).getAsDouble(); + int duration = array.get(1).getAsInt(); + IType interpolation = array.size() >= 3 ? IType.valueOf(array.get(2).getAsString()) : IType.LINEAR; + EType easing = array.size() >= 4 ? EType.valueOf(array.get(3).getAsString()) : EType.AUTO; + + BusAnimationKeyframe keyframe = new BusAnimationKeyframe(value, duration, interpolation, easing); + + int i = 4; + + if(prevInterp == IType.BEZIER) { + keyframe.leftX = array.get(i++).getAsDouble(); + keyframe.leftY = array.get(i++).getAsDouble(); + keyframe.leftType = HType.valueOf(array.get(i++).getAsString()); + } + + if(interpolation == IType.LINEAR || interpolation == IType.CONSTANT) + return keyframe; + + if(interpolation == IType.BEZIER) { + keyframe.rightX = array.get(i++).getAsDouble(); + keyframe.rightY = array.get(i++).getAsDouble(); + keyframe.rightType = HType.valueOf(array.get(i++).getAsString()); + } + + if(interpolation == IType.ELASTIC) { + keyframe.amplitude = array.get(i++).getAsDouble(); + keyframe.period = array.get(i++).getAsDouble(); + } else if(interpolation == IType.BACK) { + keyframe.back = array.get(i++).getAsDouble(); + } + + return keyframe; + } } diff --git a/src/main/java/com/hbm/render/anim/BusAnimation.java b/src/main/java/com/hbm/render/anim/BusAnimation.java index f2cb95b80..0639aa71c 100644 --- a/src/main/java/com/hbm/render/anim/BusAnimation.java +++ b/src/main/java/com/hbm/render/anim/BusAnimation.java @@ -6,7 +6,7 @@ import java.util.Map.Entry; //a """simple""" implementation of an animation system //it's the first thing i came up with and i suppose it's relatively simple but //it's probably not since i suck at everything -//i could have jut used collada XML animations but where's the fun in that? +//i could have just used collada XML animations but where's the fun in that? public class BusAnimation { //"buses" with one S since it's not a vehicle diff --git a/src/main/java/com/hbm/render/anim/BusAnimationKeyframe.java b/src/main/java/com/hbm/render/anim/BusAnimationKeyframe.java index 6833652dd..988a3f552 100644 --- a/src/main/java/com/hbm/render/anim/BusAnimationKeyframe.java +++ b/src/main/java/com/hbm/render/anim/BusAnimationKeyframe.java @@ -2,24 +2,83 @@ package com.hbm.render.anim; //"pieces" that make up a bus public class BusAnimationKeyframe { - - //whether the next frame "snaps" to the intended value or has interpolation - //it's an enum so stuff like accelerated animations between just - //two frames could be implemented - public static enum InterpolationType { + + // whether the next frame "snaps" to the intended value or has interpolation + // it's an enum so stuff like accelerated animations between just + // two frames could be implemented + public static enum IType { + /** Teleport */ CONSTANT, - LINEAR + /** Linear interpolation */ + LINEAR, + /** "Sine wave up", quarter of a sine peak that goes from neutral to rising */ + SIN_UP, + /** "Sine wave down", quarter of a sine peak that goes from rising back to neutral */ + SIN_DOWN, + /** "Sine wave", first half of a sine peak, accelerating up and then decelerating, makes for smooth movement */ + SIN_FULL, + + // blender magic curves + BEZIER, + + // blender inertial + SINE, + QUAD, + CUBIC, + QUART, + QUINT, + EXPO, + CIRC, + + // blendor dynamic + BOUNCE, + ELASTIC, + BACK, + } + + // Easing + public static enum EType { + AUTO, + EASE_IN, + EASE_OUT, + EASE_IN_OUT, + } + + // Handle type + public static enum HType { + FREE, + ALIGNED, + VECTOR, + AUTO, + AUTO_CLAMPED, } public double value; - public InterpolationType interpolationType; + public IType interpolationType; + public EType easingType; public int duration; - - //this one can be used for "reset" type keyframes + + // bezier handles + public double leftX; + public double leftY; + public HType leftType; + public double rightX; + public double rightY; + public HType rightType; + + // elastics + public double amplitude; + public double period; + + // back (overshoot) + public double back; + + // this one can be used for "reset" type keyframes public BusAnimationKeyframe() { this.value = 0; this.duration = 1; - this.interpolationType = InterpolationType.LINEAR; + this.interpolationType = IType.LINEAR; + this.easingType = EType.AUTO; } public BusAnimationKeyframe(double value, int duration) { @@ -28,9 +87,519 @@ public class BusAnimationKeyframe { this.duration = duration; } - public BusAnimationKeyframe(double value, int duration, InterpolationType interpolation) { + public BusAnimationKeyframe(double value, int duration, IType interpolation) { this(value, duration); this.interpolationType = interpolation; } + public BusAnimationKeyframe(double value, int duration, IType interpolation, EType easing) { + this(value, duration, interpolation); + this.easingType = easing; + } + + public double interpolate(double startTime, double currentTime, BusAnimationKeyframe previous) { + if(previous == null) + previous = new BusAnimationKeyframe(); + + double a = value; + double b = previous.value; + double t = time(startTime, currentTime, duration); + + double begin = previous.value; + double change = value - previous.value; + double time = currentTime - startTime; + + // Constant value optimisation + if(Math.abs(previous.value - value) < 0.000001) return value; + + if(previous.interpolationType == IType.BEZIER) { + double v1x = startTime; + double v1y = previous.value; + double v2x = previous.rightX; + double v2y = previous.rightY; + + double v3x = leftX; + double v3y = leftY; + double v4x = startTime + duration; + double v4y = value; + + // correct beziers into non-looping fcurves + double h1x = v1x - v2x; + double h1y = v1y - v2y; + + double h2x = v4x - v3x; + double h2y = v4y - v3y; + + double len = v4x - v1x; + double len1 = Math.abs(h1x); + double len2 = Math.abs(h2x); + + if(len1 + len2 != 0) { + if(len1 > len) { + double fac = len / len1; + v2x = v1x - fac * h1x; + v2y = v1y - fac * h1y; + } + + if(len2 > len) { + double fac = len / len2; + v3x = v4x - fac * h2x; + v3y = v4y - fac * h2y; + } + } + + double curveT = findZero(currentTime, v1x, v2x, v3x, v4x); + return cubicBezier(v1y, v2y, v3y, v4y, curveT); + } else if(previous.interpolationType == IType.BACK) { + switch (previous.easingType) { + case EASE_IN: return BLI_easing_back_ease_in(time, begin, change, duration, previous.back); + case EASE_IN_OUT: return BLI_easing_back_ease_in_out(time, begin, change, duration, previous.back); + default: return BLI_easing_back_ease_out(time, begin, change, duration, previous.back); + } + } else if(previous.interpolationType == IType.BOUNCE) { + switch (previous.easingType) { + case EASE_IN: return BLI_easing_bounce_ease_in(time, begin, change, duration); + case EASE_IN_OUT: return BLI_easing_bounce_ease_in_out(time, begin, change, duration); + default: return BLI_easing_bounce_ease_out(time, begin, change, duration); + } + } else if(previous.interpolationType == IType.CIRC) { + switch (previous.easingType) { + case EASE_OUT: return BLI_easing_circ_ease_out(time, begin, change, duration); + case EASE_IN_OUT: return BLI_easing_circ_ease_in_out(time, begin, change, duration); + default: return BLI_easing_circ_ease_in(time, begin, change, duration); + } + } else if(previous.interpolationType == IType.CUBIC) { + switch (previous.easingType) { + case EASE_OUT: return BLI_easing_cubic_ease_out(time, begin, change, duration); + case EASE_IN_OUT: return BLI_easing_cubic_ease_in_out(time, begin, change, duration); + default: return BLI_easing_cubic_ease_in(time, begin, change, duration); + } + } else if(previous.interpolationType == IType.ELASTIC) { + switch (previous.easingType) { + case EASE_IN: return BLI_easing_elastic_ease_in(time, begin, change, duration, previous.amplitude, previous.period); + case EASE_IN_OUT: return BLI_easing_elastic_ease_in_out(time, begin, change, duration, previous.amplitude, previous.period); + default: return BLI_easing_elastic_ease_out(time, begin, change, duration, previous.amplitude, previous.period); + } + } else if(previous.interpolationType == IType.EXPO) { + switch (previous.easingType) { + case EASE_OUT: return BLI_easing_expo_ease_out(time, begin, change, duration); + case EASE_IN_OUT: return BLI_easing_expo_ease_in_out(time, begin, change, duration); + default: return BLI_easing_expo_ease_in(time, begin, change, duration); + } + } else if(previous.interpolationType == IType.QUAD) { + switch (previous.easingType) { + case EASE_OUT: return BLI_easing_quad_ease_out(time, begin, change, duration); + case EASE_IN_OUT: return BLI_easing_quad_ease_in_out(time, begin, change, duration); + default: return BLI_easing_quad_ease_in(time, begin, change, duration); + } + } else if(previous.interpolationType == IType.QUART) { + switch (previous.easingType) { + case EASE_OUT: return BLI_easing_quart_ease_out(time, begin, change, duration); + case EASE_IN_OUT: return BLI_easing_quart_ease_in_out(time, begin, change, duration); + default: return BLI_easing_quart_ease_in(time, begin, change, duration); + } + } else if(previous.interpolationType == IType.QUINT) { + switch (previous.easingType) { + case EASE_OUT: return BLI_easing_quint_ease_out(time, begin, change, duration); + case EASE_IN_OUT: return BLI_easing_quint_ease_in_out(time, begin, change, duration); + default: return BLI_easing_quint_ease_in(time, begin, change, duration); + } + } else if(previous.interpolationType == IType.SINE) { + switch (previous.easingType) { + case EASE_OUT: return BLI_easing_sine_ease_out(time, begin, change, duration); + case EASE_IN_OUT: return BLI_easing_sine_ease_in_out(time, begin, change, duration); + default: return BLI_easing_sine_ease_in(time, begin, change, duration); + } + } + + return (a - b) * t + b; + } + + private double sqrt3(double d) { + if(d > 0.000001) { + return Math.exp(Math.log(d) / 3.0); + } else if(d > -0.000001) { + return 0; + } else { + return -Math.exp(Math.log(-d) / 3.0); + } + } + + private double time(double start, double end, double duration) { + if(interpolationType == IType.SIN_UP) return -Math.sin(((end - start) / duration * Math.PI + Math.PI) / 2) + 1; + if(interpolationType == IType.SIN_DOWN) return Math.sin((end - start) / duration * Math.PI / 2); + if(interpolationType == IType.SIN_FULL) return (-Math.cos((end - start) / duration * Math.PI) + 1) / 2D; + return (end - start) / duration; + } + + // Blender bezier solvers, but rewritten (pain) + private double solveCubic(double c0, double c1, double c2, double c3) { + if(c3 > 0.000001) { + double a = c2 / c3; + double b = c1 / c3; + double c = c0 / c3; + a = a / 3; + + double p = b / 3 - a * a; + double q = (2 * a * a * a - a * b + c) / 2; + double d = q * q + p * p * p; + + if(d > 0.000001) { + double t = Math.sqrt(d); + return sqrt3(-q + t) + sqrt3(-q - t) - a; + } else if(d > -0.000001) { + double t = sqrt3(-q); + double result = 2 * t - a; + if(result < 0.000001 || result > 1.000001) { + result = -t - a; + } + return result; + } + + double phi = Math.acos(-q / Math.sqrt(-(p * p * p))); + double t = Math.sqrt(-p); + p = Math.cos(phi / 3); + q = Math.sqrt(3 - 3 * p * p); + double result = 2 * t * p - a; + if(result < 0.000001 || result > 1.000001) { + result = -t * (p + q) - a; + } + if(result < 0.000001 || result > 1.000001) { + result = -t * (p - q) - a; + } + return result; + } + + double a = c2; + double b = c1; + double c = c0; + + if(a > 0.000001) { + double p = b * b - 4 * a * c; + + if(p > 0.000001) { + p = Math.sqrt(p); + double result = (-b - p) / (2 * a); + if(result < 0.000001 || result > 1.000001) { + result = (-b + p) / (2 * a); + } + return result; + } else if(p > -0.000001) { + return -b / (2 * a); + } + } + + if(b > 0.000001) { + return -c / b; + } + + return 0; + } + + private double findZero(double t, double x1, double x2, double x3, double x4) { + double c0 = x1 - t; + double c1 = 3.0f * (x2 - x1); + double c2 = 3.0f * (x1 - 2.0f * x2 + x3); + double c3 = x4 - x1 + 3.0f * (x2 - x3); + + return solveCubic(c0, c1, c2, c3); + } + + private double cubicBezier(double y1, double y2, double y3, double y4, double t) { + double c0 = y1; + double c1 = 3.0f * (y2 - y1); + double c2 = 3.0f * (y1 - 2.0f * y2 + y3); + double c3 = y4 - y1 + 3.0f * (y2 - y3); + + return c0 + t * c1 + t * t * c2 + t * t * t * c3; + } + + /** + * EASING FUNCTIONS, taken directly from Blender `easing.c` + */ + + double BLI_easing_back_ease_in(double time, double begin, double change, double duration, double overshoot) { + time /= duration; + return change * time * time * ((overshoot + 1) * time - overshoot) + begin; + } + + double BLI_easing_back_ease_out(double time, double begin, double change, double duration, double overshoot) { + time = time / duration - 1; + return change * (time * time * ((overshoot + 1) * time + overshoot) + 1) + begin; + } + + double BLI_easing_back_ease_in_out(double time, double begin, double change, double duration, double overshoot) { + overshoot *= 1.525f; + if((time /= duration / 2) < 1.0f) { + return change / 2 * (time * time * ((overshoot + 1) * time - overshoot)) + begin; + } + time -= 2.0f; + return change / 2 * (time * time * ((overshoot + 1) * time + overshoot) + 2) + begin; + } + + double BLI_easing_bounce_ease_out(double time, double begin, double change, double duration) { + time /= duration; + if(time < (1 / 2.75f)) { + return change * (7.5625f * time * time) + begin; + } + if(time < (2 / 2.75f)) { + time -= (1.5f / 2.75f); + return change * ((7.5625f * time) * time + 0.75f) + begin; + } + if(time < (2.5f / 2.75f)) { + time -= (2.25f / 2.75f); + return change * ((7.5625f * time) * time + 0.9375f) + begin; + } + time -= (2.625f / 2.75f); + return change * ((7.5625f * time) * time + 0.984375f) + begin; + } + + double BLI_easing_bounce_ease_in(double time, double begin, double change, double duration) { + return change - BLI_easing_bounce_ease_out(duration - time, 0, change, duration) + begin; + } + + double BLI_easing_bounce_ease_in_out(double time, double begin, double change, double duration) { + if(time < duration / 2) { + return BLI_easing_bounce_ease_in(time * 2, 0, change, duration) * 0.5f + begin; + } + return BLI_easing_bounce_ease_out(time * 2 - duration, 0, change, duration) * 0.5f + change * 0.5f + begin; + } + + double BLI_easing_circ_ease_in(double time, double begin, double change, double duration) { + time /= duration; + return -change * (Math.sqrt(1 - time * time) - 1) + begin; + } + + double BLI_easing_circ_ease_out(double time, double begin, double change, double duration) { + time = time / duration - 1; + return change * Math.sqrt(1 - time * time) + begin; + } + + double BLI_easing_circ_ease_in_out(double time, double begin, double change, double duration) { + if((time /= duration / 2) < 1.0f) { + return -change / 2 * (Math.sqrt(1 - time * time) - 1) + begin; + } + time -= 2.0f; + return change / 2 * (Math.sqrt(1 - time * time) + 1) + begin; + } + + double BLI_easing_cubic_ease_in(double time, double begin, double change, double duration) { + time /= duration; + return change * time * time * time + begin; + } + + double BLI_easing_cubic_ease_out(double time, double begin, double change, double duration) { + time = time / duration - 1; + return change * (time * time * time + 1) + begin; + } + + double BLI_easing_cubic_ease_in_out(double time, double begin, double change, double duration) { + if((time /= duration / 2) < 1.0f) { + return change / 2 * time * time * time + begin; + } + time -= 2.0f; + return change / 2 * (time * time * time + 2) + begin; + } + + double elastic_blend(double time, double change, double duration, double amplitude, double s, double f) { + if(change != 0) { + /* + * Looks like a magic number, + * but this is a part of the sine curve we need to blend from + */ + double t = Math.abs(s); + if(amplitude != 0) { + f *= amplitude / Math.abs(change); + } else { + f = 0.0f; + } + + if(Math.abs(time * duration) < t) { + double l = Math.abs(time * duration) / t; + f = (f * l) + (1.0f - l); + } + } + + return f; + } + + double BLI_easing_elastic_ease_in(double time, double begin, double change, double duration, double amplitude, double period) { + double s; + double f = 1.0f; + + if(time == 0.0f) { + return begin; + } + + if((time /= duration) == 1.0f) { + return begin + change; + } + time -= 1.0f; + if(period == 0) { + period = duration * 0.3f; + } + if(amplitude == 0 || amplitude < Math.abs(change)) { + s = period / 4; + f = elastic_blend(time, change, duration, amplitude, s, f); + amplitude = change; + } else { + s = period / (2 * (double) Math.PI) * Math.asin(change / amplitude); + } + + return (-f * (amplitude * Math.pow(2, 10 * time) * Math.sin((time * duration - s) * (2 * (double) Math.PI) / period))) + begin; + } + + double BLI_easing_elastic_ease_out(double time, double begin, double change, double duration, double amplitude, double period) { + double s; + double f = 1.0f; + + if(time == 0.0f) { + return begin; + } + if((time /= duration) == 1.0f) { + return begin + change; + } + time = -time; + if(period == 0) { + period = duration * 0.3f; + } + if(amplitude == 0 || amplitude < Math.abs(change)) { + s = period / 4; + f = elastic_blend(time, change, duration, amplitude, s, f); + amplitude = change; + } else { + s = period / (2 * (double) Math.PI) * Math.asin(change / amplitude); + } + + return (f * (amplitude * Math.pow(2, 10 * time) * Math.sin((time * duration - s) * (2 * (double) Math.PI) / period))) + change + begin; + } + + double BLI_easing_elastic_ease_in_out(double time, double begin, double change, double duration, double amplitude, double period) { + double s; + double f = 1.0f; + + if(time == 0.0f) { + return begin; + } + if((time /= duration / 2) == 2.0f) { + return begin + change; + } + time -= 1.0f; + if(period == 0) { + period = duration * (0.3f * 1.5f); + } + if(amplitude == 0 || amplitude < Math.abs(change)) { + s = period / 4; + f = elastic_blend(time, change, duration, amplitude, s, f); + amplitude = change; + } else { + s = period / (2 * (double) Math.PI) * Math.asin(change / amplitude); + } + + if(time < 0.0f) { + f *= -0.5f; + return (f * (amplitude * Math.pow(2, 10 * time) * Math.sin((time * duration - s) * (2 * (double) Math.PI) / period))) + begin; + } + + time = -time; + f *= 0.5f; + return (f * (amplitude * Math.pow(2, 10 * time) * Math.sin((time * duration - s) * (2 * (double) Math.PI) / period))) + change + begin; + } + + static final double pow_min = 0.0009765625f; /* = 2^(-10) */ + static final double pow_scale = 1.0f / (1.0f - 0.0009765625f); + + double BLI_easing_expo_ease_in(double time, double begin, double change, double duration) { + if(time == 0.0) { + return begin; + } + return change * (Math.pow(2, 10 * (time / duration - 1)) - pow_min) * pow_scale + begin; + } + + double BLI_easing_expo_ease_out(double time, double begin, double change, double duration) { + if(time == 0.0) { + return begin; + } + return change * (1 - (Math.pow(2, -10 * time / duration) - pow_min) * pow_scale) + begin; + } + + double BLI_easing_expo_ease_in_out(double time, double begin, double change, double duration) { + double duration_half = duration / 2.0f; + double change_half = change / 2.0f; + if(time <= duration_half) { + return BLI_easing_expo_ease_in(time, begin, change_half, duration_half); + } + return BLI_easing_expo_ease_out(time - duration_half, begin + change_half, change_half, duration_half); + } + + double BLI_easing_linear_ease(double time, double begin, double change, double duration) { + return change * time / duration + begin; + } + + double BLI_easing_quad_ease_in(double time, double begin, double change, double duration) { + time /= duration; + return change * time * time + begin; + } + + double BLI_easing_quad_ease_out(double time, double begin, double change, double duration) { + time /= duration; + return -change * time * (time - 2) + begin; + } + + double BLI_easing_quad_ease_in_out(double time, double begin, double change, double duration) { + if((time /= duration / 2) < 1.0f) { + return change / 2 * time * time + begin; + } + time -= 1.0f; + return -change / 2 * (time * (time - 2) - 1) + begin; + } + + double BLI_easing_quart_ease_in(double time, double begin, double change, double duration) { + time /= duration; + return change * time * time * time * time + begin; + } + + double BLI_easing_quart_ease_out(double time, double begin, double change, double duration) { + time = time / duration - 1; + return -change * (time * time * time * time - 1) + begin; + } + + double BLI_easing_quart_ease_in_out(double time, double begin, double change, double duration) { + if((time /= duration / 2) < 1.0f) { + return change / 2 * time * time * time * time + begin; + } + time -= 2.0f; + return -change / 2 * (time * time * time * time - 2) + begin; + } + + double BLI_easing_quint_ease_in(double time, double begin, double change, double duration) { + time /= duration; + return change * time * time * time * time * time + begin; + } + + double BLI_easing_quint_ease_out(double time, double begin, double change, double duration) { + time = time / duration - 1; + return change * (time * time * time * time * time + 1) + begin; + } + + double BLI_easing_quint_ease_in_out(double time, double begin, double change, double duration) { + if((time /= duration / 2) < 1.0f) { + return change / 2 * time * time * time * time * time + begin; + } + time -= 2.0f; + return change / 2 * (time * time * time * time * time + 2) + begin; + } + + double BLI_easing_sine_ease_in(double time, double begin, double change, double duration) { + return -change * Math.cos(time / duration * (double) Math.PI / 2) + change + begin; + } + + double BLI_easing_sine_ease_out(double time, double begin, double change, double duration) { + return change * Math.sin(time / duration * (double) Math.PI / 2) + begin; + } + + double BLI_easing_sine_ease_in_out(double time, double begin, double change, double duration) { + return -change / 2 * (Math.cos((double) Math.PI * time / duration) - 1) + begin; + } + } diff --git a/src/main/java/com/hbm/render/anim/BusAnimationSequence.java b/src/main/java/com/hbm/render/anim/BusAnimationSequence.java index ea573fb96..1e0f7d061 100644 --- a/src/main/java/com/hbm/render/anim/BusAnimationSequence.java +++ b/src/main/java/com/hbm/render/anim/BusAnimationSequence.java @@ -3,7 +3,7 @@ package com.hbm.render.anim; import java.util.ArrayList; import java.util.List; -import com.hbm.render.anim.BusAnimationKeyframe.InterpolationType; +import com.hbm.render.anim.BusAnimationKeyframe.IType; //the actual bus, a sequence of keyframes with their own behavior and such public class BusAnimationSequence { @@ -26,10 +26,13 @@ public class BusAnimationSequence { public double[] offset = new double[3]; + // swizzle me timbers + public double[] rotMode = new double[] { 0, 1, 2 }; + public BusAnimationSequence() { // Initialise our keyframe storage, since it's multidimensional - for (int i = 0; i < 9; i++) { + for(int i = 0; i < 9; i++) { transformKeyframes.add(new ArrayList()); } } @@ -49,27 +52,28 @@ public class BusAnimationSequence { // Two helper methods for the old hard-coded animations - public BusAnimationSequence addKeyframePosition(double x, double y, double z, int duration) { - addKeyframe(Dimension.TX, new BusAnimationKeyframe(x, duration)); - addKeyframe(Dimension.TY, new BusAnimationKeyframe(y, duration)); - addKeyframe(Dimension.TZ, new BusAnimationKeyframe(z, duration)); - + public BusAnimationSequence addPos(double x, double y, double z, int duration) { + return addPos(x, y, z, duration, IType.LINEAR); + } + public BusAnimationSequence addPos(double x, double y, double z, int duration, IType type) { + addKeyframe(Dimension.TX, new BusAnimationKeyframe(x, duration, type)); + addKeyframe(Dimension.TY, new BusAnimationKeyframe(y, duration, type)); + addKeyframe(Dimension.TZ, new BusAnimationKeyframe(z, duration, type)); return this; } - public BusAnimationSequence addKeyframeRotation(double x, double y, double z, int duration) { + public BusAnimationSequence addRot(double x, double y, double z, int duration) { addKeyframe(Dimension.RX, new BusAnimationKeyframe(x, duration)); addKeyframe(Dimension.RY, new BusAnimationKeyframe(y, duration)); addKeyframe(Dimension.RZ, new BusAnimationKeyframe(z, duration)); - return this; } //all transformation data is absolute, additive transformations have not yet been implemented public double[] getTransformation(int millis) { - double[] transform = new double[12]; + double[] transform = new double[15]; - for (int i = 0; i < 9; i++) { + for(int i = 0; i < 9; i++) { List keyframes = transformKeyframes.get(i); BusAnimationKeyframe currentFrame = null; @@ -77,50 +81,50 @@ public class BusAnimationSequence { int startTime = 0; int endTime = 0; - for (BusAnimationKeyframe keyframe: keyframes) { + for(BusAnimationKeyframe keyframe : keyframes) { startTime = endTime; endTime += keyframe.duration; previousFrame = currentFrame; currentFrame = keyframe; - if (millis < endTime) break; + if(millis < endTime) break; } - if (currentFrame == null) { + if(currentFrame == null) { // Scale defaults to 1, others are 0 transform[i] = i >= 6 ? 1 : 0; continue; } - if (millis >= endTime) { + if(millis >= endTime) { transform[i] = currentFrame.value; continue; } - if (previousFrame != null && previousFrame.interpolationType == InterpolationType.CONSTANT) { + if(previousFrame != null && previousFrame.interpolationType == IType.CONSTANT) { transform[i] = previousFrame.value; continue; } - double a = currentFrame.value; - double b = previousFrame != null ? previousFrame.value : 0; - double t = (double)(millis - startTime) / (double)currentFrame.duration; - - transform[i] = (a - b) * t + b; + transform[i] = currentFrame.interpolate(startTime, millis, previousFrame); } transform[9] = offset[0]; transform[10] = offset[1]; transform[11] = offset[2]; + transform[12] = rotMode[0]; + transform[13] = rotMode[1]; + transform[14] = rotMode[2]; + return transform; } public int getTotalTime() { int highestTime = 0; - for (List keyframes: transformKeyframes) { + for(List keyframes : transformKeyframes) { int time = 0; - for (BusAnimationKeyframe frame: keyframes) { + for(BusAnimationKeyframe frame : keyframes) { time += frame.duration; } diff --git a/src/main/java/com/hbm/render/anim/HbmAnimations.java b/src/main/java/com/hbm/render/anim/HbmAnimations.java index 44fff33dc..e5cc8becd 100644 --- a/src/main/java/com/hbm/render/anim/HbmAnimations.java +++ b/src/main/java/com/hbm/render/anim/HbmAnimations.java @@ -15,19 +15,22 @@ public class HbmAnimations { //my approach adds 9 timers, one for every inventory slot. you can still //"trick" the system by putting a weapon into a different slot while an //animation is playing, though this will cancel the animation entirely. - public static final Animation[] hotbar = new Animation[9]; + public static final Animation[][] hotbar = new Animation[9][8]; //now with 8 parallel rails per slot! time to get railed! public static enum AnimType { - RELOAD, //animation for reloading the weapon - RELOAD_EMPTY, //animation for reloading from empty + RELOAD, //either a full reload or start of a reload + @Deprecated RELOAD_EMPTY, //same as reload, but the mag is completely empty RELOAD_CYCLE, //animation that plays for every individual round (for shotguns and similar single round loading weapons) RELOAD_END, //animation for transitioning from our RELOAD_CYCLE to idle CYCLE, //animation for every firing cycle CYCLE_EMPTY, //animation for the final shot in the magazine + CYCLE_DRY, //animation for trying to fire, but no round is available ALT_CYCLE, //animation for alt fire cycles SPINUP, //animation for actionstart SPINDOWN, //animation for actionend - EQUIP //animation for drawing the weapon + EQUIP, //animation for drawing the weapon + INSPECT, //animation for inspecting the weapon + JAMMED //animation for jammed weapons } // A NOTE ON SHOTGUN STYLE RELOADS @@ -58,8 +61,9 @@ public class HbmAnimations { this.holdLastFrame = holdLastFrame; } } - - public static Animation getRelevantAnim() { + + public static Animation getRelevantAnim() { return getRelevantAnim(0); } + public static Animation getRelevantAnim(int index) { EntityPlayer player = Minecraft.getMinecraft().thePlayer; int slot = player.inventory.currentItem; @@ -72,19 +76,20 @@ public class HbmAnimations { slot = Math.abs(slot) % 9; } - if(hotbar[slot] == null) + if(hotbar[slot][index] == null) return null; - if(hotbar[slot].key.equals(stack.getItem().getUnlocalizedName())) { - return hotbar[slot]; + if(hotbar[slot][index].key.equals(stack.getItem().getUnlocalizedName())) { + return hotbar[slot][index]; } return null; } - - public static double[] getRelevantTransformation(String bus) { + + public static double[] getRelevantTransformation(String bus) { return getRelevantTransformation(bus, 0); } + public static double[] getRelevantTransformation(String bus, int index) { - Animation anim = HbmAnimations.getRelevantAnim(); + Animation anim = HbmAnimations.getRelevantAnim(index); if(anim != null) { @@ -105,17 +110,20 @@ public class HbmAnimations { 0, 0, 0, // position 0, 0, 0, // rotation 1, 1, 1, // scale - 0, 0, 0 // offset + 0, 0, 0, // offset + 0, 1, 2, // XYZ order }; } - public static void applyRelevantTransformation(String bus) { - double[] transform = getRelevantTransformation(bus); + public static void applyRelevantTransformation(String bus) { applyRelevantTransformation(bus, 0); } + public static void applyRelevantTransformation(String bus, int index) { + double[] transform = getRelevantTransformation(bus, index); + int[] rot = new int[] { (int)transform[12], (int)transform[13], (int)transform[14] }; GL11.glTranslated(transform[0], transform[1], transform[2]); - GL11.glRotated(transform[3], 1, 0, 0); - GL11.glRotated(transform[4], 0, 1, 0); - GL11.glRotated(transform[5], 0, 0, 1); + GL11.glRotated(transform[3 + rot[0]], rot[0] == 0 ? 1 : 0, rot[0] == 1 ? 1 : 0, rot[0] == 2 ? 1 : 0); + GL11.glRotated(transform[3 + rot[1]], rot[1] == 0 ? 1 : 0, rot[1] == 1 ? 1 : 0, rot[1] == 2 ? 1 : 0); + GL11.glRotated(transform[3 + rot[2]], rot[2] == 0 ? 1 : 0, rot[2] == 1 ? 1 : 0, rot[2] == 2 ? 1 : 0); GL11.glTranslated(-transform[9], -transform[10], -transform[11]); GL11.glScaled(transform[6], transform[7], transform[8]); } diff --git a/src/main/java/com/hbm/render/block/RenderBlockMultipass.java b/src/main/java/com/hbm/render/block/RenderBlockMultipass.java index 181407f36..b4f567573 100644 --- a/src/main/java/com/hbm/render/block/RenderBlockMultipass.java +++ b/src/main/java/com/hbm/render/block/RenderBlockMultipass.java @@ -1,21 +1,13 @@ package com.hbm.render.block; -import java.awt.Color; - import org.lwjgl.opengl.GL11; import com.hbm.blocks.IBlockMultiPass; -import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.generic.BlockMotherOfAllOres; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ModItems; -import com.hbm.util.ColorUtil; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; -import net.minecraft.item.ItemStack; import net.minecraft.world.IBlockAccess; public class RenderBlockMultipass implements ISimpleBlockRenderingHandler { @@ -72,7 +64,7 @@ public class RenderBlockMultipass implements ISimpleBlockRenderingHandler { } /** terrible hack to make this shit work */ - if(block == ModBlocks.ore_random) { + /*if(block == ModBlocks.ore_random) { this.currentPass = 1; renderer.setOverrideBlockTexture(block.getIcon(0, metadata)); @@ -123,7 +115,7 @@ public class RenderBlockMultipass implements ISimpleBlockRenderingHandler { renderer.clearOverrideBlockTexture(); GL11.glColor3f(1F, 1F, 1F); - } + }*/ GL11.glTranslatef(0.5F, 0.5F, 0.5F); } diff --git a/src/main/java/com/hbm/render/block/RenderBoxDuct.java b/src/main/java/com/hbm/render/block/RenderBoxDuct.java index c8c8f8915..ccb2ab6dc 100644 --- a/src/main/java/com/hbm/render/block/RenderBoxDuct.java +++ b/src/main/java/com/hbm/render/block/RenderBoxDuct.java @@ -6,6 +6,7 @@ import com.hbm.blocks.network.FluidDuctBox; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.Library; +import com.hbm.render.util.RenderBlocksNT; import com.hbm.tileentity.network.TileEntityPipeBaseNT; import com.hbm.util.ColorUtil; @@ -60,6 +61,8 @@ public class RenderBoxDuct implements ISimpleBlockRenderingHandler { public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { FluidType type = Fluids.NONE; + renderer = RenderBlocksNT.INSTANCE.setWorld(world); + TileEntity te = world.getTileEntity(x, y, z); Tessellator tessellator = Tessellator.instance; tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); diff --git a/src/main/java/com/hbm/render/block/RenderHangingVine.java b/src/main/java/com/hbm/render/block/RenderHangingVine.java new file mode 100644 index 000000000..7f0aa0c48 --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderHangingVine.java @@ -0,0 +1,89 @@ +package com.hbm.render.block; + +import com.hbm.blocks.generic.BlockHangingVine; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; + +public class RenderHangingVine implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + Tessellator tess = Tessellator.instance; + int colorMult = block.colorMultiplier(world, x, y, z); + float r = (float) (colorMult >> 16 & 255) / 255.0F; + float g = (float) (colorMult >> 8 & 255) / 255.0F; + float b = (float) (colorMult & 255) / 255.0F; + + tess.setColorOpaque_F(r, g, b); + + BlockHangingVine vine = (BlockHangingVine) block; + + int brightness = block.getMixedBrightnessForBlock(world, x, y, z); + tess.setBrightness(brightness); + + IIcon icon = vine.getIcon(world, x, y, z, false); + renderCrossedSquares(icon, x, y, z, 1.0D); + + tess.setBrightness(240); + + icon = vine.getIcon(world, x, y, z, true); //glow pass + renderCrossedSquares(icon, x, y, z, 1.0D); + + return true; + } + + //fixed implementation of drawCrossedSquares + public void renderCrossedSquares(IIcon icon, double x, double y, double z, double height) { + Tessellator tess = Tessellator.instance; + + double minU = icon.getMinU(); + double minV = icon.getMinV(); + double maxU = icon.getMaxU(); + double maxV = icon.getMaxV(); + + double factor = 0.45D * height; + double minX = x + 0.5D - factor; + double maxX = x + 0.5D + factor; + double minZ = z + 0.5D - factor; + double maxZ = z + 0.5D + factor; + + tess.addVertexWithUV(minX, y, minZ, maxU, maxV); + tess.addVertexWithUV(minX, y + height, minZ, maxU, minV); + tess.addVertexWithUV(maxX, y + height, maxZ, minU, minV); + tess.addVertexWithUV(maxX, y, maxZ, minU, maxV); + + tess.addVertexWithUV(maxX, y, maxZ, maxU, maxV); + tess.addVertexWithUV(maxX, y + height, maxZ, maxU, minV); + tess.addVertexWithUV(minX, y + height, minZ, minU, minV); + tess.addVertexWithUV(minX, y, minZ, minU, maxV); + + tess.addVertexWithUV(maxX, y, minZ, maxU, maxV); + tess.addVertexWithUV(maxX, y + height, minZ, maxU, minV); + tess.addVertexWithUV(minX, y + height, maxZ, minU, minV); + tess.addVertexWithUV(minX, y, maxZ, minU, maxV); + + tess.addVertexWithUV(minX, y, maxZ, maxU, maxV); + tess.addVertexWithUV(minX, y + height, maxZ, maxU, minV); + tess.addVertexWithUV(maxX, y + height, minZ, minU, minV); + tess.addVertexWithUV(maxX, y, minZ, minU, maxV); + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return false; + } + + @Override + public int getRenderId() { + return BlockHangingVine.renderID; + } +} diff --git a/src/main/java/com/hbm/render/block/RenderRTTY.java b/src/main/java/com/hbm/render/block/RenderRTTY.java index 68b3af3ec..ba32ac59a 100644 --- a/src/main/java/com/hbm/render/block/RenderRTTY.java +++ b/src/main/java/com/hbm/render/block/RenderRTTY.java @@ -1,6 +1,7 @@ package com.hbm.render.block; import com.hbm.blocks.network.RadioTorchBase; +import com.hbm.interfaces.NotableComments; import com.hbm.main.ResourceManager; import com.hbm.render.util.ObjUtil; import com.hbm.tileentity.network.TileEntityRadioTorchBase; @@ -15,6 +16,7 @@ import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraftforge.client.model.obj.WavefrontObject; +@NotableComments public class RenderRTTY implements ISimpleBlockRenderingHandler { @Override diff --git a/src/main/java/com/hbm/render/block/RenderReeds.java b/src/main/java/com/hbm/render/block/RenderReeds.java index a237a79c8..a07a16a31 100644 --- a/src/main/java/com/hbm/render/block/RenderReeds.java +++ b/src/main/java/com/hbm/render/block/RenderReeds.java @@ -1,6 +1,7 @@ package com.hbm.render.block; import com.hbm.blocks.generic.BlockReeds; +import com.hbm.config.ClientConfig; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import net.minecraft.block.Block; @@ -27,10 +28,15 @@ public class RenderReeds implements ISimpleBlockRenderingHandler { tessellator.setColorOpaque_F(r * m, g * m, b * m); int depth = 0; - for(int i = y - 1; i > 0 ; i--) { - Block water = world.getBlock(x, i, z); - depth = y - i; - if(water != Blocks.water && water != Blocks.flowing_water) break; + + if(!ClientConfig.RENDER_REEDS.get()) { + depth = 1; + } else { + for(int i = y - 1; i > 0 ; i--) { + Block water = world.getBlock(x, i, z); + depth = y - i; + if(water != Blocks.water && water != Blocks.flowing_water) break; + } } BlockReeds reeds = (BlockReeds) block; diff --git a/src/main/java/com/hbm/render/block/RenderScaffoldBlock.java b/src/main/java/com/hbm/render/block/RenderScaffoldBlock.java index 69be9500e..0298b24ad 100644 --- a/src/main/java/com/hbm/render/block/RenderScaffoldBlock.java +++ b/src/main/java/com/hbm/render/block/RenderScaffoldBlock.java @@ -49,14 +49,31 @@ public class RenderScaffoldBlock implements ISimpleBlockRenderingHandler { iicon = renderer.overrideBlockTexture; } - float rotation = (float) -Math.PI; + float ox = x + 0.5F; + float oy = y; + float oz = z + 0.5F; - if((world.getBlockMetadata(x, y, z) & 8) == 0) - rotation = -90F / 180F * (float) Math.PI; + float rotation = (float) Math.PI * -0.5F; + float pitch = 0; - tessellator.addTranslation(x + 0.5F, y, z + 0.5F); - ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.scaffold, iicon, tessellator, rotation, true); - tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + int meta = world.getBlockMetadata(x, y, z); + + if(meta >= 12) { + pitch = (float) Math.PI * 0.5F; + rotation = (float) -Math.PI; + ox = x + 1.0F; + oy = y + 0.5F; + } else if(meta >= 8) { + rotation = (float) -Math.PI; + } else if(meta >= 4) { + pitch = (float) Math.PI * 0.5F; + oy = y + 0.5F; + oz = z; + } + + tessellator.addTranslation(ox, oy, oz); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.scaffold, iicon, tessellator, rotation, pitch, true); + tessellator.addTranslation(-ox, -oy, -oz); return true; } diff --git a/src/main/java/com/hbm/render/block/RenderSteelCorner.java b/src/main/java/com/hbm/render/block/RenderSteelCorner.java new file mode 100644 index 000000000..9867847cb --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderSteelCorner.java @@ -0,0 +1,94 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.generic.DecoBlock; +import com.hbm.render.util.RenderBlocksNT; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.IBlockAccess; + +public class RenderSteelCorner implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + Tessellator tessellator = Tessellator.instance; + GL11.glTranslatef(-0.5F, -0.5F, -0.5F); + + tessellator.startDrawingQuads(); + + + renderer.setRenderBounds(0D, 0D, 0.875D, 0.75D, 1D, 1D); + tessellator.setNormal(0F, 1F, 0F); renderer.renderFaceYPos(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(0F, -1F, 0F); renderer.renderFaceYNeg(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(-1F, 0F, 0F); renderer.renderFaceXNeg(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(0F, 0F, 1F); renderer.renderFaceZPos(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(0F, 0F, -1F); renderer.renderFaceZNeg(block, 0, 0, 0, block.getIcon(0, 0)); + + + renderer.setRenderBounds(0.75D, 0D, 0.75D, 1D, 1D, 1D); + tessellator.setNormal(0F, 1F, 0F); renderer.renderFaceYPos(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(0F, -1F, 0F); renderer.renderFaceYNeg(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(1F, 0F, 0F); renderer.renderFaceXPos(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(-1F, 0F, 0F); renderer.renderFaceXNeg(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(0F, 0F, 1F); renderer.renderFaceZPos(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(0F, 0F, -1F); renderer.renderFaceZNeg(block, 0, 0, 0, block.getIcon(0, 0)); + + renderer.setRenderBounds(0.875D, 0D, 0D, 1D, 1D, 0.75D); + tessellator.setNormal(0F, 1F, 0F); renderer.renderFaceYPos(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(0F, -1F, 0F); renderer.renderFaceYNeg(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(1F, 0F, 0F); renderer.renderFaceXPos(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(-1F, 0F, 0F); renderer.renderFaceXNeg(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(0F, 0F, -1F); renderer.renderFaceZNeg(block, 0, 0, 0, block.getIcon(0, 0)); + + tessellator.draw(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + Tessellator tessellator = Tessellator.instance; + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + int meta = world.getBlockMetadata(x, y, z); + + renderer = RenderBlocksNT.INSTANCE.setWorld(world); + + switch(meta) { + case 2: + renderer.setRenderBounds(0.25D, 0D, 0.875D, 1D, 1D, 1D); renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(0D, 0D, 0.75D, 0.25D, 1D, 1D); renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(0D, 0D, 0D, 0.125D, 1D, 0.75D); renderer.renderStandardBlock(block, x, y, z); + break; + case 3: + renderer.setRenderBounds(0D, 0D, 0D, 0.75D, 1D, 0.125D); renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(0.75D, 0D, 0D, 1D, 1D, 0.25D); renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(0.875D, 0D, 0.25D, 1D, 1D, 1D); renderer.renderStandardBlock(block, x, y, z); + break; + case 4: + renderer.setRenderBounds(0.875D, 0D, 0D, 1D, 1D, 0.75D); renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(0.75D, 0D, 0.75D, 1D, 1D, 1D); renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(0D, 0D, 0.875D, 0.75D, 1D, 1D); renderer.renderStandardBlock(block, x, y, z); + break; + case 5: + renderer.setRenderBounds(0D, 0D, 0.25D, 0.125D, 1D, 1D); renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(0D, 0D, 0D, 0.25D, 1D, 0.25D); renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(0.25D, 0D, 0D, 1D, 1D, 0.125D); renderer.renderStandardBlock(block, x, y, z); + break; + } + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return DecoBlock.renderIDCorner; + } +} diff --git a/src/main/java/com/hbm/render/block/RenderSteelWall.java b/src/main/java/com/hbm/render/block/RenderSteelWall.java new file mode 100644 index 000000000..a9744ab5b --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderSteelWall.java @@ -0,0 +1,61 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.generic.DecoBlock; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.IBlockAccess; + +public class RenderSteelWall implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + Tessellator tessellator = Tessellator.instance; + GL11.glTranslatef(-0.5F, -0.5F, -0.9375F); + + renderer.setRenderBounds(0D, 0D, 0.875D, 1D, 1D, 1D); + + tessellator.startDrawingQuads(); + tessellator.setNormal(0F, 1F, 0F); renderer.renderFaceYPos(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(0F, -1F, 0F); renderer.renderFaceYNeg(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(1F, 0F, 0F); renderer.renderFaceXPos(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(-1F, 0F, 0F); renderer.renderFaceXNeg(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(0F, 0F, 1F); renderer.renderFaceZPos(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.setNormal(0F, 0F, -1F); renderer.renderFaceZNeg(block, 0, 0, 0, block.getIcon(0, 0)); + tessellator.draw(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + Tessellator tessellator = Tessellator.instance; + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + int meta = world.getBlockMetadata(x, y, z); + + switch(meta) { + case 2: renderer.setRenderBounds(0D, 0D, 0.875D, 1D, 1D, 1D); break; + case 3: renderer.setRenderBounds(0D, 0D, 0D, 1D, 1D, 0.125D); break; + case 4: renderer.setRenderBounds(0.875D, 0D, 0D, 1D, 1D, 1D); break; + case 5: renderer.setRenderBounds(0D, 0D, 0D, 0.125D, 1D, 1D); break; + } + + renderer.renderStandardBlock(block, x, y, z); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return DecoBlock.renderIDWall; + } + +} diff --git a/src/main/java/com/hbm/render/entity/effect/BSmokeRenderer.java b/src/main/java/com/hbm/render/entity/effect/BSmokeRenderer.java deleted file mode 100644 index 66ad9eb7a..000000000 --- a/src/main/java/com/hbm/render/entity/effect/BSmokeRenderer.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.hbm.render.entity.effect; - -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -import com.hbm.entity.particle.EntityBSmokeFX; -import com.hbm.items.ModItems; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.client.renderer.texture.TextureMap; -import net.minecraft.entity.Entity; -import net.minecraft.item.Item; -import net.minecraft.util.IIcon; -import net.minecraft.util.ResourceLocation; - -public class BSmokeRenderer extends Render { - private Item field_94151_a; - public BSmokeRenderer(Item p_i1259_1_, int p_i1259_2_) { - this.field_94151_a = p_i1259_1_; - } - - public BSmokeRenderer(Item p_i1260_1_) { - this(p_i1260_1_, 0); - } - - /** - * Actually renders the given argument. This is a synthetic bridge method, - * always casting down its argument and then handing it off to a worker - * function which does the actual work. In all probabilty, the class Render - * is generic (Render= fx.maxAge / 8 * 7) { - field_94151_a = ModItems.b_smoke8; - } - - if (fx.particleAge < fx.maxAge / 8 * 7 && fx.particleAge >= fx.maxAge / 8 * 6) { - field_94151_a = ModItems.b_smoke7; - } - - if (fx.particleAge < fx.maxAge / 8 * 6 && fx.particleAge >= fx.maxAge / 8 * 5) { - field_94151_a = ModItems.b_smoke6; - } - - if (fx.particleAge < fx.maxAge / 8 * 5 && fx.particleAge >= fx.maxAge / 8 * 4) { - field_94151_a = ModItems.b_smoke5; - } - - if (fx.particleAge < fx.maxAge / 8 * 4 && fx.particleAge >= fx.maxAge / 8 * 3) { - field_94151_a = ModItems.b_smoke4; - } - - if (fx.particleAge < fx.maxAge / 8 * 3 && fx.particleAge >= fx.maxAge / 8 * 2) { - field_94151_a = ModItems.b_smoke3; - } - - if (fx.particleAge < fx.maxAge / 8 * 2 && fx.particleAge >= fx.maxAge / 8 * 1) { - field_94151_a = ModItems.b_smoke2; - } - - if (fx.particleAge < fx.maxAge / 8 && fx.particleAge >= 0) { - field_94151_a = ModItems.b_smoke1; - } - - IIcon iicon = field_94151_a.getIconFromDamage(0); - - if (iicon != null) { - GL11.glPushMatrix(); - GL11.glTranslatef((float) p_76986_2_, (float) p_76986_4_, (float) p_76986_6_); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glScalef(7.5F, 7.5F, 7.5F); - this.bindEntityTexture(p_76986_1_); - Tessellator tessellator = Tessellator.instance; - - this.func_77026_a(tessellator, iicon); - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - GL11.glPopMatrix(); - } - } - } - - /** - * Returns the location of an entity's texture. Doesn't seem to be called - * unless you call Render.bindEntityTexture. - */ - @Override - protected ResourceLocation getEntityTexture(Entity p_110775_1_) { - return TextureMap.locationItemsTexture; - } - - private void func_77026_a(Tessellator p_77026_1_, IIcon p_77026_2_) { - float f = p_77026_2_.getMinU(); - float f1 = p_77026_2_.getMaxU(); - float f2 = p_77026_2_.getMinV(); - float f3 = p_77026_2_.getMaxV(); - float f4 = 1.0F; - float f5 = 0.5F; - float f6 = 0.25F; - GL11.glRotatef(180.0F - this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-this.renderManager.playerViewX, 1.0F, 0.0F, 0.0F); - p_77026_1_.startDrawingQuads(); - p_77026_1_.setNormal(0.0F, 1.0F, 0.0F); - p_77026_1_.addVertexWithUV(0.0F - f5, 0.0F - f6, 0.0D, f, f3); - p_77026_1_.addVertexWithUV(f4 - f5, 0.0F - f6, 0.0D, f1, f3); - p_77026_1_.addVertexWithUV(f4 - f5, f4 - f6, 0.0D, f1, f2); - p_77026_1_.addVertexWithUV(0.0F - f5, f4 - f6, 0.0D, f, f2); - p_77026_1_.draw(); - } -} diff --git a/src/main/java/com/hbm/render/entity/effect/RenderFireball.java b/src/main/java/com/hbm/render/entity/effect/RenderFireball.java deleted file mode 100644 index 32036a1b4..000000000 --- a/src/main/java/com/hbm/render/entity/effect/RenderFireball.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.hbm.render.entity.effect; - -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -import com.hbm.entity.projectile.EntityFire; -import com.hbm.items.ModItems; - -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.client.renderer.texture.TextureMap; -import net.minecraft.entity.Entity; -import net.minecraft.item.Item; -import net.minecraft.util.IIcon; -import net.minecraft.util.ResourceLocation; - -public class RenderFireball extends Render { - private Item field_94151_a; - public RenderFireball(Item p_i1259_1_, int p_i1259_2_) - { - this.field_94151_a = p_i1259_1_; - } - - public RenderFireball(Item p_i1260_1_) - { - this(p_i1260_1_, 0); - } - - /** - * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then - * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic - * (Render= fx.maxAge / 10 * 9) - { - field_94151_a = ModItems.flame_10; - } - - if(fx.ticksExisted < fx.maxAge / 10 * 9 && fx.ticksExisted >= fx.maxAge / 10 * 8) - { - field_94151_a = ModItems.flame_9; - } - - if(fx.ticksExisted < fx.maxAge / 10 * 8 && fx.ticksExisted >= fx.maxAge / 10 * 7) - { - field_94151_a = ModItems.flame_8; - } - - if(fx.ticksExisted < fx.maxAge / 10 * 7 && fx.ticksExisted >= fx.maxAge / 10 * 6) - { - field_94151_a = ModItems.flame_7; - } - - if(fx.ticksExisted < fx.maxAge / 10 * 6 && fx.ticksExisted >= fx.maxAge / 10 * 5) - { - field_94151_a = ModItems.flame_6; - } - - if(fx.ticksExisted < fx.maxAge / 10 * 5 && fx.ticksExisted >= fx.maxAge / 10 * 4) - { - field_94151_a = ModItems.flame_5; - } - - if(fx.ticksExisted < fx.maxAge / 10 * 4 && fx.ticksExisted >= fx.maxAge / 10 * 3) - { - field_94151_a = ModItems.flame_4; - } - - if(fx.ticksExisted < fx.maxAge / 10 * 3 && fx.ticksExisted >= fx.maxAge / 10 * 2) - { - field_94151_a = ModItems.flame_3; - } - - if(fx.ticksExisted < fx.maxAge / 10 * 2 && fx.ticksExisted >= fx.maxAge / 10 * 1) - { - field_94151_a = ModItems.flame_2; - } - - if(fx.ticksExisted < fx.maxAge / 10 && fx.ticksExisted >= 0 && !fx.isDead) - { - field_94151_a = ModItems.flame_1; - } - - IIcon iicon = field_94151_a.getIconFromDamage(0); - - if (iicon != null) - { - GL11.glPushMatrix(); - GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glScalef(7.5F, 7.5F, 7.5F); - GL11.glTranslatef(0.0F, -0.25F, 0.0F); - this.bindEntityTexture(p_76986_1_); - Tessellator tessellator = Tessellator.instance; - - this.func_77026_a(tessellator, iicon); - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - GL11.glPopMatrix(); - } - } - } - - /** - * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture. - */ - @Override - protected ResourceLocation getEntityTexture(Entity p_110775_1_) - { - return TextureMap.locationItemsTexture; - } - - private void func_77026_a(Tessellator p_77026_1_, IIcon p_77026_2_) - { - float f = p_77026_2_.getMinU(); - float f1 = p_77026_2_.getMaxU(); - float f2 = p_77026_2_.getMinV(); - float f3 = p_77026_2_.getMaxV(); - float f4 = 1.0F; - float f5 = 0.5F; - float f6 = 0.25F; - GL11.glRotatef(180.0F - this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-this.renderManager.playerViewX, 1.0F, 0.0F, 0.0F); - p_77026_1_.startDrawingQuads(); - p_77026_1_.setNormal(0.0F, 1.0F, 0.0F); - p_77026_1_.addVertexWithUV(0.0F - f5, 0.0F - f6, 0.0D, f, f3); - p_77026_1_.addVertexWithUV(f4 - f5, 0.0F - f6, 0.0D, f1, f3); - p_77026_1_.addVertexWithUV(f4 - f5, f4 - f6, 0.0D, f1, f2); - p_77026_1_.addVertexWithUV(0.0F - f5, f4 - f6, 0.0D, f, f2); - p_77026_1_.draw(); - } -} diff --git a/src/main/java/com/hbm/render/entity/item/RenderBomber.java b/src/main/java/com/hbm/render/entity/item/RenderBomber.java index 16d32f88f..4cc33a349 100644 --- a/src/main/java/com/hbm/render/entity/item/RenderBomber.java +++ b/src/main/java/com/hbm/render/entity/item/RenderBomber.java @@ -28,36 +28,16 @@ public class RenderBomber extends Render { int i = entity.getDataWatcher().getWatchableObjectByte(16); switch(i) { - case 0: - bindTexture(ResourceManager.dornier_0_tex); - break; - case 1: - bindTexture(ResourceManager.dornier_1_tex); - break; - case 2: - bindTexture(ResourceManager.dornier_2_tex); - break; - case 3: - bindTexture(ResourceManager.dornier_3_tex); - break; - case 4: - bindTexture(ResourceManager.dornier_4_tex); - break; - case 5: - bindTexture(ResourceManager.b29_0_tex); - break; - case 6: - bindTexture(ResourceManager.b29_1_tex); - break; - case 7: - bindTexture(ResourceManager.b29_2_tex); - break; - case 8: - bindTexture(ResourceManager.b29_3_tex); - break; - default: - bindTexture(ResourceManager.dornier_1_tex); - break; + case 0: bindTexture(ResourceManager.dornier_1_tex); break; + case 1: bindTexture(ResourceManager.dornier_1_tex); break; + case 2: bindTexture(ResourceManager.dornier_2_tex); break; + case 3: bindTexture(ResourceManager.dornier_1_tex); break; + case 4: bindTexture(ResourceManager.dornier_4_tex); break; + case 5: bindTexture(ResourceManager.b29_0_tex); break; + case 6: bindTexture(ResourceManager.b29_1_tex); break; + case 7: bindTexture(ResourceManager.b29_2_tex); break; + case 8: bindTexture(ResourceManager.b29_3_tex); break; + default: bindTexture(ResourceManager.dornier_1_tex); break; } GL11.glRotatef((float) Math.sin((entity.ticksExisted + interp) * 0.05) * 10, 1F, 0F, 0F); diff --git a/src/main/java/com/hbm/render/entity/item/RenderC130.java b/src/main/java/com/hbm/render/entity/item/RenderC130.java new file mode 100644 index 000000000..9d2d7d4d4 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/item/RenderC130.java @@ -0,0 +1,67 @@ +package com.hbm.render.entity.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderC130 extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float f0, float interp) { + + GL11.glPushMatrix(); + GL11.glTranslatef((float) x, (float) y, (float) z); + GL11.glRotatef(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * interp - 90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(90, 0F, 0F, 1F); + GL11.glRotatef(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * interp, 0.0F, 0.0F, 1.0F); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.c130_0_tex); + ResourceManager.c130.renderPart("Plane"); + + double spin = System.currentTimeMillis() * 15D % 360D; + + GL11.glPushMatrix(); + GL11.glTranslated(10, 4.2, -20.5); + GL11.glRotated(spin, 1, 0, 0); + GL11.glTranslated(-10, -4.2, 20.5); + ResourceManager.c130.renderPart("Prop1"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(10, 4.2, -11.16); + GL11.glRotated(spin, 1, 0, 0); + GL11.glTranslated(-10, -4.2, 11.16); + ResourceManager.c130.renderPart("Prop2"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(10, 4.2, 11.16); + GL11.glRotated(spin, 1, 0, 0); + GL11.glTranslated(-10, -4.2, -11.16); + ResourceManager.c130.renderPart("Prop3"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(10, 4.2, 20.5); + GL11.glRotated(spin, 1, 0, 0); + GL11.glTranslated(-10, -4.2, -20.5); + ResourceManager.c130.renderPart("Prop4"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return ResourceManager.c130_0_tex; + } + +} diff --git a/src/main/java/com/hbm/render/entity/item/RenderMovingItem.java b/src/main/java/com/hbm/render/entity/item/RenderMovingItem.java index 32743c1e1..2707069bd 100644 --- a/src/main/java/com/hbm/render/entity/item/RenderMovingItem.java +++ b/src/main/java/com/hbm/render/entity/item/RenderMovingItem.java @@ -12,7 +12,6 @@ import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.entity.Entity; -import net.minecraft.entity.item.EntityItem; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; @@ -29,7 +28,7 @@ public class RenderMovingItem extends Render { GL11.glTranslated(0, rand.nextDouble() * 0.0625, 0); EntityMovingItem item = (EntityMovingItem) entity; - ItemStack stack = item.getItemStack().copy(); + ItemStack stack = item.getItemStack(); if(!(stack.getItemSpriteNumber() == 0 && stack.getItem() instanceof ItemBlock && RenderBlocks.renderItemIn3d(Block.getBlockFromItem(stack.getItem()).getRenderType()))) { GL11.glRotatef(90F, 1.0F, 0.0F, 0.0F); @@ -40,12 +39,13 @@ public class RenderMovingItem extends Render { } } - EntityItem dummy = new EntityItem(entity.worldObj, 0, 0, 0, stack); - dummy.hoverStart = 0.0F; + if(item.cacheForRender != null) { + item.cacheForRender.hoverStart = 0.0F; - RenderItem.renderInFrame = true; - RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F); - RenderItem.renderInFrame = false; + RenderItem.renderInFrame = true; + RenderManager.instance.renderEntityWithPosYaw(item.cacheForRender, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F); + RenderItem.renderInFrame = false; + } GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/entity/item/RenderParachuteCrate.java b/src/main/java/com/hbm/render/entity/item/RenderParachuteCrate.java new file mode 100644 index 000000000..3bf1ab7c5 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/item/RenderParachuteCrate.java @@ -0,0 +1,50 @@ +package com.hbm.render.entity.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderParachuteCrate extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float i, float j) { + + GL11.glPushMatrix(); + + GL11.glTranslated(x, y, z); + + double time = (entity.worldObj.getTotalWorldTime()); + double sine = Math.sin(time * 0.05) * 5; + double sin3 = Math.sin(time * 0.05 + Math.PI * 0.5) * 5; + + int height = 7; + + GL11.glTranslated(0.0F, height, 0.0F); + GL11.glRotated(sine, 0, 0, 1); + GL11.glRotated(sin3, 1, 0, 0); + GL11.glTranslated(0.0F, -height, 0.0F); + + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + + bindTexture(ResourceManager.supply_crate); + ResourceManager.conservecrate.renderAll(); + + GL11.glTranslated(0, -1, 0); + + bindTexture(ResourceManager.soyuz_chute_tex); + ResourceManager.soyuz_lander.renderPart("Chute"); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity p_110775_1_) { + return ResourceManager.soyuz_lander_tex; + } +} diff --git a/src/main/java/com/hbm/render/entity/mob/RenderDummy.java b/src/main/java/com/hbm/render/entity/mob/RenderDummy.java new file mode 100644 index 000000000..a85d4ea5e --- /dev/null +++ b/src/main/java/com/hbm/render/entity/mob/RenderDummy.java @@ -0,0 +1,31 @@ +package com.hbm.render.entity.mob; + +import com.hbm.entity.mob.EntityDummy; +import com.hbm.lib.RefStrings; + +import net.minecraft.client.model.ModelBiped; +import net.minecraft.client.renderer.entity.RenderBiped; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.util.ResourceLocation; + +public class RenderDummy extends RenderBiped { + + public RenderDummy() { + super(new ModelBiped(0.0F), 0.5F, 1.0F); + } + + @Override + protected ResourceLocation getEntityTexture(EntityLiving entity) { + return this.getEntityTexture((EntityDummy) entity); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return this.getEntityTexture((EntityDummy) entity); + } + + protected ResourceLocation getEntityTexture(EntityDummy entity) { + return new ResourceLocation(RefStrings.MODID + ":textures/entity/dummy.png"); + } +} diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderBaleflare.java b/src/main/java/com/hbm/render/entity/projectile/RenderBaleflare.java deleted file mode 100644 index f3c1d9fc9..000000000 --- a/src/main/java/com/hbm/render/entity/projectile/RenderBaleflare.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.hbm.render.entity.projectile; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelBaleflare; -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; - -public class RenderBaleflare extends Render { - - private ModelBaleflare miniNuke; - - public RenderBaleflare() { - miniNuke = new ModelBaleflare(); - } - - @Override - public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { - - GL11.glPushMatrix(); - GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); - GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_ + 180, 0.0F, 0.0F, 1.0F); - GL11.glScalef(1.5F, 1.5F, 1.5F); - - bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/models/BaleFlare.png")); - miniNuke.renderAll(0.0625F); - GL11.glPopMatrix(); - } - - @Override - protected ResourceLocation getEntityTexture(Entity p_110775_1_) { - return new ResourceLocation(RefStrings.MODID + ":textures/models/BaleFlare.png"); - } -} diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderBeam.java b/src/main/java/com/hbm/render/entity/projectile/RenderBeam.java index 6a0e4a6fe..2ee6039ed 100644 --- a/src/main/java/com/hbm/render/entity/projectile/RenderBeam.java +++ b/src/main/java/com/hbm/render/entity/projectile/RenderBeam.java @@ -1,80 +1,41 @@ package com.hbm.render.entity.projectile; -import java.util.Random; - import org.lwjgl.opengl.GL11; -import com.hbm.lib.RefStrings; -import net.minecraft.client.renderer.Tessellator; +import com.hbm.entity.projectile.EntityBulletBeamBase; +import com.hbm.main.ResourceManager; + import net.minecraft.client.renderer.entity.Render; import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; public class RenderBeam extends Render { - - Random rand = new Random(); @Override - public void doRender(Entity rocket, double x, double y, double z, float p_76986_8_, float p_76986_9_) { - float radius = 0.12F; - //float radius = 0.06F; - int distance = 4; - Tessellator tessellator = Tessellator.instance; - + public void doRender(Entity entity, double x, double y, double z, float f0, float interp) { + EntityBulletBeamBase bullet = (EntityBulletBeamBase) entity; + if(bullet.config == null) bullet.config = bullet.getBulletConfig(); + if(bullet.config == null) return; + GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); GL11.glTranslatef((float) x, (float) y, (float) z); - - GL11.glRotatef(rocket.rotationYaw, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-rocket.rotationPitch, 1.0F, 0.0F, 0.0F); - - boolean red = false; - boolean green = true; - boolean blue = false; - - for (float o = 0; o <= radius; o += radius / 8) { - float color = 1f - (o * 8.333f); - if (color < 0) - color = 0; - tessellator.startDrawingQuads(); - tessellator.setColorRGBA_F(red ? 1 : color, green ? 1 : color, blue ? 1 : color, 1f); - tessellator.addVertex(0 + o, 0 - o, 0); - tessellator.addVertex(0 + o, 0 + o, 0); - tessellator.addVertex(0 + o, 0 + o, 0 + distance); - tessellator.addVertex(0 + o, 0 - o, 0 + distance); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setColorRGBA_F(red ? 1 : color, green ? 1 : color, blue ? 1 : color, 1f); - tessellator.addVertex(0 - o, 0 - o, 0); - tessellator.addVertex(0 + o, 0 - o, 0); - tessellator.addVertex(0 + o, 0 - o, 0 + distance); - tessellator.addVertex(0 - o, 0 - o, 0 + distance); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setColorRGBA_F(red ? 1 : color, green ? 1 : color, blue ? 1 : color, 1f); - tessellator.addVertex(0 - o, 0 + o, 0); - tessellator.addVertex(0 - o, 0 - o, 0); - tessellator.addVertex(0 - o, 0 - o, 0 + distance); - tessellator.addVertex(0 - o, 0 + o, 0 + distance); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setColorRGBA_F(red ? 1 : color, green ? 1 : color, blue ? 1 : color, 1f); - tessellator.addVertex(0 + o, 0 + o, 0); - tessellator.addVertex(0 - o, 0 + o, 0); - tessellator.addVertex(0 - o, 0 + o, 0 + distance); - tessellator.addVertex(0 + o, 0 + o, 0 + distance); - tessellator.draw(); + + boolean fog = GL11.glIsEnabled(GL11.GL_FOG); + GL11.glDisable(GL11.GL_FOG); + + if(bullet.config.renderRotations) { + GL11.glRotatef(bullet.prevRotationYaw + (bullet.rotationYaw - bullet.prevRotationYaw) * interp - 90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(bullet.prevRotationPitch + (bullet.rotationPitch - bullet.prevRotationPitch) * interp + 180, 0.0F, 0.0F, 1.0F); } - GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_TEXTURE_2D); + + if(bullet.config.rendererBeam != null) { + bullet.config.rendererBeam.accept(bullet, interp); + } + + if(fog) GL11.glEnable(GL11.GL_FOG); + GL11.glPopMatrix(); } - @Override - protected ResourceLocation getEntityTexture(Entity p_110775_1_) { - return new ResourceLocation(RefStrings.MODID + ":textures/models/PlasmaBeam.png"); - } + @Override protected ResourceLocation getEntityTexture(Entity entity) { return ResourceManager.universal; } } diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderBoxcar.java b/src/main/java/com/hbm/render/entity/projectile/RenderBoxcar.java index 275a6083d..ca4dfe348 100644 --- a/src/main/java/com/hbm/render/entity/projectile/RenderBoxcar.java +++ b/src/main/java/com/hbm/render/entity/projectile/RenderBoxcar.java @@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.entity.projectile.EntityBoxcar; import com.hbm.entity.projectile.EntityBuilding; import com.hbm.entity.projectile.EntityDuchessGambit; +import com.hbm.entity.projectile.EntityTorpedo; import com.hbm.main.ResourceManager; import net.minecraft.client.renderer.entity.Render; @@ -14,43 +15,50 @@ import net.minecraft.util.ResourceLocation; public class RenderBoxcar extends Render { @Override - public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, - float p_76986_9_) { + public void doRender(Entity entity, double x, double y, double z, float f0, float f1) { GL11.glPushMatrix(); - GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - - if(p_76986_1_ instanceof EntityBoxcar) { - GL11.glTranslatef(0, 0, -1.5F); - GL11.glRotated(180, 0, 0, 1); - GL11.glRotated(90, 1, 0, 0); - - bindTexture(ResourceManager.boxcar_tex); - ResourceManager.boxcar.renderAll(); - } - - if(p_76986_1_ instanceof EntityDuchessGambit) { - GL11.glTranslatef(0, 0, -1.0F); - - bindTexture(ResourceManager.duchessgambit_tex); - ResourceManager.duchessgambit.renderAll(); - } - - if(p_76986_1_ instanceof EntityBuilding) { - GL11.glDisable(GL11.GL_CULL_FACE); - bindTexture(ResourceManager.building_tex); - ResourceManager.building.renderAll(); - GL11.glEnable(GL11.GL_CULL_FACE); - } - + GL11.glTranslated(x, y, z); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_LIGHTING); + + if(entity instanceof EntityBoxcar) { + GL11.glTranslatef(0, 0, -1.5F); + GL11.glRotated(180, 0, 0, 1); + GL11.glRotated(90, 1, 0, 0); + + bindTexture(ResourceManager.boxcar_tex); + ResourceManager.boxcar.renderAll(); + } + + if(entity instanceof EntityDuchessGambit) { + GL11.glTranslatef(0, 0, -1.0F); + + bindTexture(ResourceManager.duchessgambit_tex); + ResourceManager.duchessgambit.renderAll(); + } + + if(entity instanceof EntityBuilding) { + GL11.glDisable(GL11.GL_CULL_FACE); + bindTexture(ResourceManager.building_tex); + ResourceManager.building.renderAll(); + GL11.glEnable(GL11.GL_CULL_FACE); + } + + if(entity instanceof EntityTorpedo) { + float f = entity.ticksExisted + f1; + GL11.glRotatef(Math.min(85, f * 3), 1, 0, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.torpedo_tex); + ResourceManager.torpedo.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + GL11.glPopMatrix(); } @Override - protected ResourceLocation getEntityTexture(Entity p_110775_1_) { + protected ResourceLocation getEntityTexture(Entity entity) { return ResourceManager.boxcar_tex; } - -} \ No newline at end of file +} 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 c97e4b982..6c57fbd37 100644 --- a/src/main/java/com/hbm/render/entity/projectile/RenderBullet.java +++ b/src/main/java/com/hbm/render/entity/projectile/RenderBullet.java @@ -11,7 +11,6 @@ import com.hbm.handler.BulletConfiguration; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; -import com.hbm.render.model.ModelBaleflare; import com.hbm.render.model.ModelBullet; import com.hbm.render.util.RenderSparks; import com.hbm.util.Tuple.Pair; @@ -31,11 +30,9 @@ import net.minecraft.util.Vec3; public class RenderBullet extends Render { private ModelBullet bullet; - private ModelBaleflare bf; public RenderBullet() { bullet = new ModelBullet(); - bf = new ModelBaleflare(); } @Override @@ -65,14 +62,10 @@ public class RenderBullet extends Render { case BulletConfiguration.STYLE_PELLET: renderBuckshot(); break; case BulletConfiguration.STYLE_ROCKET: renderRocket(trail); break; case BulletConfiguration.STYLE_GRENADE: renderGrenade(trail); break; - case BulletConfiguration.STYLE_NUKE: renderNuke(0); break; - case BulletConfiguration.STYLE_MIRV: renderNuke(1); break; - case BulletConfiguration.STYLE_BF: renderNuke(2); break; case BulletConfiguration.STYLE_ORB: renderOrb(trail); break; case BulletConfiguration.STYLE_METEOR: renderMeteor(trail); break; case BulletConfiguration.STYLE_APDS: renderAPDS(); break; 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; @@ -178,21 +171,6 @@ public class RenderBullet extends Render { GL11.glScalef(0.25F, 0.25F, 0.25F); GL11.glRotated(90, 0, 0, 1); GL11.glRotated(90, 0, 1, 0); - - switch(type) { - case 0: - bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/entity/ModelGrenade.png")); break; - case 1: - bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/entity/ModelGrenadeHE.png")); break; - case 2: - bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/entity/ModelGrenadeIncendiary.png")); break; - case 3: - bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/entity/ModelGrenadeToxic.png")); break; - case 4: - bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/entity/ModelGrenadeSleek.png")); break; - case 5: - bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/entity/ModelGrenadeTraining.png")); break; - } GL11.glShadeModel(GL11.GL_SMOOTH); bindTexture(ResourceManager.grenade_tex); @@ -200,41 +178,6 @@ public class RenderBullet extends Render { GL11.glShadeModel(GL11.GL_FLAT); } - private void renderNuke(int type) { - - switch(type) { - case 0: - GL11.glScaled(0.5, 0.5, 0.5); - GL11.glRotated(90, 0, 0, 1); - GL11.glRotated(90, 0, 1, 0); - GL11.glShadeModel(GL11.GL_SMOOTH); - bindTexture(ResourceManager.mini_nuke_tex); - ResourceManager.projectiles.renderPart("MiniNuke"); - GL11.glShadeModel(GL11.GL_FLAT); - break; - case 1: - GL11.glScaled(0.5, 0.5, 0.5); - GL11.glRotated(90, 0, 0, 1); - GL11.glRotated(90, 0, 1, 0); - GL11.glShadeModel(GL11.GL_SMOOTH); - bindTexture(ResourceManager.mini_mirv_tex); - ResourceManager.projectiles.renderPart("MiniMIRV"); - GL11.glShadeModel(GL11.GL_FLAT); - break; - case 2: - bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/models/BaleFlare.png")); - bf.renderAll(0.0625F); break; - case 3: - GL11.glRotated(90, 0, 0, 1); - GL11.glRotated(90, 0, 1, 0); - GL11.glTranslated(0, -0.5, 0); - bindTexture(ResourceManager.waste_drum_tex); - ResourceManager.waste_drum.renderAll(); - break; - } - - } - private void renderOrb(int type) { GL11.glEnable(GL11.GL_CULL_FACE); diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderBulletMK4.java b/src/main/java/com/hbm/render/entity/projectile/RenderBulletMK4.java new file mode 100644 index 000000000..561a71271 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/projectile/RenderBulletMK4.java @@ -0,0 +1,36 @@ +package com.hbm.render.entity.projectile; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.projectile.EntityBulletBaseMK4; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderBulletMK4 extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float f0, float interp) { + EntityBulletBaseMK4 bullet = (EntityBulletBaseMK4) entity; + if(bullet.config == null) bullet.config = bullet.getBulletConfig(); + if(bullet.config == null) return; + + GL11.glPushMatrix(); + GL11.glTranslatef((float) x, (float) y, (float) z); + + if(bullet.config.renderRotations) { + GL11.glRotatef(bullet.prevRotationYaw + (bullet.rotationYaw - bullet.prevRotationYaw) * interp - 90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(bullet.prevRotationPitch + (bullet.rotationPitch - bullet.prevRotationPitch) * interp + 180, 0.0F, 0.0F, 1.0F); + } + + if(bullet.config.renderer != null) { + bullet.config.renderer.accept(bullet, interp); + } + + GL11.glPopMatrix(); + } + + @Override protected ResourceLocation getEntityTexture(Entity entity) { return ResourceManager.universal; } +} diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderLN2.java b/src/main/java/com/hbm/render/entity/projectile/RenderLN2.java deleted file mode 100644 index 923677c39..000000000 --- a/src/main/java/com/hbm/render/entity/projectile/RenderLN2.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.hbm.render.entity.projectile; - -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -import com.hbm.entity.projectile.EntityLN2; -import com.hbm.items.ModItems; - -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.client.renderer.texture.TextureMap; -import net.minecraft.entity.Entity; -import net.minecraft.item.Item; -import net.minecraft.util.IIcon; -import net.minecraft.util.ResourceLocation; - -public class RenderLN2 extends Render { - private Item field_94151_a; - public RenderLN2(Item p_i1259_1_, int p_i1259_2_) - { - this.field_94151_a = p_i1259_1_; - } - - public RenderLN2(Item p_i1260_1_) - { - this(p_i1260_1_, 0); - } - - /** - * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then - * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic - * (Render= fx.maxAge / 10 * 9) - { - field_94151_a = ModItems.ln2_10; - } - - if(fx.ticksExisted < fx.maxAge / 10 * 9 && fx.ticksExisted >= fx.maxAge / 10 * 8) - { - field_94151_a = ModItems.ln2_9; - } - - if(fx.ticksExisted < fx.maxAge / 10 * 8 && fx.ticksExisted >= fx.maxAge / 10 * 7) - { - field_94151_a = ModItems.ln2_8; - } - - if(fx.ticksExisted < fx.maxAge / 10 * 7 && fx.ticksExisted >= fx.maxAge / 10 * 6) - { - field_94151_a = ModItems.ln2_7; - } - - if(fx.ticksExisted < fx.maxAge / 10 * 6 && fx.ticksExisted >= fx.maxAge / 10 * 5) - { - field_94151_a = ModItems.ln2_6; - } - - if(fx.ticksExisted < fx.maxAge / 10 * 5 && fx.ticksExisted >= fx.maxAge / 10 * 4) - { - field_94151_a = ModItems.ln2_5; - } - - if(fx.ticksExisted < fx.maxAge / 10 * 4 && fx.ticksExisted >= fx.maxAge / 10 * 3) - { - field_94151_a = ModItems.ln2_4; - } - - if(fx.ticksExisted < fx.maxAge / 10 * 3 && fx.ticksExisted >= fx.maxAge / 10 * 2) - { - field_94151_a = ModItems.ln2_3; - } - - if(fx.ticksExisted < fx.maxAge / 10 * 2 && fx.ticksExisted >= fx.maxAge / 10 * 1) - { - field_94151_a = ModItems.ln2_2; - } - - if(fx.ticksExisted < fx.maxAge / 10 && fx.ticksExisted >= 0 && !fx.isDead) - { - field_94151_a = ModItems.ln2_1; - } - - IIcon iicon = field_94151_a.getIconFromDamage(0); - - if (iicon != null) - { - GL11.glPushMatrix(); - GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glScalef(7.5F, 7.5F, 7.5F); - GL11.glTranslatef(0.0F, -0.25F, 0.0F); - this.bindEntityTexture(p_76986_1_); - Tessellator tessellator = Tessellator.instance; - - this.func_77026_a(tessellator, iicon); - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - GL11.glPopMatrix(); - } - } - } - - /** - * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture. - */ - @Override - protected ResourceLocation getEntityTexture(Entity p_110775_1_) - { - return TextureMap.locationItemsTexture; - } - - private void func_77026_a(Tessellator p_77026_1_, IIcon p_77026_2_) - { - float f = p_77026_2_.getMinU(); - float f1 = p_77026_2_.getMaxU(); - float f2 = p_77026_2_.getMinV(); - float f3 = p_77026_2_.getMaxV(); - float f4 = 1.0F; - float f5 = 0.5F; - float f6 = 0.25F; - GL11.glRotatef(180.0F - this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-this.renderManager.playerViewX, 1.0F, 0.0F, 0.0F); - p_77026_1_.startDrawingQuads(); - p_77026_1_.setNormal(0.0F, 1.0F, 0.0F); - p_77026_1_.addVertexWithUV(0.0F - f5, 0.0F - f6, 0.0D, f, f3); - p_77026_1_.addVertexWithUV(f4 - f5, 0.0F - f6, 0.0D, f1, f3); - p_77026_1_.addVertexWithUV(f4 - f5, f4 - f6, 0.0D, f1, f2); - p_77026_1_.addVertexWithUV(0.0F - f5, f4 - f6, 0.0D, f, f2); - p_77026_1_.draw(); - } - -} diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderLaser.java b/src/main/java/com/hbm/render/entity/projectile/RenderLaser.java deleted file mode 100644 index b87d393ac..000000000 --- a/src/main/java/com/hbm/render/entity/projectile/RenderLaser.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.hbm.render.entity.projectile; - -import org.lwjgl.opengl.GL11; - -import com.hbm.entity.projectile.EntityLaser; -import com.hbm.lib.Library; -import com.hbm.render.util.BeamPronter; -import com.hbm.render.util.BeamPronter.EnumBeamType; -import com.hbm.render.util.BeamPronter.EnumWaveType; - -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.Vec3; - -public class RenderLaser extends Render { - - @Override - public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { - this.doRender((EntityLaser)p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_); - } - - public void doRender(EntityLaser laser, double x, double y, double z, float p_76986_8_, float p_76986_9_) { - - GL11.glPushMatrix(); - - EntityPlayer player = laser.worldObj.getPlayerEntityByName(laser.getDataWatcher().getWatchableObjectString(20)); - - if(player != null) { - - - - //GL11.glTranslated(x - dX, y - dY, z - dZ); - - GL11.glTranslated(x, y, z); - - MovingObjectPosition pos = Library.rayTrace(player, 100, 1); - - Vec3 skeleton = Vec3.createVectorHelper(pos.hitVec.xCoord - player.posX, pos.hitVec.yCoord - player.posY - player.getEyeHeight(), pos.hitVec.zCoord - player.posZ); - int init = (int) -(System.currentTimeMillis() % 360); - - //BeamPronter.prontHelix(skeleton, 0, 0, 0, EnumWaveType.SPIRAL, EnumBeamType.LINE, 0x0000ff, 0x8080ff, 0, (int)(skeleton.lengthVector() * 5), 0.2F); - BeamPronter.prontBeam(skeleton, EnumWaveType.SPIRAL, EnumBeamType.SOLID, 0xff5000, 0xff5000, init, (int) skeleton.lengthVector() + 1, 0.1F, 4, 0.05F); - BeamPronter.prontBeam(skeleton, EnumWaveType.SPIRAL, EnumBeamType.SOLID, 0xff3000, 0xff3000, init, 1, 0F, 4, 0.05F); - } - - GL11.glPopMatrix(); - } - - @Override - protected ResourceLocation getEntityTexture(Entity p_110775_1_) { - return null; - } - -} diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderMiniMIRV.java b/src/main/java/com/hbm/render/entity/projectile/RenderMiniMIRV.java deleted file mode 100644 index 6a225cc32..000000000 --- a/src/main/java/com/hbm/render/entity/projectile/RenderMiniMIRV.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.hbm.render.entity.projectile; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelMIRV; -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; - -public class RenderMiniMIRV extends Render { - - private ModelMIRV miniNuke; - - public RenderMiniMIRV() { - miniNuke = new ModelMIRV(); - } - - @Override - public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { - - GL11.glPushMatrix(); - GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); - GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_ + 180, 0.0F, 0.0F, 1.0F); - GL11.glScalef(1.5F, 1.5F, 1.5F); - - bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/models/Mirv.png")); - miniNuke.renderAll(0.0625F); - GL11.glPopMatrix(); - } - - @Override - protected ResourceLocation getEntityTexture(Entity p_110775_1_) { - return new ResourceLocation(RefStrings.MODID + ":textures/models/Mirv.png"); - } -} diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderMiniNuke.java b/src/main/java/com/hbm/render/entity/projectile/RenderMiniNuke.java deleted file mode 100644 index 6295fb83b..000000000 --- a/src/main/java/com/hbm/render/entity/projectile/RenderMiniNuke.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.hbm.render.entity.projectile; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelMiniNuke; - -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; - -public class RenderMiniNuke extends Render { - - private ModelMiniNuke miniNuke; - - public RenderMiniNuke() { - miniNuke = new ModelMiniNuke(); - } - - @Override - public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { - - GL11.glPushMatrix(); - GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); - GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_ + 180, 0.0F, 0.0F, 1.0F); - GL11.glScalef(1.5F, 1.5F, 1.5F); - - bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/models/MiniNuke.png")); - miniNuke.renderAll(0.0625F); - GL11.glPopMatrix(); - } - - @Override - protected ResourceLocation getEntityTexture(Entity p_110775_1_) { - return new ResourceLocation(RefStrings.MODID + ":textures/models/MiniNuke.png"); - } -} diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderMirv.java b/src/main/java/com/hbm/render/entity/projectile/RenderMirv.java index 810ad9960..7c7e57866 100644 --- a/src/main/java/com/hbm/render/entity/projectile/RenderMirv.java +++ b/src/main/java/com/hbm/render/entity/projectile/RenderMirv.java @@ -25,17 +25,17 @@ public class RenderMirv extends Render { public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { GL11.glPushMatrix(); - GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); - GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F); - - bindTexture(boyTexture); - boyModel.renderAll(); + GL11.glTranslatef((float) p_76986_2_, (float) p_76986_4_, (float) p_76986_6_); + GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F); + + bindTexture(boyTexture); + boyModel.renderAll(); GL11.glPopMatrix(); } @Override protected ResourceLocation getEntityTexture(Entity p_110775_1_) { - return new ResourceLocation(RefStrings.MODID +":textures/models/TheGadget3_.png"); + return new ResourceLocation(RefStrings.MODID + ":textures/models/TheGadget3_.png"); } } diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderOminousBullet.java b/src/main/java/com/hbm/render/entity/projectile/RenderOminousBullet.java deleted file mode 100644 index 09bec73a2..000000000 --- a/src/main/java/com/hbm/render/entity/projectile/RenderOminousBullet.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.hbm.render.entity.projectile; - -import java.util.Random; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; - -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; - -public class RenderOminousBullet extends Render { - - Random rand = new Random(); - - @Override - public void doRender(Entity rocket, double x, double y, double z, float p_76986_8_, float p_76986_9_) { - float radius = 0.12F; - int distance = 4; - - radius = 0.03F; - - Tessellator tessellator = Tessellator.instance; - - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); - GL11.glTranslatef((float) x, (float) y, (float) z); - - GL11.glRotatef(rocket.rotationYaw, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-rocket.rotationPitch, 1.0F, 0.0F, 0.0F); - - boolean red = false; - boolean green = false; - boolean blue = false; - - green = true; - red = true; - - //for (float o = 0; o <= radius; o += radius / 8) { - for (float o = 0; o <= radius; o += radius / 1) { - float color = 1f - (o * 8.333f); - if (color < 0) - color = 0; - tessellator.startDrawingQuads(); - tessellator.setColorRGBA_F(red ? 1 : color, green ? 1 : color, blue ? 1 : color, 1f); - tessellator.addVertex(0 + o, 0 - o, 0); - tessellator.addVertex(0 + o, 0 + o, 0); - tessellator.addVertex(0 + o, 0 + o, 0 + distance); - tessellator.addVertex(0 + o, 0 - o, 0 + distance); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setColorRGBA_F(red ? 1 : color, green ? 1 : color, blue ? 1 : color, 1f); - tessellator.addVertex(0 - o, 0 - o, 0); - tessellator.addVertex(0 + o, 0 - o, 0); - tessellator.addVertex(0 + o, 0 - o, 0 + distance); - tessellator.addVertex(0 - o, 0 - o, 0 + distance); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setColorRGBA_F(red ? 1 : color, green ? 1 : color, blue ? 1 : color, 1f); - tessellator.addVertex(0 - o, 0 + o, 0); - tessellator.addVertex(0 - o, 0 - o, 0); - tessellator.addVertex(0 - o, 0 - o, 0 + distance); - tessellator.addVertex(0 - o, 0 + o, 0 + distance); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setColorRGBA_F(red ? 1 : color, green ? 1 : color, blue ? 1 : color, 1f); - tessellator.addVertex(0 + o, 0 + o, 0); - tessellator.addVertex(0 - o, 0 + o, 0); - tessellator.addVertex(0 - o, 0 + o, 0 + distance); - tessellator.addVertex(0 + o, 0 + o, 0 + distance); - tessellator.draw(); - } - GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glPopMatrix(); - } - - @Override - protected ResourceLocation getEntityTexture(Entity p_110775_1_) { - return new ResourceLocation(RefStrings.MODID + ":textures/models/Rainbow.png"); - } -} diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderSRocket.java b/src/main/java/com/hbm/render/entity/projectile/RenderSRocket.java deleted file mode 100644 index 7ac3f210e..000000000 --- a/src/main/java/com/hbm/render/entity/projectile/RenderSRocket.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.hbm.render.entity.projectile; - -import org.lwjgl.opengl.GL11; - -import com.hbm.entity.projectile.EntityRocketHoming; -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelSRocket; - -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; - -public class RenderSRocket extends Render { - - private ModelSRocket missile; - - public RenderSRocket() { - missile = new ModelSRocket(); - } - - public void doRender(EntityRocketHoming rocket, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, - float p_76986_9_) { - GL11.glPushMatrix(); - GL11.glTranslatef((float) p_76986_2_, (float) p_76986_4_, (float) p_76986_6_); - GL11.glRotatef(rocket.prevRotationYaw + (rocket.rotationYaw - rocket.prevRotationYaw) * p_76986_9_ - 90.0F, - 0.0F, 1.0F, 0.0F); - GL11.glRotatef(rocket.prevRotationPitch + (rocket.rotationPitch - rocket.prevRotationPitch) * p_76986_9_ + 180, - 0.0F, 0.0F, 1.0F); - GL11.glScalef(1.5F, 1.5F, 1.5F); - - if(rocket.getIsCritical()) - bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/models/ModelSVTRocket.png")); - else - bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/models/ModelSRocket.png")); - missile.renderAll(0.0625F); - GL11.glPopMatrix(); - } - - @Override - public void doRender(Entity rocket, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, - float p_76986_9_) { - doRender((EntityRocketHoming)rocket, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_); - } - - @Override - protected ResourceLocation getEntityTexture(Entity p_110775_1_) { - return new ResourceLocation(RefStrings.MODID + ":textures/models/ModelSRocket.png"); - } -} diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index bcee704d8..5923c0337 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -481,12 +481,12 @@ public class ItemRenderLibrary { GL11.glScaled(8, 8, 8); } public void renderCommon() { - GL11.glScaled(6, 6, 6); - GL11.glRotatef(22.5F, 0F, 1F, 0F); - GL11.glDisable(GL11.GL_CULL_FACE); - bindTexture(ResourceManager.mine_ap_tex); - ResourceManager.mine_ap.renderAll(); - GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glScaled(1.25, 1.25, 1.25); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.mine_ap_grass_tex); ResourceManager.mine_ap.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); }}); renderers.put(Item.getItemFromBlock(ModBlocks.mine_he), new ItemRenderBase() { @@ -510,12 +510,15 @@ public class ItemRenderLibrary { renderers.put(Item.getItemFromBlock(ModBlocks.mine_shrap), new ItemRenderBase() { public void renderInventory() { - GL11.glScaled(6, 6, 6); + GL11.glScaled(8, 8, 8); } public void renderCommon() { - GL11.glScaled(4, 4, 4); - bindTexture(ResourceManager.mine_shrap_tex); - ResourceManager.mine_he.renderAll(); + GL11.glScaled(1.25, 1.25, 1.25); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.mine_shrap_tex); ResourceManager.mine_ap.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); }}); renderers.put(Item.getItemFromBlock(ModBlocks.mine_fat), new ItemRenderBase() { diff --git a/src/main/java/com/hbm/render/item/block/ItemRenderDecoBlock.java b/src/main/java/com/hbm/render/item/block/ItemRenderDecoBlock.java index 1e48e83ae..b8d09b204 100644 --- a/src/main/java/com/hbm/render/item/block/ItemRenderDecoBlock.java +++ b/src/main/java/com/hbm/render/item/block/ItemRenderDecoBlock.java @@ -4,11 +4,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.blocks.ModBlocks; import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelSteelBeam; -import com.hbm.render.model.ModelSteelCorner; import com.hbm.render.model.ModelSteelRoof; -import com.hbm.render.model.ModelSteelScaffold; -import com.hbm.render.model.ModelSteelWall; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; @@ -19,18 +15,10 @@ import net.minecraftforge.client.IItemRenderer; public class ItemRenderDecoBlock implements IItemRenderer { - protected ModelSteelWall wall; - protected ModelSteelCorner corner; protected ModelSteelRoof roof; - protected ModelSteelBeam beam; - protected ModelSteelScaffold scaffold; public ItemRenderDecoBlock() { - wall = new ModelSteelWall(); - corner = new ModelSteelCorner(); roof = new ModelSteelRoof(); - beam = new ModelSteelBeam(); - scaffold = new ModelSteelScaffold(); } @Override @@ -51,16 +39,8 @@ public class ItemRenderDecoBlock implements IItemRenderer { @Override public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - if(item.getItem() == Item.getItemFromBlock(ModBlocks.steel_wall)) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/SteelWall.png")); - if(item.getItem() == Item.getItemFromBlock(ModBlocks.steel_corner)) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/SteelCorner.png")); if(item.getItem() == Item.getItemFromBlock(ModBlocks.steel_roof)) Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/SteelRoof.png")); - if(item.getItem() == Item.getItemFromBlock(ModBlocks.steel_beam)) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/SteelBeam.png")); - if(item.getItem() == Item.getItemFromBlock(ModBlocks.steel_scaffold)) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/SteelScaffold.png")); switch(type) { case ENTITY: @@ -68,32 +48,16 @@ public class ItemRenderDecoBlock implements IItemRenderer { GL11.glScalef(0.5F, 0.5F, 0.5F); GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F); GL11.glTranslatef(0.0F, -1.0F, 0.0F); - if(item.getItem() == Item.getItemFromBlock(ModBlocks.steel_wall)) - wall.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == Item.getItemFromBlock(ModBlocks.steel_corner)) - corner.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); if(item.getItem() == Item.getItemFromBlock(ModBlocks.steel_roof)) roof.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == Item.getItemFromBlock(ModBlocks.steel_beam)) - beam.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == Item.getItemFromBlock(ModBlocks.steel_scaffold)) - scaffold.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); GL11.glPopMatrix(); break; case EQUIPPED: GL11.glPushMatrix(); GL11.glScalef(0.5F, 0.5F, 0.5F); GL11.glTranslatef(0.8F, -0.3F, 0.2F); - if(item.getItem() == Item.getItemFromBlock(ModBlocks.steel_wall)) - wall.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == Item.getItemFromBlock(ModBlocks.steel_corner)) - corner.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); if(item.getItem() == Item.getItemFromBlock(ModBlocks.steel_roof)) roof.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == Item.getItemFromBlock(ModBlocks.steel_beam)) - beam.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == Item.getItemFromBlock(ModBlocks.steel_scaffold)) - scaffold.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); GL11.glPopMatrix(); break; case EQUIPPED_FIRST_PERSON: @@ -101,16 +65,8 @@ public class ItemRenderDecoBlock implements IItemRenderer { GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); GL11.glTranslatef(-0.6F, -0.6F, -0.1F); GL11.glScalef(0.5F, 0.5F, 0.5F); - if(item.getItem() == Item.getItemFromBlock(ModBlocks.steel_wall)) - wall.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == Item.getItemFromBlock(ModBlocks.steel_corner)) - corner.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); if(item.getItem() == Item.getItemFromBlock(ModBlocks.steel_roof)) roof.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == Item.getItemFromBlock(ModBlocks.steel_beam)) - beam.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == Item.getItemFromBlock(ModBlocks.steel_scaffold)) - scaffold.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); GL11.glPopMatrix(); break; default: break; diff --git a/src/main/java/com/hbm/render/item/block/ItemRenderSteelPoles.java b/src/main/java/com/hbm/render/item/block/ItemRenderSteelPoles.java deleted file mode 100644 index 5af78716a..000000000 --- a/src/main/java/com/hbm/render/item/block/ItemRenderSteelPoles.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.hbm.render.item.block; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelPoles; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderSteelPoles implements IItemRenderer { - - protected ModelPoles swordModel; - - public ItemRenderSteelPoles() { - swordModel = new ModelPoles(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case ENTITY: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/Poles.png")); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -1.0F, 0.0F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - case EQUIPPED: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/Poles.png")); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glTranslatef(0.8F, -0.3F, 0.2F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/Poles.png")); - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.6F, -0.6F, -0.1F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - default: break; - } - } - -} diff --git a/src/main/java/com/hbm/render/item/block/ItemRenderTapeRecorder.java b/src/main/java/com/hbm/render/item/block/ItemRenderTapeRecorder.java deleted file mode 100644 index fc49686f3..000000000 --- a/src/main/java/com/hbm/render/item/block/ItemRenderTapeRecorder.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.hbm.render.item.block; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelTapeRecorder; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderTapeRecorder implements IItemRenderer { - - protected ModelTapeRecorder swordModel; - - public ItemRenderTapeRecorder() { - swordModel = new ModelTapeRecorder(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case ENTITY: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelTapeRecorder.png")); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -1.0F, 0.0F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - case EQUIPPED: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelTapeRecorder.png")); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glTranslatef(0.8F, 1.7F, 0.2F); - GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(90.0F, 0.0F, -1.0F, 0.0F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelTapeRecorder.png")); - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.6F, -0.6F, -0.1F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - default: break; - } - } - -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderBFLauncher.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderBFLauncher.java deleted file mode 100644 index 5893a0c46..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderBFLauncher.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelBFLauncher; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderBFLauncher implements IItemRenderer { - - protected ModelBFLauncher swordModel; - - public ItemRenderBFLauncher() { - swordModel = new ModelBFLauncher(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/BFLauncher.png")); - GL11.glRotatef(-150.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.8F, -0.1F, -0.2F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, item); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/BFLauncher.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(0.5F, -0.2F, 0.0F); - GL11.glScalef(1.5F, 1.5F, 1.5F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, item); - GL11.glPopMatrix(); - default: break; - } - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderBaleflare.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderBaleflare.java deleted file mode 100644 index 96671ff58..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderBaleflare.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelBaleflare; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderBaleflare implements IItemRenderer { - - protected ModelBaleflare swordModel; - - public ItemRenderBaleflare() { - swordModel = new ModelBaleflare(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/BaleFlare.png")); - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.2F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glScalef(1.5F, 1.5F, 1.5F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/BaleFlare.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - GL11.glScalef(1.5F, 1.5F, 1.5F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - default: break; - } - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderBenelli.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderBenelli.java deleted file mode 100644 index c7c3a19d0..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderBenelli.java +++ /dev/null @@ -1,117 +0,0 @@ -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.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderBenelli implements IItemRenderer -{ - public ItemRenderBenelli() {} - - @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) { - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - GL11.glPushMatrix(); - - GL11.glShadeModel(GL11.GL_SMOOTH); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.benelli_tex); - final float scale1 = 0.2F; - final double scale2 = 0.065D; - final double scale3 = 0.52D; - - switch (type) { - case EQUIPPED_FIRST_PERSON:// In hand from POV - GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F); - if (player.isSneaking()) { - GL11.glRotatef(25.0F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-5F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-1.007F, 0F, -2.5F); - } - else { - GL11.glRotatef(-10F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(20.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.5F, -2.5F); - } - - GL11.glScalef(scale1, scale1, scale1); - - HbmAnimations.applyRelevantTransformation("Body"); - ResourceManager.benelli.renderPart("Body"); - - GL11.glPushMatrix(); - - HbmAnimations.applyRelevantTransformation("Bolt"); - ResourceManager.benelli.renderPart("Bolt"); - - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - - HbmAnimations.applyRelevantTransformation("Drum"); - ResourceManager.benelli.renderPart("Drum"); - - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - - HbmAnimations.applyRelevantTransformation("Shell"); - ResourceManager.benelli.renderPart("Shell"); - - GL11.glPopMatrix(); - - break; - case EQUIPPED:// In hand from other's POV - GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-170, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-15F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(-0.4F, 0.05F, -0.5F); - GL11.glScaled(scale2 - scale2 * 2, scale2, scale2); - - GL11.glPushMatrix(); - GL11.glPopMatrix(); - break; - case ENTITY:// Dropped entity - GL11.glScaled(0.0625D, 0.0625D, 0.0625D); - break; - case INVENTORY:// Inventory icon - GL11.glScaled(scale3, scale3, -scale3); - GL11.glTranslatef(14.4F, 15.0F, 0.0F); - GL11.glRotatef(270.0F, 10.0F, 0.0F, 0.0F); - GL11.glRotatef(52.5F, 0.0F, 10.0F, 0.0F); - GL11.glRotatef(270.0F, 0.0F, 0.0F, 10.0F); - default: - break; - } - - if(type != ItemRenderType.EQUIPPED_FIRST_PERSON) - ResourceManager.benelli.renderAll(); - GL11.glPopMatrix(); - - } - -} \ No newline at end of file diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderBioRevolver.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderBioRevolver.java deleted file mode 100644 index ec65b0ef2..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderBioRevolver.java +++ /dev/null @@ -1,185 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.weapon.ItemGunBio; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderBioRevolver 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.glDisable(GL11.GL_CULL_FACE); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.bio_revolver_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.1D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(1.0, 0.25, -0.25); - GL11.glRotated(80, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - double width = 0.5D; - - GL11.glPushMatrix(); - GL11.glTranslated(0.0, 1.75, 10.0); - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - GL11.glTranslated(0, -recoil[2] * 1.5, recoil[2]); - - GL11.glShadeModel(GL11.GL_SMOOTH); - - if(ItemGunBio.smokeNodes.size() > 1) { - - Tessellator tess = Tessellator.instance; - tess.startDrawingQuads(); - tess.setNormal(0F, 1F, 0F); - - for(int i = 0; i < ItemGunBio.smokeNodes.size() - 1; i++) { - double[] node = ItemGunBio.smokeNodes.get(i); - double[] past = ItemGunBio.smokeNodes.get(i + 1); - - tess.setColorRGBA_F(1F, 1F, 1F, (float) node[3]); - tess.addVertex(node[0], node[1], node[2]); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(node[0] + width, node[1], node[2]); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(past[0] + width, past[1], past[2]); - tess.setColorRGBA_F(1F, 1F, 1F, (float) past[3]); - tess.addVertex(past[0], past[1], past[2]); - - tess.setColorRGBA_F(1F, 1F, 1F, (float) node[3]); - tess.addVertex(node[0], node[1], node[2]); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(node[0] - width, node[1], node[2]); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(past[0] - width, past[1], past[2]); - tess.setColorRGBA_F(1F, 1F, 1F, (float) past[3]); - tess.addVertex(past[0], past[1], past[2]); - } - GL11.glAlphaFunc(GL11.GL_GREATER, 0F); - GL11.glEnable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_TEXTURE_2D); - tess.draw(); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_BLEND); - GL11.glAlphaFunc(GL11.GL_GEQUAL, 0.1F); - } - - GL11.glPopMatrix(); - GL11.glTranslated(recoil[0], recoil[1], recoil[2]); - GL11.glRotated(recoil[2] * 10, 1, 0, 0); - - double[] reloadMove = HbmAnimations.getRelevantTransformation("RELOAD_MOVE"); - GL11.glTranslated(reloadMove[0], reloadMove[1], reloadMove[2]); - - double[] reloadRot = HbmAnimations.getRelevantTransformation("RELOAD_ROT"); - GL11.glRotated(reloadRot[0], 1, 0, 0); - GL11.glRotated(reloadRot[2], 0, 0, 1); - GL11.glRotated(reloadRot[1], 0, 1, 0); - ResourceManager.bio_revolver.renderPart("Grip"); - - GL11.glPushMatrix(); /// FRONT PUSH /// - GL11.glRotated(HbmAnimations.getRelevantTransformation("FRONT")[2], 1, 0, 0); - ResourceManager.bio_revolver.renderPart("Barrel"); - GL11.glPushMatrix(); /// LATCH PUSH /// - GL11.glTranslated(0, 2.3125, -0.875); - GL11.glRotated(HbmAnimations.getRelevantTransformation("LATCH")[2], 1, 0, 0); - GL11.glTranslated(0, -2.3125, 0.875); - ResourceManager.bio_revolver.renderPart("Latch"); - GL11.glPopMatrix(); /// LATCH POP /// - - GL11.glPushMatrix(); /// DRUM PUSH /// - GL11.glTranslated(0, 1, 0); - GL11.glRotated(HbmAnimations.getRelevantTransformation("DRUM")[2] * 60, 0, 0, 1); - GL11.glTranslated(0, -1, 0); - GL11.glTranslated(0, 0, HbmAnimations.getRelevantTransformation("DRUM_PUSH")[2]); - ResourceManager.bio_revolver.renderPart("Drum"); - GL11.glPopMatrix(); /// DRUM POP /// - - GL11.glPopMatrix(); /// FRONT POP /// - - GL11.glPushMatrix(); /// HAMMER /// - GL11.glTranslated(0, 0, -4.5); - GL11.glRotated(-45 + 45 * HbmAnimations.getRelevantTransformation("HAMMER")[2], 1, 0, 0); - GL11.glTranslated(0, 0, 4.5); - ResourceManager.bio_revolver.renderPart("Hammer"); - GL11.glPopMatrix(); - - GL11.glShadeModel(GL11.GL_FLAT); - - break; - - case EQUIPPED: - - double scale = 0.1D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(10, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(15F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(4F, 1F, 4F); - - break; - - case ENTITY: - - double s1 = 0.075D; - GL11.glScaled(s1, s1, s1); - GL11.glRotatef(90, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(0F, 1F, 0F); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 0.8D; - GL11.glTranslated(8, 7, 0); - GL11.glRotated(-90, 0, 1, 0); - GL11.glRotated(-135, 1, 0, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - if(type != ItemRenderType.EQUIPPED_FIRST_PERSON) { - GL11.glShadeModel(GL11.GL_SMOOTH); - ResourceManager.bio_revolver.renderAll(); - GL11.glShadeModel(GL11.GL_FLAT); - } - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderCryolator.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderCryolator.java deleted file mode 100644 index ce1505174..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderCryolator.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelCryolator; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderCryolator implements IItemRenderer { - - protected ModelCryolator swordModel; - - public ItemRenderCryolator() { - swordModel = new ModelCryolator(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelCryolator.png")); - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.2F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - //GL11.glTranslatef(-0.4F, -0.1F, 0.1F); - GL11.glTranslatef(-0.2F, -0.1F, -0.1F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelCryolator.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(0.5F, -0.2F, 0.0F); - GL11.glScalef(1.25F, 1.25F, 1.25F); - GL11.glTranslatef(-0.8F, 0.0F, 0.0F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - default: break; - } - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderEMPRay.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderEMPRay.java deleted file mode 100644 index cf4889d23..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderEMPRay.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelEMPRay; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderEMPRay implements IItemRenderer { - - protected ModelEMPRay swordModel; - - public ItemRenderEMPRay() { - swordModel = new ModelEMPRay(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - float f = 0; - - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelEMPRay.png")); - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.2F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glTranslatef(-0.8F, -0.2F, 0.0F); - GL11.glRotatef(-15.0F, 0.0F, 0.0F, 1.0F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, f); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelEMPRay.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(0.5F, -0.2F, 0.0F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glTranslatef(-1.8F, -0.2F, 0.2F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, f); - GL11.glPopMatrix(); - default: break; - } - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderFatMan.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderFatMan.java deleted file mode 100644 index e669de40f..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderFatMan.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelFatman; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderFatMan implements IItemRenderer { - - protected ModelFatman swordModel; - - public ItemRenderFatMan() { - swordModel = new ModelFatman(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/FatmanLauncher.png")); - GL11.glRotatef(-150.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.8F, -0.1F, -0.2F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, item); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/FatmanLauncher.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(0.5F, -0.2F, 0.0F); - GL11.glScalef(1.5F, 1.5F, 1.5F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, item); - GL11.glPopMatrix(); - default: break; - } - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderGunAnim.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderGunAnim.java index 492a2be44..055b53708 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderGunAnim.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderGunAnim.java @@ -4,11 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.items.ModItems; import com.hbm.items.weapon.GunB92; -import com.hbm.items.weapon.GunLeverActionS; import com.hbm.lib.RefStrings; import com.hbm.render.model.ModelB92; -import com.hbm.render.model.ModelB93; -import com.hbm.render.model.ModelLeverAction; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.item.ItemStack; @@ -17,14 +14,10 @@ import net.minecraftforge.client.IItemRenderer; public class ItemRenderGunAnim implements IItemRenderer { - protected ModelLeverAction flippedGun; protected ModelB92 b92; - protected ModelB93 b93; public ItemRenderGunAnim() { - flippedGun = new ModelLeverAction(); b92 = new ModelB92(); - b93 = new ModelB93(); } @Override @@ -52,30 +45,14 @@ public class ItemRenderGunAnim implements IItemRenderer { GL11.glEnable(GL11.GL_CULL_FACE); - if(item.getItem() == ModItems.gun_lever_action_sonata) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelLeverAction.png")); if(item.getItem() == ModItems.gun_b92) Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelB92SM.png")); - if(item.getItem() == ModItems.gun_b93) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelB93.png")); GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); GL11.glTranslatef(-0.5F, 0.0F, -0.2F); GL11.glScalef(0.5F, 0.5F, 0.5F); GL11.glScalef(0.5F, 0.5F, 0.5F); GL11.glTranslatef(-0.2F, -0.1F, -0.1F); - - if(item.getItem() == ModItems.gun_lever_action_sonata) { - GL11.glRotatef(180F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(2.3F, 0.2F, 0.8F); - } - - if((item.getItem() == ModItems.gun_lever_action_sonata) && GunLeverActionS.getRotationFromAnim(item) > 0) { - GL11.glRotatef(GunLeverActionS.getRotationFromAnim(item) * -25, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(GunLeverActionS.getOffsetFromAnim(item) * 1.5F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, GunLeverActionS.getOffsetFromAnim(item) * -1.5F, 0.0F); - } if(item.getItem() == ModItems.gun_b92 && GunB92.getRotationFromAnim(item) > 0) { float off = GunB92.getRotationFromAnim(item) * 2; @@ -83,18 +60,8 @@ public class ItemRenderGunAnim implements IItemRenderer { GL11.glTranslatef(off * -0.5F, off * -0.5F, 0.0F); } - if(item.getItem() == ModItems.gun_b93 && GunB92.getRotationFromAnim(item) > 0) { - float off = GunB92.getRotationFromAnim(item) * 2; - GL11.glRotatef(GunB92.getRotationFromAnim(item) * -90, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(off * -0.5F, off * -0.5F, 0.0F); - } - - if(item.getItem() == ModItems.gun_lever_action_sonata) - flippedGun.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunLeverActionS.getRotationFromAnim(item)); if(item.getItem() == ModItems.gun_b92) b92.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunB92.getTransFromAnim(item)); - if(item.getItem() == ModItems.gun_b93) - b93.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunB92.getTransFromAnim(item)); GL11.glPopMatrix(); break; @@ -102,20 +69,8 @@ public class ItemRenderGunAnim implements IItemRenderer { case ENTITY: GL11.glPushMatrix(); GL11.glEnable(GL11.GL_CULL_FACE); - if(item.getItem() == ModItems.gun_lever_action || item.getItem() == ModItems.gun_lever_action_sonata) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelLeverAction.png")); - if(item.getItem() == ModItems.gun_bolt_action) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelBoltActionDark.png")); - if(item.getItem() == ModItems.gun_lever_action_dark) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelLeverActionDark.png")); - if(item.getItem() == ModItems.gun_bolt_action_green) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelBoltActionGreen.png")); - if(item.getItem() == ModItems.gun_bolt_action_saturnite) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelBoltActionSaturnite.png")); if(item.getItem() == ModItems.gun_b92) Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelB92SM.png")); - if(item.getItem() == ModItems.gun_b93) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelB93.png")); GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); @@ -125,18 +80,8 @@ public class ItemRenderGunAnim implements IItemRenderer { GL11.glScalef(0.5F, 0.5F, 0.5F); GL11.glTranslatef(-0.3F, -0.4F, 0.15F); - if(item.getItem() == ModItems.gun_lever_action_sonata) { - GL11.glRotatef(180F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(25F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(2.3F, 0.2F, 0.8F); - } - - if(item.getItem() == ModItems.gun_lever_action_sonata) - flippedGun.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunLeverActionS.getRotationFromAnim(item)); if(item.getItem() == ModItems.gun_b92) b92.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunB92.getTransFromAnim(item)); - if(item.getItem() == ModItems.gun_b93) - b93.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunB92.getTransFromAnim(item)); GL11.glPopMatrix(); default: break; } diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderImmolator.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderImmolator.java deleted file mode 100644 index f5d298186..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderImmolator.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelImmolator; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderImmolator implements IItemRenderer { - - protected ModelImmolator swordModel; - - public ItemRenderImmolator() { - swordModel = new ModelImmolator(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelImmolator.png")); - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.2F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - //GL11.glTranslatef(-0.4F, -0.1F, 0.1F); - GL11.glTranslatef(-0.2F, -0.1F, -0.1F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelImmolator.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(0.5F, -0.2F, 0.0F); - GL11.glScalef(1.25F, 1.25F, 1.25F); - GL11.glTranslatef(-0.8F, 0.0F, 0.0F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - default: break; - } - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderLunaticSniper.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderLunaticSniper.java deleted file mode 100644 index a5de274b8..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderLunaticSniper.java +++ /dev/null @@ -1,138 +0,0 @@ -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 ItemRenderLunaticSniper implements IItemRenderer { - - public ItemRenderLunaticSniper() { - } - - @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_BOBBING || helper == ItemRendererHelper.ENTITY_ROTATION); - } - - static final String slide = "Slide_Cube.020_Cube.007"; - static final String everythingElse = "Full_Cylinder.007"; - static final String spentShell = "Spent_Casing_Casing"; - static final String fullRound = "Full_Round_Bullet"; - - static final float scale1 = 0.2F; - static final float scale2 = 0.1F; - static final float scale3 = 0.15F; - static final float scale4 = 0.7F; - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - GL11.glPushMatrix(); - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); -// double[] eject = HbmAnimations.getRelevantTransformation("EJECT"); - double[] tilt = HbmAnimations.getRelevantTransformation("TILT"); -// double[] insert = HbmAnimations.getRelevantTransformation("INSERT_ROUND"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lunatic_sniper_tex); - - GL11.glShadeModel(GL11.GL_SMOOTH); - - switch (type) { - case EQUIPPED_FIRST_PERSON:// In hand from POV - - if(Minecraft.getMinecraft().thePlayer.isSneaking()) { - GL11.glPopMatrix(); - return; - } - - GL11.glRotatef(-10F, 0F, 1F, 0F); - GL11.glRotatef(-10F, 0F, 0F, 1F); - GL11.glRotatef(90F, 1F, 0F, 0F); - GL11.glRotatef(-58.5F, 0F, 1F, 0F); - GL11.glRotatef(90F, 0F, 0F, 1F); - GL11.glTranslatef(-0.5F, 0F, 0F); - GL11.glScalef(scale1, scale1, scale1); - - /// Begin animations /// - - // Move on recoil - GL11.glTranslated(0, 0, recoil[1] * 10); - GL11.glRotated(recoil[0] * 10, 0, 0, 1); - // Move on reload - GL11.glPushMatrix(); - GL11.glRotated(tilt[0] * 2, 0, 0, 1); - GL11.glRotated(-tilt[1] * 2, 0, 1, 0); - GL11.glTranslated(0, 0, -tilt[1] / 8); - ResourceManager.lunatic_sniper.renderPart(everythingElse); - GL11.glPopMatrix(); - // Release slide - GL11.glPushMatrix(); - GL11.glRotated(tilt[0] * 2, 0, 0, 1); - GL11.glRotated(-tilt[1] * 2, 0, 1, 0); - GL11.glTranslated(0, 0, -tilt[2] * 15); - ResourceManager.lunatic_sniper.renderPart(slide); - GL11.glPopMatrix(); - // Drop in new round - GL11.glPushMatrix(); - GL11.glRotated(tilt[0], 0, 0, 1); - GL11.glTranslated(0, tilt[1], tilt[2]); - ResourceManager.lunatic_sniper.renderPart(fullRound); - GL11.glPopMatrix(); - // Eject casing - GL11.glPushMatrix(); - GL11.glTranslated(0, 2, 0);//FIXME Where on earth is it?! -// ResourceManager.lunatic_sniper.renderPart(spentShell); - GL11.glPopMatrix(); - break; - case EQUIPPED:// In hand from other's POV - GL11.glRotatef(-5F, 0F, 1F, 0F); - GL11.glRotatef(-5F, 0F, 0F, 1F); - GL11.glRotatef(90F, 1F, 0F, 0F); - GL11.glRotatef(-50F, 0F, 1F, 0F); - GL11.glRotatef(90F, 0F, 0F, 1F); - GL11.glTranslatef(-0.05F, -0.2F, -0.75F); - GL11.glScalef(scale2 - scale2 * 2, scale2, scale2); - GL11.glPushMatrix(); -// GL11.glTranslated(eject[0] / 2, 0, -5); -// ResourceManager.lunatic_sniper.renderPart(spentShell); - GL11.glPopMatrix(); - break; - case ENTITY:// Dropped item - GL11.glScalef(scale3, scale3, scale3); - break; - case INVENTORY: - GL11.glTranslatef(10F, 11.5F, 0F); - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-135F, 1.0F, 0.0F, 0.0F); - GL11.glScalef(-scale4, scale4, scale4); - break; - default: - break; - } - - if(type != ItemRenderType.EQUIPPED_FIRST_PERSON) { - ResourceManager.lunatic_sniper.renderAllExcept(fullRound, spentShell); - } - - GL11.glShadeModel(GL11.GL_FLAT); - GL11.glPopMatrix(); - } - -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderM2.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderM2.java deleted file mode 100644 index b4b01c472..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderM2.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; -import com.hbm.render.item.ItemRenderBase; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; - -public class ItemRenderM2 extends ItemRenderBase { - - public ItemRenderM2() { } - - static final float scale1 = 0.35F, scale2 = 2.25F, scale3 = 0.25F, scale4 = 0.5F; - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) - { - switch (type) { - case ENTITY: - GL11.glTranslated(0, -0.25, 0); - GL11.glRotatef(90, 0, 1, 0); - GL11.glScalef(scale4, scale4, scale4); - break; - case EQUIPPED: - GL11.glScalef(scale1, scale1, -scale1); - GL11.glRotatef(-90, 0, 1, 0); - GL11.glTranslatef(-0.4f, 0.5f, -5); - GL11.glRotatef(30, 1, 0, 0); - break; - case EQUIPPED_FIRST_PERSON: - - if (Minecraft.getMinecraft().thePlayer.isSneaking()) { - GL11.glRotatef(-90, 0, 1, 0); - GL11.glTranslatef(-0.96f, -0.9f, -2); - GL11.glRotatef(-5.75f, 0, 1, 1);// Just of by 0.15 - - /* vvv remove to restore original look vvv */ - GL11.glRotatef(1.9F, 0, 0, 1); - GL11.glTranslatef(0.06F, 0, 0); - GL11.glRotatef(-0.2F, 0, 1, 0); - GL11.glRotatef(1F, 1, 0, 0); - GL11.glTranslatef(0, 1.15F, -1.75F); - - } else { - GL11.glRotatef(-95, 0, 1, 0); - GL11.glTranslatef(0, -1, -3); - } - GL11.glRotatef(25, 1, 0, 0); - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - GL11.glTranslated(0, 0, recoil[0] * 0.35); - - break; - case INVENTORY: - GL11.glScalef(scale2, scale2, scale2); - GL11.glTranslated(2.75, 5, 0); - GL11.glRotatef(90, 0, 1, 0); - GL11.glRotatef(-45, 1, 0, 0); - GL11.glRotatef(180, 0, 0, 1); - break; - default: break; - } - GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.m2_tex); - ResourceManager.m2.renderAll(); - GL11.glShadeModel(GL11.GL_FLAT); - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderMIRV.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderMIRV.java deleted file mode 100644 index db3d40b87..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderMIRV.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelMIRV; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderMIRV implements IItemRenderer { - - protected ModelMIRV swordModel; - - public ItemRenderMIRV() { - swordModel = new ModelMIRV(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/Mirv.png")); - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.2F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glScalef(1.5F, 1.5F, 1.5F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/Mirv.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - GL11.glScalef(1.5F, 1.5F, 1.5F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - default: break; - } - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderMIRVLauncher.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderMIRVLauncher.java deleted file mode 100644 index f7d174b2b..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderMIRVLauncher.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelMIRVLauncher; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderMIRVLauncher implements IItemRenderer { - - protected ModelMIRVLauncher swordModel; - - public ItemRenderMIRVLauncher() { - swordModel = new ModelMIRVLauncher(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/MIRVLauncher.png")); - GL11.glRotatef(-150.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.8F, -0.1F, -0.2F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, item); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/MIRVLauncher.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(0.5F, -0.2F, 0.0F); - GL11.glScalef(1.5F, 1.5F, 1.5F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, item); - GL11.glPopMatrix(); - default: break; - } - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderMP.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderMP.java deleted file mode 100644 index 8c957bd95..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderMP.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelMP; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderMP implements IItemRenderer { - - protected ModelMP swordModel; - - public ItemRenderMP() { - swordModel = new ModelMP(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - 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(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelMP.png")); - - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glTranslatef(1.0F, 0.75F, 0.0F); - GL11.glRotatef(150F, 0.0F, 0.0F, -1.0F); - GL11.glScalef(0.75F, 0.75F, 0.75F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - break; - - case EQUIPPED: - GL11.glTranslatef(0.35F, 0.5F, 0.0F); - GL11.glRotatef(100F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(170F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(15F, 0.0F, 0.0F, -1.0F); - GL11.glScalef(0.75F, 0.75F, 0.75F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - break; - - case ENTITY: - GL11.glTranslatef(0.0F, 1.0F, 0.0F); - GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F); - GL11.glScalef(0.75F, 0.75F, 0.75F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - break; - - default: break; - } - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderMP40.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderMP40.java deleted file mode 100644 index 27f454765..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderMP40.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelMP40; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderMP40 implements IItemRenderer { - - protected ModelMP40 swordModel; - - public ItemRenderMP40() { - swordModel = new ModelMP40(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelMP40.png")); - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.2F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - //GL11.glTranslatef(-0.4F, -0.1F, 0.1F); - GL11.glTranslatef(-0.8F, -0.2F, 0.0F); - GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(5.0F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.2F, 0.0F, -0.2F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelMP40.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(0.5F, -0.2F, 0.0F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glTranslatef(-1.8F, -0.2F, 0.2F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - default: break; - } - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderMiniNuke.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderMiniNuke.java deleted file mode 100644 index 6a5d094dd..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderMiniNuke.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelMiniNuke; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderMiniNuke implements IItemRenderer { - - protected ModelMiniNuke swordModel; - - public ItemRenderMiniNuke() { - swordModel = new ModelMiniNuke(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/MiniNuke.png")); - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.2F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glScalef(1.5F, 1.5F, 1.5F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/MiniNuke.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - GL11.glScalef(1.5F, 1.5F, 1.5F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - default: break; - } - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderNukeGadget.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderNukeGadget.java deleted file mode 100644 index 2b188c95c..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderNukeGadget.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; -import net.minecraftforge.client.model.AdvancedModelLoader; -import net.minecraftforge.client.model.IModelCustom; - -public class ItemRenderNukeGadget implements IItemRenderer { - - private IModelCustom gadgetModel; - private ResourceLocation gadgetTexture; - float f = -1; - - public ItemRenderNukeGadget() { - gadgetModel = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/TheGadget3.obj")); - gadgetTexture = new ResourceLocation(RefStrings.MODID, "textures/models/TheGadget3_.png"); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(gadgetTexture); - //GL11.glRotatef(0.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(15.0F, 0.0F, 0.0F, -1.0F); - GL11.glTranslatef(0.8F, 0.2F, 0.5F); - GL11.glScalef(0.25F, 0.25F, 0.25F); - gadgetModel.renderAll(); - GL11.glPopMatrix(); - default: break; - } - } - -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderOSIPR.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderOSIPR.java deleted file mode 100644 index 9dd1937ae..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderOSIPR.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelOSIPR; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderOSIPR implements IItemRenderer { - - protected ModelOSIPR swordModel; - - public ItemRenderOSIPR() { - swordModel = new ModelOSIPR(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelOSIPR.png")); - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.2F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glTranslatef(-0.4F, -0.2F, -0.1F); - GL11.glRotatef(-15.0F, 0.0F, 0.0F, 1.0F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelOSIPR.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(0.5F, -0.2F, 0.0F); - //GL11.glScalef(1.5F, 1.5F, 1.5F); - GL11.glTranslatef(-0.4F, -0.1F, 0.0F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - default: break; - } - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderOverkill.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderOverkill.java deleted file mode 100644 index e44b0444f..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderOverkill.java +++ /dev/null @@ -1,369 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.items.weapon.GunFolly; -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelDash; -import com.hbm.render.model.ModelDefabricator; -import com.hbm.render.model.ModelEuthanasia; -import com.hbm.render.model.ModelFolly; -import com.hbm.render.model.ModelHP; -import com.hbm.render.model.ModelJack; -import com.hbm.render.model.ModelLacunae; -import com.hbm.render.model.ModelPip; -import com.hbm.render.model.ModelSpark; -import com.hbm.render.model.ModelTwiGun; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderOverkill implements IItemRenderer { - - protected ModelJack powerJack; - protected ModelSpark sparkPlug; - protected ModelHP hppLaserjet; - protected ModelEuthanasia euthanasia; - protected ModelDefabricator defab; - protected ModelDash dasher; - protected ModelTwiGun rgottp; - protected ModelPip pip; - protected ModelLacunae lacunae; - protected ModelFolly folly; - - public ItemRenderOverkill() { - powerJack = new ModelJack(); - sparkPlug = new ModelSpark(); - hppLaserjet = new ModelHP(); - euthanasia = new ModelEuthanasia(); - defab = new ModelDefabricator(); - dasher = new ModelDash(); - rgottp = new ModelTwiGun(); - pip = new ModelPip(); - lacunae = new ModelLacunae(); - folly = new ModelFolly(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - float f = 0; - - if((Entity)data[1] instanceof EntityPlayer) - f = ((EntityPlayer)data[1]).getItemInUseDuration(); - - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - - if(item.getItem() == ModItems.gun_jack) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelJack.png")); - if(item.getItem() == ModItems.gun_spark) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelSpark.png")); - if(item.getItem() == ModItems.gun_hp) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelHP.png")); - if(item.getItem() == ModItems.gun_euthanasia) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelEuthanasia.png")); - if(item.getItem() == ModItems.gun_defabricator) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelDefabricator.png")); - if(item.getItem() == ModItems.gun_dash) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelDash.png")); - if(item.getItem() == ModItems.gun_twigun) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelTwiGun.png")); - if(item.getItem() == ModItems.gun_revolver_pip) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPip.png")); - if(item.getItem() == ModItems.gun_revolver_nopip) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPipNoScope.png")); - if(item.getItem() == ModItems.gun_revolver_blackjack) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPipGrey.png")); - if(item.getItem() == ModItems.gun_revolver_silver) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPipSilver.png")); - if(item.getItem() == ModItems.gun_revolver_red) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPipRed.png")); - if(item.getItem() == ModItems.gun_minigun) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelLacunae.png")); - if(item.getItem() == ModItems.gun_lacunae) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelLacunaeReal.png")); - if(item.getItem() == ModItems.gun_folly) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelFolly.png")); - - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.2F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - //GL11.glTranslatef(-0.4F, -0.1F, 0.1F); - GL11.glTranslatef(-0.2F, -0.1F, -0.1F); - - if(item.getItem() == ModItems.gun_defabricator) - GL11.glTranslatef(0, 0.5F, 0.4F); - - if(item.getItem() == ModItems.gun_revolver_pip || - item.getItem() == ModItems.gun_revolver_nopip || - item.getItem() == ModItems.gun_revolver_blackjack || - item.getItem() == ModItems.gun_revolver_silver || - item.getItem() == ModItems.gun_revolver_red) { - GL11.glScalef(0.60F, 0.60F, 0.60F); - GL11.glTranslatef(0.0F, 0.0F, -0.1F); - GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(5.0F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.2F, 0.0F, -0.2F); - } - - if(item.getItem() == ModItems.gun_lacunae || - item.getItem() == ModItems.gun_minigun) { - GL11.glRotatef(-15.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(180, 0, 1, 0); - GL11.glTranslatef(0.5F, 0.3F, -0.2F); - } - - if(item.getItem() == ModItems.gun_folly) { - GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(5.0F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.2F, 0.0F, -0.2F); - } - - if(item.getItem() == ModItems.gun_jack) - powerJack.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_spark) - sparkPlug.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_hp) - hppLaserjet.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_euthanasia) - euthanasia.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_defabricator) - defab.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_dash) - dasher.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_twigun) - rgottp.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_revolver_pip || - item.getItem() == ModItems.gun_revolver_nopip || - item.getItem() == ModItems.gun_revolver_blackjack || - item.getItem() == ModItems.gun_revolver_silver || - item.getItem() == ModItems.gun_revolver_red) - pip.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - - if(item.getItem() == ModItems.gun_lacunae || - item.getItem() == ModItems.gun_minigun) - lacunae.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, ItemGunBase.readNBT(item, "rot")); - - if(item.getItem() == ModItems.gun_folly) { - int state = GunFolly.getState(item); - int time = GunFolly.getTimer(item); - folly.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, state, time); - } - - GL11.glPopMatrix(); - break; - case EQUIPPED: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - if(item.getItem() == ModItems.gun_jack) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelJack.png")); - if(item.getItem() == ModItems.gun_spark) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelSpark.png")); - if(item.getItem() == ModItems.gun_hp) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelHP.png")); - if(item.getItem() == ModItems.gun_euthanasia) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelEuthanasia.png")); - if(item.getItem() == ModItems.gun_defabricator) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelDefabricator.png")); - if(item.getItem() == ModItems.gun_dash) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelDash.png")); - if(item.getItem() == ModItems.gun_twigun) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelTwiGun.png")); - if(item.getItem() == ModItems.gun_revolver_pip) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPip.png")); - if(item.getItem() == ModItems.gun_revolver_nopip) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPipNoScope.png")); - if(item.getItem() == ModItems.gun_revolver_blackjack) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPipGrey.png")); - if(item.getItem() == ModItems.gun_revolver_silver) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPipSilver.png")); - if(item.getItem() == ModItems.gun_revolver_red) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPipRed.png")); - if(item.getItem() == ModItems.gun_minigun) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelLacunae.png")); - if(item.getItem() == ModItems.gun_lacunae) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelLacunaeReal.png")); - if(item.getItem() == ModItems.gun_folly) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelFolly.png")); - - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(0.5F, -0.2F, 0.0F); - //GL11.glScalef(0.75F, 0.75F, 0.75F); - GL11.glTranslatef(-1.4F, 0.0F, 0.0F); - if(item.getItem() == ModItems.gun_jack) - GL11.glTranslatef(0.3F, 0, 0); - if(item.getItem() == ModItems.gun_spark) - GL11.glTranslatef(0.4F, 0, 0); - if(item.getItem() == ModItems.gun_hp) - GL11.glTranslatef(0.5F, 0.2F, 0); - if(item.getItem() == ModItems.gun_defabricator) - GL11.glTranslatef(0.5F, 0.6F, -0.2F); - - if(item.getItem() == ModItems.gun_revolver_pip || - item.getItem() == ModItems.gun_revolver_nopip || - item.getItem() == ModItems.gun_revolver_blackjack || - item.getItem() == ModItems.gun_revolver_silver || - item.getItem() == ModItems.gun_revolver_red) { - GL11.glScalef(0.60F, 0.60F, 0.60F); - GL11.glTranslatef(0.7F, 0.3F, 0.0F); - } - if(item.getItem() == ModItems.gun_lacunae || - item.getItem() == ModItems.gun_minigun) { - GL11.glRotatef(5.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(185, 0, 1, 0); - GL11.glTranslatef(0.5F, 0.6F, 0.2F); - } - if(item.getItem() == ModItems.gun_folly) { - GL11.glTranslatef(0.6F, 0.0F, 0.0F); - } - - if(item.getItem() == ModItems.gun_jack) - powerJack.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_spark) - sparkPlug.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_hp) - hppLaserjet.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_euthanasia) - euthanasia.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_defabricator) - defab.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_dash) - dasher.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_twigun) - rgottp.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_revolver_pip || - item.getItem() == ModItems.gun_revolver_nopip || - item.getItem() == ModItems.gun_revolver_blackjack || - item.getItem() == ModItems.gun_revolver_silver || - item.getItem() == ModItems.gun_revolver_red) - pip.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - - if(item.getItem() == ModItems.gun_lacunae || - item.getItem() == ModItems.gun_minigun) - lacunae.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, f); - - if(item.getItem() == ModItems.gun_folly) { - int state = GunFolly.getState(item); - int time = GunFolly.getTimer(item); - folly.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, state, time); - } - GL11.glPopMatrix(); - break; - case ENTITY: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - if(item.getItem() == ModItems.gun_jack) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelJack.png")); - if(item.getItem() == ModItems.gun_spark) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelSpark.png")); - if(item.getItem() == ModItems.gun_hp) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelHP.png")); - if(item.getItem() == ModItems.gun_euthanasia) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelEuthanasia.png")); - if(item.getItem() == ModItems.gun_defabricator) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelDefabricator.png")); - if(item.getItem() == ModItems.gun_dash) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelDash.png")); - if(item.getItem() == ModItems.gun_twigun) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelTwiGun.png")); - if(item.getItem() == ModItems.gun_revolver_pip) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPip.png")); - if(item.getItem() == ModItems.gun_revolver_nopip) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPipNoScope.png")); - if(item.getItem() == ModItems.gun_revolver_blackjack) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPipGrey.png")); - if(item.getItem() == ModItems.gun_revolver_silver) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPipSilver.png")); - if(item.getItem() == ModItems.gun_revolver_red) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPipRed.png")); - if(item.getItem() == ModItems.gun_minigun) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelLacunae.png")); - if(item.getItem() == ModItems.gun_lacunae) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelLacunaeReal.png")); - if(item.getItem() == ModItems.gun_folly) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelFolly.png")); - - - GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F); - - if(item.getItem() == ModItems.gun_revolver_pip || - item.getItem() == ModItems.gun_revolver_nopip || - item.getItem() == ModItems.gun_revolver_blackjack || - item.getItem() == ModItems.gun_revolver_silver || - item.getItem() == ModItems.gun_revolver_red) { - GL11.glScalef(0.60F, 0.60F, 0.60F); - } - if(item.getItem() == ModItems.gun_calamity) { - GL11.glScalef(0.75F, 0.75F, 0.75F); - } - if(item.getItem() == ModItems.gun_lacunae || - item.getItem() == ModItems.gun_minigun) { - GL11.glTranslatef(0, -1, 0); - GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F); - } - - if(item.getItem() == ModItems.gun_jack) - powerJack.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_spark) - sparkPlug.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_hp) - hppLaserjet.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_euthanasia) - euthanasia.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_defabricator) - defab.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_dash) - dasher.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_twigun) - rgottp.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_revolver_pip || - item.getItem() == ModItems.gun_revolver_nopip || - item.getItem() == ModItems.gun_revolver_blackjack || - item.getItem() == ModItems.gun_revolver_silver || - item.getItem() == ModItems.gun_revolver_red) - pip.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - - if(item.getItem() == ModItems.gun_lacunae || - item.getItem() == ModItems.gun_minigun) - lacunae.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, f); - - if(item.getItem() == ModItems.gun_folly) { - int state = GunFolly.getState(item); - int time = GunFolly.getTimer(item); - folly.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, state, time); - } - GL11.glPopMatrix(); - break; - default: break; - } - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolver.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolver.java deleted file mode 100644 index b7f8ce1c0..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolver.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelRevolver; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderRevolver implements IItemRenderer { - - protected ModelRevolver swordModel; - - public ItemRenderRevolver() { - swordModel = new ModelRevolver(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - - if(item.getItem() == ModItems.gun_revolver) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelRevolver.png")); - if(item.getItem() == ModItems.gun_revolver_saturnite) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelRevolverSaturnite.png")); - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.2F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - - GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(5.0F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.2F, 0.0F, -0.2F); - - //((EntityPlayer)data[1]).isSwingInProgress = false; - - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - if(item.getItem() == ModItems.gun_revolver) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelRevolver.png")); - if(item.getItem() == ModItems.gun_revolver_saturnite) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelRevolverSaturnite.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - default: break; - } - } - -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverCursed.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverCursed.java deleted file mode 100644 index 937c936bb..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverCursed.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelGun; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderRevolverCursed implements IItemRenderer { - - protected ModelGun swordModel; - - public ItemRenderRevolverCursed() { - swordModel = new ModelGun(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelGun.png")); - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.2F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(5.0F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.2F, 0.0F, -0.2F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelGun.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - default: break; - } - } - -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverGold.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverGold.java deleted file mode 100644 index 76cb564ea..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverGold.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelRevolver; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderRevolverGold implements IItemRenderer { - - protected ModelRevolver swordModel; - - public ItemRenderRevolverGold() { - swordModel = new ModelRevolver(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelRevolverGold.png")); - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.2F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(5.0F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.2F, 0.0F, -0.2F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelRevolverGold.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - default: break; - } - } - -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverInverted.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverInverted.java deleted file mode 100644 index c2f5b537d..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverInverted.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; -import com.hbm.render.model.ModelRevolver; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderRevolverInverted implements IItemRenderer { - - protected ModelRevolver swordModel; - - public ItemRenderRevolverInverted() { - swordModel = new ModelRevolver(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - 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) { - - boolean inUse = false; - if(data != null && data.length > 1 && data[1] instanceof EntityPlayer) - inUse = (((EntityPlayer)data[1]).getItemInUse() != null && ((EntityPlayer)data[1]).getItemInUse().getItemUseAction() == EnumAction.bow); - - GL11.glPushMatrix(); - - GL11.glEnable(GL11.GL_CULL_FACE); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 1.5D; - GL11.glTranslated(0.75, 0.5, 0); - GL11.glScaled(s0, s0, s0); - GL11.glRotated(100, 0, -1, 0); - GL11.glRotated(25, 1, 0, 0); - - if(inUse) { - GL11.glTranslated(-0.4, 0, 0); - GL11.glRotated(198, 0, 1, 0); - GL11.glRotated(-10, 1, 0, 0); - } - - break; - - case EQUIPPED: - - double scale = 1.5D; - GL11.glRotated(195, 0, 1, 0); - GL11.glRotated(-10, 0, 0, 1); - GL11.glRotated(-10, 1, 0, 0); - GL11.glTranslated(-0.5, 0.1, -0.25); - GL11.glScaled(scale, scale, scale); - - if(inUse) { - GL11.glTranslated(-0.05, 0, 0); - GL11.glRotated(-15, 0, 0, 1); - GL11.glRotated(160, 0, 1, 0); - } - - break; - - case ENTITY: - - double s1 = 1D; - GL11.glScaled(s1, s1, s1); - GL11.glRotated(90, 0, 1, 0); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 17D; - GL11.glTranslated(8, 8, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glRotated(90, 0, 1, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ff_gun_bright); - ResourceManager.ff_python.renderPart("Body"); - ResourceManager.ff_python.renderPart("Cylinder"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ff_wood); - ResourceManager.ff_python.renderPart("Grip"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ff_iron); - ResourceManager.ff_python.renderPart("Hammer"); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverIron.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverIron.java deleted file mode 100644 index a84199cf8..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverIron.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelRevolver; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderRevolverIron implements IItemRenderer { - - protected ModelRevolver swordModel; - - public ItemRenderRevolverIron() { - swordModel = new ModelRevolver(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelRevolverIron.png")); - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.2F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(5.0F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.2F, 0.0F, -0.2F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelRevolverIron.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - default: break; - } - } - -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverLead.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverLead.java deleted file mode 100644 index 6833e5184..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverLead.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelRevolver; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderRevolverLead implements IItemRenderer { - - protected ModelRevolver swordModel; - - public ItemRenderRevolverLead() { - swordModel = new ModelRevolver(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelRevolverLead.png")); - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.2F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(5.0F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.2F, 0.0F, -0.2F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelRevolverLead.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - default: break; - } - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverNightmare.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverNightmare.java deleted file mode 100644 index 900012ce6..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverNightmare.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelNightmare; -import com.hbm.render.model.ModelNightmare2; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderRevolverNightmare implements IItemRenderer { - - protected ModelNightmare n1; - protected ModelNightmare2 n2; - protected Item item; - - public ItemRenderRevolverNightmare(Item item) { - n1 = new ModelNightmare(); - n2 = new ModelNightmare2(); - this.item = item; - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - if(this.item == ModItems.gun_revolver_nightmare) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelNightmare.png")); - if(this.item == ModItems.gun_revolver_nightmare2) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelNightmare2.png")); - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.2F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(5.0F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.2F, 0.0F, -0.2F); - if(this.item == ModItems.gun_revolver_nightmare) - n1.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, item); - if(this.item == ModItems.gun_revolver_nightmare2) - n2.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, item); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - if(this.item == ModItems.gun_revolver_nightmare) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelNightmare.png")); - if(this.item == ModItems.gun_revolver_nightmare2) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelNightmare2.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - if(this.item == ModItems.gun_revolver_nightmare) - n1.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, item); - if(this.item == ModItems.gun_revolver_nightmare2) - n2.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, item); - GL11.glPopMatrix(); - default: break; - } - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverSchrabidium.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverSchrabidium.java deleted file mode 100644 index 0766c6fb5..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverSchrabidium.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelRevolver; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderRevolverSchrabidium implements IItemRenderer { - - protected ModelRevolver swordModel; - - public ItemRenderRevolverSchrabidium() { - swordModel = new ModelRevolver(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelRevolverSchrabidium.png")); - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.2F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(5.0F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.2F, 0.0F, -0.2F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelRevolverSchrabidium.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - default: break; - } - } - -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderRocket.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderRocket.java deleted file mode 100644 index 8a2533a48..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderRocket.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelRocket; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderRocket implements IItemRenderer { - - protected ModelRocket swordModel; - - public ItemRenderRocket() { - swordModel = new ModelRocket(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelRocket.png")); - GL11.glRotatef(-45.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(0.0F, 0.6F, -0.5F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelRocket.png")); - GL11.glRotatef(-110.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 2.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, 0.5F, 0.0F); - GL11.glScalef(2.0F, 2.0F, 2.0F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - default: break; - } - } - -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderRpg.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderRpg.java deleted file mode 100644 index 7b4b427b5..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderRpg.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelGustav; -import com.hbm.render.model.ModelPanzerschreck; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderRpg implements IItemRenderer { - - protected ModelGustav swordModel; - protected ModelPanzerschreck panz; - - public ItemRenderRpg() { - swordModel = new ModelGustav(); - panz = new ModelPanzerschreck(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - if(item.getItem() == ModItems.gun_rpg) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelGustav.png")); - if(item.getItem() == ModItems.gun_karl) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelGustavYellow.png")); - if(item.getItem() == ModItems.gun_panzerschreck) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPanzerschreck.png")); - - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glTranslatef(0.4F, -1.0F, -0.7F); - - if(item.getItem() == ModItems.gun_panzerschreck) { - GL11.glScalef(1.5F, 1.5F, 1.5F); - - if(Minecraft.getMinecraft().thePlayer.isSneaking()) - GL11.glTranslatef(-0.2F, -0.3F, -0.5F); - else - GL11.glTranslatef(-0.1F, 0.0F, 0.0F); - } else { - GL11.glTranslatef(0F, -0.1F, -0.4F); - } - - GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(5.0F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.2F, 0.0F, -0.2F); - - if(item.getItem() == ModItems.gun_rpg) - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_karl) - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_panzerschreck) - panz.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - if(item.getItem() == ModItems.gun_rpg) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelGustav.png")); - if(item.getItem() == ModItems.gun_karl) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelGustavYellow.png")); - if(item.getItem() == ModItems.gun_panzerschreck) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPanzerschreck.png")); - - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(0.9F, 0.0F, 0.1F); - - if(item.getItem() == ModItems.gun_panzerschreck) { - GL11.glTranslatef(-0.5F, -0.1F, 0F); - GL11.glScalef(1.5F, 1.5F, 1.5F); - } - - if(item.getItem() == ModItems.gun_rpg) - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_karl) - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_panzerschreck) - panz.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - default: break; - } - } - -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderStinger.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderStinger.java deleted file mode 100644 index 5e5b5d36d..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderStinger.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.main.ResourceManager; -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderStinger implements IItemRenderer { - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - - ResourceLocation stingerTex = item.getItem() == ModItems.gun_stinger ? ResourceManager.stinger_tex : ResourceManager.sky_stinger_tex; - Minecraft.getMinecraft().renderEngine.bindTexture(stingerTex); - GL11.glPushMatrix(); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.25D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(-0.5, -0.7, -0.5); - GL11.glRotated(-100, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-170, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-15F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(-2F, -3F, 4.0F); - - break; - - case ENTITY: - - double s1 = 0.2D; - GL11.glScaled(s1, s1, s1); - GL11.glTranslatef(0F, -2.5F, 0F); - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.75D; - GL11.glTranslated(4, 11, 0); - GL11.glRotated(90, 0, 1, 0); - GL11.glRotated(135, 1, 0, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - ResourceManager.stinger.renderAll(); - GL11.glPopMatrix(); - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderUACPistol.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderUACPistol.java deleted file mode 100644 index 2ce940cc0..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderUACPistol.java +++ /dev/null @@ -1,109 +0,0 @@ -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.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderUACPistol implements IItemRenderer { - Minecraft mc = Minecraft.getMinecraft(); - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - return type == ItemRenderType.FIRST_PERSON_MAP ? false : true; - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_BOBBING || helper == ItemRendererHelper.ENTITY_ROTATION); - } - - static final String lower = "lower_pistol_0"; - static final String mag = "mag_pistol_0"; - static final String slide = "slide_pistol_0"; - static final String trigger = "trigger_pistol_0"; - static final String hammer = "bool_obj_bool_obj_data.002"; - - static final float scale1 = 0.05F; - static final float scale2 = 0.025F; - static final float scale3 = 0.05F; - static final float scale4 = 0.55F; - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - GL11.glPushMatrix(); - mc.renderEngine.bindTexture(ResourceManager.uac_pistol_tex); - EntityPlayer player = mc.thePlayer; - GL11.glShadeModel(GL11.GL_SMOOTH); - - double[] slideAnim = HbmAnimations.getRelevantTransformation("SLIDE"); - double[] hammerAnim = HbmAnimations.getRelevantTransformation("HAMMER"); - - switch(type) { - case ENTITY:// Dropped item - GL11.glScalef(scale1, scale1, scale1); - break; - case EQUIPPED:// In hand from other's POV - GL11.glScalef(scale2, scale2, scale2); - GL11.glRotatef(90F, 0F, 1F, 0F); - GL11.glRotatef(-45F, 1F, 0F, 0F); - GL11.glTranslatef(0F, -12F, 30F); - - GL11.glPushMatrix(); - ResourceManager.uac_pistol.renderOnly(trigger, mag, lower); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - GL11.glTranslated(slideAnim[0], slideAnim[1], slideAnim[2] * 2); - ResourceManager.uac_pistol.renderPart(slide); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - GL11.glRotated(hammerAnim[0], 1F, 0F, 0F); - ResourceManager.uac_pistol.renderPart(hammer); - GL11.glPopMatrix(); - break; - case EQUIPPED_FIRST_PERSON:// In hand from POV - GL11.glScalef(scale3, scale3, scale3); - GL11.glRotatef(90F, 0F, 1F, 0F); - if(player.isSneaking()) { - GL11.glRotatef(-25F, 1F, 0F, 0F); - GL11.glRotatef(-5F, 0F, 1F, 0F); - GL11.glTranslatef(20.15F, 3.5F, 18F); - } else { - GL11.glRotatef(-25F, 1F, 0F, 0F); - GL11.glTranslatef(-3F, -5F, 20F); - } - GL11.glPushMatrix(); - GL11.glTranslated(slideAnim[0], slideAnim[1], slideAnim[2] * 2); - ResourceManager.uac_pistol.renderPart(slide); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - GL11.glRotated(hammerAnim[0], 1F, 0F, 0F); - ResourceManager.uac_pistol.renderPart(hammer); - GL11.glPopMatrix(); - break; - case INVENTORY: - GL11.glScalef(scale4, scale4, scale4); - GL11.glRotatef(90F, 0F, 1F, 0F); - GL11.glRotatef(150F, 1F, 0F, 0F); - GL11.glTranslatef(0F, -8F, -24F); - break; - default: - break; - } - if(type != ItemRenderType.EQUIPPED_FIRST_PERSON && type != ItemRenderType.EQUIPPED) - ResourceManager.uac_pistol.renderAll(); - else - ResourceManager.uac_pistol.renderOnly(trigger, mag, lower); - GL11.glShadeModel(GL11.GL_FLAT); - GL11.glPopMatrix(); - } - -} \ No newline at end of file diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderUZI.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderUZI.java deleted file mode 100644 index 75466cb35..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderUZI.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelUzi; -import com.hbm.render.model.ModelUziBarrel; -import com.hbm.render.model.ModelUziSilencer; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderUZI implements IItemRenderer { - - protected ModelUzi uzi; - protected ModelUziBarrel barrel; - protected ModelUziSilencer silencer; - - public ItemRenderUZI() { - uzi = new ModelUzi(); - barrel = new ModelUziBarrel(); - silencer = new ModelUziSilencer(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glScalef(0.25F, 0.25F, 0.25F); - GL11.glTranslatef(-2.5F, -0.5F, -0.9F); - - GL11.glRotatef(-15.0F, 0.0F, 0.0F, 1.0F); - - if(item.getItem() == ModItems.gun_uzi || item.getItem() == ModItems.gun_uzi_silencer) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelUzi.png")); - if(item.getItem() == ModItems.gun_uzi_saturnite || item.getItem() == ModItems.gun_uzi_saturnite_silencer) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelUziSaturnite.png")); - - uzi.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - - if(item.getItem() == ModItems.gun_uzi || item.getItem() == ModItems.gun_uzi_saturnite) { - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelUziBarrel.png")); - barrel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - } - - if(item.getItem() == ModItems.gun_uzi_silencer || item.getItem() == ModItems.gun_uzi_saturnite_silencer) { - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelUziSilencer.png")); - silencer.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - } - - GL11.glPopMatrix(); - break; - case EQUIPPED: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F); - - GL11.glScalef(0.5F, 0.5F, 0.5F); - - GL11.glTranslatef(0.2F, -0.8F, -1.0F); - - if(item.getItem() == ModItems.gun_uzi || item.getItem() == ModItems.gun_uzi_silencer) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelUzi.png")); - if(item.getItem() == ModItems.gun_uzi_saturnite || item.getItem() == ModItems.gun_uzi_saturnite_silencer) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelUziSaturnite.png")); - uzi.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - - if(item.getItem() == ModItems.gun_uzi || item.getItem() == ModItems.gun_uzi_saturnite) { - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelUziBarrel.png")); - barrel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - } - - if(item.getItem() == ModItems.gun_uzi_silencer || item.getItem() == ModItems.gun_uzi_saturnite_silencer) { - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelUziSilencer.png")); - silencer.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - } - - GL11.glPopMatrix(); - break; - case ENTITY: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F); - - GL11.glScalef(0.5F, 0.5F, 0.5F); - - GL11.glTranslatef(0.0F, -1.0F, 0.0F); - - if(item.getItem() == ModItems.gun_uzi || item.getItem() == ModItems.gun_uzi_silencer) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelUzi.png")); - if(item.getItem() == ModItems.gun_uzi_saturnite || item.getItem() == ModItems.gun_uzi_saturnite_silencer) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelUziSaturnite.png")); - uzi.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - - if(item.getItem() == ModItems.gun_uzi || item.getItem() == ModItems.gun_uzi_saturnite) { - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelUziBarrel.png")); - barrel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - } - - if(item.getItem() == ModItems.gun_uzi_silencer || item.getItem() == ModItems.gun_uzi_saturnite_silencer) { - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelUziSilencer.png")); - silencer.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - } - - GL11.glPopMatrix(); - default: break; - } - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderUboinik.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderUboinik.java deleted file mode 100644 index 173716ef6..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderUboinik.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelUboinik; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderUboinik implements IItemRenderer { - - protected ModelUboinik swordModel; - - public ItemRenderUboinik() { - swordModel = new ModelUboinik(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelUboinik.png")); - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.2F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - //GL11.glTranslatef(-0.4F, -0.1F, 0.1F); - GL11.glTranslatef(-0.2F, -0.4F, -0.1F); - GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(5.0F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.2F, 0.0F, -0.2F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, item); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelUboinik.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(0.5F, -0.2F, 0.0F); - GL11.glScalef(0.75F, 0.75F, 0.75F); - GL11.glTranslatef(-1.4F, 0.0F, 0.0F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, item); - GL11.glPopMatrix(); - default: break; - } - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponAR15.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponAR15.java deleted file mode 100644 index 27e348b32..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponAR15.java +++ /dev/null @@ -1,123 +0,0 @@ -package com.hbm.render.item.weapon; - -import com.hbm.render.anim.HbmAnimations; -import net.minecraftforge.client.model.IModelCustom; -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponAR15 implements IItemRenderer { - - public ItemRenderWeaponAR15() { } - - @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.glShadeModel(GL11.GL_SMOOTH); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ar15_tex); - - IModelCustom model = ResourceManager.ar15; - - switch (type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.25D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(1.25, 0, -0.25); - GL11.glRotated(-100, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - GL11.glRotated(recoil[0] * 2.5, 1, 0, 0); - GL11.glTranslated(0, 0, recoil[0]); - - - double[] tilt = HbmAnimations.getRelevantTransformation("TILT"); - GL11.glTranslated(0, tilt[0], 3); - GL11.glRotated(tilt[0] * -35, 0, 0, 1); - GL11.glTranslated(0, 0, -3); - - model.renderPart("main"); - - double[] mag = HbmAnimations.getRelevantTransformation("MAG"); - GL11.glPushMatrix(); - GL11.glTranslated(0, 0, 5); - GL11.glRotated(mag[0] * 60 * (mag[2] == 1 ? 2.5 : 1), -1, 0, 0); - GL11.glTranslated(0, 0, -5); - model.renderPart("mag"); - GL11.glPopMatrix(); - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-170, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-15F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(-2F, -0.9F, -0.75F); - - break; - - case ENTITY: - - double s1 = 0.2D; - GL11.glScaled(s1, s1, s1); - GL11.glTranslated(0, 1, 0); - GL11.glRotatef(90, 0, 1, 0); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.45D; - - GL11.glTranslated(6, 9, 0); - GL11.glRotated(90, 0, 1, 0); - GL11.glRotated(135, 1, 0, 0); - GL11.glScaled(s, s, -s); - - break; - - default: - break; - } - - if (type != ItemRenderType.EQUIPPED_FIRST_PERSON) { - model.renderAll(); - } - - GL11.glShadeModel(GL11.GL_FLAT); - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponBolter.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponBolter.java deleted file mode 100644 index 7683fa149..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponBolter.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.renderer.OpenGlHelper; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponBolter implements IItemRenderer { - - public ItemRenderWeaponBolter() { } - - @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.glShadeModel(GL11.GL_SMOOTH); - - if(item.getItem() == ModItems.gun_bolter) - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.bolter_tex); - if(item.getItem() == ModItems.gun_bolter_digamma) - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.bolter_digamma_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.25D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(1.25, -0.25, -0.25); - GL11.glRotated(-100, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - GL11.glRotated(recoil[0] * 5, 1, 0, 0); - GL11.glTranslated(0, 0, recoil[0]); - - double[] tilt = HbmAnimations.getRelevantTransformation("TILT"); - GL11.glTranslated(0, tilt[0], 3); - GL11.glRotated(tilt[0] * 35, 1, 0, 0); - GL11.glTranslated(0, 0, -3); - - ResourceManager.bolter.renderPart("Body"); - - double[] mag = HbmAnimations.getRelevantTransformation("MAG"); - GL11.glPushMatrix(); - GL11.glTranslated(0, 0, 5); - GL11.glRotated(mag[0] * 60 * (mag[2] == 1 ? 2.5 : 1), -1, 0, 0); - GL11.glTranslated(0, 0, -5); - ResourceManager.bolter.renderPart("Mag"); - if(mag[2] != 1) - ResourceManager.bolter.renderPart("Bullet"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - double[] casing = HbmAnimations.getRelevantTransformation("EJECT"); - GL11.glTranslated(casing[2] * 5, casing[2] * 2, 0); - GL11.glRotated(casing[2] * 60, 1, 0, 0); - ResourceManager.bolter.renderPart("Casing"); - GL11.glPopMatrix(); - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-170, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-15F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(-2F, -0.9F, -0.75F); - - break; - - case ENTITY: - - double s1 = 0.2D; - GL11.glScaled(s1, s1, s1); - GL11.glTranslated(0, 1, 0); - GL11.glRotatef(90, 0, 1, 0); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 2.5D; - GL11.glTranslated(6, 10, 0); - GL11.glRotated(90, 0, 1, 0); - GL11.glRotated(135, 1, 0, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - if(type != ItemRenderType.EQUIPPED_FIRST_PERSON) { - ResourceManager.bolter.renderAll(); - } - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPushMatrix(); - GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - OpenGlHelper.glBlendFunc(770, 771, 1, 0); - OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); - - FontRenderer font = Minecraft.getMinecraft().fontRenderer; - String s = ((ItemGunBase) item.getItem()).getMag(item) + ""; - float f3 = 0.04F; - GL11.glTranslatef(0.025F - (font.getStringWidth(s) / 2) * 0.04F, 2.11F, 2.91F); - GL11.glScalef(f3, -f3, f3); - GL11.glRotatef(45, 1, 0, 0); - GL11.glNormal3f(0.0F, 0.0F, -1.0F * f3); - font.drawString(s, 0, 0, 0xff0000); - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glPopAttrib(); - GL11.glPopMatrix(); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponChemthrower.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponChemthrower.java deleted file mode 100644 index 4996d353e..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponChemthrower.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.weapon.ItemGunChemthrower; -import com.hbm.main.ResourceManager; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponChemthrower 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); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.chemthrower_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.25D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(1.0, 0.0, 0.0); - GL11.glRotated(170, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glScaled(scale, scale, scale); - GL11.glRotated(100, 0, 1, 0); - GL11.glRotated(-10, 1, 0, 0); - GL11.glRotated(10, 0, 0, 1); - GL11.glTranslatef(-0.25F, -2.5F, 1.75F); - - break; - - case ENTITY: - - double s1 = 0.25D; - GL11.glScaled(s1, s1, s1); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.5D; - GL11.glTranslated(9, 9, 0); - GL11.glRotated(180, 1, 0, 0); - GL11.glRotated(45, 0, 0, -1); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - ItemGunChemthrower chem = (ItemGunChemthrower) item.getItem(); - - GL11.glShadeModel(GL11.GL_SMOOTH); - - ResourceManager.chemthrower.renderPart("Gun"); - ResourceManager.chemthrower.renderPart("Hose"); - ResourceManager.chemthrower.renderPart("Nozzle"); - - GL11.glTranslated(0, 0.875, 1.75); - double d = (double) chem.getMag(item) / (double) chem.mainConfig.ammoCap; - GL11.glRotated(135 - d * 270, 1, 0, 0); - GL11.glTranslated(0, -0.875, -1.75); - - ResourceManager.chemthrower.renderPart("Gauge"); - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCoilgun.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCoilgun.java deleted file mode 100644 index 4bca0361c..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCoilgun.java +++ /dev/null @@ -1,100 +0,0 @@ -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 ItemRenderWeaponCoilgun 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.coilgun_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.25D; - GL11.glRotated(20, 0, 0, 1); - GL11.glTranslated(0.75, 0.3, -0.5); - GL11.glRotated(-10, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - GL11.glTranslated(-1.5 - recoil[0] * 0.5, 0, 0); - GL11.glRotated(recoil[0] * 45, 0, 0, 1); - GL11.glTranslated(1.5, 0, 0); - - double[] reload = HbmAnimations.getRelevantTransformation("RELOAD"); - GL11.glTranslated(-2.5, 0, 0); - GL11.glRotated(reload[0] * -45, 0, 0, 1); - GL11.glTranslated(2.5, 0, 0); - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-80, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-15F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(1.25F, 0.5F, -1.75F); - - break; - - case ENTITY: - - double s1 = 0.2D; - GL11.glScaled(s1, s1, s1); - - break; - - case INVENTORY: - - double s = 3.5D; - GL11.glTranslated(6, 8, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - GL11.glShadeModel(GL11.GL_SMOOTH); - ResourceManager.coilgun.renderAll(); - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCongo.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCongo.java deleted file mode 100644 index 07cac42d7..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCongo.java +++ /dev/null @@ -1,164 +0,0 @@ -package com.hbm.render.item.weapon; - -import java.awt.Color; - -import org.lwjgl.opengl.GL11; - -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.main.ResourceManager; -import com.hbm.particle.SpentCasing; -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.glShadeModel(GL11.GL_SMOOTH); - - 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); - - HbmAnimations.applyRelevantTransformation("Gun"); - ResourceManager.congolake.renderPart("Gun"); - - - GL11.glPushMatrix(); - { - HbmAnimations.applyRelevantTransformation("Pump"); - ResourceManager.congolake.renderPart("Pump"); - } - GL11.glPopMatrix(); - - - GL11.glPushMatrix(); - { - HbmAnimations.applyRelevantTransformation("Sight"); - ResourceManager.congolake.renderPart("Sight"); - } - GL11.glPopMatrix(); - - - GL11.glPushMatrix(); - { - HbmAnimations.applyRelevantTransformation("Loop"); - ResourceManager.congolake.renderPart("Loop"); - } - GL11.glPopMatrix(); - - - GL11.glPushMatrix(); - { - HbmAnimations.applyRelevantTransformation("GuardOuter"); - ResourceManager.congolake.renderPart("GuardOuter"); - - GL11.glPushMatrix(); - { - HbmAnimations.applyRelevantTransformation("GuardInner"); - ResourceManager.congolake.renderPart("GuardInner"); - } - GL11.glPopMatrix(); - } - GL11.glPopMatrix(); - - - GL11.glPushMatrix(); - { - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.casings_tex); - - HbmAnimations.applyRelevantTransformation("Shell"); - - ItemGunBase gun = (ItemGunBase)item.getItem(); - BulletConfiguration bullet = BulletConfigSyncingUtil.pullConfig(gun.mainConfig.config.get(ItemGunBase.getMagType(item))); - int[] colors = bullet.spentCasing != null ? bullet.spentCasing.getColors() : new int[] { SpentCasing.COLOR_CASE_40MM }; - - Color shellColor = new Color(colors[0]); - GL11.glColor3f(shellColor.getRed() / 255F, shellColor.getGreen() / 255F, shellColor.getBlue() / 255F); - ResourceManager.congolake.renderPart("Shell"); - - Color shellForeColor = new Color(colors.length > 1 ? colors[1] : colors[0]); - GL11.glColor3f(shellForeColor.getRed() / 255F, shellForeColor.getGreen() / 255F, shellForeColor.getBlue() / 255F); - ResourceManager.congolake.renderPart("ShellFore"); - - GL11.glColor3f(1F, 1F, 1F); - } - GL11.glPopMatrix(); - - 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) { - ResourceManager.congolake.renderAll(); - } - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFBolt.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFBolt.java deleted file mode 100644 index d1c7b88aa..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFBolt.java +++ /dev/null @@ -1,146 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; -import net.minecraftforge.client.model.IModelCustom; - -public class ItemRenderWeaponFFBolt implements IItemRenderer { - - ResourceLocation texture; - IModelCustom model; - - public ItemRenderWeaponFFBolt(IModelCustom model, ResourceLocation texture) { - this.model = model; - this.texture = texture; - } - - @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.glShadeModel(GL11.GL_SMOOTH); - boolean renderBolt = true; - Minecraft.getMinecraft().renderEngine.bindTexture(texture); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - if(item.getItem() == ModItems.gun_bolt_action_saturnite && Minecraft.getMinecraft().thePlayer.isSneaking()) { - GL11.glPopMatrix(); - return; - } - - double s0 = 0.5D; - GL11.glTranslated(0.5, 0.25, -0.2); - GL11.glScaled(s0, s0, s0); - GL11.glRotated(15, 0, 0, 1); - GL11.glRotated(20, 0, -1, 0); - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - GL11.glTranslated(recoil[0] * -0.5, 0, 0); - - double[] pull = HbmAnimations.getRelevantTransformation("LEVER_PULL"); - double[] rotate = HbmAnimations.getRelevantTransformation("LEVER_ROTATE"); - - GL11.glPushMatrix(); - GL11.glTranslated(pull[0], 0, 0); - double heightOffset = 0.52D; - GL11.glTranslated(0, heightOffset, 0); - GL11.glRotated(rotate[0] * 35, -1, 0, 0); - GL11.glTranslated(0, -heightOffset, 0); - model.renderPart("Bolt"); - GL11.glPopMatrix(); - - renderBolt = false; - - /*if(item.getItem() == ModItems.gun_bolt_action_saturnite) { - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_LIGHTING); - - Tessellator tessellator = Tessellator.instance; - int color = 0x00FF00; - - tessellator.startDrawing(3); - tessellator.setColorOpaque_I(color); - tessellator.addVertex(5, 0, 0); - tessellator.addVertex(150, 0, 0); - tessellator.draw(); - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glPopMatrix(); - }*/ - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glRotated(-75, 0, 1, 0); - GL11.glRotated(-10, 0, 0, 1); - GL11.glRotated(10, 1, 0, 0); - GL11.glTranslated(0.3, 0.15, -0.5); - GL11.glScaled(scale, scale, scale); - - break; - - case ENTITY: - - double s1 = 0.25D; - GL11.glScaled(s1, s1, s1); - GL11.glRotated(90, 0, 1, 0); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.5D; - GL11.glTranslated(10, 11, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - model.renderPart("Gun"); - if(renderBolt) - model.renderPart("Bolt"); - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFColt.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFColt.java deleted file mode 100644 index 9e02394a5..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFColt.java +++ /dev/null @@ -1,124 +0,0 @@ -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.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponFFColt implements IItemRenderer { - - ResourceLocation main; - ResourceLocation hammer; - ResourceLocation grip; - - public ItemRenderWeaponFFColt(ResourceLocation main, ResourceLocation hammer, ResourceLocation grip) { - this.main = main; - this.hammer = hammer; - this.grip = grip; - } - - @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); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 1.5D; - GL11.glTranslated(0.75, 0.5, 0); - GL11.glScaled(s0, s0, s0); - GL11.glRotated(100, 0, -1, 0); - GL11.glRotated(25, 1, 0, 0); - - HbmAnimations.applyRelevantTransformation("Body"); - Minecraft.getMinecraft().renderEngine.bindTexture(main); - ResourceManager.ff_python.renderPart("Body"); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Cylinder"); - ResourceManager.ff_python.renderPart("Cylinder"); - GL11.glPopMatrix(); - - Minecraft.getMinecraft().renderEngine.bindTexture(grip); - ResourceManager.ff_python.renderPart("Grip"); - - HbmAnimations.applyRelevantTransformation("Hammer"); - Minecraft.getMinecraft().renderEngine.bindTexture(hammer); - ResourceManager.ff_python.renderPart("Hammer"); - - GL11.glPopMatrix(); - - return; - - case EQUIPPED: - - double scale = 1.5D; - GL11.glRotated(195, 0, 1, 0); - GL11.glRotated(-10, 0, 0, 1); - GL11.glRotated(-10, 1, 0, 0); - GL11.glTranslated(-0.5, 0.1, -0.25); - GL11.glScaled(scale, scale, scale); - - break; - - case ENTITY: - - double s1 = 1D; - GL11.glScaled(s1, s1, s1); - GL11.glRotated(90, 0, 1, 0); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 17D; - GL11.glTranslated(8, 8, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glRotated(90, 0, 1, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - Minecraft.getMinecraft().renderEngine.bindTexture(main); - ResourceManager.ff_python.renderPart("Body"); - ResourceManager.ff_python.renderPart("Cylinder"); - Minecraft.getMinecraft().renderEngine.bindTexture(grip); - ResourceManager.ff_python.renderPart("Grip"); - Minecraft.getMinecraft().renderEngine.bindTexture(hammer); - ResourceManager.ff_python.renderPart("Hammer"); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFCursed.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFCursed.java deleted file mode 100644 index a53e3147b..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFCursed.java +++ /dev/null @@ -1,114 +0,0 @@ -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 ItemRenderWeaponFFCursed 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); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 1.5D; - GL11.glTranslated(0.75, 0.5, 0); - GL11.glScaled(s0, s0, s0); - GL11.glRotated(100, 0, -1, 0); - GL11.glRotated(20, 1, 0, 0); - - GL11.glShadeModel(GL11.GL_SMOOTH); - - HbmAnimations.applyRelevantTransformation("Body"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ff_cursed); - ResourceManager.cursed_revolver.renderPart("Body"); - ResourceManager.cursed_revolver.renderPart("Barrel"); - ResourceManager.cursed_revolver.renderPart("Grip"); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Slide"); - ResourceManager.cursed_revolver.renderPart("Slide"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Magazine"); - ResourceManager.cursed_revolver.renderPart("Magazine"); - GL11.glPopMatrix(); - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - - return; - - case EQUIPPED: - - double scale = 1.5D; - GL11.glRotated(195, 0, 1, 0); - GL11.glRotated(-10, 0, 0, 1); - GL11.glRotated(-10, 1, 0, 0); - GL11.glTranslated(-0.5, 0.1, -0.25); - GL11.glScaled(scale, scale, scale); - - break; - - case ENTITY: - - double s1 = 1D; - GL11.glScaled(s1, s1, s1); - GL11.glRotated(90, 0, 1, 0); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 17D; - GL11.glTranslated(10, 11.5, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glRotated(90, 0, 1, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ff_cursed); - ResourceManager.cursed_revolver.renderAll(); - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMG42.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMG42.java deleted file mode 100644 index 880faa2b5..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMG42.java +++ /dev/null @@ -1,112 +0,0 @@ -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 ItemRenderWeaponFFMG42 implements IItemRenderer { - - public ItemRenderWeaponFFMG42() { } - - @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.glShadeModel(GL11.GL_SMOOTH); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.mg42_tex); - boolean renderMag = true; - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.65D; - GL11.glRotated(170, 0, 1, 0); - GL11.glRotated(-25, 0, 0, 1); - GL11.glTranslated(-0.125, 0, 0); - GL11.glScaled(s0, s0, s0); - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - GL11.glTranslated(recoil[0] * 0.25, 0, 0); - - double[] reload = HbmAnimations.getRelevantTransformation("MAG"); - GL11.glRotated(reload[1] * 15, 1, 0, 0); - - GL11.glPushMatrix(); - - GL11.glRotated(reload[1] * -45, 1, 0, 0); - GL11.glTranslated(0, reload[1] * 0.25, -reload[1]); - ResourceManager.mg42.renderPart("Mag"); - GL11.glPopMatrix(); - - renderMag = false; - - break; - - case EQUIPPED: - - double scale = 0.35D; - GL11.glScaled(scale, scale, scale); - GL11.glRotated(100, 0, 1, 0); - GL11.glRotated(-10, 1, 0, 0); - GL11.glRotated(10, 0, 0, 1); - GL11.glTranslated(-0.5, 0.75, 1.25); - - break; - - case ENTITY: - - double s1 = 0.3D; - GL11.glScaled(s1, s1, s1); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.75D; - GL11.glTranslated(10, 9.5, 0); - GL11.glRotated(180, 1, 0, 0); - GL11.glRotated(-45, 0, 0, 1); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - ResourceManager.mg42.renderPart("Gun"); - if(renderMag) ResourceManager.mg42.renderPart("Mag"); - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMaresLeg.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMaresLeg.java deleted file mode 100644 index f63f1d68e..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMaresLeg.java +++ /dev/null @@ -1,131 +0,0 @@ -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.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponFFMaresLeg implements IItemRenderer { - - ResourceLocation main; - ResourceLocation grip; - - public ItemRenderWeaponFFMaresLeg(ResourceLocation main, ResourceLocation grip) { - this.main = main; - this.grip = grip; - } - - @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); - - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - - double lever = 0; - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 1.25D; - GL11.glTranslated(0.75, 0.5, 0); - GL11.glScaled(s0, s0, s0); - - if(!player.isSneaking()) { - GL11.glRotated(100, 0, -1, 0); - GL11.glRotated(-5, 0, 1, 0); - GL11.glRotated(20, 1, 0, 0); - } else { - GL11.glRotated(97.5, 0, -1, 0); - GL11.glTranslated(-0.71, 0.375, 0); - GL11.glRotated(25, 1, 0, 0); - GL11.glRotated(1, 0, 1, 0); - GL11.glRotated(-3, 0, 0, 1); - GL11.glRotated(0.2, 0, 1, 0); - GL11.glTranslated(-0.006, -0.005, 0.4); - } - - double[] recoil = HbmAnimations.getRelevantTransformation("LEVER_RECOIL"); - GL11.glTranslated(0, 0, recoil[0] * 0.5); - - double[] rotation = HbmAnimations.getRelevantTransformation("LEVER_ROTATE"); - lever = rotation[2]; - GL11.glTranslated(0, 0, 0.5); - GL11.glRotated(Math.min(lever, 30), 1, 0, 0); - GL11.glTranslated(0, 0, -0.5); - - break; - - case EQUIPPED: - - double scale = 1.25D; - GL11.glRotated(195, 0, 1, 0); - GL11.glRotated(-10, 0, 0, 1); - GL11.glRotated(-10, 1, 0, 0); - GL11.glTranslated(-0.45, 0.1, -0.5); - GL11.glScaled(scale, scale, scale); - - break; - - case ENTITY: - - double s1 = 1D; - GL11.glScaled(s1, s1, s1); - GL11.glRotated(90, 0, 1, 0); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 9D; - GL11.glTranslated(8, 9, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glRotated(90, 0, 1, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - Minecraft.getMinecraft().renderEngine.bindTexture(grip); - ResourceManager.ff_maresleg.renderPart("Grip"); - Minecraft.getMinecraft().renderEngine.bindTexture(main); - ResourceManager.ff_maresleg.renderPart("Gun"); - GL11.glTranslated(0, 0.1, 0.25); - GL11.glRotated(lever * 1.5, 1, 0, 0); - GL11.glTranslated(0, -0.1, -0.25); - ResourceManager.ff_maresleg.renderPart("Lever"); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFNightmare.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFNightmare.java deleted file mode 100644 index 6a7b3f37c..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFNightmare.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.main.ResourceManager; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponFFNightmare 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); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.2D; - GL11.glTranslated(0.75, 0.55, 0); - GL11.glScaled(s0, s0, s0); - GL11.glRotated(100, 0, -1, 0); - GL11.glRotated(25, 1, 0, 0); - - break; - - case EQUIPPED: - - double scale = 0.2D; - GL11.glRotated(195, 0, 1, 0); - GL11.glRotated(-10, 0, 0, 1); - GL11.glRotated(-10, 1, 0, 0); - GL11.glTranslated(-0.5, 0.3, -0.25); - GL11.glScaled(scale, scale, scale); - - break; - - case ENTITY: - - double s1 = 0.15D; - GL11.glScaled(s1, s1, s1); - GL11.glRotated(90, 0, 1, 0); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.75D; - GL11.glTranslated(10, 9, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glRotated(90, 0, 1, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ff_nightmare_orig_tex); - ResourceManager.ff_nightmare.renderPart("Gun"); - - int ammo = ItemGunBase.getMag(item); - for(int i = 0; i < ammo; i++) { - ResourceManager.ff_nightmare.renderPart("Bullet" + (i + 1)); - } - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFNightmareDark.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFNightmareDark.java deleted file mode 100644 index 52f7d4226..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFNightmareDark.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponFFNightmareDark 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.glShadeModel(GL11.GL_SMOOTH); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.4D; - GL11.glTranslated(0.75, 0.45, 0); - GL11.glScaled(s0, s0, s0); - GL11.glRotated(170, 0, 1, 0); - GL11.glRotated(25, 0, 0, -1); - - break; - - case EQUIPPED: - - double scale = 0.4D; - GL11.glRotated(105, 0, 1, 0); - GL11.glRotated(-10, 1, 0, 0); - GL11.glRotated(10, 0, 0, 1); - GL11.glTranslated(-0.125, 0.1, 0.5); - GL11.glScaled(scale, scale, scale); - - break; - - case ENTITY: - - double s1 = 0.25D; - GL11.glScaled(s1, s1, s1); - GL11.glRotated(90, 0, 1, 0); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 3D; - GL11.glTranslated(10, 9, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glRotated(180, 0, 1, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ff_nightmare_tex); - ResourceManager.nightmare_dark.renderAll(); - - GL11.glShadeModel(GL11.GL_FLAT); - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponGlass.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponGlass.java deleted file mode 100644 index aa8e186e4..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponGlass.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.handler.BulletConfiguration; -import com.hbm.items.weapon.gununified.ItemEnergyGunBase; -import com.hbm.main.ResourceManager; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.OpenGlHelper; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponGlass implements IItemRenderer { - - public ItemRenderWeaponGlass() { } - - @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_LIGHTING); - GL11.glEnable(GL11.GL_CULL_FACE); - - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.5D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(2.25, 0.0, 0.125); - GL11.glRotatef(-10, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glScaled(-scale, scale, scale); - GL11.glRotatef(20F, -3.0F, -0.75F, -1.0F); - GL11.glRotatef(-170, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30F, 2.0F, -1F, -5.0F); - GL11.glTranslatef(5F, -0.35F, 0.25F); - - break; - - case ENTITY: - - double s1 = 0.5D; - GL11.glScaled(s1, s1, s1); - - break; - - case INVENTORY: - - double s = 1.65D; - GL11.glTranslatef(8F, 8F, 0F); - GL11.glRotated(90, 0, 0, 1); - GL11.glRotated(135, 0, 0, 1); - GL11.glScaled(s, s, s); - - break; - - default: break; - } - - GL11.glShadeModel(GL11.GL_SMOOTH); - - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_TEXTURE_2D); - - GL11.glEnable(GL11.GL_BLEND); - GL11.glAlphaFunc(GL11.GL_GREATER, 0); - OpenGlHelper.glBlendFunc(770, 771, 1, 0); - GL11.glColor4f(0.9F, 1.0F, 1.0F, 0.5F); - GL11.glDepthMask(false); - - ResourceManager.glass_cannon.renderPart("Gun"); - - GL11.glDepthMask(true); - GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); - GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - - GL11.glShadeModel(GL11.GL_FLAT); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.glass_cannon_panel_tex); - ResourceManager.glass_cannon.renderPart("Panel"); - - GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - OpenGlHelper.glBlendFunc(770, 771, 1, 0); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_TEXTURE_2D); - - int color = 0xFFFFFF; - double freq = 1; - - if(item.getItem() instanceof ItemEnergyGunBase) { - BulletConfiguration config = ((ItemEnergyGunBase)item.getItem()).getConfig(item); - String name = config.modeName; - switch(name) { - case "weapon.elecGun.glass_cannon.radio": color = 0xaa2200; freq = 0.5; break; - case "weapon.elecGun.glass_cannon.micro": color = 0xdc221f; freq = 1; break; - case "weapon.elecGun.glass_cannon.ir": color = 0xfc3d3a; freq = 1.5; break; - case "weapon.elecGun.glass_cannon.visible": color = 0x8fe325; freq = 2; break; - case "weapon.elecGun.glass_cannon.uv": color = 0x37d5f3; freq = 2.5; break; - case "weapon.elecGun.glass_cannon.xray": color = 0x2542fd; freq = 3; break; - case "weapon.elecGun.glass_cannon.gamma": color = 0xdc20f3; freq = 3.5; break; - } - } - - float px = 0.0625F; - GL11.glTranslatef(-2F, px * 18, -px * 14); - GL11.glRotatef(90, 0, 1, 0); - GL11.glTranslatef(-0.7F, -0.86F, -0.33F); - - Tessellator tess = Tessellator.instance; - tess.startDrawing(GL11.GL_QUADS); - - int sub = 32; - double width = px * 21.25; - double len = width / sub; - double time = System.currentTimeMillis() / -100D; - double amplitude = 0.075; - - tess.setColorOpaque_I(color); - - for(int i = 0; i < sub; i++) { - double h0 = Math.sin(freq * i * 0.5 + time) * amplitude; - double h1 = Math.sin(freq * (i + 1) * 0.5 + time) * amplitude; - tess.addVertex(0, -px * 0.25 + h1, len * (i + 1)); - tess.addVertex(0, px * 0.25 + h1, len * (i + 1)); - tess.addVertex(0, px * 0.25 + h0, len * i); - tess.addVertex(0, -px * 0.25 + h0, len * i); - } - tess.setColorOpaque_F(1F, 1F, 1F); - - tess.draw(); - - GL11.glEnable(GL11.GL_TEXTURE_2D); - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glPopAttrib(); - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - - } - -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponKS23.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponKS23.java deleted file mode 100644 index 4160ee3f9..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponKS23.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.hbm.render.item.weapon; - -import java.awt.Color; - -import org.lwjgl.opengl.GL11; - -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponKS23 implements IItemRenderer { - - public ItemRenderWeaponKS23() { } - - @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.glDisable(GL11.GL_CULL_FACE); - - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ks23_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - GL11.glTranslatef(1.0F, 0.5F, -0.25F); - GL11.glRotatef(25F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-100, 0.0F, 1.0F, 0.0F); - GL11.glScaled(0.75, 0.75, 0.75); - - if(player.isSneaking()) { - GL11.glRotatef(4.5F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-2F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.9F, 0.2F, 0.325F); - } - - HbmAnimations.applyRelevantTransformation("Body"); - - GL11.glShadeModel(GL11.GL_SMOOTH); - - ResourceManager.ks23.renderPart("Body"); - ResourceManager.ks23.renderPart("Trigger"); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Bolt"); - ResourceManager.ks23.renderPart("Bolt"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Guard"); - ResourceManager.ks23.renderPart("Guard"); - GL11.glPopMatrix(); - - - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.casings_tex); - - HbmAnimations.applyRelevantTransformation("Shell"); - - ItemGunBase gun = (ItemGunBase)item.getItem(); - BulletConfiguration bullet = BulletConfigSyncingUtil.pullConfig(gun.mainConfig.config.get(ItemGunBase.getMagType(item))); - int[] colors = bullet.spentCasing.getColors(); - - Color shellColor = new Color(colors[1]); - GL11.glColor3f(shellColor.getRed() / 255F, shellColor.getGreen() / 255F, shellColor.getBlue() / 255F); - ResourceManager.ks23.renderPart("Shell"); - - Color shellForeColor = new Color(colors[0]); - GL11.glColor3f(shellForeColor.getRed() / 255F, shellForeColor.getGreen() / 255F, shellForeColor.getBlue() / 255F); - ResourceManager.ks23.renderPart("ShellFore"); - - GL11.glColor3f(1F, 1F, 1F); - GL11.glPopMatrix(); - - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glPopMatrix(); - - return; - - case EQUIPPED: - - GL11.glRotatef(20F, 1.0F, 0.0F, 1.0F); - GL11.glRotatef(-170F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.9F); - GL11.glScaled(0.5, 0.5, 0.5); - - break; - - case ENTITY: - - GL11.glTranslatef(0.3F, 0.2F, 0.0F); - GL11.glScaled(0.5, 0.5, 0.5); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - GL11.glTranslatef(7F, 8F, 0.0F); - GL11.glScaled(4, 4, -4); - GL11.glRotatef(-90, 0, 1, 0); - GL11.glRotatef(-135F, 1.0F, 0.0F, 0.0F); - - break; - - default: break; - } - - GL11.glShadeModel(GL11.GL_SMOOTH); - ResourceManager.ks23.renderAll(); - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glPopMatrix(); - } - -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponLilMac.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponLilMac.java deleted file mode 100644 index 9417e7d8a..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponLilMac.java +++ /dev/null @@ -1,256 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.items.weapon.ItemGunPip; -import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponLilMac implements IItemRenderer { - - public static final ResourceLocation lilmac_plume = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lilmac_plume.png"); - - @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) { - - //prevent rendering when using scope - if(item.getItem() == ModItems.gun_revolver_pip && type == ItemRenderType.EQUIPPED_FIRST_PERSON && MainRegistry.proxy.me().isSneaking()) return; - - GL11.glPushMatrix(); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.1D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(1.0, 0.25, -0.25); - GL11.glRotated(170, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - double width = 0.5D; - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - double[] reloadLift = HbmAnimations.getRelevantTransformation("RELOAD_LIFT"); - double[] reloadJolt = HbmAnimations.getRelevantTransformation("RELOAD_JOLT"); - double[] equipSpin = HbmAnimations.getRelevantTransformation("ROTATE"); - GL11.glTranslated(2, 0, 0); - GL11.glRotated(equipSpin[0], 0, 0, 1); - GL11.glTranslated(-2, 0, 0); - - GL11.glShadeModel(GL11.GL_SMOOTH); - - GL11.glPushMatrix(); - Tessellator tess = Tessellator.instance; - - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_BLEND); - - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glAlphaFunc(GL11.GL_GREATER, 0F); - GL11.glTranslated(-10, 2.25, 0); - GL11.glTranslated(-recoil[2] * 3.5, -recoil[2] * 1.375, 0); - - if(ItemGunPip.smokeNodes.size() > 1 && equipSpin[0] == 0) { - - tess.startDrawingQuads(); - tess.setNormal(0F, 1F, 0F); - - for(int i = 0; i < ItemGunPip.smokeNodes.size() - 1; i++) { - double[] node = ItemGunPip.smokeNodes.get(i); - double[] past = ItemGunPip.smokeNodes.get(i + 1); - - tess.setColorRGBA_F(1F, 1F, 1F, (float) node[3]); - tess.addVertex(node[0], node[1], node[2]); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(node[0], node[1], node[2] + width); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(past[0], past[1], past[2] + width); - tess.setColorRGBA_F(1F, 1F, 1F, (float) past[3]); - tess.addVertex(past[0], past[1], past[2]); - - tess.setColorRGBA_F(1F, 1F, 1F, (float) node[3]); - tess.addVertex(node[0], node[1], node[2]); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(node[0], node[1], node[2] - width); - tess.setColorRGBA_F(1F, 1F, 1F, 0F); - tess.addVertex(past[0], past[1], past[2] - width); - tess.setColorRGBA_F(1F, 1F, 1F, (float) past[3]); - tess.addVertex(past[0], past[1], past[2]); - } - GL11.glDepthMask(false); - tess.draw(); - GL11.glDepthMask(true); - } - - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_BLEND); - GL11.glAlphaFunc(GL11.GL_GEQUAL, 0.1F); - GL11.glEnable(GL11.GL_CULL_FACE); - - GL11.glPopMatrix(); - - GL11.glTranslated(0, reloadLift[0] / -22D, 0); - - GL11.glTranslated(recoil[0], recoil[1], recoil[2]); - GL11.glRotated(recoil[2] * 10, 0, 0, 1); - GL11.glRotated(reloadLift[0], 0, 0, 1); - GL11.glTranslated(reloadJolt[0], 0, 0); - - double[] reloadTilt = HbmAnimations.getRelevantTransformation("RELAOD_TILT"); - GL11.glRotated(reloadTilt[0], 1, 0, 0); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lilmac_scope_tex); - ResourceManager.lilmac.renderPart("Scope"); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lilmac_tex); - ResourceManager.lilmac.renderPart("Gun"); - - double[] cylinderFlip = HbmAnimations.getRelevantTransformation("RELOAD_CYLINDER"); - GL11.glPushMatrix(); /// DRUM PUSH /// - GL11.glRotated(cylinderFlip[0], 1, 0, 0); - ResourceManager.lilmac.renderPart("Pivot"); - GL11.glTranslated(0, 1.75, 0); - GL11.glRotated(HbmAnimations.getRelevantTransformation("DRUM")[2] * -60, 1, 0, 0); - GL11.glTranslated(0, -1.75, 0); - ResourceManager.lilmac.renderPart("Cylinder"); - double[] reloadBullets = HbmAnimations.getRelevantTransformation("RELOAD_BULLETS"); - GL11.glTranslated(reloadBullets[0], reloadBullets[1], reloadBullets[2]); - if(HbmAnimations.getRelevantTransformation("RELOAD_BULLETS_CON")[0] != 1) - ResourceManager.lilmac.renderPart("Bullets"); - ResourceManager.lilmac.renderPart("Casings"); - GL11.glPopMatrix(); /// DRUM POP /// - - GL11.glPushMatrix(); /// HAMMER /// - GL11.glTranslated(4, 1.25, 0); - GL11.glRotated(-30 + 30 * HbmAnimations.getRelevantTransformation("HAMMER")[2], 0, 0, 1); - GL11.glTranslated(-4, -1.25, 0); - ResourceManager.lilmac.renderPart("Hammer"); - GL11.glPopMatrix(); - - GL11.glShadeModel(GL11.GL_FLAT); - - int flash = 75; - if(System.currentTimeMillis() - ItemGunPip.lastShot < flash) { - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); - GL11.glPushMatrix(); - GL11.glTranslated(0.125, 2.25, 0); - - double fire = (System.currentTimeMillis() - ItemGunPip.lastShot) / (double) flash; - - double height = 4 * fire; - double length = 15 * fire; - double lift = 3 * fire; - double offset = 1 * fire; - double lengthOffset = 0.125; - Minecraft.getMinecraft().renderEngine.bindTexture(lilmac_plume); - tess.startDrawingQuads(); - tess.setNormal(0F, 1F, 0F); - tess.setColorRGBA_F(1F, 1F, 1F, 1F); - - tess.addVertexWithUV(0, -height, -offset, 1, 1); - tess.addVertexWithUV(0, height, -offset, 0, 1); - tess.addVertexWithUV(0, height + lift, length - offset, 0 ,0); - tess.addVertexWithUV(0, -height + lift, length - offset, 1, 0); - - tess.addVertexWithUV(0, height, offset, 0, 1); - tess.addVertexWithUV(0, -height, offset, 1, 1); - tess.addVertexWithUV(0, -height + lift, -length + offset, 1, 0); - tess.addVertexWithUV(0, height + lift, -length + offset, 0 ,0); - - tess.addVertexWithUV(0, -height, -offset, 1, 1); - tess.addVertexWithUV(0, height, -offset, 0, 1); - tess.addVertexWithUV(lengthOffset, height, length - offset, 0 ,0); - tess.addVertexWithUV(lengthOffset, -height, length - offset, 1, 0); - - tess.addVertexWithUV(0, height, offset, 0, 1); - tess.addVertexWithUV(0, -height, offset, 1, 1); - tess.addVertexWithUV(lengthOffset, -height, -length + offset, 1, 0); - tess.addVertexWithUV(lengthOffset, height, -length + offset, 0 ,0); - - tess.draw(); - GL11.glPopMatrix(); - GL11.glDisable(GL11.GL_BLEND); - } - - break; - - case EQUIPPED: - - double scale = 0.1D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(100, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-3F, 1F, 4F); - - break; - - case ENTITY: - - double s1 = 0.075D; - GL11.glScaled(s1, s1, s1); - GL11.glTranslatef(0F, 1F, 0F); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glAlphaFunc(GL11.GL_GREATER, 0F); - GL11.glEnable(GL11.GL_ALPHA_TEST); - - double s = 0.8D; - GL11.glTranslated(8, 8, 0); - GL11.glRotated(180, 0, 1, 0); - GL11.glRotated(135, 0, 0, 1); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - if(type != ItemRenderType.EQUIPPED_FIRST_PERSON) { - GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lilmac_scope_tex); - ResourceManager.lilmac.renderPart("Scope"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lilmac_tex); - ResourceManager.lilmac.renderPart("Gun"); - ResourceManager.lilmac.renderPart("Cylinder"); - ResourceManager.lilmac.renderPart("Bullets"); - ResourceManager.lilmac.renderPart("Casings"); - ResourceManager.lilmac.renderPart("Pivot"); - ResourceManager.lilmac.renderPart("Hammer"); - GL11.glShadeModel(GL11.GL_FLAT); - } - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponNovac.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponNovac.java deleted file mode 100644 index eb3fdf4d6..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponNovac.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.main.MainRegistry; -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 ItemRenderWeaponNovac implements IItemRenderer { - - public ItemRenderWeaponNovac() { } - - @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) { - - //prevent rendering when using scope - if(item.getItem() == ModItems.gun_revolver_pip && type == ItemRenderType.EQUIPPED_FIRST_PERSON && MainRegistry.proxy.me().isSneaking()) return; - - GL11.glPushMatrix(); - - GL11.glEnable(GL11.GL_CULL_FACE); - - if(item.getItem() == ModItems.gun_revolver_nopip) Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.novac_tex); - if(item.getItem() == ModItems.gun_revolver_pip) Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lil_pip_tex); - if(item.getItem() == ModItems.gun_revolver_blackjack) Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.blackjack_tex); - if(item.getItem() == ModItems.gun_revolver_silver) Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lent_gun_tex); - if(item.getItem() == ModItems.gun_revolver_red) Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.red_key_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.4D; - GL11.glRotated(25, 0, 0, 1); - GL11.glRotated(80, 0, 1, 0); - GL11.glRotatef(180, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.0F, 0.0F, -1.25F); - GL11.glScaled(s0, s0, s0); - - GL11.glShadeModel(GL11.GL_SMOOTH); - - HbmAnimations.applyRelevantTransformation("Body"); - ResourceManager.novac.renderPart("Body"); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Cylinder"); - ResourceManager.novac.renderPart("Cylinder"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Hammer"); - ResourceManager.novac.renderPart("Hammer"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("Trigger"); - ResourceManager.novac.renderPart("Trigger"); - GL11.glPopMatrix(); - - if (item.getItem() == ModItems.gun_revolver_pip) { - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.novac_scope_tex); - ResourceManager.novac.renderPart("Scope"); - } - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - - return; - - case EQUIPPED: - - double scale = 0.35D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-5, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(10, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(15F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(180, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-1.25F, 0.25F, -1F); - - break; - - case ENTITY: - - double s1 = 0.3D; - GL11.glScaled(s1, s1, s1); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 3D; - GL11.glTranslated(7, 8, 0); - GL11.glRotated(90, 0, 1, 0); - GL11.glRotated(135, 1, 0, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - GL11.glShadeModel(GL11.GL_SMOOTH); - ResourceManager.novac.renderAllExcept("Scope"); - - if(item.getItem() == ModItems.gun_revolver_pip) { - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.novac_scope_tex); - ResourceManager.novac.renderPart("Scope"); - } - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponObj.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponObj.java deleted file mode 100644 index 4be5806c5..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponObj.java +++ /dev/null @@ -1,318 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponObj implements IItemRenderer { - - public ItemRenderWeaponObj() { } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - case INVENTORY: - return item.getItem() == ModItems.gun_hk69 - || item.getItem() == ModItems.gun_flamer || item.getItem() == ModItems.gun_deagle - || item.getItem() == ModItems.gun_flechette || item.getItem() == ModItems.gun_quadro; - 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.glDisable(GL11.GL_CULL_FACE); - - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - - if(item.getItem() == ModItems.gun_hk69) - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.hk69_tex); - - if(item.getItem() == ModItems.gun_deagle) - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.universal_bright); - - if(item.getItem() == ModItems.gun_flamer) - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flamer_tex); - - if(item.getItem() == ModItems.gun_quadro) - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.quadro_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - - if(item.getItem() == ModItems.gun_hk69) { - GL11.glTranslatef(1.0F, 0.5F, 0.0F); - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-25F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-10F, 0.0F, 1.0F, 0.0F); - GL11.glScaled(0.75, 0.75, 0.75); - - if(player.isSneaking()) { - GL11.glTranslatef(1.16F, 0.35F, -0.8F); - GL11.glRotatef(5.5F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(4F, 1.0F, 0.0F, 0.0F); - } - } - - if(item.getItem() == ModItems.gun_deagle) { - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(25F, -1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.2F, 0.2F, 0.8F); - GL11.glScaled(0.2, 0.2, 0.2); - - if(player.isSneaking()) { - GL11.glTranslatef(3.7F, 1.7F, 0F); - GL11.glRotatef(-5F, 0.0F, 1.0F, 0.0F); - } - } - - if(item.getItem() == ModItems.gun_flamer) { - GL11.glTranslatef(1.0F, 0.0F, -0.15F); - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-25F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-10F, 0.0F, 1.0F, 0.0F); - GL11.glScaled(0.5, 0.5, 0.5); - - if(player.isSneaking()) { - GL11.glTranslatef(0.75F, 0.2F, 0.3F); - } - } - - if(item.getItem() == ModItems.gun_flechette) { - - GL11.glRotatef(25F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(1.0F, -1.0F, -0.0F); - GL11.glRotatef(170F, 0.0F, 1.0F, 0.0F); - GL11.glScaled(0.25, 0.25, 0.25); - - if(player.isSneaking()) { - GL11.glRotatef(5F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-2F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-2.0F, 1.2F, 3.7F); - } - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - GL11.glTranslated(recoil[0], recoil[1], recoil[2]); - } - - if(item.getItem() == ModItems.gun_quadro) { - GL11.glTranslatef(0.75F, 0.0F, -0.15F); - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-25F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-10F, 0.0F, 1.0F, 0.0F); - GL11.glScaled(0.5, 0.5, 0.5); - - if(player.isSneaking()) { - GL11.glRotatef(5F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(1.0F, 0.5F, 0.3F); - } - - double[] recoil = HbmAnimations.getRelevantTransformation("QUADRO_RECOIL"); - GL11.glTranslated(0, 0, recoil[2]); - - double[] reload = HbmAnimations.getRelevantTransformation("QUADRO_RELOAD_ROTATE"); - GL11.glRotated(reload[2], 1, 0, 0); - } - - break; - - case EQUIPPED: - - if(item.getItem() == ModItems.gun_hk69) { - GL11.glRotatef(20F, 1.0F, 0.0F, 1.0F); - GL11.glRotatef(10F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(0.4F, 0.0F, 0.55F); - GL11.glScaled(0.75, 0.75, 0.75); - } - - if(item.getItem() == ModItems.gun_deagle) { - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(35F, -1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.1F, 0.8F); - GL11.glScaled(0.15, 0.15, 0.15); - } - - if(item.getItem() == ModItems.gun_flamer) { - GL11.glRotatef(20F, 1.0F, 0.0F, 1.0F); - GL11.glRotatef(10F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(0.4F, -0.25F, 0.2F); - GL11.glScaled(0.35, 0.35, 0.35); - } - - if(item.getItem() == ModItems.gun_flechette) { - GL11.glRotatef(35F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(180F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-1.4F, -0.55F, 0.0F); - GL11.glScaled(0.125, 0.125, 0.125); - } - - if(item.getItem() == ModItems.gun_quadro) { - GL11.glRotatef(20F, 1.0F, 0.0F, 1.0F); - GL11.glRotatef(10F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(0.4F, -0.35F, -0.4F); - GL11.glScaled(0.75, 0.75, 0.75); - } - - break; - - case ENTITY: - - if(item.getItem() == ModItems.gun_hk69) { - GL11.glTranslatef(0.0F, 0.2F, 0.0F); - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glScaled(0.75, 0.75, 0.75); - } - - if(item.getItem() == ModItems.gun_deagle) { - GL11.glTranslatef(0.0F, 0.2F, 0.0F); - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glScaled(0.25, 0.25, 0.25); - } - - if(item.getItem() == ModItems.gun_flamer) { - GL11.glTranslatef(0.25F, 0.2F, 0.0F); - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glScaled(0.25, 0.25, 0.25); - } - - if(item.getItem() == ModItems.gun_flechette) { - GL11.glTranslatef(-0.25F, 0.0F, 0.0F); - GL11.glScaled(0.125, 0.125, 0.125); - } - - if(item.getItem() == ModItems.gun_quadro) { - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(0.0F, 0.0F, 0.0F); - GL11.glScaled(0.75, 0.75, 0.75); - } - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - if(item.getItem() == ModItems.gun_hk69) { - GL11.glScaled(7.5, 7.5, -7.5); - GL11.glTranslatef(0.85F, 1.2F, 0.0F); - GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-45F, 1.0F, 0.0F, 0.0F); - } - - if(item.getItem() == ModItems.gun_deagle) { - GL11.glScaled(2.5, 2.5, -2.5); - GL11.glTranslatef(3.5F, 3F, 0.0F); - GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-45F, 1.0F, 0.0F, 0.0F); - } - - if(item.getItem() == ModItems.gun_flamer) { - GL11.glScaled(2.0, 2.0, -2.0); - GL11.glTranslatef(4.0F, 5.0F, 0.0F); - GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-45F, 1.0F, 0.0F, 0.0F); - } - - if(item.getItem() == ModItems.gun_flechette) { - GL11.glScaled(1.2, 1.2, -1.2); - GL11.glTranslatef(2.5F, 8.0F, 0.0F); - GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-45F, 0.0F, 0.0F, 1.0F); - } - - if(item.getItem() == ModItems.gun_quadro) { - GL11.glScaled(4.5, 4.5, -4.5); - GL11.glTranslatef(1.0F, 2.5F, 0.0F); - GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-45F, 1.0F, 0.0F, 0.0F); - } - - break; - - default: break; - } - - if(item.getItem() == ModItems.gun_hk69) { - GL11.glShadeModel(GL11.GL_SMOOTH); - ResourceManager.hk69.renderAll(); - GL11.glShadeModel(GL11.GL_FLAT); - } - - if(item.getItem() == ModItems.gun_deagle) { - GL11.glShadeModel(GL11.GL_SMOOTH); - ResourceManager.deagle.renderAll(); - GL11.glShadeModel(GL11.GL_FLAT); - } - - if(item.getItem() == ModItems.gun_flamer) { - GL11.glShadeModel(GL11.GL_SMOOTH); - ResourceManager.flamer.renderAll(); - GL11.glShadeModel(GL11.GL_FLAT); - } - - if(item.getItem() == ModItems.gun_flechette) { - renderFlechette(); - } - - if(item.getItem() == ModItems.gun_quadro) { - GL11.glShadeModel(GL11.GL_SMOOTH); - ResourceManager.quadro.renderPart("Launcher"); - GL11.glShadeModel(GL11.GL_FLAT); - } - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glPopMatrix(); - } - - public void renderFlechette() { - GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_body); - ResourceManager.flechette.renderPart("body"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_chamber); - ResourceManager.flechette.renderPart("chamber"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_barrel); - ResourceManager.flechette.renderPart("barrel"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_gren_tube); - ResourceManager.flechette.renderPart("gren_tube"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_grenades); - ResourceManager.flechette.renderPart("grenades"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_pivot); - ResourceManager.flechette.renderPart("pivot"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_top); - ResourceManager.flechette.renderPart("top"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_drum); - ResourceManager.flechette.renderPart("drum"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_base); - ResourceManager.flechette.renderPart("base"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_trigger); - ResourceManager.flechette.renderPart("trigger"); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flechette_stock); - ResourceManager.flechette.renderPart("stock"); - GL11.glShadeModel(GL11.GL_FLAT); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponQuadro.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponQuadro.java deleted file mode 100644 index ecfa3056c..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponQuadro.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponQuadro implements IItemRenderer { - - public ItemRenderWeaponQuadro() { } - - @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.glDisable(GL11.GL_CULL_FACE); - - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - if(item.getItem() == ModItems.gun_quadro) { - GL11.glTranslatef(0.75F, 0.0F, -0.15F); - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-25F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-10F, 0.0F, 1.0F, 0.0F); - GL11.glScaled(0.5, 0.5, 0.5); - - if(player.isSneaking()) { - GL11.glRotatef(5F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(1.0F, 0.5F, 0.3F); - } - - double[] recoil = HbmAnimations.getRelevantTransformation("QUADRO_RECOIL"); - GL11.glTranslated(0, 0, recoil[2]); - - double[] reload = HbmAnimations.getRelevantTransformation("QUADRO_RELOAD_ROTATE"); - GL11.glRotated(reload[2], 1, 0, 0); - } - - break; - - case EQUIPPED: - - if(item.getItem() == ModItems.gun_quadro) { - GL11.glRotatef(20F, 1.0F, 0.0F, 1.0F); - GL11.glRotatef(10F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(0.4F, -0.35F, -0.4F); - GL11.glScaled(0.75, 0.75, 0.75); - } - - break; - - case ENTITY: - - if(item.getItem() == ModItems.gun_quadro) { - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(0.0F, 0.0F, 0.0F); - GL11.glScaled(0.75, 0.75, 0.75); - } - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - if(item.getItem() == ModItems.gun_quadro) { - GL11.glScaled(4.5, 4.5, -4.5); - GL11.glTranslatef(1.0F, 2.5F, 0.0F); - GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-45F, 1.0F, 0.0F, 0.0F); - } - - break; - - default: break; - } - - if(item.getItem() == ModItems.gun_quadro) { - GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.quadro_tex); - ResourceManager.quadro.renderPart("Launcher"); - - if(ItemGunBase.getMag(item) > 0 || ItemGunBase.getIsReloading(item) && type != ItemRenderType.INVENTORY) { - GL11.glPushMatrix(); - - GL11.glTranslated(0, -1, 0); - - double[] push = HbmAnimations.getRelevantTransformation("QUADRO_RELOAD_PUSH"); - GL11.glTranslated(0, 3, 0); - GL11.glRotated(push[1] * 30, 1, 0, 0); - GL11.glTranslated(0, -3, 0); - GL11.glTranslated(0, 0, push[0] * 3); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.quadro_rocket_tex); - ResourceManager.quadro.renderPart("Rockets"); - GL11.glPopMatrix(); - } - - GL11.glShadeModel(GL11.GL_FLAT); - } - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponRemington.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponRemington.java deleted file mode 100644 index e49b57531..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponRemington.java +++ /dev/null @@ -1,108 +0,0 @@ -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 ItemRenderWeaponRemington 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.glShadeModel(GL11.GL_SMOOTH); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.remington_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double[] recoilT = HbmAnimations.getRelevantTransformation("RECOIL_TRANSLATE"); - double[] pump = HbmAnimations.getRelevantTransformation("PUMP"); - - double s0 = 0.35D; - GL11.glRotated(25, 0, 0, 1); - GL11.glRotated(-10, 0, 1, 0); - GL11.glTranslated(1.25, -1.25, -0.25); - GL11.glScaled(s0, s0, s0); - - GL11.glTranslated(recoilT[2], 0, 0); - - ResourceManager.remington.renderPart("Gun"); - - GL11.glTranslated(pump[2] * 0.5, 0, 0); - - ResourceManager.remington.renderPart("Pump"); - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-80, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-15F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(2.5F, -3.5F, -2F); - - ResourceManager.remington.renderAll(); - - break; - - case ENTITY: - - double s1 = 0.25D; - GL11.glScaled(s1, s1, s1); - GL11.glTranslated(0, -3, 0); - - ResourceManager.remington.renderAll(); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.25D; - GL11.glTranslated(4, 11, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glScaled(s, s, -s); - - ResourceManager.remington.renderAll(); - - break; - - default: break; - } - - GL11.glShadeModel(GL11.GL_SMOOTH); - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSauer.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSauer.java deleted file mode 100644 index 9d4d204de..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSauer.java +++ /dev/null @@ -1,138 +0,0 @@ -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.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponSauer implements IItemRenderer { - - public ItemRenderWeaponSauer() { } - - @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.glShadeModel(GL11.GL_SMOOTH); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.sauergun_tex); - - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double[] recoil = HbmAnimations.getRelevantTransformation("SAUER_RECOIL"); - double[] tilt = HbmAnimations.getRelevantTransformation("SAUER_TILT"); - double[] cock = HbmAnimations.getRelevantTransformation("SAUER_COCK"); - double[] eject = HbmAnimations.getRelevantTransformation("SAUER_SHELL_EJECT"); - - double s0 = 0.5D; - GL11.glScaled(s0, s0, s0); - - GL11.glTranslatef(0.0F, -0.5F, 0.0F); - GL11.glRotatef(-100F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(20F, 1.0F, 0.0F, 0.0F); - - if(recoil != null) - GL11.glTranslated(0, 0, recoil[0]); - - if(player.isSneaking()) { - GL11.glRotatef(-3F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(2F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(3F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(-2.0F, 0.5F, 0.3F); - } - - if(tilt != null) { - GL11.glTranslated(0, -5, 0); - GL11.glRotated(tilt[2] * -0.5, 1, 0, 0); - GL11.glTranslated(0, 5, 0); - GL11.glRotated(tilt[0], 0, 0, 1); - - GL11.glTranslated(0, 0, cock[0] * 2); - ResourceManager.sauergun.renderPart("Lever"); - GL11.glTranslated(0, 0, -cock[0] * 2); - - GL11.glTranslated(eject[2] * 10, -eject[2], 0); - GL11.glRotated(eject[2] * 90, -1, 0, 0); - ResourceManager.sauergun.renderPart("Shell"); - GL11.glRotated(eject[2] * 90, 1, 0, 0); - GL11.glTranslated(-eject[2] * 10, eject[2], 0); - - } else { - - ResourceManager.sauergun.renderPart("Lever"); - } - - break; - - case EQUIPPED: - - double scale = 0.5D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-170, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-15F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(-1F, -0.3F, 0.0F); - ResourceManager.sauergun.renderPart("Lever"); - break; - - case ENTITY: - - double s1 = 0.25D; - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(0.0F, 0.0F, 0.5F); - GL11.glScaled(s1, s1, s1); - ResourceManager.sauergun.renderPart("Lever"); - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 2.25D; - GL11.glScaled(s, s, -s); - GL11.glTranslatef(4.0F, 4.5F, 0.0F); - GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(45F, 1.0F, 0.0F, 0.0F); - ResourceManager.sauergun.renderPart("Lever"); - - break; - - default: break; - } - - ResourceManager.sauergun.renderPart("Gun"); - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponShotty.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponShotty.java deleted file mode 100644 index bcf4670e2..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponShotty.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.config.WeaponConfig; -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.main.ResourceManager; -import com.hbm.render.anim.HbmAnimations; -import com.hbm.render.anim.HbmAnimations.Animation; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponShotty implements IItemRenderer { - - public ItemRenderWeaponShotty() { } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - case INVENTORY: - return false; - 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.glDisable(GL11.GL_CULL_FACE); - GL11.glShadeModel(GL11.GL_SMOOTH); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.shotty_tex); - - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - String animSuffix = WeaponConfig.linearAnimations ? "Lame" : ""; - - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-95F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-2.0F, 0.25F, -2.5F); - - HbmAnimations.applyRelevantTransformation("Body" + animSuffix); - ResourceManager.shotty.renderPart("Body"); - - HbmAnimations.applyRelevantTransformation("Barrel" + animSuffix); - ResourceManager.shotty.renderPart("Barrel"); - - // If we've run out of ammo, stop drawing the shells after ejection has completed - Animation anim = HbmAnimations.getRelevantAnim(); - int millis = anim != null ? (int)(System.currentTimeMillis() - anim.startMillis) : 0; - - if(ItemGunBase.getBeltSize(player, ItemGunBase.getBeltType(player, item, true)) > 0 || millis < 1000) { - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("ShellL" + animSuffix); - ResourceManager.shotty.renderPart("ShellL"); - GL11.glPopMatrix(); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("ShellR" + animSuffix); - ResourceManager.shotty.renderPart("ShellR"); - GL11.glPopMatrix(); - } - - break; - - case EQUIPPED: - - GL11.glRotatef(-170F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-10F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-10F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(5F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.4F, 0.0F, -0.5F); - GL11.glScaled(0.35, 0.35, 0.35); - ResourceManager.shotty.renderPart("Body"); - ResourceManager.shotty.renderPart("Barrel"); - - break; - - case ENTITY: - - GL11.glScaled(0.5, 0.5, 0.5); - GL11.glTranslatef(0.0F, 0.2F, 0.0F); - ResourceManager.shotty.renderPart("Body"); - ResourceManager.shotty.renderPart("Barrel"); - break; - - default: break; - } - - GL11.glShadeModel(GL11.GL_FLAT); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSpas12.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSpas12.java deleted file mode 100644 index 4fff46dd0..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSpas12.java +++ /dev/null @@ -1,131 +0,0 @@ -package com.hbm.render.item.weapon; - -import java.awt.Color; - -import org.lwjgl.opengl.GL11; - -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.items.weapon.ItemGunBase; -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 ItemRenderWeaponSpas12 implements IItemRenderer { - - public ItemRenderWeaponSpas12() { } - - @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.glShadeModel(GL11.GL_SMOOTH); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.spas_12_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.5D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(0, -0.8, 0.1); - GL11.glRotated(-100, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - HbmAnimations.applyRelevantTransformation("MainBody"); - ResourceManager.spas_12.renderPart("MainBody"); - - GL11.glPushMatrix(); - HbmAnimations.applyRelevantTransformation("PumpGrip"); - ResourceManager.spas_12.renderPart("PumpGrip"); - GL11.glPopMatrix(); - - - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.casings_tex); - - HbmAnimations.applyRelevantTransformation("Shell"); - - ItemGunBase gun = (ItemGunBase)item.getItem(); - BulletConfiguration bullet = BulletConfigSyncingUtil.pullConfig(gun.mainConfig.config.get(ItemGunBase.getMagType(item))); - int[] colors = bullet.spentCasing.getColors(); - - Color shellColor = new Color(colors[1]); - GL11.glColor3f(shellColor.getRed() / 255F, shellColor.getGreen() / 255F, shellColor.getBlue() / 255F); - ResourceManager.spas_12.renderPart("Shell"); - - Color shellForeColor = new Color(colors[0]); - GL11.glColor3f(shellForeColor.getRed() / 255F, shellForeColor.getGreen() / 255F, shellForeColor.getBlue() / 255F); - ResourceManager.spas_12.renderPart("ShellFore"); - - GL11.glColor3f(1F, 1F, 1F); - GL11.glPopMatrix(); - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(190, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-15F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(-2F, -1F, 2F); - - ResourceManager.spas_12.renderAll(); - - break; - - case ENTITY: - - double s1 = 0.25D; - GL11.glScaled(s1, s1, s1); - GL11.glTranslated(0, 0, 4); - - ResourceManager.spas_12.renderAll(); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.6D; - GL11.glTranslated(12, 13.5, 0); - GL11.glRotated(-90, 0, 1, 0); - GL11.glRotated(-135, 1, 0, 0); - GL11.glScaled(s, s, s); - - ResourceManager.spas_12.renderAll(); - - break; - - default: break; - } - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponTau.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponTau.java deleted file mode 100644 index b46f19474..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponTau.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.weapon.ItemGunGauss; -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 ItemRenderWeaponTau 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.glDisable(GL11.GL_CULL_FACE); - GL11.glShadeModel(GL11.GL_SMOOTH); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.tau_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.35D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(1.5, 0, 0.1); - GL11.glRotated(80, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); - GL11.glTranslated(0, 0, recoil[0] * -1); - GL11.glTranslated(0, 0, -3); - GL11.glRotated(recoil[0] * -5, 1, 0, 0); - GL11.glTranslated(0, 0, 3); - - ResourceManager.tau.renderPart("Body"); - - if(ItemGunGauss.getCharge(item) > 0) { - GL11.glTranslated(0, -0.2, 0); - GL11.glRotated(System.currentTimeMillis() % 360D, 0, 0, 1); - GL11.glTranslated(0, 0.2, 0); - } - - ResourceManager.tau.renderPart("Rotor"); - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(10, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(15F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(2F, 1F, 3F); - - ResourceManager.tau.renderAll(); - - break; - - case ENTITY: - - double s1 = 0.25D; - GL11.glScaled(s1, s1, s1); - GL11.glTranslated(0, 1, 0); - - ResourceManager.tau.renderAll(); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.6D; - GL11.glTranslated(8, 7, 0); - GL11.glRotated(-90, 0, 1, 0); - GL11.glRotated(-135, 1, 0, 0); - GL11.glScaled(s, s, -s); - - ResourceManager.tau.renderAll(); - - break; - - default: break; - } - - GL11.glShadeModel(GL11.GL_SMOOTH); - GL11.glShadeModel(GL11.GL_FLAT); - GL11.glEnable(GL11.GL_CULL_FACE); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponThompson.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponThompson.java deleted file mode 100644 index f8bd5c12c..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponThompson.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponThompson implements IItemRenderer { - - public ItemRenderWeaponThompson() { } - - @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); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.thompson_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.25D; - GL11.glRotated(25, 0, 0, 1); - GL11.glTranslated(0.5, -0.5, -0.5); - GL11.glRotated(-100, 0, 1, 0); - GL11.glScaled(s0, s0, s0); - - break; - - case EQUIPPED: - - double scale = 0.25D; - GL11.glScaled(scale, scale, scale); - GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(-170, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-15F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(-2F, -3F, -0.5F); - - break; - - case ENTITY: - - double s1 = 0.2D; - GL11.glScaled(s1, s1, s1); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 1.75D; - GL11.glTranslated(4, 11, 0); - GL11.glRotated(90, 0, 1, 0); - GL11.glRotated(135, 1, 0, 0); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - ResourceManager.thompson.renderAll(); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponVortex.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponVortex.java deleted file mode 100644 index 80de6557d..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponVortex.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.main.ResourceManager; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderWeaponVortex implements IItemRenderer { - - public ItemRenderWeaponVortex() { } - - @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); - - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.vortex_tex); - - switch(type) { - - case EQUIPPED_FIRST_PERSON: - - double s0 = 0.05D; - GL11.glScaled(s0, s0, s0); - GL11.glRotated(25, 0, 0, 1); - GL11.glRotated(-5, 0, 1, 0); - GL11.glTranslated(17, -5, -5); - - break; - - case EQUIPPED: - - double scale = 0.075D; - GL11.glScaled(scale, scale, scale); - GL11.glRotated(-75, 0, 1, 0); - GL11.glRotated(-10, 0, 0, 1); - GL11.glRotated(15, 1, 0, 0); - GL11.glTranslated(7, -4, -6); - - break; - - case ENTITY: - - double s1 = 0.05D; - GL11.glScaled(s1, s1, s1); - - break; - - case INVENTORY: - - GL11.glEnable(GL11.GL_LIGHTING); - - double s = 0.3D; - GL11.glTranslated(7, 11, 0); - GL11.glRotated(-135, 0, 0, 1); - GL11.glScaled(s, s, -s); - - break; - - default: break; - } - - ResourceManager.vortex.renderAll(); - - GL11.glPopMatrix(); - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderZOMG.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderZOMG.java deleted file mode 100644 index f30dfa967..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderZOMG.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelZOMG; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderZOMG implements IItemRenderer { - - protected ModelZOMG swordModel; - - public ItemRenderZOMG() { - swordModel = new ModelZOMG(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return helper == ItemRendererHelper.ENTITY_BOBBING || helper == ItemRendererHelper.ENTITY_ROTATION; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelZOMG.png")); - GL11.glRotatef(-150.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.2F); - GL11.glScalef(0.75F, 0.75F, 0.75F); - GL11.glTranslatef(-0.4F, -0.5F, -0.1F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - - case EQUIPPED: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelZOMG.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(0.5F, -0.2F, 0.0F); - GL11.glScalef(1.5F, 1.5F, 1.5F); - GL11.glTranslatef(-0.4F, -0.1F, -0.1F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - - case ENTITY: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelZOMG.png")); - GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F); - GL11.glScalef(1.5F, 1.5F, 1.5F); - GL11.glTranslatef(0F, -0.5F, 0F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - default: break; - } - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAm180.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAm180.java new file mode 100644 index 000000000..a21b57e25 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAm180.java @@ -0,0 +1,146 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderAm180 extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1F * offset, -1F * offset, 1F * offset, + 0, -4.1875 / 8D, 0.25); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.am180_tex); + double scale = 0.1875D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] magazine = HbmAnimations.getRelevantTransformation("MAG"); + double[] magTurn = HbmAnimations.getRelevantTransformation("MAGTURN"); + double[] magSpin = HbmAnimations.getRelevantTransformation("MAGSPIN"); + double[] bolt = HbmAnimations.getRelevantTransformation("BOLT"); + double[] turn = HbmAnimations.getRelevantTransformation("TURN"); + + GL11.glTranslated(0, -2, -6); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, 2, 6); + + GL11.glRotated(turn[2], 0, 0, 1); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + GL11.glTranslated(0, 0, recoil[2]); + + HbmAnimations.applyRelevantTransformation("Gun"); + ResourceManager.am180.renderPart("Gun"); + ResourceManager.am180.renderPart("Silencer"); + + GL11.glPushMatrix(); + HbmAnimations.applyRelevantTransformation("Trigger"); + ResourceManager.am180.renderPart("Trigger"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, bolt[2]); + HbmAnimations.applyRelevantTransformation("Bolt"); + ResourceManager.am180.renderPart("Bolt"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(magazine[0], magazine[1], magazine[2]); + + GL11.glTranslated(0, 2.0625, 3.75); + GL11.glRotated(magTurn[0], 1, 0, 0); + GL11.glRotated(magTurn[2], 0, 0, 1); + GL11.glTranslated(0, -2.0625, -3.75); + + GL11.glTranslated(0, 2.3125, 1.5); + GL11.glRotated(magSpin[0], 1, 0, 0); + GL11.glTranslated(0, -2.3125, -1.5); + + HbmAnimations.applyRelevantTransformation("Mag"); + + GL11.glPushMatrix(); + int mag = gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory); + GL11.glTranslated(0, 0, 1.5); + GL11.glRotated(mag / 59D * 360D, 0, -1, 0); + GL11.glTranslated(0, 0, -1.5); + ResourceManager.am180.renderPart("Mag"); + GL11.glPopMatrix(); + + ResourceManager.am180.renderPart("MagPlate"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.875, 17); + GL11.glRotated(turn[2], 0, 0, -1); + GL11.glRotated(90, 0, 1, 0); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.25D); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.875, 16.75); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + GL11.glScaled(0.5, 0.5, 0.5); + this.renderMuzzleFlash(gun.lastShot[0], 75, 5); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 1D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, -0.5, 3); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 0.75D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(1.5, 0, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.am180_tex); + ResourceManager.am180.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAtlas.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAtlas.java new file mode 100644 index 000000000..85be22898 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAtlas.java @@ -0,0 +1,138 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +public class ItemRenderAtlas extends ItemRenderWeaponBase { + + public ResourceLocation texture; + + public ItemRenderAtlas(ResourceLocation texture) { + this.texture = texture; + } + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.0F * offset, -0.75F * offset, 1F * offset, + 0, -3.125 / 8D, 0.25); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); + double scale = 0.125D; + GL11.glScaled(scale, scale, scale); + + GL11.glShadeModel(GL11.GL_SMOOTH); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] reloadMove = HbmAnimations.getRelevantTransformation("RELOAD_MOVE"); + double[] reloadRot = HbmAnimations.getRelevantTransformation("RELOAD_ROT"); + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + + GL11.glTranslated(recoil[0], recoil[1], recoil[2]); + GL11.glRotated(recoil[2] * 10, 1, 0, 0); + + GL11.glTranslated(0, 0, -7); + GL11.glRotated(equip[0], -1, 0, 0); + GL11.glTranslated(0, 0, 7); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.5, 9.25); + GL11.glRotated(-recoil[2] * 10, 1, 0, 0); + GL11.glRotated(90, 0, 1, 0); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.5D); + GL11.glPopMatrix(); + + GL11.glTranslated(reloadMove[0], reloadMove[1], reloadMove[2]); + + GL11.glRotated(reloadRot[0], 1, 0, 0); + GL11.glRotated(reloadRot[2], 0, 0, 1); + GL11.glRotated(reloadRot[1], 0, 1, 0); + ResourceManager.bio_revolver.renderPart("Grip"); + + GL11.glPushMatrix(); /// FRONT PUSH /// + GL11.glRotated(HbmAnimations.getRelevantTransformation("FRONT")[2], 1, 0, 0); + ResourceManager.bio_revolver.renderPart("Barrel"); + GL11.glPushMatrix(); /// LATCH PUSH /// + GL11.glTranslated(0, 2.3125, -0.875); + GL11.glRotated(HbmAnimations.getRelevantTransformation("LATCH")[2], 1, 0, 0); + GL11.glTranslated(0, -2.3125, 0.875); + ResourceManager.bio_revolver.renderPart("Latch"); + GL11.glPopMatrix(); /// LATCH POP /// + + GL11.glPushMatrix(); /// DRUM PUSH /// + GL11.glTranslated(0, 1, 0); + GL11.glRotated(HbmAnimations.getRelevantTransformation("DRUM")[2] * 60, 0, 0, 1); + GL11.glTranslated(0, -1, 0); + GL11.glTranslated(0, 0, HbmAnimations.getRelevantTransformation("DRUM_PUSH")[2]); + ResourceManager.bio_revolver.renderPart("Drum"); + GL11.glPopMatrix(); /// DRUM POP /// + + GL11.glPopMatrix(); /// FRONT POP /// + + GL11.glPushMatrix(); /// HAMMER /// + GL11.glTranslated(0, 0, -4.5); + GL11.glRotated(-45 + 45 * HbmAnimations.getRelevantTransformation("HAMMER")[2], 1, 0, 0); + GL11.glTranslated(0, 0, 4.5); + ResourceManager.bio_revolver.renderPart("Hammer"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.5, 9.25); + GL11.glRotated(90, 0, 1, 0); + this.renderMuzzleFlash(gun.lastShot[0], 75, 7.5); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 0.75D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, 1, 3); + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.125D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-0.5, 1.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); + ResourceManager.bio_revolver.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderBolter.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderBolter.java new file mode 100644 index 000000000..165cd20cc --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderBolter.java @@ -0,0 +1,119 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.item.ItemStack; + +public class ItemRenderBolter extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.5F * offset, -2F * offset, 2.5F * offset, + 0, -10.5 / 8D, 1.25); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.bolter_tex); + double scale = 0.5D; + GL11.glScaled(scale, scale, scale); + + GL11.glRotated(180, 0, 1, 0); + + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + GL11.glRotated(recoil[0] * 5, 1, 0, 0); + GL11.glTranslated(0, 0, recoil[0]); + + double[] tilt = HbmAnimations.getRelevantTransformation("TILT"); + GL11.glTranslated(0, tilt[0], 3); + GL11.glRotated(tilt[0] * 35, 1, 0, 0); + GL11.glTranslated(0, 0, -3); + + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.bolter.renderPart("Body"); + + double[] mag = HbmAnimations.getRelevantTransformation("MAG"); + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, 5); + GL11.glRotated(mag[0] * 60 * (mag[2] == 1 ? 2.5 : 1), -1, 0, 0); + GL11.glTranslated(0, 0, -5); + ResourceManager.bolter.renderPart("Mag"); + if(mag[2] != 1) ResourceManager.bolter.renderPart("Bullet"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + + FontRenderer font = Minecraft.getMinecraft().fontRenderer; + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + String s = gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, null) + ""; + float f3 = 0.04F; + GL11.glTranslatef(0.025F - (font.getStringWidth(s) / 2) * 0.04F, 2.11F, 2.91F); + GL11.glScalef(f3, -f3, f3); + GL11.glRotatef(45, 1, 0, 0); + GL11.glNormal3f(0.0F, 0.0F, -1.0F * f3); + font.drawString(s, 0, 0, 0xff0000); + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopAttrib(); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 2.5D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, -0.75, 1.25); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 2.75D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-0.25, -0.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glRotated(180, 0, 1, 0); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.bolter_tex); + ResourceManager.bolter.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderCarbine.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderCarbine.java new file mode 100644 index 000000000..829aa1a3a --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderCarbine.java @@ -0,0 +1,120 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderCarbine extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.5F * offset, -1.5F * offset, 0.875F * offset, + 0, -6.25 / 8D, 0.25); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.carbine_tex); + double scale = 0.5D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] slide = HbmAnimations.getRelevantTransformation("SLIDE"); + double[] mag = HbmAnimations.getRelevantTransformation("MAG"); + double[] lift = HbmAnimations.getRelevantTransformation("LIFT"); + double[] bullet = HbmAnimations.getRelevantTransformation("BULLET"); + double[] rel = HbmAnimations.getRelevantTransformation("REL"); + + GL11.glTranslated(0, -1, -2); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, 1, 2); + + GL11.glTranslated(0, 0, -2); + GL11.glRotated(lift[0], 1, 0, 0); + GL11.glTranslated(0, 0, 2); + + GL11.glTranslated(0, 0, recoil[2]); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + ResourceManager.carbine.renderPart("Gun"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, slide[2]); + ResourceManager.carbine.renderPart("Slide"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(mag[0], mag[1], mag[2]); + ResourceManager.carbine.renderPart("Magazine"); + GL11.glTranslated(rel[0], rel[1], rel[2]); + if(bullet[0] != 1) ResourceManager.carbine.renderPart("Bullet"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1, 8); + GL11.glRotated(90, 0, 1, 0); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.25D); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1, 8); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + GL11.glScaled(0.5, 0.5, 0.5); + this.renderMuzzleFlash(gun.lastShot[0], 75, 7.5); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 1.375D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, 0, 2); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.375D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-0.5, 0, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.carbine_tex); + ResourceManager.carbine.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderChemthrower.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderChemthrower.java new file mode 100644 index 000000000..582bdfaa5 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderChemthrower.java @@ -0,0 +1,93 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.mags.IMagazine; +import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderChemthrower extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -2F * offset, -2F * offset, 2.5F * offset, + 0, -4.375 / 8D, 1); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.chemthrower_tex); + double scale = 0.75D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + + GL11.glTranslated(0, -2, -4); + GL11.glRotated(equip[0], -1, 0, 0); + GL11.glTranslated(0, 2, 4); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + GL11.glRotated(90, 0, 1, 0); + ResourceManager.chemthrower.renderPart("Gun"); + ResourceManager.chemthrower.renderPart("Hose"); + ResourceManager.chemthrower.renderPart("Nozzle"); + + GL11.glTranslated(0, 0.875, 1.75); + IMagazine mag = gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack); + double d = (double) mag.getAmount(stack, MainRegistry.proxy.me().inventory) / (double) mag.getCapacity(stack); + GL11.glRotated(135 - d * 270, 1, 0, 0); + GL11.glTranslated(0, -0.875, -1.75); + + ResourceManager.chemthrower.renderPart("Gauge"); + + GL11.glShadeModel(GL11.GL_FLAT); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 2D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, -2.5, 0.5); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 2D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(0.875, 0, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glRotated(90, 0, 1, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.chemthrower_tex); + ResourceManager.chemthrower.renderPart("Gun"); + ResourceManager.chemthrower.renderPart("Hose"); + ResourceManager.chemthrower.renderPart("Nozzle"); + ResourceManager.chemthrower.renderPart("Gauge"); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderCoilgun.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderCoilgun.java new file mode 100644 index 000000000..111232870 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderCoilgun.java @@ -0,0 +1,88 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderCoilgun extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.25F * offset, -1.5F * offset, 2.5F * offset, + 0, -7.5 / 8D, 1); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flaregun_tex); + double scale = 0.75D; + GL11.glScaled(scale, scale, scale); + + GL11.glRotated(-90, 0, 1, 0); + + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + GL11.glTranslated(-1.5 - recoil[0] * 0.5, 0, 0); + GL11.glRotated(recoil[0] * 45, 0, 0, 1); + GL11.glTranslated(1.5, 0, 0); + + double[] reload = HbmAnimations.getRelevantTransformation("RELOAD"); + GL11.glTranslated(-2.5, 0, 0); + GL11.glRotated(reload[0] * -45, 0, 0, 1); + GL11.glTranslated(2.5, 0, 0); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.coilgun_tex); + ResourceManager.coilgun.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 3D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, 0.25, 1.25); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 4D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-0.25, -0.25, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glRotated(-90, 0, 1, 0); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.coilgun_tex); + ResourceManager.coilgun.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderCongoLake.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderCongoLake.java new file mode 100644 index 000000000..b2b7250f4 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderCongoLake.java @@ -0,0 +1,171 @@ +package com.hbm.render.item.weapon.sedna; + +import java.awt.Color; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.mags.IMagazine; +import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; +import com.hbm.particle.SpentCasing; +import com.hbm.render.anim.HbmAnimations; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderCongoLake extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.5F * offset, -2F * offset, 1.25F * offset, + 0, -10 / 8D, 0.25); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.congolake_tex); + double scale = 0.5D; + GL11.glScaled(scale, scale, scale); + + HbmAnimations.applyRelevantTransformation("Gun"); + ResourceManager.congolake.renderPart("Gun"); + + + GL11.glPushMatrix(); + { + HbmAnimations.applyRelevantTransformation("Pump"); + ResourceManager.congolake.renderPart("Pump"); + } + GL11.glPopMatrix(); + + + GL11.glPushMatrix(); + { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + HbmAnimations.applyRelevantTransformation("Sight"); + GL11.glTranslated(0, 2.125, 3); + GL11.glRotated(aimingProgress * -90, 1, 0, 0); + GL11.glTranslated(0, -2.125, -3); + ResourceManager.congolake.renderPart("Sight"); + } + GL11.glPopMatrix(); + + + GL11.glPushMatrix(); + { + HbmAnimations.applyRelevantTransformation("Loop"); + ResourceManager.congolake.renderPart("Loop"); + } + GL11.glPopMatrix(); + + + GL11.glPushMatrix(); + { + HbmAnimations.applyRelevantTransformation("GuardOuter"); + ResourceManager.congolake.renderPart("GuardOuter"); + + GL11.glPushMatrix(); + { + HbmAnimations.applyRelevantTransformation("GuardInner"); + ResourceManager.congolake.renderPart("GuardInner"); + } + GL11.glPopMatrix(); + } + GL11.glPopMatrix(); + + + GL11.glPushMatrix(); + { + IMagazine mag = gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack); + if(gun.getLastAnim(stack, 0) != AnimType.INSPECT || mag.getAmount(stack, MainRegistry.proxy.me().inventory) > 0) { //omit when inspecting and no shell is loaded + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.casings_tex); + + HbmAnimations.applyRelevantTransformation("Shell"); + + SpentCasing casing = mag.getCasing(stack, MainRegistry.proxy.me().inventory); + int[] colors = casing != null ? casing.getColors() : new int[] { SpentCasing.COLOR_CASE_40MM }; + + Color shellColor = new Color(colors[0]); + GL11.glColor3f(shellColor.getRed() / 255F, shellColor.getGreen() / 255F, shellColor.getBlue() / 255F); + ResourceManager.congolake.renderPart("Shell"); + + Color shellForeColor = new Color(colors.length > 1 ? colors[1] : colors[0]); + GL11.glColor3f(shellForeColor.getRed() / 255F, shellForeColor.getGreen() / 255F, shellForeColor.getBlue() / 255F); + ResourceManager.congolake.renderPart("ShellFore"); + + GL11.glColor3f(1F, 1F, 1F); + } + } + GL11.glPopMatrix(); + + double smokeScale = 0.25; + + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.75, 4.25); + double[] transform = HbmAnimations.getRelevantTransformation("Gun"); + GL11.glRotated(-transform[5], 0, 0, 1); + GL11.glRotated(-transform[4], 0, 1, 0); + GL11.glRotated(-transform[3], 1, 0, 0); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(smokeScale, smokeScale, smokeScale); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 1D); + GL11.glPopMatrix(); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.75, 4.25); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + GL11.glScaled(0.5, 0.5, 0.5); + this.renderMuzzleFlash(gun.lastShot[0], 150, 7.5); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + GL11.glTranslated(0, -2.5, 4); + double scale = 2.5D; + GL11.glScaled(scale, scale, scale); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 2.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(0, -1.25, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.congolake_tex); + ResourceManager.congolake.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDANI.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDANI.java new file mode 100644 index 000000000..af2507d02 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDANI.java @@ -0,0 +1,187 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderDANI extends ItemRenderWeaponBase { + + @Override public boolean isAkimbo() { return true; } + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + float offset = 0.8F; + + for(int i = -1; i <= 1; i += 2) { + + int index = i == -1 ? 0 : 1; + Minecraft.getMinecraft().renderEngine.bindTexture(index == 0 ? ResourceManager.dani_celestial_tex : ResourceManager.dani_lunar_tex); + + GL11.glPushMatrix(); + + standardAimingTransform(stack, + -1.5F * offset * i, -0.75F * offset, 1F * offset, + 0, -3.125 / 8D, 0.25); + + double scale = 0.125D; + GL11.glScaled(scale, scale, scale); + + GL11.glShadeModel(GL11.GL_SMOOTH); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL", index); + double[] reloadMove = HbmAnimations.getRelevantTransformation("RELOAD_MOVE", index); + double[] reloadRot = HbmAnimations.getRelevantTransformation("RELOAD_ROT", index); + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP", index); + + GL11.glTranslated(recoil[0], recoil[1], recoil[2]); + GL11.glRotated(recoil[2] * 10, 1, 0, 0); + + GL11.glTranslated(0, -2, -2); + GL11.glRotated(equip[0], -1, 0, 0); + GL11.glTranslated(0, 2, 2); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.5, 9.25); + GL11.glRotated(-recoil[2] * 10, 1, 0, 0); + GL11.glRotated(90, 0, 1, 0); + this.renderSmokeNodes(gun.getConfig(stack, index).smokeNodes, 0.5D); + GL11.glPopMatrix(); + + GL11.glTranslated(reloadMove[0], reloadMove[1], reloadMove[2]); + + GL11.glRotated(reloadRot[0], 1, 0, 0); + GL11.glRotated(reloadRot[2] * i, 0, 0, 1); + GL11.glRotated(reloadRot[1] * i, 0, 1, 0); + ResourceManager.bio_revolver.renderPart("Grip"); + + GL11.glPushMatrix(); /// FRONT PUSH /// + GL11.glRotated(HbmAnimations.getRelevantTransformation("FRONT", index)[2], 1, 0, 0); + ResourceManager.bio_revolver.renderPart("Barrel"); + GL11.glPushMatrix(); /// LATCH PUSH /// + GL11.glTranslated(0, 2.3125, -0.875); + GL11.glRotated(HbmAnimations.getRelevantTransformation("LATCH", index)[2], 1, 0, 0); + GL11.glTranslated(0, -2.3125, 0.875); + ResourceManager.bio_revolver.renderPart("Latch"); + GL11.glPopMatrix(); /// LATCH POP /// + + GL11.glPushMatrix(); /// DRUM PUSH /// + GL11.glTranslated(0, 1, 0); + GL11.glRotated(HbmAnimations.getRelevantTransformation("DRUM", index)[2] * 60, 0, 0, 1); + GL11.glTranslated(0, -1, 0); + GL11.glTranslated(0, 0, HbmAnimations.getRelevantTransformation("DRUM_PUSH", index)[2]); + ResourceManager.bio_revolver.renderPart("Drum"); + GL11.glPopMatrix(); /// DRUM POP /// + + GL11.glPopMatrix(); /// FRONT POP /// + + GL11.glPushMatrix(); /// HAMMER /// + GL11.glTranslated(0, 0, -4.5); + GL11.glRotated(-45 + 45 * HbmAnimations.getRelevantTransformation("HAMMER", index)[2], 1, 0, 0); + GL11.glTranslated(0, 0, 4.5); + ResourceManager.bio_revolver.renderPart("Hammer"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.5, 9.25); + GL11.glRotated(90, 0, 1, 0); + this.renderMuzzleFlash(gun.lastShot[index], 75, 7.5); + GL11.glPopMatrix(); + + GL11.glPopMatrix(); + } + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + GL11.glTranslated(0, 1, 3); + } + + @Override + public void setupThirdPersonAkimbo(ItemStack stack) { + super.setupThirdPersonAkimbo(stack); + GL11.glTranslated(0, 1, 3); + } + + @Override + public void setupInv(ItemStack stack) { + GL11.glScaled(1, 1, -1); + GL11.glTranslated(8, 6, 0); + double scale = 1.125D; + GL11.glScaled(scale, scale, scale); + } + + @Override + public void renderInv(ItemStack stack) { + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glShadeModel(GL11.GL_SMOOTH); + + GL11.glPushMatrix(); + GL11.glRotated(225, 0, 0, 1); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(2, 0, 0); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.dani_celestial_tex); + ResourceManager.bio_revolver.renderAll(); + GL11.glPopMatrix(); + + GL11.glTranslated(0, 0, 5); + GL11.glPushMatrix(); + GL11.glRotated(225, 0, 0, 1); + GL11.glRotated(-90, 0, 1, 0); + GL11.glRotated(-90, 1, 0, 0); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(-45, 0, 1, 0); + GL11.glTranslated(-2, 0, 0); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.dani_lunar_tex); + ResourceManager.bio_revolver.renderAll(); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + } + + @Override + public void renderEquipped(ItemStack stack) { + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.dani_lunar_tex); + ResourceManager.bio_revolver.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + + @Override + public void renderEquippedAkimbo(ItemStack stack) { + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.dani_celestial_tex); + ResourceManager.bio_revolver.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.dani_celestial_tex); + ResourceManager.bio_revolver.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDebug.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDebug.java new file mode 100644 index 000000000..f4875de7f --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDebug.java @@ -0,0 +1,133 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderDebug extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 1); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.0F * offset, -0.75F * offset, 1F * offset, + 0, -3.875 / 8D, 0); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + + double scale = 0.125D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + + double[] equipSpin = HbmAnimations.getRelevantTransformation("ROTATE"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] reloadLift = HbmAnimations.getRelevantTransformation("RELOAD_LIFT"); + double[] reloadJolt = HbmAnimations.getRelevantTransformation("RELOAD_JOLT"); + double[] reloadTilt = HbmAnimations.getRelevantTransformation("RELAOD_TILT"); + double[] cylinderFlip = HbmAnimations.getRelevantTransformation("RELOAD_CYLINDER"); + double[] reloadBullets = HbmAnimations.getRelevantTransformation("RELOAD_BULLETS"); + + GL11.glRotated(equipSpin[0], 0, 0, 1); + + standardAimingTransform(stack, 0, 0, recoil[2], -recoil[2], 0, 0); + GL11.glRotated(recoil[2] * 10, 0, 0, 1); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + GL11.glPushMatrix(); + GL11.glTranslated(-9, 2.5, 0); + GL11.glRotated(recoil[2] * -10, 0, 0, 1); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.5D); + GL11.glPopMatrix(); + + GL11.glRotated(reloadLift[0], 0, 0, 1); + GL11.glTranslated(reloadJolt[0], 0, 0); + GL11.glRotated(reloadTilt[0], 1, 0, 0); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.debug_gun_tex); + ResourceManager.lilmac.renderPart("Gun"); + + GL11.glPushMatrix(); + GL11.glRotated(cylinderFlip[0], 1, 0, 0); + ResourceManager.lilmac.renderPart("Pivot"); + GL11.glTranslated(0, 1.75, 0); + GL11.glRotated(HbmAnimations.getRelevantTransformation("DRUM")[2] * -60, 1, 0, 0); + GL11.glTranslated(0, -1.75, 0); + ResourceManager.lilmac.renderPart("Cylinder"); + GL11.glTranslated(reloadBullets[0], reloadBullets[1], reloadBullets[2]); + if(HbmAnimations.getRelevantTransformation("RELOAD_BULLETS_CON")[0] != 1) + ResourceManager.lilmac.renderPart("Bullets"); + ResourceManager.lilmac.renderPart("Casings"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); /// HAMMER /// + GL11.glTranslated(4, 1.25, 0); + GL11.glRotated(-30 + 30 * HbmAnimations.getRelevantTransformation("HAMMER")[2], 0, 0, 1); + GL11.glTranslated(-4, -1.25, 0); + ResourceManager.lilmac.renderPart("Hammer"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0.125, 2.5, 0); + this.renderGapFlash(gun.lastShot[0]); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(-9.5, 2.5, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + //this.renderMuzzleFlash(gun.lastShot); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + GL11.glScaled(0.75, 0.75, 0.75); + GL11.glTranslated(0, 1, 3); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.25D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + + GL11.glRotated(90, 0, 1, 0); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glAlphaFunc(GL11.GL_GREATER, 0F); + GL11.glEnable(GL11.GL_ALPHA_TEST); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.debug_gun_tex); + ResourceManager.lilmac.renderPart("Gun"); + ResourceManager.lilmac.renderPart("Cylinder"); + ResourceManager.lilmac.renderPart("Bullets"); + ResourceManager.lilmac.renderPart("Casings"); + ResourceManager.lilmac.renderPart("Pivot"); + ResourceManager.lilmac.renderPart("Hammer"); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDoubleBarrel.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDoubleBarrel.java new file mode 100644 index 000000000..5647da9ae --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDoubleBarrel.java @@ -0,0 +1,170 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +public class ItemRenderDoubleBarrel extends ItemRenderWeaponBase { + + protected ResourceLocation texture; + + public ItemRenderDoubleBarrel(ResourceLocation texture) { + this.texture = texture; + } + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.25F * offset, -1F * offset, 2F * offset, + 0, -2 / 8D, 1); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); + double scale = 0.375D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] turn = HbmAnimations.getRelevantTransformation("TURN"); + double[] barrel = HbmAnimations.getRelevantTransformation("BARREL"); + double[] lift = HbmAnimations.getRelevantTransformation("LIFT"); + double[] shells = HbmAnimations.getRelevantTransformation("SHELLS"); + double[] shellFlip = HbmAnimations.getRelevantTransformation("SHELL_FLIP"); + double[] lever = HbmAnimations.getRelevantTransformation("LEVER"); + double[] buckle = HbmAnimations.getRelevantTransformation("BUCKLE"); + double[] no_ammo = HbmAnimations.getRelevantTransformation("NO_AMMO"); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + GL11.glTranslated(recoil[0] * 3, recoil[1], recoil[2]); + GL11.glRotated(recoil[2] * 10, 1, 0, 0); + + GL11.glTranslated(0, 0, -4); + GL11.glRotated(equip[0], -1, 0, 0); + GL11.glTranslated(0, 0, 4); + + GL11.glTranslated(0, 0, -4); + GL11.glRotated(turn[1], 0, 1, 0); + GL11.glTranslated(0, 0, 4); + + GL11.glTranslated(0, 0, -4); + GL11.glRotated(lift[0], -1, 0, 0); + GL11.glTranslated(0, 0, 4); + + ResourceManager.double_barrel.renderPart("Stock"); + + GL11.glPushMatrix(); + + GL11.glTranslated(0, -0.4375, -0.875); + GL11.glRotated(barrel[0], 1, 0, 0); + GL11.glTranslated(0, 0.4375, 0.875); + + ResourceManager.double_barrel.renderPart("BarrelShort"); + if(!isSawedOff(stack)) ResourceManager.double_barrel.renderPart("Barrel"); + + GL11.glPushMatrix(); + GL11.glTranslated(0.75, 0, -0.6875); + GL11.glRotated(buckle[1], 0, 1, 0); + GL11.glTranslated(-0.75, 0, 0.6875); + ResourceManager.double_barrel.renderPart("Buckle"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(-0.3125, 0.3125, 0); + GL11.glRotated(lever[2], 0, 0, 1); + GL11.glTranslated(0.3125, -0.3125, 0); + ResourceManager.double_barrel.renderPart("Lever"); + GL11.glPopMatrix(); + + if(no_ammo[0] == 0) { + GL11.glPushMatrix(); + GL11.glTranslated(shells[0], shells[1], shells[2]); + GL11.glTranslated(0, 0, -1); + GL11.glRotated(shellFlip[0], 1, 0, 0); + GL11.glTranslated(0, 0, 1); + ResourceManager.double_barrel.renderPart("Shells"); + GL11.glPopMatrix(); + } + + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, 8); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + GL11.glScaled(2, 2, 2); + this.renderMuzzleFlash(gun.lastShot[0], 75, 5); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 1.75D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, 1, 3); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + if(isSawedOff(stack)) { + double scale = 2D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-2, 0.5, 0); + } else { + double scale = 1.375D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(0, 0.5, 0); + } + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); + ResourceManager.double_barrel.renderPart("Stock"); + ResourceManager.double_barrel.renderPart("BarrelShort"); + if(!isSawedOff(stack)) ResourceManager.double_barrel.renderPart("Barrel"); + ResourceManager.double_barrel.renderPart("Buckle"); + ResourceManager.double_barrel.renderPart("Lever"); + ResourceManager.double_barrel.renderPart("Shells"); + GL11.glShadeModel(GL11.GL_FLAT); + } + + public boolean isSawedOff(ItemStack stack) { + return stack.getItem() == ModItems.gun_double_barrel_sacred_dragon; + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFatMan.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFatMan.java new file mode 100644 index 000000000..8991d63f6 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFatMan.java @@ -0,0 +1,130 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderFatMan extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.5F * offset, -1.25F * offset, 0.5F * offset, + -1F * offset, -1.25F * offset, 0F * offset); + } + + protected static String label = "AUTO"; + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.fatman_tex); + double scale = 0.5D; + GL11.glScaled(scale, scale, scale); + + boolean isLoaded = gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, null) > 0; + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] lid = HbmAnimations.getRelevantTransformation("LID"); + double[] nuke = HbmAnimations.getRelevantTransformation("NUKE"); + double[] piston = HbmAnimations.getRelevantTransformation("PISTON"); + double[] handle = HbmAnimations.getRelevantTransformation("HANDLE"); + double[] gauge = HbmAnimations.getRelevantTransformation("GAUGE"); + + GL11.glTranslated(0, 1, -2); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, -1, 2); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + ResourceManager.fatman.renderPart("Launcher"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, handle[2]); + ResourceManager.fatman.renderPart("Handle"); + + GL11.glTranslated(0.4375, -0.875, 0); + GL11.glRotated(gauge[2], 0, 0, 1); + GL11.glTranslated(-0.4375, 0.875, 0); + ResourceManager.fatman.renderPart("Gauge"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0.25, 0.125, 0); + GL11.glRotated(lid[2], 0, 0, 1); + GL11.glTranslated(-0.25, -0.125, 0); + ResourceManager.fatman.renderPart("Lid"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, piston[2]); + if(!isLoaded && piston[2] == 0) GL11.glTranslated(0, 0, 3); + ResourceManager.fatman.renderPart("Piston"); + GL11.glPopMatrix(); + + if(isLoaded || nuke[0] != 0 || nuke[1] != 0 || nuke[2] != 0) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.fatman_mininuke_tex); + GL11.glPushMatrix(); + GL11.glTranslated(nuke[0], nuke[1], nuke[2]); + ResourceManager.fatman.renderPart("MiniNuke"); + GL11.glPopMatrix(); + } + + GL11.glShadeModel(GL11.GL_FLAT); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 2.5D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(-0.5, 0.5, -3); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.375D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(0, -0.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.fatman_tex); + + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.fatman.renderPart("Launcher"); + ResourceManager.fatman.renderPart("Handle"); + ResourceManager.fatman.renderPart("Gauge"); + ResourceManager.fatman.renderPart("Lid"); + ResourceManager.fatman.renderPart("Piston"); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.fatman_mininuke_tex); + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + if(gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, null) > 0) ResourceManager.fatman.renderPart("MiniNuke"); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlamer.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlamer.java new file mode 100644 index 000000000..5ec21511a --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlamer.java @@ -0,0 +1,122 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.mags.IMagazine; +import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +public class ItemRenderFlamer extends ItemRenderWeaponBase { + + public ResourceLocation texture; + + public ItemRenderFlamer(ResourceLocation texture) { + this.texture = texture; + } + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.5F * offset, -1.5F * offset, 2.75F * offset, + 0, -4.625 / 8D, 0.25); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); + double scale = 0.375D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] rotate = HbmAnimations.getRelevantTransformation("ROTATE"); + + GL11.glTranslated(0, 2, -6); + GL11.glRotated(-equip[0], 1, 0, 0); + GL11.glTranslated(0, -2, 6); + + GL11.glTranslated(0, 1, 0); + GL11.glRotated(rotate[2], 0, 0, 1); + GL11.glTranslated(0, -1, 0); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + GL11.glPushMatrix(); + HbmAnimations.applyRelevantTransformation("Gun"); + ResourceManager.flamethrower.renderPart("Gun"); + if(hasShield(stack)) ResourceManager.flamethrower.renderPart("HeatShield"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + HbmAnimations.applyRelevantTransformation("Tank"); + ResourceManager.flamethrower.renderPart("Tank"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + HbmAnimations.applyRelevantTransformation("Gauge"); + GL11.glTranslated(1.25, 1.25, 0); + IMagazine mag = gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack); + GL11.glRotated(-135 + (mag.getAmount(stack, MainRegistry.proxy.me().inventory) * 270D / mag.getCapacity(stack)), 0, 0, 1); + GL11.glTranslated(-1.25, -1.25, 0); + ResourceManager.flamethrower.renderPart("Gauge"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 1.75D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, -3, 4); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.25D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-1, 1, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); + ResourceManager.flamethrower.renderPart("Gun"); + ResourceManager.flamethrower.renderPart("Tank"); + ResourceManager.flamethrower.renderPart("Gauge"); + if(hasShield(stack)) ResourceManager.flamethrower.renderPart("HeatShield"); + GL11.glShadeModel(GL11.GL_FLAT); + } + + public boolean hasShield(ItemStack stack) { + return stack.getItem() == ModItems.gun_flamer_daybreaker; + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlaregun.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlaregun.java new file mode 100644 index 000000000..d97381832 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFlaregun.java @@ -0,0 +1,117 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderFlaregun extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.25F * offset, -1.5F * offset, 2F * offset, + 0, -5.5 / 8D, 0.5); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flaregun_tex); + double scale = 0.125D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] hammer = HbmAnimations.getRelevantTransformation("HAMMER"); + double[] open = HbmAnimations.getRelevantTransformation("OPEN"); + double[] shell = HbmAnimations.getRelevantTransformation("SHELL"); + double[] flip = HbmAnimations.getRelevantTransformation("FLIP"); + + GL11.glTranslated(recoil[0], recoil[1], recoil[2]); + GL11.glRotated(recoil[2] * 10, 1, 0, 0); + GL11.glRotated(flip[0], 1, 0, 0); + + GL11.glTranslated(0, 0, -8); + GL11.glRotated(equip[0], -1, 0, 0); + GL11.glTranslated(0, 0, 8); + + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.flaregun.renderPart("Gun"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.8125, -4); + GL11.glRotated(hammer[0] - 15, 1, 0, 0); + GL11.glTranslated(0, -1.8125, 4); + ResourceManager.flaregun.renderPart("Hammer"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 2.156, 1.78); + GL11.glRotated(open[0], 1, 0, 0); + GL11.glTranslated(0, -2.156, -1.78); + ResourceManager.flaregun.renderPart("Barrel"); + GL11.glTranslated(shell[0], shell[1], shell[2]); + ResourceManager.flaregun.renderPart("Flare"); + GL11.glPopMatrix(); + + double smokeScale = 0.5; + + GL11.glPushMatrix(); + GL11.glTranslated(0, 4, 9); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(smokeScale, smokeScale, smokeScale); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 2.5D); + GL11.glTranslated(0, 0, 0.1); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 2D); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 0.5D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, 0.25, 3); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-0.5, 0, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flaregun_tex); + ResourceManager.flaregun.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFolly.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFolly.java new file mode 100644 index 000000000..a38c70419 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderFolly.java @@ -0,0 +1,250 @@ +package com.hbm.render.item.weapon.sedna; + +import java.awt.Color; +import java.util.ArrayList; +import java.util.List; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.mags.IMagazine; +import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; +import com.hbm.util.EntityDamageUtil; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; + +public class ItemRenderFolly extends ItemRenderWeaponBase { + + public static long timeAiming; + public static boolean jingle = false; + public static boolean wasAiming = false; + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2F : 2.5F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + float aim = 0.75F; + standardAimingTransform(stack, + -2.5F * offset, -1.5F * offset, 2.75F * offset, + -2 * aim, -1 * aim, 2.25F * offset); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.folly_tex); + double scale = 0.75D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] load = HbmAnimations.getRelevantTransformation("LOAD"); + double[] shell = HbmAnimations.getRelevantTransformation("SHELL"); + double[] screw = HbmAnimations.getRelevantTransformation("SCREW"); + double[] breech = HbmAnimations.getRelevantTransformation("BREECH"); + + GL11.glTranslated(0, 1, -4); + GL11.glRotated(-equip[0], 1, 0, 0); + GL11.glTranslated(0, -1, 4); + + GL11.glTranslated(0, -2, -2); + GL11.glRotated(load[0], 1, 0, 0); + GL11.glTranslated(0, 2, 2); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + ResourceManager.folly.renderPart("Cannon"); + + GL11.glPushMatrix(); + GL11.glTranslated(recoil[0], recoil[1], recoil[2]); + ResourceManager.folly.renderPart("Barrel"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(shell[0], shell[1], shell[2]); + ResourceManager.folly.renderPart("Shell"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(breech[0], breech[1], breech[2]); + ResourceManager.folly.renderPart("Breech"); + GL11.glTranslated(0, 1, 0); + GL11.glRotated(screw[2], 0, 0, 1); + GL11.glTranslated(0, -1, 0); + ResourceManager.folly.renderPart("Cog"); + GL11.glPopMatrix(); + + + boolean isAiming = gun.prevAimingProgress >= 1F && gun.aimingProgress >= 1F; + if(isAiming & !wasAiming) timeAiming = System.currentTimeMillis(); + + if(isAiming) { + + String splash = getBootSplash(); + + if(!jingle && !splash.isEmpty()) { + MainRegistry.proxy.playSoundClient(player.posX, player.posY, player.posZ, "hbm:weapon.fire.vstar", 0.5F, 1F); + jingle = true; + } + + GL11.glPushMatrix(); + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + FontRenderer font = Minecraft.getMinecraft().fontRenderer; + float variance = 0.85F + player.getRNG().nextFloat() * 0.15F; + + if(System.currentTimeMillis() - timeAiming > 5000 && load[0] == 0) { + IMagazine mag = gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack); + String msg = mag.getAmount(stack, player.inventory) > 0 ? "+" : "No ammo"; + GL11.glPushMatrix(); + float crosshairSize = 0.01F; + GL11.glTranslatef((font.getStringWidth(msg) / 2) * crosshairSize + 2, 1F + font.FONT_HEIGHT * crosshairSize / 2F, -2.75F); + GL11.glScalef(crosshairSize, -crosshairSize, crosshairSize); + GL11.glRotated(180D, 0, 1, 0); + GL11.glNormal3f(0.0F, 0.0F, -1.0F * crosshairSize); + font.drawString(msg, 0, 0, new Color(variance, variance * 0.5F, 0F).getRGB()); + GL11.glPopMatrix(); + } + + GL11.glPushMatrix(); + float splashSize = 0.02F; + GL11.glTranslatef((font.getStringWidth(splash) / 2) * splashSize + 2, 1F + font.FONT_HEIGHT * splashSize / 2F, -2.75F); + GL11.glScalef(splashSize, -splashSize, splashSize); + GL11.glRotated(180D, 0, 1, 0); + GL11.glNormal3f(0.0F, 0.0F, -1.0F * splashSize); + font.drawString(splash, 0, 0, new Color(variance, variance * 0.5F, 0F).getRGB()); + GL11.glPopMatrix(); + + List tty = getTTY(); + if(!tty.isEmpty()) { + GL11.glPushMatrix(); + float fontSize = 0.005F; + GL11.glTranslatef(2.5F, 1.375F, -2.75F); + GL11.glScalef(fontSize, -fontSize, fontSize); + GL11.glRotated(180D, 0, 1, 0); + GL11.glNormal3f(0.0F, 0.0F, -1.0F * fontSize); + for(String line : tty) { + font.drawString(line, 0, 0, new Color(variance, variance * 0.5F, 0F).getRGB()); + GL11.glTranslated(0, (font.FONT_HEIGHT + 2), 0); + } + GL11.glPopMatrix(); + } + + GL11.glColor3f(1F, 1F, 1F); + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glPopAttrib(); + GL11.glPopMatrix(); + + int brightness = player.worldObj.getLightBrightnessForSkyBlocks(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY), MathHelper.floor_double(player.posZ), 0); + int j = brightness % 65536; + int k = brightness / 65536; + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) j / 1.0F, (float) k / 1.0F); + } else { + jingle = false; + } + + wasAiming = isAiming; + + GL11.glShadeModel(GL11.GL_FLAT); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 3D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(-0.25, 0.5, 3); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.25D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(0, -0.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.folly_tex); + ResourceManager.folly.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } + + public static String getBootSplash() { + long now = System.currentTimeMillis(); + if(timeAiming + 5000 < now) return ""; + if(timeAiming + 3000 > now) return ""; + int splashIndex = (int)((now - timeAiming - 3000) * 35 / 2000) - 10; + //use the StringBuilder this, can't eat the drywall that, this used to be a free country + char[] letters = "VStarOS".toCharArray(); + String splash = ""; + for(int i = 0; i < letters.length; i++) { + if(i < splashIndex - 1) splash += EnumChatFormatting.LIGHT_PURPLE; + if(i == splashIndex - 1) splash += EnumChatFormatting.AQUA; + if(i == splashIndex) splash += EnumChatFormatting.WHITE; + if(i == splashIndex + 1) splash += EnumChatFormatting.AQUA; + if(i == splashIndex + 2) splash += EnumChatFormatting.LIGHT_PURPLE; + if(i > splashIndex + 2) splash += EnumChatFormatting.BLACK; + splash += letters[i]; + } + return splash; + } + + public static List getTTY() { + List tty = new ArrayList(); + long now = System.currentTimeMillis(); + int time = (int)((now - timeAiming)); + if(time < 3000) { + if(time > 250) tty.add(EnumChatFormatting.GREEN + "POST successful - Code 0"); + if(time > 500) tty.add(EnumChatFormatting.GREEN + "8,388,608 bytes of RAM installed"); + if(time > 500) tty.add(EnumChatFormatting.GREEN + "5,187,427 bytes available"); + if(time > 750) tty.add(EnumChatFormatting.GREEN + "Reticulating splines..."); + if(time > 1500) tty.add(EnumChatFormatting.GREEN + "No keyboard found!"); + if(time > 2000) tty.add(EnumChatFormatting.GREEN + "Booting from /dev/sda1..."); + } + if(time > 5000) { + EntityPlayer player = MainRegistry.proxy.me(); + MovingObjectPosition mop = EntityDamageUtil.getMouseOver(player, 250); + String target = EnumChatFormatting.GREEN + "Target: "; + if(mop.typeOfHit == mop.typeOfHit.MISS) target += "N/A"; + if(mop.typeOfHit == mop.typeOfHit.BLOCK) target += mop.blockX + "/" + mop.blockY + "/" + mop.blockZ; + if(mop.typeOfHit == mop.typeOfHit.ENTITY) target += mop.entityHit.getCommandSenderName(); + tty.add(target); + tty.add(EnumChatFormatting.GREEN + "Angle: " + ((int)(-player.rotationPitch * 100) / 100D)); + } + return tty; + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderG3.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderG3.java new file mode 100644 index 000000000..82d881174 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderG3.java @@ -0,0 +1,154 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderG3 extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.25F * offset, -1F * offset, 2.75F * offset, + 0, -3.5625 / 8D, 1.75); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.g3_tex); + double scale = 0.375D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] lift = HbmAnimations.getRelevantTransformation("LIFT"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] mag = HbmAnimations.getRelevantTransformation("MAG"); + double[] speen = HbmAnimations.getRelevantTransformation("SPEEN"); + double[] bolt = HbmAnimations.getRelevantTransformation("BOLT"); + double[] handle = HbmAnimations.getRelevantTransformation("HANDLE"); + double[] bullet = HbmAnimations.getRelevantTransformation("BULLET"); + + GL11.glTranslated(0, -2, -6); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, 2, 6); + + GL11.glTranslated(0, 0, -4); + GL11.glRotated(lift[0], 1, 0, 0); + GL11.glTranslated(0, 0, 4); + + GL11.glTranslated(0, 0, recoil[2]); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + ResourceManager.g3.renderPart("Rifle"); + ResourceManager.g3.renderPart("Stock"); + ResourceManager.g3.renderPart("Flash_Hider"); + ResourceManager.g3.renderPart("Trigger_Rifle.002"); + + GL11.glPushMatrix(); + GL11.glTranslated(mag[0], mag[1], mag[2]); + GL11.glTranslated(0, -1.75, -0.5); + GL11.glRotated(speen[2], 0, 0, 1); + GL11.glRotated(speen[1], 0, 1, 0); + GL11.glTranslated(0, 1.75, 0.5); + ResourceManager.g3.renderPart("Magazine"); + if(bullet[0] == 0) ResourceManager.g3.renderPart("Bullet"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, bolt[2]); + ResourceManager.g3.renderPart("Bolt"); + GL11.glTranslated(0, 0.625, 0); + GL11.glRotated(handle[2], 0, 0, 1); + GL11.glTranslated(0, -0.625, 0); + ResourceManager.g3.renderPart("Handle"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, -0.875, -3.5); + GL11.glRotated(-30 * (1 - ItemGunBaseNT.getMode(stack, 0)), 1, 0, 0); + GL11.glTranslated(0, 0.875, 3.5); + ResourceManager.g3.renderPart("Selector_Rifle.001"); + GL11.glPopMatrix(); + + double smokeScale = 0.75; + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, 13); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(smokeScale, smokeScale, smokeScale); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.5D); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, 12); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(-25 + gun.shotRand * 10, 1, 0, 0); + GL11.glScaled(0.75, 0.75, 0.75); + this.renderMuzzleFlash(gun.lastShot[0], 75, 10); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 1D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, 2, 4); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 0.875D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-0.5, 0.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.g3_tex); + ResourceManager.g3.renderPart("Rifle"); + ResourceManager.g3.renderPart("Stock"); + ResourceManager.g3.renderPart("Magazine"); + ResourceManager.g3.renderPart("Flash_Hider"); + ResourceManager.g3.renderPart("Bolt"); + ResourceManager.g3.renderPart("Handle"); + ResourceManager.g3.renderPart("Trigger_Rifle.002"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, -0.875, -3.5); + GL11.glRotated(-30, 1, 0, 0); + GL11.glTranslated(0, 0.875, 3.5); + ResourceManager.g3.renderPart("Selector_Rifle.001"); + GL11.glPopMatrix(); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderGreasegun.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderGreasegun.java new file mode 100644 index 000000000..41c7f287d --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderGreasegun.java @@ -0,0 +1,146 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderGreasegun extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.5F * offset, -1F * offset, 1.75F * offset, + 0, -2.625 / 8D, 1.125); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.greasegun_tex); + double scale = 0.375D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] stock = HbmAnimations.getRelevantTransformation("STOCK"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] flap = HbmAnimations.getRelevantTransformation("FLAP"); + double[] lift = HbmAnimations.getRelevantTransformation("LIFT"); + double[] handle = HbmAnimations.getRelevantTransformation("HANDLE"); + double[] mag = HbmAnimations.getRelevantTransformation("MAG"); + double[] turn = HbmAnimations.getRelevantTransformation("TURN"); + double[] bullet = HbmAnimations.getRelevantTransformation("BULLET"); + + GL11.glTranslated(0, -3, -3); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, 3, 3); + + GL11.glTranslated(0, -3, -3); + GL11.glRotated(lift[0], 1, 0, 0); + GL11.glTranslated(0, 3, 3); + + if(gun.aimingProgress < 1F) GL11.glRotated(turn[2], 0, 0, 1); + + GL11.glTranslated(0, 0, recoil[2]); + + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.greasegun.renderPart("Gun"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, -4 - stock[2]); + ResourceManager.greasegun.renderPart("Stock"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(mag[0], mag[1], mag[2]); + ResourceManager.greasegun.renderPart("Magazine"); + if(bullet[0] != 1) ResourceManager.greasegun.renderPart("Bullet"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, -1.4375, -0.125); + GL11.glRotated(handle[0], 1, 0, 0); + GL11.glTranslated(0, 1.4375, 0.125); + ResourceManager.greasegun.renderPart("Handle"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.53125, 0); + GL11.glRotated(flap[2], 0, 0, 1); + GL11.glTranslated(0, -0.5125, 0); + ResourceManager.greasegun.renderPart("Flap"); + GL11.glPopMatrix(); + + double smokeScale = 0.25; + + GL11.glPushMatrix(); + GL11.glTranslated(-0.25, 0, 1.5); + GL11.glRotated(turn[2], 0, 0, -1); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(smokeScale, smokeScale, smokeScale); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 1D); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, 8); + GL11.glRotated(turn[2], 0, 0, -1); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(smokeScale, smokeScale, smokeScale); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 1D); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, 8); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + GL11.glScaled(0.5, 0.5, 0.5); + this.renderMuzzleFlash(gun.lastShot[0], 75, 7.5); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + GL11.glTranslated(0, 1, 3); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-0.5, 2, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.greasegun_tex); + ResourceManager.greasegun.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java new file mode 100644 index 000000000..f02c22562 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java @@ -0,0 +1,132 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderHangman extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.5F * offset, -0.875F * offset, 1.75F * offset, + 0, -1.5 / 8D, 1.25); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.hangman_tex); + float offset = 0.8F; + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] roll = HbmAnimations.getRelevantTransformation("ROLL"); + double[] turn = HbmAnimations.getRelevantTransformation("TURN"); + double[] smack = HbmAnimations.getRelevantTransformation("SMACK"); + double[] lid = HbmAnimations.getRelevantTransformation("LID"); + double[] mag = HbmAnimations.getRelevantTransformation("MAG"); + double[] bullets = HbmAnimations.getRelevantTransformation("BULLETS"); + + GL11.glTranslated(1.5F * offset, 0, -1); + GL11.glRotated(turn[1], 0, 1, 0); + GL11.glTranslated(-1.5F * offset, 0, 1); + + GL11.glRotated(roll[2], 0, 0, 1); + GL11.glTranslated(smack[0], smack[1], smack[2]); + + double scale = 0.125D; + GL11.glScaled(scale, scale, scale); + + GL11.glTranslated(0, -4, -10); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, 4, 10); + + GL11.glTranslated(0, 0, recoil[2]); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + ResourceManager.hangman.renderPart("Rifle"); + ResourceManager.hangman.renderPart("Internals"); + + GL11.glPushMatrix(); + //i give the fuck up + GL11.glTranslated(-2.1875, -1.75, 0); + GL11.glRotated(lid[2], 0, 0, 1); + GL11.glTranslated(2.1875, 1.75, 0); + ResourceManager.hangman.renderPart("Lid"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(mag[0], mag[1], mag[2]); + ResourceManager.hangman.renderPart("Magazine"); + if(bullets[0] == 0) ResourceManager.hangman.renderPart("Bullets"); + GL11.glPopMatrix(); + + double smokeScale = 1.5; + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, 29); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(smokeScale, smokeScale, smokeScale); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.5D); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, 29); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + GL11.glScaled(2, 2, 2); + this.renderMuzzleFlash(gun.lastShot[0], 75, 7.5); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 0.5D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, 4.25, 11); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 0.375D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-0.5, 2.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.hangman_tex); + ResourceManager.hangman.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHeavyRevolver.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHeavyRevolver.java new file mode 100644 index 000000000..7e1d6e858 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHeavyRevolver.java @@ -0,0 +1,178 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +public class ItemRenderHeavyRevolver extends ItemRenderWeaponBase { + + protected ResourceLocation texture; + + public ItemRenderHeavyRevolver(ResourceLocation texture) { + this.texture = texture; + } + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * (isScoped(stack) ? 0.66F : 0.33F)); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 1); + + boolean isScoped = this.isScoped(stack); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.0F * offset, -0.75F * offset, 1F * offset, + 0, isScoped ? (-4.75 / 8D) : (-3.875 / 8D), isScoped ? -0.25 : 0); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + boolean isScoped = this.isScoped(stack); + if(isScoped && ItemGunBaseNT.prevAimingProgress == 1 && ItemGunBaseNT.aimingProgress == 1) return; + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + + double scale = 0.125D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + + + double[] equipSpin = HbmAnimations.getRelevantTransformation("ROTATE"); + double[] spin = HbmAnimations.getRelevantTransformation("SPIN"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] reloadLift = HbmAnimations.getRelevantTransformation("RELOAD_LIFT"); + double[] reloadJolt = HbmAnimations.getRelevantTransformation("RELOAD_JOLT"); + double[] reloadTilt = HbmAnimations.getRelevantTransformation("RELAOD_TILT"); + double[] cylinderFlip = HbmAnimations.getRelevantTransformation("RELOAD_CYLINDER"); + double[] reloadBullets = HbmAnimations.getRelevantTransformation("RELOAD_BULLETS"); + + GL11.glRotated(spin[0], 0, 0, 1); + + GL11.glTranslated(6, -3, 0); + GL11.glRotated(equipSpin[0], 0, 0, 1); + GL11.glTranslated(-6, 3, 0); + + standardAimingTransform(stack, 0, 0, recoil[2], -recoil[2], 0, 0); + GL11.glRotated(recoil[2] * 10, 0, 0, 1); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + GL11.glPushMatrix(); + GL11.glTranslated(-9, 2.5, 0); + GL11.glRotated(recoil[2] * -10, 0, 0, 1); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.5D); + GL11.glPopMatrix(); + + GL11.glRotated(reloadLift[0], 0, 0, 1); + GL11.glTranslated(reloadJolt[0], 0, 0); + GL11.glRotated(reloadTilt[0], 1, 0, 0); + + Minecraft.getMinecraft().renderEngine.bindTexture(texture); + ResourceManager.lilmac.renderPart("Gun"); + + GL11.glPushMatrix(); + GL11.glRotated(cylinderFlip[0], 1, 0, 0); + ResourceManager.lilmac.renderPart("Pivot"); + GL11.glTranslated(0, 1.75, 0); + GL11.glRotated(HbmAnimations.getRelevantTransformation("DRUM")[2] * -60, 1, 0, 0); + GL11.glTranslated(0, -1.75, 0); + ResourceManager.lilmac.renderPart("Cylinder"); + GL11.glTranslated(reloadBullets[0], reloadBullets[1], reloadBullets[2]); + if(HbmAnimations.getRelevantTransformation("RELOAD_BULLETS_CON")[0] != 1) + ResourceManager.lilmac.renderPart("Bullets"); + ResourceManager.lilmac.renderPart("Casings"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); /// HAMMER /// + GL11.glTranslated(4, 1.25, 0); + GL11.glRotated(-30 + 30 * HbmAnimations.getRelevantTransformation("HAMMER")[2], 0, 0, 1); + GL11.glTranslated(-4, -1.25, 0); + ResourceManager.lilmac.renderPart("Hammer"); + GL11.glPopMatrix(); + + if(isScoped) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lilmac_scope_tex); + ResourceManager.lilmac.renderPart("Scope"); + } + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0.125, 2.5, 0); + this.renderGapFlash(gun.lastShot[0]); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(-9.5, 2.5, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + //this.renderMuzzleFlash(gun.lastShot); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + GL11.glScaled(0.75, 0.75, 0.75); + GL11.glTranslated(0, 1, 3); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + if(isScoped(stack)) { + double scale = 1.125D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(0, -0.5, 0); + } else { + double scale = 1.25D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + } + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + + GL11.glRotated(90, 0, 1, 0); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glAlphaFunc(GL11.GL_GREATER, 0F); + GL11.glEnable(GL11.GL_ALPHA_TEST); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); + ResourceManager.lilmac.renderPart("Gun"); + ResourceManager.lilmac.renderPart("Cylinder"); + ResourceManager.lilmac.renderPart("Bullets"); + ResourceManager.lilmac.renderPart("Casings"); + ResourceManager.lilmac.renderPart("Pivot"); + ResourceManager.lilmac.renderPart("Hammer"); + if(isScoped(stack)) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lilmac_scope_tex); + ResourceManager.lilmac.renderPart("Scope"); + } + GL11.glShadeModel(GL11.GL_FLAT); + } + + public boolean isScoped(ItemStack stack) { + return stack.getItem() == ModItems.gun_heavy_revolver_lilmac; + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHenry.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHenry.java new file mode 100644 index 000000000..ff014f479 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHenry.java @@ -0,0 +1,157 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderHenry extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.25F * offset, -1F * offset, 1.75F * offset, + 0, -5 / 8D, 1); + + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + double r = -2.5 * aimingProgress; + GL11.glRotated(r, 1, 0, 0); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.henry_tex); + double scale = 0.375D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] sight = HbmAnimations.getRelevantTransformation("SIGHT"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] hammer = HbmAnimations.getRelevantTransformation("HAMMER"); + double[] lever = HbmAnimations.getRelevantTransformation("LEVER"); + double[] turn = HbmAnimations.getRelevantTransformation("TURN"); + double[] lift = HbmAnimations.getRelevantTransformation("LIFT"); + double[] twist = HbmAnimations.getRelevantTransformation("TWIST"); + double[] bullet = HbmAnimations.getRelevantTransformation("BULLET"); + double[] yeet = HbmAnimations.getRelevantTransformation("YEET"); + double[] roll = HbmAnimations.getRelevantTransformation("ROLL"); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + GL11.glTranslated(recoil[0] * 2, recoil[1], recoil[2]); + GL11.glRotated(recoil[2] * 5, 1, 0, 0); + GL11.glRotated(turn[2], 0, 0, 1); + + GL11.glTranslated(yeet[0], yeet[1], yeet[2]); + + GL11.glTranslated(0, 1, 0); + GL11.glRotated(roll[2], 0, 0, 1); + GL11.glTranslated(0, -1, 0); + + GL11.glTranslated(0, -4, 4); + GL11.glRotated(lift[0], 1, 0, 0); + GL11.glTranslated(0, 4, -4); + + GL11.glTranslated(0, 2, -4); + GL11.glRotated(equip[0], -1, 0, 0); + GL11.glTranslated(0, -2, 4); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1, 8); + GL11.glRotated(turn[2], 0, 0, -1); + GL11.glRotated(90, 0, 1, 0); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.25D); + GL11.glPopMatrix(); + + ResourceManager.henry.renderPart("Gun"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.25, -0.1875); + GL11.glRotated(sight[0], 1, 0, 0); + GL11.glTranslated(0, -1.25, 0.1875); + ResourceManager.henry.renderPart("Sight"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.625, -3); + GL11.glRotated(-30 + hammer[0], 1, 0, 0); + GL11.glTranslated(0, -0.625, 3); + ResourceManager.henry.renderPart("Hammer"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.25, -2.3125); + GL11.glRotated(lever[0], 1, 0, 0); + GL11.glTranslated(0, -0.25, 2.3125); + ResourceManager.henry.renderPart("Lever"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1, 0); + GL11.glRotated(twist[2], 0, 0, 1); + GL11.glTranslated(0, -1, 0); + ResourceManager.henry.renderPart("Front"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(bullet[0], bullet[1], bullet[2] - 1); + ResourceManager.henry.renderPart("Bullet"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1, 8); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + this.renderMuzzleFlash(gun.lastShot[0], 75, 5); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 1.75D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, 0.25, 3); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-0.5, 0.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.henry_tex); + ResourceManager.henry.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLAG.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLAG.java new file mode 100644 index 000000000..1a3f532a5 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLAG.java @@ -0,0 +1,141 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderLAG extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.5F * offset, -1F * offset, 1.5F * offset, + 0, -3.375 / 8D, 0.5); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.mike_hawk_tex); + double scale = 0.25D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + //double[] hammer = HbmAnimations.getRelevantTransformation("HAMMER"); + double[] addTrans = HbmAnimations.getRelevantTransformation("ADD_TRANS"); + double[] addRot = HbmAnimations.getRelevantTransformation("ADD_ROT"); + //Animation anim = HbmAnimations.getRelevantAnim(0); + + GL11.glTranslated(4, -4, 0); + GL11.glRotated(-equip[0], 0, 0, 1); + GL11.glTranslated(-4, 4, 0); + + GL11.glTranslated(addTrans[0], addTrans[1], addTrans[2]); + GL11.glRotated(addRot[2], 0, 0, 1); + GL11.glRotated(addRot[1], 0, 1, 0); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + GL11.glPushMatrix(); + HbmAnimations.applyRelevantTransformation("Grip"); + ResourceManager.mike_hawk.renderPart("Grip"); + + GL11.glPushMatrix(); + HbmAnimations.applyRelevantTransformation("Slide"); + + /*if(anim != null) { + BusAnimationSequence slideSeq = anim.animation.getBus("Hammer"); + if(slideSeq != null) GL11.glTranslated(0, 0.75, 0); + }*/ + + ResourceManager.mike_hawk.renderPart("Slide"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(3.125, 0.125, 0); + GL11.glRotated(-25, 0, 0, 1); + GL11.glTranslated(-3.125, -0.125, 0); + HbmAnimations.applyRelevantTransformation("Hammer"); + ResourceManager.mike_hawk.renderPart("Hammer"); + GL11.glPopMatrix(); + + if(gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, null) > 0) { + GL11.glPushMatrix(); + HbmAnimations.applyRelevantTransformation("Bullet"); + ResourceManager.mike_hawk.renderPart("Bullet"); + GL11.glPopMatrix(); + } + + GL11.glPushMatrix(); + HbmAnimations.applyRelevantTransformation("Magazine"); + ResourceManager.mike_hawk.renderPart("Magazine"); + GL11.glPopMatrix(); + + double smokeScale = 0.5; + + GL11.glPushMatrix(); + GL11.glTranslated(-10.25, 1, 0); + GL11.glScaled(smokeScale, smokeScale, smokeScale); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.5D); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(-10.25, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + this.renderMuzzleFlash(gun.lastShot[0], 75, 7.5); + GL11.glPopMatrix(); + + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + GL11.glTranslated(0, 1, 1); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(2.5, 1, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glRotated(90, 0, 1, 0); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.mike_hawk_tex); + ResourceManager.mike_hawk.renderPart("Grip"); + ResourceManager.mike_hawk.renderPart("Slide"); + ResourceManager.mike_hawk.renderPart("Hammer"); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLasrifle.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLasrifle.java new file mode 100644 index 000000000..8f2e30bff --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLasrifle.java @@ -0,0 +1,107 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderLasrifle extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.75F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.5F * offset, -1.5F * offset, 2.5F * offset, + 0, -7.375 / 8D, 0.75); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + if(ItemGunBaseNT.prevAimingProgress == 1 && ItemGunBaseNT.aimingProgress == 1) return; + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lasrifle_tex); + double scale = 0.3125D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] lever = HbmAnimations.getRelevantTransformation("LEVER"); + double[] mag = HbmAnimations.getRelevantTransformation("MAG"); + + GL11.glTranslated(0, -1, -6); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, 1, 6); + + GL11.glTranslated(0, 0, recoil[2]); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + ResourceManager.lasrifle.renderPart("Gun"); + ResourceManager.lasrifle.renderPart("Barrel"); + ResourceManager.lasrifle.renderPart("Stock"); + ResourceManager.lasrifle.renderPart("Scope"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, -0.375, 2.375); + GL11.glRotated(lever[0], 1, 0, 0); + GL11.glTranslated(0, 0.375, -2.375); + ResourceManager.lasrifle.renderPart("Lever"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(mag[0], mag[1], mag[2]); + ResourceManager.lasrifle.renderPart("Battery"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 1.25D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, 0, 4); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.0625D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(0.5, 0, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.lasrifle_tex); + ResourceManager.lasrifle.renderPart("Gun"); + ResourceManager.lasrifle.renderPart("Barrel"); + ResourceManager.lasrifle.renderPart("Stock"); + ResourceManager.lasrifle.renderPart("Scope"); + ResourceManager.lasrifle.renderPart("Lever"); + ResourceManager.lasrifle.renderPart("Battery"); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLiberator.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLiberator.java new file mode 100644 index 000000000..58cdfeb8e --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderLiberator.java @@ -0,0 +1,154 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderLiberator extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.5F * offset, -1.25F * offset, 1.25F * offset, + 0, -4.625 / 8D, 0.25); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.liberator_tex); + double scale = 0.375D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] lift = HbmAnimations.getRelevantTransformation("LIFT"); + double[] latch = HbmAnimations.getRelevantTransformation("LATCH"); + double[] brk = HbmAnimations.getRelevantTransformation("BREAK"); + double[] shell1 = HbmAnimations.getRelevantTransformation("SHELL1"); + double[] shell2 = HbmAnimations.getRelevantTransformation("SHELL2"); + double[] shell3 = HbmAnimations.getRelevantTransformation("SHELL3"); + double[] shell4 = HbmAnimations.getRelevantTransformation("SHELL4"); + + GL11.glTranslated(0, -1, -3); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, 1, 3); + + GL11.glTranslated(0, -3, -3); + GL11.glRotated(lift[0], 1, 0, 0); + GL11.glTranslated(0, 3, 3); + + GL11.glTranslated(recoil[0] * 2, recoil[1], recoil[2]); + GL11.glRotated(recoil[2] * 10, 1, 0, 0); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + ResourceManager.liberator.renderPart("Gun"); + + GL11.glPushMatrix(); + + GL11.glTranslated(0, -0.5, 0.75); + GL11.glRotated(brk[0], 1, 0, 0); + GL11.glTranslated(0, 0.5, -0.75); + ResourceManager.liberator.renderPart("Barrel"); + + GL11.glPushMatrix(); + GL11.glTranslated(shell1[0], shell1[1], shell1[2]); + ResourceManager.liberator.renderPart("Shell1"); + GL11.glPopMatrix(); + GL11.glPushMatrix(); + GL11.glTranslated(shell2[0], shell2[1], shell2[2]); + ResourceManager.liberator.renderPart("Shell2"); + GL11.glPopMatrix(); + GL11.glPushMatrix(); + GL11.glTranslated(shell3[0], shell3[1], shell3[2]); + ResourceManager.liberator.renderPart("Shell3"); + GL11.glPopMatrix(); + GL11.glPushMatrix(); + GL11.glTranslated(shell4[0], shell4[1], shell4[2]); + ResourceManager.liberator.renderPart("Shell4"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.15625, 0.75); + GL11.glRotated(latch[0], 1, 0, 0); + GL11.glTranslated(0, -1.15625, -0.75); + ResourceManager.liberator.renderPart("Latch"); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + + double smokeScale = 0.375; + + GunConfig cfg = gun.getConfig(stack, 0); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.25, 7.25); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(smokeScale, smokeScale, smokeScale); + GL11.glTranslated(0, 0, 0.25 / smokeScale); + this.renderSmokeNodes(cfg.smokeNodes, 1D); + GL11.glTranslated(0, 0, -0.5 / smokeScale); + this.renderSmokeNodes(cfg.smokeNodes, 1D); + GL11.glTranslated(0, 0.5 / smokeScale, 0); + this.renderSmokeNodes(cfg.smokeNodes, 1D); + GL11.glTranslated(0, 0, 0.5 / smokeScale); + this.renderSmokeNodes(cfg.smokeNodes, 1D); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.5, 8); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + GL11.glScaled(1.5, 1.5, 1.5); + this.renderMuzzleFlash(gun.lastShot[0], 75, 5); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + GL11.glTranslated(0, 1, 3); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-0.5, 0.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.liberator_tex); + ResourceManager.liberator.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderM2.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderM2.java new file mode 100644 index 000000000..80ebca69f --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderM2.java @@ -0,0 +1,106 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderM2 extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.5F * offset, -2.5F * offset, 1.75F * offset, + 0, -12.5 / 8D, 1.75); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.greasegun_tex); + double scale = 0.75D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + + GL11.glTranslated(0, 1, -2.25); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, -1, 2.25); + + GL11.glTranslated(0, 0, recoil[2]); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + GL11.glPushMatrix(); + GL11.glRotated(180, 0, 1, 0); + Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.m2_tex); + ResourceManager.m2.renderAll(); + GL11.glPopMatrix(); + + double smokeScale = 0.5; + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.625, 5); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(smokeScale, smokeScale, smokeScale); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.375D); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.625, 5); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + GL11.glScaled(0.5, 0.5, 0.5); + this.renderMuzzleFlash(gun.lastShot[0], 75, 7.5); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 5D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0.5, -2, 3); + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 2.625D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(0.5, -1.25, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glRotated(180, 0, 1, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.m2_tex); + ResourceManager.m2.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMaresleg.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMaresleg.java new file mode 100644 index 000000000..81ca1a2ec --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMaresleg.java @@ -0,0 +1,168 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +public class ItemRenderMaresleg extends ItemRenderWeaponBase { + + public ResourceLocation texture; + + public ItemRenderMaresleg(ResourceLocation texture) { + this.texture = texture; + } + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.25F * offset, -1F * offset, 2F * offset, + 0, -3.875 / 8D, 1); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); + double scale = 0.375D; + GL11.glScaled(scale, scale, scale); + + boolean shortened = getShort(stack); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] lever = HbmAnimations.getRelevantTransformation("LEVER"); + double[] turn = HbmAnimations.getRelevantTransformation("TURN"); + double[] flip = HbmAnimations.getRelevantTransformation("FLIP"); + double[] lift = HbmAnimations.getRelevantTransformation("LIFT"); + double[] shell = HbmAnimations.getRelevantTransformation("SHELL"); + double[] flag = HbmAnimations.getRelevantTransformation("FLAG"); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + GL11.glTranslated(recoil[0] * 2, recoil[1], recoil[2]); + GL11.glRotated(recoil[2] * 5, 1, 0, 0); + GL11.glRotated(turn[2], 0, 0, 1); + + GL11.glTranslated(0, 0, -4); + GL11.glRotated(lift[0], 1, 0, 0); + GL11.glTranslated(0, 0, 4); + + GL11.glTranslated(0, 0, -4); + GL11.glRotated(equip[0], -1, 0, 0); + GL11.glTranslated(0, 0, 4); + + GL11.glTranslated(0, 0, -2); + GL11.glRotated(flip[0], -1, 0, 0); + GL11.glTranslated(0, 0, 2); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1, shortened ? 3.75 : 8); + GL11.glRotated(turn[2], 0, 0, -1); + GL11.glRotated(flip[0], 1, 0, 0); + GL11.glRotated(90, 0, 1, 0); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.25D); + GL11.glPopMatrix(); + + ResourceManager.maresleg.renderPart("Gun"); + if(!shortened) { + ResourceManager.maresleg.renderPart("Stock"); + ResourceManager.maresleg.renderPart("Barrel"); + } + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.125, -2.875); + GL11.glRotated(lever[0], 1, 0, 0); + GL11.glTranslated(0, -0.125, 2.875); + ResourceManager.maresleg.renderPart("Lever"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(shell[0], shell[1] - 0.75, shell[2]); + ResourceManager.maresleg.renderPart("Shell"); + GL11.glPopMatrix(); + + if(flag[0] != 0) { + GL11.glPushMatrix(); + GL11.glTranslated(0, -0.5, 0); + ResourceManager.maresleg.renderPart("Shell"); + GL11.glPopMatrix(); + } + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1, shortened ? 3.75 : 8); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + this.renderMuzzleFlash(gun.lastShot[0], 75, 5); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 1.75D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, 0.25, 3); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + + if(getShort(stack)) { + double scale = 2.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-1, 0, 0); + } else { + double scale = 1.4375D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-0.5, 0.5, 0); + } + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); + ResourceManager.maresleg.renderPart("Gun"); + ResourceManager.maresleg.renderPart("Lever"); + if(!getShort(stack)) { + ResourceManager.maresleg.renderPart("Stock"); + ResourceManager.maresleg.renderPart("Barrel"); + } + GL11.glShadeModel(GL11.GL_FLAT); + } + + public boolean getShort(ItemStack stack) { + return stack.getItem() == ModItems.gun_maresleg_broken; + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMareslegAkimbo.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMareslegAkimbo.java new file mode 100644 index 000000000..5a60a4aaf --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMareslegAkimbo.java @@ -0,0 +1,180 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderMareslegAkimbo extends ItemRenderWeaponBase { + + @Override public boolean isAkimbo() { return true; } + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + + float offset = 0.8F; + + for(int i = -1; i <= 1; i += 2) { + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.maresleg_tex); + GL11.glPushMatrix(); + + int index = i == -1 ? 0 : 1; + + standardAimingTransform(stack, -1.5F * offset * i, -1F * offset, 2F * offset, 0, -3.875 / 8D, 1); + + double scale = 0.375D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP", index); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL", index); + double[] lever = HbmAnimations.getRelevantTransformation("LEVER", index); + double[] turn = HbmAnimations.getRelevantTransformation("TURN", index); + double[] flip = HbmAnimations.getRelevantTransformation("FLIP", index); + double[] lift = HbmAnimations.getRelevantTransformation("LIFT", index); + double[] shell = HbmAnimations.getRelevantTransformation("SHELL", index); + double[] flag = HbmAnimations.getRelevantTransformation("FLAG", index); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + GL11.glTranslated(recoil[0] * 2, recoil[1], recoil[2]); + GL11.glRotated(recoil[2] * 5, 1, 0, 0); + GL11.glRotated(turn[2], 0, 0, 1); + + GL11.glTranslated(0, 0, -4); + GL11.glRotated(lift[0], 1, 0, 0); + GL11.glTranslated(0, 0, 4); + + GL11.glTranslated(0, 0, -4); + GL11.glRotated(equip[0], -1, 0, 0); + GL11.glTranslated(0, 0, 4); + + GL11.glTranslated(0, 0, -2); + GL11.glRotated(flip[0], -1, 0, 0); + GL11.glTranslated(0, 0, 2); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1, 3.75); + GL11.glRotated(turn[2], 0, 0, -1); + GL11.glRotated(flip[0], 1, 0, 0); + GL11.glRotated(90, 0, 1, 0); + this.renderSmokeNodes(gun.getConfig(stack, index).smokeNodes, 0.25D); + GL11.glPopMatrix(); + + ResourceManager.maresleg.renderPart("Gun"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.125, -2.875); + GL11.glRotated(lever[0], 1, 0, 0); + GL11.glTranslated(0, -0.125, 2.875); + ResourceManager.maresleg.renderPart("Lever"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(shell[0], shell[1] - 0.75, shell[2]); + ResourceManager.maresleg.renderPart("Shell"); + GL11.glPopMatrix(); + + if(flag[0] != 0) { + GL11.glPushMatrix(); + GL11.glTranslated(0, -0.5, 0); + ResourceManager.maresleg.renderPart("Shell"); + GL11.glPopMatrix(); + } + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1, 3.75); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + this.renderMuzzleFlash(gun.lastShot[index], 75, 5); + GL11.glPopMatrix(); + + GL11.glPopMatrix(); + } + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 1.75D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, 0.25, 3); + } + + @Override + public void setupThirdPersonAkimbo(ItemStack stack) { + super.setupThirdPersonAkimbo(stack); + double scale = 1.75D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, 0.25, 3); + } + + @Override + public void setupInv(ItemStack stack) { + GL11.glAlphaFunc(GL11.GL_GREATER, 0F); + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glScaled(1, 1, -1); + GL11.glTranslated(8, 8, 0); + double scale = 2.5D; + GL11.glScaled(scale, scale, scale); + } + + @Override + public void renderInv(ItemStack stack) { + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glShadeModel(GL11.GL_SMOOTH); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.maresleg_tex); + + GL11.glPushMatrix(); + GL11.glRotated(225, 0, 0, 1); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-1, 0, 0); + ResourceManager.maresleg.renderPart("Gun"); + ResourceManager.maresleg.renderPart("Lever"); + GL11.glPopMatrix(); + + GL11.glTranslated(0, 0, 5); + GL11.glPushMatrix(); + GL11.glRotated(225, 0, 0, 1); + GL11.glRotated(-90, 0, 1, 0); + GL11.glRotated(-90, 1, 0, 0); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(-45, 0, 1, 0); + GL11.glTranslated(1, 0, 0); + ResourceManager.maresleg.renderPart("Gun"); + ResourceManager.maresleg.renderPart("Lever"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.maresleg_tex); + ResourceManager.maresleg.renderPart("Gun"); + ResourceManager.maresleg.renderPart("Lever"); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMinigun.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMinigun.java new file mode 100644 index 000000000..ed44d201f --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMinigun.java @@ -0,0 +1,115 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +public class ItemRenderMinigun extends ItemRenderWeaponBase { + + protected ResourceLocation texture; + + public ItemRenderMinigun(ResourceLocation texture) { + this.texture = texture; + } + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.75F * offset, -1.75F * offset, 3.5F * offset, + 0, -6.25 / 8D, 1); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); + double scale = 0.375D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] rotate = HbmAnimations.getRelevantTransformation("ROTATE"); + + GL11.glTranslated(0, 3, -6); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, -3, 6); + + GL11.glTranslated(0, 0, recoil[2]); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + ResourceManager.minigun.renderPart("Gun"); + + GL11.glPushMatrix(); + GL11.glRotated(rotate[2], 0, 0, 1); + ResourceManager.minigun.renderPart("Barrels"); + GL11.glPopMatrix(); + + double smokeScale = 0.5; + + GL11.glPushMatrix(); + GL11.glTranslated(-2, 1.25, -3.5); + GL11.glRotated(45, 0, 1, 0); + GL11.glScaled(smokeScale, smokeScale, smokeScale); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.5D); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, 12); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(gun.shotRand * 90, 1, 0, 0); + GL11.glScaled(1.5, 1.5, 1.5); + this.renderMuzzleFlash(gun.lastShot[0], 75, 5); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 1.75D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(1, -3.5, 8); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 0.875D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-0.25, 0.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); + ResourceManager.minigun.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMissileLauncher.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMissileLauncher.java new file mode 100644 index 000000000..f5d651a4e --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMissileLauncher.java @@ -0,0 +1,149 @@ +package com.hbm.render.item.weapon.sedna; + +import java.awt.Color; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MathHelper; + +public class ItemRenderMissileLauncher extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.5F * offset, -1.25F * offset, 0.5F * offset, + -1F * offset, -1.25F * offset, 0F * offset); + } + + protected static String label = "AUTO"; + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.missile_launcher_tex); + double scale = 0.5D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] barrel = HbmAnimations.getRelevantTransformation("BARREL"); + double[] open = HbmAnimations.getRelevantTransformation("OPEN"); + double[] missile = HbmAnimations.getRelevantTransformation("MISSILE"); + + GL11.glTranslated(0, -2, -2); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, 2, 2); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + ResourceManager.missile_launcher.renderPart("Launcher"); + + GL11.glPushMatrix(); + + GL11.glTranslated(0, 0.25, 1.6875); + GL11.glRotated(open[0], 1, 0, 0); + GL11.glTranslated(0, -0.25, -1.6875); + + ResourceManager.missile_launcher.renderPart("Front"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, barrel[2]); + ResourceManager.missile_launcher.renderPart("Barrel"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(missile[0], missile[1], missile[2]); + ResourceManager.missile_launcher.renderPart("Missile"); + GL11.glPopMatrix(); + + GL11.glPopMatrix(); + + if(gun.prevAimingProgress >= 1F && gun.aimingProgress >= 1F) { + + GL11.glPushMatrix(); + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + FontRenderer font = Minecraft.getMinecraft().fontRenderer; + float f3 = 0.04F; + GL11.glTranslatef(0.9375F, 2.25F, -0.5625F + (font.getStringWidth(label) / 2) * f3); + GL11.glScalef(f3, -f3, f3); + GL11.glRotated(90D, 0, 1, 0); + GL11.glNormal3f(0.0F, 0.0F, -1.0F * f3); + float variance = 0.7F + player.getRNG().nextFloat() * 0.3F; + font.drawString(label, 0, 0, new Color(variance, 0F, 0F).getRGB()); + GL11.glColor3f(1F, 1F, 1F); + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopAttrib(); + GL11.glPopMatrix(); + + int brightness = player.worldObj.getLightBrightnessForSkyBlocks(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY), MathHelper.floor_double(player.posZ), 0); + int j = brightness % 65536; + int k = brightness / 65536; + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) j / 1.0F, (float) k / 1.0F); + } + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1, 6.75); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(gun.shotRand * 90, 1, 0, 0); + GL11.glScaled(0.75, 0.75, 0.75); + this.renderMuzzleFlash(gun.lastShot[0], 75, 7.5); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 2.5D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, -0.5, -2); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(0, -0.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.missile_launcher_tex); + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missile_launcher.renderPart("Launcher"); + ResourceManager.missile_launcher.renderPart("Barrel"); + ResourceManager.missile_launcher.renderPart("Front"); + if(gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, null) > 0) ResourceManager.missile_launcher.renderPart("Missile"); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderPanzerschreck.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderPanzerschreck.java new file mode 100644 index 000000000..f0e5380ff --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderPanzerschreck.java @@ -0,0 +1,103 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderPanzerschreck extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -2.75F * offset, -2F * offset, 2.5F * offset, + -0.9375, -9.25 / 8D, 0.25); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.panzerschreck_tex); + double scale = 1.25D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] reload = HbmAnimations.getRelevantTransformation("RELOAD"); + double[] rocket = HbmAnimations.getRelevantTransformation("ROCKET"); + + GL11.glTranslated(0, -1, -1); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, 1, 1); + + GL11.glTranslated(0, -4, -3); + GL11.glRotated(reload[0], 1, 0, 0); + GL11.glTranslated(0, 4, 3); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + ResourceManager.panzerschreck.renderPart("Tube"); + ResourceManager.panzerschreck.renderPart("Shield"); + + GL11.glPushMatrix(); + GL11.glTranslated(rocket[0], rocket[1], rocket[2]); + ResourceManager.panzerschreck.renderPart("Rocket"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, 6.5); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + GL11.glScaled(0.75, 0.75, 0.75); + this.renderMuzzleFlash(gun.lastShot[0], 150, 7.5); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 3D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, 0.5, 1); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-0.5, 0.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.panzerschreck_tex); + ResourceManager.panzerschreck.renderPart("Tube"); + ResourceManager.panzerschreck.renderPart("Shield"); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderPepperbox.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderPepperbox.java new file mode 100644 index 000000000..7f06a4509 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderPepperbox.java @@ -0,0 +1,135 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderPepperbox extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 1.5); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.25F * offset, -0.75F * offset, 1F * offset, + 0, -2.5 / 8D, 0.5); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + + double scale = 0.25D; + GL11.glScaled(scale, scale, scale); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] cylinder = HbmAnimations.getRelevantTransformation("ROTATE"); + double[] hammer = HbmAnimations.getRelevantTransformation("HAMMER"); + double[] trigger = HbmAnimations.getRelevantTransformation("TRIGGER"); + double[] translate = HbmAnimations.getRelevantTransformation("TRANSLATE"); + double[] loader = HbmAnimations.getRelevantTransformation("LOADER"); + double[] shot = HbmAnimations.getRelevantTransformation("SHOT"); + + GL11.glTranslated(translate[0], translate[1], translate[2]); + + GL11.glTranslated(0, 0, -5); + GL11.glRotated(recoil[0], -1, 0, 0); + GL11.glTranslated(0, 0, 5); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.5, 7); + GL11.glRotated(90, 0, 1, 0); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.5D); + GL11.glPopMatrix(); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.pepperbox_tex); + + if(loader[0] != 0 || loader[1] != 0 || loader[2] != 0) { + GL11.glPushMatrix(); + GL11.glTranslated(loader[0], loader[1], loader[2]); + ResourceManager.pepperbox.renderPart("Speedloader"); + if(shot[0] != 0) ResourceManager.pepperbox.renderPart("Shot"); + GL11.glPopMatrix(); + } + + ResourceManager.pepperbox.renderPart("Grip"); + + GL11.glPushMatrix(); + GL11.glRotated(cylinder[0], 0, 0, 1); + ResourceManager.pepperbox.renderPart("Cylinder"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.375, -1.875); + GL11.glRotated(hammer[0], 1, 0, 0); + GL11.glTranslated(0, -0.375, 1.875); + ResourceManager.pepperbox.renderPart("Hammer"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, -trigger[0] * 0.5); + ResourceManager.pepperbox.renderPart("Trigger"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.5, 7); + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + this.renderMuzzleFlash(gun.lastShot[0]); + GL11.glRotated(45, 1, 0, 0); + this.renderMuzzleFlash(gun.lastShot[0]); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + GL11.glTranslated(0, 1, 3); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(0.5, 0.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.pepperbox_tex); + ResourceManager.pepperbox.renderPart("Grip"); + ResourceManager.pepperbox.renderPart("Cylinder"); + ResourceManager.pepperbox.renderPart("Hammer"); + ResourceManager.pepperbox.renderPart("Trigger"); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderQuadro.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderQuadro.java new file mode 100644 index 000000000..8e65e5edf --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderQuadro.java @@ -0,0 +1,142 @@ +package com.hbm.render.item.weapon.sedna; + +import java.awt.Color; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MathHelper; + +public class ItemRenderQuadro extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -2.5F * offset, -3.5F * offset, 2.5F * offset, + -1.5F * offset, -3F * offset, 2.5F * offset); + } + + protected static String label = ">> <<"; + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + double scale = 1.75D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] reloadPush = HbmAnimations.getRelevantTransformation("RELOAD_PUSH"); + double[] reloadRotate = HbmAnimations.getRelevantTransformation("RELOAD_ROTATE"); + + GL11.glTranslated(0, -1, -1); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, 1, 1); + + GL11.glTranslated(0, 0, recoil[2]); + + GL11.glTranslated(0, -1, -1); + GL11.glRotated(reloadRotate[2], 1, 0, 0); + GL11.glTranslated(0, 1, 1); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.quadro_tex); + ResourceManager.quadro.renderPart("Launcher"); + + GL11.glPushMatrix(); + + GL11.glTranslated(0, -1, 0); + GL11.glTranslated(0, 3, 0); + GL11.glRotated(reloadPush[1] * 30, 1, 0, 0); + GL11.glTranslated(0, -3, 0); + GL11.glTranslated(0, 0, reloadPush[0] * 3); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.quadro_rocket_tex); + ResourceManager.quadro.renderPart("Rockets"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + if(gun.prevAimingProgress >= 1F && gun.aimingProgress >= 1F) { + + GL11.glPushMatrix(); + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + FontRenderer font = Minecraft.getMinecraft().fontRenderer; + float f3 = 0.04F; + GL11.glTranslatef(-0.375F, 2.25F, 0.875F); + GL11.glRotated(180D + (System.currentTimeMillis() / 2) % 360D, 0, -1, 0); + GL11.glTranslated(-(font.getStringWidth(label) / 2) * f3, 0, 0); + GL11.glScalef(f3, -f3, f3); + GL11.glNormal3f(0.0F, 0.0F, -1.0F * f3); + float variance = 0.7F + player.getRNG().nextFloat() * 0.3F; + font.drawString(label, 0, 0, new Color(0F, variance, variance).getRGB()); + GL11.glColor3f(1F, 1F, 1F); + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopAttrib(); + GL11.glPopMatrix(); + + int brightness = player.worldObj.getLightBrightnessForSkyBlocks(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY), MathHelper.floor_double(player.posZ), 0); + int j = brightness % 65536; + int k = brightness / 65536; + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) j / 1.0F, (float) k / 1.0F); + } + + GL11.glPushMatrix(); + GL11.glTranslated(-1, 0.75, 6.5); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + GL11.glScaled(0.75, 0.75, 0.75); + this.renderMuzzleFlash(gun.lastShot[0], 150, 7.5); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 7.5D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, -0.5, -0.25); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 4.75D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(0, -1, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.quadro_tex); + ResourceManager.quadro.renderPart("Launcher"); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderSPAS12.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderSPAS12.java new file mode 100644 index 000000000..baff66af8 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderSPAS12.java @@ -0,0 +1,136 @@ +package com.hbm.render.item.weapon.sedna; + +import java.awt.Color; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; +import com.hbm.particle.SpentCasing; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderSPAS12 extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.25F * offset, -1.75F * offset, -0.5F * offset, + 0, 0, 0); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.spas_12_tex); + double scale = 0.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(180, 0, 1, 0); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + + GL11.glRotated(equip[0], 1, 0, 0); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + HbmAnimations.applyRelevantTransformation("MainBody"); + ResourceManager.spas_12.renderPart("MainBody"); + + GL11.glPushMatrix(); + HbmAnimations.applyRelevantTransformation("PumpGrip"); + ResourceManager.spas_12.renderPart("PumpGrip"); + GL11.glPopMatrix(); + + + GL11.glPushMatrix(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.casings_tex); + + HbmAnimations.applyRelevantTransformation("Shell"); + SpentCasing casing = gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getCasing(stack, MainRegistry.proxy.me().inventory); + int color0 = SpentCasing.COLOR_CASE_BRASS; + int color1 = SpentCasing.COLOR_CASE_BRASS; + + if(casing != null) { + int[] colors = casing.getColors(); + color0 = colors[0]; + color1 = colors[colors.length > 1 ? 1 : 0]; + } + + Color shellColor = new Color(color1); + GL11.glColor3f(shellColor.getRed() / 255F, shellColor.getGreen() / 255F, shellColor.getBlue() / 255F); + ResourceManager.spas_12.renderPart("Shell"); + + Color shellForeColor = new Color(color0); + GL11.glColor3f(shellForeColor.getRed() / 255F, shellForeColor.getGreen() / 255F, shellForeColor.getBlue() / 255F); + ResourceManager.spas_12.renderPart("ShellFore"); + + GL11.glColor3f(1F, 1F, 1F); + + double smokeScale = 0.25; + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.5, -11); + GL11.glRotated(-90, 0, 1, 0); + GL11.glScaled(smokeScale, smokeScale, smokeScale); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.75D); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.5, -11); + GL11.glRotated(-90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + this.renderMuzzleFlash(gun.lastShot[0], 75, 7.5); + GL11.glPopMatrix(); + + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 1.75D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, -0.75, 0); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 2D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(4.25, -0.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glRotated(180, 0, 1, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.spas_12_tex); + ResourceManager.spas_12.renderPart("MainBody"); + ResourceManager.spas_12.renderPart("PumpGrip"); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderSTG77.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderSTG77.java new file mode 100644 index 000000000..1d7c1e123 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderSTG77.java @@ -0,0 +1,181 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderSTG77 extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 0.5F : -0.25F; } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.5F * offset, -1F * offset, 2.5F * offset, + 0, -5.75 / 8D, 2); + } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.66F); + } + + @Override + protected float getBaseFOV(ItemStack stack) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return 70F - aimingProgress * 65; + } + + @Override + public void renderFirstPerson(ItemStack stack) { + if(ItemGunBaseNT.prevAimingProgress == 1 && ItemGunBaseNT.aimingProgress == 1) return; + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.stg77_tex); + double scale = 0.5D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] lift = HbmAnimations.getRelevantTransformation("LIFT"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] bolt = HbmAnimations.getRelevantTransformation("BOLT"); + double[] handle = HbmAnimations.getRelevantTransformation("HANDLE"); + double[] safety = HbmAnimations.getRelevantTransformation("SAFETY"); + + double[] inspectGun = HbmAnimations.getRelevantTransformation("INSPECT_GUN"); + double[] inspectBarrel = HbmAnimations.getRelevantTransformation("INSPECT_BARREL"); + double[] inspectMove = HbmAnimations.getRelevantTransformation("INSPECT_MOVE"); + double[] inspectLever = HbmAnimations.getRelevantTransformation("INSPECT_LEVER"); + + GL11.glTranslated(0, -1, -4); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, 1, 4); + + GL11.glTranslated(0, 0, -4); + GL11.glRotated(lift[0], 1, 0, 0); + GL11.glTranslated(0, 0, 4); + + GL11.glTranslated(0, 0, recoil[2]); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + GL11.glPushMatrix(); + + //GL11.glRotated(-70, 0, 0, 1); + //GL11.glRotated(15, 1, 0, 0); + GL11.glRotated(inspectGun[2], 0, 0, 1); + GL11.glRotated(inspectGun[0], 1, 0, 0); + + HbmAnimations.applyRelevantTransformation("Gun"); + ResourceManager.stg77.renderPart("Gun"); + + GL11.glPushMatrix(); + HbmAnimations.applyRelevantTransformation("Magazine"); + ResourceManager.stg77.renderPart("Magazine"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glRotated(inspectLever[2], 0, 0, 1); + HbmAnimations.applyRelevantTransformation("Lever"); + ResourceManager.stg77.renderPart("Lever"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, bolt[2]); + GL11.glPushMatrix(); + HbmAnimations.applyRelevantTransformation("Breech"); + ResourceManager.stg77.renderPart("Breech"); + GL11.glPopMatrix(); + GL11.glTranslated(0.125, 0, 0); + GL11.glRotated(handle[2], 0, 0, 1); + GL11.glTranslated(-0.125, 0, 0); + HbmAnimations.applyRelevantTransformation("Handle"); + ResourceManager.stg77.renderPart("Handle"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(safety[0], 0, 0); + HbmAnimations.applyRelevantTransformation("Safety"); + ResourceManager.stg77.renderPart("Safety"); + GL11.glPopMatrix(); + + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + //GL11.glTranslated(2, 0.75, 0); + //GL11.glRotated(15, 1, 0, 0); + //GL11.glRotated(0, 0, 0, 1); + + GL11.glTranslated(inspectMove[0], inspectMove[1], inspectMove[2]); + GL11.glRotated(inspectBarrel[0], 1, 0, 0); + GL11.glRotated(inspectBarrel[2], 0, 0, 1); + HbmAnimations.applyRelevantTransformation("Gun"); + HbmAnimations.applyRelevantTransformation("Barrel"); + ResourceManager.stg77.renderPart("Barrel"); + GL11.glPopMatrix(); + + double smokeScale = 0.75; + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, 8); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(smokeScale, smokeScale, smokeScale); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.5D); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, 7.5); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(0.25, 0.25, 0.25); + GL11.glRotated(-5 + gun.shotRand * 10, 1, 0, 0); + this.renderGapFlash(gun.lastShot[0]); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 1.5D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, 1, 2); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.375D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-0.5, 0.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.stg77_tex); + ResourceManager.stg77.renderPart("Gun"); + ResourceManager.stg77.renderPart("Barrel"); + ResourceManager.stg77.renderPart("Lever"); + ResourceManager.stg77.renderPart("Magazine"); + ResourceManager.stg77.renderPart("Safety"); + ResourceManager.stg77.renderPart("Handle"); + ResourceManager.stg77.renderPart("Breech"); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderShredder.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderShredder.java new file mode 100644 index 000000000..fbb11f533 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderShredder.java @@ -0,0 +1,170 @@ +package com.hbm.render.item.weapon.sedna; + +import java.awt.Color; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; + +public class ItemRenderShredder extends ItemRenderWeaponBase { + + protected ResourceLocation texture; + + public ItemRenderShredder(ResourceLocation texture) { + this.texture = texture; + } + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.5F * offset, -1.25F * offset, 1.5F * offset, + 0, -6.25 / 8D, 0.5); + } + + protected static String label = "[> <]"; + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + double scale = 0.25D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] lift = HbmAnimations.getRelevantTransformation("LIFT"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] mag = HbmAnimations.getRelevantTransformation("MAG"); + double[] speen = HbmAnimations.getRelevantTransformation("SPEEN"); + double[] cycle = HbmAnimations.getRelevantTransformation("CYCLE"); + + GL11.glTranslated(0, -2, -6); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, 2, 6); + + GL11.glTranslated(0, 0, -4); + GL11.glRotated(lift[0], 1, 0, 0); + GL11.glTranslated(0, 0, 4); + + GL11.glTranslated(0, 0, recoil[2]); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + boolean sexy = stack.getItem() == ModItems.gun_autoshotgun_sexy; + + if(sexy || (gun.prevAimingProgress >= 1F && gun.aimingProgress >= 1F)) { + + GL11.glPushMatrix(); + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + FontRenderer font = Minecraft.getMinecraft().fontRenderer; + float f3 = 0.04F; + GL11.glTranslatef((font.getStringWidth(label) / 2) * f3, 3.25F, -1.75F); + GL11.glScalef(f3, -f3, f3); + GL11.glRotated(180D, 0, 1, 0); + GL11.glNormal3f(0.0F, 0.0F, -1.0F * f3); + float variance = 0.9F + player.getRNG().nextFloat() * 0.1F; + font.drawString(label, 0, 0, new Color(sexy ? variance : 0F, sexy ? 0F : variance, 0F).getRGB()); + GL11.glColor3f(1F, 1F, 1F); + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopAttrib(); + GL11.glPopMatrix(); + + int brightness = player.worldObj.getLightBrightnessForSkyBlocks(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY), MathHelper.floor_double(player.posZ), 0); + int j = brightness % 65536; + int k = brightness / 65536; + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) j / 1.0F, (float) k / 1.0F); + } + + Minecraft.getMinecraft().renderEngine.bindTexture(texture); + + ResourceManager.shredder.renderPart("Gun"); + + GL11.glPushMatrix(); + GL11.glTranslated(mag[0], mag[1], mag[2]); + GL11.glTranslated(0, -1, -0.5); + GL11.glRotated(speen[0], 1, 0, 0); + GL11.glTranslated(0, 1, 0.5); + ResourceManager.shredder.renderPart("Magazine"); + GL11.glTranslated(0, -1, -0.5); + GL11.glRotated(cycle[2], 0, 0, 1); + GL11.glTranslated(0, 1, 0.5); + ResourceManager.shredder.renderPart("Shells"); + GL11.glPopMatrix(); + + double smokeScale = 0.75; + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1, 7.5); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(smokeScale, smokeScale, smokeScale); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.5D); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1, 7.5); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(gun.shotRand * 90, 1, 0, 0); + GL11.glScaled(0.75, 0.75, 0.75); + this.renderMuzzleFlash(gun.lastShot[0], 75, 7.5); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 1.5D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, 0.5, 4); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.25D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-1.5, 0, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); + ResourceManager.shredder.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderStinger.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderStinger.java new file mode 100644 index 000000000..384383688 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderStinger.java @@ -0,0 +1,131 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.item.ItemStack; + +public class ItemRenderStinger extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.5F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -3.75F * offset, -9F * offset, -3.5F * offset, + -2.625F * offset, -6.5, -8.5F); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + if(ItemGunBaseNT.prevAimingProgress == 1 && ItemGunBaseNT.aimingProgress == 1) return; + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.stinger_tex); + double scale = 1.5D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] reload = HbmAnimations.getRelevantTransformation("RELOAD"); + double[] rocket = HbmAnimations.getRelevantTransformation("ROCKET"); + + GL11.glTranslated(0, -1, -1); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, 1, 1); + + GL11.glTranslated(0, -4, -3); + GL11.glRotated(reload[0], 1, 0, 0); + GL11.glTranslated(0, 4, 3); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + GL11.glPushMatrix(); + GL11.glRotated(180, 0, 1, 0); + ResourceManager.stinger.renderAll(); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.panzerschreck_tex); + GL11.glTranslated(rocket[0], rocket[1] + 3.5, rocket[2] - 3); + ResourceManager.panzerschreck.renderPart("Rocket"); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + + String label = "Not accurate"; + FontRenderer font = Minecraft.getMinecraft().fontRenderer; + float f3 = 0.04F; + GL11.glTranslatef(0.025F, -0.5F, (font.getStringWidth(label) / 2) * f3 - 3); + GL11.glScalef(f3, -f3, f3); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(45, -1, 0, 0); + GL11.glNormal3f(0.0F, 0.0F, -1.0F * f3); + font.drawString(label, 0, 0, 0xff0000); + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopAttrib(); + GL11.glPopMatrix(); + + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, 6.5); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + GL11.glScaled(0.75, 0.75, 0.75); + this.renderMuzzleFlash(gun.lastShot[0], 150, 7.5); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 1.5D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, -2.5, -3.5); + GL11.glRotated(180, 0, 1, 0); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.0625D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(225, 0, 1, 0); + GL11.glTranslated(0.25, -2.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glEnable(GL11.GL_CULL_FACE); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.stinger_tex); + ResourceManager.stinger.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderTau.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderTau.java new file mode 100644 index 000000000..54226be04 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderTau.java @@ -0,0 +1,94 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderTau extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.75F * offset, -1.75F * offset, 3.5F * offset, + -1.75F * offset, -1.75F * offset, 3.5F * offset); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.tau_tex); + double scale = 0.75D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] rotate = HbmAnimations.getRelevantTransformation("ROTATE"); + + GL11.glTranslated(0, -1, -4); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, 1, 4); + + GL11.glTranslated(0, 0, recoil[2]); + + GL11.glTranslated(0, 0, -2); + GL11.glRotated(recoil[2] * 5, 1, 0, 0); + GL11.glTranslated(0, 0, 2); + + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glDisable(GL11.GL_CULL_FACE); + + ResourceManager.tau.renderPart("Body"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, -0.25, 0); + GL11.glRotated(rotate[2], 0, 0, 1); + GL11.glTranslated(0, 0.25, 0); + ResourceManager.tau.renderPart("Rotor"); + GL11.glPopMatrix(); + + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_FLAT); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 2.5D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, 1, 2); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 2D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-0.25, 0.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glDisable(GL11.GL_CULL_FACE); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.tau_tex); + ResourceManager.tau.renderAll(); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderTeslaCannon.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderTeslaCannon.java new file mode 100644 index 000000000..e961d5517 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderTeslaCannon.java @@ -0,0 +1,156 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; +import com.hbm.render.tileentity.RenderPlushie; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderTeslaCannon extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.75F * offset, -0.5F * offset, 1.75F * offset, + -1.3125F * offset, 0F * offset, -0.5F * offset); + } + + protected static String label = "AUTO"; + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.tesla_cannon_tex); + double scale = 0.75D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] cycle = HbmAnimations.getRelevantTransformation("CYCLE"); + double[] count = HbmAnimations.getRelevantTransformation("COUNT"); + double[] yomi = HbmAnimations.getRelevantTransformation("YOMI"); + double[] squeeze = HbmAnimations.getRelevantTransformation("SQUEEZE"); + + GL11.glTranslated(0, -2, -2); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, 2, 2); + + GL11.glTranslated(0, 0, recoil[2]); + GL11.glRotated(recoil[2] * 2, 1, 0, 0); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + int amount = Math.max((int) count[0], gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory)); + + ResourceManager.tesla_cannon.renderPart("Gun"); + ResourceManager.tesla_cannon.renderPart("Extension"); + + double cogAngle = cycle[2]; + + GL11.glPushMatrix(); + GL11.glTranslated(0, -1.625, 0); + GL11.glRotated(cogAngle, 0, 0, 1); + GL11.glTranslated(0, 1.625, 0); + ResourceManager.tesla_cannon.renderPart("Cog"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + + GL11.glTranslated(0, -1.625, 0); + GL11.glRotated(cogAngle, 0, 0, 1); + GL11.glTranslated(0, 1.625, 0); + + for(int i = 0; i < Math.min(amount, 8); i++) { + ResourceManager.tesla_cannon.renderPart("Capacitor"); + + if(i < 4) { + GL11.glTranslated(0, -1.625, 0); + GL11.glRotated(-22.5, 0, 0, 1); + GL11.glTranslated(0, 1.625, 0); + } else { + if(i == 4) { + GL11.glTranslated(0, -1.625, 0); + GL11.glRotated(-cogAngle, 0, 0, 1); + GL11.glTranslated(0, 1.625, 0); + GL11.glTranslated(-cogAngle * 0.5 / 22.5, 0, 0); + } + GL11.glTranslated(0.5, 0, 0); + } + } + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(yomi[0], yomi[1], yomi[2]); + GL11.glRotated(135, 0, 1, 0); + GL11.glScaled(squeeze[0], squeeze[1], squeeze[2]); + Minecraft.getMinecraft().renderEngine.bindTexture(RenderPlushie.yomiTex); + RenderPlushie.yomiModel.renderAll(); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 2.75D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, 1.5, 1); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.25D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(0, 0.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.tesla_cannon_tex); + + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.tesla_cannon.renderPart("Gun"); + ResourceManager.tesla_cannon.renderPart("Extension"); + ResourceManager.tesla_cannon.renderPart("Cog"); + + GL11.glPushMatrix(); + for(int i = 0; i < 10; i++) { + ResourceManager.tesla_cannon.renderPart("Capacitor"); + + if(i < 4) { + GL11.glTranslated(0, -1.625, 0); + GL11.glRotated(-22.5, 0, 0, 1); + GL11.glTranslated(0, 1.625, 0); + } else { + GL11.glTranslated(0.5, 0, 0); + } + } + GL11.glPopMatrix(); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderUzi.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderUzi.java new file mode 100644 index 000000000..40e267595 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderUzi.java @@ -0,0 +1,140 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderUzi extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.75F * offset, -1.5F * offset, 2.5F * offset, + 0, -4.375 / 8D, 1); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.uzi_tex); + double scale = 0.25D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] stockFront = HbmAnimations.getRelevantTransformation("STOCKFRONT"); + double[] stockBack = HbmAnimations.getRelevantTransformation("STOCKBACK"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] lift = HbmAnimations.getRelevantTransformation("LIFT"); + double[] mag = HbmAnimations.getRelevantTransformation("MAG"); + double[] bullet = HbmAnimations.getRelevantTransformation("BULLET"); + double[] slide = HbmAnimations.getRelevantTransformation("SLIDE"); + double[] yeet = HbmAnimations.getRelevantTransformation("YEET"); + double[] speen = HbmAnimations.getRelevantTransformation("SPEEN"); + + GL11.glTranslated(yeet[0], yeet[1], yeet[2]); + GL11.glRotated(speen[0], 0, 0, 1); + + GL11.glTranslated(0, -2, -4); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, 2, 4); + + GL11.glTranslated(0, 0, -6); + GL11.glRotated(lift[0], 1, 0, 0); + GL11.glTranslated(0, 0, 6); + + GL11.glTranslated(0, 0, recoil[2]); + + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.uzi.renderPart("Gun"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.3125D, -5.75); + GL11.glRotated(180 - stockFront[0], 1, 0, 0); + GL11.glTranslated(0, -0.3125D, 5.75); + ResourceManager.uzi.renderPart("StockFront"); + + GL11.glTranslated(0, -0.3125D, -3); + GL11.glRotated(-200 - stockBack[0], 1, 0, 0); + GL11.glTranslated(0, 0.3125D, 3); + ResourceManager.uzi.renderPart("StockBack"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, slide[2]); + ResourceManager.uzi.renderPart("Slide"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(mag[0], mag[1], mag[2]); + ResourceManager.uzi.renderPart("Magazine"); + if(bullet[0] == 1) ResourceManager.uzi.renderPart("Bullet"); + GL11.glPopMatrix(); + + double smokeScale = 0.5; + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.75, 8.5); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(smokeScale, smokeScale, smokeScale); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.75D); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.75, 8.5); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + this.renderMuzzleFlash(gun.lastShot[0], 75, 7.5); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + GL11.glTranslated(0, 1, 1); + + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(0, 1, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.uzi_tex); + ResourceManager.uzi.renderPart("Gun"); + ResourceManager.uzi.renderPart("StockBack"); + ResourceManager.uzi.renderPart("StockFront"); + ResourceManager.uzi.renderPart("Slide"); + ResourceManager.uzi.renderPart("Magazine"); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderUziAkimbo.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderUziAkimbo.java new file mode 100644 index 000000000..dded1cc0d --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderUziAkimbo.java @@ -0,0 +1,204 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderUziAkimbo extends ItemRenderWeaponBase { + + @Override public boolean isAkimbo() { return true; } + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + + float offset = 0.8F; + + for(int i = -1; i <= 1; i += 2) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.uzi_tex); + + GL11.glPushMatrix(); + int index = i == -1 ? 0 : 1; + standardAimingTransform(stack, -2.25F * offset * i, -1.5F * offset, 2.5F * offset, 0, -4.375 / 8D, 1); + + double scale = 0.25D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP", index); + double[] stockFront = HbmAnimations.getRelevantTransformation("STOCKFRONT", index); + double[] stockBack = HbmAnimations.getRelevantTransformation("STOCKBACK", index); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL", index); + double[] lift = HbmAnimations.getRelevantTransformation("LIFT", index); + double[] mag = HbmAnimations.getRelevantTransformation("MAG", index); + double[] bullet = HbmAnimations.getRelevantTransformation("BULLET", index); + double[] slide = HbmAnimations.getRelevantTransformation("SLIDE", index); + double[] yeet = HbmAnimations.getRelevantTransformation("YEET", index); + double[] speen = HbmAnimations.getRelevantTransformation("SPEEN", index); + + GL11.glTranslated(yeet[0], yeet[1], yeet[2]); + GL11.glRotated(speen[0], 0, 0, 1); + + GL11.glTranslated(0, -2, -4); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, 2, 4); + + GL11.glTranslated(0, 0, -6); + GL11.glRotated(lift[0], 1, 0, 0); + GL11.glTranslated(0, 0, 6); + + GL11.glTranslated(0, 0, recoil[2]); + + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.uzi.renderPart(index == 0 ? "GunMirror" : "Gun"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.3125D, -5.75); + GL11.glRotated(180 - stockFront[0], 1, 0, 0); + GL11.glTranslated(0, -0.3125D, 5.75); + ResourceManager.uzi.renderPart("StockFront"); + + GL11.glTranslated(0, -0.3125D, -3); + GL11.glRotated(-200 - stockBack[0], 1, 0, 0); + GL11.glTranslated(0, 0.3125D, 3); + ResourceManager.uzi.renderPart("StockBack"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, slide[2]); + ResourceManager.uzi.renderPart("Slide"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(mag[0], mag[1], mag[2]); + ResourceManager.uzi.renderPart("Magazine"); + if(bullet[0] == 1) ResourceManager.uzi.renderPart("Bullet"); + GL11.glPopMatrix(); + + double smokeScale = 0.5; + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.75, 8.5); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(smokeScale, smokeScale, smokeScale); + this.renderSmokeNodes(gun.getConfig(stack, index).smokeNodes, 0.75D); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.75, 8.5); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + this.renderMuzzleFlash(gun.lastShot[index], 75, 7.5); + GL11.glPopMatrix(); + + GL11.glPopMatrix(); + } + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + GL11.glTranslated(0, 1, 1); + } + + @Override + public void setupThirdPersonAkimbo(ItemStack stack) { + super.setupThirdPersonAkimbo(stack); + GL11.glTranslated(0, 1, 1); + } + + @Override + public void setupInv(ItemStack stack) { + GL11.glAlphaFunc(GL11.GL_GREATER, 0F); + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glScaled(1, 1, -1); + GL11.glTranslated(8, 8, 0); + double scale = 1.5D; + GL11.glScaled(scale, scale, scale); + } + + @Override + public void renderEquipped(ItemStack stack) { + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.uzi_tex); + ResourceManager.uzi.renderPart("Gun"); + ResourceManager.uzi.renderPart("StockBack"); + ResourceManager.uzi.renderPart("StockFront"); + ResourceManager.uzi.renderPart("Slide"); + ResourceManager.uzi.renderPart("Magazine"); + GL11.glShadeModel(GL11.GL_FLAT); + } + + @Override + public void renderEquippedAkimbo(ItemStack stack) { + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.uzi_tex); + ResourceManager.uzi.renderPart("GunMirror"); + ResourceManager.uzi.renderPart("StockBack"); + ResourceManager.uzi.renderPart("StockFront"); + ResourceManager.uzi.renderPart("Slide"); + ResourceManager.uzi.renderPart("Magazine"); + GL11.glShadeModel(GL11.GL_FLAT); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.uzi_tex); + + GL11.glPushMatrix(); + GL11.glRotated(225, 0, 0, 1); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(0, 1, 0); + ResourceManager.uzi.renderPart("Gun"); + ResourceManager.uzi.renderPart("StockBack"); + ResourceManager.uzi.renderPart("StockFront"); + ResourceManager.uzi.renderPart("Slide"); + ResourceManager.uzi.renderPart("Magazine"); + GL11.glPopMatrix(); + + GL11.glTranslated(0, 0, 5); + + GL11.glPushMatrix(); + GL11.glRotated(225, 0, 0, 1); + GL11.glRotated(-90, 0, 1, 0); + GL11.glRotated(-90, 1, 0, 0); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(-45, 0, 1, 0); + GL11.glTranslated(0, 1, 0); + ResourceManager.uzi.renderPart("GunMirror"); + ResourceManager.uzi.renderPart("StockBack"); + ResourceManager.uzi.renderPart("StockFront"); + ResourceManager.uzi.renderPart("Slide"); + ResourceManager.uzi.renderPart("Magazine"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java new file mode 100644 index 000000000..d432c31d8 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java @@ -0,0 +1,409 @@ +package com.hbm.render.item.weapon.sedna; + +import java.util.List; + +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; +import org.lwjgl.util.glu.Project; + +import com.hbm.config.ClientConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.SmokeNode; +import com.hbm.lib.RefStrings; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityPlayerSP; +import net.minecraft.client.renderer.ActiveRenderInfo; +import net.minecraft.client.renderer.EntityRenderer; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.IItemRenderer; + +public abstract class ItemRenderWeaponBase implements IItemRenderer { + + public static final ResourceLocation flash_plume = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lilmac_plume.png"); + + public static float interp; + + public boolean isAkimbo() { return false; } + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + return type != ItemRenderType.FIRST_PERSON_MAP; + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + return helper == ItemRendererHelper.ENTITY_BOBBING || helper == ItemRendererHelper.ENTITY_ROTATION; + } + + @SuppressWarnings("incomplete-switch") //shut the fuck up + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_CULL_FACE); + switch(type) { + case EQUIPPED_FIRST_PERSON: setupFirstPerson(item); renderFirstPerson(item); break; + case EQUIPPED: setupThirdPerson(item); renderEquipped(item); break; + case INVENTORY: setupInv(item); renderInv(item); break; + case ENTITY: setupEntity(item); renderEntity(item); break; + } + GL11.glPopMatrix(); + } + + public void renderEquipped(ItemStack stack) { renderOther(stack, ItemRenderType.EQUIPPED); } + public void renderEquippedAkimbo(ItemStack stack) { renderOther(stack, ItemRenderType.EQUIPPED); } + public void renderInv(ItemStack stack) { renderOther(stack, ItemRenderType.INVENTORY); } + public void renderEntity(ItemStack stack) { renderOther(stack, ItemRenderType.ENTITY); } + + public void setPerspectiveAndRender(ItemStack stack, float interp) { + + this.interp = interp; + + Minecraft mc = Minecraft.getMinecraft(); + EntityRenderer entityRenderer = mc.entityRenderer; + float farPlaneDistance = mc.gameSettings.renderDistanceChunks * 16; + + GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT); + GL11.glMatrixMode(GL11.GL_PROJECTION); + GL11.glLoadIdentity(); + + Project.gluPerspective(this.getFOVModifier(interp, ClientConfig.GUN_MODEL_FOV.get()), (float) mc.displayWidth / (float) mc.displayHeight, 0.05F, farPlaneDistance * 2.0F); + + GL11.glMatrixMode(GL11.GL_MODELVIEW); + GL11.glLoadIdentity(); + + GL11.glPushMatrix(); + + if(mc.gameSettings.thirdPersonView == 0 && !mc.renderViewEntity.isPlayerSleeping() && !mc.gameSettings.hideGUI && !mc.playerController.enableEverythingIsScrewedUpMode()) { + entityRenderer.enableLightmap(interp); + this.setupTransformsAndRender(stack); + entityRenderer.disableLightmap(interp); + } + + GL11.glPopMatrix(); + + if(mc.gameSettings.thirdPersonView == 0 && !mc.renderViewEntity.isPlayerSleeping()) { + entityRenderer.itemRenderer.renderOverlays(interp); + } + } + + private float getFOVModifier(float interp, boolean useFOVSetting) { + + Minecraft mc = Minecraft.getMinecraft(); + EntityLivingBase entityplayer = (EntityLivingBase) mc.renderViewEntity; + float fov = getBaseFOV(entityplayer.getHeldItem()); + + if(useFOVSetting) fov = mc.gameSettings.fovSetting; + + if(entityplayer.getHealth() <= 0.0F) { + float f2 = (float) entityplayer.deathTime + interp; + fov /= (1.0F - 500.0F / (f2 + 500.0F)) * 2.0F + 1.0F; + } + + Block block = ActiveRenderInfo.getBlockAtEntityViewpoint(mc.theWorld, entityplayer, interp); + if(block.getMaterial() == Material.water) fov = fov * 60.0F / 70.0F; + + return fov; + } + + protected float getBaseFOV(ItemStack stack) { return 70F; } + public float getViewFOV(ItemStack stack, float fov) { return fov; } + protected float getSwayMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 0.1F : 0.5F; } + protected float getSwayPeriod(ItemStack stack) { return 0.75F; } + protected float getTurnMagnitude(ItemStack stack) { return 2.75F; } + + protected void setupTransformsAndRender(ItemStack stack) { + Minecraft mc = Minecraft.getMinecraft(); + EntityPlayer player = mc.thePlayer; + + float swayMagnitude = getSwayMagnitude(stack); + float swayPeriod = getSwayPeriod(stack); + float turnMagnitude = getTurnMagnitude(stack); + + //lighting setup (item lighting changes based on player rotation) + float pitch = player.prevRotationPitch + (player.rotationPitch - player.prevRotationPitch) * interp; + float yaw = player.prevRotationYaw + (player.rotationYaw - player.prevRotationYaw) * interp; + + GL11.glPushMatrix(); + GL11.glRotatef(pitch, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(yaw, 0.0F, 1.0F, 0.0F); + RenderHelper.enableStandardItemLighting(); + GL11.glPopMatrix(); + + //floppyness + EntityPlayerSP entityplayersp = (EntityPlayerSP) player; + float armPitch = entityplayersp.prevRenderArmPitch + (entityplayersp.renderArmPitch - entityplayersp.prevRenderArmPitch) * interp; + float armYaw = entityplayersp.prevRenderArmYaw + (entityplayersp.renderArmYaw - entityplayersp.prevRenderArmYaw) * interp; + GL11.glRotatef((player.rotationPitch - armPitch) * 0.1F * turnMagnitude, 1.0F, 0.0F, 0.0F); + GL11.glRotatef((player.rotationYaw - armYaw) * 0.1F * turnMagnitude, 0.0F, 1.0F, 0.0F); + + //brightness setup + int brightness = mc.theWorld.getLightBrightnessForSkyBlocks(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY), MathHelper.floor_double(player.posZ), 0); + int j = brightness % 65536; + int k = brightness / 65536; + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) j / 1.0F, (float) k / 1.0F); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + + //color setup + int color = stack.getItem().getColorFromItemStack(stack, 0); + float r = (float) (color >> 16 & 255) / 255.0F; + float g = (float) (color >> 8 & 255) / 255.0F; + float b = (float) (color & 255) / 255.0F; + GL11.glColor4f(r, g, b, 1.0F); + + GL11.glPushMatrix(); + + //swing + /*float swing = player.getSwingProgress(interp); + float swingZ = MathHelper.sin(swing * (float) Math.PI); + float swingX = MathHelper.sin(MathHelper.sqrt_float(swing) * (float) Math.PI); + GL11.glTranslatef(-swingX * 0.4F, MathHelper.sin(MathHelper.sqrt_float(swing) * (float) Math.PI * 2.0F) * 0.2F, -swingZ * 0.2F); + + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + float swingYaw = MathHelper.sin(swing * swing * (float) Math.PI); + float swingPitchRoll = MathHelper.sin(MathHelper.sqrt_float(swing) * (float) Math.PI); + GL11.glRotatef(-swingYaw * 20.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(-swingPitchRoll * 20.0F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(-swingPitchRoll * 80.0F, 1.0F, 0.0F, 0.0F);*/ + + GL11.glEnable(GL12.GL_RESCALE_NORMAL); //! + + GL11.glRotated(180, 0, 1, 0); + + //viewbob + if(mc.renderViewEntity instanceof EntityPlayer) { + EntityPlayer entityplayer = (EntityPlayer) mc.renderViewEntity; + float distanceDelta = entityplayer.distanceWalkedModified - entityplayer.prevDistanceWalkedModified; + float distanceInterp = -(entityplayer.distanceWalkedModified + distanceDelta * interp); + float camYaw = entityplayer.prevCameraYaw + (entityplayer.cameraYaw - entityplayer.prevCameraYaw) * interp; + float camPitch = entityplayer.prevCameraPitch + (entityplayer.cameraPitch - entityplayer.prevCameraPitch) * interp; + GL11.glTranslatef(MathHelper.sin(distanceInterp * (float) Math.PI * swayPeriod) * camYaw * 0.5F * swayMagnitude, -Math.abs(MathHelper.cos(distanceInterp * (float) Math.PI * swayPeriod) * camYaw) * swayMagnitude, 0.0F); + GL11.glRotatef(MathHelper.sin(distanceInterp * (float) Math.PI * swayPeriod) * camYaw * 3.0F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(Math.abs(MathHelper.cos(distanceInterp * (float) Math.PI * swayPeriod - 0.2F) * camYaw) * 5.0F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(camPitch, 1.0F, 0.0F, 0.0F); + } + + this.renderItem(ItemRenderType.EQUIPPED_FIRST_PERSON, stack, null, player); + + GL11.glPopMatrix(); + + GL11.glDisable(GL12.GL_RESCALE_NORMAL); + RenderHelper.disableStandardItemLighting(); + } + + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 1); + + if(Minecraft.getMinecraft().thePlayer.isSneaking()) { + GL11.glTranslated(0, -3.875 / 8D, 0); + } else { + float offset = 0.8F; + GL11.glRotated(180, 0, 1, 0); + GL11.glTranslatef(1.0F * offset, -0.75F * offset, -0.5F * offset); + GL11.glRotated(180, 0, 1, 0); + } + } + + public void setupThirdPerson(ItemStack stack) { + double scale = 0.125D; + GL11.glScaled(scale, scale, scale); + + GL11.glRotatef(15.0F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(12.5F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(15.0F, 1.0F, 0.0F, 0.0F); + + GL11.glTranslated(3.5, 0, 0); + + } + + public void setupThirdPersonAkimbo(ItemStack stack) { + double scale = 0.125D; + GL11.glScaled(scale, scale, scale); + + GL11.glRotatef(15.0F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(12.5F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(10.0F, 1.0F, 0.0F, 0.0F); + + GL11.glTranslated(5, 0, 0); + + } + + public void setupInv(ItemStack stack) { + GL11.glAlphaFunc(GL11.GL_GREATER, 0F); + GL11.glEnable(GL11.GL_ALPHA_TEST); + + GL11.glScaled(1, 1, -1); + GL11.glTranslated(8, 8, 0); + GL11.glRotated(225, 0, 0, 1); + GL11.glRotated(90, 0, 1, 0); + } + + public void setupEntity(ItemStack stack) { + double scale = 0.125D; + GL11.glScaled(scale, scale, scale); + } + + public abstract void renderFirstPerson(ItemStack stack); + public void renderOther(ItemStack stack, ItemRenderType type) { } + + public static void standardAimingTransform(ItemStack stack, double sX, double sY, double sZ, double aX, double aY, double aZ) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + double x = sX + (aX - sX) * aimingProgress; + double y = sY + (aY - sY) * aimingProgress; + double z = sZ + (aZ - sZ) * aimingProgress; + GL11.glTranslated(x, y, z); + } + + public static void renderSmokeNodes(List nodes, double scale) { + Tessellator tess = Tessellator.instance; + + if(nodes.size() > 1) { + + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glAlphaFunc(GL11.GL_GREATER, 0F); + GL11.glDepthMask(false); + + tess.startDrawingQuads(); + tess.setNormal(0F, 1F, 0F); + + for(int i = 0; i < nodes.size() - 1; i++) { + SmokeNode node = nodes.get(i); + SmokeNode past = nodes.get(i + 1); + + tess.setColorRGBA_F(1F, 1F, 1F, (float) node.alpha); + tess.addVertex(node.forward, node.lift, node.side); + tess.setColorRGBA_F(1F, 1F, 1F, 0F); + tess.addVertex(node.forward, node.lift, node.side + node.width * scale); + tess.setColorRGBA_F(1F, 1F, 1F, 0F); + tess.addVertex(past.forward, past.lift, past.side + past.width * scale); + tess.setColorRGBA_F(1F, 1F, 1F, (float) past.alpha); + tess.addVertex(past.forward, past.lift, past.side); + + tess.setColorRGBA_F(1F, 1F, 1F, (float) node.alpha); + tess.addVertex(node.forward, node.lift, node.side); + tess.setColorRGBA_F(1F, 1F, 1F, 0F); + tess.addVertex(node.forward, node.lift, node.side - node.width * scale); + tess.setColorRGBA_F(1F, 1F, 1F, 0F); + tess.addVertex(past.forward, past.lift, past.side - past.width * scale); + tess.setColorRGBA_F(1F, 1F, 1F, (float) past.alpha); + tess.addVertex(past.forward, past.lift, past.side); + } + tess.draw(); + + GL11.glDepthMask(true); + GL11.glAlphaFunc(GL11.GL_GEQUAL, 0.1F); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_BLEND); + } + } + + public static void renderMuzzleFlash(long lastShot) { + renderMuzzleFlash(lastShot, 75, 15); + } + + public static void renderMuzzleFlash(long lastShot, int duration, double l) { + Tessellator tess = Tessellator.instance; + + int flash = duration; + + if(System.currentTimeMillis() - lastShot < flash) { + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glPushMatrix(); + + double fire = (System.currentTimeMillis() - lastShot) / (double) flash; + + double width = 6 * fire; + double length = l * fire; + double inset = 2; + Minecraft.getMinecraft().renderEngine.bindTexture(flash_plume); + tess.startDrawingQuads(); + tess.setNormal(0F, 1F, 0F); + tess.setColorRGBA_F(1F, 1F, 1F, 1F); + + tess.addVertexWithUV(0, -width, - inset, 1, 1); + tess.addVertexWithUV(0, width, - inset, 0, 1); + tess.addVertexWithUV(0.1, width, length - inset, 0 ,0); + tess.addVertexWithUV(0.1, -width, length - inset, 1, 0); + + tess.addVertexWithUV(0, width, inset, 0, 1); + tess.addVertexWithUV(0, -width, inset, 1, 1); + tess.addVertexWithUV(0.1, -width, -length + inset, 1, 0); + tess.addVertexWithUV(0.1, width, -length + inset, 0 ,0); + + tess.addVertexWithUV(0, - inset, width, 0, 1); + tess.addVertexWithUV(0, - inset, -width, 1, 1); + tess.addVertexWithUV(0.1, length - inset, -width, 1, 0); + tess.addVertexWithUV(0.1, length - inset, width, 0 ,0); + + tess.addVertexWithUV(0, inset, -width, 1, 1); + tess.addVertexWithUV(0, inset, width, 0, 1); + tess.addVertexWithUV(0.1, -length + inset, width, 0 ,0); + tess.addVertexWithUV(0.1, -length + inset, -width, 1, 0); + + tess.draw(); + GL11.glPopMatrix(); + GL11.glDisable(GL11.GL_BLEND); + } + } + + public static void renderGapFlash(long lastShot) { + Tessellator tess = Tessellator.instance; + + int flash = 75; + + if(System.currentTimeMillis() - lastShot < flash) { + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glPushMatrix(); + + double fire = (System.currentTimeMillis() - lastShot) / (double) flash; + + double height = 4 * fire; + double length = 15 * fire; + double lift = 3 * fire; + double offset = 1 * fire; + double lengthOffset = 0.125; + Minecraft.getMinecraft().renderEngine.bindTexture(flash_plume); + tess.startDrawingQuads(); + tess.setNormal(0F, 1F, 0F); + tess.setColorRGBA_F(1F, 1F, 1F, 1F); + + tess.addVertexWithUV(0, -height, -offset, 1, 1); + tess.addVertexWithUV(0, height, -offset, 0, 1); + tess.addVertexWithUV(0, height + lift, length - offset, 0 ,0); + tess.addVertexWithUV(0, -height + lift, length - offset, 1, 0); + + tess.addVertexWithUV(0, height, offset, 0, 1); + tess.addVertexWithUV(0, -height, offset, 1, 1); + tess.addVertexWithUV(0, -height + lift, -length + offset, 1, 0); + tess.addVertexWithUV(0, height + lift, -length + offset, 0 ,0); + + tess.addVertexWithUV(0, -height, -offset, 1, 1); + tess.addVertexWithUV(0, height, -offset, 0, 1); + tess.addVertexWithUV(lengthOffset, height, length - offset, 0 ,0); + tess.addVertexWithUV(lengthOffset, -height, length - offset, 1, 0); + + tess.addVertexWithUV(0, height, offset, 0, 1); + tess.addVertexWithUV(0, -height, offset, 1, 1); + tess.addVertexWithUV(lengthOffset, -height, -length + offset, 1, 0); + tess.addVertexWithUV(lengthOffset, height, -length + offset, 0 ,0); + + tess.draw(); + GL11.glPopMatrix(); + GL11.glDisable(GL11.GL_BLEND); + } + } +} diff --git a/src/main/java/com/hbm/render/loader/ModelRendererObj.java b/src/main/java/com/hbm/render/loader/ModelRendererObj.java index 4d916aa86..b7e85a58d 100644 --- a/src/main/java/com/hbm/render/loader/ModelRendererObj.java +++ b/src/main/java/com/hbm/render/loader/ModelRendererObj.java @@ -21,6 +21,8 @@ public class ModelRendererObj { public float offsetX; public float offsetY; public float offsetZ; + + public boolean doRender = true; String[] parts; IModelCustom model; @@ -97,11 +99,13 @@ public class ModelRendererObj { GL11.glScalef(scale, scale, scale); - if(parts.length > 0) - for(String part : parts) - model.renderPart(part); - else - model.renderAll(); + if(doRender) { + if(parts.length > 0) + for(String part : parts) + model.renderPart(part); + else + model.renderAll(); + } GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/model/ModelArmorBase.java b/src/main/java/com/hbm/render/model/ModelArmorBase.java index 81af0edba..99085fa94 100644 --- a/src/main/java/com/hbm/render/model/ModelArmorBase.java +++ b/src/main/java/com/hbm/render/model/ModelArmorBase.java @@ -5,6 +5,8 @@ import com.hbm.render.loader.ModelRendererObj; import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBiped; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.client.renderer.entity.RenderPlayer; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumAction; @@ -77,11 +79,11 @@ public class ModelArmorBase extends ModelBiped { rightArm.rotateAngleX = rightArm.rotateAngleX * 0.5F - ((float) Math.PI / 10F) * hold; } - - this.isSneak = player.isSneaking(); - this.isRiding = player.isRiding(); } + this.isSneak = entity.isSneaking(); + this.isRiding = entity.isRiding(); + if(this.isRiding) { rightArm.rotateAngleX += -((float) Math.PI / 5F); leftArm.rotateAngleX += -((float) Math.PI / 5F); @@ -164,6 +166,15 @@ public class ModelArmorBase extends ModelBiped { rightArm.rotateAngleX += MathHelper.sin(idleCycle * 0.067F) * 0.05F; leftArm.rotateAngleX -= MathHelper.sin(idleCycle * 0.067F) * 0.05F; } + + if(entity instanceof EntityPlayer) { + Object o = RenderManager.instance.entityRenderMap.get(EntityPlayer.class); + if(o instanceof RenderPlayer) { + RenderPlayer render = (RenderPlayer) o; + leftArm.copyRotationFrom(render.modelBipedMain.bipedLeftArm); + rightArm.copyRotationFrom(render.modelBipedMain.bipedRightArm); + } + } } protected void bindTexture(ResourceLocation loc) { diff --git a/src/main/java/com/hbm/render/model/ModelAt4.java b/src/main/java/com/hbm/render/model/ModelAt4.java deleted file mode 100644 index f2f15512f..000000000 --- a/src/main/java/com/hbm/render/model/ModelAt4.java +++ /dev/null @@ -1,134 +0,0 @@ -// Date: 06.04.2016 17:39:42 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - - - - - - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelAt4 extends ModelBase -{ - //fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - ModelRenderer Shape8; - ModelRenderer Shape9; - - public ModelAt4() - { - textureWidth = 64; - textureHeight = 32; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 18, 3, 2); - Shape1.setRotationPoint(-8F, 0F, 0F); - Shape1.setTextureSize(64, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 5); - Shape2.addBox(0F, 0F, 0F, 18, 2, 3); - Shape2.setRotationPoint(-8F, 0.5F, -0.5F); - Shape2.setTextureSize(64, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 10); - Shape3.addBox(0F, 0F, 0F, 3, 4, 4); - Shape3.setRotationPoint(10F, -0.5F, -1F); - Shape3.setTextureSize(64, 32); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 0, 18); - Shape4.addBox(0F, 0F, 0F, 1, 3, 3); - Shape4.setRotationPoint(-9F, 0F, -0.5F); - Shape4.setTextureSize(64, 32); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape5 = new ModelRenderer(this, 14, 10); - Shape5.addBox(0F, 0F, 0F, 1, 4, 4); - Shape5.setRotationPoint(-10F, -0.5F, -1F); - Shape5.setTextureSize(64, 32); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0F); - Shape6 = new ModelRenderer(this, 0, 24); - Shape6.addBox(0F, 0F, 0F, 1, 3, 1); - Shape6.setRotationPoint(-6F, 3F, 0.5F); - Shape6.setTextureSize(64, 32); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - Shape7 = new ModelRenderer(this, 4, 24); - Shape7.addBox(0F, 0F, 0F, 1, 2, 1); - Shape7.setRotationPoint(-3F, 3F, 0.5F); - Shape7.setTextureSize(64, 32); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0F); - Shape8 = new ModelRenderer(this, 8, 18); - Shape8.addBox(0F, 0F, 0F, 3, 1, 1); - Shape8.setRotationPoint(-6F, -0.5F, -2F); - Shape8.setTextureSize(64, 32); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0F, 0F); - Shape9 = new ModelRenderer(this, 0, 28); - Shape9.addBox(0F, 0F, 0F, 1, 1, 2); - Shape9.setRotationPoint(-5F, 0F, -1.5F); - Shape9.setTextureSize(64, 32); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, 0F); - } - - @Override -public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - Shape9.render(f5); - } - - public void renderModel(float f5) - { - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - Shape9.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override -public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelB93.java b/src/main/java/com/hbm/render/model/ModelB93.java deleted file mode 100644 index 5b42ca2ef..000000000 --- a/src/main/java/com/hbm/render/model/ModelB93.java +++ /dev/null @@ -1,487 +0,0 @@ -// Date: 26.04.2018 22:13:08 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.client.renderer.OpenGlHelper; -import net.minecraft.entity.Entity; - -public class ModelB93 extends ModelBase { - // fields - ModelRenderer Muzzle1; - ModelRenderer Barrel1; - ModelRenderer Barrel2; - ModelRenderer Grip; - ModelRenderer Front1; - ModelRenderer Front2; - ModelRenderer Body; - ModelRenderer Top; - ModelRenderer GripBottom; - ModelRenderer Handle; - ModelRenderer HandleBack; - ModelRenderer Frame1; - ModelRenderer Frame2; - ModelRenderer Frame3; - ModelRenderer Trigger; - ModelRenderer BackPlate1; - ModelRenderer Back; - ModelRenderer BackPlate2; - ModelRenderer Pump1; - ModelRenderer Pump2; - ModelRenderer BodyPlate; - ModelRenderer Muz1; - ModelRenderer Muz2; - ModelRenderer Muz3; - ModelRenderer Damp1; - ModelRenderer Damp2; - ModelRenderer Damp3; - ModelRenderer DampFront; - ModelRenderer EmitterRod; - ModelRenderer EmitterCrystal; - ModelRenderer EmitterClamp1; - ModelRenderer EmitterClamp2; - ModelRenderer EmitterClamp3; - ModelRenderer EmitterClamp4; - ModelRenderer EmitterClamp5; - ModelRenderer EmitterClamp6; - ModelRenderer EmitterClamp7; - ModelRenderer EmitterClamp8; - ModelRenderer PowBox; - ModelRenderer PowPanel; - ModelRenderer Nix1; - ModelRenderer Nix2; - ModelRenderer Nix3; - ModelRenderer Nix11; - ModelRenderer Nix21; - ModelRenderer Nix31; - ModelRenderer Nix12; - ModelRenderer Nix22; - ModelRenderer Nix32; - ModelRenderer Pylon; - ModelRenderer Wire1; - ModelRenderer Wire2; - ModelRenderer Wire3; - ModelRenderer PowPylon; - - public ModelB93() { - textureWidth = 128; - textureHeight = 64; - - Muzzle1 = new ModelRenderer(this, 22, 36); - Muzzle1.addBox(0F, 0F, 0F, 2, 3, 2); - Muzzle1.setRotationPoint(-24F, 0.5F, -1F); - Muzzle1.setTextureSize(64, 32); - Muzzle1.mirror = true; - setRotation(Muzzle1, 0F, 0F, 0F); - Barrel1 = new ModelRenderer(this, 0, 0); - Barrel1.addBox(0F, 0F, 0F, 24, 2, 3); - Barrel1.setRotationPoint(-24F, 1F, -1.5F); - Barrel1.setTextureSize(64, 32); - Barrel1.mirror = true; - setRotation(Barrel1, 0F, 0F, 0F); - Barrel2 = new ModelRenderer(this, 0, 5); - Barrel2.addBox(0F, 0F, 0F, 22, 1, 2); - Barrel2.setRotationPoint(-22F, 0.5F, -1F); - Barrel2.setTextureSize(64, 32); - Barrel2.mirror = true; - setRotation(Barrel2, 0F, 0F, 0F); - Grip = new ModelRenderer(this, 0, 8); - Grip.addBox(0F, 0F, 0F, 20, 3, 4); - Grip.setRotationPoint(-20F, 3F, -2F); - Grip.setTextureSize(64, 32); - Grip.mirror = true; - setRotation(Grip, 0F, 0F, 0F); - Front1 = new ModelRenderer(this, 10, 36); - Front1.addBox(0F, 0F, 0F, 2, 4, 4); - Front1.setRotationPoint(-22F, 0.5F, -2F); - Front1.setTextureSize(64, 32); - Front1.mirror = true; - setRotation(Front1, 0F, 0F, 0F); - Front2 = new ModelRenderer(this, 0, 36); - Front2.addBox(0F, 0F, 0F, 2, 6, 3); - Front2.setRotationPoint(-22F, 0F, -1.5F); - Front2.setTextureSize(64, 32); - Front2.mirror = true; - setRotation(Front2, 0F, 0F, 0F); - Body = new ModelRenderer(this, 0, 15); - Body.addBox(0F, 0F, 0F, 15, 7, 4); - Body.setRotationPoint(0F, 0.5F, -2F); - Body.setTextureSize(64, 32); - Body.mirror = true; - setRotation(Body, 0F, 0F, 0F); - Top = new ModelRenderer(this, 28, 60); - Top.addBox(0F, 0F, 0F, 15, 1, 3); - Top.setRotationPoint(0F, 0F, -1.5F); - Top.setTextureSize(64, 32); - Top.mirror = true; - setRotation(Top, 0F, 0F, 0F); - GripBottom = new ModelRenderer(this, 24, 43); - GripBottom.addBox(0F, 0F, 0F, 18, 1, 2); - GripBottom.setRotationPoint(-18F, 5.5F, -1F); - GripBottom.setTextureSize(64, 32); - GripBottom.mirror = true; - setRotation(GripBottom, 0F, 0F, 0F); - Handle = new ModelRenderer(this, 0, 45); - Handle.addBox(0F, 0F, 0F, 6, 15, 4); - Handle.setRotationPoint(6F, 7F, -2F); - Handle.setTextureSize(64, 32); - Handle.mirror = true; - setRotation(Handle, 0F, 0F, -0.2268928F); - HandleBack = new ModelRenderer(this, 20, 46); - HandleBack.addBox(5.5F, 0F, 0F, 1, 15, 3); - HandleBack.setRotationPoint(6F, 7F, -1.5F); - HandleBack.setTextureSize(64, 32); - HandleBack.mirror = true; - setRotation(HandleBack, 0F, 0F, -0.2268928F); - Frame1 = new ModelRenderer(this, 28, 57); - Frame1.addBox(0F, 0F, 0F, 7, 1, 2); - Frame1.setRotationPoint(0.5F, 11F, -1F); - Frame1.setTextureSize(64, 32); - Frame1.mirror = true; - setRotation(Frame1, 0F, 0F, 0F); - Frame2 = new ModelRenderer(this, 28, 51); - Frame2.addBox(0F, 0F, 0F, 2, 4, 2); - Frame2.setRotationPoint(-2F, 6.5F, -1F); - Frame2.setTextureSize(64, 32); - Frame2.mirror = true; - setRotation(Frame2, 0F, 0F, 0F); - Frame3 = new ModelRenderer(this, 46, 57); - Frame3.addBox(0F, -1F, 0F, 3, 1, 2); - Frame3.setRotationPoint(-2F, 10.5F, -1F); - Frame3.setTextureSize(64, 32); - Frame3.mirror = true; - setRotation(Frame3, 0F, 0F, 0.5235988F); - Trigger = new ModelRenderer(this, 36, 53); - Trigger.addBox(0F, 0F, 0F, 2, 3, 1); - Trigger.setRotationPoint(4F, 7F, -0.5F); - Trigger.setTextureSize(64, 32); - Trigger.mirror = true; - setRotation(Trigger, 0F, 0F, 0.1919862F); - BackPlate1 = new ModelRenderer(this, 56, 53); - BackPlate1.addBox(-1F, 0F, 0F, 1, 4, 3); - BackPlate1.setRotationPoint(15F, 0F, -1.5F); - BackPlate1.setTextureSize(64, 32); - BackPlate1.mirror = true; - setRotation(BackPlate1, 0F, 0F, -0.5235988F); - Back = new ModelRenderer(this, 42, 49); - Back.addBox(0F, 0F, 0F, 2, 4, 4); - Back.setRotationPoint(15F, 3.5F, -2F); - Back.setTextureSize(64, 32); - Back.mirror = true; - setRotation(Back, 0F, 0F, 0F); - BackPlate2 = new ModelRenderer(this, 48, 5); - BackPlate2.addBox(-2F, 0F, 0F, 2, 4, 4); - BackPlate2.setRotationPoint(15F, 0.5F, -2F); - BackPlate2.setTextureSize(64, 32); - BackPlate2.mirror = true; - setRotation(BackPlate2, 0F, 0F, -0.4886922F); - Pump1 = new ModelRenderer(this, 46, 29); - Pump1.addBox(0F, 0F, 0F, 7, 2, 2); - Pump1.setRotationPoint(10F, 1F, -1F); - Pump1.setTextureSize(64, 32); - Pump1.mirror = true; - setRotation(Pump1, 0F, 0F, 0F); - Pump2 = new ModelRenderer(this, 44, 33); - Pump2.addBox(0F, 0F, 0F, 3, 3, 7); - Pump2.setRotationPoint(17F, 0.5F, -3.5F); - Pump2.setTextureSize(64, 32); - Pump2.mirror = true; - setRotation(Pump2, 0F, 0F, 0F); - BodyPlate = new ModelRenderer(this, 0, 26); - BodyPlate.addBox(0F, 0F, 0F, 14, 5, 5); - BodyPlate.setRotationPoint(1.5F, 2F, -2.5F); - BodyPlate.setTextureSize(64, 32); - BodyPlate.mirror = true; - setRotation(BodyPlate, 0F, 0F, 0F); - Muz1 = new ModelRenderer(this, 90, 3); - Muz1.addBox(0F, 0F, 0F, 2, 5, 3); - Muz1.setRotationPoint(-26F, -0.5F, -1.5F); - Muz1.setTextureSize(64, 32); - Muz1.mirror = true; - setRotation(Muz1, 0F, 0F, 0F); - Muz2 = new ModelRenderer(this, 64, 2); - Muz2.addBox(0F, 0F, 0F, 2, 3, 5); - Muz2.setRotationPoint(-26F, 0.5F, -2.5F); - Muz2.setTextureSize(64, 32); - Muz2.mirror = true; - setRotation(Muz2, 0F, 0F, 0F); - Muz3 = new ModelRenderer(this, 78, 3); - Muz3.addBox(0F, 0F, 0F, 2, 4, 4); - Muz3.setRotationPoint(-26F, 0F, -2F); - Muz3.setTextureSize(64, 32); - Muz3.mirror = true; - setRotation(Muz3, 0F, 0F, 0F); - Damp1 = new ModelRenderer(this, 64, 53); - Damp1.addBox(0F, 0F, 0F, 24, 7, 4); - Damp1.setRotationPoint(-50F, -1.5F, -2F); - Damp1.setTextureSize(64, 32); - Damp1.mirror = true; - setRotation(Damp1, 0F, 0F, 0F); - Damp2 = new ModelRenderer(this, 64, 42); - Damp2.addBox(0F, 0F, 0F, 24, 4, 7); - Damp2.setRotationPoint(-50F, 0F, -3.5F); - Damp2.setTextureSize(64, 32); - Damp2.mirror = true; - setRotation(Damp2, 0F, 0F, 0F); - Damp3 = new ModelRenderer(this, 64, 30); - Damp3.addBox(0F, 0F, 0F, 24, 6, 6); - Damp3.setRotationPoint(-50F, -1F, -3F); - Damp3.setTextureSize(64, 32); - Damp3.mirror = true; - setRotation(Damp3, 0F, 0F, 0F); - DampFront = new ModelRenderer(this, 64, 22); - DampFront.addBox(0F, 0F, 0F, 2, 4, 4); - DampFront.setRotationPoint(-51.1F, 0F, -2F); - DampFront.setTextureSize(64, 32); - DampFront.mirror = true; - setRotation(DampFront, 0F, 0F, 0F); - EmitterRod = new ModelRenderer(this, 64, 18); - EmitterRod.addBox(0F, 0F, 0F, 4, 2, 2); - EmitterRod.setRotationPoint(-55F, 1F, -1F); - EmitterRod.setTextureSize(64, 32); - EmitterRod.mirror = true; - setRotation(EmitterRod, 0F, 0F, 0F); - EmitterCrystal = new ModelRenderer(this, 76, 24); - EmitterCrystal.addBox(0F, -1.5F, -1.5F, 3, 3, 3); - EmitterCrystal.setRotationPoint(-57F, 2F, 0F); - EmitterCrystal.setTextureSize(64, 32); - EmitterCrystal.mirror = true; - setRotation(EmitterCrystal, 0.7853982F, 0F, 0F); - EmitterClamp1 = new ModelRenderer(this, 88, 27); - EmitterClamp1.addBox(-5F, 0F, 0F, 5, 2, 1); - EmitterClamp1.setRotationPoint(-50F, 1F, -0.5F); - EmitterClamp1.setTextureSize(64, 32); - EmitterClamp1.mirror = true; - setRotation(EmitterClamp1, 0F, 0F, 1.047198F); - EmitterClamp2 = new ModelRenderer(this, 88, 24); - EmitterClamp2.addBox(-5F, -2F, 0F, 5, 2, 1); - EmitterClamp2.setRotationPoint(-50F, 3F, -0.5F); - EmitterClamp2.setTextureSize(64, 32); - EmitterClamp2.mirror = true; - setRotation(EmitterClamp2, 0F, 0F, -1.047198F); - EmitterClamp3 = new ModelRenderer(this, 100, 27); - EmitterClamp3.addBox(-5F, 0F, 0F, 5, 1, 2); - EmitterClamp3.setRotationPoint(-50F, 1.5F, -1F); - EmitterClamp3.setTextureSize(64, 32); - EmitterClamp3.mirror = true; - setRotation(EmitterClamp3, 0F, -1.047198F, 0F); - EmitterClamp4 = new ModelRenderer(this, 100, 24); - EmitterClamp4.addBox(-5F, 0F, -2F, 5, 1, 2); - EmitterClamp4.setRotationPoint(-50F, 1.5F, 1F); - EmitterClamp4.setTextureSize(64, 32); - EmitterClamp4.mirror = true; - setRotation(EmitterClamp4, 0F, 1.047198F, 0F); - EmitterClamp5 = new ModelRenderer(this, 76, 22); - EmitterClamp5.addBox(-6F, 0F, 0F, 7, 1, 1); - EmitterClamp5.setRotationPoint(-53F, -4F, -0.5F); - EmitterClamp5.setTextureSize(64, 32); - EmitterClamp5.mirror = true; - setRotation(EmitterClamp5, 0F, 0F, -0.5235988F); - EmitterClamp6 = new ModelRenderer(this, 76, 20); - EmitterClamp6.addBox(-6F, -1F, 0F, 7, 1, 1); - EmitterClamp6.setRotationPoint(-53F, 8F, -0.5F); - EmitterClamp6.setTextureSize(64, 32); - EmitterClamp6.mirror = true; - setRotation(EmitterClamp6, 0F, 0F, 0.5235988F); - EmitterClamp7 = new ModelRenderer(this, 92, 22); - EmitterClamp7.addBox(-6F, 0F, 0F, 7, 1, 1); - EmitterClamp7.setRotationPoint(-53F, 1.5F, -6F); - EmitterClamp7.setTextureSize(64, 32); - EmitterClamp7.mirror = true; - setRotation(EmitterClamp7, 0F, 0.5235988F, 0F); - EmitterClamp8 = new ModelRenderer(this, 92, 20); - EmitterClamp8.addBox(-6F, 0F, -1F, 7, 1, 1); - EmitterClamp8.setRotationPoint(-53F, 1.5F, 6F); - EmitterClamp8.setTextureSize(64, 32); - EmitterClamp8.mirror = true; - setRotation(EmitterClamp8, 0F, -0.5235988F, 0F); - PowBox = new ModelRenderer(this, 76, 11); - PowBox.addBox(0F, 0F, 0F, 10, 5, 4); - PowBox.setRotationPoint(4F, 2F, 2.5F); - PowBox.setTextureSize(64, 32); - PowBox.mirror = true; - setRotation(PowBox, 0F, 0F, 0F); - PowPanel = new ModelRenderer(this, 44, 24); - PowPanel.addBox(0F, 0F, 0F, 9, 4, 1); - PowPanel.setRotationPoint(4.5F, 2.5F, 6F); - PowPanel.setTextureSize(64, 32); - PowPanel.mirror = true; - setRotation(PowPanel, 0F, 0F, 0F); - Nix1 = new ModelRenderer(this, 56, 17); - Nix1.addBox(0F, 0F, 0F, 2, 5, 2); - Nix1.setRotationPoint(11F, -3F, 4F); - Nix1.setTextureSize(64, 32); - Nix1.mirror = true; - setRotation(Nix1, 0F, 0F, 0F); - Nix2 = new ModelRenderer(this, 48, 17); - Nix2.addBox(0F, 0F, 0F, 2, 5, 2); - Nix2.setRotationPoint(8F, -3F, 4F); - Nix2.setTextureSize(64, 32); - Nix2.mirror = true; - setRotation(Nix2, 0F, 0F, 0F); - Nix3 = new ModelRenderer(this, 40, 17); - Nix3.addBox(0F, 0F, 0F, 2, 5, 2); - Nix3.setRotationPoint(5F, -3F, 4F); - Nix3.setTextureSize(64, 32); - Nix3.mirror = true; - setRotation(Nix3, 0F, 0F, 0F); - Nix11 = new ModelRenderer(this, 72, 15); - Nix11.addBox(0F, 0F, 0F, 1, 2, 1); - Nix11.setRotationPoint(11.5F, -5F, 4.5F); - Nix11.setTextureSize(64, 32); - Nix11.mirror = true; - setRotation(Nix11, 0F, 0F, 0F); - Nix21 = new ModelRenderer(this, 68, 15); - Nix21.addBox(0F, 0F, 0F, 1, 2, 1); - Nix21.setRotationPoint(8.5F, -5F, 4.5F); - Nix21.setTextureSize(64, 32); - Nix21.mirror = true; - setRotation(Nix21, 0F, 0F, 0F); - Nix31 = new ModelRenderer(this, 64, 15); - Nix31.addBox(0F, 0F, 0F, 1, 2, 1); - Nix31.setRotationPoint(5.5F, -5F, 4.5F); - Nix31.setTextureSize(64, 32); - Nix31.mirror = true; - setRotation(Nix31, 0F, 0F, 0F); - Nix12 = new ModelRenderer(this, 72, 10); - Nix12.addBox(0F, 0F, 0F, 1, 4, 1); - Nix12.setRotationPoint(11.5F, -1.5F, 4.5F); - Nix12.setTextureSize(64, 32); - Nix12.mirror = true; - setRotation(Nix12, 0F, 0F, 0F); - Nix22 = new ModelRenderer(this, 68, 10); - Nix22.addBox(0F, 0F, 0F, 1, 4, 1); - Nix22.setRotationPoint(8.5F, -1.5F, 4.5F); - Nix22.setTextureSize(64, 32); - Nix22.mirror = true; - setRotation(Nix22, 0F, 0F, 0F); - Nix32 = new ModelRenderer(this, 64, 10); - Nix32.addBox(0F, 0F, 0F, 1, 4, 1); - Nix32.setRotationPoint(5.5F, -1.5F, 4.5F); - Nix32.setTextureSize(64, 32); - Nix32.mirror = true; - setRotation(Nix32, 0F, 0F, 0F); - Pylon = new ModelRenderer(this, 114, 24); - Pylon.addBox(0F, 0F, 0F, 2, 2, 4); - Pylon.setRotationPoint(-35F, 1F, 3.5F); - Pylon.setTextureSize(64, 32); - Pylon.mirror = true; - setRotation(Pylon, 0F, 0F, 0F); - Wire1 = new ModelRenderer(this, 82, 0); - Wire1.addBox(0F, 0F, 0F, 20, 0, 3); - Wire1.setRotationPoint(-24F, 7F, 4F); - Wire1.setTextureSize(64, 32); - Wire1.mirror = true; - setRotation(Wire1, 0F, 0F, 0F); - Wire2 = new ModelRenderer(this, 104, 3); - Wire2.addBox(0F, 0F, 0F, 9, 0, 3); - Wire2.setRotationPoint(-4F, 7F, 4F); - Wire2.setTextureSize(64, 32); - Wire2.mirror = true; - setRotation(Wire2, 0F, 0F, -0.4363323F); - Wire3 = new ModelRenderer(this, 100, 6); - Wire3.addBox(-11F, 0F, 0F, 11, 0, 3); - Wire3.setRotationPoint(-24F, 7F, 4F); - Wire3.setTextureSize(64, 32); - Wire3.mirror = true; - setRotation(Wire3, 0F, 0F, 0.4363323F); - PowPylon = new ModelRenderer(this, 108, 17); - PowPylon.addBox(0F, 0F, 0F, 2, 2, 5); - PowPylon.setRotationPoint(2.5F, 3F, 2.5F); - PowPylon.setTextureSize(64, 32); - PowPylon.mirror = true; - setRotation(PowPylon, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Muzzle1.render(f5); - Barrel1.render(f5); - Barrel2.render(f5); - Grip.render(f5); - Front1.render(f5); - Front2.render(f5); - Body.render(f5); - Top.render(f5); - GripBottom.render(f5); - Handle.render(f5); - HandleBack.render(f5); - Frame1.render(f5); - Frame2.render(f5); - Frame3.render(f5); - Trigger.render(f5); - BackPlate1.render(f5); - Back.render(f5); - BackPlate2.render(f5); - Pump1.render(f5); - Pump2.render(f5); - BodyPlate.render(f5); - Muz1.render(f5); - Muz2.render(f5); - Muz3.render(f5); - Damp1.render(f5); - Damp2.render(f5); - Damp3.render(f5); - DampFront.render(f5); - EmitterRod.render(f5); - EmitterCrystal.render(f5); - EmitterClamp1.render(f5); - EmitterClamp2.render(f5); - EmitterClamp3.render(f5); - EmitterClamp4.render(f5); - EmitterClamp5.render(f5); - EmitterClamp6.render(f5); - EmitterClamp7.render(f5); - EmitterClamp8.render(f5); - PowBox.render(f5); - PowPanel.render(f5); - Nix11.render(f5); - Nix21.render(f5); - Nix31.render(f5); - Nix12.render(f5); - Nix22.render(f5); - Nix32.render(f5); - GL11.glEnable(GL11.GL_BLEND); - //GL11.glDisable(GL11.GL_ALPHA_TEST); - OpenGlHelper.glBlendFunc(770, 771, 1, 0); - Nix1.render(f5); - Nix2.render(f5); - Nix3.render(f5); - GL11.glDisable(GL11.GL_BLEND); - Pylon.render(f5); - Wire1.render(f5); - Wire2.render(f5); - Wire3.render(f5); - PowPylon.render(f5); - } - - public void renderAnim(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, float tran) { - - Pump1.offsetX += tran; - Pump2.offsetX += tran; - - render(entity, f, f1, f2, f3, f4, f5); - - Pump1.offsetX -= tran; - Pump2.offsetX -= tran; - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelBFLauncher.java b/src/main/java/com/hbm/render/model/ModelBFLauncher.java deleted file mode 100644 index dadb9847e..000000000 --- a/src/main/java/com/hbm/render/model/ModelBFLauncher.java +++ /dev/null @@ -1,261 +0,0 @@ -// Date: 14.11.2016 11:46:56 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.weapon.ItemGunBase; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; - -public class ModelBFLauncher extends ModelBase { - // fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - ModelRenderer Shape8; - ModelRenderer Shape9; - ModelRenderer Shape10; - ModelRenderer Shape11; - ModelRenderer Shape12; - ModelRenderer Shape27; - ModelRenderer Shape28; - ModelRenderer Shape30; - ModelRenderer Shape31; - ModelRenderer Shape32; - ModelRenderer Shape33; - ModelRenderer Shape13; - ModelRenderer Shape14; - ModelRenderer Shape15; - ModelRenderer Shape16; - ModelRenderer Shape17; - ModelRenderer Shape18; - ModelRenderer Shape19; - ModelRenderer Shape20; - - public ModelBFLauncher() { - textureWidth = 128; - textureHeight = 64; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 40, 2, 4); - Shape1.setRotationPoint(-20F, 0F, 0F); - Shape1.setTextureSize(128, 64); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 6); - Shape2.addBox(0F, 0F, 0F, 6, 2, 2); - Shape2.setRotationPoint(-19F, 2F, 1F); - Shape2.setTextureSize(128, 64); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 10); - Shape3.addBox(0F, 0F, 0F, 1, 4, 1); - Shape3.setRotationPoint(-12F, 2F, 1.5F); - Shape3.setTextureSize(128, 64); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 16, 6); - Shape4.addBox(0F, 0F, 0F, 6, 1, 4); - Shape4.setRotationPoint(-10F, 2F, 0F); - Shape4.setTextureSize(128, 64); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape5 = new ModelRenderer(this, 0, 15); - Shape5.addBox(0F, 0F, 0F, 2, 3, 1); - Shape5.setRotationPoint(-7F, 3F, 1.5F); - Shape5.setTextureSize(128, 64); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0F); - Shape6 = new ModelRenderer(this, 4, 10); - Shape6.addBox(0F, 0F, 0F, 3, 3, 1); - Shape6.setRotationPoint(-10F, 3F, 1.5F); - Shape6.setTextureSize(128, 64); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - Shape7 = new ModelRenderer(this, 12, 10); - Shape7.addBox(-1F, 0F, 0F, 1, 2, 1); - Shape7.setRotationPoint(-7F, 3F, 1.5F); - Shape7.setTextureSize(128, 64); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0.5235988F); - Shape8 = new ModelRenderer(this, 36, 6); - Shape8.addBox(0F, 0F, 0F, 10, 1, 4); - Shape8.setRotationPoint(-3F, 2F, 0F); - Shape8.setTextureSize(128, 64); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0F, 0F); - Shape9 = new ModelRenderer(this, 64, 6); - Shape9.addBox(0F, 0F, 0F, 2, 3, 2); - Shape9.setRotationPoint(7F, 2F, 1F); - Shape9.setTextureSize(128, 64); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, 0F); - Shape10 = new ModelRenderer(this, 88, 0); - Shape10.addBox(0F, 0F, 0F, 3, 4, 4); - Shape10.setRotationPoint(17F, -4F, 0F); - Shape10.setTextureSize(128, 64); - Shape10.mirror = true; - setRotation(Shape10, 0F, 0F, 0F); - Shape11 = new ModelRenderer(this, 72, 6); - Shape11.addBox(0F, 0F, 0F, 2, 3, 1); - Shape11.setRotationPoint(18F, -7F, 0F); - Shape11.setTextureSize(128, 64); - Shape11.mirror = true; - setRotation(Shape11, 0F, 0F, 0F); - Shape12 = new ModelRenderer(this, 78, 6); - Shape12.addBox(0F, 0F, 0F, 2, 3, 1); - Shape12.setRotationPoint(18F, -7F, 3F); - Shape12.setTextureSize(128, 64); - Shape12.mirror = true; - setRotation(Shape12, 0F, 0F, 0F); - Shape27 = new ModelRenderer(this, 18, 27); - Shape27.addBox(0F, 0F, 0F, 2, 5, 1); - Shape27.setRotationPoint(13F, -5F, 1.5F); - Shape27.setTextureSize(128, 64); - Shape27.mirror = true; - setRotation(Shape27, 0F, 0F, 0F); - Shape28 = new ModelRenderer(this, 84, 6); - Shape28.addBox(0F, 0F, 0F, 1, 3, 1); - Shape28.setRotationPoint(16F, -3F, 1.5F); - Shape28.setTextureSize(128, 64); - Shape28.mirror = true; - setRotation(Shape28, 0F, 0F, 0F); - Shape30 = new ModelRenderer(this, 30, 15); - Shape30.addBox(0F, 0F, 0F, 12, 2, 2); - Shape30.setRotationPoint(-7F, -1F, 4F); - Shape30.setTextureSize(128, 64); - Shape30.mirror = true; - setRotation(Shape30, 0F, 0F, 0F); - Shape31 = new ModelRenderer(this, 44, 19); - Shape31.addBox(0F, 0F, 0F, 14, 1, 1); - Shape31.setRotationPoint(5F, -0.5F, 4.5F); - Shape31.setTextureSize(128, 64); - Shape31.mirror = true; - setRotation(Shape31, 0F, 0F, 0F); - Shape32 = new ModelRenderer(this, 12, 27); - Shape32.addBox(0F, 0F, 0F, 1, 1, 1); - Shape32.setRotationPoint(18F, -0.5F, 3.5F); - Shape32.setTextureSize(128, 64); - Shape32.mirror = true; - setRotation(Shape32, 0F, 0F, 0F); - Shape33 = new ModelRenderer(this, 24, 29); - Shape33.addBox(0F, 0F, 0F, 31, 1, 2); - Shape33.setRotationPoint(-18F, -1F, 1F); - Shape33.setTextureSize(128, 64); - Shape33.mirror = true; - setRotation(Shape33, 0F, 0F, 0F); - Shape13 = new ModelRenderer(this, 0, 34); - Shape13.addBox(0F, 0F, 0F, 22, 5, 3); - Shape13.setRotationPoint(-15F, -6F, 0.5F); - Shape13.setTextureSize(128, 64); - Shape13.mirror = true; - setRotation(Shape13, 0F, 0F, 0F); - Shape14 = new ModelRenderer(this, 0, 42); - Shape14.addBox(0F, 0F, 0F, 22, 3, 5); - Shape14.setRotationPoint(-15F, -5F, -0.5F); - Shape14.setTextureSize(128, 64); - Shape14.mirror = true; - setRotation(Shape14, 0F, 0F, 0F); - Shape15 = new ModelRenderer(this, 0, 50); - Shape15.addBox(0F, 0F, 0F, 1, 3, 3); - Shape15.setRotationPoint(-16F, -5F, 0.5F); - Shape15.setTextureSize(128, 64); - Shape15.mirror = true; - setRotation(Shape15, 0F, 0F, 0F); - Shape16 = new ModelRenderer(this, 8, 50); - Shape16.addBox(0F, 0F, 0F, 2, 3, 3); - Shape16.setRotationPoint(7F, -5F, 0.5F); - Shape16.setTextureSize(128, 64); - Shape16.mirror = true; - setRotation(Shape16, 0F, 0F, 0F); - Shape17 = new ModelRenderer(this, 18, 50); - Shape17.addBox(0F, 0F, 0F, 4, 1, 3); - Shape17.setRotationPoint(9F, -2F, 0.5F); - Shape17.setTextureSize(128, 64); - Shape17.mirror = true; - setRotation(Shape17, 0F, 0F, 0F); - Shape18 = new ModelRenderer(this, 32, 50); - Shape18.addBox(0F, 0F, 0F, 4, 1, 3); - Shape18.setRotationPoint(9F, -6F, 0.5F); - Shape18.setTextureSize(128, 64); - Shape18.mirror = true; - setRotation(Shape18, 0F, 0F, 0F); - Shape19 = new ModelRenderer(this, 46, 50); - Shape19.addBox(0F, 0F, 0F, 4, 3, 1); - Shape19.setRotationPoint(9F, -5F, -0.5F); - Shape19.setTextureSize(128, 64); - Shape19.mirror = true; - setRotation(Shape19, 0F, 0F, 0F); - Shape20 = new ModelRenderer(this, 56, 50); - Shape20.addBox(0F, 0F, 0F, 4, 3, 1); - Shape20.setRotationPoint(9F, -5F, 3.5F); - Shape20.setTextureSize(128, 64); - Shape20.mirror = true; - setRotation(Shape20, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack item) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape1.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - Shape2.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - Shape6.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - Shape7.render(f5); - Shape8.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - Shape9.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - Shape10.render(f5); - Shape11.render(f5); - Shape12.render(f5); - Shape27.render(f5); - Shape28.render(f5); - Shape30.render(f5); - Shape31.render(f5); - Shape32.render(f5); - Shape33.render(f5); - - int ammo = ItemGunBase.getMag(item); - if(ammo > 0) { - Shape13.render(f5); - Shape14.render(f5); - Shape15.render(f5); - Shape16.render(f5); - Shape17.render(f5); - Shape18.render(f5); - Shape19.render(f5); - Shape20.render(f5); - } - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelBaleflare.java b/src/main/java/com/hbm/render/model/ModelBaleflare.java deleted file mode 100644 index 1449240eb..000000000 --- a/src/main/java/com/hbm/render/model/ModelBaleflare.java +++ /dev/null @@ -1,114 +0,0 @@ -// Date: 14.11.2016 12:21:58 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelBaleflare extends ModelBase { - // fields - ModelRenderer Shape9; - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - - public ModelBaleflare() { - textureWidth = 128; - textureHeight = 32; - - Shape9 = new ModelRenderer(this, 0, 0); - Shape9.addBox(0F, 0F, 0F, 22, 5, 3); - Shape9.setRotationPoint(-11F, -2.5F, -1.5F); - Shape9.setTextureSize(128, 32); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, 0F); - Shape1 = new ModelRenderer(this, 0, 8); - Shape1.addBox(0F, 0F, 0F, 22, 3, 5); - Shape1.setRotationPoint(-11F, -1.5F, -2.5F); - Shape1.setTextureSize(128, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 16); - Shape2.addBox(0F, 0F, 0F, 1, 3, 3); - Shape2.setRotationPoint(-12F, -1.5F, -1.5F); - Shape2.setTextureSize(128, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 8, 16); - Shape3.addBox(0F, 0F, 0F, 2, 3, 3); - Shape3.setRotationPoint(11F, -1.5F, -1.5F); - Shape3.setTextureSize(128, 32); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 18, 16); - Shape4.addBox(0F, 0F, 0F, 4, 1, 3); - Shape4.setRotationPoint(13F, 1.5F, -1.5F); - Shape4.setTextureSize(128, 32); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape5 = new ModelRenderer(this, 32, 16); - Shape5.addBox(0F, 0F, 0F, 4, 1, 3); - Shape5.setRotationPoint(13F, -2.5F, -1.5F); - Shape5.setTextureSize(128, 32); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0F); - Shape6 = new ModelRenderer(this, 46, 16); - Shape6.addBox(0F, 0F, 0F, 4, 3, 1); - Shape6.setRotationPoint(13F, -1.5F, -2.5F); - Shape6.setTextureSize(128, 32); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - Shape7 = new ModelRenderer(this, 56, 16); - Shape7.addBox(0F, 0F, 0F, 4, 3, 1); - Shape7.setRotationPoint(13F, -1.5F, 1.5F); - Shape7.setTextureSize(128, 32); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0F); - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape9.render(f5); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - } - - public void renderAll(float f5) { - Shape9.render(f5); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelBoltAction.java b/src/main/java/com/hbm/render/model/ModelBoltAction.java deleted file mode 100644 index 287421431..000000000 --- a/src/main/java/com/hbm/render/model/ModelBoltAction.java +++ /dev/null @@ -1,250 +0,0 @@ -// Date: 14.01.2018 22:26:04 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.entity.Entity; - -public class ModelBoltAction extends ModelBase { - // fields - ModelRenderer Barrel1; - ModelRenderer Barrel2; - ModelRenderer Grip; - ModelRenderer BodyFront; - ModelRenderer BodyMain; - ModelRenderer LeverFront; - ModelRenderer LeverBottom; - ModelRenderer LeverMid; - ModelRenderer Trigger; - ModelRenderer GripFront; - ModelRenderer GropFrontBottom; - ModelRenderer GripBottom; - ModelRenderer Bolt; - ModelRenderer ChamberFront; - ModelRenderer ChamberBack; - ModelRenderer BodyBack; - ModelRenderer LeverTip; - ModelRenderer Lever; - ModelRenderer HandleFront; - ModelRenderer Pointer; - ModelRenderer HandleBottom; - ModelRenderer HandleGrip; - - public ModelBoltAction() { - textureWidth = 128; - textureHeight = 64; - - Barrel1 = new ModelRenderer(this, 0, 0); - Barrel1.addBox(0F, 0F, 0F, 60, 3, 2); - Barrel1.setRotationPoint(-60F, 1.5F, -1F); - Barrel1.setTextureSize(64, 32); - Barrel1.mirror = true; - setRotation(Barrel1, 0F, 0F, 0F); - Barrel2 = new ModelRenderer(this, 0, 5); - Barrel2.addBox(0F, 0F, 0F, 60, 2, 3); - Barrel2.setRotationPoint(-60F, 2F, -1.5F); - Barrel2.setTextureSize(64, 32); - Barrel2.mirror = true; - setRotation(Barrel2, 0F, 0F, 0F); - Grip = new ModelRenderer(this, 0, 10); - Grip.addBox(0F, 0F, 0F, 28, 5, 4); - Grip.setRotationPoint(-28F, 3F, -2F); - Grip.setTextureSize(64, 32); - Grip.mirror = true; - setRotation(Grip, 0F, 0F, 0F); - BodyFront = new ModelRenderer(this, 0, 19); - BodyFront.addBox(0F, 0F, 0F, 3, 7, 4); - BodyFront.setRotationPoint(0F, 2.5F, -2F); - BodyFront.setTextureSize(64, 32); - BodyFront.mirror = true; - setRotation(BodyFront, 0F, 0F, 0F); - BodyMain = new ModelRenderer(this, 14, 19); - BodyMain.addBox(0F, 0F, 0F, 8, 7, 4); - BodyMain.setRotationPoint(3F, 2.5F, -2F); - BodyMain.setTextureSize(64, 32); - BodyMain.mirror = true; - setRotation(BodyMain, 0F, 0F, 0F); - LeverFront = new ModelRenderer(this, 62, 30); - LeverFront.addBox(-1F, 0F, 0F, 2, 4, 2); - LeverFront.setRotationPoint(7F, 9F, -1F); - LeverFront.setTextureSize(64, 32); - LeverFront.mirror = true; - setRotation(LeverFront, 0F, 0F, 0F); - LeverBottom = new ModelRenderer(this, 70, 30); - LeverBottom.addBox(0F, 4F, 0F, 6, 1, 2); - LeverBottom.setRotationPoint(7F, 9F, -1F); - LeverBottom.setTextureSize(64, 32); - LeverBottom.mirror = true; - setRotation(LeverBottom, 0F, 0F, 0F); - LeverMid = new ModelRenderer(this, 62, 36); - LeverMid.addBox(6F, 0F, 0F, 1, 5, 2); - LeverMid.setRotationPoint(7F, 9F, -1F); - LeverMid.setTextureSize(64, 32); - LeverMid.mirror = true; - setRotation(LeverMid, 0F, 0F, 0F); - Trigger = new ModelRenderer(this, 88, 30); - Trigger.addBox(-1F, 0F, 0F, 1, 3, 1); - Trigger.setRotationPoint(12.5F, 9F, -0.5F); - Trigger.setTextureSize(64, 32); - Trigger.mirror = true; - setRotation(Trigger, 0F, 0F, 0.3490659F); - GripFront = new ModelRenderer(this, 0, 30); - GripFront.addBox(0F, 0F, 0F, 18, 3, 4); - GripFront.setRotationPoint(-46F, 3F, -2F); - GripFront.setTextureSize(128, 64); - GripFront.mirror = true; - setRotation(GripFront, 0F, 0F, 0F); - GropFrontBottom = new ModelRenderer(this, 0, 37); - GropFrontBottom.addBox(0F, 0F, 0F, 18, 1, 2); - GropFrontBottom.setRotationPoint(-46F, 6F, -1F); - GropFrontBottom.setTextureSize(128, 64); - GropFrontBottom.mirror = true; - setRotation(GropFrontBottom, 0F, 0F, 0F); - GripBottom = new ModelRenderer(this, 0, 40); - GripBottom.addBox(0F, 0F, 0F, 28, 1, 2); - GripBottom.setRotationPoint(-28F, 8F, -1F); - GripBottom.setTextureSize(128, 64); - GripBottom.mirror = true; - setRotation(GripBottom, 0F, 0F, 0F); - Bolt = new ModelRenderer(this, 0, 43); - Bolt.addBox(0F, 0F, 0F, 10, 2, 2); - Bolt.setRotationPoint(3F, 2F, -1F); - Bolt.setTextureSize(128, 64); - Bolt.mirror = true; - setRotation(Bolt, 0F, 0F, 0F); - ChamberFront = new ModelRenderer(this, 0, 47); - ChamberFront.addBox(0F, 0F, 0F, 3, 1, 3); - ChamberFront.setRotationPoint(0F, 1.5F, -1.5F); - ChamberFront.setTextureSize(128, 64); - ChamberFront.mirror = true; - setRotation(ChamberFront, 0F, 0F, 0F); - ChamberBack = new ModelRenderer(this, 12, 47); - ChamberBack.addBox(0F, 0F, 0F, 3, 1, 3); - ChamberBack.setRotationPoint(8F, 1.5F, -1.5F); - ChamberBack.setTextureSize(128, 64); - ChamberBack.mirror = true; - setRotation(ChamberBack, 0F, 0F, 0F); - BodyBack = new ModelRenderer(this, 0, 51); - BodyBack.addBox(0F, 0F, 0F, 4, 6, 4); - BodyBack.setRotationPoint(11F, 3.5F, -2F); - BodyBack.setTextureSize(128, 64); - BodyBack.mirror = true; - setRotation(BodyBack, 0F, 0F, 0F); - LeverTip = new ModelRenderer(this, 24, 43); - LeverTip.addBox(0F, -1F, 3F, 2, 2, 2); - LeverTip.setRotationPoint(11F, 3F, 0F); - LeverTip.setTextureSize(128, 64); - LeverTip.mirror = true; - setRotation(LeverTip, -0.4363323F, 0F, 0F); - Lever = new ModelRenderer(this, 32, 43); - Lever.addBox(0F, -0.5F, 0F, 1, 1, 4); - Lever.setRotationPoint(11.5F, 3F, 0F); - Lever.setTextureSize(128, 64); - Lever.mirror = true; - setRotation(Lever, -0.4363323F, 0F, 0F); - HandleFront = new ModelRenderer(this, 16, 51); - HandleFront.addBox(0F, 0F, 0F, 9, 5, 4); - HandleFront.setRotationPoint(15F, 4.5F, -2F); - HandleFront.setTextureSize(128, 64); - HandleFront.mirror = true; - setRotation(HandleFront, 0F, 0F, 0.4363323F); - Pointer = new ModelRenderer(this, 42, 43); - Pointer.addBox(0F, 0F, 0F, 3, 1, 1); - Pointer.setRotationPoint(-49F, 5.5F, -0.5F); - Pointer.setTextureSize(128, 64); - Pointer.mirror = true; - setRotation(Pointer, 0F, 0F, 0F); - HandleBottom = new ModelRenderer(this, 64, 10); - HandleBottom.addBox(0F, -8F, 0F, 23, 8, 4); - HandleBottom.setRotationPoint(19F, 16F, -2F); - HandleBottom.setTextureSize(128, 64); - HandleBottom.mirror = true; - setRotation(HandleBottom, 0F, 0F, 0F); - HandleGrip = new ModelRenderer(this, 38, 19); - HandleGrip.addBox(0F, 0F, 0F, 2, 5, 4); - HandleGrip.setRotationPoint(17F, 9.5F, -2F); - HandleGrip.setTextureSize(128, 64); - HandleGrip.mirror = true; - setRotation(HandleGrip, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Barrel1.render(f5); - Barrel2.render(f5); - Grip.render(f5); - BodyFront.render(f5); - BodyMain.render(f5); - LeverFront.render(f5); - LeverBottom.render(f5); - LeverMid.render(f5); - Trigger.render(f5); - GripFront.render(f5); - GropFrontBottom.render(f5); - GripBottom.render(f5); - Bolt.render(f5); - ChamberFront.render(f5); - ChamberBack.render(f5); - BodyBack.render(f5); - LeverTip.render(f5); - Lever.render(f5); - HandleFront.render(f5); - Pointer.render(f5); - HandleBottom.render(f5); - HandleGrip.render(f5); - - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_LIGHTING); - - Tessellator tessellator = Tessellator.instance; - int color = 0x00FF00; - - tessellator.startDrawing(3); - tessellator.setColorOpaque_I(color); - tessellator.addVertex(-32F / 16F, 0 + 4F / 16F, 0); - tessellator.addVertex(-150, 0, 0); - tessellator.draw(); - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glPopMatrix(); - } - - public void renderAnim(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, float rot, float tran) { - - LeverTip.rotateAngleX += rot; - Lever.rotateAngleX += rot; - Bolt.offsetX += tran; - LeverTip.offsetX += tran; - Lever.offsetX += tran; - - render(entity, f, f1, f2, f3, f4, f5); - - setRotation(LeverTip, -0.4363323F, 0F, 0F); - setRotation(Lever, -0.4363323F, 0F, 0F); - Bolt.offsetX -= tran; - LeverTip.offsetX -= tran; - Lever.offsetX -= tran; - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelCalBarrel.java b/src/main/java/com/hbm/render/model/ModelCalBarrel.java deleted file mode 100644 index 81bf3b31e..000000000 --- a/src/main/java/com/hbm/render/model/ModelCalBarrel.java +++ /dev/null @@ -1,108 +0,0 @@ -// Date: 24.10.2018 09:56:30 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelCalBarrel extends ModelBase { - // fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - - public ModelCalBarrel() { - textureWidth = 128; - textureHeight = 32; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 30, 6, 3); - Shape1.setRotationPoint(-30F, 0F, -1.5F); - Shape1.setTextureSize(128, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 19); - Shape2.addBox(0F, 0F, 0F, 30, 3, 6); - Shape2.setRotationPoint(-30F, 1.5F, -3F); - Shape2.setTextureSize(128, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 9); - Shape3.addBox(0F, 0F, 0F, 30, 5, 5); - Shape3.setRotationPoint(-30F, 0.5F, -2.5F); - Shape3.setTextureSize(128, 32); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 0, 28); - Shape4.addBox(0F, 0F, 0F, 1, 2, 2); - Shape4.setRotationPoint(-30.5F, 0.5F, -1F); - Shape4.setTextureSize(128, 32); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape5 = new ModelRenderer(this, 6, 28); - Shape5.addBox(0F, 0F, 0F, 3, 2, 2); - Shape5.setRotationPoint(-33F, 3.5F, -1F); - Shape5.setTextureSize(128, 32); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0F); - Shape6 = new ModelRenderer(this, 66, 0); - Shape6.addBox(0F, 0F, 0F, 4, 2, 4); - Shape6.setRotationPoint(-20F, -1F, -2F); - Shape6.setTextureSize(128, 32); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - Shape7 = new ModelRenderer(this, 82, 0); - Shape7.addBox(0F, -1F, -4F, 4, 1, 4); - Shape7.setRotationPoint(-20F, -1F, 2F); - Shape7.setTextureSize(128, 32); - Shape7.mirror = true; - setRotation(Shape7, -0.3490659F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - } - - public void renderAll(float f5) { - GL11.glPushMatrix(); - GL11.glTranslated(0, 1D/16D * 1, 0); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - GL11.glPopMatrix(); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelCalDualStock.java b/src/main/java/com/hbm/render/model/ModelCalDualStock.java deleted file mode 100644 index a9b94fdfd..000000000 --- a/src/main/java/com/hbm/render/model/ModelCalDualStock.java +++ /dev/null @@ -1,243 +0,0 @@ -// Date: 24.10.2018 10:31:22 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelCalDualStock extends ModelBase { - // fields - ModelRenderer Shape8; - ModelRenderer Shape9; - ModelRenderer Shape10; - ModelRenderer Shape11; - ModelRenderer Shape12; - ModelRenderer Shape13; - ModelRenderer Shape14; - ModelRenderer Shape15; - ModelRenderer Shape16; - ModelRenderer Shape17; - ModelRenderer Shape18; - ModelRenderer Shape19; - ModelRenderer Shape20; - ModelRenderer Shape21; - ModelRenderer Shape22; - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - - public ModelCalDualStock() { - textureWidth = 64; - textureHeight = 32; - - Shape8 = new ModelRenderer(this, 0, 0); - Shape8.addBox(0F, 0F, 0F, 15, 6, 3); - Shape8.setRotationPoint(0F, 1F, -1.5F); - Shape8.setTextureSize(64, 32); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0F, 0F); - Shape9 = new ModelRenderer(this, 0, 9); - Shape9.addBox(0F, 0F, 0F, 6, 1, 2); - Shape9.setRotationPoint(7F, 7F, -1F); - Shape9.setTextureSize(64, 32); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, 0F); - Shape10 = new ModelRenderer(this, 0, 12); - Shape10.addBox(0F, 0F, 0F, 2, 5, 2); - Shape10.setRotationPoint(10F, 8F, -1F); - Shape10.setTextureSize(64, 32); - Shape10.mirror = true; - setRotation(Shape10, 0F, 0F, -0.2617994F); - Shape11 = new ModelRenderer(this, 0, 26); - Shape11.addBox(0F, 0F, 0F, 3, 4, 2); - Shape11.setRotationPoint(19F, 3F, -1F); - Shape11.setTextureSize(64, 32); - Shape11.mirror = true; - setRotation(Shape11, 0F, 0F, 0F); - Shape12 = new ModelRenderer(this, 0, 22); - Shape12.addBox(-4F, 0F, 0F, 4, 2, 2); - Shape12.setRotationPoint(19F, 3F, -1F); - Shape12.setTextureSize(64, 32); - Shape12.mirror = true; - setRotation(Shape12, 0F, 0F, -0.1115358F); - Shape13 = new ModelRenderer(this, 10, 28); - Shape13.addBox(-5F, -2F, 0F, 5, 2, 2); - Shape13.setRotationPoint(19F, 7F, -1F); - Shape13.setTextureSize(64, 32); - Shape13.mirror = true; - setRotation(Shape13, 0F, 0F, 0.2617994F); - Shape14 = new ModelRenderer(this, 12, 23); - Shape14.addBox(0F, 0F, 0F, 1, 3, 2); - Shape14.setRotationPoint(22F, 3F, -1F); - Shape14.setTextureSize(64, 32); - Shape14.mirror = true; - setRotation(Shape14, 0F, 0F, 0.3490659F); - Shape15 = new ModelRenderer(this, 42, 0); - Shape15.addBox(0F, 0F, 0F, 3, 5, 8); - Shape15.setRotationPoint(3F, 4F, -9.5F); - Shape15.setTextureSize(64, 32); - Shape15.mirror = true; - setRotation(Shape15, 0F, 0F, 0F); - Shape16 = new ModelRenderer(this, 36, 0); - Shape16.addBox(0F, 0F, 0F, 2, 1, 1); - Shape16.setRotationPoint(3.5F, 3.5F, -4F); - Shape16.setTextureSize(64, 32); - Shape16.mirror = true; - setRotation(Shape16, 0F, 0F, 0F); - Shape17 = new ModelRenderer(this, 36, 0); - Shape17.addBox(0F, 0F, 0F, 2, 1, 1); - Shape17.setRotationPoint(3.5F, 2.7F, -3.5F); - Shape17.setTextureSize(64, 32); - Shape17.mirror = true; - setRotation(Shape17, 0F, 0F, 0F); - Shape18 = new ModelRenderer(this, 36, 0); - Shape18.addBox(0F, 0F, 0F, 2, 1, 1); - Shape18.setRotationPoint(3.5F, 2.2F, -2.8F); - Shape18.setTextureSize(64, 32); - Shape18.mirror = true; - setRotation(Shape18, 0F, 0F, 0F); - Shape19 = new ModelRenderer(this, 36, 0); - Shape19.addBox(0F, 0F, 0F, 2, 1, 1); - Shape19.setRotationPoint(3.5F, 1.8F, -2F); - Shape19.setTextureSize(64, 32); - Shape19.mirror = true; - setRotation(Shape19, 0F, 0F, 0F); - Shape20 = new ModelRenderer(this, 16, 9); - Shape20.addBox(0F, 0F, 0F, 6, 1, 4); - Shape20.setRotationPoint(7F, 4F, -2F); - Shape20.setTextureSize(64, 32); - Shape20.mirror = true; - setRotation(Shape20, 0F, 0F, 0F); - Shape21 = new ModelRenderer(this, 8, 12); - Shape21.addBox(0F, 0F, 0F, 2, 1, 1); - Shape21.setRotationPoint(11F, 0F, 0F); - Shape21.setTextureSize(64, 32); - Shape21.mirror = true; - setRotation(Shape21, 0F, 0F, 0F); - Shape22 = new ModelRenderer(this, 8, 14); - Shape22.addBox(0F, 0F, 0F, 2, 1, 2); - Shape22.setRotationPoint(11F, -1F, 0F); - Shape22.setTextureSize(64, 32); - Shape22.mirror = true; - setRotation(Shape22, -0.3490659F, 0F, 0F); - Shape1 = new ModelRenderer(this, 42, 0); - Shape1.addBox(0F, 0F, 0F, 3, 5, 8); - Shape1.setRotationPoint(3F, 4F, 1.5F); - Shape1.setTextureSize(64, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 36, 0); - Shape2.addBox(0F, 0F, 0F, 2, 1, 1); - Shape2.setRotationPoint(3.5F, 3.5F, 3F); - Shape2.setTextureSize(64, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 36, 0); - Shape3.addBox(0F, 0F, 0F, 2, 1, 1); - Shape3.setRotationPoint(3.5F, 2.7F, 2.5F); - Shape3.setTextureSize(64, 32); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 36, 0); - Shape4.addBox(0F, 0F, 0F, 2, 1, 1); - Shape4.setRotationPoint(3.5F, 2.2F, 1.8F); - Shape4.setTextureSize(64, 32); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape5 = new ModelRenderer(this, 36, 0); - Shape5.addBox(0F, 0F, 0F, 2, 1, 1); - Shape5.setRotationPoint(3.5F, 1.8F, 1F); - Shape5.setTextureSize(64, 32); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0F); - Shape6 = new ModelRenderer(this, 18, 17); - Shape6.addBox(0F, 0F, 0F, 1, 5, 6); - Shape6.setRotationPoint(-1F, 1F, -3F); - Shape6.setTextureSize(64, 32); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - Shape7 = new ModelRenderer(this, 32, 13); - Shape7.addBox(0F, 0F, 0F, 1, 4, 15); - Shape7.setRotationPoint(-2F, 2F, -7.5F); - Shape7.setTextureSize(64, 32); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape8.render(f5); - Shape9.render(f5); - Shape10.render(f5); - Shape11.render(f5); - Shape12.render(f5); - Shape13.render(f5); - Shape14.render(f5); - Shape15.render(f5); - Shape16.render(f5); - Shape17.render(f5); - Shape18.render(f5); - Shape19.render(f5); - Shape20.render(f5); - Shape21.render(f5); - Shape22.render(f5); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - } - - public void renderAll(float f5) { - GL11.glPushMatrix(); - GL11.glTranslated(1D/16D * 2, 0, 0); - Shape8.render(f5); - Shape9.render(f5); - Shape10.render(f5); - Shape11.render(f5); - Shape12.render(f5); - Shape13.render(f5); - Shape14.render(f5); - Shape15.render(f5); - Shape16.render(f5); - Shape17.render(f5); - Shape18.render(f5); - Shape19.render(f5); - Shape20.render(f5); - Shape21.render(f5); - Shape22.render(f5); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - GL11.glPopMatrix(); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelCalStock.java b/src/main/java/com/hbm/render/model/ModelCalStock.java deleted file mode 100644 index f6902b24c..000000000 --- a/src/main/java/com/hbm/render/model/ModelCalStock.java +++ /dev/null @@ -1,175 +0,0 @@ -// Date: 24.10.2018 10:23:38 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelCalStock extends ModelBase { - // fields - ModelRenderer Shape8; - ModelRenderer Shape9; - ModelRenderer Shape10; - ModelRenderer Shape11; - ModelRenderer Shape12; - ModelRenderer Shape13; - ModelRenderer Shape14; - ModelRenderer Shape15; - ModelRenderer Shape16; - ModelRenderer Shape17; - ModelRenderer Shape18; - ModelRenderer Shape19; - ModelRenderer Shape20; - ModelRenderer Shape21; - ModelRenderer Shape22; - - public ModelCalStock() { - textureWidth = 64; - textureHeight = 32; - - Shape8 = new ModelRenderer(this, 0, 0); - Shape8.addBox(0F, 0F, 0F, 15, 6, 3); - Shape8.setRotationPoint(0F, 1F, -1.5F); - Shape8.setTextureSize(64, 32); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0F, 0F); - Shape9 = new ModelRenderer(this, 0, 9); - Shape9.addBox(0F, 0F, 0F, 6, 1, 2); - Shape9.setRotationPoint(7F, 7F, -1F); - Shape9.setTextureSize(64, 32); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, 0F); - Shape10 = new ModelRenderer(this, 0, 12); - Shape10.addBox(0F, 0F, 0F, 2, 5, 2); - Shape10.setRotationPoint(10F, 8F, -1F); - Shape10.setTextureSize(64, 32); - Shape10.mirror = true; - setRotation(Shape10, 0F, 0F, -0.2617994F); - Shape11 = new ModelRenderer(this, 0, 26); - Shape11.addBox(0F, 0F, 0F, 3, 4, 2); - Shape11.setRotationPoint(19F, 3F, -1F); - Shape11.setTextureSize(64, 32); - Shape11.mirror = true; - setRotation(Shape11, 0F, 0F, 0F); - Shape12 = new ModelRenderer(this, 0, 22); - Shape12.addBox(-4F, 0F, 0F, 4, 2, 2); - Shape12.setRotationPoint(19F, 3F, -1F); - Shape12.setTextureSize(64, 32); - Shape12.mirror = true; - setRotation(Shape12, 0F, 0F, -0.1115358F); - Shape13 = new ModelRenderer(this, 10, 28); - Shape13.addBox(-5F, -2F, 0F, 5, 2, 2); - Shape13.setRotationPoint(19F, 7F, -1F); - Shape13.setTextureSize(64, 32); - Shape13.mirror = true; - setRotation(Shape13, 0F, 0F, 0.2617994F); - Shape14 = new ModelRenderer(this, 12, 23); - Shape14.addBox(0F, 0F, 0F, 1, 3, 2); - Shape14.setRotationPoint(22F, 3F, -1F); - Shape14.setTextureSize(64, 32); - Shape14.mirror = true; - setRotation(Shape14, 0F, 0F, 0.3490659F); - Shape15 = new ModelRenderer(this, 42, 0); - Shape15.addBox(0F, 0F, 0F, 3, 5, 8); - Shape15.setRotationPoint(3F, 4F, -9.5F); - Shape15.setTextureSize(64, 32); - Shape15.mirror = true; - setRotation(Shape15, 0F, 0F, 0F); - Shape16 = new ModelRenderer(this, 36, 0); - Shape16.addBox(0F, 0F, 0F, 2, 1, 1); - Shape16.setRotationPoint(3.5F, 3.5F, -4F); - Shape16.setTextureSize(64, 32); - Shape16.mirror = true; - setRotation(Shape16, 0F, 0F, 0F); - Shape17 = new ModelRenderer(this, 36, 0); - Shape17.addBox(0F, 0F, 0F, 2, 1, 1); - Shape17.setRotationPoint(3.5F, 2.7F, -3.5F); - Shape17.setTextureSize(64, 32); - Shape17.mirror = true; - setRotation(Shape17, 0F, 0F, 0F); - Shape18 = new ModelRenderer(this, 36, 0); - Shape18.addBox(0F, 0F, 0F, 2, 1, 1); - Shape18.setRotationPoint(3.5F, 2.2F, -2.8F); - Shape18.setTextureSize(64, 32); - Shape18.mirror = true; - setRotation(Shape18, 0F, 0F, 0F); - Shape19 = new ModelRenderer(this, 36, 0); - Shape19.addBox(0F, 0F, 0F, 2, 1, 1); - Shape19.setRotationPoint(3.5F, 1.8F, -2F); - Shape19.setTextureSize(64, 32); - Shape19.mirror = true; - setRotation(Shape19, 0F, 0F, 0F); - Shape20 = new ModelRenderer(this, 16, 9); - Shape20.addBox(0F, 0F, 0F, 6, 1, 4); - Shape20.setRotationPoint(7F, 4F, -2F); - Shape20.setTextureSize(64, 32); - Shape20.mirror = true; - setRotation(Shape20, 0F, 0F, 0F); - Shape21 = new ModelRenderer(this, 8, 12); - Shape21.addBox(0F, 0F, 0F, 2, 1, 1); - Shape21.setRotationPoint(11F, 0F, 0F); - Shape21.setTextureSize(64, 32); - Shape21.mirror = true; - setRotation(Shape21, 0F, 0F, 0F); - Shape22 = new ModelRenderer(this, 8, 14); - Shape22.addBox(0F, 0F, 0F, 2, 1, 2); - Shape22.setRotationPoint(11F, -1F, 0F); - Shape22.setTextureSize(64, 32); - Shape22.mirror = true; - setRotation(Shape22, -0.3490659F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape8.render(f5); - Shape9.render(f5); - Shape10.render(f5); - Shape11.render(f5); - Shape12.render(f5); - Shape13.render(f5); - Shape14.render(f5); - Shape15.render(f5); - Shape16.render(f5); - Shape17.render(f5); - Shape18.render(f5); - Shape19.render(f5); - Shape20.render(f5); - Shape21.render(f5); - Shape22.render(f5); - } - - public void renderAll(float f5) { - Shape8.render(f5); - Shape9.render(f5); - Shape10.render(f5); - Shape11.render(f5); - Shape12.render(f5); - Shape13.render(f5); - Shape14.render(f5); - Shape15.render(f5); - Shape16.render(f5); - Shape17.render(f5); - Shape18.render(f5); - Shape19.render(f5); - Shape20.render(f5); - Shape21.render(f5); - Shape22.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelCryolator.java b/src/main/java/com/hbm/render/model/ModelCryolator.java deleted file mode 100644 index e73a18fca..000000000 --- a/src/main/java/com/hbm/render/model/ModelCryolator.java +++ /dev/null @@ -1,417 +0,0 @@ -// Date: 26.11.2016 20:13:04 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelCryolator extends ModelBase { - // fields - ModelRenderer Body; - ModelRenderer Barrel1; - ModelRenderer Barrel2; - ModelRenderer BarrelBack; - ModelRenderer BarrelNozzle; - ModelRenderer TankF1; - ModelRenderer TankF2; - ModelRenderer TankF3; - ModelRenderer TankB1; - ModelRenderer TankB2; - ModelRenderer TankB3; - ModelRenderer Drum1; - ModelRenderer Drum2; - ModelRenderer BodyBACK; - ModelRenderer PipeLPlate; - ModelRenderer BodyBottom; - ModelRenderer Handle; - ModelRenderer Trigger; - ModelRenderer CoolingBlock; - ModelRenderer BodyCenter; - ModelRenderer PipeRPlate; - ModelRenderer StockTop; - ModelRenderer StockFront; - ModelRenderer StockBack; - ModelRenderer StockBottom; - ModelRenderer PipeLPlateB; - ModelRenderer PipeRPlateB; - ModelRenderer StockConnector; - ModelRenderer PipeTL; - ModelRenderer PipeBL; - ModelRenderer PipeTR; - ModelRenderer PipeBR; - ModelRenderer PipeL; - ModelRenderer PipiR; - ModelRenderer ConnectorFront; - ModelRenderer ConnectorBFront; - ModelRenderer ConnectorBBack; - ModelRenderer Connector; - ModelRenderer ConnectorStrut; - ModelRenderer PipeLarge; - ModelRenderer PipeLargeBack; - ModelRenderer PipiLargeConnector; - ModelRenderer PlateFront; - ModelRenderer ScaffoldFront; - ModelRenderer ScaffoldBottom; - ModelRenderer ScaffoldBack; - - public ModelCryolator() { - textureWidth = 128; - textureHeight = 64; - - Body = new ModelRenderer(this, 0, 6); - Body.addBox(0F, 0F, 0F, 15, 2, 3); - Body.setRotationPoint(-12F, 0F, -1.5F); - Body.setTextureSize(128, 64); - Body.mirror = true; - setRotation(Body, 0F, 0F, 0F); - Barrel1 = new ModelRenderer(this, 0, 57); - Barrel1.addBox(0F, 0F, 0F, 2, 4, 3); - Barrel1.setRotationPoint(-15F, 0F, -1.5F); - Barrel1.setTextureSize(128, 64); - Barrel1.mirror = true; - setRotation(Barrel1, 0F, 0F, 0F); - Barrel2 = new ModelRenderer(this, 10, 57); - Barrel2.addBox(0F, 0F, 0F, 2, 3, 4); - Barrel2.setRotationPoint(-15F, 0.5F, -2F); - Barrel2.setTextureSize(128, 64); - Barrel2.mirror = true; - setRotation(Barrel2, 0F, 0F, 0F); - BarrelBack = new ModelRenderer(this, 0, 51); - BarrelBack.addBox(0F, 0F, 0F, 1, 3, 3); - BarrelBack.setRotationPoint(-13F, 0.5F, -1.5F); - BarrelBack.setTextureSize(128, 64); - BarrelBack.mirror = true; - setRotation(BarrelBack, 0F, 0F, 0F); - BarrelNozzle = new ModelRenderer(this, 0, 49); - BarrelNozzle.addBox(0F, 0F, 0F, 1, 1, 1); - BarrelNozzle.setRotationPoint(-15.5F, 0.5F, -0.5F); - BarrelNozzle.setTextureSize(128, 64); - BarrelNozzle.mirror = true; - setRotation(BarrelNozzle, 0F, 0F, 0F); - TankF1 = new ModelRenderer(this, 22, 55); - TankF1.addBox(0F, 0F, 0F, 4, 5, 4); - TankF1.setRotationPoint(-10.5F, 2F, -2F); - TankF1.setTextureSize(128, 64); - TankF1.mirror = true; - setRotation(TankF1, 0F, 0F, 0F); - TankF2 = new ModelRenderer(this, 38, 56); - TankF2.addBox(0F, 0F, 0F, 6, 4, 4); - TankF2.setRotationPoint(-11.5F, 2.5F, -2F); - TankF2.setTextureSize(128, 64); - TankF2.mirror = true; - setRotation(TankF2, 0F, 0F, 0F); - TankF3 = new ModelRenderer(this, 58, 55); - TankF3.addBox(0F, 0F, 0F, 4, 4, 5); - TankF3.setRotationPoint(-10.5F, 2.5F, -2.5F); - TankF3.setTextureSize(128, 64); - TankF3.mirror = true; - setRotation(TankF3, 0F, 0F, 0F); - TankB1 = new ModelRenderer(this, 8, 52); - TankB1.addBox(0F, 0F, 0F, 4, 2, 3); - TankB1.setRotationPoint(-5F, 3F, -1.5F); - TankB1.setTextureSize(128, 64); - TankB1.mirror = true; - setRotation(TankB1, 0F, 0F, 0F); - TankB2 = new ModelRenderer(this, 0, 42); - TankB2.addBox(0F, 0F, 0F, 2, 4, 3); - TankB2.setRotationPoint(-4F, 2F, -1.5F); - TankB2.setTextureSize(128, 64); - TankB2.mirror = true; - setRotation(TankB2, 0F, 0F, 0F); - TankB3 = new ModelRenderer(this, 0, 36); - TankB3.addBox(0F, 0F, 0F, 2, 2, 4); - TankB3.setRotationPoint(-4F, 3F, -2F); - TankB3.setTextureSize(128, 64); - TankB3.mirror = true; - setRotation(TankB3, 0F, 0F, 0F); - Drum1 = new ModelRenderer(this, 38, 49); - Drum1.addBox(0F, 0F, 0F, 6, 4, 3); - Drum1.setRotationPoint(-2F, 6F, -4F); - Drum1.setTextureSize(128, 64); - Drum1.mirror = true; - setRotation(Drum1, 0F, 0F, 0F); - Drum2 = new ModelRenderer(this, 24, 46); - Drum2.addBox(0F, 0F, 0F, 4, 6, 3); - Drum2.setRotationPoint(-1F, 5F, -4F); - Drum2.setTextureSize(128, 64); - Drum2.mirror = true; - setRotation(Drum2, 0F, 0F, 0F); - BodyBACK = new ModelRenderer(this, 38, 44); - BodyBACK.addBox(0F, 0F, 0F, 7, 2, 3); - BodyBACK.setRotationPoint(3F, 0F, -1.5F); - BodyBACK.setTextureSize(128, 64); - BodyBACK.mirror = true; - setRotation(BodyBACK, 0F, 0F, 0.2617994F); - PipeLPlate = new ModelRenderer(this, 10, 46); - PipeLPlate.addBox(0F, 0F, 0F, 2, 4, 2); - PipeLPlate.setRotationPoint(-1F, 1F, -3F); - PipeLPlate.setTextureSize(128, 64); - PipeLPlate.mirror = true; - setRotation(PipeLPlate, 0F, 0F, 0F); - BodyBottom = new ModelRenderer(this, 26, 41); - BodyBottom.addBox(0F, 0F, 0F, 4, 3, 2); - BodyBottom.setRotationPoint(3F, 2F, -1F); - BodyBottom.setTextureSize(128, 64); - BodyBottom.mirror = true; - setRotation(BodyBottom, 0F, 0F, 0F); - Handle = new ModelRenderer(this, 0, 29); - Handle.addBox(0F, 0F, 0F, 2, 5, 2); - Handle.setRotationPoint(5F, 5F, -1F); - Handle.setTextureSize(128, 64); - Handle.mirror = true; - setRotation(Handle, 0F, 0F, -0.2617994F); - Trigger = new ModelRenderer(this, 10, 43); - Trigger.addBox(0F, 0F, 0F, 3, 2, 1); - Trigger.setRotationPoint(3F, 5F, -0.5F); - Trigger.setTextureSize(128, 64); - Trigger.mirror = true; - setRotation(Trigger, 0F, 0F, 0F); - CoolingBlock = new ModelRenderer(this, 58, 46); - CoolingBlock.addBox(0F, 0F, 0F, 3, 6, 3); - CoolingBlock.setRotationPoint(-1F, 6F, 0.5F); - CoolingBlock.setTextureSize(128, 64); - CoolingBlock.mirror = true; - setRotation(CoolingBlock, 0F, 0F, 0.2617994F); - BodyCenter = new ModelRenderer(this, 12, 33); - BodyCenter.addBox(0F, 0F, 0F, 3, 8, 2); - BodyCenter.setRotationPoint(-0.5F, 2F, -1F); - BodyCenter.setTextureSize(128, 64); - BodyCenter.mirror = true; - setRotation(BodyCenter, 0F, 0F, 0F); - PipeRPlate = new ModelRenderer(this, 0, 21); - PipeRPlate.addBox(0F, 0F, 0F, 2, 6, 2); - PipeRPlate.setRotationPoint(-1F, 1F, 1F); - PipeRPlate.setTextureSize(128, 64); - PipeRPlate.mirror = true; - setRotation(PipeRPlate, 0F, 0F, 0F); - StockTop = new ModelRenderer(this, 38, 39); - StockTop.addBox(0F, 0F, 0F, 6, 2, 3); - StockTop.setRotationPoint(9F, 1.8F, -1.5F); - StockTop.setTextureSize(128, 64); - StockTop.mirror = true; - setRotation(StockTop, 0F, 0F, 0F); - StockFront = new ModelRenderer(this, 30, 34); - StockFront.addBox(0F, 0F, 0F, 2, 5, 2); - StockFront.setRotationPoint(10F, 3F, -1F); - StockFront.setTextureSize(128, 64); - StockFront.mirror = true; - setRotation(StockFront, 0F, 0F, 0F); - StockBack = new ModelRenderer(this, 38, 32); - StockBack.addBox(0F, 0F, 0F, 2, 5, 2); - StockBack.setRotationPoint(13F, 3F, -1F); - StockBack.setTextureSize(128, 64); - StockBack.mirror = true; - setRotation(StockBack, 0F, 0F, 0F); - StockBottom = new ModelRenderer(this, 46, 35); - StockBottom.addBox(0F, 0F, 0F, 1, 2, 2); - StockBottom.setRotationPoint(12F, 6F, -1F); - StockBottom.setTextureSize(128, 64); - StockBottom.mirror = true; - setRotation(StockBottom, 0F, 0F, 0F); - PipeLPlateB = new ModelRenderer(this, 8, 28); - PipeLPlateB.addBox(0F, 0F, 0F, 3, 3, 2); - PipeLPlateB.setRotationPoint(4F, 2F, -3F); - PipeLPlateB.setTextureSize(128, 64); - PipeLPlateB.mirror = true; - setRotation(PipeLPlateB, 0F, 0F, 0F); - PipeRPlateB = new ModelRenderer(this, 8, 23); - PipeRPlateB.addBox(0F, 0F, 0F, 3, 3, 2); - PipeRPlateB.setRotationPoint(4F, 2F, 1F); - PipeRPlateB.setTextureSize(128, 64); - PipeRPlateB.mirror = true; - setRotation(PipeRPlateB, 0F, 0F, 0F); - StockConnector = new ModelRenderer(this, 22, 30); - StockConnector.addBox(0F, -1F, 0F, 5, 1, 3); - StockConnector.setRotationPoint(6F, 5F, -1.5F); - StockConnector.setTextureSize(128, 64); - StockConnector.mirror = true; - setRotation(StockConnector, 0F, 0F, 0.3490659F); - PipeTL = new ModelRenderer(this, 58, 44); - PipeTL.addBox(0F, 0F, 0F, 12, 1, 1); - PipeTL.setRotationPoint(-3F, 2.3F, -2.5F); - PipeTL.setTextureSize(128, 64); - PipeTL.mirror = true; - setRotation(PipeTL, 0F, 0F, 0F); - PipeBL = new ModelRenderer(this, 56, 40); - PipeBL.addBox(0F, 0F, 0F, 10, 1, 1); - PipeBL.setRotationPoint(-1F, 3.7F, -2.5F); - PipeBL.setTextureSize(128, 64); - PipeBL.mirror = true; - setRotation(PipeBL, 0F, 0F, 0F); - PipeTR = new ModelRenderer(this, 56, 42); - PipeTR.addBox(0F, 0F, 0F, 12, 1, 1); - PipeTR.setRotationPoint(-3F, 2.3F, 1.5F); - PipeTR.setTextureSize(128, 64); - PipeTR.mirror = true; - setRotation(PipeTR, 0F, 0F, 0F); - PipeBR = new ModelRenderer(this, 56, 38); - PipeBR.addBox(0F, 0F, 0F, 10, 1, 1); - PipeBR.setRotationPoint(-1F, 3.7F, 1.5F); - PipeBR.setTextureSize(128, 64); - PipeBR.mirror = true; - setRotation(PipeBR, 0F, 0F, 0F); - PipeL = new ModelRenderer(this, 52, 36); - PipeL.addBox(0F, 0F, 0F, 11, 1, 1); - PipeL.setRotationPoint(-13F, 1.5F, -2.5F); - PipeL.setTextureSize(128, 64); - PipeL.mirror = true; - setRotation(PipeL, 0F, 0F, 0F); - PipiR = new ModelRenderer(this, 52, 34); - PipiR.addBox(0F, 0F, 0F, 11, 1, 1); - PipiR.setRotationPoint(-13F, 1.5F, 1.5F); - PipiR.setTextureSize(128, 64); - PipiR.mirror = true; - setRotation(PipiR, 0F, 0F, 0F); - ConnectorFront = new ModelRenderer(this, 0, 17); - ConnectorFront.addBox(0F, 0F, 0F, 3, 3, 1); - ConnectorFront.setRotationPoint(-14.5F, 4F, -0.5F); - ConnectorFront.setTextureSize(128, 64); - ConnectorFront.mirror = true; - setRotation(ConnectorFront, 0F, 0F, 0F); - ConnectorBFront = new ModelRenderer(this, 8, 18); - ConnectorBFront.addBox(0F, 0F, -1F, 1, 4, 1); - ConnectorBFront.setRotationPoint(-14F, 6F, 0.5F); - ConnectorBFront.setTextureSize(128, 64); - ConnectorBFront.mirror = true; - setRotation(ConnectorBFront, -0.7853982F, 0F, 0F); - ConnectorBBack = new ModelRenderer(this, 12, 18); - ConnectorBBack.addBox(0F, 0F, -1F, 1, 4, 1); - ConnectorBBack.setRotationPoint(-3F, 6F, 0.5F); - ConnectorBBack.setTextureSize(128, 64); - ConnectorBBack.mirror = true; - setRotation(ConnectorBBack, -0.7853982F, 0F, 0F); - Connector = new ModelRenderer(this, 18, 26); - Connector.addBox(0F, 3.5F, -1.5F, 12, 2, 2); - Connector.setRotationPoint(-14F, 6F, 0.5F); - Connector.setTextureSize(128, 64); - Connector.mirror = true; - setRotation(Connector, -0.7853982F, 0F, 0F); - ConnectorStrut = new ModelRenderer(this, 18, 24); - ConnectorStrut.addBox(0F, 2F, -1F, 10, 1, 1); - ConnectorStrut.setRotationPoint(-13F, 6F, 0.5F); - ConnectorStrut.setTextureSize(128, 64); - ConnectorStrut.mirror = true; - setRotation(ConnectorStrut, -0.7853982F, 0F, 0F); - PipeLarge = new ModelRenderer(this, 46, 30); - PipeLarge.addBox(0F, 0F, 0F, 8, 2, 2); - PipeLarge.setRotationPoint(-9.5F, 7F, -1F); - PipeLarge.setTextureSize(128, 64); - PipeLarge.mirror = true; - setRotation(PipeLarge, 0F, 0F, 0F); - PipeLargeBack = new ModelRenderer(this, 46, 22); - PipeLargeBack.addBox(0F, 0F, 0F, 2, 7, 1); - PipeLargeBack.setRotationPoint(-4F, 2F, 2F); - PipeLargeBack.setTextureSize(128, 64); - PipeLargeBack.mirror = true; - setRotation(PipeLargeBack, 0F, 0F, 0F); - PipiLargeConnector = new ModelRenderer(this, 40, 23); - PipiLargeConnector.addBox(0F, 0F, 0F, 2, 2, 1); - PipiLargeConnector.setRotationPoint(-4F, 7F, 1F); - PipiLargeConnector.setTextureSize(128, 64); - PipiLargeConnector.mirror = true; - setRotation(PipiLargeConnector, 0F, 0F, 0F); - PlateFront = new ModelRenderer(this, 20, 15); - PlateFront.addBox(0F, 0F, 0F, 1, 4, 5); - PlateFront.setRotationPoint(-13F, 1.5F, -2.5F); - PlateFront.setTextureSize(128, 64); - PlateFront.mirror = true; - setRotation(PlateFront, 0F, 0F, 0.6108652F); - ScaffoldFront = new ModelRenderer(this, 0, 13); - ScaffoldFront.addBox(0F, 0F, 0F, 1, 1, 3); - ScaffoldFront.setRotationPoint(-13F, 7F, -0.5F); - ScaffoldFront.setTextureSize(128, 64); - ScaffoldFront.mirror = true; - setRotation(ScaffoldFront, 0F, 0F, 0F); - ScaffoldBottom = new ModelRenderer(this, 0, 11); - ScaffoldBottom.addBox(0F, 0F, 0F, 8, 1, 1); - ScaffoldBottom.setRotationPoint(-12F, 7F, 1.5F); - ScaffoldBottom.setTextureSize(128, 64); - ScaffoldBottom.mirror = true; - setRotation(ScaffoldBottom, 0F, 0F, 0F); - ScaffoldBack = new ModelRenderer(this, 32, 18); - ScaffoldBack.addBox(0F, 0F, 0F, 1, 5, 1); - ScaffoldBack.setRotationPoint(-5F, 2.5F, 1.5F); - ScaffoldBack.setTextureSize(128, 64); - ScaffoldBack.mirror = true; - setRotation(ScaffoldBack, 0F, 0F, 0F); - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Body.render(f5); - Barrel1.render(f5); - Barrel2.render(f5); - BarrelBack.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - BarrelNozzle.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - TankF1.render(f5); - TankF2.render(f5); - TankF3.render(f5); - TankB1.render(f5); - TankB2.render(f5); - TankB3.render(f5); - Drum1.render(f5); - Drum2.render(f5); - BodyBACK.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - PipeLPlate.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - BodyBottom.render(f5); - Handle.render(f5); - Trigger.render(f5); - CoolingBlock.render(f5); - BodyCenter.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - PipeRPlate.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - StockTop.render(f5); - StockFront.render(f5); - StockBack.render(f5); - StockBottom.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - PipeLPlateB.render(f5); - PipeRPlateB.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - StockConnector.render(f5); - PipeTL.render(f5); - PipeBL.render(f5); - PipeTR.render(f5); - PipeBR.render(f5); - PipeL.render(f5); - PipiR.render(f5); - ConnectorFront.render(f5); - ConnectorBFront.render(f5); - ConnectorBBack.render(f5); - Connector.render(f5); - ConnectorStrut.render(f5); - PipeLarge.render(f5); - PipeLargeBack.render(f5); - PipiLargeConnector.render(f5); - PlateFront.render(f5); - ScaffoldFront.render(f5); - ScaffoldBottom.render(f5); - ScaffoldBack.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelDash.java b/src/main/java/com/hbm/render/model/ModelDash.java deleted file mode 100755 index 24f56ecc2..000000000 --- a/src/main/java/com/hbm/render/model/ModelDash.java +++ /dev/null @@ -1,122 +0,0 @@ -//This File was created with the Minecraft-SMP Modelling Toolbox 2.3.0.0 -// Copyright (C) 2017 Minecraft-SMP.de -// This file is for Flan's Flying Mod Version 4.0.x+ - -// Model: ModelDash -// Model Creator: -// Created on: 01.11.2017 - 20:07:57 -// Last changed on: 01.11.2017 - 20:07:57 - -package com.hbm.render.model; //Path where the model is located - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelDash extends ModelBase //Same as Filename -{ - int textureX = 64; - int textureY = 64; - ModelRenderer[] bodyModel; - - public ModelDash() //Same as Filename - { - textureWidth = 64; - textureHeight = 64; - bodyModel = new ModelRenderer[16]; - bodyModel[0] = new ModelRenderer(this, 1, 1); // Box 0 - bodyModel[1] = new ModelRenderer(this, 25, 1); // Box 1 - bodyModel[2] = new ModelRenderer(this, 1, 9); // Box 2 - bodyModel[3] = new ModelRenderer(this, 33, 9); // Box 3 - bodyModel[4] = new ModelRenderer(this, 57, 1); // Box 4 - bodyModel[5] = new ModelRenderer(this, 1, 17); // Box 5 - bodyModel[6] = new ModelRenderer(this, 9, 17); // Box 6 - bodyModel[7] = new ModelRenderer(this, 17, 17); // Box 7 - bodyModel[8] = new ModelRenderer(this, 41, 17); // Box 8 - bodyModel[9] = new ModelRenderer(this, 1, 25); // Box 9 - bodyModel[10] = new ModelRenderer(this, 17, 25); // Box 10 - bodyModel[11] = new ModelRenderer(this, 41, 25); // Box 11 - bodyModel[12] = new ModelRenderer(this, 49, 25); // Box 12 - bodyModel[13] = new ModelRenderer(this, 1, 33); // Box 13 - bodyModel[14] = new ModelRenderer(this, 17, 33); // Box 14 - bodyModel[15] = new ModelRenderer(this, 25, 33); // Box 16 - - bodyModel[0].addBox(0F, 0F, 0F, 7, 3, 3, 0F); // Box 0 - bodyModel[0].setRotationPoint(0F, 0F, -1.5F); - - bodyModel[1].addBox(0F, 0F, -1F, 12, 3, 2, 0F); // Box 1 - bodyModel[1].setRotationPoint(-12F, 1F, 0F); - - bodyModel[2].addBox(0F, 0F, -1F, 12, 3, 2, 0F); // Box 2 - bodyModel[2].setRotationPoint(-12F, 1F, 0F); - bodyModel[2].rotateAngleX = 2.0943951F; - - bodyModel[3].addBox(0F, 0F, -1F, 12, 3, 2, 0F); // Box 3 - bodyModel[3].setRotationPoint(-12F, 1F, 0F); - bodyModel[3].rotateAngleX = -2.0943951F; - - bodyModel[4].addBox(0F, 1.5F, -0.5F, 1, 1, 1, 0F); // Box 4 - bodyModel[4].setRotationPoint(-12.5F, 1F, 0F); - - bodyModel[5].addBox(0F, 1.5F, -0.5F, 1, 1, 1, 0F); // Box 5 - bodyModel[5].setRotationPoint(-12.5F, 1F, 0F); - bodyModel[5].rotateAngleX = 2.0943951F; - - bodyModel[6].addBox(0F, 1.5F, -0.5F, 1, 1, 1, 0F); // Box 6 - bodyModel[6].setRotationPoint(-12.5F, 1F, 0F); - bodyModel[6].rotateAngleX = -2.0943951F; - - bodyModel[7].addBox(0F, 0F, 0F, 7, 1, 2, 0F); // Box 7 - bodyModel[7].setRotationPoint(0F, -0.5F, -1F); - - bodyModel[8].addBox(0F, 0F, 0F, 7, 2, 2, 0F); // Box 8 - bodyModel[8].setRotationPoint(7F, 0.5F, -1F); - - bodyModel[9].addBox(0F, 0F, 0F, 2, 2, 2, 0F); // Box 9 - bodyModel[9].setRotationPoint(12F, 2.5F, -1F); - - bodyModel[10].addBox(-6F, -2F, 0F, 6, 2, 2, 0F); // Box 10 - bodyModel[10].setRotationPoint(12F, 4.5F, -1F); - bodyModel[10].rotateAngleZ = 0.29670597F; - - bodyModel[11].addBox(0F, 0F, 0F, 1, 3, 1, 0F); // Box 11 - bodyModel[11].setRotationPoint(6F, 3F, -0.5F); - bodyModel[11].rotateAngleZ = -0.26179939F; - - bodyModel[12].addBox(0F, 0F, 0F, 5, 2, 2, 0F); // Box 12 - bodyModel[12].setRotationPoint(0F, 3F, -1F); - - bodyModel[13].addBox(0F, 0F, 0F, 6, 1, 1, 0F); // Box 13 - bodyModel[13].setRotationPoint(2F, 5F, -0.5F); - - bodyModel[14].addBox(0F, 0F, 0F, 1, 4, 1, 0F); // Box 14 - bodyModel[14].setRotationPoint(0.5F, 1F, -1.5F); - bodyModel[14].rotateAngleX = -0.61086524F; - - bodyModel[15].addBox(0F, 0F, 0F, 3, 1, 1, 0F); // Box 16 - bodyModel[15].setRotationPoint(3F, -1F, -0.5F); - - for(int i = 0; i < 16; i++) - { - bodyModel[i].setTextureSize(textureX, textureY); - bodyModel[i].mirror = true; - } - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - for(int i = 0; i < 16; i++) - { - bodyModel[i].render(f5); - } - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/render/model/ModelDefabricator.java b/src/main/java/com/hbm/render/model/ModelDefabricator.java deleted file mode 100755 index bc156eb79..000000000 --- a/src/main/java/com/hbm/render/model/ModelDefabricator.java +++ /dev/null @@ -1,231 +0,0 @@ -//This File was created with the Minecraft-SMP Modelling Toolbox 2.3.0.0 -// Copyright (C) 2017 Minecraft-SMP.de -// This file is for Flan's Flying Mod Version 4.0.x+ - -// Model: Defabricator -// Model Creator: -// Created on:05.06.2017 - 11:21:40 -// Last changed on: 05.06.2017 - 11:21:40 - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelDefabricator extends ModelBase -{ - int textureX = 128; - int textureY = 64; - ModelRenderer[] modeldefabricatorModel; - - public ModelDefabricator() - { - textureWidth = 128; - textureHeight = 64; - modeldefabricatorModel = new ModelRenderer[40]; - modeldefabricatorModel[0] = new ModelRenderer(this, 1, 1); // Box 0 - modeldefabricatorModel[1] = new ModelRenderer(this, 25, 1); // Box 1 - modeldefabricatorModel[2] = new ModelRenderer(this, 41, 1); // Box 2 - modeldefabricatorModel[3] = new ModelRenderer(this, 57, 1); // Box 3 - modeldefabricatorModel[4] = new ModelRenderer(this, 89, 1); // Box 4 - modeldefabricatorModel[5] = new ModelRenderer(this, 105, 1); // Box 5 - modeldefabricatorModel[6] = new ModelRenderer(this, 1, 9); // Box 6 - modeldefabricatorModel[7] = new ModelRenderer(this, 25, 9); // Box 7 - modeldefabricatorModel[8] = new ModelRenderer(this, 49, 1); // Box 8 - modeldefabricatorModel[9] = new ModelRenderer(this, 57, 9); // Box 9 - modeldefabricatorModel[10] = new ModelRenderer(this, 33, 9); // Box 10 - modeldefabricatorModel[11] = new ModelRenderer(this, 89, 9); // Box 11 - modeldefabricatorModel[12] = new ModelRenderer(this, 113, 9); // Box 12 - modeldefabricatorModel[13] = new ModelRenderer(this, 17, 1); // Box 13 - modeldefabricatorModel[14] = new ModelRenderer(this, 1, 17); // Box 14 - modeldefabricatorModel[15] = new ModelRenderer(this, 17, 17); // Box 15 - modeldefabricatorModel[16] = new ModelRenderer(this, 41, 17); // Box 16 - modeldefabricatorModel[17] = new ModelRenderer(this, 73, 17); // Box 17 - modeldefabricatorModel[18] = new ModelRenderer(this, 97, 17); // Box 18 - modeldefabricatorModel[19] = new ModelRenderer(this, 113, 17); // Box 19 - modeldefabricatorModel[20] = new ModelRenderer(this, 1, 25); // Box 20 - modeldefabricatorModel[21] = new ModelRenderer(this, 9, 25); // Box 21 - modeldefabricatorModel[22] = new ModelRenderer(this, 17, 25); // Box 22 - modeldefabricatorModel[23] = new ModelRenderer(this, 33, 25); // Box 23 - modeldefabricatorModel[24] = new ModelRenderer(this, 49, 25); // Box 24 - modeldefabricatorModel[25] = new ModelRenderer(this, 65, 25); // Box 25 - modeldefabricatorModel[26] = new ModelRenderer(this, 81, 25); // Box 26 - modeldefabricatorModel[27] = new ModelRenderer(this, 97, 1); // Box 27 - modeldefabricatorModel[28] = new ModelRenderer(this, 1, 33); // Box 28 - modeldefabricatorModel[29] = new ModelRenderer(this, 105, 17); // Box 29 - modeldefabricatorModel[30] = new ModelRenderer(this, 89, 25); // Box 30 - modeldefabricatorModel[31] = new ModelRenderer(this, 49, 33); // Box 31 - modeldefabricatorModel[32] = new ModelRenderer(this, 1, 41); // Box 32 - modeldefabricatorModel[33] = new ModelRenderer(this, 89, 25); // Box 33 - modeldefabricatorModel[34] = new ModelRenderer(this, 89, 33); // Box 34 - modeldefabricatorModel[35] = new ModelRenderer(this, 41, 41); // Box 35 - modeldefabricatorModel[36] = new ModelRenderer(this, 105, 25); // Box 36 - modeldefabricatorModel[37] = new ModelRenderer(this, 113, 25); // Box 39 - modeldefabricatorModel[38] = new ModelRenderer(this, 121, 25); // Box 40 - modeldefabricatorModel[39] = new ModelRenderer(this, 57, 41); // Box 41 - - modeldefabricatorModel[0].addBox(0F, 0F, 0F, 5, 2, 3); // Box 0 - modeldefabricatorModel[0].setRotationPoint(0F, 0.5F, -1.5F); - - modeldefabricatorModel[1].addBox(0F, 0F, 0F, 5, 3, 2); // Box 1 - modeldefabricatorModel[1].setRotationPoint(0F, 0F, -1F); - - modeldefabricatorModel[2].addBox(0F, 0F, 0F, 2, 7, 3); // Box 2 - modeldefabricatorModel[2].setRotationPoint(-2F, -2F, -1.5F); - - modeldefabricatorModel[3].addBox(0F, 0F, 0F, 11, 1, 3); // Box 3 - modeldefabricatorModel[3].setRotationPoint(0F, -2F, -1.5F); - - modeldefabricatorModel[4].addBox(0F, 0F, 0F, 1, 3, 3); // Box 4 - modeldefabricatorModel[4].setRotationPoint(10F, -1F, -1.5F); - - modeldefabricatorModel[5].addBox(0F, 0F, 0F, 6, 1, 2); // Box 5 - modeldefabricatorModel[5].setRotationPoint(0F, 4F, -1F); - - modeldefabricatorModel[6].addBox(0F, -1F, 0F, 6, 1, 2); // Box 6 - modeldefabricatorModel[6].setRotationPoint(6F, 5F, -1F); - modeldefabricatorModel[6].rotateAngleZ = -0.61086524F; - - modeldefabricatorModel[7].addBox(0F, 0F, 0F, 1, 2, 2); // Box 7 - modeldefabricatorModel[7].setRotationPoint(5F, 0.5F, -1F); - - modeldefabricatorModel[8].addBox(0F, 0F, 0F, 4, 1, 1); // Box 8 - modeldefabricatorModel[8].setRotationPoint(6F, 1F, -0.5F); - - modeldefabricatorModel[9].addBox(0F, 0F, 0F, 12, 1, 2); // Box 9 - modeldefabricatorModel[9].setRotationPoint(11F, 0F, -1F); - - modeldefabricatorModel[10].addBox(0F, 0F, 0F, 1, 6, 2); // Box 10 - modeldefabricatorModel[10].setRotationPoint(22F, -6F, -1F); - - modeldefabricatorModel[11].addBox(0F, 0F, 0F, 8, 2, 2); // Box 11 - modeldefabricatorModel[11].setRotationPoint(14F, -2.5F, -1F); - - modeldefabricatorModel[12].addBox(0F, 0F, 0F, 3, 1, 1); // Box 12 - modeldefabricatorModel[12].setRotationPoint(11F, -2F, -0.5F); - - modeldefabricatorModel[13].addBox(0F, 0F, 0F, 1, 1, 1); // Box 13 - modeldefabricatorModel[13].setRotationPoint(1F, 3.5F, -0.5F); - - modeldefabricatorModel[14].addBox(0F, 0F, 0F, 5, 1, 2); // Box 14 - modeldefabricatorModel[14].setRotationPoint(13.5F, -4.5F, -1F); - - modeldefabricatorModel[15].addBox(0F, 0F, 0F, 4, 1, 2); // Box 15 - modeldefabricatorModel[15].setRotationPoint(18F, -5F, -1F); - - modeldefabricatorModel[16].addBox(0F, 0F, 0F, 10, 1, 2); // Box 16 - modeldefabricatorModel[16].setRotationPoint(4F, -5F, -1F); - - modeldefabricatorModel[17].addBox(-6F, 0F, 0F, 6, 1, 2); // Box 17 - modeldefabricatorModel[17].setRotationPoint(4F, -5F, -1F); - modeldefabricatorModel[17].rotateAngleZ = -0.52359878F; - - modeldefabricatorModel[18].addBox(0F, 0F, 0F, 1, 3, 3); // Box 18 - modeldefabricatorModel[18].setRotationPoint(22F, -9F, -1.5F); - - modeldefabricatorModel[19].addBox(0F, 0F, 0F, 5, 2, 2); // Box 19 - modeldefabricatorModel[19].setRotationPoint(17F, -8.5F, -1F); - - modeldefabricatorModel[20].addBox(-4F, -3F, 0F, 1, 3, 2); // Box 20 - modeldefabricatorModel[20].setRotationPoint(4F, -5F, -1F); - modeldefabricatorModel[20].rotateAngleZ = -0.52359878F; - - modeldefabricatorModel[21].addBox(-4F, -4F, 0F, 1, 1, 2); // Box 21 - modeldefabricatorModel[21].setRotationPoint(4F, -5F, -1F); - modeldefabricatorModel[21].rotateAngleZ = -0.52359878F; - - modeldefabricatorModel[22].addBox(0F, 0F, 0F, 4, 3, 2); // Box 22 - modeldefabricatorModel[22].setRotationPoint(-6F, 0F, -1F); - - modeldefabricatorModel[23].addBox(0F, 0F, 0F, 4, 2, 3); // Box 23 - modeldefabricatorModel[23].setRotationPoint(-6F, 0.5F, -1.5F); - - modeldefabricatorModel[24].addBox(0F, 0F, 0F, 5, 2, 2); // Box 24 - modeldefabricatorModel[24].setRotationPoint(-11F, 0.5F, -1F); - - modeldefabricatorModel[25].addBox(0F, 0F, 0F, 2, 3, 2); // Box 25 - modeldefabricatorModel[25].setRotationPoint(-10.5F, 0F, -1F); - - modeldefabricatorModel[26].addBox(0F, 0F, 0F, 2, 2, 3); // Box 26 - modeldefabricatorModel[26].setRotationPoint(-10.5F, 0.5F, -1.5F); - - modeldefabricatorModel[27].addBox(0F, -2.5F, -0.5F, 1, 1, 1); // Box 27 - modeldefabricatorModel[27].setRotationPoint(-3F, 1.5F, 0F); - - modeldefabricatorModel[28].addBox(0F, -3F, -0.5F, 20, 1, 1); // Box 28 - modeldefabricatorModel[28].setRotationPoint(-23F, 1.5F, 0F); - - modeldefabricatorModel[29].addBox(0F, -2.5F, -0.5F, 1, 1, 1); // Box 29 - modeldefabricatorModel[29].setRotationPoint(-3F, 1.5F, 0F); - modeldefabricatorModel[29].rotateAngleX = 2.0943951F; - - modeldefabricatorModel[30].addBox(0F, -2.5F, -0.5F, 1, 1, 1); // Box 30 - modeldefabricatorModel[30].setRotationPoint(-3F, 1.5F, 0F); - modeldefabricatorModel[30].rotateAngleX = -2.0943951F; - - modeldefabricatorModel[31].addBox(0F, -3F, -0.5F, 20, 1, 1); // Box 31 - modeldefabricatorModel[31].setRotationPoint(-23F, 1.5F, 0F); - modeldefabricatorModel[31].rotateAngleX = -2.0943951F; - - modeldefabricatorModel[32].addBox(0F, -3F, -0.5F, 20, 1, 1); // Box 32 - modeldefabricatorModel[32].setRotationPoint(-23F, 1.5F, 0F); - modeldefabricatorModel[32].rotateAngleX = 2.0943951F; - - modeldefabricatorModel[33].addBox(0F, -2F, -3F, 2, 1, 6); // Box 33 - modeldefabricatorModel[33].setRotationPoint(-22F, 1.5F, 0F); - modeldefabricatorModel[33].rotateAngleX = 1.04719755F; - - modeldefabricatorModel[34].addBox(0F, -2F, -3F, 2, 1, 6); // Box 34 - modeldefabricatorModel[34].setRotationPoint(-22F, 1.5F, 0F); - modeldefabricatorModel[34].rotateAngleX = -3.14159265F; - - modeldefabricatorModel[35].addBox(0F, -2F, -3F, 2, 1, 6); // Box 35 - modeldefabricatorModel[35].setRotationPoint(-22F, 1.5F, 0F); - modeldefabricatorModel[35].rotateAngleX = -1.04719755F; - - modeldefabricatorModel[36].addBox(0.5F, -2.5F, -0.5F, 1, 1, 1); // Box 36 - modeldefabricatorModel[36].setRotationPoint(-24F, 1.5F, 0F); - - modeldefabricatorModel[37].addBox(0.5F, -2.5F, -0.5F, 1, 1, 1); // Box 39 - modeldefabricatorModel[37].setRotationPoint(-24F, 1.5F, 0F); - modeldefabricatorModel[37].rotateAngleX = 2.0943951F; - - modeldefabricatorModel[38].addBox(0.5F, -2.5F, -0.5F, 1, 1, 1); // Box 40 - modeldefabricatorModel[38].setRotationPoint(-24F, 1.5F, 0F); - modeldefabricatorModel[38].rotateAngleX = -2.0943951F; - - modeldefabricatorModel[39].addBox(0F, 0F, 0F, 13, 0, 1); // Box 41 - modeldefabricatorModel[39].setRotationPoint(5F, -5F, -0.5F); - modeldefabricatorModel[39].rotateAngleZ = 0.17453293F; - - for(int i = 0; i < 40; i++) - { - modeldefabricatorModel[i].setTextureSize(textureX, textureY); - modeldefabricatorModel[i].mirror = true; - } - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - for(int i = 0; i < 40; i++) - { - if(i == 20) - GL11.glDisable(GL11.GL_CULL_FACE); - modeldefabricatorModel[i].render(f5); - if(i == 20) - GL11.glEnable(GL11.GL_CULL_FACE); - } - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/render/model/ModelEMPRay.java b/src/main/java/com/hbm/render/model/ModelEMPRay.java deleted file mode 100644 index 54f8d321f..000000000 --- a/src/main/java/com/hbm/render/model/ModelEMPRay.java +++ /dev/null @@ -1,393 +0,0 @@ -// Date: 07.11.2016 21:36:37 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - - - - - - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelEMPRay extends ModelBase -{ - //fields - ModelRenderer Body; - ModelRenderer BodyConnector; - ModelRenderer BodyFront; - ModelRenderer BodyPlateLeft; - ModelRenderer BodyPlateRight; - ModelRenderer BodyPlateBottom; - ModelRenderer Rib1; - ModelRenderer Rib2; - ModelRenderer Rib3; - ModelRenderer Rib4; - ModelRenderer Rib5; - ModelRenderer Rib6; - ModelRenderer Rib7; - ModelRenderer Stock; - ModelRenderer StockBottom; - ModelRenderer StockPlate; - ModelRenderer CrankPivot; - ModelRenderer CrankPlate; - ModelRenderer CrankHandleBase; - ModelRenderer CrankHandle; - ModelRenderer HandlePivot; - ModelRenderer HandleLeft; - ModelRenderer HandleRight; - ModelRenderer Handle; - ModelRenderer ShieldTop; - ModelRenderer ShieldBottom; - ModelRenderer Battery; - ModelRenderer BatteryTop; - ModelRenderer BatteryBottom; - ModelRenderer Wire; - ModelRenderer SpindelPivot; - ModelRenderer SpindelBase1; - ModelRenderer Coil1; - ModelRenderer SpindelTip1; - ModelRenderer SpindelBase2; - ModelRenderer Coil2; - ModelRenderer SpindelTip2; - ModelRenderer SpindelBase3; - ModelRenderer Coil3; - ModelRenderer SpindelTip3; - ModelRenderer WireRight; - ModelRenderer WireLeft; - - public ModelEMPRay() - { - textureWidth = 256; - textureHeight = 128; - - Body = new ModelRenderer(this, 0, 96); - Body.addBox(0F, 0F, 0F, 20, 16, 16); - Body.setRotationPoint(0F, 0F, -8F); - Body.setTextureSize(64, 32); - Body.mirror = true; - setRotation(Body, 0F, 0F, 0F); - BodyConnector = new ModelRenderer(this, 0, 80); - BodyConnector.addBox(0F, 0F, 0F, 15, 8, 8); - BodyConnector.setRotationPoint(-15F, 0F, -4F); - BodyConnector.setTextureSize(64, 32); - BodyConnector.mirror = true; - setRotation(BodyConnector, 0F, 0F, 0F); - BodyFront = new ModelRenderer(this, 72, 96); - BodyFront.addBox(0F, 0F, 0F, 5, 16, 16); - BodyFront.setRotationPoint(-20F, 0F, -8F); - BodyFront.setTextureSize(64, 32); - BodyFront.mirror = true; - setRotation(BodyFront, 0F, 0F, 0F); - BodyPlateLeft = new ModelRenderer(this, 46, 84); - BodyPlateLeft.addBox(-16F, 0F, 0F, 16, 8, 4); - BodyPlateLeft.setRotationPoint(0F, 0F, -8F); - BodyPlateLeft.setTextureSize(64, 32); - BodyPlateLeft.mirror = true; - setRotation(BodyPlateLeft, 0F, 0.2617994F, 0F); - BodyPlateRight = new ModelRenderer(this, 86, 84); - BodyPlateRight.addBox(-16F, 0F, -4F, 16, 8, 4); - BodyPlateRight.setRotationPoint(0F, 0F, 8F); - BodyPlateRight.setTextureSize(64, 32); - BodyPlateRight.mirror = true; - setRotation(BodyPlateRight, 0F, -0.2617994F, 0F); - BodyPlateBottom = new ModelRenderer(this, 0, 65); - BodyPlateBottom.addBox(-18F, -7F, 0F, 18, 7, 8); - BodyPlateBottom.setRotationPoint(0F, 16F, -4F); - BodyPlateBottom.setTextureSize(64, 32); - BodyPlateBottom.mirror = true; - setRotation(BodyPlateBottom, 0F, 0F, 0.4886922F); - Rib1 = new ModelRenderer(this, 240, 0); - Rib1.addBox(0F, 0F, 0F, 0, 8, 8); - Rib1.setRotationPoint(-13.5F, 8F, -4F); - Rib1.setTextureSize(64, 32); - Rib1.mirror = true; - setRotation(Rib1, 0F, 0F, 0F); - Rib2 = new ModelRenderer(this, 222, 0); - Rib2.addBox(0F, 0F, 0F, 0, 8, 9); - Rib2.setRotationPoint(-11.5F, 8F, -4.5F); - Rib2.setTextureSize(64, 32); - Rib2.mirror = true; - setRotation(Rib2, 0F, 0F, 0F); - Rib3 = new ModelRenderer(this, 202, 0); - Rib3.addBox(0F, 0F, 0F, 0, 8, 10); - Rib3.setRotationPoint(-9.5F, 8F, -5F); - Rib3.setTextureSize(64, 32); - Rib3.mirror = true; - setRotation(Rib3, 0F, 0F, 0F); - Rib4 = new ModelRenderer(this, 180, 0); - Rib4.addBox(0F, 0F, 0F, 0, 8, 11); - Rib4.setRotationPoint(-7.5F, 8F, -5.5F); - Rib4.setTextureSize(64, 32); - Rib4.mirror = true; - setRotation(Rib4, 0F, 0F, 0F); - Rib5 = new ModelRenderer(this, 156, 0); - Rib5.addBox(0F, 0F, 0F, 0, 8, 12); - Rib5.setRotationPoint(-5.5F, 8F, -6F); - Rib5.setTextureSize(64, 32); - Rib5.mirror = true; - setRotation(Rib5, 0F, 0F, 0F); - Rib6 = new ModelRenderer(this, 130, 0); - Rib6.addBox(0F, 0F, 0F, 0, 8, 13); - Rib6.setRotationPoint(-3.5F, 8F, -6.5F); - Rib6.setTextureSize(64, 32); - Rib6.mirror = true; - setRotation(Rib6, 0F, 0F, 0F); - Rib7 = new ModelRenderer(this, 102, 0); - Rib7.addBox(0F, 0F, 0F, 0, 8, 14); - Rib7.setRotationPoint(-1.5F, 8F, -7F); - Rib7.setTextureSize(64, 32); - Rib7.mirror = true; - setRotation(Rib7, 0F, 0F, 0F); - Stock = new ModelRenderer(this, 114, 116); - Stock.addBox(0F, 0F, 0F, 25, 6, 6); - Stock.setRotationPoint(20F, 10F, -3F); - Stock.setTextureSize(64, 32); - Stock.mirror = true; - setRotation(Stock, 0F, 0F, 0F); - StockBottom = new ModelRenderer(this, 114, 104); - StockBottom.addBox(0F, 0F, 0F, 4, 6, 6); - StockBottom.setRotationPoint(41F, 16F, -3F); - StockBottom.setTextureSize(64, 32); - StockBottom.mirror = true; - setRotation(StockBottom, 0F, 0F, 0F); - StockPlate = new ModelRenderer(this, 134, 92); - StockPlate.addBox(0F, -18F, 0F, 6, 18, 6); - StockPlate.setRotationPoint(41F, 22F, -3F); - StockPlate.setTextureSize(64, 32); - StockPlate.mirror = true; - setRotation(StockPlate, 0F, 0F, -1.22173F); - CrankPivot = new ModelRenderer(this, 0, 63); - CrankPivot.addBox(0F, -0.5F, -0.5F, 3, 1, 1); - CrankPivot.setRotationPoint(20F, 2F, 0F); - CrankPivot.setTextureSize(64, 32); - CrankPivot.mirror = true; - setRotation(CrankPivot, -0.4363323F, 0F, 0F); - CrankPlate = new ModelRenderer(this, 0, 55); - CrankPlate.addBox(0F, -1F, -1F, 1, 6, 2); - CrankPlate.setRotationPoint(21.5F, 2F, 0F); - CrankPlate.setTextureSize(64, 32); - CrankPlate.mirror = true; - setRotation(CrankPlate, -0.4363323F, 0F, 0F); - CrankHandleBase = new ModelRenderer(this, 0, 53); - CrankHandleBase.addBox(0F, 3.5F, -0.5F, 2, 1, 1); - CrankHandleBase.setRotationPoint(22F, 2F, 0F); - CrankHandleBase.setTextureSize(64, 32); - CrankHandleBase.mirror = true; - setRotation(CrankHandleBase, -0.4363323F, 0F, 0F); - CrankHandle = new ModelRenderer(this, 0, 49); - CrankHandle.addBox(0F, 3F, -1F, 6, 2, 2); - CrankHandle.setRotationPoint(24F, 2F, 0F); - CrankHandle.setTextureSize(64, 32); - CrankHandle.mirror = true; - setRotation(CrankHandle, -0.4363323F, 0F, 0F); - HandlePivot = new ModelRenderer(this, 52, 60); - HandlePivot.addBox(-1F, -1F, 0F, 2, 2, 22); - HandlePivot.setRotationPoint(7F, 7F, -11F); - HandlePivot.setTextureSize(64, 32); - HandlePivot.mirror = true; - setRotation(HandlePivot, 0F, 0F, 0.4363323F); - HandleLeft = new ModelRenderer(this, 100, 67); - HandleLeft.addBox(-1.5F, -14F, 0F, 3, 16, 1); - HandleLeft.setRotationPoint(7F, 7F, -9.5F); - HandleLeft.setTextureSize(64, 32); - HandleLeft.mirror = true; - setRotation(HandleLeft, 0F, 0F, 0.4363323F); - HandleRight = new ModelRenderer(this, 108, 67); - HandleRight.addBox(-1.5F, -14F, 0F, 3, 16, 1); - HandleRight.setRotationPoint(7F, 7F, 8.5F); - HandleRight.setTextureSize(64, 32); - HandleRight.mirror = true; - setRotation(HandleRight, 0F, 0F, 0.4363323F); - Handle = new ModelRenderer(this, 52, 31); - Handle.addBox(-2.5F, -19F, 0F, 5, 5, 24); - Handle.setRotationPoint(7F, 7F, -12F); - Handle.setTextureSize(64, 32); - Handle.mirror = true; - setRotation(Handle, 0F, 0F, 0.4363323F); - ShieldTop = new ModelRenderer(this, 64, 0); - ShieldTop.addBox(0F, 0F, 0F, 0, 12, 18); - ShieldTop.setRotationPoint(-11F, -14F, -9F); - ShieldTop.setTextureSize(64, 32); - ShieldTop.mirror = true; - setRotation(ShieldTop, 0F, 0F, 0F); - ShieldBottom = new ModelRenderer(this, 36, 0); - ShieldBottom.addBox(0F, 0F, 0F, 0, 9, 14); - ShieldBottom.setRotationPoint(-11F, -2F, -7F); - ShieldBottom.setTextureSize(64, 32); - ShieldBottom.mirror = true; - setRotation(ShieldBottom, 0F, 0F, -0.6981317F); - Battery = new ModelRenderer(this, 10, 56); - Battery.addBox(0F, 0F, 0F, 4, 6, 3); - Battery.setRotationPoint(13F, 6F, -11F); - Battery.setTextureSize(64, 32); - Battery.mirror = true; - setRotation(Battery, 0F, 0F, 0F); - BatteryTop = new ModelRenderer(this, 24, 60); - BatteryTop.addBox(0F, 0F, 0F, 5, 1, 4); - BatteryTop.setRotationPoint(12.5F, 5F, -11.5F); - BatteryTop.setTextureSize(64, 32); - BatteryTop.mirror = true; - setRotation(BatteryTop, 0F, 0F, 0F); - BatteryBottom = new ModelRenderer(this, 24, 55); - BatteryBottom.addBox(0F, 0F, 0F, 5, 1, 4); - BatteryBottom.setRotationPoint(12.5F, 12F, -11.5F); - BatteryBottom.setTextureSize(64, 32); - BatteryBottom.mirror = true; - setRotation(BatteryBottom, 0F, 0F, 0F); - Wire = new ModelRenderer(this, 0, 44); - Wire.addBox(0F, -4F, 0F, 2, 4, 1); - Wire.setRotationPoint(14F, 5F, -10F); - Wire.setTextureSize(64, 32); - Wire.mirror = true; - setRotation(Wire, -0.5235988F, 0F, 0F); - SpindelPivot = new ModelRenderer(this, 0, 36); - SpindelPivot.addBox(0F, 0F, 0F, 4, 3, 3); - SpindelPivot.setRotationPoint(-24F, 8.5F, -1.5F); - SpindelPivot.setTextureSize(64, 32); - SpindelPivot.mirror = true; - setRotation(SpindelPivot, 0F, 0F, 0F); - SpindelBase1 = new ModelRenderer(this, 0, 27); - SpindelBase1.addBox(0F, -5F, -1F, 2, 5, 2); - SpindelBase1.setRotationPoint(-23F, 10F, 0F); - SpindelBase1.setTextureSize(64, 32); - SpindelBase1.mirror = true; - setRotation(SpindelBase1, 0F, 0F, 0F); - Coil1 = new ModelRenderer(this, 0, 17); - Coil1.addBox(0F, -6F, -2F, 12, 4, 4); - Coil1.setRotationPoint(-35F, 10F, 0F); - Coil1.setTextureSize(64, 32); - Coil1.mirror = true; - setRotation(Coil1, 0F, 0F, 0F); - SpindelTip1 = new ModelRenderer(this, 0, 11); - SpindelTip1.addBox(0F, -5F, -1F, 1, 2, 2); - SpindelTip1.setRotationPoint(-36F, 10F, 0F); - SpindelTip1.setTextureSize(64, 32); - SpindelTip1.mirror = true; - setRotation(SpindelTip1, 0F, 0F, 0F); - SpindelBase2 = new ModelRenderer(this, 0, 27); - SpindelBase2.addBox(0F, -5F, -1F, 2, 5, 2); - SpindelBase2.setRotationPoint(-23F, 10F, 0F); - SpindelBase2.setTextureSize(64, 32); - SpindelBase2.mirror = true; - setRotation(SpindelBase2, 2.094395F, 0F, 0F); - Coil2 = new ModelRenderer(this, 0, 17); - Coil2.addBox(0F, -6F, -2F, 12, 4, 4); - Coil2.setRotationPoint(-35F, 10F, 0F); - Coil2.setTextureSize(64, 32); - Coil2.mirror = true; - setRotation(Coil2, 2.094395F, 0F, 0F); - SpindelTip2 = new ModelRenderer(this, 0, 11); - SpindelTip2.addBox(0F, -5F, -1F, 1, 2, 2); - SpindelTip2.setRotationPoint(-36F, 10F, 0F); - SpindelTip2.setTextureSize(64, 32); - SpindelTip2.mirror = true; - setRotation(SpindelTip2, 2.094395F, 0F, 0F); - SpindelBase3 = new ModelRenderer(this, 0, 27); - SpindelBase3.addBox(0F, -5F, -1F, 2, 5, 2); - SpindelBase3.setRotationPoint(-23F, 10F, 0F); - SpindelBase3.setTextureSize(64, 32); - SpindelBase3.mirror = true; - setRotation(SpindelBase3, -2.094395F, 0F, 0F); - Coil3 = new ModelRenderer(this, 0, 17); - Coil3.addBox(0F, -6F, -2F, 12, 4, 4); - Coil3.setRotationPoint(-35F, 10F, 0F); - Coil3.setTextureSize(64, 32); - Coil3.mirror = true; - setRotation(Coil3, -2.094395F, 0F, 0F); - SpindelTip3 = new ModelRenderer(this, 0, 11); - SpindelTip3.addBox(0F, -5F, -1F, 1, 2, 2); - SpindelTip3.setRotationPoint(-36F, 10F, 0F); - SpindelTip3.setTextureSize(64, 32); - SpindelTip3.mirror = true; - setRotation(SpindelTip3, -2.094395F, 0F, 0F); - WireRight = new ModelRenderer(this, 0, 2); - WireRight.addBox(0F, 0F, 0F, 15, 1, 1); - WireRight.setRotationPoint(-15F, 13F, 4F); - WireRight.setTextureSize(64, 32); - WireRight.mirror = true; - setRotation(WireRight, 0F, 0F, 0F); - WireLeft = new ModelRenderer(this, 0, 0); - WireLeft.addBox(0F, 0F, 0F, 15, 1, 1); - WireLeft.setRotationPoint(-15F, 13F, -5F); - WireLeft.setTextureSize(64, 32); - WireLeft.mirror = true; - setRotation(WireLeft, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, float rot) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Body.render(f5); - BodyConnector.render(f5); - BodyFront.render(f5); - BodyPlateLeft.render(f5); - BodyPlateRight.render(f5); - BodyPlateBottom.render(f5); - Rib1.render(f5); - Rib2.render(f5); - Rib3.render(f5); - Rib4.render(f5); - Rib5.render(f5); - Rib6.render(f5); - Rib7.render(f5); - Stock.render(f5); - StockBottom.render(f5); - StockPlate.render(f5); - CrankPivot.render(f5); - CrankPlate.render(f5); - CrankHandleBase.render(f5); - CrankHandle.render(f5); - HandlePivot.render(f5); - HandleLeft.render(f5); - HandleRight.render(f5); - Handle.render(f5); - ShieldTop.render(f5); - ShieldBottom.render(f5); - Battery.render(f5); - BatteryTop.render(f5); - BatteryBottom.render(f5); - Wire.render(f5); - SpindelPivot.render(f5); - SpindelBase1.rotateAngleX += rot; - Coil1.rotateAngleX += rot; - SpindelTip1.rotateAngleX += rot; - SpindelBase2.rotateAngleX += rot; - Coil2.rotateAngleX += rot; - SpindelTip2.rotateAngleX += rot; - SpindelBase3.rotateAngleX += rot; - Coil3.rotateAngleX += rot; - SpindelTip3.rotateAngleX += rot; - SpindelBase1.render(f5); - Coil1.render(f5); - SpindelTip1.render(f5); - SpindelBase2.render(f5); - Coil2.render(f5); - SpindelTip2.render(f5); - SpindelBase3.render(f5); - Coil3.render(f5); - SpindelTip3.render(f5); - WireRight.render(f5); - WireLeft.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override -public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelEuthanasia.java b/src/main/java/com/hbm/render/model/ModelEuthanasia.java deleted file mode 100644 index 5d55bbabb..000000000 --- a/src/main/java/com/hbm/render/model/ModelEuthanasia.java +++ /dev/null @@ -1,169 +0,0 @@ -// Date: 21.02.2017 21:26:09 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - - - - - - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelEuthanasia extends ModelBase -{ - //fields - ModelRenderer Barrel; - ModelRenderer Tank; - ModelRenderer ConnectorBF; - ModelRenderer ConnectorBB; - ModelRenderer ConnectorBeam; - ModelRenderer ConnectorTF; - ModelRenderer ConnectorTB; - ModelRenderer Body; - ModelRenderer Plate; - ModelRenderer Beam; - ModelRenderer Stock; - ModelRenderer StockBack; - ModelRenderer StockPlate; - ModelRenderer Handle; - ModelRenderer Trigger; - - public ModelEuthanasia() - { - textureWidth = 64; - textureHeight = 64; - - Barrel = new ModelRenderer(this, 0, 0); - Barrel.addBox(0F, 0F, 0F, 18, 3, 3); - Barrel.setRotationPoint(-11F, 0.5F, -1.5F); - Barrel.setTextureSize(64, 64); - Barrel.mirror = true; - setRotation(Barrel, 0F, 0F, 0F); - Tank = new ModelRenderer(this, 0, 6); - Tank.addBox(0F, 0F, 0F, 9, 5, 5); - Tank.setRotationPoint(-3F, -0.5F, -2.5F); - Tank.setTextureSize(64, 64); - Tank.mirror = true; - setRotation(Tank, 0F, 0F, 0F); - ConnectorBF = new ModelRenderer(this, 52, 0); - ConnectorBF.addBox(0F, 0F, 0F, 2, 8, 4); - ConnectorBF.setRotationPoint(-6F, 0F, -2F); - ConnectorBF.setTextureSize(64, 64); - ConnectorBF.mirror = true; - setRotation(ConnectorBF, 0F, 0F, 0F); - ConnectorBB = new ModelRenderer(this, 28, 6); - ConnectorBB.addBox(0F, 0F, 0F, 2, 8, 4); - ConnectorBB.setRotationPoint(7F, 0F, -2F); - ConnectorBB.setTextureSize(64, 64); - ConnectorBB.mirror = true; - setRotation(ConnectorBB, 0F, 0F, 0F); - ConnectorBeam = new ModelRenderer(this, 0, 18); - ConnectorBeam.addBox(0F, 0F, 0F, 11, 2, 4); - ConnectorBeam.setRotationPoint(-4F, 6F, -2F); - ConnectorBeam.setTextureSize(64, 64); - ConnectorBeam.mirror = true; - setRotation(ConnectorBeam, 0F, 0F, 0F); - ConnectorTF = new ModelRenderer(this, 40, 12); - ConnectorTF.addBox(0F, 0F, 0F, 2, 8, 4); - ConnectorTF.setRotationPoint(-9F, -4F, -2F); - ConnectorTF.setTextureSize(64, 64); - ConnectorTF.mirror = true; - setRotation(ConnectorTF, 0F, 0F, 0F); - ConnectorTB = new ModelRenderer(this, 52, 12); - ConnectorTB.addBox(0F, 0F, 0F, 2, 8, 4); - ConnectorTB.setRotationPoint(9F, -4F, -2F); - ConnectorTB.setTextureSize(64, 64); - ConnectorTB.mirror = true; - setRotation(ConnectorTB, 0F, 0F, 0F); - Body = new ModelRenderer(this, 0, 24); - Body.addBox(0F, 0F, 0F, 4, 5, 4); - Body.setRotationPoint(11F, -1F, -2F); - Body.setTextureSize(64, 64); - Body.mirror = true; - setRotation(Body, 0F, 0F, 0F); - Plate = new ModelRenderer(this, 16, 24); - Plate.addBox(0F, 0F, 0F, 5, 3, 4); - Plate.setRotationPoint(11F, -4F, -2F); - Plate.setTextureSize(64, 64); - Plate.mirror = true; - setRotation(Plate, 0F, 0F, 0.6457718F); - Beam = new ModelRenderer(this, 0, 33); - Beam.addBox(0F, 0F, 0F, 16, 1, 1); - Beam.setRotationPoint(-7F, -3.5F, -0.5F); - Beam.setTextureSize(64, 64); - Beam.mirror = true; - setRotation(Beam, 0F, 0F, 0F); - Stock = new ModelRenderer(this, 0, 35); - Stock.addBox(0F, 0F, 0F, 10, 2, 2); - Stock.setRotationPoint(15F, 1F, -1F); - Stock.setTextureSize(64, 64); - Stock.mirror = true; - setRotation(Stock, 0F, 0F, 0F); - StockBack = new ModelRenderer(this, 0, 39); - StockBack.addBox(0F, 0F, 0F, 1, 4, 2); - StockBack.setRotationPoint(24F, 3F, -1F); - StockBack.setTextureSize(64, 64); - StockBack.mirror = true; - setRotation(StockBack, 0F, 0F, 0F); - StockPlate = new ModelRenderer(this, 6, 39); - StockPlate.addBox(0F, -5F, 0F, 1, 5, 2); - StockPlate.setRotationPoint(24F, 7F, -1F); - StockPlate.setTextureSize(64, 64); - StockPlate.mirror = true; - setRotation(StockPlate, 0F, 0F, -0.2094395F); - Handle = new ModelRenderer(this, 12, 39); - Handle.addBox(0F, 0F, 0F, 2, 6, 2); - Handle.setRotationPoint(13F, 4F, -1F); - Handle.setTextureSize(64, 64); - Handle.mirror = true; - setRotation(Handle, 0F, 0F, -0.2094395F); - Trigger = new ModelRenderer(this, 20, 39); - Trigger.addBox(0F, 0F, 0F, 1, 4, 2); - Trigger.setRotationPoint(12F, 4F, -1F); - Trigger.setTextureSize(64, 64); - Trigger.mirror = true; - setRotation(Trigger, 0F, 0F, 0F); - } - - @Override -public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Barrel.render(f5); - Tank.render(f5); - ConnectorBF.render(f5); - ConnectorBB.render(f5); - ConnectorBeam.render(f5); - ConnectorTF.render(f5); - ConnectorTB.render(f5); - Body.render(f5); - Plate.render(f5); - Beam.render(f5); - Stock.render(f5); - StockBack.render(f5); - StockPlate.render(f5); - Handle.render(f5); - Trigger.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override -public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelFatman.java b/src/main/java/com/hbm/render/model/ModelFatman.java deleted file mode 100644 index fc65ff140..000000000 --- a/src/main/java/com/hbm/render/model/ModelFatman.java +++ /dev/null @@ -1,318 +0,0 @@ -// Date: 26.01.2016 14:54:33 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.weapon.ItemGunBase; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; - -public class ModelFatman extends ModelBase { - // fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - ModelRenderer Shape8; - ModelRenderer Shape9; - ModelRenderer Shape10; - ModelRenderer Shape11; - ModelRenderer Shape12; - ModelRenderer Shape13; - ModelRenderer Shape14; - ModelRenderer Shape15; - ModelRenderer Shape16; - ModelRenderer Shape17; - ModelRenderer Shape18; - ModelRenderer Shape19; - ModelRenderer Shape20; - ModelRenderer Shape21; - ModelRenderer Shape22; - ModelRenderer Shape23; - ModelRenderer Shape24; - ModelRenderer Shape25; - ModelRenderer Shape26; - ModelRenderer Shape27; - ModelRenderer Shape28; - ModelRenderer Shape29; - ModelRenderer Shape30; - ModelRenderer Shape31; - ModelRenderer Shape32; - ModelRenderer Shape33; - - public ModelFatman() { - textureWidth = 128; - textureHeight = 64; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 40, 2, 4); - Shape1.setRotationPoint(-20F, 0F, 0F); - Shape1.setTextureSize(128, 64); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 6); - Shape2.addBox(0F, 0F, 0F, 6, 2, 2); - Shape2.setRotationPoint(-19F, 2F, 1F); - Shape2.setTextureSize(128, 64); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 10); - Shape3.addBox(0F, 0F, 0F, 1, 4, 1); - Shape3.setRotationPoint(-12F, 2F, 1.5F); - Shape3.setTextureSize(128, 64); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 16, 6); - Shape4.addBox(0F, 0F, 0F, 6, 1, 4); - Shape4.setRotationPoint(-10F, 2F, 0F); - Shape4.setTextureSize(128, 64); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape5 = new ModelRenderer(this, 0, 15); - Shape5.addBox(0F, 0F, 0F, 2, 3, 1); - Shape5.setRotationPoint(-7F, 3F, 1.5F); - Shape5.setTextureSize(128, 64); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0F); - Shape6 = new ModelRenderer(this, 4, 10); - Shape6.addBox(0F, 0F, 0F, 3, 3, 1); - Shape6.setRotationPoint(-10F, 3F, 1.5F); - Shape6.setTextureSize(128, 64); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - Shape7 = new ModelRenderer(this, 12, 10); - Shape7.addBox(-1F, 0F, 0F, 1, 2, 1); - Shape7.setRotationPoint(-7F, 3F, 1.5F); - Shape7.setTextureSize(128, 64); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0.5235988F); - Shape8 = new ModelRenderer(this, 36, 6); - Shape8.addBox(0F, 0F, 0F, 10, 1, 4); - Shape8.setRotationPoint(-3F, 2F, 0F); - Shape8.setTextureSize(128, 64); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0F, 0F); - Shape9 = new ModelRenderer(this, 64, 6); - Shape9.addBox(0F, 0F, 0F, 2, 3, 2); - Shape9.setRotationPoint(7F, 2F, 1F); - Shape9.setTextureSize(128, 64); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, 0F); - Shape10 = new ModelRenderer(this, 88, 0); - Shape10.addBox(0F, 0F, 0F, 3, 4, 4); - Shape10.setRotationPoint(17F, -4F, 0F); - Shape10.setTextureSize(128, 64); - Shape10.mirror = true; - setRotation(Shape10, 0F, 0F, 0F); - Shape11 = new ModelRenderer(this, 72, 6); - Shape11.addBox(0F, 0F, 0F, 2, 3, 1); - Shape11.setRotationPoint(18F, -7F, 0F); - Shape11.setTextureSize(128, 64); - Shape11.mirror = true; - setRotation(Shape11, 0F, 0F, 0F); - Shape12 = new ModelRenderer(this, 78, 6); - Shape12.addBox(0F, 0F, 0F, 2, 3, 1); - Shape12.setRotationPoint(18F, -7F, 3F); - Shape12.setTextureSize(128, 64); - Shape12.mirror = true; - setRotation(Shape12, 0F, 0F, 0F); - Shape13 = new ModelRenderer(this, 0, 19); - Shape13.addBox(0F, -4F, 0F, 22, 4, 0); - Shape13.setRotationPoint(-17F, 0F, 1F); - Shape13.setTextureSize(128, 64); - Shape13.mirror = true; - setRotation(Shape13, 0.4363323F, 0F, 0F); - Shape14 = new ModelRenderer(this, 16, 11); - Shape14.addBox(0F, 0F, 0F, 33, 1, 1); - Shape14.setRotationPoint(-17F, -4F, -1F); - Shape14.setTextureSize(128, 64); - Shape14.mirror = true; - setRotation(Shape14, 0F, 0F, 0F); - Shape15 = new ModelRenderer(this, 0, 23); - Shape15.addBox(0F, -4F, 0F, 22, 4, 0); - Shape15.setRotationPoint(-17F, 0F, 3F); - Shape15.setTextureSize(128, 64); - Shape15.mirror = true; - setRotation(Shape15, -0.4363323F, 0F, 0F); - Shape16 = new ModelRenderer(this, 16, 13); - Shape16.addBox(0F, 0F, 0F, 33, 1, 1); - Shape16.setRotationPoint(-17F, -4F, 4F); - Shape16.setTextureSize(128, 64); - Shape16.mirror = true; - setRotation(Shape16, 0F, 0F, 0F); - Shape17 = new ModelRenderer(this, 44, 25); - Shape17.addBox(0F, -4F, 0F, 8, 4, 0); - Shape17.setRotationPoint(8F, 0F, 1F); - Shape17.setTextureSize(128, 64); - Shape17.mirror = true; - setRotation(Shape17, 0.4363323F, 0F, 0F); - Shape18 = new ModelRenderer(this, 44, 21); - Shape18.addBox(0F, -4F, 0F, 8, 4, 0); - Shape18.setRotationPoint(8F, 0F, 3F); - Shape18.setTextureSize(128, 64); - Shape18.mirror = true; - setRotation(Shape18, -0.4363323F, 0F, 0F); - Shape19 = new ModelRenderer(this, 0, 37); - Shape19.addBox(0F, 0F, 0F, 5, 4, 2); - Shape19.setRotationPoint(5F, -6F, 1F); - Shape19.setTextureSize(128, 64); - Shape19.mirror = true; - setRotation(Shape19, 0F, 0F, 0F); - Shape20 = new ModelRenderer(this, 0, 31); - Shape20.addBox(0F, 0F, 0F, 5, 2, 4); - Shape20.setRotationPoint(5F, -5F, 0F); - Shape20.setTextureSize(128, 64); - Shape20.mirror = true; - setRotation(Shape20, 0F, 0F, 0F); - Shape21 = new ModelRenderer(this, 0, 27); - Shape21.addBox(0F, 0F, 0F, 1, 2, 2); - Shape21.setRotationPoint(4F, -5F, 1F); - Shape21.setTextureSize(128, 64); - Shape21.mirror = true; - setRotation(Shape21, 0F, 0F, 0F); - Shape22 = new ModelRenderer(this, 6, 27); - Shape22.addBox(0F, 0F, 0F, 1, 2, 2); - Shape22.setRotationPoint(10F, -5F, 1F); - Shape22.setTextureSize(128, 64); - Shape22.mirror = true; - setRotation(Shape22, 0F, 0F, 0F); - Shape23 = new ModelRenderer(this, 8, 43); - Shape23.addBox(0F, 0F, 0F, 2, 2, 1); - Shape23.setRotationPoint(11F, -5F, 0F); - Shape23.setTextureSize(128, 64); - Shape23.mirror = true; - setRotation(Shape23, 0F, 0F, 0F); - Shape24 = new ModelRenderer(this, 8, 46); - Shape24.addBox(0F, 0F, 0F, 2, 2, 1); - Shape24.setRotationPoint(11F, -5F, 3F); - Shape24.setTextureSize(128, 64); - Shape24.mirror = true; - setRotation(Shape24, 0F, 0F, 0F); - Shape25 = new ModelRenderer(this, 0, 43); - Shape25.addBox(0F, 0F, 0F, 2, 1, 2); - Shape25.setRotationPoint(11F, -6F, 1F); - Shape25.setTextureSize(128, 64); - Shape25.mirror = true; - setRotation(Shape25, 0F, 0F, 0F); - Shape26 = new ModelRenderer(this, 0, 46); - Shape26.addBox(0F, 0F, 0F, 2, 1, 2); - Shape26.setRotationPoint(11F, -3F, 1F); - Shape26.setTextureSize(128, 64); - Shape26.mirror = true; - setRotation(Shape26, 0F, 0F, 0F); - Shape27 = new ModelRenderer(this, 18, 27); - Shape27.addBox(0F, 0F, 0F, 2, 5, 1); - Shape27.setRotationPoint(13F, -5F, 1.5F); - Shape27.setTextureSize(128, 64); - Shape27.mirror = true; - setRotation(Shape27, 0F, 0F, 0F); - Shape28 = new ModelRenderer(this, 84, 6); - Shape28.addBox(0F, 0F, 0F, 1, 3, 1); - Shape28.setRotationPoint(16F, -3F, 1.5F); - Shape28.setTextureSize(128, 64); - Shape28.mirror = true; - setRotation(Shape28, 0F, 0F, 0F); - Shape29 = new ModelRenderer(this, 6, 15); - Shape29.addBox(0F, 0F, 0F, 10, 2, 2); - Shape29.setRotationPoint(3F, -2F, 1F); - Shape29.setTextureSize(128, 64); - Shape29.mirror = true; - setRotation(Shape29, 0F, 0F, 0F); - Shape30 = new ModelRenderer(this, 30, 15); - Shape30.addBox(0F, 0F, 0F, 12, 2, 2); - Shape30.setRotationPoint(-7F, -1F, 4F); - Shape30.setTextureSize(128, 64); - Shape30.mirror = true; - setRotation(Shape30, 0F, 0F, 0F); - Shape31 = new ModelRenderer(this, 44, 19); - Shape31.addBox(0F, 0F, 0F, 14, 1, 1); - Shape31.setRotationPoint(5F, -0.5F, 4.5F); - Shape31.setTextureSize(128, 64); - Shape31.mirror = true; - setRotation(Shape31, 0F, 0F, 0F); - Shape32 = new ModelRenderer(this, 12, 27); - Shape32.addBox(0F, 0F, 0F, 1, 1, 1); - Shape32.setRotationPoint(18F, -0.5F, 3.5F); - Shape32.setTextureSize(128, 64); - Shape32.mirror = true; - setRotation(Shape32, 0F, 0F, 0F); - Shape33 = new ModelRenderer(this, 24, 29); - Shape33.addBox(0F, 0F, 0F, 21, 1, 2); - Shape33.setRotationPoint(-18F, -1F, 1F); - Shape33.setTextureSize(128, 64); - Shape33.mirror = true; - setRotation(Shape33, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack item) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape1.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - Shape2.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - Shape6.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - Shape7.render(f5); - Shape8.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - Shape9.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - Shape10.render(f5); - Shape11.render(f5); - Shape12.render(f5); - Shape13.render(f5); - Shape14.render(f5); - Shape15.render(f5); - Shape16.render(f5); - Shape17.render(f5); - Shape18.render(f5); - - int ammo = ItemGunBase.getMag(item); - if(ammo > 0) { - Shape19.render(f5); - Shape20.render(f5); - Shape21.render(f5); - Shape22.render(f5); - Shape23.render(f5); - Shape24.render(f5); - Shape25.render(f5); - Shape26.render(f5); - } - - Shape27.render(f5); - Shape28.render(f5); - Shape29.render(f5); - Shape30.render(f5); - Shape31.render(f5); - Shape32.render(f5); - Shape33.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelFolly.java b/src/main/java/com/hbm/render/model/ModelFolly.java deleted file mode 100644 index cdf189d7d..000000000 --- a/src/main/java/com/hbm/render/model/ModelFolly.java +++ /dev/null @@ -1,322 +0,0 @@ -// Date: 13.01.2019 13:32:43 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.entity.Entity; - -public class ModelFolly extends ModelBase { - // fields - ModelRenderer SB1; - ModelRenderer SB2; - ModelRenderer SB3; - ModelRenderer SB4; - ModelRenderer SB5; - ModelRenderer SB6; - ModelRenderer SB7; - ModelRenderer SB8; - ModelRenderer SP; - ModelRenderer B1; - ModelRenderer B2; - ModelRenderer B3; - ModelRenderer SF1; - ModelRenderer SF2; - ModelRenderer SF3; - ModelRenderer SF4; - ModelRenderer P1; - ModelRenderer P2; - ModelRenderer P3; - ModelRenderer P4; - ModelRenderer Grip; - ModelRenderer SPointer; - - public ModelFolly() { - textureWidth = 64; - textureHeight = 64; - - SB1 = new ModelRenderer(this, 0, 0); - SB1.addBox(-16F, -1F, 0F, 16, 1, 3); - SB1.setRotationPoint(0F, 4F, -1.5F); - SB1.setTextureSize(64, 32); - SB1.mirror = true; - setRotation(SB1, 0F, 0F, 0F); - SB2 = new ModelRenderer(this, 0, 16); - SB2.addBox(-16F, -1.5F, 0F, 16, 1, 1); - SB2.setRotationPoint(0F, 4F, 1F); - SB2.setTextureSize(64, 32); - SB2.mirror = true; - setRotation(SB2, 0F, 0F, 0F); - SB3 = new ModelRenderer(this, 0, 18); - SB3.addBox(-16F, -1.5F, 0F, 16, 1, 1); - SB3.setRotationPoint(0F, 4F, -2F); - SB3.setTextureSize(64, 32); - SB3.mirror = true; - setRotation(SB3, 0F, 0F, 0F); - SB4 = new ModelRenderer(this, 0, 8); - SB4.addBox(-16F, -4F, 0F, 16, 3, 1); - SB4.setRotationPoint(0F, 4F, -2.5F); - SB4.setTextureSize(64, 32); - SB4.mirror = true; - setRotation(SB4, 0F, 0F, 0F); - SB5 = new ModelRenderer(this, 0, 12); - SB5.addBox(-16F, -4F, 0F, 16, 3, 1); - SB5.setRotationPoint(0F, 4F, 1.5F); - SB5.setTextureSize(64, 32); - SB5.mirror = true; - setRotation(SB5, 0F, 0F, 0F); - SB6 = new ModelRenderer(this, 0, 20); - SB6.addBox(-16F, -4.5F, 0F, 16, 1, 1); - SB6.setRotationPoint(0F, 4F, 1F); - SB6.setTextureSize(64, 32); - SB6.mirror = true; - setRotation(SB6, 0F, 0F, 0F); - SB7 = new ModelRenderer(this, 0, 22); - SB7.addBox(-16F, -4.5F, 0F, 16, 1, 1); - SB7.setRotationPoint(0F, 4F, -2F); - SB7.setTextureSize(64, 32); - SB7.mirror = true; - setRotation(SB7, 0F, 0F, 0F); - SB8 = new ModelRenderer(this, 0, 4); - SB8.addBox(-16F, -5F, 0F, 16, 1, 3); - SB8.setRotationPoint(0F, 4F, -1.5F); - SB8.setTextureSize(64, 32); - SB8.mirror = true; - setRotation(SB8, 0F, 0F, 0F); - SP = new ModelRenderer(this, 58, 0); - SP.addBox(0F, -4F, 0F, 0, 3, 3); - SP.setRotationPoint(-0.5F, 4F, -1.5F); - SP.setTextureSize(64, 32); - SP.mirror = true; - setRotation(SP, 0F, 0F, 0F); - B1 = new ModelRenderer(this, 0, 40); - B1.addBox(0F, 0F, 0F, 5, 5, 3); - B1.setRotationPoint(0F, -1F, -1.5F); - B1.setTextureSize(64, 32); - B1.mirror = true; - setRotation(B1, 0F, 0F, 0F); - B2 = new ModelRenderer(this, 0, 48); - B2.addBox(0F, 0F, 0F, 5, 3, 5); - B2.setRotationPoint(0F, 0F, -2.5F); - B2.setTextureSize(64, 32); - B2.mirror = true; - setRotation(B2, 0F, 0F, 0F); - B3 = new ModelRenderer(this, 0, 56); - B3.addBox(0F, 0F, 0F, 5, 4, 4); - B3.setRotationPoint(0F, -0.5F, -2F); - B3.setTextureSize(64, 32); - B3.mirror = true; - setRotation(B3, 0F, 0F, 0F); - SF1 = new ModelRenderer(this, 0, 24); - SF1.addBox(-32F, -1.5F, 0F, 16, 1, 3); - SF1.setRotationPoint(0F, 4F, -1.5F); - SF1.setTextureSize(64, 32); - SF1.mirror = true; - setRotation(SF1, 0F, 0F, 0F); - SF2 = new ModelRenderer(this, 0, 28); - SF2.addBox(-32F, -4.5F, 0F, 16, 1, 3); - SF2.setRotationPoint(0F, 4F, -1.5F); - SF2.setTextureSize(64, 32); - SF2.mirror = true; - setRotation(SF2, 0F, 0F, 0F); - SF3 = new ModelRenderer(this, 0, 32); - SF3.addBox(-32F, -4F, 0F, 16, 3, 1); - SF3.setRotationPoint(0F, 4F, -2F); - SF3.setTextureSize(64, 32); - SF3.mirror = true; - setRotation(SF3, 0F, 0F, 0F); - SF4 = new ModelRenderer(this, 0, 36); - SF4.addBox(-32F, -4F, 0F, 16, 3, 1); - SF4.setRotationPoint(0F, 4F, 1F); - SF4.setTextureSize(64, 32); - SF4.mirror = true; - setRotation(SF4, 0F, 0F, 0F); - P1 = new ModelRenderer(this, 58, 6); - P1.addBox(0F, 0F, 0F, 1, 4, 2); - P1.setRotationPoint(5F, 1F, -1F); - P1.setTextureSize(64, 32); - P1.mirror = true; - setRotation(P1, 0F, 0F, 0F); - P2 = new ModelRenderer(this, 52, 0); - P2.addBox(-1F, -2F, 0F, 1, 2, 2); - P2.setRotationPoint(6F, 1F, -1F); - P2.setTextureSize(64, 32); - P2.mirror = true; - setRotation(P2, 0F, 0F, -0.5235988F); - P3 = new ModelRenderer(this, 42, 0); - P3.addBox(0F, 0F, 0F, 1, 1, 4); - P3.setRotationPoint(4.5F, 1F, -2F); - P3.setTextureSize(64, 32); - P3.mirror = true; - setRotation(P3, 0F, 0F, 0F); - P4 = new ModelRenderer(this, 44, 5); - P4.addBox(0F, 0F, 0F, 5, 1, 2); - P4.setRotationPoint(0F, 4F, -1F); - P4.setTextureSize(64, 32); - P4.mirror = true; - setRotation(P4, 0F, 0F, 0F); - Grip = new ModelRenderer(this, 52, 8); - Grip.addBox(0F, 0F, 0F, 2, 4, 1); - Grip.setRotationPoint(2F, 5F, -0.5F); - Grip.setTextureSize(64, 32); - Grip.mirror = true; - setRotation(Grip, 0F, 0F, -0.2617994F); - SPointer = new ModelRenderer(this, 56, 13); - SPointer.addBox(-32F, -0.5F, 0F, 3, 1, 1); - SPointer.setRotationPoint(0F, 4F, -0.5F); - SPointer.setTextureSize(64, 32); - SPointer.mirror = true; - setRotation(SPointer, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - SB1.render(f5); - SB2.render(f5); - SB3.render(f5); - SB4.render(f5); - SB5.render(f5); - SB6.render(f5); - SB7.render(f5); - SB8.render(f5); - SP.render(f5); - B1.render(f5); - B2.render(f5); - B3.render(f5); - SF1.render(f5); - SF2.render(f5); - SF3.render(f5); - SF4.render(f5); - P1.render(f5); - P2.render(f5); - P3.render(f5); - P4.render(f5); - Grip.render(f5); - SPointer.render(f5); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, int state, int timer) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - - float rotate = (float) (Math.PI * -70D / 180D); - - if(state == 1 || state == 2) { - SB1.rotateAngleZ = rotate; - SB2.rotateAngleZ = rotate; - SB3.rotateAngleZ = rotate; - SB4.rotateAngleZ = rotate; - SB5.rotateAngleZ = rotate; - SB6.rotateAngleZ = rotate; - SB7.rotateAngleZ = rotate; - SB8.rotateAngleZ = rotate; - SP.rotateAngleZ = rotate; - SPointer.rotateAngleZ = rotate; - SF1.rotateAngleZ = rotate; - SF2.rotateAngleZ = rotate; - SF3.rotateAngleZ = rotate; - SF4.rotateAngleZ = rotate; - } else { - SB1.rotateAngleZ = 0; - SB2.rotateAngleZ = 0; - SB3.rotateAngleZ = 0; - SB4.rotateAngleZ = 0; - SB5.rotateAngleZ = 0; - SB6.rotateAngleZ = 0; - SB7.rotateAngleZ = 0; - SB8.rotateAngleZ = 0; - SP.rotateAngleZ = 0; - SPointer.rotateAngleZ = 0; - SF1.rotateAngleZ = 0; - SF2.rotateAngleZ = 0; - SF3.rotateAngleZ = 0; - SF4.rotateAngleZ = 0; - } - - SB1.render(f5); - SB2.render(f5); - SB3.render(f5); - SB4.render(f5); - SB5.render(f5); - SB6.render(f5); - SB7.render(f5); - SB8.render(f5); - - if(state == 2 || state == 3) { - SP.render(f5); - } - - B1.render(f5); - B2.render(f5); - B3.render(f5); - SF1.render(f5); - SF2.render(f5); - SF3.render(f5); - SF4.render(f5); - P1.render(f5); - P2.render(f5); - P3.render(f5); - P4.render(f5); - Grip.render(f5); - SPointer.render(f5); - - if(state == 3 && timer > -1) { - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_LIGHTING); - - Tessellator tessellator = Tessellator.instance; - int color = 0x00FF00; - - if(timer == 0) - color = 0xFF0000; - - tessellator.startDrawing(3); - tessellator.setColorOpaque_I(color); - tessellator.addVertex(-32F / 16F, 0 + 4F / 16F, 0); - tessellator.addVertex(-150, timer, 0); - tessellator.draw(); - - tessellator.startDrawing(3); - tessellator.setColorOpaque_I(color); - tessellator.addVertex(-32F / 16F, 0 + 4F / 16F, 0); - tessellator.addVertex(-150, -timer, 0); - tessellator.draw(); - - tessellator.startDrawing(3); - tessellator.setColorOpaque_I(color); - tessellator.addVertex(-32F / 16F, 0 + 4F / 16F, 0); - tessellator.addVertex(-150, 0, timer); - tessellator.draw(); - - tessellator.startDrawing(3); - tessellator.setColorOpaque_I(color); - tessellator.addVertex(-32F / 16F, 0 + 4F / 16F, 0); - tessellator.addVertex(-150, 0, -timer); - tessellator.draw(); - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glPopMatrix(); - } - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelGloves.java b/src/main/java/com/hbm/render/model/ModelGloves.java deleted file mode 100644 index 797d82d0d..000000000 --- a/src/main/java/com/hbm/render/model/ModelGloves.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.hbm.render.model; - -public class ModelGloves { - - //TODO: make the rubber gloves actually render when worn - public ModelGloves() { - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelGrenade.java b/src/main/java/com/hbm/render/model/ModelGrenade.java deleted file mode 100644 index 88ee4dddb..000000000 --- a/src/main/java/com/hbm/render/model/ModelGrenade.java +++ /dev/null @@ -1,67 +0,0 @@ -// Date: 23.01.2019 10:30:04 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelGrenade extends ModelBase { - // fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - - public ModelGrenade() { - textureWidth = 32; - textureHeight = 32; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 8, 8, 8); - Shape1.setRotationPoint(-4F, -4F, -4F); - Shape1.setTextureSize(32, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 16); - Shape2.addBox(0F, 0F, 0F, 4, 6, 6); - Shape2.setRotationPoint(-8F, -3F, -3F); - Shape2.setTextureSize(32, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 20, 16); - Shape3.addBox(0F, 0F, 0F, 1, 4, 4); - Shape3.setRotationPoint(-9F, -2F, -2F); - Shape3.setTextureSize(32, 32); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - } - - public void renderAll(float f5) { - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelGustav.java b/src/main/java/com/hbm/render/model/ModelGustav.java deleted file mode 100644 index 43fcd28bc..000000000 --- a/src/main/java/com/hbm/render/model/ModelGustav.java +++ /dev/null @@ -1,313 +0,0 @@ -// Date: 21.01.2019 10:38:11 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelGustav extends ModelBase { - // fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - ModelRenderer Shape8; - ModelRenderer Shape9; - ModelRenderer Shape10; - ModelRenderer Shape11; - ModelRenderer Shape12; - ModelRenderer Shape13; - ModelRenderer Shape14; - ModelRenderer Shape15; - ModelRenderer Shape16; - ModelRenderer Shape17; - ModelRenderer Shape18; - ModelRenderer Shape19; - ModelRenderer Shape20; - ModelRenderer Shape21; - ModelRenderer Shape22; - ModelRenderer Shape23; - ModelRenderer Shape24; - ModelRenderer Shape25; - ModelRenderer Shape26; - ModelRenderer Shape27; - ModelRenderer Shape28; - ModelRenderer Shape29; - ModelRenderer Shape30; - ModelRenderer Shape31; - ModelRenderer Shape32; - ModelRenderer Shape33; - ModelRenderer Shape34; - - public ModelGustav() { - textureWidth = 128; - textureHeight = 32; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 40, 1, 3); - Shape1.setRotationPoint(-30F, 0F, -1.5F); - Shape1.setTextureSize(128, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 4); - Shape2.addBox(0F, 0F, 0F, 40, 1, 1); - Shape2.setRotationPoint(-30F, -0.5F, -2F); - Shape2.setTextureSize(128, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 6); - Shape3.addBox(0F, 0F, 0F, 40, 1, 1); - Shape3.setRotationPoint(-30F, -0.5F, 1F); - Shape3.setTextureSize(128, 32); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 0, 8); - Shape4.addBox(0F, 0F, 0F, 40, 3, 1); - Shape4.setRotationPoint(-30F, -3F, -2.5F); - Shape4.setTextureSize(128, 32); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape5 = new ModelRenderer(this, 0, 12); - Shape5.addBox(0F, 0F, 0F, 40, 3, 1); - Shape5.setRotationPoint(-30F, -3F, 1.5F); - Shape5.setTextureSize(128, 32); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0F); - Shape6 = new ModelRenderer(this, 0, 16); - Shape6.addBox(0F, 0F, 0F, 40, 1, 1); - Shape6.setRotationPoint(-30F, -3.5F, -2F); - Shape6.setTextureSize(128, 32); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - Shape7 = new ModelRenderer(this, 0, 18); - Shape7.addBox(0F, 0F, 0F, 40, 1, 1); - Shape7.setRotationPoint(-30F, -3.5F, 1F); - Shape7.setTextureSize(128, 32); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0F); - Shape8 = new ModelRenderer(this, 0, 20); - Shape8.addBox(0F, 0F, 0F, 40, 1, 3); - Shape8.setRotationPoint(-30F, -4F, -1.5F); - Shape8.setTextureSize(128, 32); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0F, 0F); - Shape9 = new ModelRenderer(this, 0, 24); - Shape9.addBox(0F, 0F, 0F, 2, 5, 1); - Shape9.setRotationPoint(-23F, 1F, -0.5F); - Shape9.setTextureSize(128, 32); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, 0F); - Shape10 = new ModelRenderer(this, 6, 24); - Shape10.addBox(0F, 0F, 0F, 4, 1, 1); - Shape10.setRotationPoint(-16F, 1F, -0.5F); - Shape10.setTextureSize(128, 32); - Shape10.mirror = true; - setRotation(Shape10, 0F, 0F, 0F); - Shape11 = new ModelRenderer(this, 6, 26); - Shape11.addBox(0F, 0F, 0F, 2, 4, 1); - Shape11.setRotationPoint(-14F, 2F, -0.5F); - Shape11.setTextureSize(128, 32); - Shape11.mirror = true; - setRotation(Shape11, 0F, 0F, 0F); - Shape12 = new ModelRenderer(this, 16, 24); - Shape12.addBox(0F, 0F, 0F, 2, 1, 1); - Shape12.setRotationPoint(-16F, 2F, -0.5F); - Shape12.setTextureSize(128, 32); - Shape12.mirror = true; - setRotation(Shape12, 0F, 0F, 0F); - Shape13 = new ModelRenderer(this, 22, 24); - Shape13.addBox(0F, 0F, 0F, 7, 1, 1); - Shape13.setRotationPoint(-4F, -7F, -0.5F); - Shape13.setTextureSize(128, 32); - Shape13.mirror = true; - setRotation(Shape13, 0F, 0F, 0F); - Shape14 = new ModelRenderer(this, 38, 24); - Shape14.addBox(0F, 0F, 0F, 5, 1, 1); - Shape14.setRotationPoint(3F, -7F, -0.5F); - Shape14.setTextureSize(128, 32); - Shape14.mirror = true; - setRotation(Shape14, 0F, 0F, 0.6108652F); - Shape15 = new ModelRenderer(this, 50, 24); - Shape15.addBox(-5F, 0F, 0F, 5, 1, 1); - Shape15.setRotationPoint(-4F, -7F, -0.5F); - Shape15.setTextureSize(128, 32); - Shape15.mirror = true; - setRotation(Shape15, 0F, 0F, -0.6108652F); - Shape16 = new ModelRenderer(this, 104, 0); - Shape16.addBox(0F, 0F, 0F, 7, 5, 5); - Shape16.setRotationPoint(10F, -4F, -2.5F); - Shape16.setTextureSize(128, 32); - Shape16.mirror = true; - setRotation(Shape16, 0F, 0F, 0F); - Shape17 = new ModelRenderer(this, 86, 0); - Shape17.addBox(0F, 0F, 0F, 3, 3, 2); - Shape17.setRotationPoint(17F, -3F, -1F); - Shape17.setTextureSize(128, 32); - Shape17.mirror = true; - setRotation(Shape17, 0F, 0F, 0F); - Shape18 = new ModelRenderer(this, 82, 5); - Shape18.addBox(0F, 0F, 0F, 3, 2, 3); - Shape18.setRotationPoint(17F, -2.5F, -1.5F); - Shape18.setTextureSize(128, 32); - Shape18.mirror = true; - setRotation(Shape18, 0F, 0F, 0F); - Shape19 = new ModelRenderer(this, 82, 10); - Shape19.addBox(0F, 0F, 0F, 4, 4, 3); - Shape19.setRotationPoint(20F, -3.5F, -1.5F); - Shape19.setTextureSize(128, 32); - Shape19.mirror = true; - setRotation(Shape19, 0F, 0F, 0F); - Shape20 = new ModelRenderer(this, 96, 10); - Shape20.addBox(0F, 0F, 0F, 4, 3, 4); - Shape20.setRotationPoint(20F, -3F, -2F); - Shape20.setTextureSize(128, 32); - Shape20.mirror = true; - setRotation(Shape20, 0F, 0F, 0F); - Shape21 = new ModelRenderer(this, 112, 10); - Shape21.addBox(0F, 0F, 0F, 4, 5, 4); - Shape21.setRotationPoint(24F, -4F, -2F); - Shape21.setTextureSize(128, 32); - Shape21.mirror = true; - setRotation(Shape21, 0F, 0F, 0F); - Shape22 = new ModelRenderer(this, 86, 17); - Shape22.addBox(0F, 0F, 0F, 4, 4, 5); - Shape22.setRotationPoint(24F, -3.5F, -2.5F); - Shape22.setTextureSize(128, 32); - Shape22.mirror = true; - setRotation(Shape22, 0F, 0F, 0F); - Shape23 = new ModelRenderer(this, 96, 0); - Shape23.addBox(0F, 0F, 0F, 2, 5, 2); - Shape23.setRotationPoint(-4F, 1F, -1F); - Shape23.setTextureSize(128, 32); - Shape23.mirror = true; - setRotation(Shape23, 0F, 0F, 0F); - Shape24 = new ModelRenderer(this, 104, 17); - Shape24.addBox(0F, 0F, 0F, 1, 5, 1); - Shape24.setRotationPoint(-3.5F, 6F, -0.5F); - Shape24.setTextureSize(128, 32); - Shape24.mirror = true; - setRotation(Shape24, 0F, 0F, 0F); - Shape25 = new ModelRenderer(this, 96, 7); - Shape25.addBox(0F, 0F, 0F, 2, 1, 2); - Shape25.setRotationPoint(-4F, 11F, -1F); - Shape25.setTextureSize(128, 32); - Shape25.mirror = true; - setRotation(Shape25, 0F, 0F, 0F); - Shape26 = new ModelRenderer(this, 120, 19); - Shape26.addBox(0F, 0F, 0F, 2, 5, 2); - Shape26.setRotationPoint(-1.5F, 1F, -1F); - Shape26.setTextureSize(128, 32); - Shape26.mirror = true; - setRotation(Shape26, 0F, 0F, 0F); - Shape27 = new ModelRenderer(this, 114, 19); - Shape27.addBox(-1F, -6F, 0F, 1, 6, 2); - Shape27.setRotationPoint(0.5F, 6F, -1F); - Shape27.setTextureSize(128, 32); - Shape27.mirror = true; - setRotation(Shape27, 0F, 0F, 0.2617994F); - Shape28 = new ModelRenderer(this, 12, 26); - Shape28.addBox(0F, 0F, 0F, 5, 2, 2); - Shape28.setRotationPoint(11F, -2.5F, -4.5F); - Shape28.setTextureSize(128, 32); - Shape28.mirror = true; - setRotation(Shape28, 0F, 0F, 0F); - Shape29 = new ModelRenderer(this, 26, 26); - Shape29.addBox(0F, 0F, 0F, 2, 2, 2); - Shape29.setRotationPoint(-18F, -3F, -4.5F); - Shape29.setTextureSize(128, 32); - Shape29.mirror = true; - setRotation(Shape29, 0F, 0F, 0F); - Shape30 = new ModelRenderer(this, 12, 30); - Shape30.addBox(0F, 0F, 0F, 5, 1, 1); - Shape30.setRotationPoint(-21F, -1F, -3.5F); - Shape30.setTextureSize(128, 32); - Shape30.mirror = true; - setRotation(Shape30, 0F, 0F, 0F); - Shape31 = new ModelRenderer(this, 62, 24); - Shape31.addBox(0F, 0F, 0F, 7, 1, 1); - Shape31.setRotationPoint(-21F, -3.5F, -5.5F); - Shape31.setTextureSize(128, 32); - Shape31.mirror = true; - setRotation(Shape31, 0F, 0F, 0F); - Shape32 = new ModelRenderer(this, 34, 26); - Shape32.addBox(0F, 0F, 0F, 1, 2, 2); - Shape32.setRotationPoint(-14F, -4F, -6F); - Shape32.setTextureSize(128, 32); - Shape32.mirror = true; - setRotation(Shape32, 0F, 0F, 0F); - Shape33 = new ModelRenderer(this, 40, 26); - Shape33.addBox(0F, -2F, 0F, 1, 2, 2); - Shape33.setRotationPoint(-13F, -2F, -6F); - Shape33.setTextureSize(128, 32); - Shape33.mirror = true; - setRotation(Shape33, 0F, 0F, -0.4363323F); - Shape34 = new ModelRenderer(this, 78, 24); - Shape34.addBox(0F, 0F, 0F, 3, 1, 1); - Shape34.setRotationPoint(-29F, -2F, -3F); - Shape34.setTextureSize(128, 32); - Shape34.mirror = true; - setRotation(Shape34, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - GL11.glDisable(GL11.GL_CULL_FACE); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - Shape9.render(f5); - Shape10.render(f5); - Shape11.render(f5); - Shape12.render(f5); - Shape13.render(f5); - Shape14.render(f5); - Shape15.render(f5); - Shape16.render(f5); - Shape17.render(f5); - Shape18.render(f5); - Shape19.render(f5); - Shape20.render(f5); - Shape21.render(f5); - Shape22.render(f5); - Shape23.render(f5); - Shape24.render(f5); - Shape25.render(f5); - Shape26.render(f5); - Shape27.render(f5); - Shape28.render(f5); - Shape29.render(f5); - Shape30.render(f5); - Shape31.render(f5); - Shape32.render(f5); - Shape33.render(f5); - Shape34.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelHP.java b/src/main/java/com/hbm/render/model/ModelHP.java deleted file mode 100644 index dcdf2ec40..000000000 --- a/src/main/java/com/hbm/render/model/ModelHP.java +++ /dev/null @@ -1,194 +0,0 @@ -// Date: 21.02.2017 20:44:50 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - - - - - - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.client.renderer.OpenGlHelper; -import net.minecraft.entity.Entity; - -public class ModelHP extends ModelBase -{ - //fields - ModelRenderer Printer; - ModelRenderer Hatch; - ModelRenderer Display; - ModelRenderer Stock; - ModelRenderer StockBottom; - ModelRenderer StockPlate; - ModelRenderer Barrel; - ModelRenderer Lens1; - ModelRenderer Lens2; - ModelRenderer Lens3; - ModelRenderer Beam; - ModelRenderer Handle; - ModelRenderer Dot; - ModelRenderer Back; - ModelRenderer BackShaft; - ModelRenderer Muzzle; - ModelRenderer BarrelPlate; - - public ModelHP() - { - textureWidth = 64; - textureHeight = 64; - - Printer = new ModelRenderer(this, 0, 0); - Printer.addBox(0F, 0F, 0F, 12, 9, 6); - Printer.setRotationPoint(-6F, -3F, -3F); - Printer.setTextureSize(64, 64); - Printer.mirror = true; - setRotation(Printer, 0F, 0F, 0F); - Hatch = new ModelRenderer(this, 0, 15); - Hatch.addBox(0F, 0F, 0F, 6, 5, 1); - Hatch.setRotationPoint(-3F, -1F, -3F); - Hatch.setTextureSize(64, 64); - Hatch.mirror = true; - setRotation(Hatch, 0F, 0F, 0F); - Display = new ModelRenderer(this, 14, 15); - Display.addBox(0F, -2F, 0F, 2, 2, 1); - Display.setRotationPoint(3.5F, 0F, -3F); - Display.setTextureSize(64, 64); - Display.mirror = true; - setRotation(Display, 0.7853982F, 0F, 0F); - Stock = new ModelRenderer(this, 0, 21); - Stock.addBox(0F, 0F, 0F, 12, 3, 2); - Stock.setRotationPoint(6F, 0F, -1F); - Stock.setTextureSize(64, 64); - Stock.mirror = true; - setRotation(Stock, 0F, 0F, 0F); - StockBottom = new ModelRenderer(this, 20, 15); - StockBottom.addBox(0F, 0F, 0F, 3, 3, 2); - StockBottom.setRotationPoint(15F, 3F, -1F); - StockBottom.setTextureSize(64, 64); - StockBottom.mirror = true; - setRotation(StockBottom, 0F, 0F, 0F); - StockPlate = new ModelRenderer(this, 0, 26); - StockPlate.addBox(-8F, -3F, 0F, 8, 3, 2); - StockPlate.setRotationPoint(15F, 6F, -1F); - StockPlate.setTextureSize(64, 64); - StockPlate.mirror = true; - setRotation(StockPlate, 0F, 0F, 0.3839724F); - Barrel = new ModelRenderer(this, 0, 31); - Barrel.addBox(0F, 0F, 0F, 15, 2, 2); - Barrel.setRotationPoint(-21F, 0F, -1F); - Barrel.setTextureSize(64, 64); - Barrel.mirror = true; - setRotation(Barrel, 0F, 0F, 0F); - Lens1 = new ModelRenderer(this, 0, 35); - Lens1.addBox(0F, 0F, 0F, 1, 3, 3); - Lens1.setRotationPoint(-19F, -3F, -1.5F); - Lens1.setTextureSize(64, 64); - Lens1.mirror = true; - setRotation(Lens1, 0F, 0F, 0F); - Lens2 = new ModelRenderer(this, 8, 35); - Lens2.addBox(0F, 0F, 0F, 1, 4, 4); - Lens2.setRotationPoint(-16F, -3.5F, -2F); - Lens2.setTextureSize(64, 64); - Lens2.mirror = true; - setRotation(Lens2, 0F, 0F, 0F); - Lens3 = new ModelRenderer(this, 0, 41); - Lens3.addBox(0F, 0F, 0F, 1, 3, 3); - Lens3.setRotationPoint(-13F, -3F, -1.466667F); - Lens3.setTextureSize(64, 64); - Lens3.mirror = true; - setRotation(Lens3, 0F, 0F, 0F); - Beam = new ModelRenderer(this, 0, 47); - Beam.addBox(0F, 0F, 0F, 12, 1, 1); - Beam.setRotationPoint(-18F, -2F, -0.5F); - Beam.setTextureSize(64, 64); - Beam.mirror = true; - setRotation(Beam, 0F, 0F, 0F); - Handle = new ModelRenderer(this, 18, 35); - Handle.addBox(0F, 0F, 0F, 2, 6, 1); - Handle.setRotationPoint(-16F, 2F, -0.5F); - Handle.setTextureSize(64, 64); - Handle.mirror = true; - setRotation(Handle, 0F, 0F, -0.1745329F); - Dot = new ModelRenderer(this, 0, 49); - Dot.addBox(0F, 0F, 0F, 2, 1, 1); - Dot.setRotationPoint(-20F, 2F, -0.5F); - Dot.setTextureSize(64, 64); - Dot.mirror = true; - setRotation(Dot, 0F, 0F, 0F); - Back = new ModelRenderer(this, 0, 51); - Back.addBox(-1F, -3F, 0F, 1, 3, 2); - Back.setRotationPoint(7F, 0F, -1F); - Back.setTextureSize(64, 64); - Back.mirror = true; - setRotation(Back, 0F, 0F, -0.3490659F); - BackShaft = new ModelRenderer(this, 0, 56); - BackShaft.addBox(0F, 0F, 0F, 4, 1, 1); - BackShaft.setRotationPoint(6F, -1F, -0.5F); - BackShaft.setTextureSize(64, 64); - BackShaft.mirror = true; - setRotation(BackShaft, 0F, 0F, 0F); - Muzzle = new ModelRenderer(this, 0, 58); - Muzzle.addBox(0F, 0F, 0F, 1, 2, 2); - Muzzle.setRotationPoint(-6.5F, -2.5F, -1F); - Muzzle.setTextureSize(64, 64); - Muzzle.mirror = true; - setRotation(Muzzle, 0F, 0F, 0F); - BarrelPlate = new ModelRenderer(this, 6, 58); - BarrelPlate.addBox(-4F, -2F, 0F, 4, 2, 1); - BarrelPlate.setRotationPoint(-6F, 4F, -0.5F); - BarrelPlate.setTextureSize(64, 64); - BarrelPlate.mirror = true; - setRotation(BarrelPlate, 0F, 0F, 0.5235988F); - } - - @Override -public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Printer.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - Hatch.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - Display.render(f5); - Stock.render(f5); - StockBottom.render(f5); - StockPlate.render(f5); - Barrel.render(f5); - GL11.glEnable(GL11.GL_BLEND); - //GL11.glDisable(GL11.GL_ALPHA_TEST); - OpenGlHelper.glBlendFunc(770, 771, 1, 0); - Lens1.render(f5); - Lens2.render(f5); - Lens3.render(f5); - Beam.render(f5); - GL11.glDisable(GL11.GL_BLEND); - Handle.render(f5); - Dot.render(f5); - Back.render(f5); - BackShaft.render(f5); - Muzzle.render(f5); - BarrelPlate.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override -public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelImmolator.java b/src/main/java/com/hbm/render/model/ModelImmolator.java deleted file mode 100644 index c94ca7deb..000000000 --- a/src/main/java/com/hbm/render/model/ModelImmolator.java +++ /dev/null @@ -1,247 +0,0 @@ -// Date: 22.11.2016 22:40:09 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelImmolator extends ModelBase { - // fields - ModelRenderer CylinderBase; - ModelRenderer CylinderFront; - ModelRenderer PipeBBase; - ModelRenderer PipeB; - ModelRenderer TipBase; - ModelRenderer PipeL; - ModelRenderer PipeLFront; - ModelRenderer TipFront; - ModelRenderer ChamberH; - ModelRenderer ChamberW; - ModelRenderer PipeTBack; - ModelRenderer PipeTBase; - ModelRenderer PipeT; - ModelRenderer PipeTFront; - ModelRenderer Body; - ModelRenderer Tank; - ModelRenderer HandleBase; - ModelRenderer HandleBar; - ModelRenderer HandleGrip; - ModelRenderer BodyPlate; - ModelRenderer ValveFront; - ModelRenderer ValveCenter; - ModelRenderer Stock; - ModelRenderer LatchBase; - ModelRenderer LatchHandle; - ModelRenderer ValveBack; - - public ModelImmolator() { - textureWidth = 64; - textureHeight = 32; - - CylinderBase = new ModelRenderer(this, 0, 0); - CylinderBase.addBox(0F, 0F, 0F, 2, 4, 4); - CylinderBase.setRotationPoint(0F, 0F, -2F); - CylinderBase.setTextureSize(64, 32); - CylinderBase.mirror = true; - setRotation(CylinderBase, 0F, 0F, 0F); - CylinderFront = new ModelRenderer(this, 0, 8); - CylinderFront.addBox(0F, 0F, 0F, 1, 3, 3); - CylinderFront.setRotationPoint(-1F, 0.5F, -1.5F); - CylinderFront.setTextureSize(64, 32); - CylinderFront.mirror = true; - setRotation(CylinderFront, 0F, 0F, 0F); - PipeBBase = new ModelRenderer(this, 0, 14); - PipeBBase.addBox(0F, 0F, 0F, 2, 2, 2); - PipeBBase.setRotationPoint(-2F, 2F, 0F); - PipeBBase.setTextureSize(64, 32); - PipeBBase.mirror = true; - setRotation(PipeBBase, 0F, 0F, 0F); - PipeB = new ModelRenderer(this, 0, 18); - PipeB.addBox(0F, 0F, 0F, 8, 1, 1); - PipeB.setRotationPoint(-10F, 2.5F, 0.5F); - PipeB.setTextureSize(64, 32); - PipeB.mirror = true; - setRotation(PipeB, 0F, 0F, 0F); - TipBase = new ModelRenderer(this, 8, 8); - TipBase.addBox(0F, 0F, 0F, 2, 2, 2); - TipBase.setRotationPoint(-12F, 1.5F, -0.5F); - TipBase.setTextureSize(64, 32); - TipBase.mirror = true; - setRotation(TipBase, 0F, 0F, 0F); - PipeL = new ModelRenderer(this, 0, 20); - PipeL.addBox(0F, 0F, 0F, 7, 1, 1); - PipeL.setRotationPoint(-7F, 2.5F, -1.5F); - PipeL.setTextureSize(64, 32); - PipeL.mirror = true; - setRotation(PipeL, 0F, 0F, 0F); - PipeLFront = new ModelRenderer(this, 0, 22); - PipeLFront.addBox(-4F, 0F, 0F, 4, 1, 1); - PipeLFront.setRotationPoint(-7F, 2.5F, -1.5F); - PipeLFront.setTextureSize(64, 32); - PipeLFront.mirror = true; - setRotation(PipeLFront, 0F, 0.4363323F, 0F); - TipFront = new ModelRenderer(this, 8, 12); - TipFront.addBox(0F, 0F, 0F, 2, 1, 1); - TipFront.setRotationPoint(-14F, 2F, 0F); - TipFront.setTextureSize(64, 32); - TipFront.mirror = true; - setRotation(TipFront, 0F, 0F, 0F); - ChamberH = new ModelRenderer(this, 24, 0); - ChamberH.addBox(0F, 0F, 0F, 4, 5, 4); - ChamberH.setRotationPoint(2F, -0.5F, -2F); - ChamberH.setTextureSize(64, 32); - ChamberH.mirror = true; - setRotation(ChamberH, 0F, 0F, 0F); - ChamberW = new ModelRenderer(this, 40, 0); - ChamberW.addBox(0F, 0F, 0F, 4, 4, 5); - ChamberW.setRotationPoint(2F, 0F, -2.5F); - ChamberW.setTextureSize(64, 32); - ChamberW.mirror = true; - setRotation(ChamberW, 0F, 0F, 0F); - PipeTBack = new ModelRenderer(this, 0, 24); - PipeTBack.addBox(0F, 0F, 0F, 6, 1, 1); - PipeTBack.setRotationPoint(0F, -2F, 2.5F); - PipeTBack.setTextureSize(64, 32); - PipeTBack.mirror = true; - setRotation(PipeTBack, -0.4363323F, 0F, 0F); - PipeTBase = new ModelRenderer(this, 8, 14); - PipeTBase.addBox(0F, 1F, 0F, 1, 2, 1); - PipeTBase.setRotationPoint(1F, -2F, 2.5F); - PipeTBase.setTextureSize(64, 32); - PipeTBase.mirror = true; - setRotation(PipeTBase, -0.4363323F, 0F, 0F); - PipeT = new ModelRenderer(this, 0, 26); - PipeT.addBox(-9F, 0F, 0F, 9, 1, 1); - PipeT.setRotationPoint(0F, -2F, 2.5F); - PipeT.setTextureSize(64, 32); - PipeT.mirror = true; - setRotation(PipeT, -0.4363323F, -0.296706F, -0.4014257F); - PipeTFront = new ModelRenderer(this, 0, 28); - PipeTFront.addBox(0F, 0F, 0F, 3, 1, 1); - PipeTFront.setRotationPoint(-10F, 1.5F, 0F); - PipeTFront.setTextureSize(64, 32); - PipeTFront.mirror = true; - setRotation(PipeTFront, 0F, 0F, 0F); - Body = new ModelRenderer(this, 24, 9); - Body.addBox(0F, 0F, 0F, 10, 4, 4); - Body.setRotationPoint(6F, 0.5F, -1.5F); - Body.setTextureSize(64, 32); - Body.mirror = true; - setRotation(Body, 0F, 0F, 0F); - Tank = new ModelRenderer(this, 12, 0); - Tank.addBox(0F, 0F, 0F, 3, 3, 2); - Tank.setRotationPoint(6F, 1F, -3F); - Tank.setTextureSize(64, 32); - Tank.mirror = true; - setRotation(Tank, 0F, 0F, 0F); - HandleBase = new ModelRenderer(this, 24, 17); - HandleBase.addBox(0F, 0F, 0F, 2, 2, 1); - HandleBase.setRotationPoint(4F, 1F, -3F); - HandleBase.setTextureSize(64, 32); - HandleBase.mirror = true; - setRotation(HandleBase, 0F, 0F, 0F); - HandleBar = new ModelRenderer(this, 30, 17); - HandleBar.addBox(0F, 0F, 0F, 1, 1, 2); - HandleBar.setRotationPoint(4.5F, 1.5F, -5F); - HandleBar.setTextureSize(64, 32); - HandleBar.mirror = true; - setRotation(HandleBar, 0F, 0F, 0F); - HandleGrip = new ModelRenderer(this, 36, 17); - HandleGrip.addBox(0F, 0F, -2F, 1, 1, 2); - HandleGrip.setRotationPoint(4.5F, 1.5F, -5F); - HandleGrip.setTextureSize(64, 32); - HandleGrip.mirror = true; - setRotation(HandleGrip, 0F, -0.3490659F, 0F); - BodyPlate = new ModelRenderer(this, 24, 20); - BodyPlate.addBox(0F, 0F, 0F, 10, 1, 2); - BodyPlate.setRotationPoint(6F, 0F, 0F); - BodyPlate.setTextureSize(64, 32); - BodyPlate.mirror = true; - setRotation(BodyPlate, 0F, 0F, 0F); - ValveFront = new ModelRenderer(this, 0, 30); - ValveFront.addBox(0F, 0F, 0F, 1, 1, 1); - ValveFront.setRotationPoint(8F, -0.5F, 0.5F); - ValveFront.setTextureSize(64, 32); - ValveFront.mirror = true; - setRotation(ValveFront, 0F, 0F, 0F); - ValveCenter = new ModelRenderer(this, 4, 30); - ValveCenter.addBox(0F, 0F, 0F, 1, 1, 1); - ValveCenter.setRotationPoint(11F, -0.5F, 0.5F); - ValveCenter.setTextureSize(64, 32); - ValveCenter.mirror = true; - setRotation(ValveCenter, 0F, 0F, 0F); - Stock = new ModelRenderer(this, 24, 23); - Stock.addBox(0F, 0F, 0F, 2, 4, 2); - Stock.setRotationPoint(16F, 0.5F, 0F); - Stock.setTextureSize(64, 32); - Stock.mirror = true; - setRotation(Stock, 0F, 0F, 0F); - LatchBase = new ModelRenderer(this, 8, 28); - LatchBase.addBox(0F, 0F, 0F, 2, 1, 1); - LatchBase.setRotationPoint(16F, 0.5F, 2F); - LatchBase.setTextureSize(64, 32); - LatchBase.mirror = true; - setRotation(LatchBase, 0F, 0F, 0F); - LatchHandle = new ModelRenderer(this, 32, 23); - LatchHandle.addBox(0F, 0F, 0F, 2, 3, 1); - LatchHandle.setRotationPoint(16F, 0.5F, 3F); - LatchHandle.setTextureSize(64, 32); - LatchHandle.mirror = true; - setRotation(LatchHandle, 0F, 0F, 0F); - ValveBack = new ModelRenderer(this, 8, 30); - ValveBack.addBox(0F, 0F, 0F, 1, 1, 1); - ValveBack.setRotationPoint(17.5F, 1F, 0.5F); - ValveBack.setTextureSize(64, 32); - ValveBack.mirror = true; - setRotation(ValveBack, 0F, 0F, 0F); - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - CylinderBase.render(f5); - CylinderFront.render(f5); - PipeBBase.render(f5); - PipeB.render(f5); - TipBase.render(f5); - PipeL.render(f5); - PipeLFront.render(f5); - TipFront.render(f5); - ChamberH.render(f5); - ChamberW.render(f5); - PipeTBack.render(f5); - PipeTBase.render(f5); - PipeT.render(f5); - PipeTFront.render(f5); - Body.render(f5); - Tank.render(f5); - HandleBase.render(f5); - HandleBar.render(f5); - HandleGrip.render(f5); - BodyPlate.render(f5); - ValveFront.render(f5); - ValveCenter.render(f5); - Stock.render(f5); - LatchBase.render(f5); - LatchHandle.render(f5); - ValveBack.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelJack.java b/src/main/java/com/hbm/render/model/ModelJack.java deleted file mode 100644 index c0621d054..000000000 --- a/src/main/java/com/hbm/render/model/ModelJack.java +++ /dev/null @@ -1,129 +0,0 @@ -// Date: 14.02.2017 18:33:04 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - - - - - - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelJack extends ModelBase -{ - //fields - ModelRenderer BarrelBR; - ModelRenderer BarrelBL; - ModelRenderer BarrelTR; - ModelRenderer BarrelTL; - ModelRenderer Body; - ModelRenderer Back; - ModelRenderer Plate; - ModelRenderer StockMain; - ModelRenderer StockBottom; - ModelRenderer StockPlate; - - public ModelJack() - { - textureWidth = 64; - textureHeight = 64; - - BarrelBR = new ModelRenderer(this, 0, 6); - BarrelBR.addBox(0F, 0F, 0F, 21, 3, 3); - BarrelBR.setRotationPoint(-18F, 0F, 0.2F); - BarrelBR.setTextureSize(64, 64); - BarrelBR.mirror = true; - setRotation(BarrelBR, 0F, 0F, 0F); - BarrelBL = new ModelRenderer(this, 0, 0); - BarrelBL.addBox(0F, 0F, 0F, 21, 3, 3); - BarrelBL.setRotationPoint(-18F, 0F, -3.2F); - BarrelBL.setTextureSize(64, 64); - BarrelBL.mirror = true; - setRotation(BarrelBL, 0F, 0F, 0F); - BarrelTR = new ModelRenderer(this, 0, 12); - BarrelTR.addBox(0F, 0F, 0F, 21, 3, 3); - BarrelTR.setRotationPoint(-18F, -3.2F, 0.2F); - BarrelTR.setTextureSize(64, 64); - BarrelTR.mirror = true; - setRotation(BarrelTR, 0F, 0F, 0F); - BarrelTL = new ModelRenderer(this, 0, 18); - BarrelTL.addBox(0F, 0F, 0F, 21, 3, 3); - BarrelTL.setRotationPoint(-18F, -3.2F, -3.2F); - BarrelTL.setTextureSize(64, 64); - BarrelTL.mirror = true; - setRotation(BarrelTL, 0F, 0F, 0F); - Body = new ModelRenderer(this, 0, 24); - Body.addBox(0F, 0F, 0F, 15, 7, 4); - Body.setRotationPoint(-9F, -2F, -2F); - Body.setTextureSize(64, 64); - Body.mirror = true; - setRotation(Body, 0F, 0F, 0F); - Back = new ModelRenderer(this, 38, 24); - Back.addBox(0F, 0F, 0F, 3, 5, 3); - Back.setRotationPoint(6F, 0F, -1.5F); - Back.setTextureSize(64, 64); - Back.mirror = true; - setRotation(Back, 0F, 0F, 0F); - Plate = new ModelRenderer(this, 0, 35); - Plate.addBox(0F, 0F, 0F, 4, 2, 3); - Plate.setRotationPoint(6F, -2F, -1.5F); - Plate.setTextureSize(64, 64); - Plate.mirror = true; - setRotation(Plate, 0F, 0F, 0.4363323F); - StockMain = new ModelRenderer(this, 0, 40); - StockMain.addBox(0F, 0F, 0F, 13, 3, 3); - StockMain.setRotationPoint(9F, 2F, -1.5F); - StockMain.setTextureSize(64, 64); - StockMain.mirror = true; - setRotation(StockMain, 0F, 0F, 0F); - StockBottom = new ModelRenderer(this, 0, 46); - StockBottom.addBox(0F, 0F, 0F, 6, 3, 3); - StockBottom.setRotationPoint(16F, 5F, -1.5F); - StockBottom.setTextureSize(64, 64); - StockBottom.mirror = true; - setRotation(StockBottom, 0F, 0F, 0F); - StockPlate = new ModelRenderer(this, 18, 46); - StockPlate.addBox(-8F, -3F, 0F, 8, 3, 3); - StockPlate.setRotationPoint(16F, 8F, -1.5F); - StockPlate.setTextureSize(64, 64); - StockPlate.mirror = true; - setRotation(StockPlate, 0F, 0F, 0.4014257F); - } - - @Override -public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - BarrelBR.render(f5); - BarrelBL.render(f5); - BarrelTR.render(f5); - BarrelTL.render(f5); - Body.render(f5); - Back.render(f5); - Plate.render(f5); - StockMain.render(f5); - StockBottom.render(f5); - StockPlate.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override -public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelLacunae.java b/src/main/java/com/hbm/render/model/ModelLacunae.java deleted file mode 100644 index ba9c0a519..000000000 --- a/src/main/java/com/hbm/render/model/ModelLacunae.java +++ /dev/null @@ -1,598 +0,0 @@ -// Date: 30.12.2018 13:53:06 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelLacunae extends ModelBase { - // fields - ModelRenderer FrontP1; - ModelRenderer FrontP2; - ModelRenderer FrontP3; - ModelRenderer Barrel1; - ModelRenderer Barrel2; - ModelRenderer Barrel3; - ModelRenderer Barrel4; - ModelRenderer Barrel5; - ModelRenderer Barrel6; - ModelRenderer Brace1; - ModelRenderer Brace2; - ModelRenderer Brace3; - ModelRenderer Brace4; - ModelRenderer Brace5; - ModelRenderer Brace6; - ModelRenderer Brace7; - ModelRenderer Brace8; - ModelRenderer Brace9; - ModelRenderer Brace10; - ModelRenderer Brace11; - ModelRenderer Brace12; - ModelRenderer Disc1; - ModelRenderer Disc2; - ModelRenderer Disc3; - ModelRenderer Disc4; - ModelRenderer Disc5; - ModelRenderer Disc6; - ModelRenderer Disc7; - ModelRenderer Disc8; - ModelRenderer BodyF1; - ModelRenderer BodyF2; - ModelRenderer BodyF3; - ModelRenderer BodyR1; - ModelRenderer BodyR2; - ModelRenderer BodyL1; - ModelRenderer BodyL2; - ModelRenderer BackP1; - ModelRenderer BackP2; - ModelRenderer BackP3; - ModelRenderer Block; - ModelRenderer AchsleF; - ModelRenderer Drum1; - ModelRenderer Drum2; - ModelRenderer DrumT; - ModelRenderer StickBase; - ModelRenderer Stick; - ModelRenderer AchsleB; - ModelRenderer Motor1; - ModelRenderer Motor2; - ModelRenderer Pipe1; - ModelRenderer Frame1; - ModelRenderer Frame2; - ModelRenderer Frame3; - ModelRenderer Frame4; - ModelRenderer Grip; - ModelRenderer Pipe2; - ModelRenderer PipeT; - ModelRenderer Pipe3; - ModelRenderer Pipe4; - ModelRenderer AmmoFrame; - ModelRenderer ClampB; - ModelRenderer ClampF; - ModelRenderer AmmoBox; - - public ModelLacunae() { - textureWidth = 128; - textureHeight = 128; - - FrontP1 = new ModelRenderer(this, 0, 52); - FrontP1.addBox(0F, 0F, 0F, 3, 8, 4); - FrontP1.setRotationPoint(-2F, 0F, -2F); - FrontP1.setTextureSize(128, 128); - FrontP1.mirror = true; - setRotation(FrontP1, 0F, 0F, 0F); - FrontP2 = new ModelRenderer(this, 14, 52); - FrontP2.addBox(0F, 0F, 0F, 3, 4, 8); - FrontP2.setRotationPoint(-2F, 2F, -4F); - FrontP2.setTextureSize(128, 128); - FrontP2.mirror = true; - setRotation(FrontP2, 0F, 0F, 0F); - FrontP3 = new ModelRenderer(this, 0, 38); - FrontP3.addBox(0F, 0F, 0F, 3, 7, 7); - FrontP3.setRotationPoint(-2F, 0.5F, -3.5F); - FrontP3.setTextureSize(128, 128); - FrontP3.mirror = true; - setRotation(FrontP3, 0F, 0F, 0F); - Barrel1 = new ModelRenderer(this, 64, 62); - Barrel1.addBox(0F, -2.5F, -0.5F, 31, 1, 1); - Barrel1.setRotationPoint(1F, 4F, 0F); - Barrel1.setTextureSize(128, 128); - Barrel1.mirror = true; - setRotation(Barrel1, 0F, 0F, 0F); - Barrel2 = new ModelRenderer(this, 64, 62); - Barrel2.addBox(0F, -2.5F, -0.5F, 31, 1, 1); - Barrel2.setRotationPoint(1F, 4F, 0F); - Barrel2.setTextureSize(128, 128); - Barrel2.mirror = true; - setRotation(Barrel2, 0.6457718F, 0F, 0F); - Barrel3 = new ModelRenderer(this, 64, 62); - Barrel3.addBox(0F, -2.5F, -0.5F, 31, 1, 1); - Barrel3.setRotationPoint(1F, 4F, 0F); - Barrel3.setTextureSize(128, 128); - Barrel3.mirror = true; - setRotation(Barrel3, 2.268928F, 0F, 0F); - Barrel4 = new ModelRenderer(this, 64, 62); - Barrel4.addBox(0F, -2.5F, -0.5F, 31, 1, 1); - Barrel4.setRotationPoint(1F, 4F, 0F); - Barrel4.setTextureSize(128, 128); - Barrel4.mirror = true; - setRotation(Barrel4, 2.9147F, 0F, 0F); - Barrel5 = new ModelRenderer(this, 64, 62); - Barrel5.addBox(0F, -2.5F, -0.5F, 31, 1, 1); - Barrel5.setRotationPoint(1F, 4F, 0F); - Barrel5.setTextureSize(128, 128); - Barrel5.mirror = true; - setRotation(Barrel5, -1.919862F, 0F, 0F); - Barrel6 = new ModelRenderer(this, 64, 62); - Barrel6.addBox(0F, -2.5F, -0.5F, 31, 1, 1); - Barrel6.setRotationPoint(1F, 4F, 0F); - Barrel6.setTextureSize(128, 128); - Barrel6.mirror = true; - setRotation(Barrel6, -1.27409F, 0F, 0F); - Brace1 = new ModelRenderer(this, 20, 48); - Brace1.addBox(0F, -3F, -1F, 5, 2, 2); - Brace1.setRotationPoint(25F, 4F, 0F); - Brace1.setTextureSize(128, 128); - Brace1.mirror = true; - setRotation(Brace1, 0F, 0F, 0F); - Brace2 = new ModelRenderer(this, 20, 48); - Brace2.addBox(0F, -3F, -1F, 5, 2, 2); - Brace2.setRotationPoint(25F, 4F, 0F); - Brace2.setTextureSize(128, 128); - Brace2.mirror = true; - setRotation(Brace2, 0.6457718F, 0F, 0F); - Brace3 = new ModelRenderer(this, 20, 44); - Brace3.addBox(0F, -3F, -1F, 5, 2, 2); - Brace3.setRotationPoint(4F, 4F, 0F); - Brace3.setTextureSize(128, 128); - Brace3.mirror = true; - setRotation(Brace3, 2.268928F, 0F, 0F); - Brace4 = new ModelRenderer(this, 20, 44); - Brace4.addBox(0F, -3F, -1F, 5, 2, 2); - Brace4.setRotationPoint(4F, 4F, 0F); - Brace4.setTextureSize(128, 128); - Brace4.mirror = true; - setRotation(Brace4, 2.9147F, 0F, 0F); - Brace5 = new ModelRenderer(this, 20, 44); - Brace5.addBox(0F, -3F, -1F, 5, 2, 2); - Brace5.setRotationPoint(4F, 4F, 0F); - Brace5.setTextureSize(128, 128); - Brace5.mirror = true; - setRotation(Brace5, -1.919862F, 0F, 0F); - Brace6 = new ModelRenderer(this, 20, 44); - Brace6.addBox(0F, -3F, -1F, 5, 2, 2); - Brace6.setRotationPoint(4F, 4F, 0F); - Brace6.setTextureSize(128, 128); - Brace6.mirror = true; - setRotation(Brace6, -1.27409F, 0F, 0F); - Brace7 = new ModelRenderer(this, 20, 44); - Brace7.addBox(0F, -3F, -1F, 5, 2, 2); - Brace7.setRotationPoint(4F, 4F, 0F); - Brace7.setTextureSize(128, 128); - Brace7.mirror = true; - setRotation(Brace7, 0F, 0F, 0F); - Brace8 = new ModelRenderer(this, 20, 44); - Brace8.addBox(0F, -3F, -1F, 5, 2, 2); - Brace8.setRotationPoint(4F, 4F, 0F); - Brace8.setTextureSize(128, 128); - Brace8.mirror = true; - setRotation(Brace8, 0.6457718F, 0F, 0F); - Brace9 = new ModelRenderer(this, 20, 48); - Brace9.addBox(0F, -3F, -1F, 5, 2, 2); - Brace9.setRotationPoint(25F, 4F, 0F); - Brace9.setTextureSize(128, 128); - Brace9.mirror = true; - setRotation(Brace9, 2.268928F, 0F, 0F); - Brace10 = new ModelRenderer(this, 20, 48); - Brace10.addBox(0F, -3F, -1F, 5, 2, 2); - Brace10.setRotationPoint(25F, 4F, 0F); - Brace10.setTextureSize(128, 128); - Brace10.mirror = true; - setRotation(Brace10, 2.9147F, 0F, 0F); - Brace11 = new ModelRenderer(this, 20, 48); - Brace11.addBox(0F, -3F, -1F, 5, 2, 2); - Brace11.setRotationPoint(25F, 4F, 0F); - Brace11.setTextureSize(128, 128); - Brace11.mirror = true; - setRotation(Brace11, -1.919862F, 0F, 0F); - Brace12 = new ModelRenderer(this, 20, 48); - Brace12.addBox(0F, -3F, -1F, 5, 2, 2); - Brace12.setRotationPoint(25F, 4F, 0F); - Brace12.setTextureSize(128, 128); - Brace12.mirror = true; - setRotation(Brace12, -1.27409F, 0F, 0F); - Disc1 = new ModelRenderer(this, 36, 54); - Disc1.addBox(0F, -3.5F, -1.5F, 2, 7, 3); - Disc1.setRotationPoint(15F, 4F, 0F); - Disc1.setTextureSize(128, 128); - Disc1.mirror = true; - setRotation(Disc1, 0F, 0F, 0F); - Disc2 = new ModelRenderer(this, 46, 54); - Disc2.addBox(0F, -3.5F, -1.5F, 2, 7, 3); - Disc2.setRotationPoint(15F, 4F, 0F); - Disc2.setTextureSize(128, 128); - Disc2.mirror = true; - setRotation(Disc2, 0.7853982F, 0F, 0F); - Disc3 = new ModelRenderer(this, 36, 44); - Disc3.addBox(0F, -3.5F, -1.5F, 2, 7, 3); - Disc3.setRotationPoint(15F, 4F, 0F); - Disc3.setTextureSize(128, 128); - Disc3.mirror = true; - setRotation(Disc3, 1.570796F, 0F, 0F); - Disc4 = new ModelRenderer(this, 46, 44); - Disc4.addBox(0F, -3.5F, -1.5F, 2, 7, 3); - Disc4.setRotationPoint(15F, 4F, 0F); - Disc4.setTextureSize(128, 128); - Disc4.mirror = true; - setRotation(Disc4, 2.356194F, 0F, 0F); - Disc5 = new ModelRenderer(this, 56, 54); - Disc5.addBox(0F, -3.5F, -1.5F, 1, 7, 3); - Disc5.setRotationPoint(2F, 4F, 0F); - Disc5.setTextureSize(128, 128); - Disc5.mirror = true; - setRotation(Disc5, 0F, 0F, 0F); - Disc6 = new ModelRenderer(this, 56, 44); - Disc6.addBox(0F, -3.5F, -1.5F, 1, 7, 3); - Disc6.setRotationPoint(2F, 4F, 0F); - Disc6.setTextureSize(128, 128); - Disc6.mirror = true; - setRotation(Disc6, 1.570796F, 0F, 0F); - Disc7 = new ModelRenderer(this, 64, 52); - Disc7.addBox(0F, -3.5F, -1.5F, 1, 7, 3); - Disc7.setRotationPoint(2F, 4F, 0F); - Disc7.setTextureSize(128, 128); - Disc7.mirror = true; - setRotation(Disc7, 0.7853982F, 0F, 0F); - Disc8 = new ModelRenderer(this, 72, 52); - Disc8.addBox(0F, -3.5F, -1.5F, 1, 7, 3); - Disc8.setRotationPoint(2F, 4F, 0F); - Disc8.setTextureSize(128, 128); - Disc8.mirror = true; - setRotation(Disc8, 2.356194F, 0F, 0F); - BodyF1 = new ModelRenderer(this, 80, 48); - BodyF1.addBox(0F, 0F, 0F, 7, 10, 4); - BodyF1.setRotationPoint(-9F, -1F, -2F); - BodyF1.setTextureSize(128, 128); - BodyF1.mirror = true; - setRotation(BodyF1, 0F, 0F, 0F); - BodyF2 = new ModelRenderer(this, 64, 34); - BodyF2.addBox(0F, 0F, 0F, 7, 4, 10); - BodyF2.setRotationPoint(-9F, 2F, -5F); - BodyF2.setTextureSize(128, 128); - BodyF2.mirror = true; - setRotation(BodyF2, 0F, 0F, 0F); - BodyF3 = new ModelRenderer(this, 98, 32); - BodyF3.addBox(0F, 0F, 0F, 7, 8, 8); - BodyF3.setRotationPoint(-9F, 0F, -4F); - BodyF3.setTextureSize(128, 128); - BodyF3.mirror = true; - setRotation(BodyF3, 0F, 0F, 0F); - BodyR1 = new ModelRenderer(this, 102, 55); - BodyR1.addBox(0F, 0F, 0F, 8, 4, 3); - BodyR1.setRotationPoint(-9.5F, 4.5F, -6F); - BodyR1.setTextureSize(128, 128); - BodyR1.mirror = true; - setRotation(BodyR1, 0F, 0F, 0F); - BodyR2 = new ModelRenderer(this, 102, 48); - BodyR2.addBox(0F, 0F, 0F, 8, 3, 4); - BodyR2.setRotationPoint(-9.5F, 5F, -6.5F); - BodyR2.setTextureSize(128, 128); - BodyR2.mirror = true; - setRotation(BodyR2, 0F, 0F, 0F); - BodyL1 = new ModelRenderer(this, 106, 17); - BodyL1.addBox(0F, 0F, 0F, 8, 4, 3); - BodyL1.setRotationPoint(-9.5F, 4.5F, 3F); - BodyL1.setTextureSize(128, 128); - BodyL1.mirror = true; - setRotation(BodyL1, 0F, 0F, 0F); - BodyL2 = new ModelRenderer(this, 104, 10); - BodyL2.addBox(0F, 0F, 0F, 8, 3, 4); - BodyL2.setRotationPoint(-9.5F, 5F, 2.5F); - BodyL2.setTextureSize(128, 128); - BodyL2.mirror = true; - setRotation(BodyL2, 0F, 0F, 0F); - BackP1 = new ModelRenderer(this, 54, 32); - BackP1.addBox(0F, 0F, 0F, 1, 8, 4); - BackP1.setRotationPoint(-10F, 0F, -2F); - BackP1.setTextureSize(128, 128); - BackP1.mirror = true; - setRotation(BackP1, 0F, 0F, 0F); - BackP2 = new ModelRenderer(this, 36, 32); - BackP2.addBox(0F, 0F, 0F, 1, 4, 8); - BackP2.setRotationPoint(-10F, 2F, -4F); - BackP2.setTextureSize(128, 128); - BackP2.mirror = true; - setRotation(BackP2, 0F, 0F, 0F); - BackP3 = new ModelRenderer(this, 20, 30); - BackP3.addBox(0F, 0F, 0F, 1, 7, 7); - BackP3.setRotationPoint(-10F, 0.5F, -3.5F); - BackP3.setTextureSize(128, 128); - BackP3.mirror = true; - setRotation(BackP3, 0F, 0F, 0F); - Block = new ModelRenderer(this, 98, 64); - Block.addBox(0F, 0F, 0F, 5, 9, 10); - Block.setRotationPoint(-27F, -1F, -5F); - Block.setTextureSize(128, 128); - Block.mirror = true; - setRotation(Block, 0F, 0F, 0F); - AchsleF = new ModelRenderer(this, 0, 34); - AchsleF.addBox(0F, 0F, 0F, 1, 2, 2); - AchsleF.setRotationPoint(-22F, 3F, -1F); - AchsleF.setTextureSize(128, 128); - AchsleF.mirror = true; - setRotation(AchsleF, 0F, 0F, 0F); - Drum1 = new ModelRenderer(this, 100, 24); - Drum1.addBox(0F, 0F, 0F, 11, 5, 3); - Drum1.setRotationPoint(-21F, 1.5F, -1.5F); - Drum1.setTextureSize(128, 128); - Drum1.mirror = true; - setRotation(Drum1, 0F, 0F, 0F); - Drum2 = new ModelRenderer(this, 96, 2); - Drum2.addBox(0F, 0F, 0F, 11, 3, 5); - Drum2.setRotationPoint(-21F, 2.5F, -2.5F); - Drum2.setTextureSize(128, 128); - Drum2.mirror = true; - setRotation(Drum2, 0F, 0F, 0F); - DrumT = new ModelRenderer(this, 34, 26); - DrumT.addBox(0F, 0F, 0F, 12, 1, 5); - DrumT.setRotationPoint(-22F, 0F, -2.5F); - DrumT.setTextureSize(128, 128); - DrumT.mirror = true; - setRotation(DrumT, 0F, 0F, 0F); - StickBase = new ModelRenderer(this, 6, 33); - StickBase.addBox(0F, 0F, 0F, 3, 2, 3); - StickBase.setRotationPoint(-26F, -3F, -1.5F); - StickBase.setTextureSize(128, 128); - StickBase.mirror = true; - setRotation(StickBase, 0F, 0F, 0F); - Stick = new ModelRenderer(this, 28, 72); - Stick.addBox(0F, -7F, 0F, 2, 7, 2); - Stick.setRotationPoint(-25.5F, -3F, -1F); - Stick.setTextureSize(128, 128); - Stick.mirror = true; - setRotation(Stick, 0F, 0F, 0.5235988F); - AchsleB = new ModelRenderer(this, 56, 66); - AchsleB.addBox(0F, 0F, 0F, 3, 2, 2); - AchsleB.setRotationPoint(-30F, 3F, -1F); - AchsleB.setTextureSize(128, 128); - AchsleB.mirror = true; - setRotation(AchsleB, 0F, 0F, 0F); - Motor1 = new ModelRenderer(this, 80, 66); - Motor1.addBox(0F, 0F, 0F, 5, 6, 4); - Motor1.setRotationPoint(-35F, 1F, -2F); - Motor1.setTextureSize(128, 128); - Motor1.mirror = true; - setRotation(Motor1, 0F, 0F, 0F); - Motor2 = new ModelRenderer(this, 76, 76); - Motor2.addBox(0F, 0F, 0F, 5, 4, 6); - Motor2.setRotationPoint(-35F, 2F, -3F); - Motor2.setTextureSize(128, 128); - Motor2.mirror = true; - setRotation(Motor2, 0F, 0F, 0F); - Pipe1 = new ModelRenderer(this, 62, 64); - Pipe1.addBox(0F, 0F, 0F, 16, 1, 1); - Pipe1.setRotationPoint(-23F, -1F, -6F); - Pipe1.setTextureSize(128, 128); - Pipe1.mirror = true; - setRotation(Pipe1, 0F, 0F, 0.2617994F); - Frame1 = new ModelRenderer(this, 0, 103); - Frame1.addBox(0F, 0F, 0F, 1, 1, 11); - Frame1.setRotationPoint(-1F, -2F, -5.5F); - Frame1.setTextureSize(128, 128); - Frame1.mirror = true; - setRotation(Frame1, 0F, 0F, 0F); - Frame2 = new ModelRenderer(this, 24, 73); - Frame2.addBox(0F, 0F, 0F, 1, 5, 1); - Frame2.setRotationPoint(-1F, -1.5F, -6F); - Frame2.setTextureSize(128, 128); - Frame2.mirror = true; - setRotation(Frame2, 0F, 0F, 0F); - Frame3 = new ModelRenderer(this, 28, 70); - Frame3.addBox(0F, 0F, 0F, 6, 1, 1); - Frame3.setRotationPoint(-6.5F, 3F, -6F); - Frame3.setTextureSize(128, 128); - Frame3.mirror = true; - setRotation(Frame3, 0F, 0F, 0F); - Frame4 = new ModelRenderer(this, 52, 66); - Frame4.addBox(0F, 0F, 0F, 1, 3, 1); - Frame4.setRotationPoint(-1F, -1.5F, 5F); - Frame4.setTextureSize(128, 128); - Frame4.mirror = true; - setRotation(Frame4, 0F, 0F, 0F); - Grip = new ModelRenderer(this, 0, 95); - Grip.addBox(0F, 0F, 0F, 2, 2, 6); - Grip.setRotationPoint(-3F, 0F, 5F); - Grip.setTextureSize(128, 128); - Grip.mirror = true; - setRotation(Grip, 0F, 0F, 0F); - Pipe2 = new ModelRenderer(this, 28, 68); - Pipe2.addBox(-11F, 0F, 0F, 11, 1, 1); - Pipe2.setRotationPoint(-26F, -1F, -6F); - Pipe2.setTextureSize(128, 128); - Pipe2.mirror = true; - setRotation(Pipe2, 0F, 0F, -0.6108652F); - PipeT = new ModelRenderer(this, 0, 84); - PipeT.addBox(0F, 0F, 0F, 1, 1, 10); - PipeT.setRotationPoint(-34.5F, 4.5F, -5F); - PipeT.setTextureSize(128, 128); - PipeT.mirror = true; - setRotation(PipeT, 0F, 0F, 0F); - Pipe3 = new ModelRenderer(this, 28, 66); - Pipe3.addBox(-11F, 0F, 0F, 11, 1, 1); - Pipe3.setRotationPoint(-26F, -1F, 5F); - Pipe3.setTextureSize(128, 128); - Pipe3.mirror = true; - setRotation(Pipe3, 0F, 0F, -0.6108652F); - Pipe4 = new ModelRenderer(this, 28, 64); - Pipe4.addBox(0F, 0F, 0F, 16, 1, 1); - Pipe4.setRotationPoint(-23F, -1F, 5F); - Pipe4.setTextureSize(128, 128); - Pipe4.mirror = true; - setRotation(Pipe4, 0F, 0F, 0.2617994F); - AmmoFrame = new ModelRenderer(this, 0, 0); - AmmoFrame.addBox(0F, 0F, 0F, 10, 12, 12); - AmmoFrame.setRotationPoint(-21F, 9F, -6F); - AmmoFrame.setTextureSize(128, 128); - AmmoFrame.mirror = true; - setRotation(AmmoFrame, 0F, 0F, 0F); - ClampB = new ModelRenderer(this, 0, 73); - ClampB.addBox(0F, 0F, 0F, 4, 3, 8); - ClampB.setRotationPoint(-25F, 8F, -4F); - ClampB.setTextureSize(128, 128); - ClampB.mirror = true; - setRotation(ClampB, 0F, 0F, 0F); - ClampF = new ModelRenderer(this, 0, 64); - ClampF.addBox(0F, 0F, 0F, 8, 3, 6); - ClampF.setRotationPoint(-11F, 9F, -3F); - ClampF.setTextureSize(128, 128); - ClampF.mirror = true; - setRotation(ClampF, 0F, 0F, 0F); - AmmoBox = new ModelRenderer(this, 44, 0); - AmmoBox.addBox(0F, 0F, 0F, 9, 11, 11); - AmmoBox.setRotationPoint(-20.5F, 9.5F, -5.5F); - AmmoBox.setTextureSize(128, 128); - AmmoBox.mirror = true; - setRotation(AmmoBox, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, float rot) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - - rot *= Math.PI / 180F; - - Barrel1.rotateAngleX += rot; - Barrel2.rotateAngleX += rot; - Barrel3.rotateAngleX += rot; - Barrel4.rotateAngleX += rot; - Barrel5.rotateAngleX += rot; - Barrel6.rotateAngleX += rot; - Brace1.rotateAngleX += rot; - Brace2.rotateAngleX += rot; - Brace3.rotateAngleX += rot; - Brace4.rotateAngleX += rot; - Brace5.rotateAngleX += rot; - Brace6.rotateAngleX += rot; - Brace7.rotateAngleX += rot; - Brace8.rotateAngleX += rot; - Brace9.rotateAngleX += rot; - Brace10.rotateAngleX += rot; - Brace11.rotateAngleX += rot; - Brace12.rotateAngleX += rot; - Disc1.rotateAngleX += rot; - Disc2.rotateAngleX += rot; - Disc3.rotateAngleX += rot; - Disc4.rotateAngleX += rot; - Disc5.rotateAngleX += rot; - Disc6.rotateAngleX += rot; - Disc7.rotateAngleX += rot; - Disc8.rotateAngleX += rot; - - FrontP1.render(f5); - FrontP2.render(f5); - FrontP3.render(f5); - Barrel1.render(f5); - Barrel2.render(f5); - Barrel3.render(f5); - Barrel4.render(f5); - Barrel5.render(f5); - Barrel6.render(f5); - Brace1.render(f5); - Brace2.render(f5); - Brace3.render(f5); - Brace4.render(f5); - Brace5.render(f5); - Brace6.render(f5); - Brace7.render(f5); - Brace8.render(f5); - Brace9.render(f5); - Brace10.render(f5); - Brace11.render(f5); - Brace12.render(f5); - Disc1.render(f5); - Disc2.render(f5); - Disc3.render(f5); - Disc4.render(f5); - Disc5.render(f5); - Disc6.render(f5); - Disc7.render(f5); - Disc8.render(f5); - BodyF1.render(f5); - BodyF2.render(f5); - BodyF3.render(f5); - BodyR1.render(f5); - BodyR2.render(f5); - BodyL1.render(f5); - BodyL2.render(f5); - BackP1.render(f5); - BackP2.render(f5); - BackP3.render(f5); - Block.render(f5); - AchsleF.render(f5); - Drum1.render(f5); - Drum2.render(f5); - DrumT.render(f5); - StickBase.render(f5); - Stick.render(f5); - AchsleB.render(f5); - Motor1.render(f5); - Motor2.render(f5); - Pipe1.render(f5); - Frame1.render(f5); - Frame2.render(f5); - Frame3.render(f5); - Frame4.render(f5); - Grip.render(f5); - Pipe2.render(f5); - PipeT.render(f5); - Pipe3.render(f5); - Pipe4.render(f5); - AmmoFrame.render(f5); - ClampB.render(f5); - ClampF.render(f5); - AmmoBox.render(f5); - - Barrel1.rotateAngleX -= rot; - Barrel2.rotateAngleX -= rot; - Barrel3.rotateAngleX -= rot; - Barrel4.rotateAngleX -= rot; - Barrel5.rotateAngleX -= rot; - Barrel6.rotateAngleX -= rot; - Brace1.rotateAngleX -= rot; - Brace2.rotateAngleX -= rot; - Brace3.rotateAngleX -= rot; - Brace4.rotateAngleX -= rot; - Brace5.rotateAngleX -= rot; - Brace6.rotateAngleX -= rot; - Brace7.rotateAngleX -= rot; - Brace8.rotateAngleX -= rot; - Brace9.rotateAngleX -= rot; - Brace10.rotateAngleX -= rot; - Brace11.rotateAngleX -= rot; - Brace12.rotateAngleX -= rot; - Disc1.rotateAngleX -= rot; - Disc2.rotateAngleX -= rot; - Disc3.rotateAngleX -= rot; - Disc4.rotateAngleX -= rot; - Disc5.rotateAngleX -= rot; - Disc6.rotateAngleX -= rot; - Disc7.rotateAngleX -= rot; - Disc8.rotateAngleX -= rot; - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelLeverAction.java b/src/main/java/com/hbm/render/model/ModelLeverAction.java deleted file mode 100644 index c45cc2986..000000000 --- a/src/main/java/com/hbm/render/model/ModelLeverAction.java +++ /dev/null @@ -1,233 +0,0 @@ -// Date: 13.01.2018 16:04:59 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelLeverAction extends ModelBase { - // fields - ModelRenderer Barrel1; - ModelRenderer Barrel2; - ModelRenderer Barrel3; - ModelRenderer Barrel4; - ModelRenderer Grip; - ModelRenderer Front1; - ModelRenderer Front2; - ModelRenderer BodyFront; - ModelRenderer BodyTop; - ModelRenderer BodyMain; - ModelRenderer BodyPlate; - ModelRenderer HandleMain; - ModelRenderer HandleBottom; - ModelRenderer HandleBack; - ModelRenderer LeverFront; - ModelRenderer LeverBottom; - ModelRenderer LeverMid; - ModelRenderer LeverFrontPlate; - ModelRenderer LeverBackBottom; - ModelRenderer Trigger; - ModelRenderer LeverBackTop; - ModelRenderer LeverBack; - - public ModelLeverAction() { - textureWidth = 128; - textureHeight = 64; - - Barrel1 = new ModelRenderer(this, 0, 0); - Barrel1.addBox(0F, 0F, 0F, 60, 3, 2); - Barrel1.setRotationPoint(-60F, 1.5F, -1F); - Barrel1.setTextureSize(64, 32); - Barrel1.mirror = true; - setRotation(Barrel1, 0F, 0F, 0F); - Barrel2 = new ModelRenderer(this, 0, 5); - Barrel2.addBox(0F, 0F, 0F, 60, 2, 3); - Barrel2.setRotationPoint(-60F, 2F, -1.5F); - Barrel2.setTextureSize(64, 32); - Barrel2.mirror = true; - setRotation(Barrel2, 0F, 0F, 0F); - Barrel3 = new ModelRenderer(this, 0, 10); - Barrel3.addBox(0F, 0F, 0F, 10, 2, 3); - Barrel3.setRotationPoint(-46F, 6F, -1.5F); - Barrel3.setTextureSize(64, 32); - Barrel3.mirror = true; - setRotation(Barrel3, 0F, 0F, 0F); - Barrel4 = new ModelRenderer(this, 26, 10); - Barrel4.addBox(0F, 0F, 0F, 10, 3, 2); - Barrel4.setRotationPoint(-46F, 5.5F, -1F); - Barrel4.setTextureSize(64, 32); - Barrel4.mirror = true; - setRotation(Barrel4, 0F, 0F, 0F); - Grip = new ModelRenderer(this, 0, 15); - Grip.addBox(0F, 0F, 0F, 36, 6, 4); - Grip.setRotationPoint(-36F, 3F, -2F); - Grip.setTextureSize(64, 32); - Grip.mirror = true; - setRotation(Grip, 0F, 0F, 0F); - Front1 = new ModelRenderer(this, 50, 10); - Front1.addBox(0F, 0F, 0F, 3, 2, 1); - Front1.setRotationPoint(-50F, 4.5F, -0.5F); - Front1.setTextureSize(64, 32); - Front1.mirror = true; - setRotation(Front1, 0F, 0F, 0F); - Front2 = new ModelRenderer(this, 58, 10); - Front2.addBox(0F, 0F, 0F, 3, 1, 2); - Front2.setRotationPoint(-50F, 6.5F, -1F); - Front2.setTextureSize(64, 32); - Front2.mirror = true; - setRotation(Front2, 0F, 0F, 0F); - BodyFront = new ModelRenderer(this, 0, 25); - BodyFront.addBox(0F, 0F, 0F, 3, 8, 4); - BodyFront.setRotationPoint(0F, 1.5F, -2F); - BodyFront.setTextureSize(64, 32); - BodyFront.mirror = true; - setRotation(BodyFront, 0F, 0F, 0F); - BodyTop = new ModelRenderer(this, 14, 25); - BodyTop.addBox(0F, 0F, 0F, 3, 1, 3); - BodyTop.setRotationPoint(0F, 1F, -1.5F); - BodyTop.setTextureSize(64, 32); - BodyTop.mirror = true; - setRotation(BodyTop, 0F, 0F, 0F); - BodyMain = new ModelRenderer(this, 0, 37); - BodyMain.addBox(0F, 0F, 0F, 12, 7, 4); - BodyMain.setRotationPoint(3F, 2.5F, -2F); - BodyMain.setTextureSize(64, 32); - BodyMain.mirror = true; - setRotation(BodyMain, 0F, 0F, 0F); - BodyPlate = new ModelRenderer(this, 26, 25); - BodyPlate.addBox(0F, 0F, 0F, 10, 2, 3); - BodyPlate.setRotationPoint(3F, 1F, -1.5F); - BodyPlate.setTextureSize(64, 32); - BodyPlate.mirror = true; - setRotation(BodyPlate, 0F, 0F, 0.1570796F); - HandleMain = new ModelRenderer(this, 0, 48); - HandleMain.addBox(0F, 0F, 0F, 18, 5, 4); - HandleMain.setRotationPoint(15F, 4F, -2F); - HandleMain.setTextureSize(128, 64); - HandleMain.mirror = true; - setRotation(HandleMain, 0F, 0F, 0.4363323F); - HandleBottom = new ModelRenderer(this, 0, 57); - HandleBottom.addBox(4F, 4.5F, 0F, 13, 1, 4); - HandleBottom.setRotationPoint(15F, 4F, -2F); - HandleBottom.setTextureSize(128, 64); - HandleBottom.mirror = true; - setRotation(HandleBottom, 0F, 0F, 0.4363323F); - HandleBack = new ModelRenderer(this, 34, 57); - HandleBack.addBox(17.5F, 0.5F, 0F, 1, 4, 3); - HandleBack.setRotationPoint(15F, 4F, -1.5F); - HandleBack.setTextureSize(128, 64); - HandleBack.mirror = true; - setRotation(HandleBack, 0F, 0F, 0.4363323F); - LeverFront = new ModelRenderer(this, 62, 30); - LeverFront.addBox(-1F, 0F, 0F, 2, 4, 2); - LeverFront.setRotationPoint(7F, 9F, -1F); - LeverFront.setTextureSize(128, 64); - LeverFront.mirror = true; - setRotation(LeverFront, 0F, 0F, 0F); - LeverBottom = new ModelRenderer(this, 70, 30); - LeverBottom.addBox(0F, 4F, 0F, 6, 1, 2); - LeverBottom.setRotationPoint(7F, 9F, -1F); - LeverBottom.setTextureSize(128, 64); - LeverBottom.mirror = true; - setRotation(LeverBottom, 0F, 0F, 0F); - LeverMid = new ModelRenderer(this, 62, 36); - LeverMid.addBox(6F, 0F, 0F, 1, 5, 2); - LeverMid.setRotationPoint(7F, 9F, -1F); - LeverMid.setTextureSize(128, 64); - LeverMid.mirror = true; - setRotation(LeverMid, 0F, 0F, 0F); - LeverFrontPlate = new ModelRenderer(this, 68, 39); - LeverFrontPlate.addBox(7F, -1.5F, 0F, 9, 1, 2); - LeverFrontPlate.setRotationPoint(7F, 9F, -1F); - LeverFrontPlate.setTextureSize(128, 64); - LeverFrontPlate.mirror = true; - setRotation(LeverFrontPlate, 0F, 0F, 0.7853982F); - LeverBackBottom = new ModelRenderer(this, 70, 33); - LeverBackBottom.addBox(12F, 10F, 0F, 6, 1, 2); - LeverBackBottom.setRotationPoint(7F, 9F, -1F); - LeverBackBottom.setTextureSize(128, 64); - LeverBackBottom.mirror = true; - setRotation(LeverBackBottom, 0F, 0F, 0F); - Trigger = new ModelRenderer(this, 88, 30); - Trigger.addBox(-1F, 0F, 0F, 1, 3, 1); - Trigger.setRotationPoint(12.5F, 9F, -0.5F); - Trigger.setTextureSize(128, 64); - Trigger.mirror = true; - setRotation(Trigger, 0F, 0F, 0.3490659F); - LeverBackTop = new ModelRenderer(this, 68, 36); - LeverBackTop.addBox(8F, -2F, 0F, 11, 1, 2); - LeverBackTop.setRotationPoint(7F, 9F, -1F); - LeverBackTop.setTextureSize(128, 64); - LeverBackTop.mirror = true; - setRotation(LeverBackTop, 0F, 0F, 0.4363323F); - LeverBack = new ModelRenderer(this, 62, 43); - LeverBack.addBox(17F, 6F, 0F, 1, 4, 2); - LeverBack.setRotationPoint(7F, 9F, -1F); - LeverBack.setTextureSize(128, 64); - LeverBack.mirror = true; - setRotation(LeverBack, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Barrel1.render(f5); - Barrel2.render(f5); - Barrel3.render(f5); - Barrel4.render(f5); - Grip.render(f5); - Front1.render(f5); - Front2.render(f5); - BodyFront.render(f5); - BodyTop.render(f5); - BodyMain.render(f5); - BodyPlate.render(f5); - HandleMain.render(f5); - HandleBottom.render(f5); - HandleBack.render(f5); - LeverFront.render(f5); - LeverBottom.render(f5); - LeverMid.render(f5); - LeverFrontPlate.render(f5); - LeverBackBottom.render(f5); - Trigger.render(f5); - LeverBackTop.render(f5); - LeverBack.render(f5); - } - - public void renderAnim(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, float anim) { - LeverFront.rotateAngleZ += anim; - LeverBottom.rotateAngleZ += anim; - LeverMid.rotateAngleZ += anim; - LeverFrontPlate.rotateAngleZ += anim; - LeverBackBottom.rotateAngleZ += anim; - LeverBackTop.rotateAngleZ += anim; - LeverBack.rotateAngleZ += anim; - - render(entity, f, f1, f2, f3, f4, f5); - - setRotation(LeverFront, 0F, 0F, 0F); - setRotation(LeverBottom, 0F, 0F, 0F); - setRotation(LeverMid, 0F, 0F, 0F); - setRotation(LeverFrontPlate, 0F, 0F, 0.7853982F); - setRotation(LeverBackBottom, 0F, 0F, 0F); - setRotation(LeverBackTop, 0F, 0F, 0.4363323F); - setRotation(LeverBack, 0F, 0F, 0F); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelMIRV.java b/src/main/java/com/hbm/render/model/ModelMIRV.java deleted file mode 100644 index 69cbe99e5..000000000 --- a/src/main/java/com/hbm/render/model/ModelMIRV.java +++ /dev/null @@ -1,95 +0,0 @@ -// Date: 13.11.2016 12:38:48 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - - - - - - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelMIRV extends ModelBase -{ - //fields - ModelRenderer Shape9; - ModelRenderer Shape10; - ModelRenderer Shape11; - ModelRenderer Shape12; - - public ModelMIRV() - { - textureWidth = 64; - textureHeight = 32; - - Shape9 = new ModelRenderer(this, 0, 0); - Shape9.addBox(0F, 0F, 0F, 10, 4, 2); - Shape9.setRotationPoint(-3F, -2F, -1F); - Shape9.setTextureSize(64, 32); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, 0F); - Shape10 = new ModelRenderer(this, 0, 6); - Shape10.addBox(0F, 0F, 0F, 10, 2, 4); - Shape10.setRotationPoint(-3F, -1F, -2F); - Shape10.setTextureSize(64, 32); - Shape10.mirror = true; - setRotation(Shape10, 0F, 0F, 0F); - Shape11 = new ModelRenderer(this, 0, 12); - Shape11.addBox(0F, 0F, 0F, 10, 3, 3); - Shape11.setRotationPoint(-3F, -1.5F, -1.5F); - Shape11.setTextureSize(64, 32); - Shape11.mirror = true; - setRotation(Shape11, 0F, 0F, 0F); - Shape12 = new ModelRenderer(this, 0, 18); - Shape12.addBox(0F, 0F, 0F, 4, 1, 1); - Shape12.setRotationPoint(0F, -3F, -1F); - Shape12.setTextureSize(64, 32); - Shape12.mirror = true; - setRotation(Shape12, 0F, 0F, 0F); - } - - public void renderAll(float f5) - { - Shape9.render(f5); - Shape10.render(f5); - Shape11.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - Shape12.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - } - - @Override -public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape9.render(f5); - Shape10.render(f5); - Shape11.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - Shape12.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override -public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelMIRVLauncher.java b/src/main/java/com/hbm/render/model/ModelMIRVLauncher.java deleted file mode 100644 index a6dad112d..000000000 --- a/src/main/java/com/hbm/render/model/ModelMIRVLauncher.java +++ /dev/null @@ -1,287 +0,0 @@ -// Date: 13.11.2016 12:34:14 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.weapon.ItemGunBase; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; - -public class ModelMIRVLauncher extends ModelBase { - // fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - ModelRenderer Shape8; - ModelRenderer Shape9; - ModelRenderer Shape10; - ModelRenderer Shape11; - ModelRenderer Shape12; - ModelRenderer Shape13; - ModelRenderer Shape14; - ModelRenderer Shape15; - ModelRenderer Shape16; - ModelRenderer Shape17; - ModelRenderer Shape18; - ModelRenderer Shape27; - ModelRenderer Shape28; - ModelRenderer Shape29; - ModelRenderer Shape30; - ModelRenderer Shape31; - ModelRenderer Shape32; - ModelRenderer Shape33; - ModelRenderer Shape19; - ModelRenderer Shape20; - ModelRenderer Shape21; - ModelRenderer Shape22; - - public ModelMIRVLauncher() { - textureWidth = 128; - textureHeight = 64; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 40, 2, 4); - Shape1.setRotationPoint(-20F, 0F, 0F); - Shape1.setTextureSize(128, 64); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 6); - Shape2.addBox(0F, 0F, 0F, 6, 2, 2); - Shape2.setRotationPoint(-19F, 2F, 1F); - Shape2.setTextureSize(128, 64); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 10); - Shape3.addBox(0F, 0F, 0F, 1, 4, 1); - Shape3.setRotationPoint(-12F, 2F, 1.5F); - Shape3.setTextureSize(128, 64); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 16, 6); - Shape4.addBox(0F, 0F, 0F, 6, 1, 4); - Shape4.setRotationPoint(-10F, 2F, 0F); - Shape4.setTextureSize(128, 64); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape5 = new ModelRenderer(this, 0, 15); - Shape5.addBox(0F, 0F, 0F, 2, 3, 1); - Shape5.setRotationPoint(-7F, 3F, 1.5F); - Shape5.setTextureSize(128, 64); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0F); - Shape6 = new ModelRenderer(this, 4, 10); - Shape6.addBox(0F, 0F, 0F, 3, 3, 1); - Shape6.setRotationPoint(-10F, 3F, 1.5F); - Shape6.setTextureSize(128, 64); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - Shape7 = new ModelRenderer(this, 12, 10); - Shape7.addBox(-1F, 0F, 0F, 1, 2, 1); - Shape7.setRotationPoint(-7F, 3F, 1.5F); - Shape7.setTextureSize(128, 64); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0.5235988F); - Shape8 = new ModelRenderer(this, 36, 6); - Shape8.addBox(0F, 0F, 0F, 10, 1, 4); - Shape8.setRotationPoint(-3F, 2F, 0F); - Shape8.setTextureSize(128, 64); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0F, 0F); - Shape9 = new ModelRenderer(this, 64, 6); - Shape9.addBox(0F, 0F, 0F, 2, 3, 2); - Shape9.setRotationPoint(7F, 2F, 1F); - Shape9.setTextureSize(128, 64); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, 0F); - Shape10 = new ModelRenderer(this, 88, 0); - Shape10.addBox(0F, 0F, 0F, 3, 4, 4); - Shape10.setRotationPoint(17F, -4F, 0F); - Shape10.setTextureSize(128, 64); - Shape10.mirror = true; - setRotation(Shape10, 0F, 0F, 0F); - Shape11 = new ModelRenderer(this, 72, 6); - Shape11.addBox(0F, 0F, 0F, 2, 3, 1); - Shape11.setRotationPoint(18F, -7F, 0F); - Shape11.setTextureSize(128, 64); - Shape11.mirror = true; - setRotation(Shape11, 0F, 0F, 0F); - Shape12 = new ModelRenderer(this, 78, 6); - Shape12.addBox(0F, 0F, 0F, 2, 3, 1); - Shape12.setRotationPoint(18F, -7F, 3F); - Shape12.setTextureSize(128, 64); - Shape12.mirror = true; - setRotation(Shape12, 0F, 0F, 0F); - Shape13 = new ModelRenderer(this, 0, 19); - Shape13.addBox(0F, -4F, 0F, 22, 4, 0); - Shape13.setRotationPoint(-17F, 0F, 1F); - Shape13.setTextureSize(128, 64); - Shape13.mirror = true; - setRotation(Shape13, 0.4363323F, 0F, 0F); - Shape14 = new ModelRenderer(this, 16, 11); - Shape14.addBox(0F, 0F, 0F, 33, 1, 1); - Shape14.setRotationPoint(-17F, -4F, -1F); - Shape14.setTextureSize(128, 64); - Shape14.mirror = true; - setRotation(Shape14, 0F, 0F, 0F); - Shape15 = new ModelRenderer(this, 0, 23); - Shape15.addBox(0F, -4F, 0F, 22, 4, 0); - Shape15.setRotationPoint(-17F, 0F, 3F); - Shape15.setTextureSize(128, 64); - Shape15.mirror = true; - setRotation(Shape15, -0.4363323F, 0F, 0F); - Shape16 = new ModelRenderer(this, 16, 13); - Shape16.addBox(0F, 0F, 0F, 33, 1, 1); - Shape16.setRotationPoint(-17F, -4F, 4F); - Shape16.setTextureSize(128, 64); - Shape16.mirror = true; - setRotation(Shape16, 0F, 0F, 0F); - Shape17 = new ModelRenderer(this, 44, 25); - Shape17.addBox(0F, -4F, 0F, 8, 4, 0); - Shape17.setRotationPoint(8F, 0F, 1F); - Shape17.setTextureSize(128, 64); - Shape17.mirror = true; - setRotation(Shape17, 0.4363323F, 0F, 0F); - Shape18 = new ModelRenderer(this, 44, 21); - Shape18.addBox(0F, -4F, 0F, 8, 4, 0); - Shape18.setRotationPoint(8F, 0F, 3F); - Shape18.setTextureSize(128, 64); - Shape18.mirror = true; - setRotation(Shape18, -0.4363323F, 0F, 0F); - Shape27 = new ModelRenderer(this, 18, 27); - Shape27.addBox(0F, 0F, 0F, 2, 5, 1); - Shape27.setRotationPoint(13F, -5F, 1.5F); - Shape27.setTextureSize(128, 64); - Shape27.mirror = true; - setRotation(Shape27, 0F, 0F, 0F); - Shape28 = new ModelRenderer(this, 84, 6); - Shape28.addBox(0F, 0F, 0F, 1, 3, 1); - Shape28.setRotationPoint(16F, -3F, 1.5F); - Shape28.setTextureSize(128, 64); - Shape28.mirror = true; - setRotation(Shape28, 0F, 0F, 0F); - Shape29 = new ModelRenderer(this, 6, 15); - Shape29.addBox(0F, 0F, 0F, 10, 2, 2); - Shape29.setRotationPoint(3F, -2F, 1F); - Shape29.setTextureSize(128, 64); - Shape29.mirror = true; - setRotation(Shape29, 0F, 0F, 0F); - Shape30 = new ModelRenderer(this, 30, 15); - Shape30.addBox(0F, 0F, 0F, 12, 2, 2); - Shape30.setRotationPoint(-7F, -1F, 4F); - Shape30.setTextureSize(128, 64); - Shape30.mirror = true; - setRotation(Shape30, 0F, 0F, 0F); - Shape31 = new ModelRenderer(this, 44, 19); - Shape31.addBox(0F, 0F, 0F, 14, 1, 1); - Shape31.setRotationPoint(5F, -0.5F, 4.5F); - Shape31.setTextureSize(128, 64); - Shape31.mirror = true; - setRotation(Shape31, 0F, 0F, 0F); - Shape32 = new ModelRenderer(this, 12, 27); - Shape32.addBox(0F, 0F, 0F, 1, 1, 1); - Shape32.setRotationPoint(18F, -0.5F, 3.5F); - Shape32.setTextureSize(128, 64); - Shape32.mirror = true; - setRotation(Shape32, 0F, 0F, 0F); - Shape33 = new ModelRenderer(this, 24, 29); - Shape33.addBox(0F, 0F, 0F, 21, 1, 2); - Shape33.setRotationPoint(-18F, -1F, 1F); - Shape33.setTextureSize(128, 64); - Shape33.mirror = true; - setRotation(Shape33, 0F, 0F, 0F); - Shape19 = new ModelRenderer(this, 0, 33); - Shape19.addBox(0F, 0F, 0F, 10, 4, 2); - Shape19.setRotationPoint(-9F, -5F, 1F); - Shape19.setTextureSize(128, 64); - Shape19.mirror = true; - setRotation(Shape19, 0F, 0F, 0F); - Shape20 = new ModelRenderer(this, 0, 39); - Shape20.addBox(0F, 0F, 0F, 10, 2, 4); - Shape20.setRotationPoint(-9F, -4F, 0F); - Shape20.setTextureSize(128, 64); - Shape20.mirror = true; - setRotation(Shape20, 0F, 0F, 0F); - Shape21 = new ModelRenderer(this, 0, 45); - Shape21.addBox(0F, 0F, 0F, 10, 3, 3); - Shape21.setRotationPoint(-9F, -4.5F, 0.5F); - Shape21.setTextureSize(128, 64); - Shape21.mirror = true; - setRotation(Shape21, 0F, 0F, 0F); - Shape22 = new ModelRenderer(this, 0, 51); - Shape22.addBox(0F, 0F, 0F, 4, 1, 1); - Shape22.setRotationPoint(-6F, -6F, 1F); - Shape22.setTextureSize(128, 64); - Shape22.mirror = true; - setRotation(Shape22, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack item) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape1.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - Shape2.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - Shape6.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - Shape7.render(f5); - Shape8.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - Shape9.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - Shape10.render(f5); - Shape11.render(f5); - Shape12.render(f5); - Shape13.render(f5); - Shape14.render(f5); - Shape15.render(f5); - Shape16.render(f5); - Shape17.render(f5); - Shape18.render(f5); - Shape27.render(f5); - Shape28.render(f5); - Shape29.render(f5); - Shape30.render(f5); - Shape31.render(f5); - Shape32.render(f5); - Shape33.render(f5); - - int ammo = ItemGunBase.getMag(item); - if(ammo > 0) { - Shape19.render(f5); - Shape20.render(f5); - Shape21.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - Shape22.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - } - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelMP.java b/src/main/java/com/hbm/render/model/ModelMP.java deleted file mode 100644 index b9c8c4ebf..000000000 --- a/src/main/java/com/hbm/render/model/ModelMP.java +++ /dev/null @@ -1,234 +0,0 @@ -// Date: 29.08.2016 12:31:19 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelMP extends ModelBase { - // fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - ModelRenderer Shape8; - ModelRenderer Shape9; - ModelRenderer Shape10; - ModelRenderer Shape11; - ModelRenderer Shape12; - ModelRenderer Shape13; - ModelRenderer Shape14; - ModelRenderer Shape15; - ModelRenderer Shape16; - ModelRenderer Shape17; - ModelRenderer Shape18; - ModelRenderer Shape19; - ModelRenderer Shape20; - ModelRenderer Shape21; - ModelRenderer Shape22; - ModelRenderer Shape23; - ModelRenderer Shape24; - ModelRenderer Shape25; - - public ModelMP() { - textureWidth = 128; - textureHeight = 64; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 3, 6, 1); - Shape1.setRotationPoint(-25F, -3F, -2F); - Shape1.setTextureSize(128, 64); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 8, 0); - Shape2.addBox(0F, 0F, 0F, 3, 6, 1); - Shape2.setRotationPoint(-25F, -3F, 2F); - Shape2.setTextureSize(128, 64); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 8); - Shape3.addBox(0F, 0F, 0F, 2, 3, 3); - Shape3.setRotationPoint(-24F, 0F, -1F); - Shape3.setTextureSize(128, 64); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 0, 14); - Shape4.addBox(0F, 0F, 0F, 20, 3, 1); - Shape4.setRotationPoint(-22F, -3F, -2F); - Shape4.setTextureSize(128, 64); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape5 = new ModelRenderer(this, 0, 18); - Shape5.addBox(0F, 0F, 0F, 20, 3, 1); - Shape5.setRotationPoint(-22F, -3F, 2F); - Shape5.setTextureSize(128, 64); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0F); - Shape6 = new ModelRenderer(this, 0, 22); - Shape6.addBox(0F, 0F, 0F, 24, 1, 3); - Shape6.setRotationPoint(-24F, -1F, -1F); - Shape6.setTextureSize(128, 64); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - Shape7 = new ModelRenderer(this, 0, 26); - Shape7.addBox(0F, 0F, 0F, 26, 4, 5); - Shape7.setRotationPoint(-25F, 3F, -2F); - Shape7.setTextureSize(128, 64); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0F); - Shape8 = new ModelRenderer(this, 16, 0); - Shape8.addBox(0F, 0F, 0F, 3, 6, 1); - Shape8.setRotationPoint(-2F, -3F, -2F); - Shape8.setTextureSize(128, 64); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0F, 0F); - Shape9 = new ModelRenderer(this, 24, 0); - Shape9.addBox(0F, 0F, 0F, 3, 6, 1); - Shape9.setRotationPoint(-2F, -3F, 2F); - Shape9.setTextureSize(128, 64); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, 0F); - Shape10 = new ModelRenderer(this, 90, 22); - Shape10.addBox(0F, 0F, 0F, 11, 3, 3); - Shape10.setRotationPoint(-2F, 0F, -1F); - Shape10.setTextureSize(128, 64); - Shape10.mirror = true; - setRotation(Shape10, 0F, 0F, 0F); - Shape11 = new ModelRenderer(this, 19, 38); - Shape11.addBox(0F, 0F, 0F, 26, 1, 4); - Shape11.setRotationPoint(-25F, 7F, -1.5F); - Shape11.setTextureSize(128, 64); - Shape11.mirror = true; - setRotation(Shape11, 0F, 0F, 0F); - Shape12 = new ModelRenderer(this, 78, 35); - Shape12.addBox(0F, 0F, 0F, 20, 5, 5); - Shape12.setRotationPoint(-25F, 8F, -2F); - Shape12.setTextureSize(128, 64); - Shape12.mirror = true; - setRotation(Shape12, 0F, 0F, 0F); - Shape13 = new ModelRenderer(this, 54, 45); - Shape13.addBox(0F, 0F, 0F, 32, 2, 5); - Shape13.setRotationPoint(-5F, 8F, -2F); - Shape13.setTextureSize(128, 64); - Shape13.mirror = true; - setRotation(Shape13, 0F, 0F, 0F); - Shape14 = new ModelRenderer(this, 108, 28); - Shape14.addBox(0F, -6F, 0F, 8, 6, 1); - Shape14.setRotationPoint(1F, 8F, -2F); - Shape14.setTextureSize(128, 64); - Shape14.mirror = true; - setRotation(Shape14, -0.0872665F, 0F, 0F); - Shape15 = new ModelRenderer(this, 84, 52); - Shape15.addBox(0F, 0F, 0F, 18, 9, 3); - Shape15.setRotationPoint(9F, -1F, -1F); - Shape15.setTextureSize(128, 64); - Shape15.mirror = true; - setRotation(Shape15, 0F, 0F, 0F); - Shape16 = new ModelRenderer(this, 0, 43); - Shape16.addBox(0F, -9F, 0F, 18, 9, 1); - Shape16.setRotationPoint(9F, 8F, -2F); - Shape16.setTextureSize(128, 64); - Shape16.mirror = true; - setRotation(Shape16, -0.0872665F, 0F, 0F); - Shape17 = new ModelRenderer(this, 90, 28); - Shape17.addBox(0F, -6F, -1F, 8, 6, 1); - Shape17.setRotationPoint(1F, 8F, 3F); - Shape17.setTextureSize(128, 64); - Shape17.mirror = true; - setRotation(Shape17, 0.0872665F, 0F, 0F); - Shape18 = new ModelRenderer(this, 46, 54); - Shape18.addBox(0F, -9F, -1F, 18, 9, 1); - Shape18.setRotationPoint(9F, 8F, 3F); - Shape18.setTextureSize(128, 64); - Shape18.mirror = true; - setRotation(Shape18, 0.0872665F, 0F, 0F); - Shape19 = new ModelRenderer(this, 0, 35); - Shape19.addBox(0F, -3F, 0F, 4, 3, 5); - Shape19.setRotationPoint(-5F, 13F, -2F); - Shape19.setTextureSize(128, 64); - Shape19.mirror = true; - setRotation(Shape19, 0F, 0F, -0.8726646F); - Shape20 = new ModelRenderer(this, 0, 53); - Shape20.addBox(0F, 0F, 0F, 18, 6, 5); - Shape20.setRotationPoint(9F, 10F, -2F); - Shape20.setTextureSize(128, 64); - Shape20.mirror = true; - setRotation(Shape20, 0F, 0F, 0F); - Shape21 = new ModelRenderer(this, 42, 16); - Shape21.addBox(0F, 0F, 0F, 3, 5, 1); - Shape21.setRotationPoint(1F, 10F, 0F); - Shape21.setTextureSize(128, 64); - Shape21.mirror = true; - setRotation(Shape21, 0F, 0F, 0F); - Shape22 = new ModelRenderer(this, 62, 27); - Shape22.addBox(0F, 0F, 0F, 11, 1, 3); - Shape22.setRotationPoint(-2F, 15F, -1F); - Shape22.setTextureSize(128, 64); - Shape22.mirror = true; - setRotation(Shape22, 0F, 0F, 0F); - Shape23 = new ModelRenderer(this, 62, 31); - Shape23.addBox(-6F, -1F, 0F, 6, 1, 3); - Shape23.setRotationPoint(-2F, 16F, -1F); - Shape23.setTextureSize(128, 64); - Shape23.mirror = true; - setRotation(Shape23, 0F, 0F, 0.5235988F); - Shape24 = new ModelRenderer(this, 20, 10); - Shape24.addBox(0F, 0F, 0F, 2, 1, 3); - Shape24.setRotationPoint(-21F, -2F, -1F); - Shape24.setTextureSize(128, 64); - Shape24.mirror = true; - setRotation(Shape24, 0F, 0F, 0F); - Shape25 = new ModelRenderer(this, 10, 10); - Shape25.addBox(0F, 0F, 0F, 2, 1, 3); - Shape25.setRotationPoint(-5F, -2F, -1F); - Shape25.setTextureSize(128, 64); - Shape25.mirror = true; - setRotation(Shape25, 0F, 0F, 0F); - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - Shape9.render(f5); - Shape10.render(f5); - Shape11.render(f5); - Shape12.render(f5); - Shape13.render(f5); - Shape14.render(f5); - Shape15.render(f5); - Shape16.render(f5); - Shape17.render(f5); - Shape18.render(f5); - Shape19.render(f5); - Shape20.render(f5); - Shape21.render(f5); - Shape22.render(f5); - Shape23.render(f5); - Shape24.render(f5); - Shape25.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelMP40.java b/src/main/java/com/hbm/render/model/ModelMP40.java deleted file mode 100644 index ccd31ff80..000000000 --- a/src/main/java/com/hbm/render/model/ModelMP40.java +++ /dev/null @@ -1,165 +0,0 @@ -// Date: 03.11.2016 19:00:33 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelMP40 extends ModelBase { - // fields - ModelRenderer Body; - ModelRenderer Barrel; - ModelRenderer Scope; - ModelRenderer ClipPivot; - ModelRenderer ClipPivotBack; - ModelRenderer Clip; - ModelRenderer BarrelBottom; - ModelRenderer BodyStock; - ModelRenderer BodyStockBottom; - ModelRenderer BodyBack; - ModelRenderer Handle; - ModelRenderer TriggerFrame; - ModelRenderer Trigger; - ModelRenderer Bar; - ModelRenderer BarFront; - - public ModelMP40() { - textureWidth = 128; - textureHeight = 64; - - Body = new ModelRenderer(this, 0, 0); - Body.addBox(0F, 0F, 0F, 40, 4, 4); - Body.setRotationPoint(-10F, 0F, -2F); - Body.setTextureSize(128, 64); - Body.mirror = true; - setRotation(Body, 0F, 0F, 0F); - Barrel = new ModelRenderer(this, 88, 0); - Barrel.addBox(0F, 0F, 0F, 17, 2, 2); - Barrel.setRotationPoint(-27F, 1F, -1F); - Barrel.setTextureSize(128, 64); - Barrel.mirror = true; - setRotation(Barrel, 0F, 0F, 0F); - Scope = new ModelRenderer(this, 88, 4); - Scope.addBox(0F, 0F, 0F, 2, 3, 2); - Scope.setRotationPoint(-25F, -2F, -1F); - Scope.setTextureSize(128, 64); - Scope.mirror = true; - setRotation(Scope, 0F, 0F, 0F); - ClipPivot = new ModelRenderer(this, 0, 17); - ClipPivot.addBox(0F, 0F, 0F, 4, 5, 3); - ClipPivot.setRotationPoint(-3F, 4F, -1.5F); - ClipPivot.setTextureSize(128, 64); - ClipPivot.mirror = true; - setRotation(ClipPivot, 0F, 0F, 0F); - ClipPivotBack = new ModelRenderer(this, 14, 17); - ClipPivotBack.addBox(0F, 0F, 0F, 3, 3, 3); - ClipPivotBack.setRotationPoint(1F, 4F, -1.5F); - ClipPivotBack.setTextureSize(128, 64); - ClipPivotBack.mirror = true; - setRotation(ClipPivotBack, 0F, 0F, 0F); - Clip = new ModelRenderer(this, 0, 25); - Clip.addBox(0F, 0F, 0F, 3, 18, 2); - Clip.setRotationPoint(-2.5F, 9F, -1F); - Clip.setTextureSize(128, 64); - Clip.mirror = true; - setRotation(Clip, 0F, 0F, 0F); - BarrelBottom = new ModelRenderer(this, 96, 4); - BarrelBottom.addBox(0F, 0F, 0F, 14, 1, 1); - BarrelBottom.setRotationPoint(-24F, 2.5F, -0.5F); - BarrelBottom.setTextureSize(128, 64); - BarrelBottom.mirror = true; - setRotation(BarrelBottom, 0F, 0F, 0F); - BodyStock = new ModelRenderer(this, 0, 8); - BodyStock.addBox(0F, 0F, 0F, 26, 4, 5); - BodyStock.setRotationPoint(4F, 3F, -2.5F); - BodyStock.setTextureSize(128, 64); - BodyStock.mirror = true; - setRotation(BodyStock, 0F, 0F, 0F); - BodyStockBottom = new ModelRenderer(this, 62, 11); - BodyStockBottom.addBox(0F, 0F, 0F, 26, 3, 3); - BodyStockBottom.setRotationPoint(4F, 7F, -1.5F); - BodyStockBottom.setTextureSize(128, 64); - BodyStockBottom.mirror = true; - setRotation(BodyStockBottom, 0F, 0F, 0F); - BodyBack = new ModelRenderer(this, 10, 25); - BodyBack.addBox(0F, 0F, 0F, 7, 7, 3); - BodyBack.setRotationPoint(30F, 0F, -1.5F); - BodyBack.setTextureSize(128, 64); - BodyBack.mirror = true; - setRotation(BodyBack, 0F, 0F, 0.7853982F); - Handle = new ModelRenderer(this, 30, 17); - Handle.addBox(0F, 0F, 0F, 4, 10, 3); - Handle.setRotationPoint(27F, 10F, -1.5F); - Handle.setTextureSize(128, 64); - Handle.mirror = true; - setRotation(Handle, 0F, 0F, -0.4363323F); - TriggerFrame = new ModelRenderer(this, 44, 17); - TriggerFrame.addBox(0F, 0F, 0F, 6, 4, 2); - TriggerFrame.setRotationPoint(23F, 10F, -1F); - TriggerFrame.setTextureSize(128, 64); - TriggerFrame.mirror = true; - setRotation(TriggerFrame, 0F, 0F, 0F); - Trigger = new ModelRenderer(this, 26, 17); - Trigger.addBox(-1F, 0F, 0F, 1, 3, 1); - Trigger.setRotationPoint(27F, 10F, -0.5F); - Trigger.setTextureSize(128, 64); - Trigger.mirror = true; - setRotation(Trigger, 0F, 0F, 0.4363323F); - Bar = new ModelRenderer(this, 60, 17); - Bar.addBox(0F, 0F, 0F, 23, 1, 1); - Bar.setRotationPoint(7F, 7.5F, -3F); - Bar.setTextureSize(128, 64); - Bar.mirror = true; - setRotation(Bar, 0F, 0F, 0F); - BarFront = new ModelRenderer(this, 0, 45); - BarFront.addBox(-2.5F, -0.5F, 0F, 5, 1, 1); - BarFront.setRotationPoint(7F, 8F, -3F); - BarFront.setTextureSize(128, 64); - BarFront.mirror = true; - setRotation(BarFront, 0F, 0F, 0.7853982F); - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Body.render(f5); - Barrel.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - Scope.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - ClipPivot.render(f5); - ClipPivotBack.render(f5); - Clip.render(f5); - BarrelBottom.render(f5); - BodyStock.render(f5); - BodyStockBottom.render(f5); - BodyBack.render(f5); - Handle.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - TriggerFrame.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - Trigger.render(f5); - Bar.render(f5); - BarFront.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelMiniNuke.java b/src/main/java/com/hbm/render/model/ModelMiniNuke.java deleted file mode 100644 index 04deee6a8..000000000 --- a/src/main/java/com/hbm/render/model/ModelMiniNuke.java +++ /dev/null @@ -1,125 +0,0 @@ -// Date: 26.01.2016 16:09:23 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - - - - - - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelMiniNuke extends ModelBase -{ - //fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - ModelRenderer Shape8; - - public ModelMiniNuke() - { - textureWidth = 64; - textureHeight = 32; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 5, 4, 2); - Shape1.setRotationPoint(-2F, -2F, -1F); - Shape1.setTextureSize(64, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 6); - Shape2.addBox(0F, 0F, 0F, 5, 2, 4); - Shape2.setRotationPoint(-2F, -1F, -2F); - Shape2.setTextureSize(64, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 58, 0); - Shape3.addBox(0F, 0F, 0F, 1, 2, 2); - Shape3.setRotationPoint(-3F, -1F, -1F); - Shape3.setTextureSize(64, 32); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 52, 0); - Shape4.addBox(0F, 0F, 0F, 1, 2, 2); - Shape4.setRotationPoint(3F, -1F, -1F); - Shape4.setTextureSize(64, 32); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape5 = new ModelRenderer(this, 46, 0); - Shape5.addBox(0F, 0F, 0F, 2, 2, 1); - Shape5.setRotationPoint(4F, -1F, -2F); - Shape5.setTextureSize(64, 32); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0F); - Shape6 = new ModelRenderer(this, 40, 0); - Shape6.addBox(0F, 0F, 0F, 2, 2, 1); - Shape6.setRotationPoint(4F, -1F, 1F); - Shape6.setTextureSize(64, 32); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - Shape7 = new ModelRenderer(this, 24, 0); - Shape7.addBox(0F, 0F, 0F, 2, 1, 2); - Shape7.setRotationPoint(4F, -2F, -1F); - Shape7.setTextureSize(64, 32); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0F); - Shape8 = new ModelRenderer(this, 32, 0); - Shape8.addBox(0F, 0F, 0F, 2, 1, 2); - Shape8.setRotationPoint(4F, 1F, -1F); - Shape8.setTextureSize(64, 32); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0F, 0F); - } - - @Override -public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - } - - public void renderAll(float f5) - { - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override -public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelNightmare.java b/src/main/java/com/hbm/render/model/ModelNightmare.java deleted file mode 100644 index 750e64b28..000000000 --- a/src/main/java/com/hbm/render/model/ModelNightmare.java +++ /dev/null @@ -1,198 +0,0 @@ -// Date: 08.12.2016 20:24:28 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.weapon.ItemGunBase; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; - -public class ModelNightmare extends ModelBase { - // fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - ModelRenderer Shape8; - ModelRenderer Shape9; - ModelRenderer Shape10; - ModelRenderer Shape11; - ModelRenderer Shape12; - ModelRenderer Bullet1; - ModelRenderer Bullet2; - ModelRenderer Bullet3; - ModelRenderer Bullet4; - ModelRenderer Bullet5; - ModelRenderer Bullet6; - - public ModelNightmare() { - textureWidth = 64; - textureHeight = 32; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 3, 8, 2); - Shape1.setRotationPoint(0F, 0F, 0F); - Shape1.setTextureSize(64, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, -0.3490659F); - Shape2 = new ModelRenderer(this, 42, 0); - Shape2.addBox(0F, 0F, 0F, 9, 6, 2); - Shape2.setRotationPoint(-8F, -5F, 0F); - Shape2.setTextureSize(64, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 14); - Shape3.addBox(0F, 0F, 0F, 4, 2, 1); - Shape3.setRotationPoint(-0.03333334F, -3F, 0.5F); - Shape3.setTextureSize(64, 32); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0.715585F); - Shape4 = new ModelRenderer(this, 22, 0); - Shape4.addBox(0F, 0F, 0F, 6, 4, 3); - Shape4.setRotationPoint(-7F, -4F, 0F); - Shape4.setTextureSize(64, 32); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape5 = new ModelRenderer(this, 0, 0); - Shape5.addBox(0F, 0F, 0F, 1, 1, 1); - Shape5.setRotationPoint(0F, 0F, 0F); - Shape5.setTextureSize(64, 32); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0F); - Shape6 = new ModelRenderer(this, 34, 8); - Shape6.addBox(0F, 0F, 0F, 13, 2, 2); - Shape6.setRotationPoint(-21F, -4F, 0F); - Shape6.setTextureSize(64, 32); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - Shape7 = new ModelRenderer(this, 0, 17); - Shape7.addBox(0F, 0F, 0F, 1, 2, 1); - Shape7.setRotationPoint(2F, -3F, 0.5F); - Shape7.setTextureSize(64, 32); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0.715585F); - Shape8 = new ModelRenderer(this, 4, 17); - Shape8.addBox(0F, 0F, 0F, 2, 1, 1); - Shape8.setRotationPoint(2F, -4F, 0.5F); - Shape8.setTextureSize(64, 32); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0F, 0.715585F); - Shape9 = new ModelRenderer(this, 0, 20); - Shape9.addBox(0F, 0F, 0F, 6, 1, 1); - Shape9.setRotationPoint(-14F, -2F, 0.5F); - Shape9.setTextureSize(64, 32); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, 0F); - Shape10 = new ModelRenderer(this, 26, 8); - Shape10.addBox(0F, 0F, 0F, 2, 2, 2); - Shape10.setRotationPoint(-19F, -5F, 0F); - Shape10.setTextureSize(64, 32); - Shape10.mirror = true; - setRotation(Shape10, 0F, 0F, 0.6108652F); - Shape11 = new ModelRenderer(this, 0, 10); - Shape11.addBox(0F, 0F, 0F, 4, 3, 1); - Shape11.setRotationPoint(-2F, 1F, 0.5F); - Shape11.setTextureSize(64, 32); - Shape11.mirror = true; - setRotation(Shape11, 0F, 0F, 0F); - Shape12 = new ModelRenderer(this, 10, 0); - Shape12.addBox(0F, 0F, 0F, 1, 3, 1); - Shape12.setRotationPoint(0F, 0F, 0.5F); - Shape12.setTextureSize(64, 32); - Shape12.mirror = true; - setRotation(Shape12, 0F, 0F, 0.5235988F); - Bullet1 = new ModelRenderer(this, 6, 22); - Bullet1.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet1.setRotationPoint(-7.5F, -4F, -1F); - Bullet1.setTextureSize(64, 32); - Bullet1.mirror = true; - setRotation(Bullet1, 0F, 0F, 0F); - Bullet2 = new ModelRenderer(this, 0, 22); - Bullet2.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet2.setRotationPoint(-6.5F, -4F, -1F); - Bullet2.setTextureSize(64, 32); - Bullet2.mirror = true; - setRotation(Bullet2, 0F, 0F, 0F); - Bullet3 = new ModelRenderer(this, 6, 22); - Bullet3.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet3.setRotationPoint(-4.5F, -4F, -1F); - Bullet3.setTextureSize(64, 32); - Bullet3.mirror = true; - setRotation(Bullet3, 0F, 0F, 0F); - Bullet4 = new ModelRenderer(this, 0, 22); - Bullet4.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet4.setRotationPoint(-3.5F, -4F, -1F); - Bullet4.setTextureSize(64, 32); - Bullet4.mirror = true; - setRotation(Bullet4, 0F, 0F, 0F); - Bullet5 = new ModelRenderer(this, 6, 22); - Bullet5.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet5.setRotationPoint(-1.5F, -4F, -1F); - Bullet5.setTextureSize(64, 32); - Bullet5.mirror = true; - setRotation(Bullet5, 0F, 0F, 0F); - Bullet6 = new ModelRenderer(this, 0, 22); - Bullet6.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet6.setRotationPoint(-0.5F, -4F, -1F); - Bullet6.setTextureSize(64, 32); - Bullet6.mirror = true; - setRotation(Bullet6, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack item) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - GL11.glDisable(GL11.GL_CULL_FACE); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - Shape9.render(f5); - Shape10.render(f5); - Shape11.render(f5); - Shape12.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - - int ammo = ItemGunBase.getMag(item); - - if(ammo > 0) - Bullet1.render(f5); - if(ammo > 1) - Bullet2.render(f5); - if(ammo > 2) - Bullet3.render(f5); - if(ammo > 3) - Bullet4.render(f5); - if(ammo > 4) - Bullet5.render(f5); - if(ammo > 5) - Bullet6.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelNightmare2.java b/src/main/java/com/hbm/render/model/ModelNightmare2.java deleted file mode 100644 index 143dfe549..000000000 --- a/src/main/java/com/hbm/render/model/ModelNightmare2.java +++ /dev/null @@ -1,265 +0,0 @@ -// Date: 08.12.2016 20:42:59 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.weapon.ItemGunBase; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; - -public class ModelNightmare2 extends ModelBase { - // fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape6; - ModelRenderer Shape7; - ModelRenderer Shape8; - ModelRenderer Shape9; - ModelRenderer Shape10; - ModelRenderer Shape11; - ModelRenderer Shape12; - ModelRenderer Bullet1; - ModelRenderer Bullet2; - ModelRenderer Bullet3; - ModelRenderer Bullet4; - ModelRenderer Bullet5; - ModelRenderer Bullet6; - ModelRenderer Shape13; - ModelRenderer Shape14; - ModelRenderer Shape15; - ModelRenderer Shape16; - ModelRenderer Shape17; - ModelRenderer Shape18; - ModelRenderer Shape19; - - public ModelNightmare2() { - textureWidth = 64; - textureHeight = 32; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 3, 8, 2); - Shape1.setRotationPoint(0F, 0F, 0F); - Shape1.setTextureSize(64, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, -0.3490659F); - Shape2 = new ModelRenderer(this, 42, 0); - Shape2.addBox(0F, 0F, 0F, 9, 6, 2); - Shape2.setRotationPoint(-8F, -5F, 0F); - Shape2.setTextureSize(64, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 14); - Shape3.addBox(0F, 0F, 0F, 4, 2, 1); - Shape3.setRotationPoint(-0.03333334F, -3F, 0.5F); - Shape3.setTextureSize(64, 32); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0.715585F); - Shape4 = new ModelRenderer(this, 22, 0); - Shape4.addBox(0F, 0F, 0F, 6, 4, 3); - Shape4.setRotationPoint(-7F, -4F, 0F); - Shape4.setTextureSize(64, 32); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape6 = new ModelRenderer(this, 34, 8); - Shape6.addBox(0F, 0F, 0F, 13, 2, 2); - Shape6.setRotationPoint(-21F, -4F, 0F); - Shape6.setTextureSize(64, 32); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - Shape7 = new ModelRenderer(this, 0, 17); - Shape7.addBox(0F, 0F, 0F, 1, 2, 1); - Shape7.setRotationPoint(2F, -3F, 0.5F); - Shape7.setTextureSize(64, 32); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0.715585F); - Shape8 = new ModelRenderer(this, 4, 17); - Shape8.addBox(0F, 0F, 0F, 2, 1, 1); - Shape8.setRotationPoint(2F, -4F, 0.5F); - Shape8.setTextureSize(64, 32); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0F, 0.715585F); - Shape9 = new ModelRenderer(this, 0, 20); - Shape9.addBox(0F, 0F, 0F, 6, 1, 1); - Shape9.setRotationPoint(-14F, -2F, 0.5F); - Shape9.setTextureSize(64, 32); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, 0F); - Shape10 = new ModelRenderer(this, 26, 8); - Shape10.addBox(0F, 0F, 0F, 2, 2, 2); - Shape10.setRotationPoint(-19F, -5F, 0F); - Shape10.setTextureSize(64, 32); - Shape10.mirror = true; - setRotation(Shape10, 0F, 0F, 0.6108652F); - Shape11 = new ModelRenderer(this, 0, 10); - Shape11.addBox(0F, 0F, 0F, 4, 3, 1); - Shape11.setRotationPoint(-2F, 1F, 0.5F); - Shape11.setTextureSize(64, 32); - Shape11.mirror = true; - setRotation(Shape11, 0F, 0F, 0F); - Shape12 = new ModelRenderer(this, 10, 0); - Shape12.addBox(0F, 0F, 0F, 1, 3, 1); - Shape12.setRotationPoint(0F, 0F, 0.5F); - Shape12.setTextureSize(64, 32); - Shape12.mirror = true; - setRotation(Shape12, 0F, 0F, 0.5235988F); - Bullet1 = new ModelRenderer(this, 6, 22); - Bullet1.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet1.setRotationPoint(-7.5F, -4F, -1F); - Bullet1.setTextureSize(64, 32); - Bullet1.mirror = true; - setRotation(Bullet1, 0F, 0F, 0F); - Bullet2 = new ModelRenderer(this, 0, 22); - Bullet2.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet2.setRotationPoint(-6.5F, -4F, -1F); - Bullet2.setTextureSize(64, 32); - Bullet2.mirror = true; - setRotation(Bullet2, 0F, 0F, 0F); - Bullet3 = new ModelRenderer(this, 6, 22); - Bullet3.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet3.setRotationPoint(-4.5F, -4F, -1F); - Bullet3.setTextureSize(64, 32); - Bullet3.mirror = true; - setRotation(Bullet3, 0F, 0F, 0F); - Bullet4 = new ModelRenderer(this, 0, 22); - Bullet4.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet4.setRotationPoint(-3.5F, -4F, -1F); - Bullet4.setTextureSize(64, 32); - Bullet4.mirror = true; - setRotation(Bullet4, 0F, 0F, 0F); - Bullet5 = new ModelRenderer(this, 6, 22); - Bullet5.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet5.setRotationPoint(-1.5F, -4F, -1F); - Bullet5.setTextureSize(64, 32); - Bullet5.mirror = true; - setRotation(Bullet5, 0F, 0F, 0F); - Bullet6 = new ModelRenderer(this, 0, 22); - Bullet6.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet6.setRotationPoint(-0.5F, -4F, -1F); - Bullet6.setTextureSize(64, 32); - Bullet6.mirror = true; - setRotation(Bullet6, 0F, 0F, 0F); - Shape13 = new ModelRenderer(this, 14, 0); - Shape13.addBox(0F, 0F, 0F, 1, 1, 2); - Shape13.setRotationPoint(-13F, -3.5F, -2F); - Shape13.setTextureSize(64, 32); - Shape13.mirror = true; - setRotation(Shape13, 0F, 0F, 0F); - Shape14 = new ModelRenderer(this, 34, 12); - Shape14.addBox(0F, 0F, 0F, 6, 1, 1); - Shape14.setRotationPoint(-19F, -3.5F, -1.533333F); - Shape14.setTextureSize(64, 32); - Shape14.mirror = true; - setRotation(Shape14, 0F, 0F, 0F); - Shape15 = new ModelRenderer(this, 10, 4); - Shape15.addBox(0F, 0F, 0F, 1, 5, 1); - Shape15.setRotationPoint(-4F, -5F, 3F); - Shape15.setTextureSize(64, 32); - Shape15.mirror = true; - setRotation(Shape15, 0F, 0F, 0F); - Shape16 = new ModelRenderer(this, 10, 10); - Shape16.addBox(-1F, -4F, 0F, 1, 4, 1); - Shape16.setRotationPoint(-3F, -5F, 3F); - Shape16.setTextureSize(64, 32); - Shape16.mirror = true; - setRotation(Shape16, 0F, 0F, -0.5235988F); - Shape17 = new ModelRenderer(this, 14, 8); - Shape17.addBox(0F, 0F, 0F, 5, 1, 1); - Shape17.setRotationPoint(-10F, -8.5F, 3F); - Shape17.setTextureSize(64, 32); - Shape17.mirror = true; - setRotation(Shape17, 0F, 0F, 0F); - Shape18 = new ModelRenderer(this, 14, 12); - Shape18.addBox(-9F, 0F, 0F, 9, 1, 1); - Shape18.setRotationPoint(-10F, -8.5F, 3F); - Shape18.setTextureSize(64, 32); - Shape18.mirror = true; - setRotation(Shape18, 0F, 0F, -0.6108652F); - Shape19 = new ModelRenderer(this, 14, 10); - Shape19.addBox(-5F, 0F, -1F, 5, 1, 1); - Shape19.setRotationPoint(-16F, -3.5F, 4F); - Shape19.setTextureSize(64, 32); - Shape19.mirror = true; - setRotation(Shape19, 0F, -0.4461433F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack item) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - GL11.glDisable(GL11.GL_CULL_FACE); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - Shape9.render(f5); - Shape10.render(f5); - Shape11.render(f5); - Shape12.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - - Shape13.render(f5); - Shape14.render(f5); - Shape15.render(f5); - Shape16.render(f5); - Shape17.render(f5); - Shape18.render(f5); - Shape19.render(f5); - - int ammo = ItemGunBase.getMag(item); - - if(ammo > 0) - Bullet1.render(f5); - if(ammo > 1) - Bullet2.render(f5); - if(ammo > 2) - Bullet3.render(f5); - if(ammo > 3) - Bullet4.render(f5); - if(ammo > 4) - Bullet5.render(f5); - if(ammo > 5) - Bullet6.render(f5); - - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_LIGHTING); - - Tessellator tessellator = Tessellator.instance; - int color = 0xFF0000; - - tessellator.startDrawing(3); - tessellator.setColorOpaque_I(color); - tessellator.addVertex(-19F / 16F, -3F / 16F, -1F / 16F); - tessellator.addVertex(-150, 0, 0); - tessellator.draw(); - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glPopMatrix(); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelOSIPR.java b/src/main/java/com/hbm/render/model/ModelOSIPR.java deleted file mode 100644 index f63c32e50..000000000 --- a/src/main/java/com/hbm/render/model/ModelOSIPR.java +++ /dev/null @@ -1,249 +0,0 @@ -// Date: 29.08.2016 09:41:02 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelOSIPR extends ModelBase { - // fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - ModelRenderer Shape8; - ModelRenderer Shape9; - ModelRenderer Shape10; - ModelRenderer Shape11; - ModelRenderer Shape12; - ModelRenderer Shape13; - ModelRenderer Shape14; - ModelRenderer Shape15; - ModelRenderer Shape16; - ModelRenderer Shape17; - ModelRenderer Shape18; - ModelRenderer Shape19; - ModelRenderer Shape20; - ModelRenderer Shape21; - ModelRenderer Shape22; - ModelRenderer Shape23; - - public ModelOSIPR() { - textureWidth = 64; - textureHeight = 64; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 8, 3, 3); - Shape1.setRotationPoint(0F, 0F, -0.5F); - Shape1.setTextureSize(64, 64); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 6); - Shape2.addBox(0F, 0F, 0F, 11, 2, 2); - Shape2.setRotationPoint(8F, 0F, 0F); - Shape2.setTextureSize(64, 64); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 10); - Shape3.addBox(0F, 0F, 0F, 2, 3, 2); - Shape3.setRotationPoint(17F, 2F, 0F); - Shape3.setTextureSize(64, 64); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 0, 15); - Shape4.addBox(-5F, -3F, 0F, 5, 3, 2); - Shape4.setRotationPoint(17F, 5F, 0F); - Shape4.setTextureSize(64, 64); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0.4363323F); - Shape5 = new ModelRenderer(this, 8, 10); - Shape5.addBox(-8F, -1F, 0F, 3, 1, 2); - Shape5.setRotationPoint(17F, 5F, 0F); - Shape5.setTextureSize(64, 64); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0.4363323F); - Shape6 = new ModelRenderer(this, 30, 0); - Shape6.addBox(0F, 0F, 0F, 10, 2, 2); - Shape6.setRotationPoint(-10F, 0.5F, 0F); - Shape6.setTextureSize(64, 64); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - Shape7 = new ModelRenderer(this, 54, 0); - Shape7.addBox(0F, 0F, 0F, 3, 2, 1); - Shape7.setRotationPoint(-13F, 0.5F, 0.5F); - Shape7.setTextureSize(64, 64); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0F); - Shape8 = new ModelRenderer(this, 30, 4); - Shape8.addBox(0F, 0F, 0F, 10, 3, 3); - Shape8.setRotationPoint(-16F, 2F, -0.5F); - Shape8.setTextureSize(64, 64); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0F, 0F); - Shape9 = new ModelRenderer(this, 30, 10); - Shape9.addBox(0F, 0F, 0F, 3, 1, 3); - Shape9.setRotationPoint(-19F, 4F, -0.5F); - Shape9.setTextureSize(64, 64); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, 0F); - Shape10 = new ModelRenderer(this, 42, 10); - Shape10.addBox(0F, 0F, 0F, 3, 1, 3); - Shape10.setRotationPoint(-19F, 2F, -0.5F); - Shape10.setTextureSize(64, 64); - Shape10.mirror = true; - setRotation(Shape10, 0F, 0F, 0F); - Shape11 = new ModelRenderer(this, 0, 20); - Shape11.addBox(0F, 0F, 0F, 1, 1, 2); - Shape11.setRotationPoint(8F, -1F, 0F); - Shape11.setTextureSize(64, 64); - Shape11.mirror = true; - setRotation(Shape11, 0F, 0F, 0F); - Shape12 = new ModelRenderer(this, 30, 14); - Shape12.addBox(0F, 0F, 0F, 7, 3, 2); - Shape12.setRotationPoint(0F, 3F, 0F); - Shape12.setTextureSize(64, 64); - Shape12.mirror = true; - setRotation(Shape12, 0F, 0F, 0F); - Shape13 = new ModelRenderer(this, 30, 19); - Shape13.addBox(0F, -2F, 0F, 5, 2, 2); - Shape13.setRotationPoint(7F, 6F, 0F); - Shape13.setTextureSize(64, 64); - Shape13.mirror = true; - setRotation(Shape13, 0F, 0F, -0.9599311F); - Shape14 = new ModelRenderer(this, 30, 23); - Shape14.addBox(0F, 0F, 0F, 2, 5, 1); - Shape14.setRotationPoint(5F, 6F, 0.5F); - Shape14.setTextureSize(64, 64); - Shape14.mirror = true; - setRotation(Shape14, 0F, 0F, -0.3490659F); - Shape15 = new ModelRenderer(this, 0, 23); - Shape15.addBox(0F, 0F, 0F, 7, 2, 1); - Shape15.setRotationPoint(-6F, 5F, 0.5F); - Shape15.setTextureSize(64, 64); - Shape15.mirror = true; - setRotation(Shape15, 0F, 0F, 0F); - Shape16 = new ModelRenderer(this, 0, 26); - Shape16.addBox(0F, 0F, 0F, 8, 1, 2); - Shape16.setRotationPoint(-6F, 7F, 0F); - Shape16.setTextureSize(64, 64); - Shape16.mirror = true; - setRotation(Shape16, 0F, 0F, 0F); - Shape17 = new ModelRenderer(this, 0, 29); - Shape17.addBox(0F, 0F, 0F, 3, 6, 6); - Shape17.setRotationPoint(-9F, 9F, -3F); - Shape17.setTextureSize(64, 64); - Shape17.mirror = true; - setRotation(Shape17, 0.6108652F, 0F, 0F); - Shape18 = new ModelRenderer(this, 0, 41); - Shape18.addBox(0F, 0F, 0F, 3, 6, 7); - Shape18.setRotationPoint(-9F, 8F, -4F); - Shape18.setTextureSize(64, 64); - Shape18.mirror = true; - setRotation(Shape18, 0F, 0F, 0F); - Shape19 = new ModelRenderer(this, 30, 29); - Shape19.addBox(0F, 1F, 6F, 2, 4, 3); - Shape19.setRotationPoint(-8.5F, 9F, -3F); - Shape19.setTextureSize(64, 64); - Shape19.mirror = true; - setRotation(Shape19, 0.6108652F, 0F, 0F); - Shape20 = new ModelRenderer(this, 30, 36); - Shape20.addBox(0F, 0F, 0F, 1, 6, 3); - Shape20.setRotationPoint(-8F, 1F, 3F); - Shape20.setTextureSize(64, 64); - Shape20.mirror = true; - setRotation(Shape20, 0F, 0F, 0F); - Shape21 = new ModelRenderer(this, 30, 45); - Shape21.addBox(0F, -3F, 0F, 1, 5, 4); - Shape21.setRotationPoint(-8F, 2F, 3F); - Shape21.setTextureSize(64, 64); - Shape21.mirror = true; - setRotation(Shape21, 0.9599311F, 0F, 0F); - Shape22 = new ModelRenderer(this, 0, 54); - Shape22.addBox(0F, 0F, 0F, 2, 2, 2); - Shape22.setRotationPoint(-11F, 7F, 0F); - Shape22.setTextureSize(64, 64); - Shape22.mirror = true; - setRotation(Shape22, 0F, 0F, 0F); - Shape23 = new ModelRenderer(this, 0, 58); - Shape23.addBox(-7F, -2F, 0F, 7, 2, 2); - Shape23.setRotationPoint(-11F, 9F, 0F); - Shape23.setTextureSize(64, 64); - Shape23.mirror = true; - setRotation(Shape23, 0F, 0F, 0.148353F); - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - Shape9.render(f5); - Shape10.render(f5); - Shape11.render(f5); - Shape12.render(f5); - Shape13.render(f5); - Shape14.render(f5); - Shape15.render(f5); - Shape16.render(f5); - Shape17.render(f5); - Shape18.render(f5); - Shape19.render(f5); - Shape20.render(f5); - Shape21.render(f5); - Shape22.render(f5); - Shape23.render(f5); - } - - public void renderAll(float f5) { - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - Shape9.render(f5); - Shape10.render(f5); - Shape11.render(f5); - Shape12.render(f5); - Shape13.render(f5); - Shape14.render(f5); - Shape15.render(f5); - Shape16.render(f5); - Shape17.render(f5); - Shape18.render(f5); - Shape19.render(f5); - Shape20.render(f5); - Shape21.render(f5); - Shape22.render(f5); - Shape23.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelPanzerschreck.java b/src/main/java/com/hbm/render/model/ModelPanzerschreck.java deleted file mode 100644 index 573b8cbe0..000000000 --- a/src/main/java/com/hbm/render/model/ModelPanzerschreck.java +++ /dev/null @@ -1,187 +0,0 @@ -// Date: 20.02.2019 22:40:59 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelPanzerschreck extends ModelBase { - // fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - ModelRenderer Shape8; - ModelRenderer Shape9; - ModelRenderer Shape10; - ModelRenderer Shape11; - ModelRenderer Shape12; - ModelRenderer Shape13; - ModelRenderer Shape14; - ModelRenderer Shape15; - ModelRenderer Shape16; - ModelRenderer Shape17; - ModelRenderer Shape18; - - public ModelPanzerschreck() { - textureWidth = 128; - textureHeight = 32; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 40, 2, 3); - Shape1.setRotationPoint(-20F, 0F, -1.5F); - Shape1.setTextureSize(128, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 5); - Shape2.addBox(0F, 0F, 0F, 40, 3, 2); - Shape2.setRotationPoint(-20F, -0.5F, -1F); - Shape2.setTextureSize(128, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 10); - Shape3.addBox(0F, 0F, 0F, 2, 3, 1); - Shape3.setRotationPoint(-7.5F, 2.5F, -0.5F); - Shape3.setTextureSize(128, 32); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 6, 10); - Shape4.addBox(0F, 0F, 0F, 6, 1, 1); - Shape4.setRotationPoint(-7.5F, 5.5F, -0.5F); - Shape4.setTextureSize(128, 32); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape5 = new ModelRenderer(this, 0, 14); - Shape5.addBox(0F, 0F, 0F, 2, 3, 1); - Shape5.setRotationPoint(-1.5F, 2.5F, -0.5F); - Shape5.setTextureSize(128, 32); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0F); - Shape6 = new ModelRenderer(this, 6, 12); - Shape6.addBox(0F, 0F, 0F, 1, 3, 1); - Shape6.setRotationPoint(0.5F, 2.5F, -0.5F); - Shape6.setTextureSize(128, 32); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - Shape7 = new ModelRenderer(this, 10, 12); - Shape7.addBox(-1F, 0F, 0F, 1, 2, 1); - Shape7.setRotationPoint(-2F, 2.5F, -0.5F); - Shape7.setTextureSize(128, 32); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0.3490659F); - Shape8 = new ModelRenderer(this, 0, 18); - Shape8.addBox(0F, 0F, 0F, 1, 4, 4); - Shape8.setRotationPoint(22F, -1F, -2F); - Shape8.setTextureSize(128, 32); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0F, 0F); - Shape9 = new ModelRenderer(this, 20, 10); - Shape9.addBox(-3F, 0F, 0F, 3, 1, 1); - Shape9.setRotationPoint(22F, -1F, -0.5F); - Shape9.setTextureSize(128, 32); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, -0.2617994F); - Shape10 = new ModelRenderer(this, 14, 12); - Shape10.addBox(-3F, 0F, 0F, 3, 1, 1); - Shape10.setRotationPoint(22F, 0.5F, -2F); - Shape10.setTextureSize(128, 32); - Shape10.mirror = true; - setRotation(Shape10, 0F, 0.2617994F, 0F); - Shape11 = new ModelRenderer(this, 14, 14); - Shape11.addBox(-3F, 0F, -1F, 3, 1, 1); - Shape11.setRotationPoint(22F, 0.5F, 2F); - Shape11.setTextureSize(128, 32); - Shape11.mirror = true; - setRotation(Shape11, 0F, -0.2617994F, 0F); - Shape12 = new ModelRenderer(this, 28, 10); - Shape12.addBox(-3F, -1F, 0F, 3, 1, 1); - Shape12.setRotationPoint(22F, 3F, -0.5F); - Shape12.setTextureSize(128, 32); - Shape12.mirror = true; - setRotation(Shape12, 0F, 0F, 0.2617994F); - Shape13 = new ModelRenderer(this, 22, 12); - Shape13.addBox(0F, 0F, 0F, 1, 1, 3); - Shape13.setRotationPoint(-20F, -1.5F, -1.5F); - Shape13.setTextureSize(128, 32); - Shape13.mirror = true; - setRotation(Shape13, 0F, 0F, 0F); - Shape14 = new ModelRenderer(this, 30, 12); - Shape14.addBox(0F, 0F, 0F, 1, 1, 3); - Shape14.setRotationPoint(-20F, -2.5F, -1.5F); - Shape14.setTextureSize(128, 32); - Shape14.mirror = true; - setRotation(Shape14, 0F, 0F, 0F); - Shape15 = new ModelRenderer(this, 36, 10); - Shape15.addBox(0F, 0F, 0F, 3, 1, 1); - Shape15.setRotationPoint(15F, -1F, -2F); - Shape15.setTextureSize(128, 32); - Shape15.mirror = true; - setRotation(Shape15, 0F, 0F, 0F); - Shape16 = new ModelRenderer(this, 108, 10); - Shape16.addBox(0F, 0F, 0F, 0, 12, 10); - Shape16.setRotationPoint(-10F, -5F, -8.5F); - Shape16.setTextureSize(128, 32); - Shape16.mirror = true; - setRotation(Shape16, 0F, 0F, 0F); - Shape17 = new ModelRenderer(this, 38, 12); - Shape17.addBox(0F, 0F, 0F, 1, 3, 1); - Shape17.setRotationPoint(3.5F, 2.5F, -0.5F); - Shape17.setTextureSize(128, 32); - Shape17.mirror = true; - setRotation(Shape17, 0F, 0F, -0.4363323F); - Shape18 = new ModelRenderer(this, 10, 15); - Shape18.addBox(0F, 0F, 0F, 1, 3, 1); - Shape18.setRotationPoint(5F, 2.5F, -0.5F); - Shape18.setTextureSize(128, 32); - Shape18.mirror = true; - setRotation(Shape18, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - GL11.glDisable(GL11.GL_CULL_FACE); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - Shape9.render(f5); - Shape10.render(f5); - Shape11.render(f5); - Shape12.render(f5); - Shape13.render(f5); - Shape14.render(f5); - Shape15.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - Shape16.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - Shape17.render(f5); - Shape18.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelPip.java b/src/main/java/com/hbm/render/model/ModelPip.java deleted file mode 100755 index 6fe5f40c2..000000000 --- a/src/main/java/com/hbm/render/model/ModelPip.java +++ /dev/null @@ -1,223 +0,0 @@ -//This File was created with the Minecraft-SMP Modelling Toolbox 2.3.0.0 -// Copyright (C) 2017 Minecraft-SMP.de -// This file is for Flan's Flying Mod Version 4.0.x+ - -// Model: Pip -// Model Creator: -// Created on:09.12.2017 - 12:48:52 -// Last changed on: 09.12.2017 - 12:48:52 - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelPip extends ModelBase -{ - - public ModelRenderer pipModel[]; - - int textureX = 128; - int textureY = 128; - - public ModelPip() - { - textureWidth = 128; - textureHeight = 128; - pipModel = new ModelRenderer[39]; - pipModel[0] = new ModelRenderer(this, 1, 1); // Box 0 - pipModel[1] = new ModelRenderer(this, 49, 1); // Box 1 - pipModel[2] = new ModelRenderer(this, 97, 1); // Box 2 - pipModel[3] = new ModelRenderer(this, 1, 9); // Box 3 - pipModel[4] = new ModelRenderer(this, 25, 9); // Box 4 - pipModel[5] = new ModelRenderer(this, 49, 9); // Box 5 - pipModel[6] = new ModelRenderer(this, 73, 9); // Box 6 - pipModel[7] = new ModelRenderer(this, 81, 17); // Box 7 - pipModel[8] = new ModelRenderer(this, 97, 17); // Box 10 - pipModel[9] = new ModelRenderer(this, 1, 25); // Box 12 - pipModel[10] = new ModelRenderer(this, 1, 9); // Box 14 - pipModel[11] = new ModelRenderer(this, 17, 25); // Box 15 - pipModel[12] = new ModelRenderer(this, 41, 25); // Box 16 - pipModel[13] = new ModelRenderer(this, 49, 9); // Box 17 - pipModel[14] = new ModelRenderer(this, 113, 17); // Box 18 - pipModel[15] = new ModelRenderer(this, 73, 17); // Box 19 - pipModel[16] = new ModelRenderer(this, 65, 25); // Box 20 - pipModel[17] = new ModelRenderer(this, 113, 25); // Box 22 - pipModel[18] = new ModelRenderer(this, 65, 25); // Box 23 - pipModel[19] = new ModelRenderer(this, 1, 33); // Box 24 - pipModel[20] = new ModelRenderer(this, 81, 33); // Box 25 - pipModel[21] = new ModelRenderer(this, 1, 41); // Box 26 - pipModel[22] = new ModelRenderer(this, 89, 33); // Box 27 - pipModel[23] = new ModelRenderer(this, 105, 33); // Box 28 - pipModel[24] = new ModelRenderer(this, 33, 41); // Box 29 - pipModel[25] = new ModelRenderer(this, 49, 41); // Box 30 - pipModel[26] = new ModelRenderer(this, 65, 41); // Box 31 - pipModel[27] = new ModelRenderer(this, 105, 41); // Box 32 - pipModel[28] = new ModelRenderer(this, 1, 49); // Box 33 - pipModel[29] = new ModelRenderer(this, 17, 49); // Box 34 - pipModel[30] = new ModelRenderer(this, 33, 49); // Box 35 - pipModel[31] = new ModelRenderer(this, 57, 49); // Box 36 - pipModel[32] = new ModelRenderer(this, 81, 49); // Box 37 - pipModel[33] = new ModelRenderer(this, 105, 49); // Box 38 - pipModel[34] = new ModelRenderer(this, 1, 57); // Box 39 - pipModel[35] = new ModelRenderer(this, 89, 25); // Box 40 - pipModel[36] = new ModelRenderer(this, 97, 41); // Box 41 - pipModel[37] = new ModelRenderer(this, 49, 49); // Box 42 - pipModel[38] = new ModelRenderer(this, 73, 57); // Box 43 - - pipModel[0].addBox(0F, 0F, 0F, 20, 3, 2, 0F); // Box 0 - pipModel[0].setRotationPoint(-20F, -5.5F, -1F); - - pipModel[1].addBox(0F, 0F, 0F, 20, 2, 3, 0F); // Box 1 - pipModel[1].setRotationPoint(-20F, -5F, -1.5F); - - pipModel[2].addBox(0F, 0F, 0F, 10, 8, 3, 0F); // Box 2 - pipModel[2].setRotationPoint(0F, -6F, -1.5F); - - pipModel[3].addBox(0F, 0F, 0F, 6, 5, 5, 0F); // Box 3 - pipModel[3].setRotationPoint(2F, -5F, -2.5F); - - pipModel[4].addBox(0F, 0F, 0F, 6, 6, 4, 0F); // Box 4 - pipModel[4].setRotationPoint(2F, -5.5F, -2F); - - pipModel[5].addBox(0F, 0F, 0F, 6, 4, 6, 0F); // Box 5 - pipModel[5].setRotationPoint(2F, -4.5F, -3F); - - pipModel[6].addBox(0F, 0F, 0F, 7, 2, 1, 0F); // Box 6 - pipModel[6].setRotationPoint(-7F, -2.5F, -0.5F); - - pipModel[7].addBox(-6F, 0F, 0F, 6, 3, 1, 0F); // Box 7 - pipModel[7].setRotationPoint(15F, -2.5F, -1.5F); - pipModel[7].rotateAngleZ = 0.61086524F; - - pipModel[8].addBox(0F, 0F, 0F, 5, 5, 3, 0F); // Box 10 - pipModel[8].setRotationPoint(10F, -2.5F, -1.5F); - - pipModel[9].addBox(-6F, 0F, 0F, 6, 3, 1, 0F); // Box 12 - pipModel[9].setRotationPoint(15F, -2.5F, 0.5F); - pipModel[9].rotateAngleZ = 0.61086524F; - - pipModel[10].addBox(-6F, 0F, 0F, 1, 3, 1, 0F); // Box 14 - pipModel[10].setRotationPoint(15F, -2.5F, -0.5F); - pipModel[10].rotateAngleZ = 0.61086524F; - - pipModel[11].addBox(0F, 0F, 0F, 6, 6, 4, 0F); // Box 15 - pipModel[11].setRotationPoint(12F, 4F, -2F); - - pipModel[12].addBox(-5F, -7F, 0F, 5, 7, 4, 0F); // Box 16 - pipModel[12].setRotationPoint(18F, 4F, -2F); - pipModel[12].rotateAngleZ = -0.52359878F; - - pipModel[13].addBox(0F, -2F, 0F, 1, 2, 1, 0F); // Box 17 - pipModel[13].setRotationPoint(12F, -2.5F, -0.5F); - pipModel[13].rotateAngleZ = 0.34906585F; - - pipModel[14].addBox(-0.5F, -3F, 0F, 3, 1, 1, 0F); // Box 18 - pipModel[14].setRotationPoint(12F, -2.5F, -0.5F); - pipModel[14].rotateAngleZ = 0.34906585F; - - pipModel[15].addBox(0F, 0F, 0F, 1, 3, 5, 0F); // Box 19 - pipModel[15].setRotationPoint(8F, -4F, -2.5F); - - pipModel[16].addBox(0F, 0F, 0F, 1, 3, 5, 0F); // Box 20 - pipModel[16].setRotationPoint(1F, -4F, -2.5F); - - pipModel[17].addBox(0F, 0F, 0F, 5, 3, 2, 0F); // Box 22 - pipModel[17].setRotationPoint(5F, 2F, -1F); - - pipModel[18].addBox(-1F, -0.5F, 0F, 1, 3, 1, 0F); // Box 23 - pipModel[18].setRotationPoint(9F, 2F, -0.5F); - pipModel[18].rotateAngleZ = 0.43633231F; - - pipModel[19].addBox(0F, 0F, 0F, 5, 1, 2, 0F); // Box 24 - pipModel[19].setRotationPoint(-19.5F, -6.5F, -1F); - - pipModel[20].addBox(0F, 0F, 0F, 4, 1, 1, 0F); // Box 25 - pipModel[20].setRotationPoint(-19F, -7.5F, -0.5F); - pipModel[20].rotateAngleZ = 0.26179939F; - - pipModel[21].addBox(0F, 0F, 0F, 15, 1, 2, 0F); // Box 26 - pipModel[21].setRotationPoint(-4F, -7F, -1F); - - pipModel[22].addBox(1F, 0F, 0F, 3, 4, 3, 0F); // Box 27 - pipModel[22].setRotationPoint(-3F, -12F, -1.5F); - - pipModel[23].addBox(1F, 0F, 0F, 3, 3, 4, 0F); // Box 28 - pipModel[23].setRotationPoint(-3F, -11.5F, -2F); - - pipModel[24].addBox(0F, 0F, 0F, 3, 3, 4, 0F); // Box 29 - pipModel[24].setRotationPoint(6F, -11.5F, -2F); - - pipModel[25].addBox(0F, 0F, 0F, 3, 4, 3, 0F); // Box 30 - pipModel[25].setRotationPoint(6F, -12F, -1.5F); - - pipModel[26].addBox(0F, 0F, 0F, 13, 3, 3, 0F); // Box 31 - pipModel[26].setRotationPoint(-3F, -11.5F, -1.5F); - - pipModel[27].addBox(0F, 0F, 0F, 3, 4, 3, 0F); // Box 32 - pipModel[27].setRotationPoint(-6F, -12F, -1.5F); - - pipModel[28].addBox(0F, 0F, 0F, 3, 3, 4, 0F); // Box 33 - pipModel[28].setRotationPoint(-6F, -11.5F, -2F); - - pipModel[29].addBox(0F, 0F, 0F, 4, 5, 3, 0F); // Box 34 - pipModel[29].setRotationPoint(-10F, -12.5F, -1.5F); - - pipModel[30].addBox(0F, 0F, 0F, 4, 3, 5, 0F); // Box 35 - pipModel[30].setRotationPoint(-10F, -11.5F, -2.5F); - - pipModel[31].addBox(0F, 0F, 0F, 4, 4, 4, 0F); // Box 36 - pipModel[31].setRotationPoint(-10F, -12F, -2F); - - pipModel[32].addBox(0F, 0F, 0F, 5, 3, 4, 0F); // Box 37 - pipModel[32].setRotationPoint(10F, -11.5F, -2F); - - pipModel[33].addBox(0F, 0F, 0F, 5, 4, 3, 0F); // Box 38 - pipModel[33].setRotationPoint(10F, -12F, -1.5F); - - pipModel[34].addBox(0F, 0F, 0F, 3, 4, 4, 0F); // Box 39 - pipModel[34].setRotationPoint(2F, -12F, -2F); - - pipModel[35].addBox(0F, 0F, 0F, 3, 1, 1, 0F); // Box 40 - pipModel[35].setRotationPoint(-2F, -8F, -0.5F); - - pipModel[36].addBox(0F, 0F, 0F, 3, 1, 1, 0F); // Box 41 - pipModel[36].setRotationPoint(6F, -8F, -0.5F); - - pipModel[37].addBox(0F, 0F, 0F, 2, 1, 2, 0F); // Box 42 - pipModel[37].setRotationPoint(2.5F, -12.5F, -1F); - - pipModel[38].addBox(0F, 0F, 0F, 3, 1, 3, 0F); // Box 43 - pipModel[38].setRotationPoint(2F, -13.5F, -1.5F); - - - for(int i = 0; i < 39; i++) - { - pipModel[i].setTextureSize(textureX, textureY); - pipModel[i].mirror = true; - } - - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - GL11.glDisable(GL11.GL_CULL_FACE); - for(int i = 0; i < 39; i++) - { - pipModel[i].render(f5); - } - GL11.glEnable(GL11.GL_CULL_FACE); - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/render/model/ModelPoles.java b/src/main/java/com/hbm/render/model/ModelPoles.java deleted file mode 100644 index 8c18b69ed..000000000 --- a/src/main/java/com/hbm/render/model/ModelPoles.java +++ /dev/null @@ -1,134 +0,0 @@ -// Date: 04.10.2015 20:54:36 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - - - - - - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelPoles extends ModelBase -{ - //fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - ModelRenderer Shape8; - ModelRenderer Shape9; - - public ModelPoles() - { - textureWidth = 64; - textureHeight = 64; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 2, 16, 2); - Shape1.setRotationPoint(-1F, 8F, 4F); - Shape1.setTextureSize(64, 64); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 0); - Shape2.addBox(0F, 0F, 0F, 2, 16, 2); - Shape2.setRotationPoint(4F, 8F, -6F); - Shape2.setTextureSize(64, 64); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 0); - Shape3.addBox(0F, 0F, 0F, 2, 16, 2); - Shape3.setRotationPoint(-6F, 8F, -6F); - Shape3.setTextureSize(64, 64); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 0, 41); - Shape4.addBox(0F, -1F, 0F, 13, 1, 1); - Shape4.setRotationPoint(-4F, 21F, -5.5F); - Shape4.setTextureSize(64, 64); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, -0.7853982F); - Shape5 = new ModelRenderer(this, 0, 41); - Shape5.addBox(0F, 0F, 0F, 13, 1, 1); - Shape5.setRotationPoint(4F, 21F, -5.5F); - Shape5.setTextureSize(64, 64); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, -2.356194F); - Shape6 = new ModelRenderer(this, 0, 18); - Shape6.addBox(0F, -1F, 0F, 1, 1, 15); - Shape6.setRotationPoint(-5.533333F, 21F, -4F); - Shape6.setTextureSize(64, 64); - Shape6.mirror = true; - setRotation(Shape6, 0.7853982F, 0.4886922F, 0F); - Shape7 = new ModelRenderer(this, 0, 18); - Shape7.addBox(0F, 0F, 0F, 1, 1, 15); - Shape7.setRotationPoint(-5.5F, 12F, -4F); - Shape7.setTextureSize(64, 64); - Shape7.mirror = true; - setRotation(Shape7, -0.7853982F, 0.4886922F, 0F); - Shape8 = new ModelRenderer(this, 0, 18); - Shape8.addBox(-1F, 0F, 0F, 1, 1, 15); - Shape8.setRotationPoint(5.5F, 12F, -4F); - Shape8.setTextureSize(64, 64); - Shape8.mirror = true; - setRotation(Shape8, -0.7853982F, -0.4886922F, 0F); - Shape9 = new ModelRenderer(this, 0, 18); - Shape9.addBox(-1F, -1F, 0F, 1, 1, 15); - Shape9.setRotationPoint(5.5F, 21F, -4F); - Shape9.setTextureSize(64, 64); - Shape9.mirror = true; - setRotation(Shape9, 0.7853982F, -0.4886922F, 0F); - } - - @Override -public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - Shape9.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void renderModel(float f) - { - Shape1.render(f); - Shape2.render(f); - Shape3.render(f); - Shape4.render(f); - Shape5.render(f); - Shape6.render(f); - Shape7.render(f); - Shape8.render(f); - Shape9.render(f); - } - - @Override -public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelRPG.java b/src/main/java/com/hbm/render/model/ModelRPG.java deleted file mode 100644 index a09361821..000000000 --- a/src/main/java/com/hbm/render/model/ModelRPG.java +++ /dev/null @@ -1,133 +0,0 @@ -// Date: 20.07.2015 22:06:51 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - - - - - - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelRPG extends ModelBase -{ - //fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - ModelRenderer Shape8; - ModelRenderer Shape9; - - public ModelRPG() - { - textureWidth = 64; - textureHeight = 32; - - Shape1 = new ModelRenderer(this, 0, 27); - Shape1.addBox(0F, 0F, 0F, 1, 4, 1); - Shape1.setRotationPoint(0F, -1F, 0F); - Shape1.setTextureSize(64, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 24); - Shape2.addBox(0F, 0F, 0F, 1, 2, 1); - Shape2.setRotationPoint(3F, 0F, 0F); - Shape2.setTextureSize(64, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 18); - Shape3.addBox(0F, 0F, 0F, 8, 2, 2); - Shape3.setRotationPoint(2F, -2F, -0.5F); - Shape3.setTextureSize(64, 32); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 0, 16); - Shape4.addBox(0F, 0F, 0F, 4, 1, 1); - Shape4.setRotationPoint(10F, -1.5F, 0F); - Shape4.setTextureSize(64, 32); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape5 = new ModelRenderer(this, 0, 12); - Shape5.addBox(0F, 0F, 0F, 3, 2, 2); - Shape5.setRotationPoint(14F, -2F, -0.5F); - Shape5.setTextureSize(64, 32); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0F); - Shape6 = new ModelRenderer(this, 4, 30); - Shape6.addBox(0F, 0F, 0F, 4, 1, 1); - Shape6.setRotationPoint(-2F, -1.5F, 0F); - Shape6.setTextureSize(64, 32); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - Shape7 = new ModelRenderer(this, 30, 0); - Shape7.addBox(0F, 0F, 0F, 1, 2, 2); - Shape7.setRotationPoint(-3F, -2F, -0.5F); - Shape7.setTextureSize(64, 32); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0F); - Shape8 = new ModelRenderer(this, 13, 0); - Shape8.addBox(0F, 0F, 0F, 5, 1, 1); - Shape8.setRotationPoint(-8F, -1.5F, 0F); - Shape8.setTextureSize(64, 32); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0F, 0F); - Shape9 = new ModelRenderer(this, 0, 0); - Shape9.addBox(0F, 0F, 0F, 3, 2, 2); - Shape9.setRotationPoint(-6.5F, -2F, -0.5F); - Shape9.setTextureSize(64, 32); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, 0F); - } - - @Override -public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - Shape9.render(f5); - } - - public void renderModel(float f) { - Shape1.render(f); - Shape2.render(f); - Shape3.render(f); - Shape4.render(f); - Shape5.render(f); - Shape6.render(f); - Shape7.render(f); - Shape8.render(f); - Shape9.render(f); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override -public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelRainbow.java b/src/main/java/com/hbm/render/model/ModelRainbow.java deleted file mode 100644 index f9d1a6ed0..000000000 --- a/src/main/java/com/hbm/render/model/ModelRainbow.java +++ /dev/null @@ -1,125 +0,0 @@ -// Date: 30.07.2016 17:36:41 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - - - - - - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelRainbow extends ModelBase -{ - //fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - ModelRenderer Shape8; - - public ModelRainbow() - { - textureWidth = 32; - textureHeight = 32; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 8, 2, 2); - Shape1.setRotationPoint(-4F, -1F, 1F); - Shape1.setTextureSize(32, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 16); - Shape2.addBox(0F, 0F, 0F, 8, 1, 1); - Shape2.setRotationPoint(-5F, -4F, -1F); - Shape2.setTextureSize(32, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 4); - Shape3.addBox(0F, 0F, 0F, 6, 1, 1); - Shape3.setRotationPoint(-1F, -1F, -2F); - Shape3.setTextureSize(32, 32); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 0, 6); - Shape4.addBox(0F, 0F, 0F, 8, 1, 1); - Shape4.setRotationPoint(-6F, 2F, -1F); - Shape4.setTextureSize(32, 32); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape5 = new ModelRenderer(this, 0, 14); - Shape5.addBox(0F, 0F, 0F, 6, 1, 1); - Shape5.setRotationPoint(-3F, -3F, 2F); - Shape5.setTextureSize(32, 32); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0F); - Shape6 = new ModelRenderer(this, 0, 12); - Shape6.addBox(0F, 0F, 0F, 8, 1, 1); - Shape6.setRotationPoint(-3F, -4F, 4F); - Shape6.setTextureSize(32, 32); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - Shape7 = new ModelRenderer(this, 0, 10); - Shape7.addBox(0F, 0F, 0F, 7, 1, 1); - Shape7.setRotationPoint(-6F, 0F, 5F); - Shape7.setTextureSize(32, 32); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0F); - Shape8 = new ModelRenderer(this, 0, 8); - Shape8.addBox(0F, 0F, 0F, 6, 1, 1); - Shape8.setRotationPoint(-2F, 2F, 3F); - Shape8.setTextureSize(32, 32); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0F, 0F); - } - - @Override -public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override -public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - - public void renderAll(float f5) - { - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelRocket.java b/src/main/java/com/hbm/render/model/ModelRocket.java deleted file mode 100644 index 78dbc2895..000000000 --- a/src/main/java/com/hbm/render/model/ModelRocket.java +++ /dev/null @@ -1,121 +0,0 @@ -// Date: 20.01.2019 12:33:09 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelRocket extends ModelBase { - // fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - ModelRenderer Shape8; - ModelRenderer Shape9; - - public ModelRocket() { - textureWidth = 32; - textureHeight = 32; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 7, 2, 2); - Shape1.setRotationPoint(0F, -1F, -1F); - Shape1.setTextureSize(32, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 4); - Shape2.addBox(0F, 0F, 0F, 3, 1, 1); - Shape2.setRotationPoint(-3F, -0.5F, -0.5F); - Shape2.setTextureSize(32, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 8, 4); - Shape3.addBox(0F, 0F, 0F, 3, 1, 1); - Shape3.setRotationPoint(-3F, -0.5F, -0.5F); - Shape3.setTextureSize(32, 32); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0.1745329F, 0F); - Shape4 = new ModelRenderer(this, 0, 6); - Shape4.addBox(0F, 0F, -1F, 3, 1, 1); - Shape4.setRotationPoint(-3F, -0.5F, 0.5F); - Shape4.setTextureSize(32, 32); - Shape4.mirror = true; - setRotation(Shape4, 0F, -0.1745329F, 0F); - Shape5 = new ModelRenderer(this, 8, 6); - Shape5.addBox(0F, 0F, 0F, 3, 1, 1); - Shape5.setRotationPoint(-3F, -0.5F, -0.5F); - Shape5.setTextureSize(32, 32); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, -0.1745329F); - Shape6 = new ModelRenderer(this, 0, 8); - Shape6.addBox(0F, -1F, 0F, 3, 1, 1); - Shape6.setRotationPoint(-3F, 0.5F, -0.5F); - Shape6.setTextureSize(32, 32); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0.1745329F); - Shape7 = new ModelRenderer(this, 0, 10); - Shape7.addBox(0F, 0F, 0F, 4, 4, 0); - Shape7.setRotationPoint(4F, 0F, 0F); - Shape7.setTextureSize(32, 32); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, -0.7853982F); - Shape8 = new ModelRenderer(this, 0, 14); - Shape8.addBox(0F, 0F, 0F, 4, 0, 4); - Shape8.setRotationPoint(4F, 0F, 0F); - Shape8.setTextureSize(32, 32); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0.7853982F, 0F); - Shape9 = new ModelRenderer(this, 8, 8); - Shape9.addBox(0F, 0F, 0F, 1, 1, 1); - Shape9.setRotationPoint(7F, -0.5F, -0.5F); - Shape9.setTextureSize(32, 32); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - Shape9.render(f5); - } - - public void renderAll(float f5) { - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - Shape9.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelRocketOld.java b/src/main/java/com/hbm/render/model/ModelRocketOld.java deleted file mode 100644 index a1c846d49..000000000 --- a/src/main/java/com/hbm/render/model/ModelRocketOld.java +++ /dev/null @@ -1,63 +0,0 @@ -// Date: 20.07.2015 22:08:24 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelRocketOld extends ModelBase { - // fields - ModelRenderer Shape7; - ModelRenderer Shape8; - ModelRenderer Shape9; - - public ModelRocketOld() { - textureWidth = 64; - textureHeight = 32; - - Shape7 = new ModelRenderer(this, 10, 0); - Shape7.addBox(0F, 0F, 0F, 1, 2, 2); - Shape7.setRotationPoint(-3F, -2F, -0.5F); - Shape7.setTextureSize(64, 32); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0F); - Shape8 = new ModelRenderer(this, 0, 4); - Shape8.addBox(0F, 0F, 0F, 10, 1, 1); - Shape8.setRotationPoint(-8F, -1.5F, 0F); - Shape8.setTextureSize(64, 32); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0F, 0F); - Shape9 = new ModelRenderer(this, 0, 0); - Shape9.addBox(0F, 0F, 0F, 3, 2, 2); - Shape9.setRotationPoint(-6.5F, -2F, -0.5F); - Shape9.setTextureSize(64, 32); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, 0F); - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape7.render(f5); - Shape8.render(f5); - Shape9.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelSRocket.java b/src/main/java/com/hbm/render/model/ModelSRocket.java deleted file mode 100644 index 6185db735..000000000 --- a/src/main/java/com/hbm/render/model/ModelSRocket.java +++ /dev/null @@ -1,94 +0,0 @@ -// Date: 23.02.2018 15:06:23 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelSRocket extends ModelBase { - // fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - - public ModelSRocket() { - textureWidth = 64; - textureHeight = 16; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 24, 2, 2); - Shape1.setRotationPoint(-12F, -1F, -1F); - Shape1.setTextureSize(64, 16); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 4); - Shape2.addBox(0F, 0F, 0F, 1, 6, 0); - Shape2.setRotationPoint(7F, -3F, 0F); - Shape2.setTextureSize(64, 16); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 2, 4); - Shape3.addBox(0F, 0F, 0F, 1, 0, 6); - Shape3.setRotationPoint(7F, 0F, -3F); - Shape3.setTextureSize(64, 16); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 16, 4); - Shape4.addBox(0F, 0F, 0F, 1, 4, 0); - Shape4.setRotationPoint(-10F, -2F, 0F); - Shape4.setTextureSize(64, 16); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape5 = new ModelRenderer(this, 0, 10); - Shape5.addBox(0F, 0F, 0F, 1, 0, 4); - Shape5.setRotationPoint(-10F, 0F, -2F); - Shape5.setTextureSize(64, 16); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0F); - Shape6 = new ModelRenderer(this, 18, 4); - Shape6.addBox(0F, 0F, 0F, 2, 3, 3); - Shape6.setRotationPoint(9F, -1.5F, -1.5F); - Shape6.setTextureSize(64, 16); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - - public void renderAll(float f5) { - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelSpark.java b/src/main/java/com/hbm/render/model/ModelSpark.java deleted file mode 100644 index 9125c0944..000000000 --- a/src/main/java/com/hbm/render/model/ModelSpark.java +++ /dev/null @@ -1,189 +0,0 @@ -// Date: 14.02.2017 20:27:10 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - - - - - - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelSpark extends ModelBase -{ - //fields - ModelRenderer BarrelMain; - ModelRenderer BarrelSide; - ModelRenderer PlateFront; - ModelRenderer Sight; - ModelRenderer Grip; - ModelRenderer Cell1; - ModelRenderer Cell2; - ModelRenderer Cell3; - ModelRenderer Cell4; - ModelRenderer Cell5; - ModelRenderer Cell8; - ModelRenderer Cell7; - ModelRenderer Cell6; - ModelRenderer PlateBack; - ModelRenderer Body; - ModelRenderer Handle1; - ModelRenderer Handle2; - - public ModelSpark() - { - textureWidth = 64; - textureHeight = 64; - - BarrelMain = new ModelRenderer(this, 0, 0); - BarrelMain.addBox(0F, 0F, 0F, 18, 6, 6); - BarrelMain.setRotationPoint(-18F, 0F, -3F); - BarrelMain.setTextureSize(64, 64); - BarrelMain.mirror = true; - setRotation(BarrelMain, 0F, 0F, 0F); - BarrelSide = new ModelRenderer(this, 0, 12); - BarrelSide.addBox(0F, -3F, -3F, 14, 6, 6); - BarrelSide.setRotationPoint(-14F, 3F, 0F); - BarrelSide.setTextureSize(64, 64); - BarrelSide.mirror = true; - setRotation(BarrelSide, 0.7853982F, 0F, 0F); - PlateFront = new ModelRenderer(this, 40, 12); - PlateFront.addBox(0F, 0F, 0F, 2, 8, 8); - PlateFront.setRotationPoint(0F, -1F, -4F); - PlateFront.setTextureSize(64, 64); - PlateFront.mirror = true; - setRotation(PlateFront, 0F, 0F, 0F); - Sight = new ModelRenderer(this, 48, 0); - Sight.addBox(0F, 0F, 0F, 1, 4, 2); - Sight.setRotationPoint(-16F, -4F, -1F); - Sight.setTextureSize(64, 64); - Sight.mirror = true; - setRotation(Sight, 0F, 0F, 0F); - Grip = new ModelRenderer(this, 0, 24); - Grip.addBox(0F, 0F, 0F, 12, 2, 2); - Grip.setRotationPoint(-10F, 5F, -6F); - Grip.setTextureSize(64, 64); - Grip.mirror = true; - setRotation(Grip, 0F, 0F, 0F); - Cell1 = new ModelRenderer(this, 0, 28); - Cell1.addBox(0F, -3.5F, -1F, 3, 2, 2); - Cell1.setRotationPoint(2F, 3F, 0F); - Cell1.setTextureSize(64, 64); - Cell1.mirror = true; - setRotation(Cell1, 0F, 0F, 0F); - Cell2 = new ModelRenderer(this, 0, 32); - Cell2.addBox(0F, -3.5F, -1F, 3, 2, 2); - Cell2.setRotationPoint(2F, 3F, 0F); - Cell2.setTextureSize(64, 64); - Cell2.mirror = true; - setRotation(Cell2, 0.7853982F, 0F, 0F); - Cell3 = new ModelRenderer(this, 0, 36); - Cell3.addBox(0F, -3.5F, -1F, 3, 2, 2); - Cell3.setRotationPoint(2F, 3F, 0F); - Cell3.setTextureSize(64, 64); - Cell3.mirror = true; - setRotation(Cell3, 1.570796F, 0F, 0F); - Cell4 = new ModelRenderer(this, 0, 40); - Cell4.addBox(0F, -3.5F, -1F, 3, 2, 2); - Cell4.setRotationPoint(2F, 3F, 0F); - Cell4.setTextureSize(64, 64); - Cell4.mirror = true; - setRotation(Cell4, 2.356194F, 0F, 0F); - Cell5 = new ModelRenderer(this, 0, 44); - Cell5.addBox(0F, -3.5F, -1F, 3, 2, 2); - Cell5.setRotationPoint(2F, 3F, 0F); - Cell5.setTextureSize(64, 64); - Cell5.mirror = true; - setRotation(Cell5, 3.141593F, 0F, 0F); - Cell8 = new ModelRenderer(this, 0, 48); - Cell8.addBox(0F, -3.5F, -1F, 3, 2, 2); - Cell8.setRotationPoint(2F, 3F, 0F); - Cell8.setTextureSize(64, 64); - Cell8.mirror = true; - setRotation(Cell8, -0.7853982F, 0F, 0F); - Cell7 = new ModelRenderer(this, 0, 52); - Cell7.addBox(0F, -3.5F, -1F, 3, 2, 2); - Cell7.setRotationPoint(2F, 3F, 0F); - Cell7.setTextureSize(64, 64); - Cell7.mirror = true; - setRotation(Cell7, -1.570796F, 0F, 0F); - Cell6 = new ModelRenderer(this, 0, 56); - Cell6.addBox(0F, -3.5F, -1F, 3, 2, 2); - Cell6.setRotationPoint(2F, 3F, 0F); - Cell6.setTextureSize(64, 64); - Cell6.mirror = true; - setRotation(Cell6, -2.356194F, 0F, 0F); - PlateBack = new ModelRenderer(this, 10, 28); - PlateBack.addBox(0F, 0F, 0F, 2, 8, 8); - PlateBack.setRotationPoint(5F, -1F, -4F); - PlateBack.setTextureSize(64, 64); - PlateBack.mirror = true; - setRotation(PlateBack, 0F, 0F, 0F); - Body = new ModelRenderer(this, 10, 44); - Body.addBox(0F, 0F, 0F, 8, 6, 4); - Body.setRotationPoint(7F, 1F, -2F); - Body.setTextureSize(64, 64); - Body.mirror = true; - setRotation(Body, 0F, 0F, 0F); - Handle1 = new ModelRenderer(this, 10, 54); - Handle1.addBox(0F, 0F, 0F, 2, 2, 2); - Handle1.setRotationPoint(15F, 4F, -1F); - Handle1.setTextureSize(64, 64); - Handle1.mirror = true; - setRotation(Handle1, 0F, 0F, 0F); - Handle2 = new ModelRenderer(this, 18, 54); - Handle2.addBox(0F, 0F, 0F, 1, 4, 1); - Handle2.setRotationPoint(17F, 2F, -0.5F); - Handle2.setTextureSize(64, 64); - Handle2.mirror = true; - setRotation(Handle2, 0F, 0F, 0F); - } - - @Override -public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - BarrelMain.render(f5); - BarrelSide.render(f5); - PlateFront.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - Sight.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - Grip.render(f5); - Cell1.render(f5); - Cell2.render(f5); - Cell3.render(f5); - Cell4.render(f5); - Cell5.render(f5); - Cell8.render(f5); - Cell7.render(f5); - Cell6.render(f5); - PlateBack.render(f5); - Body.render(f5); - Handle1.render(f5); - Handle2.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override -public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelSteelBeam.java b/src/main/java/com/hbm/render/model/ModelSteelBeam.java deleted file mode 100644 index 2626ccb3f..000000000 --- a/src/main/java/com/hbm/render/model/ModelSteelBeam.java +++ /dev/null @@ -1,62 +0,0 @@ -// Date: 10.12.2015 21:02:25 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - - - - - - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelSteelBeam extends ModelBase -{ - //fields - ModelRenderer Shape1; - - public ModelSteelBeam() - { - textureWidth = 64; - textureHeight = 32; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 2, 16, 2); - Shape1.setRotationPoint(-1F, 8F, -1F); - Shape1.setTextureSize(64, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - } - - @Override -public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape1.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void renderModel(float f) - { - Shape1.render(f); - } - - @Override -public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelSteelCorner.java b/src/main/java/com/hbm/render/model/ModelSteelCorner.java deleted file mode 100644 index 46be6fa19..000000000 --- a/src/main/java/com/hbm/render/model/ModelSteelCorner.java +++ /dev/null @@ -1,89 +0,0 @@ -// Date: 10.12.2015 20:58:33 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - - - - - - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelSteelCorner extends ModelBase -{ - //fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - - public ModelSteelCorner() - { - textureWidth = 64; - textureHeight = 32; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 16, 16, 1); - Shape1.setRotationPoint(-8F, 8F, -8F); - Shape1.setTextureSize(64, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 34, 0); - Shape2.addBox(0F, 0F, 0F, 2, 16, 2); - Shape2.setRotationPoint(2F, 8F, -7F); - Shape2.setTextureSize(64, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 0); - Shape3.addBox(0F, 0F, 0F, 1, 16, 15); - Shape3.setRotationPoint(-8F, 8F, -7F); - Shape3.setTextureSize(64, 32); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 34, 0); - Shape4.addBox(0F, 0F, 0F, 2, 16, 2); - Shape4.setRotationPoint(-7F, 8F, -2F); - Shape4.setTextureSize(64, 32); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - } - - @Override -public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void renderModel(float f) - { - Shape1.render(f); - Shape2.render(f); - Shape3.render(f); - Shape4.render(f); - } - - @Override -public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelSteelScaffold.java b/src/main/java/com/hbm/render/model/ModelSteelScaffold.java deleted file mode 100644 index 6e736a19d..000000000 --- a/src/main/java/com/hbm/render/model/ModelSteelScaffold.java +++ /dev/null @@ -1,161 +0,0 @@ -// Date: 10.12.2015 21:15:17 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - - - - - - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelSteelScaffold extends ModelBase -{ - //fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - ModelRenderer Shape8; - ModelRenderer Shape9; - ModelRenderer Shape10; - ModelRenderer Shape11; - ModelRenderer Shape12; - - public ModelSteelScaffold() - { - textureWidth = 64; - textureHeight = 32; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 2, 16, 2); - Shape1.setRotationPoint(6F, 8F, -6F); - Shape1.setTextureSize(64, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 0); - Shape2.addBox(0F, 0F, 0F, 2, 16, 2); - Shape2.setRotationPoint(-8F, 8F, -6F); - Shape2.setTextureSize(64, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 0); - Shape3.addBox(0F, 0F, 0F, 2, 16, 2); - Shape3.setRotationPoint(-8F, 8F, 4F); - Shape3.setTextureSize(64, 32); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 0, 0); - Shape4.addBox(0F, 0F, 0F, 2, 16, 2); - Shape4.setRotationPoint(6F, 8F, 4F); - Shape4.setTextureSize(64, 32); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape5 = new ModelRenderer(this, 8, 0); - Shape5.addBox(-8F, -0.5F, 0F, 16, 1, 1); - Shape5.setRotationPoint(0F, 15.5F, 4.5F); - Shape5.setTextureSize(64, 32); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, -0.6108652F); - Shape6 = new ModelRenderer(this, 8, 0); - Shape6.addBox(-8F, -0.5F, 0F, 16, 1, 1); - Shape6.setRotationPoint(0F, 15.5F, 4.5F); - Shape6.setTextureSize(64, 32); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0.6108652F); - Shape7 = new ModelRenderer(this, 8, 0); - Shape7.addBox(-8F, -0.5F, 0F, 16, 1, 1); - Shape7.setRotationPoint(0F, 15.5F, -5.5F); - Shape7.setTextureSize(64, 32); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0.6108652F); - Shape8 = new ModelRenderer(this, 8, 0); - Shape8.addBox(-8F, 0F, 0F, 16, 1, 1); - Shape8.setRotationPoint(0F, 15.5F, -5.5F); - Shape8.setTextureSize(64, 32); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0F, -0.6108652F); - Shape9 = new ModelRenderer(this, 0, 19); - Shape9.addBox(-0.5F, -0.5F, -6F, 1, 1, 12); - Shape9.setRotationPoint(-7F, 15.5F, 0F); - Shape9.setTextureSize(64, 32); - Shape9.mirror = true; - setRotation(Shape9, 0.6108652F, 0F, 0F); - Shape10 = new ModelRenderer(this, 0, 19); - Shape10.addBox(-0.5F, -0.5F, -6F, 1, 1, 12); - Shape10.setRotationPoint(-7F, 15.5F, 0F); - Shape10.setTextureSize(64, 32); - Shape10.mirror = true; - setRotation(Shape10, -0.6108652F, 0F, 0F); - Shape11 = new ModelRenderer(this, 0, 19); - Shape11.addBox(-0.5F, -0.5F, -6F, 1, 1, 12); - Shape11.setRotationPoint(7F, 15.5F, 0F); - Shape11.setTextureSize(64, 32); - Shape11.mirror = true; - setRotation(Shape11, 0.6108652F, 0F, 0F); - Shape12 = new ModelRenderer(this, 0, 19); - Shape12.addBox(-0.5F, -0.5F, -6F, 1, 1, 12); - Shape12.setRotationPoint(7F, 15.5F, 0F); - Shape12.setTextureSize(64, 32); - Shape12.mirror = true; - setRotation(Shape12, -0.6108652F, 0F, 0F); - } - - @Override -public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - Shape9.render(f5); - Shape10.render(f5); - Shape11.render(f5); - Shape12.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void renderModel(float f) - { - Shape1.render(f); - Shape2.render(f); - Shape3.render(f); - Shape4.render(f); - Shape5.render(f); - Shape6.render(f); - Shape7.render(f); - Shape8.render(f); - Shape9.render(f); - Shape10.render(f); - Shape11.render(f); - Shape12.render(f); - } - - @Override -public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelSteelWall.java b/src/main/java/com/hbm/render/model/ModelSteelWall.java deleted file mode 100644 index 6810eac5a..000000000 --- a/src/main/java/com/hbm/render/model/ModelSteelWall.java +++ /dev/null @@ -1,71 +0,0 @@ -// Date: 10.12.2015 20:54:28 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - - - - - - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelSteelWall extends ModelBase -{ - //fields - ModelRenderer Shape1; - ModelRenderer Shape2; - - public ModelSteelWall() - { - textureWidth = 64; - textureHeight = 32; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 16, 16, 1); - Shape1.setRotationPoint(-8F, 8F, -8F); - Shape1.setTextureSize(64, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 34, 0); - Shape2.addBox(0F, 0F, 0F, 2, 16, 2); - Shape2.setRotationPoint(-4F, 8F, -7F); - Shape2.setTextureSize(64, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - } - - @Override -public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape1.render(f5); - Shape2.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void renderModel(float f) - { - Shape1.render(f); - Shape2.render(f); - } - - @Override -public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelT45Boots.java b/src/main/java/com/hbm/render/model/ModelT45Boots.java index f12008588..57a9e5e55 100644 --- a/src/main/java/com/hbm/render/model/ModelT45Boots.java +++ b/src/main/java/com/hbm/render/model/ModelT45Boots.java @@ -11,7 +11,6 @@ import org.lwjgl.opengl.GL11; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; public class ModelT45Boots extends ModelBiped { // fields @@ -74,14 +73,8 @@ public class ModelT45Boots extends ModelBiped { @Override public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - if (entity instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer) entity; - if (player.isSneaking()) { - this.isSneak = true; - } else { - this.isSneak = false; - } - } + this.isSneak = entity.isSneaking(); + this.isRiding = entity.isRiding(); super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); this.leftleg.rotationPointX = this.bipedLeftLeg.rotationPointX; diff --git a/src/main/java/com/hbm/render/model/ModelT45Chest.java b/src/main/java/com/hbm/render/model/ModelT45Chest.java index 07f4cda1f..1935cf7b8 100644 --- a/src/main/java/com/hbm/render/model/ModelT45Chest.java +++ b/src/main/java/com/hbm/render/model/ModelT45Chest.java @@ -9,6 +9,7 @@ package com.hbm.render.model; import org.lwjgl.opengl.GL11; import com.hbm.interfaces.IHoldableWeapon; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.model.ModelRenderer; @@ -207,13 +208,9 @@ public class ModelT45Chest extends ModelBiped { @Override public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { + if (entity instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) entity; - if (player.isSneaking()) { - this.isSneak = true; - } else { - this.isSneak = false; - } ItemStack itemstack = player.inventory.getCurrentItem(); this.heldItemRight = itemstack != null ? 1 : 0; @@ -227,9 +224,13 @@ public class ModelT45Chest extends ModelBiped { } } - if(itemstack != null && player.getHeldItem().getItem() instanceof IHoldableWeapon) - this.aimedBow = true; + if(itemstack != null && player.getHeldItem().getItem() instanceof IHoldableWeapon) this.aimedBow = true; + if(itemstack != null && player.getHeldItem().getItem() instanceof ItemGunBaseNT) this.aimedBow = true; } + + this.isSneak = entity.isSneaking(); + this.isRiding = entity.isRiding(); + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); this.chest.rotationPointX = this.bipedBody.rotationPointX; this.chest.rotationPointY = this.bipedBody.rotationPointY; diff --git a/src/main/java/com/hbm/render/model/ModelT45Helmet.java b/src/main/java/com/hbm/render/model/ModelT45Helmet.java index 1c42c2604..b49a4a870 100644 --- a/src/main/java/com/hbm/render/model/ModelT45Helmet.java +++ b/src/main/java/com/hbm/render/model/ModelT45Helmet.java @@ -11,7 +11,6 @@ import org.lwjgl.opengl.GL11; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; public class ModelT45Helmet extends ModelBiped { // fields @@ -106,14 +105,8 @@ public class ModelT45Helmet extends ModelBiped { @Override public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - if (entity instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer) entity; - if (player.isSneaking()) { - this.isSneak = true; - } else { - this.isSneak = false; - } - } + this.isSneak = entity.isSneaking(); + this.isRiding = entity.isRiding(); super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); this.helmet.rotationPointX = this.bipedHead.rotationPointX; diff --git a/src/main/java/com/hbm/render/model/ModelT45Legs.java b/src/main/java/com/hbm/render/model/ModelT45Legs.java index fbe3d740c..56c0e182c 100644 --- a/src/main/java/com/hbm/render/model/ModelT45Legs.java +++ b/src/main/java/com/hbm/render/model/ModelT45Legs.java @@ -11,7 +11,6 @@ import org.lwjgl.opengl.GL11; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; public class ModelT45Legs extends ModelBiped { // fields @@ -91,14 +90,8 @@ public class ModelT45Legs extends ModelBiped { @Override public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - if (entity instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer) entity; - if (player.isSneaking()) { - this.isSneak = true; - } else { - this.isSneak = false; - } - } + this.isSneak = entity.isSneaking(); + this.isRiding = entity.isRiding(); super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); this.leftleg.rotationPointX = this.bipedLeftLeg.rotationPointX; diff --git a/src/main/java/com/hbm/render/model/ModelTwiGun.java b/src/main/java/com/hbm/render/model/ModelTwiGun.java deleted file mode 100755 index 2318476af..000000000 --- a/src/main/java/com/hbm/render/model/ModelTwiGun.java +++ /dev/null @@ -1,329 +0,0 @@ -//This File was created with the Minecraft-SMP Modelling Toolbox 2.3.0.0 -// Copyright (C) 2017 Minecraft-SMP.de -// This file is for Flan's Flying Mod Version 4.0.x+ - -// Model: TwiGun -// Model Creator: -// Created on: 01.11.2017 - 20:26:01 -// Last changed on: 01.11.2017 - 20:26:01 - -package com.hbm.render.model; //Path where the model is located - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelTwiGun extends ModelBase //Same as Filename -{ - int textureX = 128; - int textureY = 128; - ModelRenderer[] bodyModel; - - public ModelTwiGun() //Same as Filename - { - textureWidth = 128; - textureHeight = 128; - bodyModel = new ModelRenderer[65]; - bodyModel[0] = new ModelRenderer(this, 1, 1); // Rotor5 - bodyModel[1] = new ModelRenderer(this, 17, 1); // Rotor4 - bodyModel[2] = new ModelRenderer(this, 33, 1); // Rotor1 - bodyModel[3] = new ModelRenderer(this, 49, 1); // Rotor6 - bodyModel[4] = new ModelRenderer(this, 65, 1); // Rotor3 - bodyModel[5] = new ModelRenderer(this, 81, 1); // Rotor2 - bodyModel[6] = new ModelRenderer(this, 89, 1); // Box 8 - bodyModel[7] = new ModelRenderer(this, 113, 1); // Box 9 - bodyModel[8] = new ModelRenderer(this, 1, 9); // Box 10 - bodyModel[9] = new ModelRenderer(this, 17, 9); // Box 11 - bodyModel[10] = new ModelRenderer(this, 33, 9); // Box 12 - bodyModel[11] = new ModelRenderer(this, 49, 9); // Box 13 - bodyModel[12] = new ModelRenderer(this, 65, 9); // Box 14 - bodyModel[13] = new ModelRenderer(this, 1, 17); // Box 15 - bodyModel[14] = new ModelRenderer(this, 9, 17); // Box 16 - bodyModel[15] = new ModelRenderer(this, 33, 17); // Box 17 - bodyModel[16] = new ModelRenderer(this, 73, 9); // Box 18 - bodyModel[17] = new ModelRenderer(this, 105, 9); // Box 19 - bodyModel[18] = new ModelRenderer(this, 57, 17); // Box 20 - bodyModel[19] = new ModelRenderer(this, 33, 17); // Box 21 - bodyModel[20] = new ModelRenderer(this, 1, 25); // Box 22 - bodyModel[21] = new ModelRenderer(this, 73, 17); // Box 23 - bodyModel[22] = new ModelRenderer(this, 25, 33); // Box 24 - bodyModel[23] = new ModelRenderer(this, 1, 25); // Box 25 - bodyModel[24] = new ModelRenderer(this, 57, 33); // Box 26 - bodyModel[25] = new ModelRenderer(this, 89, 33); // Box 27 - bodyModel[26] = new ModelRenderer(this, 1, 49); // Box 28 - bodyModel[27] = new ModelRenderer(this, 1, 49); // Box 29 - bodyModel[28] = new ModelRenderer(this, 97, 17); // Box 30 - bodyModel[29] = new ModelRenderer(this, 25, 49); // Box 31 - bodyModel[30] = new ModelRenderer(this, 65, 49); // Box 32 - bodyModel[31] = new ModelRenderer(this, 25, 57); // Box 33 - bodyModel[32] = new ModelRenderer(this, 65, 57); // Box 34 - bodyModel[33] = new ModelRenderer(this, 33, 65); // Box 35 - bodyModel[34] = new ModelRenderer(this, 97, 49); // Box 36 - bodyModel[35] = new ModelRenderer(this, 57, 25); // Box 37 - bodyModel[36] = new ModelRenderer(this, 73, 65); // Box 38 - bodyModel[37] = new ModelRenderer(this, 1, 73); // Box 40 - bodyModel[38] = new ModelRenderer(this, 33, 73); // Box 41 - bodyModel[39] = new ModelRenderer(this, 49, 73); // Box 42 - bodyModel[40] = new ModelRenderer(this, 105, 57); // Box 43 - bodyModel[41] = new ModelRenderer(this, 113, 65); // Box 44 - bodyModel[42] = new ModelRenderer(this, 113, 25); // Box 45 - bodyModel[43] = new ModelRenderer(this, 121, 9); // Box 46 - bodyModel[44] = new ModelRenderer(this, 73, 73); // Box 47 - bodyModel[45] = new ModelRenderer(this, 25, 73); // Box 48 - bodyModel[46] = new ModelRenderer(this, 89, 73); // Box 49 - bodyModel[47] = new ModelRenderer(this, 25, 25); // Box 50 - bodyModel[48] = new ModelRenderer(this, 17, 9); // Box 51 - bodyModel[49] = new ModelRenderer(this, 49, 33); // Box 52 - bodyModel[50] = new ModelRenderer(this, 81, 33); // Box 53 - bodyModel[51] = new ModelRenderer(this, 57, 1); // Box 54 - bodyModel[52] = new ModelRenderer(this, 73, 1); // Box 55 - bodyModel[53] = new ModelRenderer(this, 105, 73); // Box 56 - bodyModel[54] = new ModelRenderer(this, 89, 73); // Box 57 - bodyModel[55] = new ModelRenderer(this, 17, 81); // Box 58 - bodyModel[56] = new ModelRenderer(this, 73, 81); // Box 59 - bodyModel[57] = new ModelRenderer(this, 1, 89); // Box 60 - bodyModel[58] = new ModelRenderer(this, 33, 89); // Box 61 - bodyModel[59] = new ModelRenderer(this, 49, 41); // Box 63 - bodyModel[60] = new ModelRenderer(this, 89, 81); // Box 64 - bodyModel[61] = new ModelRenderer(this, 113, 81); // Box 65 - bodyModel[62] = new ModelRenderer(this, 1, 89); // Box 66 - bodyModel[63] = new ModelRenderer(this, 89, 89); // Box 67 - bodyModel[64] = new ModelRenderer(this, 17, 97); // Box 68 - - bodyModel[0].addBox(0F, 1F, -1F, 3, 4, 2, 0F); // Rotor5 - bodyModel[0].setRotationPoint(-12F, 0F, 0F); - - bodyModel[1].addBox(0F, 1F, -1F, 3, 4, 2, 0F); // Rotor4 - bodyModel[1].setRotationPoint(-12F, 0F, 0F); - bodyModel[1].rotateAngleX = 2.0943951F; - - bodyModel[2].addBox(0F, 1F, -1F, 3, 4, 2, 0F); // Rotor1 - bodyModel[2].setRotationPoint(-12F, 0F, 0F); - bodyModel[2].rotateAngleX = -2.0943951F; - - bodyModel[3].addBox(0F, 4.5F, -0.5F, 3, 1, 1, 0F); // Rotor6 - bodyModel[3].setRotationPoint(-12F, 0F, 0F); - - bodyModel[4].addBox(0F, 4.5F, -0.5F, 3, 1, 1, 0F); // Rotor3 - bodyModel[4].setRotationPoint(-12F, 0F, 0F); - bodyModel[4].rotateAngleX = 2.0943951F; - - bodyModel[5].addBox(0F, 4.5F, -0.5F, 3, 1, 1, 0F); // Rotor2 - bodyModel[5].setRotationPoint(-12F, 0F, 0F); - bodyModel[5].rotateAngleX = -2.0943951F; - - bodyModel[6].addBox(0F, 0F, 0F, 5, 0, 8, 0F); // Box 8 - bodyModel[6].setRotationPoint(-13F, -6F, -4F); - - bodyModel[7].addBox(0F, -1F, -1F, 5, 2, 2, 0F); // Box 9 - bodyModel[7].setRotationPoint(-13F, 0F, 0F); - - bodyModel[8].addBox(0F, -1F, -1F, 5, 2, 2, 0F); // Box 10 - bodyModel[8].setRotationPoint(-13F, 0F, 0F); - bodyModel[8].rotateAngleX = 0.78539816F; - - bodyModel[9].addBox(0F, 0F, 0F, 5, 0, 5, 0F); // Box 11 - bodyModel[9].setRotationPoint(-13F, -6F, 4F); - bodyModel[9].rotateAngleX = -0.78539816F; - - bodyModel[10].addBox(0F, 0F, 0F, 9, 1, 1, 0F); // Box 12 - bodyModel[10].setRotationPoint(-15F, -3F, 7F); - - bodyModel[11].addBox(0F, 0F, -5F, 5, 0, 5, 0F); // Box 13 - bodyModel[11].setRotationPoint(-13F, -6F, -4F); - bodyModel[11].rotateAngleX = 0.78539816F; - - bodyModel[12].addBox(0F, 0F, 0F, 9, 1, 1, 0F); // Box 14 - bodyModel[12].setRotationPoint(-15F, -3F, -8F); - - bodyModel[13].addBox(0F, 0F, 0F, 5, 0, 7, 0F); // Box 15 - bodyModel[13].setRotationPoint(-13F, 6.5F, -3.5F); - - bodyModel[14].addBox(0F, 0F, 0F, 5, 0, 10, 0F); // Box 16 - bodyModel[14].setRotationPoint(-13F, 6.5F, 3.5F); - bodyModel[14].rotateAngleX = 1.13446401F; - - bodyModel[15].addBox(0F, 0F, -10F, 5, 0, 10, 0F); // Box 17 - bodyModel[15].setRotationPoint(-13F, 6.5F, -3.5F); - bodyModel[15].rotateAngleX = -1.13446401F; - - bodyModel[16].addBox(0F, 0F, 0F, 2, 2, 16, 0F); // Box 18 - bodyModel[16].setRotationPoint(-15F, -2F, -8F); - - bodyModel[17].addBox(0F, 0F, 0F, 3, 4, 4, 0F); // Box 19 - bodyModel[17].setRotationPoint(-16F, -2F, -2F); - - bodyModel[18].addBox(0F, 0F, 0F, 5, 1, 1, 0F); // Box 20 - bodyModel[18].setRotationPoint(-13F, 6F, -0.5F); - - bodyModel[19].addBox(0F, 0F, 0F, 2, 5, 2, 0F); // Box 21 - bodyModel[19].setRotationPoint(-15F, 2F, -1F); - - bodyModel[20].addBox(0F, 0F, 0F, 0, 10, 10, 0F); // Box 22 - bodyModel[20].setRotationPoint(-13F, -5F, -5F); - - bodyModel[21].addBox(0F, -1.5F, -1.5F, 3, 3, 3, 0F); // Box 23 - bodyModel[21].setRotationPoint(-19F, 0F, 0F); - - bodyModel[22].addBox(0F, -2F, -2F, 8, 4, 4, 0F); // Box 24 - bodyModel[22].setRotationPoint(-27F, 0F, 0F); - - bodyModel[23].addBox(0F, -1.5F, -1.5F, 3, 3, 3, 0F); // Box 25 - bodyModel[23].setRotationPoint(-19F, 0F, 0F); - bodyModel[23].rotateAngleX = -0.78539816F; - - bodyModel[24].addBox(0F, -2F, -2F, 8, 4, 4, 0F); // Box 26 - bodyModel[24].setRotationPoint(-27F, 0F, 0F); - bodyModel[24].rotateAngleX = -0.78539816F; - - bodyModel[25].addBox(0F, 0F, 0F, 14, 6, 4, 0F); // Box 27 - bodyModel[25].setRotationPoint(-6F, -3F, -2F); - - bodyModel[26].addBox(0F, 0F, 0F, 2, 2, 16, 0F); // Box 28 - bodyModel[26].setRotationPoint(-8F, -2F, -8F); - - bodyModel[27].addBox(0F, 0F, 0F, 3, 4, 4, 0F); // Box 29 - bodyModel[27].setRotationPoint(-9F, -2F, -2F); - - bodyModel[28].addBox(0F, 0F, 0F, 2, 5, 2, 0F); // Box 30 - bodyModel[28].setRotationPoint(-8F, 2F, -1F); - - bodyModel[29].addBox(0F, 0F, 0F, 14, 1, 5, 0F); // Box 31 - bodyModel[29].setRotationPoint(-6F, -3F, 2F); - bodyModel[29].rotateAngleX = -0.26179939F; - - bodyModel[30].addBox(0F, 0F, 0F, 14, 1, 1, 0F); // Box 32 - bodyModel[30].setRotationPoint(-6F, -1.5F, 6F); - - bodyModel[31].addBox(0F, -1F, 0F, 14, 1, 5, 0F); // Box 33 - bodyModel[31].setRotationPoint(-6F, 1F, 2F); - bodyModel[31].rotateAngleX = 0.26179939F; - - bodyModel[32].addBox(0F, -1F, -5F, 14, 1, 5, 0F); // Box 34 - bodyModel[32].setRotationPoint(-6F, 1F, -2F); - bodyModel[32].rotateAngleX = -0.26179939F; - - bodyModel[33].addBox(0F, 0F, -5F, 14, 1, 5, 0F); // Box 35 - bodyModel[33].setRotationPoint(-6F, -3F, -2F); - bodyModel[33].rotateAngleX = 0.26179939F; - - bodyModel[34].addBox(0F, 0F, 0F, 14, 1, 1, 0F); // Box 36 - bodyModel[34].setRotationPoint(-6F, -1.5F, -7F); - - bodyModel[35].addBox(0F, 0F, 0F, 5, 0, 4, 0F); // Box 37 - bodyModel[35].setRotationPoint(-8F, -6F, -2F); - bodyModel[35].rotateAngleZ = 0.78539816F; - - bodyModel[36].addBox(0F, 0F, 0F, 16, 4, 2, 0F); // Box 38 - bodyModel[36].setRotationPoint(-6F, 3F, -1F); - - bodyModel[37].addBox(0F, 0F, 0F, 6, 6, 6, 0F); // Box 40 - bodyModel[37].setRotationPoint(8F, -3F, -3F); - - bodyModel[38].addBox(0F, 0F, 0F, 3, 2, 10, 0F); // Box 41 - bodyModel[38].setRotationPoint(8F, -2F, -5F); - - bodyModel[39].addBox(0F, 0F, 0F, 4, 1, 13, 0F); // Box 42 - bodyModel[39].setRotationPoint(8F, -1.5F, -6.5F); - - bodyModel[40].addBox(0F, 0F, 0F, 8, 3, 3, 0F); // Box 43 - bodyModel[40].setRotationPoint(14F, -1F, -1.5F); - - bodyModel[41].addBox(0F, 0F, 0F, 1, 7, 3, 0F); // Box 44 - bodyModel[41].setRotationPoint(22.5F, -1F, -1.5F); - - bodyModel[42].addBox(0F, 0F, 0F, 4, 4, 3, 0F); // Box 45 - bodyModel[42].setRotationPoint(18F, 2F, -1.5F); - - bodyModel[43].addBox(0F, 0F, 0F, 2, 4, 1, 0F); // Box 46 - bodyModel[43].setRotationPoint(13F, 2F, 0F); - - bodyModel[44].addBox(0F, -5F, 0F, 2, 5, 3, 0F); // Box 47 - bodyModel[44].setRotationPoint(18F, 6F, -1.5F); - bodyModel[44].rotateAngleZ = -0.43633231F; - - bodyModel[45].addBox(0F, 0F, 0F, 6, 1, 2, 0F); // Box 48 - bodyModel[45].setRotationPoint(10F, 6F, -1F); - - bodyModel[46].addBox(0F, 0F, 0F, 3, 2, 2, 0F); // Box 49 - bodyModel[46].setRotationPoint(14F, -3F, -1F); - bodyModel[46].rotateAngleZ = 0.78539816F; - - bodyModel[47].addBox(0F, 0F, 0F, 2, 1, 5, 0F); // Box 50 - bodyModel[47].setRotationPoint(14F, 0F, -2.5F); - - bodyModel[48].addBox(0F, 0F, 0F, 1, 1, 1, 0F); // Box 51 - bodyModel[48].setRotationPoint(10.5F, -3.5F, -0.5F); - - bodyModel[49].addBox(0F, 0F, 0F, 3, 1, 1, 0F); // Box 52 - bodyModel[49].setRotationPoint(9F, -3.5F, -2F); - - bodyModel[50].addBox(0F, 0F, 0F, 3, 1, 1, 0F); // Box 53 - bodyModel[50].setRotationPoint(10F, -3.5F, 1F); - - bodyModel[51].addBox(0F, 0F, 0F, 1, 1, 3, 0F); // Box 54 - bodyModel[51].setRotationPoint(9F, -3.5F, -1F); - - bodyModel[52].addBox(0F, 0F, 0F, 1, 1, 3, 0F); // Box 55 - bodyModel[52].setRotationPoint(12F, -3.5F, -2F); - - bodyModel[53].addBox(0F, 0F, 0F, 1, 6, 2, 0F); // Box 56 - bodyModel[53].setRotationPoint(22F, -0.5F, -1F); - - bodyModel[54].addBox(0F, 0F, 0F, 0, 3, 12, 0F); // Box 57 - bodyModel[54].setRotationPoint(-5F, -0.5F, -6F); - - bodyModel[55].addBox(0F, 0F, 0F, 0, 3, 12, 0F); // Box 58 - bodyModel[55].setRotationPoint(-4F, -0.5F, -6F); - - bodyModel[56].addBox(0F, 0F, 0F, 0, 3, 12, 0F); // Box 59 - bodyModel[56].setRotationPoint(-3F, -0.5F, -6F); - - bodyModel[57].addBox(0F, 0F, 0F, 0, 3, 12, 0F); // Box 60 - bodyModel[57].setRotationPoint(-2F, -0.5F, -6F); - - bodyModel[58].addBox(0F, 0F, 0F, 0, 3, 12, 0F); // Box 61 - bodyModel[58].setRotationPoint(-1F, -0.5F, -6F); - - bodyModel[59].addBox(0F, 0F, 0F, 2, 1, 2, 0F); // Box 63 - bodyModel[59].setRotationPoint(-4F, -3.5F, -1F); - - bodyModel[60].addBox(0F, 0F, 0F, 2, 1, 2, 0F); // Box 64 - bodyModel[60].setRotationPoint(-1F, -3.5F, -1F); - - bodyModel[61].addBox(0F, 0F, 0F, 2, 1, 2, 0F); // Box 65 - bodyModel[61].setRotationPoint(2F, -3.5F, -1F); - - bodyModel[62].addBox(0F, 0F, 0F, 2, 1, 2, 0F); // Box 66 - bodyModel[62].setRotationPoint(5F, -3.5F, -1F); - - bodyModel[63].addBox(0F, 0F, 0F, 0, 3, 12, 0F); // Box 67 - bodyModel[63].setRotationPoint(0F, -0.5F, -6F); - - bodyModel[64].addBox(0F, 0F, 0F, 0, 3, 12, 0F); // Box 68 - bodyModel[64].setRotationPoint(1F, -0.5F, -6F); - - for(int i = 0; i < 65; i++) - { - bodyModel[i].setTextureSize(textureX, textureY); - bodyModel[i].mirror = true; - } - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) - { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - for(int i = 0; i < 65; i++) - { - bodyModel[i].render(f5); - } - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/render/model/ModelUboinik.java b/src/main/java/com/hbm/render/model/ModelUboinik.java deleted file mode 100644 index 17125c06c..000000000 --- a/src/main/java/com/hbm/render/model/ModelUboinik.java +++ /dev/null @@ -1,320 +0,0 @@ -// Date: 03.12.2016 21:30:48 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.weapon.ItemGunBase; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; - -public class ModelUboinik extends ModelBase { - // fields - ModelRenderer Barrel; - ModelRenderer ConnectorFront; - ModelRenderer ConnectorBack; - ModelRenderer Grip; - ModelRenderer Coil; - ModelRenderer FrontBase; - ModelRenderer FrontTip; - ModelRenderer DrumCenter; - ModelRenderer DrumBack; - ModelRenderer DrumBottom; - ModelRenderer Shell1; - ModelRenderer Shell2; - ModelRenderer Shell3; - ModelRenderer Shell4; - ModelRenderer Shell5; - ModelRenderer Shell6; - ModelRenderer Clip1; - ModelRenderer Clip2; - ModelRenderer Clip3; - ModelRenderer ChamberBack; - ModelRenderer ChamberBackConnector; - ModelRenderer ChamberTop; - ModelRenderer Chamber; - ModelRenderer Stock; - ModelRenderer TriggerFrame; - ModelRenderer Trigger; - ModelRenderer Handle; - ModelRenderer StockBottom; - - public ModelUboinik() { - textureWidth = 64; - textureHeight = 64; - - Barrel = new ModelRenderer(this, 0, 11); - Barrel.addBox(0F, 0F, 0F, 24, 2, 2); - Barrel.setRotationPoint(-24F, 0F, -1F); - Barrel.setTextureSize(64, 64); - Barrel.mirror = true; - setRotation(Barrel, 0F, 0F, 0F); - ConnectorFront = new ModelRenderer(this, 0, 53); - ConnectorFront.addBox(0F, 0F, 0F, 1, 8, 3); - ConnectorFront.setRotationPoint(-16F, -0.5F, -1.5F); - ConnectorFront.setTextureSize(64, 64); - ConnectorFront.mirror = true; - setRotation(ConnectorFront, 0F, 0F, 0F); - ConnectorBack = new ModelRenderer(this, 8, 53); - ConnectorBack.addBox(0F, 0F, 0F, 1, 8, 3); - ConnectorBack.setRotationPoint(0F, -0.5F, -1.5F); - ConnectorBack.setTextureSize(64, 64); - ConnectorBack.mirror = true; - setRotation(ConnectorBack, 0F, 0F, 0F); - Grip = new ModelRenderer(this, 16, 57); - Grip.addBox(0F, 0F, 0F, 15, 4, 3); - Grip.setRotationPoint(-15F, 3.5F, -1.5F); - Grip.setTextureSize(64, 64); - Grip.mirror = true; - setRotation(Grip, 0F, 0F, 0F); - Coil = new ModelRenderer(this, 16, 51); - Coil.addBox(0F, 0F, 0F, 15, 3, 3); - Coil.setRotationPoint(-15F, -0.5F, -1.5F); - Coil.setTextureSize(64, 64); - Coil.mirror = true; - setRotation(Coil, 0F, 0F, 0F); - FrontBase = new ModelRenderer(this, 0, 49); - FrontBase.addBox(0F, 0F, 0F, 1, 2, 2); - FrontBase.setRotationPoint(-17F, 4.5F, -1F); - FrontBase.setTextureSize(64, 64); - FrontBase.mirror = true; - setRotation(FrontBase, 0F, 0F, 0F); - FrontTip = new ModelRenderer(this, 6, 51); - FrontTip.addBox(0F, 0F, 0F, 4, 1, 1); - FrontTip.setRotationPoint(-21F, 5F, -0.5F); - FrontTip.setTextureSize(64, 64); - FrontTip.mirror = true; - setRotation(FrontTip, 0F, 0F, 0F); - DrumCenter = new ModelRenderer(this, 6, 49); - DrumCenter.addBox(0F, 0F, 0F, 6, 1, 1); - DrumCenter.setRotationPoint(1F, 3F, -0.5F); - DrumCenter.setTextureSize(64, 64); - DrumCenter.mirror = true; - setRotation(DrumCenter, 0F, 0F, 0F); - DrumBack = new ModelRenderer(this, 0, 40); - DrumBack.addBox(0F, 0F, 0F, 1, 7, 2); - DrumBack.setRotationPoint(7F, 1F, -1F); - DrumBack.setTextureSize(64, 64); - DrumBack.mirror = true; - setRotation(DrumBack, 0F, 0F, 0F); - DrumBottom = new ModelRenderer(this, 6, 46); - DrumBottom.addBox(0F, 0F, 0F, 7, 1, 2); - DrumBottom.setRotationPoint(0F, 7.5F, -1F); - DrumBottom.setTextureSize(64, 64); - DrumBottom.mirror = true; - setRotation(DrumBottom, 0F, 0F, 0F); - Shell1 = new ModelRenderer(this, 0, 34); - Shell1.addBox(0F, -3.5F, -1F, 5, 2, 2); - Shell1.setRotationPoint(1.5F, 3.5F, 0F); - Shell1.setTextureSize(64, 64); - Shell1.mirror = true; - setRotation(Shell1, 1.047198F, 0F, 0F); - Shell2 = new ModelRenderer(this, 0, 34); - Shell2.addBox(0F, -3.5F, -1F, 5, 2, 2); - Shell2.setRotationPoint(1.5F, 3.5F, 0F); - Shell2.setTextureSize(64, 64); - Shell2.mirror = true; - setRotation(Shell2, 2.094395F, 0F, 0F); - Shell3 = new ModelRenderer(this, 0, 34); - Shell3.addBox(0F, -3.5F, -1F, 5, 2, 2); - Shell3.setRotationPoint(1.5F, 3.5F, 0F); - Shell3.setTextureSize(64, 64); - Shell3.mirror = true; - setRotation(Shell3, 3.141593F, 0F, 0F); - Shell4 = new ModelRenderer(this, 0, 34); - Shell4.addBox(0F, -3.5F, -1F, 5, 2, 2); - Shell4.setRotationPoint(1.5F, 3.5F, 0F); - Shell4.setTextureSize(64, 64); - Shell4.mirror = true; - setRotation(Shell4, -2.094395F, 0F, 0F); - Shell5 = new ModelRenderer(this, 0, 34); - Shell5.addBox(0F, -3.5F, -1F, 5, 2, 2); - Shell5.setRotationPoint(1.5F, 3.5F, 0F); - Shell5.setTextureSize(64, 64); - Shell5.mirror = true; - setRotation(Shell5, -1.047198F, 0F, 0F); - Shell6 = new ModelRenderer(this, 0, 34); - Shell6.addBox(0F, -3.5F, -1F, 5, 2, 2); - Shell6.setRotationPoint(1.5F, 3.5F, 0F); - Shell6.setTextureSize(64, 64); - Shell6.mirror = true; - setRotation(Shell6, 0F, 0F, 0F); - Clip1 = new ModelRenderer(this, 6, 42); - Clip1.addBox(0F, -1.5F, -0.5F, 2, 3, 1); - Clip1.setRotationPoint(4F, 3.5F, 0F); - Clip1.setTextureSize(64, 64); - Clip1.mirror = true; - setRotation(Clip1, 0F, 0F, 0F); - Clip2 = new ModelRenderer(this, 6, 42); - Clip2.addBox(0F, -1.5F, -0.5F, 2, 3, 1); - Clip2.setRotationPoint(4F, 3.5F, 0F); - Clip2.setTextureSize(64, 64); - Clip2.mirror = true; - setRotation(Clip2, 1.047198F, 0F, 0F); - Clip3 = new ModelRenderer(this, 6, 42); - Clip3.addBox(0F, -1.5F, -0.5F, 2, 3, 1); - Clip3.setRotationPoint(4F, 3.5F, 0F); - Clip3.setTextureSize(64, 64); - Clip3.mirror = true; - setRotation(Clip3, 2.094395F, 0F, 0F); - ChamberBack = new ModelRenderer(this, 0, 28); - ChamberBack.addBox(0F, 0F, 0F, 8, 2, 2); - ChamberBack.setRotationPoint(8F, 1F, -1F); - ChamberBack.setTextureSize(64, 64); - ChamberBack.mirror = true; - setRotation(ChamberBack, 0F, 0F, 0F); - ChamberBackConnector = new ModelRenderer(this, 12, 43); - ChamberBackConnector.addBox(0F, 0F, 0F, 4, 1, 2); - ChamberBackConnector.setRotationPoint(12F, 0F, -1F); - ChamberBackConnector.setTextureSize(64, 64); - ChamberBackConnector.mirror = true; - setRotation(ChamberBackConnector, 0F, 0F, 0F); - ChamberTop = new ModelRenderer(this, 0, 25); - ChamberTop.addBox(0F, 0F, 0F, 9, 1, 2); - ChamberTop.setRotationPoint(7F, -1F, -1F); - ChamberTop.setTextureSize(64, 64); - ChamberTop.mirror = true; - setRotation(ChamberTop, 0F, 0F, 0F); - Chamber = new ModelRenderer(this, 0, 20); - Chamber.addBox(0F, 0F, 0F, 6, 2, 3); - Chamber.setRotationPoint(1F, -1F, -1.5F); - Chamber.setTextureSize(64, 64); - Chamber.mirror = true; - setRotation(Chamber, 0F, 0F, 0F); - Stock = new ModelRenderer(this, 0, 15); - Stock.addBox(0F, 0F, 0F, 23, 3, 2); - Stock.setRotationPoint(13F, 3F, -1F); - Stock.setTextureSize(64, 64); - Stock.mirror = true; - setRotation(Stock, 0F, 0F, 0F); - TriggerFrame = new ModelRenderer(this, 24, 45); - TriggerFrame.addBox(0F, 0F, 0F, 5, 5, 1); - TriggerFrame.setRotationPoint(8F, 3F, -0.5F); - TriggerFrame.setTextureSize(64, 64); - TriggerFrame.mirror = true; - setRotation(TriggerFrame, 0F, 0F, 0F); - Trigger = new ModelRenderer(this, 36, 46); - Trigger.addBox(-1F, 0F, 0F, 1, 4, 1); - Trigger.setRotationPoint(12.5F, 3F, -0.5F); - Trigger.setTextureSize(64, 64); - Trigger.mirror = true; - setRotation(Trigger, 0F, 0F, 0.4363323F); - Handle = new ModelRenderer(this, 40, 43); - Handle.addBox(0F, 0F, 0F, 3, 6, 2); - Handle.setRotationPoint(13F, 6F, -1F); - Handle.setTextureSize(64, 64); - Handle.mirror = true; - setRotation(Handle, 0F, 0F, -0.1745329F); - StockBottom = new ModelRenderer(this, 26, 36); - StockBottom.addBox(0F, 0F, 0F, 10, 5, 2); - StockBottom.setRotationPoint(26F, 6F, -1F); - StockBottom.setTextureSize(64, 64); - StockBottom.mirror = true; - setRotation(StockBottom, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack item) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Barrel.render(f5); - ConnectorFront.render(f5); - ConnectorBack.render(f5); - Grip.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - Coil.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - FrontBase.render(f5); - FrontTip.render(f5); - DrumCenter.render(f5); - DrumBack.render(f5); - DrumBottom.render(f5); - - int ammo = ItemGunBase.getMag(item); - - if(ammo > 5) - Shell5.render(f5); - if(ammo > 4) - Shell4.render(f5); - if(ammo > 3) - Shell3.render(f5); - if(ammo > 2) - Shell2.render(f5); - if(ammo > 1) - Shell1.render(f5); - if(ammo > 0) - Shell6.render(f5); - - Clip1.render(f5); - Clip2.render(f5); - Clip3.render(f5); - ChamberBack.render(f5); - ChamberBackConnector.render(f5); - ChamberTop.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - Chamber.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - Stock.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - TriggerFrame.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - Trigger.render(f5); - Handle.render(f5); - StockBottom.render(f5); - } - - public void renderDud(float f5) { - Barrel.render(f5); - ConnectorFront.render(f5); - ConnectorBack.render(f5); - Grip.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - Coil.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - FrontBase.render(f5); - FrontTip.render(f5); - DrumCenter.render(f5); - DrumBack.render(f5); - DrumBottom.render(f5); - Shell5.render(f5); - Shell4.render(f5); - Shell3.render(f5); - Shell2.render(f5); - Shell1.render(f5); - Shell6.render(f5); - Clip1.render(f5); - Clip2.render(f5); - Clip3.render(f5); - ChamberBack.render(f5); - ChamberBackConnector.render(f5); - ChamberTop.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - Chamber.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - Stock.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - TriggerFrame.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - Trigger.render(f5); - Handle.render(f5); - StockBottom.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelUzi.java b/src/main/java/com/hbm/render/model/ModelUzi.java deleted file mode 100644 index 473dd6fe1..000000000 --- a/src/main/java/com/hbm/render/model/ModelUzi.java +++ /dev/null @@ -1,420 +0,0 @@ -// Date: 22.07.2018 14:18:53 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelUzi extends ModelBase { - // fields - ModelRenderer BodyBack; - ModelRenderer BodyBottom; - ModelRenderer BodySide; - ModelRenderer Ejector; - ModelRenderer BodyFront; - ModelRenderer GripFront; - ModelRenderer StockFront; - ModelRenderer StockPlate; - ModelRenderer HandleBase; - ModelRenderer Handle; - ModelRenderer HandleBack; - ModelRenderer HandleBottom; - ModelRenderer HandlePlate; - ModelRenderer HandleTop; - ModelRenderer Muzzle1; - ModelRenderer Muzzle2; - ModelRenderer StockBack; - ModelRenderer StockPlate1; - ModelRenderer Stock1; - ModelRenderer Stock2; - ModelRenderer Stcok3; - ModelRenderer Stock4; - ModelRenderer Hump1; - ModelRenderer Hump2; - ModelRenderer Hump3; - ModelRenderer Hump4; - ModelRenderer Hump5; - ModelRenderer Hump6; - ModelRenderer SightBack; - ModelRenderer Sight1; - ModelRenderer Sight2; - ModelRenderer Hump7; - ModelRenderer Hump8; - ModelRenderer Hump9; - ModelRenderer Hump10; - ModelRenderer Hump11; - ModelRenderer Hump12; - ModelRenderer Sight3; - ModelRenderer SightFront; - ModelRenderer Knob1; - ModelRenderer Knob2; - ModelRenderer Bolt1; - ModelRenderer Bolt2; - ModelRenderer Mag; - ModelRenderer Trigger; - ModelRenderer Frame1; - ModelRenderer Frame2; - - public ModelUzi() { - textureWidth = 128; - textureHeight = 64; - - BodyBack = new ModelRenderer(this, 0, 0); - BodyBack.addBox(0F, 0F, 0F, 14, 6, 4); - BodyBack.setRotationPoint(0F, 0F, 0F); - BodyBack.setTextureSize(128, 64); - BodyBack.mirror = true; - setRotation(BodyBack, 0F, 0F, 0F); - BodyBottom = new ModelRenderer(this, 82, 0); - BodyBottom.addBox(0F, 0F, 0F, 6, 3, 4); - BodyBottom.setRotationPoint(-6F, 3F, 0F); - BodyBottom.setTextureSize(128, 64); - BodyBottom.mirror = true; - setRotation(BodyBottom, 0F, 0F, 0F); - BodySide = new ModelRenderer(this, 102, 0); - BodySide.addBox(0F, 0F, 0F, 6, 3, 2); - BodySide.setRotationPoint(-6F, 0F, 0F); - BodySide.setTextureSize(128, 64); - BodySide.mirror = true; - setRotation(BodySide, 0F, 0F, 0F); - Ejector = new ModelRenderer(this, 102, 5); - Ejector.addBox(0F, 0F, 0F, 6, 3, 2); - Ejector.setRotationPoint(-6F, 0.5F, 1.5F); - Ejector.setTextureSize(128, 64); - Ejector.mirror = true; - setRotation(Ejector, 0F, 0F, 0F); - BodyFront = new ModelRenderer(this, 36, 0); - BodyFront.addBox(0F, 0F, 0F, 19, 6, 4); - BodyFront.setRotationPoint(-25F, 0F, 0F); - BodyFront.setTextureSize(128, 64); - BodyFront.mirror = true; - setRotation(BodyFront, 0F, 0F, 0F); - GripFront = new ModelRenderer(this, 0, 10); - GripFront.addBox(0F, 0F, 0F, 14, 5, 5); - GripFront.setRotationPoint(-24.5F, 1.5F, -0.5F); - GripFront.setTextureSize(128, 64); - GripFront.mirror = true; - setRotation(GripFront, 0F, 0F, 0F); - StockFront = new ModelRenderer(this, 38, 10); - StockFront.addBox(0F, 0F, 0F, 14, 3, 4); - StockFront.setRotationPoint(3F, 6F, 0F); - StockFront.setTextureSize(128, 64); - StockFront.mirror = true; - setRotation(StockFront, 0F, 0F, 0F); - StockPlate = new ModelRenderer(this, 118, 0); - StockPlate.addBox(0F, -4F, 0F, 1, 4, 4); - StockPlate.setRotationPoint(3F, 9F, 0F); - StockPlate.setTextureSize(128, 64); - StockPlate.mirror = true; - setRotation(StockPlate, 0F, 0F, -0.3490659F); - HandleBase = new ModelRenderer(this, 0, 20); - HandleBase.addBox(0F, 0F, 0F, 12, 3, 5); - HandleBase.setRotationPoint(-10F, 4F, -0.5F); - HandleBase.setTextureSize(128, 64); - HandleBase.mirror = true; - setRotation(HandleBase, 0F, 0F, 0F); - Handle = new ModelRenderer(this, 0, 28); - Handle.addBox(0F, 0F, 0F, 4, 10, 3); - Handle.setRotationPoint(-5F, 7F, 0.5F); - Handle.setTextureSize(128, 64); - Handle.mirror = true; - setRotation(Handle, 0F, 0F, 0F); - HandleBack = new ModelRenderer(this, 14, 28); - HandleBack.addBox(0F, 0F, 0F, 2, 4, 3); - HandleBack.setRotationPoint(-1F, 11F, 0.5F); - HandleBack.setTextureSize(128, 64); - HandleBack.mirror = true; - setRotation(HandleBack, 0F, 0F, 0F); - HandleBottom = new ModelRenderer(this, 14, 35); - HandleBottom.addBox(-2F, 0F, 0F, 2, 3, 3); - HandleBottom.setRotationPoint(1F, 15F, 0.5F); - HandleBottom.setTextureSize(128, 64); - HandleBottom.mirror = true; - setRotation(HandleBottom, 0F, 0F, 0.7853982F); - HandlePlate = new ModelRenderer(this, 24, 28); - HandlePlate.addBox(-2F, -3F, 0F, 2, 3, 3); - HandlePlate.setRotationPoint(1F, 11F, 0.5F); - HandlePlate.setTextureSize(128, 64); - HandlePlate.mirror = true; - setRotation(HandlePlate, 0F, 0F, -0.4886922F); - HandleTop = new ModelRenderer(this, 24, 34); - HandleTop.addBox(-2F, 0F, 0F, 2, 3, 3); - HandleTop.setRotationPoint(1F, 7F, 0.5F); - HandleTop.setTextureSize(128, 64); - HandleTop.mirror = true; - setRotation(HandleTop, 0F, 0F, 0.5235988F); - Muzzle1 = new ModelRenderer(this, 82, 12); - Muzzle1.addBox(0F, 0F, 0F, 3, 3, 2); - Muzzle1.setRotationPoint(-28F, 1.5F, 1F); - Muzzle1.setTextureSize(128, 64); - Muzzle1.mirror = true; - setRotation(Muzzle1, 0F, 0F, 0F); - Muzzle2 = new ModelRenderer(this, 82, 7); - Muzzle2.addBox(0F, 0F, 0F, 3, 2, 3); - Muzzle2.setRotationPoint(-28F, 2F, 0.5F); - Muzzle2.setTextureSize(128, 64); - Muzzle2.mirror = true; - setRotation(Muzzle2, 0F, 0F, 0F); - StockBack = new ModelRenderer(this, 34, 20); - StockBack.addBox(0F, 0F, 0F, 1, 11, 3); - StockBack.setRotationPoint(14F, 7F, 0.5F); - StockBack.setTextureSize(128, 64); - StockBack.mirror = true; - setRotation(StockBack, 0F, 0F, 0F); - StockPlate1 = new ModelRenderer(this, 42, 17); - StockPlate1.addBox(-1F, -11F, 0F, 1, 11, 3); - StockPlate1.setRotationPoint(15F, 18F, 0.5F); - StockPlate1.setTextureSize(128, 64); - StockPlate1.mirror = true; - setRotation(StockPlate1, 0F, 0F, 0.0959931F); - Stock1 = new ModelRenderer(this, 50, 17); - Stock1.addBox(-1F, -3F, 0F, 1, 3, 4); - Stock1.setRotationPoint(17F, 6F, 0F); - Stock1.setTextureSize(128, 64); - Stock1.mirror = true; - setRotation(Stock1, 0F, 0F, -0.3490659F); - Stock2 = new ModelRenderer(this, 60, 17); - Stock2.addBox(0F, -3F, 0F, 1, 3, 4); - Stock2.setRotationPoint(14F, 6F, 0F); - Stock2.setTextureSize(128, 64); - Stock2.mirror = true; - setRotation(Stock2, 0F, 0F, 0.3490659F); - Stcok3 = new ModelRenderer(this, 50, 24); - Stcok3.addBox(0F, 0F, 0F, 1, 3, 4); - Stcok3.setRotationPoint(15F, 3F, 0F); - Stcok3.setTextureSize(128, 64); - Stcok3.mirror = true; - setRotation(Stcok3, 0F, 0F, 0F); - Stock4 = new ModelRenderer(this, 60, 24); - Stock4.addBox(0F, 0F, 0F, 2, 5, 3); - Stock4.setRotationPoint(13.5F, 1.5F, 0.5F); - Stock4.setTextureSize(128, 64); - Stock4.mirror = true; - setRotation(Stock4, 0F, 0F, 0F); - Hump1 = new ModelRenderer(this, 74, 10); - Hump1.addBox(-2F, -3F, 0F, 2, 3, 1); - Hump1.setRotationPoint(14F, 0F, 0F); - Hump1.setTextureSize(128, 64); - Hump1.mirror = true; - setRotation(Hump1, 0F, 0F, -0.2617994F); - Hump2 = new ModelRenderer(this, 74, 14); - Hump2.addBox(0F, -3F, 0F, 2, 3, 1); - Hump2.setRotationPoint(10F, 0F, 0F); - Hump2.setTextureSize(128, 64); - Hump2.mirror = true; - setRotation(Hump2, 0F, 0F, 0.2617994F); - Hump3 = new ModelRenderer(this, 74, 18); - Hump3.addBox(0F, 0F, 0F, 2, 1, 1); - Hump3.setRotationPoint(11F, -3F, 0F); - Hump3.setTextureSize(128, 64); - Hump3.mirror = true; - setRotation(Hump3, 0F, 0F, 0F); - Hump4 = new ModelRenderer(this, 70, 20); - Hump4.addBox(-2F, -3F, 0F, 2, 3, 1); - Hump4.setRotationPoint(14F, 0F, 3F); - Hump4.setTextureSize(128, 64); - Hump4.mirror = true; - setRotation(Hump4, 0F, 0F, -0.2617994F); - Hump5 = new ModelRenderer(this, 70, 24); - Hump5.addBox(0F, -3F, 0F, 2, 3, 1); - Hump5.setRotationPoint(10F, 0F, 3F); - Hump5.setTextureSize(128, 64); - Hump5.mirror = true; - setRotation(Hump5, 0F, 0F, 0.2617994F); - Hump6 = new ModelRenderer(this, 70, 28); - Hump6.addBox(0F, 0F, 0F, 2, 1, 1); - Hump6.setRotationPoint(11F, -3F, 3F); - Hump6.setTextureSize(128, 64); - Hump6.mirror = true; - setRotation(Hump6, 0F, 0F, 0F); - SightBack = new ModelRenderer(this, 80, 17); - SightBack.addBox(0F, 0F, 0F, 1, 1, 1); - SightBack.setRotationPoint(11.5F, -2F, 1.5F); - SightBack.setTextureSize(128, 64); - SightBack.mirror = true; - setRotation(SightBack, 0F, 0F, 0F); - Sight1 = new ModelRenderer(this, 80, 19); - Sight1.addBox(0F, 0F, 0F, 1, 1, 1); - Sight1.setRotationPoint(11.5F, -1F, 1.5F); - Sight1.setTextureSize(128, 64); - Sight1.mirror = true; - setRotation(Sight1, 0F, 0F, 0F); - Sight2 = new ModelRenderer(this, 84, 17); - Sight2.addBox(0F, 0F, 0F, 2, 1, 2); - Sight2.setRotationPoint(11F, -0.5F, 1F); - Sight2.setTextureSize(128, 64); - Sight2.mirror = true; - setRotation(Sight2, 0F, 0F, 0F); - Hump7 = new ModelRenderer(this, 94, 7); - Hump7.addBox(-2F, -3F, 0F, 2, 3, 1); - Hump7.setRotationPoint(-21F, 0F, 0F); - Hump7.setTextureSize(128, 64); - Hump7.mirror = true; - setRotation(Hump7, 0F, 0F, -0.2617994F); - Hump8 = new ModelRenderer(this, 94, 11); - Hump8.addBox(0F, -3F, 0F, 2, 3, 1); - Hump8.setRotationPoint(-25F, 0F, 0F); - Hump8.setTextureSize(128, 64); - Hump8.mirror = true; - setRotation(Hump8, 0F, 0F, 0.2617994F); - Hump9 = new ModelRenderer(this, 94, 15); - Hump9.addBox(0F, 0F, 0F, 2, 1, 1); - Hump9.setRotationPoint(-24F, -3F, 0F); - Hump9.setTextureSize(128, 64); - Hump9.mirror = true; - setRotation(Hump9, 0F, 0F, 0F); - Hump10 = new ModelRenderer(this, 100, 10); - Hump10.addBox(-2F, -3F, 0F, 2, 3, 1); - Hump10.setRotationPoint(-21F, 0F, 3F); - Hump10.setTextureSize(128, 64); - Hump10.mirror = true; - setRotation(Hump10, 0F, 0F, -0.2617994F); - Hump11 = new ModelRenderer(this, 100, 14); - Hump11.addBox(0F, -3F, 0F, 2, 3, 1); - Hump11.setRotationPoint(-25F, 0F, 3F); - Hump11.setTextureSize(128, 64); - Hump11.mirror = true; - setRotation(Hump11, 0F, 0F, 0.2617994F); - Hump12 = new ModelRenderer(this, 100, 18); - Hump12.addBox(0F, 0F, 0F, 2, 1, 1); - Hump12.setRotationPoint(-24F, -3F, 3F); - Hump12.setTextureSize(128, 64); - Hump12.mirror = true; - setRotation(Hump12, 0F, 0F, 0F); - Sight3 = new ModelRenderer(this, 34, 34); - Sight3.addBox(0F, 0F, 0F, 2, 1, 2); - Sight3.setRotationPoint(-24F, -0.5F, 1F); - Sight3.setTextureSize(128, 64); - Sight3.mirror = true; - setRotation(Sight3, 0F, 0F, 0F); - SightFront = new ModelRenderer(this, 34, 37); - SightFront.addBox(0F, 0F, 0F, 1, 2, 0); - SightFront.setRotationPoint(-23.5F, -1.5F, 2F); - SightFront.setTextureSize(128, 64); - SightFront.mirror = true; - setRotation(SightFront, 0F, 0F, 0F); - Knob1 = new ModelRenderer(this, 42, 31); - Knob1.addBox(0F, 0F, 0F, 2, 2, 2); - Knob1.setRotationPoint(-15F, -2F, 1F); - Knob1.setTextureSize(128, 64); - Knob1.mirror = true; - setRotation(Knob1, 0F, 0F, 0F); - Knob2 = new ModelRenderer(this, 50, 31); - Knob2.addBox(-1F, 0F, -1F, 2, 2, 2); - Knob2.setRotationPoint(-14F, -2F, 2F); - Knob2.setTextureSize(128, 64); - Knob2.mirror = true; - setRotation(Knob2, 0F, 0.7853982F, 0F); - Bolt1 = new ModelRenderer(this, 42, 35); - Bolt1.addBox(0F, 0F, 0F, 1, 1, 1); - Bolt1.setRotationPoint(11.5F, -2F, -0.5F); - Bolt1.setTextureSize(128, 64); - Bolt1.mirror = true; - setRotation(Bolt1, 0F, 0F, 0F); - Bolt2 = new ModelRenderer(this, 46, 35); - Bolt2.addBox(0F, 0F, 0F, 1, 1, 1); - Bolt2.setRotationPoint(11.5F, -2F, 3.5F); - Bolt2.setTextureSize(128, 64); - Bolt2.mirror = true; - setRotation(Bolt2, 0F, 0F, 0F); - Mag = new ModelRenderer(this, 118, 8); - Mag.addBox(0F, 0F, 0F, 3, 10, 2); - Mag.setRotationPoint(-4.5F, 17F, 1F); - Mag.setTextureSize(128, 64); - Mag.mirror = true; - setRotation(Mag, 0F, 0F, 0F); - Trigger = new ModelRenderer(this, 0, 41); - Trigger.addBox(-1F, 0F, 0F, 1, 3, 1); - Trigger.setRotationPoint(-6F, 7F, 1.5F); - Trigger.setTextureSize(128, 64); - Trigger.mirror = true; - setRotation(Trigger, 0F, 0F, 0.3490659F); - Frame1 = new ModelRenderer(this, 4, 41); - Frame1.addBox(0F, 0F, 0F, 3, 4, 2); - Frame1.setRotationPoint(-10F, 7F, 1F); - Frame1.setTextureSize(128, 64); - Frame1.mirror = true; - setRotation(Frame1, 0F, 0F, 0F); - Frame2 = new ModelRenderer(this, 14, 41); - Frame2.addBox(0F, -1F, 0F, 3, 1, 2); - Frame2.setRotationPoint(-7F, 11F, 1F); - Frame2.setTextureSize(128, 64); - Frame2.mirror = true; - setRotation(Frame2, 0F, 0F, -0.4363323F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - GL11.glDisable(GL11.GL_CULL_FACE); - BodyBack.render(f5); - BodyBottom.render(f5); - BodySide.render(f5); - Ejector.render(f5); - BodyFront.render(f5); - GripFront.render(f5); - StockFront.render(f5); - StockPlate.render(f5); - HandleBase.render(f5); - Handle.render(f5); - HandleBack.render(f5); - HandleBottom.render(f5); - HandlePlate.render(f5); - HandleTop.render(f5); - Muzzle1.render(f5); - Muzzle2.render(f5); - StockBack.render(f5); - StockPlate1.render(f5); - Stock1.render(f5); - Stock2.render(f5); - Stcok3.render(f5); - Stock4.render(f5); - Hump1.render(f5); - Hump2.render(f5); - Hump3.render(f5); - Hump4.render(f5); - Hump5.render(f5); - Hump6.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - SightBack.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - Sight1.render(f5); - Sight2.render(f5); - Hump7.render(f5); - Hump8.render(f5); - Hump9.render(f5); - Hump10.render(f5); - Hump11.render(f5); - Hump12.render(f5); - Sight3.render(f5); - SightFront.render(f5); - Knob1.render(f5); - Knob2.render(f5); - Bolt1.render(f5); - Bolt2.render(f5); - Mag.render(f5); - GL11.glDisable(GL11.GL_CULL_FACE); - Trigger.render(f5); - Frame1.render(f5); - Frame2.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelUziBarrel.java b/src/main/java/com/hbm/render/model/ModelUziBarrel.java deleted file mode 100644 index c699eb13d..000000000 --- a/src/main/java/com/hbm/render/model/ModelUziBarrel.java +++ /dev/null @@ -1,45 +0,0 @@ -// Date: 22.07.2018 14:26:58 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelUziBarrel extends ModelBase { - // fields - ModelRenderer Barrel; - - public ModelUziBarrel() { - textureWidth = 32; - textureHeight = 32; - - Barrel = new ModelRenderer(this, 0, 0); - Barrel.addBox(0F, 0F, 0F, 12, 2, 2); - Barrel.setRotationPoint(-40F, 2F, 1F); - Barrel.setTextureSize(32, 32); - Barrel.mirror = true; - setRotation(Barrel, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Barrel.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelUziSilencer.java b/src/main/java/com/hbm/render/model/ModelUziSilencer.java deleted file mode 100644 index 5066db4c4..000000000 --- a/src/main/java/com/hbm/render/model/ModelUziSilencer.java +++ /dev/null @@ -1,61 +0,0 @@ -// Date: 22.07.2018 14:32:28 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelUziSilencer extends ModelBase { - // fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - - public ModelUziSilencer() { - textureWidth = 128; - textureHeight = 32; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 32, 5, 3); - Shape1.setRotationPoint(-60F, 0.5F, 0.5F); - Shape1.setTextureSize(128, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 8); - Shape2.addBox(0F, 0F, 0F, 32, 3, 5); - Shape2.setRotationPoint(-60F, 1.5F, -0.5F); - Shape2.setTextureSize(128, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 16); - Shape3.addBox(0F, 0F, 0F, 32, 4, 4); - Shape3.setRotationPoint(-60F, 1F, 0F); - Shape3.setTextureSize(128, 32); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelXVL1456.java b/src/main/java/com/hbm/render/model/ModelXVL1456.java deleted file mode 100644 index 2d60edd3f..000000000 --- a/src/main/java/com/hbm/render/model/ModelXVL1456.java +++ /dev/null @@ -1,293 +0,0 @@ -// Date: 12.07.2016 17:01:02 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelXVL1456 extends ModelBase { - // fields - ModelRenderer CoilFront; - ModelRenderer Panel1; - ModelRenderer Panel2; - ModelRenderer Panel3; - ModelRenderer CoilBack; - ModelRenderer SpinPivot; - ModelRenderer Barrel; - ModelRenderer CoilBarrel; - ModelRenderer PipeBarrel; - ModelRenderer PipeHolder; - ModelRenderer Rail1; - ModelRenderer Rail2; - ModelRenderer Rail3; - ModelRenderer Rail4; - ModelRenderer Rail5; - ModelRenderer Rail6; - ModelRenderer TankHolder; - ModelRenderer HandleBase; - ModelRenderer HandleShaft; - ModelRenderer HanldeGrip; - ModelRenderer SpinC1; - ModelRenderer SpinC2; - ModelRenderer SpinC3; - ModelRenderer SpinP1; - ModelRenderer SpinP2; - ModelRenderer SpinP3; - ModelRenderer Battery1; - ModelRenderer Battery2; - ModelRenderer StockBase; - ModelRenderer StockTrigger; - ModelRenderer Shape1; - int i = 0; - - public ModelXVL1456() { - textureWidth = 128; - textureHeight = 64; - - CoilFront = new ModelRenderer(this, 0, 0); - CoilFront.addBox(0F, 0F, 0F, 4, 10, 10); - CoilFront.setRotationPoint(0F, 0F, 0F); - CoilFront.setTextureSize(128, 64); - CoilFront.mirror = true; - setRotation(CoilFront, 0F, 0F, 0F); - Panel1 = new ModelRenderer(this, 0, 40); - Panel1.addBox(0F, 0F, 0F, 5, 11, 3); - Panel1.setRotationPoint(4F, -1F, 3.5F); - Panel1.setTextureSize(128, 64); - Panel1.mirror = true; - setRotation(Panel1, 0F, 0F, 0F); - Panel2 = new ModelRenderer(this, 0, 54); - Panel2.addBox(0F, 0F, 0F, 5, 3, 3); - Panel2.setRotationPoint(9F, -1F, 3.5F); - Panel2.setTextureSize(128, 64); - Panel2.mirror = true; - setRotation(Panel2, 0F, 0F, 0F); - Panel3 = new ModelRenderer(this, 16, 40); - Panel3.addBox(0F, 0F, 0F, 3, 11, 3); - Panel3.setRotationPoint(14F, -1F, 3.5F); - Panel3.setTextureSize(128, 64); - Panel3.mirror = true; - setRotation(Panel3, 0F, 0F, 0F); - CoilBack = new ModelRenderer(this, 0, 20); - CoilBack.addBox(0F, 0F, 0F, 4, 10, 10); - CoilBack.setRotationPoint(17F, 0F, 0F); - CoilBack.setTextureSize(128, 64); - CoilBack.mirror = true; - setRotation(CoilBack, 0F, 0F, 0F); - SpinPivot = new ModelRenderer(this, 66, 42); - SpinPivot.addBox(0F, 0F, 0F, 5, 1, 1); - SpinPivot.setRotationPoint(9F, 5.5F, 4.5F); - SpinPivot.setTextureSize(128, 64); - SpinPivot.mirror = true; - setRotation(SpinPivot, 0F, 0F, 0F); - Barrel = new ModelRenderer(this, 64, 0); - Barrel.addBox(0F, 0F, 0F, 28, 1, 1); - Barrel.setRotationPoint(-28F, 4.5F, 4.5F); - Barrel.setTextureSize(128, 64); - Barrel.mirror = true; - setRotation(Barrel, 0F, 0F, 0F); - CoilBarrel = new ModelRenderer(this, 28, 4); - CoilBarrel.addBox(0F, 0F, 0F, 9, 7, 7); - CoilBarrel.setRotationPoint(-19F, 1.5F, 1.5F); - CoilBarrel.setTextureSize(128, 64); - CoilBarrel.mirror = true; - setRotation(CoilBarrel, 0F, 0F, 0F); - PipeBarrel = new ModelRenderer(this, 28, 0); - PipeBarrel.addBox(0F, 0F, 0F, 16, 2, 2); - PipeBarrel.setRotationPoint(-13F, 6F, -0.4666667F); - PipeBarrel.setTextureSize(128, 64); - PipeBarrel.mirror = true; - setRotation(PipeBarrel, 0F, 0F, 0F); - PipeHolder = new ModelRenderer(this, 42, 37); - PipeHolder.addBox(0F, 0F, 0F, 3, 4, 1); - PipeHolder.setRotationPoint(0.5F, 5F, -1F); - PipeHolder.setTextureSize(128, 64); - PipeHolder.mirror = true; - setRotation(PipeHolder, 0F, 0F, 0F); - Rail1 = new ModelRenderer(this, 28, 27); - Rail1.addBox(0F, 0F, 0F, 1, 5, 1); - Rail1.setRotationPoint(5F, -2F, 2.5F); - Rail1.setTextureSize(128, 64); - Rail1.mirror = true; - setRotation(Rail1, 0F, 0F, 0F); - Rail2 = new ModelRenderer(this, 32, 27); - Rail2.addBox(0F, 0F, 0F, 1, 5, 1); - Rail2.setRotationPoint(5F, -2F, 6.5F); - Rail2.setTextureSize(128, 64); - Rail2.mirror = true; - setRotation(Rail2, 0F, 0F, 0F); - Rail3 = new ModelRenderer(this, 28, 23); - Rail3.addBox(0F, 0F, 0F, 18, 1, 1); - Rail3.setRotationPoint(-12F, -3F, 2.5F); - Rail3.setTextureSize(128, 64); - Rail3.mirror = true; - setRotation(Rail3, 0F, 0F, 0F); - Rail4 = new ModelRenderer(this, 28, 25); - Rail4.addBox(0F, 0F, 0F, 18, 1, 1); - Rail4.setRotationPoint(-12F, -3F, 6.5F); - Rail4.setTextureSize(128, 64); - Rail4.mirror = true; - setRotation(Rail4, 0F, 0F, 0F); - Rail5 = new ModelRenderer(this, 28, 18); - Rail5.addBox(0F, 0F, 0F, 1, 4, 1); - Rail5.setRotationPoint(-12F, -2F, 2.5F); - Rail5.setTextureSize(128, 64); - Rail5.mirror = true; - setRotation(Rail5, 0F, 0F, 0F); - Rail6 = new ModelRenderer(this, 32, 18); - Rail6.addBox(0F, 0F, 0F, 1, 4, 1); - Rail6.setRotationPoint(-12F, -2F, 6.5F); - Rail6.setTextureSize(128, 64); - Rail6.mirror = true; - setRotation(Rail6, 0F, 0F, 0F); - TankHolder = new ModelRenderer(this, 42, 27); - TankHolder.addBox(0F, 0F, 0F, 4, 2, 1); - TankHolder.setRotationPoint(4.5F, 4F, 2.5F); - TankHolder.setTextureSize(128, 64); - TankHolder.mirror = true; - setRotation(TankHolder, 0F, 0F, 0F); - HandleBase = new ModelRenderer(this, 28, 33); - HandleBase.addBox(0F, 0F, 0F, 6, 1, 1); - HandleBase.setRotationPoint(9F, -2F, 4.5F); - HandleBase.setTextureSize(128, 64); - HandleBase.mirror = true; - setRotation(HandleBase, 0F, 0F, 0F); - HandleShaft = new ModelRenderer(this, 28, 35); - HandleShaft.addBox(0F, 0F, 0F, 1, 3, 1); - HandleShaft.setRotationPoint(8F, -4F, 4.5F); - HandleShaft.setTextureSize(128, 64); - HandleShaft.mirror = true; - setRotation(HandleShaft, 0F, 0F, 0F); - HanldeGrip = new ModelRenderer(this, 28, 39); - HanldeGrip.addBox(0F, 0F, 0F, 5, 2, 2); - HanldeGrip.setRotationPoint(9F, -5F, 4F); - HanldeGrip.setTextureSize(128, 64); - HanldeGrip.mirror = true; - setRotation(HanldeGrip, 0F, 0F, 0F); - SpinC1 = new ModelRenderer(this, 66, 21); - SpinC1.addBox(0F, -3.5F, -2F, 4, 3, 4); - SpinC1.setRotationPoint(9.5F, 6F, 5F); - SpinC1.setTextureSize(128, 64); - SpinC1.mirror = true; - setRotation(SpinC1, 0F, 0F, 0F); - SpinC2 = new ModelRenderer(this, 66, 28); - SpinC2.addBox(0F, -3.5F, -2F, 4, 3, 4); - SpinC2.setRotationPoint(9.5F, 6F, 5F); - SpinC2.setTextureSize(128, 64); - SpinC2.mirror = true; - setRotation(SpinC2, 2.094395F, 0F, 0F); - SpinC3 = new ModelRenderer(this, 66, 35); - SpinC3.addBox(0F, -3.5F, -2F, 4, 3, 4); - SpinC3.setRotationPoint(9.5F, 6F, 5F); - SpinC3.setTextureSize(128, 64); - SpinC3.mirror = true; - setRotation(SpinC3, -2.094395F, 0F, 0F); - SpinP1 = new ModelRenderer(this, 82, 21); - SpinP1.addBox(0F, -3F, -1.5F, 3, 2, 3); - SpinP1.setRotationPoint(10F, 6F, 5F); - SpinP1.setTextureSize(128, 64); - SpinP1.mirror = true; - setRotation(SpinP1, 1.047198F, 0F, 0F); - SpinP2 = new ModelRenderer(this, 82, 26); - SpinP2.addBox(0F, -3F, -1.5F, 3, 2, 3); - SpinP2.setRotationPoint(10F, 6F, 5F); - SpinP2.setTextureSize(128, 64); - SpinP2.mirror = true; - setRotation(SpinP2, 3.141593F, 0F, 0F); - SpinP3 = new ModelRenderer(this, 82, 31); - SpinP3.addBox(0F, -3F, -1.5F, 3, 2, 3); - SpinP3.setRotationPoint(10F, 6F, 5F); - SpinP3.setTextureSize(128, 64); - SpinP3.mirror = true; - setRotation(SpinP3, -1.047198F, 0F, 0F); - Battery1 = new ModelRenderer(this, 64, 2); - Battery1.addBox(0F, 0F, 0F, 1, 1, 3); - Battery1.setRotationPoint(17.8F, -1F, 3.5F); - Battery1.setTextureSize(128, 64); - Battery1.mirror = true; - setRotation(Battery1, 0F, 0F, 0F); - Battery2 = new ModelRenderer(this, 72, 2); - Battery2.addBox(0F, 0F, 0F, 1, 1, 3); - Battery2.setRotationPoint(19.3F, -1F, 3.5F); - Battery2.setTextureSize(128, 64); - Battery2.mirror = true; - setRotation(Battery2, 0F, 0F, 0F); - StockBase = new ModelRenderer(this, 60, 12); - StockBase.addBox(0F, 0F, 0F, 12, 6, 3); - StockBase.setRotationPoint(22F, 7F, 3.5F); - StockBase.setTextureSize(128, 64); - StockBase.mirror = true; - setRotation(StockBase, 0F, 0F, 0F); - StockTrigger = new ModelRenderer(this, 60, 6); - StockTrigger.addBox(-3.5F, -1.5F, 0F, 5, 4, 2); - StockTrigger.setRotationPoint(22F, 10F, 4F); - StockTrigger.setTextureSize(128, 64); - StockTrigger.mirror = true; - setRotation(StockTrigger, 0F, 0F, 0.7853982F); - Shape1 = new ModelRenderer(this, 42, 30); - Shape1.addBox(0F, -1F, -1F, 2, 5, 2); - Shape1.setRotationPoint(5.5F, 6F, 2.5F); - Shape1.setTextureSize(128, 64); - Shape1.mirror = true; - setRotation(Shape1, -0.7853982F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, float rot) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - CoilFront.render(f5); - Panel1.render(f5); - Panel2.render(f5); - Panel3.render(f5); - CoilBack.render(f5); - SpinPivot.render(f5); - Barrel.render(f5); - CoilBarrel.render(f5); - PipeBarrel.render(f5); - PipeHolder.render(f5); - Rail1.render(f5); - Rail2.render(f5); - Rail3.render(f5); - Rail4.render(f5); - Rail5.render(f5); - Rail6.render(f5); - TankHolder.render(f5); - HandleBase.render(f5); - HandleShaft.render(f5); - HanldeGrip.render(f5); - SpinC1.rotateAngleX += rot; - SpinC2.rotateAngleX += rot; - SpinC3.rotateAngleX += rot; - SpinP1.rotateAngleX += rot; - SpinP2.rotateAngleX += rot; - SpinP3.rotateAngleX += rot; - SpinC1.render(f5); - SpinC2.render(f5); - SpinC3.render(f5); - SpinP1.render(f5); - SpinP2.render(f5); - SpinP3.render(f5); - Battery1.render(f5); - Battery2.render(f5); - StockBase.render(f5); - StockTrigger.render(f5); - Shape1.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelZOMG.java b/src/main/java/com/hbm/render/model/ModelZOMG.java deleted file mode 100644 index 9d338ad96..000000000 --- a/src/main/java/com/hbm/render/model/ModelZOMG.java +++ /dev/null @@ -1,255 +0,0 @@ -// Date: 14.08.2016 18:55:34 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelZOMG extends ModelBase { - // fields - ModelRenderer Body; - ModelRenderer BodyFront; - ModelRenderer BodyFrontPlate; - ModelRenderer PipeLeft; - ModelRenderer PipeRight; - ModelRenderer PipeBottom; - ModelRenderer Head; - ModelRenderer HeadBottom; - ModelRenderer HeadBottomPlate; - ModelRenderer BodyTop; - ModelRenderer BodyCenter; - ModelRenderer BodyBack; - ModelRenderer BodyBackPlate; - ModelRenderer StockTop; - ModelRenderer StockBack; - ModelRenderer StockBackPlate; - ModelRenderer Handle; - ModelRenderer PistonBack; - ModelRenderer PistonFront; - ModelRenderer BarrelVertical; - ModelRenderer BarrelHorizontal; - ModelRenderer BarrelCenter; - ModelRenderer HandleBack; - ModelRenderer BarrelPipe; - ModelRenderer PistonPivot; - ModelRenderer Scope; - ModelRenderer ScopePivot; - - public ModelZOMG() { - textureWidth = 128; - textureHeight = 64; - - Body = new ModelRenderer(this, 0, 0); - Body.addBox(0F, 0F, 0F, 12, 5, 4); - Body.setRotationPoint(-6F, 0F, 0F); - Body.setTextureSize(128, 64); - Body.mirror = true; - setRotation(Body, 0F, 0F, 0F); - BodyFront = new ModelRenderer(this, 32, 14); - BodyFront.addBox(0F, 0F, 0F, 1, 4, 4); - BodyFront.setRotationPoint(-7F, 0F, 0F); - BodyFront.setTextureSize(128, 64); - BodyFront.mirror = true; - setRotation(BodyFront, 0F, 0F, 0F); - BodyFrontPlate = new ModelRenderer(this, 46, 6); - BodyFrontPlate.addBox(-2F, -1F, 0F, 2, 1, 4); - BodyFrontPlate.setRotationPoint(-6F, 5F, 0F); - BodyFrontPlate.setTextureSize(128, 64); - BodyFrontPlate.mirror = true; - setRotation(BodyFrontPlate, 0F, 0F, 0.6981317F); - PipeLeft = new ModelRenderer(this, 0, 29); - PipeLeft.addBox(0F, 0F, 0F, 6, 1, 1); - PipeLeft.setRotationPoint(-13F, 0.5F, 0.5F); - PipeLeft.setTextureSize(128, 64); - PipeLeft.mirror = true; - setRotation(PipeLeft, 0F, 0F, 0F); - PipeRight = new ModelRenderer(this, 14, 29); - PipeRight.addBox(0F, 0F, 0F, 6, 1, 1); - PipeRight.setRotationPoint(-13F, 0.5F, 2.5F); - PipeRight.setTextureSize(128, 64); - PipeRight.mirror = true; - setRotation(PipeRight, 0F, 0F, 0F); - PipeBottom = new ModelRenderer(this, 14, 25); - PipeBottom.addBox(0F, 0F, 0F, 6, 2, 2); - PipeBottom.setRotationPoint(-13F, 2F, 1F); - PipeBottom.setTextureSize(128, 64); - PipeBottom.mirror = true; - setRotation(PipeBottom, 0F, 0F, 0F); - Head = new ModelRenderer(this, 32, 0); - Head.addBox(0F, 0F, 0F, 3, 4, 4); - Head.setRotationPoint(-16F, 0F, 0F); - Head.setTextureSize(128, 64); - Head.mirror = true; - setRotation(Head, 0F, 0F, 0F); - HeadBottom = new ModelRenderer(this, 46, 0); - HeadBottom.addBox(0F, 0F, 0F, 2, 2, 4); - HeadBottom.setRotationPoint(-15F, 4F, 0F); - HeadBottom.setTextureSize(128, 64); - HeadBottom.mirror = true; - setRotation(HeadBottom, 0F, 0F, 0F); - HeadBottomPlate = new ModelRenderer(this, 32, 8); - HeadBottomPlate.addBox(0F, 0F, 0F, 1, 2, 4); - HeadBottomPlate.setRotationPoint(-16F, 4F, 0F); - HeadBottomPlate.setTextureSize(128, 64); - HeadBottomPlate.mirror = true; - setRotation(HeadBottomPlate, 0F, 0F, -0.4363323F); - BodyTop = new ModelRenderer(this, 0, 17); - BodyTop.addBox(0F, 0F, 0F, 10, 1, 3); - BodyTop.setRotationPoint(-5F, -0.5F, 0.5F); - BodyTop.setTextureSize(128, 64); - BodyTop.mirror = true; - setRotation(BodyTop, 0F, 0F, 0F); - BodyCenter = new ModelRenderer(this, 0, 9); - BodyCenter.addBox(0F, 0F, 0F, 11, 3, 5); - BodyCenter.setRotationPoint(-5.5F, 1F, -0.5F); - BodyCenter.setTextureSize(128, 64); - BodyCenter.mirror = true; - setRotation(BodyCenter, 0F, 0F, 0F); - BodyBack = new ModelRenderer(this, 42, 11); - BodyBack.addBox(0F, 0F, 0F, 1, 3, 4); - BodyBack.setRotationPoint(6F, 2F, 0F); - BodyBack.setTextureSize(128, 64); - BodyBack.mirror = true; - setRotation(BodyBack, 0F, 0F, 0F); - BodyBackPlate = new ModelRenderer(this, 58, 0); - BodyBackPlate.addBox(-1F, -3F, 0F, 1, 4, 2); - BodyBackPlate.setRotationPoint(7F, 2F, 1F); - BodyBackPlate.setTextureSize(128, 64); - BodyBackPlate.mirror = true; - setRotation(BodyBackPlate, 0F, 0F, -0.4363323F); - StockTop = new ModelRenderer(this, 0, 21); - StockTop.addBox(0F, 0F, 0F, 8, 2, 2); - StockTop.setRotationPoint(7F, 3F, 1F); - StockTop.setTextureSize(128, 64); - StockTop.mirror = true; - setRotation(StockTop, 0F, 0F, 0F); - StockBack = new ModelRenderer(this, 20, 21); - StockBack.addBox(0F, 0F, 0F, 4, 2, 2); - StockBack.setRotationPoint(11F, 5F, 1F); - StockBack.setTextureSize(128, 64); - StockBack.mirror = true; - setRotation(StockBack, 0F, 0F, 0F); - StockBackPlate = new ModelRenderer(this, 0, 25); - StockBackPlate.addBox(-5F, -2F, 0F, 5, 2, 2); - StockBackPlate.setRotationPoint(11F, 7F, 1F); - StockBackPlate.setTextureSize(128, 64); - StockBackPlate.mirror = true; - setRotation(StockBackPlate, 0F, 0F, 0.418879F); - Handle = new ModelRenderer(this, 64, 8); - Handle.addBox(0F, 0F, 0F, 2, 4, 2); - Handle.setRotationPoint(-4F, 5F, 1F); - Handle.setTextureSize(128, 64); - Handle.mirror = true; - setRotation(Handle, 0F, 0F, 0F); - PistonBack = new ModelRenderer(this, 30, 26); - PistonBack.addBox(0F, -4F, 0F, 2, 4, 2); - PistonBack.setRotationPoint(1F, 4F, -0.5F); - PistonBack.setTextureSize(128, 64); - PistonBack.mirror = true; - setRotation(PistonBack, 0.7853982F, 0F, 0F); - PistonFront = new ModelRenderer(this, 52, 11); - PistonFront.addBox(0F, -4F, 0F, 2, 4, 2); - PistonFront.setRotationPoint(-3F, 4F, -0.5F); - PistonFront.setTextureSize(128, 64); - PistonFront.mirror = true; - setRotation(PistonFront, 0.7853982F, 0F, 0F); - BarrelVertical = new ModelRenderer(this, 38, 22); - BarrelVertical.addBox(0F, 0F, 0F, 8, 3, 2); - BarrelVertical.setRotationPoint(-4F, 1F, 5F); - BarrelVertical.setTextureSize(128, 64); - BarrelVertical.mirror = true; - setRotation(BarrelVertical, 0F, 0F, 0F); - BarrelHorizontal = new ModelRenderer(this, 38, 27); - BarrelHorizontal.addBox(0F, 0F, 0F, 8, 2, 3); - BarrelHorizontal.setRotationPoint(-4F, 1.5F, 4.5F); - BarrelHorizontal.setTextureSize(128, 64); - BarrelHorizontal.mirror = true; - setRotation(BarrelHorizontal, 0F, 0F, 0F); - BarrelCenter = new ModelRenderer(this, 64, 0); - BarrelCenter.addBox(0F, 0F, 0F, 10, 2, 2); - BarrelCenter.setRotationPoint(-5F, 1.5F, 5F); - BarrelCenter.setTextureSize(128, 64); - BarrelCenter.mirror = true; - setRotation(BarrelCenter, 0F, 0F, 0F); - HandleBack = new ModelRenderer(this, 60, 8); - HandleBack.addBox(0F, 0F, 0F, 1, 4, 1); - HandleBack.setRotationPoint(-2.5F, 5F, 1.5F); - HandleBack.setTextureSize(128, 64); - HandleBack.mirror = true; - setRotation(HandleBack, 0F, 0F, 0F); - BarrelPipe = new ModelRenderer(this, 64, 4); - BarrelPipe.addBox(-10F, 0F, -1F, 10, 1, 1); - BarrelPipe.setRotationPoint(-5F, 2F, 6.5F); - BarrelPipe.setTextureSize(128, 64); - BarrelPipe.mirror = true; - setRotation(BarrelPipe, 0F, -0.2602503F, 0F); - PistonPivot = new ModelRenderer(this, 60, 14); - PistonPivot.addBox(0F, -2F, 0.5F, 7, 2, 1); - PistonPivot.setRotationPoint(-3.5F, 4F, -0.5F); - PistonPivot.setTextureSize(128, 64); - PistonPivot.mirror = true; - setRotation(PistonPivot, 0.7853982F, 0F, 0F); - Scope = new ModelRenderer(this, 48, 18); - Scope.addBox(0F, 0F, 0F, 6, 2, 2); - Scope.setRotationPoint(-3F, -3F, 1F); - Scope.setTextureSize(128, 64); - Scope.mirror = true; - setRotation(Scope, 0F, 0F, 0F); - ScopePivot = new ModelRenderer(this, 58, 6); - ScopePivot.addBox(0F, 0F, 0F, 4, 1, 1); - ScopePivot.setRotationPoint(-2F, -1F, 1.5F); - ScopePivot.setTextureSize(128, 64); - ScopePivot.mirror = true; - setRotation(ScopePivot, 0F, 0F, 0F); - } - - @Override - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - Body.render(f5); - BodyFront.render(f5); - BodyFrontPlate.render(f5); - PipeLeft.render(f5); - PipeRight.render(f5); - PipeBottom.render(f5); - Head.render(f5); - HeadBottom.render(f5); - HeadBottomPlate.render(f5); - BodyTop.render(f5); - BodyCenter.render(f5); - BodyBack.render(f5); - BodyBackPlate.render(f5); - StockTop.render(f5); - StockBack.render(f5); - StockBackPlate.render(f5); - Handle.render(f5); - PistonBack.render(f5); - PistonFront.render(f5); - BarrelVertical.render(f5); - BarrelHorizontal.render(f5); - BarrelCenter.render(f5); - HandleBack.render(f5); - BarrelPipe.render(f5); - PistonPivot.render(f5); - Scope.render(f5); - ScopePivot.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/tileentity/RenderAmmoPress.java b/src/main/java/com/hbm/render/tileentity/RenderAmmoPress.java new file mode 100644 index 000000000..3eb232496 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderAmmoPress.java @@ -0,0 +1,75 @@ +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.TileEntityMachineAmmoPress; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderAmmoPress extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + + TileEntityMachineAmmoPress tile = (TileEntityMachineAmmoPress) tileEntity; + + switch(tileEntity.getBlockMetadata() - BlockDummyable.offset) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + float press = tile.prevPress + (tile.press - tile.prevPress) * f; + float lift = tile.prevLift + (tile.lift - tile.prevLift) * f; + + bindTexture(ResourceManager.ammo_press_tex); + ResourceManager.ammo_press.renderPart("Frame"); + + GL11.glPushMatrix(); + GL11.glTranslatef(0, -press * 0.25F, 0); + ResourceManager.ammo_press.renderPart("Press"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslatef(0, lift * 0.5F - 0.5F, 0); + ResourceManager.ammo_press.renderPart("Shells"); + if(tile.animState == tile.animState.RETRACTING || tile.animState == tile.animState.LOWERING) ResourceManager.ammo_press.renderPart("Bullets"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_ammo_press); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -2.5, 0); + GL11.glScaled(5, 5, 5); + } + public void renderCommon() { + GL11.glRotatef(90, 0F, 1F, 0F); + bindTexture(ResourceManager.ammo_press_tex); + ResourceManager.ammo_press.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderBobble.java b/src/main/java/com/hbm/render/tileentity/RenderBobble.java index fc5332997..d5039e39b 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderBobble.java +++ b/src/main/java/com/hbm/render/tileentity/RenderBobble.java @@ -8,7 +8,6 @@ import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; -import com.hbm.render.model.ModelUboinik; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; @@ -380,7 +379,6 @@ public class RenderBobble extends TileEntitySpecialRenderer { bobble.renderPart("Drillgon"); } - private ModelUboinik shotgun = new ModelUboinik(); private ResourceLocation shot_tex = new ResourceLocation(RefStrings.MODID +":textures/models/ModelUboinik.png"); /* @@ -451,7 +449,7 @@ public class RenderBobble extends TileEntitySpecialRenderer { GL11.glRotated(-60, 0, 1, 0); GL11.glTranslated(-0.2, 0, 0); GL11.glScaled(0.5, 0.5, 0.5); - shotgun.renderDud(0.0625F); + //shotgun.renderDud(0.0625F); break; case MELLOW: GL11.glEnable(GL11.GL_BLEND); diff --git a/src/main/java/com/hbm/render/tileentity/RenderCraneConsole.java b/src/main/java/com/hbm/render/tileentity/RenderCraneConsole.java index d06119605..467f1fc22 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderCraneConsole.java +++ b/src/main/java/com/hbm/render/tileentity/RenderCraneConsole.java @@ -108,18 +108,40 @@ public class RenderCraneConsole extends TileEntitySpecialRenderer { double posX = (console.lastPosFront + (console.posFront - console.lastPosFront) * interp); double posZ = (console.lastPosLeft + (console.posLeft - console.lastPosLeft) * interp); - GL11.glTranslated(0, 0, posZ); + GL11.glTranslated(-posX, 0, posZ); + + int craneRotationOffset = ((TileEntityCraneConsole)te).craneRotationOffset; + GL11.glRotatef(craneRotationOffset, 0F, 1F, 0F); GL11.glPushMatrix(); - GL11.glTranslated(-console.spanL, height - 1, 0); + int girderSpan = 0; + GL11.glRotatef(-craneRotationOffset, 0F, 1F, 0F); + switch(craneRotationOffset) { + case 0: + girderSpan = console.spanL + console.spanR + 1; + GL11.glTranslated(posX - console.spanL, 0, 0); + break; + case 90: + girderSpan = console.spanF + console.spanB + 1; + GL11.glTranslated(0, 0, -posZ + console.spanB); + break; + case 180: + girderSpan = console.spanL + console.spanR + 1; + GL11.glTranslated(posX + console.spanR, 0, 0); + break; + case 270: + girderSpan = console.spanF + console.spanB + 1; + GL11.glTranslated(0, 0, -posZ - console.spanF); + break; + } + GL11.glRotatef(craneRotationOffset, 0F, 1F, 0F); - for(int i = -console.spanL; i <= console.spanR; i++) { + for(int i = 0; i < girderSpan; i++) { ResourceManager.rbmk_crane.renderPart("Girder"); GL11.glTranslated(1, 0, 0); } GL11.glPopMatrix(); - GL11.glTranslated(-posX, 0, 0); ResourceManager.rbmk_crane.renderPart("Main"); GL11.glPushMatrix(); diff --git a/src/main/java/com/hbm/render/tileentity/RenderDecoBlock.java b/src/main/java/com/hbm/render/tileentity/RenderDecoBlock.java index 00cdc05fa..724423e3c 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderDecoBlock.java +++ b/src/main/java/com/hbm/render/tileentity/RenderDecoBlock.java @@ -8,43 +8,28 @@ import com.hbm.main.ResourceManager; import com.hbm.render.model.ModelBroadcaster; import com.hbm.render.model.ModelGeiger; import com.hbm.render.model.ModelRadio; -import com.hbm.render.model.ModelSteelBeam; -import com.hbm.render.model.ModelSteelCorner; import com.hbm.render.model.ModelSteelRoof; -import com.hbm.render.model.ModelSteelScaffold; -import com.hbm.render.model.ModelSteelWall; +import net.minecraft.block.Block; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; public class RenderDecoBlock extends TileEntitySpecialRenderer { - private static final ResourceLocation texture1 = new ResourceLocation(RefStrings.MODID + ":" + "textures/models/SteelWall.png"); - private static final ResourceLocation texture2 = new ResourceLocation(RefStrings.MODID + ":" + "textures/models/SteelCorner.png"); private static final ResourceLocation texture3 = new ResourceLocation(RefStrings.MODID + ":" + "textures/models/SteelRoof.png"); - private static final ResourceLocation texture4 = new ResourceLocation(RefStrings.MODID + ":" + "textures/models/SteelBeam.png"); - private static final ResourceLocation texture5 = new ResourceLocation(RefStrings.MODID + ":" + "textures/models/SteelScaffold.png"); private static final ResourceLocation texture6 = new ResourceLocation(RefStrings.MODID + ":" + "textures/models/ModelBroadcaster.png"); private static final ResourceLocation texture7 = new ResourceLocation(RefStrings.MODID + ":" + "textures/models/ModelRadio.png"); private static final ResourceLocation texture8 = new ResourceLocation(RefStrings.MODID + ":" + "textures/models/ModelRadioReceiver.png"); private static final ResourceLocation texture9 = new ResourceLocation(RefStrings.MODID + ":" + "textures/models/ModelGeiger.png"); - private ModelSteelWall model1; - private ModelSteelCorner model2; private ModelSteelRoof model3; - private ModelSteelBeam model4; - private ModelSteelScaffold model5; private ModelBroadcaster model6; private ModelRadio model7; private ModelGeiger model8; public RenderDecoBlock() { - this.model1 = new ModelSteelWall(); - this.model2 = new ModelSteelCorner(); this.model3 = new ModelSteelRoof(); - this.model4 = new ModelSteelBeam(); - this.model5 = new ModelSteelScaffold(); this.model6 = new ModelBroadcaster(); this.model7 = new ModelRadio(); this.model8 = new ModelGeiger(); @@ -53,339 +38,221 @@ public class RenderDecoBlock extends TileEntitySpecialRenderer { @Override public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float f) { GL11.glPushMatrix(); - GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F); + GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F); + GL11.glRotatef(180, 0F, 0F, 1F); + + GL11.glEnable(GL11.GL_LIGHTING); + + Block b = tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord); + + if(b == ModBlocks.steel_roof) { + this.bindTexture(texture3); + } + if(b == ModBlocks.broadcaster_pc) { + this.bindTexture(texture6); + switch(tileentity.getBlockMetadata()) + { + case 4: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + } + if(b == ModBlocks.geiger) { + this.bindTexture(texture9); + switch(tileentity.getBlockMetadata()) + { + case 4: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + } + if(b == ModBlocks.radiorec) { + this.bindTexture(texture8); + switch(tileentity.getBlockMetadata()) + { + case 4: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + } + if(b == ModBlocks.radiobox) { + this.bindTexture(texture7); + switch(tileentity.getBlockMetadata()) + { + case 4: + case 8: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 2: + case 6: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 5: + case 9: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 3: + case 7: GL11.glRotatef(180, 0F, 1F, 0F); break; + } + GL11.glTranslatef(0, 0, 1); + } + + GL11.glPushMatrix(); + if(b == ModBlocks.steel_roof) this.model3.renderModel(0.0625F); + if(b == ModBlocks.broadcaster_pc) this.model6.renderModel(0.0625F); + if(b== ModBlocks.geiger) this.model8.renderModel(0.0625F); + if(b == ModBlocks.radiobox) this.model7.renderModel(0.0625F, tileentity.getBlockMetadata() > 5 ? 160 : 20); + if(b == ModBlocks.radiorec) this.model6.renderModel(0.0625F); + GL11.glPopMatrix(); + + if(b == ModBlocks.boxcar) { + GL11.glRotatef(180, 0F, 0F, 1F); - - GL11.glEnable(GL11.GL_LIGHTING); - - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.steel_wall) - { - this.bindTexture(texture1); - switch(tileentity.getBlockMetadata()) - { - case 4: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 2: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(0, 0F, 1F, 0F); break; - } - } - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.steel_corner) - { - this.bindTexture(texture2); - switch(tileentity.getBlockMetadata()) - { - case 4: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 2: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(0, 0F, 1F, 0F); break; - } - } - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.steel_roof) - { - this.bindTexture(texture3); - } - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.steel_beam) - { - this.bindTexture(texture4); - } - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.steel_scaffold) - { - this.bindTexture(texture5); - switch(tileentity.getBlockMetadata()) - { - case 4: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 2: - GL11.glRotatef(0, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(0, 0F, 1F, 0F); break; - } - } - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.broadcaster_pc) - { - this.bindTexture(texture6); - switch(tileentity.getBlockMetadata()) - { - case 4: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 2: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(0, 0F, 1F, 0F); break; - } - } - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.geiger) - { - this.bindTexture(texture9); - switch(tileentity.getBlockMetadata()) - { - case 4: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 2: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(0, 0F, 1F, 0F); break; - } - } - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.radiorec) - { - this.bindTexture(texture8); - switch(tileentity.getBlockMetadata()) - { - case 4: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 2: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(0, 0F, 1F, 0F); break; - } - } - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.radiobox) - { - this.bindTexture(texture7); - switch(tileentity.getBlockMetadata()) - { - case 4: - case 8: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 2: - case 6: - GL11.glRotatef(0, 0F, 1F, 0F); break; - case 5: - case 9: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 3: - case 7: - GL11.glRotatef(180, 0F, 1F, 0F); break; - } - GL11.glTranslatef(0, 0, 1); - } - - GL11.glPushMatrix(); - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.steel_wall) - this.model1.renderModel(0.0625F); - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.steel_corner) - this.model2.renderModel(0.0625F); - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.steel_roof) - this.model3.renderModel(0.0625F); - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.steel_beam) - this.model4.renderModel(0.0625F); - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.steel_scaffold) - this.model5.renderModel(0.0625F); - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.broadcaster_pc) - this.model6.renderModel(0.0625F); - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.geiger) - this.model8.renderModel(0.0625F); - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.radiobox) - this.model7.renderModel(0.0625F, tileentity.getBlockMetadata() > 5 ? 160 : 20); - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.radiorec) - this.model6.renderModel(0.0625F); - GL11.glPopMatrix(); - - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.boxcar) { + GL11.glTranslatef(0, -1.5F, 0); + switch(tileentity.getBlockMetadata()) { + case 4: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(90, 0F, 1F, 0F); break; + default: GL11.glRotatef(180, 0F, 0F, 1F); - GL11.glTranslatef(0, -1.5F, 0); - - switch(tileentity.getBlockMetadata()) { - case 4: GL11.glRotatef(0, 0F, 1F, 0F); break; - case 2: GL11.glRotatef(270, 0F, 1F, 0F); break; - case 5: GL11.glRotatef(180, 0F, 1F, 0F); break; - case 3: GL11.glRotatef(90, 0F, 1F, 0F); break; - default: - GL11.glRotatef(180, 0F, 0F, 1F); - GL11.glRotated(90, 1, 0, 0); - GL11.glTranslatef(0, -1.5F, 0); - break; - } - - GL11.glEnable(GL11.GL_CULL_FACE); - bindTexture(ResourceManager.boxcar_tex); - ResourceManager.boxcar.renderAll(); + GL11.glRotated(90, 1, 0, 0); + GL11.glTranslatef(0, -1.5F, 0); break; } - - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.boat) { - GL11.glRotatef(180, 0F, 0F, 1F); - GL11.glTranslatef(0, 0, -1.5F); - GL11.glTranslatef(0, 0.5F, 0); - GL11.glEnable(GL11.GL_CULL_FACE); - bindTexture(ResourceManager.duchessgambit_tex); - ResourceManager.duchessgambit.renderAll(); + GL11.glEnable(GL11.GL_CULL_FACE); + bindTexture(ResourceManager.boxcar_tex); + ResourceManager.boxcar.renderAll(); + } + + if(b == ModBlocks.boat) { + GL11.glRotatef(180, 0F, 0F, 1F); + GL11.glTranslatef(0, 0, -1.5F); + GL11.glTranslatef(0, 0.5F, 0); + + GL11.glEnable(GL11.GL_CULL_FACE); + bindTexture(ResourceManager.duchessgambit_tex); + ResourceManager.duchessgambit.renderAll(); + } + + if(b == ModBlocks.sat_radar) { + GL11.glRotatef(180, 0F, 0F, 1F); + GL11.glTranslatef(0, -1.5F, 0); + GL11.glRotated(90, 0, 1, 0); + + switch(tileentity.getBlockMetadata()) { + case 4: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(0, 0F, 1F, 0F); break; } - - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.sat_radar) { - GL11.glRotatef(180, 0F, 0F, 1F); - GL11.glTranslatef(0, -1.5F, 0); - GL11.glRotated(90, 0, 1, 0); - - switch(tileentity.getBlockMetadata()) - { - case 4: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 2: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(0, 0F, 1F, 0F); break; - } + GL11.glEnable(GL11.GL_CULL_FACE); + bindTexture(ResourceManager.sat_base_tex); + ResourceManager.sat_base.renderAll(); + bindTexture(ResourceManager.sat_radar_tex); + ResourceManager.sat_radar.renderAll(); + } - GL11.glEnable(GL11.GL_CULL_FACE); - bindTexture(ResourceManager.sat_base_tex); - ResourceManager.sat_base.renderAll(); - bindTexture(ResourceManager.sat_radar_tex); - ResourceManager.sat_radar.renderAll(); + if(b == ModBlocks.sat_resonator) { + GL11.glRotatef(180, 0F, 0F, 1F); + GL11.glTranslatef(0, -1.5F, 0); + GL11.glRotated(90, 0, 1, 0); + + switch(tileentity.getBlockMetadata()) { + case 4: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(0, 0F, 1F, 0F); break; } - - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.sat_resonator) { - GL11.glRotatef(180, 0F, 0F, 1F); - GL11.glTranslatef(0, -1.5F, 0); - GL11.glRotated(90, 0, 1, 0); - - switch(tileentity.getBlockMetadata()) - { - case 4: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 2: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(0, 0F, 1F, 0F); break; - } + GL11.glEnable(GL11.GL_CULL_FACE); + bindTexture(ResourceManager.sat_base_tex); + ResourceManager.sat_base.renderAll(); + bindTexture(ResourceManager.sat_resonator_tex); + ResourceManager.sat_resonator.renderAll(); + } - GL11.glEnable(GL11.GL_CULL_FACE); - bindTexture(ResourceManager.sat_base_tex); - ResourceManager.sat_base.renderAll(); - bindTexture(ResourceManager.sat_resonator_tex); - ResourceManager.sat_resonator.renderAll(); + if(b == ModBlocks.sat_scanner) { + GL11.glRotatef(180, 0F, 0F, 1F); + GL11.glTranslatef(0, -1.5F, 0); + GL11.glRotated(90, 0, 1, 0); + + switch(tileentity.getBlockMetadata()) { + case 4: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(0, 0F, 1F, 0F); break; } - - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.sat_scanner) { - GL11.glRotatef(180, 0F, 0F, 1F); - GL11.glTranslatef(0, -1.5F, 0); - GL11.glRotated(90, 0, 1, 0); - - switch(tileentity.getBlockMetadata()) - { - case 4: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 2: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(0, 0F, 1F, 0F); break; - } + GL11.glEnable(GL11.GL_CULL_FACE); + bindTexture(ResourceManager.sat_base_tex); + ResourceManager.sat_base.renderAll(); + bindTexture(ResourceManager.sat_scanner_tex); + ResourceManager.sat_scanner.renderAll(); + } - GL11.glEnable(GL11.GL_CULL_FACE); - bindTexture(ResourceManager.sat_base_tex); - ResourceManager.sat_base.renderAll(); - bindTexture(ResourceManager.sat_scanner_tex); - ResourceManager.sat_scanner.renderAll(); + if(b == ModBlocks.sat_mapper) { + GL11.glRotatef(180, 0F, 0F, 1F); + GL11.glTranslatef(0, -1.5F, 0); + GL11.glRotated(90, 0, 1, 0); + + switch(tileentity.getBlockMetadata()) { + case 4: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(0, 0F, 1F, 0F); break; } - - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.sat_mapper) { - GL11.glRotatef(180, 0F, 0F, 1F); - GL11.glTranslatef(0, -1.5F, 0); - GL11.glRotated(90, 0, 1, 0); - - switch(tileentity.getBlockMetadata()) - { - case 4: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 2: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(0, 0F, 1F, 0F); break; - } + GL11.glEnable(GL11.GL_CULL_FACE); + bindTexture(ResourceManager.sat_base_tex); + ResourceManager.sat_base.renderAll(); + bindTexture(ResourceManager.sat_mapper_tex); + ResourceManager.sat_mapper.renderAll(); + } - GL11.glEnable(GL11.GL_CULL_FACE); - bindTexture(ResourceManager.sat_base_tex); - ResourceManager.sat_base.renderAll(); - bindTexture(ResourceManager.sat_mapper_tex); - ResourceManager.sat_mapper.renderAll(); + if(b == ModBlocks.sat_laser) { + GL11.glRotatef(180, 0F, 0F, 1F); + GL11.glTranslatef(0, -1.5F, 0); + GL11.glRotated(90, 0, 1, 0); + + switch(tileentity.getBlockMetadata()) { + case 4: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(0, 0F, 1F, 0F); break; } - - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.sat_laser) { - GL11.glRotatef(180, 0F, 0F, 1F); - GL11.glTranslatef(0, -1.5F, 0); - GL11.glRotated(90, 0, 1, 0); - - switch(tileentity.getBlockMetadata()) - { - case 4: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 2: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(0, 0F, 1F, 0F); break; - } + GL11.glEnable(GL11.GL_CULL_FACE); + bindTexture(ResourceManager.sat_base_tex); + ResourceManager.sat_base.renderAll(); + bindTexture(ResourceManager.sat_laser_tex); + ResourceManager.sat_laser.renderAll(); + } - GL11.glEnable(GL11.GL_CULL_FACE); - bindTexture(ResourceManager.sat_base_tex); - ResourceManager.sat_base.renderAll(); - bindTexture(ResourceManager.sat_laser_tex); - ResourceManager.sat_laser.renderAll(); + if(b == ModBlocks.sat_foeq) { + GL11.glRotatef(180, 0F, 0F, 1F); + GL11.glTranslatef(0, -1.5F, 0); + GL11.glRotated(90, 0, 1, 0); + + switch(tileentity.getBlockMetadata()) { + case 4: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(0, 0F, 1F, 0F); break; } - - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.sat_foeq) { - GL11.glRotatef(180, 0F, 0F, 1F); - GL11.glTranslatef(0, -1.5F, 0); - GL11.glRotated(90, 0, 1, 0); - - switch(tileentity.getBlockMetadata()) - { - case 4: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 2: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(0, 0F, 1F, 0F); break; - } + GL11.glEnable(GL11.GL_CULL_FACE); + bindTexture(ResourceManager.sat_foeq_tex); + ResourceManager.sat_foeq.renderAll(); + } + + if(b == ModBlocks.sat_dock) { + GL11.glRotatef(180, 0F, 0F, 1F); + GL11.glTranslatef(0, -1.5F, 0); + + bindTexture(ResourceManager.satdock_tex); + ResourceManager.satDock.renderAll(); + } - GL11.glEnable(GL11.GL_CULL_FACE); - bindTexture(ResourceManager.sat_foeq_tex); - ResourceManager.sat_foeq.renderAll(); - } - - if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.sat_dock) { - GL11.glRotatef(180, 0F, 0F, 1F); - GL11.glTranslatef(0, -1.5F, 0); - - bindTexture(ResourceManager.satdock_tex); - ResourceManager.satDock.renderAll(); - } - GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java b/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java index aba2c7f91..acb9a0b0c 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java +++ b/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java @@ -75,7 +75,8 @@ public class RenderFluidTank extends TileEntitySpecialRenderer implements IItemR DiamondPronter.pront(type.poison, type.flammability, type.reactivity, type.symbol); GL11.glPopMatrix(); } - + + GL11.glEnable(GL11.GL_CULL_FACE); GL11.glPopMatrix(); RenderHelper.enableStandardItemLighting(); } diff --git a/src/main/java/com/hbm/render/tileentity/RenderICF.java b/src/main/java/com/hbm/render/tileentity/RenderICF.java index 650f57fda..1bfd169f9 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderICF.java +++ b/src/main/java/com/hbm/render/tileentity/RenderICF.java @@ -3,12 +3,16 @@ 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 net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; -public class RenderICF extends TileEntitySpecialRenderer { +public class RenderICF extends TileEntitySpecialRenderer implements IItemRendererProvider { @Override public void renderTileEntityAt(TileEntity te, double x, double y, double z, float f) { @@ -34,4 +38,26 @@ public class RenderICF extends TileEntitySpecialRenderer { GL11.glPopMatrix(); } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.icf); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -1.5, 0); + double scale = 2.125; + GL11.glScaled(scale, scale, scale); + } + public void renderCommon() { + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glRotatef(90, 0F, 1F, 0F); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.icf_tex); ResourceManager.icf.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } } diff --git a/src/main/java/com/hbm/render/tileentity/RenderLPW2.java b/src/main/java/com/hbm/render/tileentity/RenderLPW2.java new file mode 100644 index 000000000..4e4eacf41 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderLPW2.java @@ -0,0 +1,277 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.main.ResourceManager; +import com.hbm.util.BobMathUtil; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; + +public class RenderLPW2 extends TileEntitySpecialRenderer { + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y, z + 0.5); + + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glShadeModel(GL11.GL_SMOOTH); + + switch(te.getBlockMetadata() - BlockDummyable.offset) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + long time = te.getWorldObj().getTotalWorldTime(); + + double swayTimer = ((time + interp) / 3D) % (Math.PI * 4); + double sway = (Math.sin(swayTimer) + Math.sin(swayTimer * 2) + Math.sin(swayTimer * 4) + 2.23255D) * 0.5; + + double bellTimer = ((time + interp) / 5D) % (Math.PI * 4); + double h = (Math.sin(bellTimer + Math.PI) + Math.sin(bellTimer * 1.5D)) / 1.90596D; + double v = (Math.sin(bellTimer) + Math.sin(bellTimer * 1.5D)) / 1.90596D; + + double pistonTimer = ((time + interp) / 5D) % (Math.PI * 2); + double piston = BobMathUtil.sps(pistonTimer); + double rotorTimer = ((time + interp) / 5D) % (Math.PI * 16); + double rotor = (BobMathUtil.sps(rotorTimer) + rotorTimer / 2D - 1) / 25.1327412287D; + double turbine = ((time + interp) % 100) / 100D; + + bindTexture(ResourceManager.lpw2_tex); + ResourceManager.lpw2.renderPart("Frame"); + + renderMainAssembly(sway, h, v, piston, rotor, turbine); + + GL11.glPushMatrix(); + GL11.glTranslated(-2.9375, 0, 2.375); + GL11.glRotated(sway * 10, 0, 1, 0); + GL11.glTranslated(2.9375, 0, -2.375); + ResourceManager.lpw2.renderPart("WireLeft"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(2.9375, 0, 2.375); + GL11.glRotated(sway * -10, 0, 1, 0); + GL11.glTranslated(-2.9375, 0, -2.375); + ResourceManager.lpw2.renderPart("WireRight"); + GL11.glPopMatrix(); + + double coverTimer = ((time + interp) / 5D) % (Math.PI * 4); + double cover = (Math.sin(coverTimer) + Math.sin(coverTimer * 2) + Math.sin(coverTimer * 4)) * 0.5; + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, -cover * 0.125); + ResourceManager.lpw2.renderPart("Cover"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, 3.5); + GL11.glScaled(1, 1, (3 + cover * 0.125) / 3); + GL11.glTranslated(0, 0, -3.5); + ResourceManager.lpw2.renderPart("SuspensionCoverFront"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, -5.5); + GL11.glScaled(1, 1, (1.5 - cover * 0.125) / 1.5); + GL11.glTranslated(0, 0, 5.5); + ResourceManager.lpw2.renderPart("SuspensionCoverBack"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, -9); + GL11.glScaled(1, 1, (1.25 - sway * 0.125) / 1.25); + GL11.glTranslated(0, 0, 9); + ResourceManager.lpw2.renderPart("SuspensionBackOuter"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, -9.5); + GL11.glScaled(1, 1, (1.75 - sway * 0.125) / 1.75); + GL11.glTranslated(0, 0, 9.5); + ResourceManager.lpw2.renderPart("SuspensionBackCenter"); + GL11.glPopMatrix(); + + double serverTimer = ((time + interp) / 2D) % (Math.PI * 4); + double sx = (Math.sin(serverTimer + Math.PI) + Math.sin(serverTimer * 1.5D)) / 1.90596D; + double sy = (Math.sin(serverTimer) + Math.sin(serverTimer * 1.5D)) / 1.90596D; + + double serverSway = 0.0625D * 0.25D; + + GL11.glPushMatrix(); + GL11.glTranslated(sx * serverSway, 0, sy * serverSway); + ResourceManager.lpw2.renderPart("Server1"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(-sy * serverSway, 0, sx * serverSway); + ResourceManager.lpw2.renderPart("Server2"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(sy * serverSway, 0, -sx * serverSway); + ResourceManager.lpw2.renderPart("Server3"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(-sx * serverSway, 0, -sy * serverSway); + ResourceManager.lpw2.renderPart("Server4"); + GL11.glPopMatrix(); + + double errorTimer = ((time + interp) / 3D); + + GL11.glPushMatrix(); + GL11.glTranslated(sy * serverSway, 0, sx * serverSway); + + ResourceManager.lpw2.renderPart("Monitor"); + + /*Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.lpw2_term_tex); + ResourceManager.lpw2.renderPart("Screen");*/ + + Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.lpw2_error_tex); + + GL11.glMatrixMode(GL11.GL_TEXTURE); + GL11.glLoadIdentity(); + GL11.glTranslated(0, (BobMathUtil.sps(errorTimer) + errorTimer / 2D) % 1, 0); + ResourceManager.lpw2.renderPart("Screen"); + GL11.glMatrixMode(GL11.GL_TEXTURE); + GL11.glLoadIdentity(); + GL11.glMatrixMode(GL11.GL_MODELVIEW); + + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glPopMatrix(); + } + + public static void renderMainAssembly(double sway, double h, double v, double piston, double rotor, double turbine) { + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, -sway * 0.125); + ResourceManager.lpw2.renderPart("Center"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 3.5, 0); + + GL11.glPushMatrix(); + GL11.glRotated(rotor * 360, 0, 0, -1); + GL11.glTranslated(0, -3.5, 0); + ResourceManager.lpw2.renderPart("Rotor"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glRotated(turbine * 360, 0, 0, 1); + GL11.glTranslated(0, -3.5, 0); + ResourceManager.lpw2.renderPart("TurbineFront"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glRotated(turbine * 360, 0, 0, -1); + GL11.glTranslated(0, -3.5, 0); + ResourceManager.lpw2.renderPart("TurbineBack"); + GL11.glPopMatrix(); + + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, piston * 0.375D + 0.375D); + ResourceManager.lpw2.renderPart("Piston"); + GL11.glPopMatrix(); + + renderBell(h, v); + GL11.glPopMatrix(); + + renderShroud(h, v); + } + + public static void renderBell(double h, double v) { + GL11.glPushMatrix(); + GL11.glTranslated(0, 3.5, 2.75); + double magnitude = 2D; + GL11.glRotated(v * magnitude, 0, 1, 0); + GL11.glRotated(h * magnitude, 1, 0, 0); + GL11.glTranslated(0, -3.5, -2.75); + ResourceManager.lpw2.renderPart("Engine"); + GL11.glPopMatrix(); + } + + public static void renderShroud(double h, double v) { + + double magnitude = 0.125D; + double rotation = 5D; + double offset = 10D; + + GL11.glPushMatrix(); + GL11.glTranslated(0, -h * magnitude, 0); + ResourceManager.lpw2.renderPart("ShroudH"); + + renderFlap(90 + 22.5D, rotation * v + offset); + renderFlap(90 - 22.5D, rotation * v + offset); + renderFlap(270 + 22.5D, rotation * -v + offset); + renderFlap(270 - 22.5D, rotation * -v + offset); + + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(v * magnitude, 0, 0); + ResourceManager.lpw2.renderPart("ShroudV"); + + renderFlap(22.5D, rotation * h + offset); + renderFlap(-22.5D, rotation * h + offset); + renderFlap(180 + 22.5D, rotation * -h + offset); + renderFlap(180 - 22.5D, rotation * -h + offset); + + GL11.glPopMatrix(); + + double length = 0.6875D; + + GL11.glPushMatrix(); + GL11.glTranslated(-2.625D, 0, 0); + GL11.glScaled((length + v * magnitude) / length, 1, 1); + GL11.glTranslated(2.625D, 0, 0); + ResourceManager.lpw2.renderPart("SuspensionLeft"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(2.625D, 0, 0); + GL11.glScaled((length - v * magnitude) / length, 1, 1); + GL11.glTranslated(-2.625D, 0, 0); + ResourceManager.lpw2.renderPart("SuspensionRight"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 6.125D, 0); + GL11.glScaled(1, (length + h * magnitude) / length, 1); + GL11.glTranslated(0, -6.125D, 0); + ResourceManager.lpw2.renderPart("SuspensionTop"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.875D, 0); + GL11.glScaled(1, (length - h * magnitude) / length, 1); + GL11.glTranslated(0, -0.875D, 0); + ResourceManager.lpw2.renderPart("SuspensionBottom"); + GL11.glPopMatrix(); + } + + public static void renderFlap(double position, double rotation) { + GL11.glPushMatrix(); + + GL11.glTranslated(0, 3.5D, 0); + GL11.glRotated(position, 0, 0, 1); + GL11.glTranslated(0, -3.5D, 0); + + GL11.glTranslated(0, 6.96875D, 8.5D); + GL11.glRotated(rotation, 1, 0, 0); + GL11.glTranslated(0, -6.96875D, -8.5D); + + ResourceManager.lpw2.renderPart("Flap"); + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderLandmine.java b/src/main/java/com/hbm/render/tileentity/RenderLandmine.java index 33314bb68..4e8ee9def 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLandmine.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLandmine.java @@ -1,6 +1,7 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; import com.hbm.blocks.ModBlocks; import com.hbm.main.ResourceManager; @@ -8,6 +9,7 @@ import com.hbm.main.ResourceManager; import net.minecraft.block.Block; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.biome.BiomeGenBase; public class RenderLandmine extends TileEntitySpecialRenderer { @@ -17,15 +19,20 @@ public class RenderLandmine extends TileEntitySpecialRenderer { GL11.glTranslated(x + 0.5D, y, z + 0.5D); GL11.glEnable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); GL11.glRotatef(180, 0F, 1F, 0F); Block block = tileEntity.getWorldObj().getBlock(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord); if(block == ModBlocks.mine_ap) { - GL11.glTranslated(0, -0.075, 0); - GL11.glScaled(1.5D, 1.5D, 1.5D); - bindTexture(ResourceManager.mine_ap_tex); + GL11.glScaled(0.375D, 0.375D, 0.375D); + GL11.glTranslated(0, -0.0625 * 3.5, 0); + BiomeGenBase biome = tileEntity.getWorldObj().getBiomeGenForCoords(tileEntity.xCoord, tileEntity.zCoord); + if(tileEntity.getWorldObj().getHeightValue(tileEntity.xCoord, tileEntity.zCoord) > tileEntity.yCoord + 2) bindTexture(ResourceManager.mine_ap_stone_tex); + else if(biome.getEnableSnow()) bindTexture(ResourceManager.mine_ap_snow_tex); + else if(biome.temperature >= 1.5F && biome.rainfall <= 0.1F) bindTexture(ResourceManager.mine_ap_desert_tex); + else bindTexture(ResourceManager.mine_ap_grass_tex); ResourceManager.mine_ap.renderAll(); } if(block == ModBlocks.mine_he) { @@ -36,8 +43,11 @@ public class RenderLandmine extends TileEntitySpecialRenderer { GL11.glShadeModel(GL11.GL_FLAT); } if(block == ModBlocks.mine_shrap) { + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + GL11.glScaled(0.375D, 0.375D, 0.375D); + GL11.glTranslated(0, -0.0625 * 3.5, 0); bindTexture(ResourceManager.mine_shrap_tex); - ResourceManager.mine_he.renderAll(); + ResourceManager.mine_ap.renderAll(); } if(block == ModBlocks.mine_fat) { GL11.glScaled(0.25D, 0.25D, 0.25D); diff --git a/src/main/java/com/hbm/render/tileentity/RenderLoot.java b/src/main/java/com/hbm/render/tileentity/RenderLoot.java index 43885b66b..738152d74 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLoot.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLoot.java @@ -6,10 +6,8 @@ import org.lwjgl.opengl.GL12; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.items.ModItems; import com.hbm.items.armor.ArmorTrenchmaster; -import com.hbm.lib.RefStrings; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.main.ResourceManager; -import com.hbm.render.model.ModelFatman; -import com.hbm.render.model.ModelLeverAction; import com.hbm.util.Tuple.Quartet; import net.minecraft.client.Minecraft; @@ -22,7 +20,6 @@ import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; -import net.minecraft.util.ResourceLocation; public class RenderLoot extends TileEntitySpecialRenderer { @@ -42,13 +39,10 @@ public class RenderLoot extends TileEntitySpecialRenderer { GL11.glPushMatrix(); GL11.glTranslated(item.getX(), item.getY(), item.getZ()); - if(stack.getItem() == ModItems.ammo_nuke) { + if(stack.getItem() == ModItems.ammo_standard && stack.getItemDamage() >= EnumAmmo.NUKE_STANDARD.ordinal() && stack.getItemDamage() <= EnumAmmo.NUKE_HIVE.ordinal()) { renderNuke(); - } else if(stack.getItem() == ModItems.gun_fatman || stack.getItem() == ModItems.gun_proto || stack.getItem() == ModItems.gun_mirv) { - renderLauncher(); - - } else if(stack.getItem() == ModItems.gun_lever_action) { + } else if(stack.getItem() == ModItems.gun_maresleg) { renderShotgun(); } else if(stack.getItem() instanceof ArmorTrenchmaster) { @@ -123,35 +117,17 @@ public class RenderLoot extends TileEntitySpecialRenderer { GL11.glShadeModel(GL11.GL_FLAT); } - protected ModelFatman launcher; - private void renderLauncher() { - - if(launcher == null) - launcher = new ModelFatman(); - - GL11.glRotated(180, 1, 0, 0); - GL11.glRotated(3, 0, 0, 1); - GL11.glTranslated(0.5, -0.3751, -0.625); - - bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/FatmanLauncher.png")); - launcher.render(null, 0F, 0F, 0F, 0F, 0F, 0.0625F, new ItemStack(ModItems.gun_fatman)); - } - - protected ModelLeverAction shotgun; private void renderShotgun() { - GL11.glScaled(0.5, 0.5, 0.5); - GL11.glTranslated(1, 0, 0); + GL11.glScaled(0.125, 0.125, 0.125); + GL11.glTranslated(3, 0, 0); GL11.glRotated(25, 0, 1, 0); GL11.glRotated(90, 1, 0, 0); GL11.glRotated(90, 0, 1, 0); GL11.glEnable(GL12.GL_RESCALE_NORMAL); - bindTexture(ResourceManager.ff_wood); - ResourceManager.ff_maresleg.renderPart("Grip"); - bindTexture(ResourceManager.ff_gun_bright); - ResourceManager.ff_maresleg.renderPart("Gun"); - ResourceManager.ff_maresleg.renderPart("Lever"); + bindTexture(ResourceManager.maresleg_tex); + ResourceManager.maresleg.renderAll(); GL11.glDisable(GL12.GL_RESCALE_NORMAL); } diff --git a/src/main/java/com/hbm/render/tileentity/RenderPABeamline.java b/src/main/java/com/hbm/render/tileentity/RenderPABeamline.java new file mode 100644 index 000000000..0d4f3a7d3 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderPABeamline.java @@ -0,0 +1,60 @@ +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 net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderPABeamline extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float f) { + + 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 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + } + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.pa_beamline_tex); + ResourceManager.pa_beamline.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.pa_beamline); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + double scale = 4; + GL11.glScaled(scale, scale, scale); + } + public void renderCommon() { + GL11.glRotated(90, 0, 1, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.pa_beamline_tex); + ResourceManager.pa_beamline.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderPADetector.java b/src/main/java/com/hbm/render/tileentity/RenderPADetector.java new file mode 100644 index 000000000..7ebdcbdda --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderPADetector.java @@ -0,0 +1,63 @@ +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 net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderPADetector extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float f) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y - 2D, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + } + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.pa_detector_tex); + ResourceManager.pa_detector.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.pa_detector); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -1, 0); + double scale = 3; + GL11.glScaled(scale, scale, scale); + } + public void renderCommon() { + double scale = 0.5; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.pa_detector_tex); + ResourceManager.pa_detector.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderPADipole.java b/src/main/java/com/hbm/render/tileentity/RenderPADipole.java new file mode 100644 index 000000000..879a9664c --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderPADipole.java @@ -0,0 +1,52 @@ +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.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderPADipole extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float f) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y - 1D, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.pa_dipole_tex); + ResourceManager.pa_dipole.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.pa_dipole); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -3, 0); + double scale = 3.5; + GL11.glScaled(scale, scale, scale); + } + public void renderCommon() { + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.pa_dipole_tex); + ResourceManager.pa_dipole.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderPAQuadrupole.java b/src/main/java/com/hbm/render/tileentity/RenderPAQuadrupole.java new file mode 100644 index 000000000..5176817dc --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderPAQuadrupole.java @@ -0,0 +1,61 @@ +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 net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderPAQuadrupole extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float f) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y - 1D, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + } + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.pa_quadrupole_tex); + ResourceManager.pa_quadrupole.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.pa_quadrupole); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -3.5, 0); + double scale = 4; + GL11.glScaled(scale, scale, scale); + } + public void renderCommon() { + GL11.glRotated(90, 0, 1, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.pa_quadrupole_tex); + ResourceManager.pa_quadrupole.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderPARFC.java b/src/main/java/com/hbm/render/tileentity/RenderPARFC.java new file mode 100644 index 000000000..ec2bf3597 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderPARFC.java @@ -0,0 +1,63 @@ +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 net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderPARFC extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float f) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y - 1D, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + } + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.pa_rfc_tex); + ResourceManager.pa_rfc.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.pa_rfc); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -1, 0); + double scale = 4; + GL11.glScaled(scale, scale, scale); + } + public void renderCommon() { + double scale = 0.5; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.pa_rfc_tex); + ResourceManager.pa_rfc.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderPASource.java b/src/main/java/com/hbm/render/tileentity/RenderPASource.java new file mode 100644 index 000000000..d6a8ee7e1 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderPASource.java @@ -0,0 +1,63 @@ +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 net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderPASource extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float f) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y - 1D, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + } + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.pa_source_tex); + ResourceManager.pa_source.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.pa_source); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -1, 0); + double scale = 4; + GL11.glScaled(scale, scale, scale); + } + public void renderCommon() { + double scale = 0.5; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.pa_source_tex); + ResourceManager.pa_source.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderPlushie.java b/src/main/java/com/hbm/render/tileentity/RenderPlushie.java index c5d3ae829..702817abe 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderPlushie.java +++ b/src/main/java/com/hbm/render/tileentity/RenderPlushie.java @@ -28,10 +28,12 @@ import net.minecraftforge.client.IItemRenderer; import net.minecraftforge.client.model.IModelCustom; public class RenderPlushie extends TileEntitySpecialRenderer implements IItemRendererProvider { - + public static final IModelCustom yomiModel = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/trinkets/yomi.obj"), false).asVBO(); + public static final IModelCustom poohModel = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/trinkets/pooh.obj"), false).asVBO(); public static final ResourceLocation yomiTex = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/yomi.png"); public static final ResourceLocation numbernineTex = new ResourceLocation(RefStrings.MODID, "textures/models/horse/numbernine.png"); + public static final ResourceLocation poohTex = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/pooh.png"); @Override public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { @@ -51,6 +53,7 @@ public class RenderPlushie extends TileEntitySpecialRenderer implements IItemRen case NONE: break; case YOMI: GL11.glScaled(0.5, 0.5, 0.5); break; case NUMBERNINE: GL11.glScaled(0.75, 0.75, 0.75); break; + case POOH: GL11.glScaled(0.75, 0.75, 0.75); break; } renderPlushie(te.type); @@ -107,6 +110,10 @@ public class RenderPlushie extends TileEntitySpecialRenderer implements IItemRen IIcon icon = stack.getIconIndex(); ItemRenderer.renderItemIn2D(Tessellator.instance, icon.getMaxU(), icon.getMinV(), icon.getMinU(), icon.getMaxV(), icon.getIconWidth(), icon.getIconHeight(), 0.0625F); break; + case POOH: + Minecraft.getMinecraft().getTextureManager().bindTexture(poohTex); + poohModel.renderAll(); + break; } } @@ -131,6 +138,7 @@ public class RenderPlushie extends TileEntitySpecialRenderer implements IItemRen case NONE: break; case YOMI: GL11.glScaled(1.25, 1.25, 1.25); break; case NUMBERNINE: GL11.glTranslated(0, 0.25, 0.25); GL11.glScaled(1.25, 1.25, 1.25); break; + case POOH: GL11.glTranslated(0, 0.25, 0); GL11.glScaled(1.5, 1.5, 1.5); break; } renderPlushie(type); }}; diff --git a/src/main/java/com/hbm/render/tileentity/RenderPylonBase.java b/src/main/java/com/hbm/render/tileentity/RenderPylonBase.java index 1d69ca2ba..4db727ba5 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderPylonBase.java +++ b/src/main/java/com/hbm/render/tileentity/RenderPylonBase.java @@ -2,6 +2,7 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; +import com.hbm.config.ClientConfig; import com.hbm.main.ResourceManager; import com.hbm.tileentity.network.TileEntityPylonBase; @@ -105,37 +106,58 @@ public abstract class RenderPylonBase extends TileEntitySpecialRenderer { GL11.glDisable(GL11.GL_CULL_FACE); tess.startDrawingQuads(); Vec3 delta = Vec3.createVectorHelper(x0 - x1, y0 - y1, z0 - z1); - double hang = Math.min(delta.lengthVector() / 15D, 2.5D); - for(float j = 0; j < count; j++) { - - float k = j + 1; + double girth = 0.03125D; + double hyp = Math.sqrt(delta.xCoord * delta.xCoord + delta.zCoord * delta.zCoord); + double yaw = Math.atan2(delta.xCoord, delta.zCoord); + double pitch = Math.atan2(delta.yCoord, hyp); + double rotator = Math.PI * 0.5D; + double newPitch = pitch + rotator; + double newYaw = yaw + rotator; + double iZ = Math.cos(yaw) * Math.cos(newPitch) * girth; + double iX = Math.sin(yaw) * Math.cos(newPitch) * girth; + double iY = Math.sin(newPitch) * girth; + double jZ = Math.cos(newYaw) * girth; + double jX = Math.sin(newYaw) * girth; - double sagJ = Math.sin(j / count * Math.PI * 0.5) * hang; - double sagK = Math.sin(k / count * Math.PI * 0.5) * hang; - double sagMean = (sagJ + sagK) / 2D; - - double deltaX = x1 - x0; - double deltaY = y1 - y0; - double deltaZ = z1 - z0; - - double ja = j + 0.5D; - double ix = pyl.xCoord + x0 + deltaX / (double)(count) * ja; - double iy = pyl.yCoord + y0 + deltaY / (double)(count) * ja - sagMean; - double iz = pyl.zCoord + z0 + deltaZ / (double)(count) * ja; - - int brightness = world.getLightBrightnessForSkyBlocks(MathHelper.floor_double(ix), MathHelper.floor_double(iy), MathHelper.floor_double(iz), 0); - tess.setBrightness(brightness); - + if(!ClientConfig.RENDER_CABLE_HANG.get()) { tess.setColorOpaque_I(pyl.color == 0 ? 0xffffff : pyl.color); + drawLineSegment(tess, x0, y0, z0, x1, y1, z1, iX, iY, iZ, jX, jZ); + } else { - drawLineSegment(tess, - x0 + (deltaX * j / count), - y0 + (deltaY * j / count) - sagJ, - z0 + (deltaZ * j / count), - x0 + (deltaX * k / count), - y0 + (deltaY * k / count) - sagK, - z0 + (deltaZ * k / count)); + double hang = Math.min(delta.lengthVector() / 15D, 2.5D); + + for(float j = 0; j < count; j++) { + + float k = j + 1; + + double sagJ = Math.sin(j / count * Math.PI * 0.5) * hang; + double sagK = Math.sin(k / count * Math.PI * 0.5) * hang; + double sagMean = (sagJ + sagK) / 2D; + + double deltaX = x1 - x0; + double deltaY = y1 - y0; + double deltaZ = z1 - z0; + + double ja = j + 0.5D; + double ix = pyl.xCoord + x0 + deltaX / (double)(count) * ja; + double iy = pyl.yCoord + y0 + deltaY / (double)(count) * ja - sagMean; + double iz = pyl.zCoord + z0 + deltaZ / (double)(count) * ja; + + int brightness = world.getLightBrightnessForSkyBlocks(MathHelper.floor_double(ix), MathHelper.floor_double(iy), MathHelper.floor_double(iz), 0); + tess.setBrightness(brightness); + + tess.setColorOpaque_I(pyl.color == 0 ? 0xffffff : pyl.color); + + drawLineSegment(tess, + x0 + (deltaX * j / count), + y0 + (deltaY * j / count) - sagJ, + z0 + (deltaZ * j / count), + x0 + (deltaX * k / count), + y0 + (deltaY * k / count) - sagK, + z0 + (deltaZ * k / count), + iX, iY, iZ, jX, jZ); + } } tess.draw(); GL11.glEnable(GL11.GL_LIGHTING); @@ -155,24 +177,11 @@ public abstract class RenderPylonBase extends TileEntitySpecialRenderer { * @param b * @param c */ - public void drawLineSegment(Tessellator tessellator, double x, double y, double z, double a, double b, double c) { - - double girth = 0.03125D; + public void drawLineSegment(Tessellator tessellator, double x, double y, double z, double a, double b, double c, double iX, double iY, double iZ, double jX, double jZ) { double deltaX = a - x; double deltaY = b - y; double deltaZ = c - z; - double hyp = Math.sqrt(deltaX * deltaX + deltaZ * deltaZ); - double yaw = Math.atan2(deltaX, deltaZ); - double pitch = Math.atan2(deltaY, hyp); - double rotator = Math.PI * 0.5D; - double newPitch = pitch + rotator; - double newYaw = yaw + rotator; - double iZ = Math.cos(yaw) * Math.cos(newPitch) * girth; - double iX = Math.sin(yaw) * Math.cos(newPitch) * girth; - double iY = Math.sin(newPitch) * girth; - double jZ = Math.cos(newYaw) * girth; - double jX = Math.sin(newYaw) * girth; double length = Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ); int wrap = (int) Math.ceil(length * 8); diff --git a/src/main/java/com/hbm/render/tileentity/RenderPyroOven.java b/src/main/java/com/hbm/render/tileentity/RenderPyroOven.java new file mode 100644 index 000000000..bd42f1fc1 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderPyroOven.java @@ -0,0 +1,79 @@ +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.oil.TileEntityMachinePyroOven; +import com.hbm.util.BobMathUtil; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderPyroOven extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float f) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 2: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(90, 0F, 1F, 0F); break; + } + + TileEntityMachinePyroOven pyro = (TileEntityMachinePyroOven) tile; + float anim = pyro.prevAnim + (pyro.anim - pyro.prevAnim) * f; + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.pyrooven_tex); + ResourceManager.pyrooven.renderPart("Oven"); + + GL11.glPushMatrix(); + GL11.glTranslated(BobMathUtil.sps(anim * 0.125) / 2 - 0.5, 0, 0); + ResourceManager.pyrooven.renderPart("Slider"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(1.5, 0, 1.5); + GL11.glRotated(anim * -15D % 360D, 0, 1, 0); + GL11.glTranslated(-1.5, 0, -1.5); + ResourceManager.pyrooven.renderPart("Fan"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_pyrooven); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -1, 0); + GL11.glScaled(3.5, 3.5, 3.5); + } + public void renderCommon() { + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glRotatef(90, 0F, 1F, 0F); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.pyrooven_tex); + ResourceManager.pyrooven.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderRBMKLid.java b/src/main/java/com/hbm/render/tileentity/RenderRBMKLid.java index 2783e8508..a72e81da4 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderRBMKLid.java +++ b/src/main/java/com/hbm/render/tileentity/RenderRBMKLid.java @@ -35,7 +35,7 @@ public class RenderRBMKLid extends TileEntitySpecialRenderer { if(rod.hasRod) hasRod = true; - if(rod.fluxFast + rod.fluxSlow > 5) + if(rod.lastFluxQuantity > 5) cherenkov = true; } diff --git a/src/main/java/com/hbm/render/tileentity/RenderRotaryFurnace.java b/src/main/java/com/hbm/render/tileentity/RenderRotaryFurnace.java new file mode 100644 index 000000000..e326c7445 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderRotaryFurnace.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.TileEntityMachineRotaryFurnace; +import com.hbm.util.BobMathUtil; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderRotaryFurnace extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float f) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.rotary_furnace_tex); + ResourceManager.rotary_furnace.renderPart("Furnace"); + GL11.glPushMatrix(); + + TileEntityMachineRotaryFurnace furnace = (TileEntityMachineRotaryFurnace) tile; + float anim = furnace.lastAnim + (furnace.anim - furnace.lastAnim) * f; + + GL11.glTranslated(0, BobMathUtil.sps((anim * 0.75) * 0.125) * 0.5 - 0.5, 0); + ResourceManager.rotary_furnace.renderPart("Piston"); + GL11.glPopMatrix(); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_rotary_furnace); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -2, 0); + GL11.glScaled(3.5, 3.5, 3.5); + } + public void renderCommon() { + GL11.glScaled(0.625, 0.625, 0.625); + GL11.glRotatef(90, 0F, 1F, 0F); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.rotary_furnace_tex); + ResourceManager.rotary_furnace.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderSolarBoiler.java b/src/main/java/com/hbm/render/tileentity/RenderSolarBoiler.java index 54c3c1ad1..f15a7d778 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderSolarBoiler.java +++ b/src/main/java/com/hbm/render/tileentity/RenderSolarBoiler.java @@ -38,7 +38,7 @@ public class RenderSolarBoiler extends TileEntitySpecialRenderer { GL11.glShadeModel(GL11.GL_FLAT); GL11.glPopMatrix(); - if(te instanceof TileEntitySolarBoiler && !Minecraft.getMinecraft().gameSettings.fancyGraphics) { + if(te instanceof TileEntitySolarBoiler && Minecraft.getMinecraft().gameSettings.fancyGraphics) { TileEntitySolarBoiler boiler = (TileEntitySolarBoiler) te; Tessellator tess = Tessellator.instance; diff --git a/src/main/java/com/hbm/render/tileentity/RenderSteelPoles.java b/src/main/java/com/hbm/render/tileentity/RenderSteelPoles.java deleted file mode 100644 index 475bdcf9c..000000000 --- a/src/main/java/com/hbm/render/tileentity/RenderSteelPoles.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.hbm.render.tileentity; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelPoles; - -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; - -public class RenderSteelPoles extends TileEntitySpecialRenderer { - - private static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":" + "textures/models/Poles.png"); - - private ModelPoles model; - - public RenderSteelPoles() { - this.model = new ModelPoles(); - } - - @Override - public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float f) { - GL11.glPushMatrix(); - GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F); - GL11.glRotatef(180, 0F, 0F, 1F); - - switch(tileentity.getBlockMetadata()) - { - case 4: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 2: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(0, 0F, 1F, 0F); break; - } - - this.bindTexture(texture); - - GL11.glPushMatrix(); - this.model.renderModel(0.0625F); - GL11.glPopMatrix(); - GL11.glPopMatrix(); - } - -} diff --git a/src/main/java/com/hbm/render/util/RenderBlocksNT.java b/src/main/java/com/hbm/render/util/RenderBlocksNT.java new file mode 100644 index 000000000..db0990f07 --- /dev/null +++ b/src/main/java/com/hbm/render/util/RenderBlocksNT.java @@ -0,0 +1,239 @@ +package com.hbm.render.util; + +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; + +public class RenderBlocksNT extends RenderBlocks { + + public static final RenderBlocksNT INSTANCE = new RenderBlocksNT(); + + public RenderBlocksNT(IBlockAccess world) { + super(world); + } + + public RenderBlocksNT() { + super(); + } + + public RenderBlocksNT setWorld(IBlockAccess world) { + this.blockAccess = world; + this.field_152631_f = false; + this.flipTexture = false; + return this; + } + + @Override + public void renderFaceZNeg(Block block, double x, double y, double z, IIcon icon) { + Tessellator tessellator = Tessellator.instance; + + if(this.hasOverrideBlockTexture()) { + icon = this.overrideBlockTexture; + } + + double minU = (double) icon.getInterpolatedU(16.0D - this.renderMinX * 16.0D); // **FIX** + double maxU = (double) icon.getInterpolatedU(16.0D - this.renderMaxX * 16.0D); // **FIX** + + if(this.field_152631_f) { + minU = (double) icon.getInterpolatedU(this.renderMinX * 16.0D); // **FIX** + maxU = (double) icon.getInterpolatedU(this.renderMaxX * 16.0D); // **FIX** + } + + double maxV = (double) icon.getInterpolatedV(16.0D - this.renderMaxY * 16.0D); + double minV = (double) icon.getInterpolatedV(16.0D - this.renderMinY * 16.0D); + double minU2; + + if(this.flipTexture) { + minU2 = maxU; + maxU = minU; + minU = minU2; + } + + if(this.renderMinX < 0.0D || this.renderMaxX > 1.0D) { + maxU = (double) icon.getMinU(); + minU = (double) icon.getMaxU(); + } + + if(this.renderMinY < 0.0D || this.renderMaxY > 1.0D) { + maxV = (double) icon.getMinV(); + minV = (double) icon.getMaxV(); + } + + minU2 = minU; + double maxU2 = maxU; + double maxV2 = maxV; + double minV2 = minV; + + if(this.uvRotateEast == 2) { + maxU = (double) icon.getInterpolatedU(this.renderMinY * 16.0D); + minU = (double) icon.getInterpolatedU(this.renderMaxY * 16.0D); + maxV = (double) icon.getInterpolatedV(16.0D - this.renderMinX * 16.0D); + minV = (double) icon.getInterpolatedV(16.0D - this.renderMaxX * 16.0D); + maxV2 = maxV; + minV2 = minV; + minU2 = maxU; + maxU2 = minU; + maxV = minV; + minV = maxV2; + } else if(this.uvRotateEast == 1) { + maxU = (double) icon.getInterpolatedU(16.0D - this.renderMaxY * 16.0D); + minU = (double) icon.getInterpolatedU(16.0D - this.renderMinY * 16.0D); + maxV = (double) icon.getInterpolatedV(this.renderMaxX * 16.0D); + minV = (double) icon.getInterpolatedV(this.renderMinX * 16.0D); + minU2 = minU; + maxU2 = maxU; + maxU = minU; + minU = maxU2; + maxV2 = minV; + minV2 = maxV; + } else if(this.uvRotateEast == 3) { + maxU = (double) icon.getInterpolatedU(16.0D - this.renderMinX * 16.0D); + minU = (double) icon.getInterpolatedU(16.0D - this.renderMaxX * 16.0D); + maxV = (double) icon.getInterpolatedV(this.renderMaxY * 16.0D); + minV = (double) icon.getInterpolatedV(this.renderMinY * 16.0D); + minU2 = minU; + maxU2 = maxU; + maxV2 = maxV; + minV2 = minV; + } + + double minX = x + this.renderMinX; + double maxX = x + this.renderMaxX; + double minY = y + this.renderMinY; + double maxY = y + this.renderMaxY; + double minZ = z + this.renderMinZ; + + if(this.renderFromInside) { + minX = x + this.renderMaxX; + maxX = x + this.renderMinX; + } + + if(this.enableAO) { + tessellator.setColorOpaque_F(this.colorRedTopLeft, this.colorGreenTopLeft, this.colorBlueTopLeft); + tessellator.setBrightness(this.brightnessTopLeft); + tessellator.addVertexWithUV(minX, maxY, minZ, minU2, maxV2); + tessellator.setColorOpaque_F(this.colorRedBottomLeft, this.colorGreenBottomLeft, this.colorBlueBottomLeft); + tessellator.setBrightness(this.brightnessBottomLeft); + tessellator.addVertexWithUV(maxX, maxY, minZ, maxU, maxV); + tessellator.setColorOpaque_F(this.colorRedBottomRight, this.colorGreenBottomRight, this.colorBlueBottomRight); + tessellator.setBrightness(this.brightnessBottomRight); + tessellator.addVertexWithUV(maxX, minY, minZ, maxU2, minV2); + tessellator.setColorOpaque_F(this.colorRedTopRight, this.colorGreenTopRight, this.colorBlueTopRight); + tessellator.setBrightness(this.brightnessTopRight); + tessellator.addVertexWithUV(minX, minY, minZ, minU, minV); + } else { + tessellator.addVertexWithUV(minX, maxY, minZ, minU2, maxV2); + tessellator.addVertexWithUV(maxX, maxY, minZ, maxU, maxV); + tessellator.addVertexWithUV(maxX, minY, minZ, maxU2, minV2); + tessellator.addVertexWithUV(minX, minY, minZ, minU, minV); + } + } + + @Override + public void renderFaceXPos(Block block, double x, double y, double z, IIcon icon) { + Tessellator tessellator = Tessellator.instance; + + if(this.hasOverrideBlockTexture()) { + icon = this.overrideBlockTexture; + } + + double minU = (double) icon.getInterpolatedU(16D - this.renderMinZ * 16.0D); // **FIX** + double maxU = (double) icon.getInterpolatedU(16D - this.renderMaxZ * 16.0D); // **FIX** + + if(this.field_152631_f) { + minU = (double) icon.getInterpolatedU(this.renderMinZ * 16.0D); // **FIX** + maxU = (double) icon.getInterpolatedU(this.renderMaxZ * 16.0D); // **FIX** + } + + double maxV = (double) icon.getInterpolatedV(16.0D - this.renderMaxY * 16.0D); + double minV = (double) icon.getInterpolatedV(16.0D - this.renderMinY * 16.0D); + double minU2; + + if(this.flipTexture) { + minU2 = maxU; + maxU = minU; + minU = minU2; + } + + if(this.renderMinZ < 0.0D || this.renderMaxZ > 1.0D) { + maxU = (double) icon.getMinU(); + minU = (double) icon.getMaxU(); + } + + if(this.renderMinY < 0.0D || this.renderMaxY > 1.0D) { + maxV = (double) icon.getMinV(); + minV = (double) icon.getMaxV(); + } + + minU2 = minU; + double maxU2 = maxU; + double maxV2 = maxV; + double minV2 = minV; + + if(this.uvRotateSouth == 2) { + maxU = (double) icon.getInterpolatedU(this.renderMinY * 16.0D); + maxV = (double) icon.getInterpolatedV(16.0D - this.renderMinZ * 16.0D); + minU = (double) icon.getInterpolatedU(this.renderMaxY * 16.0D); + minV = (double) icon.getInterpolatedV(16.0D - this.renderMaxZ * 16.0D); + maxV2 = maxV; + minV2 = minV; + minU2 = maxU; + maxU2 = minU; + maxV = minV; + minV = maxV2; + } else if(this.uvRotateSouth == 1) { + maxU = (double) icon.getInterpolatedU(16.0D - this.renderMaxY * 16.0D); + maxV = (double) icon.getInterpolatedV(this.renderMaxZ * 16.0D); + minU = (double) icon.getInterpolatedU(16.0D - this.renderMinY * 16.0D); + minV = (double) icon.getInterpolatedV(this.renderMinZ * 16.0D); + minU2 = minU; + maxU2 = maxU; + maxU = minU; + minU = maxU2; + maxV2 = minV; + minV2 = maxV; + } else if(this.uvRotateSouth == 3) { + maxU = (double) icon.getInterpolatedU(16.0D - this.renderMinZ * 16.0D); + minU = (double) icon.getInterpolatedU(16.0D - this.renderMaxZ * 16.0D); + maxV = (double) icon.getInterpolatedV(this.renderMaxY * 16.0D); + minV = (double) icon.getInterpolatedV(this.renderMinY * 16.0D); + minU2 = minU; + maxU2 = maxU; + maxV2 = maxV; + minV2 = minV; + } + + double maxX = x + this.renderMaxX; + double minY = y + this.renderMinY; + double maxY = y + this.renderMaxY; + double minZ = z + this.renderMinZ; + double maxZ = z + this.renderMaxZ; + + if(this.renderFromInside) { + minZ = z + this.renderMaxZ; + maxZ = z + this.renderMinZ; + } + + if(this.enableAO) { + tessellator.setColorOpaque_F(this.colorRedTopLeft, this.colorGreenTopLeft, this.colorBlueTopLeft); + tessellator.setBrightness(this.brightnessTopLeft); + tessellator.addVertexWithUV(maxX, minY, maxZ, maxU2, minV2); + tessellator.setColorOpaque_F(this.colorRedBottomLeft, this.colorGreenBottomLeft, this.colorBlueBottomLeft); + tessellator.setBrightness(this.brightnessBottomLeft); + tessellator.addVertexWithUV(maxX, minY, minZ, minU, minV); + tessellator.setColorOpaque_F(this.colorRedBottomRight, this.colorGreenBottomRight, this.colorBlueBottomRight); + tessellator.setBrightness(this.brightnessBottomRight); + tessellator.addVertexWithUV(maxX, maxY, minZ, minU2, maxV2); + tessellator.setColorOpaque_F(this.colorRedTopRight, this.colorGreenTopRight, this.colorBlueTopRight); + tessellator.setBrightness(this.brightnessTopRight); + tessellator.addVertexWithUV(maxX, maxY, maxZ, maxU, maxV); + } else { + tessellator.addVertexWithUV(maxX, minY, maxZ, maxU2, minV2); + tessellator.addVertexWithUV(maxX, minY, minZ, minU, minV); + tessellator.addVertexWithUV(maxX, maxY, minZ, minU2, maxV2); + tessellator.addVertexWithUV(maxX, maxY, maxZ, maxU, maxV); + } + } +} diff --git a/src/main/java/com/hbm/render/util/RenderBlocksWrapper.java b/src/main/java/com/hbm/render/util/RenderBlocksWrapper.java new file mode 100644 index 000000000..3da1e2b22 --- /dev/null +++ b/src/main/java/com/hbm/render/util/RenderBlocksWrapper.java @@ -0,0 +1,150 @@ +package com.hbm.render.util; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockAnvil; +import net.minecraft.block.BlockBeacon; +import net.minecraft.block.BlockBrewingStand; +import net.minecraft.block.BlockCauldron; +import net.minecraft.block.BlockCocoa; +import net.minecraft.block.BlockDoublePlant; +import net.minecraft.block.BlockDragonEgg; +import net.minecraft.block.BlockEndPortalFrame; +import net.minecraft.block.BlockFence; +import net.minecraft.block.BlockFenceGate; +import net.minecraft.block.BlockFire; +import net.minecraft.block.BlockFlowerPot; +import net.minecraft.block.BlockHopper; +import net.minecraft.block.BlockPane; +import net.minecraft.block.BlockRailBase; +import net.minecraft.block.BlockRedstoneComparator; +import net.minecraft.block.BlockRedstoneDiode; +import net.minecraft.block.BlockRedstoneRepeater; +import net.minecraft.block.BlockStairs; +import net.minecraft.block.BlockStem; +import net.minecraft.block.BlockWall; +import net.minecraft.block.material.Material; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.EntityRenderer; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +public class RenderBlocksWrapper extends RenderBlocks { + + public static final RenderBlocksWrapper INSTANCE = new RenderBlocksWrapper(); + public RenderBlocks rb; + + public void setup(RenderBlocks rb) { this.rb = rb; } + + @Override + public boolean renderStandardBlock(Block block, int x, int y, int z) { + int color = block.colorMultiplier(this.blockAccess, x, y, z); + float r = (float) (color >> 16 & 255) / 255.0F; + float g = (float) (color >> 8 & 255) / 255.0F; + float b = (float) (color & 255) / 255.0F; + + if(EntityRenderer.anaglyphEnable) { + float ar = (r * 30.0F + g * 59.0F + b * 11.0F) / 100.0F; + float ag = (r * 30.0F + g * 70.0F) / 100.0F; + float ab = (r * 30.0F + b * 70.0F) / 100.0F; + r = ar; + g = ag; + b = ab; + } + + return Minecraft.isAmbientOcclusionEnabled() && block.getLightValue() == 0 + ? (this.partialRenderBounds ? this.renderStandardBlockWithAmbientOcclusionPartial(block, x, y, z, r, g, b) + : this.renderStandardBlockWithAmbientOcclusion(block, x, y, z, r, g, b)) + : this.renderStandardBlockWithColorMultiplier(block, x, y, z, r, g, b); + } + + // the unholy mass + @Override public void setOverrideBlockTexture(IIcon p_147757_1_) { rb.setOverrideBlockTexture(p_147757_1_); } + @Override public void clearOverrideBlockTexture() { rb.clearOverrideBlockTexture(); } + @Override public boolean hasOverrideBlockTexture() { return rb.hasOverrideBlockTexture(); } + @Override public void setRenderFromInside(boolean p_147786_1_) { rb.setRenderFromInside(p_147786_1_); } + @Override public void setRenderAllFaces(boolean p_147753_1_) { rb.setRenderAllFaces(p_147753_1_); } + @Override public void setRenderBounds(double p_147782_1_, double p_147782_3_, double p_147782_5_, double p_147782_7_, double p_147782_9_, double p_147782_11_) { rb.setRenderBounds(p_147782_1_, p_147782_3_, p_147782_5_, p_147782_7_, p_147782_9_, p_147782_11_); } + @Override public void setRenderBoundsFromBlock(Block p_147775_1_) { rb.setRenderBoundsFromBlock(p_147775_1_); } + @Override public void overrideBlockBounds(double p_147770_1_, double p_147770_3_, double p_147770_5_, double p_147770_7_, double p_147770_9_, double p_147770_11_) { rb.overrideBlockBounds(p_147770_1_, p_147770_3_, p_147770_5_, p_147770_7_, p_147770_9_, p_147770_11_); } + @Override public void unlockBlockBounds() { rb.unlockBlockBounds(); } + @Override public void renderBlockUsingTexture(Block p_147792_1_, int p_147792_2_, int p_147792_3_, int p_147792_4_, IIcon p_147792_5_) { rb.renderBlockUsingTexture(p_147792_1_, p_147792_2_, p_147792_3_, p_147792_4_, p_147792_5_); } + @Override public void renderBlockAllFaces(Block p_147769_1_, int p_147769_2_, int p_147769_3_, int p_147769_4_) { rb.renderBlockAllFaces(p_147769_1_, p_147769_2_, p_147769_3_, p_147769_4_); } + @Override public boolean renderBlockByRenderType(Block p_147805_1_, int p_147805_2_, int p_147805_3_, int p_147805_4_) { return rb.renderBlockByRenderType(p_147805_1_, p_147805_2_, p_147805_3_, p_147805_4_); } + @Override public boolean renderBlockEndPortalFrame(BlockEndPortalFrame p_147743_1_, int p_147743_2_, int p_147743_3_, int p_147743_4_) { return rb.renderBlockEndPortalFrame(p_147743_1_, p_147743_2_, p_147743_3_, p_147743_4_); } + @Override public boolean renderBlockBed(Block p_147773_1_, int p_147773_2_, int p_147773_3_, int p_147773_4_) { return rb.renderBlockBed(p_147773_1_, p_147773_2_, p_147773_3_, p_147773_4_); } + @Override public boolean renderBlockBrewingStand(BlockBrewingStand p_147741_1_, int p_147741_2_, int p_147741_3_, int p_147741_4_) { return rb.renderBlockBrewingStand(p_147741_1_, p_147741_2_, p_147741_3_, p_147741_4_); } + @Override public boolean renderBlockCauldron(BlockCauldron p_147785_1_, int p_147785_2_, int p_147785_3_, int p_147785_4_) { return rb.renderBlockCauldron(p_147785_1_, p_147785_2_, p_147785_3_, p_147785_4_); } + @Override public boolean renderBlockFlowerpot(BlockFlowerPot p_147752_1_, int p_147752_2_, int p_147752_3_, int p_147752_4_) { return rb.renderBlockFlowerpot(p_147752_1_, p_147752_2_, p_147752_3_, p_147752_4_); } + @Override public boolean renderBlockAnvil(BlockAnvil p_147725_1_, int p_147725_2_, int p_147725_3_, int p_147725_4_) { return rb.renderBlockAnvil(p_147725_1_, p_147725_2_, p_147725_3_, p_147725_4_); } + @Override public boolean renderBlockAnvilMetadata(BlockAnvil p_147780_1_, int p_147780_2_, int p_147780_3_, int p_147780_4_, int p_147780_5_) { return rb.renderBlockAnvilMetadata(p_147780_1_, p_147780_2_, p_147780_3_, p_147780_4_, p_147780_5_); } + @Override public boolean renderBlockAnvilOrient(BlockAnvil p_147728_1_, int p_147728_2_, int p_147728_3_, int p_147728_4_, int p_147728_5_, boolean p_147728_6_) { return rb.renderBlockAnvilOrient(p_147728_1_, p_147728_2_, p_147728_3_, p_147728_4_, p_147728_5_, p_147728_6_); } + @Override public float renderBlockAnvilRotate(BlockAnvil p_147737_1_, int p_147737_2_, int p_147737_3_, int p_147737_4_, int p_147737_5_, float p_147737_6_, float p_147737_7_, float p_147737_8_, float p_147737_9_, boolean p_147737_10_, boolean p_147737_11_, int p_147737_12_) { return rb.renderBlockAnvilRotate(p_147737_1_, p_147737_2_, p_147737_3_, p_147737_4_, p_147737_5_, p_147737_6_, p_147737_7_, p_147737_8_, p_147737_9_, p_147737_10_, p_147737_11_, p_147737_12_); } + @Override public boolean renderBlockTorch(Block p_147791_1_, int p_147791_2_, int p_147791_3_, int p_147791_4_) { return rb.renderBlockTorch(p_147791_1_, p_147791_2_, p_147791_3_, p_147791_4_); } + @Override public boolean renderBlockRepeater(BlockRedstoneRepeater p_147759_1_, int p_147759_2_, int p_147759_3_, int p_147759_4_) { return rb.renderBlockRepeater(p_147759_1_, p_147759_2_, p_147759_3_, p_147759_4_); } + @Override public boolean renderBlockRedstoneComparator(BlockRedstoneComparator p_147781_1_, int p_147781_2_, int p_147781_3_, int p_147781_4_) { return rb.renderBlockRedstoneComparator(p_147781_1_, p_147781_2_, p_147781_3_, p_147781_4_); } + @Override public boolean renderBlockRedstoneDiode(BlockRedstoneDiode p_147748_1_, int p_147748_2_, int p_147748_3_, int p_147748_4_) { return rb.renderBlockRedstoneDiode(p_147748_1_, p_147748_2_, p_147748_3_, p_147748_4_); } + @Override public void renderBlockRedstoneDiodeMetadata(BlockRedstoneDiode p_147732_1_, int p_147732_2_, int p_147732_3_, int p_147732_4_, int p_147732_5_) { rb.renderBlockRedstoneDiodeMetadata(p_147732_1_, p_147732_2_, p_147732_3_, p_147732_4_, p_147732_5_); } + @Override public void renderPistonBaseAllFaces(Block p_147804_1_, int p_147804_2_, int p_147804_3_, int p_147804_4_) { rb.renderPistonBaseAllFaces(p_147804_1_, p_147804_2_, p_147804_3_, p_147804_4_); } + @Override public boolean renderPistonBase(Block p_147731_1_, int p_147731_2_, int p_147731_3_, int p_147731_4_, boolean p_147731_5_) { return rb.renderPistonBase(p_147731_1_, p_147731_2_, p_147731_3_, p_147731_4_, p_147731_5_); } + @Override public void renderPistonRodUD(double p_147763_1_, double p_147763_3_, double p_147763_5_, double p_147763_7_, double p_147763_9_, double p_147763_11_, float p_147763_13_, double p_147763_14_) { rb.renderPistonRodUD(p_147763_1_, p_147763_3_, p_147763_5_, p_147763_7_, p_147763_9_, p_147763_11_, p_147763_13_, p_147763_14_); } + @Override public void renderPistonRodSN(double p_147789_1_, double p_147789_3_, double p_147789_5_, double p_147789_7_, double p_147789_9_, double p_147789_11_, float p_147789_13_, double p_147789_14_) { rb.renderPistonRodSN(p_147789_1_, p_147789_3_, p_147789_5_, p_147789_7_, p_147789_9_, p_147789_11_, p_147789_13_, p_147789_14_); } + @Override public void renderPistonRodEW(double p_147738_1_, double p_147738_3_, double p_147738_5_, double p_147738_7_, double p_147738_9_, double p_147738_11_, float p_147738_13_, double p_147738_14_) { rb.renderPistonRodEW(p_147738_1_, p_147738_3_, p_147738_5_, p_147738_7_, p_147738_9_, p_147738_11_, p_147738_13_, p_147738_14_); } + @Override public void renderPistonExtensionAllFaces(Block p_147750_1_, int p_147750_2_, int p_147750_3_, int p_147750_4_, boolean p_147750_5_) { rb.renderPistonExtensionAllFaces(p_147750_1_, p_147750_2_, p_147750_3_, p_147750_4_, p_147750_5_); } + @Override public boolean renderPistonExtension(Block p_147809_1_, int p_147809_2_, int p_147809_3_, int p_147809_4_, boolean p_147809_5_) { return rb.renderPistonExtension(p_147809_1_, p_147809_2_, p_147809_3_, p_147809_4_, p_147809_5_); } + @Override public boolean renderBlockLever(Block p_147790_1_, int p_147790_2_, int p_147790_3_, int p_147790_4_) { return rb.renderBlockLever(p_147790_1_, p_147790_2_, p_147790_3_, p_147790_4_); } + @Override public boolean renderBlockTripWireSource(Block p_147723_1_, int p_147723_2_, int p_147723_3_, int p_147723_4_) { return rb.renderBlockTripWireSource(p_147723_1_, p_147723_2_, p_147723_3_, p_147723_4_); } + @Override public boolean renderBlockTripWire(Block p_147756_1_, int p_147756_2_, int p_147756_3_, int p_147756_4_) { return rb.renderBlockTripWire(p_147756_1_, p_147756_2_, p_147756_3_, p_147756_4_); } + @Override public boolean renderBlockFire(BlockFire p_147801_1_, int p_147801_2_, int p_147801_3_, int p_147801_4_) { return rb.renderBlockFire(p_147801_1_, p_147801_2_, p_147801_3_, p_147801_4_); } + @Override public boolean renderBlockRedstoneWire(Block p_147788_1_, int p_147788_2_, int p_147788_3_, int p_147788_4_) { return rb.renderBlockRedstoneWire(p_147788_1_, p_147788_2_, p_147788_3_, p_147788_4_); } + @Override public boolean renderBlockMinecartTrack(BlockRailBase p_147766_1_, int p_147766_2_, int p_147766_3_, int p_147766_4_) { return rb.renderBlockMinecartTrack(p_147766_1_, p_147766_2_, p_147766_3_, p_147766_4_); } + @Override public boolean renderBlockLadder(Block p_147794_1_, int p_147794_2_, int p_147794_3_, int p_147794_4_) { return rb.renderBlockLadder(p_147794_1_, p_147794_2_, p_147794_3_, p_147794_4_); } + @Override public boolean renderBlockVine(Block p_147726_1_, int p_147726_2_, int p_147726_3_, int p_147726_4_) { return rb.renderBlockVine(p_147726_1_, p_147726_2_, p_147726_3_, p_147726_4_); } + @Override public boolean renderBlockStainedGlassPane(Block p_147733_1_, int p_147733_2_, int p_147733_3_, int p_147733_4_) { return rb.renderBlockStainedGlassPane(p_147733_1_, p_147733_2_, p_147733_3_, p_147733_4_); } + @Override public boolean renderBlockPane(BlockPane p_147767_1_, int p_147767_2_, int p_147767_3_, int p_147767_4_) { return rb.renderBlockPane(p_147767_1_, p_147767_2_, p_147767_3_, p_147767_4_); } + @Override public boolean renderCrossedSquares(Block p_147746_1_, int p_147746_2_, int p_147746_3_, int p_147746_4_) { return rb.renderCrossedSquares(p_147746_1_, p_147746_2_, p_147746_3_, p_147746_4_); } + @Override public boolean renderBlockDoublePlant(BlockDoublePlant p_147774_1_, int p_147774_2_, int p_147774_3_, int p_147774_4_) { return rb.renderBlockDoublePlant(p_147774_1_, p_147774_2_, p_147774_3_, p_147774_4_); } + @Override public boolean renderBlockStem(Block p_147724_1_, int p_147724_2_, int p_147724_3_, int p_147724_4_) { return rb.renderBlockStem(p_147724_1_, p_147724_2_, p_147724_3_, p_147724_4_); } + @Override public boolean renderBlockCrops(Block p_147796_1_, int p_147796_2_, int p_147796_3_, int p_147796_4_) { return rb.renderBlockCrops(p_147796_1_, p_147796_2_, p_147796_3_, p_147796_4_); } + @Override public void renderTorchAtAngle(Block p_147747_1_, double p_147747_2_, double p_147747_4_, double p_147747_6_, double p_147747_8_, double p_147747_10_, int p_147747_12_) { rb.renderTorchAtAngle(p_147747_1_, p_147747_2_, p_147747_4_, p_147747_6_, p_147747_8_, p_147747_10_, p_147747_12_); } + @Override public void drawCrossedSquares(IIcon p_147765_1_, double p_147765_2_, double p_147765_4_, double p_147765_6_, float p_147765_8_) { rb.drawCrossedSquares(p_147765_1_, p_147765_2_, p_147765_4_, p_147765_6_, p_147765_8_); } + @Override public void renderBlockStemSmall(Block p_147730_1_, int p_147730_2_, double p_147730_3_, double p_147730_5_, double p_147730_7_, double p_147730_9_) { rb.renderBlockStemSmall(p_147730_1_, p_147730_2_, p_147730_3_, p_147730_5_, p_147730_7_, p_147730_9_); } + @Override public boolean renderBlockLilyPad(Block p_147783_1_, int p_147783_2_, int p_147783_3_, int p_147783_4_) { return rb.renderBlockLilyPad(p_147783_1_, p_147783_2_, p_147783_3_, p_147783_4_); } + @Override public void renderBlockStemBig(BlockStem p_147740_1_, int p_147740_2_, int p_147740_3_, double p_147740_4_, double p_147740_6_, double p_147740_8_, double p_147740_10_) { rb.renderBlockStemBig(p_147740_1_, p_147740_2_, p_147740_3_, p_147740_4_, p_147740_6_, p_147740_8_, p_147740_10_); } + @Override public void renderBlockCropsImpl(Block p_147795_1_, int p_147795_2_, double p_147795_3_, double p_147795_5_, double p_147795_7_) { rb.renderBlockCropsImpl(p_147795_1_, p_147795_2_, p_147795_3_, p_147795_5_, p_147795_7_); } + @Override public boolean renderBlockLiquid(Block p_147721_1_, int p_147721_2_, int p_147721_3_, int p_147721_4_) { return rb.renderBlockLiquid(p_147721_1_, p_147721_2_, p_147721_3_, p_147721_4_); } + @Override public float getLiquidHeight(int p_147729_1_, int p_147729_2_, int p_147729_3_, Material p_147729_4_) { return rb.getLiquidHeight(p_147729_1_, p_147729_2_, p_147729_3_, p_147729_4_); } + @Override public void renderBlockSandFalling(Block p_147749_1_, World p_147749_2_, int p_147749_3_, int p_147749_4_, int p_147749_5_, int p_147749_6_) { rb.renderBlockSandFalling(p_147749_1_, p_147749_2_, p_147749_3_, p_147749_4_, p_147749_5_, p_147749_6_); } + @Override public boolean renderBlockLog(Block p_147742_1_, int p_147742_2_, int p_147742_3_, int p_147742_4_) { return rb.renderBlockLog(p_147742_1_, p_147742_2_, p_147742_3_, p_147742_4_); } + @Override public boolean renderBlockQuartz(Block p_147779_1_, int p_147779_2_, int p_147779_3_, int p_147779_4_) { return rb.renderBlockQuartz(p_147779_1_, p_147779_2_, p_147779_3_, p_147779_4_); } + @Override public boolean renderStandardBlockWithAmbientOcclusion(Block p_147751_1_, int p_147751_2_, int p_147751_3_, int p_147751_4_, float p_147751_5_, float p_147751_6_, float p_147751_7_) { return rb.renderStandardBlockWithAmbientOcclusion(p_147751_1_, p_147751_2_, p_147751_3_, p_147751_4_, p_147751_5_, p_147751_6_, p_147751_7_); } + @Override public boolean renderStandardBlockWithAmbientOcclusionPartial(Block p_147808_1_, int p_147808_2_, int p_147808_3_, int p_147808_4_, float p_147808_5_, float p_147808_6_, float p_147808_7_) { return rb.renderStandardBlockWithAmbientOcclusionPartial(p_147808_1_, p_147808_2_, p_147808_3_, p_147808_4_, p_147808_5_, p_147808_6_, p_147808_7_); } + @Override public int getAoBrightness(int p_147778_1_, int p_147778_2_, int p_147778_3_, int p_147778_4_) { return rb.getAoBrightness(p_147778_1_, p_147778_2_, p_147778_3_, p_147778_4_); } + @Override public int mixAoBrightness(int p_147727_1_, int p_147727_2_, int p_147727_3_, int p_147727_4_, double p_147727_5_, double p_147727_7_, double p_147727_9_, double p_147727_11_) { return rb.mixAoBrightness(p_147727_1_, p_147727_2_, p_147727_3_, p_147727_4_, p_147727_5_, p_147727_7_, p_147727_9_, p_147727_11_); } + @Override public boolean renderStandardBlockWithColorMultiplier(Block p_147736_1_, int p_147736_2_, int p_147736_3_, int p_147736_4_, float p_147736_5_, float p_147736_6_, float p_147736_7_) { return rb.renderStandardBlockWithColorMultiplier(p_147736_1_, p_147736_2_, p_147736_3_, p_147736_4_, p_147736_5_, p_147736_6_, p_147736_7_); } + @Override public boolean renderBlockCocoa(BlockCocoa p_147772_1_, int p_147772_2_, int p_147772_3_, int p_147772_4_) { return rb.renderBlockCocoa(p_147772_1_, p_147772_2_, p_147772_3_, p_147772_4_); } + @Override public boolean renderBlockBeacon(BlockBeacon p_147797_1_, int p_147797_2_, int p_147797_3_, int p_147797_4_) { return rb.renderBlockBeacon(p_147797_1_, p_147797_2_, p_147797_3_, p_147797_4_); } + @Override public boolean renderBlockCactus(Block p_147755_1_, int p_147755_2_, int p_147755_3_, int p_147755_4_) { return rb.renderBlockCactus(p_147755_1_, p_147755_2_, p_147755_3_, p_147755_4_); } + @Override public boolean renderBlockCactusImpl(Block p_147754_1_, int p_147754_2_, int p_147754_3_, int p_147754_4_, float p_147754_5_, float p_147754_6_, float p_147754_7_) { return rb.renderBlockCactusImpl(p_147754_1_, p_147754_2_, p_147754_3_, p_147754_4_, p_147754_5_, p_147754_6_, p_147754_7_); } + @Override public boolean renderBlockFence(BlockFence p_147735_1_, int p_147735_2_, int p_147735_3_, int p_147735_4_) { return rb.renderBlockFence(p_147735_1_, p_147735_2_, p_147735_3_, p_147735_4_); } + @Override public boolean renderBlockWall(BlockWall p_147807_1_, int p_147807_2_, int p_147807_3_, int p_147807_4_) { return rb.renderBlockWall(p_147807_1_, p_147807_2_, p_147807_3_, p_147807_4_); } + @Override public boolean renderBlockDragonEgg(BlockDragonEgg p_147802_1_, int p_147802_2_, int p_147802_3_, int p_147802_4_) { return rb.renderBlockDragonEgg(p_147802_1_, p_147802_2_, p_147802_3_, p_147802_4_); } + @Override public boolean renderBlockFenceGate(BlockFenceGate p_147776_1_, int p_147776_2_, int p_147776_3_, int p_147776_4_) { return rb.renderBlockFenceGate(p_147776_1_, p_147776_2_, p_147776_3_, p_147776_4_); } + @Override public boolean renderBlockHopper(BlockHopper p_147803_1_, int p_147803_2_, int p_147803_3_, int p_147803_4_) { return rb.renderBlockHopper(p_147803_1_, p_147803_2_, p_147803_3_, p_147803_4_); } + @Override public boolean renderBlockHopperMetadata(BlockHopper p_147799_1_, int p_147799_2_, int p_147799_3_, int p_147799_4_, int p_147799_5_, boolean p_147799_6_) { return rb.renderBlockHopperMetadata(p_147799_1_, p_147799_2_, p_147799_3_, p_147799_4_, p_147799_5_, p_147799_6_); } + @Override public boolean renderBlockStairs(BlockStairs p_147722_1_, int p_147722_2_, int p_147722_3_, int p_147722_4_) { return rb.renderBlockStairs(p_147722_1_, p_147722_2_, p_147722_3_, p_147722_4_); } + @Override public boolean renderBlockDoor(Block p_147760_1_, int p_147760_2_, int p_147760_3_, int p_147760_4_) { return rb.renderBlockDoor(p_147760_1_, p_147760_2_, p_147760_3_, p_147760_4_); } + @Override public void renderFaceYNeg(Block p_147768_1_, double p_147768_2_, double p_147768_4_, double p_147768_6_, IIcon p_147768_8_) { rb.renderFaceYNeg(p_147768_1_, p_147768_2_, p_147768_4_, p_147768_6_, p_147768_8_); } + @Override public void renderFaceYPos(Block p_147806_1_, double p_147806_2_, double p_147806_4_, double p_147806_6_, IIcon p_147806_8_) { rb.renderFaceYPos(p_147806_1_, p_147806_2_, p_147806_4_, p_147806_6_, p_147806_8_); } + @Override public void renderFaceZNeg(Block p_147761_1_, double p_147761_2_, double p_147761_4_, double p_147761_6_, IIcon p_147761_8_) { rb.renderFaceZNeg(p_147761_1_, p_147761_2_, p_147761_4_, p_147761_6_, p_147761_8_); } + @Override public void renderFaceZPos(Block p_147734_1_, double p_147734_2_, double p_147734_4_, double p_147734_6_, IIcon p_147734_8_) { rb.renderFaceZPos(p_147734_1_, p_147734_2_, p_147734_4_, p_147734_6_, p_147734_8_); } + @Override public void renderFaceXNeg(Block p_147798_1_, double p_147798_2_, double p_147798_4_, double p_147798_6_, IIcon p_147798_8_) { rb.renderFaceXNeg(p_147798_1_, p_147798_2_, p_147798_4_, p_147798_6_, p_147798_8_); } + @Override public void renderFaceXPos(Block p_147764_1_, double p_147764_2_, double p_147764_4_, double p_147764_6_, IIcon p_147764_8_) { rb.renderFaceXPos(p_147764_1_, p_147764_2_, p_147764_4_, p_147764_6_, p_147764_8_); } + @Override public void renderBlockAsItem(Block p_147800_1_, int p_147800_2_, float p_147800_3_) { rb.renderBlockAsItem(p_147800_1_, p_147800_2_, p_147800_3_); } + @Override public IIcon getBlockIcon(Block p_147793_1_, IBlockAccess p_147793_2_, int p_147793_3_, int p_147793_4_, int p_147793_5_, int p_147793_6_) { return rb.getBlockIcon(p_147793_1_, p_147793_2_, p_147793_3_, p_147793_4_, p_147793_5_, p_147793_6_); } + @Override public IIcon getBlockIconFromSideAndMetadata(Block block, int side, int meta) { return rb.getBlockIconFromSideAndMetadata(block, side, meta); } + @Override public IIcon getBlockIconFromSide(Block block, int side) { return rb.getBlockIconFromSide(block, side); } + @Override public IIcon getBlockIcon(Block block) { return rb.getBlockIcon(block); } + @Override public IIcon getIconSafe(IIcon icon) { return rb.getIconSafe(icon); } +} diff --git a/src/main/java/com/hbm/render/util/RenderInfoSystem.java b/src/main/java/com/hbm/render/util/RenderInfoSystem.java index 94f7760d2..773c5e618 100644 --- a/src/main/java/com/hbm/render/util/RenderInfoSystem.java +++ b/src/main/java/com/hbm/render/util/RenderInfoSystem.java @@ -7,7 +7,7 @@ import java.util.List; import org.lwjgl.opengl.GL11; -import com.hbm.config.GeneralConfig; +import com.hbm.config.ClientConfig; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.TickEvent.ClientTickEvent; @@ -49,6 +49,9 @@ public class RenderInfoSystem { if(event.type != ElementType.CROSSHAIRS) return; + + //this.messages.put(-666, new InfoEntry(Minecraft.getMinecraft().theWorld.getCelestialAngle(0) + "", 666_666)); + //this.messages.put(-665, new InfoEntry(Minecraft.getMinecraft().theWorld.getMoonPhase() + "", 666_666)); if(this.messages.isEmpty()) return; @@ -72,10 +75,13 @@ public class RenderInfoSystem { longest = length; } - int mode = GeneralConfig.hintPos; + int mode = ClientConfig.INFO_POSITION.get(); int pX = mode == 0 ? 15 : mode == 1 ? (resolution.getScaledWidth() - longest - 15) : mode == 2 ? (resolution.getScaledWidth() / 2 + 7) : (resolution.getScaledWidth() / 2 - longest - 6); int pZ = mode == 0 ? 15 : mode == 1 ? 15 : resolution.getScaledHeight() / 2 + 7; + + pX += ClientConfig.INFO_OFFSET_HORIZONTAL.get(); + pZ += ClientConfig.INFO_OFFSET_VERTICAL.get(); int side = pX + 5 + longest; int height = messages.size() * 10 + pZ + 2; @@ -164,13 +170,8 @@ public class RenderInfoSystem { @Override public int compareTo(Object o) { - - if(!(o instanceof InfoEntry)) { - return 0; - } - + if(!(o instanceof InfoEntry)) { return 0; } InfoEntry other = (InfoEntry) o; - return this.millis < other.millis ? -1 : this.millis > other.millis ? 1 : 0; } } diff --git a/src/main/java/com/hbm/render/util/RenderScreenOverlay.java b/src/main/java/com/hbm/render/util/RenderScreenOverlay.java index 512eb41af..25dc54906 100644 --- a/src/main/java/com/hbm/render/util/RenderScreenOverlay.java +++ b/src/main/java/com/hbm/render/util/RenderScreenOverlay.java @@ -3,9 +3,12 @@ package com.hbm.render.util; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; +import com.hbm.config.ClientConfig; import com.hbm.extprop.HbmPlayerProps; import com.hbm.interfaces.Spaghetti; import com.hbm.interfaces.Untested; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.impl.ItemGunStinger; import com.hbm.lib.RefStrings; import net.minecraft.client.Minecraft; @@ -23,8 +26,8 @@ import net.minecraftforge.client.GuiIngameForge; public class RenderScreenOverlay { - private static final ResourceLocation misc = new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_misc.png"); - private static final RenderItem itemRenderer = RenderItem.getInstance(); + public static final ResourceLocation misc = new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_misc.png"); + public static final RenderItem itemRenderer = RenderItem.getInstance(); private static long lastSurvey; private static float prevResult; @@ -36,8 +39,6 @@ public class RenderScreenOverlay { GL11.glPushMatrix(); GL11.glEnable(GL11.GL_BLEND); - // GL11.glDisable(GL11.GL_DEPTH_TEST); - // GL11.glDepthMask(false); OpenGlHelper.glBlendFunc(770, 771, 1, 0); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glDisable(GL11.GL_ALPHA_TEST); @@ -57,8 +58,8 @@ public class RenderScreenOverlay { int bar = getScaled(in, maxRad, 74); - int posX = 16; - int posY = resolution.getScaledHeight() - 18 - 2; + int posX = 16 + ClientConfig.GEIGER_OFFSET_HORIZONTAL.get(); + int posY = resolution.getScaledHeight() - 20 - ClientConfig.GEIGER_OFFSET_VERTICAL.get(); Minecraft.getMinecraft().renderEngine.bindTexture(misc); gui.drawTexturedModalRect(posX, posY, 0, 0, 94, 18); @@ -96,7 +97,7 @@ public class RenderScreenOverlay { public static void renderCustomCrosshairs(ScaledResolution resolution, Gui gui, Crosshair cross) { - + if(cross == Crosshair.NONE) { Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons); return; @@ -105,13 +106,26 @@ public class RenderScreenOverlay { int size = cross.size; GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(misc); - GL11.glEnable(GL11.GL_BLEND); - OpenGlHelper.glBlendFunc(GL11.GL_ONE_MINUS_DST_COLOR, GL11.GL_ONE_MINUS_SRC_COLOR, 1, 0); - gui.drawTexturedModalRect(resolution.getScaledWidth() / 2 - (size / 2), resolution.getScaledHeight() / 2 - (size / 2), cross.x, cross.y, size, size); - OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0); - GL11.glDisable(GL11.GL_BLEND); - GL11.glPopMatrix(); + Minecraft.getMinecraft().renderEngine.bindTexture(misc); + GL11.glEnable(GL11.GL_BLEND); + OpenGlHelper.glBlendFunc(GL11.GL_ONE_MINUS_DST_COLOR, GL11.GL_ONE_MINUS_SRC_COLOR, 1, 0); + gui.drawTexturedModalRect(resolution.getScaledWidth() / 2 - (size / 2), resolution.getScaledHeight() / 2 - (size / 2), cross.x, cross.y, size, size); + OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0); + GL11.glDisable(GL11.GL_BLEND); + GL11.glPopMatrix(); + Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons); + } + + public static void renderStingerLockon(ScaledResolution resolution, Gui gui) { + + int progress = (int) (ItemGunStinger.lockon * 28); + + GL11.glPushMatrix(); + Minecraft.getMinecraft().renderEngine.bindTexture(misc); + GL11.glDisable(GL11.GL_BLEND); + gui.drawTexturedModalRect(resolution.getScaledWidth() / 2 - 15, resolution.getScaledHeight() / 2 + 18, 146, 18, 30, 10); + gui.drawTexturedModalRect(resolution.getScaledWidth() / 2 - 14, resolution.getScaledHeight() / 2 + 19, 147, 29, progress, 8); + GL11.glPopMatrix(); Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons); } @@ -352,37 +366,4 @@ public class RenderScreenOverlay { GL11.glEnable(GL11.GL_ALPHA_TEST); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); } - - public enum Crosshair { - - NONE(0, 0, 0), - CROSS(1, 55, 16), - CIRCLE(19, 55, 16), - SEMI(37, 55, 16), - KRUCK(55, 55, 16), - DUAL(1, 73, 16), - SPLIT(19, 73, 16), - CLASSIC(37, 73, 16), - BOX(55, 73, 16), - L_CROSS(0, 90, 32), - L_KRUCK(32, 90, 32), - L_CLASSIC(64, 90, 32), - L_CIRCLE(96, 90, 32), - L_SPLIT(0, 122, 32), - L_ARROWS(32, 122, 32), - L_BOX(64, 122, 32), - L_CIRCUMFLEX(96, 122, 32), - L_RAD(0, 154, 32); - - public int x; - public int y; - public int size; - - private Crosshair(int x, int y, int size) { - this.x = x; - this.y = y; - this.size = size; - } - } - } diff --git a/src/main/java/com/hbm/sound/MovingSoundBomber.java b/src/main/java/com/hbm/sound/MovingSoundBomber.java deleted file mode 100644 index c20a0cfe0..000000000 --- a/src/main/java/com/hbm/sound/MovingSoundBomber.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.hbm.sound; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.entity.logic.EntityBomber; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.audio.ISound; -import net.minecraft.client.audio.MovingSound; -import net.minecraft.client.entity.EntityClientPlayerMP; -import net.minecraft.util.ResourceLocation; - -public class MovingSoundBomber extends MovingSound { - - public static List globalSoundList = new ArrayList(); - public EntityBomber bomber; - - public MovingSoundBomber(ResourceLocation loc, EntityBomber bomber) { - super(loc); - this.bomber = bomber; - globalSoundList.add(this); - this.repeat = true; - this.field_147666_i = ISound.AttenuationType.NONE; - } - - @Override - public void update() { - - float iVolume = 150; - - if(this.bomber == null || this.bomber.isDead || this.bomber.health <= 0) { - this.stop(); - } else { - this.xPosF = (float)bomber.posX; - this.yPosF = (float)bomber.posY; - this.zPosF = (float)bomber.posZ; - - EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer; - float f = 0; - - if(player != null) { - f = (float)Math.sqrt(Math.pow(xPosF - player.posX, 2) + Math.pow(yPosF - player.posY, 2) + Math.pow(zPosF - player.posZ, 2)); - volume = (f / iVolume) * -2 + 2; - } else { - volume = iVolume; - } - } - - if(!Minecraft.getMinecraft().getSoundHandler().isSoundPlaying(this)) { - stop(); - } - - } - - public void stop() { - this.donePlaying = true; - this.repeat = false; - - globalSoundList.remove(this); - } - - public void setPitch(float f) { - this.field_147663_c = f; - } - - public void setVolume(float f) { - this.volume = f; - } - - public void setDone(boolean b) { - this.donePlaying = b; - } - -} diff --git a/src/main/java/com/hbm/sound/MovingSoundPlayerLoop.java b/src/main/java/com/hbm/sound/MovingSoundPlayerLoop.java index 23714debb..e712391ee 100644 --- a/src/main/java/com/hbm/sound/MovingSoundPlayerLoop.java +++ b/src/main/java/com/hbm/sound/MovingSoundPlayerLoop.java @@ -7,6 +7,7 @@ import net.minecraft.client.audio.MovingSound; import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; +@Deprecated //wtf is this horseshit public abstract class MovingSoundPlayerLoop extends MovingSound { public static List globalSoundList = new ArrayList(); diff --git a/src/main/java/com/hbm/sound/MovingSoundXVL1456.java b/src/main/java/com/hbm/sound/MovingSoundXVL1456.java deleted file mode 100644 index 304e123ef..000000000 --- a/src/main/java/com/hbm/sound/MovingSoundXVL1456.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.hbm.sound; - -import com.hbm.items.ModItems; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; - -public class MovingSoundXVL1456 extends MovingSoundPlayerLoop { - - public MovingSoundXVL1456(ResourceLocation p_i45104_1_, Entity player, EnumHbmSound type) { - super(p_i45104_1_, player, type); - this.setPitch(0.5F); - } - - @Override - public void update() { - super.update(); - - ItemStack i = null; - - if(this.player != null) { - i = ((EntityPlayer)this.player).getItemInUse(); - } - - //this.setPitch(this.getPitch() + 0.1F); - - if(i == null || (i != null && i.getItem() != ModItems.gun_xvl1456) || !((EntityPlayer)this.player).isSneaking() || ((EntityPlayer)this.player).getItemInUseDuration() <= 0) - this.stop(); - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/sound/SoundLoopAssembler.java b/src/main/java/com/hbm/sound/SoundLoopAssembler.java deleted file mode 100644 index c69ea40c6..000000000 --- a/src/main/java/com/hbm/sound/SoundLoopAssembler.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.hbm.sound; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.tileentity.machine.TileEntityMachineAssembler; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; - -public class SoundLoopAssembler extends SoundLoopMachine { - - public static List list = new ArrayList(); - - public SoundLoopAssembler(ResourceLocation path, TileEntity te) { - super(path, te); - list.add(this); - } - - @Override - public void update() { - super.update(); - - if(te instanceof TileEntityMachineAssembler) { - TileEntityMachineAssembler drill = (TileEntityMachineAssembler)te; - - if(this.volume != 3) - volume = 3; - - if(!drill.isProgressing) - this.donePlaying = true; - } - } - - public TileEntity getTE() { - return te; - } - -} diff --git a/src/main/java/com/hbm/sound/SoundLoopBroadcaster.java b/src/main/java/com/hbm/sound/SoundLoopBroadcaster.java deleted file mode 100644 index 3b00039a5..000000000 --- a/src/main/java/com/hbm/sound/SoundLoopBroadcaster.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.hbm.sound; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.tileentity.machine.TileEntityBroadcaster; -import net.minecraft.client.Minecraft; -import net.minecraft.client.audio.ISound; -import net.minecraft.client.entity.EntityClientPlayerMP; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; - -public class SoundLoopBroadcaster extends SoundLoopMachine { - - public static List list = new ArrayList(); - public float intendedVolume = 25.0F; - - public SoundLoopBroadcaster(ResourceLocation path, TileEntity te) { - super(path, te); - list.add(this); - this.field_147666_i = ISound.AttenuationType.NONE; - } - - @Override - public void update() { - super.update(); - - EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer; - float f = 0; - - if(player != null) { - f = (float)Math.sqrt(Math.pow(xPosF - player.posX, 2) + Math.pow(yPosF - player.posY, 2) + Math.pow(zPosF - player.posZ, 2)); - volume = func(f, intendedVolume); - - if(!(player.worldObj.getTileEntity((int)xPosF, (int)yPosF, (int)zPosF) instanceof TileEntityBroadcaster)) { - this.donePlaying = true; - volume = 0; - } - } else { - volume = intendedVolume; - } - } - - public TileEntity getTE() { - return te; - } - - public float func(float f, float v) { - return (f / v) * -2 + 2; - } - -} diff --git a/src/main/java/com/hbm/sound/SoundLoopCentrifuge.java b/src/main/java/com/hbm/sound/SoundLoopCentrifuge.java deleted file mode 100644 index 2989ddf9c..000000000 --- a/src/main/java/com/hbm/sound/SoundLoopCentrifuge.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.hbm.sound; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.tileentity.machine.TileEntityMachineCentrifuge; -import com.hbm.tileentity.machine.TileEntityMachineGasCent; -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; - -public class SoundLoopCentrifuge extends SoundLoopMachine { - - public static List list = new ArrayList(); - - public SoundLoopCentrifuge(ResourceLocation path, TileEntity te) { - super(path, te); - list.add(this); - } - - @Override - public void update() { - super.update(); - - if(te instanceof TileEntityMachineCentrifuge) { - TileEntityMachineCentrifuge plant = (TileEntityMachineCentrifuge)te; - - if(this.volume != 1) - volume = 1; - - if(!plant.isProgressing) - this.donePlaying = true; - } - - if(te instanceof TileEntityMachineGasCent) { - TileEntityMachineGasCent plant = (TileEntityMachineGasCent)te; - - if(this.volume != 1) - volume = 1; - - if(!plant.isProgressing) - this.donePlaying = true; - } - - if(!Minecraft.getMinecraft().getSoundHandler().isSoundPlaying(this)) { - stop(); - } - } - - public TileEntity getTE() { - return te; - } - -} diff --git a/src/main/java/com/hbm/sound/SoundLoopTurbofan.java b/src/main/java/com/hbm/sound/SoundLoopTurbofan.java deleted file mode 100644 index 4b08d0471..000000000 --- a/src/main/java/com/hbm/sound/SoundLoopTurbofan.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.hbm.sound; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.tileentity.machine.TileEntityMachineTurbofan; - -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; - -public class SoundLoopTurbofan extends SoundLoopMachine { - - public static List list = new ArrayList(); - - public SoundLoopTurbofan(ResourceLocation path, TileEntity te) { - super(path, te); - list.add(this); - } - - @Override - public void update() { - super.update(); - - if(te instanceof TileEntityMachineTurbofan) { - TileEntityMachineTurbofan drill = (TileEntityMachineTurbofan)te; - - if(this.volume != 10) - volume = 10; - - if(!drill.wasOn) - this.donePlaying = true; - } - } - - public TileEntity getTE() { - return te; - } - -} diff --git a/src/main/java/com/hbm/test/ExplosionTests.java b/src/main/java/com/hbm/test/ExplosionTests.java index 544a61157..bbc3dcd78 100644 --- a/src/main/java/com/hbm/test/ExplosionTests.java +++ b/src/main/java/com/hbm/test/ExplosionTests.java @@ -1,32 +1,33 @@ package com.hbm.test; -import com.hbm.test.MK5Frame.*; +import com.hbm.test.MK5Frame.BufferArray; +import com.hbm.test.MK5Frame.BufferMap; +import com.hbm.test.MK5Frame.BufferNone; import com.hbm.util.TimeAnalyzer; - import cpw.mods.fml.common.FMLCommonHandler; public class ExplosionTests { private static ExplosionWorld world = new ExplosionWorld(); public static double BUFFER_THRESHOLD = 0.25D; - + public static void runTest() { - + int standardSpeed = (int)Math.ceil(100000 / 300); double[] thresholds = new double[] {0.25, 0.5}; int[] radii = new int[] {100, 250}; - + int x = 200; int y = 70; int z = 200; long mem = 0; - + for(int radius : radii) { - + int strength = radius * 2; int length = radius; - + System.gc(); mem = getMem(); System.out.println("#### STARTING TEST WITH NO PROXIMITY BUFFER " + radius + " ####"); @@ -36,7 +37,7 @@ public class ExplosionTests { TimeAnalyzer.endCount(); TimeAnalyzer.dump(); System.out.println("Mem diff: " + ((getMem() - mem) / 1_048_576) + "MB"); - + for(double threshold : thresholds) { BUFFER_THRESHOLD = threshold; @@ -61,10 +62,10 @@ public class ExplosionTests { System.out.println("Mem diff: " + ((getMem() - mem) / 1_048_576) + "MB"); } } - + FMLCommonHandler.instance().exitJava(0, true); } - + public static long getMem() { return Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory(); } diff --git a/src/main/java/com/hbm/test/MK5Frame.java b/src/main/java/com/hbm/test/MK5Frame.java index a20fd01aa..383ecc043 100644 --- a/src/main/java/com/hbm/test/MK5Frame.java +++ b/src/main/java/com/hbm/test/MK5Frame.java @@ -1,19 +1,14 @@ package com.hbm.test; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; - import com.hbm.util.TimeAnalyzer; import com.hbm.util.fauxpointtwelve.BlockPos; - import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.util.Vec3; import net.minecraft.world.ChunkCoordIntPair; +import java.util.*; + public class MK5Frame { public HashMap> perChunk = new HashMap(); //for future: optimize blockmap further by using sub-chunks instead of chunks @@ -52,7 +47,7 @@ public class MK5Frame { } private void generateGspUp(){ - + if (this.gspNum < this.gspNumMax) { int k = this.gspNum + 1; double hk = -1.0 + 2.0 * (k - 1.0) / (this.gspNumMax - 1.0); @@ -77,7 +72,7 @@ public class MK5Frame { } public void collectTip(int count) { - + TimeAnalyzer.startCount("collect"); int amountProcessed = 0; @@ -107,24 +102,24 @@ public class MK5Frame { double fac = 100 - ((double) i) / ((double) length) * 100; fac *= 0.07D; - + Block block = null; boolean withinThreshold = (double) i / (double) length <= ExplosionTests.BUFFER_THRESHOLD; - + Float buffered = withinThreshold ? buffer.getBufferedResult(iX, iY, iZ) : null; - + float f = 0; - + if(buffered == null) { - + block = world.getBlock(iX, iY, iZ); if(!block.getMaterial().isLiquid()) { f = (float) Math.pow(block.getExplosionResistance(null), 7.5D - fac); } - + if(withinThreshold) buffer.setBufferedResult(iX, iY, iZ, f); - + } else { f = buffered; } @@ -142,18 +137,18 @@ public class MK5Frame { break; } } - + for(ChunkCoordIntPair pos : chunkCoords) { List triplets = perChunk.get(pos); - + if(triplets == null) { triplets = new ArrayList(); perChunk.put(pos, triplets); //we re-use the same pos instead of using individualized per-chunk ones to save on RAM } - + triplets.add(lastPos); } - + // Raise one generalized spiral points this.generateGspUp(); @@ -163,14 +158,14 @@ public class MK5Frame { return; } } - + orderedChunks.addAll(perChunk.keySet()); orderedChunks.sort(comparator); - + isCollectionComplete = true; TimeAnalyzer.endCount(); } - + /* TEST INSERT START */ private ResultBuffer buffer; public MK5Frame setBuffer(ResultBuffer buffer) { @@ -205,7 +200,7 @@ public class MK5Frame { } } /* TEST INSERT END */ - + /** little comparator for roughly sorting chunks by distance to the center */ public class CoordComparator implements Comparator { @@ -217,29 +212,29 @@ public class MK5Frame { int diff1 = Math.abs((chunkX - o1.chunkXPos)) + Math.abs((chunkZ - o1.chunkZPos)); int diff2 = Math.abs((chunkX - o2.chunkXPos)) + Math.abs((chunkZ - o2.chunkZPos)); - + return diff1 > diff2 ? 1 : diff1 < diff2 ? -1 : 0; } } public void processChunk() { - + TimeAnalyzer.startCount("processChunk"); if(this.perChunk.isEmpty()) { TimeAnalyzer.endCount(); return; } - + ChunkCoordIntPair coord = orderedChunks.get(0); List list = perChunk.get(coord); HashSet toRem = new HashSet(); int chunkX = coord.chunkXPos; int chunkZ = coord.chunkZPos; - + int enter = (int) (Math.min( Math.abs(posX - (chunkX << 4)), Math.abs(posZ - (chunkZ << 4)))) - 16; //jump ahead to cut back on NOPs - + for(FloatTriplet triplet : list) { float x = triplet.xCoord; float y = triplet.yCoord; @@ -248,13 +243,13 @@ public class MK5Frame { double pX = vec.xCoord / vec.lengthVector(); double pY = vec.yCoord / vec.lengthVector(); double pZ = vec.zCoord / vec.lengthVector(); - + boolean inChunk = false; for(int i = enter; i < vec.lengthVector(); i++) { int x0 = (int) Math.floor(posX + pX * i); int y0 = (int) Math.floor(posY + pY * i); int z0 = (int) Math.floor(posZ + pZ * i); - + if(x0 >> 4 != chunkX || z0 >> 4 != chunkZ) { if(inChunk) { break; @@ -262,7 +257,7 @@ public class MK5Frame { continue; } } - + inChunk = true; if(!world.isAirBlock(x0, y0, z0)) { @@ -270,22 +265,22 @@ public class MK5Frame { } } } - + for(BlockPos pos : toRem) { world.setBlock(pos.getX(), pos.getY(), pos.getZ(), Blocks.air); } - + perChunk.remove(coord); orderedChunks.remove(0); - + TimeAnalyzer.endCount(); } - + public class FloatTriplet { public float xCoord; public float yCoord; public float zCoord; - + public FloatTriplet(float x, float y, float z) { xCoord = x; yCoord = y; diff --git a/src/main/java/com/hbm/tileentity/IBufPacketReceiver.java b/src/main/java/com/hbm/tileentity/IBufPacketReceiver.java index 688962e83..4250d6edd 100644 --- a/src/main/java/com/hbm/tileentity/IBufPacketReceiver.java +++ b/src/main/java/com/hbm/tileentity/IBufPacketReceiver.java @@ -1,19 +1,9 @@ package com.hbm.tileentity; -import com.hbm.packet.BufPacket; -import com.hbm.packet.PacketDispatcher; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import io.netty.buffer.ByteBuf; -import net.minecraft.tileentity.TileEntity; public interface IBufPacketReceiver { public void serialize(ByteBuf buf); public void deserialize(ByteBuf buf); - - public default void sendStandard(int range) { - TileEntity te = (TileEntity) this; - PacketDispatcher.wrapper.sendToAllAround(new BufPacket(te.xCoord, te.yCoord, te.zCoord, this), new TargetPoint(te.getWorldObj().provider.dimensionId, te.xCoord, te.yCoord, te.zCoord, range)); - } } diff --git a/src/main/java/com/hbm/tileentity/IConditionalInvAccess.java b/src/main/java/com/hbm/tileentity/IConditionalInvAccess.java index 9416eb837..d66553efa 100644 --- a/src/main/java/com/hbm/tileentity/IConditionalInvAccess.java +++ b/src/main/java/com/hbm/tileentity/IConditionalInvAccess.java @@ -11,7 +11,7 @@ import net.minecraft.item.ItemStack; public interface IConditionalInvAccess { public boolean isItemValidForSlot(int x, int y, int z, int slot, ItemStack stack); - public boolean canInsertItem(int x, int y, int z, int slot, ItemStack stack, int side); + public default boolean canInsertItem(int x, int y, int z, int slot, ItemStack stack, int side) { return isItemValidForSlot(x, y, z, slot, stack); } public boolean canExtractItem(int x, int y, int z, int slot, ItemStack stack, int side); public int[] getAccessibleSlotsFromSide(int x, int y, int z, int side); } diff --git a/src/main/java/com/hbm/tileentity/IControlReceiverFilter.java b/src/main/java/com/hbm/tileentity/IControlReceiverFilter.java index 691066ac7..0a418577b 100644 --- a/src/main/java/com/hbm/tileentity/IControlReceiverFilter.java +++ b/src/main/java/com/hbm/tileentity/IControlReceiverFilter.java @@ -2,18 +2,26 @@ package com.hbm.tileentity; import com.hbm.interfaces.IControlReceiver; +import com.hbm.interfaces.ICopiable; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; -public interface IControlReceiverFilter extends IControlReceiver { +public interface IControlReceiverFilter extends IControlReceiver, ICopiable { void nextMode(int i); + /* + default ModulePatternMatcher getMatcher(){ + + }*/ + @Override - public default void receiveControl(NBTTagCompound data) { + default void receiveControl(NBTTagCompound data) { if(data.hasKey("slot")) { setFilterContents(data); } @@ -23,12 +31,72 @@ public interface IControlReceiverFilter extends IControlReceiver { * Expects the implementor to be a tile entity and an IInventory * @param nbt */ - public default void setFilterContents(NBTTagCompound nbt) { + default void setFilterContents(NBTTagCompound nbt) { TileEntity tile = (TileEntity) this; IInventory inv = (IInventory) this; int slot = nbt.getInteger("slot"); - inv.setInventorySlotContents(slot, new ItemStack(Item.getItemById(nbt.getInteger("id")), 1, nbt.getInteger("meta"))); + NBTTagCompound stack = nbt.getCompoundTag("stack"); + ItemStack item = ItemStack.loadItemStackFromNBT(stack); + inv.setInventorySlotContents(slot, item); nextMode(slot); tile.getWorldObj().markTileEntityChunkModified(tile.xCoord, tile.yCoord, tile.zCoord, tile); } + /** + * Used for the copy tool + * @return The start and end (start inclusive, end exclusive) of the filter slots of the TE + */ + int[] getFilterSlots(); + + @Override + default NBTTagCompound getSettings(World world, int x, int y, int z) { + IInventory inv = (IInventory) this; + NBTTagCompound nbt = new NBTTagCompound(); + NBTTagList tags = new NBTTagList(); + int count = 0; + for (int i = getFilterSlots()[0]; i < getFilterSlots()[1]; i++) { + NBTTagCompound slotNBT = new NBTTagCompound(); + if(inv.getStackInSlot(i) != null) { + slotNBT.setByte("slot", (byte) count); + inv.getStackInSlot(i).writeToNBT(slotNBT); + tags.appendTag(slotNBT); + } + count++; + } + nbt.setTag("items", tags); + + return nbt; + } + + @Override + default void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { + TileEntity tile = (TileEntity) this; + IInventory inv = (IInventory) this; + NBTTagList items = nbt.getTagList("items", 10); + int listSize = items.tagCount(); + if(listSize > 0) { + int count = 0; + + for (int i = getFilterSlots()[0]; i < getFilterSlots()[1]; i++) { + if (i < listSize) { + NBTTagCompound slotNBT = items.getCompoundTagAt(count); + byte slot = slotNBT.getByte("slot"); + ItemStack loadedStack = ItemStack.loadItemStackFromNBT(slotNBT); + //whether the filter info came from a router + boolean router = nbt.hasKey("modes") && slot > index * 5 && slot < index * + 5; + + if (loadedStack != null && index < listSize && (slot < getFilterSlots()[1] || router)) { + inv.setInventorySlotContents(slot + getFilterSlots()[0], ItemStack.loadItemStackFromNBT(slotNBT)); + nextMode(slot); + tile.getWorldObj().markTileEntityChunkModified(tile.xCoord, tile.yCoord, tile.zCoord, tile); + } + } + count++; + } + } + } + + @Override + default String[] infoForDisplay(World world, int x, int y, int z) { + return new String[] { "copytool.filter" }; + } } diff --git a/src/main/java/com/hbm/tileentity/IFluidCopiable.java b/src/main/java/com/hbm/tileentity/IFluidCopiable.java new file mode 100644 index 000000000..c7606e64c --- /dev/null +++ b/src/main/java/com/hbm/tileentity/IFluidCopiable.java @@ -0,0 +1,70 @@ +package com.hbm.tileentity; + +import api.hbm.fluid.IFluidStandardTransceiver; +import api.hbm.fluid.IFluidUser; +import com.hbm.interfaces.ICopiable; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.util.BobMathUtil; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +import java.util.ArrayList; + +public interface IFluidCopiable extends ICopiable { + + /** + * @return First type for the normal paste, second type for the alt paste, + * none if there is no alt paste support + */ + default int[] getFluidIDToCopy() { + IFluidUser tile = (IFluidUser) this; + ArrayList types = new ArrayList<>(); + + for(FluidTank tank : tile.getAllTanks()) { + if(!tank.getTankType().hasNoID()) + types.add(tank.getTankType().getID()); + } + + return BobMathUtil.intCollectionToArray(types); + } + + default FluidTank getTankToPaste() { + TileEntity te = (TileEntity) this; + if(te instanceof IFluidStandardTransceiver) { + IFluidStandardTransceiver tile = (IFluidStandardTransceiver) this; + return tile.getReceivingTanks() != null ? tile.getReceivingTanks()[0] : null; + } + return null; + } + + @Override + default NBTTagCompound getSettings(World world, int x, int y, int z) { + NBTTagCompound tag = new NBTTagCompound(); + if(getFluidIDToCopy().length > 0) tag.setIntArray("fluidID", getFluidIDToCopy()); + return tag; + } + + @Override + default void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { + if(getTankToPaste() != null) { + int[] ids = nbt.getIntArray("fluidID"); + if(ids.length > 0 && index < ids.length) { + int id = ids[index]; + getTankToPaste().setTankType(Fluids.fromID(id)); + } + } + } + + @Override + default String[] infoForDisplay(World world, int x, int y, int z) { + int[] ids = getFluidIDToCopy(); + String[] names = new String[ids.length]; + for(int i = 0; i < ids.length; i++) { + names[i] = Fluids.fromID(ids[i]).getUnlocalizedName(); + } + return names; + } +} diff --git a/src/main/java/com/hbm/tileentity/IGUIProvider.java b/src/main/java/com/hbm/tileentity/IGUIProvider.java index f707f3d61..54fd42935 100644 --- a/src/main/java/com/hbm/tileentity/IGUIProvider.java +++ b/src/main/java/com/hbm/tileentity/IGUIProvider.java @@ -1,8 +1,5 @@ package com.hbm.tileentity; -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.world.World; @@ -10,6 +7,5 @@ import net.minecraft.world.World; public interface IGUIProvider { public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z); - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z); + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z); } diff --git a/src/main/java/com/hbm/tileentity/IMetalCopiable.java b/src/main/java/com/hbm/tileentity/IMetalCopiable.java new file mode 100644 index 000000000..5720608c3 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/IMetalCopiable.java @@ -0,0 +1,30 @@ +package com.hbm.tileentity; + +import com.hbm.interfaces.ICopiable; +import com.hbm.inventory.material.Mats; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public interface IMetalCopiable extends ICopiable { + + int[] getMatsToCopy(); + + @Override + default NBTTagCompound getSettings(World world, int x, int y, int z) { + NBTTagCompound tag = new NBTTagCompound(); + if(getMatsToCopy().length > 0) tag.setIntArray("matFilter", getMatsToCopy()); + return tag; + } + + @Override + default String[] infoForDisplay(World world, int x, int y, int z) { + int[] ids = getMatsToCopy(); + String[] names = new String[ids.length]; + for(int i = 0; i < ids.length; i++) names[i] = Mats.matById.get(ids[i]).getUnlocalizedName(); + return names; + } + + @Override + default void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { }; +} diff --git a/src/main/java/com/hbm/tileentity/INBTPacketReceiver.java b/src/main/java/com/hbm/tileentity/INBTPacketReceiver.java deleted file mode 100644 index fa230a3ba..000000000 --- a/src/main/java/com/hbm/tileentity/INBTPacketReceiver.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.hbm.tileentity; - -import com.hbm.packet.NBTPacket; -import com.hbm.packet.PacketDispatcher; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; - -public interface INBTPacketReceiver { - - public void networkUnpack(NBTTagCompound nbt); - - public static void networkPack(TileEntity that, NBTTagCompound data, int range) { - PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(data, that.xCoord, that.yCoord, that.zCoord), new TargetPoint(that.getWorldObj().provider.dimensionId, that.xCoord, that.yCoord, that.zCoord, range)); - } -} diff --git a/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java b/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java index 0fd4f7dab..1539d3eb0 100644 --- a/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java +++ b/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java @@ -1,5 +1,6 @@ package com.hbm.tileentity; +import java.util.HashMap; import java.util.List; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; @@ -13,8 +14,8 @@ public interface IUpgradeInfoProvider { /** If any of the automated display stuff should be applied for this upgrade. A level of 0 is used by the GUI's indicator, as opposed to the item tooltips */ public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo); public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo); - public int getMaxLevel(UpgradeType type); - + public HashMap getValidUpgrades(); + public static String getStandardLabel(Block block) { return EnumChatFormatting.GREEN.YELLOW + ">>> " + I18nUtil.resolveKey(block.getUnlocalizedName() + ".name") + " <<<"; } diff --git a/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java b/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java index a8f856310..d05ac0843 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java +++ b/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java @@ -10,7 +10,7 @@ import com.hbm.interfaces.IAnimatedDoor; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TEDoorAnimationPacket; +import com.hbm.packet.toclient.TEDoorAnimationPacket; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.machine.TileEntityLockableBase; import com.hbm.util.fauxpointtwelve.BlockPos; diff --git a/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java b/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java index 11ec8ddd1..15e7bf426 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java @@ -1,16 +1,20 @@ package com.hbm.tileentity; +import com.hbm.handler.threading.PacketThreading; +import com.hbm.packet.toclient.BufPacket; import com.hbm.sound.AudioWrapper; import api.hbm.tile.ILoadedTile; +import cpw.mods.fml.common.network.NetworkRegistry; +import io.netty.buffer.ByteBuf; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -public class TileEntityLoadedBase extends TileEntity implements ILoadedTile { - +public class TileEntityLoadedBase extends TileEntity implements ILoadedTile, IBufPacketReceiver { + public boolean isLoaded = true; public boolean muffled = false; - + @Override public boolean isLoaded() { return isLoaded; @@ -21,29 +25,63 @@ public class TileEntityLoadedBase extends TileEntity implements ILoadedTile { super.onChunkUnload(); this.isLoaded = false; } - + public AudioWrapper createAudioLoop() { return null; } - + public AudioWrapper rebootAudio(AudioWrapper wrapper) { wrapper.stopSound(); AudioWrapper audio = createAudioLoop(); audio.startSound(); return audio; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); this.muffled = nbt.getBoolean("muffled"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setBoolean("muffled", muffled); } - + public float getVolume(float baseVolume) { return muffled ? baseVolume * 0.1F : baseVolume; } + + private ByteBuf lastPackedBuf; + + @Override + public void serialize(ByteBuf buf) { + buf.writeBoolean(muffled); + } + + @Override + public void deserialize(ByteBuf buf) { + this.muffled = buf.readBoolean(); + } + + /** Sends a sync packet that uses ByteBuf for efficient information-cramming */ + public void networkPackNT(int range) { + if(worldObj.isRemote) return; + + BufPacket packet = new BufPacket(xCoord, yCoord, zCoord, this); + ByteBuf preBuf = packet.getPreBuf(); + + // Don't send unnecessary packets, except for maybe one every second or so. + // If we stop sending duplicate packets entirely, this causes issues when + // a client unloads and then loads back a chunk with an unchanged tile entity. + // For that client, the tile entity will appear default until anything changes about it. + // In my testing, this can be reliably reproduced with a full fluid barrel, for instance. + // I think it might be fixable by doing something with getDescriptionPacket() and onDataPacket(), + // but this sidesteps the problem for the mean time. + if(preBuf.equals(lastPackedBuf) && this.worldObj.getWorldTime() % 20 != 0) return; + + this.lastPackedBuf = preBuf.copy(); + + PacketThreading.createAllAroundThreadedPacket(packet, new NetworkRegistry.TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); + } + } diff --git a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java index d9a17469d..e38bf2f63 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java @@ -1,13 +1,7 @@ package com.hbm.tileentity; -import com.hbm.packet.AuxGaugePacket; -import com.hbm.packet.BufPacket; -import com.hbm.packet.NBTPacket; -import com.hbm.packet.PacketDispatcher; import com.hbm.util.fauxpointtwelve.DirPos; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; @@ -17,16 +11,16 @@ import net.minecraft.nbt.NBTTagList; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.FluidTank; -public abstract class TileEntityMachineBase extends TileEntityLoadedBase implements ISidedInventory, INBTPacketReceiver, IBufPacketReceiver { +public abstract class TileEntityMachineBase extends TileEntityLoadedBase implements ISidedInventory { public ItemStack slots[]; - + private String customName; - + public TileEntityMachineBase(int slotCount) { slots = new ItemStack[slotCount]; } - + /** The "chunks is modified, pls don't forget to save me" effect of markDirty, minus the block updates */ public void markChanged() { this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); @@ -67,14 +61,14 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme public String getInventoryName() { return this.hasCustomInventoryName() ? this.customName : getName(); } - + public abstract String getName(); @Override public boolean hasCustomInventoryName() { return this.customName != null && this.customName.length() > 0; } - + public void setCustomName(String name) { this.customName = name; } @@ -92,7 +86,7 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 128; } } - + @Override public void openInventory() {} @Override @@ -102,22 +96,22 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme public boolean isItemValidForSlot(int slot, ItemStack itemStack) { return false; } - + @Override public ItemStack decrStackSize(int slot, int amount) { if(slots[slot] != null) { - + if(slots[slot].stackSize <= amount) { ItemStack itemStack = slots[slot]; slots[slot] = null; return itemStack; } - + ItemStack itemStack1 = slots[slot].splitStack(amount); if(slots[slot].stackSize == 0) { slots[slot] = null; } - + return itemStack1; } else { return null; @@ -138,7 +132,7 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme public int[] getAccessibleSlotsFromSide(int side) { return new int[] { }; } - + public int getGaugeScaled(int i, FluidTank tank) { return tank.getFluidAmount() * i / tank.getCapacity(); } @@ -149,43 +143,15 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme //shit i don't know man @Override public abstract void updateEntity(); - - @Deprecated public void updateGauge(int val, int id, int range) { - if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, val, id), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); - } - @Deprecated public void processGauge(int val, int id) { } - - @Deprecated public void networkPack(NBTTagCompound nbt, int range) { - nbt.setBoolean("muffled", muffled); - if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); - } - - @Deprecated - public void networkUnpack(NBTTagCompound nbt) { - this.muffled = nbt.getBoolean("muffled"); - } - - /** Sends a sync packet that uses ByteBuf for efficient information-cramming */ - public void networkPackNT(int range) { - if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); - } - @Override public void serialize(ByteBuf buf) { - buf.writeBoolean(muffled); - } - - @Override public void deserialize(ByteBuf buf) { - this.muffled = buf.readBoolean(); - } - @Deprecated public void handleButtonPacket(int value, int meta) { } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); NBTTagList list = nbt.getTagList("items", 10); - + for(int i = 0; i < list.tagCount(); i++) { NBTTagCompound nbt1 = list.getCompoundTagAt(i); @@ -196,12 +162,12 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme } } } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); NBTTagList list = new NBTTagList(); - + for(int i = 0; i < slots.length; i++) { if(slots[i] != null) @@ -214,7 +180,7 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme } nbt.setTag("items", list); } - + public void updateRedstoneConnection(DirPos pos) { int x = pos.getX(); diff --git a/src/main/java/com/hbm/tileentity/TileEntityTickingBase.java b/src/main/java/com/hbm/tileentity/TileEntityTickingBase.java index 1d1871c2e..2924a3467 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityTickingBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityTickingBase.java @@ -1,20 +1,13 @@ package com.hbm.tileentity; -import com.hbm.packet.BufPacket; -import com.hbm.packet.NBTPacket; -import com.hbm.packet.PacketDispatcher; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import io.netty.buffer.ByteBuf; -import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.fluids.FluidTank; -public abstract class TileEntityTickingBase extends TileEntityLoadedBase implements INBTPacketReceiver, IBufPacketReceiver { - +public abstract class TileEntityTickingBase extends TileEntityLoadedBase { + public TileEntityTickingBase() { } - + public abstract String getInventoryName(); - + public int getGaugeScaled(int i, FluidTank tank) { return tank.getFluidAmount() * i / tank.getCapacity(); } @@ -25,27 +18,8 @@ public abstract class TileEntityTickingBase extends TileEntityLoadedBase impleme //shit i don't know man @Override public abstract void updateEntity(); - - @Deprecated public void networkPack(NBTTagCompound nbt, int range) { - if(!worldObj.isRemote) - PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); - } - - @Deprecated public void networkUnpack(NBTTagCompound nbt) { } - @Deprecated public void handleButtonPacket(int value, int meta) { } - - public void networkPackNT(int range) { - if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); - } - @Override public void serialize(ByteBuf buf) { - buf.writeBoolean(muffled); - } - - @Override public void deserialize(ByteBuf buf) { - this.muffled = buf.readBoolean(); - } } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index d61e10560..f2c4a50c0 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -11,10 +11,10 @@ import com.hbm.blocks.generic.BlockDynamicSlag.TileEntitySlag; import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; import com.hbm.blocks.generic.BlockGlyphidSpawner.TileEntityGlpyhidSpawner; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; -import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre; import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; import com.hbm.blocks.generic.BlockPlushie.TileEntityPlushie; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; +import com.hbm.blocks.generic.BlockSupplyCrate.TileEntitySupplyCrate; import com.hbm.blocks.generic.PartEmitter.TileEntityPartEmitter; import com.hbm.blocks.machine.BlockICF.TileEntityBlockICF; import com.hbm.blocks.machine.BlockPWR.TileEntityBlockPWR; @@ -34,6 +34,7 @@ import com.hbm.blocks.rail.RailStandardSwitch.TileEntityRailSwitch; import com.hbm.tileentity.bomb.*; import com.hbm.tileentity.deco.*; import com.hbm.tileentity.machine.*; +import com.hbm.tileentity.machine.albion.*; import com.hbm.tileentity.machine.oil.*; import com.hbm.tileentity.machine.pile.*; import com.hbm.tileentity.machine.rbmk.*; @@ -95,12 +96,14 @@ public class TileMappings { put(TileEntityMachineFluidTank.class, "tileentity_fluid_tank"); put(TileEntityMachineTurbofan.class, "tileentity_machine_turbofan"); put(TileEntityMachineTurbineGas.class, "tileentity_machine_gasturbine"); + put(TileEntityMachineLPW2.class, "tileentity_machine_lpw2"); put(TileEntityCrateTemplate.class, "tileentity_crate_template"); put(TileEntityCrateIron.class, "tileentity_crate_iron"); put(TileEntityCrateSteel.class, "tileentity_crate_steel"); put(TileEntityCrateDesh.class, "tileentity_crate_desh"); put(TileEntityMassStorage.class, "tileentity_mass_storage"); put(TileEntityMachinePress.class, "tileentity_press"); + put(TileEntityMachineAmmoPress.class, "tileentity_ammo_press"); put(TileEntityMachineSiren.class, "tileentity_siren"); put(TileEntityMachineSPP.class, "tileentity_spp"); put(TileEntityMachineRadGen.class, "tileentity_radgen"); @@ -149,6 +152,8 @@ public class TileMappings { put(TileEntityBarrel.class, "tileentity_fluid_barrel"); put(TileEntityCyberCrab.class, "tileentity_crabs"); put(TileEntitySoyuzCapsule.class, "tileentity_soyuz_capsule"); + put(TileEntitySupplyCrate.class, "tileentity_supply_crate"); + put(TileEntityMachineRotaryFurnace.class, "tileentity_rotary_furnace"); put(TileEntityMachineCrystallizer.class, "tileentity_acidomatic"); put(TileEntitySoyuzStruct.class, "tileentity_soyuz_struct"); put(TileEntityITERStruct.class, "tileentity_iter_struct"); @@ -170,6 +175,12 @@ public class TileMappings { put(TileEntityHadronDiode.class, "tileentity_hadron_diode"); put(TileEntityHadronPower.class, "tileentity_hadron_power"); put(TileEntityHadron.class, "tileentity_hadron"); + put(TileEntityPASource.class, "tileentity_pa_source"); + put(TileEntityPABeamline.class, "tileentity_pa_beamline"); + put(TileEntityPARFC.class, "tileentity_pa_rfc"); + put(TileEntityPAQuadrupole.class, "tileentity_pa_quadrupole"); + put(TileEntityPADipole.class, "tileentity_pa_dipole"); + put(TileEntityPADetector.class, "tileentity_pa_detector"); put(TileEntitySolarBoiler.class, "tileentity_solarboiler"); put(TileEntitySolarMirror.class, "tileentity_solarmirror"); put(TileEntityMachineDetector.class, "tileentity_he_detector"); @@ -214,7 +225,6 @@ public class TileMappings { put(TileEntityProxyCombo.class, "tileentity_proxy_combo"); put(TileEntityProxyConductor.class, "tileentity_proxy_conductor"); - put(TileEntityRandomOre.class, "tileentity_mother_of_all_ores"); put(TileEntityBedrockOre.class, "tileentity_bedrock_ore"); put(TileEntityBlockPWR.class, "tileentity_block_pwr"); @@ -339,6 +349,7 @@ public class TileMappings { put(TileEntityMachineCatalyticReformer.class, "tileentity_catalytic_reformer"); put(TileEntityMachineHydrotreater.class, "tileentity_hydrotreater"); put(TileEntityMachineCoker.class, "tileentity_coker"); + put(TileEntityMachinePyroOven.class, "tileentity_pyrooven"); put(TileEntityChimneyBrick.class, "tileentity_chimney_brick"); put(TileEntityChimneyIndustrial.class, "tileentity_chimney_industrial"); diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityBombMulti.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityBombMulti.java index 0eeae10f0..2955f12f4 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityBombMulti.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityBombMulti.java @@ -7,7 +7,6 @@ import com.hbm.tileentity.IGUIProvider; 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.init.Blocks; import net.minecraft.init.Items; @@ -290,7 +289,7 @@ public class TileEntityBombMulti extends TileEntity implements ISidedInventory, @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIBombMulti(player.inventory, this); } } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityCharge.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityCharge.java index 6467ac91e..81017a41a 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityCharge.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityCharge.java @@ -1,65 +1,64 @@ package com.hbm.tileentity.bomb; import com.hbm.blocks.bomb.BlockChargeBase; -import com.hbm.packet.NBTPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.INBTPacketReceiver; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; +import com.hbm.tileentity.TileEntityLoadedBase; +import io.netty.buffer.ByteBuf; + +public class TileEntityCharge extends TileEntityLoadedBase { -public class TileEntityCharge extends TileEntity implements INBTPacketReceiver { - public boolean started; public int timer; @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + if(started) { timer--; - + if(timer % 20 == 0 && timer > 0) worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:weapon.fstbmbPing", 1.0F, 1.0F); - + if(timer <= 0) { ((BlockChargeBase)this.getBlockType()).explode(worldObj, xCoord, yCoord, zCoord); } } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("timer", timer); - data.setBoolean("started", started); - PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(data, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 100)); + + networkPackNT(100); } } @Override - public void networkUnpack(NBTTagCompound data) { - timer = data.getInteger("timer"); - started = data.getBoolean("started"); + public void serialize(ByteBuf buf) { + buf.writeInt(this.timer); + buf.writeBoolean(this.started); } - + + @Override + public void deserialize(ByteBuf buf) { + this.timer = buf.readInt(); + this.started = buf.readBoolean(); + } + public String getMinutes() { - + String mins = "" + (timer / 1200); - + if(mins.length() == 1) mins = "0" + mins; - + return mins; } - + public String getSeconds() { - + String mins = "" + ((timer / 20) % 60); - + if(mins.length() == 1) mins = "0" + mins; - + return mins; } } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java index 25ad4ef2a..12dd8bab2 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java @@ -16,9 +16,8 @@ import com.hbm.items.weapon.ItemCustomMissilePart.FuelType; import com.hbm.items.weapon.ItemCustomMissilePart.PartSize; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; -import com.hbm.packet.BufPacket; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TEMissileMultipartPacket; +import com.hbm.packet.toclient.TEMissileMultipartPacket; import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IRadarCommandReceiver; @@ -32,7 +31,6 @@ import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -56,7 +54,7 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I public int solid; public static final int maxSolid = 25000; public FluidTank[] tanks; - + public MissileStruct load; private static final int[] access = new int[] { 0 }; @@ -159,11 +157,11 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I return null; } } - + public long getPowerScaled(long i) { return (power * i) / maxPower; } - + public int getSolidScaled(int i) { return (solid * i) / maxSolid; } @@ -172,27 +170,27 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I public void updateEntity() { if (!worldObj.isRemote) { - + updateTypes(); tanks[0].loadTank(2, 6, slots); tanks[1].loadTank(3, 7, slots); - + power = Library.chargeTEFromItems(slots, 5, power, maxPower); - + if(slots[4] != null && slots[4].getItem() == ModItems.rocket_fuel && solid + 250 <= maxSolid) { - + this.decrStackSize(4, 1); solid += 250; } if(worldObj.getTotalWorldTime() % 20 == 0) this.updateConnections(); - - PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - + + networkPackNT(50); + MissileStruct multipart = getStruct(slots[0]); - + if(multipart != null) PacketDispatcher.wrapper.sendToAllAround(new TEMissileMultipartPacket(xCoord, yCoord, zCoord, multipart), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 250)); else @@ -201,7 +199,7 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I outer: for(int x = -1; x <= 1; x++) { for(int z = -1; z <= 1; z++) { - + if(worldObj.isBlockIndirectlyGettingPowered(xCoord + x, yCoord, zCoord + z) && canLaunch()) { launchFromDesignator(); break outer; @@ -209,22 +207,30 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I } } } else { - + List entities = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord - 0.5, yCoord, zCoord - 0.5, xCoord + 1.5, yCoord + 10, zCoord + 1.5)); - + for(Entity e : entities) { - + if(e instanceof EntityMissileCustom) { - + for(int i = 0; i < 15; i++) { - + boolean dir = worldObj.rand.nextBoolean(); float moX = (float) (dir ? 0 : worldObj.rand.nextGaussian() * 0.5F); float moZ = (float) (!dir ? 0 : worldObj.rand.nextGaussian() * 0.5F); - - MainRegistry.proxy.spawnParticle(xCoord + 0.5, yCoord + 0.25, zCoord + 0.5, "launchsmoke", new float[] {moX, 0, moZ}); + + NBTTagCompound data = new NBTTagCompound(); + data.setDouble("posX", xCoord + 0.5); + data.setDouble("posY", yCoord + 0.25); + data.setDouble("posZ", zCoord + 0.5); + data.setString("type", "launchSmoke"); + data.setDouble("moX", moX); + data.setDouble("moY", 0); + data.setDouble("moZ", moZ); + MainRegistry.proxy.effectNT(data); } - + break; } } @@ -237,23 +243,23 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I tanks[0].serialize(buf); tanks[1].serialize(buf); } - + @Override public void deserialize(ByteBuf buf) { this.power = buf.readLong(); this.solid = buf.readInt(); tanks[0].deserialize(buf); tanks[1].deserialize(buf); } - + private void updateConnections() { - + for(DirPos pos : getConPos()) { this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - + public DirPos[] getConPos() { return new DirPos[] { new DirPos(xCoord + 2, yCoord, zCoord + 1, Library.POS_X), @@ -270,12 +276,12 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I new DirPos(xCoord - 1, yCoord - 1, zCoord - 1, Library.NEG_Y) }; } - + public boolean canLaunch() { - + if(power >= maxPower * 0.75 && isMissileValid() && hasDesignator() && hasFuel()) return true; - + return false; } @@ -290,66 +296,66 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I this.launchTo(x, z); return true; } - + public void launchFromDesignator() { if(slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) { IDesignatorItem designator = (IDesignatorItem) slots[1].getItem(); - + if(designator.isReady(worldObj, slots[1], xCoord, yCoord, zCoord)) { Vec3 coords = designator.getCoords(worldObj, slots[1], xCoord, yCoord, zCoord); int tX = (int) Math.floor(coords.xCoord); int tZ = (int) Math.floor(coords.zCoord); - + this.launchTo(tX, tZ); } } } - + public void launchTo(int tX, int tZ) { worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:weapon.missileTakeOff", 10.0F, 1.0F); - + ItemCustomMissilePart chip = (ItemCustomMissilePart) Item.getItemById(ItemCustomMissile.readFromNBT(slots[0], "chip")); float c = (Float)chip.attributes[0]; float f = 1.0F; - + if(getStruct(slots[0]).fins != null) { ItemCustomMissilePart fins = (ItemCustomMissilePart) Item.getItemById(ItemCustomMissile.readFromNBT(slots[0], "stability")); f = (Float) fins.attributes[0]; } - + Vec3 target = Vec3.createVectorHelper(xCoord - tX, 0, zCoord - tZ); target.xCoord *= c * f; target.zCoord *= c * f; - + target.rotateAroundY(worldObj.rand.nextFloat() * 360); - + EntityMissileCustom missile = new EntityMissileCustom(worldObj, xCoord + 0.5F, yCoord + 2.5F, zCoord + 0.5F, tX + (int)target.xCoord, tZ + (int)target.zCoord, getStruct(slots[0])); worldObj.spawnEntityInWorld(missile); - + subtractFuel(); - + slots[0] = null; } - + private boolean hasFuel() { return solidState() != 0 && liquidState() != 0 && oxidizerState() != 0; } - + private void subtractFuel() { - + MissileStruct multipart = getStruct(slots[0]); - + if(multipart == null || multipart.fuselage == null) return; - + ItemCustomMissilePart fuselage = (ItemCustomMissilePart)multipart.fuselage; - + float f = (Float)fuselage.attributes[1]; int fuel = (int)f; - + switch((FuelType)fuselage.attributes[0]) { case KEROSENE: tanks[0].setFill(tanks[0].getFill() - fuel); @@ -370,114 +376,114 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I this.solid -= fuel; break; default: break; } - + this.power -= maxPower * 0.75; } - + public static MissileStruct getStruct(ItemStack stack) { - + return ItemCustomMissile.getStruct(stack); } - + public boolean isMissileValid() { - + MissileStruct multipart = getStruct(slots[0]); - + if(multipart == null || multipart.fuselage == null) return false; - + ItemCustomMissilePart fuselage = (ItemCustomMissilePart)multipart.fuselage; - + return fuselage.top == PartSize.SIZE_10; } - + public boolean hasDesignator() { - + if(slots[1] != null && slots[1].getItem() instanceof IDesignatorItem && ((IDesignatorItem)slots[1].getItem()).isReady(worldObj, slots[1], xCoord, yCoord, zCoord)) { return true; } - + return false; } - + public int solidState() { - + MissileStruct multipart = getStruct(slots[0]); - + if(multipart == null || multipart.fuselage == null) return -1; - + ItemCustomMissilePart fuselage = (ItemCustomMissilePart)multipart.fuselage; - + if((FuelType)fuselage.attributes[0] == FuelType.SOLID) { - + if(solid >= (Float)fuselage.attributes[1]) return 1; else return 0; } - + return -1; } - + public int liquidState() { - + MissileStruct multipart = getStruct(slots[0]); - + if(multipart == null || multipart.fuselage == null) return -1; - + ItemCustomMissilePart fuselage = (ItemCustomMissilePart)multipart.fuselage; - + switch((FuelType)fuselage.attributes[0]) { case KEROSENE: case HYDROGEN: case XENON: case BALEFIRE: - + if(tanks[0].getFill() >= (Float)fuselage.attributes[1]) return 1; else return 0; default: break; } - + return -1; } - + public int oxidizerState() { - + MissileStruct multipart = getStruct(slots[0]); - + if(multipart == null || multipart.fuselage == null) return -1; - + ItemCustomMissilePart fuselage = (ItemCustomMissilePart)multipart.fuselage; - + switch((FuelType)fuselage.attributes[0]) { case KEROSENE: case HYDROGEN: case BALEFIRE: - + if(tanks[1].getFill() >= (Float)fuselage.attributes[1]) return 1; else return 0; default: break; } - + return -1; } - + public void updateTypes() { - + MissileStruct multipart = getStruct(slots[0]); - + if(multipart == null || multipart.fuselage == null) return; - + ItemCustomMissilePart fuselage = (ItemCustomMissilePart)multipart.fuselage; - + switch((FuelType)fuselage.attributes[0]) { case KEROSENE: tanks[0].setTankType(Fluids.KEROSENE); @@ -522,7 +528,7 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + NBTTagList list = new NBTTagList(); tanks[0].writeToNBT(nbt, "fuel"); @@ -560,7 +566,7 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I public AxisAlignedBB getRenderBoundingBox() { return TileEntity.INFINITE_EXTENT_AABB; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() @@ -585,16 +591,16 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I @Override public long transferPower(long power) { - + this.power += power; - + if(this.power > this.getMaxPower()) { - + long overshoot = this.power - this.getMaxPower(); this.power = this.getMaxPower(); return overshoot; } - + return 0; } @@ -625,7 +631,7 @@ public class TileEntityCompactLauncher extends TileEntityLoadedBase implements I @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineCompactLauncher(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityFireworks.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityFireworks.java index be34e001c..ed97928b7 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityFireworks.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityFireworks.java @@ -1,8 +1,8 @@ package com.hbm.tileentity.bomb; import com.hbm.entity.item.EntityFireworks; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java index 0adf91ab8..11650a3ff 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java @@ -18,16 +18,16 @@ public class TileEntityLaunchPad extends TileEntityLaunchPadBase { @Override public boolean isReadyForLaunch() { return delay <= 0; } @Override public double getLaunchOffset() { return 1D; } - + public int delay = 0; @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + if(this.delay > 0) delay--; - + if(!this.isMissileValid() || !this.hasFuel()) { this.delay = 100; } @@ -41,11 +41,11 @@ public class TileEntityLaunchPad extends TileEntityLaunchPadBase { this.state = this.STATE_READY; } } - + } else { - + List entities = worldObj.getEntitiesWithinAABB(EntityMissileBaseNT.class, AxisAlignedBB.getBoundingBox(xCoord - 0.5, yCoord, zCoord - 0.5, xCoord + 1.5, yCoord + 10, zCoord + 1.5)); - + if(!entities.isEmpty()) { for(int i = 0; i < 15; i++) { @@ -54,12 +54,20 @@ public class TileEntityLaunchPad extends TileEntityLaunchPadBase { if(worldObj.rand.nextBoolean()) dir = dir.getRotation(ForgeDirection.UP); float moX = (float) (worldObj.rand.nextGaussian() * 0.15F + 0.75) * dir.offsetX; float moZ = (float) (worldObj.rand.nextGaussian() * 0.15F + 0.75) * dir.offsetZ; - - MainRegistry.proxy.spawnParticle(xCoord + 0.5, yCoord + 0.25, zCoord + 0.5, "launchsmoke", new float[] {moX, 0, moZ}); + + NBTTagCompound data = new NBTTagCompound(); + data.setDouble("posX", xCoord + 0.5); + data.setDouble("posY", yCoord + 0.25); + data.setDouble("posZ", zCoord + 0.5); + data.setString("type", "launchSmoke"); + data.setDouble("moX", moX); + data.setDouble("moY", 0); + data.setDouble("moZ", moZ); + MainRegistry.proxy.effectNT(data); } } } - + super.updateEntity(); } @@ -68,7 +76,7 @@ public class TileEntityLaunchPad extends TileEntityLaunchPadBase { super.finalizeLaunch(missile); this.delay = 100; } - + @Override public DirPos[] getConPos() { return new DirPos[] { @@ -82,24 +90,24 @@ public class TileEntityLaunchPad extends TileEntityLaunchPadBase { new DirPos(xCoord + 1, yCoord, zCoord - 2, Library.NEG_Z) }; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); this.delay = nbt.getInteger("delay"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setInteger("delay", delay); } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 2, @@ -110,10 +118,10 @@ public class TileEntityLaunchPad extends TileEntityLaunchPadBase { zCoord + 3 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java index ea1974511..997cd1f07 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java @@ -5,6 +5,7 @@ import java.util.HashSet; import java.util.Set; import com.hbm.handler.CompatHandler; +import com.hbm.tileentity.IFluidCopiable; import cpw.mods.fml.common.Optional; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; @@ -43,7 +44,6 @@ import api.hbm.item.IDesignatorItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -56,7 +56,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IRadarCommandReceiver, SimpleComponent, CompatHandler.OCComponent { +public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IRadarCommandReceiver, SimpleComponent, CompatHandler.OCComponent, IFluidCopiable { /** Automatic instantiation of generic missiles, i.e. everything that both extends EntityMissileBaseNT and needs a designator */ public static final HashMap> missiles = new HashMap(); @@ -282,7 +282,7 @@ public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase impl @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUILaunchPadLarge(player.inventory, this); } @@ -555,4 +555,14 @@ public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase impl } throw new NoSuchMethodException(); } + + @Override + public int[] getFluidIDToCopy() { + return new int[]{tanks[0].getTankType().getID(), tanks[1].getTankType().getID()}; + } + + @Override + public FluidTank getTankToPaste() { + return null; + } } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadLarge.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadLarge.java index 55a9dac77..ef3868d79 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadLarge.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadLarge.java @@ -37,10 +37,10 @@ public class TileEntityLaunchPadLarge extends TileEntityLaunchPadBase { private int sync; /** Delay between erector movements */ public int delay = 20; - + private AudioWrapper audioLift; private AudioWrapper audioErector; - + protected boolean liftMoving = false; protected boolean erectorMoving = false; @@ -49,26 +49,26 @@ public class TileEntityLaunchPadLarge extends TileEntityLaunchPadBase { @Override public void updateEntity() { - + if(!worldObj.isRemote) { this.prevLift = this.lift; this.prevErector = this.erector; - + float erectorSpeed = 1.5F; float liftSpeed = 0.025F; - + if(this.isMissileValid()) { if(slots[0].getItem() instanceof ItemMissile) { ItemMissile missile = (ItemMissile) slots[0].getItem(); this.formFactor = missile.formFactor.ordinal(); - + if(missile.formFactor == MissileFormFactor.ATLAS || missile.formFactor == MissileFormFactor.HUGE) { erectorSpeed /= 2F; liftSpeed /= 2F; } } - + if(this.erector == 90F && this.lift == 1F) { this.readyToLoad = true; } @@ -77,16 +77,16 @@ public class TileEntityLaunchPadLarge extends TileEntityLaunchPadBase { erected = false; delay = 20; } - + if(this.power >= 75_000) { if(delay > 0) { delay--; - + if(delay < 10 && scheduleErect) { this.erected = true; this.scheduleErect = false; } - + // if there is no missile or the missile isn't ready (i.e. the erector hasn't returned to zero position yet), retract if(slots[0] == null || !readyToLoad) { //fold back erector @@ -103,13 +103,13 @@ public class TileEntityLaunchPadLarge extends TileEntityLaunchPadBase { } } } - + } else { - + //only extend if the erector isn't up yet and the missile can be loaded if(!erected && readyToLoad) { this.state = this.STATE_LOADING; - + //first, rotate the erector if(erector != 0F) { erector = Math.max(erector - erectorSpeed, 0F); @@ -140,7 +140,7 @@ public class TileEntityLaunchPadLarge extends TileEntityLaunchPadBase { } } } - + if(!this.hasFuel() || !this.isMissileValid()) this.state = this.STATE_MISSING; if(this.erected && this.canLaunch()) this.state = this.STATE_READY; @@ -153,11 +153,11 @@ public class TileEntityLaunchPadLarge extends TileEntityLaunchPadBase { if(prevLiftMoving && !this.liftMoving) worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:door.wgh_stop", 2F, 1F); if(prevErectorMoving && !this.erectorMoving) worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:door.garage_stop", 2F, 1F); - + } else { this.prevLift = this.lift; this.prevErector = this.erector; - + if(this.sync > 0) { this.lift = this.lift + ((this.syncLift - this.lift) / (float) this.sync); this.erector = this.erector + ((this.syncErector - this.erector) / (float) this.sync); @@ -166,7 +166,7 @@ public class TileEntityLaunchPadLarge extends TileEntityLaunchPadBase { this.lift = this.syncLift; this.erector = this.syncErector; } - + if(this.liftMoving) { if(this.audioLift == null || !this.audioLift.isPlaying()) { this.audioLift = MainRegistry.proxy.getLoopedSound("hbm:door.wgh_start", xCoord, yCoord, zCoord, 0.75F, 25F, 1.0F, 5); @@ -179,7 +179,7 @@ public class TileEntityLaunchPadLarge extends TileEntityLaunchPadBase { this.audioLift = null; } } - + if(this.erectorMoving) { if(this.audioErector == null || !this.audioErector.isPlaying()) { this.audioErector = MainRegistry.proxy.getLoopedSound("hbm:door.garage_move", xCoord, yCoord, zCoord, 1.5F, 25F, 1.0F, 5); @@ -192,7 +192,7 @@ public class TileEntityLaunchPadLarge extends TileEntityLaunchPadBase { this.audioErector = null; } } - + if(this.erected && (this.formFactor == MissileFormFactor.HUGE.ordinal() || this.formFactor == MissileFormFactor.ATLAS.ordinal()) && this.tanks[1].getFill() > 0) { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "tower"); @@ -208,9 +208,9 @@ public class TileEntityLaunchPadLarge extends TileEntityLaunchPadBase { data.setFloat("strafe", 0.05F); for(int i = 0; i < 3; i++) MainRegistry.proxy.effectNT(data); } - + List entities = worldObj.getEntitiesWithinAABB(EntityMissileBaseNT.class, AxisAlignedBB.getBoundingBox(xCoord - 0.5, yCoord, zCoord - 0.5, xCoord + 1.5, yCoord + 10, zCoord + 1.5)); - + if(!entities.isEmpty()) { for(int i = 0; i < 15; i++) { @@ -218,19 +218,27 @@ public class TileEntityLaunchPadLarge extends TileEntityLaunchPadBase { if(worldObj.rand.nextBoolean()) dir = dir.getOpposite(); float moX = (float) (worldObj.rand.nextGaussian() * 0.15F + 0.75) * dir.offsetX; float moZ = (float) (worldObj.rand.nextGaussian() * 0.15F + 0.75) * dir.offsetZ; - - MainRegistry.proxy.spawnParticle(xCoord + 0.5, yCoord + 0.25, zCoord + 0.5, "launchsmoke", new float[] {moX, 0, moZ}); + + NBTTagCompound data = new NBTTagCompound(); + data.setDouble("posX", xCoord + 0.5); + data.setDouble("posY", yCoord + 0.25); + data.setDouble("posZ", zCoord + 0.5); + data.setString("type", "launchSmoke"); + data.setDouble("moX", moX); + data.setDouble("moY", 0); + data.setDouble("moZ", moZ); + MainRegistry.proxy.effectNT(data); } } } - + super.updateEntity(); } @Override public void serialize(ByteBuf buf) { super.serialize(buf); - + buf.writeBoolean(this.liftMoving); buf.writeBoolean(this.erectorMoving); buf.writeBoolean(this.erected); @@ -239,7 +247,7 @@ public class TileEntityLaunchPadLarge extends TileEntityLaunchPadBase { buf.writeFloat(this.lift); buf.writeFloat(this.erector); } - + @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); @@ -251,12 +259,12 @@ public class TileEntityLaunchPadLarge extends TileEntityLaunchPadBase { this.formFactor = buf.readByte(); this.syncLift = buf.readFloat(); this.syncErector = buf.readFloat(); - + if(this.lift != this.syncLift || this.erector != this.syncErector) { this.sync = 3; } } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -267,7 +275,7 @@ public class TileEntityLaunchPadLarge extends TileEntityLaunchPadBase { this.erector = nbt.getFloat("erector"); this.formFactor = nbt.getInteger("formFactor"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -284,7 +292,7 @@ public class TileEntityLaunchPadLarge extends TileEntityLaunchPadBase { super.finalizeLaunch(missile); this.erected = false; } - + @Override public DirPos[] getConPos() { return new DirPos[] { @@ -298,12 +306,12 @@ public class TileEntityLaunchPadLarge extends TileEntityLaunchPadBase { new DirPos(xCoord + 2, yCoord, zCoord - 5, Library.NEG_Z) }; } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 10, @@ -314,10 +322,10 @@ public class TileEntityLaunchPadLarge extends TileEntityLaunchPadBase { zCoord + 11 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadRusted.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadRusted.java index cdfa9eca8..973a078da 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadRusted.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadRusted.java @@ -21,7 +21,6 @@ import api.hbm.item.IDesignatorItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -36,9 +35,9 @@ public class TileEntityLaunchPadRusted extends TileEntityMachineBase implements public int prevRedstonePower; public int redstonePower; public Set activatedBlocks = new HashSet<>(4); - + public boolean missileLoaded; - + public TileEntityLaunchPadRusted() { super(4); } @@ -50,19 +49,19 @@ public class TileEntityLaunchPadRusted extends TileEntityMachineBase implements @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + if(this.redstonePower > 0 && this.prevRedstonePower <= 0) { this.launch(); } - + this.prevRedstonePower = this.redstonePower; this.networkPackNT(250); } else { - + List entities = worldObj.getEntitiesWithinAABB(EntityMissileBaseNT.class, AxisAlignedBB.getBoundingBox(xCoord - 0.5, yCoord, zCoord - 0.5, xCoord + 1.5, yCoord + 10, zCoord + 1.5)); - + if(!entities.isEmpty()) { for(int i = 0; i < 15; i++) { @@ -71,8 +70,17 @@ public class TileEntityLaunchPadRusted extends TileEntityMachineBase implements if(worldObj.rand.nextBoolean()) dir = dir.getRotation(ForgeDirection.UP); float moX = (float) (worldObj.rand.nextGaussian() * 0.15F + 0.75) * dir.offsetX; float moZ = (float) (worldObj.rand.nextGaussian() * 0.15F + 0.75) * dir.offsetZ; - - MainRegistry.proxy.spawnParticle(xCoord + 0.5, yCoord + 0.25, zCoord + 0.5, "launchsmoke", new float[] {moX, 0, moZ}); + + NBTTagCompound data = new NBTTagCompound(); + data.setDouble("posX", xCoord + 0.5); + data.setDouble("posY", yCoord + 0.25); + data.setDouble("posZ", zCoord + 0.5); + data.setString("type", "launchSmoke"); + data.setDouble("moX", moX); + data.setDouble("moY", 0); + data.setDouble("moZ", moZ); + MainRegistry.proxy.effectNT(data); + } } } @@ -83,7 +91,7 @@ public class TileEntityLaunchPadRusted extends TileEntityMachineBase implements super.serialize(buf); buf.writeBoolean(this.missileLoaded); } - + @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); @@ -91,18 +99,18 @@ public class TileEntityLaunchPadRusted extends TileEntityMachineBase implements } public BombReturnCode launch() { - + if(slots[1] != null && slots[2] != null && slots[3] != null && this.missileLoaded) { if(slots[1].getItem() == ModItems.launch_code && slots[2].getItem() == ModItems.launch_key) { if(slots[3] != null && slots[3].getItem() instanceof IDesignatorItem) { IDesignatorItem designator = (IDesignatorItem) slots[3].getItem(); - + if(!designator.isReady(worldObj, slots[3], xCoord, yCoord, zCoord)) return BombReturnCode.ERROR_MISSING_COMPONENT; - + Vec3 coords = designator.getCoords(worldObj, slots[3], xCoord, yCoord, zCoord); int targetX = (int) Math.floor(coords.xCoord); int targetZ = (int) Math.floor(coords.zCoord); - + EntityMissileDoomsdayRusted missile = new EntityMissileDoomsdayRusted(worldObj, xCoord + 0.5F, yCoord + 1F, zCoord + 0.5F, targetX, targetZ); worldObj.spawnEntityInWorld(missile); TrackerUtil.setTrackingRange(worldObj, missile, 500); @@ -110,19 +118,19 @@ public class TileEntityLaunchPadRusted extends TileEntityMachineBase implements this.missileLoaded = false; this.decrStackSize(1, 1); this.markDirty(); - + return BombReturnCode.LAUNCHED; } } } - + return BombReturnCode.ERROR_MISSING_COMPONENT; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - + this.missileLoaded = nbt.getBoolean("missileLoaded"); this.redstonePower = nbt.getInteger("redstonePower"); @@ -133,11 +141,11 @@ public class TileEntityLaunchPadRusted extends TileEntityMachineBase implements this.activatedBlocks.add(new BlockPos(activatedBlocks.getInteger("x" + i), activatedBlocks.getInteger("y" + i), activatedBlocks.getInteger("z" + i))); } } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + nbt.setBoolean("missileLoaded", missileLoaded); nbt.setInteger("redstonePower", redstonePower); @@ -173,10 +181,10 @@ public class TileEntityLaunchPadRusted extends TileEntityMachineBase implements } AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 2, @@ -187,10 +195,10 @@ public class TileEntityLaunchPadRusted extends TileEntityMachineBase implements zCoord + 3 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -204,7 +212,7 @@ public class TileEntityLaunchPadRusted extends TileEntityMachineBase implements @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUILaunchPadRusted(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java index 67db230ec..a5e49a870 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java @@ -17,9 +17,8 @@ import com.hbm.items.weapon.ItemCustomMissilePart.FuelType; import com.hbm.items.weapon.ItemCustomMissilePart.PartSize; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; -import com.hbm.packet.BufPacket; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TEMissileMultipartPacket; +import com.hbm.packet.toclient.TEMissileMultipartPacket; import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IRadarCommandReceiver; @@ -36,7 +35,6 @@ import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -63,7 +61,7 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide public FluidTank[] tanks; public PartSize padSize; public int height; - + public MissileStruct load; private static final int[] access = new int[] { 0 }; @@ -168,11 +166,11 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide return null; } } - + public long getPowerScaled(long i) { return (power * i) / maxPower; } - + public int getSolidScaled(int i) { return (solid * i) / maxSolid; } @@ -181,27 +179,27 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide public void updateEntity() { if (!worldObj.isRemote) { - + updateTypes(); - + if(worldObj.getTotalWorldTime() % 20 == 0) this.updateConnections(); tanks[0].loadTank(2, 6, slots); tanks[1].loadTank(3, 7, slots); - + power = Library.chargeTEFromItems(slots, 5, power, maxPower); - + if(slots[4] != null && slots[4].getItem() == ModItems.rocket_fuel && solid + 250 <= maxSolid) { - + this.decrStackSize(4, 1); solid += 250; } - - PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - + + networkPackNT(50); + MissileStruct multipart = getStruct(slots[0]); - + if(multipart != null) PacketDispatcher.wrapper.sendToAllAround(new TEMissileMultipartPacket(xCoord, yCoord, zCoord, multipart), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 250)); else @@ -210,7 +208,7 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide outer: for(int x = -4; x <= 4; x++) { for(int z = -4; z <= 4; z++) { - + if(worldObj.isBlockIndirectlyGettingPowered(xCoord + x, yCoord, zCoord + z) && canLaunch()) { launchFromDesignator(); break outer; @@ -218,17 +216,25 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide } } } else { - + List entities = worldObj.getEntitiesWithinAABB(EntityMissileCustom.class, AxisAlignedBB.getBoundingBox(xCoord - 0.5, yCoord, zCoord - 0.5, xCoord + 1.5, yCoord + 10, zCoord + 1.5)); - + if(!entities.isEmpty()) { for(int i = 0; i < 15; i++) { boolean dir = worldObj.rand.nextBoolean(); float moX = (float) (dir ? 0 : worldObj.rand.nextGaussian() * 0.65F); float moZ = (float) (!dir ? 0 : worldObj.rand.nextGaussian() * 0.65F); - - MainRegistry.proxy.spawnParticle(xCoord + 0.5, yCoord + 0.25, zCoord + 0.5, "launchsmoke", new float[] {moX, 0, moZ}); + + NBTTagCompound data = new NBTTagCompound(); + data.setDouble("posX", xCoord + 0.5); + data.setDouble("posY", yCoord + 0.25); + data.setDouble("posZ", zCoord + 0.5); + data.setString("type", "launchSmoke"); + data.setDouble("moX", moX); + data.setDouble("moY", 0); + data.setDouble("moZ", moZ); + MainRegistry.proxy.effectNT(data); } } } @@ -241,7 +247,7 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide tanks[0].serialize(buf); tanks[1].serialize(buf); } - + @Override public void deserialize(ByteBuf buf) { this.power = buf.readLong(); this.solid = buf.readInt(); @@ -249,7 +255,7 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide tanks[0].deserialize(buf); tanks[1].deserialize(buf); } - + private void updateConnections() { for(int i = -4; i <= 4; i++) { @@ -257,7 +263,7 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide this.trySubscribe(worldObj, xCoord + i, yCoord, zCoord - 5, Library.NEG_Z); this.trySubscribe(worldObj, xCoord + 5, yCoord, zCoord + i, Library.POS_X); this.trySubscribe(worldObj, xCoord - 5, yCoord, zCoord + i, Library.NEG_X); - + for(int j = 0; j < 2; j++) { this.trySubscribe(tanks[j].getTankType(), worldObj, xCoord + i, yCoord, zCoord + 5, Library.POS_Z); this.trySubscribe(tanks[j].getTankType(), worldObj, xCoord + i, yCoord, zCoord - 5, Library.NEG_Z); @@ -266,12 +272,12 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide } } } - + public boolean canLaunch() { - + if(power >= maxPower * 0.75 && isMissileValid() && hasFuel()) return true; - + return false; } @@ -286,66 +292,66 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide this.launchTo(x, z); return true; } - + public void launchFromDesignator() { if(slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) { IDesignatorItem designator = (IDesignatorItem) slots[1].getItem(); - + if(designator.isReady(worldObj, slots[1], xCoord, yCoord, zCoord)) { Vec3 coords = designator.getCoords(worldObj, slots[1], xCoord, yCoord, zCoord); int tX = (int) Math.floor(coords.xCoord); int tZ = (int) Math.floor(coords.zCoord); - + this.launchTo(tX, tZ); } } } - + public void launchTo(int tX, int tZ) { worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:weapon.missileTakeOff", 10.0F, 1.0F); - + ItemCustomMissilePart chip = (ItemCustomMissilePart) Item.getItemById(ItemCustomMissile.readFromNBT(slots[0], "chip")); float c = (Float)chip.attributes[0]; float f = 1.0F; - + if(getStruct(slots[0]).fins != null) { ItemCustomMissilePart fins = (ItemCustomMissilePart) Item.getItemById(ItemCustomMissile.readFromNBT(slots[0], "stability")); f = (Float) fins.attributes[0]; } - + Vec3 target = Vec3.createVectorHelper(xCoord - tX, 0, zCoord - tZ); target.xCoord *= c * f; target.zCoord *= c * f; - + target.rotateAroundY(worldObj.rand.nextFloat() * 360); - + EntityMissileCustom missile = new EntityMissileCustom(worldObj, xCoord + 0.5F, yCoord + 2.5F, zCoord + 0.5F, tX + (int)target.xCoord, tZ + (int)target.zCoord, getStruct(slots[0])); worldObj.spawnEntityInWorld(missile); - + subtractFuel(); - + slots[0] = null; } - + private boolean hasFuel() { return solidState() != 0 && liquidState() != 0 && oxidizerState() != 0; } - + private void subtractFuel() { - + MissileStruct multipart = getStruct(slots[0]); - + if(multipart == null || multipart.fuselage == null) return; - + ItemCustomMissilePart fuselage = (ItemCustomMissilePart)multipart.fuselage; - + float f = (Float)fuselage.attributes[1]; int fuel = (int)f; - + switch((FuelType)fuselage.attributes[0]) { case KEROSENE: tanks[0].setFill(tanks[0].getFill() - fuel); @@ -366,114 +372,114 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide this.solid -= fuel; break; default: break; } - + this.power -= maxPower * 0.75; } - + public static MissileStruct getStruct(ItemStack stack) { - + return ItemCustomMissile.getStruct(stack); } - + public boolean isMissileValid() { - + MissileStruct multipart = getStruct(slots[0]); - + if(multipart == null || multipart.fuselage == null) return false; - + ItemCustomMissilePart fuselage = (ItemCustomMissilePart)multipart.fuselage; - + return fuselage.top == padSize; } - + public boolean hasDesignator() { - + if(slots[1] != null && slots[1].getItem() instanceof IDesignatorItem && ((IDesignatorItem)slots[1].getItem()).isReady(worldObj, slots[1], xCoord, yCoord, zCoord)) { return true; } - + return false; } - + public int solidState() { - + MissileStruct multipart = getStruct(slots[0]); - + if(multipart == null || multipart.fuselage == null) return -1; - + ItemCustomMissilePart fuselage = (ItemCustomMissilePart)multipart.fuselage; - + if((FuelType)fuselage.attributes[0] == FuelType.SOLID) { - + if(solid >= (Float)fuselage.attributes[1]) return 1; else return 0; } - + return -1; } - + public int liquidState() { - + MissileStruct multipart = getStruct(slots[0]); - + if(multipart == null || multipart.fuselage == null) return -1; - + ItemCustomMissilePart fuselage = (ItemCustomMissilePart)multipart.fuselage; - + switch((FuelType)fuselage.attributes[0]) { case KEROSENE: case HYDROGEN: case XENON: case BALEFIRE: - + if(tanks[0].getFill() >= (Float)fuselage.attributes[1]) return 1; else return 0; default: break; } - + return -1; } - + public int oxidizerState() { - + MissileStruct multipart = getStruct(slots[0]); - + if(multipart == null || multipart.fuselage == null) return -1; - + ItemCustomMissilePart fuselage = (ItemCustomMissilePart)multipart.fuselage; - + switch((FuelType)fuselage.attributes[0]) { case KEROSENE: case HYDROGEN: case BALEFIRE: - + if(tanks[1].getFill() >= (Float)fuselage.attributes[1]) return 1; else return 0; default: break; } - + return -1; } - + public void updateTypes() { - + MissileStruct multipart = getStruct(slots[0]); - + if(multipart == null || multipart.fuselage == null) return; - + ItemCustomMissilePart fuselage = (ItemCustomMissilePart)multipart.fuselage; - + switch((FuelType)fuselage.attributes[0]) { case KEROSENE: tanks[0].setTankType(Fluids.KEROSENE); @@ -519,7 +525,7 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + NBTTagList list = new NBTTagList(); tanks[0].writeToNBT(nbt, "fuel"); @@ -553,12 +559,12 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide public boolean canExtractItem(int i, ItemStack itemStack, int j) { return false; } - + @Override public AxisAlignedBB getRenderBoundingBox() { return TileEntity.INFINITE_EXTENT_AABB; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() @@ -580,19 +586,19 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide public long getMaxPower() { return this.maxPower; } - + @Override public long transferPower(long power) { - + this.power += power; - + if(this.power > this.getMaxPower()) { - + long overshoot = this.power - this.getMaxPower(); this.power = this.getMaxPower(); return overshoot; } - + return 0; } @@ -724,7 +730,7 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineLaunchTable(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java index db18d4bfb..f88b7070b 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java @@ -11,7 +11,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import api.hbm.energymk2.IBatteryItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; @@ -54,22 +54,29 @@ public class TileEntityNukeBalefire extends TileEntityMachineBase implements IGU if(timer <= 0) { explode(); } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("timer", timer); - data.setBoolean("loaded", this.isLoaded()); - data.setBoolean("started", started); - networkPack(data, 250); + + networkPackNT(250); } } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - timer = data.getInteger("timer"); - started = data.getBoolean("started"); - loaded = data.getBoolean("loaded"); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + + buf.writeInt(this.timer); + buf.writeBoolean(this.started); + buf.writeBoolean(this.loaded); } - + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + + this.timer = buf.readInt(); + this.started = buf.readBoolean(); + this.loaded = buf.readBoolean(); + } + public void handleButtonPacket(int value, int meta) { if(meta == 0 && this.isLoaded()) { @@ -186,7 +193,7 @@ public class TileEntityNukeBalefire extends TileEntityMachineBase implements IGU @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUINukeFstbmb(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBoy.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBoy.java index 39a3f4e54..5fdaa194d 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBoy.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBoy.java @@ -7,7 +7,6 @@ import com.hbm.tileentity.IGUIProvider; 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.init.Items; import net.minecraft.inventory.Container; @@ -213,7 +212,7 @@ public class TileEntityNukeBoy extends TileEntity implements ISidedInventory, IG @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUINukeBoy(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeCustom.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeCustom.java index e52ad8dc1..e245c8669 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeCustom.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeCustom.java @@ -12,7 +12,6 @@ import com.hbm.tileentity.IGUIProvider; 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.init.Blocks; import net.minecraft.init.Items; @@ -446,7 +445,7 @@ public class TileEntityNukeCustom extends TileEntity implements ISidedInventory, @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUINukeCustom(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeFleija.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeFleija.java index 9209af0e7..b843bdb3e 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeFleija.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeFleija.java @@ -7,7 +7,6 @@ import com.hbm.tileentity.IGUIProvider; 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.init.Items; import net.minecraft.inventory.Container; @@ -222,7 +221,7 @@ public class TileEntityNukeFleija extends TileEntity implements ISidedInventory, @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUINukeFleija(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeGadget.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeGadget.java index 31e4b24f8..8eb136372 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeGadget.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeGadget.java @@ -7,7 +7,6 @@ import com.hbm.tileentity.IGUIProvider; 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.init.Items; import net.minecraft.inventory.Container; @@ -275,7 +274,7 @@ public class TileEntityNukeGadget extends TileEntity implements ISidedInventory, @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUINukeGadget(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeMan.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeMan.java index 0c208e92e..021789895 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeMan.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeMan.java @@ -7,7 +7,6 @@ import com.hbm.tileentity.IGUIProvider; 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.init.Items; import net.minecraft.inventory.Container; @@ -249,7 +248,7 @@ public class TileEntityNukeMan extends TileEntity implements ISidedInventory, IG @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUINukeMan(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeMike.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeMike.java index eef1a2dc2..1d924acd1 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeMike.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeMike.java @@ -7,7 +7,6 @@ import com.hbm.tileentity.IGUIProvider; 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.init.Items; import net.minecraft.inventory.Container; @@ -234,7 +233,7 @@ public class TileEntityNukeMike extends TileEntity implements ISidedInventory, I @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUINukeMike(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeN2.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeN2.java index 382858356..099807c3a 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeN2.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeN2.java @@ -7,7 +7,6 @@ import com.hbm.tileentity.IGUIProvider; 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.init.Items; import net.minecraft.inventory.Container; @@ -223,7 +222,7 @@ public class TileEntityNukeN2 extends TileEntity implements ISidedInventory, IGU @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUINukeN2(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukePrototype.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukePrototype.java index 3fcc4d460..b3fa2dd11 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukePrototype.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukePrototype.java @@ -8,7 +8,6 @@ import com.hbm.tileentity.IGUIProvider; 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.init.Items; import net.minecraft.inventory.Container; @@ -226,7 +225,7 @@ public class TileEntityNukePrototype extends TileEntity implements ISidedInvento @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUINukePrototype(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeSolinium.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeSolinium.java index 5535654c7..45f5ccbf1 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeSolinium.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeSolinium.java @@ -7,7 +7,6 @@ import com.hbm.tileentity.IGUIProvider; 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.init.Items; import net.minecraft.inventory.Container; @@ -220,7 +219,7 @@ public class TileEntityNukeSolinium extends TileEntity implements ISidedInventor @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUINukeSolinium(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeTsar.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeTsar.java index a604b9271..f01665074 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeTsar.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeTsar.java @@ -7,7 +7,6 @@ import com.hbm.tileentity.IGUIProvider; 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.init.Items; import net.minecraft.inventory.Container; @@ -232,7 +231,7 @@ public class TileEntityNukeTsar extends TileEntity implements ISidedInventory, I @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUINukeTsar(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/deco/TileEntityGeysir.java b/src/main/java/com/hbm/tileentity/deco/TileEntityGeysir.java index 122e52ba3..ac6bfec24 100644 --- a/src/main/java/com/hbm/tileentity/deco/TileEntityGeysir.java +++ b/src/main/java/com/hbm/tileentity/deco/TileEntityGeysir.java @@ -7,8 +7,8 @@ import com.hbm.blocks.ModBlocks; import com.hbm.entity.particle.EntityOrangeFX; import com.hbm.entity.projectile.EntityShrapnel; import com.hbm.entity.projectile.EntityWaterSplash; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; diff --git a/src/main/java/com/hbm/tileentity/deco/TileEntityLanternBehemoth.java b/src/main/java/com/hbm/tileentity/deco/TileEntityLanternBehemoth.java index 758f1727d..eb5e45113 100644 --- a/src/main/java/com/hbm/tileentity/deco/TileEntityLanternBehemoth.java +++ b/src/main/java/com/hbm/tileentity/deco/TileEntityLanternBehemoth.java @@ -13,35 +13,35 @@ import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemCircuit.EnumCircuitType; import com.hbm.items.special.ItemKitCustom; -import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.IRepairable; +import com.hbm.tileentity.TileEntityLoadedBase; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; 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 class TileEntityLanternBehemoth extends TileEntityLoadedBase implements 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) { List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord - 10, yCoord - 10, zCoord - 10, xCoord + 11, yCoord + 11, zCoord + 11)); EntityPlayer first = players.isEmpty() ? null : players.get(0); @@ -56,20 +56,18 @@ public class TileEntityLanternBehemoth extends TileEntity implements INBTPacketR bonus ? 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); } - + if(comTimer >= 0) { comTimer--; } - - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("isBroken", isBroken); - INBTPacketReceiver.networkPack(this, data, 250); + + networkPackNT(250); } } - + @Override public void invalidate() { super.invalidate(); @@ -81,17 +79,22 @@ public class TileEntityLanternBehemoth extends TileEntity implements INBTPacketR } @Override - public void networkUnpack(NBTTagCompound nbt) { - this.isBroken = nbt.getBoolean("isBroken"); + public void serialize(ByteBuf buf) { + buf.writeBoolean(this.isBroken); } - + + @Override + public void deserialize(ByteBuf buf) { + this.isBroken = buf.readBoolean(); + } + @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); @@ -103,11 +106,11 @@ public class TileEntityLanternBehemoth extends TileEntity implements INBTPacketR public boolean isDamaged() { return isBroken; } - + List repair = new ArrayList(); @Override public List getRepairMaterials() { - + if(!repair.isEmpty()) return repair; @@ -124,12 +127,12 @@ public class TileEntityLanternBehemoth extends TileEntity implements INBTPacketR } @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, @@ -140,10 +143,10 @@ public class TileEntityLanternBehemoth extends TileEntity implements INBTPacketR zCoord + 1 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { diff --git a/src/main/java/com/hbm/tileentity/deco/TileEntityTrappedBrick.java b/src/main/java/com/hbm/tileentity/deco/TileEntityTrappedBrick.java index 5dcef1aad..c35d0d795 100644 --- a/src/main/java/com/hbm/tileentity/deco/TileEntityTrappedBrick.java +++ b/src/main/java/com/hbm/tileentity/deco/TileEntityTrappedBrick.java @@ -6,9 +6,7 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.TrappedBrick.Trap; -import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.entity.projectile.EntityRubble; -import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.items.ModItems; import net.minecraft.entity.monster.EntityCaveSpider; @@ -77,11 +75,7 @@ public class TileEntityTrappedBrick extends TileEntity { worldObj.setBlock(xCoord, yCoord - 1 - i, zCoord, ModBlocks.concrete_pillar); break; case POISON_DART: - EntityBulletBaseNT dart = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.G20_CAUSTIC); - dart.setPosition(xCoord + 0.5 + dir.offsetX, yCoord + 0.5, zCoord + 0.5 + dir.offsetZ); - dart.motionX = dir.offsetX; - dart.motionZ = dir.offsetZ; - worldObj.spawnEntityInWorld(dart); + //TBI break; case ZOMBIE: EntityZombie zombie = new EntityZombie(worldObj); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java b/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java index acefaf0f2..b99ea830a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java @@ -15,7 +15,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -103,11 +103,8 @@ public class TileEntityAshpit extends TileEntityMachineBase implements IGUIProvi 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); + + this.networkPackNT(50); } else { this.prevDoorAngle = this.doorAngle; @@ -142,10 +139,19 @@ public class TileEntityAshpit extends TileEntityMachineBase implements IGUIProvi } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - this.playersUsing = nbt.getInteger("playersUsing"); - this.isFull = nbt.getBoolean("isFull"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + + buf.writeInt(this.playersUsing); + buf.writeBoolean(this.isFull); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + + this.playersUsing = buf.readInt(); + this.isFull = buf.readBoolean(); } @Override @@ -212,7 +218,7 @@ public class TileEntityAshpit extends TileEntityMachineBase implements IGUIProvi @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object 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/TileEntityBlastDoor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityBlastDoor.java index e13795a69..d3d78294e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityBlastDoor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityBlastDoor.java @@ -3,7 +3,7 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.DummyBlockBlast; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TEVaultPacket; +import com.hbm.packet.toclient.TEVaultPacket; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -14,19 +14,19 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; public class TileEntityBlastDoor extends TileEntityLockableBase { - + public boolean isOpening = false; //0: closed, 1: opening/closing, 2:open public int state = 0; public long sysTime; private int timer = 0; public boolean redstoned = false; - + @Override public AxisAlignedBB getRenderBoundingBox() { return TileEntity.INFINITE_EXTENT_AABB; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() @@ -36,25 +36,25 @@ public class TileEntityBlastDoor extends TileEntityLockableBase { @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + if(!isLocked() && worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord) || worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord + 6, zCoord)) { - + if(!redstoned) { this.tryToggle(); } redstoned = true; - + } else { redstoned = false; } - + if(state != 1) { timer = 0; } else { timer++; - + if(isOpening) { if(timer >= 0) { removeDummy(xCoord, yCoord + 1, zCoord); @@ -88,20 +88,20 @@ public class TileEntityBlastDoor extends TileEntityLockableBase { placeDummy(xCoord, yCoord + 1, zCoord); } } - + if(timer >= 100) { - + if(isOpening) finishOpen(); else finishClose(); } } - + PacketDispatcher.wrapper.sendToAllAround(new TEVaultPacket(xCoord, yCoord, zCoord, isOpening, state, 0, 0), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 250)); } } - + public void open() { if(state == 0) { PacketDispatcher.wrapper.sendToAllAround(new TEVaultPacket(xCoord, yCoord, zCoord, isOpening, state, 1, 0), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 250)); @@ -112,17 +112,17 @@ public class TileEntityBlastDoor extends TileEntityLockableBase { 0.75F); } } - + public void finishOpen() { state = 2; this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.reactorStop", 0.5F, 1.0F); } - + public void close() { if(state == 2) { - PacketDispatcher.wrapper.sendToAll(new TEVaultPacket(xCoord, yCoord, zCoord, isOpening, state, 1, 0)); + PacketDispatcher.wrapper.sendToAllAround(new TEVaultPacket(xCoord, yCoord, zCoord, isOpening, state, 1, 0), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 250)); isOpening = false; state = 1; @@ -130,116 +130,116 @@ public class TileEntityBlastDoor extends TileEntityLockableBase { 0.75F); } } - + public void finishClose() { state = 0; this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.reactorStop", 0.5F, 1.0F); } - + public void openNeigh() { TileEntity te0 = worldObj.getTileEntity(xCoord + 1, yCoord, zCoord); TileEntity te1 = worldObj.getTileEntity(xCoord - 1, yCoord, zCoord); TileEntity te2 = worldObj.getTileEntity(xCoord, yCoord, zCoord + 1); TileEntity te3 = worldObj.getTileEntity(xCoord, yCoord, zCoord - 1); - + if(te0 instanceof TileEntityBlastDoor) { - + if(((TileEntityBlastDoor)te0).canOpen() && (!((TileEntityBlastDoor)te0).isLocked() || ((TileEntityBlastDoor)te0).lock == lock)) { ((TileEntityBlastDoor)te0).open(); ((TileEntityBlastDoor)te0).openNeigh(); } } - + if(te1 instanceof TileEntityBlastDoor) { - + if(((TileEntityBlastDoor)te1).canOpen() && (!((TileEntityBlastDoor)te1).isLocked() || ((TileEntityBlastDoor)te1).lock == lock)) { ((TileEntityBlastDoor)te1).open(); ((TileEntityBlastDoor)te1).openNeigh(); } } - + if(te2 instanceof TileEntityBlastDoor) { - + if(((TileEntityBlastDoor)te2).canOpen() && (!((TileEntityBlastDoor)te2).isLocked() || ((TileEntityBlastDoor)te2).lock == lock)) { ((TileEntityBlastDoor)te2).open(); ((TileEntityBlastDoor)te2).openNeigh(); } } - + if(te3 instanceof TileEntityBlastDoor) { - + if(((TileEntityBlastDoor)te3).canOpen() && (!((TileEntityBlastDoor)te3).isLocked() || ((TileEntityBlastDoor)te3).lock == lock)) { ((TileEntityBlastDoor)te3).open(); ((TileEntityBlastDoor)te3).openNeigh(); } } } - + @Override public void lock() { super.lock(); lockNeigh(); } - + public void closeNeigh() { TileEntity te0 = worldObj.getTileEntity(xCoord + 1, yCoord, zCoord); TileEntity te1 = worldObj.getTileEntity(xCoord - 1, yCoord, zCoord); TileEntity te2 = worldObj.getTileEntity(xCoord, yCoord, zCoord + 1); TileEntity te3 = worldObj.getTileEntity(xCoord, yCoord, zCoord - 1); - + if(te0 instanceof TileEntityBlastDoor) { - + if(((TileEntityBlastDoor)te0).canClose() && (!((TileEntityBlastDoor)te0).isLocked() || ((TileEntityBlastDoor)te0).lock == lock)) { ((TileEntityBlastDoor)te0).close(); ((TileEntityBlastDoor)te0).closeNeigh(); } } - + if(te1 instanceof TileEntityBlastDoor) { - + if(((TileEntityBlastDoor)te1).canClose() && (!((TileEntityBlastDoor)te1).isLocked() || ((TileEntityBlastDoor)te1).lock == lock)) { ((TileEntityBlastDoor)te1).close(); ((TileEntityBlastDoor)te1).closeNeigh(); } } - + if(te2 instanceof TileEntityBlastDoor) { - + if(((TileEntityBlastDoor)te2).canClose() && (!((TileEntityBlastDoor)te2).isLocked() || ((TileEntityBlastDoor)te2).lock == lock)) { ((TileEntityBlastDoor)te2).close(); ((TileEntityBlastDoor)te2).closeNeigh(); } } - + if(te3 instanceof TileEntityBlastDoor) { - + if(((TileEntityBlastDoor)te3).canClose() && (!((TileEntityBlastDoor)te3).isLocked() || ((TileEntityBlastDoor)te3).lock == lock)) { ((TileEntityBlastDoor)te3).close(); ((TileEntityBlastDoor)te3).closeNeigh(); } } } - + public void lockNeigh() { TileEntity te0 = worldObj.getTileEntity(xCoord + 1, yCoord, zCoord); TileEntity te1 = worldObj.getTileEntity(xCoord - 1, yCoord, zCoord); TileEntity te2 = worldObj.getTileEntity(xCoord, yCoord, zCoord + 1); TileEntity te3 = worldObj.getTileEntity(xCoord, yCoord, zCoord - 1); - + if(te0 instanceof TileEntityBlastDoor) { - + if(!((TileEntityBlastDoor)te0).isLocked()) { ((TileEntityBlastDoor)te0).setPins(this.lock); ((TileEntityBlastDoor)te0).lock(); ((TileEntityBlastDoor)te0).setMod(lockMod); } } - + if(te1 instanceof TileEntityBlastDoor) { if(!((TileEntityBlastDoor)te1).isLocked()) { @@ -248,7 +248,7 @@ public class TileEntityBlastDoor extends TileEntityLockableBase { ((TileEntityBlastDoor)te1).setMod(lockMod); } } - + if(te2 instanceof TileEntityBlastDoor) { if(!((TileEntityBlastDoor)te2).isLocked()) { @@ -257,7 +257,7 @@ public class TileEntityBlastDoor extends TileEntityLockableBase { ((TileEntityBlastDoor)te2).setMod(lockMod); } } - + if(te3 instanceof TileEntityBlastDoor) { if(!((TileEntityBlastDoor)te3).isLocked()) { @@ -267,15 +267,15 @@ public class TileEntityBlastDoor extends TileEntityLockableBase { } } } - + public boolean canOpen() { return state == 0; } - + public boolean canClose() { return state == 2; } - + public void tryToggle() { if(canOpen()) { @@ -286,28 +286,27 @@ public class TileEntityBlastDoor extends TileEntityLockableBase { closeNeigh(); } } - + public boolean placeDummy(int x, int y, int z) { - - if(!worldObj.getBlock(x, y, z).isReplaceable(worldObj, x, y, z)) - return false; - + + if(!worldObj.getBlock(x, y, z).isReplaceable(worldObj, x, y, z)) worldObj.func_147480_a(x, y, z, false); + worldObj.setBlock(x, y, z, ModBlocks.dummy_block_blast); - + TileEntity te = worldObj.getTileEntity(x, y, z); - + if(te instanceof TileEntityDummy) { TileEntityDummy dummy = (TileEntityDummy)te; dummy.targetX = xCoord; dummy.targetY = yCoord; dummy.targetZ = zCoord; } - + return true; } - + public void removeDummy(int x, int y, int z) { - + if(worldObj.getBlock(x, y, z) == ModBlocks.dummy_block_blast) { DummyBlockBlast.safeBreak = true; worldObj.setBlock(x, y, z, Blocks.air); @@ -317,7 +316,7 @@ public class TileEntityBlastDoor extends TileEntityLockableBase { public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - + isOpening = nbt.getBoolean("isOpening"); state = nbt.getInteger("state"); sysTime = nbt.getLong("sysTime"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityBroadcaster.java b/src/main/java/com/hbm/tileentity/machine/TileEntityBroadcaster.java index 0c580bf65..a2f76a030 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityBroadcaster.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityBroadcaster.java @@ -1,38 +1,40 @@ package com.hbm.tileentity.machine; import java.util.List; +import java.util.Random; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.LoopedSoundPacket; -import com.hbm.packet.PacketDispatcher; +import com.hbm.main.MainRegistry; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.TileEntityLoadedBase; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -public class TileEntityBroadcaster extends TileEntity { - +public class TileEntityBroadcaster extends TileEntityLoadedBase { + + private AudioWrapper audio; + @Override public void updateEntity() { - + List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord + 0.5 - 25, yCoord + 0.5 - 25, zCoord + 0.5 - 25, xCoord + 0.5 + 25, yCoord + 0.5 + 25, zCoord + 0.5 + 25)); - + for(int i = 0; i < list.size(); i++) { if(list.get(i) instanceof EntityLivingBase) { EntityLivingBase e = (EntityLivingBase)list.get(i); double d = Math.sqrt(Math.pow(e.posX - (xCoord + 0.5), 2) + Math.pow(e.posY - (yCoord + 0.5), 2) + Math.pow(e.posZ - (zCoord + 0.5), 2)); - + if(d <= 25) { if(e.getActivePotionEffect(Potion.confusion) == null || e.getActivePotionEffect(Potion.confusion).getDuration() < 100) e.addPotionEffect(new PotionEffect(Potion.confusion.id, 300, 0)); } - + if(d <= 15) { double t = (15 - d) / 15 * 10; e.attackEntityFrom(ModDamageSource.broadcast, (float) t); @@ -40,21 +42,64 @@ public class TileEntityBroadcaster extends TileEntity { } } - if(!worldObj.isRemote) { - PacketDispatcher.wrapper.sendToAllAround(new LoopedSoundPacket(xCoord, yCoord, zCoord), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 150)); + if (worldObj.isRemote) { + if(audio == null) { + audio = createAudioLoop(); + audio.startSound(); + } else if(!audio.isPlaying()) { + audio = rebootAudio(audio); + } + + audio.keepAlive(); } } + + @Override + public void onChunkUnload() { + super.onChunkUnload(); + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + @Override + public void invalidate() { + super.invalidate(); + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + @Override + public AudioWrapper createAudioLoop() { + Random rand = new Random(xCoord + yCoord + zCoord); + return MainRegistry.proxy.getLoopedSound("hbm:block.broadcast" + (rand.nextInt(3) + 1), xCoord, yCoord, zCoord, 25F, 25F, 1.0F, 20); + } + + AxisAlignedBB bb = null; @Override public AxisAlignedBB getRenderBoundingBox() { - return TileEntity.INFINITE_EXTENT_AABB; + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord, + yCoord, + zCoord, + xCoord + 1, + yCoord + 2, + zCoord + 1 + ); + } + + return bb; } @Override @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { + public double getMaxRenderDistanceSquared() { return 65536.0D; } - } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java index 6df1f8bf9..313d19986 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCharger.java @@ -4,72 +4,68 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; -import com.hbm.tileentity.INBTPacketReceiver; -import com.hbm.tileentity.TileEntityLoadedBase; - import api.hbm.energymk2.IBatteryItem; import api.hbm.energymk2.IEnergyReceiverMK2; +import com.hbm.tileentity.IBufPacketReceiver; +import com.hbm.tileentity.TileEntityLoadedBase; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCharger extends TileEntityLoadedBase implements IEnergyReceiverMK2, INBTPacketReceiver { - +public class TileEntityCharger extends TileEntityLoadedBase implements IEnergyReceiverMK2, IBufPacketReceiver { + private List players = new ArrayList(); private long charge = 0; private int lastOp = 0; - + boolean particles = false; - + public int usingTicks; public int lastUsingTicks; public static final int delay = 20; @Override public void updateEntity() { - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()).getOpposite(); - + if(!worldObj.isRemote) { this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ, dir); - + players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord + 0.5, yCoord, zCoord + 0.5, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5).expand(0.5, 0.0, 0.5)); - + charge = 0; - + for(EntityPlayer player : players) { - + for(int i = 0; i < 5; i++) { - + ItemStack stack = player.getEquipmentInSlot(i); - + if(stack != null && stack.getItem() instanceof IBatteryItem) { IBatteryItem battery = (IBatteryItem) stack.getItem(); charge += Math.min(battery.getMaxCharge(stack) - battery.getCharge(stack), battery.getChargeRate()); } } } - + particles = lastOp > 0; - + if(particles) { - + lastOp--; - + if(worldObj.getTotalWorldTime() % 20 == 0) worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "random.fizz", 0.2F, 0.5F); } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("c", charge); - data.setBoolean("p", particles); - INBTPacketReceiver.networkPack(this, data, 50); + + networkPackNT(50); } - + lastUsingTicks = usingTicks; - + if((charge > 0 || particles) && usingTicks < delay) { usingTicks++; if(usingTicks == 2) @@ -80,7 +76,7 @@ public class TileEntityCharger extends TileEntityLoadedBase implements IEnergyRe if(usingTicks == 4) worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "tile.piston.in", 0.5F, 0.5F); } - + if(particles) { Random rand = worldObj.rand; worldObj.spawnParticle("magicCrit", @@ -94,9 +90,15 @@ public class TileEntityCharger extends TileEntityLoadedBase implements IEnergyRe } @Override - public void networkUnpack(NBTTagCompound nbt) { - this.charge = nbt.getLong("c"); - this.particles = nbt.getBoolean("p"); + public void serialize(ByteBuf buf) { + buf.writeLong(this.charge); + buf.writeBoolean(this.particles); + } + + @Override + public void deserialize(ByteBuf buf) { + this.charge = buf.readLong(); + this.particles = buf.readBoolean(); } @Override @@ -111,32 +113,32 @@ public class TileEntityCharger extends TileEntityLoadedBase implements IEnergyRe @Override public void setPower(long power) { } - + @Override public long transferPower(long power) { - + if(this.usingTicks < delay || power == 0) return power; - + for(EntityPlayer player : players) { - + for(int i = 0; i < 5; i++) { - + ItemStack stack = player.getEquipmentInSlot(i); - + if(stack != null && stack.getItem() instanceof IBatteryItem) { IBatteryItem battery = (IBatteryItem) stack.getItem(); - + long toCharge = Math.min(battery.getMaxCharge(stack) - battery.getCharge(stack), battery.getChargeRate()); toCharge = Math.min(toCharge, power / 5); battery.chargeBattery(stack, toCharge); power -= toCharge; - + lastOp = 4; } } } - + return power; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBase.java index 08964ccc8..3638afecb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBase.java @@ -6,28 +6,28 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.Library; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.fluid.IFluidUser; -import net.minecraft.nbt.NBTTagCompound; +import io.netty.buffer.ByteBuf; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public abstract class TileEntityChimneyBase extends TileEntityLoadedBase implements IFluidUser, INBTPacketReceiver { +public abstract class TileEntityChimneyBase extends TileEntityLoadedBase implements IFluidUser, IBufPacketReceiver { public long ashTick = 0; public long sootTick = 0; public int onTicks; - + @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + if(worldObj.getTotalWorldTime() % 20 == 0) { FluidType[] types = new FluidType[] {Fluids.SMOKE, Fluids.SMOKE_LEADED, Fluids.SMOKE_POISON}; - + for(FluidType type : types) { this.trySubscribe(type, worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X); this.trySubscribe(type, worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X); @@ -35,11 +35,11 @@ public abstract class TileEntityChimneyBase extends TileEntityLoadedBase impleme this.trySubscribe(type, worldObj, xCoord, yCoord, zCoord - 2, Library.NEG_Z); } } - + if(ashTick > 0 || sootTick > 0) { TileEntity below = worldObj.getTileEntity(xCoord, yCoord - 1, zCoord); - + if(below instanceof TileEntityAshpit) { TileEntityAshpit ashpit = (TileEntityAshpit) below; ashpit.ashLevelFly += ashTick; @@ -48,15 +48,13 @@ public abstract class TileEntityChimneyBase extends TileEntityLoadedBase impleme this.ashTick = 0; this.sootTick = 0; } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("onTicks", onTicks); - INBTPacketReceiver.networkPack(this, data, 150); - + + networkPackNT(150); + if(onTicks > 0) onTicks--; - + } else { - + if(onTicks > 0) { this.spawnParticles(); } @@ -66,15 +64,21 @@ public abstract class TileEntityChimneyBase extends TileEntityLoadedBase impleme public boolean cpaturesAsh() { return true; } - + public boolean cpaturesSoot() { return false; } - + public void spawnParticles() { } - - public void networkUnpack(NBTTagCompound nbt) { - this.onTicks = nbt.getInteger("onTicks"); + + @Override + public void serialize(ByteBuf buf) { + buf.writeInt(this.onTicks); + } + + @Override + public void deserialize(ByteBuf buf) { + this.onTicks = buf.readInt(); } @Override @@ -85,23 +89,23 @@ public abstract class TileEntityChimneyBase extends TileEntityLoadedBase impleme @Override public long transferFluid(FluidType type, int pressure, long fluid) { - + if(type != Fluids.SMOKE && type != Fluids.SMOKE_LEADED && type != Fluids.SMOKE_POISON) return fluid; - + onTicks = 20; if(cpaturesAsh()) ashTick += fluid; if(cpaturesSoot()) sootTick += fluid; - + fluid *= getPollutionMod(); if(type == Fluids.SMOKE) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, fluid / 100F); if(type == Fluids.SMOKE_LEADED) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.HEAVYMETAL, fluid / 100F); if(type == Fluids.SMOKE_POISON) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.POISON, fluid / 100F); - + return 0; } - + public abstract double getPollutionMod(); @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java index 0ab6d68b2..9aa33070d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java @@ -13,11 +13,10 @@ import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Coolable; import com.hbm.inventory.fluid.trait.FT_Coolable.CoolingType; import com.hbm.main.MainRegistry; -import com.hbm.packet.NBTPacket; -import com.hbm.packet.PacketDispatcher; import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.IBufPacketReceiver; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IConfigurableMachine; -import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.CompatEnergyControl; import com.hbm.util.fauxpointtwelve.BlockPos; @@ -27,9 +26,9 @@ import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IInfoProviderEC; 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 io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -40,17 +39,17 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyProviderMK2, INBTPacketReceiver, IFluidStandardTransceiver, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent, IConfigurableMachine { +public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyProviderMK2, IFluidStandardTransceiver, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent, IConfigurableMachine, IBufPacketReceiver, IFluidCopiable{ public long power; private int turnTimer; public float rotor; public float lastRotor; public float fanAcceleration = 0F; - + public FluidTank[] tanks; protected double[] info = new double[3]; - + private AudioWrapper audio; private float audioDesync; @@ -59,7 +58,7 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyPr public static int inputTankSize = 1_000_000_000; public static int outputTankSize = 1_000_000_000; public static double efficiency = 0.85D; - + public TileEntityChungus() { tanks = new FluidTank[2]; tanks[0] = new FluidTank(Fluids.STEAM, inputTankSize); @@ -95,11 +94,11 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyPr @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + this.info = new double[3]; - + boolean operational = false; FluidType in = tanks[0].getTankType(); boolean valid = false; @@ -121,49 +120,44 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyPr operational = ops > 0; } } - + if(!valid) tanks[1].setTankType(Fluids.NONE); if(power > maxPower) power = maxPower; - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); this.tryProvide(worldObj, xCoord - dir.offsetX * 11, yCoord, zCoord - dir.offsetZ * 11, dir.getOpposite()); - + for(DirPos pos : this.getConPos()) { this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - + if(power > maxPower) power = maxPower; - + turnTimer--; - + if(operational) turnTimer = 25; - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("type", tanks[0].getTankType().getID()); - data.setInteger("operational", turnTimer); - this.networkPack(data, 150); - + networkPackNT(150); + } else { - + this.lastRotor = this.rotor; this.rotor += this.fanAcceleration; - + if(this.rotor >= 360) { this.rotor -= 360; this.lastRotor -= 360; } - + if(turnTimer > 0) { // Fan accelerates with a random offset to ensure the audio doesn't perfectly align, makes for a more pleasant hum this.fanAcceleration = Math.max(0F, Math.min(25F, this.fanAcceleration += 0.075F + audioDesync)); - + Random rand = worldObj.rand; ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection side = dir.getRotation(ForgeDirection.UP); - + for(int i = 0; i < 10; i++) { worldObj.spawnParticle("cloud", xCoord + 0.5 + dir.offsetX * (rand.nextDouble() + 1.25) + rand.nextGaussian() * side.offsetX * 0.65, @@ -172,7 +166,7 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyPr -dir.offsetX * 0.2, 0, -dir.offsetZ * 0.2); } - + if(audio == null) { audio = MainRegistry.proxy.getLoopedSound("hbm:block.chungusTurbineRunning", xCoord, yCoord, zCoord, 1.0F, 20F, 1.0F); audio.startSound(); @@ -183,7 +177,7 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyPr audio.updatePitch(0.25F + 0.75F * turbineSpeed); } else { this.fanAcceleration = Math.max(0F, Math.min(25F, this.fanAcceleration -= 0.1F)); - + if(audio != null) { if(this.fanAcceleration > 0) { float turbineSpeed = this.fanAcceleration / 25F; @@ -194,16 +188,16 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyPr audio = null; } } - } + } } } - + public void onLeverPull(FluidType previous) { for(BlockPos pos : getConPos()) { this.tryUnsubscribe(previous, worldObj, pos.getX(), pos.getY(), pos.getZ()); } } - + public DirPos[] getConPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); @@ -213,18 +207,23 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyPr new DirPos(xCoord - rot.offsetX * 3, yCoord, zCoord - rot.offsetZ * 3, rot.getOpposite()) }; } - - public void networkPack(NBTTagCompound nbt, int range) { - PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); + + @Override + public void serialize(ByteBuf buf) { + buf.writeLong(this.power); + buf.writeInt(this.turnTimer); + this.tanks[0].serialize(buf); + this.tanks[1].serialize(buf); } @Override - public void networkUnpack(NBTTagCompound data) { - this.power = data.getLong("power"); - this.turnTimer = data.getInteger("operational"); - this.tanks[0].setTankType(Fluids.fromID(data.getInteger("type"))); + public void deserialize(ByteBuf buf) { + this.power = buf.readLong(); + this.turnTimer = buf.readInt(); + this.tanks[0].deserialize(buf); + this.tanks[1].deserialize(buf); } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -232,7 +231,7 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyPr tanks[1].readFromNBT(nbt, "steam"); power = nbt.getLong("power"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -240,12 +239,12 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyPr tanks[1].writeToNBT(nbt, "steam"); nbt.setLong("power", power); } - + @Override public AxisAlignedBB getRenderBoundingBox() { return TileEntity.INFINITE_EXTENT_AABB; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -277,7 +276,7 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyPr public String getComponentName() { return "ntm_turbine"; } - + @Override public void onChunkUnload() { super.onChunkUnload(); @@ -372,4 +371,9 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyPr data.setDouble(CompatEnergyControl.D_OUTPUT_MB, info[1]); data.setDouble(CompatEnergyControl.D_OUTPUT_HE, info[2]); } + + @Override + public FluidTank getTankToPaste() { + return null; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java index 8d2730f8b..f29d0c0c1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java @@ -7,24 +7,26 @@ import com.google.gson.stream.JsonWriter; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.saveddata.TomSaveData; +import com.hbm.tileentity.IBufPacketReceiver; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IConfigurableMachine; -import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.CompatEnergyControl; import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IInfoProviderEC; +import io.netty.buffer.ByteBuf; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.EnumSkyBlock; -public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidStandardTransceiver, INBTPacketReceiver, IInfoProviderEC, IConfigurableMachine { +public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidStandardTransceiver, IInfoProviderEC, IConfigurableMachine, IBufPacketReceiver, IFluidCopiable { public int age = 0; public FluidTank[] tanks; - + public int waterTimer = 0; protected int throughput; - + //Configurable values public static int inputTankSize = 100; public static int outputTankSize = 100; @@ -52,73 +54,71 @@ public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidS writer.name("I:outputTankSize").value(outputTankSize); } - - @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + age++; if(age >= 2) { age = 0; } - - NBTTagCompound data = new NBTTagCompound(); - this.tanks[0].writeToNBT(data, "0"); - + if(this.waterTimer > 0) this.waterTimer--; int convert = Math.min(tanks[0].getFill(), tanks[1].getMaxFill() - tanks[1].getFill()); this.throughput = convert; - + if(extraCondition(convert)) { tanks[0].setFill(tanks[0].getFill() - convert); - + if(convert > 0) this.waterTimer = 20; - + int light = this.worldObj.getSavedLightValue(EnumSkyBlock.Sky, this.xCoord, this.yCoord, this.zCoord); - + if(TomSaveData.forWorld(worldObj).fire > 1e-5 && light > 7) { // Make both steam and water evaporate during firestorms... tanks[1].setFill(tanks[1].getFill() - convert); } else { tanks[1].setFill(tanks[1].getFill() + convert); } - + postConvert(convert); } - - this.tanks[1].writeToNBT(data, "1"); - + this.subscribeToAllAround(tanks[0].getTankType(), this); this.sendFluidToAll(tanks[1], this); - - data.setByte("timer", (byte) this.waterTimer); - packExtra(data); - INBTPacketReceiver.networkPack(this, data, 150); + + networkPackNT(150); } } - + public void packExtra(NBTTagCompound data) { } public boolean extraCondition(int convert) { return true; } public void postConvert(int convert) { } @Override - public void networkUnpack(NBTTagCompound nbt) { - this.tanks[0].readFromNBT(nbt, "0"); - this.tanks[1].readFromNBT(nbt, "1"); - this.waterTimer = nbt.getByte("timer"); + public void serialize(ByteBuf buf) { + this.tanks[0].serialize(buf); + this.tanks[1].serialize(buf); + buf.writeByte(this.waterTimer); } - + + @Override + public void deserialize(ByteBuf buf) { + this.tanks[0].deserialize(buf); + this.tanks[1].deserialize(buf); + this.waterTimer = buf.readByte(); + } + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); tanks[0].readFromNBT(nbt, "water"); tanks[1].readFromNBT(nbt, "steam"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -146,4 +146,9 @@ public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidS data.setDouble(CompatEnergyControl.D_CONSUMPTION_MB, throughput); data.setDouble(CompatEnergyControl.D_OUTPUT_MB, throughput); } + + @Override + public FluidTank getTankToPaste() { + return null; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java index 9aabea820..2240477cd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenserPowered.java @@ -13,6 +13,7 @@ import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; @@ -98,11 +99,21 @@ public class TileEntityCondenserPowered extends TileEntityCondenser implements I } @Override - public void networkUnpack(NBTTagCompound nbt) { - this.power = nbt.getLong("power"); - this.tanks[0].readFromNBT(nbt, "0"); - this.tanks[1].readFromNBT(nbt, "1"); - this.waterTimer = nbt.getByte("timer"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + this.tanks[0].serialize(buf); + this.tanks[1].serialize(buf); + buf.writeByte(this.waterTimer); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.tanks[0].deserialize(buf); + this.tanks[1].deserialize(buf); + this.waterTimer = buf.readByte(); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityConveyorPress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityConveyorPress.java index 418c9932c..d7a93653e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityConveyorPress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityConveyorPress.java @@ -7,11 +7,13 @@ import com.hbm.inventory.recipes.PressRecipes; import com.hbm.items.machine.ItemStamp; import com.hbm.lib.Library; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; @@ -31,7 +33,7 @@ public class TileEntityConveyorPress extends TileEntityMachineBase implements IE private int turnProgress; protected boolean isRetracting = false; private int delay; - + public ItemStack syncStack; public TileEntityConveyorPress() { @@ -45,32 +47,32 @@ public class TileEntityConveyorPress extends TileEntityMachineBase implements IE @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + this.updateConnections(); - + if(delay <= 0) { - + if(isRetracting) { - + if(this.canRetract()) { this.press -= speed; this.power -= this.usage; - + if(press <= 0) { press = 0; this.isRetracting = false; delay = 0; } } - + } else { - + if(this.canExtend()) { this.press += speed; this.power -= this.usage; - + if(press >= 1) { press = 1; this.isRetracting = true; @@ -79,26 +81,17 @@ public class TileEntityConveyorPress extends TileEntityMachineBase implements IE } } } - + } else { delay--; } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setDouble("press", press); - if(slots[0] != null) { - NBTTagCompound stack = new NBTTagCompound(); - slots[0].writeToNBT(stack); - data.setTag("stack", stack); - } - - this.networkPack(data, 50); + + this.networkPackNT(50); } else { - + // approach-based interpolation, GO! this.lastPress = this.renderPress; - + if(this.turnProgress > 0) { this.renderPress = this.renderPress + ((this.syncPress - this.renderPress) / (double) this.turnProgress); --this.turnProgress; @@ -107,11 +100,11 @@ public class TileEntityConveyorPress extends TileEntityMachineBase implements IE } } } - + protected void updateConnections() { for(DirPos pos : getConPos()) this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - + protected DirPos[] getConPos() { return new DirPos[] { new DirPos(xCoord + 1, yCoord, zCoord, Library.POS_X), @@ -120,40 +113,40 @@ public class TileEntityConveyorPress extends TileEntityMachineBase implements IE new DirPos(xCoord, yCoord, zCoord - 1, Library.NEG_Z), }; } - + public boolean canExtend() { - + if(this.power < usage) return false; if(slots[0] == null) return false; - + List items = worldObj.getEntitiesWithinAABB(EntityMovingItem.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord + 1, zCoord, xCoord + 1, yCoord + 1.5, zCoord + 1)); if(items.isEmpty()) return false; - + for(EntityMovingItem item : items) { ItemStack stack = item.getItemStack(); if(PressRecipes.getOutput(stack, slots[0]) != null && stack.stackSize == 1) { - + double d0 = 0.35; double d1 = 0.65; if(item.posX > xCoord + d0 && item.posX < xCoord + d1 && item.posZ > zCoord + d0 && item.posZ < zCoord + d1) { item.setPosition(xCoord + 0.5, item.posY, zCoord + 0.5); } - + return true; } } - + return false; } - + public void process() { - + List items = worldObj.getEntitiesWithinAABB(EntityMovingItem.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord + 1, zCoord, xCoord + 1, yCoord + 1.5, zCoord + 1)); - + for(EntityMovingItem item : items) { ItemStack stack = item.getItemStack(); ItemStack output = PressRecipes.getOutput(stack, slots[0]); - + if(output != null && stack.stackSize == 1) { item.setDead(); EntityMovingItem out = new EntityMovingItem(worldObj); @@ -162,9 +155,9 @@ public class TileEntityConveyorPress extends TileEntityMachineBase implements IE worldObj.spawnEntityInWorld(out); } } - + this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.pressOperate", getVolume(1.5F), 1.0F); - + if(slots[0].getMaxDamage() != 0) { slots[0].setItemDamage(slots[0].getItemDamage() + 1); if(slots[0].getItemDamage() >= slots[0].getMaxDamage()) { @@ -172,25 +165,28 @@ public class TileEntityConveyorPress extends TileEntityMachineBase implements IE } } } - + public boolean canRetract() { - if(this.power < usage) return false; - return true; + return this.power >= usage; } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - this.power = nbt.getLong("power"); - this.syncPress = nbt.getInteger("press"); - - if(nbt.hasKey("stack")) { - NBTTagCompound stack = nbt.getCompoundTag("stack"); - this.syncStack = ItemStack.loadItemStackFromNBT(stack); - } else { - this.syncStack = null; - } - + public void serialize(ByteBuf buf) { + super.serialize(buf); + + buf.writeLong(this.power); + buf.writeDouble(this.press); + BufferUtil.writeItemStack(buf, slots[0]); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + + this.power = buf.readLong(); + this.syncPress = buf.readDouble(); + this.syncStack = BufferUtil.readItemStack(buf); + this.turnProgress = 2; } @@ -198,7 +194,7 @@ public class TileEntityConveyorPress extends TileEntityMachineBase implements IE public boolean isItemValidForSlot(int i, ItemStack stack) { return stack.getItem() instanceof ItemStamp; } - + @Override public int[] getAccessibleSlotsFromSide(int side) { return new int[] { 0 }; @@ -228,26 +224,26 @@ public class TileEntityConveyorPress extends TileEntityMachineBase implements IE public boolean canConnect(ForgeDirection dir) { return dir != ForgeDirection.DOWN; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); this.power = nbt.getLong("power"); this.press = nbt.getDouble("press"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setLong("power", power); nbt.setDouble("press", press); } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 1, @@ -258,10 +254,10 @@ public class TileEntityConveyorPress extends TileEntityMachineBase implements IE zCoord + 2 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java index 4fd9621ee..767575fa9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java @@ -26,7 +26,7 @@ import com.hbm.util.CompatEnergyControl; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -138,15 +138,8 @@ public class TileEntityCore extends TileEntityMachineBase implements IGUIProvide if(heat > 0) radiation(); - - NBTTagCompound data = new NBTTagCompound(); - tanks[0].writeToNBT(data, "t0"); - tanks[1].writeToNBT(data, "t1"); - data.setInteger("field", field); - data.setInteger("heat", heat); - data.setInteger("color", color); - data.setBoolean("melt", meltdownTick); - networkPack(data, 250); + + networkPackNT(250); heat = 0; @@ -162,15 +155,28 @@ public class TileEntityCore extends TileEntityMachineBase implements IGUIProvide } - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); - tanks[0].readFromNBT(data, "t0"); - tanks[1].readFromNBT(data, "t1"); - field = data.getInteger("field"); - heat = data.getInteger("heat"); - color = data.getInteger("color"); - meltdownTick = data.getBoolean("melt"); + tanks[0].serialize(buf); + tanks[1].serialize(buf); + buf.writeInt(field); + buf.writeInt(heat); + buf.writeInt(color); + buf.writeBoolean(meltdownTick); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); + this.field = buf.readInt(); + this.heat = buf.readInt(); + this.color = buf.readInt(); + this.meltdownTick = buf.readBoolean(); } private void radiation() { @@ -357,7 +363,7 @@ public class TileEntityCore extends TileEntityMachineBase implements IGUIProvide @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICore(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 507035d8d..3a6712af9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java @@ -18,12 +18,12 @@ import com.hbm.util.CompatEnergyControl; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; 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.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; @@ -97,7 +97,7 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne if(joules > 0) { - long out = joules * 98 / 100; + long out = joules * 95 / 100; ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); for(int i = 1; i <= range; i++) { @@ -111,20 +111,9 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne Block block = worldObj.getBlock(x, y, z); TileEntity te = worldObj.getTileEntity(x, y, z); - if(block instanceof ILaserable) { - ((ILaserable)block).addEnergy(worldObj, x, y, z, out * 98 / 100, dir); - break; - } - - if(te instanceof ILaserable) { - ((ILaserable)te).addEnergy(worldObj, x, y, z, out * 98 / 100, dir); - break; - } - - if(te instanceof TileEntityCore) { - out = ((TileEntityCore)te).burn(out); - continue; - } + if(block instanceof ILaserable) { ((ILaserable)block).addEnergy(worldObj, x, y, z, out, dir); break; } + if(te instanceof ILaserable) { ((ILaserable)te).addEnergy(worldObj, x, y, z, out, dir); break; } + if(te instanceof TileEntityCore) { out = ((TileEntityCore)te).burn(out); continue; } Block b = worldObj.getBlock(x, y, z); @@ -169,26 +158,32 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne this.markDirty(); - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("watts", watts); - data.setLong("prev", prev); - data.setInteger("beam", beam); - data.setBoolean("isOn", isOn); - tank.writeToNBT(data, "tank"); - this.networkPack(data, 250); + this.networkPackNT(250); } } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - power = data.getLong("power"); - watts = data.getInteger("watts"); - prev = data.getLong("prev"); - beam = data.getInteger("beam"); - isOn = data.getBoolean("isOn"); - tank.readFromNBT(data, "tank"); + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + + buf.writeLong(power); + buf.writeInt(watts); + buf.writeLong(prev); + buf.writeInt(beam); + buf.writeBoolean(isOn); + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + + this.power = buf.readLong(); + this.watts = buf.readInt(); + this.prev = buf.readLong(); + this.beam = buf.readInt(); + this.isOn = buf.readBoolean(); + tank.deserialize(buf); } public long getPowerScaled(long i) { @@ -332,7 +327,7 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICoreEmitter(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java index ee599910d..5380702cf 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java @@ -12,11 +12,11 @@ import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; 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; import net.minecraft.nbt.NBTTagCompound; @@ -101,19 +101,26 @@ public class TileEntityCoreInjector extends TileEntityMachineBase implements IFl this.markDirty(); - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("beam", beam); - tanks[0].writeToNBT(data, "t0"); - tanks[1].writeToNBT(data, "t1"); - this.networkPack(data, 250); + this.networkPackNT(250); } } - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - beam = data.getInteger("beam"); - tanks[0].readFromNBT(data, "t0"); - tanks[1].readFromNBT(data, "t1"); + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + + buf.writeInt(beam); + tanks[0].serialize(buf); + tanks[1].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + + this.beam = buf.readInt(); + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); } @Override @@ -185,7 +192,7 @@ public class TileEntityCoreInjector extends TileEntityMachineBase implements IFl @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICoreInjector(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java index 16f9fe511..c85a206c7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java @@ -16,11 +16,11 @@ import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; 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.init.Blocks; import net.minecraft.inventory.Container; @@ -69,19 +69,26 @@ public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEn } } - NBTTagCompound data = new NBTTagCompound(); - data.setLong("joules", joules); - tank.writeToNBT(data, "t"); - this.networkPack(data, 50); + this.networkPackNT(50); joules = 0; } } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - joules = data.getLong("joules"); - tank.readFromNBT(data, "t"); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + + buf.writeLong(joules); + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + + joules = buf.readLong(); + tank.deserialize(buf); } @Override @@ -187,7 +194,7 @@ public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEn @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICoreReceiver(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java index bb7e05bbb..2647d4c6e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java @@ -14,11 +14,11 @@ import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; 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; import net.minecraft.nbt.NBTTagCompound; @@ -93,11 +93,7 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I } } - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("watts", watts); - data.setInteger("beam", beam); - this.networkPack(data, 250); + this.networkPackNT(250); } } @@ -106,13 +102,23 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - power = data.getLong("power"); - watts = data.getInteger("watts"); - beam = data.getInteger("beam"); + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + + buf.writeLong(power); + buf.writeInt(watts); + buf.writeInt(beam); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + + this.power = buf.readLong(); + this.watts = buf.readInt(); + this.beam = buf.readInt(); } public long getPowerScaled(long i) { @@ -225,7 +231,7 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICoreStabilizer(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java index 1fb87fc69..d9d7cc6f6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java @@ -18,11 +18,13 @@ import com.hbm.inventory.material.NTMMaterial; import com.hbm.inventory.recipes.CrucibleRecipes; import com.hbm.inventory.recipes.CrucibleRecipes.CrucibleRecipe; import com.hbm.items.ModItems; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IMetalCopiable; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BobMathUtil; import com.hbm.util.CrucibleUtil; import api.hbm.block.ICrucibleAcceptor; @@ -31,7 +33,6 @@ import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -45,11 +46,11 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCrucible extends TileEntityMachineBase implements IGUIProvider, ICrucibleAcceptor, IConfigurableMachine { +public class TileEntityCrucible extends TileEntityMachineBase implements IGUIProvider, ICrucibleAcceptor, IConfigurableMachine, IMetalCopiable { public int heat; public int progress; - + public List recipeStack = new ArrayList(); public List wasteStack = new ArrayList(); @@ -101,21 +102,22 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro @Override public void updateEntity() { - + if(!worldObj.isRemote) { tryPullHeat(); - + /* collect items */ if(worldObj.getTotalWorldTime() % 5 == 0) { List list = worldObj.getEntitiesWithinAABB(EntityItem.class, AxisAlignedBB.getBoundingBox(xCoord - 0.5, yCoord + 0.5, zCoord - 0.5, xCoord + 1.5, yCoord + 1, zCoord + 1.5)); - + for(EntityItem item : list) { + if(item.isDead) continue; ItemStack stack = item.getEntityItem(); if(this.isItemSmeltable(stack)) { - + for(int i = 1; i < 10; i++) { if(slots[i] == null) { - + if(stack.stackSize == 1) { slots[i] = stack.copy(); item.setDead(); @@ -125,7 +127,7 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro slots[i].stackSize = 1; stack.stackSize--; } - + this.markChanged(); } } @@ -138,29 +140,29 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro for(MaterialStack stack : recipeStack) totalMass += stack.amount; for(MaterialStack stack : wasteStack) totalMass += stack.amount; - + double level = ((double) totalMass / (double) totalCap) * 0.875D; - + List living = worldObj.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, xCoord + 0.5, yCoord + 0.5 + level, zCoord + 0.5).expand(1, 0, 1)); for(EntityLivingBase entity : living) { entity.attackEntityFrom(DamageSource.lava, 5F); entity.setFire(5); } - + /* smelt items from buffer */ if(!trySmelt()) { this.progress = 0; } - + tryRecipe(); - + /* pour waste stack */ if(!this.wasteStack.isEmpty()) { - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); Vec3 impact = Vec3.createVectorHelper(0, 0, 0); MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord + 0.25D, zCoord + 0.5D + dir.offsetZ * 1.875D, 6, true, this.wasteStack, MaterialShapes.NUGGET.q(3), impact); - + if(didPour != null) { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "foundry"); @@ -170,24 +172,24 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro data.setFloat("base", 0.625F); data.setFloat("len", Math.max(1F, yCoord - (float) (Math.ceil(impact.yCoord) - 0.875))); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord, zCoord + 0.5D + dir.offsetZ * 1.875D), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 50)); - + } PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND / 20F); } - + /* pour recipe stack */ if(!this.recipeStack.isEmpty()) { - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); List toCast = new ArrayList(); - + CrucibleRecipe recipe = this.getLoadedRecipe(); //if no recipe is loaded, everything from the recipe stack will be drainable if(recipe == null) { toCast.addAll(this.recipeStack); } else { - + for(MaterialStack stack : this.recipeStack) { for(MaterialStack output : recipe.output) { if(stack.material == output.material) { @@ -197,7 +199,7 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro } } } - + Vec3 impact = Vec3.createVectorHelper(0, 0, 0); MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord + 0.25D, zCoord + 0.5D + dir.offsetZ * 1.875D, 6, true, toCast, MaterialShapes.NUGGET.q(3), impact); @@ -210,7 +212,7 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro data.setFloat("base", 0.625F); data.setFloat("len", Math.max(1F, yCoord - (float) (Math.ceil(impact.yCoord) - 0.875))); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord, zCoord + 0.5D + dir.offsetZ * 1.875D), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 50)); - + } PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND / 20F); @@ -219,51 +221,63 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro /* clean up stacks */ this.recipeStack.removeIf(o -> o.amount <= 0); this.wasteStack.removeIf(x -> x.amount <= 0); - + /* sync */ this.networkPackNT(25); } } - + @Override public void serialize(ByteBuf buf) { super.serialize(buf); buf.writeInt(progress); buf.writeInt(heat); - + buf.writeShort(recipeStack.size()); for(MaterialStack sta : recipeStack) { - buf.writeInt(sta.material.id); + if (sta.material == null) + buf.writeInt(-1); + else + buf.writeInt(sta.material.id); buf.writeInt(sta.amount); } - + buf.writeShort(wasteStack.size()); for(MaterialStack sta : wasteStack) { - buf.writeInt(sta.material.id); + if (sta.material == null) + buf.writeInt(-1); + else + buf.writeInt(sta.material.id); buf.writeInt(sta.amount); } } - + @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); progress = buf.readInt(); heat = buf.readInt(); - + recipeStack.clear(); wasteStack.clear(); - + int mats = buf.readShort(); for(int i = 0; i < mats; i++) { - recipeStack.add(new MaterialStack(Mats.matById.get(buf.readInt()), buf.readInt())); + int id = buf.readInt(); + if (id == -1) + continue; + recipeStack.add(new MaterialStack(Mats.matById.get(id), buf.readInt())); } - + mats = buf.readShort(); for(int i = 0; i < mats; i++) { - wasteStack.add(new MaterialStack(Mats.matById.get(buf.readInt()), buf.readInt())); + int id = buf.readInt(); + if (id == -1) + continue; + wasteStack.add(new MaterialStack(Mats.matById.get(id), buf.readInt())); } } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -272,20 +286,20 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro for(int i = 0; i < rec.length / 2; i++) { recipeStack.add(new MaterialStack(Mats.matById.get(rec[i * 2]), rec[i * 2 + 1])); } - + int[] was = nbt.getIntArray("was"); for(int i = 0; i < was.length / 2; i++) { wasteStack.add(new MaterialStack(Mats.matById.get(was[i * 2]), was[i * 2 + 1])); } - + this.progress = nbt.getInteger("progress"); this.heat = nbt.getInteger("heat"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + int[] rec = new int[recipeStack.size() * 2]; int[] was = new int[wasteStack.size() * 2]; for(int i = 0; i < recipeStack.size(); i++) { MaterialStack sta = recipeStack.get(i); rec[i * 2] = sta.material.id; rec[i * 2 + 1] = sta.amount; } @@ -295,21 +309,23 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro nbt.setInteger("progress", progress); nbt.setInteger("heat", heat); } - + protected void tryPullHeat() { - + if(this.heat >= this.maxHeat) return; - + TileEntity con = worldObj.getTileEntity(xCoord, yCoord - 1, zCoord); - + if(con instanceof IHeatSource) { IHeatSource source = (IHeatSource) con; int diff = source.getHeatStored() - this.heat; - + if(diff == 0) { return; } + diff = Math.min(diff, this.maxHeat - this.heat); + if(diff > 0) { diff = (int) Math.ceil(diff * diffusion); source.useUpHeat(diff); @@ -319,171 +335,170 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro return; } } - + this.heat = Math.max(this.heat - Math.max(this.heat / 1000, 1), 0); } - + protected boolean trySmelt() { - + if(this.heat < maxHeat / 2) return false; - + int slot = this.getFirstSmeltableSlot(); if(slot == -1) return false; - + int delta = this.heat - (maxHeat / 2); delta *= 0.05; - + this.progress += delta; this.heat -= delta; - + if(this.progress >= processTime) { this.progress = 0; - + List materials = Mats.getSmeltingMaterialsFromItem(slots[slot]); CrucibleRecipe recipe = getLoadedRecipe(); - + for(MaterialStack material : materials) { boolean mainStack = recipe != null && (getQuantaFromType(recipe.input, material.material) > 0 || getQuantaFromType(recipe.output, material.material) > 0); - + if(mainStack) { this.addToStack(this.recipeStack, material); } else { this.addToStack(this.wasteStack, material); } } - + this.decrStackSize(slot, 1); } - + return true; } - + protected void tryRecipe() { CrucibleRecipe recipe = this.getLoadedRecipe(); - + if(recipe == null) return; if(worldObj.getTotalWorldTime() % recipe.frequency > 0) return; - + for(MaterialStack stack : recipe.input) { if(getQuantaFromType(this.recipeStack, stack.material) < stack.amount) return; } - + for(MaterialStack stack : this.recipeStack) { stack.amount -= getQuantaFromType(recipe.input, stack.material); } - + outer: for(MaterialStack out : recipe.output) { - + for(MaterialStack stack : this.recipeStack) { if(stack.material == out.material) { stack.amount += out.amount; continue outer; } } - + this.recipeStack.add(out.copy()); } } - + protected int getFirstSmeltableSlot() { - + for(int i = 1; i < 10; i++) { - + ItemStack stack = slots[i]; - + if(stack != null && isItemSmeltable(stack)) { return i; } } - + return -1; } @Override public boolean isItemValidForSlot(int i, ItemStack stack) { - + if(i == 0) { return stack.getItem() == ModItems.crucible_template; } - + return isItemSmeltable(stack); } - + public boolean isItemSmeltable(ItemStack stack) { - + List materials = Mats.getSmeltingMaterialsFromItem(stack); - + //if there's no materials in there at all, don't smelt if(materials.isEmpty()) return false; - CrucibleRecipe recipe = getLoadedRecipe(); - + //needs to be true, will always be true if there's no recipe loaded boolean matchesRecipe = recipe == null; - + //the amount of material in the entire recipe input int recipeContent = recipe != null ? recipe.getInputAmount() : 0; //the total amount of the current waste stack, used for simulation int recipeAmount = getQuantaFromType(this.recipeStack, null); int wasteAmount = getQuantaFromType(this.wasteStack, null); - + for(MaterialStack mat : materials) { //if no recipe is loaded, everything will land in the waste stack int recipeInputRequired = recipe != null ? getQuantaFromType(recipe.input, mat.material) : 0; - + //this allows pouring the ouput material back into the crucible if(recipe != null && getQuantaFromType(recipe.output, mat.material) > 0) { recipeAmount += mat.amount; matchesRecipe = true; continue; } - + if(recipeInputRequired == 0) { //if this type isn't required by the recipe, add it to the waste stack wasteAmount += mat.amount; } else { - + //the maximum is the recipe's ratio scaled up to the recipe stack's capacity int matMaximum = recipeInputRequired * this.recipeZCapacity / recipeContent; int amountStored = getQuantaFromType(recipeStack, mat.material); - + matchesRecipe = true; - + recipeAmount += mat.amount; - + //if the amount of that input would exceed the amount dictated by the recipe, return false if(recipe != null && amountStored + mat.amount > matMaximum) return false; } } - + //if the amount doesn't exceed the capacity and the recipe matches (or isn't null), return true return recipeAmount <= this.recipeZCapacity && wasteAmount <= this.wasteZCapacity && matchesRecipe; } - + public void addToStack(List stack, MaterialStack matStack) { - + for(MaterialStack mat : stack) { if(mat.material == matStack.material) { mat.amount += matStack.amount; return; } } - + stack.add(matStack.copy()); } - + public CrucibleRecipe getLoadedRecipe() { - + if(slots[0] != null && slots[0].getItem() == ModItems.crucible_template) { return CrucibleRecipes.indexMapping.get(slots[0].getItemDamage()); } - + return null; } - + /* "Arrays and Lists don't have a common ancestor" my fucking ass */ public int getQuantaFromType(MaterialStack[] stacks, NTMMaterial mat) { for(MaterialStack stack : stacks) { @@ -493,7 +508,7 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro } return 0; } - + public int getQuantaFromType(List stacks, NTMMaterial mat) { int sum = 0; for(MaterialStack stack : stacks) { @@ -519,15 +534,15 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICrucible(player.inventory, this); } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 1, @@ -538,10 +553,10 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro zCoord + 2 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -550,30 +565,30 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro @Override public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) { - + CrucibleRecipe recipe = getLoadedRecipe(); - + if(recipe == null) { return getQuantaFromType(this.wasteStack, null) < this.wasteZCapacity; } - + int recipeContent = recipe.getInputAmount(); int recipeInputRequired = getQuantaFromType(recipe.input, stack.material); int matMaximum = recipeInputRequired * this.recipeZCapacity / recipeContent; int amountStored = getQuantaFromType(recipeStack, stack.material); - + return amountStored < matMaximum && getQuantaFromType(this.recipeStack, null) < this.recipeZCapacity; } @Override public MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) { - + CrucibleRecipe recipe = getLoadedRecipe(); - + if(recipe == null) { - + int amount = getQuantaFromType(this.wasteStack, null); - + if(amount + stack.amount <= this.wasteZCapacity) { this.addToStack(this.wasteStack, stack.copy()); return null; @@ -583,16 +598,16 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro return new MaterialStack(stack.material, stack.amount - toAdd); } } - + int recipeContent = recipe.getInputAmount(); int recipeInputRequired = getQuantaFromType(recipe.input, stack.material); int matMaximum = recipeInputRequired * this.recipeZCapacity / recipeContent; - + if(recipeInputRequired + stack.amount <= matMaximum) { this.addToStack(this.recipeStack, stack.copy()); return null; } - + int toAdd = matMaximum - stack.amount; toAdd = Math.min(toAdd, this.recipeZCapacity - getQuantaFromType(this.recipeStack, null)); this.addToStack(this.recipeStack, new MaterialStack(stack.material, toAdd)); @@ -601,4 +616,18 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro @Override public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return false; } @Override public MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return null; } + + @Override + public int[] getMatsToCopy() { + ArrayList types = new ArrayList<>(); + + for (MaterialStack stack : recipeStack) { + types.add(stack.material.id); + } + for (MaterialStack stack : wasteStack) { + types.add(stack.material.id); + } + return BobMathUtil.intCollectionToArray(types); + } + } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java index afc3b4d8e..38c584d9d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java @@ -22,6 +22,7 @@ import com.hbm.module.ModulePatternMatcher; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachinePolluting; import com.hbm.tileentity.TileEntityProxyBase; +import com.hbm.util.BufferUtil; import com.hbm.util.Compat; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; @@ -31,8 +32,8 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -221,23 +222,46 @@ public class TileEntityCustomMachine extends TileEntityMachinePolluting implemen } else { this.progress = 0; } - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", this.machineType); - data.setLong("power", power); - data.setBoolean("structureOK", structureOK); - data.setInteger("flux", flux); - data.setInteger("heat", heat); - data.setInteger("progress", progress); - data.setInteger("maxProgress", maxProgress); - for (int i = 0; i < inputTanks.length; i++) inputTanks[i].writeToNBT(data, "i" + i); - for (int i = 0; i < outputTanks.length; i++) outputTanks[i].writeToNBT(data, "o" + i); - this.matcher.writeToNBT(data); - this.networkPack(data, 50); + this.networkPackNT(50); } } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + + BufferUtil.writeString(buf, this.machineType); + + buf.writeLong(power); + buf.writeInt(progress); + buf.writeInt(flux); + buf.writeInt(heat); + buf.writeBoolean(structureOK); + buf.writeInt(maxProgress); + for (FluidTank inputTank : inputTanks) inputTank.serialize(buf); + for (FluidTank outputTank : outputTanks) outputTank.serialize(buf); + this.matcher.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + + this.machineType = BufferUtil.readString(buf); + if(this.config == null) this.init(); + + this.power = buf.readLong(); + this.progress = buf.readInt(); + this.flux = buf.readInt(); + this.heat = buf.readInt(); + this.structureOK = buf.readBoolean(); + this.maxProgress = buf.readInt(); + for (FluidTank inputTank : inputTanks) inputTank.deserialize(buf); + for (FluidTank outputTank : outputTanks) outputTank.deserialize(buf); + this.matcher.deserialize(buf); + } + /** Only accepts inputs in a fixed order, saves a ton of performance because there's no permutations to check for */ public CustomMachineRecipe getMatchingRecipe() { List recipes = CustomMachineRecipes.recipes.get(this.config.recipeKey); @@ -459,25 +483,6 @@ public class TileEntityCustomMachine extends TileEntityMachinePolluting implemen return matcher.isValidForFilter(slots[filterSlot], index, stack); } - @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.machineType = nbt.getString("type"); - if(this.config == null) this.init(); - - this.power = nbt.getLong("power"); - this.progress = nbt.getInteger("progress"); - this.flux = nbt.getInteger("flux"); - this.heat = nbt.getInteger("heat"); - this.structureOK = nbt.getBoolean("structureOK"); - this.maxProgress = nbt.getInteger("maxProgress"); - for(int i = 0; i < inputTanks.length; i++) inputTanks[i].readFromNBT(nbt, "i" + i); - for(int i = 0; i < outputTanks.length; i++) outputTanks[i].readFromNBT(nbt, "o" + i); - - this.matcher.readFromNBT(nbt); - } - @Override public void readFromNBT(NBTTagCompound nbt) { @@ -558,7 +563,7 @@ public class TileEntityCustomMachine extends TileEntityMachinePolluting implemen @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { if(this.config == null) return null; return new GUIMachineCustom(player.inventory, this); } @@ -593,13 +598,13 @@ public class TileEntityCustomMachine extends TileEntityMachinePolluting implemen return 0; } - + @Override public long getReceiverSpeed() { if(this.config != null && !this.config.generatorMode) return this.getMaxPower(); return 0; } - + @Override public long getProviderSpeed() { if(this.config != null && this.config.generatorMode) return this.getMaxPower(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java index 12cc135b4..50a277d3a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java @@ -2,14 +2,16 @@ package com.hbm.tileentity.machine; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.TileEntityMachineBase; import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; +import io.netty.buffer.ByteBuf; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver { +public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IFluidCopiable { public long power = 0; public FluidTank[] tanks; @@ -44,13 +46,8 @@ public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implemen this.subscribeToAllAround(tanks[0].getTankType(), this); this.sendFluidToAll(tanks[1], this); - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - tanks[0].writeToNBT(data, "water"); - tanks[1].writeToNBT(data, "heavyWater"); - this.networkPack(data, 50); + this.networkPackNT(50); } } @@ -60,12 +57,20 @@ public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implemen this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.power = data.getLong("power"); - tanks[0].readFromNBT(data, "water"); - tanks[1].readFromNBT(data, "heavyWater"); + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + tanks[0].serialize(buf); + tanks[1].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); } public boolean hasPower() { @@ -121,4 +126,9 @@ public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implemen public FluidTank[] getAllTanks() { return tanks; } + + @Override + public FluidTank getTankToPaste() { + return null; + } } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java index c1d3bb893..ea816adae 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java @@ -10,7 +10,6 @@ import com.hbm.inventory.gui.GUIDiFurnace; import com.hbm.inventory.recipes.BlastFurnaceRecipes; import com.hbm.items.ModItems; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityMachinePolluting; import com.hbm.util.CompatEnergyControl; @@ -18,7 +17,7 @@ import api.hbm.fluid.IFluidStandardSender; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; @@ -230,11 +229,7 @@ public class TileEntityDiFurnace extends TileEntityMachinePolluting implements I MachineDiFurnace.updateBlockState(this.progress > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); } - NBTTagCompound data = new NBTTagCompound(); - data.setShort("time", (short) this.progress); - data.setShort("fuel", (short) this.fuel); - data.setByteArray("modes", new byte[] { (byte) sideFuel, (byte) sideUpper, (byte) sideLower }); - INBTPacketReceiver.networkPack(this, data, 15); + networkPackNT(15); if(markDirty) { this.markDirty(); @@ -243,10 +238,21 @@ public class TileEntityDiFurnace extends TileEntityMachinePolluting implements I } @Override - public void networkUnpack(NBTTagCompound nbt) { - this.progress = nbt.getShort("time"); - this.fuel = nbt.getShort("fuel"); - byte[] modes = nbt.getByteArray("modes"); + public void serialize(ByteBuf buf) { + buf.writeShort(this.progress); + buf.writeShort(this.fuel); + buf.writeBytes(new byte[] { + this.sideFuel, + this.sideUpper, + this.sideLower}); + } + + @Override + public void deserialize(ByteBuf buf) { + this.progress = buf.readShort(); + this.fuel = buf.readShort(); + byte[] modes = new byte[3]; + buf.readBytes(modes); this.sideFuel = modes[0]; this.sideUpper = modes[1]; this.sideLower = modes[2]; @@ -259,7 +265,7 @@ public class TileEntityDiFurnace extends TileEntityMachinePolluting implements I @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIDiFurnace(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java index db4d16a27..8481f713a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java @@ -13,7 +13,7 @@ import com.hbm.util.RTGUtil; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -72,24 +72,28 @@ public class TileEntityDiFurnaceRTG extends TileEntityMachineBase implements IGU MachineDiFurnaceRTG.updateBlockState(isProcessing() || (canProcess() && hasPower()), getWorldObj(), xCoord, yCoord, zCoord); - NBTTagCompound data = new NBTTagCompound(); - data.setShort("progress", progress); - data.setShort("speed", processSpeed); - data.setByteArray("modes", new byte[] {(byte) sideUpper, (byte) sideLower}); - networkPack(data, 10); + networkPackNT(10); } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - progress = nbt.getShort("progress"); - processSpeed = nbt.getShort("speed"); - byte[] modes = nbt.getByteArray("modes"); - this.sideUpper = modes[0]; - this.sideLower = modes[1]; + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeShort(progress); + buf.writeShort(processSpeed); + buf.writeBytes(new byte[] {sideUpper, sideLower}); } - + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + progress = buf.readShort(); + processSpeed = buf.readShort(); + byte[] bytes = new byte[2]; + buf.readBytes(bytes); + this.sideUpper = bytes[0]; + this.sideLower = bytes[1]; + } + private void processItem() { if(canProcess()) { @@ -217,7 +221,7 @@ public class TileEntityDiFurnaceRTG extends TileEntityMachineBase implements IGU @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineDiFurnaceRTG(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java index 18cf9f14a..2626569a2 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java @@ -1,550 +1,605 @@ -package com.hbm.tileentity.machine; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.blocks.BlockDummyable; -import com.hbm.blocks.ModBlocks; -import com.hbm.interfaces.IControlReceiver; -import com.hbm.inventory.UpgradeManager; -import com.hbm.inventory.container.ContainerElectrolyserFluid; -import com.hbm.inventory.container.ContainerElectrolyserMetal; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.inventory.gui.GUIElectrolyserFluid; -import com.hbm.inventory.gui.GUIElectrolyserMetal; -import com.hbm.inventory.material.MaterialShapes; -import com.hbm.inventory.material.Mats; -import com.hbm.inventory.material.Mats.MaterialStack; -import com.hbm.inventory.recipes.ElectrolyserFluidRecipes; -import com.hbm.inventory.recipes.ElectrolyserFluidRecipes.ElectrolysisRecipe; -import com.hbm.inventory.recipes.ElectrolyserMetalRecipes; -import com.hbm.inventory.recipes.ElectrolyserMetalRecipes.ElectrolysisMetalRecipe; -import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; -import com.hbm.lib.Library; -import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.IUpgradeInfoProvider; -import com.hbm.tileentity.TileEntityMachineBase; -import com.hbm.util.BobMathUtil; -import com.hbm.util.CrucibleUtil; -import com.hbm.util.I18nUtil; -import com.hbm.util.fauxpointtwelve.DirPos; - -import api.hbm.energymk2.IEnergyReceiverMK2; -import api.hbm.fluid.IFluidStandardTransceiver; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.common.network.internal.FMLNetworkHandler; -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.EnumChatFormatting; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -public class TileEntityElectrolyser extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider { - - public long power; - public static final long maxPower = 20000000; - public static final int usageOreBase = 10_000; - public static final int usageFluidBase = 10_000; - public int usageOre; - public int usageFluid; - - public int progressFluid; - public int processFluidTime = 100; - public int progressOre; - public int processOreTime = 600; - - public MaterialStack leftStack; - public MaterialStack rightStack; - public int maxMaterial = MaterialShapes.BLOCK.q(16); - - public FluidTank[] tanks; - - public TileEntityElectrolyser() { - //0: Battery - //1-2: Upgrades - //// FLUID - //3-4: Fluid ID - //5-10: Fluid IO - //11-13: Byproducts - //// METAL - //14: Crystal - //15-20: Outputs - super(21); - tanks = new FluidTank[4]; - tanks[0] = new FluidTank(Fluids.WATER, 16000); - tanks[1] = new FluidTank(Fluids.HYDROGEN, 16000); - tanks[2] = new FluidTank(Fluids.OXYGEN, 16000); - tanks[3] = new FluidTank(Fluids.NITRIC_ACID, 16000); - } - - @Override - public int[] getAccessibleSlotsFromSide(int meta) { - return new int[] { 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 }; - } - - @Override - public boolean isItemValidForSlot(int i, ItemStack itemStack) { - if(i == 14) return ElectrolyserMetalRecipes.getRecipe(itemStack) != null; - return false; - } - - @Override - public boolean canExtractItem(int i, ItemStack itemStack, int j) { - return i != 14; - } - - @Override - public String getName() { - return "container.machineElectrolyser"; - } - - @Override - public void updateEntity() { - - if(!worldObj.isRemote) { - - this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); - this.tanks[0].setType(3, 4, slots); - this.tanks[0].loadTank(5, 6, slots); - this.tanks[1].unloadTank(7, 8, slots); - this.tanks[2].unloadTank(9, 10, slots); - - if(worldObj.getTotalWorldTime() % 20 == 0) { - for(DirPos pos : this.getConPos()) { - this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - this.trySubscribe(tanks[3].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - - if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - if(tanks[2].getFill() > 0) this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - } - } - - UpgradeManager.eval(slots, 1, 2); - int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); - int powerLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); - - usageOre = usageOreBase - usageOreBase * powerLevel / 4; - usageFluid = usageFluidBase - usageFluidBase * powerLevel / 4; - - for(int i = 0; i < getCycleCount(); i++) { - if (this.canProcessFluid()) { - this.progressFluid++; - this.power -= this.usageFluid; - - if (this.progressFluid >= this.getDurationFluid()) { - this.processFluids(); - this.progressFluid = 0; - this.markChanged(); - } - } - - if (this.canProcessMetal()) { - this.progressOre++; - this.power -= this.usageOre; - - if (this.progressOre >= this.getDurationMetal()) { - this.processMetal(); - this.progressOre = 0; - this.markChanged(); - } - } - } - - if(this.leftStack != null) { - - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); - List toCast = new ArrayList(); - toCast.add(this.leftStack); - - Vec3 impact = Vec3.createVectorHelper(0, 0, 0); - MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2D, zCoord + 0.5D + dir.offsetZ * 5.875D, 6, true, toCast, MaterialShapes.NUGGET.q(3) * Math.max (getCycleCount() * speedLevel, 1), impact); - - if(didPour != null) { - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "foundry"); - data.setInteger("color", didPour.material.moltenColor); - data.setByte("dir", (byte) dir.ordinal()); - data.setFloat("off", 0.625F); - data.setFloat("base", 0.625F); - data.setFloat("len", Math.max(1F, yCoord - (float) (Math.ceil(impact.yCoord) - 0.875) + 2)); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2, zCoord + 0.5D + dir.offsetZ * 5.875D), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 50)); - - if(this.leftStack.amount <= 0) this.leftStack = null; - } - } - - if(this.rightStack != null) { - - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); - List toCast = new ArrayList(); - toCast.add(this.rightStack); - - Vec3 impact = Vec3.createVectorHelper(0, 0, 0); - MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2D, zCoord + 0.5D + dir.offsetZ * 5.875D, 6, true, toCast, MaterialShapes.NUGGET.q(3) * Math.max (getCycleCount() * speedLevel, 1), impact); - - if(didPour != null) { - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "foundry"); - data.setInteger("color", didPour.material.moltenColor); - data.setByte("dir", (byte) dir.ordinal()); - data.setFloat("off", 0.625F); - data.setFloat("base", 0.625F); - data.setFloat("len", Math.max(1F, yCoord - (float) (Math.ceil(impact.yCoord) - 0.875) + 2)); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2, zCoord + 0.5D + dir.offsetZ * 5.875D), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 50)); - - if(this.rightStack.amount <= 0) this.rightStack = null; - } - } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - data.setInteger("progressFluid", this.progressFluid); - data.setInteger("progressOre", this.progressOre); - data.setInteger("usageOre", this.usageOre); - data.setInteger("usageFluid", this.usageFluid); - data.setInteger("processFluidTime", this.getDurationFluid()); - data.setInteger("processOreTime", this.getDurationMetal()); - if(this.leftStack != null) { - data.setInteger("leftType", leftStack.material.id); - data.setInteger("leftAmount", leftStack.amount); - } - if(this.rightStack != null) { - data.setInteger("rightType", rightStack.material.id); - data.setInteger("rightAmount", rightStack.amount); - } - for(int i = 0; i < 4; i++) tanks[i].writeToNBT(data, "t" + i); - this.networkPack(data, 50); - } - } - - public DirPos[] getConPos() { - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); - ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - - return new DirPos[] { - new DirPos(xCoord - dir.offsetX * 6, yCoord, zCoord - dir.offsetZ * 6, dir.getOpposite()), - new DirPos(xCoord - dir.offsetX * 6 + rot.offsetX, yCoord, zCoord - dir.offsetZ * 6 + rot.offsetZ, dir.getOpposite()), - new DirPos(xCoord - dir.offsetX * 6 - rot.offsetX, yCoord, zCoord - dir.offsetZ * 6 - rot.offsetZ, dir.getOpposite()), - new DirPos(xCoord + dir.offsetX * 6, yCoord, zCoord + dir.offsetZ * 6, dir), - new DirPos(xCoord + dir.offsetX * 6 + rot.offsetX, yCoord, zCoord + dir.offsetZ * 6 + rot.offsetZ, dir), - new DirPos(xCoord + dir.offsetX * 6 - rot.offsetX, yCoord, zCoord + dir.offsetZ * 6 - rot.offsetZ, dir) - }; - } - - @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.progressFluid = nbt.getInteger("progressFluid"); - this.progressOre = nbt.getInteger("progressOre"); - this.usageOre = nbt.getInteger("usageOre"); - this.usageFluid = nbt.getInteger("usageFluid"); - this.processFluidTime = nbt.getInteger("processFluidTime"); - this.processOreTime = nbt.getInteger("processOreTime"); - if(nbt.hasKey("leftType")) this.leftStack = new MaterialStack(Mats.matById.get(nbt.getInteger("leftType")), nbt.getInteger("leftAmount")); - else this.leftStack = null; - if(nbt.hasKey("rightType")) this.rightStack = new MaterialStack(Mats.matById.get(nbt.getInteger("rightType")), nbt.getInteger("rightAmount")); - else this.rightStack = null; - for(int i = 0; i < 4; i++) tanks[i].readFromNBT(nbt, "t" + i); - } - - public boolean canProcessFluid() { - - if(this.power < usageFluid) return false; - - ElectrolysisRecipe recipe = ElectrolyserFluidRecipes.recipes.get(tanks[0].getTankType()); - - if(recipe == null) return false; - if(recipe.amount > tanks[0].getFill()) return false; - if(recipe.output1.type == tanks[1].getTankType() && recipe.output1.fill + tanks[1].getFill() > tanks[1].getMaxFill()) return false; - if(recipe.output2.type == tanks[2].getTankType() && recipe.output2.fill + tanks[2].getFill() > tanks[2].getMaxFill()) return false; - - if(recipe.byproduct != null) { - - for(int i = 0; i < recipe.byproduct.length; i++) { - ItemStack slot = slots[11 + i]; - ItemStack byproduct = recipe.byproduct[i]; - - if(slot == null) continue; - if(!slot.isItemEqual(byproduct)) return false; - if(slot.stackSize + byproduct.stackSize > slot.getMaxStackSize()) return false; - } - } - - return true; - } - - public void processFluids() { - - ElectrolysisRecipe recipe = ElectrolyserFluidRecipes.recipes.get(tanks[0].getTankType()); - tanks[0].setFill(tanks[0].getFill() - recipe.amount); - tanks[1].setTankType(recipe.output1.type); - tanks[2].setTankType(recipe.output2.type); - tanks[1].setFill(tanks[1].getFill() + recipe.output1.fill); - tanks[2].setFill(tanks[2].getFill() + recipe.output2.fill); - - if(recipe.byproduct != null) { - - for(int i = 0; i < recipe.byproduct.length; i++) { - ItemStack slot = slots[11 + i]; - ItemStack byproduct = recipe.byproduct[i]; - - if(slot == null) { - slots[11 + i] = byproduct.copy(); - } else { - slots[11 + i].stackSize += byproduct.stackSize; - } - } - } - } - - public boolean canProcessMetal() { - - if(slots[14] == null) return false; - if(this.power < usageOre) return false; - if(this.tanks[3].getFill() < 100) return false; - - ElectrolysisMetalRecipe recipe = ElectrolyserMetalRecipes.getRecipe(slots[14]); - if(recipe == null) return false; - - if(leftStack != null && recipe.output1 != null) { - if(recipe.output1.material != leftStack.material) return false; - if(recipe.output1.amount + leftStack.amount > this.maxMaterial) return false; - } - - if(rightStack != null && recipe.output2 != null) { - if(recipe.output2.material != rightStack.material) return false; - if(recipe.output2.amount + rightStack.amount > this.maxMaterial) return false; - } - - if(recipe.byproduct != null) { - - for(int i = 0; i < recipe.byproduct.length; i++) { - ItemStack slot = slots[15 + i]; - ItemStack byproduct = recipe.byproduct[i]; - - if(slot == null) continue; - if(!slot.isItemEqual(byproduct)) return false; - if(slot.stackSize + byproduct.stackSize > slot.getMaxStackSize()) return false; - } - } - - return true; - } - - public void processMetal() { - - ElectrolysisMetalRecipe recipe = ElectrolyserMetalRecipes.getRecipe(slots[14]); - if(recipe.output1 != null) - if(leftStack == null) { - leftStack = new MaterialStack(recipe.output1.material, recipe.output1.amount); - } else { - leftStack.amount += recipe.output1.amount; - } - - if(recipe.output2 != null) - if(rightStack == null ) { - rightStack = new MaterialStack(recipe.output2.material, recipe.output2.amount); - } else { - rightStack.amount += recipe.output2.amount; - } - - if(recipe.byproduct != null) { - - for(int i = 0; i < recipe.byproduct.length; i++) { - ItemStack slot = slots[15 + i]; - ItemStack byproduct = recipe.byproduct[i]; - - if(slot == null) { - slots[15 + i] = byproduct.copy(); - } else { - slots[15 + i].stackSize += byproduct.stackSize; - } - } - } - - this.tanks[3].setFill(this.tanks[3].getFill() - 100); - this.decrStackSize(14, 1); - } - - public int getDurationMetal() { - ElectrolysisMetalRecipe result = ElectrolyserMetalRecipes.getRecipe(slots[14]); - int base = result != null ? result.duration : 600; - int speed = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3) - Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 1); - return (int) Math.ceil((base * Math.max(1F - 0.25F * speed, 0.2))); - } - public int getDurationFluid() { - ElectrolysisRecipe result = ElectrolyserFluidRecipes.getRecipe(tanks[0].getTankType()); - int base = result != null ? result.duration : 100; - int speed = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3) - Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 1); - return (int) Math.ceil((base * Math.max(1F - 0.25F * speed, 0.2))); - - } - - public int getCycleCount() { - int speed = UpgradeManager.getLevel(UpgradeType.OVERDRIVE); - return Math.min(1 + speed * 2, 7); - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - - this.power = nbt.getLong("power"); - this.progressFluid = nbt.getInteger("progressFluid"); - this.progressOre = nbt.getInteger("progressOre"); - this.processFluidTime = nbt.getInteger("processFluidTime"); - this.processOreTime = nbt.getInteger("processOreTime"); - if(nbt.hasKey("leftType")) this.leftStack = new MaterialStack(Mats.matById.get(nbt.getInteger("leftType")), nbt.getInteger("leftAmount")); - else this.leftStack = null; - if(nbt.hasKey("rightType")) this.rightStack = new MaterialStack(Mats.matById.get(nbt.getInteger("rightType")), nbt.getInteger("rightAmount")); - else this.rightStack = null; - for(int i = 0; i < 4; i++) tanks[i].readFromNBT(nbt, "t" + i); - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - - nbt.setLong("power", this.power); - nbt.setInteger("progressFluid", this.progressFluid); - nbt.setInteger("progressOre", this.progressOre); - nbt.setInteger("processFluidTime", getDurationFluid()); - nbt.setInteger("processOreTime", getDurationMetal()); - if(this.leftStack != null) { - nbt.setInteger("leftType", leftStack.material.id); - nbt.setInteger("leftAmount", leftStack.amount); - } - if(this.rightStack != null) { - nbt.setInteger("rightType", rightStack.material.id); - nbt.setInteger("rightAmount", rightStack.amount); - } - for(int i = 0; i < 4; i++) tanks[i].writeToNBT(nbt, "t" + i); - - } - - AxisAlignedBB bb = null; - - @Override - public AxisAlignedBB getRenderBoundingBox() { - - if(bb == null) { - bb = AxisAlignedBB.getBoundingBox( - xCoord - 5, - yCoord - 0, - zCoord - 5, - xCoord + 6, - yCoord + 4, - zCoord + 6 - ); - } - - return bb; - } - - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() { - return 65536.0D; - } - - @Override - public long getPower() { - return this.power; - } - - @Override - public long getMaxPower() { - return maxPower; - } - - @Override - public void setPower(long power) { - this.power = power; - } - - @Override - public FluidTank[] getAllTanks() { - return tanks; - } - - @Override - public FluidTank[] getSendingTanks() { - return new FluidTank[] {tanks[1], tanks[2]}; - } - - @Override - public FluidTank[] getReceivingTanks() { - return new FluidTank[] {tanks[0], tanks[3]}; - } - - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - if(ID == 0) return new ContainerElectrolyserFluid(player.inventory, this); - return new ContainerElectrolyserMetal(player.inventory, this); - } - - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - if(ID == 0) return new GUIElectrolyserFluid(player.inventory, this); - return new GUIElectrolyserMetal(player.inventory, this); - } - - @Override - public void receiveControl(NBTTagCompound data) { } - - @Override - public void receiveControl(EntityPlayer player, NBTTagCompound data) { - - if(data.hasKey("sgm")) FMLNetworkHandler.openGui(player, MainRegistry.instance, 1, worldObj, xCoord, yCoord, zCoord); - if(data.hasKey("sgf")) FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, worldObj, xCoord, yCoord, zCoord); - } - - @Override - public boolean hasPermission(EntityPlayer player) { - return this.isUseableByPlayer(player); - } - - @Override - public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { - return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE; - } - - @Override - public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { - info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_electrolyser)); - if(type == UpgradeType.SPEED) { - info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); - info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); - } - if(type == UpgradeType.POWER) { - info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 25) + "%")); - info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (25) + "%")); - } - if(type == UpgradeType.OVERDRIVE) { - info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); - } - } - - @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 3; - if(type == UpgradeType.POWER) return 3; - if(type == UpgradeType.OVERDRIVE) return 3; - return 0; - } -} +package com.hbm.tileentity.machine; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.UpgradeManagerNT; +import com.hbm.inventory.container.ContainerElectrolyserFluid; +import com.hbm.inventory.container.ContainerElectrolyserMetal; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.gui.GUIElectrolyserFluid; +import com.hbm.inventory.gui.GUIElectrolyserMetal; +import com.hbm.inventory.material.MaterialShapes; +import com.hbm.inventory.material.Mats; +import com.hbm.inventory.material.Mats.MaterialStack; +import com.hbm.inventory.recipes.ElectrolyserFluidRecipes; +import com.hbm.inventory.recipes.ElectrolyserFluidRecipes.ElectrolysisRecipe; +import com.hbm.inventory.recipes.ElectrolyserMetalRecipes; +import com.hbm.inventory.recipes.ElectrolyserMetalRecipes.ElectrolysisMetalRecipe; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; +import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.*; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.util.BobMathUtil; +import com.hbm.util.CrucibleUtil; +import com.hbm.util.I18nUtil; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.energymk2.IEnergyReceiverMK2; +import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +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.EnumChatFormatting; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityElectrolyser extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider, IFluidCopiable, IMetalCopiable { + + public long power; + public static final long maxPower = 20000000; + public static final int usageOreBase = 10_000; + public static final int usageFluidBase = 10_000; + public int usageOre; + public int usageFluid; + + public int progressFluid; + public int processFluidTime = 100; + public int progressOre; + public int processOreTime = 600; + + public MaterialStack leftStack; + public MaterialStack rightStack; + public int maxMaterial = MaterialShapes.BLOCK.q(16); + + public FluidTank[] tanks; + + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + + public TileEntityElectrolyser() { + //0: Battery + //1-2: Upgrades + //// FLUID + //3-4: Fluid ID + //5-10: Fluid IO + //11-13: Byproducts + //// METAL + //14: Crystal + //15-20: Outputs + super(21); + tanks = new FluidTank[4]; + tanks[0] = new FluidTank(Fluids.WATER, 16000); + tanks[1] = new FluidTank(Fluids.HYDROGEN, 16000); + tanks[2] = new FluidTank(Fluids.OXYGEN, 16000); + tanks[3] = new FluidTank(Fluids.NITRIC_ACID, 16000); + } + + @Override + public int[] getAccessibleSlotsFromSide(int meta) { + return new int[] { 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 }; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemStack) { + if(i == 14) return ElectrolyserMetalRecipes.getRecipe(itemStack) != null; + return false; + } + + @Override + public boolean canExtractItem(int i, ItemStack itemStack, int j) { + return i != 14; + } + + @Override + public String getName() { + return "container.machineElectrolyser"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); + this.tanks[0].setType(3, 4, slots); + this.tanks[0].loadTank(5, 6, slots); + this.tanks[1].unloadTank(7, 8, slots); + this.tanks[2].unloadTank(9, 10, slots); + + if(worldObj.getTotalWorldTime() % 20 == 0) { + for(DirPos pos : this.getConPos()) { + this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.trySubscribe(tanks[3].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + + if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[2].getFill() > 0) this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + upgradeManager.checkSlots(this, slots, 1, 2); + int speedLevel = upgradeManager.getLevel(UpgradeType.SPEED); + int powerLevel = upgradeManager.getLevel(UpgradeType.POWER); + + usageOre = usageOreBase - usageOreBase * powerLevel / 4 + usageOreBase * speedLevel; + usageFluid = usageFluidBase - usageFluidBase * powerLevel / 4 + usageFluidBase * speedLevel; + + for(int i = 0; i < getCycleCount(); i++) { + if (this.canProcessFluid()) { + this.progressFluid++; + this.power -= this.usageFluid; + + if (this.progressFluid >= this.getDurationFluid()) { + this.processFluids(); + this.progressFluid = 0; + this.markChanged(); + } + } + + if (this.canProcessMetal()) { + this.progressOre++; + this.power -= this.usageOre; + + if (this.progressOre >= this.getDurationMetal()) { + this.processMetal(); + this.progressOre = 0; + this.markChanged(); + } + } + } + + if(this.leftStack != null) { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); + List toCast = new ArrayList(); + toCast.add(this.leftStack); + + Vec3 impact = Vec3.createVectorHelper(0, 0, 0); + MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2D, zCoord + 0.5D + dir.offsetZ * 5.875D, 6, true, toCast, MaterialShapes.NUGGET.q(3) * Math.max (getCycleCount() * speedLevel, 1), impact); + + if(didPour != null) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "foundry"); + data.setInteger("color", didPour.material.moltenColor); + data.setByte("dir", (byte) dir.ordinal()); + data.setFloat("off", 0.625F); + data.setFloat("base", 0.625F); + data.setFloat("len", Math.max(1F, yCoord - (float) (Math.ceil(impact.yCoord) - 0.875) + 2)); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2, zCoord + 0.5D + dir.offsetZ * 5.875D), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 50)); + + if(this.leftStack.amount <= 0) this.leftStack = null; + } + } + + if(this.rightStack != null) { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); + List toCast = new ArrayList(); + toCast.add(this.rightStack); + + Vec3 impact = Vec3.createVectorHelper(0, 0, 0); + MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2D, zCoord + 0.5D + dir.offsetZ * 5.875D, 6, true, toCast, MaterialShapes.NUGGET.q(3) * Math.max (getCycleCount() * speedLevel, 1), impact); + + if(didPour != null) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "foundry"); + data.setInteger("color", didPour.material.moltenColor); + data.setByte("dir", (byte) dir.ordinal()); + data.setFloat("off", 0.625F); + data.setFloat("base", 0.625F); + data.setFloat("len", Math.max(1F, yCoord - (float) (Math.ceil(impact.yCoord) - 0.875) + 2)); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2, zCoord + 0.5D + dir.offsetZ * 5.875D), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 50)); + + if(this.rightStack.amount <= 0) this.rightStack = null; + } + } + + this.networkPackNT(50); + } + } + + public DirPos[] getConPos() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + return new DirPos[] { + new DirPos(xCoord - dir.offsetX * 6, yCoord, zCoord - dir.offsetZ * 6, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 6 + rot.offsetX, yCoord, zCoord - dir.offsetZ * 6 + rot.offsetZ, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 6 - rot.offsetX, yCoord, zCoord - dir.offsetZ * 6 - rot.offsetZ, dir.getOpposite()), + new DirPos(xCoord + dir.offsetX * 6, yCoord, zCoord + dir.offsetZ * 6, dir), + new DirPos(xCoord + dir.offsetX * 6 + rot.offsetX, yCoord, zCoord + dir.offsetZ * 6 + rot.offsetZ, dir), + new DirPos(xCoord + dir.offsetX * 6 - rot.offsetX, yCoord, zCoord + dir.offsetZ * 6 - rot.offsetZ, dir) + }; + } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + buf.writeInt(this.progressFluid); + buf.writeInt(this.progressOre); + buf.writeInt(this.usageOre); + buf.writeInt(this.usageFluid); + buf.writeInt(this.getDurationFluid()); + buf.writeInt(this.getDurationMetal()); + for(int i = 0; i < 4; i++) tanks[i].serialize(buf); + buf.writeBoolean(this.leftStack != null); + buf.writeBoolean(this.rightStack != null); + if(this.leftStack != null) { + buf.writeInt(leftStack.material.id); + buf.writeInt(leftStack.amount); + } + if(this.rightStack != null) { + buf.writeInt(rightStack.material.id); + buf.writeInt(rightStack.amount); + } + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.progressFluid = buf.readInt(); + this.progressOre = buf.readInt(); + this.usageOre = buf.readInt(); + this.usageFluid = buf.readInt(); + this.processFluidTime = buf.readInt(); + this.processOreTime = buf.readInt(); + for(int i = 0; i < 4; i++) tanks[i].deserialize(buf); + boolean left = buf.readBoolean(); + boolean right = buf.readBoolean(); + if(left) { + this.leftStack = new MaterialStack(Mats.matById.get(buf.readInt()), buf.readInt()); + } + if(right) { + this.rightStack = new MaterialStack(Mats.matById.get(buf.readInt()), buf.readInt()); + } + } + + public boolean canProcessFluid() { + + if(this.power < usageFluid) return false; + + ElectrolysisRecipe recipe = ElectrolyserFluidRecipes.recipes.get(tanks[0].getTankType()); + + if(recipe == null) return false; + if(recipe.amount > tanks[0].getFill()) return false; + if(recipe.output1.type == tanks[1].getTankType() && recipe.output1.fill + tanks[1].getFill() > tanks[1].getMaxFill()) return false; + if(recipe.output2.type == tanks[2].getTankType() && recipe.output2.fill + tanks[2].getFill() > tanks[2].getMaxFill()) return false; + + if(recipe.byproduct != null) { + + for(int i = 0; i < recipe.byproduct.length; i++) { + ItemStack slot = slots[11 + i]; + ItemStack byproduct = recipe.byproduct[i]; + + if(slot == null) continue; + if(!slot.isItemEqual(byproduct)) return false; + if(slot.stackSize + byproduct.stackSize > slot.getMaxStackSize()) return false; + } + } + + return true; + } + + public void processFluids() { + + ElectrolysisRecipe recipe = ElectrolyserFluidRecipes.recipes.get(tanks[0].getTankType()); + tanks[0].setFill(tanks[0].getFill() - recipe.amount); + tanks[1].setTankType(recipe.output1.type); + tanks[2].setTankType(recipe.output2.type); + tanks[1].setFill(tanks[1].getFill() + recipe.output1.fill); + tanks[2].setFill(tanks[2].getFill() + recipe.output2.fill); + + if(recipe.byproduct != null) { + + for(int i = 0; i < recipe.byproduct.length; i++) { + ItemStack slot = slots[11 + i]; + ItemStack byproduct = recipe.byproduct[i]; + + if(slot == null) { + slots[11 + i] = byproduct.copy(); + } else { + slots[11 + i].stackSize += byproduct.stackSize; + } + } + } + } + + public boolean canProcessMetal() { + + if(slots[14] == null) return false; + if(this.power < usageOre) return false; + if(this.tanks[3].getFill() < 100) return false; + + ElectrolysisMetalRecipe recipe = ElectrolyserMetalRecipes.getRecipe(slots[14]); + if(recipe == null) return false; + + if(leftStack != null && recipe.output1 != null) { + if(recipe.output1.material != leftStack.material) return false; + if(recipe.output1.amount + leftStack.amount > this.maxMaterial) return false; + } + + if(rightStack != null && recipe.output2 != null) { + if(recipe.output2.material != rightStack.material) return false; + if(recipe.output2.amount + rightStack.amount > this.maxMaterial) return false; + } + + if(recipe.byproduct != null) { + + for(int i = 0; i < recipe.byproduct.length; i++) { + ItemStack slot = slots[15 + i]; + ItemStack byproduct = recipe.byproduct[i]; + + if(slot == null) continue; + if(!slot.isItemEqual(byproduct)) return false; + if(slot.stackSize + byproduct.stackSize > slot.getMaxStackSize()) return false; + } + } + + return true; + } + + public void processMetal() { + + ElectrolysisMetalRecipe recipe = ElectrolyserMetalRecipes.getRecipe(slots[14]); + if(recipe.output1 != null) + if(leftStack == null) { + leftStack = new MaterialStack(recipe.output1.material, recipe.output1.amount); + } else { + leftStack.amount += recipe.output1.amount; + } + + if(recipe.output2 != null) + if(rightStack == null ) { + rightStack = new MaterialStack(recipe.output2.material, recipe.output2.amount); + } else { + rightStack.amount += recipe.output2.amount; + } + + if(recipe.byproduct != null) { + + for(int i = 0; i < recipe.byproduct.length; i++) { + ItemStack slot = slots[15 + i]; + ItemStack byproduct = recipe.byproduct[i]; + + if(slot == null) { + slots[15 + i] = byproduct.copy(); + } else { + slots[15 + i].stackSize += byproduct.stackSize; + } + } + } + + this.tanks[3].setFill(this.tanks[3].getFill() - 100); + this.decrStackSize(14, 1); + } + + public int getDurationMetal() { + ElectrolysisMetalRecipe result = ElectrolyserMetalRecipes.getRecipe(slots[14]); + int base = result != null ? result.duration : 600; + int speed = upgradeManager.getLevel(UpgradeType.SPEED) - Math.min(upgradeManager.getLevel(UpgradeType.POWER), 1); + return (int) Math.ceil((base * Math.max(1F - 0.25F * speed, 0.2))); + } + public int getDurationFluid() { + ElectrolysisRecipe result = ElectrolyserFluidRecipes.getRecipe(tanks[0].getTankType()); + int base = result != null ? result.duration : 100; + int speed = upgradeManager.getLevel(UpgradeType.SPEED) - Math.min(upgradeManager.getLevel(UpgradeType.POWER), 1); + return (int) Math.ceil((base * Math.max(1F - 0.25F * speed, 0.2))); + + } + + public int getCycleCount() { + int speed = upgradeManager.getLevel(UpgradeType.OVERDRIVE); + return Math.min(1 + speed * 2, 7); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.power = nbt.getLong("power"); + this.progressFluid = nbt.getInteger("progressFluid"); + this.progressOre = nbt.getInteger("progressOre"); + this.processFluidTime = nbt.getInteger("processFluidTime"); + this.processOreTime = nbt.getInteger("processOreTime"); + if(nbt.hasKey("leftType")) this.leftStack = new MaterialStack(Mats.matById.get(nbt.getInteger("leftType")), nbt.getInteger("leftAmount")); + else this.leftStack = null; + if(nbt.hasKey("rightType")) this.rightStack = new MaterialStack(Mats.matById.get(nbt.getInteger("rightType")), nbt.getInteger("rightAmount")); + else this.rightStack = null; + for(int i = 0; i < 4; i++) tanks[i].readFromNBT(nbt, "t" + i); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setLong("power", this.power); + nbt.setInteger("progressFluid", this.progressFluid); + nbt.setInteger("progressOre", this.progressOre); + nbt.setInteger("processFluidTime", getDurationFluid()); + nbt.setInteger("processOreTime", getDurationMetal()); + if(this.leftStack != null) { + nbt.setInteger("leftType", leftStack.material.id); + nbt.setInteger("leftAmount", leftStack.amount); + } + if(this.rightStack != null) { + nbt.setInteger("rightType", rightStack.material.id); + nbt.setInteger("rightAmount", rightStack.amount); + } + for(int i = 0; i < 4; i++) tanks[i].writeToNBT(nbt, "t" + i); + + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 5, + yCoord - 0, + zCoord - 5, + xCoord + 6, + yCoord + 4, + zCoord + 6 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public long getPower() { + return this.power; + } + + @Override + public long getMaxPower() { + return maxPower; + } + + @Override + public void setPower(long power) { + this.power = power; + } + + @Override + public FluidTank[] getAllTanks() { + return tanks; + } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] {tanks[1], tanks[2]}; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tanks[0], tanks[3]}; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + if(ID == 0) return new ContainerElectrolyserFluid(player.inventory, this); + return new ContainerElectrolyserMetal(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + if(ID == 0) return new GUIElectrolyserFluid(player.inventory, this); + return new GUIElectrolyserMetal(player.inventory, this); + } + + @Override + public void receiveControl(NBTTagCompound data) { } + + @Override + public void receiveControl(EntityPlayer player, NBTTagCompound data) { + + if(data.hasKey("sgm")) FMLNetworkHandler.openGui(player, MainRegistry.instance, 1, worldObj, xCoord, yCoord, zCoord); + if(data.hasKey("sgf")) FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, worldObj, xCoord, yCoord, zCoord); + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_electrolyser)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (25) + "%")); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 3); + upgrades.put(UpgradeType.POWER, 3); + upgrades.put(UpgradeType.OVERDRIVE, 3); + return upgrades; + } + + @Override + public FluidTank getTankToPaste() { + return tanks[0]; + } + + @Override + public NBTTagCompound getSettings(World world, int x, int y, int z) { + NBTTagCompound tag = new NBTTagCompound(); + if(getFluidIDToCopy().length > 0) + tag.setIntArray("fluidID", getFluidIDToCopy()); + if(getMatsToCopy().length > 0) + tag.setIntArray("matFilter", getMatsToCopy()); + return tag; + } + + @Override + public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { + IFluidCopiable.super.pasteSettings(nbt, index, world, player, x, y, z); + } + + @Override + public String[] infoForDisplay(World world, int x, int y, int z) { + ArrayList names = new ArrayList<>(); + int[] fluidIDs = getFluidIDToCopy(); + int[] matIDs = getMatsToCopy(); + + for (int fluidID : fluidIDs) { + names.add(Fluids.fromID(fluidID).getUnlocalizedName()); + } + for (int matID : matIDs) { + names.add(Mats.matById.get(matID).getUnlocalizedName()); + } + + return names.toArray(new String[0]); + } + + @Override + public int[] getMatsToCopy() { + ArrayList types = new ArrayList<>(); + if(leftStack != null) types.add(leftStack.material.id); + if(rightStack != null) types.add(rightStack.material.id); + return BobMathUtil.intCollectionToArray(types); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java index 5867f36d2..e7f1e3858 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFEL.java @@ -26,7 +26,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -313,7 +312,7 @@ public class TileEntityFEL extends TileEntityMachineBase implements IEnergyRecei @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIFEL(player.inventory, this); } } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java b/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java index 417c24894..7ddaaca52 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java @@ -1,14 +1,18 @@ package com.hbm.tileentity.machine; +import java.io.IOException; import java.util.ArrayList; import java.util.List; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.inventory.container.ContainerForceField; import com.hbm.inventory.gui.GUIForceField; import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TEFFPacket; +import com.hbm.packet.toclient.TEFFPacket; +import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityLoadedBase; @@ -17,7 +21,6 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -31,10 +34,10 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityForceField extends TileEntityLoadedBase implements ISidedInventory, IEnergyReceiverMK2, IGUIProvider { +public class TileEntityForceField extends TileEntityLoadedBase implements ISidedInventory, IEnergyReceiverMK2, IGUIProvider, IConfigurableMachine { private ItemStack slots[]; - + public int health = 100; public int maxHealth = 100; public long power; @@ -44,17 +47,55 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided public float radius = 16; public boolean isOn = false; public int color = 0x0000FF; - public final int baseCon = 1000; - public final int radCon = 500; - public final int shCon = 250; - public static final long maxPower = 1000000; - + public static int baseCon = 1000; + public static int radCon = 500; + public static int shCon = 250; + public static long maxPower = 1000000; + private static final int[] slots_top = new int[] {0}; private static final int[] slots_bottom = new int[] {0}; private static final int[] slots_side = new int[] {0}; - + private String customName; - + + // config options stuff. + public static int baseRadius = 16; + public static int radUpgrade = 16; + public static int shUpgrade = 50; + public static double cooldownModif = 1; + public static double healthRegenModif = 1; + + @Override + public String getConfigName() { + return "forcefield"; + } + + @Override + public void readIfPresent(JsonObject obj) { + maxPower = IConfigurableMachine.grab(obj, "L:powerCap", maxPower); + baseCon = IConfigurableMachine.grab(obj, "I:baseConsumption", baseCon); + radCon = IConfigurableMachine.grab(obj, "I:radiusConsumption", radCon); + shCon = IConfigurableMachine.grab(obj, "I:shieldConsumption", shCon); + baseRadius = IConfigurableMachine.grab(obj, "I:baseRadius", baseRadius); + radUpgrade = IConfigurableMachine.grab(obj, "I:radiusUpgrade", radUpgrade); + shUpgrade = IConfigurableMachine.grab(obj, "I:shieldUpgrade", shUpgrade); + cooldownModif = IConfigurableMachine.grab(obj, "D:cooldownModifier", cooldownModif); + healthRegenModif = IConfigurableMachine.grab(obj, "D:healthRegenModifier", healthRegenModif); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("L:powerCap").value(maxPower); + writer.name("I:baseConsumption").value(baseCon); + writer.name("I:radiusConsumption").value(radCon); + writer.name("I:shieldConsumption").value(shCon); + writer.name("I:baseRadius").value(baseRadius); + writer.name("I:radiusUpgrade").value(radUpgrade); + writer.name("I:shieldUpgrade").value(shUpgrade); + writer.name("D:cooldownModifier").value(cooldownModif); + writer.name("D:healthRegenModifier").value(healthRegenModif); + } + public TileEntityForceField() { slots = new ItemStack[3]; } @@ -99,7 +140,7 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided public boolean hasCustomInventoryName() { return this.customName != null && this.customName.length() > 0; } - + public void setCustomName(String name) { this.customName = name; } @@ -118,7 +159,7 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=64; } } - + //You scrubs aren't needed for anything (right now) @Override public void openInventory() {} @@ -130,13 +171,13 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided if(i == 0) if(itemStack.getItem() instanceof IBatteryItem) return true; - + if(i == 1) return true; - + return false; } - + @Override public ItemStack decrStackSize(int i, int j) { if(slots[i] != null) @@ -152,18 +193,18 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided { slots[i] = null; } - + return itemStack1; } else { return null; } } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); NBTTagList list = nbt.getTagList("items", 10); - + this.power = nbt.getLong("powerTime"); this.health = nbt.getInteger("health"); this.maxHealth = nbt.getInteger("maxHealth"); @@ -171,9 +212,9 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided this.blink = nbt.getInteger("blink"); this.radius = nbt.getFloat("radius"); this.isOn = nbt.getBoolean("isOn"); - + slots = new ItemStack[getSizeInventory()]; - + for(int i = 0; i < list.tagCount(); i++) { NBTTagCompound nbt1 = list.getCompoundTagAt(i); @@ -184,7 +225,7 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided } } } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -195,9 +236,9 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided nbt.setInteger("blink", blink); nbt.setFloat("radius", radius); nbt.setBoolean("isOn", isOn); - + NBTTagList list = new NBTTagList(); - + for(int i = 0; i < slots.length; i++) { if(slots[i] != null) @@ -210,7 +251,7 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided } nbt.setTag("items", list); } - + @Override public int[] getAccessibleSlotsFromSide(int p_94128_1_) { @@ -226,41 +267,41 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided public boolean canExtractItem(int i, ItemStack itemStack, int j) { return false; } - + public int getHealthScaled(int i) { return (health * i) / maxHealth; } - + public long getPowerScaled(long i) { return (power * i) / maxPower; } - + @Override public void updateEntity() { if(!worldObj.isRemote) { - + updateConnections(); - + int rStack = 0; int hStack = 0; - radius = 16; + radius = baseRadius; maxHealth = 100; - + if(slots[1] != null && slots[1].getItem() == ModItems.upgrade_radius) { rStack = slots[1].stackSize; - radius += rStack * 16; + radius += rStack * radUpgrade; } - + if(slots[2] != null && slots[2].getItem() == ModItems.upgrade_health) { hStack = slots[2].stackSize; - maxHealth += hStack * 50; + maxHealth += hStack * shUpgrade; } - - this.powerCons = this.baseCon + rStack * this.radCon + hStack * this.shCon; - + + this.powerCons = baseCon + rStack * radCon + hStack * shCon; + power = Library.chargeTEFromItems(slots, 0, power, maxPower); - + if(blink > 0) { blink--; color = 0xFF0000; @@ -268,20 +309,20 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided color = 0x00FF00; } } - + if(cooldown > 0) { cooldown--; } else { if(health < maxHealth) - health += maxHealth / 100; - + health += (maxHealth / 100) * healthRegenModif; + if(health > maxHealth) health = maxHealth; } - + if(isOn && cooldown == 0 && health > 0 && power >= powerCons) { doField(radius); - + if(!worldObj.isRemote) { power -= powerCons; } @@ -294,34 +335,34 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided if(power < powerCons) power = 0; } - + if(!worldObj.isRemote) { PacketDispatcher.wrapper.sendToAllAround(new TEFFPacket(xCoord, yCoord, zCoord, radius, health, maxHealth, (int) power, isOn, color, cooldown), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 500)); } } - + private int impact(Entity e) { - + double mass = e.height * e.width * e.width; double speed = getMotionWithFallback(e); return (int)(mass * speed * 50); } - + private void damage(int ouch) { health -= ouch; - + if(ouch >= (this.maxHealth / 250)) blink = 5; - + if(health <= 0) { health = 0; - cooldown = (int) (100 + radius); + cooldown = (int) (100 + radius * (float)cooldownModif); } } List outside = new ArrayList(); List inside = new ArrayList(); - + private void doField(float rad) { List oLegacy = new ArrayList(outside); @@ -329,18 +370,18 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided outside.clear(); inside.clear(); - + List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord + 0.5 - (rad + 25), yCoord + 0.5 - (rad + 25), zCoord + 0.5 - (rad + 25), xCoord + 0.5 + (rad + 25), yCoord + 0.5 + (rad + 25), zCoord + 0.5 + (rad + 25))); - + for(Object o : list) { - + if(o instanceof Entity && !(o instanceof EntityPlayer)) { Entity entity = (Entity)o; - + double dist = Math.sqrt(Math.pow(xCoord + 0.5 - entity.posX, 2) + Math.pow(yCoord + 0.5 - entity.posY, 2) + Math.pow(zCoord + 0.5 - entity.posZ, 2)); - + boolean out = dist > rad; - + //if the entity has not been registered yet if(!oLegacy.contains(entity) && !iLegacy.contains(entity)) { if(out) { @@ -348,21 +389,21 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided } else { inside.add(entity); } - + //if the entity has been detected before } else { - + //if the entity has crossed inwards if(oLegacy.contains(entity) && !out) { Vec3 vec = Vec3.createVectorHelper(xCoord + 0.5 - entity.posX, yCoord + 0.5 - entity.posY, zCoord + 0.5 - entity.posZ); vec = vec.normalize(); - + double mx = -vec.xCoord * (rad + 1); double my = -vec.yCoord * (rad + 1); double mz = -vec.zCoord * (rad + 1); - + entity.setLocationAndAngles(xCoord + 0.5 + mx, yCoord + 0.5 + my, zCoord + 0.5 + mz, 0, 0); - + double mo = Math.sqrt(Math.pow(entity.motionX, 2) + Math.pow(entity.motionY, 2) + Math.pow(entity.motionZ, 2)); entity.motionX = vec.xCoord * -mo; @@ -375,24 +416,24 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided worldObj.playSoundAtEntity(entity, "hbm:weapon.sparkShoot", 2.5F, 1.0F); outside.add(entity); - + if(!worldObj.isRemote) { this.damage(this.impact(entity)); } - + } else - + //if the entity has crossed outwards if(iLegacy.contains(entity) && out) { Vec3 vec = Vec3.createVectorHelper(xCoord + 0.5 - entity.posX, yCoord + 0.5 - entity.posY, zCoord + 0.5 - entity.posZ); vec = vec.normalize(); - + double mx = -vec.xCoord * (rad - 1); double my = -vec.yCoord * (rad - 1); double mz = -vec.zCoord * (rad - 1); entity.setLocationAndAngles(xCoord + 0.5 + mx, yCoord + 0.5 + my, zCoord + 0.5 + mz, 0, 0); - + double mo = Math.sqrt(Math.pow(entity.motionX, 2) + Math.pow(entity.motionY, 2) + Math.pow(entity.motionZ, 2)); entity.motionX = vec.xCoord * mo; @@ -405,13 +446,13 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided worldObj.playSoundAtEntity(entity, "hbm:weapon.sparkShoot", 2.5F, 1.0F); inside.add(entity); - + if(!worldObj.isRemote) { this.damage(this.impact(entity)); } - + } else { - + if(out) { outside.add(entity); } else { @@ -422,7 +463,7 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided } } } - + private double getMotionWithFallback(Entity e) { Vec3 v1 = Vec3.createVectorHelper(e.motionX, e.motionY, e.motionZ); @@ -430,13 +471,13 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided double s1 = v1.lengthVector(); double s2 = v2.lengthVector(); - + if(s1 == 0) return s2; - + if(s2 == 0) return s1; - + return Math.min(s1, s2); } @@ -449,7 +490,7 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided @Override public long getPower() { return power; - + } @Override @@ -461,7 +502,7 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided public boolean canConnect(ForgeDirection dir) { return dir != ForgeDirection.UP && dir != ForgeDirection.UNKNOWN; } - + private void updateConnections() { this.trySubscribe(worldObj, xCoord + 1, yCoord, zCoord, Library.POS_X); this.trySubscribe(worldObj, xCoord - 1, yCoord, zCoord, Library.NEG_X); @@ -474,7 +515,7 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided public AxisAlignedBB getRenderBoundingBox() { return TileEntity.INFINITE_EXTENT_AABB; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() @@ -489,7 +530,7 @@ public class TileEntityForceField extends TileEntityLoadedBase implements ISided @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIForceField(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryBase.java index 9d522c1c0..5c5b8969c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryBase.java @@ -1,15 +1,17 @@ package com.hbm.tileentity.machine; +import com.hbm.interfaces.ICopiable; import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.NTMMaterial; import com.hbm.inventory.material.Mats.MaterialStack; import api.hbm.block.ICrucibleAcceptor; +import com.hbm.tileentity.TileEntityLoadedBase; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; -import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -19,25 +21,25 @@ import net.minecraftforge.common.util.ForgeDirection; * @author hbm * */ -public abstract class TileEntityFoundryBase extends TileEntity implements ICrucibleAcceptor { - +public abstract class TileEntityFoundryBase extends TileEntityLoadedBase implements ICrucibleAcceptor, ICopiable { + public NTMMaterial type; protected NTMMaterial lastType; public int amount; protected int lastAmount; - + @Override public void updateEntity() { - + if(worldObj.isRemote) { - + if(shouldClientReRender() && this.lastType != this.type || this.lastAmount != this.amount) { worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); this.lastType = this.type; this.lastAmount = this.amount; } } else { - + if(this.lastType != this.type || this.lastAmount != this.amount) { worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); this.lastType = this.type; @@ -45,7 +47,7 @@ public abstract class TileEntityFoundryBase extends TileEntity implements ICruci } } } - + /** Recommended FALSE for things that update a whole lot. TRUE if updates only happen once every few ticks. */ protected boolean shouldClientReRender() { return true; @@ -57,7 +59,7 @@ public abstract class TileEntityFoundryBase extends TileEntity implements ICruci this.writeToNBT(nbt); return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); } - + @Override public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { this.readFromNBT(pkt.func_148857_g()); @@ -73,18 +75,18 @@ public abstract class TileEntityFoundryBase extends TileEntity implements ICruci @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + if(this.type == null) { nbt.setInteger("type", -1); } else { nbt.setInteger("type", this.type.id); } - + nbt.setInteger("amount", this.amount); } - + public abstract int getCapacity(); - + /** * Standard check for testing if this material stack can be added to the casting block. Checks:
* - type matching
@@ -95,7 +97,7 @@ public abstract class TileEntityFoundryBase extends TileEntity implements ICruci if(this.amount >= this.getCapacity()) return false; //reject if the buffer is already full return true; } - + /** * Standardized adding of material via pouring or flowing. Does:
* - sets material to match the input @@ -104,17 +106,17 @@ public abstract class TileEntityFoundryBase extends TileEntity implements ICruci */ public MaterialStack standardAdd(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { this.type = stack.material; - + if(stack.amount + this.amount <= this.getCapacity()) { this.amount += stack.amount; return null; } - + int required = this.getCapacity() - this.amount; this.amount = this.getCapacity(); - + stack.amount -= required; - + return stack; } @@ -123,7 +125,7 @@ public abstract class TileEntityFoundryBase extends TileEntity implements ICruci public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return this.standardCheck(world, x, y, z, side, stack); } - + /** Standard flow, no special handling required */ @Override public MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { @@ -142,4 +144,16 @@ public abstract class TileEntityFoundryBase extends TileEntity implements ICruci public MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) { return standardAdd(world, x, y, z, side, stack); } + + @Override + public NBTTagCompound getSettings(World world, int x, int y, int z) { + NBTTagCompound nbt = new NBTTagCompound(); + if(type != null) nbt.setIntArray("matFilter", new int[]{ type.id }); + return nbt; + } + + @Override + public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { + + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryChannel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryChannel.java index 3156aada3..d20e8acb0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryChannel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryChannel.java @@ -6,23 +6,39 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.inventory.material.MaterialShapes; +import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.Mats.MaterialStack; +import com.hbm.inventory.material.NTMMaterial; import api.hbm.block.ICrucibleAcceptor; import net.minecraft.block.Block; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; public class TileEntityFoundryChannel extends TileEntityFoundryBase { public int nextUpdate; public int lastFlow = 0; + + protected NTMMaterial neighborType; + protected boolean hasCheckedNeighbors; + protected int unpropagateTime; @Override public void updateEntity() { if(!worldObj.isRemote) { + + // Initialise before allowing pours, so newly added channels will avoid causing clog feeds + if(!hasCheckedNeighbors) { + List visited = new ArrayList(); + visited.add(this); + + neighborType = checkNeighbors(visited); + hasCheckedNeighbors = true; + } if(this.type == null && this.amount != 0) { this.amount = 0; @@ -35,7 +51,7 @@ public class TileEntityFoundryChannel extends TileEntityFoundryBase { boolean hasOp = false; nextUpdate = 5; - List ints = new ArrayList() {{ add(2); add(3); add(4); add(5); }}; + List ints = new ArrayList() {{ add(2); add(3); add(4); add(5); }}; Collections.shuffle(ints); if(lastFlow > 0) { ints.remove((Integer) this.lastFlow); @@ -54,6 +70,8 @@ public class TileEntityFoundryChannel extends TileEntityFoundryBase { if(left == null) { this.type = null; this.amount = 0; + + propagateMaterial(null); } else { this.amount = left.amount; } @@ -98,10 +116,19 @@ public class TileEntityFoundryChannel extends TileEntityFoundryBase { } } } + + if(neighborType != null && amount == 0) unpropagateTime++; + + // every 5 seconds do a unprop test, will only occur once per contiguous channel per 5 seconds due to the timer getting updated in all channels from the prop + if(unpropagateTime > 100) { + propagateMaterial(null); + } if(this.amount == 0) { this.lastFlow = 0; this.nextUpdate = 5; + } else { + unpropagateTime = 0; } } @@ -117,11 +144,95 @@ public class TileEntityFoundryChannel extends TileEntityFoundryBase { public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); this.lastFlow = nbt.getByte("flow"); + this.neighborType = Mats.matById.get(nbt.getInteger("nType")); + this.hasCheckedNeighbors = nbt.getBoolean("init"); } @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setByte("flow", (byte) this.lastFlow); + nbt.setInteger("nType", this.neighborType != null ? this.neighborType.id : -1); + nbt.setBoolean("init", hasCheckedNeighbors); } + + /** + * Channels accept pouring as normal, except when neighbor channels already have material. + * This prevents a contiguous channel from having multiple different types of material in it, causing clogs. + * If you connect two channels that have different materials already in them, god help you (nah jokes it'll just be clogged until you fix manually) + */ + @Override + public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) { + if(!hasCheckedNeighbors || (neighborType != null && neighborType != stack.material)) return false; + return super.canAcceptPartialPour(world, x, y, z, dX, dY, dZ, side, stack); + } + + /** Upon pouring, propagate the current material type along contiguous channels */ + @Override + public MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) { + propagateMaterial(stack.material); + return super.pour(world, x, y, z, dX, dY, dZ, side, stack); + } + + public void propagateMaterial(NTMMaterial propType) { + if(propType != null && neighborType != null) return; // optimise away any pours that change nothing + + List visited = new ArrayList(); + visited.add(this); + + boolean hasMaterial = propagateMaterial(propType, visited, false); + + // since we are now fully clear, it's safe to unassign the contiguous channel type + if(propType == null && !hasMaterial) { + for(TileEntityFoundryChannel acc : visited) { + acc.neighborType = null; + } + } + } + + protected boolean propagateMaterial(NTMMaterial propType, List visited, boolean hasMaterial) { + // if emptying, don't mark the channel as ready for a new material until it is entirely clear + if(propType != null) { + neighborType = propType; + } else { + // and when empty testing, update the last unpropagate time + unpropagateTime = 0; + } + + for(ForgeDirection dir : new ForgeDirection[] { ForgeDirection.NORTH, ForgeDirection.SOUTH, ForgeDirection.WEST, ForgeDirection.EAST }) { + TileEntity b = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ); + + if(b instanceof TileEntityFoundryChannel && !visited.contains(b)) { + TileEntityFoundryChannel acc = (TileEntityFoundryChannel) b; + visited.add(acc); + + if(acc.amount > 0) hasMaterial = true; + + hasMaterial = acc.propagateMaterial(propType, visited, hasMaterial); + } + } + + return hasMaterial; + } + + protected NTMMaterial checkNeighbors(List visited) { + if(neighborType != null) return neighborType; + + for(ForgeDirection dir : new ForgeDirection[] { ForgeDirection.NORTH, ForgeDirection.SOUTH, ForgeDirection.WEST, ForgeDirection.EAST }) { + TileEntity b = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ); + + if(b instanceof TileEntityFoundryChannel && !visited.contains(b)) { + TileEntityFoundryChannel acc = (TileEntityFoundryChannel) b; + visited.add(acc); + + NTMMaterial neighborMaterial = acc.checkNeighbors(visited); + + // immediately propagate backwards if a material is found + if(neighborMaterial != null) return neighborMaterial; + } + } + + return null; + } + } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryOutlet.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryOutlet.java index 1414283fe..a52ce34f3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryOutlet.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryOutlet.java @@ -2,20 +2,23 @@ package com.hbm.tileentity.machine; import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.Mats.MaterialStack; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.inventory.material.NTMMaterial; import com.hbm.util.CrucibleUtil; import api.hbm.block.ICrucibleAcceptor; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityFoundryOutlet extends TileEntityFoundryBase { +import java.util.ArrayList; + +public class TileEntityFoundryOutlet extends TileEntityFoundryBase{ public NTMMaterial filter = null; public NTMMaterial lastFilter = null; @@ -121,4 +124,39 @@ public class TileEntityFoundryOutlet extends TileEntityFoundryBase { nbt.setBoolean("invertFilter", this.invertFilter); nbt.setShort("filter", this.filter == null ? -1 : (short) this.filter.id); } + + @Override + public NBTTagCompound getSettings(World world, int x, int y, int z) { + NBTTagCompound nbt = new NBTTagCompound(); + + nbt.setBoolean("invert", this.invertRedstone); + nbt.setBoolean("invertFilter", this.invertFilter); + if(filter != null){ + nbt.setIntArray("matFilter", new int[]{ filter.id }); + } + + return nbt; + } + + @Override + public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { + + if(nbt.hasKey("invert")) this.invertRedstone = nbt.getBoolean("invert"); + if(nbt.hasKey("invertFilter")) this.invertFilter = nbt.getBoolean("invertFilter"); + if(nbt.hasKey("matFilter")) { + int[] ids = nbt.getIntArray("matFilter"); + if(ids.length > 0 && index < ids.length) + this.filter = Mats.matById.get(ids[index]); + } + + } + + @Override + public String[] infoForDisplay(World world, int x, int y, int z) { + ArrayList info = new ArrayList<>(); + info.add("copytool.invertRedstone"); + info.add("copytool.invertFilter"); + if (filter != null) info.add(filter.getUnlocalizedName()); + return info.toArray(new String[0]); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundrySlagtap.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundrySlagtap.java index ba297333f..ecf625688 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundrySlagtap.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundrySlagtap.java @@ -3,8 +3,8 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockDynamicSlag.TileEntitySlag; import com.hbm.inventory.material.Mats.MaterialStack; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.Compat; import api.hbm.block.ICrucibleAcceptor; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceBrick.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceBrick.java index be440a25c..2a87235c9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceBrick.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceBrick.java @@ -14,7 +14,6 @@ import com.hbm.tileentity.TileEntityMachineBase; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; @@ -228,7 +227,7 @@ public class TileEntityFurnaceBrick extends TileEntityMachineBase implements IGU @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIFurnaceBrick(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java index 2ef8e189e..38dcca45f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java @@ -10,6 +10,7 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIFurnaceCombo; import com.hbm.inventory.recipes.CombinationRecipes; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachinePolluting; import com.hbm.util.Tuple.Pair; @@ -19,7 +20,6 @@ import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -30,7 +30,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityFurnaceCombination extends TileEntityMachinePolluting implements IFluidStandardSender, IGUIProvider { +public class TileEntityFurnaceCombination extends TileEntityMachinePolluting implements IFluidStandardSender, IGUIProvider, IFluidCopiable { public boolean wasOn; public int progress; @@ -245,7 +245,7 @@ public class TileEntityFurnaceCombination extends TileEntityMachinePolluting imp @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIFurnaceCombo(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java index c85bb845d..76cb76189 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java @@ -1,11 +1,12 @@ package com.hbm.tileentity.machine; +import java.util.HashMap; import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.container.ContainerFurnaceIron; import com.hbm.inventory.gui.GUIFurnaceIron; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; @@ -17,7 +18,7 @@ import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -29,7 +30,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUIProvider, IUpgradeInfoProvider { - + public int maxBurnTime; public int burnTime; public boolean wasOn = false; @@ -37,12 +38,14 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI public int progress; public int processingTime; public static final int baseTime = 160; - + public ModuleBurnTime burnModule; + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + public TileEntityFurnaceIron() { super(5); - + burnModule = new ModuleBurnTime() .setLigniteTimeMod(1.25) .setCoalTimeMod(1.25) @@ -59,21 +62,21 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI @Override public void updateEntity() { - + if(!worldObj.isRemote) { - - UpgradeManager.eval(slots, 4, 4); - this.processingTime = baseTime - ((baseTime / 2) * Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3) / 3); - + + upgradeManager.checkSlots(this, slots, 4, 4); + this.processingTime = baseTime - ((baseTime / 2) * upgradeManager.getLevel(UpgradeType.SPEED) / 3); + wasOn = false; - + if(burnTime <= 0) { - + for(int i = 1; i < 3; i++) { if(slots[i] != null) { - + int fuel = burnModule.getBurnTime(slots[i]); - + if(fuel > 0) { this.maxBurnTime = this.burnTime = fuel; slots[i].stackSize--; @@ -81,33 +84,33 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI if(slots[i].stackSize == 0) { slots[i] = slots[i].getItem().getContainerItem(slots[i]); } - + break; } } - } + } } - + if(canSmelt()) { wasOn = true; this.progress++; this.burnTime--; - + if(this.progress % 15 == 0 && !this.muffled) { worldObj.playSoundEffect(xCoord, yCoord, zCoord, "fire.fire", 1.0F, 0.5F + worldObj.rand.nextFloat() * 0.5F); } - + if(this.progress >= this.processingTime) { ItemStack result = FurnaceRecipes.smelting().getSmeltingResult(slots[0]); - + if(slots[3] == null) { slots[3] = result.copy(); } else { slots[3].stackSize += result.stackSize; } - + this.decrStackSize(0, 1); - + this.progress = 0; this.markDirty(); } @@ -115,23 +118,17 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI } else { this.progress = 0; } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("maxBurnTime", this.maxBurnTime); - data.setInteger("burnTime", this.burnTime); - data.setInteger("progress", this.progress); - data.setInteger("processingTime", this.processingTime); - data.setBoolean("wasOn", this.wasOn); - this.networkPack(data, 50); + + this.networkPackNT(50); } else { - + if(this.progress > 0) { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - + double offset = this.progress % 2 == 0 ? 1 : 0.5; worldObj.spawnParticle("smoke", xCoord + 0.5 - dir.offsetX * offset - rot.offsetX * 0.1875, yCoord + 2, zCoord + 0.5 - dir.offsetZ * offset - rot.offsetZ * 0.1875, 0.0, 0.01, 0.0); - + if(this.progress % 5 == 0) { double rand = worldObj.rand.nextDouble(); worldObj.spawnParticle("flame", xCoord + 0.5 + dir.offsetX * 0.25 + rot.offsetX * rand, yCoord + 0.25 + worldObj.rand.nextDouble() * 0.25, zCoord + 0.5 + dir.offsetZ * 0.25 + rot.offsetZ * rand, 0.0, 0.0, 0.0); @@ -141,32 +138,41 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.maxBurnTime = nbt.getInteger("maxBurnTime"); - this.burnTime = nbt.getInteger("burnTime"); - this.progress = nbt.getInteger("progress"); - this.processingTime = nbt.getInteger("processingTime"); - this.wasOn = nbt.getBoolean("wasOn"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(this.maxBurnTime); + buf.writeInt(this.burnTime); + buf.writeInt(this.progress); + buf.writeInt(this.processingTime); + buf.writeBoolean(this.wasOn); } - + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.maxBurnTime = buf.readInt(); + this.burnTime = buf.readInt(); + this.progress = buf.readInt(); + this.processingTime = buf.readInt(); + this.wasOn = buf.readBoolean(); + } + public boolean canSmelt() { - + if(this.burnTime <= 0) return false; if(slots[0] == null) return false; - + ItemStack result = FurnaceRecipes.smelting().getSmeltingResult(slots[0]); - + if(result == null) return false; if(slots[3] == null) return true; - + if(!result.isItemEqual(slots[3])) return false; if(result.stackSize + slots[3].stackSize > slots[3].getMaxStackSize()) return false; - + return true; } - + @Override public int[] getAccessibleSlotsFromSide(int meta) { return new int[] { 0, 1, 2, 3 }; @@ -174,13 +180,13 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { - + if(i == 0) return FurnaceRecipes.smelting().getSmeltingResult(itemStack) != null; - + if(i < 3) return burnModule.getBurnTime(itemStack) > 0; - + return false; } @@ -188,7 +194,7 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI public boolean canExtractItem(int i, ItemStack itemStack, int j) { return i == 3; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -197,7 +203,7 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI this.burnTime = nbt.getInteger("burnTime"); this.progress = nbt.getInteger("progress"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -214,15 +220,15 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIFurnaceIron(player.inventory, this); } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 1, @@ -233,10 +239,10 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI zCoord + 2 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -257,8 +263,9 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 3; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 3); + return upgrades; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java index 4d6d7cbab..73a470859 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java @@ -8,12 +8,13 @@ import com.hbm.inventory.container.ContainerFurnaceSteel; import com.hbm.inventory.gui.GUIFurnaceSteel; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.ItemStackUtil; import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -96,13 +97,9 @@ public class TileEntityFurnaceSteel extends TileEntityMachineBase implements IGU } } - - NBTTagCompound data = new NBTTagCompound(); - data.setIntArray("progress", progress); - data.setIntArray("bonus", bonus); - data.setInteger("heat", heat); - data.setBoolean("wasOn", wasOn); - this.networkPack(data, 50); + + this.networkPackNT(50); + } else { if(this.wasOn) { @@ -122,13 +119,21 @@ public class TileEntityFurnaceSteel extends TileEntityMachineBase implements IGU } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.progress = nbt.getIntArray("progress"); - this.bonus = nbt.getIntArray("bonus"); - this.heat = nbt.getInteger("heat"); - this.wasOn = nbt.getBoolean("wasOn"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + BufferUtil.writeIntArray(buf, this.progress); + BufferUtil.writeIntArray(buf, this.bonus); + buf.writeInt(this.heat); + buf.writeBoolean(this.wasOn); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.progress = BufferUtil.readIntArray(buf); + this.bonus = BufferUtil.readIntArray(buf); + this.heat = buf.readInt(); + this.wasOn = buf.readBoolean(); } @Override @@ -249,7 +254,7 @@ public class TileEntityFurnaceSteel extends TileEntityMachineBase implements IGU @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIFurnaceSteel(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java index 167f550c8..c2c737fda 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java @@ -15,8 +15,8 @@ import com.hbm.inventory.recipes.HadronRecipes; import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.machine.TileEntityHadronDiode.DiodeConfig; @@ -25,9 +25,9 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.block.material.Material; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -170,7 +170,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyRe data.setInteger("stat_x", stat_x); data.setInteger("stat_y", stat_y); data.setInteger("stat_z", stat_z); - this.networkPack(data, 50); + this.networkPackNT(50); } } @@ -213,21 +213,37 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyRe } @Override - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.isOn = data.getBoolean("isOn"); - this.power = data.getLong("power"); - this.analysisOnly = data.getBoolean("analysis"); - this.ioMode = data.getInteger("ioMode"); - this.state = EnumHadronState.values()[data.getByte("state")]; + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(this.isOn); + buf.writeLong(this.power); + buf.writeBoolean(this.analysisOnly); + buf.writeInt(this.ioMode); + buf.writeByte((byte) this.state.ordinal()); - this.stat_success = data.getBoolean("stat_success"); - this.stat_state = EnumHadronState.values()[data.getByte("stat_state")]; - this.stat_charge = data.getInteger("stat_charge"); - this.stat_x = data.getInteger("stat_x"); - this.stat_y = data.getInteger("stat_y"); - this.stat_z = data.getInteger("stat_z"); + buf.writeBoolean(this.stat_success); + buf.writeByte((byte) this.stat_state.ordinal()); + buf.writeInt(this.stat_charge); + buf.writeInt(this.stat_x); + buf.writeInt(this.stat_y); + buf.writeInt(this.stat_z); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.isOn = buf.readBoolean(); + this.power = buf.readLong(); + this.analysisOnly = buf.readBoolean(); + this.ioMode = buf.readInt(); + this.state = EnumHadronState.values()[buf.readByte()]; + + this.stat_success = buf.readBoolean(); + this.stat_state = EnumHadronState.values()[buf.readByte()]; + this.stat_charge = buf.readInt(); + this.stat_x = buf.readInt(); + this.stat_y = buf.readInt(); + this.stat_z = buf.readInt(); } @Override @@ -896,7 +912,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyRe @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIHadron(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHadronDiode.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHadronDiode.java index d77c5339a..f9c89de10 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHadronDiode.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHadronDiode.java @@ -2,6 +2,7 @@ package com.hbm.tileentity.machine; import com.hbm.tileentity.TileEntityTickingBase; +import io.netty.buffer.ByteBuf; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; @@ -25,7 +26,7 @@ public class TileEntityHadronDiode extends TileEntityTickingBase { if(age >= 20) { age = 0; - sendSides(); + this.networkPackNT(250); } } else { @@ -35,27 +36,18 @@ public class TileEntityHadronDiode extends TileEntityTickingBase { } } } - - public void sendSides() { - - NBTTagCompound data = new NBTTagCompound(); - + + @Override public void serialize(ByteBuf buf) { for(int i = 0; i < 6; i++) { - - if(sides[i] != null) - data.setInteger("" + i, sides[i].ordinal()); + buf.writeByte(sides[i].ordinal()); } - - this.networkPack(data, 250); } - @Override - public void networkUnpack(NBTTagCompound nbt) { - + @Override public void deserialize(ByteBuf buf) { for(int i = 0; i < 6; i++) { - sides[i] = DiodeConfig.values()[nbt.getInteger("" + i)]; + sides[i] = DiodeConfig.values()[buf.readByte()]; } - + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); } @@ -75,7 +67,7 @@ public class TileEntityHadronDiode extends TileEntityTickingBase { public void setConfig(int side, int config) { sides[side] = DiodeConfig.values()[config]; this.markDirty(); - sendSides(); + this.networkPackNT(250); } public static enum DiodeConfig { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java index f044f3fad..3423d2583 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java @@ -1,13 +1,10 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.machine.BlockHadronPower; -import com.hbm.packet.BufPacket; -import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energymk2.IEnergyReceiverMK2; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.nbt.NBTTagCompound; @@ -21,16 +18,16 @@ public class TileEntityHadronPower extends TileEntityLoadedBase implements IEner public boolean canUpdate() { return true; //yeah idk wtf happened with the old behavior and honestly i'm not keen on figuring that one out } - + @Override public void updateEntity() { - + if(!worldObj.isRemote) { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } - - PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 15)); + + networkPackNT(15); } } @@ -57,13 +54,13 @@ public class TileEntityHadronPower extends TileEntityLoadedBase implements IEner @Override public long getMaxPower() { - + Block b = this.getBlockType(); - + if(b instanceof BlockHadronPower) { return ((BlockHadronPower)b).power; } - + return 0; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java index c1c830cf5..e58d00987 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java @@ -18,8 +18,9 @@ import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.saveddata.TomSaveData; import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IConfigurableMachine; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.fauxpointtwelve.DirPos; @@ -27,22 +28,24 @@ import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.EnumSkyBlock; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityHeatBoiler extends TileEntityLoadedBase implements INBTPacketReceiver, IFluidStandardTransceiver, IConfigurableMachine { +public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IBufPacketReceiver, IFluidStandardTransceiver, IConfigurableMachine, IFluidCopiable { public int heat; public FluidTank[] tanks; public boolean isOn; public boolean hasExploded = false; - + private AudioWrapper audio; private int audioTime; - + /* CONFIGURABLE */ public static int maxHeat = 3_200_000; public static double diffusion = 0.1D; @@ -54,49 +57,54 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements INBTPa this.tanks[0] = new FluidTank(Fluids.WATER, 16_000); this.tanks[1] = new FluidTank(Fluids.STEAM, 16_000 * 100); } - + + ByteBuf buf; + @Override public void updateEntity() { if(!worldObj.isRemote) { - - NBTTagCompound data = new NBTTagCompound(); - + + if(this.buf != null) + this.buf.release(); + this.buf = Unpooled.buffer(); + + buf.writeBoolean(this.hasExploded); + if(!this.hasExploded) { this.setupTanks(); this.updateConnections(); this.tryPullHeat(); int lastHeat = this.heat; - + int light = this.worldObj.getSavedLightValue(EnumSkyBlock.Sky, this.xCoord, this.yCoord, this.zCoord); if(light > 7 && TomSaveData.forWorld(worldObj).fire > 1e-5) { this.heat += ((maxHeat - heat) * 0.000005D); //constantly heat up 0.0005% of the remaining heat buffer for rampant but diminishing heating } - - data.setInteger("heat", lastHeat); - tanks[0].writeToNBT(data, "0"); + buf.writeInt(lastHeat); + + tanks[0].serialize(buf); this.isOn = false; this.tryConvert(); - tanks[1].writeToNBT(data, "1"); - + tanks[1].serialize(buf); + if(this.tanks[1].getFill() > 0) { this.sendFluid(); } } - data.setBoolean("exploded", this.hasExploded); - data.setBoolean("isOn", this.isOn); - data.setBoolean("muffled", this.muffled); - INBTPacketReceiver.networkPack(this, data, 25); + buf.writeBoolean(this.muffled); + buf.writeBoolean(this.isOn); + networkPackNT(25); } else { - + if(this.isOn) audioTime = 20; - + if(audioTime > 0) { - + audioTime--; - + if(audio == null) { audio = createAudioLoop(); audio.startSound(); @@ -106,9 +114,9 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements INBTPa audio.updateVolume(getVolume(1F)); audio.keepAlive(); - + } else { - + if(audio != null) { audio.stopSound(); audio = null; @@ -116,7 +124,7 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements INBTPa } } } - + @Override public AudioWrapper createAudioLoop() { return MainRegistry.proxy.getLoopedSound("hbm:block.boiler", xCoord, yCoord, zCoord, 0.125F, 10F, 1.0F, 20); @@ -143,28 +151,36 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements INBTPa } @Override - public void networkUnpack(NBTTagCompound nbt) { - this.hasExploded = nbt.getBoolean("exploded"); - this.muffled = nbt.getBoolean("muffled"); - this.heat = nbt.getInteger("heat"); - this.tanks[0].readFromNBT(nbt, "0"); - this.tanks[1].readFromNBT(nbt, "1"); - this.isOn = nbt.getBoolean("isOn"); + public void serialize(ByteBuf buf) { + buf.writeBytes(this.buf); } - + + @Override + public void deserialize(ByteBuf buf) { + this.hasExploded = buf.readBoolean(); + if (!this.hasExploded) { + this.heat = buf.readInt(); + this.tanks[0].deserialize(buf); + this.tanks[1].deserialize(buf); + this.muffled = buf.readBoolean(); + this.isOn = buf.readBoolean(); + } + } + protected void tryPullHeat() { TileEntity con = worldObj.getTileEntity(xCoord, yCoord - 1, zCoord); - + if(con instanceof IHeatSource) { IHeatSource source = (IHeatSource) con; int diff = source.getHeatStored() - this.heat; - + if(diff == 0) { return; } - + if(diff > 0) { diff = (int) Math.ceil(diff * diffusion); + diff = Math.min(diff, this.maxHeat - this.heat); source.useUpHeat(diff); this.heat += diff; if(this.heat > this.maxHeat) @@ -172,12 +188,12 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements INBTPa return; } } - + this.heat = Math.max(this.heat - Math.max(this.heat / 1000, 1), 0); } - + protected void setupTanks() { - + if(tanks[0].getTankType().hasTrait(FT_Heatable.class)) { FT_Heatable trait = tanks[0].getTankType().getTrait(FT_Heatable.class); if(trait.getEfficiency(HeatingType.BOILER) > 0) { @@ -191,32 +207,32 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements INBTPa tanks[0].setTankType(Fluids.NONE); tanks[1].setTankType(Fluids.NONE); } - + protected void tryConvert() { - + if(tanks[0].getTankType().hasTrait(FT_Heatable.class)) { FT_Heatable trait = tanks[0].getTankType().getTrait(FT_Heatable.class); if(trait.getEfficiency(HeatingType.BOILER) > 0) { - + HeatingStep entry = trait.getFirstStep(); int inputOps = this.tanks[0].getFill() / entry.amountReq; int outputOps = (this.tanks[1].getMaxFill() - this.tanks[1].getFill()) / entry.amountProduced; int heatOps = this.heat / entry.heatReq; - + int ops = Math.min(inputOps, Math.min(outputOps, heatOps)); this.tanks[0].setFill(this.tanks[0].getFill() - entry.amountReq * ops); this.tanks[1].setFill(this.tanks[1].getFill() + entry.amountProduced * ops); this.heat -= entry.heatReq * ops; - + if(ops > 0 && worldObj.rand.nextInt(400) == 0) { worldObj.playSoundEffect(xCoord + 0.5, yCoord + 2, zCoord + 0.5, "hbm:block.boilerGroan", 0.5F, 1.0F); } - + if(ops > 0) { this.isOn = true; } - + if(outputOps == 0 && canExplode) { this.hasExploded = true; BlockDummyable.safeRem = true; @@ -228,33 +244,33 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements INBTPa } } worldObj.setBlockToAir(xCoord, yCoord + 1, zCoord); - + ExplosionVNT xnt = new ExplosionVNT(worldObj, xCoord + 0.5, yCoord + 2, zCoord + 0.5, 5F); xnt.setEntityProcessor(new EntityProcessorStandard().withRangeMod(3F)); xnt.setPlayerProcessor(new PlayerProcessorStandard()); xnt.setSFX(new ExplosionEffectStandard()); xnt.explode(); - + BlockDummyable.safeRem = false; } } } } - + private void updateConnections() { - + for(DirPos pos : getConPos()) { this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - + private void sendFluid() { - + for(DirPos pos : getConPos()) { this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir().getOpposite()); } } - + private DirPos[] getConPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getRotation(ForgeDirection.UP); return new DirPos[] { @@ -263,7 +279,7 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements INBTPa new DirPos(xCoord, yCoord + 4, zCoord, Library.POS_Y), }; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -272,7 +288,7 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements INBTPa heat = nbt.getInteger("heat"); hasExploded = nbt.getBoolean("exploded"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -296,12 +312,12 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements INBTPa public FluidTank[] getReceivingTanks() { return new FluidTank[] {tanks[0]}; } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 1, @@ -312,10 +328,10 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements INBTPa zCoord + 2 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoilerIndustrial.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoilerIndustrial.java index 04d66dda3..012fecc40 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoilerIndustrial.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoilerIndustrial.java @@ -13,8 +13,9 @@ import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.saveddata.TomSaveData; import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IConfigurableMachine; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.fauxpointtwelve.DirPos; @@ -22,20 +23,22 @@ import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.EnumSkyBlock; -public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase implements INBTPacketReceiver, IFluidStandardTransceiver, IConfigurableMachine { +public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase implements IBufPacketReceiver, IFluidStandardTransceiver, IConfigurableMachine, IFluidCopiable { public int heat; public FluidTank[] tanks; public boolean isOn; - + private AudioWrapper audio; private int audioTime; - + /* CONFIGURABLE */ public static int maxHeat = 12_800_000; public static double diffusion = 0.1D; @@ -46,45 +49,51 @@ public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase impleme this.tanks[0] = new FluidTank(Fluids.WATER, 64_000); this.tanks[1] = new FluidTank(Fluids.STEAM, 64_000 * 100); } - + + ByteBuf buf; + @Override public void updateEntity() { if(!worldObj.isRemote) { - - NBTTagCompound data = new NBTTagCompound(); + + if(this.buf != null) + this.buf.release(); + this.buf = Unpooled.buffer(); + this.setupTanks(); this.updateConnections(); this.tryPullHeat(); int lastHeat = this.heat; - + int light = this.worldObj.getSavedLightValue(EnumSkyBlock.Sky, this.xCoord, this.yCoord, this.zCoord); if(light > 7 && TomSaveData.forWorld(worldObj).fire > 1e-5) { this.heat += ((maxHeat - heat) * 0.000005D); //constantly heat up 0.0005% of the remaining heat buffer for rampant but diminishing heating } - - data.setInteger("heat", lastHeat); - tanks[0].writeToNBT(data, "0"); + buf.writeInt(lastHeat); + + tanks[0].serialize(buf); this.isOn = false; this.tryConvert(); - tanks[1].writeToNBT(data, "1"); - + tanks[1].serialize(buf); + if(this.tanks[1].getFill() > 0) { this.sendFluid(); } - data.setBoolean("isOn", this.isOn); - data.setBoolean("muffled", this.muffled); - INBTPacketReceiver.networkPack(this, data, 25); + buf.writeBoolean(this.isOn); + buf.writeBoolean(this.muffled); + networkPackNT(25); + } else { - + if(this.isOn) audioTime = 20; - + if(audioTime > 0) { - + audioTime--; - + if(audio == null) { audio = createAudioLoop(); audio.startSound(); @@ -94,9 +103,9 @@ public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase impleme audio.updateVolume(getVolume(1F)); audio.keepAlive(); - + } else { - + if(audio != null) { audio.stopSound(); audio = null; @@ -104,7 +113,7 @@ public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase impleme } } } - + @Override public AudioWrapper createAudioLoop() { return MainRegistry.proxy.getLoopedSound("hbm:block.boiler", xCoord, yCoord, zCoord, 0.125F, 10F, 1.0F, 20); @@ -131,27 +140,33 @@ public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase impleme } @Override - public void networkUnpack(NBTTagCompound nbt) { - this.heat = nbt.getInteger("heat"); - this.tanks[0].readFromNBT(nbt, "0"); - this.tanks[1].readFromNBT(nbt, "1"); - this.isOn = nbt.getBoolean("isOn"); - this.muffled = nbt.getBoolean("muffled"); + public void serialize(ByteBuf buf) { + buf.writeBytes(this.buf); } - + + @Override + public void deserialize(ByteBuf buf) { + this.heat = buf.readInt(); + this.tanks[0].deserialize(buf); + this.tanks[1].deserialize(buf); + this.isOn = buf.readBoolean(); + this.muffled = buf.readBoolean(); + } + protected void tryPullHeat() { TileEntity con = worldObj.getTileEntity(xCoord, yCoord - 1, zCoord); - + if(con instanceof IHeatSource) { IHeatSource source = (IHeatSource) con; int diff = source.getHeatStored() - this.heat; - + if(diff == 0) { return; } - + if(diff > 0) { diff = (int) Math.ceil(diff * diffusion); + diff = Math.min(diff, this.maxHeat - this.heat); source.useUpHeat(diff); this.heat += diff; if(this.heat > this.maxHeat) @@ -159,12 +174,12 @@ public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase impleme return; } } - + this.heat = Math.max(this.heat - Math.max(this.heat / 1000, 1), 0); } - + protected void setupTanks() { - + if(tanks[0].getTankType().hasTrait(FT_Heatable.class)) { FT_Heatable trait = tanks[0].getTankType().getTrait(FT_Heatable.class); if(trait.getEfficiency(HeatingType.BOILER) > 0) { @@ -178,49 +193,49 @@ public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase impleme tanks[0].setTankType(Fluids.NONE); tanks[1].setTankType(Fluids.NONE); } - + protected void tryConvert() { - + if(tanks[0].getTankType().hasTrait(FT_Heatable.class)) { FT_Heatable trait = tanks[0].getTankType().getTrait(FT_Heatable.class); if(trait.getEfficiency(HeatingType.BOILER) > 0) { - + HeatingStep entry = trait.getFirstStep(); int inputOps = this.tanks[0].getFill() / entry.amountReq; int outputOps = (this.tanks[1].getMaxFill() - this.tanks[1].getFill()) / entry.amountProduced; int heatOps = this.heat / entry.heatReq; - + int ops = Math.min(inputOps, Math.min(outputOps, heatOps)); this.tanks[0].setFill(this.tanks[0].getFill() - entry.amountReq * ops); this.tanks[1].setFill(this.tanks[1].getFill() + entry.amountProduced * ops); this.heat -= entry.heatReq * ops; - + if(ops > 0 && worldObj.rand.nextInt(400) == 0) { worldObj.playSoundEffect(xCoord + 0.5, yCoord + 2, zCoord + 0.5, "hbm:block.boilerGroan", 0.5F, 1.0F); } - + if(ops > 0) { this.isOn = true; } } } } - + private void updateConnections() { - + for(DirPos pos : getConPos()) { this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - + private void sendFluid() { - + for(DirPos pos : getConPos()) { this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir().getOpposite()); } } - + private DirPos[] getConPos() { return new DirPos[] { new DirPos(xCoord + 2, yCoord, zCoord, Library.POS_X), @@ -230,7 +245,7 @@ public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase impleme new DirPos(xCoord, yCoord + 5, zCoord, Library.POS_Y), }; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -238,7 +253,7 @@ public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase impleme tanks[1].readFromNBT(nbt, "steam"); heat = nbt.getInteger("heat"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -261,12 +276,12 @@ public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase impleme public FluidTank[] getReceivingTanks() { return new FluidTank[] {tanks[0]}; } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 1, @@ -277,10 +292,10 @@ public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase impleme zCoord + 2 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java index 7c8a19797..1ad302c0b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java @@ -1,9 +1,10 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.BlockDummyable; +import com.hbm.interfaces.ICopiable; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.CompatEnergyControl; @@ -12,32 +13,35 @@ import api.hbm.tile.IHeatSource; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import io.netty.buffer.ByteBuf; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IHeatSource, IEnergyReceiverMK2, INBTPacketReceiver, IInfoProviderEC { - +public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IHeatSource, IEnergyReceiverMK2, IBufPacketReceiver, ICopiable, IInfoProviderEC { + public long power; public int heatEnergy; public boolean isOn; protected int setting = 0; - + private AudioWrapper audio; @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + if(worldObj.getTotalWorldTime() % 20 == 0) { //doesn't have to happen constantly ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); this.trySubscribe(worldObj, xCoord + dir.offsetX * 3, yCoord, zCoord + dir.offsetZ * 3, dir); } - + this.heatEnergy *= 0.999; - + this.tryPullHeat(); this.isOn = false; @@ -46,17 +50,12 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH this.heatEnergy += getHeatGen(); this.isOn = true; } - - NBTTagCompound data = new NBTTagCompound(); - data.setByte("s", (byte) this.setting); - data.setInteger("h", this.heatEnergy); - data.setBoolean("o", isOn); - data.setBoolean("muffled", muffled); - INBTPacketReceiver.networkPack(this, data, 25); + + networkPackNT(25); } else { - + if(isOn) { - + if(audio == null) { audio = createAudioLoop(); audio.startSound(); @@ -66,9 +65,9 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH audio.updateVolume(getVolume(1F)); audio.keepAlive(); - + } else { - + if(audio != null) { audio.stopSound(); audio = null; @@ -76,7 +75,7 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH } } } - + @Override public AudioWrapper createAudioLoop() { return MainRegistry.proxy.getLoopedSound("hbm:block.electricHum", xCoord, yCoord, zCoord, 0.25F, 7.5F, 1.0F, 20); @@ -103,13 +102,21 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH } @Override - public void networkUnpack(NBTTagCompound nbt) { - this.setting = nbt.getByte("s"); - this.heatEnergy = nbt.getInteger("h"); - this.isOn = nbt.getBoolean("o"); - this.muffled = nbt.getBoolean("muffled"); + public void serialize(ByteBuf buf) { + buf.writeBoolean(this.muffled); + buf.writeByte(this.setting); + buf.writeInt(this.heatEnergy); + buf.writeBoolean(this.isOn); } - + + @Override + public void deserialize(ByteBuf buf) { + this.muffled = buf.readBoolean(); + this.setting = buf.readByte(); + this.heatEnergy = buf.readInt(); + this.isOn = buf.readBoolean(); + } + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -118,7 +125,7 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH this.setting = nbt.getInteger("setting"); this.heatEnergy = nbt.getInteger("heatEnergy"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -127,20 +134,20 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH nbt.setInteger("setting", setting); nbt.setInteger("heatEnergy", heatEnergy); } - + protected void tryPullHeat() { TileEntity con = worldObj.getTileEntity(xCoord, yCoord - 1, zCoord); - + if(con instanceof IHeatSource) { IHeatSource source = (IHeatSource) con; this.heatEnergy += source.getHeatStored() * 0.85; source.useUpHeat(source.getHeatStored()); } } - + public void toggleSetting() { setting++; - + if(setting > 10) setting = 0; } @@ -149,7 +156,7 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH public long getPower() { return power; } - + public long getConsumption() { return (long) (Math.pow(setting, 1.4D) * 200D); } @@ -158,7 +165,7 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH public long getMaxPower() { return getConsumption() * 20; } - + public int getHeatGen() { return this.setting * 100; } @@ -177,12 +184,12 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH public void useUpHeat(int heat) { this.heatEnergy = Math.max(0, this.heatEnergy - heat); } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 2, @@ -193,10 +200,10 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH zCoord + 3 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -209,4 +216,16 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH data.setLong(CompatEnergyControl.L_ENERGY_TU, getHeatStored()); data.setLong(CompatEnergyControl.D_OUTPUT_TU, getHeatGen()); } + + @Override + public NBTTagCompound getSettings(World world, int x, int y, int z) { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setInteger("setting", setting); + return nbt; + } + + @Override + public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { + this.setting = nbt.getInteger("setting"); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterFirebox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterFirebox.java index c58b395e0..616fc978a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterFirebox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterFirebox.java @@ -12,7 +12,6 @@ import com.hbm.tileentity.IConfigurableMachine; 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.util.ResourceLocation; @@ -76,7 +75,7 @@ public class TileEntityHeaterFirebox extends TileEntityFireboxBase implements IC @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { if(texture == null) texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_firebox.png"); return new GUIFirebox(player.inventory, this, texture); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterHeatex.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterHeatex.java index 1e9d5885d..7a1a9a18c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterHeatex.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterHeatex.java @@ -9,8 +9,8 @@ import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Coolable; import com.hbm.inventory.fluid.trait.FT_Coolable.CoolingType; import com.hbm.inventory.gui.GUIHeaterHeatex; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.fauxpointtwelve.DirPos; @@ -18,7 +18,8 @@ import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; @@ -27,13 +28,13 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHeatSource, INBTPacketReceiver, IFluidStandardTransceiver, IGUIProvider, IControlReceiver { - +public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHeatSource, IFluidStandardTransceiver, IGUIProvider, IControlReceiver, IFluidCopiable { + public FluidTank[] tanks; - public int amountToCool = 1; + public int amountToCool = 24_000; public int tickDelay = 1; public int heatEnergy; - + public TileEntityHeaterHeatex() { super(1); this.tanks = new FluidTank[2]; @@ -46,42 +47,56 @@ public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHe return "container.heaterHeatex"; } + ByteBuf buf; + @Override public void updateEntity() { - + if(!worldObj.isRemote) { + + if(this.buf != null) + this.buf.release(); + this.buf = Unpooled.buffer(); + this.tanks[0].setType(0, slots); this.setupTanks(); this.updateConnections(); - + this.heatEnergy *= 0.999; - - NBTTagCompound data = new NBTTagCompound(); - tanks[0].writeToNBT(data, "0"); + + tanks[0].serialize(buf); + this.tryConvert(); - tanks[1].writeToNBT(data, "1"); - data.setInteger("heat", heatEnergy); - data.setInteger("toCool", amountToCool); - data.setInteger("delay", tickDelay); - INBTPacketReceiver.networkPack(this, data, 25); - + + tanks[1].serialize(buf); + + networkPackNT(25); + for(DirPos pos : getConPos()) { if(this.tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - tanks[0].readFromNBT(nbt, "0"); - tanks[1].readFromNBT(nbt, "1"); - this.heatEnergy = nbt.getInteger("heat"); - this.amountToCool = nbt.getInteger("toCool"); - this.tickDelay = nbt.getInteger("delay"); + public void serialize(ByteBuf buf) { + buf.writeBytes(this.buf); + buf.writeInt(this.heatEnergy); + buf.writeInt(this.amountToCool); + buf.writeInt(this.tickDelay); } - + + @Override + public void deserialize(ByteBuf buf) { + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); + this.heatEnergy = buf.readInt(); + this.amountToCool = buf.readInt(); + this.tickDelay = buf.readInt(); + } + protected void setupTanks() { - + if(tanks[0].getTankType().hasTrait(FT_Coolable.class)) { FT_Coolable trait = tanks[0].getTankType().getTrait(FT_Coolable.class); if(trait.getEfficiency(CoolingType.HEATEXCHANGER) > 0) { @@ -93,37 +108,37 @@ public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHe tanks[0].setTankType(Fluids.NONE); tanks[1].setTankType(Fluids.NONE); } - + protected void updateConnections() { - + for(DirPos pos : getConPos()) { this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - + protected void tryConvert() { - + if(!tanks[0].getTankType().hasTrait(FT_Coolable.class)) return; if(tickDelay < 1) tickDelay = 1; if(worldObj.getTotalWorldTime() % tickDelay != 0) return; - + FT_Coolable trait = tanks[0].getTankType().getTrait(FT_Coolable.class); - + int inputOps = tanks[0].getFill() / trait.amountReq; int outputOps = (tanks[1].getMaxFill() - tanks[1].getFill()) / trait.amountProduced; int opCap = this.amountToCool; - + int ops = Math.min(inputOps, Math.min(outputOps, opCap)); tanks[0].setFill(tanks[0].getFill() - trait.amountReq * ops); tanks[1].setFill(tanks[1].getFill() + trait.amountProduced * ops); this.heatEnergy += trait.heatEnergy * ops * trait.getEfficiency(CoolingType.HEATEXCHANGER); this.markChanged(); } - + private DirPos[] getConPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - + return new DirPos[] { new DirPos(xCoord + dir.offsetX * 2 + rot.offsetX, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ, dir), new DirPos(xCoord + dir.offsetX * 2 - rot.offsetX, yCoord, zCoord + dir.offsetZ * 2 - rot.offsetZ, dir), @@ -131,7 +146,7 @@ public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHe new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ, dir.getOpposite()) }; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -142,7 +157,7 @@ public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHe this.amountToCool = nbt.getInteger("toCool"); this.tickDelay = nbt.getInteger("delay"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -192,15 +207,15 @@ public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHe @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIHeaterHeatex(player.inventory, this); } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 1, @@ -211,10 +226,10 @@ public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHe zCoord + 2 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -230,7 +245,26 @@ public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHe public void receiveControl(NBTTagCompound data) { if(data.hasKey("toCool")) this.amountToCool = MathHelper.clamp_int(data.getInteger("toCool"), 1, tanks[0].getMaxFill()); if(data.hasKey("delay")) this.tickDelay = Math.max(data.getInteger("delay"), 1); - + this.markChanged(); } + + @Override + public NBTTagCompound getSettings(World world, int x, int y, int z) { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setInteger("toCool", amountToCool); + if(getFluidIDToCopy().length > 0) + nbt.setIntArray("fluidID", getFluidIDToCopy()); + return nbt; + } + + @Override + public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { + int[] ids = nbt.getIntArray("fluidID"); + if(ids.length > 0) { + int id = ids[index]; + tanks[0].setTankType(Fluids.fromID(id)); + } + if(nbt.hasKey("toCool")) amountToCool = nbt.getInteger("toCool"); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java index 0d19a14bc..e236a9090 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java @@ -8,6 +8,7 @@ import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.inventory.fluid.trait.FluidTrait.FluidReleaseType; import com.hbm.inventory.gui.GUIOilburner; import com.hbm.lib.Library; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachinePolluting; import com.hbm.util.fauxpointtwelve.DirPos; @@ -17,14 +18,13 @@ import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; -public class TileEntityHeaterOilburner extends TileEntityMachinePolluting implements IGUIProvider, IFluidStandardTransceiver, IHeatSource, IControlReceiver { +public class TileEntityHeaterOilburner extends TileEntityMachinePolluting implements IGUIProvider, IFluidStandardTransceiver, IHeatSource, IControlReceiver, IFluidCopiable { public boolean isOn = false; public FluidTank tank; @@ -156,7 +156,7 @@ public class TileEntityHeaterOilburner extends TileEntityMachinePolluting implem @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIOilburner(player.inventory, this); } @@ -217,4 +217,21 @@ public class TileEntityHeaterOilburner extends TileEntityMachinePolluting implem public FluidTank[] getSendingTanks() { return this.getSmokeTanks(); } + + @Override + public NBTTagCompound getSettings(World world, int x, int y, int z) { + NBTTagCompound tag = new NBTTagCompound(); + tag.setIntArray("fluidID", new int[]{tank.getTankType().getID()}); + tag.setInteger("burnRate", setting); + tag.setBoolean("isOn", isOn); + return tag; + } + + @Override + public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { + int id = nbt.getIntArray("fluidID")[index]; + tank.setTankType(Fluids.fromID(id)); + if(nbt.hasKey("isOn")) isOn = nbt.getBoolean("isOn"); + if(nbt.hasKey("burnRate")) setting = nbt.getInteger("burnRate"); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOven.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOven.java index 2deec61e8..3453c2c19 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOven.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOven.java @@ -13,7 +13,6 @@ import com.hbm.tileentity.IConfigurableMachine; import api.hbm.tile.IHeatSource; 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.tileentity.TileEntity; @@ -100,7 +99,7 @@ public class TileEntityHeaterOven extends TileEntityFireboxBase implements IConf @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { if(texture == null) texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_heating_oven.png"); return new GUIFirebox(player.inventory, this, texture); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java b/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java index 4f4c3d65d..b89dc9b42 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java @@ -11,8 +11,9 @@ import com.hbm.inventory.gui.GUIICF; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemICFPellet; import com.hbm.lib.Library; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.IFluidCopiable; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CompatEnergyControl; @@ -29,7 +30,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.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -39,7 +39,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider, IFluidStandardTransceiver, IInfoProviderEC, SimpleComponent, CompatHandler.OCComponent { +public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider, IFluidStandardTransceiver, IInfoProviderEC, SimpleComponent, CompatHandler.OCComponent, IFluidCopiable { public long laser; public long maxLaser; @@ -135,9 +135,9 @@ public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider int coolingCycles = tanks[0].getFill() / step.amountReq; int heatingCycles = (tanks[1].getMaxFill() - tanks[1].getFill()) / step.amountProduced; - int heatCycles = (int) (this.heat / 4 / step.heatReq * trait.getEfficiency(HeatingType.ICF)); //25% cooling per tick + int heatCycles = (int) Math.min(this.heat / 4D / step.heatReq * trait.getEfficiency(HeatingType.ICF), this.heat / step.heatReq); //25% cooling per tick int cycles = Math.min(coolingCycles, Math.min(heatingCycles, heatCycles)); - + tanks[0].setFill(tanks[0].getFill() - step.amountReq * cycles); tanks[1].setFill(tanks[1].getFill() + step.amountProduced * cycles); this.heat -= step.heatReq * cycles; @@ -279,7 +279,7 @@ public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIICF(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityICFPress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityICFPress.java index 9c6eef7ad..459f93bed 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityICFPress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityICFPress.java @@ -12,6 +12,7 @@ import com.hbm.inventory.material.Mats.MaterialStack; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemICFPellet; import com.hbm.items.machine.ItemICFPellet.EnumICFFuel; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; @@ -19,14 +20,13 @@ import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -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.world.World; -public class TileEntityICFPress extends TileEntityMachineBase implements IFluidStandardReceiver, IGUIProvider { +public class TileEntityICFPress extends TileEntityMachineBase implements IFluidStandardReceiver, IGUIProvider, IFluidCopiable { public FluidTank[] tanks; public int muon; @@ -156,7 +156,7 @@ public class TileEntityICFPress extends TileEntityMachineBase implements IFluidS @Override public boolean canExtractItem(int slot, ItemStack itemStack, int side) { - return slot == 1; + return slot == 1 || slot == 3; } @Override @@ -182,7 +182,7 @@ public class TileEntityICFPress extends TileEntityMachineBase implements IFluidS @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIICFPress(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java index 9b0a0ed60..30ea58b03 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java @@ -21,9 +21,10 @@ import com.hbm.items.ModItems; import com.hbm.items.special.ItemFusionShield; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CompatEnergyControl; @@ -36,11 +37,11 @@ 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 io.netty.buffer.ByteBuf; 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; import net.minecraft.item.ItemStack; @@ -51,7 +52,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityITER extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IInfoProviderEC, SimpleComponent, CompatHandler.OCComponent { +public class TileEntityITER extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IInfoProviderEC, SimpleComponent, CompatHandler.OCComponent, IFluidCopiable { public long power; public static final long maxPower = 10000000; @@ -158,27 +159,7 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyRece } } - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("isOn", isOn); - data.setLong("power", power); - data.setInteger("progress", progress); - tanks[0].writeToNBT(data, "t0"); - tanks[1].writeToNBT(data, "t1"); - plasma.writeToNBT(data, "t2"); - - if(slots[3] == null) { - data.setInteger("blanket", 0); - } else if(slots[3].getItem() == ModItems.fusion_shield_tungsten) { - data.setInteger("blanket", 1); - } else if(slots[3].getItem() == ModItems.fusion_shield_desh) { - data.setInteger("blanket", 2); - } else if(slots[3].getItem() == ModItems.fusion_shield_chlorophyte) { - data.setInteger("blanket", 3); - } else if(slots[3].getItem() == ModItems.fusion_shield_vaporwave) { - data.setInteger("blanket", 4); - } - - this.networkPack(data, 250); + this.networkPackNT(250); /// END Notif packets /// } else { @@ -378,16 +359,37 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyRece } @Override - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.isOn = data.getBoolean("isOn"); - this.power = data.getLong("power"); - this.blanket = data.getInteger("blanket"); - this.progress = data.getInteger("progress"); // - tanks[0].readFromNBT(data, "t0"); - tanks[1].readFromNBT(data, "t1"); - plasma.readFromNBT(data, "t2"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(this.isOn); + buf.writeLong(this.power); + buf.writeInt(this.progress); + tanks[0].serialize(buf); + tanks[1].serialize(buf); + plasma.serialize(buf); + if(slots[3] == null) { + buf.writeInt(0); + } else if(slots[3].getItem() == ModItems.fusion_shield_tungsten) { + buf.writeInt(1); + } else if(slots[3].getItem() == ModItems.fusion_shield_desh) { + buf.writeInt(2); + } else if(slots[3].getItem() == ModItems.fusion_shield_chlorophyte) { + buf.writeInt(3); + } else if(slots[3].getItem() == ModItems.fusion_shield_vaporwave) { + buf.writeInt(4); + } + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.isOn = buf.readBoolean(); + this.power = buf.readLong(); + this.progress = buf.readInt(); + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); + plasma.deserialize(buf); + this.blanket = buf.readInt(); } @Override @@ -545,7 +547,7 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyRece @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIITER(player.inventory, this); } @@ -650,4 +652,9 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyRece } throw new NoSuchMethodException(); } + + @Override + public FluidTank getTankToPaste() { + return null; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityLockableBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityLockableBase.java index 5e65220a5..2f8bb86d2 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityLockableBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityLockableBase.java @@ -3,15 +3,15 @@ package com.hbm.tileentity.machine; import com.hbm.items.ModItems; import com.hbm.items.tool.ItemKey; import com.hbm.main.MainRegistry; +import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.ArmorUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -public abstract class TileEntityLockableBase extends TileEntity { - +public abstract class TileEntityLockableBase extends TileEntityLoadedBase { + protected int lock; private boolean isLocked = false; protected double lockMod = 0.1D; @@ -19,107 +19,94 @@ public abstract class TileEntityLockableBase extends TileEntity { public boolean isLocked() { return isLocked; } - + public void lock() { - if(lock == 0) { MainRegistry.logger.error("A block has been set to locked state before setting pins, this should not happen and may cause errors! " + this.toString()); } - isLocked = true; } - - public void setPins(int pins) { - lock = pins; - } - - public int getPins() { - return lock; - } - - public void setMod(double mod) { - lockMod = mod; - } - - public double getMod() { - return lockMod; - } - + + public void setPins(int pins) { lock = pins; } + public int getPins() { return lock; } + public void setMod(double mod) { lockMod = mod; } + public double getMod() { return lockMod; } + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - + lock = nbt.getInteger("lock"); isLocked = nbt.getBoolean("isLocked"); lockMod = nbt.getDouble("lockMod"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + nbt.setInteger("lock", lock); nbt.setBoolean("isLocked", isLocked); nbt.setDouble("lockMod", lockMod); } public boolean canAccess(EntityPlayer player) { - + if(!isLocked) { return true; } else { - if(player == null) return false; + if(player == null) + return false; ItemStack stack = player.getHeldItem(); - - if(stack != null && stack.getItem() instanceof ItemKey && - ItemKey.getPins(stack) == this.lock) { - worldObj.playSoundAtEntity(player, "hbm:block.lockOpen", 1.0F, 1.0F); + + if(stack != null && stack.getItem() instanceof ItemKey && ItemKey.getPins(stack) == this.lock) { + worldObj.playSoundAtEntity(player, "hbm:block.lockOpen", 1.0F, 1.0F); return true; } - + if(stack != null && stack.getItem() == ModItems.key_red) { - worldObj.playSoundAtEntity(player, "hbm:block.lockOpen", 1.0F, 1.0F); + worldObj.playSoundAtEntity(player, "hbm:block.lockOpen", 1.0F, 1.0F); return true; } - + return tryPick(player); } } - + private boolean tryPick(EntityPlayer player) { boolean canPick = false; ItemStack stack = player.getHeldItem(); double chanceOfSuccess = this.lockMod * 100; - - if(stack != null && stack.getItem() == ModItems.pin && player.inventory.hasItem(ModItems.screwdriver)) { - + + if(stack != null && stack.getItem() == ModItems.pin && (player.inventory.hasItem(ModItems.screwdriver) || player.inventory.hasItem(ModItems.screwdriver_desh))) { + stack.stackSize--; canPick = true; } - - if(stack != null && stack.getItem() == ModItems.screwdriver && player.inventory.hasItem(ModItems.pin)) { - + + if(stack != null && (stack.getItem() == ModItems.screwdriver || stack.getItem() == ModItems.screwdriver_desh) && player.inventory.hasItem(ModItems.pin)) { + player.inventory.consumeInventoryItem(ModItems.pin); player.inventoryContainer.detectAndSendChanges(); canPick = true; } - + if(canPick) { - + if(ArmorUtil.checkArmorPiece(player, ModItems.jackt, 2) || ArmorUtil.checkArmorPiece(player, ModItems.jackt2, 2)) chanceOfSuccess *= 100D; - + double rand = player.worldObj.rand.nextDouble() * 100; - + if(chanceOfSuccess > rand) { - worldObj.playSoundAtEntity(player, "hbm:item.pinUnlock", 1.0F, 1.0F); + worldObj.playSoundAtEntity(player, "hbm:item.pinUnlock", 1.0F, 1.0F); return true; } - worldObj.playSoundAtEntity(player, "hbm:item.pinBreak", 1.0F, 0.8F + player.worldObj.rand.nextFloat() * 0.2F); + worldObj.playSoundAtEntity(player, "hbm:item.pinBreak", 1.0F, 0.8F + player.worldObj.rand.nextFloat() * 0.2F); } - + return false; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmgen.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmgen.java index a01b3b6f6..7777ac492 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmgen.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmgen.java @@ -1,7 +1,6 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.ModBlocks; -import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.CompatEnergyControl; @@ -27,12 +26,7 @@ public class TileEntityMachineAmgen extends TileEntityLoadedBase implements IEne Block block = worldObj.getBlock(xCoord, yCoord, zCoord); - if(block == ModBlocks.machine_amgen) { - float rad = ChunkRadiationManager.proxy.getRadiation(worldObj, xCoord, yCoord, zCoord); - this.output += rad; - ChunkRadiationManager.proxy.decrementRad(worldObj, xCoord, yCoord, zCoord, 5F); - - } else if(block == ModBlocks.machine_geo) { + if(block == ModBlocks.machine_geo) { this.checkGeoInteraction(xCoord, yCoord + 1, zCoord); this.checkGeoInteraction(xCoord, yCoord - 1, zCoord); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmmoPress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmmoPress.java new file mode 100644 index 000000000..52e8c65a5 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmmoPress.java @@ -0,0 +1,234 @@ +package com.hbm.tileentity.machine; + +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.container.ContainerMachineAmmoPress; +import com.hbm.inventory.gui.GUIMachineAmmoPress; +import com.hbm.inventory.recipes.AmmoPressRecipes; +import com.hbm.inventory.recipes.AmmoPressRecipes.AmmoPressRecipe; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachineBase; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +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.world.World; + +public class TileEntityMachineAmmoPress extends TileEntityMachineBase implements IControlReceiver, IGUIProvider { + + public int selectedRecipe = -1; + + public AnimationState animState = AnimationState.LIFTING; + + public int playAnimation = 0; + public float prevLift = 0F; + public float lift = 0F; + public float prevPress = 0F; + public float press = 0F; + + public static enum AnimationState { + LIFTING, PRESSING, RETRACTING, LOWERING + } + + public TileEntityMachineAmmoPress() { + super(10); + } + + @Override + public String getName() { + return "container.machineAmmoPress"; + } + + @Override + public void updateEntity() { + if(!worldObj.isRemote) { + if(this.playAnimation > 0) this.playAnimation--; + this.performRecipe(); + this.networkPackNT(25); + } else { + + this.prevLift = this.lift; + this.prevPress = this.press; + + if(playAnimation > 0 || lift > 0) switch(animState) { + case LIFTING: + this.lift += 1F / 40F; + if(this.lift >= 1F) { + this.lift = 1F; + this.animState = AnimationState.PRESSING; + } break; + case PRESSING: + this.press += 1F / 20F; + if(this.press >= 1F) { + this.press = 1F; + this.animState = AnimationState.RETRACTING; + } break; + case RETRACTING: + this.press -= 1F / 20F; + if(this.press <= 0F) { + this.press = 0F; + this.animState = AnimationState.LOWERING; + } break; + case LOWERING: + this.lift -= 1F / 40F; + if(this.lift <= 0F) { + this.lift = 0F; + this.animState = AnimationState.LIFTING; + } break; + } + } + } + + // we want to update the output every time the grid changes, but producing output changes the grid again, so we just put a recursion brake on this fucker + public static boolean recipeLock = false; + + @Override + public void setInventorySlotContents(int slot, ItemStack stack) { + super.setInventorySlotContents(slot, stack); + /*if(this.worldObj.isRemote) return; + + //while this allowed one shift click to process absolutely everything, it also caused a fuckton of issues + if(!recipeLock) { + recipeLock = true; + if(slot < 10) this.performRecipe(); + recipeLock = false; + }*/ + } + + public void performRecipe() { + if(selectedRecipe < 0 || selectedRecipe >= AmmoPressRecipes.recipes.size()) return; + + AmmoPressRecipe recipe = AmmoPressRecipes.recipes.get(selectedRecipe); + + if(slots[9] != null) { + if(slots[9].getItem() != recipe.output.getItem()) return; + if(slots[9].getItemDamage() != recipe.output.getItemDamage()) return; + if(slots[9].stackSize + recipe.output.stackSize > slots[9].getMaxStackSize()) return; + } + + if(this.hasIngredients(recipe)) { + this.produceAmmo(recipe); + performRecipe(); + } + } + + public boolean hasIngredients(AmmoPressRecipe recipe) { + + for(int i = 0; i < 9; i++) { + if(recipe.input[i] == null && slots[i] == null) continue; + if(recipe.input[i] != null && slots[i] == null) return false; + if(recipe.input[i] == null && slots[i] != null) return false; + if(!recipe.input[i].matchesRecipe(slots[i], false)) return false; + } + + return true; + } + + //implies hasIngredients returns true, will violently explode otherwise + protected void produceAmmo(AmmoPressRecipe recipe) { + + for(int i = 0; i < 9; i++) { + if(recipe.input[i] != null) this.decrStackSize(i, recipe.input[i].stacksize); + } + + if(slots[9] == null) { + slots[9] = recipe.output.copy(); + } else { + slots[9].stackSize += recipe.output.stackSize; + } + + this.playAnimation = 40; + } + + public int[] access = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return access; + } + + @Override + public boolean canExtractItem(int i, ItemStack stack, int j) { + return i == 9; + } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) { + if(slot > 8) return false; + if(selectedRecipe < 0 || selectedRecipe >= AmmoPressRecipes.recipes.size()) return false; + + AmmoPressRecipe recipe = AmmoPressRecipes.recipes.get(selectedRecipe); + if(recipe.input[slot] == null) return false; + return recipe.input[slot].matchesRecipe(stack, true); + } + + @Override public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(this.selectedRecipe); + buf.writeInt(this.playAnimation); + + } + + @Override public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.selectedRecipe = buf.readInt(); + this.playAnimation = buf.readInt(); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.selectedRecipe = nbt.getInteger("recipe"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("recipe", selectedRecipe); + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + + @Override + public void receiveControl(NBTTagCompound data) { + int newRecipe = data.getInteger("selection"); + if(newRecipe == selectedRecipe) this.selectedRecipe = -1; + else this.selectedRecipe = newRecipe; + this.markDirty(); + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 2, + 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 ContainerMachineAmmoPress(player.inventory, this); } + @Override @SideOnly(Side.CLIENT) public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineAmmoPress(player.inventory, this); } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java index 2162cfeb8..15a099436 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java @@ -6,19 +6,15 @@ import com.hbm.inventory.container.ContainerMachineArcFurnace; import com.hbm.inventory.gui.GUIMachineArcFurnace; import com.hbm.items.ModItems; import com.hbm.lib.Library; -import com.hbm.packet.AuxElectricityPacket; -import com.hbm.packet.AuxGaugePacket; -import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.CompatEnergyControl; import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.tile.IInfoProviderEC; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.ISidedInventory; @@ -32,12 +28,12 @@ import net.minecraftforge.common.util.ForgeDirection; public class TileEntityMachineArcFurnace extends TileEntityLoadedBase implements ISidedInventory, IEnergyReceiverMK2, IGUIProvider, IInfoProviderEC { private ItemStack slots[]; - + public int dualCookTime; public long power; public static final long maxPower = 50000; public static final int processingSpeed = 20; - + //0: i //1: o //2: 1 @@ -45,9 +41,9 @@ public class TileEntityMachineArcFurnace extends TileEntityLoadedBase implements //4: 3 //5: b private static final int[] slots_io = new int[] {0, 1, 2, 3, 4, 5}; - + private String customName; - + public TileEntityMachineArcFurnace() { slots = new ItemStack[6]; } @@ -92,7 +88,7 @@ public class TileEntityMachineArcFurnace extends TileEntityLoadedBase implements public boolean hasCustomInventoryName() { return this.customName != null && this.customName.length() > 0; } - + public void setCustomName(String name) { this.customName = name; } @@ -111,7 +107,7 @@ public class TileEntityMachineArcFurnace extends TileEntityLoadedBase implements return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=64; } } - + //You scrubs aren't needed for anything (right now) @Override public void openInventory() {} @@ -120,16 +116,16 @@ public class TileEntityMachineArcFurnace extends TileEntityLoadedBase implements @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { - + if(i == 2 || i == 3 || i == 4) return itemStack.getItem() == ModItems.arc_electrode; - + if(i == 0) return FurnaceRecipes.smelting().getSmeltingResult(itemStack) != null; - + return false; } - + @Override public ItemStack decrStackSize(int i, int j) { if(slots[i] != null) @@ -145,22 +141,22 @@ public class TileEntityMachineArcFurnace extends TileEntityLoadedBase implements { slots[i] = null; } - + return itemStack1; } else { return null; } } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); NBTTagList list = nbt.getTagList("items", 10); - + this.power = nbt.getLong("powerTime"); this.dualCookTime = nbt.getInteger("cookTime"); slots = new ItemStack[getSizeInventory()]; - + for(int i = 0; i < list.tagCount(); i++) { NBTTagCompound nbt1 = list.getCompoundTagAt(i); @@ -171,14 +167,14 @@ public class TileEntityMachineArcFurnace extends TileEntityLoadedBase implements } } } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setLong("powerTime", power); nbt.setInteger("cookTime", dualCookTime); NBTTagList list = new NBTTagList(); - + for(int i = 0; i < slots.length; i++) { if(slots[i] != null) @@ -191,7 +187,7 @@ public class TileEntityMachineArcFurnace extends TileEntityLoadedBase implements } nbt.setTag("items", list); } - + @Override public int[] getAccessibleSlotsFromSide(int side) { return slots_io; @@ -204,87 +200,87 @@ public class TileEntityMachineArcFurnace extends TileEntityLoadedBase implements @Override public boolean canExtractItem(int i, ItemStack itemStack, int j) { - + if(i == 1) return true; - + if(i == 2 || i == 3 || i == 4) return itemStack.getItem() == ModItems.arc_electrode_burnt; - + return false; } - + public int getDiFurnaceProgressScaled(int i) { return (dualCookTime * i) / processingSpeed; } - + public long getPowerRemainingScaled(long i) { return (power * i) / maxPower; } - + public boolean hasPower() { return power >= 250; } - + public boolean isProcessing() { return this.dualCookTime > 0; } - + private boolean hasElectrodes() { - + if(slots[2] != null && slots[3] != null && slots[4] != null) { if((slots[2].getItem() == ModItems.arc_electrode) && (slots[3].getItem() == ModItems.arc_electrode) && (slots[4].getItem() == ModItems.arc_electrode)) return true; } - + return false; } - + public boolean canProcess() { - + if(!hasElectrodes()) return false; - + if(slots[0] == null) { return false; } ItemStack itemStack = FurnaceRecipes.smelting().getSmeltingResult(this.slots[0]); - + if(itemStack == null) { return false; } - + if(slots[1] == null) { return true; } - + if(!slots[1].isItemEqual(itemStack)) { return false; } - + if(slots[1].stackSize < getInventoryStackLimit() && slots[1].stackSize < slots[1].getMaxStackSize()) { return true; }else{ return slots[1].stackSize < itemStack.getMaxStackSize(); } } - + private void processItem() { if(canProcess()) { ItemStack itemStack = FurnaceRecipes.smelting().getSmeltingResult(this.slots[0]); - + if(slots[1] == null) { slots[1] = itemStack.copy(); }else if(slots[1].isItemEqual(itemStack)) { slots[1].stackSize += itemStack.stackSize; } - + for(int i = 0; i < 1; i++) { if(slots[i].stackSize <= 0) @@ -300,26 +296,26 @@ public class TileEntityMachineArcFurnace extends TileEntityLoadedBase implements } } } - + //TODO: fix this punjabi trash @Override public void updateEntity() { boolean flag1 = false; - + if(!worldObj.isRemote) { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); - + if(hasPower() && canProcess()) { dualCookTime++; - + power -= 250; - + if(power < 0) power = 0; - + if(this.dualCookTime == processingSpeed) { this.dualCookTime = 0; @@ -329,22 +325,22 @@ public class TileEntityMachineArcFurnace extends TileEntityLoadedBase implements }else{ dualCookTime = 0; } - + boolean trigger = true; - + if(hasPower() && canProcess() && this.dualCookTime == 0) { trigger = false; } - + if(trigger) { flag1 = true; MachineArcFurnace.updateBlockState(this.dualCookTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); } - + if(worldObj.getBlock(xCoord, yCoord, zCoord) == ModBlocks.machine_arc_furnace_off) { - + int meta = worldObj.getBlockMetadata(xCoord, yCoord, zCoord); if(hasElectrodes() && meta <= 5) { @@ -354,30 +350,42 @@ public class TileEntityMachineArcFurnace extends TileEntityLoadedBase implements worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, meta - 4, 2); } } - + power = Library.chargeTEFromItems(slots, 5, power, maxPower); - PacketDispatcher.wrapper.sendToAllAround(new AuxElectricityPacket(xCoord, yCoord, zCoord, power), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, dualCookTime, 0), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); + networkPackNT(50); // it makes no sense to refactor this to some, but I want to delete the AuxElectricityPacket already } - - + if(flag1) { this.markDirty(); } } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeInt(dualCookTime); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + dualCookTime = buf.readInt(); + } + @Override public void setPower(long i) { power = i; - + } @Override public long getPower() { return power; - + } @Override @@ -392,7 +400,7 @@ public class TileEntityMachineArcFurnace extends TileEntityLoadedBase implements @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineArcFurnace(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java index abd5b4ec2..7ec5ae47f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java @@ -1,13 +1,14 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IControlReceiver; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.container.ContainerMachineArcFurnaceLarge; import com.hbm.inventory.gui.GUIMachineArcFurnaceLarge; import com.hbm.inventory.material.MaterialShapes; @@ -21,8 +22,8 @@ import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; @@ -36,7 +37,6 @@ import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -48,7 +48,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase implements IEnergyReceiverMK2, IControlReceiver, IGUIProvider, IUpgradeInfoProvider { - + public long power; public static final long maxPower = 2_500_000; public boolean liquidMode = false; @@ -57,25 +57,27 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl public boolean hasMaterial; public int delay; public int upgrade; - + public float lid; public float prevLid; public int approachNum; public float syncLid; - + private AudioWrapper audioLid; private AudioWrapper audioProgress; - + + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + public byte[] electrodes = new byte[3]; public static final byte ELECTRODE_NONE = 0; public static final byte ELECTRODE_FRESH = 1; public static final byte ELECTRODE_USED = 2; public static final byte ELECTRODE_DEPLETED = 3; - + public int getMaxInputSize() { return upgrade == 0 ? 1 : upgrade == 1 ? 4 : upgrade == 2 ? 8 : 16; } - + public static final int maxLiquid = MaterialShapes.BLOCK.q(128); public List liquids = new ArrayList(); @@ -91,7 +93,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl @Override public void setInventorySlotContents(int i, ItemStack stack) { super.setInventorySlotContents(i, stack); - + if(stack != null && stack.getItem() instanceof ItemMachineUpgrade && i == 4) { worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:item.upgradePlug", 1.0F, 1.0F); } @@ -99,31 +101,31 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl @Override public void updateEntity() { - - UpgradeManager.eval(slots, 4, 4); - this.upgrade = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); - + + upgradeManager.checkSlots(this, slots, 4, 4); + this.upgrade = upgradeManager.getLevel(UpgradeType.SPEED); + if(!worldObj.isRemote) { - + this.power = Library.chargeTEFromItems(slots, 3, power, maxPower); this.isProgressing = false; - + for(DirPos pos : getConPos()) this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - + if(power > 0) { - + boolean ingredients = this.hasIngredients(); boolean electrodes = this.hasElectrodes(); - + int consumption = (int) (1_000 * Math.pow(5, upgrade)); - + if(ingredients && electrodes && delay <= 0 && this.liquids.isEmpty()) { if(lid > 0) { lid -= 1F / (60F / (upgrade * 0.5 + 1)); if(lid < 0) lid = 0; this.progress = 0; } else { - + if(power >= consumption) { int duration = 400 / (upgrade * 2 + 1); this.progress += 1F / duration; @@ -146,18 +148,18 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl if(lid > 1) lid = 1; } } - + hasMaterial = ingredients; } - + this.decideElectrodeState(); - + if(!hasMaterial) hasMaterial = this.hasIngredients(); - + if(!this.liquids.isEmpty() && this.lid > 0F) { - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); - + Vec3 impact = Vec3.createVectorHelper(0, 0, 0); MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 2.875D, yCoord + 1.25D, zCoord + 0.5D + dir.offsetZ * 2.875D, 6, true, this.liquids, MaterialShapes.INGOT.q(1), impact); @@ -172,21 +174,21 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D + dir.offsetX * 2.875D, yCoord + 1, zCoord + 0.5D + dir.offsetZ * 2.875D), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 50)); } } - + this.liquids.removeIf(o -> o.amount <= 0); - + this.networkPackNT(150); } else { this.prevLid = this.lid; - + if(this.approachNum > 0) { this.lid = this.lid + ((this.syncLid - this.lid) / (float) this.approachNum); --this.approachNum; } else { this.lid = this.syncLid; } - + if(this.lid != this.prevLid) { if(this.audioLid == null || !this.audioLid.isPlaying()) { this.audioLid = MainRegistry.proxy.getLoopedSound("hbm:door.wgh_start", xCoord, yCoord, zCoord, this.getVolume(0.75F), 15F, 1.0F, 5); @@ -199,11 +201,11 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl this.audioLid = null; } } - + if((lid == 1 || lid == 0) && lid != prevLid && !(this.prevLid == 0 && this.lid == 1)) { MainRegistry.proxy.playSoundClient(xCoord, yCoord, zCoord, "hbm:door.wgh_stop", this.getVolume(1), 1F); } - + if(this.isProgressing) { if(this.audioProgress == null || !this.audioProgress.isPlaying()) { this.audioProgress = MainRegistry.proxy.getLoopedSound("hbm:block.electricHum", xCoord, yCoord, zCoord, this.getVolume(1.5F), 15F, 0.75F, 5); @@ -217,7 +219,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl this.audioProgress = null; } } - + if(this.lid != this.prevLid && this.lid > this.prevLid && !(this.prevLid == 0 && this.lid == 1) && MainRegistry.proxy.me().getDistance(xCoord + 0.5, yCoord + 4, zCoord + 0.5) < 50) { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "tower"); @@ -234,7 +236,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl data.setFloat("strafe", 0.05F); for(int i = 0; i < 3; i++) MainRegistry.proxy.effectNT(data); } - + if(this.lid != this.prevLid && this.lid < this.prevLid && this.lid > 0.5F && this.hasMaterial && MainRegistry.proxy.me().getDistance(xCoord + 0.5, yCoord + 4, zCoord + 0.5) < 50) { /*NBTTagCompound data = new NBTTagCompound(); data.setString("type", "tower"); @@ -250,7 +252,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl data.setInteger("color", 0x808080); data.setFloat("strafe", 0.15F); MainRegistry.proxy.effectNT(data);*/ - + if(worldObj.rand.nextInt(5) == 0) { NBTTagCompound flame = new NBTTagCompound(); flame.setString("type", "rbmkflame"); @@ -263,10 +265,10 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl } } } - + public void decideElectrodeState() { for(int i = 0; i < 3; i++) { - + if(slots[i] != null) { if(slots[i].getItem() == ModItems.arc_electrode_burnt) { this.electrodes[i] = this.ELECTRODE_DEPLETED; continue; } if(slots[i].getItem() == ModItems.arc_electrode) { @@ -278,26 +280,26 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl this.electrodes[i] = this.ELECTRODE_NONE; } } - + public void process() { - + for(int i = 5; i < 25; i++) { if(slots[i] == null) continue; ArcFurnaceRecipe recipe = ArcFurnaceRecipes.getOutput(slots[i], this.liquidMode); if(recipe == null) continue; - + if(!liquidMode && recipe.solidOutput != null) { int amount = slots[i].stackSize; slots[i] = recipe.solidOutput.copy(); slots[i].stackSize *= amount; } - + if(liquidMode && recipe.fluidOutput != null) { - + while(slots[i] != null && slots[i].stackSize > 0) { int liquid = this.getStackAmount(liquids); int toAdd = this.getStackAmount(recipe.fluidOutput); - + if(liquid + toAdd <= this.maxLiquid) { this.decrStackSize(i, 1); for(MaterialStack stack : recipe.fluidOutput) { @@ -309,16 +311,16 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl } } } - + for(int i = 0; i < 3; i++) { if(ItemArcElectrode.damage(slots[i])) { slots[i] = new ItemStack(ModItems.arc_electrode_burnt, 1, slots[i].getItemDamage()); } } } - + public boolean hasIngredients() { - + for(int i = 5; i < 25; i++) { if(slots[i] == null) continue; ArcFurnaceRecipe recipe = ArcFurnaceRecipes.getOutput(slots[i], this.liquidMode); @@ -326,10 +328,10 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl if(liquidMode && recipe.fluidOutput != null) return true; if(!liquidMode && recipe.solidOutput != null) return true; } - + return false; } - + public boolean hasElectrodes() { for(int i = 0; i < 3; i++) { if(slots[i] == null || slots[i].getItem() != ModItems.arc_electrode) return false; @@ -385,35 +387,35 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl if(slot > 4) return lid > 0 && ArcFurnaceRecipes.getOutput(stack, this.liquidMode) == null; return false; } - + public void addToStack(MaterialStack matStack) { - + for(MaterialStack mat : liquids) { if(mat.material == matStack.material) { mat.amount += matStack.amount; return; } } - + liquids.add(matStack.copy()); } - + public static int getStackAmount(List stack) { int amount = 0; for(MaterialStack mat : stack) amount += mat.amount; return amount; } - + public static int getStackAmount(MaterialStack[] stack) { int amount = 0; for(MaterialStack mat : stack) amount += mat.amount; return amount; } - + protected DirPos[] getConPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - + return new DirPos[] { new DirPos(xCoord + dir.offsetX * 3 + rot.offsetX, yCoord, zCoord + dir.offsetZ * 3 + rot.offsetZ, dir), new DirPos(xCoord + dir.offsetX * 3 - rot.offsetX, yCoord, zCoord + dir.offsetZ * 3 - rot.offsetZ, dir), @@ -433,17 +435,17 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl buf.writeBoolean(isProgressing); buf.writeBoolean(liquidMode); buf.writeBoolean(hasMaterial); - + for(int i = 0; i < 3; i++) buf.writeByte(electrodes[i]); - + buf.writeShort(liquids.size()); - + for(MaterialStack mat : liquids) { buf.writeInt(mat.material.id); buf.writeInt(mat.amount); } } - + @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); @@ -453,32 +455,32 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl this.isProgressing = buf.readBoolean(); this.liquidMode = buf.readBoolean(); this.hasMaterial = buf.readBoolean(); - + for(int i = 0; i < 3; i++) electrodes[i] = buf.readByte(); - + int mats = buf.readShort(); - + this.liquids.clear(); for(int i = 0; i < mats; i++) { liquids.add(new MaterialStack(Mats.matById.get(buf.readInt()), buf.readInt())); } - + if(syncLid != 0 && syncLid != 1) this.approachNum = 2; } @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - + this.power = nbt.getLong("power"); this.liquidMode = nbt.getBoolean("liquidMode"); this.progress = nbt.getFloat("progress"); this.lid = nbt.getFloat("lid"); this.delay = nbt.getInteger("delay"); - + int count = nbt.getShort("count"); liquids.clear(); - + for(int i = 0; i < count; i++) { liquids.add(new MaterialStack(Mats.matById.get(nbt.getInteger("m" + i)), nbt.getInteger("a" + i))); } @@ -492,7 +494,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl nbt.setFloat("progress", progress); nbt.setFloat("lid", lid); nbt.setInteger("delay", delay); - + int count = liquids.size(); nbt.setShort("count", (short) count); for(int i = 0; i < count; i++) { @@ -516,12 +518,12 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl public long getMaxPower() { return maxPower; } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 3, @@ -532,10 +534,10 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl zCoord + 4 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -549,7 +551,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineArcFurnaceLarge(player.inventory, this); } @@ -581,8 +583,10 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 3; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 3); + return upgrades; } + } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java index 6a3132006..6ab6585c6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java @@ -1,10 +1,11 @@ package com.hbm.tileentity.machine; +import java.util.HashMap; import java.util.List; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.container.ContainerMachineArcWelder; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; @@ -14,12 +15,9 @@ import com.hbm.inventory.recipes.ArcWelderRecipes.ArcWelderRecipe; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.IConditionalInvAccess; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.IUpgradeInfoProvider; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.*; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; @@ -30,7 +28,6 @@ import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.Item; @@ -41,18 +38,20 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineArcWelder extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IConditionalInvAccess, IGUIProvider, IUpgradeInfoProvider { - +public class TileEntityMachineArcWelder extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IConditionalInvAccess, IGUIProvider, IUpgradeInfoProvider, IFluidCopiable { + public long power; public long maxPower = 2_000; public long consumption; - + public int progress; public int processTime = 1; - + public FluidTank tank; public ItemStack display; + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + public TileEntityMachineArcWelder() { super(8); this.tank = new FluidTank(Fluids.NONE, 24_000); @@ -66,7 +65,7 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements @Override public void setInventorySlotContents(int i, ItemStack stack) { super.setInventorySlotContents(i, stack); - + if(stack != null && stack.getItem() instanceof ItemMachineUpgrade && i >= 6 && i <= 7) { worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:item.upgradePlug", 1.0F, 1.0F); } @@ -74,48 +73,48 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + this.power = Library.chargeTEFromItems(slots, 4, this.getPower(), this.getMaxPower()); this.tank.setType(5, slots); - + if(worldObj.getTotalWorldTime() % 20 == 0) { for(DirPos pos : getConPos()) { this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); if(tank.getTankType() != Fluids.NONE) this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - + ArcWelderRecipe recipe = ArcWelderRecipes.getRecipe(slots[0], slots[1], slots[2]); long intendedMaxPower; - - UpgradeManager.eval(slots, 6, 7); - int redLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); - int blueLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); - + + upgradeManager.checkSlots(this, slots, 6, 7); + int redLevel = upgradeManager.getLevel(UpgradeType.SPEED); + int blueLevel = upgradeManager.getLevel(UpgradeType.POWER); + if(recipe != null) { this.processTime = recipe.duration - (recipe.duration * redLevel / 6) + (recipe.duration * blueLevel / 3); this.consumption = recipe.consumption + (recipe.consumption * redLevel) - (recipe.consumption * blueLevel / 6); intendedMaxPower = recipe.consumption * 20; - + if(canProcess(recipe)) { this.progress++; this.power -= this.consumption; - + if(progress >= processTime) { this.progress = 0; this.consumeItems(recipe); - + if(slots[3] == null) { slots[3] = recipe.output.copy(); } else { slots[3].stackSize += recipe.output.stackSize; } - + this.markDirty(); } - + if(worldObj.getTotalWorldTime() % 2 == 0) { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); NBTTagCompound dPart = new NBTTagCompound(); @@ -123,23 +122,23 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements dPart.setByte("count", (byte) 5); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(dPart, xCoord + 0.5 - dir.offsetX * 0.5, yCoord + 1.25, zCoord + 0.5 - dir.offsetZ * 0.5), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 25)); } - + } else { this.progress = 0; } - + } else { this.progress = 0; this.consumption = 100; intendedMaxPower = 2000; } - + this.maxPower = Math.max(intendedMaxPower, power); - + this.networkPackNT(25); } } - + @Override public void serialize(ByteBuf buf) { super.serialize(buf); @@ -148,11 +147,11 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements buf.writeLong(consumption); buf.writeInt(progress); buf.writeInt(processTime); - + tank.serialize(buf); - + ArcWelderRecipe recipe = ArcWelderRecipes.getRecipe(slots[0], slots[1], slots[2]); - + if(recipe != null) { buf.writeBoolean(true); buf.writeInt(Item.getIdFromItem(recipe.output.getItem())); @@ -160,7 +159,7 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements } else buf.writeBoolean(false); } - + @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); @@ -169,37 +168,37 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements consumption = buf.readLong(); progress = buf.readInt(); processTime = buf.readInt(); - + tank.deserialize(buf); - + if(buf.readBoolean()) { this.display = new ItemStack(Item.getItemById(buf.readInt()), 1, buf.readInt()); } else this.display = null; } - + public boolean canProcess(ArcWelderRecipe recipe) { - + if(this.power < this.consumption) return false; - + if(recipe.fluid != null) { if(this.tank.getTankType() != recipe.fluid.type) return false; if(this.tank.getFill() < recipe.fluid.fill) return false; } - + if(slots[3] != null) { if(slots[3].getItem() != recipe.output.getItem()) return false; if(slots[3].getItemDamage() != recipe.output.getItemDamage()) return false; if(slots[3].stackSize + recipe.output.stackSize > slots[3].getMaxStackSize()) return false; } - + return true; } - + public void consumeItems(ArcWelderRecipe recipe) { - + for(AStack aStack : recipe.ingredients) { - + for(int i = 0; i < 3; i++) { ItemStack stack = slots[i]; if(aStack.matchesRecipe(stack, true) && stack.stackSize >= aStack.stacksize) { @@ -208,17 +207,17 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements } } } - + if(recipe.fluid != null) { this.tank.setFill(tank.getFill() - recipe.fluid.fill); } } - + protected DirPos[] getConPos() { - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - + return new DirPos[] { new DirPos(xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ, dir), new DirPos(xCoord + dir.offsetX + rot.offsetX, yCoord, zCoord + dir.offsetZ + rot.offsetZ, dir), @@ -232,7 +231,7 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements new DirPos(xCoord - dir.offsetX - rot.offsetX * 2, yCoord, zCoord - dir.offsetZ - rot.offsetZ * 2, rot.getOpposite()) }; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -243,7 +242,7 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements this.processTime = nbt.getInteger("processTime"); tank.readFromNBT(nbt, "t"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -316,19 +315,19 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); BlockPos core = new BlockPos(xCoord, yCoord, zCoord); - + //Red if(pos.equals(core.clone().offset(rot)) || pos.equals(core.clone().offset(rot.getOpposite()).offset(dir.getOpposite()))) return new int[] { 0, 3 }; - + //Yellow if(pos.equals(core.clone().offset(dir.getOpposite()))) return new int[] { 1, 3 }; - + //Green if(pos.equals(core.clone().offset(rot.getOpposite())) || pos.equals(core.clone().offset(rot).offset(dir.getOpposite()))) return new int[] { 2, 3 }; - + return new int[] { }; } @@ -339,15 +338,15 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineArcWelder(player.inventory, this); } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 1, @@ -358,10 +357,10 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements zCoord + 2 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -387,9 +386,15 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 3; - if(type == UpgradeType.POWER) return 3; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 3); + upgrades.put(UpgradeType.POWER, 3); + return upgrades; + } + + @Override + public FluidTank getTankToPaste() { + return tank; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java index c16320387..fd7d1b822 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java @@ -1,12 +1,13 @@ package com.hbm.tileentity.machine; +import java.util.HashMap; import java.util.List; import java.util.Random; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.handler.MultiblockHandlerXR; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.container.ContainerMachineAssembler; import com.hbm.inventory.gui.GUIMachineAssembler; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; @@ -21,7 +22,6 @@ import api.hbm.energymk2.IBatteryItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -32,11 +32,13 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase implements IUpgradeInfoProvider { - + public int recipe = -1; + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + Random rand = new Random(); - + public TileEntityMachineAssembler() { super(18); } @@ -51,19 +53,19 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i if(i == 0) if(itemStack.getItem() instanceof IBatteryItem) return true; - + if(i == 1) return true; - + return false; } - + @Override public void updateEntity() { super.updateEntity(); - + if(!worldObj.isRemote) { - + //meta below 12 means that it's an old multiblock configuration if(this.getBlockMetadata() < 12) { int meta = this.getBlockMetadata(); @@ -84,18 +86,18 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i worldObj.getTileEntity(xCoord, yCoord, zCoord).readFromNBT(data); return; } - + this.updateConnections(); this.consumption = 100; this.speed = 100; - - UpgradeManager.eval(slots, 1, 3); - int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); - int powerLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); - int overLevel = UpgradeManager.getLevel(UpgradeType.OVERDRIVE); - + upgradeManager.checkSlots(this, slots, 1, 3); + + int speedLevel = upgradeManager.getLevel(UpgradeType.SPEED); + int powerLevel = upgradeManager.getLevel(UpgradeType.POWER); + int overLevel = upgradeManager.getLevel(UpgradeType.OVERDRIVE); + speed -= speedLevel * 25; consumption += speedLevel * 300; speed += powerLevel * 5; @@ -108,14 +110,14 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i ComparableStack comp = ItemAssemblyTemplate.readType(slots[4]); rec = AssemblerRecipes.recipeList.indexOf(comp); }*/ - + this.networkPackNT(150); } else { - + float volume = this.getVolume(2F); if(isProgressing && volume > 0) { - + if(audio == null) { audio = this.createAudioLoop(); audio.updateVolume(volume); @@ -124,9 +126,9 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i audio = rebootAudio(audio); audio.updateVolume(volume); } - + } else { - + if(audio != null) { audio.stopSound(); audio = null; @@ -134,7 +136,7 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i } } } - + @Override public void serialize(ByteBuf buf) { super.serialize(buf); @@ -143,11 +145,11 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i buf.writeInt(progress[i]); buf.writeInt(maxProgress[i]); } - + buf.writeBoolean(isProgressing); buf.writeInt(recipe); } - + @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); @@ -156,28 +158,28 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i progress[i] = buf.readInt(); maxProgress[i] = buf.readInt(); } - + isProgressing = buf.readBoolean(); recipe = buf.readInt(); } - + @Override public AudioWrapper createAudioLoop() { return MainRegistry.proxy.getLoopedSound("hbm:block.assemblerOperate", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F); } - + private void updateConnections() { - + for(DirPos pos : getConPos()) { this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - + public DirPos[] getConPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); - + return new DirPos[] { new DirPos(xCoord + rot.offsetX * 3, yCoord, zCoord + rot.offsetZ * 3, rot), new DirPos(xCoord - rot.offsetX * 2, yCoord, zCoord - rot.offsetZ * 2, rot.getOpposite()), @@ -205,7 +207,7 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i audio = null; } } - + private AudioWrapper audio; @Override @@ -245,12 +247,12 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i public long getMaxPower() { return 100_000; } - + @Override public AxisAlignedBB getRenderBoundingBox() { return AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 1, zCoord + 1).expand(2, 1, 2); } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -264,7 +266,7 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineAssembler(player.inventory, this); } @@ -290,10 +292,11 @@ public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase i } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 3; - if(type == UpgradeType.POWER) return 3; - if(type == UpgradeType.OVERDRIVE) return 9; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 3); + upgrades.put(UpgradeType.POWER, 3); + upgrades.put(UpgradeType.OVERDRIVE, 3); + return upgrades; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java index be6f29afa..d0d58dfb4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.machine; +import java.util.HashMap; import java.util.List; import com.hbm.inventory.RecipesCommon.AStack; @@ -11,6 +12,7 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.machine.storage.TileEntityCrateTemplate; import com.hbm.util.InventoryUtil; +import com.hbm.util.ItemStackUtil; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energymk2.IEnergyReceiverMK2; @@ -27,13 +29,13 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa public int[] maxProgress; public boolean isProgressing; public boolean[] needsTemplateSwitch; - + int consumption = 100; int speed = 100; public TileEntityMachineAssemblerBase(int scount) { super(scount); - + int count = this.getRecipeCount(); progress = new int[count]; @@ -43,20 +45,20 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + int count = this.getRecipeCount(); - + this.isProgressing = false; this.power = Library.chargeTEFromItems(slots, getPowerSlot(), power, this.getMaxPower()); - + for(int i = 0; i < count; i++) { unloadItems(i); loadItems(i); } - + for(int i = 0; i < count; i++) { if(!canProcess(i)) { this.progress[i] = 0; @@ -67,53 +69,62 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa } } } - + protected boolean canProcess(int index) { - + int template = getTemplateIndex(index); - + if(slots[template] == null || slots[template].getItem() != ModItems.assembly_template) return false; List recipe = AssemblerRecipes.getRecipeFromTempate(slots[template]); ItemStack output = AssemblerRecipes.getOutputFromTempate(slots[template]); - + if(recipe == null) return false; - + if(this.power < this.consumption) return false; if(!hasRequiredItems(recipe, index)) return false; if(!hasSpaceForItems(output, index)) return false; - + return true; } - + + public HashMap cachedItems = new HashMap<>(); + private boolean hasRequiredItems(List recipe, int index) { int[] indices = getSlotIndicesFromIndex(index); - return InventoryUtil.doesArrayHaveIngredients(slots, indices[0], indices[1], recipe.toArray(new AStack[0])); + ItemStack[] copy = ItemStackUtil.carefulCopyArrayTruncate(slots, indices[0], indices[1]); + if (cachedItems.get(copy) != null) + return cachedItems.get(copy); + else { + boolean hasItems = InventoryUtil.doesArrayHaveIngredients(slots, indices[0], indices[1], recipe.toArray(new AStack[0])); + cachedItems.put(copy, hasItems); + return hasItems; + } } - + private boolean hasSpaceForItems(ItemStack recipe, int index) { int[] indices = getSlotIndicesFromIndex(index); return InventoryUtil.doesArrayHaveSpace(slots, indices[2], indices[2], new ItemStack[] { recipe }); } - + protected void process(int index) { - + this.power -= this.consumption; this.progress[index]++; - + if(slots[0] != null && slots[0].getItem() == ModItems.meteorite_sword_alloyed) slots[0] = new ItemStack(ModItems.meteorite_sword_machined); //fisfndmoivndlmgindgifgjfdnblfm - + int template = getTemplateIndex(index); List recipe = AssemblerRecipes.getRecipeFromTempate(slots[template]); ItemStack output = AssemblerRecipes.getOutputFromTempate(slots[template]); int time = ItemAssemblyTemplate.getProcessTime(slots[template]); - + this.maxProgress[index] = time * this.speed / 100; - + if(this.progress[index] >= this.maxProgress[index]) { consumeItems(recipe, index); produceItems(output, index); @@ -122,28 +133,28 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa this.markDirty(); } } - + private void consumeItems(List recipe, int index) { - + int[] indices = getSlotIndicesFromIndex(index); - + for(AStack in : recipe) { if(in != null) InventoryUtil.tryConsumeAStack(slots, indices[0], indices[1], in); } } - + private void produceItems(ItemStack out, int index) { - + int[] indices = getSlotIndicesFromIndex(index); - + if(out != null) { InventoryUtil.tryAddItemToInventory(slots, indices[2], indices[2], out.copy()); } } - + private void loadItems(int index) { - + int template = getTemplateIndex(index); DirPos[] positions = getInputPositions(); @@ -152,7 +163,7 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa for(DirPos coord : positions) { TileEntity te = worldObj.getTileEntity(coord.getX(), coord.getY(), coord.getZ()); - + if(te instanceof IInventory) { IInventory inv = (IInventory) te; @@ -174,7 +185,7 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa } } } - + boolean noTemplate = slots[template] == null || slots[template].getItem() != ModItems.assembly_template; if(!noTemplate) { @@ -184,17 +195,17 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa if(recipe != null) { for(AStack ingredient : recipe) { - + int tracker = 0; outer: while(!InventoryUtil.doesArrayHaveIngredients(slots, indices[0], indices[1], ingredient)) { - + if(tracker++ > 10) break; boolean found = false; for(int i = 0; i < (access != null ? access.length : inv.getSizeInventory()); i++) { - + int slot = access != null ? access[i] : i; ItemStack stack = inv.getStackInSlot(slot); if(ingredient.matchesRecipe(stack, true) && (sided == null || sided.canExtractItem(slot, stack, 0))) { @@ -229,25 +240,25 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa } } } - + private void unloadItems(int index) { DirPos[] positions = getOutputPositions(); int[] indices = getSlotIndicesFromIndex(index); - + for(DirPos coord : positions) { - + TileEntity te = worldObj.getTileEntity(coord.getX(), coord.getY(), coord.getZ()); - + if(te instanceof IInventory) { - + IInventory inv = (IInventory) te; ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; int[] access = sided != null ? sided.getAccessibleSlotsFromSide(coord.getDir().ordinal()) : null; - + int i = indices[2]; ItemStack out = slots[i]; - + int template = getTemplateIndex(index); if(this.needsTemplateSwitch[index] && te instanceof TileEntityCrateTemplate && slots[template] != null) { out = slots[template]; @@ -259,10 +270,10 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { int slot = access != null ? access[j] : j; - + if(!(sided != null ? sided.canInsertItem(slot, out, coord.getDir().ordinal()) : inv.isItemValidForSlot(slot, out))) continue; - + ItemStack target = inv.getStackInSlot(slot); if(InventoryUtil.doesStackDataMatch(out, target) && target.stackSize < target.getMaxStackSize() && target.stackSize < inv.getInventoryStackLimit()) { @@ -275,7 +286,7 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { int slot = access != null ? access[j] : j; - + if(!inv.isItemValidForSlot(slot, out)) continue; @@ -291,20 +302,20 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa } } } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - + this.power = nbt.getLong("power"); if(nbt.hasKey("progress")) this.progress = nbt.getIntArray("progress"); if(nbt.hasKey("maxProgress")) this.maxProgress = nbt.getIntArray("maxProgress"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + nbt.setLong("power", power); nbt.setIntArray("progress", progress); nbt.setIntArray("maxProgress", maxProgress); @@ -322,7 +333,7 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa public abstract int getRecipeCount(); public abstract int getTemplateIndex(int index); - + /** * @param index * @return A size 3 int array containing min input, max input and output indices in that order. diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java index 948022a43..9919ffec1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java @@ -1,17 +1,19 @@ package com.hbm.tileentity.machine; +import java.util.HashMap; import java.util.List; import java.util.Random; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.container.ContainerAssemfac; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIAssemfac; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; @@ -21,26 +23,26 @@ import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -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.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase implements IFluidStandardTransceiver, IUpgradeInfoProvider { - +public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase implements IFluidStandardTransceiver, IUpgradeInfoProvider, IFluidCopiable { + public AssemblerArm[] arms; public FluidTank water; public FluidTank steam; + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + public TileEntityMachineAssemfac() { super(14 * 8 + 4 + 1); //8 assembler groups with 14 slots, 4 upgrade slots, 1 battery slot - + arms = new AssemblerArm[6]; for(int i = 0; i < arms.length; i++) { arms[i] = new AssemblerArm(i % 3 == 1 ? 1 : 0); //the second of every group of three becomes a welder @@ -58,7 +60,7 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im @Override public void setInventorySlotContents(int i, ItemStack stack) { super.setInventorySlotContents(i, stack); - + if(stack != null && i >= 1 && i <= 4 && stack.getItem() instanceof ItemMachineUpgrade) { worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:item.upgradePlug", 1.0F, 1.0F); } @@ -67,37 +69,37 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im @Override public void updateEntity() { super.updateEntity(); - + if(!worldObj.isRemote) { - + if(worldObj.getTotalWorldTime() % 20 == 0) { this.updateConnections(); } - + this.speed = 100; this.consumption = 100; - - UpgradeManager.eval(slots, 1, 4); - int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 6); - int powerLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); - int overLevel = UpgradeManager.getLevel(UpgradeType.OVERDRIVE); - + upgradeManager.checkSlots(this, slots, 1, 4); + + int speedLevel = upgradeManager.getLevel(UpgradeType.SPEED); + int powerLevel = upgradeManager.getLevel(UpgradeType.POWER); + int overLevel = upgradeManager.getLevel(UpgradeType.OVERDRIVE); + this.speed -= speedLevel * 15; this.consumption += speedLevel * 300; this.speed += powerLevel * 5; this.consumption -= powerLevel * 30; this.speed /= (overLevel + 1); this.consumption *= (overLevel + 1); - + for(DirPos pos : getConPos()) { this.sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - + this.networkPackNT(150); - + } else { - + for(AssemblerArm arm : arms) { arm.updateInterp(); if(isProgressing) { @@ -106,7 +108,7 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im } } } - + @Override public void serialize(ByteBuf buf) { super.serialize(buf); @@ -119,7 +121,7 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im water.serialize(buf); steam.serialize(buf); } - + @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); @@ -132,20 +134,7 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im water.deserialize(buf); steam.deserialize(buf); } - - @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.progress = nbt.getIntArray("progress"); - this.maxProgress = nbt.getIntArray("maxProgress"); - this.isProgressing = nbt.getBoolean("isProgressing"); - - water.readFromNBT(nbt, "w"); - steam.readFromNBT(nbt, "s"); - } - + private int getWaterRequired() { return 1000 / this.speed; } @@ -161,19 +150,19 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im this.water.setFill(this.water.getFill() - getWaterRequired()); this.steam.setFill(this.steam.getFill() + getWaterRequired()); } - + private void updateConnections() { for(DirPos pos : getConPos()) { this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(water.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - + public DirPos[] getConPos() { - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - + return new DirPos[] { new DirPos(xCoord - dir.offsetX * 3 + rot.offsetX * 5, yCoord, zCoord - dir.offsetZ * 3 + rot.offsetZ * 5, rot), new DirPos(xCoord + dir.offsetX * 2 + rot.offsetX * 5, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * 5, rot), @@ -185,22 +174,22 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im new DirPos(xCoord + dir.offsetX * 4 - rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 4 - rot.offsetZ * 2, dir) }; } - + public static class AssemblerArm { public double[] angles = new double[4]; public double[] prevAngles = new double[4]; public double[] targetAngles = new double[4]; public double[] speed = new double[4]; - + Random rand = new Random(); - + int actionMode; ArmActionState state; int actionDelay = 0; - + public AssemblerArm(int actionMode) { this.actionMode = actionMode; - + if(this.actionMode == 0) { speed[0] = 15; //Pivot speed[1] = 15; //Arm @@ -212,19 +201,19 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im speed[2] = 1; //Piston speed[3] = 0.125; //Striker } - + state = ArmActionState.ASSUME_POSITION; chooseNewArmPoistion(); actionDelay = rand.nextInt(20); } - + public void updateArm() { - + if(actionDelay > 0) { actionDelay--; return; } - + switch(state) { //Move. If done moving, set a delay and progress to EXTEND case ASSUME_POSITION: @@ -268,12 +257,12 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im state = ArmActionState.ASSUME_POSITION; } break; - + } } - + public void chooseNewArmPoistion() { - + if(this.actionMode == 0) { targetAngles[0] = -rand.nextInt(50); //Pivot targetAngles[1] = -targetAngles[0]; //Arm @@ -284,45 +273,45 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im targetAngles[2] = rand.nextInt(10) + 10; //Piston } } - + private void updateInterp() { for(int i = 0; i < angles.length; i++) { prevAngles[i] = angles[i]; } } - + /** * @return True when it has finished moving */ private boolean move() { boolean didMove = false; - + for(int i = 0; i < angles.length; i++) { if(angles[i] == targetAngles[i]) continue; - + didMove = true; - + double angle = angles[i]; double target = targetAngles[i]; double turn = speed[i]; double delta = Math.abs(angle - target); - + if(delta <= turn) { angles[i] = targetAngles[i]; continue; } - + if(angle < target) { angles[i] += turn; } else { angles[i] -= turn; } } - + return !didMove; } - + public static enum ArmActionState { ASSUME_POSITION, EXTEND_STRIKER, @@ -330,12 +319,12 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im RETRACT_STRIKER } } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 5, @@ -346,10 +335,10 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im zCoord + 5 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -378,42 +367,42 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im DirPos[] inpos; DirPos[] outpos; - + @Override public DirPos[] getInputPositions() { - + if(inpos != null) return inpos; - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - + inpos = new DirPos[] { new DirPos(xCoord + dir.offsetX * 4 - rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 4 - rot.offsetZ * 1, dir), new DirPos(xCoord - dir.offsetX * 5 + rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 5 + rot.offsetZ * 2, dir.getOpposite()), new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX * 4, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ * 4, rot.getOpposite()), new DirPos(xCoord + dir.offsetX * 1 + rot.offsetX * 5, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 5, rot) }; - + return inpos; } @Override public DirPos[] getOutputPositions() { - + if(outpos != null) return outpos; - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - + outpos = new DirPos[] { new DirPos(xCoord + dir.offsetX * 4 + rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 4 + rot.offsetZ * 2, dir), new DirPos(xCoord - dir.offsetX * 5 - rot.offsetX * 1, yCoord, zCoord - dir.offsetZ * 5 - rot.offsetZ * 1, dir.getOpposite()), new DirPos(xCoord + dir.offsetX * 1 - rot.offsetX * 4, yCoord, zCoord + dir.offsetZ * 1 - rot.offsetZ * 4, rot.getOpposite()), new DirPos(xCoord - dir.offsetX * 2 + rot.offsetX * 5, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ * 5, rot) }; - + return outpos; } @@ -444,7 +433,7 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIAssemfac(player.inventory, this); } @@ -470,10 +459,16 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 6; - if(type == UpgradeType.POWER) return 3; - if(type == UpgradeType.OVERDRIVE) return 12; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 6); + upgrades.put(UpgradeType.POWER, 3); + upgrades.put(UpgradeType.OVERDRIVE, 12); + return upgrades; + } + + @Override + public FluidTank getTankToPaste() { + return null; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java index b34010cea..a9bc5fc86 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java @@ -15,12 +15,10 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.InventoryCrafting; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraft.item.crafting.IRecipe; @@ -187,7 +185,7 @@ public class TileEntityMachineAutocrafter extends TileEntityMachineBase implemen if(i > 9 && i < 19) { ItemStack filter = slots[i - 10]; - if(filter == null) return true; + if(filter == null || matcher.modes[i - 10] == null || matcher.modes[i - 10].isEmpty()) return true; return !matcher.isValidForFilter(filter, i - 10, stack); } @@ -216,7 +214,7 @@ public class TileEntityMachineAutocrafter extends TileEntityMachineBase implemen List validSlots = new ArrayList(); for(int i = 0; i < 9; i++) { ItemStack filter = slots[i]; - if(filter == null) continue; + if(filter == null || matcher.modes[i] == null || matcher.modes[i].isEmpty()) continue; if(matcher.isValidForFilter(filter, i, stack)) { validSlots.add(i + 10); @@ -339,7 +337,7 @@ public class TileEntityMachineAutocrafter extends TileEntityMachineBase implemen @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIAutocrafter(player.inventory, this); } @@ -350,13 +348,19 @@ public class TileEntityMachineAutocrafter extends TileEntityMachineBase implemen @Override public void setFilterContents(NBTTagCompound nbt) { - TileEntity tile = (TileEntity) this; - IInventory inv = (IInventory) this; + TileEntity tile = this; + IInventory inv = this; int slot = nbt.getInteger("slot"); if(slot > 8) return; - inv.setInventorySlotContents(slot, new ItemStack(Item.getItemById(nbt.getInteger("id")), 1, nbt.getInteger("meta"))); - nextMode(slot); + NBTTagCompound stack = nbt.getCompoundTag("stack"); + ItemStack item = ItemStack.loadItemStackFromNBT(stack); + inv.setInventorySlotContents(slot, item); + matcher.initPatternSmart(getWorldObj(), item, slot); tile.getWorldObj().markTileEntityChunkModified(tile.xCoord, tile.yCoord, tile.zCoord, tile); updateTemplateGrid(); } + @Override + public int[] getFilterSlots() { + return new int[]{0,9}; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java index 3ec39159b..b5bba66f0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java @@ -9,15 +9,17 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.IFluidCopiable; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.block.BlockLeaves; import net.minecraft.block.material.Material; @@ -29,19 +31,19 @@ import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; -public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements INBTPacketReceiver, IFluidStandardReceiver { - +public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IBufPacketReceiver, IFluidStandardReceiver, IFluidCopiable { + public static final HashSet acceptedFuels = new HashSet(); - + static { acceptedFuels.add(Fluids.WOODOIL); acceptedFuels.add(Fluids.ETHANOL); acceptedFuels.add(Fluids.FISHOIL); acceptedFuels.add(Fluids.HEAVYOIL); } - + public FluidTank tank; - + public boolean isOn; public float syncYaw; public float rotationYaw; @@ -49,24 +51,24 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IN public float syncPitch; public float rotationPitch; public float prevRotationPitch; - + // 0: searching, 1: extending, 2: retracting private int state = 0; - + private int turnProgress; - + public float spin; public float lastSpin; - + public TileEntityMachineAutosaw() { this.tank = new FluidTank(Fluids.WOODOIL, 100); } - + @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + if(worldObj.getTotalWorldTime() % 20 == 0) { if(tank.getFill() > 0) { tank.setFill(tank.getFill() - 1); @@ -74,7 +76,7 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IN } else { this.isOn = false; } - + this.subscribeToAllAround(tank.getTankType(), this); } @@ -88,13 +90,13 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IN lowerArm.rotateAroundY(-(float) Math.toRadians(rotationYaw)); Vec3 armTip = Vec3.createVectorHelper(0, 0, -2); armTip.rotateAroundY(-(float) Math.toRadians(rotationYaw)); - + double cX = pivot.xCoord + upperArm.xCoord + lowerArm.xCoord + armTip.xCoord; double cY = pivot.yCoord; double cZ = pivot.zCoord + upperArm.zCoord + lowerArm.zCoord + armTip.zCoord; - + List affected = worldObj.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(cX - 1, cY - 0.25, cZ - 1, cX + 1, cY + 0.25, cZ + 1)); - + for(EntityLivingBase e : affected) { if(e.isEntityAlive() && e.attackEntityFrom(ModDamageSource.turbofan, 100)) { worldObj.playSoundEffect(e.posX, e.posY, e.posZ, "mob.zombie.woodbreak", 2.0F, 0.95F + worldObj.rand.nextFloat() * 0.2F); @@ -108,34 +110,34 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IN PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, e.posX, e.posY + e.height * 0.5, e.posZ), new TargetPoint(e.dimension, e.posX, e.posY, e.posZ, 50)); } } - + if(state == 0) { - + this.rotationYaw += 1; - + if(this.rotationYaw >= 360) { this.rotationYaw -= 360; } - + Vec3 grace = Vec3.createVectorHelper(0, 0, -3.5); grace.rotateAroundY(-(float) Math.toRadians(rotationYaw)); grace.xCoord += pivot.xCoord; grace.yCoord += pivot.yCoord; grace.zCoord += pivot.zCoord; - + Vec3 detector = Vec3.createVectorHelper(0, 0, -9); detector.rotateAroundY(-(float) Math.toRadians(rotationYaw)); detector.xCoord += pivot.xCoord; detector.yCoord += pivot.yCoord; detector.zCoord += pivot.zCoord; MovingObjectPosition pos = worldObj.func_147447_a(grace, detector, false, false, false); - + if(pos != null && pos.typeOfHit == pos.typeOfHit.BLOCK) { - + Block b = worldObj.getBlock(pos.blockX, pos.blockY, pos.blockZ); - + if(b.getMaterial() == Material.wood || b.getMaterial() == Material.leaves || b.getMaterial() == Material.plants) { - + int meta = worldObj.getBlockMetadata(pos.blockX, pos.blockY, pos.blockZ); if(!shouldIgnore(b, meta)) { state = 1; @@ -154,7 +156,7 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IN this.tryInteract(hitX1, hitY, hitZ0); this.tryInteract(hitX0, hitY, hitZ1); this.tryInteract(hitX1, hitY, hitZ1); - + if(state == 1) { this.rotationPitch += 2; @@ -163,36 +165,31 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IN state = 2; } } - + if(state == 2) { this.rotationPitch -= 2; - + if(this.rotationPitch <= 0) { this.rotationPitch = 0; state = 0; } } } - - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("isOn", isOn); - data.setFloat("yaw", this.rotationYaw); - data.setFloat("pitch", this.rotationPitch); - tank.writeToNBT(data, "t"); - INBTPacketReceiver.networkPack(this, data, 100); + + networkPackNT(100); } else { - + this.lastSpin = this.spin; - + if(isOn) { this.spin += 15F; - + Vec3 vec = Vec3.createVectorHelper(0.625, 0, 1.625); vec.rotateAroundY(-(float) Math.toRadians(rotationYaw)); - + worldObj.spawnParticle("smoke", xCoord + 0.5 + vec.xCoord, yCoord + 2.0625, zCoord + 0.5 + vec.zCoord, 0, 0, 0); } - + if(this.spin >= 360F) { this.spin -= 360F; this.lastSpin -= 360F; @@ -200,7 +197,7 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IN this.prevRotationYaw = this.rotationYaw; this.prevRotationPitch = this.rotationPitch; - + if(this.turnProgress > 0) { double d0 = MathHelper.wrapAngleTo180_double(this.syncYaw - (double) this.rotationYaw); double d1 = MathHelper.wrapAngleTo180_double(this.syncPitch - (double) this.rotationPitch); @@ -213,30 +210,30 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IN } } } - + /** Anything additionally that the detector nor the blades should pick up on, like non-mature willows */ public static boolean shouldIgnore(Block b, int meta) { if(b == ModBlocks.plant_tall) { return meta == EnumTallFlower.CD2.ordinal() + 8 || meta == EnumTallFlower.CD3.ordinal() + 8; } - + return false; } - + protected void tryInteract(int x, int y, int z) { - + Block b = worldObj.getBlock(x, y, z); int meta = worldObj.getBlockMetadata(x, y, z); - + if(shouldIgnore(b, meta)) { return; } - + if(b.getMaterial() == Material.leaves || b.getMaterial() == Material.plants) { worldObj.func_147480_a(x, y, z, true); return; } - + if(b.getMaterial() == Material.wood) { fellTree(x, y, z); if(state == 1) { @@ -244,22 +241,22 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IN } } } - + protected void fellTree(int x, int y, int z) { - + if(worldObj.getBlock(x, y - 1, z).getMaterial() == Material.wood) { y--; if(worldObj.getBlock(x, y - 2, z).getMaterial() == Material.wood) { y--; } } - + int meta = -1; - + for(int i = y; i < y + 10; i++) { - + int[][] dir = new int[][] {{0, 0}, {1, 0}, {-1, 0}, {0, 1}, {0, -1}}; - + for(int[] d : dir) { Block b = worldObj.getBlock(x + d[0], i, z + d[1]); @@ -271,7 +268,7 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IN } } } - + if(meta >= 0) { if(Blocks.sapling.canPlaceBlockAt(worldObj, x, y, z)) { worldObj.setBlock(x, y, z, Blocks.sapling, meta, 3); @@ -280,14 +277,22 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IN } @Override - public void networkUnpack(NBTTagCompound nbt) { - this.isOn = nbt.getBoolean("isOn"); - this.syncYaw = nbt.getFloat("yaw"); - this.syncPitch = nbt.getFloat("pitch"); - this.turnProgress = 3; //use 3-ply for extra smoothness - this.tank.readFromNBT(nbt, "t"); + public void serialize(ByteBuf buf) { + buf.writeBoolean(this.isOn); + buf.writeFloat(this.rotationYaw); + buf.writeFloat(this.rotationPitch); + this.tank.serialize(buf); } - + + @Override + public void deserialize(ByteBuf buf) { + this.isOn = buf.readBoolean(); + this.syncYaw = buf.readFloat(); + this.syncPitch = buf.readFloat(); + this.turnProgress = 3; //use 3-ply for extra smoothness + this.tank.deserialize(buf); + } + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -297,7 +302,7 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IN this.state = nbt.getInteger("state"); this.tank.readFromNBT(nbt, "t"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -317,12 +322,12 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IN public FluidTank[] getReceivingTanks() { return new FluidTank[] {tank}; } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 12, @@ -333,13 +338,17 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IN zCoord + 13 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { return 65536.0D; } + @Override + public FluidTank getTankToPaste() { + return tank; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java index 430bca4db..aeb067770 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java @@ -1,12 +1,13 @@ package com.hbm.tileentity.machine; import java.io.IOException; +import java.util.HashMap; import java.util.List; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.container.ContainerCentrifuge; import com.hbm.inventory.gui.GUIMachineCentrifuge; import com.hbm.inventory.recipes.CentrifugeRecipes; @@ -27,7 +28,6 @@ import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -39,12 +39,12 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; public class TileEntityMachineCentrifuge extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC, IConfigurableMachine{ - + public int progress; public long power; public boolean isProgressing; private int audioDuration = 0; - + private AudioWrapper audio; //configurable values @@ -52,6 +52,8 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement public static int processingSpeed = 200; public static int baseConsumption = 200; + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + public String getConfigName() { return "centrifuge"; } @@ -71,7 +73,7 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement /* * So why do we do this now? You have a funny mekanism/thermal/whatever pipe and you want to output stuff from a side - * that isn't the bottom, what do? Answer: make all slots accessible from all sides and regulate in/output in the + * that isn't the bottom, what do? Answer: make all slots accessible from all sides and regulate in/output in the * dedicated methods. Duh. */ private static final int[] slot_io = new int[] { 0, 2, 3, 4, 5 }; @@ -79,11 +81,11 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement public TileEntityMachineCentrifuge() { super(8); } - + public String getName() { return "container.centrifuge"; } - + @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { return i == 0; @@ -127,7 +129,7 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement return false; } ItemStack[] out = CentrifugeRecipes.getOutput(slots[0]); - + if(out == null) { return false; } @@ -176,7 +178,7 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement public boolean isProcessing() { return this.progress > 0; } - + @Override public void updateEntity() { @@ -185,18 +187,18 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); power = Library.chargeTEFromItems(slots, 1, power, maxPower); - + int consumption = baseConsumption; int speed = 1; - - UpgradeManager.eval(slots, 6, 7); - speed += Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); - consumption += Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3) * baseConsumption; - - speed *= (1 + Math.min(UpgradeManager.getLevel(UpgradeType.OVERDRIVE), 3) * 5); - consumption += Math.min(UpgradeManager.getLevel(UpgradeType.OVERDRIVE), 3) * baseConsumption * 50; - - consumption /= (1 + Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3)); + + upgradeManager.checkSlots(this, slots, 6, 7); + speed += upgradeManager.getLevel(UpgradeType.SPEED); + consumption += upgradeManager.getLevel(UpgradeType.SPEED) * baseConsumption; + + speed *= (1 + upgradeManager.getLevel(UpgradeType.OVERDRIVE) * 5); + consumption += upgradeManager.getLevel(UpgradeType.OVERDRIVE) * baseConsumption * 50; + + consumption /= (1 + upgradeManager.getLevel(UpgradeType.POWER)); if(hasPower() && isProcessing()) { this.power -= consumption; @@ -222,20 +224,20 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement } else { progress = 0; } - + this.networkPackNT(50); } else { - + if(isProgressing) { audioDuration += 2; } else { audioDuration -= 3; } - + audioDuration = MathHelper.clamp_int(audioDuration, 0, 60); - + if(audioDuration > 10) { - + if(audio == null) { audio = createAudioLoop(); audio.startSound(); @@ -245,9 +247,9 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement audio.updateVolume(getVolume(1F)); audio.updatePitch((audioDuration - 10) / 100F + 0.5F); - + } else { - + if(audio != null) { audio.stopSound(); audio = null; @@ -255,7 +257,7 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement } } } - + @Override public void serialize(ByteBuf buf) { super.serialize(buf); @@ -263,7 +265,7 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement buf.writeInt(progress); buf.writeBoolean(isProgressing); } - + @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); @@ -296,12 +298,12 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement audio = null; } } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord, @@ -312,7 +314,7 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement zCoord + 1 ); } - + return bb; } @@ -345,7 +347,7 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineCentrifuge(player.inventory, this); } @@ -370,11 +372,12 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 3; - if(type == UpgradeType.POWER) return 3; - if(type == UpgradeType.OVERDRIVE) return 3; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 3); + upgrades.put(UpgradeType.POWER, 3); + upgrades.put(UpgradeType.OVERDRIVE, 3); + return upgrades; } @Override @@ -382,4 +385,4 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement data.setBoolean(CompatEnergyControl.B_ACTIVE, this.progress > 0); data.setInteger(CompatEnergyControl.B_ACTIVE, this.progress); } -} \ No newline at end of file +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java index 329947014..e845b225b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java @@ -1,12 +1,13 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Random; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.container.ContainerChemfac; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; @@ -14,6 +15,7 @@ import com.hbm.inventory.gui.GUIChemfac; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; @@ -22,7 +24,6 @@ import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -32,8 +33,8 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase implements IUpgradeInfoProvider { - +public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase implements IUpgradeInfoProvider, IFluidCopiable { + float rotSpeed; public float rot; public float prevRot; @@ -41,6 +42,8 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase imp public FluidTank water; public FluidTank steam; + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + public TileEntityMachineChemfac() { super(77); @@ -51,7 +54,7 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase imp @Override public void setInventorySlotContents(int i, ItemStack stack) { super.setInventorySlotContents(i, stack); - + if(stack != null && i >= 1 && i <= 4 && stack.getItem() instanceof ItemMachineUpgrade) { worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:item.upgradePlug", 1.0F, 1.0F); } @@ -60,14 +63,14 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase imp @Override public void updateEntity() { super.updateEntity(); - + if(!worldObj.isRemote) { - + if(worldObj.getTotalWorldTime() % 60 == 0) { - + for(DirPos pos : getConPos()) { this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - + for(FluidTank tank : inTanks()) { if(tank.getTankType() != Fluids.NONE) { this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); @@ -75,77 +78,77 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase imp } } } - + for(DirPos pos : getConPos()) for(FluidTank tank : outTanks()) { if(tank.getTankType() != Fluids.NONE && tank.getFill() > 0) { this.sendFluid(tank, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - + this.speed = 100; this.consumption = 100; - - UpgradeManager.eval(slots, 1, 4); - int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 6); - int powerLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); - int overLevel = UpgradeManager.getLevel(UpgradeType.OVERDRIVE); - + upgradeManager.checkSlots(this, slots, 1, 4); + + int speedLevel = upgradeManager.getLevel(UpgradeType.SPEED); + int powerLevel = upgradeManager.getLevel(UpgradeType.POWER); + int overLevel = upgradeManager.getLevel(UpgradeType.OVERDRIVE); + this.speed -= speedLevel * 15; this.consumption += speedLevel * 300; this.speed += powerLevel * 5; this.consumption -= powerLevel * 20; this.speed /= (overLevel + 1); this.consumption *= (overLevel + 1); - + if(this.speed <= 0) { this.speed = 1; } - + this.networkPackNT(150); } else { - + float maxSpeed = 30F; - + if(isProgressing) { - + rotSpeed += 0.1; - + if(rotSpeed > maxSpeed) rotSpeed = maxSpeed; - + if(rotSpeed == maxSpeed && this.worldObj.getTotalWorldTime() % 5 == 0) { - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); Random rand = worldObj.rand; - + double x = xCoord + 0.5 - rot.offsetX * 0.5; double y = yCoord + 3; double z = zCoord + 0.5 - rot.offsetZ * 0.5; - + worldObj.spawnParticle("cloud", x + dir.offsetX * 1.5 + rand.nextGaussian() * 0.15, y, z + dir.offsetZ * 1.5 + rand.nextGaussian() * 0.15, 0.0, 0.15, 0.0); worldObj.spawnParticle("cloud", x - dir.offsetX * 0.5 + rand.nextGaussian() * 0.15, y, z - dir.offsetZ * 0.5 + rand.nextGaussian() * 0.15, 0.0, 0.15, 0.0); } } else { - + rotSpeed -= 0.1; - + if(rotSpeed < 0) rotSpeed = 0; } - + prevRot = rot; - + rot += rotSpeed; - + if(rot >= 360) { rot -= 360; prevRot -= 360; } } } - + @Override public void serialize(ByteBuf buf) { super.serialize(buf); @@ -154,15 +157,15 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase imp buf.writeInt(progress[i]); buf.writeInt(maxProgress[i]); } - + buf.writeBoolean(isProgressing); - + for(int i = 0; i < tanks.length; i++) tanks[i].serialize(buf); - + water.serialize(buf); steam.serialize(buf); } - + @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); @@ -171,15 +174,15 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase imp progress[i] = buf.readInt(); maxProgress[i] = buf.readInt(); } - + isProgressing = buf.readBoolean(); - + for(int i = 0; i < tanks.length; i++) tanks[i].deserialize(buf); - + water.deserialize(buf); steam.deserialize(buf); } - + private int getWaterRequired() { return 1000 / this.speed; } @@ -201,19 +204,19 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase imp public long getMaxPower() { return 10_000_000; } - + protected List conPos; - + protected List getConPos() { - + if(conPos != null && !conPos.isEmpty()) return conPos; - + conPos = new ArrayList(); ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); - + for(int i = 0; i < 6; i++) { conPos.add(new DirPos(xCoord + dir.offsetX * (3 - i) + rot.offsetX * 3, yCoord + 4, zCoord + dir.offsetZ * (3 - i) + rot.offsetZ * 3, Library.POS_Y)); conPos.add(new DirPos(xCoord + dir.offsetX * (3 - i) - rot.offsetX * 2, yCoord + 4, zCoord + dir.offsetZ * (3 - i) - rot.offsetZ * 2, Library.POS_Y)); @@ -223,7 +226,7 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase imp conPos.add(new DirPos(xCoord + dir.offsetX * (3 - i) - rot.offsetX * 4, yCoord + 1 + j, zCoord + dir.offsetZ * (3 - i) - rot.offsetZ * 4, rot.getOpposite())); } } - + return conPos; } @@ -249,52 +252,52 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase imp DirPos[] inpos; DirPos[] outpos; - + @Override public DirPos[] getInputPositions() { - + if(inpos != null) return inpos; - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - + inpos = new DirPos[] { new DirPos(xCoord + dir.offsetX * 4 - rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 4 - rot.offsetZ * 1, dir), new DirPos(xCoord - dir.offsetX * 5 + rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 5 + rot.offsetZ * 2, dir.getOpposite()), new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX * 4, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ * 4, rot.getOpposite()), new DirPos(xCoord + dir.offsetX * 1 + rot.offsetX * 5, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 5, rot) }; - + return inpos; } @Override public DirPos[] getOutputPositions() { - + if(outpos != null) return outpos; - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - + outpos = new DirPos[] { new DirPos(xCoord + dir.offsetX * 4 + rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 4 + rot.offsetZ * 2, dir), new DirPos(xCoord - dir.offsetX * 5 - rot.offsetX * 1, yCoord, zCoord - dir.offsetZ * 5 - rot.offsetZ * 1, dir.getOpposite()), new DirPos(xCoord + dir.offsetX * 1 - rot.offsetX * 4, yCoord, zCoord + dir.offsetZ * 1 - rot.offsetZ * 4, rot.getOpposite()), new DirPos(xCoord - dir.offsetX * 2 + rot.offsetX * 5, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ * 5, rot) }; - + return outpos; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); water.readFromNBT(nbt, "w"); steam.readFromNBT(nbt, "s"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -309,27 +312,27 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase imp @Override protected List inTanks() { - + List inTanks = super.inTanks(); inTanks.add(water); - + return inTanks; } @Override protected List outTanks() { - + List outTanks = super.outTanks(); outTanks.add(steam); - + return outTanks; } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 5, @@ -340,10 +343,10 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase imp zCoord + 5 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -357,7 +360,7 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase imp @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIChemfac(player.inventory, this); } @@ -383,10 +386,16 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase imp } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 6; - if(type == UpgradeType.POWER) return 3; - if(type == UpgradeType.OVERDRIVE) return 12; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 6); + upgrades.put(UpgradeType.POWER, 3); + upgrades.put(UpgradeType.OVERDRIVE, 12); + return upgrades; + } + + @Override + public FluidTank getTankToPaste() { + return null; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java index 5febdcbe3..d352430a5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java @@ -1,11 +1,12 @@ package com.hbm.tileentity.machine; +import java.util.HashMap; import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.inventory.RecipesCommon.AStack; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.container.ContainerMachineChemplant; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; @@ -30,7 +31,6 @@ import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; @@ -50,15 +50,17 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements public int progress; public int maxProgress = 100; public boolean isProgressing; - + private AudioWrapper audio; - + public FluidTank[] tanks; - + //upgraded stats int consumption = 100; int speed = 100; + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + public TileEntityMachineChemplant() { super(21); /* @@ -72,7 +74,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements * 17-18 FIn In * 19-20 FIn Out */ - + tanks = new FluidTank[4]; for(int i = 0; i < 4; i++) { tanks[i] = new FluidTank(Fluids.NONE, 24_000); @@ -83,7 +85,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements public String getName() { return "container.chemplant"; } - + // last successful load int lsl0 = 0; int lsl1 = 0; @@ -92,23 +94,23 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + this.speed = 100; this.consumption = 100; - + this.isProgressing = false; this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); int fluidDelay = 40; - + if(lsu0 >= fluidDelay && tanks[0].loadTank(17, 19, slots)) lsl0 = 0; if(lsu1 >= fluidDelay && tanks[1].loadTank(18, 20, slots)) lsl1 = 0; - + if(lsl0 >= fluidDelay && slots[17] != null && !FluidTank.noDualUnload.contains(slots[17].getItem())) if(tanks[0].unloadTank(17, 19, slots)) lsu0 = 0; if(lsl1 >= fluidDelay && slots[18] != null && !FluidTank.noDualUnload.contains(slots[18].getItem())) if(tanks[1].unloadTank(18, 20, slots)) lsu1 = 0; - + tanks[2].unloadTank(9, 11, slots); tanks[3].unloadTank(10, 12, slots); @@ -116,48 +118,48 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements if(lsl1 < fluidDelay) lsl1++; if(lsu0 < fluidDelay) lsu0++; if(lsu1 < fluidDelay) lsu1++; - + loadItems(); unloadItems(); - + if(worldObj.getTotalWorldTime() % 20 == 0) { this.updateConnections(); } - + for(DirPos pos : getConPos()) { if(tanks[2].getFill() > 0) this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); if(tanks[3].getFill() > 0) this.sendFluid(tanks[3], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - - UpgradeManager.eval(slots, 1, 3); - int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); - int powerLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); - int overLevel = UpgradeManager.getLevel(UpgradeType.OVERDRIVE); - + upgradeManager.checkSlots(this, slots, 1, 3); + + int speedLevel = upgradeManager.getLevel(UpgradeType.SPEED); + int powerLevel = upgradeManager.getLevel(UpgradeType.POWER); + int overLevel = upgradeManager.getLevel(UpgradeType.OVERDRIVE); + this.speed -= speedLevel * 25; this.consumption += speedLevel * 300; this.speed += powerLevel * 5; this.consumption -= powerLevel * 20; this.speed /= (overLevel + 1); this.consumption *= (overLevel + 1); - + if(this.speed <= 0) { this.speed = 1; } - + if(!canProcess()) { this.progress = 0; } else { isProgressing = true; process(); } - + this.networkPackNT(150); } else { - + if(isProgressing && this.worldObj.getTotalWorldTime() % 3 == 0) { - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); double x = xCoord + 0.5 + dir.offsetX * 1.125 + rot.offsetX * 0.125; @@ -165,11 +167,11 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements double z = zCoord + 0.5 + dir.offsetZ * 1.125 + rot.offsetZ * 0.125; worldObj.spawnParticle("cloud", x, y, z, 0.0, 0.1, 0.0); } - + float volume = this.getVolume(1F); - + if(isProgressing && volume > 0) { - + if(audio == null) { audio = this.createAudioLoop(); audio.updateVolume(volume); @@ -178,9 +180,9 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements audio = rebootAudio(audio); audio.updateVolume(volume); } - + } else { - + if(audio != null) { audio.stopSound(); audio = null; @@ -200,7 +202,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements for(int i = 0; i < tanks.length; i++) tanks[i].serialize(buf); } - + @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); @@ -212,7 +214,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements for(int i = 0; i < tanks.length; i++) tanks[i].deserialize(buf); } - + @Override public AudioWrapper createAudioLoop() { return MainRegistry.proxy.getLoopedSound("hbm:block.chemplantOperate", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F); @@ -237,21 +239,21 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements audio = null; } } - + private void updateConnections() { - + for(DirPos pos : getConPos()) { this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - + public DirPos[] getConPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); - + return new DirPos[] { new DirPos(xCoord + rot.offsetX * 3, yCoord, zCoord + rot.offsetZ * 3, rot), new DirPos(xCoord - rot.offsetX * 2, yCoord, zCoord - rot.offsetZ * 2, rot.getOpposite()), @@ -259,69 +261,69 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements new DirPos(xCoord - rot.offsetX * 2 + dir.offsetX, yCoord, zCoord - rot.offsetZ * 2 + dir.offsetZ, rot.getOpposite()) }; } - + private boolean canProcess() { - + if(slots[4] == null || slots[4].getItem() != ModItems.chemistry_template) return false; - + ChemRecipe recipe = ChemplantRecipes.indexMapping.get(slots[4].getItemDamage()); - + if(recipe == null) return false; - + setupTanks(recipe); - + if(this.power < this.consumption) return false; if(!hasRequiredFluids(recipe)) return false; if(!hasSpaceForFluids(recipe)) return false; if(!hasRequiredItems(recipe)) return false; if(!hasSpaceForItems(recipe)) return false; - + return true; } - + private void setupTanks(ChemRecipe recipe) { if(recipe.inputFluids[0] != null) tanks[0].withPressure(recipe.inputFluids[0].pressure).setTankType(recipe.inputFluids[0].type); else tanks[0].setTankType(Fluids.NONE); if(recipe.inputFluids[1] != null) tanks[1].withPressure(recipe.inputFluids[1].pressure).setTankType(recipe.inputFluids[1].type); else tanks[1].setTankType(Fluids.NONE); if(recipe.outputFluids[0] != null) tanks[2].withPressure(recipe.outputFluids[0].pressure).setTankType(recipe.outputFluids[0].type); else tanks[2].setTankType(Fluids.NONE); if(recipe.outputFluids[1] != null) tanks[3].withPressure(recipe.outputFluids[1].pressure).setTankType(recipe.outputFluids[1].type); else tanks[3].setTankType(Fluids.NONE); } - + private boolean hasRequiredFluids(ChemRecipe recipe) { if(recipe.inputFluids[0] != null && tanks[0].getFill() < recipe.inputFluids[0].fill) return false; if(recipe.inputFluids[1] != null && tanks[1].getFill() < recipe.inputFluids[1].fill) return false; return true; } - + private boolean hasSpaceForFluids(ChemRecipe recipe) { if(recipe.outputFluids[0] != null && tanks[2].getFill() + recipe.outputFluids[0].fill > tanks[2].getMaxFill()) return false; if(recipe.outputFluids[1] != null && tanks[3].getFill() + recipe.outputFluids[1].fill > tanks[3].getMaxFill()) return false; return true; } - + private boolean hasRequiredItems(ChemRecipe recipe) { return InventoryUtil.doesArrayHaveIngredients(slots, 13, 16, recipe.inputs); } - + private boolean hasSpaceForItems(ChemRecipe recipe) { return InventoryUtil.doesArrayHaveSpace(slots, 5, 8, recipe.outputs); } - + private void process() { - + this.power -= this.consumption; this.progress++; - + if(slots[0] != null && slots[0].getItem() == ModItems.meteorite_sword_machined) slots[0] = new ItemStack(ModItems.meteorite_sword_treated); //fisfndmoivndlmgindgifgjfdnblfm - + ChemRecipe recipe = ChemplantRecipes.indexMapping.get(slots[4].getItemDamage()); - + this.maxProgress = recipe.getDuration() * this.speed / 100; - + if(maxProgress <= 0) maxProgress = 1; - + if(this.progress >= this.maxProgress) { consumeFluids(recipe); produceFluids(recipe); @@ -331,81 +333,81 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements this.markDirty(); } } - + private void consumeFluids(ChemRecipe recipe) { if(recipe.inputFluids[0] != null) tanks[0].setFill(tanks[0].getFill() - recipe.inputFluids[0].fill); if(recipe.inputFluids[1] != null) tanks[1].setFill(tanks[1].getFill() - recipe.inputFluids[1].fill); } - + private void produceFluids(ChemRecipe recipe) { if(recipe.outputFluids[0] != null) tanks[2].setFill(tanks[2].getFill() + recipe.outputFluids[0].fill); if(recipe.outputFluids[1] != null) tanks[3].setFill(tanks[3].getFill() + recipe.outputFluids[1].fill); } - + private void consumeItems(ChemRecipe recipe) { - + for(AStack in : recipe.inputs) { if(in != null) InventoryUtil.tryConsumeAStack(slots, 13, 16, in); } } - + private void produceItems(ChemRecipe recipe) { - + for(ItemStack out : recipe.outputs) { if(out != null) InventoryUtil.tryAddItemToInventory(slots, 5, 8, out.copy()); } } - + //TODO: move this into a util class private void loadItems() { - + if(slots[4] == null || slots[4].getItem() != ModItems.chemistry_template) return; - + ChemRecipe recipe = ChemplantRecipes.indexMapping.get(slots[4].getItemDamage()); - + if(recipe != null) { - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); int x = xCoord - dir.offsetX * 2; int z = zCoord - dir.offsetZ * 2; - + TileEntity te = worldObj.getTileEntity(x, yCoord, z); - + if(te instanceof IInventory) { - + IInventory inv = (IInventory) te; ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; int[] access = sided != null ? sided.getAccessibleSlotsFromSide(dir.ordinal()) : null; - + for(AStack ingredient : recipe.inputs) { - + outer: while(!InventoryUtil.doesArrayHaveIngredients(slots, 13, 16, ingredient)) { - + boolean found = false; - + for(int i = 0; i < (access != null ? access.length : inv.getSizeInventory()); i++) { int slot = access != null ? access[i] : i; ItemStack stack = inv.getStackInSlot(slot); - + if(ingredient.matchesRecipe(stack, true) && (sided == null || sided.canExtractItem(slot, stack, 0))) { - + for(int j = 13; j <= 16; j++) { - + if(slots[j] != null && slots[j].stackSize < slots[j].getMaxStackSize() & InventoryUtil.doesStackDataMatch(slots[j], stack)) { inv.decrStackSize(slot, 1); slots[j].stackSize++; continue outer; } } - + for(int j = 13; j <= 16; j++) { - + if(slots[j] == null) { slots[j] = stack.copy(); slots[j].stackSize = 1; @@ -422,43 +424,43 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements } } } - + private void unloadItems() { - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); int x = xCoord + dir.offsetX * 3 + rot.offsetX; int z = zCoord + dir.offsetZ * 3 + rot.offsetZ; - + TileEntity te = worldObj.getTileEntity(x, yCoord, z); - + if(te instanceof IInventory) { - + IInventory inv = (IInventory) te; ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; int[] access = sided != null ? sided.getAccessibleSlotsFromSide(dir.ordinal()) : null; - + boolean shouldOutput = true; - + while(shouldOutput) { shouldOutput = false; outer: for(int i = 5; i <= 8; i++) { - + ItemStack out = slots[i]; - + if(out != null) { - + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { - + int slot = access != null ? access[j] : j; - + if(!inv.isItemValidForSlot(slot, out)) continue; - + ItemStack target = inv.getStackInSlot(slot); - + if(InventoryUtil.doesStackDataMatch(out, target) && target.stackSize < Math.min(target.getMaxStackSize(), inv.getInventoryStackLimit())) { int toDec = Math.min(out.stackSize, Math.min(target.getMaxStackSize(), inv.getInventoryStackLimit()) - target.stackSize); this.decrStackSize(i, toDec); @@ -467,14 +469,14 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements break outer; } } - + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { - + int slot = access != null ? access[j] : j; - + if(!inv.isItemValidForSlot(slot, out)) continue; - + if(inv.getStackInSlot(slot) == null && (sided != null ? sided.canInsertItem(slot, out, dir.ordinal()) : inv.isItemValidForSlot(slot, out))) { ItemStack copy = out.copy(); copy.stackSize = 1; @@ -504,36 +506,36 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements public long getMaxPower() { return maxPower; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - + this.power = nbt.getLong("power"); this.progress = nbt.getInteger("progress"); - + for(int i = 0; i < tanks.length; i++) { tanks[i].readFromNBT(nbt, "t" + i); } } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + nbt.setLong("power", power); nbt.setInteger("progress", progress); - + for(int i = 0; i < tanks.length; i++) { tanks[i].writeToNBT(nbt, "t" + i); } } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 2, @@ -544,10 +546,10 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements zCoord + 3 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -576,7 +578,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineChemplant(player.inventory, this); } @@ -602,10 +604,11 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 3; - if(type == UpgradeType.POWER) return 3; - if(type == UpgradeType.OVERDRIVE) return 9; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 3); + upgrades.put(UpgradeType.POWER, 3); + upgrades.put(UpgradeType.OVERDRIVE, 9); + return upgrades; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java index 77eb13f89..64930bf2d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import com.hbm.inventory.RecipesCommon.AStack; @@ -14,6 +15,7 @@ import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.InventoryUtil; +import com.hbm.util.ItemStackUtil; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energymk2.IEnergyReceiverMK2; @@ -38,20 +40,20 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa public int[] progress; public int[] maxProgress; public boolean isProgressing; - + public FluidTank[] tanks; - + int consumption = 100; int speed = 100; public TileEntityMachineChemplantBase(int scount) { super(scount); - + int count = this.getRecipeCount(); progress = new int[count]; maxProgress = new int[count]; - + tanks = new FluidTank[4 * count]; for(int i = 0; i < 4 * count; i++) { tanks[i] = new FluidTank(Fluids.NONE, getTankCapacity()); @@ -60,20 +62,20 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + int count = this.getRecipeCount(); - + this.isProgressing = false; this.power = Library.chargeTEFromItems(slots, 0, power, this.getMaxPower()); - + for(int i = 0; i < count; i++) { loadItems(i); unloadItems(i); } - + for(int i = 0; i < count; i++) { if(!canProcess(i)) { this.progress[i] = 0; @@ -84,74 +86,83 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa } } } - + protected boolean canProcess(int index) { - + int template = getTemplateIndex(index); - + if(slots[template] == null || slots[template].getItem() != ModItems.chemistry_template) return false; - + ChemRecipe recipe = ChemplantRecipes.indexMapping.get(slots[template].getItemDamage()); - + if(recipe == null) return false; - + setupTanks(recipe, index); - + if(this.power < this.consumption) return false; if(!hasRequiredFluids(recipe, index)) return false; if(!hasSpaceForFluids(recipe, index)) return false; if(!hasRequiredItems(recipe, index)) return false; if(!hasSpaceForItems(recipe, index)) return false; - + return true; } - + private void setupTanks(ChemRecipe recipe, int index) { if(recipe.inputFluids[0] != null) tanks[index * 4].withPressure(recipe.inputFluids[0].pressure).setTankType(recipe.inputFluids[0].type); else tanks[index * 4].setTankType(Fluids.NONE); if(recipe.inputFluids[1] != null) tanks[index * 4 + 1].withPressure(recipe.inputFluids[1].pressure).setTankType(recipe.inputFluids[1].type); else tanks[index * 4 + 1].setTankType(Fluids.NONE); if(recipe.outputFluids[0] != null) tanks[index * 4 + 2].withPressure(recipe.outputFluids[0].pressure).setTankType(recipe.outputFluids[0].type); else tanks[index * 4 + 2].setTankType(Fluids.NONE); if(recipe.outputFluids[1] != null) tanks[index * 4 + 3].withPressure(recipe.outputFluids[1].pressure).setTankType(recipe.outputFluids[1].type); else tanks[index * 4 + 3].setTankType(Fluids.NONE); } - + private boolean hasRequiredFluids(ChemRecipe recipe, int index) { if(recipe.inputFluids[0] != null && tanks[index * 4].getFill() < recipe.inputFluids[0].fill) return false; if(recipe.inputFluids[1] != null && tanks[index * 4 + 1].getFill() < recipe.inputFluids[1].fill) return false; return true; } - + private boolean hasSpaceForFluids(ChemRecipe recipe, int index) { if(recipe.outputFluids[0] != null && tanks[index * 4 + 2].getFill() + recipe.outputFluids[0].fill > tanks[index * 4 + 2].getMaxFill()) return false; if(recipe.outputFluids[1] != null && tanks[index * 4 + 3].getFill() + recipe.outputFluids[1].fill > tanks[index * 4 + 3].getMaxFill()) return false; return true; } - + + public HashMap cachedItems = new HashMap<>(); + private boolean hasRequiredItems(ChemRecipe recipe, int index) { int[] indices = getSlotIndicesFromIndex(index); - return InventoryUtil.doesArrayHaveIngredients(slots, indices[0], indices[1], recipe.inputs); + ItemStack[] copy = ItemStackUtil.carefulCopyArrayTruncate(slots, indices[0], indices[1]); + if (cachedItems.get(copy) != null) + return cachedItems.get(copy); + else { + boolean hasItems = InventoryUtil.doesArrayHaveIngredients(slots, indices[0], indices[1], recipe.inputs); + cachedItems.put(copy, hasItems); + return hasItems; + } } - + private boolean hasSpaceForItems(ChemRecipe recipe, int index) { int[] indices = getSlotIndicesFromIndex(index); return InventoryUtil.doesArrayHaveSpace(slots, indices[2], indices[3], recipe.outputs); } - + protected void process(int index) { - + this.power -= this.consumption; this.progress[index]++; - + if(slots[0] != null && slots[0].getItem() == ModItems.meteorite_sword_machined) slots[0] = new ItemStack(ModItems.meteorite_sword_treated); //fisfndmoivndlmgindgifgjfdnblfm - + int template = getTemplateIndex(index); ChemRecipe recipe = ChemplantRecipes.indexMapping.get(slots[template].getItemDamage()); - + this.maxProgress[index] = recipe.getDuration() * this.speed / 100; - + if(maxProgress[index] <= 0) maxProgress[index] = 1; - + if(this.progress[index] >= this.maxProgress[index]) { consumeFluids(recipe, index); produceFluids(recipe, index); @@ -161,84 +172,84 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa this.markDirty(); } } - + private void consumeFluids(ChemRecipe recipe, int index) { if(recipe.inputFluids[0] != null) tanks[index * 4].setFill(tanks[index * 4].getFill() - recipe.inputFluids[0].fill); if(recipe.inputFluids[1] != null) tanks[index * 4 + 1].setFill(tanks[index * 4 + 1].getFill() - recipe.inputFluids[1].fill); } - + private void produceFluids(ChemRecipe recipe, int index) { if(recipe.outputFluids[0] != null) tanks[index * 4 + 2].setFill(tanks[index * 4 + 2].getFill() + recipe.outputFluids[0].fill); if(recipe.outputFluids[1] != null) tanks[index * 4 + 3].setFill(tanks[index * 4 + 3].getFill() + recipe.outputFluids[1].fill); } - + private void consumeItems(ChemRecipe recipe, int index) { - + int[] indices = getSlotIndicesFromIndex(index); - + for(AStack in : recipe.inputs) { if(in != null) InventoryUtil.tryConsumeAStack(slots, indices[0], indices[1], in); } } - + private void produceItems(ChemRecipe recipe, int index) { - + int[] indices = getSlotIndicesFromIndex(index); - + for(ItemStack out : recipe.outputs) { if(out != null) InventoryUtil.tryAddItemToInventory(slots, indices[2], indices[3], out.copy()); } } - + private void loadItems(int index) { - + int template = getTemplateIndex(index); if(slots[template] == null || slots[template].getItem() != ModItems.chemistry_template) return; - + ChemRecipe recipe = ChemplantRecipes.indexMapping.get(slots[template].getItemDamage()); - + if(recipe != null) { - + DirPos[] positions = getInputPositions(); int[] indices = getSlotIndicesFromIndex(index); - + for(DirPos coord : positions) { TileEntity te = worldObj.getTileEntity(coord.getX(), coord.getY(), coord.getZ()); - + if(te instanceof IInventory) { - + IInventory inv = (IInventory) te; ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; int[] access = sided != null ? sided.getAccessibleSlotsFromSide(coord.getDir().ordinal()) : null; - + for(AStack ingredient : recipe.inputs) { - + outer: while(!InventoryUtil.doesArrayHaveIngredients(slots, indices[0], indices[1], ingredient)) { - + boolean found = false; - + for(int i = 0; i < (access != null ? access.length : inv.getSizeInventory()); i++) { int slot = access != null ? access[i] : i; ItemStack stack = inv.getStackInSlot(slot); if(ingredient.matchesRecipe(stack, true) && (sided == null || sided.canExtractItem(slot, stack, 0))) { - + for(int j = indices[0]; j <= indices[1]; j++) { - + if(slots[j] != null && slots[j].stackSize < slots[j].getMaxStackSize() & InventoryUtil.doesStackDataMatch(slots[j], stack)) { inv.decrStackSize(slot, 1); slots[j].stackSize++; continue outer; } } - + for(int j = indices[0]; j <= indices[1]; j++) { - + if(slots[j] == null) { slots[j] = stack.copy(); slots[j].stackSize = 1; @@ -256,18 +267,18 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa } } } - + private void unloadItems(int index) { DirPos[] positions = getOutputPositions(); int[] indices = getSlotIndicesFromIndex(index); - + for(DirPos coord : positions) { TileEntity te = worldObj.getTileEntity(coord.getX(), coord.getY(), coord.getZ()); - + if(te instanceof IInventory) { - + IInventory inv = (IInventory) te; ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; int[] access = sided != null ? sided.getAccessibleSlotsFromSide(coord.getDir().ordinal()) : null; @@ -277,20 +288,20 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa shouldOutput = false; outer: for(int i = indices[2]; i <= indices[3]; i++) { - + ItemStack out = slots[i]; - + if(out != null) { - + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { - + int slot = access != null ? access[j] : j; - + if(!inv.isItemValidForSlot(slot, out)) continue; - + ItemStack target = inv.getStackInSlot(slot); - + if(InventoryUtil.doesStackDataMatch(out, target) && target.stackSize < target.getMaxStackSize() && target.stackSize < inv.getInventoryStackLimit()) { int toDec = Math.min(out.stackSize, Math.min(target.getMaxStackSize(), inv.getInventoryStackLimit()) - target.stackSize); this.decrStackSize(i, toDec); @@ -299,14 +310,14 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa break outer; } } - + for(int j = 0; j < (access != null ? access.length : inv.getSizeInventory()); j++) { - + int slot = access != null ? access[j] : j; - + if(!inv.isItemValidForSlot(slot, out)) continue; - + if(inv.getStackInSlot(slot) == null && (sided != null ? sided.canInsertItem(slot, out, coord.getDir().ordinal()) : inv.isItemValidForSlot(slot, out))) { ItemStack copy = out.copy(); copy.stackSize = 1; @@ -334,105 +345,105 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa } /*public int getFluidFill(FluidType type) { - + int fill = 0; - + for(FluidTank tank : inTanks()) { if(tank.getTankType() == type) { fill += tank.getFill(); } } - + for(FluidTank tank : outTanks()) { if(tank.getTankType() == type) { fill += tank.getFill(); } } - + return fill; }*/ /* For input only! */ public int getMaxFluidFill(FluidType type) { - + int maxFill = 0; - + for(FluidTank tank : inTanks()) { if(tank.getTankType() == type) { maxFill += tank.getMaxFill(); } } - + return maxFill; } - + protected List inTanks() { List inTanks = new ArrayList(); - + for(int i = 0; i < tanks.length; i++) { FluidTank tank = tanks[i]; if(i % 4 < 2) { inTanks.add(tank); } } - + return inTanks; } /*public void receiveFluid(int amount, FluidType type) { - + if(amount <= 0) return; - + List rec = new ArrayList(); - + for(FluidTank tank : inTanks()) { if(tank.getTankType() == type) { rec.add(tank); } } - + if(rec.size() == 0) return; - + int demand = 0; List weight = new ArrayList(); - + for(FluidTank tank : rec) { int fillWeight = tank.getMaxFill() - tank.getFill(); demand += fillWeight; weight.add(fillWeight); } - + for(int i = 0; i < rec.size(); i++) { - + if(demand <= 0) break; - + FluidTank tank = rec.get(i); int fillWeight = weight.get(i); int part = (int) (Math.min((long)amount, (long)demand) * (long)fillWeight / (long)demand); - + tank.setFill(tank.getFill() + part); } }*/ public int getFluidFillForTransfer(FluidType type, int pressure) { - + int fill = 0; - + for(FluidTank tank : outTanks()) { if(tank.getTankType() == type && tank.getPressure() == pressure) { fill += tank.getFill(); } } - + return fill; } - + public void transferFluid(int amount, FluidType type, int pressure) { - + /* * this whole new fluid mumbo jumbo extra abstraction layer might just be a bandaid * on the gushing wound that is the current fluid systemm but i'll be damned if it @@ -441,44 +452,44 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa */ if(amount <= 0) return; - + List send = new ArrayList(); - + for(FluidTank tank : outTanks()) { if(tank.getTankType() == type && tank.getPressure() == pressure) { send.add(tank); } } - + if(send.size() == 0) return; - + int offer = 0; List weight = new ArrayList(); - + for(FluidTank tank : send) { int fillWeight = tank.getFill(); offer += fillWeight; weight.add(fillWeight); } - + int tracker = amount; - + for(int i = 0; i < send.size(); i++) { - + FluidTank tank = send.get(i); int fillWeight = weight.get(i); int part = amount * fillWeight / offer; - + tank.setFill(tank.getFill() - part); tracker -= part; } - + //making sure to properly deduct even the last mB lost by rounding errors for(int i = 0; i < 100 && tracker > 0; i++) { - + FluidTank tank = send.get(i % send.size()); - + if(tank.getFill() > 0) { int total = Math.min(tank.getFill(), tracker); tracker -= total; @@ -486,18 +497,18 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa } } } - + protected List outTanks() { - + List outTanks = new ArrayList(); - + for(int i = 0; i < tanks.length; i++) { FluidTank tank = tanks[i]; if(i % 4 > 1) { outTanks.add(tank); } } - + return outTanks; } @@ -509,43 +520,43 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa @Override public long transferFluid(FluidType type, int pressure, long fluid) { int amount = (int) fluid; - + if(amount <= 0) return 0; - + List rec = new ArrayList(); - + for(FluidTank tank : inTanks()) { if(tank.getTankType() == type && tank.getPressure() == pressure) { rec.add(tank); } } - + if(rec.size() == 0) return fluid; - + int demand = 0; List weight = new ArrayList(); - + for(FluidTank tank : rec) { int fillWeight = tank.getMaxFill() - tank.getFill(); demand += fillWeight; weight.add(fillWeight); } - + for(int i = 0; i < rec.size(); i++) { - + if(demand <= 0) break; - + FluidTank tank = rec.get(i); int fillWeight = weight.get(i); int part = (int) (Math.min((long)amount, (long)demand) * (long)fillWeight / (long)demand); - + tank.setFill(tank.getFill() + part); fluid -= part; } - + return fluid; } @@ -563,29 +574,29 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa public void removeFluidForTransfer(FluidType type, int pressure, long amount) { this.transferFluid((int) amount, type, pressure); } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - + this.power = nbt.getLong("power"); this.progress = nbt.getIntArray("progress"); - + if(progress.length == 0) progress = new int[this.getRecipeCount()]; - + for(int i = 0; i < tanks.length; i++) { tanks[i].readFromNBT(nbt, "t" + i); } } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + nbt.setLong("power", power); nbt.setIntArray("progress", progress); - + for(int i = 0; i < tanks.length; i++) { tanks[i].writeToNBT(nbt, "t" + i); } @@ -594,7 +605,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa public abstract int getRecipeCount(); public abstract int getTankCapacity(); public abstract int getTemplateIndex(int index); - + /** * @param index * @return A size 4 int array containing min input, max input, min output and max output indices in that order. diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java index 78292b220..4244a2896 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerCombustionEngine; import com.hbm.inventory.fluid.FluidType; @@ -14,6 +15,7 @@ import com.hbm.items.machine.ItemPistons.EnumPistonType; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachinePolluting; import com.hbm.util.EnumUtil; @@ -21,9 +23,14 @@ import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; +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.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; @@ -32,20 +39,21 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCombustionEngine extends TileEntityMachinePolluting implements IEnergyProviderMK2, IFluidStandardTransceiver, IControlReceiver, IGUIProvider { - +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityMachineCombustionEngine extends TileEntityMachinePolluting implements IEnergyProviderMK2, IFluidStandardTransceiver, IControlReceiver, IGUIProvider, SimpleComponent, CompatHandler.OCComponent, IFluidCopiable { + public boolean isOn = false; public static long maxPower = 2_500_000; public long power; private int playersUsing = 0; public int setting = 0; public boolean wasOn = false; - + public float doorAngle = 0; public float prevDoorAngle = 0; - + private AudioWrapper audio; - + public FluidTank tank; public int tenth = 0; @@ -61,26 +69,26 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachinePollutin @Override public void updateEntity() { - + if(!worldObj.isRemote) { this.tank.loadTank(0, 1, slots); if(this.tank.setType(4, slots)) { this.tenth = 0; } - + wasOn = false; int fill = tank.getFill() * 10 + tenth; if(isOn && setting > 0 && slots[2] != null && slots[2].getItem() == ModItems.piston_set && fill > 0 && tank.getTankType().hasTrait(FT_Combustible.class)) { EnumPistonType piston = EnumUtil.grabEnumSafely(EnumPistonType.class, slots[2].getItemDamage()); FT_Combustible trait = tank.getTankType().getTrait(FT_Combustible.class); - + double eff = piston.eff[trait.getGrade().ordinal()]; - + if(eff > 0) { int speed = setting * 2; - + int toBurn = Math.min(fill, speed); this.power += toBurn * (trait.getCombustionEnergy() / 10_000D) * eff; fill -= toBurn; @@ -88,51 +96,46 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachinePollutin if(worldObj.getTotalWorldTime() % 5 == 0 && toBurn > 0) { super.pollute(tank.getTankType(), FluidReleaseType.BURN, toBurn * 0.5F); } - + if(toBurn > 0) { wasOn = true; } - + tank.setFill(fill / 10); tenth = fill % 10; } } - + NBTTagCompound data = new NBTTagCompound(); data.setLong("power", Math.min(power, maxPower)); - + this.power = Library.chargeItemsFromTE(slots, 3, power, power); - + for(DirPos pos : getConPos()) { this.tryProvide(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.sendSmoke(pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - + if(power > maxPower) power = maxPower; - - data.setInteger("playersUsing", playersUsing); - data.setInteger("setting", setting); - data.setBoolean("isOn", isOn); - data.setBoolean("wasOn", wasOn); - tank.writeToNBT(data, "tank"); - this.networkPack(data, 50); - + + this.networkPackNT(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); if(wasOn) { - + if(audio == null) { audio = createAudioLoop(); audio.startSound(); @@ -142,9 +145,9 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachinePollutin audio.keepAlive(); audio.updateVolume(this.getVolume(1F)); - + } else { - + if(audio != null) { audio.stopSound(); audio = null; @@ -152,11 +155,11 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachinePollutin } } } - + private DirPos[] getConPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - + return new DirPos[] { new DirPos(xCoord + dir.offsetX * 1 + rot.offsetX, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ, dir), new DirPos(xCoord + dir.offsetX * 1 - rot.offsetX, yCoord, zCoord + dir.offsetZ * 1 - rot.offsetZ, dir), @@ -164,7 +167,8 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachinePollutin new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ, dir.getOpposite()) }; } - + + @Override public AudioWrapper createAudioLoop() { return MainRegistry.proxy.getLoopedSound("hbm:block.igeneratorOperate", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F, 20); } @@ -180,7 +184,6 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachinePollutin @Override public void invalidate() { - super.invalidate(); if(audio != null) { @@ -200,14 +203,25 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachinePollutin } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - this.playersUsing = nbt.getInteger("playersUsing"); - this.setting = nbt.getInteger("setting"); - this.power = nbt.getLong("power"); - this.isOn = nbt.getBoolean("isOn"); - this.wasOn = nbt.getBoolean("wasOn"); - this.tank.readFromNBT(nbt, "tank"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(this.playersUsing); + buf.writeInt(this.setting); + buf.writeLong(this.power); + buf.writeBoolean(this.isOn); + buf.writeBoolean(this.wasOn); + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.playersUsing = buf.readInt(); + this.setting = buf.readInt(); + this.power = buf.readLong(); + this.isOn = buf.readBoolean(); + this.wasOn = buf.readBoolean(); + tank.deserialize(buf); } @Override @@ -229,12 +243,12 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachinePollutin tank.writeToNBT(nbt, "tank"); nbt.setInteger("tenth", tenth); } - + @Override public void openInventory() { if(!worldObj.isRemote) this.playersUsing++; } - + @Override public void closeInventory() { if(!worldObj.isRemote) this.playersUsing--; @@ -262,7 +276,7 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachinePollutin @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICombustionEngine(player.inventory, this); } @@ -280,12 +294,12 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachinePollutin public FluidTank[] getSendingTanks() { return this.getSmokeTanks(); } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 3, @@ -296,10 +310,10 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachinePollutin zCoord + 4 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -315,7 +329,149 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachinePollutin public void receiveControl(NBTTagCompound data) { if(data.hasKey("turnOn")) this.isOn = !this.isOn; if(data.hasKey("setting")) this.setting = data.getInteger("setting"); - + this.markChanged(); } + + @Override + public NBTTagCompound getSettings(World world, int x, int y, int z) { + NBTTagCompound tag = new NBTTagCompound(); + tag.setIntArray("fluidID", new int[]{tank.getTankType().getID()}); + tag.setBoolean("isOn", isOn); + tag.setInteger("burnRate", setting); + return tag; + } + + @Override + public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { + int id = nbt.getIntArray("fluidID")[index]; + tank.setTankType(Fluids.fromID(id)); + if(nbt.hasKey("isOn")) isOn = nbt.getBoolean("isOn"); + if(nbt.hasKey("burnRate")) setting = nbt.getInteger("burnRate"); + } + + @Override + @Optional.Method(modid = "OpenComputers") + public String getComponentName() { + return "ntm_combustion_engine"; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluid(Context context, Arguments args) { + return new Object[] {tank.getFill(), tank.getMaxFill()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getType(Context context, Arguments args) { + return new Object[] {tank.getTankType().getName()}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getPower(Context context, Arguments args) { + return new Object[] {power}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getThrottle (Context context, Arguments args) { + return new Object[] {setting}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getState(Context context, Arguments args) { + return new Object[] {isOn}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getEfficiency(Context context, Arguments args) { + EnumPistonType piston = EnumUtil.grabEnumSafely(EnumPistonType.class, slots[2].getItemDamage()); + FT_Combustible trait = tank.getTankType().getTrait(FT_Combustible.class); + double eff = piston.eff[trait.getGrade().ordinal()]; + return new Object[] {eff}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] setThrottle(Context context, Arguments args) { + int throttleRequest = args.checkInteger(0); + if ((throttleRequest < 0) || (throttleRequest > 30)) { // return false without doing anything if number is outside normal + return new Object[] {false, "Throttle request outside of range 0-30"}; + }; + setting = throttleRequest; + return new Object[] {true}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] start(Context context, Arguments args) { + isOn = true; + return new Object[] {}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] stop(Context context, Arguments args) { + isOn = false; + return new Object[] {}; + } + + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + EnumPistonType piston = EnumUtil.grabEnumSafely(EnumPistonType.class, slots[2].getItemDamage()); + FT_Combustible trait = tank.getTankType().getTrait(FT_Combustible.class); + double eff = piston.eff[trait.getGrade().ordinal()]; + return new Object[] {setting, isOn, power, eff, tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()}; + } + + @Override + @Optional.Method(modid = "OpenComputers") + public String[] methods() { + return new String[] { + "getFluid", + "getType", + "getPower", + "getThrottle", + "getState", + "getEfficiency", + "setThrottle", + "start", + "stop", + "getInfo" + }; + } + + @Override + @Optional.Method(modid = "OpenComputers") + public Object[] invoke(String method, Context context, Arguments args) throws Exception { + switch(method) { + case ("getFluid"): + return getFluid(context, args); + case ("getType"): + return getType(context, args); + case ("getPower"): + return getPower(context, args); + case ("getThrottle"): + return getThrottle(context, args); + case ("getState"): + return getState(context, args); + case ("getEfficiency"): + return getEfficiency(context, args); + case ("setThrottle"): + return setThrottle(context, args); + case ("start"): + return start(context, args); + case ("stop"): + return stop(context, args); + case ("getInfo"): + return getInfo(context, args); + } + throw new NoSuchMethodException(); + } + } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java index c3e94a705..e7e5ad2d5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java @@ -1,11 +1,12 @@ package com.hbm.tileentity.machine; +import java.util.HashMap; import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IControlReceiver; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.container.ContainerCompressor; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; @@ -15,9 +16,7 @@ import com.hbm.inventory.recipes.CompressorRecipes.CompressorRecipe; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.IUpgradeInfoProvider; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.*; import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; import com.hbm.util.Tuple.Pair; @@ -27,7 +26,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; @@ -37,8 +36,8 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCompressor extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, IEnergyReceiverMK2, IFluidStandardTransceiver, IUpgradeInfoProvider { - +public class TileEntityMachineCompressor extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, IEnergyReceiverMK2, IFluidStandardTransceiver, IUpgradeInfoProvider, IFluidCopiable { + public FluidTank[] tanks; public long power; public static final long maxPower = 100_000; @@ -48,13 +47,15 @@ public class TileEntityMachineCompressor extends TileEntityMachineBase implement public static final int processTimeBase = 100; public int powerRequirement; public static final int powerRequirementBase = 2_500; - + public float fanSpin; public float prevFanSpin; public float piston; public float prevPiston; public boolean pistonDir; + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + public TileEntityMachineCompressor() { super(4); this.tanks = new FluidTank[2]; @@ -69,23 +70,23 @@ public class TileEntityMachineCompressor extends TileEntityMachineBase implement @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + if(worldObj.getTotalWorldTime() % 20 == 0) { this.updateConnections(); } - + this.power = Library.chargeTEFromItems(slots, 1, power, maxPower); this.tanks[0].setType(0, slots); this.setupTanks(); - - UpgradeManager.eval(slots, 1, 3); - int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); - int powerLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); - int overLevel = UpgradeManager.getLevel(UpgradeType.OVERDRIVE); - + upgradeManager.checkSlots(this, slots, 1, 3); + + int speedLevel = upgradeManager.getLevel(UpgradeType.SPEED); + int powerLevel = upgradeManager.getLevel(UpgradeType.POWER); + int overLevel = upgradeManager.getLevel(UpgradeType.OVERDRIVE); + CompressorRecipe rec = CompressorRecipes.recipes.get(new Pair(tanks[0].getTankType(), tanks[0].getPressure())); int timeBase = this.processTimeBase; if(rec != null) timeBase = rec.duration; @@ -97,52 +98,44 @@ public class TileEntityMachineCompressor extends TileEntityMachineBase implement this.powerRequirement = this.powerRequirementBase / (powerLevel + 1); this.processTime = this.processTime / (overLevel + 1); this.powerRequirement = this.powerRequirement * ((overLevel * 2) + 1); - + if(processTime <= 0) processTime = 1; - + if(canProcess()) { this.progress++; this.isOn = true; this.power -= powerRequirement; - + if(progress >= this.processTime) { progress = 0; this.process(); this.markChanged(); } - + } else { this.progress = 0; this.isOn = false; } - + for(DirPos pos : getConPos()) { this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("progress", progress); - data.setInteger("processTime", processTime); - data.setInteger("powerRequirement", powerRequirement); - data.setLong("power", power); - tanks[0].writeToNBT(data, "0"); - tanks[1].writeToNBT(data, "1"); - data.setBoolean("isOn", isOn); - this.networkPack(data, 100); - + + this.networkPackNT(100); + } else { - + this.prevFanSpin = this.fanSpin; this.prevPiston = this.piston; - + if(this.isOn) { this.fanSpin += 15; - + if(this.fanSpin >= 360) { this.prevFanSpin -= 360; this.fanSpin -= 360; } - + if(this.pistonDir) { this.piston -= randSpeed; if(this.piston <= 0) { @@ -156,61 +149,73 @@ public class TileEntityMachineCompressor extends TileEntityMachineBase implement this.pistonDir = !this.pistonDir; } } - + this.piston = MathHelper.clamp_float(this.piston, 0F, 1F); } } } - + private float randSpeed = 0.1F; - - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.progress = nbt.getInteger("progress"); - this.processTime = nbt.getInteger("processTime"); - this.powerRequirement = nbt.getInteger("powerRequirement"); - this.power = nbt.getLong("power"); - tanks[0].readFromNBT(nbt, "0"); - tanks[1].readFromNBT(nbt, "1"); - this.isOn = nbt.getBoolean("isOn"); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(this.progress); + buf.writeInt(this.processTime); + buf.writeInt(this.powerRequirement); + buf.writeLong(this.power); + tanks[0].serialize(buf); + tanks[1].serialize(buf); + buf.writeBoolean(this.isOn); } - + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.progress = buf.readInt(); + this.processTime = buf.readInt(); + this.powerRequirement = buf.readInt(); + this.power = buf.readLong(); + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); + this.isOn = buf.readBoolean(); + } + private void updateConnections() { for(DirPos pos : getConPos()) { this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - + public DirPos[] getConPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - + return new DirPos[] { new DirPos(xCoord + rot.offsetX * 2, yCoord, zCoord + rot.offsetZ * 2, rot), new DirPos(xCoord - rot.offsetX * 2, yCoord, zCoord - rot.offsetZ * 2, rot.getOpposite()), new DirPos(xCoord - dir.offsetX * 2, yCoord, zCoord - dir.offsetZ * 2, dir.getOpposite()), }; } - + public boolean canProcess() { - + if(this.power <= powerRequirement) return false; - + CompressorRecipe recipe = CompressorRecipes.recipes.get(new Pair(tanks[0].getTankType(), tanks[0].getPressure())); - + if(recipe == null) { return tanks[0].getFill() >= 1000 && tanks[1].getFill() + 1000 <= tanks[1].getMaxFill(); } - + return tanks[0].getFill() > recipe.inputAmount && tanks[1].getFill() + recipe.output.fill <= tanks[1].getMaxFill(); } - + public void process() { - + CompressorRecipe recipe = CompressorRecipes.recipes.get(new Pair(tanks[0].getTankType(), tanks[0].getPressure())); - + if(recipe == null) { tanks[0].setFill(tanks[0].getFill() - 1_000); tanks[1].setFill(tanks[1].getFill() + 1_000); @@ -219,18 +224,18 @@ public class TileEntityMachineCompressor extends TileEntityMachineBase implement tanks[1].setFill(tanks[1].getFill() + recipe.output.fill); } } - + protected void setupTanks() { - + CompressorRecipe recipe = CompressorRecipes.recipes.get(new Pair(tanks[0].getTankType(), tanks[0].getPressure())); - + if(recipe == null) { tanks[1].withPressure(tanks[0].getPressure() + 1).setTankType(tanks[0].getTankType()); } else { tanks[1].withPressure(recipe.output.pressure).setTankType(recipe.output.type); } } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -239,7 +244,7 @@ public class TileEntityMachineCompressor extends TileEntityMachineBase implement tanks[0].readFromNBT(nbt, "0"); tanks[1].readFromNBT(nbt, "1"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -256,7 +261,7 @@ public class TileEntityMachineCompressor extends TileEntityMachineBase implement @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICompressor(player.inventory, this); } @@ -268,18 +273,18 @@ public class TileEntityMachineCompressor extends TileEntityMachineBase implement @Override public void receiveControl(NBTTagCompound data) { int compression = data.getInteger("compression"); - + if(compression != tanks[0].getPressure()) { tanks[0].withPressure(compression); - + CompressorRecipe recipe = CompressorRecipes.recipes.get(new Pair(tanks[0].getTankType(), compression)); - + if(recipe == null) { tanks[1].withPressure(compression + 1); } else { tanks[1].withPressure(recipe.output.pressure).setTankType(recipe.output.type); } - + this.markChanged(); } } @@ -313,12 +318,12 @@ public class TileEntityMachineCompressor extends TileEntityMachineBase implement public FluidTank[] getReceivingTanks() { return new FluidTank[] {tanks[0]}; } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 2, @@ -329,10 +334,10 @@ public class TileEntityMachineCompressor extends TileEntityMachineBase implement zCoord + 3 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -360,10 +365,41 @@ public class TileEntityMachineCompressor extends TileEntityMachineBase implement } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 3; - if(type == UpgradeType.POWER) return 3; - if(type == UpgradeType.OVERDRIVE) return 9; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 3); + upgrades.put(UpgradeType.POWER, 3); + upgrades.put(UpgradeType.OVERDRIVE, 9); + return upgrades; + } + + @Override + public NBTTagCompound getSettings(World world, int x, int y, int z) { + NBTTagCompound tag = new NBTTagCompound(); + tag.setIntArray("fluidID", getFluidIDToCopy()); + tag.setInteger("compression", tanks[0].getPressure()); + return tag; + } + + @Override + public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { + if(nbt.hasKey("compression")) { + int compression = nbt.getInteger("compression"); + + if (compression != tanks[0].getPressure()) { + tanks[0].withPressure(compression); + + CompressorRecipe recipe = CompressorRecipes.recipes.get(new Pair(tanks[0].getTankType(), compression)); + + if (recipe == null) { + tanks[1].withPressure(compression + 1); + } else { + tanks[1].withPressure(recipe.output.pressure).setTankType(recipe.output.type); + } + + this.markChanged(); + } + } + IFluidCopiable.super.pasteSettings(nbt, index, world, player, x, y, z); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java index 944364b7b..23771df85 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java @@ -1,10 +1,11 @@ package com.hbm.tileentity.machine; +import java.util.HashMap; import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.extprop.HbmPlayerProps; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.container.ContainerCrystallizer; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; @@ -15,9 +16,7 @@ import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.IUpgradeInfoProvider; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.*; import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; @@ -28,7 +27,6 @@ import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -39,20 +37,22 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCrystallizer extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IUpgradeInfoProvider { - +public class TileEntityMachineCrystallizer extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IUpgradeInfoProvider, IFluidCopiable { + public long power; public static final long maxPower = 1000000; public static final int demand = 1000; public short progress; public short duration = 600; public boolean isOn; - + public float angle; public float prevAngle; - + public FluidTank tank; + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + public TileEntityMachineCrystallizer() { super(8); tank = new FluidTank(Fluids.PEROXIDE, 8000); @@ -65,76 +65,76 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + this.isOn = false; - + this.updateConnections(); - + power = Library.chargeTEFromItems(slots, 1, power, maxPower); tank.setType(7, slots); tank.loadTank(3, 4, slots); - - UpgradeManager.eval(slots, 5, 6); - + + upgradeManager.checkSlots(this, slots, 5, 6); + for(int i = 0; i < getCycleCount(); i++) { - + if(canProcess()) { - + progress++; power -= getPowerRequired(); isOn = true; - + if(progress > getDuration()) { progress = 0; processItem(); - + this.markDirty(); } - + } else { progress = 0; } } - + this.networkPackNT(25); } else { - + prevAngle = angle; - + if(isOn) { angle += 5F * this.getCycleCount(); - + if(angle >= 360) { angle -= 360; prevAngle -= 360; } - + if(worldObj.rand.nextInt(20) == 0 && MainRegistry.proxy.me().getDistance(xCoord + 0.5, yCoord + 6, zCoord + 0.5) < 50) { worldObj.spawnParticle("cloud", xCoord + worldObj.rand.nextDouble(), yCoord + 6.5D, zCoord + worldObj.rand.nextDouble(), 0.0, 0.1, 0.0); } } } - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord + 0.25, yCoord + 1, zCoord + 0.25, xCoord + 0.75, yCoord + 6, zCoord + 0.75).offset(rot.offsetX * 1.5, 0, rot.offsetZ * 1.5)); - + for(EntityPlayer player : players) { HbmPlayerProps props = HbmPlayerProps.getData(player); props.isOnLadder = true; } } - + private void updateConnections() { - + for(DirPos pos : getConPos()) { this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - + protected DirPos[] getConPos() { return new DirPos[] { @@ -148,7 +148,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme new DirPos(xCoord - 1, yCoord, zCoord - 2, Library.NEG_Z) }; } - + @Override public void serialize(ByteBuf buf) { super.serialize(buf); @@ -158,7 +158,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme buf.writeBoolean(isOn); tank.serialize(buf); } - + @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); @@ -168,103 +168,103 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme isOn = buf.readBoolean(); tank.deserialize(buf); } - + private void processItem() { CrystallizerRecipe result = CrystallizerRecipes.getOutput(slots[0], tank.getTankType()); - + if(result == null) //never happens but you can't be sure enough return; - + ItemStack stack = result.output.copy(); - + if(slots[2] == null) slots[2] = stack; else if(slots[2].stackSize + stack.stackSize <= slots[2].getMaxStackSize()) slots[2].stackSize += stack.stackSize; - + tank.setFill(tank.getFill() - getRequiredAcid(result.acidAmount)); - + float freeChance = this.getFreeChance(); - + if(freeChance == 0 || freeChance < worldObj.rand.nextFloat()) this.decrStackSize(0, result.itemAmount); } - + private boolean canProcess() { - + //Is there no input? if(slots[0] == null) return false; - + if(power < getPowerRequired()) return false; - + CrystallizerRecipe result = CrystallizerRecipes.getOutput(slots[0], tank.getTankType()); - + //Or output? if(result == null) return false; - + //Not enough of the input item? if(slots[0].stackSize < result.itemAmount) return false; - + if(tank.getFill() < getRequiredAcid(result.acidAmount)) return false; - + ItemStack stack = result.output.copy(); - + //Does the output not match? if(slots[2] != null && (slots[2].getItem() != stack.getItem() || slots[2].getItemDamage() != stack.getItemDamage())) return false; - + //Or is the output slot already full? if(slots[2] != null && slots[2].stackSize + stack.stackSize > slots[2].getMaxStackSize()) return false; - + return true; } - + public int getRequiredAcid(int base) { - int efficiency = Math.min(UpgradeManager.getLevel(UpgradeType.EFFECT), 3); + int efficiency = upgradeManager.getLevel(UpgradeType.EFFECT); if(efficiency > 0) { return base * (efficiency + 2); } return base; } - + public float getFreeChance() { - int efficiency = Math.min(UpgradeManager.getLevel(UpgradeType.EFFECT), 3); + int efficiency = upgradeManager.getLevel(UpgradeType.EFFECT); if(efficiency > 0) { return Math.min(efficiency * 0.05F, 0.15F); } return 0; } - + public short getDuration() { CrystallizerRecipe result = CrystallizerRecipes.getOutput(slots[0], tank.getTankType()); int base = result != null ? result.duration : 600; - int speed = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); + int speed = upgradeManager.getLevel(UpgradeType.SPEED); if(speed > 0) { return (short) Math.ceil((base * Math.max(1F - 0.25F * speed, 0.25F))); } return (short) base; } - + public int getPowerRequired() { - int speed = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); + int speed = upgradeManager.getLevel(UpgradeType.SPEED); return (int) (demand + Math.min(speed * 1000, 3000)); } - + public float getCycleCount() { - int speed = UpgradeManager.getLevel(UpgradeType.OVERDRIVE); + int speed = upgradeManager.getLevel(UpgradeType.OVERDRIVE); return Math.min(1 + speed * 2, 7); } - + public long getPowerScaled(int i) { return (power * i) / maxPower; } - + public int getProgressScaled(int i) { return (progress * i) / duration; } @@ -283,34 +283,34 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme public long getMaxPower() { return maxPower; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - + power = nbt.getLong("power"); tank.readFromNBT(nbt, "tank"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + nbt.setLong("power", power); tank.writeToNBT(nbt, "tank"); } @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { - + CrystallizerRecipe recipe = CrystallizerRecipes.getOutput(itemStack, tank.getTankType()); if(i == 0 && recipe != null) { return true; } - + if(i == 1 && itemStack.getItem() instanceof IBatteryItem) return true; - + return false; } @@ -321,15 +321,15 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme @Override public int[] getAccessibleSlotsFromSide(int side) { - + return side == 0 ? new int[] { 2 } : new int[] { 0, 2 }; } - + @Override public AxisAlignedBB getRenderBoundingBox() { return TileEntity.INFINITE_EXTENT_AABB; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -339,7 +339,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme @Override public void setInventorySlotContents(int i, ItemStack stack) { super.setInventorySlotContents(i, stack); - + if(stack != null && i >= 5 && i <= 6 && stack.getItem() instanceof ItemMachineUpgrade) { worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:item.upgradePlug", 1.0F, 1.0F); } @@ -362,7 +362,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICrystallizer(player.inventory, this); } @@ -388,10 +388,21 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 3; - if(type == UpgradeType.EFFECT) return 3; - if(type == UpgradeType.OVERDRIVE) return 3; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 3); + upgrades.put(UpgradeType.EFFECT, 3); + upgrades.put(UpgradeType.OVERDRIVE, 3); + return upgrades; + } + + @Override + public int[] getFluidIDToCopy() { + return new int[]{ tank.getTankType().getID()}; + } + + @Override + public FluidTank getTankToPaste() { + return tank; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java index effd7bf2e..b254d0fdf 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java @@ -1,10 +1,11 @@ package com.hbm.tileentity.machine; +import java.util.HashMap; import java.util.List; import java.util.Map.Entry; import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.container.ContainerMachineCyclotron; @@ -16,10 +17,7 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; -import com.hbm.tileentity.IConditionalInvAccess; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.IUpgradeInfoProvider; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.*; import com.hbm.util.CompatEnergyControl; import com.hbm.util.I18nUtil; import com.hbm.util.Tuple.Pair; @@ -31,7 +29,6 @@ import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.Item; @@ -42,22 +39,24 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCyclotron extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IConditionalInvAccess, IUpgradeInfoProvider, IInfoProviderEC { - +public class TileEntityMachineCyclotron extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IConditionalInvAccess, IUpgradeInfoProvider, IInfoProviderEC, IFluidCopiable { + public long power; public static final long maxPower = 100000000; public static int consumption = 1_000_000; - - private byte plugs; - + + private byte plugs; + public int progress; public static final int duration = 690; - + public FluidTank[] tanks; + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + public TileEntityMachineCyclotron() { super(12); - + this.tanks = new FluidTank[3]; this.tanks[0] = new FluidTank(Fluids.WATER, 32000); this.tanks[1] = new FluidTank(Fluids.SPENTSTEAM, 32000); @@ -71,67 +70,67 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + this.updateConnections(); this.power = Library.chargeTEFromItems(slots, 9, power, maxPower); - - UpgradeManager.eval(slots, 10, 11); - + + upgradeManager.checkSlots(this, slots, 10, 11); + if(canProcess()) { progress += getSpeed(); power -= getConsumption(); - + int convert = getCoolantConsumption(); tanks[0].setFill(tanks[0].getFill() - convert); tanks[1].setFill(tanks[1].getFill() + convert); - + if(progress >= duration) { process(); progress = 0; this.markDirty(); } - + } else { progress = 0; } - + this.sendFluid(); this.networkPackNT(25); } } - + @Override public void serialize(ByteBuf buf) { super.serialize(buf); buf.writeLong(power); buf.writeInt(progress); buf.writeByte(plugs); - + for(int i = 0; i < 3; i++) tanks[i].serialize(buf); } - + @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); power = buf.readLong(); progress = buf.readInt(); plugs = buf.readByte(); - + for(int i = 0; i < 3; i++) tanks[i].deserialize(buf); } - + private void updateConnections() { for(DirPos pos : getConPos()) { this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - + private void sendFluid() { for(int i = 1; i < 3; i++) { if(tanks[i].getFill() > 0) { @@ -141,7 +140,7 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements } } } - + public DirPos[] getConPos() { return new DirPos[] { new DirPos(xCoord + 3, yCoord, zCoord + 1, Library.POS_X), @@ -154,93 +153,93 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements new DirPos(xCoord - 1, yCoord, zCoord - 3, Library.NEG_Z) }; } - + public boolean canProcess() { - + if(power < getConsumption()) return false; - + int convert = getCoolantConsumption(); - + if(tanks[0].getFill() < convert) return false; - + if(tanks[1].getFill() + convert > tanks[1].getMaxFill()) return false; - + for(int i = 0; i < 3; i++) { - + Object[] res = CyclotronRecipes.getOutput(slots[i + 3], slots[i]); - + if(res == null) continue; - + ItemStack out = (ItemStack)res[0]; - + if(out == null) continue; - + if(slots[i + 6] == null) return true; - + if(slots[i + 6].getItem() == out.getItem() && slots[i + 6].getItemDamage() == out.getItemDamage() && slots[i + 6].stackSize < out.getMaxStackSize()) return true; } - + return false; } - + public void process() { - + for(int i = 0; i < 3; i++) { - + Object[] res = CyclotronRecipes.getOutput(slots[i + 3], slots[i]); - + if(res == null) continue; - + ItemStack out = (ItemStack)res[0]; - + if(out == null) continue; - + if(slots[i + 6] == null) { - + this.decrStackSize(i, 1); this.decrStackSize(i + 3, 1); slots[i + 6] = out; - + this.tanks[2].setFill(this.tanks[2].getFill() + (Integer)res[1]); - + continue; } - + if(slots[i + 6].getItem() == out.getItem() && slots[i + 6].getItemDamage() == out.getItemDamage() && slots[i + 6].stackSize < out.getMaxStackSize()) { - + this.decrStackSize(i, 1); this.decrStackSize(i + 3, 1); slots[i + 6].stackSize++; - + this.tanks[2].setFill(this.tanks[2].getFill() + (Integer)res[1]); } } - + if(this.tanks[2].getFill() > this.tanks[2].getMaxFill()) this.tanks[2].setFill(this.tanks[2].getMaxFill()); } - + public int getSpeed() { - return Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3) + 1; + return upgradeManager.getLevel(UpgradeType.SPEED) + 1; } - + public int getConsumption() { - int efficiency = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); - + int efficiency = upgradeManager.getLevel(UpgradeType.POWER); + return consumption - 100_000 * efficiency; } - + public int getCoolantConsumption() { - int efficiency = Math.min(UpgradeManager.getLevel(UpgradeType.EFFECT), 3); + int efficiency = upgradeManager.getLevel(UpgradeType.EFFECT); //half a small tower's worth return 500 / (efficiency + 1) * getSpeed(); } @@ -252,67 +251,67 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements public int getProgressScaled(int i) { return (progress * i) / duration; } - + @Override public AxisAlignedBB getRenderBoundingBox() { return AxisAlignedBB.getBoundingBox(xCoord - 2, yCoord, zCoord - 2, xCoord + 3, yCoord + 4, zCoord + 3); } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { return 65536.0D; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - + for(int i = 0; i < 3; i++) tanks[i].readFromNBT(nbt, "t" + i); - + this.progress = nbt.getInteger("progress"); this.power = nbt.getLong("power"); this.plugs = nbt.getByte("plugs"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + for(int i = 0; i < 3; i++) tanks[i].writeToNBT(nbt, "t" + i); - + nbt.setInteger("progress", progress); nbt.setLong("power", power); nbt.setByte("plugs", plugs); } - + public void setPlug(int index) { this.plugs |= (1 << index); this.markDirty(); } - + public boolean getPlug(int index) { return (this.plugs & (1 << index)) > 0; } - + public static Item getItemForPlug(int i) { - + switch(i) { case 0: return ModItems.powder_balefire; case 1: return ModItems.book_of_; case 2: return ModItems.diamond_gavel; case 3: return ModItems.coin_maskman; } - + return null; } @Override public void setInventorySlotContents(int i, ItemStack stack) { super.setInventorySlotContents(i, stack); - + if(stack != null && i >= 14 && i <= 15 && stack.getItem() instanceof ItemMachineUpgrade) worldObj.playSoundEffect(xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, "hbm:item.upgradePlug", 1.5F, 1.0F); } @@ -354,13 +353,13 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineCyclotron(player.inventory, this); } @Override public boolean isItemValidForSlot(int x, int y, int z, int slot, ItemStack stack) { - + if(slot < 3) { for(Entry, Pair> entry : CyclotronRecipes.recipes.entrySet()) { if(entry.getKey().getKey().matchesRecipe(stack, true)) return true; @@ -371,7 +370,7 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements if(entry.getKey().getValue().matchesRecipe(stack, true)) return true; } } - + return false; } @@ -387,7 +386,7 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements @Override public int[] getAccessibleSlotsFromSide(int x, int y, int z, int side) { - + for(int i = 2; i < 6; i++) { ForgeDirection dir = ForgeDirection.getOrientation(i); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); @@ -396,7 +395,7 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements if(x == xCoord + dir.offsetX * 2 && z == zCoord + dir.offsetZ * 2) return new int[] {1, 4, 6, 7, 8}; if(x == xCoord + dir.offsetX * 2 - rot.offsetX && z == zCoord + dir.offsetZ * 2 - rot.offsetZ) return new int[] {2, 5, 6, 7, 8}; } - + return new int[] {6, 7, 8}; } @@ -421,11 +420,12 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 3; - if(type == UpgradeType.POWER) return 3; - if(type == UpgradeType.EFFECT) return 3; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 3); + upgrades.put(UpgradeType.POWER, 3); + upgrades.put(UpgradeType.EFFECT, 3); + return upgrades; } @Override @@ -433,4 +433,9 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements data.setBoolean(CompatEnergyControl.B_ACTIVE, this.progress > 0); data.setDouble(CompatEnergyControl.D_CONSUMPTION_HE, this.progress > 0 ? getConsumption() : 0); } + + @Override + public FluidTank getTankToPaste() { + return null; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java index d36cb4336..808554c37 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java @@ -18,6 +18,7 @@ import com.hbm.inventory.gui.GUIMachineDiesel; import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.tileentity.IConfigurableMachine; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachinePolluting; import com.hbm.util.CompatEnergyControl; @@ -28,7 +29,7 @@ import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -36,7 +37,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineDiesel extends TileEntityMachinePolluting implements IEnergyProviderMK2, IFluidStandardTransceiver, IConfigurableMachine, IGUIProvider, IInfoProviderEC { +public class TileEntityMachineDiesel extends TileEntityMachinePolluting implements IEnergyProviderMK2, IFluidStandardTransceiver, IConfigurableMachine, IGUIProvider, IInfoProviderEC, IFluidCopiable { public long power; public int soundCycle = 0; @@ -151,22 +152,26 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen generate(); - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("power", (int) power); - data.setInteger("powerCap", (int) powerCap); - tank.writeToNBT(data, "t"); - this.networkPack(data, 50); + this.networkPackNT(50); } } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - power = data.getInteger("power"); - powerCap = data.getInteger("powerCap"); - tank.readFromNBT(data, "t"); + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt((int) power); + buf.writeInt((int) powerCap); + tank.serialize(buf); } - + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readInt(); + this.powerCap = buf.readInt(); + tank.deserialize(buf); + } + public boolean hasAcceptableFuel() { return getHEFromFuel() > 0; } @@ -292,7 +297,7 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineDiesel(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDrain.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDrain.java index 9a6dc8f21..22b99e917 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDrain.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDrain.java @@ -12,14 +12,12 @@ import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Gaseous; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Liquid; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Viscous; import com.hbm.main.MainRegistry; -import com.hbm.packet.BufPacket; -import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IBufPacketReceiver; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.fluid.IFluidStandardReceiver; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; @@ -30,25 +28,25 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineDrain extends TileEntityLoadedBase implements IFluidStandardReceiver, IBufPacketReceiver { - +public class TileEntityMachineDrain extends TileEntityLoadedBase implements IFluidStandardReceiver, IBufPacketReceiver, IFluidCopiable { + public FluidTank tank; - + public TileEntityMachineDrain() { this.tank = new FluidTank(Fluids.NONE, 2_000); } - + @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + if(worldObj.getTotalWorldTime() % 20 == 0) { for(DirPos pos : getConPos()) this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - - PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - + + networkPackNT(50); + if(tank.getFill() > 0) { if(tank.getTankType().hasTrait(FT_Amat.class)) { worldObj.newExplosion(null, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 10F, true, true); @@ -57,13 +55,13 @@ public class TileEntityMachineDrain extends TileEntityLoadedBase implements IFlu int toSpill = Math.max(tank.getFill() / 2, 1); tank.setFill(tank.getFill() - toSpill); FT_Polluting.pollute(worldObj, xCoord, yCoord, zCoord, tank.getTankType(), FluidReleaseType.SPILL, toSpill); - + if(toSpill >= 100 && worldObj.rand.nextInt(20) == 0 && tank.getTankType().hasTrait(FT_Liquid.class) && tank.getTankType().hasTrait(FT_Viscous.class) && tank.getTankType().hasTrait(FT_Flammable.class)) { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); Vec3 start = Vec3.createVectorHelper(xCoord + 0.5 - dir.offsetX * 3, yCoord + 0.5, zCoord + 0.5 - dir.offsetZ * 3); Vec3 end = start.addVector(worldObj.rand.nextGaussian() * 5, -25, worldObj.rand.nextGaussian() * 5); MovingObjectPosition mop = worldObj.func_147447_a(start, end, false, true, false); - + if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK && mop.sideHit == 1) { Block block = worldObj.getBlock(mop.blockX, mop.blockY + 1, mop.blockZ); if(!block.getMaterial().isLiquid() && block.isReplaceable(worldObj, mop.blockX, mop.blockY + 1, mop.blockZ) && ModBlocks.oil_spill.canPlaceBlockAt(worldObj, mop.blockX, mop.blockY + 1, mop.blockZ)) { @@ -72,12 +70,12 @@ public class TileEntityMachineDrain extends TileEntityLoadedBase implements IFlu } } } - + } else { - + if(tank.getFill() > 0 && MainRegistry.proxy.me().getDistance(xCoord, yCoord, zCoord) < 100) { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); - + NBTTagCompound data = new NBTTagCompound(); if(tank.getTankType().hasTrait(FT_Gaseous.class)) { data.setString("type", "tower"); @@ -88,17 +86,17 @@ public class TileEntityMachineDrain extends TileEntityLoadedBase implements IFlu } else { data.setString("type", "splash"); } - + data.setInteger("color", tank.getTankType().getColor()); data.setDouble("posX", xCoord + 0.5 - dir.offsetX * 2.5); data.setDouble("posZ", zCoord + 0.5 - dir.offsetZ * 2.5); data.setDouble("posY", yCoord + 0.5); - + MainRegistry.proxy.effectNT(data); } } } - + public DirPos[] getConPos() { ForgeDirection dir0 = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection dir1 = dir0.getRotation(ForgeDirection.UP); @@ -109,13 +107,13 @@ public class TileEntityMachineDrain extends TileEntityLoadedBase implements IFlu new DirPos(xCoord + dir2.offsetX, yCoord, zCoord + dir2.offsetZ, dir2) }; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); this.tank.readFromNBT(nbt, "t"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -127,17 +125,17 @@ public class TileEntityMachineDrain extends TileEntityLoadedBase implements IFlu @Override public FluidTank[] getAllTanks() { return new FluidTank[] {tank}; } @Override public FluidTank[] getReceivingTanks() { return new FluidTank[] {tank}; } - + @Override public boolean canConnect(FluidType type, ForgeDirection dir) { return dir != ForgeDirection.UP && dir != ForgeDirection.DOWN; } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 2, @@ -148,13 +146,18 @@ public class TileEntityMachineDrain extends TileEntityLoadedBase implements IFlu zCoord + 3 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { return 65536.0D; } + + @Override + public FluidTank getTankToPaste() { + return tank; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java index 081aab10a..0462f77f7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java @@ -1,9 +1,10 @@ package com.hbm.tileentity.machine; +import java.util.HashMap; import java.util.List; import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.container.ContainerMachineEPress; import com.hbm.inventory.gui.GUIMachineEPress; import com.hbm.inventory.recipes.PressRecipes; @@ -13,6 +14,7 @@ import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.CompatEnergyControl; import com.hbm.util.I18nUtil; @@ -20,7 +22,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -43,9 +45,11 @@ public class TileEntityMachineEPress extends TileEntityMachineBase implements IE public final static int maxPress = 200; boolean isRetracting = false; private int delay; - + public ItemStack syncStack; - + + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + public TileEntityMachineEPress() { super(5); } @@ -54,39 +58,39 @@ public class TileEntityMachineEPress extends TileEntityMachineBase implements IE public String getName() { return "container.epress"; } - + @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + this.updateConnections(); power = Library.chargeTEFromItems(slots, 0, power, maxPower); - + boolean canProcess = this.canProcess(); - + if((canProcess || this.isRetracting || this.delay > 0) && power >= 100) { - + power -= 100; - + if(delay <= 0) { - - UpgradeManager.eval(slots, 4, 4); - int speed = 1 + Math.min(3, UpgradeManager.getLevel(UpgradeType.SPEED)); - + + upgradeManager.checkSlots(this, slots, 4, 4); + int speed = 1 + upgradeManager.getLevel(UpgradeType.SPEED); + int stampSpeed = this.isRetracting ? 20 : 45; stampSpeed *= (1D + (double) speed / 4D); - + if(this.isRetracting) { this.press -= stampSpeed; - + if(this.press <= 0) { this.isRetracting = false; this.delay = 5 - speed + 1; } } else if(canProcess) { this.press += stampSpeed; - + if(this.press >= this.maxPress) { this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.pressOperate", getVolume(1.5F), 1.0F); ItemStack output = PressRecipes.getOutput(slots[2], slots[1]); @@ -96,17 +100,17 @@ public class TileEntityMachineEPress extends TileEntityMachineBase implements IE slots[3].stackSize += output.stackSize; } this.decrStackSize(2, 1); - + if(slots[1].getMaxDamage() != 0) { slots[1].setItemDamage(slots[1].getItemDamage() + 1); if(slots[1].getItemDamage() >= slots[1].getMaxDamage()) { slots[1] = null; } } - + this.isRetracting = true; this.delay = 5 - speed + 1; - + this.markDirty(); } } else if(this.press > 0){ @@ -116,23 +120,14 @@ public class TileEntityMachineEPress extends TileEntityMachineBase implements IE delay--; } } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("press", press); - if(slots[2] != null) { - NBTTagCompound stack = new NBTTagCompound(); - slots[2].writeToNBT(stack); - data.setTag("stack", stack); - } - - this.networkPack(data, 50); - + + this.networkPackNT(50); + } else { - + // approach-based interpolation, GO! this.lastPress = this.renderPress; - + if(this.turnProgress > 0) { this.renderPress = this.renderPress + ((this.syncPress - this.renderPress) / (double) this.turnProgress); --this.turnProgress; @@ -141,52 +136,58 @@ public class TileEntityMachineEPress extends TileEntityMachineBase implements IE } } } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.syncPress = nbt.getInteger("press"); - - if(nbt.hasKey("stack")) { - NBTTagCompound stack = nbt.getCompoundTag("stack"); - this.syncStack = ItemStack.loadItemStackFromNBT(stack); - } else { - this.syncStack = null; - } - + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeInt(press); + if (slots[2] == null) + buf.writeShort(-1); // indicate that the NBT doesn't actually exist to avoid null pointer errors. + else + BufferUtil.writeNBT(buf, slots[2].stackTagCompound); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.syncPress = buf.readInt(); + + NBTTagCompound stack = BufferUtil.readNBT(buf); + this.syncStack = ItemStack.loadItemStackFromNBT(stack); + this.turnProgress = 2; } - + public boolean canProcess() { if(power < 100) return false; if(slots[1] == null || slots[2] == null) return false; - + ItemStack output = PressRecipes.getOutput(slots[2], slots[1]); - + if(output == null) return false; - + if(slots[3] == null) return true; if(slots[3].stackSize + output.stackSize <= slots[3].getMaxStackSize() && slots[3].getItem() == output.getItem() && slots[3].getItemDamage() == output.getItemDamage()) return true; return false; } - + private void updateConnections() { - + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } @Override public boolean isItemValidForSlot(int i, ItemStack stack) { - + if(stack.getItem() instanceof ItemStamp) return i == 1; - + return i == 2; } - + @Override public int[] getAccessibleSlotsFromSide(int side) { return new int[] { 1, 2, 3 }; @@ -201,16 +202,16 @@ public class TileEntityMachineEPress extends TileEntityMachineBase implements IE public boolean canExtractItem(int i, ItemStack itemStack, int j) { return i == 3; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - + press = nbt.getInteger("press"); power = nbt.getInteger("power"); isRetracting = nbt.getBoolean("ret"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -223,7 +224,7 @@ public class TileEntityMachineEPress extends TileEntityMachineBase implements IE @Override public void setPower(long i) { power = i; - + } @Override @@ -235,19 +236,19 @@ public class TileEntityMachineEPress extends TileEntityMachineBase implements IE public long getMaxPower() { return maxPower; } - + AxisAlignedBB aabb; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(aabb != null) return aabb; - + aabb = AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 3, zCoord + 1); return aabb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -261,7 +262,7 @@ public class TileEntityMachineEPress extends TileEntityMachineBase implements IE @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineEPress(player.inventory, this); } @@ -279,9 +280,10 @@ public class TileEntityMachineEPress extends TileEntityMachineBase implements IE } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 3; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 3); + return upgrades; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java index 26c2630f7..3f8223d23 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java @@ -1,12 +1,13 @@ package com.hbm.tileentity.machine; +import java.util.HashMap; import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.MachineElectricFurnace; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.container.ContainerElectricFurnace; import com.hbm.inventory.gui.GUIMachineElectricFurnace; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; @@ -21,7 +22,6 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.ISidedInventory; @@ -45,6 +45,8 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl private static final int[] slots_io = new int[] { 0, 1, 2 }; + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + public TileEntityMachineElectricFurnace() { super(4); } @@ -70,7 +72,7 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - + this.power = nbt.getLong("power"); this.progress = nbt.getInteger("progress"); } @@ -115,7 +117,7 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl } public boolean canProcess() { - + if(slots[1] == null || cooldown > 0) { return false; } @@ -168,7 +170,7 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl boolean markDirty = false; if(!worldObj.isRemote) { - + if(cooldown > 0) { cooldown--; } @@ -180,16 +182,16 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl this.consumption = 50; this.maxProgress = 100; - UpgradeManager.eval(slots, 3, 3); + upgradeManager.checkSlots(this, slots, 3, 3); - int speedLevel = UpgradeManager.getLevel(UpgradeType.SPEED); - int powerLevel = UpgradeManager.getLevel(UpgradeType.POWER); + int speedLevel = upgradeManager.getLevel(UpgradeType.SPEED); + int powerLevel = upgradeManager.getLevel(UpgradeType.POWER); maxProgress -= speedLevel * 25; consumption += speedLevel * 50; maxProgress += powerLevel * 10; consumption -= powerLevel * 15; - + if(!hasPower()) { cooldown = 20; } @@ -198,7 +200,7 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl progress++; power -= consumption; - + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND); if(this.progress >= maxProgress) { @@ -220,7 +222,7 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl markDirty = true; MachineElectricFurnace.updateBlockState(this.progress > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); } - + this.networkPackNT(50); @@ -229,7 +231,7 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl } } } - + @Override public void serialize(ByteBuf buf) { super.serialize(buf); @@ -237,7 +239,7 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl buf.writeInt(maxProgress); buf.writeInt(progress); } - + @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); @@ -245,7 +247,7 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl maxProgress = buf.readInt(); progress = buf.readInt(); } - + private void updateConnections() { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) @@ -276,7 +278,7 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineElectricFurnace(player.inventory, this); } @@ -299,9 +301,10 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 3; - if(type == UpgradeType.POWER) return 3; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 3); + upgrades.put(UpgradeType.POWER, 3); + return upgrades; } -} \ No newline at end of file +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java index 3ac1df89a..7a0aa38a4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExcavator.java @@ -1,10 +1,7 @@ package com.hbm.tileentity.machine; import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Random; +import java.util.*; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; @@ -12,7 +9,7 @@ import com.hbm.blocks.generic.BlockBedrockOreTE.TileEntityBedrockOre; import com.hbm.blocks.network.CraneInserter; import com.hbm.entity.item.EntityMovingItem; import com.hbm.interfaces.IControlReceiver; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.container.ContainerMachineExcavator; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; @@ -24,6 +21,7 @@ import com.hbm.items.machine.ItemDrillbit.EnumDrillType; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.items.special.ItemBedrockOreBase; import com.hbm.lib.Library; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; @@ -43,7 +41,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; @@ -60,18 +57,18 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineExcavator extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider { +public class TileEntityMachineExcavator extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider, IFluidCopiable { public static final long maxPower = 1_000_000; public long power; public boolean operational = false; - + public boolean enableDrill = false; public boolean enableCrusher = false; public boolean enableWalling = false; public boolean enableVeinMiner = false; public boolean enableSilkTouch = false; - + protected int ticksWorked = 0; protected int targetDepth = 0; //0 is the first block below null position protected boolean bedrockDrilling = false; @@ -83,13 +80,15 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements public float crusherRotation = 0F; public float prevCrusherRotation = 0F; public int chuteTimer = 0; - + public double speed = 1.0D; public final long baseConsumption = 10_000L; public long consumption = baseConsumption; - + public FluidTank tank; + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + public TileEntityMachineExcavator() { super(14); this.tank = new FluidTank(Fluids.SULFURIC_ACID, 16_000); @@ -102,48 +101,48 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements @Override public void updateEntity() { - + //needs to happen on client too for GUI rendering - UpgradeManager.eval(slots, 2, 3); - int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); - int powerLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); - + upgradeManager.checkSlots(this, slots, 2, 3); + int speedLevel = upgradeManager.getLevel(UpgradeType.SPEED); + int powerLevel = upgradeManager.getLevel(UpgradeType.POWER); + consumption = baseConsumption * (1 + speedLevel); consumption /= (1 + powerLevel); - + if(!worldObj.isRemote) { - + this.tank.setType(1, slots); - + if(worldObj.getTotalWorldTime() % 20 == 0) { tryEjectBuffer(); - + for(DirPos pos : getConPos()) { this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - + if(chuteTimer > 0) chuteTimer--; - + this.power = Library.chargeTEFromItems(slots, 0, this.getPower(), this.getMaxPower()); this.operational = false; - int radiusLevel = Math.min(UpgradeManager.getLevel(UpgradeType.EFFECT), 3); - + int radiusLevel = upgradeManager.getLevel(UpgradeType.EFFECT); + EnumDrillType type = this.getInstalledDrill(); if(this.enableDrill && type != null && this.power >= this.getPowerConsumption()) { - + operational = true; this.power -= this.getPowerConsumption(); - + this.speed = type.speed; this.speed *= (1 + speedLevel / 2D); - + int maxDepth = this.yCoord - 4; if((bedrockDrilling || targetDepth <= maxDepth) && tryDrill(1 + radiusLevel * 2)) { targetDepth++; - + if(targetDepth > maxDepth) { this.enableDrill = false; } @@ -151,17 +150,17 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements } else { this.targetDepth = 0; } - + this.networkPackNT(150); - + } else { - + this.prevDrillExtension = this.drillExtension; - + if(this.drillExtension != this.targetDepth) { float diff = Math.abs(this.drillExtension - this.targetDepth); float speed = Math.max(0.15F, diff / 10F); - + if(diff <= speed) { this.drillExtension = this.targetDepth; } else { @@ -172,31 +171,31 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements this.prevDrillRotation = this.drillRotation; this.prevCrusherRotation = this.crusherRotation; - + if(this.operational) { this.drillRotation += 15F; - + if(this.enableCrusher) { this.crusherRotation += 15F; } } - + if(this.drillRotation >= 360F) { this.drillRotation -= 360F; this.prevDrillRotation -= 360F; } - + if(this.crusherRotation >= 360F) { this.crusherRotation -= 360F; this.prevCrusherRotation -= 360F; } } } - + protected DirPos[] getConPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - + return new DirPos[] { new DirPos(xCoord + dir.offsetX * 4 + rot.offsetX, yCoord + 1, zCoord + dir.offsetZ * 4 + rot.offsetZ, dir), new DirPos(xCoord + dir.offsetX * 4 - rot.offsetX, yCoord + 1, zCoord + dir.offsetZ * 4 - rot.offsetZ, dir), @@ -204,7 +203,7 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements new DirPos(xCoord - rot.offsetX * 4, yCoord + 1, zCoord - rot.offsetZ * 4, rot.getOpposite()) }; } - + @Override public void serialize(ByteBuf buf) { super.serialize(buf); @@ -219,7 +218,7 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements buf.writeLong(power); tank.serialize(buf); } - + @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); @@ -234,11 +233,11 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements power = buf.readLong(); tank.deserialize(buf); } - + protected int getY() { return yCoord - targetDepth - 4; } - + /** Works outwards and tries to break a ring, returns true if all rings are broken (or ignorable) and the drill should extend. */ protected boolean tryDrill(int radius) { int y = getY(); @@ -246,22 +245,22 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements if(targetDepth == 0 || y == 0) { radius = 1; } - + for(int ring = 1; ring <= radius; ring++) { - + boolean ignoreAll = true; float combinedHardness = 0F; BlockPos bedrockOre = null; bedrockDrilling = false; - + for(int x = xCoord - ring; x <= xCoord + ring; x++) { for(int z = zCoord - ring; z <= zCoord + ring; z++) { - + /* Process blocks either if we are in the inner ring (1 = 3x3) or if the target block is on the outer edge */ if(ring == 1 || (x == xCoord - ring || x == xCoord + ring || z == zCoord - ring || z == zCoord + ring)) { - + Block b = worldObj.getBlock(x, y, z); - + if(b == ModBlocks.ore_bedrock) { combinedHardness = 5 * 60 * 20; bedrockOre = new BlockPos(x, y, z); @@ -270,23 +269,23 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements ignoreAll = false; break; } - + if(shouldIgnoreBlock(b, x, y ,z)) continue; - + ignoreAll = false; - + combinedHardness += b.getBlockHardness(worldObj, x, y, z); } } } - + if(!ignoreAll) { ticksWorked++; - + int ticksToWork = (int) Math.ceil(combinedHardness / this.speed); - + if(ticksWorked >= ticksToWork) { - + if(bedrockOre == null) { breakBlocks(ring); buildWall(ring + 1, ring == radius && this.enableWalling); @@ -297,7 +296,7 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements } ticksWorked = 0; } - + return false; } else { tryCollect(radius + 1); @@ -308,26 +307,26 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements ticksWorked = 0; return true; } - + protected void collectBedrock(BlockPos pos) { TileEntity oreTile = Compat.getTileStandard(worldObj, pos.getX(), pos.getY(), pos.getZ()); - + if(oreTile instanceof TileEntityBedrockOre) { TileEntityBedrockOre ore = (TileEntityBedrockOre) oreTile; - + if(ore.resource == null) return; if(ore.tier > this.getInstalledDrill().tier) return; if(ore.acidRequirement != null) { - + if(ore.acidRequirement.type != tank.getTankType() || ore.acidRequirement.fill > tank.getFill()) return; - + tank.setFill(tank.getFill() - ore.acidRequirement.fill); } - + ItemStack stack = ore.resource.copy(); List stacks = new ArrayList(); stacks.add(stack); - + if(stack.getItem() == ModItems.bedrock_ore_base) { ItemBedrockOreBase.setOreAmount(stack, pos.getX(), pos.getZ()); } @@ -337,63 +336,63 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements int x = xCoord + dir.offsetX * 4; int y = yCoord - 3; int z = zCoord + dir.offsetZ * 4; - + /* try to insert into a valid container */ TileEntity tile = worldObj.getTileEntity(x, y, z); if(tile instanceof IInventory) { supplyContainer((IInventory) tile, stacks, dir.getOpposite()); } - + if(stack.stackSize <= 0) return; - + /* try to place on conveyor belt */ Block b = worldObj.getBlock(x, y, z); if(b instanceof IConveyorBelt) { supplyConveyor((IConveyorBelt) b, stacks, x, y, z); } - + if(stack.stackSize <= 0) return; - + for(int i = 5; i < 14; i++) { - + if(slots[i] != null && slots[i].stackSize < slots[i].getMaxStackSize() && stack.isItemEqual(slots[i]) && ItemStack.areItemStackTagsEqual(stack, slots[i])) { int toAdd = Math.min(slots[i].getMaxStackSize() - slots[i].stackSize, stack.stackSize); slots[i].stackSize += toAdd; stack.stackSize -= toAdd; - + chuteTimer = 40; - + if(stack.stackSize <= 0) { return; } } } - + /* add leftovers to empty slots */ for(int i = 5; i < 14; i++) { - + if(slots[i] == null) { - + chuteTimer = 40; - + slots[i] = stack.copy(); return; } } } } - + /** breaks and drops all blocks in the specified ring */ protected void breakBlocks(int ring) { int y = getY(); - + for(int x = xCoord - ring; x <= xCoord + ring; x++) { for(int z = zCoord - ring; z <= zCoord + ring; z++) { - + if(ring == 1 || (x == xCoord - ring || x == xCoord + ring || z == zCoord - ring || z == zCoord + ring)) { - + Block b = worldObj.getBlock(x, y, z); - + if(!this.shouldIgnoreBlock(b, x, y, z)) { tryMineAtLocation(x, y, z); } @@ -401,13 +400,13 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements } } } - + public void tryMineAtLocation(int x ,int y, int z) { Block b = worldObj.getBlock(x, y, z); - + if(this.enableVeinMiner && this.getInstalledDrill().vein) { - + if(isOre(x, y, z, b)) { minX = x; minY = y; @@ -417,51 +416,51 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements maxZ = z; breakRecursively(x, y, z, 10); recursionBrake.clear(); - + /* move all excavated items to the last drillable position which is also within collection range */ List items = worldObj.getEntitiesWithinAABB(EntityItem.class, AxisAlignedBB.getBoundingBox(minX, minY, minZ, maxX + 1, maxY + 1, maxZ + 1)); for(EntityItem item : items) item.setPosition(x + 0.5, y + 0.5, z + 0.5); - + return; } } breakSingleBlock(b, x, y, z); } - + protected boolean isOre(int x ,int y, int z, Block b) { - + /* doing this isn't terribly accurate but just for figuring out if there's OD it works */ Item blockItem = Item.getItemFromBlock(b); - + if(blockItem != null) { List names = ItemStackUtil.getOreDictNames(new ItemStack(blockItem)); - + for(String name : names) { if(name.startsWith("ore")) { return true; } } } - + return false; } - + private HashSet recursionBrake = new HashSet(); private int minX = 0, minY = 0, minZ = 0, maxX = 0, maxY = 0, maxZ = 0; protected void breakRecursively(int x ,int y, int z, int depth) { - + if(depth < 0) return; BlockPos pos = new BlockPos(x, y, z); if(recursionBrake.contains(pos)) return; recursionBrake.add(pos); - + Block b = worldObj.getBlock(x, y, z); - + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { int ix = x + dir.offsetX; int iy = y + dir.offsetY; int iz = z + dir.offsetZ; - + if(worldObj.getBlock(ix, iy, iz) == b) { breakRecursively(ix, iy, iz, depth - 1); } @@ -475,36 +474,36 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements if(y > maxY) maxY = y; if(z < minZ) minZ = z; if(z > maxZ) maxZ = z; - + if(this.enableWalling) { worldObj.setBlock(x, y, z, ModBlocks.barricade); } } - + protected void breakSingleBlock(Block b, int x ,int y, int z) { - + List items = b.getDrops(worldObj, x, y, z, worldObj.getBlockMetadata(x, y, z), this.getFortuneLevel()); - + if(this.canSilkTouch()) { - + try { Method createStackedBlock = ReflectionHelper.findMethod(Block.class, b, new String[] {"createStackedBlock", "func_149644_j"}, int.class); ItemStack result = (ItemStack) createStackedBlock.invoke(b, worldObj.getBlockMetadata(x, y, z)); - + if(result != null) { items.clear(); items.add(result.copy()); } } catch(Exception ex) { } } - + if(this.enableCrusher) { - + List list = new ArrayList(); - + for(ItemStack stack : items) { ItemStack crushed = ShredderRecipes.getShredderResult(stack).copy(); - + if(crushed.getItem() == ModItems.scrap || crushed.getItem() == ModItems.dust) { list.add(stack); } else { @@ -512,36 +511,36 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements list.add(crushed); } } - + items = list; } - + if(b == ModBlocks.barricade) items.clear(); - + for(ItemStack item : items) { worldObj.spawnEntityInWorld(new EntityItem(worldObj, x + 0.5, y + 0.5, z + 0.5, item)); } - + worldObj.func_147480_a(x, y, z, false); } - + /** builds a wall along the specified ring, replacing fluid blocks. if wallEverything is set, it will also wall off replacable blocks like air or grass */ protected void buildWall(int ring, boolean wallEverything) { int y = getY(); - + for(int x = xCoord - ring; x <= xCoord + ring; x++) { for(int z = zCoord - ring; z <= zCoord + ring; z++) { - + Block b = worldObj.getBlock(x, y, z); - + if(x == xCoord - ring || x == xCoord + ring || z == zCoord - ring || z == zCoord + ring) { - + if(b.isReplaceable(worldObj, x, y, z) && (wallEverything || b.getMaterial().isLiquid())) { worldObj.setBlock(x, y, z, ModBlocks.barricade); } } else { - + if(b.getMaterial().isLiquid()) { worldObj.setBlockToAir(x, y, z); continue; @@ -552,14 +551,14 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements } protected void mineOuterOres(int ring) { int y = getY(); - + for(int x = xCoord - ring; x <= xCoord + ring; x++) { for(int z = zCoord - ring; z <= zCoord + ring; z++) { - + if(ring == 1 || (x == xCoord - ring || x == xCoord + ring || z == zCoord - ring || z == zCoord + ring)) { - + Block b = worldObj.getBlock(x, y, z); - + if(!this.shouldIgnoreBlock(b, x, y, z) && this.isOre(x, y, z, b)) { tryMineAtLocation(x, y, z); } @@ -567,7 +566,7 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements } } } - + protected void tryEjectBuffer() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); @@ -575,32 +574,32 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements int x = xCoord + dir.offsetX * 4; int y = yCoord - 3; int z = zCoord + dir.offsetZ * 4; - + List items = new ArrayList(); for(int i = 5; i < 14; i++) { ItemStack stack = slots[i]; - + if(stack != null) { items.add(stack.copy()); } } - + TileEntity tile = worldObj.getTileEntity(x, y, z); if(tile instanceof IInventory) { supplyContainer((IInventory) tile, items, dir.getOpposite()); } - + Block b = worldObj.getBlock(x, y, z); if(b instanceof IConveyorBelt) { supplyConveyor((IConveyorBelt) b, items, x, y, z); } - + items.removeIf(i -> i == null || i.stackSize <= 0); for(int i = 5; i < 14; i++) { int index = i - 5; - + if(items.size() > index) { slots[i] = items.get(index).copy(); } else { @@ -608,66 +607,67 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements } } } - + /** pulls up an AABB around the drillbit and tries to either conveyor output or buffer collected items */ protected void tryCollect(int radius) { int yLevel = getY(); - + List items = worldObj.getEntitiesWithinAABB(EntityItem.class, AxisAlignedBB.getBoundingBox(xCoord - radius, yLevel - 1, zCoord - radius, xCoord + radius + 1, yLevel + 2, zCoord + radius + 1)); - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); int x = xCoord + dir.offsetX * 4; int y = yCoord - 3; int z = zCoord + dir.offsetZ * 4; - + List stacks = new ArrayList(); - items.forEach(i -> stacks.add(i.getEntityItem())); - + items.forEach(i -> { if(!i.isDead) stacks.add(i.getEntityItem());}); + /* try to insert into a valid container */ TileEntity tile = worldObj.getTileEntity(x, y, z); if(tile instanceof IInventory) { supplyContainer((IInventory) tile, stacks, dir.getOpposite()); } - + /* try to place on conveyor belt */ Block b = worldObj.getBlock(x, y, z); if(b instanceof IConveyorBelt) { supplyConveyor((IConveyorBelt) b, stacks, x, y, z); } - + items.removeIf(i -> i.isDead || i.getEntityItem().stackSize <= 0); - + /* collect remaining items in internal buffer */ outer: for(EntityItem item : items) { - + if(item.isDead) continue; + ItemStack stack = item.getEntityItem(); - + /* adding items to existing stacks */ for(int i = 5; i < 14; i++) { - + if(slots[i] != null && slots[i].stackSize < slots[i].getMaxStackSize() && stack.isItemEqual(slots[i]) && ItemStack.areItemStackTagsEqual(stack, slots[i])) { int toAdd = Math.min(slots[i].getMaxStackSize() - slots[i].stackSize, stack.stackSize); slots[i].stackSize += toAdd; stack.stackSize -= toAdd; - + chuteTimer = 40; - + if(stack.stackSize <= 0) { item.setDead(); continue outer; } } } - + /* add leftovers to empty slots */ for(int i = 5; i < 14; i++) { - + if(slots[i] == null) { - + chuteTimer = 40; - + slots[i] = stack.copy(); item.setDead(); break; @@ -675,60 +675,60 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements } } } - + /** places all items into a connected container, if possible */ protected void supplyContainer(IInventory inv, List items, ForgeDirection dir) { - + int side = dir.ordinal(); int[] access = null; - + if(inv instanceof ISidedInventory) { ISidedInventory sided = (ISidedInventory) inv; access = InventoryUtil.masquerade(sided, dir.ordinal()); } - + for(ItemStack item : items) { - + if(item.stackSize <= 0) continue; - + CraneInserter.addToInventory(inv, access, item, side); chuteTimer = 40; } } - + /** moves all items onto a connected conveyor belt */ protected void supplyConveyor(IConveyorBelt belt, List items, int x, int y, int z) { - + Random rand = worldObj.rand; - + for(ItemStack item : items) { - + if(item.stackSize <= 0) continue; - + Vec3 base = Vec3.createVectorHelper(x + rand.nextDouble(), y + 0.5, z + rand.nextDouble()); Vec3 vec = belt.getClosestSnappingPosition(worldObj, x, y, z, base); - + EntityMovingItem moving = new EntityMovingItem(worldObj); moving.setPosition(base.xCoord, vec.yCoord, base.zCoord); moving.setItemStack(item.copy()); worldObj.spawnEntityInWorld(moving); item.stackSize = 0; - + chuteTimer = 40; } } - + public long getPowerConsumption() { return consumption; } - + public int getFortuneLevel() { EnumDrillType type = getInstalledDrill(); - + if(type != null) return type.fortune; return 0; } - + public boolean shouldIgnoreBlock(Block block, int x, int y, int z) { return block.isAir(worldObj, x, y, z) || block.getMaterial() == ModBlocks.materialGas || block.getBlockHardness(worldObj, x, y, z) < 0 || block.getMaterial().isLiquid() || block == Blocks.bedrock; } @@ -740,32 +740,32 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements if(data.hasKey("walling")) this.enableWalling = !this.enableWalling; if(data.hasKey("veinminer")) this.enableVeinMiner = !this.enableVeinMiner; if(data.hasKey("silktouch")) this.enableSilkTouch = !this.enableSilkTouch; - + this.markChanged(); } - + public EnumDrillType getInstalledDrill() { if(slots[4] != null && slots[4].getItem() instanceof ItemDrillbit) { return EnumUtil.grabEnumSafely(EnumDrillType.class, slots[4].getItemDamage()); } - + return null; } - + public boolean canVeinMine() { EnumDrillType type = getInstalledDrill(); return this.enableVeinMiner && type != null && type.vein; } - + public boolean canSilkTouch() { EnumDrillType type = getInstalledDrill(); return this.enableSilkTouch && type != null && type.silk; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - + this.enableDrill = nbt.getBoolean("d"); this.enableCrusher = nbt.getBoolean("c"); this.enableWalling = nbt.getBoolean("w"); @@ -775,11 +775,11 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements this.power = nbt.getLong("p"); this.tank.readFromNBT(nbt, "tank"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + nbt.setBoolean("d", enableDrill); nbt.setBoolean("c", enableCrusher); nbt.setBoolean("w", enableWalling); @@ -802,15 +802,15 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineExcavator(player.inventory, this); } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 3, @@ -821,10 +821,10 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements zCoord + 4 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -874,9 +874,16 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 3; - if(type == UpgradeType.POWER) return 3; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 3); + upgrades.put(UpgradeType.POWER, 3); + upgrades.put(UpgradeType.EFFECT, 3); + return upgrades; + } + + @Override + public FluidTank getTankToPaste() { + return tank; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java index d733720ba..77ac2635a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineExposureChamber.java @@ -1,9 +1,10 @@ package com.hbm.tileentity.machine; +import java.util.HashMap; import java.util.List; import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.container.ContainerMachineExposureChamber; import com.hbm.inventory.gui.GUIMachineExposureChamber; import com.hbm.inventory.recipes.ExposureChamberRecipes; @@ -21,7 +22,6 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -32,10 +32,10 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; public class TileEntityMachineExposureChamber extends TileEntityMachineBase implements IGUIProvider, IEnergyReceiverMK2, IUpgradeInfoProvider { - + public long power; public static final long maxPower = 1_000_000; - + public int progress; public static final int processTimeBase = 200; public int processTime = processTimeBase; @@ -46,7 +46,9 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl public boolean isOn = false; public float rotation; public float prevRotation; - + + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -54,7 +56,7 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl this.power = nbt.getLong("power"); this.savedParticles = nbt.getInteger("savedParticles"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -83,39 +85,39 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + this.isOn = false; this.power = Library.chargeTEFromItems(slots, 5, power, maxPower); - + if(worldObj.getTotalWorldTime() % 20 == 0) { for(DirPos pos : getConPos()) this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - - UpgradeManager.eval(slots, 6, 7); - int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); - int powerLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); - int overdriveLevel = Math.min(UpgradeManager.getLevel(UpgradeType.OVERDRIVE), 3); - + + upgradeManager.checkSlots(this, slots, 6, 7); + int speedLevel = upgradeManager.getLevel(UpgradeType.SPEED); + int powerLevel = upgradeManager.getLevel(UpgradeType.POWER); + int overdriveLevel = upgradeManager.getLevel(UpgradeType.OVERDRIVE); + this.consumption = this.consumptionBase; - + this.processTime = this.processTimeBase - this.processTimeBase / 4 * speedLevel; this.consumption *= (speedLevel / 2 + 1); this.processTime *= (powerLevel / 2 + 1); this.consumption /= (powerLevel + 1); this.processTime /= (overdriveLevel + 1); this.consumption *= (overdriveLevel * 2 + 1); - + if(slots[1] == null && slots[0] != null && slots[3] != null && this.savedParticles <= 0) { ExposureChamberRecipe recipe = this.getRecipe(slots[0], slots[3]); - + if(recipe != null) { - + ItemStack container = slots[0].getItem().getContainerItem(slots[0]); - + boolean canStore = false; - + if(container == null) { canStore = true; } else if(slots[2] == null) { @@ -125,7 +127,7 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl slots[2].stackSize++; canStore = true; } - + if(canStore) { slots[1] = slots[0].copy(); slots[1].stackSize = 0; @@ -134,47 +136,47 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl } } } - + if(slots[1] != null && this.savedParticles > 0 && this.power >= this.consumption) { ExposureChamberRecipe recipe = this.getRecipe(slots[1], slots[3]); - + if(recipe != null && (slots[4] == null || (slots[4].getItem() == recipe.output.getItem() && slots[4].getItemDamage() == recipe.output.getItemDamage() && slots[4].stackSize + recipe.output.stackSize <= slots[4].getMaxStackSize()))) { this.progress++; this.power -= this.consumption; this.isOn = true; - + if(this.progress >= this.processTime) { this.progress = 0; this.savedParticles--; this.decrStackSize(3, 1); - + if(slots[4] == null) { slots[4] = recipe.output.copy(); } else { slots[4].stackSize += recipe.output.stackSize; } } - + } else { this.progress = 0; } } else { this.progress = 0; } - + if(this.savedParticles <= 0) { slots[1] = null; } - + this.networkPackNT(50); } else { - + this.prevRotation = this.rotation; - + if(this.isOn) { - + this.rotation += 10D; - + if(this.rotation >= 720D) { this.rotation -= 720D; this.prevRotation -= 720D; @@ -182,7 +184,7 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl } } } - + public DirPos[] getConPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.UP).getOpposite(); @@ -194,44 +196,44 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl new DirPos(xCoord + rot.offsetX * 9, yCoord, zCoord + rot.offsetZ * 9, rot) }; } - + public ExposureChamberRecipe getRecipe(ItemStack particle, ItemStack ingredient) { return ExposureChamberRecipes.getRecipe(particle, ingredient); } @Override public boolean isItemValidForSlot(int i, ItemStack stack) { - + //will only load new capsules if there's no cached particles, this should prevent clogging //accept items when the slots are already partially filled, i.e. applicable if(i == 0 && slots[0] != null) return true; if(i == 3 && slots[3] != null) return true; - + //if there's no particle stored, use the un-consumed capsule for reference ItemStack particle = slots[1] != null ? slots[1] : slots[0]; - + //if no particle is loaded and an ingot is present if(i == 0 && particle == null && slots[3] != null) { ExposureChamberRecipe recipe = getRecipe(stack, slots[3]); return recipe != null; } - + //if a particle is loaded but no ingot present if(i == 3 && particle != null && slots[3] == null) { ExposureChamberRecipe recipe = getRecipe(slots[0], stack); return recipe != null; } - + //if there's nothing at all, find a reference recipe and see if the item matches anything if(particle == null && slots[3] == null) { - + for(ExposureChamberRecipe recipe : ExposureChamberRecipes.recipes) { if(i == 0 && recipe.particle.matchesRecipe(stack, true)) return true; - if(i == 3 && recipe.ingredient.matchesRecipe(stack, true)) return true; + if(i == 3 && recipe.ingredient.matchesRecipe(stack, true)) return true; } } - + return false; } @@ -254,7 +256,7 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl buf.writeLong(this.power); buf.writeByte((byte) this.savedParticles); } - + @Override public void deserialize(ByteBuf buf) { this.isOn = buf.readBoolean(); @@ -281,10 +283,10 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl } AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 8, @@ -295,10 +297,10 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl zCoord + 9 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -312,7 +314,7 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineExposureChamber(player.inventory, this); } @@ -338,10 +340,11 @@ public class TileEntityMachineExposureChamber extends TileEntityMachineBase impl } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 3; - if(type == UpgradeType.POWER) return 3; - if(type == UpgradeType.OVERDRIVE) return 3; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 3); + upgrades.put(UpgradeType.POWER, 3); + upgrades.put(UpgradeType.OVERDRIVE, 3); + return upgrades; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java index 23ec51164..7243f1802 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineFunnel.java @@ -13,7 +13,6 @@ import com.hbm.tileentity.machine.TileEntityMachineAutocrafter.InventoryCrafting import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.InventoryCrafting; @@ -162,7 +161,7 @@ public class TileEntityMachineFunnel extends TileEntityMachineBase implements IG @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIFunnel(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java index b3179241c..62e76ae0e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java @@ -11,8 +11,8 @@ import com.hbm.inventory.recipes.GasCentrifugeRecipes.PseudoFluidType; import com.hbm.items.ModItems; import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.lib.Library; -import com.hbm.packet.LoopedSoundPacket; -import com.hbm.packet.PacketDispatcher; +import com.hbm.main.MainRegistry; +import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.BufferUtil; @@ -23,68 +23,70 @@ import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.tile.IInfoProviderEC; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -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.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; //epic! public class TileEntityMachineGasCent extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IInfoProviderEC { - + public long power; public int progress; public boolean isProgressing; public static final int maxPower = 100000; public static final int processingSpeed = 150; - + public FluidTank tank; public PseudoFluidTank inputTank; public PseudoFluidTank outputTank; - + + private int audioDuration = 0; + private AudioWrapper audio; + private static final int[] slots_io = new int[] { 0, 1, 2, 3 }; - + public TileEntityMachineGasCent() { - super(7); + super(7); tank = new FluidTank(Fluids.UF6, 2000); inputTank = new PseudoFluidTank(PseudoFluidType.NUF6, 8000); outputTank = new PseudoFluidTank(PseudoFluidType.LEUF6, 8000); } - + @Override public String getName() { return "container.gasCentrifuge"; } - + @Override public boolean canExtractItem(int i, ItemStack itemStack, int j) { return i < 4; } - + @Override public int[] getAccessibleSlotsFromSide(int side) { return slots_io; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - + power = nbt.getLong("power"); progress = nbt.getShort("progress"); tank.readFromNBT(nbt, "tank"); inputTank.readFromNBT(nbt, "inputTank"); outputTank.readFromNBT(nbt, "outputTank"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -94,127 +96,127 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I inputTank.writeToNBT(nbt, "inputTank"); outputTank.writeToNBT(nbt, "outputTank"); } - + public int getCentrifugeProgressScaled(int i) { return (progress * i) / getProcessingSpeed(); } - + public long getPowerRemainingScaled(int i) { return (power * i) / maxPower; } - + private boolean canEnrich() { if(power > 0 && this.inputTank.getFill() >= inputTank.getTankType().getFluidConsumed() && this.outputTank.getFill() + this.inputTank.getTankType().getFluidProduced() <= outputTank.getMaxFill()) { - + ItemStack[] list = inputTank.getTankType().getOutput(); - + if(this.inputTank.getTankType().getIfHighSpeed()) if(!(slots[6] != null && slots[6].getItem() == ModItems.upgrade_gc_speed)) return false; - + if(list == null) return false; - + if(list.length < 1) return false; - + if(InventoryUtil.doesArrayHaveSpace(slots, 0, 3, list)) return true; } - + return false; } - + private void enrich() { ItemStack[] output = inputTank.getTankType().getOutput(); - + this.progress = 0; - inputTank.setFill(inputTank.getFill() - inputTank.getTankType().getFluidConsumed()); - outputTank.setFill(outputTank.getFill() + inputTank.getTankType().getFluidProduced()); - + inputTank.setFill(inputTank.getFill() - inputTank.getTankType().getFluidConsumed()); + outputTank.setFill(outputTank.getFill() + inputTank.getTankType().getFluidProduced()); + for(byte i = 0; i < output.length; i++) InventoryUtil.tryAddItemToInventory(slots, 0, 3, output[i].copy()); //reference types almost got me again } - + private void attemptConversion() { if(inputTank.getFill() < inputTank.getMaxFill() && tank.getFill() > 0) { int fill = Math.min(inputTank.getMaxFill() - inputTank.getFill(), tank.getFill()); - + tank.setFill(tank.getFill() - fill); inputTank.setFill(inputTank.getFill() + fill); } } - + private boolean attemptTransfer(TileEntity te) { if(te instanceof TileEntityMachineGasCent) { TileEntityMachineGasCent cent = (TileEntityMachineGasCent) te; - + if(cent.tank.getFill() == 0 && cent.tank.getTankType() == tank.getTankType()) { if(cent.inputTank.getTankType() != outputTank.getTankType() && outputTank.getTankType() != PseudoFluidType.NONE) { cent.inputTank.setTankType(outputTank.getTankType()); cent.outputTank.setTankType(outputTank.getTankType().getOutputType()); } - + //God, why did I forget about the entirety of the fucking math library? if(cent.inputTank.getFill() < cent.inputTank.getMaxFill() && outputTank.getFill() > 0) { int fill = Math.min(cent.inputTank.getMaxFill() - cent.inputTank.getFill(), outputTank.getFill()); - + outputTank.setFill(outputTank.getFill() - fill); cent.inputTank.setFill(cent.inputTank.getFill() + fill); } - + return true; } } - + return false; } - + @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + updateConnections(); power = Library.chargeTEFromItems(slots, 4, power, maxPower); setTankType(5); - + if(GasCentrifugeRecipes.fluidConversions.containsValue(inputTank.getTankType())) { attemptConversion(); } - + if(canEnrich()) { - + isProgressing = true; this.progress++; - + if(slots[6] != null && slots[6].getItem() == ModItems.upgrade_gc_speed) this.power -= 300; else this.power -= 200; - + if(this.power < 0) { power = 0; this.progress = 0; } - + if(progress >= getProcessingSpeed()) enrich(); - + } else { isProgressing = false; this.progress = 0; } - + if(worldObj.getTotalWorldTime() % 10 == 0) { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); TileEntity te = worldObj.getTileEntity(this.xCoord - dir.offsetX, this.yCoord, this.zCoord - dir.offsetZ); - + //*AT THE MOMENT*, there's not really any need for a dedicated method for this. Yet. if(!attemptTransfer(te) && this.inputTank.getTankType() == PseudoFluidType.LEUF6) { ItemStack[] converted = new ItemStack[] { new ItemStack(ModItems.nugget_uranium_fuel, 6), new ItemStack(ModItems.fluorite) }; - + if(this.outputTank.getFill() >= 600 && InventoryUtil.doesArrayHaveSpace(slots, 0, 3, converted)) { this.outputTank.setFill(this.outputTank.getFill() - 600); for(ItemStack stack : converted) @@ -222,13 +224,46 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I } } } - + this.networkPackNT(50); - PacketDispatcher.wrapper.sendToAllAround(new LoopedSoundPacket(xCoord, yCoord, zCoord), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); + } else { + + if(isProgressing) { + audioDuration += 2; + } else { + audioDuration -= 3; + } + + audioDuration = MathHelper.clamp_int(audioDuration, 0, 60); + + if(audioDuration > 10) { + + if(audio == null) { + audio = createAudioLoop(); + audio.startSound(); + } else if(!audio.isPlaying()) { + audio = rebootAudio(audio); + } + + audio.updateVolume(getVolume(1F)); + audio.updatePitch((audioDuration - 10) / 100F + 0.5F); + + } else { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } } } - + + @Override + public AudioWrapper createAudioLoop() { + return MainRegistry.proxy.getLoopedSound("hbm:block.centrifugeOperate", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F); + } + @Override public void serialize(ByteBuf buf) { super.serialize(buf); @@ -240,35 +275,35 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I buf.writeInt(outputTank.getFill()); BufferUtil.writeString(buf, inputTank.getTankType().name); //cough cough BufferUtil.writeString(buf, outputTank.getTankType().name); - + tank.serialize(buf); } - + @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); power = buf.readLong(); progress = buf.readInt(); isProgressing = buf.readBoolean(); - + inputTank.setFill(buf.readInt()); outputTank.setFill(buf.readInt()); inputTank.setTankType(PseudoFluidType.types.get(BufferUtil.readString(buf))); outputTank.setTankType(PseudoFluidType.types.get(BufferUtil.readString(buf))); - + tank.deserialize(buf); } - + private void updateConnections() { for(DirPos pos : getConPos()) { this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - + if(GasCentrifugeRecipes.fluidConversions.containsValue(inputTank.getTankType())) { this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } } - + private DirPos[] getConPos() { return new DirPos[] { new DirPos(xCoord, yCoord - 1, zCoord, Library.NEG_Y), @@ -287,40 +322,40 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I @Override public long getPower() { return power; - + } @Override public long getMaxPower() { return maxPower; } - + public int getProcessingSpeed() { if(slots[6] != null && slots[6].getItem() == ModItems.upgrade_gc_speed) { return processingSpeed - 70; } return processingSpeed; } - + public void setTankType(int in) { - + if(slots[in] != null && slots[in].getItem() instanceof IItemFluidIdentifier) { IItemFluidIdentifier id = (IItemFluidIdentifier) slots[in].getItem(); FluidType newType = id.getType(worldObj, xCoord, yCoord, zCoord, slots[in]); - + if(tank.getTankType() != newType) { PseudoFluidType pseudo = GasCentrifugeRecipes.fluidConversions.get(newType); - + if(pseudo != null) { inputTank.setTankType(pseudo); outputTank.setTankType(pseudo.getOutputType()); tank.setTankType(newType); } } - + } } - + @Override public FluidTank[] getReceivingTanks() { return new FluidTank[] { tank }; @@ -330,71 +365,71 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I public FluidTank[] getAllTanks() { return new FluidTank[] { tank }; } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 5, zCoord + 1); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { return 65536.0D; } - + public class PseudoFluidTank { PseudoFluidType type; int fluid; int maxFluid; - + public PseudoFluidTank(PseudoFluidType type, int maxFluid) { this.type = type; this.maxFluid = maxFluid; } - + public void setFill(int i) { fluid = i; } - + public void setTankType(PseudoFluidType type) { - + if(this.type.equals(type)) return; - + if(type == null) this.type = PseudoFluidType.NONE; else this.type = type; - + this.setFill(0); } - + public PseudoFluidType getTankType() { return type; } - + public int getFill() { return fluid; } - + public int getMaxFill() { return maxFluid; } - + //Called by TE to save fillstate public void writeToNBT(NBTTagCompound nbt, String s) { nbt.setInteger(s, fluid); nbt.setInteger(s + "_max", maxFluid); nbt.setString(s + "_type", type.name); } - + //Called by TE to load fillstate public void readFromNBT(NBTTagCompound nbt, String s) { fluid = nbt.getInteger(s); @@ -403,7 +438,7 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I type = PseudoFluidType.types.get(nbt.getString(s + "_type")); if(type == null) type = PseudoFluidType.NONE; } - + /* ______ ______ * _I____I_ _I____I_ * / \\\ / \\\ @@ -461,7 +496,7 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineGasCent(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineHephaestus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineHephaestus.java index eb22b3289..3453ef320 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineHephaestus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineHephaestus.java @@ -10,25 +10,28 @@ import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingType; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.IBufPacketReceiver; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineHephaestus extends TileEntityLoadedBase implements INBTPacketReceiver, IFluidStandardTransceiver { +public class TileEntityMachineHephaestus extends TileEntityLoadedBase implements IBufPacketReceiver, IFluidStandardTransceiver, IFluidCopiable { public FluidTank input; public FluidTank output; public int bufferedHeat; - + public float rot; public float prevRot; @@ -36,29 +39,35 @@ public class TileEntityMachineHephaestus extends TileEntityLoadedBase implements this.input = new FluidTank(Fluids.OIL, 24_000); this.output = new FluidTank(Fluids.HOTOIL, 24_000); } - + private int[] heat = new int[10]; private long fissureScanTime; private AudioWrapper audio; - + + ByteBuf buf; + @Override public void updateEntity() { if(!worldObj.isRemote) { - + + if(this.buf != null) + this.buf.release(); + this.buf = Unpooled.buffer(); + setupTanks(); - + if(worldObj.getTotalWorldTime() % 20 == 0) { this.updateConnections(); } - + int height = (int) (worldObj.getTotalWorldTime() % 10); int range = 7; int y = yCoord - 1 - height; - + heat[height] = 0; - + if(y >= 0) { for(int x = -range; x <= range; x++) { for(int z = -range; z <= range; z++) { @@ -66,29 +75,28 @@ public class TileEntityMachineHephaestus extends TileEntityLoadedBase implements } } } - - NBTTagCompound data = new NBTTagCompound(); - input.writeToNBT(data, "i"); - + + input.serialize(buf); + heatFluid(); - - output.writeToNBT(data, "o"); - + + output.serialize(buf); + if(output.getFill() > 0) { for(DirPos pos : getConPos()) { this.sendFluid(output, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - data.setInteger("heat", this.getTotalHeat()); - INBTPacketReceiver.networkPack(this, data, 150); - + buf.writeInt(this.getTotalHeat()); + networkPackNT(150); + } else { - + this.prevRot = this.rot; - + if(this.bufferedHeat > 0) { this.rot += 0.5F; - + if(worldObj.rand.nextInt(7) == 0) { double x = worldObj.rand.nextGaussian() * 2; double y = worldObj.rand.nextGaussian() * 3; @@ -106,23 +114,23 @@ public class TileEntityMachineHephaestus extends TileEntityLoadedBase implements audio = null; } } - + if(this.rot >= 360F) { this.prevRot -= 360F; this.rot -= 360F; } } } - + protected void heatFluid() { - + FluidType type = input.getTankType(); - + if(type.hasTrait(FT_Heatable.class)) { FT_Heatable trait = type.getTrait(FT_Heatable.class); int heat = this.getTotalHeat(); HeatingStep step = trait.getFirstStep(); - + int inputOps = input.getFill() / step.amountReq; int outputOps = (output.getMaxFill() - output.getFill()) / step.amountProduced; int heatOps = heat / step.heatReq; @@ -133,14 +141,14 @@ public class TileEntityMachineHephaestus extends TileEntityLoadedBase implements worldObj.markTileEntityChunkModified(xCoord, yCoord, zCoord, this); } } - + protected void setupTanks() { - + FluidType type = input.getTankType(); - + if(type.hasTrait(FT_Heatable.class)) { FT_Heatable trait = type.getTrait(FT_Heatable.class); - + if(trait.getEfficiency(HeatingType.HEATEXCHANGER) > 0) { FluidType outType = trait.getFirstStep().typeProduced; output.setTankType(outType); @@ -151,55 +159,60 @@ public class TileEntityMachineHephaestus extends TileEntityLoadedBase implements input.setTankType(Fluids.NONE); output.setTankType(Fluids.NONE); } - + protected int heatFromBlock(int x, int y, int z) { Block b = worldObj.getBlock(x, y, z); - + if(b == Blocks.lava || b == Blocks.flowing_lava) return 5; if(b == ModBlocks.volcanic_lava_block) return 150; - + if(b == ModBlocks.ore_volcano) { this.fissureScanTime = worldObj.getTotalWorldTime(); return 300; } - + return 0; } - + public int getTotalHeat() { boolean fissure = worldObj.getTotalWorldTime() - this.fissureScanTime < 20; int heat = 0; - + for(int h : this.heat) { heat += h; } - + if(fissure) { heat *= 3; } - + return heat; } @Override - public void networkUnpack(NBTTagCompound nbt) { - input.readFromNBT(nbt, "i"); - output.readFromNBT(nbt, "o"); - - this.bufferedHeat = nbt.getInteger("heat"); + public void serialize(ByteBuf buf) { + buf.writeBytes(this.buf); } - + + @Override + public void deserialize(ByteBuf buf) { + input.deserialize(buf); + output.deserialize(buf); + + this.bufferedHeat = buf.readInt(); + } + private void updateConnections() { - + if(input.getTankType() == Fluids.NONE) return; - + for(DirPos pos : getConPos()) { this.trySubscribe(input.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - + private DirPos[] getConPos() { - + return new DirPos[] { new DirPos(xCoord + 2, yCoord, zCoord, Library.POS_X), new DirPos(xCoord - 2, yCoord, zCoord, Library.NEG_X), @@ -211,7 +224,7 @@ public class TileEntityMachineHephaestus extends TileEntityLoadedBase implements new DirPos(xCoord, yCoord + 11, zCoord - 2, Library.NEG_Z) }; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -219,7 +232,7 @@ public class TileEntityMachineHephaestus extends TileEntityLoadedBase implements this.input.readFromNBT(nbt, "0"); this.output.readFromNBT(nbt, "1"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -242,12 +255,12 @@ public class TileEntityMachineHephaestus extends TileEntityLoadedBase implements public FluidTank[] getReceivingTanks() { return new FluidTank[] {input}; } - + @Override public boolean canConnect(FluidType type, ForgeDirection dir) { return dir != ForgeDirection.UNKNOWN && dir != ForgeDirection.UP && dir != ForgeDirection.DOWN; } - + @Override public void onChunkUnload() { super.onChunkUnload(); @@ -267,12 +280,12 @@ public class TileEntityMachineHephaestus extends TileEntityLoadedBase implements audio = null; } } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 3, @@ -283,10 +296,10 @@ public class TileEntityMachineHephaestus extends TileEntityLoadedBase implements zCoord + 4 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java index 7996973c8..34dbf6200 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java @@ -16,7 +16,6 @@ import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.tile.IInfoProviderEC; 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; @@ -222,15 +221,18 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement return new int[] { 3, 4, 5, 6 }; } + // o7 + /* @Override public void networkUnpack(NBTTagCompound nbt) { super.networkUnpack(nbt); - + this.power = nbt.getLong("power"); this.spin = nbt.getInteger("spin"); this.burn = nbt.getIntArray("burn"); this.hasRTG = nbt.getBoolean("hasRTG"); } + */ public int getPowerFromFuel(boolean con) { FluidType type = tanks[1].getTankType(); @@ -287,7 +289,7 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIIGenerator(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineKeyForge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineKeyForge.java index 67016d814..59d6f43bf 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineKeyForge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineKeyForge.java @@ -2,14 +2,11 @@ package com.hbm.tileentity.machine; import com.hbm.inventory.container.ContainerMachineKeyForge; import com.hbm.inventory.gui.GUIMachineKeyForge; -import com.hbm.items.ItemAmmoEnums.Ammo4Gauge; -import com.hbm.items.ModItems; import com.hbm.items.tool.ItemKeyPin; import com.hbm.tileentity.IGUIProvider; 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.inventory.ISidedInventory; @@ -191,11 +188,6 @@ public class TileEntityMachineKeyForge extends TileEntity implements ISidedInven if(slots[2] != null && slots[2].getItem() instanceof ItemKeyPin && ((ItemKeyPin)slots[2].getItem()).canTransfer()) { ItemKeyPin.setPins(slots[2], worldObj.rand.nextInt(900) + 100); } - - //DEBUG, remove later - if(slots[2] != null && slots[2].getItem() == ModItems.ammo_4gauge) { - slots[2] = ModItems.ammo_4gauge.stackFromEnum(slots[2].stackSize, Ammo4Gauge.QUACK); - } } } @@ -206,7 +198,7 @@ public class TileEntityMachineKeyForge extends TileEntity implements ISidedInven @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineKeyForge(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLPW2.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLPW2.java new file mode 100644 index 000000000..5a6eed357 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLPW2.java @@ -0,0 +1,23 @@ +package com.hbm.tileentity.machine; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; + +public class TileEntityMachineLPW2 extends TileEntity { + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + if(bb == null) bb = AxisAlignedBB.getBoundingBox(xCoord - 10, yCoord, zCoord - 10, xCoord + 11, yCoord + 7, zCoord + 11); + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java index ba32528da..060710858 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java @@ -17,6 +17,7 @@ import com.hbm.inventory.gui.GUIMachineLargeTurbine; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; @@ -29,11 +30,11 @@ import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; 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; import net.minecraft.nbt.NBTTagCompound; @@ -43,7 +44,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent, IConfigurableMachine { +public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent, IConfigurableMachine, IFluidCopiable { public long power; public FluidTank[] tanks; @@ -102,6 +103,8 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme return "container.machineLargeTurbine"; } + private boolean operational; + @Override public void updateEntity() { @@ -117,9 +120,7 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme tanks[0].setType(0, 1, slots); tanks[0].loadTank(2, 3, slots); power = Library.chargeItemsFromTE(slots, 4, power, maxPower); - - boolean operational = false; - + FluidType in = tanks[0].getTankType(); boolean valid = false; if(in.hasTrait(FT_Coolable.class)) { @@ -145,13 +146,9 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme if(power > maxPower) power = maxPower; tanks[1].unloadTank(5, 6, slots); - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setBoolean("operational", operational); - tanks[0].writeToNBT(data, "t0"); - tanks[1].writeToNBT(data, "t1"); - this.networkPack(data, 50); + + this.networkPackNT(50); + } else { this.lastRotor = this.rotor; this.rotor += this.fanAcceleration; @@ -199,14 +196,23 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme new DirPos(xCoord + dir.offsetX * 2, yCoord, zCoord + dir.offsetZ * 2, dir) }; } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.power = data.getLong("power"); - this.shouldTurn = data.getBoolean("operational"); - tanks[0].readFromNBT(data, "t0"); - tanks[1].readFromNBT(data, "t1"); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + buf.writeBoolean(operational); + tanks[0].serialize(buf); + tanks[1].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.shouldTurn = buf.readBoolean(); + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); } public long getPowerScaled(int i) { @@ -355,7 +361,7 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineLargeTurbine(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java index e5ad38a1b..6dff13040 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java @@ -1,11 +1,12 @@ package com.hbm.tileentity.machine; +import java.util.HashMap; import java.util.List; import java.util.Set; import com.google.common.collect.Sets; import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.container.ContainerMiningLaser; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; @@ -31,8 +32,8 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardSender; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -51,7 +52,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; public class TileEntityMachineMiningLaser extends TileEntityMachineBase implements IEnergyReceiverMK2, IMiningDrill, IFluidStandardSender, IGUIProvider, IUpgradeInfoProvider { - + public long power; public int age = 0; public static final long maxPower = 100000000; @@ -69,8 +70,10 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen boolean lock = false; double breakProgress; + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + public TileEntityMachineMiningLaser() { - + //slot 0: battery //slots 1 - 8: upgrades //slots 9 - 29: output @@ -83,72 +86,72 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen return "container.miningLaser"; } + private double clientBreakProgress; + @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + this.updateConnections(); this.sendFluid(tank, worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X); this.sendFluid(tank, worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X); this.sendFluid(tank, worldObj, xCoord, yCoord + 2, zCoord, Library.POS_Z); this.sendFluid(tank, worldObj, xCoord, yCoord - 2, zCoord, Library.NEG_Z); - + power = Library.chargeTEFromItems(slots, 0, power, maxPower); - + //reset progress if the position changes if(lastTargetX != targetX || lastTargetY != targetY || lastTargetZ != targetZ) breakProgress = 0; - + //set last positions for interpolation and the like lastTargetX = targetX; lastTargetY = targetY; lastTargetZ = targetZ; - - double clientBreakProgress = 0; - + if(isOn) { - - UpgradeManager.eval(slots, 1, 8); - int cycles = 1 + UpgradeManager.getLevel(UpgradeType.OVERDRIVE); - int speed = 1 + Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 12); - int range = 1 + Math.min(UpgradeManager.getLevel(UpgradeType.EFFECT) * 2, 24); - int fortune = Math.min(UpgradeManager.getLevel(UpgradeType.FORTUNE), 3); + + upgradeManager.checkSlots(this, slots, 1, 8); + int cycles = 1 + upgradeManager.getLevel(UpgradeType.OVERDRIVE); + int speed = 1 + upgradeManager.getLevel(UpgradeType.SPEED); + int range = 1 + upgradeManager.getLevel(UpgradeType.EFFECT) * 2; + int fortune = upgradeManager.getLevel(UpgradeType.FORTUNE); int consumption = this.consumption - - (this.consumption * Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 12) / 16) - + (this.consumption * Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 12) / 16); - + - (this.consumption * upgradeManager.getLevel(UpgradeType.POWER) / 16) + + (this.consumption * upgradeManager.getLevel(UpgradeType.SPEED) / 16); + for(int i = 0; i < cycles; i++) { - + if(power < consumption) { beam = false; break; } - + power -= consumption; - + if(targetY <= 0) targetY = yCoord - 2; - + scan(range); - - + + Block block = worldObj.getBlock(targetX, targetY, targetZ); - + if(block.getMaterial().isLiquid()) { worldObj.setBlockToAir(targetX, targetY, targetZ); buildDam(); continue; } - + if(beam && canBreak(block, targetX, targetY, targetZ)) { - + breakProgress += getBreakSpeed(speed); clientBreakProgress = Math.min(breakProgress, 1); - + if(breakProgress < 1) { worldObj.destroyBlockInWorldPartially(-1, targetX, targetY, targetZ, (int) Math.floor(breakProgress * 10)); } else { @@ -166,44 +169,47 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen this.tryFillContainer(xCoord - 2, yCoord, zCoord); this.tryFillContainer(xCoord, yCoord, zCoord + 2); this.tryFillContainer(xCoord, yCoord, zCoord - 2); - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("lastX", lastTargetX); - data.setInteger("lastY", lastTargetY); - data.setInteger("lastZ", lastTargetZ); - data.setInteger("x", targetX); - data.setInteger("y", targetY); - data.setInteger("z", targetZ); - data.setBoolean("beam", beam); - data.setBoolean("isOn", isOn); - data.setDouble("progress", clientBreakProgress); - tank.writeToNBT(data, "t"); - - this.networkPack(data, 250); + + this.networkPackNT(250); } } - + private void updateConnections() { this.trySubscribe(worldObj, xCoord, yCoord + 2, zCoord, ForgeDirection.UP); } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - this.power = data.getLong("power"); - this.lastTargetX = data.getInteger("lastX"); - this.lastTargetY = data.getInteger("lastY"); - this.lastTargetZ = data.getInteger("lastZ"); - this.targetX = data.getInteger("x"); - this.targetY = data.getInteger("y"); - this.targetZ = data.getInteger("z"); - this.beam = data.getBoolean("beam"); - this.isOn = data.getBoolean("isOn"); - this.breakProgress = data.getDouble("progress"); - tank.readFromNBT(data, "t"); + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + buf.writeInt(this.lastTargetX); + buf.writeInt(this.lastTargetY); + buf.writeInt(this.lastTargetZ); + buf.writeInt(this.targetX); + buf.writeInt(this.targetY); + buf.writeInt(this.targetZ); + buf.writeBoolean(this.beam); + buf.writeBoolean(this.isOn); + buf.writeDouble(this.clientBreakProgress); + tank.serialize(buf); } - + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.lastTargetX = buf.readInt(); + this.lastTargetY = buf.readInt(); + this.lastTargetZ = buf.readInt(); + this.targetX = buf.readInt(); + this.targetY = buf.readInt(); + this.targetZ = buf.readInt(); + this.beam = buf.readBoolean(); + this.isOn = buf.readBoolean(); + this.breakProgress = buf.readDouble(); + tank.deserialize(buf); + } + private void buildDam() { if(worldObj.getBlock(targetX + 1, targetY, targetZ).getMaterial().isLiquid()) worldObj.setBlock(targetX + 1, targetY, targetZ, ModBlocks.barricade); @@ -211,76 +217,76 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen if(worldObj.getBlock(targetX, targetY, targetZ + 1).getMaterial().isLiquid()) worldObj.setBlock(targetX, targetY, targetZ + 1, ModBlocks.barricade); if(worldObj.getBlock(targetX, targetY, targetZ - 1).getMaterial().isLiquid()) worldObj.setBlock(targetX, targetY, targetZ - 1, ModBlocks.barricade); } - + private void tryFillContainer(int x, int y, int z) { - + Block b = worldObj.getBlock(x, y, z); if(b != Blocks.chest && b != Blocks.trapped_chest && b != ModBlocks.crate_iron && b != ModBlocks.crate_desh && b != ModBlocks.crate_steel && b != ModBlocks.safe && b != Blocks.hopper) return; - + IInventory inventory = (IInventory)worldObj.getTileEntity(x, y, z); if(inventory == null) return; - + for(int i = 9; i <= 29; i++) { - + if(slots[i] != null) { int prev = slots[i].stackSize; slots[i] = InventoryUtil.tryAddItemToInventory(inventory, 0, inventory.getSizeInventory() - 1, slots[i]); - + if(slots[i] == null || slots[i].stackSize < prev) return; } } } - + private void breakBlock(int fortune) { - + Block b = worldObj.getBlock(targetX, targetY, targetZ); int meta = worldObj.getBlockMetadata(targetX, targetY, targetZ); boolean normal = true; boolean doesBreak = true; - + if(b == Blocks.lit_redstone_ore) b = Blocks.redstone_ore; - + ItemStack stack = new ItemStack(b, 1, meta); - + if(stack != null && stack.getItem() != null) { if(hasCrystallizer()) { CrystallizerRecipe result = CrystallizerRecipes.getOutput(stack, Fluids.PEROXIDE); if(result == null) result = CrystallizerRecipes.getOutput(stack, Fluids.SULFURIC_ACID); - + if(result != null) { worldObj.spawnEntityInWorld(new EntityItem(worldObj, targetX + 0.5, targetY + 0.5, targetZ + 0.5, result.output.copy())); normal = false; } - + } else if(hasCentrifuge()) { - + ItemStack[] result = CentrifugeRecipes.getOutput(stack); if(result != null) { for(ItemStack sta : result) { - + if(sta != null) { worldObj.spawnEntityInWorld(new EntityItem(worldObj, targetX + 0.5, targetY + 0.5, targetZ + 0.5, sta.copy())); normal = false; } } } - + } else if(hasShredder()) { - + ItemStack result = ShredderRecipes.getShredderResult(stack); if(result != null && result.getItem() != ModItems.scrap) { worldObj.spawnEntityInWorld(new EntityItem(worldObj, targetX + 0.5, targetY + 0.5, targetZ + 0.5, result.copy())); normal = false; } - + } else if(hasSmelter()) { - + ItemStack result = FurnaceRecipes.smelting().getSmeltingResult(stack); if(result != null) { worldObj.spawnEntityInWorld(new EntityItem(worldObj, targetX + 0.5, targetY + 0.5, targetZ + 0.5, result.copy())); @@ -288,32 +294,32 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen } } } - + if(normal && b instanceof IDrillInteraction) { IDrillInteraction in = (IDrillInteraction) b; ItemStack drop = in.extractResource(worldObj, targetX, targetY, targetZ, meta, this); - + if(drop != null) { worldObj.spawnEntityInWorld(new EntityItem(worldObj, targetX + 0.5, targetY + 0.5, targetZ + 0.5, drop.copy())); } - + doesBreak = in.canBreak(worldObj, targetX, targetY, targetZ, meta, this); } - + if(doesBreak) { if(normal) b.dropBlockAsItem(worldObj, targetX, targetY, targetZ, meta, fortune); worldObj.func_147480_a(targetX, targetY, targetZ, false); } - + suckDrops(); if(doesScream()) { worldObj.playSoundEffect(targetX + 0.5, targetY + 0.5, targetZ + 0.5, "hbm:block.screm", 2000.0F, 1.0F); } - + breakProgress = 0; } - + private static final Set bad = Sets.newHashSet(new Item[] { Item.getItemFromBlock(Blocks.dirt), Item.getItemFromBlock(Blocks.stone), @@ -327,14 +333,14 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen Items.snowball, Items.wheat_seeds }); - + //hahahahahahahaha he said "suck" private void suckDrops() { - + int rangeHor = 3; int rangeVer = 1; boolean nullifier = hasNullifier(); - + List items = worldObj.getEntitiesWithinAABB(EntityItem.class, AxisAlignedBB.getBoundingBox( targetX + 0.5 - rangeHor, targetY + 0.5 - rangeVer, @@ -343,36 +349,36 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen targetY + 0.5 + rangeVer, targetZ + 0.5 + rangeHor )); - + for(EntityItem item : items) { - + if(item.isDead) continue; - + if(nullifier && bad.contains(item.getEntityItem().getItem())) { item.setDead(); continue; } - + if(item.getEntityItem().getItem() == Item.getItemFromBlock(ModBlocks.ore_oil)) { - + tank.setTankType(Fluids.OIL); //just to be sure - + tank.setFill(tank.getFill() + 500); if(tank.getFill() > tank.getMaxFill()) tank.setFill(tank.getMaxFill()); - + item.setDead(); continue; } - + ItemStack stack = InventoryUtil.tryAddItemToInventory(slots, 9, 29, item.getEntityItem().copy()); - + if(stack == null) item.setDead(); else item.setEntityItemStack(stack.copy()); //copy is not necessary but i'm paranoid due to the kerfuffle of the old drill } - + List mobs = worldObj.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox( targetX + 0.5 - 1, targetY + 0.5 - 1, @@ -381,31 +387,31 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen targetY + 0.5 + 1, targetZ + 0.5 + 1 )); - + for(EntityLivingBase mob : mobs) { mob.setFire(5); } } - + public double getBreakSpeed(int speed) { - + float hardness = worldObj.getBlock(targetX, targetY, targetZ).getBlockHardness(worldObj, targetX, targetY, targetZ) * 15 / speed; - + if(hardness == 0) return 1; - + return 1 / hardness; } - + public void scan(int range) { - + for(int x = -range; x <= range; x++) { for(int z = -range; z <= range; z++) { - + if(worldObj.getBlock(x + xCoord, targetY, z + zCoord).getMaterial().isLiquid()) { continue; } - + if(canBreak(worldObj.getBlock(x + xCoord, targetY, z + zCoord), x + xCoord, targetY, z + zCoord)) { targetX = x + xCoord; targetZ = z + zCoord; @@ -414,23 +420,23 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen } } } - + beam = false; targetY--; } - + private boolean canBreak(Block block, int x, int y, int z) { return !block.isAir(worldObj, x, y, z) && block.getBlockHardness(worldObj, x, y, z) >= 0 && !block.getMaterial().isLiquid() && block != Blocks.bedrock; } - + public int getRange() { - + int range = 1; - + for(int i = 1; i < 9; i++) { - + if(slots[i] != null) { - + if(slots[i].getItem() == ModItems.upgrade_effect_1) range += 2; else if(slots[i].getItem() == ModItems.upgrade_effect_2) @@ -439,100 +445,100 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen range += 6; } } - + return Math.min(range, 25); } - + public boolean hasNullifier() { - + for(int i = 1; i < 9; i++) { - + if(slots[i] != null) { - + if(slots[i].getItem() == ModItems.upgrade_nullifier) return true; } } - + return false; } - + public boolean hasSmelter() { - + for(int i = 1; i < 9; i++) { - + if(slots[i] != null) { - + if(slots[i].getItem() == ModItems.upgrade_smelter) return true; } } - + return false; } - + public boolean hasShredder() { - + for(int i = 1; i < 9; i++) { - + if(slots[i] != null) { - + if(slots[i].getItem() == ModItems.upgrade_shredder) return true; } } - + return false; } - + public boolean hasCentrifuge() { - + for(int i = 1; i < 9; i++) { - + if(slots[i] != null) { - + if(slots[i].getItem() == ModItems.upgrade_centrifuge) return true; } } - + return false; } - + public boolean hasCrystallizer() { - + for(int i = 1; i < 9; i++) { - + if(slots[i] != null) { - + if(slots[i].getItem() == ModItems.upgrade_crystallizer) return true; } } - + return false; } - + public boolean doesScream() { - + for(int i = 1; i < 9; i++) { - + if(slots[i] != null) { - + if(slots[i].getItem() == ModItems.upgrade_screm) return true; } } - + return false; } - + public int getConsumption() { return this.consumption; } - + public int getWidth() { - + return 1 + getRange() * 2; } @@ -543,12 +549,12 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen public int getProgressScaled(int i) { return (int) (breakProgress * i); } - + @Override public AxisAlignedBB getRenderBoundingBox() { return TileEntity.INFINITE_EXTENT_AABB; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() @@ -568,20 +574,20 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen @Override public int[] getAccessibleSlotsFromSide(int slot) { - + int[] slots = new int[21]; - + for(int i = 0; i < 21; i++) { slots[i] = i + 9; } - + return slots; } @Override public void setInventorySlotContents(int i, ItemStack stack) { super.setInventorySlotContents(i, stack); - + if(stack != null && i >= 1 && i <= 8 && stack.getItem() instanceof ItemMachineUpgrade) worldObj.playSoundEffect(xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, "hbm:item.upgradePlug", 1.0F, 1.0F); } @@ -604,7 +610,7 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - + tank.readFromNBT(nbt, "oil"); isOn = nbt.getBoolean("isOn"); } @@ -612,7 +618,7 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + tank.writeToNBT(nbt, "oil"); nbt.setBoolean("isOn", isOn); } @@ -644,7 +650,7 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMiningLaser(player.inventory, this); } @@ -675,12 +681,13 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 12; - if(type == UpgradeType.POWER) return 12; - if(type == UpgradeType.EFFECT) return 12; - if(type == UpgradeType.FORTUNE) return 3; - if(type == UpgradeType.OVERDRIVE) return 9; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 12); + upgrades.put(UpgradeType.POWER, 12); + upgrades.put(UpgradeType.EFFECT, 12); + upgrades.put(UpgradeType.FORTUNE, 3); + upgrades.put(UpgradeType.OVERDRIVE, 9); + return upgrades; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java index 4ffd642d6..c7e49bdfc 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java @@ -8,13 +8,12 @@ import com.hbm.items.weapon.ItemCustomMissilePart; import com.hbm.items.weapon.ItemCustomMissilePart.FuelType; import com.hbm.items.weapon.ItemCustomMissilePart.PartType; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TEMissileMultipartPacket; +import com.hbm.packet.toclient.TEMissileMultipartPacket; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; 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.inventory.ISidedInventory; @@ -317,7 +316,7 @@ public class TileEntityMachineMissileAssembly extends TileEntity implements ISid @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineMissileAssembly(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java index e9751c820..b3b14eacd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java @@ -1,10 +1,11 @@ package com.hbm.tileentity.machine; +import java.util.HashMap; import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IControlReceiver; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.container.ContainerMixer; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; @@ -13,10 +14,7 @@ import com.hbm.inventory.recipes.MixerRecipes; import com.hbm.inventory.recipes.MixerRecipes.MixerRecipe; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.INBTPacketReceiver; -import com.hbm.tileentity.IUpgradeInfoProvider; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.*; import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; @@ -26,7 +24,6 @@ import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -35,22 +32,24 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; -public class TileEntityMachineMixer extends TileEntityMachineBase implements INBTPacketReceiver, IControlReceiver, IGUIProvider, IEnergyReceiverMK2, IFluidStandardTransceiver, IUpgradeInfoProvider { - +public class TileEntityMachineMixer extends TileEntityMachineBase implements IControlReceiver, IGUIProvider, IEnergyReceiverMK2, IFluidStandardTransceiver, IUpgradeInfoProvider, IFluidCopiable { + public long power; public static final long maxPower = 10_000; public int progress; public int processTime; public int recipeIndex; - + public float rotation; public float prevRotation; public boolean wasOn = false; private int consumption = 50; - + public FluidTank[] tanks; + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + public TileEntityMachineMixer() { super(5); this.tanks = new FluidTank[3]; @@ -66,53 +65,53 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); tanks[2].setType(2, slots); - - UpgradeManager.eval(slots, 3, 4); - int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); - int powerLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); - int overLevel = UpgradeManager.getLevel(UpgradeType.OVERDRIVE); - + + upgradeManager.checkSlots(this, slots, 3, 4); + int speedLevel = upgradeManager.getLevel(UpgradeType.SPEED); + int powerLevel = upgradeManager.getLevel(UpgradeType.POWER); + int overLevel = upgradeManager.getLevel(UpgradeType.OVERDRIVE); + this.consumption = 50; this.consumption += speedLevel * 150; this.consumption -= this.consumption * powerLevel * 0.25; this.consumption *= (overLevel * 3 + 1); - + for(DirPos pos : getConPos()) { this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); if(tanks[0].getTankType() != Fluids.NONE) this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); if(tanks[1].getTankType() != Fluids.NONE) this.trySubscribe(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - + this.wasOn = this.canProcess(); - + if(this.wasOn) { this.progress++; this.power -= this.getConsumption(); - + this.processTime -= this.processTime * speedLevel / 4; this.processTime /= (overLevel + 1); - + if(processTime <= 0) this.processTime = 1; - + if(this.progress >= this.processTime) { this.process(); this.progress = 0; } - + } else { this.progress = 0; } - + for(DirPos pos : getConPos()) { if(tanks[2].getFill() > 0) this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - + NBTTagCompound data = new NBTTagCompound(); data.setLong("power", power); data.setInteger("processTime", processTime); @@ -123,22 +122,22 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB tanks[i].writeToNBT(data, i + ""); } this.networkPackNT(50); - + } else { - + this.prevRotation = this.rotation; - + if(this.wasOn) { this.rotation += 20F; } - + if(this.rotation >= 360) { this.rotation -= 360; this.prevRotation -= 360; } } } - + @Override public void serialize(ByteBuf buf) { super.serialize(buf); @@ -147,10 +146,10 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB buf.writeInt(progress); buf.writeInt(recipeIndex); buf.writeBoolean(wasOn); - + for(int i = 0; i < tanks.length; i++) tanks[i].serialize(buf); } - + @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); @@ -159,24 +158,10 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB progress = buf.readInt(); recipeIndex = buf.readInt(); wasOn = buf.readBoolean(); - + for(int i = 0; i < tanks.length; i++) tanks[i].deserialize(buf); } - @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.processTime = nbt.getInteger("processTime"); - this.progress = nbt.getInteger("progress"); - this.recipeIndex = nbt.getInteger("recipe"); - this.wasOn = nbt.getBoolean("wasOn"); - for(int i = 0; i < 3; i++) { - tanks[i].readFromNBT(nbt, i + ""); - } - } - public boolean canProcess() { MixerRecipe[] recipes = MixerRecipes.getOutput(tanks[2].getTankType()); @@ -184,38 +169,38 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB this.recipeIndex = 0; return false; } - + this.recipeIndex = this.recipeIndex % recipes.length; MixerRecipe recipe = recipes[this.recipeIndex]; if(recipe == null) { this.recipeIndex = 0; return false; } - + tanks[0].setTankType(recipe.input1 != null ? recipe.input1.type : Fluids.NONE); tanks[1].setTankType(recipe.input2 != null ? recipe.input2.type : Fluids.NONE); if(recipe.input1 != null && tanks[0].getFill() < recipe.input1.fill) return false; if(recipe.input2 != null && tanks[1].getFill() < recipe.input2.fill) return false; - + /* simplest check would usually go first, but fluid checks also do the setup and we want that to happen even without power */ if(this.power < getConsumption()) return false; - + if(recipe.output + tanks[2].getFill() > tanks[2].getMaxFill()) return false; - + if(recipe.solidInput != null) { - + if(slots[1] == null) return false; - - if(!recipe.solidInput.matchesRecipe(slots[1], true) || recipe.solidInput.stacksize > slots[1].stackSize) return false; + + if(!recipe.solidInput.matchesRecipe(slots[1], true) || recipe.solidInput.stacksize > slots[1].stackSize) return false; } - + this.processTime = recipe.processTime; return true; } - + protected void process() { - + MixerRecipe[] recipes = MixerRecipes.getOutput(tanks[2].getTankType()); MixerRecipe recipe = recipes[this.recipeIndex % recipes.length]; @@ -224,11 +209,11 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB if(recipe.solidInput != null) this.decrStackSize(1, recipe.solidInput.stacksize); tanks[2].setFill(tanks[2].getFill() + recipe.output); } - + public int getConsumption() { return consumption; } - + protected DirPos[] getConPos() { return new DirPos[] { new DirPos(xCoord, yCoord - 1, zCoord, Library.NEG_Y), @@ -238,7 +223,7 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB new DirPos(xCoord, yCoord, zCoord - 1, Library.NEG_Z), }; } - + @Override public int[] getAccessibleSlotsFromSide(int meta) { return new int[] { 1 }; @@ -246,16 +231,16 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { - + MixerRecipe[] recipes = MixerRecipes.getOutput(tanks[2].getTankType()); if(recipes == null || recipes.length <= 0) return false; - + MixerRecipe recipe = recipes[this.recipeIndex % recipes.length]; if(recipe == null || recipe.solidInput == null) return false; - + return recipe.solidInput.matchesRecipe(itemStack, true); } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -266,11 +251,11 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB this.recipeIndex = nbt.getInteger("recipe"); for(int i = 0; i < 3; i++) this.tanks[i].readFromNBT(nbt, i + ""); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + nbt.setLong("power", power); nbt.setInteger("progress", progress); nbt.setInteger("processTime", processTime); @@ -315,22 +300,22 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMixer(player.inventory, this); } - + AxisAlignedBB aabb; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(aabb != null) return aabb; - + aabb = AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 3, zCoord + 1); return aabb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -368,10 +353,17 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 3; - if(type == UpgradeType.POWER) return 3; - if(type == UpgradeType.OVERDRIVE) return 6; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 3); + upgrades.put(UpgradeType.POWER, 3); + upgrades.put(UpgradeType.OVERDRIVE, 6); + return upgrades; } + + @Override + public FluidTank getTankToPaste() { + return this.tanks[2]; + } + } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java index 90e1ec36e..35fcc77e6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java @@ -1,9 +1,10 @@ package com.hbm.tileentity.machine; +import java.util.HashMap; import java.util.List; import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.container.ContainerOreSlopper; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; @@ -18,8 +19,9 @@ import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; import com.hbm.lib.Library; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.IFluidCopiable; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; @@ -33,7 +35,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -46,19 +47,19 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineOreSlopper extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IUpgradeInfoProvider { - +public class TileEntityMachineOreSlopper extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IUpgradeInfoProvider, IFluidCopiable { + public long power; public static final long maxPower = 100_000; - + public static final int waterUsedBase = 1_000; public int waterUsed = waterUsedBase; public static final long consumptionBase = 200; public long consumption = consumptionBase; - + public float progress; public boolean processing; - + public SlopperAnimation animation = SlopperAnimation.LOWERING; public float slider; public float prevSlider; @@ -69,10 +70,12 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement public float fan; public float prevFan; public int delay; - + public FluidTank[] tanks; public double[] ores = new double[BedrockOreType.values().length]; + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + public TileEntityMachineOreSlopper() { super(11); tanks = new FluidTank[2]; @@ -84,75 +87,75 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement public String getName() { return "container.machineOreSlopper"; } - + public static enum SlopperAnimation { LOWERING, LIFTING, MOVE_SHREDDER, DUMPING, MOVE_BUCKET } @Override public void updateEntity() { - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); - + if(!worldObj.isRemote) { - + this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); - + tanks[0].setType(1, slots); FluidType conversion = this.getFluidOutput(tanks[0].getTankType()); if(conversion != null) tanks[1].setTankType(conversion); - + for(DirPos pos : getConPos()) { this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - + this.processing = false; - - UpgradeManager.eval(slots, 9, 10); - int speed = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); - int efficiency = Math.min(UpgradeManager.getLevel(UpgradeType.EFFECT), 3); - + + upgradeManager.checkSlots(this, slots, 9, 10); + int speed = upgradeManager.getLevel(UpgradeType.SPEED); + int efficiency = upgradeManager.getLevel(UpgradeType.EFFECT); + this.consumption = this.consumptionBase + (this.consumptionBase * speed) / 2 + (this.consumptionBase * efficiency); - + if(canSlop()) { this.power -= this.consumption; this.progress += 1F / (600 - speed * 150); this.processing = true; boolean markDirty = false; - + while(progress >= 1F && canSlop()) { progress -= 1F; - + for(BedrockOreType type : BedrockOreType.values()) { ores[type.ordinal()] += (ItemBedrockOreBase.getOreAmount(slots[2], type) * (1D + efficiency * 0.1)); } - + this.decrStackSize(2, 1); this.tanks[0].setFill(this.tanks[0].getFill() - waterUsed); this.tanks[1].setFill(this.tanks[1].getFill() + waterUsed); markDirty = true; } - + if(markDirty) this.markDirty(); - + List entities = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(xCoord - 0.5, yCoord + 1, zCoord - 0.5, xCoord + 1.5, yCoord + 3, zCoord + 1.5).offset(dir.offsetX, 0, dir.offsetZ)); - + for(Entity e : entities) { e.attackEntityFrom(ModDamageSource.turbofan, 1000F); - + if(!e.isEntityAlive() && e instanceof EntityLivingBase) { NBTTagCompound vdat = new NBTTagCompound(); vdat.setString("type", "giblets"); vdat.setInteger("ent", e.getEntityId()); vdat.setInteger("cDiv", 5); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(vdat, e.posX, e.posY + e.height * 0.5, e.posZ), new TargetPoint(e.dimension, e.posX, e.posY + e.height * 0.5, e.posZ, 150)); - + worldObj.playSoundEffect(e.posX, e.posY, e.posZ, "mob.zombie.woodbreak", 2.0F, 0.95F + worldObj.rand.nextFloat() * 0.2F); } } - + } else { this.progress = 0; } @@ -169,31 +172,31 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement break outer; } } - + this.networkPackNT(150); - + } else { - + this.prevSlider = this.slider; this.prevBucket = this.bucket; this.prevBlades = this.blades; this.prevFan = this.fan; - + if(this.processing) { - + this.blades += 15F; this.fan += 35F; - + if(blades >= 360) { blades -= 360; prevBlades -= 360; } - + if(fan >= 360) { fan -= 360; prevFan -= 360; } - + if(animation == animation.DUMPING && MainRegistry.proxy.me().getDistance(xCoord + 0.5, yCoord + 4, zCoord + 0.5) <= 50) { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "vanillaExt"); @@ -205,12 +208,12 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement data.setDouble("mY", -0.2D); MainRegistry.proxy.effectNT(data); } - + if(delay > 0) { delay--; return; } - + switch(animation) { case LOWERING: this.bucket += 1F/40F; @@ -250,11 +253,11 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement } } } - + public DirPos[] getConPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - + return new DirPos[] { new DirPos(xCoord + dir.offsetX * 4, yCoord, zCoord + dir.offsetZ * 4, dir), new DirPos(xCoord - dir.offsetX * 4, yCoord, zCoord - dir.offsetZ * 4, dir.getOpposite()), @@ -278,7 +281,7 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement } private static final int[] slot_access = new int[] {2, 3, 4, 5, 6, 7, 8}; - + @Override public int[] getAccessibleSlotsFromSide(int side) { return slot_access; @@ -293,7 +296,7 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement tanks[0].serialize(buf); tanks[1].serialize(buf); } - + @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); this.power = buf.readLong(); @@ -303,7 +306,7 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement tanks[0].deserialize(buf); tanks[1].deserialize(buf); } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -312,7 +315,7 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement tanks[0].readFromNBT(nbt, "water"); tanks[1].readFromNBT(nbt, "slop"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -321,16 +324,16 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement tanks[0].writeToNBT(nbt, "water"); tanks[1].writeToNBT(nbt, "slop"); } - + public boolean canSlop() { if(this.getFluidOutput(tanks[0].getTankType()) == null) return false; if(tanks[0].getFill() < waterUsed) return false; if(tanks[1].getFill() + waterUsed > tanks[1].getMaxFill()) return false; if(power < consumption) return false; - + return slots[2] != null && slots[2].getItem() == ModItems.bedrock_ore_base; } - + public FluidType getFluidOutput(FluidType input) { if(input == Fluids.WATER) return Fluids.SLOP; return null; @@ -343,12 +346,12 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement @Override public FluidTank[] getAllTanks() { return tanks; } @Override public FluidTank[] getSendingTanks() { return new FluidTank[] {tanks[1]}; } @Override public FluidTank[] getReceivingTanks() { return new FluidTank[] {tanks[0]}; } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 3, @@ -359,10 +362,10 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement zCoord + 4 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -376,7 +379,7 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIOreSlopper(player.inventory, this); } @@ -399,9 +402,10 @@ public class TileEntityMachineOreSlopper extends TileEntityMachineBase implement } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 3; - if(type == UpgradeType.EFFECT) return 3; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 3); + upgrades.put(UpgradeType.EFFECT, 3); + return upgrades; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java index 8224d6f41..d8ed532d3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java @@ -12,6 +12,7 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIPlasmaHeater; import com.hbm.lib.Library; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; @@ -19,7 +20,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; @@ -28,7 +29,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachinePlasmaHeater extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider { +public class TileEntityMachinePlasmaHeater extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IFluidCopiable { public long power; public static final long maxPower = 100000000; @@ -122,13 +123,7 @@ public class TileEntityMachinePlasmaHeater extends TileEntityMachineBase impleme /// END Loading plasma into the ITER /// /// START Notif packets /// - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - tanks[0].writeToNBT(data, "t0"); - tanks[1].writeToNBT(data, "t1"); - plasma.writeToNBT(data, "t2"); - this.networkPack(data, 50); + this.networkPackNT(50); /// END Notif packets /// } } @@ -148,14 +143,23 @@ public class TileEntityMachinePlasmaHeater extends TileEntityMachineBase impleme } } } - - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - tanks[0].readFromNBT(nbt, "t0"); - tanks[1].readFromNBT(nbt, "t1"); - plasma.readFromNBT(nbt, "t2"); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + tanks[0].serialize(buf); + tanks[1].serialize(buf); + plasma.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); + plasma.deserialize(buf); } private void updateType() { @@ -257,7 +261,7 @@ public class TileEntityMachinePlasmaHeater extends TileEntityMachineBase impleme @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIPlasmaHeater(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java index 58a31e5bd..c927edc0a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java @@ -8,9 +8,10 @@ import com.hbm.items.machine.ItemStamp; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -35,9 +36,9 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU public final static int maxPress = 200; // max tick count per operation assuming speed is 1 boolean isRetracting = false; // direction the press is currently going private int delay; // delay between direction changes to look a bit more appealing - + public ItemStack syncStack; - + public TileEntityMachinePress() { super(4); } @@ -46,26 +47,26 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU public String getName() { return "container.press"; } - + @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + boolean preheated = false; - + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { if(worldObj.getBlock(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ) == ModBlocks.press_preheater) { preheated = true; break; } } - + boolean canProcess = this.canProcess(); - + if((canProcess || this.isRetracting) && this.burnTime >= 200) { this.speed += preheated ? 4 : 1; - + if(this.speed > this.maxSpeed) { this.speed = this.maxSpeed; } @@ -75,21 +76,21 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU this.speed = 0; } } - + if(delay <= 0) { - + int stampSpeed = speed * progressAtMax / maxSpeed; - + if(this.isRetracting) { this.press -= stampSpeed; - + if(this.press <= 0) { this.isRetracting = false; this.delay = 5; } } else if(canProcess) { this.press += stampSpeed; - + if(this.press >= this.maxPress) { this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.pressOperate", getVolume(1.5F), 1.0F); ItemStack output = PressRecipes.getOutput(slots[2], slots[1]); @@ -99,20 +100,20 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU slots[3].stackSize += output.stackSize; } this.decrStackSize(2, 1); - + if(slots[1].getMaxDamage() != 0) { slots[1].setItemDamage(slots[1].getItemDamage() + 1); if(slots[1].getItemDamage() >= slots[1].getMaxDamage()) { slots[1] = null; } } - + this.isRetracting = true; this.delay = 5; if(this.burnTime >= 200) { this.burnTime -= 200; // only subtract fuel if operation was actually successful } - + this.markDirty(); } } else if(this.press > 0){ @@ -121,10 +122,10 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU } else { delay--; } - + if(slots[0] != null && burnTime < 200 && TileEntityFurnace.getItemBurnTime(slots[0]) > 0) { // less than one operation stored? burn more fuel! burnTime += TileEntityFurnace.getItemBurnTime(slots[0]); - + if(slots[0].stackSize == 1 && slots[0].getItem().hasContainerItem(slots[0])) { slots[0] = slots[0].getItem().getContainerItem(slots[0]).copy(); } else { @@ -132,24 +133,14 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU } this.markChanged(); } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("speed", speed); - data.setInteger("burnTime", burnTime); - data.setInteger("press", press); - if(slots[2] != null) { - NBTTagCompound stack = new NBTTagCompound(); - slots[2].writeToNBT(stack); - data.setTag("stack", stack); - } - - this.networkPack(data, 50); - + + this.networkPackNT(50); + } else { - + // approach-based interpolation, GO! this.lastPress = this.renderPress; - + if(this.turnProgress > 0) { this.renderPress = this.renderPress + ((this.syncPress - this.renderPress) / (double) this.turnProgress); --this.turnProgress; @@ -158,33 +149,35 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU } } } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.speed = nbt.getInteger("speed"); - this.burnTime = nbt.getInteger("burnTime"); - this.syncPress = nbt.getInteger("press"); - - if(nbt.hasKey("stack")) { - NBTTagCompound stack = nbt.getCompoundTag("stack"); - this.syncStack = ItemStack.loadItemStackFromNBT(stack); - } else { - this.syncStack = null; - } - + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(this.speed); + buf.writeInt(this.burnTime); + buf.writeInt(this.press); + BufferUtil.writeItemStack(buf, slots[2]); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.speed = buf.readInt(); + this.burnTime = buf.readInt(); + this.syncPress = buf.readInt(); + this.syncStack = BufferUtil.readItemStack(buf); + this.turnProgress = 2; } - + public boolean canProcess() { if(burnTime < 200) return false; if(slots[1] == null || slots[2] == null) return false; - + ItemStack output = PressRecipes.getOutput(slots[2], slots[1]); - + if(output == null) return false; - + if(slots[3] == null) return true; if(slots[3].stackSize + output.stackSize <= slots[3].getMaxStackSize() && slots[3].getItem() == output.getItem() && slots[3].getItemDamage() == output.getItemDamage()) return true; return false; @@ -192,16 +185,16 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU @Override public boolean isItemValidForSlot(int i, ItemStack stack) { - + if(stack.getItem() instanceof ItemStamp) return i == 1; - + if(TileEntityFurnace.getItemBurnTime(stack) > 0 && i == 0) return true; - + return i == 2; } - + @Override public int[] getAccessibleSlotsFromSide(int side) { return new int[] { 0, 1, 2, 3 }; @@ -216,7 +209,7 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU public boolean canExtractItem(int i, ItemStack itemStack, int j) { return i == 3; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -234,19 +227,19 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU nbt.setInteger("speed", speed); nbt.setBoolean("ret", isRetracting); } - + AxisAlignedBB aabb; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(aabb != null) return aabb; - + aabb = AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 3, zCoord + 1); return aabb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -260,7 +253,7 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachinePress(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java index 653064658..46131c44b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java @@ -9,23 +9,21 @@ import com.hbm.blocks.ModBlocks; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; -import com.hbm.tileentity.IConfigurableMachine; -import com.hbm.tileentity.INBTPacketReceiver; -import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.tileentity.*; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.init.Blocks; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; -public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase implements IFluidStandardTransceiver, INBTPacketReceiver, IConfigurableMachine { +public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase implements IFluidStandardTransceiver, IBufPacketReceiver, IConfigurableMachine, IFluidCopiable { public static final HashSet validBlocks = new HashSet(); - + static { validBlocks.add(Blocks.grass); validBlocks.add(Blocks.dirt); @@ -37,7 +35,7 @@ public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase imp validBlocks.add(ModBlocks.sand_dirty); validBlocks.add(ModBlocks.sand_dirty_red); } - + public FluidTank water; public boolean isOn = false; @@ -50,7 +48,7 @@ public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase imp public static int groundDepth = 4; public static int steamSpeed = 1_000; public static int electricSpeed = 10_000; - + @Override public String getConfigName() { return "waterpump"; @@ -71,87 +69,85 @@ public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase imp writer.name("I:steamSpeed").value(steamSpeed); writer.name("I:electricSpeed").value(electricSpeed); } - + public void updateEntity() { - + if(!worldObj.isRemote) { - + for(DirPos pos : getConPos()) { if(water.getFill() > 0) this.sendFluid(water, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - + if(groundCheckDelay > 0) { groundCheckDelay--; } else { onGround = this.checkGround(); } - + this.isOn = false; if(this.canOperate() && yCoord <= groundHeight && onGround) { this.isOn = true; this.operate(); } - - NBTTagCompound data = this.getSync(); - INBTPacketReceiver.networkPack(this, data, 150); - + + networkPackNT(150); + } else { - + this.lastRotor = this.rotor; if(this.isOn) this.rotor += 10F; - + if(this.rotor >= 360F) { this.rotor -= 360F; this.lastRotor -= 360F; - + MainRegistry.proxy.playSoundClient(xCoord, yCoord, zCoord, "hbm:block.steamEngineOperate", 0.5F, 0.75F); MainRegistry.proxy.playSoundClient(xCoord, yCoord, zCoord, "game.neutral.swim.splash", 1F, 0.5F); } } } - + protected boolean checkGround() { - + if(worldObj.provider.hasNoSky) return false; - + int validBlocks = 0; int invalidBlocks = 0; - + for(int x = -1; x <= 1; x++) { for(int y = -1; y >= -groundDepth; y--) { for(int z = -1; z <= 1; z++) { - + Block b = worldObj.getBlock(xCoord + x, yCoord + y, zCoord + z); - + if(y == -1 && !b.isNormalCube()) return false; // first layer has to be full solid - + if(this.validBlocks.contains(b)) validBlocks++; else invalidBlocks ++; } } } - + return validBlocks >= invalidBlocks; // valid block count has to be at least 50% } - - protected NBTTagCompound getSync() { - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("isOn", isOn); - data.setBoolean("onGround", onGround); - water.writeToNBT(data, "w"); - return data; - } @Override - public void networkUnpack(NBTTagCompound nbt) { - this.isOn = nbt.getBoolean("isOn"); - this.onGround = nbt.getBoolean("onGround"); - water.readFromNBT(nbt, "w"); + public void serialize(ByteBuf buf) { + buf.writeBoolean(this.isOn); + buf.writeBoolean(this.onGround); + water.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + this.isOn = buf.readBoolean(); + this.onGround = buf.readBoolean(); + water.deserialize(buf); } protected abstract boolean canOperate(); protected abstract void operate(); - + protected DirPos[] getConPos() { return new DirPos[] { new DirPos(xCoord + 2, yCoord, zCoord, Library.POS_X), @@ -175,12 +171,12 @@ public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase imp public FluidTank[] getReceivingTanks() { return new FluidTank[0]; } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 1, @@ -191,13 +187,18 @@ public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase imp zCoord + 2 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { return 65536.0D; } + + @Override + public FluidTank getTankToPaste() { + return null; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpElectric.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpElectric.java index 288193818..d0990e5f2 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpElectric.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpElectric.java @@ -5,7 +5,7 @@ import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energymk2.IEnergyReceiverMK2; -import net.minecraft.nbt.NBTTagCompound; +import io.netty.buffer.ByteBuf; public class TileEntityMachinePumpElectric extends TileEntityMachinePumpBase implements IEnergyReceiverMK2 { @@ -28,17 +28,17 @@ public class TileEntityMachinePumpElectric extends TileEntityMachinePumpBase imp super.updateEntity(); } - - protected NBTTagCompound getSync() { - NBTTagCompound data = super.getSync(); - data.setLong("power", power); - return data; + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - this.power = nbt.getLong("power"); + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpSteam.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpSteam.java index d935cfbf4..eb37f7d03 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpSteam.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpSteam.java @@ -4,7 +4,7 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.util.fauxpointtwelve.DirPos; -import net.minecraft.nbt.NBTTagCompound; +import io.netty.buffer.ByteBuf; public class TileEntityMachinePumpSteam extends TileEntityMachinePumpBase { @@ -47,19 +47,19 @@ public class TileEntityMachinePumpSteam extends TileEntityMachinePumpBase { public FluidTank[] getReceivingTanks() { return new FluidTank[] {steam}; } - - protected NBTTagCompound getSync() { - NBTTagCompound data = super.getSync(); - steam.writeToNBT(data, "s"); - lps.writeToNBT(data, "l"); - return data; + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + steam.serialize(buf); + lps.serialize(buf); } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - steam.readFromNBT(nbt, "s"); - lps.readFromNBT(nbt, "l"); + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + steam.deserialize(buf); + lps.deserialize(buf); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java index 56ab3442f..e5a502f0c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java @@ -4,8 +4,6 @@ import com.hbm.config.VersatileConfig; import com.hbm.inventory.container.ContainerMachineRTG; import com.hbm.inventory.gui.GUIMachineRTG; import com.hbm.items.machine.ItemRTGPellet; -import com.hbm.packet.AuxElectricityPacket; -import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.CompatEnergyControl; @@ -13,10 +11,9 @@ import com.hbm.util.RTGUtil; import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.tile.IInfoProviderEC; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.ISidedInventory; @@ -29,16 +26,16 @@ import net.minecraftforge.common.util.ForgeDirection; public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISidedInventory, IEnergyProviderMK2, IGUIProvider, IInfoProviderEC { private ItemStack slots[]; - + public int heat; public final int heatMax = VersatileConfig.rtgDecay() ? 600 : 200; public long power; public final long powerMax = 100000; - + public static final int[] slot_io = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }; - + private String customName; - + public TileEntityMachineRTG() { slots = new ItemStack[15]; } @@ -83,7 +80,7 @@ public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISided public boolean hasCustomInventoryName() { return this.customName != null && this.customName.length() > 0; } - + public void setCustomName(String name) { this.customName = name; } @@ -102,7 +99,7 @@ public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISided return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=64; } } - + //You scrubs aren't needed for anything (right now) @Override public void openInventory() {} @@ -113,7 +110,7 @@ public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISided public boolean isItemValidForSlot(int i, ItemStack itemStack) { return itemStack.getItem() instanceof ItemRTGPellet; } - + @Override public ItemStack decrStackSize(int i, int j) { if(slots[i] != null) @@ -129,13 +126,13 @@ public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISided { slots[i] = null; } - + return itemStack1; } else { return null; } } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -144,7 +141,7 @@ public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISided power = nbt.getLong("power"); heat = nbt.getInteger("heat"); slots = new ItemStack[getSizeInventory()]; - + for(int i = 0; i < list.tagCount(); i++) { NBTTagCompound nbt1 = list.getCompoundTagAt(i); @@ -155,14 +152,14 @@ public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISided } } } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setLong("power", power); nbt.setInteger("heat", heat); NBTTagList list = new NBTTagList(); - + for(int i = 0; i < slots.length; i++) { if(slots[i] != null) { NBTTagCompound nbt1 = new NBTTagCompound(); @@ -173,7 +170,7 @@ public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISided } nbt.setTag("items", list); } - + @Override public int[] getAccessibleSlotsFromSide(int p_94128_1_) { return slot_io; @@ -188,19 +185,19 @@ public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISided public boolean canExtractItem(int i, ItemStack itemStack, int j) { return false; } - + public long getPowerScaled(long i) { return (power * i) / powerMax; } - + public int getHeatScaled(int i) { return (heat * i) / heatMax; } - + public boolean hasPower() { return power > 0; } - + public boolean hasHeat() { return RTGUtil.hasHeat(slots, slot_io); } @@ -209,23 +206,35 @@ public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISided public void updateEntity() { if(!worldObj.isRemote) { - + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.tryProvide(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); - + heat = RTGUtil.updateRTGs(slots, slot_io); - + if(heat > heatMax) heat = heatMax; - + power += heat * 5; if(power > powerMax) power = powerMax; - - PacketDispatcher.wrapper.sendToAllAround(new AuxElectricityPacket(xCoord, yCoord, zCoord, power), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); + + networkPackNT(50); } } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + } + @Override public long getPower() { return power; @@ -248,7 +257,7 @@ public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISided @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineRTG(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java index 825937515..3c80edfc5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java @@ -11,6 +11,7 @@ import com.hbm.items.special.ItemWasteLong; import com.hbm.items.special.ItemWasteShort; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.CompatEnergyControl; import com.hbm.util.Tuple.Triplet; @@ -18,7 +19,7 @@ import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.inventory.Container; @@ -111,26 +112,29 @@ public class TileEntityMachineRadGen extends TileEntityMachineBase implements IE if(this.power > maxPower) this.power = maxPower; - - NBTTagCompound data = new NBTTagCompound(); - data.setIntArray("progress", this.progress); - data.setIntArray("maxProgress", this.maxProgress); - data.setIntArray("production", this.production); - data.setLong("power", this.power); - data.setBoolean("isOn", this.isOn); - this.networkPack(data, 50); + + this.networkPackNT(50); } } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.progress = nbt.getIntArray("progress"); - this.maxProgress = nbt.getIntArray("maxProgress"); - this.production = nbt.getIntArray("production"); - this.power = nbt.getLong("power"); - this.isOn = nbt.getBoolean("isOn"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + BufferUtil.writeIntArray(buf, this.progress); + BufferUtil.writeIntArray(buf, this.maxProgress); + BufferUtil.writeIntArray(buf, this.production); + buf.writeLong(this.power); + buf.writeBoolean(this.isOn); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.progress = BufferUtil.readIntArray(buf); + this.maxProgress = BufferUtil.readIntArray(buf); + this.production = BufferUtil.readIntArray(buf); + this.power = buf.readLong(); + this.isOn = buf.readBoolean(); } @Override @@ -293,7 +297,7 @@ public class TileEntityMachineRadGen extends TileEntityMachineBase implements IE @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineRadGen(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index 0eb956fe3..b830abfe9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -18,12 +18,11 @@ import com.hbm.items.ModItems; import com.hbm.items.tool.ItemCoordinateBase; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; -import com.hbm.packet.BufPacket; -import com.hbm.packet.PacketDispatcher; import com.hbm.saveddata.SatelliteSavedData; import com.hbm.saveddata.satellites.Satellite; import com.hbm.saveddata.satellites.SatelliteHorizons; import com.hbm.saveddata.satellites.SatelliteLaser; +import com.hbm.saveddata.satellites.SatelliteResonator; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IRadarCommandReceiver; @@ -39,7 +38,6 @@ import api.hbm.entity.IRadarDetectableNT; import api.hbm.entity.IRadarDetectableNT.RadarScanParams; import api.hbm.entity.RadarEntry; import cpw.mods.fml.common.Optional; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -48,7 +46,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.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -75,14 +72,14 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I public boolean smartMode = true; public boolean redMode = true; public boolean showMap = false; - + public boolean jammed = false; public float prevRotation; public float rotation; public long power = 0; - + protected int pingTimer = 0; protected int lastPower; protected final static int maxTimer = 80; @@ -94,10 +91,10 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I public static int radarAltitude = 55; public static int chunkLoadCap = 10; public static boolean generateChunks = false; - + public byte[] map = new byte[40_000]; public boolean clearFlag = false; - + public List entries = new ArrayList(); @Override @@ -134,18 +131,18 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I public String getName() { return "container.radar"; } - + public int getRange() { return radarRange; } @Override public void updateEntity() { - + if(this.map == null || this.map.length != 40_000) this.map = new byte[40_000]; - + if(!worldObj.isRemote) { - + this.power = Library.chargeTEFromItems(slots, 9, power, maxPower); if(worldObj.getTotalWorldTime() % 20 == 0) { @@ -153,37 +150,37 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - + this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); this.jammed = false; allocateTargets(); - + if(this.lastPower != getRedPower()) { this.markChanged(); for(DirPos pos : getConPos()) this.updateRedstoneConnection(pos); } lastPower = getRedPower(); - + if(!this.muffled) { - + pingTimer++; - + if(power > 0 && pingTimer >= maxTimer) { this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.sonarPing", 5.0F, 1.0F); pingTimer = 0; } } - + if(this.showMap) { int chunkLoads = 0; for(int i = 0; i < 100; i++) { int index = (int) (worldObj.getTotalWorldTime() % 400) * 100 + i; int iX = (index % 200) * getRange() * 2 / 200; int iZ = index / 200 * getRange() * 2 / 200; - + int x = xCoord - getRange() + iX; int z = zCoord - getRange() + iZ; - + if(worldObj.getChunkProvider().chunkExists(x >> 4, z >> 4)) { this.map[index] = (byte) MathHelper.clamp_int(worldObj.getHeightValue(x, z), 50, 128); } else { @@ -201,7 +198,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I } } } - + if(slots[8] != null && slots[8].getItem() == ModItems.radar_linker) { BlockPos pos = ItemCoordinateBase.getPosition(slots[8]); if(pos != null) { @@ -215,11 +212,11 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I screen.refZ = zCoord; screen.range = this.getRange(); screen.linked = true; - PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, pos.getX(), pos.getY(), pos.getZ(), 25)); + networkPackNT(25); } } } - + this.networkPackNT(50); if(this.clearFlag) { this.map = new byte[40_000]; @@ -228,14 +225,14 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I } else { prevRotation = rotation; if(power > 0) rotation += 5F; - + if(rotation >= 360) { rotation -= 360F; prevRotation -= 360F; } } } - + public DirPos[] getConPos() { return new DirPos[] { new DirPos(xCoord + 1, yCoord, zCoord, Library.POS_X), @@ -244,7 +241,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I new DirPos(xCoord, yCoord, zCoord - 1, Library.NEG_Z), }; } - + @Override public void serialize(ByteBuf buf) { super.serialize(buf); @@ -274,7 +271,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I } } } - + @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); @@ -330,30 +327,30 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I nbt.setBoolean("showMap", showMap); nbt.setByteArray("map", map); } - + protected void allocateTargets() { this.entries.clear(); - + if(this.yCoord < radarAltitude) return; if(this.power < consumption) return; this.power -= consumption; - + int scan = this.getRange(); - + RadarScanParams params = new RadarScanParams(this.scanMissiles, this.scanShells, this.scanPlayers, this.smartMode); - + for(Entity e : matchingEntities) { - + if(e.dimension == worldObj.provider.dimensionId && Math.abs(e.posX - (xCoord + 0.5)) <= scan && Math.abs(e.posZ - (zCoord + 0.5)) <= scan && e.posY - yCoord > radarBuffer) { - + if(e instanceof EntityLivingBase && HbmLivingProps.getDigamma((EntityLivingBase) e) > 0.001) { this.jammed = true; entries.clear(); return; } - + for(Function, RadarEntry> converter : converters) { - + RadarEntry entry = converter.apply(new Triplet(e, this, params)); if(entry != null) { this.entries.add(entry); @@ -363,33 +360,33 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I } } } - + public int getRedPower() { - + if(!entries.isEmpty()) { - + /// PROXIMITY /// if(redMode) { - + double maxRange = this.getRange() * Math.sqrt(2D); int power = 0; - + for(int i = 0; i < entries.size(); i++) { RadarEntry e = entries.get(i); if(!e.redstone) continue; double dist = Math.sqrt(Math.pow(e.posX - xCoord, 2) + Math.pow(e.posZ - zCoord, 2)); int p = 15 - (int)Math.floor(dist / maxRange * 15); - + if(p > power) power = p; } - + return power; - + /// TIER /// } else { - + int power = 0; - + for(int i = 0; i < entries.size(); i++) { RadarEntry e = entries.get(i); if(!e.redstone) continue; @@ -397,11 +394,11 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I power = e.blipLevel + 1; } } - + return power; } } - + return 0; } @@ -426,10 +423,10 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I } @Override public void receiveControl(NBTTagCompound data) { } - + @Override public void receiveControl(EntityPlayer player, NBTTagCompound data) { - + if(data.hasKey("missiles")) this.scanMissiles = !this.scanMissiles; if(data.hasKey("shells")) this.scanShells = !this.scanShells; if(data.hasKey("players")) this.scanPlayers = !this.scanPlayers; @@ -439,11 +436,11 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I if(data.hasKey("clear")) this.clearFlag = true; if(data.hasKey("gui1")) FMLNetworkHandler.openGui(player, MainRegistry.instance, 1, worldObj, xCoord, yCoord, zCoord); - + if(data.hasKey("link")) { int id = data.getInteger("link"); ItemStack link = slots[id]; - + if(link != null && link.getItem() == ModItems.sat_relay) { World world = player.getEntityWorld(); Satellite sat = SatelliteSavedData.getData(world).getSatFromFreq(ISatChip.getFreqS(link)); @@ -464,15 +461,24 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I sat.onCoordAction(world, player, x, y, z); } } + if(sat instanceof SatelliteResonator) { + if(data.hasKey("launchPosX")) { + int x = data.getInteger("launchPosX"); + int z = data.getInteger("launchPosZ"); + int y = world.getTopSolidOrLiquidBlock(x, z); //the top fucking block because I will never make radars transmit Y coordinates as well! + worldObj.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); + sat.onCoordAction(world, player, x, y, z); + } + } } if(link != null && link.getItem() == ModItems.radar_linker) { BlockPos pos = ItemCoordinateBase.getPosition(link); - + if(pos != null) { TileEntity tile = worldObj.getTileEntity(pos.getX(), pos.getY(), pos.getZ()); if(tile instanceof IRadarCommandReceiver) { IRadarCommandReceiver rec = (IRadarCommandReceiver) tile; - + if(data.hasKey("launchEntity")) { Entity entity = worldObj.getEntityByID(data.getInteger("launchEntity")); if(entity != null) { @@ -492,12 +498,12 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I } } } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 1, @@ -508,10 +514,10 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I zCoord + 2 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -535,25 +541,25 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { if(ID == 0) return new GUIMachineRadarNT(this); if(ID == 1) return new GUIMachineRadarNTSlots(player.inventory, this); return null; } - + /** List of lambdas that are supplied a Pair with the entity and radar in question to generate a RadarEntry The converters coming first have the highest priority */ public static List, RadarEntry>> converters = new ArrayList(); public static List classes = new ArrayList(); public static List matchingEntities = new ArrayList(); - + /** * Iterates over every entity in the world and add them to the matchingEntities list if the class is in the detectable list * From this compiled list, radars can easily grab the required entities since we can assume that the total amount of detectable entities is comparatively low */ public static void updateSystem() { matchingEntities.clear(); - + for(WorldServer world : MinecraftServer.getServer().worldServers) { for(Object entity : world.loadedEntityList) { for(Class clazz : classes) { @@ -572,7 +578,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I classes.add(IRadarDetectable.class); classes.add(EntityPlayer.class); } - + /** Registers converters. Converters are used to go over the list of detected entities and turn them into a RadarEntry using the entity instance and the radar's instance. */ public static void registerConverters() { //IRadarDetectableNT diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java index ba08f0d82..9b55ca183 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java @@ -3,20 +3,17 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; import java.util.List; -import com.hbm.packet.BufPacket; -import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IBufPacketReceiver; import api.hbm.entity.RadarEntry; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import com.hbm.tileentity.TileEntityLoadedBase; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -public class TileEntityMachineRadarScreen extends TileEntity implements IBufPacketReceiver { - +public class TileEntityMachineRadarScreen extends TileEntityLoadedBase implements IBufPacketReceiver { + public List entries = new ArrayList(); public int refX; public int refY; @@ -26,18 +23,14 @@ public class TileEntityMachineRadarScreen extends TileEntity implements IBufPack @Override public void updateEntity() { - + if(!worldObj.isRemote) { this.networkPackNT(100); entries.clear(); this.linked = false; } } - - public void networkPackNT(int range) { - if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); - } - + @Override public void serialize(ByteBuf buf) { buf.writeBoolean(linked); @@ -48,7 +41,7 @@ public class TileEntityMachineRadarScreen extends TileEntity implements IBufPack buf.writeInt(entries.size()); for(RadarEntry entry : entries) entry.toBytes(buf); } - + @Override public void deserialize(ByteBuf buf) { linked = buf.readBoolean(); @@ -64,12 +57,12 @@ public class TileEntityMachineRadarScreen extends TileEntity implements IBufPack this.entries.add(entry); } } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 1, @@ -80,10 +73,10 @@ public class TileEntityMachineRadarScreen extends TileEntity implements IBufPack zCoord + 2 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java index c468441a0..67c8f316b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java @@ -11,6 +11,7 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemRTGPellet; import com.hbm.items.machine.ItemRTGPelletDepleted; import com.hbm.lib.Library; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CompatEnergyControl; @@ -23,7 +24,7 @@ import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemFood; @@ -33,17 +34,17 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineRadiolysis extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, IInfoProviderEC { - +public class TileEntityMachineRadiolysis extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, IInfoProviderEC, IFluidCopiable { + public long power; public static final int maxPower = 1000000; public int heat; public FluidTank[] tanks; - + private static final int[] slot_io = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13 }; private static final int[] slot_rtg = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; - + public TileEntityMachineRadiolysis() { super(15); //10 rtg slots, 2 fluid ID slots (io), 2 irradiation slots (io), battery slot tanks = new FluidTank[3]; @@ -51,12 +52,12 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement tanks[1] = new FluidTank(Fluids.NONE, 2_000); tanks[2] = new FluidTank(Fluids.NONE, 2_000); } - + @Override public String getName() { return "container.radiolysis"; } - + /* IO Methods */ @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { @@ -67,89 +68,93 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement public int[] getAccessibleSlotsFromSide(int side) { return slot_io; } - + @Override public boolean canExtractItem(int i, ItemStack itemStack, int j) { return (i < 10 && itemStack.getItem() instanceof ItemRTGPelletDepleted) || i == 13; } - + /* NBT Methods */ @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - + this.power = nbt.getLong("power"); this.heat = nbt.getInteger("heat"); - + tanks[0].readFromNBT(nbt, "input"); tanks[1].readFromNBT(nbt, "output1"); tanks[2].readFromNBT(nbt, "output2"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + nbt.setLong("power", power); nbt.setInteger("heat", heat); - + tanks[0].writeToNBT(nbt, "input"); tanks[1].writeToNBT(nbt, "output1"); tanks[2].writeToNBT(nbt, "output2"); } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.power = data.getLong("power"); - this.heat = data.getInteger("heat"); - tanks[0].readFromNBT(data, "t0"); - tanks[1].readFromNBT(data, "t1"); - tanks[2].readFromNBT(data, "t2"); - } - + @Override public void updateEntity() { - + if(!worldObj.isRemote) { power = Library.chargeItemsFromTE(slots, 14, power, maxPower); - + heat = RTGUtil.updateRTGs(slots, slot_rtg); power += heat * 10; - + if(power > maxPower) power = maxPower; - + tanks[0].setType(10, 11, slots); setupTanks(); - + if(heat > 100) { int crackTime = (int) Math.max(-0.1 * (heat - 100) + 30, 5); - + if(worldObj.getTotalWorldTime() % crackTime == 0) crack(); - + if(heat >= 200 && worldObj.getTotalWorldTime() % 100 == 0) sterilize(); } - + for(DirPos pos : getConPos()) { this.tryProvide(worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); if(tanks[2].getFill() > 0) this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("heat", heat); - tanks[0].writeToNBT(data, "t0"); - tanks[1].writeToNBT(data, "t1"); - tanks[2].writeToNBT(data, "t2"); - this.networkPack(data, 50); + + this.networkPackNT(50); } } - + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + buf.writeInt(this.heat); + tanks[0].serialize(buf); + tanks[1].serialize(buf); + tanks[2].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.heat = buf.readInt(); + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); + tanks[2].deserialize(buf); + } + protected DirPos[] getConPos() { return new DirPos[] { new DirPos(xCoord + 2, yCoord, zCoord, Library.POS_X), @@ -158,17 +163,17 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement new DirPos(xCoord, yCoord, zCoord - 2, Library.NEG_Z) }; } - + /* Processing Methods */ private void crack() { - + Pair quart = RadiolysisRecipes.getRadiolysis(tanks[0].getTankType()); - + if(quart != null) { - + int left = quart.getKey().fill; int right = quart.getValue().fill; - + if(tanks[0].getFill() >= 100 && hasSpace(left, right)) { tanks[0].setFill(tanks[0].getFill() - 100); tanks[1].setFill(tanks[1].getFill() + left); @@ -176,15 +181,15 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement } } } - + private boolean hasSpace(int left, int right) { return tanks[1].getFill() + left <= tanks[1].getMaxFill() && tanks[2].getFill() + right <= tanks[2].getMaxFill(); } - + private void setupTanks() { - + Pair quart = RadiolysisRecipes.getRadiolysis(tanks[0].getTankType()); - + if(quart != null) { tanks[1].setTankType(quart.getKey().type); tanks[2].setTankType(quart.getValue().type); @@ -193,21 +198,21 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement tanks[1].setTankType(Fluids.NONE); tanks[2].setTankType(Fluids.NONE); } - + } - + // Code: pressure, sword, sterilize. private void sterilize() { if(slots[12] != null) { if(slots[12].getItem() instanceof ItemFood && !(slots[12].getItem() == ModItems.pancake)) { this.decrStackSize(12, 1); } - + if(!checkIfValid()) return; - + ItemStack output = slots[12].copy(); output.stackSize = 1; - + if(slots[13] == null) { this.decrStackSize(12, output.stackSize); slots[13] = output; @@ -227,14 +232,14 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement } } } - + private boolean checkIfValid() { if(slots[12] == null) return false; if(!slots[12].hasTagCompound()) return false; if(!slots[12].getTagCompound().getBoolean("ntmContagion")) return false; return true; } - + /* Power methods */ @Override public void setPower(long power) { @@ -250,7 +255,7 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement public long getMaxPower() { return maxPower; } - + @Override public FluidTank[] getAllTanks() { return tanks; @@ -270,11 +275,11 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement public boolean canConnect(FluidType type, ForgeDirection dir) { return dir != ForgeDirection.UNKNOWN && dir != ForgeDirection.DOWN; } - + public AxisAlignedBB getRenderBoundingBox() { return AxisAlignedBB.getBoundingBox(xCoord - 1, yCoord, zCoord - 1, xCoord + 2, yCoord + 3, zCoord + 2); } - + @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { return 65536.0D; @@ -287,7 +292,7 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIRadiolysis(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java index ceb1bef2c..3776b6701 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorBreeding.java @@ -15,12 +15,12 @@ import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; 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; import net.minecraft.item.ItemStack; @@ -66,19 +66,23 @@ public class TileEntityMachineReactorBreeding extends TileEntityMachineBase impl } else { progress = 0.0F; } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("flux", flux); - data.setFloat("progress", progress); - this.networkPack(data, 20); + + this.networkPackNT(20); } } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - flux = data.getInteger("flux"); - progress = data.getFloat("progress"); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(flux); + buf.writeFloat(progress); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.flux = buf.readInt(); + this.progress = buf.readFloat(); } public void getInteractions() { @@ -247,7 +251,7 @@ public class TileEntityMachineReactorBreeding extends TileEntityMachineBase impl @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineReactorBreeding(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java new file mode 100644 index 000000000..3b14b0dbb --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java @@ -0,0 +1,375 @@ +package com.hbm.tileentity.machine; + +import java.util.Random; + +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.container.ContainerMachineRotaryFurnace; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.gui.GUIMachineRotaryFurnace; +import com.hbm.inventory.material.MaterialShapes; +import com.hbm.inventory.material.Mats; +import com.hbm.inventory.material.Mats.MaterialStack; +import com.hbm.inventory.recipes.RotaryFurnaceRecipes; +import com.hbm.inventory.recipes.RotaryFurnaceRecipes.RotaryFurnaceRecipe; +import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.tileentity.IConditionalInvAccess; +import com.hbm.tileentity.IFluidCopiable; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachinePolluting; +import com.hbm.util.CrucibleUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntityFurnace; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting implements IFluidStandardTransceiver, IGUIProvider, IFluidCopiable, IConditionalInvAccess { + + public FluidTank[] tanks; + public boolean isProgressing; + public float progress; + public int burnTime; + public int maxBurnTime; + public boolean isVenting; + public MaterialStack output; + public static final int maxOutput = MaterialShapes.BLOCK.q(16); + + public int anim; + public int lastAnim; + + public TileEntityMachineRotaryFurnace() { + super(5, 50); + tanks = new FluidTank[3]; + tanks[0] = new FluidTank(Fluids.NONE, 16_000); + tanks[1] = new FluidTank(Fluids.STEAM, 4_000); + tanks[2] = new FluidTank(Fluids.SPENTSTEAM, 40); + } + + @Override + public String getName() { + return "container.machineRotaryFurnace"; + } + + @Override + public void updateEntity() { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); + + if(!worldObj.isRemote) { + + tanks[0].setType(3, slots); + + for(DirPos pos : getSteamPos()) { + this.trySubscribe(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[2].getFill() > 0) this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + if(tanks[0].getTankType() != Fluids.NONE) for(DirPos pos : getFluidPos()) { + this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + + if(smoke.getFill() > 0) this.sendFluid(smoke, worldObj, xCoord + rot.offsetX, yCoord + 5, zCoord + rot.offsetZ, Library.POS_Y); + + if(this.output != null) { + + int prev = this.output.amount; + Vec3 impact = Vec3.createVectorHelper(0, 0, 0); + MaterialStack leftover = CrucibleUtil.pourSingleStack(worldObj, xCoord + 0.5D + rot.offsetX * 2.875D, yCoord + 1.25D, zCoord + 0.5D + rot.offsetZ * 2.875D, 6, true, this.output, MaterialShapes.INGOT.q(1), impact); + this.output = leftover; + + if(prev != this.output.amount) { + this.output = leftover; + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "foundry"); + data.setInteger("color", leftover.material.moltenColor); + data.setByte("dir", (byte) rot.ordinal()); + data.setFloat("off", 0.625F); + data.setFloat("base", 0.625F); + data.setFloat("len", Math.max(1F, yCoord + 1 - (float) (Math.ceil(impact.yCoord) - 1.125))); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D + rot.offsetX * 2.875D, yCoord + 0.75, zCoord + 0.5D + rot.offsetZ * 2.875D), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 50)); + } + + if(output.amount <= 0) this.output = null; + } + + RotaryFurnaceRecipe recipe = RotaryFurnaceRecipes.getRecipe(slots[0], slots[1], slots[2]); + this.isProgressing = false; + + if(recipe != null) { + + if(this.burnTime <= 0 && slots[4] != null && TileEntityFurnace.isItemFuel(slots[4])) { + this.maxBurnTime = this.burnTime = TileEntityFurnace.getItemBurnTime(slots[4]) / 2; + this.decrStackSize(4, 1); + this.markChanged(); + } + + if(this.canProcess(recipe)) { + this.progress += 1F / recipe.duration; + tanks[1].setFill(tanks[1].getFill() - recipe.steam); + tanks[2].setFill(tanks[2].getFill() + recipe.steam / 100); + this.isProgressing = true; + + if(this.progress >= 1F) { + this.progress -= 1F; + this.consumeItems(recipe); + + if(this.output == null) { + this.output = recipe.output.copy(); + } else { + this.output.amount += recipe.output.amount; + } + this.markDirty(); + } + + } else { + this.progress = 0; + } + } else { + this.progress = 0; + } + + this.isVenting = false; + if(this.burnTime > 0) { + this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND / 10F); + this.burnTime--; + } + + this.networkPackNT(50); + + } else { + + if(this.burnTime > 0 && MainRegistry.proxy.me().getDistance(xCoord, yCoord, zCoord) < 25) { + Random rand = worldObj.rand; + worldObj.spawnParticle("flame", xCoord + 0.5 + dir.offsetX * 0.5 + rot.offsetX + rand.nextGaussian() * 0.25, yCoord + 0.375, zCoord + 0.5 + dir.offsetZ * 0.5 + rot.offsetZ + rand.nextGaussian() * 0.25, 0, 0, 0); + } + + if(isVenting && worldObj.getTotalWorldTime() % 2 == 0) { + + NBTTagCompound fx = new NBTTagCompound(); + fx.setString("type", "tower"); + fx.setFloat("lift", 10F); + fx.setFloat("base", 0.25F); + fx.setFloat("max", 2.5F); + fx.setInteger("life", 100 + worldObj.rand.nextInt(20)); + fx.setInteger("color",0x202020); + fx.setDouble("posX", xCoord + 0.5 + rot.offsetX); + fx.setDouble("posY", yCoord + 5); + fx.setDouble("posZ", zCoord + 0.5 + rot.offsetZ); + MainRegistry.proxy.effectNT(fx); + } + this.lastAnim = this.anim; + if(this.isProgressing) { + this.anim++; + } + } + } + + @Override public void serialize(ByteBuf buf) { + super.serialize(buf); + tanks[0].serialize(buf); + tanks[1].serialize(buf); + tanks[2].serialize(buf); + buf.writeBoolean(isVenting); + buf.writeBoolean(isProgressing); + buf.writeFloat(progress); + buf.writeInt(burnTime); + buf.writeInt(maxBurnTime); + + if(this.output != null) { + buf.writeBoolean(true); + buf.writeInt(this.output.material.id); + buf.writeInt(this.output.amount); + } else { + buf.writeBoolean(false); + } + } + + @Override public void deserialize(ByteBuf buf) { + super.deserialize(buf); + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); + tanks[2].deserialize(buf); + isVenting = buf.readBoolean(); + isProgressing = buf.readBoolean(); + progress = buf.readFloat(); + burnTime = buf.readInt(); + maxBurnTime = buf.readInt(); + + if(buf.readBoolean()) { + this.output = new MaterialStack(Mats.matById.get(buf.readInt()), buf.readInt()); + } else { + this.output = null; + } + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.tanks[0].readFromNBT(nbt, "t0"); + this.tanks[1].readFromNBT(nbt, "t1"); + this.tanks[2].readFromNBT(nbt, "t2"); + this.progress = nbt.getFloat("prog"); + this.burnTime = nbt.getInteger("burn"); + this.maxBurnTime = nbt.getInteger("maxBurn"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + this.tanks[0].writeToNBT(nbt, "t0"); + this.tanks[1].writeToNBT(nbt, "t1"); + this.tanks[2].writeToNBT(nbt, "t2"); + nbt.setFloat("prog", progress); + nbt.setInteger("burn", burnTime); + nbt.setInteger("maxBurn", maxBurnTime); + } + + public DirPos[] getSteamPos() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); + + return new DirPos[] { + new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ * 2, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ, dir.getOpposite()) + }; + } + + public DirPos[] getFluidPos() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); + + return new DirPos[] { + new DirPos(xCoord + dir.offsetX + rot.offsetX * 3, yCoord, zCoord + dir.offsetZ + rot.offsetZ * 3, rot), + new DirPos(xCoord - dir.offsetX + rot.offsetX * 3, yCoord, zCoord - dir.offsetZ + rot.offsetZ * 3, rot) + }; + } + + public boolean canProcess(RotaryFurnaceRecipe recipe) { + + if(this.burnTime <= 0) return false; + + if(recipe.fluid != null) { + if(this.tanks[0].getTankType() != recipe.fluid.type) return false; + if(this.tanks[0].getFill() < recipe.fluid.fill) return false; + } + + if(tanks[1].getFill() < recipe.steam) return false; + if(tanks[2].getMaxFill() - tanks[2].getFill() < recipe.steam / 100) return false; + + if(this.output != null) { + if(this.output.material != recipe.output.material) return false; + if(this.output.amount + recipe.output.amount > this.maxOutput) return false; + } + + return true; + } + + public void consumeItems(RotaryFurnaceRecipe recipe) { + + for(AStack aStack : recipe.ingredients) { + + for(int i = 0; i < 3; i++) { + ItemStack stack = slots[i]; + if(aStack.matchesRecipe(stack, true) && stack.stackSize >= aStack.stacksize) { + this.decrStackSize(i, aStack.stacksize); + break; + } + } + } + + if(recipe.fluid != null) { + this.tanks[0].setFill(tanks[0].getFill() - recipe.fluid.fill); + } + } + + @Override + public void pollute(PollutionType type, float amount) { + FluidTank tank = type == PollutionType.SOOT ? smoke : type == PollutionType.HEAVYMETAL ? smoke_leaded : smoke_poison; + + int fluidAmount = (int) Math.ceil(amount * 100); + tank.setFill(tank.getFill() + fluidAmount); + + if(tank.getFill() > tank.getMaxFill()) { + int overflow = tank.getFill() - tank.getMaxFill(); + tank.setFill(tank.getMaxFill()); + PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, type, overflow / 100F); + this.isVenting = true; + } + } + + @Override public int[] getAccessibleSlotsFromSide(int side) { return new int[0]; } + @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { return slot < 3 || slot == 4; } + @Override public boolean canExtractItem(int slot, ItemStack stack, int side) { return false; } + + @Override public boolean isItemValidForSlot(int x, int y, int z, int slot, ItemStack stack) { return slot < 3 || slot == 4; } + @Override public boolean canExtractItem(int x, int y, int z, int slot, ItemStack stack, int side) { return false; } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 2, + yCoord, + zCoord - 2, + xCoord + 3, + yCoord + 5, + zCoord + 3 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public int[] getAccessibleSlotsFromSide(int x, int y, int z, int side) { + BlockPos pos = new BlockPos(x, y, z); + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + BlockPos core = new BlockPos(xCoord, yCoord, zCoord); + + //Red + if(side == dir.getOpposite().ordinal() && pos.equals(core.clone().offset(dir, -1).offset(rot, -2))) return new int[] {0}; + //Yellow + if(side == dir.getOpposite().ordinal() && pos.equals(core.clone().offset(dir, -1).offset(rot, -1))) return new int[] {1}; + //Green + if(side == dir.getOpposite().ordinal() && pos.equals(core.clone().offset(dir, -1))) return new int[] {2}; + //Fuel + if(side == dir.ordinal() && pos.equals(core.clone().offset(dir, 1).offset(rot, -1))) return new int[] {4}; + + return new int[] { }; + } + + @Override public FluidTank[] getAllTanks() { return new FluidTank[] {tanks[0], tanks[1], tanks[2], smoke}; } + @Override public FluidTank[] getSendingTanks() { return new FluidTank[] {tanks[2], smoke}; } + @Override public FluidTank[] getReceivingTanks() { return new FluidTank[] {tanks[0], tanks[1]}; } + + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineRotaryFurnace(player.inventory, this); } + @Override public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineRotaryFurnace(player.inventory, this); } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java index f195414d3..bbe713965 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java @@ -12,7 +12,6 @@ import com.hbm.saveddata.satellites.SatelliteMiner; import com.hbm.tileentity.IGUIProvider; 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.inventory.IInventory; @@ -340,7 +339,7 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUISatDock(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLinker.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLinker.java index 8c3583106..7e95c91ad 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLinker.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLinker.java @@ -8,7 +8,6 @@ import com.hbm.tileentity.IGUIProvider; 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.inventory.ISidedInventory; @@ -190,7 +189,7 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineSatLinker(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java index 7f9241d46..6f9016127 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java @@ -16,7 +16,7 @@ import api.hbm.energymk2.IBatteryItem; import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -167,11 +167,8 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB } else { process = 0; } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("progress", process); - this.networkPack(data, 50); + + this.networkPackNT(50); } else { @@ -193,7 +190,21 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB } } } - + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + buf.writeInt(this.process); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.process = buf.readInt(); + } + @Override public AudioWrapper createAudioLoop() { return MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F); @@ -224,14 +235,6 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB audio = null; } } - - @Override - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.power = data.getLong("power"); - this.process = data.getInteger("progress"); - } @Override public void setPower(long i) { @@ -255,7 +258,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineSchrabidiumTransmutator(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java index 9ac85cf5c..f948a67f4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java @@ -5,17 +5,14 @@ import com.hbm.inventory.gui.GUIMachineShredder; import com.hbm.inventory.recipes.ShredderRecipes; import com.hbm.items.machine.ItemBlades; import com.hbm.lib.Library; -import com.hbm.packet.AuxElectricityPacket; -import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energymk2.IBatteryItem; import api.hbm.energymk2.IEnergyReceiverMK2; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.ISidedInventory; @@ -34,11 +31,11 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I public int soundCycle = 0; public static final long maxPower = 10000; public static final int processingSpeed = 60; - + private static final int[] slots_io = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29}; - + private String customName; - + public TileEntityMachineShredder() { slots = new ItemStack[30]; } @@ -83,7 +80,7 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I public boolean hasCustomInventoryName() { return this.customName != null && this.customName.length() > 0; } - + public void setCustomName(String name) { this.customName = name; } @@ -102,7 +99,7 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=64; } } - + //You scrubs aren't needed for anything (right now) @Override public void openInventory() {} @@ -114,10 +111,10 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I if(i < 9) return ShredderRecipes.getShredderResult(stack) != null && !(stack.getItem() instanceof ItemBlades); if(i == 29) return stack.getItem() instanceof IBatteryItem; if(i == 27 || i == 28) return stack.getItem() instanceof ItemBlades; - + return false; } - + @Override public ItemStack decrStackSize(int i, int j) { if(slots[i] != null) @@ -133,21 +130,21 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I { slots[i] = null; } - + return itemStack1; } else { return null; } } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); NBTTagList list = nbt.getTagList("items", 10); - + this.power = nbt.getLong("powerTime"); slots = new ItemStack[getSizeInventory()]; - + for(int i = 0; i < list.tagCount(); i++) { NBTTagCompound nbt1 = list.getCompoundTagAt(i); @@ -158,13 +155,13 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I } } } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setLong("powerTime", power); NBTTagList list = new NBTTagList(); - + for(int i = 0; i < slots.length; i++) { if(slots[i] != null) @@ -177,7 +174,7 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I } nbt.setTag("items", list); } - + @Override public int[] getAccessibleSlotsFromSide(int side) { return slots_io; @@ -187,20 +184,20 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I public boolean canInsertItem(int slot, ItemStack itemStack, int side) { if((slot >= 9 && slot != 27 && slot != 28) || !this.isItemValidForSlot(slot, itemStack)) return false; - + if(slots[slot] == null) return true; - + int size = slots[slot].stackSize; - + for(int k = 0; k < 9; k++) { if(slots[k] == null) return false; - + if(slots[k].getItem() == itemStack.getItem() && slots[k].getItemDamage() == itemStack.getItemDamage() && slots[k].stackSize < size) return false; } - + return true; } @@ -208,42 +205,42 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I public boolean canExtractItem(int i, ItemStack itemStack, int j) { if(i >= 9 && i <= 26) return true; if(i >= 27 && i <= 28) if(itemStack.getItemDamage() == itemStack.getMaxDamage() && itemStack.getMaxDamage() > 0) return true; - + return false; } - + public int getDiFurnaceProgressScaled(int i) { return (progress * i) / processingSpeed; } - + public boolean hasPower() { return power > 0; } - + public boolean isProcessing() { return this.progress > 0; } - + @Override public void updateEntity() { boolean flag1 = false; - + if(!worldObj.isRemote) { - + this.updateConnections(); - + if(hasPower() && canProcess()) { progress++; - + power -= 5; - + if(this.progress == TileEntityMachineShredder.processingSpeed) { for(int i = 27; i <= 28; i++) if(slots[i].getMaxDamage() > 0) this.slots[i].setItemDamage(this.slots[i].getItemDamage() + 1); - + this.progress = 0; this.processItem(); flag1 = true; @@ -251,66 +248,78 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I if(soundCycle == 0) this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "minecart.base", getVolume(1.0F), 0.75F); soundCycle++; - + if(soundCycle >= 50) soundCycle = 0; }else{ progress = 0; } - + boolean trigger = true; - + if(hasPower() && canProcess() && this.progress == 0) { trigger = false; } - + if(trigger) { flag1 = true; } - + power = Library.chargeTEFromItems(slots, 29, power, maxPower); - - PacketDispatcher.wrapper.sendToAllAround(new AuxElectricityPacket(xCoord, yCoord, zCoord, power), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); + + networkPackNT(50); } - + if(flag1) { this.markDirty(); } } - + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + } + private void updateConnections() { - + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } - + public void processItem() { - + for(int inpSlot = 0; inpSlot < 9; inpSlot++) { if(slots[inpSlot] != null && hasSpace(slots[inpSlot])) { ItemStack inp = slots[inpSlot]; ItemStack outp = ShredderRecipes.getShredderResult(inp); - + boolean flag = false; - + for (int outSlot = 9; outSlot < 27; outSlot++) { - if (slots[outSlot] != null && slots[outSlot].getItem() == outp.getItem() && + if (slots[outSlot] != null && slots[outSlot].getItem() == outp.getItem() && slots[outSlot].getItemDamage() == outp.getItemDamage() && slots[outSlot].stackSize + outp.stackSize <= outp.getMaxStackSize()) { - + slots[outSlot].stackSize += outp.stackSize; slots[inpSlot].stackSize -= 1; flag = true; break; } } - + if(!flag) for (int outSlot = 9; outSlot < 27; outSlot++) { @@ -320,18 +329,18 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I break; } } - + if(slots[inpSlot].stackSize <= 0) slots[inpSlot] = null; } } } - + public boolean canProcess() { - if(slots[27] != null && slots[28] != null && - this.getGearLeft() > 0 && this.getGearLeft() < 3 && + if(slots[27] != null && slots[28] != null && + this.getGearLeft() > 0 && this.getGearLeft() < 3 && this.getGearRight() > 0 && this.getGearRight() < 3) { - + for(int i = 0; i < 9; i++) { if(slots[i] != null && slots[i].stackSize > 0 && hasSpace(slots[i])) @@ -340,14 +349,14 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I } } } - + return false; } - + public boolean hasSpace(ItemStack stack) { - + ItemStack result = ShredderRecipes.getShredderResult(stack); - + if (result != null) for (int i = 9; i < 27; i++) { if (slots[i] == null) { @@ -359,16 +368,16 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I return true; } } - + return false; } @Override public void setPower(long i) { this.power = i; - + } - + public long getPowerScaled(long i) { return (power * i) / maxPower; } @@ -382,14 +391,14 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I public long getMaxPower() { return TileEntityMachineShredder.maxPower; } - + public int getGearLeft() { - + if(slots[27] != null && slots[27].getItem() instanceof ItemBlades) { if(slots[27].getMaxDamage() == 0) return 1; - + if(slots[27].getItemDamage() < slots[27].getItem().getMaxDamage()/2) { return 1; @@ -399,17 +408,17 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I return 3; } } - + return 0; } - + public int getGearRight() { - + if(slots[28] != null && slots[28].getItem() instanceof ItemBlades) { if(slots[28].getMaxDamage() == 0) return 1; - + if(slots[28].getItemDamage() < slots[28].getItem().getMaxDamage()/2) { return 1; @@ -419,7 +428,7 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I return 3; } } - + return 0; } @@ -430,7 +439,7 @@ public class TileEntityMachineShredder extends TileEntityLoadedBase implements I @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineShredder(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSiren.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSiren.java index a2ebd812f..7c10537d6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSiren.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSiren.java @@ -8,13 +8,12 @@ import com.hbm.items.machine.ItemCassette; import com.hbm.items.machine.ItemCassette.SoundType; import com.hbm.items.machine.ItemCassette.TrackType; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TESirenPacket; +import com.hbm.packet.toclient.TESirenPacket; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; 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.inventory.ISidedInventory; @@ -233,7 +232,7 @@ public class TileEntityMachineSiren extends TileEntity implements ISidedInventor @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineSiren(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java index 3ccf6ef70..bf1c795da 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java @@ -1,9 +1,11 @@ package com.hbm.tileentity.machine; +import java.util.HashMap; import java.util.List; import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.UpgradeManager; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.container.ContainerMachineSolderingStation; import com.hbm.inventory.fluid.Fluids; @@ -14,8 +16,9 @@ import com.hbm.inventory.recipes.SolderingRecipes.SolderingRecipe; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.IFluidCopiable; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; @@ -27,7 +30,7 @@ import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.Item; @@ -38,18 +41,21 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineSolderingStation extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IUpgradeInfoProvider { +public class TileEntityMachineSolderingStation extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider, IFluidCopiable { public long power; public long maxPower = 2_000; public long consumption; - + public boolean collisionPrevention = false; + public int progress; public int processTime = 1; - + public FluidTank tank; public ItemStack display; - + + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + public TileEntityMachineSolderingStation() { super(11); this.tank = new FluidTank(Fluids.NONE, 8_000); @@ -63,56 +69,58 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp @Override public void setInventorySlotContents(int i, ItemStack stack) { super.setInventorySlotContents(i, stack); - + if(stack != null && stack.getItem() instanceof ItemMachineUpgrade && i >= 9 && i <= 10) { worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:item.upgradePlug", 1.0F, 1.0F); } } + private SolderingRecipe recipe; + @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + this.power = Library.chargeTEFromItems(slots, 7, this.getPower(), this.getMaxPower()); this.tank.setType(8, slots); - + if(worldObj.getTotalWorldTime() % 20 == 0) { for(DirPos pos : getConPos()) { this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); if(tank.getTankType() != Fluids.NONE) this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - - SolderingRecipe recipe = SolderingRecipes.getRecipe(new ItemStack[] {slots[0], slots[1], slots[2], slots[3], slots[4], slots[5]}); + + recipe = SolderingRecipes.getRecipe(new ItemStack[] {slots[0], slots[1], slots[2], slots[3], slots[4], slots[5]}); long intendedMaxPower; - - UpgradeManager.eval(slots, 9, 10); - int redLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); - int blueLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); - + + upgradeManager.checkSlots(this, slots, 9, 10); + int redLevel = upgradeManager.getLevel(UpgradeType.SPEED); + int blueLevel = upgradeManager.getLevel(UpgradeType.POWER); + if(recipe != null) { this.processTime = recipe.duration - (recipe.duration * redLevel / 6) + (recipe.duration * blueLevel / 3); this.consumption = recipe.consumption + (recipe.consumption * redLevel) - (recipe.consumption * blueLevel / 6); intendedMaxPower = recipe.consumption * 20; - + if(canProcess(recipe)) { this.progress++; this.power -= this.consumption; - + if(progress >= processTime) { this.progress = 0; this.consumeItems(recipe); - + if(slots[6] == null) { slots[6] = recipe.output.copy(); } else { slots[6].stackSize += recipe.output.stackSize; } - + this.markDirty(); } - + if(worldObj.getTotalWorldTime() % 20 == 0) { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); @@ -121,77 +129,66 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp dPart.setByte("count", (byte) 3); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(dPart, xCoord + 0.5 - dir.offsetX * 0.5 + rot.offsetX * 0.5, yCoord + 1.125, zCoord + 0.5 - dir.offsetZ * 0.5 + rot.offsetZ * 0.5), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 25)); } - + } else { this.progress = 0; } - + } else { this.progress = 0; this.consumption = 100; intendedMaxPower = 2000; } - + this.maxPower = Math.max(intendedMaxPower, power); - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setLong("maxPower", maxPower); - data.setLong("consumption", consumption); - data.setInteger("progress", progress); - data.setInteger("processTime", processTime); - if(recipe != null) { - data.setInteger("display", Item.getIdFromItem(recipe.output.getItem())); - data.setInteger("displayMeta", recipe.output.getItemDamage()); - } - this.tank.writeToNBT(data, "t"); - this.networkPack(data, 25); + + this.networkPackNT(25); } } - + public boolean canProcess(SolderingRecipe recipe) { - + if(this.power < this.consumption) return false; - + if(recipe.fluid != null) { if(this.tank.getTankType() != recipe.fluid.type) return false; if(this.tank.getFill() < recipe.fluid.fill) return false; } - - if(recipe.fluid == null && this.tank.getFill() > 0) return false; - + + if(collisionPrevention && recipe.fluid == null && this.tank.getFill() > 0) return false; + if(slots[6] != null) { if(slots[6].getItem() != recipe.output.getItem()) return false; if(slots[6].getItemDamage() != recipe.output.getItemDamage()) return false; if(slots[6].stackSize + recipe.output.stackSize > slots[6].getMaxStackSize()) return false; } - + return true; } - + public void consumeItems(SolderingRecipe recipe) { - + for(AStack aStack : recipe.toppings) { for(int i = 0; i < 3; i++) { ItemStack stack = slots[i]; if(aStack.matchesRecipe(stack, true) && stack.stackSize >= aStack.stacksize) { this.decrStackSize(i, aStack.stacksize); break; } } } - + for(AStack aStack : recipe.pcb) { for(int i = 3; i < 5; i++) { ItemStack stack = slots[i]; if(aStack.matchesRecipe(stack, true) && stack.stackSize >= aStack.stacksize) { this.decrStackSize(i, aStack.stacksize); break; } } } - + for(AStack aStack : recipe.solder) { for(int i = 5; i < 6; i++) { ItemStack stack = slots[i]; if(aStack.matchesRecipe(stack, true) && stack.stackSize >= aStack.stacksize) { this.decrStackSize(i, aStack.stacksize); break; } } } - + if(recipe.fluid != null) { this.tank.setFill(tank.getFill() - recipe.fluid.fill); } @@ -221,12 +218,12 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp public int[] getAccessibleSlotsFromSide(int side) { return new int[] { 0, 1, 2, 3, 4, 5, 6 }; } - + protected DirPos[] getConPos() { - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - + return new DirPos[] { new DirPos(xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ, dir), new DirPos(xCoord + dir.offsetX + rot.offsetX, yCoord, zCoord + dir.offsetZ + rot.offsetZ, dir), @@ -240,24 +237,42 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.maxPower = nbt.getLong("maxPower"); - this.consumption = nbt.getLong("consumption"); - this.progress = nbt.getInteger("progress"); - this.processTime = nbt.getInteger("processTime"); - - if(nbt.hasKey("display")) { - this.display = new ItemStack(Item.getItemById(nbt.getInteger("display")), 1, nbt.getInteger("displayMeta")); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + buf.writeLong(this.maxPower); + buf.writeLong(this.consumption); + buf.writeInt(this.progress); + buf.writeInt(this.processTime); + buf.writeBoolean(this.collisionPrevention); + buf.writeBoolean(recipe != null); + if(recipe != null) { + buf.writeInt(Item.getIdFromItem(recipe.output.getItem())); + buf.writeInt(recipe.output.getItemDamage()); + } + this.tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.maxPower = buf.readLong(); + this.consumption = buf.readLong(); + this.progress = buf.readInt(); + this.processTime = buf.readInt(); + this.collisionPrevention = buf.readBoolean(); + + if(buf.readBoolean()) { + int id = buf.readInt(); + this.display = new ItemStack(Item.getItemById(id), 1, buf.readInt()); } else { this.display = null; } - - this.tank.readFromNBT(nbt, "t"); + + this.tank.deserialize(buf); } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -266,9 +281,10 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp this.maxPower = nbt.getLong("maxPower"); this.progress = nbt.getInteger("progress"); this.processTime = nbt.getInteger("processTime"); + this.collisionPrevention = nbt.getBoolean("collisionPrevention"); tank.readFromNBT(nbt, "t"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -277,6 +293,7 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp nbt.setLong("maxPower", maxPower); nbt.setInteger("progress", progress); nbt.setInteger("processTime", processTime); + nbt.setBoolean("collisionPrevention", collisionPrevention); tank.writeToNBT(nbt, "t"); } @@ -312,15 +329,15 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineSolderingStation(player.inventory, this); } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 1, @@ -331,10 +348,10 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp zCoord + 2 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -360,9 +377,26 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 3; - if(type == UpgradeType.POWER) return 3; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 3); + upgrades.put(UpgradeType.POWER, 3); + return upgrades; + } + + @Override + public FluidTank getTankToPaste() { + return tank; + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + + @Override + public void receiveControl(NBTTagCompound data) { + this.collisionPrevention = !this.collisionPrevention; + this.markDirty(); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java index 71caf6423..00b4812ce 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java @@ -11,15 +11,11 @@ import com.hbm.inventory.material.Mats; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMold; import com.hbm.items.machine.ItemScraps; -import com.hbm.packet.NBTPacket; -import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.util.fauxpointtwelve.DirPos; -import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -32,10 +28,11 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; //god thank you bob for this base class -public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase implements IGUIProvider, ICrucibleAcceptor, ISidedInventory, IFluidStandardTransceiver, INBTPacketReceiver, IInventory { +public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase implements IGUIProvider, ICrucibleAcceptor, ISidedInventory, IFluidStandardTransceiver, IInventory { public FluidTank water; public FluidTank steam; + private long lastCastTick = 0; public String getName() { return "container.machineStrandCaster"; @@ -82,46 +79,52 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase ItemMold.Mold mold = this.getInstalledMold(); if(canProcess()) { + int minAmount = mold.getCost() * 9; - int itemsCasted = Math.min(amount / mold.getCost(), 9); - - for(int j = 0; j < itemsCasted; j++) { - this.amount -= mold.getCost(); - - ItemStack out = mold.getOutput(type); - - for(int i = 1; i < 7; i++) { - if(slots[i] == null) { - slots[i] = out.copy(); - break; - } - - if(slots[i].isItemEqual(out) && slots[i].stackSize + out.stackSize <= out.getMaxStackSize()) { - slots[i].stackSize += out.stackSize; - break; - } - - } + // Makes it flush the buffers after 10 seconds of inactivity + if(worldObj.getWorldTime() >= lastCastTick + 200) { + minAmount = mold.getCost(); } - markChanged(); - water.setFill(water.getFill() - getWaterRequired() * itemsCasted); - steam.setFill(steam.getFill() + getWaterRequired() * itemsCasted); + if(this.amount >= minAmount) { + int itemsCasted = amount / mold.getCost(); + + for(int j = 0; j < itemsCasted; j++) { + this.amount -= mold.getCost(); + + ItemStack out = mold.getOutput(type); + + for(int i = 1; i < 7; i++) { + if(slots[i] == null) { + slots[i] = out.copy(); + break; + } + + if(slots[i].isItemEqual(out) && slots[i].stackSize + out.stackSize <= out.getMaxStackSize()) { + slots[i].stackSize += out.stackSize; + break; + } + + } + } + markChanged(); + + water.setFill(water.getFill() - getWaterRequired() * itemsCasted); + steam.setFill(steam.getFill() + getWaterRequired() * itemsCasted); + + lastCastTick = worldObj.getWorldTime(); + } } - } - NBTTagCompound data = new NBTTagCompound(); + networkPackNT(150); - water.writeToNBT(data, "w"); - steam.writeToNBT(data, "s"); - - this.networkPack(data, 150); + } } public boolean canProcess() { ItemMold.Mold mold = this.getInstalledMold(); - if(type != null && mold != null && this.amount >= mold.getCost() * 9 && mold.getOutput(type) != null) { + if(type != null && mold != null && mold.getOutput(type) != null) { for(int i = 1; i < 7; i++) { if(slots[i] == null || slots[i].isItemEqual(mold.getOutput(type)) && slots[i].stackSize + mold.getOutput(type).stackSize <= mold.getOutput(type).getMaxStackSize()) return water.getFill() >= getWaterRequired() && steam.getFill() < steam.getMaxFill(); @@ -187,7 +190,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase } return false; - } + } @Override public boolean standardCheck(World world, int x, int y, int z, ForgeDirection side, Mats.MaterialStack stack) { @@ -250,20 +253,20 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineStrandCaster(player.inventory, this); } - public void networkPack(NBTTagCompound nbt, int range) { - if(!worldObj.isRemote) - PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new NetworkRegistry.TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); + @Override + public void serialize(ByteBuf buf) { + water.serialize(buf); + steam.serialize(buf); } @Override - public void networkUnpack(NBTTagCompound nbt) { - water.readFromNBT(nbt, "w"); - steam.readFromNBT(nbt, "s"); - + public void deserialize(ByteBuf buf) { + water.deserialize(buf); + steam.deserialize(buf); } @Override @@ -271,6 +274,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase super.writeToNBT(nbt); water.writeToNBT(nbt, "w"); steam.writeToNBT(nbt, "s"); + nbt.setLong("t", lastCastTick); } @Override @@ -278,6 +282,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase super.readFromNBT(nbt); water.readFromNBT(nbt, "w"); steam.readFromNBT(nbt, "s"); + lastCastTick = nbt.getLong("t"); } @Override @@ -338,7 +343,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase } public boolean isLoaded = true; - + @Override public boolean isLoaded() { return isLoaded; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTeleporter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTeleporter.java index 0784cd130..cdcbea5a3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTeleporter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTeleporter.java @@ -3,12 +3,14 @@ package com.hbm.tileentity.machine; import java.util.Iterator; import java.util.List; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energymk2.IEnergyReceiverMK2; +import com.hbm.util.BufferUtil; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.ReflectionHelper; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; import net.minecraft.entity.EntityTracker; @@ -29,7 +31,7 @@ import net.minecraft.world.WorldServer; import net.minecraft.world.chunk.IChunkProvider; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineTeleporter extends TileEntityLoadedBase implements IEnergyReceiverMK2, INBTPacketReceiver { +public class TileEntityMachineTeleporter extends TileEntityLoadedBase implements IEnergyReceiverMK2, IBufPacketReceiver { public long power = 0; public int targetX = -1; @@ -41,25 +43,22 @@ public class TileEntityMachineTeleporter extends TileEntityLoadedBase implements @Override public void updateEntity() { - + if(!this.worldObj.isRemote) { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); - + if(this.targetY != -1) { List entities = this.worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(this.xCoord + 0.25, this.yCoord, this.zCoord + 0.25, this.xCoord + 0.75, this.yCoord + 2, this.zCoord + 0.75)); - + if(!entities.isEmpty()) { for(Entity e : entities) { teleport(e); } } } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setIntArray("target", new int[] {targetX, targetY, targetZ, targetDim}); - INBTPacketReceiver.networkPack(this, data, 15); - + + networkPackNT(15); + } else { if(this.targetY != -1 && power >= consumption) { @@ -72,9 +71,15 @@ public class TileEntityMachineTeleporter extends TileEntityLoadedBase implements } @Override - public void networkUnpack(NBTTagCompound nbt) { - this.power = nbt.getLong("power"); - int[] target = nbt.getIntArray("target"); + public void serialize(ByteBuf buf) { + buf.writeLong(power); + BufferUtil.writeIntArray(buf, new int[] {targetX, targetY, targetZ, targetDim}); + } + + @Override + public void deserialize(ByteBuf buf) { + this.power = buf.readLong(); + int[] target = BufferUtil.readIntArray(buf); this.targetX = target[0]; this.targetY = target[1]; this.targetZ = target[2]; @@ -95,7 +100,7 @@ public class TileEntityMachineTeleporter extends TileEntityLoadedBase implements @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + nbt.setLong("power", power); nbt.setInteger("x1", targetX); nbt.setInteger("y1", targetY); @@ -104,25 +109,25 @@ public class TileEntityMachineTeleporter extends TileEntityLoadedBase implements } public void teleport(Entity entity) { - + if(this.power < consumption) return; - + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, "mob.endermen.portal", 1.0F, 1.0F); - + if((entity instanceof EntityPlayerMP)) { - + EntityPlayerMP player = (EntityPlayerMP) entity; if(entity.dimension == this.targetDim) { player.setPositionAndUpdate(this.targetX + 0.5D, this.targetY + 1.5D + entity.getYOffset(), this.targetZ + 0.5D); } else { teleportPlayerInterdimensionally(player, this.targetX + 0.5D, this.targetY + 1.5D + entity.getYOffset(), this.targetZ + 0.5D, this.targetDim); } - + } else { - + if(entity.dimension == this.targetDim) { entity.setPositionAndRotation(this.targetX + 0.5D, this.targetY + 1.5D + entity.getYOffset(), this.targetZ + 0.5D, entity.rotationYaw, entity.rotationPitch); - + try { EntityTracker entitytracker = ((WorldServer)worldObj).getEntityTracker(); IntHashMap map = ReflectionHelper.getPrivateValue(EntityTracker.class, entitytracker, "trackedEntityIDs", "field_72794_c"); @@ -138,21 +143,21 @@ public class TileEntityMachineTeleporter extends TileEntityLoadedBase implements teleportEntityInterdimensionally(entity, this.targetX + 0.5D, this.targetY + 1.5D + entity.getYOffset(), this.targetZ + 0.5D, this.targetDim); } } - + worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, "mob.endermen.portal", 1.0F, 1.0F); - + this.power -= consumption; this.markDirty(); } - + /** Teleports a player to a different dimension, gracefully copied from ServerConfigurationManager */ public static boolean teleportPlayerInterdimensionally(EntityPlayerMP player, double x, double y, double z, int dim) { - + int prevDim = player.dimension; WorldServer prevWorld = player.mcServer.worldServerForDimension(prevDim); WorldServer newWorld = player.mcServer.worldServerForDimension(dim); player.dimension = dim; - + if(newWorld == null) return false; ServerConfigurationManager man = player.mcServer.getConfigurationManager(); @@ -160,15 +165,15 @@ public class TileEntityMachineTeleporter extends TileEntityLoadedBase implements net.sendPacket(new S07PacketRespawn(player.dimension, player.worldObj.difficultySetting, newWorld.getWorldInfo().getTerrainType(), player.theItemInWorldManager.getGameType())); prevWorld.removePlayerEntityDangerously(player); player.isDead = false; - + if(player.isEntityAlive()) { player.setLocationAndAngles(x, y, z, player.rotationYaw, player.rotationPitch); newWorld.spawnEntityInWorld(player); newWorld.updateEntityWithOptionalForce(player, false); } - + player.setWorld(newWorld); - + man.func_72375_a(player, prevWorld); net.setPlayerLocation(player.posX, player.posY, player.posZ, player.rotationYaw, player.rotationPitch); player.theItemInWorldManager.setWorld(newWorld); @@ -183,18 +188,18 @@ public class TileEntityMachineTeleporter extends TileEntityLoadedBase implements FMLCommonHandler.instance().firePlayerChangedDimensionEvent(player, prevDim, dim); return true; } - + /** Teleports non-player entities to different dimensions, gracefully copied from Entity */ public static boolean teleportEntityInterdimensionally(Entity oldEntity, double x, double y, double z, int dim) { MinecraftServer minecraftserver = MinecraftServer.getServer(); WorldServer newWorld = minecraftserver.worldServerForDimension(dim); - + if(newWorld == null) return false; oldEntity.worldObj.removeEntity(oldEntity); oldEntity.isDead = false; - + Entity entity = EntityList.createEntityByName(EntityList.getEntityString(oldEntity), newWorld); if(entity != null) { @@ -202,7 +207,7 @@ public class TileEntityMachineTeleporter extends TileEntityLoadedBase implements entity.setLocationAndAngles(x, y, z, entity.rotationYaw, entity.rotationPitch); newWorld.updateEntityWithOptionalForce(entity, false); entity.setWorld(newWorld); - + IChunkProvider provider = newWorld.getChunkProvider(); provider.loadChunk(((int) Math.floor(x)) >> 4, ((int) Math.floor(z)) >> 4); newWorld.spawnEntityInWorld(entity); @@ -210,7 +215,7 @@ public class TileEntityMachineTeleporter extends TileEntityLoadedBase implements oldEntity.isDead = true; newWorld.resetUpdateEntityTick(); - + return true; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java index f2ee81f2c..88f1c3694 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java @@ -13,6 +13,7 @@ import com.hbm.inventory.fluid.trait.FT_Coolable; import com.hbm.inventory.fluid.trait.FT_Coolable.CoolingType; import com.hbm.inventory.gui.GUIMachineTurbine; import com.hbm.lib.Library; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IGUIProvider; @@ -31,7 +32,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.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.ISidedInventory; @@ -42,21 +42,21 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IEnergyProviderMK2, IFluidStandardTransceiver, IBufPacketReceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent, IConfigurableMachine{ +public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IEnergyProviderMK2, IFluidStandardTransceiver, IBufPacketReceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent, IConfigurableMachine, IFluidCopiable{ private ItemStack slots[]; public long power; public int age = 0; public FluidTank[] tanks; - + private static final int[] slots_top = new int[] {4}; private static final int[] slots_bottom = new int[] {6}; private static final int[] slots_side = new int[] {4}; - + private String customName; protected double[] info = new double[3]; - + //Configurable values public static long maxPower = 1_000_000; public static int inputTankSize = 64_000; @@ -133,7 +133,7 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS public boolean hasCustomInventoryName() { return this.customName != null && this.customName.length() > 0; } - + public void setCustomName(String name) { this.customName = name; } @@ -152,7 +152,7 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=64; } } - + //You scrubs aren't needed for anything (right now) @Override public void openInventory() {} @@ -161,14 +161,14 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS @Override public boolean isItemValidForSlot(int i, ItemStack stack) { - + if(i == 4) if(stack != null && stack.getItem() instanceof IBatteryItem) return true; - + return false; } - + @Override public ItemStack decrStackSize(int i, int j) { if(slots[i] != null) @@ -184,13 +184,13 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS { slots[i] = null; } - + return itemStack1; } else { return null; } } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -199,9 +199,9 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS tanks[0].readFromNBT(nbt, "water"); tanks[1].readFromNBT(nbt, "steam"); power = nbt.getLong("power"); - + slots = new ItemStack[getSizeInventory()]; - + for(int i = 0; i < list.tagCount(); i++) { NBTTagCompound nbt1 = list.getCompoundTagAt(i); @@ -212,16 +212,16 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS } } } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); tanks[0].writeToNBT(nbt, "water"); tanks[1].writeToNBT(nbt, "steam"); nbt.setLong("power", power); - + NBTTagList list = new NBTTagList(); - + for(int i = 0; i < slots.length; i++) { if(slots[i] != null) @@ -234,7 +234,7 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS } nbt.setTag("items", list); } - + @Override public int[] getAccessibleSlotsFromSide(int p_94128_1_) { @@ -250,32 +250,32 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS public boolean canExtractItem(int i, ItemStack itemStack, int j) { return false; } - + public long getPowerScaled(int i) { return (power * i) / maxPower; } - + @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + this.info = new double[3]; - + age++; if(age >= 2) { age = 0; } - + this.subscribeToAllAround(tanks[0].getTankType(), this); - + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.tryProvide(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); tanks[0].setType(0, 1, slots); tanks[0].loadTank(2, 3, slots); power = Library.chargeItemsFromTE(slots, 4, power, maxPower); - + FluidType in = tanks[0].getTankType(); boolean valid = false; if(in.hasTrait(FT_Coolable.class)) { @@ -298,12 +298,12 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS } if(!valid) tanks[1].setTankType(Fluids.NONE); if(power > maxPower) power = maxPower; - + this.sendFluidToAll(tanks[1], this); - + tanks[1].unloadTank(5, 6, slots); - - this.sendStandard(25); + + this.networkPackNT(25); } } @@ -318,7 +318,7 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS tanks[0].deserialize(buf); tanks[1].deserialize(buf); } - + @Override public long getPower() { return power; @@ -387,7 +387,7 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineTurbine(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java index f7e3349f5..2e320fb2e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java @@ -18,8 +18,10 @@ import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BobMathUtil; import com.hbm.util.CompatEnergyControl; import api.hbm.energymk2.IEnergyProviderMK2; @@ -28,11 +30,11 @@ import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; 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; import net.minecraft.nbt.NBTTagCompound; @@ -42,31 +44,32 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMachineTurbineGas extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyProviderMK2, IControlReceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { - +public class TileEntityMachineTurbineGas extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyProviderMK2, IControlReceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent, IFluidCopiable { + public long power; public static final long maxPower = 1000000L; - + public int rpm; //0-100, crescent moon gauge, used for calculating the amount of power generated, starts past 10% public int temp; //0-800, used for figuring out how much water to boil, starts boiling at 300°C public int rpmIdle = 10; public int tempIdle = 300; - + public int powerSliderPos; //goes from 0 to 60, 0 is idle, 60 is max power public int throttle; //the same thing, but goes from 0 to 100 - + public boolean autoMode; public int state = 0; //0 is offline, -1 is startup, 1 is online - + public int counter = 0; //used to startup and shutdown public int instantPowerOutput; - + public double waterToBoil; + public FluidTank[] tanks; - + private AudioWrapper audio; - + public static HashMap fuelMaxCons = new HashMap(); //fuel consumption per tick at max power - + static { fuelMaxCons.put(Fluids.GAS, 50D); // natgas doesn't burn well so it burns faster to compensate fuelMaxCons.put(Fluids.SYNGAS, 10D); // syngas just fucks @@ -74,9 +77,9 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement fuelMaxCons.put(Fluids.REFORMGAS, 5D); // fuck it we ball // default to 5 if not in list } - + //TODO particles from heat exchanger maybe? maybe in a future - + public TileEntityMachineTurbineGas() { super(2); this.tanks = new FluidTank[4]; @@ -85,26 +88,29 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement tanks[2] = new FluidTank(Fluids.WATER, 16000); tanks[3] = new FluidTank(Fluids.HOTSTEAM, 160000); } - + + private long powerBeforeNet; + @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + + waterToBoil = 0; //reset throttle = powerSliderPos * 100 / 60; - + if(slots[1] != null && slots[1].getItem() instanceof IItemFluidIdentifier) { FluidType fluid = ((IItemFluidIdentifier) slots[1].getItem()).getType(worldObj, xCoord, yCoord, zCoord, slots[1]); if(fluid.hasTrait(FT_Combustible.class) && fluid.getTrait(FT_Combustible.class).getGrade() == FuelGrade.GAS) { tanks[0].setTankType(fluid); } } - + if(autoMode) { //power production depending on power requirement - + //scales the slider proportionally to the power gauge int powerSliderTarget = 60 - (int) (60 * power / maxPower); - + if(powerSliderTarget > powerSliderPos) { //makes the auto slider slide instead of snapping into position powerSliderPos++; } @@ -112,37 +118,36 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement powerSliderPos--; } } - - switch(state) { //what to do when turbine offline, starting up and online + + switch(state) { //what to do when turbine offline, starting up and online case 0: - shutdown(); + shutdown(); break; case -1: stopIfNotReady(); startup(); break; - case 1: + case 1: stopIfNotReady(); run(); break; default: break; } - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", Math.min(this.power, this.maxPower)); //set first to get an unmodified view of how much power was generated before deductions from the net - + + powerBeforeNet = Math.min(this.power, maxPower); + //do net/battery deductions first... power = Library.chargeItemsFromTE(slots, 0, power, maxPower); this.tryProvide(worldObj, xCoord - dir.offsetZ * 5, yCoord + 1, zCoord + dir.offsetX * 5, rot); //sends out power - + //...and then cap it. Prevents potential future cases where power would be limited due to the fuel being too strong and the buffer too small. if(this.power > this.maxPower) this.power = this.maxPower; - + for(int i = 0; i < 2; i++) { //fuel and lube this.trySubscribe(tanks[i].getTankType(), worldObj, xCoord - dir.offsetX * 2 + rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ, dir.getOpposite()); this.trySubscribe(tanks[i].getTankType(), worldObj, xCoord + dir.offsetX * 2 + rot.offsetX, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ, dir); @@ -152,47 +157,29 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement this.trySubscribe(tanks[2].getTankType(), worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * -4, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * -4, dir); //steam this.sendFluid(tanks[3], worldObj, xCoord + dir.offsetZ * 6, yCoord + 1, zCoord - dir.offsetX * 6, rot.getOpposite()); - - data.setInteger("rpm", this.rpm); - data.setInteger("temp", this.temp); - data.setInteger("state", this.state); - data.setBoolean("automode", this.autoMode); - data.setInteger("throttle", this.throttle); - data.setInteger("slidpos", this.powerSliderPos); - - if(state != 1) { - data.setInteger("counter", this.counter); //sent during startup and shutdown - } else { - data.setInteger("instantPow", this.instantPowerOutput); //sent while running - } - - tanks[0].writeToNBT(data, "fuel"); - tanks[1].writeToNBT(data, "lube"); - tanks[2].writeToNBT(data, "water"); - tanks[3].writeToNBT(data, "steam"); - - this.networkPack(data, 150); - + + this.networkPackNT(150); + } else { //client side, for sounds n shit - + if(rpm >= 10 && state != -1) { //if conditions are right, play the sound - + if(audio == null) { //if there is no sound playing, start it - - audio = MainRegistry.proxy.getLoopedSound("hbm:block.turbinegasRunning", xCoord, yCoord, zCoord, 1.0F, 20F, 2.0F); + + audio = MainRegistry.proxy.getLoopedSound("hbm:block.turbinegasRunning", xCoord, yCoord, zCoord, getVolume(1.0F), 20F, 2.0F); audio.startSound(); - + } else if(!audio.isPlaying()) { audio.stopSound(); - audio = MainRegistry.proxy.getLoopedSound("hbm:block.turbinegasRunning", xCoord, yCoord, zCoord, 1.0F, 20F, 2.0F); + audio = MainRegistry.proxy.getLoopedSound("hbm:block.turbinegasRunning", xCoord, yCoord, zCoord, getVolume(1.0F), 20F, 2.0F); audio.startSound(); } - + audio.updatePitch((float) (0.55 + 0.1 * rpm / 10)); //dynamic pitch update based on rpm audio.updateVolume(getVolume(2F)); //yeah i need this - + } else { - + if(audio != null) { audio.stopSound(); audio = null; @@ -200,9 +187,54 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement } } } - + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.powerBeforeNet); + buf.writeInt(this.rpm); + buf.writeInt(this.temp); + buf.writeInt(this.state); + buf.writeBoolean(this.autoMode); + buf.writeInt(this.throttle); + buf.writeInt(this.powerSliderPos); + + if(state != 1) { + buf.writeInt(this.counter); //sent during startup and shutdown + } else { + buf.writeInt(this.instantPowerOutput); //sent while running + } + + tanks[0].serialize(buf); + tanks[1].serialize(buf); + tanks[2].serialize(buf); + tanks[3].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.rpm = buf.readInt(); + this.temp = buf.readInt(); + this.state = buf.readInt(); + this.autoMode = buf.readBoolean(); + this.throttle = buf.readInt(); + this.powerSliderPos = buf.readInt(); + + if(state != 1) + this.counter = buf.readInt(); + else + this.instantPowerOutput = buf.readInt(); //state 1 + + this.tanks[0].deserialize(buf); + this.tanks[1].deserialize(buf); + this.tanks[2].deserialize(buf); + this.tanks[3].deserialize(buf); + } + private void stopIfNotReady() { - + if(tanks[0].getFill() == 0 || tanks[1].getFill() == 0) { state = 0; } @@ -210,20 +242,20 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement state = 0; } } - + public boolean hasAcceptableFuel() { - + if(tanks[0].getTankType().hasTrait(FT_Combustible.class)) { return tanks[0].getTankType().getTrait(FT_Combustible.class).getGrade() == FuelGrade.GAS; } - + return false; } - + private void startup() { - + counter++; - + if(counter <= 20) //rpm gauge 0-100-0 rpm = 5 * counter; else if (counter > 20 && counter <= 40) @@ -232,43 +264,43 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement rpm = (int) (rpmIdle * (counter - 50) / 530); //slowly ramps up temp and RPM temp = (int) (tempIdle * (counter - 50) / 530); } - + if(counter == 50) { - worldObj.playSoundEffect(xCoord, yCoord + 2, zCoord, "hbm:block.turbinegasStartup", 1F, 1.0F); + worldObj.playSoundEffect(xCoord, yCoord + 2, zCoord, "hbm:block.turbinegasStartup", getVolume(1.0F), 1.0F); } - + if(counter == 580) { state = 1; } } - - + + int rpmLast; //used to progressively slow down and cool the turbine without immediatly setting rpm and temp to 0 int tempLast; - + private void shutdown() { - + autoMode = false; instantPowerOutput = 0; - + if(powerSliderPos > 0) powerSliderPos--; - + if(rpm <= 10 && counter > 0) { - + if(counter == 225) { - - worldObj.playSoundEffect(xCoord, yCoord + 2, zCoord, "hbm:block.turbinegasShutdown", 1F, 1.0F); - + + worldObj.playSoundEffect(xCoord, yCoord + 2, zCoord, "hbm:block.turbinegasShutdown", getVolume(1.0F), 1.0F); + rpmLast = rpm; tempLast = temp; } - + counter--; - + rpm = (int) (rpmLast * (counter) / 225); temp = (int) (tempLast * (counter) / 225); - + } else if(rpm > 11) { //quickly slows down the turbine to idle before shutdown counter = 42069; //absolutely necessary to avoid fuckeries on shutdown rpm--; @@ -277,15 +309,15 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement rpm--; } } - + /** Dynamically calculates a (hopefully) sensible burn heat from the combustion energy, scales from 300°C - 800°C */ protected int getFluidBurnTemp(FluidType type) { double dFuel = type.hasTrait(FT_Combustible.class) ? type.getTrait(FT_Combustible.class).getCombustionEnergy() : 0; return (int) Math.floor(800D - (Math.pow(Math.E, -dFuel / 100_000D)) * 300D); } - + private void run() { - + if((int) (throttle * 0.9) > rpm - rpmIdle) { //simulates the rotor's moment of inertia if(worldObj.getTotalWorldTime() % 5 == 0) { rpm++; @@ -295,9 +327,9 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement rpm--; } } - + int maxTemp = getFluidBurnTemp(tanks[0].getTankType()); // fuelMaxTemp.get(tanks[0].getTankType()) - + if(throttle * 5 * (maxTemp - tempIdle) / 500 > temp - tempIdle) { //simulates the heat exchanger's resistance to temperature variation if(worldObj.getTotalWorldTime() % 2 == 0) { temp++; @@ -307,30 +339,28 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement temp--; } } - + double consumption = fuelMaxCons.containsKey(tanks[0].getTankType()) ? fuelMaxCons.get(tanks[0].getTankType()) : 5D; if(worldObj.getTotalWorldTime() % 20 == 0 && tanks[0].getTankType() != Fluids.OXYHYDROGEN) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 3); makePower(consumption, throttle); } - - + + double fuelToConsume; //used to consume 1 mb of fuel at a time when consumption is <1 mb/tick - double waterToBoil; - double waterPerTick = 0; - + private void makePower(double consMax, int throttle) { - + double idleConsumption = consMax * 0.05D; double consumption = idleConsumption + consMax * throttle / 100; - + fuelToConsume += consumption; - + tanks[0].setFill(tanks[0].getFill() - (int) Math.floor(fuelToConsume)); fuelToConsume -= (int) Math.floor(fuelToConsume); - - if(worldObj.getTotalWorldTime() % 10 == 0) //lube consumption + + if(worldObj.getTotalWorldTime() % 10 == 0) //lube consumption tanks[1].setFill(tanks[1].getFill() - 1); - + if(tanks[0].getFill() < 0) { //avoids negative amounts of fluid tanks[0].setFill(0); state = 0; @@ -339,16 +369,16 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement tanks[1].setFill(0); state = 0; } - - + + long energy = 0; //energy per mb of fuel - + if(tanks[0].getTankType().hasTrait(FT_Combustible.class)) { energy = tanks[0].getTankType().getTrait(FT_Combustible.class).getCombustionEnergy() / 1000L; } - + int rpmEff = rpm - rpmIdle; // RPM above idle level, 0-90 - + //consMax*energy is equivalent to power production at 100% if(instantPowerOutput < (consMax * energy * rpmEff / 90)) { //this shit avoids power rising in steps of 2000 or so HE at a time, instead it does it smoothly instantPowerOutput += Math.random() * 0.005 * consMax * energy; @@ -361,47 +391,22 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement instantPowerOutput = (int) (consMax * energy * rpmEff / 90); } this.power += instantPowerOutput; + + double waterPerTick = (consMax * energy * (temp - tempIdle) / 220000); //it just works fuck you + + this.waterToBoil = waterPerTick; //caching in a field for the EC compat to use - waterPerTick = (consMax * energy * (temp - tempIdle) / 220000); //it just works fuck you + int heatCycles = (int) Math.floor(waterToBoil); + int waterCycles = tanks[2].getFill(); + int steamCycles = (tanks[3].getMaxFill() - tanks[3].getFill()) / 10; + int cycles = BobMathUtil.min(heatCycles, waterCycles, steamCycles); - if(tanks[2].getFill() >= Math.ceil(waterPerTick)) { //checks if there's enough water to boil - - waterToBoil += waterPerTick; - - if(tanks[3].getFill() <= 160000 - waterToBoil * 10) { //checks if there's room for steam in the tank - - tanks[2].setFill(tanks[2].getFill() - (int) Math.floor(waterToBoil)); - tanks[3].setFill(tanks[3].getFill() + 10 * (int) Math.floor(waterToBoil)); - waterToBoil -= (int) Math.floor(waterToBoil); - } - } + tanks[2].setFill(tanks[2].getFill() - cycles); + tanks[3].setFill(tanks[3].getFill() + cycles * 10); } - + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.rpm = nbt.getInteger("rpm"); - this.temp = nbt.getInteger("temp"); - this.state = nbt.getInteger("state"); - this.autoMode = nbt.getBoolean("automode"); - this.powerSliderPos = nbt.getInteger("slidpos"); - this.throttle = nbt.getInteger("throttle"); - - if(nbt.hasKey("counter")) - this.counter = nbt.getInteger("counter"); //state 0 and -1 - else - this.instantPowerOutput = nbt.getInteger("instantPow"); //state 1 - - this.tanks[0].readFromNBT(nbt, "fuel"); - this.tanks[1].readFromNBT(nbt, "lube"); - this.tanks[2].readFromNBT(nbt, "water"); - this.tanks[3].readFromNBT(nbt, "steam"); - } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -418,11 +423,11 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement this.instantPowerOutput = nbt.getInteger("instPwr"); this.counter = nbt.getInteger("counter"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + tanks[0].writeToNBT(nbt, "gas"); tanks[1].writeToNBT(nbt, "lube"); tanks[2].writeToNBT(nbt, "water"); @@ -448,24 +453,24 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement @Override public void receiveControl(NBTTagCompound data) { - + if(data.hasKey("slidPos")) powerSliderPos = data.getInteger("slidPos"); - + if(data.hasKey("autoMode")) autoMode = data.getBoolean("autoMode"); - + if(data.hasKey("state")) state = data.getInteger("state"); this.markDirty(); } - + @Override public boolean hasPermission(EntityPlayer player) { return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 25; } - + @Override public void onChunkUnload() { @@ -495,17 +500,17 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement public long getPower() { return this.power; } - + @Override public long getMaxPower() { return this.maxPower; } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 5, @@ -516,10 +521,10 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement zCoord + 6 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -545,7 +550,7 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement public FluidTank[] getSendingTanks() { return new FluidTank[] { tanks[3] }; } - + @Override public boolean canConnect(ForgeDirection dir) { return dir != ForgeDirection.DOWN; @@ -696,7 +701,7 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineTurbineGas(player.inventory, this); } @@ -710,4 +715,4 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement data.setDouble(CompatEnergyControl.D_CONSUMPTION_MB, this.waterToBoil); data.setDouble(CompatEnergyControl.D_OUTPUT_MB, this.waterToBoil * 10); } -} \ No newline at end of file +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java index d0e1306bc..3af43d301 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java @@ -1,11 +1,12 @@ package com.hbm.tileentity.machine; +import java.util.HashMap; import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.handler.MultiblockHandlerXR; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.container.ContainerMachineTurbofan; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; @@ -18,9 +19,10 @@ import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachinePolluting; @@ -34,7 +36,7 @@ import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -47,13 +49,13 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implements IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC { +public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implements IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC, IFluidCopiable { public long power; public static final long maxPower = 1_000_000; public FluidTank tank; public FluidTank blood; - + public int afterburner; public boolean wasOn; public boolean showBlood = false; @@ -63,9 +65,11 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem public float spin; public float lastSpin; public int momentum = 0; - + private AudioWrapper audio; + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + public TileEntityMachineTurbofan() { super(5, 150); tank = new FluidTank(Fluids.KEROSENE, 24000); @@ -90,7 +94,7 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + nbt.setLong("powerTime", power); tank.writeToNBT(nbt, "fuel"); blood.writeToNBT(nbt, "blood"); @@ -100,12 +104,12 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem public long getPowerScaled(long i) { return (power * i) / maxPower; } - + protected DirPos[] getConPos() { - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10).getRotation(ForgeDirection.UP); ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); - + return new DirPos[] { new DirPos(this.xCoord + rot.offsetX * 2, this.yCoord, this.zCoord + rot.offsetZ * 2, rot), new DirPos(this.xCoord + rot.offsetX * 2 - dir.offsetX, this.yCoord, this.zCoord + rot.offsetZ * 2 - dir.offsetZ, rot), @@ -116,12 +120,12 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + this.output = 0; this.consumption = 0; - + //meta below 12 means that it's an old multiblock configuration if(this.getBlockMetadata() < 12) { //get old direction @@ -143,54 +147,54 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem worldObj.getTileEntity(xCoord, yCoord, zCoord).readFromNBT(data); return; } - + tank.setType(4, slots); tank.loadTank(0, 1, slots); blood.setTankType(Fluids.BLOOD); - + this.wasOn = false; - - UpgradeManager.eval(slots, 2, 2); - this.afterburner = UpgradeManager.getLevel(UpgradeType.AFTERBURN); - + + upgradeManager.checkSlots(this, slots, 2, 2); + this.afterburner = upgradeManager.getLevel(UpgradeType.AFTERBURN); + if(slots[2] != null && slots[2].getItem() == ModItems.flame_pony) this.afterburner = 100; - + long burnValue = 0; int amount = 1 + this.afterburner; - + if(tank.getTankType().hasTrait(FT_Combustible.class) && tank.getTankType().getTrait(FT_Combustible.class).getGrade() == FuelGrade.AERO) { burnValue = tank.getTankType().getTrait(FT_Combustible.class).getCombustionEnergy() / 1_000; } - + int amountToBurn = Math.min(amount, this.tank.getFill()); - + if(amountToBurn > 0) { this.wasOn = true; this.tank.setFill(this.tank.getFill() - amountToBurn); this.output = (int) (burnValue * amountToBurn * (1 + Math.min(this.afterburner / 3D, 4))); this.power += this.output; this.consumption = amountToBurn; - + if(worldObj.getTotalWorldTime() % 20 == 0) super.pollute(tank.getTankType(), FluidTrait.FluidReleaseType.BURN, amountToBurn * 5);; } - + power = Library.chargeItemsFromTE(slots, 3, power, power); - + for(DirPos pos : getConPos()) { this.tryProvide(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); if(this.blood.getFill() > 0) this.sendFluid(blood, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.sendSmoke(pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - + if(burnValue > 0 && amountToBurn > 0) { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10).getRotation(ForgeDirection.UP); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - + if(this.afterburner > 0) { - + for(int i = 0; i < 2; i++) { double speed = 2 + worldObj.rand.nextDouble() * 3; double deviation = worldObj.rand.nextGaussian() * 0.2; @@ -201,15 +205,15 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem data.setFloat("scale", 8F); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, this.xCoord + 0.5F - dir.offsetX * (3 - i), this.yCoord + 1.5F, this.zCoord + 0.5F - dir.offsetZ * (3 - i)), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 150)); } - + /*if(this.afterburner > 90 && worldObj.rand.nextInt(60) == 0) { worldObj.newExplosion(null, xCoord + 0.5 + dir.offsetX * 3.5, yCoord + 0.5, zCoord + 0.5 + dir.offsetZ * 3.5, 3F, false, false); }*/ - + if(this.afterburner > 90 && worldObj.rand.nextInt(30) == 0) { worldObj.playSoundEffect(xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, "hbm:block.damage", 3.0F, 0.95F + worldObj.rand.nextFloat() * 0.2F); } - + if(this.afterburner > 90) { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "gasfire"); @@ -222,16 +226,16 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem ), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 150)); } } - + double minX = this.xCoord + 0.5 - dir.offsetX * 3.5 - rot.offsetX * 1.5; double maxX = this.xCoord + 0.5 - dir.offsetX * 19.5 + rot.offsetX * 1.5; double minZ = this.zCoord + 0.5 - dir.offsetZ * 3.5 - rot.offsetZ * 1.5; double maxZ = this.zCoord + 0.5 - dir.offsetZ * 19.5 + rot.offsetZ * 1.5; - + List list = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(Math.min(minX, maxX), yCoord, Math.min(minZ, maxZ), Math.max(minX, maxX), yCoord + 3, Math.max(minZ, maxZ))); - + for(Entity e : list) { - + if(this.afterburner > 0) { e.setFire(5); e.attackEntityFrom(DamageSource.onFire, 5F); @@ -239,40 +243,40 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem e.motionX -= dir.offsetX * 0.2; e.motionZ -= dir.offsetZ * 0.2; } - + minX = this.xCoord + 0.5 + dir.offsetX * 3.5 - rot.offsetX * 1.5; maxX = this.xCoord + 0.5 + dir.offsetX * 8.5 + rot.offsetX * 1.5; minZ = this.zCoord + 0.5 + dir.offsetZ * 3.5 - rot.offsetZ * 1.5; maxZ = this.zCoord + 0.5 + dir.offsetZ * 8.5 + rot.offsetZ * 1.5; - + list = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(Math.min(minX, maxX), yCoord, Math.min(minZ, maxZ), Math.max(minX, maxX), yCoord + 3, Math.max(minZ, maxZ))); - + for(Entity e : list) { e.motionX -= dir.offsetX * 0.2; e.motionZ -= dir.offsetZ * 0.2; } - + minX = this.xCoord + 0.5 + dir.offsetX * 3.5 - rot.offsetX * 1.5; maxX = this.xCoord + 0.5 + dir.offsetX * 3.75 + rot.offsetX * 1.5; minZ = this.zCoord + 0.5 + dir.offsetZ * 3.5 - rot.offsetZ * 1.5; maxZ = this.zCoord + 0.5 + dir.offsetZ * 3.75 + rot.offsetZ * 1.5; - + list = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(Math.min(minX, maxX), yCoord, Math.min(minZ, maxZ), Math.max(minX, maxX), yCoord + 3, Math.max(minZ, maxZ))); - + for(Entity e : list) { e.attackEntityFrom(ModDamageSource.turbofan, 1000); e.setInWeb(); - + if(!e.isEntityAlive() && e instanceof EntityLivingBase) { NBTTagCompound vdat = new NBTTagCompound(); vdat.setString("type", "giblets"); vdat.setInteger("ent", e.getEntityId()); vdat.setInteger("cDiv", 5); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(vdat, e.posX, e.posY + e.height * 0.5, e.posZ), new TargetPoint(e.dimension, e.posX, e.posY + e.height * 0.5, e.posZ, 150)); - + worldObj.playSoundEffect(e.posX, e.posY, e.posZ, "mob.zombie.woodbreak", 2.0F, 0.95F + worldObj.rand.nextFloat() * 0.2F); - - blood.setFill(blood.getFill() + 50); + + blood.setFill(blood.getFill() + 50); if(blood.getFill() > blood.getMaxFill()) { blood.setFill(blood.getMaxFill()); } @@ -280,24 +284,17 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem } } } - + if(this.power > this.maxPower) { this.power = this.maxPower; } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setByte("after", (byte) afterburner); - data.setBoolean("wasOn", wasOn); - data.setBoolean("showBlood", showBlood); - tank.writeToNBT(data, "tank"); - blood.writeToNBT(data, "blood"); - this.networkPack(data, 150); - + + this.networkPackNT(150); + } else { - + this.lastSpin = this.spin; - + if(wasOn) { if(this.momentum < 100F) this.momentum++; @@ -305,16 +302,16 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem if(this.momentum > 0) this.momentum--; } - + this.spin += momentum / 2; - + if(this.spin >= 360) { this.spin -= 360F; this.lastSpin -= 360F; } if(momentum > 0) { - + if(audio == null) { audio = createAudioLoop(); audio.startSound(); @@ -325,9 +322,9 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem audio.keepAlive(); audio.updateVolume(getVolume(momentum / 50F)); audio.updatePitch(momentum / 200F + 0.5F + this.afterburner * 0.16F); - + } else { - + if(audio != null) { audio.stopSound(); audio = null; @@ -346,37 +343,37 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem double maxX = this.xCoord + 0.5 - dir.offsetX * 19.5 + rot.offsetX * 1.5; double minZ = this.zCoord + 0.5 - dir.offsetZ * 3.5 - rot.offsetZ * 1.5; double maxZ = this.zCoord + 0.5 - dir.offsetZ * 19.5 + rot.offsetZ * 1.5; - + List list = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(Math.min(minX, maxX), yCoord, Math.min(minZ, maxZ), Math.max(minX, maxX), yCoord + 3, Math.max(minZ, maxZ))); - + for(Entity e : list) { if(e == MainRegistry.proxy.me()) { e.motionX -= dir.offsetX * 0.2; e.motionZ -= dir.offsetZ * 0.2; } } - + minX = this.xCoord + 0.5 + dir.offsetX * 3.5 - rot.offsetX * 1.5; maxX = this.xCoord + 0.5 + dir.offsetX * 8.5 + rot.offsetX * 1.5; minZ = this.zCoord + 0.5 + dir.offsetZ * 3.5 - rot.offsetZ * 1.5; maxZ = this.zCoord + 0.5 + dir.offsetZ * 8.5 + rot.offsetZ * 1.5; - + list = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(Math.min(minX, maxX), yCoord, Math.min(minZ, maxZ), Math.max(minX, maxX), yCoord + 3, Math.max(minZ, maxZ))); - + for(Entity e : list) { if(e == MainRegistry.proxy.me()) { e.motionX -= dir.offsetX * 0.2; e.motionZ -= dir.offsetZ * 0.2; } } - + minX = this.xCoord + 0.5 + dir.offsetX * 3.5 - rot.offsetX * 1.5; maxX = this.xCoord + 0.5 + dir.offsetX * 3.75 + rot.offsetX * 1.5; minZ = this.zCoord + 0.5 + dir.offsetZ * 3.5 - rot.offsetZ * 1.5; maxZ = this.zCoord + 0.5 + dir.offsetZ * 3.75 + rot.offsetZ * 1.5; - + list = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(Math.min(minX, maxX), yCoord, Math.min(minZ, maxZ), Math.max(minX, maxX), yCoord + 3, Math.max(minZ, maxZ))); - + for(Entity e : list) { if(e == MainRegistry.proxy.me()) { e.setInWeb(); @@ -385,18 +382,29 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem } } } - - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.afterburner = nbt.getByte("after"); - this.wasOn = nbt.getBoolean("wasOn"); - this.showBlood = nbt.getBoolean("showBlood"); - tank.readFromNBT(nbt, "tank"); - blood.readFromNBT(nbt, "blood"); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeByte((byte) afterburner); + buf.writeBoolean(wasOn); + buf.writeBoolean(showBlood); + tank.serialize(buf); + blood.serialize(buf); } - + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.afterburner = buf.readByte(); + this.wasOn = buf.readBoolean(); + this.showBlood = buf.readBoolean(); + tank.deserialize(buf); + blood.deserialize(buf); + } + public AudioWrapper createAudioLoop() { return MainRegistry.proxy.getLoopedSound("hbm:block.turbofanOperate", xCoord, yCoord, zCoord, 1.0F, 50F, 1.0F, 20); } @@ -435,7 +443,7 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem public void setPower(long i) { this.power = i; } - + @Override public AxisAlignedBB getRenderBoundingBox() { return TileEntity.INFINITE_EXTENT_AABB; @@ -469,7 +477,7 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineTurbofan(player.inventory, this); } @@ -488,9 +496,10 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.AFTERBURN) return 3; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.AFTERBURN, 3); + return upgrades; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java index 46de4e4e1..3a1ebe90b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineWoodBurner.java @@ -14,6 +14,7 @@ import com.hbm.items.ModItems; import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.lib.Library; import com.hbm.module.ModuleBurnTime; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CompatEnergyControl; @@ -25,7 +26,6 @@ import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -34,7 +34,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineWoodBurner extends TileEntityMachineBase implements IFluidStandardReceiver, IControlReceiver, IEnergyProviderMK2, IGUIProvider, IInfoProviderEC { +public class TileEntityMachineWoodBurner extends TileEntityMachineBase implements IFluidStandardReceiver, IControlReceiver, IEnergyProviderMK2, IGUIProvider, IInfoProviderEC, IFluidCopiable { public long power; public static final long maxPower = 100_000; @@ -95,7 +95,9 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement if(processAsh(ashLevelMisc, EnumAshType.MISC, threshold)) ashLevelMisc -= threshold; this.maxBurnTime = this.burnTime = burn; + ItemStack container = slots[0].getItem().getContainerItem(slots[0]); this.decrStackSize(0, 1); + if(slots[0] == null && container != null) slots[0] = container.copy(); this.markChanged(); } } @@ -234,7 +236,7 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineWoodBurner(player.inventory, this); } @@ -321,4 +323,9 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement if(this.liquidBurn) data.setDouble(CompatEnergyControl.D_CONSUMPTION_MB, 1D); data.setDouble(CompatEnergyControl.D_OUTPUT_HE, power); } + + @Override + public FluidTank getTankToPaste() { + return tank; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java index b6e4e9d55..5f81bccb6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMicrowave.java @@ -1,6 +1,11 @@ package com.hbm.tileentity.machine; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; +import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.handler.CompatHandler; +import com.hbm.interfaces.ICopiable; import com.hbm.inventory.container.ContainerMicrowave; import com.hbm.inventory.gui.GUIMicrowave; import com.hbm.lib.Library; @@ -11,11 +16,11 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; 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; import net.minecraft.item.ItemFood; @@ -29,7 +34,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityMicrowave extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, SimpleComponent, CompatHandler.OCComponent { +public class TileEntityMicrowave extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, SimpleComponent, CompatHandler.OCComponent, ICopiable { public long power; public static final long maxPower = 50000; @@ -61,7 +66,11 @@ public class TileEntityMicrowave extends TileEntityMachineBase implements IEnerg if(speed >= maxSpeed) { worldObj.func_147480_a(xCoord, yCoord, zCoord, false); - worldObj.newExplosion(null, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 7.5F, true, true); + ExplosionVNT vnt = new ExplosionVNT(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 5); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, 50)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F)); + vnt.explode(); return; } @@ -75,21 +84,25 @@ public class TileEntityMicrowave extends TileEntityMachineBase implements IEnerg time += speed * 2; } } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("time", time); - data.setInteger("speed", speed); - networkPack(data, 50); + + networkPackNT(50); } } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - power = data.getLong("power"); - time = data.getInteger("time"); - speed = data.getInteger("speed"); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeInt(time); + buf.writeInt(speed); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + time = buf.readInt(); + speed = buf.readInt(); } public void handleButtonPacket(int value, int meta) { @@ -251,7 +264,24 @@ public class TileEntityMicrowave extends TileEntityMachineBase implements IEnerg @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMicrowave(player.inventory, this); } + + @Override + public NBTTagCompound getSettings(World world, int x, int y, int z) { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setInteger("microSpeed", speed); + return null; + } + + @Override + public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { + if(nbt.hasKey("microSpeed")) speed = nbt.getInteger("microSpeed"); + } + + @Override + public String[] infoForDisplay(World world, int x, int y, int z) { + return new String[]{ "copyTool.speed"}; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityNukeFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityNukeFurnace.java index 251ce6270..7f2e1c5f9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityNukeFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityNukeFurnace.java @@ -8,12 +8,10 @@ import com.hbm.inventory.container.ContainerNukeFurnace; import com.hbm.inventory.gui.GUINukeFurnace; import com.hbm.items.ItemCustomLore; import com.hbm.items.ModItems; -import com.hbm.items.machine.ItemBreedingRod.BreedingRodType; import com.hbm.tileentity.IGUIProvider; 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.inventory.ISidedInventory; @@ -357,31 +355,6 @@ public class TileEntityNukeFurnace extends TileEntity implements ISidedInventory } private static HashMap fuels = new HashMap(); - //for the int array: [0] => level (1-4) [1] => amount of operations - - /* - * I really don't want to have to do this, but it's better then making a new class, for one TE, for not even recipes but just *fuels* - * - * Who even uses this furnace? Nobody, but it's better then removing it without prior approval - */ - public static void registerFuels() { - setRecipe(BreedingRodType.TRITIUM, 5); - setRecipe(BreedingRodType.CO60, 10); - setRecipe(BreedingRodType.THF, 30); - setRecipe(BreedingRodType.U235, 50); - setRecipe(BreedingRodType.NP237, 30); - setRecipe(BreedingRodType.PU238, 20); - setRecipe(BreedingRodType.PU239, 50); - setRecipe(BreedingRodType.RGP, 30); - setRecipe(BreedingRodType.WASTE, 20); - } - - /** Sets power for single, dual, and quad rods **/ - public static void setRecipe(BreedingRodType type, int power) { - fuels.put(new ComparableStack(new ItemStack(ModItems.rod, 1, type.ordinal())), power); - fuels.put(new ComparableStack(new ItemStack(ModItems.rod_dual, 1, type.ordinal())), power * 2); - fuels.put(new ComparableStack(new ItemStack(ModItems.rod_quad, 1, type.ordinal())), power * 4); - } /** * Returns an integer array of the fuel value of a certain stack @@ -407,7 +380,7 @@ public class TileEntityNukeFurnace extends TileEntity implements ISidedInventory @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUINukeFurnace(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java index 15fe1d786..c7dceeda3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java @@ -29,12 +29,12 @@ import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; 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; import net.minecraft.item.ItemStack; @@ -45,23 +45,23 @@ import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) public class TileEntityPWRController extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, SimpleComponent, IFluidStandardTransceiver, CompatHandler.OCComponent { - + public FluidTank[] tanks; - public int coreHeat; - public static final int coreHeatCapacityBase = 10_000_000; - public int coreHeatCapacity = 10_000_000; - public int hullHeat; - public static final int hullHeatCapacityBase = 10_000_000; + public long coreHeat; + public static final long coreHeatCapacityBase = 10_000_000; + public long coreHeatCapacity = 10_000_000; + public long hullHeat; + public static final long hullHeatCapacityBase = 10_000_000; public double flux; - + public double rodLevel = 100; public double rodTarget = 100; - + public int typeLoaded; public int amountLoaded; public double progress; public double processTime; - + public int rodCount; public int connections; public int connectionsControlled; @@ -69,10 +69,10 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG public int heatsinkCount; public int channelCount; public int sourceCount; - + public int unloadDelay = 0; public boolean assembled; - + private AudioWrapper audio; protected List ports = new ArrayList(); @@ -80,15 +80,15 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG public TileEntityPWRController() { super(3); - + this.tanks = new FluidTank[2]; this.tanks[0] = new FluidTank(Fluids.COOLANT, 128_000); this.tanks[1] = new FluidTank(Fluids.COOLANT_HOT, 128_000); } - + /** The initial creation of the reactor, does all the pre-calculation and whatnot */ public void setup(HashMap partMap, HashMap rodMap) { - + rodCount = 0; connections = 0; connectionsControlled = 0; @@ -101,7 +101,7 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG int connectionsDouble = 0; int connectionsControlledDouble = 0; - + for(Entry entry : partMap.entrySet()) { Block block = entry.getValue(); @@ -112,16 +112,16 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG if(block == ModBlocks.pwr_neutron_source) sourceCount++; if(block == ModBlocks.pwr_port) ports.add(entry.getKey()); } - + for(Entry entry : rodMap.entrySet()) { BlockPos fuelPos = entry.getKey(); - + rods.add(fuelPos); - + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - + boolean controlled = false; - + for(int i = 1; i < 16; i++) { BlockPos checkPos = fuelPos.offset(dir, i); Block atPos = partMap.get(checkPos); @@ -149,8 +149,10 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG connections = connectionsDouble / 2; connectionsControlled = connectionsControlledDouble / 2; - - this.coreHeatCapacity = this.coreHeatCapacityBase + this.heatsinkCount * this.coreHeatCapacityBase / 20; + heatsinkCount = Math.min(heatsinkCount, 80); + + //switching this to int64 because after 2127 heatsinks the capacity exceeds the int32 which is well within the 4000+ threshold we are working with. oops! + this.coreHeatCapacity = this.coreHeatCapacityBase + this.heatsinkCount * (this.coreHeatCapacityBase / 20); } @Override @@ -160,17 +162,17 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + this.tanks[0].setType(2, slots); setupTanks(); - + if(unloadDelay > 0) unloadDelay--; - + int chunkX = xCoord >> 4; int chunkZ = zCoord >> 4; - + //since fluid sources are often not within 1 chunk, we just do 2 chunks distance and call it a day if(!worldObj.getChunkProvider().chunkExists(chunkX, chunkZ) || !worldObj.getChunkProvider().chunkExists(chunkX + 2, chunkZ + 2) || @@ -179,20 +181,20 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG !worldObj.getChunkProvider().chunkExists(chunkX - 2, chunkZ - 2)) { this.unloadDelay = 60; } - + if(this.assembled) { for(BlockPos pos : ports) { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { BlockPos portPos = pos.offset(dir); - + if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, portPos.getX(), portPos.getY(), portPos.getZ(), dir); if(worldObj.getTotalWorldTime() % 20 == 0) this.trySubscribe(tanks[0].getTankType(), worldObj, portPos.getX(), portPos.getY(), portPos.getZ(), dir); } } - + //only perform fission if the area has been loaded for 40 ticks or more if(this.unloadDelay <= 0) { - + if((typeLoaded == -1 || amountLoaded <= 0) && slots[0] != null && slots[0].getItem() == ModItems.pwr_fuel) { typeLoaded = slots[0].getItemDamage(); amountLoaded++; @@ -207,61 +209,61 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG if(diff < 1 && diff > -1) this.rodLevel = this.rodTarget; if(this.rodTarget > this.rodLevel) this.rodLevel++; if(this.rodTarget < this.rodLevel) this.rodLevel--; - + int newFlux = this.sourceCount * 20; - + if(typeLoaded != -1 && amountLoaded > 0) { - + EnumPWRFuel fuel = EnumUtil.grabEnumSafely(EnumPWRFuel.class, typeLoaded); double usedRods = getTotalProcessMultiplier(); double fluxPerRod = this.flux / this.rodCount; double outputPerRod = fuel.function.effonix(fluxPerRod); double totalOutput = outputPerRod * amountLoaded * usedRods; double totalHeatOutput = totalOutput * fuel.heatEmission; - + this.coreHeat += totalHeatOutput; newFlux += totalOutput; - + this.processTime = (int) fuel.yield; this.progress += totalOutput; - + if(this.progress >= this.processTime) { this.progress -= this.processTime; - + if(slots[1] == null) { slots[1] = new ItemStack(ModItems.pwr_fuel_hot, 1, typeLoaded); } else if(slots[1].getItem() == ModItems.pwr_fuel_hot && slots[1].getItemDamage() == typeLoaded && slots[1].stackSize < slots[1].getMaxStackSize()) { slots[1].stackSize++; } - + this.amountLoaded--; this.markChanged(); } } - + if(this.amountLoaded <= 0) { this.typeLoaded = -1; } - + if(amountLoaded > rodCount) amountLoaded = rodCount; - + /* CORE COOLING */ double coreCoolingApproachNum = getXOverE((double) this.heatexCount * 5 / (double) getRodCountForCoolant(), 2) / 2D; - int averageCoreHeat = (this.coreHeat + this.hullHeat) / 2; + long averageCoreHeat = (this.coreHeat + this.hullHeat) / 2; this.coreHeat -= (coreHeat - averageCoreHeat) * coreCoolingApproachNum; this.hullHeat -= (hullHeat - averageCoreHeat) * coreCoolingApproachNum; - + updateCoolant(); - + this.coreHeat *= 0.999D; this.hullHeat *= 0.999D; - + this.flux = newFlux; - + if(tanks[0].getTankType().hasTrait(FT_PWRModerator.class) && tanks[0].getFill() > 0) { this.flux *= tanks[0].getTankType().getTrait(FT_PWRModerator.class).getMultiplier(); } - + if(this.coreHeat > this.coreHeatCapacity) { meltDown(); } @@ -270,26 +272,12 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG this.coreHeat = 0; } } - - NBTTagCompound data = new NBTTagCompound(); - tanks[0].writeToNBT(data, "t0"); - tanks[1].writeToNBT(data, "t1"); - data.setInteger("rodCount", rodCount); - data.setInteger("coreHeat", coreHeat); - data.setInteger("hullHeat", hullHeat); - data.setDouble("flux", flux); - data.setDouble("processTime", processTime); - data.setDouble("progress", progress); - data.setInteger("typeLoaded", typeLoaded); - data.setInteger("amountLoaded", amountLoaded); - data.setDouble("rodLevel", rodLevel); - data.setDouble("rodTarget", rodTarget); - data.setInteger("coreHeatCapacity", coreHeatCapacity); - this.networkPack(data, 150); + + this.networkPackNT(150); } else { - + if(amountLoaded > 0) { - + if(audio == null) { audio = createAudioLoop(); audio.startSound(); @@ -299,9 +287,9 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG audio.updateVolume(getVolume(1F)); audio.keepAlive(); - + } else { - + if(audio != null) { audio.stopSound(); audio = null; @@ -309,15 +297,15 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG } } } - + protected void meltDown() { - + worldObj.func_147480_a(xCoord, yCoord, zCoord, false); double x = 0; double y = 0; double z = 0; - + for(BlockPos pos : this.rods) { Block b = worldObj.getBlock(pos.getX(), pos.getY(), pos.getZ()); b.breakBlock(worldObj, pos.getX(), pos.getY(), pos.getZ(), b, worldObj.getBlockMetadata(pos.getX(), pos.getY(), pos.getZ())); @@ -331,10 +319,10 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG x /= rods.size(); y /= rods.size(); z /= rods.size(); - + worldObj.newExplosion(null, x, y, z, 15F, true, true); } - + @Override public AudioWrapper createAudioLoop() { return MainRegistry.proxy.getLoopedSound("hbm:block.reactorLoop", xCoord, yCoord, zCoord, 1F, 10F, 1.0F, 20); @@ -359,72 +347,91 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG audio = null; } } - + protected void updateCoolant() { - + FT_Heatable trait = tanks[0].getTankType().getTrait(FT_Heatable.class); if(trait == null || trait.getEfficiency(HeatingType.PWR) <= 0) return; - + double coolingEff = (double) this.channelCount / (double) getRodCountForCoolant() * 0.1D; //10% cooling if numbers match if(coolingEff > 1D) coolingEff = 1D; - - int heatToUse = Math.min(this.hullHeat, (int) (this.hullHeat * coolingEff * trait.getEfficiency(HeatingType.PWR))); + + //no use in trying to convert everythin to long since the internal tanks would never even support operation like that, just cap the heat cycle count to prevent overflows in the math + int heatToUse = (int) Math.min(Math.min(this.hullHeat, (long) (this.hullHeat * coolingEff * trait.getEfficiency(HeatingType.PWR))), 2_000_000_000); HeatingStep step = trait.getFirstStep(); int coolCycles = tanks[0].getFill() / step.amountReq; int hotCycles = (tanks[1].getMaxFill() - tanks[1].getFill()) / step.amountProduced; int heatCycles = heatToUse / step.heatReq; int cycles = Math.min(coolCycles, Math.min(hotCycles, heatCycles)); - + this.hullHeat -= step.heatReq * cycles; this.tanks[0].setFill(tanks[0].getFill() - step.amountReq * cycles); this.tanks[1].setFill(tanks[1].getFill() + step.amountProduced * cycles); } - + protected int getRodCountForCoolant() { return this.rodCount + (int) Math.ceil(this.heatsinkCount / 4D); } - - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - tanks[0].readFromNBT(nbt, "t0"); - tanks[1].readFromNBT(nbt, "t1"); - rodCount = nbt.getInteger("rodCount"); - coreHeat = nbt.getInteger("coreHeat"); - hullHeat = nbt.getInteger("hullHeat"); - flux = nbt.getDouble("flux"); - processTime = nbt.getDouble("processTime"); - progress = nbt.getDouble("progress"); - typeLoaded = nbt.getInteger("typeLoaded"); - amountLoaded = nbt.getInteger("amountLoaded"); - rodLevel = nbt.getDouble("rodLevel"); - rodTarget = nbt.getInteger("rodTarget"); - coreHeatCapacity = nbt.getInteger("coreHeatCapacity"); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(this.rodCount); + buf.writeLong(this.coreHeat); + buf.writeLong(this.hullHeat); + buf.writeDouble(this.flux); + buf.writeDouble(this.processTime); + buf.writeDouble(this.progress); + buf.writeInt(this.typeLoaded); + buf.writeInt(this.amountLoaded); + buf.writeDouble(this.rodLevel); + buf.writeDouble(this.rodTarget); + buf.writeLong(this.coreHeatCapacity); + tanks[0].serialize(buf); + tanks[1].serialize(buf); } - + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.rodCount = buf.readInt(); + this.coreHeat = buf.readLong(); + this.hullHeat = buf.readLong(); + this.flux = buf.readDouble(); + this.processTime = buf.readDouble(); + this.progress = buf.readDouble(); + this.typeLoaded = buf.readInt(); + this.amountLoaded = buf.readInt(); + this.rodLevel = buf.readDouble(); + this.rodTarget = buf.readDouble(); + this.coreHeatCapacity = buf.readLong(); + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); + } + protected void setupTanks() { - + FT_Heatable trait = tanks[0].getTankType().getTrait(FT_Heatable.class); - + if(trait == null || trait.getEfficiency(HeatingType.PWR) <= 0) { tanks[0].setTankType(Fluids.NONE); tanks[1].setTankType(Fluids.NONE); return; } - + tanks[1].setTankType(trait.getFirstStep().typeProduced); } - + public double getTotalProcessMultiplier() { double totalConnections = this.connections + this.connectionsControlled * (1D - (this.rodLevel / 100D)); double connectionsEff = connectinFunc(totalConnections); return connectionsEff; } - + public double connectinFunc(double connections) { return connections / 10D * (1D - getXOverE(connections, 300D)) + connections / 150D * getXOverE(connections, 300D); } - + public double getXOverE(double x, double d) { return 1 - Math.pow(Math.E, -x / d); } @@ -444,17 +451,17 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG public boolean canExtractItem(int slot, ItemStack itemStack, int side) { return slot == 1; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); tanks[0].readFromNBT(nbt, "t0"); tanks[1].readFromNBT(nbt, "t1"); - + this.assembled = nbt.getBoolean("assembled"); - this.coreHeat = nbt.getInteger("coreHeat"); - this.hullHeat = nbt.getInteger("hullHeat"); + this.coreHeat = Math.max(nbt.getInteger("coreHeat"), nbt.getLong("coreHeatL")); + this.hullHeat = Math.max(nbt.getInteger("hullHeat"), nbt.getLong("hullHeatL")); this.flux = nbt.getDouble("flux"); this.rodLevel = nbt.getDouble("rodLevel"); this.rodTarget = nbt.getDouble("rodTarget"); @@ -462,7 +469,7 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG this.amountLoaded = nbt.getInteger("amountLoaded"); this.progress = nbt.getDouble("progress"); this.processTime = nbt.getDouble("processTime"); - this.coreHeatCapacity = nbt.getInteger("coreHeatCapacity"); + this.coreHeatCapacity = Math.max(nbt.getInteger("coreHeatCapacity"), nbt.getLong("coreHeatCapacityL")); if(this.coreHeatCapacity < this.coreHeatCapacityBase) this.coreHeatCapacity = this.coreHeatCapacityBase; this.rodCount = nbt.getInteger("rodCount"); @@ -472,14 +479,14 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG this.channelCount = nbt.getInteger("channelCount"); this.sourceCount = nbt.getInteger("sourceCount"); this.heatsinkCount = nbt.getInteger("heatsinkCount"); - + ports.clear(); int portCount = nbt.getInteger("portCount"); for(int i = 0; i < portCount; i++) { int[] port = nbt.getIntArray("p" + i); ports.add(new BlockPos(port[0], port[1], port[2])); } - + rods.clear(); int rodCount = nbt.getInteger("rodCount"); for(int i = 0; i < rodCount; i++) { @@ -489,17 +496,17 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG } } } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); tanks[0].writeToNBT(nbt, "t0"); tanks[1].writeToNBT(nbt, "t1"); - + nbt.setBoolean("assembled", assembled); - nbt.setInteger("coreHeat", coreHeat); - nbt.setInteger("hullHeat", hullHeat); + nbt.setLong("coreHeatL", coreHeat); + nbt.setLong("hullHeatL", hullHeat); nbt.setDouble("flux", flux); nbt.setDouble("rodLevel", rodLevel); nbt.setDouble("rodTarget", rodTarget); @@ -507,7 +514,7 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG nbt.setInteger("amountLoaded", amountLoaded); nbt.setDouble("progress", progress); nbt.setDouble("processTime", processTime); - nbt.setInteger("coreHeatCapacity", coreHeatCapacity); + nbt.setLong("coreHeatCapacityL", coreHeatCapacity); nbt.setInteger("rodCount", rodCount); nbt.setInteger("connections", connections); @@ -516,13 +523,13 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG nbt.setInteger("channelCount", channelCount); nbt.setInteger("sourceCount", sourceCount); nbt.setInteger("heatsinkCount", heatsinkCount); - + nbt.setInteger("portCount", ports.size()); for(int i = 0; i < ports.size(); i++) { BlockPos pos = ports.get(i); nbt.setIntArray("p" + i, new int[] { pos.getX(), pos.getY(), pos.getZ() }); } - + nbt.setInteger("rodCount", rods.size()); for(int i = 0; i < rods.size(); i++) { BlockPos pos = rods.get(i); @@ -537,7 +544,7 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG @Override public void receiveControl(NBTTagCompound data) { - + if(data.hasKey("control")) { this.rodTarget = MathHelper.clamp_int(data.getInteger("control"), 0, 100); this.markChanged(); @@ -569,13 +576,13 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG public Object[] getLevel(Context context, Arguments args) { return new Object[] {rodTarget, rodLevel}; } - + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getCoolantInfo(Context context, Arguments args) { return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[1].getFill(), tanks[1].getMaxFill()}; } - + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFuelInfo(Context context, Arguments args) { @@ -603,7 +610,7 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIPWR(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityRadioRec.java b/src/main/java/com/hbm/tileentity/machine/TileEntityRadioRec.java index 7c1f7ea37..bc148cff5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityRadioRec.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityRadioRec.java @@ -1,40 +1,41 @@ package com.hbm.tileentity.machine; import com.hbm.interfaces.IControlReceiver; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.network.RTTYSystem; import com.hbm.tileentity.network.RTTYSystem.RTTYChannel; +import com.hbm.util.BufferUtil; import com.hbm.util.NoteBuilder; import com.hbm.util.NoteBuilder.Instrument; import com.hbm.util.NoteBuilder.Note; import com.hbm.util.NoteBuilder.Octave; import com.hbm.util.Tuple.Triplet; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -public class TileEntityRadioRec extends TileEntity implements INBTPacketReceiver, IControlReceiver { - +public class TileEntityRadioRec extends TileEntityLoadedBase implements IControlReceiver { + public String channel = ""; public boolean isOn = false; - + @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + if(this.isOn && !this.channel.isEmpty()) { RTTYChannel chan = RTTYSystem.listen(worldObj, this.channel); - + if(chan != null && chan.timeStamp == worldObj.getTotalWorldTime() - 1) { Triplet[] notes = NoteBuilder.translate(chan.signal + ""); - + for(Triplet note : notes) { Instrument i = note.getX(); Note n = note.getY(); Octave o = note.getZ(); - + int noteId = n.ordinal() + o.ordinal() * 12; String s = "harp"; @@ -48,28 +49,31 @@ public class TileEntityRadioRec extends TileEntity implements INBTPacketReceiver } } } - - NBTTagCompound data = new NBTTagCompound(); - data.setString("channel", channel); - data.setBoolean("isOn", isOn); - INBTPacketReceiver.networkPack(this, data, 15); + + networkPackNT(15); } } @Override - public void networkUnpack(NBTTagCompound nbt) { - channel = nbt.getString("channel"); - isOn = nbt.getBoolean("isOn"); + public void serialize(ByteBuf buf) { + BufferUtil.writeString(buf, this.channel); + buf.writeBoolean(this.isOn); } - + + @Override + public void deserialize(ByteBuf buf) { + this.channel = BufferUtil.readString(buf); + this.isOn = buf.readBoolean(); + } + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - + channel = nbt.getString("channel"); isOn = nbt.getBoolean("isOn"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -87,7 +91,7 @@ public class TileEntityRadioRec extends TileEntity implements INBTPacketReceiver public void receiveControl(NBTTagCompound data) { if(data.hasKey("channel")) this.channel = data.getString("channel"); if(data.hasKey("isOn")) this.isOn = data.getBoolean("isOn"); - + this.markDirty(); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java index 7b4751c96..4391993ce 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java @@ -12,7 +12,6 @@ import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.monster.IMob; import net.minecraft.entity.player.EntityPlayer; @@ -104,7 +103,7 @@ public class TileEntityRadiobox extends TileEntityLoadedBase implements IEnergyR @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java index 0a5fad22a..407eeef44 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorControl.java @@ -13,12 +13,12 @@ import com.hbm.tileentity.TileEntityMachineBase; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; 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; import net.minecraft.item.ItemStack; @@ -136,33 +136,37 @@ public class TileEntityReactorControl extends TileEntityMachineBase implements I reactor.setTarget(level); } } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("heat", heat); - data.setDouble("level", level); - data.setInteger("flux", flux); - data.setBoolean("isLinked", isLinked); - data.setDouble("levelLower", levelLower); - data.setDouble("levelUpper", levelUpper); - data.setDouble("heatLower", heatLower); - data.setDouble("heatUpper", heatUpper); - data.setInteger("function", function.ordinal()); - this.networkPack(data, 150); + + this.networkPackNT(150); } } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.heat = data.getInteger("heat"); - this.level = data.getDouble("level"); - this.flux = data.getInteger("flux"); - isLinked = data.getBoolean("isLinked"); - levelLower = data.getDouble("levelLower"); - levelUpper = data.getDouble("levelUpper"); - heatLower = data.getDouble("heatLower"); - heatUpper = data.getDouble("heatUpper"); - function = RodFunction.values()[data.getInteger("function")]; + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(heat); + buf.writeDouble(level); + buf.writeInt(flux); + buf.writeBoolean(isLinked); + buf.writeDouble(levelLower); + buf.writeDouble(levelUpper); + buf.writeDouble(heatLower); + buf.writeDouble(heatUpper); + buf.writeByte(function.ordinal()); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.heat = buf.readInt(); + this.level = buf.readDouble(); + this.flux = buf.readInt(); + isLinked = buf.readBoolean(); + levelLower = buf.readDouble(); + levelUpper = buf.readDouble(); + heatLower = buf.readDouble(); + heatUpper = buf.readDouble(); + function = RodFunction.values()[buf.readByte()]; } private boolean establishLink() { @@ -301,7 +305,7 @@ public class TileEntityReactorControl extends TileEntityMachineBase implements I @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIReactorControl(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java index e242b5ee2..db295cee4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java @@ -15,19 +15,20 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemPlateFuel; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.CompatEnergyControl; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; 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.block.material.Material; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.inventory.Container; @@ -151,27 +152,31 @@ public class TileEntityReactorResearch extends TileEntityMachineBase implements float rad = (float) heat / (float) maxHeat * 50F; ChunkRadiationManager.proxy.incrementRad(worldObj, xCoord, yCoord, zCoord, rad); } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("heat", heat); - data.setByte("water", water); - data.setDouble("level", level); - data.setDouble("targetLevel", targetLevel); - data.setIntArray("slotFlux", slotFlux); - data.setInteger("totalFlux", totalFlux); - this.networkPack(data, 150); + + this.networkPackNT(150); } } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.heat = data.getInteger("heat"); - this.water = data.getByte("water"); - this.level = data.getDouble("level"); - this.targetLevel = data.getDouble("targetLevel"); - this.slotFlux = data.getIntArray("slotFlux"); - this.totalFlux = data.getInteger("totalFlux"); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(this.heat); + buf.writeByte(this.water); + buf.writeDouble(this.level); + buf.writeDouble(this.targetLevel); + BufferUtil.writeIntArray(buf, this.slotFlux); + buf.writeInt(this.totalFlux); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.heat = buf.readInt(); + this.water = buf.readByte(); + this.level = buf.readDouble(); + this.targetLevel = buf.readDouble(); + this.slotFlux = BufferUtil.readIntArray(buf); + this.totalFlux = buf.readInt(); } public byte getWater() { @@ -477,7 +482,7 @@ public class TileEntityReactorResearch extends TileEntityMachineBase implements @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIReactorResearch(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java index d1a46f430..3f3ae011a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java @@ -33,16 +33,17 @@ import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; 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; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -60,7 +61,7 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC public FluidTank carbonDioxide; public FluidTank water; protected int output; - + private static final int[] slots_io = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 }; public static final HashMap fuelMap = new HashMap(); @@ -89,7 +90,7 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC public String getName() { return "container.zirnox"; } - + @Override public int[] getAccessibleSlotsFromSide(int side) { return slots_io; @@ -128,17 +129,6 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC } - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - this.heat = data.getInteger("heat"); - this.pressure = data.getInteger("pressure"); - this.isOn = data.getBoolean("isOn"); - steam.readFromNBT(data, "t0"); - carbonDioxide.readFromNBT(data, "t1"); - water.readFromNBT(data, "t2"); - } - public int getGaugeScaled(int i, int type) { switch (type) { case 0: return (steam.getFill() * i) / steam.getMaxFill(); @@ -167,7 +157,7 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC case 11: return new int[] { 4, 10, 12, 18 }; case 12: return new int[] { 5, 11, 13, 19 }; case 13: return new int[] { 6, 12, 20 }; - case 14: return new int[] { 7, 15, 21 }; + case 14: return new int[] { 7, 15, 21 }; case 15: return new int[] { 8, 14, 16, 22 }; case 16: return new int[] { 9, 15, 23 }; case 17: return new int[] { 10, 18 }; @@ -188,14 +178,14 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC if(!worldObj.isRemote) { this.output = 0; - + if(worldObj.getTotalWorldTime() % 20 == 0) { this.updateConnections(); } - + carbonDioxide.loadTank(24, 26, slots); water.loadTank(25, 27, slots); - + if(isOn) { for(int i = 0; i < 24; i++) { @@ -207,7 +197,7 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC } } } - + //2(fill) + (x * fill%) this.pressure = (this.carbonDioxide.getFill() * 2) + (int)((float)this.heat * ((float)this.carbonDioxide.getFill() / (float)this.carbonDioxide.getMaxFill())); @@ -219,37 +209,52 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC } else { this.heat -= 10; } - + } - + for(DirPos pos : getConPos()) { this.sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } checkIfMeltdown(); - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("heat", heat); - data.setInteger("pressure", pressure); - data.setBoolean("isOn", isOn); - steam.writeToNBT(data, "t0"); - carbonDioxide.writeToNBT(data, "t1"); - water.writeToNBT(data, "t2"); - this.networkPack(data, 150); + + this.networkPackNT(150); } } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(this.heat); + buf.writeInt(this.pressure); + buf.writeBoolean(this.isOn); + steam.serialize(buf); + carbonDioxide.serialize(buf); + water.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.heat = buf.readInt(); + this.pressure = buf.readInt(); + this.isOn = buf.readBoolean(); + steam.deserialize(buf); + carbonDioxide.deserialize(buf); + water.deserialize(buf); + } + private void generateSteam() { - + // function of SHS produced per tick // (heat - 10256)/100000 * steamFill (max efficiency at 14b) * 25 * 5 (should get rid of any rounding errors) if(this.heat > 10256) { int cycle = (int)((((float)heat - 10256F) / (float)maxHeat) * Math.min(((float)carbonDioxide.getFill() / 14000F), 1F) * 25F * 5F); this.output = cycle; - + water.setFill(water.getFill() - cycle); steam.setFill(steam.getFill() + cycle); - + if(water.getFill() < 0) water.setFill(0); @@ -297,7 +302,7 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC for(int i = 0; i < decay; i++) { this.heat += num.heat; ItemZirnoxRod.incrementLifeTime(slots[id]); - + if(ItemZirnoxRod.getLifeTime(slots[id]) > num.maxLife) { slots[id] = fuelMap.get(new ComparableStack(getStackInSlot(id))).copy(); break; @@ -334,16 +339,16 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC } private void zirnoxDebris() { - + for(int i = 0; i < 2; i++) { spawnDebris(DebrisType.EXCHANGER); } - + for(int i = 0; i < 20; i++) { spawnDebris(DebrisType.CONCRETE); spawnDebris(DebrisType.BLANK); } - + for(int i = 0; i < 10; i++) { spawnDebris(DebrisType.ELEMENT); spawnDebris(DebrisType.GRAPHITE); @@ -365,14 +370,14 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC worldObj.createExplosion(null, this.xCoord, this.yCoord + 3, this.zCoord, 12.0F, true); zirnoxDebris(); ExplosionNukeGeneric.waste(worldObj, this.xCoord, this.yCoord, this.zCoord, 35); - + List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5).expand(100, 100, 100)); - + for(EntityPlayer player : players) { player.triggerAchievement(MainRegistry.achZIRNOXBoom); } - + if(MobConfig.enableElementals) { for(EntityPlayer player : players) { player.getEntityData().getCompoundTag(EntityPlayer.PERSISTED_NBT_TAG).setBoolean("radMark", true); @@ -386,11 +391,11 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC this.trySubscribe(carbonDioxide.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - + private DirPos[] getConPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - + return new DirPos[] { new DirPos(this.xCoord + rot.offsetX * 3, this.yCoord + 1, this.zCoord + rot.offsetZ * 3, rot), new DirPos(this.xCoord + rot.offsetX * 3, this.yCoord + 3, this.zCoord + rot.offsetZ * 3, rot), @@ -416,25 +421,25 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC public double getMaxRenderDistanceSquared() { return 65536.0D; } - + @Override public boolean hasPermission(EntityPlayer player) { return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20; } - + @Override public void receiveControl(NBTTagCompound data) { if(data.hasKey("control")) { this.isOn = !this.isOn; } - + if(data.hasKey("vent")) { int fill = this.carbonDioxide.getFill(); this.carbonDioxide.setFill(fill - 1000); if(this.carbonDioxide.getFill() < 0) this.carbonDioxide.setFill(0); } - + this.markDirty(); } @@ -452,7 +457,7 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC public FluidTank[] getAllTanks() { return new FluidTank[] { water, steam, carbonDioxide }; } - + // do some opencomputer stuff @Override @Optional.Method(modid = "OpenComputers") @@ -477,12 +482,12 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC public Object[] getWater(Context context, Arguments args) { return new Object[] {water.getFill()}; } - + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getSteam(Context context, Arguments args) { return new Object[] {steam.getFill()}; - } + } @Callback(direct = true) @Optional.Method(modid = "OpenComputers") @@ -509,6 +514,15 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC return new Object[] {}; } + @Callback(direct = true) + @Optional.Method(modid = "OpenComputers") + public Object[] ventCarbonDioxide(Context context, Arguments args) { + int ventAmount = MathHelper.clamp_int(args.optInteger(0, 1000), 0, carbonDioxide.getMaxFill()); // Get how much CO2 to vent in mB (1000mB default), clamp between 0 and carbonDioxide's max fill. + int fill = this.carbonDioxide.getFill(); + this.carbonDioxide.setFill(Math.max(fill - ventAmount, 0)); // Make sure it isn't a negative number. + return new Object[] {}; + } + @Override @Optional.Method(modid = "OpenComputers") public String[] methods() { @@ -520,7 +534,8 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC "getCarbonDioxide", "isActive", "getInfo", - "setActive" + "setActive", + "ventCarbonDioxide" }; } @@ -544,6 +559,8 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC return getInfo(context, args); case ("setActive"): return setActive(context, args); + case ("ventCarbonDioxide"): + return ventCarbonDioxide(context, args); } throw new NoSuchMethodException(); } @@ -555,7 +572,7 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIReactorZirnox(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityRtgFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityRtgFurnace.java index 0e9e87eaf..1b2c61d5b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityRtgFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityRtgFurnace.java @@ -8,7 +8,6 @@ import com.hbm.util.RTGUtil; 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.init.Items; import net.minecraft.inventory.Container; @@ -303,7 +302,7 @@ public class TileEntityRtgFurnace extends TileEntity implements ISidedInventory, @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIRtgFurnace(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java index ec233595f..923cc5e93 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySILEX.java @@ -24,7 +24,6 @@ import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.Item; @@ -361,7 +360,7 @@ public class TileEntitySILEX extends TileEntityMachineBase implements IFluidStan @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUISILEX(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySawmill.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySawmill.java index f0b6a5500..a6f591167 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySawmill.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySawmill.java @@ -8,17 +8,18 @@ import com.hbm.entity.projectile.EntitySawblade; import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.machine.TileEntityMachineAutocrafter.InventoryCraftingAuto; +import com.hbm.util.BufferUtil; import com.hbm.util.ItemStackUtil; import api.hbm.tile.IHeatSource; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.Blocks; @@ -27,14 +28,13 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraft.item.crafting.IRecipe; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.common.util.ForgeDirection; public class TileEntitySawmill extends TileEntityMachineBase { - + public int heat; public static final double diffusion = 0.1D; private int warnCooldown = 0; @@ -42,7 +42,7 @@ public class TileEntitySawmill extends TileEntityMachineBase { public boolean hasBlade = true; public int progress = 0; public static final int processingTime = 600; - + public float spin; public float lastSpin; @@ -55,41 +55,41 @@ public class TileEntitySawmill extends TileEntityMachineBase { @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + if(hasBlade) { tryPullHeat(); - + if(warnCooldown > 0) warnCooldown--; - + if(heat >= 100) { - + ItemStack result = this.getOutput(slots[0]); - + if(result != null) { progress += heat / 10; - + if(progress >= this.processingTime) { progress = 0; slots[0] = null; slots[1] = result; - + if(result.getItem() != ModItems.powder_sawdust) { float chance = result.getItem() == Items.stick ? 0.1F : 0.5F; if(worldObj.rand.nextFloat() < chance) { slots[2] = new ItemStack(ModItems.powder_sawdust); } } - + this.markDirty(); } - + } else { this.progress = 0; } - + AxisAlignedBB aabb = AxisAlignedBB.getBoundingBox(-1D, 0.375D, -1D, -0.875, 2.375D, 1D); aabb = BlockDummyable.getAABBRotationOffset(aabb, xCoord + 0.5, yCoord, zCoord + 0.5, ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getRotation(ForgeDirection.UP)); for(Object o : worldObj.getEntitiesWithinAABB(EntityLivingBase.class, aabb)) { @@ -106,37 +106,37 @@ public class TileEntitySawmill extends TileEntityMachineBase { PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, e.posX, e.posY + e.height * 0.5, e.posZ), new TargetPoint(e.dimension, e.posX, e.posY, e.posZ, 50)); } } - + } else { this.progress = 0; } - + if(heat > 300) { - + this.overspeed++; - + if(overspeed > 60 && warnCooldown == 0) { warnCooldown = 100; worldObj.playSoundEffect(xCoord + 0.5, yCoord + 1, zCoord + 0.5, "hbm:block.warnOverspeed", 2.0F, 1.0F); } - + if(overspeed > 300) { this.hasBlade = false; this.worldObj.newExplosion(null, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 5F, false, false); - + int orientation = this.getBlockMetadata() - BlockDummyable.offset; ForgeDirection dir = ForgeDirection.getOrientation(orientation); EntitySawblade cog = new EntitySawblade(worldObj, xCoord + 0.5 + dir.offsetX, yCoord + 1, zCoord + 0.5 + dir.offsetZ).setOrientation(orientation); ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); - + cog.motionX = rot.offsetX; cog.motionY = 1 + (heat - 100) * 0.0001D; cog.motionZ = rot.offsetZ; worldObj.spawnEntityInWorld(cog); - + this.markDirty(); } - + } else { this.overspeed = 0; } @@ -144,34 +144,18 @@ public class TileEntitySawmill extends TileEntityMachineBase { this.overspeed = 0; this.warnCooldown = 0; } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("heat", heat); - data.setInteger("progress", progress); - data.setBoolean("hasBlade", hasBlade); - NBTTagList list = new NBTTagList(); - for(int i = 0; i < slots.length; i++) { - if(slots[i] != null) { - NBTTagCompound nbt1 = new NBTTagCompound(); - nbt1.setByte("slot", (byte) i); - slots[i].writeToNBT(nbt1); - list.appendTag(nbt1); - } - } - data.setTag("items", list); - - INBTPacketReceiver.networkPack(this, data, 150); - + networkPackNT(150); + this.heat = 0; - + } else { - + float momentum = heat * 25F / ((float) 300); - + this.lastSpin = this.spin; this.spin += momentum; - + if(this.spin >= 360F) { this.spin -= 360F; this.lastSpin -= 360F; @@ -180,54 +164,58 @@ public class TileEntitySawmill extends TileEntityMachineBase { } @Override - public void networkUnpack(NBTTagCompound nbt) { - this.heat = nbt.getInteger("heat"); - this.progress = nbt.getInteger("progress"); - this.hasBlade = nbt.getBoolean("hasBlade"); - - NBTTagList list = nbt.getTagList("items", 10); + public void serialize(ByteBuf buf) { + buf.writeInt(heat); + buf.writeInt(progress); + buf.writeBoolean(hasBlade); - slots = new ItemStack[3]; - for(int i = 0; i < list.tagCount(); i++) { - NBTTagCompound nbt1 = list.getCompoundTagAt(i); - byte b0 = nbt1.getByte("slot"); - if(b0 >= 0 && b0 < slots.length) { - slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); - } + for (ItemStack slot : slots) { + BufferUtil.writeItemStack(buf, slot); } } - + + @Override + public void deserialize(ByteBuf buf) { + this.heat = buf.readInt(); + this.progress = buf.readInt(); + this.hasBlade = buf.readBoolean(); + + for(int i = 0; i < slots.length; i++) { + slots[i] = BufferUtil.readItemStack(buf); + } + } + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); this.hasBlade = nbt.getBoolean("hasBlade"); this.progress = nbt.getInteger("progress"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setBoolean("hasBlade", hasBlade); nbt.setInteger("progress", progress); } - + protected void tryPullHeat() { TileEntity con = worldObj.getTileEntity(xCoord, yCoord - 1, zCoord); - + if(con instanceof IHeatSource) { IHeatSource source = (IHeatSource) con; int heatSrc = (int) (source.getHeatStored() * diffusion); - + if(heatSrc > 0) { source.useUpHeat(heatSrc); this.heat += heatSrc; return; } } - + this.heat = Math.max(this.heat - Math.max(this.heat / 1000, 1), 0); } - + protected InventoryCraftingAuto craftingInventory = new InventoryCraftingAuto(1, 1); @Override @@ -244,20 +232,20 @@ public class TileEntitySawmill extends TileEntityMachineBase { public int[] getAccessibleSlotsFromSide(int side) { return new int[] {0, 1, 2}; } - + public ItemStack getOutput(ItemStack input) { - + if(input == null) return null; - + craftingInventory.setInventorySlotContents(0, input); - + List names = ItemStackUtil.getOreDictNames(input); - + if(names.contains("stickWood")) { return new ItemStack(ModItems.powder_sawdust); } - + if(names.contains("logWood")) { for(Object o : CraftingManager.getInstance().getRecipeList()) { IRecipe recipe = (IRecipe) o; @@ -271,35 +259,35 @@ public class TileEntitySawmill extends TileEntityMachineBase { } } } - + if(names.contains("plankWood")) { return new ItemStack(Items.stick, 6); } - + if(names.contains("treeSapling")) { return new ItemStack(Items.stick, 1); } - + return null; } public static HashMap getRecipes() { - + HashMap recipes = new HashMap(); recipes.put(new OreDictStack("logWood"), new ItemStack[] { new ItemStack(Blocks.planks, 6), ItemStackUtil.addTooltipToStack(new ItemStack(ModItems.powder_sawdust), EnumChatFormatting.RED + "50%") }); recipes.put(new OreDictStack("plankWood"), new ItemStack[] { new ItemStack(Items.stick, 6), ItemStackUtil.addTooltipToStack(new ItemStack(ModItems.powder_sawdust), EnumChatFormatting.RED + "10%") }); recipes.put(new OreDictStack("stickWood"), new ItemStack[] { new ItemStack(ModItems.powder_sawdust) }); recipes.put(new OreDictStack("treeSapling"), new ItemStack[] { new ItemStack(Items.stick, 1), ItemStackUtil.addTooltipToStack(new ItemStack(ModItems.powder_sawdust), EnumChatFormatting.RED + "10%") }); - + return recipes; } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 1, @@ -310,10 +298,10 @@ public class TileEntitySawmill extends TileEntityMachineBase { zCoord + 2 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java index c2803d6c6..107fe54ab 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java @@ -5,13 +5,11 @@ import java.util.HashSet; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.Library; -import com.hbm.packet.BufPacket; -import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IBufPacketReceiver; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.fluid.IFluidStandardTransceiver; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; @@ -19,7 +17,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ChunkCoordinates; -public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFluidStandardTransceiver, IBufPacketReceiver { +public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFluidStandardTransceiver, IBufPacketReceiver, IFluidCopiable { private FluidTank water; private FluidTank steam; @@ -27,7 +25,7 @@ public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFlui public HashSet primary = new HashSet(); public HashSet secondary = new HashSet(); - + public TileEntitySolarBoiler() { water = new FluidTank(Fluids.WATER, 100); steam = new FluidTank(Fluids.STEAM, 10_000); @@ -35,16 +33,16 @@ public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFlui @Override public void updateEntity() { - + if(!worldObj.isRemote) { this.trySubscribe(water.getTankType(), worldObj, xCoord, yCoord + 3, zCoord, Library.POS_Y); this.trySubscribe(water.getTankType(), worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); - + int process = heat / 50; process = Math.min(process, water.getFill()); process = Math.min(process, (steam.getMaxFill() - steam.getFill()) / 100); - + if(process < 0) process = 0; @@ -53,12 +51,12 @@ public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFlui this.sendFluid(steam, worldObj, xCoord, yCoord + 3, zCoord, Library.POS_Y); this.sendFluid(steam, worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); - + heat = 0; networkPackNT(15); } else { - + //a delayed queue of mirror positions because we can't expect the boiler to always tick first secondary.clear(); secondary.addAll(primary); @@ -81,12 +79,12 @@ public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFlui this.water.writeToNBT(nbt, "water"); this.steam.writeToNBT(nbt, "steam"); } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 1, @@ -97,10 +95,10 @@ public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFlui zCoord + 2 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -121,10 +119,6 @@ public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFlui public FluidTank[] getAllTanks() { return new FluidTank[] { water, steam }; } - - public void networkPackNT(int range) { - if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); - } @Override public void serialize(ByteBuf buf) { @@ -137,4 +131,9 @@ public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFlui water.deserialize(buf); steam.deserialize(buf); } + + @Override + public FluidTank getTankToPaste() { + return null; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySolarMirror.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySolarMirror.java index c64a83cec..f921d04ad 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySolarMirror.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySolarMirror.java @@ -4,6 +4,7 @@ import com.hbm.tileentity.TileEntityTickingBase; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; @@ -28,7 +29,7 @@ public class TileEntitySolarMirror extends TileEntityTickingBase { if(!worldObj.isRemote) { if(worldObj.getTotalWorldTime() % 20 == 0) - sendUpdate(); + this.networkPackNT(200); if(tY < yCoord) { isOn = false; @@ -64,22 +65,18 @@ public class TileEntitySolarMirror extends TileEntityTickingBase { } } - public void sendUpdate() { - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("posX", tX); - data.setInteger("posY", tY); - data.setInteger("posZ", tZ); - data.setBoolean("isOn", isOn); - this.networkPack(data, 200); + @Override public void serialize(ByteBuf buf) { + buf.writeInt(this.tX); + buf.writeInt(this.tY); + buf.writeInt(this.tZ); + buf.writeBoolean(this.isOn); } - @Override - public void networkUnpack(NBTTagCompound nbt) { - tX = nbt.getInteger("posX"); - tY = nbt.getInteger("posY"); - tZ = nbt.getInteger("posZ"); - isOn = nbt.getBoolean("isOn"); + @Override public void deserialize(ByteBuf buf) { + this.tX = buf.readInt(); + this.tY = buf.readInt(); + this.tZ = buf.readInt(); + this.isOn = buf.readBoolean(); } public void setTarget(int x, int y, int z) { @@ -87,7 +84,7 @@ public class TileEntitySolarMirror extends TileEntityTickingBase { tY = y; tZ = z; this.markDirty(); - this.sendUpdate(); + this.networkPackNT(200); } public void readFromNBT(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java index 346d171f5..10fb7aa82 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java @@ -14,6 +14,7 @@ import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.fauxpointtwelve.DirPos; @@ -23,7 +24,7 @@ import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.item.IDesignatorItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.ISidedInventory; @@ -36,7 +37,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements ISidedInventory, IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider { +public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements ISidedInventory, IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IFluidCopiable { public long power; public static final long maxPower = 1000000; @@ -94,15 +95,8 @@ public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements IS } else { liftOff(); } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setByte("mode", mode); - data.setBoolean("starting", starting); - data.setByte("type", this.getType()); - tanks[0].writeToNBT(data, "t0"); - tanks[1].writeToNBT(data, "t1"); - networkPack(data, 250); + + networkPackNT(250); } if(worldObj.isRemote) { @@ -189,18 +183,29 @@ public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements IS audio = null; } } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - power = data.getLong("power"); - mode = data.getByte("mode"); - starting = data.getBoolean("starting"); - rocketType = data.getByte("type"); - tanks[0].readFromNBT(data, "t0"); - tanks[1].readFromNBT(data, "t1"); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(power); + buf.writeByte(mode); + buf.writeBoolean(starting); + buf.writeByte(this.getType()); + tanks[0].serialize(buf); + tanks[1].serialize(buf); } - + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + power = buf.readLong(); + mode = buf.readByte(); + starting = buf.readBoolean(); + rocketType = buf.readByte(); + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); + } + public void startCountdown() { if(canLaunch()) @@ -449,7 +454,12 @@ public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements IS @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUISoyuzLauncher(player.inventory, this); } + + @Override + public FluidTank getTankToPaste() { + return null; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java index a09c5747e..d0297d2f8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java @@ -9,8 +9,9 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Coolable; import com.hbm.inventory.fluid.trait.FT_Coolable.CoolingType; +import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IConfigurableMachine; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.fauxpointtwelve.DirPos; @@ -18,13 +19,15 @@ import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; 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; -public class TileEntitySteamEngine extends TileEntityLoadedBase implements IEnergyProviderMK2, IFluidStandardTransceiver, INBTPacketReceiver, IConfigurableMachine { +public class TileEntitySteamEngine extends TileEntityLoadedBase implements IEnergyProviderMK2, IFluidStandardTransceiver, IBufPacketReceiver, IConfigurableMachine, IFluidCopiable { public long powerBuffer; @@ -35,14 +38,14 @@ public class TileEntitySteamEngine extends TileEntityLoadedBase implements IEner private int turnProgress; private float acceleration = 0F; - + /* CONFIGURABLE */ private static int steamCap = 2_000; private static int ldsCap = 20; private static double efficiency = 0.85D; - + public TileEntitySteamEngine() { - + tanks = new FluidTank[2]; tanks[0] = new FluidTank(Fluids.STEAM, steamCap); tanks[1] = new FluidTank(Fluids.SPENTSTEAM, ldsCap); @@ -66,59 +69,64 @@ public class TileEntitySteamEngine extends TileEntityLoadedBase implements IEner writer.name("I:ldsCap").value(ldsCap); writer.name("D:efficiency").value(efficiency); } - + + ByteBuf buf; + @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + + if(this.buf != null) + this.buf.release(); + this.buf = Unpooled.buffer(); + this.powerBuffer = 0; tanks[0].setTankType(Fluids.STEAM); tanks[1].setTankType(Fluids.SPENTSTEAM); - - NBTTagCompound data = new NBTTagCompound(); - tanks[0].writeToNBT(data, "s"); + + tanks[0].serialize(buf); FT_Coolable trait = tanks[0].getTankType().getTrait(FT_Coolable.class); double eff = trait.getEfficiency(CoolingType.TURBINE) * efficiency; - + int inputOps = tanks[0].getFill() / trait.amountReq; int outputOps = (tanks[1].getMaxFill() - tanks[1].getFill()) / trait.amountProduced; int ops = Math.min(inputOps, outputOps); tanks[0].setFill(tanks[0].getFill() - ops * trait.amountReq); tanks[1].setFill(tanks[1].getFill() + ops * trait.amountProduced); this.powerBuffer += (ops * trait.heatEnergy * eff); - + if(ops > 0) { this.acceleration += 0.1F; } else { this.acceleration -= 0.1F; } - + this.acceleration = MathHelper.clamp_float(this.acceleration, 0F, 40F); this.rotor += this.acceleration; - + if(this.rotor >= 360D) { this.rotor -= 360D; - + this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:block.steamEngineOperate", getVolume(1.0F), 0.5F + (acceleration / 80F)); } - - data.setLong("power", this.powerBuffer); - data.setFloat("rotor", this.rotor); - tanks[1].writeToNBT(data, "w"); + + buf.writeLong(this.powerBuffer); + buf.writeFloat(this.rotor); + tanks[1].serialize(buf); for(DirPos pos : getConPos()) { if(this.powerBuffer > 0) this.tryProvide(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - - INBTPacketReceiver.networkPack(this, data, 150); + + networkPackNT(150); } else { this.lastRotor = this.rotor; - + if(this.turnProgress > 0) { double d = MathHelper.wrapAngleTo180_double(this.syncRotor - (double) this.rotor); this.rotor = (float) ((double) this.rotor + d / (double) this.turnProgress); @@ -128,18 +136,18 @@ public class TileEntitySteamEngine extends TileEntityLoadedBase implements IEner } } } - + protected DirPos[] getConPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - + return new DirPos[] { new DirPos(xCoord + rot.offsetX * 2, yCoord + 1, zCoord + rot.offsetZ * 2, rot), new DirPos(xCoord + rot.offsetX * 2 + dir.offsetX, yCoord + 1, zCoord + rot.offsetZ * 2 + dir.offsetZ, rot), new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX, yCoord + 1, zCoord + rot.offsetZ * 2 - dir.offsetZ, rot) }; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -149,7 +157,7 @@ public class TileEntitySteamEngine extends TileEntityLoadedBase implements IEner this.tanks[0].readFromNBT(nbt, "s"); this.tanks[1].readFromNBT(nbt, "w"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -159,12 +167,12 @@ public class TileEntitySteamEngine extends TileEntityLoadedBase implements IEner tanks[0].writeToNBT(nbt, "s"); tanks[1].writeToNBT(nbt, "w"); } - + @Override public AxisAlignedBB getRenderBoundingBox() { return TileEntity.INFINITE_EXTENT_AABB; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -207,11 +215,21 @@ public class TileEntitySteamEngine extends TileEntityLoadedBase implements IEner } @Override - public void networkUnpack(NBTTagCompound nbt) { - this.powerBuffer = nbt.getLong("power"); - this.syncRotor = nbt.getFloat("rotor"); + public void serialize(ByteBuf buf) { + buf.writeBytes(this.buf); + } + + @Override + public void deserialize(ByteBuf buf) { + this.tanks[0].deserialize(buf); + this.powerBuffer = buf.readLong(); + this.syncRotor = buf.readFloat(); + this.tanks[1].deserialize(buf); this.turnProgress = 3; //use 3-ply for extra smoothness - this.tanks[0].readFromNBT(nbt, "s"); - this.tanks[1].readFromNBT(nbt, "w"); + } + + @Override + public FluidTank getTankToPaste() { + return null; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityStirling.java b/src/main/java/com/hbm/tileentity/machine/TileEntityStirling.java index d59a5e933..44a71b5d5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityStirling.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityStirling.java @@ -8,8 +8,8 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityCog; import com.hbm.lib.Library; +import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IConfigurableMachine; -import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.fauxpointtwelve.DirPos; @@ -17,22 +17,23 @@ import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityStirling extends TileEntityLoadedBase implements INBTPacketReceiver, IEnergyProviderMK2, IConfigurableMachine { - +public class TileEntityStirling extends TileEntityLoadedBase implements IBufPacketReceiver, IEnergyProviderMK2, IConfigurableMachine { + public long powerBuffer; public int heat; private int warnCooldown = 0; private int overspeed = 0; public boolean hasCog = true; - + public float spin; public float lastSpin; - + /* CONFIGURABLE CONSTANTS */ public static double diffusion = 0.1D; public static double efficiency = 0.5D; @@ -42,44 +43,44 @@ public class TileEntityStirling extends TileEntityLoadedBase implements INBTPack @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + if(hasCog) { this.powerBuffer = 0; tryPullHeat(); - + this.powerBuffer = (long) (this.heat * (this.isCreative() ? 1 : this.efficiency)); - + if(warnCooldown > 0) warnCooldown--; - + if(heat > maxHeat() && !isCreative()) { - + this.overspeed++; - + if(overspeed > 60 && warnCooldown == 0) { warnCooldown = 100; worldObj.playSoundEffect(xCoord + 0.5, yCoord + 1, zCoord + 0.5, "hbm:block.warnOverspeed", 2.0F, 1.0F); } - + if(overspeed > overspeedLimit) { this.hasCog = false; this.worldObj.newExplosion(null, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 5F, false, false); - + int orientation = this.getBlockMetadata() - BlockDummyable.offset; ForgeDirection dir = ForgeDirection.getOrientation(orientation); EntityCog cog = new EntityCog(worldObj, xCoord + 0.5 + dir.offsetX, yCoord + 1, zCoord + 0.5 + dir.offsetZ).setOrientation(orientation).setMeta(this.getGeatMeta()); ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); - + cog.motionX = rot.offsetX; cog.motionY = 1 + (heat - maxHeat()) * 0.0001D; cog.motionZ = rot.offsetZ; worldObj.spawnEntityInWorld(cog); - + this.markDirty(); } - + } else { this.overspeed = 0; } @@ -87,52 +88,48 @@ public class TileEntityStirling extends TileEntityLoadedBase implements INBTPack this.overspeed = 0; this.warnCooldown = 0; } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", powerBuffer); - data.setInteger("heat", heat); - data.setBoolean("hasCog", hasCog); - INBTPacketReceiver.networkPack(this, data, 150); - + + networkPackNT(150); + if(hasCog) { for(DirPos pos : getConPos()) { this.tryProvide(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } else { - + if(this.powerBuffer > 0) this.powerBuffer--; } - + this.heat = 0; } else { - + float momentum = powerBuffer * 50F / ((float) maxHeat()); - + if(this.isCreative()) momentum = Math.min(momentum, 45F); - + this.lastSpin = this.spin; this.spin += momentum; - + if(this.spin >= 360F) { this.spin -= 360F; this.lastSpin -= 360F; } } } - + public int getGeatMeta() { return this.getBlockType() == ModBlocks.machine_stirling ? 0 : this.getBlockType() == ModBlocks.machine_stirling_creative ? 2 : 1; } - + public int maxHeat() { return this.getBlockType() == ModBlocks.machine_stirling ? 300 : 1500; } - + public boolean isCreative() { return this.getBlockType() == ModBlocks.machine_stirling_creative; } - + protected DirPos[] getConPos() { return new DirPos[] { new DirPos(xCoord + 2, yCoord, zCoord, Library.POS_X), @@ -143,29 +140,36 @@ public class TileEntityStirling extends TileEntityLoadedBase implements INBTPack } @Override - public void networkUnpack(NBTTagCompound nbt) { - this.powerBuffer = nbt.getLong("power"); - this.heat = nbt.getInteger("heat"); - this.hasCog = nbt.getBoolean("hasCog"); + public void serialize(ByteBuf buf) { + buf.writeLong(this.powerBuffer); + buf.writeInt(this.heat); + buf.writeBoolean(this.hasCog); } - + + @Override + public void deserialize(ByteBuf buf) { + this.powerBuffer = buf.readLong(); + this.heat = buf.readInt(); + this.hasCog = buf.readBoolean(); + } + protected void tryPullHeat() { TileEntity con = worldObj.getTileEntity(xCoord, yCoord - 1, zCoord); - + if(con instanceof IHeatSource) { IHeatSource source = (IHeatSource) con; int heatSrc = (int) (source.getHeatStored() * diffusion); - + if(heatSrc > 0) { source.useUpHeat(heatSrc); this.heat += heatSrc; return; } } - + this.heat = Math.max(this.heat - Math.max(this.heat / 1000, 1), 0); } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -174,7 +178,7 @@ public class TileEntityStirling extends TileEntityLoadedBase implements INBTPack this.hasCog = nbt.getBoolean("hasCog"); this.overspeed = nbt.getInteger("overspeed"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -198,12 +202,12 @@ public class TileEntityStirling extends TileEntityLoadedBase implements INBTPack public long getMaxPower() { return powerBuffer; } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 1, @@ -214,10 +218,10 @@ public class TileEntityStirling extends TileEntityLoadedBase implements INBTPack zCoord + 2 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityStorageDrum.java b/src/main/java/com/hbm/tileentity/machine/TileEntityStorageDrum.java index 8b9f0eb39..407c79868 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityStorageDrum.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityStorageDrum.java @@ -12,6 +12,7 @@ import com.hbm.inventory.gui.GUIStorageDrum; import com.hbm.items.ModItems; import com.hbm.items.special.ItemWasteLong; import com.hbm.items.special.ItemWasteShort; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; @@ -23,7 +24,6 @@ import api.hbm.fluid.IFluidStandardSender; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -34,7 +34,8 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; import net.minecraft.world.World; -public class TileEntityStorageDrum extends TileEntityMachineBase implements IFluidStandardSender, IBufPacketReceiver, IGUIProvider { +public class TileEntityStorageDrum extends TileEntityMachineBase implements IFluidStandardSender, IBufPacketReceiver, IGUIProvider, IFluidCopiable { + public FluidTank[] tanks; private static final int[] slots_arr = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 }; @@ -54,61 +55,61 @@ public class TileEntityStorageDrum extends TileEntityMachineBase implements IFlu @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + float rad = 0; - + int liquid = 0; int gas = 0; - + for(int i = 0; i < 24; i++) { - + if(slots[i] != null) { - + Item item = slots[i].getItem(); - + if(worldObj.getTotalWorldTime() % 20 == 0) { rad += HazardSystem.getHazardLevelFromStack(slots[i], HazardRegistry.RADIATION); } - + int meta = slots[i].getItemDamage(); - + if(item == ModItems.nuclear_waste_long && worldObj.rand.nextInt(VersatileConfig.getLongDecayChance()) == 0) { ItemWasteLong.WasteClass wasteClass = ItemWasteLong.WasteClass.values()[ItemWasteLong.rectify(meta)]; liquid += wasteClass.liquid; gas += wasteClass.gas; slots[i] = new ItemStack(ModItems.nuclear_waste_long_depleted, 1, meta); } - + if(item == ModItems.nuclear_waste_long_tiny && worldObj.rand.nextInt(VersatileConfig.getLongDecayChance() / 10) == 0) { ItemWasteLong.WasteClass wasteClass = ItemWasteLong.WasteClass.values()[ItemWasteLong.rectify(meta)]; liquid += wasteClass.liquid / 10; gas += wasteClass.gas / 10; slots[i] = new ItemStack(ModItems.nuclear_waste_long_depleted_tiny, 1, meta); } - + if(item == ModItems.nuclear_waste_short && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance()) == 0) { ItemWasteShort.WasteClass wasteClass = ItemWasteShort.WasteClass.values()[ItemWasteLong.rectify(meta)]; liquid += wasteClass.liquid; gas += wasteClass.gas; slots[i] = new ItemStack(ModItems.nuclear_waste_short_depleted, 1, meta); } - + if(item == ModItems.nuclear_waste_short_tiny && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 10) == 0) { ItemWasteShort.WasteClass wasteClass = ItemWasteShort.WasteClass.values()[ItemWasteLong.rectify(meta)]; liquid += wasteClass.liquid / 10; gas += wasteClass.gas / 10; slots[i] = new ItemStack(ModItems.nuclear_waste_short_depleted_tiny, 1, meta); } - + if(item == ModItems.ingot_au198 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 20) == 0) { slots[i] = new ItemStack(ModItems.ingot_mercury, 1, meta); } if(item == ModItems.nugget_au198 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 100) == 0) { slots[i] = new ItemStack(ModItems.nugget_mercury, 1, meta); } - + if(item == ModItems.ingot_pb209 && worldObj.rand.nextInt(VersatileConfig.getShortDecayChance() / 10) == 0) { slots[i] = new ItemStack(ModItems.ingot_bismuth, 1, meta); } @@ -127,27 +128,27 @@ public class TileEntityStorageDrum extends TileEntityMachineBase implements IFlu this.tanks[0].setFill(this.tanks[0].getFill() + liquid); this.tanks[1].setFill(this.tanks[1].getFill() + gas); - + for(int i = 0; i < 2; i++) { - + int overflow = Math.max(this.tanks[i].getFill() - this.tanks[i].getMaxFill(), 0); - + if(overflow > 0) { this.tanks[i].setFill(this.tanks[i].getFill() - overflow); this.tanks[i].getTankType().onFluidRelease(this, this.tanks[i], overflow); } } - + age++; - + if(age >= 20) age -= 20; - + this.sendFluidToAll(tanks[0], this); this.sendFluidToAll(tanks[1], this); - - this.sendStandard(25); - + + this.networkPackNT(25); + if(rad > 0) { radiate(worldObj, xCoord, yCoord, zCoord, rad); } @@ -158,58 +159,58 @@ public class TileEntityStorageDrum extends TileEntityMachineBase implements IFlu tanks[0].serialize(buf); tanks[1].serialize(buf); } - + @Override public void deserialize(ByteBuf buf) { tanks[0].deserialize(buf); tanks[1].deserialize(buf); } - + private void radiate(World world, int x, int y, int z, float rads) { - + double range = 32D; - + List entities = world.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(x + 0.5, y + 0.5, z + 0.5, x + 0.5, y + 0.5, z + 0.5).expand(range, range, range)); - + for(EntityLivingBase e : entities) { - + Vec3 vec = Vec3.createVectorHelper(e.posX - (x + 0.5), (e.posY + e.getEyeHeight()) - (y + 0.5), e.posZ - (z + 0.5)); double len = vec.lengthVector(); vec = vec.normalize(); - + float res = 0; - + for(int i = 1; i < len; i++) { int ix = (int)Math.floor(x + 0.5 + vec.xCoord * i); int iy = (int)Math.floor(y + 0.5 + vec.yCoord * i); int iz = (int)Math.floor(z + 0.5 + vec.zCoord * i); - + res += world.getBlock(ix, iy, iz).getExplosionResistance(null); } - + if(res < 1) res = 1; - + float eRads = rads; eRads /= (float)res; eRads /= (float)(len * len); - + ContaminationUtil.contaminate(e, HazardType.RADIATION, ContaminationType.CREATIVE, eRads); } } @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { - + Item item = itemStack.getItem(); - - if(item == ModItems.nuclear_waste_long || - item == ModItems.nuclear_waste_long_tiny || - item == ModItems.nuclear_waste_short || - item == ModItems.nuclear_waste_short_tiny || + + if(item == ModItems.nuclear_waste_long || + item == ModItems.nuclear_waste_long_tiny || + item == ModItems.nuclear_waste_short || + item == ModItems.nuclear_waste_short_tiny || item == ModItems.ingot_au198) return true; - + return false; } @@ -222,14 +223,14 @@ public class TileEntityStorageDrum extends TileEntityMachineBase implements IFlu public boolean canExtractItem(int i, ItemStack itemStack, int j) { Item item = itemStack.getItem(); - - if(item == ModItems.nuclear_waste_long_depleted || - item == ModItems.nuclear_waste_long_depleted_tiny || - item == ModItems.nuclear_waste_short_depleted || - item == ModItems.nuclear_waste_short_depleted_tiny || + + if(item == ModItems.nuclear_waste_long_depleted || + item == ModItems.nuclear_waste_long_depleted_tiny || + item == ModItems.nuclear_waste_short_depleted || + item == ModItems.nuclear_waste_short_depleted_tiny || item == ModItems.ingot_mercury) return true; - + return false; } @@ -237,19 +238,19 @@ public class TileEntityStorageDrum extends TileEntityMachineBase implements IFlu public int getInventoryStackLimit() { return 1; } - + @Override public int[] getAccessibleSlotsFromSide(int side) { return slots_arr; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); this.tanks[0].readFromNBT(nbt, "liquid"); this.tanks[1].readFromNBT(nbt, "gas"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -274,7 +275,12 @@ public class TileEntityStorageDrum extends TileEntityMachineBase implements IFlu @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIStorageDrum(player.inventory, this); } + + @Override + public FluidTank getTankToPaste() { + return null; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java b/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java index ecdb619a0..30d3d8df5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java @@ -15,12 +15,12 @@ import com.hbm.util.ArmorUtil; import api.hbm.energymk2.IEnergyReceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.monster.EntityCreeper; import net.minecraft.entity.passive.EntityOcelot; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; @@ -69,17 +69,7 @@ public class TileEntityTesla extends TileEntityMachineBase implements IEnergyRec this.targets = zap(worldObj, dx, dy, dz, range, null); } - NBTTagCompound data = new NBTTagCompound(); - data.setShort("length", (short)targets.size()); - int i = 0; - for(double[] d : this.targets) { - data.setDouble("x" + i, d[0]); - data.setDouble("y" + i, d[1]); - data.setDouble("z" + i, d[2]); - i++; - } - - this.networkPack(data, 100); + this.networkPackNT(100); } } @@ -145,19 +135,30 @@ public class TileEntityTesla extends TileEntityMachineBase implements IEnergyRec return ret; } - - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - int s = data.getShort("length"); - + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeShort((short)targets.size()); + for(double[] d : this.targets) { + buf.writeDouble(d[0]); + buf.writeDouble(d[1]); + buf.writeDouble(d[2]); + } + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + int s = buf.readShort(); + this.targets.clear(); - + for(int i = 0; i < s; i++) this.targets.add(new double[] { - data.getDouble("x" + i), - data.getDouble("y" + i), - data.getDouble("z" + i) + buf.readDouble(), // X + buf.readDouble(), // Y + buf.readDouble() // Z }); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityVaultDoor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityVaultDoor.java index 8ca80eb24..90ce287aa 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityVaultDoor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityVaultDoor.java @@ -3,7 +3,7 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.DummyBlockVault; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TEVaultPacket; +import com.hbm.packet.toclient.TEVaultPacket; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -194,9 +194,8 @@ public class TileEntityVaultDoor extends TileEntityLockableBase { } public boolean placeDummy(int x, int y, int z) { - - if(!worldObj.getBlock(x, y, z).isReplaceable(worldObj, x, y, z)) - return false; + + if(!worldObj.getBlock(x, y, z).isReplaceable(worldObj, x, y, z)) worldObj.func_147480_a(x, y, z, false); worldObj.setBlock(x, y, z, ModBlocks.dummy_block_vault); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWasteDrum.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWasteDrum.java index 14f86bab4..238a68c28 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWasteDrum.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWasteDrum.java @@ -9,7 +9,6 @@ import com.hbm.tileentity.IGUIProvider; 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.init.Blocks; import net.minecraft.inventory.Container; @@ -229,7 +228,7 @@ public class TileEntityWasteDrum extends TileEntity implements ISidedInventory, @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIWasteDrum(player.inventory, this); } } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java index 9168d4387..20852c6e2 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java @@ -18,8 +18,9 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemWatzPellet; import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.IFluidCopiable; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.Compat; @@ -31,8 +32,8 @@ import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.inventory.Container; @@ -44,7 +45,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityWatz extends TileEntityMachineBase implements IFluidStandardTransceiver, IControlReceiver, IGUIProvider { +public class TileEntityWatz extends TileEntityMachineBase implements IFluidStandardTransceiver, IControlReceiver, IGUIProvider, IFluidCopiable { public FluidTank[] tanks; public int heat; @@ -120,7 +121,7 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand /* send sync packets (order doesn't matter) */ for(TileEntityWatz segment : segments) { segment.isOn = turnedOn; - segment.sendPacket(sharedTanks); + this.networkPackNT(25); segment.heat *= 0.99; //cool 1% per tick } @@ -277,30 +278,28 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand } } } - - public void sendPacket(FluidTank[] tanks) { - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("heat", this.heat); - data.setBoolean("isOn", isOn); - data.setBoolean("lock", isLocked); - data.setDouble("flux", this.fluxLastReaction + this.fluxLastBase); - for(int i = 0; i < tanks.length; i++) { - tanks[i].writeToNBT(data, "t" + i); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(this.heat); + buf.writeBoolean(isOn); + buf.writeBoolean(isLocked); + buf.writeDouble(this.fluxLastReaction + this.fluxLastBase); + for (FluidTank tank : tanks) { + tank.serialize(buf); } - this.networkPack(data, 25); } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.heat = nbt.getInteger("heat"); - this.isOn = nbt.getBoolean("isOn"); - this.isLocked = nbt.getBoolean("lock"); - this.fluxDisplay = nbt.getDouble("flux"); - for(int i = 0; i < tanks.length; i++) { - tanks[i].readFromNBT(nbt, "t" + i); + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.heat = buf.readInt(); + this.isOn = buf.readBoolean(); + this.isLocked = buf.readBoolean(); + this.fluxDisplay = buf.readDouble(); + for (FluidTank tank : tanks) { + tank.deserialize(buf); } } @@ -531,7 +530,7 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIWatz(player.inventory, this); } @@ -549,4 +548,9 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand public FluidTank[] getReceivingTanks() { return new FluidTank[] { tanks[0] }; } + + @Override + public FluidTank getTankToPaste() { + return null; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityZirnoxDestroyed.java b/src/main/java/com/hbm/tileentity/machine/TileEntityZirnoxDestroyed.java index 4fb2be3ef..562109830 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityZirnoxDestroyed.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityZirnoxDestroyed.java @@ -3,8 +3,8 @@ package com.hbm.tileentity.machine; import java.util.List; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.ContaminationUtil; import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.HazardType; diff --git a/src/main/java/com/hbm/tileentity/machine/albion/IParticleUser.java b/src/main/java/com/hbm/tileentity/machine/albion/IParticleUser.java new file mode 100644 index 000000000..c71cfdc92 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/albion/IParticleUser.java @@ -0,0 +1,13 @@ +package com.hbm.tileentity.machine.albion; + +import com.hbm.tileentity.machine.albion.TileEntityPASource.Particle; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraftforge.common.util.ForgeDirection; + +public interface IParticleUser { + + public boolean canParticleEnter(Particle particle, ForgeDirection dir, int x, int y, int z); + public void onEnter(Particle particle, ForgeDirection dir); + public BlockPos getExitPos(Particle particle); +} diff --git a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityCooledBase.java b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityCooledBase.java new file mode 100644 index 000000000..18559eaa4 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityCooledBase.java @@ -0,0 +1,113 @@ +package com.hbm.tileentity.machine.albion; + +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BobMathUtil; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.energymk2.IEnergyReceiverMK2; +import api.hbm.fluid.IFluidStandardTransceiver; +import io.netty.buffer.ByteBuf; +import net.minecraft.nbt.NBTTagCompound; + +public abstract class TileEntityCooledBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver { + + public FluidTank[] tanks; + + public long power; + + public static final float KELVIN = 273F; + public float temperature = KELVIN + 20; + public static final float temperature_target = KELVIN - 150F; + public static final float temp_change_per_mb = 0.5F; + public static final float temp_passive_heating = 2.5F; + public static final float temp_change_max = 5F + temp_passive_heating; + + public TileEntityCooledBase(int slotCount) { + super(slotCount); + tanks = new FluidTank[2]; + tanks[0] = new FluidTank(Fluids.PERFLUOROMETHYL_COLD, 4_000); + tanks[1] = new FluidTank(Fluids.PERFLUOROMETHYL, 4_000); + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + for(DirPos pos : this.getConPos()) { + this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + + this.temperature += this.temp_passive_heating; + if(this.temperature > KELVIN + 20) this.temperature = KELVIN + 20; + + if(this.temperature > this.temperature_target) { + int cyclesTemp = (int) Math.ceil((Math.min(this.temperature - temperature_target, temp_change_max)) / temp_change_per_mb); + int cyclesCool = tanks[0].getFill(); + int cyclesHot = tanks[1].getMaxFill() - tanks[1].getFill(); + int cycles = BobMathUtil.min(cyclesTemp, cyclesCool, cyclesHot); + + tanks[0].setFill(tanks[0].getFill() - cycles); + tanks[1].setFill(tanks[1].getFill() + cycles); + this.temperature -= this.temp_change_per_mb * cycles; + } + + this.networkPackNT(50); + } + } + + public boolean isCool() { + return this.temperature <= this.temperature_target; + } + + public abstract DirPos[] getConPos(); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + tanks[0].serialize(buf); + tanks[1].serialize(buf); + buf.writeFloat(temperature); + buf.writeLong(power); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); + this.temperature = buf.readFloat(); + this.power = buf.readLong(); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + tanks[0].readFromNBT(nbt, "t0"); + tanks[1].readFromNBT(nbt, "t1"); + this.temperature = nbt.getFloat("temperature"); + this.power = nbt.getLong("power"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + tanks[0].writeToNBT(nbt, "t0"); + tanks[1].writeToNBT(nbt, "t1"); + nbt.setFloat("temperature", temperature); + nbt.setLong("power", power); + } + + @Override public long getPower() { return this.power; } + @Override public void setPower(long power) { this.power = power; } + + @Override public FluidTank[] getSendingTanks() { return new FluidTank[] {tanks[1]}; } + @Override public FluidTank[] getReceivingTanks() { return new FluidTank[] {tanks[0]}; } + @Override public FluidTank[] getAllTanks() { return tanks; } +} diff --git a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPABeamline.java b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPABeamline.java new file mode 100644 index 000000000..8a5041d66 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPABeamline.java @@ -0,0 +1,54 @@ +package com.hbm.tileentity.machine.albion; + +import com.hbm.tileentity.machine.albion.TileEntityPASource.Particle; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityPABeamline extends TileEntity implements IParticleUser { + + @Override + public boolean canParticleEnter(Particle particle, ForgeDirection dir, int x, int y, int z) { + ForgeDirection beamlineDir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10).getRotation(ForgeDirection.DOWN); + BlockPos input = new BlockPos(xCoord, yCoord, zCoord).offset(beamlineDir, -1); + return input.compare(x, y, z) && beamlineDir == dir; + } + + @Override + public void onEnter(Particle particle, ForgeDirection dir) { } + + @Override + public BlockPos getExitPos(Particle particle) { + ForgeDirection beamlineDir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10).getRotation(ForgeDirection.DOWN); + return new BlockPos(xCoord, yCoord, zCoord).offset(beamlineDir, 2); + } + + 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; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPADetector.java b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPADetector.java new file mode 100644 index 000000000..72da84fea --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPADetector.java @@ -0,0 +1,154 @@ +package com.hbm.tileentity.machine.albion; + +import com.hbm.inventory.container.ContainerPADetector; +import com.hbm.inventory.gui.GUIPADetector; +import com.hbm.inventory.recipes.ParticleAcceleratorRecipes; +import com.hbm.inventory.recipes.ParticleAcceleratorRecipes.ParticleAcceleratorRecipe; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.machine.albion.TileEntityPASource.PAState; +import com.hbm.tileentity.machine.albion.TileEntityPASource.Particle; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityPADetector extends TileEntityCooledBase implements IGUIProvider, IParticleUser { + + public static final long usage = 100_000; + + public TileEntityPADetector() { + super(5); + } + + @Override + public String getName() { + return "container.paDetector"; + } + + @Override + public DirPos[] getConPos() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + return new DirPos[] { + new DirPos(xCoord - rot.offsetX * 5, yCoord, zCoord - rot.offsetZ * 5, rot.getOpposite()), + new DirPos(xCoord - rot.offsetX * 5, yCoord + 1, zCoord - rot.offsetZ * 5, rot.getOpposite()), + new DirPos(xCoord - rot.offsetX * 5, yCoord - 1, zCoord - rot.offsetZ * 5, rot.getOpposite()), + new DirPos(xCoord - rot.offsetX * 5 + dir.offsetX, yCoord, zCoord - rot.offsetZ * 5 + dir.offsetZ, rot.getOpposite()), + new DirPos(xCoord - rot.offsetX * 5 - dir.offsetX, yCoord, zCoord - rot.offsetZ * 5 - dir.offsetZ, rot.getOpposite()), + }; + } + + @Override + public long getMaxPower() { + return 1_000_000; + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 4, + yCoord - 2, + zCoord - 4, + xCoord + 5, + yCoord + 3, + zCoord + 5 + ); + } + + 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 ContainerPADetector(player.inventory, this); + } + + @Override + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIPADetector(player.inventory, this); + } + + @Override + public boolean canParticleEnter(Particle particle, ForgeDirection dir, int x, int y, int z) { + ForgeDirection detectorDir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10).getRotation(ForgeDirection.DOWN); + BlockPos input = new BlockPos(xCoord, yCoord, zCoord).offset(detectorDir, -4); + return input.compare(x, y, z) && detectorDir == dir; + } + + @Override + public void onEnter(Particle particle, ForgeDirection dir) { + particle.invalid = true; + //particle will crash if not perfectly focused + if(particle.defocus > 0) { particle.crash(PAState.CRASH_DEFOCUS); return; } + if(this.power < this.usage) { particle.crash(PAState.CRASH_NOPOWER); return; } + if(!isCool()) { particle.crash(PAState.CRASH_NOCOOL); return; } + + for(ParticleAcceleratorRecipe recipe : ParticleAcceleratorRecipes.recipes) { + + if(particle.momentum >= recipe.momentum && + ((recipe.input1.matchesRecipe(particle.input1, true) && recipe.input2.matchesRecipe(particle.input2, true)) || + (recipe.input1.matchesRecipe(particle.input2, true) && recipe.input2.matchesRecipe(particle.input1, true)))) { + if(canAccept(recipe)) { + if(recipe.output1.getItem().hasContainerItem(recipe.output1)) this.decrStackSize(1, 1); + if(recipe.output2.getItem().hasContainerItem(recipe.output2)) this.decrStackSize(2, 1); + + if(slots[3] == null) { + slots[3] = recipe.output1.copy(); + } else { + slots[3].stackSize += recipe.output1.stackSize; + } + + if(slots[4] == null) { + slots[4] = recipe.output2.copy(); + } else { + slots[4].stackSize += recipe.output2.stackSize; + } + } + particle.crash(PAState.SUCCESS); + return; + } + } + } + + public boolean canAccept(ParticleAcceleratorRecipe recipe) { + return checkSlot(recipe.output1, 1, 3) && checkSlot(recipe.output2, 2, 4); + } + + public boolean checkSlot(ItemStack output, int containerSlot, int outputSlot) { + if(output != null) { + if(slots[outputSlot] != null) { + //cancel if: output item does not match, meta does not match, resulting stacksize exceeds stack limit + if(slots[outputSlot].getItem() != output.getItem() || slots[outputSlot].getItemDamage() != output.getItemDamage() || slots[outputSlot].stackSize + output.stackSize > output.getMaxStackSize()) return false; + } + if(output.getItem().hasContainerItem(output)) { + ItemStack container = output.getItem().getContainerItem(output); + //cancel if: container slot is empty, container item does not match, meta does not match + if(slots[containerSlot] == null || slots[containerSlot].getItem() != container.getItem() || slots[containerSlot].getItemDamage() != container.getItemDamage()) return false; + } + } + + return true; + } + + @Override + public BlockPos getExitPos(Particle particle) { + return null; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPADipole.java b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPADipole.java new file mode 100644 index 000000000..147f9bf41 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPADipole.java @@ -0,0 +1,228 @@ +package com.hbm.tileentity.machine.albion; + +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.container.ContainerPADipole; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.gui.GUIPADipole; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemPACoil.EnumCoilType; +import com.hbm.lib.Library; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.machine.albion.TileEntityPASource.PAState; +import com.hbm.tileentity.machine.albion.TileEntityPASource.Particle; +import com.hbm.util.EnumUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityPADipole extends TileEntityCooledBase implements IGUIProvider, IControlReceiver, IParticleUser { + + public int dirLower; + public int dirUpper; + public int dirRedstone; + public int threshold; + + public static final long usage = 100_000; + + public TileEntityPADipole() { + super(2); + } + + @Override + public long getMaxPower() { + return 1_000_000; + } + + @Override + public boolean canConnect(ForgeDirection dir) { + return dir == ForgeDirection.UP || dir == ForgeDirection.DOWN; + } + + @Override + public boolean canConnect(FluidType type, ForgeDirection dir) { + return dir == ForgeDirection.UP || dir == ForgeDirection.DOWN; + } + + @Override + public String getName() { + return "container.paDipole"; + } + + @Override + public boolean canParticleEnter(Particle particle, ForgeDirection dir, int x, int y, int z) { + return this.yCoord == y && (this.xCoord == x || this.zCoord == z); + } + + @Override + public void onEnter(Particle particle, ForgeDirection dir) { + EnumCoilType type = null; + + int mult = 1; + if(slots[1] != null && slots[1].getItem() == ModItems.pa_coil) { + type = EnumUtil.grabEnumSafely(EnumCoilType.class, slots[1].getItemDamage()); + mult = type.diMin > particle.momentum ? 5 : 1; + } + + if(!isCool()) particle.crash(PAState.CRASH_NOCOOL); + if(this.power < this.usage * mult) particle.crash(PAState.CRASH_NOPOWER); + if(type == null) particle.crash(PAState.CRASH_NOCOIL); + if(type != null && type.diMax < particle.momentum) particle.crash(PAState.CRASH_OVERSPEED); + + if(particle.invalid) return; + + particle.momentum *= type.diMult; + this.power -= this.usage * mult; + } + + @Override + public BlockPos getExitPos(Particle particle) { + if(particle.momentum >= this.threshold) { + ForgeDirection dir = this.ditToForgeDir(checkRedstone() ? dirRedstone : dirUpper); + particle.dir = dir; + return new BlockPos(xCoord, yCoord, zCoord).offset(dir, 2); + } + ForgeDirection dir = this.ditToForgeDir(dirLower); + particle.dir = dir; + return new BlockPos(xCoord, yCoord, zCoord).offset(dir, 2); + } + + public boolean checkRedstone() { + for(DirPos pos : getConPos()) { + if(worldObj.isBlockIndirectlyGettingPowered(pos.getX(), pos.getY(), pos.getZ())) return true; + } + return false; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + this.power = Library.chargeTEFromItems(slots, 0, power, this.getMaxPower()); + } + + super.updateEntity(); + } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(dirLower); + buf.writeInt(dirUpper); + buf.writeInt(dirRedstone); + buf.writeInt(threshold); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + dirLower = buf.readInt(); + dirUpper = buf.readInt(); + dirRedstone = buf.readInt(); + threshold = buf.readInt(); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + dirLower = nbt.getInteger("dirLower"); + dirUpper = nbt.getInteger("dirUpper"); + dirRedstone = nbt.getInteger("dirRedstone"); + threshold = nbt.getInteger("threshold"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setInteger("dirLower", dirLower); + nbt.setInteger("dirUpper", dirUpper); + nbt.setInteger("dirRedstone", dirRedstone); + nbt.setInteger("threshold", threshold); + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord - 1, + zCoord - 1, + xCoord + 2, + yCoord + 2, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public DirPos[] getConPos() { + return new DirPos[] { + new DirPos(xCoord + 1, yCoord + 2, zCoord, Library.POS_Y), + new DirPos(xCoord - 1, yCoord + 2, zCoord, Library.POS_Y), + new DirPos(xCoord, yCoord + 2, zCoord + 1, Library.POS_Y), + new DirPos(xCoord, yCoord + 2, zCoord - 1, Library.POS_Y), + new DirPos(xCoord + 1, yCoord - 2, zCoord, Library.NEG_Y), + new DirPos(xCoord - 1, yCoord - 2, zCoord, Library.NEG_Y), + new DirPos(xCoord, yCoord - 2, zCoord + 1, Library.NEG_Y), + new DirPos(xCoord, yCoord - 2, zCoord - 1, Library.NEG_Y) + }; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerPADipole(player.inventory, this); + } + + @Override + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIPADipole(player.inventory, this); + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + + @Override + public void receiveControl(NBTTagCompound data) { + if(data.hasKey("lower")) this.dirLower++; + if(data.hasKey("upper")) this.dirUpper++; + if(data.hasKey("redstone")) this.dirRedstone++; + if(data.hasKey("threshold")) this.threshold = data.getInteger("threshold"); + + if(this.dirLower > 3) this.dirLower -= 4; + if(this.dirUpper > 3) this.dirUpper -= 4; + if(this.dirRedstone > 3) this.dirRedstone -= 4; + + this.threshold = MathHelper.clamp_int(threshold, 0, 999_999_999); + } + + public static ForgeDirection ditToForgeDir(int dir) { + if(dir == 1) return ForgeDirection.EAST; + if(dir == 2) return ForgeDirection.SOUTH; + if(dir == 3) return ForgeDirection.WEST; + return ForgeDirection.NORTH; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPAQuadrupole.java b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPAQuadrupole.java new file mode 100644 index 000000000..0a666cfd1 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPAQuadrupole.java @@ -0,0 +1,131 @@ +package com.hbm.tileentity.machine.albion; + +import com.hbm.inventory.container.ContainerPAQuadrupole; +import com.hbm.inventory.gui.GUIPAQuadrupole; +import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemPACoil.EnumCoilType; +import com.hbm.lib.Library; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.machine.albion.TileEntityPASource.PAState; +import com.hbm.tileentity.machine.albion.TileEntityPASource.Particle; +import com.hbm.util.EnumUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityPAQuadrupole extends TileEntityCooledBase implements IGUIProvider, IParticleUser { + + public static final long usage = 100_000; + public static final int focusGain = 100; + + public TileEntityPAQuadrupole() { + super(2); + } + + @Override + public long getMaxPower() { + return 1_000_000; + } + + @Override + public String getName() { + return "container.paQuadrupole"; + } + + @Override + public boolean canParticleEnter(Particle particle, ForgeDirection dir, int x, int y, int z) { + ForgeDirection beamlineDir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10).getRotation(ForgeDirection.DOWN); + BlockPos input = new BlockPos(xCoord, yCoord, zCoord).offset(beamlineDir, -1); + return input.compare(x, y, z) && beamlineDir == dir; + } + + @Override + public void onEnter(Particle particle, ForgeDirection dir) { + EnumCoilType type = null; + + int mult = 1; + if(slots[1] != null && slots[1].getItem() == ModItems.pa_coil) { + type = EnumUtil.grabEnumSafely(EnumCoilType.class, slots[1].getItemDamage()); + mult = type.quadMin > particle.momentum ? 5 : 1; + } + + if(!isCool()) particle.crash(PAState.CRASH_NOCOOL); + if(this.power < this.usage * mult) particle.crash(PAState.CRASH_NOPOWER); + if(type == null) particle.crash(PAState.CRASH_NOCOIL); + if(type != null && type.quadMax < particle.momentum) particle.crash(PAState.CRASH_OVERSPEED); + + if(particle.invalid) return; + + particle.focus(focusGain); + this.power -= this.usage * mult; + } + + @Override + public BlockPos getExitPos(Particle particle) { + ForgeDirection beamlineDir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10).getRotation(ForgeDirection.DOWN); + return new BlockPos(xCoord, yCoord, zCoord).offset(beamlineDir, 2); + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + this.power = Library.chargeTEFromItems(slots, 0, power, this.getMaxPower()); + } + + super.updateEntity(); + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord - 1, + zCoord - 1, + xCoord + 2, + yCoord + 2, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public DirPos[] getConPos() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + return new DirPos[] { + new DirPos(xCoord, yCoord + 2, zCoord, Library.POS_Y), + new DirPos(xCoord, yCoord - 2, zCoord, Library.NEG_Y), + new DirPos(xCoord + dir.offsetX * 2, yCoord, zCoord + dir.offsetZ * 2, dir), + new DirPos(xCoord - dir.offsetX * 2, yCoord, zCoord - dir.offsetZ * 2, dir.getOpposite()) + }; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerPAQuadrupole(player.inventory, this); + } + + @Override + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIPAQuadrupole(player.inventory, this); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPARFC.java b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPARFC.java new file mode 100644 index 000000000..14172d8a6 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPARFC.java @@ -0,0 +1,123 @@ +package com.hbm.tileentity.machine.albion; + +import com.hbm.inventory.container.ContainerPARFC; +import com.hbm.inventory.gui.GUIPARFC; +import com.hbm.lib.Library; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.machine.albion.TileEntityPASource.PAState; +import com.hbm.tileentity.machine.albion.TileEntityPASource.Particle; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityPARFC extends TileEntityCooledBase implements IGUIProvider, IParticleUser { + + public static final long usage = 100_000; + public static final int momentumGain = 100; + public static final int defocusGain = 100; + + public TileEntityPARFC() { + super(1); + } + + @Override + public long getMaxPower() { + return 1_000_000; + } + + @Override + public String getName() { + return "container.paRFC"; + } + + @Override + public boolean canParticleEnter(Particle particle, ForgeDirection dir, int x, int y, int z) { + ForgeDirection rfcDir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10).getRotation(ForgeDirection.DOWN); + BlockPos input = new BlockPos(xCoord, yCoord, zCoord).offset(rfcDir, -4); + return input.compare(x, y, z) && rfcDir == dir; + } + + @Override + public void onEnter(Particle particle, ForgeDirection dir) { + + if(!isCool()) particle.crash(PAState.CRASH_NOCOOL); + if(this.power < this.usage) particle.crash(PAState.CRASH_NOPOWER); + + if(particle.invalid) return; + + particle.momentum += this.momentumGain; + particle.defocus(defocusGain); + this.power -= this.usage; + } + + @Override + public BlockPos getExitPos(Particle particle) { + ForgeDirection beamlineDir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10).getRotation(ForgeDirection.DOWN); + return new BlockPos(xCoord, yCoord, zCoord).offset(beamlineDir, 5); + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + this.power = Library.chargeTEFromItems(slots, 0, power, this.getMaxPower()); + } + + super.updateEntity(); + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 4, + yCoord - 1, + zCoord - 4, + xCoord + 5, + yCoord + 2, + zCoord + 5 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public DirPos[] getConPos() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10).getRotation(ForgeDirection.UP); + return new DirPos[] { + new DirPos(xCoord + dir.offsetX * 3, yCoord + 2, zCoord + dir.offsetZ * 3, Library.POS_Y), + new DirPos(xCoord - dir.offsetX * 3, yCoord + 2, zCoord - dir.offsetZ * 3, Library.POS_Y), + new DirPos(xCoord, yCoord + 2, zCoord, Library.POS_Y), + new DirPos(xCoord + dir.offsetX * 3, yCoord - 2, zCoord + dir.offsetZ * 3, Library.NEG_Y), + new DirPos(xCoord - dir.offsetX * 3, yCoord - 2, zCoord - dir.offsetZ * 3, Library.NEG_Y), + new DirPos(xCoord, yCoord - 2, zCoord, Library.NEG_Y) + }; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerPARFC(player.inventory, this); + } + + @Override + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIPARFC(player.inventory, this); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPASource.java b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPASource.java new file mode 100644 index 000000000..ec799e43a --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/albion/TileEntityPASource.java @@ -0,0 +1,283 @@ +package com.hbm.tileentity.machine.albion; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.container.ContainerPASource; +import com.hbm.inventory.gui.GUIPASource; +import com.hbm.lib.Library; +import com.hbm.tileentity.IConditionalInvAccess; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.util.EnumUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +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; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityPASource extends TileEntityCooledBase implements IGUIProvider, IConditionalInvAccess, IControlReceiver { + + public static final long usage = 100_000; + public Particle particle; + public PAState state = PAState.IDLE; + + public int lastSpeed; + + public int debugSpeed; + + public static enum PAState { + IDLE(0x8080ff), //no particle active + RUNNING(0xffff00), //running without further issue + SUCCESS(0x00ff00), //completed recipe + PAUSE_UNLOADED(0x808080), //particle suspended because it entered unloaded chunks + CRASH_DEFOCUS(0xff0000), //crash from excessive defocus + CRASH_DERAIL(0xff0000), //crash due to leaving the beamline + CRASH_CANNOT_ENTER(0xff0000), //crash due to hitting PA component from invalid side + CRASH_NOCOOL(0xff0000), //crash due to lack of cooling + CRASH_NOPOWER(0xff0000), //crash due to power outage + CRASH_NOCOIL(0xff0000), //crash due to no coil installed (QP, DP) + CRASH_OVERSPEED(0xff0000); //crash due to coil max speed exceeded (QP, DP) + + public int color; + + private PAState(int color) { + this.color = color; + } + } + + public void updateState(PAState state) { this.state = state; } + + public TileEntityPASource() { + super(5); + } + + @Override public String getName() { return "container.paSource"; } + @Override public int getInventoryStackLimit() { return 1; } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + this.power = Library.chargeTEFromItems(slots, 0, power, this.getMaxPower()); + + for(int i = 0; i < 10; i++) { + if(particle != null) { + this.state = PAState.RUNNING; + steppy(); + this.debugSpeed = particle.momentum; + if(particle.invalid) this.particle = null; + } else if(this.power >= this.usage && slots[1] != null && slots[2] != null) { + tryRun(); + break; + } + } + } + + super.updateEntity(); + } + + public void steppy() { + if(!worldObj.getChunkProvider().chunkExists(particle.x >> 4, particle.z >> 4)) { this.state = PAState.PAUSE_UNLOADED; return; } //halt if we reach unloaded areas + //ExplosionSmallCreator.composeEffect(worldObj, particle.x + 0.5, particle.y + 0.5, particle.z + 0.5, 10, 1, 1); + + Block b = worldObj.getBlock(particle.x, particle.y, particle.z); + if(b instanceof BlockDummyable) { + int[] pos = ((BlockDummyable) b).findCore(worldObj, particle.x, particle.y, particle.z); + if(pos == null) { particle.crash(PAState.CRASH_DERAIL); return; } + TileEntity tile = worldObj.getTileEntity(pos[0], pos[1], pos[2]); + if(!(tile instanceof IParticleUser)) { particle.crash(PAState.CRASH_DERAIL); return; } + IParticleUser pa = (IParticleUser) tile; + if(pa.canParticleEnter(particle, particle.dir, particle.x, particle.y, particle.z)) { + pa.onEnter(particle, particle.dir); + BlockPos exit = pa.getExitPos(particle); + if(exit != null) particle.move(exit); + } else { particle.crash(PAState.CRASH_CANNOT_ENTER); return; } + } else { + particle.crash(PAState.CRASH_DERAIL); + } + } + + public void tryRun() { + if(slots[1].getItem().hasContainerItem(slots[1]) && slots[3] != null) return; + if(slots[2].getItem().hasContainerItem(slots[2]) && slots[4] != null) return; + + if(slots[1].getItem().hasContainerItem(slots[1])) slots[3] = slots[1].getItem().getContainerItem(slots[1]).copy(); + if(slots[2].getItem().hasContainerItem(slots[2])) slots[4] = slots[2].getItem().getContainerItem(slots[2]).copy(); + + this.power -= usage; + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); + this.particle = new Particle(this, xCoord + rot.offsetX * 5, yCoord, zCoord + rot.offsetZ * 5, rot, slots[1], slots[2]); + this.slots[1] = null; + this.slots[2] = null; + this.markDirty(); + } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeInt(debugSpeed); + buf.writeByte((byte) this.state.ordinal()); + buf.writeInt(particle != null ? particle.momentum : 0); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + debugSpeed = buf.readInt(); + state = EnumUtil.grabEnumSafely(PAState.class, buf.readByte()); + int lastSpeed = buf.readInt(); + if(lastSpeed != 0) { + this.lastSpeed = lastSpeed; + } + } + + @Override + public DirPos[] getConPos() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + return new DirPos[] { + new DirPos(xCoord + dir.offsetX * 2, yCoord, zCoord + dir.offsetZ * 2, dir), + new DirPos(xCoord + dir.offsetX * 2 + rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * 2, dir), + new DirPos(xCoord + dir.offsetX * 2 - rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 2 - rot.offsetZ * 2, dir), + new DirPos(xCoord - dir.offsetX * 2, yCoord, zCoord - dir.offsetZ * 2, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2 + rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ * 2, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ * 2, dir.getOpposite()), + new DirPos(xCoord + rot.offsetX * 5, yCoord, zCoord + rot.offsetZ * 5, rot), + }; + } + + //ISidedInventory + @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { return slot == 1 || slot == 2; } + @Override public boolean canExtractItem(int slot, ItemStack stack, int side) { return slot == 3 || slot == 4; } + @Override public int[] getAccessibleSlotsFromSide(int side) { return new int[] { 3, 4 }; } + + //IConditionalInvAccess + @Override public boolean isItemValidForSlot(int x, int y, int z, int slot, ItemStack stack) { return isItemValidForSlot(slot, stack); } + @Override public boolean canExtractItem(int x, int y, int z, int slot, ItemStack stack, int side) { return canExtractItem(slot, stack, side); } + + //reusing the same fucking instance because doing anything else would be retarded + public static final BlockPos cheapAss = new BlockPos(0, 0, 0); + public static final int[] slotsRed = new int[] {1}; + public static final int[] slotsYellow = new int[] {2}; + @Override + public int[] getAccessibleSlotsFromSide(int x, int y, int z, int side) { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + cheapAss.mutate(x, y, z); + + if(cheapAss.compare(xCoord + dir.offsetX - rot.offsetX * 2, yCoord, zCoord + dir.offsetZ - rot.offsetZ * 2) || + cheapAss.compare(xCoord - dir.offsetX + rot.offsetX * 2, yCoord, zCoord - dir.offsetZ + rot.offsetZ * 2)) { + return slotsYellow; + } + + if(cheapAss.compare(xCoord - dir.offsetX - rot.offsetX * 2, yCoord, zCoord - dir.offsetZ - rot.offsetZ * 2) || + cheapAss.compare(xCoord + dir.offsetX + rot.offsetX * 2, yCoord, zCoord + dir.offsetZ + rot.offsetZ * 2)) { + return slotsRed; + } + + return getAccessibleSlotsFromSide(side); + } + + @Override + public long getMaxPower() { + return 10_000_000; + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 4, + yCoord - 1, + zCoord - 4, + xCoord + 5, + yCoord + 2, + zCoord + 6 + ); + } + + 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 ContainerPASource(player.inventory, this); } + @Override public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIPASource(player.inventory, this); } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + + @Override + public void receiveControl(NBTTagCompound data) { + if(data.hasKey("cancel")) { + this.particle = null; + this.state = PAState.IDLE; + } + } + + public static class Particle { + + private TileEntityPASource source; + public int x; + public int y; + public int z; + public ForgeDirection dir; + public int momentum; + public int defocus; + public static final int maxDefocus = 100; + public boolean invalid = false; + + public ItemStack input1; + public ItemStack input2; + + public Particle(TileEntityPASource source, int x, int y, int z, ForgeDirection dir, ItemStack input1, ItemStack input2) { + this.source = source; + this.x = x; + this.y = y; + this.z = z; + this.dir = dir; + this.input1 = input1; + this.input2 = input2; + } + + public void crash(PAState state) { + this.invalid = true; + this.source.updateState(state); + } + + public void move(BlockPos pos) { + this.x = pos.getX(); + this.y = pos.getY(); + this.z = pos.getZ(); + } + + public void defocus(int amount) { + this.defocus += amount; + if(this.defocus > this.maxDefocus) this.crash(PAState.CRASH_DEFOCUS); + } + + public void focus(int amount) { + this.defocus -= amount; + if(this.defocus < 0) this.defocus = 0; + } + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java index 37f9f4fb0..d4e2c6705 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java @@ -5,7 +5,8 @@ import com.hbm.inventory.FluidStack; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.recipes.CrackingRecipes; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.IBufPacketReceiver; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.DirPos; @@ -13,14 +14,15 @@ import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCatalyticCracker extends TileEntityLoadedBase implements INBTPacketReceiver, IFluidStandardTransceiver { - +public class TileEntityMachineCatalyticCracker extends TileEntityLoadedBase implements IBufPacketReceiver, IFluidStandardTransceiver, IFluidCopiable { + public FluidTank[] tanks; - + public TileEntityMachineCatalyticCracker() { tanks = new FluidTank[5]; tanks[0] = new FluidTank(Fluids.BITUMEN, 4000); @@ -29,10 +31,10 @@ public class TileEntityMachineCatalyticCracker extends TileEntityLoadedBase impl tanks[3] = new FluidTank(Fluids.PETROLEUM, 4000); tanks[4] = new FluidTank(Fluids.SPENTSTEAM, 800); } - + @Override public void updateEntity() { - + if(!worldObj.isRemote) { this.worldObj.theProfiler.startSection("catalyticCracker_setup_tanks"); @@ -46,47 +48,48 @@ public class TileEntityMachineCatalyticCracker extends TileEntityLoadedBase impl this.worldObj.theProfiler.endStartSection("catalyticCracker_send_fluid"); if(worldObj.getTotalWorldTime() % 10 == 0) { - + for(DirPos pos : getConPos()) { for(int i = 2; i <= 4; i++) { if(tanks[i].getFill() > 0) this.sendFluid(tanks[i], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - - NBTTagCompound data = new NBTTagCompound(); - for(int i = 0; i < 5; i++) - tanks[i].writeToNBT(data, "tank" + i); - - INBTPacketReceiver.networkPack(this, data, 50); } this.worldObj.theProfiler.endSection(); + networkPackNT(25); } } @Override - public void networkUnpack(NBTTagCompound nbt) { - for(int i = 0; i < 5; i++) - tanks[i].readFromNBT(nbt, "tank" + i); + public void serialize(ByteBuf buf) { + for(FluidTank tank : tanks) + tank.serialize(buf); } - + + @Override + public void deserialize(ByteBuf buf) { + for(FluidTank tank : tanks) + tank.deserialize(buf); + } + private void updateConnections() { - + for(DirPos pos : getConPos()) { this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - + private void crack() { - + Pair quart = CrackingRecipes.getCracking(tanks[0].getTankType()); - + if(quart != null) { - + int left = quart.getKey().fill; int right = quart.getValue().fill; - + for(int i = 0; i < 2; i++) { if(tanks[0].getFill() >= 100 && tanks[1].getFill() >= 200 && hasSpace(left, right)) { tanks[0].setFill(tanks[0].getFill() - 100); @@ -98,29 +101,27 @@ public class TileEntityMachineCatalyticCracker extends TileEntityLoadedBase impl } } } - + private boolean hasSpace(int left, int right) { return tanks[2].getFill() + left <= tanks[2].getMaxFill() && tanks[3].getFill() + right <= tanks[3].getMaxFill() && tanks[4].getFill() + 2 <= tanks[4].getMaxFill(); } - + private void setupTanks() { - + Pair quart = CrackingRecipes.getCracking(tanks[0].getTankType()); - + if(quart != null) { tanks[1].setTankType(Fluids.STEAM); tanks[2].setTankType(quart.getKey().type); tanks[3].setTankType(quart.getValue().type); tanks[4].setTankType(Fluids.SPENTSTEAM); } else { - tanks[0].setTankType(Fluids.NONE); - tanks[1].setTankType(Fluids.NONE); tanks[2].setTankType(Fluids.NONE); tanks[3].setTankType(Fluids.NONE); tanks[4].setTankType(Fluids.NONE); } } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -128,7 +129,7 @@ public class TileEntityMachineCatalyticCracker extends TileEntityLoadedBase impl for(int i = 0; i < 5; i++) tanks[i].readFromNBT(nbt, "tank" + i); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -136,12 +137,12 @@ public class TileEntityMachineCatalyticCracker extends TileEntityLoadedBase impl for(int i = 0; i < 5; i++) tanks[i].writeToNBT(nbt, "tank" + i); } - + protected DirPos[] getConPos() { - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - + return new DirPos[] { new DirPos(xCoord + dir.offsetX * 4 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 4 + rot.offsetZ * 1, dir), new DirPos(xCoord + dir.offsetX * 4 - rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 4 - rot.offsetZ * 2, dir), @@ -153,12 +154,12 @@ public class TileEntityMachineCatalyticCracker extends TileEntityLoadedBase impl new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX * 4, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ * 4, rot.getOpposite()) }; } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 3, @@ -169,10 +170,10 @@ public class TileEntityMachineCatalyticCracker extends TileEntityLoadedBase impl zCoord + 4 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -193,4 +194,9 @@ public class TileEntityMachineCatalyticCracker extends TileEntityLoadedBase impl public FluidTank[] getAllTanks() { return tanks; } + + @Override + public FluidTank getTankToPaste() { + return tanks[0]; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java index 3ef9daf56..abca3a2ea 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java @@ -10,6 +10,7 @@ import com.hbm.inventory.gui.GUIMachineCatalyticReformer; import com.hbm.inventory.recipes.ReformingRecipes; import com.hbm.items.ModItems; import com.hbm.lib.Library; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityMachineBase; @@ -20,7 +21,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; @@ -28,7 +29,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCatalyticReformer extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider { +public class TileEntityMachineCatalyticReformer extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider, IFluidCopiable { public long power; public static final long maxPower = 1_000_000; @@ -73,20 +74,23 @@ public class TileEntityMachineCatalyticReformer extends TileEntityMachineBase im } } } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - for(int i = 0; i < 4; i++) tanks[i].writeToNBT(data, "" + i); - this.networkPack(data, 150); + + this.networkPackNT(150); } } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - for(int i = 0; i < 4; i++) tanks[i].readFromNBT(nbt, "" + i); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + for(int i = 0; i < 4; i++) tanks[i].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + for(int i = 0; i < 4; i++) tanks[i].deserialize(buf); } private void reform() { @@ -248,7 +252,7 @@ public class TileEntityMachineCatalyticReformer extends TileEntityMachineBase im @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineCatalyticReformer(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java index cf90645d5..3d1d6d2b9 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java @@ -10,6 +10,7 @@ import com.hbm.inventory.gui.GUIMachineCoker; import com.hbm.inventory.recipes.CokerRecipes; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.Tuple.Triplet; @@ -19,7 +20,7 @@ import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -28,7 +29,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; -public class TileEntityMachineCoker extends TileEntityMachineBase implements IFluidStandardTransceiver, IGUIProvider { +public class TileEntityMachineCoker extends TileEntityMachineBase implements IFluidStandardTransceiver, IGUIProvider, IFluidCopiable { public boolean wasOn; public int progress; @@ -101,20 +102,14 @@ public class TileEntityMachineCoker extends TileEntityMachineBase implements IFl } } - if(wasOn && worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 20); + if(wasOn && worldObj.getTotalWorldTime() % 5 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 5); } for(DirPos pos : getConPos()) { if(this.tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("wasOn", this.wasOn); - data.setInteger("heat", this.heat); - data.setInteger("progress", this.progress); - tanks[0].writeToNBT(data, "t0"); - tanks[1].writeToNBT(data, "t1"); - this.networkPack(data, 25); + + this.networkPackNT(25); } else { if(this.wasOn) { @@ -135,7 +130,9 @@ public class TileEntityMachineCoker extends TileEntityMachineBase implements IFl } } } - + + + public DirPos[] getConPos() { return new DirPos[] { @@ -172,16 +169,25 @@ public class TileEntityMachineCoker extends TileEntityMachineBase implements IFl return true; } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.wasOn = nbt.getBoolean("wasOn"); - this.heat = nbt.getInteger("heat"); - this.progress = nbt.getInteger("progress"); - tanks[0].readFromNBT(nbt, "t0"); - tanks[1].readFromNBT(nbt, "t1"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(this.wasOn); + buf.writeInt(this.heat); + buf.writeInt(this.progress); + tanks[0].serialize(buf); + tanks[1].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.wasOn = buf.readBoolean(); + this.heat = buf.readInt(); + this.progress = buf.readInt(); + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); } protected void tryPullHeat() { @@ -286,7 +292,7 @@ public class TileEntityMachineCoker extends TileEntityMachineBase implements IFl @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineCoker(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFrackingTower.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFrackingTower.java index 3ad671ca9..3f1d1b7e8 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFrackingTower.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFrackingTower.java @@ -22,7 +22,6 @@ import com.hbm.world.feature.OilSpot; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.util.EnumChatFormatting; @@ -209,7 +208,7 @@ public class TileEntityMachineFrackingTower extends TileEntityOilDrillBase { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineOilWell(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java index 9052dd9fc..d186eb1e3 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java @@ -5,15 +5,13 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.recipes.FractionRecipes; import com.hbm.lib.Library; -import com.hbm.packet.BufPacket; -import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IBufPacketReceiver; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.fluid.IFluidStandardTransceiver; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; @@ -21,37 +19,37 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -public class TileEntityMachineFractionTower extends TileEntityLoadedBase implements IBufPacketReceiver, IFluidStandardTransceiver { - +public class TileEntityMachineFractionTower extends TileEntityLoadedBase implements IBufPacketReceiver, IFluidStandardTransceiver, IFluidCopiable { + public FluidTank[] tanks; - + public TileEntityMachineFractionTower() { tanks = new FluidTank[3]; tanks[0] = new FluidTank(Fluids.HEAVYOIL, 4000); tanks[1] = new FluidTank(Fluids.BITUMEN, 4000); tanks[2] = new FluidTank(Fluids.SMEAR, 4000); } - + @Override public void updateEntity() { if(!worldObj.isRemote) { - + TileEntity stack = worldObj.getTileEntity(xCoord, yCoord + 3, zCoord); - + if(stack instanceof TileEntityMachineFractionTower) { TileEntityMachineFractionTower frac = (TileEntityMachineFractionTower) stack; - + //make types equal for(int i = 0; i < 3; i++) { frac.tanks[i].setTankType(tanks[i].getTankType()); } - + //calculate transfer int oil = Math.min(tanks[0].getFill(), frac.tanks[0].getMaxFill() - frac.tanks[0].getFill()); int left = Math.min(frac.tanks[1].getFill(), tanks[1].getMaxFill() - tanks[1].getFill()); int right = Math.min(frac.tanks[2].getFill(), tanks[2].getMaxFill() - tanks[2].getFill()); - + //move oil up, pull fractions down tanks[0].setFill(tanks[0].getFill() - oil); tanks[1].setFill(tanks[1].getFill() + left); @@ -60,16 +58,16 @@ public class TileEntityMachineFractionTower extends TileEntityLoadedBase impleme frac.tanks[1].setFill(frac.tanks[1].getFill() - left); frac.tanks[2].setFill(frac.tanks[2].getFill() - right); } - + setupTanks(); this.updateConnections(); - + if(worldObj.getTotalWorldTime() % 10 == 0) fractionate(); - + this.sendFluid(); - PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); + networkPackNT(50); } } @@ -84,22 +82,22 @@ public class TileEntityMachineFractionTower extends TileEntityLoadedBase impleme for(int i = 0; i < 3; i++) tanks[i].deserialize(buf); } - + private void updateConnections() { - + for(DirPos pos : getConPos()) { this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - + private void sendFluid() { - + for(DirPos pos : getConPos()) { this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - + private DirPos[] getConPos() { return new DirPos[] { new DirPos(xCoord + 2, yCoord, zCoord, Library.POS_X), @@ -108,11 +106,11 @@ public class TileEntityMachineFractionTower extends TileEntityLoadedBase impleme new DirPos(xCoord, yCoord, zCoord - 2, Library.NEG_Z) }; } - + private void setupTanks() { - + Pair quart = FractionRecipes.getFractions(tanks[0].getTankType()); - + if(quart != null) { tanks[1].setTankType(quart.getKey().type); tanks[2].setTankType(quart.getValue().type); @@ -122,16 +120,16 @@ public class TileEntityMachineFractionTower extends TileEntityLoadedBase impleme tanks[2].setTankType(Fluids.NONE); } } - + private void fractionate() { - + Pair quart = FractionRecipes.getFractions(tanks[0].getTankType()); - + if(quart != null) { - + int left = quart.getKey().fill; int right = quart.getValue().fill; - + if(tanks[0].getFill() >= 100 && hasSpace(left, right)) { tanks[0].setFill(tanks[0].getFill() - 100); tanks[1].setFill(tanks[1].getFill() + left); @@ -139,11 +137,11 @@ public class TileEntityMachineFractionTower extends TileEntityLoadedBase impleme } } } - + private boolean hasSpace(int left, int right) { return tanks[1].getFill() + left <= tanks[1].getMaxFill() && tanks[2].getFill() + right <= tanks[2].getMaxFill(); } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -151,7 +149,7 @@ public class TileEntityMachineFractionTower extends TileEntityLoadedBase impleme for(int i = 0; i < 3; i++) tanks[i].readFromNBT(nbt, "tank" + i); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -159,12 +157,12 @@ public class TileEntityMachineFractionTower extends TileEntityLoadedBase impleme for(int i = 0; i < 3; i++) tanks[i].writeToNBT(nbt, "tank" + i); } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 1, @@ -175,10 +173,10 @@ public class TileEntityMachineFractionTower extends TileEntityLoadedBase impleme zCoord + 2 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java index 1bfbfe835..49eba901b 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java @@ -1,10 +1,11 @@ package com.hbm.tileentity.machine.oil; +import java.util.HashMap; import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IControlReceiver; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.container.ContainerMachineGasFlare; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; @@ -17,6 +18,7 @@ import com.hbm.inventory.gui.GUIMachineGasFlare; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; @@ -30,7 +32,7 @@ import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -41,7 +43,7 @@ import net.minecraft.util.DamageSource; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; -public class TileEntityMachineGasFlare extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidStandardReceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC { +public class TileEntityMachineGasFlare extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidStandardReceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC, IFluidCopiable { public long power; public static final long maxPower = 100000; @@ -51,6 +53,8 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements protected int fluidUsed = 0; protected int output = 0; + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + public TileEntityMachineGasFlare() { super(6); tank = new FluidTank(Fluids.GAS, 64000); @@ -99,7 +103,7 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements public void updateEntity() { if(!worldObj.isRemote) { - + this.fluidUsed = 0; this.output = 0; @@ -110,63 +114,63 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements tank.setType(3, slots); tank.loadTank(1, 2, slots); - + int maxVent = 50; int maxBurn = 10; - + if(isOn && tank.getFill() > 0) { - - UpgradeManager.eval(slots, 4, 5); - int burn = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); - int yield = Math.min(UpgradeManager.getLevel(UpgradeType.EFFECT), 3); + + upgradeManager.checkSlots(this, slots, 4, 5); + int burn = upgradeManager.getLevel(UpgradeType.SPEED); + int yield = upgradeManager.getLevel(UpgradeType.EFFECT); maxVent += maxVent * burn; maxBurn += maxBurn * burn; - + if(!doesBurn || !(tank.getTankType().hasTrait(FT_Flammable.class))) { - + if(tank.getTankType().hasTrait(FT_Gaseous.class) || tank.getTankType().hasTrait(FT_Gaseous_ART.class)) { int eject = Math.min(maxVent, tank.getFill()); this.fluidUsed = eject; tank.setFill(tank.getFill() - eject); tank.getTankType().onFluidRelease(this, tank, eject); - + if(worldObj.getTotalWorldTime() % 7 == 0) this.worldObj.playSoundEffect(this.xCoord, this.yCoord + 11, this.zCoord, "random.fizz", getVolume(1.5F), 0.5F); - + if(worldObj.getTotalWorldTime() % 5 == 0 && eject > 0) { FT_Polluting.pollute(worldObj, xCoord, yCoord, zCoord, tank.getTankType(), FluidReleaseType.SPILL, eject * 5); } } } else { - + if(tank.getTankType().hasTrait(FT_Flammable.class)) { int eject = Math.min(maxBurn, tank.getFill()); this.fluidUsed = eject; tank.setFill(tank.getFill() - eject); - + int penalty = 5; if(!tank.getTankType().hasTrait(FT_Gaseous.class) && !tank.getTankType().hasTrait(FT_Gaseous_ART.class)) penalty = 10; - + long powerProd = tank.getTankType().getTrait(FT_Flammable.class).getHeatEnergy() * eject / 1_000; // divided by 1000 per mB powerProd /= penalty; powerProd += powerProd * yield / 3; - + this.output = (int) powerProd; power += powerProd; - + if(power > maxPower) power = maxPower; - + ParticleUtil.spawnGasFlame(worldObj, this.xCoord + 0.5F, this.yCoord + 11.75F, this.zCoord + 0.5F, worldObj.rand.nextGaussian() * 0.15, 0.2, worldObj.rand.nextGaussian() * 0.15); - + List list = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(xCoord - 1, yCoord + 12, zCoord - 2, xCoord + 2, yCoord + 17, zCoord + 2)); for(Entity e : list) { e.setFire(5); e.attackEntityFrom(DamageSource.onFire, 5F); } - + if(worldObj.getTotalWorldTime() % 3 == 0) this.worldObj.playSoundEffect(this.xCoord, this.yCoord + 11, this.zCoord, "hbm:weapon.flamethrowerShoot", getVolume(1.5F), 0.75F); @@ -178,20 +182,15 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements } power = Library.chargeItemsFromTE(slots, 0, power, maxPower); - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - data.setBoolean("isOn", isOn); - data.setBoolean("doesBurn", doesBurn); - tank.writeToNBT(data, "t"); - this.networkPack(data, 50); + + this.networkPackNT(50); } else { - + if(isOn && tank.getFill() > 0) { - + if((!doesBurn || !(tank.getTankType().hasTrait(FT_Flammable.class))) && (tank.getTankType().hasTrait(FT_Gaseous.class) || tank.getTankType().hasTrait(FT_Gaseous_ART.class))) { - + NBTTagCompound data = new NBTTagCompound(); data.setString("type", "tower"); data.setFloat("lift", 1F); @@ -203,13 +202,13 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements data.setDouble("posX", xCoord + 0.5); data.setDouble("posZ", zCoord + 0.5); data.setDouble("posY", yCoord + 11); - + MainRegistry.proxy.effectNT(data); - + } - + if(doesBurn && tank.getTankType().hasTrait(FT_Flammable.class) && MainRegistry.proxy.me().getDistanceSq(xCoord, yCoord + 10, zCoord) <= 1024) { - + NBTTagCompound data = new NBTTagCompound(); data.setString("type", "vanillaExt"); data.setString("mode", "smoke"); @@ -225,13 +224,13 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements data.setDouble("posZ", zCoord - 0.5); data.setDouble("posY", yCoord + 11.75); } - + MainRegistry.proxy.effectNT(data); } } } } - + public DirPos[] getConPos() { return new DirPos[] { new DirPos(xCoord + 2, yCoord, zCoord, Library.POS_X), @@ -240,15 +239,23 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements new DirPos(xCoord, yCoord, zCoord - 2, Library.NEG_Z) }; } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.isOn = nbt.getBoolean("isOn"); - this.doesBurn = nbt.getBoolean("doesBurn"); - tank.readFromNBT(nbt, "t"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + buf.writeBoolean(this.isOn); + buf.writeBoolean(this.doesBurn); + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.isOn = buf.readBoolean(); + this.doesBurn = buf.readBoolean(); + tank.deserialize(buf); } @Override @@ -294,7 +301,7 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineGasFlare(player.inventory, this); } @@ -315,10 +322,11 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 3; - if(type == UpgradeType.EFFECT) return 3; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 3); + upgrades.put(UpgradeType.EFFECT, 3); + return upgrades; } @Override @@ -327,4 +335,21 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements data.setDouble(CompatEnergyControl.D_CONSUMPTION_MB, this.fluidUsed); data.setDouble(CompatEnergyControl.D_OUTPUT_HE, this.output); } + + @Override + public NBTTagCompound getSettings(World world, int x, int y, int z) { + NBTTagCompound tag = new NBTTagCompound(); + tag.setIntArray("fluidID", new int[]{tank.getTankType().getID()}); + tag.setBoolean("isOn", isOn); + tag.setBoolean("doesBurn", doesBurn); + return tag; + } + + @Override + public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { + int id = nbt.getIntArray("fluidID")[index]; + tank.setTankType(Fluids.fromID(id)); + if(nbt.hasKey("isOn")) isOn = nbt.getBoolean("isOn"); + if(nbt.hasKey("doesBurn")) doesBurn = nbt.getBoolean("doesBurn"); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineHydrotreater.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineHydrotreater.java index 9bffbf38b..7b9424546 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineHydrotreater.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineHydrotreater.java @@ -9,6 +9,7 @@ import com.hbm.inventory.gui.GUIMachineHydrotreater; import com.hbm.inventory.recipes.HydrotreatingRecipes; import com.hbm.items.ModItems; import com.hbm.lib.Library; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityMachineBase; @@ -20,7 +21,6 @@ import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; @@ -28,7 +28,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineHydrotreater extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider { +public class TileEntityMachineHydrotreater extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider, IFluidCopiable { public long power; public static final long maxPower = 1_000_000; @@ -219,7 +219,12 @@ public class TileEntityMachineHydrotreater extends TileEntityMachineBase impleme @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineHydrotreater(player.inventory, this); } + + @Override + public FluidTank getTankToPaste() { + return tanks[0]; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java index a97f9574d..072acadcf 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java @@ -1,10 +1,11 @@ package com.hbm.tileentity.machine.oil; +import java.util.HashMap; import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.inventory.FluidStack; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.container.ContainerLiquefactor; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; @@ -12,6 +13,7 @@ import com.hbm.inventory.gui.GUILiquefactor; import com.hbm.inventory.recipes.LiquefactionRecipes; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; @@ -24,7 +26,7 @@ import api.hbm.fluid.IFluidStandardSender; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -33,7 +35,8 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; -public class TileEntityMachineLiquefactor extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardSender, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC { +public class TileEntityMachineLiquefactor extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardSender, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC, IFluidCopiable { + public long power; public static final long maxPower = 100000; @@ -42,9 +45,11 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen public int progress; public static final int processTimeBase = 100; public int processTime; - + public FluidTank tank; - + + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + public TileEntityMachineLiquefactor() { super(4); tank = new FluidTank(Fluids.NONE, 24_000); @@ -57,48 +62,42 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen @Override public void updateEntity() { - + if(!worldObj.isRemote) { this.power = Library.chargeTEFromItems(slots, 1, power, maxPower); - + this.updateConnections(); - UpgradeManager.eval(slots, 2, 3); - int speed = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); - int power = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); + upgradeManager.checkSlots(this, slots, 2, 3); + int speed = upgradeManager.getLevel(UpgradeType.SPEED); + int power = upgradeManager.getLevel(UpgradeType.POWER); this.processTime = processTimeBase - (processTimeBase / 4) * speed; this.usage = (usageBase + (usageBase * speed)) / (power + 1); - + if(this.canProcess()) this.process(); else this.progress = 0; - + this.sendFluid(); - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - data.setInteger("progress", this.progress); - data.setInteger("usage", this.usage); - data.setInteger("processTime", this.processTime); - tank.writeToNBT(data, "t"); - this.networkPack(data, 50); + + this.networkPackNT(50); } } - + private void updateConnections() { for(DirPos pos : getConPos()) { this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - + private void sendFluid() { for(DirPos pos : getConPos()) { this.sendFluid(tank, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - + private DirPos[] getConPos() { return new DirPos[] { new DirPos(xCoord, yCoord + 4, zCoord, Library.POS_Y), @@ -119,57 +118,66 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen public int[] getAccessibleSlotsFromSide(int side) { return new int[] { 0 }; } - + public boolean canProcess() { - + if(this.power < usage) return false; if(slots[0] == null) return false; - + FluidStack out = LiquefactionRecipes.getOutput(slots[0]); - + if(out == null) return false; if(out.type != tank.getTankType() && tank.getFill() > 0) return false; if(out.fill + tank.getFill() > tank.getMaxFill()) return false; - + return true; } - + public void process() { - + this.power -= usage; - + progress++; - + if(progress >= processTime) { - + FluidStack out = LiquefactionRecipes.getOutput(slots[0]); tank.setTankType(out.type); tank.setFill(tank.getFill() + out.fill); this.decrStackSize(0, 1); - + progress = 0; - + this.markDirty(); } } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.progress = nbt.getInteger("progress"); - this.usage = nbt.getInteger("usage"); - this.processTime = nbt.getInteger("processTime"); - tank.readFromNBT(nbt, "t"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + buf.writeInt(this.progress); + buf.writeInt(this.usage); + buf.writeInt(this.processTime); + tank.serialize(buf); } - + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.progress = buf.readInt(); + this.usage = buf.readInt(); + this.processTime = buf.readInt(); + tank.deserialize(buf); + } + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); tank.readFromNBT(nbt, "tank"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -192,10 +200,10 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen } AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 1, @@ -206,10 +214,10 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen zCoord + 2 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -233,7 +241,7 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUILiquefactor(player.inventory, this); } @@ -255,10 +263,11 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 3; - if(type == UpgradeType.POWER) return 3; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 3); + upgrades.put(UpgradeType.POWER, 3); + return upgrades; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineOilWell.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineOilWell.java index d86a6c40c..942a10788 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineOilWell.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineOilWell.java @@ -19,7 +19,6 @@ import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -166,7 +165,7 @@ public class TileEntityMachineOilWell extends TileEntityOilDrillBase { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineOilWell(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachinePumpjack.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachinePumpjack.java index 7d836a45f..1dfee2567 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachinePumpjack.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachinePumpjack.java @@ -18,12 +18,11 @@ import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; -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.EnumChatFormatting; import net.minecraft.world.World; @@ -110,19 +109,18 @@ public class TileEntityMachinePumpjack extends TileEntityOilDrillBase { } } } - - @Override - public void networkPack(NBTTagCompound nbt, int range) { - nbt.setFloat("speed", this.indicator == 0 ? (5F + (2F * this.speedLevel)) + (this.overLevel - 1F) * 10: 0F); - super.networkPack(nbt, range); - } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.speed = nbt.getFloat("speed"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeFloat(this.indicator == 0 ? (5F + (2F * this.speedLevel)) + (this.overLevel - 1F) * 10: 0F); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.speed = buf.readFloat(); } @Override @@ -205,7 +203,7 @@ public class TileEntityMachinePumpjack extends TileEntityOilDrillBase { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineOilWell(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachinePyroOven.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachinePyroOven.java new file mode 100644 index 000000000..146a4629b --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachinePyroOven.java @@ -0,0 +1,388 @@ +package com.hbm.tileentity.machine.oil; + +import java.util.HashMap; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; +import com.hbm.inventory.UpgradeManagerNT; +import com.hbm.inventory.container.ContainerPyroOven; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.gui.GUIPyroOven; +import com.hbm.inventory.recipes.PyroOvenRecipes; +import com.hbm.inventory.recipes.PyroOvenRecipes.PyroOvenRecipe; +import com.hbm.items.machine.ItemMachineUpgrade; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; +import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; +import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.IFluidCopiable; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.IUpgradeInfoProvider; +import com.hbm.tileentity.TileEntityMachinePolluting; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.energymk2.IEnergyReceiverMK2; +import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +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.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityMachinePyroOven extends TileEntityMachinePolluting implements IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IUpgradeInfoProvider, IFluidCopiable { + + public long power; + public static final long maxPower = 10_000_000; + public boolean isVenting; + public boolean isProgressing; + public float progress; + public static int consumption = 10_000; + + public int prevAnim; + public int anim = 0; + + public FluidTank[] tanks; + + private AudioWrapper audio; + + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + + public TileEntityMachinePyroOven() { + super(6, 50); + tanks = new FluidTank[2]; + tanks[0] = new FluidTank(Fluids.NONE, 24_000); + tanks[1] = new FluidTank(Fluids.NONE, 24_000); + } + + @Override + public void setInventorySlotContents(int i, ItemStack stack) { + super.setInventorySlotContents(i, stack); + + if(stack != null && stack.getItem() instanceof ItemMachineUpgrade && i >= 4 && i <= 5) { + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:item.upgradePlug", 1.0F, 1.0F); + } + } + + @Override + public String getName() { + return "container.machinePyroOven"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); + tanks[0].setType(3, slots); + + for(DirPos pos : getConPos()) { + this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[0].getTankType() != Fluids.NONE) this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); + if(smoke.getFill() > 0) this.sendFluid(smoke, worldObj, xCoord - rot.offsetX, yCoord + 3, zCoord - rot.offsetZ, Library.POS_Y); + + upgradeManager.checkSlots(this, slots, 4, 5); + int speed = upgradeManager.getLevel(UpgradeType.SPEED); + int powerSaving = upgradeManager.getLevel(UpgradeType.POWER); + int overdrive = upgradeManager.getLevel(UpgradeType.OVERDRIVE); + + this.isProgressing = false; + this.isVenting = false; + + if(this.canProcess()) { + PyroOvenRecipe recipe = getMatchingRecipe(); + this.progress += 1F / Math.max((recipe.duration - speed * (recipe.duration / 4)) / (overdrive * 2 + 1), 1); + this.isProgressing = true; + this.power -= this.getConsumption(speed + overdrive * 2, powerSaving); + + if(progress >= 1F) { + this.progress = 0F; + this.finishRecipe(recipe); + this.markDirty(); + } + + this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND); + + } else { + this.progress = 0F; + } + + this.networkPackNT(50); + } else { + + this.prevAnim = this.anim; + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); + + if(isProgressing) { + this.anim++; + + if(audio == null) { + audio = createAudioLoop(); + audio.startSound(); + } else if(!audio.isPlaying()) { + audio = rebootAudio(audio); + } + + audio.keepAlive(); + audio.updateVolume(this.getVolume(1F)); + + if(MainRegistry.proxy.me().getDistance(xCoord + 0.5, yCoord + 3, zCoord + 0.5) < 50) { + if(worldObj.rand.nextInt(20) == 0) worldObj.spawnParticle("cloud", xCoord + 0.5 - rot.offsetX - dir.offsetX * 0.875, yCoord + 3, zCoord + 0.5 - rot.offsetZ - dir.offsetZ * 0.875, 0.0, 0.05, 0.0); + if(worldObj.rand.nextInt(20) == 0) worldObj.spawnParticle("cloud", xCoord + 0.5 - rot.offsetX - dir.offsetX * 2.375, yCoord + 3, zCoord + 0.5 - rot.offsetZ - dir.offsetZ * 2.375, 0.0, 0.05, 0.0); + if(worldObj.rand.nextInt(20) == 0) worldObj.spawnParticle("cloud", xCoord + 0.5 - rot.offsetX + dir.offsetX * 0.875, yCoord + 3, zCoord + 0.5 - rot.offsetZ + dir.offsetZ * 0.875, 0.0, 0.05, 0.0); + if(worldObj.rand.nextInt(20) == 0) worldObj.spawnParticle("cloud", xCoord + 0.5 - rot.offsetX + dir.offsetX * 2.375, yCoord + 3, zCoord + 0.5 - rot.offsetZ + dir.offsetZ * 2.375, 0.0, 0.05, 0.0); + } + + } else { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + if(this.isVenting) { + + if(worldObj.getTotalWorldTime() % 2 == 0) { + NBTTagCompound fx = new NBTTagCompound(); + fx.setString("type", "tower"); + fx.setFloat("lift", 10F); + fx.setFloat("base", 0.25F); + fx.setFloat("max", 2.5F); + fx.setInteger("life", 100 + worldObj.rand.nextInt(20)); + fx.setInteger("color",0x202020); + fx.setDouble("posX", xCoord + 0.5 - rot.offsetX); + fx.setDouble("posY", yCoord + 3); + fx.setDouble("posZ", zCoord + 0.5 - rot.offsetZ); + MainRegistry.proxy.effectNT(fx); + } + } + } + } + + public static int getConsumption(int speed, int powerSaving) { + return (int) (consumption * Math.pow(speed + 1, 2)) / (powerSaving + 1); + } + + protected PyroOvenRecipe lastValidRecipe; + + public PyroOvenRecipe getMatchingRecipe() { + + if(lastValidRecipe != null && doesRecipeMatch(lastValidRecipe)) return lastValidRecipe; + + for(PyroOvenRecipe rec : PyroOvenRecipes.recipes) { + if(doesRecipeMatch(rec)) { + lastValidRecipe = rec; + return rec; + } + } + + return null; + } + + public boolean doesRecipeMatch(PyroOvenRecipe recipe) { + + if(recipe.inputFluid != null) { + if(tanks[0].getTankType() != recipe.inputFluid.type) return false; // recipe needs fluid, fluid doesn't match + } + if(recipe.inputItem != null) { + if(slots[1] == null) return false; // recipe needs item, no item present + if(!recipe.inputItem.matchesRecipe(slots[1], true)) return false; // recipe needs item, item doesn't match + } else { + if(slots[1] != null) return false; // recipe does not need item, but item is present + } + + return true; + } + + public boolean canProcess() { + int speed = upgradeManager.getLevel(UpgradeType.SPEED); + int powerSaving = upgradeManager.getLevel(UpgradeType.POWER); + if(power < this.getConsumption(speed, powerSaving)) return false; // not enough power + + PyroOvenRecipe recipe = this.getMatchingRecipe(); + if(recipe == null) return false; // no matching recipe + if(recipe.inputFluid != null && tanks[0].getFill() < recipe.inputFluid.fill) return false; // not enough input fluid + if(recipe.inputItem != null && slots[1].stackSize < recipe.inputItem.stacksize) return false; // not enough input item + if(recipe.outputFluid != null && recipe.outputFluid.fill + tanks[1].getFill() > tanks[1].getMaxFill() && recipe.outputFluid.type == tanks[1].getTankType()) return false; // too much output fluid + if(recipe.outputItem != null && slots[2] != null && recipe.outputItem.stackSize + slots[2].stackSize > slots[2].getMaxStackSize()) return false; // too much output item + if(recipe.outputItem != null && slots[2] != null && recipe.outputItem.getItem() != slots[2].getItem()) return false; // output item doesn't match + if(recipe.outputItem != null && slots[2] != null && recipe.outputItem.getItemDamage() != slots[2].getItemDamage()) return false; // output meta doesn't match + + return true; + } + + public void finishRecipe(PyroOvenRecipe recipe) { + if(recipe.outputItem != null) { + if(slots[2] == null) { + slots[2] = recipe.outputItem.copy(); + } else { + slots[2].stackSize += recipe.outputItem.stackSize; + } + } + if(recipe.outputFluid != null) { + tanks[1].setTankType(recipe.outputFluid.type); + tanks[1].setFill(tanks[1].getFill() + recipe.outputFluid.fill); + } + if(recipe.inputItem != null) { + this.decrStackSize(1, recipe.inputItem.stacksize); + } + if(recipe.inputFluid != null) { + tanks[0].setFill(tanks[0].getFill() - recipe.inputFluid.fill); + } + } + + protected DirPos[] getConPos() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); + ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); + + return new DirPos[] { + new DirPos(xCoord + dir.offsetX * 2 + rot.offsetX * 3, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * 3, rot), + new DirPos(xCoord + dir.offsetX * 1 + rot.offsetX * 3, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 3, rot), + new DirPos(xCoord + rot.offsetX * 3, yCoord, zCoord + rot.offsetZ * 3, rot), + new DirPos(xCoord - dir.offsetX * 1 + rot.offsetX * 3, yCoord, zCoord - dir.offsetZ * 1 + rot.offsetZ * 3, rot), + new DirPos(xCoord - dir.offsetX * 2 + rot.offsetX * 3, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ * 3, rot), + }; + } + + @Override public void serialize(ByteBuf buf) { + super.serialize(buf); + tanks[0].serialize(buf); + tanks[1].serialize(buf); + buf.writeLong(power); + buf.writeBoolean(isVenting); + buf.writeBoolean(isProgressing); + buf.writeFloat(progress); + } + + @Override public void deserialize(ByteBuf buf) { + super.deserialize(buf); + tanks[0].deserialize(buf); + tanks[1].deserialize(buf); + power = buf.readLong(); + isVenting = buf.readBoolean(); + isProgressing = buf.readBoolean(); + progress = buf.readFloat(); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.tanks[0].readFromNBT(nbt, "t0"); + this.tanks[1].readFromNBT(nbt, "t1"); + this.progress = nbt.getFloat("prog"); + this.power = nbt.getLong("power"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + this.tanks[0].writeToNBT(nbt, "t0"); + this.tanks[1].writeToNBT(nbt, "t1"); + nbt.setFloat("prog", progress); + nbt.setLong("power", power); + } + + @Override public int[] getAccessibleSlotsFromSide(int meta) { return new int[] { 1, 2 }; } + @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { return i == 1; } + @Override public boolean canExtractItem(int i, ItemStack itemStack, int j) { return i == 2; } + + @Override + public void pollute(PollutionType type, float amount) { + FluidTank tank = type == PollutionType.SOOT ? smoke : type == PollutionType.HEAVYMETAL ? smoke_leaded : smoke_poison; + + int fluidAmount = (int) Math.ceil(amount * 100); + tank.setFill(tank.getFill() + fluidAmount); + + if(tank.getFill() > tank.getMaxFill()) { + int overflow = tank.getFill() - tank.getMaxFill(); + tank.setFill(tank.getMaxFill()); + PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, type, overflow / 100F); + this.isVenting = true; + } + } + + @Override public AudioWrapper createAudioLoop() { + return MainRegistry.proxy.getLoopedSound("hbm:block.pyroOperate", xCoord, yCoord, zCoord, 1.0F, 15F, 1.0F, 20); + } + + @Override public void onChunkUnload() { + if(audio != null) { audio.stopSound(); audio = null; } + } + + @Override public void invalidate() { + super.invalidate(); + if(audio != null) { audio.stopSound(); audio = null; } + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + if(bb == null) bb = AxisAlignedBB.getBoundingBox(xCoord - 3, yCoord, zCoord - 3, xCoord + 4, yCoord + 3.5, zCoord + 4); + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override public long getPower() { return power; } + @Override public void setPower(long power) { this.power = power; } + @Override public long getMaxPower() { return maxPower; } + + @Override public FluidTank[] getAllTanks() { return new FluidTank[] { tanks[0], tanks[1], smoke }; } + @Override public FluidTank[] getSendingTanks() { return new FluidTank[] { tanks[1], smoke }; } + @Override public FluidTank[] getReceivingTanks() { return new FluidTank[] { tanks[0] }; } + + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerPyroOven(player.inventory, this); } + @Override public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIPyroOven(player.inventory, this); } + + @Override + public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { + return type == UpgradeType.SPEED || type == UpgradeType.POWER; + } + + @Override + public void provideInfo(UpgradeType type, int level, List info, boolean extendedInfo) { + info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_pyrooven)); + if(type == UpgradeType.SPEED) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 25) + "%")); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (Math.pow(level + 1, 2) * 100 - 100) + "%")); + } + if(type == UpgradeType.POWER) { + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (100 - 100 / (level + 1)) + "%")); + } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } + } + + @Override + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 3); + upgrades.put(UpgradeType.POWER, 3); + upgrades.put(UpgradeType.OVERDRIVE, 3); + return upgrades; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java index 65bf61681..b474ce248 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java @@ -24,11 +24,7 @@ import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.IOverpressurable; -import com.hbm.tileentity.IPersistentNBT; -import com.hbm.tileentity.IRepairable; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.*; import com.hbm.util.ParticleUtil; import com.hbm.util.Tuple.Quintet; import com.hbm.util.fauxpointtwelve.DirPos; @@ -37,7 +33,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -49,7 +45,7 @@ import net.minecraft.world.Explosion; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineRefinery extends TileEntityMachineBase implements IEnergyReceiverMK2, IOverpressurable, IPersistentNBT, IRepairable, IFluidStandardTransceiver, IGUIProvider { +public class TileEntityMachineRefinery extends TileEntityMachineBase implements IEnergyReceiverMK2, IOverpressurable, IPersistentNBT, IRepairable, IFluidStandardTransceiver, IGUIProvider, IFluidCopiable { public long power = 0; public int sulfur = 0; @@ -193,14 +189,9 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements } } } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - for(int i = 0; i < 5; i++) tanks[i].writeToNBT(data, "" + i); - data.setBoolean("exploded", hasExploded); - data.setBoolean("onFire", onFire); - data.setBoolean("isOn", this.isOn); - this.networkPack(data, 150); + + this.networkPackNT(150); + } else { if(this.isOn) audioTime = 20; @@ -253,16 +244,25 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements audio = null; } } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - for(int i = 0; i < 5; i++) tanks[i].readFromNBT(nbt, "" + i); - this.hasExploded = nbt.getBoolean("exploded"); - this.onFire = nbt.getBoolean("onFire"); - this.isOn = nbt.getBoolean("isOn"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + for(int i = 0; i < 5; i++) tanks[i].serialize(buf); + buf.writeBoolean(this.hasExploded); + buf.writeBoolean(this.onFire); + buf.writeBoolean(this.isOn); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + for(int i = 0; i < 5; i++) tanks[i].deserialize(buf); + this.hasExploded = buf.readBoolean(); + this.onFire = buf.readBoolean(); + this.isOn = buf.readBoolean(); } private void refine() { @@ -464,7 +464,8 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineRefinery(player.inventory, this); } + } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java index 5f0545326..67cc1e661 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java @@ -1,9 +1,10 @@ package com.hbm.tileentity.machine.oil; +import java.util.HashMap; import java.util.List; import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.container.ContainerSolidifier; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; @@ -11,6 +12,7 @@ import com.hbm.inventory.gui.GUISolidifier; import com.hbm.inventory.recipes.SolidificationRecipes; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; @@ -24,7 +26,7 @@ import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -33,7 +35,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; -public class TileEntityMachineSolidifier extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC { +public class TileEntityMachineSolidifier extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC, IFluidCopiable { public long power; public static final long maxPower = 100000; @@ -42,9 +44,11 @@ public class TileEntityMachineSolidifier extends TileEntityMachineBase implement public int progress; public static final int processTimeBase = 100; public int processTime; - + public FluidTank tank; + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + public TileEntityMachineSolidifier() { super(5); tank = new FluidTank(Fluids.NONE, 24_000); @@ -57,42 +61,36 @@ public class TileEntityMachineSolidifier extends TileEntityMachineBase implement @Override public void updateEntity() { - + if(!worldObj.isRemote) { this.power = Library.chargeTEFromItems(slots, 1, power, maxPower); tank.setType(4, slots); this.updateConnections(); - UpgradeManager.eval(slots, 2, 3); - int speed = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); - int power = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); + upgradeManager.checkSlots(this, slots, 2, 3); + int speed = upgradeManager.getLevel(UpgradeType.SPEED); + int power = upgradeManager.getLevel(UpgradeType.POWER); this.processTime = processTimeBase - (processTimeBase / 4) * speed; this.usage = (usageBase + (usageBase * speed)) / (power + 1); - + if(this.canProcess()) this.process(); else this.progress = 0; - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - data.setInteger("progress", this.progress); - data.setInteger("usage", this.usage); - data.setInteger("processTime", this.processTime); - tank.writeToNBT(data, "t"); - this.networkPack(data, 50); + + this.networkPackNT(50); } } - + private void updateConnections() { for(DirPos pos : getConPos()) { this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - + private DirPos[] getConPos() { return new DirPos[] { new DirPos(xCoord, yCoord + 4, zCoord, Library.POS_Y), @@ -113,80 +111,89 @@ public class TileEntityMachineSolidifier extends TileEntityMachineBase implement public int[] getAccessibleSlotsFromSide(int side) { return new int[] { 0 }; } - + public boolean canProcess() { - + if(this.power < usage) return false; - + Pair out = SolidificationRecipes.getOutput(tank.getTankType()); - + if(out == null) return false; - + int req = out.getKey(); ItemStack stack = out.getValue(); - + if(req > tank.getFill()) return false; - + if(slots[0] != null) { - + if(slots[0].getItem() != stack.getItem()) return false; - + if(slots[0].getItemDamage() != stack.getItemDamage()) return false; - + if(slots[0].stackSize + stack.stackSize > slots[0].getMaxStackSize()) return false; } - + return true; } - + public void process() { - + this.power -= usage; - + progress++; - + if(progress >= processTime) { - + Pair out = SolidificationRecipes.getOutput(tank.getTankType()); int req = out.getKey(); ItemStack stack = out.getValue(); tank.setFill(tank.getFill() - req); - + if(slots[0] == null) { slots[0] = stack.copy(); } else { slots[0].stackSize += stack.stackSize; } - + progress = 0; - + this.markDirty(); } } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.progress = nbt.getInteger("progress"); - this.usage = nbt.getInteger("usage"); - this.processTime = nbt.getInteger("processTime"); - tank.readFromNBT(nbt, "t"); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + buf.writeInt(this.progress); + buf.writeInt(this.usage); + buf.writeInt(this.processTime); + tank.serialize(buf); } - + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.progress = buf.readInt(); + this.usage = buf.readInt(); + this.processTime = buf.readInt(); + tank.deserialize(buf); + } + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); tank.readFromNBT(nbt, "tank"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -207,12 +214,12 @@ public class TileEntityMachineSolidifier extends TileEntityMachineBase implement public long getMaxPower() { return maxPower; } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 1, @@ -223,10 +230,10 @@ public class TileEntityMachineSolidifier extends TileEntityMachineBase implement zCoord + 2 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -250,7 +257,7 @@ public class TileEntityMachineSolidifier extends TileEntityMachineBase implement @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUISolidifier(player.inventory, this); } @@ -272,10 +279,11 @@ public class TileEntityMachineSolidifier extends TileEntityMachineBase implement } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 3; - if(type == UpgradeType.POWER) return 3; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 3); + upgrades.put(UpgradeType.POWER, 3); + return upgrades; } @Override @@ -283,4 +291,9 @@ public class TileEntityMachineSolidifier extends TileEntityMachineBase implement data.setBoolean(CompatEnergyControl.B_ACTIVE, this.progress > 0); data.setDouble(CompatEnergyControl.D_CONSUMPTION_HE, this.usage); } + + @Override + public FluidTank getTankToPaste() { + return tank; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java index 037982ffd..3653b2138 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java @@ -10,6 +10,7 @@ import com.hbm.inventory.recipes.RefineryRecipes; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityMachineBase; @@ -20,7 +21,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; @@ -28,7 +29,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider { +public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider, IFluidCopiable { public long power; public static final long maxPower = 1_000_000; @@ -81,12 +82,9 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem } } } - - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); - data.setBoolean("isOn", this.isOn); - for(int i = 0; i < 5; i++) tanks[i].writeToNBT(data, "" + i); - this.networkPack(data, 150); + + this.networkPackNT(150); + } else { if(this.isOn) audioTime = 20; @@ -139,14 +137,21 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem audio = null; } } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.isOn = nbt.getBoolean("isOn"); - for(int i = 0; i < 5; i++) tanks[i].readFromNBT(nbt, "" + i); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(this.power); + buf.writeBoolean(this.isOn); + for(int i = 0; i < 5; i++) tanks[i].serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.power = buf.readLong(); + this.isOn = buf.readBoolean(); + for(int i = 0; i < 5; i++) tanks[i].deserialize(buf); } private void refine() { @@ -300,7 +305,7 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineVacuumDistill(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java index a8b2e4555..502d1bbbf 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java @@ -1,19 +1,16 @@ package com.hbm.tileentity.machine.oil; +import java.util.HashMap; import java.util.HashSet; import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.UpgradeManagerNT; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; -import com.hbm.tileentity.IConfigurableMachine; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.IPersistentNBT; -import com.hbm.tileentity.IUpgradeInfoProvider; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.*; import com.hbm.util.BobMathUtil; import com.hbm.util.Tuple; import com.hbm.util.Tuple.Triplet; @@ -23,6 +20,7 @@ import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -30,34 +28,36 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public abstract class TileEntityOilDrillBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IConfigurableMachine, IPersistentNBT, IGUIProvider, IUpgradeInfoProvider { +public abstract class TileEntityOilDrillBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IConfigurableMachine, IPersistentNBT, IGUIProvider, IUpgradeInfoProvider, IFluidCopiable { public int indicator = 0; - + public long power; - + public FluidTank[] tanks; + public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(); + public TileEntityOilDrillBase() { super(8); tanks = new FluidTank[2]; tanks[0] = new FluidTank(Fluids.OIL, 64_000); tanks[1] = new FluidTank(Fluids.GAS, 64_000); } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - + this.power = nbt.getLong("power"); for(int i = 0; i < this.tanks.length; i++) this.tanks[i].readFromNBT(nbt, "t" + i); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + nbt.setLong("power", power); for(int i = 0; i < this.tanks.length; i++) this.tanks[i].writeToNBT(nbt, "t" + i); @@ -65,10 +65,10 @@ public abstract class TileEntityOilDrillBase extends TileEntityMachineBase imple @Override public void writeNBT(NBTTagCompound nbt) { - + boolean empty = power == 0; for(FluidTank tank : tanks) if(tank.getFill() > 0) empty = false; - + if(!empty) { nbt.setLong("power", power); for(int i = 0; i < this.tanks.length; i++) { @@ -90,85 +90,89 @@ public abstract class TileEntityOilDrillBase extends TileEntityMachineBase imple @Override public void updateEntity() { - - if(!worldObj.isRemote) { - + + if (!worldObj.isRemote) { + this.updateConnections(); - + this.tanks[0].unloadTank(1, 2, slots); this.tanks[1].unloadTank(3, 4, slots); - - UpgradeManager.eval(slots, 5, 7); - this.speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); - this.energyLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); - this.overLevel = Math.min(UpgradeManager.getLevel(UpgradeType.OVERDRIVE), 3) + 1; - int abLevel = Math.min(UpgradeManager.getLevel(UpgradeType.AFTERBURN), 3); - + + upgradeManager.checkSlots(this, slots, 5, 7); + this.speedLevel = upgradeManager.getLevel(UpgradeType.SPEED); + this.energyLevel = upgradeManager.getLevel(UpgradeType.POWER); + this.overLevel = upgradeManager.getLevel(UpgradeType.OVERDRIVE) + 1; + int abLevel = upgradeManager.getLevel(UpgradeType.AFTERBURN); + int toBurn = Math.min(tanks[1].getFill(), abLevel * 10); - - if(toBurn > 0) { + + if (toBurn > 0) { tanks[1].setFill(tanks[1].getFill() - toBurn); this.power += toBurn * 5; - - if(this.power > this.getMaxPower()) + + if (this.power > this.getMaxPower()) this.power = this.getMaxPower(); } - + power = Library.chargeTEFromItems(slots, 0, power, this.getMaxPower()); - for(DirPos pos : getConPos()) { - if(tanks[0].getFill() > 0) this.sendFluid(tanks[0], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + for (DirPos pos : getConPos()) { + if (tanks[0].getFill() > 0) + this.sendFluid(tanks[0], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if (tanks[1].getFill() > 0) + this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - - if(this.power >= this.getPowerReqEff() && this.tanks[0].getFill() < this.tanks[0].getMaxFill() && this.tanks[1].getFill() < this.tanks[1].getMaxFill()) { - + + if (this.power >= this.getPowerReqEff() && this.tanks[0].getFill() < this.tanks[0].getMaxFill() && this.tanks[1].getFill() < this.tanks[1].getMaxFill()) { + this.power -= this.getPowerReqEff(); - - if(worldObj.getTotalWorldTime() % getDelayEff() == 0) { + + if (worldObj.getTotalWorldTime() % getDelayEff() == 0) { this.indicator = 0; - - for(int y = yCoord - 1; y >= getDrillDepth(); y--) { - - if(worldObj.getBlock(xCoord, y, zCoord) != ModBlocks.oil_pipe) { - - if(trySuck(y)) { + + for (int y = yCoord - 1; y >= getDrillDepth(); y--) { + + if (worldObj.getBlock(xCoord, y, zCoord) != ModBlocks.oil_pipe) { + + if (trySuck(y)) { break; } else { tryDrill(y); break; } } - - if(y == getDrillDepth()) + + if (y == getDrillDepth()) this.indicator = 1; } } - + } else { this.indicator = 2; } - - this.sendUpdate(); + + this.networkPackNT(25); } } - - public void sendUpdate() { - NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", power); - data.setInteger("indicator", this.indicator); - for(int i = 0; i < tanks.length; i++) tanks[i].writeToNBT(data, "t" + i); - this.networkPack(data, 25); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + + buf.writeLong(this.power); + buf.writeInt(this.indicator); + for (FluidTank tank : tanks) tank.serialize(buf); } - - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.power = nbt.getLong("power"); - this.indicator = nbt.getInteger("indicator"); - for(int i = 0; i < tanks.length; i++) tanks[i].readFromNBT(nbt, "t" + i); + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + + this.power = buf.readLong(); + this.indicator = buf.readInt(); + for (FluidTank tank : tanks) tank.deserialize(buf); } - + public boolean canPump() { return true; } @@ -176,27 +180,27 @@ public abstract class TileEntityOilDrillBase extends TileEntityMachineBase imple @Override public void setInventorySlotContents(int i, ItemStack stack) { super.setInventorySlotContents(i, stack); - + if(stack != null && i >= 5 && i <= 7 && stack.getItem() instanceof ItemMachineUpgrade) worldObj.playSoundEffect(xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, "hbm:item.upgradePlug", 1.0F, 1.0F); } - + public int getPowerReqEff() { int req = this.getPowerReq(); return (req + (req / 4 * this.speedLevel) - (req / 4 * this.energyLevel)) * this.overLevel; } - + public int getDelayEff() { int delay = getDelay(); return Math.max((delay - (delay / 4 * this.speedLevel) + (delay / 10 * this.energyLevel)) / this.overLevel, 1); } - + public abstract int getPowerReq(); public abstract int getDelay(); - + public void tryDrill(int y) { Block b = worldObj.getBlock(xCoord, y, zCoord); - + if(b.getExplosionResistance(null) < 1000) { onDrill(y); worldObj.setBlock(xCoord, y, zCoord, ModBlocks.oil_pipe); @@ -204,72 +208,72 @@ public abstract class TileEntityOilDrillBase extends TileEntityMachineBase imple this.indicator = 2; } } - + public void onDrill(int y) { } - + public int getDrillDepth() { return 5; } - + public boolean trySuck(int y) { - + Block b = worldObj.getBlock(xCoord, y, zCoord); - + if(!canSuckBlock(b)) return false; - + if(!this.canPump()) return true; - + trace.clear(); - + return suckRec(xCoord, y, zCoord, 0); } - + public boolean canSuckBlock(Block b) { return b == ModBlocks.ore_oil || b == ModBlocks.ore_oil_empty; } - + protected HashSet> trace = new HashSet(); - + public boolean suckRec(int x, int y, int z, int layer) { - + Triplet pos = new Triplet(x, y, z); - + if(trace.contains(pos)) return false; - + trace.add(pos); - + if(layer > 64) return false; - + Block b = worldObj.getBlock(x, y, z); - + if(b == ModBlocks.ore_oil || b == ModBlocks.ore_bedrock_oil) { doSuck(x, y, z); return true; } - + if(b == ModBlocks.ore_oil_empty) { ForgeDirection[] dirs = BobMathUtil.getShuffledDirs(); - + for(ForgeDirection dir : dirs) { if(suckRec(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, layer + 1)) return true; } } - + return false; } - + public void doSuck(int x, int y, int z) { - + if(worldObj.getBlock(x, y, z) == ModBlocks.ore_oil) { onSuck(x, y, z); } } - + public abstract void onSuck(int x, int y, int z); @Override @@ -307,7 +311,7 @@ public abstract class TileEntityOilDrillBase extends TileEntityMachineBase imple public FluidTank[] getAllTanks() { return tanks; } - + public abstract DirPos[] getConPos(); protected void updateConnections() { @@ -322,11 +326,17 @@ public abstract class TileEntityOilDrillBase extends TileEntityMachineBase imple } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 3; - if(type == UpgradeType.POWER) return 3; - if(type == UpgradeType.AFTERBURN) return 3; - if(type == UpgradeType.OVERDRIVE) return 3; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 3); + upgrades.put(UpgradeType.POWER, 3); + upgrades.put(UpgradeType.AFTERBURN, 3); + upgrades.put(UpgradeType.OVERDRIVE, 3); + return upgrades; + } + + @Override + public FluidTank getTankToPaste() { + return null; } } diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java index 8c06fd658..0463be416 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java @@ -1,96 +1,49 @@ package com.hbm.tileentity.machine.pile; -import java.util.List; -import java.util.Random; +import com.hbm.handler.neutron.NeutronNodeWorld; +import com.hbm.handler.neutron.PileNeutronHandler; +import com.hbm.handler.neutron.PileNeutronHandler.PileNeutronStream; +import com.hbm.handler.neutron.PileNeutronHandler.PileNeutronNode; -import com.hbm.blocks.ModBlocks; -import com.hbm.util.ContaminationUtil; -import com.hbm.util.ContaminationUtil.ContaminationType; -import com.hbm.util.ContaminationUtil.HazardType; - -import api.hbm.block.IPileNeutronReceiver; -import net.minecraft.block.Block; -import net.minecraft.entity.EntityLivingBase; +import com.hbm.util.fauxpointtwelve.BlockPos; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; public abstract class TileEntityPileBase extends TileEntity { @Override public abstract void updateEntity(); - - protected void castRay(int flux, int range) { - Random rand = worldObj.rand; - Vec3 vec = Vec3.createVectorHelper(1, 0, 0); - vec.rotateAroundZ((float)(rand.nextDouble() * Math.PI * 2D)); - vec.rotateAroundY((float)(rand.nextDouble() * Math.PI * 2D)); - vec.rotateAroundX((float)(rand.nextDouble() * Math.PI * 2D)); - - int prevX = xCoord; - int prevY = yCoord; - int prevZ = zCoord; - - for(float i = 1; i <= range; i += 0.5F) { - int x = (int)Math.floor(xCoord + 0.5 + vec.xCoord * i); - int y = (int)Math.floor(yCoord + 0.5 + vec.yCoord * i); - int z = (int)Math.floor(zCoord + 0.5 + vec.zCoord * i); - - if(x == prevX && y == prevY && z == prevZ) - continue; + @Override + public void invalidate() { + super.invalidate(); - prevX = x; - prevY = y; - prevZ = z; - - /*if(i == range || i == 1) { - NBTTagCompound data2 = new NBTTagCompound(); - data2.setString("type", "vanillaExt"); - data2.setString("mode", i == range ? "greendust" : - i == 1 ? "reddust" : "bluedust"); - data2.setDouble("posX", xCoord + 0.5 + vec.xCoord * i); - data2.setDouble("posY", yCoord + 0.5 + vec.yCoord * i); - data2.setDouble("posZ", zCoord + 0.5 + vec.zCoord * i); - MainRegistry.proxy.effectNT(data2); - }*/ - - Block b = worldObj.getBlock(x, y, z); - - if(b == ModBlocks.concrete || b == ModBlocks.concrete_smooth || b == ModBlocks.concrete_asbestos || b == ModBlocks.concrete_colored || b == ModBlocks.brick_concrete) - flux *= 0.25; - - if(b == ModBlocks.block_boron) - return; - - int meta = worldObj.getBlockMetadata(x, y, z); - - if(b == ModBlocks.block_graphite_rod && (meta & 8) == 0) - return; - - TileEntity te = worldObj.getTileEntity(x, y, z); - - if(te instanceof IPileNeutronReceiver) { - - //this part throttles neutron efficiency for reactions that are way too close, efficiency reaches 100% after 1.5 meters - //This entire time, this multiplier has been using the max distance, not the actual one, meaning efficency has always been 100% - //float mult = Math.min((float)i / 1.5F, 1F); - //int n = (int)(flux * mult); - - IPileNeutronReceiver rec = (IPileNeutronReceiver) te; - rec.receiveNeutrons(flux); - - if(b != ModBlocks.block_graphite_detector || (meta & 8) == 0) - return; - } - - List entities = worldObj.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(x + 0.5, y + 0.5, z + 0.5, x + 0.5, y + 0.5, z + 0.5)); - - if(entities != null) - for(EntityLivingBase e : entities) { - - ContaminationUtil.contaminate(e, HazardType.RADIATION, ContaminationType.CREATIVE, flux / 4F); - } + NeutronNodeWorld.removeNode(new BlockPos(this)); + } + + protected void castRay(int flux) { + + BlockPos pos = new BlockPos(this); + + if (flux == 0) { + // simple way to remove the node from the cache when no flux is going into it! + NeutronNodeWorld.removeNode(pos); + return; } + + PileNeutronNode node = (PileNeutronNode) NeutronNodeWorld.getNode(pos); + + if(node == null) { + node = PileNeutronHandler.makeNode(this); + NeutronNodeWorld.addNode(node); + } + + Vec3 neutronVector = Vec3.createVectorHelper(1, 0, 0); + + neutronVector.rotateAroundZ((float)(Math.PI * 2D * worldObj.rand.nextDouble())); + neutronVector.rotateAroundY((float)(Math.PI * 2D * worldObj.rand.nextDouble())); + neutronVector.rotateAroundX((float)(Math.PI * 2D * worldObj.rand.nextDouble())); + + new PileNeutronStream(node, neutronVector, flux); } } diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBreedingFuel.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBreedingFuel.java index 1bbe94acb..c1f775e0e 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBreedingFuel.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBreedingFuel.java @@ -35,7 +35,7 @@ public class TileEntityPileBreedingFuel extends TileEntityPileBase implements IP return; for(int i = 0; i < 2; i++) - this.castRay(1, 5); + this.castRay(1); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java index 15233ad0c..2d44341e6 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java @@ -2,9 +2,8 @@ package com.hbm.tileentity.machine.pile; import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; -import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import api.hbm.block.IPileNeutronReceiver; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -22,17 +21,17 @@ public class TileEntityPileFuel extends TileEntityPileBase implements IPileNeutr @Override public void updateEntity() { - + if(!worldObj.isRemote) { dissipateHeat(); checkRedstone(react()); transmute(); - + if(this.heat >= this.maxHeat) { worldObj.newExplosion(null, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 4, true, true); worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.gas_radon_dense); } - + if(worldObj.rand.nextFloat() * 2F <= this.heat / (float)this.maxHeat) { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "vanillaExt"); @@ -40,55 +39,54 @@ public class TileEntityPileFuel extends TileEntityPileBase implements IPileNeutr data.setDouble("mY", 0.05); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, yCoord + 1, zCoord + 0.25 + worldObj.rand.nextDouble() * 0.5), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 20)); - MainRegistry.proxy.effectNT(data); } - + if(this.progress >= this.maxProgress) { worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.block_graphite_plutonium, this.getBlockMetadata() & 7, 3); } } - + } - + private void dissipateHeat() { this.heat -= (this.getBlockMetadata() & 4) == 4 ? heat * 0.065 : heat * 0.05; //remove 5% of the stored heat per tick; 6.5% for windscale } - + private int react() { - + int reaction = (int) (this.neutrons * (1D - ((double)this.heat / (double)this.maxHeat) * 0.5D)); //max heat reduces reaction by 50% due to thermal expansion - + this.lastNeutrons = this.neutrons; this.neutrons = 0; - + int lastProgress = this.progress; - + this.progress += reaction; - + if(reaction <= 0) return lastProgress; - + this.heat += reaction; - + for(int i = 0; i < 12; i++) - this.castRay((int) Math.max(reaction * 0.25, 1), 5); - + this.castRay((int) Math.max(reaction * 0.25, 1)); + return lastProgress; } - + private void checkRedstone(int lastProgress) { int lastLevel = MathHelper.clamp_int((lastProgress * 16) / maxProgress, 0, 15); int newLevel = MathHelper.clamp_int((progress * 16) / maxProgress, 0, 15); if(lastLevel != newLevel) worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, this.getBlockType()); } - + private void transmute() { - + if((this.getBlockMetadata() & 8) == 8) { if(this.progress < this.maxProgress - 1000) //Might be subject to change, but 1000 seems like a good number. this.progress = maxProgress - 1000; - + return; } else if(this.progress >= maxProgress - 1000) { worldObj.setBlockMetadataWithNotify(this.xCoord, this.yCoord, this.zCoord, this.getBlockMetadata() | 8, 3); @@ -100,7 +98,7 @@ public class TileEntityPileFuel extends TileEntityPileBase implements IPileNeutr public void receiveNeutrons(int n) { this.neutrons += n; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -108,7 +106,7 @@ public class TileEntityPileFuel extends TileEntityPileBase implements IPileNeutr this.progress = nbt.getInteger("progress"); this.neutrons = nbt.getInteger("neutrons"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileSource.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileSource.java index c297f9dfb..6b38b7875 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileSource.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileSource.java @@ -12,7 +12,7 @@ public class TileEntityPileSource extends TileEntityPileBase { int n = this.getBlockType() == ModBlocks.block_graphite_source ? 1 : 2; for(int i = 0; i < 12; i++) { - this.castRay(n, 5); + this.castRay(n); } } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/IRBMKFluxReceiver.java b/src/main/java/com/hbm/tileentity/machine/rbmk/IRBMKFluxReceiver.java index 91824df0a..2b8464354 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/IRBMKFluxReceiver.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/IRBMKFluxReceiver.java @@ -1,5 +1,7 @@ package com.hbm.tileentity.machine.rbmk; +import com.hbm.handler.neutron.NeutronStream; + public interface IRBMKFluxReceiver { public enum NType { @@ -14,5 +16,5 @@ public interface IRBMKFluxReceiver { } } - public void receiveFlux(NType type, double flux); + public void receiveFlux(NeutronStream stream); } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/RBMKDials.java b/src/main/java/com/hbm/tileentity/machine/rbmk/RBMKDials.java index a93498b6f..b8e24f1c8 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/RBMKDials.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/RBMKDials.java @@ -1,216 +1,315 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.config.GeneralConfig; +import com.hbm.main.MainRegistry; import com.hbm.util.GameRuleHelper; -import net.minecraft.util.MathHelper; +import com.hbm.util.Tuple; import net.minecraft.world.GameRules; import net.minecraft.world.World; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + public class RBMKDials { - public static final String KEY_SAVE_DIALS = "dialSaveDials"; - - public static final String KEY_PASSIVE_COOLING = "dialPassiveCooling"; - public static final String KEY_COLUMN_HEAT_FLOW = "dialColumnHeatFlow"; - public static final String KEY_FUEL_DIFFUSION_MOD = "dialDiffusionMod"; - public static final String KEY_HEAT_PROVISION = "dialHeatProvision"; - public static final String KEY_COLUMN_HEIGHT = "dialColumnHeight"; - public static final String KEY_PERMANENT_SCRAP = "dialEnablePermaScrap"; - public static final String KEY_BOILER_HEAT_CONSUMPTION = "dialBoilerHeatConsumption"; - public static final String KEY_CONTROL_SPEED_MOD = "dialControlSpeed"; - public static final String KEY_REACTIVITY_MOD = "dialReactivityMod"; - public static final String KEY_OUTGASSER_MOD = "dialOutgasserSpeedMod"; - public static final String KEY_SURGE_MOD = "dialControlSurgeMod"; - public static final String KEY_FLUX_RANGE = "dialFluxRange"; - public static final String KEY_REASIM_RANGE = "dialReasimRange"; - public static final String KEY_REASIM_COUNT = "dialReasimCount"; - public static final String KEY_REASIM_MOD = "dialReasimOutputMod"; - public static final String KEY_REASIM_BOILERS = "dialReasimBoilers"; - public static final String KEY_REASIM_BOILER_SPEED = "dialReasimBoilerSpeed"; - public static final String KEY_DISABLE_MELTDOWNS = "dialDisableMeltdowns"; - public static final String KEY_ENABLE_MELTDOWN_OVERPRESSURE = "dialEnableMeltdownOverpressure"; - - public static void createDials(World world) { - GameRules rules = world.getGameRules(); - - if(!rules.getGameRuleBooleanValue(KEY_SAVE_DIALS)) { - rules.setOrCreateGameRule(KEY_PASSIVE_COOLING, "1.0"); - rules.setOrCreateGameRule(KEY_COLUMN_HEAT_FLOW, "0.2"); - rules.setOrCreateGameRule(KEY_FUEL_DIFFUSION_MOD, "1.0"); - rules.setOrCreateGameRule(KEY_HEAT_PROVISION, "0.2"); - rules.setOrCreateGameRule(KEY_COLUMN_HEIGHT, "4"); - rules.setOrCreateGameRule(KEY_PERMANENT_SCRAP, "true"); - rules.setOrCreateGameRule(KEY_BOILER_HEAT_CONSUMPTION, "0.1"); - rules.setOrCreateGameRule(KEY_CONTROL_SPEED_MOD, "1.0"); - rules.setOrCreateGameRule(KEY_REACTIVITY_MOD, "1.0"); - rules.setOrCreateGameRule(KEY_SAVE_DIALS, "true"); - rules.setOrCreateGameRule(KEY_OUTGASSER_MOD, "1.0"); - rules.setOrCreateGameRule(KEY_SURGE_MOD, "1.0"); - rules.setOrCreateGameRule(KEY_FLUX_RANGE, "5"); - rules.setOrCreateGameRule(KEY_REASIM_RANGE, "10"); - rules.setOrCreateGameRule(KEY_REASIM_COUNT, "6"); - rules.setOrCreateGameRule(KEY_REASIM_MOD, "1.0"); - rules.setOrCreateGameRule(KEY_REASIM_BOILERS, "false"); - rules.setOrCreateGameRule(KEY_REASIM_BOILER_SPEED, "0.05"); - rules.setOrCreateGameRule(KEY_DISABLE_MELTDOWNS, "false"); - rules.setOrCreateGameRule(KEY_ENABLE_MELTDOWN_OVERPRESSURE, "false"); + public enum RBMKKeys { + KEY_SAVE_DIALS("dialSaveDials", true), + KEY_PASSIVE_COOLING("dialPassiveCooling", 1.0), + KEY_COLUMN_HEAT_FLOW("dialColumnHeatFlow", 0.2), + KEY_FUEL_DIFFUSION_MOD("dialDiffusionMod", 1.0), + KEY_HEAT_PROVISION("dialHeatProvision", 0.2), + KEY_COLUMN_HEIGHT("dialColumnHeight", 4), + KEY_PERMANENT_SCRAP("dialEnablePermaScrap", true), + KEY_BOILER_HEAT_CONSUMPTION("dialBoilerHeatConsumption", 0.1), + KEY_CONTROL_SPEED_MOD("dialControlSpeed", 1.0), + KEY_REACTIVITY_MOD("dialReactivityMod", 1.0), + KEY_OUTGASSER_MOD("dialOutgasserSpeedMod", 1.0), + KEY_SURGE_MOD("dialControlSurgeMod", 1.0), + KEY_FLUX_RANGE("dialFluxRange", 5), + KEY_REASIM_RANGE("dialReasimRange", 10), + KEY_REASIM_COUNT("dialReasimCount", 6), + KEY_REASIM_MOD("dialReasimOutputMod", 1.0), + KEY_REASIM_BOILERS("dialReasimBoilers", false), + KEY_REASIM_BOILER_SPEED("dialReasimBoilerSpeed", 0.05), + KEY_DISABLE_MELTDOWNS("dialDisableMeltdowns", false), + KEY_ENABLE_MELTDOWN_OVERPRESSURE("dialEnableMeltdownOverpressure", false), + KEY_MODERATOR_EFFICIENCY("dialModeratorEfficiency", 1.0), + KEY_ABSORBER_EFFICIENCY("dialAbsorberEfficiency", 1.0), + KEY_REFLECTOR_EFFICIENCY("dialReflectorEfficiency", 1.0), + KEY_DISABLE_DEPLETION("dialDisableDepletion", true), + KEY_DISABLE_XENON("dialDisableXenon", true); + + public final String keyString; + public final Object defValue; + + RBMKKeys(String key, Object def) { + keyString = key; + defValue = def; } } - + + public static HashMap>> gameRules = new HashMap<>(); + + public static void createDials(World world) { + createDials(world, false); + } + + public static void createDials(World world, boolean forceRecreate) { + GameRules rules = world.getGameRules(); + + for(RBMKKeys key : RBMKKeys.values()) + gameRules.put(key, new ArrayList<>()); + refresh(world); + + if(!rules.getGameRuleBooleanValue(RBMKKeys.KEY_SAVE_DIALS.keyString) || forceRecreate) { + for(RBMKKeys key : RBMKKeys.values()) + rules.setOrCreateGameRule(key.keyString, String.valueOf(key.defValue)); + } + } + + + /** + * Refresh all gamerules. + * @param world World to refresh for. + */ + public static void refresh(World world) { + List> toRemove = new ArrayList<>(); + for(List> values : gameRules.values()) { + + for(Tuple.Pair rulePair : values) + if(rulePair.key == world) + toRemove.add(rulePair); + + for(Tuple.Pair pair : toRemove) + values.remove(pair); + + toRemove.clear(); + } + + gameRules.get(RBMKKeys.KEY_PASSIVE_COOLING).add(new Tuple.Pair<>(world, GameRuleHelper.getDoubleMinimum(world, RBMKKeys.KEY_PASSIVE_COOLING, 0.0D))); + gameRules.get(RBMKKeys.KEY_COLUMN_HEAT_FLOW).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedDouble(world, RBMKKeys.KEY_COLUMN_HEAT_FLOW, 0.0D, 1.0D))); + gameRules.get(RBMKKeys.KEY_FUEL_DIFFUSION_MOD).add(new Tuple.Pair<>(world, GameRuleHelper.getDoubleMinimum(world, RBMKKeys.KEY_FUEL_DIFFUSION_MOD, 0.0D))); + gameRules.get(RBMKKeys.KEY_HEAT_PROVISION).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedDouble(world, RBMKKeys.KEY_HEAT_PROVISION, 0.0D, 1.0D))); + gameRules.get(RBMKKeys.KEY_COLUMN_HEIGHT).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedInt(world, RBMKKeys.KEY_COLUMN_HEIGHT, 2, 16) - 1)); + gameRules.get(RBMKKeys.KEY_PERMANENT_SCRAP).add(new Tuple.Pair<>(world, world.getGameRules().getGameRuleBooleanValue(RBMKKeys.KEY_PERMANENT_SCRAP.keyString))); + gameRules.get(RBMKKeys.KEY_BOILER_HEAT_CONSUMPTION).add(new Tuple.Pair<>(world, GameRuleHelper.getDoubleMinimum(world, RBMKKeys.KEY_BOILER_HEAT_CONSUMPTION, 0D))); + gameRules.get(RBMKKeys.KEY_CONTROL_SPEED_MOD).add(new Tuple.Pair<>(world, GameRuleHelper.getDoubleMinimum(world, RBMKKeys.KEY_CONTROL_SPEED_MOD, 0.0D))); + gameRules.get(RBMKKeys.KEY_REACTIVITY_MOD).add(new Tuple.Pair<>(world, GameRuleHelper.getDoubleMinimum(world, RBMKKeys.KEY_REACTIVITY_MOD, 0.0D))); + gameRules.get(RBMKKeys.KEY_OUTGASSER_MOD).add(new Tuple.Pair<>(world, GameRuleHelper.getDoubleMinimum(world, RBMKKeys.KEY_OUTGASSER_MOD, 0.0D))); + gameRules.get(RBMKKeys.KEY_SURGE_MOD).add(new Tuple.Pair<>(world, GameRuleHelper.getDoubleMinimum(world, RBMKKeys.KEY_SURGE_MOD, 0.0D))); + gameRules.get(RBMKKeys.KEY_FLUX_RANGE).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedInt(world, RBMKKeys.KEY_FLUX_RANGE, 1, 100))); + gameRules.get(RBMKKeys.KEY_REASIM_RANGE).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedInt(world, RBMKKeys.KEY_REASIM_RANGE, 1, 100))); + gameRules.get(RBMKKeys.KEY_REASIM_COUNT).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedInt(world, RBMKKeys.KEY_REASIM_COUNT, 1, 24))); + gameRules.get(RBMKKeys.KEY_REASIM_MOD).add(new Tuple.Pair<>(world, GameRuleHelper.getDoubleMinimum(world, RBMKKeys.KEY_REASIM_MOD, 0.0D))); + gameRules.get(RBMKKeys.KEY_REASIM_BOILERS).add(new Tuple.Pair<>(world, world.getGameRules().getGameRuleBooleanValue(RBMKKeys.KEY_REASIM_BOILERS.keyString) || (GeneralConfig.enable528 && GeneralConfig.enable528ReasimBoilers))); + gameRules.get(RBMKKeys.KEY_REASIM_BOILER_SPEED).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedDouble(world, RBMKKeys.KEY_REASIM_BOILER_SPEED, 0.0D, 1.0D))); + gameRules.get(RBMKKeys.KEY_DISABLE_MELTDOWNS).add(new Tuple.Pair<>(world, world.getGameRules().getGameRuleBooleanValue(RBMKKeys.KEY_DISABLE_MELTDOWNS.keyString))); + gameRules.get(RBMKKeys.KEY_ENABLE_MELTDOWN_OVERPRESSURE).add(new Tuple.Pair<>(world, world.getGameRules().getGameRuleBooleanValue(RBMKKeys.KEY_ENABLE_MELTDOWN_OVERPRESSURE.keyString))); + gameRules.get(RBMKKeys.KEY_MODERATOR_EFFICIENCY).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedDouble(world, RBMKKeys.KEY_MODERATOR_EFFICIENCY, 0.0D, 1.0D))); + gameRules.get(RBMKKeys.KEY_ABSORBER_EFFICIENCY).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedDouble(world, RBMKKeys.KEY_ABSORBER_EFFICIENCY, 0.0D, 1.0D))); + gameRules.get(RBMKKeys.KEY_REFLECTOR_EFFICIENCY).add(new Tuple.Pair<>(world, GameRuleHelper.getClampedDouble(world, RBMKKeys.KEY_REFLECTOR_EFFICIENCY, 0.0D, 1.0D))); + gameRules.get(RBMKKeys.KEY_DISABLE_DEPLETION).add(new Tuple.Pair<>(world, world.getGameRules().getGameRuleBooleanValue(RBMKKeys.KEY_DISABLE_DEPLETION.keyString))); + gameRules.get(RBMKKeys.KEY_DISABLE_XENON).add(new Tuple.Pair<>(world, world.getGameRules().getGameRuleBooleanValue(RBMKKeys.KEY_DISABLE_XENON.keyString))); + } + + /** + * Gets a gamerule from the internal cache. + * This will not work if called on the client. + * @param world World to get the gamerule for. + * @param rule Rule to get. + * @return The rule in an Object. + */ + public static Object getGameRule(World world, RBMKKeys rule) { + if(world.isRemote) { + MainRegistry.logger.error("Attempted to grab cached gamerules on client side, returning default value."); + MainRegistry.logger.error("Gamerule: {}, Default Value: {}.", rule.keyString, rule.defValue.toString()); + return rule.defValue; + } + return getGameRule(world, rule, false); + } + + public static Object getGameRule(World world, RBMKKeys rule, boolean isIteration) { + List> rulesList = new ArrayList<>(); + + for(Tuple.Pair rulePair : gameRules.get(rule)) { + if(rulePair.key == world) { + rulesList.add(rulePair); + } + } + + if(rulesList.isEmpty()) { + if(isIteration) + throw new NullPointerException("Cannot find gamerule for dial " + rule.keyString + " after creation."); + else { + world.getGameRules().setOrCreateGameRule(rule.keyString, rule.defValue.toString()); // fuck + refresh(world); + return getGameRule(world, rule, true); + } + } else if(rulesList.size() > 1) + // what??? why??? + MainRegistry.logger.warn("Duplicate values for gamerules detected! Found {} rules for gamerule {}", rulesList.size(), rule.keyString); + + return rulesList.get(0).value; // realistically there should only be one of this gamerule that satisfies the filter sooooo... + } + /** * Returns the amount of heat per tick removed from components passively * @param world * @return >0 */ public static double getPassiveCooling(World world) { - return Math.max(GameRuleHelper.parseDouble(world.getGameRules().getGameRuleStringValue(KEY_PASSIVE_COOLING), 1.0D), 0.0D); + return (double) getGameRule(world, RBMKKeys.KEY_PASSIVE_COOLING); } - + /** * Returns the percentual step size how quickly neighboring component heat equalizes. 1 is instant, 0.5 is in 50% steps, et cetera. * @param world * @return [0;1] */ public static double getColumnHeatFlow(World world) { - return MathHelper.clamp_double(GameRuleHelper.parseDouble(world.getGameRules().getGameRuleStringValue(KEY_COLUMN_HEAT_FLOW), 0.2D), 0.0D, 1.0D); + return (double) getGameRule(world, RBMKKeys.KEY_COLUMN_HEAT_FLOW); } - + /** * Returns a modifier for fuel rod diffusion, i.e. how quickly the core and hull temperatures equalize. * @param world * @return >0 */ public static double getFuelDiffusionMod(World world) { - return Math.max(GameRuleHelper.parseDouble(world.getGameRules().getGameRuleStringValue(KEY_FUEL_DIFFUSION_MOD), 1.0D), 0.0D); + return (double) getGameRule(world, RBMKKeys.KEY_FUEL_DIFFUSION_MOD); } - + /** * Returns the percentual step size how quickly the fuel hull heat and the component heat equalizes. 1 is instant, 0.5 is in 50% steps, et cetera. * @param world * @return [0;1] */ public static double getFuelHeatProvision(World world) { - return MathHelper.clamp_double(GameRuleHelper.parseDouble(world.getGameRules().getGameRuleStringValue(KEY_HEAT_PROVISION), 0.2D), 0.0D, 1.0D); + return (double) getGameRule(world, RBMKKeys.KEY_HEAT_PROVISION); } - + /** * Simple integer that decides how tall the structure is. * @param world * @return [0;15] */ public static int getColumnHeight(World world) { - return MathHelper.clamp_int(GameRuleHelper.parseInt(world.getGameRules().getGameRuleStringValue(KEY_COLUMN_HEIGHT), 4), 2, 16) - 1; + return (int) getGameRule(world, RBMKKeys.KEY_COLUMN_HEIGHT); } - + /** * Whether or not scrap entities despawn on their own or remain alive until picked up. * @param world * @return */ public static boolean getPermaScrap(World world) { - return world.getGameRules().getGameRuleBooleanValue(KEY_PERMANENT_SCRAP); + return (boolean) getGameRule(world, RBMKKeys.KEY_PERMANENT_SCRAP); } - + /** * How many heat units are consumed per mB water used. * @param world * @return >0 */ public static double getBoilerHeatConsumption(World world) { - return Math.max(GameRuleHelper.parseDouble(world.getGameRules().getGameRuleStringValue(KEY_BOILER_HEAT_CONSUMPTION), 0.1D), 0D); + return (double) getGameRule(world, RBMKKeys.KEY_BOILER_HEAT_CONSUMPTION); } - + /** * A multiplier for how quickly the control rods move. * @param world * @return >0 */ public static double getControlSpeed(World world) { - return Math.max(GameRuleHelper.parseDouble(world.getGameRules().getGameRuleStringValue(KEY_CONTROL_SPEED_MOD), 1.0D), 0.0D); + return (double) getGameRule(world, RBMKKeys.KEY_CONTROL_SPEED_MOD); } - + /** * A multiplier for how much flux the rods give out. * @param world * @return >0 */ public static double getReactivityMod(World world) { - return Math.max(GameRuleHelper.parseDouble(world.getGameRules().getGameRuleStringValue(KEY_REACTIVITY_MOD), 1.0D), 0.0D); + return (double) getGameRule(world, RBMKKeys.KEY_REACTIVITY_MOD); } - + /** * A multiplier for how much flux the rods give out. * @param world * @return >0 */ public static double getOutgasserMod(World world) { - return Math.max(GameRuleHelper.parseDouble(world.getGameRules().getGameRuleStringValue(KEY_OUTGASSER_MOD), 1.0D), 0.0D); + return (double) getGameRule(world, RBMKKeys.KEY_OUTGASSER_MOD); } - + /** * A multiplier for how high the power surge goes when inserting control rods. * @param world * @return >0 */ public static double getSurgeMod(World world) { - return Math.max(GameRuleHelper.parseDouble(world.getGameRules().getGameRuleStringValue(KEY_SURGE_MOD), 1.0D), 0.0D); + if(world.isRemote) { // The control rods use this gamerule for RBMK diag, which happens to be calculated on the client side. whoops! + return GameRuleHelper.getDoubleMinimum(world, RBMKKeys.KEY_PASSIVE_COOLING, 0.0D); + } + return (double) getGameRule(world, RBMKKeys.KEY_SURGE_MOD); } - + /** * Simple integer that decides how far the flux of a normal fuel rod reaches. * @param world * @return [1;100] */ public static int getFluxRange(World world) { - return MathHelper.clamp_int(GameRuleHelper.parseInt(world.getGameRules().getGameRuleStringValue(KEY_FLUX_RANGE), 5), 1, 100); + return (int) getGameRule(world, RBMKKeys.KEY_FLUX_RANGE); } - + /** * Simple integer that decides how far the flux of a ReaSim fuel rod reaches. * @param world * @return [1;100] */ public static int getReaSimRange(World world) { - return MathHelper.clamp_int(GameRuleHelper.parseInt(world.getGameRules().getGameRuleStringValue(KEY_REASIM_RANGE), 10), 1, 100); + return (int) getGameRule(world, RBMKKeys.KEY_REASIM_RANGE); } - + /** * Simple integer that decides how many neutrons are created from ReaSim fuel rods. * @param world * @return [1;24] */ public static int getReaSimCount(World world) { - return MathHelper.clamp_int(GameRuleHelper.parseInt(world.getGameRules().getGameRuleStringValue(KEY_REASIM_COUNT), 6), 1, 24); + return (int) getGameRule(world, RBMKKeys.KEY_REASIM_COUNT); } - + /** * Returns a modifier for the outgoing flux of individual streams from the ReaSim fuel rod to compensate for the potentially increased stream count. * @param world * @return >0 */ public static double getReaSimOutputMod(World world) { - return Math.max(GameRuleHelper.parseDouble(world.getGameRules().getGameRuleStringValue(KEY_REASIM_MOD), 1.0D), 0.0D); + return (double) getGameRule(world, RBMKKeys.KEY_REASIM_MOD); } - + /** * Whether or not all components should act like boilers with dedicated in/outlet blocks * @param world * @return */ public static boolean getReasimBoilers(World world) { - return world.getGameRules().getGameRuleBooleanValue(KEY_REASIM_BOILERS) || (GeneralConfig.enable528 && GeneralConfig.enable528ReasimBoilers); + return (boolean) getGameRule(world, RBMKKeys.KEY_REASIM_BOILERS); } - + /** * How much % of the possible steam ends up being produced per tick * @param world * @return [0;1] */ public static double getReaSimBoilerSpeed(World world) { - return MathHelper.clamp_double(GameRuleHelper.parseDouble(world.getGameRules().getGameRuleStringValue(KEY_REASIM_BOILER_SPEED), 0.05D), 0.0D, 1.0D); + return (double) getGameRule(world, RBMKKeys.KEY_REASIM_BOILER_SPEED); } - + /** * Whether or not fuel columns should initiate a meltdown when overheating * The method is in reverse because the default for older worlds will be 'false' @@ -218,15 +317,60 @@ public class RBMKDials { * @return */ public static boolean getMeltdownsDisabled(World world) { - return world.getGameRules().getGameRuleBooleanValue(KEY_DISABLE_MELTDOWNS); + return (boolean) getGameRule(world, RBMKKeys.KEY_DISABLE_MELTDOWNS); } - + /** * Whether or not connected pipes and turbines should explode when the reactor undergoes a meltdown. * @param world * @return */ public static boolean getOverpressure(World world) { - return world.getGameRules().getGameRuleBooleanValue(KEY_ENABLE_MELTDOWN_OVERPRESSURE); + return (boolean) getGameRule(world, RBMKKeys.KEY_ENABLE_MELTDOWN_OVERPRESSURE); + } + + /** + * The percentage of neutrons to moderate from fast to slow when they pass through a moderator. + * @param world + * @return + */ + public static double getModeratorEfficiency(World world) { + return (double) getGameRule(world, RBMKKeys.KEY_MODERATOR_EFFICIENCY); + } + + /** + * The percentage of neutrons to be absorbed when a stream hits an absorber column. + * @param world + * @return + */ + public static double getAbsorberEfficiency(World world) { + return (double) getGameRule(world, RBMKKeys.KEY_ABSORBER_EFFICIENCY); + } + + /** + * The percentage of neutron to reflect when a stream hits a reflector column. + * @param world + * @return + */ + public static double getReflectorEfficiency(World world) { + return (double) getGameRule(world, RBMKKeys.KEY_REFLECTOR_EFFICIENCY); + } + + /** + * Whether fuel rods should deplete, disabling this makes rods last forever + * @param world + * @return + */ + public static boolean getDepletion(World world) { + return !((boolean) getGameRule(world, RBMKKeys.KEY_DISABLE_DEPLETION)); + } + + /** + * Whether xenon poison should be calculated + * @param world + * @return + */ + public static boolean getXenon(World world) { + return !((boolean) getGameRule(world, RBMKKeys.KEY_DISABLE_XENON)); } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java index 57bc990bc..120efd4f5 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java @@ -6,13 +6,11 @@ import com.hbm.extprop.HbmPlayerProps; import com.hbm.handler.CompatHandler; import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.items.machine.ItemRBMKRod; -import com.hbm.packet.NBTPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.TileEntityLoadedBase; 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 io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -21,7 +19,6 @@ import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; 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; @@ -29,21 +26,23 @@ import net.minecraftforge.common.util.ForgeDirection; import java.util.List; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityCraneConsole extends TileEntity implements INBTPacketReceiver, SimpleComponent, CompatHandler.OCComponent { - +public class TileEntityCraneConsole extends TileEntityLoadedBase implements SimpleComponent, CompatHandler.OCComponent { + public int centerX; public int centerY; public int centerZ; - + public int spanF; public int spanB; public int spanL; public int spanR; - + public int height; - + public boolean setUpCrane = false; + public int craneRotationOffset = 0; + public double lastTiltFront = 0; public double lastTiltLeft = 0; public double tiltFront = 0; @@ -54,11 +53,11 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece public double posFront = 0; public double posLeft = 0; private static final double speed = 0.05D; - + private boolean goesDown = false; public double lastProgress = 1D; public double progress = 1D; - + private ItemStack loadedItem; private boolean hasLoaded = false; public double loadedHeat; @@ -71,15 +70,15 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece lastTiltFront = tiltFront; lastTiltLeft = tiltLeft; } - + if(goesDown) { - + if(progress > 0) { progress -= 0.04D; } else { progress = 0; goesDown = false; - + if(!worldObj.isRemote && this.canTargetInteract()) { IRBMKLoadable column = getColumnAtPos(); if(column != null) { // canTargetInteract already assumes this, but there seems to be some freak race conditions that cause the column to be null anyway @@ -90,16 +89,16 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece this.loadedItem = column.provideNext(); column.unload(); } - + this.markDirty(); } } - + } } else if(progress != 1) { - + progress += 0.04D; - + if(progress > 1D) { progress = 1D; } @@ -111,7 +110,7 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece double maxX = xCoord + 0.5 + side.offsetX * 1.5 + dir.offsetX * 2; double minZ = zCoord + 0.5 - side.offsetZ * 1.5; double maxZ = zCoord + 0.5 + side.offsetZ * 1.5 + dir.offsetZ * 2; - + List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox( Math.min(minX, maxX), yCoord, @@ -121,7 +120,7 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece Math.max(minZ, maxZ))); tiltFront = 0; tiltLeft = 0; - + if(players.size() > 0 && !isCraneLoading()) { EntityPlayer player = players.get(0); HbmPlayerProps props = HbmPlayerProps.getData(player); @@ -129,7 +128,7 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece boolean down = props.getKeyPressed(EnumKeybind.CRANE_DOWN); boolean left = props.getKeyPressed(EnumKeybind.CRANE_LEFT); boolean right = props.getKeyPressed(EnumKeybind.CRANE_RIGHT); - + if(up && !down) { tiltFront = 30; if(!worldObj.isRemote) posFront += speed; @@ -146,17 +145,17 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece tiltLeft = -30; if(!worldObj.isRemote) posLeft -= speed; } - + if(props.getKeyPressed(EnumKeybind.CRANE_LOAD)) { goesDown = true; } } - + posFront = MathHelper.clamp_double(posFront, -spanB, spanF); posLeft = MathHelper.clamp_double(posLeft, -spanR, spanL); - + if(!worldObj.isRemote) { - + if(loadedItem != null && loadedItem.getItem() instanceof ItemRBMKRod) { this.loadedHeat = ItemRBMKRod.getHullHeat(loadedItem); this.loadedEnrichment = ItemRBMKRod.getEnrichment(loadedItem); @@ -164,72 +163,54 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece this.loadedHeat = 0; this.loadedEnrichment = 0; } - - NBTTagCompound nbt = new NBTTagCompound(); - nbt.setBoolean("crane", setUpCrane); - - if(setUpCrane) { //no need to send any of this if there's NO FUCKING CRANE THERE - nbt.setInteger("centerX", centerX); - nbt.setInteger("centerY", centerY); - nbt.setInteger("centerZ", centerZ); - nbt.setInteger("spanF", spanF); - nbt.setInteger("spanB", spanB); - nbt.setInteger("spanL", spanL); - nbt.setInteger("spanR", spanR); - nbt.setInteger("height", height); - nbt.setDouble("posFront", posFront); - nbt.setDouble("posLeft", posLeft); - nbt.setBoolean("loaded", this.hasItemLoaded()); - nbt.setDouble("loadedHeat", loadedHeat); - nbt.setDouble("loadedEnrichment", loadedEnrichment); - } - PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 250)); + + networkPackNT(250); } } - + public boolean hasItemLoaded() { - + if(!worldObj.isRemote) return this.loadedItem != null; else return this.hasLoaded; } - + public boolean isCraneLoading() { return this.progress != 1D; } - + public boolean isAboveValidTarget() { return getColumnAtPos() != null; } - + public boolean canTargetInteract() { - + IRBMKLoadable column = getColumnAtPos(); - + if(column == null) return false; - + if(this.hasItemLoaded()) { return column.canLoad(loadedItem); } else { return column.canUnload(); } } - + public IRBMKLoadable getColumnAtPos() { - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection left = dir.getRotation(ForgeDirection.DOWN); int x = (int)Math.floor(this.centerX - dir.offsetX * this.posFront - left.offsetX * this.posLeft + 0.5D); int y = this.centerY - 1; int z = (int)Math.floor(this.centerZ - dir.offsetZ * this.posFront - left.offsetZ * this.posLeft + 0.5D); - + Block b = worldObj.getBlock(x, y, z); - + if(b instanceof RBMKBase) { - + int[] pos = ((BlockDummyable)b).findCore(worldObj, x, y, z); if(pos != null) { TileEntityRBMKBase column = (TileEntityRBMKBase)worldObj.getTileEntity(pos[0], pos[1], pos[2]); @@ -238,34 +219,57 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece } } } - + return null; } @Override - public void networkUnpack(NBTTagCompound nbt) { - + public void serialize(ByteBuf buf) { + buf.writeBoolean(this.setUpCrane); + + if(this.setUpCrane) { //no need to send any of this if there's NO FUCKING CRANE THERE + buf.writeInt(this.craneRotationOffset); + buf.writeInt(this.centerX); + buf.writeInt(this.centerY); + buf.writeInt(this.centerZ); + buf.writeInt(this.spanF); + buf.writeInt(this.spanB); + buf.writeInt(this.spanL); + buf.writeInt(this.spanR); + buf.writeInt(this.height); + buf.writeDouble(this.posFront); + buf.writeDouble(this.posLeft); + buf.writeBoolean(this.hasItemLoaded()); + buf.writeDouble(this.loadedHeat); + buf.writeDouble(this.loadedEnrichment); + } + } + + @Override + public void deserialize(ByteBuf buf) { lastPosFront = posFront; lastPosLeft = posLeft; lastProgress = progress; - - this.setUpCrane = nbt.getBoolean("crane"); - this.centerX = nbt.getInteger("centerX"); - this.centerY = nbt.getInteger("centerY"); - this.centerZ = nbt.getInteger("centerZ"); - this.spanF = nbt.getInteger("spanF"); - this.spanB = nbt.getInteger("spanB"); - this.spanL = nbt.getInteger("spanL"); - this.spanR = nbt.getInteger("spanR"); - this.height = nbt.getInteger("height"); - this.posFront = nbt.getDouble("posFront"); - this.posLeft = nbt.getDouble("posLeft"); - this.hasLoaded = nbt.getBoolean("loaded"); - this.posLeft = nbt.getDouble("posLeft"); - this.loadedHeat = nbt.getDouble("loadedHeat"); - this.loadedEnrichment = nbt.getDouble("loadedEnrichment"); + + this.setUpCrane = buf.readBoolean(); + if (this.setUpCrane) { + this.craneRotationOffset = buf.readInt(); + this.centerX = buf.readInt(); + this.centerY = buf.readInt(); + this.centerZ = buf.readInt(); + this.spanF = buf.readInt(); + this.spanB = buf.readInt(); + this.spanL = buf.readInt(); + this.spanR = buf.readInt(); + this.height = buf.readInt(); + this.posFront = buf.readDouble(); + this.posLeft = buf.readDouble(); + this.hasLoaded = buf.readBoolean(); + this.loadedHeat = buf.readDouble(); + this.loadedEnrichment = buf.readDouble(); + } } - + public void setTarget(int x, int y, int z) { this.centerX = x; this.centerY = y + RBMKDials.getColumnHeight(worldObj) + 1; @@ -275,18 +279,24 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece this.spanB = 7; this.spanL = 7; this.spanR = 7; - + this.height = 7; + this.setUpCrane = true; - + this.markDirty(); } - + + public void cycleCraneRotation() { + this.craneRotationOffset = (this.craneRotationOffset + 90) % 360; + } + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); this.setUpCrane = nbt.getBoolean("crane"); + this.craneRotationOffset = nbt.getInteger("craneRotationOffset"); this.centerX = nbt.getInteger("centerX"); this.centerY = nbt.getInteger("centerY"); this.centerZ = nbt.getInteger("centerZ"); @@ -297,16 +307,17 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece this.height = nbt.getInteger("height"); this.posFront = nbt.getDouble("posFront"); this.posLeft = nbt.getDouble("posLeft"); - + NBTTagCompound held = nbt.getCompoundTag("held"); this.loadedItem = ItemStack.loadItemStackFromNBT(held); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setBoolean("crane", setUpCrane); + nbt.setInteger("craneRotationOffset", craneRotationOffset); nbt.setInteger("centerX", centerX); nbt.setInteger("centerY", centerY); nbt.setInteger("centerZ", centerZ); @@ -317,25 +328,25 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece nbt.setInteger("height", height); nbt.setDouble("posFront", posFront); nbt.setDouble("posLeft", posLeft); - + if(this.loadedItem != null) { NBTTagCompound held = new NBTTagCompound(); this.loadedItem.writeToNBT(held); nbt.setTag("held", held); } } - + @Override public AxisAlignedBB getRenderBoundingBox() { return this.INFINITE_EXTENT_AABB; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { return 65536.0D; } - + // do some opencomputer stuff @Override @Optional.Method(modid = "OpenComputers") @@ -367,12 +378,12 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece if(!worldObj.isRemote) posLeft -= speed; break; } - + return new Object[] {}; } return new Object[] {"Crane not found"}; } - + @Callback @Optional.Method(modid = "OpenComputers") public Object[] load(Context context, Arguments args) { diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAbsorber.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAbsorber.java index 20512c206..d1c585539 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAbsorber.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAbsorber.java @@ -1,10 +1,11 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; +import com.hbm.handler.neutron.RBMKNeutronHandler.RBMKType; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; public class TileEntityRBMKAbsorber extends TileEntityRBMKBase { - + @Override public void onMelt(int reduce) { @@ -17,6 +18,11 @@ public class TileEntityRBMKAbsorber extends TileEntityRBMKBase { super.onMelt(reduce); } + @Override + public RBMKType getRBMKType() { + return RBMKType.ABSORBER; + } + @Override public ColumnType getConsoleType() { return ColumnType.ABSORBER; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java index 44703c013..f345b29b5 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java @@ -8,20 +8,24 @@ import com.hbm.blocks.machine.rbmk.RBMKBase; import com.hbm.entity.effect.EntitySpear; import com.hbm.entity.projectile.EntityRBMKDebris; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; +import com.hbm.handler.neutron.NeutronNodeWorld; +import com.hbm.handler.neutron.RBMKNeutronHandler.RBMKType; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.saveddata.TomSaveData; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IOverpressurable; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; +import com.hbm.util.BobMathUtil; import com.hbm.util.Compat; import com.hbm.util.I18nUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Gui; @@ -38,34 +42,39 @@ import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.common.util.ForgeDirection; import org.lwjgl.opengl.GL11; -import java.util.*; +import java.util.List; +import java.util.Arrays; +import java.util.ArrayList; +import java.util.Set; +import java.util.HashSet; +import java.util.Iterator; /** * Base class for all RBMK components, active or passive. Handles heat and the explosion sequence * @author hbm * */ -public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements INBTPacketReceiver { - +public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements IBufPacketReceiver { + public double heat; - + public int water; public static final int maxWater = 16000; public int steam; public static final int maxSteam = 16000; public boolean hasLid() { - + if(!isLidRemovable()) return true; - + return this.getBlockMetadata() != RBMKBase.DIR_NO_LID.ordinal() + RBMKBase.offset; } public boolean isLidRemovable() { return true; } - + /** * Approx melting point of steel * Fuels often burn much hotter than this but it won't affect the column too much due to low diffusion @@ -74,7 +83,7 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements public double maxHeat() { return 1500D; } - + /** * Around the same for every component except boilers which do not have passive cooling * @return @@ -82,22 +91,22 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements public double passiveCooling() { return RBMKDials.getPassiveCooling(worldObj); //default: 1.0D } - + //necessary checks to figure out whether players are close enough to ensure that the reactor can be safely used public boolean shouldUpdate() { return true; } - + //unused public int trackingRange() { return 15; } - + @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + this.worldObj.theProfiler.startSection("rbmkBase_heat_movement"); moveHeat(); if(RBMKDials.getReasimBoilers(worldObj)) { @@ -108,73 +117,76 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements this.worldObj.theProfiler.endStartSection("rbmkBase_rpassive_cooling"); coolPassively(); this.worldObj.theProfiler.endSection(); - - NBTTagCompound data = new NBTTagCompound(); - this.writeToNBT(data); - this.networkPack(data, trackingRange()); + + this.networkPackNT(trackingRange()); } } - + /** * The ReaSim boiler dial causes all RBMK parts to behave like boilers */ private void boilWater() { - + if(heat < 100D) return; - + double heatConsumption = RBMKDials.getBoilerHeatConsumption(worldObj); double availableHeat = (this.heat - 100) / heatConsumption; double availableWater = this.water; double availableSpace = this.maxSteam - this.steam; - - int processedWater = (int) Math.floor(Math.min(availableHeat, Math.min(availableWater, availableSpace)) * RBMKDials.getReaSimBoilerSpeed(worldObj)); + + int processedWater = (int) Math.floor(BobMathUtil.min(availableHeat, availableWater, availableSpace) * MathHelper.clamp_double(RBMKDials.getReaSimBoilerSpeed(worldObj), 0D, 1D)); + + if(processedWater <= 0) return; this.water -= processedWater; this.steam += processedWater; this.heat -= processedWater * heatConsumption; } - + public static final ForgeDirection[] neighborDirs = new ForgeDirection[] { ForgeDirection.NORTH, ForgeDirection.EAST, ForgeDirection.SOUTH, ForgeDirection.WEST }; - + protected TileEntityRBMKBase[] neighborCache = new TileEntityRBMKBase[4]; - + /** * Moves heat to neighboring parts, if possible, in a relatively fair manner */ private void moveHeat() { - + + if(heat == 20 && RBMKDials.getReasimBoilers(worldObj)) + return; + List rec = new ArrayList(); rec.add(this); double heatTot = this.heat; int waterTot = this.water; int steamTot = this.steam; - + int index = 0; for(ForgeDirection dir : neighborDirs) { - + if(neighborCache[index] != null && neighborCache[index].isInvalid()) neighborCache[index] = null; - + if(neighborCache[index] == null) { TileEntity te = Compat.getTileStandard(worldObj, xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ); - + if(te instanceof TileEntityRBMKBase) { TileEntityRBMKBase base = (TileEntityRBMKBase) te; neighborCache[index] = base; } } - + index++; } - + for(TileEntityRBMKBase base : neighborCache) { - + if(base != null) { rec.add(base); heatTot += base.heat; @@ -182,44 +194,51 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements steamTot += base.steam; } } - + int members = rec.size(); double stepSize = RBMKDials.getColumnHeatFlow(worldObj); - + if(members > 1) { - + double targetHeat = heatTot / (double)members; - + int tWater = waterTot / members; int rWater = waterTot % members; int tSteam = steamTot / members; int rSteam = steamTot % members; - + for(TileEntityRBMKBase rbmk : rec) { double delta = targetHeat - rbmk.heat; rbmk.heat += delta * stepSize; - + //set to the averages, rounded down rbmk.water = tWater; rbmk.steam = tSteam; } - + //add the modulo to make up for the losses coming from rounding this.water += rWater; this.steam += rSteam; - + this.markDirty(); } } - + + @Override + public void invalidate() { + super.invalidate(); + + NeutronNodeWorld.removeNode(new BlockPos(this)); // woo-fucking-hoo!!! + } + @Override public void markDirty() { - + if(this.worldObj != null) { this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); } } - + protected void coolPassively() { if(TomSaveData.forWorld(worldObj).fire > 1e-5) { @@ -228,18 +247,22 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements this.heat += this.passiveCooling() * 2; } } - + this.heat -= this.passiveCooling(); - + if(heat < 20) heat = 20D; } - + + public RBMKType getRBMKType() { + return RBMKType.OTHER; + } + protected static boolean diag = false; - + @Override public void readFromNBT(NBTTagCompound nbt) { - + if(!diag) { super.readFromNBT(nbt); } @@ -248,40 +271,39 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements this.water = nbt.getInteger("water"); this.steam = nbt.getInteger("steam"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { - + if(!diag) { super.writeToNBT(nbt); } - + nbt.setDouble("heat", this.heat); nbt.setInteger("water", this.water); nbt.setInteger("steam", this.steam); } - - public void networkPack(NBTTagCompound nbt, int range) { - diag = true; - if(!worldObj.isRemote) - PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); - diag = false; + @Override + public void serialize(ByteBuf buf) { + buf.writeDouble(this.heat); + buf.writeInt(this.water); + buf.writeInt(this.steam); } - - public void networkUnpack(NBTTagCompound nbt) { - - diag = true; - this.readFromNBT(nbt); - diag = false; + + @Override + public void deserialize(ByteBuf buf) { + this.heat = buf.readDouble(); + this.water = buf.readInt(); + this.steam = buf.readInt(); } - + public void getDiagData(NBTTagCompound nbt) { diag = true; this.writeToNBT(nbt); diag = false; } - + @SideOnly(Side.CLIENT) public static void diagnosticPrintHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) { @@ -310,6 +332,7 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements exceptions.add("z"); exceptions.add("items"); exceptions.add("id"); + exceptions.add("muffled"); String title = "Dump of Ordered Data Diagnostic (DODD)"; mc.fontRenderer.drawString(title, pX + 1, pZ - 19, 0x006000); @@ -336,80 +359,80 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements GL11.glPopMatrix(); Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons); } - + public void onOverheat() { - + for(int i = 0; i < 4; i++) { worldObj.setBlock(xCoord, yCoord + i, zCoord, Blocks.lava); } } - + public void onMelt(int reduce) { - + standardMelt(reduce); - + if(this.getBlockMetadata() == RBMKBase.DIR_NORMAL_LID.ordinal() + RBMKBase.offset) spawnDebris(DebrisType.LID); } - + protected void standardMelt(int reduce) { - + int h = RBMKDials.getColumnHeight(worldObj); reduce = MathHelper.clamp_int(reduce, 1, h); - + if(worldObj.rand.nextInt(3) == 0) reduce++; - + for(int i = h; i >= 0; i--) { - + if(i <= h + 1 - reduce) { - + if(reduce > 1 && i == h + 1 - reduce) { worldObj.setBlock(xCoord, yCoord + i, zCoord, ModBlocks.pribris_burning); } else { worldObj.setBlock(xCoord, yCoord + i, zCoord, ModBlocks.pribris); } - + } else { worldObj.setBlock(xCoord, yCoord + i, zCoord, Blocks.air); } worldObj.markBlockForUpdate(xCoord, yCoord + i, zCoord); } } - + protected void spawnDebris(DebrisType type) { EntityRBMKDebris debris = new EntityRBMKDebris(worldObj, xCoord + 0.5D, yCoord + 4D, zCoord + 0.5D, type); debris.motionX = worldObj.rand.nextGaussian() * 0.25D; debris.motionZ = worldObj.rand.nextGaussian() * 0.25D; debris.motionY = 0.25D + worldObj.rand.nextDouble() * 1.25D; - + if(type == DebrisType.LID) { debris.motionX *= 0.5D; debris.motionY += 0.5D; debris.motionZ *= 0.5D; } - + worldObj.spawnEntityInWorld(debris); } - + public static HashSet columns = new HashSet(); public static HashSet pipes = new HashSet(); - + //assumes that !worldObj.isRemote public void meltdown() { - + RBMKBase.dropLids = false; - + columns.clear(); pipes.clear(); getFF(xCoord, yCoord, zCoord); - + int minX = xCoord; int maxX = xCoord; int minZ = zCoord; int maxZ = zCoord; - + //set meltdown bounds for(TileEntityRBMKBase rbmk : columns) { @@ -422,31 +445,31 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements if(rbmk.zCoord > maxZ) maxZ = rbmk.zCoord; } - + for(TileEntityRBMKBase rbmk : columns) { int distFromMinX = rbmk.xCoord - minX; int distFromMaxX = maxX - rbmk.xCoord; int distFromMinZ = rbmk.zCoord - minZ; int distFromMaxZ = maxZ - rbmk.zCoord; - + int minDist = Math.min(distFromMinX, Math.min(distFromMaxX, Math.min(distFromMinZ, distFromMaxZ))); - + rbmk.onMelt(minDist + 1); } - + for(TileEntityRBMKBase rbmk : columns) { - + if(rbmk instanceof TileEntityRBMKRod && worldObj.getBlock(rbmk.xCoord, rbmk.yCoord, rbmk.zCoord) == ModBlocks.corium_block) { - + for(int x = rbmk.xCoord - 1; x <= rbmk.xCoord + 1; x ++) { for(int y = rbmk.yCoord - 1; y <= rbmk.yCoord + 1; y ++) { for(int z = rbmk.zCoord - 1; z <= rbmk.zCoord + 1; z ++) { - + Block b = worldObj.getBlock(x, y, z); - + if(worldObj.rand.nextInt(3) == 0 && (b == ModBlocks.pribris || b == ModBlocks.pribris_burning)) { - + if(RBMKBase.digamma) worldObj.setBlock(x, y, z, ModBlocks.pribris_digamma); else @@ -457,23 +480,23 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements } } } - + /* Hanlde overpressure event */ if(RBMKDials.getOverpressure(worldObj) && !pipes.isEmpty()) { HashSet pipeBlocks = new HashSet(); HashSet pipeReceivers = new HashSet(); - + //unify all parts into single sets to prevent redundancy pipes.forEach(x -> { pipeBlocks.addAll(x.getLinks()); pipeReceivers.addAll(x.getSubscribers()); }); - + int count = 0; int max = Math.min(pipeBlocks.size() / 5, 100); Iterator itPipes = pipeBlocks.iterator(); Iterator itReceivers = pipeReceivers.iterator(); - + while(itPipes.hasNext() && count < max) { IFluidConductor pipe = itPipes.next(); if(pipe instanceof TileEntity) { @@ -482,7 +505,7 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements } count++; } - + while(itReceivers.hasNext()) { IFluidConnector con = itReceivers.next(); if(con instanceof TileEntity) { @@ -496,26 +519,26 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements } } } - + int smallDim = Math.min(maxX - minX, maxZ - minZ); int avgX = minX + (maxX - minX) / 2; int avgZ = minZ + (maxZ - minZ) / 2; - + NBTTagCompound data = new NBTTagCompound(); data.setString("type", "rbmkmush"); data.setFloat("scale", smallDim); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, avgX + 0.5, yCoord + 1, avgZ + 0.5), new TargetPoint(worldObj.provider.dimensionId,avgX + 0.5, yCoord + 1, avgZ + 0.5, 250)); MainRegistry.proxy.effectNT(data); - + worldObj.playSoundEffect(avgX + 0.5, yCoord + 1, avgZ + 0.5, "hbm:block.rbmk_explosion", 50.0F, 1.0F); - + List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5).expand(50, 50, 50)); - + for(EntityPlayer player : players) { player.triggerAchievement(MainRegistry.achRBMKBoom); } - + if(RBMKBase.digamma) { EntitySpear spear = new EntitySpear(worldObj); spear.posX = avgX + 0.5; @@ -523,19 +546,19 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements spear.posY = yCoord + 100; worldObj.spawnEntityInWorld(spear); } - + RBMKBase.dropLids = true; RBMKBase.digamma = false; } - + private void getFF(int x, int y, int z) { - + TileEntity te = Compat.getTileStandard(worldObj, x, y, z); - + if(te instanceof TileEntityRBMKBase) { - + TileEntityRBMKBase rbmk = (TileEntityRBMKBase) te; - + if(!columns.contains(rbmk)) { columns.add(rbmk); getFF(x + 1, y, z); @@ -545,21 +568,21 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements } } } - + public boolean isModerated() { return false; } - + public abstract ColumnType getConsoleType(); - + public NBTTagCompound getNBTForConsole() { return null; } - + public static List getFancyStats(NBTTagCompound nbt) { return null; } - + @Override public AxisAlignedBB getRenderBoundingBox() { return AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 17, zCoord + 1); 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 7a1a6ec0b..14f8a8b15 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -21,11 +21,11 @@ import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; 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; import net.minecraft.nbt.NBTTagCompound; @@ -163,6 +163,20 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I steam.writeToNBT(nbt, "steam"); } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + steam.serialize(buf); + feed.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.steam.deserialize(buf); + this.feed.deserialize(buf); + } + @Override public boolean hasPermission(EntityPlayer player) { return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20; @@ -308,7 +322,7 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIRBMKBoiler(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java index ffbaea36f..f41643047 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java @@ -14,6 +14,7 @@ import com.hbm.inventory.gui.GUIRBMKConsole; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlManual.RBMKColor; +import com.hbm.util.BufferUtil; import com.hbm.util.Compat; import com.hbm.util.EnumUtil; import com.hbm.util.I18nUtil; @@ -21,7 +22,7 @@ import com.hbm.util.I18nUtil; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; @@ -77,8 +78,8 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon this.worldObj.theProfiler.endSection(); prepareScreenInfo(); } - - prepareNetworkPack(); + + this.networkPackNT(50); } } @@ -103,7 +104,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon if(te instanceof TileEntityRBMKRod) { TileEntityRBMKRod fuel = (TileEntityRBMKRod) te; - flux += fuel.fluxFast + fuel.fluxSlow; + flux += fuel.lastFluxQuantity; } } else { @@ -185,66 +186,65 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon screen.display = text; } } - - private void prepareNetworkPack() { - - NBTTagCompound data = new NBTTagCompound(); - - if(this.worldObj.getTotalWorldTime() % 10 == 0) { - - data.setBoolean("full", true); - - for(int i = 0; i < columns.length; i++) { - - if(this.columns[i] != null) { - data.setTag("column_" + i, this.columns[i].data); - data.setShort("type_" + i, (short)this.columns[i].type.ordinal()); - } - } - - data.setIntArray("flux", this.fluxBuffer); - - for(int i = 0; i < this.screens.length; i++) { - RBMKScreen screen = screens[i]; - if(screen.display != null) { - data.setString("t" + i, screen.display); - } - } - } - - for(int i = 0; i < this.screens.length; i++) { - RBMKScreen screen = screens[i]; - data.setByte("s" + i, (byte) screen.type.ordinal()); - } - - this.networkPack(data, 50); - } - @Override - public void networkUnpack(NBTTagCompound data) { - - if(data.getBoolean("full")) { - this.columns = new RBMKColumn[15 * 15]; - - for(int i = 0; i < columns.length; i++) { - - if(data.hasKey("type_" + i)) { - this.columns[i] = new RBMKColumn(ColumnType.values()[data.getShort("type_" + i)], (NBTTagCompound)data.getTag("column_" + i)); + public void serialize(ByteBuf buf) { + super.serialize(buf); + + if (this.worldObj.getTotalWorldTime() % 10 == 0) { + buf.writeBoolean(true); + + for (RBMKColumn column : this.columns) { + if (column == null || column.type == null) + buf.writeByte(-1); + else { + buf.writeByte((byte) column.type.ordinal()); + BufferUtil.writeNBT(buf, column.data); } } - - this.fluxBuffer = data.getIntArray("flux"); - - for(int i = 0; i < this.screens.length; i++) { - RBMKScreen screen = screens[i]; - screen.display = data.getString("t" + i); + + BufferUtil.writeIntArray(buf, fluxBuffer); + + for (RBMKScreen screen : this.screens) { + BufferUtil.writeString(buf, screen.display); + } + + } else { + + buf.writeBoolean(false); + + for (RBMKScreen screen : screens) { + buf.writeByte((byte) screen.type.ordinal()); } } - - for(int i = 0; i < this.screens.length; i++) { - RBMKScreen screen = screens[i]; - screen.type = ScreenType.values()[data.getByte("s" + i)]; + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + + if (buf.readBoolean()) { // check if it should be a full packet + + for(int i = 0; i < this.columns.length; i++) { + byte ordinal = buf.readByte(); + if (ordinal == -1) + this.columns[i] = null; + else + this.columns[i] = new RBMKColumn(ColumnType.values()[ordinal], BufferUtil.readNBT(buf)); + } + + this.fluxBuffer = BufferUtil.readIntArray(buf); + + for (RBMKScreen screen : this.screens) { + screen.display = BufferUtil.readString(buf); + } + + } else { + + for (RBMKScreen screen : this.screens) { + screen.type = ScreenType.values()[buf.readByte()]; + } + } } @@ -516,7 +516,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIRBMKConsole(player.inventory, this); } @@ -556,8 +556,8 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon if(te instanceof TileEntityRBMKRod){ TileEntityRBMKRod fuelChannel = (TileEntityRBMKRod)te; - data_table.put("fluxSlow", fuelChannel.fluxSlow); - data_table.put("fluxFast", fuelChannel.fluxFast); + data_table.put("fluxQuantity", fuelChannel.lastFluxQuantity); + data_table.put("fluxRatio", fuelChannel.fluxRatio); } if(te instanceof TileEntityRBMKBoiler){ diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java index 4b3f79c15..9e6d43868 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java @@ -2,9 +2,11 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; import com.hbm.handler.CompatHandler; +import com.hbm.handler.neutron.RBMKNeutronHandler.RBMKType; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -87,6 +89,20 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im nbt.setDouble("level", this.level); nbt.setDouble("targetLevel", this.targetLevel); } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeDouble(this.level); + buf.writeDouble(this.targetLevel); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.level = buf.readDouble(); + this.targetLevel = buf.readDouble(); + } @Override @SideOnly(Side.CLIENT) @@ -115,6 +131,11 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im this.standardMelt(reduce); } + @Override + public RBMKType getRBMKType() { + return RBMKType.CONTROL_ROD; + } + @Override public NBTTagCompound getNBTForConsole() { NBTTagCompound data = new NBTTagCompound(); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java index dc4159964..3da017e91 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java @@ -8,7 +8,7 @@ import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlManual.RBMKColor; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; @@ -105,6 +105,24 @@ public class TileEntityRBMKControlAuto extends TileEntityRBMKControl implements nbt.setInteger("function", function.ordinal()); } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeDouble(this.levelLower); + buf.writeDouble(this.levelUpper); + buf.writeDouble(this.heatLower); + buf.writeDouble(this.heatUpper); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.levelLower = buf.readDouble(); + this.levelUpper = buf.readDouble(); + this.heatLower = buf.readDouble(); + this.heatUpper = buf.readDouble(); + } + @Override public void receiveControl(NBTTagCompound data) { @@ -141,7 +159,7 @@ public class TileEntityRBMKControlAuto extends TileEntityRBMKControl implements @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIRBMKControlAuto(player.inventory, this); } } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java index 92ec4377e..b34f99a5e 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java @@ -9,10 +9,10 @@ import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; @@ -91,7 +91,7 @@ public class TileEntityRBMKControlManual extends TileEntityRBMKControl implement if(nbt.hasKey("startingLevel")) this.startingLevel = nbt.getDouble("startingLevel"); - + if(nbt.hasKey("color")) this.color = RBMKColor.values()[nbt.getInteger("color")]; else @@ -108,6 +108,24 @@ public class TileEntityRBMKControlManual extends TileEntityRBMKControl implement if(color != null) nbt.setInteger("color", color.ordinal()); } + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeDouble(this.startingLevel); + if(this.color != null) + buf.writeInt(this.color.ordinal()); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.startingLevel = buf.readDouble(); + if(buf.isReadable(1)) { + int color = buf.readInt(); + this.color = RBMKColor.values()[MathHelper.clamp_int(color, 0, RBMKColor.values().length)]; + } + } public static enum RBMKColor { RED, @@ -157,7 +175,7 @@ public class TileEntityRBMKControlManual extends TileEntityRBMKControl implement @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIRBMKControl(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java index bd7250cf7..fe3ddc71d 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java @@ -7,6 +7,7 @@ import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.Library; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import cpw.mods.fml.common.Optional; +import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -101,6 +102,20 @@ public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidSt nbt.setInteger("cooled", this.lastCooled); } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + this.tank.serialize(buf); + buf.writeInt(this.lastCooled); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.tank.deserialize(buf); + this.lastCooled = buf.readInt(); + } + @Override public ColumnType getConsoleType() { return ColumnType.COOLER; 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 941fb9637..3965ea170 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java @@ -17,11 +17,11 @@ import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; 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; import net.minecraft.nbt.NBTTagCompound; @@ -50,7 +50,7 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I if(!worldObj.isRemote) { feed.setType(0, slots); - + if(feed.getTankType().hasTrait(FT_Heatable.class)) { FT_Heatable trait = feed.getTankType().getTrait(FT_Heatable.class); HeatingStep step = trait.getFirstStep(); @@ -82,7 +82,7 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I super.updateEntity(); } - + protected DirPos[] getOutputPos() { if(worldObj.getBlock(xCoord, yCoord - 1, zCoord) == ModBlocks.rbmk_loader) { @@ -125,7 +125,21 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I feed.writeToNBT(nbt, "feed"); steam.writeToNBT(nbt, "steam"); } - + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + this.feed.serialize(buf); + this.steam.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.feed.deserialize(buf); + this.steam.deserialize(buf); + } + @Override public void onMelt(int reduce) { @@ -238,7 +252,7 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIRBMKHeater(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java index be66e767d..301f5bb1c 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java @@ -4,14 +4,16 @@ import api.hbm.fluid.IFluidStandardReceiver; import com.hbm.blocks.machine.rbmk.RBMKBase; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityRBMKInlet extends TileEntityLoadedBase implements IFluidStandardReceiver { +public class TileEntityRBMKInlet extends TileEntityLoadedBase implements IFluidStandardReceiver, IBufPacketReceiver { public FluidTank water; @@ -61,6 +63,14 @@ public class TileEntityRBMKInlet extends TileEntityLoadedBase implements IFluidS this.water.writeToNBT(nbt, "tank"); } + public void serialize(ByteBuf buf) { + this.water.serialize(buf); + } + + public void deserialize(ByteBuf buf) { + this.water.deserialize(buf); + } + @Override public FluidTank[] getAllTanks() { return new FluidTank[] {water}; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKModerator.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKModerator.java index 7abb95b12..989b0af42 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKModerator.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKModerator.java @@ -1,10 +1,11 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; +import com.hbm.handler.neutron.RBMKNeutronHandler.RBMKType; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; public class TileEntityRBMKModerator extends TileEntityRBMKBase { - + @Override public void onMelt(int reduce) { @@ -17,6 +18,11 @@ public class TileEntityRBMKModerator extends TileEntityRBMKBase { super.onMelt(reduce); } + @Override + public RBMKType getRBMKType() { + return RBMKType.MODERATOR; + } + @Override public ColumnType getConsoleType() { return ColumnType.MODERATOR; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java index 81c74e75d..eccf38e4c 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java @@ -4,6 +4,8 @@ import api.hbm.fluid.IFluidStandardSender; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; import com.hbm.handler.CompatHandler; +import com.hbm.handler.neutron.NeutronStream; +import com.hbm.handler.neutron.RBMKNeutronHandler; import com.hbm.inventory.FluidStack; import com.hbm.inventory.container.ContainerRBMKOutgasser; import com.hbm.inventory.fluid.Fluids; @@ -17,11 +19,11 @@ import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; 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; import net.minecraft.item.ItemStack; @@ -90,14 +92,13 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement } @Override - public void receiveFlux(NType type, double flux) { + public void receiveFlux(NeutronStream stream) { if(canProcess()) { - - if(type == NType.FAST) - flux *= 0.2D; - - progress += flux * RBMKDials.getOutgasserMod(worldObj); + + double efficiency = Math.min(1 - stream.fluxRatio * 0.8, 1); + + progress += stream.fluxQuantity * efficiency * RBMKDials.getOutgasserMod(worldObj); if(progress > duration) { process(); @@ -165,6 +166,11 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement super.onMelt(reduce); } + @Override + public RBMKNeutronHandler.RBMKType getRBMKType() { + return RBMKNeutronHandler.RBMKType.OUTGASSER; + } + @Override public ColumnType getConsoleType() { return ColumnType.OUTGASSER; @@ -196,6 +202,20 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement this.gas.writeToNBT(nbt, "gas"); } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + this.gas.serialize(buf); + buf.writeDouble(this.progress); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.gas.deserialize(buf); + this.progress = buf.readDouble(); + } + @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { return OutgasserRecipes.getOutput(itemStack) != null && i == 0; @@ -271,7 +291,7 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIRBMKOutgasser(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java index 259ac0b4c..0dc4cd89b 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java @@ -4,14 +4,16 @@ import api.hbm.fluid.IFluidStandardSender; import com.hbm.blocks.machine.rbmk.RBMKBase; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityRBMKOutlet extends TileEntityLoadedBase implements IFluidStandardSender { +public class TileEntityRBMKOutlet extends TileEntityLoadedBase implements IFluidStandardSender, IBufPacketReceiver { public FluidTank steam; @@ -61,6 +63,16 @@ public class TileEntityRBMKOutlet extends TileEntityLoadedBase implements IFluid this.steam.writeToNBT(nbt, "tank"); } + @Override + public void serialize(ByteBuf buf) { + this.steam.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + this.steam.deserialize(buf); + } + public void fillFluidInit() { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.sendFluid(steam, worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKReflector.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKReflector.java index ed5b1afc0..f2157f849 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKReflector.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKReflector.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; +import com.hbm.handler.neutron.RBMKNeutronHandler; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; public class TileEntityRBMKReflector extends TileEntityRBMKBase { @@ -17,6 +18,11 @@ public class TileEntityRBMKReflector extends TileEntityRBMKBase { super.onMelt(reduce); } + @Override + public RBMKNeutronHandler.RBMKType getRBMKType() { + return RBMKNeutronHandler.RBMKType.REFLECTOR; + } + @Override public ColumnType getConsoleType() { return ColumnType.REFLECTOR; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java index 70750e00a..6a7acf1bf 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -5,31 +5,35 @@ import com.hbm.blocks.machine.rbmk.RBMKBase; import com.hbm.blocks.machine.rbmk.RBMKRod; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; import com.hbm.handler.CompatHandler; +import com.hbm.handler.neutron.NeutronNodeWorld; +import com.hbm.handler.neutron.RBMKNeutronHandler; import com.hbm.handler.radiation.ChunkRadiationManager; +import com.hbm.handler.neutron.RBMKNeutronHandler.RBMKNeutronNode; +import com.hbm.handler.neutron.NeutronStream; import com.hbm.inventory.container.ContainerRBMKRod; import com.hbm.inventory.gui.GUIRBMKRod; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemRBMKRod; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; -import com.hbm.util.Compat; import com.hbm.util.CompatEnergyControl; import com.hbm.util.ParticleUtil; import api.hbm.tile.IInfoProviderEC; +import com.hbm.util.fauxpointtwelve.BlockPos; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; 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; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -38,10 +42,14 @@ import java.util.List; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IRBMKLoadable, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { - - //amount of "neutron energy" buffered for the next tick to use for the reaction - public double fluxFast; - public double fluxSlow; + + // New system!! + // Used for receiving flux (calculating outbound flux/burning rods) + public double fluxRatio; + public double fluxQuantity; + public double lastFluxQuantity; + public double lastFluxRatio; + public boolean hasRod; public TileEntityRBMKRod() { @@ -52,243 +60,212 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM public String getName() { return "container.rbmkRod"; } - + @Override public boolean isModerated() { return ((RBMKRod)this.getBlockType()).moderated; } - + @Override public int trackingRange() { return 25; } - @SuppressWarnings("incomplete-switch") //shut the fuck up @Override - public void receiveFlux(NType type, double flux) { - - switch(type) { - case FAST: this.fluxFast += flux; break; - case SLOW: this.fluxSlow += flux; break; - } + public void receiveFlux(NeutronStream stream) { + double fastFlux = this.fluxQuantity * this.fluxRatio; + double fastFluxIn = stream.fluxQuantity * stream.fluxRatio; + + this.fluxQuantity += stream.fluxQuantity; + fluxRatio = (fastFlux + fastFluxIn) / fluxQuantity; } - + @Override public void updateEntity() { if(!worldObj.isRemote) { - + if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { - + ItemRBMKRod rod = ((ItemRBMKRod)slots[0].getItem()); - - double fluxIn = fluxFromType(rod.nType); - double fluxOut = rod.burn(worldObj, slots[0], fluxIn); - NType rType = rod.rType; - + + double fluxRatioOut; + double fluxQuantityOut; + + // Experimental flux ratio curve rods! + // Again, nothing really uses this so its just idle code at the moment. + if (rod.specialFluxCurve) { + + fluxRatioOut = rod.fluxRatioOut(this.fluxRatio, ItemRBMKRod.getEnrichment(slots[0])); + + double fluxIn; + + fluxIn = rod.fluxFromRatio(this.fluxQuantity, this.fluxRatio); + + fluxQuantityOut = rod.burn(worldObj, slots[0], fluxIn); + } else { + NType rType = rod.rType; + if (rType == NType.SLOW) + fluxRatioOut = 0; + else + fluxRatioOut = 1; + + double fluxIn = fluxFromType(rod.nType); + fluxQuantityOut = rod.burn(worldObj, slots[0], fluxIn); + } + rod.updateHeat(worldObj, slots[0], 1.0D); this.heat += rod.provideHeat(worldObj, slots[0], heat, 1.0D); - + if(!this.hasLid()) { - ChunkRadiationManager.proxy.incrementRad(worldObj, xCoord, yCoord, zCoord, (float) ((this.fluxFast + this.fluxSlow) * 0.05F)); + ChunkRadiationManager.proxy.incrementRad(worldObj, xCoord, yCoord, zCoord, (float) (this.fluxQuantity * 0.05F)); } - + super.updateEntity(); - + if(this.heat > this.maxHeat()) { - + if(RBMKDials.getMeltdownsDisabled(worldObj)) { ParticleUtil.spawnGasFlame(worldObj, xCoord + 0.5, yCoord + RBMKDials.getColumnHeight(worldObj) + 0.5, zCoord + 0.5, 0, 0.2, 0); } else { this.meltdown(); } - this.fluxFast = 0; - this.fluxSlow = 0; + this.lastFluxRatio = 0; + this.lastFluxQuantity = 0; + this.fluxQuantity = 0; return; } - - if(this.heat > 10_000) this.heat = 10_000; - - //for spreading, we want the buffered flux to be 0 because we want to know exactly how much gets reflected back - this.fluxFast = 0; - this.fluxSlow = 0; - this.worldObj.theProfiler.startSection("rbmkRod_flux_spread"); - spreadFlux(rType, fluxOut); - this.worldObj.theProfiler.endSection(); - + if(this.heat > 10_000) this.heat = 10_000; + + //for spreading, we want the buffered flux to be 0 because we want to know exactly how much gets reflected back + + this.lastFluxQuantity = this.fluxQuantity; + this.lastFluxRatio = this.fluxRatio; + + this.fluxQuantity = 0; + this.fluxRatio = 0; + + spreadFlux(fluxQuantityOut, fluxRatioOut); + hasRod = true; - + } else { - this.fluxFast = 0; - this.fluxSlow = 0; - + this.lastFluxRatio = 0; + this.lastFluxQuantity = 0; + this.fluxQuantity = 0; + this.fluxRatio = 0; + hasRod = false; - + super.updateEntity(); } } } - - /** - * SLOW: full efficiency for slow neutrons, fast neutrons have half efficiency - * FAST: fast neutrons have 100% efficiency, slow only 30% - * ANY: just add together whatever we have because who cares - * @param type - * @return - */ - + private double fluxFromType(NType type) { - + switch(type) { - case SLOW: return this.fluxFast * 0.5D + this.fluxSlow; - case FAST: return this.fluxFast + this.fluxSlow * 0.3D; - case ANY: return this.fluxFast + this.fluxSlow; + case SLOW: return (this.fluxQuantity * (1 - this.fluxRatio) + Math.min(this.fluxRatio * 0.5, 1)); + case FAST: return (this.fluxQuantity * (1 - this.fluxRatio) + Math.min(this.fluxRatio * 0.3, 1)); + case ANY: return this.fluxQuantity; } - + return 0.0D; } - + public static final ForgeDirection[] fluxDirs = new ForgeDirection[] { ForgeDirection.NORTH, ForgeDirection.EAST, ForgeDirection.SOUTH, ForgeDirection.WEST }; - - protected static NType stream; - - protected void spreadFlux(NType type, double fluxOut) { - - int range = RBMKDials.getFluxRange(worldObj); - - for(ForgeDirection dir : fluxDirs) { - - stream = type; - double flux = fluxOut; - - for(int i = 1; i <= range; i++) { - - flux = runInteraction(xCoord + dir.offsetX * i, yCoord, zCoord + dir.offsetZ * i, flux); - - if(flux <= 0) - break; - } - } - } - - protected double runInteraction(int x, int y, int z, double flux) { - - TileEntity te = Compat.getTileStandard(worldObj, x, y, z); - - if(te instanceof TileEntityRBMKBase) { - TileEntityRBMKBase base = (TileEntityRBMKBase) te; - - if(!base.hasLid()) - ChunkRadiationManager.proxy.incrementRad(worldObj, xCoord, yCoord, zCoord, (float) (flux * 0.05F)); - - if(base.isModerated()) { - this.stream = NType.SLOW; - } + + private BlockPos pos; + + public void spreadFlux(double flux, double ratio) { + + if(pos == null) + pos = new BlockPos(this); + + if (flux == 0) { + // simple way to remove the node from the cache when no flux is going into it! + NeutronNodeWorld.removeNode(pos); + return; } - //burn baby burn - if(te instanceof TileEntityRBMKRod) { - TileEntityRBMKRod rod = (TileEntityRBMKRod)te; - - if(rod.getStackInSlot(0) != null && rod.getStackInSlot(0).getItem() instanceof ItemRBMKRod) { - rod.receiveFlux(stream, flux); - return 0; - } else { - return flux; - } + RBMKNeutronNode node = (RBMKNeutronNode) NeutronNodeWorld.getNode(pos); + + if(node == null) { + node = RBMKNeutronHandler.makeNode(this); + NeutronNodeWorld.addNode(node); } - - if(te instanceof TileEntityRBMKOutgasser) { - TileEntityRBMKOutgasser rod = (TileEntityRBMKOutgasser)te; - - if(!rod.canProcess()) { - return flux; - } + + for(ForgeDirection dir : fluxDirs) { + + Vec3 neutronVector = Vec3.createVectorHelper(dir.offsetX, dir.offsetY, dir.offsetZ); + + // Create new neutron streams + new RBMKNeutronHandler.RBMKNeutronStream(node, neutronVector, flux, ratio); } - - if(te instanceof IRBMKFluxReceiver) { - IRBMKFluxReceiver rod = (IRBMKFluxReceiver)te; - rod.receiveFlux(stream, flux); - return 0; - } - - //multiply neutron count with rod setting - if(te instanceof TileEntityRBMKControl) { - TileEntityRBMKControl control = (TileEntityRBMKControl)te; - - if(control.getMult() == 0.0D) - return 0; - - flux *= control.getMult(); - - return flux; - } - - //set neutrons to slow - if(te instanceof TileEntityRBMKModerator) { - stream = NType.SLOW; - return flux; - } - - //return the neutrons back to this with no further action required - if(te instanceof TileEntityRBMKReflector) { - this.receiveFlux(this.isModerated() ? NType.SLOW : stream, flux); - return 0; - } - - //break the neutron flow and nothign else - if(te instanceof TileEntityRBMKAbsorber) { - return 0; - } - - if(te instanceof TileEntityRBMKBase) { - return flux; - } - - int limit = RBMKDials.getColumnHeight(worldObj); - int hits = 0; - for(int h = 0; h <= limit; h++) { - - if(!worldObj.getBlock(x, y + h, z).isOpaqueCube()) - hits++; - } - - if(hits > 0) - ChunkRadiationManager.proxy.incrementRad(worldObj, xCoord, yCoord, zCoord, (float) (flux * 0.05F * hits / (float)limit)); - - return 0; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - this.fluxFast = nbt.getDouble("fluxFast"); - this.fluxSlow = nbt.getDouble("fluxSlow"); + if (nbt.hasKey("fluxFast") || nbt.hasKey("fluxSlow")) { + // recalculate new values to keep stable operations + this.fluxQuantity = nbt.getDouble("fluxFast") + nbt.getDouble("fluxSlow"); + if (this.fluxQuantity > 0) + this.fluxRatio = nbt.getDouble("fluxFast") / fluxQuantity; + else + this.fluxRatio = 0; + } else { + this.fluxQuantity = nbt.getDouble("fluxQuantity"); + this.fluxRatio = nbt.getDouble("fluxMod"); + } this.hasRod = nbt.getBoolean("hasRod"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - nbt.setDouble("fluxFast", this.fluxFast); - nbt.setDouble("fluxSlow", this.fluxSlow); + if (!diag) { + nbt.setDouble("fluxQuantity", this.lastFluxQuantity); + nbt.setDouble("fluxMod", this.lastFluxRatio); + } else { + nbt.setDouble("fluxSlow", this.fluxQuantity * (1 - fluxRatio)); + nbt.setDouble("fluxFast", this.fluxQuantity * fluxRatio); + } nbt.setBoolean("hasRod", this.hasRod); } - + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeDouble(this.lastFluxQuantity); + buf.writeDouble(this.lastFluxRatio); + buf.writeBoolean(this.hasRod); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.fluxQuantity = buf.readDouble(); + this.fluxRatio = buf.readDouble(); + this.hasRod = buf.readBoolean(); + } + public void getDiagData(NBTTagCompound nbt) { + diag = true; this.writeToNBT(nbt); - + diag = false; + if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { - + ItemRBMKRod rod = ((ItemRBMKRod)slots[0].getItem()); nbt.setString("f_yield", rod.getYield(slots[0]) + " / " + rod.yield + " (" + (rod.getEnrichment(slots[0]) * 100) + "%)"); @@ -296,55 +273,60 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM nbt.setString("f_heat", rod.getCoreHeat(slots[0]) + " / " + rod.getHullHeat(slots[0]) + " / " + rod.meltingPoint); } } - + @Override public void onMelt(int reduce) { boolean moderated = this.isModerated(); int h = RBMKDials.getColumnHeight(worldObj); reduce = MathHelper.clamp_int(reduce, 1, h); - + if(worldObj.rand.nextInt(3) == 0) reduce++; - + boolean corium = slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod; - - if(corium && slots[0].getItem() == ModItems.rbmk_fuel_drx) + + if(corium && slots[0].getItem() == ModItems.rbmk_fuel_drx) RBMKBase.digamma = true; - + slots[0] = null; if(corium) { - + for(int i = h; i >= 0; i--) { worldObj.setBlock(xCoord, yCoord + i, zCoord, ModBlocks.corium_block, 5, 3); worldObj.markBlockForUpdate(xCoord, yCoord + i, zCoord); } - + int count = 1 + worldObj.rand.nextInt(RBMKDials.getColumnHeight(worldObj)); - + for(int i = 0; i < count; i++) { spawnDebris(DebrisType.FUEL); } } else { this.standardMelt(reduce); } - + if(moderated) { - + int count = 2 + worldObj.rand.nextInt(2); - + for(int i = 0; i < count; i++) { spawnDebris(DebrisType.GRAPHITE); } } - + spawnDebris(DebrisType.ELEMENT); - + if(this.getBlockMetadata() == RBMKBase.DIR_NORMAL_LID.ordinal() + RBMKBase.offset) spawnDebris(DebrisType.LID); } + @Override + public RBMKNeutronHandler.RBMKType getRBMKType() { + return RBMKNeutronHandler.RBMKType.ROD; + } + @Override public ColumnType getConsoleType() { return ColumnType.FUEL; @@ -353,9 +335,9 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM @Override public NBTTagCompound getNBTForConsole() { NBTTagCompound data = new NBTTagCompound(); - + if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { - + ItemRBMKRod rod = ((ItemRBMKRod)slots[0].getItem()); data.setDouble("enrichment", rod.getEnrichment(slots[0])); data.setDouble("xenon", rod.getPoison(slots[0])); @@ -363,7 +345,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM data.setDouble("c_coreHeat", rod.getCoreHeat(slots[0])); data.setDouble("c_maxHeat", rod.meltingPoint); } - + return data; } @@ -393,7 +375,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM slots[0] = null; this.markDirty(); } - + // do some opencomputer stuff @Override @Optional.Method(modid = "OpenComputers") @@ -409,16 +391,16 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM @Callback(direct = true) @Optional.Method(modid = "OpenComputers") - public Object[] getFluxSlow(Context context, Arguments args) { - return new Object[] {fluxSlow}; + public Object[] getFluxQuantity(Context context, Arguments args) { + return new Object[] {fluxQuantity}; } @Callback(direct = true) @Optional.Method(modid = "OpenComputers") - public Object[] getFluxFast(Context context, Arguments args) { - return new Object[] {fluxFast}; + public Object[] getFluxRatio(Context context, Arguments args) { + return new Object[] {fluxRatio}; } - + @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getDepletion(Context context, Arguments args) { @@ -480,7 +462,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] { heat, returnValues.get(0), returnValues.get(1), - fluxSlow, fluxFast, returnValues.get(2), returnValues.get(3), returnValues.get(4), + fluxQuantity, fluxRatio, returnValues.get(2), returnValues.get(3), returnValues.get(4), ((RBMKRod)this.getBlockType()).moderated, xCoord, yCoord, zCoord}; } @@ -503,7 +485,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIRBMKRod(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRodReaSim.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRodReaSim.java index e8e284a07..a23c5f2e3 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRodReaSim.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRodReaSim.java @@ -1,11 +1,16 @@ package com.hbm.tileentity.machine.rbmk; +import com.hbm.handler.neutron.NeutronNodeWorld; +import com.hbm.handler.neutron.RBMKNeutronHandler; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; +import com.hbm.util.fauxpointtwelve.BlockPos; import net.minecraft.util.Vec3; +import static com.hbm.handler.neutron.RBMKNeutronHandler.*; + public class TileEntityRBMKRodReaSim extends TileEntityRBMKRod { - + public TileEntityRBMKRodReaSim() { super(); } @@ -14,42 +19,37 @@ public class TileEntityRBMKRodReaSim extends TileEntityRBMKRod { public String getName() { return "container.rbmkReaSim"; } - + + private BlockPos pos; + @Override - protected void spreadFlux(NType type, double fluxOut) { + public void spreadFlux(double flux, double ratio) { + + if(pos == null) + pos = new BlockPos(this); + + if (flux == 0) { + // simple way to remove the node from the cache when no flux is going into it! + NeutronNodeWorld.removeNode(pos); + return; + } + + RBMKNeutronNode node = (RBMKNeutronNode) NeutronNodeWorld.getNode(pos); + + if(node == null) { + node = makeNode(this); + NeutronNodeWorld.addNode(node); + } - int range = RBMKDials.getReaSimRange(worldObj); int count = RBMKDials.getReaSimCount(worldObj); - - Vec3 dir = Vec3.createVectorHelper(1, 0, 0); - - for(int i = 0; i < count; i++) { - - stream = type; - double flux = fluxOut * RBMKDials.getReaSimOutputMod(worldObj); - - dir.rotateAroundY((float)(Math.PI * 2D * worldObj.rand.nextDouble())); - - for(int j = 1; j <= range; j++) { - int x = (int)Math.floor(0.5 + dir.xCoord * j); - int z = (int)Math.floor(0.5 + dir.zCoord * j); - int lastX = (int)Math.floor(0.5 + dir.xCoord * (j - 1)); - int lastZ = (int)Math.floor(0.5 + dir.zCoord * (j - 1)); - - //skip if the position is on the rod itself - if(x == 0 && z == 0) - continue; - - //skip if the current position is equal to the last position - if(x == lastX && z == lastZ) - continue; - - flux = runInteraction(xCoord + x, yCoord, zCoord + z, flux); - - if(flux <= 0) - break; - } + for (int i = 0; i < count; i++) { + Vec3 neutronVector = Vec3.createVectorHelper(1, 0, 0); + + neutronVector.rotateAroundY((float)(Math.PI * 2D * worldObj.rand.nextDouble())); + + new RBMKNeutronHandler.RBMKNeutronStream(makeNode(this), neutronVector, flux, ratio); + // Create new neutron streams } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKSlottedBase.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKSlottedBase.java index 7c6278c84..0ebc3d3dc 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKSlottedBase.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKSlottedBase.java @@ -1,15 +1,11 @@ package com.hbm.tileentity.machine.rbmk; -import com.hbm.packet.NBTPacket; -import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IGUIProvider; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraftforge.fluids.FluidTank; /** * Base class for RBMK components that have GUI slots and thus have to handle @@ -124,23 +120,6 @@ public abstract class TileEntityRBMKSlottedBase extends TileEntityRBMKActiveBase return new int[] {}; } - public int getGaugeScaled(int i, FluidTank tank) { - return tank.getFluidAmount() * i / tank.getCapacity(); - } - - public void networkPack(NBTTagCompound nbt, int range) { - - if(!worldObj.isRemote) - PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); - } - - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - } - - public void handleButtonPacket(int value, int meta) { - } - @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java index a670b6c09..2fab338a9 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java @@ -1,12 +1,12 @@ package com.hbm.tileentity.machine.rbmk; +import com.hbm.handler.neutron.RBMKNeutronHandler; import com.hbm.inventory.container.ContainerRBMKStorage; import com.hbm.inventory.gui.GUIRBMKStorage; import com.hbm.items.machine.ItemRBMKRod; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; 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; @@ -40,6 +40,11 @@ public class TileEntityRBMKStorage extends TileEntityRBMKSlottedBase implements super.updateEntity(); } + @Override + public RBMKNeutronHandler.RBMKType getRBMKType() { + return RBMKNeutronHandler.RBMKType.OTHER; + } + @Override public ColumnType getConsoleType() { return ColumnType.STORAGE; @@ -92,7 +97,7 @@ public class TileEntityRBMKStorage extends TileEntityRBMKSlottedBase implements @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIRBMKStorage(player.inventory, this); } } 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 b2815e4d2..fcffc21d1 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -14,6 +14,7 @@ import com.hbm.inventory.fluid.trait.FluidTrait.FluidReleaseType; import com.hbm.inventory.gui.GUIBarrel; import com.hbm.lib.Library; import com.hbm.saveddata.TomSaveData; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityMachineBase; @@ -27,7 +28,6 @@ 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; import net.minecraft.item.ItemStack; @@ -43,8 +43,8 @@ import java.util.List; import java.util.Set; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) -public class TileEntityBarrel extends TileEntityMachineBase implements SimpleComponent, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider, CompatHandler.OCComponent { - +public class TileEntityBarrel extends TileEntityMachineBase implements SimpleComponent, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider, CompatHandler.OCComponent, IFluidCopiable { + public FluidTank tank; public short mode = 0; public static final short modes = 4; @@ -75,12 +75,12 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom @Override public long getDemand(FluidType type, int pressure) { - + if(this.mode == 2 || this.mode == 3 || this.sendingBrake) return 0; - + if(tank.getPressure() != pressure) return 0; - + return type == tank.getTankType() ? tank.getMaxFill() - tank.getFill() : 0; } @@ -94,7 +94,7 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom @Override public void updateEntity() { - + if(!worldObj.isRemote) { byte comp = this.getComparatorPower(); //do comparator shenanigans @@ -107,15 +107,15 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom tank.setType(0, 1, slots); tank.loadTank(2, 3, slots); tank.unloadTank(4, 5, slots); - + this.sendingBrake = true; tank.setFill(transmitFluidFairly(worldObj, tank, this, tank.getFill(), this.mode == 0 || this.mode == 1, this.mode == 1 || this.mode == 2, getConPos())); this.sendingBrake = false; - + if(tank.getFill() > 0) { checkFluidInteraction(); } - + this.networkPackNT(50); } } @@ -126,14 +126,14 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom buf.writeShort(mode); tank.serialize(buf); } - + @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); mode = buf.readShort(); tank.deserialize(buf); } - + protected DirPos[] getConPos() { return new DirPos[] { new DirPos(xCoord + 1, yCoord, zCoord, Library.POS_X), @@ -144,18 +144,18 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom new DirPos(xCoord, yCoord, zCoord - 1, Library.NEG_Z) }; } - + protected static int transmitFluidFairly(World world, FluidTank tank, IFluidConnector that, int fill, boolean connect, boolean send, DirPos[] connections) { - + Set nets = new HashSet<>(); Set consumers = new HashSet<>(); FluidType type = tank.getTankType(); int pressure = tank.getPressure(); - + for(DirPos pos : connections) { - + TileEntity te = world.getTileEntity(pos.getX(), pos.getY(), pos.getZ()); - + if(te instanceof IFluidConductor) { IFluidConductor con = (IFluidConductor) te; if(con.getPipeNet(type) != null) { @@ -163,13 +163,13 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom con.getPipeNet(type).unsubscribe(that); consumers.addAll(con.getPipeNet(type).getSubscribers()); } - + //if it's just a consumer, buffer it as a subscriber } else if(te instanceof IFluidConnector) { consumers.add((IFluidConnector) te); } } - + consumers.remove(that); if(fill > 0 && send) { @@ -177,24 +177,24 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom con.addAll(consumers); con.removeIf(x -> x == null || !(x instanceof TileEntity) || ((TileEntity)x).isInvalid()); - + if(PipeNet.trackingInstances == null) { PipeNet.trackingInstances = new ArrayList<>(); } - + PipeNet.trackingInstances.clear(); nets.forEach(x -> { if(x instanceof PipeNet) PipeNet.trackingInstances.add((PipeNet) x); }); - + fill = (int) PipeNet.fairTransfer(con, type, pressure, fill); } - + //resubscribe to buffered nets, if necessary if(connect) { nets.forEach(x -> x.subscribe(that)); } - + return fill; } @@ -208,7 +208,7 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom //if content is above 0 but still within capacity if(i == 2 && content > 0 && content <= tank.getMaxFill()) return true; - + return false; } @@ -221,23 +221,23 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom public int[] getAccessibleSlotsFromSide(int p_94128_1_) { return new int[] {2, 3, 4, 5}; } - + public void checkFluidInteraction() { - + Block b = this.getBlockType(); - + //for when you fill antimatter into a matter tank if(b != ModBlocks.barrel_antimatter && tank.getTankType().isAntimatter()) { worldObj.func_147480_a(xCoord, yCoord, zCoord, false); worldObj.newExplosion(null, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 5, true, true); } - + //for when you fill hot or corrosive liquids into a plastic tank if(b == ModBlocks.barrel_plastic && (tank.getTankType().isCorrosive() || tank.getTankType().isHot())) { worldObj.func_147480_a(xCoord, yCoord, zCoord, false); worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "random.fizz", 1.0F, 1.0F); } - + //for when you fill corrosive liquid into an iron tank if((b == ModBlocks.barrel_iron && tank.getTankType().isCorrosive()) || (b == ModBlocks.barrel_steel && tank.getTankType().hasTrait(FT_Corrosive.class) && tank.getTankType().getTrait(FT_Corrosive.class).getRating() > 50)) { @@ -245,16 +245,16 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom this.slots = new ItemStack[6]; worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.barrel_corroded); TileEntityBarrel barrel = (TileEntityBarrel)worldObj.getTileEntity(xCoord, yCoord, zCoord); - + if(barrel != null) { barrel.tank.setTankType(tank.getTankType()); barrel.tank.setFill(Math.min(barrel.tank.getMaxFill(), tank.getFill())); barrel.slots = copy; } - + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "random.fizz", 1.0F, 1.0F); } - + if(b == ModBlocks.barrel_corroded ) { if(worldObj.rand.nextInt(3) == 0) { tank.setFill(tank.getFill() - 1); @@ -262,29 +262,29 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom } if(worldObj.rand.nextInt(3 * 60 * 20) == 0) worldObj.func_147480_a(xCoord, yCoord, zCoord, false); } - + //For when Tom's firestorm hits a barrel full of water if(tank.getTankType() == Fluids.WATER && TomSaveData.forWorld(worldObj).fire > 1e-5) { int light = this.worldObj.getSavedLightValue(EnumSkyBlock.Sky, this.xCoord, this.yCoord, this.zCoord); - + if(light > 7) { worldObj.newExplosion(null, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 5, true, true); } } } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - + mode = nbt.getShort("mode"); tank.readFromNBT(nbt, "tank"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + nbt.setShort("mode", mode); tank.writeToNBT(nbt, "tank"); } @@ -304,6 +304,16 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom return new FluidTank[] { tank }; } + @Override + public int[] getFluidIDToCopy() { + return new int[] {tank.getTankType().getID()}; + } + + @Override + public FluidTank getTankToPaste() { + return tank; + } + @Override public void writeNBT(NBTTagCompound nbt) { if(tank.getFill() == 0) return; @@ -327,7 +337,7 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIBarrel(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateBase.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateBase.java index 3bdf405c2..5e40a51c5 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateBase.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateBase.java @@ -45,6 +45,7 @@ public abstract class TileEntityCrateBase extends TileEntityLockableBase impleme if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) { itemStack.stackSize = getInventoryStackLimit(); } + this.markDirty(); } @Override @@ -98,6 +99,7 @@ public abstract class TileEntityCrateBase extends TileEntityLockableBase impleme slots[i] = null; } + this.markDirty(); return itemStack1; } else { return null; diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateDesh.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateDesh.java index e0c33c30a..45ede4cbc 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateDesh.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateDesh.java @@ -5,7 +5,6 @@ import com.hbm.inventory.gui.GUICrateDesh; 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.world.World; @@ -28,7 +27,7 @@ public class TileEntityCrateDesh extends TileEntityCrateBase { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICrateDesh(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateIron.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateIron.java index 23e079344..88a398ca8 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateIron.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateIron.java @@ -5,7 +5,6 @@ import com.hbm.inventory.gui.GUICrateIron; 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.world.World; @@ -28,7 +27,7 @@ public class TileEntityCrateIron extends TileEntityCrateBase { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICrateIron(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateSteel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateSteel.java index abb9cf0cb..1af683e40 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateSteel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateSteel.java @@ -5,7 +5,6 @@ import com.hbm.inventory.gui.GUICrateSteel; 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.world.World; @@ -28,7 +27,7 @@ public class TileEntityCrateSteel extends TileEntityCrateBase { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICrateSteel(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateTemplate.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateTemplate.java index c22a6e669..a26b3e0b0 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateTemplate.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateTemplate.java @@ -5,7 +5,6 @@ import com.hbm.inventory.gui.GUICrateTemplate; 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.world.World; @@ -28,7 +27,7 @@ public class TileEntityCrateTemplate extends TileEntityCrateBase { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICrateTemplate(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateTungsten.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateTungsten.java index d6a1536b1..ecb1eca61 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateTungsten.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateTungsten.java @@ -7,7 +7,6 @@ import com.hbm.items.ModItems; import api.hbm.block.ILaserable; 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; @@ -109,7 +108,7 @@ public class TileEntityCrateTungsten extends TileEntityCrateBase implements ILas @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICrateTungsten(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityFileCabinet.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityFileCabinet.java index fc1451df5..61acde31f 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityFileCabinet.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityFileCabinet.java @@ -2,16 +2,12 @@ package com.hbm.tileentity.machine.storage; import com.hbm.inventory.container.ContainerFileCabinet; import com.hbm.inventory.gui.GUIFileCabinet; -import com.hbm.packet.BufPacket; -import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IGUIProvider; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -20,7 +16,7 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; public class TileEntityFileCabinet extends TileEntityCrateBase implements IGUIProvider, IBufPacketReceiver { - + private int timer = 0; private int playersUsing = 0; //meh, it's literally just two extra variables @@ -28,16 +24,16 @@ public class TileEntityFileCabinet extends TileEntityCrateBase implements IGUIPr public float prevLowerExtent = 0; public float upperExtent = 0; public float prevUpperExtent = 0; - + public TileEntityFileCabinet() { super(8); } - + @Override public String getInventoryName() { return "container.fileCabinet"; } - + @Override public void openInventory() { if(!worldObj.isRemote) this.playersUsing++; @@ -52,64 +48,64 @@ public class TileEntityFileCabinet extends TileEntityCrateBase implements IGUIPr buf.writeInt(timer); buf.writeInt(playersUsing); } - + @Override public void deserialize(ByteBuf buf) { timer = buf.readInt(); playersUsing = buf.readInt(); } - + @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + if(this.playersUsing > 0) { if(timer < 10) { timer++; } } else timer = 0; - - PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 25)); + + networkPackNT(25); } else { this.prevLowerExtent = lowerExtent; this.prevUpperExtent = upperExtent; } - + float openSpeed = playersUsing > 0 ? 1F / 16F : 1F / 25F; float maxExtent = 0.8F; - + if(this.playersUsing > 0) { if(lowerExtent == 0F && upperExtent == 0F) this.worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:block.crateOpen", 0.8F, 1.0F); else { if(upperExtent + openSpeed >= maxExtent && lowerExtent < maxExtent) this.worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:block.crateOpen", 0.5F, this.worldObj.rand.nextFloat() * 0.1F + 0.7F); - + if(lowerExtent + openSpeed >= maxExtent && lowerExtent < maxExtent) this.worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:block.crateOpen", 0.5F, this.worldObj.rand.nextFloat() * 0.1F + 0.7F); } - + this.lowerExtent += openSpeed; - + if(timer >= 10) this.upperExtent += openSpeed; - + } else if(lowerExtent > 0) { if(upperExtent - openSpeed < maxExtent / 2 && upperExtent >= maxExtent / 2 && upperExtent != lowerExtent) this.worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:block.crateClose", 0.8F, 1.0F); - + if(lowerExtent - openSpeed < maxExtent / 2 && lowerExtent >= maxExtent / 2) this.worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:block.crateClose", 0.8F, 1.0F); - + this.upperExtent -= openSpeed; this.lowerExtent -= openSpeed; } - + this.lowerExtent = MathHelper.clamp_float(lowerExtent, 0F, maxExtent); this.upperExtent = MathHelper.clamp_float(upperExtent, 0F, maxExtent); } - + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerFileCabinet(player.inventory, this); @@ -117,7 +113,7 @@ public class TileEntityFileCabinet extends TileEntityCrateBase implements IGUIPr @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIFileCabinet(player.inventory, this); } @@ -126,7 +122,7 @@ public class TileEntityFileCabinet extends TileEntityCrateBase implements IGUIPr public boolean isItemValidForSlot(int i, ItemStack stack) { return false; } - + @Override public boolean canInsertItem(int i, ItemStack itemStack, int j) { return false; @@ -136,12 +132,12 @@ public class TileEntityFileCabinet extends TileEntityCrateBase implements IGUIPr public boolean canExtractItem(int i, ItemStack itemStack, int j) { return false; } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 1, @@ -152,10 +148,10 @@ public class TileEntityFileCabinet extends TileEntityCrateBase implements IGUIPr zCoord + 1 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { 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 f61193726..41681df6e 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -25,7 +25,6 @@ import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -235,12 +234,12 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I @Override public long getProviderSpeed() { int mode = this.getRelevantMode(true); - return mode == mode_output || mode == mode_buffer ? this.getMaxPower() / 20 : 0; + return mode == mode_output || mode == mode_buffer ? this.getMaxPower() / 600 : 0; } @Override public long getReceiverSpeed() { int mode = this.getRelevantMode(true); - return mode == mode_input || mode == mode_buffer ? this.getMaxPower() / 20 : 0; + return mode == mode_input || mode == mode_buffer ? this.getMaxPower() / 200 : 0; } @Override @@ -340,7 +339,7 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineBattery(player.inventory, this); } 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 51a133253..7c514664b 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -19,13 +19,9 @@ import com.hbm.inventory.gui.GUIMachineFluidTank; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.Library; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.IOverpressurable; -import com.hbm.tileentity.IPersistentNBT; -import com.hbm.tileentity.IRepairable; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.*; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.ParticleUtil; import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.common.Optional; @@ -37,7 +33,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.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -53,7 +48,7 @@ import java.util.List; import java.util.Random; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) -public class TileEntityMachineFluidTank extends TileEntityMachineBase implements SimpleComponent, OCComponent, IFluidStandardTransceiver, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable { +public class TileEntityMachineFluidTank extends TileEntityMachineBase implements SimpleComponent, OCComponent, IFluidStandardTransceiver, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable, IFluidCopiable{ public FluidTank tank; public short mode = 0; @@ -381,6 +376,16 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements return (mode == 0 || mode == 1) ? new FluidTank[] {tank} : new FluidTank[0]; } + @Override + public int[] getFluidIDToCopy() { + return new int[] {tank.getTankType().getID()}; + } + + @Override + public FluidTank getTankToPaste() { + return tank; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineFluidTank(player.inventory, (TileEntityMachineFluidTank) world.getTileEntity(x, y, z)); @@ -388,7 +393,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineFluidTank(player.inventory, (TileEntityMachineFluidTank) world.getTileEntity(x, y, z)); } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMassStorage.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMassStorage.java index 6db2f555f..d0d5abda5 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMassStorage.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMassStorage.java @@ -3,12 +3,13 @@ package com.hbm.tileentity.machine.storage; import com.hbm.inventory.container.ContainerMassStorage; import com.hbm.inventory.gui.GUIMassStorage; import com.hbm.items.ModItems; +import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IControlReceiverFilter; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.util.BufferUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -16,19 +17,19 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; import net.minecraft.world.World; -public class TileEntityMassStorage extends TileEntityCrateBase implements INBTPacketReceiver, IControlReceiverFilter { - +public class TileEntityMassStorage extends TileEntityCrateBase implements IBufPacketReceiver, IControlReceiverFilter { + private int stack = 0; public boolean output = false; private int capacity; public int redstone = 0; - + @SideOnly(Side.CLIENT) public ItemStack type; - + public TileEntityMassStorage() { super(3); } - + public TileEntityMassStorage(int capacity) { this(); this.capacity = capacity; @@ -38,83 +39,85 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements INBTPa public String getInventoryName() { return "container.massStorage"; } - + @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + int newRed = this.getStockpile() * 15 / this.capacity; - + if(newRed != this.redstone) { this.redstone = newRed; this.markDirty(); } - + if(slots[0] != null && slots[0].getItem() == ModItems.fluid_barrel_infinite) { this.stack = this.getCapacity(); } - + if(this.getType() == null) this.stack = 0; - + if(getType() != null && getStockpile() < getCapacity() && slots[0] != null && slots[0].isItemEqual(getType()) && ItemStack.areItemStackTagsEqual(slots[0], getType())) { - + int remaining = getCapacity() - getStockpile(); int toRemove = Math.min(remaining, slots[0].stackSize); this.decrStackSize(0, toRemove); this.stack += toRemove; this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); } - + if(output && getType() != null) { - + if(slots[2] != null && !(slots[2].isItemEqual(getType()) && ItemStack.areItemStackTagsEqual(slots[2], getType()))) { return; } - + int amount = Math.min(getStockpile(), getType().getMaxStackSize()); - + if(amount > 0) { if(slots[2] == null) { slots[2] = slots[1].copy(); slots[2].stackSize = amount; - this.stack -= amount; } else { amount = Math.min(amount, slots[2].getMaxStackSize() - slots[2].stackSize); slots[2].stackSize += amount; - this.stack -= amount; } + this.stack -= amount; } } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("stack", getStockpile()); - data.setBoolean("output", output); - if(slots[1] != null) slots[1].writeToNBT(data); - INBTPacketReceiver.networkPack(this, data, 15); + + networkPackNT(15); } } @Override - public void networkUnpack(NBTTagCompound nbt) { - this.stack = nbt.getInteger("stack"); - this.output = nbt.getBoolean("output"); - this.type = ItemStack.loadItemStackFromNBT(nbt); + public void serialize(ByteBuf buf) { + buf.writeInt(this.stack); + buf.writeBoolean(this.output); + BufferUtil.writeItemStack(buf, this.slots[1]); } - + + @Override + public void deserialize(ByteBuf buf) { + this.stack = buf.readInt(); + this.output = buf.readBoolean(); + this.type = BufferUtil.readItemStack(buf); + } + public int getCapacity() { return capacity; } - + public ItemStack getType() { return slots[1] == null ? null : slots[1].copy(); } - + public int getStockpile() { return stack; } - + public void setStockpile(int stack) { this.stack = stack; } @@ -141,7 +144,7 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements INBTPa this.output = nbt.getBoolean("output"); this.capacity = nbt.getInteger("capacity"); this.redstone = nbt.getByte("redstone"); - + if(this.capacity <= 0) { this.capacity = 10_000; } @@ -163,36 +166,36 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements INBTPa @Override public void receiveControl(NBTTagCompound data) { - + if(data.hasKey("provide") && slots[1] != null) { - + if(this.getStockpile() == 0) { return; } - + int amount = data.getBoolean("provide") ? slots[1].getMaxStackSize() : 1; amount = Math.min(amount, getStockpile()); - + if(slots[2] != null && !(slots[2].isItemEqual(getType()) && ItemStack.areItemStackTagsEqual(slots[2], getType()))) { return; } - + if(slots[2] == null) { slots[2] = slots[1].copy(); slots[2].stackSize = amount; - this.stack -= amount; } else { amount = Math.min(amount, slots[2].getMaxStackSize() - slots[2].stackSize); slots[2].stackSize += amount; - this.stack -= amount; } + this.stack -= amount; } - + if(data.hasKey("toggle")) { this.output = !output; } - if(data.hasKey("slot")){ + if(data.hasKey("slot") && this.getStockpile() <= 0){ setFilterContents(data); + if(slots[1] != null) slots[1].stackSize = 1; } } @@ -218,7 +221,12 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements INBTPa @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMassStorage(player.inventory, this); } + + @Override + public int[] getFilterSlots() { + return new int[]{1,2}; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntitySafe.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntitySafe.java index f9197b479..95f4c63cd 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntitySafe.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntitySafe.java @@ -5,7 +5,6 @@ import com.hbm.inventory.gui.GUISafe; 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.inventory.ISidedInventory; @@ -29,7 +28,7 @@ public class TileEntitySafe extends TileEntityCrateBase implements ISidedInvento @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUISafe(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntitySoyuzCapsule.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntitySoyuzCapsule.java index f4d785a7d..2d024986c 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntitySoyuzCapsule.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntitySoyuzCapsule.java @@ -7,7 +7,6 @@ import com.hbm.tileentity.TileEntityInventoryBase; 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.util.AxisAlignedBB; @@ -37,7 +36,7 @@ public class TileEntitySoyuzCapsule extends TileEntityInventoryBase implements I @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUISoyuzCapsule(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java b/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java index 8afaeb73c..d88b68cc5 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java @@ -3,23 +3,23 @@ package com.hbm.tileentity.network; import api.hbm.energymk2.IEnergyConductorMK2; import api.hbm.energymk2.Nodespace; import api.hbm.energymk2.Nodespace.PowerNode; -import net.minecraft.tileentity.TileEntity; +import com.hbm.tileentity.TileEntityLoadedBase; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCableBaseNT extends TileEntity implements IEnergyConductorMK2 { - +public class TileEntityCableBaseNT extends TileEntityLoadedBase implements IEnergyConductorMK2 { + protected PowerNode node; @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + if(this.node == null || this.node.expired) { - + if(this.shouldCreateNode()) { this.node = Nodespace.getNode(worldObj, xCoord, yCoord, zCoord); - + if(this.node == null || this.node.expired) { this.node = this.createNode(); Nodespace.createNode(worldObj, this.node); @@ -28,11 +28,11 @@ public class TileEntityCableBaseNT extends TileEntity implements IEnergyConducto } } } - + public boolean shouldCreateNode() { return true; } - + public void onNodeDestroyedCallback() { this.node = null; } @@ -40,7 +40,7 @@ public class TileEntityCableBaseNT extends TileEntity implements IEnergyConducto @Override public void invalidate() { super.invalidate(); - + if(!worldObj.isRemote) { if(this.node != null) { Nodespace.destroyNode(worldObj, xCoord, yCoord, zCoord); diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneBase.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneBase.java index 2158d0fe7..ef464547d 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneBase.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneBase.java @@ -1,14 +1,21 @@ package com.hbm.tileentity.network; +import com.hbm.interfaces.ICopiable; +import com.hbm.tileentity.IControlReceiverFilter; import com.hbm.tileentity.TileEntityMachineBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.world.World; import net.minecraftforge.common.util.Constants; import net.minecraftforge.common.util.ForgeDirection; -public abstract class TileEntityCraneBase extends TileEntityMachineBase { +public abstract class TileEntityCraneBase extends TileEntityMachineBase implements ICopiable { public TileEntityCraneBase(int scount) { super(scount); @@ -101,4 +108,75 @@ public abstract class TileEntityCraneBase extends TileEntityMachineBase { super.writeToNBT(nbt); nbt.setByte("CraneOutputOverride", (byte) outputOverride.ordinal()); } + + @Override + public NBTTagCompound getSettings(World world, int x, int y, int z) { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setInteger("inputSide", getInputSide().ordinal()); + nbt.setInteger("outputSide", getOutputSide().ordinal()); + + if(this instanceof IControlReceiverFilter){ + IControlReceiverFilter filter = ((IControlReceiverFilter) this); + IInventory inv = this; + NBTTagList tags = new NBTTagList(); + int count = 0; + + for (int i = filter.getFilterSlots()[0]; i < filter.getFilterSlots()[1]; i++) { + NBTTagCompound slotNBT = new NBTTagCompound(); + if(inv.getStackInSlot(i) != null) { + slotNBT.setByte("slot", (byte) count); + inv.getStackInSlot(i).writeToNBT(slotNBT); + tags.appendTag(slotNBT); + } + count++; + } + nbt.setTag("items", tags); + } + + return nbt; + } + + @Override + public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { + if(index == 1) { + if (nbt.hasKey("outputSide")) { + outputOverride = ForgeDirection.getOrientation(nbt.getInteger("outputSide")); + onBlockChanged(); + } + if (nbt.hasKey("inputSide")) { + worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, nbt.getInteger("inputSide"), 3); + } + } else { + if (this instanceof IControlReceiverFilter) { + IControlReceiverFilter filter = ((IControlReceiverFilter) this); + IInventory inv = this; + + NBTTagList items = nbt.getTagList("items", 10); + int listSize = items.tagCount(); + if (listSize > 0) { + int count = 0; + for (int i = filter.getFilterSlots()[0]; i < filter.getFilterSlots()[1]; i++) { + if (i < listSize) { + NBTTagCompound slotNBT = items.getCompoundTagAt(count); + byte slot = slotNBT.getByte("slot"); + ItemStack loadedStack = ItemStack.loadItemStackFromNBT(slotNBT); + //whether the filter info came from a router + boolean router = nbt.hasKey("modes") && slot > index * 5 && slot < index * + 5; + if (loadedStack != null && (slot < filter.getFilterSlots()[1] || router)) { + inv.setInventorySlotContents(slot + filter.getFilterSlots()[0], ItemStack.loadItemStackFromNBT(slotNBT)); + filter.nextMode(slot); + this.getWorldObj().markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); + } + } + count++; + } + } + } + } + } + + @Override + public String[] infoForDisplay(World world, int x, int y, int z) { + return new String[]{"copytool.filter", "copytool.orientation"}; + } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneBoxer.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneBoxer.java index a634dcc79..01a312685 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneBoxer.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneBoxer.java @@ -8,8 +8,8 @@ import com.hbm.inventory.gui.GUICraneBoxer; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -143,17 +143,21 @@ public class TileEntityCraneBoxer extends TileEntityCraneBase implements IGUIPro worldObj.spawnEntityInWorld(moving); } } - - NBTTagCompound data = new NBTTagCompound(); - data.setByte("mode", mode); - this.networkPack(data, 15); + + this.networkPackNT(15); } } - - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.mode = nbt.getByte("mode"); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeByte(this.mode); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.mode = buf.readByte(); } @Override @@ -187,7 +191,7 @@ public class TileEntityCraneBoxer extends TileEntityCraneBase implements IGUIPro @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICraneBoxer(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java index 628b3946c..aab0e354d 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java @@ -2,7 +2,6 @@ package com.hbm.tileentity.network; import api.hbm.conveyor.IConveyorBelt; import com.hbm.entity.item.EntityMovingItem; -import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerCraneExtractor; import com.hbm.inventory.gui.GUICraneExtractor; import com.hbm.items.ModItems; @@ -13,7 +12,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; @@ -26,7 +24,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCraneExtractor extends TileEntityCraneBase implements IGUIProvider, IControlReceiver, IControlReceiverFilter { +public class TileEntityCraneExtractor extends TileEntityCraneBase implements IGUIProvider, IControlReceiverFilter { public boolean isWhitelist = false; public ModulePatternMatcher matcher; @@ -224,7 +222,7 @@ public class TileEntityCraneExtractor extends TileEntityCraneBase implements IGU @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICraneExtractor(player.inventory, this); } @@ -256,4 +254,10 @@ public class TileEntityCraneExtractor extends TileEntityCraneBase implements IGU setFilterContents(data); } } + + @Override + public int[] getFilterSlots() { + return new int[]{0,9}; + } } + diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java index 26ed150ea..61d9df4de 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.network; +import api.hbm.conveyor.IConveyorBelt; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.network.CraneInserter; import com.hbm.entity.item.EntityMovingItem; @@ -13,8 +14,8 @@ import com.hbm.util.InventoryUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; @@ -33,6 +34,7 @@ public class TileEntityCraneGrabber extends TileEntityCraneBase implements IGUIP public boolean isWhitelist = false; public ModulePatternMatcher matcher; + public long lastGrabbedTick = 0; public TileEntityCraneGrabber() { super(11); @@ -53,9 +55,9 @@ public class TileEntityCraneGrabber extends TileEntityCraneBase implements IGUIP public void updateEntity() { super.updateEntity(); if(!worldObj.isRemote) { - + int delay = 20; - + if(slots[10] != null && slots[10].getItem() == ModItems.upgrade_ejector) { switch(slots[10].getItemDamage()) { case 0: delay = 10; break; @@ -63,10 +65,10 @@ public class TileEntityCraneGrabber extends TileEntityCraneBase implements IGUIP case 2: delay = 2; break; } } - - if(worldObj.getTotalWorldTime() % delay == 0 && !this.worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)) { + + if(worldObj.getTotalWorldTime() >= lastGrabbedTick + delay && !this.worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)) { int amount = 1; - + if(slots[9] != null && slots[9].getItem() == ModItems.upgrade_stack) { switch(slots[9].getItemDamage()) { case 0: amount = 4; break; @@ -74,27 +76,15 @@ public class TileEntityCraneGrabber extends TileEntityCraneBase implements IGUIP case 2: amount = 64; break; } } - + ForgeDirection inputSide = getInputSide(); ForgeDirection outputSide = getOutputSide(); - TileEntity te = worldObj.getTileEntity(xCoord + outputSide.offsetX, yCoord + outputSide.offsetY, zCoord + outputSide.offsetZ); - - int[] access = null; - ISidedInventory sided = null; - - if(te instanceof ISidedInventory) { - sided = (ISidedInventory) te; - access = InventoryUtil.masquerade(sided, outputSide.getOpposite().ordinal()); - } - - if(te instanceof IInventory) { - - /* - * due to this really primitive way of just offsetting the AABB instead of contracting it, there's a wacky - * edge-case where it's possible to feed the grabber by inserting items from the side if there's a triple - * lane conveyor in front of the grabbing end. this is such a non-issue that i'm not going to bother trying - * to fuck with the AABB further, since that's just a major headache for no practical benefit - */ + Block beltBlock = worldObj.getBlock(xCoord + outputSide.offsetX, yCoord + outputSide.offsetY, zCoord + outputSide.offsetZ); + + //unholy copy paste bullshit because i can't be assed to rework the entire thing + if(beltBlock instanceof IConveyorBelt) { + IConveyorBelt belt = (IConveyorBelt) beltBlock; + double reach = 1D; if(this.getBlockMetadata() > 1) { //ignore if pointing up or down Block b = worldObj.getBlock(xCoord + inputSide.offsetX, yCoord + inputSide.offsetY, zCoord + inputSide.offsetZ); @@ -105,58 +95,109 @@ public class TileEntityCraneGrabber extends TileEntityCraneBase implements IGUIP double x = xCoord + inputSide.offsetX * reach; double y = yCoord + inputSide.offsetY * reach; double z = zCoord + inputSide.offsetZ * reach; + List items = worldObj.getEntitiesWithinAABB(EntityMovingItem.class, AxisAlignedBB.getBoundingBox(x + 0.1875D, y + 0.1875D, z + 0.1875D, x + 0.8125D, y + 0.8125D, z + 0.8125D)); - + for(EntityMovingItem item : items) { ItemStack stack = item.getItemStack(); boolean match = this.matchesFilter(stack); if(this.isWhitelist && !match || !this.isWhitelist && match) continue; - - ItemStack copy = stack.copy(); - int toAdd = Math.min(stack.stackSize, amount); - copy.stackSize = toAdd; - ItemStack ret = CraneInserter.addToInventory((IInventory) te, access, copy, outputSide.getOpposite().ordinal()); - int didAdd = toAdd - (ret != null ? ret.stackSize : 0); - stack.stackSize -= didAdd; - - if(stack.stackSize <= 0) { - item.setDead(); + + lastGrabbedTick = worldObj.getTotalWorldTime(); + + Vec3 pos = Vec3.createVectorHelper(xCoord + 0.5 + outputSide.offsetX * 0.55, yCoord + 0.5 + outputSide.offsetY * 0.55, zCoord + 0.5 + outputSide.offsetZ * 0.55); + Vec3 snap = belt.getClosestSnappingPosition(worldObj, xCoord + outputSide.offsetX, yCoord + outputSide.offsetY, zCoord + outputSide.offsetZ, pos); + item.setPosition(snap.xCoord, snap.yCoord, snap.zCoord); + break; + } + + } else { + + TileEntity te = worldObj.getTileEntity(xCoord + outputSide.offsetX, yCoord + outputSide.offsetY, zCoord + outputSide.offsetZ); + + int[] access = null; + ISidedInventory sided = null; + + if(te instanceof ISidedInventory) { + sided = (ISidedInventory) te; + access = InventoryUtil.masquerade(sided, outputSide.getOpposite().ordinal()); + } + + if(te instanceof IInventory) { + + /* + * due to this really primitive way of just offsetting the AABB instead of contracting it, there's a wacky + * edge-case where it's possible to feed the grabber by inserting items from the side if there's a triple + * lane conveyor in front of the grabbing end. this is such a non-issue that i'm not going to bother trying + * to fuck with the AABB further, since that's just a major headache for no practical benefit + */ + double reach = 1D; + if(this.getBlockMetadata() > 1) { //ignore if pointing up or down + Block b = worldObj.getBlock(xCoord + inputSide.offsetX, yCoord + inputSide.offsetY, zCoord + inputSide.offsetZ); + if(b == ModBlocks.conveyor_double) reach = 0.5D; + if(b == ModBlocks.conveyor_triple) reach = 0.33D; } - - amount -= didAdd; - if(amount <= 0) { - break; + + double x = xCoord + inputSide.offsetX * reach; + double y = yCoord + inputSide.offsetY * reach; + double z = zCoord + inputSide.offsetZ * reach; + List items = worldObj.getEntitiesWithinAABB(EntityMovingItem.class, AxisAlignedBB.getBoundingBox(x + 0.1875D, y + 0.1875D, z + 0.1875D, x + 0.8125D, y + 0.8125D, z + 0.8125D)); + + for(EntityMovingItem item : items) { + ItemStack stack = item.getItemStack(); + boolean match = this.matchesFilter(stack); + if(this.isWhitelist && !match || !this.isWhitelist && match) continue; + + lastGrabbedTick = worldObj.getTotalWorldTime(); + + ItemStack copy = stack.copy(); + int toAdd = Math.min(stack.stackSize, amount); + copy.stackSize = toAdd; + ItemStack ret = CraneInserter.addToInventory((IInventory) te, access, copy, outputSide.getOpposite().ordinal()); + int didAdd = toAdd - (ret != null ? ret.stackSize : 0); + stack.stackSize -= didAdd; + + if(stack.stackSize <= 0) { + item.setDead(); + } + + amount -= didAdd; + if(amount <= 0) { + break; + } } } } } - - - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("isWhitelist", isWhitelist); - this.matcher.writeToNBT(data); - this.networkPack(data, 15); + + this.networkPackNT(15); } } - - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.isWhitelist = nbt.getBoolean("isWhitelist"); - this.matcher.modes = new String[this.matcher.modes.length]; - this.matcher.readFromNBT(nbt); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(this.isWhitelist); + this.matcher.serialize(buf); } - + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.isWhitelist = buf.readBoolean(); + this.matcher.deserialize(buf); + } + public boolean matchesFilter(ItemStack stack) { - + for(int i = 0; i < 9; i++) { ItemStack filter = slots[i]; - + if(filter != null && this.matcher.isValidForFilter(filter, i, stack)) { return true; } } - + return false; } @@ -167,22 +208,24 @@ public class TileEntityCraneGrabber extends TileEntityCraneBase implements IGUIP @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICraneGrabber(player.inventory, this); } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); this.isWhitelist = nbt.getBoolean("isWhitelist"); this.matcher.readFromNBT(nbt); + this.lastGrabbedTick = nbt.getLong("lastGrabbedTick"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setBoolean("isWhitelist", this.isWhitelist); this.matcher.writeToNBT(nbt); + nbt.setLong("lastGrabbedTick", lastGrabbedTick); } @Override @@ -190,6 +233,11 @@ public class TileEntityCraneGrabber extends TileEntityCraneBase implements IGUIP return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20; } + @Override + public int[] getFilterSlots() { + return new int[]{0,9}; + } + @Override public void receiveControl(NBTTagCompound data) { if(data.hasKey("whitelist")) { diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java index b98985bc2..afd6012ed 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.network; import com.hbm.blocks.network.CraneInserter; +import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerCraneInserter; import com.hbm.inventory.gui.GUICraneInserter; import com.hbm.tileentity.IGUIProvider; @@ -8,18 +9,21 @@ import com.hbm.util.InventoryUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCraneInserter extends TileEntityCraneBase implements IGUIProvider { +public class TileEntityCraneInserter extends TileEntityCraneBase implements IGUIProvider, IControlReceiver { + public boolean destroyer = true; public static final int[] access = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 }; public TileEntityCraneInserter() { @@ -82,9 +86,23 @@ public class TileEntityCraneInserter extends TileEntityCraneBase implements IGUI } } } + + this.networkPackNT(15); } } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(destroyer); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + destroyer = buf.readBoolean(); + } + @Override public int[] getAccessibleSlotsFromSide(int side) { return access; @@ -107,7 +125,29 @@ public class TileEntityCraneInserter extends TileEntityCraneBase implements IGUI @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICraneInserter(player.inventory, this); } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.destroyer = nbt.getBoolean("destroyer"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setBoolean("destroyer", this.destroyer); + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20; + } + + @Override + public void receiveControl(NBTTagCompound data) { + if(data.hasKey("destroyer")) this.destroyer = !this.destroyer; + } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneRouter.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneRouter.java index 6568f113b..6397584ea 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneRouter.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneRouter.java @@ -7,13 +7,16 @@ import com.hbm.tileentity.IControlReceiverFilter; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -44,26 +47,28 @@ public class TileEntityCraneRouter extends TileEntityMachineBase implements IGUI if(!worldObj.isRemote) { - NBTTagCompound data = new NBTTagCompound(); - for(int i = 0; i < patterns.length; i++) { - NBTTagCompound compound = new NBTTagCompound(); - patterns[i].writeToNBT(compound); - data.setTag("pattern" + i, compound); - } - data.setIntArray("modes", this.modes); - this.networkPack(data, 15); + this.networkPackNT(15); } } - + @Override - public void networkUnpack(NBTTagCompound data) { - super.networkUnpack(data); - - for(int i = 0; i < patterns.length; i++) { - NBTTagCompound compound = data.getCompoundTag("pattern" + i); - patterns[i].readFromNBT(compound); + public void serialize(ByteBuf buf) { + super.serialize(buf); + for (ModulePatternMatcher pattern : patterns) { + pattern.serialize(buf); } - this.modes = data.getIntArray("modes"); + + BufferUtil.writeIntArray(buf, this.modes); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + for (ModulePatternMatcher pattern : patterns) { + pattern.deserialize(buf); + } + + this.modes = BufferUtil.readIntArray(buf); } @Override @@ -73,7 +78,7 @@ public class TileEntityCraneRouter extends TileEntityMachineBase implements IGUI @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICraneRouter(player.inventory, this); } @Override @@ -120,7 +125,10 @@ public class TileEntityCraneRouter extends TileEntityMachineBase implements IGUI public boolean hasPermission(EntityPlayer player) { return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20; } - + @Override + public int[] getFilterSlots() { + return new int[]{0, slots.length}; + } @Override public void receiveControl(NBTTagCompound data) { if(data.hasKey("toggle")) { @@ -133,4 +141,60 @@ public class TileEntityCraneRouter extends TileEntityMachineBase implements IGUI setFilterContents(data); } } + + @Override + public NBTTagCompound getSettings(World world, int x, int y, int z) { + IInventory inv = (IInventory) this; + NBTTagCompound nbt = new NBTTagCompound(); + NBTTagList tags = new NBTTagList(); + + int count = 0; + for (int i = getFilterSlots()[0]; i < getFilterSlots()[1]; i++) { + NBTTagCompound slotNBT = new NBTTagCompound(); + if (inv.getStackInSlot(i) != null) { + slotNBT.setByte("slot", (byte) count); + inv.getStackInSlot(i).writeToNBT(slotNBT); + tags.appendTag(slotNBT); + } + count++; + } + + nbt.setTag("items", tags); + nbt.setIntArray("modes", modes); + + return nbt; + } + + @Override + public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { + + NBTTagList items = nbt.getTagList("items", 10); + int listSize = items.tagCount(); + + if(listSize > 0 && nbt.hasKey("modes")) { + for (int i = 0; i < listSize; i++) { + NBTTagCompound slotNBT = items.getCompoundTagAt(i); + byte slot = slotNBT.getByte("slot"); + ItemStack loadedStack = ItemStack.loadItemStackFromNBT(slotNBT); + + if (loadedStack != null && slot > index * 5 && slot < Math.min(index * 5 + 5, 30)) { + this.setInventorySlotContents(slot, ItemStack.loadItemStackFromNBT(slotNBT)); + nextMode(slot); + this.getWorldObj().markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); + } + } + modes = nbt.getIntArray("modes"); + } else { + IControlReceiverFilter.super.pasteSettings(nbt, index, world, player, x, y, z); + } + } + + @Override + public String[] infoForDisplay(World world, int x, int y, int z) { + String[] options = new String[patterns.length]; + for (int i = 0; i < options.length; i++) { + options[i] = "copytool.pattern" + i; + } + return options; + } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneUnboxer.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneUnboxer.java index 31dd46c1e..37ea89d81 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneUnboxer.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneUnboxer.java @@ -9,7 +9,6 @@ import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -115,7 +114,7 @@ public class TileEntityCraneUnboxer extends TileEntityCraneBase implements IGUIP @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICraneUnboxer(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java index 280c16fd0..fb4058296 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java @@ -9,16 +9,17 @@ import com.hbm.inventory.container.ContainerDroneCrate; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIDroneCrate; +import com.hbm.tileentity.IFluidCopiable; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.ParticleUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -27,7 +28,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; import net.minecraft.world.World; -public class TileEntityDroneCrate extends TileEntityMachineBase implements IGUIProvider, INBTPacketReceiver, IControlReceiver, IDroneLinkable, IFluidStandardTransceiver { +public class TileEntityDroneCrate extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, IDroneLinkable, IFluidStandardTransceiver, IFluidCopiable { public FluidTank tank; @@ -82,26 +83,31 @@ public class TileEntityDroneCrate extends TileEntityMachineBase implements IGUIP (nextX - pos.getX()), (nextY - pos.getY()), (nextZ - pos.getZ()), 0x00ffff); } - - - NBTTagCompound data = new NBTTagCompound(); - data.setIntArray("pos", new int[] {nextX, nextY, nextZ}); - data.setBoolean("mode", sendingMode); - data.setBoolean("type", itemType); - tank.writeToNBT(data, "t"); - INBTPacketReceiver.networkPack(this, data, 25); + networkPackNT(25); } } @Override - public void networkUnpack(NBTTagCompound nbt) { - int[] pos = nbt.getIntArray("pos"); + public void serialize(ByteBuf buf) { + BufferUtil.writeIntArray(buf, new int[] { + this.nextX, + this.nextY, + this.nextZ + }); + buf.writeBoolean(this.sendingMode); + buf.writeBoolean(this.itemType); + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + int[] pos = BufferUtil.readIntArray(buf); this.nextX = pos[0]; this.nextY = pos[1]; this.nextZ = pos[2]; - this.sendingMode = nbt.getBoolean("mode"); - this.itemType = nbt.getBoolean("type"); - tank.readFromNBT(nbt, "t"); + this.sendingMode = buf.readBoolean(); + this.itemType = buf.readBoolean(); + tank.deserialize(buf); } protected void loadItems(EntityDeliveryDrone drone) { @@ -247,7 +253,7 @@ public class TileEntityDroneCrate extends TileEntityMachineBase implements IGUIP @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIDroneCrate(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java index 0ab0a73b7..32382fc6e 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneDock.java @@ -20,7 +20,6 @@ import com.hbm.util.fauxpointtwelve.BlockPos; 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; @@ -182,7 +181,7 @@ public class TileEntityDroneDock extends TileEntityRequestNetworkContainer imple @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIDroneDock(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneProvider.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneProvider.java index 0b32073e6..d79ae02bc 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneProvider.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneProvider.java @@ -12,7 +12,6 @@ import com.hbm.util.fauxpointtwelve.BlockPos; 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; @@ -51,7 +50,7 @@ public class TileEntityDroneProvider extends TileEntityRequestNetworkContainer i @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIDroneProvider(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java index faa21f615..f9a6f0a0a 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java @@ -11,14 +11,13 @@ import com.hbm.inventory.gui.GUIDroneRequester; import com.hbm.module.ModulePatternMatcher; import com.hbm.tileentity.IControlReceiverFilter; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.network.RequestNetwork.PathNode; import com.hbm.tileentity.network.RequestNetwork.RequestNode; import com.hbm.util.fauxpointtwelve.BlockPos; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -27,8 +26,8 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.oredict.OreDictionary; -public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer implements INBTPacketReceiver, IGUIProvider, IControlReceiverFilter { - +public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer implements IGUIProvider, IControlReceiverFilter { + public ModulePatternMatcher matcher; public TileEntityDroneRequester() { @@ -40,22 +39,23 @@ public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer public String getName() { return "container.droneRequester"; } - + @Override public void updateEntity() { super.updateEntity(); - + if(!worldObj.isRemote) { - - NBTTagCompound data = new NBTTagCompound(); - this.matcher.writeToNBT(data); - INBTPacketReceiver.networkPack(this, data, 15); + + networkPackNT(15); } } - @Override - public void networkUnpack(NBTTagCompound nbt) { - this.matcher.readFromNBT(nbt); + @Override public void serialize(ByteBuf buf) { + this.matcher.serialize(buf); + } + + @Override public void deserialize(ByteBuf buf) { + this.matcher.deserialize(buf); } @Override @@ -77,13 +77,13 @@ public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer public boolean canExtractItem(int i, ItemStack stack, int j) { return true; } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); this.matcher.readFromNBT(nbt); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -97,7 +97,7 @@ public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIDroneRequester(player.inventory, this); } @@ -110,7 +110,7 @@ public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer if(filter == null) continue; String mode = this.matcher.modes[i]; AStack aStack = null; - + if(ModulePatternMatcher.MODE_EXACT.equals(mode)) { aStack = new ComparableStack(filter).makeSingular(); } else if(ModulePatternMatcher.MODE_WILDCARD.equals(mode)) { @@ -118,9 +118,9 @@ public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer } else if(mode != null) { aStack = new OreDictStack(mode); } - + if(aStack == null) continue; - + if(stock == null || !this.matcher.isValidForFilter(filter, i, stock)) request.add(aStack); } return new RequestNode(pos, this.reachableNodes, request); @@ -130,4 +130,9 @@ public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer public boolean hasPermission(EntityPlayer player) { return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20; } + + @Override + public int[] getFilterSlots() { + return new int[]{0,9}; + } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java index cb08c5bb8..99908ee14 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java @@ -3,23 +3,19 @@ package com.hbm.tileentity.network; import java.util.List; import com.hbm.entity.item.EntityDeliveryDrone; +import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.ParticleUtil; -import com.hbm.packet.BufPacket; -import com.hbm.packet.PacketDispatcher; -import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.util.fauxpointtwelve.BlockPos; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import io.netty.buffer.ByteBuf; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityDroneWaypoint extends TileEntity implements IBufPacketReceiver, IDroneLinkable { - +public class TileEntityDroneWaypoint extends TileEntityLoadedBase implements IDroneLinkable { + public int height = 5; public int nextX = -1; public int nextY = -1; @@ -28,7 +24,7 @@ public class TileEntityDroneWaypoint extends TileEntity implements IBufPacketRec @Override public void updateEntity() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); - + if(!worldObj.isRemote) { if(nextY != -1) { List drones = worldObj.getEntitiesWithinAABB(EntityDeliveryDrone.class, AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 1, zCoord + 1).offset(dir.offsetX * height, dir.offsetY * height, dir.offsetZ * height)); @@ -39,14 +35,14 @@ public class TileEntityDroneWaypoint extends TileEntity implements IBufPacketRec } } - PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 15)); + networkPackNT(15); } else { BlockPos pos = getCoord(dir); if(nextY != -1 && worldObj.getTotalWorldTime() % 2 == 0) { double x = xCoord + height * dir.offsetX + 0.5; double y = yCoord + height * dir.offsetY + 0.5; double z = zCoord + height * dir.offsetZ + 0.5; - + worldObj.spawnParticle("reddust", x, y, z, 0, 0, 0); ParticleUtil.spawnDroneLine(worldObj, @@ -63,7 +59,7 @@ public class TileEntityDroneWaypoint extends TileEntity implements IBufPacketRec buf.writeInt(nextY); buf.writeInt(nextZ); } - + @Override public void deserialize(ByteBuf buf) { height = buf.readInt(); @@ -85,12 +81,12 @@ public class TileEntityDroneWaypoint extends TileEntity implements IBufPacketRec this.nextZ = z; this.markDirty(); } - + public void addHeight(int h) { height += h; height = MathHelper.clamp_int(height, 1, 15); } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -101,7 +97,7 @@ public class TileEntityDroneWaypoint extends TileEntity implements IBufPacketRec this.nextY = pos[1]; this.nextZ = pos[2]; } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityFluidValve.java b/src/main/java/com/hbm/tileentity/network/TileEntityFluidValve.java index 6e1a226dd..7d6ff74d8 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityFluidValve.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityFluidValve.java @@ -1,16 +1,20 @@ package com.hbm.tileentity.network; import api.hbm.fluid.PipeNet; +import net.minecraft.block.Block; +import net.minecraft.world.World; public class TileEntityFluidValve extends TileEntityPipeBaseNT { @Override - public boolean canUpdate() { + public boolean shouldConnect() { return this.worldObj != null && this.getBlockMetadata() == 1 && super.canUpdate(); } public void updateState() { + this.blockMetadata = -1; // delete cache + if(this.getBlockMetadata() == 0 && this.network != null) { this.network.destroy(); this.network = null; @@ -24,4 +28,9 @@ public class TileEntityFluidValve extends TileEntityPipeBaseNT { } } } + + @Override + public boolean shouldRefresh(Block oldBlock, Block newBlock, int oldMeta, int newMeta, World world, int x, int y, int z) { + return oldBlock != newBlock; + } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java b/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java index 4db863014..ea26263ba 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java @@ -1,21 +1,31 @@ package com.hbm.tileentity.network; +import com.hbm.blocks.network.IBlockFluidDuct; +import com.hbm.extprop.HbmPlayerProps; +import com.hbm.handler.HbmKeybinds; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import api.hbm.fluid.IFluidConductor; import api.hbm.fluid.IPipeNet; import api.hbm.fluid.PipeNet; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.tileentity.IFluidCopiable; +import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.util.Compat; + +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; import net.minecraft.world.WorldServer; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityPipeBaseNT extends TileEntity implements IFluidConductor { - +public class TileEntityPipeBaseNT extends TileEntityLoadedBase implements IFluidConductor, IFluidCopiable { + protected IPipeNet network; protected FluidType type = Fluids.NONE; protected FluidType lastType = Fluids.NONE; @@ -27,59 +37,59 @@ public class TileEntityPipeBaseNT extends TileEntity implements IFluidConductor worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); lastType = type; } - - if(!worldObj.isRemote && canUpdate()) { - + + if(!worldObj.isRemote && shouldConnect()) { + //we got here either because the net doesn't exist or because it's not valid, so that's safe to assume this.setPipeNet(type, null); - + this.connect(); - + if(this.getPipeNet(type) == null) { this.setPipeNet(type, new PipeNet(type).joinLink(this)); } } } - + public FluidType getType() { return this.type; } - + public void setType(FluidType type) { this.type = type; this.markDirty(); - + if(worldObj instanceof WorldServer) { WorldServer world = (WorldServer) worldObj; world.getPlayerManager().markBlockForUpdate(xCoord, yCoord, zCoord); } - + if(this.network != null) this.network.destroy(); } - + @Override public boolean canConnect(FluidType type, ForgeDirection dir) { return dir != ForgeDirection.UNKNOWN && type == this.type; } - + protected void connect() { - + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - - TileEntity te = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); - + + TileEntity te = Compat.getTileStandard(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); + if(te instanceof IFluidConductor) { - + IFluidConductor conductor = (IFluidConductor) te; - + if(!conductor.canConnect(type, dir.getOpposite())) continue; - + if(this.getPipeNet(type) == null && conductor.getPipeNet(type) != null) { conductor.getPipeNet(type).joinLink(this); } - + if(this.getPipeNet(type) != null && conductor.getPipeNet(type) != null && this.getPipeNet(type) != conductor.getPipeNet(type)) { conductor.getPipeNet(type).joinNetworks(this.getPipeNet(type)); } @@ -90,7 +100,7 @@ public class TileEntityPipeBaseNT extends TileEntity implements IFluidConductor @Override public void invalidate() { super.invalidate(); - + if(!worldObj.isRemote) { if(this.network != null) { this.network.destroy(); @@ -101,17 +111,16 @@ public class TileEntityPipeBaseNT extends TileEntity implements IFluidConductor /** * Only update until a power net is formed, in >99% of the cases it should be the first tick. Everything else is handled by neighbors and the net itself. */ - @Override - public boolean canUpdate() { + public boolean shouldConnect() { return (this.network == null || !this.network.isValid()) && !this.isInvalid(); } @Override public long transferFluid(FluidType type, int pressure, long fluid) { - + if(this.network == null) return fluid; - + return this.network.transferFluid(fluid, pressure); } @@ -136,7 +145,7 @@ public class TileEntityPipeBaseNT extends TileEntity implements IFluidConductor this.writeToNBT(nbt); return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); } - + @Override public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { this.readFromNBT(pkt.func_148857_g()); @@ -155,7 +164,7 @@ public class TileEntityPipeBaseNT extends TileEntity implements IFluidConductor } public boolean isLoaded = true; - + @Override public boolean isLoaded() { return isLoaded; @@ -166,4 +175,36 @@ public class TileEntityPipeBaseNT extends TileEntity implements IFluidConductor super.onChunkUnload(); this.isLoaded = false; } + + @Override + public int[] getFluidIDToCopy() { + return new int[]{ type.getID() }; + } + + @Override + public FluidTank getTankToPaste() { + return null; + } + + @Override + public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { + int[] ids = nbt.getIntArray("fluidID"); + if(ids.length > 0) { + int id; + if (index < ids.length) + id = ids[index]; + else + id = 0; + + FluidType fluid = Fluids.fromID(id); + + if(HbmPlayerProps.getData(player).getKeyPressed(HbmKeybinds.EnumKeybind.TOOL_CTRL)){ + IBlockFluidDuct pipe = (IBlockFluidDuct)world.getBlock(x, y, z); + pipe.changeTypeRecursively(world, x, y, z, getType(), fluid, 64); + } else { + this.setType(fluid); + } + } + + } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java index 26d6dec14..3db91ad96 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTelex.java @@ -7,30 +7,30 @@ import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.gui.GuiScreenRadioTelex; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.network.RTTYSystem.RTTYChannel; +import com.hbm.util.BufferUtil; import com.hbm.util.ItemStackUtil; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; 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.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.inventory.Container; 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; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiver, IControlReceiver, IGUIProvider, SimpleComponent, CompatHandler.OCComponent { +public class TileEntityRadioTelex extends TileEntityLoadedBase implements IControlReceiver, IGUIProvider, SimpleComponent, CompatHandler.OCComponent { public static final int lineWidth = 33; public String txChannel = ""; @@ -52,24 +52,24 @@ public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiv public static final char print = '\u000c'; public static final char pause = '\u0016'; public static final char clear = '\u007f'; - + @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + this.sendingChar = ' '; - + if(this.isSending && this.txChannel.isEmpty()) this.isSending = false; - + if(this.isSending) { - + if(sendingWait > 0) { sendingWait--; } else { - + String line = txBuffer[sendingLine]; - + if(line.length() > sendingIndex) { char c = line.charAt(sendingIndex); sendingIndex++; @@ -80,7 +80,7 @@ public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiv this.sendingChar = c; } } else { - + if(sendingLine >= 4) { this.isSending = false; RTTYSystem.broadcast(worldObj, this.txChannel, eot); @@ -94,19 +94,19 @@ public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiv } } } - + if(!this.rxChannel.isEmpty()) { RTTYChannel chan = RTTYSystem.listen(worldObj, this.rxChannel); - + if(chan != null && chan.signal instanceof Character && (chan.timeStamp > worldObj.getTotalWorldTime() - 2 && chan.timeStamp != -1)) { char c = (char) chan.signal; - + if(this.deleteOnReceive) { this.deleteOnReceive = false; for(int i = 0; i < 5; i++) this.rxBuffer[i] = ""; this.writingLine = 0; } - + if(c == eot) { if(this.printAfterRx) { this.printAfterRx = false; @@ -129,62 +129,66 @@ public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiv } } } - - NBTTagCompound data = new NBTTagCompound(); - for(int i = 0; i < 5; i++) { - data.setString("tx" + i, txBuffer[i]); - data.setString("rx" + i, rxBuffer[i]); - } - data.setString("txChan", txChannel); - data.setString("rxChan", rxChannel); - data.setInteger("sending", sendingChar); - INBTPacketReceiver.networkPack(this, data, 16); + + networkPackNT(16); } } @Override - public void networkUnpack(NBTTagCompound nbt) { - + public void serialize(ByteBuf buf) { for(int i = 0; i < 5; i++) { - txBuffer[i] = nbt.getString("tx" + i); - rxBuffer[i] = nbt.getString("rx" + i); + BufferUtil.writeString(buf, txBuffer[i]); + BufferUtil.writeString(buf, rxBuffer[i]); } - this.txChannel = nbt.getString("txChan"); - this.rxChannel = nbt.getString("rxChan"); - this.sendingChar = (char) nbt.getInteger("sending"); + + BufferUtil.writeString(buf, this.txChannel); + BufferUtil.writeString(buf, this.rxChannel); + buf.writeChar(this.sendingChar); + } + + @Override + public void deserialize(ByteBuf buf) { + for(int i = 0; i < 5; i++) { + txBuffer[i] = BufferUtil.readString(buf); + rxBuffer[i] = BufferUtil.readString(buf); + } + + this.txChannel = BufferUtil.readString(buf); + this.rxChannel = BufferUtil.readString(buf); + this.sendingChar = buf.readChar(); } @Override public void receiveControl(NBTTagCompound data) { - + for(int i = 0; i < 5; i++) { if(data.hasKey("tx" + i)) this.txBuffer[i] = data.getString("tx" + i); } - + String cmd = data.getString("cmd"); - + if("snd".equals(cmd) && !this.isSending) { this.isSending = true; this.sendingLine = 0; this.sendingIndex = 0; } - + if("rxprt".equals(cmd)) { print(); } - + if("rxcls".equals(cmd)) { for(int i = 0; i < 5; i++) this.rxBuffer[i] = ""; this.writingLine = 0; } - + if("sve".equals(cmd)) { this.txChannel = data.getString("txChan"); this.rxChannel = data.getString("rxChan"); this.markDirty(); } } - + public void print() { ItemStack stack = new ItemStack(Items.paper); List text = new ArrayList(); @@ -216,7 +220,7 @@ public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiv @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + for(int i = 0; i < 5; i++) { nbt.setString("tx" + i, txBuffer[i]); nbt.setString("rx" + i, rxBuffer[i]); @@ -229,15 +233,15 @@ public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiv @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GuiScreenRadioTelex(this); } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 1, @@ -248,10 +252,10 @@ public class TileEntityRadioTelex extends TileEntity implements INBTPacketReceiv zCoord + 2 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchBase.java b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchBase.java index e881b1ecf..e63a5b6e3 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchBase.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchBase.java @@ -1,16 +1,17 @@ package com.hbm.tileentity.network; import com.hbm.interfaces.IControlReceiver; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.util.BufferUtil; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; -import net.minecraft.tileentity.TileEntity; -public class TileEntityRadioTorchBase extends TileEntity implements INBTPacketReceiver, IControlReceiver { +public class TileEntityRadioTorchBase extends TileEntityLoadedBase implements IControlReceiver { /** channel we're broadcasting on/listening to */ public String channel = ""; @@ -29,13 +30,8 @@ public class TileEntityRadioTorchBase extends TileEntity implements INBTPacketRe public void updateEntity() { if(!worldObj.isRemote) { - - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("p", polling); - data.setBoolean("m", customMap); - if(channel != null) data.setString("c", channel); - for(int i = 0; i < 16; i++) if(mapping[i] != null) data.setString("m" + i, mapping[i]); - INBTPacketReceiver.networkPack(this, data, 50); + + networkPackNT(50); } } @@ -62,11 +58,19 @@ public class TileEntityRadioTorchBase extends TileEntity implements INBTPacketRe } @Override - public void networkUnpack(NBTTagCompound nbt) { - this.polling = nbt.getBoolean("p"); - this.customMap = nbt.getBoolean("m"); - this.channel = nbt.getString("c"); - for(int i = 0; i < 16; i++) this.mapping[i] = nbt.getString("m" + i); + public void serialize(ByteBuf buf) { + buf.writeBoolean(this.polling); + buf.writeBoolean(this.customMap); + BufferUtil.writeString(buf, this.channel); + for(int i = 0; i < 16; i++) BufferUtil.writeString(buf, this.mapping[i]); + } + + @Override + public void deserialize(ByteBuf buf) { + this.polling = buf.readBoolean(); + this.customMap = buf.readBoolean(); + this.channel = BufferUtil.readString(buf); + for(int i = 0; i < 16; i++) this.mapping[i] = BufferUtil.readString(buf); } @Override @@ -75,7 +79,7 @@ public class TileEntityRadioTorchBase extends TileEntity implements INBTPacketRe nbt.setByte("l", (byte) this.lastState); return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); } - + @Override public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { int last = this.lastState; @@ -96,7 +100,7 @@ public class TileEntityRadioTorchBase extends TileEntity implements INBTPacketRe if(data.hasKey("m")) this.customMap = data.getBoolean("m"); if(data.hasKey("c")) this.channel = data.getString("c"); for(int i = 0; i < 16; i++) if(data.hasKey("m" + i)) this.mapping[i] = data.getString("m" + i); - + this.markDirty(); } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchCounter.java b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchCounter.java index 4b4e18803..0bb73a49c 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchCounter.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchCounter.java @@ -3,8 +3,10 @@ package com.hbm.tileentity.network; import com.hbm.module.ModulePatternMatcher; import com.hbm.tileentity.IControlReceiverFilter; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.Compat; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; @@ -68,24 +70,27 @@ public class TileEntityRadioTorchCounter extends TileEntityMachineBase implement this.lastCount[i] = count; } } - - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("polling", polling); - data.setIntArray("last", lastCount); - this.matcher.writeToNBT(data); - for(int i = 0; i < 3; i++) if(channel[i] != null) data.setString("c" + i, channel[i]); - this.networkPack(data, 15); + + this.networkPackNT(15); } } - - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.polling = nbt.getBoolean("polling"); - this.lastCount = nbt.getIntArray("last"); - this.matcher.modes = new String[this.matcher.modes.length]; - this.matcher.readFromNBT(nbt); - for(int i = 0; i < 3; i++) this.channel[i] = nbt.getString("c" + i); + + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(this.polling); + BufferUtil.writeIntArray(buf, this.lastCount); + this.matcher.serialize(buf); + for(int i = 0; i < 3; i++) BufferUtil.writeString(buf, this.channel[i]); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.polling = buf.readBoolean(); + this.lastCount = BufferUtil.readIntArray(buf); + this.matcher.deserialize(buf); + for(int i = 0; i < 3; i++) this.channel[i] = BufferUtil.readString(buf); } @Override @@ -131,4 +136,9 @@ public class TileEntityRadioTorchCounter extends TileEntityMachineBase implement setFilterContents(data); } } + + @Override + public int[] getFilterSlots() { + return new int[]{0, slots.length}; + } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchLogic.java b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchLogic.java index 4a44c3504..82f1134cb 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchLogic.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchLogic.java @@ -1,18 +1,19 @@ package com.hbm.tileentity.network; import com.hbm.interfaces.IControlReceiver; -import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.network.RTTYSystem.RTTYChannel; +import com.hbm.util.BufferUtil; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; -import net.minecraft.tileentity.TileEntity; -public class TileEntityRadioTorchLogic extends TileEntity implements INBTPacketReceiver, IControlReceiver { - +public class TileEntityRadioTorchLogic extends TileEntityLoadedBase implements IControlReceiver { + /** channel we're broadcasting on/listening to */ public String channel = ""; /** previous redstone state for input/output, needed for state change detection */ @@ -27,34 +28,34 @@ public class TileEntityRadioTorchLogic extends TileEntity implements INBTPacketR public String[] mapping; /** mapping for conditions through [1, 10], being (<, <=, >=, >, ==, !=, equals, !equals, contains, !contains) */ public int[] conditions; - + public TileEntityRadioTorchLogic() { this.mapping = new String[16]; for(int i = 0; i < 16; i++) this.mapping[i] = ""; this.conditions = new int[16]; for(int i = 0; i < 16; i++) this.conditions[i] = 0; } - + @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + if(!this.channel.isEmpty()) { - + RTTYChannel chan = RTTYSystem.listen(worldObj, this.channel); - + if(chan != null && (this.polling || (chan.timeStamp > this.lastUpdate - 1 && chan.timeStamp != -1))) { // if we're either polling or a new message has come in String msg = "" + chan.signal; this.lastUpdate = worldObj.getTotalWorldTime(); int nextState = 0; //if no remap apply, default to 0 - + if(chan.timeStamp < this.lastUpdate - 2 && this.polling) { /* the vast majority use-case for this is going to be inequalities, NOT parsing, and the input is undefined - not the output * if no signal => 0 for polling, advanced users parsing strings can easily accommodate this fact instead of breaking numerical torches */ msg = "0"; } - + if(descending) { for(int i = 15; i >= 0; i--) { if(!mapping[i].equals("") && parseSignal(msg, i)) { @@ -70,7 +71,7 @@ public class TileEntityRadioTorchLogic extends TileEntity implements INBTPacketR } } } - + if(this.lastState != nextState) { this.lastState = nextState; worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); @@ -79,17 +80,11 @@ public class TileEntityRadioTorchLogic extends TileEntity implements INBTPacketR } } } - - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("p", polling); - data.setBoolean("d", descending); - if(channel != null) data.setString("c", channel); - for(int i = 0; i < 16; i++) if(!mapping[i].equals("")) data.setString("m" + i, mapping[i]); - for(int i = 0; i < 16; i++) if(conditions[i] > 0) data.setInteger("c" + i, conditions[i]); - INBTPacketReceiver.networkPack(this, data, 50); + + networkPackNT(50); } } - + public boolean parseSignal(String signal, int index) { if(conditions[index] <= 5) { //if a non-string operator int sig = 0; @@ -97,7 +92,7 @@ public class TileEntityRadioTorchLogic extends TileEntity implements INBTPacketR try { sig = Integer.parseInt(signal); map = Integer.parseInt(mapping[index]); } catch(Exception x) { return false; //not a valid input; skip! slightly annoying about the mapping but we'll restrict input anyway }; - + switch(conditions[index]) { default: return sig < map; @@ -113,7 +108,7 @@ public class TileEntityRadioTorchLogic extends TileEntity implements INBTPacketR return sig != map; } } - + switch(conditions[index]) { default: return signal.equals(mapping[index]); @@ -150,12 +145,22 @@ public class TileEntityRadioTorchLogic extends TileEntity implements INBTPacketR for(int i = 0; i < 16; i++) if(conditions[i] > 0) nbt.setInteger("c" + i, conditions[i]); } - public void networkUnpack(NBTTagCompound nbt) { - this.polling = nbt.getBoolean("p"); - this.channel = nbt.getString("c"); - this.descending = nbt.getBoolean("d"); - for(int i = 0; i < 16; i++) this.mapping[i] = nbt.getString("m" + i); - for(int i = 0; i < 16; i++) this.conditions[i] = nbt.getInteger("c" + i); + @Override + public void serialize(ByteBuf buf) { + buf.writeBoolean(this.polling); + BufferUtil.writeString(buf, this.channel); + buf.writeBoolean(this.descending); + for(int i = 0; i < 16; i++) BufferUtil.writeString(buf, this.mapping[i]); + for(int i = 0; i < 16; i++) buf.writeInt(this.conditions[i]); + } + + @Override + public void deserialize(ByteBuf buf) { + this.polling = buf.readBoolean(); + this.channel = BufferUtil.readString(buf); + this.descending = buf.readBoolean(); + for(int i = 0; i < 16; i++) this.mapping[i] = BufferUtil.readString(buf); + for(int i = 0; i < 16; i++) this.conditions[i] = buf.readInt(); } @Override @@ -164,7 +169,7 @@ public class TileEntityRadioTorchLogic extends TileEntity implements INBTPacketR nbt.setByte("l", (byte) this.lastState); return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); } - + @Override public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { int last = this.lastState; @@ -186,7 +191,7 @@ public class TileEntityRadioTorchLogic extends TileEntity implements INBTPacketR if(data.hasKey("d")) this.descending = data.getBoolean("d"); for(int i = 0; i < 16; i++) if(data.hasKey("m" + i)) this.mapping[i] = data.getString("m" + i); for(int i = 0; i < 16; i++) if(data.hasKey("c" + i)) this.conditions[i] = data.getInteger("c" + i); - + this.markDirty(); } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java index 9da1cfa2a..7da701b58 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetwork.java @@ -3,12 +3,13 @@ package com.hbm.tileentity.network; import java.util.HashMap; import java.util.Iterator; +import com.hbm.interfaces.NotableComments; +import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.network.RequestNetwork.PathNode; import com.hbm.util.HashedSet; import com.hbm.util.ParticleUtil; import com.hbm.util.fauxpointtwelve.BlockPos; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.ChunkCoordIntPair; @@ -20,21 +21,22 @@ import net.minecraft.world.World; * it is all spiraling out of control * in a giant mess of nested generics, magic numbers and static global variables * may god have mercy on my soul - * + * * @author hbm * */ -public abstract class TileEntityRequestNetwork extends TileEntity { +@NotableComments +public abstract class TileEntityRequestNetwork extends TileEntityLoadedBase { public HashedSet reachableNodes = new HashedSet(); public HashedSet knownNodes = new HashedSet(); public static final int maxRange = 24; - + @Override public void updateEntity() { - + if(!worldObj.isRemote) { - + if(worldObj.getTotalWorldTime() % 20 == 0) { BlockPos pos = getCoord(); @@ -42,7 +44,7 @@ public abstract class TileEntityRequestNetwork extends TileEntity { if(this.worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)) newNode.active = false; // push new node push(worldObj, newNode); - + // remove known nodes that no longer exist // since we can assume a sane number of nodes to exist at any given time, we can run this check in full every second Iterator it = knownNodes.iterator(); @@ -56,7 +58,7 @@ public abstract class TileEntityRequestNetwork extends TileEntity { it.remove(); } } - + // draw debug crap for(PathNode known : knownNodes) { if(reachableNodes.contains(known)) ParticleUtil.spawnDroneLine(worldObj, @@ -72,41 +74,41 @@ public abstract class TileEntityRequestNetwork extends TileEntity { data.setString("text", knownNodes.size() + " / " + reachableNodes.size() + " / " + localNodes.size()); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); */ - + //both following checks run the `hasPath` function which is costly, so it only runs one op at a time - + //rescan known nodes for(PathNode known : knownNodes) { - + if(!hasPath(worldObj, pos, known.pos)) { reachableNodes.remove(known); } else { reachableNodes.add(known); } } - + //discover new nodes int newNodeLimit = 5; for(PathNode node : localNodes) { - + if(!knownNodes.contains(node) && !node.equals(pos)) { newNodeLimit--; knownNodes.add(node); if(hasPath(worldObj, pos, node.pos)) reachableNodes.add(node); } - + if(newNodeLimit <= 0) break; } } } } - + public abstract PathNode createNode(BlockPos pos); - + public BlockPos getCoord() { return new BlockPos(xCoord, yCoord + 1, zCoord); } - + /** * Performs a bidirectional scan to see if the nodes have line of sight * @param world @@ -126,34 +128,31 @@ public abstract class TileEntityRequestNetwork extends TileEntity { MovingObjectPosition mop2 = world.func_147447_a(vec2, vec1, false, true, false); return (mop0 == null || mop0.typeOfHit == mop0.typeOfHit.MISS) && (mop2 == null || mop2.typeOfHit == mop2.typeOfHit.MISS); } - + /** * Adds the position to that chunk's node list. * @param world - * @param x - * @param y - * @param z */ public static void push(World world, PathNode node) { - + HashMap> coordMap = RequestNetwork.activeWaypoints.get(world); - + if(coordMap == null) { coordMap = new HashMap(); RequestNetwork.activeWaypoints.put(world, coordMap); } - + ChunkCoordIntPair chunkPos = new ChunkCoordIntPair(node.pos.getX() >> 4, node.pos.getZ() >> 4); HashedSet posList = coordMap.get(chunkPos); - + if(posList == null) { posList = new HashedSet(); coordMap.put(chunkPos, posList); } - + posList.add(node); } - + /** * Gets all active nodes in a 5x5 chunk area, centered around the given position. * Used for finding neighbors to check connections to. @@ -169,16 +168,16 @@ public abstract class TileEntityRequestNetwork extends TileEntity { x >>= 4; z >>= 4; - + HashMap> coordMap = RequestNetwork.activeWaypoints.get(world); - + if(coordMap == null) return nodes; - + for(int i = -range; i <= range; i++) { for(int j = -range; j <= range; j++) { - + HashedSet nodeList = coordMap.get(new ChunkCoordIntPair(x + i, z + j)); - + if(nodeList != null) for(PathNode node : nodeList) { if(!pos.contains(node.pos)) { nodes.add(node); @@ -187,7 +186,7 @@ public abstract class TileEntityRequestNetwork extends TileEntity { } } } - + return nodes; } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java index 71fc659f9..73e07b745 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java @@ -1,9 +1,5 @@ package com.hbm.tileentity.network; -import com.hbm.packet.NBTPacket; -import com.hbm.packet.PacketDispatcher; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; @@ -106,11 +102,7 @@ public abstract class TileEntityRequestNetworkContainer extends TileEntityReques return null; } } - - public void networkPack(NBTTagCompound nbt, int range) { - if(!worldObj.isRemote) PacketDispatcher.wrapper.sendToAllAround(new NBTPacket(nbt, xCoord, yCoord, zCoord), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); - } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java index 156472346..60d4fc53d 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java @@ -11,18 +11,18 @@ import com.hbm.items.ModItems; import com.hbm.items.weapon.ItemAmmoArty; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IGUIProvider; 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 io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.Item; @@ -317,9 +317,8 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen } this.power = Library.chargeTEFromItems(slots, 10, this.power, this.getMaxPower()); - - NBTTagCompound data = this.writePacket(); - this.networkPack(data, 250); + + this.networkPackNT(250); this.didJustShoot = false; @@ -409,20 +408,17 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen } @Override - protected NBTTagCompound writePacket() { - NBTTagCompound data = super.writePacket(); - data.setShort("mode", mode); - if(didJustShoot) - data.setBoolean("didJustShoot", didJustShoot); - return data; + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeShort(this.mode); + buf.writeBoolean(this.didJustShoot); } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - this.mode = nbt.getShort("mode"); - if(nbt.getBoolean("didJustShoot")) - this.retracting = true; + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.mode = buf.readShort(); + this.retracting = buf.readBoolean(); } @Override @@ -465,7 +461,7 @@ public class TileEntityTurretArty extends TileEntityTurretBaseArtillery implemen @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUITurretArty(player.inventory, this); } @Callback diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index 2ec8a6b26..c5e41d3b7 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -9,10 +9,8 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.entity.logic.EntityBomber; import com.hbm.entity.missile.EntityMissileBaseNT; import com.hbm.entity.missile.EntityMissileCustom; -import com.hbm.entity.projectile.EntityBulletBaseNT; +import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.entity.train.EntityRailCarBase; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IControlReceiver; @@ -20,12 +18,14 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.container.ContainerTurretBase; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemTurretBiometry; +import com.hbm.items.weapon.sedna.BulletConfig; import com.hbm.lib.Library; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.particle.SpentCasing; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BufferUtil; import com.hbm.util.CompatExternal; import api.hbm.energymk2.IEnergyReceiverMK2; @@ -34,6 +34,7 @@ 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 io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; @@ -74,10 +75,10 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple @Override public void receiveControl(NBTTagCompound data) { - + if(data.hasKey("del")) { this.removeName(data.getInteger("del")); - + } else if(data.hasKey("name")) { this.addName(data.getString("name")); } @@ -100,7 +101,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public boolean aligned = false; //how many ticks until the next check public int searchTimer; - + public long power; public boolean targetPlayers = false; @@ -110,32 +111,32 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public Entity target; public Vec3 tPos; - + //tally marks! public int stattrak; public int casingDelay; protected SpentCasing cachedCasingConfig = null; - + /** * X - * + * * YYY * YYY * YYY Z - * + * * X -> ai slot (0) * Y -> ammo slots (1 - 9) * Z -> battery slot (10) */ - + public TileEntityTurretBaseNT() { super(11); } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - + this.power = nbt.getLong("power"); this.isOn = nbt.getBoolean("isOn"); this.targetPlayers = nbt.getBoolean("targetPlayers"); @@ -144,11 +145,11 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple this.targetMachines = nbt.getBoolean("targetMachines"); this.stattrak = nbt.getInteger("stattrak"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - + nbt.setLong("power", this.power); nbt.setBoolean("isOn", this.isOn); nbt.setBoolean("targetPlayers", this.targetPlayers); @@ -157,81 +158,80 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple nbt.setBoolean("targetMachines", this.targetMachines); nbt.setInteger("stattrak", this.stattrak); } - + public void manualSetup() { } - + @Override public void updateEntity() { - + if(worldObj.isRemote) { this.lastRotationPitch = this.rotationPitch; this.lastRotationYaw = this.rotationYaw; this.rotationPitch = this.syncRotationPitch; this.rotationYaw = this.syncRotationYaw; } - + if(!worldObj.isRemote) { this.aligned = false; this.updateConnections(); - + if(this.target != null && !target.isEntityAlive()) { this.target = null; this.stattrak++; } - + if(target != null) { if(!this.entityInLOS(this.target)) { this.target = null; } } - + if(target != null) { this.tPos = this.getEntityPos(target); } else { this.tPos = null; } - + if(isOn() && hasPower()) { - + if(tPos != null) this.alignTurret(); } else { - + this.target = null; this.tPos = null; } - + if(this.target != null && !target.isEntityAlive()) { this.target = null; this.tPos = null; this.stattrak++; } - + if(isOn() && hasPower()) { searchTimer--; - + this.setPower(this.getPower() - this.getConsumption()); - + if(searchTimer <= 0) { searchTimer = this.getDecetorInterval(); - + if(this.target == null) this.seekNewTarget(); } } else { searchTimer = 0; } - + if(this.aligned) { this.updateFiringTick(); } - + this.power = Library.chargeTEFromItems(slots, 10, this.power, this.getMaxPower()); - - NBTTagCompound data = this.writePacket(); - this.networkPack(data, 250); - + + this.networkPackNT(250); + if(usesCasings() && this.casingDelay() > 0) { if(casingDelay > 0) { casingDelay--; @@ -239,12 +239,12 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple spawnCasing(); } } - + } else { - + //this will fix the interpolation error when the turret crosses the 360° point if(Math.abs(this.lastRotationYaw - this.rotationYaw) > Math.PI) { - + if(this.lastRotationYaw < this.rotationYaw) this.lastRotationYaw += Math.PI * 2; else @@ -252,28 +252,36 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple } } } - - protected NBTTagCompound writePacket() { - - NBTTagCompound data = new NBTTagCompound(); - if(this.tPos != null) { - data.setDouble("tX", this.tPos.xCoord); - data.setDouble("tY", this.tPos.yCoord); - data.setDouble("tZ", this.tPos.zCoord); - } - data.setDouble("pitch", this.rotationPitch); - data.setDouble("yaw", this.rotationYaw); - data.setLong("power", this.power); - data.setBoolean("isOn", this.isOn); - data.setBoolean("targetPlayers", this.targetPlayers); - data.setBoolean("targetAnimals", this.targetAnimals); - data.setBoolean("targetMobs", this.targetMobs); - data.setBoolean("targetMachines", this.targetMachines); - data.setInteger("stattrak", this.stattrak); - - return data; + + @Override + public void serialize(ByteBuf buf) { + BufferUtil.writeVec3(buf, this.tPos); + buf.writeDouble(this.rotationPitch); + buf.writeDouble(this.rotationYaw); + buf.writeLong(this.power); + buf.writeBoolean(this.isOn); + buf.writeBoolean(this.targetPlayers); + buf.writeBoolean(this.targetAnimals); + buf.writeBoolean(this.targetMobs); + buf.writeBoolean(this.targetMachines); + buf.writeInt(this.stattrak); } - + + @Override + public void deserialize(ByteBuf buf) { + this.turnProgress = 2; + this.tPos = BufferUtil.readVec3(buf); + this.syncRotationPitch = buf.readDouble(); + this.syncRotationYaw = buf.readDouble(); + this.power = buf.readLong(); + this.isOn = buf.readBoolean(); + this.targetPlayers = buf.readBoolean(); + this.targetAnimals = buf.readBoolean(); + this.targetMobs = buf.readBoolean(); + this.targetMachines = buf.readBoolean(); + this.stattrak = buf.readInt(); + } + protected void updateConnections() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); @@ -292,31 +300,9 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple this.trySubscribe(worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * -1, dir); } - @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - - this.turnProgress = 2; - this.syncRotationPitch = nbt.getDouble("pitch"); - this.syncRotationYaw = nbt.getDouble("yaw"); - this.power = nbt.getLong("power"); - this.isOn = nbt.getBoolean("isOn"); - this.targetPlayers = nbt.getBoolean("targetPlayers"); - this.targetAnimals = nbt.getBoolean("targetAnimals"); - this.targetMobs = nbt.getBoolean("targetMobs"); - this.targetMachines = nbt.getBoolean("targetMachines"); - this.stattrak = nbt.getInteger("stattrak"); - - if(nbt.hasKey("tX")) { - this.tPos = Vec3.createVectorHelper(nbt.getDouble("tX"), nbt.getDouble("tY"), nbt.getDouble("tZ")); - } else { - this.tPos = null; - } - } - @Override public void handleButtonPacket(int value, int meta) { - + switch(meta) { case 0:this.isOn = !this.isOn; break; case 1:this.targetPlayers = !this.targetPlayers; break; @@ -325,51 +311,47 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple case 4:this.targetMachines = !this.targetMachines; break; } } - + public abstract void updateFiringTick(); - + public boolean usesCasings() { return false; } public int casingDelay() { return 0; } - - public BulletConfiguration getFirstConfigLoaded() { - + + public BulletConfig getFirstConfigLoaded() { + List list = getAmmoList(); - + if(list == null || list.isEmpty()) return null; - + //doing it like this will fire slots in the right order, not in the order of the configs //you know, the weird thing the IItemGunBase does for(int i = 1; i < 10; i++) { - + if(slots[i] != null) { - + for(Integer c : list) { //we can afford all this extra iteration trash on the count that a turret has at most like 4 bullet configs - - BulletConfiguration conf = BulletConfigSyncingUtil.pullConfig(c); - - if(conf.ammo != null && conf.ammo.matchesRecipe(slots[i], true)) - return conf; + + BulletConfig conf = BulletConfig.configs.get(c); + if(conf.ammo != null && conf.ammo.matchesRecipe(slots[i], true)) return conf; } } } - + return null; } - - public void spawnBullet(BulletConfiguration bullet) { - + + public void spawnBullet(BulletConfig bullet, float baseDamage) { + Vec3 pos = this.getTurretPos(); Vec3 vec = Vec3.createVectorHelper(this.getBarrelLength(), 0, 0); vec.rotateAroundZ((float) -this.rotationPitch); vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); - - EntityBulletBaseNT proj = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.getKey(bullet)); - proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, 0.0F, 0.0F); - - proj.setThrowableHeading(vec.xCoord, vec.yCoord, vec.zCoord, bullet.velocity, bullet.spread); + + EntityBulletBaseMK4 proj = new EntityBulletBaseMK4(worldObj, bullet, baseDamage, bullet.spread, (float) rotationYaw, (float) rotationPitch); + proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, proj.rotationYaw, proj.rotationPitch); worldObj.spawnEntityInWorld(proj); - + if(usesCasings()) { if(this.casingDelay() == 0) { spawnCasing(); @@ -378,118 +360,118 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple } } } - + public void conusmeAmmo(ComparableStack ammo) { - + for(int i = 1; i < 10; i++) { - + if(slots[i] != null && ammo.matchesRecipe(slots[i], true)) { - + this.decrStackSize(i, 1); return; } } - + this.markDirty(); } - + /** * Reads the namelist from the AI chip in slot 0 * @return null if there is either no chip to be found or if the name list is empty, otherwise it just reads the strings from the chip's NBT */ public List getWhitelist() { - + if(slots[0] != null && slots[0].getItem() == ModItems.turret_chip) { - + String[] array = ItemTurretBiometry.getNames(slots[0]); - + if(array == null) return null; - + return Arrays.asList(ItemTurretBiometry.getNames(slots[0])); } - + return null; } - + /** * Appends a new name to the chip * @param name */ public void addName(String name) { - + if(slots[0] != null && slots[0].getItem() == ModItems.turret_chip) { ItemTurretBiometry.addName(slots[0], name); } } - + /** - * Removes the chip's entry at a given + * Removes the chip's entry at a given * @param index */ public void removeName(int index) { - + if(slots[0] != null && slots[0].getItem() == ModItems.turret_chip) { - + String[] array = ItemTurretBiometry.getNames(slots[0]); - + if(array == null) return; - + List names = new ArrayList(Arrays.asList(array)); ItemTurretBiometry.clearNames(slots[0]); - + names.remove(index); - + for(String name : names) ItemTurretBiometry.addName(slots[0], name); } } - + /** * Finds the nearest acceptable target within range and in line of sight */ protected void seekNewTarget() { - + Vec3 pos = this.getTurretPos(); double range = this.getDecetorRange(); List entities = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(pos.xCoord, pos.yCoord, pos.zCoord, pos.xCoord, pos.yCoord, pos.zCoord).expand(range, range, range)); - + Entity target = null; double closest = range; - + for(Entity entity : entities) { Vec3 ent = this.getEntityPos(entity); Vec3 delta = Vec3.createVectorHelper(ent.xCoord - pos.xCoord, ent.yCoord - pos.yCoord, ent.zCoord - pos.zCoord); - + double dist = delta.lengthVector(); - + //check if it's in range if(dist > range) continue; - + //check if we should even fire at this entity if(!entityAcceptableTarget(entity)) continue; - + //check for visibility if(!entityInLOS(entity)) continue; - + //replace current target if this one is closer if(dist < closest) { closest = dist; target = entity; } } - + this.target = target; - + if(target != null) this.tPos = this.getEntityPos(this.target); } - + /** * Turns the turret by a specific amount of degrees towards the target * Assumes that the target is not null @@ -497,7 +479,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple protected void alignTurret() { this.turnTowards(tPos); } - + /** * Turns the turret towards the specified position */ @@ -505,32 +487,32 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple Vec3 pos = this.getTurretPos(); Vec3 delta = Vec3.createVectorHelper(ent.xCoord - pos.xCoord, ent.yCoord - pos.yCoord, ent.zCoord - pos.zCoord); - + double targetPitch = Math.asin(delta.yCoord / delta.lengthVector()); double targetYaw = -Math.atan2(delta.xCoord, delta.zCoord); - + this.turnTowardsAngle(targetPitch, targetYaw); } - + public void turnTowardsAngle(double targetPitch, double targetYaw) { - + double turnYaw = Math.toRadians(this.getTurretYawSpeed()); double turnPitch = Math.toRadians(this.getTurretPitchSpeed()); double pi2 = Math.PI * 2; - + //if we are about to overshoot the target by turning, just snap to the correct rotation if(Math.abs(this.rotationPitch - targetPitch) < turnPitch || Math.abs(this.rotationPitch - targetPitch) > pi2 - turnPitch) { this.rotationPitch = targetPitch; } else { - + if(targetPitch > this.rotationPitch) this.rotationPitch += turnPitch; else this.rotationPitch -= turnPitch; } - + double deltaYaw = (targetYaw - this.rotationYaw) % pi2; - + //determines what direction the turret should turn //used to prevent situations where the turret would do almost a full turn when //the target is only a couple degrees off while being on the other side of the 360° line @@ -544,68 +526,68 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple dir = -1; else if(deltaYaw > 0) dir = 1; - + if(Math.abs(this.rotationYaw - targetYaw) < turnYaw || Math.abs(this.rotationYaw - targetYaw) > pi2 - turnYaw) { this.rotationYaw = targetYaw; } else { this.rotationYaw += turnYaw * dir; } - + double deltaPitch = targetPitch - this.rotationPitch; deltaYaw = targetYaw - this.rotationYaw; - + double deltaAngle = Math.sqrt(deltaYaw * deltaYaw + deltaPitch * deltaPitch); this.rotationYaw = this.rotationYaw % pi2; this.rotationPitch = this.rotationPitch % pi2; - + if(deltaAngle <= Math.toRadians(this.getAcceptableInaccuracy())) { this.aligned = true; } } - + /** * Checks line of sight to the passed entity along with whether the angle falls within swivel range * @return */ public boolean entityInLOS(Entity e) { - + if(e.isDead || !e.isEntityAlive()) return false; - + if(!hasThermalVision() && e instanceof EntityLivingBase && ((EntityLivingBase)e).isPotionActive(Potion.invisibility)) return false; - + Vec3 pos = this.getTurretPos(); Vec3 ent = this.getEntityPos(e); Vec3 delta = Vec3.createVectorHelper(ent.xCoord - pos.xCoord, ent.yCoord - pos.yCoord, ent.zCoord - pos.zCoord); double length = delta.lengthVector(); - + if(length < this.getDecetorGrace() || length > this.getDecetorRange() * 1.1) //the latter statement is only relevant for entities that have already been detected return false; - + delta = delta.normalize(); double pitch = Math.asin(delta.yCoord / delta.lengthVector()); double pitchDeg = Math.toDegrees(pitch); - + //check if the entity is within swivel range if(pitchDeg < -this.getTurretDepression() || pitchDeg > this.getTurretElevation()) return false; - + return !Library.isObstructedOpaque(worldObj, ent.xCoord, ent.yCoord, ent.zCoord, pos.xCoord, pos.yCoord, pos.zCoord); } - + /** * Returns true if the entity is considered for targeting * @return */ public boolean entityAcceptableTarget(Entity e) { - + if(e.isDead || !e.isEntityAlive()) return false; - + for(Class c : CompatExternal.turretTargetBlacklist) if(c.isAssignableFrom(e.getClass())) return false; - + for(Class c : CompatExternal.turretTargetCondition.keySet()) { if(c.isAssignableFrom(e.getClass())) { BiFunction lambda = CompatExternal.turretTargetCondition.get(c); @@ -618,9 +600,9 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple } List wl = getWhitelist(); - + if(wl != null) { - + if(e instanceof EntityPlayer) { if(wl.contains(((EntityPlayer)e).getDisplayName())) { return false; @@ -631,14 +613,14 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple } } } - + if(targetAnimals) { - + if(e instanceof IAnimals) return true; if(e instanceof INpc) return true; for(Class c : CompatExternal.turretTargetFriendly) if(c.isAssignableFrom(e.getClass())) return true; } - + if(targetMobs) { //never target the ender dragon directly @@ -647,7 +629,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple if(e instanceof IMob) return true; for(Class c : CompatExternal.turretTargetHostile) if(c.isAssignableFrom(e.getClass())) return true; } - + if(targetMachines) { if(e instanceof IRadarDetectableNT && !((IRadarDetectableNT)e).canBeSeenBy(this)) return false; @@ -658,17 +640,17 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple if(e instanceof EntityBomber) return true; for(Class c : CompatExternal.turretTargetMachine) if(c.isAssignableFrom(e.getClass())) return true; } - + if(targetPlayers ) { - + if(e instanceof FakePlayer) return false; if(e instanceof EntityPlayer) return true; for(Class c : CompatExternal.turretTargetPlayer) if(c.isAssignableFrom(e.getClass())) return true; } - + return false; } - + /** * How many degrees the turret can deviate from the target to be acceptable to fire at * @return @@ -676,7 +658,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public double getAcceptableInaccuracy() { return 5; } - + /** * How many degrees the turret can rotate per tick (4.5°/t = 90°/s or a half turn in two seconds) * @return @@ -684,7 +666,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public double getTurretYawSpeed() { return 4.5D; } - + /** * How many degrees the turret can lift per tick (3°/t = 60°/s or roughly the lowest to the highest point of an average turret in one second) * @return @@ -708,7 +690,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public double getTurretElevation() { return 30D; } - + /** * How many ticks until a target rescan is required * @return @@ -716,7 +698,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public int getDecetorInterval() { return 10; } - + /** * How far away an entity can be to be picked up * @return @@ -724,7 +706,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public double getDecetorRange() { return 32D; } - + /** * How far away an entity needs to be to be picked up * @return @@ -732,7 +714,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public double getDecetorGrace() { return 3D; } - + /** * The pivot point of the turret, larger models have a default of 1.5 * @return @@ -740,7 +722,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public double getHeightOffset() { return 1.5D; } - + /** * Horizontal offset for the spawn point of bullets * @return @@ -756,7 +738,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public boolean hasThermalVision() { return true; } - + /** * The pivot point of the turret, this position is used for LOS calculation and more * @return @@ -765,7 +747,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple Vec3 offset = getHorizontalOffset(); return Vec3.createVectorHelper(xCoord + offset.xCoord, yCoord + getHeightOffset(), zCoord + offset.zCoord); } - + /** * The XZ offset for a standard 2x2 turret base * @return @@ -779,10 +761,10 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple return Vec3.createVectorHelper(1, 0, 0); if(meta == 5) return Vec3.createVectorHelper(0, 0, 1); - + return Vec3.createVectorHelper(0, 0, 0); } - + /** * The pivot point of the turret, this position is used for LOS calculation and more * @return @@ -790,32 +772,32 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public Vec3 getEntityPos(Entity e) { return Vec3.createVectorHelper(e.posX, e.posY + e.height * 0.5 - e.getYOffset(), e.posZ); } - + /** * Yes, new turrets fire BulletNTs. * @return */ protected abstract List getAmmoList(); - + @SideOnly(Side.CLIENT) protected List ammoStacks; @SideOnly(Side.CLIENT) public List getAmmoTypesForDisplay() { - + if(ammoStacks != null) return ammoStacks; - + ammoStacks = new ArrayList(); - + for(Integer i : getAmmoList()) { - BulletConfiguration config = BulletConfigSyncingUtil.pullConfig(i); - + BulletConfig config = BulletConfig.configs.get(i); + if(config != null && config.ammo != null) { ammoStacks.add(config.ammo.toStack()); } } - + return ammoStacks; } @@ -832,11 +814,11 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public boolean hasPower() { return this.getPower() >= this.getConsumption(); } - + public boolean isOn() { return this.isOn; } - + @Override public void setPower(long i) { this.power = i; @@ -846,15 +828,15 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public long getPower() { return this.power; } - + public int getPowerScaled(int scale) { return (int)(power * scale / this.getMaxPower()); } - + public long getConsumption() { return 100; } - + @Override public AxisAlignedBB getRenderBoundingBox() { return TileEntity.INFINITE_EXTENT_AABB; @@ -875,20 +857,20 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public void closeInventory() { this.worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "hbm:block.closeC", 1.0F, 1.0F); } - + protected Vec3 getCasingSpawnPos() { return this.getTurretPos(); } - + protected CasingEjector getEjector() { return null; } - + protected void spawnCasing() { - + if(cachedCasingConfig == null) return; CasingEjector ej = getEjector(); - + Vec3 spawn = this.getCasingSpawnPos(); NBTTagCompound data = new NBTTagCompound(); data.setString("type", "casing"); @@ -898,10 +880,10 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple data.setString("name", cachedCasingConfig.getName()); if(ej != null) data.setInteger("ej", ej.getId()); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, spawn.xCoord, spawn.yCoord, spawn.zCoord), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - + cachedCasingConfig = null; } - + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerTurretBase(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBrandon.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBrandon.java index dd6c17687..e04fef2f6 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBrandon.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBrandon.java @@ -4,7 +4,6 @@ import java.util.List; 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.world.World; @@ -42,7 +41,7 @@ public class TileEntityTurretBrandon extends TileEntityTurretBaseNT { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java index 6ca6c4e35..f7dd78176 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java @@ -3,17 +3,16 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.inventory.gui.GUITurretChekhov; -import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.XFactory50; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; 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.nbt.NBTTagCompound; import net.minecraft.util.Vec3; @@ -27,15 +26,11 @@ public class TileEntityTurretChekhov extends TileEntityTurretBaseNT { //also having a floaty `static` like this looks fun //idk if it's just me though static { - configs.add(BulletConfigSyncingUtil.BMG50_NORMAL); - configs.add(BulletConfigSyncingUtil.BMG50_INCENDIARY); - configs.add(BulletConfigSyncingUtil.BMG50_EXPLOSIVE); - configs.add(BulletConfigSyncingUtil.BMG50_AP); - configs.add(BulletConfigSyncingUtil.BMG50_DU); - configs.add(BulletConfigSyncingUtil.BMG50_STAR); - configs.add(BulletConfigSyncingUtil.BMG50_PHOSPHORUS); - configs.add(BulletConfigSyncingUtil.BMG50_SLEEK); - configs.add(BulletConfigSyncingUtil.CHL_BMG50); + configs.add(XFactory50.bmg50_sp.id); + configs.add(XFactory50.bmg50_fmj.id); + configs.add(XFactory50.bmg50_jhp.id); + configs.add(XFactory50.bmg50_ap.id); + configs.add(XFactory50.bmg50_du.id); } @Override @@ -77,11 +72,11 @@ public class TileEntityTurretChekhov extends TileEntityTurretBaseNT { if(timer > 20 && timer % getDelay() == 0) { - BulletConfiguration conf = this.getFirstConfigLoaded(); + BulletConfig conf = this.getFirstConfigLoaded(); if(conf != null) { - this.cachedCasingConfig = conf.spentCasing; - this.spawnBullet(conf); + this.cachedCasingConfig = conf.casing; + this.spawnBullet(conf, 10F); this.conusmeAmmo(conf.ammo); this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.chekhov_fire", 2.0F, 1.0F); @@ -175,7 +170,7 @@ public class TileEntityTurretChekhov extends TileEntityTurretBaseNT { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUITurretChekhov(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFriendly.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFriendly.java index 3a0d0126d..c4c5c122b 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFriendly.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFriendly.java @@ -3,13 +3,12 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; -import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.CasingEjector; import com.hbm.inventory.gui.GUITurretFriendly; +import com.hbm.items.weapon.sedna.factory.XFactory556mm; 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.world.World; @@ -18,11 +17,10 @@ public class TileEntityTurretFriendly extends TileEntityTurretChekhov { static List configs = new ArrayList(); static { - configs.add(BulletConfigSyncingUtil.R5_NORMAL); - configs.add(BulletConfigSyncingUtil.R5_EXPLOSIVE); - configs.add(BulletConfigSyncingUtil.R5_DU); - configs.add(BulletConfigSyncingUtil.R5_STAR); - configs.add(BulletConfigSyncingUtil.CHL_R5); + configs.add(XFactory556mm.r556_sp.id); + configs.add(XFactory556mm.r556_fmj.id); + configs.add(XFactory556mm.r556_jhp.id); + configs.add(XFactory556mm.r556_ap.id); } @Override @@ -49,7 +47,7 @@ public class TileEntityTurretFriendly extends TileEntityTurretChekhov { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUITurretFriendly(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java index 924ec352c..ccd00b3e1 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java @@ -4,9 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.hbm.blocks.BlockDummyable; -import com.hbm.entity.projectile.EntityBulletBaseNT; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; +import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; @@ -15,14 +13,17 @@ import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Liquid; import com.hbm.inventory.gui.GUITurretFritz; import com.hbm.items.ModItems; -import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.items.weapon.sedna.factory.XFactoryFlamer; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import api.hbm.fluid.IFluidStandardReceiver; +import com.hbm.tileentity.IFluidCopiable; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -30,7 +31,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFluidStandardReceiver { +public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFluidStandardReceiver, IFluidCopiable { public FluidTank tank; @@ -57,7 +58,7 @@ public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFl ammoStacks = new ArrayList(); - ammoStacks.add(new ItemStack(ModItems.ammo_fuel)); + ammoStacks.add(new ItemStack(ModItems.ammo_standard, 1, EnumAmmo.FLAME_DIESEL.ordinal())); for(FluidType type : Fluids.getInNiceOrder()) { if(type.hasTrait(FT_Combustible.class) && type.hasTrait(FT_Liquid.class)) { @@ -104,7 +105,6 @@ public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFl if(this.tank.getTankType().hasTrait(FT_Flammable.class) && this.tank.getTankType().hasTrait(FT_Liquid.class) && this.tank.getFill() >= 2) { FT_Flammable trait = this.tank.getTankType().getTrait(FT_Flammable.class); - BulletConfiguration conf = BulletConfigSyncingUtil.pullConfig(BulletConfigSyncingUtil.FLA_NORMAL); this.tank.setFill(this.tank.getFill() - 2); Vec3 pos = this.getTurretPos(); @@ -112,11 +112,8 @@ public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFl vec.rotateAroundZ((float) -this.rotationPitch); vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); - EntityBulletBaseNT proj = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.getKey(conf)); - proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, 0.0F, 0.0F); - proj.overrideDamage = (float) (trait.getHeatEnergy() / 500_000F); - - proj.setThrowableHeading(vec.xCoord, vec.yCoord, vec.zCoord, conf.velocity, conf.spread); + EntityBulletBaseMK4 proj = new EntityBulletBaseMK4(worldObj, XFactoryFlamer.flame_nograv, (float) (trait.getHeatEnergy() / 500_000F), 0.05F, (float) rotationYaw, (float) rotationPitch); + proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, proj.rotationYaw, proj.rotationPitch); worldObj.spawnEntityInWorld(proj); worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:weapon.flamethrowerShoot", 2F, 1F + worldObj.rand.nextFloat() * 0.5F); @@ -144,7 +141,7 @@ public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFl for(int i = 1; i < 10; i++) { - if(slots[i] != null && slots[i].getItem() == ModItems.ammo_fuel) { + if(slots[i] != null && slots[i].getItem() == ModItems.ammo_standard && slots[i].getItemDamage() == EnumAmmo.FLAME_DIESEL.ordinal()) { if(this.tank.getTankType() == Fluids.DIESEL && this.tank.getFill() + 1000 <= this.tank.getMaxFill()) { this.tank.setFill(this.tank.getFill() + 1000); this.decrStackSize(i, 1); @@ -153,18 +150,17 @@ public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFl } } } - + @Override - protected NBTTagCompound writePacket() { - NBTTagCompound data = super.writePacket(); - tank.writeToNBT(data, "t"); - return data; + public void serialize(ByteBuf buf) { + super.serialize(buf); + tank.serialize(buf); } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - tank.readFromNBT(nbt, "t"); + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + tank.deserialize(buf); } @Override //TODO: clean this shit up @@ -225,7 +221,12 @@ public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFl @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUITurretFritz(player.inventory, this); } + + @Override + public FluidTank getTankToPaste() { + return tank; + } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java index 149dc136c..30c24e571 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHIMARS.java @@ -17,10 +17,10 @@ import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -93,7 +93,7 @@ public class TileEntityTurretHIMARS extends TileEntityTurretBaseArtillery implem @Override public double getDecetorGrace() { - return 32D; + return 250D; } @Override @@ -249,9 +249,8 @@ public class TileEntityTurretHIMARS extends TileEntityTurretBaseArtillery implem } this.power = Library.chargeTEFromItems(slots, 10, this.power, this.getMaxPower()); - - NBTTagCompound data = this.writePacket(); - this.networkPack(data, 250); + + this.networkPackNT(250); } else { @@ -267,22 +266,21 @@ public class TileEntityTurretHIMARS extends TileEntityTurretBaseArtillery implem } @Override - protected NBTTagCompound writePacket() { - NBTTagCompound data = super.writePacket(); - data.setShort("mode", this.mode); - data.setInteger("type", this.typeLoaded); - data.setInteger("ammo", this.ammo); - data.setFloat("crane", crane); - return data; + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeShort(this.mode); + buf.writeShort(this.typeLoaded); + buf.writeInt(this.ammo); + buf.writeFloat(this.crane); } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - this.mode = nbt.getShort("mode"); - this.typeLoaded = nbt.getShort("type"); - this.ammo = nbt.getInteger("ammo"); - this.crane = nbt.getFloat("crane"); + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.mode = buf.readShort(); + this.typeLoaded = buf.readShort(); + this.ammo = buf.readInt(); + this.crane = buf.readFloat(); } public boolean hasAmmo() { @@ -374,7 +372,7 @@ public class TileEntityTurretHIMARS extends TileEntityTurretBaseArtillery implem @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUITurretHIMARS(player.inventory, this); } @Callback diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java index 5afbd8afa..71993d569 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java @@ -4,21 +4,20 @@ import java.util.ArrayList; import java.util.List; import com.hbm.config.WeaponConfig; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.handler.guncfg.GunDGKFactory; import com.hbm.inventory.gui.GUITurretHoward; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.XFactoryTurret; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.particle.SpentCasing; import com.hbm.util.EntityDamageUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; 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.nbt.NBTTagCompound; import net.minecraft.util.Vec3; @@ -29,7 +28,7 @@ public class TileEntityTurretHoward extends TileEntityTurretBaseNT { static List configs = new ArrayList(); static { - configs.add(BulletConfigSyncingUtil.DGK_NORMAL); + configs.add(XFactoryTurret.dgk_normal.id); } @Override @@ -115,7 +114,7 @@ public class TileEntityTurretHoward extends TileEntityTurretBaseNT { } else { if(loaded <= 0) { - BulletConfiguration conf = this.getFirstConfigLoaded(); + BulletConfig conf = this.getFirstConfigLoaded(); if(conf != null) { this.conusmeAmmo(conf.ammo); @@ -216,7 +215,7 @@ public class TileEntityTurretHoward extends TileEntityTurretBaseNT { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUITurretHoward(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHowardDamaged.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHowardDamaged.java index 26536ffb5..4ef7fd51e 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHowardDamaged.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHowardDamaged.java @@ -3,14 +3,13 @@ package com.hbm.tileentity.turret; import com.hbm.config.WeaponConfig; import com.hbm.handler.guncfg.GunDGKFactory; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.EntityDamageUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -108,7 +107,7 @@ public class TileEntityTurretHowardDamaged extends TileEntityTurretHoward { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java index f89b81cbd..b2af72b35 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java @@ -3,32 +3,31 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.inventory.gui.GUITurretJeremy; -import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.XFactoryTurret; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; 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.nbt.NBTTagCompound; import net.minecraft.util.Vec3; import net.minecraft.world.World; public class TileEntityTurretJeremy extends TileEntityTurretBaseNT { - + static List configs = new ArrayList(); static { - configs.add(BulletConfigSyncingUtil.SHELL_NORMAL); - configs.add(BulletConfigSyncingUtil.SHELL_EXPLOSIVE); - configs.add(BulletConfigSyncingUtil.SHELL_AP); - configs.add(BulletConfigSyncingUtil.SHELL_DU); - configs.add(BulletConfigSyncingUtil.SHELL_W9); + configs.add(XFactoryTurret.shell_normal.id); + configs.add(XFactoryTurret.shell_explosive.id); + configs.add(XFactoryTurret.shell_ap.id); + configs.add(XFactoryTurret.shell_du.id); + configs.add(XFactoryTurret.shell_w9.id); } @Override @@ -88,11 +87,11 @@ public class TileEntityTurretJeremy extends TileEntityTurretBaseNT { if(timer % 40 == 0) { - BulletConfiguration conf = this.getFirstConfigLoaded(); + BulletConfig conf = this.getFirstConfigLoaded(); if(conf != null) { - this.cachedCasingConfig = conf.spentCasing; - this.spawnBullet(conf); + this.cachedCasingConfig = conf.casing; + this.spawnBullet(conf, 50F); this.conusmeAmmo(conf.ammo); this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.jeremy_fire", 4.0F, 1.0F); Vec3 pos = this.getTurretPos(); @@ -142,7 +141,7 @@ public class TileEntityTurretJeremy extends TileEntityTurretBaseNT { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUITurretJeremy(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretMaxwell.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretMaxwell.java index 91dc3e9ab..5b8f99bbd 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretMaxwell.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretMaxwell.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import com.hbm.blocks.ModBlocks; @@ -8,8 +9,8 @@ import com.hbm.inventory.gui.GUITurretMaxwell; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.potion.HbmPotion; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.util.BobMathUtil; @@ -19,7 +20,7 @@ import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -44,10 +45,10 @@ public class TileEntityTurretMaxwell extends TileEntityTurretBaseNT implements I @SideOnly(Side.CLIENT) public List getAmmoTypesForDisplay() { - + if(ammoStacks != null) return ammoStacks; - + ammoStacks = new ArrayList(); ammoStacks.add(new ItemStack(ModItems.upgrade_speed_1)); @@ -67,7 +68,7 @@ public class TileEntityTurretMaxwell extends TileEntityTurretBaseNT implements I ammoStacks.add(new ItemStack(ModItems.upgrade_overdrive_3)); ammoStacks.add(new ItemStack(ModItems.upgrade_5g)); ammoStacks.add(new ItemStack(ModItems.upgrade_screm)); - + return ammoStacks; } @@ -97,15 +98,16 @@ public class TileEntityTurretMaxwell extends TileEntityTurretBaseNT implements I } @Override - public int getMaxLevel(UpgradeType type) { - if(type == UpgradeType.SPEED) return 27; - if(type == UpgradeType.POWER) return 27; - if(type == UpgradeType.EFFECT) return 27; - if(type == UpgradeType.AFTERBURN) return 27; - if(type == UpgradeType.OVERDRIVE) return 27; - return 0; + public HashMap getValidUpgrades() { + HashMap upgrades = new HashMap<>(); + upgrades.put(UpgradeType.SPEED, 27); + upgrades.put(UpgradeType.POWER, 27); + upgrades.put(UpgradeType.EFFECT, 27); + upgrades.put(UpgradeType.AFTERBURN, 27); + upgrades.put(UpgradeType.OVERDRIVE, 27); + return upgrades; } - + @Override public double getAcceptableInaccuracy() { return 2; @@ -160,28 +162,28 @@ public class TileEntityTurretMaxwell extends TileEntityTurretBaseNT implements I public double getHeightOffset() { return 2D; } - + public int beam; public double lastDist; - + @Override public void updateEntity() { - + if(worldObj.isRemote) { - + if(this.tPos != null) { Vec3 pos = this.getTurretPos(); double length = Vec3.createVectorHelper(tPos.xCoord - pos.xCoord, tPos.yCoord - pos.yCoord, tPos.zCoord - pos.zCoord).lengthVector(); this.lastDist = length; } - + if(beam > 0) beam--; } else { - + if(checkDelay <= 0) { checkDelay = 20; - + this.redLevel = 0; this.greenLevel = 0; this.blueLevel = 0; @@ -189,11 +191,11 @@ public class TileEntityTurretMaxwell extends TileEntityTurretBaseNT implements I this.pinkLevel = 0; this._5g = false; this.screm = false; - + for(int i = 1; i < 10; i++) { if(slots[i] != null) { Item item = slots[i].getItem(); - + if(item == ModItems.upgrade_speed_1) redLevel += 1; if(item == ModItems.upgrade_speed_2) redLevel += 2; if(item == ModItems.upgrade_speed_3) redLevel += 3; @@ -214,13 +216,13 @@ public class TileEntityTurretMaxwell extends TileEntityTurretBaseNT implements I } } } - + checkDelay--; } - + super.updateEntity(); } - + int redLevel; int greenLevel; int blueLevel; @@ -228,14 +230,14 @@ public class TileEntityTurretMaxwell extends TileEntityTurretBaseNT implements I int pinkLevel; boolean _5g; boolean screm; - + int checkDelay; @Override public void updateFiringTick() { - + long demand = this.getConsumption() * 10; - + if(this.target != null && this.getPower() >= demand) { if(_5g && target instanceof EntityPlayer) { @@ -244,42 +246,54 @@ public class TileEntityTurretMaxwell extends TileEntityTurretBaseNT implements I } else { EntityDamageUtil.attackEntityFromIgnoreIFrame(this.target, ModDamageSource.microwave, (this.blackLevel * 10 + this.redLevel + 1F) * 0.25F); } - + if(pinkLevel > 0) this.target.setFire(this.pinkLevel * 3); - + if(!this.target.isEntityAlive() && this.target instanceof EntityLivingBase) { NBTTagCompound vdat = new NBTTagCompound(); vdat.setString("type", "giblets"); vdat.setInteger("ent", this.target.getEntityId()); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(vdat, this.target.posX, this.target.posY + this.target.height * 0.5, this.target.posZ), new TargetPoint(this.target.dimension, this.target.posX, this.target.posY + this.target.height * 0.5, this.target.posZ, 150)); - + if(this.screm) worldObj.playSoundEffect(this.target.posX, this.target.posY, this.target.posZ, "hbm:block.screm", 20.0F, 1.0F); else worldObj.playSoundEffect(this.target.posX, this.target.posY, this.target.posZ, "mob.zombie.woodbreak", 2.0F, 0.95F + worldObj.rand.nextFloat() * 0.2F); } - + this.power -= demand; - - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("shot", true); - this.networkPack(data, 250); + + this.shot = true; + this.networkPackNT(250); + this.shot = false; + } + } + + private boolean shot = false; + + @Override + public void serialize(ByteBuf buf) { + if (this.shot) + buf.writeBoolean(true); + else { + buf.writeBoolean(false); + super.serialize(buf); } } @Override - public void networkUnpack(NBTTagCompound nbt) { - - if(nbt.hasKey("shot")) - beam = 5; + public void deserialize(ByteBuf buf) { + boolean shot = buf.readBoolean(); + if(shot) + this.beam = 5; else - super.networkUnpack(nbt); + super.deserialize(buf); } @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUITurretMaxwell(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java index f6c95d847..9e2162412 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java @@ -3,19 +3,16 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; -import com.hbm.entity.projectile.EntityBulletBaseNT; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.inventory.gui.GUITurretRichard; -import com.hbm.items.ItemAmmoEnums.AmmoRocket; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.XFactoryRocket; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; @@ -24,22 +21,11 @@ import net.minecraft.world.World; public class TileEntityTurretRichard extends TileEntityTurretBaseNT { static List configs = new ArrayList(); - + static { - configs.add(BulletConfigSyncingUtil.ROCKET_NORMAL); - configs.add(BulletConfigSyncingUtil.ROCKET_HE); - configs.add(BulletConfigSyncingUtil.ROCKET_INCENDIARY); - configs.add(BulletConfigSyncingUtil.ROCKET_SHRAPNEL); - configs.add(BulletConfigSyncingUtil.ROCKET_EMP); - configs.add(BulletConfigSyncingUtil.ROCKET_GLARE); - configs.add(BulletConfigSyncingUtil.ROCKET_SLEEK); - configs.add(BulletConfigSyncingUtil.ROCKET_NUKE); - configs.add(BulletConfigSyncingUtil.ROCKET_CHAINSAW); - configs.add(BulletConfigSyncingUtil.ROCKET_TOXIC); - configs.add(BulletConfigSyncingUtil.ROCKET_PHOSPHORUS); - configs.add(BulletConfigSyncingUtil.ROCKET_CANISTER); + for(BulletConfig cfg : XFactoryRocket.rocket_ml) configs.add(cfg.id); } - + @Override protected List getAmmoList() { return configs; @@ -69,7 +55,7 @@ public class TileEntityTurretRichard extends TileEntityTurretBaseNT { public long getMaxPower() { return 10000; } - + @Override public double getDecetorGrace() { return 8D; @@ -79,68 +65,80 @@ public class TileEntityTurretRichard extends TileEntityTurretBaseNT { public double getDecetorRange() { return 64D; } - + int timer; public int loaded; int reload; - + @Override public void updateEntity() { super.updateEntity(); - + if(!worldObj.isRemote) { - + if(reload > 0) { reload--; - + if(reload == 0) this.loaded = 17; } - + if(loaded <= 0 && reload <= 0 && this.getFirstConfigLoaded() != null) { reload = 100; } - + if(this.getFirstConfigLoaded() == null) { this.loaded = 0; } - - NBTTagCompound data = new NBTTagCompound(); - data.setInteger("loaded", this.loaded); - this.networkPack(data, 250); + + this.isTurretPacket = true; + this.networkPackNT(250); + this.isTurretPacket = false; + } + } + + // wow so descriptive, i dont wanna hear it; it solves the problem + private boolean isTurretPacket = false; + + @Override + public void serialize(ByteBuf buf) { + if (this.isTurretPacket) { + buf.writeBoolean(true); + buf.writeInt(this.loaded); + } else { + buf.writeBoolean(false); + super.serialize(buf); } } @Override - public void networkUnpack(NBTTagCompound nbt) { - - if(nbt.hasKey("loaded")) - this.loaded = nbt.getInteger("loaded"); - else - super.networkUnpack(nbt); + public void deserialize(ByteBuf buf) { + if(buf.readBoolean()) { + this.loaded = buf.readInt(); + } else + super.deserialize(buf); } @Override public void updateFiringTick() { - + if(reload > 0) return; - + timer++; - + if(timer > 0 && timer % 10 == 0) { - - BulletConfiguration conf = this.getFirstConfigLoaded(); - + + BulletConfig conf = this.getFirstConfigLoaded(); + if(conf != null) { - this.spawnBullet(conf); + this.spawnBullet(conf, 30F); this.conusmeAmmo(conf.ammo); this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.richard_fire", 2.0F, 1.0F); this.loaded--; - - if(conf.ammo.equals(new ComparableStack(ModItems.ammo_rocket.stackFromEnum(AmmoRocket.NUCLEAR)))) - timer = -50; - + + //if(conf.ammo.equals(new ComparableStack(ModItems.ammo_standard, EnumAmmo.ROCKET_DEMO))) timer = -50; + } else { this.loaded = 0; } @@ -148,26 +146,25 @@ public class TileEntityTurretRichard extends TileEntityTurretBaseNT { } @Override - public void spawnBullet(BulletConfiguration bullet) { - + public void spawnBullet(BulletConfig bullet, float baseDamage) { + Vec3 pos = this.getTurretPos(); Vec3 vec = Vec3.createVectorHelper(this.getBarrelLength(), 0, 0); vec.rotateAroundZ((float) -this.rotationPitch); vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); - - EntityBulletBaseNT proj = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.getKey(bullet)); - proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, 0.0F, 0.0F); - - proj.setThrowableHeading(vec.xCoord, vec.yCoord, vec.zCoord, bullet.velocity * 0.75F, bullet.spread); + + EntityBulletBaseMK4 proj = new EntityBulletBaseMK4(worldObj, bullet, baseDamage, bullet.spread, (float) rotationYaw, (float) rotationPitch); + proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, proj.rotationYaw, proj.rotationPitch); + proj.lockonTarget = this.target; worldObj.spawnEntityInWorld(proj); } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); this.loaded = nbt.getInteger("loaded"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -176,7 +173,7 @@ public class TileEntityTurretRichard extends TileEntityTurretBaseNT { @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUITurretRichard(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java index 09b8d22ee..0561ee499 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java @@ -3,19 +3,19 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.inventory.container.ContainerTurretBase; import com.hbm.inventory.gui.GUITurretSentry; -import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.XFactory9mm; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -36,15 +36,14 @@ public class TileEntityTurretSentry extends TileEntityTurretBaseNT implements IG public double lastBarrelRightPos = 0; static List configs = new ArrayList(); - + static { - configs.add(BulletConfigSyncingUtil.R5_NORMAL); - configs.add(BulletConfigSyncingUtil.R5_EXPLOSIVE); - configs.add(BulletConfigSyncingUtil.R5_DU); - configs.add(BulletConfigSyncingUtil.R5_STAR); - configs.add(BulletConfigSyncingUtil.CHL_R5); + configs.add(XFactory9mm.p9_sp.id); + configs.add(XFactory9mm.p9_fmj.id); + configs.add(XFactory9mm.p9_jhp.id); + configs.add(XFactory9mm.p9_ap.id); } - + @Override protected List getAmmoList() { return configs; @@ -54,7 +53,7 @@ public class TileEntityTurretSentry extends TileEntityTurretBaseNT implements IG public String getName() { return "container.turretSentry"; } - + @Override public double getTurretDepression() { return 20D; @@ -109,38 +108,38 @@ public class TileEntityTurretSentry extends TileEntityTurretBaseNT implements IG public Vec3 getHorizontalOffset() { return Vec3.createVectorHelper(0.5, 0, 0.5); } - + @Override public void updateEntity() { - + if(worldObj.isRemote) { this.lastBarrelLeftPos = this.barrelLeftPos; this.lastBarrelRightPos = this.barrelRightPos; float retractSpeed = 0.5F; float pushSpeed = 0.25F; - + if(this.retractingLeft) { this.barrelLeftPos += retractSpeed; - + if(this.barrelLeftPos >= 1) { this.retractingLeft = false; } - + } else { this.barrelLeftPos -= pushSpeed; if(this.barrelLeftPos < 0) { this.barrelLeftPos = 0; } } - + if(this.retractingRight) { this.barrelRightPos += retractSpeed; - + if(this.barrelRightPos >= 1) { this.retractingRight = false; } - + } else { this.barrelRightPos -= pushSpeed; if(this.barrelRightPos < 0) { @@ -148,43 +147,43 @@ public class TileEntityTurretSentry extends TileEntityTurretBaseNT implements IG } } } - + super.updateEntity(); } - + boolean shotSide = false; int timer; @Override public void updateFiringTick() { - + timer++; - + if(timer % 10 == 0) { - - BulletConfiguration conf = this.getFirstConfigLoaded(); - + + BulletConfig conf = this.getFirstConfigLoaded(); + if(conf != null) { - this.cachedCasingConfig = conf.spentCasing; - this.spawnBullet(conf); + this.cachedCasingConfig = conf.casing; + this.spawnBullet(conf, 5F); this.conusmeAmmo(conf.ammo); this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.sentry_fire", 2.0F, 1.0F); - + Vec3 pos = this.getTurretPos(); Vec3 vec = Vec3.createVectorHelper(this.getBarrelLength(), 0, 0); vec.rotateAroundZ((float) -this.rotationPitch); vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); - + Vec3 side = Vec3.createVectorHelper(0.125 * (shotSide ? 1 : -1), 0, 0); side.rotateAroundY((float) -(this.rotationYaw)); - + 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, pos.xCoord + vec.xCoord + side.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord + side.zCoord), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - + if(shotSide) { this.didJustShootLeft = true; } else { @@ -197,54 +196,53 @@ public class TileEntityTurretSentry extends TileEntityTurretBaseNT implements IG @Override protected Vec3 getCasingSpawnPos() { - + Vec3 pos = this.getTurretPos(); Vec3 vec = Vec3.createVectorHelper(0, 0.25,-0.125); vec.rotateAroundZ((float) -this.rotationPitch); vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); - + return Vec3.createVectorHelper(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord); } protected static CasingEjector ejector = new CasingEjector().setMotion(-0.3, 0.6, 0).setAngleRange(0.01F, 0.01F); - + @Override protected CasingEjector getEjector() { return ejector.setMotion(0.3, 0.6, 0); } - + @Override public boolean usesCasings() { return true; } - + @Override protected void seekNewTarget() { Entity lastTarget = this.target; super.seekNewTarget(); - + if(lastTarget != this.target && this.target != null) { worldObj.playSoundAtEntity(target, "hbm:turret.sentry_lockon", 2.0F, 1.5F); } } @Override - protected NBTTagCompound writePacket() { - NBTTagCompound data = super.writePacket(); - if(didJustShootLeft) data.setBoolean("justShotLeft", didJustShootLeft); - if(didJustShootRight) data.setBoolean("justShotRight", didJustShootRight); + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(didJustShootLeft); + buf.writeBoolean(didJustShootRight); didJustShootLeft = false; didJustShootRight = false; - return data; } @Override - public void networkUnpack(NBTTagCompound nbt) { - super.networkUnpack(nbt); - if(nbt.getBoolean("justShotLeft")) this.retractingLeft = true; - if(nbt.getBoolean("justShotRight")) this.retractingRight = true; + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.retractingLeft = buf.readBoolean(); + this.retractingRight = buf.readBoolean(); } - + protected void updateConnections() { this.trySubscribe(worldObj, xCoord, yCoord - 1, zCoord, ForgeDirection.DOWN); } @@ -256,7 +254,7 @@ public class TileEntityTurretSentry extends TileEntityTurretBaseNT implements IG @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUITurretSentry(player.inventory, this); } } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentryDamaged.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentryDamaged.java index acb7898cb..5fa6c3ef0 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentryDamaged.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentryDamaged.java @@ -1,9 +1,9 @@ package com.hbm.tileentity.turret; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.XFactory9mm; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.Entity; @@ -55,7 +55,7 @@ public class TileEntityTurretSentryDamaged extends TileEntityTurretSentry { if(timer % 10 == 0) { - BulletConfiguration conf = BulletConfigSyncingUtil.pullConfig(BulletConfigSyncingUtil.R5_NORMAL); + BulletConfig conf = XFactory9mm.p9_fmj; if(conf != null) { @@ -63,11 +63,11 @@ public class TileEntityTurretSentryDamaged extends TileEntityTurretSentry { Vec3 vec = Vec3.createVectorHelper(0, 0, 0); Vec3 side = Vec3.createVectorHelper(0, 0, 0); - this.cachedCasingConfig = conf.spentCasing; + this.cachedCasingConfig = conf.casing; if(shotSide) { this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:turret.sentry_fire", 2.0F, 1.0F); - this.spawnBullet(conf); + this.spawnBullet(conf, 5F); vec = Vec3.createVectorHelper(this.getBarrelLength(), 0, 0); vec.rotateAroundZ((float) -this.rotationPitch); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java index d25acbc74..ea2b2f17d 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java @@ -3,17 +3,17 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; import com.hbm.inventory.gui.GUITurretTauon; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.XFactoryAccelerator; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.gui.GuiScreen; +import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; @@ -22,11 +22,11 @@ import net.minecraft.world.World; public class TileEntityTurretTauon extends TileEntityTurretBaseNT { static List configs = new ArrayList(); - + static { - configs.add(BulletConfigSyncingUtil.SPECIAL_GAUSS); + configs.add(XFactoryAccelerator.tau_uranium.id); } - + @Override protected List getAmmoList() { return configs; @@ -81,65 +81,65 @@ public class TileEntityTurretTauon extends TileEntityTurretBaseNT { public long getConsumption() { return 1000; } - + int timer; public int beam; public float spin; public float lastSpin; public double lastDist; - + @Override public void updateEntity() { - + if(worldObj.isRemote) { - + if(this.tPos != null) { Vec3 pos = this.getTurretPos(); double length = Vec3.createVectorHelper(tPos.xCoord - pos.xCoord, tPos.yCoord - pos.yCoord, tPos.zCoord - pos.zCoord).lengthVector(); this.lastDist = length; } - + if(beam > 0) beam--; - + this.lastSpin = this.spin; - + if(this.tPos != null) { this.spin += 45; } - + if(this.spin >= 360F) { this.spin -= 360F; this.lastSpin -= 360F; } } - + super.updateEntity(); } @Override public void updateFiringTick() { - + timer++; - + if(timer % 5 == 0) { - - BulletConfiguration conf = this.getFirstConfigLoaded(); - + + BulletConfig conf = this.getFirstConfigLoaded(); + if(conf != null && this.target != null) { this.target.attackEntityFrom(ModDamageSource.electricity, 30F + worldObj.rand.nextInt(11)); this.conusmeAmmo(conf.ammo); this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:weapon.tauShoot", 4.0F, 0.9F + worldObj.rand.nextFloat() * 0.3F); - - NBTTagCompound data = new NBTTagCompound(); - data.setBoolean("shot", true); - this.networkPack(data, 250); - + + this.shot = true; + this.networkPackNT(250); + this.shot = false; + Vec3 pos = this.getTurretPos(); Vec3 vec = Vec3.createVectorHelper(this.getBarrelLength(), 0, 0); vec.rotateAroundZ((float) -this.rotationPitch); vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); - + NBTTagCompound dPart = new NBTTagCompound(); dPart.setString("type", "tau"); dPart.setByte("count", (byte)5); @@ -148,18 +148,30 @@ public class TileEntityTurretTauon extends TileEntityTurretBaseNT { } } + private boolean shot = false; + @Override - public void networkUnpack(NBTTagCompound nbt) { - - if(nbt.hasKey("shot")) - beam = 3; + public void serialize(ByteBuf buf) { + if (this.shot) + buf.writeBoolean(true); + else { + buf.writeBoolean(false); + super.serialize(buf); + } + } + + @Override + public void deserialize(ByteBuf buf) { + boolean shot = buf.readBoolean(); + if(shot) + this.beam = 3; else - super.networkUnpack(nbt); + super.deserialize(buf); } @Override @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUITurretTauon(player.inventory, this); } } diff --git a/src/main/java/com/hbm/util/AchievementHandler.java b/src/main/java/com/hbm/util/AchievementHandler.java index 3d395a43e..900509bfe 100644 --- a/src/main/java/com/hbm/util/AchievementHandler.java +++ b/src/main/java/com/hbm/util/AchievementHandler.java @@ -1,27 +1,23 @@ package com.hbm.util; -import java.util.HashMap; - import com.hbm.blocks.ModBlocks; import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.items.ItemAmmoEnums; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.stats.Achievement; +import java.util.HashMap; + public class AchievementHandler { public static HashMap craftingAchievements = new HashMap(); - + public static void register() { - craftingAchievements.put(new ComparableStack(ModItems.gun_mp40), MainRegistry.achFreytag); craftingAchievements.put(new ComparableStack(ModItems.piston_selenium), MainRegistry.achSelenium); craftingAchievements.put(new ComparableStack(ModItems.gun_b92), MainRegistry.achSelenium); craftingAchievements.put(new ComparableStack(ModItems.battery_potatos), MainRegistry.achPotato); - craftingAchievements.put(new ComparableStack(ModItems.gun_revolver_pip), MainRegistry.achC44); craftingAchievements.put(new ComparableStack(ModBlocks.machine_press), MainRegistry.achBurnerPress); craftingAchievements.put(new ComparableStack(ModItems.rbmk_fuel_empty), MainRegistry.achRBMK); craftingAchievements.put(new ComparableStack(ModBlocks.machine_chemplant), MainRegistry.achChemplant); @@ -53,9 +49,8 @@ public class AchievementHandler { craftingAchievements.put(new ComparableStack(ModBlocks.machine_difurnace_off), MainRegistry.achBlastFurnace); craftingAchievements.put(new ComparableStack(ModBlocks.machine_assembler), MainRegistry.achAssembly); craftingAchievements.put(new ComparableStack(ModItems.billet_pu_mix), MainRegistry.achChicagoPile); - craftingAchievements.put(new ComparableStack(ModItems.ammo_4gauge, 1, ItemAmmoEnums.Ammo4Gauge.VAMPIRE.ordinal()), MainRegistry.achWitchtaunter); } - + public static void fire(EntityPlayer player, ItemStack stack) { if(player.worldObj.isRemote) return; ComparableStack comp = new ComparableStack(stack).makeSingular(); diff --git a/src/main/java/com/hbm/util/ArmorRegistry.java b/src/main/java/com/hbm/util/ArmorRegistry.java index c098d6a89..98b863080 100644 --- a/src/main/java/com/hbm/util/ArmorRegistry.java +++ b/src/main/java/com/hbm/util/ArmorRegistry.java @@ -1,74 +1,73 @@ package com.hbm.util; +import api.hbm.item.IGasMask; +import com.hbm.handler.ArmorModHandler; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; -import com.hbm.handler.ArmorModHandler; - -import api.hbm.item.IGasMask; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - public class ArmorRegistry { public static HashMap> hazardClasses = new HashMap(); - + public static void registerHazard(Item item, HazardClass... hazards) { hazardClasses.put(item, new ArrayList(Arrays.asList(hazards))); } - + public static boolean hasAllProtection(EntityLivingBase entity, int slot, HazardClass... clazz) { - + if(ArmorUtil.checkArmorNull(entity, slot)) return false; - + List list = getProtectionFromItem(entity.getEquipmentInSlot(slot + 1), entity); return list.containsAll(Arrays.asList(clazz)); } - + public static boolean hasAnyProtection(EntityLivingBase entity, int slot, HazardClass... clazz) { - + if(ArmorUtil.checkArmorNull(entity, slot)) return false; - + List list = getProtectionFromItem(entity.getEquipmentInSlot(slot + 1), entity); - + if(list == null) return false; - + for(HazardClass haz : clazz) { if(list.contains(haz)) return true; } - + return false; } - + public static boolean hasProtection(EntityLivingBase entity, int slot, HazardClass clazz) { - + if(ArmorUtil.checkArmorNull(entity, slot)) return false; - + List list = getProtectionFromItem(entity.getEquipmentInSlot(slot + 1), entity); - + if(list == null) return false; - + return list.contains(clazz); } - + public static List getProtectionFromItem(ItemStack stack, EntityLivingBase entity) { List prot = new ArrayList(); - + Item item = stack.getItem(); - + //if the item has HazardClasses assigned to it, add those if(hazardClasses.containsKey(item)) prot.addAll(hazardClasses.get(item)); - + if(item instanceof IGasMask) { IGasMask mask = (IGasMask) item; ItemStack filter = mask.getFilter(stack, entity); @@ -76,29 +75,29 @@ public class ArmorRegistry { if(filter != null) { //add the HazardClasses from the filter, then remove the ones blacklisted by the mask List filProt = hazardClasses.get(filter.getItem()); - + for(HazardClass c : mask.getBlacklist(stack, entity)) filProt.remove(c); - + prot.addAll(filProt); } } - + if(ArmorModHandler.hasMods(stack)) { - + ItemStack[] mods = ArmorModHandler.pryMods(stack); - + for(ItemStack mod : mods) { - + //recursion! run the exact same procedure on every mod, in case future mods will have filter support if(mod != null) prot.addAll(getProtectionFromItem(mod, entity)); } } - + return prot; } - + public static enum HazardClass { GAS_LUNG("hazard.gasChlorine"), //also attacks eyes -> no half mask GAS_MONOXIDE("hazard.gasMonoxide"), //only affects lungs @@ -110,9 +109,9 @@ public class ArmorRegistry { GAS_BLISTERING("hazard.corrosive"), //corrosive substance, also attacks skin SAND("hazard.sand"), //blinding sand particles LIGHT("hazard.light"); //blinding light - + public final String lang; - + private HazardClass(String lang) { this.lang = lang; } diff --git a/src/main/java/com/hbm/util/ArmorUtil.java b/src/main/java/com/hbm/util/ArmorUtil.java index ece9306a9..c9e4f34cd 100644 --- a/src/main/java/com/hbm/util/ArmorUtil.java +++ b/src/main/java/com/hbm/util/ArmorUtil.java @@ -1,17 +1,12 @@ package com.hbm.util; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; - +import api.hbm.item.IGasMask; import com.hbm.handler.ArmorModHandler; import com.hbm.handler.HazmatRegistry; import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.potion.HbmPotion; import com.hbm.util.ArmorRegistry.HazardClass; - -import api.hbm.item.IGasMask; import cpw.mods.fml.relauncher.ReflectionHelper; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -23,12 +18,16 @@ import net.minecraft.network.NetHandlerPlayServer; import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.event.ForgeEventFactory; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + public class ArmorUtil { - + /* * The less horrifying part */ - + public static void register() { ArmorRegistry.registerHazard(ModItems.gas_mask_filter, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.GAS_BLISTERING, HazardClass.BACTERIA); ArmorRegistry.registerHazard(ModItems.gas_mask_filter_mono, HazardClass.PARTICLE_COARSE, HazardClass.GAS_MONOXIDE); @@ -40,7 +39,7 @@ public class ArmorUtil { ArmorRegistry.registerHazard(ModItems.gas_mask_m65, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.mask_rag, HazardClass.PARTICLE_COARSE); ArmorRegistry.registerHazard(ModItems.mask_piss, HazardClass.PARTICLE_COARSE, HazardClass.GAS_LUNG); - + ArmorRegistry.registerHazard(ModItems.goggles, HazardClass.LIGHT, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.ashglasses, HazardClass.LIGHT, HazardClass.SAND); @@ -52,7 +51,7 @@ public class ArmorUtil { ArmorRegistry.registerHazard(ModItems.hazmat_helmet_grey, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.hazmat_paa_helmet, HazardClass.LIGHT, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.liquidator_helmet, HazardClass.LIGHT, HazardClass.SAND); - ArmorRegistry.registerHazard(ModItems.t45_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.LIGHT, HazardClass.SAND); + ArmorRegistry.registerHazard(ModItems.t45_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.ajr_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.ajro_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.steamsuit_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); @@ -64,151 +63,151 @@ public class ArmorUtil { ArmorRegistry.registerHazard(ModItems.rpa_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.envsuit_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); ArmorRegistry.registerHazard(ModItems.trenchmaster_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); - + //Ob ihr wirklich richtig steht, seht ihr wenn das Licht angeht! registerIfExists(Compat.MOD_GT6, "gt.armor.hazmat.universal.head", HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); registerIfExists(Compat.MOD_GT6, "gt.armor.hazmat.biochemgas.head", HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); registerIfExists(Compat.MOD_GT6, "gt.armor.hazmat.radiation.head", HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND); } - + private static void registerIfExists(String domain, String name, HazardClass... classes) { Item item = Compat.tryLoadItem(domain, name); if(item != null) ArmorRegistry.registerHazard(item, classes); } - + public static boolean checkArmor(EntityLivingBase entity, Item... armor) { - + for(int i = 0; i < 4; i++) { if(!checkArmorPiece(entity, armor[i], 3 - i)) return false; } - + return true; } - + public static boolean checkArmorPiece(EntityLivingBase entity, Item armor, int slot) { return !checkArmorNull(entity, slot) && entity.getEquipmentInSlot(slot + 1).getItem() == armor; } - + public static boolean checkArmorNull(EntityLivingBase player, int slot) { return player.getEquipmentInSlot(slot + 1) == null; } - + public static void damageSuit(EntityLivingBase entity, int slot, int amount) { - + if(entity.getEquipmentInSlot(slot + 1) == null) return; - + entity.getEquipmentInSlot(slot + 1).damageItem(amount, entity); if(entity.getEquipmentInSlot(slot + 1).stackSize == 0) { entity.setCurrentItemOrArmor(slot + 1, null); } } - + public static void resetFlightTime(EntityPlayer player) { - + if(player instanceof EntityPlayerMP) { EntityPlayerMP mp = (EntityPlayerMP) player; ReflectionHelper.setPrivateValue(NetHandlerPlayServer.class, mp.playerNetServerHandler, 0, "floatingTickCount", "field_147365_f"); } } - + /* * The more horrifying part */ public static boolean checkForHazmat(EntityLivingBase player) { - - if(checkArmor(player, ModItems.hazmat_helmet, ModItems.hazmat_plate, ModItems.hazmat_legs, ModItems.hazmat_boots) || - checkArmor(player, ModItems.hazmat_helmet_red, ModItems.hazmat_plate_red, ModItems.hazmat_legs_red, ModItems.hazmat_boots_red) || - checkArmor(player, ModItems.hazmat_helmet_grey, ModItems.hazmat_plate_grey, ModItems.hazmat_legs_grey, ModItems.hazmat_boots_grey) || - checkArmor(player, ModItems.t45_helmet, ModItems.t45_plate, ModItems.t45_legs, ModItems.t45_boots) || - checkArmor(player, ModItems.schrabidium_helmet, ModItems.schrabidium_plate, ModItems.schrabidium_legs, ModItems.schrabidium_boots) || + + if(checkArmor(player, ModItems.hazmat_helmet, ModItems.hazmat_plate, ModItems.hazmat_legs, ModItems.hazmat_boots) || + checkArmor(player, ModItems.hazmat_helmet_red, ModItems.hazmat_plate_red, ModItems.hazmat_legs_red, ModItems.hazmat_boots_red) || + checkArmor(player, ModItems.hazmat_helmet_grey, ModItems.hazmat_plate_grey, ModItems.hazmat_legs_grey, ModItems.hazmat_boots_grey) || + checkArmor(player, ModItems.t45_helmet, ModItems.t45_plate, ModItems.t45_legs, ModItems.t45_boots) || + checkArmor(player, ModItems.schrabidium_helmet, ModItems.schrabidium_plate, ModItems.schrabidium_legs, ModItems.schrabidium_boots) || checkForHaz2(player)) { - + return true; } - + if(player.isPotionActive(HbmPotion.mutation)) return true; - + return false; } - + public static boolean checkForHaz2(EntityLivingBase player) { - - if(checkArmor(player, ModItems.hazmat_paa_helmet, ModItems.hazmat_paa_plate, ModItems.hazmat_paa_legs, ModItems.hazmat_paa_boots) || - checkArmor(player, ModItems.liquidator_helmet, ModItems.liquidator_plate, ModItems.liquidator_legs, ModItems.liquidator_boots) || - checkArmor(player, ModItems.euphemium_helmet, ModItems.euphemium_plate, ModItems.euphemium_legs, ModItems.euphemium_boots) || - checkArmor(player, ModItems.rpa_helmet, ModItems.rpa_plate, ModItems.rpa_legs, ModItems.rpa_boots) || - checkArmor(player, ModItems.fau_helmet, ModItems.fau_plate, ModItems.fau_legs, ModItems.fau_boots) || + + if(checkArmor(player, ModItems.hazmat_paa_helmet, ModItems.hazmat_paa_plate, ModItems.hazmat_paa_legs, ModItems.hazmat_paa_boots) || + checkArmor(player, ModItems.liquidator_helmet, ModItems.liquidator_plate, ModItems.liquidator_legs, ModItems.liquidator_boots) || + checkArmor(player, ModItems.euphemium_helmet, ModItems.euphemium_plate, ModItems.euphemium_legs, ModItems.euphemium_boots) || + checkArmor(player, ModItems.rpa_helmet, ModItems.rpa_plate, ModItems.rpa_legs, ModItems.rpa_boots) || + checkArmor(player, ModItems.fau_helmet, ModItems.fau_plate, ModItems.fau_legs, ModItems.fau_boots) || checkArmor(player, ModItems.dns_helmet, ModItems.dns_plate, ModItems.dns_legs, ModItems.dns_boots)) { return true; } - + return false; } - + public static boolean checkForAsbestos(EntityLivingBase player) { - + if(checkArmor(player, ModItems.asbestos_helmet, ModItems.asbestos_plate, ModItems.asbestos_legs, ModItems.asbestos_boots)) return true; return false; } - + public static boolean checkForDigamma(EntityPlayer player) { - + if(checkArmor(player, ModItems.fau_helmet, ModItems.fau_plate, ModItems.fau_legs, ModItems.fau_boots)) return true; - + if(checkArmor(player, ModItems.dns_helmet, ModItems.dns_plate, ModItems.dns_legs, ModItems.dns_boots)) return true; - - if(player.isPotionActive(HbmPotion.stability.id)) - return true; - - return false; - } - - public static boolean checkForDigamma2(EntityPlayer player) { - - if(!checkArmor(player, ModItems.robes_helmet, ModItems.robes_plate, ModItems.robes_legs, ModItems.robes_boots)) - return false; - + if(player.isPotionActive(HbmPotion.stability.id)) return true; - + + return false; + } + + public static boolean checkForDigamma2(EntityPlayer player) { + + if(!checkArmor(player, ModItems.robes_helmet, ModItems.robes_plate, ModItems.robes_legs, ModItems.robes_boots)) + return false; + + if(player.isPotionActive(HbmPotion.stability.id)) + return true; + for(int i = 0; i < 4; i++) { - + ItemStack armor = player.getCurrentArmor(i); - + if(armor != null && ArmorModHandler.hasMods(armor)) { - + ItemStack mods[] = ArmorModHandler.pryMods(armor); - + if(!(mods[ArmorModHandler.cladding] != null && mods[ArmorModHandler.cladding].getItem() == ModItems.cladding_iron)) return false; } } - + return player.getMaxHealth() < 3; } - + public static boolean checkForFaraday(EntityPlayer player) { - + ItemStack[] armor = player.inventory.armorInventory; - + if(armor[0] == null || armor[1] == null || armor[2] == null || armor[3] == null) return false; - + if(isFaradayArmor(armor[0]) && isFaradayArmor(armor[1]) && isFaradayArmor(armor[2]) && isFaradayArmor(armor[3])) return true; - + return false; } - + public static final String[] metals = new String[] { "chainmail", "iron", @@ -237,63 +236,63 @@ public class ArmorUtil { "rpa", "spacesuit" }; - + public static boolean isFaradayArmor(ItemStack item) { - + String name = item.getUnlocalizedName(); - + for(String metal : metals) { - + if(name.toLowerCase(Locale.US).contains(metal)) return true; } - + if(HazmatRegistry.getCladding(item) > 0) return true; - + return false; } - + public static boolean checkForFiend(EntityPlayer player) { - + return checkArmorPiece(player, ModItems.jackt, 2) && Library.checkForHeld(player, ModItems.shimmer_sledge); } - + public static boolean checkForFiend2(EntityPlayer player) { - + return checkArmorPiece(player, ModItems.jackt2, 2) && Library.checkForHeld(player, ModItems.shimmer_axe); } - + /* * Default implementations for IGasMask items */ public static final String FILTERK_KEY = "hfrFilter"; - + public static void installGasMaskFilter(ItemStack mask, ItemStack filter) { - + if(mask == null || filter == null) return; - + if(!mask.hasTagCompound()) mask.stackTagCompound = new NBTTagCompound(); - + NBTTagCompound attach = new NBTTagCompound(); filter.writeToNBT(attach); - + mask.stackTagCompound.setTag(FILTERK_KEY, attach); } - + public static void removeFilter(ItemStack mask) { - + if(mask == null) return; - + if(!mask.hasTagCompound()) return; - + mask.stackTagCompound.removeTag(FILTERK_KEY); } - + /** * Grabs the installed filter or the filter of the attachment, used for attachment rendering * @param mask @@ -301,126 +300,126 @@ public class ArmorUtil { * @return */ public static ItemStack getGasMaskFilterRecursively(ItemStack mask, EntityLivingBase entity) { - + ItemStack filter = getGasMaskFilter(mask); - + if(filter == null && ArmorModHandler.hasMods(mask)) { - + ItemStack mods[] = ArmorModHandler.pryMods(mask); - + if(mods[ArmorModHandler.helmet_only] != null && mods[ArmorModHandler.helmet_only].getItem() instanceof IGasMask) filter = ((IGasMask)mods[ArmorModHandler.helmet_only].getItem()).getFilter(mods[ArmorModHandler.helmet_only], entity); } - + return filter; } - + public static ItemStack getGasMaskFilter(ItemStack mask) { - + if(mask == null) return null; - + if(!mask.hasTagCompound()) return null; - + NBTTagCompound attach = mask.stackTagCompound.getCompoundTag(FILTERK_KEY); ItemStack filter = ItemStack.loadItemStackFromNBT(attach); - + return filter; } - + public static void damageGasMaskFilter(EntityLivingBase entity, int damage) { - + ItemStack mask = entity.getEquipmentInSlot(4); - + if(mask == null) return; - + if(!(mask.getItem() instanceof IGasMask)) { - + if(ArmorModHandler.hasMods(mask)) { - + ItemStack mods[] = ArmorModHandler.pryMods(mask); - + if(mods[ArmorModHandler.helmet_only] != null && mods[ArmorModHandler.helmet_only].getItem() instanceof IGasMask) mask = mods[ArmorModHandler.helmet_only]; } } - + if(mask != null) damageGasMaskFilter(mask, damage); } - + public static void damageGasMaskFilter(ItemStack mask, int damage) { ItemStack filter = getGasMaskFilter(mask); - + if(filter == null) { if(ArmorModHandler.hasMods(mask)) { ItemStack mods[] = ArmorModHandler.pryMods(mask); - + if(mods[ArmorModHandler.helmet_only] != null && mods[ArmorModHandler.helmet_only].getItem() instanceof IGasMask) filter = getGasMaskFilter(mods[ArmorModHandler.helmet_only]); } } - + if(filter == null || filter.getMaxDamage() == 0) return; - + filter.setItemDamage(filter.getItemDamage() + damage); - + if(filter.getItemDamage() > filter.getMaxDamage()) removeFilter(mask); else installGasMaskFilter(mask, filter); } - + public static void addGasMaskTooltip(ItemStack mask, EntityPlayer player, List list, boolean ext) { - + if(mask == null || !(mask.getItem() instanceof IGasMask)) return; - + ItemStack filter = ((IGasMask)mask.getItem()).getFilter(mask, player); - + if(filter == null) { list.add(EnumChatFormatting.RED + "No filter installed!"); return; } - + list.add(EnumChatFormatting.GOLD + "Installed filter:"); - + int meta = filter.getItemDamage(); int max = filter.getMaxDamage(); - + String append = ""; - + if(max > 0) { append = " (" + ((max - meta) * 100 / max) + "%)"; } - + List lore = new ArrayList(); list.add(" " + filter.getDisplayName() + append); filter.getItem().addInformation(filter, player, lore, ext); ForgeEventFactory.onItemTooltip(filter, player, lore, ext); lore.forEach(x -> list.add(EnumChatFormatting.YELLOW + " " + x)); } - + public static boolean isWearingEmptyMask(EntityPlayer player) { - + ItemStack mask = player.getEquipmentInSlot(4); - + if(mask == null) return false; - + if(mask.getItem() instanceof IGasMask) { return getGasMaskFilter(mask) == null; } - + ItemStack mod = ArmorModHandler.pryMods(mask)[ArmorModHandler.helmet_only]; - + if(mod != null && mod.getItem() instanceof IGasMask) { return getGasMaskFilter(mod) == null; } - + return false; } } diff --git a/src/main/java/com/hbm/util/BobMathUtil.java b/src/main/java/com/hbm/util/BobMathUtil.java index 3330cda22..e9da65700 100644 --- a/src/main/java/com/hbm/util/BobMathUtil.java +++ b/src/main/java/com/hbm/util/BobMathUtil.java @@ -1,33 +1,63 @@ package com.hbm.util; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.text.NumberFormat; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import javax.annotation.Nonnegative; - import cpw.mods.fml.relauncher.ReflectionHelper; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; +import javax.annotation.Nonnegative; +import java.lang.reflect.Field; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.NumberFormat; +import java.util.*; +import java.util.function.ToIntFunction; + public class BobMathUtil { - + + //finally! + public static int min(int... nums) { + int smallest = Integer.MAX_VALUE; + for(int num : nums) if(num < smallest) smallest = num; + return smallest; + } + public static int max(int... nums) { + int largest = Integer.MIN_VALUE; + for(int num : nums) if(num > largest) largest = num; + return largest; + } + public static float min(float... nums) { + float smallest = Float.MAX_VALUE; + for(float num : nums) if(num < smallest) smallest = num; + return smallest; + } + public static float max(float... nums) { + float largest = Float.MIN_VALUE; + for(float num : nums) if(num > largest) largest = num; + return largest; + } + public static double min(double... nums) { + double smallest = Double.MAX_VALUE; + for(double num : nums) if(num < smallest) smallest = num; + return smallest; + } + public static double max(double... nums) { + double largest = Double.MIN_VALUE; + for(double num : nums) if(num > largest) largest = num; + return largest; + } + public static double safeClamp(double val, double min, double max) { val = MathHelper.clamp_double(val, min, max); - + if(val == Double.NaN) { val = (min + max) / 2D; } - + return val; } - + public static Vec3 interpVec(Vec3 vec1, Vec3 vec2, float interp) { return Vec3.createVectorHelper( interp(vec1.xCoord, vec2.xCoord, interp), @@ -35,73 +65,73 @@ public class BobMathUtil { interp(vec1.zCoord, vec2.zCoord, interp) ); } - + public static double interp(double x, double y, float interp) { return x + (y - x) * interp; } - + public static double getAngleFrom2DVecs(double x1, double z1, double x2, double z2) { - + double upper = x1 * x2 + z1 * z2; double lower = Math.sqrt(x1 * x1 + z1 * z1) * Math.sqrt(x2 * x2 + z2 * z2); - + double result = Math.toDegrees(Math.cos(upper / lower)); - + if(result >= 180) result -= 180; - + return result; } - + public static double getCrossAngle(Vec3 vel, Vec3 rel) { - + vel.normalize(); rel.normalize(); double vecProd = rel.xCoord * vel.xCoord + rel.yCoord * vel.yCoord + rel.zCoord * vel.zCoord; double bot = rel.lengthVector() * vel.lengthVector(); double angle = Math.acos(vecProd / bot) * 180 / Math.PI; - + if(angle >= 180) angle -= 180; - + return angle; } public static float remap(float num, float min1, float max1, float min2, float max2){ return ((num - min1) / (max1 - min1)) * (max2 - min2) + min2; } - + public static float remap01(float num, float min1, float max1){ return (num - min1) / (max1 - min1); } - + public static float remap01_clamp(float num, float min1, float max1){ return MathHelper.clamp_float((num - min1) / (max1 - min1), 0, 1); } - + public static ForgeDirection[] getShuffledDirs() { - + ForgeDirection[] dirs = new ForgeDirection[6]; List indices = new ArrayList() {{ add(0); add(1); add(2); add(3); add(4); add(5); }}; Collections.shuffle(indices); - + for(int i = 0; i < 6; i++) { dirs[i] = ForgeDirection.getOrientation(indices.get(i)); } - + return dirs; } public static String toPercentage(float amount, float total) { return NumberFormat.getPercentInstance().format(amount / total); } - + public static String[] ticksToDate(long ticks) { - + int tickDay = 48000; int tickYear = tickDay * 100; - + final String[] dateOut = new String[3]; long year = Math.floorDiv(ticks, tickYear); byte day = (byte) Math.floorDiv(ticks - tickYear * year, tickDay); @@ -112,7 +142,7 @@ public class BobMathUtil { dateOut[2] = String.valueOf(time); return dateOut; } - + /** * Rescale a number from one range to another * @param toScale - The integer to scale @@ -127,7 +157,7 @@ public class BobMathUtil { double newRange = newMax - newMin; return (((toScale - oldMin) * newRange) / prevRange) + newMin; } - + /** * Rounds a number to so many significant digits * @param num The number to round @@ -146,7 +176,7 @@ public class BobMathUtil { } public static String getShortNumber(long l) { - + if(l >= Math.pow(10, 18)) { double res = l / Math.pow(10, 18); res = Math.round(res * 100.0) / 100.0; @@ -177,41 +207,56 @@ public class BobMathUtil { res = Math.round(res * 100.0) / 100.0; return res + "k"; } - + return Long.toString(l); } - + /** * Adjusted sqrt, approaches standard sqrt but sqrt(x) is never bigger than x - * + * * ____________ * / 1 | 1 * _ / x + ―――――――― - ――――― * \/ (x + 2)² x + 2 - * + * * @param x * @return */ public static double squirt(double x) { return Math.sqrt(x + 1D / ((x + 2D) * (x + 2D))) - 1D / (x + 2D); } - + /** A convenient way to re-define the value of pi, should the laws of nature change. */ public static void setPi(double pi) { Field field = ReflectionHelper.findField(Math.class, "PI"); try { field.setDouble(null, pi); } catch(Exception e) { } } - + public static double angularDifference(double alpha, double beta) { double delta = (beta - alpha + 180) % 360 - 180; return delta < -180 ? delta + 360 : delta; } - + + // I am sick of trying to remember the ridiculous quirks of Java 8 + // so I wrote this thing that can shit any int-ish list-ish into a regular fucking int[] + // made by mellow, thrown here by 70k + public static int[] intCollectionToArray(Collection in) { + return intCollectionToArray(in, i -> (int)i); + } + + public static int[] intCollectionToArray(Collection in, ToIntFunction mapper) { + return Arrays.stream(in.toArray()).mapToInt(mapper).toArray(); + } + + public static int[] collectionToIntArray(Collection in, ToIntFunction mapper) { + return Arrays.stream(in.toArray()).mapToInt(mapper).toArray(); + } + /** Soft peak sine */ public static double sps(double x) { return Math.sin(Math.PI / 2D * Math.cos(x)); } - + /** Square wave sine, make sure squarination is [0;1] */ public static double sws(double x, double squarination) { double s = Math.sin(x); diff --git a/src/main/java/com/hbm/util/BufferUtil.java b/src/main/java/com/hbm/util/BufferUtil.java index 3f50e7e54..4bdf26480 100644 --- a/src/main/java/com/hbm/util/BufferUtil.java +++ b/src/main/java/com/hbm/util/BufferUtil.java @@ -1,26 +1,34 @@ package com.hbm.util; -import java.nio.charset.Charset; - import io.netty.buffer.ByteBuf; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompressedStreamTools; +import net.minecraft.nbt.NBTSizeTracker; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.Vec3; + +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; public class BufferUtil { - private static final Charset CHARSET = Charset.forName("UTF-8"); - + private static final Charset CHARSET = StandardCharsets.UTF_8; + // Writes a string to a byte buffer by encoding the length and raw bytes - public static final void writeString(ByteBuf buf, String value) { + public static void writeString(ByteBuf buf, String value) { if(value == null) { buf.writeInt(-1); return; } - buf.writeInt(value.length()); + buf.writeInt(value.getBytes(CHARSET).length); buf.writeBytes(value.getBytes(CHARSET)); } // Reads a string from a byte buffer via the written length and raw bytes - public static final String readString(ByteBuf buf) { + public static String readString(ByteBuf buf) { final int count = buf.readInt(); if(count < 0) return null; @@ -30,4 +38,124 @@ public class BufferUtil { return new String(bytes, CHARSET); } + /** + * Writes an integer array to a buffer. + */ + public static void writeIntArray(ByteBuf buf, int[] array) { + buf.writeInt(array.length); + for (int value : array) { + buf.writeInt(value); + } + } + + /** + * Reads an integer array from a buffer. + */ + public static int[] readIntArray(ByteBuf buf) { + int length = buf.readInt(); + + int[] array = new int[length]; + + for (int i = 0; i < length; i++) { + array[i] = buf.readInt(); + } + + return array; + } + + /** + * Writes a vector to a buffer. + */ + public static void writeVec3(ByteBuf buf, Vec3 vector) { + buf.writeBoolean(vector != null); + if(vector == null) return; + buf.writeDouble(vector.xCoord); + buf.writeDouble(vector.yCoord); + buf.writeDouble(vector.zCoord); + } + + /** + * Reads a vector from a buffer. + */ + public static Vec3 readVec3(ByteBuf buf) { + boolean vectorExists = buf.readBoolean(); + if(!vectorExists) { + return null; + } + double x = buf.readDouble(); + double y = buf.readDouble(); + double z = buf.readDouble(); + + return Vec3.createVectorHelper(x, y, z); + } + + /** + * Writes a NBTTagCompound to a buffer. + */ + public static void writeNBT(ByteBuf buf, NBTTagCompound compound) { + if(compound != null) { + byte[] nbtData = new byte[0]; + try { + nbtData = CompressedStreamTools.compress(compound); + } catch(IOException e) { + e.printStackTrace(); + } + buf.writeShort((short) nbtData.length); + buf.writeBytes(nbtData); + } else + buf.writeShort(-1); + } + + /** + * Reads a NBTTagCompound from a buffer. + */ + public static NBTTagCompound readNBT(ByteBuf buf) { + short nbtLength = buf.readShort(); + + if (nbtLength == -1) // check if no compound was even given. + return new NBTTagCompound(); + byte[] tags = new byte[nbtLength]; + buf.readBytes(tags); + try { + return CompressedStreamTools.func_152457_a(tags, new NBTSizeTracker(2097152L)); + } catch(IOException e) { + e.printStackTrace(); + } + return new NBTTagCompound(); + } + + /** + * Writes the ItemStack to the buffer. + */ + public static void writeItemStack(ByteBuf buf, ItemStack item) { + if (item == null) + buf.writeShort(-1); + else { + buf.writeShort(Item.getIdFromItem(item.getItem())); + buf.writeByte(item.stackSize); + buf.writeShort(item.getItemDamage()); + NBTTagCompound nbtTagCompound = null; + + if (item.getItem().isDamageable() || item.getItem().getShareTag()) + nbtTagCompound = item.stackTagCompound; + + writeNBT(buf, nbtTagCompound); + } + } + + /** + * Reads an ItemStack from a buffer. + */ + public static ItemStack readItemStack(ByteBuf buf) { + ItemStack item = null; + short id = buf.readShort(); + + if (id >= 0) { + byte quantity = buf.readByte(); + short meta = buf.readShort(); + item = new ItemStack(Item.getItemById(id), quantity, meta); + item.stackTagCompound = readNBT(buf); + } + return item; + } } diff --git a/src/main/java/com/hbm/util/ChatBuilder.java b/src/main/java/com/hbm/util/ChatBuilder.java index 9fc0c6169..84162877f 100644 --- a/src/main/java/com/hbm/util/ChatBuilder.java +++ b/src/main/java/com/hbm/util/ChatBuilder.java @@ -1,74 +1,69 @@ package com.hbm.util; +import net.minecraft.util.*; + import java.util.ArrayList; import java.util.List; import java.util.ListIterator; -import net.minecraft.util.ChatComponentStyle; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.ChatComponentTranslation; -import net.minecraft.util.ChatStyle; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.IChatComponent; - public class ChatBuilder { private ChatComponentText text; private ChatComponentStyle last; - + private ChatBuilder(String text) { this.text = new ChatComponentText(text); this.last = this.text; } - + public static ChatBuilder start(String text) { ChatBuilder builder = new ChatBuilder(text); return builder; } - - public static ChatBuilder startTranslation(String text) { - ChatBuilder builder = new ChatBuilder("").nextTranslation(text); + + public static ChatBuilder startTranslation(String text, Object... o) { + ChatBuilder builder = new ChatBuilder("").nextTranslation(text, o); return builder; } - + public ChatBuilder next(String text) { ChatComponentText append = new ChatComponentText(text); this.last.appendSibling(append); this.last = append; return this; } - - public ChatBuilder nextTranslation(String text) { - ChatComponentTranslation append = new ChatComponentTranslation(text); + + public ChatBuilder nextTranslation(String text, Object... o) { + ChatComponentTranslation append = new ChatComponentTranslation(text, o); this.last.appendSibling(append); this.last = append; return this; } - + public ChatBuilder color(EnumChatFormatting format) { ChatStyle style = this.last.getChatStyle(); style.setColor(format); return this; } - + /** Will recursively go over all IChatComponents added to the root and then set the style */ public ChatBuilder colorAll(EnumChatFormatting format) { - + List list = new ArrayList(); list.add(text); - + ListIterator it = list.listIterator(); - + while(it.hasNext()) { Object o = it.next(); IChatComponent component = (IChatComponent) o; component.getChatStyle().setColor(format); for(Object s : component.getSiblings()) it.add(s); } - + return this; } - + public ChatComponentText flush() { return this.text; } diff --git a/src/main/java/com/hbm/util/ColorUtil.java b/src/main/java/com/hbm/util/ColorUtil.java index 2d0ad9378..c863c5d02 100644 --- a/src/main/java/com/hbm/util/ColorUtil.java +++ b/src/main/java/com/hbm/util/ColorUtil.java @@ -23,34 +23,34 @@ public class ColorUtil { public static BufferedImage getImageFromStack(ItemStack stack) throws IOException { String iconName = stack.getItem().getIconFromDamage(stack.getItemDamage()).getIconName(); String domain = "minecraft"; - + if(iconName.contains(":")) { String[] parts = iconName.split(":"); domain = parts[0]; iconName = parts[1]; } - + ResourceLocation loc = new ResourceLocation(domain, "textures/items/" + iconName + ".png"); - + return ImageIO.read(Minecraft.getMinecraft().getResourceManager().getResource(loc).getInputStream()); } @SideOnly(Side.CLIENT) public static int getAverageColorFromStack(ItemStack stack) { - + try { BufferedImage tex = getImageFromStack(stack); - + int r = 0; int g = 0; int b = 0; int pixels = 0; - + for(int i = 0; i < tex.getWidth(); i++) { for(int j = 0; j < tex.getHeight(); j++) { - + Color pixel = new Color(tex.getRGB(i, j)); - + if(pixel.getAlpha() == 255) { r += pixel.getRed(); g += pixel.getGreen(); @@ -63,9 +63,9 @@ public class ColorUtil { int avgR = r / pixels; int avgG = g / pixels; int avgB = b / pixels; - + return (avgR << 16) | (avgG << 8) | avgB; - + } catch(Exception ex) { return 0xFFFFFF; } @@ -73,34 +73,34 @@ public class ColorUtil { @SideOnly(Side.CLIENT) public static int getMedianBrightnessColorFromStack(ItemStack stack) { - + try { BufferedImage tex = getImageFromStack(stack); - + HashMap brightMap = new HashMap(); List brightnesses = new ArrayList(); - + for(int i = 0; i < tex.getWidth(); i++) { for(int j = 0; j < tex.getHeight(); j++) { - + Color pixel = new Color(tex.getRGB(i, j)); int brightness = pixel.getRed() * pixel.getRed() + pixel.getGreen() * pixel.getGreen() + pixel.getBlue() * pixel.getBlue(); brightnesses.add(brightness); brightMap.put(brightness, pixel); //overlap possible, but we don't differentiate between colors anyway. } } - + Collections.sort(brightnesses); int median = brightnesses.get(brightnesses.size() / 2); Color medianColor = brightMap.get(median); - + return medianColor.getRGB(); - + } catch(Exception ex) { return 0xFFFFFF; } } - + /** * Decides whether a color is considered "colorful", i.e. weeds out colors that are too dark or too close to gray. * @param hex @@ -108,11 +108,11 @@ public class ColorUtil { */ public static boolean isColorColorful(int hex) { Color color = new Color(hex); - + /*double r = color.getRed(); double g = color.getBlue(); double b = color.getGreen(); - + if(r < 50 && g < 50 && b < 50) return false; @@ -122,13 +122,13 @@ public class ColorUtil { if(g / b > 1.5) return true; if(b / r > 1.5) return true; if(b / g > 1.5) return true;*/ - + float[] hsb = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), new float[3]); - + // saturation brightness return hsb[1] > 0.25 && hsb[2] > 0.25; } - + /** * Raises the highest RGB component to the specified limit, scaling the other components with it. * @param hex @@ -141,14 +141,14 @@ public class ColorUtil { int g = color.getGreen(); int b = color.getBlue(); int max = Math.max(Math.max(1, r), Math.max(g, b)); - + r = r * limit / max; g = g * limit / max; b = b * limit / max; - + return new Color(r, g, b).getRGB(); } - + /** * Same as the regular amplifyColor but it uses 255 as the limit. * @param hex @@ -157,7 +157,7 @@ public class ColorUtil { public static int amplifyColor(int hex) { return amplifyColor(hex, 255); } - + /** * Amplifies a given color by approaching all components to maximum by a given percentage. A percentage of 1 (100%) should always yield white. * @param hex @@ -169,21 +169,21 @@ public class ColorUtil { int r = color.getRed(); int g = color.getGreen(); int b = color.getBlue(); - + r = (int) (r + (255 - r) * percent); g = (int) (g + (255 - g) * percent); b = (int) (b + (255 - b) * percent); - + return new Color(r, g, b).getRGB(); } - + /** Converts a color into HSB and then returns the brightness component [] */ public static double getColorBrightness(int hex) { Color color = new Color(hex); float[] hsb = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), new float[3]); return hsb[2]; } - + public static HashMap nameToColor = new HashMap() {{ put("black", 1973019); put("red", 11743532); @@ -202,17 +202,17 @@ public class ColorUtil { put("orange", 15435844); put("white", 15790320); }}; - + public static int getColorFromDye(ItemStack stack) { List oreNames = ItemStackUtil.getOreDictNames(stack); - + for(String dict : oreNames) { if(dict.length() > 3 && dict.startsWith("dye")) { String color = dict.substring(3).toLowerCase(Locale.US); if(nameToColor.containsKey(color)) return nameToColor.get(color); } } - + return 0; } } diff --git a/src/main/java/com/hbm/util/Compat.java b/src/main/java/com/hbm/util/Compat.java index 3b6bc6069..cac127f1a 100644 --- a/src/main/java/com/hbm/util/Compat.java +++ b/src/main/java/com/hbm/util/Compat.java @@ -1,9 +1,5 @@ package com.hbm.util; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ConcurrentHashMap; - import com.hbm.config.GeneralConfig; import com.hbm.handler.HazmatRegistry; import com.hbm.hazard.HazardRegistry; @@ -11,7 +7,6 @@ import com.hbm.inventory.FluidContainer; import com.hbm.inventory.FluidContainerRegistry; import com.hbm.inventory.fluid.Fluids; import com.hbm.main.MainRegistry; - import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.eventhandler.EventBus; @@ -25,8 +20,13 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ConcurrentHashMap; + public class Compat { - + public static final String MOD_GT6 = "gregtech"; public static final String MOD_GCC = "GalacticraftCore"; public static final String MOD_AR = "advancedrocketry"; @@ -35,6 +35,8 @@ public class Compat { public static final String MOD_TIC = "TConstruct"; public static final String MOD_RC = "Railcraft"; public static final String MOD_TC = "tc"; + public static final String MOD_EIDS = "endlessids"; + public static final String MOD_ANG = "angelica"; public static Item tryLoadItem(String domain, String name) { return (Item) Item.itemRegistry.getObject(getReg(domain, name)); @@ -43,15 +45,15 @@ public class Compat { public static Block tryLoadBlock(String domain, String name) { return (Block) Block.blockRegistry.getObject(getReg(domain, name)); } - + private static String getReg(String domain, String name) { return domain + ":" + name; } - + public static boolean isModLoaded(String modid) { return Loader.isModLoaded(modid); } - + public static enum ReikaIsotope { C14(HazardRegistry.gen_10K), U235(HazardRegistry.u235), @@ -86,33 +88,33 @@ public class Compat { Ru103(HazardRegistry.gen_S), Pm149(HazardRegistry.gen_10D), Rh105(HazardRegistry.gen_H); - + private float rads; - + private ReikaIsotope(float rads) { this.rads = rads; } - + public float getRad() { return this.rads; } } - + public static List scrapeItemFromME(ItemStack meDrive) { List stacks = new ArrayList(); - + try { if(meDrive != null && meDrive.hasTagCompound()) { NBTTagCompound nbt = meDrive.getTagCompound(); int types = nbt.getShort("it"); //ITEM_TYPE_TAG - + for(int i = 0; i < types; i++) { NBTBase stackTag = nbt.getTag("#" + i); - + if(stackTag instanceof NBTTagCompound) { NBTTagCompound compound = (NBTTagCompound) stackTag; ItemStack stack = ItemStack.loadItemStackFromNBT(compound); - + int count = nbt.getInteger("@" + i); stack.stackSize = count; stacks.add(stack); @@ -120,66 +122,66 @@ public class Compat { } } } catch(Exception ex) { } - + return stacks; } - + public static void registerCompatHazmat() { - + double helmet = 0.2D; double chest = 0.4D; double legs = 0.3D; double boots = 0.1D; - + double p90 = 1.0D; // 90% double p99 = 2D; // 99% - + tryRegisterHazmat(Compat.MOD_GT6, "gt.armor.hazmat.radiation.head", p90 * helmet); tryRegisterHazmat(Compat.MOD_GT6, "gt.armor.hazmat.radiation.chest", p90 * chest); tryRegisterHazmat(Compat.MOD_GT6, "gt.armor.hazmat.radiation.legs", p90 * legs); tryRegisterHazmat(Compat.MOD_GT6, "gt.armor.hazmat.radiation.boots", p90 * boots); - + tryRegisterHazmat(Compat.MOD_GT6, "gt.armor.hazmat.universal.head", p99 * helmet); tryRegisterHazmat(Compat.MOD_GT6, "gt.armor.hazmat.universal.chest", p99 * chest); tryRegisterHazmat(Compat.MOD_GT6, "gt.armor.hazmat.universal.legs", p99 * legs); tryRegisterHazmat(Compat.MOD_GT6, "gt.armor.hazmat.universal.boots", p99 * boots); - + tryRegisterHazmat(Compat.MOD_REC, "reactorcraft_item_hazhelmet", p99 * helmet); tryRegisterHazmat(Compat.MOD_REC, "reactorcraft_item_hazchest", p99 * chest); tryRegisterHazmat(Compat.MOD_REC, "reactorcraft_item_hazlegs", p99 * legs); tryRegisterHazmat(Compat.MOD_REC, "reactorcraft_item_hazboots", p99 * boots); - + tryRegisterHazmat(Compat.MOD_EF, "netherite_helmet", p90 * helmet); tryRegisterHazmat(Compat.MOD_EF, "netherite_chestplate", p90 * chest); tryRegisterHazmat(Compat.MOD_EF, "netherite_leggings", p90 * legs); tryRegisterHazmat(Compat.MOD_EF, "netherite_boots", p90 * boots); } - + private static void tryRegisterHazmat(String mod, String name, double resistance) { Item item = Compat.tryLoadItem(mod, name); if(item != null) { HazmatRegistry.registerHazmat(item, resistance); } } - + public static void registerCompatFluidContainers() { - + if(Compat.isModLoaded(Compat.MOD_TC) && GeneralConfig.enableFluidContainerCompat) { Item canister = Compat.tryLoadItem(Compat.MOD_TC, "emptyCanister"); Item diesel = Compat.tryLoadItem(Compat.MOD_TC, "diesel"); if(diesel != null && canister != null) FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(diesel), new ItemStack(canister), Fluids.DIESEL, 1000)); } } - + public static void handleRailcraftNonsense() { - + if(!Loader.isModLoaded(MOD_RC)) return; MainRegistry.logger.info("#######################################################"); MainRegistry.logger.info("| Railcraft detected, deploying anti-nonsense measures..."); - + try { - + ConcurrentHashMap> listeners = ReflectionHelper.getPrivateValue(EventBus.class, FMLCommonHandler.instance().bus(), "listeners"); Object nonsense = null; for(Object o : listeners.keySet()) { @@ -189,16 +191,47 @@ public class Compat { break; } } - + FMLCommonHandler.instance().bus().unregister(nonsense); MainRegistry.logger.info("| Successfully removed Railcraft nonsense."); - + } catch(Exception x) { MainRegistry.logger.error("| Tried to remove Railcraft block but failed due to " + x.getMessage()); } MainRegistry.logger.info("#######################################################"); } - + + public static Class getChunkBiomeHook() { + try { + return Class.forName("com.falsepattern.endlessids.mixin.helpers.ChunkBiomeHook"); + } catch(ClassNotFoundException e) { + return null; + } + } + + public static Method getBiomeShortArray; + + public static Method getBiomeShortArray() { + if(getBiomeShortArray != null) return getBiomeShortArray; + try { + Method m = getChunkBiomeHook().getDeclaredMethod("getBiomeShortArray"); + getBiomeShortArray = m; + return m; + } catch(Exception e) { + return null; + } + } + + public static short[] getBiomeShortArray(Object instance) { + Method m = getBiomeShortArray(); + if(m != null) { + try { + return (short[]) m.invoke(instance); + } catch(Exception e) { } + } + return null; + } + /** A standard implementation of safely grabbing a tile entity without loading chunks, might have more fluff added to it later on. */ public static TileEntity getTileStandard(World world, int x, int y, int z) { if(!world.getChunkProvider().chunkExists(x >> 4, z >> 4)) return null; diff --git a/src/main/java/com/hbm/util/CompatEnergyControl.java b/src/main/java/com/hbm/util/CompatEnergyControl.java index 0de988733..3542cd5fd 100644 --- a/src/main/java/com/hbm/util/CompatEnergyControl.java +++ b/src/main/java/com/hbm/util/CompatEnergyControl.java @@ -1,8 +1,9 @@ package com.hbm.util; -import java.util.ArrayList; -import java.util.List; - +import api.hbm.energymk2.IBatteryItem; +import api.hbm.energymk2.IEnergyHandlerMK2; +import api.hbm.fluid.IFluidUser; +import api.hbm.tile.IInfoProviderEC; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; @@ -10,20 +11,18 @@ import com.hbm.items.ModItems; import com.hbm.tileentity.machine.TileEntityMachineGasCent; import com.hbm.tileentity.machine.TileEntityMachineGasCent.PseudoFluidTank; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBase; - -import api.hbm.energymk2.IBatteryItem; -import api.hbm.energymk2.IEnergyHandlerMK2; -import api.hbm.fluid.IFluidUser; -import api.hbm.tile.IInfoProviderEC; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; +import java.util.ArrayList; +import java.util.List; + /** Provides data specified by EC's CrossModBase */ public class CompatEnergyControl { - + /** Returns the steel ingot to craft the sensor kit with */ public static ItemStack getCraftingMaterial() { return new ItemStack(ModItems.ingot_steel); //in the event that i do end up moving all ingots to metadata @@ -33,7 +32,7 @@ public class CompatEnergyControl { public static boolean isElectricItem(ItemStack stack) { return stack.getItem() instanceof IBatteryItem; } - + /** Standardized discharge for IBatteryItem, returns the amount that was removed */ public static double dischargeItem(ItemStack stack, double needed) { IBatteryItem battery = (IBatteryItem) stack.getItem(); @@ -41,97 +40,97 @@ public class CompatEnergyControl { battery.dischargeBattery(stack, toDischarge); return toDischarge; } - + /** Returns the power and maxPower values for IEnergyUser */ public static void getEnergyData(TileEntity tile, NBTTagCompound data) { - + data.setString(KEY_EUTYPE, "HE"); - + if(tile instanceof IEnergyHandlerMK2) { IEnergyHandlerMK2 user = (IEnergyHandlerMK2) tile; data.setDouble(L_ENERGY_HE, user.getPower()); data.setDouble(L_CAPACITY_HE, user.getMaxPower()); } } - + /** Returns the heat for RBMKs */ public static int getHeat(TileEntity tile) { if(tile instanceof TileEntityRBMKBase) return (int) ((TileEntityRBMKBase) tile).heat; //original implementation also used the SNR and LNR for some reason, but those no longer exist. neither ZINOX nor research reactor were part of the system. return -1; } - + /** Returns a list of Object arrays, one array for each fluid tank where the array contains fluid name, fill state and capacity (STRING, INTEGER, INTEGER) */ public static List getAllTanks(TileEntity tile) { - + List list = new ArrayList(); - + if(tile instanceof IFluidUser) { IFluidUser user = (IFluidUser) tile; - + for(FluidTank tank : user.getAllTanks()) { if(tank.getTankType() == Fluids.SMOKE || tank.getTankType() == Fluids.SMOKE_LEADED || tank.getTankType() == Fluids.SMOKE_POISON) continue; list.add(toFluidInfo(tank)); } } - + if(tile instanceof TileEntityMachineGasCent) { TileEntityMachineGasCent cent = (TileEntityMachineGasCent) tile; list.add(toFluidInfo(cent.inputTank)); list.add(toFluidInfo(cent.outputTank)); } - + if(!list.isEmpty()) return list; - + return null; } - + private static Object[] toFluidInfo(FluidTank tank) { return new Object[] {tank.getTankType().getName(), tank.getFill(), tank.getMaxFill()}; } - + private static Object[] toFluidInfo(PseudoFluidTank tank) { return new Object[] {tank.getTankType().getName(), tank.getFill(), tank.getMaxFill()}; } - + /** Returns any non-standard data like progress, unique stats and so forth. Data comes from the IInfoProviderEC implementation */ public static void getExtraData(TileEntity tile, NBTTagCompound data) { - + if(tile instanceof IInfoProviderEC) { IInfoProviderEC provider = (IInfoProviderEC) tile; provider.provideExtraInfo(data); } } - + /** Returns the core tile entity for that position, can resolve the MK1 "IMultiblock" and MK2 "BlockDummyable" systems. */ public static TileEntity findTileEntity(World world, int x, int y, int z) { return CompatExternal.getCoreFromPos(world, x, y, z); //CompatExternal you're just standing around, do something for once } - + /** Returns the ResourceLocation for the given fluid name */ public static ResourceLocation getFluidTexture(String name) { FluidType type = Fluids.fromName(name); return type == null ? null : type.getTexture(); } - + /* * [DATA TYPE] _ [NAME] _ [UNIT] */ public static final String KEY_EUTYPE = "euType"; - + public static final String L_ENERGY_HE = "energy"; public static final String L_ENERGY_TU = "energyTU"; public static final String L_ENERGY_ = "energy_"; // Blast Furnace fuel - + public static final String L_CAPACITY_HE = "capacity"; public static final String L_CAPACITY_TU = "capacityTU"; public static final String L_CAPACITY_ = "capacity_"; // Blast Furnace fuel capacity - + public static final String D_CONSUMPTION_HE = "consumptionHE"; public static final String D_CONSUMPTION_MB = "consumption"; @Deprecated public static final String S_CONSUMPTION_ = "consumption_"; // FWatz fluid consumption rates - + public static final String D_OUTPUT_HE = "output"; public static final String D_OUTPUT_MB = "outputmb"; public static final String D_OUTPUT_TU = "outputTU"; diff --git a/src/main/java/com/hbm/util/CompatExternal.java b/src/main/java/com/hbm/util/CompatExternal.java index 9881ef7fa..2a7f1177c 100644 --- a/src/main/java/com/hbm/util/CompatExternal.java +++ b/src/main/java/com/hbm/util/CompatExternal.java @@ -5,22 +5,26 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Set; import java.util.function.BiFunction; - -import com.hbm.blocks.BlockDummyable; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.tileentity.machine.TileEntityDummy; -import com.hbm.tileentity.turret.TileEntityTurretSentry; +import java.util.function.Consumer; import api.hbm.energymk2.IEnergyHandlerMK2; import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidUser; +import com.hbm.blocks.BlockDummyable; +import com.hbm.entity.missile.EntityMissileCustom; +import com.hbm.explosion.ExplosionNukeSmall; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.items.weapon.ItemCustomMissilePart.WarheadType; +import com.hbm.tileentity.machine.TileEntityDummy; +import com.hbm.tileentity.turret.TileEntityTurretSentry; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.passive.EntityChicken; import net.minecraft.entity.passive.EntityCow; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; /** @@ -36,73 +40,73 @@ public class CompatExternal { * @return the core tile entity if the given position holds a dummy, the tile entity at that position if it doesn't or null if there is no tile entity */ public static TileEntity getCoreFromPos(World world, int x, int y, int z) { - + Block b = world.getBlock(x, y, z); - + //if the block at that pos is a Dummyable, use the mk2's system to find the core if(b instanceof BlockDummyable) { BlockDummyable dummy = (BlockDummyable) b; int[] pos = dummy.findCore(world, x, y, z); - + if(pos != null) { return world.getTileEntity(pos[0], pos[1], pos[2]); } } - + TileEntity tile = world.getTileEntity(x, y, z); - + //if the tile at that pos is an old dummy tile, use mk1 if(tile instanceof TileEntityDummy) { TileEntityDummy dummy = (TileEntityDummy) tile; return world.getTileEntity(dummy.targetX, dummy.targetY, dummy.targetZ); } - + //otherwise, return the tile at that position whihc could be null return tile; } - + /** * Returns the numeric value of the buffered energy held by that tile entity. Current implementation relies on IEnergyUser. * @param tile * @return power */ public static long getBufferedPowerFromTile(TileEntity tile) { - + if(tile instanceof IEnergyHandlerMK2) { return ((IEnergyHandlerMK2) tile).getPower(); } - + return 0L; } - + /** * Returns the numeric value of the energy capacity of this tile entity. Current implementation relies on IEnergyUser. * @param tile * @return max power */ public static long getMaxPowerFromTile(TileEntity tile) { - + if(tile instanceof IEnergyHandlerMK2) { return ((IEnergyHandlerMK2) tile).getMaxPower(); } - + return 0L; } - + /** * Returns the ordinal of the energy priority from the supplied tile entity. 0 = low, 1 = normal, 2 = high. Returns -1 if not applicable. * @param tile * @return priority */ public static int getEnergyPriorityFromTile(TileEntity tile) { - + if(tile instanceof IEnergyReceiverMK2) { return ((IEnergyReceiverMK2) tile).getPriority().ordinal(); } - + return -1; } - + /** * Returns a list of tank definitions from the supplied tile entity. Uses IFluidUser, if the tile is incompatible it returns an empty list. * @param tile @@ -115,13 +119,13 @@ public class CompatExternal { */ public static ArrayList getFluidInfoFromTile(TileEntity tile) { ArrayList list = new ArrayList(); - + if(!(tile instanceof IFluidUser)) { return list; } - + IFluidUser container = (IFluidUser) tile; - + for(FluidTank tank : container.getAllTanks()) { FluidType type = tank.getTankType(); list.add(new Object[] { @@ -132,7 +136,7 @@ public class CompatExternal { tank.getMaxFill() }); } - + return list; } @@ -140,14 +144,14 @@ public class CompatExternal { public static Set turretTargetFriendly = new HashSet(); public static Set turretTargetHostile = new HashSet(); public static Set turretTargetMachine = new HashSet(); - + /** * Registers a class for turret targeting * @param clazz is the class that should be targeted. * @param type determines what setting the turret needs to have enabled to target this class. 0 is player, 1 is friendly, 2 is hostile and 3 is machine. */ public static void registerTurretTargetSimple(Class clazz, int type) { - + switch(type) { case 0: turretTargetPlayer.add(clazz); break; case 1: turretTargetFriendly.add(clazz); break; @@ -155,9 +159,9 @@ public class CompatExternal { case 3: turretTargetMachine.add(clazz); break; } } - + public static Set turretTargetBlacklist = new HashSet(); - + /** * Registers a class to be fully ignored by turrets * @param clazz is the class that should be ignored. @@ -165,9 +169,9 @@ public class CompatExternal { public static void registerTurretTargetBlacklist(Class clazz) { turretTargetBlacklist.add(clazz); } - + public static HashMap> turretTargetCondition = new HashMap(); - + /** * Registers a BiFunction lambda for more complex targeting compatibility * @param clazz is the class that this rule should apply to @@ -176,9 +180,13 @@ public class CompatExternal { * class on the side of whoever is adding compat, allowing the compat class to be used entirely with reflection. */ public static void registerTurretTargetingCondition(Class clazz, BiFunction bi) { - turretTargetBlacklist.add(clazz); + turretTargetCondition.put(clazz, bi); } - + + public static void setWarheadLabel(WarheadType type, String label) { type.labelCustom = label; } + public static void setWarheadImpact(WarheadType type, Consumer impact) { type.impactCustom = impact; } + public static void setWarheadUpdate(WarheadType type, Consumer update) { type.updateCustom = update; } + public static void compatExamples() { // Makes all cows be targeted by turrets if player mode is active in addition to the existing rules. Applies to all entities that inherit EntityCow. CompatExternal.registerTurretTargetSimple(EntityCow.class, 0); @@ -190,5 +198,10 @@ public class CompatExternal { if(turret instanceof TileEntityTurretSentry) return -1; return 0; }); + //configures CUSTOM0 to have a custom label and impact effect + CompatExternal.setWarheadLabel(WarheadType.CUSTOM0, EnumChatFormatting.YELLOW + "Micro Nuke"); + CompatExternal.setWarheadImpact(WarheadType.CUSTOM0, (missile) -> { + ExplosionNukeSmall.explode(missile.worldObj, missile.posX, missile.posY + 0.5, missile.posZ, ExplosionNukeSmall.PARAMS_MEDIUM); + }); } } diff --git a/src/main/java/com/hbm/util/CompatNER.java b/src/main/java/com/hbm/util/CompatNER.java index cb4b622dd..63ba2ae2e 100644 --- a/src/main/java/com/hbm/util/CompatNER.java +++ b/src/main/java/com/hbm/util/CompatNER.java @@ -1,13 +1,9 @@ package com.hbm.util; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.ModBlocks; import com.hbm.entity.mob.EntityCreeperNuclear; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; - import cpw.mods.fml.common.event.FMLInterModComms; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; @@ -15,23 +11,26 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.nbt.NBTTagString; +import java.util.ArrayList; +import java.util.List; + public class CompatNER { - + /* * INIT */ - + public static void init() { sendRegisterOre(new ItemStack(ModBlocks.ore_alexandrite), false, 0xff00ff, new ItemStack(ModItems.gem_alexandrite)); sendRegisterMob(EntityCreeperNuclear.class, "-1", encodeDrops( new DropItem(new ItemStack(Blocks.tnt), 0, 2), new DropItem(new ItemStack(ModItems.coin_creeper), 1, 1, 0.33F))); } - + /* * REGISTERS */ - + public static void sendRegisterOre(ItemStack ore, boolean silk, int color, ItemStack... drops) { NBTTagCompound data = new NBTTagCompound(); data.setTag(stack, ore.writeToNBT(new NBTTagCompound())); @@ -41,16 +40,16 @@ public class CompatNER { int[] distribution = new int[256]; for(int i = 0; i < 256; i++) distribution[i] = 100; data.setIntArray("distribution", distribution); - + NBTTagCompound res = new NBTTagCompound(); NBTTagCompound block = new NBTTagCompound(); block.setTag("stack", new ItemStack(Blocks.stone).writeToNBT(new NBTTagCompound())); res.setTag("block", block); data.setTag(restriction, res); - + FMLInterModComms.sendMessage(notEnoughResources, registerOre, data); } - + public static void sendRegisterMob(Class clazz, String light, NBTTagList drops) { NBTTagCompound data = new NBTTagCompound(); data.setString(name, clazz.getName()); @@ -59,31 +58,31 @@ public class CompatNER { MainRegistry.logger.info("Sending " + registerMob + " to " + notEnoughResources); FMLInterModComms.sendMessage(notEnoughResources, registerMob, data); } - + /* * ENCODERS */ - + public static String encodeLightLevel(int level, boolean below) { return level + ":" + (below ? "b" : "a"); } - + public static NBTTagList encodeDrops(DropItem... stacks) { NBTTagList list = new NBTTagList(); for(DropItem stack : stacks) list.appendTag(stack.writeToNBT()); return list; } - + public static NBTTagList encodeStacks(ItemStack... stacks) { NBTTagList list = new NBTTagList(); for(ItemStack stack : stacks) list.appendTag(stack.writeToNBT(new NBTTagCompound())); return list; } - + /* * DROP SYSTEM */ - + public static class DropItem { public ItemStack drop; public int min = 1; @@ -112,11 +111,11 @@ public class CompatNER { return compound; } } - + /* * CONSTANTS */ - + public static final String notEnoughResources = "neresources"; public static final String registerDungeon = "registerDungeon"; public static final String registerMob = "registerMob"; @@ -154,7 +153,7 @@ public class CompatNER { public static final String blockRestriction = "block"; public static final String dimensionRestriction = "dimension"; public static final String biomeRestriction = "biome"; - + public static final String conditional_rareDrop = "ner.rareDrop.text"; public static final String conditional_silkTouch = "ner.ore.silkTouch"; public static final String conditional_equipmentDrop = "ner.equipmentDrop.text"; diff --git a/src/main/java/com/hbm/util/ContaminationUtil.java b/src/main/java/com/hbm/util/ContaminationUtil.java index 63689591b..35a8763e9 100644 --- a/src/main/java/com/hbm/util/ContaminationUtil.java +++ b/src/main/java/com/hbm/util/ContaminationUtil.java @@ -1,17 +1,14 @@ package com.hbm.util; -import java.util.HashSet; - -import com.hbm.entity.mob.EntityDuck; +import api.hbm.entity.IRadiationImmune; import com.hbm.entity.mob.EntityCreeperNuclear; +import com.hbm.entity.mob.EntityDuck; import com.hbm.entity.mob.EntityQuackos; import com.hbm.extprop.HbmLivingProps; import com.hbm.handler.HazmatRegistry; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.potion.HbmPotion; import com.hbm.util.ArmorRegistry.HazardClass; - -import api.hbm.entity.IRadiationImmune; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.monster.EntitySkeleton; @@ -25,25 +22,27 @@ import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; +import java.util.HashSet; + public class ContaminationUtil { - + /** * Calculates how much radiation can be applied to this entity by calculating resistance * @param entity * @return */ public static float calculateRadiationMod(EntityLivingBase entity) { - + if(entity instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)entity; - + float koeff = 10.0F; return (float) Math.pow(koeff, -HazmatRegistry.getResistance(player)); } - + return 1; } - + public static float getRads(Entity e) { if(!(e instanceof EntityLivingBase)) @@ -51,19 +50,19 @@ public class ContaminationUtil { if(isRadImmune(e)) return 0.0F; - + EntityLivingBase entity = (EntityLivingBase)e; - + return HbmLivingProps.getRadiation(entity); } - + public static HashSet immuneEntities = new HashSet(); - + public static boolean isRadImmune(Entity e) { if(e instanceof EntityLivingBase && ((EntityLivingBase)e).isPotionActive(HbmPotion.mutation)) return true; - + if(immuneEntities.isEmpty()) { immuneEntities.add(EntityCreeperNuclear.class); immuneEntities.add(EntityMooshroom.class); @@ -73,62 +72,62 @@ public class ContaminationUtil { immuneEntities.add(EntityOcelot.class); immuneEntities.add(IRadiationImmune.class); } - + Class entityClass = e.getClass(); - + for(Class clazz : immuneEntities) { if(clazz.isAssignableFrom(entityClass)) return true; } - + if("cyano.lootable.entities.EntityLootableBody".equals(entityClass.getName())) return true; - + return false; } - + /// ASBESTOS /// public static void applyAsbestos(Entity e, int i) { if(!(e instanceof EntityLivingBase)) return; - + if(e instanceof EntityPlayer && ((EntityPlayer)e).capabilities.isCreativeMode) return; - + if(e instanceof EntityPlayer && e.ticksExisted < 200) return; - + EntityLivingBase entity = (EntityLivingBase)e; - + if(ArmorRegistry.hasAllProtection(entity, 3, HazardClass.PARTICLE_FINE)) ArmorUtil.damageGasMaskFilter(entity, i); else HbmLivingProps.incrementAsbestos(entity, i); } - + /// DIGAMMA /// public static void applyDigammaData(Entity e, float f) { if(!(e instanceof EntityLivingBase)) return; - + if(e instanceof EntityDuck || e instanceof EntityOcelot) return; - + if(e instanceof EntityPlayer && ((EntityPlayer)e).capabilities.isCreativeMode) return; - + if(e instanceof EntityPlayer && e.ticksExisted < 200) return; - + EntityLivingBase entity = (EntityLivingBase)e; - + if(entity.isPotionActive(HbmPotion.stability.id)) return; - + if(!(entity instanceof EntityPlayer && ArmorUtil.checkForDigamma((EntityPlayer) entity))) HbmLivingProps.incrementDigamma(entity, f); } - + public static void applyDigammaDirect(Entity e, float f) { if(!(e instanceof EntityLivingBase)) @@ -136,23 +135,23 @@ public class ContaminationUtil { if(e instanceof IRadiationImmune) return; - + if(e instanceof EntityPlayer && ((EntityPlayer)e).capabilities.isCreativeMode) return; - + EntityLivingBase entity = (EntityLivingBase)e; HbmLivingProps.incrementDigamma(entity, f); } - + public static float getDigamma(Entity e) { if(!(e instanceof EntityLivingBase)) return 0.0F; - + EntityLivingBase entity = (EntityLivingBase)e; return HbmLivingProps.getDigamma(entity); } - + public static void printGeigerData(EntityPlayer player) { World world = player.worldObj; @@ -161,7 +160,7 @@ public class ContaminationUtil { double rads = ((int)(ChunkRadiationManager.proxy.getRadiation(world, (int) Math.floor(player.posX), (int) Math.floor(player.posY), (int) Math.floor(player.posZ)) * 10)) / 10D; double env = ((int)(HbmLivingProps.getRadBuf(player) * 10D)) / 10D; - + double res = ((int)(10000D - ContaminationUtil.calculateRadiationMod(player) * 10000D)) / 100D; double resKoeff = ((int)(HazmatRegistry.getResistance(player) * 100D)) / 100D; @@ -169,7 +168,7 @@ public class ContaminationUtil { String envPrefix = getPreffixFromRad(env); String radPrefix = ""; String resPrefix = "" + EnumChatFormatting.WHITE; - + if(eRad < 200) radPrefix += EnumChatFormatting.GREEN; else if(eRad < 400) @@ -182,7 +181,7 @@ public class ContaminationUtil { radPrefix += EnumChatFormatting.DARK_RED; else radPrefix += EnumChatFormatting.DARK_GRAY; - + if(resKoeff > 0) resPrefix += EnumChatFormatting.GREEN; @@ -194,27 +193,27 @@ public class ContaminationUtil { player.addChatMessage(new ChatComponentTranslation("geiger.playerRad").appendSibling(new ChatComponentText(" " + radPrefix + eRad + " RAD")).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); player.addChatMessage(new ChatComponentTranslation("geiger.playerRes").appendSibling(new ChatComponentText(" " + resPrefix + res + "% (" + resKoeff + ")")).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); } - + public static void printDosimeterData(EntityPlayer player) { double env = ((int)(HbmLivingProps.getRadBuf(player) * 10D)) / 10D; boolean limit = false; - + if(env > 3.6D) { env = 3.6D; limit = true; } - + String envPrefix = getPreffixFromRad(env); - + player.addChatMessage(new ChatComponentText("===== ☢ ").appendSibling(new ChatComponentTranslation("geiger.title.dosimeter")).appendSibling(new ChatComponentText(" ☢ =====")).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD))); player.addChatMessage(new ChatComponentTranslation("geiger.envRad").appendSibling(new ChatComponentText(" " + envPrefix + (limit ? ">" : "") + env + " RAD/s")).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); } - + public static String getPreffixFromRad(double rads) { String chunkPrefix = ""; - + if(rads == 0) chunkPrefix += EnumChatFormatting.GREEN; else if(rads < 1) @@ -227,26 +226,26 @@ public class ContaminationUtil { chunkPrefix += EnumChatFormatting.DARK_RED; else chunkPrefix += EnumChatFormatting.DARK_GRAY; - + return chunkPrefix; } - + public static void printDiagnosticData(EntityPlayer player) { double digamma = ((int)(HbmLivingProps.getDigamma(player) * 100)) / 100D; double halflife = ((int)((1D - Math.pow(0.5, digamma)) * 10000)) / 100D; - + player.addChatMessage(new ChatComponentText("===== Ϝ ").appendSibling(new ChatComponentTranslation("digamma.title")).appendSibling(new ChatComponentText(" Ϝ =====")).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.DARK_PURPLE))); player.addChatMessage(new ChatComponentTranslation("digamma.playerDigamma").appendSibling(new ChatComponentText(EnumChatFormatting.RED + " " + digamma + " DRX")).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.LIGHT_PURPLE))); player.addChatMessage(new ChatComponentTranslation("digamma.playerHealth").appendSibling(new ChatComponentText(EnumChatFormatting.RED + " " + halflife + "%")).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.LIGHT_PURPLE))); player.addChatMessage(new ChatComponentTranslation("digamma.playerRes").appendSibling(new ChatComponentText(EnumChatFormatting.BLUE + " " + "N/A")).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.LIGHT_PURPLE))); } - + public static enum HazardType { RADIATION, DIGAMMA } - + public static enum ContaminationType { FARADAY, //preventable by metal armor HAZMAT, //preventable by hazmat @@ -257,23 +256,23 @@ public class ContaminationUtil { RAD_BYPASS, //same as creative but will not apply radiation resistance calculation NONE //not preventable } - + /* * This system is nice but the cont types are a bit confusing. Cont types should have much better names and multiple cont types should be applicable. */ @SuppressWarnings("incomplete-switch") //just shut up //instead of this does-everything-but-nothing-well solution, please use the ArmorRegistry to check for protection and the HBM Props for applying contamination. still good for regular radiation tho public static boolean contaminate(EntityLivingBase entity, HazardType hazard, ContaminationType cont, float amount) { - + if(hazard == HazardType.RADIATION) { float radEnv = HbmLivingProps.getRadEnv(entity); HbmLivingProps.setRadEnv(entity, radEnv + amount); } - + if(entity instanceof EntityPlayer) { - + EntityPlayer player = (EntityPlayer)entity; - + switch(cont) { case FARADAY: if(ArmorUtil.checkForFaraday(player)) return false; break; case HAZMAT: if(ArmorUtil.checkForHazmat(player)) return false; break; @@ -281,22 +280,22 @@ public class ContaminationUtil { case DIGAMMA: if(ArmorUtil.checkForDigamma(player)) return false; if(ArmorUtil.checkForDigamma2(player)) return false; break; case DIGAMMA2: if(ArmorUtil.checkForDigamma2(player)) return false; break; } - + if(player.capabilities.isCreativeMode && cont != ContaminationType.NONE && cont != ContaminationType.DIGAMMA2) return false; - + if(player.ticksExisted < 200) return false; } - + if(hazard == HazardType.RADIATION && isRadImmune(entity)) return false; - + switch(hazard) { case RADIATION: HbmLivingProps.incrementRadiation(entity, amount * (cont == ContaminationType.RAD_BYPASS ? 1 : calculateRadiationMod(entity))); break; case DIGAMMA: HbmLivingProps.incrementDigamma(entity, amount); break; } - + return true; } } diff --git a/src/main/java/com/hbm/util/CrashHelper.java b/src/main/java/com/hbm/util/CrashHelper.java new file mode 100644 index 000000000..c281484e9 --- /dev/null +++ b/src/main/java/com/hbm/util/CrashHelper.java @@ -0,0 +1,32 @@ +package com.hbm.util; + +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.ICrashCallable; + +public class CrashHelper { + + public static void init() { + FMLCommonHandler.instance().registerCrashCallable(new CrashCallableRecipe()); + } + + public static class CrashCallableRecipe implements ICrashCallable { + + @Override + public String getLabel() { + return "NTM Modified recipes"; + } + + @Override + public String call() throws Exception { + + String call = ""; + + for(SerializableRecipe rec : SerializableRecipe.recipeHandlers) { + if(rec.modified) call += "\n\t\t" + rec.getFileName(); + } + + return call; + } + } +} diff --git a/src/main/java/com/hbm/util/CrucibleUtil.java b/src/main/java/com/hbm/util/CrucibleUtil.java index e5d06cdbd..222abab88 100644 --- a/src/main/java/com/hbm/util/CrucibleUtil.java +++ b/src/main/java/com/hbm/util/CrucibleUtil.java @@ -1,19 +1,18 @@ package com.hbm.util; -import java.util.List; - +import api.hbm.block.ICrucibleAcceptor; import com.hbm.inventory.material.Mats.MaterialStack; import com.hbm.inventory.material.NTMMaterial.SmeltingBehavior; - -import api.hbm.block.ICrucibleAcceptor; import net.minecraft.block.Block; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.List; + public class CrucibleUtil { - + /** * Standard pouring, casting a hitscan straight down at the given coordinates with the given range. Returns the leftover material, just like ICrucibleAcceptor's pour. * The method directly modifies the original stack, so be careful and make a copy beforehand if you don't want that. @@ -21,21 +20,21 @@ public class CrucibleUtil { */ public static MaterialStack pourSingleStack(World world, double x, double y, double z, double range, boolean safe, MaterialStack stack, int quanta, Vec3 impactPosHolder) { - + Vec3 start = Vec3.createVectorHelper(x, y, z); Vec3 end = Vec3.createVectorHelper(x, y - range, z); - + MovingObjectPosition[] mopHolder = new MovingObjectPosition[1]; ICrucibleAcceptor acc = getPouringTarget(world, start, end, mopHolder); MovingObjectPosition mop = mopHolder[0]; - + if(acc == null) { spill(mop, safe, stack, quanta, impactPosHolder); return stack; } - + MaterialStack ret = tryPourStack(world, acc, mop, stack, impactPosHolder); - + if(ret != null) { return ret; } @@ -43,94 +42,95 @@ public class CrucibleUtil { spill(mop, safe, stack, quanta, impactPosHolder); return stack; } - + /** * Standard pouring, casting a hitscan straight down at the given coordinates with the given range. Returns the materialStack that has been removed. * The method doesn't make copies of the MaterialStacks in the list, so the materials being subtracted or outright removed will apply to the original list. * Pass an empty Vec3 instance in order to get the impact position of the stream. */ public static MaterialStack pourFullStack(World world, double x, double y, double z, double range, boolean safe, List stacks, int quanta, Vec3 impactPosHolder) { - + if(stacks.isEmpty()) return null; - + Vec3 start = Vec3.createVectorHelper(x, y, z); Vec3 end = Vec3.createVectorHelper(x, y - range, z); - + MovingObjectPosition[] mopHolder = new MovingObjectPosition[1]; ICrucibleAcceptor acc = getPouringTarget(world, start, end, mopHolder); MovingObjectPosition mop = mopHolder[0]; - + if(acc == null) { return spill(mop, safe, stacks, quanta, impactPosHolder); } - + for(MaterialStack stack : stacks) { - + if(stack.material == null) continue; + int amountToPour = Math.min(stack.amount, quanta); MaterialStack toPour = new MaterialStack(stack.material, amountToPour); MaterialStack left = tryPourStack(world, acc, mop, toPour, impactPosHolder); - + if(left != null) { stack.amount -= (amountToPour - left.amount); return new MaterialStack(stack.material, stack.amount - left.amount); } } - + return spill(mop, safe, stacks, quanta, impactPosHolder); } - + /** * Tries to pour the stack onto the supplied crucible acceptor instance. Also features our friend the Vec3 dummy, which will be filled with the stream's impact position. * Returns whatever is left of the stack when successful or null when unsuccessful (potential spillage). */ public static MaterialStack tryPourStack(World world, ICrucibleAcceptor acc, MovingObjectPosition mop, MaterialStack stack, Vec3 impactPosHolder) { Vec3 hit = mop.hitVec; - + if(stack.material.smeltable != SmeltingBehavior.SMELTABLE) { return null; } - + if(acc.canAcceptPartialPour(world, mop.blockX, mop.blockY, mop.blockZ, hit.xCoord, hit.yCoord, hit.zCoord, ForgeDirection.getOrientation(mop.sideHit), stack)) { MaterialStack left = acc.pour(world, mop.blockX, mop.blockY, mop.blockZ, hit.xCoord, hit.yCoord, hit.zCoord, ForgeDirection.getOrientation(mop.sideHit), stack); if(left == null) { left = new MaterialStack(stack.material, 0); } - + impactPosHolder.xCoord = hit.xCoord; impactPosHolder.yCoord = hit.yCoord; impactPosHolder.zCoord = hit.zCoord; - + return left; } - + return null; } - + /** * Uses hitscan to find the target of the pour, from start (the top) to end (the bottom). Pass a single cell MOP array to get the reference of the MOP for later use. * Now we're thinking with reference types. */ public static ICrucibleAcceptor getPouringTarget(World world, Vec3 start, Vec3 end, MovingObjectPosition[] mopHolder) { - + MovingObjectPosition mop = world.func_147447_a(start, end, true, true, true); - + if(mopHolder != null) { mopHolder[0] = mop; } - + if(mop == null || mop.typeOfHit != mop.typeOfHit.BLOCK) { return null; } - + Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ); - + if(!(b instanceof ICrucibleAcceptor)) { return null; } - + return (ICrucibleAcceptor) b; } - + /** * Regular spillage routine but accepts a stack list instead of a stack. simply uses the first available stack from the list. Assumes list is not empty. */ @@ -140,30 +140,30 @@ public class CrucibleUtil { MaterialStack ret = spill(mop, safe, top, quanta, impactPos); //remove all stacks with no content stacks.removeIf(o -> o.amount <= 0); - + return ret; } - + /** * The routine used for then there is no valid crucible acceptor found. Will NOP with safe mode on. Returns the MaterialStack that was lost. */ public static MaterialStack spill(MovingObjectPosition mop, boolean safe, MaterialStack stack, int quanta, Vec3 impactPos) { - + //do nothing if safe mode is on if(safe) { return null; } - + MaterialStack toWaste = new MaterialStack(stack.material, Math.min(stack.amount, quanta)); stack.amount -= toWaste.amount; - + //if there is a vec3 reference, set the impact coordinates if(impactPos != null && mop != null) { impactPos.xCoord = mop.hitVec.xCoord; impactPos.yCoord = mop.hitVec.yCoord; impactPos.zCoord = mop.hitVec.zCoord; } - + return toWaste; } } diff --git a/src/main/java/com/hbm/util/DamageResistanceHandler.java b/src/main/java/com/hbm/util/DamageResistanceHandler.java new file mode 100644 index 000000000..b34b26570 --- /dev/null +++ b/src/main/java/com/hbm/util/DamageResistanceHandler.java @@ -0,0 +1,402 @@ +package com.hbm.util; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; + +import com.hbm.items.ModItems; +import com.hbm.util.Tuple.Quartet; + +import api.hbm.entity.IResistanceProvider; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; +import net.minecraftforge.event.entity.living.LivingAttackEvent; +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +/** + * Basic handling/registry class for our custom resistance stats. + * Handles resistances for individual armor pieces, full sets as well as entity classes for innate damage resistance + * + * @author hbm + */ +public class DamageResistanceHandler { + + /** Currently cached DT reduction */ + public static float currentPDT = 0F; + /** Currently cached armor piercing % */ + public static float currentPDR = 0F; + + public static final String CATEGORY_EXPLOSION = "EXPL"; + public static final String CATEGORY_FIRE = "FIRE"; + public static final String CATEGORY_PROJECTILE = "PROJ"; + public static final String CATEGORY_ENERGY = "EN"; + + public static HashMap itemStats = new HashMap(); + public static HashMap, ResistanceStats> setStats = new HashMap(); + public static HashMap, ResistanceStats> entityStats = new HashMap(); + + public static HashMap>> itemInfoSet = new HashMap(); + + public static void init() { + + itemStats.clear(); + setStats.clear(); + entityStats.clear(); + itemInfoSet.clear(); + + entityStats.put(EntityCreeper.class, new ResistanceStats().addCategory(CATEGORY_EXPLOSION, 2F, 0.5F)); + + itemStats.put(ModItems.jackt, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 5F, 0.5F)); + itemStats.put(ModItems.jackt2, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 5F, 0.5F)); + + registerSet(ModItems.steel_helmet, ModItems.steel_plate, ModItems.steel_legs, ModItems.steel_boots, new ResistanceStats()); + registerSet(ModItems.titanium_helmet, ModItems.titanium_plate, ModItems.titanium_legs, ModItems.titanium_boots, new ResistanceStats()); + registerSet(ModItems.alloy_helmet, ModItems.alloy_plate, ModItems.alloy_legs, ModItems.alloy_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 2F, 0.1F)); + registerSet(ModItems.cobalt_helmet, ModItems.cobalt_plate, ModItems.cobalt_legs, ModItems.cobalt_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 2F, 0.1F)); + registerSet(ModItems.starmetal_helmet, ModItems.starmetal_plate, ModItems.starmetal_legs, ModItems.starmetal_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 3F, 0.25F) + .setOther(1F, 0.1F)); + registerSet(ModItems.zirconium_legs, ModItems.zirconium_legs, ModItems.zirconium_legs, ModItems.zirconium_legs, new ResistanceStats() + .setOther(0F, 1F)); + registerSet(ModItems.dnt_helmet, ModItems.dnt_plate, ModItems.dnt_legs, ModItems.dnt_boots, new ResistanceStats()); + registerSet(ModItems.cmb_helmet, ModItems.cmb_plate, ModItems.cmb_legs, ModItems.cmb_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 5F, 0.5F) + .setOther(5F, 0.25F)); + registerSet(ModItems.schrabidium_helmet, ModItems.schrabidium_plate, ModItems.schrabidium_legs, ModItems.schrabidium_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 10F, 0.65F) + .setOther(5F, 0.5F)); + registerSet(ModItems.robes_helmet, ModItems.robes_plate, ModItems.robes_legs, ModItems.robes_boots, new ResistanceStats()); + + registerSet(ModItems.security_helmet, ModItems.security_plate, ModItems.security_legs, ModItems.security_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 5F, 0.5F) + .addCategory(CATEGORY_EXPLOSION, 2F, 0.25F)); + registerSet(ModItems.steamsuit_helmet, ModItems.steamsuit_plate, ModItems.steamsuit_legs, ModItems.steamsuit_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 2F, 0.15F) + .addCategory(CATEGORY_FIRE, 0.5F, 0.25F) + .addExact(DamageSource.fall.damageType, 5F, 0.25F) + .setOther(0F, 0.1F)); + registerSet(ModItems.dieselsuit_helmet, ModItems.dieselsuit_plate, ModItems.dieselsuit_legs, ModItems.dieselsuit_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 1F, 0.15F) + .addCategory(CATEGORY_FIRE, 0.5F, 0.5F) + .addCategory(CATEGORY_EXPLOSION, 2F, 0.15F) + .setOther(0F, 0.1F)); + registerSet(ModItems.t45_helmet, ModItems.t45_plate, ModItems.t45_legs, ModItems.t45_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 2F, 0.15F) + .addCategory(CATEGORY_FIRE, 0.5F, 0.35F) + .addCategory(CATEGORY_EXPLOSION, 5F, 0.25F) + .addExact(DamageSource.fall.damageType, 0F, 1F) + .setOther(0F, 0.1F)); + registerSet(ModItems.ajr_helmet, ModItems.ajr_plate, ModItems.ajr_legs, ModItems.ajr_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 4F, 0.15F) + .addCategory(CATEGORY_FIRE, 0.5F, 0.35F) + .addCategory(CATEGORY_EXPLOSION, 7.5F, 0.25F) + .addExact(DamageSource.fall.damageType, 0F, 1F) + .setOther(0F, 0.15F)); + registerSet(ModItems.ajro_helmet, ModItems.ajro_plate, ModItems.ajro_legs, ModItems.ajro_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 4F, 0.15F) + .addCategory(CATEGORY_FIRE, 0.5F, 0.35F) + .addCategory(CATEGORY_EXPLOSION, 7.5F, 0.25F) + .addExact(DamageSource.fall.damageType, 0F, 1F) + .setOther(0F, 0.15F)); + registerSet(ModItems.rpa_helmet, ModItems.rpa_plate, ModItems.rpa_legs, ModItems.rpa_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 20F, 0.65F) + .addCategory(CATEGORY_FIRE, 10F, 0.75F) + .addCategory(CATEGORY_EXPLOSION, 15F, 0.25F) + .addExact(DamageClass.LASER.name(), 10F, 0.75F) + .addExact(DamageSource.fall.damageType, 0F, 1F) + .setOther(10F, 0.15F)); + ResistanceStats bj = new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 5F, 0.5F) + .addCategory(CATEGORY_FIRE, 2.5F, 0.5F) + .addCategory(CATEGORY_EXPLOSION, 10F, 0.25F) + .addExact(DamageSource.fall.damageType, 0F, 1F) + .setOther(2F, 0.15F); + registerSet(ModItems.bj_helmet, ModItems.bj_plate, ModItems.bj_legs, ModItems.bj_boots, bj); + registerSet(ModItems.bj_helmet, ModItems.bj_plate_jetpack, ModItems.bj_legs, ModItems.bj_boots, bj); + registerSet(ModItems.envsuit_helmet, ModItems.envsuit_plate, ModItems.envsuit_legs, ModItems.envsuit_boots, new ResistanceStats() + .addCategory(CATEGORY_FIRE, 2F, 0.75F) + .addExact(DamageSource.drown.damageType, 0F, 1F) + .addExact(DamageSource.fall.damageType, 5F, 0.75F) + .setOther(0F, 0.1F)); + registerSet(ModItems.hev_helmet, ModItems.hev_plate, ModItems.hev_legs, ModItems.hev_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 2F, 0.25F) + .addCategory(CATEGORY_FIRE, 0.5F, 0.5F) + .addCategory(CATEGORY_EXPLOSION, 5F, 0.25F) + .addExact(DamageSource.onFire.damageType, 0F, 1F) + .addExact(DamageSource.fall.damageType, 10F, 0F) + .setOther(2F, 0.25F)); + registerSet(ModItems.bismuth_helmet, ModItems.bismuth_plate, ModItems.bismuth_legs, ModItems.bismuth_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 2F, 0.15F) + .addCategory(CATEGORY_FIRE, 5F, 0.5F) + .addCategory(CATEGORY_EXPLOSION, 5F, 0.25F) + .addExact(DamageSource.fall.damageType, 0F, 1F) + .setOther(2F, 0.25F)); + registerSet(ModItems.fau_helmet, ModItems.fau_plate, ModItems.fau_legs, ModItems.fau_boots, new ResistanceStats() + .addCategory(CATEGORY_EXPLOSION, 50F, 0.95F) + .addExact(DamageClass.LASER.name(), 25F, 0.95F) + .addExact(DamageSource.fall.damageType, 0F, 1F) + .setOther(100F, 0.99F)); + registerSet(ModItems.dns_helmet, ModItems.dns_plate, ModItems.dns_legs, ModItems.dns_boots, new ResistanceStats() + .addCategory(CATEGORY_EXPLOSION, 100F, 0.99F) + .setOther(100F, 1F)); + registerSet(ModItems.trenchmaster_helmet, ModItems.trenchmaster_plate, ModItems.trenchmaster_legs, ModItems.trenchmaster_boots, new ResistanceStats() + .addCategory(CATEGORY_PROJECTILE, 5F, 0.5F) + .addCategory(CATEGORY_FIRE, 5F, 0.5F) + .addCategory(CATEGORY_EXPLOSION, 5F, 0.25F) + .addExact(DamageClass.LASER.name(), 15F, 0.9F) + .addExact(DamageSource.fall.damageType, 10F, 0.5F) + .setOther(5F, 0.25F)); + + registerSet(ModItems.euphemium_helmet, ModItems.euphemium_plate, ModItems.euphemium_legs, ModItems.euphemium_boots, new ResistanceStats() + .setOther(1_000_000F, 1F)); + + registerSet(ModItems.hazmat_helmet, ModItems.hazmat_plate, ModItems.hazmat_legs, ModItems.hazmat_boots, new ResistanceStats()); + registerSet(ModItems.hazmat_helmet_red, ModItems.hazmat_plate_red, ModItems.hazmat_legs_red, ModItems.hazmat_boots_red, new ResistanceStats()); + registerSet(ModItems.hazmat_helmet_grey, ModItems.hazmat_plate_grey, ModItems.hazmat_legs_grey, ModItems.hazmat_boots_grey, new ResistanceStats()); + registerSet(ModItems.liquidator_helmet, ModItems.liquidator_plate, ModItems.liquidator_legs, ModItems.liquidator_boots, new ResistanceStats()); + registerSet(ModItems.hazmat_paa_helmet, ModItems.hazmat_paa_plate, ModItems.hazmat_paa_legs, ModItems.hazmat_paa_boots, new ResistanceStats()); + registerSet(ModItems.asbestos_helmet, ModItems.asbestos_plate, ModItems.asbestos_legs, ModItems.asbestos_boots, new ResistanceStats() + .addCategory(CATEGORY_FIRE, 10F, 0.9F)); + } + + public static void registerSet(Item helmet, Item plate, Item legs, Item boots, ResistanceStats stats) { + Quartet set = new Quartet(helmet, plate, legs, boots); + setStats.put(set, stats); + addToListInHashMap(helmet, itemInfoSet, set); + addToListInHashMap(plate, itemInfoSet, set); + addToListInHashMap(legs, itemInfoSet, set); + addToListInHashMap(boots, itemInfoSet, set); + } + + public static void addToListInHashMap(Object key, HashMap map, Object listElement) { + List list = (List) map.get(key); + if(list == null) { + list = new ArrayList(); + map.put(key, list); + } + list.add(listElement); + } + + public static void addInfo(ItemStack stack, List desc) { + if(stack == null || stack.getItem() == null) return; + + if(itemInfoSet.containsKey(stack.getItem())) { + List> sets = itemInfoSet.get(stack.getItem()); + + for(Quartet set : sets) { + + ResistanceStats stats = setStats.get(set); + if(stats == null) continue; + + List toAdd = new ArrayList(); + + for(Entry entry : stats.categoryResistances.entrySet()) { + toAdd.add(I18nUtil.resolveKey("damage.category." + entry.getKey()) + ": " + entry.getValue().threshold + "/" + ((int)(entry.getValue().resistance * 100)) + "%"); + } + for(Entry entry : stats.exactResistances.entrySet()) { + toAdd.add(I18nUtil.resolveKey("damage.exact." + entry.getKey()) + ": " + entry.getValue().threshold + "/" + ((int)(entry.getValue().resistance * 100)) + "%"); + } + if(stats.otherResistance != null) toAdd.add(I18nUtil.resolveKey("damage.other") + ": " + stats.otherResistance.threshold + "/" + ((int)(stats.otherResistance.resistance * 100)) + "%"); + + if(!toAdd.isEmpty()) { + desc.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKey("damage.inset")); + //this sucks ass! + if(set.getW() != null) desc.add(EnumChatFormatting.DARK_PURPLE + " " + new ItemStack(set.getW()).getDisplayName()); + if(set.getX() != null) desc.add(EnumChatFormatting.DARK_PURPLE + " " + new ItemStack(set.getX()).getDisplayName()); + if(set.getY() != null) desc.add(EnumChatFormatting.DARK_PURPLE + " " + new ItemStack(set.getY()).getDisplayName()); + if(set.getZ() != null) desc.add(EnumChatFormatting.DARK_PURPLE + " " + new ItemStack(set.getZ()).getDisplayName()); + desc.addAll(toAdd); + } + + break; //TEMP, only show one set for now + } + } + + if(itemStats.containsKey(stack.getItem())) { + ResistanceStats stats = itemStats.get(stack.getItem()); + + List toAdd = new ArrayList(); + + for(Entry entry : stats.categoryResistances.entrySet()) { + toAdd.add(I18nUtil.resolveKey("damage.category." + entry.getKey()) + ": " + entry.getValue().threshold + "/" + ((int)(entry.getValue().resistance * 100)) + "%"); + } + for(Entry entry : stats.exactResistances.entrySet()) { + toAdd.add(I18nUtil.resolveKey("damage.exact." + entry.getKey()) + ": " + entry.getValue().threshold + "/" + ((int)(entry.getValue().resistance * 100)) + "%"); + } + if(stats.otherResistance != null) toAdd.add(I18nUtil.resolveKey("damage.other") + ": " + stats.otherResistance.threshold + "/" + ((int)(stats.otherResistance.resistance * 100)) + "%"); + + if(!toAdd.isEmpty()) { + desc.add(EnumChatFormatting.DARK_PURPLE + I18nUtil.resolveKey("damage.item")); + desc.addAll(toAdd); + } + } + } + + public static enum DamageClass { + PHYSICAL, + FIRE, + EXPLOSIVE, + ELECTRIC, + LASER, + MICROWAVE, + SUBATOMIC, + OTHER + } + + public static void setup(float dt, float dr) { + currentPDT = dt; + currentPDR = dr; + } + + public static void reset() { + currentPDT = 0; + currentPDR = 0; + } + + @SubscribeEvent + public void onEntityAttacked(LivingAttackEvent event) { + if(event.source.isDamageAbsolute()) return; + + EntityLivingBase e = event.entityLiving; + float amount = event.ammount; + + float[] vals = getDTDR(e, event.source, amount, currentPDT, currentPDR); + float dt = vals[0] - currentPDT; + float dr = vals[1] - currentPDR; + + if((dt > 0 && dt >= event.ammount) || dr >= 1F) { + event.setCanceled(true); + EntityDamageUtil.damageArmorNT(e, amount); + } + } + + @SubscribeEvent + public void onEntityDamaged(LivingHurtEvent event) { + event.ammount = calculateDamage(event.entityLiving, event.source, event.ammount, currentPDT, currentPDR); + if(event.entityLiving instanceof IResistanceProvider) { + IResistanceProvider irp = (IResistanceProvider) event.entityLiving; + irp.onDamageDealt(event.source, event.ammount); + } + } + + public static String typeToCategory(DamageSource source) { + if(source.isExplosion()) return CATEGORY_EXPLOSION; + if(source.isFireDamage()) return CATEGORY_FIRE; + if(source.isProjectile()) return CATEGORY_PROJECTILE; + if(source.damageType.equals(DamageClass.LASER.name())) return CATEGORY_ENERGY; + if(source.damageType.equals(DamageClass.MICROWAVE.name())) return CATEGORY_ENERGY; + if(source.damageType.equals(DamageClass.SUBATOMIC.name())) return CATEGORY_ENERGY; + return source.damageType; + } + + public static float calculateDamage(EntityLivingBase entity, DamageSource damage, float amount, float pierceDT, float pierce) { + if(damage.isDamageAbsolute()) return amount; + + float[] vals = getDTDR(entity, damage, amount, pierceDT, pierce); + float dt = vals[0]; + float dr = vals[1]; + + dt = Math.max(0F, dt - pierceDT); + if(dt >= amount) return 0F; + amount -= dt; + dr *= MathHelper.clamp_float(1F - pierce, 0F, 2F /* we allow up to -1 armor piercing, which can double effective armor values */); + + return amount *= (1F - dr); + } + + public static float[] getDTDR(EntityLivingBase entity, DamageSource damage, float amount, float pierceDT, float pierce) { + + float dt = 0; + float dr = 0; + + if(entity instanceof IResistanceProvider) { + IResistanceProvider irp = (IResistanceProvider) entity; + float[] res = irp.getCurrentDTDR(damage, amount, pierceDT, pierce); + dt += res[0]; + dr += res[1]; + } + + /// SET HANDLING /// + Quartet wornSet = new Quartet( + entity.getEquipmentInSlot(4) != null ? entity.getEquipmentInSlot(4).getItem() : null, + entity.getEquipmentInSlot(3) != null ? entity.getEquipmentInSlot(3).getItem() : null, + entity.getEquipmentInSlot(2) != null ? entity.getEquipmentInSlot(2).getItem() : null, + entity.getEquipmentInSlot(1) != null ? entity.getEquipmentInSlot(1).getItem() : null + ); + + ResistanceStats setResistance = setStats.get(wornSet); + if(setResistance != null) { + Resistance res = setResistance.getResistance(damage); + if(res != null) { + dt += res.threshold; + dr += res.resistance; + } + } + + /// ARMOR /// + for(int i = 1; i <= 4; i++) { + ItemStack armor = entity.getEquipmentInSlot(i); + if(armor == null) continue; + ResistanceStats stats = itemStats.get(armor.getItem()); + if(stats == null) continue; + Resistance res = stats.getResistance(damage); + if(res == null) continue; + dt += res.threshold; + dr += res.resistance; + } + + /// ENTITY CLASS HANDLING /// + ResistanceStats innateResistance = entityStats.get(entity.getClass()); + if(innateResistance != null) { + Resistance res = innateResistance.getResistance(damage); + if(res != null) { + dt += res.threshold; + dr += res.resistance; + } + } + + return new float[] {dt, dr}; + } + + public static class ResistanceStats { + + public HashMap exactResistances = new HashMap(); + public HashMap categoryResistances = new HashMap(); + public Resistance otherResistance; + + public Resistance getResistance(DamageSource source) { + Resistance exact = exactResistances.get(source.damageType); + if(exact != null) return exact; + Resistance category = categoryResistances.get(typeToCategory(source)); + if(category != null) return category; + return otherResistance; + } + + public ResistanceStats addExact(String type, float threshold, float resistance) { exactResistances.put(type, new Resistance(threshold, resistance)); return this; } + public ResistanceStats addCategory(String type, float threshold, float resistance) { categoryResistances.put(type, new Resistance(threshold, resistance)); return this; } + public ResistanceStats setOther(float threshold, float resistance) { otherResistance = new Resistance(threshold, resistance); return this; } + } + + public static class Resistance { + + public float threshold; + public float resistance; + + public Resistance(float threshold, float resistance) { + this.threshold = threshold; + this.resistance = resistance; + } + } +} diff --git a/src/main/java/com/hbm/util/Either.java b/src/main/java/com/hbm/util/Either.java new file mode 100644 index 000000000..be2e5da75 --- /dev/null +++ b/src/main/java/com/hbm/util/Either.java @@ -0,0 +1,77 @@ +package com.hbm.util; + +import java.util.function.Function; + +/** + * Represents a value that is either of generic type L or R + * @author martinthedragon + */ +@SuppressWarnings("unchecked") +public final class Either { + + public static Either left(L value) { + return new Either<>(value, true); + } + + public static Either right(R value) { + return new Either<>(value, false); + } + + private final Object value; + private final boolean isLeft; + + private Either(Object value, boolean isLeft) { + this.value = value; + this.isLeft = isLeft; + } + + public boolean isLeft() { + return isLeft; + } + + public boolean isRight() { + return !isLeft; + } + + public L left() { + if(isLeft) + return (L) value; + else + throw new IllegalStateException("Tried accessing value as the L type, but was R type"); + } + + public R right() { + if(!isLeft) + return (R) value; + else + throw new IllegalStateException("Tried accessing value as the R type, but was L type"); + } + + public L leftOrNull() { + return isLeft ? (L) value : null; + } + + public R rightOrNull() { + return !isLeft ? (R) value : null; + } + + public V cast() { + return (V) value; + } + + public T run(Function leftFunc, Function rightFunc) { + return isLeft ? leftFunc.apply((L) value) : rightFunc.apply((R) value); + } + + public T runLeftOrNull(Function func) { + return isLeft ? func.apply((L) value) : null; + } + + public T runRightOrNull(Function func) { + return !isLeft ? func.apply((R) value) : null; + } + + public T runCasting(Function func) { + return func.apply((V) value); + } +} diff --git a/src/main/java/com/hbm/util/EntityDamageUtil.java b/src/main/java/com/hbm/util/EntityDamageUtil.java index 137256643..03c2363d2 100644 --- a/src/main/java/com/hbm/util/EntityDamageUtil.java +++ b/src/main/java/com/hbm/util/EntityDamageUtil.java @@ -1,47 +1,33 @@ package com.hbm.util; import java.lang.reflect.Method; +import java.util.List; import cpw.mods.fml.relauncher.ReflectionHelper; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.passive.EntityTameable; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.potion.Potion; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; import net.minecraftforge.common.ForgeHooks; public class EntityDamageUtil { - - /** - * Attacks the given entity twice, based on a piecring percentage. The second hit sets the damage source to bypass armor. - * The damage source is modified, so you can't reuse damage source instances. - */ - public static boolean attackEntityFromArmorPiercing(Entity victim, DamageSource src, float damage, float piercing) { - - if(src.isUnblockable() || piercing == 0) return victim.attackEntityFrom(src, damage); - - if(piercing == 1) { - src.setDamageBypassesArmor(); - return victim.attackEntityFrom(src, damage); - } - - boolean ret = false; - - ret |= victim.attackEntityFrom(src, damage * (1F - piercing)); - src.setDamageBypassesArmor(); - ret |= victim.attackEntityFrom(src, damage * piercing); - return ret; - } - + public static boolean attackEntityFromIgnoreIFrame(Entity victim, DamageSource src, float damage) { if(!victim.attackEntityFrom(src, damage)) { - + if(victim instanceof EntityLivingBase) { EntityLivingBase living = (EntityLivingBase) victim; - + if(living.hurtResistantTime > living.maxHurtResistantTime / 2.0F) { damage += living.lastDamage; } @@ -51,10 +37,159 @@ public class EntityDamageUtil { return true; } } - + + public static boolean attackEntityFromNT(EntityLivingBase living, DamageSource source, float amount, boolean ignoreIFrame, boolean allowSpecialCancel, double knockbackMultiplier, float pierceDT, float pierce) { + if(living instanceof EntityPlayerMP && source.getEntity() instanceof EntityPlayer) { + EntityPlayerMP playerMP = (EntityPlayerMP) living; + EntityPlayer attacker = (EntityPlayer) source.getEntity(); + if(!playerMP.canAttackPlayer(attacker)) return false; //handles wack-ass no PVP rule as well as scoreboard friendly fire + } + DamageResistanceHandler.setup(pierceDT, pierce); + living.attackEntityFrom(source, 0F); + boolean ret = attackEntityFromNTInternal(living, source, amount, ignoreIFrame, allowSpecialCancel, knockbackMultiplier); + //boolean ret = living.attackEntityFrom(source, amount); + DamageResistanceHandler.reset(); + return ret; + } + + private static boolean attackEntityFromNTInternal(EntityLivingBase living, DamageSource source, float amount, boolean ignoreIFrame, boolean allowSpecialCancel, double knockbackMultiplier) { + if(ForgeHooks.onLivingAttack(living, source, amount) && allowSpecialCancel) return false; + if(living.isEntityInvulnerable()) return false; + if(living.worldObj.isRemote) return false; + if(living instanceof EntityPlayer && ((EntityPlayer) living).capabilities.disableDamage && !source.canHarmInCreative()) return false; + + living.entityAge = 0; + if(living.getHealth() <= 0.0F) return false; + if(source.isFireDamage() && living.isPotionActive(Potion.fireResistance)) return false; + + living.limbSwingAmount = 1.5F; + boolean didAttackRegister = true; + + if(living.hurtResistantTime > living.maxHurtResistantTime / 2.0F && !ignoreIFrame) { + if(amount <= living.lastDamage) { return false; } + damageEntityNT(living, source, amount - living.lastDamage); + living.lastDamage = amount; + didAttackRegister = false; + } else { + living.lastDamage = amount; + living.prevHealth = living.getHealth(); + living.hurtResistantTime = living.maxHurtResistantTime; + damageEntityNT(living, source, amount); + living.hurtTime = living.maxHurtTime = 10; + } + + living.attackedAtYaw = 0.0F; + Entity entity = source.getEntity(); + + if(entity != null) { + if(entity instanceof EntityLivingBase) { + living.setRevengeTarget((EntityLivingBase) entity); + } + + if(entity instanceof EntityPlayer) { + living.recentlyHit = 100; + living.attackingPlayer = (EntityPlayer) entity; + } else if(entity instanceof EntityTameable) { + EntityTameable entitywolf = (EntityTameable) entity; + + if(entitywolf.isTamed()) { + living.recentlyHit = 100; + living.attackingPlayer = null; + } + } + } + + if(didAttackRegister) { + living.worldObj.setEntityState(living, (byte) 2); + + if(source != DamageSource.drown) setBeenAttacked(living); //# + + if(entity != null) { + double deltaX = entity.posX - living.posX; + double deltaZ; + + for(deltaZ = entity.posZ - living.posZ; deltaX * deltaX + deltaZ * deltaZ < 1.0E-4D; deltaZ = (Math.random() - Math.random()) * 0.01D) { + deltaX = (Math.random() - Math.random()) * 0.01D; + } + + living.attackedAtYaw = (float) (Math.atan2(deltaZ, deltaX) * 180.0D / Math.PI) - living.rotationYaw; + if(knockbackMultiplier > 0) knockBack(living, entity, amount, deltaX, deltaZ, knockbackMultiplier); + } else { + living.attackedAtYaw = (float) ((int) (Math.random() * 2.0D) * 180); + } + } + + String sound; + + if(living.getHealth() <= 0.0F) { + sound = getDeathSound(living); + if(didAttackRegister && sound != null) living.playSound(sound, getSoundVolume(living), getSoundPitch(living)); //# + living.onDeath(source); + } else { + sound = getHurtSound(living); + if(didAttackRegister && sound != null) living.playSound(sound, getSoundVolume(living), getSoundPitch(living)); //# + } + + return true; + } + + public static void knockBack(EntityLivingBase living, Entity attacker, float damage, double motionX, double motionZ, double multiplier) { + if(living.getRNG().nextDouble() >= living.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).getAttributeValue()) { + living.isAirBorne = true; + double horizontal = Math.sqrt(motionX * motionX + motionZ * motionZ); + double magnitude = 0.4D * multiplier; + living.motionX /= 2.0D; + living.motionY /= 2.0D; + living.motionZ /= 2.0D; + living.motionX -= motionX / horizontal * magnitude; + living.motionY += (double) magnitude; + living.motionZ -= motionZ / horizontal * magnitude; + + if(living.motionY > 0.2D) { + living.motionY = 0.2D * multiplier; + } + } + } + + public static void damageEntityNT(EntityLivingBase living, DamageSource source, float amount) { + if(!living.isEntityInvulnerable()) { + amount = ForgeHooks.onLivingHurt(living, source, amount); + if(amount <= 0) return; + + amount = applyArmorCalculationsNT(living, source, amount); + amount = applyPotionDamageCalculations(living, source, amount); + + float originalAmount = amount; + amount = Math.max(amount - living.getAbsorptionAmount(), 0.0F); + living.setAbsorptionAmount(living.getAbsorptionAmount() - (originalAmount - amount)); + + if(amount != 0.0F) { + float health = living.getHealth(); + living.setHealth(health - amount); + living.func_110142_aN().func_94547_a(source, health, amount); + living.setAbsorptionAmount(living.getAbsorptionAmount() - amount); + } + } + } + + public static float applyArmorCalculationsNT(EntityLivingBase living, DamageSource source, float amount) { + if(!source.isUnblockable()) { + float i = 25F - (living.getTotalArmorValue() * (1 - DamageResistanceHandler.currentPDR)); + float armor = amount * (float) i; + damageArmorNT(living, amount); + amount = armor / 25.0F; + } + + return amount; + } + + public static void damageArmorNT(EntityLivingBase living, float amount) { + + } + /** Currently just a copy of the vanilla damage code */ - public static boolean attackEntityFromNT(EntityLivingBase living, DamageSource source, float amount) { - + @Deprecated public static boolean attackEntityFromNT(EntityLivingBase living, DamageSource source, float amount) { + if(ForgeHooks.onLivingAttack(living, source, amount)) return false; if(living.isEntityInvulnerable()) { @@ -104,8 +239,8 @@ public class EntityDamageUtil { if(entity instanceof EntityPlayer) { living.recentlyHit = 100; living.attackingPlayer = (EntityPlayer) entity; - } else if(entity instanceof net.minecraft.entity.passive.EntityTameable) { - net.minecraft.entity.passive.EntityTameable entitywolf = (net.minecraft.entity.passive.EntityTameable) entity; + } else if(entity instanceof EntityTameable) { + EntityTameable entitywolf = (EntityTameable) entity; if(entitywolf.isTamed()) { living.recentlyHit = 100; @@ -158,29 +293,29 @@ public class EntityDamageUtil { } } } - + // in this household we drink gasoline and sniff glue public static String getDeathSound(EntityLivingBase living) { Method m = ReflectionHelper.findMethod(EntityLivingBase.class, living, new String[] {"func_70673_aS", "getDeathSound"}); try { return (String) m.invoke(living); } catch(Exception e) { } return "game.neutral.die"; } - + public static String getHurtSound(EntityLivingBase living) { Method m = ReflectionHelper.findMethod(EntityLivingBase.class, living, new String[] {"func_70621_aR", "getHurtSound"}); try { return (String) m.invoke(living); } catch(Exception e) { } return "game.neutral.hurt"; } - + public static float getSoundVolume(EntityLivingBase living) { Method m = ReflectionHelper.findMethod(EntityLivingBase.class, living, new String[] {"func_70599_aP", "getSoundVolume"}); try { return (float) m.invoke(living); } catch(Exception e) { } return 1F; } - + public static float getSoundPitch(EntityLivingBase living) { Method m = ReflectionHelper.findMethod(EntityLivingBase.class, living, new String[] {"func_70647_i", "getSoundPitch"}); try { return (float) m.invoke(living); } catch(Exception e) { } return 1F; } - public static void damageEntity(EntityLivingBase living, DamageSource source, float amount) { + @Deprecated public static void damageEntity(EntityLivingBase living, DamageSource source, float amount) { if(!living.isEntityInvulnerable()) { amount = ForgeHooks.onLivingHurt(living, source, amount); if(amount <= 0) @@ -200,17 +335,17 @@ public class EntityDamageUtil { } } - public static float applyArmorCalculations(EntityLivingBase living, DamageSource source, float amount) { + @Deprecated public static float applyArmorCalculations(EntityLivingBase living, DamageSource source, float amount) { if(!source.isUnblockable()) { int i = 25 - living.getTotalArmorValue(); float armor = amount * (float) i; - //living.damageArmor(p_70655_2_); //unused + //living.damageArmor(amount); //unused amount = armor / 25.0F; } return amount; } - + public static float applyPotionDamageCalculations(EntityLivingBase living, DamageSource source, float amount) { if(source.isDamageAbsolute()) { return amount; @@ -230,7 +365,7 @@ public class EntityDamageUtil { if(amount <= 0.0F) { return 0.0F; } else { - + resistance = EnchantmentHelper.getEnchantmentModifierDamage(living.getLastActiveItems(), source); if(resistance > 20) { @@ -251,4 +386,74 @@ public class EntityDamageUtil { public static void setBeenAttacked(EntityLivingBase living) { living.velocityChanged = living.getRNG().nextDouble() >= living.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).getAttributeValue(); } + + public static MovingObjectPosition getMouseOver(EntityPlayer attacker, double reach) { + + World world = attacker.worldObj; + MovingObjectPosition objectMouseOver = null; + Entity pointedEntity = null; + + objectMouseOver = rayTrace(attacker, reach, 1F); + + Vec3 pos = getPosition(attacker); + Vec3 look = attacker.getLook(1F); + Vec3 end = pos.addVector(look.xCoord * reach, look.yCoord * reach, look.zCoord * reach); + Vec3 hitvec = null; + float grace = 1.0F; + List list = world.getEntitiesWithinAABBExcludingEntity(attacker, attacker.boundingBox.addCoord(look.xCoord * reach, look.yCoord * reach, look.zCoord * reach).expand(grace, grace, grace)); + + double closest = reach; + + for(int i = 0; i < list.size(); ++i) { + Entity entity = (Entity) list.get(i); + + if(entity.canBeCollidedWith()) { + + float borderSize = entity.getCollisionBorderSize(); + AxisAlignedBB axisalignedbb = entity.boundingBox.expand(borderSize, borderSize, borderSize); + MovingObjectPosition movingobjectposition = axisalignedbb.calculateIntercept(pos, end); + + if(axisalignedbb.isVecInside(pos)) { + if(0.0D <= closest) { + pointedEntity = entity; + hitvec = movingobjectposition == null ? pos : movingobjectposition.hitVec; + closest = 0.0D; + } + + } else if(movingobjectposition != null) { + double dist = pos.distanceTo(movingobjectposition.hitVec); + + if(dist < closest || closest == 0.0D) { + if(entity == attacker.ridingEntity && !entity.canRiderInteract()) { + if(closest == 0.0D) { + pointedEntity = entity; + hitvec = movingobjectposition.hitVec; + } + } else { + pointedEntity = entity; + hitvec = movingobjectposition.hitVec; + closest = dist; + } + } + } + } + } + + if(pointedEntity != null && (closest < reach || objectMouseOver == null)) { + objectMouseOver = new MovingObjectPosition(pointedEntity, hitvec); + } + + return objectMouseOver; + } + + public static MovingObjectPosition rayTrace(EntityPlayer player, double dist, float interp) { + Vec3 pos = getPosition(player); + Vec3 look = player.getLook(interp); + Vec3 end = pos.addVector(look.xCoord * dist, look.yCoord * dist, look.zCoord * dist); + return player.worldObj.func_147447_a(pos, end, false, false, true); + } + + public static Vec3 getPosition(EntityPlayer player) { + return Vec3.createVectorHelper(player.posX, player.posY + player.getEyeHeight(), player.posZ); + } } diff --git a/src/main/java/com/hbm/util/GameRuleHelper.java b/src/main/java/com/hbm/util/GameRuleHelper.java index 0811aa2a1..1551d02d1 100644 --- a/src/main/java/com/hbm/util/GameRuleHelper.java +++ b/src/main/java/com/hbm/util/GameRuleHelper.java @@ -1,37 +1,54 @@ package com.hbm.util; +import com.hbm.tileentity.machine.rbmk.RBMKDials; import net.minecraft.util.MathHelper; +import net.minecraft.world.GameRules; import net.minecraft.world.World; public class GameRuleHelper { - - public static double getClampedDouble(World world, String rule, double def, double min, double max) { - return MathHelper.clamp_double(GameRuleHelper.parseDouble(world.getGameRules().getGameRuleStringValue(rule), def), min, max); - } - - public static double getDoubleMinimum(World world, String rule, double def, double min) { - return Math.max(GameRuleHelper.parseDouble(world.getGameRules().getGameRuleStringValue(rule), def), min); - } - - public static int getIntegerMinimum(World world, String rule, int def, int min) { - return Math.max(GameRuleHelper.parseInt(world.getGameRules().getGameRuleStringValue(rule), def), min); + + public static double getClampedDouble(World world, RBMKDials.RBMKKeys rule, double min, double max) { + return MathHelper.clamp_double(GameRuleHelper.parseDouble(world, world.getGameRules().getGameRuleStringValue(rule.keyString), (double) rule.defValue), min, max); } - public static double parseDouble(String s, double def) { - + public static int getClampedInt(World world, RBMKDials.RBMKKeys rule, int min, int max) { + return MathHelper.clamp_int(GameRuleHelper.parseInt(world, world.getGameRules().getGameRuleStringValue(rule.keyString), (int) rule.defValue), min, max); + } + + public static double getDoubleMinimum(World world, RBMKDials.RBMKKeys rule, double min) { + return Math.max(GameRuleHelper.parseDouble(world, world.getGameRules().getGameRuleStringValue(rule.keyString), (double) rule.defValue), min); + } + + public static int getIntegerMinimum(World world, RBMKDials.RBMKKeys rule, int min) { + return Math.max(GameRuleHelper.parseInt(world, world.getGameRules().getGameRuleStringValue(rule.keyString), (int) rule.defValue), min); + } + + public static double parseDouble(World world, String s, double def) { + + GameRules rules = world.getGameRules(); + if(s.isEmpty() && !rules.hasRule(s)) { + rules.addGameRule(s, String.valueOf(def)); + return def; + } + try { return Double.parseDouble(s); } catch(Exception ex) { } - + return def; } - public static int parseInt(String s, int def) { - + public static int parseInt(World world, String s, int def) { + + GameRules rules = world.getGameRules(); + if(s.isEmpty() && !rules.hasRule(s)) { + rules.addGameRule(s, String.valueOf(def)); + } + try { return Integer.parseInt(s); } catch(Exception ex) { } - + return def; } diff --git a/src/main/java/com/hbm/util/HashedSet.java b/src/main/java/com/hbm/util/HashedSet.java index 6a45c952b..72ab2c102 100644 --- a/src/main/java/com/hbm/util/HashedSet.java +++ b/src/main/java/com/hbm/util/HashedSet.java @@ -1,34 +1,34 @@ package com.hbm.util; +import org.apache.commons.lang3.NotImplementedException; + import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; import java.util.Set; -import org.apache.commons.lang3.NotImplementedException; - /** * A crude implementation of the HashSet with a few key differences: * - instead of being stored as the key, the objects are stored as values in the underlying HashMap with the hash being the key * - consequently, things with matching hash are considered the same, skipping the equals check * - no equals check means that collisions are possible, so be careful * - the underlying HashMap is accessible, which means that the instances can be grabbed out of the HashedSet if a hash is supplied - * + * * This sack of crap was only intended for the drone request network code - * + * * @author hbm * * @param */ public class HashedSet implements Set { - + HashMap map = new HashMap(); - + public static class HashedIterator implements Iterator { - + private Iterator> iterator; - + public HashedIterator(HashedSet set) { this.iterator = set.map.entrySet().iterator(); } @@ -54,7 +54,7 @@ public class HashedSet implements Set { public HashedSet(Set reachableNodes) { this.addAll(reachableNodes); } - + public HashMap getMap() { return this.map; } @@ -85,11 +85,11 @@ public class HashedSet implements Set { @Override public boolean containsAll(Collection c) { - + for(Object o : c) { if(!this.contains(o)) return false; } - + return true; } @@ -107,12 +107,12 @@ public class HashedSet implements Set { public boolean remove(Object o) { T obj = this.map.get(o.hashCode()); boolean rem = false; - + if(obj != null) { rem = true; this.map.remove(o.hashCode()); } - + return rem; } diff --git a/src/main/java/com/hbm/util/I18nUtil.java b/src/main/java/com/hbm/util/I18nUtil.java index a4460f6d9..13d4a2d36 100644 --- a/src/main/java/com/hbm/util/I18nUtil.java +++ b/src/main/java/com/hbm/util/I18nUtil.java @@ -1,13 +1,13 @@ package com.hbm.util; -import java.util.ArrayList; -import java.util.List; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.resources.I18n; +import java.util.ArrayList; +import java.util.List; + @SideOnly(Side.CLIENT) public class I18nUtil { @@ -32,7 +32,7 @@ public class I18nUtil { public static String[] resolveKeyArray(String s, Object... args) { return resolveKey(s, args).split("\\$"); } - + /** * The same as autoBreak, but it also respects NTM's break character ($) for manual line breaking in addition to the automatic ones * @param fontRenderer @@ -45,14 +45,14 @@ public class I18nUtil { String[] paragraphs = text.split("\\$"); List lines = new ArrayList(); - + for(String paragraph : paragraphs) { lines.addAll(autoBreak(fontRenderer, paragraph, width)); } - + return lines; } - + /** * Turns one string into a list of strings, cutting sentences up to fit within the defined width if they were rendered in a GUI * @param fontRenderer @@ -66,17 +66,17 @@ public class I18nUtil { List lines = new ArrayList(); //split the text by all spaces String[] words = text.split(" "); - + //add the first word to the first line, no matter what lines.add(words[0]); //starting indent is the width of the first word int indent = fontRenderer.getStringWidth(words[0]); - + for(int w = 1; w < words.length; w++) { - + //increment the indent by the width of the next word + leading space indent += fontRenderer.getStringWidth(" " + words[w]); - + //if the indent is within bounds if(indent <= width) { //add the next word to the last line (i.e. the one in question) @@ -88,7 +88,7 @@ public class I18nUtil { indent = fontRenderer.getStringWidth(words[w]); } } - + return lines; } } diff --git a/src/main/java/com/hbm/util/InventoryUtil.java b/src/main/java/com/hbm/util/InventoryUtil.java index 97cc2bfe7..be9861d6a 100644 --- a/src/main/java/com/hbm/util/InventoryUtil.java +++ b/src/main/java/com/hbm/util/InventoryUtil.java @@ -1,11 +1,9 @@ package com.hbm.util; -import java.util.List; - import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.recipes.anvil.AnvilRecipes.AnvilOutput; +import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityFurnaceBrick; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; @@ -14,6 +12,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntityFurnace; import net.minecraftforge.oredict.OreDictionary; +import java.util.List; + //'t was about time public class InventoryUtil { @@ -21,7 +21,7 @@ public class InventoryUtil { if(sided instanceof TileEntityFurnace) return new int[] {1, 0}; if(sided instanceof TileEntityFurnaceBrick) return new int[] {1, 0, 3}; - + return sided.getAccessibleSlotsFromSide(side); } @@ -35,24 +35,24 @@ public class InventoryUtil { * @return the remainder of the stack that could not have been added, can return null */ public static ItemStack tryAddItemToInventory(ItemStack[] inv, int start, int end, ItemStack stack) { - + ItemStack rem = tryAddItemToExistingStack(inv, start, end, stack); - + if(rem == null) return null; - + boolean didAdd = tryAddItemToNewSlot(inv, start, end, rem); - + if(didAdd) return null; else return rem; } - + public static ItemStack tryAddItemToInventory(ItemStack[] inv, ItemStack stack) { return tryAddItemToInventory(inv, 0, inv.length - 1, stack); } - + /** * Functionally equal to tryAddItemToInventory, but will not try to create new stacks in empty slots * @param inv @@ -62,29 +62,29 @@ public class InventoryUtil { * @return */ public static ItemStack tryAddItemToExistingStack(ItemStack[] inv, int start, int end, ItemStack stack) { - + if(stack == null || stack.stackSize == 0) return null; - + for(int i = start; i <= end; i++) { if(doesStackDataMatch(inv[i], stack)) { - + int transfer = Math.min(stack.stackSize, inv[i].getMaxStackSize() - inv[i].stackSize); - + if(transfer > 0) { inv[i].stackSize += transfer; stack.stackSize -= transfer; - + if(stack.stackSize == 0) return null; } } } - + return stack; } - + /** * Will place the stack in the first empty slot * @param inv @@ -94,21 +94,21 @@ public class InventoryUtil { * @return whether the stack could be added or not */ public static boolean tryAddItemToNewSlot(ItemStack[] inv, int start, int end, ItemStack stack) { - + if(stack == null || stack.stackSize == 0) return true; - + for(int i = start; i <= end; i++) { - + if(inv[i] == null) { inv[i] = stack; return true; } } - + return false; } - + /** * Much of the same but with an ISidedInventory instance instead of a slot array * @param inv @@ -118,86 +118,86 @@ public class InventoryUtil { * @return */ public static ItemStack tryAddItemToInventory(IInventory inv, int start, int end, ItemStack stack) { - + ItemStack rem = tryAddItemToExistingStack(inv, start, end, stack); - + if(rem == null) return null; - + boolean didAdd = tryAddItemToNewSlot(inv, start, end, rem); - + if(didAdd) return null; else return rem; } - + public static ItemStack tryAddItemToExistingStack(IInventory inv, int start, int end, ItemStack stack) { - + if(stack == null || stack.stackSize == 0) return null; - + for(int i = start; i <= end; i++) { if(doesStackDataMatch(inv.getStackInSlot(i), stack)) { - + int transfer = Math.min(stack.stackSize, inv.getStackInSlot(i).getMaxStackSize() - inv.getStackInSlot(i).stackSize); - + if(transfer > 0) { inv.getStackInSlot(i).stackSize += transfer; stack.stackSize -= transfer; - + if(stack.stackSize == 0) return null; } } } - + return stack; } - + public static boolean tryAddItemToNewSlot(IInventory inv, int start, int end, ItemStack stack) { - + if(stack == null || stack.stackSize == 0) return true; - + for(int i = start; i <= end; i++) { - + if(inv.getStackInSlot(i) == null) { inv.setInventorySlotContents(i, stack); return true; } } - + return false; } - + public static boolean tryConsumeAStack(ItemStack[] inv, int start, int end, AStack stack) { - + if(stack == null) return true; - + AStack copy = stack.copy(); - + for(int i = start; i <= end; i++) { ItemStack in = inv[i]; - + if(stack.matchesRecipe(in, true)) { int size = Math.min(copy.stacksize, in.stackSize); - + in.stackSize -= size; copy.stacksize -= size; - + if(in.stackSize == 0) inv[i] = null; if(copy.stacksize == 0) return true; } } - + return false; } - + /** * Compares item, metadata and NBT data of two stacks. Also handles null values! * @param stack1 @@ -205,7 +205,7 @@ public class InventoryUtil { * @return */ public static boolean doesStackDataMatch(ItemStack stack1, ItemStack stack2) { - + if(stack1 == null && stack2 == null) return true; if(stack1 == null && stack2 != null) return false; if(stack1 != null && stack2 == null) return false; @@ -214,10 +214,10 @@ public class InventoryUtil { if(!stack1.hasTagCompound() && !stack2.hasTagCompound()) return true; if(stack1.hasTagCompound() && !stack2.hasTagCompound()) return false; if(!stack1.hasTagCompound() && stack2.hasTagCompound()) return false; - + return stack1.getTagCompound().equals(stack2.getTagCompound()); } - + /** * Checks if a player has matching item stacks in his inventory and removes them if so desired * @param player @@ -226,34 +226,34 @@ public class InventoryUtil { * @return whether the player has the required item stacks or not */ public static boolean doesPlayerHaveAStacks(EntityPlayer player, List stacks, boolean shouldRemove) { - + ItemStack[] original = player.inventory.mainInventory; ItemStack[] inventory = new ItemStack[original.length]; boolean[] modified = new boolean[original.length]; AStack[] input = new AStack[stacks.size()]; - + //first we copy the inputs into an array because 1. it's easier to deal with and 2. we can dick around with the stack sized with no repercussions for(int i = 0; i < input.length; i++) { input[i] = stacks.get(i).copy(); } - + //then we copy the inventory so we can dick around with it as well without making actual modifications to the player's inventory for(int i = 0; i < original.length; i++) { if(original[i] != null) { inventory[i] = original[i].copy(); } } - + //now we go through every ingredient... for(int i = 0; i < input.length; i++) { - + AStack stack = input[i]; - + //...and compare each ingredient to every stack in the inventory for(int j = 0; j < inventory.length; j++) { - + ItemStack inv = inventory[j]; - + //we check if it matches but ignore stack size for now if(stack.matchesRecipe(inv, true)) { //and NOW we care about the stack size @@ -261,29 +261,29 @@ public class InventoryUtil { stack.stacksize -= size; inv.stackSize -= size; modified[j] = true; - + //spent stacks are removed from the equation so that we don't cross ourselves later on if(stack.stacksize <= 0) { input[i] = null; break; } - + if(inv.stackSize <= 0) { inventory[j] = null; } } } } - + for(AStack stack : input) { if(stack != null) { return false; } } - + if(shouldRemove) { for(int i = 0; i < original.length; i++) { - + if(inventory[i] != null && inventory[i].stackSize <= 0) { original[i] = null; } else { @@ -291,12 +291,12 @@ public class InventoryUtil { } } } - + return true; } - + public static void giveChanceStacksToPlayer(EntityPlayer player, List stacks) { - + for(AnvilOutput out : stacks) { if(out.chance == 1.0F || player.getRNG().nextFloat() < out.chance) { if(!player.inventory.addItemStackToInventory(out.stack.copy())) { @@ -305,23 +305,23 @@ public class InventoryUtil { } } } - + public static boolean hasOreDictMatches(EntityPlayer player, String dict, int count) { return countOreDictMatches(player, dict) >= count; } - + public static int countOreDictMatches(EntityPlayer player, String dict) { - + int count = 0; - + for(int i = 0; i < player.inventory.mainInventory.length; i++) { - + ItemStack stack = player.inventory.mainInventory[i]; - + if(stack != null) { - + int[] ids = OreDictionary.getOreIDs(stack); - + for(int id : ids) { if(OreDictionary.getOreName(id).equals(dict)) { count += stack.stackSize; @@ -330,23 +330,23 @@ public class InventoryUtil { } } } - + return count; } - + public static void consumeOreDictMatches(EntityPlayer player, String dict, int count) { - + for(int i = 0; i < player.inventory.mainInventory.length; i++) { - + ItemStack stack = player.inventory.mainInventory[i]; - + if(stack != null) { - + int[] ids = OreDictionary.getOreIDs(stack); - + for(int id : ids) { if(OreDictionary.getOreName(id).equals(dict)) { - + int toConsume = Math.min(count, stack.stackSize); player.inventory.decrStackSize(i, toConsume); count -= toConsume; @@ -356,7 +356,7 @@ public class InventoryUtil { } } } - + /** * Turns objects into 2D ItemStack arrays. Index 1: Ingredient slot, index 2: variation (ore dict) * Handles:
@@ -370,13 +370,13 @@ public class InventoryUtil { * @return */ public static ItemStack[][] extractObject(Object o) { - + if(o instanceof ItemStack) { ItemStack[][] stacks = new ItemStack[1][1]; stacks[0][0] = ((ItemStack)o).copy(); return stacks; } - + if(o instanceof ItemStack[]) { ItemStack[] ingredients = (ItemStack[]) o; ItemStack[][] stacks = new ItemStack[ingredients.length][1]; @@ -385,11 +385,11 @@ public class InventoryUtil { } return stacks; } - + if(o instanceof ItemStack[][]) { return (ItemStack[][]) o; } - + if(o instanceof AStack) { AStack astack = (AStack) o; ItemStack[] ext = astack.extractForNEI().toArray(new ItemStack[0]); @@ -397,23 +397,23 @@ public class InventoryUtil { stacks[0] = ext; //untested, do java arrays allow that? the capacity set is 0 after all return stacks; } - + if(o instanceof AStack[]) { AStack[] ingredients = (AStack[]) o; ItemStack[][] stacks = new ItemStack[ingredients.length][0]; - + for(int i = 0; i < ingredients.length; i++) { stacks[i] = ingredients[i].extractForNEI().toArray(new ItemStack[0]); } - + return stacks; } - + /* in emergency situations with mixed types where AStacks coexist with NBT dependent ItemStacks, such as for fluid icons */ if(o instanceof Object[]) { Object[] ingredients = (Object[]) o; ItemStack[][] stacks = new ItemStack[ingredients.length][0]; - + for(int i = 0; i < ingredients.length; i++) { Object ingredient = ingredients[i]; @@ -425,67 +425,68 @@ public class InventoryUtil { stacks[i][0] = ((ItemStack) ingredient).copy(); } } - + return stacks; } - + + MainRegistry.logger.warn("InventoryUtil: extractObject failed for type " + o); return new ItemStack[0][0]; } - + public static boolean doesArrayHaveIngredients(ItemStack[] array, int start, int end, AStack... ingredients) { ItemStack[] copy = ItemStackUtil.carefulCopyArrayTruncate(array, start, end); - + AStack[] req = new AStack[ingredients.length]; for(int i = 0; i < req.length; i++) { req[i] = ingredients[i] == null ? null : ingredients[i].copy(); } - + for(AStack ingredient : req) { - + if(ingredient == null) continue; - + for(ItemStack input : copy) { - + if(input == null) continue; - + if(ingredient.matchesRecipe(input, true)) { int size = Math.min(input.stackSize, ingredient.stacksize); - + ingredient.stacksize -= size; input.stackSize -= size; - + if(ingredient.stacksize == 0) break; } } - + //we have iterated over the entire input array and removed all matching entries, yet the ingredient is still not exhausted, meaning the input wasn't enough if(ingredient.stacksize > 0) return false; } - + return true; } - + public static boolean doesArrayHaveSpace(ItemStack[] array, int start, int end, ItemStack[] items) { ItemStack[] copy = ItemStackUtil.carefulCopyArrayTruncate(array, start, end); - + for(ItemStack item : items) { - + if(item == null) continue; - + ItemStack remainder = tryAddItemToInventory(copy, item.copy()); if(remainder != null) { return false; } } - + return true; } - + /** * A fixed re-implementation of the original Container.mergeItemStack that repects stack size and slot restrictions. * @param slots @@ -496,7 +497,7 @@ public class InventoryUtil { * @return */ public static boolean mergeItemStack(List slots, ItemStack stack, int start, int end, boolean reverse) { - + boolean success = false; int index = start; @@ -508,7 +509,7 @@ public class InventoryUtil { ItemStack current; if(stack.isStackable()) { - + while(stack.stackSize > 0 && (!reverse && index < end || reverse && index >= start)) { slot = slots.get(index); current = slot.getStack(); @@ -516,10 +517,10 @@ public class InventoryUtil { if(current != null) { int max = Math.min(stack.getMaxStackSize(), slot.getSlotStackLimit()); int toRemove = Math.min(stack.stackSize, max); - + if(slot.isItemValid(ItemStackUtil.carefulCopyWithSize(stack, toRemove)) && current.getItem() == stack.getItem() && (!stack.getHasSubtypes() || stack.getItemDamage() == current.getItemDamage()) && ItemStack.areItemStackTagsEqual(stack, current)) { - + int currentSize = current.stackSize + stack.stackSize; if(currentSize <= max) { stack.stackSize = 0; @@ -555,10 +556,10 @@ public class InventoryUtil { current = slot.getStack(); if(current == null) { - + int max = Math.min(stack.getMaxStackSize(), slot.getSlotStackLimit()); int toRemove = Math.min(stack.stackSize, max); - + if(slot.isItemValid(ItemStackUtil.carefulCopyWithSize(stack, toRemove))) { current = stack.splitStack(toRemove); slot.putStack(current); @@ -576,10 +577,10 @@ public class InventoryUtil { return success; } - + public static int countAStackMatches(ItemStack[] inventory, AStack stack, boolean ignoreSize) { int count = 0; - + for(ItemStack itemStack : inventory) { if(itemStack != null) { if(stack.matchesRecipe(itemStack, true)) { diff --git a/src/main/java/com/hbm/util/ItemStackUtil.java b/src/main/java/com/hbm/util/ItemStackUtil.java index 1ab7af389..c5cb6abd7 100644 --- a/src/main/java/com/hbm/util/ItemStackUtil.java +++ b/src/main/java/com/hbm/util/ItemStackUtil.java @@ -1,9 +1,5 @@ package com.hbm.util; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - import net.minecraft.block.Block; import net.minecraft.entity.item.EntityItem; import net.minecraft.inventory.IInventory; @@ -15,22 +11,26 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.oredict.OreDictionary; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + public class ItemStackUtil { - + public static ItemStack carefulCopy(ItemStack stack) { if(stack == null) return null; return stack.copy(); } - + public static ItemStack carefulCopyWithSize(ItemStack stack, int size) { if(stack == null) return null; - + ItemStack copy = stack.copy(); copy.stackSize = size; return copy; } - + /** * Runs carefulCopy over the entire ItemStack array. * @param array @@ -39,7 +39,7 @@ public class ItemStackUtil { public static ItemStack[] carefulCopyArray(ItemStack[] array) { return carefulCopyArray(array, 0, array.length - 1); } - + /** * Recreates the ItemStack array and only runs carefulCopy over the supplied range. All other fields remain null. * @param array @@ -50,16 +50,16 @@ public class ItemStackUtil { public static ItemStack[] carefulCopyArray(ItemStack[] array, int start, int end) { if(array == null) return null; - + ItemStack[] copy = new ItemStack[array.length]; - + for(int i = start; i <= end; i++) { copy[i] = carefulCopy(array[i]); } - + return copy; } - + /** * Creates a new array that only contains the copied range. * @param array @@ -70,14 +70,14 @@ public class ItemStackUtil { public static ItemStack[] carefulCopyArrayTruncate(ItemStack[] array, int start, int end) { if(array == null) return null; - + int length = end - start + 1; ItemStack[] copy = new ItemStack[length]; - + for(int i = 0; i < length; i++) { copy[i] = carefulCopy(array[start + i]); } - + return copy; } @@ -88,28 +88,28 @@ public class ItemStackUtil { * @param lines */ public static ItemStack addTooltipToStack(ItemStack stack, String... lines) { - + if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); - + NBTTagCompound display = new NBTTagCompound(); NBTTagList lore = new NBTTagList(); - + for(String line : lines) { lore.appendTag(new NBTTagString(EnumChatFormatting.RESET + "" + EnumChatFormatting.GRAY + line)); } - + display.setTag("Lore", lore); stack.stackTagCompound.setTag("display", display); - + return stack; } - + public static void addStacksToNBT(ItemStack stack, ItemStack... stacks) { - + if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); - + NBTTagList tags = new NBTTagList(); for(int i = 0; i < stacks.length; i++) { @@ -122,7 +122,7 @@ public class ItemStackUtil { } stack.stackTagCompound.setTag("items", tags); } - + public static ItemStack[] readStacksFromNBT(ItemStack stack, int count) { if(!stack.hasTagCompound()) @@ -143,14 +143,14 @@ public class ItemStackUtil { stacks[slot] = loadedStack; } } - + return stacks; } - + public static ItemStack[] readStacksFromNBT(ItemStack stack) { return readStacksFromNBT(stack, 0); } - + /** * Returns a List of all ore dict names for this stack. Stack cannot be null, list is empty when there are no ore dict entries. * @param stack @@ -158,15 +158,15 @@ public class ItemStackUtil { */ public static List getOreDictNames(ItemStack stack) { List list = new ArrayList(); - + int ids[] = OreDictionary.getOreIDs(stack); for(int i : ids) { list.add(OreDictionary.getOreName(i)); } - + return list; } - + public static void spillItems(World world, int x, int y, int z, Block block, Random rand) { IInventory tileentityfurnace = (IInventory) world.getTileEntity(x, y, z); @@ -183,7 +183,7 @@ public class ItemStackUtil { int j1 = rand.nextInt(21) + 10; if(j1 > itemstack.stackSize) j1 = itemstack.stackSize; itemstack.stackSize -= j1; - + EntityItem entityitem = new EntityItem(world, x + oX, y + oY, z + oZ, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); if(itemstack.hasTagCompound()) entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); diff --git a/src/main/java/com/hbm/util/LootGenerator.java b/src/main/java/com/hbm/util/LootGenerator.java index bf96fb050..b55cc92c8 100644 --- a/src/main/java/com/hbm/util/LootGenerator.java +++ b/src/main/java/com/hbm/util/LootGenerator.java @@ -1,182 +1,160 @@ package com.hbm.util; -import java.util.Random; - import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; -import com.hbm.inventory.material.Mats; +import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.itempool.ItemPool; import com.hbm.itempool.ItemPoolsPile; import com.hbm.items.ModItems; import com.hbm.items.special.ItemBookLore; -import com.hbm.items.ItemAmmoEnums.AmmoFatman; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import net.minecraft.init.Items; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; +import java.util.Random; + public class LootGenerator { public static void setBlock(World world, int x, int y, int z) { world.setBlock(x, y, z, ModBlocks.deco_loot); } - + public static void addItemWithDeviation(TileEntityLoot loot, Random rand, ItemStack stack, double x, double y, double z) { 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); - + if(loot != null && loot.items.isEmpty()) { - + if(world.rand.nextInt(5) == 0) - loot.addItem(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.LOW), -0.25, 0, -0.125); + loot.addItem(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_STANDARD), -0.25, 0, -0.125); else - loot.addItem(new ItemStack(ModItems.ammo_rocket), -0.25, 0, -0.25); + loot.addItem(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.ROCKET_HEAT), -0.25, 0, -0.25); - for(int i = 0; i < 4; i++) - addItemWithDeviation(loot, world.rand, new ItemStack(ModItems.cap_nuka, 2), 0.125, i * 0.03125, 0.25); - for(int i = 0; i < 2; i++) - addItemWithDeviation(loot, world.rand, new ItemStack(ModItems.syringe_metal_stimpak, 1), -0.25, i * 0.03125, 0.25); - for(int i = 0; i < 6; i++) - addItemWithDeviation(loot, world.rand, new ItemStack(ModItems.cap_nuka, 2), 0.125, i * 0.03125, -0.25); + for(int i = 0; i < 4; i++) addItemWithDeviation(loot, world.rand, new ItemStack(ModItems.cap_nuka, 2), 0.125, i * 0.03125, 0.25); + for(int i = 0; i < 2; i++) addItemWithDeviation(loot, world.rand, new ItemStack(ModItems.syringe_metal_stimpak, 1), -0.25, i * 0.03125, 0.25); + for(int i = 0; i < 6; i++) addItemWithDeviation(loot, world.rand, new ItemStack(ModItems.cap_nuka, 2), 0.125, i * 0.03125, -0.25); } } - + public static void lootMedicine(World world, int x, int y, int z) { - + TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z); - + if(loot != null && loot.items.isEmpty()) { - for(int i = 0; i < 4; i++) { - int type = world.rand.nextInt(4); - Item syringe = type < 2 ? ModItems.syringe_metal_stimpak : type == 2 ? ModItems.syringe_metal_medx : ModItems.syringe_metal_psycho; - addItemWithDeviation(loot, world.rand, new ItemStack(syringe), 0.125, i * 0.03125, 0.25); - } - - int type = world.rand.nextInt(8); - Item syringe = type < 2 ? ModItems.radaway : type < 4 ? ModItems.radx : type < 7 ? ModItems.iv_blood : ModItems.siox; - addItemWithDeviation(loot, world.rand, new ItemStack(syringe), -0.25, 0, -0.125); + for(int i = 0; i < 4; i++) addItemWithDeviation(loot, world.rand, ItemPool.getStack(ItemPoolsPile.POOL_PILE_MED_SYRINGE, world.rand), 0.125, i * 0.03125, 0.25); + addItemWithDeviation(loot, world.rand, ItemPool.getStack(ItemPoolsPile.POOL_PILE_MED_PILLS, world.rand), -0.25, 0, -0.125); } } - + public static void lootCapStash(World world, int x, int y, int z) { - + TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z); - + if(loot != null && loot.items.isEmpty()) { - + for(int i = -1; i <= 1; i++) { for(int j = -1; j <= 1; j++) { - + int count = world.rand.nextInt(5) + 3; for(int k = 0; k < count; k++) { - addItemWithDeviation(loot, world.rand, ItemPool.getStack(ItemPool.getPool(ItemPoolsPile.POOL_PILE_CAPS), world.rand), i * 0.3125, k * 0.03125, j * 0.3125); + addItemWithDeviation(loot, world.rand, ItemPool.getStack(ItemPoolsPile.POOL_PILE_CAPS, world.rand), i * 0.3125, k * 0.03125, j * 0.3125); } } } } } - + public static void lootMakeshiftGun(World world, int x, int y, int z) { TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z); - + if(loot != null && loot.items.isEmpty()) { - + boolean r = world.rand.nextBoolean(); - if(r) - addItemWithDeviation(loot, world.rand, new ItemStack(ModItems.gun_lever_action), 0.125, 0.025, 0.25); - - if(!r || world.rand.nextBoolean()) - addItemWithDeviation(loot, world.rand, new ItemStack(ModItems.wrench), -0.25, 0, -0.28125); - + if(r) addItemWithDeviation(loot, world.rand, ItemPool.getStack(ItemPoolsPile.POOL_PILE_MAKESHIFT_GUN, world.rand), 0.125, 0.025, 0.25); + + if(!r || world.rand.nextBoolean()) addItemWithDeviation(loot, world.rand, ItemPool.getStack(ItemPoolsPile.POOL_PILE_MAKESHIFT_WRENCH, world.rand), -0.25, 0, -0.28125); + int count = world.rand.nextInt(2) + 1; - for(int i = 0; i < count; i++) { - addItemWithDeviation(loot, world.rand, new ItemStack(ModItems.plate_steel), -0.25, i * 0.03125, 0.3125); - } - + for(int i = 0; i < count; i++) addItemWithDeviation(loot, world.rand, ItemPool.getStack(ItemPoolsPile.POOL_PILE_MAKESHIFT_PLATES, world.rand), -0.25, i * 0.03125, 0.3125); + count = world.rand.nextInt(2) + 2; - for(int i = 0; i < count; i++) - addItemWithDeviation(loot, world.rand, new ItemStack(ModItems.wire_fine, 1, Mats.MAT_ALUMINIUM.id), 0.25, i * 0.03125, 0.1875); + for(int i = 0; i < count; i++) addItemWithDeviation(loot, world.rand, ItemPool.getStack(ItemPoolsPile.POOL_PILE_MAKESHIFT_WIRE, world.rand), 0.25, i * 0.03125, 0.1875); } } - + public static void lootNukeStorage(World world, int x, int y, int z) { - + TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z); - + if(loot != null && loot.items.isEmpty()) { - - boolean memes = world.rand.nextInt(10) == 0; - + for(int i = 0; i < 4; i++) { for(int j = 0; j < 4; j++) { - - if(world.rand.nextBoolean() || memes) { - int type = world.rand.nextInt(11); - AmmoFatman nuke = memes ? AmmoFatman.PUMPKIN : type == 0 ? AmmoFatman.STOCK : type <= 5 ? AmmoFatman.LOW : AmmoFatman.SAFE; - loot.addItem(ModItems.ammo_nuke.stackFromEnum(nuke), -0.375 + i * 0.25, 0, -0.375 + j * 0.25); + + if(world.rand.nextBoolean()) { + loot.addItem(ItemPool.getStack(ItemPoolsPile.POOL_PILE_NUKE_STORAGE, world.rand), -0.375 + i * 0.25, 0, -0.375 + j * 0.25); } } } } } - + public static void lootBones(World world, int x, int y, int z) { - + TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z); - + if(loot != null && loot.items.isEmpty()) { - + int limit = world.rand.nextInt(3) + 3; for(int i = 0; i < limit; i++) { addItemWithDeviation(loot, world.rand, ItemPool.getStack(ItemPool.getPool(ItemPoolsPile.POOL_PILE_BONES), world.rand), world.rand.nextDouble() - 0.5, i * 0.03125, world.rand.nextDouble() - 0.5); } } } - + public static void lootGlyphidHive(World world, int x, int y, int z) { - + TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z); - + if(loot != null && loot.items.isEmpty()) { - + int limit = world.rand.nextInt(3) + 3; for(int i = 0; i < limit; i++) { addItemWithDeviation(loot, world.rand, ItemPool.getStack(ItemPool.getPool(ItemPoolsPile.POOL_PILE_HIVE), world.rand), world.rand.nextDouble() - 0.5, i * 0.03125, world.rand.nextDouble() - 0.5); } } } - + public static void lootBookLore(World world, int x, int y, int z, ItemStack book) { - + TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z); - + if(loot != null && loot.items.isEmpty()) { addItemWithDeviation(loot, world.rand, book, 0, 0, -0.25); - + int count = world.rand.nextInt(3) + 2; - for(int k = 0; k < count; k++) - addItemWithDeviation(loot, world.rand, new ItemStack(Items.book), -0.25, k * 0.03125, 0.25); - + for(int k = 0; k < count; k++) addItemWithDeviation(loot, world.rand, new ItemStack(Items.book), -0.25, k * 0.03125, 0.25); + count = world.rand.nextInt(2) + 1; - for(int k = 0; k < count; k++) - addItemWithDeviation(loot, world.rand, new ItemStack(Items.paper), 0.25, k * 0.03125, 0.125); + for(int k = 0; k < count; k++) addItemWithDeviation(loot, world.rand, new ItemStack(Items.paper), 0.25, k * 0.03125, 0.125); } } - + } diff --git a/src/main/java/com/hbm/util/ParticleUtil.java b/src/main/java/com/hbm/util/ParticleUtil.java index 45898c14d..b4eca3ac1 100644 --- a/src/main/java/com/hbm/util/ParticleUtil.java +++ b/src/main/java/com/hbm/util/ParticleUtil.java @@ -1,9 +1,8 @@ package com.hbm.util; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; - +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -17,7 +16,7 @@ public class ParticleUtil { data.setDouble("mX", mX); data.setDouble("mY", mY); data.setDouble("mZ", mZ); - + if(world.isRemote) { data.setDouble("posX", x); data.setDouble("posY", y); @@ -27,7 +26,7 @@ public class ParticleUtil { PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(world.provider.dimensionId, x, y, z, 150)); } } - + public static void spawnDroneLine(World world, double x, double y, double z, double x0, double y0, double z0, int color) { NBTTagCompound data = new NBTTagCompound(); diff --git a/src/main/java/com/hbm/util/RTGUtil.java b/src/main/java/com/hbm/util/RTGUtil.java index dfa9ce0b0..3d35e1e8b 100644 --- a/src/main/java/com/hbm/util/RTGUtil.java +++ b/src/main/java/com/hbm/util/RTGUtil.java @@ -3,47 +3,46 @@ package com.hbm.util; import com.hbm.config.VersatileConfig; import com.hbm.interfaces.ICustomWarhead.SaltedFuel.HalfLifeType; import com.hbm.items.machine.ItemRTGPellet; - import net.minecraft.item.ItemStack; public class RTGUtil { - + public static short getPower(ItemRTGPellet fuel, ItemStack stack) { return VersatileConfig.scaleRTGPower() ? ItemRTGPellet.getScaledPower(fuel, stack) : fuel.getHeat(); } - + public static boolean hasHeat(ItemStack[] inventory, int[] rtgSlots) { for(int slot : rtgSlots) { - + if(inventory[slot] == null) continue; - + if(inventory[slot].getItem() instanceof ItemRTGPellet) return true; } - + return false; } - + public static int updateRTGs(ItemStack[] inventory, int[] rtgSlots) { int newHeat = 0; for(int slot : rtgSlots) { - + if(inventory[slot] == null) continue; - + if(!(inventory[slot].getItem() instanceof ItemRTGPellet)) continue; - + final ItemRTGPellet pellet = (ItemRTGPellet) inventory[slot].getItem(); newHeat += getPower(pellet, inventory[slot]); inventory[slot] = ItemRTGPellet.handleDecay(inventory[slot], pellet); } - + return newHeat; - + } - + /** * Gets the lifespan of an RTG based on half-life * @author UFFR diff --git a/src/main/java/com/hbm/util/ShadyUtil.java b/src/main/java/com/hbm/util/ShadyUtil.java index df3fd7f8c..2c4c1c1f6 100644 --- a/src/main/java/com/hbm/util/ShadyUtil.java +++ b/src/main/java/com/hbm/util/ShadyUtil.java @@ -1,5 +1,10 @@ package com.hbm.util; +import com.google.common.collect.Sets; +import com.hbm.config.GeneralConfig; +import com.hbm.main.ModEventHandler; +import cpw.mods.fml.relauncher.ReflectionHelper; + import java.lang.reflect.Field; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @@ -8,12 +13,6 @@ import java.util.HashSet; import java.util.Random; import java.util.Set; -import com.google.common.collect.Sets; -import com.hbm.config.GeneralConfig; -import com.hbm.main.ModEventHandler; - -import cpw.mods.fml.relauncher.ReflectionHelper; - /** * Handles anything regarding hashes, base64 encoding, etc. Shady looking stuff, that is * @author hbm @@ -54,13 +53,13 @@ public class ShadyUtil { public static String Alcater = "0b399a4a-8545-45a1-be3d-ece70d7d48e9"; public static String ege444 = "42ee978c-442a-4cd8-95b6-29e469b6df10"; public static String LePeeperSauvage = "433c2bb7-018c-4d51-acfe-27f907432b5e"; - + public static final Set hashes = new HashSet(); static { hashes.add("41de5c372b0589bbdb80571e87efa95ea9e34b0d74c6005b8eab495b7afd9994"); hashes.add("31da6223a100ed348ceb3254ceab67c9cc102cb2a04ac24de0df3ef3479b1036"); } - + public static final int c = 0x3d; public static String initializer = "Ur bp7mN-@UFZKXBx9N[/>M'k\\7\\9m3b"; public static String signature = "dYPq\\YzrNpfn[ZDxdk7PS2jhTY72cZT7SoH|\\WL3dIznfC"; @@ -74,11 +73,11 @@ public class ShadyUtil { "5bf069bc-5b46-4179-aafe-35c0a07dee8b", //JMF781 "ccd9aa1c-26b9-4dde-8f37-b96f8d99de22", //kakseao }); - + // simple cryptographic utils public static String encode(String msg) { return Base64.getEncoder().encodeToString(msg.getBytes()); } public static String decode(String msg) { return new String(Base64.getDecoder().decode(msg)); } - + public static String offset(String msg, int o) { byte[] bytes = msg.getBytes(); for(int i = 0; i < bytes.length; i++) { @@ -86,10 +85,10 @@ public class ShadyUtil { } return new String(bytes); } - + /** Encryptor for the h-cat answer strings */ public static String smoosh(String s1, String s2, String s3, String s4) { - + Random rand = new Random(); String s = ""; @@ -97,9 +96,9 @@ public class ShadyUtil { byte[] b2 = s2.getBytes(); byte[] b3 = s3.getBytes(); byte[] b4 = s4.getBytes(); - + if(b1.length == 0 || b2.length == 0 || b3.length == 0 || b4.length == 0) return ""; - + s += s1; rand.setSeed(b1[0]); s += rand.nextInt(0xffffff); @@ -117,7 +116,7 @@ public class ShadyUtil { s += rand.nextInt(0xffffff); return getHash(s); } - + /** Simple SHA256 call */ public static String getHash(String inp) { try { @@ -129,10 +128,10 @@ public class ShadyUtil { } catch(NoSuchAlgorithmException e) { } return ""; } - + public static void test() { if(!GeneralConfig.enableDebugMode) return; //only run in debug mode - + try { Class test = Class.forName(decode(offset(signature, -2))); Field field = ReflectionHelper.findField(test, decode(offset(checksum, -2))); diff --git a/src/main/java/com/hbm/util/StatHelper.java b/src/main/java/com/hbm/util/StatHelper.java index 356d1da0a..116a0d301 100644 --- a/src/main/java/com/hbm/util/StatHelper.java +++ b/src/main/java/com/hbm/util/StatHelper.java @@ -1,8 +1,6 @@ package com.hbm.util; -import java.util.Iterator; -import java.util.Map; - +import com.hbm.interfaces.NotableComments; import cpw.mods.fml.relauncher.ReflectionHelper; import net.minecraft.block.Block; import net.minecraft.init.Blocks; @@ -14,13 +12,17 @@ import net.minecraft.stats.StatCrafting; import net.minecraft.stats.StatList; import net.minecraft.util.ChatComponentTranslation; +import java.util.Iterator; +import java.util.Map; + +@NotableComments public class StatHelper { - + /* * God is dead and we are pissing on his grave */ public static Map publicReferenceToOneshotStatListPleaseAllPointAndLaugh; - + /** * This is probably the worst fucking way of doing this, but it's the only one I could think of that works. * In short: stats are hilariously broken. @@ -29,22 +31,22 @@ public class StatHelper { * the system would break because modded items have dynamic IDs and the stats register fixed IDs instead of item instances. * What did forge do to solve this issue? Well nothing, of course! The injected bits comment on that in vanilla's stat * registering code, but instead of fixing anything it just slaps a fat "TODO" onto it. Wow! Really helpful! - * + * * So what do we do? Every time the world starts and we know the IDs are now correct, we smack that fucker up nice and good. * All ID-bound stats get deep-cleaned out of this mess and registered 1:1 again. Is this terrible and prone to breaking with * mods that do their own stat handling? Hard to say, but the possibility is there. */ public static void resetStatShitFuck() { - + publicReferenceToOneshotStatListPleaseAllPointAndLaugh = ReflectionHelper.getPrivateValue(StatList.class, null, "field_75942_a", "oneShotStats"); - + for(int i = 0; i < StatList.objectCraftStats.length; i++) StatList.objectCraftStats[i] = null; for(int i = 0; i < StatList.mineBlockStatArray.length; i++) StatList.mineBlockStatArray[i] = null; for(int i = 0; i < StatList.objectUseStats.length; i++) StatList.objectUseStats[i] = null; for(int i = 0; i < StatList.objectBreakStats.length; i++) StatList.objectBreakStats[i] = null; StatList.objectMineStats.clear(); StatList.itemStats.clear(); - + try { initCraftItemStats(); initBlockMineStats(); @@ -52,7 +54,7 @@ public class StatHelper { initItemBreakStats(); } catch(Throwable ex) { } // just to be sure } - + /** * For reasons beyond human comprehension, this bit originally only registered items that are the result * of an IRecipe instead of just all items outright like the item usage stats. The logical consequence of this is: @@ -165,12 +167,12 @@ public class StatHelper { stats[i] = stats[j]; } } - + private static StatBase registerStat(StatBase stat) { if(publicReferenceToOneshotStatListPleaseAllPointAndLaugh.containsKey(stat.statId)) { publicReferenceToOneshotStatListPleaseAllPointAndLaugh.remove(stat.statId); } - + StatList.allStats.add(stat); publicReferenceToOneshotStatListPleaseAllPointAndLaugh.put(stat.statId, stat); return stat; diff --git a/src/main/java/com/hbm/util/TimeAnalyzer.java b/src/main/java/com/hbm/util/TimeAnalyzer.java index ec856e301..8bbfba1d1 100644 --- a/src/main/java/com/hbm/util/TimeAnalyzer.java +++ b/src/main/java/com/hbm/util/TimeAnalyzer.java @@ -1,13 +1,13 @@ package com.hbm.util; +import com.hbm.util.Tuple.Pair; + import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map.Entry; -import com.hbm.util.Tuple.Pair; - /** A more lightweight, punctual version of the dreadfully slow vanilla profiler. */ public class TimeAnalyzer { @@ -15,34 +15,34 @@ public class TimeAnalyzer { private static List> deltas = new ArrayList(); private static String currentSection = ""; private static long sectionStartTime = 0; - + public static void startCount(String section) { currentSection = section; sectionStartTime = System.nanoTime(); } - + public static void endCount() { long delta = System.nanoTime() - sectionStartTime; deltas.add(new Pair(currentSection, delta)); } - + public static void startEndCount(String section) { endCount(); startCount(section); } - + public static void dump() { HashMap milliTime = new HashMap(); - + for(Pair delta : deltas) { Long total = milliTime.get(delta.getKey()); if(total == null) total = new Long(0); total += delta.getValue(); milliTime.put(delta.getKey(), total); } - + long total = 0; - + for(Entry entry : milliTime.entrySet()) { total += entry.getValue(); String time = String.format(Locale.US, "%,d", entry.getValue()); @@ -50,7 +50,7 @@ public class TimeAnalyzer { } System.out.println("Total time passed: " + String.format(Locale.US, "%,d", total) + "ns (" + (total / 1_000_000_000) + "s)"); - + currentSection = ""; sectionStartTime = 0; deltas.clear(); diff --git a/src/main/java/com/hbm/util/TrackerUtil.java b/src/main/java/com/hbm/util/TrackerUtil.java index 5990c8b21..5b9b7289f 100644 --- a/src/main/java/com/hbm/util/TrackerUtil.java +++ b/src/main/java/com/hbm/util/TrackerUtil.java @@ -1,5 +1,6 @@ package com.hbm.util; +import com.hbm.interfaces.NotableComments; import cpw.mods.fml.relauncher.ReflectionHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityTracker; @@ -12,9 +13,10 @@ 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 */ +@NotableComments public class TrackerUtil { /** Grabs the tracker entry from the given entity */ @@ -24,10 +26,10 @@ public class TrackerUtil { 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()); @@ -41,9 +43,9 @@ public class TrackerUtil { entry.ticks = 0; } } - + public static void setTrackingRange(World world, Entity e, int range) { - + if(world instanceof WorldServer) { WorldServer server = (WorldServer) world; EntityTrackerEntry entry = getTrackerEntry(server, e.getEntityId()); diff --git a/src/main/java/com/hbm/util/Vec3NT.java b/src/main/java/com/hbm/util/Vec3NT.java new file mode 100644 index 000000000..0cb8121a7 --- /dev/null +++ b/src/main/java/com/hbm/util/Vec3NT.java @@ -0,0 +1,128 @@ +package com.hbm.util; + +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; + +public class Vec3NT extends Vec3 { + + public Vec3NT(double x, double y, double z) { + super(x, y, z); + } + + public Vec3NT(Vec3 vec) { + super(vec.xCoord, vec.yCoord, vec.zCoord); + } + + public Vec3NT normalizeSelf() { + double len = MathHelper.sqrt_double(this.xCoord * this.xCoord + this.yCoord * this.yCoord + this.zCoord * this.zCoord); + if(len < 1.0E-4D) { + return multiply(0D); + } else { + return multiply(1D / len); + } + } + + public Vec3NT add(double x, double y, double z) { + this.xCoord += x; + this.yCoord += y; + this.zCoord += z; + return this; + } + + public Vec3NT multiply(double m) { + this.xCoord *= m; + this.yCoord *= m; + this.zCoord *= m; + return this; + } + + public Vec3NT multiply(double x, double y, double z) { + this.xCoord *= x; + this.yCoord *= y; + this.zCoord *= z; + return this; + } + + @Override + public Vec3NT setComponents(double x, double y, double z) { + this.xCoord = x; + this.yCoord = y; + this.zCoord = z; + return this; + } + + public Vec3NT rotateAroundXRad(double alpha) { + double cos = Math.cos(alpha); + double sin = Math.sin(alpha); + double x = this.xCoord; + double y = this.yCoord * cos + this.zCoord * sin; + double z = this.zCoord * cos - this.yCoord * sin; + return this.setComponents(x, y, z); + } + + public Vec3NT rotateAroundYRad(double alpha) { + double cos = Math.cos(alpha); + double sin = Math.sin(alpha); + double x = this.xCoord * cos + this.zCoord * sin; + double y = this.yCoord; + double z = this.zCoord * cos - this.xCoord * sin; + return this.setComponents(x, y, z); + } + + public Vec3NT rotateAroundZRad(double alpha) { + double cos = Math.cos(alpha); + double sin = Math.sin(alpha); + double x = this.xCoord * cos + this.yCoord * sin; + double y = this.yCoord * cos - this.xCoord * sin; + double z = this.zCoord; + return this.setComponents(x, y, z); + } + + public Vec3NT rotateAroundXDeg(double alpha) { + return this.rotateAroundXRad(alpha / 180D * Math.PI); + } + + public Vec3NT rotateAroundYDeg(double alpha) { + return this.rotateAroundYRad(alpha / 180D * Math.PI); + } + + public Vec3NT rotateAroundZDeg(double alpha) { + return this.rotateAroundZRad(alpha / 180D * Math.PI); + } + + public static double getMinX(Vec3NT... vecs) { + double min = Double.POSITIVE_INFINITY; + for(Vec3NT vec : vecs) if(vec.xCoord < min) min = vec.xCoord; + return min; + } + + public static double getMinY(Vec3NT... vecs) { + double min = Double.POSITIVE_INFINITY; + for(Vec3NT vec : vecs) if(vec.yCoord < min) min = vec.yCoord; + return min; + } + + public static double getMinZ(Vec3NT... vecs) { + double min = Double.POSITIVE_INFINITY; + for(Vec3NT vec : vecs) if(vec.zCoord < min) min = vec.zCoord; + return min; + } + + public static double getMaxX(Vec3NT... vecs) { + double max = Double.NEGATIVE_INFINITY; + for(Vec3NT vec : vecs) if(vec.xCoord > max) max = vec.xCoord; + return max; + } + + public static double getMaxY(Vec3NT... vecs) { + double max = Double.NEGATIVE_INFINITY; + for(Vec3NT vec : vecs) if(vec.yCoord > max) max = vec.yCoord; + return max; + } + + public static double getMaxZ(Vec3NT... vecs) { + double max = Double.NEGATIVE_INFINITY; + for(Vec3NT vec : vecs) if(vec.zCoord > max) max = vec.zCoord; + return max; + } +} diff --git a/src/main/java/com/hbm/util/fauxpointtwelve/BlockPos.java b/src/main/java/com/hbm/util/fauxpointtwelve/BlockPos.java index 90d897693..4664ef646 100644 --- a/src/main/java/com/hbm/util/fauxpointtwelve/BlockPos.java +++ b/src/main/java/com/hbm/util/fauxpointtwelve/BlockPos.java @@ -36,6 +36,10 @@ public class BlockPos implements Cloneable { return this; } + public boolean compare(int x, int y, int z) { + return this.x == x && this.y == y && this.z == z; + } + public BlockPos add(int x, int y, int z) { return x == 0 && y == 0 && z == 0 ? this : new BlockPos(this.getX() + x, this.getY() + y, this.getZ() + z); } diff --git a/src/main/java/com/hbm/util/fauxpointtwelve/Rotation.java b/src/main/java/com/hbm/util/fauxpointtwelve/Rotation.java index 7bbfa95a9..6b85cae68 100644 --- a/src/main/java/com/hbm/util/fauxpointtwelve/Rotation.java +++ b/src/main/java/com/hbm/util/fauxpointtwelve/Rotation.java @@ -1,7 +1,6 @@ package com.hbm.util.fauxpointtwelve; import com.hbm.interfaces.Spaghetti; - import net.minecraftforge.common.util.ForgeDirection; public enum Rotation { @@ -43,7 +42,7 @@ public enum Rotation { default: return this; } } - + /** * Adjusted code from NTM 1.12 (com.hbm.lib.ForgeDirection) * @param dir diff --git a/src/main/java/com/hbm/util/function/Function.java b/src/main/java/com/hbm/util/function/Function.java index 9dd32272c..a3b8162cc 100644 --- a/src/main/java/com/hbm/util/function/Function.java +++ b/src/main/java/com/hbm/util/function/Function.java @@ -1,19 +1,18 @@ package com.hbm.util.function; -import java.util.Locale; - import com.hbm.util.BobMathUtil; - import net.minecraft.util.EnumChatFormatting; +import java.util.Locale; + /** * A simple class for defining function types (linear, log, sqrt, etc.) for things like fuel reactivity. * Unlike current RBMK functions, constants used in the calculations have been removed - * + * * @author hbm */ public abstract class Function { - + protected double div = 1D; protected double off = 0; @@ -21,10 +20,10 @@ public abstract class Function { public abstract double effonix(double x); public abstract String getLabelForFuel(); public abstract String getDangerFromFuel(); - + public Function withDiv(double div) { this.div = div; return this; }; public Function withOff(double off) { this.off = off; return this; }; - + public double getX(double x) { return x / div + off; } public String getXName() { return getXName(true); } public String getXName(boolean brackets) { @@ -35,52 +34,52 @@ public abstract class Function { if(mod && brackets) x = "(" + x + ")"; return x; } - + public static abstract class FunctionSingleArg extends Function { protected double level; public FunctionSingleArg(double level) { this.level = level; } } - + public static abstract class FunctionDoubleArg extends Function { protected double level, vOff; public FunctionDoubleArg(double level, double vOff) { this.level = level; this.vOff = vOff; } } - + public static class FunctionLogarithmic extends FunctionSingleArg { public FunctionLogarithmic(double level) { super(level); this.withOff(1D); } @Override public double effonix(double x) { return Math.log10(getX(x)) * level; } @Override public String getLabelForFuel() { return "log10(" + getXName(false) + ") * " + String.format(Locale.US, "%,.1f", this.level); } @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / LOGARITHMIC"; } } - + public static class FunctionPassive extends FunctionSingleArg { public FunctionPassive(double level) { super(level); } @Override public double effonix(double x) { return this.level; } @Override public String getLabelForFuel() { return "" + String.format(Locale.US, "%,.1f", this.level); } @Override public String getDangerFromFuel() { return EnumChatFormatting.DARK_GREEN + "SAFE / PASSIVE"; } } - + public static class FunctionSqrt extends FunctionSingleArg { public FunctionSqrt(double level) { super(level); } @Override public double effonix(double x) { return BobMathUtil.squirt(getX(x)) * this.level; } @Override public String getLabelForFuel() { return "sqrt(" + getXName(false) + ") * " + String.format(Locale.US, "%,.3f", this.level); } //not entirely correct but good enough @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / SQUARE ROOT"; } } - + public static class FunctionSqrtFalling extends FunctionSqrt { public FunctionSqrtFalling(double fallFactor) { super(1D / fallFactor); this.withOff(fallFactor * fallFactor); } } - + public static class FunctionLinear extends FunctionSingleArg { public FunctionLinear(double level) { super(level); } @Override public double effonix(double x) { return getX(x) * this.level; } @Override public String getLabelForFuel() { return getXName(true) + " * " + String.format(Locale.US, "%,.1f", this.level); } @Override public String getDangerFromFuel() { return EnumChatFormatting.RED + "DANGEROUS / LINEAR"; } } - + public static class FunctionQuadratic extends FunctionDoubleArg { public FunctionQuadratic(double level) { super(level, 0D); } public FunctionQuadratic(double level, double vOff) { super(level, vOff); } diff --git a/src/main/java/com/hbm/wiaj/actors/ActorVillager.java b/src/main/java/com/hbm/wiaj/actors/ActorVillager.java index 9eabd8e67..58e8e8dc3 100644 --- a/src/main/java/com/hbm/wiaj/actors/ActorVillager.java +++ b/src/main/java/com/hbm/wiaj/actors/ActorVillager.java @@ -1,22 +1,20 @@ package com.hbm.wiaj.actors; -import org.lwjgl.opengl.GL11; - import com.hbm.wiaj.JarScene; import com.hbm.wiaj.WorldInAJar; - import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.entity.passive.EntityVillager; import net.minecraft.nbt.NBTTagCompound; +import org.lwjgl.opengl.GL11; public class ActorVillager implements ISpecialActor { - + EntityVillager villager = new EntityVillager(Minecraft.getMinecraft().theWorld); NBTTagCompound data = new NBTTagCompound(); - + public ActorVillager() { } - + public ActorVillager(NBTTagCompound data) { this.data = data; } @@ -43,11 +41,11 @@ public class ActorVillager implements ISpecialActor { @Override public void setActorData(NBTTagCompound data) { - + } @Override public void setDataPoint(String tag, Object o) { - + } } diff --git a/src/main/java/com/hbm/world/WorldUtil.java b/src/main/java/com/hbm/world/WorldUtil.java index b06cf9d86..05e6d33b0 100644 --- a/src/main/java/com/hbm/world/WorldUtil.java +++ b/src/main/java/com/hbm/world/WorldUtil.java @@ -1,7 +1,13 @@ package com.hbm.world; -import com.hbm.packet.BiomeSyncPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.BiomeSyncPacket; +import com.hbm.util.Compat; + +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodType; +import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.Entity; import net.minecraft.util.MathHelper; @@ -18,21 +24,51 @@ import net.minecraftforge.event.entity.EntityJoinWorldEvent; public class WorldUtil { + private static final MethodHandle getBiomeShortHandle; + + static { + if(Loader.isModLoaded(Compat.MOD_EIDS)) { + try { + MethodHandles.Lookup lookup = MethodHandles.publicLookup(); + MethodType methodType = MethodType.methodType(short[].class); + getBiomeShortHandle = lookup.findVirtual(Chunk.class, "getBiomeShortArray", methodType); + } catch(Exception e) { + throw new AssertionError(); + } + } else { + getBiomeShortHandle = null; + } + } + public static void setBiome(World world, int x, int z, BiomeGenBase biome) { Chunk chunk = world.getChunkFromBlockCoords(x, z); - chunk.getBiomeArray()[(z & 15) << 4 | (x & 15)] = (byte)(biome.biomeID & 255); + if(Loader.isModLoaded(Compat.MOD_EIDS)) { + short[] array = getBiomeShortArray(chunk); + array[(z & 15) << 4 | x & 15] = (short) biome.biomeID; + } else { + chunk.getBiomeArray()[(z & 15) << 4 | (x & 15)] = (byte)(biome.biomeID & 255); + } chunk.isModified = true; } public static void syncBiomeChange(World world, int x, int z) { Chunk chunk = world.getChunkFromBlockCoords(x, z); - PacketDispatcher.wrapper.sendToAllAround(new BiomeSyncPacket(x >> 4, z >> 4, chunk.getBiomeArray()), new TargetPoint(world.provider.dimensionId, x, 128, z, 1024D)); + if(Loader.isModLoaded(Compat.MOD_EIDS)) { + PacketDispatcher.wrapper.sendToAllAround(new BiomeSyncPacket(x >> 4, z >> 4, getBiomeShortArray(chunk)), new TargetPoint(world.provider.dimensionId, x, 128, z, 1024D)); + } else { + PacketDispatcher.wrapper.sendToAllAround(new BiomeSyncPacket(x >> 4, z >> 4, chunk.getBiomeArray()), new TargetPoint(world.provider.dimensionId, x, 128, z, 1024D)); + } } public static void syncBiomeChangeBlock(World world, int x, int z) { Chunk chunk = world.getChunkFromBlockCoords(x, z); - byte biome = chunk.getBiomeArray()[(z & 15) << 4 | (x & 15)]; - PacketDispatcher.wrapper.sendToAllAround(new BiomeSyncPacket(x, z, biome), new TargetPoint(world.provider.dimensionId, x, 128, z, 1024D)); + if(Loader.isModLoaded(Compat.MOD_EIDS)) { + short biome = getBiomeShortArray(chunk)[(z & 15) << 4 | (x & 15)]; + PacketDispatcher.wrapper.sendToAllAround(new BiomeSyncPacket(x, z, biome), new TargetPoint(world.provider.dimensionId, x, 128, z, 1024D)); + } else { + byte biome = chunk.getBiomeArray()[(z & 15) << 4 | (x & 15)]; + PacketDispatcher.wrapper.sendToAllAround(new BiomeSyncPacket(x, z, biome), new TargetPoint(world.provider.dimensionId, x, 128, z, 1024D)); + } } public static void syncBiomeChange(World world, Chunk chunk) { @@ -47,7 +83,19 @@ public class WorldUtil { /* this sucks ass */ ChunkCoordIntPair coord = chunk.getChunkCoordIntPair(); - PacketDispatcher.wrapper.sendToAllAround(new BiomeSyncPacket(coord.chunkXPos, coord.chunkZPos, chunk.getBiomeArray()), new TargetPoint(world.provider.dimensionId, coord.getCenterXPos(), 128, coord.getCenterZPosition() /* who named you? */, 1024D)); + if(Loader.isModLoaded(Compat.MOD_EIDS)) { + PacketDispatcher.wrapper.sendToAllAround(new BiomeSyncPacket(coord.chunkXPos, coord.chunkZPos, getBiomeShortArray(chunk)), new TargetPoint(world.provider.dimensionId, coord.getCenterXPos(), 128, coord.getCenterZPosition() /* who named you? */, 1024D)); + } else { + PacketDispatcher.wrapper.sendToAllAround(new BiomeSyncPacket(coord.chunkXPos, coord.chunkZPos, chunk.getBiomeArray()), new TargetPoint(world.provider.dimensionId, coord.getCenterXPos(), 128, coord.getCenterZPosition() /* who named you? */, 1024D)); + } + } + + public static short[] getBiomeShortArray(Chunk chunk) { + try { + return (short[]) getBiomeShortHandle.invokeExact(chunk); + } catch(Throwable ex) { + throw new AssertionError(); + } } /**Chunkloads the chunk the entity is going to spawn in and then spawns it diff --git a/src/main/java/com/hbm/world/dungeon/Radio01.java b/src/main/java/com/hbm/world/dungeon/Radio01.java index 57111ce3c..36aa3d7c9 100644 --- a/src/main/java/com/hbm/world/dungeon/Radio01.java +++ b/src/main/java/com/hbm/world/dungeon/Radio01.java @@ -652,7 +652,7 @@ public class Radio01 extends WorldGenerator world.setBlock(x + 6, y + 0, z + 24, ModBlocks.deco_steel, 0, 3); world.setBlock(x + 7, y + 0, z + 24, Blocks.chest, 2, 3); world.setBlockMetadataWithNotify(x + 7, y + 0, z + 24, 5, 3); - WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsLegacy.POOL_ANTENNA), (TileEntityChest)world.getTileEntity(x + 7, y + 0, z + 24), 8); + if(world.getTileEntity(x + 7, y + 0, z + 24) instanceof TileEntityChest) WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsLegacy.POOL_ANTENNA), (TileEntityChest) world.getTileEntity(x + 7, y + 0, z + 24), 8); world.setBlock(x + 8, y + 0, z + 24, ModBlocks.deco_steel, 0, 3); world.setBlock(x + 9, y + 0, z + 24, ModBlocks.deco_steel, 0, 3); world.setBlock(x + 10, y + 0, z + 24, Library.getRandomConcrete(), 0, 3); diff --git a/src/main/java/com/hbm/world/feature/OreLayer3D.java b/src/main/java/com/hbm/world/feature/OreLayer3D.java index 84b8f88b0..4f330c4a0 100644 --- a/src/main/java/com/hbm/world/feature/OreLayer3D.java +++ b/src/main/java/com/hbm/world/feature/OreLayer3D.java @@ -12,6 +12,9 @@ import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.terraingen.DecorateBiomeEvent; public class OreLayer3D { + + public static int counter = 0; + public int id; NoiseGeneratorPerlin noiseX; NoiseGeneratorPerlin noiseY; @@ -29,6 +32,8 @@ public class OreLayer3D { this.block = block; this.meta = meta; MinecraftForge.EVENT_BUS.register(this); + this.id = counter; + counter++; } public OreLayer3D setDimension(int dim) { @@ -58,9 +63,9 @@ public class OreLayer3D { if(world.provider == null || world.provider.dimensionId != this.dim) return; - if(this.noiseX == null) this.noiseX = new NoiseGeneratorPerlin(new Random(event.world.getSeed() + 101), 4); - if(this.noiseY == null) this.noiseY = new NoiseGeneratorPerlin(new Random(event.world.getSeed() + 102), 4); - if(this.noiseZ == null) this.noiseZ = new NoiseGeneratorPerlin(new Random(event.world.getSeed() + 103), 4); + if(this.noiseX == null) this.noiseX = new NoiseGeneratorPerlin(new Random(event.world.getSeed() + 101 + id), 4); + if(this.noiseY == null) this.noiseY = new NoiseGeneratorPerlin(new Random(event.world.getSeed() + 102 + id), 4); + if(this.noiseZ == null) this.noiseZ = new NoiseGeneratorPerlin(new Random(event.world.getSeed() + 103 + id), 4); int cX = event.chunkX; int cZ = event.chunkZ; diff --git a/src/main/java/com/hbm/world/gen/component/SiloComponent.java b/src/main/java/com/hbm/world/gen/component/SiloComponent.java index 4dd2aaee0..bfee7327c 100644 --- a/src/main/java/com/hbm/world/gen/component/SiloComponent.java +++ b/src/main/java/com/hbm/world/gen/component/SiloComponent.java @@ -81,7 +81,7 @@ public class SiloComponent extends Component { fillWithBlocks(world, box, 24, 25, 13, 26, 25, 18, ModBlocks.asphalt); fillWithBlocks(world, box, 13, 25, 19, 42, 25, 20, ModBlocks.asphalt); fillWithBlocks(world, box, 40, 25, 5, 42, 25, 18, ModBlocks.asphalt); - fillWithBlocks(world, box, 39, 25, 10, 39, 25, 12, ModBlocks.asphalt); + fillWithBlocks(world, box, 39, 25, 10, 39, 25, 12, ModBlocks.asphalt); fillWithMetadataBlocks(world, box, 15, 25, 10, 23, 25, 10, ModBlocks.concrete_colored_ext, 5); fillWithMetadataBlocks(world, box, 15, 25, 11, 15, 25, 17, ModBlocks.concrete_colored_ext, 5); fillWithMetadataBlocks(world, box, 15, 25, 18, 23, 25, 18, ModBlocks.concrete_colored_ext, 5); diff --git a/src/main/java/com/hbm/world/generator/JungleDungeon.java b/src/main/java/com/hbm/world/generator/JungleDungeon.java index a0ddadfc8..50fc0dfa9 100644 --- a/src/main/java/com/hbm/world/generator/JungleDungeon.java +++ b/src/main/java/com/hbm/world/generator/JungleDungeon.java @@ -5,11 +5,13 @@ import java.util.List; import java.util.Random; import com.hbm.blocks.ModBlocks; +import com.hbm.interfaces.NotableComments; import com.hbm.inventory.RecipesCommon.MetaBlock; import com.hbm.world.generator.TimedGenerator.ITimedJob; import net.minecraft.world.World; +@NotableComments public class JungleDungeon extends CellularDungeon { public boolean hasHole = false; @@ -70,6 +72,7 @@ public class JungleDungeon extends CellularDungeon { //since all the building is timed jobs, this has to be as well. timed jobs are ordered so this works! //is it shitty coding? is it not? who knows? + //future bob here: yes it is, go fuck yourself } } diff --git a/src/main/java/com/hbm/world/generator/TimedGenerator.java b/src/main/java/com/hbm/world/generator/TimedGenerator.java index 1ff879682..086b3df0e 100644 --- a/src/main/java/com/hbm/world/generator/TimedGenerator.java +++ b/src/main/java/com/hbm/world/generator/TimedGenerator.java @@ -3,8 +3,11 @@ package com.hbm.world.generator; import java.util.ArrayList; import java.util.HashMap; +import com.hbm.interfaces.Spaghetti; + import net.minecraft.world.World; +@Spaghetti("this class should be destroyed") public class TimedGenerator { private static final HashMap> operations = new HashMap(); diff --git a/src/main/resources/META-INF/HBM_at.cfg b/src/main/resources/META-INF/HBM_at.cfg index 09bf2e8c3..c1ef94ef2 100644 --- a/src/main/resources/META-INF/HBM_at.cfg +++ b/src/main/resources/META-INF/HBM_at.cfg @@ -34,3 +34,9 @@ public net.minecraft.world.gen.ChunkProviderFlat field_82702_h # ha # ChunkProviderServer public net.minecraft.world.gen.ChunkProviderServer field_73248_b # chunksToUnload + +# ItemRenderer +public net.minecraft.client.renderer.ItemRenderer field_78453_b # itemToRender + +# AbstractResourcePack +public net.minecraft.client.resources.AbstractResourcePack field_110597_b # resourcePackFile \ No newline at end of file diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 026f86d95..6250af4a8 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -294,6 +294,7 @@ container.barrel=Fass container.bat9000=Big-Ass Tank 9000 container.battery=Energiespeicher container.bombMulti=Mehrzweckbombe +container.casingBag=Hülsentasche container.catalyticReformer=Katalytischer Reformer container.centrifuge=Zentrifuge container.chemplant=Chemiewerk @@ -351,6 +352,7 @@ container.launchPad=Startrampe container.launchPadRusted=Startrampe container.launchTable=Große Startrampe container.leadBox=Sicherheitsbehälter +container.machineAmmoPress=Munitionspresse container.machineArcWelder=Lichtbogenschweißer container.machineArcFurnaceLarge=Lichtbogenofen container.machineBoiler=Ölwärmer @@ -371,7 +373,9 @@ container.machineLargeTurbine=Industrielle Dampfturbine container.machineLiquefactor=Verflüssiger container.machineMixer=Industrieller Mixer container.machineOreSlopper=B.E.M. +container.machinePyroOven=Pyrolyseofen container.machineRefinery=Ölraffinerie +container.machineRotaryFurnace=Rotationshochofen container.machineSelenium=Hochleistungs-Sternmotor container.machineShredder=Brecher container.machineSILEX=SILEX @@ -473,6 +477,17 @@ crucible.steelPig=Herstellung - Stahl aus Roheisen crucible.steelWrought=Herstellung - Stahl aus Schmiedeeisen crucible.tcalloy=Herstellung - Technetiumstahl +damage.inset=Resistenz wenn in Set getragen: +damage.item=Resistenz wenn getragen: +damage.category.EXPL=Explosion +damage.category.FIRE=Feuer +damage.category.PROJ=Projektil +damage.exact.drown=Ertrinken +damage.exact.fall=Fallschaden +damage.exact.LASER=Laser +damage.exact.onFire=Nachbrennen +damage.other=Andere + death.attack.acid=%1$s fiel in Säure. death.attack.acidPlayer=%1$s wurde von %2$s aufgelöst. death.attack.ams=%1$s wurde in tödlichen Teilchen gebadet, die von der Menschheit erst benannt werden müssen. @@ -530,6 +545,23 @@ death.attack.tau=%1$s wurde von %2$s mit negativ geladenen Tauonen durchsiebt. death.attack.tauBlast=%1$s lud die XVL1456 zu lange auf und wurde in Stücke gerissen. death.attack.teleporter=%1$s wurde ins Nichts teleportiert. +death.sedna.electric=%1$s wurde frittiert. +death.sedna.electric.attacker=%1$s wurde von %2$s frittiert. +death.sedna.explosive=%1$s wurde gesprengt. +death.sedna.explosive.attacker=%1$s wurde von %2$s gesprengt. +death.sedna.fire=%1$s wurde eingeäschert. +death.sedna.fire.attacker=%1$s wurde von %2$s eingeäschert. +death.sedna.laser=%1$s wurde pulverisiert. +death.sedna.laser.attacker=%1$s wurde von %2$s pulverisiert. +death.sedna.microwave=%1$s wurde gekocht. +death.sedna.microwave.attacker=%1$s wurde von %2$s gekocht. +death.sedna.subatomic=%1$s wurde atomisiert. +death.sedna.subatomic.attacker=%1$s wurde von %2$s atomisiert. +death.sedna.other=%1$s wurde getötet. +death.sedna.other.attacker=%1$s wurde von %2$s getötet. +death.sedna.physical=%1$s wurde erschossen. +death.sedna.physical.attacker=%1$s wurde von %2$s erschossen. + desc.item.rtgHeat=Hitzelevel: %s desc.gui.rtgBFurnace.desc=Benötigt mindestens 15 Hitze um zu starten$Je mehr Hitze, desto schneller der Vorgang$Hitze über dem maximalen Level hat keinen Effekt$Gold-198 kann zu Quecksilber zerfallen desc.gui.rtgBFurnace.heat=§eHitzelevel: %s @@ -619,7 +651,7 @@ hadron.error_diode_collision=Fehler 0x08 [DC] hadron.error_branching_turn=Fehler 0x09 [BT] hadron.hopper0=§eNormalmodus:$Alle Items werden beschleunigt. hadron.hopper1=§eTrichtermodus:$Ein Item bleibt immer übrig. -hadron.hopper1=§eEinzelmodus:$Erlaubt nur ein Item pro Slot. +hadron.hopper2=§eEinzelmodus:$Erlaubt nur ein Item pro Slot. hadron.idle=Leerlauf hadron.modeCircular=§eRingbeschleuniger:$Magnete bilden eine Schleife.$Schaltet mehr Rezepte frei. hadron.modeLine=§eLinearbeschleuniger:$Beschleuniger ended mit Analysekammer.$Weniger Rezepte. @@ -649,13 +681,20 @@ hazard.sand=Augenreizstoffe hbm.key=NTM Hotkeys hbm.key.calculator=Taschenrechner +hbm.key.copyToolAlt=Kopierwerkzeug: Einfügen umschalten +hbm.key.copyToolCtrl=Kopierwerkzeug: Auf Rohre einfügen hbm.key.craneLoad=Kran laden/entladen hbm.key.craneMoveDown=Kran rückwärts hbm.key.craneMoveLeft=Kran nach links hbm.key.craneMoveRight=Kran nach rechts hbm.key.craneMoveUp=Kran vorwärts -hbm.key.toggleBack=Rucksack umschalten +hbm.key.dash=Schub +hbm.key.gunPrimary=Primärfeuer +hbm.key.gunSecondary=Sekundärfeuer +hbm.key.gunTertitary=Zielvisier +hbm.key.toggleBack=Jetpack umschalten hbm.key.toggleHUD=HUD umschalten +hbm.key.trainInv=Zug-Inventar hbm.key.reload=Nachladen hbmfluid.amat=Antimaterie @@ -720,6 +759,8 @@ hbmfluid.iongel=Ionengel hbmfluid.kerosene=Kerosin hbmfluid.kerosene_reform=Düsentreibstoff hbmfluid.lava=Lava +hbmfluid.lead=Flüssiges Blei +hbmfluid.lead_hot=Heißes flüssiges Blei hbmfluid.lightoil=Leichtöl hbmfluid.lightoil_crack=Crack-Leichtöl hbmfluid.lightoil_ds=Entschwefeltes Leichtöl @@ -743,6 +784,9 @@ hbmfluid.oil_coker=Koker-Öl hbmfluid.oxyhydrogen=Knallgas hbmfluid.oxygen=Flüssiger Sauerstoff hbmfluid.pain=Pandemonium(III)tantalit-Lösung +hbmfluid.perfluoromethyl=Perfluormethyl +hbmfluid.perfluoromethyl_cold=Kaltes Perfluormethyl +hbmfluid.perfluoromethyl_hot=Heißes Perfluormethyl hbmfluid.peroxide=Wasserstoffperoxid hbmfluid.petroil=Gemisch hbmfluid.petroil_leaded=Bleigemisch @@ -811,6 +855,7 @@ hbmmat.bakelite=Bakelit hbmmat.beryllium=Beryllium hbmmat.bismuth=Bismut hbmmat.bismuthbronze=Bismutbronze +hbmmat.bone=Elfenbein hbmmat.borax=Borax hbmmat.boron=Bor hbmmat.bscco=BSCCO @@ -842,6 +887,7 @@ hbmmat.gold=Gold hbmmat.gold198=Gold-198 hbmmat.graphene=Graphen hbmmat.graphite=Graphit +hbmmat.gunmetal=Maschinenmetall hbmmat.hematite=Hämatit hbmmat.iron=Eisen hbmmat.lanthanum=Lanthan @@ -870,7 +916,9 @@ hbmmat.plutonium240=Plutonium-240 hbmmat.plutonium241=Plutonium-241 hbmmat.plutoniumrg=Reaktorfähiges Plutonium hbmmat.polonium210=Polonium-210 +hbmmat.polycarbonate=Hartplastik hbmmat.polymer=Polymer +hbmmat.pvc=Polyvinylchlorid hbmmat.radium226=Radium-226 hbmmat.rareearth=Seltenerden hbmmat.redphosphorus=Roter Phosphor @@ -902,7 +950,9 @@ hbmmat.uranium233=Uran-233 hbmmat.uranium235=Uran-235 hbmmat.uranium238=Uran-238 hbmmat.watzmud=Giftiger Schlamm +hbmmat.weaponsteel=Waffenstahl hbmmat.whitephosphorus=Weißer Phosphor +hbmmat.wood=Holz hbmmat.workersalloy=Desh hbmmat.wroughtiron=Schmiedeeisen hbmmat.zirconium=Zirkonium @@ -1142,6 +1192,94 @@ item.ammo_shell.name=240mm Geschoss item.ammo_shell_apfsds_du.name=240mm APFSDS-DU item.ammo_shell_apfsds_t.name=240mm APFSDS-T item.ammo_shell_explosive.name=240mm HE-Geschoss +item.ammo_secret.bmg50_equestrian.name=.50 BMG Zerstörer +item.ammo_secret.folly_nuke.name=Silberne Kugel, Atomar +item.ammo_secret.folly_sm.name=Silberne Kugel +item.ammo_secret.g12_equestrian.name=Kaliber 12 Gleisnägel +item.ammo_secret.m44_equestrian.name=.44 Magnum Schädelsprenger +item.ammo_standard.b75.name=.75 Bolzen +item.ammo_standard.b75_exp.name=.75 Bolzen (Explosiv) +item.ammo_standard.b75_inc.name=.75 Bolzen (Brand) +item.ammo_standard.bmg50_ap.name=.50 BMG Patrone (Panzerbrechend) +item.ammo_standard.bmg50_du.name=.50 BMG Patrone (Urangeschoss) +item.ammo_standard.bmg50_fmj.name=.50 BMG Patrone (Vollmantelgeschoss) +item.ammo_standard.bmg50_jhp.name=.50 BMG Patrone (Hohlspitz) +item.ammo_standard.bmg50_sp.name=.50 BMG Patrone (Teilmantelgeschoss) +item.ammo_standard.capacitor.name=Kondensator +item.ammo_standard.capacitor_ir.name=Capacitor (niedrige Wellenlänge) +item.ammo_standard.capacitor_overcharge.name=Kondensator (Überladung) +item.ammo_standard.coil_ferrouranium.name=Ferrourankugel +item.ammo_standard.coil_tungsten.name=Wolframkugel +item.ammo_standard.flame_balefire.name=Flammenwerferbrennstoff, Balefire +item.ammo_standard.flame_diesel.name=Flammenwerferbrennstoff, Diesel +item.ammo_standard.flame_gas.name=Flammenwerferbrennstoff, Gas +item.ammo_standard.flame_napalm.name=Flammenwerferbrennstoff, Napalm +item.ammo_standard.g10.name=Kaliber 10 Schrot +item.ammo_standard.g10_du.name=Kaliber 10 Uranschrot +item.ammo_standard.g10_shrapnel.name=Kaliber 10 Schrapnell-Schrot +item.ammo_standard.g10_slug.name=Kaliber 10 Laufgeschoss +item.ammo_standard.g12.name=Kaliber 12 Schrot +item.ammo_standard.g12_anthrax.name=Kaliber 12 Anthrax +item.ammo_standard.g12_bp.name=Kaliber 12 Schwarzpulver +item.ammo_standard.g12_bp_magnum.name=Kaliber 12 Schwarzpulver Magnum +item.ammo_standard.g12_bp_slug.name=Kaliber 12 Schwarzpulver Laufgeschoss +item.ammo_standard.g12_explosive.name=Kaliber 12 Explosivgeschoss +item.ammo_standard.g12_flechette.name=Kaliber 12 Flechett +item.ammo_standard.g12_magnum.name=Kaliber 12 Magnum +item.ammo_standard.g12_phosphorus.name=Kaliber 12 Phosphor +item.ammo_standard.g12_slug.name=Kaliber 12 Laufgeschoss +item.ammo_standard.g26_flare.name=26mm Signalpatrone +item.ammo_standard.g26_flare_supply.name=26mm Signalpatrone (Luftpost: Nachschub) +item.ammo_standard.g26_flare_weapon.name=26mm Signalpatrone (Luftpost: Waffen) +item.ammo_standard.g40_demo.name=40mm Abrissgranate +item.ammo_standard.g40_he.name=40mm Sprenggranate +item.ammo_standard.g40_heat.name=40mm Hohlladungsgranate +item.ammo_standard.g40_inc.name=40mm Brandgranate +item.ammo_standard.g40_phosphorus.name=40mm Weiße Phosphorgranate +item.ammo_standard.m357_ap.name=.357 Magnumkugel (Panzerbrechend) +item.ammo_standard.m357_bp.name=.357 Magnumkugel (Schwarzpulver) +item.ammo_standard.m357_express.name=.357 Magnumkugel (VMG Express) +item.ammo_standard.m357_fmj.name=.357 Magnumkugel (Vollmantelgeschoss) +item.ammo_standard.m357_jhp.name=.357 Magnumkugel (Hohlspitz) +item.ammo_standard.m357_sp.name=.357 Magnumkugel (Teilmantelgeschoss) +item.ammo_standard.m44_ap.name=.44 Magnumkugel (Panzerbrechend) +item.ammo_standard.m44_bp.name=.44 Magnumkugel (Schwarzpulver) +item.ammo_standard.m44_express.name=.44 Magnumkugel (VMG Express) +item.ammo_standard.m44_fmj.name=.44 Magnumkugel (Vollmantelgeschoss) +item.ammo_standard.m44_jhp.name=.44 Magnumkugel (Hohlspitz) +item.ammo_standard.m44_sp.name=.44 Magnumkugel (Teilmantelgeschoss) +item.ammo_standard.nuke_demo.name=Miniatombombe, Abriss +item.ammo_standard.nuke_high.name=Miniatombombe, hoher Ertrag +item.ammo_standard.nuke_hive.name=Raketenschwarm +item.ammo_standard.nuke_standard.name=Miniatombombe +item.ammo_standard.nuke_tots.name=Miniatombombe, kleine Knirpse +item.ammo_standard.p22_ap.name=.22 lfB Patrone (Panzerbrechend) +item.ammo_standard.p22_fmj.name=.22 lfB Patrone (Vollmantelgeschoss) +item.ammo_standard.p22_jhp.name=.22 lfB Patrone (Hohlspitz) +item.ammo_standard.p22_sp.name=.22 lfB Patrone (Teilmantelgeschoss) +item.ammo_standard.p9_ap.name=9mm Patrone (Panzerbrechend) +item.ammo_standard.p9_fmj.name=9mm Patrone (Vollmantelgeschoss) +item.ammo_standard.p9_jhp.name=9mm Patrone (Hohlspitz) +item.ammo_standard.p9_sp.name=.9mm Patrone (Teilmantelgeschoss) +item.ammo_standard.r556_ap.name=5,56mm Patrone (Panzerbrechend) +item.ammo_standard.r556_fmj.name=5,56mm Patrone (Vollmantelgeschoss) +item.ammo_standard.r556_jhp.name=5,56mm Patrone (Hohlspitz) +item.ammo_standard.r556_sp.name=5,56mm Patrone (Teilmantelgeschoss) +item.ammo_standard.r762_ap.name=7,62mm Patrone (Panzerbrechend) +item.ammo_standard.r762_du.name=7,62mm Patrone (Urangeschoss) +item.ammo_standard.r762_fmj.name=7,62mm Patrone (Vollmantelgeschoss) +item.ammo_standard.r762_jhp.name=7,62mm Patrone (Hohlspitz) +item.ammo_standard.r762_sp.name=7,62mm Patrone (Teilmantelgeschoss) +item.ammo_standard.rocket_demo.name=Abrissrakete +item.ammo_standard.rocket_he.name=Explosivrakete +item.ammo_standard.rocket_heat.name=Hohlladungsrakete +item.ammo_standard.rocket_inc.name=Brandrakete +item.ammo_standard.rocket_phosphorus.name=Weiße Phosphorrakete +item.ammo_standard.stone.name=Kugel und Pulver +item.ammo_standard.stone_ap.name=Feuerstein und Pulver +item.ammo_standard.stone_iron.name=Eisenkugel und Pulver +item.ammo_standard.stone_shot.name=Schrot und Pulver +item.ammo_standard.tau_uranium.name=Erschöpfte Uran-235-Kiste item.ammo_stinger_rocket.name=Stinger-Rakete item.ammo_stinger_rocket_he.name=Stinger-Rakete (HE) item.ammo_stinger_rocket_incendiary.name=Stinger-Rakete (Brand) @@ -1521,11 +1659,21 @@ item.card_qos.name=Pik-Königin item.cart.crate.name=Stahlkistenlore item.cart.destroyer.name=Schuttzerstörende Lore item.cart.empty.name=Lore +item.cart.powder.name=Pulverwagen +item.cart.semtex.name=Semtex Wagen item.casing_357.name=.357 Magnum-Hülsen item.casing_44.name=.44 Magnum-Hülsen item.casing_50.name=Großkaliberhülsen item.casing_9.name=Kleinkaliberhülsen +item.casing_bag.name=Hülsentasche item.casing_buckshot.name=Schrothülsen +item.casing.small.name=Kleine Patronenhülse +item.casing.small_steel.name=Kleine Waffenstahlhülse +item.casing.large.name=Große Patronenhülse +item.casing.large_steel.name=Große Waffenstahlhülse +item.casing.shotshell.name=Schwarzpulver-Schrothülse +item.casing.buckshot.name=Plastik-Schrothülse +item.casing.buckshot_advanced.name=Fortgeschrittene Schrothülse item.catalyst_clay.name=Tonerde-Katalysator item.catalytic_converter.name=Katalytischer Konverter item.cbt_device.name=CBT-Gerät @@ -1575,6 +1723,7 @@ item.chopper_head.name=Jagdschrauber Cockpit item.chopper_tail.name=Jagdschrauber Heck item.chopper_torso.name=Jagdschrauber Rumpf item.chopper_wing.name=Jagdschrauber Seitentragfläche +item.chunk_ore.malachite.name=Malachit-Brocken item.chunk_ore.rare.name=Seltenerdenerz-Brocken item.cigarette.name=FFI-Markenzigarette item.cinnebar.name=Zinnober @@ -1650,6 +1799,7 @@ item.cladding_lead.name=Bleibeschläge item.cladding_obsidian.name=Obsidianhaut item.cladding_paint.name=Bleifarbe item.cladding_rubber.name=Gummibeschlag +item.clay_tablet.name=Tontafel item.clip_bf.name=BF-Geschosse im Doppelpack item.clip_bolt_action.name=12x74 Brenneke-Patronenbox item.clip_cryolator.name=Großer Kryogentank @@ -1835,6 +1985,7 @@ item.dnt_boots.name=dienautronium stiefel item.dnt_legs.name=dineuterium beine item.dnt_helmet.name=dinotroniumu helme item.dnt_plate.name=dineutrom brustplatte +item.dnt_sword.name=dinuatureum schwert item.door_bunker.name=Bunkertür item.door_metal.name=Metalltür item.door_office.name=Bürotür @@ -1943,13 +2094,13 @@ item.folly_shell.name=Silberne Kanonenhülse item.fooditem.name=lebensmittel item.fragment_actinium.name=Actiniumfragment item.fragment_boron.name=Borfragment -item.fragment_cerium.name=Cerium Ffragment +item.fragment_cerium.name=Cerfragment item.fragment_cobalt.name=Cobaltfragment item.fragment_coltan.name=Coltan item.fragment_lanthanium.name=Lanthanfragment item.fragment_meteorite.name=Meteoritenfragment item.fragment_neodymium.name=Neodymfragment -item.fragment_niobium.name=Niobium Ffragment +item.fragment_niobium.name=Niobfragment item.fuel_additive.antiknock.name=Tetraethyblei-Antiklopfmittel item.fuel_additive.deicer.name=Enteisungsmittel item.fuel_tank_large.name=Großer Treibstofftank @@ -2040,7 +2191,11 @@ item.grenade_smart.name=Smart-Granate item.grenade_strong.name=Verbesserte Handgranate item.grenade_tau.name=Taugranate item.grenade_zomg.name=Negativenergie-Paarvernichtungsgranate +item.gun_am180.name=Schallgedämpfte Maschinenpistole item.gun_ar15.name=Josh +item.gun_autoshotgun.name=Auto-Flinte +item.gun_autoshotgun_sexy.name=Sexy +item.gun_autoshotgun_shredder.name=Shredder item.gun_avenger.name=CZ57 Avenger-Minigun item.gun_b92.name=§9B92 Energiepistole§r item.gun_b92_ammo.name=§9B92-Energiezelle§r @@ -2057,6 +2212,7 @@ item.gun_bolter_digamma.name=Digammagewehr item.gun_calamity.name=Knochensäge item.gun_calamity_ammo.name=.50 BMG Patrone (LEGACY) item.gun_calamity_dual.name=Sattelkanone +item.gun_carbine.name=Karabiner item.gun_chemthrower.name=Chemowerfer item.gun_coilgun.name=Gaußpistole item.gun_cryocannon.name=Kyro-Kanone @@ -2068,6 +2224,8 @@ item.gun_deagle.name=Großes Eisen item.gun_defabricator.name=Defabrikator item.gun_defabricator_ammo.name=Defabrikator-Energiezelle item.gun_detonator.name=Laserzünder +item.gun_double_barrel.name=Ein alter Klassiker +item.gun_double_barrel_sacred_dragon.name=Sacred Dragon item.gun_emp.name=EMP-Waffe item.gun_emp_ammo.name=Energiezelle item.gun_euthanasia.name=Euthanasia @@ -2075,9 +2233,19 @@ item.gun_euthanasia_ammo.name=Spritze item.gun_fatman.name=M42 Nukleares Katapult "Fat Man" item.gun_fatman_ammo.name=Miniatombombe (LEGACY) item.gun_fireext.name=Feuerlöscher -item.gun_flamer.name=Herr Topaz +item.gun_flamer.name=Flammenwerfer +item.gun_flamer_daybreaker.name=Daybreaker +item.gun_flamer_topaz.name=Mister Topaz +item.gun_flaregun.name=Signalpistole item.gun_flechette.name=Flechet-Gewehr -item.gun_folly.name=Prototyp Digamma "Irrsinn" +item.gun_folly.name=Folly +item.gun_g3.name=Sturmgewehr +item.gun_greasegun.name=Grease Gun +item.gun_hangman.name=Hangman +item.gun_heavy_revolver.name=Schwerer Revolver +item.gun_heavy_revolver_lilmac.name=Little Macintosh +item.gun_heavy_revolver_protege.name=Protège +item.gun_henry.name=Repetiergewehr item.gun_hk69.name=Granatenpistole item.gun_hp.name=HPP Lazerjet item.gun_hp_ammo.name=Tintenpatrone @@ -2091,20 +2259,32 @@ item.gun_kit_2.name=Waffenreparatursatz item.gun_ks23.name=Samuel die dicke Flinte item.gun_lacunae.name=CZ33 Abaddon item.gun_lacunae_ammo.name=5mm Patrone (LEGACY) +item.gun_lag.name=Komisch lange Pistole +item.gun_lasrifle.name=Lasergewehr item.gun_lever_action.name=Mare's Leg (Original) item.gun_lever_action_ammo.name=12x74 Schrotmunition (LEGACY) item.gun_lever_action_dark.name=Mare's Leg (Dunkel) item.gun_lever_action_sonata.name=Verkehrter Mare's Leg item.gun_lever_action_sonata_2.name=§cSonatas Mikrophon§r +item.gun_liberator.name=Liberator +item.gun_light_revolver.name=Kipplaufrevolver +item.gun_light_revolver_atlas.name=Atlas +item.gun_light_revolver_dani.name=Tag und Nacht item.gun_lunatic_marksman.name=Lunatic-Scharfschützengewehr item.gun_m2.name=üsMG -item.gun_minigun.name=CZ53 Persönliche Minigun +item.gun_maresleg.name=Repetierflinte +item.gun_maresleg_akimbo.name=Repetierflinten +item.gun_maresleg_broken.name=Broken +item.gun_minigun.name=Minigun +item.gun_minigun_lacunae.name=Lacunae item.gun_mirv.name=M42 Nukleares Katapult "Experimentelles MIRV" item.gun_mirv_ammo.name=Achtfaches MIRV (LEGACY) +item.gun_missile_launcher.name=Raketenwerfer item.gun_moist_nugget.name=Mosin-Nagant item.gun_mp.name=Maschinengewehr des Pazifisten item.gun_mp40.name=Maschinenpistole item.gun_mp40_ammo.name=SMG-Patrone (LEGACY) +item.gun_pepperbox.name=Bündelrevolver item.gun_pm_ammo.name=Kleine treibmittellose MG-Patrone item.gun_mymy.name=Nietes item.gun_osipr.name=Standartausrüstung für Sicherheitskräfte @@ -2112,7 +2292,7 @@ item.gun_osipr_ammo.name=Dunkler Energiepuls-Plug item.gun_osipr_ammo2.name=Combine Ball item.gun_panzerschreck.name=Panzerschreck item.gun_proto.name=M42 Nukleares Katapult "Proto MIRV" -item.gun_quadro.name=Quattro Formaggi +item.gun_quadro.name=Vierfachraketenwerfer item.gun_remington.name=ãƒã‚¤ãƒ‡ãƒ³ ブラスト [BIDEN BLAST] item.gun_revolver.name=Verbesserter Revolver item.gun_revolver_ammo.name=Bleipatrone @@ -2145,15 +2325,20 @@ item.gun_sauer.name=Stan Sauers Schrotflinte item.gun_skystinger.name=The One Sky Stinger item.gun_spark.name=Die Zündkerze item.gun_spark_ammo.name=Elektromagnetische Katusche +item.gun_spas12.name=SPAS-12 +item.gun_stg77.name=StG 77 item.gun_stinger.name=FIM-92 Stinger item.gun_stinger_ammo.name=Stinger-Rakete (LEGACY) item.gun_super_shotgun.name=Super Shotgun item.gun_supershotgun.name=Super Shotgun +item.gun_tau.name=Taukanone +item.gun_tesla_cannon.name=Teslakanone item.gun_thompson.name=Thompson Maschinenpistole item.gun_uac_pistol.name=UAC .45 Pistole item.gun_uboinik.name=Ubojnik item.gun_uboinik_ammo.name=12x70 Schrotmunition (LEGACY) -item.gun_uzi.name=IMI Uzi +item.gun_uzi.name=Uzi +item.gun_uzi_akimbo.name=Uzis item.gun_uzi_ammo.name=.22 lfB Patrone (LEGACY) item.gun_uzi_saturnite.name=Saturnit-Uzi item.gun_uzi_saturnite_silencer.name=Saturnit-Uzi mit Schalldämpfer @@ -2258,6 +2443,7 @@ item.ingot_firebrick.name=Schamottstein item.ingot_gh336.name=Ghiorsium-336-Barren item.ingot_gh336.desc=Seaborgiums Kollege. item.ingot_graphite.name=Graphitbarren +item.ingot_gunmetal.name=Rotgussbarren item.ingot_hes.name=Stark angereicherter Schrabidiumkernbrennstoffbarren item.ingot_lanthanium.name=Semistabiler Lanthanbarren item.ingot_lead.name=Bleibarren @@ -2285,6 +2471,8 @@ item.ingot_pu239.name=Plutonium-239-Barren item.ingot_pu240.name=Plutonium-240-Barren item.ingot_pu241.name=Plutonium-241-Barren item.ingot_pvc.name=PVC-Tafel +item.ingot_ra226.name=Radium-226-Barren +item.ingot_raw.name=%s-Barren item.ingot_red_copper.name=Minecraft-Kupfer item.ingot_reiium.name=Reiiumbarren item.ingot_rubber.name=Gummitafel @@ -2315,6 +2503,7 @@ item.ingot_unobtainium.name=Unobtainiumbarren item.ingot_uranium.name=Uranbarren item.ingot_uranium_fuel.name=Urankernbrennstoffbarren item.ingot_verticium.name=Verticiumbarren +item.ingot_weaponsteel.name=Waffenstahlbarren item.ingot_weidanium.name=Weidaniumbarren item.ingot_zirconium.name=Zirkoniumwürfel item.injector_5htp.name=5-HTP-Autoinjektor @@ -2333,6 +2522,7 @@ item.insert_xsapi.name=XSAPI-Einlage item.insert_yharonite.name=Yharoniteinlage item.item_secret.canister.name=Komposit SB-26 item.item_secret.controller.name=Proprietäre Steuereinheit +item.item_secret.selenium_steel.name=Selen-Stahl item.iv_blood.name=Blutbeutel item.iv_empty.name=Infusionsbeutel item.iv_xp.name=Erfahrungsbeutel @@ -2768,6 +2958,8 @@ item.page_of_.page6.name=Seite 6 item.page_of_.page7.name=Seite 7 item.page_of_.page8.name=Seite 8 item.pancake.name=Pfannkuchen aus Altmetall, Nägeln und Edelsteinpulver +item.part_barrel_heavy.name=Schwerer %slauf +item.part_barrel_light.name=Leichter %slauf item.part_beryllium.name=Berylliumstaubkiste item.part_carbon.name=Kohlenstoffstaubkiste item.part_copper.name=Kupferstaubkiste @@ -2776,8 +2968,13 @@ item.part_generic.lde.name=Leichtbauteil item.part_generic.piston_electric.name=Electrischer Kolben item.part_generic.piston_hydraulic.name=Hydraulischer Kolben item.part_generic.piston_pneumatic.name=Pneumatischer Kolben +item.part_grip.name=%sgriff item.part_lithium.name=Lithiumstaubkiste +item.part_mechanism.name=%smechanismus item.part_plutonium.name=Plutoniumstaubkiste +item.part_receiver_heavy.name=Schwerer %sverschluss +item.part_receiver_light.name=Leichter %sverschluss +item.part_stock.name=%sschaft item.particle_aelectron.name=Positronenkapsel item.particle_amat.name=Antimaterienkapsel item.particle_aproton.name=Antiprotonenkapsel @@ -2865,6 +3062,7 @@ item.plate_dineutronium.name=Dineutronium-Verbundplatte item.plate_dura_steel.name=Schnellarbeitsstahlplatte item.plate_euphemium.name=Euphemium-Verbundplatte item.plate_gold.name=Goldplatte +item.plate_gunmetal.name=Rotgussplatte item.plate_iron.name=Eisenplatte item.plate_kevlar.name=Kevlar-Keramik-Verbund item.plate_lead.name=Bleiplatte @@ -2875,6 +3073,7 @@ item.plate_saturnite.name=Saturnitplatte item.plate_schrabidium.name=Schrabidiumplatte item.plate_steel.name=Stahlplatte item.plate_titanium.name=Titanplatte +item.plate_weaponsteel.name=Waffenstahlplatte item.plate_welded.name=Geschweißte %splatte item.polaroid.name=Das Polaroid item.pollution_detector.name=Verschmutzungsdetektor @@ -3075,8 +3274,6 @@ item.rbmk_pellet_ueu.name=NU-Kernbrennstoffpellet item.rbmk_pellet_zfb_am_mix.name=Reaktorfähiges Americium ZFB-Pellet item.rbmk_pellet_zfb_bismuth.name=Bismut ZFB-Pellet item.rbmk_pellet_zfb_pu241.name=Pu-241 ZFB-Pellet -item.rbmk_lid.name=RBMK-Abdeckplatte -item.rbmk_lid_glass.name=RBMK-Glasabdeckung item.rbmk_tool.name=RBMK-Konsolen-Verlinkungsgerät item.rbmk_tool.desc=Schleichen und Rechtsclick auf RBMK um Position zu speichern,$Schleichen und Rechtsclick auf Konsole um zu verlinken! item.rbmk_tool.linked=Position gespeichert! @@ -3643,23 +3840,32 @@ rbmk.rod.xenon=Xenonvergiftung: %s rbmk.rod.coreTemp=Kerntemperatur: %s rbmk.rod.skinTemp=Außentemperatur: %s / %s +shape.barrelHeavy=Schwerer Lauf +shape.barrelLight=Leichter Lauf shape.billet=Billet shape.blade=Turbinenblatt shape.blades=Sägeblatt shape.block=Block +shape.c9=Kleinkaliberhülse +shape.c50=Großkaliberhülse shape.dust=Haufen shape.dusttiny=Winziger Haufen -shape.hull_big=Große Hülle +shape.grip=Griff +shape.gunMechanism=Mechanism +shape.hull_big=Große Mechanismus shape.hull_small=Kleine Hülle shape.ingot=Barren shape.nugget=Nugget shape.quantum=Quantum shape.quart=Viertel Block +shape.receiverHeavy=Schwerer Verschluss +shape.receiverLight=Leichter Verschluss shape.ntmpipe=Rohr shape.plate=Platte shape.plateTriple=Gussplatte shape.shell=Mantel shape.stamp=Stempel +shape.stock=Schaft shape.wireFine=Drähte shape.wireDense=Dichter Draht shape.wiresDense=Dichte Drähte @@ -3839,7 +4045,6 @@ tile.brick_concrete_cracked.name=Rissige Betonziegel tile.brick_concrete_cracked_stairs.name=Rissige Betonziegeltreppe tile.brick_concrete_marked.name=Beschriebene Betonziegel tile.brick_concrete_mossy.name=Bemooste Betonziegel -tile.brick_concrete_mossy.name=Bemooste Betonziegeltreppe tile.brick_ducrete.name=Ducreteziegel tile.brick_ducrete_stairs.name=Ducreteziegeltreppe tile.brick_dungeon.name=Berzelianitziegel @@ -4167,7 +4372,7 @@ tile.gravel_diamond.name=Diamantkies tile.gravel_obsidian.name=Gebrochener Obsidian tile.hadron_access.name=Teilchenbeschleuniger-Zugriffskonsole tile.hadron_analysis.name=Teilchenbeschleuniger-Analysekammernwand -tile.hadron_analysis.name=Teilchenbeschleuniger-Analysekammernfenster +tile.hadron_analysis_glass.name=Teilchenbeschleuniger-Analysekammernfenster tile.hadron_coil_alloy.name=Dichte Supraleiterspule tile.hadron_coil_chlorophyte.name=Dichte Grünalgenspule tile.hadron_coil_gold.name=Dichte Goldspule @@ -4246,6 +4451,7 @@ tile.launch_table.name=Große Startrampe tile.leaves_layer.name=Totes Laub tile.lox_barrel.name=LOX-Fass tile.machine_amgen.name=Umgebungsstrahlungs-Generator +tile.machine_ammo_press.name=Munitionspresse tile.machine_arc_furnace.name=Electrischer Lichtbogenofen tile.machine_arc_furnace_off.name=Lichtbogenofen tile.machine_arc_furnace_on.name=Lichtbogenofen @@ -4265,8 +4471,7 @@ tile.machine_boiler.name=Boiler tile.machine_boiler.desc=Großer Boiler zum Verdampfen von Wasser oder$Erhitzen von Öl. Benötigt externe Hitzequelle.$Wärmestransferrate: ΔT*0.01 TU/t tile.machine_boiler_electric_off.name=Elektrischer Ölwärmer tile.machine_boiler_electric_on.name=Elektrischer Ölwärmer -tile.machine_boiler_off.name=Ölwärmer -tile.machine_boiler_on.name=Ölwärmer +tile.machine_boiler_off.name=Alter Boiler tile.machine_catalytic_cracker.name=Katalytischer Cracking-Turm tile.machine_catalytic_reformer.name=Katalytischer Reformer tile.machine_centrifuge.name=Zentrifuge @@ -4343,6 +4548,7 @@ tile.machine_powerrtg.name=PT-Isotopenzelle tile.machine_press.name=Befeuerte Presse tile.machine_puf6_tank.name=Plutoniumhexafluorid-Tank tile.machine_pumpjack.name=Pferdekopfpumpe +tile.machine_pyrooven.name=Pyrolyseofen tile.machine_radar.name=Radar tile.machine_radar_large.name=Großes Radar tile.machine_radgen.name=Strahlenbetriebener Generator @@ -4351,6 +4557,7 @@ tile.machine_reactor_on.name=Brutreaktor tile.machine_reactor_small.name=Atomreaktor tile.machine_refinery.name=Ölraffinerie tile.machine_reix_mainframe.name=Rei-X Hauptrechner (WIP) +tile.machine_rotary_furnace.name=Rotationshochofen tile.machine_rtg_blue.name=Konvektionsgenerator tile.machine_rtg_cyan.name=Schrabidium-Zerfallsenergie-Generator (WIP) tile.machine_rtg_furnace_off.name=RTG-Ofen @@ -4525,6 +4732,12 @@ tile.ore_uranium_scorched.name=Verschmortes Uranerz tile.ore_verticium.name=Dollargrünes Mineral tile.ore_volcano.name=Thermale Fissur tile.ore_weidanium.name=Weidit +tile.pa_beamline.name=Strahlrohr +tile.pa_detector.name=Teilchendetektor +tile.pa_dipole.name=Dipol-Magnete +tile.pa_quadrupole.name=Quadrupol-Magnete +tile.pa_rfc.name=Hohlraumresonator +tile.pa_source.name=Teilchenquelle tile.pedestal.name=Podest tile.pink_barrel.name=Kerosinfass tile.pink_log.name=Pinkes Holz @@ -4580,7 +4793,6 @@ tile.pwr_port.name=PWR Zugangsport tile.pwr_port.desc=Erlaubt IO für Items und Flüssigkeiten$Platzierung: Hülle tile.pwr_reflector.name=PWR Neutronenreflektor tile.pwr_reflector.desc=Reflektier Neutronen auf Brennstäbe zurück$Platzierung: Hülle, für höhere Reaktivität$Gültiger Block für Hülle -tile.volcanic_lava_block.name=Vulkanische Lava tile.radar_screen.name=Radarbildschirm tile.radio_telex.name=Telex-Maschine tile.radio_torch_counter.name=Redstone-over-Radio Itemzähler @@ -4718,7 +4930,8 @@ tile.stone_cracked.name=Rissiger Stein tile.stone_depth.name=Tiefenfels tile.stone_depth_nether.name=Nether-Tiefenfels tile.stone_gneiss.name=Graphitschiefer -tile.stone_keyhole.name=Seltsamer Stein +tile.stone_keyhole.name=Seltsamer Ziegel (Roter Raum) +tile.stone_keyhole_meta.name=Strange Red Room Brick tile.stone_porous.name=Poröser Stein tile.stone_resource.asbestos.name=Chrysotil tile.stone_resource.bauxite.name=Bauxit @@ -4841,7 +5054,7 @@ trait.rbmx.coreTemp=Kernentropie: %s trait.rbmx.depletion=Verkrustungsgraad: %s trait.rbmx.diffusion=Fluss: %s trait.rbmx.fluxFunc=Zerstörungsfunktion: %s -trait.rbmk.funcType=Funktionsspezifikation: %s +trait.rbmx.funcType=Funktionsspezifikation: %s trait.rbmx.heat=Verkrustung pro Tick bei voller Kraft: %s trait.rbmx.melt=Kollapstiefe: %s trait.rbmk.neutron.any.x=Alle nicht-euklidischen Formen diff --git a/src/main/resources/assets/hbm/lang/en_NT.lang b/src/main/resources/assets/hbm/lang/en_NT.lang deleted file mode 100644 index 8f694f8e2..000000000 --- a/src/main/resources/assets/hbm/lang/en_NT.lang +++ /dev/null @@ -1,2018 +0,0 @@ -itemGroup.tabTest=Nuclear Tech Mod Test Tab -itemGroup.tabParts=NTM Resources and Parts -itemGroup.tabControl=NTM Machine Items and Fuel -itemGroup.tabTemplate=NTM Templates -itemGroup.tabBlocks=NTM Ores and Blocks -itemGroup.tabMachine=NTM Machines -itemGroup.tabNuke=NTM Bombs -itemGroup.tabMissile=NTM Missiles and Satellites -itemGroup.tabWeapon=NTM Weapons and Turrets -itemGroup.tabConsumable=NTM Consumables and Gear - -achievement.sacrifice=Sororicide -achievement.sacrifice.desc=Face the fire and live. -achievement.impossible=Literally impossible -achievement.impossible.desc=You can't get this achievement. -achievement.tasteofblood=The Taste of Blood -achievement.tasteofblood.desc=is not part of any testing protocol. -achievement.freytag=Freytag -achievement.freytag.desc=Herold's life guards -achievement.selenium=XVIII The Moon -achievement.selenium.desc=Yeah. -achievement.potato=Rogue AI -achievement.potato.desc=You stabbed me! What is WRONG with yo-WOOOAAH -achievement.c44=Chapter 44 -achievement.c44.desc=Galvanized! I mean, zinc! -achievement.c20_5=Chapter [TWENTY POINT FIVE] -achievement.c20_5.desc=??? -achievement.space=The Final Front-ah forget it -achievement.space.desc=Fail in every way possible and waste funds worth 90 million dollars. -achievement.FOEQ=Pegasi and Missile Silos -achievement.FOEQ.desc=Send a relay into martian...I mean dunaian orbit. -achievement.fiend=Delinquent -achievement.fiend.desc=Be mean. -achievement.fiend2=Delinquent 2: Delinquent Harder -achievement.fiend2.desc=Be meaner. - -potion.hbm_taint=Tainted -potion.hbm_mutation=Tainted Heart -potion.hbm_radiation=Contaminated -potion.hbm_bang=! ! ! -potion.hbm_radx=Rad-X -potion.hbm_lead=Lead Poisoning - -hbmfluid.none=None -hbmfluid.water=Water -hbmfluid.steam=Steam -hbmfluid.hotsteam=Dense Steam -hbmfluid.superhotsteam=Super Dense Steam -hbmfluid.lava=Lava -hbmfluid.uf6=Uranium Hexafluoride -hbmfluid.puf6=Plutonium Hexafluoride -hbmfluid.deuterium=Deuterium -hbmfluid.tritium=Tritium -hbmfluid.oil=Crude Oil -hbmfluid.hotoil=Hot Crude Oil -hbmfluid.smear=Industrial Oil -hbmfluid.reclaimed=Reclaimed Industrial Oil -hbmfluid.petroil=Petroil -hbmfluid.lubricant=Engine Lubricant -hbmfluid.diesel=Diesel -hbmfluid.kerosene=Kerosene -hbmfluid.gas=Natural Gas -hbmfluid.coolant=Coolant -hbmfluid.amat=Antimatter -hbmfluid.aschrab=Antischrabidium -hbmfluid.heavyoil=Heavy Oil -hbmfluid.bitumen=Bitumen -hbmfluid.heatingoil=Heating Oil -hbmfluid.naphtha=Naphtha -hbmfluid.lightoil=Light Oil -hbmfluid.petroleum=Petroleum Gas -hbmfluid.peroxide=Hydrogen Peroxide -hbmfluid.watz=Poisonous Mud -hbmfluid.biogas=Biogas -hbmfluid.biofuel=Biofuel -hbmfluid.sas3=Schrabidium Trisulfide -hbmfluid.nitan=NITAN© 100 Octane Super Fuel -hbmfluid.cryogel=Cryogel -hbmfluid.lpg=LPG - -chem.TEST=Test -chem.FP_HEAVYOIL=Heavy Oil Processing -chem.FP_SMEAR=Industrial Oil Processing -chem.FP_NAPHTHA=Naphtha Processing -chem.FP_LIGHTOIL=Light Oil Processing -chem.FR_REOIL=Oil Reprocessing -chem.FR_PETROIL=Petroil Mixing -chem.OIL_SAND=Tar Sand Extraction -chem.FC_BITUMEN=Bitumen Cracking -chem.FC_I_NAPHTHA=Industrial Oil Cracking -chem.FC_GAS_PETROLEUM=Gas Cracking -chem.FC_DIESEL_KEROSENE=Diesel Cracking -chem.FC_KEROSENE_PETROLEUM=Kerosene Cracking -chem.CC_OIL=Coal Liquefaction -chem.CC_I=Enhanced Coal Liquefaction -chem.CC_HEATING=Advanced Coal Liquefaction -chem.CC_HEAVY=Basic Coal Liquefaction -chem.CC_NAPHTHA=Naphtha Coal Liquefaction -chem.ASPHALT=Asphalt Production -chem.COOLANT=Coolant Mixing -chem.CRYOGEL=Cryogel Mixing -chem.DESH=Desh Production -chem.PEROXIDE=Hydrogen Peroxide Production -chem.CIRCUIT_4=Overclocked Circuit Production -chem.CIRCUIT_5=High Performance Circuit Production -chem.SF_OIL=Crude Oil Solidification -chem.SF_HEAVYOIL=Heavy Oil Solidification -chem.SF_SMEAR=Industrial Oil Solidification -chem.SF_HEATINGOIL=Heating Oil Solidification -chem.SF_RECLAIMED=Reclaimed Oil Solidification -chem.SF_PETROIL=Petroil Solidification -chem.SF_LUBRICANT=Lubricant Solidification -chem.SF_NAPHTHA=Naphtha Solidification -chem.SF_DIESEL=Diesel Solidification -chem.SF_LIGHTOIL=Light Oil Solidification -chem.SF_KEROSENE=Kerosene Solidification -chem.SF_GAS=Natural Gas Solidification -chem.SF_PETROLEUM=Petroleum Gas Solidification -chem.SF_BIOGAS=Biogas Solidification -chem.SF_BIOFUEL=Biofuel Solidification -chem.POLYMER=Polymer Synthesis -chem.DEUTERIUM=Deuterium Extraction -chem.STEAM=Water Boiling -chem.YELLOWCAKE=Yellowcake Production -chem.UF6=Uranium Hexafluoride Production -chem.PUF6=Plutonium Hexafluoride Production -chem.BP_BIOGAS=Biogas Production -chem.BP_BIOFUEL=Biofuel Transesterification -chem.LPG=Petroleum Gas Liquefaction -chem.SAS3=Schrabidium Trisulfide Production -chem.NITAN=NITAN Super Fuel Mixing -chem.DYN_SCHRAB=Schrabidium Dynosynthesis -chem.DYN_EUPH=Euphemium Dynosynthesis -chem.DYN_DNT=Dineutronium Dynosynthesis -chem.CORDITE=Cordite Production -chem.KEVLAR=Kevlar Compound Production - -item.record.lc.desc=Valve - Diabolic Adrenaline Guitar/Lambda Core -item.record.ss.desc=Valve - Sector Sweep -item.record.vc.desc=Valve - Vortal Combat - -death.attack.nuclearBlast=%1$s was blown away by a nuclear explosion. -death.attack.revolverBullet=%1$s was shot in the head by %2$s. -death.attack.mudPoisoning=%1$s died in poisonous mud. -death.attack.euthanized=%1$s was euthanized by %2$s. -death.attack.euthanizedSelf=%1$s euthanized himself, what a dork. -death.attack.euthanizedSelf2=%1$s wins the Darwin Award. -death.attack.tau=%1$s was riddeled by %2$s using negatively charged tauons. -death.attack.tauBlast=%1$s charged the XVL1456 for too long and was blown into pieces. -death.attack.chopperBullet=%1$s was rekt by %2$s. -death.attack.cmb=%1$s was fizzeled by %2$s. -death.attack.subAtomic=%1$s's atoms have been destroyed by %2$s. -death.attack.subAtomic2=%1$s was QPU-misaligned because %2$s tampered with his de facto speed. -death.attack.subAtomic3=%1$s's divergence dropped below 1 percent because of %2$s. -death.attack.subAtomic4=%1$s was divided by zero by %2$s. -death.attack.subAtomic5=%1$s was nullified by %2$s. -death.attack.radiation=%1$s died from radiation poisoning. -death.attack.acid=%1$s fell into acid. -death.attack.suicide=%1$s blew their head off. -death.attack.electrified=%1$s was electrified by %2$s. -death.attack.flamethrower=%1$s was cremated by %2$s. -death.attack.plasma=%1$s was immolated by %2$s. -death.attack.ice=%1$s was turned into a popsicle by %2$s. -death.attack.cheater=%1$s's intestines turned into oats. (???) -death.attack.laser=%1$s was turned into ash by %2$s. -death.attack.rubble=%1$s was squashed by debris. -death.attack.shrapnel=%1$s was ragged by a shrapnel. -death.attack.teleporter=%1$s was teleported into nothingness. -death.attack.blackhole=%1$s was spaghettified. -death.attack.blender=%1$s was chopped in small, bite-sized pieces. -death.attack.meteorite=%1$s was hit by a falling rock from outer space. -death.attack.boxcar=%1$s was smushed by a falling boxcar. Oh well. -death.attack.broadcast=%1$s got their brain melted. -death.attack.ams=%1$s was bathed in deadly particles that have yet to be named by human science. -death.attack.amsCore=%1$s was vaporized in the fire of a singularity. -death.attack.bang=%1$s was blasted into bite-sized pieces. -death.attack.pc=%1$s was reduced to a puddle in the pink cloud. -death.attack.cloud=%1$s melted like a popsicle in the sun. -death.attack.lead=%1$s died from lead poisoning. - -item.redstone_sword.name=Redstone Sword -item.big_sword.name=Great Sword -item.test_nuke_igniter.name=Igniter -item.test_nuke_propellant.name=Propellant -item.test_nuke_tier1_shielding.name=Neutron Reflector (Tier 1) -item.test_nuke_tier2_shielding.name=Neutron Reflector (Tier 2) -item.test_nuke_tier1_bullet.name=U235 Projectile (Tier 1) -item.test_nuke_tier2_bullet.name=MOX Projectile (Tier 2) -item.test_nuke_tier1_target.name=Subcritical U235 Target (Tier 1) -item.test_nuke_tier2_target.name=Subcritical MOX Target (Tier 2) - -item.gadget_explosive.name=Propellant -item.gadget_explosive8.name=Bundle of Propellant -item.gadget_wireing.name=Wiring -item.gadget_core.name=Plutonium Core - -item.boy_igniter.name=Bomb Igniter -item.boy_propellant.name=Propellant -item.boy_bullet.name=U235 Projectile -item.boy_target.name=Subcritical U235 Target -item.boy_shielding.name=Neutron Shielding - -item.man_explosive.name=Propellant -item.man_explosive8.name=Bundle of Propellant -item.man_igniter.name=Bomb Igniter -item.man_core.name=Plutonium Core - -item.mike_core.name=Uranium Coated Deuterium Tank -item.mike_deut.name=Deuterium Tank -item.mike_cooling_unit.name=Deuterium Cooling Unit - -item.tsar_core.name=Tsar Bomba Core - -item.fleija_igniter.name=Pulse Igniter -item.fleija_propellant.name=Schrabidium Propellant -item.fleija_core.name=F.L.E.I.J.A. Uranium 235 Charge - -item.solinium_igniter.name=SOL Pulse Igniter -item.solinium_propellant.name=SOL Compression Charge -item.solinium_core.name=Semi-Stable Solinium Core - -item.n2_charge.name=Large Explosive Charge - -item.custom_tnt.name=Custom Nuke Explosive Charge -item.custom_nuke.name=Custom Nuke Nuclear Rod -item.custom_hydro.name=Custom Nuke Hydrogen Rod -item.custom_amat.name=Custom Nuke Antimatter Rod -item.custom_dirty.name=Custom Nuke Dirty Rod -item.custom_schrab.name=Custom Nuke Schrabidium Rod -item.custom_fall.name=Custom Nuke Drop Upgrade - -container.nukeGadget=The Gadget -container.nukeBoy=Little Boy -container.nukeMan=Fat Man -container.nukeMike=Ivy Mike -container.nukeTsar=Tsar Bomba -container.nukeFleija=F.L.E.I.J.A. -container.nukePrototype=The Prototype -container.nukeCustom=Custom Nuke -container.nukeSolinium=The Blue Rinse -container.nukeN2=N² Mine -container.nukeN45=N45 Naval Mine - -container.bombMulti=Multi Purpose Bomb - -tile.nuke_gadget.name=The Gadget -tile.nuke_boy.name=Little Boy -tile.nuke_man.name=Fat Man -tile.nuke_mike.name=Ivy Mike -tile.nuke_tsar.name=Tsar Bomba -tile.nuke_fleija.name=F.L.E.I.J.A. -tile.nuke_prototype.name=The Prototype -tile.nuke_custom.name=Custom Nuke -tile.nuke_solinium.name=The Blue Rinse -tile.nuke_n2.name=N² Mine -tile.nuke_n45.name=N45 Naval Mine - -tile.bomb_multi.name=Multi Purpose Bomb -tile.rejuvinator.name=Rejuvination Device - -tile.flame_war.name=Flame War in a Box -tile.float_bomb.name=Levitation Bomb -tile.therm_endo.name=Endothermic Bomb -tile.therm_exo.name=Exothermic Bomb -tile.emp_bomb.name=EMP Device - -tile.crashed_bomb.name=Dud -tile.boxcar.name=Boxcar -tile.bomber.name=Crashed Bomber - -tile.turret_light.name=Light Machine Gun Turret -tile.turret_heavy.name=Heavy Machine Gun Turret -tile.turret_rocket.name=Rocket Turret -tile.turret_flamer.name=Flamethrower Turret -tile.turret_tau.name=Tauon Turret -tile.turret_spitfire.name=Turret I have no name for right now [WIP] -tile.turret_cwis.name=Phalanx Mk-15 CIWS -tile.turret_cheapo.name=Cheapo Gatling Sentry -tile.machine_radar.name=Radar -container.radar=Radar -tile.machine_forcefield.name=Forcefield Emitter -container.forceField=Forcefield Emitter -tile.machine_satlinker.name=Satellite ID Manager -container.satLinker=SatLink Device -tile.machine_telelinker.name=Turret Telemetry Linker -container.teleLinker=TelLink Device - -item.turret_control.name=Turret Controller -item.turret_chip.name=Turret AI-Chip -item.turret_biometry.name=Turret Telemetry Card - -item.key.name=Key -item.key_red.name=Red Key -item.key_kit.name=Key Imitation Kit -item.key_fake.name=Counterfeit Key -item.pin.name=Bobby Pin -item.padlock_rusty.name=Rusty Padlock -item.padlock.name=Padlock -item.padlock_reinforced.name=Reinforced Padlock -item.padlock_unbreakable.name=Unbreakable Padlock -tile.machine_keyforge.name=Locksmith Table -container.keyForge=Locksmith Table - -tile.mine_ap.name=Anti-Personell Mine -tile.mine_he.name=Anti-Tank Mine -tile.mine_shrap.name=Shrapnel Mine -tile.mine_fat.name=Fat Mine -item.defuser.name=High-Tech Bomb Defusing Device - -tile.crate.name=Supply Crate -tile.crate_weapon.name=Weapon Crate -tile.crate_lead.name=Hazmat Crate -tile.crate_metal.name=Machine Crate -tile.crate_red.name=Red Crate -tile.marker_structure.name=Multiblock Structure Marker - -tile.machine_difurnace_off.name=Alloy Furnace -tile.machine_difurnace_on.name=Alloy Furnace -container.diFurnace=Alloy Furnace -tile.machine_centrifuge.name=Centrifuge -container.centrifuge=Centrifuge -tile.machine_gascent.name=Gas Centrifuge -container.gasCentrifuge=Gas Centrifuge -tile.machine_uf6_tank.name=Uranium Hexafluoride Tank -container.uf6_tank=UF6 Tank -tile.machine_puf6_tank.name=Plutonium Hexafluoride Tank -container.puf6_tank=PuF6 Tank -tile.machine_reactor.name=Breeding Reactor -tile.machine_reactor_on.name=Breeding Reactor -container.reactor=Breeding Reactor -tile.machine_nuke_furnace_off.name=Nuclear Furnace -tile.machine_nuke_furnace_on.name=Nuclear Furnace -container.nukeFurnace=Nuclear Powered Furnace -tile.machine_rtg_furnace_off.name=RTG Furnace -tile.machine_rtg_furnace_on.name=RTG Furnace -container.rtgFurnace=RTG Furnace -tile.machine_electric_furnace_off.name=Electric Furnace -tile.machine_electric_furnace_on.name=Electric Furnace -container.electricFurnace=Electric Furnace -tile.machine_generator.name=Nuclear Reactor (Old) -container.generator=Nuclear Reactor -tile.red_wire_coated.name=Coated Red Copper Cable -tile.machine_deuterium.name=Deuterium Extractor -container.machine_deuterium=Deuterium Extractor -tile.machine_battery.name=Energy Storage Block -tile.machine_lithium_battery.name=Li-Ion Energy Storage Block -tile.machine_schrabidium_battery.name=Schrabidium Energy Storage Block -tile.machine_dineutronium_battery.name=Spark Energy Storage Block -container.battery=Energy Storage -tile.machine_coal_off.name=Combustion Generator -tile.machine_coal_on.name=Combustion Generator -container.machineCoal=Combustion Generator -tile.machine_boiler_off.name=Boiler -tile.machine_boiler_on.name=Boiler -container.machineBoiler=Boiler -tile.machine_boiler_electric_off.name=Electric Boiler -tile.machine_boiler_electric_on.name=Electric Boiler -container.machineElectricBoiler=Electric Boiler -tile.machine_turbine.name=Steam Turbine -container.machineTurbine=Steam Turbine -tile.launch_pad.name=Missile Launch Pad -container.launchPad=Missile Launch Pad -tile.sat_dock.name=Cargo Landing Pad -container.satDock=Cargo Landing Pad -tile.book_guide.name=Hbm's Nuclear Tech Mod Manual [LEGACY] -tile.machine_schrabidium_transmutator.name=Schrabidium Transmutation Device -container.machine_schrabidium_transmutator=Schrabidium Transmutation Device -tile.machine_diesel.name=Diesel Generator -container.machineDiesel=Diesel Generator -tile.machine_shredder.name=Shredder -container.machineShredder=Shredder -tile.machine_combine_factory.name=CMB Steel Furnace -container.machineCMB=CMB Steel Furnace -tile.machine_teleporter.name=Teleporter -container.teleporter=Teleporter -tile.machine_reix_mainframe.name=Rei-X Mainframe (WIP) -container.reix=Rei-X Mainframe -tile.machine_industrial_generator.name=Industrial Generator -container.iGenerator=Industrial Generator -tile.machine_cyclotron.name=Cyclotron -container.cyclotron=Cyclotron -tile.machine_well.name=Oil Derrick -tile.machine_pumpjack.name=Pumpjack -tile.oil_pipe.name=Crude Oil Extraction Pipe -container.oilWell=Oil Derrick -container.pumpjack=Pumpjack -tile.machine_refinery.name=Oil Refinery -container.machineRefinery=Oil Refinery -tile.oil_duct.name=Oil Pipe -tile.oil_duct_solid.name=Coated Oil Pipe -tile.machine_flare.name=Gas Flare -container.gasFlare=Gas Flare -tile.gas_duct.name=Gas Pipe -tile.gas_duct_solid.name=Coated Gas Pipe -tile.machine_drill.name=Automatic Mining Drill -container.miningDrill=Automatic Mining Drill -tile.drill_pipe.name=Drill Pipe -tile.machine_assembler.name=Assembly Machine -container.assembler=Assembly Machine -tile.machine_chemplant.name=Chemical Plant -container.chemplant=Chemical Plant -tile.fluid_duct.name=Universal Fluid Duct -tile.machine_fluidtank.name=Tank -item.fluid_duct.name=Fluid Duct: -container.fluidtank=Tank -tile.machine_turbofan.name=Turbofan -container.machineTurbofan=Turbofan -tile.crate_iron.name=Iron Crate -container.crateIron=Iron Crate -tile.crate_steel.name=Steel Crate -container.crateSteel=Steel Crate -tile.safe.name=Safe -container.safe=Safe -tile.machine_press.name=Burner Press -container.press=Burner Press -tile.machine_epress.name=Electric Press -container.epress=Electric Press -tile.machine_siren.name=Siren -container.siren=Siren -tile.machine_radgen.name=Radiation-Powered Engine -container.radGen=Radiation-Powered Engine -tile.machine_selenium.name=Radial Performance Engine -container.machineSelenium=Radial Performance Engine -tile.machine_reactor_small.name=Nuclear Reactor -container.reactorSmall=Nuclear Reactor -tile.machine_controller.name=Reactor Remote Control Block -container.reactorControl=Reactor Remote Control Block - -tile.broadcaster_pc.name=Corrupted Broadcaster - -tile.radiobox.name=Rosenberg Pest Control Box [WIP] -tile.radiorec.name=Broken FM Radio -container.radiobox=FM Transmitter -container.radiorec=FM Radio - -tile.red_pylon.name=Electricity Pole -item.wiring_red_copper.name=Cable Drum - -tile.rail_highspeed.name=High Speed Rail -tile.rail_booster.name=High Speed Booster Rail - -tile.factory_titanium_hull.name=Basic Factory Casing -tile.factory_titanium_furnace.name=Basic Factory Access Hatch -tile.factory_titanium_conductor.name=Basic Factory Electricity Port -tile.factory_titanium_core.name=Basic Factory Core Component -item.factory_core_titanium.name=Basic Factory Energy Cluster -container.factoryTitanium=Basic Factory -tile.factory_advanced_hull.name=Advanced Factory Casing -tile.factory_advanced_furnace.name=Advanced Factory Access Hatch -tile.factory_advanced_conductor.name=Advanced Factory Electricity Port -tile.factory_advanced_core.name=Advanced Factory Core Component -item.factory_core_advanced.name=Advanced Factory Energy Cluster -container.factoryAdvanced=Advanced Factory - -tile.reactor_element.name=Reactor Chamber -tile.reactor_control.name=Control Rods -tile.reactor_hatch.name=Reactor Access Hatch -tile.reactor_ejector.name=Reactor Waste Ejector -tile.reactor_inserter.name=Reactor Fuel Inserter -tile.reactor_conductor.name=Reactor Boiler -tile.reactor_computer.name=Reactor Control -container.reactorLarge=Big Nuclear Reactor - -tile.fusion_conductor.name=Superconducting Magnet -tile.fusion_center.name=Central Magnet Piece -tile.fusion_motor.name=Magnet Motor Piece -tile.fusion_heater.name=Plasma Heater -tile.fusion_hatch.name=Fusion Reactor Access Hatch -tile.fusion_core.name=Fusion Reactor Control -tile.plasma.name=Plasma -container.fusionMultiblock=Big Fusion Reactor - -tile.watz_element.name=Watz Reaction Chamber -tile.watz_control.name=Reinforced Control Rods -tile.watz_cooler.name=Watz Reactor Supercooler -tile.watz_end.name=Watz Reactor Stability Element -tile.watz_hatch.name=Watz Reactor Access Hatch -tile.watz_conductor.name=Watz Electricity Port -tile.watz_core.name=Watz Reactor Control -container.watzPowerplant=Watz Power Plant - -tile.fwatz_conductor.name=4000K Superconducting Magnet -tile.fwatz_cooler.name=Regenerative Coolant Fluid Tank Shell -tile.fwatz_tank.name=Regenerative Coolant Fluid Tank -tile.fwatz_scaffold.name=Fusionary Watz Plant Structural Support -tile.fwatz_hatch.name=Fusionary Watz Plant Access Hatch -tile.fwatz_computer.name=Fusionary Watz Reactor Calculation Matrix -tile.fwatz_core.name=Fusionary Watz Reactor Control -tile.fwatz_plasma.name=Destabilized Antischrabidium Plasma -container.fusionaryWatzPlant=Fusionary Watz Plant - -tile.machine_rtg_grey.name=RT Generator -container.rtg=RT Generator -tile.machine_rtg_red.name=Fulmination Generator -tile.machine_rtg_orange.name=Strong RT Generator -tile.machine_rtg_yellow.name=Australium Superfuel Reactor -tile.machine_rtg_green.name=Verticium Wealth Generator -tile.machine_rtg_cyan.name=Schrabidium Decay Generator (WIP) -tile.machine_rtg_blue.name=Convection Generator -tile.machine_rtg_purple.name=Antimatter Annihilation Generator - -tile.machine_waste_drum.name=Spent Fuel Pool Drum -container.wasteDrum=Spent Fuel Pool Drum - -tile.machine_spp_bottom.name=ZPE Potential Generator (Bottom) -tile.machine_spp_top.name=ZPE Potential Generator (Top) - -tile.ams_limiter.name=AMS Stabilizer [WIP] -container.amsLimiter=AMS Stabilizer [WIP] -tile.ams_emitter.name=AMS Emitter [WIP] -container.amsEmitter=AMS Emitter [WIP] -tile.ams_base.name=AMS Base [WIP] -container.amsBase=AMS Base [WIP] - -item.template_folder.name=Machine Template Folder -item.fluid_identifier.name=Fluid Identifier -item.assembly_template.name=Assembly Template: -item.chemistry_template.name=Chemistry Template: -item.siren_track.name=Siren Track - -item.fuse.name=Fuse - -tile.test_nuke.name=Test Nuke - -item.ingot_th232.name=Th232 Ingot -item.ingot_uranium.name=Uranium Ingot -item.ingot_u233.name=U233 Ingot -item.ingot_u235.name=U235 Ingot -item.ingot_u238.name=U238 Ingot -item.ingot_u238m2.name=Metastable U238-2 Ingot -item.ingot_plutonium.name=Plutonium Ingot -item.ingot_pu238.name=Pu238 Ingot -item.ingot_pu239.name=Pu239 Ingot -item.ingot_pu240.name=Pu240 Ingot -item.ingot_titanium.name=Titanium Ingot -item.sulfur.name=Sulfur - -item.niter.name=Niter -item.ingot_copper.name=Industrial Grade Copper -item.ingot_red_copper.name=Minecraft Grade Copper -item.ingot_tungsten.name=Tungsten Ingot -item.ingot_aluminium.name=Aluminium Ingot -item.fluorite.name=Fluorite -item.ingot_steel.name=Steel Ingot -item.plate_steel.name=Steel Plate -item.ingot_beryllium.name=Beryllium Ingot -item.plate_schrabidium.name=Schrabidium Plate -item.ingot_schrabidium.name=Schrabidium Ingot -item.nugget_schrabidium.name=Schrabidium Nugget -item.plate_copper.name=Copper Plate -item.board_copper.name=Copper Panel -item.ingot_advanced_alloy.name=Advanced Alloy Ingot -item.plate_advanced_alloy.name=Advanced Alloy Plate -item.wire_advanced_alloy.name=Super Conductor -item.coil_advanced_alloy.name=Super Conducting Coil -item.coil_advanced_torus.name=Super Conducting Ring Coil -item.coil_gold.name=Gold Coil -item.coil_gold_torus.name=Golden Ring Coil -item.lithium.name=Lithium Cube -item.ingot_magnetized_tungsten.name=Magnetized Tungsten Ingot -item.ingot_combine_steel.name=CMB Steel Ingot -item.plate_combine_steel.name=CMB Steel Plate -item.wire_magnetized_tungsten.name=4000K High Temperature Super Conductor -item.coil_magnetized_tungsten.name=4000K High Temperature Super Conducting Coil -item.plate_mixed.name=Mixed Plate -item.plate_paa.name=PaA Alloy Plate -item.ingot_dura_steel.name=High-Speed Steel Ingot -item.ingot_polymer.name=Polymer Ingot -item.bolt_dura_steel.name=High-Speed Steel Bolt -item.pipes_steel.name=Steel Pipes -item.drill_titanium.name=Titanium Drill -item.bolt_tungsten.name=Tungsten Bolt -item.bolt_compound.name=Reinforced Turbine Shaft -item.plate_polymer.name=Insulator -item.ingot_solinium.name=Solinium Ingot -item.nugget_solinium.name=Solinium Nugget -item.photo_panel.name=Photovoltaic Panel -item.sat_base.name=Satellite Base -item.thruster_nuclear.name=LV-N Nuclear Rocket Engine -item.sat_head_mapper.name=High-Gain Optical Camera -item.sat_head_scanner.name=M700 Survey Scanner -item.sat_head_radar.name=Radar Dish -item.sat_head_laser.name=Death Ray -item.sat_head_resonator.name=Xenium Resonator - -item.ingot_australium.name=Australium Ingot -item.ingot_weidanium.name=Weidanium Ingot -item.ingot_reiium.name=Reiium Ingot -item.ingot_unobtainium.name=Unobtainium Ingot -item.ingot_daffergon.name=Daffergon Ingot -item.ingot_verticium.name=Verticium Ingot -item.nugget_australium.name=Australium Nugget -item.nugget_weidanium.name=Weidanium Nugget -item.nugget_reiium.name=Reiium Nugget -item.nugget_unobtainium.name=Unobtainium Nugget -item.nugget_daffergon.name=Daffergon Nugget -item.nugget_verticium.name=Verticium Nugget - -item.ingot_desh.name=Desh Ingot -item.nugget_desh.name=Desh Nugget -item.powder_desh.name=Desh Powder -item.powder_desh_mix.name=Desh Blend -item.powder_nitan_mix.name=Nitanium Blend -item.powder_spark_mix.name=Spark Blend -item.ingot_dineutronium.name=Dineutronium Ingot -item.powder_dineutronium.name=Dineutronium Powder -item.nugget_dineutronium.name=Dineutronium Nugget -item.ingot_starmetal.name=Starmetal Ingot -item.ingot_saturnite.name=Saturnite Ingot -item.plate_saturnite.name=Saturnite Plate - -item.solid_fuel.name=Solid Fuel - -item.nugget_th232.name=Th232 Nugget -item.nugget_u233.name=U233 Nugget -item.nugget_u235.name=U235 Nugget -item.nugget_u238.name=U238 Nugget -item.nugget_pu238.name=Pu238 Nugget -item.nugget_pu239.name=Pu239 Nugget -item.nugget_pu240.name=Pu240 Nugget -item.plate_titanium.name=Titanium Plate -item.plate_aluminium.name=Aluminium Plate -item.wire_red_copper.name=Red Copper Wire -item.neutron_reflector.name=Neutron Reflector -item.nugget_beryllium.name=Beryllium Nugget - -item.wire_aluminium.name=Aluminium Wire -item.wire_copper.name=Copper Wire -item.wire_gold.name=Gold Wire -item.wire_schrabidium.name=Schrabidium Wire - -item.circuit_raw.name=Basic Circuit Assembly -item.circuit_aluminium.name=Basic Circuit -item.circuit_copper.name=Enhanced Circuit -item.circuit_red_copper.name=Advanced Circuit -item.circuit_gold.name=Overclocked Circuit -item.circuit_schrabidium.name=High Performance Circuit -item.circuit_targeting_tier1.name=Military Grade Circuit Board (Tier 1) -item.circuit_targeting_tier2.name=Military Grade Circuit Board (Tier 2) -item.circuit_targeting_tier3.name=Military Grade Circuit Board (Tier 3) -item.circuit_targeting_tier4.name=Military Grade Circuit Board (Tier 4) -item.circuit_targeting_tier5.name=Military Grade Circuit Board (Tier 5) -item.circuit_targeting_tier6.name=Military Grade Circuit Board (Tier 6) -item.mechanism_revolver_1.name=Revolver Mechanism -item.mechanism_revolver_2.name=Advanced Revolver Mechanism -item.mechanism_rifle_1.name=Rifle Mechanism -item.mechanism_rifle_2.name=Advanced Rifle Mechanism -item.mechanism_launcher_1.name=Launcher Mechanism -item.mechanism_launcher_2.name=Advanced Launcher Mechanism -item.mechanism_special.name=High-Tech Weapon Mechanism - -item.primer_357.name=.357 Magnum Primer (x16) -item.primer_44.name=.44 Magnum Primer (x16) -item.primer_9.name=Small Caliber Primer (x24) -item.primer_50.name=Large Caliber Primer (x8) -item.primer_buckshot.name=Buckshot Primer (x8) -item.casing_357.name=.357 Magnum Casing (x16) -item.casing_44.name=.44 Magnum Casing (x16) -item.casing_9.name=Small Caliber Casing (x24) -item.casing_50.name=Large Caliber Casing (x8) -item.casing_buckshot.name=Buckshot Casing (x8) -item.assembly_iron.name=Iron Bullet Assembly -item.assembly_steel.name=Lead Bullet Assembly -item.assembly_lead.name=Glass Bullet Assembly -item.assembly_gold.name=Gold Bullet Assembly -item.assembly_schrabidium.name=Schrabidium Bullet Assembly -item.assembly_nightmare.name=Nightmare Bullet Assembly -item.assembly_pip.name=Tainted Bullet Assembly -item.assembly_nopip.name=.44 Magnum Assembly -item.assembly_smg.name=9mm Assembly -item.assembly_uzi.name=.22 LR Assembly -item.assembly_calamity.name=.50 BMG Assembly -item.assembly_lacunae.name=.5mm Assembly - -item.piston_selenium.name=Radial Engine Piston - -tile.block_aluminium.name=Block of Aluminium -tile.block_copper.name=Block of Copper -tile.block_fluorite.name=Block of Fluorite -tile.block_niter.name=Block of Niter -tile.block_red_copper.name=Block of Red Copper -tile.block_steel.name=Block of Steel -tile.block_sulfur.name=Block of Sulfur -tile.block_titanium.name=Block of Titanium -tile.block_tungsten.name=Block of Tungsten -tile.block_uranium.name=Block of Uranium -tile.block_thorium.name=Block of Thorium -tile.block_trinitite.name=Block of Trinitite -tile.block_beryllium.name=Block of Beryllium -tile.block_waste.name=Block of Nuclear Waste -tile.block_scrap.name=Block of Scrap -tile.block_electrical_scrap.name=Block of Electrical Scrap -tile.block_advanced_alloy.name=Block of Advanced Alloy -tile.block_magnetized_tungsten.name=Block of Magnetized Tungsten -tile.block_combine_steel.name=Block of CMB Steel -tile.block_australium.name=Block of Australium -tile.block_weidanium.name=Block of Weidanium -tile.block_reiium.name=Block of Reiium -tile.block_unobtainium.name=Block of Unobtainium -tile.block_daffergon.name=Block of Daffergon -tile.block_verticium.name=Block of Verticium -tile.block_desh.name=Reinforced Block of Desh -tile.block_yellowcake.name=Block of Yellowcake - -tile.ore_aluminium.name=Aluminium Ore -tile.ore_copper.name=Copper Ore -tile.ore_fluorite.name=Fluorite Ore -tile.ore_niter.name=Niter Ore -tile.ore_sulfur.name=Sulfur Ore -tile.ore_titanium.name=Titanium Ore -tile.ore_tungsten.name=Tungsten Ore -tile.ore_uranium.name=Uranium Ore -tile.ore_thorium.name=Thorium Ore -tile.ore_schrabidium.name=Schrabidium Ore -tile.ore_beryllium.name=Beryllium Ore - -tile.ore_nether_uranium.name=Nether Uranium Ore -tile.ore_nether_plutonium.name=Nether Plutonium Ore -tile.ore_nether_tungsten.name=Nether Tungsten Ore -tile.ore_nether_sulfur.name=Nether Sulfur Ore -tile.ore_nether_fire.name=Fire Ore -tile.ore_nether_schrabidium.name=Nether Schrabidium Ore - -tile.ore_tikite.name=Trixite - -tile.ore_australium.name=Australian Ore -tile.ore_weidanium.name=Weidite -tile.ore_reiium.name=Reiite -tile.ore_unobtainium.name=Brightblende Ore -tile.ore_daffergon.name=Dellite -tile.ore_verticium.name=Dollar Green Mineral -tile.ore_rare.name=Rare Earth Ore - -tile.ore_oil.name=Oil Deposit -tile.ore_oil_empty.name=Empty Oil Deposit -tile.ore_oil_sand.name=Tar Sand - -tile.deco_titanium.name=Titanium Deco Block -tile.deco_red_copper.name=Red Copper Deco Block -tile.deco_tungsten.name=Tungsten Deco Block -tile.deco_aluminium.name=Aluminium Deco Block -tile.deco_steel.name=Steel Deco Block -tile.deco_lead.name=Lead Deco Block -tile.deco_beryllium.name=Beryllium Deco Block - -tile.hazmat.name=Hazmat Cloth Block - -tile.reinforced_brick.name=Reinforced Stone -tile.reinforced_glass.name=Reinforced Glass -tile.reinforced_sand.name=Reinforced Sandstone -tile.reinforced_light.name=Reinforced Glowstone -tile.reinforced_lamp_off.name=Reinforced Lamp -tile.reinforced_lamp_on.name=Reinforced Lamp - -tile.concrete.name=Concrete -tile.brick_concrete.name=Concrete Bricks -tile.brick_obsidian.name=Obsidian Bricks -tile.brick_light.name=Light Bricks -tile.asphalt.name=Asphalt - -tile.cmb_brick.name=CMB Steel Tile -tile.cmb_brick_reinforced.name=Reinforced CMB Bricks - -tile.gravel_obsidian.name=Crushed Obsidian - -tile.barbed_wire.name=Barbed Wire -tile.barbed_wire_fire.name=Flaming Barbed Wire -tile.barbed_wire_poison.name=Poisoned Barbed Wire -tile.barbed_wire_acid.name=Caustic Barbed Wire -tile.barbed_wire_wither.name=Withered Barbed Wire -tile.barbed_wire_ultradeath.name=Cloud Barbed Wire - -tile.seal_frame.name=Silo Hatch Frame -tile.seal_controller.name=Silo Hatch Opener -tile.seal_hatch.name=Silo Hatch - -tile.vault_door.name=Vault-Tec Blast Door -tile.blast_door.name=Sliding Blast Door - -item.nugget_uranium.name=Uranium Nugget -item.nugget_plutonium.name=Plutonium Nugget -item.nugget_neptunium.name=Neptunium Nugget -item.ingot_neptunium.name=Neptunium Ingot -item.nugget_lead.name=Lead Nugget -item.ingot_lead.name=Lead Ingot -tile.block_lead.name=Block of Lead -tile.ore_lead.name=Lead Ore - -item.powder_lead.name=Lead Powder -item.powder_neptunium.name=Neptunium Powder -item.powder_schrabidium.name=Schrabidium Powder -item.powder_iron.name=Iron Powder -item.powder_gold.name=Gold Powder -item.powder_aluminium.name=Aluminium Powder -item.powder_beryllium.name=Beryllium Powder -item.powder_copper.name=Copper Powder -item.powder_titanium.name=Titanium Powder -item.powder_tungsten.name=Tungsten Powder -item.powder_uranium.name=Uranium Powder -item.powder_plutonium.name=Plutonium Powder -item.dust.name=Dust -item.powder_coal.name=Coal Powder -item.powder_lapis.name=Lapis Lazuli Powder -item.powder_emerald.name=Emerald Powder -item.powder_diamond.name=Diamond Powder -item.powder_red_copper.name=Red Copper Powder -item.powder_steel.name=Steel Powder -item.powder_magnetized_tungsten.name=Magnetized Tungsten Powder -item.powder_combine_steel.name=CMB Steel Powder -item.powder_lithium.name=Lithium Powder -item.powder_advanced_alloy.name=Advanced Alloy Powder -item.powder_quartz.name=Quartz Powder -item.powder_power.name=Energy Powder -item.powder_iodine.name=Iodine Powder -item.powder_thorium.name=Thorium Powder -item.powder_neodymium.name=Neodymium Powder -item.powder_astatine.name=Astatine Powder -item.powder_caesium.name=Caesium Powder -item.powder_australium.name=Australium Powder -item.powder_weidanium.name=Weidanium Powder -item.powder_reiium.name=Reiium Powder -item.powder_unobtainium.name=Unobtainium Powder -item.powder_daffergon.name=Daffergon Powder -item.powder_verticium.name=Verticium Powder -item.powder_strontium.name=Strontium Powder -item.powder_cobalt.name=Cobalt Powder -item.powder_bromine.name=Bromine Powder -item.powder_niobium.name=Niobium Powder -item.powder_tennessine.name=Tennessine Powder -item.powder_cerium.name=Cerium Powder -item.powder_dura_steel.name=High-Speed Steel Powder -item.powder_polymer.name=Polymer Powder -item.powder_lanthanium.name=Lanthanium Powder -item.powder_actinium.name=Actinium Powder -item.powder_lithium_tiny.name=Tiny Pile of Lithium Powder -item.powder_cobalt_tiny.name=Tiny Pile of Cobalt Powder -item.powder_neodymium_tiny.name=Tiny Pile of Neodymium Powder -item.powder_niobium_tiny.name=Tiny Pile of Niobium Powder -item.powder_cerium_tiny.name=Tiny Pile of Cerium Powder -item.powder_lanthanium_tiny.name=Tiny Pile of Lanthanium Powder -item.powder_actinium_tiny.name=Tiny Pile of Actinium Powder -item.powder_euphemium.name=Euphemium Powder -item.powder_meteorite.name=Meteorite Powder -item.powder_meteorite_tiny.name=Tiny Pile of Meteorite Powder -item.powder_yellowcake.name=Yellowcake -item.powder_magic.name=Pulverized Enchantment -item.redstone_depleted.name=Desaturated Redstone Dust - -item.fragment_neodymium.name=Neodymium Fragment -item.fragment_cobalt.name=Cobalt Fragment -item.fragment_niobium.name=Niobium Fragment -item.fragment_cerium.name=Cerium Fragment -item.fragment_lanthanium.name=Lanthanium Fragment -item.fragment_actinium.name=Actinium Fragment -item.fragment_meteorite.name=Meteorite Fragment - -item.battery_generic.name=Battery -item.battery_advanced.name=Advanced Battery -item.battery_lithium.name=Lithium-Ion Battery -item.battery_schrabidium.name=Schrabidium Battery -item.battery_spark.name=Spark Battery -item.battery_creative.name=Infinite Battery - -item.battery_su.name=SU-Battery -item.battery_su_l.name=Large SU-Battery -item.battery_steam.name=Steam Powered Energy Storage Tank -item.battery_steam_large.name=Large Steam Powered Energy Storage Tank - -item.battery_potato.name=Potato Battery -item.battery_potatos.name=PotatOS - -item.battery_red_cell.name=Redstone Power Cell -item.battery_advanced_cell.name=Advanced Power Cell -item.battery_lithium_cell.name=Lithium-Ion Power Cell -item.battery_schrabidium_cell.name=Schrabidium Power Cell -item.battery_red_cell_6.name=Sixfold Redstone Power Cell -item.battery_advanced_cell_4.name=Quadruple Advanced Power Cell -item.battery_lithium_cell_3.name=Tripple Lithium-Ion Power Cell -item.battery_schrabidium_cell_2.name=Double Schrabidium Power Cell -item.battery_red_cell_24.name=24-Fold Redstone Power Cell -item.battery_advanced_cell_12.name=Twelvefold Advanced Power Cell -item.battery_lithium_cell_6.name=Sixfold Lithium-Ion Power Cell -item.battery_schrabidium_cell_4.name=Quadruple Schrabidium Power Cell -item.battery_spark_cell_6.name=Spark Power Cell -item.battery_spark_cell_25.name=Spark Arcane Car Battery -item.battery_spark_cell_100.name=Spark Arcane Energy Storage Array -item.battery_spark_cell_1000.name=Spark Arcane Mass-Energy Void -item.battery_spark_cell_2500.name=Spark Arcane Dirac Sea -item.battery_spark_cell_10000.name=Spark Solid Space-Time Crystal -item.battery_spark_cell_power.name=Spark Ludicrous Physics-Defying Energy Storage Unit - -item.upgrade_template.name=Machine Upgrade Piece Template -item.upgrade_speed_1.name=Red Machine Upgrade Mk.I -item.upgrade_speed_2.name=Red Machine Upgrade Mk.II -item.upgrade_speed_3.name=Red Machine Upgrade Mk.III -item.upgrade_effect_1.name=Green Machine Upgrade Mk.I -item.upgrade_effect_2.name=Green Machine Upgrade Mk.II -item.upgrade_effect_3.name=Green Machine Upgrade Mk.III -item.upgrade_power_1.name=Blue Machine Upgrade Mk.I -item.upgrade_power_2.name=Blue Machine Upgrade Mk.II -item.upgrade_power_3.name=Blue Machine Upgrade Mk.III -item.upgrade_fortune_1.name=Purple Machine Upgrade Mk.I -item.upgrade_fortune_2.name=Purple Machine Upgrade Mk.II -item.upgrade_fortune_3.name=Purple Machine Upgrade Mk.III -item.upgrade_afterburn_1.name=Pink Machine Upgrade Mk.I -item.upgrade_afterburn_2.name=Pink Machine Upgrade Mk.II -item.upgrade_afterburn_3.name=Pink Machine Upgrade Mk.III -item.upgrade_radius.name=Teal Emitter Upgrade -item.upgrade_health.name=Pink Emitter Upgrade - -item.fusion_core.name=Fusion Core -item.energy_core.name=Makeshift Energy Core -item.fusion_core_infinite.name=Infinite Fusion Core - -item.dynosphere_base.name=Blank Dynosphere -item.dynosphere_desh.name=Desh Dynosphere -item.dynosphere_desh_charged.name=Desh Dynosphere (Charged) -item.dynosphere_schrabidium.name=Schrabidium Dynosphere -item.dynosphere_schrabidium_charged.name=Schrabidium Dynosphere (Charged) -item.dynosphere_euphemium.name=Euphemium Dynosphere -item.dynosphere_euphemium_charged.name=Euphemium Dynosphere (Charged) -item.dynosphere_dineutronium.name=Dineutronium Dynosphere -item.dynosphere_dineutronium_charged.name=Dineutronium Dynosphere (Charged) - -item.plate_iron.name=Iron Plate -item.plate_lead.name=Lead Plate -item.coil_copper.name=Copper Coil -item.coil_copper_torus.name=Ring Coil -item.wire_tungsten.name=Tungsten Wire -item.coil_tungsten.name=Heating Coil -item.tank_steel.name=Steel Tank -item.motor.name=Motor -item.centrifuge_element.name=Centrifuge Element -item.centrifuge_tower.name=Centrifuge Tower -item.reactor_core.name=Breeding Reactor Core -item.pellet_rtg.name=Plutonium 238 Fuel Pellet -item.pellet_rtg_weak.name=Weak Uranium RTG Pellet -item.rtg_unit.name=RTG Unit -item.hazmat_cloth.name=Hazmat Cloth -item.hazmat_cloth_red.name=Advanced Hazmat Cloth -item.hazmat_cloth_grey.name=Lead-Reinforced Hazmat Cloth -item.asbestos_cloth.name=Fire Proximity Cloth -item.filter_coal.name=Activated Carbon Filter -item.tritium_deuterium_cake.name=Tritium-Deuterium-Cake -item.telepad.name=Telepad -item.entanglement_kit.name=Entanglement Kit -item.toothpicks.name=Toothpicks -item.ducttape.name=Duct Tape -item.magnet_dee.name=Dee Magnets -item.magnet_circular.name=Flat Magnet -item.cyclotron_tower.name=Cyclotron Tower -item.plate_dalekanium.name=Angry Metal -item.biomass.name=Biomass -item.biomass_compressed.name=Compressed Biomass -item.component_limiter.name=Stabilizer Component -item.component_emitter.name=Emitter Component -item.catalyst_clay.name=Clay Catalyst - -item.cell_empty.name=Empty Cell -item.cell_uf6.name=Uranium Hexafluorite Cell -item.cell_puf6.name=Plutonium Hexafluorite Cell -item.cell_antimatter.name=Antimatter Cell -item.cell_deuterium.name=Deuterium Cell -item.cell_tritium.name=Tritium Cell -item.cell_sas3.name=Schrabidium Trisulfide Cell -item.cell_anti_schrabidium.name=Antischrabidium Cell -item.singularity.name=Singularity -item.singularity_counter_resonant.name=Contained Counter-Resonant Singularity -item.singularity_super_heated.name=Superheated Resonating Singularity -item.singularity_spark.name=Spark Singularity -item.black_hole.name=Miniature Black Hole -item.crystal_xen.name=Artificial Xen Crystal -item.pellet_antimatter.name=Antimatter Cluster - -item.inf_water.name=Infinite Water Tank -item.inf_deuterium.name=Infinite Deuterium Tank -item.inf_tritium.name=Infinite Tritium Tank -item.inf_coolant.name=Infinite Coolant Tank -item.inf_sulfur.name=Infinite Sulfur Tank -item.inf_diesel.name=Infinite Diesel Tank -item.inf_antimatter.name=Infinite Antimatter Tank -item.inf_antischrabidium.name=Infinite Antischrabidium Tank - -item.oil_canola.name=Raw Canola Oil - -item.pellet_coal.name=Dense Coal Cluster - -item.canister_empty.name=Empty Canister -item.canister_smear.name=Industrial Oil Canister -item.canister_canola.name=Engine Lubricant -item.canister_oil.name=Crude Oil Canister -item.canister_fuel.name=Diesel Canister -item.canister_kerosene.name=Kerosene Canister -item.canister_reoil.name=Canister of Reclaimed Industrial Oil -item.canister_petroil.name=Petroil Canister -item.canister_napalm.name=Napalm B -item.canister_NITAN.name=NITAN© 100 Octane Super Fuel -item.canister_heavyoil.name=Heavy Oil Canister -item.canister_bitumen.name=Bitumen Canister -item.canister_heatingoil.name=Heating Oil Canister -item.canister_naphtha.name=Naphtha Canister -item.canister_lightoil.name=Light Oil Canister -item.canister_biofuel.name=Biofuel Canister -item.gas_empty.name=Empty Gas Tank -item.gas_full.name=Gas Tank -item.gas_petroleum.name=Petroleum Gas Tank -item.gas_biogas.name=Biogas Tank -item.gas_lpg.name=LPG Tank -item.fluid_tank_empty.name=Empty Universal Fluid Tank -item.fluid_tank_full.name=Universal Fluid Tank: -item.fluid_barrel_empty.name=Empty Fluid Barrel -item.fluid_barrel_full.name=Fluid Barrel: -item.fluid_barrel_infinite.name=Infinite Fluid Barrel - -item.rod_empty.name=Empty Rod -item.rod_th232.name=Th232 Rod -item.rod_uranium.name=Uranium Rod -item.rod_u233.name=U233 Rod -item.rod_u235.name=U235 Rod -item.rod_u238.name=U238 Rod -item.rod_plutonium.name=Plutonium Rod -item.rod_pu238.name=Pu238 Rod -item.rod_pu239.name=Pu239 Rod -item.rod_pu240.name=Pu240 Rod -item.rod_neptunium.name=Neptunium Rod -item.rod_lead.name=Lead Rod -item.rod_schrabidium.name=Sa326 Rod -item.rod_solinium.name=Sa327 Rod -item.rod_euphemium.name=Euphemium Rod -item.rod_australium.name=Australium Rod -item.rod_weidanium.name=Weidanium Rod -item.rod_reiium.name=Reiium Rod -item.rod_unobtainium.name=Unobtainium Rod -item.rod_daffergon.name=Daffergon Rod -item.rod_verticium.name=Verticium Rod - -item.rod_dual_empty.name=Empty Dual Rod -item.rod_dual_th232.name=Th232 Dual Rod -item.rod_dual_uranium.name=Uranium Dual Fuel Rod -item.rod_dual_u233.name=U233 Dual Rod -item.rod_dual_u235.name=U235 Dual Rod -item.rod_dual_u238.name=U238 Dual Rod -item.rod_dual_plutonium.name=Plutonium Dual Rod -item.rod_dual_pu238.name=Pu238 Dual Rod -item.rod_dual_pu239.name=Pu239 Dual Rod -item.rod_dual_pu240.name=Pu240 Dual Rod -item.rod_dual_neptunium.name=Neptunium Dual Rod -item.rod_dual_lead.name=Lead Dual Rod -item.rod_dual_schrabidium.name=Sa326 Dual Rod -item.rod_dual_solinium.name=Sa327 Dual Rod - -item.rod_quad_empty.name=Empty Quad Rod -item.rod_quad_th232.name=Th232 Quad Rod -item.rod_quad_uranium.name=Uranium Quad Rod -item.rod_quad_u233.name=U233 Quad Rod -item.rod_quad_u235.name=U235 Quad Rod -item.rod_quad_u238.name=U238 Quad Rod -item.rod_quad_plutonium.name=Plutonium Quad Rod -item.rod_quad_pu238.name=Pu238 Quad Rod -item.rod_quad_pu239.name=Pu239 Quad Rod -item.rod_quad_pu240.name=Pu240 Quad Rod -item.rod_quad_neptunium.name=Neptunium Quad Rod -item.rod_quad_lead.name=Lead Quad Rod -item.rod_quad_schrabidium.name=Sa326 Quad Rod -item.rod_quad_solinium.name=Sa327 Quad Rod - -item.rod_uranium_fuel_depleted.name=Depleted Uranium Fuel Rod -item.rod_dual_uranium_fuel_depleted.name=Depleted Uranium Dual Fuel Rod -item.rod_quad_uranium_fuel_depleted.name=Depleted Uranium Quad Fuel Rod -item.rod_thorium_fuel_depleted.name=Depleted Thorium Fuel Rod -item.rod_dual_thorium_fuel_depleted.name=Depleted Thorium Dual Fuel Rod -item.rod_quad_thorium_fuel_depleted.name=Depleted Thorium Quad Fuel Rod -item.rod_plutonium_fuel_depleted.name=Depleted Plutonium Fuel Rod -item.rod_dual_plutonium_fuel_depleted.name=Depleted Plutonium Dual Fuel Rod -item.rod_quad_plutonium_fuel_depleted.name=Depleted Plutonium Quad Fuel Rod -item.rod_mox_fuel_depleted.name=Depleted MOX Fuel Rod -item.rod_dual_mox_fuel_depleted.name=Depleted MOX Dual Fuel Rod -item.rod_quad_mox_fuel_depleted.name=Depleted MOX Quad Fuel Rod -item.rod_schrabidium_fuel_depleted.name=Depleted Schrabidium Fuel Rod -item.rod_dual_schrabidium_fuel_depleted.name=Depleted Schrabidium Dual Fuel Rod -item.rod_quad_schrabidium_fuel_depleted.name=Depleted Schrabidium Quad Fuel Rod - -item.rod_waste.name=Nuclear Waste Rod -item.rod_dual_waste.name=Nuclear Waste Dual Rod -item.rod_quad_waste.name=Nuclear Waste Quad Rod - -item.gun_rpg.name=Carl Gustav Recoilless Rifle -item.gun_rpg_ammo.name=Rocket -item.gun_stinger.name=FIM-92 Stinger -item.gun_skystinger.name=The One Sky Stinger -item.gun_stinger_ammo.name=Stinger Rocket -item.gun_hk69.name=Grenade Pistol - -item.flame_pony.name=Painting of a Cartoon Pony -item.flame_conspiracy.name=Conspiracy Theory -item.flame_politics.name=Political Topic -item.flame_opinion.name=Own Opinion - -item.pellet_cluster.name=Explosive Pellets -item.pellet_buckshot.name=Lead Pellets -item.pellet_flechette.name=Flechettes -item.powder_fire.name=Flame Powder -item.powder_ice.name=Cryo Powder -item.powder_poison.name=Poison Powder -item.pellet_gas.name=Poison Gas Cartridge -item.magnetron.name=Magnetron -item.powder_thermite.name=Thermite - -item.nuke_starter_kit.name=Atomic Science Starter Kit -item.nuke_commercially_kit.name=Atomic Science Kit for Commercial Uses -item.nuke_advanced_kit.name=Atomic Science Advanced Kit -item.gadget_kit.name=The Gadget Kit -item.boy_kit.name=Little Boy Kit -item.man_kit.name=Fat Man Kit -item.mike_kit.name=Ivy Mike Kit -item.tsar_kit.name=Tsar Bomba Kit -item.fleija_kit.name=F.L.E.I.J.A. Kit -item.multi_kit.name=Multi Purpose Bomb Kit -item.custom_kit.name=Custom Nuke Kit -item.grenade_kit.name=Grenade Kit -item.nuke_electric_kit.name=Electronic Engineer's Kit -item.prototype_kit.name=Prototype Kit -item.missile_kit.name=Missile Kit -item.t45_kit.name=T45 Power Armor Kit -item.euphemium_kit.name=Euphemium Kit -item.solinium_kit.name=Solinium Kit -item.hazmat_kit.name=Hazmat Kit -item.hazmat_red_kit.name=Advanced Hazmat Kit -item.hazmat_grey_kit.name=High-Performance Hazmat Kit - -tile.waste_earth.name=Dead Grass -tile.waste_trinitite.name=Trinitite Ore -tile.waste_trinitite_red.name=Red Trinitite Ore -tile.waste_log.name=Charred Log -tile.waste_planks.name=Charred Wooden Planks - -item.trinitite.name=Trinitite -item.nuclear_waste.name=Nuclear Waste -item.nuclear_waste_tiny.name=Tiny Pile of Nuclear Waste -item.waste_uranium.name=Depleted Uranium Fuel -item.waste_thorium.name=Depleted Thorium Fuel -item.waste_plutonium.name=Depleted Plutonium Fuel -item.waste_mox.name=Depleted MOX Fuel -item.waste_schrabidium.name=Depleted Schrabidium Fuel -item.scrap.name=Scrap - -item.ingot_uranium_fuel.name=Ingot of Uranium Fuel -item.ingot_thorium_fuel.name=Ingot of Thorium Fuel -item.ingot_plutonium_fuel.name=Ingot of Plutonium Fuel -item.ingot_mox_fuel.name=Ingot of MOX Fuel -item.ingot_schrabidium_fuel.name=Ingot of Schrabidium Fuel - -item.nugget_uranium_fuel.name=Nugget of Uranium Fuel -item.nugget_thorium_fuel.name=Nugget of Thorium Fuel -item.nugget_plutonium_fuel.name=Nugget of Plutonium Fuel -item.nugget_mox_fuel.name=Nugget of MOX Fuel -item.nugget_schrabidium_fuel.name=Nugget of Schrabidium Fuel - -item.grenade_generic.name=Grenade -item.grenade_strong.name=Enhanced Grenade -item.grenade_frag.name=Frag Grenade -item.grenade_fire.name=Flame Frag Grenade -item.grenade_shrapnel.name=Shrapnel Grenade -item.grenade_cluster.name=Cluster Bomb -item.grenade_flare.name=Signal Flare -item.grenade_electric.name=Lightning Bomb -item.grenade_poison.name=Poison Grenade -item.grenade_gas.name=Gas Grenade -item.grenade_pulse.name=Impulse Grenade -item.grenade_plasma.name=Plasma Grenade -item.grenade_tau.name=Tau Grenade -item.grenade_schrabidium.name=Schrabidium Grenade -item.grenade_lemon.name=Combustible Lemon -item.grenade_gascan.name=Tossable Gas Can -item.grenade_mk2.name=Mk 2 Grenade "Ambassador Pineapple" -item.grenade_aschrab.name=Tossable Antischrabidium Cell -item.grenade_nuke.name=Mark VI Drill Grenade -item.grenade_nuclear.name=Nuka Grenade -item.grenade_zomg.name=Negative Energy Pair Annihilation Grenade -item.grenade_black_hole.name=Black Hole Grenade -item.grenade_cloud.name=Jar of Cloud -item.grenade_pink_cloud.name=Jar of Pink Cloud -item.ullapool_caber.name=Ullapool Caber -item.grenade_smart.name=Smart Grenade -item.grenade_mirv.name=MIRV Grenade -item.grenade_breach.name=Breaching Grenade -item.grenade_burst.name=Digger Grenade - -item.grenade_if_generic.name=IF - Grenade -item.grenade_if_he.name=IF - HE Grenade -item.grenade_if_bouncy.name=IF - Bouncy Grenade -item.grenade_if_sticky.name=IF - Sticky Grenade -item.grenade_if_impact.name=IF - Impact Grenade -item.grenade_if_incendiary.name=IF - Incendiary Grenade -item.grenade_if_toxic.name=IF - Toxic Grenade -item.grenade_if_concussion.name=IF - Concussion Grenade -item.grenade_if_brimstone.name=IF - Tossable Brimstone Mine -item.grenade_if_mystery.name=IF - M.-Grenade -item.grenade_if_spark.name=IF - S.-Grenade -item.grenade_if_hopwire.name=IF - Vortex Hopwire -item.grenade_if_null.name=IF - Null Grenade - -item.rod_uranium_fuel.name=Uranium Fuel Rod -item.rod_dual_uranium_fuel.name=Uranium Dual Fuel Rod -item.rod_quad_uranium_fuel.name=Uranium Quad Fuel Rod -item.rod_thorium_fuel.name=Thorium Fuel Rod -item.rod_dual_thorium_fuel.name=Thorium Dual Fuel Rod -item.rod_quad_thorium_fuel.name=Thorium Quad Fuel Rod -item.rod_plutonium_fuel.name=Plutonium Fuel Rod -item.rod_dual_plutonium_fuel.name=Plutonium Dual Fuel Rod -item.rod_quad_plutonium_fuel.name=Plutonium Quad Fuel Rod -item.rod_mox_fuel.name=MOX Fuel Rod -item.rod_dual_mox_fuel.name=MOX Dual Fuel Rod -item.rod_quad_mox_fuel.name=MOX Quad Fuel Rod -item.rod_schrabidium_fuel.name=Schrabidium Fuel Rod -item.rod_dual_schrabidium_fuel.name=Schrabidium Dual Fuel Rod -item.rod_quad_schrabidium_fuel.name=Schrabidium Quad Fuel Rod - -item.rod_water.name=Water Cell -item.rod_dual_water.name=Dual Water Cell -item.rod_quad_water.name=Quad Water Cell - -item.rod_coolant.name=Coolant Cell -item.rod_dual_coolant.name=Dual Coolant Cell -item.rod_quad_coolant.name=Quad Coolant Cell - -item.rod_lithium.name=Lithium Rod -item.rod_dual_lithium.name=Dual Lithium Rod -item.rod_quad_lithium.name=Quad Lithium Rod - -item.rod_tritium.name=Tritium Cell -item.rod_dual_tritium.name=Dual Tritium Cell -item.rod_quad_tritium.name=Quad Tritium Cell - -item.levitation_unit.name=Gravity Manipulator -item.thermo_unit_empty.name=Thermic Distribution Unit -item.thermo_unit_endo.name=Coldness Distribution Unit -item.thermo_unit_exo.name=Heat Distribution Unit - -item.bomb_waffle.name=Waffle of Mass Destruction -item.schnitzel_vegan.name=Vegan Schnitzel -item.apple_schrabidium.name=Schrabidium Apple -item.cotton_candy.name=Radioactive Cotton Candy -item.tem_flakes.name=Tem Flakes -item.glowing_stew.name=Glowing Mushroom Stew -item.lemon.name="Lemon" -item.definitelyfood.name=TotallyNotDirt-Brand MRE -item.loops.name=Lööps -item.loop_stew.name=IT Breakfast -item.fooditem.name=food item - -tile.frozen_grass.name=Frozen Grass -tile.frozen_dirt.name=Frozen Dirt -tile.frozen_log.name=Frozen Log -tile.frozen_planks.name=Frozen Planks - -tile.tape_recorder.name=Tape Recorder -tile.steel_poles.name=Steel Pole -tile.pole_top.name=Antenna Top -tile.pole_satellite_receiver.name=Satellite Dish -tile.steel_wall.name=Steel Wall -tile.steel_corner.name=Steel Wall Corner -tile.steel_roof.name=Flat Steel Roof -tile.steel_beam.name=Steel Beam -tile.steel_scaffold.name=Steel Scaffold - -item.gun_revolver_iron.name=Simple Revolver -item.gun_revolver.name=Enhanced Revolver -item.gun_revolver_saturnite.name=Saturnite Shooter -item.gun_revolver_gold.name=Golden Revolver -item.gun_revolver_lead.name=Nuka Revolver -item.gun_revolver_schrabidium.name=Schrabidium Revolver -item.gun_revolver_cursed.name=Cursed Revolver -item.gun_revolver_nightmare.name=Nightmare Revolver (Original) -item.gun_revolver_nightmare2.name=Nightmare Revolver (Dark) -item.gun_revolver_pip.name=Lil' Pipsqueak -item.gun_revolver_nopip.name=Novac -item.gun_revolver_blackjack.name=Blackjack Five-Shooter -item.gun_revolver_red.name=Red Key Revolver -item.gun_calamity.name=Calamity -item.gun_calamity_dual.name=Saddle Gun -item.gun_minigun.name=CZ53 Personal Minigun -item.gun_avenger.name=CZ57 Avenger Minigun -item.gun_lacunae.name=CZ33 Abaddon -item.gun_fatman.name=M42 Nuclear Catapult "Fat Man" -item.gun_proto.name=M42 Nuclear Catapult "Proto MIRV" -item.gun_mirv.name=M42 Nuclear Catapult "Experimental MIRV" -item.gun_bf.name=M42_2 Nuclear Catapult "Antimatter Launcher" -item.gun_mp40.name=Submachine Gun -item.gun_uzi.name=IMI Uzi -item.gun_uzi_silencer.name=IMI Uzi with Silencer -item.gun_uzi_saturnite.name=Saturnite Uzi -item.gun_uzi_saturnite_silencer.name=Saturnite Uzi with Silencer -item.gun_uboinik.name=Uboinik -item.gun_lever_action.name=Mare's Leg (Original) -item.gun_bolt_action.name=Dream Bolt-Action Rifle (Original) -item.gun_lever_action_dark.name=Mare's Leg (Dark) -item.gun_bolt_action_green.name=Dream Bolt-Action Rifle (Green) -item.gun_bolt_action_saturnite.name=Saturnite Rifle -item.gun_lever_action_sonata.name=Flipped Mare's Leg -item.gun_lever_action_sonata_2.name=§cSonata's Microphone§r -item.gun_b92.name=§9B92 Energy Pistol§r -item.gun_b93.name=§cB93 Energy Mod§r -item.gun_xvl1456.name=XVL1456 Tau Cannon Prototype -item.gun_osipr.name=Overwatch Standard Issue Pulse Rifle -item.gun_immolator.name=The Immolator -item.gun_cryolator.name=The Cryolator -item.gun_mp.name=Pacifist's Machine Gun -item.gun_zomg.name=Singularity Powered Annihilation Ray "ZOMG Cannon" -item.gun_emp.name=EMP Ray -item.gun_super_shotgun.name=Super Shotgun -item.gun_moist_nugget.name=Mosin-Nagant -item.gun_revolver_inverted.name=Flipped Revolver -item.gun_jack.name=Jackhammer -item.gun_spark.name=Spark Plug -item.gun_hp.name=HPP Lazerjet -item.gun_euthanasia.name=Euthanasia -item.gun_defabricator.name=Defabricator -item.gun_dampfmaschine.name=Totally Not a Joke Weapon -item.gun_folly.name=Prototype Digamma "Folly" - -item.gun_revolver_iron_ammo.name=Bullet -item.gun_revolver_ammo.name=Lead Bullet -item.gun_revolver_gold_ammo.name=Golden Bullet -item.gun_revolver_lead_ammo.name=Glass Covered Nuclear Bullet -item.gun_revolver_schrabidium_ammo.name=Schrabidium Bullet -item.gun_revolver_cursed_ammo.name=Steel Bullet -item.gun_revolver_nightmare_ammo.name=Nightmare Bullet -item.gun_revolver_nightmare2_ammo.name=Laser Buckshot -item.gun_revolver_pip_ammo.name=Tainted Bullet -item.gun_revolver_nopip_ammo.name=.44 Magnum Bullet -item.gun_calamity_ammo.name=.50 BMG Round -item.gun_lacunae_ammo.name=5mm Round -item.gun_fatman_ammo.name=Mini Nuke -item.gun_mirv_ammo.name=Eightfold MIRV -item.gun_bf_ammo.name=Mk.V Compact AMAT-Artillery Shell - Type B.F. -item.gun_mp40_ammo.name=Submachine Gun Round -item.gun_uzi_ammo.name=.22 LR Round -item.gun_uboinik_ammo.name=12x70 Buckshot -item.gun_lever_action_ammo.name=12x74 Buckshot -item.gun_bolt_action_ammo.name=12x74 Slug -item.gun_b92_ammo.name=§9B92 Energy Cell§r -item.gun_xvl1456_ammo.name=Depleted Uranium-235 Box -item.gun_osipr_ammo.name=Dark Energy Pulse Plug -item.gun_osipr_ammo2.name=Combine Ball -item.gun_immolator_ammo.name=Immolator Fuel -item.gun_cryolator_ammo.name=Cryo Cell -item.gun_mp_ammo.name=Small Propellantless Machine Gun Round -item.gun_emp_ammo.name=Energy Cell -item.gun_jack_ammo.name=Quadruple Shotgun Shell -item.gun_spark_ammo.name=Electromagnetic Cartridge -item.gun_hp_ammo.name=Ink Cartridge -item.gun_euthanasia_ammo.name=Syringe -item.gun_defabricator_ammo.name=Defabricator Energy Cell - -item.ammo_12gauge.name=12 Gauge Buckshot -item.ammo_12gauge_incendiary.name=12 Gauge Buckshot (Incendiary) -item.ammo_20gauge.name=20 Gauge Buckshot -item.ammo_20gauge_slug.name=20 Gauge Brenneke Slug -item.ammo_20gauge_flechette.name=20 Gauge Flechette Shell -item.ammo_20gauge_incendiary.name=20 Gauge Buckshot (Incendiary) -item.ammo_20gauge_shock.name=20 Gauge Buckshot (Shock) -item.ammo_20gauge_caustic.name=20 Gauge Buckshot (Caustic) -item.ammo_20gauge_explosive.name=20 Gauge Buckshot (Explosive) -item.ammo_20gauge_wither.name=20 Gauge Buckshot (Withering) -item.ammo_5mm.name=5mm Round -item.ammo_5mm_explosive.name=5mm Round (Explosive) -item.ammo_5mm_du.name=5mm Round (DU) -item.ammo_50bmg.name=.50 BMG Round -item.ammo_50bmg_incendiary.name=.50 BMG Round (Incendiary) -item.ammo_50bmg_explosive.name=.50 BMG Round (Explosive) -item.ammo_50bmg_du.name=.50 BMG Round (DU) -item.ammo_9mm.name=9mm Round -item.ammo_9mm_ap.name=9mm Round (Armor Piercing) -item.ammo_9mm_du.name=9mm Round (DU) -item.ammo_22lr.name=.22 LR Round -item.ammo_22lr_ap.name=.22 LR Round (Armor Piercing) -item.ammo_folly.name=Silver Bullet (Original) -item.ammo_folly_nuclear.name=Silver Bullet (Nuclear) -item.ammo_folly_du.name=Silver Bullet (DU, Non-Explosive) -item.ammo_44.name=.44 Magnum Bullet -item.ammo_44_ap.name=.44 Magnum Bullet (Armor Piercing) -item.ammo_44_du.name=.44 Magnum Bullet (DU) -item.ammo_44_pip.name=.44 Magnum Bullet (Boxcar) -item.ammo_44_bj.name=.44 Magnum Bullet (Boat) -item.ammo_rocket.name=84mm Rocket -item.ammo_rocket_he.name=84mm Rocket (HE) -item.ammo_rocket_incendiary.name=84mm Rocket (Incendiary) -item.ammo_rocket_shrapnel.name=84mm Rocket (Shrapnel) -item.ammo_rocket_emp.name=84mm Rocket (Pulse) -item.ammo_rocket_glare.name=84mm Rocket (Red Glare) -item.ammo_rocket_sleek.name=84mm Rocket (IF-R&D) -item.ammo_grenade.name=40mm Grenade -item.ammo_grenade_he.name=40mm Grenade (HE) -item.ammo_grenade_incendiary.name=40mm Grenade (Incendiary) -item.ammo_grenade_toxic.name=40mm Grenade (Chemical) -item.ammo_grenade_sleek.name=40mm Grenade (IF-R&D) - -item.folly_shell.name=Silver Bullet Casing -item.folly_bullet.name=12.8cm Starmetal High-Energy Shell -item.folly_bullet_nuclear.name=12.8cm Nuclear Shell -item.folly_bullet_du.name=12.8cm DU-Shell - -item.cordite.name=Cordite -item.plate_kevlar.name=Kevlar-Ceramic Compound - -item.weaponized_starblaster_cell.name=§cRigged Star Blaster Energy Cell§r - -item.turret_light_ammo.name=Light MG Turret Ammo Box -item.turret_heavy_ammo.name=Heavy MG Turret Ammunition -item.turret_rocket_ammo.name=Rocket Turret 2x4 Ammunition -item.turret_flamer_ammo.name=Flamer Turret Fuel Tanks -item.turret_tau_ammo.name=Tau Turret Uranium Ammo -item.turret_spitfire_ammo.name=AA-Shell -item.turret_cwis_ammo.name=CIWS 20mm Ammo Drum -item.turret_cheapo_ammo.name=6x24 Cheapo Turret Ammunition - -item.clip_revolver_iron.name=Box of Iron Rounds -item.clip_revolver.name=Box of .357 Rounds -item.clip_revolver_gold.name=Small Coffer of Golden Bullets -item.clip_revolver_schrabidium.name=Schrabidium Ammo Container -item.clip_rpg.name=Rocket Container -item.clip_xvl1456.name=Large Isotope Box -item.clip_osipr.name=AR2 Magazine -item.clip_immolator.name=Tank of Immolator Fuel -item.clip_cryolator.name=Tank of Cryolator Fuel -item.clip_revolver_lead.name=Box of Nuclear Bullets -item.clip_revolver_cursed.name=Britannia Military Standard Issue Pisol Magazine -item.clip_fatman.name=Six Pack of Mini Nukes -item.clip_mirv.name=Three-In-One Pack of Mini MIRVs -item.clip_bf.name=BF-Shell Double Pack -item.clip_mp.name=Britannia Military Standard Issue Assult Rifle Magazine -item.clip_mp40.name=9mm SMG Magazine -item.clip_uzi.name=32rnd .22 LR Magazine -item.clip_uboinik.name=Box of 12x70 Buckshot Rounds -item.clip_lever_action.name=Box of 12x74 Buckshot Rounds -item.clip_bolt_action.name=Box of 12x74 Slugs -item.clip_emp.name=Small Pack of Energy Cells -item.clip_revolver_nightmare.name=Bag of Bullets -item.clip_revolver_nightmare2.name=Belt with Laser Buckshot -item.clip_revolver_pip.name=Speedloader with Tainted Bullets -item.clip_revolver_nopip.name=Box of .44 Rounds -item.clip_stinger.name=Pack of Stinger Rockets -item.clip_jack.name=Box of Quadruple 12x70 Buckshot Rounds -item.clip_spark.name=Large Electromagnetic Cartridge -item.clip_hp.name=Ink Tanks -item.clip_euthanasia.name=Last Aid Kit -item.clip_defabricator.name=Belt with Defabricator Energy Cells - -item.ammo_container.name=Ammo Container - -tile.block_schrabidium.name=Block of Schrabidium -item.plate_gold.name=Gold Plate - -item.syringe_empty.name=Empty Syringe -item.syringe_antidote.name=Antidote -item.syringe_poison.name=Poisonous Injection -item.syringe_awesome.name=AWESOME -item.syringe_metal_empty.name=Metal Syringe -item.syringe_metal_stimpak.name=Stimpak -item.syringe_metal_medx.name=Med-X -item.syringe_metal_psycho.name=Psycho -item.syringe_metal_super.name=Super Stimpak -item.syringe_taint.name=Watery Taint Injection -item.med_bag.name=Doctor's Bag -item.radaway.name=RadAway -item.radaway_strong.name=Strong RadAway -item.radaway_flush.name=Elite RadAway -item.radx.name=Rad-X -item.pirfenidone.name=Pirfenidone -item.pill_iodine.name=Iodine Pill -item.plan_c.name=Plan C -item.med_ipecac.name=Ipecac Syrup -item.med_ptsd.name=PTSD Medication -item.med_schiziphrenia.name=Schizophrenia Medication -item.gas_mask_filter.name=Gas Mask Filter - -item.stealth_boy.name=Stealth Device - -entity.hbm.entity_bullet.name=Bullet -entity.hbm.entity_rocket.name=Rocket -entity.hbm.entity_schrabnel.name=Schrabnel -entity.entity_mob_nuclear_creeper.name=Nuclear Creeper -entity.entity_mob_tainted_creeper.name=Tainted Creeper -entity.entity_mob_hunter_chopper.name=Hunter Chopper -entity.entity_cyber_crab.name=Cyber Crab - -item.cap_aluminium.name=Aluminium Cap -item.hull_small_steel.name=Small Steel Shell -item.hull_small_aluminium.name=Small Aluminium Shell -item.hull_big_steel.name=Big Steel Shell -item.hull_big_aluminium.name=Big Aluminium Shell -item.hull_big_titanium.name=Big Titanium Shell -item.fins_flat.name=Flat Steel Casing -item.fins_small_steel.name=Small Steel Grid Fins -item.fins_big_steel.name=Big Steel Grid Fins -item.fins_tri_steel.name=Large Steel Fins -item.fins_quad_titanium.name=Small Titanium Fins -item.sphere_steel.name=Steel Sphere -item.pedestal_steel.name=Steel Pedestal -item.dysfunctional_reactor.name=Dysfunctional Nuclear Reactor - -item.rotor_steel.name=Large Steel Rotor -item.generator_steel.name=Generator Body -item.blade_titanium.name=Titanium Blade -item.turbine_titanium.name=Titanium Steam Turbine -item.generator_front.name=Generator Front -item.blade_tungsten.name=Tungsten Reinforced Blade -item.turbine_tungsten.name=Reinforced Turbofan Blades - -item.combine_scrap.name=CMB Scrap Metal -item.chopper_head.name=Hunter Chopper Cockpit -item.chopper_gun.name=Emplacement Gun -item.chopper_torso.name=Hunter Chopper Body -item.chopper_tail.name=Hunter Chopper Tail -item.chopper_wing.name=Hunter Chopper Wing -item.chopper_blades.name=Hunter Chopper Rotor Blades - -item.igniter.name=Igniter -item.watch.name=Broken Pocket Watch -item.apple_euphemium.name=Euphemium Apple -item.ingot_euphemium.name=Euphemium Ingot -item.nugget_euphemium.name=Euphemium Nugget -item.rod_quad_euphemium.name=Burned Out Quad Schrabidium Fuel Rod -item.plate_euphemium.name=Euphemium Compound Plate -item.plate_dineutronium.name=Dineutronium Compound Plate -item.plate_desh.name=Desh Compound Plate - -item.euphemium_helmet.name=Euphemium Helmet -item.euphemium_plate.name=Euphemium Chestplate -item.euphemium_legs.name=Euphemium Leggings -item.euphemium_boots.name=Euphemiums Boots - -item.schrabidium_helmet.name=Schrabidium Helmet -item.schrabidium_plate.name=Schrabidium Chestplate -item.schrabidium_legs.name=Schrabidium Leggings -item.schrabidium_boots.name=Schrabidium Boots -item.schrabidium_sword.name=Schrabidium Sword -item.schrabidium_pickaxe.name=Schrabidium Pickaxe -item.schrabidium_axe.name=Schrabidium Axe -item.schrabidium_shovel.name=Schrabidium Shovel -item.schrabidium_hoe.name=Schrabidium Hoe - -item.jetpack_boost.name=Boostpack -item.jetpack_fly.name=Jetpack -item.jetpack_break.name=Breakpack -item.jetpack_vector.name=Vectored Jetpack -item.jetpack_tank.name=Jetpack Reserve Fuel Tank - -item.gun_kit_1.name=Gun Oil -item.gun_kit_2.name=Gun Repair Kit - -item.chainsaw.name=Chainsaw -item.crowbar.name=Mk.V Crate Opening Device "Crowbar" - -item.wrench.name=Pipe Wrench -item.wrench_flipped.name=Blade on a Wrench -item.memespoon.name=§eMarket Gardener - -item.mask_of_infamy.name=Mask of Infamy - -tile.det_cord.name=Det Cord -tile.det_charge.name=Explosive Charge -tile.det_nuke.name=Nuclear Charge -tile.red_barrel.name=Explosive Barrel -tile.yellow_barrel.name=Radioactive Barrel - -item.designator.name=Short Range Target Designator -item.designator_range.name=Long Range Target Designator -item.designator_manual.name=Manual Target Designator -item.missile_assembly.name=Small Missile Assembly -item.missile_generic.name=High Explosive Missile -item.missile_anti_ballistic.name=Anti Ballistic Missile (WIP) -item.missile_incendiary.name=Incendiary Missile -item.missile_cluster.name=Cluster Missile -item.missile_buster.name=Bunker Buster -item.missile_strong.name=Strong HE Missile -item.missile_incendiary_strong.name=Strong Incendiary Missile -item.missile_cluster_strong.name=Strong Cluster Missile -item.missile_buster_strong.name=Enhanced Bunker Buster -item.missile_burst.name=Spare Missile -item.missile_inferno.name=Inferno Missile G.R.N. Mk.II -item.missile_rain.name=Bomblet Rain -item.missile_drill.name=The Concrete Cracker -item.missile_nuclear.name=Nuclear Missile -item.missile_nuclear_cluster.name=Thermonuclear Missile -item.missile_endo.name=Endothermic Missile -item.missile_exo.name=Exothermic Missile -item.missile_doomsday.name=Doomsday Missile -item.missile_taint.name=Taint-Tipped Missile -item.missile_micro.name=Micro-Nuclear Missile -item.missile_bhole.name=Black Hole Missile -item.missile_schrabidium.name=Schrabidium Missile -item.missile_emp.name=EMP Missile - -item.missile_carrier.name=HTR-01 Carrier Rocket -item.sat_mapper.name=Surface Mapping Satellite -item.sat_scanner.name=Satellite with Depth-Resource Scanning Module -item.sat_radar.name=Radar Survey Satellite -item.sat_laser.name=Orbital Death Ray -item.sat_foeq.name=PEAF - Mk.I FOEQ Duna Probe with experimental Nuclear Propulsion -item.sat_resonator.name=Xenium Resonator Satellite -item.sat_miner.name=Asteroid Mining Ship -item.sat_chip.name=Satellite ID-Chip -item.sat_interface.name=Satellite Control Interface -tile.sat_mapper.name=Surface Mapping Satellite (Deco Block) -tile.sat_scanner.name=Satellite with Depth-Resource Scanning Module (Deco Block) -tile.sat_radar.name=Radar Survey Satellite (Deco Block) -tile.sat_laser.name=Orbital Death Ray (Deco Block) -tile.sat_foeq.name=PEAF - Mk.I FOEQ Duna Probe with experimental Nuclear Propulsion (Deco Block) -tile.sat_resonator.name=Xenium Resonator Satellite (Deco Block) - -item.hazmat_helmet.name=Hazmat Helmet -item.hazmat_plate.name=Hazmat Chestplate -item.hazmat_legs.name=Hazmat Leggings -item.hazmat_boots.name=Hazmat Boots -item.hazmat_helmet_red.name=Advanced Hazmat Helmet -item.hazmat_plate_red.name=Advanced Hazmat Chestplate -item.hazmat_legs_red.name=Advanced Hazmat Leggings -item.hazmat_boots_red.name=Advanced Hazmat Boots -item.hazmat_helmet_grey.name=High-Performance Hazmat Helmet -item.hazmat_plate_grey.name=High-Performance Hazmat Chestplate -item.hazmat_legs_grey.name=High-Performance Hazmat Leggings -item.hazmat_boots_grey.name=High-Performance Hazmat Boots -item.hazmat_paa_helmet.name=PaA Battle Hazmat Suit Helmet -item.hazmat_paa_plate.name=PaA Battle Hazmat Suit Chestplate -item.hazmat_paa_legs.name=PaA Battle Hazmat Suit Leggings -item.hazmat_paa_boots.name=PaA Battle Hazmat Suit Boots -item.asbestos_helmet.name=Fire Proximity Helmet -item.asbestos_plate.name=Fire Proximity Chestplate -item.asbestos_legs.name=Fire Proximity Leggings -item.asbestos_boots.name=Fire Proximity Boots - -item.paa_plate.name=PaA Chest Protection Plate -item.paa_legs.name=PaA Leg Reinforcements -item.paa_boots.name=PaA "good ol' shoes" - -item.jackt.name=Damn Stylish Ballistic Jacket -item.jackt2.name=Damn Stylish Ballistic Jacket 2: Tokyo Drift - -item.goggles.name=Protection Goggles -item.gas_mask.name=Gas Mask -item.gas_mask_m65.name=M65-Z Gas Mask -item.oxy_mask.name=Oxygen Mask -item.t45_helmet.name=T45 Power Armor Helmet -item.t45_plate.name=T45 Power Armor Chestplate -item.t45_legs.name=T45 Power Armor Leggings -item.t45_boots.name=T45 Power Armor Boots - -tile.mush.name=Glowing Mushroom -tile.waste_mycelium.name=Glowing Mycelium - -tile.sellafield_slaked.name=Slaked Sellafite -tile.sellafield_0.name=Sellafite -tile.sellafield_1.name=Hot Sellafite -tile.sellafield_2.name=Boiling Sellafite -tile.sellafield_3.name=Blazing Sellafite -tile.sellafield_4.name=Infernal Sellafite -tile.sellafield_core.name=Sellafite-Corium - -item.warhead_generic_small.name=Small Warhead -item.warhead_generic_medium.name=Medium Warhead -item.warhead_generic_large.name=Large Warhead -item.warhead_incendiary_small.name=Small Incendiary Warhead -item.warhead_incendiary_medium.name=Medium Incendiary Warhead -item.warhead_incendiary_large.name=Large Incendiary Warhead -item.warhead_cluster_small.name=Small Cluster Warhead -item.warhead_cluster_medium.name=Medium Cluster Warhead -item.warhead_cluster_large.name=Large Cluster Warhead -item.warhead_buster_small.name=Small Bunker Buster Warhead -item.warhead_buster_medium.name=Medium Bunker Buster Warhead -item.warhead_buster_large.name=Large Bunker Buster Warhead -item.warhead_nuclear.name=Nuclear Warhead -item.warhead_mirvlet.name=MIRV -item.warhead_mirv.name=Thermonuclear Warhead -item.warhead_thermo_endo.name=Endothermic Warhead -item.warhead_thermo_exo.name=Exothermic Warhead -item.fuel_tank_small.name=Small Fuel Tank -item.fuel_tank_medium.name=Medium Fuel Tank -item.fuel_tank_large.name=Large Fuel Tank -item.thruster_small.name=Small Thruster -item.thruster_medium.name=Medium Thruster -item.thruster_large.name=Large Thruster - -item.wand_k.name=Construction Wand -item.wand_s.name=Structure Wand -item.wand_d.name=Debug Wand -item.analyzer.name=Analyzer - -item.screwdriver.name=Screwdriver -item.overfuse.name=Singularity Screwdriver - -item.steel_helmet.name=Steel Helmet -item.steel_plate.name=Steel Chestplate -item.steel_legs.name=Steel Leggings -item.steel_boots.name=Steel Boots -item.titanium_helmet.name=Titanium Helmet -item.titanium_plate.name=Titanium Chestplate -item.titanium_legs.name=Titanium Leggings -item.titanium_boots.name=Titanium Boots -item.alloy_helmet.name=Advanced Alloy Helmet -item.alloy_plate.name=Advanced Alloy Chestplate -item.alloy_legs.name=Advanced Alloy Leggings -item.alloy_boots.name=Advanced Alloy Boots -item.cmb_helmet.name=CMB Steel Helmet -item.cmb_plate.name=CMB Steel Chestplate -item.cmb_legs.name=CMB Steel Leggings -item.cmb_boots.name=CMB Steel Boots -item.security_helmet.name=Security Helmet -item.security_plate.name=Security Chestplate -item.security_legs.name=Security Leggings -item.security_boots.name=Security Boots - -item.steel_sword.name=Steel Sword -item.steel_pickaxe.name=Steel Pickaxe -item.steel_axe.name=Steel Axe -item.steel_shovel.name=Steel Shovel -item.steel_hoe.name=Steel Hoe -item.titanium_sword.name=Titanium Sword -item.titanium_pickaxe.name=Titanium Pickaxe -item.titanium_axe.name=Titanium Axe -item.titanium_shovel.name=Titanium Shovel -item.titanium_hoe.name=Titanium Hoe -item.alloy_sword.name=Advanced Alloy Sword -item.alloy_pickaxe.name=Advanced Alloy Pickaxe -item.alloy_axe.name=Advanced Alloy Axe -item.alloy_shovel.name=Advanced Alloy Shovel -item.alloy_hoe.name=Advanced Alloy Hoe -item.cmb_sword.name=CMB Steel Sword -item.cmb_pickaxe.name=CMB Steel Pickaxe -item.cmb_axe.name=CMB Steel Axe -item.cmb_shovel.name=CMB Steel Shovel -item.cmb_hoe.name=CMB Steel Hoe -item.elec_sword.name=Stunstick -item.elec_pickaxe.name=Impact Drill -item.elec_axe.name=Electric Chainsaw -item.elec_shovel.name=Spiral Drill -item.desh_sword.name=Worker's Alloy Sword -item.desh_pickaxe.name=Worker's Alloy Pickaxe -item.desh_axe.name=Worker's Alloy Axe -item.desh_shovel.name=Worker's Alloy Shovel -item.desh_hoe.name=Worker's Alloy Hoe - -tile.red_cable.name=Red Copper Cable - -tile.block_meteor.name=Meteorite Block -tile.block_meteor_broken.name=Broken Meteorite Block -tile.block_meteor_cobble.name=Meteorite Cobblestone -tile.block_meteor_molten.name=Hot Meteorite Cobblestone -tile.block_meteor_treasure.name=Meteorite Treasure Block - -item.cape_radiation.name=Cape (Radiation) -item.cape_gasmask.name=Cape (Gas Mask) -item.cape_schrabidium.name=Cape (Schrabidic) -item.cape_hbm.name=Hbm's Cape -item.cape_dafnik.name=Dafnik's Cape -item.cape_lpkukin.name=LPkukin's Cape -item.cape_vertice.name=Lord Vertice's Cape -item.cape_codered_.name=codered_'s Cape -item.cape_ayy.name=Ayy's Cape -item.cape_nostalgia.name=DrNostalgia's Cape - -tile.machine_converter_he_rf.name=HE to RF Converter -tile.machine_converter_rf_he.name=RF to HE Converter -tile.machine_transformer.name=10k-20Hz Transformer -tile.machine_transformer_dnt.name=DNT-20Hz Transformer -tile.machine_transformer_20.name=10k-1Hz Transformer -tile.machine_transformer_dnt_20.name=DNT-1Hz Transformer - -tile.vent_chlorine.name=Chlorine Vent -tile.vent_cloud.name=Cloud Vent -tile.vent_pink_cloud.name=Pink Cloud Vent - -tile.absorber.name=Radiation Absorber -tile.absorber_red.name=Enhanced Radiation Absorber -tile.absorber_green.name=Advanced Radiation Absorber -tile.absorber_pink.name=Elite Radiation Absorber -tile.decon.name=Player Decontaminator - -item.schrabidium_hammer.name=Schrabidium Hammer -item.shimmer_sledge.name=Shimmer Sledge -item.shimmer_axe.name=Shimmer Axe -item.euphemium_stopper.name=Stopper -item.matchstick.name=Matchstick -item.remote.name=Broken Remote - -item.shimmer_head.name=Heavy Hammer Head -item.shimmer_axe_head.name=Heavy Axe Head -item.shimmer_handle.name=Reinforced Polymer Handle - -item.redcoil_capacitor.name=Redcoil Capacitor -item.detonator.name=Detonator -item.detonator_multi.name=Multi Detonator -item.detonator_laser.name=Laser Detonator -item.detonator_deadman.name=Dead Man's Detonator -item.detonator_de.name=Dead Man's Explosive -item.crate_caller.name=Supply Drop Requester -item.bomb_caller.name=Airstrike Designator -item.meteor_remote.name=Meteorite Remote - -item.ingot_hes.name=Highly Enriched Schrabidium Fuel Ingot -item.ingot_les.name=Low Enriched Schrabidium Fuel Ingot -item.nugget_hes.name=Highly Enriched Schrabidium Fuel Nugget -item.nugget_les.name=Low Enriched Schrabidium Fuel Nugget - -item.pellet_schrabidium.name=Pure Schrabidium Watz Pellet -item.pellet_hes.name=HES Watz Pellet -item.pellet_mes.name=MES Watz Pellet -item.pellet_les.name=LES Watz Pellet -item.pellet_beryllium.name=Beryllium Moderator Pellet -item.pellet_neptunium.name=Neptunium Watz Pellet -item.pellet_lead.name=Lead Reflector Pellet -item.pellet_advanced.name=Advanced Watz Performance Improver - -item.titanium_filter.name=Titanium Filter - -tile.mud_block.name=Poisonous Mud -fluid.mud_fluid=Poisonous Mud -item.bucket_mud.name=Bucket of Poisonous Mud -tile.acid_block.name=Acid -fluid.acid_fluid=Acid -item.bucket_acid.name=Bucket of Acid -tile.toxic_block.name=Stereotypical Green Ooze -fluid.toxic_fluid=Stereotypical Green Ooze -item.bucket_toxic.name=Bucket of Stereotypical Green Ooze -item.tank_waste_0.name=Mud Container -item.tank_waste_1.name=Mud Container -item.tank_waste_2.name=Mud Container -item.tank_waste_3.name=Mud Container -item.tank_waste_4.name=Mud Container -item.tank_waste_5.name=Mud Container -item.tank_waste_6.name=Mud Container -item.tank_waste_7.name=Mud Container -item.tank_waste_8.name=Mud Container - -item.can_empty.name=Empty Can -item.can_smart.name='Smart' Energy Drink -item.can_creature.name='Creature' Energy Drink -item.can_redbomb.name='Red Bomb' Energy Drink -item.can_mrsugar.name='Dr. Sugar' Soft Drink -item.can_overcharge.name=Overcharge Delirium XT -item.can_luna.name=Black Mesa Luna - Dark Cola -item.bottle_empty.name=Empty Bomb-Shaped Bottle -item.bottle_nuka.name=Bottle of Nuka Cola -item.bottle_cherry.name=Bottle of Nuka Cherry -item.bottle_quantum.name=Bottle of Nuka Cola Quantum -item.bottle_sparkle.name=Bottle of S~Cola -item.bottle_rad.name=Bottle of S~Cola RAD -item.bottle2_empty.name=Empty Bottle -item.bottle2_korl.name=Korl -item.bottle2_fritz.name=Fritz Cola -item.bottle2_korl_special.name=The First Korl -item.bottle2_fritz_special.name=The First Fritz Cola -item.bottle2_sunset.name=Sunset Sarsaparilla -item.chocolate_milk.name=Chocolate Milk -item.cap_nuka.name=Nuka Cola Bottle Cap -item.cap_quantum.name=Nuka Cola Quantum Bottle Cap -item.cap_sparkle.name=S~Cola Bottle Cap -item.cap_rad.name=S~Cola RAD Bottle Cap -item.cap_korl.name=Korl Bottle Cap -item.cap_fritz.name=Fritz Cola Bottle Cap -item.cap_sunset.name=Sunset Sarsaparilla Bottle Cap -item.cap_star.name=Sunset Sarsaparilla Star Cap -item.ring_pull.name=Ring Pull - -item.canteen_13.name=Vault 13 Canteen -item.canteen_vodka.name=Stylish Flask - -item.bottle_opener.name=Hbm's Own Self-Made Bottle Opener - -item.blades_aluminium.name=Aluminium Shredder Blades -item.blades_gold.name=Golden Shredder Blades -item.blades_iron.name=Iron Shredder Blades -item.blades_steel.name=Steel Shredder Blades -item.blades_titanium.name=Titanium Shredder Blades -item.blades_advanced_alloy.name=Advanced Shredder Blades -item.blades_combine_steel.name=CMB Shredder Blades -item.blades_schrabidium.name=Schrabidium Shredder Blades - -item.stamp_stone_flat.name=Flat Stamp (Stone) -item.stamp_stone_plate.name=Plate Stamp (Stone) -item.stamp_stone_wire.name=Wire Stamp (Stone) -item.stamp_stone_circuit.name=Circuit Stamp (Stone) -item.stamp_iron_flat.name=Flat Stamp (Iron) -item.stamp_iron_plate.name=Plate Stamp (Iron) -item.stamp_iron_wire.name=Wire Stamp (Iron) -item.stamp_iron_circuit.name=Circuit Stamp (Iron) -item.stamp_steel_flat.name=Flat Stamp (Steel) -item.stamp_steel_plate.name=Plate Stamp (Steel) -item.stamp_steel_wire.name=Wire Stamp (Steel) -item.stamp_steel_circuit.name=Circuit Stamp (Steel) -item.stamp_titanium_flat.name=Flat Stamp (Titanium) -item.stamp_titanium_plate.name=Plate Stamp (Titanium) -item.stamp_titanium_wire.name=Wire Stamp (Titanium) -item.stamp_titanium_circuit.name=Circuit Stamp (Titanium) -item.stamp_obsidian_flat.name=Flat Stamp (Obsidian) -item.stamp_obsidian_plate.name=Plate Stamp (Obsidian) -item.stamp_obsidian_wire.name=Wire Stamp (Obsidian) -item.stamp_obsidian_circuit.name=Circuit Stamp (Obsidian) -item.stamp_schrabidium_flat.name=Flat Stamp (Schrabidium) -item.stamp_schrabidium_plate.name=Plate Stamp (Schrabidium) -item.stamp_schrabidium_wire.name=Wire Stamp (Schrabidium) -item.stamp_schrabidium_circuit.name=Circuit Stamp (Schrabidium) -item.stamp_357.name=.357 Magnum Stamp -item.stamp_44.name=.44 Magnum Stamp -item.stamp_9.name=Small Caliber Stamp -item.stamp_50.name=Large Caliber Stamp - -item.part_lithium.name=Box of Lithium Dust -item.part_beryllium.name=Box of Beryllium Dust -item.part_carbon.name=Box of Carbon Dust -item.part_copper.name=Box of Copper Dust -item.part_plutonium.name=Box of Plutonium Dust - -item.rune_blank.name=Blank Catalyst Matrix -item.rune_isa.name=Cool Catalyst Matrix -item.rune_dagaz.name=Balanced Catalyst Matrix -item.rune_hagalaz.name=Rough Catalyst Matrix -item.rune_jera.name=Multiplicative Catalyst Matrix -item.rune_thurisaz.name=Additive Catalyst Matrix - -item.ams_catalyst_blank.name=Blank Reaction Catalyst -item.ams_catalyst_aluminium.name=Aluminium Reaction Catalyst -item.ams_catalyst_beryllium.name=Beryllium Reaction Catalyst -item.ams_catalyst_caesium.name=Caeseium Reaction Catalyst -item.ams_catalyst_cerium.name=Cerium Reaction Catalyst -item.ams_catalyst_cobalt.name=Cobalt Reaction Catalyst -item.ams_catalyst_copper.name=Copper Reaction Catalyst -item.ams_catalyst_euphemium.name=Euphemium Reaction Catalyst -item.ams_catalyst_iron.name=Iron Reaction Catalyst -item.ams_catalyst_lithium.name=Lithium Reaction Catalyst -item.ams_catalyst_niobium.name=Niobium Reaction Catalyst -item.ams_catalyst_strontium.name=Strontium Reaction Catalyst -item.ams_catalyst_thorium.name=Thorium Reaction Catalyst -item.ams_catalyst_tungsten.name=Tungsten Reaction Catalyst -item.ams_catalyst_schrabidium.name=Schrabidium Reaction Catalyst -item.ams_catalyst_dineutronium.name=Dineutronium Reaction Catalyst - -item.ams_focus_blank.name=Blank Stabilizer Focus -item.ams_focus_limiter.name=Limiting Stabilizer Focus -item.ams_focus_booster.name=Boosting Stabilizer Focus - -item.ams_muzzle.name=Ray-Emission Muzzle - -item.ams_core_sing.name=Vibrant Singularity (AMS Core) -item.ams_core_wormhole.name=Tiny Wormhole (AMS Core) -item.ams_core_eyeofharmony.name=Eye of Harmony (AMS Core) -item.ams_core_thingy.name=Thingy (AMS Core) - -item.crystal_energy.name=Energy Crystal -item.pellet_coolant.name=Coolant Cluster - -item.linker.name=Telelinker -item.reactor_sensor.name=Reactor Remote Sensor -item.oil_detector.name=Oil Reservoir Detector -item.geiger_counter.name=Handheld Geiger Counter -tile.geiger.name=Geiger Counter -item.survey_scanner.name=Survey Scanner - -item.thermo_element.name=Thermoelectric Element -item.limiter.name=Generator Limiter - -item.multitool_dig.name=Power Fist (Digging Claw) -item.multitool_silk.name=Power Fist (Silk Touch Claw) -item.multitool_ext.name=Power Fist (Ore Extractor) -item.multitool_miner.name=Power Fist (Extracting Mining Laser) -item.multitool_hit.name=Power Fist (Fist) -item.multitool_beam.name=Power Fist (Zapper) -item.multitool_sky.name=Power Fist (Crack the Sky) -item.multitool_mega.name=Power Fist (Super Punch) -item.multitool_joule.name=Power Fist (Giga Joule) -item.multitool_decon.name=Power Fist (Decontaminator) - -item.australium_iii.name=Mark III Life Extender -item.australium_iv.name=Mark IV Life Extender -item.australium_v.name=Mark V Life Extender - -item.weapon_saw.name=Doctor Assisted Homicide -item.weapon_bat.name=Richard's Default -item.weapon_bat_nail.name=The Cliché -item.weapon_golf_club.name=Russian Mobster's Club -item.weapon_pipe_rusty.name=The Attitude Adjuster -item.weapon_pipe_lead.name=The Manual Override -item.reer_graar.name=The Reer Graar - -item.letter.name=Express Mail -item.polaroid.name=The Polaroid -item.glitch.name=Glitch -item.book_secret.name=3-596-50802-9 -item.book_of_.name=The Book of -item.burnt_bark.name=Burnt Bark - -item.crystal_horn.name=Crystal Horn -item.crystal_charred.name=Charred Crystal -item.ingot_lanthanium.name=Semi-Stable Lanthanium Ingot -item.ingot_actinium.name=Semi-Stable Actinium Ingot - -tile.dummy_block.name=Dummy Block -tile.dummy_port.name=Dummy Block (Electricity Port) - -item.chopper.name=Hunter Chopper - -item.nothing.name=Nothing - -tile.crystal_virus.name=Dark Crystal -tile.crystal_hardened.name=Hardened Dark Crystal -tile.crystal_pulsar.name=Pulsating Crystal - -tile.taint.name=Taint -tile.residue.name=Cloud Residue -item.powder_cloud.name=Cloud Residue - -tile.cheater_virus.name=Gelid Euphemium -tile.cheater_virus_seed.name=Unstable Euphemium Schrabide Block - -item.mysteryshovel.name=Brittle Spade -tile.ntm_dirt.name=Dirt -item.memory.name=item.null.name \ No newline at end of file diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 53e2aff13..efdcb62a9 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -675,6 +675,7 @@ chem.XENON=Linde Xenon Cycle chem.XENON_OXY=Boosted Linde Xenon Cycle chem.YELLOWCAKE=Yellowcake Production +commands.satellite.no_active_satellites=No active satellites found! commands.satellite.no_satellite=No satellite using this frequency found! commands.satellite.not_a_satellite=The held item is not a satellite! commands.satellite.satellite_descended=Satellite successfully descended. @@ -694,6 +695,7 @@ container.barrel=Barrel container.bat9000=Big-Ass Tank 9000 container.battery=Energy Storage container.bombMulti=Multi Purpose Bomb +container.casingBag=Bullet Casing Bag container.catalyticReformer=Catalytic Reformer container.centrifuge=Centrifuge container.chemplant=Chemical Plant @@ -752,6 +754,7 @@ container.launchPad=Launch Pad container.launchPadRusted=Launch Pad container.launchTable=Large Launch Pad container.leadBox=Containment Box +container.machineAmmoPress=Ammo Press container.machineArcWelder=Arc Welder container.machineArcFurnaceLarge=Arc Furnace container.machineBoiler=Oil Heater @@ -772,7 +775,9 @@ container.machineLargeTurbine=Industrial Steam Turbine container.machineLiquefactor=Liquefactor container.machineMixer=Industrial Mixer container.machineOreSlopper=B.O.P. +container.machinePyroOven=Pyrolysis Oven container.machineRefinery=Oil Refinery +container.machineRotaryFurnace=Rotary Furnace container.machineSelenium=Radial Performance Engine container.machineShredder=Shredder container.machineSILEX=SILEX @@ -859,6 +864,17 @@ container.wasteDrum=Spent Fuel Pool Drum container.watzPowerplant=Watz Power Plant container.zirnox=ZIRNOX Nuclear Reactor +copytool.filter=Filter +copytool.invertRedstone=Redstone Inverted +copytool.invertFilter=Filter Inverted +copytool.orientation=Orientation +copytool.pattern0=Red Side +copytool.pattern1=Orange Side +copytool.pattern2=Yellow Side +copytool.pattern3=Green Side +copytool.pattern4=Blue Side +copytool.pattern5=Purple Side + crucible.aa=Advanced Alloy Production crucible.abronze=Arsenic Bronze Production crucible.bbronze=Bismuth Bronze Production @@ -877,6 +893,17 @@ crucible.steelPig=Steel Production from Pig Iron crucible.steelWrought=Steel Production from Wrought Iron crucible.tcalloy=Technetium Steel Production +damage.inset=Resistances when worn in set: +damage.item=Resistances when worn: +damage.category.EXPL=Explosion +damage.category.FIRE=Fire +damage.category.PROJ=Projectile +damage.exact.drown=Drowning +damage.exact.fall=Fall damage +damage.exact.LASER=Laser +damage.exact.onFire=Afterburn +damage.other=Other + death.attack.acid=%1$s fell into acid. death.attack.acidPlayer=%1$s was dissolved by %2$s. death.attack.ams=%1$s was bathed in deadly particles that have yet to be named by human science. @@ -935,6 +962,23 @@ death.attack.tau=%1$s was riddeled by %2$s using negatively charged tauons. death.attack.tauBlast=%1$s charged the XVL1456 for too long and was blown into pieces. death.attack.teleporter=%1$s was teleported into nothingness. +death.sedna.electric=%1$s was fried. +death.sedna.electric.attacker=%1$s was fried by %2$s. +death.sedna.explosive=%1$s was blown up. +death.sedna.explosive.attacker=%1$s was blown up by %2$s. +death.sedna.fire=%1$s was incinerated. +death.sedna.fire.attacker=%1$s was incinerated by %2$s. +death.sedna.laser=%1$s was pulverized. +death.sedna.laser.attacker=%1$s was pulverized by %2$s. +death.sedna.microwave=%1$s was microwaved. +death.sedna.microwave.attacker=%1$s was microwaved by %2$s. +death.sedna.subatomic=%1$s was atomized. +death.sedna.subatomic.attacker=%1$s was atomized by %2$s. +death.sedna.other=%1$s was killed. +death.sedna.other.attacker=%1$s was killed by %2$s. +death.sedna.physical=%1$s was shot. +death.sedna.physical.attacker=%1$s was shot by %2$s. + desc.gui.assembler.warning=§cError:§r This machine requires an assembly template! desc.gui.chemplant.warning=§cError:§r This machine requires an chemistry template! desc.gui.gasCent.enrichment=§2Enrichment§r$Uranium enrichment requires cascades.$Two-centrifuge cascades will give$uranium fuel, four-centrifuge cascades$will give total separation. @@ -1344,14 +1388,20 @@ hazard.sand=Eye Irritants hbm.key=NTM Hotkeys hbm.key.calculator=Calculator +hbm.key.copyToolAlt=Copy Tool: Switch Paste +hbm.key.copyToolCtrl=Copy Tool: Paste to Pipes hbm.key.craneLoad=Load/Unload Crane hbm.key.craneMoveDown=Move Crane Backward hbm.key.craneMoveLeft=Move Crane Left hbm.key.craneMoveRight=Move Crane Right hbm.key.craneMoveUp=Move Crane Forward -hbm.key.dash=Dash (Unbind from Crouch in config) -hbm.key.toggleBack=Toggle Backpack +hbm.key.dash=Dash +hbm.key.gunPrimary=Primary Fire +hbm.key.gunSecondary=Secondary Fire +hbm.key.gunTertitary=Gun Sights +hbm.key.toggleBack=Toggle Jetpack hbm.key.toggleHUD=Toggle HUD +hbm.key.trainInv=Train Inventory hbm.key.reload=Reload hbmfluid.amat=Antimatter @@ -1416,6 +1466,8 @@ hbmfluid.iongel=Ionic Gel hbmfluid.kerosene=Kerosene hbmfluid.kerosene_reform=Jet Fuel hbmfluid.lava=Lava +hbmfluid.lead=Liquid Lead +hbmfluid.lead_hot=Hot Liquid Lead hbmfluid.lightoil=Light Oil hbmfluid.lightoil_crack=Cracked Light Oil hbmfluid.lightoil_ds=Desulfurized Light Oil @@ -1440,6 +1492,9 @@ hbmfluid.oil_ds=Desulfurized Crude Oil hbmfluid.oxygen=Liquid Oxygen hbmfluid.oxyhydrogen=Oxyhydrogen hbmfluid.pain=Pandemonium(III)tantalite Solution +hbmfluid.perfluoromethyl=Perfluoromethyl +hbmfluid.perfluoromethyl_cold=Cold Perfluoromethyl +hbmfluid.perfluoromethyl_hot=Hot Perfluoromethyl hbmfluid.peroxide=Hydrogen Peroxide hbmfluid.petroil=Petroil hbmfluid.petroil_leaded=Leaded Petroil @@ -1519,6 +1574,7 @@ hbmmat.bakelite=Bakelite hbmmat.beryllium=Beryllium hbmmat.bismuth=Bismuth hbmmat.bismuthbronze=Bismuth Bronze +hbmmat.bone=Ivory hbmmat.borax=Borax hbmmat.boron=Boron hbmmat.bscco=BSCCO @@ -1550,6 +1606,7 @@ hbmmat.gold=Gold hbmmat.gold198=Gold-198 hbmmat.graphene=Graphene hbmmat.graphite=Graphite +hbmmat.gunmetal=Gunmetal hbmmat.hematite=Hematite hbmmat.iron=Iron hbmmat.lanthanum=Lanthanium @@ -1578,7 +1635,9 @@ hbmmat.plutonium240=Plutonium-240 hbmmat.plutonium241=Plutonium-241 hbmmat.plutoniumrg=Reactor-Grade Plutonium hbmmat.polonium210=Polonium-210 +hbmmat.polycarbonate=Hard Plastic hbmmat.polymer=Polymer +hbmmat.pvc=PVC hbmmat.radium226=Radium-226 hbmmat.rareearth=Rare Earth hbmmat.redphosphorus=Red Phosphorus @@ -1610,9 +1669,11 @@ hbmmat.uranium233=Uranium-233 hbmmat.uranium235=Uranium-235 hbmmat.uranium238=Uranium-238 hbmmat.watzmud=Poisonous Mud +hbmmat.weaponsteel=Weapon Steel hbmmat.whitephosphorus=White Phosphorus +hbmmat.wood=Wood hbmmat.workersalloy=Desh -hbmmat.wroughtiron=Wroght Iron +hbmmat.wroughtiron=Wrought Iron hbmmat.zirconium=Zirconium matshape.block=%s Block @@ -1851,6 +1912,94 @@ item.ammo_shell_apfsds_du.name=240mm APFSDS-DU item.ammo_shell_apfsds_t.name=240mm APFSDS-T item.ammo_shell_explosive.name=240mm HE Shell item.ammo_shell_w9.name=240mm W9 Nuclear Shell +item.ammo_secret.bmg50_equestrian.name=.50 BMG Demolisher +item.ammo_secret.folly_nuke.name=Silver Bullet, Nuclear +item.ammo_secret.folly_sm.name=Silver Bullet +item.ammo_secret.g12_equestrian.name=12 Gauge Railway Spike Shot +item.ammo_secret.m44_equestrian.name=.44 Magnum Head-Exploder +item.ammo_standard.b75.name=.75 Bolt +item.ammo_standard.b75_exp.name=.75 Bolt (Explosive) +item.ammo_standard.b75_inc.name=.75 Bolt (Incendiary) +item.ammo_standard.bmg50_ap.name=.50 BMG Round (Armor Piercing) +item.ammo_standard.bmg50_du.name=.50 BMG Round (Depleted Uranium) +item.ammo_standard.bmg50_fmj.name=.50 BMG Round (Full Metal Jacket) +item.ammo_standard.bmg50_jhp.name=.50 BMG Round (Jacketed Hollow Point) +item.ammo_standard.bmg50_sp.name=.50 BMG Round (Soft Point) +item.ammo_standard.capacitor.name=Capacitor +item.ammo_standard.capacitor_ir.name=Capacitor (Low Wavelength) +item.ammo_standard.capacitor_overcharge.name=Capacitor (Overcharge) +item.ammo_standard.coil_ferrouranium.name=Coilgun Ferrouranium Ball +item.ammo_standard.coil_tungsten.name=Coilgun Tungsten Ball +item.ammo_standard.flame_balefire.name=Flamer Fuel, Balefire +item.ammo_standard.flame_diesel.name=Flamer Fuel, Diesel +item.ammo_standard.flame_gas.name=Flamer Fuel, Gas +item.ammo_standard.flame_napalm.name=Flamer Fuel, Napalm +item.ammo_standard.g10.name=10 Gauge Buckshot +item.ammo_standard.g10_du.name=10 Gauge Uranium Buckshot +item.ammo_standard.g10_shrapnel.name=10 Gauge Shrapnel Buckshot +item.ammo_standard.g10_slug.name=10 Gauge Slug +item.ammo_standard.g12.name=12 Gauge Buckshot +item.ammo_standard.g12_anthrax.name=12 Gauge Anthrax Shell +item.ammo_standard.g12_bp.name=12 Gauge Black Powder Buckshot +item.ammo_standard.g12_bp_magnum.name=12 Gauge Black Powder Magnum Shell +item.ammo_standard.g12_bp_slug.name=12 Gauge Black Powder Slug +item.ammo_standard.g12_explosive.name=12 Gauge Explosive Shell +item.ammo_standard.g12_flechette.name=12 Gauge Flechette Shell +item.ammo_standard.g12_magnum.name=12 Gauge Magnum Shell +item.ammo_standard.g12_phosphorus.name=12 Gauge Phosphorus Shell +item.ammo_standard.g12_slug.name=12 Gauge Slug +item.ammo_standard.g26_flare.name=26mm Signal Flare +item.ammo_standard.g26_flare_supply.name=26mm Signal Flare (Supply Airdrop) +item.ammo_standard.g26_flare_weapon.name=26mm Signal Flare (Weapon Airdrop) +item.ammo_standard.g40_demo.name=40mm Grenade, Demolition +item.ammo_standard.g40_he.name=40mm Grenade, High-Explosive +item.ammo_standard.g40_heat.name=40mm Grenade, Shaped Charge +item.ammo_standard.g40_inc.name=40mm Grenade, Incendiary +item.ammo_standard.g40_phosphorus.name=40mm Grenade, White Phosphorus +item.ammo_standard.m357_ap.name=.357 Magnum Round (Armor Piercing) +item.ammo_standard.m357_bp.name=.357 Magnum Round (Black Powder) +item.ammo_standard.m357_express.name=.357 Magnum Round (FMJ Express) +item.ammo_standard.m357_fmj.name=.357 Magnum Round (Full Metal Jacket) +item.ammo_standard.m357_jhp.name=.357 Magnum Round (Jacketed Hollow Point) +item.ammo_standard.m357_sp.name=.357 Magnum Round (Soft Point) +item.ammo_standard.m44_ap.name=.44 Magnum Round (Armor Piercing) +item.ammo_standard.m44_bp.name=.44 Magnum Round (Black Powder) +item.ammo_standard.m44_express.name=.44 Magnum Round (FMJ Express) +item.ammo_standard.m44_fmj.name=.44 Magnum Round (Full Metal Jacket) +item.ammo_standard.m44_jhp.name=.44 Magnum Round (Jacketed Hollow Point) +item.ammo_standard.m44_sp.name=.44 Magnum Round (Soft Point) +item.ammo_standard.nuke_demo.name=Mini Nuke, Demolition +item.ammo_standard.nuke_high.name=Mini Nuke, High Yield +item.ammo_standard.nuke_hive.name=Rocket Hive +item.ammo_standard.nuke_standard.name=Mini Nuke +item.ammo_standard.nuke_tots.name=Mini Nuke, Tiny Tots +item.ammo_standard.p22_ap.name=.22 LR Round (Armor Piercing) +item.ammo_standard.p22_fmj.name=.22 LR Round (Full Metal Jacket) +item.ammo_standard.p22_jhp.name=.22 LR Round (Jacketed Hollow Point) +item.ammo_standard.p22_sp.name=.22 LR Round (Soft Point) +item.ammo_standard.p9_ap.name=9mm Round (Armor Piercing) +item.ammo_standard.p9_fmj.name=9mm Round (Full Metal Jacket) +item.ammo_standard.p9_jhp.name=9mm Round (Jacketed Hollow Point) +item.ammo_standard.p9_sp.name=9mm Round (Soft Point) +item.ammo_standard.r556_ap.name=5.56mm Round (Armor Piercing) +item.ammo_standard.r556_fmj.name=5.56mm Round (Full Metal Jacket) +item.ammo_standard.r556_jhp.name=5.56mm Round (Jacketed Hollow Point) +item.ammo_standard.r556_sp.name=5.56mm Round (Soft Point) +item.ammo_standard.r762_ap.name=7.62mm Round (Armor Piercing) +item.ammo_standard.r762_du.name=7.62mm Round (Depleted Uranium) +item.ammo_standard.r762_fmj.name=7.62mm Round (Full Metal Jacket) +item.ammo_standard.r762_jhp.name=7.62mm Round (Jacketed Hollow Point) +item.ammo_standard.r762_sp.name=7.62mm Round (Soft Point) +item.ammo_standard.rocket_demo.name=Rocket, Demolition +item.ammo_standard.rocket_he.name=Rocket, High-Explosive +item.ammo_standard.rocket_heat.name=Rocket, Shaped Charge +item.ammo_standard.rocket_inc.name=Rocket, Incendiary +item.ammo_standard.rocket_phosphorus.name=Rocket, White Phosphorus +item.ammo_standard.stone.name=Ball and Powder +item.ammo_standard.stone_ap.name=Flint and Powder +item.ammo_standard.stone_iron.name=Iron Ball and Powder +item.ammo_standard.stone_shot.name=Shot and Powder +item.ammo_standard.tau_uranium.name=Depleted Uranium-235 Box item.ammo_stinger_rocket.name=Stinger Rocket item.ammo_stinger_rocket_he.name=Stinger Rocket (HE) item.ammo_stinger_rocket_incendiary.name=Stinger Rocket (Incendiary) @@ -2277,11 +2426,21 @@ item.card_qos.name=Queen of Spades item.cart.crate.name=Crate Cart item.cart.destroyer.name=Scrap Destroying Cart item.cart.empty.name=Minecart +item.cart.powder.name=Powder Cart +item.cart.semtex.name=Semtex Cart item.casing_357.name=.357 Magnum Casings item.casing_44.name=.44 Magnum Casings item.casing_50.name=Large Caliber Casings item.casing_9.name=Small Caliber Casings -item.casing_buckshot.name=Buckshot Casings +item.casing_bag.name=Bullet Casing Bag +item.casing_buckshot.name=Buckshot Casing +item.casing.small.name=Small Gunmetal Casing +item.casing.small_steel.name=Small Weapon Steel Casing +item.casing.large.name=Large Gunmetal Casing +item.casing.large_steel.name=Large Weapon Steel Casing +item.casing.shotshell.name=Black Powder Shotshell Casing +item.casing.buckshot.name=Plastic Shotshell Casing +item.casing.buckshot_advanced.name=Advanced Shotshell Casing item.catalyst_clay.name=Clay Catalyst item.catalytic_converter.name=Catalytic Converter item.cbt_device.name=CBT Device @@ -2333,6 +2492,7 @@ item.chopper_head.name=Hunter Chopper Cockpit item.chopper_tail.name=Hunter Chopper Tail item.chopper_torso.name=Hunter Chopper Body item.chopper_wing.name=Hunter Chopper Wing +item.chunk_ore.malachite.name=Malachite Chunk item.chunk_ore.rare.name=Rare Earth Ore Chunk item.cigarette.name=FFI-Brand Cigarette item.cinnebar.name=Cinnabar @@ -2409,6 +2569,7 @@ item.cladding_lead.name=Lead Cladding item.cladding_obsidian.name=Obsidian Skin item.cladding_paint.name=Lead Paint item.cladding_rubber.name=Rubber Cladding +item.clay_tablet.name=Clay Tablet item.clip_bf.name=BF-Shell Double Pack item.clip_bolt_action.name=Box of 12x74 Slugs item.clip_cryolator.name=Tank of Cryolator Fuel @@ -2602,6 +2763,7 @@ item.dnt_boots.name=dienautronium boots item.dnt_legs.name=dineuterium legs item.dnt_helmet.name=dinotroniumu helmet item.dnt_plate.name=dineutrom chestplate +item.dnt_sword.name=dinuatureum sword item.door_bunker.name=Bunker Door item.door_metal.name=Metal Door item.door_office.name=Office Door @@ -2832,7 +2994,11 @@ item.grenade_tau.name=Tau Grenade item.grenade_zomg.name=Negative Energy Pair Annihilation Grenade item.glyphid_gland.name= Gland item.glyphid_gland_empty.name= Glyphid's Fluid Gland +item.gun_am180.name=Silenced Submachine Gun item.gun_ar15.name=Josh +item.gun_autoshotgun.name=Auto Shotgun +item.gun_autoshotgun_sexy.name=Sexy +item.gun_autoshotgun_shredder.name=Shredder item.gun_avenger.name=CZ57 Avenger Minigun item.gun_b92.name=§9B92 Energy Pistol§r item.gun_b92_ammo.name=§9B92 Energy Cell§r @@ -2850,6 +3016,7 @@ item.gun_bolter_digamma.name=Digamma Gun item.gun_calamity.name=Buzzsaw item.gun_calamity_ammo.name=.50 BMG Round (LEGACY) item.gun_calamity_dual.name=Saddle Gun +item.gun_carbine.name=Carbine item.gun_chemthrower.name=Chemthrower item.gun_coilgun.name=Coilgun item.gun_congolake.name=Congo Lake @@ -2862,6 +3029,8 @@ item.gun_deagle.name=Big Iron item.gun_defabricator.name=Defabricator item.gun_defabricator_ammo.name=Defabricator Energy Cell item.gun_detonator.name=Laser Detonator +item.gun_double_barrel.name=An Old Classic +item.gun_double_barrel_sacred_dragon.name=Sacred Dragon item.gun_emp.name=EMP Gun item.gun_emp_ammo.name=Energy Cell item.gun_euthanasia.name=Euthanasia @@ -2869,10 +3038,20 @@ item.gun_euthanasia_ammo.name=Syringe item.gun_fatman.name=M42 Nuclear Catapult "Fat Man" item.gun_fatman_ammo.name=Mini Nuke (LEGACY) item.gun_fireext.name=Fire Extinguisher -item.gun_flamer.name=Mister Topaz +item.gun_flamer.name=Flamethrower +item.gun_flamer_daybreaker.name=Daybreaker +item.gun_flamer_topaz.name=Mister Topaz +item.gun_flaregun.name=Flare Gun item.gun_flechette.name=Flechette Rifle -item.gun_folly.name=Prototype Digamma "Folly" +item.gun_folly.name=Folly +item.gun_g3.name=Assault Rifle item.gun_glass_cannon.name=The Glass Cannon +item.gun_greasegun.name=Grease Gun +item.gun_hangman.name=Hangman +item.gun_heavy_revolver.name=Heavy Revolver +item.gun_heavy_revolver_lilmac.name=Little Macintosh +item.gun_heavy_revolver_protege.name=Protège +item.gun_henry.name=Lever Action Rifle item.gun_hk69.name=Grenade Pistol item.gun_hp.name=HPP Lazerjet item.gun_hp_ammo.name=Ink Cartridge @@ -2886,20 +3065,32 @@ item.gun_kit_2.name=Gun Repair Kit item.gun_ks23.name=Samuel the Big Shotgun item.gun_lacunae.name=CZ33 Abaddon item.gun_lacunae_ammo.name=5mm Round (LEGACY) +item.gun_lag.name=Comically Long Pistol +item.gun_lasrifle.name=Laser Rifle item.gun_lever_action.name=Mare's Leg (Original) item.gun_lever_action_ammo.name=12x74 Buckshot (LEGACY) item.gun_lever_action_dark.name=Mare's Leg (Dark) item.gun_lever_action_sonata.name=Flipped Mare's Leg item.gun_lever_action_sonata_2.name=§cSonata's Microphone§r +item.gun_liberator.name=Liberator +item.gun_light_revolver.name=Break-Action Revolver +item.gun_light_revolver_atlas.name=Atlas +item.gun_light_revolver_dani.name=Day And Night item.gun_lunatic_marksman.name=Lunatic Sniper Rifle item.gun_m2.name=Ma Deuce -item.gun_minigun.name=CZ53 Personal Minigun +item.gun_maresleg.name=Lever Action Shotgun +item.gun_maresleg_akimbo.name=Lever Action Shotguns +item.gun_maresleg_broken.name=Broken +item.gun_minigun.name=Minigun +item.gun_minigun_lacunae.name=Lacunae item.gun_mirv.name=M42 Nuclear Catapult "Experimental MIRV" item.gun_mirv_ammo.name=Eightfold MIRV (LEGACY) +item.gun_missile_launcher.name=Missile Launcher item.gun_moist_nugget.name=Mosin-Nagant item.gun_mp.name=Pacifist's Machine Gun item.gun_mp40.name=Submachine Gun item.gun_mp40_ammo.name=Submachine Gun Round (LEGACY) +item.gun_pepperbox.name=Pepperbox item.gun_pm_ammo.name=Small Propellantless Machine Gun Round item.gun_mymy.name=Nietes item.gun_osipr.name=Overwatch Standard Issue Pulse Rifle @@ -2907,7 +3098,7 @@ item.gun_osipr_ammo.name=Dark Energy Pulse Plug item.gun_osipr_ammo2.name=Combine Ball item.gun_panzerschreck.name=Panzerschreck item.gun_proto.name=M42 Nuclear Catapult "Proto MIRV" -item.gun_quadro.name=Quattro Formaggi +item.gun_quadro.name=Quad Rocket Launcher item.gun_remington.name=ãƒã‚¤ãƒ‡ãƒ³ ブラスト [BIDEN BLAST] item.gun_revolver.name=Enhanced Revolver item.gun_revolver_ammo.name=Lead Bullet @@ -2940,17 +3131,21 @@ item.gun_sauer.name=Stan Sauer's Shotgun item.gun_skystinger.name=The One Sky Stinger item.gun_spark.name=Spark Plug item.gun_spark_ammo.name=Electromagnetic Cartridge -item.gun_spas12.name=SPAS-12 Shotgun +item.gun_spas12.name=SPAS-12 +item.gun_stg77.name=StG 77 item.gun_stinger.name=FIM-92 Stinger item.gun_stinger_ammo.name=Stinger Rocket (LEGACY) item.gun_super_shotgun.name=Super Shotgun item.gun_super_shotgun.desc=It's super broken! item.gun_supershotgun.name=Super Shotgun +item.gun_tau.name=Tau Cannon +item.gun_tesla_cannon.name=Tesla Cannon item.gun_thompson.name=Thompson Submachine Gun item.gun_uac_pistol.name=UAC .45 Pistol item.gun_uboinik.name=Uboinik item.gun_uboinik_ammo.name=12x70 Buckshot (LEGACY) -item.gun_uzi.name=IMI Uzi +item.gun_uzi.name=Uzi +item.gun_uzi_akimbo.name=Uzis item.gun_uzi_ammo.name=.22 LR Round (LEGACY) item.gun_uzi_saturnite.name=Saturnite Uzi item.gun_uzi_saturnite_silencer.name=Saturnite Uzi with Silencer @@ -3061,6 +3256,7 @@ item.ingot_firebrick.name=Firebrick item.ingot_gh336.name=Ghiorsium-336 Ingot item.ingot_gh336.desc=Seaborgium's colleague. item.ingot_graphite.name=Graphite Ingot +item.ingot_gunmetal.name=Gunmetal Ingot item.ingot_hes.name=Highly Enriched Schrabidium Fuel Ingot item.ingot_lanthanium.name=Semi-Stable Lanthanium Ingot item.ingot_lanthanium.desc='Lanthanum' @@ -3093,6 +3289,7 @@ item.ingot_pu240.name=Plutonium-240 Ingot item.ingot_pu241.name=Plutonium-241 Ingot item.ingot_pvc.name=PVC Bar item.ingot_ra226.name=Radium-226 Ingot +item.ingot_raw.name=%s Ingot item.ingot_red_copper.name=Minecraft Grade Copper item.ingot_reiium.name=Reiium Ingot item.ingot_rubber.name=Rubber Bar @@ -3127,6 +3324,7 @@ item.ingot_unobtainium.name=Unobtainium Ingot item.ingot_uranium.name=Uranium Ingot item.ingot_uranium_fuel.name=Ingot of Uranium Fuel item.ingot_verticium.name=Verticium Ingot +item.ingot_weaponsteel.name=Weapon Steel Ingot item.ingot_weidanium.name=Weidanium Ingot item.ingot_zirconium.name=Zirconium Cube item.injector_5htp.name=5-HTP Autoinjector @@ -3145,6 +3343,7 @@ item.insert_xsapi.name=XSAPI Insert item.insert_yharonite.name=Yharonite Insert item.item_secret.canister.name=Composition SB-26 item.item_secret.controller.name=Proprietary Control Unit +item.item_secret.selenium_steel.name=Selenium Steel item.iv_blood.name=Blood Bag item.iv_empty.name=IV Bag item.iv_xp.name=Experience Bag @@ -3474,7 +3673,7 @@ item.nugget_daffergon.name=Daffergon Nugget item.nugget_desh.name=Desh Nugget item.nugget_dineutronium.name=Dineutronium Nugget item.nugget_euphemium.name=Euphemium Nugget -item.nugget_euphemium.desc=A small piece of a pink metal.$It's properties are still unknown,$DEAL WITH IT carefully. +item.nugget_euphemium.desc=A small piece of a pink metal.$Its properties are still unknown,$DEAL WITH IT carefully. item.nugget_gh336.name=Ghiorsium-336 Nugget item.nugget_gh336.desc=Seaborgium's colleague. item.nugget_hes.name=Highly Enriched Schrabidium Fuel Nugget @@ -3570,6 +3769,13 @@ item.ore_centrifuged.name=Centrifuged %s Ore item.ore_cleaned.name=Cleaned %s Ore item.ore_deepcleaned.name=Deep Cleaned %s Ore item.ore_density_scanner.name=Bedrock Ore Density Scanner +item.ore_density_scanner.excellent=Excellent +item.ore_density_scanner.high=High +item.ore_density_scanner.low=Low +item.ore_density_scanner.moderate=Moderate +item.ore_density_scanner.poor=Poor +item.ore_density_scanner.veryhigh=Very High +item.ore_density_scanner.verypoor=Very Poor item.ore_enriched.name=Enriched %s Ore item.ore_nitrated.name=Nitrated %s Ore item.ore_nitrocrystalline.name=Nitrocrystalline %s Ore @@ -3580,6 +3786,9 @@ item.ore_separated.name=Separated %s Ore item.overfuse.name=Singularity Screwdriver item.overfuse.desc=Say what? item.oxy_mask.name=Oxygen Mask +item.pa_coil.bscco.name=Large BSCCO Coil +item.pa_coil.gold.name=Large Gold Coil +item.pa_coil.niobium.name=Large NbTi Coil item.paa_boots.name=PaA "good ol' shoes" item.paa_legs.name=PaA Leg Reinforcements item.paa_plate.name=PaA Chest Protection Plate @@ -3599,6 +3808,8 @@ item.page_of_.page6.name=Page 6 item.page_of_.page7.name=Page 7 item.page_of_.page8.name=Page 8 item.pancake.name=Pancake made from Scrap Metal, Nails and Gem Dust +item.part_barrel_heavy.name=Heavy %s Barrel +item.part_barrel_light.name=Light %s Barrel item.part_beryllium.name=Box of Beryllium Dust item.part_carbon.name=Box of Carbon Dust item.part_copper.name=Box of Copper Dust @@ -3607,8 +3818,13 @@ item.part_generic.lde.name=Low-Density Element item.part_generic.piston_electric.name=Electric Piston item.part_generic.piston_hydraulic.name=Hydraulic Piston item.part_generic.piston_pneumatic.name=Pneumatic Piston +item.part_grip.name=%s Grip item.part_lithium.name=Box of Lithium Dust +item.part_mechanism.name=%s Mechanism item.part_plutonium.name=Box of Plutonium Dust +item.part_receiver_heavy.name=Heavy %s Receiver +item.part_receiver_light.name=Light %s Receiver +item.part_stock.name=%s Stock item.particle_aelectron.name=Positron Capsule item.particle_amat.name=Antimatter Capsule item.particle_aproton.name=Antiproton Capsule @@ -3741,6 +3957,7 @@ item.plate_fuel_sa326.name=HES-326 Plate Fuel item.plate_fuel_u233.name=HEU-233 Plate Fuel item.plate_fuel_u235.name=HEU-235 Plate Fuel item.plate_gold.name=Gold Plate +item.plate_gunmetal.name=Gunmetal Plate item.plate_iron.name=Iron Plate item.plate_kevlar.name=Kevlar-Ceramic Compound item.plate_lead.name=Lead Plate @@ -3751,6 +3968,7 @@ item.plate_saturnite.name=Saturnite Plate item.plate_schrabidium.name=Schrabidium Plate item.plate_steel.name=Steel Plate item.plate_titanium.name=Titanium Plate +item.plate_weaponsteel.name=Weapon Steel Plate item.plate_welded.name=Welded %s Plate item.polaroid.name=The Polaroid item.pollution_detector.name=Pollution Detector @@ -4277,6 +4495,7 @@ item.seg_20.name=Size 20 Connector item.serum.name=Serum item.servo_set.name=Servo Set item.servo_set_desh.name=Desh Servo Set +item.settings_tool.name=Settings Tool item.shackles.name=Shackles item.shellntm.name=%s Shell item.shimmer_axe.name=Shimmer Axe @@ -4546,7 +4765,7 @@ item.waste_u233.name=Depleted Uranium-233 Fuel item.waste_uranium.name=Depleted Uranium Fuel item.waste_zfb_mox.name=Depleted ZFB MOX Fuel item.watch.name=Broken Pocket Watch -item.watch.desc=A small blue pocket watch.$It's glass has a few cracks in it,$and some shards are missing.$It stopped ticking at 2:34. +item.watch.desc=A small blue pocket watch.$Its glass has a few cracks in it,$and some shards are missing.$It stopped ticking at 2:34. item.watz_pellet.boron.name=Boron Absorber Pellet item.watz_pellet.du.name=Depleted Uranium Absorber Pellet item.watz_pellet.hes.name=HES Watz Pellet @@ -4612,6 +4831,18 @@ itemGroup.tabTemplate=NTM Templates itemGroup.tabTest=Nuclear Tech Mod Test Tab itemGroup.tabWeapon=NTM Weapons and Turrets +pa.idle=Idle +pa.running=Running +pa.success=Success +pa.pause_unloaded=Paused +pa.crash_defocus=Defocus! +pa.crash_derail=Derail! +pa.crash_cannot_enter=Denied! +pa.crash_nocool=No cooling! +pa.crash_nopower=No power! +pa.crash_nocoil=No coils! +pa.crash_overspeed=Overspeed! + potion.hbm_bang=! ! ! potion.hbm_death=Astolfization potion.hbm_lead=Lead Poisoning @@ -4676,23 +4907,32 @@ rbmk.screen.rod=Control: %s rbmk.screen.temp=Temp: %s rbmk.screen.xenon=Xenon: %s +shape.barrelHeavy=Heavy Barrel +shape.barrelLight=Light Barrel shape.billet=Billet shape.blade=Blade shape.blades=Shredder Blades shape.block=Block +shape.c9=Small Caliber Casing +shape.c50=Large Caliber Casing shape.dust=Dust shape.dusttiny=Tiny Dust +shape.grip=Grip +shape.gunMechanism=Mechanism shape.hull_big=Big Shell shape.hull_small=Small Shell shape.ingot=Ingot shape.nugget=Nugget shape.quantum=Quantum shape.quart=Quarter Block +shape.receiverHeavy=Heavy Receiver +shape.receiverLight=Light Receiver shape.ntmpipe=Pipe shape.plate=Plate shape.plateTriple=Cast Plate shape.shell=Shell shape.stamp=Press Stamp +shape.stock=Stock shape.wireFine=Wires shape.wireDense=Dense Wire shape.wiresDense=Dense Wires @@ -5319,6 +5559,7 @@ tile.launch_table.name=Large Launch Pad tile.leaves_layer.name=Fallen Leaves tile.lox_barrel.name=LOX Barrel tile.machine_amgen.name=Ambience Radiation Generator +tile.machine_ammo_press.name=Ammo Press tile.machine_arc_furnace.name=Electric Arc Furnace tile.machine_arc_furnace_off.name=Arc Furnace tile.machine_arc_furnace_on.name=Arc Furnace @@ -5338,8 +5579,7 @@ tile.machine_boiler.name=Boiler tile.machine_boiler.desc=Large boiler that can boil water or heat up oil.$Requires external heat source.$Heat transfer rate: ΔT*0.01 TU/t tile.machine_boiler_electric_off.name=Electric Oil Heater tile.machine_boiler_electric_on.name=Electric Oil Heater -tile.machine_boiler_off.name=Oil Heater -tile.machine_boiler_on.name=Oil Heater +tile.machine_boiler_off.name=Old Boiler tile.machine_catalytic_cracker.name=Catalytic Cracking Tower tile.machine_catalytic_reformer.name=Catalytic Reformer tile.machine_centrifuge.name=Centrifuge @@ -5419,6 +5659,7 @@ tile.machine_powerrtg.name=PT Isotope Cell tile.machine_press.name=Burner Press tile.machine_puf6_tank.name=Plutonium Hexafluoride Tank tile.machine_pumpjack.name=Pumpjack +tile.machine_pyrooven.name=Pyrolysis Oven tile.machine_radar.name=Radar tile.machine_radar_large.name=Large Radar tile.machine_radgen.name=Radiation-Powered Engine @@ -5427,6 +5668,7 @@ tile.machine_reactor.name=Breeding Reactor tile.machine_reactor_small.name=Research Reactor tile.machine_refinery.name=Oil Refinery tile.machine_reix_mainframe.name=Rei-X Mainframe (WIP) +tile.machine_rotary_furnace.name=Rotary Furnace tile.machine_rtg_blue.name=Convection Generator tile.machine_rtg_cyan.name=Schrabidium Decay Generator (WIP) tile.machine_rtg_furnace_off.name=RTG Furnace @@ -5603,6 +5845,12 @@ tile.ore_uranium_scorched.name=Scorched Uranium Ore tile.ore_verticium.name=Dollar Green Mineral tile.ore_volcano.name=Geothermal Vent tile.ore_weidanium.name=Weidite +tile.pa_beamline.name=Beamline +tile.pa_detector.name=Particle Detector +tile.pa_dipole.name=Dipole Magnets +tile.pa_quadrupole.name=Quadrupole Magnets +tile.pa_rfc.name=RF Cavity +tile.pa_source.name=Particle Source tile.part_emitter.name=Deco Particle Emitter tile.pedestal.name=Pedestal tile.pink_barrel.name=Kerosene Barrel @@ -5806,6 +6054,7 @@ tile.stone_depth.name=Depth Rock tile.stone_depth_nether.name=Nether Depth Rock tile.stone_gneiss.name=Graphitic Schist tile.stone_keyhole.name=Strange Stone +tile.stone_keyhole_meta.name=Strange Red Room Brick tile.stone_porous.name=Porous Stone tile.stone_resource.asbestos.name=Chrysotile tile.stone_resource.bauxite.name=Bauxite diff --git a/src/main/resources/assets/hbm/lang/it_IT.lang b/src/main/resources/assets/hbm/lang/it_IT.lang index 1143e0318..c3d83825d 100644 --- a/src/main/resources/assets/hbm/lang/it_IT.lang +++ b/src/main/resources/assets/hbm/lang/it_IT.lang @@ -3686,7 +3686,7 @@ item.nugget_daffergon.name=Daffergon Nugget item.nugget_desh.name=Desh Nugget item.nugget_dineutronium.name=Dineutronium Nugget item.nugget_euphemium.name=Euphemium Nugget -item.nugget_euphemium.desc=A small piece of a pink metal.$It's properties are still unknown,$DEAL WITH IT carefully. +item.nugget_euphemium.desc=A small piece of a pink metal.$Its properties are still unknown,$DEAL WITH IT carefully. item.nugget_gh336.name=Ghiorsium-336 Nugget item.nugget_gh336.desc=Seaborgium's colleague. item.nugget_hes.name=Highly Enriched Schrabidium Fuel Nugget @@ -4753,7 +4753,7 @@ item.waste_u233.name=Depleted Uranium-233 Fuel item.waste_uranium.name=Depleted Uranium Fuel item.waste_zfb_mox.name=Depleted ZFB MOX Fuel item.watch.name=Broken Pocket Watch -item.watch.desc=A small blue pocket watch.$It's glass has a few cracks in it,$and some shards are missing.$It stopped ticking at 2:34. +item.watch.desc=A small blue pocket watch.$Its glass has a few cracks in it,$and some shards are missing.$It stopped ticking at 2:34. item.watz_pellet.boron.name=Boron Absorber Pellet item.watz_pellet.du.name=Depleted Uranium Absorber Pellet item.watz_pellet.hes.name=HES Watz Pellet diff --git a/src/main/resources/assets/hbm/lang/ns_OC.lang b/src/main/resources/assets/hbm/lang/ns_OC.lang deleted file mode 100644 index a54936873..000000000 --- a/src/main/resources/assets/hbm/lang/ns_OC.lang +++ /dev/null @@ -1,2963 +0,0 @@ -language.name=Newspeak -language.region=Oceania -language.code=ns_OC - -gui.done=Done -gui.cancel=Abort -gui.back=Back -gui.toMenu=Back to Selectfield -gui.up=Up -gui.down=Down -gui.yes=Yes -gui.no=No - -translation.test.none=Hello, world! -translation.test.complex=Prefix, %s%2$s again %s and %1$s lastly %s and also %1$s again! -translation.test.escape=%%s %%%s %%%%s %%%%%s -translation.test.invalid=hi % -translation.test.invalid2=hi % s -translation.test.args=%s %s -translation.test.world=world - -menu.game=Selectfield -menu.singleplayer=Loneplay -menu.multiplayer=Manyplay -menu.online=Gameland -menu.options=Settings -menu.quit=Leave Playings -menu.returnToMenu=Save and Return -menu.disconnect=Leave -menu.returnToGame=Back to Playings -menu.switchingLevel=Switching worlds -menu.generatingLevel=Building world -menu.loadingLevel=Loading world -menu.generatingTerrain=Building land -menu.convertingLevel=Newbuilding world -menu.simulating=Virtualplaying the world -menu.respawning=Reliving -menu.shareToLan=Open to nearby Players - -selectWorld.title=Select World -selectWorld.empty=empty -selectWorld.world=World -selectWorld.select=Play World -selectWorld.create=Build World -selectWorld.recreate=Newbuild -selectWorld.createDemo=Play Demoworld -selectWorld.delete=Destroy -selectWorld.rename=Newname -selectWorld.deleteQuestion=Are you of conscience to destroy world? -selectWorld.deleteWarning=will be vaporized for longtime! -selectWorld.deleteButton=Destroy -selectWorld.renameButton=Newname -selectWorld.renameTitle=Newname World -selectWorld.conversion=Mut be newbuilded! -selectWorld.newWorld=New World -selectWorld.newWorld.copyOf=Dupe of %s -selectWorld.enterName=World Name -selectWorld.resultFolder=Will be saved in: -selectWorld.enterSeed=Code for Worldbuilder -selectWorld.seedInfo=Keep empty for random code -selectWorld.cheats=Crimeplay -selectWorld.customizeType=Custommake - -createWorld.customize.presets=Presets -createWorld.customize.presets.title=Select Preset -createWorld.customize.presets.select=Use Preset -createWorld.customize.presets.share=Do you intend to sharegive present? Copy text of box! -createWorld.customize.presets.list=Here are worlds maked by the Party: -createWorld.customize.flat.title=Flatworld making -createWorld.customize.flat.tile=Layerstuff -createWorld.customize.flat.height=Height -createWorld.customize.flat.addLayer=Make Layer -createWorld.customize.flat.editLayer=Remake Layer -createWorld.customize.flat.removeLayer=Delete Layer -createWorld.customize.flat.layer.top=Top - %d -createWorld.customize.flat.layer=%d -createWorld.customize.flat.layer.bottom=Bottom - %d - -gameMode.survival=Livings Mode -gameMode.creative=Crimeplay Mode -gameMode.adventure=Pluslivings Mode -gameMode.hardcore=Doublepluslivings Mode -gameMode.changed=Your mode was set anew! - -selectWorld.gameMode=Playings Mode -selectWorld.gameMode.survival=Livings -selectWorld.gameMode.survival.line1=Look for groundstuffs, build worktools, -selectWorld.gameMode.survival.line2=prevent unliving. -selectWorld.gameMode.creative=Crimeplay -selectWorld.gameMode.creative.line1=Unlimited buildstuffs, flyability, -selectWorld.gameMode.creative.line2=delete blocks shorttimely -selectWorld.gameMode.hardcore=Doublepluslivings -selectWorld.gameMode.hardcore.line1=Doubleplusplayingshardness, -selectWorld.gameMode.hardcore.line2=longtime unliving -selectWorld.gameMode.adventure=Pluslivings -selectWorld.gameMode.adventure.line1=Buildstuffs unbuildwise, -selectWorld.gameMode.adventure.line2=undeletewise -selectWorld.moreWorldOptions=Plusworldsettings... -selectWorld.mapFeatures=Build Buildings: -selectWorld.mapFeatures.info=Cities, prisons, etc. -selectWorld.mapType=World Type: -selectWorld.mapType.normal=Normal -selectWorld.allowCommands=Allow Crimeplay: -selectWorld.allowCommands.info=Crimeplay to steal material, /give -selectWorld.hardcoreMode=Doublepluslivings: -selectWorld.hardcoreMode.info=World is deleted on unliving -selectWorld.bonusItems=Pluscrate: - -generator.default=Default -generator.flat=Flatworld -generator.largeBiomes=Doubleplus Setting -generator.amplified=Tripleplus Setting - -generator.amplified.info=For doubleplusgood caclulators only! - -selectServer.title=Select Multiplayings -selectServer.empty=empty -selectServer.select=Join Multiplayings -selectServer.direct=Instant Line -selectServer.edit=Newmake -selectServer.delete=Delete -selectServer.add=Make Multiplayings -selectServer.defaultName=Minecraft Multiplayings -selectServer.deleteQuestion=Are you of conscience to destroy multiplayings? -selectServer.deleteWarning=will be vaporized for longtime! -selectServer.deleteButton=Delete -selectServer.refresh=Renew -selectServer.hiddenAddress=(Unshowing) -addServer.title=Remake Multiplayings Info -addServer.enterName=Multiplayings Name -addServer.enterIp=Multiplayings Code -addServer.add=Done -addServer.hideAddress=Unshow Code -addServer.resourcePack=Multiplayings Lookpackage -addServer.resourcePack.enabled=Enabled -addServer.resourcePack.disabled=Disabled -addServer.resourcePack.prompt=Prompt -lanServer.title=Local Multiplayings -lanServer.scanning=Finding games in local space -lanServer.start=Make local nultiplayings -lanServer.otherPlayers=Settings for Players -mcoServer.title=Minecraft Internet Multiplayings - -multiplayer.title=Play Multiplayings -multiplayer.connect=Multiplay -multiplayer.info1=Minecraft Multiplayings unmade, -multiplayer.info2=testing progressing.... -multiplayer.ipinfo=Enter IP Code of Multiplayings to Multiplay -multiplayer.texturePrompt.line1=Multiplay orders you to playings with lookpackage -multiplayer.texturePrompt.line2=Are you of conscience to load lookpackage? -multiplayer.downloadingTerrain=Loadings land... -multiplayer.downloadingStats=Loading achievings... -multiplayer.stopSleeping=Unsleep -multiplayer.player.joined=%s joined multiplayings -multiplayer.player.joined.renamed=%s (unnamed %s) joined multiplayings -multiplayer.player.left=%s unjoined multiplayings - -chat.cannotSend=Unsending text -chat.type.text=<%s> %s -chat.type.emote=* %s %s -chat.type.announcement=[%s] %s -chat.type.admin=[%s: %s] -chat.type.achievement=%s maded achievings %s -chat.link.confirm=Are you of conscience to load internet page? -chat.link.warning=Unload untrusty internet pages! -chat.copy=Remaking to Copyboard -chat.link.confirmTrusted=Are you opening internet code or remaking to copyboard? -chat.link.open=Open in internet window - -chat.stream.text=(%s) <%s> %s -chat.stream.emote=(%s) * %s %s - -menu.playdemo=Play Demo World -menu.resetdemo=Remake Demo World - -demo.day.1=This demo will vaporize in five days! -demo.day.2=Day Two -demo.day.3=Day Three -demo.day.4=Day Four -demo.day.5=Day Five!! -demo.day.warning=Demo will vaporize soonwise! -demo.day.6=Demo ended! Make screenpicture with F2! -demo.reminder=Demo ended, buy full playing or vaporize this world! -demo.remainingTime=Remaining time: %s -demo.demoExpired=Demo time's up! -demo.help.movement=Use %1$s, %2$s, %3$s, %4$s and and mouse to move. -demo.help.movementShort=Move by pressing %1$s, %2$s, %3$s, %4$s -demo.help.movementMouse=Look around using mouse -demo.help.jump=Jump by pressing %1$s -demo.help.inventory=Use %1$s to open material storage! -demo.help.title=Minecraft Demo Mode -demo.help.fullWrapped=This demo will vaporize in 5 Minecraft days (~1 hour and 40 minutes) -demo.help.buy=Pay up! -demo.help.later=Keep playing! - -connect.connecting=Joining multiplayings... -connect.authorizing=Logging in... -connect.failed=Unjoined to this multiplaying! - -disconnect.genericReason=%s -disconnect.disconnected=Unjoined by Multiplaying -disconnect.lost=Unjoined -disconnect.kicked=Was vaporized from multiplayings -disconnect.timeout=Ran out of time -disconnect.closed=Joining deleted -disconnect.loginFailed=Unable joining -disconnect.loginFailedInfo=Unable joining: %s -disconnect.loginFailedInfo.serversUnavailable=Authjoinings unable due to internet rebuilding -disconnect.loginFailedInfo.invalidSession=Unsession (restart minecraft) -disconnect.quitting=Unplaying -disconnect.endOfStream=End of internet -disconnect.overflow=Buffer unliving -disconnect.spam=Vaporized for Thoughtcrimes - -soundCategory.master=Party Loundness -soundCategory.music=Music Louness -soundCategory.record=Note Loudness -soundCategory.weather=Weather Loudness -soundCategory.hostile=Enemy Loudness -soundCategory.neutral=Ally Loudness -soundCategory.player=Players Loudness -soundCategory.block=Buildstuffs Loudness -soundCategory.ambient=Ominous Loudness - -record.nowPlaying=Musicplays: %s - -options.off=OFF -options.on=ON -options.visible=Shown -options.hidden=Unshown -options.title=Settings -options.controls=Control... -options.video=Seeing Settings... -options.language=Speak... -options.stream=Sending Settings... -options.sounds=Loudness... -options.sounds.title=Loudness Settigns -options.languageWarning=Speakwork not 100% precise -options.videoTitle=Seeing Settings -options.music=Music -options.sound=Noise -options.invertMouse=Unmove Mouse -options.fov=FOV -options.fov.min=Normal -options.fov.max=Real Oceanian -options.saturation=Saturation -options.gamma=Brightness -options.gamma.min=Unright -options.gamma.max=Bright -options.sensitivity=Movespeed -options.sensitivity.min=Doubleplusunspeedwise -options.sensitivity.max=Doubleplusspeedwise -options.renderDistance=Seeing Distance -options.renderDistance.tiny=Plusunlarge -options.renderDistance.short=Unlarge -options.renderDistance.normal=Normal -options.renderDistance.far=Large -options.viewBobbing=Victory Gin -options.ao=Light Smoothness -options.ao.off=OFF -options.ao.min=Unsmooth -options.ao.max=Smooth -options.anaglyph=3D Anaglyph -options.framerateLimit=Max Speed -options.framerateLimit.max=Unlimited Speed -options.difficulty=Game Hardness -options.difficulty.peaceful=Armistice -options.difficulty.easy=Unhard -options.difficulty.normal=Hard -options.difficulty.hard=Plushard -options.difficulty.hardcore=Doubleplushard -options.graphics=Looking -options.graphics.fancy=Good -options.graphics.fast=Fast -options.guiScale=GUI Largeness -options.guiScale.auto=Auto -options.guiScale.small=Unlarge -options.guiScale.normal=Normal -options.guiScale.large=Large -options.advancedOpengl=Doubleplus OpenGL -options.fboEnable=Enable FBOs -options.postProcessEnable=Enable Post-Processing -options.aoDesc0=Enable faux ambient occlusion on blocks. -options.aoDesc1= -options.framerateLimitDesc0=Select maximum fastness: -options.framerateLimitDesc1=35fps, 120fps, or 200+fps. -options.viewBobbingDesc0=Enables drunkenness -options.viewBobbingDesc1= -options.renderCloudsDesc0=Enables drawing of skyclouds -options.renderCloudsDesc1= -options.graphicsDesc0='Fancy': Doubleplusgood looking -options.graphicsDesc1='Fast': For ungood calculators -options.renderDistanceDesc0=Maximum looking largeness. Unlarge -options.renderDistanceDesc1=numbers work better on ungood calculators -options.particlesDesc0=Sets plentifulness of looking pieces -options.particlesDesc1=Unmany looking pieces work better on ungood calculators - - - - - - - - -options.advancedOpenglDesc0=Enables occlusion queries. On AMD and Intel -options.advancedOpenglDesc1=hardware, this may decrease performance. -options.fboEnableDesc0=Enables the use of Framebuffer Objects. -options.fboEnableDesc1=Necessary for certain Minecraft features. -options.postProcessEnableDesc0=Enables post-processing. Disabling will -options.postProcessEnableDesc1=result in reduction in Awesome Levels. -options.renderClouds=Clouds -options.qualityButton=Video Quality Settings... -options.qualityVideoTitle=Video Quality Settings -options.performanceButton=Video Performance Settings... -options.performanceVideoTitle=Video Performance Settings -options.advancedButton=Advanced Video Settings... -options.advancedVideoTitle=Advanced Video Settings -options.postButton=Post-Processing Settings... -options.postVideoTitle=Post-Processing Settings -options.farWarning1=A 64 bit Java installation is recommended -options.farWarning2=for 'Far' render distance (you have 32 bit) -options.particles=Particles -options.particles.all=All -options.particles.decreased=Decreased -options.particles.minimal=Minimal -options.multiplayer.title=Multiplayer Settings... -options.chat.title=Chat Settings... -options.chat.visibility=Chat -options.chat.visibility.full=Shown -options.chat.visibility.system=Commands Only -options.chat.visibility.hidden=Hidden -options.chat.color=Colors -options.chat.opacity=Opacity -options.chat.links=Web Links -options.chat.links.prompt=Prompt on Links -options.chat.scale=Scale -options.chat.width=Width -options.chat.height.focused=Focused Height -options.chat.height.unfocused=Unfocused Height -options.showCape=Show Cape -options.snooper=Allow Snooper -options.snooper.view=Snooper Settings... -options.snooper.title=Machine Specs Collection -options.snooper.desc=We want to collect information about your machine to help improve Minecraft by knowing what we can support and where the biggest problems are. All of this information is completely anonymous and viewable below. We promise we won't do anything bad with this data, but if you want to opt out then feel free to toggle it off! -options.resourcepack=Resource Packs... -options.fullscreen=Fullscreen -options.vsync=Use VSync -options.touchscreen=Touchscreen Mode - -options.mipmapLevels=Mipmap Levels -options.anisotropicFiltering=Anisotropic Filtering -options.forceUnicodeFont=Force Unicode Font - -options.stream.title=Twitch Broadcast Settings -options.stream.bytesPerPixel=Quality -options.stream.micVolumne=Mic Volume -options.stream.micToggleBehavior=Push To -options.stream.mic_toggle.mute=Mute -options.stream.mic_toggle.talk=Talk -options.stream.systemVolume=System Volume -options.stream.kbps=Bandwidth -options.stream.fps=Framerate -options.stream.sendMetadata=Send Metadata -options.stream.compression=Compression -options.stream.compression.low=Low -options.stream.compression.medium=Medium -options.stream.compression.high=High -options.stream.estimation=Estimated resolution: %dx%d -options.stream.changes=You may need to restart your stream for these changes to take place. -options.stream.ingestSelection=Broadcast Server List -options.stream.ingest.title=Twitch Broadcast Servers -options.stream.ingest.reset=Reset Preference -options.stream.chat.title=Twitch Chat Settings -options.stream.chat.enabled=Enable -options.stream.chat.enabled.streaming=Whilst Streaming -options.stream.chat.enabled.always=Always -options.stream.chat.enabled.never=Never -options.stream.chat.userFilter=User Filter -options.stream.chat.userFilter.all=All Viewers -options.stream.chat.userFilter.subs=Subscribers -options.stream.chat.userFilter.mods=Moderators - -title.oldgl1=Old graphics card detected; this may prevent you from -title.oldgl2=playing in the future as OpenGL 2.0 will be required. - -controls.title=Controls -controls.reset=Reset -controls.resetAll=Reset Keys - -key.sprint=Sprint -key.forward=Walk Forwards -key.left=Strafe Left -key.back=Walk Backwards -key.right=Strafe Right -key.jump=Jump -key.inventory=Inventory -key.drop=Drop Item -key.chat=Open Chat -key.sneak=Sneak -key.playerlist=List Players -key.attack=Attack/Destroy -key.use=Use Item/Place Block -key.pickItem=Pick Block -key.mouseButton=Button %1$s -key.command=Open Command -key.screenshot=Take Screenshot -key.togglePerspective=Toggle Perspective -key.smoothCamera=Toggle Cinematic Camera -key.fullscreen=Toggle Fullscreen -key.hotbar.1=Hotbar Slot 1 -key.hotbar.2=Hotbar Slot 2 -key.hotbar.3=Hotbar Slot 3 -key.hotbar.4=Hotbar Slot 4 -key.hotbar.5=Hotbar Slot 5 -key.hotbar.6=Hotbar Slot 6 -key.hotbar.7=Hotbar Slot 7 -key.hotbar.8=Hotbar Slot 8 -key.hotbar.9=Hotbar Slot 9 -key.streamStartStop=Start/Stop Stream -key.streamPauseUnpause=Pause/Unpause Stream -key.streamCommercial=Show Stream Commercials -key.streamToggleMic=Push To Talk/Mute - -key.categories.movement=Movement -key.categories.misc=Miscellaneous -key.categories.multiplayer=Multiplayer -key.categories.gameplay=Gameplay -key.categories.ui=Game Interface -key.categories.inventory=Inventory -key.categories.stream=Streaming - -resourcePack.openFolder=Open resource pack folder -resourcePack.title=Select Resource Packs -resourcePack.available.title=Available Resource Packs -resourcePack.selected.title=Selected Resource Packs -resourcePack.folderInfo=(Place resource pack files here) - -sign.edit=Edit sign message - -book.pageIndicator=Page %1$s of %2$s -book.byAuthor=by %1$s -book.signButton=Sign -book.editTitle=Enter Book Title: -book.finalizeButton=Sign and Close -book.finalizeWarning=Note! When you sign the book, it will no longer be editable. - -tile.stone.name=Stone -tile.hayBlock.name=Hay Bale -tile.grass.name=Grass Block -tile.dirt.default.name=Dirt -tile.dirt.podzol.name=Podzol -tile.stonebrick.name=Cobblestone -tile.wood.name=Wooden Planks -tile.wood.oak.name=Oak Wood Planks -tile.wood.spruce.name=Spruce Wood Planks -tile.wood.birch.name=Birch Wood Planks -tile.wood.jungle.name=Jungle Wood Planks -tile.wood.acacia.name=Acacia Wood Planks -tile.wood.big_oak.name=Dark Oak Wood Planks -tile.sapling.oak.name=Oak Sapling -tile.sapling.spruce.name=Spruce Sapling -tile.sapling.birch.name=Birch Sapling -tile.sapling.jungle.name=Jungle Sapling -tile.sapling.acacia.name=Acacia Sapling -tile.sapling.roofed_oak.name=Dark Oak Sapling -tile.deadbush.name=Dead Bush -tile.bedrock.name=Bedrock -tile.water.name=Water -tile.lava.name=Lava -tile.sand.default.name=Sand -tile.sand.red.name=Red Sand -tile.sandStone.name=Sandstone -tile.sandStone.default.name=Sandstone -tile.sandStone.chiseled.name=Chiseled Sandstone -tile.sandStone.smooth.name=Smooth Sandstone -tile.gravel.name=Gravel -tile.oreGold.name=Gold Ore -tile.oreIron.name=Iron Ore -tile.oreCoal.name=Coal Ore -tile.log.name=Wood -tile.log.oak.name=Oak Wood -tile.log.spruce.name=Spruce Wood -tile.log.birch.name=Birch Wood -tile.log.jungle.name=Jungle Wood -tile.log.acacia.name=Acacia Wood -tile.log.big_oak.name=Dark Oak Wood -tile.leaves.name=Leaves -tile.leaves.oak.name=Oak Leaves -tile.leaves.spruce.name=Spruce Leaves -tile.leaves.birch.name=Birch Leaves -tile.leaves.jungle.name=Jungle Leaves -tile.leaves.acacia.name=Acacia Leaves -tile.leaves.big_oak.name=Dark Oak Leaves -tile.tallgrass.name=Grass -tile.tallgrass.shrub.name=Shrub -tile.tallgrass.grass.name=Grass -tile.tallgrass.fern.name=Fern -tile.sponge.name=Sponge -tile.glass.name=Glass -tile.stainedGlass.name=Stained Glass -tile.stainedGlass.black.name=Black Stained Glass -tile.stainedGlass.red.name=Red Stained Glass -tile.stainedGlass.green.name=Green Stained Glass -tile.stainedGlass.brown.name=Brown Stained Glass -tile.stainedGlass.blue.name=Blue Stained Glass -tile.stainedGlass.purple.name=Purple Stained Glass -tile.stainedGlass.cyan.name=Cyan Stained Glass -tile.stainedGlass.silver.name=Light Gray Stained Glass -tile.stainedGlass.gray.name=Gray Stained Glass -tile.stainedGlass.pink.name=Pink Stained Glass -tile.stainedGlass.lime.name=Lime Stained Glass -tile.stainedGlass.yellow.name=Yellow Stained Glass -tile.stainedGlass.lightBlue.name=Light Blue Stained Glass -tile.stainedGlass.magenta.name=Magenta Stained Glass -tile.stainedGlass.orange.name=Orange Stained Glass -tile.stainedGlass.white.name=White Stained Glass -tile.thinStainedGlass.name=Stained Glass Pane -tile.thinStainedGlass.black.name=Black Stained Glass Pane -tile.thinStainedGlass.red.name=Red Stained Glass Pane -tile.thinStainedGlass.green.name=Green Stained Glass Pane -tile.thinStainedGlass.brown.name=Brown Stained Glass Pane -tile.thinStainedGlass.blue.name=Blue Stained Glass Pane -tile.thinStainedGlass.purple.name=Purple Stained Glass Pane -tile.thinStainedGlass.cyan.name=Cyan Stained Glass Pane -tile.thinStainedGlass.silver.name=Light Gray Stained Glass Pane -tile.thinStainedGlass.gray.name=Gray Stained Glass Pane -tile.thinStainedGlass.pink.name=Pink Stained Glass Pane -tile.thinStainedGlass.lime.name=Lime Stained Glass Pane -tile.thinStainedGlass.yellow.name=Yellow Stained Glass Pane -tile.thinStainedGlass.lightBlue.name=Light Blue Stained Glass Pane -tile.thinStainedGlass.magenta.name=Magenta Stained Glass Pane -tile.thinStainedGlass.orange.name=Orange Stained Glass Pane -tile.thinStainedGlass.white.name=White Stained Glass Pane -tile.thinGlass.name=Glass Pane -tile.cloth.name=Wool -tile.flower1.dandelion.name=Dandelion -tile.flower2.poppy.name=Poppy -tile.flower2.blueOrchid.name=Blue Orchid -tile.flower2.allium.name=Allium -tile.flower2.houstonia.name=Azure Bluet -tile.flower2.tulipRed.name=Red Tulip -tile.flower2.tulipOrange.name=Orange Tulip -tile.flower2.tulipWhite.name=White Tulip -tile.flower2.tulipPink.name=Pink Tulip -tile.flower2.oxeyeDaisy.name=Oxeye Daisy -tile.doublePlant.sunflower.name=Sunflower -tile.doublePlant.syringa.name=Lilac -tile.doublePlant.grass.name=Double Tallgrass -tile.doublePlant.fern.name=Large Fern -tile.doublePlant.rose.name=Rose Bush -tile.doublePlant.paeonia.name=Peony -tile.mushroom.name=Mushroom -tile.blockGold.name=Block of Gold -tile.blockIron.name=Block of Iron -tile.stoneSlab.stone.name=Stone Slab -tile.stoneSlab.sand.name=Sandstone Slab -tile.stoneSlab.wood.name=Wooden Slab -tile.stoneSlab.cobble.name=Cobblestone Slab -tile.stoneSlab.brick.name=Bricks Slab -tile.stoneSlab.smoothStoneBrick.name=Stone Bricks Slab -tile.stoneSlab.netherBrick.name=Nether Brick Slab -tile.stoneSlab.quartz.name=Quartz Slab -tile.woodSlab.oak.name=Oak Wood Slab -tile.woodSlab.spruce.name=Spruce Wood Slab -tile.woodSlab.birch.name=Birch Wood Slab -tile.woodSlab.jungle.name=Jungle Wood Slab -tile.woodSlab.acacia.name=Acacia Wood Slab -tile.woodSlab.big_oak.name=Dark Oak Wood Slab -tile.brick.name=Bricks -tile.tnt.name=TNT -tile.bookshelf.name=Bookshelf -tile.stoneMoss.name=Moss Stone -tile.obsidian.name=Obsidian -tile.torch.name=Torch -tile.fire.name=Fire -tile.mobSpawner.name=Monster Spawner -tile.stairsWood.name=Oak Wood Stairs -tile.stairsWoodSpruce.name=Spruce Wood Stairs -tile.stairsWoodBirch.name=Birch Wood Stairs -tile.stairsWoodJungle.name=Jungle Wood Stairs -tile.stairsWoodAcacia.name=Acacia Wood Stairs -tile.stairsWoodDarkOak.name=Dark Oak Wood Stairs -tile.chest.name=Chest -tile.chestTrap.name=Trapped Chest -tile.redstoneDust.name=Redstone Dust -tile.oreDiamond.name=Diamond Ore -tile.blockCoal.name=Block of Coal -tile.blockDiamond.name=Block of Diamond -tile.workbench.name=Crafting Table -tile.crops.name=Crops -tile.farmland.name=Farmland -tile.furnace.name=Furnace -tile.sign.name=Sign -tile.doorWood.name=Wooden Door -tile.ladder.name=Ladder -tile.rail.name=Rail -tile.goldenRail.name=Powered Rail -tile.activatorRail.name=Activator Rail -tile.detectorRail.name=Detector Rail -tile.stairsStone.name=Stone Stairs -tile.stairsSandStone.name=Sandstone Stairs -tile.lever.name=Lever -tile.pressurePlate.name=Pressure Plate -tile.weightedPlate_light.name=Weighted Pressure Plate (Light) -tile.weightedPlate_heavy.name=Weighted Pressure Plate (Heavy) -tile.doorIron.name=Iron Door -tile.oreRedstone.name=Redstone Ore -tile.notGate.name=Redstone Torch -tile.button.name=Button -tile.snow.name=Snow -tile.woolCarpet.black.name=Black Carpet -tile.woolCarpet.red.name=Red Carpet -tile.woolCarpet.green.name=Green Carpet -tile.woolCarpet.brown.name=Brown Carpet -tile.woolCarpet.blue.name=Blue Carpet -tile.woolCarpet.purple.name=Purple Carpet -tile.woolCarpet.cyan.name=Cyan Carpet -tile.woolCarpet.silver.name=Light Gray Carpet -tile.woolCarpet.gray.name=Gray Carpet -tile.woolCarpet.pink.name=Pink Carpet -tile.woolCarpet.lime.name=Lime Carpet -tile.woolCarpet.yellow.name=Yellow Carpet -tile.woolCarpet.lightBlue.name=Light Blue Carpet -tile.woolCarpet.magenta.name=Magenta Carpet -tile.woolCarpet.orange.name=Orange Carpet -tile.woolCarpet.white.name=Carpet -tile.ice.name=Ice -tile.icePacked.name=Packed Ice -tile.cactus.name=Cactus -tile.clay.name=Clay -tile.clayHardenedStained.black.name=Black Stained Clay -tile.clayHardenedStained.red.name=Red Stained Clay -tile.clayHardenedStained.green.name=Green Stained Clay -tile.clayHardenedStained.brown.name=Brown Stained Clay -tile.clayHardenedStained.blue.name=Blue Stained Clay -tile.clayHardenedStained.purple.name=Purple Stained Clay -tile.clayHardenedStained.cyan.name=Cyan Stained Clay -tile.clayHardenedStained.silver.name=Light Gray Stained Clay -tile.clayHardenedStained.gray.name=Gray Stained Clay -tile.clayHardenedStained.pink.name=Pink Stained Clay -tile.clayHardenedStained.lime.name=Lime Stained Clay -tile.clayHardenedStained.yellow.name=Yellow Stained Clay -tile.clayHardenedStained.lightBlue.name=Light Blue Stained Clay -tile.clayHardenedStained.magenta.name=Magenta Stained Clay -tile.clayHardenedStained.orange.name=Orange Stained Clay -tile.clayHardenedStained.white.name=White Stained Clay -tile.clayHardened.name=Hardened Clay -tile.reeds.name=Sugar cane -tile.jukebox.name=Jukebox -tile.fence.name=Fence -tile.fenceGate.name=Fence Gate -tile.pumpkin.name=Pumpkin -tile.litpumpkin.name=Jack o'Lantern -tile.hellrock.name=Netherrack -tile.hellsand.name=Soul Sand -tile.lightgem.name=Glowstone -tile.portal.name=Portal -tile.cloth.black.name=Black Wool -tile.cloth.red.name=Red Wool -tile.cloth.green.name=Green Wool -tile.cloth.brown.name=Brown Wool -tile.cloth.blue.name=Blue Wool -tile.cloth.purple.name=Purple Wool -tile.cloth.cyan.name=Cyan Wool -tile.cloth.silver.name=Light Gray Wool -tile.cloth.gray.name=Gray Wool -tile.cloth.pink.name=Pink Wool -tile.cloth.lime.name=Lime Wool -tile.cloth.yellow.name=Yellow Wool -tile.cloth.lightBlue.name=Light Blue Wool -tile.cloth.magenta.name=Magenta Wool -tile.cloth.orange.name=Orange Wool -tile.cloth.white.name=Wool -tile.oreLapis.name=Lapis Lazuli Ore -tile.blockLapis.name=Lapis Lazuli Block -tile.dispenser.name=Dispenser -tile.dropper.name=Dropper -tile.musicBlock.name=Note Block -tile.cake.name=Cake -tile.bed.name=Bed -tile.bed.occupied=This bed is occupied -tile.bed.noSleep=You can only sleep at night -tile.bed.notSafe=You may not rest now, there are monsters nearby -tile.bed.notValid=Your home bed was missing or obstructed -tile.lockedchest.name=Locked chest -tile.trapdoor.name=Trapdoor -tile.web.name=Cobweb -tile.stonebricksmooth.name=Stone Bricks -tile.stonebricksmooth.default.name=Stone Bricks -tile.stonebricksmooth.mossy.name=Mossy Stone Bricks -tile.stonebricksmooth.cracked.name=Cracked Stone Bricks -tile.stonebricksmooth.chiseled.name=Chiseled Stone Bricks -tile.monsterStoneEgg.stone.name=Stone Monster Egg -tile.monsterStoneEgg.cobble.name=Cobblestone Monster Egg -tile.monsterStoneEgg.brick.name=Stone Brick Monster Egg -tile.monsterStoneEgg.mossybrick.name=Mossy Stone Brick Monster Egg -tile.monsterStoneEgg.crackedbrick.name=Cracked Stone Brick Monster Egg -tile.monsterStoneEgg.chiseledbrick.name=Chiseled Stone Brick Monster Egg -tile.pistonBase.name=Piston -tile.pistonStickyBase.name=Sticky Piston -tile.fenceIron.name=Iron Bars -tile.melon.name=Melon -tile.stairsBrick.name=Brick Stairs -tile.stairsStoneBrickSmooth.name=Stone Brick Stairs -tile.vine.name=Vines -tile.netherBrick.name=Nether Brick -tile.netherFence.name=Nether Brick Fence -tile.stairsNetherBrick.name=Nether Brick Stairs -tile.netherStalk.name=Nether Wart -tile.cauldron.name=Cauldron -tile.enchantmentTable.name=Enchantment Table -tile.anvil.name=Anvil -tile.anvil.intact.name=Anvil -tile.anvil.slightlyDamaged.name=Slightly Damaged Anvil -tile.anvil.veryDamaged.name=Very Damaged Anvil -tile.whiteStone.name=End Stone -tile.endPortalFrame.name=End Portal -tile.mycel.name=Mycelium -tile.waterlily.name=Lily Pad -tile.dragonEgg.name=Dragon Egg -tile.redstoneLight.name=Redstone Lamp -tile.cocoa.name=Cocoa -tile.enderChest.name=Ender Chest -tile.oreRuby.name=Ruby Ore -tile.oreEmerald.name=Emerald Ore -tile.blockEmerald.name=Block of Emerald -tile.blockRedstone.name=Block of Redstone -tile.tripWire.name=Tripwire -tile.tripWireSource.name=Tripwire Hook -tile.commandBlock.name=Command Block -tile.beacon.name=Beacon -tile.beacon.primary=Primary Power -tile.beacon.secondary=Secondary Power -tile.cobbleWall.normal.name=Cobblestone Wall -tile.cobbleWall.mossy.name=Mossy Cobblestone Wall -tile.carrots.name=Carrots -tile.potatoes.name=Potatoes -tile.daylightDetector.name=Daylight Sensor -tile.netherquartz.name=Nether Quartz Ore -tile.hopper.name=Hopper -tile.quartzBlock.default.name=Block of Quartz -tile.quartzBlock.chiseled.name=Chiseled Quartz Block -tile.quartzBlock.lines.name=Pillar Quartz Block -tile.stairsQuartz.name=Quartz Stairs - -item.nameTag.name=Name Tag -item.leash.name=Lead -item.shovelIron.name=Iron Shovel -item.pickaxeIron.name=Iron Pickaxe -item.hatchetIron.name=Iron Axe -item.flintAndSteel.name=Flint and Steel -item.apple.name=Apple -item.cookie.name=Cookie -item.bow.name=Bow -item.arrow.name=Arrow -item.coal.name=Coal -item.charcoal.name=Charcoal -item.diamond.name=Diamond -item.emerald.name=Emerald -item.ingotIron.name=Iron Ingot -item.ingotGold.name=Gold Ingot -item.swordIron.name=Iron Sword -item.swordWood.name=Wooden Sword -item.shovelWood.name=Wooden Shovel -item.pickaxeWood.name=Wooden Pickaxe -item.hatchetWood.name=Wooden Axe -item.swordStone.name=Stone Sword -item.shovelStone.name=Stone Shovel -item.pickaxeStone.name=Stone Pickaxe -item.hatchetStone.name=Stone Axe -item.swordDiamond.name=Diamond Sword -item.shovelDiamond.name=Diamond Shovel -item.pickaxeDiamond.name=Diamond Pickaxe -item.hatchetDiamond.name=Diamond Axe -item.stick.name=Stick -item.bowl.name=Bowl -item.mushroomStew.name=Mushroom Stew -item.swordGold.name=Golden Sword -item.shovelGold.name=Golden Shovel -item.pickaxeGold.name=Golden Pickaxe -item.hatchetGold.name=Golden Axe -item.string.name=String -item.feather.name=Feather -item.sulphur.name=Gunpowder -item.hoeWood.name=Wooden Hoe -item.hoeStone.name=Stone Hoe -item.hoeIron.name=Iron Hoe -item.hoeDiamond.name=Diamond Hoe -item.hoeGold.name=Golden Hoe -item.seeds.name=Seeds -item.seeds_pumpkin.name=Pumpkin Seeds -item.seeds_melon.name=Melon Seeds -item.melon.name=Melon -item.wheat.name=Wheat -item.bread.name=Bread -item.helmetCloth.name=Leather Cap -item.chestplateCloth.name=Leather Tunic -item.leggingsCloth.name=Leather Pants -item.bootsCloth.name=Leather Boots -item.helmetChain.name=Chain Helmet -item.chestplateChain.name=Chain Chestplate -item.leggingsChain.name=Chain Leggings -item.bootsChain.name=Chain Boots -item.helmetIron.name=Iron Helmet -item.chestplateIron.name=Iron Chestplate -item.leggingsIron.name=Iron Leggings -item.bootsIron.name=Iron Boots -item.helmetDiamond.name=Diamond Helmet -item.chestplateDiamond.name=Diamond Chestplate -item.leggingsDiamond.name=Diamond Leggings -item.bootsDiamond.name=Diamond Boots -item.helmetGold.name=Golden Helmet -item.chestplateGold.name=Golden Chestplate -item.leggingsGold.name=Golden Leggings -item.bootsGold.name=Golden Boots -item.flint.name=Flint -item.porkchopRaw.name=Raw Porkchop -item.porkchopCooked.name=Cooked Porkchop -item.chickenRaw.name=Raw Chicken -item.chickenCooked.name=Cooked Chicken -item.beefRaw.name=Raw Beef -item.beefCooked.name=Steak -item.painting.name=Painting -item.frame.name=Item Frame -item.appleGold.name=Golden Apple -item.sign.name=Sign -item.doorWood.name=Wooden Door -item.bucket.name=Bucket -item.bucketWater.name=Water Bucket -item.bucketLava.name=Lava Bucket -item.minecart.name=Minecart -item.saddle.name=Saddle -item.doorIron.name=Iron Door -item.redstone.name=Redstone -item.snowball.name=Snowball -item.boat.name=Boat -item.leather.name=Leather -item.milk.name=Milk -item.brick.name=Brick -item.clay.name=Clay -item.reeds.name=Sugar Canes -item.paper.name=Paper -item.book.name=Book -item.slimeball.name=Slimeball -item.minecartChest.name=Minecart with Chest -item.minecartFurnace.name=Minecart with Furnace -item.minecartTnt.name=Minecart with TNT -item.minecartHopper.name=Minecart with Hopper -item.minecartCommandBlock.name=Minecart with Command Block -item.egg.name=Egg -item.compass.name=Compass -item.fishingRod.name=Fishing Rod -item.clock.name=Clock -item.yellowDust.name=Glowstone Dust -item.fish.cod.raw.name=Raw Fish -item.fish.salmon.raw.name=Raw Salmon -item.fish.pufferfish.raw.name=Pufferfish -item.fish.clownfish.raw.name=Clownfish -item.fish.cod.cooked.name=Cooked Fish -item.fish.salmon.cooked.name=Cooked Salmon -item.record.name=Music Disc -item.record.13.desc=C418 - 13 -item.record.cat.desc=C418 - cat -item.record.blocks.desc=C418 - blocks -item.record.chirp.desc=C418 - chirp -item.record.far.desc=C418 - far -item.record.mall.desc=C418 - mall -item.record.mellohi.desc=C418 - mellohi -item.record.stal.desc=C418 - stal -item.record.strad.desc=C418 - strad -item.record.ward.desc=C418 - ward -item.record.11.desc=C418 - 11 -item.record.wait.desc=C418 - wait -item.bone.name=Bone -item.dyePowder.black.name=Ink Sac -item.dyePowder.red.name=Rose Red -item.dyePowder.green.name=Cactus Green -item.dyePowder.brown.name=Cocoa Beans -item.dyePowder.blue.name=Lapis Lazuli -item.dyePowder.purple.name=Purple Dye -item.dyePowder.cyan.name=Cyan Dye -item.dyePowder.silver.name=Light Gray Dye -item.dyePowder.gray.name=Gray Dye -item.dyePowder.pink.name=Pink Dye -item.dyePowder.lime.name=Lime Dye -item.dyePowder.yellow.name=Dandelion Yellow -item.dyePowder.lightBlue.name=Light Blue Dye -item.dyePowder.magenta.name=Magenta Dye -item.dyePowder.orange.name=Orange Dye -item.dyePowder.white.name=Bone Meal -item.sugar.name=Sugar -item.cake.name=Cake -item.bed.name=Bed -item.diode.name=Redstone Repeater -item.comparator.name=Redstone Comparator -item.map.name=Map -item.leaves.name=Leaves -item.shears.name=Shears -item.rottenFlesh.name=Rotten Flesh -item.enderPearl.name=Ender Pearl -item.blazeRod.name=Blaze Rod -item.ghastTear.name=Ghast Tear -item.netherStalkSeeds.name=Nether Wart -item.potion.name=Potion -item.emptyPotion.name=Water Bottle -item.goldNugget.name=Gold Nugget -item.glassBottle.name=Glass Bottle -item.spiderEye.name=Spider Eye -item.fermentedSpiderEye.name=Fermented Spider Eye -item.blazePowder.name=Blaze Powder -item.magmaCream.name=Magma Cream -item.cauldron.name=Cauldron -item.brewingStand.name=Brewing Stand -item.eyeOfEnder.name=Eye of Ender -item.speckledMelon.name=Glistering Melon -item.monsterPlacer.name=Spawn -item.expBottle.name=Bottle o' Enchanting -item.fireball.name=Fire Charge -item.writingBook.name=Book and Quill -item.writtenBook.name=Written Book -item.ruby.name=Ruby -item.flowerPot.name=Flower Pot -item.emptyMap.name=Empty Map -item.carrots.name=Carrot -item.carrotGolden.name=Golden Carrot -item.potato.name=Potato -item.potatoBaked.name=Baked Potato -item.potatoPoisonous.name=Poisonous Potato -item.skull.skeleton.name=Skeleton Skull -item.skull.wither.name=Wither Skeleton Skull -item.skull.zombie.name=Zombie Head -item.skull.char.name=Head -item.skull.player.name=%s's Head -item.skull.creeper.name=Creeper Head -item.carrotOnAStick.name=Carrot on a Stick -item.netherStar.name=Nether Star -item.pumpkinPie.name=Pumpkin Pie -item.enchantedBook.name=Enchanted Book -item.fireworks.name=Firework Rocket -item.fireworks.flight=Flight Duration: -item.fireworksCharge.name=Firework Star -item.fireworksCharge.black=Black -item.fireworksCharge.red=Red -item.fireworksCharge.green=Green -item.fireworksCharge.brown=Brown -item.fireworksCharge.blue=Blue -item.fireworksCharge.purple=Purple -item.fireworksCharge.cyan=Cyan -item.fireworksCharge.silver=Light Gray -item.fireworksCharge.gray=Gray -item.fireworksCharge.pink=Pink -item.fireworksCharge.lime=Lime -item.fireworksCharge.yellow=Yellow -item.fireworksCharge.lightBlue=Light Blue -item.fireworksCharge.magenta=Magenta -item.fireworksCharge.orange=Orange -item.fireworksCharge.white=White -item.fireworksCharge.customColor=Custom -item.fireworksCharge.fadeTo=Fade to -item.fireworksCharge.flicker=Twinkle -item.fireworksCharge.trail=Trail -item.fireworksCharge.type.0=Small Ball -item.fireworksCharge.type.1=Large Ball -item.fireworksCharge.type.2=Star-shaped -item.fireworksCharge.type.3=Creeper-shaped -item.fireworksCharge.type.4=Burst -item.fireworksCharge.type=Unknown Shape -item.netherbrick.name=Nether Brick -item.netherquartz.name=Nether Quartz -item.horsearmormetal.name=Iron Horse Armor -item.horsearmorgold.name=Gold Horse Armor -item.horsearmordiamond.name=Diamond Horse Armor - -container.inventory=Inventory -container.hopper=Item Hopper -container.crafting=Crafting -container.dispenser=Dispenser -container.dropper=Dropper -container.furnace=Furnace -container.enchant=Enchant -container.repair=Repair & Name -container.repair.cost=Enchantment Cost: %1$d -container.repair.expensive=Too Expensive! -container.creative=Item Selection -container.brewing=Brewing Stand -container.chest=Chest -container.chestDouble=Large Chest -container.minecart=Minecart -container.enderchest=Ender Chest - -item.dyed=Dyed -item.unbreakable=Unbreakable - -entity.Item.name=Item -entity.XPOrb.name=Experience Orb -entity.SmallFireball.name=Small Fireball -entity.Fireball.name=Fireball - -entity.Arrow.name=Arrow -entity.Snowball.name=Snowball -entity.Painting.name=Painting - -entity.Mob.name=Mob -entity.Monster.name=Monster - -entity.Creeper.name=Creeper -entity.Skeleton.name=Skeleton -entity.Spider.name=Spider -entity.Giant.name=Giant -entity.Zombie.name=Zombie -entity.Slime.name=Slime -entity.Ghast.name=Ghast -entity.PigZombie.name=Zombie Pigman -entity.Enderman.name=Enderman -entity.Silverfish.name=Silverfish -entity.CaveSpider.name=Cave Spider -entity.Blaze.name=Blaze -entity.LavaSlime.name=Magma Cube -entity.MushroomCow.name=Mooshroom -entity.Villager.name=Villager -entity.VillagerGolem.name=Iron Golem -entity.SnowMan.name=Snow Golem -entity.EnderDragon.name=Ender Dragon -entity.WitherBoss.name=Wither -entity.Witch.name=Witch - -entity.Pig.name=Pig -entity.Sheep.name=Sheep -entity.Cow.name=Cow -entity.Chicken.name=Chicken -entity.Squid.name=Squid -entity.Wolf.name=Wolf -entity.Ozelot.name=Ocelot -entity.Cat.name=Cat -entity.Bat.name=Bat -entity.EntityHorse.name=Horse -entity.horse.name=Horse -entity.donkey.name=Donkey -entity.mule.name=Mule -entity.skeletonhorse.name=Skeleton Horse -entity.zombiehorse.name=Zombie Horse - -entity.PrimedTnt.name=Block of TNT -entity.FallingSand.name=Falling Block - -entity.Minecart.name=Minecart -entity.Boat.name=Boat - -entity.Arrow.name=arrow -entity.generic.name=unknown - -death.fell.accident.ladder=%1$s fell off a ladder -death.fell.accident.vines=%1$s fell off some vines -death.fell.accident.water=%1$s fell out of the water -death.fell.accident.generic=%1$s fell from a high place -death.fell.killer=%1$s was doomed to fall -death.fell.assist=%1$s was doomed to fall by %2$s -death.fell.assist.item=%1$s was doomed to fall by %2$s using %3$s -death.fell.finish=%1$s fell too far and was finished by %2$s -death.fell.finish.item=%1$s fell too far and was finished by %2$s using %3$s - -death.attack.inFire=%1$s went up in flames -death.attack.inFire.player=%1$s walked into fire whilst fighting %2$s -death.attack.onFire=%1$s burned to death -death.attack.onFire.player=%1$s was burnt to a crisp whilst fighting %2$s -death.attack.lava=%1$s tried to swim in lava -death.attack.lava.player=%1$s tried to swim in lava to escape %2$s -death.attack.inWall=%1$s suffocated in a wall -death.attack.drown=%1$s drowned -death.attack.drown.player=%1$s drowned whilst trying to escape %2$s -death.attack.starve=%1$s starved to death -death.attack.cactus=%1$s was pricked to death -death.attack.cactus.player=%1$s walked into a cactus whilst trying to escape %2$s -death.attack.generic=%1$s died -death.attack.explosion=%1$s blew up -death.attack.explosion.player=%1$s was blown up by %2$s -death.attack.magic=%1$s was killed by magic -death.attack.wither=%1$s withered away -death.attack.anvil=%1$s was squashed by a falling anvil -death.attack.fallingBlock=%1$s was squashed by a falling block -death.attack.mob=%1$s was slain by %2$s -death.attack.player=%1$s was slain by %2$s -death.attack.player.item=%1$s was slain by %2$s using %3$s -death.attack.arrow=%1$s was shot by %2$s -death.attack.arrow.item=%1$s was shot by %2$s using %3$s -death.attack.fireball=%1$s was fireballed by %2$s -death.attack.fireball.item=%1$s was fireballed by %2$s using %3$s -death.attack.thrown=%1$s was pummeled by %2$s -death.attack.thrown.item=%1$s was pummeled by %2$s using %3$s -death.attack.indirectMagic=%1$s was killed by %2$s using magic -death.attack.indirectMagic.item=%1$s was killed by %2$s using %3$s -death.attack.thorns=%1$s was killed trying to hurt %2$s -death.attack.fall=%1$s hit the ground too hard -death.attack.outOfWorld=%1$s fell out of the world - -deathScreen.respawn=Respawn -deathScreen.deleteWorld=Delete world -deathScreen.titleScreen=Title screen -deathScreen.score=Score -deathScreen.title.hardcore=Game over! -deathScreen.hardcoreInfo=You cannot respawn in hardcore mode! -deathScreen.title=You died! -deathScreen.leaveServer=Leave server -deathScreen.quit.confirm=Are you sure you want to quit? - -potion.effects.whenDrank=When Applied: -potion.empty=No Effects -potion.moveSpeed=Speed -potion.moveSlowdown=Slowness -potion.digSpeed=Haste -potion.digSlowDown=Mining Fatigue -potion.damageBoost=Strength -potion.weakness=Weakness -potion.heal=Instant Health -potion.harm=Instant Damage -potion.jump=Jump Boost -potion.confusion=Nausea -potion.regeneration=Regeneration -potion.resistance=Resistance -potion.fireResistance=Fire Resistance -potion.waterBreathing=Water Breathing -potion.invisibility=Invisibility -potion.blindness=Blindness -potion.nightVision=Night Vision -potion.hunger=Hunger -potion.poison=Poison -potion.wither=Wither -potion.healthBoost=Health Boost -potion.absorption=Absorption -potion.saturation=Saturation - -potion.moveSpeed.postfix=Potion of Swiftness -potion.moveSlowdown.postfix=Potion of Slowness -potion.digSpeed.postfix=Potion of Haste -potion.digSlowDown.postfix=Potion of Dullness -potion.damageBoost.postfix=Potion of Strength -potion.weakness.postfix=Potion of Weakness -potion.heal.postfix=Potion of Healing -potion.harm.postfix=Potion of Harming -potion.jump.postfix=Potion of Leaping -potion.confusion.postfix=Potion of Nausea -potion.regeneration.postfix=Potion of Regeneration -potion.resistance.postfix=Potion of Resistance -potion.fireResistance.postfix=Potion of Fire Resistance -potion.waterBreathing.postfix=Potion of Water Breathing -potion.invisibility.postfix=Potion of Invisibility -potion.blindness.postfix=Potion of Blindness -potion.nightVision.postfix=Potion of Night Vision -potion.hunger.postfix=Potion of Hunger -potion.poison.postfix=Potion of Poison -potion.wither.postfix=Potion of Decay -potion.healthBoost.postfix=Potion of Health Boost -potion.absorption.postfix=Potion of Absorption -potion.saturation.postfix=Potion of Saturation - -potion.potency.0= -potion.potency.1=II -potion.potency.2=III -potion.potency.3=IV - -potion.prefix.grenade=Splash -potion.prefix.mundane=Mundane -potion.prefix.uninteresting=Uninteresting -potion.prefix.bland=Bland -potion.prefix.clear=Clear -potion.prefix.milky=Milky -potion.prefix.diffuse=Diffuse -potion.prefix.artless=Artless -potion.prefix.thin=Thin -potion.prefix.awkward=Awkward -potion.prefix.flat=Flat -potion.prefix.bulky=Bulky -potion.prefix.bungling=Bungling -potion.prefix.buttered=Buttered -potion.prefix.smooth=Smooth -potion.prefix.suave=Suave -potion.prefix.debonair=Debonair -potion.prefix.thick=Thick -potion.prefix.elegant=Elegant -potion.prefix.fancy=Fancy -potion.prefix.charming=Charming -potion.prefix.dashing=Dashing -potion.prefix.refined=Refined -potion.prefix.cordial=Cordial -potion.prefix.sparkling=Sparkling -potion.prefix.potent=Potent -potion.prefix.foul=Foul -potion.prefix.odorless=Odorless -potion.prefix.rank=Rank -potion.prefix.harsh=Harsh -potion.prefix.acrid=Acrid -potion.prefix.gross=Gross -potion.prefix.stinky=Stinky - -enchantment.damage.all=Sharpness -enchantment.damage.undead=Smite -enchantment.damage.arthropods=Bane of Arthropods -enchantment.knockback=Knockback -enchantment.fire=Fire Aspect -enchantment.protect.all=Protection -enchantment.protect.fire=Fire Protection -enchantment.protect.fall=Feather Falling -enchantment.protect.explosion=Blast Protection -enchantment.protect.projectile=Projectile Protection -enchantment.oxygen=Respiration -enchantment.waterWorker=Aqua Affinity -enchantment.digging=Efficiency -enchantment.untouching=Silk Touch -enchantment.durability=Unbreaking -enchantment.lootBonus=Looting -enchantment.lootBonusDigger=Fortune -enchantment.lootBonusFishing=Luck of the Sea -enchantment.fishingSpeed=Lure -enchantment.arrowDamage=Power -enchantment.arrowFire=Flame -enchantment.arrowKnockback=Punch -enchantment.arrowInfinite=Infinity -enchantment.thorns=Thorns - -enchantment.level.1=I -enchantment.level.2=II -enchantment.level.3=III -enchantment.level.4=IV -enchantment.level.5=V -enchantment.level.6=VI -enchantment.level.7=VII -enchantment.level.8=VIII -enchantment.level.9=IX -enchantment.level.10=X - -gui.achievements=Achievements -gui.stats=Statistics - -stats.tooltip.type.achievement=Achievement -stats.tooltip.type.statistic=Statistic -stat.generalButton=General -stat.blocksButton=Blocks -stat.itemsButton=Items -stat.mobsButton=Mobs - -stat.used=Times Used -stat.mined=Times Mined -stat.depleted=Times Depleted -stat.crafted=Times Crafted -stat.entityKills=You killed %d %s -stat.entityKilledBy=%s killed you %d time(s) -stat.entityKills.none=You have never killed %s -stat.entityKilledBy.none=You have never been killed by %s - -stat.startGame=Times played -stat.createWorld=Worlds created -stat.loadWorld=Saves loaded -stat.joinMultiplayer=Multiplayer joins -stat.leaveGame=Games quit - -stat.playOneMinute=Minutes Played - -stat.walkOneCm=Distance Walked -stat.fallOneCm=Distance Fallen -stat.swimOneCm=Distance Swum -stat.flyOneCm=Distance Flown -stat.climbOneCm=Distance Climbed -stat.diveOneCm=Distance Dove -stat.minecartOneCm=Distance by Minecart -stat.boatOneCm=Distance by Boat -stat.pigOneCm=Distance by Pig -stat.horseOneCm=Distance by Horse -stat.jump=Jumps -stat.drop=Items Dropped - -stat.damageDealt=Damage Dealt -stat.damageTaken=Damage Taken -stat.deaths=Number of Deaths -stat.mobKills=Mob Kills -stat.animalsBred=Animals Bred -stat.playerKills=Player Kills -stat.fishCaught=Fish Caught -stat.treasureFished=Treasure Fished -stat.junkFished=Junk Fished - -stat.mineBlock=%1$s Mined -stat.craftItem=%1$s Crafted -stat.useItem=%1$s Used -stat.breakItem=%1$s Depleted - -achievement.get=Achievement get! - -achievement.taken=Taken! -achievement.unknown=??? - -achievement.requires=Requires '%1$s' -achievement.openInventory=Taking Inventory -achievement.openInventory.desc=Press '%1$s' to open your inventory. -achievement.mineWood=Getting Wood -achievement.mineWood.desc=Attack a tree until a block of wood pops out -achievement.buildWorkBench=Benchmarking -achievement.buildWorkBench.desc=Craft a workbench with four blocks of planks -achievement.buildPickaxe=Time to Mine! -achievement.buildPickaxe.desc=Use planks and sticks to make a pickaxe -achievement.buildFurnace=Hot Topic -achievement.buildFurnace.desc=Construct a furnace out of eight stone blocks -achievement.acquireIron=Acquire Hardware -achievement.acquireIron.desc=Smelt an iron ingot -achievement.buildHoe=Time to Farm! -achievement.buildHoe.desc=Use planks and sticks to make a hoe -achievement.makeBread=Bake Bread -achievement.makeBread.desc=Turn wheat into bread -achievement.bakeCake=The Lie -achievement.bakeCake.desc=Wheat, sugar, milk and eggs! -achievement.buildBetterPickaxe=Getting an Upgrade -achievement.buildBetterPickaxe.desc=Construct a better pickaxe -achievement.cookFish=Delicious Fish -achievement.cookFish.desc=Catch and cook fish! -achievement.onARail=On A Rail -achievement.onARail.desc=Travel by minecart at least 1 km from where you started -achievement.buildSword=Time to Strike! -achievement.buildSword.desc=Use planks and sticks to make a sword -achievement.killEnemy=Monster Hunter -achievement.killEnemy.desc=Attack and destroy a monster -achievement.killCow=Cow Tipper -achievement.killCow.desc=Harvest some leather -achievement.breedCow=Repopulation -achievement.breedCow.desc=Breed two cows with wheat -achievement.flyPig=When Pigs Fly -achievement.flyPig.desc=Fly a pig off a cliff -achievement.snipeSkeleton=Sniper Duel -achievement.snipeSkeleton.desc=Kill a skeleton with an arrow from more than 50 meters -achievement.diamonds=DIAMONDS! -achievement.diamonds.desc=Acquire diamonds with your iron tools -achievement.diamondsToYou=Diamonds to you! -achievement.diamondsToYou.desc=Throw diamonds at another player. -achievement.portal=We Need to Go Deeper -achievement.portal.desc=Build a portal to the Nether -achievement.ghast=Return to Sender -achievement.ghast.desc=Destroy a Ghast with a fireball -achievement.blazeRod=Into Fire -achievement.blazeRod.desc=Relieve a Blaze of its rod -achievement.potion=Local Brewery -achievement.potion.desc=Brew a potion -achievement.theEnd=The End? -achievement.theEnd.desc=Locate the End -achievement.theEnd2=The End. -achievement.theEnd2.desc=Defeat the Ender Dragon -achievement.spawnWither=The Beginning? -achievement.spawnWither.desc=Spawn the Wither -achievement.killWither=The Beginning. -achievement.killWither.desc=Kill the Wither -achievement.fullBeacon=Beaconator -achievement.fullBeacon.desc=Create a full beacon -achievement.exploreAllBiomes=Adventuring Time -achievement.exploreAllBiomes.desc=Discover all biomes -achievement.enchantments=Enchanter -achievement.enchantments.desc=Use a book, obsidian and diamonds to construct an enchantment table -achievement.overkill=Overkill -achievement.overkill.desc=Deal eight hearts of damage in a single hit -achievement.bookcase=Librarian -achievement.bookcase.desc=Build some bookshelves to improve your enchantment table - -commands.generic.exception=An unknown error occurred while attempting to perform this command -commands.generic.permission=You do not have permission to use this command -commands.generic.syntax=Invalid command syntax -commands.generic.player.notFound=That player cannot be found -commands.generic.notFound=Unknown command. Try /help for a list of commands -commands.generic.num.invalid='%s' is not a valid number -commands.generic.boolean.invalid='%s' is not true or false -commands.generic.num.tooSmall=The number you have entered (%d) is too small, it must be at least %d -commands.generic.num.tooBig=The number you have entered (%d) is too big, it must be at most %d -commands.generic.double.tooSmall=The number you have entered (%.2f) is too small, it must be at least %.2f -commands.generic.double.tooBig=The number you have entered (%.2f) is too big, it must be at most %.2f -commands.generic.usage=Usage: %s -commands.generic.deprecatedId=Warning: Using numeric IDs will not be supported in the future. Please use names, such as '%s' - -commands.setidletimeout.usage=/setidletimeout -commands.setidletimeout.success=Successfully set the idle timeout to %d minutes. -commands.xp.failure.widthdrawXp=Cannot give player negative experience points -commands.xp.success=Given %d experience to %s -commands.xp.success.levels=Given %d levels to %s -commands.xp.success.negative.levels=Taken %d levels from %s -commands.xp.usage=/xp [player] OR /xp L [player] -commands.playsound.usage=/playsound [x] [y] [z] [volume] [pitch] [minimumVolume] -commands.playsound.success=Played sound '%s' to %s -commands.playsound.playerTooFar=Player %s is too far away to hear the sound -commands.give.usage=/give [amount] [data] [dataTag] -commands.give.notFound=There is no such item with ID %d -commands.give.success=Given %s * %d to %s -commands.give.tagError=Data tag parsing failed: %s -commands.summon.usage=/summon [x] [y] [z] [dataTag] -commands.summon.success=Object successfully summoned -commands.summon.failed=Unable to summon object -commands.summon.tagError=Data tag parsing failed: %s -commands.summon.outOfWorld=Cannot summon the object out of the world -commands.testforblock.usage=/testforblock [dataValue] [dataTag] -commands.testforblock.failed.tile=The block at %d,%d,%d is %s (expected: %s). -commands.testforblock.failed.data=The block at %d,%d,%d had the data value of %s (expected: %s). -commands.testforblock.failed.nbt=The block at %d,%d,%d did not have the required NBT keys. -commands.testforblock.failed.tileEntity=The block at %d,%d,%d is not a tile entity and cannot support tag matching. -commands.testforblock.success=Successfully found the block at %d,%d,%d. -commands.testforblock.outOfWorld=Cannot test for block outside of the world -commands.setblock.usage=/setblock [dataValue] [oldBlockHandling] [dataTag] -commands.setblock.success=Block placed -commands.setblock.failed=Unable to place block -commands.setblock.tagError=Data tag parsing failed: %s -commands.setblock.outOfWorld=Cannot place block outside of the world -commands.setblock.notFound=There is no such block with ID/name %s -commands.setblock.noChange=The block couldn't be placed -commands.effect.usage=/effect [seconds] [amplifier] -commands.effect.notFound=There is no such mob effect with ID %d -commands.effect.success=Given %1$s (ID %2$d) * %3$d to %4$s for %5$d seconds -commands.effect.success.removed=Took %1$s from %2$s -commands.effect.success.removed.all=Took all effects from %s -commands.effect.failure.notActive=Couldn't take %1$s from %2$s as they do not have the effect -commands.effect.failure.notActive.all=Couldn't take any effects from %s as they do not have any -commands.enchant.usage=/enchant [level] -commands.enchant.notFound=There is no such enchantment with ID %d -commands.enchant.noItem=The target doesn't hold an item -commands.enchant.cantEnchant=The selected enchantment can't be added to the target item -commands.enchant.cantCombine=%1$s can't be combined with %2$s -commands.enchant.success=Enchanting succeeded -commands.clear.usage=/clear [item] [data] -commands.clear.success=Cleared the inventory of %s, removing %d items -commands.clear.failure=Could not clear the inventory of %s, no items to remove -commands.downfall.usage=/toggledownfall -commands.downfall.success=Toggled downfall -commands.time.usage=/time -commands.time.added=Added %d to the time -commands.time.set=Set the time to %d -commands.players.usage=/list -commands.players.list=There are %d/%d players online: -commands.banlist.ips=There are %d total banned IP addresses: -commands.banlist.players=There are %d total banned players: -commands.banlist.usage=/banlist [ips|players] -commands.kill.usage=/kill -commands.kill.success=Ouch! That looked like it hurt -commands.kick.success=Kicked %s from the game -commands.kick.success.reason=Kicked %s from the game: '%s' -commands.kick.usage=/kick [reason ...] -commands.op.success=Opped %s -commands.op.failed=Could not op %s -commands.op.usage=/op -commands.deop.success=De-opped %s -commands.deop.failed=Could not de-op %s -commands.deop.usage=/deop -commands.say.usage=/say -commands.ban.success=Banned player %s -commands.ban.failed=Could not ban player %s -commands.ban.usage=/ban [reason ...] -commands.unban.success=Unbanned player %s -commands.unban.failed=Could not unban player %s -commands.unban.usage=/pardon -commands.banip.invalid=You have entered an invalid IP address or a player that is not online -commands.banip.success=Banned IP address %s -commands.banip.success.players=Banned IP address %s belonging to %s -commands.banip.usage=/ban-ip [reason ...] -commands.unbanip.invalid=You have entered an invalid IP address -commands.unbanip.success=Unbanned IP address %s -commands.unbanip.usage=/pardon-ip
-commands.save.usage=/save-all -commands.save-on.alreadyOn=Saving is already turned on. -commands.save-on.usage=/save-on -commands.save-off.alreadyOff=Saving is already turned off. -commands.save-off.usage=/save-off -commands.save.enabled=Turned on world auto-saving -commands.save.disabled=Turned off world auto-saving -commands.save.start=Saving... -commands.save.success=Saved the world -commands.save.failed=Saving failed: %s -commands.stop.usage=/stop -commands.stop.start=Stopping the server -commands.tp.success=Teleported %s to %s -commands.tp.success.coordinates=Teleported %s to %.2f,%.2f,%.2f -commands.tp.usage=/tp [target player] OR /tp [target player] -commands.tp.notSameDimension=Unable to teleport because players are not in the same dimension -commands.whitelist.list=There are %d (out of %d seen) whitelisted players: -commands.whitelist.enabled=Turned on the whitelist -commands.whitelist.disabled=Turned off the whitelist -commands.whitelist.reloaded=Reloaded the whitelist -commands.whitelist.add.success=Added %s to the whitelist -commands.whitelist.add.failed=Could not add %s to the whitelist -commands.whitelist.add.usage=/whitelist add -commands.whitelist.remove.success=Removed %s from the whitelist -commands.whitelist.remove.failed=Could not remove %s from the whitelist -commands.whitelist.remove.usage=/whitelist remove -commands.whitelist.usage=/whitelist -commands.scoreboard.usage=/scoreboard -commands.scoreboard.teamNotFound=No team was found by the name '%s' -commands.scoreboard.objectiveNotFound=No objective was found by the name '%s' -commands.scoreboard.objectiveReadOnly=The objective '%s' is read-only and cannot be set -commands.scoreboard.objectives.usage=/scoreboard objectives -commands.scoreboard.objectives.setdisplay.usage=/scoreboard objectives setdisplay [objective] -commands.scoreboard.objectives.setdisplay.invalidSlot=No such display slot '%s' -commands.scoreboard.objectives.setdisplay.successCleared=Cleared objective display slot '%s' -commands.scoreboard.objectives.setdisplay.successSet=Set the display objective in slot '%s' to '%s' -commands.scoreboard.objectives.add.usage=/scoreboard objectives add [display name ...] -commands.scoreboard.objectives.add.wrongType=Invalid objective criteria type '%s' -commands.scoreboard.objectives.add.alreadyExists=An objective with the name '%s' already exists -commands.scoreboard.objectives.add.tooLong=The name '%s' is too long for an objective, it can be at most %d characters long -commands.scoreboard.objectives.add.displayTooLong=The display name '%s' is too long for an objective, it can be at most %d characters long -commands.scoreboard.objectives.add.success=Added new objective '%s' successfully -commands.scoreboard.objectives.remove.usage=/scoreboard objectives remove -commands.scoreboard.objectives.remove.success=Removed objective '%s' successfully -commands.scoreboard.objectives.list.count=Showing %d objective(s) on scoreboard: -commands.scoreboard.objectives.list.entry=- %s: displays as '%s' and is type '%s' -commands.scoreboard.objectives.list.empty=There are no objectives on the scoreboard -commands.scoreboard.players.usage=/scoreboard players -commands.scoreboard.players.set.success=Set score of %s for player %s to %d -commands.scoreboard.players.set.usage=/scoreboard players set -commands.scoreboard.players.add.usage=/scoreboard players add -commands.scoreboard.players.remove.usage=/scoreboard players remove -commands.scoreboard.players.reset.usage=/scoreboard players reset -commands.scoreboard.players.reset.success=Reset all scores of player %s -commands.scoreboard.players.list.usage=/scoreboard players list [name] -commands.scoreboard.players.list.count=Showing %d tracked players on the scoreboard: -commands.scoreboard.players.list.empty=There are no tracked players on the scoreboard -commands.scoreboard.players.list.player.count=Showing %d tracked objective(s) for %s: -commands.scoreboard.players.list.player.entry=- %2$s: %1$d (%3$s) -commands.scoreboard.players.list.player.empty=Player %s has no scores recorded -commands.scoreboard.teams.usage=/scoreboard teams -commands.scoreboard.teams.add.usage=/scoreboard teams add [display name ...] -commands.scoreboard.teams.add.alreadyExists=A team with the name '%s' already exists -commands.scoreboard.teams.add.tooLong=The name '%s' is too long for a team, it can be at most %d characters long -commands.scoreboard.teams.add.displayTooLong=The display name '%s' is too long for a team, it can be at most %d characters long -commands.scoreboard.teams.add.success=Added new team '%s' successfully -commands.scoreboard.teams.list.usage=/scoreboard teams list [name] -commands.scoreboard.teams.list.count=Showing %d teams on the scoreboard: -commands.scoreboard.teams.list.entry=- %1$s: '%2$s' has %3$d players -commands.scoreboard.teams.list.empty=There are no teams registered on the scoreboard -commands.scoreboard.teams.list.player.count=Showing %d player(s) in team %s: -commands.scoreboard.teams.list.player.entry=- %2$s: %1$d (%3$s) -commands.scoreboard.teams.list.player.empty=Team %s has no players -commands.scoreboard.teams.empty.usage=/scoreboard teams empty -commands.scoreboard.teams.empty.alreadyEmpty=Team %s is already empty, cannot remove nonexistant players -commands.scoreboard.teams.empty.success=Removed all %d player(s) from team %s -commands.scoreboard.teams.remove.usage=/scoreboard teams remove -commands.scoreboard.teams.remove.success=Removed team %s -commands.scoreboard.teams.join.usage=/scoreboard teams join [player] -commands.scoreboard.teams.join.success=Added %d player(s) to team %s: %s -commands.scoreboard.teams.join.failure=Could not add %d player(s) to team %s: %s -commands.scoreboard.teams.leave.usage=/scoreboard teams leave [player] -commands.scoreboard.teams.leave.success=Removed %d player(s) from their teams: %s -commands.scoreboard.teams.leave.failure=Could not remove %d player(s) from their teams: %s -commands.scoreboard.teams.leave.noTeam=You are not in a team -commands.scoreboard.teams.option.usage=/scoreboard teams option -commands.scoreboard.teams.option.noValue=Valid values for option %s are: %s -commands.scoreboard.teams.option.success=Set option %s for team %s to %s -commands.gamemode.success.self=Set own game mode to %s -commands.gamemode.success.other=Set %s's game mode to %s -commands.gamemode.usage=/gamemode [player] -commands.defaultgamemode.usage=/defaultgamemode -commands.defaultgamemode.success=The world's default game mode is now %s -commands.me.usage=/me -commands.help.header=--- Showing help page %d of %d (/help ) --- -commands.help.footer=Tip: Use the key while typing a command to auto-complete the command or its arguments -commands.help.usage=/help [page|command name] -commands.publish.usage=/publish -commands.publish.started=Local game hosted on port %s -commands.publish.failed=Unable to host local game -commands.debug.start=Started debug profiling -commands.debug.stop=Stopped debug profiling after %.2f seconds (%d ticks) -commands.debug.notStarted=Can't stop profiling when we haven't started yet! -commands.debug.usage=/debug -commands.tellraw.usage=/tellraw -commands.tellraw.jsonException=Invalid json: %s -commands.message.usage=/tell -commands.message.sameTarget=You can't send a private message to yourself! -commands.message.display.outgoing=You whisper to %s: %s -commands.message.display.incoming=%s whispers to you: %s -commands.difficulty.usage=/difficulty -commands.difficulty.success=Set game difficulty to %s -commands.spawnpoint.usage=/spawnpoint OR /spawnpoint OR /spawnpoint -commands.spawnpoint.success=Set %s's spawn point to (%d, %d, %d) -commands.setworldspawn.usage=/setworldspawn OR /setworldspawn -commands.setworldspawn.success=Set the world spawn point to (%d, %d, %d) -commands.gamerule.usage=/gamerule OR /gamerule -commands.gamerule.success=Game rule has been updated -commands.gamerule.norule=No game rule called '%s' is available -commands.weather.usage=/weather [duration in seconds] -commands.weather.clear=Changing to clear weather -commands.weather.rain=Changing to rainy weather -commands.weather.thunder=Changing to rain and thunder -commands.testfor.usage=/testfor -commands.testfor.failed=/testfor is only usable by commandblocks with analog output -commands.seed.usage=/seed -commands.seed.success=Seed: %s -commands.spreadplayers.usage=/spreadplayers -commands.spreadplayers.spreading.teams=Spreading %s teams %s blocks around %s,%s (min %s blocks apart) -commands.spreadplayers.spreading.players=Spreading %s players %s blocks around %s,%s (min %s blocks apart) -commands.spreadplayers.success.teams=Successfully spread %s teams around %s,%s -commands.spreadplayers.success.players=Successfully spread %s players around %s,%s -commands.spreadplayers.info.teams=(Average distance between teams is %s blocks apart after %s iterations) -commands.spreadplayers.info.players=(Average distance between players is %s blocks apart after %s iterations) -commands.spreadplayers.failure.teams=Could not spread %s teams around %s,%s (too many players for space - try using spread of at most %s) -commands.spreadplayers.failure.players=Could not spread %s players around %s,%s (too many players for space - try using spread of at most %s) -commands.achievement.usage=/achievement give [player] -commands.achievement.unknownAchievement=Unknown achievement or statistic '%s' -commands.achievement.give.success.all=Successfully given all achievements to %s -commands.achievement.give.success.one=Successfully given %s the stat %s -commands.achievement.statTooLow=Player %s does not have the stat %s - -itemGroup.buildingBlocks=Building Blocks -itemGroup.decorations=Decoration Blocks -itemGroup.redstone=Redstone -itemGroup.transportation=Transportation -itemGroup.misc=Miscellaneous -itemGroup.search=Search Items -itemGroup.food=Foodstuffs -itemGroup.tools=Tools -itemGroup.combat=Combat -itemGroup.brewing=Brewing -itemGroup.materials=Materials -itemGroup.inventory=Survival Inventory - -inventory.binSlot=Destroy Item - -advMode.setCommand=Set Console Command for Block -advMode.setCommand.success=Command set: %s -advMode.command=Console Command -advMode.nearestPlayer=Use "@p" to target nearest player -advMode.randomPlayer=Use "@r" to target random player -advMode.allPlayers=Use "@a" to target all players -advMode.previousOutput=Previous Output - -advMode.notEnabled=Command blocks are not enabled on this server -advMode.notAllowed=Must be an opped player in creative mode - -mount.onboard=Press %1$s to dismount - -build.tooHigh=Height limit for building is %s blocks - -attribute.modifier.plus.0=+%d %s -attribute.modifier.plus.1=+%d%% %s -attribute.modifier.plus.2=+%d%% %s -attribute.modifier.take.0=-%d %s -attribute.modifier.take.1=-%d%% %s -attribute.modifier.take.2=-%d%% %s - -attribute.name.horse.jumpStrength=Horse Jump Strength -attribute.name.zombie.spawnReinforcements=Zombie Reinforcements -attribute.name.generic.maxHealth=Max Health -attribute.name.generic.followRange=Mob Follow Range -attribute.name.generic.knockbackResistance=Knockback Resistance -attribute.name.generic.movementSpeed=Speed -attribute.name.generic.attackDamage=Attack Damage - -screenshot.success=Saved screenshot as %s -screenshot.failure=Couldn't save screenshot: %s - -stream.user.mode.moderator=Moderator -stream.user.mode.moderator.self=Moderator on your channel -stream.user.mode.moderator.other=Moderator on %s's channel -stream.user.mode.broadcaster=Broadcaster -stream.user.mode.broadcaster.self=Broadcaster (You!) -stream.user.mode.broadcaster.other=Broadcaster -stream.user.mode.administrator=Twitch Administrator -stream.user.mode.staff=Twitch Staff -stream.user.mode.banned=Banned -stream.user.mode.banned.self=Banned on your channel -stream.user.mode.banned.other=Banned on %s's channel -stream.user.subscription.subscriber=Subscriber -stream.user.subscription.subscriber.self=Subscriber to your channel -stream.user.subscription.subscriber.other=Subscriber to %s's channel -stream.user.subscription.turbo=Twitch Turbo - -stream.unavailable.title=Twitch Broadcasting Unavailable -stream.unavailable.report_to_mojang=Report to Mojang - -stream.confirm_start=Are you sure you want to start broadcasting? - -stream.unavailable.account_not_bound=Before you can broadcast Minecraft through Twitch, you will need to link your Twitch account on mojang.com. Would you like to do that now? -stream.unavailable.account_not_bound.okay=Link Accounts -stream.unavailable.account_not_migrated=Before you can broadcast Minecraft through Twitch, you will need to migrate your Minecraft account to a Mojang account. Would you like to do that now? -stream.unavailable.account_not_migrated.okay=Migrate Account -stream.unavailable.failed_auth=Authentication to Twitch failed. Please go to mojang.com and rebind your Twitch account. -stream.unavailable.failed_auth.okay=Rebind Accounts -stream.unavailable.failed_auth_error=Unable to authenticate to Twitch. Please try again later. -stream.unavailable.initialization_failure=Unable to initialize the Twitch SDK. -stream.unavailable.initialization_failure.extra=(Reason: %s) -stream.unavailable.library_arch_mismatch=The custom java version used to launch Minecraft has a different architecture than the one used to run the launcher. Please make sure these are the same, either 32-bit or 64-bit for both. -stream.unavailable.library_failure=Unable to load the libraries needed for the integrated Twitch broadcasting service. -stream.unavailable.no_fbo=Your video card needs to support at least OpenGL version 3.0 or support Framebuffer Objects via an extension to use the integrated Twitch broadcasting. -stream.unavailable.no_fbo.version=You are currently using: %s -stream.unavailable.no_fbo.blend=Separate blending support via EXT is: %s -stream.unavailable.no_fbo.arb=Framebuffer object support via ARB is: %s -stream.unavailable.no_fbo.ext=Framebuffer object support via EXT is: %s -stream.unavailable.not_supported.windows=Unfortunately the integrated Twitch broadcasting requires a newer version of Windows than you are on. You must have at least Windows Vista or newer. -stream.unavailable.not_supported.mac=Unfortunately the integrated Twitch broadcasting on Mac requires a version of OSX newer than the one you are on. You must use 10.7 (Mac OS X Lion) or newer to be able to use this service. Would you like to visit apple.com to learn about upgrading? -stream.unavailable.not_supported.mac.okay=Upgrade -stream.unavailable.not_supported.other=Unfortunately the integrated Twitch broadcasting service requires Windows (Vista or newer) or Mac OS X (10.7/Lion or newer) -stream.unavailable.unknown=Unfortunately you cannot broadcast to Twitch at this time. And we don't know why :'( -stream.unavailable.unknown.chat=Could not start stream: %s - -stream.unavailable.soundflower.chat=Soundflower is required to be able to stream on Mac. %s -stream.unavailable.soundflower.chat.link=Please click here to install it. - -stream.userinfo.chatTooltip=Click to manage user -stream.userinfo.timeout=Timeout -stream.userinfo.ban=Ban -stream.userinfo.unban=Unban -stream.userinfo.mod=Promote to Moderator -stream.userinfo.unmod=Demote from Moderator - - -itemGroup.tabTest=Nuclear Tech Mod Test Tab -itemGroup.tabParts=NTM Resources and Parts -itemGroup.tabBlocks=NTM Blocks and Machines -itemGroup.tabNuke=NTM Bombs and Gear -itemGroup.tabMachine=NTM Templates - -hbmfluid.none=None -hbmfluid.water=Water -hbmfluid.lava=Lava -hbmfluid.uf6=Uranium Hexafluoride -hbmfluid.puf6=Plutonium Hexafluoride -hbmfluid.deuterium=Deuterium -hbmfluid.tritium=Tritium -hbmfluid.oil=Crude Oil -hbmfluid.smear=Industrial Oil -hbmfluid.reclaimed=Reclaimed Industrial Oil -hbmfluid.petroil=Petroil -hbmfluid.lubricant=Engine Lubricant -hbmfluid.diesel=Diesel -hbmfluid.kerosene=Kerosene -hbmfluid.gas=Natural Gas -hbmfluid.coolant=Coolant -hbmfluid.amat=Antimatter -hbmfluid.aschrab=Antischrabidium - -item.record.lc.desc=Valve - Diabolic Adrenaline Guitar/Lambda Core -item.record.ss.desc=Valve - Sector Sweep -item.record.vc.desc=Valve - Vortal Combat - -death.attack.nuclearBlast=%1$s was blown away by a nuclear explosion. -death.attack.revolverBullet=%1$s was shot in the head by %2$s. -death.attack.mudPoisoning=%1$s died in poisonous mud. -death.attack.euthanized=%1$s was euthanized by %2$s. -death.attack.euthanizedSelf=%1$s euthanized himself, what a dork. -death.attack.euthanizedSelf2=%1$s wins the Darwin Award. -death.attack.tau=%1$s was riddeled by %2$s using negatively charged tauons. -death.attack.tauBlast=%1$s charged the XVL1456 for too long and was blown into pieces. -death.attack.chopperBullet=%1$s was rekt by %2$s. -death.attack.cmb=%1$s was fizzeled by %2$s. -death.attack.subAtomic=%1$s's atoms have been destroyed by %2$s. -death.attack.subAtomic2=%1$s was QPU-misaligned because %2$s tampered with his de facto speed. -death.attack.subAtomic3=%1$s's divergence dropped below 1 percent because of %2$s. -death.attack.subAtomic4=%1$s was divided by zero by %2$s. -death.attack.subAtomic5=%1$s was nullified by %2$s. -death.attack.radiation=%1$s died from radiation poisoning. -death.attack.acid=%1$s fell into acid. -death.attack.suicide=%1$s blew their head off. -death.attack.electrified=%1$s was electrified by %2$s. -death.attack.flamethrower=%1$s was cremated by %2$s. -death.attack.plasma=%1$s was immolated by %2$s. -death.attack.ice=%1$s was turned into a popsicle by %2$s. -death.attack.cheater=%1$s's intestines turned into oats. (???) -death.attack.laser=%1$s was turned into ash by %2$s. -death.attack.rubble=%1$s was squashed by debris. -death.attack.shrapnel=%1$s was ragged by a shrapnel. -death.attack.teleporter=%1$s was teleported into nothingness. -death.attack.blackhole=%1$s was spaghettified. - -item.redstone_sword.name=Redstone Sword -item.big_sword.name=Great Sword -item.test_nuke_igniter.name=Igniter -item.test_nuke_propellant.name=Propellant -item.test_nuke_tier1_shielding.name=Neutron Reflector (Tier 1) -item.test_nuke_tier2_shielding.name=Neutron Reflector (Tier 2) -item.test_nuke_tier1_bullet.name=U235 Projectile (Tier 1) -item.test_nuke_tier2_bullet.name=MOX Projectile (Tier 2) -item.test_nuke_tier1_target.name=Subcritical U235 Target (Tier 1) -item.test_nuke_tier2_target.name=Subcritical MOX Target (Tier 2) - -item.gadget_explosive.name=Propellant -item.gadget_explosive8.name=Bundle of Propellant -item.gadget_wireing.name=Wiring -item.gadget_core.name=Plutonium Core - -item.boy_igniter.name=Bomb Igniter -item.boy_propellant.name=Propellant -item.boy_bullet.name=U235 Projectile -item.boy_target.name=Subcritical U235 Target -item.boy_shielding.name=Neutron Shielding - -item.man_explosive.name=Propellant -item.man_explosive8.name=Bundle of Propellant -item.man_igniter.name=Bomb Igniter -item.man_core.name=Plutonium Core - -item.mike_core.name=Uranium Coated Deuterium Tank -item.mike_deut.name=Deuterium Tank -item.mike_cooling_unit.name=Deuterium Cooling Unit - -item.tsar_core.name=Tsar Bomba Core - -item.fleija_igniter.name=Pulse Igniter -item.fleija_propellant.name=Schrabidium Propellant -item.fleija_core.name=F.L.E.I.J.A. Uranium 235 Charge - -container.nukeGadget=The Gadget -container.nukeBoy=Little Boy -container.nukeMan=Fat Man -container.nukeMike=Ivy Mike -container.nukeTsar=Tsar Bomba -container.nukeFleija=F.L.E.I.J.A. -container.nukePrototype=The Prototype -container.nukeCustom=Custom Nuke - -container.bombMulti=Multi Purpose Bomb - -tile.nuke_gadget.name=The Gadget -tile.nuke_boy.name=Little Boy -tile.nuke_man.name=Fat Man -tile.nuke_mike.name=Ivy Mike -tile.nuke_tsar.name=Tsar Bomba -tile.nuke_fleija.name=F.L.E.I.J.A. -tile.nuke_prototype.name=The Prototype -tile.nuke_custom.name=Custom Nuke - -tile.bomb_multi.name=Multi Purpose Bomb - -tile.flame_war.name=Flame War in a Box -tile.float_bomb.name=Levitation Bomb -tile.therm_endo.name=Endothermic Bomb -tile.therm_exo.name=Exothermic Bomb - -tile.crashed_bomb.name=Dud - -tile.crate.name=Supply Crate -tile.marker_structure.name=Multiblock Structure Marker - -tile.machine_difurnace_off.name=Alloy Furnace -tile.machine_difurnace_on.name=Alloy Furnace -container.diFurnace=Alloy Furnace -tile.machine_centrifuge.name=Centrifuge -container.centrifuge=Centrifuge -tile.machine_uf6_tank.name=Uranium Hexafluoride Tank -container.uf6_tank=UF6 Tank -tile.machine_puf6_tank.name=Plutonium Hexafluoride Tank -container.puf6_tank=PuF6 Tank -tile.machine_reactor.name=Breeding Reactor -container.reactor=Breeding Reactor -tile.machine_nuke_furnace_off.name=Nuclear Powered Furnace -tile.machine_nuke_furnace_on.name=Nuclear Powered Furnace -container.nukeFurnace=Nuclear Powered Furnace -tile.machine_rtg_furnace_off.name=RTG Furnace -tile.machine_rtg_furnace_on.name=RTG Furnace -container.rtgFurnace=RTG Furnace -tile.machine_electric_furnace_off.name=Electric Furnace -tile.machine_electric_furnace_on.name=Electric Furnace -container.electricFurnace=Electric Furnace -tile.machine_generator.name=Nuclear Reactor -container.generator=Nuclear Reactor -tile.red_wire_coated.name=Coated Red Copper Cable -tile.machine_deuterium.name=Deuterium Extractor -container.machine_deuterium=Deuterium Extractor -tile.machine_battery.name=Energy Storage Block -container.battery=Energy Storage -tile.machine_coal_off.name=Coal Generator -tile.machine_coal_on.name=Coal Generator -container.machineCoal=Coal Generator -tile.launch_pad.name=Missile Launch Pad -container.launchPad=Missile Launch Pad -tile.book_guide.name=Hbm's Nuclear Tech Mod Manual -tile.machine_schrabidium_transmutator.name=Schrabidium Transmutation Device -container.machine_schrabidium_transmutator=Schrabidium Transmutation Device -tile.machine_diesel.name=Diesel Generator -container.machineDiesel=Diesel Generator -tile.machine_shredder.name=Shredder -container.machineShredder=Shredder -tile.machine_combine_factory.name=CMB Steel Furnace -container.machineCMB=CMB Steel Furnace -tile.machine_teleporter.name=Teleporter -container.teleporter=Teleporter -tile.machine_reix_mainframe.name=Rei-X Mainframe (WIP) -container.reix=Rei-X Mainframe -tile.machine_industrial_generator.name=Industrial Generator -container.iGenerator=Industrial Generator -tile.machine_cyclotron.name=Cyclotron -container.cyclotron=Cyclotron -tile.machine_well.name=Oil Derrick -tile.oil_pipe.name=Crude Oil Extraction Pipe -container.oilWell=Oil Derrick -tile.machine_refinery.name=Oil Refinery -container.machineRefinery=Oil Refinery -tile.oil_duct.name=Oil Pipe -tile.oil_duct_solid.name=Coated Oil Pipe -tile.machine_flare.name=Gas Flare -container.gasFlare=Gas Flare -tile.gas_duct.name=Gas Pipe -tile.gas_duct_solid.name=Coated Gas Pipe -tile.machine_drill.name=Automatic Mining Drill -container.miningDrill=Automatic Mining Drill -tile.machine_assembler.name=Assembly Machine -container.assembler=Assembly Machine -tile.machine_chemplant.name=Chemical Plant -container.chemplant=Chemical Plant - -tile.red_pylon.name=Electricity Pole -item.wiring_red_copper.name=Cable Drum - -tile.rail_highspeed.name=High Speed Rail -tile.rail_booster.name=High Speed Booster Rail - -tile.factory_titanium_hull.name=Basic Factory Casing -tile.factory_titanium_furnace.name=Basic Factory Access Hatch -tile.factory_titanium_conductor.name=Basic Factory Electricity Port -tile.factory_titanium_core.name=Basic Factory Core Component -item.factory_core_titanium.name=Basic Factory Energy Cluster -container.factoryTitanium=Basic Factory -tile.factory_advanced_hull.name=Advanced Factory Casing -tile.factory_advanced_furnace.name=Advanced Factory Access Hatch -tile.factory_advanced_conductor.name=Advanced Factory Electricity Port -tile.factory_advanced_core.name=Advanced Factory Core Component -item.factory_core_advanced.name=Advanced Factory Energy Cluster -container.factoryAdvanced=Advanced Factory - -tile.reactor_element.name=Reactor Chamber -tile.reactor_control.name=Control Rods -tile.reactor_hatch.name=Reactor Access Hatch -tile.reactor_conductor.name=Reactor Electricity Port -tile.reactor_computer.name=Reactor Control -container.reactorMultiblock=Big Nuclear Reactor - -tile.fusion_conductor.name=Superconducting Magnet -tile.fusion_center.name=Central Magnet Piece -tile.fusion_motor.name=Magnet Motor Piece -tile.fusion_heater.name=Plasma Heater -tile.fusion_hatch.name=Fusion Reactor Access Hatch -tile.fusion_core.name=Fusion Reactor Control -tile.plasma.name=Plasma -container.fusionMultiblock=Big Fusion Reactor - -tile.watz_element.name=Watz Reaction Chamber -tile.watz_control.name=Reinforced Control Rods -tile.watz_cooler.name=Watz Reactor Supercooler -tile.watz_end.name=Watz Reactor Stability Element -tile.watz_hatch.name=Watz Reactor Access Hatch -tile.watz_conductor.name=Watz Electricity Port -tile.watz_core.name=Watz Reactor Control -container.watzPowerplant=Watz Power Plant - -tile.fwatz_conductor.name=4000K Superconducting Magnet -tile.fwatz_cooler.name=Regenerative Coolant Fluid Tank Shell -tile.fwatz_tank.name=Regenerative Coolant Fluid Tank -tile.fwatz_scaffold.name=Fusionary Watz Plant Structural Support -tile.fwatz_hatch.name=Fusionary Watz Plant Access Hatch -tile.fwatz_computer.name=Fusionary Watz Reactor Calculation Matrix -tile.fwatz_core.name=Fusionary Watz Reactor Control -tile.fwatz_plasma.name=Destabilized Antischrabidium Plasma -container.fusionaryWatzPlant=Fusionary Watz Plant - -tile.machine_rtg_grey.name=RT Generator -container.rtg=RT Generator -tile.machine_rtg_red.name=Fulmination Generator -tile.machine_rtg_orange.name=Strong RT Generator -tile.machine_rtg_yellow.name=Australium Superfuel Reactor -tile.machine_rtg_green.name=Verticium Wealth Generator -tile.machine_rtg_cyan.name=Schrabidium Decay Generator (WIP) -tile.machine_rtg_blue.name=Convection Generator -tile.machine_rtg_purple.name=Antimatter Annihilation Generator - -item.assembly_template.TEST.name=Assembly Template: Test -item.assembly_template.MIXED_PLATE.name=Assembly Template: Mixed Plate -item.assembly_template.HAZMAT_CLOTH.name=Assembly Template: Hazmat Cloth -item.assembly_template.ASBESTOS_CLOTH.name=Assembly Template: Fire Proximity Cloth -item.assembly_template.COAL_FILTER.name=Assembly Template: Activated Carbon Filter -item.assembly_template.CENTRIFUGE_ELEMENT.name=Assembly Template: Centrifuge Element -item.assembly_template.CENTRIFUGE_TOWER.name=Assembly Template: Centrifuge Tower -item.assembly_template.DEE_MAGNET.name=Assembly Template: Dee Magnets -item.assembly_template.FLAT_MAGNET.name=Assembly Template: Flat Magnet -item.assembly_template.CYCLOTRON_TOWER.name=Assembly Template: Cyclotron Tower -item.assembly_template.REACTOR_CORE.name=Assembly Template: Breeding Reactor Core -item.assembly_template.RTG_UNIT.name=Assembly Template: RTG Unit -item.assembly_template.HEAT_UNIT.name=Assembly Template: Thermal Distribution Unit -item.assembly_template.GRAVITY_UNIT.name=Assembly Template: Gravity Manipulator -item.assembly_template.TITANIUM_DRILL.name=Assembly Template: Titanium Drill -item.assembly_template.TELEPAD.name=Assembly Template: Telepad -item.assembly_template.TELEKIT.name=Assembly Template: Entanglement Kit -item.assembly_template.GEASS_REACTOR.name=Assembly Template: Dysfunctional Nuclear Reactor -item.assembly_template.GENERATOR_FRONT.name=Assembly Template: Generator Front -item.assembly_template.WT1_GENERIC.name=Assembly Template: Small Warhead -item.assembly_template.WT2_GENERIC.name=Assembly Template: Medium Warhead -item.assembly_template.WT3_GENERIC.name=Assembly Template: Large Warhead -item.assembly_template.WT1_FIRE.name=Assembly Template: Small Incendiary Warhead -item.assembly_template.WT2_FIRE.name=Assembly Template: Medium Incendiary Warhead -item.assembly_template.WT3_FIRE.name=Assembly Template: Large Incendiary Warhead -item.assembly_template.WT1_CLUSTER.name=Assembly Template: Small Cluster Warhead -item.assembly_template.WT2_CLUSTER.name=Assembly Template: Medium Cluster Warhead -item.assembly_template.WT3_CLUSTER.name=Assembly Template: Large Cluster Warhead -item.assembly_template.WT1_BUSTER.name=Assembly Template: Small Bunker Buster Warhead -item.assembly_template.WT2_BUSTER.name=Assembly Template: Medium Bunker Buster Warhead -item.assembly_template.WT3_BUSTER.name=Assembly Template: Large Bunker Buster Warhead -item.assembly_template.W_NUCLEAR.name=Assembly Template: Nuclear Warhead -item.assembly_template.W_MIRVLET.name=Assembly Template: MIRV -item.assembly_template.W_MIRV.name=Assembly Template: Eightfold MIRV Warhead -item.assembly_template.W_ENDOTHERMIC.name=Assembly Template: Endothermic Warhead -item.assembly_template.W_EXOTHERMIC.name=Assembly Template: Exothermic Warhead -item.assembly_template.T1_TANK.name=Assembly Template: Small Fuel Tank -item.assembly_template.T2_TANK.name=Assembly Template: Medium Fuel Tank -item.assembly_template.T3_TANK.name=Assembly Template: Large Fuel Tank -item.assembly_template.T1_THRUSTER.name=Assembly Template: Small Thruster -item.assembly_template.T2_THRUSTER.name=Assembly Template: Medium Thruster -item.assembly_template.T3_THRUSTER.name=Assembly Template: Large Thruster -item.assembly_template.CHOPPER_HEAD.name=Assembly Template: Hunter Chopper Cockpit -item.assembly_template.CHOPPER_GUN.name=Assembly Template: Emplacement Gun -item.assembly_template.CHOPPER_BODY.name=Assembly Template: Hunter Chopper Body -item.assembly_template.CHOPPER_TAIL.name=Assembly Template: Hunter Chopper Tail -item.assembly_template.CHOPPER_WING.name=Assembly Template: Hunter Chopper Wing -item.assembly_template.CHOPPER_BLADES.name=Assembly Template: Hunter Chopper Rotor Blades -item.assembly_template.CIRCUIT_2.name=Assembly Template: Enhanced Circuit -item.assembly_template.CIRCUIT_3.name=Assembly Template: Advanced Circuit -item.assembly_template.RTG_PELLET.name=Assembly Template: Plutonium 238 Fuel Pellet -item.assembly_template.WEAK_PELLET.name=Assembly Template: Weak Uranium RTG Pellet -item.assembly_template.FUSION_PELLET.name=Assembly Template: Tritium-Deuterium-Cake -item.assembly_template.CLUSTER_PELLETS.name=Assembly Template: Explosive Pellets -item.assembly_template.GUN_PELLETS.name=Assembly Template: Lead Pellets - -item.fuse.name=Fuse - -tile.test_nuke.name=Test Nuke - -item.ingot_uranium.name=Uranium Ingot -item.ingot_u235.name=U235 Ingot -item.ingot_u238.name=U238 Ingot -item.ingot_plutonium.name=Plutonium Ingot -item.ingot_pu238.name=Pu238 Ingot -item.ingot_pu239.name=Pu239 Ingot -item.ingot_pu240.name=Pu240 Ingot -item.ingot_titanium.name=Titanium Ingot -item.sulfur.name=Sulfur - -item.niter.name=Niter -item.ingot_copper.name=Industrial Grade Copper -item.ingot_red_copper.name=Minecraft Grade Copper -item.ingot_tungsten.name=Tungsten Ingot -item.ingot_aluminium.name=Aluminium Ingot -item.fluorite.name=Fluorite -item.ingot_steel.name=Steel Ingot -item.plate_steel.name=Steel Plate -item.ingot_beryllium.name=Beryllium Ingot -item.plate_schrabidium.name=Schrabidium Plate -item.ingot_schrabidium.name=Schrabidium Ingot -item.nugget_schrabidium.name=Schrabidium Nugget -item.plate_copper.name=Copper Plate -item.board_copper.name=Copper Panel -item.ingot_advanced_alloy.name=Advanced Alloy Ingot -item.plate_advanced_alloy.name=Advanced Alloy Plate -item.wire_advanced_alloy.name=Super Conductor -item.coil_advanced_alloy.name=Super Conducting Coil -item.coil_advanced_torus.name=Super Conducting Ring Coil -item.coil_gold.name=Gold Coil -item.coil_gold_torus.name=Golden Ring Coil -item.lithium.name=Lithium Cube -item.ingot_magnetized_tungsten.name=Magnetized Tungsten Ingot -item.ingot_combine_steel.name=CMB Steel Ingot -item.plate_combine_steel.name=CMB Steel Plate -item.wire_magnetized_tungsten.name=4000K High Temperature Super Conductor -item.coil_magnetized_tungsten.name=4000K High Temperature Super Conducting Coil -item.plate_mixed.name=Mixed Plate -item.plate_paa.name=PaA Alloy Plate -item.ingot_dura_steel.name=High-Speed Steel Ingot -item.ingot_polymer.name=Polymer Ingot -item.bolt_dura_steel.name=High-Speed Steel Bolt -item.pipes_steel.name=Steel Pipes -item.drill_titanium.name=Titanium Drill - -item.ingot_australium.name=Australium Ingot -item.ingot_weidanium.name=Weidanium Ingot -item.ingot_reiium.name=Reiium Ingot -item.ingot_unobtainium.name=Unobtainium Ingot -item.ingot_daffergon.name=Daffergon Ingot -item.ingot_verticium.name=Verticium Ingot -item.nugget_australium.name=Australium Nugget -item.nugget_weidanium.name=Weidanium Nugget -item.nugget_reiium.name=Reiium Nugget -item.nugget_unobtainium.name=Unobtainium Nugget -item.nugget_daffergon.name=Daffergon Nugget -item.nugget_verticium.name=Verticium Nugget - -item.ingot_desh.name=Desh Ingot -item.nugget_desh.name=Desh Nugget -item.powder_desh.name=Desh Powder - -item.nugget_u235.name=U235 Nugget -item.nugget_u238.name=U238 Nugget -item.nugget_pu238.name=Pu238 Nugget -item.nugget_pu239.name=Pu239 Nugget -item.nugget_pu240.name=Pu240 Nugget -item.plate_titanium.name=Titanium Plate -item.plate_aluminium.name=Aluminium Plate -item.wire_red_copper.name=Red Copper Wire -item.neutron_reflector.name=Neutron Reflector -item.nugget_beryllium.name=Beryllium Nugget - -item.wire_aluminium.name=Aluminium Wire -item.wire_copper.name=Copper Wire -item.wire_gold.name=Gold Wire -item.wire_schrabidium.name=Schrabidium Wire - -item.circuit_aluminium.name=Basic Circuit -item.circuit_copper.name=Enhanced Circuit -item.circuit_red_copper.name=Advanved Circuit -item.circuit_gold.name=Overclocked Circuit -item.circuit_schrabidium.name=High Performance Circuit - -tile.block_aluminium.name=Block of Aluminium -tile.block_copper.name=Block of Copper -tile.block_fluorite.name=Block of Fluorite -tile.block_niter.name=Block of Niter -tile.block_red_copper.name=Block of Red Copper -tile.block_steel.name=Block of Steel -tile.block_sulfur.name=Block of Sulfur -tile.block_titanium.name=Block of Titanium -tile.block_tungsten.name=Block of Tungsten -tile.block_uranium.name=Block of Uranium -tile.block_trinitite.name=Block of Trinitite -tile.block_beryllium.name=Block of Beryllium -tile.block_waste.name=Block of Nuclear Waste -tile.block_scrap.name=Block of Scrap -tile.block_electrical_scrap.name=Block of Electrical Scrap -tile.block_advanced_alloy.name=Block of Advanced Alloy -tile.block_magnetized_tungsten.name=Block of Magnetized Tungsten -tile.block_combine_steel.name=Block of CMB Steel -tile.block_australium.name=Block of Australium -tile.block_weidanium.name=Block of Weidanium -tile.block_reiium.name=Block of Reiium -tile.block_unobtainium.name=Block of Unobtainium -tile.block_daffergon.name=Block of Daffergon -tile.block_verticium.name=Block of Verticium -tile.block_desh.name=Reinfoced Block of Desh - -tile.ore_aluminium.name=Aluminium Ore -tile.ore_copper.name=Copper Ore -tile.ore_fluorite.name=Fluorite Ore -tile.ore_niter.name=Niter Ore -tile.ore_sulfur.name=Sulfur Ore -tile.ore_titanium.name=Titanium Ore -tile.ore_tungsten.name=Tungsten Ore -tile.ore_uranium.name=Uranium Ore -tile.ore_schrabidium.name=Schrabidium Ore -tile.ore_beryllium.name=Beryllium Ore - -tile.ore_nether_uranium.name=Nether Uranium Ore -tile.ore_nether_plutonium.name=Nether Plutonium Ore -tile.ore_nether_tungsten.name=Nether Tungsten Ore -tile.ore_nether_sulfur.name=Nether Sulfur Ore -tile.ore_nether_fire.name=Fire Ore -tile.ore_nether_schrabidium.name=Nether Schrabidium Ore - -tile.ore_australium.name=Australian Ore -tile.ore_weidanium.name=Weidite -tile.ore_reiium.name=Reiite -tile.ore_unobtainium.name=Brightblende Ore -tile.ore_daffergon.name=Dellite -tile.ore_verticium.name=Dollar Green Mineral - -tile.ore_oil.name=Oil Deposit -tile.ore_oil_empty.name=Empty Oil Deposit - -tile.reinforced_brick.name=Reinforced Stone -tile.reinforced_glass.name=Reinforced Glass -tile.reinforced_sand.name=Reinforced Sandstone -tile.reinforced_light.name=Reinforced Glowstone -tile.reinforced_lamp_off.name=Reinforced Lamp -tile.reinforced_lamp_on.name=Reinforced Lamp - -tile.brick_concrete.name=Concrete Bricks -tile.brick_obsidian.name=Obsidian Bricks -tile.brick_light.name=Light Bricks -tile.asphalt.name=Asphalt - -tile.cmb_brick.name=CMB Steel Tile -tile.cmb_brick_reinforced.name=Reinforced CMB Bricks - -tile.gravel_obsidian.name=Crushed Obsidian - -tile.seal_frame.name=Silo Hatch Frame -tile.seal_controller.name=Silo Hatch Opener -tile.seal_hatch.name=Silo Hatch - -item.nugget_uranium.name=Uranium Nugget -item.nugget_plutonium.name=Plutonium Nugget -item.nugget_neptunium.name=Neptunium Nugget -item.ingot_neptunium.name=Neptunium Ingot -item.nugget_lead.name=Lead Nugget -item.ingot_lead.name=Lead Ingot -tile.block_lead.name=Block of Lead -tile.ore_lead.name=Lead Ore - -item.powder_lead.name=Lead Powder -item.powder_neptunium.name=Neptunium Powder -item.powder_schrabidium.name=Schrabidium Powder -item.powder_iron.name=Iron Powder -item.powder_gold.name=Gold Powder -item.powder_aluminium.name=Aluminium Powder -item.powder_beryllium.name=Beryllium Powder -item.powder_copper.name=Copper Powder -item.powder_titanium.name=Titanium Powder -item.powder_tungsten.name=Tungsten Powder -item.powder_uranium.name=Uranium Powder -item.powder_plutonium.name=Plutonium Powder -item.dust.name=Dust -item.powder_coal.name=Coal Powder -item.powder_lapis.name=Lapis Lazuli Powder -item.powder_emerald.name=Emerald Powder -item.powder_diamond.name=Diamond Powder -item.powder_red_copper.name=Red Copper Powder -item.powder_steel.name=Steel Powder -item.powder_magnetized_tungsten.name=Magnetized Tungsten Powder -item.powder_combine_steel.name=CMB Steel Powder -item.powder_lithium.name=Lithium Powder -item.powder_advanced_alloy.name=Advanced Alloy Powder -item.powder_quartz.name=Quartz Powder -item.powder_power.name=Energy Powder -item.powder_iodine.name=Iodine Powder -item.powder_thorium.name=Thorium Powder -item.powder_neodymium.name=Neodymium Powder -item.powder_astatine.name=Astatine Powder -item.powder_caesium.name=Caesium Powder -item.powder_australium.name=Australium Powder -item.powder_weidanium.name=Weidanium Powder -item.powder_reiium.name=Reiium Powder -item.powder_unobtainium.name=Unobtainium Powder -item.powder_daffergon.name=Daffergon Powder -item.powder_verticium.name=Verticium Powder -item.powder_strontium.name=Strontium Powder -item.powder_cobalt.name=Cobalt Powder -item.powder_bromine.name=Bromine Powder -item.powder_niobium.name=Niobium Powder -item.powder_tennessine.name=Tennessine Powder -item.powder_cerium.name=Cerium Powder -item.powder_dura_steel.name=High-Speed Steel Powder -item.powder_polymer.name=Polymer Powder -item.powder_lanthanium.name=Lanthanium Powder -item.powder_actinium.name=Actinium Powder -item.powder_lithium_tiny.name=Tiny Pile of Lithium Powder -item.powder_cobalt_tiny.name=Tiny Pile of Cobalt Powder - -item.battery_generic.name=Battery -item.battery_advanced.name=Advanced Battery -item.battery_lithium.name=Lithium-Ion Battery -item.battery_schrabidium.name=Schrabidium Battery -item.battery_creative.name=Infinite Battery - -item.battery_red_cell.name=Redstone Power Cell -item.battery_advanced_cell.name=Advanced Power Cell -item.battery_lithium_cell.name=Lithium-Ion Power Cell -item.battery_schrabidium_cell.name=Schrabidium Power Cell -item.battery_red_cell_6.name=Sixfold Redstone Power Cell -item.battery_advanced_cell_4.name=Quadruple Advanced Power Cell -item.battery_lithium_cell_3.name=Tripple Lithium-Ion Power Cell -item.battery_schrabidium_cell_2.name=Double Schrabidium Power Cell -item.battery_red_cell_24.name=24-Fold Redstone Power Cell -item.battery_advanced_cell_12.name=Twelvefold Advanced Power Cell -item.battery_lithium_cell_6.name=Sixfold Lithium-Ion Power Cell -item.battery_schrabidium_cell_4.name=Quadruple Schrabidium Power Cell - -item.upgrade_template.name=Machine Upgrade Piece Template -item.upgrade_speed_1.name=Red Machine Upgrade Mk.I -item.upgrade_speed_2.name=Red Machine Upgrade Mk.II -item.upgrade_speed_3.name=Red Machine Upgrade Mk.III -item.upgrade_effect_1.name=Green Machine Upgrade Mk.I -item.upgrade_effect_2.name=Green Machine Upgrade Mk.II -item.upgrade_effect_3.name=Green Machine Upgrade Mk.III -item.upgrade_power_1.name=Blue Machine Upgrade Mk.I -item.upgrade_power_2.name=Blue Machine Upgrade Mk.II -item.upgrade_power_3.name=Blue Machine Upgrade Mk.III -item.upgrade_fortune_1.name=Purple Machine Upgrade Mk.I -item.upgrade_fortune_2.name=Purple Machine Upgrade Mk.II -item.upgrade_fortune_3.name=Purple Machine Upgrade Mk.III - -item.fusion_core.name=Fusion Core -item.energy_core.name=Makeshift Energy Core - -item.plate_iron.name=Iron Plate -item.plate_lead.name=Lead Plate -item.coil_copper.name=Copper Coil -item.coil_copper_torus.name=Ring Coil -item.wire_tungsten.name=Tungsten Wire -item.coil_tungsten.name=Heating Coil -item.tank_steel.name=Steel Tank -item.motor.name=Motor -item.centrifuge_element.name=Centrifuge Element -item.centrifuge_tower.name=Centrifuge Tower -item.reactor_core.name=Breeding Reactor Core -item.pellet_rtg.name=Plutonium 238 Fuel Pellet -item.pellet_rtg_weak.name=Weak Uranium RTG Pellet -item.rtg_unit.name=RTG Unit -item.hazmat_cloth.name=Hazmat Cloth -item.asbestos_cloth.name=Fire Proximity Cloth -item.filter_coal.name=Activated Carbon Filter -item.tritium_deuterium_cake.name=Tritium-Deuterium-Cake -item.telepad.name=Telepad -item.entanglement_kit.name=Entanglement Kit -item.toothpicks.name=Toothpicks -item.ducttape.name=Duct Tape -item.magnet_dee.name=Dee Magnets -item.magnet_circular.name=Flat Magnet -item.cyclotron_tower.name=Cyclotron Tower -item.plate_dalekanium.name=Angry Metal - -item.cell_empty.name=Empty Cell -item.cell_uf6.name=Uranium Hexafluorite Cell -item.cell_puf6.name=Plutonium Hexafluorite Cell -item.cell_antimatter.name=Antimatter Cell -item.cell_deuterium.name=Deuterium Cell -item.cell_tritium.name=Tritium Cell -item.cell_sas3.name=Schrabidium Trisulfide Cell -item.cell_anti_schrabidium.name=Antischrabidium Cell -item.singularity.name=Singularity -item.singularity_counter_resonant.name=Contained Counter-Resonant Singularity -item.singularity_super_heated.name=Superheated Resonating Singularity -item.black_hole.name=Miniature Black Hole -item.crystal_xen.name=Artificial Xen Crystal - -item.inf_water.name=Infinite Water Tank -item.inf_deuterium.name=Infinite Deuterium Tank -item.inf_tritium.name=Infinite Tritium Tank -item.inf_coolant.name=Infinite Coolant Tank -item.inf_sulfur.name=Infinite Sulfur Tank -item.inf_diesel.name=Infinite Diesel Tank -item.inf_antimatter.name=Infinite Antimatter Tank -item.inf_antischrabidium.name=Infinite Antischrabidium Tank - -item.oil_canola.name=Raw Canola Oil - -item.canister_empty.name=Empty Canister -item.canister_smear.name=Industrial Oil Canister -item.canister_canola.name=Engine Lubricant -item.canister_oil.name=Crude Oil Canister -item.canister_fuel.name=Fuel Canister -item.canister_kerosene.name=Kerosene Canister -item.canister_reoil.name=Canister of Reclaimed Industrial Oil -item.canister_petroil.name=Petroil Canister -item.canister_napalm.name=Napalm B -item.canister_NITAN.name=NITAN© 100 Octane Super Fuel -item.gas_empty.name=Empty Gas Tank -item.gas_full.name=Gas Tank - -item.rod_empty.name=Emty Rod -item.rod_uranium.name=Uranium Rod -item.rod_u235.name=U235 Rod -item.rod_u238.name=U238 Rod -item.rod_plutonium.name=Plutonium Rod -item.rod_pu238.name=Pu238 Rod -item.rod_pu239.name=Pu239 Rod -item.rod_pu240.name=Pu240 Rod -item.rod_neptunium.name=Neptunium Rod -item.rod_lead.name=Lead Rod -item.rod_schrabidium.name=Schrabidium Rod -item.rod_astatine.name=Euphemium Rod -item.rod_australium.name=Australium Rod -item.rod_weidanium.name=Weidanium Rod -item.rod_reiium.name=Reiium Rod -item.rod_unobtainium.name=Unobtainium Rod -item.rod_daffergon.name=Daffergon Rod -item.rod_verticium.name=Verticium Rod - -item.rod_dual_empty.name=Emty Dual Rod -item.rod_dual_uranium.name=Uranium Dual Fl Rod -item.rod_dual_u235.name=U235 Dual Rod -item.rod_dual_u238.name=U238 Dual Rod -item.rod_dual_plutonium.name=Plutonium Dual Rod -item.rod_dual_pu238.name=Pu238 Dual Rod -item.rod_dual_pu239.name=Pu239 Dual Rod -item.rod_dual_pu240.name=Pu240 Dual Rod -item.rod_dual_neptunium.name=Neptunium Dual Rod -item.rod_dual_lead.name=Lead Dual Rod -item.rod_dual_schrabidium.name=Schrabidium Dual Rod - -item.rod_quad_empty.name=Emty Quad Rod -item.rod_quad_uranium.name=Uranium Quad Rod -item.rod_quad_u235.name=U235 Quad Rod -item.rod_quad_u238.name=U238 Quad Rod -item.rod_quad_plutonium.name=Plutonium Quad Rod -item.rod_quad_pu238.name=Pu238 Quad Rod -item.rod_quad_pu239.name=Pu239 Quad Rod -item.rod_quad_pu240.name=Pu240 Quad Rod -item.rod_quad_neptunium.name=Neptunium Quad Rod -item.rod_quad_lead.name=Lead Quad Rod -item.rod_quad_schrabidium.name=Schrabidium Quad Rod - -item.rod_uranium_fuel_depleted.name=Depleted Uranium Fuel Rod -item.rod_dual_uranium_fuel_depleted.name=Depleted Uranium Dual Fuel Rod -item.rod_quad_uranium_fuel_depleted.name=Depleted Uranium Quad Fuel Rod -item.rod_plutonium_fuel_depleted.name=Depleted Plutonium Fuel Rod -item.rod_dual_plutonium_fuel_depleted.name=Depleted Plutonium Dual Fuel Rod -item.rod_quad_plutonium_fuel_depleted.name=Depleted Plutonium Quad Fuel Rod -item.rod_mox_fuel_depleted.name=Depleted MOX Fuel Rod -item.rod_dual_mox_fuel_depleted.name=Depleted MOX Dual Fuel Rod -item.rod_quad_mox_fuel_depleted.name=Depleted MOX Quad Fuel Rod -item.rod_schrabidium_fuel_depleted.name=Depleted Schrabidium Fuel Rod -item.rod_dual_schrabidium_fuel_depleted.name=Depleted Schrabidium Dual Fuel Rod -item.rod_quad_schrabidium_fuel_depleted.name=Depleted Schrabidium Quad Fuel Rod - -item.rod_waste.name=Nuclear Waste Rod -item.rod_dual_waste.name=Nuclear Waste Dual Rod -item.rod_quad_waste.name=Nuclear Waste Quad Rod - -item.gun_rpg.name=Rocket Launcher -item.gun_rpg_ammo.name=Rocket - -item.flame_pony.name=Painting of a Cartoon Pony -item.flame_conspiracy.name=Conspiracy Theory -item.flame_politics.name=Political Topic -item.flame_opinion.name=Own Opinion - -item.pellet_cluster.name=Explosive Pellets -item.pellet_buckshot.name=Lead Pellets -item.powder_fire.name=Flame Powder -item.powder_ice.name=Cryo Powder -item.powder_poison.name=Poison Powder -item.pellet_gas.name=Poison Gas Cartridge -item.magnetron.name=Magnetron -item.powder_thermite.name=Thermite - -item.nuke_starter_kit.name=Atomic Science Starter Kit -item.nuke_commercially_kit.name=Atomic Science Kit for Commercial Uses -item.nuke_advanced_kit.name=Atomic Science Advanced Kit -item.gadget_kit.name=The Gadget Kit -item.boy_kit.name=Little Boy Kit -item.man_kit.name=Fat Man Kit -item.mike_kit.name=Ivy Mike Kit -item.tsar_kit.name=Tsar Bomba Kit -item.fleija_kit.name=F.L.E.I.J.A. Kit -item.multi_kit.name=Multi Purpose Bomb Kit -item.grenade_kit.name=Grenade Kit -item.nuke_electric_kit.name=Electronic Engineer's Kit -item.prototype_kit.name=Prototype Kit -item.missile_kit.name=Missile Kit -item.t45_kit.name=T45 Power Armor Kit -item.euphemium_kit.name=Euphemium Kit - -tile.waste_earth.name=Dead Grass -tile.waste_trinitite.name=Trinitite Ore -tile.waste_trinitite_red.name=Red Trinitite Ore -tile.waste_log.name=Charred Log -tile.waste_planks.name=Charred Wooden Planks - -item.trinitite.name=Trinitite -item.nuclear_waste.name=Nuclear Waste -item.scrap.name=Scrap - -item.ingot_uranium_fuel.name=Ingot of Uranium Fuel -item.ingot_plutonium_fuel.name=Ingot of Plutonium Fuel -item.ingot_mox_fuel.name=Ingot of MOX Fuel -item.ingot_schrabidium_fuel.name=Ingot of Schrabidium Fuel - -item.nugget_uranium_fuel.name=Nugget of Uranium Fuel -item.nugget_plutonium_fuel.name=Nugget of Plutonium Fuel -item.nugget_mox_fuel.name=Nugget of MOX Fuel -item.nugget_schrabidium_fuel.name=Nugget of Schrabidium Fuel - -item.grenade_generic.name=Grenade -item.grenade_strong.name=Enhanced Grenade -item.grenade_frag.name=Frag Grenade -item.grenade_fire.name=Flame Frag Grenade -item.grenade_shrapnel.name=Shrapnel Grenade -item.grenade_cluster.name=Cluster Bomb -item.grenade_flare.name=Flare Grenade -item.grenade_electric.name=Lightning Bomb -item.grenade_poison.name=Poison Grenade -item.grenade_gas.name=Gas Grenade -item.grenade_pulse.name=Impulse Grenade -item.grenade_plasma.name=Plasma Grenade -item.grenade_tau.name=Tau Grenade -item.grenade_schrabidium.name=Schrabidium Grenade -item.grenade_lemon.name=Combustible Lemon -item.grenade_mk2.name=Mk 2 Grenade "Ambassador Pineapple" -item.grenade_aschrab.name=Tossable Antischrabidium Cell -item.grenade_nuke.name=Mark VI Drill Grenade -item.grenade_nuclear.name=Nuka Grenade -item.grenade_zomg.name=Negative Energy Pair Annihilation Grenade -item.grenade_black_hole.name=Black Hole Grenade -item.ullapool_caber.name=Ullapool Caber - -item.rod_uranium_fuel.name=Uranium Fuel Rod -item.rod_dual_uranium_fuel.name=Uranium Dual Fuel Rod -item.rod_quad_uranium_fuel.name=Uranium Quad Fuel Rod -item.rod_plutonium_fuel.name=Plutonium Fuel Rod -item.rod_dual_plutonium_fuel.name=Plutonium Dual Fuel Rod -item.rod_quad_plutonium_fuel.name=Plutonium Quad Fuel Rod -item.rod_mox_fuel.name=MOX Fuel Rod -item.rod_dual_mox_fuel.name=MOX Dual Fuel Rod -item.rod_quad_mox_fuel.name=MOX Quad Fuel Rod -item.rod_schrabidium_fuel.name=Schrabidium Fuel Rod -item.rod_dual_schrabidium_fuel.name=Schrabidium Dual Fuel Rod -item.rod_quad_schrabidium_fuel.name=Schrabidium Quad Fuel Rod - -item.rod_water.name=Water Cell -item.rod_dual_water.name=Dual Water Cell -item.rod_quad_water.name=Quad Water Cell - -item.rod_coolant.name=Coolant Cell -item.rod_dual_coolant.name=Dual Coolant Cell -item.rod_quad_coolant.name=Quad Coolant Cell - -item.rod_lithium.name=Lithium Rod -item.rod_dual_lithium.name=Dual Lithium Rod -item.rod_quad_lithium.name=Quad Lithium Rod - -item.rod_tritium.name=Tritium Cell -item.rod_dual_tritium.name=Dual Tritium Cell -item.rod_quad_tritium.name=Quad Tritium Cell - -item.levitation_unit.name=Gravity Manipulator -item.thermo_unit_empty.name=Thermic Distribution Unit -item.thermo_unit_endo.name=Coldness Distribution Unit -item.thermo_unit_exo.name=Heat Distribution Unit - -item.bomb_waffle.name=Waffle of Mass Destruction -item.schnitzel_vegan.name=Vegan Schnitzel -item.apple_schrabidium.name=Schrabidium Apple -item.cotton_candy.name=Radioactive Cotton Candy -item.tem_flakes.name=Tem Flakes -item.glowing_stew.name=Glowing Mushroom Stew -item.lemon.name="Lemon" - -tile.frozen_grass.name=Frozen Grass -tile.frozen_dirt.name=Frozen Dirt -tile.frozen_log.name=Frozen Log -tile.frozen_planks.name=Frozen Planks - -tile.tape_recorder.name=Tape Recorder -tile.steel_poles.name=Steel Pole -tile.pole_top.name=Antenna Top -tile.pole_satellite_receiver.name=Satellite Receiver -tile.steel_wall.name=Steel Wall -tile.steel_corner.name=Steel Wall Corner -tile.steel_roof.name=Flat Steel Roof -tile.steel_beam.name=Steel Beam -tile.steel_scaffold.name=Steel Scaffold - -item.gun_revolver_iron.name=Simple Revolver -item.gun_revolver.name=Enhanced Revolver -item.gun_revolver_gold.name=Golden Revolver -item.gun_revolver_lead.name=Nuka Revolver -item.gun_revolver_schrabidium.name=Schrabidium Revolver -item.gun_revolver_cursed.name=Cursed Revolver -item.gun_revolver_nightmare.name=Nightmare Revolver (Original) -item.gun_revolver_nightmare2.name=Nightmare Revolver (Dark) -item.gun_fatman.name=M42 Nuclear Catapult "Fat Man" -item.gun_mirv.name=M42 Nuclear Catapult "Experimental MIRV" -item.gun_bf.name=M42_2 Nuclear Catapult "Antimatter Launcher" -item.gun_mp40.name=Submachine Gun -item.gun_uboinik.name=Uboinik -item.gun_xvl1456.name=XVL1456 Tau Cannon Prototype -item.gun_osipr.name=Overwatch Standard Issue Pulse Rifle -item.gun_immolator.name=The Immolator -item.gun_cryolator.name=The Cryolator -item.gun_mp.name=Pacifist's Machine Gun -item.gun_zomg.name=Singularity Powered Annihilation Ray "ZOMG Cannon" -item.gun_emp.name=EMP Ray -item.gun_super_shotgun.name=Super Shotgun -item.gun_moist_nugget.name=Mosin-Nagant -item.gun_revolver_inverted.name=Flipped Revolver -item.gun_jack.name=Jackhammer -item.gun_spark.name=Spark Plug -item.gun_hp.name=HPP Lazerjet -item.gun_euthanasia.name=Euthanasia -item.gun_defabricator.name=Defabricator - -item.gun_revolver_iron_ammo.name=Bullet -item.gun_revolver_ammo.name=Lead Bullet -item.gun_revolver_gold_ammo.name=Golden Bullet -item.gun_revolver_lead_ammo.name=Glass Covered Nuclear Bullet -item.gun_revolver_schrabidium_ammo.name=Schrabidium Bullet -item.gun_revolver_cursed_ammo.name=Steel Bullet -item.gun_revolver_nightmare_ammo.name=Nightmare Bullet -item.gun_revolver_nightmare2_ammo.name=Laser Buckshot -item.gun_fatman_ammo.name=Mini Nuke -item.gun_mirv_ammo.name=Eightfold MIRV -item.gun_bf_ammo.name=Mk.V Compact AMAT-Artillery Shell - Type B.F. -item.gun_mp40_ammo.name=Submachine Gun Round -item.gun_uboinik_ammo.name=12x70 Buckshot -item.gun_xvl1456_ammo.name=Depleted Uranium-235 Box -item.gun_osipr_ammo.name=Dark Energy Pulse Plug -item.gun_osipr_ammo2.name=Combine Ball -item.gun_immolator_ammo.name=Immolator Fuel -item.gun_cryolator_ammo.name=Cryo Cell -item.gun_mp_ammo.name=Small Propellantless Machine Gun Round -item.gun_emp_ammo.name=Energy Cell -item.gun_jack_ammo.name=Quadruple Shotgun Shell -item.gun_spark_ammo.name=Electromagnetic Cartridge -item.gun_hp_ammo.name=Ink Cartridge -item.gun_euthanasia_ammo.name=Syringe -item.gun_defabricator_ammo.name=Defabricator Energy Cell - -item.clip_revolver_iron.name=Box of Iron Rounds -item.clip_revolver.name=Box of .357 Rounds -item.clip_revolver_gold.name=Small Coffer of Golden Bullets -item.clip_revolver_schrabidium.name=Schrabidium Ammo Container -item.clip_rpg.name=Rocket Container -item.clip_xvl1456.name=Large Isotope Box -item.clip_osipr.name=AR2 Magazine -item.clip_immolator.name=Tank of Immolator Fuel -item.clip_cryolator.name=Tank of Cryolator Fuel -item.clip_revolver_lead.name=Box of Nuclear Bullets -item.clip_revolver_cursed.name=Britannia Military Standard Issue Pisol Magazine -item.clip_fatman.name=Six Pack of Mini Nukes -item.clip_mirv.name=Three-In-One Pack of Mini MIRVs -item.clip_bf.name=BF-Shell Double Pack -item.clip_mp.name=Britannia Military Standard Issue Assult Rifle Magazine -item.clip_mp40.name=9mm SMG Magazine -item.clip_uboinik.name=Box of Buckshot Rounds -item.clip_emp.name=Small Pack of Energy Cells -item.clip_revolver_nightmare.name=Bag of Bullets -item.clip_revolver_nightmare2.name=Belt with Laser Buckshot - -tile.block_schrabidium.name=Block of Schrabidium -item.plate_gold.name=Gold Plate - -item.syringe_empty.name=Empty Syringe -item.syringe_antidote.name=Antidote -item.syringe_poison.name=Poisonous Injection -item.syringe_awesome.name=AWESOME -item.syringe_metal_empty.name=Metal Syringe -item.syringe_metal_stimpak.name=Stimpak -item.syringe_metal_medx.name=Med-X -item.syringe_metal_psycho.name=Psycho -item.pill_iodine.name=Iodine Pill -item.plan_c.name=Plan C - -item.stealth_boy.name=Stealth Device - -entity.hbm.entity_bullet.name=Bullet -entity.hbm.entity_rocket.name=Rocket -entity.hbm.entity_schrabnel.name=Schrabnel -entity.entity_mob_nuclear_creeper.name=Nuclear Creeper -entity.entity_mob_hunter_chopper.name=Hunter ChopperCreeper -entity.entity_cyber_crab.name=Cyber Crab - -item.cap_aluminium.name=Aluminium Cap -item.hull_small_steel.name=Small Steel Shell -item.hull_small_aluminium.name=Small Aluminium Shell -item.hull_big_steel.name=Big Steel Shell -item.hull_big_aluminium.name=Big Aluminium Shell -item.hull_big_titanium.name=Big Titanium Shell -item.fins_flat.name=Flat Steel Casing -item.fins_small_steel.name=Small Steel Grid Fins -item.fins_big_steel.name=Big Steel Grid Fins -item.fins_tri_steel.name=Large Steel Fins -item.fins_quad_titanium.name=Small Titanium Fins -item.sphere_steel.name=Steel Sphere -item.pedestal_steel.name=Steel Pedestal -item.dysfunctional_reactor.name=Dysfunctional Nuclear Reactor - -item.rotor_steel.name=Large Steel Rotor -item.generator_steel.name=Generator Body -item.blade_titanium.name=Titanium Blade -item.turbine_titanium.name=Titanium Steam Turbine -item.generator_front.name=Generator Front - -item.combine_scrap.name=CMB Scrap Metal -item.chopper_head.name=Hunter Chopper Cockpit -item.chopper_gun.name=Emplacement Gun -item.chopper_torso.name=Hunter Chopper Body -item.chopper_tail.name=Hunter Chopper Tail -item.chopper_wing.name=Hunter Chopper Wing -item.chopper_blades.name=Hunter Chopper Rotor Blades - -item.igniter.name=Igniter -item.watch.name=Broken Pocket Watch -item.apple_astatine.name=Euphemium Apple -item.ingot_astatine.name=Euphemium Ingot -item.nugget_astatine.name=Euphemium Nugget -item.rod_quad_astatine.name=Burned Out Quad Schrabidium Fuel Rod - -item.astatine_helmet.name=Euphemium Helemt -item.astatine_plate.name=Euphemium Chestplate -item.astatine_legs.name=Euphemium Leggings -item.astatine_boots.name=Euphemiums Boots - -item.schrabidium_helmet.name=Schrabidium Helmet -item.schrabidium_plate.name=Schrabidium Chestpate -item.schrabidium_legs.name=Schrabidium Leggings -item.schrabidium_boots.name=Schrabidium Boots -item.schrabidium_sword.name=Schrabidium Sword -item.schrabidium_pickaxe.name=Schrabidium Pickaxe -item.schrabidium_axe.name=Schrabidium Axe -item.schrabidium_shovel.name=Schrabidium Shovel -item.schrabidium_hoe.name=Schrabidium Hoe - -item.chainsaw.name=Chainsaw -item.crowbar.name=Mk.V Crate Opening Device "Crowbar" - -item.mask_of_infamy.name=Mask of Infamy - -tile.det_cord.name=Det Cord -tile.det_charge.name=Explosive Charge -tile.red_barrel.name=Explosive Barrel -tile.yellow_barrel.name=Radioactive Barrel - -item.designator.name=Short Range Target Designator -item.designator_range.name=Long Range Target Designator -item.missile_generic.name=High Explosive Missile -item.missile_anti_ballistic.name=Anti Ballistic Missile (WIP) -item.missile_incendiary.name=Incendiary Missile -item.missile_cluster.name=Cluster Missile -item.missile_buster.name=Bunker Buster -item.missile_strong.name=Strong HE Missile -item.missile_incendiary_strong.name=Strong Incendiary Missile -item.missile_cluster_strong.name=Strong Cluster Missile -item.missile_buster_strong.name=Enhanced Bunker Buster -item.missile_burst.name=Spare Missile -item.missile_inferno.name=Inferno Missile G.R.N. Mk.II -item.missile_rain.name=Bomblet Rain -item.missile_drill.name=The Concrete Cracker -item.missile_nuclear.name=Nuclear Missile -item.missile_nuclear_cluster.name=Nuclear MIRV Missile -item.missile_endo.name=Endothermic Missile -item.missile_exo.name=Exothermic Missile - -item.hazmat_helmet.name=Hazmat Helmet -item.hazmat_plate.name=Hazmat Chestplate -item.hazmat_legs.name=Hazmat Leggings -item.hazmat_boots.name=Hazmat Boots -item.hazmat_paa_helmet.name=PaA Battle Hazmat Suit Helmet -item.hazmat_paa_plate.name=PaA Battle Hazmat Suit Chestplate -item.hazmat_paa_legs.name=PaA Battle Hazmat Suit Leggings -item.hazmat_paa_boots.name=PaA Battle Hazmat Suit Boots -item.asbestos_helmet.name=Fire Proximity Helmet -item.asbestos_plate.name=Fire Proximity Chestplate -item.asbestos_legs.name=Fire Proximity Leggings -item.asbestos_boots.name=Fire Proximity Boots - -item.paa_plate.name=PaA Chest Protection Plate -item.paa_legs.name=PaA Leg Reinforcements -item.paa_boots.name=PaA "good ol' shoes" - -item.goggles.name=Protection Goggles -item.gas_mask.name=Gas Mask -item.oxy_mask.name=Oxygen Mask -item.t45_helmet.name=T45 Power Armor Helmet -item.t45_plate.name=T45 Power Armor Chestplate -item.t45_legs.name=T45 Power Armor Leggings -item.t45_boots.name=T45 Power Armor Boots - -tile.mush.name=Glowing Mushroom -tile.waste_mycelium.name=Glowing Mycelium - -item.warhead_generic_small.name=Small Warhead -item.warhead_generic_medium.name=Medium Warhead -item.warhead_generic_large.name=Large Warhead -item.warhead_incendiary_small.name=Small Incendiary Warhead -item.warhead_incendiary_medium.name=Medium Incendiary Warhead -item.warhead_incendiary_large.name=Large Incendiary Warhead -item.warhead_cluster_small.name=Small Cluster Warhead -item.warhead_cluster_medium.name=Medium Cluster Warhead -item.warhead_cluster_large.name=Large Cluster Warhead -item.warhead_buster_small.name=Small Bunker Buster Warhead -item.warhead_buster_medium.name=Medium Bunker Buster Warhead -item.warhead_buster_large.name=Large Bunker Buster Warhead -item.warhead_nuclear.name=Nuclear Warhead -item.warhead_mirvlet.name=MIRV -item.warhead_mirv.name=Eightfold MIRV Warhead -item.warhead_thermo_endo.name=Endothermic Warhead -item.warhead_thermo_exo.name=Exothermic Warhead -item.fuel_tank_small.name=Small Fuel Tank -item.fuel_tank_medium.name=Medium Fuel Tank -item.fuel_tank_large.name=Large Fuel Tank -item.thruster_small.name=Small Thruster -item.thruster_medium.name=Medium Thruster -item.thruster_large.name=Large Thruster - -item.wand_k.name=Construction Wand -item.wand_s.name=Structure Wand -item.wand_d.name=Debug Wand - -item.screwdriver.name=Screwdriver -item.overfuse.name=Singularity Screwdriver - -item.steel_helmet.name=Steel Helmet -item.steel_plate.name=Steel Chestplate -item.steel_legs.name=Steel Leggings -item.steel_boots.name=Steel Boots -item.titanium_helmet.name=Titanium Helmet -item.titanium_plate.name=Titanium Chestplate -item.titanium_legs.name=Titanium Leggings -item.titanium_boots.name=Titanium Boots -item.alloy_helmet.name=Advanced Alloy Helmet -item.alloy_plate.name=Advanced Alloy Chestplate -item.alloy_legs.name=Advanced Alloy Leggings -item.alloy_boots.name=Advanced Alloy Boots -item.cmb_helmet.name=CMB Steel Helmet -item.cmb_plate.name=CMB Steel Chestplate -item.cmb_legs.name=CMB Steel Leggings -item.cmb_boots.name=CMB Steel Boots - -item.steel_sword.name=Steel Sword -item.steel_pickaxe.name=Steel Pickaxe -item.steel_axe.name=Steel Axe -item.steel_shovel.name=Steel Shovel -item.steel_hoe.name=Steel Hoe -item.titanium_sword.name=Titanium Sword -item.titanium_pickaxe.name=Titanium Pickaxe -item.titanium_axe.name=Titanium Axe -item.titanium_shovel.name=Titanium Shovel -item.titanium_hoe.name=Titanium Hoe -item.alloy_sword.name=Advanced Alloy Sword -item.alloy_pickaxe.name=Advanced Alloy Pickaxe -item.alloy_axe.name=Advanced Alloy Axe -item.alloy_shovel.name=Advanced Alloy Shovel -item.alloy_hoe.name=Advanced Alloy Hoe -item.cmb_sword.name=CMB Steel Sword -item.cmb_pickaxe.name=CMB Steel Pickaxe -item.cmb_axe.name=CMB Steel Axe -item.cmb_shovel.name=CMB Steel Shovel -item.cmb_hoe.name=CMB Steel Hoe -item.elec_sword.name=Stunstick -item.elec_pickaxe.name=Impact Drill -item.elec_axe.name=Electric Chainsaw -item.elec_shovel.name=Spiral Drill - -tile.red_cable.name=Red Copper Cable -tile.block_meteor.name=Meteor Block - -item.cape_radiation.name=Cape (Radiation) -item.cape_gasmask.name=Cape (Gas Mask) -item.cape_schrabidium.name=Cape (Schrabidic) -item.cape_hbm.name=Hbm's Cape -item.cape_dafnik.name=Dafnik's Cape -item.cape_lpkukin.name=LPkukin's Cape -item.cape_vertice.name=Lord Vertice's Cape - -tile.machine_converter_he_rf.name=HE to RF Converter -tile.machine_converter_rf_he.name=RF to HE Converter - -item.schrabidium_hammer.name=Schrabidium Hammer -item.euphemium_stopper.name=Stopper -item.matchstick.name=Matchstick -item.remote.name=Broken Remote - -item.redcoil_capacitor.name=Redcoil Capacitor -item.detonator.name=Detonator -item.crate_caller.name=Supply Drop Requester - -item.ingot_hes.name=Highly Enriched Schrabidium Fuel Ingot -item.ingot_les.name=Low Enriched Schrabidium Fuel Ingot -item.nugget_hes.name=Highly Enriched Schrabidium Fuel Nugget -item.nugget_les.name=Low Enriched Schrabidium Fuel Nugget - -item.pellet_schrabidium.name=Pure Schrabidium Watz Pellet -item.pellet_hes.name=HES Watz Pellet -item.pellet_mes.name=MES Watz Pellet -item.pellet_les.name=LES Watz Pellet -item.pellet_beryllium.name=Beryllium Moderator Pellet -item.pellet_neptunium.name=Neptunium Watz Pellet -item.pellet_lead.name=Lead Reflector Pellet -item.pellet_advanced.name=Advanced Watz Performance Improver - -item.titanium_filter.name=Titanium Filter - -tile.mud_block.name=Poisonous Mud -fluid.mud_fluid=Poisonous Mud -item.bucket_mud.name=Bucket of Poisonous Mud -tile.acid_block.name=Acid -fluid.acid_fluid=Acid -item.bucket_acid.name=Bucket of Acid -tile.toxic_block.name=Stereotypical Green Ooze -fluid.toxic_fluid=Stereotypical Green Ooze -item.bucket_toxic.name=Bucket of Stereotypical Green Ooze -item.tank_waste_0.name=Mud Container -item.tank_waste_1.name=Mud Container -item.tank_waste_2.name=Mud Container -item.tank_waste_3.name=Mud Container -item.tank_waste_4.name=Mud Container -item.tank_waste_5.name=Mud Container -item.tank_waste_6.name=Mud Container -item.tank_waste_7.name=Mud Container -item.tank_waste_8.name=Mud Container - -item.can_empty.name=Empty Can -item.can_smart.name='Smart' Energy Drink -item.can_creature.name='Creature' Energy Drink -item.can_redbomb.name='Red Bomb' Energy Drink -item.can_mrsugar.name='Dr. Sugar' Soft Drink -item.can_overcharge.name=Overcharge Delirium XT -item.bottle_empty.name=Empty Bomb-Shaped Bottle -item.bottle_nuka.name=Bottle of Nuka Cola -item.bottle_cherry.name=Bottle of Nuka Cherry -item.bottle_quantum.name=Bottle of Nuka Cola Quantum -item.bottle2_empty.name=Empty Bottle -item.bottle2_korl.name=Korl -item.bottle2_fritz.name=Fritz Cola -item.bottle2_korl_special.name=The First Korl -item.bottle2_fritz_special.name=The First Fritz Cola -item.chocolate_milk.name=Chocolate Milk -item.cap_nuka.name=Nuka Cola Bottle Cap -item.cap_quantum.name=Nuka Cola Quantum Bottle Cap -item.cap_korl.name=Korl Bottle Cap -item.cap_fritz.name=Fritz Cola Bottle Cap -item.ring_pull.name=Ring Pull - -item.bottle_opener.name=Hbm's Own Self-Made Bottle Opener - -item.blades_aluminium.name=Aluminium Shredder Blades -item.blades_gold.name=Golden Shredder Blades -item.blades_iron.name=Iron Shredder Blades -item.blades_steel.name=Steel Shredder Blades -item.blades_titanium.name=Titanium Shredder Blades -item.blades_advanced_alloy.name=Advanced Shredder Blades -item.blades_combine_steel.name=CMB Shredder Blades -item.blades_schrabidium.name=Schrabidium Shredder Blades - -item.part_lithium.name=Box of Lithium Dust -item.part_beryllium.name=Box of Beryllium Dust -item.part_carbon.name=Box of Carbon Dust -item.part_copper.name=Box of Copper Dust -item.part_plutonium.name=Box of Plutonium Dust - -item.crystal_energy.name=Energy Crystal -item.pellet_coolant.name=Coolant Cluster - -item.linker.name=Telelinker -item.oil_detector.name=Oil Reservoir Detector - -item.thermo_element.name=Thermoelectric Element -item.limiter.name=Generator Limiter - -item.multitool_dig.name=Power Fist (Digging Claw) -item.multitool_silk.name=Power Fist (Silk Touch Claw) -item.multitool_ext.name=Power Fist (Ore Extracter) -item.multitool_miner.name=Power Fist (Extracting Mining Laser) -item.multitool_hit.name=Power Fist (Fist) -item.multitool_beam.name=Power Fist (Zapper) -item.multitool_sky.name=Power Fist (Crack the Sky) -item.multitool_mega.name=Power Fist (Super Punch) -item.multitool_joule.name=Power Fist (Giga Joule) -item.multitool_decon.name=Power Fist (Decontaminator) - -item.australium_iii.name=Mark III Life Extender -item.australium_iv.name=Mark IV Life Extender -item.australium_v.name=Mark V Life Extender - -item.weapon_saw.name=Doctor Assisted Homicide -item.weapon_bat.name=Richard's Default -item.weapon_bat_nail.name=The Cliché -item.weapon_golf_club.name=Russian Mobster's Club -item.weapon_pipe_rusty.name=The Attitude Adjuster -item.weapon_pipe_lead.name=The Manual Override -item.reer_graar.name=The Reer Graar - -item.letter.name=Express Mail -item.polaroid.name=The Polaroid -item.book_secret.name=3-596-50802-9 - -item.crystal_horn.name=Crystal Horn -item.crystal_charred.name=Charred Crystal -item.ingot_lanthanium.name=Semi-Stable Lanthanium Ingot -item.ingot_actinium.name=Semi-Stable Actinium Ingot - -tile.dummy_block.name=Dummy Block -tile.dummy_port.name=Dummy Block (Electricity Port) - -item.chopper.name=Hunter Chopper - -item.nothing.name=Nothing - -tile.crystal_virus.name=Dark Crystal -tile.crystal_hardened.name=Hardened Dark Crystal -tile.crystal_pulsar.name=Pulsating Crystal - -tile.cheater_virus.name=Gelid Euphemium -tile.cheater_virus_seed.name=Unstable Euphemium Schrabide Block diff --git a/src/main/resources/assets/hbm/lang/pl_PL.lang b/src/main/resources/assets/hbm/lang/pl_PL.lang index 1307d0b8b..3e5e63745 100644 --- a/src/main/resources/assets/hbm/lang/pl_PL.lang +++ b/src/main/resources/assets/hbm/lang/pl_PL.lang @@ -3203,7 +3203,7 @@ item.nugget_daffergon.name=Daffergon Nugget item.nugget_desh.name=Desh Nugget item.nugget_dineutronium.name=Dineutronium Nugget item.nugget_euphemium.name=Euphemium Nugget -item.nugget_euphemium.desc=A small piece of a pink metal.$It's properties are still unknown,$DEAL WITH IT carefully. +item.nugget_euphemium.desc=A small piece of a pink metal.$Its properties are still unknown,$DEAL WITH IT carefully. item.nugget_gh336.name=Ghiorsium-336 Nugget item.nugget_gh336.desc=Seaborgium's colleague. item.nugget_hes.name=Highly Enriched Schrabidium Fuel Nugget @@ -4178,7 +4178,7 @@ item.waste_u233.name=Depleted Uranium-233 Fuel item.waste_uranium.name=Depleted Uranium Fuel item.waste_zfb_mox.name=Depleted ZFB MOX Fuel item.watch.name=Broken Pocket Watch -item.watch.desc=A small blue pocket watch.$It's glass has a few cracks in it, $and some shards are missing.$It stopped ticking at 2:34. +item.watch.desc=A small blue pocket watch.$Its glass has a few cracks in it, $and some shards are missing.$It stopped ticking at 2:34. item.watz_pellet.boron.name=Boron Absorber Pellet item.watz_pellet.du.name=Depleted Uranium Absorber Pellet item.watz_pellet.hes.name=HES Watz Pellet diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index eb07399b6..93e77b657 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -365,6 +365,7 @@ armorMod.type.insert=ПлаÑтина armorMod.type.leggings=Поножи armorMod.type.servo=Сервоприводы armorMod.type.special=ОÑобое +armorMod.type.battery=ÐккумулÑтор armorMod.insertHere=Ð’Ñтавьте броню, чтобы её модифицировать... hazard.prot=Защищает от: @@ -519,6 +520,8 @@ hbm.key.dash=Рывок hbm.key.toggleBack=Включить ранец hbm.key.toggleHUD=Включить HUD hbm.key.reload=ПерезарÑдить +hbm.key.copyToolAlt=УÑтройÑтво наÑтройки: Переключить вÑтавку +hbm.key.copyToolCtrl=УÑтройÑтво наÑтройки: Применить к трубам bomb.detonated=УÑпешно взорвано! bomb.incompatible=УÑтройÑтво не может быть взорвано! @@ -545,11 +548,12 @@ contents.program.doom=DOOM contents.program.unknown=??? contents.program.windows=УÑтановка Windows 12 -commands.satellite.no_satellite=Спутник Ñ Ñ‚Ð°ÐºÐ¾Ð¹ чаÑтотой не найден! +commands.satellite.no_satellite=Спутник не найден! commands.satellite.not_a_satellite=Предмет в руке не Ñпутник! commands.satellite.satellite_descended=Спутник уÑпешно удалён. commands.satellite.satellite_orbited=Спутник запущен. commands.satellite.should_be_run_as_player=Команда должна быть выполнена игроком! +commands.satellite.no_active_satellites=Ðет активных Ñпутников! desc.block.barrel.acid=едкие жидкоÑти desc.block.barrel.acidAlt=едкие жидкоÑти правильно @@ -1397,6 +1401,15 @@ hbmmat.neodymium=Ðеодима hbmmat.calcium=ÐšÐ°Ð»ÑŒÑ†Ð¸Ñ hbmmat.silicon=ÐšÑ€ÐµÐ¼Ð½Ð¸Ñ hbmmat.sodium=ÐÐ°Ñ‚Ñ€Ð¸Ñ +hbmmat.bscco=BSCCO +hbmmat.strontium=Стронций +hbmmat.chlorocalcite=Хлоркальцит +hbmmat.diamond=Ðлмаз +hbmmat.lanthanum=Лантан +hbmmat.molysite=Молизит +hbmmat.rareearth=Редкоземельные металлы +hbmmat.sodalite=Содалит +hbmmat.emerald=Изумруд icffuel.beryllium=Бериллий icffuel.boron=Бор @@ -1428,6 +1441,7 @@ crucible.steelWrought=Переплавка кованого железа в ÑÑ‚ crucible.tcalloy=ПроизводÑтво технециевой Ñтали crucible.cdalloy=ПроизводÑтво кадмиевой Ñтали crucible.cmb=ПроизводÑтво Ñтали ÐльÑнÑа +crucible.bscco=ПроизводÑтво BSCCO matshape.block=Блок %s matshape.blocks=Блоки %s @@ -1725,6 +1739,7 @@ death.attack.rubble=%1$s превратилÑÑ Ð² лепёшку death.attack.shrapnel=%1$s был разорван шрапнелью death.attack.teleporter=%1$s телепортировалÑÑ Ð² никуда death.attack.blackhole=%1$s превратилÑÑ Ð² Ñпагетти +death.attack.blacklung=%1$s умер от болезни черных легких death.attack.blender=%1$s Ñтал фаршем death.attack.meteorite=%1$s был раздавлен огромным коÑмичеÑким камнем death.attack.boxcar=%1$s был раздавлен падающим грузовым вагоном. Ðу что ж... @@ -1741,7 +1756,7 @@ death.attack.taint=%1$s умер от невероÑтного количеÑÑ‚ death.attack.electricity=%1$s был убит ÑлектричеÑким током death.attack.exhaust=%1$s был превращен в шашлык Ñтартовой ракетой death.attack.lunar=%1$s забыли зарÑдить Ñвои жизненно важные органы. -death.attack.monoxide=%1$s забыл Ñменить батарейки в Ñвоем детекторе угарного газа. +death.attack.monoxide=%1$s забыл Ñменить батарейки в Ñвоем детекторе угарного газа death.attack.digamma=%1$s шагнул в пуÑтоту. death.attack.asbestos=%1$s теперь имеет право на финанÑовую компенÑацию. death.attack.mku=%1$s умер по неизвеÑтным причинам. @@ -2245,6 +2260,8 @@ container.machineArcFurnaceLarge=Ð”ÑƒÐ³Ð¾Ð²Ð°Ñ Ð¿ÐµÑ‡ÑŒ tile.machine_arc_furnace.name=ЭлектричеÑÐºÐ°Ñ Ð´ÑƒÐ³Ð¾Ð²Ð°Ñ Ð¿ÐµÑ‡ÑŒ container.machineSolderingStation=ПаÑльный Ñтол tile.machine_soldering_station.name=ПаÑльный Ñтол +container.machinePyroOven=ÐŸÐ¸Ñ€Ð¾Ð»Ð¸Ð·Ð½Ð°Ñ Ð¿ÐµÑ‡ÑŒ +tile.machine_pyrooven.name=ÐŸÐ¸Ñ€Ð¾Ð»Ð¸Ð·Ð½Ð°Ñ Ð¿ÐµÑ‡ÑŒ tile.conveyor.name=Конвейер tile.conveyor.desc=Перемещает предметы, упавшие на него$Может вращатьÑÑ Ð¿Ð¾ чаÑовой Ñтрелке Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ отвертки$Ðажмите на отвертку Ð´Ð»Ñ ÑÐ³Ð¸Ð±Ð°Ð½Ð¸Ñ @@ -2845,6 +2862,7 @@ item.ingot_schrabidium.name=Шрабидиевый Ñлиток item.nugget_schrabidium.name=Шрабидиевый Ñамородок item.plate_copper.name=ÐœÐµÐ´Ð½Ð°Ñ Ð¿Ð»Ð°Ñтина item.board_copper.name=ÐœÐµÐ´Ð½Ð°Ñ Ð¿Ð°Ð½ÐµÐ»ÑŒ +item.ingot_bscco.name=Слиток BSCCO item.ingot_advanced_alloy.name=Слиток продвинутого Ñплава item.plate_advanced_alloy.name=ПлаÑтина продвинутого Ñплава item.wire_advanced_alloy.name=Сверхпроводник @@ -2887,6 +2905,9 @@ item.plate_armor_ajr.name=ÐšÐ¾Ð²Ð°Ð½Ð°Ñ Ð¶ÐµÐ»ÐµÐ·Ð½Ð°Ñ Ð¾Ð±ÑˆÐ¸Ð²ÐºÐ° бро item.plate_armor_fau.name=Обшивка брони Фау item.plate_armor_dnt.name=Обшивка ДÐТ-брони item.armor_polish.name=Полироль Ð´Ð»Ñ Ð±Ñ€Ð¾Ð½Ð¸ ШайнингÐрмор™ +item.armor_battery.name=ÐккумулÑторный блок Ð´Ð»Ñ Ñиловой брони +item.armor_battery_mk2.name=ÐккумулÑторный блок Ð´Ð»Ñ Ñиловой брони Mk2 +item.armor_battery_mk3.name=ÐккумулÑторный блок Ð´Ð»Ñ Ñиловой брони Mk3 item.insert_esapi.name=ESAPI плаÑтины item.insert_kevlar.name=Кевларовые плаÑтины item.insert_sapi.name=SAPI плаÑтины @@ -3166,6 +3187,10 @@ item.circuit.chip_bismoid.name=Передовой интегральный ми item.circuit.pcb.name=ÐŸÐµÑ‡Ð°Ñ‚Ð½Ð°Ñ Ð¿Ð»Ð°Ñ‚Ð° item.circuit.silicon.name=ÐŸÐµÑ‡Ð°Ñ‚Ð½Ð°Ñ ÐºÑ€ÐµÐ¼Ð½Ð¸ÐµÐ²Ð°Ñ Ð¿Ð»Ð°Ñтина item.circuit.vacuum_tube.name=Ð’Ð°ÐºÑƒÑƒÐ¼Ð½Ð°Ñ Ñ‚Ñ€ÑƒÐ±ÐºÐ° +item.circuit.atomic_clock.name=Ðтомные чаÑÑ‹ +item.circuit.chip_quantum.name=Твердотельный квантовый процеÑÑор +item.circuit.controller_quantum.name=Квантовый компьютер +item.circuit.quantum.name=УÑтройÑтво квантовой обработки item.mechanism_revolver_1.name=Револьверный механизм item.mechanism_revolver_2.name=УÑовершенÑтвованный револьверный механизм item.mechanism_rifle_1.name=Винтовочный механизм @@ -3447,6 +3472,7 @@ item.bedrock_ore.grade.rad_byproduct.name=%s Ð±ÐµÐ´Ñ€Ð¾ÐºÐ¾Ð²Ð°Ñ Ñ€ÑƒÐ´Ð°, Оч item.bedrock_ore.grade.rad_roasted.name=%s Ð±ÐµÐ´Ñ€Ð¾ÐºÐ¾Ð²Ð°Ñ Ñ€ÑƒÐ´Ð°, ÐžÐ±Ð¾Ð¶Ð¶ÐµÐ½Ð½Ð°Ñ Ð¾Ñ‡Ð¸Ñ‰ÐµÐ½Ð½Ð°Ñ Ð¿Ð¾Ð±Ð¾Ñ‡ÐºÐ° item.bedrock_ore.grade.rad_arc.name=%s Ð±ÐµÐ´Ñ€Ð¾ÐºÐ¾Ð²Ð°Ñ Ñ€ÑƒÐ´Ð°, ÐŸÐµÑ€ÐµÐ¿Ð»Ð°Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð¾Ñ‡Ð¸Ñ‰ÐµÐ½Ð½Ð°Ñ Ð¿Ð¾Ð±Ð¾Ñ‡ÐºÐ° item.bedrock_ore.grade.rad_washed.name=%s Ð±ÐµÐ´Ñ€Ð¾ÐºÐ¾Ð²Ð°Ñ Ñ€ÑƒÐ´Ð°, ÐŸÑ€Ð¾Ð¼Ñ‹Ñ‚Ð°Ñ Ð¾Ñ‡Ð¸Ñ‰ÐµÐ½Ð½Ð°Ñ Ð¿Ð¾Ð±Ð¾Ñ‡ÐºÐ° +item.bedrock_ore_fragment.name=Фрагмент от %s руда item.bedrock_ore.type.actinide.name=ÐÐºÑ‚Ð¸Ð½Ð¸Ð´Ð½Ð°Ñ item.bedrock_ore.type.crystal.name=КриÑталличеÑÐºÐ°Ñ item.bedrock_ore.type.heavy.name=ТÑÐ¶ÐµÐ»Ð°Ñ Ð¼ÐµÑ‚Ð°Ð»Ð»Ð¸Ñ‡ÐµÑÐºÐ°Ñ @@ -3489,6 +3515,7 @@ item.ammonium_nitrate.name=Ðитрат Ð°Ð¼Ð¼Ð¾Ð½Ð¸Ñ tile.bobblehead.name=Болванчик tile.snowglobe.name=Снежный шар +tile.plushie.name=ÐŸÐ»ÑŽÑˆÐµÐ²Ð°Ñ Ð¸Ð³Ñ€ÑƒÑˆÐºÐ° %s tile.deco_titanium.name=Титановый декоративный блок tile.deco_red_copper.name=КраÑномедный декоративный блок tile.deco_tungsten.name=Вольфрамовый декоративный блок @@ -3568,6 +3595,7 @@ tile.lamp_tritium_green_on.name=Ð—ÐµÐ»Ñ‘Ð½Ð°Ñ Ñ‚Ñ€Ð¸Ñ‚Ð¸ÐµÐ²Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° tile.spotlight_incandescent.name=Лампа в клетке tile.spotlight_fluoro.name=ФлюореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° tile.spotlight_halogen.name=Галогенный прожектор +tile.floodlight.name=ЭлектричеÑкий прожектор tile.lamp_demon.name=Лампа из зарÑда-демона tile.reinforced_stone.name=Уплотненный камень tile.concrete_smooth.name=Бетон @@ -5549,6 +5577,7 @@ item.trenchmaster_plate.name=Ðагрудник траншейщика tile.mush.name=СветÑщийÑÑ Ð³Ñ€Ð¸Ð± tile.waste_mycelium.name=СветÑщийÑÑ Ð¼Ð¸Ñ†ÐµÐ»Ð¸Ð¹ +tile.sellafield_bedrock.name=Бедроковый Ñеллафит tile.sellafield_slaked.name=Погашенный Ñеллафит tile.sellafield.0.name=Селлафит tile.sellafield.1.name=ГорÑчий Ñеллафит @@ -6025,6 +6054,7 @@ item.part_generic.piston_electric.name=ЭлектричеÑкий поршень item.part_generic.piston_hydraulic.name=ГидравличеÑкий поршень item.part_generic.piston_pneumatic.name=ПневматичеÑкий поршень item.part_generic.lde.name=Элемент малой плотноÑти +item.part_generic.hde.name=Элемент повышенной прочноÑти item.particle_aelectron.name=КапÑула Ñ ÐŸÐ¾Ð·Ð¸Ñ‚Ñ€Ð¾Ð½Ð¾Ð¼ item.particle_amat.name=КапÑула Ñ Ðнтиматерией item.particle_aproton.name=КапÑула Ñ Ðнтипротоном @@ -6099,7 +6129,16 @@ item.digamma_diagnostic.name=ДиагноÑтика дигаммы tile.geiger.name=Счетчик Гейгера tile.glass_polonium.name=Полониевое Ñтекло item.survey_scanner.name=Сканер + item.ore_density_scanner.name=Сканер плотноÑти бедроковой руды +item.ore_density_scanner.excellent=Избыток +item.ore_density_scanner.high=Ð’Ñ‹Ñокий +item.ore_density_scanner.low=Ðизкий +item.ore_density_scanner.moderate=Средний +item.ore_density_scanner.poor=Бедный +item.ore_density_scanner.veryhigh=Очень выÑокий +item.ore_density_scanner.verypoor=Очень бедный + item.coltan_tool.name=КолтаÑÑ item.mirror_tool.name=ИнÑтрумент Ð´Ð»Ñ Ñ€ÐµÐ³ÑƒÐ»Ð¸Ñ€Ð¾Ð²ÐºÐ¸ зеркал item.mirror_tool.linked=ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ ÑƒÑтановлена! @@ -6115,6 +6154,18 @@ item.anchor_remote.name=УÑтройÑтво вызова item.acetylene_torch.name=ÐÑ†ÐµÑ‚Ð¸Ð»ÐµÐ½Ð¾Ð²Ð°Ñ ÑÐ²Ð°Ñ€Ð¾Ñ‡Ð½Ð°Ñ Ð³Ð¾Ñ€ÐµÐ»ÐºÐ° item.blowtorch.name=ПаÑÐ»ÑŒÐ½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð° +item.settings_tool.name=УÑтройÑтво наÑтройки +copytool.filter=Фильтр +copytool.invertRedstone=Инвертированный редÑтоун +copytool.invertFilter=Инвертированный фильтр +copytool.orientation=ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ +copytool.pattern0=КраÑÐ½Ð°Ñ Ñторона +copytool.pattern1=ÐžÑ€Ð°Ð½Ð¶ÐµÐ²Ð°Ñ Ñторона +copytool.pattern2=Ð–ÐµÐ»Ñ‚Ð°Ñ Ñторона +copytool.pattern3=Ð—ÐµÐ»Ñ‘Ð½Ð°Ñ Ñторона +copytool.pattern4=СинÑÑ Ñторона +copytool.pattern5=Ð¤Ð¸Ð¾Ð»ÐµÑ‚Ð¾Ð²Ð°Ñ Ñторона + item.multitool_dig.name=Ð¡Ð¸Ð»Ð¾Ð²Ð°Ñ Ð¿ÐµÑ€Ñ‡Ð°Ñ‚ÐºÐ° (Добывающий коготь) item.multitool_silk.name=Ð¡Ð¸Ð»Ð¾Ð²Ð°Ñ Ð¿ÐµÑ€Ñ‡Ð°Ñ‚ÐºÐ° (Коготь шёлкового каÑаниÑ) item.multitool_ext.name=Ð¡Ð¸Ð»Ð¾Ð²Ð°Ñ Ð¿ÐµÑ€Ñ‡Ð°Ñ‚ÐºÐ° (Извлекатель руды) diff --git a/src/main/resources/assets/hbm/lang/te_ST.lang b/src/main/resources/assets/hbm/lang/te_ST.lang deleted file mode 100644 index cc7f1b34b..000000000 --- a/src/main/resources/assets/hbm/lang/te_ST.lang +++ /dev/null @@ -1,1262 +0,0 @@ -itemGroup.tabTest=Nuclear Tech Mod Test Tab -itemGroup.tabParts=NTM Resources and Parts -itemGroup.tabBlocks=NTM Blocks and Machines -itemGroup.tabNuke=NTM Bombs and Gear -itemGroup.tabMachine=NTM Templates - -hbmfluid.none=None -hbmfluid.water=Water -hbmfluid.lava=Lava -hbmfluid.uf6=Uranium Hexafluoride -hbmfluid.puf6=Plutonium Hexafluoride -hbmfluid.deuterium=Deuterium -hbmfluid.tritium=Tritium -hbmfluid.oil=Crude Oil -hbmfluid.smear=Industrial Oil -hbmfluid.reclaimed=Reclaimed Industrial Oil -hbmfluid.petroil=Petroil -hbmfluid.lubricant=Engine Lubricant -hbmfluid.diesel=Diesel -hbmfluid.kerosene=Kerosene -hbmfluid.gas=Natural Gas -hbmfluid.coolant=Coolant -hbmfluid.amat=Antimatter -hbmfluid.aschrab=Antischrabidium - -item.record.lc.desc=Valve - Diabolic Adrenaline Guitar/Lambda Core -item.record.ss.desc=Valve - Sector Sweep -item.record.vc.desc=Valve - Vortal Combat - -death.attack.nuclearBlast=%1$s was blown away by a nuclear explosion. -death.attack.revolverBullet=%1$s was shot in the head by %2$s. -death.attack.mudPoisoning=%1$s died in poisonous mud. -death.attack.euthanized=%1$s was euthanized by %2$s. -death.attack.euthanizedSelf=%1$s euthanized himself, what a dork. -death.attack.euthanizedSelf2=%1$s wins the Darwin Award. -death.attack.tau=%1$s was riddeled by %2$s using negatively charged tauons. -death.attack.tauBlast=%1$s charged the XVL1456 for too long and was blown into pieces. -death.attack.chopperBullet=%1$s was rekt by %2$s. -death.attack.cmb=%1$s was fizzeled by %2$s. -death.attack.subAtomic=%1$s's atoms have been destroyed by %2$s. -death.attack.subAtomic2=%1$s was QPU-misaligned because %2$s tampered with his de facto speed. -death.attack.subAtomic3=%1$s's divergence dropped below 1 percent because of %2$s. -death.attack.subAtomic4=%1$s was divided by zero by %2$s. -death.attack.subAtomic5=%1$s was nullified by %2$s. -death.attack.radiation=%1$s died from radiation poisoning. -death.attack.acid=%1$s fell into acid. -death.attack.suicide=%1$s blew their head off. -death.attack.electrified=%1$s was electrified by %2$s. -death.attack.flamethrower=%1$s was cremated by %2$s. -death.attack.plasma=%1$s was immolated by %2$s. -death.attack.ice=%1$s was turned into a popsicle by %2$s. -death.attack.cheater=%1$s's intestines turned into oats. (???) -death.attack.laser=%1$s was turned into ash by %2$s. -death.attack.rubble=%1$s was squashed by debris. -death.attack.shrapnel=%1$s was ragged by a shrapnel. -death.attack.teleporter=%1$s was teleported into nothingness. -death.attack.blackhole=%1$s was spaghettified. - -item.redstone_sword.name=Redstone Sword -item.big_sword.name=Great Sword -item.test_nuke_igniter.name=Igniter -item.test_nuke_propellant.name=Propellant -item.test_nuke_tier1_shielding.name=Neutron Reflector (Tier 1) -item.test_nuke_tier2_shielding.name=Neutron Reflector (Tier 2) -item.test_nuke_tier1_bullet.name=U235 Projectile (Tier 1) -item.test_nuke_tier2_bullet.name=MOX Projectile (Tier 2) -item.test_nuke_tier1_target.name=Subcritical U235 Target (Tier 1) -item.test_nuke_tier2_target.name=Subcritical MOX Target (Tier 2) - -item.gadget_explosive.name=Propellant -item.gadget_explosive8.name=Bundle of Propellant -item.gadget_wireing.name=Wiring -item.gadget_core.name=Plutonium Core - -item.boy_igniter.name=Bomb Igniter -item.boy_propellant.name=Propellant -item.boy_bullet.name=U235 Projectile -item.boy_target.name=Subcritical U235 Target -item.boy_shielding.name=Neutron Shielding - -item.man_explosive.name=Beans -item.man_explosive8.name=Bundle of Propellant -item.man_igniter.name=Bomb Igniter -item.man_core.name=Plutonium Core - -item.mike_core.name=Uranium Coated Deuterium Tank -item.mike_deut.name=Deuterium Tank -item.mike_cooling_unit.name=Deuterium Cooling Unit - -item.tsar_core.name=Tsar Bomba Core - -item.fleija_igniter.name=Pulse Igniter -item.fleija_propellant.name=Schrabidium Propellant -item.fleija_core.name=F.L.E.I.J.A. Uranium 235 Charge - -container.nukeGadget=The Gadget -container.nukeBoy=Little Boy -container.nukeMan=Fat Man -container.nukeMike=Ivy Mike -container.nukeTsar=Tsar Bomba -container.nukeFleija=F.L.E.I.J.A. -container.nukePrototype=The Prototype -container.nukeCustom=Custom Nuke - -container.bombMulti=Multi Purpose Bomb - -tile.nuke_gadget.name=The Gadget -tile.nuke_boy.name=Little Boy -tile.nuke_man.name=Fat Man -tile.nuke_mike.name=Ivy Mike -tile.nuke_tsar.name=Tsar Bomba -tile.nuke_fleija.name=F.L.E.I.J.A. -tile.nuke_prototype.name=The Prototype -tile.nuke_custom.name=Custom Nuke - -tile.bomb_multi.name=Multi Purpose Bomb - -tile.flame_war.name=Flame War in a Box -tile.float_bomb.name=Levitation Bomb -tile.therm_endo.name=Endothermic Bomb -tile.therm_exo.name=Exothermic Bomb - -tile.crashed_bomb.name=Dud - -tile.crate.name=Supply Crate -tile.marker_structure.name=Multiblock Structure Marker - -tile.machine_difurnace_off.name=Alloy Furnace -tile.machine_difurnace_on.name=Alloy Furnace -container.diFurnace=Alloy Furnace -tile.machine_centrifuge.name=Centrifuge -container.centrifuge=Centrifuge -tile.machine_uf6_tank.name=Uranium Hexafluoride Tank -container.uf6_tank=UF6 Tank -tile.machine_puf6_tank.name=Plutonium Hexafluoride Tank -container.puf6_tank=PuF6 Tank -tile.machine_reactor.name=Breeding Reactor -container.reactor=Breeding Reactor -tile.machine_nuke_furnace_off.name=Nuclear Powered Furnace -tile.machine_nuke_furnace_on.name=Nuclear Powered Furnace -container.nukeFurnace=Nuclear Powered Furnace -tile.machine_rtg_furnace_off.name=RTG Furnace -tile.machine_rtg_furnace_on.name=RTG Furnace -container.rtgFurnace=RTG Furnace -tile.machine_electric_furnace_off.name=Electric Furnace -tile.machine_electric_furnace_on.name=Electric Furnace -container.electricFurnace=Electric Furnace -tile.machine_generator.name=Nuclear Reactor -container.generator=Nuclear Reactor -tile.red_wire_coated.name=Coated Red Copper Cable -tile.machine_deuterium.name=Deuterium Extractor -container.machine_deuterium=Deuterium Extractor -tile.machine_battery.name=Energy Storage Block -container.battery=Energy Storage -tile.machine_coal_off.name=Coal Generator -tile.machine_coal_on.name=Coal Generator -container.machineCoal=Coal Generator -tile.launch_pad.name=Missile Launch Pad -container.launchPad=Missile Launch Pad -tile.book_guide.name=Hbm's Nuclear Tech Mod Manual -tile.machine_schrabidium_transmutator.name=Schrabidium Transmutation Device -container.machine_schrabidium_transmutator=Schrabidium Transmutation Device -tile.machine_diesel.name=Diesel Generator -container.machineDiesel=Diesel Generator -tile.machine_shredder.name=Shredder -container.machineShredder=Shredder -tile.machine_combine_factory.name=CMB Steel Furnace -container.machineCMB=CMB Steel Furnace -tile.machine_teleporter.name=Teleporter -container.teleporter=Teleporter -tile.machine_reix_mainframe.name=Rei-X Mainframe (WIP) -container.reix=Rei-X Mainframe -tile.machine_industrial_generator.name=Industrial Generator -container.iGenerator=Industrial Generator -tile.machine_cyclotron.name=Cyclotron -container.cyclotron=Cyclotron -tile.machine_well.name=Oil Derrick -tile.oil_pipe.name=Crude Oil Extraction Pipe -container.oilWell=Oil Derrick -tile.machine_refinery.name=Oil Refinery -container.machineRefinery=Oil Refinery -tile.oil_duct.name=Oil Pipe -tile.oil_duct_solid.name=Coated Oil Pipe -tile.machine_flare.name=Gas Flare -container.gasFlare=Gas Flare -tile.gas_duct.name=Gas Pipe -tile.gas_duct_solid.name=Coated Gas Pipe -tile.machine_drill.name=Automatic Mining Drill -container.miningDrill=Automatic Mining Drill -tile.machine_assembler.name=Assembly Machine -container.assembler=Assembly Machine -tile.machine_chemplant.name=Chemical Plant -container.chemplant=Chemical Plant - -tile.red_pylon.name=Electricity Pole -item.wiring_red_copper.name=Cable Drum - -tile.rail_highspeed.name=High Speed Rail -tile.rail_booster.name=High Speed Booster Rail - -tile.factory_titanium_hull.name=Basic Factory Casing -tile.factory_titanium_furnace.name=Basic Factory Access Hatch -tile.factory_titanium_conductor.name=Basic Factory Electricity Port -tile.factory_titanium_core.name=Basic Factory Core Component -item.factory_core_titanium.name=Basic Factory Energy Cluster -container.factoryTitanium=Basic Factory -tile.factory_advanced_hull.name=Advanced Factory Casing -tile.factory_advanced_furnace.name=Advanced Factory Access Hatch -tile.factory_advanced_conductor.name=Advanced Factory Electricity Port -tile.factory_advanced_core.name=Advanced Factory Core Component -item.factory_core_advanced.name=Advanced Factory Energy Cluster -container.factoryAdvanced=Advanced Factory - -tile.reactor_element.name=Reactor Chamber -tile.reactor_control.name=Control Rods -tile.reactor_hatch.name=Reactor Access Hatch -tile.reactor_conductor.name=Reactor Electricity Port -tile.reactor_computer.name=Reactor Control -container.reactorMultiblock=Big Nuclear Reactor - -tile.fusion_conductor.name=Superconducting Magnet -tile.fusion_center.name=Central Magnet Piece -tile.fusion_motor.name=Magnet Motor Piece -tile.fusion_heater.name=Plasma Heater -tile.fusion_hatch.name=Fusion Reactor Access Hatch -tile.fusion_core.name=Fusion Reactor Control -tile.plasma.name=Plasma -container.fusionMultiblock=Big Fusion Reactor - -tile.watz_element.name=Watz Reaction Chamber -tile.watz_control.name=Reinforced Control Rods -tile.watz_cooler.name=Watz Reactor Supercooler -tile.watz_end.name=Watz Reactor Stability Element -tile.watz_hatch.name=Watz Reactor Access Hatch -tile.watz_conductor.name=Watz Electricity Port -tile.watz_core.name=Watz Reactor Control -container.watzPowerplant=Watz Power Plant - -tile.fwatz_conductor.name=4000K Superconducting Magnet -tile.fwatz_cooler.name=Regenerative Coolant Fluid Tank Shell -tile.fwatz_tank.name=Regenerative Coolant Fluid Tank -tile.fwatz_scaffold.name=Fusionary Watz Plant Structural Support -tile.fwatz_hatch.name=Fusionary Watz Plant Access Hatch -tile.fwatz_computer.name=Fusionary Watz Reactor Calculation Matrix -tile.fwatz_core.name=Fusionary Watz Reactor Control -tile.fwatz_plasma.name=Destabilized Antischrabidium Plasma -container.fusionaryWatzPlant=Fusionary Watz Plant - -tile.machine_rtg_grey.name=RT Generator -container.rtg=RT Generator -tile.machine_rtg_red.name=Fulmination Generator -tile.machine_rtg_orange.name=Strong RT Generator -tile.machine_rtg_yellow.name=Australium Superfuel Reactor -tile.machine_rtg_green.name=Verticium Wealth Generator -tile.machine_rtg_cyan.name=Schrabidium Decay Generator (WIP) -tile.machine_rtg_blue.name=Convection Generator -tile.machine_rtg_purple.name=Antimatter Annihilation Generator - -item.assembly_template.TEST.name=Assembly Template: Test -item.assembly_template.MIXED_PLATE.name=Assembly Template: Mixed Plate -item.assembly_template.HAZMAT_CLOTH.name=Assembly Template: Hazmat Cloth -item.assembly_template.ASBESTOS_CLOTH.name=Assembly Template: Fire Proximity Cloth -item.assembly_template.COAL_FILTER.name=Assembly Template: Activated Carbon Filter -item.assembly_template.CENTRIFUGE_ELEMENT.name=Assembly Template: Centrifuge Element -item.assembly_template.CENTRIFUGE_TOWER.name=Assembly Template: Centrifuge Tower -item.assembly_template.DEE_MAGNET.name=Assembly Template: Dee Magnets -item.assembly_template.FLAT_MAGNET.name=Assembly Template: Flat Magnet -item.assembly_template.CYCLOTRON_TOWER.name=Assembly Template: Cyclotron Tower -item.assembly_template.REACTOR_CORE.name=Assembly Template: Breeding Reactor Core -item.assembly_template.RTG_UNIT.name=Assembly Template: RTG Unit -item.assembly_template.HEAT_UNIT.name=Assembly Template: Thermal Distribution Unit -item.assembly_template.GRAVITY_UNIT.name=Assembly Template: Gravity Manipulator -item.assembly_template.TITANIUM_DRILL.name=Assembly Template: Titanium Drill -item.assembly_template.TELEPAD.name=Assembly Template: Telepad -item.assembly_template.TELEKIT.name=Assembly Template: Entanglement Kit -item.assembly_template.GEASS_REACTOR.name=Assembly Template: Dysfunctional Nuclear Reactor -item.assembly_template.GENERATOR_FRONT.name=Assembly Template: Generator Front -item.assembly_template.WT1_GENERIC.name=Assembly Template: Small Warhead -item.assembly_template.WT2_GENERIC.name=Assembly Template: Medium Warhead -item.assembly_template.WT3_GENERIC.name=Assembly Template: Large Warhead -item.assembly_template.WT1_FIRE.name=Assembly Template: Small Incendiary Warhead -item.assembly_template.WT2_FIRE.name=Assembly Template: Medium Incendiary Warhead -item.assembly_template.WT3_FIRE.name=Assembly Template: Large Incendiary Warhead -item.assembly_template.WT1_CLUSTER.name=Assembly Template: Small Cluster Warhead -item.assembly_template.WT2_CLUSTER.name=Assembly Template: Medium Cluster Warhead -item.assembly_template.WT3_CLUSTER.name=Assembly Template: Large Cluster Warhead -item.assembly_template.WT1_BUSTER.name=Assembly Template: Small Bunker Buster Warhead -item.assembly_template.WT2_BUSTER.name=Assembly Template: Medium Bunker Buster Warhead -item.assembly_template.WT3_BUSTER.name=Assembly Template: Large Bunker Buster Warhead -item.assembly_template.W_NUCLEAR.name=Assembly Template: Nuclear Warhead -item.assembly_template.W_MIRVLET.name=Assembly Template: MIRV -item.assembly_template.W_MIRV.name=Assembly Template: Eightfold MIRV Warhead -item.assembly_template.W_ENDOTHERMIC.name=Assembly Template: Endothermic Warhead -item.assembly_template.W_EXOTHERMIC.name=Assembly Template: Exothermic Warhead -item.assembly_template.T1_TANK.name=Assembly Template: Small Fuel Tank -item.assembly_template.T2_TANK.name=Assembly Template: Medium Fuel Tank -item.assembly_template.T3_TANK.name=Assembly Template: Large Fuel Tank -item.assembly_template.T1_THRUSTER.name=Assembly Template: Small Thruster -item.assembly_template.T2_THRUSTER.name=Assembly Template: Medium Thruster -item.assembly_template.T3_THRUSTER.name=Assembly Template: Large Thruster -item.assembly_template.CHOPPER_HEAD.name=Assembly Template: Hunter Chopper Cockpit -item.assembly_template.CHOPPER_GUN.name=Assembly Template: Emplacement Gun -item.assembly_template.CHOPPER_BODY.name=Assembly Template: Hunter Chopper Body -item.assembly_template.CHOPPER_TAIL.name=Assembly Template: Hunter Chopper Tail -item.assembly_template.CHOPPER_WING.name=Assembly Template: Hunter Chopper Wing -item.assembly_template.CHOPPER_BLADES.name=Assembly Template: Hunter Chopper Rotor Blades -item.assembly_template.CIRCUIT_2.name=Assembly Template: Enhanced Circuit -item.assembly_template.CIRCUIT_3.name=Assembly Template: Advanced Circuit -item.assembly_template.RTG_PELLET.name=Assembly Template: Plutonium 238 Fuel Pellet -item.assembly_template.WEAK_PELLET.name=Assembly Template: Weak Uranium RTG Pellet -item.assembly_template.FUSION_PELLET.name=Assembly Template: Tritium-Deuterium-Cake -item.assembly_template.CLUSTER_PELLETS.name=Assembly Template: Explosive Pellets -item.assembly_template.GUN_PELLETS.name=Assembly Template: Lead Pellets - -item.fuse.name=Fuse - -tile.test_nuke.name=Test Nuke - -item.ingot_uranium.name=Uranium Ingot -item.ingot_u235.name=U235 Ingot -item.ingot_u238.name=U238 Ingot -item.ingot_plutonium.name=Plutonium Ingot -item.ingot_pu238.name=Pu238 Ingot -item.ingot_pu239.name=Pu239 Ingot -item.ingot_pu240.name=Pu240 Ingot -item.ingot_titanium.name=Titanium Ingot -item.sulfur.name=Sulfur - -item.niter.name=Niter -item.ingot_copper.name=Industrial Grade Copper -item.ingot_red_copper.name=Minecraft Grade Copper -item.ingot_tungsten.name=Tungsten Ingot -item.ingot_aluminium.name=Aluminium Ingot -item.fluorite.name=Fluorite -item.ingot_steel.name=Steel Ingot -item.plate_steel.name=Steel Plate -item.ingot_beryllium.name=Beryllium Ingot -item.plate_schrabidium.name=Schrabidium Plate -item.ingot_schrabidium.name=Schrabidium Ingot -item.nugget_schrabidium.name=Schrabidium Nugget -item.plate_copper.name=Copper Plate -item.board_copper.name=Copper Panel -item.ingot_advanced_alloy.name=Advanced Alloy Ingot -item.plate_advanced_alloy.name=Advanced Alloy Plate -item.wire_advanced_alloy.name=Super Conductor -item.coil_advanced_alloy.name=Super Conducting Coil -item.coil_advanced_torus.name=Super Conducting Ring Coil -item.coil_gold.name=Gold Coil -item.coil_gold_torus.name=Golden Ring Coil -item.lithium.name=Lithium Cube -item.ingot_magnetized_tungsten.name=Magnetized Tungsten Ingot -item.ingot_combine_steel.name=CMB Steel Ingot -item.plate_combine_steel.name=CMB Steel Plate -item.wire_magnetized_tungsten.name=4000K High Temperature Super Conductor -item.coil_magnetized_tungsten.name=4000K High Temperature Super Conducting Coil -item.plate_mixed.name=Mixed Plate -item.plate_paa.name=PaA Alloy Plate -item.ingot_dura_steel.name=High-Speed Steel Ingot -item.ingot_polymer.name=Polymer Ingot -item.bolt_dura_steel.name=High-Speed Steel Bolt -item.pipes_steel.name=Steel Pipes -item.drill_titanium.name=Titanium Drill - -item.ingot_australium.name=Australium Ingot -item.ingot_weidanium.name=Weidanium Ingot -item.ingot_reiium.name=Reiium Ingot -item.ingot_unobtainium.name=Unobtainium Ingot -item.ingot_daffergon.name=Daffergon Ingot -item.ingot_verticium.name=Verticium Ingot -item.nugget_australium.name=Australium Nugget -item.nugget_weidanium.name=Weidanium Nugget -item.nugget_reiium.name=Reiium Nugget -item.nugget_unobtainium.name=Unobtainium Nugget -item.nugget_daffergon.name=Daffergon Nugget -item.nugget_verticium.name=Verticium Nugget - -item.ingot_desh.name=Desh Ingot -item.nugget_desh.name=Desh Nugget -item.powder_desh.name=Desh Powder - -item.nugget_u235.name=U235 Nugget -item.nugget_u238.name=U238 Nugget -item.nugget_pu238.name=Pu238 Nugget -item.nugget_pu239.name=Pu239 Nugget -item.nugget_pu240.name=Pu240 Nugget -item.plate_titanium.name=Titanium Plate -item.plate_aluminium.name=Aluminium Plate -item.wire_red_copper.name=Red Copper Wire -item.neutron_reflector.name=Neutron Reflector -item.nugget_beryllium.name=Beryllium Nugget - -item.wire_aluminium.name=Aluminium Wire -item.wire_copper.name=Copper Wire -item.wire_gold.name=Gold Wire -item.wire_schrabidium.name=Schrabidium Wire - -item.circuit_aluminium.name=Basic Circuit -item.circuit_copper.name=Enhanced Circuit -item.circuit_red_copper.name=Advanved Circuit -item.circuit_gold.name=Overclocked Circuit -item.circuit_schrabidium.name=High Performance Circuit - -tile.block_aluminium.name=Block of Aluminium -tile.block_copper.name=Block of Copper -tile.block_fluorite.name=Block of Fluorite -tile.block_niter.name=Block of Niter -tile.block_red_copper.name=Block of Red Copper -tile.block_steel.name=Block of Steel -tile.block_sulfur.name=Block of Sulfur -tile.block_titanium.name=Block of Titanium -tile.block_tungsten.name=Block of Tungsten -tile.block_uranium.name=Block of Uranium -tile.block_trinitite.name=Block of Trinitite -tile.block_beryllium.name=Block of Beryllium -tile.block_waste.name=Block of Nuclear Waste -tile.block_scrap.name=Block of Scrap -tile.block_electrical_scrap.name=Block of Electrical Scrap -tile.block_advanced_alloy.name=Block of Advanced Alloy -tile.block_magnetized_tungsten.name=Block of Magnetized Tungsten -tile.block_combine_steel.name=Block of CMB Steel -tile.block_australium.name=Block of Australium -tile.block_weidanium.name=Block of Weidanium -tile.block_reiium.name=Block of Reiium -tile.block_unobtainium.name=Block of Unobtainium -tile.block_daffergon.name=Block of Daffergon -tile.block_verticium.name=Block of Verticium -tile.block_desh.name=Reinfoced Block of Desh - -tile.ore_aluminium.name=Aluminium Ore -tile.ore_copper.name=Copper Ore -tile.ore_fluorite.name=Fluorite Ore -tile.ore_niter.name=Niter Ore -tile.ore_sulfur.name=Sulfur Ore -tile.ore_titanium.name=Titanium Ore -tile.ore_tungsten.name=Tungsten Ore -tile.ore_uranium.name=Uranium Ore -tile.ore_schrabidium.name=Schrabidium Ore -tile.ore_beryllium.name=Beryllium Ore - -tile.ore_nether_uranium.name=Nether Uranium Ore -tile.ore_nether_plutonium.name=Nether Plutonium Ore -tile.ore_nether_tungsten.name=Nether Tungsten Ore -tile.ore_nether_sulfur.name=Nether Sulfur Ore -tile.ore_nether_fire.name=Fire Ore -tile.ore_nether_schrabidium.name=Nether Schrabidium Ore - -tile.ore_australium.name=Australian Ore -tile.ore_weidanium.name=Weidite -tile.ore_reiium.name=Reiite -tile.ore_unobtainium.name=Brightblende Ore -tile.ore_daffergon.name=Dellite -tile.ore_verticium.name=Dollar Green Mineral - -tile.ore_oil.name=Oil Deposit -tile.ore_oil_empty.name=Empty Oil Deposit - -tile.reinforced_brick.name=Reinforced Stone -tile.reinforced_glass.name=Reinforced Glass -tile.reinforced_sand.name=Reinforced Sandstone -tile.reinforced_light.name=Reinforced Glowstone -tile.reinforced_lamp_off.name=Reinforced Lamp -tile.reinforced_lamp_on.name=Reinforced Lamp - -tile.brick_concrete.name=Concrete Bricks -tile.brick_obsidian.name=Obsidian Bricks -tile.brick_light.name=Light Bricks -tile.asphalt.name=Asphalt - -tile.cmb_brick.name=CMB Steel Tile -tile.cmb_brick_reinforced.name=Reinforced CMB Bricks - -tile.gravel_obsidian.name=Crushed Obsidian - -tile.seal_frame.name=Silo Hatch Frame -tile.seal_controller.name=Silo Hatch Opener -tile.seal_hatch.name=Silo Hatch - -item.nugget_uranium.name=Uranium Nugget -item.nugget_plutonium.name=Plutonium Nugget -item.nugget_neptunium.name=Neptunium Nugget -item.ingot_neptunium.name=Neptunium Ingot -item.nugget_lead.name=Lead Nugget -item.ingot_lead.name=Lead Ingot -tile.block_lead.name=Block of Lead -tile.ore_lead.name=Lead Ore - -item.powder_lead.name=Lead Powder -item.powder_neptunium.name=Neptunium Powder -item.powder_schrabidium.name=Schrabidium Powder -item.powder_iron.name=Iron Powder -item.powder_gold.name=Gold Powder -item.powder_aluminium.name=Aluminium Powder -item.powder_beryllium.name=Beryllium Powder -item.powder_copper.name=Copper Powder -item.powder_titanium.name=Titanium Powder -item.powder_tungsten.name=Tungsten Powder -item.powder_uranium.name=Uranium Powder -item.powder_plutonium.name=Plutonium Powder -item.dust.name=Dust -item.powder_coal.name=Coal Powder -item.powder_lapis.name=Lapis Lazuli Powder -item.powder_emerald.name=Emerald Powder -item.powder_diamond.name=Diamond Powder -item.powder_red_copper.name=Red Copper Powder -item.powder_steel.name=Steel Powder -item.powder_magnetized_tungsten.name=Magnetized Tungsten Powder -item.powder_combine_steel.name=CMB Steel Powder -item.powder_lithium.name=Lithium Powder -item.powder_advanced_alloy.name=Advanced Alloy Powder -item.powder_quartz.name=Quartz Powder -item.powder_power.name=Energy Powder -item.powder_iodine.name=Iodine Powder -item.powder_thorium.name=Thorium Powder -item.powder_neodymium.name=Neodymium Powder -item.powder_astatine.name=Astatine Powder -item.powder_caesium.name=Caesium Powder -item.powder_australium.name=Australium Powder -item.powder_weidanium.name=Weidanium Powder -item.powder_reiium.name=Reiium Powder -item.powder_unobtainium.name=Unobtainium Powder -item.powder_daffergon.name=Daffergon Powder -item.powder_verticium.name=Verticium Powder -item.powder_strontium.name=Strontium Powder -item.powder_cobalt.name=Cobalt Powder -item.powder_bromine.name=Bromine Powder -item.powder_niobium.name=Niobium Powder -item.powder_tennessine.name=Tennessine Powder -item.powder_cerium.name=Cerium Powder -item.powder_dura_steel.name=High-Speed Steel Powder -item.powder_polymer.name=Polymer Powder -item.powder_lanthanium.name=Lanthanium Powder -item.powder_actinium.name=Actinium Powder -item.powder_lithium_tiny.name=Tiny Pile of Lithium Powder -item.powder_cobalt_tiny.name=Tiny Pile of Cobalt Powder - -item.battery_generic.name=Battery -item.battery_advanced.name=Advanced Battery -item.battery_lithium.name=Lithium-Ion Battery -item.battery_schrabidium.name=Schrabidium Battery -item.battery_creative.name=Infinite Battery - -item.battery_red_cell.name=Redstone Power Cell -item.battery_advanced_cell.name=Advanced Power Cell -item.battery_lithium_cell.name=Lithium-Ion Power Cell -item.battery_schrabidium_cell.name=Schrabidium Power Cell -item.battery_red_cell_6.name=Sixfold Redstone Power Cell -item.battery_advanced_cell_4.name=Quadruple Advanced Power Cell -item.battery_lithium_cell_3.name=Tripple Lithium-Ion Power Cell -item.battery_schrabidium_cell_2.name=Double Schrabidium Power Cell -item.battery_red_cell_24.name=24-Fold Redstone Power Cell -item.battery_advanced_cell_12.name=Twelvefold Advanced Power Cell -item.battery_lithium_cell_6.name=Sixfold Lithium-Ion Power Cell -item.battery_schrabidium_cell_4.name=Quadruple Schrabidium Power Cell - -item.upgrade_template.name=Machine Upgrade Piece Template -item.upgrade_speed_1.name=Red Machine Upgrade Mk.I -item.upgrade_speed_2.name=Red Machine Upgrade Mk.II -item.upgrade_speed_3.name=Red Machine Upgrade Mk.III -item.upgrade_effect_1.name=Green Machine Upgrade Mk.I -item.upgrade_effect_2.name=Green Machine Upgrade Mk.II -item.upgrade_effect_3.name=Green Machine Upgrade Mk.III -item.upgrade_power_1.name=Blue Machine Upgrade Mk.I -item.upgrade_power_2.name=Blue Machine Upgrade Mk.II -item.upgrade_power_3.name=Blue Machine Upgrade Mk.III -item.upgrade_fortune_1.name=Purple Machine Upgrade Mk.I -item.upgrade_fortune_2.name=Purple Machine Upgrade Mk.II -item.upgrade_fortune_3.name=Purple Machine Upgrade Mk.III - -item.fusion_core.name=Fusion Core -item.energy_core.name=Makeshift Energy Core - -item.plate_iron.name=Iron Plate -item.plate_lead.name=Lead Plate -item.coil_copper.name=Copper Coil -item.coil_copper_torus.name=Ring Coil -item.wire_tungsten.name=Tungsten Wire -item.coil_tungsten.name=Heating Coil -item.tank_steel.name=Steel Tank -item.motor.name=Motor -item.centrifuge_element.name=Centrifuge Element -item.centrifuge_tower.name=Centrifuge Tower -item.reactor_core.name=Breeding Reactor Core -item.pellet_rtg.name=Plutonium 238 Fuel Pellet -item.pellet_rtg_weak.name=Weak Uranium RTG Pellet -item.rtg_unit.name=RTG Unit -item.hazmat_cloth.name=Hazmat Cloth -item.asbestos_cloth.name=Fire Proximity Cloth -item.filter_coal.name=Activated Carbon Filter -item.tritium_deuterium_cake.name=Tritium-Deuterium-Cake -item.telepad.name=Telepad -item.entanglement_kit.name=Entanglement Kit -item.toothpicks.name=Toothpicks -item.ducttape.name=Duct Tape -item.magnet_dee.name=Dee Magnets -item.magnet_circular.name=Flat Magnet -item.cyclotron_tower.name=Cyclotron Tower -item.plate_dalekanium.name=Angry Metal - -item.cell_empty.name=Empty Cell -item.cell_uf6.name=Uranium Hexafluorite Cell -item.cell_puf6.name=Plutonium Hexafluorite Cell -item.cell_antimatter.name=Antimatter Cell -item.cell_deuterium.name=Deuterium Cell -item.cell_tritium.name=Tritium Cell -item.cell_sas3.name=Schrabidium Trisulfide Cell -item.cell_anti_schrabidium.name=Antischrabidium Cell -item.singularity.name=Singularity -item.singularity_counter_resonant.name=Contained Counter-Resonant Singularity -item.singularity_super_heated.name=Superheated Resonating Singularity -item.black_hole.name=Miniature Black Hole -item.crystal_xen.name=Artificial Xen Crystal - -item.inf_water.name=Infinite Water Tank -item.inf_deuterium.name=Infinite Deuterium Tank -item.inf_tritium.name=Infinite Tritium Tank -item.inf_coolant.name=Infinite Coolant Tank -item.inf_sulfur.name=Infinite Sulfur Tank -item.inf_diesel.name=Infinite Diesel Tank -item.inf_antimatter.name=Infinite Antimatter Tank -item.inf_antischrabidium.name=Infinite Antischrabidium Tank - -item.oil_canola.name=Raw Canola Oil - -item.canister_empty.name=Empty Canister -item.canister_smear.name=Industrial Oil Canister -item.canister_canola.name=Engine Lubricant -item.canister_oil.name=Crude Oil Canister -item.canister_fuel.name=Fuel Canister -item.canister_kerosene.name=Kerosene Canister -item.canister_reoil.name=Canister of Reclaimed Industrial Oil -item.canister_petroil.name=Petroil Canister -item.canister_napalm.name=Napalm B -item.canister_NITAN.name=NITAN© 100 Octane Super Fuel -item.gas_empty.name=Empty Gas Tank -item.gas_full.name=Gas Tank - -item.rod_empty.name=Emty Rod -item.rod_uranium.name=Uranium Rod -item.rod_u235.name=U235 Rod -item.rod_u238.name=U238 Rod -item.rod_plutonium.name=Plutonium Rod -item.rod_pu238.name=Pu238 Rod -item.rod_pu239.name=Pu239 Rod -item.rod_pu240.name=Pu240 Rod -item.rod_neptunium.name=Neptunium Rod -item.rod_lead.name=Lead Rod -item.rod_schrabidium.name=Schrabidium Rod -item.rod_astatine.name=Euphemium Rod -item.rod_australium.name=Australium Rod -item.rod_weidanium.name=Weidanium Rod -item.rod_reiium.name=Reiium Rod -item.rod_unobtainium.name=Unobtainium Rod -item.rod_daffergon.name=Daffergon Rod -item.rod_verticium.name=Verticium Rod - -item.rod_dual_empty.name=Emty Dual Rod -item.rod_dual_uranium.name=Uranium Dual Fl Rod -item.rod_dual_u235.name=U235 Dual Rod -item.rod_dual_u238.name=U238 Dual Rod -item.rod_dual_plutonium.name=Plutonium Dual Rod -item.rod_dual_pu238.name=Pu238 Dual Rod -item.rod_dual_pu239.name=Pu239 Dual Rod -item.rod_dual_pu240.name=Pu240 Dual Rod -item.rod_dual_neptunium.name=Neptunium Dual Rod -item.rod_dual_lead.name=Lead Dual Rod -item.rod_dual_schrabidium.name=Schrabidium Dual Rod - -item.rod_quad_empty.name=Emty Quad Rod -item.rod_quad_uranium.name=Uranium Quad Rod -item.rod_quad_u235.name=U235 Quad Rod -item.rod_quad_u238.name=U238 Quad Rod -item.rod_quad_plutonium.name=Plutonium Quad Rod -item.rod_quad_pu238.name=Pu238 Quad Rod -item.rod_quad_pu239.name=Pu239 Quad Rod -item.rod_quad_pu240.name=Pu240 Quad Rod -item.rod_quad_neptunium.name=Neptunium Quad Rod -item.rod_quad_lead.name=Lead Quad Rod -item.rod_quad_schrabidium.name=Schrabidium Quad Rod - -item.rod_uranium_fuel_depleted.name=Depleted Uranium Fuel Rod -item.rod_dual_uranium_fuel_depleted.name=Depleted Uranium Dual Fuel Rod -item.rod_quad_uranium_fuel_depleted.name=Depleted Uranium Quad Fuel Rod -item.rod_plutonium_fuel_depleted.name=Depleted Plutonium Fuel Rod -item.rod_dual_plutonium_fuel_depleted.name=Depleted Plutonium Dual Fuel Rod -item.rod_quad_plutonium_fuel_depleted.name=Depleted Plutonium Quad Fuel Rod -item.rod_mox_fuel_depleted.name=Depleted MOX Fuel Rod -item.rod_dual_mox_fuel_depleted.name=Depleted MOX Dual Fuel Rod -item.rod_quad_mox_fuel_depleted.name=Depleted MOX Quad Fuel Rod -item.rod_schrabidium_fuel_depleted.name=Depleted Schrabidium Fuel Rod -item.rod_dual_schrabidium_fuel_depleted.name=Depleted Schrabidium Dual Fuel Rod -item.rod_quad_schrabidium_fuel_depleted.name=Depleted Schrabidium Quad Fuel Rod - -item.rod_waste.name=Nuclear Waste Rod -item.rod_dual_waste.name=Nuclear Waste Dual Rod -item.rod_quad_waste.name=Nuclear Waste Quad Rod - -item.gun_rpg.name=Rocket Launcher -item.gun_rpg_ammo.name=Rocket - -item.flame_pony.name=Painting of a Cartoon Pony -item.flame_conspiracy.name=Conspiracy Theory -item.flame_politics.name=Political Topic -item.flame_opinion.name=Own Opinion - -item.pellet_cluster.name=Explosive Pellets -item.pellet_buckshot.name=Lead Pellets -item.powder_fire.name=Flame Powder -item.powder_ice.name=Cryo Powder -item.powder_poison.name=Poison Powder -item.pellet_gas.name=Poison Gas Cartridge -item.magnetron.name=Magnetron -item.powder_thermite.name=Thermite - -item.nuke_starter_kit.name=Atomic Science Starter Kit -item.nuke_commercially_kit.name=Atomic Science Kit for Commercial Uses -item.nuke_advanced_kit.name=Atomic Science Advanced Kit -item.gadget_kit.name=The Gadget Kit -item.boy_kit.name=Little Boy Kit -item.man_kit.name=Fat Man Kit -item.mike_kit.name=Ivy Mike Kit -item.tsar_kit.name=Tsar Bomba Kit -item.fleija_kit.name=F.L.E.I.J.A. Kit -item.multi_kit.name=Multi Purpose Bomb Kit -item.grenade_kit.name=Grenade Kit -item.nuke_electric_kit.name=Electronic Engineer's Kit -item.prototype_kit.name=Prototype Kit -item.missile_kit.name=Missile Kit -item.t45_kit.name=T45 Power Armor Kit -item.euphemium_kit.name=Euphemium Kit - -tile.waste_earth.name=Dead Grass -tile.waste_trinitite.name=Trinitite Ore -tile.waste_trinitite_red.name=Red Trinitite Ore -tile.waste_log.name=Charred Log -tile.waste_planks.name=Charred Wooden Planks - -item.trinitite.name=Trinitite -item.nuclear_waste.name=Nuclear Waste -item.scrap.name=Scrap - -item.ingot_uranium_fuel.name=Ingot of Uranium Fuel -item.ingot_plutonium_fuel.name=Ingot of Plutonium Fuel -item.ingot_mox_fuel.name=Ingot of MOX Fuel -item.ingot_schrabidium_fuel.name=Ingot of Schrabidium Fuel - -item.nugget_uranium_fuel.name=Nugget of Uranium Fuel -item.nugget_plutonium_fuel.name=Nugget of Plutonium Fuel -item.nugget_mox_fuel.name=Nugget of MOX Fuel -item.nugget_schrabidium_fuel.name=Nugget of Schrabidium Fuel - -item.grenade_generic.name=Grenade -item.grenade_strong.name=Enhanced Grenade -item.grenade_frag.name=Frag Grenade -item.grenade_fire.name=Flame Frag Grenade -item.grenade_shrapnel.name=Shrapnel Grenade -item.grenade_cluster.name=Cluster Bomb -item.grenade_flare.name=Flare Grenade -item.grenade_electric.name=Lightning Bomb -item.grenade_poison.name=Poison Grenade -item.grenade_gas.name=Gas Grenade -item.grenade_pulse.name=Impulse Grenade -item.grenade_plasma.name=Plasma Grenade -item.grenade_tau.name=Tau Grenade -item.grenade_schrabidium.name=Schrabidium Grenade -item.grenade_lemon.name=Combustible Lemon -item.grenade_mk2.name=Mk 2 Grenade "Ambassador Pineapple" -item.grenade_aschrab.name=Tossable Antischrabidium Cell -item.grenade_nuke.name=Mark VI Drill Grenade -item.grenade_nuclear.name=Nuka Grenade -item.grenade_zomg.name=Negative Energy Pair Annihilation Grenade -item.grenade_black_hole.name=Black Hole Grenade -item.ullapool_caber.name=Ullapool Caber - -item.rod_uranium_fuel.name=Uranium Fuel Rod -item.rod_dual_uranium_fuel.name=Uranium Dual Fuel Rod -item.rod_quad_uranium_fuel.name=Uranium Quad Fuel Rod -item.rod_plutonium_fuel.name=Plutonium Fuel Rod -item.rod_dual_plutonium_fuel.name=Plutonium Dual Fuel Rod -item.rod_quad_plutonium_fuel.name=Plutonium Quad Fuel Rod -item.rod_mox_fuel.name=MOX Fuel Rod -item.rod_dual_mox_fuel.name=MOX Dual Fuel Rod -item.rod_quad_mox_fuel.name=MOX Quad Fuel Rod -item.rod_schrabidium_fuel.name=Schrabidium Fuel Rod -item.rod_dual_schrabidium_fuel.name=Schrabidium Dual Fuel Rod -item.rod_quad_schrabidium_fuel.name=Schrabidium Quad Fuel Rod - -item.rod_water.name=Water Cell -item.rod_dual_water.name=Dual Water Cell -item.rod_quad_water.name=Quad Water Cell - -item.rod_coolant.name=Coolant Cell -item.rod_dual_coolant.name=Dual Coolant Cell -item.rod_quad_coolant.name=Quad Coolant Cell - -item.rod_lithium.name=Lithium Rod -item.rod_dual_lithium.name=Dual Lithium Rod -item.rod_quad_lithium.name=Quad Lithium Rod - -item.rod_tritium.name=Tritium Cell -item.rod_dual_tritium.name=Dual Tritium Cell -item.rod_quad_tritium.name=Quad Tritium Cell - -item.levitation_unit.name=Gravity Manipulator -item.thermo_unit_empty.name=Thermic Distribution Unit -item.thermo_unit_endo.name=Coldness Distribution Unit -item.thermo_unit_exo.name=Heat Distribution Unit - -item.bomb_waffle.name=Waffle of Mass Destruction -item.schnitzel_vegan.name=Vegan Schnitzel -item.apple_schrabidium.name=Schrabidium Apple -item.cotton_candy.name=Radioactive Cotton Candy -item.tem_flakes.name=Tem Flakes -item.glowing_stew.name=Glowing Mushroom Stew -item.lemon.name="Lemon" - -tile.frozen_grass.name=Frozen Grass -tile.frozen_dirt.name=Frozen Dirt -tile.frozen_log.name=Frozen Log -tile.frozen_planks.name=Frozen Planks - -tile.tape_recorder.name=Tape Recorder -tile.steel_poles.name=Steel Pole -tile.pole_top.name=Antenna Top -tile.pole_satellite_receiver.name=Satellite Receiver -tile.steel_wall.name=Steel Wall -tile.steel_corner.name=Steel Wall Corner -tile.steel_roof.name=Flat Steel Roof -tile.steel_beam.name=Steel Beam -tile.steel_scaffold.name=Steel Scaffold - -item.gun_revolver_iron.name=Simple Revolver -item.gun_revolver.name=Enhanced Revolver -item.gun_revolver_gold.name=Golden Revolver -item.gun_revolver_lead.name=Nuka Revolver -item.gun_revolver_schrabidium.name=Schrabidium Revolver -item.gun_revolver_cursed.name=Cursed Revolver -item.gun_revolver_nightmare.name=Nightmare Revolver (Original) -item.gun_revolver_nightmare2.name=Nightmare Revolver (Dark) -item.gun_fatman.name=M42 Nuclear Catapult "Fat Man" -item.gun_mirv.name=M42 Nuclear Catapult "Experimental MIRV" -item.gun_bf.name=M42_2 Nuclear Catapult "Antimatter Launcher" -item.gun_mp40.name=Submachine Gun -item.gun_uboinik.name=Uboinik -item.gun_xvl1456.name=XVL1456 Tau Cannon Prototype -item.gun_osipr.name=Overwatch Standard Issue Pulse Rifle -item.gun_immolator.name=The Immolator -item.gun_cryolator.name=The Cryolator -item.gun_mp.name=Pacifist's Machine Gun -item.gun_zomg.name=Singularity Powered Annihilation Ray "ZOMG Cannon" -item.gun_emp.name=EMP Ray -item.gun_super_shotgun.name=Super Shotgun -item.gun_moist_nugget.name=Mosin-Nagant -item.gun_revolver_inverted.name=Flipped Revolver -item.gun_jack.name=Jackhammer -item.gun_spark.name=Spark Plug -item.gun_hp.name=HPP Lazerjet -item.gun_euthanasia.name=Euthanasia -item.gun_defabricator.name=Defabricator - -item.gun_revolver_iron_ammo.name=Bullet -item.gun_revolver_ammo.name=Lead Bullet -item.gun_revolver_gold_ammo.name=Golden Bullet -item.gun_revolver_lead_ammo.name=Glass Covered Nuclear Bullet -item.gun_revolver_schrabidium_ammo.name=Schrabidium Bullet -item.gun_revolver_cursed_ammo.name=Steel Bullet -item.gun_revolver_nightmare_ammo.name=Nightmare Bullet -item.gun_revolver_nightmare2_ammo.name=Laser Buckshot -item.gun_fatman_ammo.name=Mini Nuke -item.gun_mirv_ammo.name=Eightfold MIRV -item.gun_bf_ammo.name=Mk.V Compact AMAT-Artillery Shell - Type B.F. -item.gun_mp40_ammo.name=Submachine Gun Round -item.gun_uboinik_ammo.name=12x70 Buckshot -item.gun_xvl1456_ammo.name=Depleted Uranium-235 Box -item.gun_osipr_ammo.name=Dark Energy Pulse Plug -item.gun_osipr_ammo2.name=Combine Ball -item.gun_immolator_ammo.name=Immolator Fuel -item.gun_cryolator_ammo.name=Cryo Cell -item.gun_mp_ammo.name=Small Propellantless Machine Gun Round -item.gun_emp_ammo.name=Energy Cell -item.gun_jack_ammo.name=Quadruple Shotgun Shell -item.gun_spark_ammo.name=Electromagnetic Cartridge -item.gun_hp_ammo.name=Ink Cartridge -item.gun_euthanasia_ammo.name=Syringe -item.gun_defabricator_ammo.name=Defabricator Energy Cell - -item.clip_revolver_iron.name=Box of Iron Rounds -item.clip_revolver.name=Box of .357 Rounds -item.clip_revolver_gold.name=Small Coffer of Golden Bullets -item.clip_revolver_schrabidium.name=Schrabidium Ammo Container -item.clip_rpg.name=Rocket Container -item.clip_xvl1456.name=Large Isotope Box -item.clip_osipr.name=AR2 Magazine -item.clip_immolator.name=Tank of Immolator Fuel -item.clip_cryolator.name=Tank of Cryolator Fuel -item.clip_revolver_lead.name=Box of Nuclear Bullets -item.clip_revolver_cursed.name=Britannia Military Standard Issue Pisol Magazine -item.clip_fatman.name=Six Pack of Mini Nukes -item.clip_mirv.name=Three-In-One Pack of Mini MIRVs -item.clip_bf.name=BF-Shell Double Pack -item.clip_mp.name=Britannia Military Standard Issue Assult Rifle Magazine -item.clip_mp40.name=9mm SMG Magazine -item.clip_uboinik.name=Box of Buckshot Rounds -item.clip_emp.name=Small Pack of Energy Cells -item.clip_revolver_nightmare.name=Bag of Bullets -item.clip_revolver_nightmare2.name=Belt with Laser Buckshot - -tile.block_schrabidium.name=Block of Schrabidium -item.plate_gold.name=Gold Plate - -item.syringe_empty.name=Empty Syringe -item.syringe_antidote.name=Antidote -item.syringe_poison.name=Poisonous Injection -item.syringe_awesome.name=AWESOME -item.syringe_metal_empty.name=Metal Syringe -item.syringe_metal_stimpak.name=Stimpak -item.syringe_metal_medx.name=Med-X -item.syringe_metal_psycho.name=Psycho -item.pill_iodine.name=Iodine Pill -item.plan_c.name=Plan C - -item.stealth_boy.name=Stealth Device - -entity.hbm.entity_bullet.name=Bullet -entity.hbm.entity_rocket.name=Rocket -entity.hbm.entity_schrabnel.name=Schrabnel -entity.entity_mob_nuclear_creeper.name=Nuclear Creeper -entity.entity_mob_hunter_chopper.name=Hunter ChopperCreeper -entity.entity_cyber_crab.name=Cyber Crab - -item.cap_aluminium.name=Aluminium Cap -item.hull_small_steel.name=Small Steel Shell -item.hull_small_aluminium.name=Small Aluminium Shell -item.hull_big_steel.name=Big Steel Shell -item.hull_big_aluminium.name=Big Aluminium Shell -item.hull_big_titanium.name=Big Titanium Shell -item.fins_flat.name=Flat Steel Casing -item.fins_small_steel.name=Small Steel Grid Fins -item.fins_big_steel.name=Big Steel Grid Fins -item.fins_tri_steel.name=Large Steel Fins -item.fins_quad_titanium.name=Small Titanium Fins -item.sphere_steel.name=Steel Sphere -item.pedestal_steel.name=Steel Pedestal -item.dysfunctional_reactor.name=Dysfunctional Nuclear Reactor - -item.rotor_steel.name=Large Steel Rotor -item.generator_steel.name=Generator Body -item.blade_titanium.name=Titanium Blade -item.turbine_titanium.name=Titanium Steam Turbine -item.generator_front.name=Generator Front - -item.combine_scrap.name=CMB Scrap Metal -item.chopper_head.name=Hunter Chopper Cockpit -item.chopper_gun.name=Emplacement Gun -item.chopper_torso.name=Hunter Chopper Body -item.chopper_tail.name=Hunter Chopper Tail -item.chopper_wing.name=Hunter Chopper Wing -item.chopper_blades.name=Hunter Chopper Rotor Blades - -item.igniter.name=Igniter -item.watch.name=Broken Pocket Watch -item.apple_astatine.name=Euphemium Apple -item.ingot_astatine.name=Euphemium Ingot -item.nugget_astatine.name=Euphemium Nugget -item.rod_quad_astatine.name=Burned Out Quad Schrabidium Fuel Rod - -item.astatine_helmet.name=Euphemium Helemt -item.astatine_plate.name=Euphemium Chestplate -item.astatine_legs.name=Euphemium Leggings -item.astatine_boots.name=Euphemiums Boots - -item.schrabidium_helmet.name=Schrabidium Helmet -item.schrabidium_plate.name=Schrabidium Chestpate -item.schrabidium_legs.name=Schrabidium Leggings -item.schrabidium_boots.name=Schrabidium Boots -item.schrabidium_sword.name=Schrabidium Sword -item.schrabidium_pickaxe.name=Schrabidium Pickaxe -item.schrabidium_axe.name=Schrabidium Axe -item.schrabidium_shovel.name=Schrabidium Shovel -item.schrabidium_hoe.name=Schrabidium Hoe - -item.chainsaw.name=Chainsaw -item.crowbar.name=Mk.V Crate Opening Device "Crowbar" - -item.mask_of_infamy.name=Mask of Infamy - -tile.det_cord.name=Det Cord -tile.det_charge.name=Explosive Charge -tile.red_barrel.name=Explosive Barrel -tile.yellow_barrel.name=Radioactive Barrel - -item.designator.name=Short Range Target Designator -item.designator_range.name=Long Range Target Designator -item.missile_generic.name=High Explosive Missile -item.missile_anti_ballistic.name=Anti Ballistic Missile (WIP) -item.missile_incendiary.name=Incendiary Missile -item.missile_cluster.name=Cluster Missile -item.missile_buster.name=Bunker Buster -item.missile_strong.name=Strong HE Missile -item.missile_incendiary_strong.name=Strong Incendiary Missile -item.missile_cluster_strong.name=Strong Cluster Missile -item.missile_buster_strong.name=Enhanced Bunker Buster -item.missile_burst.name=Spare Missile -item.missile_inferno.name=Inferno Missile G.R.N. Mk.II -item.missile_rain.name=Bomblet Rain -item.missile_drill.name=The Concrete Cracker -item.missile_nuclear.name=Nuclear Missile -item.missile_nuclear_cluster.name=Nuclear MIRV Missile -item.missile_endo.name=Endothermic Missile -item.missile_exo.name=Exothermic Missile - -item.hazmat_helmet.name=Hazmat Helmet -item.hazmat_plate.name=Hazmat Chestplate -item.hazmat_legs.name=Hazmat Leggings -item.hazmat_boots.name=Hazmat Boots -item.hazmat_paa_helmet.name=PaA Battle Hazmat Suit Helmet -item.hazmat_paa_plate.name=PaA Battle Hazmat Suit Chestplate -item.hazmat_paa_legs.name=PaA Battle Hazmat Suit Leggings -item.hazmat_paa_boots.name=PaA Battle Hazmat Suit Boots -item.asbestos_helmet.name=Fire Proximity Helmet -item.asbestos_plate.name=Fire Proximity Chestplate -item.asbestos_legs.name=Fire Proximity Leggings -item.asbestos_boots.name=Fire Proximity Boots - -item.paa_plate.name=PaA Chest Protection Plate -item.paa_legs.name=PaA Leg Reinforcements -item.paa_boots.name=PaA "good ol' shoes" - -item.goggles.name=Protection Goggles -item.gas_mask.name=Gas Mask -item.oxy_mask.name=Oxygen Mask -item.t45_helmet.name=T45 Power Armor Helmet -item.t45_plate.name=T45 Power Armor Chestplate -item.t45_legs.name=T45 Power Armor Leggings -item.t45_boots.name=T45 Power Armor Boots - -tile.mush.name=Glowing Mushroom -tile.waste_mycelium.name=Glowing Mycelium - -item.warhead_generic_small.name=Small Warhead -item.warhead_generic_medium.name=Medium Warhead -item.warhead_generic_large.name=Large Warhead -item.warhead_incendiary_small.name=Small Incendiary Warhead -item.warhead_incendiary_medium.name=Medium Incendiary Warhead -item.warhead_incendiary_large.name=Large Incendiary Warhead -item.warhead_cluster_small.name=Small Cluster Warhead -item.warhead_cluster_medium.name=Medium Cluster Warhead -item.warhead_cluster_large.name=Large Cluster Warhead -item.warhead_buster_small.name=Small Bunker Buster Warhead -item.warhead_buster_medium.name=Medium Bunker Buster Warhead -item.warhead_buster_large.name=Large Bunker Buster Warhead -item.warhead_nuclear.name=Nuclear Warhead -item.warhead_mirvlet.name=MIRV -item.warhead_mirv.name=Eightfold MIRV Warhead -item.warhead_thermo_endo.name=Endothermic Warhead -item.warhead_thermo_exo.name=Exothermic Warhead -item.fuel_tank_small.name=Small Fuel Tank -item.fuel_tank_medium.name=Medium Fuel Tank -item.fuel_tank_large.name=Large Fuel Tank -item.thruster_small.name=Small Thruster -item.thruster_medium.name=Medium Thruster -item.thruster_large.name=Large Thruster - -item.wand_k.name=Construction Wand -item.wand_s.name=Structure Wand -item.wand_d.name=Debug Wand - -item.screwdriver.name=Screwdriver -item.overfuse.name=Singularity Screwdriver - -item.steel_helmet.name=Steel Helmet -item.steel_plate.name=Steel Chestplate -item.steel_legs.name=Steel Leggings -item.steel_boots.name=Steel Boots -item.titanium_helmet.name=Titanium Helmet -item.titanium_plate.name=Titanium Chestplate -item.titanium_legs.name=Titanium Leggings -item.titanium_boots.name=Titanium Boots -item.alloy_helmet.name=Advanced Alloy Helmet -item.alloy_plate.name=Advanced Alloy Chestplate -item.alloy_legs.name=Advanced Alloy Leggings -item.alloy_boots.name=Advanced Alloy Boots -item.cmb_helmet.name=CMB Steel Helmet -item.cmb_plate.name=CMB Steel Chestplate -item.cmb_legs.name=CMB Steel Leggings -item.cmb_boots.name=CMB Steel Boots - -item.steel_sword.name=Steel Sword -item.steel_pickaxe.name=Steel Pickaxe -item.steel_axe.name=Steel Axe -item.steel_shovel.name=Steel Shovel -item.steel_hoe.name=Steel Hoe -item.titanium_sword.name=Titanium Sword -item.titanium_pickaxe.name=Titanium Pickaxe -item.titanium_axe.name=Titanium Axe -item.titanium_shovel.name=Titanium Shovel -item.titanium_hoe.name=Titanium Hoe -item.alloy_sword.name=Advanced Alloy Sword -item.alloy_pickaxe.name=Advanced Alloy Pickaxe -item.alloy_axe.name=Advanced Alloy Axe -item.alloy_shovel.name=Advanced Alloy Shovel -item.alloy_hoe.name=Advanced Alloy Hoe -item.cmb_sword.name=CMB Steel Sword -item.cmb_pickaxe.name=CMB Steel Pickaxe -item.cmb_axe.name=CMB Steel Axe -item.cmb_shovel.name=CMB Steel Shovel -item.cmb_hoe.name=CMB Steel Hoe -item.elec_sword.name=Stunstick -item.elec_pickaxe.name=Impact Drill -item.elec_axe.name=Electric Chainsaw -item.elec_shovel.name=Spiral Drill - -tile.red_cable.name=Red Copper Cable -tile.block_meteor.name=Meteor Block - -item.cape_radiation.name=Cape (Radiation) -item.cape_gasmask.name=Cape (Gas Mask) -item.cape_schrabidium.name=Cape (Schrabidic) -item.cape_hbm.name=Hbm's Cape -item.cape_dafnik.name=Dafnik's Cape -item.cape_lpkukin.name=LPkukin's Cape -item.cape_vertice.name=Lord Vertice's Cape - -tile.machine_converter_he_rf.name=HE to RF Converter -tile.machine_converter_rf_he.name=RF to HE Converter - -item.schrabidium_hammer.name=Schrabidium Hammer -item.euphemium_stopper.name=Stopper -item.matchstick.name=Matchstick -item.remote.name=Broken Remote - -item.redcoil_capacitor.name=Redcoil Capacitor -item.detonator.name=Detonator -item.crate_caller.name=Supply Drop Requester - -item.ingot_hes.name=Highly Enriched Schrabidium Fuel Ingot -item.ingot_les.name=Low Enriched Schrabidium Fuel Ingot -item.nugget_hes.name=Highly Enriched Schrabidium Fuel Nugget -item.nugget_les.name=Low Enriched Schrabidium Fuel Nugget - -item.pellet_schrabidium.name=Pure Schrabidium Watz Pellet -item.pellet_hes.name=HES Watz Pellet -item.pellet_mes.name=MES Watz Pellet -item.pellet_les.name=LES Watz Pellet -item.pellet_beryllium.name=Beryllium Moderator Pellet -item.pellet_neptunium.name=Neptunium Watz Pellet -item.pellet_lead.name=Lead Reflector Pellet -item.pellet_advanced.name=Advanced Watz Performance Improver - -item.titanium_filter.name=Titanium Filter - -tile.mud_block.name=Poisonous Mud -fluid.mud_fluid=Poisonous Mud -item.bucket_mud.name=Bucket of Poisonous Mud -tile.acid_block.name=Acid -fluid.acid_fluid=Acid -item.bucket_acid.name=Bucket of Acid -tile.toxic_block.name=Stereotypical Green Ooze -fluid.toxic_fluid=Stereotypical Green Ooze -item.bucket_toxic.name=Bucket of Stereotypical Green Ooze -item.tank_waste_0.name=Mud Container -item.tank_waste_1.name=Mud Container -item.tank_waste_2.name=Mud Container -item.tank_waste_3.name=Mud Container -item.tank_waste_4.name=Mud Container -item.tank_waste_5.name=Mud Container -item.tank_waste_6.name=Mud Container -item.tank_waste_7.name=Mud Container -item.tank_waste_8.name=Mud Container - -item.can_empty.name=Empty Can -item.can_smart.name='Smart' Energy Drink -item.can_creature.name='Creature' Energy Drink -item.can_redbomb.name='Red Bomb' Energy Drink -item.can_mrsugar.name='Dr. Sugar' Soft Drink -item.can_overcharge.name=Overcharge Delirium XT -item.bottle_empty.name=Empty Bomb-Shaped Bottle -item.bottle_nuka.name=Bottle of Nuka Cola -item.bottle_cherry.name=Bottle of Nuka Cherry -item.bottle_quantum.name=Bottle of Nuka Cola Quantum -item.bottle2_empty.name=Empty Bottle -item.bottle2_korl.name=Korl -item.bottle2_fritz.name=Fritz Cola -item.bottle2_korl_special.name=The First Korl -item.bottle2_fritz_special.name=The First Fritz Cola -item.chocolate_milk.name=Chocolate Milk -item.cap_nuka.name=Nuka Cola Bottle Cap -item.cap_quantum.name=Nuka Cola Quantum Bottle Cap -item.cap_korl.name=Korl Bottle Cap -item.cap_fritz.name=Fritz Cola Bottle Cap -item.ring_pull.name=Ring Pull - -item.bottle_opener.name=Hbm's Own Self-Made Bottle Opener - -item.blades_aluminium.name=Aluminium Shredder Blades -item.blades_gold.name=Golden Shredder Blades -item.blades_iron.name=Iron Shredder Blades -item.blades_steel.name=Steel Shredder Blades -item.blades_titanium.name=Titanium Shredder Blades -item.blades_advanced_alloy.name=Advanced Shredder Blades -item.blades_combine_steel.name=CMB Shredder Blades -item.blades_schrabidium.name=Schrabidium Shredder Blades - -item.part_lithium.name=Box of Lithium Dust -item.part_beryllium.name=Box of Beryllium Dust -item.part_carbon.name=Box of Carbon Dust -item.part_copper.name=Box of Copper Dust -item.part_plutonium.name=Box of Plutonium Dust - -item.crystal_energy.name=Energy Crystal -item.pellet_coolant.name=Coolant Cluster - -item.linker.name=Telelinker -item.oil_detector.name=Oil Reservoir Detector - -item.thermo_element.name=Thermoelectric Element -item.limiter.name=Generator Limiter - -item.multitool_dig.name=Power Fist (Digging Claw) -item.multitool_silk.name=Power Fist (Silk Touch Claw) -item.multitool_ext.name=Power Fist (Ore Extracter) -item.multitool_miner.name=Power Fist (Extracting Mining Laser) -item.multitool_hit.name=Power Fist (Fist) -item.multitool_beam.name=Power Fist (Zapper) -item.multitool_sky.name=Power Fist (Crack the Sky) -item.multitool_mega.name=Power Fist (Super Punch) -item.multitool_joule.name=Power Fist (Giga Joule) -item.multitool_decon.name=Power Fist (Decontaminator) - -item.australium_iii.name=Mark III Life Extender -item.australium_iv.name=Mark IV Life Extender -item.australium_v.name=Mark V Life Extender - -item.weapon_saw.name=Doctor Assisted Homicide -item.weapon_bat.name=Richard's Default -item.weapon_bat_nail.name=The Cliché -item.weapon_golf_club.name=Russian Mobster's Club -item.weapon_pipe_rusty.name=The Attitude Adjuster -item.weapon_pipe_lead.name=The Manual Override -item.reer_graar.name=The Reer Graar - -item.letter.name=Express Mail -item.polaroid.name=The Polaroid -item.book_secret.name=3-596-50802-9 - -item.crystal_horn.name=Crystal Horn -item.crystal_charred.name=Charred Crystal -item.ingot_lanthanium.name=Semi-Stable Lanthanium Ingot -item.ingot_actinium.name=Semi-Stable Actinium Ingot - -tile.dummy_block.name=Dummy Block -tile.dummy_port.name=Dummy Block (Electricity Port) - -item.chopper.name=Hunter Chopper - -item.nothing.name=Nothing - -tile.crystal_virus.name=Dark Crystal -tile.crystal_hardened.name=Hardened Dark Crystal -tile.crystal_pulsar.name=Pulsating Crystal - -tile.cheater_virus.name=Gelid Euphemium -tile.cheater_virus_seed.name=Unstable Euphemium Schrabide Block \ No newline at end of file diff --git a/src/main/resources/assets/hbm/lang/zh_CN.lang b/src/main/resources/assets/hbm/lang/zh_CN.lang index b4a3684d7..efec2c9d8 100644 --- a/src/main/resources/assets/hbm/lang/zh_CN.lang +++ b/src/main/resources/assets/hbm/lang/zh_CN.lang @@ -12,7 +12,7 @@ achievement.blastFurnace.desc=他们为制造探险者1å·åŽ»æ‰“æžäº†ä¸€è‰˜æ²‰ achievement.blastFurnace=ç…¤å’Œé“ achievement.bossCreeper.desc=核爆爬行者? 那是个什么玩æ„?! achievement.bossCreeper=å››æ¡è…¿çš„行走核弹 -achievement.bossMaskman.desc=大男孩邦克 +achievement.bossMaskman.desc=淦飞那个大男孩 achievement.bossMaskman=6个月的强制æœåŠ¡ï¼Œæˆ‘åªå¾—到一件糟糕的Tæ¤ achievement.bossMeltdown.desc=æ¯”ä¼Ÿå¤§æ›´å¯æ€•,但我会竭尽所能 achievement.bossMeltdown=3.6ä¼¦ç´ @@ -33,7 +33,7 @@ achievement.chemplant=这家工厂正在æˆé•¿ Pt.2 achievement.chicagoPile.desc=“当地人怎么样?†/ “éžå¸¸å‹å¥½ã€‚†achievement.chicagoPile=领航员在新大陆ç€é™† achievement.concrete.desc=布尔什维克的最爱。 -achievement.concrete=è€å½“益壮 +achievement.concrete=å¯é çš„è€ä¼™è®¡ achievement.desh.desc=“æ¥å§ï¼Œä½ ä»¬è¿™ç¾¤äººã€‚有地方å¯åŽ»ï¼â€ achievement.desh=å‹’å¨è€¶ achievement.digammaFeel.desc=我的眼ç›åœ¨æµè¡€ @@ -56,7 +56,7 @@ achievement.fusion.desc=æ°˜æ ¸ã€æ°šæ ¸ä¸Žèƒ½é‡çš„舞蹈。 achievement.fusion=èšåˆ achievement.gasCent.desc=æœªæµ“ç¼©é“€è®¨åŽŒä»–ï¼ achievement.gasCent=é½ä½©å¼ç¦»å¿ƒ -achievement.goFish.desc=航海åå­—æž¶ +achievement.goFish.desc=把鱼钉在å字架上 achievement.goFish=去钓鱼 achievement.hidden.desc=使用一节å è½çš„è½¦åŽ¢æ€æ­»ä¸€åªæ±¡æŸ“苦力怕 achievement.hidden=éšè—目录 @@ -173,6 +173,7 @@ armorMod.boots=é´å­ armorMod.chestplates=胸甲 armorMod.helmets=头盔 armorMod.insertHere=æ’入装甲以改装。。。 +armorMod.type.battery=电池 armorMod.leggings=护腿 armorMod.type.boots=é´å­ armorMod.type.chestplate=胸甲 @@ -857,6 +858,9 @@ container.vacuumDistill=真空炼油厂 container.wasteDrum=ä¹ç‡ƒæ–™æ±  container.watzPowerplant=Watzå‘电厂 container.zirnox=锆诺克斯核å应堆 +container.machineAmmoPress=压弹机 +container.machineRotaryFurnace=回转炉 +container.machinePyroOven=热解炉 crucible.aa=高级åˆé‡‘生产 crucible.abronze=ç ·é’铜生产 @@ -876,6 +880,17 @@ crucible.steelPig=生é“炼钢 crucible.steelWrought=é”»é“炼钢 crucible.tcalloy=é”é’¢åˆé‡‘生产 +damage.inset=æˆå¥—装备时的获得的伤害å‡å…: +damage.item=装备时获得的伤害å‡å…: +damage.category.EXPL=爆炸 +damage.category.FIRE=ç«ç„° +damage.category.PROJ=投射物 +damage.exact.drown=溺水 +damage.exact.fall=æ‘”è½ +damage.exact.LASER=激光 +damage.exact.onFire=Afterburn +damage.other=å…¶ä»– + death.attack.acid=%1$s 掉进了酸里 death.attack.acidPlayer=%1$s 被 %2$s 溶解 death.attack.ams=%1$s æ²æµ´åœ¨å°šæœªè¢«äººç±»ç§‘学命å的致命粒å­ä¸­ @@ -933,6 +948,22 @@ death.attack.taint=%1$s æ­»äºŽæ¶æ€§è‚¿ç˜¤ death.attack.tau=%1$s 被 %2$s 用带负电è·çš„é™¶å­å°„ç©¿ death.attack.tauBlast=%1$s 对XVL1456充能时间过长,被炸æˆç¢Žç‰‡ death.attack.teleporter=%1$s 被传é€åˆ°è™šç©º +death.sedna.electric=%1$s 被电æˆç„¦ç‚­äº† +death.sedna.electric.attacker=%1$s 被 %2$s 电æˆç„¦ç‚­äº† +death.sedna.explosive=%1$s 被炸飞了 +death.sedna.explosive.attacker=%1$s 被 %2$s 炸飞了 +death.sedna.fire=%1$s 被é€åˆ°äººç”Ÿç»ˆç‚¹ç«™äº† +death.sedna.fire.attacker=%1$s 被 %2$s é€åˆ°äººç”Ÿç»ˆç‚¹ç«™äº† +death.sedna.laser=%1$s 被激光烧æˆäº†ç°çƒ¬ +death.sedna.laser.attacker=%1$s 被 %2$s 用激光烧æˆäº†ç°çƒ¬ +death.sedna.microwave=%1$s å˜æˆäº†é¸¡è›‹åœ¨å¾®æ³¢ç‚‰é‡Œé¢çš„æ ·å­ +death.sedna.microwave.attacker=%1$s 被 %2$s å˜æˆäº†é¸¡è›‹åœ¨å¾®æ³¢ç‚‰é‡Œé¢çš„æ ·å­ +death.sedna.subatomic=%1$s 被分解æˆåŸºæœ¬å¾®ç²’ +death.sedna.subatomic.attacker=%1$s 被 %2$s 分解æˆåŸºæœ¬å¾®ç²’ +death.sedna.other=%1$s è¢«æ€æ­»äº† +death.sedna.other.attacker=%1$s 被 %2$s æ€æ­»äº† +death.sedna.physical=%1$s被射æ€äº† +death.sedna.physical.attacker=%1$s 被 %2$s å°„æ€äº† desc.gui.assembler.warning=§c错误:§r此机器需è¦è£…é…æœºæ¨¡æ¿ï¼ desc.gui.chemplant.warning=§c错误:§r此机器需è¦åŒ–工厂模æ¿ï¼ @@ -1013,7 +1044,7 @@ desc.item.ammo.neu_no_bounce=* 没有弹性 desc.item.ammo.neu_no_con=* 没有缺点 desc.item.ammo.neu_starmetal=* 星辉金属 desc.item.ammo.neu_tracer=* 示踪剂 -desc.item.ammo.neu_uhh=* Uhhh +desc.item.ammo.neu_uhh=*呃..... desc.item.ammo.neu_warcrime1=* 从技术上æ¥è®²è§¦çŠ¯äº†æˆ˜äº‰ç½ª desc.item.ammo.neu_warcrime2=* 一å‘è§¦çŠ¯ä¸¤æ¡æˆ˜äº‰ç½ªï¼ desc.item.ammo.pro_accurate1=+ æå‡ç²¾åº¦ @@ -1025,7 +1056,7 @@ desc.item.ammo.pro_chainsaw=+ 电锯 desc.item.ammo.pro_chlorine=+ 氯气 desc.item.ammo.pro_damage=+ æå‡ä¼¤å®³ desc.item.ammo.pro_damage_slight=+ 高于平å‡ä¼¤å®³ -desc.item.ammo.pro_emp=+ EMP +desc.item.ammo.pro_emp=+ 电ç£è„‰å†² desc.item.ammo.pro_explosive=+ 爆炸 desc.item.ammo.pro_fallout=+ è¾å°„å°˜ desc.item.ammo.pro_fit_357=+ 适用于所有.357枪械 @@ -1501,6 +1532,9 @@ hbmfluid.woodoil=木油 hbmfluid.xenon=氙气 hbmfluid.xpjuice=ç»éªŒæ± hbmfluid.xylene=轻质芳烃(BTX) +hbmfluid.lead=æ¶²æ€é“… +hbmfluid.lead_hot=高温液æ€é“… + hbmpseudofluid.none=空 hbmpseudofluid.heuf6=高浓缩六氟化铀 @@ -1619,6 +1653,11 @@ hbmmat.whitephosphorus=白磷 hbmmat.workersalloy=Desh hbmmat.wroughtiron=é”»é“ hbmmat.zirconium=锆 +hbmmat.bone=象牙 +hbmmat.gunmetal=炮铜 +hbmmat.weaponsteel=武器级钢 +hbmmat.polycarbonate=硬塑料 +hbmmat.pvc=PVC matshape.block=%s å— matshape.blocks=%s å— @@ -1861,6 +1900,90 @@ item.ammo_stinger_rocket_he.name=毒刺导弹[高爆] item.ammo_stinger_rocket_incendiary.name=毒刺导弹[燃烧] item.ammo_stinger_rocket_nuclear.name=毒刺导弹[Привет] item.ammo_stinger_rocket_bones.name=毒刺导弹[寻骨] +item.ammo_secret.bmg50_equestrian.name=.50BMGå­å¼¹[ç ´å者] +item.ammo_secret.folly_nuke.name=é“¶å¼¹[æ ¸å­] +item.ammo_secret.folly_sm.name=é“¶å¼¹ +item.ammo_secret.g12_equestrian.name=12å·é¹¿å¼¹[é“è·¯é“é’‰] +item.ammo_secret.m44_equestrian.name=.44马格å—[爆头器] +item.ammo_standard.b75.name=.75“螺栓†+item.ammo_standard.b75_exp.name=.75“螺栓â€(高爆) +item.ammo_standard.b75_inc.name=.75“螺栓â€(燃烧) +item.ammo_standard.bmg50_ap.name=.50BMGå­å¼¹(穿甲弹) +item.ammo_standard.bmg50_du.name=.50BMGå­å¼¹(贫铀弹) +item.ammo_standard.bmg50_fmj.name=.50BMGå­å¼¹(金属被甲弹) +item.ammo_standard.bmg50_jhp.name=.50BMGå­å¼¹(被甲空尖弹) +item.ammo_standard.bmg50_sp.name=.50BMGå­å¼¹(普通弹) +item.ammo_standard.capacitor.name=电容器 +item.ammo_standard.capacitor_ir.name=电容器(低波长) +item.ammo_standard.capacitor_overcharge.name=电容器(过载) +item.ammo_standard.coil_ferrouranium.name=é“€é“åˆé‡‘制线圈枪å­å¼¹ +item.ammo_standard.coil_tungsten.name=钨制线圈枪å­å¼¹ +item.ammo_standard.flame_balefire.name=野ç«ç‡ƒæ–™ç½ +item.ammo_standard.flame_diesel.name=æŸ´æ²¹ç½ +item.ammo_standard.flame_gas.name=å¤©ç„¶æ°”ç½ +item.ammo_standard.flame_napalm.name=å‡å›ºæ±½æ²¹ç½ +item.ammo_standard.g12.name=12å·é¹¿å¼¹ +item.ammo_standard.g12_anthrax.name=12å·ç‚­ç–½å¼¹ +item.ammo_standard.g12_bp.name=12å·é»‘ç«è¯é¹¿å¼¹ +item.ammo_standard.g12_bp_magnum.name=12å·é»‘ç«è¯é©¬æ ¼å—鹿弹 +item.ammo_standard.g12_bp_slug.name=12å·é»‘ç«è¯ç‹¬å¤´å¼¹ +item.ammo_standard.g12_explosive.name=12å·çˆ†ç‚¸ç‹¬å¤´å¼¹ +item.ammo_standard.g12_flechette.name=12å·ç®­å½¢å¼¹ +item.ammo_standard.g12_magnum.name=12å·é©¬æ ¼å—鹿弹 +item.ammo_standard.g12_phosphorus.name=12å·ç™½ç£·é¹¿å¼¹ +item.ammo_standard.g12_slug.name=12å·ç‹¬å¤´å¼¹ +item.ammo_standard.g26_flare.name=26mmä¿¡å·å¼¹ +item.ammo_standard.g26_flare_supply.name=26mmä¿¡å·å¼¹(支æ´ç©ºæŠ•) +item.ammo_standard.g26_flare_weapon.name=26mmä¿¡å·å¼¹(武器空投) +item.ammo_standard.g40_demo.name=40mmç ´å者榴弹 +item.ammo_standard.g40_he.name=40mm高爆榴弹 +item.ammo_standard.g40_heat.name=40mmèšèƒ½è£…è¯æ¦´å¼¹ +item.ammo_standard.g40_inc.name=40mm燃烧榴弹 +item.ammo_standard.g40_phosphorus.name=40mm白磷榴弹 +item.ammo_standard.m357_ap.name=.357马格å—å­å¼¹(穿甲弹) +item.ammo_standard.m357_bp.name=.357马格å—å­å¼¹(黑ç«è¯è£…è¯) +item.ammo_standard.m357_express.name=.357马格å—å­å¼¹(é¢å¤–装è¯FMJ) +item.ammo_standard.m357_fmj.name=.357马格å—å­å¼¹(全金属被甲弹) +item.ammo_standard.m357_jhp.name=.357马格å—å­å¼¹(被甲空尖弹) +item.ammo_standard.m357_sp.name=.357马格å—å­å¼¹(普通弹) +item.ammo_standard.m44_ap.name=.44马格å—å­å¼¹(穿甲弹) +item.ammo_standard.m44_bp.name=.44马格å—å­å¼¹(黑ç«è¯è£…è¯) +item.ammo_standard.m44_express.name=.44马格å—å­å¼¹(é¢å¤–装è¯FMJ) +item.ammo_standard.m44_fmj.name=.44马格å—å­å¼¹(全金属被甲弹) +item.ammo_standard.m44_jhp.name=.44马格å—å­å¼¹(被甲空尖弹) +item.ammo_standard.m44_sp.name=.44马格å—å­å¼¹(普通弹) +item.ammo_standard.nuke_demo.name=迷你核弹(ç ´åæ–¹å—) +item.ammo_standard.nuke_high.name=迷你核弹(高装è¯) +item.ammo_standard.nuke_hive.name=ç«ç®­å·¢ +item.ammo_standard.nuke_standard.name=迷你核弹 +item.ammo_standard.nuke_tots.name=迷你核弹(幼体) +item.ammo_standard.p22_ap.name=.22LRå­å¼¹(穿甲弹) +item.ammo_standard.p22_fmj.name=.22LRå­å¼¹(全金属被甲弹) +item.ammo_standard.p22_jhp.name=.22LRå­å¼¹(被甲空尖弹) +item.ammo_standard.p22_sp.name=.22LRå­å¼¹(普通弹) +item.ammo_standard.p9_ap.name=9mmå­å¼¹(穿甲弹) +item.ammo_standard.p9_fmj.name=9mmå­å¼¹(全金属被甲弹) +item.ammo_standard.p9_jhp.name=9mmå­å¼¹(被甲空尖弹) +item.ammo_standard.p9_sp.name=.9mmå­å¼¹(普通弹) +item.ammo_standard.r556_ap.name=5.56mmå­å¼¹(穿甲弹) +item.ammo_standard.r556_fmj.name=5.56mmå­å¼¹(全金属被甲弹) +item.ammo_standard.r556_jhp.name=5.56mmå­å¼¹(被甲空尖弹) +item.ammo_standard.r556_sp.name=5.56mmå­å¼¹(普通弹) +item.ammo_standard.r762_ap.name=7.62mmå­å¼¹(穿甲弹) +item.ammo_standard.r762_du.name=7.62mmå­å¼¹(贫铀弹) +item.ammo_standard.r762_fmj.name=7.62mmå­å¼¹(全金属被甲弹) +item.ammo_standard.r762_jhp.name=7.62mmå­å¼¹(被甲空尖弹) +item.ammo_standard.r762_sp.name=7.62mmå­å¼¹(普通弹) +item.ammo_standard.rocket_demo.name=ç ´å者ç«ç®­å¼¹ +item.ammo_standard.rocket_he.name=高爆ç«ç®­å¼¹ +item.ammo_standard.rocket_heat.name=èšèƒ½è£…è¯ç«ç®­å¼¹ +item.ammo_standard.rocket_inc.name=燃烧ç«ç®­å¼¹ +item.ammo_standard.rocket_phosphorus.name=白磷ç«ç®­å¼¹ +item.ammo_standard.stone.name=圆石和黑ç«è¯ +item.ammo_standard.stone_ap.name=燧石和黑ç«è¯ +item.ammo_standard.stone_iron.name=é“çƒå’Œé»‘ç«è¯ +item.ammo_standard.stone_shot.name=霰弹和黑ç«è¯ +item.ammo_standard.tau_uranium.name=贫化铀235å­å¼¹ item.ams_catalyst_aluminium.name=é“å应催化剂 item.ams_catalyst_beryllium.name=é“å应催化剂 item.ams_catalyst_blank.name=空白å应催化剂 @@ -1908,6 +2031,9 @@ item.arc_electrode_burnt.lanthanium.name=ç†”åŒ–é•§ç”µæž item.arc_electrode_burnt.saturnite.name=ç†”åŒ–åœŸæ˜Ÿç”µæž item.arc_electrode_desh.name=Deshç”µæž item.armor_polish.name=亮甲牌装甲抛光剂 +item.armor_battery=动力装甲电池组 +item.armor_battery_mk2=动力装甲电池组 Mk2 +item.armor_battery_mk3=动力装甲电池组 Mk3 item.asbestos_boots.name=防ç«é´ item.asbestos_cloth.name=防ç«å¸ƒ item.asbestos_helmet.name=防ç«å¤´ç›” @@ -2126,8 +2252,6 @@ item.bobmazon_tools.name=Bobmazon: 工具 item.bobmazon_weapons.name=Bobmazon: 武器和爆炸物 item.boltntm.name=%s螺栓 item.bolt_compound.name=加强涡轮机轴 -item.bolt_dura_steel.name=高速钢螺栓 -item.bolt_tungsten.name=钨螺栓 item.bolt_spike.name=é“è·¯é“é’‰ item.bolt_spike.desc=ä¸çŸ¥ä½•故,散å‘ç€å¨èƒçš„æ°”æ¯ item.boltgun.name=气动射钉枪 @@ -2169,7 +2293,7 @@ item.bucket_toxic.name=一桶绿色软泥 item.burnt_bark.name=烧焦树皮 item.burnt_bark.desc=爆炸的金橡树的树皮。 item.can_bepis.name=白事 -item.can_breen.name=布雷æ©åšå£«çš„ç§äººçè— +item.can_breen.name=布林åšå£«çš„ç§äººçè— item.can_creature.name='生物'能é‡é¥®æ–™ item.can_empty.name=ç©ºç½ item.can_key.name=ç½å¤´æ‹‰çޝ @@ -2874,7 +2998,38 @@ item.gun_euthanasia_ammo.name=注射器 item.gun_fatman.name=M42核弹å‘射器 "胖å­" item.gun_fatman_ammo.name=迷你核弹 item.gun_fireext.name=ç­ç«å™¨ -item.gun_flamer.name="黄玉先生"喷射器 +item.gun_flamer.name=ç«ç„°å–·å°„器 +item.gun_flamer_daybreaker.name=破晓之时 +item.gun_flamer_topaz.name="黄玉先生"喷射器 +item.gun_flaregun.name=ä¿¡å·æžª +item.gun_g3.name=çªå‡»æ­¥æžª +item.gun_greasegun.name=M3黄油枪 +item.gun_hangman.name=åˆ½å­æ‰‹ +item.gun_heavy_revolver.name=é‡åž‹è½¬è½®æ‰‹æžª +item.gun_heavy_revolver_lilmac.name=å°éº¦é‡‘å¡” +item.gun_henry.name=æ æ†å¼æ­¥æžª +item.gun_lag.name=滑稽的长手枪 +item.gun_lasrifle.name=激光步枪 +item.gun_liberator.name=救星 +item.gun_light_revolver.name=中折å¼è½¬è½®æ‰‹æžª +item.gun_light_revolver_atlas.name=Atlas +item.gun_light_revolver_dani.name=日与夜 +item.gun_maresleg.name=æ æ†å¼éœ°å¼¹æžª +item.gun_maresleg_akimbo.name=åŒæŒæ æ†å¼éœ°å¼¹æžª +item.gun_maresleg_broken.name=支离破碎 +item.gun_minigun_lacunae.name=空白 +item.gun_missile_launcher.name=导弹å‘射器 +item.gun_pepperbox.name=胡椒瓶手枪 +item.gun_spas12.name=SPAS-12 +item.gun_stg77.name=StG 77 +item.gun_tau.name=Ï„å­ç‚® +item.gun_tesla_cannon.name=特斯拉炮 +item.gun_uzi.name=乌兹冲锋枪 +item.gun_uzi_akimbo.name=åŒæŒä¹Œå…¹å†²é”‹æžª +item.gun_am180.name=消音冲锋枪 +item.gun_autoshotgun.name=自动霰弹枪 +item.gun_autoshotgun_sexy.name=Sexy +item.gun_carbine.name=å¡å®¾æžª item.gun_flechette.name=弗莱彻çªå‡»æ­¥æžª item.gun_folly.name=Digamma原型"愚蠢" item.gun_glass_cannon.name=玻璃大炮 @@ -3675,8 +3830,8 @@ item.pellet_meteorite.name=陨石弹丸 item.pellet_neptunium.name=镎Watzé¶ä¸¸ item.pellet_rtg.name=é’š238放射性åŒä½ç´ ç‡ƒæ–™é¶ä¸¸ item.pellet_rtg.desc=æ— é™èƒ½é‡çš„RTGé¶ä¸¸ï¼ï¼ˆå·®ä¸å¤šï¼‰ -item.pellet_rtg_actinium.name=锕放射性åŒä½ç´ ç‡ƒæ–™é¶ä¸¸ -item.pellet_rtg_actinium.desc= +item.pellet_rtg_actinium.name=锕-227放射性åŒä½ç´ ç‡ƒæ–™é¶ä¸¸ +item.pellet_rtg_actinium.desc=充满了高能电å­çš„è“色光辉 item.pellet_rtg_americium.name=é•…-241放射性åŒä½ç´ ç‡ƒæ–™é¶ä¸¸ item.pellet_rtg_americium.desc=稀有å¯é ï¼Œå¥½çš„è€é•…ï¼ item.pellet_rtg_berkelium.name=锫放射性åŒä½ç´ ç‡ƒæ–™é¶ä¸¸ @@ -3696,7 +3851,7 @@ item.pellet_rtg_gold.desc=由稀有的ã€é«˜åº¦ä¸ç¨³å®šçš„金åŒä½ç´ åˆ¶æˆã€‚ item.pellet_rtg_polonium.name=é’‹210放射性åŒä½ç´ ç‡ƒæ–™é¶ä¸¸ item.pellet_rtg_polonium.desc=更多粉末状RTGé¶ä¸¸ï¼Œç”±æœ€å¥½çš„钋制æˆï¼ item.pellet_rtg_strontium.name=é”¶-90放射性åŒä½ç´ ç‡ƒæ–™é¶ä¸¸ -item.pellet_rtg_strontium.desc= +item.pellet_rtg_strontium.desc=被加利ç¦å°¼äºšæ´²æ‰€ç†ŸçŸ¥... item.pellet_rtg_radium.name=é•­-226放射性åŒä½ç´ ç‡ƒæ–™é¶ä¸¸ item.pellet_rtg_radium.desc=伟大的å¯åЍé¶ä¸¸ï¼Œæ¥è‡ªå…¨å¤©ç„¶é•­ï¼ item.pellet_rtg_weak.name=贫铀放射性åŒä½ç´ ç‡ƒæ–™é¶ä¸¸ @@ -3785,7 +3940,7 @@ item.powder_actinium_tiny.name=å°æ’®é”•粉 item.powder_advanced_alloy.name=高级åˆé‡‘粉 item.powder_aluminium.name=é“粉 item.powder_asbestos.name=石棉粉 -item.powder_asbestos.desc=§o\"Sniffffffff- MHHHHHHMHHHHHHHHH\"§r +item.powder_asbestos.desc=§o\"æš´ 风 å¸ å…¥-- 太 t m 香 了\"§r item.powder_ash.coal.name=ç…¤ç° item.powder_ash.fly.name=飞尘 item.powder_ash.fullerene.name=富勒烯 @@ -4467,10 +4622,10 @@ item.titanium_shovel.name=钛锹 item.titanium_sword.name=钛剑 item.toothpicks.name=牙签 item.train.cargo_tram.name=å¹³æ¿è½½è´§ç”µè½¦ -item.trenchmaster_boots.name=Trenchmasterçš„é´å­ -item.trenchmaster_helmet.name=Trenchmaster的头盔 -item.trenchmaster_legs.name=Trenchmaster的护腿 -item.trenchmaster_plate.name=Trenchmaster的胸甲 +item.trenchmaster_boots.name=战壕王者的é´å­ +item.trenchmaster_helmet.name=战壕王者的头盔 +item.trenchmaster_legs.name=战壕王者的护腿 +item.trenchmaster_plate.name=战壕王者的胸甲 item.trinitite.name=玻璃石 item.tritium_deuterium_cake.name=氚氘饼 item.tritium_deuterium_cake.desc=䏿˜¯çœŸæ­£çš„蛋糕,而是很棒的$èšå˜ç‡ƒæ–™ï¼ @@ -4547,7 +4702,7 @@ item.warhead_incendiary_large.name=大型燃烧弹头 item.warhead_incendiary_medium.name=中型燃烧弹头 item.warhead_incendiary_small.name=å°åž‹ç‡ƒçƒ§å¼¹å¤´ item.warhead_mirv.name=热核弹头 -item.warhead_mirvlet.name=MIRV +item.warhead_mirvlet.name=MIRV弹头 item.warhead_nuclear.name=核弹头 item.warhead_thermo_endo.name=å¸çƒ­å¼¹å¤´ item.warhead_thermo_exo.name=放热弹头 @@ -4623,6 +4778,39 @@ item.wrench_flipped.name=刺刀扳手 item.xanax.name=NAXA 抗迪伽马è¯ç‰© item.xanax.desc=移除500mDRX迪伽马è¾å°„ item.zirconium_legs.name=锆质护腿 +item.cart.powder.name=装满ç«è¯çš„矿车 +item.cart.semtex.name=装满塞姆汀炸è¯çš„矿车 +item.casing_buckshot.name=霰弹弹壳 +item.casing.small.name=å°å£å¾„铜弹壳 +item.casing.small_steel.name=å°å£å¾„钢弹壳 +item.casing.large.name=大å£å¾„铜弹壳 +item.casing.large_steel.name=大å£å¾„钢弹壳 +item.casing.shotshell.name=黑ç«è¯éœ°å¼¹å¼¹å£³ +item.casing.buckshot.name=塑料霰弹弹壳 +item.casing.buckshot_advanced.name=高级霰弹弹壳 +item.dnt_sword.name=DNT剑 +item.ingot_gunmetal.name=炮铜锭 +item.ingot_raw.name=%sé”­ +item.ingot_weaponsteel.name=武器级钢锭 +item.item_secret.selenium_steel.name=ç¡’é’¢ +item.part_barrel_heavy.name=é‡åž‹%s枪管 +item.part_barrel_light.name=轻型%s枪管 +item.part_grip.name=%sæ¡æŠŠ +item.part_mechanism.name=%s机构 +item.part_receiver_heavy.name=é‡åž‹%s机匣 +item.part_receiver_light.name=轻型%s机匣 +item.part_stock.name=%s枪托 +item.plate_gunmetal.name=ç‚®é“œæ¿ +item.plate_weaponsteel.name=æ­¦å™¨çº§é’¢æ¿ +tile.machine_pyrooven.name=热解炉 +item.ammo_standard.g10.name=åå·é¹¿å¼¹ +item.ammo_standard.g10_du.name=åå·è´«é“€é¹¿å¼¹ +item.ammo_standard.g10_shrapnel.name=åå·éœ°å¼¹(易跳弹) +item.clay_tablet.name=æ³¥æ¿ +item.gun_double_barrel.name=æ—§æ—¥ç»å…¸ +item.gun_heavy_revolver_protege.name=门徒 +item.gun_autoshotgun_shredder.name=粉碎者 +item.gun_double_barrel_sacred_dragon.name=圣龙 itemGroup.tabBlocks=HBM çŸ¿çŸ³å’Œæ–¹å— itemGroup.tabConsumable=HBM 食物和装备 @@ -4646,7 +4834,7 @@ potion.hbm_radiation=è¾å°„ potion.hbm_radx=抗è¾å°„ potion.hbm_stability=稳定 potion.hbm_taint=污染 -potion.hbm_telekinesis=! ! ! +potion.hbm_telekinesis=隔地促动 radar.clearMap=清空地图 radar.detectMissiles=探测导弹 @@ -4719,6 +4907,16 @@ shape.stamp=锻模 shape.wireFine=线 shape.wireDense=致密线 shape.wiresDense=致密线 +shape.barrelHeavy=é‡åž‹æžªç®¡ +shape.barrelLight=轻型枪管 +shape.grip=æ¡æŠŠ +shape.gunMechanism=机构 +shape.receiverHeavy=é‡åž‹æœºåŒ£ +shape.receiverLight=轻型机匣 +shape.stock=枪托 +shape.c9=å°å£å¾„弹壳 +shape.c50=大å£å¾„弹壳 + soundCategory.ntmMachines=NTM机器 @@ -5035,7 +5233,7 @@ tile.concrete_smooth.name=æ··å‡åœŸ tile.concrete_smooth_stairs.name=æ··å‡åœŸæ¥¼æ¢¯ tile.concrete_stairs.name=æ··å‡åœŸç“¦å—楼梯 tile.concrete_super.name=überæ··å‡åœŸ -tile.concrete_super_broken.name=å‘霉的碎片 +tile.concrete_super_broken.name=å‘霉的Überæ··å‡åœŸæ®‹éª¸ tile.conveyor.name=输é€å¸¦ tile.conveyor.desc=移动掉在上é¢çš„物å“$å¯ä»¥ç”¨èžºä¸åˆ€é¡ºæ—¶é’ˆæ—‹è½¬$用螺ä¸åˆ€æŒ‰ä½Shifté”®å•击以转弯 tile.conveyor_chute.name=输é€å¸¦æ»‘æ§½ @@ -5914,6 +6112,8 @@ tile.watz_hatch.name=Watzååº”å †ç«¯å£ tile.watz_pump.name=Watz压力泵 tile.yellow_barrel.name=核废料桶 tile.zirnox_destroyed.name=æŸæ¯çš„ZIRNOX +tile.machine_ammo_press.name=压弹机 +tile.machine_rotary_furnace.name=回转炉 tile.large_vehicle_door.name=大型机械门 tile.water_door.name=水闸门 diff --git a/src/main/resources/assets/hbm/manual/demo.json b/src/main/resources/assets/hbm/manual/demo.json new file mode 100644 index 000000000..f21a54d12 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/demo.json @@ -0,0 +1,7 @@ +{ + "name": "DEMO", + "icon": ["hbm:item.gun_light_revolver", 1, 0], + "content": { + "en_US": "This is a test page that links to [[Demo|DEMO]].\n\nFormat line break" + } +} diff --git a/src/main/resources/assets/hbm/models/bombs/ap_mine.obj b/src/main/resources/assets/hbm/models/bombs/ap_mine.obj new file mode 100644 index 000000000..b9762718c --- /dev/null +++ b/src/main/resources/assets/hbm/models/bombs/ap_mine.obj @@ -0,0 +1,749 @@ +# Blender v2.79 (sub 0) OBJ File: 'ap_mine.blend' +# www.blender.org +o Circle +v 0.000000 0.000000 -0.500000 +v -0.250000 0.000000 -0.433013 +v -0.433013 0.000000 -0.250000 +v -0.500000 0.000000 0.000000 +v -0.433013 0.000000 0.250000 +v -0.250000 0.000000 0.433013 +v -0.000000 0.000000 0.500000 +v 0.250000 0.000000 0.433013 +v 0.433013 0.000000 0.250000 +v 0.500000 0.000000 0.000000 +v 0.433013 0.000000 -0.250000 +v 0.250000 0.000000 -0.433013 +v -0.250000 0.250000 -0.433013 +v 0.000000 0.250000 -0.500000 +v -0.433013 0.250000 -0.250000 +v -0.500000 0.250000 0.000000 +v -0.433013 0.250000 0.250000 +v -0.250000 0.250000 0.433013 +v -0.000000 0.250000 0.500000 +v 0.250000 0.250000 0.433013 +v 0.433013 0.250000 0.250000 +v 0.500000 0.250000 0.000000 +v 0.433013 0.250000 -0.250000 +v 0.250000 0.250000 -0.433013 +v 0.000000 0.250000 -0.312500 +v -0.156250 0.250000 -0.270633 +v -0.270633 0.250000 -0.156250 +v -0.312500 0.250000 0.000000 +v -0.270633 0.250000 0.156250 +v -0.156250 0.250000 0.270633 +v -0.000000 0.250000 0.312500 +v 0.156250 0.250000 0.270633 +v 0.270633 0.250000 0.156250 +v 0.312500 0.250000 0.000000 +v 0.270633 0.250000 -0.156250 +v 0.156250 0.250000 -0.270633 +v 0.000000 0.375000 -0.250000 +v -0.125000 0.375000 -0.216506 +v -0.216506 0.375000 -0.125000 +v -0.250000 0.375000 0.000000 +v -0.216506 0.375000 0.125000 +v -0.125000 0.375000 0.216506 +v -0.000000 0.375000 0.250000 +v 0.125000 0.375000 0.216506 +v 0.216506 0.375000 0.125000 +v 0.250000 0.375000 0.000000 +v 0.216506 0.375000 -0.125000 +v 0.125000 0.375000 -0.216506 +v 0.031250 -0.062500 -0.250000 +v 0.031250 -0.062500 -0.562500 +v -0.031250 -0.062500 -0.250000 +v -0.031250 -0.062500 -0.562500 +v 0.031250 0.312500 -0.250000 +v 0.031250 0.312500 -0.562500 +v -0.031250 0.312500 -0.250000 +v -0.031250 0.312500 -0.562500 +v 0.250000 -0.062500 0.031250 +v 0.562500 -0.062500 0.031250 +v 0.250000 -0.062500 -0.031250 +v 0.562500 -0.062500 -0.031250 +v 0.250000 0.312500 0.031250 +v 0.562500 0.312500 0.031250 +v 0.250000 0.312500 -0.031250 +v 0.562500 0.312500 -0.031250 +v -0.562500 0.312500 0.031250 +v -0.250000 0.312500 0.031250 +v -0.562500 0.312500 -0.031250 +v -0.250000 0.312500 -0.031250 +v -0.562500 -0.062500 0.031250 +v -0.250000 -0.062500 0.031250 +v -0.562500 -0.062500 -0.031250 +v -0.250000 -0.062500 -0.031250 +v 0.031250 0.312500 0.562500 +v 0.031250 0.312500 0.250000 +v -0.031250 0.312500 0.562500 +v -0.031250 0.312500 0.250000 +v 0.031250 -0.062500 0.562500 +v 0.031250 -0.062500 0.250000 +v -0.031250 -0.062500 0.562500 +v -0.031250 -0.062500 0.250000 +v 0.187500 0.000000 -0.324759 +v 0.324760 0.000000 -0.187500 +v 0.375000 0.000000 0.000000 +v 0.324759 0.000000 0.187500 +v 0.187500 0.000000 0.324760 +v -0.000000 0.000000 0.375000 +v -0.187500 0.000000 0.324760 +v -0.324760 0.000000 0.187500 +v -0.375000 0.000000 0.000000 +v -0.324760 0.000000 -0.187500 +v -0.187500 0.000000 -0.324759 +v 0.000000 0.000000 -0.375000 +v 0.187500 -0.125000 -0.324759 +v 0.324760 -0.125000 -0.187500 +v 0.375000 -0.125000 0.000000 +v 0.324759 -0.125000 0.187500 +v 0.187500 -0.125000 0.324760 +v -0.000000 -0.125000 0.375000 +v -0.187500 -0.125000 0.324760 +v -0.324760 -0.125000 0.187500 +v -0.375000 -0.125000 0.000000 +v -0.324760 -0.125000 -0.187500 +v -0.187500 -0.125000 -0.324759 +v 0.000000 -0.125000 -0.375000 +v -0.097937 -0.062500 -0.232131 +v -0.254187 -0.062500 -0.502764 +v -0.152063 -0.062500 -0.200881 +v -0.308313 -0.062500 -0.471514 +v -0.097937 0.312500 -0.232131 +v -0.254187 0.312500 -0.502764 +v -0.152063 0.312500 -0.200881 +v -0.308313 0.312500 -0.471514 +v 0.232131 -0.062500 -0.097937 +v 0.502764 -0.062500 -0.254187 +v 0.200881 -0.062500 -0.152063 +v 0.471514 -0.062500 -0.308313 +v 0.232131 0.312500 -0.097937 +v 0.502764 0.312500 -0.254187 +v 0.200881 0.312500 -0.152063 +v 0.471514 0.312500 -0.308313 +v -0.471514 0.312500 0.308313 +v -0.200881 0.312500 0.152063 +v -0.502764 0.312500 0.254187 +v -0.232131 0.312500 0.097937 +v -0.471514 -0.062500 0.308313 +v -0.200881 -0.062500 0.152063 +v -0.502764 -0.062500 0.254187 +v -0.232131 -0.062500 0.097937 +v 0.308313 0.312500 0.471514 +v 0.152063 0.312500 0.200881 +v 0.254187 0.312500 0.502764 +v 0.097937 0.312500 0.232131 +v 0.308313 -0.062500 0.471514 +v 0.152063 -0.062500 0.200881 +v 0.254187 -0.062500 0.502764 +v 0.097937 -0.062500 0.232131 +v -0.200881 -0.062500 -0.152063 +v -0.471514 -0.062500 -0.308313 +v -0.232131 -0.062500 -0.097937 +v -0.502764 -0.062500 -0.254187 +v -0.200881 0.312500 -0.152063 +v -0.471514 0.312500 -0.308313 +v -0.232131 0.312500 -0.097937 +v -0.502764 0.312500 -0.254187 +v 0.152063 -0.062500 -0.200881 +v 0.308313 -0.062500 -0.471514 +v 0.097937 -0.062500 -0.232131 +v 0.254187 -0.062500 -0.502764 +v 0.152063 0.312500 -0.200881 +v 0.308313 0.312500 -0.471514 +v 0.097937 0.312500 -0.232131 +v 0.254187 0.312500 -0.502764 +v -0.254187 0.312500 0.502764 +v -0.097937 0.312500 0.232131 +v -0.308313 0.312500 0.471514 +v -0.152063 0.312500 0.200881 +v -0.254187 -0.062500 0.502764 +v -0.097937 -0.062500 0.232131 +v -0.308313 -0.062500 0.471514 +v -0.152063 -0.062500 0.200881 +v 0.502764 0.312500 0.254187 +v 0.232131 0.312500 0.097937 +v 0.471514 0.312500 0.308313 +v 0.200881 0.312500 0.152063 +v 0.502764 -0.062500 0.254187 +v 0.232131 -0.062500 0.097937 +v 0.471514 -0.062500 0.308313 +v 0.200881 -0.062500 0.152063 +vt 0.166667 0.080000 +vt 0.250000 0.160000 +vt 0.166667 0.160000 +vt 0.291806 0.541901 +vt 0.374860 0.541901 +vt 0.416387 0.680000 +vt 0.500000 0.320000 +vt 0.562500 0.440000 +vt 0.520833 0.440000 +vt 0.583333 0.320000 +vt 0.645833 0.440000 +vt 0.604167 0.440000 +vt 0.750000 0.320000 +vt 0.687500 0.440000 +vt 0.666667 0.320000 +vt 0.812500 0.440000 +vt 0.770833 0.440000 +vt 0.916667 0.320000 +vt 0.854167 0.440000 +vt 0.833333 0.320000 +vt 1.000000 0.320000 +vt 0.937500 0.440000 +vt 0.083333 0.320000 +vt 0.020833 0.440000 +vt -0.000000 0.320000 +vt 0.166667 0.320000 +vt 0.104167 0.440000 +vt 0.250000 0.320000 +vt 0.187500 0.440000 +vt 0.333333 0.320000 +vt 0.270833 0.440000 +vt 0.395833 0.440000 +vt 0.354167 0.440000 +vt 0.416667 0.320000 +vt 0.479167 0.440000 +vt 0.437500 0.440000 +vt 0.416667 0.520000 +vt 0.520833 0.560000 +vt 0.416667 0.560000 +vt 0.520833 0.800000 +vt 0.416667 0.840000 +vt 0.416667 0.800000 +vt 0.541667 0.560000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.541667 0.560000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.800000 +vt 0.416667 0.520000 +vt 0.416667 0.840000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.520000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.416667 0.840000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.520833 0.520000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.416667 0.840000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.000000 0.080000 +vt 0.083333 0.160000 +vt -0.000000 0.160000 +vt 0.083333 0.080000 +vt 0.916667 0.080000 +vt 1.000000 0.160000 +vt 0.916667 0.160000 +vt 0.833333 0.080000 +vt 0.833333 0.160000 +vt 0.750000 0.160000 +vt 0.812500 0.080000 +vt 0.666667 0.080000 +vt 0.666667 0.160000 +vt 0.583333 0.160000 +vt 0.645833 0.080000 +vt 0.500000 0.160000 +vt 0.562500 0.080000 +vt 0.416667 0.160000 +vt 0.479167 0.080000 +vt 0.333333 0.160000 +vt 0.395833 0.080000 +vt 0.250000 0.080000 +vt 0.187513 0.552110 +vt 0.187513 0.967890 +vt -0.000027 0.760000 +vt 0.416667 0.560000 +vt 0.520833 0.520000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.520833 0.840000 +vt 0.416667 0.840000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.541667 0.560000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.800000 +vt 0.416667 0.520000 +vt 0.416667 0.840000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.520000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.840000 +vt 0.416667 0.840000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.416667 0.520000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.416667 0.840000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.520000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.520833 0.840000 +vt 0.416667 0.840000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.541667 0.560000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.800000 +vt 0.416667 0.520000 +vt 0.416667 0.840000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.520000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.520833 0.560000 +vt 0.416667 0.800000 +vt 0.416667 0.560000 +vt 0.520833 0.840000 +vt 0.416667 0.840000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.520833 0.520000 +vt 0.541667 0.560000 +vt 0.520833 0.800000 +vt 0.416667 0.840000 +vt 0.645833 0.560000 +vt 0.541667 0.800000 +vt 0.229167 0.080000 +vt 0.405260 0.759732 +vt 0.374860 0.818099 +vt 0.333333 0.839464 +vt 0.291806 0.818099 +vt 0.261407 0.759732 +vt 0.250279 0.680000 +vt 0.261407 0.600268 +vt 0.333333 0.520537 +vt 0.405260 0.600268 +vt 0.729167 0.440000 +vt 0.895833 0.440000 +vt 0.979167 0.440000 +vt 0.062500 0.440000 +vt 0.145833 0.440000 +vt 0.229167 0.440000 +vt 0.312500 0.440000 +vt 0.520833 0.520000 +vt 0.520833 0.840000 +vt 0.645833 0.800000 +vt 0.645833 0.800000 +vt 0.520833 0.520000 +vt 0.520833 0.840000 +vt 0.416667 0.520000 +vt 0.520833 0.840000 +vt 0.645833 0.800000 +vt 0.416667 0.520000 +vt 0.520833 0.840000 +vt 0.645833 0.800000 +vt 0.062500 0.080000 +vt 0.145833 0.080000 +vt 0.979167 0.080000 +vt 0.895833 0.080000 +vt 0.750000 0.080000 +vt 0.729167 0.080000 +vt 0.583333 0.080000 +vt 0.500000 0.080000 +vt 0.416667 0.080000 +vt 0.333333 0.080000 +vt 0.312500 0.080000 +vt 0.016724 0.639974 +vt 0.062487 0.552109 +vt 0.125000 0.519949 +vt 0.233276 0.639974 +vt 0.250027 0.760000 +vt 0.233276 0.880025 +vt 0.125000 1.000051 +vt 0.062487 0.967890 +vt 0.016724 0.880025 +vt 0.416667 0.520000 +vt 0.645833 0.800000 +vt 0.645833 0.800000 +vt 0.520833 0.520000 +vt 0.520833 0.840000 +vt 0.416667 0.520000 +vt 0.645833 0.800000 +vt 0.520833 0.520000 +vt 0.520833 0.840000 +vt 0.645833 0.800000 +vt 0.416667 0.520000 +vt 0.645833 0.800000 +vt 0.645833 0.800000 +vt 0.520833 0.520000 +vt 0.520833 0.840000 +vt 0.416667 0.520000 +vt 0.645833 0.800000 +vt 0.416667 0.520000 +vt 0.520833 0.840000 +vt 0.645833 0.800000 +vt 0.479167 0.520000 +vt 0.437500 0.520000 +vt 0.520833 0.520000 +vt 0.604167 0.520000 +vt 0.687500 0.520000 +vt 0.770833 0.520000 +vt 0.854167 0.520000 +vt 0.937500 0.520000 +vt 0.020833 0.520000 +vt 0.104167 0.520000 +vt 0.187500 0.520000 +vt 0.270833 0.520000 +vt 0.354167 0.520000 +vt 0.062500 -0.000000 +vt 0.645833 -0.000000 +vt 0.895833 -0.000000 +vt 0.562500 -0.000000 +vt 0.979167 -0.000000 +vt 0.479167 -0.000000 +vt 0.395833 -0.000000 +vt 0.312500 -0.000000 +vt 0.229167 -0.000000 +vt 0.812500 -0.000000 +vt 0.729167 -0.000000 +vt 0.145833 -0.000000 +vt 0.562500 0.520000 +vt 0.645833 0.520000 +vt 0.729167 0.520000 +vt 0.812500 0.520000 +vt 0.895833 0.520000 +vt 0.979167 0.520000 +vt 0.062500 0.520000 +vt 0.145833 0.520000 +vt 0.229167 0.520000 +vt 0.312500 0.520000 +vt 0.395833 0.520000 +vt 0.000000 -0.000000 +vt 0.583333 -0.000000 +vt 0.833333 -0.000000 +vt 0.500000 -0.000000 +vt 0.916667 -0.000000 +vt 0.416667 -0.000000 +vt 0.333333 -0.000000 +vt 0.250000 -0.000000 +vt 0.166667 -0.000000 +vt 0.750000 -0.000000 +vt 0.666667 -0.000000 +vt 0.083333 -0.000000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.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.0000 1.0000 +vn -0.5000 0.0000 -0.8660 +vn -0.8660 0.0000 0.5000 +vn 0.8660 0.0000 -0.5000 +vn 0.5000 0.0000 0.8660 +vn -0.8660 0.0000 -0.5000 +vn -0.5000 0.0000 0.8660 +vn 0.5000 0.0000 -0.8660 +vn 0.8660 0.0000 0.5000 +vn 0.7746 0.4472 0.4472 +vn 0.8944 0.4472 0.0000 +vn 0.7746 0.4472 -0.4472 +vn 0.4472 0.4472 -0.7746 +vn 0.0000 0.4472 -0.8944 +vn -0.4472 0.4472 -0.7746 +vn -0.7746 0.4472 -0.4472 +vn -0.8944 0.4472 0.0000 +vn -0.7746 0.4472 0.4472 +vn -0.4472 0.4472 0.7746 +vn -0.0000 0.4472 0.8944 +vn 0.4472 0.4472 0.7746 +s off +f 87/1/1 7/2/1 6/3/1 +f 45/4/2 47/5/2 37/6/2 +f 22/7/2 35/8/2 34/9/2 +f 23/10/2 36/11/2 35/12/2 +f 14/13/2 36/14/2 24/15/2 +f 14/13/2 26/16/2 25/17/2 +f 15/18/2 26/19/2 13/20/2 +f 16/21/2 27/22/2 15/18/2 +f 17/23/2 28/24/2 16/25/2 +f 18/26/2 29/27/2 17/23/2 +f 19/28/2 30/29/2 18/26/2 +f 20/30/2 31/31/2 19/28/2 +f 20/30/2 33/32/2 32/33/2 +f 21/34/2 34/35/2 33/36/2 +f 51/37/1 50/38/1 49/39/1 +f 54/40/2 55/41/2 53/42/2 +f 52/43/3 54/40/3 50/38/3 +f 51/44/4 56/45/4 52/43/4 +f 50/38/5 53/42/5 49/39/5 +f 59/46/3 64/47/3 60/48/3 +f 58/49/6 61/50/6 57/51/6 +f 60/48/5 62/52/5 58/49/5 +f 59/53/1 58/49/1 57/51/1 +f 62/52/2 63/54/2 61/50/2 +f 71/55/3 68/56/3 72/57/3 +f 72/57/1 69/58/1 71/55/1 +f 69/59/4 67/60/4 71/55/4 +f 79/61/4 76/62/4 80/63/4 +f 67/60/2 66/64/2 68/56/2 +f 70/65/6 65/66/6 69/59/6 +f 80/63/1 77/67/1 79/61/1 +f 77/68/6 75/69/6 79/61/6 +f 75/69/2 74/70/2 76/62/2 +f 78/71/5 73/72/5 77/68/5 +f 89/73/1 5/74/1 4/75/1 +f 88/76/1 6/3/1 5/74/1 +f 90/77/1 4/78/1 3/79/1 +f 91/80/1 3/79/1 2/81/1 +f 1/82/1 91/83/1 2/81/1 +f 81/84/1 1/82/1 12/85/1 +f 11/86/1 81/87/1 12/85/1 +f 10/88/1 82/89/1 11/86/1 +f 9/90/1 83/91/1 10/88/1 +f 8/92/1 84/93/1 9/90/1 +f 86/94/1 8/92/1 7/2/1 +f 96/95/1 100/96/1 104/97/1 +f 105/98/1 108/99/1 106/100/1 +f 109/101/2 112/102/2 111/103/2 +f 108/104/7 110/105/7 106/100/7 +f 107/106/8 112/107/8 108/104/8 +f 106/100/9 109/101/9 105/98/9 +f 115/108/7 120/109/7 116/110/7 +f 114/111/10 117/112/10 113/113/10 +f 116/110/9 118/114/9 114/111/9 +f 115/115/1 114/111/1 113/113/1 +f 118/114/2 119/116/2 117/112/2 +f 127/117/7 124/118/7 128/119/7 +f 128/119/1 125/120/1 127/117/1 +f 125/121/8 123/122/8 127/117/8 +f 135/123/8 132/124/8 136/125/8 +f 124/118/2 121/126/2 122/127/2 +f 126/128/10 121/129/10 125/121/10 +f 134/130/1 135/123/1 136/125/1 +f 133/131/10 131/132/10 135/123/10 +f 131/132/2 130/133/2 132/124/2 +f 134/134/9 129/135/9 133/131/9 +f 137/136/1 140/137/1 138/138/1 +f 141/139/2 144/140/2 143/141/2 +f 140/142/11 142/143/11 138/138/11 +f 139/144/12 144/145/12 140/142/12 +f 138/138/13 141/139/13 137/136/13 +f 147/146/11 152/147/11 148/148/11 +f 146/149/14 149/150/14 145/151/14 +f 148/148/13 150/152/13 146/149/13 +f 147/153/1 146/149/1 145/151/1 +f 150/152/2 151/154/2 149/150/2 +f 159/155/11 156/156/11 160/157/11 +f 160/157/1 157/158/1 159/155/1 +f 157/159/12 155/160/12 159/155/12 +f 167/161/12 164/162/12 168/163/12 +f 156/156/2 153/164/2 154/165/2 +f 158/166/14 153/167/14 157/159/14 +f 168/163/1 165/168/1 167/161/1 +f 165/169/14 163/170/14 167/161/14 +f 163/170/2 162/171/2 164/162/2 +f 166/172/13 161/173/13 165/169/13 +f 87/1/1 86/174/1 7/2/1 +f 37/6/2 38/175/2 39/176/2 +f 39/176/2 40/177/2 41/178/2 +f 41/178/2 42/179/2 43/180/2 +f 43/180/2 44/181/2 45/4/2 +f 45/4/2 46/182/2 47/5/2 +f 47/5/2 48/183/2 37/6/2 +f 37/6/2 39/176/2 41/178/2 +f 41/178/2 43/180/2 37/6/2 +f 43/180/2 45/4/2 37/6/2 +f 22/7/2 23/10/2 35/8/2 +f 23/10/2 24/15/2 36/11/2 +f 14/13/2 25/184/2 36/14/2 +f 14/13/2 13/20/2 26/16/2 +f 15/18/2 27/185/2 26/19/2 +f 16/21/2 28/186/2 27/22/2 +f 17/23/2 29/187/2 28/24/2 +f 18/26/2 30/188/2 29/27/2 +f 19/28/2 31/189/2 30/29/2 +f 20/30/2 32/190/2 31/31/2 +f 20/30/2 21/34/2 33/32/2 +f 21/34/2 22/7/2 34/35/2 +f 51/37/1 52/191/1 50/38/1 +f 54/40/2 56/192/2 55/41/2 +f 52/43/3 56/45/3 54/40/3 +f 51/44/4 55/193/4 56/45/4 +f 50/38/5 54/40/5 53/42/5 +f 59/46/3 63/194/3 64/47/3 +f 58/49/6 62/52/6 61/50/6 +f 60/48/5 64/47/5 62/52/5 +f 59/53/1 60/195/1 58/49/1 +f 62/52/2 64/196/2 63/54/2 +f 71/55/3 67/60/3 68/56/3 +f 72/57/1 70/197/1 69/58/1 +f 69/59/4 65/66/4 67/60/4 +f 79/61/4 75/69/4 76/62/4 +f 67/60/2 65/198/2 66/64/2 +f 70/65/6 66/199/6 65/66/6 +f 80/63/1 78/200/1 77/67/1 +f 77/68/6 73/72/6 75/69/6 +f 75/69/2 73/201/2 74/70/2 +f 78/71/5 74/202/5 73/72/5 +f 89/73/1 88/203/1 5/74/1 +f 88/76/1 87/204/1 6/3/1 +f 90/77/1 89/205/1 4/78/1 +f 91/80/1 90/206/1 3/79/1 +f 1/82/1 92/207/1 91/83/1 +f 81/84/1 92/208/1 1/82/1 +f 11/86/1 82/209/1 81/87/1 +f 10/88/1 83/210/1 82/89/1 +f 9/90/1 84/211/1 83/91/1 +f 8/92/1 85/212/1 84/93/1 +f 86/94/1 85/213/1 8/92/1 +f 104/97/1 93/214/1 94/215/1 +f 94/215/1 95/216/1 96/95/1 +f 96/95/1 97/217/1 100/96/1 +f 97/217/1 98/218/1 100/96/1 +f 98/218/1 99/219/1 100/96/1 +f 100/96/1 101/220/1 102/221/1 +f 102/221/1 103/222/1 104/97/1 +f 104/97/1 94/215/1 96/95/1 +f 100/96/1 102/221/1 104/97/1 +f 105/98/1 107/223/1 108/99/1 +f 109/101/2 110/105/2 112/102/2 +f 108/104/7 112/107/7 110/105/7 +f 107/106/8 111/224/8 112/107/8 +f 106/100/9 110/105/9 109/101/9 +f 115/108/7 119/225/7 120/109/7 +f 114/111/10 118/114/10 117/112/10 +f 116/110/9 120/109/9 118/114/9 +f 115/115/1 116/226/1 114/111/1 +f 118/114/2 120/227/2 119/116/2 +f 127/117/7 123/122/7 124/118/7 +f 128/119/1 126/228/1 125/120/1 +f 125/121/8 121/129/8 123/122/8 +f 135/123/8 131/132/8 132/124/8 +f 124/118/2 123/122/2 121/126/2 +f 126/128/10 122/229/10 121/129/10 +f 134/130/1 133/230/1 135/123/1 +f 133/131/10 129/135/10 131/132/10 +f 131/132/2 129/231/2 130/133/2 +f 134/134/9 130/232/9 129/135/9 +f 137/136/1 139/233/1 140/137/1 +f 141/139/2 142/143/2 144/140/2 +f 140/142/11 144/145/11 142/143/11 +f 139/144/12 143/234/12 144/145/12 +f 138/138/13 142/143/13 141/139/13 +f 147/146/11 151/235/11 152/147/11 +f 146/149/14 150/152/14 149/150/14 +f 148/148/13 152/147/13 150/152/13 +f 147/153/1 148/236/1 146/149/1 +f 150/152/2 152/237/2 151/154/2 +f 159/155/11 155/160/11 156/156/11 +f 160/157/1 158/238/1 157/158/1 +f 157/159/12 153/167/12 155/160/12 +f 167/161/12 163/170/12 164/162/12 +f 156/156/2 155/160/2 153/164/2 +f 158/166/14 154/239/14 153/167/14 +f 168/163/1 166/240/1 165/168/1 +f 165/169/14 161/173/14 163/170/14 +f 163/170/2 161/241/2 162/171/2 +f 166/172/13 162/242/13 161/173/13 +s 1 +f 9/90/14 20/30/10 8/92/10 +f 6/3/12 17/23/8 5/74/8 +f 1/82/3 24/15/13 12/85/13 +f 3/79/11 13/20/7 2/81/7 +f 10/88/5 21/34/14 9/90/14 +f 7/2/6 18/26/12 6/3/12 +f 4/78/4 15/18/11 3/79/11 +f 11/86/9 22/7/5 10/88/5 +f 8/92/10 19/28/6 7/2/6 +f 5/74/8 16/25/4 4/75/4 +f 12/85/13 23/10/9 11/86/9 +f 2/81/7 14/13/3 1/82/3 +f 33/36/15 46/243/16 45/244/15 +f 35/8/17 46/245/16 34/9/16 +f 36/11/18 47/246/17 35/12/17 +f 25/184/19 48/247/18 36/14/18 +f 26/16/20 37/248/19 25/17/19 +f 27/185/21 38/249/20 26/19/20 +f 28/186/22 39/250/21 27/22/21 +f 29/187/23 40/251/22 28/24/22 +f 30/188/24 41/252/23 29/27/23 +f 31/189/25 42/253/24 30/29/24 +f 32/190/26 43/254/25 31/31/25 +f 33/32/15 44/255/26 32/33/26 +f 89/73/4 100/256/8 88/203/8 +f 82/209/9 93/257/13 81/87/13 +f 91/80/7 102/258/11 90/206/11 +f 83/210/5 94/259/9 82/89/9 +f 90/77/11 101/260/4 89/205/4 +f 84/211/14 95/261/5 83/91/5 +f 85/212/10 96/262/14 84/93/14 +f 86/94/6 97/263/10 85/213/10 +f 87/1/12 98/264/6 86/174/6 +f 92/207/3 103/265/7 91/83/7 +f 81/84/13 104/266/3 92/208/3 +f 88/76/8 99/267/12 87/204/12 +f 9/90/14 21/34/14 20/30/10 +f 6/3/12 18/26/12 17/23/8 +f 1/82/3 14/13/3 24/15/13 +f 3/79/11 15/18/11 13/20/7 +f 10/88/5 22/7/5 21/34/14 +f 7/2/6 19/28/6 18/26/12 +f 4/78/4 16/21/4 15/18/11 +f 11/86/9 23/10/9 22/7/5 +f 8/92/10 20/30/10 19/28/6 +f 5/74/8 17/23/8 16/25/4 +f 12/85/13 24/15/13 23/10/9 +f 2/81/7 13/20/7 14/13/3 +f 33/36/15 34/35/16 46/243/16 +f 35/8/17 47/268/17 46/245/16 +f 36/11/18 48/269/18 47/246/17 +f 25/184/19 37/270/19 48/247/18 +f 26/16/20 38/271/20 37/248/19 +f 27/185/21 39/272/21 38/249/20 +f 28/186/22 40/273/22 39/250/21 +f 29/187/23 41/274/23 40/251/22 +f 30/188/24 42/275/24 41/252/23 +f 31/189/25 43/276/25 42/253/24 +f 32/190/26 44/277/26 43/254/25 +f 33/32/15 45/278/15 44/255/26 +f 89/73/4 101/279/4 100/256/8 +f 82/209/9 94/280/9 93/257/13 +f 91/80/7 103/281/7 102/258/11 +f 83/210/5 95/282/5 94/259/9 +f 90/77/11 102/283/11 101/260/4 +f 84/211/14 96/284/14 95/261/5 +f 85/212/10 97/285/10 96/262/14 +f 86/94/6 98/286/6 97/263/10 +f 87/1/12 99/287/12 98/264/6 +f 92/207/3 104/288/3 103/265/7 +f 81/84/13 93/289/13 104/266/3 +f 88/76/8 100/290/8 99/267/12 diff --git a/src/main/resources/assets/hbm/models/effect/skeleton.obj b/src/main/resources/assets/hbm/models/effect/skeleton.obj new file mode 100644 index 000000000..6e5c28f3c --- /dev/null +++ b/src/main/resources/assets/hbm/models/effect/skeleton.obj @@ -0,0 +1,294 @@ +# Blender v2.79 (sub 0) OBJ File: '' +# www.blender.org +o SkullVillager +v -0.250000 0.312500 0.250000 +v -0.250000 -0.312500 -0.250000 +v -0.250000 -0.312500 0.250000 +v -0.250000 0.312500 -0.250000 +v 0.250000 -0.312500 -0.250000 +v 0.250000 0.312500 -0.250000 +v 0.250000 -0.312500 0.250000 +v 0.250000 0.312500 0.250000 +v -0.250000 -0.312500 -0.250000 +v -0.250000 0.312500 0.250000 +v -0.250000 -0.312500 0.250000 +v 0.250000 -0.312500 -0.250000 +v -0.250000 0.312500 -0.250000 +v 0.250000 -0.312500 0.250000 +v 0.250000 0.312500 -0.250000 +v 0.250000 0.312500 0.250000 +vt 0.500000 0.875000 +vt 0.375000 0.718750 +vt 0.500000 0.718750 +vt 0.375000 0.875000 +vt 0.250000 0.718750 +vt 0.250000 0.875000 +vt 0.125000 0.718750 +vt 0.125000 0.875000 +vt 0.000000 0.718750 +vt 0.250000 0.875000 +vt 0.375000 1.000000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.375000 0.718750 +vt 0.500000 0.875000 +vt 0.500000 0.718750 +vt 0.250000 0.718750 +vt 0.375000 0.875000 +vt 0.125000 0.718750 +vt 0.250000 0.875000 +vt 0.000000 0.718750 +vt 0.125000 0.875000 +vt 0.375000 1.000000 +vt 0.250000 0.875000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.000000 0.875000 +vt 0.375000 0.875000 +vt 0.125000 1.000000 +vt 0.000000 0.875000 +vt 0.375000 0.875000 +vt 0.125000 1.000000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s 1 +f 1/1/1 2/2/1 3/3/1 +f 4/4/2 5/5/2 2/2/2 +f 6/6/3 7/7/3 5/5/3 +f 8/8/4 3/9/4 7/7/4 +f 5/10/5 3/11/5 2/12/5 +f 4/13/6 8/8/6 6/6/6 +f 9/14/3 10/15/3 11/16/3 +f 12/17/4 13/18/4 9/14/4 +f 14/19/1 15/20/1 12/17/1 +f 11/21/2 16/22/2 14/19/2 +f 11/23/6 12/24/6 9/25/6 +f 16/22/5 13/26/5 15/20/5 +f 1/1/1 4/4/1 2/2/1 +f 4/4/2 6/6/2 5/5/2 +f 6/6/3 8/8/3 7/7/3 +f 8/8/4 1/27/4 3/9/4 +f 5/10/5 7/28/5 3/11/5 +f 4/13/6 1/29/6 8/8/6 +f 9/14/3 13/18/3 10/15/3 +f 12/17/4 15/20/4 13/18/4 +f 14/19/1 16/22/1 15/20/1 +f 11/21/2 10/30/2 16/22/2 +f 11/23/6 14/31/6 12/24/6 +f 16/22/5 10/32/5 13/26/5 +o Limb +v -0.062500 0.375000 0.062500 +v -0.062500 -0.375000 -0.062500 +v -0.062500 -0.375000 0.062500 +v -0.062500 0.375000 -0.062500 +v 0.062500 -0.375000 -0.062500 +v 0.062500 0.375000 -0.062500 +v 0.062500 -0.375000 0.062500 +v 0.062500 0.375000 0.062500 +vt 0.125000 0.437500 +vt 0.093750 0.062500 +vt 0.125000 0.062500 +vt 0.093750 0.437500 +vt 0.062500 0.062500 +vt 0.062500 0.437500 +vt 0.031250 0.062500 +vt 0.031250 0.437500 +vt 0.000000 0.062500 +vt 0.062500 0.437500 +vt 0.093750 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt -0.000000 0.437500 +vt 0.093750 0.437500 +vt 0.031250 0.500000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s 1 +f 17/33/7 18/34/7 19/35/7 +f 20/36/8 21/37/8 18/34/8 +f 22/38/9 23/39/9 21/37/9 +f 24/40/10 19/41/10 23/39/10 +f 21/42/11 19/43/11 18/44/11 +f 20/45/12 24/40/12 22/38/12 +f 17/33/7 20/36/7 18/34/7 +f 20/36/8 22/38/8 21/37/8 +f 22/38/9 24/40/9 23/39/9 +f 24/40/10 17/46/10 19/41/10 +f 21/42/11 23/47/11 19/43/11 +f 20/45/12 17/48/12 24/40/12 +o Skull +v -0.250000 0.250000 0.250000 +v -0.250000 -0.250000 -0.250000 +v -0.250000 -0.250000 0.250000 +v -0.250000 0.250000 -0.250000 +v 0.250000 -0.250000 -0.250000 +v 0.250000 0.250000 -0.250000 +v 0.250000 -0.250000 0.250000 +v 0.250000 0.250000 0.250000 +v -0.250000 -0.250000 -0.250000 +v -0.250000 0.250000 0.250000 +v -0.250000 -0.250000 0.250000 +v 0.250000 -0.250000 -0.250000 +v -0.250000 0.250000 -0.250000 +v 0.250000 -0.250000 0.250000 +v 0.250000 0.250000 -0.250000 +v 0.250000 0.250000 0.250000 +vt 0.500000 0.750000 +vt 0.375000 0.500000 +vt 0.500000 0.500000 +vt 0.375000 0.750000 +vt 0.250000 0.500000 +vt 0.250000 0.750000 +vt 0.125000 0.500000 +vt 0.125000 0.750000 +vt -0.000000 0.500000 +vt 0.250000 0.750000 +vt 0.375000 1.000000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.375000 0.500000 +vt 0.500000 0.750000 +vt 0.500000 0.500000 +vt 0.250000 0.500000 +vt 0.375000 0.750000 +vt 0.125000 0.500000 +vt 0.250000 0.750000 +vt -0.000000 0.500000 +vt 0.125000 0.750000 +vt 0.375000 1.000000 +vt 0.250000 0.750000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt -0.000000 0.750000 +vt 0.375000 0.750000 +vt 0.125000 1.000000 +vt -0.000000 0.750000 +vt 0.375000 0.750000 +vt 0.125000 1.000000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 1.0000 0.0000 +s 1 +f 25/49/13 26/50/13 27/51/13 +f 28/52/14 29/53/14 26/50/14 +f 30/54/15 31/55/15 29/53/15 +f 32/56/16 27/57/16 31/55/16 +f 29/58/17 27/59/17 26/60/17 +f 28/61/18 32/56/18 30/54/18 +f 33/62/15 34/63/15 35/64/15 +f 36/65/16 37/66/16 33/62/16 +f 38/67/13 39/68/13 36/65/13 +f 35/69/14 40/70/14 38/67/14 +f 35/71/18 36/72/18 33/73/18 +f 40/70/17 37/74/17 39/68/17 +f 25/49/13 28/52/13 26/50/13 +f 28/52/14 30/54/14 29/53/14 +f 30/54/15 32/56/15 31/55/15 +f 32/56/16 25/75/16 27/57/16 +f 29/58/17 31/76/17 27/59/17 +f 28/61/18 25/77/18 32/56/18 +f 33/62/15 37/66/15 34/63/15 +f 36/65/16 39/68/16 37/66/16 +f 38/67/13 40/70/13 39/68/13 +f 35/69/14 34/78/14 40/70/14 +f 35/71/18 38/79/18 36/72/18 +f 40/70/17 34/80/17 37/74/17 +o Torso +v 0.125000 -0.375000 -0.250000 +v 0.125000 0.375000 0.250000 +v 0.125000 -0.375000 0.250000 +v -0.125000 -0.375000 -0.250000 +v 0.125000 0.375000 -0.250000 +v -0.125000 -0.375000 0.250000 +v -0.125000 0.375000 -0.250000 +v -0.125000 0.375000 0.250000 +v 0.125000 0.375000 0.250000 +v 0.125000 -0.375000 -0.250000 +v 0.125000 -0.375000 0.250000 +v 0.125000 0.375000 -0.250000 +v -0.125000 -0.375000 -0.250000 +v -0.125000 0.375000 -0.250000 +v -0.125000 -0.375000 0.250000 +v -0.125000 0.375000 0.250000 +vt 0.312500 0.000000 +vt 0.437500 0.375000 +vt 0.437500 0.000000 +vt 0.500000 0.000000 +vt 0.437500 0.375000 +vt 0.437500 0.000000 +vt 0.625000 0.000000 +vt 0.500000 0.375000 +vt 0.312500 0.000000 +vt 0.250000 0.375000 +vt 0.250000 0.000000 +vt 0.437500 0.500000 +vt 0.562500 0.375000 +vt 0.562500 0.500000 +vt 0.312500 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.375000 +vt 0.312500 0.000000 +vt 0.437500 0.000000 +vt 0.437500 0.375000 +vt 0.500000 0.000000 +vt 0.437500 0.000000 +vt 0.500000 0.375000 +vt 0.625000 0.000000 +vt 0.250000 0.375000 +vt 0.312500 0.000000 +vt 0.250000 0.000000 +vt 0.562500 0.375000 +vt 0.437500 0.500000 +vt 0.562500 0.500000 +vt 0.312500 0.500000 +vt 0.437500 0.500000 +vt 0.312500 0.375000 +vt 0.625000 0.375000 +vt 0.312500 0.375000 +vt 0.437500 0.375000 +vt 0.312500 0.375000 +vt 0.625000 0.375000 +vt 0.312500 0.375000 +vt 0.437500 0.375000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s 1 +f 41/81/19 42/82/19 43/83/19 +f 44/84/20 45/85/20 41/86/20 +f 46/87/21 47/88/21 44/84/21 +f 43/89/22 48/90/22 46/91/22 +f 43/92/23 44/93/23 41/94/23 +f 48/95/24 45/85/24 47/96/24 +f 49/97/21 50/98/21 51/99/21 +f 52/100/22 53/101/22 50/102/22 +f 54/103/19 55/104/19 53/101/19 +f 56/105/20 51/106/20 55/107/20 +f 53/108/24 51/109/24 50/110/24 +f 52/100/23 56/111/23 54/112/23 +f 41/81/19 45/113/19 42/82/19 +f 44/84/20 47/88/20 45/85/20 +f 46/87/21 48/114/21 47/88/21 +f 43/89/22 42/115/22 48/90/22 +f 43/92/23 46/116/23 44/93/23 +f 48/95/24 42/115/24 45/85/24 +f 49/97/21 52/117/21 50/98/21 +f 52/100/22 54/103/22 53/101/22 +f 54/103/19 56/118/19 55/104/19 +f 56/105/20 49/119/20 51/106/20 +f 53/108/24 55/120/24 51/109/24 +f 52/100/23 49/119/23 56/111/23 diff --git a/src/main/resources/assets/hbm/models/machines/ammo_press.obj b/src/main/resources/assets/hbm/models/machines/ammo_press.obj new file mode 100644 index 000000000..b3a868e84 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/ammo_press.obj @@ -0,0 +1,2582 @@ +# Blender v2.79 (sub 0) OBJ File: 'ammo_press.blend' +# www.blender.org +o Press +v -0.250000 1.875000 -0.750000 +v -0.250000 1.875000 0.750000 +v 0.250000 1.875000 0.750000 +v 0.250000 1.875000 -0.750000 +v -0.250000 1.375000 -0.750000 +v -0.250000 1.375000 0.750000 +v 0.250000 1.375000 0.750000 +v 0.250000 1.375000 -0.750000 +vt 0.508772 0.857143 +vt 0.719298 0.761905 +vt 0.719298 0.857143 +vt 0.719298 0.666667 +vt 0.508772 0.761905 +vt 0.508772 0.666667 +vt 0.719298 0.571429 +vt 0.508772 0.571429 +vt 0.789474 0.761905 +vt 0.789474 0.666667 +vt 0.438596 0.666667 +vt 0.438596 0.761905 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +s off +f 3/1/1 8/2/1 4/3/1 +f 5/4/2 7/5/2 6/6/2 +f 1/7/3 6/6/3 2/8/3 +f 4/9/4 5/4/4 1/10/4 +f 2/11/5 7/5/5 3/12/5 +f 3/1/1 7/5/1 8/2/1 +f 5/4/2 8/2/2 7/5/2 +f 1/7/3 5/4/3 6/6/3 +f 4/9/4 8/2/4 5/4/4 +f 2/11/5 6/6/5 7/5/5 +o Shells +v 0.250000 1.000000 -0.750000 +v 0.250000 1.000000 0.750000 +v -0.250000 1.000000 0.750000 +v -0.250000 1.000000 -0.750000 +v 0.125000 1.000000 0.406250 +v 0.102903 1.000000 0.415403 +v 0.093750 1.000000 0.437500 +v 0.102903 1.000000 0.459597 +v 0.125000 1.000000 0.468750 +v 0.147097 1.000000 0.459597 +v 0.156250 1.000000 0.437500 +v 0.147097 1.000000 0.415403 +v 0.125000 1.125000 0.406250 +v 0.102903 1.125000 0.415403 +v 0.093750 1.125000 0.437500 +v 0.102903 1.125000 0.459597 +v 0.125000 1.125000 0.468750 +v 0.147097 1.125000 0.459597 +v 0.156250 1.125000 0.437500 +v 0.147097 1.125000 0.415403 +v 0.156250 1.000000 -0.468750 +v 0.156250 1.000000 0.468750 +v 0.156250 1.062500 -0.468750 +v 0.156250 1.062500 0.468750 +v 0.187500 1.000000 -0.468750 +v 0.187500 1.000000 0.468750 +v 0.187500 1.062500 -0.468750 +v 0.187500 1.062500 0.468750 +v 0.062500 1.000000 -0.468750 +v 0.062500 1.000000 0.468750 +v 0.062500 1.062500 -0.468750 +v 0.062500 1.062500 0.468750 +v 0.093750 1.000000 -0.468750 +v 0.093750 1.000000 0.468750 +v 0.093750 1.062500 -0.468750 +v 0.093750 1.062500 0.468750 +v -0.093750 1.000000 -0.468750 +v -0.093750 1.000000 0.468750 +v -0.093750 1.062500 -0.468750 +v -0.093750 1.062500 0.468750 +v -0.062500 1.000000 -0.468750 +v -0.062500 1.000000 0.468750 +v -0.062500 1.062500 -0.468750 +v -0.062500 1.062500 0.468750 +v -0.187500 1.000000 -0.468750 +v -0.187500 1.000000 0.468750 +v -0.187500 1.062500 -0.468750 +v -0.187500 1.062500 0.468750 +v -0.156250 1.000000 -0.468750 +v -0.156250 1.000000 0.468750 +v -0.156250 1.062500 -0.468750 +v -0.156250 1.062500 0.468750 +v -0.125000 1.000000 0.406250 +v -0.147097 1.000000 0.415403 +v -0.156250 1.000000 0.437500 +v -0.147097 1.000000 0.459597 +v -0.125000 1.000000 0.468750 +v -0.102903 1.000000 0.459597 +v -0.093750 1.000000 0.437500 +v -0.102903 1.000000 0.415403 +v -0.125000 1.125000 0.406250 +v -0.147097 1.125000 0.415403 +v -0.156250 1.125000 0.437500 +v -0.147097 1.125000 0.459597 +v -0.125000 1.125000 0.468750 +v -0.102903 1.125000 0.459597 +v -0.093750 1.125000 0.437500 +v -0.102903 1.125000 0.415403 +v 0.125000 1.000000 0.281250 +v 0.102903 1.000000 0.290403 +v 0.093750 1.000000 0.312500 +v 0.102903 1.000000 0.334597 +v 0.125000 1.000000 0.343750 +v 0.147097 1.000000 0.334597 +v 0.156250 1.000000 0.312500 +v 0.147097 1.000000 0.290403 +v 0.125000 1.125000 0.281250 +v 0.102903 1.125000 0.290403 +v 0.093750 1.125000 0.312500 +v 0.102903 1.125000 0.334597 +v 0.125000 1.125000 0.343750 +v 0.147097 1.125000 0.334597 +v 0.156250 1.125000 0.312500 +v 0.147097 1.125000 0.290403 +v -0.125000 1.000000 0.281250 +v -0.147097 1.000000 0.290403 +v -0.156250 1.000000 0.312500 +v -0.147097 1.000000 0.334597 +v -0.125000 1.000000 0.343750 +v -0.102903 1.000000 0.334597 +v -0.093750 1.000000 0.312500 +v -0.102903 1.000000 0.290403 +v -0.125000 1.125000 0.281250 +v -0.147097 1.125000 0.290403 +v -0.156250 1.125000 0.312500 +v -0.147097 1.125000 0.334597 +v -0.125000 1.125000 0.343750 +v -0.102903 1.125000 0.334597 +v -0.093750 1.125000 0.312500 +v -0.102903 1.125000 0.290403 +v 0.125000 1.000000 0.156250 +v 0.102903 1.000000 0.165403 +v 0.093750 1.000000 0.187500 +v 0.102903 1.000000 0.209597 +v 0.125000 1.000000 0.218750 +v 0.147097 1.000000 0.209597 +v 0.156250 1.000000 0.187500 +v 0.147097 1.000000 0.165403 +v 0.125000 1.125000 0.156250 +v 0.102903 1.125000 0.165403 +v 0.093750 1.125000 0.187500 +v 0.102903 1.125000 0.209597 +v 0.125000 1.125000 0.218750 +v 0.147097 1.125000 0.209597 +v 0.156250 1.125000 0.187500 +v 0.147097 1.125000 0.165403 +v -0.125000 1.000000 0.156250 +v -0.147097 1.000000 0.165403 +v -0.156250 1.000000 0.187500 +v -0.147097 1.000000 0.209597 +v -0.125000 1.000000 0.218750 +v -0.102903 1.000000 0.209597 +v -0.093750 1.000000 0.187500 +v -0.102903 1.000000 0.165403 +v -0.125000 1.125000 0.156250 +v -0.147097 1.125000 0.165403 +v -0.156250 1.125000 0.187500 +v -0.147097 1.125000 0.209597 +v -0.125000 1.125000 0.218750 +v -0.102903 1.125000 0.209597 +v -0.093750 1.125000 0.187500 +v -0.102903 1.125000 0.165403 +v 0.125000 1.000000 0.031250 +v 0.102903 1.000000 0.040403 +v 0.093750 1.000000 0.062500 +v 0.102903 1.000000 0.084597 +v 0.125000 1.000000 0.093750 +v 0.147097 1.000000 0.084597 +v 0.156250 1.000000 0.062500 +v 0.147097 1.000000 0.040403 +v 0.125000 1.125000 0.031250 +v 0.102903 1.125000 0.040403 +v 0.093750 1.125000 0.062500 +v 0.102903 1.125000 0.084597 +v 0.125000 1.125000 0.093750 +v 0.147097 1.125000 0.084597 +v 0.156250 1.125000 0.062500 +v 0.147097 1.125000 0.040403 +v -0.125000 1.000000 0.031250 +v -0.147097 1.000000 0.040403 +v -0.156250 1.000000 0.062500 +v -0.147097 1.000000 0.084597 +v -0.125000 1.000000 0.093750 +v -0.102903 1.000000 0.084597 +v -0.093750 1.000000 0.062500 +v -0.102903 1.000000 0.040403 +v -0.125000 1.125000 0.031250 +v -0.147097 1.125000 0.040403 +v -0.156250 1.125000 0.062500 +v -0.147097 1.125000 0.084597 +v -0.125000 1.125000 0.093750 +v -0.102903 1.125000 0.084597 +v -0.093750 1.125000 0.062500 +v -0.102903 1.125000 0.040403 +v 0.125000 1.000000 -0.093750 +v 0.102903 1.000000 -0.084597 +v 0.093750 1.000000 -0.062500 +v 0.102903 1.000000 -0.040403 +v 0.125000 1.000000 -0.031250 +v 0.147097 1.000000 -0.040403 +v 0.156250 1.000000 -0.062500 +v 0.147097 1.000000 -0.084597 +v 0.125000 1.125000 -0.093750 +v 0.102903 1.125000 -0.084597 +v 0.093750 1.125000 -0.062500 +v 0.102903 1.125000 -0.040403 +v 0.125000 1.125000 -0.031250 +v 0.147097 1.125000 -0.040403 +v 0.156250 1.125000 -0.062500 +v 0.147097 1.125000 -0.084597 +v -0.125000 1.000000 -0.093750 +v -0.147097 1.000000 -0.084597 +v -0.156250 1.000000 -0.062500 +v -0.147097 1.000000 -0.040403 +v -0.125000 1.000000 -0.031250 +v -0.102903 1.000000 -0.040403 +v -0.093750 1.000000 -0.062500 +v -0.102903 1.000000 -0.084597 +v -0.125000 1.125000 -0.093750 +v -0.147097 1.125000 -0.084597 +v -0.156250 1.125000 -0.062500 +v -0.147097 1.125000 -0.040403 +v -0.125000 1.125000 -0.031250 +v -0.102903 1.125000 -0.040403 +v -0.093750 1.125000 -0.062500 +v -0.102903 1.125000 -0.084597 +v 0.125000 1.000000 -0.218750 +v 0.102903 1.000000 -0.209597 +v 0.093750 1.000000 -0.187500 +v 0.102903 1.000000 -0.165403 +v 0.125000 1.000000 -0.156250 +v 0.147097 1.000000 -0.165403 +v 0.156250 1.000000 -0.187500 +v 0.147097 1.000000 -0.209597 +v 0.125000 1.125000 -0.218750 +v 0.102903 1.125000 -0.209597 +v 0.093750 1.125000 -0.187500 +v 0.102903 1.125000 -0.165403 +v 0.125000 1.125000 -0.156250 +v 0.147097 1.125000 -0.165403 +v 0.156250 1.125000 -0.187500 +v 0.147097 1.125000 -0.209597 +v -0.125000 1.000000 -0.218750 +v -0.147097 1.000000 -0.209597 +v -0.156250 1.000000 -0.187500 +v -0.147097 1.000000 -0.165403 +v -0.125000 1.000000 -0.156250 +v -0.102903 1.000000 -0.165403 +v -0.093750 1.000000 -0.187500 +v -0.102903 1.000000 -0.209597 +v -0.125000 1.125000 -0.218750 +v -0.147097 1.125000 -0.209597 +v -0.156250 1.125000 -0.187500 +v -0.147097 1.125000 -0.165403 +v -0.125000 1.125000 -0.156250 +v -0.102903 1.125000 -0.165403 +v -0.093750 1.125000 -0.187500 +v -0.102903 1.125000 -0.209597 +v 0.125000 1.000000 -0.343750 +v 0.102903 1.000000 -0.334597 +v 0.093750 1.000000 -0.312500 +v 0.102903 1.000000 -0.290403 +v 0.125000 1.000000 -0.281250 +v 0.147097 1.000000 -0.290403 +v 0.156250 1.000000 -0.312500 +v 0.147097 1.000000 -0.334597 +v 0.125000 1.125000 -0.343750 +v 0.102903 1.125000 -0.334597 +v 0.093750 1.125000 -0.312500 +v 0.102903 1.125000 -0.290403 +v 0.125000 1.125000 -0.281250 +v 0.147097 1.125000 -0.290403 +v 0.156250 1.125000 -0.312500 +v 0.147097 1.125000 -0.334597 +v -0.125000 1.000000 -0.343750 +v -0.147097 1.000000 -0.334597 +v -0.156250 1.000000 -0.312500 +v -0.147097 1.000000 -0.290403 +v -0.125000 1.000000 -0.281250 +v -0.102903 1.000000 -0.290403 +v -0.093750 1.000000 -0.312500 +v -0.102903 1.000000 -0.334597 +v -0.125000 1.125000 -0.343750 +v -0.147097 1.125000 -0.334597 +v -0.156250 1.125000 -0.312500 +v -0.147097 1.125000 -0.290403 +v -0.125000 1.125000 -0.281250 +v -0.102903 1.125000 -0.290403 +v -0.093750 1.125000 -0.312500 +v -0.102903 1.125000 -0.334597 +v 0.125000 1.000000 -0.468750 +v 0.102903 1.000000 -0.459597 +v 0.093750 1.000000 -0.437500 +v 0.102903 1.000000 -0.415403 +v 0.125000 1.000000 -0.406250 +v 0.147097 1.000000 -0.415403 +v 0.156250 1.000000 -0.437500 +v 0.147097 1.000000 -0.459597 +v 0.125000 1.125000 -0.468750 +v 0.102903 1.125000 -0.459597 +v 0.093750 1.125000 -0.437500 +v 0.102903 1.125000 -0.415403 +v 0.125000 1.125000 -0.406250 +v 0.147097 1.125000 -0.415403 +v 0.156250 1.125000 -0.437500 +v 0.147097 1.125000 -0.459597 +v -0.125000 1.000000 -0.468750 +v -0.147097 1.000000 -0.459597 +v -0.156250 1.000000 -0.437500 +v -0.147097 1.000000 -0.415403 +v -0.125000 1.000000 -0.406250 +v -0.102903 1.000000 -0.415403 +v -0.093750 1.000000 -0.437500 +v -0.102903 1.000000 -0.459597 +v -0.125000 1.125000 -0.468750 +v -0.147097 1.125000 -0.459597 +v -0.156250 1.125000 -0.437500 +v -0.147097 1.125000 -0.415403 +v -0.125000 1.125000 -0.406250 +v -0.102903 1.125000 -0.415403 +v -0.093750 1.125000 -0.437500 +v -0.102903 1.125000 -0.459597 +vt 0.333333 0.833333 +vt 0.122807 0.928571 +vt 0.122807 0.833333 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.728070 0.607143 +vt 0.859649 0.595238 +vt 0.859649 0.607143 +vt 0.868421 0.583333 +vt 0.868421 0.595238 +vt 0.719298 0.595238 +vt 0.728070 0.583333 +vt 0.728070 0.595238 +vt 0.859649 0.583333 +vt 0.859649 0.571429 +vt 0.728070 0.607143 +vt 0.859649 0.595238 +vt 0.859649 0.607143 +vt 0.868421 0.583333 +vt 0.868421 0.595238 +vt 0.719298 0.595238 +vt 0.728070 0.583333 +vt 0.728070 0.595238 +vt 0.859649 0.583333 +vt 0.859649 0.571429 +vt 0.728070 0.607143 +vt 0.859649 0.595238 +vt 0.859649 0.607143 +vt 0.868421 0.583333 +vt 0.868421 0.595238 +vt 0.719298 0.595238 +vt 0.728070 0.583333 +vt 0.728070 0.595238 +vt 0.859649 0.583333 +vt 0.859649 0.571429 +vt 0.728070 0.607143 +vt 0.859649 0.595238 +vt 0.859649 0.607143 +vt 0.868421 0.583333 +vt 0.868421 0.595238 +vt 0.719298 0.595238 +vt 0.728070 0.583333 +vt 0.728070 0.595238 +vt 0.859649 0.583333 +vt 0.859649 0.571429 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.868620 0.630952 +vt 0.877193 0.619317 +vt 0.885766 0.630952 +vt 0.333333 0.928571 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.719298 0.583333 +vt 0.728070 0.571429 +vt 0.719298 0.583333 +vt 0.728070 0.571429 +vt 0.719298 0.583333 +vt 0.728070 0.571429 +vt 0.719298 0.583333 +vt 0.728070 0.571429 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.883255 0.639180 +vt 0.877193 0.642588 +vt 0.871131 0.639180 +vt 0.871131 0.622725 +vt 0.883255 0.622725 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.894737 0.571429 +vt 0.885965 0.619048 +vt 0.885965 0.571429 +vt 0.877193 0.571429 +vt 0.868421 0.619048 +vt 0.868421 0.571429 +vt 0.929825 0.571429 +vt 0.921053 0.619048 +vt 0.921053 0.571429 +vt 0.912281 0.571429 +vt 0.903509 0.619048 +vt 0.903509 0.571429 +vt 0.894737 0.619048 +vt 0.877193 0.619048 +vt 0.938596 0.571429 +vt 0.929825 0.619048 +vt 0.912281 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vt 0.938596 0.619048 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +s off +f 9/13/6 11/14/6 10/15/6 +f 25/16/6 27/17/6 21/18/6 +f 30/19/7 31/20/7 29/21/7 +f 31/20/8 33/22/8 29/23/8 +f 30/24/9 36/25/9 32/26/9 +f 32/26/6 35/27/6 31/20/6 +f 36/25/10 33/28/10 35/27/10 +f 38/29/7 39/30/7 37/31/7 +f 39/30/8 41/32/8 37/33/8 +f 38/34/9 44/35/9 40/36/9 +f 40/36/6 43/37/6 39/30/6 +f 44/35/10 41/38/10 43/37/10 +f 46/39/7 47/40/7 45/41/7 +f 47/40/8 49/42/8 45/43/8 +f 46/44/9 52/45/9 48/46/9 +f 48/46/6 51/47/6 47/40/6 +f 52/45/10 49/48/10 51/47/10 +f 54/49/7 55/50/7 53/51/7 +f 55/50/8 57/52/8 53/53/8 +f 54/54/9 60/55/9 56/56/9 +f 56/56/6 59/57/6 55/50/6 +f 60/55/10 57/58/10 59/57/10 +f 73/59/6 75/60/6 69/61/6 +f 89/62/6 91/63/6 85/64/6 +f 105/65/6 107/66/6 101/67/6 +f 121/68/6 123/69/6 117/70/6 +f 137/71/6 139/72/6 133/73/6 +f 153/74/6 155/75/6 149/76/6 +f 169/77/6 171/78/6 165/79/6 +f 185/80/6 187/81/6 181/82/6 +f 201/83/6 203/84/6 197/85/6 +f 217/86/6 219/87/6 213/88/6 +f 233/89/6 235/90/6 229/91/6 +f 249/92/6 251/93/6 245/94/6 +f 265/95/6 267/96/6 261/97/6 +f 281/98/6 283/99/6 277/100/6 +f 297/101/6 299/102/6 293/103/6 +f 9/13/6 12/104/6 11/14/6 +f 21/18/6 22/105/6 23/106/6 +f 23/106/6 24/107/6 25/16/6 +f 25/16/6 26/108/6 27/17/6 +f 27/17/6 28/109/6 21/18/6 +f 21/18/6 23/106/6 25/16/6 +f 30/19/7 32/26/7 31/20/7 +f 31/20/8 35/27/8 33/22/8 +f 30/24/9 34/110/9 36/25/9 +f 32/26/6 36/25/6 35/27/6 +f 36/25/10 34/111/10 33/28/10 +f 38/29/7 40/36/7 39/30/7 +f 39/30/8 43/37/8 41/32/8 +f 38/34/9 42/112/9 44/35/9 +f 40/36/6 44/35/6 43/37/6 +f 44/35/10 42/113/10 41/38/10 +f 46/39/7 48/46/7 47/40/7 +f 47/40/8 51/47/8 49/42/8 +f 46/44/9 50/114/9 52/45/9 +f 48/46/6 52/45/6 51/47/6 +f 52/45/10 50/115/10 49/48/10 +f 54/49/7 56/56/7 55/50/7 +f 55/50/8 59/57/8 57/52/8 +f 54/54/9 58/116/9 60/55/9 +f 56/56/6 60/55/6 59/57/6 +f 60/55/10 58/117/10 57/58/10 +f 69/61/6 70/118/6 71/119/6 +f 71/119/6 72/120/6 73/59/6 +f 73/59/6 74/121/6 75/60/6 +f 75/60/6 76/122/6 69/61/6 +f 69/61/6 71/119/6 73/59/6 +f 85/64/6 86/123/6 87/124/6 +f 87/124/6 88/125/6 89/62/6 +f 89/62/6 90/126/6 91/63/6 +f 91/63/6 92/127/6 85/64/6 +f 85/64/6 87/124/6 89/62/6 +f 101/67/6 102/128/6 103/129/6 +f 103/129/6 104/130/6 105/65/6 +f 105/65/6 106/131/6 107/66/6 +f 107/66/6 108/132/6 101/67/6 +f 101/67/6 103/129/6 105/65/6 +f 117/70/6 118/133/6 119/134/6 +f 119/134/6 120/135/6 121/68/6 +f 121/68/6 122/136/6 123/69/6 +f 123/69/6 124/137/6 117/70/6 +f 117/70/6 119/134/6 121/68/6 +f 133/73/6 134/138/6 135/139/6 +f 135/139/6 136/140/6 137/71/6 +f 137/71/6 138/141/6 139/72/6 +f 139/72/6 140/142/6 133/73/6 +f 133/73/6 135/139/6 137/71/6 +f 149/76/6 150/143/6 151/144/6 +f 151/144/6 152/145/6 153/74/6 +f 153/74/6 154/146/6 155/75/6 +f 155/75/6 156/147/6 149/76/6 +f 149/76/6 151/144/6 153/74/6 +f 165/79/6 166/148/6 167/149/6 +f 167/149/6 168/150/6 169/77/6 +f 169/77/6 170/151/6 171/78/6 +f 171/78/6 172/152/6 165/79/6 +f 165/79/6 167/149/6 169/77/6 +f 181/82/6 182/153/6 183/154/6 +f 183/154/6 184/155/6 185/80/6 +f 185/80/6 186/156/6 187/81/6 +f 187/81/6 188/157/6 181/82/6 +f 181/82/6 183/154/6 185/80/6 +f 197/85/6 198/158/6 199/159/6 +f 199/159/6 200/160/6 201/83/6 +f 201/83/6 202/161/6 203/84/6 +f 203/84/6 204/162/6 197/85/6 +f 197/85/6 199/159/6 201/83/6 +f 213/88/6 214/163/6 215/164/6 +f 215/164/6 216/165/6 217/86/6 +f 217/86/6 218/166/6 219/87/6 +f 219/87/6 220/167/6 213/88/6 +f 213/88/6 215/164/6 217/86/6 +f 229/91/6 230/168/6 231/169/6 +f 231/169/6 232/170/6 233/89/6 +f 233/89/6 234/171/6 235/90/6 +f 235/90/6 236/172/6 229/91/6 +f 229/91/6 231/169/6 233/89/6 +f 245/94/6 246/173/6 247/174/6 +f 247/174/6 248/175/6 249/92/6 +f 249/92/6 250/176/6 251/93/6 +f 251/93/6 252/177/6 245/94/6 +f 245/94/6 247/174/6 249/92/6 +f 261/97/6 262/178/6 263/179/6 +f 263/179/6 264/180/6 265/95/6 +f 265/95/6 266/181/6 267/96/6 +f 267/96/6 268/182/6 261/97/6 +f 261/97/6 263/179/6 265/95/6 +f 277/100/6 278/183/6 279/184/6 +f 279/184/6 280/185/6 281/98/6 +f 281/98/6 282/186/6 283/99/6 +f 283/99/6 284/187/6 277/100/6 +f 277/100/6 279/184/6 281/98/6 +f 293/103/6 294/188/6 295/189/6 +f 295/189/6 296/190/6 297/101/6 +f 297/101/6 298/191/6 299/102/6 +f 299/102/6 300/192/6 293/103/6 +f 293/103/6 295/189/6 297/101/6 +s 1 +f 20/193/11 27/194/10 19/195/10 +f 18/196/12 25/197/9 17/198/9 +f 16/199/13 23/200/7 15/201/7 +f 14/202/14 21/203/8 13/204/8 +f 13/204/8 28/205/11 20/193/11 +f 19/195/10 26/206/12 18/196/12 +f 17/207/9 24/208/13 16/199/13 +f 15/201/7 22/209/14 14/202/14 +f 68/210/11 75/211/10 67/212/10 +f 66/213/12 73/214/9 65/215/9 +f 64/216/13 71/217/7 63/218/7 +f 62/219/14 69/220/8 61/221/8 +f 61/221/8 76/222/11 68/210/11 +f 67/212/10 74/223/12 66/213/12 +f 65/224/9 72/225/13 64/216/13 +f 63/218/7 70/226/14 62/219/14 +f 84/227/11 91/228/10 83/229/10 +f 82/230/12 89/231/9 81/232/9 +f 80/233/13 87/234/7 79/235/7 +f 78/236/14 85/237/8 77/238/8 +f 77/238/8 92/239/11 84/227/11 +f 83/229/10 90/240/12 82/230/12 +f 81/241/9 88/242/13 80/233/13 +f 79/235/7 86/243/14 78/236/14 +f 100/244/11 107/245/10 99/246/10 +f 98/247/12 105/248/9 97/249/9 +f 96/250/13 103/251/7 95/252/7 +f 94/253/14 101/254/8 93/255/8 +f 93/255/8 108/256/11 100/244/11 +f 99/246/10 106/257/12 98/247/12 +f 97/258/9 104/259/13 96/250/13 +f 95/252/7 102/260/14 94/253/14 +f 116/261/11 123/262/10 115/263/10 +f 114/264/12 121/265/9 113/266/9 +f 112/267/13 119/268/7 111/269/7 +f 110/270/14 117/271/8 109/272/8 +f 109/272/8 124/273/11 116/261/11 +f 115/263/10 122/274/12 114/264/12 +f 113/275/9 120/276/13 112/267/13 +f 111/269/7 118/277/14 110/270/14 +f 132/278/11 139/279/10 131/280/10 +f 130/281/12 137/282/9 129/283/9 +f 128/284/13 135/285/7 127/286/7 +f 126/287/14 133/288/8 125/289/8 +f 125/289/8 140/290/11 132/278/11 +f 131/280/10 138/291/12 130/281/12 +f 129/292/9 136/293/13 128/284/13 +f 127/286/7 134/294/14 126/287/14 +f 148/295/11 155/296/10 147/297/10 +f 146/298/12 153/299/9 145/300/9 +f 144/301/13 151/302/7 143/303/7 +f 142/304/14 149/305/8 141/306/8 +f 141/306/8 156/307/11 148/295/11 +f 147/297/10 154/308/12 146/298/12 +f 145/309/9 152/310/13 144/301/13 +f 143/303/7 150/311/14 142/304/14 +f 164/312/11 171/313/10 163/314/10 +f 162/315/12 169/316/9 161/317/9 +f 160/318/13 167/319/7 159/320/7 +f 158/321/14 165/322/8 157/323/8 +f 157/323/8 172/324/11 164/312/11 +f 163/314/10 170/325/12 162/315/12 +f 161/326/9 168/327/13 160/318/13 +f 159/320/7 166/328/14 158/321/14 +f 180/329/11 187/330/10 179/331/10 +f 178/332/12 185/333/9 177/334/9 +f 176/335/13 183/336/7 175/337/7 +f 174/338/14 181/339/8 173/340/8 +f 173/340/8 188/341/11 180/329/11 +f 179/331/10 186/342/12 178/332/12 +f 177/343/9 184/344/13 176/335/13 +f 175/337/7 182/345/14 174/338/14 +f 196/346/11 203/347/10 195/348/10 +f 194/349/12 201/350/9 193/351/9 +f 192/352/13 199/353/7 191/354/7 +f 190/355/14 197/356/8 189/357/8 +f 189/357/8 204/358/11 196/346/11 +f 195/348/10 202/359/12 194/349/12 +f 193/360/9 200/361/13 192/352/13 +f 191/354/7 198/362/14 190/355/14 +f 212/363/11 219/364/10 211/365/10 +f 210/366/12 217/367/9 209/368/9 +f 208/369/13 215/370/7 207/371/7 +f 206/372/14 213/373/8 205/374/8 +f 205/374/8 220/375/11 212/363/11 +f 211/365/10 218/376/12 210/366/12 +f 209/377/9 216/378/13 208/369/13 +f 207/371/7 214/379/14 206/372/14 +f 228/380/11 235/381/10 227/382/10 +f 226/383/12 233/384/9 225/385/9 +f 224/386/13 231/387/7 223/388/7 +f 222/389/14 229/390/8 221/391/8 +f 221/391/8 236/392/11 228/380/11 +f 227/382/10 234/393/12 226/383/12 +f 225/394/9 232/395/13 224/386/13 +f 223/388/7 230/396/14 222/389/14 +f 244/397/11 251/398/10 243/399/10 +f 242/400/12 249/401/9 241/402/9 +f 240/403/13 247/404/7 239/405/7 +f 238/406/14 245/407/8 237/408/8 +f 237/408/8 252/409/11 244/397/11 +f 243/399/10 250/410/12 242/400/12 +f 241/411/9 248/412/13 240/403/13 +f 239/405/7 246/413/14 238/406/14 +f 260/414/11 267/415/10 259/416/10 +f 258/417/12 265/418/9 257/419/9 +f 256/420/13 263/421/7 255/422/7 +f 254/423/14 261/424/8 253/425/8 +f 253/425/8 268/426/11 260/414/11 +f 259/416/10 266/427/12 258/417/12 +f 257/428/9 264/429/13 256/420/13 +f 255/422/7 262/430/14 254/423/14 +f 276/431/11 283/432/10 275/433/10 +f 274/434/12 281/435/9 273/436/9 +f 272/437/13 279/438/7 271/439/7 +f 270/440/14 277/441/8 269/442/8 +f 269/442/8 284/443/11 276/431/11 +f 275/433/10 282/444/12 274/434/12 +f 273/445/9 280/446/13 272/437/13 +f 271/439/7 278/447/14 270/440/14 +f 292/448/11 299/449/10 291/450/10 +f 290/451/12 297/452/9 289/453/9 +f 288/454/13 295/455/7 287/456/7 +f 286/457/14 293/458/8 285/459/8 +f 285/459/8 300/460/11 292/448/11 +f 291/450/10 298/461/12 290/451/12 +f 289/462/9 296/463/13 288/454/13 +f 287/456/7 294/464/14 286/457/14 +f 20/193/11 28/205/11 27/194/10 +f 18/196/12 26/206/12 25/197/9 +f 16/199/13 24/208/13 23/200/7 +f 14/202/14 22/209/14 21/203/8 +f 13/204/8 21/203/8 28/205/11 +f 19/195/10 27/194/10 26/206/12 +f 17/207/9 25/465/9 24/208/13 +f 15/201/7 23/200/7 22/209/14 +f 68/210/11 76/222/11 75/211/10 +f 66/213/12 74/223/12 73/214/9 +f 64/216/13 72/225/13 71/217/7 +f 62/219/14 70/226/14 69/220/8 +f 61/221/8 69/220/8 76/222/11 +f 67/212/10 75/211/10 74/223/12 +f 65/224/9 73/466/9 72/225/13 +f 63/218/7 71/217/7 70/226/14 +f 84/227/11 92/239/11 91/228/10 +f 82/230/12 90/240/12 89/231/9 +f 80/233/13 88/242/13 87/234/7 +f 78/236/14 86/243/14 85/237/8 +f 77/238/8 85/237/8 92/239/11 +f 83/229/10 91/228/10 90/240/12 +f 81/241/9 89/467/9 88/242/13 +f 79/235/7 87/234/7 86/243/14 +f 100/244/11 108/256/11 107/245/10 +f 98/247/12 106/257/12 105/248/9 +f 96/250/13 104/259/13 103/251/7 +f 94/253/14 102/260/14 101/254/8 +f 93/255/8 101/254/8 108/256/11 +f 99/246/10 107/245/10 106/257/12 +f 97/258/9 105/468/9 104/259/13 +f 95/252/7 103/251/7 102/260/14 +f 116/261/11 124/273/11 123/262/10 +f 114/264/12 122/274/12 121/265/9 +f 112/267/13 120/276/13 119/268/7 +f 110/270/14 118/277/14 117/271/8 +f 109/272/8 117/271/8 124/273/11 +f 115/263/10 123/262/10 122/274/12 +f 113/275/9 121/469/9 120/276/13 +f 111/269/7 119/268/7 118/277/14 +f 132/278/11 140/290/11 139/279/10 +f 130/281/12 138/291/12 137/282/9 +f 128/284/13 136/293/13 135/285/7 +f 126/287/14 134/294/14 133/288/8 +f 125/289/8 133/288/8 140/290/11 +f 131/280/10 139/279/10 138/291/12 +f 129/292/9 137/470/9 136/293/13 +f 127/286/7 135/285/7 134/294/14 +f 148/295/11 156/307/11 155/296/10 +f 146/298/12 154/308/12 153/299/9 +f 144/301/13 152/310/13 151/302/7 +f 142/304/14 150/311/14 149/305/8 +f 141/306/8 149/305/8 156/307/11 +f 147/297/10 155/296/10 154/308/12 +f 145/309/9 153/471/9 152/310/13 +f 143/303/7 151/302/7 150/311/14 +f 164/312/11 172/324/11 171/313/10 +f 162/315/12 170/325/12 169/316/9 +f 160/318/13 168/327/13 167/319/7 +f 158/321/14 166/328/14 165/322/8 +f 157/323/8 165/322/8 172/324/11 +f 163/314/10 171/313/10 170/325/12 +f 161/326/9 169/472/9 168/327/13 +f 159/320/7 167/319/7 166/328/14 +f 180/329/11 188/341/11 187/330/10 +f 178/332/12 186/342/12 185/333/9 +f 176/335/13 184/344/13 183/336/7 +f 174/338/14 182/345/14 181/339/8 +f 173/340/8 181/339/8 188/341/11 +f 179/331/10 187/330/10 186/342/12 +f 177/343/9 185/473/9 184/344/13 +f 175/337/7 183/336/7 182/345/14 +f 196/346/11 204/358/11 203/347/10 +f 194/349/12 202/359/12 201/350/9 +f 192/352/13 200/361/13 199/353/7 +f 190/355/14 198/362/14 197/356/8 +f 189/357/8 197/356/8 204/358/11 +f 195/348/10 203/347/10 202/359/12 +f 193/360/9 201/474/9 200/361/13 +f 191/354/7 199/353/7 198/362/14 +f 212/363/11 220/375/11 219/364/10 +f 210/366/12 218/376/12 217/367/9 +f 208/369/13 216/378/13 215/370/7 +f 206/372/14 214/379/14 213/373/8 +f 205/374/8 213/373/8 220/375/11 +f 211/365/10 219/364/10 218/376/12 +f 209/377/9 217/475/9 216/378/13 +f 207/371/7 215/370/7 214/379/14 +f 228/380/11 236/392/11 235/381/10 +f 226/383/12 234/393/12 233/384/9 +f 224/386/13 232/395/13 231/387/7 +f 222/389/14 230/396/14 229/390/8 +f 221/391/8 229/390/8 236/392/11 +f 227/382/10 235/381/10 234/393/12 +f 225/394/9 233/476/9 232/395/13 +f 223/388/7 231/387/7 230/396/14 +f 244/397/11 252/409/11 251/398/10 +f 242/400/12 250/410/12 249/401/9 +f 240/403/13 248/412/13 247/404/7 +f 238/406/14 246/413/14 245/407/8 +f 237/408/8 245/407/8 252/409/11 +f 243/399/10 251/398/10 250/410/12 +f 241/411/9 249/477/9 248/412/13 +f 239/405/7 247/404/7 246/413/14 +f 260/414/11 268/426/11 267/415/10 +f 258/417/12 266/427/12 265/418/9 +f 256/420/13 264/429/13 263/421/7 +f 254/423/14 262/430/14 261/424/8 +f 253/425/8 261/424/8 268/426/11 +f 259/416/10 267/415/10 266/427/12 +f 257/428/9 265/478/9 264/429/13 +f 255/422/7 263/421/7 262/430/14 +f 276/431/11 284/443/11 283/432/10 +f 274/434/12 282/444/12 281/435/9 +f 272/437/13 280/446/13 279/438/7 +f 270/440/14 278/447/14 277/441/8 +f 269/442/8 277/441/8 284/443/11 +f 275/433/10 283/432/10 282/444/12 +f 273/445/9 281/479/9 280/446/13 +f 271/439/7 279/438/7 278/447/14 +f 292/448/11 300/460/11 299/449/10 +f 290/451/12 298/461/12 297/452/9 +f 288/454/13 296/463/13 295/455/7 +f 286/457/14 294/464/14 293/458/8 +f 285/459/8 293/458/8 300/460/11 +f 291/450/10 299/449/10 298/461/12 +f 289/462/9 297/480/9 296/463/13 +f 287/456/7 295/455/7 294/464/14 +o Bullets +v 0.125000 1.125000 0.414062 +v 0.108427 1.125000 0.420927 +v 0.101562 1.125000 0.437500 +v 0.108427 1.125000 0.454073 +v 0.125000 1.125000 0.460938 +v 0.141573 1.125000 0.454073 +v 0.148438 1.125000 0.437500 +v 0.141573 1.125000 0.420927 +v 0.125000 1.187500 0.437500 +v 0.141573 1.156250 0.454073 +v 0.125000 1.156250 0.460938 +v 0.108427 1.156250 0.454073 +v 0.101562 1.156250 0.437500 +v 0.108427 1.156250 0.420927 +v 0.125000 1.156250 0.414062 +v 0.141573 1.156250 0.420927 +v 0.148438 1.156250 0.437500 +v -0.125000 1.125000 0.414062 +v -0.141573 1.125000 0.420927 +v -0.148438 1.125000 0.437500 +v -0.141573 1.125000 0.454073 +v -0.125000 1.125000 0.460938 +v -0.108427 1.125000 0.454073 +v -0.101562 1.125000 0.437500 +v -0.108427 1.125000 0.420927 +v -0.125000 1.187500 0.437500 +v -0.108427 1.156250 0.454073 +v -0.125000 1.156250 0.460938 +v -0.141573 1.156250 0.454073 +v -0.148438 1.156250 0.437500 +v -0.141573 1.156250 0.420927 +v -0.125000 1.156250 0.414062 +v -0.108427 1.156250 0.420927 +v -0.101562 1.156250 0.437500 +v 0.125000 1.125000 0.289062 +v 0.108427 1.125000 0.295927 +v 0.101562 1.125000 0.312500 +v 0.108427 1.125000 0.329073 +v 0.125000 1.125000 0.335938 +v 0.141573 1.125000 0.329073 +v 0.148438 1.125000 0.312500 +v 0.141573 1.125000 0.295927 +v 0.125000 1.187500 0.312500 +v 0.141573 1.156250 0.329073 +v 0.125000 1.156250 0.335938 +v 0.108427 1.156250 0.329073 +v 0.101562 1.156250 0.312500 +v 0.108427 1.156250 0.295927 +v 0.125000 1.156250 0.289062 +v 0.141573 1.156250 0.295927 +v 0.148438 1.156250 0.312500 +v -0.125000 1.125000 0.289062 +v -0.141573 1.125000 0.295927 +v -0.148438 1.125000 0.312500 +v -0.141573 1.125000 0.329073 +v -0.125000 1.125000 0.335938 +v -0.108427 1.125000 0.329073 +v -0.101562 1.125000 0.312500 +v -0.108427 1.125000 0.295927 +v -0.125000 1.187500 0.312500 +v -0.108427 1.156250 0.329073 +v -0.125000 1.156250 0.335938 +v -0.141573 1.156250 0.329073 +v -0.148438 1.156250 0.312500 +v -0.141573 1.156250 0.295927 +v -0.125000 1.156250 0.289062 +v -0.108427 1.156250 0.295927 +v -0.101562 1.156250 0.312500 +v 0.125000 1.125000 0.164062 +v 0.108427 1.125000 0.170927 +v 0.101562 1.125000 0.187500 +v 0.108427 1.125000 0.204073 +v 0.125000 1.125000 0.210938 +v 0.141573 1.125000 0.204073 +v 0.148438 1.125000 0.187500 +v 0.141573 1.125000 0.170927 +v 0.125000 1.187500 0.187500 +v 0.141573 1.156250 0.204073 +v 0.125000 1.156250 0.210938 +v 0.108427 1.156250 0.204073 +v 0.101562 1.156250 0.187500 +v 0.108427 1.156250 0.170927 +v 0.125000 1.156250 0.164062 +v 0.141573 1.156250 0.170927 +v 0.148438 1.156250 0.187500 +v -0.125000 1.125000 0.164062 +v -0.141573 1.125000 0.170927 +v -0.148438 1.125000 0.187500 +v -0.141573 1.125000 0.204073 +v -0.125000 1.125000 0.210938 +v -0.108427 1.125000 0.204073 +v -0.101562 1.125000 0.187500 +v -0.108427 1.125000 0.170927 +v -0.125000 1.187500 0.187500 +v -0.108427 1.156250 0.204073 +v -0.125000 1.156250 0.210938 +v -0.141573 1.156250 0.204073 +v -0.148438 1.156250 0.187500 +v -0.141573 1.156250 0.170927 +v -0.125000 1.156250 0.164062 +v -0.108427 1.156250 0.170927 +v -0.101562 1.156250 0.187500 +v 0.125000 1.125000 0.039062 +v 0.108427 1.125000 0.045927 +v 0.101562 1.125000 0.062500 +v 0.108427 1.125000 0.079073 +v 0.125000 1.125000 0.085938 +v 0.141573 1.125000 0.079073 +v 0.148438 1.125000 0.062500 +v 0.141573 1.125000 0.045927 +v 0.125000 1.187500 0.062500 +v 0.141573 1.156250 0.079073 +v 0.125000 1.156250 0.085938 +v 0.108427 1.156250 0.079073 +v 0.101562 1.156250 0.062500 +v 0.108427 1.156250 0.045927 +v 0.125000 1.156250 0.039062 +v 0.141573 1.156250 0.045927 +v 0.148438 1.156250 0.062500 +v -0.125000 1.125000 0.039062 +v -0.141573 1.125000 0.045927 +v -0.148438 1.125000 0.062500 +v -0.141573 1.125000 0.079073 +v -0.125000 1.125000 0.085938 +v -0.108427 1.125000 0.079073 +v -0.101562 1.125000 0.062500 +v -0.108427 1.125000 0.045927 +v -0.125000 1.187500 0.062500 +v -0.108427 1.156250 0.079073 +v -0.125000 1.156250 0.085938 +v -0.141573 1.156250 0.079073 +v -0.148438 1.156250 0.062500 +v -0.141573 1.156250 0.045927 +v -0.125000 1.156250 0.039062 +v -0.108427 1.156250 0.045927 +v -0.101562 1.156250 0.062500 +v 0.125000 1.125000 -0.085938 +v 0.108427 1.125000 -0.079073 +v 0.101562 1.125000 -0.062500 +v 0.108427 1.125000 -0.045927 +v 0.125000 1.125000 -0.039062 +v 0.141573 1.125000 -0.045927 +v 0.148438 1.125000 -0.062500 +v 0.141573 1.125000 -0.079073 +v 0.125000 1.187500 -0.062500 +v 0.141573 1.156250 -0.045927 +v 0.125000 1.156250 -0.039062 +v 0.108427 1.156250 -0.045927 +v 0.101562 1.156250 -0.062500 +v 0.108427 1.156250 -0.079073 +v 0.125000 1.156250 -0.085938 +v 0.141573 1.156250 -0.079073 +v 0.148438 1.156250 -0.062500 +v -0.125000 1.125000 -0.085938 +v -0.141573 1.125000 -0.079073 +v -0.148438 1.125000 -0.062500 +v -0.141573 1.125000 -0.045927 +v -0.125000 1.125000 -0.039062 +v -0.108427 1.125000 -0.045927 +v -0.101562 1.125000 -0.062500 +v -0.108427 1.125000 -0.079073 +v -0.125000 1.187500 -0.062500 +v -0.108427 1.156250 -0.045927 +v -0.125000 1.156250 -0.039062 +v -0.141573 1.156250 -0.045927 +v -0.148438 1.156250 -0.062500 +v -0.141573 1.156250 -0.079073 +v -0.125000 1.156250 -0.085938 +v -0.108427 1.156250 -0.079073 +v -0.101562 1.156250 -0.062500 +v 0.125000 1.125000 -0.210938 +v 0.108427 1.125000 -0.204073 +v 0.101562 1.125000 -0.187500 +v 0.108427 1.125000 -0.170927 +v 0.125000 1.125000 -0.164062 +v 0.141573 1.125000 -0.170927 +v 0.148438 1.125000 -0.187500 +v 0.141573 1.125000 -0.204073 +v 0.125000 1.187500 -0.187500 +v 0.141573 1.156250 -0.170927 +v 0.125000 1.156250 -0.164062 +v 0.108427 1.156250 -0.170927 +v 0.101562 1.156250 -0.187500 +v 0.108427 1.156250 -0.204073 +v 0.125000 1.156250 -0.210938 +v 0.141573 1.156250 -0.204073 +v 0.148438 1.156250 -0.187500 +v -0.125000 1.125000 -0.210938 +v -0.141573 1.125000 -0.204073 +v -0.148438 1.125000 -0.187500 +v -0.141573 1.125000 -0.170927 +v -0.125000 1.125000 -0.164062 +v -0.108427 1.125000 -0.170927 +v -0.101562 1.125000 -0.187500 +v -0.108427 1.125000 -0.204073 +v -0.125000 1.187500 -0.187500 +v -0.108427 1.156250 -0.170927 +v -0.125000 1.156250 -0.164062 +v -0.141573 1.156250 -0.170927 +v -0.148438 1.156250 -0.187500 +v -0.141573 1.156250 -0.204073 +v -0.125000 1.156250 -0.210938 +v -0.108427 1.156250 -0.204073 +v -0.101562 1.156250 -0.187500 +v 0.125000 1.125000 -0.335938 +v 0.108427 1.125000 -0.329073 +v 0.101562 1.125000 -0.312500 +v 0.108427 1.125000 -0.295927 +v 0.125000 1.125000 -0.289062 +v 0.141573 1.125000 -0.295927 +v 0.148438 1.125000 -0.312500 +v 0.141573 1.125000 -0.329073 +v 0.125000 1.187500 -0.312500 +v 0.141573 1.156250 -0.295927 +v 0.125000 1.156250 -0.289062 +v 0.108427 1.156250 -0.295927 +v 0.101562 1.156250 -0.312500 +v 0.108427 1.156250 -0.329073 +v 0.125000 1.156250 -0.335938 +v 0.141573 1.156250 -0.329073 +v 0.148438 1.156250 -0.312500 +v -0.125000 1.125000 -0.335938 +v -0.141573 1.125000 -0.329073 +v -0.148438 1.125000 -0.312500 +v -0.141573 1.125000 -0.295927 +v -0.125000 1.125000 -0.289062 +v -0.108427 1.125000 -0.295927 +v -0.101562 1.125000 -0.312500 +v -0.108427 1.125000 -0.329073 +v -0.125000 1.187500 -0.312500 +v -0.108427 1.156250 -0.295927 +v -0.125000 1.156250 -0.289062 +v -0.141573 1.156250 -0.295927 +v -0.148438 1.156250 -0.312500 +v -0.141573 1.156250 -0.329073 +v -0.125000 1.156250 -0.335938 +v -0.108427 1.156250 -0.329073 +v -0.101562 1.156250 -0.312500 +v 0.125000 1.125000 -0.460938 +v 0.108427 1.125000 -0.454073 +v 0.101562 1.125000 -0.437500 +v 0.108427 1.125000 -0.420927 +v 0.125000 1.125000 -0.414062 +v 0.141573 1.125000 -0.420927 +v 0.148438 1.125000 -0.437500 +v 0.141573 1.125000 -0.454073 +v 0.125000 1.187500 -0.437500 +v 0.141573 1.156250 -0.420927 +v 0.125000 1.156250 -0.414062 +v 0.108427 1.156250 -0.420927 +v 0.101562 1.156250 -0.437500 +v 0.108427 1.156250 -0.454073 +v 0.125000 1.156250 -0.460938 +v 0.141573 1.156250 -0.454073 +v 0.148438 1.156250 -0.437500 +v -0.125000 1.125000 -0.460938 +v -0.141573 1.125000 -0.454073 +v -0.148438 1.125000 -0.437500 +v -0.141573 1.125000 -0.420927 +v -0.125000 1.125000 -0.414062 +v -0.108427 1.125000 -0.420927 +v -0.101562 1.125000 -0.437500 +v -0.108427 1.125000 -0.454073 +v -0.125000 1.187500 -0.437500 +v -0.108427 1.156250 -0.420927 +v -0.125000 1.156250 -0.414062 +v -0.141573 1.156250 -0.420927 +v -0.148438 1.156250 -0.437500 +v -0.141573 1.156250 -0.454073 +v -0.125000 1.156250 -0.460938 +v -0.108427 1.156250 -0.454073 +v -0.101562 1.156250 -0.437500 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vt 0.894737 0.642857 +vt 0.885965 0.654762 +vt 0.885965 0.642857 +vt 0.877193 0.666667 +vt 0.877193 0.654762 +vt 0.929825 0.666667 +vt 0.929825 0.654762 +vt 0.938596 0.654762 +vt 0.912281 0.666667 +vt 0.912281 0.654762 +vt 0.921053 0.654762 +vt 0.885965 0.666667 +vt 0.894737 0.654762 +vt 0.868421 0.666667 +vt 0.868421 0.654762 +vt 0.921053 0.666667 +vt 0.894737 0.666667 +vt 0.903509 0.654762 +vt 0.921053 0.642857 +vt 0.912281 0.642857 +vt 0.938596 0.642857 +vt 0.929825 0.642857 +vt 0.877193 0.642857 +vt 0.903509 0.642857 +vt 0.868421 0.642857 +vt 0.903509 0.666667 +vn 0.7071 0.0000 -0.7071 +vn 0.9554 0.2952 -0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.0000 1.0000 -0.0000 +vn 0.6756 0.2952 0.6756 +vn -0.6756 0.2952 0.6756 +vn 0.0000 0.2952 0.9554 +vn -0.6756 0.2952 -0.6756 +vn -0.9554 0.2952 -0.0000 +vn 0.6756 0.2952 -0.6756 +vn -0.0000 0.2952 -0.9554 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn -0.0000 0.0000 1.0000 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.0000 0.0000 -1.0000 +s 1 +f 308/481/15 317/482/16 307/483/17 +f 317/482/16 309/484/18 310/485/19 +f 309/486/18 312/487/20 311/488/21 +f 309/489/18 314/490/22 313/491/23 +f 309/492/18 317/482/16 316/493/24 +f 310/485/19 309/494/18 311/495/21 +f 312/487/20 309/496/18 313/491/23 +f 309/497/18 316/493/24 315/498/25 +f 303/499/26 314/490/22 302/500/27 +f 305/501/28 312/487/20 304/502/29 +f 307/483/17 310/485/19 306/503/30 +f 301/504/31 316/493/24 308/481/15 +f 302/500/27 315/498/25 301/504/31 +f 304/502/29 313/491/23 303/499/26 +f 306/503/30 311/495/21 305/505/28 +f 314/490/22 309/506/18 315/498/25 +f 325/507/15 334/508/16 324/509/17 +f 334/508/16 326/510/18 327/511/19 +f 326/512/18 329/513/20 328/514/21 +f 326/515/18 331/516/22 330/517/23 +f 326/518/18 334/508/16 333/519/24 +f 327/511/19 326/520/18 328/521/21 +f 329/513/20 326/522/18 330/517/23 +f 326/523/18 333/519/24 332/524/25 +f 320/525/26 331/516/22 319/526/27 +f 322/527/28 329/513/20 321/528/29 +f 324/509/17 327/511/19 323/529/30 +f 318/530/31 333/519/24 325/507/15 +f 319/526/27 332/524/25 318/530/31 +f 321/528/29 330/517/23 320/525/26 +f 323/529/30 328/521/21 322/531/28 +f 331/516/22 326/532/18 332/524/25 +f 342/533/15 351/534/16 341/535/17 +f 351/534/16 343/536/18 344/537/19 +f 343/538/18 346/539/20 345/540/21 +f 343/541/18 348/542/22 347/543/23 +f 343/544/18 351/534/16 350/545/24 +f 344/537/19 343/546/18 345/547/21 +f 346/539/20 343/548/18 347/543/23 +f 343/549/18 350/545/24 349/550/25 +f 337/551/26 348/542/22 336/552/27 +f 339/553/28 346/539/20 338/554/29 +f 341/535/17 344/537/19 340/555/30 +f 335/556/31 350/545/24 342/533/15 +f 336/552/27 349/550/25 335/556/31 +f 338/554/29 347/543/23 337/551/26 +f 340/555/30 345/547/21 339/557/28 +f 348/542/22 343/558/18 349/550/25 +f 359/559/15 368/560/16 358/561/17 +f 368/560/16 360/562/18 361/563/19 +f 360/564/18 363/565/20 362/566/21 +f 360/567/18 365/568/22 364/569/23 +f 360/570/18 368/560/16 367/571/24 +f 361/563/19 360/572/18 362/573/21 +f 363/565/20 360/574/18 364/569/23 +f 360/575/18 367/571/24 366/576/25 +f 354/577/26 365/568/22 353/578/27 +f 356/579/28 363/565/20 355/580/29 +f 358/561/17 361/563/19 357/581/30 +f 352/582/31 367/571/24 359/559/15 +f 353/578/27 366/576/25 352/582/31 +f 355/580/29 364/569/23 354/577/26 +f 357/581/30 362/573/21 356/583/28 +f 365/568/22 360/584/18 366/576/25 +f 376/585/15 385/586/16 375/587/17 +f 385/586/16 377/588/18 378/589/19 +f 377/590/18 380/591/20 379/592/21 +f 377/593/18 382/594/22 381/595/23 +f 377/596/18 385/586/16 384/597/24 +f 378/589/19 377/598/18 379/599/21 +f 380/591/20 377/600/18 381/595/23 +f 377/601/18 384/597/24 383/602/25 +f 371/603/26 382/594/22 370/604/27 +f 373/605/28 380/591/20 372/606/29 +f 375/587/17 378/589/19 374/607/30 +f 369/608/31 384/597/24 376/585/15 +f 370/604/27 383/602/25 369/608/31 +f 372/606/29 381/595/23 371/603/26 +f 374/607/30 379/599/21 373/609/28 +f 382/594/22 377/610/18 383/602/25 +f 393/611/15 402/612/16 392/613/17 +f 402/612/16 394/614/18 395/615/19 +f 394/616/18 397/617/20 396/618/21 +f 394/619/18 399/620/22 398/621/23 +f 394/622/18 402/612/16 401/623/24 +f 395/615/19 394/624/18 396/625/21 +f 397/617/20 394/626/18 398/621/23 +f 394/627/18 401/623/24 400/628/25 +f 388/629/26 399/620/22 387/630/27 +f 390/631/28 397/617/20 389/632/29 +f 392/613/17 395/615/19 391/633/30 +f 386/634/31 401/623/24 393/611/15 +f 387/630/27 400/628/25 386/634/31 +f 389/632/29 398/621/23 388/629/26 +f 391/633/30 396/625/21 390/635/28 +f 399/620/22 394/636/18 400/628/25 +f 410/637/15 419/638/16 409/639/17 +f 419/638/16 411/640/18 412/641/19 +f 411/642/18 414/643/20 413/644/21 +f 411/645/18 416/646/22 415/647/23 +f 411/648/18 419/638/16 418/649/24 +f 412/641/19 411/650/18 413/651/21 +f 414/643/20 411/652/18 415/647/23 +f 411/653/18 418/649/24 417/654/25 +f 405/655/26 416/646/22 404/656/27 +f 407/657/28 414/643/20 406/658/29 +f 409/639/17 412/641/19 408/659/30 +f 403/660/31 418/649/24 410/637/15 +f 404/656/27 417/654/25 403/660/31 +f 406/658/29 415/647/23 405/655/26 +f 408/659/30 413/651/21 407/661/28 +f 416/646/22 411/662/18 417/654/25 +f 427/663/15 436/664/16 426/665/17 +f 436/664/16 428/666/18 429/667/19 +f 428/668/18 431/669/20 430/670/21 +f 428/671/18 433/672/22 432/673/23 +f 428/674/18 436/664/16 435/675/24 +f 429/667/19 428/676/18 430/677/21 +f 431/669/20 428/678/18 432/673/23 +f 428/679/18 435/675/24 434/680/25 +f 422/681/26 433/672/22 421/682/27 +f 424/683/28 431/669/20 423/684/29 +f 426/665/17 429/667/19 425/685/30 +f 420/686/31 435/675/24 427/663/15 +f 421/682/27 434/680/25 420/686/31 +f 423/684/29 432/673/23 422/681/26 +f 425/685/30 430/677/21 424/687/28 +f 433/672/22 428/688/18 434/680/25 +f 444/689/15 453/690/16 443/691/17 +f 453/690/16 445/692/18 446/693/19 +f 445/694/18 448/695/20 447/696/21 +f 445/697/18 450/698/22 449/699/23 +f 445/700/18 453/690/16 452/701/24 +f 446/693/19 445/702/18 447/703/21 +f 448/695/20 445/704/18 449/699/23 +f 445/705/18 452/701/24 451/706/25 +f 439/707/26 450/698/22 438/708/27 +f 441/709/28 448/695/20 440/710/29 +f 443/691/17 446/693/19 442/711/30 +f 437/712/31 452/701/24 444/689/15 +f 438/708/27 451/706/25 437/712/31 +f 440/710/29 449/699/23 439/707/26 +f 442/711/30 447/703/21 441/713/28 +f 450/698/22 445/714/18 451/706/25 +f 461/715/15 470/716/16 460/717/17 +f 470/716/16 462/718/18 463/719/19 +f 462/720/18 465/721/20 464/722/21 +f 462/723/18 467/724/22 466/725/23 +f 462/726/18 470/716/16 469/727/24 +f 463/719/19 462/728/18 464/729/21 +f 465/721/20 462/730/18 466/725/23 +f 462/731/18 469/727/24 468/732/25 +f 456/733/26 467/724/22 455/734/27 +f 458/735/28 465/721/20 457/736/29 +f 460/717/17 463/719/19 459/737/30 +f 454/738/31 469/727/24 461/715/15 +f 455/734/27 468/732/25 454/738/31 +f 457/736/29 466/725/23 456/733/26 +f 459/737/30 464/729/21 458/739/28 +f 467/724/22 462/740/18 468/732/25 +f 478/741/15 487/742/16 477/743/17 +f 487/742/16 479/744/18 480/745/19 +f 479/746/18 482/747/20 481/748/21 +f 479/749/18 484/750/22 483/751/23 +f 479/752/18 487/742/16 486/753/24 +f 480/745/19 479/754/18 481/755/21 +f 482/747/20 479/756/18 483/751/23 +f 479/757/18 486/753/24 485/758/25 +f 473/759/26 484/750/22 472/760/27 +f 475/761/28 482/747/20 474/762/29 +f 477/743/17 480/745/19 476/763/30 +f 471/764/31 486/753/24 478/741/15 +f 472/760/27 485/758/25 471/764/31 +f 474/762/29 483/751/23 473/759/26 +f 476/763/30 481/755/21 475/765/28 +f 484/750/22 479/766/18 485/758/25 +f 495/767/15 504/768/16 494/769/17 +f 504/768/16 496/770/18 497/771/19 +f 496/772/18 499/773/20 498/774/21 +f 496/775/18 501/776/22 500/777/23 +f 496/778/18 504/768/16 503/779/24 +f 497/771/19 496/780/18 498/781/21 +f 499/773/20 496/782/18 500/777/23 +f 496/783/18 503/779/24 502/784/25 +f 490/785/26 501/776/22 489/786/27 +f 492/787/28 499/773/20 491/788/29 +f 494/769/17 497/771/19 493/789/30 +f 488/790/31 503/779/24 495/767/15 +f 489/786/27 502/784/25 488/790/31 +f 491/788/29 500/777/23 490/785/26 +f 493/789/30 498/781/21 492/791/28 +f 501/776/22 496/792/18 502/784/25 +f 512/793/15 521/794/16 511/795/17 +f 521/794/16 513/796/18 514/797/19 +f 513/798/18 516/799/20 515/800/21 +f 513/801/18 518/802/22 517/803/23 +f 513/804/18 521/794/16 520/805/24 +f 514/797/19 513/806/18 515/807/21 +f 516/799/20 513/808/18 517/803/23 +f 513/809/18 520/805/24 519/810/25 +f 507/811/26 518/802/22 506/812/27 +f 509/813/28 516/799/20 508/814/29 +f 511/795/17 514/797/19 510/815/30 +f 505/816/31 520/805/24 512/793/15 +f 506/812/27 519/810/25 505/816/31 +f 508/814/29 517/803/23 507/811/26 +f 510/815/30 515/807/21 509/817/28 +f 518/802/22 513/818/18 519/810/25 +f 529/819/15 538/820/16 528/821/17 +f 538/820/16 530/822/18 531/823/19 +f 530/824/18 533/825/20 532/826/21 +f 530/827/18 535/828/22 534/829/23 +f 530/830/18 538/820/16 537/831/24 +f 531/823/19 530/832/18 532/833/21 +f 533/825/20 530/834/18 534/829/23 +f 530/835/18 537/831/24 536/836/25 +f 524/837/26 535/828/22 523/838/27 +f 526/839/28 533/825/20 525/840/29 +f 528/821/17 531/823/19 527/841/30 +f 522/842/31 537/831/24 529/819/15 +f 523/838/27 536/836/25 522/842/31 +f 525/840/29 534/829/23 524/837/26 +f 527/841/30 532/833/21 526/843/28 +f 535/828/22 530/844/18 536/836/25 +f 546/845/15 555/846/16 545/847/17 +f 555/846/16 547/848/18 548/849/19 +f 547/850/18 550/851/20 549/852/21 +f 547/853/18 552/854/22 551/855/23 +f 547/856/18 555/846/16 554/857/24 +f 548/849/19 547/858/18 549/859/21 +f 550/851/20 547/860/18 551/855/23 +f 547/861/18 554/857/24 553/862/25 +f 541/863/26 552/854/22 540/864/27 +f 543/865/28 550/851/20 542/866/29 +f 545/847/17 548/849/19 544/867/30 +f 539/868/31 554/857/24 546/845/15 +f 540/864/27 553/862/25 539/868/31 +f 542/866/29 551/855/23 541/863/26 +f 544/867/30 549/859/21 543/869/28 +f 552/854/22 547/870/18 553/862/25 +f 563/871/15 572/872/16 562/873/17 +f 572/872/16 564/874/18 565/875/19 +f 564/876/18 567/877/20 566/878/21 +f 564/879/18 569/880/22 568/881/23 +f 564/882/18 572/872/16 571/883/24 +f 565/875/19 564/884/18 566/885/21 +f 567/877/20 564/886/18 568/881/23 +f 564/887/18 571/883/24 570/888/25 +f 558/889/26 569/880/22 557/890/27 +f 560/891/28 567/877/20 559/892/29 +f 562/873/17 565/875/19 561/893/30 +f 556/894/31 571/883/24 563/871/15 +f 557/890/27 570/888/25 556/894/31 +f 559/892/29 568/881/23 558/889/26 +f 561/893/30 566/885/21 560/895/28 +f 569/880/22 564/896/18 570/888/25 +f 308/481/15 316/493/24 317/482/16 +f 303/499/26 313/491/23 314/490/22 +f 305/501/28 311/488/21 312/487/20 +f 307/483/17 317/482/16 310/485/19 +f 301/504/31 315/498/25 316/493/24 +f 302/500/27 314/490/22 315/498/25 +f 304/502/29 312/487/20 313/491/23 +f 306/503/30 310/485/19 311/495/21 +f 325/507/15 333/519/24 334/508/16 +f 320/525/26 330/517/23 331/516/22 +f 322/527/28 328/514/21 329/513/20 +f 324/509/17 334/508/16 327/511/19 +f 318/530/31 332/524/25 333/519/24 +f 319/526/27 331/516/22 332/524/25 +f 321/528/29 329/513/20 330/517/23 +f 323/529/30 327/511/19 328/521/21 +f 342/533/15 350/545/24 351/534/16 +f 337/551/26 347/543/23 348/542/22 +f 339/553/28 345/540/21 346/539/20 +f 341/535/17 351/534/16 344/537/19 +f 335/556/31 349/550/25 350/545/24 +f 336/552/27 348/542/22 349/550/25 +f 338/554/29 346/539/20 347/543/23 +f 340/555/30 344/537/19 345/547/21 +f 359/559/15 367/571/24 368/560/16 +f 354/577/26 364/569/23 365/568/22 +f 356/579/28 362/566/21 363/565/20 +f 358/561/17 368/560/16 361/563/19 +f 352/582/31 366/576/25 367/571/24 +f 353/578/27 365/568/22 366/576/25 +f 355/580/29 363/565/20 364/569/23 +f 357/581/30 361/563/19 362/573/21 +f 376/585/15 384/597/24 385/586/16 +f 371/603/26 381/595/23 382/594/22 +f 373/605/28 379/592/21 380/591/20 +f 375/587/17 385/586/16 378/589/19 +f 369/608/31 383/602/25 384/597/24 +f 370/604/27 382/594/22 383/602/25 +f 372/606/29 380/591/20 381/595/23 +f 374/607/30 378/589/19 379/599/21 +f 393/611/15 401/623/24 402/612/16 +f 388/629/26 398/621/23 399/620/22 +f 390/631/28 396/618/21 397/617/20 +f 392/613/17 402/612/16 395/615/19 +f 386/634/31 400/628/25 401/623/24 +f 387/630/27 399/620/22 400/628/25 +f 389/632/29 397/617/20 398/621/23 +f 391/633/30 395/615/19 396/625/21 +f 410/637/15 418/649/24 419/638/16 +f 405/655/26 415/647/23 416/646/22 +f 407/657/28 413/644/21 414/643/20 +f 409/639/17 419/638/16 412/641/19 +f 403/660/31 417/654/25 418/649/24 +f 404/656/27 416/646/22 417/654/25 +f 406/658/29 414/643/20 415/647/23 +f 408/659/30 412/641/19 413/651/21 +f 427/663/15 435/675/24 436/664/16 +f 422/681/26 432/673/23 433/672/22 +f 424/683/28 430/670/21 431/669/20 +f 426/665/17 436/664/16 429/667/19 +f 420/686/31 434/680/25 435/675/24 +f 421/682/27 433/672/22 434/680/25 +f 423/684/29 431/669/20 432/673/23 +f 425/685/30 429/667/19 430/677/21 +f 444/689/15 452/701/24 453/690/16 +f 439/707/26 449/699/23 450/698/22 +f 441/709/28 447/696/21 448/695/20 +f 443/691/17 453/690/16 446/693/19 +f 437/712/31 451/706/25 452/701/24 +f 438/708/27 450/698/22 451/706/25 +f 440/710/29 448/695/20 449/699/23 +f 442/711/30 446/693/19 447/703/21 +f 461/715/15 469/727/24 470/716/16 +f 456/733/26 466/725/23 467/724/22 +f 458/735/28 464/722/21 465/721/20 +f 460/717/17 470/716/16 463/719/19 +f 454/738/31 468/732/25 469/727/24 +f 455/734/27 467/724/22 468/732/25 +f 457/736/29 465/721/20 466/725/23 +f 459/737/30 463/719/19 464/729/21 +f 478/741/15 486/753/24 487/742/16 +f 473/759/26 483/751/23 484/750/22 +f 475/761/28 481/748/21 482/747/20 +f 477/743/17 487/742/16 480/745/19 +f 471/764/31 485/758/25 486/753/24 +f 472/760/27 484/750/22 485/758/25 +f 474/762/29 482/747/20 483/751/23 +f 476/763/30 480/745/19 481/755/21 +f 495/767/15 503/779/24 504/768/16 +f 490/785/26 500/777/23 501/776/22 +f 492/787/28 498/774/21 499/773/20 +f 494/769/17 504/768/16 497/771/19 +f 488/790/31 502/784/25 503/779/24 +f 489/786/27 501/776/22 502/784/25 +f 491/788/29 499/773/20 500/777/23 +f 493/789/30 497/771/19 498/781/21 +f 512/793/15 520/805/24 521/794/16 +f 507/811/26 517/803/23 518/802/22 +f 509/813/28 515/800/21 516/799/20 +f 511/795/17 521/794/16 514/797/19 +f 505/816/31 519/810/25 520/805/24 +f 506/812/27 518/802/22 519/810/25 +f 508/814/29 516/799/20 517/803/23 +f 510/815/30 514/797/19 515/807/21 +f 529/819/15 537/831/24 538/820/16 +f 524/837/26 534/829/23 535/828/22 +f 526/839/28 532/826/21 533/825/20 +f 528/821/17 538/820/16 531/823/19 +f 522/842/31 536/836/25 537/831/24 +f 523/838/27 535/828/22 536/836/25 +f 525/840/29 533/825/20 534/829/23 +f 527/841/30 531/823/19 532/833/21 +f 546/845/15 554/857/24 555/846/16 +f 541/863/26 551/855/23 552/854/22 +f 543/865/28 549/852/21 550/851/20 +f 545/847/17 555/846/16 548/849/19 +f 539/868/31 553/862/25 554/857/24 +f 540/864/27 552/854/22 553/862/25 +f 542/866/29 550/851/20 551/855/23 +f 544/867/30 548/849/19 549/859/21 +f 563/871/15 571/883/24 572/872/16 +f 558/889/26 568/881/23 569/880/22 +f 560/891/28 566/878/21 567/877/20 +f 562/873/17 572/872/16 565/875/19 +f 556/894/31 570/888/25 571/883/24 +f 557/890/27 569/880/22 570/888/25 +f 559/892/29 567/877/20 568/881/23 +f 561/893/30 565/875/19 566/885/21 +o Frame +v -0.500000 0.000000 1.500000 +v 0.500000 0.000000 1.500000 +v -0.500000 0.000000 -1.500000 +v 0.500000 0.000000 -1.500000 +v -0.437500 0.125000 1.437500 +v 0.437500 0.125000 1.437500 +v -0.437500 0.125000 -1.437500 +v 0.437500 0.125000 -1.437500 +v -0.437500 0.875000 1.437500 +v 0.437500 0.875000 1.437500 +v -0.437500 0.875000 -1.437500 +v 0.437500 0.875000 -1.437500 +v -0.500000 1.000000 1.500000 +v 0.500000 1.000000 1.500000 +v -0.500000 1.000000 -1.500000 +v 0.500000 1.000000 -1.500000 +v -0.500000 0.125000 -1.500000 +v -0.500000 0.125000 1.500000 +v 0.500000 0.125000 1.500000 +v 0.500000 0.125000 -1.500000 +v -0.500000 0.875000 -1.500000 +v -0.500000 0.875000 1.500000 +v 0.500000 0.875000 1.500000 +v 0.500000 0.875000 -1.500000 +v 0.250000 1.000000 -0.750000 +v 0.250000 1.000000 0.750000 +v -0.250000 1.000000 0.750000 +v -0.250000 1.000000 -0.750000 +v -0.500000 1.500000 -1.500000 +v -0.500000 1.500000 1.500000 +v 0.500000 1.500000 1.500000 +v 0.500000 1.500000 -1.500000 +v -0.250000 1.500000 -0.750000 +v -0.250000 1.500000 0.750000 +v 0.250000 1.500000 0.750000 +v 0.250000 1.500000 -0.750000 +v 0.437500 1.500000 -1.437500 +v 0.437500 1.500000 -1.062500 +v -0.437500 1.500000 -1.062500 +v -0.437500 1.500000 -1.437500 +v 0.437500 1.000000 -1.437500 +v 0.437500 1.000000 -1.062500 +v -0.437500 1.000000 -1.062500 +v -0.437500 1.000000 -1.437500 +v -0.437500 1.000000 1.062500 +v -0.437500 1.000000 1.437500 +v 0.437500 1.000000 1.437500 +v 0.437500 1.000000 1.062500 +v -0.437500 1.500000 1.062500 +v -0.437500 1.500000 1.437500 +v 0.437500 1.500000 1.437500 +v 0.437500 1.500000 1.062500 +v -0.500000 1.750000 1.500000 +v -0.500000 2.000000 1.250000 +v 0.500000 2.000000 1.250000 +v 0.500000 1.750000 1.500000 +v -0.500000 2.000000 -1.250000 +v -0.500000 1.750000 -1.500000 +v 0.500000 1.750000 -1.500000 +v 0.500000 2.000000 -1.250000 +v 0.250000 0.875000 0.750000 +v 0.250000 0.875000 -0.750000 +v -0.250000 0.875000 0.750000 +v -0.250000 0.875000 -0.750000 +vt 0.438596 0.166667 +vt 0.017544 0.357143 +vt 0.017544 0.166667 +vt 0.421053 0.142857 +vt 0.017544 0.000000 +vt 0.421053 -0.000000 +vt 0.438596 0.142857 +vt 0.456140 0.357143 +vt 0.438596 0.357143 +vt 0.000000 0.166667 +vt 0.017544 0.380952 +vt 0.543860 0.142857 +vt 0.421053 -0.000000 +vt 0.543860 -0.000000 +vt 0.333333 0.833333 +vt 0.017544 0.785714 +vt 0.438596 0.785714 +vt 0.017544 1.000000 +vt 0.438596 0.976190 +vt 0.438596 1.000000 +vt 0.456140 0.976190 +vt 0.456140 0.785714 +vt -0.000000 0.785714 +vt 0.017544 0.976190 +vt -0.000000 0.976190 +vt 0.438596 0.761905 +vt 0.017544 0.761905 +vt 0.429825 0.559524 +vt 0.017544 0.571429 +vt 0.026316 0.559524 +vt 0.026316 0.392857 +vt 0.438596 0.380952 +vt 0.429825 0.392857 +vt 0.438596 0.571429 +vt 0.026316 0.583333 +vt 0.438596 0.571429 +vt 0.429825 0.583333 +vt 0.026316 0.750000 +vt 0.017544 0.571429 +vt 0.429825 0.750000 +vt 0.543860 0.142857 +vt 0.543860 -0.000000 +vt 0.421053 0.142857 +vt 0.017544 0.000000 +vt 0.543860 0.476190 +vt 0.508772 0.285714 +vt 0.543860 0.285714 +vt 0.964912 0.190476 +vt 0.859649 0.047619 +vt 0.964912 0.000000 +vt 0.578947 0.285714 +vt 0.929825 0.476190 +vt 0.578947 0.476190 +vt 0.096491 0.619048 +vt 0.114035 0.714286 +vt 0.096491 0.714286 +vt 0.543860 0.190476 +vt 0.929825 0.285714 +vt 0.964912 0.285714 +vt 1.000000 0.476190 +vt 0.964912 0.476190 +vt 0.543860 -0.000000 +vt 0.649123 0.142857 +vt 0.859649 0.142857 +vt 0.649123 0.047619 +vt 0.201754 0.392857 +vt 0.149123 0.488095 +vt 0.149123 0.392857 +vt 0.026316 0.488095 +vt 0.026316 0.392857 +vt 0.324561 0.392857 +vt 0.201754 0.488095 +vt 0.377193 0.392857 +vt 0.324561 0.488095 +vt 0.377193 0.392857 +vt 0.324561 0.488095 +vt 0.324561 0.392857 +vt 0.201754 0.488095 +vt 0.201754 0.392857 +vt 0.149123 0.392857 +vt 0.026316 0.488095 +vt 0.026316 0.392857 +vt 0.149123 0.488095 +vt 0.964912 0.571429 +vt 0.543860 0.571429 +vt 0.122807 0.833333 +vt 0.122807 0.928571 +vt 0.333333 0.928571 +vt 0.324561 0.714286 +vt 0.114035 0.619048 +vt 0.324561 0.619048 +vt 0.114035 0.738095 +vt 0.324561 0.738095 +vt 0.324561 0.595238 +vt 0.114035 0.595238 +vt 0.342105 0.714286 +vt 0.342105 0.619048 +vt 0.017544 0.142857 +vt 0.017544 0.142857 +vt 0.456140 0.166667 +vt 0.000000 0.357143 +vt 0.017544 0.142857 +vt 0.508772 0.476190 +vt 0.964912 0.238095 +vt 0.543860 0.238095 +vt 1.000000 0.285714 +vt 0.377193 0.488095 +vt 0.377193 0.488095 +vt 0.543860 0.523810 +vt 0.964912 0.523810 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +s off +f 575/897/32 574/898/32 573/899/32 +f 584/900/33 578/901/33 580/902/33 +f 573/899/34 589/903/34 575/897/34 +f 575/897/35 592/904/35 576/905/35 +f 574/898/36 590/906/36 573/899/36 +f 576/905/33 591/907/33 574/898/33 +f 582/908/36 577/909/36 578/910/36 +f 597/911/37 586/912/37 588/913/37 +f 594/914/34 587/915/34 593/916/34 +f 593/917/35 588/913/35 596/918/35 +f 595/919/36 585/920/36 594/921/36 +f 596/922/33 586/912/33 595/923/33 +f 579/924/37 590/925/37 577/926/37 +f 577/926/37 591/907/37 578/927/37 +f 578/927/37 592/928/37 580/929/37 +f 580/929/37 589/930/37 579/924/37 +f 581/931/32 593/932/32 583/933/32 +f 582/934/32 594/935/32 581/931/32 +f 584/936/32 595/923/32 582/934/32 +f 583/933/32 596/922/32 584/936/32 +f 583/937/35 580/902/35 579/938/35 +f 581/939/34 579/940/34 577/909/34 +f 625/941/36 603/942/36 628/943/36 +f 604/944/32 605/945/32 601/946/32 +f 627/947/37 629/948/37 626/949/37 +f 600/950/36 634/951/36 597/952/36 +f 603/953/33 604/944/33 632/954/33 +f 631/955/35 601/956/35 630/957/35 +f 602/958/32 607/959/32 603/953/32 +f 603/953/32 608/960/32 604/944/32 +f 601/946/32 606/961/32 602/958/32 +f 613/962/33 610/963/33 614/964/33 +f 614/964/36 611/965/36 615/966/36 +f 616/967/35 609/968/35 613/962/35 +f 615/969/34 612/970/34 616/967/34 +f 618/971/34 621/972/34 617/973/34 +f 617/973/35 624/974/35 620/975/35 +f 619/976/36 622/977/36 618/978/36 +f 620/975/33 623/979/33 619/976/33 +f 628/943/38 626/949/38 625/941/38 +f 630/957/39 632/954/39 631/955/39 +f 601/980/34 602/981/34 626/949/34 +f 598/982/37 585/920/37 586/912/37 +f 599/983/37 587/915/37 585/920/37 +f 600/984/37 588/913/37 587/915/37 +f 633/985/37 636/986/37 635/987/37 +f 597/988/34 633/985/34 598/989/34 +f 599/990/33 636/986/33 600/991/33 +f 598/992/35 635/987/35 599/993/35 +f 575/897/32 576/905/32 574/898/32 +f 584/900/33 582/994/33 578/901/33 +f 573/899/34 590/995/34 589/903/34 +f 575/897/35 589/996/35 592/904/35 +f 574/898/36 591/997/36 590/906/36 +f 576/905/33 592/928/33 591/907/33 +f 582/908/36 581/939/36 577/909/36 +f 597/911/37 598/982/37 586/912/37 +f 594/914/34 585/920/34 587/915/34 +f 593/917/35 587/915/35 588/913/35 +f 595/919/36 586/912/36 585/920/36 +f 596/922/33 588/913/33 586/912/33 +f 579/924/37 589/930/37 590/925/37 +f 577/926/37 590/925/37 591/907/37 +f 578/927/37 591/907/37 592/928/37 +f 580/929/37 592/928/37 589/930/37 +f 581/931/32 594/935/32 593/932/32 +f 582/934/32 595/923/32 594/935/32 +f 584/936/32 596/922/32 595/923/32 +f 583/933/32 593/932/32 596/922/32 +f 583/937/35 584/900/35 580/902/35 +f 581/939/34 583/998/34 579/940/34 +f 625/941/36 602/999/36 603/942/36 +f 604/944/32 608/960/32 605/945/32 +f 627/947/37 632/954/37 629/948/37 +f 600/950/36 636/986/36 634/951/36 +f 604/944/33 631/1000/33 632/954/33 +f 632/954/33 627/947/33 603/953/33 +f 627/947/33 628/1001/33 603/953/33 +f 631/955/35 604/1002/35 601/956/35 +f 602/958/32 606/961/32 607/959/32 +f 603/953/32 607/959/32 608/960/32 +f 601/946/32 605/945/32 606/961/32 +f 613/962/33 609/968/33 610/963/33 +f 614/964/36 610/963/36 611/965/36 +f 616/967/35 612/970/35 609/968/35 +f 615/969/34 611/1003/34 612/970/34 +f 618/971/34 622/1004/34 621/972/34 +f 617/973/35 621/972/35 624/974/35 +f 619/976/36 623/979/36 622/977/36 +f 620/975/33 624/974/33 623/979/33 +f 628/943/38 627/947/38 626/949/38 +f 630/957/39 629/948/39 632/954/39 +f 602/981/34 625/1005/34 626/949/34 +f 626/949/34 629/948/34 601/980/34 +f 629/948/34 630/1006/34 601/980/34 +f 598/982/37 599/983/37 585/920/37 +f 599/983/37 600/984/37 587/915/37 +f 600/984/37 597/911/37 588/913/37 +f 633/985/37 634/951/37 636/986/37 +f 597/988/34 634/951/34 633/985/34 +f 599/990/33 635/987/33 636/986/33 +f 598/992/35 633/985/35 635/987/35 diff --git a/src/main/resources/assets/hbm/models/machines/lpw2.obj b/src/main/resources/assets/hbm/models/machines/lpw2.obj new file mode 100644 index 000000000..aa4a22e47 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/lpw2.obj @@ -0,0 +1,17841 @@ +# Blender v2.79 (sub 0) OBJ File: 'lpw2.blend' +# www.blender.org +o WireLeft +v -2.875000 3.812500 2.406250 +v -2.875000 3.937500 2.406250 +v -2.875000 3.812500 2.343750 +v -2.875000 3.937500 2.343750 +v -2.125000 3.812500 2.406250 +v -2.125000 3.937500 2.406250 +v -2.125000 3.812500 2.343750 +v -2.125000 3.937500 2.343750 +vt 0.659208 0.932558 +vt 0.648881 0.927907 +vt 0.659208 0.927907 +vt 0.648881 0.925581 +vt 0.659208 0.925581 +vt 0.659208 0.934884 +vt 0.648881 0.932558 +vt 0.648881 0.920930 +vt 0.659208 0.920930 +vt 0.648881 0.934884 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s off +f 1/1/1 6/2/1 2/3/1 +f 2/3/2 8/4/2 4/5/2 +f 3/6/3 5/7/3 1/1/3 +f 4/5/4 7/8/4 3/9/4 +f 1/1/1 5/7/1 6/2/1 +f 2/3/2 6/2/2 8/4/2 +f 3/6/3 7/10/3 5/7/3 +f 4/5/4 8/4/4 7/8/4 +o WireRight +v 2.875000 3.812500 2.406250 +v 2.875000 3.937500 2.406250 +v 2.875000 3.812500 2.343750 +v 2.875000 3.937500 2.343750 +v 2.125000 3.812500 2.406250 +v 2.125000 3.937500 2.406250 +v 2.125000 3.812500 2.343750 +v 2.125000 3.937500 2.343750 +vt 0.648881 0.927907 +vt 0.638554 0.932558 +vt 0.638554 0.927907 +vt 0.648881 0.925581 +vt 0.638554 0.925581 +vt 0.648881 0.932558 +vt 0.638554 0.934884 +vt 0.648881 0.920930 +vt 0.638554 0.920930 +vt 0.648881 0.934884 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s off +f 14/11/5 9/12/5 10/13/5 +f 16/14/6 10/13/6 12/15/6 +f 13/16/7 11/17/7 9/12/7 +f 15/18/8 12/15/8 11/19/8 +f 14/11/5 13/16/5 9/12/5 +f 16/14/6 14/11/6 10/13/6 +f 13/16/7 15/20/7 11/17/7 +f 15/18/8 16/14/8 12/15/8 +o Center +v 0.000000 4.999998 2.749994 +v -0.574025 4.885818 2.749994 +v -1.060660 4.560658 2.749994 +v -1.385819 4.074023 2.749994 +v -1.500000 3.499998 2.749994 +v -1.385819 2.925972 2.749994 +v -1.060660 2.439339 2.749994 +v -0.574025 2.114179 2.749994 +v 0.000000 1.999998 2.749994 +v 0.574024 2.114179 2.749994 +v 1.060659 2.439338 2.749994 +v 1.385818 2.925972 2.749994 +v 1.500000 3.499998 2.749994 +v 1.385818 4.074024 2.749994 +v 1.060659 4.560658 2.749994 +v 0.574024 4.885818 2.749994 +v 0.000000 4.999998 -0.250006 +v -0.574025 4.885818 -0.250006 +v -1.060660 4.560658 -0.250006 +v -1.385819 4.074023 -0.250006 +v -1.500000 3.499998 -0.250006 +v -1.385819 2.925972 -0.250006 +v -1.060660 2.439339 -0.250006 +v -0.574025 2.114179 -0.250006 +v 0.000000 1.999998 -0.250006 +v 0.574024 2.114179 -0.250006 +v 1.060659 2.439338 -0.250006 +v 1.385818 2.925972 -0.250006 +v 1.500000 3.499998 -0.250006 +v 1.385818 4.074024 -0.250006 +v 1.060659 4.560658 -0.250006 +v 0.574024 4.885818 -0.250006 +v 0.000000 4.499998 -1.250006 +v -0.382684 4.423878 -1.250006 +v -0.707107 4.207105 -1.250006 +v -0.923880 3.882682 -1.250006 +v -1.000000 3.499998 -1.250006 +v -0.923880 3.117314 -1.250006 +v -0.707107 2.792892 -1.250006 +v -0.382684 2.576118 -1.250006 +v 0.000000 2.499998 -1.250006 +v 0.382683 2.576118 -1.250006 +v 0.707107 2.792892 -1.250006 +v 0.923880 3.117314 -1.250006 +v 1.000000 3.499998 -1.250006 +v 0.923880 3.882682 -1.250006 +v 0.707107 4.207106 -1.250006 +v 0.382683 4.423878 -1.250006 +v 0.000000 4.499998 3.749994 +v -0.382684 4.423878 3.749994 +v -0.707107 4.207105 3.749994 +v -0.923880 3.882682 3.749994 +v -1.000000 3.499998 3.749994 +v -0.923880 3.117314 3.749994 +v -0.707107 2.792892 3.749994 +v -0.382684 2.576118 3.749994 +v 0.000000 2.499998 3.749994 +v 0.382683 2.576118 3.749994 +v 0.707107 2.792892 3.749994 +v 0.923880 3.117314 3.749994 +v 1.000000 3.499998 3.749994 +v 0.923880 3.882682 3.749994 +v 0.707107 4.207106 3.749994 +v 0.382683 4.423878 3.749994 +v 0.000000 4.999998 2.499994 +v -0.574025 4.885818 2.499994 +v -1.060660 4.560658 2.499994 +v -1.385819 4.074022 2.499994 +v -1.500000 3.499998 2.499994 +v -1.385819 2.925972 2.499994 +v -1.060660 2.439338 2.499994 +v -0.574025 2.114179 2.499994 +v -0.000001 1.999998 2.499994 +v 0.574024 2.114179 2.499994 +v 1.060659 2.439337 2.499994 +v 1.385818 2.925972 2.499994 +v 1.500000 3.499998 2.499994 +v 1.385818 4.074023 2.499994 +v 1.060659 4.560658 2.499994 +v 0.574024 4.885818 2.499994 +v 0.000000 4.999998 2.124994 +v -0.574025 4.885818 2.124994 +v -1.060660 4.560658 2.124994 +v -1.385819 4.074022 2.124994 +v -1.500000 3.499998 2.124994 +v -1.385819 2.925972 2.124994 +v -1.060660 2.439338 2.124994 +v -0.574025 2.114179 2.124994 +v -0.000001 1.999998 2.124994 +v 0.574024 2.114179 2.124994 +v 1.060659 2.439337 2.124994 +v 1.385818 2.925972 2.124994 +v 1.500000 3.499998 2.124994 +v 1.385818 4.074023 2.124994 +v 1.060659 4.560658 2.124994 +v 0.574024 4.885818 2.124994 +v 0.000000 5.749998 2.124996 +v -0.861038 5.578728 2.124996 +v -1.590990 5.090989 2.124996 +v -2.078729 4.361035 2.124996 +v -2.250000 3.499998 2.124996 +v -2.078729 2.638961 2.124996 +v -1.590990 1.909008 2.124996 +v -0.861038 1.421268 2.124996 +v -0.000001 1.249998 2.124996 +v 0.861037 1.421268 2.124996 +v 1.590989 1.909007 2.124996 +v 2.078729 2.638960 2.124996 +v 2.250000 3.499998 2.124996 +v 2.078728 4.361035 2.124996 +v 1.590989 5.090989 2.124996 +v 0.861036 5.578728 2.124996 +v 0.000000 5.749998 2.499996 +v -0.861038 5.578728 2.499996 +v -1.590990 5.090989 2.499996 +v -2.078729 4.361035 2.499996 +v -2.250000 3.499998 2.499996 +v -2.078729 2.638961 2.499996 +v -1.590990 1.909008 2.499996 +v -0.861038 1.421268 2.499996 +v -0.000001 1.249998 2.499996 +v 0.861037 1.421268 2.499996 +v 1.590989 1.909007 2.499996 +v 2.078729 2.638960 2.499996 +v 2.250000 3.499998 2.499996 +v 2.078728 4.361035 2.499996 +v 1.590989 5.090989 2.499996 +v 0.861036 5.578728 2.499996 +v 0.000000 4.999998 0.374994 +v -0.574025 4.885818 0.374994 +v -1.060660 4.560658 0.374994 +v -1.385819 4.074022 0.374994 +v -1.500000 3.499998 0.374994 +v -1.385819 2.925972 0.374994 +v -1.060660 2.439338 0.374994 +v -0.574025 2.114179 0.374994 +v -0.000001 1.999998 0.374994 +v 0.574024 2.114179 0.374994 +v 1.060659 2.439337 0.374994 +v 1.385818 2.925972 0.374994 +v 1.500000 3.499998 0.374994 +v 1.385818 4.074023 0.374994 +v 1.060659 4.560658 0.374994 +v 0.574024 4.885818 0.374994 +v 0.000000 4.999998 -0.000006 +v -0.574025 4.885818 -0.000006 +v -1.060660 4.560658 -0.000006 +v -1.385819 4.074022 -0.000006 +v -1.500000 3.499998 -0.000006 +v -1.385819 2.925972 -0.000006 +v -1.060660 2.439338 -0.000006 +v -0.574025 2.114179 -0.000006 +v -0.000001 1.999998 -0.000006 +v 0.574024 2.114179 -0.000006 +v 1.060659 2.439337 -0.000006 +v 1.385818 2.925972 -0.000006 +v 1.500000 3.499998 -0.000006 +v 1.385818 4.074023 -0.000006 +v 1.060659 4.560658 -0.000006 +v 0.574024 4.885818 -0.000006 +v 0.000000 5.749998 -0.000004 +v -0.861038 5.578728 -0.000004 +v -1.590990 5.090989 -0.000004 +v -2.078729 4.361035 -0.000004 +v -2.250000 3.499998 -0.000004 +v -2.078729 2.638961 -0.000004 +v -1.590990 1.909008 -0.000004 +v -0.861038 1.421268 -0.000004 +v -0.000001 1.249998 -0.000004 +v 0.861037 1.421268 -0.000004 +v 1.590989 1.909007 -0.000004 +v 2.078729 2.638960 -0.000004 +v 2.250000 3.499998 -0.000004 +v 2.078728 4.361035 -0.000004 +v 1.590989 5.090989 -0.000004 +v 0.861036 5.578728 -0.000004 +v 0.000000 5.749998 0.374996 +v -0.861038 5.578728 0.374996 +v -1.590990 5.090989 0.374996 +v -2.078729 4.361035 0.374996 +v -2.250000 3.499998 0.374996 +v -2.078729 2.638961 0.374996 +v -1.590990 1.909008 0.374996 +v -0.861038 1.421268 0.374996 +v -0.000001 1.249998 0.374996 +v 0.861037 1.421268 0.374996 +v 1.590989 1.909007 0.374996 +v 2.078729 2.638960 0.374996 +v 2.250000 3.499998 0.374996 +v 2.078728 4.361035 0.374996 +v 1.590989 5.090989 0.374996 +v 0.861036 5.578728 0.374996 +v 0.000000 5.624998 2.124995 +v -0.176777 5.551775 2.124995 +v -0.250000 5.374998 2.124995 +v -0.176777 5.198221 2.124995 +v 0.000000 5.124998 2.124995 +v 0.176777 5.198221 2.124995 +v 0.250000 5.374998 2.124995 +v 0.176777 5.551775 2.124995 +v 0.000000 5.624998 0.374995 +v -0.176777 5.551775 0.374995 +v -0.250000 5.374998 0.374995 +v -0.176777 5.198221 0.374995 +v 0.000000 5.124998 0.374995 +v 0.176777 5.198221 0.374995 +v 0.250000 5.374998 0.374995 +v 0.176777 5.551775 0.374995 +v -0.000001 1.374999 2.124995 +v 0.176776 1.448223 2.124995 +v 0.249999 1.624999 2.124995 +v 0.176776 1.801776 2.124995 +v -0.000001 1.874999 2.124995 +v -0.176777 1.801776 2.124995 +v -0.250001 1.624999 2.124995 +v -0.176777 1.448223 2.124995 +v -0.000001 1.374999 0.374995 +v 0.176776 1.448223 0.374995 +v 0.249999 1.624999 0.374995 +v 0.176776 1.801776 0.374995 +v -0.000001 1.874999 0.374995 +v -0.176777 1.801776 0.374995 +v -0.250001 1.624999 0.374995 +v -0.176777 1.448223 0.374995 +v 2.124999 3.499998 2.124995 +v 2.051775 3.676775 2.124995 +v 1.874999 3.749998 2.124995 +v 1.698222 3.676775 2.124995 +v 1.624999 3.499998 2.124995 +v 1.698222 3.323221 2.124995 +v 1.874999 3.249998 2.124995 +v 2.051775 3.323221 2.124995 +v 2.124999 3.499998 0.374995 +v 2.051775 3.676775 0.374995 +v 1.874999 3.749998 0.374995 +v 1.698222 3.676775 0.374995 +v 1.624999 3.499998 0.374995 +v 1.698222 3.323221 0.374995 +v 1.874999 3.249998 0.374995 +v 2.051775 3.323221 0.374995 +v -2.125000 3.499999 2.124995 +v -2.051776 3.323222 2.124995 +v -1.875000 3.249999 2.124995 +v -1.698223 3.323222 2.124995 +v -1.625000 3.499999 2.124995 +v -1.698223 3.676776 2.124995 +v -1.875000 3.749999 2.124995 +v -2.051776 3.676776 2.124995 +v -2.125000 3.499999 0.374995 +v -2.051776 3.323222 0.374995 +v -1.875000 3.249999 0.374995 +v -1.698223 3.323222 0.374995 +v -1.625000 3.499999 0.374995 +v -1.698223 3.676776 0.374995 +v -1.875000 3.749999 0.374995 +v -2.051776 3.676776 0.374995 +v 1.502602 5.002600 2.124995 +v 1.325825 5.075823 2.124995 +v 1.149048 5.002600 2.124995 +v 1.075825 4.825823 2.124995 +v 1.149048 4.649047 2.124995 +v 1.325825 4.575823 2.124995 +v 1.502602 4.649047 2.124995 +v 1.575825 4.825823 2.124995 +v 1.502602 5.002600 0.374995 +v 1.325825 5.075823 0.374995 +v 1.149048 5.002600 0.374995 +v 1.075825 4.825823 0.374995 +v 1.149048 4.649047 0.374995 +v 1.325825 4.575823 0.374995 +v 1.502602 4.649047 0.374995 +v 1.575825 4.825823 0.374995 +v -1.502602 1.997397 2.124995 +v -1.325825 1.924174 2.124995 +v -1.149049 1.997397 2.124995 +v -1.075826 2.174174 2.124995 +v -1.149049 2.350950 2.124995 +v -1.325826 2.424174 2.124995 +v -1.502602 2.350950 2.124995 +v -1.575825 2.174174 2.124995 +v -1.502602 1.997397 0.374995 +v -1.325825 1.924174 0.374995 +v -1.149049 1.997397 0.374995 +v -1.075826 2.174174 0.374995 +v -1.149049 2.350950 0.374995 +v -1.325826 2.424174 0.374995 +v -1.502602 2.350950 0.374995 +v -1.575825 2.174174 0.374995 +v 1.502601 1.997396 2.124995 +v 1.575824 2.174173 2.124995 +v 1.502602 2.350950 2.124995 +v 1.325824 2.424173 2.124995 +v 1.149048 2.350950 2.124995 +v 1.075825 2.174173 2.124995 +v 1.149048 1.997396 2.124995 +v 1.325824 1.924173 2.124995 +v 1.502601 1.997396 0.374995 +v 1.575824 2.174173 0.374995 +v 1.502602 2.350950 0.374995 +v 1.325824 2.424173 0.374995 +v 1.149048 2.350950 0.374995 +v 1.075825 2.174173 0.374995 +v 1.149048 1.997396 0.374995 +v 1.325824 1.924173 0.374995 +v -1.502602 5.002601 2.124995 +v -1.575825 4.825823 2.124995 +v -1.502602 4.649047 2.124995 +v -1.325825 4.575824 2.124995 +v -1.149049 4.649047 2.124995 +v -1.075825 4.825824 2.124995 +v -1.149048 5.002601 2.124995 +v -1.325825 5.075824 2.124995 +v -1.502602 5.002601 0.374995 +v -1.575825 4.825823 0.374995 +v -1.502602 4.649047 0.374995 +v -1.325825 4.575824 0.374995 +v -1.149049 4.649047 0.374995 +v -1.075825 4.825824 0.374995 +v -1.149048 5.002601 0.374995 +v -1.325825 5.075824 0.374995 +v 0.000000 4.249998 -1.250006 +v -0.287013 4.192907 -1.250006 +v -0.530331 4.030328 -1.250006 +v -0.692910 3.787011 -1.250006 +v -0.750000 3.499998 -1.250006 +v -0.692910 3.212985 -1.250006 +v -0.530331 2.969668 -1.250006 +v -0.287013 2.807089 -1.250006 +v 0.000000 2.749998 -1.250006 +v 0.287012 2.807089 -1.250006 +v 0.530330 2.969668 -1.250006 +v 0.692909 3.212985 -1.250006 +v 0.750000 3.499998 -1.250006 +v 0.692909 3.787011 -1.250006 +v 0.530330 4.030329 -1.250006 +v 0.287012 4.192907 -1.250006 +v 0.000000 4.249998 -3.250006 +v -0.287013 4.192907 -3.250006 +v -0.530331 4.030328 -3.250006 +v -0.692910 3.787011 -3.250006 +v -0.750000 3.499998 -3.250006 +v -0.692910 3.212985 -3.250006 +v -0.530331 2.969668 -3.250006 +v -0.287013 2.807089 -3.250006 +v 0.000000 2.749998 -3.250006 +v 0.287012 2.807089 -3.250006 +v 0.530330 2.969668 -3.250006 +v 0.692909 3.212985 -3.250006 +v 0.750000 3.499998 -3.250006 +v 0.692909 3.787011 -3.250006 +v 0.530330 4.030329 -3.250006 +v 0.287012 4.192907 -3.250006 +v 0.000000 4.749998 -3.250006 +v -0.478354 4.654848 -3.250006 +v -0.883883 4.383882 -3.250006 +v -1.154850 3.978352 -3.250006 +v -1.250000 3.499998 -3.250006 +v -1.154850 3.021645 -3.250006 +v -0.883883 2.616115 -3.250006 +v -0.478354 2.345148 -3.250006 +v 0.000000 2.249998 -3.250006 +v 0.478354 2.345148 -3.250006 +v 0.883883 2.616114 -3.250006 +v 1.154849 3.021644 -3.250006 +v 1.250000 3.499998 -3.250006 +v 1.154849 3.978353 -3.250006 +v 0.883883 4.383883 -3.250006 +v 0.478354 4.654848 -3.250006 +v 0.000000 4.749998 -4.250007 +v -0.478354 4.654848 -4.250007 +v -0.883883 4.383882 -4.250007 +v -1.154850 3.978352 -4.250007 +v -1.250000 3.499998 -4.250007 +v -1.154850 3.021645 -4.250007 +v -0.883883 2.616115 -4.250007 +v -0.478354 2.345148 -4.250007 +v 0.000000 2.249998 -4.250007 +v 0.478354 2.345148 -4.250007 +v 0.883883 2.616114 -4.250007 +v 1.154849 3.021644 -4.250007 +v 1.250000 3.499998 -4.250007 +v 1.154849 3.978353 -4.250007 +v 0.883883 4.383883 -4.250007 +v 0.478354 4.654848 -4.250007 +v 0.000000 4.249998 -4.250007 +v -0.287013 4.192907 -4.250007 +v -0.530331 4.030328 -4.250007 +v -0.692910 3.787011 -4.250007 +v -0.750000 3.499998 -4.250007 +v -0.692910 3.212985 -4.250007 +v -0.530331 2.969668 -4.250007 +v -0.287013 2.807089 -4.250007 +v 0.000000 2.749998 -4.250007 +v 0.287012 2.807089 -4.250007 +v 0.530330 2.969668 -4.250007 +v 0.692909 3.212985 -4.250007 +v 0.750000 3.499998 -4.250007 +v 0.692909 3.787011 -4.250007 +v 0.530330 4.030329 -4.250007 +v 0.287012 4.192907 -4.250007 +v 0.000000 4.249998 -6.250007 +v -0.287013 4.192907 -6.250007 +v -0.530331 4.030328 -6.250007 +v -0.692910 3.787011 -6.250007 +v -0.750000 3.499998 -6.250007 +v -0.692910 3.212985 -6.250007 +v -0.530331 2.969668 -6.250007 +v -0.287013 2.807089 -6.250007 +v 0.000000 2.749998 -6.250007 +v 0.287012 2.807089 -6.250007 +v 0.530330 2.969668 -6.250007 +v 0.692909 3.212985 -6.250007 +v 0.750000 3.499998 -6.250007 +v 0.692909 3.787011 -6.250007 +v 0.530330 4.030329 -6.250007 +v 0.287012 4.192907 -6.250007 +v 0.000000 4.749998 -6.250007 +v -0.478354 4.654848 -6.250007 +v -0.883883 4.383882 -6.250007 +v -1.154850 3.978352 -6.250007 +v -1.250000 3.499998 -6.250007 +v -1.154850 3.021645 -6.250007 +v -0.883883 2.616115 -6.250007 +v -0.478354 2.345148 -6.250007 +v 0.000000 2.249998 -6.250007 +v 0.478354 2.345148 -6.250007 +v 0.883883 2.616114 -6.250007 +v 1.154849 3.021644 -6.250007 +v 1.250000 3.499998 -6.250007 +v 1.154849 3.978353 -6.250007 +v 0.883883 4.383883 -6.250007 +v 0.478354 4.654848 -6.250007 +v 0.000000 4.749998 -7.250007 +v -0.478354 4.654848 -7.250007 +v -0.883883 4.383882 -7.250007 +v -1.154850 3.978352 -7.250007 +v -1.250000 3.499998 -7.250007 +v -1.154850 3.021645 -7.250007 +v -0.883883 2.616115 -7.250007 +v -0.478354 2.345148 -7.250007 +v 0.000000 2.249998 -7.250007 +v 0.478354 2.345148 -7.250007 +v 0.883883 2.616114 -7.250007 +v 1.154849 3.021644 -7.250007 +v 1.250000 3.499998 -7.250007 +v 1.154849 3.978353 -7.250007 +v 0.883883 4.383883 -7.250007 +v 0.478354 4.654848 -7.250007 +v 2.000000 3.999998 2.999994 +v 2.000000 4.176775 3.073217 +v 2.000000 4.249998 3.249994 +v 2.000000 4.176775 3.426770 +v 2.000000 3.999998 3.499994 +v 2.000000 3.823221 3.426770 +v 2.000000 3.749998 3.249994 +v 2.000000 3.823221 3.073217 +v 0.875000 3.999998 2.999994 +v 0.875000 4.176775 3.073217 +v 0.875000 4.249998 3.249994 +v 0.875000 4.176775 3.426770 +v 0.875000 3.999998 3.499994 +v 0.875000 3.823221 3.426770 +v 0.875000 3.749998 3.249994 +v 0.875000 3.823221 3.073217 +v 2.176777 3.926775 2.999994 +v 2.301777 4.051775 3.073217 +v 2.353554 4.103552 3.249994 +v 2.301777 4.051775 3.426770 +v 2.176777 3.926775 3.499994 +v 2.051777 3.801775 3.426770 +v 2.051777 3.801775 3.073217 +v 2.250000 3.749998 2.999994 +v 2.426777 3.749998 3.073217 +v 2.500000 3.749998 3.249994 +v 2.426777 3.749998 3.426770 +v 2.250000 3.749998 3.499994 +v 2.073223 3.749998 3.426770 +v 2.073223 3.749998 3.073217 +v 2.000000 1.749998 3.249994 +v 2.250000 1.749998 2.999994 +v 2.426777 1.749998 3.073217 +v 2.500000 1.749998 3.249994 +v 2.426777 1.749998 3.426770 +v 2.250000 1.749998 3.499994 +v 2.073223 1.749998 3.426770 +v 2.073223 1.749998 3.073217 +v 0.875000 2.823221 3.073217 +v 0.875000 2.749998 3.249994 +v 0.875000 2.823221 3.426770 +v 0.875000 2.999998 3.499994 +v 0.875000 3.176775 3.426770 +v 0.875000 3.249998 3.249994 +v 0.875000 3.176775 3.073217 +v 0.875000 2.999998 2.999994 +v 1.500000 2.823221 3.073217 +v 1.500000 2.749998 3.249994 +v 1.500000 2.823221 3.426770 +v 1.500000 2.999998 3.499994 +v 1.500000 3.176775 3.426770 +v 1.500000 3.249998 3.249994 +v 1.500000 3.176775 3.073217 +v 1.500000 2.999998 2.999994 +v 2.073223 1.676775 -3.500006 +v 2.073223 1.323221 -3.500006 +v 2.250000 1.249998 -3.500006 +v 2.426777 1.323221 -3.500006 +v 2.500000 1.499998 -3.500006 +v 2.426777 1.676775 -3.500006 +v 2.000000 1.499998 -3.500006 +v 2.250000 1.749998 -3.500006 +v 2.000000 1.499998 2.999994 +v 2.426777 1.676775 2.999994 +v 2.500000 1.499998 2.999994 +v 2.426777 1.323221 2.999994 +v 2.250000 1.249998 2.999994 +v 2.073223 1.323221 2.999994 +v 2.073223 1.676775 2.999994 +v 2.073223 1.698221 3.051770 +v 2.073223 1.448221 3.301770 +v 2.250000 1.396444 3.353547 +v 2.426777 1.448221 3.301770 +v 2.500000 1.573221 3.176770 +v 2.426777 1.698221 3.051770 +v 2.000000 1.573221 3.176770 +v 1.676777 2.926775 2.999994 +v 1.801777 3.051775 3.073217 +v 1.853554 3.103552 3.249994 +v 1.801777 3.051775 3.426770 +v 1.676777 2.926775 3.499994 +v 1.551777 2.801775 3.426770 +v 1.551777 2.801775 3.073217 +v 1.750000 2.749998 2.999994 +v 1.926777 2.749998 3.073217 +v 2.000000 2.749998 3.249994 +v 1.926777 2.749998 3.426770 +v 1.750000 2.749998 3.499994 +v 1.573223 2.749998 3.426770 +v 1.573223 2.749998 3.073217 +v 1.500000 1.749998 3.249994 +v 1.750000 1.749998 2.999994 +v 1.926777 1.749998 3.073217 +v 2.000000 1.749998 3.249994 +v 1.926777 1.749998 3.426770 +v 1.750000 1.749998 3.499994 +v 1.573223 1.749998 3.426770 +v 1.573223 1.749998 3.073217 +v 1.573223 1.676775 -3.500006 +v 1.573223 1.323221 -3.500006 +v 1.750000 1.249998 -3.500006 +v 1.926777 1.323221 -3.500006 +v 2.000000 1.499998 -3.500006 +v 1.926777 1.676775 -3.500006 +v 1.500000 1.499998 -3.500006 +v 1.750000 1.749998 -3.500006 +v 1.500000 1.499998 2.999994 +v 1.926777 1.676775 2.999994 +v 2.000000 1.499998 2.999994 +v 1.926777 1.323221 2.999994 +v 1.750000 1.249998 2.999994 +v 1.573223 1.323221 2.999994 +v 1.573223 1.676775 2.999994 +v 1.573223 1.698221 3.051770 +v 1.573223 1.448221 3.301770 +v 1.750000 1.396444 3.353547 +v 1.926777 1.448221 3.301770 +v 2.000000 1.573221 3.176770 +v 1.926777 1.698221 3.051770 +v 1.500000 1.573221 3.176770 +v 2.000000 3.999998 -1.000006 +v 2.000000 4.176775 -0.926783 +v 2.000000 4.249998 -0.750006 +v 2.000000 4.176775 -0.573230 +v 2.000000 3.999998 -0.500006 +v 2.000000 3.823221 -0.573230 +v 2.000000 3.749998 -0.750006 +v 2.000000 3.823221 -0.926783 +v 0.875000 3.999998 -1.000006 +v 0.875000 4.176775 -0.926783 +v 0.875000 4.249998 -0.750006 +v 0.875000 4.176775 -0.573230 +v 0.875000 3.999998 -0.500006 +v 0.875000 3.823221 -0.573230 +v 0.875000 3.749998 -0.750006 +v 0.875000 3.823221 -0.926783 +v 2.176777 3.926775 -1.000006 +v 2.301777 4.051775 -0.926783 +v 2.353554 4.103552 -0.750006 +v 2.301777 4.051775 -0.573230 +v 2.176777 3.926775 -0.500006 +v 2.051777 3.801775 -0.573230 +v 2.051777 3.801775 -0.926783 +v 2.250000 3.749998 -1.000006 +v 2.426777 3.749998 -0.926783 +v 2.500000 3.749998 -0.750006 +v 2.426777 3.749998 -0.573230 +v 2.250000 3.749998 -0.500006 +v 2.073223 3.749998 -0.573230 +v 2.073223 3.749998 -0.926783 +v 2.000000 2.249998 -0.750006 +v 2.250000 2.249998 -1.000006 +v 2.426777 2.249998 -0.926783 +v 2.500000 2.249998 -0.750006 +v 2.426777 2.249998 -0.573230 +v 2.250000 2.249998 -0.500006 +v 2.073223 2.249998 -0.573230 +v 2.073223 2.249998 -0.926783 +v 0.875000 2.823221 -0.926783 +v 0.875000 2.749998 -0.750006 +v 0.875000 2.823221 -0.573230 +v 0.875000 2.999998 -0.500006 +v 0.875000 3.176775 -0.573230 +v 0.875000 3.249998 -0.750006 +v 0.875000 3.176775 -0.926783 +v 0.875000 2.999998 -1.000006 +v 1.500000 2.823221 -0.926783 +v 1.500000 2.749998 -0.750006 +v 1.500000 2.823221 -0.573230 +v 1.500000 2.999998 -0.500006 +v 1.500000 3.176775 -0.573230 +v 1.500000 3.249998 -0.750006 +v 1.500000 3.176775 -0.926783 +v 1.500000 2.999998 -1.000006 +v 2.073223 2.176775 -3.500006 +v 2.073223 1.823221 -3.500006 +v 2.250000 1.749998 -3.500006 +v 2.426777 1.823221 -3.500006 +v 2.500000 1.999998 -3.500006 +v 2.426777 2.176775 -3.500006 +v 2.000000 1.999998 -3.500006 +v 2.250000 2.249998 -3.500006 +v 2.000000 1.999998 -1.000006 +v 2.426777 2.176775 -1.000006 +v 2.500000 1.999998 -1.000006 +v 2.426777 1.823221 -1.000006 +v 2.250000 1.749998 -1.000006 +v 2.073223 1.823221 -1.000006 +v 2.073223 2.176775 -1.000006 +v 2.073223 2.198221 -0.948230 +v 2.073223 1.948221 -0.698230 +v 2.250000 1.896444 -0.646453 +v 2.426777 1.948221 -0.698230 +v 2.500000 2.073221 -0.823230 +v 2.426777 2.198221 -0.948230 +v 2.000000 2.073221 -0.823230 +v 1.676777 2.926775 -1.000006 +v 1.801777 3.051775 -0.926783 +v 1.853554 3.103552 -0.750006 +v 1.801777 3.051775 -0.573230 +v 1.676777 2.926775 -0.500006 +v 1.551777 2.801775 -0.573230 +v 1.551777 2.801775 -0.926783 +v 1.750000 2.749998 -1.000006 +v 1.926777 2.749998 -0.926783 +v 2.000000 2.749998 -0.750006 +v 1.926777 2.749998 -0.573230 +v 1.750000 2.749998 -0.500006 +v 1.573223 2.749998 -0.573230 +v 1.573223 2.749998 -0.926783 +v 1.500000 2.249998 -0.750006 +v 1.750000 2.249998 -1.000006 +v 1.926777 2.249998 -0.926783 +v 2.000000 2.249998 -0.750006 +v 1.926777 2.249998 -0.573230 +v 1.750000 2.249998 -0.500006 +v 1.573223 2.249998 -0.573230 +v 1.573223 2.249998 -0.926783 +v 1.573223 2.176775 -3.500006 +v 1.573223 1.823221 -3.500006 +v 1.750000 1.749998 -3.500006 +v 1.926777 1.823221 -3.500006 +v 2.000000 1.999998 -3.500006 +v 1.926777 2.176775 -3.500006 +v 1.500000 1.999998 -3.500006 +v 1.750000 2.249998 -3.500006 +v 1.500000 1.999998 -1.000006 +v 1.926777 2.176775 -1.000006 +v 2.000000 1.999998 -1.000006 +v 1.926777 1.823221 -1.000006 +v 1.750000 1.749998 -1.000006 +v 1.573223 1.823221 -1.000006 +v 1.573223 2.176775 -1.000006 +v 1.573223 2.198221 -0.948230 +v 1.573223 1.948221 -0.698230 +v 1.750000 1.896444 -0.646453 +v 1.926777 1.948221 -0.698230 +v 2.000000 2.073221 -0.823230 +v 1.926777 2.198221 -0.948230 +v 1.500000 2.073221 -0.823230 +v 1.750000 5.749998 -7.250007 +v 1.396446 5.603552 -7.250007 +v 1.250000 5.249998 -7.250007 +v 1.396446 4.896445 -7.250007 +v 1.750000 4.749998 -7.250007 +v 2.103553 4.896445 -7.250007 +v 2.250000 5.249998 -7.250007 +v 2.103553 5.603552 -7.250007 +v 1.396446 5.603552 -7.750007 +v 1.750000 5.749998 -7.750007 +v 1.250000 5.249998 -7.750007 +v 1.396446 4.896445 -7.750007 +v 1.750000 4.749998 -7.750007 +v 2.103553 4.896445 -7.750007 +v 2.250000 5.249998 -7.750007 +v 2.103553 5.603552 -7.750007 +v 0.000000 4.000000 -7.750007 +v -0.191342 3.961939 -7.750007 +v -0.353554 3.853553 -7.750007 +v -0.461940 3.691341 -7.750007 +v -0.500000 3.500000 -7.750008 +v -0.461940 3.308658 -7.750008 +v -0.353554 3.146446 -7.750008 +v -0.191342 3.038059 -7.750008 +v 0.000000 3.000000 -7.750008 +v 0.191341 3.038059 -7.750008 +v 0.353553 3.146446 -7.750008 +v 0.461940 3.308658 -7.750008 +v 0.500000 3.500000 -7.750008 +v 0.461940 3.691341 -7.750007 +v 0.353553 3.853553 -7.750007 +v 0.191341 3.961939 -7.750007 +v 0.353552 2.792892 -7.000007 +v 0.707106 3.146445 -7.000007 +v 0.353552 2.792892 -7.500007 +v 0.707106 3.146445 -7.500007 +v 1.414212 1.732232 -7.000007 +v 1.767765 2.085785 -7.000007 +v 1.767765 1.378678 -7.500007 +v 2.121319 1.732231 -7.500007 +v 0.707108 3.853552 -7.000007 +v 0.353554 4.207106 -7.000007 +v 0.707108 3.853552 -7.500007 +v 0.353554 4.207106 -7.500007 +v 1.767768 4.914212 -7.000007 +v 1.414214 5.267765 -7.000007 +v 2.121321 5.267765 -7.500007 +v 1.767768 5.621319 -7.500007 +v -0.353553 4.207108 -7.000007 +v -0.707106 3.853554 -7.000007 +v -0.353553 4.207108 -7.500007 +v -0.707106 3.853554 -7.500007 +v -1.414212 5.267768 -7.000007 +v -1.767766 4.914215 -7.000007 +v -1.767766 5.621322 -7.500007 +v -2.121319 5.267768 -7.500007 +v -0.707108 3.146447 -7.000007 +v -0.353555 2.792894 -7.000007 +v -0.707108 3.146447 -7.500007 +v -0.353555 2.792894 -7.500007 +v -1.767768 2.085787 -7.000007 +v -1.414215 1.732234 -7.000007 +v -2.121323 1.732234 -7.500007 +v -1.767769 1.378681 -7.500007 +v -1.750000 5.749998 -7.250007 +v -2.103554 5.603552 -7.250007 +v -2.250000 5.249998 -7.250007 +v -2.103554 4.896445 -7.250007 +v -1.750000 4.749998 -7.250007 +v -1.396447 4.896445 -7.250007 +v -1.250000 5.249998 -7.250007 +v -1.396447 5.603552 -7.250007 +v -2.103554 5.603552 -7.750007 +v -1.750000 5.749998 -7.750007 +v -2.250000 5.249998 -7.750007 +v -2.103554 4.896445 -7.750007 +v -1.750000 4.749998 -7.750007 +v -1.396447 4.896445 -7.750007 +v -1.250000 5.249998 -7.750007 +v -1.396447 5.603552 -7.750007 +v -1.750000 2.249998 -7.250007 +v -2.103554 2.103552 -7.250007 +v -2.250000 1.749998 -7.250007 +v -2.103554 1.396445 -7.250007 +v -1.750000 1.249998 -7.250007 +v -1.396447 1.396445 -7.250007 +v -1.250000 1.749998 -7.250007 +v -1.396447 2.103552 -7.250007 +v -2.103554 2.103552 -7.750007 +v -1.750000 2.249998 -7.750007 +v -2.250000 1.749998 -7.750007 +v -2.103554 1.396445 -7.750007 +v -1.750000 1.249998 -7.750007 +v -1.396447 1.396445 -7.750007 +v -1.250000 1.749998 -7.750007 +v -1.396447 2.103552 -7.750007 +v 1.750000 2.249998 -7.250007 +v 1.396446 2.103552 -7.250007 +v 1.250000 1.749998 -7.250007 +v 1.396446 1.396445 -7.250007 +v 1.750000 1.249998 -7.250007 +v 2.103553 1.396445 -7.250007 +v 2.250000 1.749998 -7.250007 +v 2.103553 2.103552 -7.250007 +v 1.396446 2.103552 -7.750007 +v 1.750000 2.249998 -7.750007 +v 1.250000 1.749998 -7.750007 +v 1.396446 1.396445 -7.750007 +v 1.750000 1.249998 -7.750007 +v 2.103553 1.396445 -7.750007 +v 2.250000 1.749998 -7.750007 +v 2.103553 2.103552 -7.750007 +v -2.000000 3.999998 2.999994 +v -2.000000 4.176775 3.073217 +v -2.000000 4.249998 3.249994 +v -2.000000 4.176775 3.426770 +v -2.000000 3.999998 3.499994 +v -2.000000 3.823221 3.426770 +v -2.000000 3.749998 3.249994 +v -2.000000 3.823221 3.073217 +v -0.875000 3.999998 2.999994 +v -0.875000 4.176775 3.073217 +v -0.875000 4.249998 3.249994 +v -0.875000 4.176775 3.426770 +v -0.875000 3.999998 3.499994 +v -0.875000 3.823221 3.426770 +v -0.875000 3.749998 3.249994 +v -0.875000 3.823221 3.073217 +v -2.176777 3.926775 2.999994 +v -2.301777 4.051775 3.073217 +v -2.353554 4.103552 3.249994 +v -2.301777 4.051775 3.426770 +v -2.176777 3.926775 3.499994 +v -2.051777 3.801775 3.426770 +v -2.051777 3.801775 3.073217 +v -2.250000 3.749998 2.999994 +v -2.426777 3.749998 3.073217 +v -2.500000 3.749998 3.249994 +v -2.426777 3.749998 3.426770 +v -2.250000 3.749998 3.499994 +v -2.073223 3.749998 3.426770 +v -2.073223 3.749998 3.073217 +v -2.000000 1.749998 3.249994 +v -2.250000 1.749998 2.999994 +v -2.426777 1.749998 3.073217 +v -2.500000 1.749998 3.249994 +v -2.426777 1.749998 3.426770 +v -2.250000 1.749998 3.499994 +v -2.073223 1.749998 3.426770 +v -2.073223 1.749998 3.073217 +v -0.875000 2.823221 3.073217 +v -0.875000 2.749998 3.249994 +v -0.875000 2.823221 3.426770 +v -0.875000 2.999998 3.499994 +v -0.875000 3.176775 3.426770 +v -0.875000 3.249998 3.249994 +v -0.875000 3.176775 3.073217 +v -0.875000 2.999998 2.999994 +v -1.500000 2.823221 3.073217 +v -1.500000 2.749998 3.249994 +v -1.500000 2.823221 3.426770 +v -1.500000 2.999998 3.499994 +v -1.500000 3.176775 3.426770 +v -1.500000 3.249998 3.249994 +v -1.500000 3.176775 3.073217 +v -1.500000 2.999998 2.999994 +v -2.073223 1.676775 -3.500006 +v -2.073223 1.323221 -3.500006 +v -2.250000 1.249998 -3.500006 +v -2.426777 1.323221 -3.500006 +v -2.500000 1.499998 -3.500006 +v -2.426777 1.676775 -3.500006 +v -2.000000 1.499998 -3.500006 +v -2.250000 1.749998 -3.500006 +v -2.000000 1.499998 2.999994 +v -2.426777 1.676775 2.999994 +v -2.500000 1.499998 2.999994 +v -2.426777 1.323221 2.999994 +v -2.250000 1.249998 2.999994 +v -2.073223 1.323221 2.999994 +v -2.073223 1.676775 2.999994 +v -2.073223 1.698221 3.051770 +v -2.073223 1.448221 3.301770 +v -2.250000 1.396444 3.353547 +v -2.426777 1.448221 3.301770 +v -2.500000 1.573221 3.176770 +v -2.426777 1.698221 3.051770 +v -2.000000 1.573221 3.176770 +v -1.676777 2.926775 2.999994 +v -1.801777 3.051775 3.073217 +v -1.853554 3.103552 3.249994 +v -1.801777 3.051775 3.426770 +v -1.676777 2.926775 3.499994 +v -1.551777 2.801775 3.426770 +v -1.551777 2.801775 3.073217 +v -1.750000 2.749998 2.999994 +v -1.926777 2.749998 3.073217 +v -2.000000 2.749998 3.249994 +v -1.926777 2.749998 3.426770 +v -1.750000 2.749998 3.499994 +v -1.573223 2.749998 3.426770 +v -1.573223 2.749998 3.073217 +v -1.500000 1.749998 3.249994 +v -1.750000 1.749998 2.999994 +v -1.926777 1.749998 3.073217 +v -2.000000 1.749998 3.249994 +v -1.926777 1.749998 3.426770 +v -1.750000 1.749998 3.499994 +v -1.573223 1.749998 3.426770 +v -1.573223 1.749998 3.073217 +v -1.573223 1.676775 -3.500006 +v -1.573223 1.323221 -3.500006 +v -1.750000 1.249998 -3.500006 +v -1.926777 1.323221 -3.500006 +v -2.000000 1.499998 -3.500006 +v -1.926777 1.676775 -3.500006 +v -1.500000 1.499998 -3.500006 +v -1.750000 1.749998 -3.500006 +v -1.500000 1.499998 2.999994 +v -1.926777 1.676775 2.999994 +v -2.000000 1.499998 2.999994 +v -1.926777 1.323221 2.999994 +v -1.750000 1.249998 2.999994 +v -1.573223 1.323221 2.999994 +v -1.573223 1.676775 2.999994 +v -1.573223 1.698221 3.051770 +v -1.573223 1.448221 3.301770 +v -1.750000 1.396444 3.353547 +v -1.926777 1.448221 3.301770 +v -2.000000 1.573221 3.176770 +v -1.926777 1.698221 3.051770 +v -1.500000 1.573221 3.176770 +v -2.000000 3.999998 -1.000006 +v -2.000000 4.176775 -0.926783 +v -2.000000 4.249998 -0.750006 +v -2.000000 4.176775 -0.573230 +v -2.000000 3.999998 -0.500006 +v -2.000000 3.823221 -0.573230 +v -2.000000 3.749998 -0.750006 +v -2.000000 3.823221 -0.926783 +v -0.875000 3.999998 -1.000006 +v -0.875000 4.176775 -0.926783 +v -0.875000 4.249998 -0.750006 +v -0.875000 4.176775 -0.573230 +v -0.875000 3.999998 -0.500006 +v -0.875000 3.823221 -0.573230 +v -0.875000 3.749998 -0.750006 +v -0.875000 3.823221 -0.926783 +v -2.176777 3.926775 -1.000006 +v -2.301777 4.051775 -0.926783 +v -2.353554 4.103552 -0.750006 +v -2.301777 4.051775 -0.573230 +v -2.176777 3.926775 -0.500006 +v -2.051777 3.801775 -0.573230 +v -2.051777 3.801775 -0.926783 +v -2.250000 3.749998 -1.000006 +v -2.426777 3.749998 -0.926783 +v -2.500000 3.749998 -0.750006 +v -2.426777 3.749998 -0.573230 +v -2.250000 3.749998 -0.500006 +v -2.073223 3.749998 -0.573230 +v -2.073223 3.749998 -0.926783 +v -2.000000 2.249998 -0.750006 +v -2.250000 2.249998 -1.000006 +v -2.426777 2.249998 -0.926783 +v -2.500000 2.249998 -0.750006 +v -2.426777 2.249998 -0.573230 +v -2.250000 2.249998 -0.500006 +v -2.073223 2.249998 -0.573230 +v -2.073223 2.249998 -0.926783 +v -0.875000 2.823221 -0.926783 +v -0.875000 2.749998 -0.750006 +v -0.875000 2.823221 -0.573230 +v -0.875000 2.999998 -0.500006 +v -0.875000 3.176775 -0.573230 +v -0.875000 3.249998 -0.750006 +v -0.875000 3.176775 -0.926783 +v -0.875000 2.999998 -1.000006 +v -1.500000 2.823221 -0.926783 +v -1.500000 2.749998 -0.750006 +v -1.500000 2.823221 -0.573230 +v -1.500000 2.999998 -0.500006 +v -1.500000 3.176775 -0.573230 +v -1.500000 3.249998 -0.750006 +v -1.500000 3.176775 -0.926783 +v -1.500000 2.999998 -1.000006 +v -2.073223 2.176775 -3.500006 +v -2.073223 1.823221 -3.500006 +v -2.250000 1.749998 -3.500006 +v -2.426777 1.823221 -3.500006 +v -2.500000 1.999998 -3.500006 +v -2.426777 2.176775 -3.500006 +v -2.000000 1.999998 -3.500006 +v -2.250000 2.249998 -3.500006 +v -2.000000 1.999998 -1.000006 +v -2.426777 2.176775 -1.000006 +v -2.500000 1.999998 -1.000006 +v -2.426777 1.823221 -1.000006 +v -2.250000 1.749998 -1.000006 +v -2.073223 1.823221 -1.000006 +v -2.073223 2.176775 -1.000006 +v -2.073223 2.198221 -0.948230 +v -2.073223 1.948221 -0.698230 +v -2.250000 1.896444 -0.646453 +v -2.426777 1.948221 -0.698230 +v -2.500000 2.073221 -0.823230 +v -2.426777 2.198221 -0.948230 +v -2.000000 2.073221 -0.823230 +v -1.676777 2.926775 -1.000006 +v -1.801777 3.051775 -0.926783 +v -1.853554 3.103552 -0.750006 +v -1.801777 3.051775 -0.573230 +v -1.676777 2.926775 -0.500006 +v -1.551777 2.801775 -0.573230 +v -1.551777 2.801775 -0.926783 +v -1.750000 2.749998 -1.000006 +v -1.926777 2.749998 -0.926783 +v -2.000000 2.749998 -0.750006 +v -1.926777 2.749998 -0.573230 +v -1.750000 2.749998 -0.500006 +v -1.573223 2.749998 -0.573230 +v -1.573223 2.749998 -0.926783 +v -1.500000 2.249998 -0.750006 +v -1.750000 2.249998 -1.000006 +v -1.926777 2.249998 -0.926783 +v -2.000000 2.249998 -0.750006 +v -1.926777 2.249998 -0.573230 +v -1.750000 2.249998 -0.500006 +v -1.573223 2.249998 -0.573230 +v -1.573223 2.249998 -0.926783 +v -1.573223 2.176775 -3.500006 +v -1.573223 1.823221 -3.500006 +v -1.750000 1.749998 -3.500006 +v -1.926777 1.823221 -3.500006 +v -2.000000 1.999998 -3.500006 +v -1.926777 2.176775 -3.500006 +v -1.500000 1.999998 -3.500006 +v -1.750000 2.249998 -3.500006 +v -1.500000 1.999998 -1.000006 +v -1.926777 2.176775 -1.000006 +v -2.000000 1.999998 -1.000006 +v -1.926777 1.823221 -1.000006 +v -1.750000 1.749998 -1.000006 +v -1.573223 1.823221 -1.000006 +v -1.573223 2.176775 -1.000006 +v -1.573223 2.198221 -0.948230 +v -1.573223 1.948221 -0.698230 +v -1.750000 1.896444 -0.646453 +v -1.926777 1.948221 -0.698230 +v -2.000000 2.073221 -0.823230 +v -1.926777 2.198221 -0.948230 +v -1.500000 2.073221 -0.823230 +vt 0.189329 0.513954 +vt 0.179002 0.488372 +vt 0.189329 0.493023 +vt 0.189329 0.546512 +vt 0.179002 0.520930 +vt 0.189329 0.525581 +vt 0.189329 0.579070 +vt 0.179002 0.553488 +vt 0.189329 0.558140 +vt 0.189329 0.590698 +vt 0.179002 0.618605 +vt 0.179002 0.586047 +vt 0.189329 0.623256 +vt 0.179002 0.651163 +vt 0.189329 0.655814 +vt 0.179002 0.683721 +vt 0.189329 0.688372 +vt 0.179002 0.716279 +vt 0.189329 0.720930 +vt 0.179002 0.748837 +vt 0.189329 0.774419 +vt 0.189329 0.753488 +vt 0.189329 0.786047 +vt 0.179002 0.813953 +vt 0.179002 0.781395 +vt 0.189329 0.318605 +vt 0.179002 0.293023 +vt 0.189329 0.297674 +vt 0.189329 0.351163 +vt 0.179002 0.325581 +vt 0.189329 0.330233 +vt 0.189329 0.383721 +vt 0.179002 0.358140 +vt 0.189329 0.362791 +vt 0.189329 0.416279 +vt 0.179002 0.390698 +vt 0.189329 0.395349 +vt 0.189329 0.427907 +vt 0.179002 0.455814 +vt 0.179002 0.423256 +vt 0.189329 0.481395 +vt 0.189329 0.460465 +vt 0.173838 0.455814 +vt 0.163511 0.481395 +vt 0.163511 0.460465 +vt 0.173838 0.488372 +vt 0.163511 0.513954 +vt 0.163511 0.493023 +vt 0.173838 0.520930 +vt 0.163511 0.546512 +vt 0.163511 0.525581 +vt 0.173838 0.553488 +vt 0.163511 0.579070 +vt 0.163511 0.558140 +vt 0.163511 0.590698 +vt 0.173838 0.618605 +vt 0.163511 0.611628 +vt 0.163511 0.623256 +vt 0.173838 0.651163 +vt 0.163511 0.644186 +vt 0.163511 0.655814 +vt 0.173838 0.683721 +vt 0.163511 0.676744 +vt 0.163511 0.688372 +vt 0.173838 0.716279 +vt 0.163511 0.709302 +vt 0.163511 0.720930 +vt 0.173838 0.748837 +vt 0.163511 0.741860 +vt 0.163511 0.774419 +vt 0.163511 0.753488 +vt 0.163511 0.786047 +vt 0.173838 0.813953 +vt 0.163511 0.806977 +vt 0.173838 0.293023 +vt 0.163511 0.318605 +vt 0.163511 0.297674 +vt 0.173838 0.325581 +vt 0.163511 0.351163 +vt 0.163511 0.330233 +vt 0.173838 0.358140 +vt 0.163511 0.383721 +vt 0.163511 0.362791 +vt 0.173838 0.390698 +vt 0.163511 0.416279 +vt 0.163511 0.395349 +vt 0.163511 0.427907 +vt 0.163511 0.448837 +vt 0.215146 0.513954 +vt 0.204819 0.488372 +vt 0.215146 0.493023 +vt 0.215146 0.546512 +vt 0.204819 0.520930 +vt 0.215146 0.525581 +vt 0.215146 0.579070 +vt 0.204819 0.553488 +vt 0.215146 0.558140 +vt 0.215146 0.590698 +vt 0.204819 0.618605 +vt 0.204819 0.586047 +vt 0.215146 0.623256 +vt 0.204819 0.651163 +vt 0.215146 0.655814 +vt 0.204819 0.683721 +vt 0.215146 0.688372 +vt 0.204819 0.716279 +vt 0.215146 0.720930 +vt 0.204819 0.748837 +vt 0.215146 0.774419 +vt 0.215146 0.753488 +vt 0.215146 0.786047 +vt 0.204819 0.813953 +vt 0.204819 0.781395 +vt 0.215146 0.318605 +vt 0.204819 0.293023 +vt 0.215146 0.297674 +vt 0.215146 0.351163 +vt 0.204819 0.325581 +vt 0.215146 0.330233 +vt 0.215146 0.383721 +vt 0.204819 0.358140 +vt 0.215146 0.362791 +vt 0.215146 0.416279 +vt 0.204819 0.390698 +vt 0.215146 0.395349 +vt 0.215146 0.427907 +vt 0.204819 0.455814 +vt 0.204819 0.423256 +vt 0.215146 0.481395 +vt 0.215146 0.460465 +vt 0.199656 0.455814 +vt 0.189329 0.481395 +vt 0.189329 0.460465 +vt 0.199656 0.488372 +vt 0.189329 0.513954 +vt 0.189329 0.493023 +vt 0.199656 0.520930 +vt 0.189329 0.546512 +vt 0.189329 0.525581 +vt 0.199656 0.553488 +vt 0.189329 0.579070 +vt 0.189329 0.558140 +vt 0.189329 0.590698 +vt 0.199656 0.618605 +vt 0.189329 0.611628 +vt 0.189329 0.623256 +vt 0.199656 0.651163 +vt 0.189329 0.644186 +vt 0.189329 0.655814 +vt 0.199656 0.683721 +vt 0.189329 0.676744 +vt 0.189329 0.688372 +vt 0.199656 0.716279 +vt 0.189329 0.709302 +vt 0.189329 0.720930 +vt 0.199656 0.748837 +vt 0.189329 0.741860 +vt 0.189329 0.774419 +vt 0.189329 0.753488 +vt 0.189329 0.786047 +vt 0.199656 0.813953 +vt 0.189329 0.806977 +vt 0.199656 0.293023 +vt 0.189329 0.318605 +vt 0.189329 0.297674 +vt 0.199656 0.325581 +vt 0.189329 0.351163 +vt 0.189329 0.330233 +vt 0.199656 0.358140 +vt 0.189329 0.383721 +vt 0.189329 0.362791 +vt 0.199656 0.390698 +vt 0.189329 0.416279 +vt 0.189329 0.395349 +vt 0.189329 0.427907 +vt 0.189329 0.448837 +vt 0.072289 0.476744 +vt 0.075732 0.465116 +vt 0.075732 0.476744 +vt 0.072289 0.441860 +vt 0.075732 0.455814 +vt 0.072289 0.455814 +vt 0.072289 0.309302 +vt 0.075732 0.297674 +vt 0.075732 0.309302 +vt 0.072289 0.497674 +vt 0.075732 0.486047 +vt 0.075732 0.497674 +vt 0.072289 0.330233 +vt 0.075732 0.318605 +vt 0.075732 0.330233 +vt 0.072289 0.518605 +vt 0.075732 0.506977 +vt 0.075732 0.518605 +vt 0.072289 0.337209 +vt 0.075732 0.351163 +vt 0.072289 0.351163 +vt 0.072289 0.539535 +vt 0.075732 0.527907 +vt 0.075732 0.539535 +vt 0.072289 0.358140 +vt 0.075732 0.372093 +vt 0.072289 0.372093 +vt 0.072289 0.546512 +vt 0.075732 0.560465 +vt 0.072289 0.560465 +vt 0.072289 0.393023 +vt 0.075732 0.381395 +vt 0.075732 0.393023 +vt 0.072289 0.581395 +vt 0.075732 0.569767 +vt 0.075732 0.581395 +vt 0.072289 0.413953 +vt 0.075732 0.402326 +vt 0.075732 0.413953 +vt 0.072289 0.588372 +vt 0.075732 0.602326 +vt 0.072289 0.602326 +vt 0.072289 0.434884 +vt 0.075732 0.423256 +vt 0.075732 0.434884 +vt 0.072289 0.609302 +vt 0.075732 0.623256 +vt 0.072289 0.623256 +vt 0.110155 0.386046 +vt 0.103270 0.400000 +vt 0.103270 0.388372 +vt 0.103270 0.406977 +vt 0.110155 0.423256 +vt 0.103270 0.418605 +vt 0.103270 0.437209 +vt 0.103270 0.425581 +vt 0.103270 0.444186 +vt 0.110155 0.460465 +vt 0.103270 0.455814 +vt 0.103270 0.462791 +vt 0.110155 0.479070 +vt 0.103270 0.474419 +vt 0.103270 0.493023 +vt 0.103270 0.481395 +vt 0.103270 0.500000 +vt 0.110155 0.516279 +vt 0.103270 0.511628 +vt 0.103270 0.530233 +vt 0.103270 0.518605 +vt 0.103270 0.537209 +vt 0.110155 0.553488 +vt 0.103270 0.548837 +vt 0.103270 0.567442 +vt 0.103270 0.555814 +vt 0.110155 0.572093 +vt 0.103270 0.586047 +vt 0.103270 0.574419 +vt 0.103270 0.295349 +vt 0.110155 0.311628 +vt 0.103270 0.306977 +vt 0.103270 0.313953 +vt 0.110155 0.330233 +vt 0.103270 0.325581 +vt 0.103270 0.332558 +vt 0.110155 0.348837 +vt 0.103270 0.344186 +vt 0.103270 0.362791 +vt 0.103270 0.351163 +vt 0.103270 0.369767 +vt 0.103270 0.381395 +vt 0.130809 0.388372 +vt 0.123924 0.404651 +vt 0.123924 0.386046 +vt 0.130809 0.406977 +vt 0.123924 0.423256 +vt 0.130809 0.437209 +vt 0.123924 0.441860 +vt 0.130809 0.444186 +vt 0.123924 0.460465 +vt 0.130809 0.462791 +vt 0.123924 0.479070 +vt 0.130809 0.493023 +vt 0.123924 0.497674 +vt 0.130809 0.500000 +vt 0.123924 0.516279 +vt 0.130809 0.530233 +vt 0.123924 0.534884 +vt 0.130809 0.537209 +vt 0.123924 0.553488 +vt 0.130809 0.567442 +vt 0.123924 0.572093 +vt 0.130809 0.586047 +vt 0.123924 0.590698 +vt 0.130809 0.295349 +vt 0.123924 0.311628 +vt 0.123924 0.293023 +vt 0.130809 0.313953 +vt 0.123924 0.330233 +vt 0.130809 0.332558 +vt 0.123924 0.348837 +vt 0.130809 0.362791 +vt 0.123924 0.367442 +vt 0.130809 0.369767 +vt 0.130809 0.406977 +vt 0.137694 0.423256 +vt 0.130809 0.418605 +vt 0.130809 0.437209 +vt 0.130809 0.425581 +vt 0.130809 0.444186 +vt 0.137694 0.460465 +vt 0.130809 0.455814 +vt 0.130809 0.462791 +vt 0.137694 0.479070 +vt 0.130809 0.474419 +vt 0.130809 0.493023 +vt 0.130809 0.481395 +vt 0.130809 0.500000 +vt 0.137694 0.516279 +vt 0.130809 0.511628 +vt 0.130809 0.530233 +vt 0.130809 0.518605 +vt 0.130809 0.537209 +vt 0.137694 0.553488 +vt 0.130809 0.548837 +vt 0.130809 0.567442 +vt 0.130809 0.555814 +vt 0.137694 0.572093 +vt 0.130809 0.586047 +vt 0.130809 0.574419 +vt 0.130809 0.295349 +vt 0.137694 0.311628 +vt 0.130809 0.306977 +vt 0.130809 0.313953 +vt 0.137694 0.330233 +vt 0.130809 0.325581 +vt 0.130809 0.332558 +vt 0.137694 0.348837 +vt 0.130809 0.344186 +vt 0.130809 0.362791 +vt 0.130809 0.351163 +vt 0.130809 0.369767 +vt 0.137694 0.386046 +vt 0.130809 0.381395 +vt 0.130809 0.400000 +vt 0.130809 0.388372 +vt 0.796866 0.623256 +vt 0.794860 0.636342 +vt 0.790017 0.641762 +vt 0.790017 0.641959 +vt 0.794860 0.647379 +vt 0.796866 0.660465 +vt 0.142548 0.622421 +vt 0.132839 0.622421 +vt 0.132839 0.596184 +vt 0.879518 0.409302 +vt 0.907057 0.427907 +vt 0.879518 0.427907 +vt 0.907057 0.390698 +vt 0.900172 0.372093 +vt 0.907057 0.372093 +vt 0.900172 0.390698 +vt 0.879518 0.372093 +vt 0.879518 0.353488 +vt 0.907057 0.409302 +vt 0.879518 0.483721 +vt 0.907057 0.502326 +vt 0.879518 0.502326 +vt 0.907057 0.446512 +vt 0.900172 0.465116 +vt 0.900172 0.446512 +vt 0.879518 0.446512 +vt 0.879518 0.427907 +vt 0.907057 0.483721 +vt 0.851979 0.502326 +vt 0.879518 0.483721 +vt 0.879518 0.502326 +vt 0.879518 0.465116 +vt 0.872633 0.446512 +vt 0.879518 0.446512 +vt 0.872633 0.465116 +vt 0.851979 0.446512 +vt 0.851979 0.427907 +vt 0.851979 0.483721 +vt 0.851979 0.427907 +vt 0.879518 0.409302 +vt 0.879518 0.427907 +vt 0.879518 0.390698 +vt 0.872633 0.372093 +vt 0.879518 0.372093 +vt 0.872633 0.390698 +vt 0.851979 0.372093 +vt 0.851979 0.353488 +vt 0.851979 0.409302 +vt 0.796866 0.623256 +vt 0.794860 0.636342 +vt 0.790017 0.641762 +vt 0.790017 0.641959 +vt 0.794860 0.647379 +vt 0.796866 0.660465 +vt 0.796866 0.623256 +vt 0.794860 0.636342 +vt 0.790017 0.641762 +vt 0.790017 0.641959 +vt 0.794860 0.647379 +vt 0.796866 0.660465 +vt 0.796866 0.623256 +vt 0.794860 0.636342 +vt 0.790017 0.641762 +vt 0.790017 0.641959 +vt 0.794860 0.647379 +vt 0.796866 0.660465 +vt 0.189329 0.611628 +vt 0.189329 0.644186 +vt 0.189329 0.676744 +vt 0.189329 0.709302 +vt 0.189329 0.741860 +vt 0.189329 0.806977 +vt 0.189329 0.448837 +vt 0.173838 0.586047 +vt 0.173838 0.781395 +vt 0.173838 0.423256 +vt 0.215146 0.611628 +vt 0.215146 0.644186 +vt 0.215146 0.676744 +vt 0.215146 0.709302 +vt 0.215146 0.741860 +vt 0.215146 0.806977 +vt 0.215146 0.448837 +vt 0.199656 0.586047 +vt 0.199656 0.781395 +vt 0.199656 0.423256 +vt 0.072289 0.462791 +vt 0.075732 0.444186 +vt 0.072289 0.295349 +vt 0.072289 0.483721 +vt 0.072289 0.316279 +vt 0.072289 0.504651 +vt 0.075732 0.339535 +vt 0.072289 0.525581 +vt 0.075732 0.360465 +vt 0.075732 0.548837 +vt 0.072289 0.379070 +vt 0.072289 0.567442 +vt 0.072289 0.400000 +vt 0.075732 0.590698 +vt 0.072289 0.420930 +vt 0.075732 0.611628 +vt 0.110155 0.404651 +vt 0.110155 0.441860 +vt 0.110155 0.497674 +vt 0.110155 0.534884 +vt 0.110155 0.590698 +vt 0.110155 0.293023 +vt 0.110155 0.367442 +vt 0.130809 0.400000 +vt 0.130809 0.418605 +vt 0.130809 0.425581 +vt 0.130809 0.455814 +vt 0.130809 0.474419 +vt 0.130809 0.481395 +vt 0.130809 0.511628 +vt 0.130809 0.518605 +vt 0.130809 0.548837 +vt 0.130809 0.555814 +vt 0.130809 0.574419 +vt 0.130809 0.306977 +vt 0.130809 0.325581 +vt 0.130809 0.344186 +vt 0.130809 0.351163 +vt 0.130809 0.381395 +vt 0.137694 0.404651 +vt 0.137694 0.441860 +vt 0.137694 0.497674 +vt 0.137694 0.534884 +vt 0.137694 0.590698 +vt 0.137694 0.293023 +vt 0.137694 0.367442 +vt 0.785175 0.636342 +vt 0.783169 0.623256 +vt 0.785175 0.610170 +vt 0.790017 0.604749 +vt 0.794860 0.610170 +vt 0.794860 0.673551 +vt 0.790017 0.678972 +vt 0.785175 0.673551 +vt 0.783169 0.660465 +vt 0.785175 0.647379 +vt 0.140321 0.626443 +vt 0.137693 0.627855 +vt 0.135066 0.626443 +vt 0.131351 0.616402 +vt 0.130828 0.609302 +vt 0.131351 0.602203 +vt 0.135066 0.592162 +vt 0.137693 0.590750 +vt 0.140321 0.592162 +vt 0.142548 0.596184 +vt 0.144036 0.602203 +vt 0.144559 0.609302 +vt 0.144036 0.616402 +vt 0.879518 0.390698 +vt 0.907057 0.353488 +vt 0.907057 0.465116 +vt 0.879518 0.465116 +vt 0.907057 0.427907 +vt 0.851979 0.465116 +vt 0.879518 0.427907 +vt 0.851979 0.390698 +vt 0.879518 0.353488 +vt 0.785175 0.636342 +vt 0.783169 0.623256 +vt 0.785175 0.610170 +vt 0.790017 0.604749 +vt 0.794860 0.610170 +vt 0.794860 0.673551 +vt 0.790017 0.678972 +vt 0.785175 0.673551 +vt 0.783169 0.660465 +vt 0.785175 0.647379 +vt 0.785175 0.636342 +vt 0.783169 0.623256 +vt 0.785175 0.610170 +vt 0.790017 0.604749 +vt 0.794860 0.610170 +vt 0.794860 0.673551 +vt 0.790017 0.678972 +vt 0.785175 0.673551 +vt 0.783169 0.660465 +vt 0.785175 0.647379 +vt 0.785175 0.636342 +vt 0.783169 0.623256 +vt 0.785175 0.610170 +vt 0.790017 0.604749 +vt 0.794860 0.610170 +vt 0.794860 0.673551 +vt 0.790017 0.678972 +vt 0.785175 0.673551 +vt 0.783169 0.660465 +vt 0.785175 0.647379 +vt 0.015491 0.355814 +vt 0.056799 0.376744 +vt 0.015491 0.376744 +vt 0.015491 0.544186 +vt 0.056799 0.565116 +vt 0.015491 0.565116 +vt 0.056799 0.397674 +vt 0.015491 0.397674 +vt 0.056799 0.586047 +vt 0.015491 0.586047 +vt 0.056799 0.418605 +vt 0.015491 0.418605 +vt 0.056799 0.606977 +vt 0.015491 0.606977 +vt 0.056799 0.439535 +vt 0.015491 0.439535 +vt 0.056799 0.627907 +vt 0.015491 0.627907 +vt 0.015491 0.460465 +vt 0.056799 0.481395 +vt 0.015491 0.481395 +vt 0.056799 0.460465 +vt 0.015491 0.293023 +vt 0.056799 0.313953 +vt 0.015491 0.313953 +vt 0.056799 0.502326 +vt 0.015491 0.502326 +vt 0.056799 0.334884 +vt 0.015491 0.334884 +vt 0.056799 0.523256 +vt 0.015491 0.523256 +vt 0.056799 0.355814 +vt 0.056799 0.544186 +vt 0.056799 0.293023 +vt 0.000000 0.420930 +vt 0.000000 0.413953 +vt 0.000000 0.400000 +vt -0.000000 0.393023 +vt -0.000000 0.379070 +vt 0.000000 0.358140 +vt -0.000000 0.337209 +vt 0.000000 0.316279 +vt 0.000000 0.295349 +vt -0.000000 0.623256 +vt -0.000000 0.609302 +vt -0.000000 0.588372 +vt 0.000000 0.567442 +vt -0.000000 0.546512 +vt -0.000000 0.539535 +vt -0.000000 0.525581 +vt -0.000000 0.518605 +vt -0.000000 0.504651 +vt 0.000000 0.483721 +vt 0.000000 0.462791 +vt 0.000000 0.441860 +vt 0.127367 0.611628 +vt 0.103270 0.618605 +vt 0.103270 0.611628 +vt 0.127367 0.597674 +vt 0.103270 0.604651 +vt 0.103270 0.597674 +vt 0.127367 0.639535 +vt 0.103270 0.646512 +vt 0.103270 0.639535 +vt 0.127367 0.625581 +vt 0.103270 0.632558 +vt 0.103270 0.625581 +vt 0.127367 0.604651 +vt 0.127367 0.590698 +vt 0.103270 0.590698 +vt 0.127367 0.632558 +vt 0.127367 0.618605 +vt 0.127367 0.611628 +vt 0.103270 0.618605 +vt 0.103270 0.611628 +vt 0.127367 0.597674 +vt 0.103270 0.604651 +vt 0.103270 0.597674 +vt 0.127367 0.639535 +vt 0.103270 0.646512 +vt 0.103270 0.639535 +vt 0.127367 0.625581 +vt 0.103270 0.632558 +vt 0.103270 0.625581 +vt 0.127367 0.604651 +vt 0.127367 0.590698 +vt 0.103270 0.590698 +vt 0.127367 0.632558 +vt 0.127367 0.618605 +vt 0.127367 0.611628 +vt 0.103270 0.618605 +vt 0.103270 0.611628 +vt 0.127367 0.597674 +vt 0.103270 0.604651 +vt 0.103270 0.597674 +vt 0.127367 0.639535 +vt 0.103270 0.646512 +vt 0.103270 0.639535 +vt 0.127367 0.625581 +vt 0.103270 0.632558 +vt 0.103270 0.625581 +vt 0.127367 0.604651 +vt 0.127367 0.590698 +vt 0.103270 0.590698 +vt 0.127367 0.632558 +vt 0.127367 0.618605 +vt 0.127367 0.611628 +vt 0.103270 0.618605 +vt 0.103270 0.611628 +vt 0.127367 0.597674 +vt 0.103270 0.604651 +vt 0.103270 0.597674 +vt 0.127367 0.639535 +vt 0.103270 0.646512 +vt 0.103270 0.639535 +vt 0.127367 0.625581 +vt 0.103270 0.632558 +vt 0.103270 0.625581 +vt 0.127367 0.604651 +vt 0.127367 0.590698 +vt 0.103270 0.590698 +vt 0.127367 0.632558 +vt 0.127367 0.618605 +vt 0.127367 0.611628 +vt 0.103270 0.618605 +vt 0.103270 0.611628 +vt 0.127367 0.597674 +vt 0.103270 0.604651 +vt 0.103270 0.597674 +vt 0.127367 0.639535 +vt 0.103270 0.646512 +vt 0.103270 0.639535 +vt 0.127367 0.625581 +vt 0.103270 0.632558 +vt 0.103270 0.625581 +vt 0.127367 0.604651 +vt 0.127367 0.590698 +vt 0.103270 0.590698 +vt 0.127367 0.632558 +vt 0.127367 0.618605 +vt 0.127367 0.611628 +vt 0.103270 0.618605 +vt 0.103270 0.611628 +vt 0.127367 0.597674 +vt 0.103270 0.604651 +vt 0.103270 0.597674 +vt 0.127367 0.639535 +vt 0.103270 0.646512 +vt 0.103270 0.639535 +vt 0.127367 0.625581 +vt 0.103270 0.632558 +vt 0.103270 0.625581 +vt 0.127367 0.604651 +vt 0.127367 0.590698 +vt 0.103270 0.590698 +vt 0.127367 0.632558 +vt 0.127367 0.618605 +vt 0.127367 0.611628 +vt 0.103270 0.618605 +vt 0.103270 0.611628 +vt 0.127367 0.597674 +vt 0.103270 0.604651 +vt 0.103270 0.597674 +vt 0.127367 0.639535 +vt 0.103270 0.646512 +vt 0.103270 0.639535 +vt 0.127367 0.625581 +vt 0.103270 0.632558 +vt 0.103270 0.625581 +vt 0.127367 0.604651 +vt 0.127367 0.590698 +vt 0.103270 0.590698 +vt 0.127367 0.632558 +vt 0.127367 0.618605 +vt 0.127367 0.611628 +vt 0.103270 0.618605 +vt 0.103270 0.611628 +vt 0.127367 0.597674 +vt 0.103270 0.604651 +vt 0.103270 0.597674 +vt 0.127367 0.639535 +vt 0.103270 0.646512 +vt 0.103270 0.639535 +vt 0.127367 0.625581 +vt 0.103270 0.632558 +vt 0.103270 0.625581 +vt 0.127367 0.604651 +vt 0.127367 0.590698 +vt 0.103270 0.590698 +vt 0.127367 0.632558 +vt 0.127367 0.618605 +vt 0.075732 0.386046 +vt 0.103270 0.397674 +vt 0.075732 0.397674 +vt 0.075732 0.374419 +vt 0.103270 0.386046 +vt 0.075732 0.293023 +vt 0.103270 0.304651 +vt 0.075732 0.304651 +vt 0.103270 0.409302 +vt 0.075732 0.409302 +vt 0.103270 0.316279 +vt 0.075732 0.316279 +vt 0.103270 0.420930 +vt 0.075732 0.420930 +vt 0.103270 0.327907 +vt 0.075732 0.327907 +vt 0.103270 0.432558 +vt 0.075732 0.432558 +vt 0.103270 0.339535 +vt 0.075732 0.339535 +vt 0.103270 0.444186 +vt 0.075732 0.444186 +vt 0.103270 0.351163 +vt 0.075732 0.351163 +vt 0.103270 0.455814 +vt 0.075732 0.455814 +vt 0.103270 0.362791 +vt 0.075732 0.362791 +vt 0.103270 0.467442 +vt 0.075732 0.467442 +vt 0.103270 0.374419 +vt 0.103270 0.479070 +vt 0.075732 0.479070 +vt 0.075732 0.572093 +vt 0.103270 0.583721 +vt 0.075732 0.583721 +vt 0.075732 0.560465 +vt 0.103270 0.572093 +vt 0.075732 0.479070 +vt 0.103270 0.490698 +vt 0.075732 0.490698 +vt 0.103270 0.595349 +vt 0.075732 0.595349 +vt 0.103270 0.502326 +vt 0.075732 0.502326 +vt 0.103270 0.606977 +vt 0.075732 0.606977 +vt 0.103270 0.513954 +vt 0.075732 0.513954 +vt 0.103270 0.618605 +vt 0.075732 0.618605 +vt 0.103270 0.525581 +vt 0.075732 0.525581 +vt 0.103270 0.630233 +vt 0.075732 0.630233 +vt 0.103270 0.537209 +vt 0.075732 0.537209 +vt 0.103270 0.641860 +vt 0.075732 0.641860 +vt 0.103270 0.548837 +vt 0.075732 0.548837 +vt 0.103270 0.653488 +vt 0.075732 0.653488 +vt 0.103270 0.560465 +vt 0.103270 0.665116 +vt 0.075732 0.665116 +vt 0.151463 0.330233 +vt 0.151463 0.497674 +vt 0.151463 0.348837 +vt 0.151463 0.516279 +vt 0.151463 0.367442 +vt 0.151463 0.534884 +vt 0.151463 0.386046 +vt 0.151463 0.553488 +vt 0.151463 0.404651 +vt 0.151463 0.572093 +vt 0.151463 0.441860 +vt 0.151463 0.423256 +vt 0.151463 0.293023 +vt 0.151463 0.460465 +vt 0.151463 0.311628 +vt 0.151463 0.479070 +vt 0.330465 0.909302 +vt 0.345955 0.902326 +vt 0.345955 0.909302 +vt 0.330465 0.923256 +vt 0.345955 0.916279 +vt 0.345955 0.923256 +vt 0.330465 0.874419 +vt 0.345955 0.867442 +vt 0.345955 0.874419 +vt 0.330465 0.888372 +vt 0.345955 0.881395 +vt 0.345955 0.888372 +vt 0.330465 0.902326 +vt 0.345955 0.895349 +vt 0.330465 0.916279 +vt 0.330465 0.881395 +vt 0.330465 0.895349 +vt 0.351119 0.902326 +vt 0.351119 0.909302 +vt 0.346816 0.916279 +vt 0.351119 0.923256 +vt 0.347676 0.923256 +vt 0.348537 0.867442 +vt 0.351119 0.874419 +vt 0.350258 0.874419 +vt 0.346816 0.902326 +vt 0.351119 0.895349 +vt 0.351119 0.916279 +vt 0.348537 0.895349 +vt 0.351119 0.888372 +vt 0.355422 0.916279 +vt 0.354561 0.923256 +vt 0.353701 0.867442 +vt 0.351979 0.874419 +vt 0.355422 0.902326 +vt 0.353701 0.895349 +vt 0.356282 0.909302 +vt 0.350258 0.888372 +vt 0.351119 0.881395 +vt 0.351979 0.888372 +vt 0.356282 0.874419 +vt 0.383821 0.881395 +vt 0.356282 0.881395 +vt 0.356282 0.867442 +vt 0.383821 0.874419 +vt 0.383821 0.888372 +vt 0.356282 0.888372 +vt 0.356282 0.895349 +vt 0.383821 0.902326 +vt 0.356282 0.902326 +vt 0.383821 0.916279 +vt 0.356282 0.916279 +vt 0.383821 0.895349 +vt 0.383821 0.909302 +vt 0.383821 0.923256 +vt 0.356282 0.923256 +vt 0.330465 0.951163 +vt 0.339071 0.944186 +vt 0.339071 0.951163 +vt 0.330465 0.937209 +vt 0.339071 0.930233 +vt 0.339071 0.937209 +vt 0.330465 0.972093 +vt 0.339071 0.965116 +vt 0.339071 0.972093 +vt 0.330465 0.958140 +vt 0.339071 0.958140 +vt 0.330465 0.944186 +vt 0.330465 0.930233 +vt 0.339071 0.923256 +vt 0.330465 0.979070 +vt 0.339071 0.979070 +vt 0.330465 0.965116 +vt 0.394148 0.881395 +vt 0.483649 0.888372 +vt 0.394148 0.888372 +vt 0.394148 0.902326 +vt 0.483649 0.909302 +vt 0.394148 0.909302 +vt 0.483649 0.895349 +vt 0.394148 0.895349 +vt 0.394148 0.874419 +vt 0.483649 0.881395 +vt 0.483649 0.916279 +vt 0.394148 0.916279 +vt 0.483649 0.923256 +vt 0.394148 0.923256 +vt 0.394148 0.867442 +vt 0.483649 0.874419 +vt 0.483649 0.902326 +vt 0.389845 0.916279 +vt 0.388985 0.923256 +vt 0.388985 0.916279 +vt 0.388124 0.916279 +vt 0.389845 0.874419 +vt 0.388985 0.874419 +vt 0.388985 0.867442 +vt 0.388124 0.874419 +vt 0.388985 0.888372 +vt 0.388985 0.895349 +vt 0.388985 0.902326 +vt 0.391566 0.909302 +vt 0.388985 0.909302 +vt 0.391566 0.881395 +vt 0.393287 0.888372 +vt 0.393287 0.902326 +vt 0.388985 0.881395 +vt 0.386403 0.881395 +vt 0.384682 0.902326 +vt 0.386403 0.909302 +vt 0.384682 0.888372 +vt 0.339931 0.958140 +vt 0.344234 0.965116 +vt 0.339931 0.972093 +vt 0.344234 0.979070 +vt 0.340792 0.979070 +vt 0.341652 0.923256 +vt 0.344234 0.930233 +vt 0.343374 0.930233 +vt 0.344234 0.951163 +vt 0.344234 0.958140 +vt 0.344234 0.972093 +vt 0.341652 0.951163 +vt 0.344234 0.944186 +vt 0.348537 0.972093 +vt 0.347676 0.979070 +vt 0.346816 0.923256 +vt 0.345095 0.930233 +vt 0.348537 0.958140 +vt 0.349398 0.965116 +vt 0.346816 0.951163 +vt 0.343374 0.944186 +vt 0.344234 0.937209 +vt 0.345095 0.944186 +vt 0.349398 0.930233 +vt 0.363167 0.937209 +vt 0.349398 0.937209 +vt 0.349398 0.923256 +vt 0.363167 0.930233 +vt 0.363167 0.944186 +vt 0.349398 0.944186 +vt 0.349398 0.951163 +vt 0.363167 0.958140 +vt 0.349398 0.958140 +vt 0.363167 0.972093 +vt 0.349398 0.972093 +vt 0.363167 0.951163 +vt 0.363167 0.965116 +vt 0.363167 0.979070 +vt 0.349398 0.979070 +vt 0.373494 0.937209 +vt 0.462995 0.944186 +vt 0.373494 0.944186 +vt 0.373494 0.958140 +vt 0.462995 0.965116 +vt 0.373494 0.965116 +vt 0.462995 0.951163 +vt 0.373494 0.951163 +vt 0.373494 0.930233 +vt 0.462995 0.937209 +vt 0.462995 0.972093 +vt 0.373494 0.972093 +vt 0.462995 0.979070 +vt 0.373494 0.979070 +vt 0.373494 0.923256 +vt 0.462995 0.930233 +vt 0.462995 0.958140 +vt 0.369191 0.972093 +vt 0.368330 0.979070 +vt 0.368330 0.972093 +vt 0.367470 0.972093 +vt 0.369191 0.930233 +vt 0.368330 0.930233 +vt 0.368330 0.923256 +vt 0.367470 0.930233 +vt 0.368330 0.944186 +vt 0.368330 0.951163 +vt 0.368330 0.958140 +vt 0.370912 0.965116 +vt 0.368330 0.965116 +vt 0.370912 0.937209 +vt 0.372633 0.944186 +vt 0.372633 0.958140 +vt 0.368330 0.937209 +vt 0.365749 0.937209 +vt 0.364028 0.958140 +vt 0.365749 0.965116 +vt 0.364028 0.944186 +vt 0.462995 0.965116 +vt 0.478485 0.958140 +vt 0.478485 0.965116 +vt 0.462995 0.979070 +vt 0.478485 0.972093 +vt 0.478485 0.979070 +vt 0.462995 0.930233 +vt 0.478485 0.923256 +vt 0.478485 0.930233 +vt 0.462995 0.944186 +vt 0.478485 0.937209 +vt 0.478485 0.944186 +vt 0.462995 0.958140 +vt 0.478485 0.951163 +vt 0.462995 0.972093 +vt 0.462995 0.937209 +vt 0.462995 0.951163 +vt 0.483649 0.958140 +vt 0.483649 0.965116 +vt 0.479346 0.972093 +vt 0.483649 0.979070 +vt 0.480207 0.979070 +vt 0.481067 0.923256 +vt 0.483649 0.930233 +vt 0.482788 0.930233 +vt 0.479346 0.958140 +vt 0.483649 0.951163 +vt 0.483649 0.972093 +vt 0.481067 0.951163 +vt 0.483649 0.944186 +vt 0.487952 0.972093 +vt 0.487091 0.979070 +vt 0.486231 0.923256 +vt 0.484509 0.930233 +vt 0.487952 0.958140 +vt 0.488812 0.965116 +vt 0.486231 0.951163 +vt 0.482788 0.944186 +vt 0.483649 0.937209 +vt 0.484509 0.944186 +vt 0.488812 0.930233 +vt 0.509466 0.937209 +vt 0.488812 0.937209 +vt 0.488812 0.923256 +vt 0.509466 0.930233 +vt 0.509466 0.944186 +vt 0.488812 0.944186 +vt 0.488812 0.951163 +vt 0.509466 0.958140 +vt 0.488812 0.958140 +vt 0.509466 0.972093 +vt 0.488812 0.972093 +vt 0.509466 0.951163 +vt 0.509466 0.965116 +vt 0.509466 0.979070 +vt 0.488812 0.979070 +vt 0.483649 0.895349 +vt 0.492255 0.888372 +vt 0.492255 0.895349 +vt 0.483649 0.881395 +vt 0.492255 0.874419 +vt 0.492255 0.881395 +vt 0.483649 0.916279 +vt 0.492255 0.909302 +vt 0.492255 0.916279 +vt 0.483649 0.902326 +vt 0.492255 0.902326 +vt 0.483649 0.888372 +vt 0.483649 0.874419 +vt 0.492255 0.867442 +vt 0.483649 0.923256 +vt 0.492255 0.923256 +vt 0.483649 0.909302 +vt 0.519793 0.937209 +vt 0.554217 0.944186 +vt 0.519793 0.944186 +vt 0.519793 0.958140 +vt 0.554217 0.965116 +vt 0.519793 0.965116 +vt 0.554217 0.951163 +vt 0.519793 0.951163 +vt 0.519793 0.930233 +vt 0.554217 0.937209 +vt 0.554217 0.972093 +vt 0.519793 0.972093 +vt 0.554217 0.979070 +vt 0.519793 0.979070 +vt 0.519793 0.923256 +vt 0.554217 0.930233 +vt 0.554217 0.958140 +vt 0.515491 0.972093 +vt 0.514630 0.979070 +vt 0.514630 0.972093 +vt 0.513769 0.972093 +vt 0.515491 0.930233 +vt 0.514630 0.930233 +vt 0.514630 0.923256 +vt 0.513769 0.930233 +vt 0.514630 0.944186 +vt 0.514630 0.951163 +vt 0.514630 0.965116 +vt 0.518933 0.958140 +vt 0.517212 0.965116 +vt 0.514630 0.937209 +vt 0.518933 0.944186 +vt 0.514630 0.958140 +vt 0.517212 0.937209 +vt 0.512048 0.937209 +vt 0.510327 0.958140 +vt 0.512048 0.965116 +vt 0.510327 0.944186 +vt 0.497418 0.902326 +vt 0.497418 0.909302 +vt 0.493115 0.916279 +vt 0.497418 0.923256 +vt 0.493976 0.923256 +vt 0.494836 0.867442 +vt 0.497418 0.874419 +vt 0.496558 0.874419 +vt 0.493115 0.902326 +vt 0.497418 0.895349 +vt 0.497418 0.916279 +vt 0.494836 0.895349 +vt 0.497418 0.888372 +vt 0.501721 0.916279 +vt 0.500861 0.923256 +vt 0.500000 0.867442 +vt 0.498279 0.874419 +vt 0.501721 0.902326 +vt 0.502582 0.909302 +vt 0.500000 0.895349 +vt 0.496558 0.888372 +vt 0.497418 0.881395 +vt 0.498279 0.888372 +vt 0.502582 0.874419 +vt 0.509466 0.881395 +vt 0.502582 0.881395 +vt 0.502582 0.867442 +vt 0.509466 0.874419 +vt 0.509466 0.888372 +vt 0.502582 0.888372 +vt 0.502582 0.895349 +vt 0.509466 0.902326 +vt 0.502582 0.902326 +vt 0.509466 0.916279 +vt 0.502582 0.916279 +vt 0.509466 0.895349 +vt 0.509466 0.909302 +vt 0.509466 0.923256 +vt 0.502582 0.923256 +vt 0.519793 0.881395 +vt 0.554217 0.888372 +vt 0.519793 0.888372 +vt 0.519793 0.902326 +vt 0.554217 0.909302 +vt 0.519793 0.909302 +vt 0.554217 0.895349 +vt 0.519793 0.895349 +vt 0.519793 0.874419 +vt 0.554217 0.881395 +vt 0.554217 0.916279 +vt 0.519793 0.916279 +vt 0.554217 0.923256 +vt 0.519793 0.923256 +vt 0.519793 0.867442 +vt 0.554217 0.874419 +vt 0.554217 0.902326 +vt 0.515491 0.916279 +vt 0.514630 0.923256 +vt 0.514630 0.916279 +vt 0.513769 0.916279 +vt 0.515491 0.874419 +vt 0.514630 0.874419 +vt 0.514630 0.867442 +vt 0.513769 0.874419 +vt 0.514630 0.888372 +vt 0.514630 0.895349 +vt 0.514630 0.902326 +vt 0.517212 0.909302 +vt 0.514630 0.909302 +vt 0.514630 0.881395 +vt 0.518933 0.888372 +vt 0.518933 0.902326 +vt 0.517212 0.881395 +vt 0.512048 0.881395 +vt 0.510327 0.902326 +vt 0.512048 0.909302 +vt 0.510327 0.888372 +vt 0.783133 0.646512 +vt 0.776248 0.660465 +vt 0.776248 0.646512 +vt 0.783133 0.618605 +vt 0.776248 0.632558 +vt 0.776248 0.618605 +vt 0.783133 0.702326 +vt 0.776248 0.716279 +vt 0.776248 0.702326 +vt 0.783133 0.674419 +vt 0.776248 0.688372 +vt 0.776248 0.674419 +vt 0.783133 0.632558 +vt 0.783133 0.604651 +vt 0.776248 0.604651 +vt 0.783133 0.688372 +vt 0.783133 0.660465 +vt 0.163511 0.372093 +vt 0.163511 0.390698 +vt 0.163511 0.409302 +vt 0.163511 0.434884 +vt 0.163511 0.446512 +vt 0.163511 0.465116 +vt 0.163511 0.490698 +vt 0.163511 0.509302 +vt 0.163511 0.527907 +vt 0.163511 0.546512 +vt 0.163511 0.565116 +vt 0.163511 0.576744 +vt 0.151463 0.590698 +vt 0.163511 0.304651 +vt 0.163511 0.316279 +vt 0.163511 0.334884 +vt 0.163511 0.353488 +vt 0.783133 0.646512 +vt 0.776248 0.660465 +vt 0.776248 0.646512 +vt 0.783133 0.618605 +vt 0.776248 0.632558 +vt 0.776248 0.618605 +vt 0.783133 0.702326 +vt 0.776248 0.716279 +vt 0.776248 0.702326 +vt 0.783133 0.674419 +vt 0.776248 0.688372 +vt 0.776248 0.674419 +vt 0.783133 0.632558 +vt 0.783133 0.604651 +vt 0.776248 0.604651 +vt 0.783133 0.688372 +vt 0.783133 0.660465 +vt 0.783133 0.646512 +vt 0.776248 0.660465 +vt 0.776248 0.646512 +vt 0.783133 0.618605 +vt 0.776248 0.632558 +vt 0.776248 0.618605 +vt 0.783133 0.702326 +vt 0.776248 0.716279 +vt 0.776248 0.702326 +vt 0.783133 0.674419 +vt 0.776248 0.688372 +vt 0.776248 0.674419 +vt 0.783133 0.632558 +vt 0.783133 0.604651 +vt 0.776248 0.604651 +vt 0.783133 0.688372 +vt 0.783133 0.660465 +vt 0.783133 0.646512 +vt 0.776248 0.660465 +vt 0.776248 0.646512 +vt 0.783133 0.618605 +vt 0.776248 0.632558 +vt 0.776248 0.618605 +vt 0.783133 0.702326 +vt 0.776248 0.716279 +vt 0.776248 0.702326 +vt 0.783133 0.674419 +vt 0.776248 0.688372 +vt 0.776248 0.674419 +vt 0.783133 0.632558 +vt 0.783133 0.604651 +vt 0.776248 0.604651 +vt 0.783133 0.688372 +vt 0.783133 0.660465 +vt 0.345955 0.902326 +vt 0.330465 0.909302 +vt 0.345955 0.909302 +vt 0.345955 0.916279 +vt 0.330465 0.923256 +vt 0.345955 0.923256 +vt 0.345955 0.867442 +vt 0.330465 0.874419 +vt 0.345955 0.874419 +vt 0.345955 0.881395 +vt 0.330465 0.888372 +vt 0.345955 0.888372 +vt 0.345955 0.895349 +vt 0.330465 0.902326 +vt 0.330465 0.916279 +vt 0.330465 0.881395 +vt 0.330465 0.895349 +vt 0.351119 0.902326 +vt 0.346816 0.902326 +vt 0.351119 0.923256 +vt 0.346816 0.916279 +vt 0.347676 0.923256 +vt 0.351119 0.874419 +vt 0.348537 0.867442 +vt 0.350258 0.874419 +vt 0.351119 0.895349 +vt 0.348537 0.895349 +vt 0.351119 0.916279 +vt 0.351119 0.888372 +vt 0.350258 0.888372 +vt 0.355422 0.916279 +vt 0.353701 0.867442 +vt 0.351119 0.867442 +vt 0.355422 0.902326 +vt 0.351119 0.909302 +vt 0.353701 0.895349 +vt 0.356282 0.909302 +vt 0.351119 0.881395 +vt 0.351979 0.888372 +vt 0.351979 0.874419 +vt 0.383821 0.881395 +vt 0.356282 0.874419 +vt 0.356282 0.881395 +vt 0.383821 0.874419 +vt 0.356282 0.867442 +vt 0.383821 0.888372 +vt 0.356282 0.888372 +vt 0.383821 0.902326 +vt 0.356282 0.895349 +vt 0.356282 0.902326 +vt 0.383821 0.916279 +vt 0.356282 0.916279 +vt 0.383821 0.895349 +vt 0.383821 0.909302 +vt 0.383821 0.923256 +vt 0.356282 0.923256 +vt 0.339071 0.944186 +vt 0.330465 0.951163 +vt 0.339071 0.951163 +vt 0.339071 0.930233 +vt 0.330465 0.937209 +vt 0.339071 0.937209 +vt 0.339071 0.965116 +vt 0.330465 0.972093 +vt 0.339071 0.972093 +vt 0.330465 0.958140 +vt 0.339071 0.958140 +vt 0.330465 0.944186 +vt 0.339071 0.923256 +vt 0.330465 0.930233 +vt 0.330465 0.979070 +vt 0.339071 0.979070 +vt 0.330465 0.965116 +vt 0.483649 0.888372 +vt 0.394148 0.881395 +vt 0.394148 0.888372 +vt 0.483649 0.909302 +vt 0.394148 0.902326 +vt 0.394148 0.909302 +vt 0.483649 0.895349 +vt 0.394148 0.895349 +vt 0.483649 0.881395 +vt 0.394148 0.874419 +vt 0.483649 0.916279 +vt 0.394148 0.916279 +vt 0.483649 0.923256 +vt 0.394148 0.923256 +vt 0.483649 0.874419 +vt 0.394148 0.867442 +vt 0.483649 0.902326 +vt 0.389845 0.916279 +vt 0.388985 0.916279 +vt 0.388985 0.923256 +vt 0.388124 0.916279 +vt 0.389845 0.874419 +vt 0.388985 0.867442 +vt 0.388985 0.874419 +vt 0.388124 0.874419 +vt 0.388985 0.888372 +vt 0.388985 0.895349 +vt 0.388985 0.909302 +vt 0.393287 0.902326 +vt 0.388985 0.902326 +vt 0.393287 0.888372 +vt 0.388985 0.881395 +vt 0.391566 0.909302 +vt 0.391566 0.881395 +vt 0.386403 0.881395 +vt 0.386403 0.909302 +vt 0.384682 0.902326 +vt 0.384682 0.888372 +vt 0.344234 0.965116 +vt 0.339931 0.958140 +vt 0.340792 0.979070 +vt 0.344234 0.972093 +vt 0.339931 0.972093 +vt 0.344234 0.930233 +vt 0.341652 0.923256 +vt 0.343374 0.930233 +vt 0.344234 0.951163 +vt 0.341652 0.951163 +vt 0.344234 0.944186 +vt 0.343374 0.944186 +vt 0.344234 0.979070 +vt 0.348537 0.972093 +vt 0.346816 0.923256 +vt 0.344234 0.923256 +vt 0.348537 0.958140 +vt 0.344234 0.958140 +vt 0.349398 0.965116 +vt 0.346816 0.951163 +vt 0.344234 0.937209 +vt 0.345095 0.944186 +vt 0.345095 0.930233 +vt 0.363167 0.937209 +vt 0.349398 0.930233 +vt 0.349398 0.937209 +vt 0.363167 0.930233 +vt 0.349398 0.923256 +vt 0.363167 0.944186 +vt 0.349398 0.944186 +vt 0.363167 0.958140 +vt 0.349398 0.951163 +vt 0.349398 0.958140 +vt 0.363167 0.972093 +vt 0.349398 0.972093 +vt 0.363167 0.951163 +vt 0.363167 0.965116 +vt 0.363167 0.979070 +vt 0.349398 0.979070 +vt 0.462995 0.944186 +vt 0.373494 0.937209 +vt 0.373494 0.944186 +vt 0.462995 0.965116 +vt 0.373494 0.958140 +vt 0.373494 0.965116 +vt 0.462995 0.951163 +vt 0.373494 0.951163 +vt 0.462995 0.937209 +vt 0.373494 0.930233 +vt 0.462995 0.972093 +vt 0.373494 0.972093 +vt 0.462995 0.979070 +vt 0.373494 0.979070 +vt 0.462995 0.930233 +vt 0.373494 0.923256 +vt 0.462995 0.958140 +vt 0.369191 0.972093 +vt 0.368330 0.972093 +vt 0.368330 0.979070 +vt 0.367470 0.972093 +vt 0.369191 0.930233 +vt 0.368330 0.923256 +vt 0.368330 0.930233 +vt 0.367470 0.930233 +vt 0.368330 0.944186 +vt 0.368330 0.951163 +vt 0.370912 0.965116 +vt 0.368330 0.958140 +vt 0.368330 0.965116 +vt 0.370912 0.937209 +vt 0.368330 0.937209 +vt 0.365749 0.937209 +vt 0.365749 0.965116 +vt 0.364028 0.958140 +vt 0.364028 0.944186 +vt 0.478485 0.958140 +vt 0.462995 0.965116 +vt 0.478485 0.965116 +vt 0.478485 0.972093 +vt 0.462995 0.979070 +vt 0.478485 0.979070 +vt 0.478485 0.923256 +vt 0.462995 0.930233 +vt 0.478485 0.930233 +vt 0.478485 0.937209 +vt 0.462995 0.944186 +vt 0.478485 0.944186 +vt 0.478485 0.951163 +vt 0.462995 0.958140 +vt 0.462995 0.972093 +vt 0.462995 0.937209 +vt 0.462995 0.951163 +vt 0.483649 0.958140 +vt 0.479346 0.958140 +vt 0.483649 0.979070 +vt 0.479346 0.972093 +vt 0.480207 0.979070 +vt 0.483649 0.930233 +vt 0.481067 0.923256 +vt 0.482788 0.930233 +vt 0.483649 0.951163 +vt 0.481067 0.951163 +vt 0.483649 0.965116 +vt 0.483649 0.944186 +vt 0.482788 0.944186 +vt 0.487952 0.972093 +vt 0.483649 0.972093 +vt 0.486231 0.923256 +vt 0.483649 0.923256 +vt 0.487952 0.958140 +vt 0.488812 0.965116 +vt 0.486231 0.951163 +vt 0.483649 0.937209 +vt 0.484509 0.944186 +vt 0.484509 0.930233 +vt 0.509466 0.937209 +vt 0.488812 0.930233 +vt 0.488812 0.937209 +vt 0.509466 0.930233 +vt 0.488812 0.923256 +vt 0.509466 0.944186 +vt 0.488812 0.944186 +vt 0.509466 0.958140 +vt 0.488812 0.951163 +vt 0.488812 0.958140 +vt 0.509466 0.972093 +vt 0.488812 0.972093 +vt 0.509466 0.951163 +vt 0.509466 0.965116 +vt 0.509466 0.979070 +vt 0.488812 0.979070 +vt 0.492255 0.888372 +vt 0.483649 0.895349 +vt 0.492255 0.895349 +vt 0.492255 0.874419 +vt 0.483649 0.881395 +vt 0.492255 0.881395 +vt 0.492255 0.909302 +vt 0.483649 0.916279 +vt 0.492255 0.916279 +vt 0.483649 0.902326 +vt 0.492255 0.902326 +vt 0.483649 0.888372 +vt 0.492255 0.867442 +vt 0.483649 0.874419 +vt 0.483649 0.923256 +vt 0.492255 0.923256 +vt 0.483649 0.909302 +vt 0.554217 0.944186 +vt 0.519793 0.937209 +vt 0.519793 0.944186 +vt 0.554217 0.965116 +vt 0.519793 0.958140 +vt 0.519793 0.965116 +vt 0.554217 0.951163 +vt 0.519793 0.951163 +vt 0.554217 0.937209 +vt 0.519793 0.930233 +vt 0.554217 0.972093 +vt 0.519793 0.972093 +vt 0.554217 0.979070 +vt 0.519793 0.979070 +vt 0.554217 0.930233 +vt 0.519793 0.923256 +vt 0.554217 0.958140 +vt 0.515491 0.972093 +vt 0.514630 0.972093 +vt 0.514630 0.979070 +vt 0.513769 0.972093 +vt 0.515491 0.930233 +vt 0.514630 0.923256 +vt 0.514630 0.930233 +vt 0.513769 0.930233 +vt 0.514630 0.944186 +vt 0.514630 0.951163 +vt 0.514630 0.965116 +vt 0.518933 0.958140 +vt 0.514630 0.958140 +vt 0.518933 0.944186 +vt 0.514630 0.937209 +vt 0.517212 0.965116 +vt 0.517212 0.937209 +vt 0.512048 0.937209 +vt 0.510327 0.958140 +vt 0.512048 0.965116 +vt 0.510327 0.944186 +vt 0.497418 0.902326 +vt 0.493115 0.902326 +vt 0.497418 0.923256 +vt 0.493115 0.916279 +vt 0.493976 0.923256 +vt 0.497418 0.874419 +vt 0.494836 0.867442 +vt 0.496558 0.874419 +vt 0.497418 0.895349 +vt 0.494836 0.895349 +vt 0.497418 0.916279 +vt 0.497418 0.888372 +vt 0.496558 0.888372 +vt 0.501721 0.916279 +vt 0.500000 0.867442 +vt 0.497418 0.867442 +vt 0.501721 0.902326 +vt 0.502582 0.909302 +vt 0.497418 0.909302 +vt 0.500000 0.895349 +vt 0.497418 0.881395 +vt 0.498279 0.888372 +vt 0.498279 0.874419 +vt 0.509466 0.881395 +vt 0.502582 0.874419 +vt 0.502582 0.881395 +vt 0.509466 0.874419 +vt 0.502582 0.867442 +vt 0.509466 0.888372 +vt 0.502582 0.888372 +vt 0.509466 0.902326 +vt 0.502582 0.895349 +vt 0.502582 0.902326 +vt 0.509466 0.916279 +vt 0.502582 0.916279 +vt 0.509466 0.895349 +vt 0.509466 0.909302 +vt 0.509466 0.923256 +vt 0.502582 0.923256 +vt 0.554217 0.888372 +vt 0.519793 0.881395 +vt 0.519793 0.888372 +vt 0.554217 0.909302 +vt 0.519793 0.902326 +vt 0.519793 0.909302 +vt 0.554217 0.895349 +vt 0.519793 0.895349 +vt 0.554217 0.881395 +vt 0.519793 0.874419 +vt 0.554217 0.916279 +vt 0.519793 0.916279 +vt 0.554217 0.923256 +vt 0.519793 0.923256 +vt 0.554217 0.874419 +vt 0.519793 0.867442 +vt 0.554217 0.902326 +vt 0.515491 0.916279 +vt 0.514630 0.916279 +vt 0.514630 0.923256 +vt 0.513769 0.916279 +vt 0.515491 0.874419 +vt 0.514630 0.867442 +vt 0.514630 0.874419 +vt 0.513769 0.874419 +vt 0.514630 0.888372 +vt 0.514630 0.895349 +vt 0.517212 0.909302 +vt 0.514630 0.902326 +vt 0.514630 0.909302 +vt 0.518933 0.888372 +vt 0.514630 0.881395 +vt 0.518933 0.902326 +vt 0.517212 0.881395 +vt 0.512048 0.881395 +vt 0.510327 0.902326 +vt 0.512048 0.909302 +vt 0.510327 0.888372 +vt 0.000000 0.434884 +vt 0.000000 0.372093 +vt -0.000000 0.351163 +vt 0.000000 0.330233 +vt 0.000000 0.309302 +vt -0.000000 0.602326 +vt 0.000000 0.581395 +vt -0.000000 0.560465 +vt 0.000000 0.497674 +vt 0.000000 0.476744 +vt 0.000000 0.455814 +vt 0.127367 0.646512 +vt 0.127367 0.646512 +vt 0.127367 0.646512 +vt 0.127367 0.646512 +vt 0.127367 0.646512 +vt 0.127367 0.646512 +vt 0.127367 0.646512 +vt 0.127367 0.646512 +vt 0.103270 0.293023 +vt 0.103270 0.479070 +vt 0.330465 0.867442 +vt 0.351119 0.867442 +vt 0.383821 0.867442 +vt 0.330465 0.923256 +vt 0.483649 0.867442 +vt 0.344234 0.923256 +vt 0.363167 0.923256 +vt 0.462995 0.923256 +vt 0.462995 0.923256 +vt 0.483649 0.923256 +vt 0.509466 0.923256 +vt 0.483649 0.867442 +vt 0.554217 0.923256 +vt 0.497418 0.867442 +vt 0.509466 0.867442 +vt 0.554217 0.867442 +vt 0.783133 0.716279 +vt 0.163511 0.379070 +vt 0.163511 0.397674 +vt 0.163511 0.416279 +vt 0.163511 0.427907 +vt 0.163511 0.453488 +vt 0.163511 0.472093 +vt 0.163511 0.483721 +vt 0.163511 0.502326 +vt 0.163511 0.520930 +vt 0.163511 0.539535 +vt 0.163511 0.558140 +vt 0.163511 0.583721 +vt 0.163511 0.297674 +vt 0.163511 0.323256 +vt 0.163511 0.341860 +vt 0.163511 0.360465 +vt 0.783133 0.716279 +vt 0.783133 0.716279 +vt 0.783133 0.716279 +vt 0.330465 0.867442 +vt 0.354561 0.923256 +vt 0.383821 0.867442 +vt 0.330465 0.923256 +vt 0.483649 0.867442 +vt 0.347676 0.979070 +vt 0.363167 0.923256 +vt 0.462995 0.923256 +vt 0.372633 0.944186 +vt 0.372633 0.958140 +vt 0.462995 0.923256 +vt 0.487091 0.979070 +vt 0.509466 0.923256 +vt 0.483649 0.867442 +vt 0.554217 0.923256 +vt 0.500861 0.923256 +vt 0.509466 0.867442 +vt 0.554217 0.867442 +vn 0.0000 0.0000 -1.0000 +vn -0.0000 -0.0000 1.0000 +vn 0.5000 -0.5000 0.7071 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.5000 0.5000 0.7071 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.5000 0.5000 0.7071 +vn -0.5000 -0.5000 0.7071 +vn 0.9239 -0.3827 0.0000 +vn 1.0000 -0.0000 0.0000 +vn -1.0000 0.0000 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.3827 0.9239 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 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.8263 0.3423 -0.4472 +vn 0.6325 0.6325 -0.4472 +vn 0.3423 0.8263 -0.4472 +vn 0.0000 0.8944 -0.4472 +vn -0.3423 0.8263 -0.4472 +vn -0.6325 0.6325 -0.4472 +vn -0.8263 0.3423 -0.4472 +vn -0.8944 0.0000 -0.4472 +vn -0.8263 -0.3423 -0.4472 +vn -0.6325 -0.6325 -0.4472 +vn -0.3423 -0.8263 -0.4472 +vn 0.0000 -0.8944 -0.4472 +vn 0.3423 -0.8263 -0.4472 +vn 0.6325 -0.6325 -0.4472 +vn 0.8263 -0.3423 -0.4472 +vn 0.8944 0.0000 -0.4472 +vn 0.3423 0.8263 0.4472 +vn 0.6325 0.6325 0.4472 +vn 0.8263 0.3423 0.4472 +vn 0.8944 0.0000 0.4472 +vn 0.8263 -0.3423 0.4472 +vn 0.6325 -0.6325 0.4472 +vn 0.3423 -0.8263 0.4472 +vn 0.0000 -0.8944 0.4472 +vn -0.3423 -0.8263 0.4472 +vn -0.6325 -0.6325 0.4472 +vn -0.8263 -0.3423 0.4472 +vn -0.8944 0.0000 0.4472 +vn -0.8263 0.3423 0.4472 +vn -0.6325 0.6325 0.4472 +vn -0.3423 0.8263 0.4472 +vn 0.0000 0.8944 0.4472 +vn 0.1448 0.7194 0.6794 +vn 0.1866 0.9824 0.0000 +vn 0.1448 0.7194 -0.6794 +vn 0.0196 0.0473 -0.9987 +vn 0.0000 -0.7071 -0.7071 +vn -0.1363 -0.6737 -0.7263 +vn 0.0000 -0.7071 0.7071 +vn -0.1363 -0.6737 0.7263 +vn 0.0000 0.7071 0.7071 +vn 0.0196 0.0473 0.9987 +vn 0.0000 0.7071 -0.7071 +vn 0.5294 0.5294 0.6630 +vn 0.0671 0.0671 -0.9955 +vn -0.4617 -0.4617 -0.7574 +vn 0.0671 0.0671 0.9955 +vn 0.5294 0.5294 -0.6630 +vn -0.4617 -0.4617 0.7574 +vn 0.7194 0.1448 -0.6794 +vn 0.0473 0.0196 -0.9987 +vn -0.6737 -0.1363 -0.7263 +vn 0.7194 0.1448 0.6794 +vn 0.0473 0.0196 0.9987 +vn 0.9824 0.1866 0.0000 +vn -0.6737 -0.1363 0.7263 +vn -0.9987 -0.0196 0.0473 +vn -0.7263 0.1363 -0.6737 +vn -0.6794 -0.1448 0.7194 +vn 0.6794 -0.1448 0.7194 +vn 0.7263 0.1363 -0.6737 +vn -0.0000 -0.1866 0.9824 +vn 0.9987 -0.0196 0.0473 +vn -0.9987 -0.0473 0.0196 +vn -0.6794 -0.7194 0.1448 +vn 0.6794 -0.7194 0.1448 +vn 0.9987 -0.0473 0.0196 +vn -0.0000 -0.9824 0.1866 +vn -0.7263 0.6737 -0.1363 +vn 0.7263 0.6737 -0.1363 +vn 0.7574 0.4617 -0.4617 +vn -0.7574 0.4617 -0.4617 +vn -0.6630 -0.5294 0.5294 +vn 0.6630 -0.5294 0.5294 +vn 0.9955 -0.0671 0.0671 +vn -0.9955 -0.0671 0.0671 +vn 0.5547 0.0000 -0.8320 +vn 0.5125 0.2123 -0.8320 +vn 0.3922 0.3922 -0.8320 +vn 0.2123 0.5125 -0.8320 +vn -0.0000 0.5547 -0.8321 +vn 0.0000 0.5547 -0.8320 +vn -0.2123 0.5125 -0.8320 +vn -0.2123 0.5125 -0.8321 +vn -0.3922 0.3922 -0.8320 +vn -0.5125 0.2123 -0.8320 +vn -0.5547 0.0000 -0.8320 +vn -0.5125 -0.2123 -0.8321 +vn -0.5125 -0.2123 -0.8320 +vn -0.3922 -0.3922 -0.8321 +vn -0.2123 -0.5125 -0.8321 +vn 0.0000 -0.5547 -0.8321 +vn 0.2123 -0.5125 -0.8321 +vn 0.3922 -0.3922 -0.8321 +vn 0.5125 -0.2123 -0.8320 +vn 0.5125 -0.2123 -0.8321 +vn -0.1448 0.7194 0.6794 +vn -0.1866 0.9824 0.0000 +vn -0.1448 0.7194 -0.6794 +vn -0.0196 0.0473 -0.9987 +vn 0.1363 -0.6737 -0.7263 +vn 0.1363 -0.6737 0.7263 +vn -0.0196 0.0473 0.9987 +vn -0.5294 0.5294 0.6630 +vn -0.0671 0.0671 -0.9955 +vn 0.4617 -0.4617 -0.7574 +vn -0.0671 0.0671 0.9955 +vn -0.5294 0.5294 -0.6630 +vn 0.4617 -0.4617 0.7574 +vn -0.7194 0.1448 -0.6794 +vn -0.0473 0.0196 -0.9987 +vn -0.7194 0.1448 0.6794 +vn -0.0473 0.0196 0.9987 +vn -0.9824 0.1866 0.0000 +vn 0.6737 -0.1363 0.7263 +vn 0.6737 -0.1363 -0.7263 +vn 0.2123 0.5125 -0.8321 +s off +f 112/21/9 127/22/9 111/23/9 +f 97/24/9 128/25/9 112/26/9 +f 98/27/9 113/28/9 97/29/9 +f 98/30/9 115/31/9 114/32/9 +f 99/33/9 116/34/9 115/31/9 +f 100/35/9 117/36/9 116/34/9 +f 101/37/9 118/38/9 117/36/9 +f 102/39/9 119/40/9 118/38/9 +f 104/41/9 119/40/9 103/42/9 +f 104/43/9 121/44/9 120/45/9 +f 106/46/9 121/47/9 105/48/9 +f 107/49/9 122/50/9 106/51/9 +f 108/52/9 123/53/9 107/54/9 +f 109/55/9 124/56/9 108/57/9 +f 109/58/9 126/59/9 125/60/9 +f 111/61/9 126/59/9 110/62/9 +f 142/63/10 95/64/10 94/65/10 +f 143/66/10 96/67/10 95/68/10 +f 144/69/10 81/70/10 96/71/10 +f 129/72/10 82/73/10 81/74/10 +f 82/75/10 131/76/10 83/77/10 +f 83/78/10 132/79/10 84/80/10 +f 84/81/10 133/82/10 85/83/10 +f 85/84/10 134/85/10 86/86/10 +f 86/87/10 135/88/10 87/89/10 +f 135/88/10 88/90/10 87/91/10 +f 88/92/10 137/93/10 89/94/10 +f 137/95/10 90/96/10 89/97/10 +f 138/98/10 91/99/10 90/100/10 +f 139/101/10 92/102/10 91/103/10 +f 140/104/10 93/105/10 92/106/10 +f 93/107/10 142/63/10 94/108/10 +f 176/109/9 191/110/9 175/111/9 +f 161/112/9 192/113/9 176/114/9 +f 162/115/9 177/116/9 161/117/9 +f 162/118/9 179/119/9 178/120/9 +f 163/121/9 180/122/9 179/119/9 +f 164/123/9 181/124/9 180/122/9 +f 165/125/9 182/126/9 181/124/9 +f 166/127/9 183/128/9 182/126/9 +f 168/129/9 183/128/9 167/130/9 +f 168/131/9 185/132/9 184/133/9 +f 170/134/9 185/135/9 169/136/9 +f 171/137/9 186/138/9 170/139/9 +f 172/140/9 187/141/9 171/142/9 +f 173/143/9 188/144/9 172/145/9 +f 173/146/9 190/147/9 189/148/9 +f 175/149/9 190/147/9 174/150/9 +f 206/151/10 159/152/10 158/153/10 +f 207/154/10 160/155/10 159/156/10 +f 208/157/10 145/158/10 160/159/10 +f 193/160/10 146/161/10 145/162/10 +f 146/163/10 195/164/10 147/165/10 +f 147/166/10 196/167/10 148/168/10 +f 148/169/10 197/170/10 149/171/10 +f 149/172/10 198/173/10 150/174/10 +f 150/175/10 199/176/10 151/177/10 +f 199/176/10 152/178/10 151/179/10 +f 152/180/10 201/181/10 153/182/10 +f 201/183/10 154/184/10 153/185/10 +f 202/186/10 155/187/10 154/188/10 +f 203/189/10 156/190/10 155/191/10 +f 204/192/10 157/193/10 156/194/10 +f 157/195/10 206/151/10 158/196/10 +f 50/197/9 337/198/9 338/199/9 +f 64/200/9 337/201/9 49/202/9 +f 58/203/9 345/204/9 346/205/9 +f 51/206/9 338/207/9 339/208/9 +f 59/209/9 346/210/9 347/211/9 +f 52/212/9 339/213/9 340/214/9 +f 59/215/9 348/216/9 60/217/9 +f 53/218/9 340/219/9 341/220/9 +f 60/221/9 349/222/9 61/223/9 +f 53/224/9 342/225/9 54/226/9 +f 62/227/9 349/228/9 350/229/9 +f 55/230/9 342/231/9 343/232/9 +f 63/233/9 350/234/9 351/235/9 +f 55/236/9 344/237/9 56/238/9 +f 64/239/9 351/240/9 352/241/9 +f 56/242/9 345/243/9 57/244/9 +f 382/245/10 367/246/10 366/247/10 +f 367/248/10 384/249/10 368/250/10 +f 384/249/10 353/251/10 368/252/10 +f 353/253/10 370/254/10 354/255/10 +f 354/256/10 371/257/10 355/258/10 +f 371/257/10 356/259/10 355/260/10 +f 356/261/10 373/262/10 357/263/10 +f 373/262/10 358/264/10 357/265/10 +f 358/266/10 375/267/10 359/268/10 +f 375/267/10 360/269/10 359/270/10 +f 376/271/10 361/272/10 360/273/10 +f 361/274/10 378/275/10 362/276/10 +f 362/277/10 379/278/10 363/279/10 +f 363/280/10 380/281/10 364/282/10 +f 380/281/10 365/283/10 364/284/10 +f 365/285/10 382/245/10 366/286/10 +f 414/287/9 399/288/9 398/289/9 +f 415/290/9 400/291/9 399/288/9 +f 400/291/9 401/292/9 385/293/9 +f 401/294/9 386/295/9 385/293/9 +f 402/296/9 387/297/9 386/295/9 +f 387/297/9 404/298/9 388/299/9 +f 404/300/9 389/301/9 388/299/9 +f 389/301/9 406/302/9 390/303/9 +f 406/304/9 391/305/9 390/303/9 +f 391/305/9 408/306/9 392/307/9 +f 392/307/9 409/308/9 393/309/9 +f 409/310/9 394/311/9 393/312/9 +f 410/313/9 395/314/9 394/311/9 +f 411/315/9 396/316/9 395/314/9 +f 396/316/9 413/317/9 397/318/9 +f 413/319/9 398/289/9 397/318/9 +f 431/320/10 448/321/10 432/322/10 +f 448/321/10 417/323/10 432/324/10 +f 417/325/10 434/326/10 418/327/10 +f 418/328/10 435/329/10 419/330/10 +f 435/329/10 420/331/10 419/332/10 +f 420/333/10 437/334/10 421/335/10 +f 437/334/10 422/336/10 421/337/10 +f 422/338/10 439/339/10 423/340/10 +f 439/339/10 424/341/10 423/342/10 +f 440/343/10 425/344/10 424/345/10 +f 425/346/10 442/347/10 426/348/10 +f 426/349/10 443/350/10 427/351/10 +f 427/352/10 444/353/10 428/354/10 +f 444/353/10 429/355/10 428/356/10 +f 429/357/10 446/358/10 430/359/10 +f 446/358/10 431/360/10 430/361/10 +f 711/362/10 712/363/10 705/364/10 +f 717/365/9 716/366/9 715/367/9 +f 723/368/9 735/369/9 731/370/9 +f 740/371/9 743/372/9 739/373/9 +f 744/374/11 741/375/11 743/376/11 +f 742/377/10 737/378/10 741/375/10 +f 739/379/12 741/375/12 737/378/12 +f 740/371/13 742/377/13 744/380/13 +f 748/381/9 751/382/9 747/383/9 +f 751/384/14 750/385/14 749/386/14 +f 750/385/10 745/387/10 749/386/10 +f 747/388/15 749/386/15 745/387/15 +f 748/381/16 750/385/16 752/389/16 +f 755/390/9 760/391/9 759/392/9 +f 760/393/17 757/394/17 759/395/17 +f 758/396/10 753/397/10 757/394/10 +f 755/398/13 757/394/13 753/397/13 +f 756/399/12 758/396/12 760/391/12 +f 763/400/9 768/401/9 767/402/9 +f 768/403/18 765/404/18 767/405/18 +f 766/406/10 761/407/10 765/404/10 +f 763/408/16 765/404/16 761/407/16 +f 764/409/15 766/406/15 768/401/15 +f 775/410/10 776/411/10 769/412/10 +f 781/413/9 780/414/9 779/415/9 +f 791/416/10 792/417/10 785/418/10 +f 797/419/9 796/420/9 795/421/9 +f 807/422/10 808/423/10 801/424/10 +f 813/425/9 812/426/9 811/427/9 +f 112/21/9 128/25/9 127/22/9 +f 97/24/9 113/28/9 128/25/9 +f 98/27/9 114/32/9 113/28/9 +f 98/30/9 99/428/9 115/31/9 +f 99/33/9 100/429/9 116/34/9 +f 100/35/9 101/430/9 117/36/9 +f 101/37/9 102/431/9 118/38/9 +f 102/39/9 103/432/9 119/40/9 +f 104/41/9 120/45/9 119/40/9 +f 104/43/9 105/433/9 121/44/9 +f 106/46/9 122/50/9 121/47/9 +f 107/49/9 123/53/9 122/50/9 +f 108/52/9 124/56/9 123/53/9 +f 109/55/9 125/60/9 124/56/9 +f 109/58/9 110/434/9 126/59/9 +f 111/61/9 127/22/9 126/59/9 +f 142/63/10 143/66/10 95/64/10 +f 143/66/10 144/69/10 96/67/10 +f 144/69/10 129/72/10 81/70/10 +f 129/72/10 130/435/10 82/73/10 +f 82/75/10 130/435/10 131/76/10 +f 83/78/10 131/76/10 132/79/10 +f 84/81/10 132/79/10 133/82/10 +f 85/84/10 133/82/10 134/85/10 +f 86/87/10 134/85/10 135/88/10 +f 135/88/10 136/436/10 88/90/10 +f 88/92/10 136/436/10 137/93/10 +f 137/95/10 138/98/10 90/96/10 +f 138/98/10 139/101/10 91/99/10 +f 139/101/10 140/104/10 92/102/10 +f 140/104/10 141/437/10 93/105/10 +f 93/107/10 141/437/10 142/63/10 +f 176/109/9 192/113/9 191/110/9 +f 161/112/9 177/116/9 192/113/9 +f 162/115/9 178/120/9 177/116/9 +f 162/118/9 163/438/9 179/119/9 +f 163/121/9 164/439/9 180/122/9 +f 164/123/9 165/440/9 181/124/9 +f 165/125/9 166/441/9 182/126/9 +f 166/127/9 167/442/9 183/128/9 +f 168/129/9 184/133/9 183/128/9 +f 168/131/9 169/443/9 185/132/9 +f 170/134/9 186/138/9 185/135/9 +f 171/137/9 187/141/9 186/138/9 +f 172/140/9 188/144/9 187/141/9 +f 173/143/9 189/148/9 188/144/9 +f 173/146/9 174/444/9 190/147/9 +f 175/149/9 191/110/9 190/147/9 +f 206/151/10 207/154/10 159/152/10 +f 207/154/10 208/157/10 160/155/10 +f 208/157/10 193/160/10 145/158/10 +f 193/160/10 194/445/10 146/161/10 +f 146/163/10 194/445/10 195/164/10 +f 147/166/10 195/164/10 196/167/10 +f 148/169/10 196/167/10 197/170/10 +f 149/172/10 197/170/10 198/173/10 +f 150/175/10 198/173/10 199/176/10 +f 199/176/10 200/446/10 152/178/10 +f 152/180/10 200/446/10 201/181/10 +f 201/183/10 202/186/10 154/184/10 +f 202/186/10 203/189/10 155/187/10 +f 203/189/10 204/192/10 156/190/10 +f 204/192/10 205/447/10 157/193/10 +f 157/195/10 205/447/10 206/151/10 +f 50/197/9 49/448/9 337/198/9 +f 64/200/9 352/449/9 337/201/9 +f 58/203/9 57/450/9 345/204/9 +f 51/206/9 50/451/9 338/207/9 +f 59/209/9 58/452/9 346/210/9 +f 52/212/9 51/453/9 339/213/9 +f 59/215/9 347/454/9 348/216/9 +f 53/218/9 52/455/9 340/219/9 +f 60/221/9 348/456/9 349/222/9 +f 53/224/9 341/457/9 342/225/9 +f 62/227/9 61/458/9 349/228/9 +f 55/230/9 54/459/9 342/231/9 +f 63/233/9 62/460/9 350/234/9 +f 55/236/9 343/461/9 344/237/9 +f 64/239/9 63/462/9 351/240/9 +f 56/242/9 344/463/9 345/243/9 +f 382/245/10 383/464/10 367/246/10 +f 367/248/10 383/464/10 384/249/10 +f 384/249/10 369/465/10 353/251/10 +f 353/253/10 369/465/10 370/254/10 +f 354/256/10 370/254/10 371/257/10 +f 371/257/10 372/466/10 356/259/10 +f 356/261/10 372/466/10 373/262/10 +f 373/262/10 374/467/10 358/264/10 +f 358/266/10 374/467/10 375/267/10 +f 375/267/10 376/271/10 360/269/10 +f 376/271/10 377/468/10 361/272/10 +f 361/274/10 377/469/10 378/275/10 +f 362/277/10 378/275/10 379/278/10 +f 363/280/10 379/278/10 380/281/10 +f 380/281/10 381/470/10 365/283/10 +f 365/285/10 381/470/10 382/245/10 +f 414/287/9 415/471/9 399/288/9 +f 415/290/9 416/472/9 400/291/9 +f 400/291/9 416/473/9 401/292/9 +f 401/294/9 402/474/9 386/295/9 +f 402/296/9 403/475/9 387/297/9 +f 387/297/9 403/476/9 404/298/9 +f 404/300/9 405/477/9 389/301/9 +f 389/301/9 405/478/9 406/302/9 +f 406/304/9 407/479/9 391/305/9 +f 391/305/9 407/480/9 408/306/9 +f 392/307/9 408/481/9 409/308/9 +f 409/310/9 410/482/9 394/311/9 +f 410/313/9 411/483/9 395/314/9 +f 411/315/9 412/484/9 396/316/9 +f 396/316/9 412/485/9 413/317/9 +f 413/319/9 414/486/9 398/289/9 +f 431/320/10 447/487/10 448/321/10 +f 448/321/10 433/488/10 417/323/10 +f 417/325/10 433/488/10 434/326/10 +f 418/328/10 434/326/10 435/329/10 +f 435/329/10 436/489/10 420/331/10 +f 420/333/10 436/489/10 437/334/10 +f 437/334/10 438/490/10 422/336/10 +f 422/338/10 438/490/10 439/339/10 +f 439/339/10 440/343/10 424/341/10 +f 440/343/10 441/491/10 425/344/10 +f 425/346/10 441/492/10 442/347/10 +f 426/349/10 442/347/10 443/350/10 +f 427/352/10 443/350/10 444/353/10 +f 444/353/10 445/493/10 429/355/10 +f 429/357/10 445/493/10 446/358/10 +f 446/358/10 447/487/10 431/360/10 +f 705/364/10 706/494/10 707/495/10 +f 707/495/10 708/496/10 705/364/10 +f 708/496/10 709/497/10 705/364/10 +f 709/497/10 710/498/10 705/364/10 +f 710/498/10 711/362/10 705/364/10 +f 715/367/9 713/499/9 714/500/9 +f 714/500/9 720/501/9 715/367/9 +f 720/501/9 719/502/9 715/367/9 +f 719/502/9 718/503/9 715/367/9 +f 718/503/9 717/365/9 715/367/9 +f 723/368/9 722/504/9 721/505/9 +f 721/505/9 736/506/9 723/368/9 +f 736/506/9 735/369/9 723/368/9 +f 735/369/9 734/507/9 733/508/9 +f 733/508/9 732/509/9 731/370/9 +f 731/370/9 730/510/9 729/511/9 +f 729/511/9 728/512/9 727/513/9 +f 727/513/9 726/514/9 725/515/9 +f 725/515/9 724/516/9 723/368/9 +f 735/369/9 733/508/9 731/370/9 +f 731/370/9 729/511/9 723/368/9 +f 729/511/9 727/513/9 723/368/9 +f 727/513/9 725/515/9 723/368/9 +f 740/371/9 744/380/9 743/372/9 +f 744/374/11 742/377/11 741/375/11 +f 742/377/10 738/517/10 737/378/10 +f 739/379/12 743/518/12 741/375/12 +f 740/371/13 738/517/13 742/377/13 +f 748/381/9 752/389/9 751/382/9 +f 751/384/14 752/519/14 750/385/14 +f 750/385/10 746/520/10 745/387/10 +f 747/388/15 751/521/15 749/386/15 +f 748/381/16 746/520/16 750/385/16 +f 755/390/9 756/399/9 760/391/9 +f 760/393/17 758/396/17 757/394/17 +f 758/396/10 754/522/10 753/397/10 +f 755/398/13 759/523/13 757/394/13 +f 756/399/12 754/522/12 758/396/12 +f 763/400/9 764/409/9 768/401/9 +f 768/403/18 766/406/18 765/404/18 +f 766/406/10 762/524/10 761/407/10 +f 763/408/16 767/525/16 765/404/16 +f 764/409/15 762/524/15 766/406/15 +f 769/412/10 770/526/10 771/527/10 +f 771/527/10 772/528/10 769/412/10 +f 772/528/10 773/529/10 769/412/10 +f 773/529/10 774/530/10 769/412/10 +f 774/530/10 775/410/10 769/412/10 +f 779/415/9 777/531/9 778/532/9 +f 778/532/9 784/533/9 779/415/9 +f 784/533/9 783/534/9 779/415/9 +f 783/534/9 782/535/9 779/415/9 +f 782/535/9 781/413/9 779/415/9 +f 785/418/10 786/536/10 787/537/10 +f 787/537/10 788/538/10 785/418/10 +f 788/538/10 789/539/10 785/418/10 +f 789/539/10 790/540/10 785/418/10 +f 790/540/10 791/416/10 785/418/10 +f 795/421/9 793/541/9 794/542/9 +f 794/542/9 800/543/9 795/421/9 +f 800/543/9 799/544/9 795/421/9 +f 799/544/9 798/545/9 795/421/9 +f 798/545/9 797/419/9 795/421/9 +f 801/424/10 802/546/10 803/547/10 +f 803/547/10 804/548/10 801/424/10 +f 804/548/10 805/549/10 801/424/10 +f 805/549/10 806/550/10 801/424/10 +f 806/550/10 807/422/10 801/424/10 +f 811/427/9 809/551/9 810/552/9 +f 810/552/9 816/553/9 811/427/9 +f 816/553/9 815/554/9 811/427/9 +f 815/554/9 814/555/9 811/427/9 +f 814/555/9 813/425/9 811/427/9 +s 1 +f 28/556/19 45/557/20 29/558/20 +f 21/559/21 38/560/22 22/561/22 +f 29/558/20 46/562/23 30/563/23 +f 22/561/22 39/564/12 23/565/12 +f 30/563/23 47/566/13 31/567/13 +f 23/565/12 40/568/24 24/569/24 +f 31/567/13 48/570/25 32/571/25 +f 24/569/24 41/572/26 25/573/26 +f 17/574/27 34/575/28 18/576/28 +f 32/571/25 33/577/27 17/574/27 +f 25/578/26 42/579/29 26/580/29 +f 18/576/28 35/581/16 19/582/16 +f 26/580/29 43/583/15 27/584/15 +f 19/582/16 36/585/30 20/586/30 +f 27/584/15 44/587/19 28/556/19 +f 20/586/30 37/588/21 21/559/21 +f 46/562/31 63/233/32 47/566/32 +f 63/462/32 48/570/33 47/566/32 +f 48/570/33 49/202/34 33/577/34 +f 49/448/34 34/575/35 33/577/34 +f 50/451/35 35/581/36 34/575/35 +f 35/581/36 52/212/37 36/585/37 +f 52/455/37 37/588/38 36/585/37 +f 37/588/38 54/226/39 38/560/39 +f 54/459/39 39/564/40 38/560/39 +f 55/236/40 40/568/41 39/564/40 +f 40/568/41 57/244/42 41/572/42 +f 57/450/42 42/579/43 41/589/42 +f 58/452/43 43/583/44 42/579/43 +f 59/215/44 44/587/45 43/583/44 +f 60/221/45 45/557/46 44/587/45 +f 45/557/46 62/227/31 46/562/31 +f 32/571/47 79/590/48 31/567/48 +f 30/563/49 79/591/48 78/592/49 +f 29/558/50 78/593/49 77/594/50 +f 29/558/50 76/595/51 28/556/51 +f 28/556/51 75/596/52 27/584/52 +f 27/584/52 74/597/53 26/580/53 +f 26/580/53 73/598/54 25/578/54 +f 24/569/55 73/599/54 72/600/55 +f 24/569/55 71/601/56 23/565/56 +f 23/565/56 70/602/57 22/561/57 +f 22/561/57 69/603/58 21/559/58 +f 20/586/59 69/604/58 68/605/59 +f 19/582/60 68/606/59 67/607/60 +f 19/582/60 66/608/61 18/576/61 +f 18/576/61 65/609/62 17/574/62 +f 17/574/62 80/610/47 32/571/47 +f 113/28/27 144/69/25 128/25/25 +f 114/32/28 129/72/27 113/28/27 +f 115/31/16 130/435/28 114/32/28 +f 116/34/30 131/76/16 115/31/16 +f 117/36/21 132/79/30 116/34/30 +f 118/38/22 133/82/21 117/36/21 +f 119/40/12 134/85/22 118/38/22 +f 120/45/24 135/88/12 119/40/12 +f 121/44/26 136/436/24 120/45/24 +f 122/50/29 137/95/26 121/47/26 +f 123/53/15 138/98/29 122/50/29 +f 124/56/19 139/101/15 123/53/15 +f 125/60/20 140/104/19 124/56/19 +f 126/59/23 141/437/20 125/60/20 +f 127/22/13 142/63/23 126/59/23 +f 128/25/25 143/66/13 127/22/13 +f 177/116/27 208/157/25 192/113/25 +f 178/120/28 193/160/27 177/116/27 +f 179/119/16 194/445/28 178/120/28 +f 180/122/30 195/164/16 179/119/16 +f 181/124/21 196/167/30 180/122/30 +f 182/126/22 197/170/21 181/124/21 +f 183/128/12 198/173/22 182/126/22 +f 184/133/24 199/176/12 183/128/12 +f 185/132/26 200/446/24 184/133/24 +f 186/138/29 201/183/26 185/135/26 +f 187/141/15 202/186/29 186/138/29 +f 188/144/19 203/189/15 187/141/15 +f 189/148/20 204/192/19 188/144/19 +f 190/147/23 205/447/20 189/148/20 +f 191/110/13 206/151/23 190/147/23 +f 192/113/25 207/154/13 191/110/13 +f 224/611/13 209/612/27 216/613/13 +f 222/614/15 215/615/20 214/616/15 +f 220/617/12 213/618/26 212/619/12 +f 218/620/16 211/621/21 210/622/16 +f 223/623/20 216/613/13 215/615/20 +f 221/624/26 214/616/15 213/625/26 +f 219/626/21 212/619/12 211/621/21 +f 217/627/27 210/622/16 209/612/27 +f 240/628/12 225/629/26 232/630/12 +f 238/631/16 231/632/21 230/633/16 +f 236/634/13 229/635/27 228/636/13 +f 234/637/15 227/638/20 226/639/15 +f 239/640/21 232/630/12 231/632/21 +f 237/641/27 230/633/16 229/642/27 +f 235/643/20 228/636/13 227/638/20 +f 233/644/26 226/639/15 225/629/26 +f 256/645/15 241/646/20 248/647/15 +f 254/648/12 247/649/26 246/650/12 +f 252/651/16 245/652/21 244/653/16 +f 250/654/13 243/655/27 242/656/13 +f 255/657/26 248/647/15 247/649/26 +f 253/658/21 246/650/12 245/659/21 +f 251/660/27 244/653/16 243/655/27 +f 249/661/20 242/656/13 241/646/20 +f 272/662/16 257/663/21 264/664/16 +f 270/665/13 263/666/27 262/667/13 +f 268/668/15 261/669/20 260/670/15 +f 266/671/12 259/672/26 258/673/12 +f 271/674/27 264/664/16 263/666/27 +f 269/675/20 262/667/13 261/676/20 +f 267/677/26 260/670/15 259/672/26 +f 265/678/21 258/673/12 257/663/21 +f 288/679/20 273/680/13 280/681/20 +f 286/682/26 279/683/15 278/684/26 +f 284/685/21 277/686/12 276/687/21 +f 282/688/27 275/689/16 274/690/27 +f 287/691/15 280/681/20 279/683/15 +f 285/692/12 278/684/26 277/693/12 +f 283/694/16 276/687/21 275/689/16 +f 281/695/13 274/690/27 273/680/13 +f 304/696/21 289/697/12 296/698/21 +f 302/699/27 295/700/16 294/701/27 +f 300/702/20 293/703/13 292/704/20 +f 298/705/26 291/706/15 290/707/26 +f 303/708/16 296/698/21 295/700/16 +f 301/709/13 294/701/27 293/710/13 +f 299/711/15 292/704/20 291/706/15 +f 297/712/12 290/707/26 289/697/12 +f 320/713/26 305/714/15 312/715/26 +f 318/716/21 311/717/12 310/718/21 +f 316/719/27 309/720/16 308/721/27 +f 314/722/20 307/723/13 306/724/20 +f 319/725/12 312/715/26 311/717/12 +f 317/726/16 310/718/21 309/727/16 +f 315/728/13 308/721/27 307/723/13 +f 313/729/15 306/724/20 305/714/15 +f 336/730/27 321/731/16 328/732/27 +f 334/733/20 327/734/13 326/735/20 +f 332/736/26 325/737/15 324/738/26 +f 330/739/21 323/740/12 322/741/21 +f 335/742/13 328/732/27 327/734/13 +f 333/743/15 326/735/20 325/744/15 +f 331/745/12 324/738/26 323/740/12 +f 329/746/16 322/741/21 321/731/16 +f 337/747/27 354/748/28 338/749/28 +f 352/750/25 353/751/27 337/747/27 +f 345/752/26 362/753/29 346/754/29 +f 338/749/28 355/755/16 339/756/16 +f 346/754/29 363/757/15 347/758/15 +f 339/756/16 356/759/30 340/760/30 +f 347/758/15 364/761/19 348/762/19 +f 340/760/30 357/763/21 341/764/21 +f 348/762/19 365/765/20 349/766/20 +f 341/764/21 358/767/22 342/768/22 +f 349/766/20 366/769/23 350/770/23 +f 342/768/22 359/771/12 343/772/12 +f 350/770/23 367/773/13 351/774/13 +f 343/772/12 360/775/24 344/776/24 +f 351/774/13 368/777/25 352/750/25 +f 344/776/24 361/778/26 345/779/26 +f 395/314/15 380/281/19 379/278/15 +f 388/299/30 373/262/21 372/466/30 +f 396/316/19 381/470/20 380/281/19 +f 389/301/21 374/467/22 373/262/21 +f 397/318/20 382/245/23 381/470/20 +f 390/303/22 375/267/12 374/467/22 +f 398/289/23 383/464/13 382/245/23 +f 391/305/12 376/271/24 375/267/12 +f 399/288/13 384/249/25 383/464/13 +f 392/307/24 377/468/26 376/271/24 +f 385/293/27 370/254/28 369/465/27 +f 400/291/25 369/465/27 384/249/25 +f 393/312/26 378/275/29 377/469/26 +f 386/295/28 371/257/16 370/254/28 +f 394/311/29 379/278/15 378/275/29 +f 387/297/16 372/466/30 371/257/16 +f 401/780/27 418/781/28 402/782/28 +f 416/783/25 417/784/27 401/780/27 +f 409/785/26 426/786/29 410/787/29 +f 402/782/28 419/788/16 403/789/16 +f 410/787/29 427/790/15 411/791/15 +f 403/789/16 420/792/30 404/793/30 +f 411/791/15 428/794/19 412/795/19 +f 404/793/30 421/796/21 405/797/21 +f 412/795/19 429/798/20 413/799/20 +f 405/797/21 422/800/22 406/801/22 +f 413/799/20 430/802/23 414/803/23 +f 406/801/22 423/804/12 407/805/12 +f 414/803/23 431/806/13 415/807/13 +f 407/805/12 424/808/24 408/809/24 +f 415/807/13 432/810/25 416/783/25 +f 408/809/24 425/811/26 409/812/26 +f 459/813/15 444/353/19 443/350/15 +f 452/814/30 437/334/21 436/489/30 +f 460/815/19 445/493/20 444/353/19 +f 453/816/21 438/490/22 437/334/21 +f 461/817/20 446/358/23 445/493/20 +f 454/818/22 439/339/12 438/490/22 +f 462/819/23 447/487/13 446/358/23 +f 455/820/12 440/343/24 439/339/12 +f 463/821/13 448/321/25 447/487/13 +f 456/822/24 441/491/26 440/343/24 +f 449/823/27 434/326/28 433/488/27 +f 464/824/25 433/488/27 448/321/25 +f 457/825/26 442/347/29 441/492/26 +f 450/826/28 435/329/16 434/326/28 +f 458/827/29 443/350/15 442/347/29 +f 451/828/16 436/489/30 435/329/16 +f 475/829/27 468/830/63 467/831/64 +f 473/832/9 466/833/65 465/834/66 +f 480/835/67 465/836/66 472/837/68 +f 478/838/69 471/839/12 470/840/70 +f 476/841/71 469/842/72 468/830/63 +f 474/843/73 467/831/64 466/833/65 +f 479/844/26 472/837/68 471/839/12 +f 477/845/10 470/840/70 469/842/72 +f 467/831/64 484/846/74 483/847/13 +f 466/848/65 481/849/75 465/850/66 +f 465/851/66 487/852/76 472/853/68 +f 468/854/63 485/855/77 484/846/74 +f 466/848/65 483/847/13 482/856/78 +f 469/857/72 486/858/79 485/855/77 +f 481/849/75 489/859/80 488/860/81 +f 487/852/76 488/861/81 494/862/82 +f 485/855/77 491/863/83 484/846/74 +f 483/847/13 489/859/80 482/856/78 +f 486/858/79 492/864/84 485/855/77 +f 484/846/74 490/865/85 483/847/13 +f 470/866/70 471/867/12 486/858/79 +f 486/858/79 471/867/12 493/868/86 +f 472/853/68 487/852/76 471/867/12 +f 487/852/76 494/862/82 471/867/12 +f 494/869/82 495/870/87 471/871/12 +f 488/872/81 502/873/88 494/869/82 +f 471/871/12 501/874/89 493/875/86 +f 492/876/84 499/877/90 491/878/83 +f 490/865/85 497/879/91 489/880/80 +f 493/875/86 500/881/92 492/876/84 +f 491/878/83 498/882/93 490/865/85 +f 489/880/80 496/883/73 488/884/81 +f 506/885/10 513/886/70 514/887/72 +f 504/888/26 511/889/68 512/890/12 +f 509/891/73 516/892/64 517/893/65 +f 507/894/71 514/887/72 515/895/63 +f 505/896/69 512/890/12 513/886/70 +f 503/897/67 518/898/66 511/889/68 +f 510/899/9 517/893/65 518/900/66 +f 508/901/27 515/895/63 516/892/64 +f 527/902/94 520/903/12 532/904/95 +f 530/905/96 523/906/20 529/907/97 +f 532/904/95 521/908/26 531/909/98 +f 533/910/99 525/911/21 527/902/94 +f 529/907/97 524/912/13 528/913/100 +f 528/913/100 526/914/27 496/915/73 +f 496/916/73 519/917/16 533/910/99 +f 531/909/98 522/918/15 530/905/96 +f 528/919/100 496/920/73 539/921/101 +f 497/922/91 539/921/101 496/920/73 +f 533/923/99 534/924/102 496/925/73 +f 502/926/88 496/925/73 534/924/102 +f 535/927/103 531/909/98 536/928/69 +f 537/929/104 529/930/97 538/931/105 +f 535/927/103 527/932/94 532/933/95 +f 536/928/69 530/934/96 537/929/104 +f 539/921/101 529/930/97 528/919/100 +f 534/924/102 527/932/94 540/935/106 +f 502/926/88 540/935/106 495/936/87 +f 499/937/90 538/931/105 498/938/93 +f 500/881/92 535/927/103 536/928/69 +f 501/939/89 540/935/106 535/927/103 +f 497/922/91 538/931/105 539/921/101 +f 500/881/92 537/929/104 499/937/90 +f 515/940/63 543/941/13 516/892/64 +f 517/942/65 541/943/75 518/944/66 +f 518/945/66 547/946/76 511/947/68 +f 515/940/63 545/948/77 544/949/74 +f 516/892/64 542/950/78 517/942/65 +f 514/951/72 546/952/79 545/948/77 +f 541/943/75 549/953/80 548/954/81 +f 547/946/76 548/955/81 554/956/82 +f 545/948/77 551/957/83 544/949/74 +f 542/950/78 550/958/85 549/953/80 +f 546/952/79 552/959/84 545/948/77 +f 544/949/74 550/958/85 543/941/13 +f 513/960/70 512/961/12 546/952/79 +f 546/952/79 512/961/12 553/962/86 +f 511/947/68 547/946/76 512/961/12 +f 547/946/76 554/956/82 512/961/12 +f 554/963/82 555/964/87 512/965/12 +f 548/966/81 562/967/88 554/963/82 +f 512/965/12 561/968/89 553/969/86 +f 552/970/84 559/971/90 551/972/83 +f 550/958/85 557/973/91 549/974/80 +f 553/969/86 560/975/92 552/970/84 +f 551/972/83 558/976/93 550/958/85 +f 549/974/80 556/977/73 548/978/81 +f 571/979/94 564/980/12 576/981/95 +f 574/982/96 567/983/20 573/984/97 +f 576/981/95 565/985/26 575/986/98 +f 577/987/99 569/988/21 571/979/94 +f 573/984/97 568/989/13 572/990/100 +f 572/990/100 570/991/27 556/992/73 +f 556/993/73 563/994/16 577/987/99 +f 575/986/98 566/995/15 574/982/96 +f 572/996/100 556/997/73 583/998/101 +f 557/999/91 583/998/101 556/997/73 +f 577/1000/99 578/1001/102 556/1002/73 +f 562/1003/88 556/1002/73 578/1001/102 +f 579/1004/103 575/986/98 580/1005/69 +f 581/1006/104 573/1007/97 582/1008/105 +f 579/1004/103 571/1009/94 576/1010/95 +f 581/1006/104 575/986/98 574/1011/96 +f 583/998/101 573/1007/97 572/996/100 +f 578/1001/102 571/1009/94 584/1012/106 +f 562/1003/88 584/1012/106 555/1013/87 +f 559/1014/90 582/1008/105 558/1015/93 +f 560/975/92 579/1004/103 580/1005/69 +f 561/1016/89 584/1012/106 579/1004/103 +f 557/999/91 582/1008/105 583/998/101 +f 560/975/92 581/1006/104 559/1014/90 +f 595/1017/27 588/1018/63 587/1019/64 +f 593/1020/9 586/1021/65 585/1022/66 +f 600/1023/67 585/1024/66 592/1025/68 +f 598/1026/69 591/1027/12 590/1028/70 +f 596/1029/71 589/1030/72 588/1018/63 +f 594/1031/73 587/1019/64 586/1021/65 +f 599/1032/26 592/1025/68 591/1027/12 +f 597/1033/10 590/1028/70 589/1030/72 +f 587/1019/64 604/1034/74 603/1035/13 +f 586/1036/65 601/1037/75 585/1038/66 +f 585/1039/66 607/1040/76 592/1041/68 +f 588/1042/63 605/1043/77 604/1034/74 +f 586/1036/65 603/1035/13 602/1044/78 +f 589/1045/72 606/1046/79 605/1043/77 +f 601/1037/75 609/1047/80 608/1048/81 +f 607/1040/76 608/1049/81 614/1050/82 +f 605/1043/77 611/1051/83 604/1034/74 +f 602/1044/78 610/1052/85 609/1047/80 +f 606/1046/79 612/1053/84 605/1043/77 +f 604/1034/74 610/1052/85 603/1035/13 +f 590/1054/70 591/1055/12 606/1046/79 +f 606/1046/79 591/1055/12 613/1056/86 +f 592/1041/68 607/1040/76 591/1055/12 +f 607/1040/76 614/1050/82 591/1055/12 +f 614/1057/82 615/1058/87 591/1059/12 +f 608/1060/81 622/1061/88 614/1057/82 +f 591/1059/12 621/1062/89 613/1063/86 +f 612/1064/84 619/1065/90 611/1066/83 +f 610/1052/85 617/1067/91 609/1068/80 +f 613/1063/86 620/1069/92 612/1064/84 +f 611/1066/83 618/1070/93 610/1052/85 +f 609/1068/80 616/1071/73 608/1072/81 +f 626/1073/10 633/1074/70 634/1075/72 +f 624/1076/26 631/1077/68 632/1078/12 +f 629/1079/73 636/1080/64 637/1081/65 +f 627/1082/71 634/1075/72 635/1083/63 +f 625/1084/69 632/1078/12 633/1074/70 +f 623/1085/67 638/1086/66 631/1077/68 +f 630/1087/9 637/1081/65 638/1088/66 +f 628/1089/27 635/1083/63 636/1080/64 +f 647/1090/94 640/1091/12 652/1092/95 +f 650/1093/96 643/1094/20 649/1095/97 +f 652/1092/95 641/1096/26 651/1097/98 +f 653/1098/99 645/1099/21 647/1090/94 +f 649/1095/97 644/1100/13 648/1101/100 +f 648/1101/100 646/1102/27 616/1103/73 +f 616/1104/73 639/1105/16 653/1098/99 +f 651/1097/98 642/1106/15 650/1093/96 +f 648/1107/100 616/1108/73 659/1109/101 +f 617/1110/91 659/1109/101 616/1108/73 +f 653/1111/99 654/1112/102 616/1113/73 +f 622/1114/88 616/1113/73 654/1112/102 +f 655/1115/103 651/1097/98 656/1116/69 +f 658/1117/105 650/1118/96 649/1119/97 +f 660/1120/106 652/1121/95 655/1115/103 +f 657/1122/104 651/1097/98 650/1118/96 +f 659/1109/101 649/1119/97 648/1107/100 +f 654/1112/102 647/1123/94 660/1120/106 +f 622/1114/88 660/1120/106 615/1124/87 +f 619/1125/90 658/1117/105 618/1126/93 +f 620/1069/92 655/1115/103 656/1116/69 +f 615/1124/87 655/1115/103 621/1127/89 +f 618/1126/93 659/1109/101 617/1110/91 +f 619/1125/90 656/1116/69 657/1122/104 +f 636/1080/64 664/1128/74 663/1129/13 +f 637/1130/65 661/1131/75 638/1132/66 +f 638/1133/66 667/1134/76 631/1135/68 +f 635/1136/63 665/1137/77 664/1128/74 +f 636/1080/64 662/1138/78 637/1130/65 +f 634/1139/72 666/1140/79 665/1137/77 +f 661/1131/75 669/1141/80 668/1142/81 +f 667/1134/76 668/1143/81 674/1144/82 +f 665/1137/77 671/1145/83 664/1128/74 +f 662/1138/78 670/1146/85 669/1141/80 +f 666/1140/79 672/1147/84 665/1137/77 +f 664/1128/74 670/1146/85 663/1129/13 +f 633/1148/70 632/1149/12 666/1140/79 +f 666/1140/79 632/1149/12 673/1150/86 +f 631/1135/68 667/1134/76 632/1149/12 +f 667/1134/76 674/1144/82 632/1149/12 +f 674/1151/82 675/1152/87 632/1153/12 +f 668/1154/81 682/1155/88 674/1151/82 +f 632/1153/12 681/1156/89 673/1157/86 +f 672/1158/84 679/1159/90 671/1160/83 +f 670/1146/85 677/1161/91 669/1162/80 +f 673/1157/86 680/1163/92 672/1158/84 +f 671/1160/83 678/1164/93 670/1146/85 +f 669/1162/80 676/1165/73 668/1166/81 +f 691/1167/94 684/1168/12 696/1169/95 +f 694/1170/96 687/1171/20 693/1172/97 +f 696/1169/95 685/1173/26 695/1174/98 +f 697/1175/99 689/1176/21 691/1167/94 +f 693/1172/97 688/1177/13 692/1178/100 +f 692/1178/100 690/1179/27 676/1180/73 +f 676/1181/73 683/1182/16 697/1175/99 +f 695/1174/98 686/1183/15 694/1170/96 +f 692/1184/100 676/1185/73 703/1186/101 +f 677/1187/91 703/1186/101 676/1185/73 +f 697/1188/99 698/1189/102 676/1190/73 +f 682/1191/88 676/1190/73 698/1189/102 +f 699/1192/103 695/1174/98 700/1193/69 +f 701/1194/104 693/1195/97 702/1196/105 +f 704/1197/106 696/1198/95 699/1192/103 +f 700/1193/69 694/1199/96 701/1194/104 +f 703/1186/101 693/1195/97 692/1184/100 +f 698/1189/102 691/1200/94 704/1197/106 +f 675/1201/87 698/1189/102 704/1197/106 +f 679/1202/90 702/1196/105 678/1203/93 +f 680/1163/92 699/1192/103 700/1193/69 +f 675/1201/87 699/1192/103 681/1204/89 +f 678/1203/93 703/1186/101 677/1187/91 +f 680/1163/92 701/1194/104 679/1202/90 +f 720/1205/13 705/1206/27 712/1207/13 +f 718/1208/15 711/1209/20 710/1210/15 +f 716/1211/12 709/1212/26 708/1213/12 +f 713/1214/16 707/1215/21 706/1216/16 +f 719/1217/20 712/1207/13 711/1209/20 +f 717/1218/26 710/1210/15 709/1219/26 +f 715/1220/21 708/1213/12 707/1215/21 +f 714/1221/27 706/1216/16 705/1206/27 +f 733/1222/107 462/819/108 461/817/107 +f 734/1223/108 463/821/109 462/819/108 +f 735/1224/109 464/824/110 463/821/109 +f 464/824/110 721/1225/111 449/823/112 +f 721/1226/111 450/826/113 449/823/112 +f 722/1227/114 451/828/115 450/826/113 +f 451/828/115 724/1228/116 452/814/116 +f 452/814/116 725/1229/117 453/816/117 +f 453/816/117 726/1230/118 454/818/119 +f 454/818/119 727/1231/120 455/820/120 +f 455/820/120 728/1232/121 456/822/121 +f 728/1233/121 457/1234/122 456/822/121 +f 457/825/122 730/1235/123 458/827/123 +f 730/1236/123 459/813/124 458/827/123 +f 731/1237/124 460/815/125 459/813/124 +f 732/1238/126 461/817/107 460/815/125 +f 784/1239/13 769/1240/27 776/1241/13 +f 782/1242/15 775/1243/20 774/1244/15 +f 780/1245/12 773/1246/26 772/1247/12 +f 777/1248/16 771/1249/21 770/1250/16 +f 783/1251/20 776/1241/13 775/1243/20 +f 781/1252/26 774/1244/15 773/1253/26 +f 779/1254/21 772/1247/12 771/1249/21 +f 778/1255/27 770/1250/16 769/1240/27 +f 800/1256/13 785/1257/27 792/1258/13 +f 798/1259/15 791/1260/20 790/1261/15 +f 796/1262/12 789/1263/26 788/1264/12 +f 793/1265/16 787/1266/21 786/1267/16 +f 799/1268/20 792/1258/13 791/1260/20 +f 797/1269/26 790/1261/15 789/1270/26 +f 795/1271/21 788/1264/12 787/1266/21 +f 794/1272/27 786/1267/16 785/1257/27 +f 816/1273/13 801/1274/27 808/1275/13 +f 814/1276/15 807/1277/20 806/1278/15 +f 812/1279/12 805/1280/26 804/1281/12 +f 809/1282/16 803/1283/21 802/1284/16 +f 815/1285/20 808/1275/13 807/1277/20 +f 813/1286/26 806/1278/15 805/1287/26 +f 811/1288/21 804/1281/12 803/1283/21 +f 810/1289/27 802/1284/16 801/1274/27 +f 820/1290/127 827/1291/27 819/1292/128 +f 818/1293/129 825/1294/9 817/1295/130 +f 817/1296/130 832/1297/67 824/1298/131 +f 823/1299/15 830/1300/69 822/1301/132 +f 821/1302/133 828/1303/71 820/1290/127 +f 819/1292/128 826/1304/73 818/1293/129 +f 824/1298/131 831/1305/26 823/1299/15 +f 822/1301/132 829/1306/10 821/1302/133 +f 819/1292/128 836/1307/134 820/1308/127 +f 833/1309/135 818/1310/129 817/1311/130 +f 839/1312/136 817/1313/130 824/1314/131 +f 820/1308/127 837/1315/137 821/1316/133 +f 834/1317/138 819/1292/128 818/1310/129 +f 821/1316/133 838/1318/139 822/1319/132 +f 833/1309/135 841/1320/140 834/1317/138 +f 839/1312/136 840/1321/141 833/1322/135 +f 843/1323/142 837/1315/137 836/1307/134 +f 841/1320/140 835/1324/16 834/1317/138 +f 844/1325/143 838/1318/139 837/1315/137 +f 842/1326/144 836/1307/134 835/1324/16 +f 822/1319/132 838/1318/139 823/1327/15 +f 838/1318/139 845/1328/145 823/1327/15 +f 824/1314/131 823/1327/15 839/1312/136 +f 839/1312/136 823/1327/15 846/1329/146 +f 847/1330/93 846/1331/146 823/1332/15 +f 854/1333/91 840/1334/141 846/1331/146 +f 853/1335/90 823/1332/15 845/1336/145 +f 851/1337/89 844/1338/143 843/1339/142 +f 849/1340/88 842/1326/144 841/1341/140 +f 852/1342/92 845/1336/145 844/1338/143 +f 850/1343/87 843/1339/142 842/1326/144 +f 848/1344/73 841/1341/140 840/1345/141 +f 865/1346/132 858/1347/10 866/1348/133 +f 863/1349/131 856/1350/26 864/1351/15 +f 868/1352/128 861/1353/73 869/1354/129 +f 866/1348/133 859/1355/71 867/1356/127 +f 864/1351/15 857/1357/69 865/1346/132 +f 870/1358/130 855/1359/67 863/1349/131 +f 869/1354/129 862/1360/9 870/1361/130 +f 867/1356/127 860/1362/27 868/1352/128 +f 872/1363/15 879/1364/97 884/1365/96 +f 875/1366/21 882/1367/95 881/1368/94 +f 873/1369/26 884/1365/96 883/1370/98 +f 877/1371/20 885/1372/100 879/1364/97 +f 876/1373/16 881/1368/94 880/1374/99 +f 878/1375/27 880/1374/99 848/1376/73 +f 871/1377/13 848/1378/73 885/1372/100 +f 874/1379/12 883/1370/98 882/1367/95 +f 880/1380/99 891/1381/102 848/1382/73 +f 849/1383/88 848/1382/73 891/1381/102 +f 885/1384/100 848/1385/73 886/1386/101 +f 854/1387/91 886/1386/101 848/1385/73 +f 883/1370/98 887/1388/104 888/1389/69 +f 890/1390/106 882/1391/95 889/1392/103 +f 884/1393/96 892/1394/105 887/1388/104 +f 889/1392/103 883/1370/98 888/1389/69 +f 891/1381/102 881/1395/94 890/1390/106 +f 879/1396/97 886/1386/101 892/1394/105 +f 892/1394/105 854/1387/91 847/1397/93 +f 850/1398/87 889/1392/103 851/1399/89 +f 888/1389/69 853/1400/90 852/1342/92 +f 887/1388/104 847/1397/93 853/1400/90 +f 849/1383/88 890/1390/106 850/1398/87 +f 889/1392/103 852/1342/92 851/1399/89 +f 895/1401/16 867/1402/127 868/1352/128 +f 870/1403/130 894/1404/138 869/1405/129 +f 899/1406/136 870/1407/130 863/1408/131 +f 867/1402/127 897/1409/137 866/1410/133 +f 894/1404/138 868/1352/128 869/1405/129 +f 866/1410/133 898/1411/139 865/1412/132 +f 893/1413/135 901/1414/140 894/1404/138 +f 899/1406/136 900/1415/141 893/1416/135 +f 903/1417/142 897/1409/137 896/1418/134 +f 894/1404/138 902/1419/144 895/1401/16 +f 904/1420/143 898/1411/139 897/1409/137 +f 902/1419/144 896/1418/134 895/1401/16 +f 865/1412/132 898/1411/139 864/1421/15 +f 898/1411/139 905/1422/145 864/1421/15 +f 863/1408/131 864/1421/15 899/1406/136 +f 899/1406/136 864/1421/15 906/1423/146 +f 907/1424/93 906/1425/146 864/1426/15 +f 914/1427/91 900/1428/141 906/1425/146 +f 913/1429/90 864/1426/15 905/1430/145 +f 911/1431/89 904/1432/143 903/1433/142 +f 909/1434/88 902/1419/144 901/1435/140 +f 912/1436/92 905/1430/145 904/1432/143 +f 910/1437/87 903/1433/142 902/1419/144 +f 908/1438/73 901/1435/140 900/1439/141 +f 916/1440/15 923/1441/97 928/1442/96 +f 919/1443/21 926/1444/95 925/1445/94 +f 917/1446/26 928/1442/96 927/1447/98 +f 921/1448/20 929/1449/100 923/1441/97 +f 920/1450/16 925/1445/94 924/1451/99 +f 922/1452/27 924/1451/99 908/1453/73 +f 915/1454/13 908/1455/73 929/1449/100 +f 918/1456/12 927/1447/98 926/1444/95 +f 924/1457/99 935/1458/102 908/1459/73 +f 909/1460/88 908/1459/73 935/1458/102 +f 929/1461/100 908/1462/73 930/1463/101 +f 914/1464/91 930/1463/101 908/1462/73 +f 927/1447/98 931/1465/104 932/1466/69 +f 925/1467/94 933/1468/103 934/1469/106 +f 931/1465/104 923/1470/97 936/1471/105 +f 933/1468/103 927/1447/98 932/1466/69 +f 935/1458/102 925/1467/94 934/1469/106 +f 923/1470/97 930/1463/101 936/1471/105 +f 936/1471/105 914/1464/91 907/1472/93 +f 910/1473/87 933/1468/103 911/1474/89 +f 912/1436/92 931/1465/104 913/1475/90 +f 931/1465/104 907/1472/93 913/1475/90 +f 909/1460/88 934/1469/106 910/1473/87 +f 933/1468/103 912/1436/92 911/1474/89 +f 940/1476/127 947/1477/27 939/1478/128 +f 938/1479/129 945/1480/9 937/1481/130 +f 937/1482/130 952/1483/67 944/1484/131 +f 943/1485/15 950/1486/69 942/1487/132 +f 941/1488/133 948/1489/71 940/1476/127 +f 939/1478/128 946/1490/73 938/1479/129 +f 944/1484/131 951/1491/26 943/1485/15 +f 942/1487/132 949/1492/10 941/1488/133 +f 939/1478/128 956/1493/134 940/1494/127 +f 953/1495/135 938/1496/129 937/1497/130 +f 959/1498/136 937/1499/130 944/1500/131 +f 940/1494/127 957/1501/137 941/1502/133 +f 938/1496/129 955/1503/16 939/1478/128 +f 941/1502/133 958/1504/139 942/1505/132 +f 953/1495/135 961/1506/140 954/1507/138 +f 959/1498/136 960/1508/141 953/1509/135 +f 963/1510/142 957/1501/137 956/1493/134 +f 954/1507/138 962/1511/144 955/1503/16 +f 964/1512/143 958/1504/139 957/1501/137 +f 962/1511/144 956/1493/134 955/1503/16 +f 942/1505/132 958/1504/139 943/1513/15 +f 958/1504/139 965/1514/145 943/1513/15 +f 944/1500/131 943/1513/15 959/1498/136 +f 959/1498/136 943/1513/15 966/1515/146 +f 967/1516/93 966/1517/146 943/1518/15 +f 974/1519/91 960/1520/141 966/1517/146 +f 973/1521/90 943/1518/15 965/1522/145 +f 971/1523/89 964/1524/143 963/1525/142 +f 969/1526/88 962/1511/144 961/1527/140 +f 972/1528/92 965/1522/145 964/1524/143 +f 970/1529/87 963/1525/142 962/1511/144 +f 968/1530/73 961/1527/140 960/1531/141 +f 985/1532/132 978/1533/10 986/1534/133 +f 983/1535/131 976/1536/26 984/1537/15 +f 988/1538/128 981/1539/73 989/1540/129 +f 986/1534/133 979/1541/71 987/1542/127 +f 984/1537/15 977/1543/69 985/1532/132 +f 990/1544/130 975/1545/67 983/1535/131 +f 989/1540/129 982/1546/9 990/1547/130 +f 987/1542/127 980/1548/27 988/1538/128 +f 992/1549/15 999/1550/97 1004/1551/96 +f 995/1552/21 1002/1553/95 1001/1554/94 +f 993/1555/26 1004/1551/96 1003/1556/98 +f 997/1557/20 1005/1558/100 999/1550/97 +f 996/1559/16 1001/1554/94 1000/1560/99 +f 998/1561/27 1000/1560/99 968/1562/73 +f 991/1563/13 968/1564/73 1005/1558/100 +f 994/1565/12 1003/1556/98 1002/1553/95 +f 1000/1566/99 1011/1567/102 968/1568/73 +f 969/1569/88 968/1568/73 1011/1567/102 +f 1005/1570/100 968/1571/73 1006/1572/101 +f 974/1573/91 1006/1572/101 968/1571/73 +f 1003/1556/98 1007/1574/104 1008/1575/69 +f 1010/1576/106 1002/1577/95 1009/1578/103 +f 1004/1579/96 1012/1580/105 1007/1574/104 +f 1009/1578/103 1003/1556/98 1008/1575/69 +f 1011/1567/102 1001/1581/94 1010/1576/106 +f 999/1582/97 1006/1572/101 1012/1580/105 +f 1012/1580/105 974/1573/91 967/1583/93 +f 1010/1576/106 971/1584/89 970/1585/87 +f 972/1528/92 1007/1574/104 973/1586/90 +f 1007/1574/104 967/1583/93 973/1586/90 +f 969/1569/88 1010/1576/106 970/1585/87 +f 971/1584/89 1008/1575/69 972/1528/92 +f 988/1538/128 1016/1587/134 987/1588/127 +f 1013/1589/135 989/1590/129 990/1591/130 +f 1019/1592/136 990/1593/130 983/1594/131 +f 987/1588/127 1017/1595/137 986/1596/133 +f 1014/1597/138 988/1538/128 989/1590/129 +f 986/1596/133 1018/1598/139 985/1599/132 +f 1013/1589/135 1021/1600/140 1014/1597/138 +f 1019/1592/136 1020/1601/141 1013/1602/135 +f 1023/1603/142 1017/1595/137 1016/1587/134 +f 1014/1597/138 1022/1604/144 1015/1605/16 +f 1024/1606/143 1018/1598/139 1017/1595/137 +f 1022/1604/144 1016/1587/134 1015/1605/16 +f 985/1599/132 1018/1598/139 984/1607/15 +f 1018/1598/139 1025/1608/145 984/1607/15 +f 983/1594/131 984/1607/15 1019/1592/136 +f 1019/1592/136 984/1607/15 1026/1609/146 +f 1027/1610/93 1026/1611/146 984/1612/15 +f 1034/1613/91 1020/1614/141 1026/1611/146 +f 1033/1615/90 984/1612/15 1025/1616/145 +f 1031/1617/89 1024/1618/143 1023/1619/142 +f 1029/1620/88 1022/1604/144 1021/1621/140 +f 1032/1622/92 1025/1616/145 1024/1618/143 +f 1030/1623/87 1023/1619/142 1022/1604/144 +f 1028/1624/73 1021/1621/140 1020/1625/141 +f 1036/1626/15 1043/1627/97 1048/1628/96 +f 1039/1629/21 1046/1630/95 1045/1631/94 +f 1037/1632/26 1048/1628/96 1047/1633/98 +f 1041/1634/20 1049/1635/100 1043/1627/97 +f 1040/1636/16 1045/1631/94 1044/1637/99 +f 1042/1638/27 1044/1637/99 1028/1639/73 +f 1035/1640/13 1028/1641/73 1049/1635/100 +f 1038/1642/12 1047/1633/98 1046/1630/95 +f 1044/1643/99 1055/1644/102 1028/1645/73 +f 1029/1646/88 1028/1645/73 1055/1644/102 +f 1049/1647/100 1028/1648/73 1050/1649/101 +f 1034/1650/91 1050/1649/101 1028/1648/73 +f 1047/1633/98 1051/1651/104 1052/1652/69 +f 1045/1653/94 1053/1654/103 1054/1655/106 +f 1048/1656/96 1056/1657/105 1051/1651/104 +f 1046/1658/95 1052/1652/69 1053/1654/103 +f 1055/1644/102 1045/1653/94 1054/1655/106 +f 1043/1659/97 1050/1649/101 1056/1657/105 +f 1027/1660/93 1050/1649/101 1034/1650/91 +f 1054/1655/106 1031/1661/89 1030/1662/87 +f 1032/1622/92 1051/1651/104 1033/1663/90 +f 1051/1651/104 1027/1660/93 1033/1663/90 +f 1029/1646/88 1054/1655/106 1030/1662/87 +f 1053/1654/103 1032/1622/92 1031/1661/89 +f 28/556/19 44/587/19 45/557/20 +f 21/559/21 37/588/21 38/560/22 +f 29/558/20 45/557/20 46/562/23 +f 22/561/22 38/560/22 39/564/12 +f 30/563/23 46/562/23 47/566/13 +f 23/565/12 39/564/12 40/568/24 +f 31/567/13 47/566/13 48/570/25 +f 24/569/24 40/568/24 41/572/26 +f 17/574/27 33/577/27 34/575/28 +f 32/571/25 48/570/25 33/577/27 +f 25/578/26 41/589/26 42/579/29 +f 18/576/28 34/575/28 35/581/16 +f 26/580/29 42/579/29 43/583/15 +f 19/582/16 35/581/16 36/585/30 +f 27/584/15 43/583/15 44/587/19 +f 20/586/30 36/585/30 37/588/21 +f 46/562/31 62/460/31 63/233/32 +f 63/462/32 64/239/33 48/570/33 +f 48/570/33 64/200/33 49/202/34 +f 49/448/34 50/197/35 34/575/35 +f 50/451/35 51/206/36 35/581/36 +f 35/581/36 51/453/36 52/212/37 +f 52/455/37 53/218/38 37/588/38 +f 37/588/38 53/224/38 54/226/39 +f 54/459/39 55/230/40 39/564/40 +f 55/236/40 56/238/41 40/568/41 +f 40/568/41 56/242/41 57/244/42 +f 57/450/42 58/203/43 42/579/43 +f 58/452/43 59/209/44 43/583/44 +f 59/215/44 60/217/45 44/587/45 +f 60/221/45 61/223/46 45/557/46 +f 45/557/46 61/458/46 62/227/31 +f 32/571/47 80/1664/47 79/590/48 +f 30/563/49 31/567/48 79/591/48 +f 29/558/50 30/563/49 78/593/49 +f 29/558/50 77/1665/50 76/595/51 +f 28/556/51 76/1666/51 75/596/52 +f 27/584/52 75/1667/52 74/597/53 +f 26/580/53 74/1668/53 73/598/54 +f 24/569/55 25/573/54 73/599/54 +f 24/569/55 72/1669/55 71/601/56 +f 23/565/56 71/1670/56 70/602/57 +f 22/561/57 70/1671/57 69/603/58 +f 20/586/59 21/559/58 69/604/58 +f 19/582/60 20/586/59 68/606/59 +f 19/582/60 67/1672/60 66/608/61 +f 18/576/61 66/1673/61 65/609/62 +f 17/574/62 65/1674/62 80/610/47 +f 113/28/27 129/72/27 144/69/25 +f 114/32/28 130/435/28 129/72/27 +f 115/31/16 131/76/16 130/435/28 +f 116/34/30 132/79/30 131/76/16 +f 117/36/21 133/82/21 132/79/30 +f 118/38/22 134/85/22 133/82/21 +f 119/40/12 135/88/12 134/85/22 +f 120/45/24 136/436/24 135/88/12 +f 121/44/26 137/93/26 136/436/24 +f 122/50/29 138/98/29 137/95/26 +f 123/53/15 139/101/15 138/98/29 +f 124/56/19 140/104/19 139/101/15 +f 125/60/20 141/437/20 140/104/19 +f 126/59/23 142/63/23 141/437/20 +f 127/22/13 143/66/13 142/63/23 +f 128/25/25 144/69/25 143/66/13 +f 177/116/27 193/160/27 208/157/25 +f 178/120/28 194/445/28 193/160/27 +f 179/119/16 195/164/16 194/445/28 +f 180/122/30 196/167/30 195/164/16 +f 181/124/21 197/170/21 196/167/30 +f 182/126/22 198/173/22 197/170/21 +f 183/128/12 199/176/12 198/173/22 +f 184/133/24 200/446/24 199/176/12 +f 185/132/26 201/181/26 200/446/24 +f 186/138/29 202/186/29 201/183/26 +f 187/141/15 203/189/15 202/186/29 +f 188/144/19 204/192/19 203/189/15 +f 189/148/20 205/447/20 204/192/19 +f 190/147/23 206/151/23 205/447/20 +f 191/110/13 207/154/13 206/151/23 +f 192/113/25 208/157/25 207/154/13 +f 224/611/13 217/627/27 209/612/27 +f 222/614/15 223/623/20 215/615/20 +f 220/617/12 221/1675/26 213/618/26 +f 218/620/16 219/626/21 211/621/21 +f 223/623/20 224/611/13 216/613/13 +f 221/624/26 222/614/15 214/616/15 +f 219/626/21 220/617/12 212/619/12 +f 217/627/27 218/620/16 210/622/16 +f 240/628/12 233/644/26 225/629/26 +f 238/631/16 239/640/21 231/632/21 +f 236/634/13 237/1676/27 229/635/27 +f 234/637/15 235/643/20 227/638/20 +f 239/640/21 240/628/12 232/630/12 +f 237/641/27 238/631/16 230/633/16 +f 235/643/20 236/634/13 228/636/13 +f 233/644/26 234/637/15 226/639/15 +f 256/645/15 249/661/20 241/646/20 +f 254/648/12 255/657/26 247/649/26 +f 252/651/16 253/1677/21 245/652/21 +f 250/654/13 251/660/27 243/655/27 +f 255/657/26 256/645/15 248/647/15 +f 253/658/21 254/648/12 246/650/12 +f 251/660/27 252/651/16 244/653/16 +f 249/661/20 250/654/13 242/656/13 +f 272/662/16 265/678/21 257/663/21 +f 270/665/13 271/674/27 263/666/27 +f 268/668/15 269/1678/20 261/669/20 +f 266/671/12 267/677/26 259/672/26 +f 271/674/27 272/662/16 264/664/16 +f 269/675/20 270/665/13 262/667/13 +f 267/677/26 268/668/15 260/670/15 +f 265/678/21 266/671/12 258/673/12 +f 288/679/20 281/695/13 273/680/13 +f 286/682/26 287/691/15 279/683/15 +f 284/685/21 285/1679/12 277/686/12 +f 282/688/27 283/694/16 275/689/16 +f 287/691/15 288/679/20 280/681/20 +f 285/692/12 286/682/26 278/684/26 +f 283/694/16 284/685/21 276/687/21 +f 281/695/13 282/688/27 274/690/27 +f 304/696/21 297/712/12 289/697/12 +f 302/699/27 303/708/16 295/700/16 +f 300/702/20 301/1680/13 293/703/13 +f 298/705/26 299/711/15 291/706/15 +f 303/708/16 304/696/21 296/698/21 +f 301/709/13 302/699/27 294/701/27 +f 299/711/15 300/702/20 292/704/20 +f 297/712/12 298/705/26 290/707/26 +f 320/713/26 313/729/15 305/714/15 +f 318/716/21 319/725/12 311/717/12 +f 316/719/27 317/1681/16 309/720/16 +f 314/722/20 315/728/13 307/723/13 +f 319/725/12 320/713/26 312/715/26 +f 317/726/16 318/716/21 310/718/21 +f 315/728/13 316/719/27 308/721/27 +f 313/729/15 314/722/20 306/724/20 +f 336/730/27 329/746/16 321/731/16 +f 334/733/20 335/742/13 327/734/13 +f 332/736/26 333/1682/15 325/737/15 +f 330/739/21 331/745/12 323/740/12 +f 335/742/13 336/730/27 328/732/27 +f 333/743/15 334/733/20 326/735/20 +f 331/745/12 332/736/26 324/738/26 +f 329/746/16 330/739/21 322/741/21 +f 337/747/27 353/751/27 354/748/28 +f 352/750/25 368/777/25 353/751/27 +f 345/752/26 361/1683/26 362/753/29 +f 338/749/28 354/748/28 355/755/16 +f 346/754/29 362/753/29 363/757/15 +f 339/756/16 355/755/16 356/759/30 +f 347/758/15 363/757/15 364/761/19 +f 340/760/30 356/759/30 357/763/21 +f 348/762/19 364/761/19 365/765/20 +f 341/764/21 357/763/21 358/767/22 +f 349/766/20 365/765/20 366/769/23 +f 342/768/22 358/767/22 359/771/12 +f 350/770/23 366/769/23 367/773/13 +f 343/772/12 359/771/12 360/775/24 +f 351/774/13 367/773/13 368/777/25 +f 344/776/24 360/775/24 361/778/26 +f 395/314/15 396/316/19 380/281/19 +f 388/299/30 389/301/21 373/262/21 +f 396/316/19 397/318/20 381/470/20 +f 389/301/21 390/303/22 374/467/22 +f 397/318/20 398/289/23 382/245/23 +f 390/303/22 391/305/12 375/267/12 +f 398/289/23 399/288/13 383/464/13 +f 391/305/12 392/307/24 376/271/24 +f 399/288/13 400/291/25 384/249/25 +f 392/307/24 393/309/26 377/468/26 +f 385/293/27 386/295/28 370/254/28 +f 400/291/25 385/293/27 369/465/27 +f 393/312/26 394/311/29 378/275/29 +f 386/295/28 387/297/16 371/257/16 +f 394/311/29 395/314/15 379/278/15 +f 387/297/16 388/299/30 372/466/30 +f 401/780/27 417/784/27 418/781/28 +f 416/783/25 432/810/25 417/784/27 +f 409/785/26 425/1684/26 426/786/29 +f 402/782/28 418/781/28 419/788/16 +f 410/787/29 426/786/29 427/790/15 +f 403/789/16 419/788/16 420/792/30 +f 411/791/15 427/790/15 428/794/19 +f 404/793/30 420/792/30 421/796/21 +f 412/795/19 428/794/19 429/798/20 +f 405/797/21 421/796/21 422/800/22 +f 413/799/20 429/798/20 430/802/23 +f 406/801/22 422/800/22 423/804/12 +f 414/803/23 430/802/23 431/806/13 +f 407/805/12 423/804/12 424/808/24 +f 415/807/13 431/806/13 432/810/25 +f 408/809/24 424/808/24 425/811/26 +f 459/813/15 460/815/19 444/353/19 +f 452/814/30 453/816/21 437/334/21 +f 460/815/19 461/817/20 445/493/20 +f 453/816/21 454/818/22 438/490/22 +f 461/817/20 462/819/23 446/358/23 +f 454/818/22 455/820/12 439/339/12 +f 462/819/23 463/821/13 447/487/13 +f 455/820/12 456/822/24 440/343/24 +f 463/821/13 464/824/25 448/321/25 +f 456/822/24 457/1234/26 441/491/26 +f 449/823/27 450/826/28 434/326/28 +f 464/824/25 449/823/27 433/488/27 +f 457/825/26 458/827/29 442/347/29 +f 450/826/28 451/828/16 435/329/16 +f 458/827/29 459/813/15 443/350/15 +f 451/828/16 452/814/30 436/489/30 +f 475/829/27 476/841/71 468/830/63 +f 473/832/9 474/843/73 466/833/65 +f 480/835/67 473/1685/9 465/836/66 +f 478/838/69 479/844/26 471/839/12 +f 476/841/71 477/845/10 469/842/72 +f 474/843/73 475/829/27 467/831/64 +f 479/844/26 480/835/67 472/837/68 +f 477/845/10 478/838/69 470/840/70 +f 467/831/64 468/854/63 484/846/74 +f 466/848/65 482/856/78 481/849/75 +f 465/851/66 481/1686/75 487/852/76 +f 468/854/63 469/857/72 485/855/77 +f 466/848/65 467/831/64 483/847/13 +f 469/857/72 470/866/70 486/858/79 +f 481/849/75 482/856/78 489/859/80 +f 487/852/76 481/1686/75 488/861/81 +f 485/855/77 492/864/84 491/863/83 +f 483/847/13 490/865/85 489/859/80 +f 486/858/79 493/868/86 492/864/84 +f 484/846/74 491/863/83 490/865/85 +f 494/869/82 502/873/88 495/870/87 +f 488/872/81 496/1687/73 502/873/88 +f 471/871/12 495/870/87 501/874/89 +f 492/876/84 500/881/92 499/877/90 +f 490/865/85 498/882/93 497/879/91 +f 493/875/86 501/874/89 500/881/92 +f 491/878/83 499/877/90 498/882/93 +f 489/880/80 497/879/91 496/883/73 +f 506/885/10 505/896/69 513/886/70 +f 504/888/26 503/897/67 511/889/68 +f 509/891/73 508/901/27 516/892/64 +f 507/894/71 506/885/10 514/887/72 +f 505/896/69 504/888/26 512/890/12 +f 503/897/67 510/1688/9 518/898/66 +f 510/899/9 509/891/73 517/893/65 +f 508/901/27 507/894/71 515/895/63 +f 527/902/94 525/911/21 520/903/12 +f 530/905/96 522/918/15 523/906/20 +f 532/904/95 520/903/12 521/908/26 +f 533/910/99 519/917/16 525/911/21 +f 529/907/97 523/906/20 524/912/13 +f 528/913/100 524/912/13 526/914/27 +f 496/916/73 526/1689/27 519/917/16 +f 531/909/98 521/908/26 522/918/15 +f 535/927/103 532/933/95 531/909/98 +f 537/929/104 530/934/96 529/930/97 +f 535/927/103 540/935/106 527/932/94 +f 536/928/69 531/909/98 530/934/96 +f 539/921/101 538/931/105 529/930/97 +f 534/924/102 533/923/99 527/932/94 +f 502/926/88 534/924/102 540/935/106 +f 499/937/90 537/929/104 538/931/105 +f 500/881/92 501/939/89 535/927/103 +f 501/939/89 495/936/87 540/935/106 +f 497/922/91 498/938/93 538/931/105 +f 500/881/92 536/928/69 537/929/104 +f 515/940/63 544/949/74 543/941/13 +f 517/942/65 542/950/78 541/943/75 +f 518/945/66 541/1690/75 547/946/76 +f 515/940/63 514/951/72 545/948/77 +f 516/892/64 543/941/13 542/950/78 +f 514/951/72 513/960/70 546/952/79 +f 541/943/75 542/950/78 549/953/80 +f 547/946/76 541/1690/75 548/955/81 +f 545/948/77 552/959/84 551/957/83 +f 542/950/78 543/941/13 550/958/85 +f 546/952/79 553/962/86 552/959/84 +f 544/949/74 551/957/83 550/958/85 +f 554/963/82 562/967/88 555/964/87 +f 548/966/81 556/1691/73 562/967/88 +f 512/965/12 555/964/87 561/968/89 +f 552/970/84 560/975/92 559/971/90 +f 550/958/85 558/976/93 557/973/91 +f 553/969/86 561/968/89 560/975/92 +f 551/972/83 559/971/90 558/976/93 +f 549/974/80 557/973/91 556/977/73 +f 571/979/94 569/988/21 564/980/12 +f 574/982/96 566/995/15 567/983/20 +f 576/981/95 564/980/12 565/985/26 +f 577/987/99 563/994/16 569/988/21 +f 573/984/97 567/983/20 568/989/13 +f 572/990/100 568/989/13 570/991/27 +f 556/993/73 570/1692/27 563/994/16 +f 575/986/98 565/985/26 566/995/15 +f 579/1004/103 576/1010/95 575/986/98 +f 581/1006/104 574/1011/96 573/1007/97 +f 579/1004/103 584/1012/106 571/1009/94 +f 581/1006/104 580/1005/69 575/986/98 +f 583/998/101 582/1008/105 573/1007/97 +f 578/1001/102 577/1000/99 571/1009/94 +f 562/1003/88 578/1001/102 584/1012/106 +f 559/1014/90 581/1006/104 582/1008/105 +f 560/975/92 561/1016/89 579/1004/103 +f 561/1016/89 555/1013/87 584/1012/106 +f 557/999/91 558/1015/93 582/1008/105 +f 560/975/92 580/1005/69 581/1006/104 +f 595/1017/27 596/1029/71 588/1018/63 +f 593/1020/9 594/1031/73 586/1021/65 +f 600/1023/67 593/1693/9 585/1024/66 +f 598/1026/69 599/1032/26 591/1027/12 +f 596/1029/71 597/1033/10 589/1030/72 +f 594/1031/73 595/1017/27 587/1019/64 +f 599/1032/26 600/1023/67 592/1025/68 +f 597/1033/10 598/1026/69 590/1028/70 +f 587/1019/64 588/1042/63 604/1034/74 +f 586/1036/65 602/1044/78 601/1037/75 +f 585/1039/66 601/1694/75 607/1040/76 +f 588/1042/63 589/1045/72 605/1043/77 +f 586/1036/65 587/1019/64 603/1035/13 +f 589/1045/72 590/1054/70 606/1046/79 +f 601/1037/75 602/1044/78 609/1047/80 +f 607/1040/76 601/1694/75 608/1049/81 +f 605/1043/77 612/1053/84 611/1051/83 +f 602/1044/78 603/1035/13 610/1052/85 +f 606/1046/79 613/1056/86 612/1053/84 +f 604/1034/74 611/1051/83 610/1052/85 +f 614/1057/82 622/1061/88 615/1058/87 +f 608/1060/81 616/1695/73 622/1061/88 +f 591/1059/12 615/1058/87 621/1062/89 +f 612/1064/84 620/1069/92 619/1065/90 +f 610/1052/85 618/1070/93 617/1067/91 +f 613/1063/86 621/1062/89 620/1069/92 +f 611/1066/83 619/1065/90 618/1070/93 +f 609/1068/80 617/1067/91 616/1071/73 +f 626/1073/10 625/1084/69 633/1074/70 +f 624/1076/26 623/1085/67 631/1077/68 +f 629/1079/73 628/1089/27 636/1080/64 +f 627/1082/71 626/1073/10 634/1075/72 +f 625/1084/69 624/1076/26 632/1078/12 +f 623/1085/67 630/1696/9 638/1086/66 +f 630/1087/9 629/1079/73 637/1081/65 +f 628/1089/27 627/1082/71 635/1083/63 +f 647/1090/94 645/1099/21 640/1091/12 +f 650/1093/96 642/1106/15 643/1094/20 +f 652/1092/95 640/1091/12 641/1096/26 +f 653/1098/99 639/1105/16 645/1099/21 +f 649/1095/97 643/1094/20 644/1100/13 +f 648/1101/100 644/1100/13 646/1102/27 +f 616/1104/73 646/1697/27 639/1105/16 +f 651/1097/98 641/1096/26 642/1106/15 +f 655/1115/103 652/1121/95 651/1097/98 +f 658/1117/105 657/1122/104 650/1118/96 +f 660/1120/106 647/1123/94 652/1121/95 +f 657/1122/104 656/1116/69 651/1097/98 +f 659/1109/101 658/1117/105 649/1119/97 +f 654/1112/102 653/1111/99 647/1123/94 +f 622/1114/88 654/1112/102 660/1120/106 +f 619/1125/90 657/1122/104 658/1117/105 +f 620/1069/92 621/1127/89 655/1115/103 +f 615/1124/87 660/1120/106 655/1115/103 +f 618/1126/93 658/1117/105 659/1109/101 +f 619/1125/90 620/1069/92 656/1116/69 +f 636/1080/64 635/1136/63 664/1128/74 +f 637/1130/65 662/1138/78 661/1131/75 +f 638/1133/66 661/1698/75 667/1134/76 +f 635/1136/63 634/1139/72 665/1137/77 +f 636/1080/64 663/1129/13 662/1138/78 +f 634/1139/72 633/1148/70 666/1140/79 +f 661/1131/75 662/1138/78 669/1141/80 +f 667/1134/76 661/1698/75 668/1143/81 +f 665/1137/77 672/1147/84 671/1145/83 +f 662/1138/78 663/1129/13 670/1146/85 +f 666/1140/79 673/1150/86 672/1147/84 +f 664/1128/74 671/1145/83 670/1146/85 +f 674/1151/82 682/1155/88 675/1152/87 +f 668/1154/81 676/1699/73 682/1155/88 +f 632/1153/12 675/1152/87 681/1156/89 +f 672/1158/84 680/1163/92 679/1159/90 +f 670/1146/85 678/1164/93 677/1161/91 +f 673/1157/86 681/1156/89 680/1163/92 +f 671/1160/83 679/1159/90 678/1164/93 +f 669/1162/80 677/1161/91 676/1165/73 +f 691/1167/94 689/1176/21 684/1168/12 +f 694/1170/96 686/1183/15 687/1171/20 +f 696/1169/95 684/1168/12 685/1173/26 +f 697/1175/99 683/1182/16 689/1176/21 +f 693/1172/97 687/1171/20 688/1177/13 +f 692/1178/100 688/1177/13 690/1179/27 +f 676/1181/73 690/1700/27 683/1182/16 +f 695/1174/98 685/1173/26 686/1183/15 +f 699/1192/103 696/1198/95 695/1174/98 +f 701/1194/104 694/1199/96 693/1195/97 +f 704/1197/106 691/1200/94 696/1198/95 +f 700/1193/69 695/1174/98 694/1199/96 +f 703/1186/101 702/1196/105 693/1195/97 +f 698/1189/102 697/1188/99 691/1200/94 +f 675/1201/87 682/1191/88 698/1189/102 +f 679/1202/90 701/1194/104 702/1196/105 +f 680/1163/92 681/1204/89 699/1192/103 +f 675/1201/87 704/1197/106 699/1192/103 +f 678/1203/93 702/1196/105 703/1186/101 +f 680/1163/92 700/1193/69 701/1194/104 +f 720/1205/13 714/1221/27 705/1206/27 +f 718/1208/15 719/1217/20 711/1209/20 +f 716/1211/12 717/1701/26 709/1212/26 +f 713/1214/16 715/1220/21 707/1215/21 +f 719/1217/20 720/1205/13 712/1207/13 +f 717/1218/26 718/1208/15 710/1210/15 +f 715/1220/21 716/1211/12 708/1213/12 +f 714/1221/27 713/1214/16 706/1216/16 +f 733/1222/107 734/1702/108 462/819/108 +f 734/1223/108 735/1703/109 463/821/109 +f 735/1224/109 736/1704/147 464/824/110 +f 464/824/110 736/1705/147 721/1225/111 +f 721/1226/111 722/1706/114 450/826/113 +f 722/1227/114 723/1707/115 451/828/115 +f 451/828/115 723/1708/115 724/1228/116 +f 452/814/116 724/1709/116 725/1229/117 +f 453/816/117 725/1710/117 726/1230/118 +f 454/818/119 726/1711/118 727/1231/120 +f 455/820/120 727/1712/120 728/1232/121 +f 728/1233/121 729/1713/122 457/1234/122 +f 457/825/122 729/1714/122 730/1235/123 +f 730/1236/123 731/1715/124 459/813/124 +f 731/1237/124 732/1716/126 460/815/125 +f 732/1238/126 733/1717/107 461/817/107 +f 784/1239/13 778/1255/27 769/1240/27 +f 782/1242/15 783/1251/20 775/1243/20 +f 780/1245/12 781/1718/26 773/1246/26 +f 777/1248/16 779/1254/21 771/1249/21 +f 783/1251/20 784/1239/13 776/1241/13 +f 781/1252/26 782/1242/15 774/1244/15 +f 779/1254/21 780/1245/12 772/1247/12 +f 778/1255/27 777/1248/16 770/1250/16 +f 800/1256/13 794/1272/27 785/1257/27 +f 798/1259/15 799/1268/20 791/1260/20 +f 796/1262/12 797/1719/26 789/1263/26 +f 793/1265/16 795/1271/21 787/1266/21 +f 799/1268/20 800/1256/13 792/1258/13 +f 797/1269/26 798/1259/15 790/1261/15 +f 795/1271/21 796/1262/12 788/1264/12 +f 794/1272/27 793/1265/16 786/1267/16 +f 816/1273/13 810/1289/27 801/1274/27 +f 814/1276/15 815/1285/20 807/1277/20 +f 812/1279/12 813/1720/26 805/1280/26 +f 809/1282/16 811/1288/21 803/1283/21 +f 815/1285/20 816/1273/13 808/1275/13 +f 813/1286/26 814/1276/15 806/1278/15 +f 811/1288/21 812/1279/12 804/1281/12 +f 810/1289/27 809/1282/16 802/1284/16 +f 820/1290/127 828/1303/71 827/1291/27 +f 818/1293/129 826/1304/73 825/1294/9 +f 817/1296/130 825/1721/9 832/1297/67 +f 823/1299/15 831/1305/26 830/1300/69 +f 821/1302/133 829/1306/10 828/1303/71 +f 819/1292/128 827/1291/27 826/1304/73 +f 824/1298/131 832/1297/67 831/1305/26 +f 822/1301/132 830/1300/69 829/1306/10 +f 819/1292/128 835/1324/16 836/1307/134 +f 833/1309/135 834/1317/138 818/1310/129 +f 839/1312/136 833/1322/135 817/1313/130 +f 820/1308/127 836/1307/134 837/1315/137 +f 834/1317/138 835/1324/16 819/1292/128 +f 821/1316/133 837/1315/137 838/1318/139 +f 833/1309/135 840/1722/141 841/1320/140 +f 839/1312/136 846/1329/146 840/1321/141 +f 843/1323/142 844/1325/143 837/1315/137 +f 841/1320/140 842/1326/144 835/1324/16 +f 844/1325/143 845/1328/145 838/1318/139 +f 842/1326/144 843/1323/142 836/1307/134 +f 847/1330/93 854/1333/91 846/1331/146 +f 854/1333/91 848/1723/73 840/1334/141 +f 853/1335/90 847/1330/93 823/1332/15 +f 851/1337/89 852/1342/92 844/1338/143 +f 849/1340/88 850/1343/87 842/1326/144 +f 852/1342/92 853/1335/90 845/1336/145 +f 850/1343/87 851/1337/89 843/1339/142 +f 848/1344/73 849/1340/88 841/1341/140 +f 865/1346/132 857/1357/69 858/1347/10 +f 863/1349/131 855/1359/67 856/1350/26 +f 868/1352/128 860/1362/27 861/1353/73 +f 866/1348/133 858/1347/10 859/1355/71 +f 864/1351/15 856/1350/26 857/1357/69 +f 870/1358/130 862/1724/9 855/1359/67 +f 869/1354/129 861/1353/73 862/1360/9 +f 867/1356/127 859/1355/71 860/1362/27 +f 872/1363/15 877/1371/20 879/1364/97 +f 875/1366/21 874/1379/12 882/1367/95 +f 873/1369/26 872/1363/15 884/1365/96 +f 877/1371/20 871/1377/13 885/1372/100 +f 876/1373/16 875/1366/21 881/1368/94 +f 878/1375/27 876/1373/16 880/1374/99 +f 871/1377/13 878/1725/27 848/1378/73 +f 874/1379/12 873/1369/26 883/1370/98 +f 883/1370/98 884/1393/96 887/1388/104 +f 890/1390/106 881/1395/94 882/1391/95 +f 884/1393/96 879/1396/97 892/1394/105 +f 889/1392/103 882/1391/95 883/1370/98 +f 891/1381/102 880/1380/99 881/1395/94 +f 879/1396/97 885/1384/100 886/1386/101 +f 892/1394/105 886/1386/101 854/1387/91 +f 850/1398/87 890/1390/106 889/1392/103 +f 888/1389/69 887/1388/104 853/1400/90 +f 887/1388/104 892/1394/105 847/1397/93 +f 849/1383/88 891/1381/102 890/1390/106 +f 889/1392/103 888/1389/69 852/1342/92 +f 895/1401/16 896/1418/134 867/1402/127 +f 870/1403/130 893/1413/135 894/1404/138 +f 899/1406/136 893/1416/135 870/1407/130 +f 867/1402/127 896/1418/134 897/1409/137 +f 894/1404/138 895/1401/16 868/1352/128 +f 866/1410/133 897/1409/137 898/1411/139 +f 893/1413/135 900/1726/141 901/1414/140 +f 899/1406/136 906/1423/146 900/1415/141 +f 903/1417/142 904/1420/143 897/1409/137 +f 894/1404/138 901/1414/140 902/1419/144 +f 904/1420/143 905/1422/145 898/1411/139 +f 902/1419/144 903/1417/142 896/1418/134 +f 907/1424/93 914/1427/91 906/1425/146 +f 914/1427/91 908/1727/73 900/1428/141 +f 913/1429/90 907/1424/93 864/1426/15 +f 911/1431/89 912/1436/92 904/1432/143 +f 909/1434/88 910/1437/87 902/1419/144 +f 912/1436/92 913/1429/90 905/1430/145 +f 910/1437/87 911/1431/89 903/1433/142 +f 908/1438/73 909/1434/88 901/1435/140 +f 916/1440/15 921/1448/20 923/1441/97 +f 919/1443/21 918/1456/12 926/1444/95 +f 917/1446/26 916/1440/15 928/1442/96 +f 921/1448/20 915/1454/13 929/1449/100 +f 920/1450/16 919/1443/21 925/1445/94 +f 922/1452/27 920/1450/16 924/1451/99 +f 915/1454/13 922/1728/27 908/1455/73 +f 918/1456/12 917/1446/26 927/1447/98 +f 927/1447/98 928/1729/96 931/1465/104 +f 925/1467/94 926/1730/95 933/1468/103 +f 931/1465/104 928/1729/96 923/1470/97 +f 933/1468/103 926/1730/95 927/1447/98 +f 935/1458/102 924/1457/99 925/1467/94 +f 923/1470/97 929/1461/100 930/1463/101 +f 936/1471/105 930/1463/101 914/1464/91 +f 910/1473/87 934/1469/106 933/1468/103 +f 912/1436/92 932/1466/69 931/1465/104 +f 931/1465/104 936/1471/105 907/1472/93 +f 909/1460/88 935/1458/102 934/1469/106 +f 933/1468/103 932/1466/69 912/1436/92 +f 940/1476/127 948/1489/71 947/1477/27 +f 938/1479/129 946/1490/73 945/1480/9 +f 937/1482/130 945/1731/9 952/1483/67 +f 943/1485/15 951/1491/26 950/1486/69 +f 941/1488/133 949/1492/10 948/1489/71 +f 939/1478/128 947/1477/27 946/1490/73 +f 944/1484/131 952/1483/67 951/1491/26 +f 942/1487/132 950/1486/69 949/1492/10 +f 939/1478/128 955/1503/16 956/1493/134 +f 953/1495/135 954/1507/138 938/1496/129 +f 959/1498/136 953/1509/135 937/1499/130 +f 940/1494/127 956/1493/134 957/1501/137 +f 938/1496/129 954/1507/138 955/1503/16 +f 941/1502/133 957/1501/137 958/1504/139 +f 953/1495/135 960/1732/141 961/1506/140 +f 959/1498/136 966/1515/146 960/1508/141 +f 963/1510/142 964/1512/143 957/1501/137 +f 954/1507/138 961/1506/140 962/1511/144 +f 964/1512/143 965/1514/145 958/1504/139 +f 962/1511/144 963/1510/142 956/1493/134 +f 967/1516/93 974/1519/91 966/1517/146 +f 974/1519/91 968/1733/73 960/1520/141 +f 973/1521/90 967/1516/93 943/1518/15 +f 971/1523/89 972/1528/92 964/1524/143 +f 969/1526/88 970/1529/87 962/1511/144 +f 972/1528/92 973/1521/90 965/1522/145 +f 970/1529/87 971/1523/89 963/1525/142 +f 968/1530/73 969/1526/88 961/1527/140 +f 985/1532/132 977/1543/69 978/1533/10 +f 983/1535/131 975/1545/67 976/1536/26 +f 988/1538/128 980/1548/27 981/1539/73 +f 986/1534/133 978/1533/10 979/1541/71 +f 984/1537/15 976/1536/26 977/1543/69 +f 990/1544/130 982/1734/9 975/1545/67 +f 989/1540/129 981/1539/73 982/1546/9 +f 987/1542/127 979/1541/71 980/1548/27 +f 992/1549/15 997/1557/20 999/1550/97 +f 995/1552/21 994/1565/12 1002/1553/95 +f 993/1555/26 992/1549/15 1004/1551/96 +f 997/1557/20 991/1563/13 1005/1558/100 +f 996/1559/16 995/1552/21 1001/1554/94 +f 998/1561/27 996/1559/16 1000/1560/99 +f 991/1563/13 998/1735/27 968/1564/73 +f 994/1565/12 993/1555/26 1003/1556/98 +f 1003/1556/98 1004/1579/96 1007/1574/104 +f 1010/1576/106 1001/1581/94 1002/1577/95 +f 1004/1579/96 999/1582/97 1012/1580/105 +f 1009/1578/103 1002/1577/95 1003/1556/98 +f 1011/1567/102 1000/1566/99 1001/1581/94 +f 999/1582/97 1005/1570/100 1006/1572/101 +f 1012/1580/105 1006/1572/101 974/1573/91 +f 1010/1576/106 1009/1578/103 971/1584/89 +f 972/1528/92 1008/1575/69 1007/1574/104 +f 1007/1574/104 1012/1580/105 967/1583/93 +f 969/1569/88 1011/1567/102 1010/1576/106 +f 971/1584/89 1009/1578/103 1008/1575/69 +f 988/1538/128 1015/1605/16 1016/1587/134 +f 1013/1589/135 1014/1597/138 989/1590/129 +f 1019/1592/136 1013/1602/135 990/1593/130 +f 987/1588/127 1016/1587/134 1017/1595/137 +f 1014/1597/138 1015/1605/16 988/1538/128 +f 986/1596/133 1017/1595/137 1018/1598/139 +f 1013/1589/135 1020/1736/141 1021/1600/140 +f 1019/1592/136 1026/1609/146 1020/1601/141 +f 1023/1603/142 1024/1606/143 1017/1595/137 +f 1014/1597/138 1021/1600/140 1022/1604/144 +f 1024/1606/143 1025/1608/145 1018/1598/139 +f 1022/1604/144 1023/1603/142 1016/1587/134 +f 1027/1610/93 1034/1613/91 1026/1611/146 +f 1034/1613/91 1028/1737/73 1020/1614/141 +f 1033/1615/90 1027/1610/93 984/1612/15 +f 1031/1617/89 1032/1622/92 1024/1618/143 +f 1029/1620/88 1030/1623/87 1022/1604/144 +f 1032/1622/92 1033/1615/90 1025/1616/145 +f 1030/1623/87 1031/1617/89 1023/1619/142 +f 1028/1624/73 1029/1620/88 1021/1621/140 +f 1036/1626/15 1041/1634/20 1043/1627/97 +f 1039/1629/21 1038/1642/12 1046/1630/95 +f 1037/1632/26 1036/1626/15 1048/1628/96 +f 1041/1634/20 1035/1640/13 1049/1635/100 +f 1040/1636/16 1039/1629/21 1045/1631/94 +f 1042/1638/27 1040/1636/16 1044/1637/99 +f 1035/1640/13 1042/1738/27 1028/1641/73 +f 1038/1642/12 1037/1632/26 1047/1633/98 +f 1047/1633/98 1048/1656/96 1051/1651/104 +f 1045/1653/94 1046/1658/95 1053/1654/103 +f 1048/1656/96 1043/1659/97 1056/1657/105 +f 1046/1658/95 1047/1633/98 1052/1652/69 +f 1055/1644/102 1044/1643/99 1045/1653/94 +f 1043/1659/97 1049/1647/100 1050/1649/101 +f 1027/1660/93 1056/1657/105 1050/1649/101 +f 1054/1655/106 1053/1654/103 1031/1661/89 +f 1032/1622/92 1052/1652/69 1051/1651/104 +f 1051/1651/104 1056/1657/105 1027/1660/93 +f 1029/1646/88 1055/1644/102 1054/1655/106 +f 1053/1654/103 1052/1652/69 1032/1622/92 +o SuspensionBackCenter +v 0.000000 4.000000 -7.750007 +v -0.191342 3.961939 -7.750007 +v -0.353554 3.853553 -7.750007 +v -0.461940 3.691341 -7.750007 +v -0.500000 3.500000 -7.750008 +v -0.461940 3.308658 -7.750008 +v -0.353554 3.146446 -7.750008 +v -0.191342 3.038060 -7.750008 +v 0.000000 3.000000 -7.750008 +v 0.191341 3.038060 -7.750008 +v 0.353553 3.146446 -7.750008 +v 0.461940 3.308658 -7.750008 +v 0.500000 3.500000 -7.750008 +v 0.461940 3.691341 -7.750007 +v 0.353553 3.853553 -7.750007 +v 0.191341 3.961939 -7.750007 +v 0.000000 4.000000 -9.500008 +v -0.191342 3.961939 -9.500008 +v -0.353554 3.853553 -9.500008 +v -0.461940 3.691341 -9.500008 +v -0.500000 3.500000 -9.500008 +v -0.461940 3.308658 -9.500008 +v -0.353554 3.146446 -9.500008 +v -0.191342 3.038060 -9.500008 +v 0.000000 3.000000 -9.500008 +v 0.191341 3.038060 -9.500008 +v 0.353553 3.146446 -9.500008 +v 0.461940 3.308658 -9.500008 +v 0.500000 3.500000 -9.500008 +v 0.461940 3.691341 -9.500008 +v 0.353553 3.853553 -9.500008 +v 0.191341 3.961939 -9.500008 +v 0.000000 3.875000 -7.750008 +v -0.265165 3.765165 -7.750008 +v -0.375000 3.500000 -7.750008 +v -0.265165 3.234835 -7.750008 +v 0.000000 3.125000 -7.750008 +v 0.265164 3.234835 -7.750008 +v 0.375000 3.500000 -7.750008 +v 0.265164 3.765165 -7.750008 +v 0.000000 3.875000 -9.500008 +v -0.265165 3.765165 -9.500008 +v -0.375000 3.500000 -9.500008 +v -0.265165 3.234835 -9.500008 +v 0.000000 3.125000 -9.500008 +v 0.265164 3.234835 -9.500008 +v 0.375000 3.500000 -9.500008 +v 0.265164 3.765165 -9.500008 +v 0.000000 4.000000 -7.750007 +v -0.191342 3.961939 -7.750007 +v -0.353554 3.853553 -7.750007 +v -0.461940 3.691341 -7.750007 +v -0.500000 3.500000 -7.750008 +v -0.461940 3.308658 -7.750008 +v -0.353554 3.146446 -7.750008 +v -0.191342 3.038060 -7.750008 +v 0.000000 3.000000 -7.750008 +v 0.191341 3.038060 -7.750008 +v 0.353553 3.146446 -7.750008 +v 0.461940 3.308658 -7.750008 +v 0.500000 3.500000 -7.750008 +v 0.461940 3.691341 -7.750007 +v 0.353553 3.853553 -7.750007 +v 0.191341 3.961939 -7.750007 +v 0.000000 4.000000 -9.500008 +v -0.191342 3.961939 -9.500008 +v -0.353554 3.853553 -9.500008 +v -0.461940 3.691341 -9.500008 +v -0.500000 3.500000 -9.500008 +v -0.461940 3.308658 -9.500008 +v -0.353554 3.146446 -9.500008 +v -0.191342 3.038060 -9.500008 +v 0.000000 3.000000 -9.500008 +v 0.191341 3.038060 -9.500008 +v 0.353553 3.146446 -9.500008 +v 0.461940 3.308658 -9.500008 +v 0.500000 3.500000 -9.500008 +v 0.461940 3.691341 -9.500008 +v 0.353553 3.853553 -9.500008 +v 0.191341 3.961939 -9.500008 +vt 0.851119 0.458140 +vt 0.827883 0.465116 +vt 0.827022 0.458140 +vt 0.845095 0.409302 +vt 0.821859 0.416279 +vt 0.820998 0.409302 +vt 0.844234 0.402326 +vt 0.820138 0.402326 +vt 0.838210 0.353488 +vt 0.814974 0.360465 +vt 0.814114 0.353488 +vt 0.845955 0.416279 +vt 0.822719 0.423256 +vt 0.839071 0.360465 +vt 0.815835 0.367442 +vt 0.846816 0.423256 +vt 0.823580 0.430233 +vt 0.839931 0.367442 +vt 0.816695 0.374419 +vt 0.847676 0.430233 +vt 0.824441 0.437209 +vt 0.840792 0.374419 +vt 0.817556 0.381395 +vt 0.848537 0.437209 +vt 0.825301 0.444186 +vt 0.842513 0.388372 +vt 0.818417 0.388372 +vt 0.849398 0.444186 +vt 0.826162 0.451163 +vt 0.819277 0.395349 +vt 0.850258 0.451163 +vt 0.843373 0.395349 +vt 0.838210 0.530233 +vt 0.814114 0.539535 +vt 0.814114 0.530233 +vt 0.838210 0.511628 +vt 0.814114 0.520930 +vt 0.814114 0.511628 +vt 0.838210 0.483721 +vt 0.814114 0.493023 +vt 0.814114 0.483721 +vt 0.838210 0.465116 +vt 0.814114 0.474419 +vt 0.814114 0.465116 +vt 0.838210 0.520930 +vt 0.838210 0.502326 +vt 0.814114 0.502326 +vt 0.838210 0.493023 +vt 0.838210 0.474419 +vt 0.827883 0.465116 +vt 0.851119 0.458140 +vt 0.827022 0.458140 +vt 0.821859 0.416279 +vt 0.845095 0.409302 +vt 0.820998 0.409302 +vt 0.844234 0.402326 +vt 0.820138 0.402326 +vt 0.814974 0.360465 +vt 0.838210 0.353488 +vt 0.814114 0.353488 +vt 0.822719 0.423256 +vt 0.845955 0.416279 +vt 0.815835 0.367442 +vt 0.839071 0.360465 +vt 0.823580 0.430233 +vt 0.846816 0.423256 +vt 0.816695 0.374419 +vt 0.839931 0.367442 +vt 0.824441 0.437209 +vt 0.847676 0.430233 +vt 0.817556 0.381395 +vt 0.840792 0.374419 +vt 0.825301 0.444186 +vt 0.848537 0.437209 +vt 0.842513 0.388372 +vt 0.841652 0.381395 +vt 0.826162 0.451163 +vt 0.849398 0.444186 +vt 0.819277 0.395349 +vt 0.818417 0.388372 +vt 0.850258 0.451163 +vt 0.843373 0.395349 +vt 0.851979 0.465116 +vt 0.841652 0.381395 +vt 0.838210 0.539535 +vt 0.851979 0.465116 +vn -0.3827 -0.9239 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.3827 -0.9239 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.9239 0.3827 0.0000 +vn 0.9239 -0.3827 0.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.9239 -0.3827 0.0000 +vn 0.9239 0.3827 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +s 1 +f 1080/1739/148 1065/1740/149 1064/1741/148 +f 1073/1742/150 1058/1743/151 1057/1744/150 +f 1088/1745/152 1057/1744/150 1072/1746/152 +f 1081/1747/149 1066/1748/153 1065/1749/149 +f 1074/1750/151 1059/1751/154 1058/1743/151 +f 1082/1752/153 1067/1753/155 1066/1748/153 +f 1075/1754/154 1060/1755/156 1059/1751/154 +f 1083/1756/155 1068/1757/157 1067/1753/155 +f 1076/1758/156 1061/1759/158 1060/1755/156 +f 1084/1760/157 1069/1761/159 1068/1757/157 +f 1077/1762/158 1062/1763/160 1061/1759/158 +f 1069/1761/159 1086/1764/161 1070/1765/161 +f 1078/1766/160 1063/1767/162 1062/1763/160 +f 1086/1764/161 1071/1768/163 1070/1765/161 +f 1079/1769/162 1064/1741/148 1063/1767/162 +f 1087/1770/163 1072/1746/152 1071/1768/163 +f 1100/1771/162 1093/1772/149 1092/1773/162 +f 1098/1774/154 1091/1775/158 1090/1776/154 +f 1103/1777/159 1096/1778/163 1095/1779/159 +f 1101/1780/149 1094/1781/155 1093/1782/149 +f 1099/1783/158 1092/1773/162 1091/1775/158 +f 1097/1784/150 1090/1776/154 1089/1785/150 +f 1104/1786/163 1089/1785/150 1096/1778/163 +f 1102/1787/155 1095/1779/159 1094/1781/155 +f 1113/1788/150 1128/1789/152 1112/1790/152 +f 1106/1791/153 1121/1792/149 1105/1793/149 +f 1105/1793/149 1136/1794/148 1120/1795/148 +f 1114/1796/151 1129/1797/150 1113/1798/150 +f 1107/1799/155 1122/1800/153 1106/1791/153 +f 1115/1801/154 1130/1802/151 1114/1796/151 +f 1108/1803/157 1123/1804/155 1107/1799/155 +f 1116/1805/156 1131/1806/154 1115/1801/154 +f 1109/1807/159 1124/1808/157 1108/1803/157 +f 1117/1809/158 1132/1810/156 1116/1805/156 +f 1110/1811/161 1125/1812/159 1109/1807/159 +f 1117/1809/158 1134/1813/160 1133/1814/158 +f 1111/1815/163 1126/1816/161 1110/1811/161 +f 1119/1817/162 1134/1813/160 1118/1818/160 +f 1112/1790/152 1127/1819/163 1111/1815/163 +f 1120/1795/148 1135/1820/162 1119/1817/162 +f 1080/1739/148 1081/1821/149 1065/1740/149 +f 1073/1742/150 1074/1750/151 1058/1743/151 +f 1088/1745/152 1073/1742/150 1057/1744/150 +f 1081/1747/149 1082/1752/153 1066/1748/153 +f 1074/1750/151 1075/1754/154 1059/1751/154 +f 1082/1752/153 1083/1756/155 1067/1753/155 +f 1075/1754/154 1076/1758/156 1060/1755/156 +f 1083/1756/155 1084/1760/157 1068/1757/157 +f 1076/1758/156 1077/1762/158 1061/1759/158 +f 1084/1760/157 1085/1822/159 1069/1761/159 +f 1077/1762/158 1078/1766/160 1062/1763/160 +f 1069/1761/159 1085/1822/159 1086/1764/161 +f 1078/1766/160 1079/1769/162 1063/1767/162 +f 1086/1764/161 1087/1770/163 1071/1768/163 +f 1079/1769/162 1080/1739/148 1064/1741/148 +f 1087/1770/163 1088/1745/152 1072/1746/152 +f 1100/1771/162 1101/1823/149 1093/1772/149 +f 1098/1774/154 1099/1783/158 1091/1775/158 +f 1103/1777/159 1104/1786/163 1096/1778/163 +f 1101/1780/149 1102/1787/155 1094/1781/155 +f 1099/1783/158 1100/1771/162 1092/1773/162 +f 1097/1784/150 1098/1774/154 1090/1776/154 +f 1104/1786/163 1097/1784/150 1089/1785/150 +f 1102/1787/155 1103/1777/159 1095/1779/159 +f 1113/1788/150 1129/1824/150 1128/1789/152 +f 1106/1791/153 1122/1800/153 1121/1792/149 +f 1105/1793/149 1121/1792/149 1136/1794/148 +f 1114/1796/151 1130/1802/151 1129/1797/150 +f 1107/1799/155 1123/1804/155 1122/1800/153 +f 1115/1801/154 1131/1806/154 1130/1802/151 +f 1108/1803/157 1124/1808/157 1123/1804/155 +f 1116/1805/156 1132/1810/156 1131/1806/154 +f 1109/1807/159 1125/1812/159 1124/1808/157 +f 1117/1809/158 1133/1814/158 1132/1810/156 +f 1110/1811/161 1126/1816/161 1125/1812/159 +f 1117/1809/158 1118/1818/160 1134/1813/160 +f 1111/1815/163 1127/1819/163 1126/1816/161 +f 1119/1817/162 1135/1820/162 1134/1813/160 +f 1112/1790/152 1128/1789/152 1127/1819/163 +f 1120/1795/148 1136/1794/148 1135/1820/162 +o SuspensionBackOuter +v 1.750000 5.499998 -7.750008 +v 1.573223 5.426775 -7.750008 +v 1.500000 5.249998 -7.750008 +v 1.573223 5.073221 -7.750008 +v 1.750000 4.999998 -7.750008 +v 1.926777 5.073221 -7.750008 +v 2.000000 5.249998 -7.750008 +v 1.926777 5.426775 -7.750008 +v 1.750000 5.499998 -9.000008 +v 1.573223 5.426775 -9.000008 +v 1.500000 5.249998 -9.000008 +v 1.573223 5.073221 -9.000008 +v 1.750000 4.999998 -9.000008 +v 1.926777 5.073221 -9.000008 +v 2.000000 5.249998 -9.000008 +v 1.926777 5.426775 -9.000008 +v 1.750000 5.624999 -7.750007 +v 1.484835 5.515163 -7.750007 +v 1.375000 5.249998 -7.750007 +v 1.484835 4.984833 -7.750007 +v 1.750000 4.874998 -7.750007 +v 2.015165 4.984833 -7.750007 +v 2.125000 5.249998 -7.750007 +v 2.015165 5.515163 -7.750007 +v 1.750000 5.624999 -9.000008 +v 1.484835 5.515163 -9.000008 +v 1.375000 5.249998 -9.000008 +v 1.484835 4.984833 -9.000008 +v 1.750000 4.874998 -9.000008 +v 2.015165 4.984833 -9.000008 +v 2.125000 5.249998 -9.000008 +v 2.015165 5.515163 -9.000008 +v -1.750000 5.499998 -7.750008 +v -1.926777 5.426775 -7.750008 +v -2.000000 5.249998 -7.750008 +v -1.926777 5.073221 -7.750008 +v -1.750000 4.999998 -7.750008 +v -1.573223 5.073221 -7.750008 +v -1.500000 5.249998 -7.750008 +v -1.573223 5.426775 -7.750008 +v -1.750000 5.499998 -9.000008 +v -1.926777 5.426775 -9.000008 +v -2.000000 5.249998 -9.000008 +v -1.926777 5.073221 -9.000008 +v -1.750000 4.999998 -9.000008 +v -1.573223 5.073221 -9.000008 +v -1.500000 5.249998 -9.000008 +v -1.573223 5.426775 -9.000008 +v -1.750000 5.624999 -7.750007 +v -2.015165 5.515163 -7.750007 +v -2.125000 5.249998 -7.750007 +v -2.015165 4.984833 -7.750007 +v -1.750000 4.874998 -7.750007 +v -1.484835 4.984833 -7.750007 +v -1.375000 5.249998 -7.750007 +v -1.484835 5.515163 -7.750007 +v -1.750000 5.624999 -9.000008 +v -2.015165 5.515163 -9.000008 +v -2.125000 5.249998 -9.000008 +v -2.015165 4.984833 -9.000008 +v -1.750000 4.874998 -9.000008 +v -1.484835 4.984833 -9.000008 +v -1.375000 5.249998 -9.000008 +v -1.484835 5.515163 -9.000008 +v -1.750000 1.999998 -7.750008 +v -1.926777 1.926775 -7.750008 +v -2.000000 1.749998 -7.750008 +v -1.926777 1.573221 -7.750008 +v -1.750000 1.499998 -7.750008 +v -1.573223 1.573221 -7.750008 +v -1.500000 1.749998 -7.750008 +v -1.573223 1.926775 -7.750008 +v -1.750000 1.999998 -9.000008 +v -1.926777 1.926775 -9.000008 +v -2.000000 1.749998 -9.000008 +v -1.926777 1.573221 -9.000008 +v -1.750000 1.499998 -9.000008 +v -1.573223 1.573221 -9.000008 +v -1.500000 1.749998 -9.000008 +v -1.573223 1.926775 -9.000008 +v -1.750000 2.124999 -7.750007 +v -2.015165 2.015163 -7.750007 +v -2.125000 1.749998 -7.750007 +v -2.015165 1.484833 -7.750007 +v -1.750000 1.374998 -7.750007 +v -1.484835 1.484833 -7.750007 +v -1.375000 1.749998 -7.750007 +v -1.484835 2.015163 -7.750007 +v -1.750000 2.124999 -9.000008 +v -2.015165 2.015163 -9.000008 +v -2.125000 1.749998 -9.000008 +v -2.015165 1.484833 -9.000008 +v -1.750000 1.374998 -9.000008 +v -1.484835 1.484833 -9.000008 +v -1.375000 1.749998 -9.000008 +v -1.484835 2.015163 -9.000008 +v 1.750000 1.999998 -7.750008 +v 1.573223 1.926775 -7.750008 +v 1.500000 1.749998 -7.750008 +v 1.573223 1.573221 -7.750008 +v 1.750000 1.499998 -7.750008 +v 1.926777 1.573221 -7.750008 +v 2.000000 1.749998 -7.750008 +v 1.926777 1.926775 -7.750008 +v 1.750000 1.999998 -9.000008 +v 1.573223 1.926775 -9.000008 +v 1.500000 1.749998 -9.000008 +v 1.573223 1.573221 -9.000008 +v 1.750000 1.499998 -9.000008 +v 1.926777 1.573221 -9.000008 +v 2.000000 1.749998 -9.000008 +v 1.926777 1.926775 -9.000008 +v 1.750000 2.124999 -7.750007 +v 1.484835 2.015163 -7.750007 +v 1.375000 1.749998 -7.750007 +v 1.484835 1.484833 -7.750007 +v 1.750000 1.374998 -7.750007 +v 2.015165 1.484833 -7.750007 +v 2.125000 1.749998 -7.750007 +v 2.015165 2.015163 -7.750007 +v 1.750000 2.124999 -9.000008 +v 1.484835 2.015163 -9.000008 +v 1.375000 1.749998 -9.000008 +v 1.484835 1.484833 -9.000008 +v 1.750000 1.374998 -9.000008 +v 2.015165 1.484833 -9.000008 +v 2.125000 1.749998 -9.000008 +v 2.015165 2.015163 -9.000008 +v 1.750000 5.624999 -7.750007 +v 1.484835 5.515163 -7.750007 +v 1.375000 5.249998 -7.750007 +v 1.484835 4.984833 -7.750007 +v 1.750000 4.874998 -7.750007 +v 2.015165 4.984833 -7.750007 +v 2.125000 5.249998 -7.750007 +v 2.015165 5.515163 -7.750007 +v 1.750000 5.624999 -9.000008 +v 1.484835 5.515163 -9.000008 +v 1.375000 5.249998 -9.000008 +v 1.484835 4.984833 -9.000008 +v 1.750000 4.874998 -9.000008 +v 2.015165 4.984833 -9.000008 +v 2.125000 5.249998 -9.000008 +v 2.015165 5.515163 -9.000008 +v -1.750000 5.624999 -7.750007 +v -2.015165 5.515163 -7.750007 +v -2.125000 5.249998 -7.750007 +v -2.015165 4.984833 -7.750007 +v -1.750000 4.874998 -7.750007 +v -1.484835 4.984833 -7.750007 +v -1.375000 5.249998 -7.750007 +v -1.484835 5.515163 -7.750007 +v -1.750000 5.624999 -9.000008 +v -2.015165 5.515163 -9.000008 +v -2.125000 5.249998 -9.000008 +v -2.015165 4.984833 -9.000008 +v -1.750000 4.874998 -9.000008 +v -1.484835 4.984833 -9.000008 +v -1.375000 5.249998 -9.000008 +v -1.484835 5.515163 -9.000008 +v -1.750000 2.124999 -7.750007 +v -2.015165 2.015163 -7.750007 +v -2.125000 1.749998 -7.750007 +v -2.015165 1.484833 -7.750007 +v -1.750000 1.374998 -7.750007 +v -1.484835 1.484833 -7.750007 +v -1.375000 1.749998 -7.750007 +v -1.484835 2.015163 -7.750007 +v -1.750000 2.124999 -9.000008 +v -2.015165 2.015163 -9.000008 +v -2.125000 1.749998 -9.000008 +v -2.015165 1.484833 -9.000008 +v -1.750000 1.374998 -9.000008 +v -1.484835 1.484833 -9.000008 +v -1.375000 1.749998 -9.000008 +v -1.484835 2.015163 -9.000008 +v 1.750000 2.124999 -7.750007 +v 1.484835 2.015163 -7.750007 +v 1.375000 1.749998 -7.750007 +v 1.484835 1.484833 -7.750007 +v 1.750000 1.374998 -7.750007 +v 2.015165 1.484833 -7.750007 +v 2.125000 1.749998 -7.750007 +v 2.015165 2.015163 -7.750007 +v 1.750000 2.124999 -9.000008 +v 1.484835 2.015163 -9.000008 +v 1.375000 1.749998 -9.000008 +v 1.484835 1.484833 -9.000008 +v 1.750000 1.374998 -9.000008 +v 2.015165 1.484833 -9.000008 +v 2.125000 1.749998 -9.000008 +v 2.015165 2.015163 -9.000008 +vt 0.793460 0.825581 +vt 0.776248 0.832558 +vt 0.776248 0.825581 +vt 0.793460 0.804651 +vt 0.776248 0.811628 +vt 0.776248 0.804651 +vt 0.793460 0.790698 +vt 0.776248 0.797674 +vt 0.776248 0.790698 +vt 0.793460 0.832558 +vt 0.776248 0.839535 +vt 0.793460 0.818605 +vt 0.776248 0.818605 +vt 0.793460 0.811628 +vt 0.793460 0.797674 +vt 0.793460 0.839535 +vt 0.776248 0.846512 +vt 0.793460 0.716279 +vt 0.777108 0.725581 +vt 0.776248 0.716279 +vt 0.798623 0.772093 +vt 0.782272 0.781395 +vt 0.781411 0.772093 +vt 0.796902 0.753488 +vt 0.780551 0.762791 +vt 0.779690 0.753488 +vt 0.796041 0.744186 +vt 0.778830 0.744186 +vt 0.794320 0.725581 +vt 0.777969 0.734884 +vt 0.799484 0.781395 +vt 0.783133 0.790698 +vt 0.797762 0.762791 +vt 0.795181 0.734884 +vt 0.793460 0.825581 +vt 0.776248 0.832558 +vt 0.776248 0.825581 +vt 0.793460 0.804651 +vt 0.776248 0.811628 +vt 0.776248 0.804651 +vt 0.793460 0.790698 +vt 0.776248 0.797674 +vt 0.776248 0.790698 +vt 0.793460 0.832558 +vt 0.776248 0.839535 +vt 0.793460 0.818605 +vt 0.776248 0.818605 +vt 0.793460 0.811628 +vt 0.793460 0.797674 +vt 0.793460 0.839535 +vt 0.776248 0.846512 +vt 0.793460 0.716279 +vt 0.777108 0.725581 +vt 0.776248 0.716279 +vt 0.798623 0.772093 +vt 0.782272 0.781395 +vt 0.781411 0.772093 +vt 0.796902 0.753488 +vt 0.780551 0.762791 +vt 0.779690 0.753488 +vt 0.796041 0.744186 +vt 0.778830 0.744186 +vt 0.794320 0.725581 +vt 0.777969 0.734884 +vt 0.799484 0.781395 +vt 0.783133 0.790698 +vt 0.797762 0.762791 +vt 0.795181 0.734884 +vt 0.793460 0.825581 +vt 0.776248 0.832558 +vt 0.776248 0.825581 +vt 0.793460 0.804651 +vt 0.776248 0.811628 +vt 0.776248 0.804651 +vt 0.793460 0.790698 +vt 0.776248 0.797674 +vt 0.776248 0.790698 +vt 0.793460 0.832558 +vt 0.776248 0.839535 +vt 0.793460 0.818605 +vt 0.776248 0.818605 +vt 0.793460 0.811628 +vt 0.793460 0.797674 +vt 0.793460 0.839535 +vt 0.776248 0.846512 +vt 0.793460 0.716279 +vt 0.777108 0.725581 +vt 0.776248 0.716279 +vt 0.798623 0.772093 +vt 0.782272 0.781395 +vt 0.781411 0.772093 +vt 0.796902 0.753488 +vt 0.780551 0.762791 +vt 0.779690 0.753488 +vt 0.796041 0.744186 +vt 0.778830 0.744186 +vt 0.794320 0.725581 +vt 0.777969 0.734884 +vt 0.799484 0.781395 +vt 0.783133 0.790698 +vt 0.797762 0.762791 +vt 0.795181 0.734884 +vt 0.793460 0.825581 +vt 0.776248 0.832558 +vt 0.776248 0.825581 +vt 0.793460 0.804651 +vt 0.776248 0.811628 +vt 0.776248 0.804651 +vt 0.793460 0.790698 +vt 0.776248 0.797674 +vt 0.776248 0.790698 +vt 0.793460 0.832558 +vt 0.776248 0.839535 +vt 0.793460 0.818605 +vt 0.776248 0.818605 +vt 0.793460 0.811628 +vt 0.793460 0.797674 +vt 0.793460 0.839535 +vt 0.776248 0.846512 +vt 0.793460 0.716279 +vt 0.777108 0.725581 +vt 0.776248 0.716279 +vt 0.798623 0.772093 +vt 0.782272 0.781395 +vt 0.781411 0.772093 +vt 0.796902 0.753488 +vt 0.780551 0.762791 +vt 0.779690 0.753488 +vt 0.796041 0.744186 +vt 0.778830 0.744186 +vt 0.794320 0.725581 +vt 0.777969 0.734884 +vt 0.799484 0.781395 +vt 0.783133 0.790698 +vt 0.797762 0.762791 +vt 0.795181 0.734884 +vt 0.777108 0.725581 +vt 0.793460 0.716279 +vt 0.776248 0.716279 +vt 0.782272 0.781395 +vt 0.798623 0.772093 +vt 0.781411 0.772093 +vt 0.780551 0.762791 +vt 0.796902 0.753488 +vt 0.779690 0.753488 +vt 0.796041 0.744186 +vt 0.778830 0.744186 +vt 0.777969 0.734884 +vt 0.794320 0.725581 +vt 0.783133 0.790698 +vt 0.799484 0.781395 +vt 0.797762 0.762791 +vt 0.795181 0.734884 +vt 0.777108 0.725581 +vt 0.793460 0.716279 +vt 0.776248 0.716279 +vt 0.782272 0.781395 +vt 0.798623 0.772093 +vt 0.781411 0.772093 +vt 0.780551 0.762791 +vt 0.796902 0.753488 +vt 0.779690 0.753488 +vt 0.796041 0.744186 +vt 0.778830 0.744186 +vt 0.777969 0.734884 +vt 0.794320 0.725581 +vt 0.783133 0.790698 +vt 0.799484 0.781395 +vt 0.797762 0.762791 +vt 0.795181 0.734884 +vt 0.777108 0.725581 +vt 0.793460 0.716279 +vt 0.776248 0.716279 +vt 0.782272 0.781395 +vt 0.798623 0.772093 +vt 0.781411 0.772093 +vt 0.780551 0.762791 +vt 0.796902 0.753488 +vt 0.779690 0.753488 +vt 0.796041 0.744186 +vt 0.778830 0.744186 +vt 0.777969 0.734884 +vt 0.794320 0.725581 +vt 0.783133 0.790698 +vt 0.799484 0.781395 +vt 0.797762 0.762791 +vt 0.795181 0.734884 +vt 0.777108 0.725581 +vt 0.793460 0.716279 +vt 0.776248 0.716279 +vt 0.782272 0.781395 +vt 0.798623 0.772093 +vt 0.781411 0.772093 +vt 0.780551 0.762791 +vt 0.796902 0.753488 +vt 0.779690 0.753488 +vt 0.796041 0.744186 +vt 0.778830 0.744186 +vt 0.777969 0.734884 +vt 0.794320 0.725581 +vt 0.783133 0.790698 +vt 0.799484 0.781395 +vt 0.797762 0.762791 +vt 0.795181 0.734884 +vt 0.793460 0.846512 +vt 0.800344 0.790698 +vt 0.793460 0.846512 +vt 0.800344 0.790698 +vt 0.793460 0.846512 +vt 0.800344 0.790698 +vt 0.793460 0.846512 +vt 0.800344 0.790698 +vt 0.800344 0.790698 +vt 0.800344 0.790698 +vt 0.800344 0.790698 +vt 0.800344 0.790698 +vn -0.7071 0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +s 1 +f 1146/1825/164 1139/1826/165 1138/1827/164 +f 1151/1828/166 1144/1829/167 1143/1830/166 +f 1149/1831/168 1142/1832/169 1141/1833/168 +f 1147/1834/165 1140/1835/170 1139/1826/165 +f 1145/1836/171 1138/1827/164 1137/1837/171 +f 1152/1838/167 1137/1837/171 1144/1829/167 +f 1150/1839/169 1143/1830/166 1142/1832/169 +f 1148/1840/170 1141/1841/168 1140/1835/170 +f 1165/1842/168 1158/1843/169 1157/1844/168 +f 1163/1845/165 1156/1846/170 1155/1847/165 +f 1161/1848/171 1154/1849/164 1153/1850/171 +f 1168/1851/167 1153/1850/171 1160/1852/167 +f 1166/1853/169 1159/1854/166 1158/1843/169 +f 1164/1855/170 1157/1856/168 1156/1846/170 +f 1162/1857/164 1155/1847/165 1154/1849/164 +f 1167/1858/166 1160/1852/167 1159/1854/166 +f 1178/1859/164 1171/1860/165 1170/1861/164 +f 1183/1862/166 1176/1863/167 1175/1864/166 +f 1181/1865/168 1174/1866/169 1173/1867/168 +f 1179/1868/165 1172/1869/170 1171/1860/165 +f 1177/1870/171 1170/1861/164 1169/1871/171 +f 1184/1872/167 1169/1871/171 1176/1863/167 +f 1182/1873/169 1175/1864/166 1174/1866/169 +f 1180/1874/170 1173/1875/168 1172/1869/170 +f 1197/1876/168 1190/1877/169 1189/1878/168 +f 1195/1879/165 1188/1880/170 1187/1881/165 +f 1193/1882/171 1186/1883/164 1185/1884/171 +f 1200/1885/167 1185/1884/171 1192/1886/167 +f 1198/1887/169 1191/1888/166 1190/1877/169 +f 1196/1889/170 1189/1890/168 1188/1880/170 +f 1194/1891/164 1187/1881/165 1186/1883/164 +f 1199/1892/166 1192/1886/167 1191/1888/166 +f 1210/1893/164 1203/1894/165 1202/1895/164 +f 1215/1896/166 1208/1897/167 1207/1898/166 +f 1213/1899/168 1206/1900/169 1205/1901/168 +f 1211/1902/165 1204/1903/170 1203/1894/165 +f 1209/1904/171 1202/1895/164 1201/1905/171 +f 1216/1906/167 1201/1905/171 1208/1897/167 +f 1214/1907/169 1207/1898/166 1206/1900/169 +f 1212/1908/170 1205/1909/168 1204/1903/170 +f 1229/1910/168 1222/1911/169 1221/1912/168 +f 1227/1913/165 1220/1914/170 1219/1915/165 +f 1225/1916/171 1218/1917/164 1217/1918/171 +f 1232/1919/167 1217/1918/171 1224/1920/167 +f 1230/1921/169 1223/1922/166 1222/1911/169 +f 1228/1923/170 1221/1924/168 1220/1914/170 +f 1226/1925/164 1219/1915/165 1218/1917/164 +f 1231/1926/166 1224/1920/167 1223/1922/166 +f 1242/1927/164 1235/1928/165 1234/1929/164 +f 1247/1930/166 1240/1931/167 1239/1932/166 +f 1245/1933/168 1238/1934/169 1237/1935/168 +f 1243/1936/165 1236/1937/170 1235/1928/165 +f 1241/1938/171 1234/1929/164 1233/1939/171 +f 1248/1940/167 1233/1939/171 1240/1931/167 +f 1246/1941/169 1239/1932/166 1238/1934/169 +f 1244/1942/170 1237/1943/168 1236/1937/170 +f 1261/1944/168 1254/1945/169 1253/1946/168 +f 1259/1947/165 1252/1948/170 1251/1949/165 +f 1257/1950/171 1250/1951/164 1249/1952/171 +f 1264/1953/167 1249/1952/171 1256/1954/167 +f 1262/1955/169 1255/1956/166 1254/1945/169 +f 1260/1957/170 1253/1958/168 1252/1948/170 +f 1258/1959/164 1251/1949/165 1250/1951/164 +f 1263/1960/166 1256/1954/167 1255/1956/166 +f 1270/1961/164 1277/1962/171 1269/1963/171 +f 1268/1964/167 1275/1965/166 1267/1966/166 +f 1266/1967/169 1273/1968/168 1265/1969/168 +f 1265/1969/168 1280/1970/170 1272/1971/170 +f 1271/1972/165 1278/1973/164 1270/1961/164 +f 1269/1974/171 1276/1975/167 1268/1964/167 +f 1267/1966/166 1274/1976/169 1266/1967/169 +f 1272/1971/170 1279/1977/165 1271/1972/165 +f 1286/1978/164 1293/1979/171 1285/1980/171 +f 1284/1981/167 1291/1982/166 1283/1983/166 +f 1282/1984/169 1289/1985/168 1281/1986/168 +f 1281/1986/168 1296/1987/170 1288/1988/170 +f 1287/1989/165 1294/1990/164 1286/1978/164 +f 1285/1991/171 1292/1992/167 1284/1981/167 +f 1283/1983/166 1290/1993/169 1282/1984/169 +f 1288/1988/170 1295/1994/165 1287/1989/165 +f 1302/1995/164 1309/1996/171 1301/1997/171 +f 1300/1998/167 1307/1999/166 1299/2000/166 +f 1298/2001/169 1305/2002/168 1297/2003/168 +f 1297/2003/168 1312/2004/170 1304/2005/170 +f 1303/2006/165 1310/2007/164 1302/1995/164 +f 1301/2008/171 1308/2009/167 1300/1998/167 +f 1299/2000/166 1306/2010/169 1298/2001/169 +f 1304/2005/170 1311/2011/165 1303/2006/165 +f 1318/2012/164 1325/2013/171 1317/2014/171 +f 1316/2015/167 1323/2016/166 1315/2017/166 +f 1314/2018/169 1321/2019/168 1313/2020/168 +f 1313/2020/168 1328/2021/170 1320/2022/170 +f 1319/2023/165 1326/2024/164 1318/2012/164 +f 1317/2025/171 1324/2026/167 1316/2015/167 +f 1315/2017/166 1322/2027/169 1314/2018/169 +f 1320/2022/170 1327/2028/165 1319/2023/165 +f 1146/1825/164 1147/1834/165 1139/1826/165 +f 1151/1828/166 1152/1838/167 1144/1829/167 +f 1149/1831/168 1150/1839/169 1142/1832/169 +f 1147/1834/165 1148/1840/170 1140/1835/170 +f 1145/1836/171 1146/1825/164 1138/1827/164 +f 1152/1838/167 1145/1836/171 1137/1837/171 +f 1150/1839/169 1151/1828/166 1143/1830/166 +f 1148/1840/170 1149/2029/168 1141/1841/168 +f 1165/1842/168 1166/1853/169 1158/1843/169 +f 1163/1845/165 1164/1855/170 1156/1846/170 +f 1161/1848/171 1162/1857/164 1154/1849/164 +f 1168/1851/167 1161/1848/171 1153/1850/171 +f 1166/1853/169 1167/1858/166 1159/1854/166 +f 1164/1855/170 1165/2030/168 1157/1856/168 +f 1162/1857/164 1163/1845/165 1155/1847/165 +f 1167/1858/166 1168/1851/167 1160/1852/167 +f 1178/1859/164 1179/1868/165 1171/1860/165 +f 1183/1862/166 1184/1872/167 1176/1863/167 +f 1181/1865/168 1182/1873/169 1174/1866/169 +f 1179/1868/165 1180/1874/170 1172/1869/170 +f 1177/1870/171 1178/1859/164 1170/1861/164 +f 1184/1872/167 1177/1870/171 1169/1871/171 +f 1182/1873/169 1183/1862/166 1175/1864/166 +f 1180/1874/170 1181/2031/168 1173/1875/168 +f 1197/1876/168 1198/1887/169 1190/1877/169 +f 1195/1879/165 1196/1889/170 1188/1880/170 +f 1193/1882/171 1194/1891/164 1186/1883/164 +f 1200/1885/167 1193/1882/171 1185/1884/171 +f 1198/1887/169 1199/1892/166 1191/1888/166 +f 1196/1889/170 1197/2032/168 1189/1890/168 +f 1194/1891/164 1195/1879/165 1187/1881/165 +f 1199/1892/166 1200/1885/167 1192/1886/167 +f 1210/1893/164 1211/1902/165 1203/1894/165 +f 1215/1896/166 1216/1906/167 1208/1897/167 +f 1213/1899/168 1214/1907/169 1206/1900/169 +f 1211/1902/165 1212/1908/170 1204/1903/170 +f 1209/1904/171 1210/1893/164 1202/1895/164 +f 1216/1906/167 1209/1904/171 1201/1905/171 +f 1214/1907/169 1215/1896/166 1207/1898/166 +f 1212/1908/170 1213/2033/168 1205/1909/168 +f 1229/1910/168 1230/1921/169 1222/1911/169 +f 1227/1913/165 1228/1923/170 1220/1914/170 +f 1225/1916/171 1226/1925/164 1218/1917/164 +f 1232/1919/167 1225/1916/171 1217/1918/171 +f 1230/1921/169 1231/1926/166 1223/1922/166 +f 1228/1923/170 1229/2034/168 1221/1924/168 +f 1226/1925/164 1227/1913/165 1219/1915/165 +f 1231/1926/166 1232/1919/167 1224/1920/167 +f 1242/1927/164 1243/1936/165 1235/1928/165 +f 1247/1930/166 1248/1940/167 1240/1931/167 +f 1245/1933/168 1246/1941/169 1238/1934/169 +f 1243/1936/165 1244/1942/170 1236/1937/170 +f 1241/1938/171 1242/1927/164 1234/1929/164 +f 1248/1940/167 1241/1938/171 1233/1939/171 +f 1246/1941/169 1247/1930/166 1239/1932/166 +f 1244/1942/170 1245/2035/168 1237/1943/168 +f 1261/1944/168 1262/1955/169 1254/1945/169 +f 1259/1947/165 1260/1957/170 1252/1948/170 +f 1257/1950/171 1258/1959/164 1250/1951/164 +f 1264/1953/167 1257/1950/171 1249/1952/171 +f 1262/1955/169 1263/1960/166 1255/1956/166 +f 1260/1957/170 1261/2036/168 1253/1958/168 +f 1258/1959/164 1259/1947/165 1251/1949/165 +f 1263/1960/166 1264/1953/167 1256/1954/167 +f 1270/1961/164 1278/1973/164 1277/1962/171 +f 1268/1964/167 1276/1975/167 1275/1965/166 +f 1266/1967/169 1274/1976/169 1273/1968/168 +f 1265/1969/168 1273/1968/168 1280/1970/170 +f 1271/1972/165 1279/1977/165 1278/1973/164 +f 1269/1974/171 1277/2037/171 1276/1975/167 +f 1267/1966/166 1275/1965/166 1274/1976/169 +f 1272/1971/170 1280/1970/170 1279/1977/165 +f 1286/1978/164 1294/1990/164 1293/1979/171 +f 1284/1981/167 1292/1992/167 1291/1982/166 +f 1282/1984/169 1290/1993/169 1289/1985/168 +f 1281/1986/168 1289/1985/168 1296/1987/170 +f 1287/1989/165 1295/1994/165 1294/1990/164 +f 1285/1991/171 1293/2038/171 1292/1992/167 +f 1283/1983/166 1291/1982/166 1290/1993/169 +f 1288/1988/170 1296/1987/170 1295/1994/165 +f 1302/1995/164 1310/2007/164 1309/1996/171 +f 1300/1998/167 1308/2009/167 1307/1999/166 +f 1298/2001/169 1306/2010/169 1305/2002/168 +f 1297/2003/168 1305/2002/168 1312/2004/170 +f 1303/2006/165 1311/2011/165 1310/2007/164 +f 1301/2008/171 1309/2039/171 1308/2009/167 +f 1299/2000/166 1307/1999/166 1306/2010/169 +f 1304/2005/170 1312/2004/170 1311/2011/165 +f 1318/2012/164 1326/2024/164 1325/2013/171 +f 1316/2015/167 1324/2026/167 1323/2016/166 +f 1314/2018/169 1322/2027/169 1321/2019/168 +f 1313/2020/168 1321/2019/168 1328/2021/170 +f 1319/2023/165 1327/2028/165 1326/2024/164 +f 1317/2025/171 1325/2040/171 1324/2026/167 +f 1315/2017/166 1323/2016/166 1322/2027/169 +f 1320/2022/170 1328/2021/170 1327/2028/165 +o SuspensionLeft +v -1.937497 6.687504 6.437500 +v -1.937497 6.820086 6.382583 +v -1.937497 6.875004 6.250000 +v -1.937497 6.820086 6.117417 +v -1.937497 6.687504 6.062500 +v -1.937497 6.554921 6.117417 +v -1.937497 6.500004 6.250000 +v -1.937497 6.554921 6.382583 +v -1.937497 6.687504 6.375000 +v -1.937497 6.775892 6.338388 +v -1.937497 6.812504 6.250000 +v -1.937497 6.775892 6.161612 +v -1.937497 6.687504 6.125000 +v -1.937497 6.599115 6.161612 +v -1.937497 6.562504 6.250000 +v -1.937497 6.599115 6.338388 +v -2.624997 6.687504 6.437500 +v -2.624997 6.820086 6.382583 +v -2.624997 6.875004 6.250000 +v -2.624997 6.820086 6.117417 +v -2.624997 6.687504 6.062500 +v -2.624997 6.554921 6.117417 +v -2.624997 6.500004 6.250000 +v -2.624997 6.554921 6.382583 +v -2.624997 6.687504 6.375000 +v -2.624997 6.775892 6.338388 +v -2.624997 6.812504 6.250000 +v -2.624997 6.775892 6.161612 +v -2.624997 6.687504 6.125000 +v -2.624997 6.599115 6.161612 +v -2.624997 6.562504 6.250000 +v -2.624997 6.599115 6.338388 +v -1.937497 6.687504 7.875000 +v -1.937497 6.775892 7.838388 +v -1.937497 6.812504 7.750000 +v -1.937497 6.775892 7.661612 +v -1.937497 6.687504 7.625000 +v -1.937497 6.599115 7.661612 +v -1.937497 6.562504 7.750000 +v -1.937497 6.599115 7.838388 +v -2.624997 6.687504 7.875000 +v -2.624997 6.775892 7.838388 +v -2.624997 6.812504 7.750000 +v -2.624997 6.775892 7.661612 +v -2.624997 6.687504 7.625000 +v -2.624997 6.599115 7.661612 +v -2.624997 6.562504 7.750000 +v -2.624997 6.599115 7.838388 +v -1.937497 6.687504 7.937500 +v -1.937497 6.820086 7.882583 +v -1.937497 6.875004 7.750000 +v -1.937497 6.820086 7.617417 +v -1.937497 6.687504 7.562500 +v -1.937497 6.554921 7.617417 +v -1.937497 6.500004 7.750000 +v -1.937497 6.554921 7.882583 +v -2.624997 6.687504 7.937500 +v -2.624997 6.820086 7.882583 +v -2.624997 6.875004 7.750000 +v -2.624997 6.820086 7.617417 +v -2.624997 6.687504 7.562500 +v -2.624997 6.554921 7.617417 +v -2.624997 6.500004 7.750000 +v -2.624997 6.554921 7.882583 +v -1.937497 0.312492 7.562500 +v -1.937497 0.179910 7.617417 +v -1.937497 0.124992 7.750000 +v -1.937497 0.179910 7.882583 +v -1.937497 0.312492 7.937500 +v -1.937497 0.445075 7.882583 +v -1.937497 0.499992 7.750000 +v -1.937497 0.445075 7.617417 +v -1.937497 0.312492 7.625000 +v -1.937497 0.224104 7.661612 +v -1.937497 0.187492 7.750000 +v -1.937497 0.224104 7.838388 +v -1.937497 0.312492 7.875000 +v -1.937497 0.400881 7.838388 +v -1.937497 0.437492 7.750000 +v -1.937497 0.400881 7.661612 +v -2.624997 0.312492 7.562500 +v -2.624997 0.179910 7.617417 +v -2.624997 0.124992 7.750000 +v -2.624997 0.179910 7.882583 +v -2.624997 0.312492 7.937500 +v -2.624997 0.445075 7.882583 +v -2.624997 0.499992 7.750000 +v -2.624997 0.445075 7.617417 +v -2.624997 0.312492 7.625000 +v -2.624997 0.224104 7.661612 +v -2.624997 0.187492 7.750000 +v -2.624997 0.224104 7.838388 +v -2.624997 0.312492 7.875000 +v -2.624997 0.400881 7.838388 +v -2.624997 0.437492 7.750000 +v -2.624997 0.400881 7.661612 +v -1.937497 0.312492 6.125000 +v -1.937497 0.224104 6.161612 +v -1.937497 0.187492 6.250000 +v -1.937497 0.224104 6.338388 +v -1.937497 0.312492 6.375000 +v -1.937497 0.400881 6.338388 +v -1.937497 0.437492 6.250000 +v -1.937497 0.400881 6.161612 +v -2.624997 0.312492 6.125000 +v -2.624997 0.224104 6.161612 +v -2.624997 0.187492 6.250000 +v -2.624997 0.224104 6.338388 +v -2.624997 0.312492 6.375000 +v -2.624997 0.400881 6.338388 +v -2.624997 0.437492 6.250000 +v -2.624997 0.400881 6.161612 +v -1.937497 0.312492 6.062500 +v -1.937497 0.179910 6.117417 +v -1.937497 0.124992 6.250000 +v -1.937497 0.179910 6.382583 +v -1.937497 0.312492 6.437500 +v -1.937497 0.445075 6.382583 +v -1.937497 0.499992 6.250000 +v -1.937497 0.445075 6.117417 +v -2.624997 0.312492 6.062500 +v -2.624997 0.179910 6.117417 +v -2.624997 0.124992 6.250000 +v -2.624997 0.179910 6.382583 +v -2.624997 0.312492 6.437500 +v -2.624997 0.445075 6.382583 +v -2.624997 0.499992 6.250000 +v -2.624997 0.445075 6.117417 +v -1.937497 6.687504 6.437500 +v -1.937497 6.820086 6.382583 +v -1.937497 6.875004 6.250000 +v -1.937497 6.820086 6.117417 +v -1.937497 6.687504 6.062500 +v -1.937497 6.554921 6.117417 +v -1.937497 6.500004 6.250000 +v -1.937497 6.554921 6.382583 +v -2.624997 6.687504 6.437500 +v -2.624997 6.820086 6.382583 +v -2.624997 6.875004 6.250000 +v -2.624997 6.820086 6.117417 +v -2.624997 6.687504 6.062500 +v -2.624997 6.554921 6.117417 +v -2.624997 6.500004 6.250000 +v -2.624997 6.554921 6.382583 +v -1.937497 6.687504 7.937500 +v -1.937497 6.820086 7.882583 +v -1.937497 6.875004 7.750000 +v -1.937497 6.820086 7.617417 +v -1.937497 6.687504 7.562500 +v -1.937497 6.554921 7.617417 +v -1.937497 6.500004 7.750000 +v -1.937497 6.554921 7.882583 +v -2.624997 6.687504 7.937500 +v -2.624997 6.820086 7.882583 +v -2.624997 6.875004 7.750000 +v -2.624997 6.820086 7.617417 +v -2.624997 6.687504 7.562500 +v -2.624997 6.554921 7.617417 +v -2.624997 6.500004 7.750000 +v -2.624997 6.554921 7.882583 +v -1.937497 0.312492 7.562500 +v -1.937497 0.179910 7.617417 +v -1.937497 0.124992 7.750000 +v -1.937497 0.179910 7.882583 +v -1.937497 0.312492 7.937500 +v -1.937497 0.445075 7.882583 +v -1.937497 0.499992 7.750000 +v -1.937497 0.445075 7.617417 +v -2.624997 0.312492 7.562500 +v -2.624997 0.179910 7.617417 +v -2.624997 0.124992 7.750000 +v -2.624997 0.179910 7.882583 +v -2.624997 0.312492 7.937500 +v -2.624997 0.445075 7.882583 +v -2.624997 0.499992 7.750000 +v -2.624997 0.445075 7.617417 +v -1.937497 0.312492 6.062500 +v -1.937497 0.179910 6.117417 +v -1.937497 0.124992 6.250000 +v -1.937497 0.179910 6.382583 +v -1.937497 0.312492 6.437500 +v -1.937497 0.445075 6.382583 +v -1.937497 0.499992 6.250000 +v -1.937497 0.445075 6.117417 +v -2.624997 0.312492 6.062500 +v -2.624997 0.179910 6.117417 +v -2.624997 0.124992 6.250000 +v -2.624997 0.179910 6.382583 +v -2.624997 0.312492 6.437500 +v -2.624997 0.445075 6.382583 +v -2.624997 0.499992 6.250000 +v -2.624997 0.445075 6.117417 +vt 0.837349 0.637209 +vt 0.846816 0.641860 +vt 0.837349 0.641860 +vt 0.820998 0.632558 +vt 0.831325 0.637209 +vt 0.821859 0.637209 +vt 0.837349 0.632558 +vt 0.846816 0.637209 +vt 0.827022 0.665116 +vt 0.837349 0.669767 +vt 0.827883 0.669767 +vt 0.837349 0.665116 +vt 0.846816 0.669767 +vt 0.837349 0.669767 +vt 0.826162 0.660465 +vt 0.836489 0.665116 +vt 0.825301 0.655814 +vt 0.835628 0.660465 +vt 0.837349 0.660465 +vt 0.846816 0.665116 +vt 0.837349 0.655814 +vt 0.846816 0.660465 +vt 0.824441 0.651163 +vt 0.834768 0.655814 +vt 0.837349 0.651163 +vt 0.846816 0.655814 +vt 0.823580 0.646512 +vt 0.833907 0.651163 +vt 0.837349 0.646512 +vt 0.846816 0.651163 +vt 0.822719 0.641860 +vt 0.833046 0.646512 +vt 0.846816 0.646512 +vt 0.832186 0.641860 +vt 0.837349 0.637209 +vt 0.846816 0.641860 +vt 0.837349 0.641860 +vt 0.837349 0.632558 +vt 0.846816 0.637209 +vt 0.837349 0.665116 +vt 0.846816 0.669767 +vt 0.837349 0.669767 +vt 0.837349 0.660465 +vt 0.846816 0.665116 +vt 0.837349 0.655814 +vt 0.846816 0.660465 +vt 0.837349 0.651163 +vt 0.846816 0.655814 +vt 0.837349 0.646512 +vt 0.846816 0.651163 +vt 0.846816 0.646512 +vt 0.820998 0.632558 +vt 0.831325 0.637209 +vt 0.821859 0.637209 +vt 0.827022 0.665116 +vt 0.837349 0.669767 +vt 0.827883 0.669767 +vt 0.826162 0.660465 +vt 0.836489 0.665116 +vt 0.825301 0.655814 +vt 0.835628 0.660465 +vt 0.824441 0.651163 +vt 0.834768 0.655814 +vt 0.823580 0.646512 +vt 0.833907 0.651163 +vt 0.822719 0.641860 +vt 0.833046 0.646512 +vt 0.832186 0.641860 +vt 0.837349 0.637209 +vt 0.846816 0.641860 +vt 0.837349 0.641860 +vt 0.820998 0.632558 +vt 0.831325 0.637209 +vt 0.821859 0.637209 +vt 0.837349 0.632558 +vt 0.846816 0.637209 +vt 0.827022 0.665116 +vt 0.837349 0.669767 +vt 0.827883 0.669767 +vt 0.837349 0.665116 +vt 0.846816 0.669767 +vt 0.837349 0.669767 +vt 0.826162 0.660465 +vt 0.836489 0.665116 +vt 0.825301 0.655814 +vt 0.835628 0.660465 +vt 0.837349 0.660465 +vt 0.846816 0.665116 +vt 0.837349 0.655814 +vt 0.846816 0.660465 +vt 0.824441 0.651163 +vt 0.834768 0.655814 +vt 0.837349 0.651163 +vt 0.846816 0.655814 +vt 0.823580 0.646512 +vt 0.833907 0.651163 +vt 0.837349 0.646512 +vt 0.846816 0.651163 +vt 0.822719 0.641860 +vt 0.833046 0.646512 +vt 0.846816 0.646512 +vt 0.832186 0.641860 +vt 0.837349 0.637209 +vt 0.846816 0.641860 +vt 0.837349 0.641860 +vt 0.837349 0.632558 +vt 0.846816 0.637209 +vt 0.837349 0.665116 +vt 0.846816 0.669767 +vt 0.837349 0.669767 +vt 0.837349 0.660465 +vt 0.846816 0.665116 +vt 0.837349 0.655814 +vt 0.846816 0.660465 +vt 0.837349 0.651163 +vt 0.846816 0.655814 +vt 0.837349 0.646512 +vt 0.846816 0.651163 +vt 0.846816 0.646512 +vt 0.820998 0.632558 +vt 0.831325 0.637209 +vt 0.821859 0.637209 +vt 0.827022 0.665116 +vt 0.837349 0.669767 +vt 0.827883 0.669767 +vt 0.826162 0.660465 +vt 0.836489 0.665116 +vt 0.825301 0.655814 +vt 0.835628 0.660465 +vt 0.824441 0.651163 +vt 0.834768 0.655814 +vt 0.823580 0.646512 +vt 0.833907 0.651163 +vt 0.822719 0.641860 +vt 0.833046 0.646512 +vt 0.832186 0.641860 +vt 0.831325 0.637209 +vt 0.820998 0.632558 +vt 0.821859 0.637209 +vt 0.837349 0.669767 +vt 0.827022 0.665116 +vt 0.827883 0.669767 +vt 0.836489 0.665116 +vt 0.826162 0.660465 +vt 0.835628 0.660465 +vt 0.825301 0.655814 +vt 0.834768 0.655814 +vt 0.824441 0.651163 +vt 0.833907 0.651163 +vt 0.823580 0.646512 +vt 0.833046 0.646512 +vt 0.822719 0.641860 +vt 0.832186 0.641860 +vt 0.831325 0.637209 +vt 0.820998 0.632558 +vt 0.821859 0.637209 +vt 0.837349 0.669767 +vt 0.827022 0.665116 +vt 0.827883 0.669767 +vt 0.836489 0.665116 +vt 0.826162 0.660465 +vt 0.835628 0.660465 +vt 0.825301 0.655814 +vt 0.834768 0.655814 +vt 0.824441 0.651163 +vt 0.833907 0.651163 +vt 0.823580 0.646512 +vt 0.833046 0.646512 +vt 0.822719 0.641860 +vt 0.832186 0.641860 +vt 0.831325 0.637209 +vt 0.820998 0.632558 +vt 0.821859 0.637209 +vt 0.837349 0.669767 +vt 0.827022 0.665116 +vt 0.827883 0.669767 +vt 0.836489 0.665116 +vt 0.826162 0.660465 +vt 0.835628 0.660465 +vt 0.825301 0.655814 +vt 0.834768 0.655814 +vt 0.824441 0.651163 +vt 0.833907 0.651163 +vt 0.823580 0.646512 +vt 0.833046 0.646512 +vt 0.822719 0.641860 +vt 0.832186 0.641860 +vt 0.831325 0.637209 +vt 0.820998 0.632558 +vt 0.821859 0.637209 +vt 0.837349 0.669767 +vt 0.827022 0.665116 +vt 0.827883 0.669767 +vt 0.836489 0.665116 +vt 0.826162 0.660465 +vt 0.835628 0.660465 +vt 0.825301 0.655814 +vt 0.834768 0.655814 +vt 0.824441 0.651163 +vt 0.833907 0.651163 +vt 0.823580 0.646512 +vt 0.833046 0.646512 +vt 0.822719 0.641860 +vt 0.832186 0.641860 +vt 0.830465 0.632558 +vt 0.846816 0.632558 +vt 0.846816 0.632558 +vt 0.830465 0.632558 +vt 0.830465 0.632558 +vt 0.846816 0.632558 +vt 0.846816 0.632558 +vt 0.830465 0.632558 +vt 0.830465 0.632558 +vt 0.830465 0.632558 +vt 0.830465 0.632558 +vt 0.830465 0.632558 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 1.0000 -0.0000 +vn 0.0000 0.7071 -0.7071 +s 1 +f 1342/2041/172 1357/2042/173 1341/2043/173 +f 1335/2044/174 1350/2045/172 1334/2046/172 +f 1343/2047/174 1358/2048/172 1342/2041/172 +f 1336/2049/175 1351/2050/174 1335/2051/174 +f 1344/2052/175 1359/2053/174 1343/2054/174 +f 1329/2055/176 1352/2056/175 1336/2049/175 +f 1330/2057/177 1345/2058/176 1329/2055/176 +f 1337/2059/176 1360/2060/175 1344/2052/175 +f 1338/2061/177 1353/2062/176 1337/2059/176 +f 1331/2063/178 1346/2064/177 1330/2057/177 +f 1339/2065/178 1354/2066/177 1338/2061/177 +f 1332/2067/179 1347/2068/178 1331/2063/178 +f 1340/2069/179 1355/2070/178 1339/2065/178 +f 1333/2071/173 1348/2072/179 1332/2067/179 +f 1341/2043/173 1356/2073/179 1340/2069/179 +f 1334/2046/172 1349/2074/173 1333/2071/173 +f 1366/2075/172 1373/2076/173 1365/2077/173 +f 1367/2078/174 1374/2079/172 1366/2075/172 +f 1368/2080/175 1375/2081/174 1367/2082/174 +f 1361/2083/176 1376/2084/175 1368/2080/175 +f 1362/2085/177 1369/2086/176 1361/2083/176 +f 1363/2087/178 1370/2088/177 1362/2085/177 +f 1364/2089/179 1371/2090/178 1363/2087/178 +f 1365/2077/173 1372/2091/179 1364/2089/179 +f 1383/2092/174 1390/2093/172 1382/2094/172 +f 1384/2095/175 1391/2096/174 1383/2097/174 +f 1377/2098/176 1392/2099/175 1384/2095/175 +f 1378/2100/177 1385/2101/176 1377/2098/176 +f 1379/2102/178 1386/2103/177 1378/2100/177 +f 1380/2104/179 1387/2105/178 1379/2102/178 +f 1381/2106/173 1388/2107/179 1380/2104/179 +f 1382/2094/172 1389/2108/173 1381/2106/173 +f 1406/2109/177 1421/2110/176 1405/2111/176 +f 1399/2112/178 1414/2113/177 1398/2114/177 +f 1407/2115/178 1422/2116/177 1406/2109/177 +f 1400/2117/179 1415/2118/178 1399/2119/178 +f 1408/2120/179 1423/2121/178 1407/2122/178 +f 1393/2123/173 1416/2124/179 1400/2117/179 +f 1394/2125/172 1409/2126/173 1393/2123/173 +f 1401/2127/173 1424/2128/179 1408/2120/179 +f 1402/2129/172 1417/2130/173 1401/2127/173 +f 1395/2131/174 1410/2132/172 1394/2125/172 +f 1403/2133/174 1418/2134/172 1402/2129/172 +f 1396/2135/175 1411/2136/174 1395/2131/174 +f 1404/2137/175 1419/2138/174 1403/2133/174 +f 1397/2139/176 1412/2140/175 1396/2135/175 +f 1405/2111/176 1420/2141/175 1404/2137/175 +f 1398/2114/177 1413/2142/176 1397/2139/176 +f 1430/2143/177 1437/2144/176 1429/2145/176 +f 1431/2146/178 1438/2147/177 1430/2143/177 +f 1432/2148/179 1439/2149/178 1431/2150/178 +f 1425/2151/173 1440/2152/179 1432/2148/179 +f 1426/2153/172 1433/2154/173 1425/2151/173 +f 1427/2155/174 1434/2156/172 1426/2153/172 +f 1428/2157/175 1435/2158/174 1427/2155/174 +f 1429/2145/176 1436/2159/175 1428/2157/175 +f 1447/2160/178 1454/2161/177 1446/2162/177 +f 1448/2163/179 1455/2164/178 1447/2165/178 +f 1441/2166/173 1456/2167/179 1448/2163/179 +f 1442/2168/172 1449/2169/173 1441/2166/173 +f 1443/2170/174 1450/2171/172 1442/2168/172 +f 1444/2172/175 1451/2173/174 1443/2170/174 +f 1445/2174/176 1452/2175/175 1444/2172/175 +f 1446/2162/177 1453/2176/176 1445/2174/176 +f 1470/2177/177 1463/2178/178 1462/2179/177 +f 1471/2180/178 1464/2181/179 1463/2182/178 +f 1472/2183/179 1457/2184/173 1464/2181/179 +f 1465/2185/173 1458/2186/172 1457/2184/173 +f 1466/2187/172 1459/2188/174 1458/2186/172 +f 1467/2189/174 1460/2190/175 1459/2188/174 +f 1468/2191/175 1461/2192/176 1460/2190/175 +f 1469/2193/176 1462/2179/177 1461/2192/176 +f 1486/2194/177 1479/2195/178 1478/2196/177 +f 1487/2197/178 1480/2198/179 1479/2199/178 +f 1488/2200/179 1473/2201/173 1480/2198/179 +f 1481/2202/173 1474/2203/172 1473/2201/173 +f 1482/2204/172 1475/2205/174 1474/2203/172 +f 1483/2206/174 1476/2207/175 1475/2205/174 +f 1484/2208/175 1477/2209/176 1476/2207/175 +f 1485/2210/176 1478/2196/177 1477/2209/176 +f 1502/2211/172 1495/2212/174 1494/2213/172 +f 1503/2214/174 1496/2215/175 1495/2216/174 +f 1504/2217/175 1489/2218/176 1496/2215/175 +f 1497/2219/176 1490/2220/177 1489/2218/176 +f 1498/2221/177 1491/2222/178 1490/2220/177 +f 1499/2223/178 1492/2224/179 1491/2222/178 +f 1500/2225/179 1493/2226/173 1492/2224/179 +f 1501/2227/173 1494/2213/172 1493/2226/173 +f 1518/2228/172 1511/2229/174 1510/2230/172 +f 1519/2231/174 1512/2232/175 1511/2233/174 +f 1520/2234/175 1505/2235/176 1512/2232/175 +f 1513/2236/176 1506/2237/177 1505/2235/176 +f 1514/2238/177 1507/2239/178 1506/2237/177 +f 1515/2240/178 1508/2241/179 1507/2239/178 +f 1516/2242/179 1509/2243/173 1508/2241/179 +f 1517/2244/173 1510/2230/172 1509/2243/173 +f 1342/2041/172 1358/2048/172 1357/2042/173 +f 1335/2044/174 1351/2245/174 1350/2045/172 +f 1343/2047/174 1359/2246/174 1358/2048/172 +f 1336/2049/175 1352/2056/175 1351/2050/174 +f 1344/2052/175 1360/2060/175 1359/2053/174 +f 1329/2055/176 1345/2058/176 1352/2056/175 +f 1330/2057/177 1346/2064/177 1345/2058/176 +f 1337/2059/176 1353/2062/176 1360/2060/175 +f 1338/2061/177 1354/2066/177 1353/2062/176 +f 1331/2063/178 1347/2068/178 1346/2064/177 +f 1339/2065/178 1355/2070/178 1354/2066/177 +f 1332/2067/179 1348/2072/179 1347/2068/178 +f 1340/2069/179 1356/2073/179 1355/2070/178 +f 1333/2071/173 1349/2074/173 1348/2072/179 +f 1341/2043/173 1357/2042/173 1356/2073/179 +f 1334/2046/172 1350/2045/172 1349/2074/173 +f 1366/2075/172 1374/2079/172 1373/2076/173 +f 1367/2078/174 1375/2247/174 1374/2079/172 +f 1368/2080/175 1376/2084/175 1375/2081/174 +f 1361/2083/176 1369/2086/176 1376/2084/175 +f 1362/2085/177 1370/2088/177 1369/2086/176 +f 1363/2087/178 1371/2090/178 1370/2088/177 +f 1364/2089/179 1372/2091/179 1371/2090/178 +f 1365/2077/173 1373/2076/173 1372/2091/179 +f 1383/2092/174 1391/2248/174 1390/2093/172 +f 1384/2095/175 1392/2099/175 1391/2096/174 +f 1377/2098/176 1385/2101/176 1392/2099/175 +f 1378/2100/177 1386/2103/177 1385/2101/176 +f 1379/2102/178 1387/2105/178 1386/2103/177 +f 1380/2104/179 1388/2107/179 1387/2105/178 +f 1381/2106/173 1389/2108/173 1388/2107/179 +f 1382/2094/172 1390/2093/172 1389/2108/173 +f 1406/2109/177 1422/2116/177 1421/2110/176 +f 1399/2112/178 1415/2249/178 1414/2113/177 +f 1407/2115/178 1423/2250/178 1422/2116/177 +f 1400/2117/179 1416/2124/179 1415/2118/178 +f 1408/2120/179 1424/2128/179 1423/2121/178 +f 1393/2123/173 1409/2126/173 1416/2124/179 +f 1394/2125/172 1410/2132/172 1409/2126/173 +f 1401/2127/173 1417/2130/173 1424/2128/179 +f 1402/2129/172 1418/2134/172 1417/2130/173 +f 1395/2131/174 1411/2136/174 1410/2132/172 +f 1403/2133/174 1419/2138/174 1418/2134/172 +f 1396/2135/175 1412/2140/175 1411/2136/174 +f 1404/2137/175 1420/2141/175 1419/2138/174 +f 1397/2139/176 1413/2142/176 1412/2140/175 +f 1405/2111/176 1421/2110/176 1420/2141/175 +f 1398/2114/177 1414/2113/177 1413/2142/176 +f 1430/2143/177 1438/2147/177 1437/2144/176 +f 1431/2146/178 1439/2251/178 1438/2147/177 +f 1432/2148/179 1440/2152/179 1439/2149/178 +f 1425/2151/173 1433/2154/173 1440/2152/179 +f 1426/2153/172 1434/2156/172 1433/2154/173 +f 1427/2155/174 1435/2158/174 1434/2156/172 +f 1428/2157/175 1436/2159/175 1435/2158/174 +f 1429/2145/176 1437/2144/176 1436/2159/175 +f 1447/2160/178 1455/2252/178 1454/2161/177 +f 1448/2163/179 1456/2167/179 1455/2164/178 +f 1441/2166/173 1449/2169/173 1456/2167/179 +f 1442/2168/172 1450/2171/172 1449/2169/173 +f 1443/2170/174 1451/2173/174 1450/2171/172 +f 1444/2172/175 1452/2175/175 1451/2173/174 +f 1445/2174/176 1453/2176/176 1452/2175/175 +f 1446/2162/177 1454/2161/177 1453/2176/176 +f 1470/2177/177 1471/2253/178 1463/2178/178 +f 1471/2180/178 1472/2183/179 1464/2181/179 +f 1472/2183/179 1465/2185/173 1457/2184/173 +f 1465/2185/173 1466/2187/172 1458/2186/172 +f 1466/2187/172 1467/2189/174 1459/2188/174 +f 1467/2189/174 1468/2191/175 1460/2190/175 +f 1468/2191/175 1469/2193/176 1461/2192/176 +f 1469/2193/176 1470/2177/177 1462/2179/177 +f 1486/2194/177 1487/2254/178 1479/2195/178 +f 1487/2197/178 1488/2200/179 1480/2198/179 +f 1488/2200/179 1481/2202/173 1473/2201/173 +f 1481/2202/173 1482/2204/172 1474/2203/172 +f 1482/2204/172 1483/2206/174 1475/2205/174 +f 1483/2206/174 1484/2208/175 1476/2207/175 +f 1484/2208/175 1485/2210/176 1477/2209/176 +f 1485/2210/176 1486/2194/177 1478/2196/177 +f 1502/2211/172 1503/2255/174 1495/2212/174 +f 1503/2214/174 1504/2217/175 1496/2215/175 +f 1504/2217/175 1497/2219/176 1489/2218/176 +f 1497/2219/176 1498/2221/177 1490/2220/177 +f 1498/2221/177 1499/2223/178 1491/2222/178 +f 1499/2223/178 1500/2225/179 1492/2224/179 +f 1500/2225/179 1501/2227/173 1493/2226/173 +f 1501/2227/173 1502/2211/172 1494/2213/172 +f 1518/2228/172 1519/2256/174 1511/2229/174 +f 1519/2231/174 1520/2234/175 1512/2232/175 +f 1520/2234/175 1513/2236/176 1505/2235/176 +f 1513/2236/176 1514/2238/177 1506/2237/177 +f 1514/2238/177 1515/2240/178 1507/2239/178 +f 1515/2240/178 1516/2242/179 1508/2241/179 +f 1516/2242/179 1517/2244/173 1509/2243/173 +f 1517/2244/173 1518/2228/172 1510/2230/172 +o SuspensionRight +v 1.937497 6.687504 7.562500 +v 1.937497 6.820086 7.617417 +v 1.937497 6.875004 7.750000 +v 1.937497 6.820086 7.882583 +v 1.937497 6.687504 7.937500 +v 1.937497 6.554921 7.882583 +v 1.937497 6.500004 7.750000 +v 1.937497 6.554921 7.617417 +v 1.937497 6.687504 7.625000 +v 1.937497 6.775892 7.661612 +v 1.937497 6.812504 7.750000 +v 1.937497 6.775892 7.838388 +v 1.937497 6.687504 7.875000 +v 1.937497 6.599115 7.838388 +v 1.937497 6.562504 7.750000 +v 1.937497 6.599115 7.661612 +v 2.624997 6.687504 7.562500 +v 2.624997 6.820086 7.617417 +v 2.624997 6.875004 7.750000 +v 2.624997 6.820086 7.882583 +v 2.624997 6.687504 7.937500 +v 2.624997 6.554921 7.882583 +v 2.624997 6.500004 7.750000 +v 2.624997 6.554921 7.617417 +v 2.624997 6.687504 7.625000 +v 2.624997 6.775892 7.661612 +v 2.624997 6.812504 7.750000 +v 2.624997 6.775892 7.838388 +v 2.624997 6.687504 7.875000 +v 2.624997 6.599115 7.838388 +v 2.624997 6.562504 7.750000 +v 2.624997 6.599115 7.661612 +v 1.937497 6.687504 6.125000 +v 1.937497 6.775892 6.161612 +v 1.937497 6.812504 6.250000 +v 1.937497 6.775892 6.338388 +v 1.937497 6.687504 6.375000 +v 1.937497 6.599115 6.338388 +v 1.937497 6.562504 6.250000 +v 1.937497 6.599115 6.161612 +v 2.624997 6.687504 6.125000 +v 2.624997 6.775892 6.161612 +v 2.624997 6.812504 6.250000 +v 2.624997 6.775892 6.338388 +v 2.624997 6.687504 6.375000 +v 2.624997 6.599115 6.338388 +v 2.624997 6.562504 6.250000 +v 2.624997 6.599115 6.161612 +v 1.937497 6.687504 6.062500 +v 1.937497 6.820086 6.117417 +v 1.937497 6.875004 6.250000 +v 1.937497 6.820086 6.382583 +v 1.937497 6.687504 6.437500 +v 1.937497 6.554921 6.382583 +v 1.937497 6.500004 6.250000 +v 1.937497 6.554921 6.117417 +v 2.624997 6.687504 6.062500 +v 2.624997 6.820086 6.117417 +v 2.624997 6.875004 6.250000 +v 2.624997 6.820086 6.382583 +v 2.624997 6.687504 6.437500 +v 2.624997 6.554921 6.382583 +v 2.624997 6.500004 6.250000 +v 2.624997 6.554921 6.117417 +v 1.937497 0.312492 6.437500 +v 1.937497 0.179910 6.382583 +v 1.937497 0.124992 6.250000 +v 1.937497 0.179910 6.117417 +v 1.937497 0.312492 6.062500 +v 1.937497 0.445075 6.117417 +v 1.937497 0.499992 6.250000 +v 1.937497 0.445075 6.382583 +v 1.937497 0.312492 6.375000 +v 1.937497 0.224104 6.338388 +v 1.937497 0.187492 6.250000 +v 1.937497 0.224104 6.161612 +v 1.937497 0.312492 6.125000 +v 1.937497 0.400881 6.161612 +v 1.937497 0.437492 6.250000 +v 1.937497 0.400881 6.338388 +v 2.624997 0.312492 6.437500 +v 2.624997 0.179910 6.382583 +v 2.624997 0.124992 6.250000 +v 2.624997 0.179910 6.117417 +v 2.624997 0.312492 6.062500 +v 2.624997 0.445075 6.117417 +v 2.624997 0.499992 6.250000 +v 2.624997 0.445075 6.382583 +v 2.624997 0.312492 6.375000 +v 2.624997 0.224104 6.338388 +v 2.624997 0.187492 6.250000 +v 2.624997 0.224104 6.161612 +v 2.624997 0.312492 6.125000 +v 2.624997 0.400881 6.161612 +v 2.624997 0.437492 6.250000 +v 2.624997 0.400881 6.338388 +v 1.937497 0.312492 7.875000 +v 1.937497 0.224104 7.838388 +v 1.937497 0.187492 7.750000 +v 1.937497 0.224104 7.661612 +v 1.937497 0.312492 7.625000 +v 1.937497 0.400881 7.661612 +v 1.937497 0.437492 7.750000 +v 1.937497 0.400881 7.838388 +v 2.624997 0.312492 7.875000 +v 2.624997 0.224104 7.838388 +v 2.624997 0.187492 7.750000 +v 2.624997 0.224104 7.661612 +v 2.624997 0.312492 7.625000 +v 2.624997 0.400881 7.661612 +v 2.624997 0.437492 7.750000 +v 2.624997 0.400881 7.838388 +v 1.937497 0.312492 7.937500 +v 1.937497 0.179910 7.882583 +v 1.937497 0.124992 7.750000 +v 1.937497 0.179910 7.617417 +v 1.937497 0.312492 7.562500 +v 1.937497 0.445075 7.617417 +v 1.937497 0.499992 7.750000 +v 1.937497 0.445075 7.882583 +v 2.624997 0.312492 7.937500 +v 2.624997 0.179910 7.882583 +v 2.624997 0.124992 7.750000 +v 2.624997 0.179910 7.617417 +v 2.624997 0.312492 7.562500 +v 2.624997 0.445075 7.617417 +v 2.624997 0.499992 7.750000 +v 2.624997 0.445075 7.882583 +v 1.937497 6.687504 7.562500 +v 1.937497 6.820086 7.617417 +v 1.937497 6.875004 7.750000 +v 1.937497 6.820086 7.882583 +v 1.937497 6.687504 7.937500 +v 1.937497 6.554921 7.882583 +v 1.937497 6.500004 7.750000 +v 1.937497 6.554921 7.617417 +v 2.624997 6.687504 7.562500 +v 2.624997 6.820086 7.617417 +v 2.624997 6.875004 7.750000 +v 2.624997 6.820086 7.882583 +v 2.624997 6.687504 7.937500 +v 2.624997 6.554921 7.882583 +v 2.624997 6.500004 7.750000 +v 2.624997 6.554921 7.617417 +v 1.937497 6.687504 6.062500 +v 1.937497 6.820086 6.117417 +v 1.937497 6.875004 6.250000 +v 1.937497 6.820086 6.382583 +v 1.937497 6.687504 6.437500 +v 1.937497 6.554921 6.382583 +v 1.937497 6.500004 6.250000 +v 1.937497 6.554921 6.117417 +v 2.624997 6.687504 6.062500 +v 2.624997 6.820086 6.117417 +v 2.624997 6.875004 6.250000 +v 2.624997 6.820086 6.382583 +v 2.624997 6.687504 6.437500 +v 2.624997 6.554921 6.382583 +v 2.624997 6.500004 6.250000 +v 2.624997 6.554921 6.117417 +v 1.937497 0.312492 6.437500 +v 1.937497 0.179910 6.382583 +v 1.937497 0.124992 6.250000 +v 1.937497 0.179910 6.117417 +v 1.937497 0.312492 6.062500 +v 1.937497 0.445075 6.117417 +v 1.937497 0.499992 6.250000 +v 1.937497 0.445075 6.382583 +v 2.624997 0.312492 6.437500 +v 2.624997 0.179910 6.382583 +v 2.624997 0.124992 6.250000 +v 2.624997 0.179910 6.117417 +v 2.624997 0.312492 6.062500 +v 2.624997 0.445075 6.117417 +v 2.624997 0.499992 6.250000 +v 2.624997 0.445075 6.382583 +v 1.937497 0.312492 7.937500 +v 1.937497 0.179910 7.882583 +v 1.937497 0.124992 7.750000 +v 1.937497 0.179910 7.617417 +v 1.937497 0.312492 7.562500 +v 1.937497 0.445075 7.617417 +v 1.937497 0.499992 7.750000 +v 1.937497 0.445075 7.882583 +v 2.624997 0.312492 7.937500 +v 2.624997 0.179910 7.882583 +v 2.624997 0.124992 7.750000 +v 2.624997 0.179910 7.617417 +v 2.624997 0.312492 7.562500 +v 2.624997 0.445075 7.617417 +v 2.624997 0.499992 7.750000 +v 2.624997 0.445075 7.882583 +vt 0.837349 0.637209 +vt 0.846816 0.641860 +vt 0.837349 0.641860 +vt 0.820998 0.632558 +vt 0.831325 0.637209 +vt 0.821859 0.637209 +vt 0.837349 0.632558 +vt 0.846816 0.637209 +vt 0.827022 0.665116 +vt 0.837349 0.669767 +vt 0.827883 0.669767 +vt 0.837349 0.665116 +vt 0.846816 0.669767 +vt 0.837349 0.669767 +vt 0.826162 0.660465 +vt 0.836489 0.665116 +vt 0.825301 0.655814 +vt 0.835628 0.660465 +vt 0.837349 0.660465 +vt 0.846816 0.665116 +vt 0.837349 0.655814 +vt 0.846816 0.660465 +vt 0.824441 0.651163 +vt 0.834768 0.655814 +vt 0.837349 0.651163 +vt 0.846816 0.655814 +vt 0.823580 0.646512 +vt 0.833907 0.651163 +vt 0.837349 0.646512 +vt 0.846816 0.651163 +vt 0.822719 0.641860 +vt 0.833046 0.646512 +vt 0.846816 0.646512 +vt 0.832186 0.641860 +vt 0.837349 0.637209 +vt 0.846816 0.641860 +vt 0.837349 0.641860 +vt 0.837349 0.632558 +vt 0.846816 0.637209 +vt 0.837349 0.665116 +vt 0.846816 0.669767 +vt 0.837349 0.669767 +vt 0.837349 0.660465 +vt 0.846816 0.665116 +vt 0.837349 0.655814 +vt 0.846816 0.660465 +vt 0.837349 0.651163 +vt 0.846816 0.655814 +vt 0.837349 0.646512 +vt 0.846816 0.651163 +vt 0.846816 0.646512 +vt 0.820998 0.632558 +vt 0.831325 0.637209 +vt 0.821859 0.637209 +vt 0.827022 0.665116 +vt 0.837349 0.669767 +vt 0.827883 0.669767 +vt 0.826162 0.660465 +vt 0.836489 0.665116 +vt 0.825301 0.655814 +vt 0.835628 0.660465 +vt 0.824441 0.651163 +vt 0.834768 0.655814 +vt 0.823580 0.646512 +vt 0.833907 0.651163 +vt 0.822719 0.641860 +vt 0.833046 0.646512 +vt 0.832186 0.641860 +vt 0.837349 0.637209 +vt 0.846816 0.641860 +vt 0.837349 0.641860 +vt 0.820998 0.632558 +vt 0.831325 0.637209 +vt 0.821859 0.637209 +vt 0.837349 0.632558 +vt 0.846816 0.637209 +vt 0.827022 0.665116 +vt 0.837349 0.669767 +vt 0.827883 0.669767 +vt 0.837349 0.665116 +vt 0.846816 0.669767 +vt 0.837349 0.669767 +vt 0.826162 0.660465 +vt 0.836489 0.665116 +vt 0.825301 0.655814 +vt 0.835628 0.660465 +vt 0.837349 0.660465 +vt 0.846816 0.665116 +vt 0.837349 0.655814 +vt 0.846816 0.660465 +vt 0.824441 0.651163 +vt 0.834768 0.655814 +vt 0.837349 0.651163 +vt 0.846816 0.655814 +vt 0.823580 0.646512 +vt 0.833907 0.651163 +vt 0.837349 0.646512 +vt 0.846816 0.651163 +vt 0.822719 0.641860 +vt 0.833046 0.646512 +vt 0.846816 0.646512 +vt 0.832186 0.641860 +vt 0.837349 0.637209 +vt 0.846816 0.641860 +vt 0.837349 0.641860 +vt 0.837349 0.632558 +vt 0.846816 0.637209 +vt 0.837349 0.665116 +vt 0.846816 0.669767 +vt 0.837349 0.669767 +vt 0.837349 0.660465 +vt 0.846816 0.665116 +vt 0.837349 0.655814 +vt 0.846816 0.660465 +vt 0.837349 0.651163 +vt 0.846816 0.655814 +vt 0.837349 0.646512 +vt 0.846816 0.651163 +vt 0.846816 0.646512 +vt 0.820998 0.632558 +vt 0.831325 0.637209 +vt 0.821859 0.637209 +vt 0.827022 0.665116 +vt 0.837349 0.669767 +vt 0.827883 0.669767 +vt 0.826162 0.660465 +vt 0.836489 0.665116 +vt 0.825301 0.655814 +vt 0.835628 0.660465 +vt 0.824441 0.651163 +vt 0.834768 0.655814 +vt 0.823580 0.646512 +vt 0.833907 0.651163 +vt 0.822719 0.641860 +vt 0.833046 0.646512 +vt 0.832186 0.641860 +vt 0.831325 0.637209 +vt 0.820998 0.632558 +vt 0.821859 0.637209 +vt 0.837349 0.669767 +vt 0.827022 0.665116 +vt 0.827883 0.669767 +vt 0.836489 0.665116 +vt 0.826162 0.660465 +vt 0.835628 0.660465 +vt 0.825301 0.655814 +vt 0.834768 0.655814 +vt 0.824441 0.651163 +vt 0.833907 0.651163 +vt 0.823580 0.646512 +vt 0.833046 0.646512 +vt 0.822719 0.641860 +vt 0.832186 0.641860 +vt 0.831325 0.637209 +vt 0.820998 0.632558 +vt 0.821859 0.637209 +vt 0.837349 0.669767 +vt 0.827022 0.665116 +vt 0.827883 0.669767 +vt 0.836489 0.665116 +vt 0.826162 0.660465 +vt 0.835628 0.660465 +vt 0.825301 0.655814 +vt 0.834768 0.655814 +vt 0.824441 0.651163 +vt 0.833907 0.651163 +vt 0.823580 0.646512 +vt 0.833046 0.646512 +vt 0.822719 0.641860 +vt 0.832186 0.641860 +vt 0.831325 0.637209 +vt 0.820998 0.632558 +vt 0.821859 0.637209 +vt 0.837349 0.669767 +vt 0.827022 0.665116 +vt 0.827883 0.669767 +vt 0.836489 0.665116 +vt 0.826162 0.660465 +vt 0.835628 0.660465 +vt 0.825301 0.655814 +vt 0.834768 0.655814 +vt 0.824441 0.651163 +vt 0.833907 0.651163 +vt 0.823580 0.646512 +vt 0.833046 0.646512 +vt 0.822719 0.641860 +vt 0.832186 0.641860 +vt 0.831325 0.637209 +vt 0.820998 0.632558 +vt 0.821859 0.637209 +vt 0.837349 0.669767 +vt 0.827022 0.665116 +vt 0.827883 0.669767 +vt 0.836489 0.665116 +vt 0.826162 0.660465 +vt 0.835628 0.660465 +vt 0.825301 0.655814 +vt 0.834768 0.655814 +vt 0.824441 0.651163 +vt 0.833907 0.651163 +vt 0.823580 0.646512 +vt 0.833046 0.646512 +vt 0.822719 0.641860 +vt 0.832186 0.641860 +vt 0.830465 0.632558 +vt 0.846816 0.632558 +vt 0.846816 0.632558 +vt 0.830465 0.632558 +vt 0.830465 0.632558 +vt 0.846816 0.632558 +vt 0.846816 0.632558 +vt 0.830465 0.632558 +vt 0.830465 0.632558 +vt 0.830465 0.632558 +vt 0.830465 0.632558 +vt 0.830465 0.632558 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7071 0.7071 +s 1 +f 1534/2257/180 1549/2258/181 1533/2259/181 +f 1527/2260/182 1542/2261/180 1526/2262/180 +f 1535/2263/182 1550/2264/180 1534/2257/180 +f 1528/2265/183 1543/2266/182 1527/2267/182 +f 1536/2268/183 1551/2269/182 1535/2270/182 +f 1521/2271/184 1544/2272/183 1528/2265/183 +f 1522/2273/185 1537/2274/184 1521/2271/184 +f 1529/2275/184 1552/2276/183 1536/2268/183 +f 1530/2277/185 1545/2278/184 1529/2275/184 +f 1523/2279/186 1538/2280/185 1522/2273/185 +f 1531/2281/186 1546/2282/185 1530/2277/185 +f 1524/2283/187 1539/2284/186 1523/2279/186 +f 1532/2285/187 1547/2286/186 1531/2281/186 +f 1525/2287/181 1540/2288/187 1524/2283/187 +f 1533/2259/181 1548/2289/187 1532/2285/187 +f 1526/2262/180 1541/2290/181 1525/2287/181 +f 1558/2291/180 1565/2292/181 1557/2293/181 +f 1559/2294/182 1566/2295/180 1558/2291/180 +f 1560/2296/183 1567/2297/182 1559/2298/182 +f 1553/2299/184 1568/2300/183 1560/2296/183 +f 1554/2301/185 1561/2302/184 1553/2299/184 +f 1555/2303/186 1562/2304/185 1554/2301/185 +f 1556/2305/187 1563/2306/186 1555/2303/186 +f 1557/2293/181 1564/2307/187 1556/2305/187 +f 1575/2308/182 1582/2309/180 1574/2310/180 +f 1576/2311/183 1583/2312/182 1575/2313/182 +f 1569/2314/184 1584/2315/183 1576/2311/183 +f 1570/2316/185 1577/2317/184 1569/2314/184 +f 1571/2318/186 1578/2319/185 1570/2316/185 +f 1572/2320/187 1579/2321/186 1571/2318/186 +f 1573/2322/181 1580/2323/187 1572/2320/187 +f 1574/2310/180 1581/2324/181 1573/2322/181 +f 1598/2325/185 1613/2326/184 1597/2327/184 +f 1591/2328/186 1606/2329/185 1590/2330/185 +f 1599/2331/186 1614/2332/185 1598/2325/185 +f 1592/2333/187 1607/2334/186 1591/2335/186 +f 1600/2336/187 1615/2337/186 1599/2338/186 +f 1585/2339/181 1608/2340/187 1592/2333/187 +f 1586/2341/180 1601/2342/181 1585/2339/181 +f 1593/2343/181 1616/2344/187 1600/2336/187 +f 1594/2345/180 1609/2346/181 1593/2343/181 +f 1587/2347/182 1602/2348/180 1586/2341/180 +f 1595/2349/182 1610/2350/180 1594/2345/180 +f 1588/2351/183 1603/2352/182 1587/2347/182 +f 1596/2353/183 1611/2354/182 1595/2349/182 +f 1589/2355/184 1604/2356/183 1588/2351/183 +f 1597/2327/184 1612/2357/183 1596/2353/183 +f 1590/2330/185 1605/2358/184 1589/2355/184 +f 1622/2359/185 1629/2360/184 1621/2361/184 +f 1623/2362/186 1630/2363/185 1622/2359/185 +f 1624/2364/187 1631/2365/186 1623/2366/186 +f 1617/2367/181 1632/2368/187 1624/2364/187 +f 1618/2369/180 1625/2370/181 1617/2367/181 +f 1619/2371/182 1626/2372/180 1618/2369/180 +f 1620/2373/183 1627/2374/182 1619/2371/182 +f 1621/2361/184 1628/2375/183 1620/2373/183 +f 1639/2376/186 1646/2377/185 1638/2378/185 +f 1640/2379/187 1647/2380/186 1639/2381/186 +f 1633/2382/181 1648/2383/187 1640/2379/187 +f 1634/2384/180 1641/2385/181 1633/2382/181 +f 1635/2386/182 1642/2387/180 1634/2384/180 +f 1636/2388/183 1643/2389/182 1635/2386/182 +f 1637/2390/184 1644/2391/183 1636/2388/183 +f 1638/2378/185 1645/2392/184 1637/2390/184 +f 1662/2393/185 1655/2394/186 1654/2395/185 +f 1663/2396/186 1656/2397/187 1655/2398/186 +f 1664/2399/187 1649/2400/181 1656/2397/187 +f 1657/2401/181 1650/2402/180 1649/2400/181 +f 1658/2403/180 1651/2404/182 1650/2402/180 +f 1659/2405/182 1652/2406/183 1651/2404/182 +f 1660/2407/183 1653/2408/184 1652/2406/183 +f 1661/2409/184 1654/2395/185 1653/2408/184 +f 1678/2410/185 1671/2411/186 1670/2412/185 +f 1679/2413/186 1672/2414/187 1671/2415/186 +f 1680/2416/187 1665/2417/181 1672/2414/187 +f 1673/2418/181 1666/2419/180 1665/2417/181 +f 1674/2420/180 1667/2421/182 1666/2419/180 +f 1675/2422/182 1668/2423/183 1667/2421/182 +f 1676/2424/183 1669/2425/184 1668/2423/183 +f 1677/2426/184 1670/2412/185 1669/2425/184 +f 1694/2427/180 1687/2428/182 1686/2429/180 +f 1695/2430/182 1688/2431/183 1687/2432/182 +f 1696/2433/183 1681/2434/184 1688/2431/183 +f 1689/2435/184 1682/2436/185 1681/2434/184 +f 1690/2437/185 1683/2438/186 1682/2436/185 +f 1691/2439/186 1684/2440/187 1683/2438/186 +f 1692/2441/187 1685/2442/181 1684/2440/187 +f 1693/2443/181 1686/2429/180 1685/2442/181 +f 1710/2444/180 1703/2445/182 1702/2446/180 +f 1711/2447/182 1704/2448/183 1703/2449/182 +f 1712/2450/183 1697/2451/184 1704/2448/183 +f 1705/2452/184 1698/2453/185 1697/2451/184 +f 1706/2454/185 1699/2455/186 1698/2453/185 +f 1707/2456/186 1700/2457/187 1699/2455/186 +f 1708/2458/187 1701/2459/181 1700/2457/187 +f 1709/2460/181 1702/2446/180 1701/2459/181 +f 1534/2257/180 1550/2264/180 1549/2258/181 +f 1527/2260/182 1543/2461/182 1542/2261/180 +f 1535/2263/182 1551/2462/182 1550/2264/180 +f 1528/2265/183 1544/2272/183 1543/2266/182 +f 1536/2268/183 1552/2276/183 1551/2269/182 +f 1521/2271/184 1537/2274/184 1544/2272/183 +f 1522/2273/185 1538/2280/185 1537/2274/184 +f 1529/2275/184 1545/2278/184 1552/2276/183 +f 1530/2277/185 1546/2282/185 1545/2278/184 +f 1523/2279/186 1539/2284/186 1538/2280/185 +f 1531/2281/186 1547/2286/186 1546/2282/185 +f 1524/2283/187 1540/2288/187 1539/2284/186 +f 1532/2285/187 1548/2289/187 1547/2286/186 +f 1525/2287/181 1541/2290/181 1540/2288/187 +f 1533/2259/181 1549/2258/181 1548/2289/187 +f 1526/2262/180 1542/2261/180 1541/2290/181 +f 1558/2291/180 1566/2295/180 1565/2292/181 +f 1559/2294/182 1567/2463/182 1566/2295/180 +f 1560/2296/183 1568/2300/183 1567/2297/182 +f 1553/2299/184 1561/2302/184 1568/2300/183 +f 1554/2301/185 1562/2304/185 1561/2302/184 +f 1555/2303/186 1563/2306/186 1562/2304/185 +f 1556/2305/187 1564/2307/187 1563/2306/186 +f 1557/2293/181 1565/2292/181 1564/2307/187 +f 1575/2308/182 1583/2464/182 1582/2309/180 +f 1576/2311/183 1584/2315/183 1583/2312/182 +f 1569/2314/184 1577/2317/184 1584/2315/183 +f 1570/2316/185 1578/2319/185 1577/2317/184 +f 1571/2318/186 1579/2321/186 1578/2319/185 +f 1572/2320/187 1580/2323/187 1579/2321/186 +f 1573/2322/181 1581/2324/181 1580/2323/187 +f 1574/2310/180 1582/2309/180 1581/2324/181 +f 1598/2325/185 1614/2332/185 1613/2326/184 +f 1591/2328/186 1607/2465/186 1606/2329/185 +f 1599/2331/186 1615/2466/186 1614/2332/185 +f 1592/2333/187 1608/2340/187 1607/2334/186 +f 1600/2336/187 1616/2344/187 1615/2337/186 +f 1585/2339/181 1601/2342/181 1608/2340/187 +f 1586/2341/180 1602/2348/180 1601/2342/181 +f 1593/2343/181 1609/2346/181 1616/2344/187 +f 1594/2345/180 1610/2350/180 1609/2346/181 +f 1587/2347/182 1603/2352/182 1602/2348/180 +f 1595/2349/182 1611/2354/182 1610/2350/180 +f 1588/2351/183 1604/2356/183 1603/2352/182 +f 1596/2353/183 1612/2357/183 1611/2354/182 +f 1589/2355/184 1605/2358/184 1604/2356/183 +f 1597/2327/184 1613/2326/184 1612/2357/183 +f 1590/2330/185 1606/2329/185 1605/2358/184 +f 1622/2359/185 1630/2363/185 1629/2360/184 +f 1623/2362/186 1631/2467/186 1630/2363/185 +f 1624/2364/187 1632/2368/187 1631/2365/186 +f 1617/2367/181 1625/2370/181 1632/2368/187 +f 1618/2369/180 1626/2372/180 1625/2370/181 +f 1619/2371/182 1627/2374/182 1626/2372/180 +f 1620/2373/183 1628/2375/183 1627/2374/182 +f 1621/2361/184 1629/2360/184 1628/2375/183 +f 1639/2376/186 1647/2468/186 1646/2377/185 +f 1640/2379/187 1648/2383/187 1647/2380/186 +f 1633/2382/181 1641/2385/181 1648/2383/187 +f 1634/2384/180 1642/2387/180 1641/2385/181 +f 1635/2386/182 1643/2389/182 1642/2387/180 +f 1636/2388/183 1644/2391/183 1643/2389/182 +f 1637/2390/184 1645/2392/184 1644/2391/183 +f 1638/2378/185 1646/2377/185 1645/2392/184 +f 1662/2393/185 1663/2469/186 1655/2394/186 +f 1663/2396/186 1664/2399/187 1656/2397/187 +f 1664/2399/187 1657/2401/181 1649/2400/181 +f 1657/2401/181 1658/2403/180 1650/2402/180 +f 1658/2403/180 1659/2405/182 1651/2404/182 +f 1659/2405/182 1660/2407/183 1652/2406/183 +f 1660/2407/183 1661/2409/184 1653/2408/184 +f 1661/2409/184 1662/2393/185 1654/2395/185 +f 1678/2410/185 1679/2470/186 1671/2411/186 +f 1679/2413/186 1680/2416/187 1672/2414/187 +f 1680/2416/187 1673/2418/181 1665/2417/181 +f 1673/2418/181 1674/2420/180 1666/2419/180 +f 1674/2420/180 1675/2422/182 1667/2421/182 +f 1675/2422/182 1676/2424/183 1668/2423/183 +f 1676/2424/183 1677/2426/184 1669/2425/184 +f 1677/2426/184 1678/2410/185 1670/2412/185 +f 1694/2427/180 1695/2471/182 1687/2428/182 +f 1695/2430/182 1696/2433/183 1688/2431/183 +f 1696/2433/183 1689/2435/184 1681/2434/184 +f 1689/2435/184 1690/2437/185 1682/2436/185 +f 1690/2437/185 1691/2439/186 1683/2438/186 +f 1691/2439/186 1692/2441/187 1684/2440/187 +f 1692/2441/187 1693/2443/181 1685/2442/181 +f 1693/2443/181 1694/2427/180 1686/2429/180 +f 1710/2444/180 1711/2472/182 1703/2445/182 +f 1711/2447/182 1712/2450/183 1704/2448/183 +f 1712/2450/183 1705/2452/184 1697/2451/184 +f 1705/2452/184 1706/2454/185 1698/2453/185 +f 1706/2454/185 1707/2456/186 1699/2455/186 +f 1707/2456/186 1708/2458/187 1700/2457/187 +f 1708/2458/187 1709/2460/181 1701/2459/181 +f 1709/2460/181 1710/2444/180 1702/2446/180 +o SuspensionBottom +v -3.187505 1.562501 6.437500 +v -3.320088 1.562501 6.382583 +v -3.375005 1.562501 6.250000 +v -3.320088 1.562501 6.117417 +v -3.187505 1.562501 6.062500 +v -3.054923 1.562501 6.117417 +v -3.000005 1.562501 6.250000 +v -3.054923 1.562501 6.382583 +v -3.187505 1.562501 6.375000 +v -3.275893 1.562501 6.338388 +v -3.312505 1.562501 6.250000 +v -3.275893 1.562501 6.161612 +v -3.187505 1.562501 6.125000 +v -3.099117 1.562501 6.161612 +v -3.062505 1.562501 6.250000 +v -3.099117 1.562501 6.338388 +v -3.187506 0.875001 6.437500 +v -3.320087 0.875001 6.382583 +v -3.375006 0.875001 6.250000 +v -3.320087 0.875001 6.117417 +v -3.187506 0.875001 6.062500 +v -3.054923 0.875001 6.117417 +v -3.000006 0.875001 6.250000 +v -3.054923 0.875001 6.382583 +v -3.187506 0.875001 6.375000 +v -3.275893 0.875001 6.338388 +v -3.312506 0.875001 6.250000 +v -3.275893 0.875001 6.161612 +v -3.187506 0.875001 6.125000 +v -3.099117 0.875001 6.161612 +v -3.062506 0.875001 6.250000 +v -3.099117 0.875001 6.338388 +v -3.187505 1.562501 7.875000 +v -3.275893 1.562501 7.838388 +v -3.312505 1.562501 7.750000 +v -3.275893 1.562501 7.661612 +v -3.187505 1.562501 7.625000 +v -3.099117 1.562501 7.661612 +v -3.062505 1.562501 7.750000 +v -3.099117 1.562501 7.838388 +v -3.187506 0.875001 7.875000 +v -3.275893 0.875001 7.838388 +v -3.312506 0.875001 7.750000 +v -3.275893 0.875001 7.661612 +v -3.187506 0.875001 7.625000 +v -3.099117 0.875001 7.661612 +v -3.062506 0.875001 7.750000 +v -3.099117 0.875001 7.838388 +v -3.187505 1.562501 7.937500 +v -3.320088 1.562501 7.882583 +v -3.375005 1.562501 7.750000 +v -3.320088 1.562501 7.617417 +v -3.187505 1.562501 7.562500 +v -3.054923 1.562501 7.617417 +v -3.000005 1.562501 7.750000 +v -3.054923 1.562501 7.882583 +v -3.187506 0.875001 7.937500 +v -3.320087 0.875001 7.882583 +v -3.375006 0.875001 7.750000 +v -3.320087 0.875001 7.617417 +v -3.187506 0.875001 7.562500 +v -3.054923 0.875001 7.617417 +v -3.000006 0.875001 7.750000 +v -3.054923 0.875001 7.882583 +v 3.187506 1.562501 7.562500 +v 3.320088 1.562501 7.617417 +v 3.375006 1.562501 7.750000 +v 3.320088 1.562501 7.882583 +v 3.187506 1.562501 7.937500 +v 3.054923 1.562501 7.882583 +v 3.000006 1.562501 7.750000 +v 3.054923 1.562501 7.617417 +v 3.187506 1.562501 7.625000 +v 3.275894 1.562501 7.661612 +v 3.312506 1.562501 7.750000 +v 3.275894 1.562501 7.838388 +v 3.187506 1.562501 7.875000 +v 3.099118 1.562501 7.838388 +v 3.062506 1.562501 7.750000 +v 3.099118 1.562501 7.661612 +v 3.187506 0.875000 7.562500 +v 3.320088 0.875000 7.617417 +v 3.375006 0.875000 7.750000 +v 3.320088 0.875000 7.882583 +v 3.187506 0.875000 7.937500 +v 3.054923 0.875000 7.882583 +v 3.000006 0.875000 7.750000 +v 3.054923 0.875000 7.617417 +v 3.187506 0.875000 7.625000 +v 3.275894 0.875000 7.661612 +v 3.312506 0.875000 7.750000 +v 3.275894 0.875000 7.838388 +v 3.187506 0.875000 7.875000 +v 3.099118 0.875000 7.838388 +v 3.062506 0.875000 7.750000 +v 3.099118 0.875000 7.661612 +v 3.187506 1.562501 6.125000 +v 3.275894 1.562501 6.161612 +v 3.312506 1.562501 6.250000 +v 3.275894 1.562501 6.338388 +v 3.187506 1.562501 6.375000 +v 3.099118 1.562501 6.338388 +v 3.062506 1.562501 6.250000 +v 3.099118 1.562501 6.161612 +v 3.187506 0.875000 6.125000 +v 3.275894 0.875000 6.161612 +v 3.312506 0.875000 6.250000 +v 3.275894 0.875000 6.338388 +v 3.187506 0.875000 6.375000 +v 3.099118 0.875000 6.338388 +v 3.062506 0.875000 6.250000 +v 3.099118 0.875000 6.161612 +v 3.187506 1.562501 6.062500 +v 3.320088 1.562501 6.117417 +v 3.375006 1.562501 6.250000 +v 3.320088 1.562501 6.382583 +v 3.187506 1.562501 6.437500 +v 3.054923 1.562501 6.382583 +v 3.000006 1.562501 6.250000 +v 3.054923 1.562501 6.117417 +v 3.187506 0.875000 6.062500 +v 3.320088 0.875000 6.117417 +v 3.375006 0.875000 6.250000 +v 3.320088 0.875000 6.382583 +v 3.187506 0.875000 6.437500 +v 3.054923 0.875000 6.382583 +v 3.000006 0.875000 6.250000 +v 3.054923 0.875000 6.117417 +v -3.187505 1.562501 6.437500 +v -3.320088 1.562501 6.382583 +v -3.375005 1.562501 6.250000 +v -3.320088 1.562501 6.117417 +v -3.187505 1.562501 6.062500 +v -3.054923 1.562501 6.117417 +v -3.000005 1.562501 6.250000 +v -3.054923 1.562501 6.382583 +v -3.187506 0.875001 6.437500 +v -3.320087 0.875001 6.382583 +v -3.375006 0.875001 6.250000 +v -3.320087 0.875001 6.117417 +v -3.187506 0.875001 6.062500 +v -3.054923 0.875001 6.117417 +v -3.000006 0.875001 6.250000 +v -3.054923 0.875001 6.382583 +v -3.187505 1.562501 7.937500 +v -3.320088 1.562501 7.882583 +v -3.375005 1.562501 7.750000 +v -3.320088 1.562501 7.617417 +v -3.187505 1.562501 7.562500 +v -3.054923 1.562501 7.617417 +v -3.000005 1.562501 7.750000 +v -3.054923 1.562501 7.882583 +v -3.187506 0.875001 7.937500 +v -3.320087 0.875001 7.882583 +v -3.375006 0.875001 7.750000 +v -3.320087 0.875001 7.617417 +v -3.187506 0.875001 7.562500 +v -3.054923 0.875001 7.617417 +v -3.000006 0.875001 7.750000 +v -3.054923 0.875001 7.882583 +v 3.187506 1.562501 7.562500 +v 3.320088 1.562501 7.617417 +v 3.375006 1.562501 7.750000 +v 3.320088 1.562501 7.882583 +v 3.187506 1.562501 7.937500 +v 3.054923 1.562501 7.882583 +v 3.000006 1.562501 7.750000 +v 3.054923 1.562501 7.617417 +v 3.187506 0.875000 7.562500 +v 3.320088 0.875000 7.617417 +v 3.375006 0.875000 7.750000 +v 3.320088 0.875000 7.882583 +v 3.187506 0.875000 7.937500 +v 3.054923 0.875000 7.882583 +v 3.000006 0.875000 7.750000 +v 3.054923 0.875000 7.617417 +v 3.187506 1.562501 6.062500 +v 3.320088 1.562501 6.117417 +v 3.375006 1.562501 6.250000 +v 3.320088 1.562501 6.382583 +v 3.187506 1.562501 6.437500 +v 3.054923 1.562501 6.382583 +v 3.000006 1.562501 6.250000 +v 3.054923 1.562501 6.117417 +v 3.187506 0.875000 6.062500 +v 3.320088 0.875000 6.117417 +v 3.375006 0.875000 6.250000 +v 3.320088 0.875000 6.382583 +v 3.187506 0.875000 6.437500 +v 3.054923 0.875000 6.382583 +v 3.000006 0.875000 6.250000 +v 3.054923 0.875000 6.117417 +vt 0.837349 0.641860 +vt 0.846816 0.637209 +vt 0.846816 0.641860 +vt 0.821859 0.637209 +vt 0.830465 0.632558 +vt 0.831325 0.637209 +vt 0.837349 0.632558 +vt 0.837349 0.637209 +vt 0.827022 0.665116 +vt 0.837349 0.669767 +vt 0.827883 0.669767 +vt 0.837349 0.665116 +vt 0.846816 0.669767 +vt 0.837349 0.669767 +vt 0.826162 0.660465 +vt 0.836489 0.665116 +vt 0.825301 0.655814 +vt 0.835628 0.660465 +vt 0.837349 0.660465 +vt 0.846816 0.665116 +vt 0.837349 0.655814 +vt 0.846816 0.660465 +vt 0.824441 0.651163 +vt 0.834768 0.655814 +vt 0.837349 0.651163 +vt 0.846816 0.655814 +vt 0.833046 0.646512 +vt 0.833907 0.651163 +vt 0.837349 0.646512 +vt 0.846816 0.651163 +vt 0.822719 0.641860 +vt 0.823580 0.646512 +vt 0.846816 0.646512 +vt 0.832186 0.641860 +vt 0.837349 0.641860 +vt 0.846816 0.637209 +vt 0.846816 0.641860 +vt 0.837349 0.632558 +vt 0.837349 0.637209 +vt 0.837349 0.665116 +vt 0.846816 0.669767 +vt 0.837349 0.669767 +vt 0.837349 0.660465 +vt 0.846816 0.665116 +vt 0.837349 0.655814 +vt 0.846816 0.660465 +vt 0.837349 0.651163 +vt 0.846816 0.655814 +vt 0.837349 0.646512 +vt 0.846816 0.651163 +vt 0.846816 0.646512 +vt 0.820998 0.632558 +vt 0.831325 0.637209 +vt 0.821859 0.637209 +vt 0.827022 0.665116 +vt 0.837349 0.669767 +vt 0.827883 0.669767 +vt 0.826162 0.660465 +vt 0.836489 0.665116 +vt 0.825301 0.655814 +vt 0.835628 0.660465 +vt 0.824441 0.651163 +vt 0.834768 0.655814 +vt 0.823580 0.646512 +vt 0.833907 0.651163 +vt 0.822719 0.641860 +vt 0.833046 0.646512 +vt 0.832186 0.641860 +vt 0.837349 0.637209 +vt 0.846816 0.641860 +vt 0.837349 0.641860 +vt 0.820998 0.632558 +vt 0.831325 0.637209 +vt 0.821859 0.637209 +vt 0.837349 0.632558 +vt 0.846816 0.637209 +vt 0.827022 0.665116 +vt 0.837349 0.669767 +vt 0.827883 0.669767 +vt 0.837349 0.665116 +vt 0.846816 0.669767 +vt 0.837349 0.669767 +vt 0.826162 0.660465 +vt 0.836489 0.665116 +vt 0.825301 0.655814 +vt 0.835628 0.660465 +vt 0.837349 0.660465 +vt 0.846816 0.665116 +vt 0.837349 0.655814 +vt 0.846816 0.660465 +vt 0.824441 0.651163 +vt 0.834768 0.655814 +vt 0.837349 0.651163 +vt 0.846816 0.655814 +vt 0.823580 0.646512 +vt 0.833907 0.651163 +vt 0.837349 0.646512 +vt 0.846816 0.651163 +vt 0.822719 0.641860 +vt 0.833046 0.646512 +vt 0.846816 0.646512 +vt 0.832186 0.641860 +vt 0.837349 0.637209 +vt 0.846816 0.641860 +vt 0.837349 0.641860 +vt 0.837349 0.632558 +vt 0.846816 0.637209 +vt 0.837349 0.665116 +vt 0.846816 0.669767 +vt 0.837349 0.669767 +vt 0.837349 0.660465 +vt 0.846816 0.665116 +vt 0.837349 0.655814 +vt 0.846816 0.660465 +vt 0.837349 0.651163 +vt 0.846816 0.655814 +vt 0.837349 0.646512 +vt 0.846816 0.651163 +vt 0.846816 0.646512 +vt 0.820998 0.632558 +vt 0.831325 0.637209 +vt 0.821859 0.637209 +vt 0.827022 0.665116 +vt 0.837349 0.669767 +vt 0.827883 0.669767 +vt 0.826162 0.660465 +vt 0.836489 0.665116 +vt 0.825301 0.655814 +vt 0.835628 0.660465 +vt 0.824441 0.651163 +vt 0.834768 0.655814 +vt 0.823580 0.646512 +vt 0.833907 0.651163 +vt 0.822719 0.641860 +vt 0.833046 0.646512 +vt 0.832186 0.641860 +vt 0.821859 0.637209 +vt 0.830465 0.632558 +vt 0.820998 0.632558 +vt 0.837349 0.669767 +vt 0.827022 0.665116 +vt 0.827883 0.669767 +vt 0.836489 0.665116 +vt 0.826162 0.660465 +vt 0.835628 0.660465 +vt 0.825301 0.655814 +vt 0.834768 0.655814 +vt 0.824441 0.651163 +vt 0.833046 0.646512 +vt 0.823580 0.646512 +vt 0.822719 0.641860 +vt 0.832186 0.641860 +vt 0.831325 0.637209 +vt 0.820998 0.632558 +vt 0.821859 0.637209 +vt 0.837349 0.669767 +vt 0.827022 0.665116 +vt 0.827883 0.669767 +vt 0.836489 0.665116 +vt 0.826162 0.660465 +vt 0.835628 0.660465 +vt 0.825301 0.655814 +vt 0.834768 0.655814 +vt 0.824441 0.651163 +vt 0.833907 0.651163 +vt 0.823580 0.646512 +vt 0.833046 0.646512 +vt 0.822719 0.641860 +vt 0.831325 0.637209 +vt 0.820998 0.632558 +vt 0.821859 0.637209 +vt 0.837349 0.669767 +vt 0.827022 0.665116 +vt 0.827883 0.669767 +vt 0.836489 0.665116 +vt 0.826162 0.660465 +vt 0.835628 0.660465 +vt 0.825301 0.655814 +vt 0.834768 0.655814 +vt 0.824441 0.651163 +vt 0.833907 0.651163 +vt 0.823580 0.646512 +vt 0.833046 0.646512 +vt 0.822719 0.641860 +vt 0.832186 0.641860 +vt 0.831325 0.637209 +vt 0.820998 0.632558 +vt 0.821859 0.637209 +vt 0.837349 0.669767 +vt 0.827022 0.665116 +vt 0.827883 0.669767 +vt 0.836489 0.665116 +vt 0.826162 0.660465 +vt 0.835628 0.660465 +vt 0.825301 0.655814 +vt 0.834768 0.655814 +vt 0.824441 0.651163 +vt 0.833907 0.651163 +vt 0.823580 0.646512 +vt 0.833046 0.646512 +vt 0.822719 0.641860 +vt 0.832186 0.641860 +vt 0.820998 0.632558 +vt 0.846816 0.632558 +vt 0.846816 0.632558 +vt 0.830465 0.632558 +vt 0.830465 0.632558 +vt 0.846816 0.632558 +vt 0.846816 0.632558 +vt 0.830465 0.632558 +vt 0.831325 0.637209 +vt 0.833907 0.651163 +vt 0.830465 0.632558 +vt 0.832186 0.641860 +vt 0.830465 0.632558 +vt 0.830465 0.632558 +vn -0.0000 -0.0000 -1.0000 +vn 0.7071 -0.0000 -0.7071 +vn 1.0000 -0.0000 -0.0000 +vn 0.7071 -0.0000 0.7071 +vn 0.0000 -0.0000 1.0000 +vn -0.7071 0.0000 0.7071 +vn -1.0000 0.0000 -0.0000 +vn -0.7071 0.0000 -0.7071 +s 1 +f 1725/2473/188 1742/2474/189 1741/2475/188 +f 1718/2476/189 1735/2477/190 1734/2478/189 +f 1727/2479/190 1742/2474/189 1726/2480/189 +f 1720/2481/191 1735/2482/190 1719/2483/190 +f 1728/2484/191 1743/2485/190 1727/2486/190 +f 1713/2487/192 1736/2488/191 1720/2481/191 +f 1714/2489/193 1729/2490/192 1713/2487/192 +f 1721/2491/192 1744/2492/191 1728/2484/191 +f 1722/2493/193 1737/2494/192 1721/2491/192 +f 1715/2495/194 1730/2496/193 1714/2489/193 +f 1723/2497/194 1738/2498/193 1722/2493/193 +f 1715/2495/194 1732/2499/195 1731/2500/194 +f 1724/2501/195 1739/2502/194 1723/2497/194 +f 1717/2503/188 1732/2499/195 1716/2504/195 +f 1725/2473/188 1740/2505/195 1724/2501/195 +f 1718/2476/189 1733/2506/188 1717/2503/188 +f 1749/2507/188 1758/2508/189 1757/2509/188 +f 1751/2510/190 1758/2508/189 1750/2511/189 +f 1752/2512/191 1759/2513/190 1751/2514/190 +f 1745/2515/192 1760/2516/191 1752/2512/191 +f 1746/2517/193 1753/2518/192 1745/2515/192 +f 1747/2519/194 1754/2520/193 1746/2517/193 +f 1748/2521/195 1755/2522/194 1747/2519/194 +f 1749/2507/188 1756/2523/195 1748/2521/195 +f 1767/2524/190 1774/2525/189 1766/2526/189 +f 1768/2527/191 1775/2528/190 1767/2529/190 +f 1761/2530/192 1776/2531/191 1768/2527/191 +f 1762/2532/193 1769/2533/192 1761/2530/192 +f 1763/2534/194 1770/2535/193 1762/2532/193 +f 1764/2536/195 1771/2537/194 1763/2534/194 +f 1765/2538/188 1772/2539/195 1764/2536/195 +f 1766/2526/189 1773/2540/188 1765/2538/188 +f 1790/2541/193 1805/2542/192 1789/2543/192 +f 1783/2544/194 1798/2545/193 1782/2546/193 +f 1791/2547/194 1806/2548/193 1790/2541/193 +f 1784/2549/195 1799/2550/194 1783/2551/194 +f 1792/2552/195 1807/2553/194 1791/2554/194 +f 1777/2555/188 1800/2556/195 1784/2549/195 +f 1778/2557/189 1793/2558/188 1777/2555/188 +f 1785/2559/188 1808/2560/195 1792/2552/195 +f 1786/2561/189 1801/2562/188 1785/2559/188 +f 1779/2563/190 1794/2564/189 1778/2557/189 +f 1787/2565/190 1802/2566/189 1786/2561/189 +f 1780/2567/191 1795/2568/190 1779/2563/190 +f 1788/2569/191 1803/2570/190 1787/2565/190 +f 1781/2571/192 1796/2572/191 1780/2567/191 +f 1789/2543/192 1804/2573/191 1788/2569/191 +f 1782/2546/193 1797/2574/192 1781/2571/192 +f 1814/2575/193 1821/2576/192 1813/2577/192 +f 1815/2578/194 1822/2579/193 1814/2575/193 +f 1816/2580/195 1823/2581/194 1815/2582/194 +f 1809/2583/188 1824/2584/195 1816/2580/195 +f 1810/2585/189 1817/2586/188 1809/2583/188 +f 1811/2587/190 1818/2588/189 1810/2585/189 +f 1812/2589/191 1819/2590/190 1811/2587/190 +f 1813/2577/192 1820/2591/191 1812/2589/191 +f 1831/2592/194 1838/2593/193 1830/2594/193 +f 1832/2595/195 1839/2596/194 1831/2597/194 +f 1825/2598/188 1840/2599/195 1832/2595/195 +f 1826/2600/189 1833/2601/188 1825/2598/188 +f 1827/2602/190 1834/2603/189 1826/2600/189 +f 1828/2604/191 1835/2605/190 1827/2602/190 +f 1829/2606/192 1836/2607/191 1828/2604/191 +f 1830/2594/193 1837/2608/192 1829/2606/192 +f 1846/2609/193 1855/2610/194 1847/2611/194 +f 1855/2612/194 1848/2613/195 1847/2614/194 +f 1856/2615/195 1841/2616/188 1848/2613/195 +f 1849/2617/188 1842/2618/189 1841/2616/188 +f 1850/2619/189 1843/2620/190 1842/2618/189 +f 1843/2620/190 1852/2621/191 1844/2622/191 +f 1852/2621/191 1845/2623/192 1844/2622/191 +f 1853/2624/192 1846/2609/193 1845/2623/192 +f 1870/2625/193 1863/2626/194 1862/2627/193 +f 1871/2628/194 1864/2629/195 1863/2630/194 +f 1872/2631/195 1857/2632/188 1864/2629/195 +f 1865/2633/188 1858/2634/189 1857/2632/188 +f 1866/2635/189 1859/2636/190 1858/2634/189 +f 1867/2637/190 1860/2638/191 1859/2636/190 +f 1868/2639/191 1861/2640/192 1860/2638/191 +f 1861/2640/192 1870/2625/193 1862/2627/193 +f 1886/2641/189 1879/2642/190 1878/2643/189 +f 1887/2644/190 1880/2645/191 1879/2646/190 +f 1888/2647/191 1873/2648/192 1880/2645/191 +f 1881/2649/192 1874/2650/193 1873/2648/192 +f 1882/2651/193 1875/2652/194 1874/2650/193 +f 1883/2653/194 1876/2654/195 1875/2652/194 +f 1884/2655/195 1877/2656/188 1876/2654/195 +f 1885/2657/188 1878/2643/189 1877/2656/188 +f 1902/2658/189 1895/2659/190 1894/2660/189 +f 1903/2661/190 1896/2662/191 1895/2663/190 +f 1904/2664/191 1889/2665/192 1896/2662/191 +f 1897/2666/192 1890/2667/193 1889/2665/192 +f 1898/2668/193 1891/2669/194 1890/2667/193 +f 1899/2670/194 1892/2671/195 1891/2669/194 +f 1900/2672/195 1893/2673/188 1892/2671/195 +f 1901/2674/188 1894/2660/189 1893/2673/188 +f 1725/2473/188 1726/2480/189 1742/2474/189 +f 1718/2476/189 1719/2675/190 1735/2477/190 +f 1727/2479/190 1743/2676/190 1742/2474/189 +f 1720/2481/191 1736/2488/191 1735/2482/190 +f 1728/2484/191 1744/2492/191 1743/2485/190 +f 1713/2487/192 1729/2490/192 1736/2488/191 +f 1714/2489/193 1730/2496/193 1729/2490/192 +f 1721/2491/192 1737/2494/192 1744/2492/191 +f 1722/2493/193 1738/2498/193 1737/2494/192 +f 1715/2495/194 1731/2500/194 1730/2496/193 +f 1723/2497/194 1739/2502/194 1738/2498/193 +f 1715/2495/194 1716/2504/195 1732/2499/195 +f 1724/2501/195 1740/2505/195 1739/2502/194 +f 1717/2503/188 1733/2506/188 1732/2499/195 +f 1725/2473/188 1741/2475/188 1740/2505/195 +f 1718/2476/189 1734/2478/189 1733/2506/188 +f 1749/2507/188 1750/2511/189 1758/2508/189 +f 1751/2510/190 1759/2677/190 1758/2508/189 +f 1752/2512/191 1760/2516/191 1759/2513/190 +f 1745/2515/192 1753/2518/192 1760/2516/191 +f 1746/2517/193 1754/2520/193 1753/2518/192 +f 1747/2519/194 1755/2522/194 1754/2520/193 +f 1748/2521/195 1756/2523/195 1755/2522/194 +f 1749/2507/188 1757/2509/188 1756/2523/195 +f 1767/2524/190 1775/2678/190 1774/2525/189 +f 1768/2527/191 1776/2531/191 1775/2528/190 +f 1761/2530/192 1769/2533/192 1776/2531/191 +f 1762/2532/193 1770/2535/193 1769/2533/192 +f 1763/2534/194 1771/2537/194 1770/2535/193 +f 1764/2536/195 1772/2539/195 1771/2537/194 +f 1765/2538/188 1773/2540/188 1772/2539/195 +f 1766/2526/189 1774/2525/189 1773/2540/188 +f 1790/2541/193 1806/2548/193 1805/2542/192 +f 1783/2544/194 1799/2679/194 1798/2545/193 +f 1791/2547/194 1807/2680/194 1806/2548/193 +f 1784/2549/195 1800/2556/195 1799/2550/194 +f 1792/2552/195 1808/2560/195 1807/2553/194 +f 1777/2555/188 1793/2558/188 1800/2556/195 +f 1778/2557/189 1794/2564/189 1793/2558/188 +f 1785/2559/188 1801/2562/188 1808/2560/195 +f 1786/2561/189 1802/2566/189 1801/2562/188 +f 1779/2563/190 1795/2568/190 1794/2564/189 +f 1787/2565/190 1803/2570/190 1802/2566/189 +f 1780/2567/191 1796/2572/191 1795/2568/190 +f 1788/2569/191 1804/2573/191 1803/2570/190 +f 1781/2571/192 1797/2574/192 1796/2572/191 +f 1789/2543/192 1805/2542/192 1804/2573/191 +f 1782/2546/193 1798/2545/193 1797/2574/192 +f 1814/2575/193 1822/2579/193 1821/2576/192 +f 1815/2578/194 1823/2681/194 1822/2579/193 +f 1816/2580/195 1824/2584/195 1823/2581/194 +f 1809/2583/188 1817/2586/188 1824/2584/195 +f 1810/2585/189 1818/2588/189 1817/2586/188 +f 1811/2587/190 1819/2590/190 1818/2588/189 +f 1812/2589/191 1820/2591/191 1819/2590/190 +f 1813/2577/192 1821/2576/192 1820/2591/191 +f 1831/2592/194 1839/2682/194 1838/2593/193 +f 1832/2595/195 1840/2599/195 1839/2596/194 +f 1825/2598/188 1833/2601/188 1840/2599/195 +f 1826/2600/189 1834/2603/189 1833/2601/188 +f 1827/2602/190 1835/2605/190 1834/2603/189 +f 1828/2604/191 1836/2607/191 1835/2605/190 +f 1829/2606/192 1837/2608/192 1836/2607/191 +f 1830/2594/193 1838/2593/193 1837/2608/192 +f 1846/2609/193 1854/2683/193 1855/2610/194 +f 1855/2612/194 1856/2615/195 1848/2613/195 +f 1856/2615/195 1849/2617/188 1841/2616/188 +f 1849/2617/188 1850/2619/189 1842/2618/189 +f 1850/2619/189 1851/2684/190 1843/2620/190 +f 1843/2620/190 1851/2684/190 1852/2621/191 +f 1852/2621/191 1853/2624/192 1845/2623/192 +f 1853/2624/192 1854/2683/193 1846/2609/193 +f 1870/2625/193 1871/2685/194 1863/2626/194 +f 1871/2628/194 1872/2631/195 1864/2629/195 +f 1872/2631/195 1865/2633/188 1857/2632/188 +f 1865/2633/188 1866/2635/189 1858/2634/189 +f 1866/2635/189 1867/2637/190 1859/2636/190 +f 1867/2637/190 1868/2639/191 1860/2638/191 +f 1868/2639/191 1869/2686/192 1861/2640/192 +f 1861/2640/192 1869/2686/192 1870/2625/193 +f 1886/2641/189 1887/2687/190 1879/2642/190 +f 1887/2644/190 1888/2647/191 1880/2645/191 +f 1888/2647/191 1881/2649/192 1873/2648/192 +f 1881/2649/192 1882/2651/193 1874/2650/193 +f 1882/2651/193 1883/2653/194 1875/2652/194 +f 1883/2653/194 1884/2655/195 1876/2654/195 +f 1884/2655/195 1885/2657/188 1877/2656/188 +f 1885/2657/188 1886/2641/189 1878/2643/189 +f 1902/2658/189 1903/2688/190 1895/2659/190 +f 1903/2661/190 1904/2664/191 1896/2662/191 +f 1904/2664/191 1897/2666/192 1889/2665/192 +f 1897/2666/192 1898/2668/193 1890/2667/193 +f 1898/2668/193 1899/2670/194 1891/2669/194 +f 1899/2670/194 1900/2672/195 1892/2671/195 +f 1900/2672/195 1901/2674/188 1893/2673/188 +f 1901/2674/188 1902/2658/189 1894/2660/189 +o SuspensionTop +v -3.187505 5.437495 7.562500 +v -3.320088 5.437495 7.617417 +v -3.375005 5.437495 7.750000 +v -3.320088 5.437495 7.882583 +v -3.187505 5.437495 7.937500 +v -3.054923 5.437495 7.882583 +v -3.000005 5.437495 7.750000 +v -3.054923 5.437495 7.617417 +v -3.187505 5.437495 7.625000 +v -3.275893 5.437495 7.661612 +v -3.312505 5.437495 7.750000 +v -3.275893 5.437495 7.838388 +v -3.187505 5.437495 7.875000 +v -3.099117 5.437495 7.838388 +v -3.062505 5.437495 7.750000 +v -3.099117 5.437495 7.661612 +v -3.187505 6.124996 7.562500 +v -3.320088 6.124996 7.617417 +v -3.375005 6.124996 7.750000 +v -3.320088 6.124996 7.882583 +v -3.187505 6.124996 7.937500 +v -3.054923 6.124996 7.882583 +v -3.000005 6.124996 7.750000 +v -3.054923 6.124996 7.617417 +v -3.187505 6.124996 7.625000 +v -3.275893 6.124996 7.661612 +v -3.312505 6.124996 7.750000 +v -3.275893 6.124996 7.838388 +v -3.187505 6.124996 7.875000 +v -3.099117 6.124996 7.838388 +v -3.062505 6.124996 7.750000 +v -3.099117 6.124996 7.661612 +v -3.187505 5.437495 6.125000 +v -3.275893 5.437495 6.161612 +v -3.312505 5.437495 6.250000 +v -3.275893 5.437495 6.338388 +v -3.187505 5.437495 6.375000 +v -3.099117 5.437495 6.338388 +v -3.062505 5.437495 6.250000 +v -3.099117 5.437495 6.161612 +v -3.187505 6.124996 6.125000 +v -3.275893 6.124996 6.161612 +v -3.312505 6.124996 6.250000 +v -3.275893 6.124996 6.338388 +v -3.187505 6.124996 6.375000 +v -3.099117 6.124996 6.338388 +v -3.062505 6.124996 6.250000 +v -3.099117 6.124996 6.161612 +v -3.187505 5.437495 6.062500 +v -3.320088 5.437495 6.117417 +v -3.375005 5.437495 6.250000 +v -3.320088 5.437495 6.382583 +v -3.187505 5.437495 6.437500 +v -3.054923 5.437495 6.382583 +v -3.000005 5.437495 6.250000 +v -3.054923 5.437495 6.117417 +v -3.187505 6.124996 6.062500 +v -3.320088 6.124996 6.117417 +v -3.375005 6.124996 6.250000 +v -3.320088 6.124996 6.382583 +v -3.187505 6.124996 6.437500 +v -3.054923 6.124996 6.382583 +v -3.000005 6.124996 6.250000 +v -3.054923 6.124996 6.117417 +v 3.187506 5.437495 6.437500 +v 3.320088 5.437495 6.382583 +v 3.375006 5.437495 6.250000 +v 3.320088 5.437495 6.117417 +v 3.187506 5.437495 6.062500 +v 3.054923 5.437495 6.117417 +v 3.000006 5.437495 6.250000 +v 3.054923 5.437495 6.382583 +v 3.187506 5.437495 6.375000 +v 3.275894 5.437495 6.338388 +v 3.312506 5.437495 6.250000 +v 3.275894 5.437495 6.161612 +v 3.187506 5.437495 6.125000 +v 3.099118 5.437495 6.161612 +v 3.062506 5.437495 6.250000 +v 3.099118 5.437495 6.338388 +v 3.187507 6.124994 6.437500 +v 3.320088 6.124994 6.382583 +v 3.375007 6.124994 6.250000 +v 3.320088 6.124994 6.117417 +v 3.187507 6.124994 6.062500 +v 3.054924 6.124994 6.117417 +v 3.000007 6.124994 6.250000 +v 3.054924 6.124994 6.382583 +v 3.187507 6.124994 6.375000 +v 3.275894 6.124994 6.338388 +v 3.312507 6.124994 6.250000 +v 3.275894 6.124994 6.161612 +v 3.187507 6.124994 6.125000 +v 3.099118 6.124994 6.161612 +v 3.062507 6.124994 6.250000 +v 3.099118 6.124994 6.338388 +v 3.187506 5.437495 7.875000 +v 3.275894 5.437495 7.838388 +v 3.312506 5.437495 7.750000 +v 3.275894 5.437495 7.661612 +v 3.187506 5.437495 7.625000 +v 3.099118 5.437495 7.661612 +v 3.062506 5.437495 7.750000 +v 3.099118 5.437495 7.838388 +v 3.187507 6.124994 7.875000 +v 3.275894 6.124994 7.838388 +v 3.312507 6.124994 7.750000 +v 3.275894 6.124994 7.661612 +v 3.187507 6.124994 7.625000 +v 3.099118 6.124994 7.661612 +v 3.062507 6.124994 7.750000 +v 3.099118 6.124994 7.838388 +v 3.187506 5.437495 7.937500 +v 3.320088 5.437495 7.882583 +v 3.375006 5.437495 7.750000 +v 3.320088 5.437495 7.617417 +v 3.187506 5.437495 7.562500 +v 3.054923 5.437495 7.617417 +v 3.000006 5.437495 7.750000 +v 3.054923 5.437495 7.882583 +v 3.187507 6.124994 7.937500 +v 3.320088 6.124994 7.882583 +v 3.375007 6.124994 7.750000 +v 3.320088 6.124994 7.617417 +v 3.187507 6.124994 7.562500 +v 3.054924 6.124994 7.617417 +v 3.000007 6.124994 7.750000 +v 3.054924 6.124994 7.882583 +v -3.187505 5.437495 7.562500 +v -3.320088 5.437495 7.617417 +v -3.375005 5.437495 7.750000 +v -3.320088 5.437495 7.882583 +v -3.187505 5.437495 7.937500 +v -3.054923 5.437495 7.882583 +v -3.000005 5.437495 7.750000 +v -3.054923 5.437495 7.617417 +v -3.187505 6.124996 7.562500 +v -3.320088 6.124996 7.617417 +v -3.375005 6.124996 7.750000 +v -3.320088 6.124996 7.882583 +v -3.187505 6.124996 7.937500 +v -3.054923 6.124996 7.882583 +v -3.000005 6.124996 7.750000 +v -3.054923 6.124996 7.617417 +v -3.187505 5.437495 6.062500 +v -3.320088 5.437495 6.117417 +v -3.375005 5.437495 6.250000 +v -3.320088 5.437495 6.382583 +v -3.187505 5.437495 6.437500 +v -3.054923 5.437495 6.382583 +v -3.000005 5.437495 6.250000 +v -3.054923 5.437495 6.117417 +v -3.187505 6.124996 6.062500 +v -3.320088 6.124996 6.117417 +v -3.375005 6.124996 6.250000 +v -3.320088 6.124996 6.382583 +v -3.187505 6.124996 6.437500 +v -3.054923 6.124996 6.382583 +v -3.000005 6.124996 6.250000 +v -3.054923 6.124996 6.117417 +v 3.187506 5.437495 6.437500 +v 3.320088 5.437495 6.382583 +v 3.375006 5.437495 6.250000 +v 3.320088 5.437495 6.117417 +v 3.187506 5.437495 6.062500 +v 3.054923 5.437495 6.117417 +v 3.000006 5.437495 6.250000 +v 3.054923 5.437495 6.382583 +v 3.187507 6.124994 6.437500 +v 3.320088 6.124994 6.382583 +v 3.375007 6.124994 6.250000 +v 3.320088 6.124994 6.117417 +v 3.187507 6.124994 6.062500 +v 3.054924 6.124994 6.117417 +v 3.000007 6.124994 6.250000 +v 3.054924 6.124994 6.382583 +v 3.187506 5.437495 7.937500 +v 3.320088 5.437495 7.882583 +v 3.375006 5.437495 7.750000 +v 3.320088 5.437495 7.617417 +v 3.187506 5.437495 7.562500 +v 3.054923 5.437495 7.617417 +v 3.000006 5.437495 7.750000 +v 3.054923 5.437495 7.882583 +v 3.187507 6.124994 7.937500 +v 3.320088 6.124994 7.882583 +v 3.375007 6.124994 7.750000 +v 3.320088 6.124994 7.617417 +v 3.187507 6.124994 7.562500 +v 3.054924 6.124994 7.617417 +v 3.000007 6.124994 7.750000 +v 3.054924 6.124994 7.882583 +vt 0.837349 0.637209 +vt 0.846816 0.641860 +vt 0.837349 0.641860 +vt 0.820998 0.632558 +vt 0.831325 0.637209 +vt 0.821859 0.637209 +vt 0.837349 0.632558 +vt 0.846816 0.637209 +vt 0.827022 0.665116 +vt 0.837349 0.669767 +vt 0.827883 0.669767 +vt 0.837349 0.665116 +vt 0.846816 0.669767 +vt 0.837349 0.669767 +vt 0.826162 0.660465 +vt 0.836489 0.665116 +vt 0.825301 0.655814 +vt 0.835628 0.660465 +vt 0.837349 0.660465 +vt 0.846816 0.665116 +vt 0.837349 0.655814 +vt 0.846816 0.660465 +vt 0.824441 0.651163 +vt 0.834768 0.655814 +vt 0.837349 0.651163 +vt 0.846816 0.655814 +vt 0.823580 0.646512 +vt 0.833907 0.651163 +vt 0.837349 0.646512 +vt 0.846816 0.651163 +vt 0.822719 0.641860 +vt 0.833046 0.646512 +vt 0.846816 0.646512 +vt 0.832186 0.641860 +vt 0.837349 0.637209 +vt 0.846816 0.641860 +vt 0.837349 0.641860 +vt 0.837349 0.632558 +vt 0.846816 0.637209 +vt 0.837349 0.665116 +vt 0.846816 0.669767 +vt 0.837349 0.669767 +vt 0.837349 0.660465 +vt 0.846816 0.665116 +vt 0.837349 0.655814 +vt 0.846816 0.660465 +vt 0.837349 0.651163 +vt 0.846816 0.655814 +vt 0.837349 0.646512 +vt 0.846816 0.651163 +vt 0.846816 0.646512 +vt 0.820998 0.632558 +vt 0.831325 0.637209 +vt 0.821859 0.637209 +vt 0.827022 0.665116 +vt 0.837349 0.669767 +vt 0.827883 0.669767 +vt 0.826162 0.660465 +vt 0.836489 0.665116 +vt 0.825301 0.655814 +vt 0.835628 0.660465 +vt 0.824441 0.651163 +vt 0.834768 0.655814 +vt 0.823580 0.646512 +vt 0.833907 0.651163 +vt 0.822719 0.641860 +vt 0.833046 0.646512 +vt 0.832186 0.641860 +vt 0.837349 0.641860 +vt 0.846816 0.637209 +vt 0.846816 0.641860 +vt 0.821859 0.637209 +vt 0.830465 0.632558 +vt 0.831325 0.637209 +vt 0.837349 0.637209 +vt 0.846816 0.632558 +vt 0.827022 0.665116 +vt 0.837349 0.669767 +vt 0.827883 0.669767 +vt 0.837349 0.665116 +vt 0.846816 0.669767 +vt 0.837349 0.669767 +vt 0.826162 0.660465 +vt 0.836489 0.665116 +vt 0.825301 0.655814 +vt 0.835628 0.660465 +vt 0.837349 0.660465 +vt 0.846816 0.665116 +vt 0.837349 0.655814 +vt 0.846816 0.660465 +vt 0.824441 0.651163 +vt 0.834768 0.655814 +vt 0.837349 0.651163 +vt 0.846816 0.655814 +vt 0.833046 0.646512 +vt 0.833907 0.651163 +vt 0.837349 0.646512 +vt 0.846816 0.651163 +vt 0.823580 0.646512 +vt 0.832186 0.641860 +vt 0.846816 0.646512 +vt 0.822719 0.641860 +vt 0.837349 0.641860 +vt 0.846816 0.637209 +vt 0.846816 0.641860 +vt 0.837349 0.637209 +vt 0.846816 0.632558 +vt 0.837349 0.665116 +vt 0.846816 0.669767 +vt 0.837349 0.669767 +vt 0.837349 0.660465 +vt 0.846816 0.665116 +vt 0.837349 0.655814 +vt 0.846816 0.660465 +vt 0.837349 0.651163 +vt 0.846816 0.655814 +vt 0.846816 0.646512 +vt 0.846816 0.651163 +vt 0.837349 0.646512 +vt 0.821859 0.637209 +vt 0.830465 0.632558 +vt 0.831325 0.637209 +vt 0.827022 0.665116 +vt 0.837349 0.669767 +vt 0.827883 0.669767 +vt 0.826162 0.660465 +vt 0.836489 0.665116 +vt 0.825301 0.655814 +vt 0.835628 0.660465 +vt 0.824441 0.651163 +vt 0.834768 0.655814 +vt 0.833046 0.646512 +vt 0.833907 0.651163 +vt 0.822719 0.641860 +vt 0.823580 0.646512 +vt 0.832186 0.641860 +vt 0.831325 0.637209 +vt 0.820998 0.632558 +vt 0.821859 0.637209 +vt 0.837349 0.669767 +vt 0.827022 0.665116 +vt 0.827883 0.669767 +vt 0.836489 0.665116 +vt 0.826162 0.660465 +vt 0.835628 0.660465 +vt 0.825301 0.655814 +vt 0.834768 0.655814 +vt 0.824441 0.651163 +vt 0.833907 0.651163 +vt 0.823580 0.646512 +vt 0.833046 0.646512 +vt 0.822719 0.641860 +vt 0.832186 0.641860 +vt 0.831325 0.637209 +vt 0.820998 0.632558 +vt 0.821859 0.637209 +vt 0.837349 0.669767 +vt 0.827022 0.665116 +vt 0.827883 0.669767 +vt 0.836489 0.665116 +vt 0.826162 0.660465 +vt 0.835628 0.660465 +vt 0.825301 0.655814 +vt 0.834768 0.655814 +vt 0.824441 0.651163 +vt 0.833907 0.651163 +vt 0.823580 0.646512 +vt 0.833046 0.646512 +vt 0.822719 0.641860 +vt 0.832186 0.641860 +vt 0.821859 0.637209 +vt 0.830465 0.632558 +vt 0.820998 0.632558 +vt 0.837349 0.669767 +vt 0.827022 0.665116 +vt 0.827883 0.669767 +vt 0.836489 0.665116 +vt 0.826162 0.660465 +vt 0.835628 0.660465 +vt 0.825301 0.655814 +vt 0.834768 0.655814 +vt 0.824441 0.651163 +vt 0.833046 0.646512 +vt 0.823580 0.646512 +vt 0.832186 0.641860 +vt 0.822719 0.641860 +vt 0.831325 0.637209 +vt 0.821859 0.637209 +vt 0.830465 0.632558 +vt 0.820998 0.632558 +vt 0.837349 0.669767 +vt 0.827022 0.665116 +vt 0.827883 0.669767 +vt 0.836489 0.665116 +vt 0.826162 0.660465 +vt 0.835628 0.660465 +vt 0.825301 0.655814 +vt 0.834768 0.655814 +vt 0.824441 0.651163 +vt 0.833046 0.646512 +vt 0.823580 0.646512 +vt 0.822719 0.641860 +vt 0.831325 0.637209 +vt 0.830465 0.632558 +vt 0.846816 0.632558 +vt 0.846816 0.632558 +vt 0.830465 0.632558 +vt 0.820998 0.632558 +vt 0.837349 0.632558 +vt 0.837349 0.632558 +vt 0.820998 0.632558 +vt 0.830465 0.632558 +vt 0.830465 0.632558 +vt 0.833907 0.651163 +vt 0.833907 0.651163 +vt 0.832186 0.641860 +vn 0.7071 0.0000 0.7071 +vn -0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.0000 0.0000 -1.0000 +vn -0.7071 0.0000 -0.7071 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.0000 0.7071 +s 1 +f 1918/2689/196 1933/2690/197 1917/2691/197 +f 1911/2692/198 1926/2693/196 1910/2694/196 +f 1919/2695/198 1934/2696/196 1918/2689/196 +f 1912/2697/199 1927/2698/198 1911/2699/198 +f 1920/2700/199 1935/2701/198 1919/2702/198 +f 1905/2703/200 1928/2704/199 1912/2697/199 +f 1906/2705/201 1921/2706/200 1905/2703/200 +f 1913/2707/200 1936/2708/199 1920/2700/199 +f 1914/2709/201 1929/2710/200 1913/2707/200 +f 1907/2711/202 1922/2712/201 1906/2705/201 +f 1915/2713/202 1930/2714/201 1914/2709/201 +f 1908/2715/203 1923/2716/202 1907/2711/202 +f 1916/2717/203 1931/2718/202 1915/2713/202 +f 1909/2719/197 1924/2720/203 1908/2715/203 +f 1917/2691/197 1932/2721/203 1916/2717/203 +f 1910/2694/196 1925/2722/197 1909/2719/197 +f 1942/2723/196 1949/2724/197 1941/2725/197 +f 1943/2726/198 1950/2727/196 1942/2723/196 +f 1944/2728/199 1951/2729/198 1943/2730/198 +f 1937/2731/200 1952/2732/199 1944/2728/199 +f 1938/2733/201 1945/2734/200 1937/2731/200 +f 1939/2735/202 1946/2736/201 1938/2733/201 +f 1940/2737/203 1947/2738/202 1939/2735/202 +f 1941/2725/197 1948/2739/203 1940/2737/203 +f 1959/2740/198 1966/2741/196 1958/2742/196 +f 1960/2743/199 1967/2744/198 1959/2745/198 +f 1953/2746/200 1968/2747/199 1960/2743/199 +f 1954/2748/201 1961/2749/200 1953/2746/200 +f 1955/2750/202 1962/2751/201 1954/2748/201 +f 1956/2752/203 1963/2753/202 1955/2750/202 +f 1957/2754/197 1964/2755/203 1956/2752/203 +f 1958/2742/196 1965/2756/197 1957/2754/197 +f 1981/2757/200 1998/2758/201 1997/2759/200 +f 1974/2760/201 1991/2761/202 1990/2762/201 +f 1982/2763/201 1999/2764/202 1998/2758/201 +f 1976/2765/203 1991/2766/202 1975/2767/202 +f 1984/2768/203 1999/2769/202 1983/2770/202 +f 1969/2771/197 1992/2772/203 1976/2765/203 +f 1970/2773/196 1985/2774/197 1969/2771/197 +f 1977/2775/197 2000/2776/203 1984/2768/203 +f 1978/2777/196 1993/2778/197 1977/2775/197 +f 1971/2779/198 1986/2780/196 1970/2773/196 +f 1979/2781/198 1994/2782/196 1978/2777/196 +f 1971/2779/198 1988/2783/199 1987/2784/198 +f 1980/2785/199 1995/2786/198 1979/2781/198 +f 1972/2787/199 1989/2788/200 1988/2783/199 +f 1980/2785/199 1997/2759/200 1996/2789/199 +f 1973/2790/200 1990/2762/201 1989/2788/200 +f 2005/2791/200 2014/2792/201 2013/2793/200 +f 2006/2794/201 2015/2795/202 2014/2792/201 +f 2008/2796/203 2015/2797/202 2007/2798/202 +f 2001/2799/197 2016/2800/203 2008/2796/203 +f 2002/2801/196 2009/2802/197 2001/2799/197 +f 2003/2803/198 2010/2804/196 2002/2801/196 +f 2003/2803/198 2012/2805/199 2011/2806/198 +f 2004/2807/199 2013/2793/200 2012/2805/199 +f 2022/2808/201 2031/2809/202 2030/2810/201 +f 2024/2811/203 2031/2812/202 2023/2813/202 +f 2017/2814/197 2032/2815/203 2024/2811/203 +f 2018/2816/196 2025/2817/197 2017/2814/197 +f 2019/2818/198 2026/2819/196 2018/2816/196 +f 2019/2818/198 2028/2820/199 2027/2821/198 +f 2021/2822/200 2028/2820/199 2020/2823/199 +f 2021/2822/200 2030/2810/201 2029/2824/200 +f 2046/2825/201 2039/2826/202 2038/2827/201 +f 2047/2828/202 2040/2829/203 2039/2830/202 +f 2048/2831/203 2033/2832/197 2040/2829/203 +f 2041/2833/197 2034/2834/196 2033/2832/197 +f 2042/2835/196 2035/2836/198 2034/2834/196 +f 2043/2837/198 2036/2838/199 2035/2836/198 +f 2044/2839/199 2037/2840/200 2036/2838/199 +f 2045/2841/200 2038/2827/201 2037/2840/200 +f 2062/2842/201 2055/2843/202 2054/2844/201 +f 2063/2845/202 2056/2846/203 2055/2847/202 +f 2064/2848/203 2049/2849/197 2056/2846/203 +f 2057/2850/197 2050/2851/196 2049/2849/197 +f 2058/2852/196 2051/2853/198 2050/2851/196 +f 2059/2854/198 2052/2855/199 2051/2853/198 +f 2060/2856/199 2053/2857/200 2052/2855/199 +f 2061/2858/200 2054/2844/201 2053/2857/200 +f 2070/2859/196 2079/2860/198 2071/2861/198 +f 2079/2862/198 2072/2863/199 2071/2864/198 +f 2080/2865/199 2065/2866/200 2072/2863/199 +f 2073/2867/200 2066/2868/201 2065/2866/200 +f 2074/2869/201 2067/2870/202 2066/2868/201 +f 2067/2870/202 2076/2871/203 2068/2872/203 +f 2068/2872/203 2077/2873/197 2069/2874/197 +f 2069/2874/197 2078/2875/196 2070/2859/196 +f 2086/2876/196 2095/2877/198 2087/2878/198 +f 2095/2879/198 2088/2880/199 2087/2881/198 +f 2096/2882/199 2081/2883/200 2088/2880/199 +f 2089/2884/200 2082/2885/201 2081/2883/200 +f 2090/2886/201 2083/2887/202 2082/2885/201 +f 2083/2887/202 2092/2888/203 2084/2889/203 +f 2092/2888/203 2085/2890/197 2084/2889/203 +f 2085/2890/197 2094/2891/196 2086/2876/196 +f 1918/2689/196 1934/2696/196 1933/2690/197 +f 1911/2692/198 1927/2892/198 1926/2693/196 +f 1919/2695/198 1935/2893/198 1934/2696/196 +f 1912/2697/199 1928/2704/199 1927/2698/198 +f 1920/2700/199 1936/2708/199 1935/2701/198 +f 1905/2703/200 1921/2706/200 1928/2704/199 +f 1906/2705/201 1922/2712/201 1921/2706/200 +f 1913/2707/200 1929/2710/200 1936/2708/199 +f 1914/2709/201 1930/2714/201 1929/2710/200 +f 1907/2711/202 1923/2716/202 1922/2712/201 +f 1915/2713/202 1931/2718/202 1930/2714/201 +f 1908/2715/203 1924/2720/203 1923/2716/202 +f 1916/2717/203 1932/2721/203 1931/2718/202 +f 1909/2719/197 1925/2722/197 1924/2720/203 +f 1917/2691/197 1933/2690/197 1932/2721/203 +f 1910/2694/196 1926/2693/196 1925/2722/197 +f 1942/2723/196 1950/2727/196 1949/2724/197 +f 1943/2726/198 1951/2894/198 1950/2727/196 +f 1944/2728/199 1952/2732/199 1951/2729/198 +f 1937/2731/200 1945/2734/200 1952/2732/199 +f 1938/2733/201 1946/2736/201 1945/2734/200 +f 1939/2735/202 1947/2738/202 1946/2736/201 +f 1940/2737/203 1948/2739/203 1947/2738/202 +f 1941/2725/197 1949/2724/197 1948/2739/203 +f 1959/2740/198 1967/2895/198 1966/2741/196 +f 1960/2743/199 1968/2747/199 1967/2744/198 +f 1953/2746/200 1961/2749/200 1968/2747/199 +f 1954/2748/201 1962/2751/201 1961/2749/200 +f 1955/2750/202 1963/2753/202 1962/2751/201 +f 1956/2752/203 1964/2755/203 1963/2753/202 +f 1957/2754/197 1965/2756/197 1964/2755/203 +f 1958/2742/196 1966/2741/196 1965/2756/197 +f 1981/2757/200 1982/2763/201 1998/2758/201 +f 1974/2760/201 1975/2896/202 1991/2761/202 +f 1982/2763/201 1983/2897/202 1999/2764/202 +f 1976/2765/203 1992/2772/203 1991/2766/202 +f 1984/2768/203 2000/2776/203 1999/2769/202 +f 1969/2771/197 1985/2774/197 1992/2772/203 +f 1970/2773/196 1986/2780/196 1985/2774/197 +f 1977/2775/197 1993/2778/197 2000/2776/203 +f 1978/2777/196 1994/2782/196 1993/2778/197 +f 1971/2779/198 1987/2784/198 1986/2780/196 +f 1979/2781/198 1995/2786/198 1994/2782/196 +f 1971/2779/198 1972/2787/199 1988/2783/199 +f 1980/2785/199 1996/2789/199 1995/2786/198 +f 1972/2787/199 1973/2790/200 1989/2788/200 +f 1980/2785/199 1981/2757/200 1997/2759/200 +f 1973/2790/200 1974/2760/201 1990/2762/201 +f 2005/2791/200 2006/2794/201 2014/2792/201 +f 2006/2794/201 2007/2898/202 2015/2795/202 +f 2008/2796/203 2016/2800/203 2015/2797/202 +f 2001/2799/197 2009/2802/197 2016/2800/203 +f 2002/2801/196 2010/2804/196 2009/2802/197 +f 2003/2803/198 2011/2806/198 2010/2804/196 +f 2003/2803/198 2004/2807/199 2012/2805/199 +f 2004/2807/199 2005/2791/200 2013/2793/200 +f 2022/2808/201 2023/2899/202 2031/2809/202 +f 2024/2811/203 2032/2815/203 2031/2812/202 +f 2017/2814/197 2025/2817/197 2032/2815/203 +f 2018/2816/196 2026/2819/196 2025/2817/197 +f 2019/2818/198 2027/2821/198 2026/2819/196 +f 2019/2818/198 2020/2823/199 2028/2820/199 +f 2021/2822/200 2029/2824/200 2028/2820/199 +f 2021/2822/200 2022/2808/201 2030/2810/201 +f 2046/2825/201 2047/2900/202 2039/2826/202 +f 2047/2828/202 2048/2831/203 2040/2829/203 +f 2048/2831/203 2041/2833/197 2033/2832/197 +f 2041/2833/197 2042/2835/196 2034/2834/196 +f 2042/2835/196 2043/2837/198 2035/2836/198 +f 2043/2837/198 2044/2839/199 2036/2838/199 +f 2044/2839/199 2045/2841/200 2037/2840/200 +f 2045/2841/200 2046/2825/201 2038/2827/201 +f 2062/2842/201 2063/2901/202 2055/2843/202 +f 2063/2845/202 2064/2848/203 2056/2846/203 +f 2064/2848/203 2057/2850/197 2049/2849/197 +f 2057/2850/197 2058/2852/196 2050/2851/196 +f 2058/2852/196 2059/2854/198 2051/2853/198 +f 2059/2854/198 2060/2856/199 2052/2855/199 +f 2060/2856/199 2061/2858/200 2053/2857/200 +f 2061/2858/200 2062/2842/201 2054/2844/201 +f 2070/2859/196 2078/2875/196 2079/2860/198 +f 2079/2862/198 2080/2865/199 2072/2863/199 +f 2080/2865/199 2073/2867/200 2065/2866/200 +f 2073/2867/200 2074/2869/201 2066/2868/201 +f 2074/2869/201 2075/2902/202 2067/2870/202 +f 2067/2870/202 2075/2902/202 2076/2871/203 +f 2068/2872/203 2076/2871/203 2077/2873/197 +f 2069/2874/197 2077/2873/197 2078/2875/196 +f 2086/2876/196 2094/2891/196 2095/2877/198 +f 2095/2879/198 2096/2882/199 2088/2880/199 +f 2096/2882/199 2089/2884/200 2081/2883/200 +f 2089/2884/200 2090/2886/201 2082/2885/201 +f 2090/2886/201 2091/2903/202 2083/2887/202 +f 2083/2887/202 2091/2903/202 2092/2888/203 +f 2092/2888/203 2093/2904/197 2085/2890/197 +f 2085/2890/197 2093/2904/197 2094/2891/196 +o SuspensionCoverBack +v -0.500000 6.500000 -4.000000 +v -0.676777 6.426777 -4.000000 +v -0.750000 6.250000 -4.000000 +v -0.676777 6.073223 -4.000000 +v -0.500000 6.000000 -4.000000 +v -0.323223 6.073223 -4.000000 +v -0.250000 6.250000 -4.000000 +v -0.323223 6.426777 -4.000000 +v -0.500000 6.437500 -4.000000 +v -0.632583 6.382583 -4.000000 +v -0.687500 6.250000 -4.000000 +v -0.632583 6.117417 -4.000000 +v -0.500000 6.062500 -4.000000 +v -0.367417 6.117417 -4.000000 +v -0.312500 6.250000 -4.000000 +v -0.367417 6.382583 -4.000000 +v 0.500000 6.500000 -4.000000 +v 0.323223 6.426777 -4.000000 +v 0.250000 6.250000 -4.000000 +v 0.323223 6.073223 -4.000000 +v 0.500000 6.000000 -4.000000 +v 0.676777 6.073223 -4.000000 +v 0.750000 6.250000 -4.000000 +v 0.676777 6.426777 -4.000000 +v 0.500000 6.437500 -4.000000 +v 0.367417 6.382583 -4.000000 +v 0.312500 6.250000 -4.000000 +v 0.367417 6.117417 -4.000000 +v 0.500000 6.062500 -4.000000 +v 0.632583 6.117417 -4.000000 +v 0.687500 6.250000 -4.000000 +v 0.632583 6.382583 -4.000000 +v -0.750000 6.750000 -5.500000 +v -0.926777 6.676777 -5.500000 +v -1.000000 6.500000 -5.500000 +v -0.926777 6.323223 -5.500000 +v -0.750000 6.250000 -5.500000 +v -0.573223 6.323223 -5.500000 +v -0.500000 6.500000 -5.500000 +v -0.573223 6.676777 -5.500000 +v -0.750000 6.687500 -5.500000 +v -0.882583 6.632583 -5.500000 +v -0.937500 6.500000 -5.500000 +v -0.882583 6.367417 -5.500000 +v -0.750000 6.312500 -5.500000 +v -0.617417 6.367417 -5.500000 +v -0.562500 6.500000 -5.500000 +v -0.617417 6.632583 -5.500000 +v 0.750000 6.750000 -5.500000 +v 0.573223 6.676777 -5.500000 +v 0.500000 6.500000 -5.500000 +v 0.573223 6.323223 -5.500000 +v 0.750000 6.250000 -5.500000 +v 0.926777 6.323223 -5.500000 +v 1.000000 6.500000 -5.500000 +v 0.926777 6.676777 -5.500000 +v 0.750000 6.687500 -5.500000 +v 0.617417 6.632583 -5.500000 +v 0.562500 6.500000 -5.500000 +v 0.617417 6.367417 -5.500000 +v 0.750000 6.312500 -5.500000 +v 0.882583 6.367417 -5.500000 +v 0.937500 6.500000 -5.500000 +v 0.882583 6.632583 -5.500000 +v -0.500000 6.500000 -4.000000 +v -0.676777 6.426777 -4.000000 +v -0.750000 6.250000 -4.000000 +v -0.676777 6.073223 -4.000000 +v -0.500000 6.000000 -4.000000 +v -0.323223 6.073223 -4.000000 +v -0.250000 6.250000 -4.000000 +v -0.323223 6.426777 -4.000000 +v 0.500000 6.500000 -4.000000 +v 0.323223 6.426777 -4.000000 +v 0.250000 6.250000 -4.000000 +v 0.323223 6.073223 -4.000000 +v 0.500000 6.000000 -4.000000 +v 0.676777 6.073223 -4.000000 +v 0.750000 6.250000 -4.000000 +v 0.676777 6.426777 -4.000000 +v -0.750000 6.750000 -5.500000 +v -0.926777 6.676777 -5.500000 +v -1.000000 6.500000 -5.500000 +v -0.926777 6.323223 -5.500000 +v -0.750000 6.250000 -5.500000 +v -0.573223 6.323223 -5.500000 +v -0.500000 6.500000 -5.500000 +v -0.573223 6.676777 -5.500000 +v 0.750000 6.750000 -5.500000 +v 0.573223 6.676777 -5.500000 +v 0.500000 6.500000 -5.500000 +v 0.573223 6.323223 -5.500000 +v 0.750000 6.250000 -5.500000 +v 0.926777 6.323223 -5.500000 +v 1.000000 6.500000 -5.500000 +v 0.926777 6.676777 -5.500000 +vt 0.873494 0.509302 +vt 0.853701 0.516279 +vt 0.852840 0.509302 +vt 0.878657 0.551163 +vt 0.858864 0.558140 +vt 0.858003 0.551163 +vt 0.874355 0.516279 +vt 0.854561 0.523256 +vt 0.872633 0.502326 +vt 0.852840 0.509302 +vt 0.851979 0.502326 +vt 0.875215 0.523256 +vt 0.855422 0.530233 +vt 0.873494 0.509302 +vt 0.853701 0.516279 +vt 0.872633 0.576744 +vt 0.851979 0.581395 +vt 0.851979 0.576744 +vt 0.874355 0.516279 +vt 0.854561 0.523256 +vt 0.872633 0.586047 +vt 0.851979 0.586047 +vt 0.876076 0.530233 +vt 0.855422 0.530233 +vt 0.872633 0.590698 +vt 0.851979 0.590698 +vt 0.851979 0.576744 +vt 0.872633 0.581395 +vt 0.851979 0.581395 +vt 0.872633 0.595349 +vt 0.851979 0.595349 +vt 0.872633 0.586047 +vt 0.851979 0.586047 +vt 0.851979 0.558140 +vt 0.872633 0.562791 +vt 0.851979 0.562791 +vt 0.872633 0.590698 +vt 0.851979 0.590698 +vt 0.851979 0.567442 +vt 0.876076 0.530233 +vt 0.856282 0.537209 +vt 0.851979 0.595349 +vt 0.872633 0.567442 +vt 0.851979 0.572093 +vt 0.877797 0.544186 +vt 0.857143 0.544186 +vt 0.872633 0.558140 +vt 0.851979 0.562791 +vt 0.851979 0.558140 +vt 0.872633 0.572093 +vt 0.878657 0.551163 +vt 0.858003 0.551163 +vt 0.872633 0.562791 +vt 0.851979 0.567442 +vt 0.876936 0.537209 +vt 0.856282 0.537209 +vt 0.879518 0.558140 +vt 0.858864 0.558140 +vt 0.872633 0.567442 +vt 0.851979 0.572093 +vt 0.877797 0.544186 +vt 0.857143 0.544186 +vt 0.851979 0.502326 +vt 0.872633 0.576744 +vt 0.853701 0.516279 +vt 0.873494 0.509302 +vt 0.852840 0.509302 +vt 0.858864 0.558140 +vt 0.878657 0.551163 +vt 0.858003 0.551163 +vt 0.854561 0.523256 +vt 0.874355 0.516279 +vt 0.852840 0.509302 +vt 0.872633 0.502326 +vt 0.851979 0.502326 +vt 0.855422 0.530233 +vt 0.875215 0.523256 +vt 0.853701 0.516279 +vt 0.873494 0.509302 +vt 0.854561 0.523256 +vt 0.874355 0.516279 +vt 0.876076 0.530233 +vt 0.875215 0.523256 +vt 0.856282 0.537209 +vt 0.876076 0.530233 +vt 0.877797 0.544186 +vt 0.876936 0.537209 +vt 0.857143 0.544186 +vt 0.878657 0.551163 +vt 0.855422 0.530233 +vt 0.876936 0.537209 +vt 0.858003 0.551163 +vt 0.879518 0.558140 +vt 0.856282 0.537209 +vt 0.877797 0.544186 +vt 0.851979 0.502326 +vt 0.872633 0.502326 +vt 0.857143 0.544186 +vt 0.879518 0.558140 +vt 0.872633 0.581395 +vt 0.875215 0.523256 +vt 0.872633 0.558140 +vt 0.876936 0.537209 +vt 0.872633 0.595349 +vt 0.872633 0.572093 +vt 0.872633 0.502326 +vt 0.879518 0.558140 +vt 0.858864 0.558140 +vn 0.6882 -0.6882 -0.2294 +vn 0.9847 -0.0369 -0.1703 +vn -0.6882 -0.6882 -0.2294 +vn -0.0369 -0.9847 -0.1703 +vn 0.9866 0.0416 -0.1575 +vn 0.7457 0.6662 -0.0133 +vn 0.0416 -0.9866 -0.1575 +vn 0.6662 -0.7457 -0.0133 +vn 0.6662 0.7457 0.0133 +vn 0.0416 0.9866 0.1575 +vn 0.7457 -0.6662 0.0133 +vn 0.9866 -0.0416 0.1575 +vn -0.0369 0.9847 0.1703 +vn -0.6882 0.6882 0.2294 +vn 0.9847 0.0369 0.1703 +vn 0.6882 0.6882 0.2294 +vn -0.9847 0.0369 0.1703 +vn -0.9866 -0.0416 0.1575 +vn 0.0369 0.9847 0.1703 +vn -0.0416 0.9866 0.1575 +vn -0.7457 -0.6662 0.0133 +vn -0.6662 -0.7457 -0.0133 +vn -0.6662 0.7457 0.0133 +vn -0.7457 0.6662 -0.0133 +vn -0.0416 -0.9866 -0.1575 +vn 0.0369 -0.9847 -0.1703 +vn -0.9866 0.0416 -0.1575 +vn -0.9847 -0.0369 -0.1703 +s 1 +f 2134/2905/204 2103/2906/205 2102/2907/204 +f 2148/2908/206 2117/2909/207 2116/2910/206 +f 2135/2911/208 2104/2912/209 2103/2906/205 +f 2149/2913/210 2118/2914/211 2117/2915/207 +f 2136/2916/212 2097/2917/213 2104/2912/209 +f 2150/2918/214 2119/2919/215 2118/2914/211 +f 2137/2920/216 2106/2921/217 2105/2922/213 +f 2151/2923/218 2120/2924/219 2119/2919/215 +f 2106/2921/217 2139/2925/220 2107/2926/221 +f 2120/2924/219 2145/2927/222 2113/2928/223 +f 2107/2926/221 2140/2929/224 2108/2930/225 +f 2121/2931/223 2154/2932/226 2122/2933/227 +f 2108/2930/225 2141/2934/228 2109/2935/229 +f 2122/2933/227 2155/2936/230 2123/2937/231 +f 2109/2938/229 2142/2939/204 2110/2940/204 +f 2123/2937/231 2156/2941/206 2124/2942/206 +f 2142/2939/204 2111/2943/205 2110/2940/204 +f 2129/2944/216 2098/2945/217 2097/2917/213 +f 2156/2941/206 2125/2946/207 2124/2942/206 +f 2143/2947/208 2112/2948/209 2111/2943/205 +f 2098/2945/217 2131/2949/220 2099/2950/221 +f 2157/2951/210 2126/2952/211 2125/2953/207 +f 2144/2954/212 2105/2922/213 2112/2948/209 +f 2099/2950/221 2132/2955/224 2100/2956/225 +f 2158/2957/214 2127/2958/215 2126/2952/211 +f 2113/2928/223 2146/2959/226 2114/2960/227 +f 2100/2956/225 2133/2961/228 2101/2962/229 +f 2159/2963/218 2128/2964/219 2127/2958/215 +f 2114/2960/227 2147/2965/230 2115/2966/231 +f 2101/2967/229 2134/2905/204 2102/2907/204 +f 2128/2964/219 2153/2968/222 2121/2931/223 +f 2115/2966/231 2148/2908/206 2116/2910/206 +f 2167/2969/220 2182/2970/217 2166/2971/217 +f 2173/2972/222 2188/2973/219 2172/2974/219 +f 2168/2975/224 2183/2976/221 2167/2969/220 +f 2174/2977/226 2189/2978/223 2173/2979/222 +f 2161/2980/228 2184/2981/225 2168/2975/224 +f 2175/2982/230 2190/2983/227 2174/2977/226 +f 2176/2984/206 2191/2985/231 2175/2982/230 +f 2176/2984/206 2185/2986/207 2192/2987/206 +f 2162/2988/204 2177/2989/229 2161/2980/228 +f 2162/2988/204 2179/2990/205 2178/2991/204 +f 2163/2992/208 2180/2993/209 2179/2990/205 +f 2169/2994/210 2186/2995/211 2185/2986/207 +f 2164/2996/212 2181/2997/213 2180/2993/209 +f 2170/2998/214 2187/2999/215 2186/2995/211 +f 2165/3000/216 2182/2970/217 2181/3001/213 +f 2171/3002/218 2188/2973/219 2187/2999/215 +f 2134/2905/204 2135/2911/208 2103/2906/205 +f 2148/2908/206 2149/3003/210 2117/2909/207 +f 2135/2911/208 2136/2916/212 2104/2912/209 +f 2149/2913/210 2150/2918/214 2118/2914/211 +f 2136/2916/212 2129/2944/216 2097/2917/213 +f 2150/2918/214 2151/2923/218 2119/2919/215 +f 2137/2920/216 2138/3004/217 2106/2921/217 +f 2151/2923/218 2152/3005/219 2120/2924/219 +f 2106/2921/217 2138/3004/217 2139/2925/220 +f 2120/2924/219 2152/3005/219 2145/2927/222 +f 2107/2926/221 2139/2925/220 2140/2929/224 +f 2121/2931/223 2153/2968/222 2154/2932/226 +f 2108/2930/225 2140/2929/224 2141/2934/228 +f 2122/2933/227 2154/2932/226 2155/2936/230 +f 2109/2938/229 2141/3006/228 2142/2939/204 +f 2123/2937/231 2155/2936/230 2156/2941/206 +f 2142/2939/204 2143/2947/208 2111/2943/205 +f 2129/2944/216 2130/3007/217 2098/2945/217 +f 2156/2941/206 2157/3008/210 2125/2946/207 +f 2143/2947/208 2144/2954/212 2112/2948/209 +f 2098/2945/217 2130/3007/217 2131/2949/220 +f 2157/2951/210 2158/2957/214 2126/2952/211 +f 2144/2954/212 2137/2920/216 2105/2922/213 +f 2099/2950/221 2131/2949/220 2132/2955/224 +f 2158/2957/214 2159/2963/218 2127/2958/215 +f 2113/2928/223 2145/2927/222 2146/2959/226 +f 2100/2956/225 2132/2955/224 2133/2961/228 +f 2159/2963/218 2160/3009/219 2128/2964/219 +f 2114/2960/227 2146/2959/226 2147/2965/230 +f 2101/2967/229 2133/3010/228 2134/2905/204 +f 2128/2964/219 2160/3009/219 2153/2968/222 +f 2115/2966/231 2147/2965/230 2148/2908/206 +f 2167/2969/220 2183/2976/221 2182/2970/217 +f 2173/2972/222 2189/3011/223 2188/2973/219 +f 2168/2975/224 2184/2981/225 2183/2976/221 +f 2174/2977/226 2190/2983/227 2189/2978/223 +f 2161/2980/228 2177/2989/229 2184/2981/225 +f 2175/2982/230 2191/2985/231 2190/2983/227 +f 2176/2984/206 2192/2987/206 2191/2985/231 +f 2176/2984/206 2169/2994/210 2185/2986/207 +f 2162/2988/204 2178/2991/204 2177/2989/229 +f 2162/2988/204 2163/2992/208 2179/2990/205 +f 2163/2992/208 2164/2996/212 2180/2993/209 +f 2169/2994/210 2170/2998/214 2186/2995/211 +f 2164/2996/212 2165/3012/216 2181/2997/213 +f 2170/2998/214 2171/3002/218 2187/2999/215 +f 2165/3000/216 2166/2971/217 2182/2970/217 +f 2171/3002/218 2172/2974/219 2188/2973/219 +o Server4 +v 3.375000 1.000000 -8.875000 +v 2.625000 1.000000 -8.875000 +v 3.375000 1.000000 -8.125000 +v 2.625000 1.000000 -8.125000 +v 2.625000 1.250000 -8.875000 +v 2.625000 1.250000 -8.125000 +v 3.375000 1.250000 -8.125000 +v 3.375000 1.250000 -8.875000 +vt 0.746127 0.920930 +vt 0.756454 0.948837 +vt 0.746127 0.948837 +vt 0.759897 0.948837 +vt 0.756454 0.920930 +vt 0.759897 0.920930 +vt 0.742685 0.920930 +vt 0.742685 0.948837 +vt 0.756454 0.911628 +vt 0.746127 0.911628 +vt 0.746127 0.958140 +vt 0.756454 0.958140 +vn 0.0000 1.0000 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 +s off +f 2199/3013/232 2197/3014/232 2198/3015/232 +f 2194/3016/233 2200/3017/233 2193/3018/233 +f 2195/3019/234 2198/3015/234 2196/3020/234 +f 2193/3021/235 2199/3013/235 2195/3022/235 +f 2196/3023/236 2197/3014/236 2194/3024/236 +f 2199/3013/232 2200/3017/232 2197/3014/232 +f 2194/3016/233 2197/3014/233 2200/3017/233 +f 2195/3019/234 2199/3013/234 2198/3015/234 +f 2193/3021/235 2200/3017/235 2199/3013/235 +f 2196/3023/236 2198/3015/236 2197/3014/236 +o Server3 +v 3.375000 1.312500 -8.875000 +v 2.625000 1.312500 -8.875000 +v 3.375000 1.312500 -8.125000 +v 2.625000 1.312500 -8.125000 +v 2.625000 1.562500 -8.875000 +v 2.625000 1.562500 -8.125000 +v 3.375000 1.562500 -8.125000 +v 3.375000 1.562500 -8.875000 +vt 0.763339 0.948837 +vt 0.773666 0.976744 +vt 0.763339 0.976744 +vt 0.777108 0.976744 +vt 0.773666 0.948837 +vt 0.777108 0.948837 +vt 0.759897 0.948837 +vt 0.759897 0.976744 +vt 0.773666 0.939535 +vt 0.763339 0.939535 +vt 0.763339 0.986046 +vt 0.773666 0.986046 +vt 0.773666 0.911628 +vt 0.763339 0.911628 +vn 0.0000 1.0000 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 -1.0000 0.0000 +s off +f 2207/3025/237 2205/3026/237 2206/3027/237 +f 2202/3028/238 2208/3029/238 2201/3030/238 +f 2203/3031/239 2206/3027/239 2204/3032/239 +f 2201/3033/240 2207/3025/240 2203/3034/240 +f 2204/3035/241 2205/3026/241 2202/3036/241 +f 2203/3034/242 2202/3037/242 2201/3033/242 +f 2207/3025/237 2208/3029/237 2205/3026/237 +f 2202/3028/238 2205/3026/238 2208/3029/238 +f 2203/3031/239 2207/3025/239 2206/3027/239 +f 2201/3033/240 2208/3029/240 2207/3025/240 +f 2204/3035/241 2206/3027/241 2205/3026/241 +f 2203/3034/242 2204/3038/242 2202/3037/242 +o Server2 +v 3.375000 1.625000 -8.875000 +v 2.625000 1.625000 -8.875000 +v 3.375000 1.625000 -8.125000 +v 2.625000 1.625000 -8.125000 +v 2.625000 1.875000 -8.875000 +v 2.625000 1.875000 -8.125000 +v 3.375000 1.875000 -8.125000 +v 3.375000 1.875000 -8.875000 +vt 0.780551 0.948837 +vt 0.790878 0.976744 +vt 0.780551 0.976744 +vt 0.794320 0.976744 +vt 0.790878 0.948837 +vt 0.794320 0.948837 +vt 0.777108 0.948837 +vt 0.777108 0.976744 +vt 0.790878 0.939535 +vt 0.780551 0.939535 +vt 0.780551 0.986046 +vt 0.790878 0.986046 +vt 0.790878 0.911628 +vt 0.780551 0.911628 +vn 0.0000 1.0000 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 -1.0000 0.0000 +s off +f 2215/3039/243 2213/3040/243 2214/3041/243 +f 2210/3042/244 2216/3043/244 2209/3044/244 +f 2211/3045/245 2214/3041/245 2212/3046/245 +f 2209/3047/246 2215/3039/246 2211/3048/246 +f 2212/3049/247 2213/3040/247 2210/3050/247 +f 2211/3048/248 2210/3051/248 2209/3047/248 +f 2215/3039/243 2216/3043/243 2213/3040/243 +f 2210/3042/244 2213/3040/244 2216/3043/244 +f 2211/3045/245 2215/3039/245 2214/3041/245 +f 2209/3047/246 2216/3043/246 2215/3039/246 +f 2212/3049/247 2214/3041/247 2213/3040/247 +f 2211/3048/248 2212/3052/248 2210/3051/248 +o Server1 +v 3.375000 1.937500 -8.875000 +v 2.625000 1.937500 -8.875000 +v 3.375000 1.937500 -8.125000 +v 2.625000 1.937500 -8.125000 +v 2.625000 2.187500 -8.875000 +v 2.625000 2.187500 -8.125000 +v 3.375000 2.187500 -8.125000 +v 3.375000 2.187500 -8.875000 +vt 0.797762 0.948837 +vt 0.808089 0.976744 +vt 0.797762 0.976744 +vt 0.811532 0.976744 +vt 0.808089 0.948837 +vt 0.811532 0.948837 +vt 0.794320 0.948837 +vt 0.794320 0.976744 +vt 0.808089 0.939535 +vt 0.797762 0.939535 +vt 0.797762 0.986046 +vt 0.808089 0.986046 +vt 0.808089 0.911628 +vt 0.797762 0.911628 +vn 0.0000 1.0000 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 -1.0000 0.0000 +s off +f 2223/3053/249 2221/3054/249 2222/3055/249 +f 2218/3056/250 2224/3057/250 2217/3058/250 +f 2219/3059/251 2222/3055/251 2220/3060/251 +f 2217/3061/252 2223/3053/252 2219/3062/252 +f 2220/3063/253 2221/3054/253 2218/3064/253 +f 2219/3062/254 2218/3065/254 2217/3061/254 +f 2223/3053/249 2224/3057/249 2221/3054/249 +f 2218/3056/250 2221/3054/250 2224/3057/250 +f 2219/3059/251 2223/3053/251 2222/3055/251 +f 2217/3061/252 2224/3057/252 2223/3053/252 +f 2220/3063/253 2222/3055/253 2221/3054/253 +f 2219/3062/254 2220/3066/254 2218/3065/254 +o Monitor +v 2.625000 1.250000 -7.875000 +v 2.625000 1.250000 -7.125000 +v 2.625000 2.000000 -7.875000 +v 2.625000 2.000000 -7.125000 +v 3.375000 1.250000 -7.125000 +v 3.375000 1.250000 -7.875000 +v 3.375000 2.000000 -7.125000 +v 3.375000 2.000000 -7.875000 +v 3.375000 1.312500 -7.187500 +v 3.375000 1.312500 -7.812500 +v 3.375000 1.937500 -7.187500 +v 3.375000 1.937500 -7.812500 +v 3.312500 1.312500 -7.187500 +v 3.312500 1.312500 -7.812500 +v 3.312500 1.937500 -7.187500 +v 3.312500 1.937500 -7.812500 +vt 0.678141 0.953488 +vt 0.688468 0.925581 +vt 0.688468 0.953488 +vt 0.698795 0.925581 +vt 0.709122 0.953488 +vt 0.698795 0.953488 +vt 0.698795 0.981395 +vt 0.709122 0.981395 +vt 0.719449 0.953488 +vt 0.709122 0.925581 +vt 0.719449 0.925581 +vt 0.687608 0.923256 +vt 0.678141 0.925581 +vt 0.679002 0.923256 +vt 0.708262 0.923256 +vt 0.699656 0.923256 +vt 0.718589 0.923256 +vt 0.709983 0.923256 +vt 0.697935 0.923256 +vt 0.689329 0.923256 +vt 0.687608 0.920930 +vt 0.718589 0.920930 +vt 0.708262 0.920930 +vt 0.697935 0.920930 +vt 0.679002 0.920930 +vt 0.709983 0.920930 +vt 0.699656 0.920930 +vt 0.689329 0.920930 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +s off +f 2225/3067/255 2229/3068/255 2226/3069/255 +f 2231/3070/256 2227/3071/256 2228/3072/256 +f 2226/3073/257 2227/3071/257 2225/3074/257 +f 2225/3075/258 2232/3076/258 2230/3077/258 +f 2229/3068/259 2228/3072/259 2226/3069/259 +f 2233/3078/260 2230/3079/260 2234/3080/260 +f 2236/3081/260 2231/3070/260 2235/3082/260 +f 2234/3083/260 2232/3076/260 2236/3084/260 +f 2235/3085/260 2229/3068/260 2233/3086/260 +f 2234/3080/256 2237/3087/256 2233/3078/256 +f 2236/3084/259 2238/3088/259 2234/3083/259 +f 2235/3082/255 2240/3089/255 2236/3081/255 +f 2233/3086/258 2239/3090/258 2235/3085/258 +f 2225/3067/255 2230/3079/255 2229/3068/255 +f 2231/3070/256 2232/3076/256 2227/3071/256 +f 2226/3073/257 2228/3072/257 2227/3071/257 +f 2225/3075/258 2227/3071/258 2232/3076/258 +f 2229/3068/259 2231/3070/259 2228/3072/259 +f 2233/3078/260 2229/3068/260 2230/3079/260 +f 2236/3081/260 2232/3076/260 2231/3070/260 +f 2234/3083/260 2230/3077/260 2232/3076/260 +f 2235/3085/260 2231/3070/260 2229/3068/260 +f 2234/3080/256 2238/3091/256 2237/3087/256 +f 2236/3084/259 2240/3092/259 2238/3088/259 +f 2235/3082/255 2239/3093/255 2240/3089/255 +f 2233/3086/258 2237/3094/258 2239/3090/258 +o Screen +v 3.312500 1.312500 -7.187500 +v 3.312500 1.312500 -7.812500 +v 3.312500 1.937500 -7.187500 +v 3.312500 1.937500 -7.812500 +v 3.375000 1.437500 -7.312500 +v 3.375000 1.437500 -7.687500 +v 3.375000 1.812500 -7.312500 +v 3.375000 1.812500 -7.687500 +vt 0.799999 0.200000 +vt 0.199999 0.800000 +vt 0.199999 0.200000 +vt 1.000000 0.000000 +vt 0.799999 0.800000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vn 0.9688 -0.1753 -0.1753 +vn 0.9688 0.1753 0.1753 +vn 0.9688 -0.1753 0.1753 +vn 0.9428 -0.2357 -0.2357 +vn 0.9688 0.1753 -0.1753 +vn 0.9428 0.2357 0.2357 +vn 0.9428 0.2357 -0.2357 +vn 0.9428 -0.2357 0.2357 +s 1 +f 2246/3095/261 2247/3096/262 2245/3097/263 +f 2245/3097/263 2242/3098/264 2246/3095/261 +f 2248/3099/265 2243/3100/266 2247/3096/262 +f 2246/3095/261 2244/3101/267 2248/3099/265 +f 2247/3096/262 2241/3102/268 2245/3097/263 +f 2246/3095/261 2248/3099/265 2247/3096/262 +f 2245/3097/263 2241/3102/268 2242/3098/264 +f 2248/3099/265 2244/3101/267 2243/3100/266 +f 2246/3095/261 2242/3098/264 2244/3101/267 +f 2247/3096/262 2243/3100/266 2241/3102/268 +o SuspensionCoverFront +v -0.500000 6.500000 0.500000 +v -0.676777 6.426777 0.500000 +v -0.750000 6.250000 0.500000 +v -0.676777 6.073223 0.500000 +v -0.500000 6.000000 0.500000 +v -0.323223 6.073223 0.500000 +v -0.250000 6.250000 0.500000 +v -0.323223 6.426777 0.500000 +v -0.500000 6.437500 0.500000 +v -0.632583 6.382583 0.500000 +v -0.687500 6.250000 0.500000 +v -0.632583 6.117417 0.500000 +v -0.500000 6.062500 0.500000 +v -0.367417 6.117417 0.500000 +v -0.312500 6.250000 0.500000 +v -0.367417 6.382583 0.500000 +v -1.000000 6.750000 3.500000 +v -1.176777 6.676777 3.500000 +v -1.250000 6.500000 3.500000 +v -1.176777 6.323223 3.500000 +v -1.000000 6.250000 3.500000 +v -0.823223 6.323223 3.500000 +v -0.750000 6.500000 3.500000 +v -0.823223 6.676777 3.500000 +v -1.000000 6.687500 3.500000 +v -1.132583 6.632583 3.500000 +v -1.187500 6.500000 3.500000 +v -1.132583 6.367417 3.500000 +v -1.000000 6.312500 3.500000 +v -0.867417 6.367417 3.500000 +v -0.812500 6.500000 3.500000 +v -0.867417 6.632583 3.500000 +v 0.500000 6.500000 0.500000 +v 0.323223 6.426777 0.500000 +v 0.250000 6.250000 0.500000 +v 0.323223 6.073223 0.500000 +v 0.500000 6.000000 0.500000 +v 0.676777 6.073223 0.500000 +v 0.750000 6.250000 0.500000 +v 0.676777 6.426777 0.500000 +v 1.000000 6.750000 3.500000 +v 0.823223 6.676777 3.500000 +v 0.750000 6.500000 3.500000 +v 0.823223 6.323223 3.500000 +v 1.000000 6.250000 3.500000 +v 1.176777 6.323223 3.500000 +v 1.250000 6.500000 3.500000 +v 1.176777 6.676777 3.500000 +v 0.500000 6.437500 0.500000 +v 0.367417 6.382583 0.500000 +v 0.312500 6.250000 0.500000 +v 0.367417 6.117417 0.500000 +v 0.500000 6.062500 0.500000 +v 0.632583 6.117417 0.500000 +v 0.687500 6.250000 0.500000 +v 0.632583 6.382583 0.500000 +v 1.000000 6.687500 3.500000 +v 0.867417 6.632583 3.500000 +v 0.812500 6.500000 3.500000 +v 0.867417 6.367417 3.500000 +v 1.000000 6.312500 3.500000 +v 1.132583 6.367417 3.500000 +v 1.187500 6.500000 3.500000 +v 1.132583 6.632583 3.500000 +v -0.500000 6.500000 0.500000 +v -0.676777 6.426777 0.500000 +v -0.750000 6.250000 0.500000 +v -0.676777 6.073223 0.500000 +v -0.500000 6.000000 0.500000 +v -0.323223 6.073223 0.500000 +v -0.250000 6.250000 0.500000 +v -0.323223 6.426777 0.500000 +v -1.000000 6.750000 3.500000 +v -1.176777 6.676777 3.500000 +v -1.250000 6.500000 3.500000 +v -1.176777 6.323223 3.500000 +v -1.000000 6.250000 3.500000 +v -0.823223 6.323223 3.500000 +v -0.750000 6.500000 3.500000 +v -0.823223 6.676777 3.500000 +v 0.500000 6.500000 0.500000 +v 0.323223 6.426777 0.500000 +v 0.250000 6.250000 0.500000 +v 0.323223 6.073223 0.500000 +v 0.500000 6.000000 0.500000 +v 0.676777 6.073223 0.500000 +v 0.750000 6.250000 0.500000 +v 0.676777 6.426777 0.500000 +v 1.000000 6.750000 3.500000 +v 0.823223 6.676777 3.500000 +v 0.750000 6.500000 3.500000 +v 0.823223 6.323223 3.500000 +v 1.000000 6.250000 3.500000 +v 1.176777 6.323223 3.500000 +v 1.250000 6.500000 3.500000 +v 1.176777 6.676777 3.500000 +vt 0.847676 0.560465 +vt 0.805508 0.553488 +vt 0.846816 0.553488 +vt 0.845095 0.609302 +vt 0.803787 0.604651 +vt 0.845095 0.604651 +vt 0.848537 0.567442 +vt 0.806368 0.560465 +vt 0.849398 0.574419 +vt 0.807229 0.567442 +vt 0.845095 0.613953 +vt 0.803787 0.609302 +vt 0.845095 0.618605 +vt 0.803787 0.613953 +vt 0.808950 0.581395 +vt 0.808089 0.574419 +vt 0.803787 0.623256 +vt 0.803787 0.618605 +vt 0.850258 0.581395 +vt 0.809811 0.588372 +vt 0.845095 0.623256 +vt 0.803787 0.627907 +vt 0.851119 0.588372 +vt 0.810671 0.595349 +vt 0.845095 0.627907 +vt 0.803787 0.632558 +vt 0.845095 0.539535 +vt 0.804647 0.546512 +vt 0.803787 0.539535 +vt 0.845095 0.595349 +vt 0.803787 0.600000 +vt 0.803787 0.595349 +vt 0.845955 0.546512 +vt 0.845095 0.600000 +vt 0.847676 0.560465 +vt 0.805508 0.553488 +vt 0.846816 0.553488 +vt 0.807229 0.567442 +vt 0.806368 0.560465 +vt 0.848537 0.567442 +vt 0.808089 0.574419 +vt 0.849398 0.574419 +vt 0.808950 0.581395 +vt 0.850258 0.581395 +vt 0.809811 0.588372 +vt 0.851979 0.595349 +vt 0.851119 0.588372 +vt 0.845955 0.546512 +vt 0.803787 0.539535 +vt 0.845095 0.539535 +vt 0.804647 0.546512 +vt 0.845095 0.609302 +vt 0.803787 0.604651 +vt 0.845095 0.604651 +vt 0.803787 0.613953 +vt 0.803787 0.609302 +vt 0.845095 0.613953 +vt 0.803787 0.618605 +vt 0.845095 0.618605 +vt 0.803787 0.623256 +vt 0.845095 0.623256 +vt 0.803787 0.627907 +vt 0.845095 0.632558 +vt 0.845095 0.627907 +vt 0.845095 0.600000 +vt 0.803787 0.595349 +vt 0.845095 0.595349 +vt 0.803787 0.600000 +vt 0.805508 0.553488 +vt 0.847676 0.560465 +vt 0.846816 0.553488 +vt 0.806368 0.560465 +vt 0.848537 0.567442 +vt 0.807229 0.567442 +vt 0.849398 0.574419 +vt 0.808950 0.581395 +vt 0.850258 0.581395 +vt 0.809811 0.588372 +vt 0.851119 0.588372 +vt 0.810671 0.595349 +vt 0.851979 0.595349 +vt 0.845095 0.539535 +vt 0.804647 0.546512 +vt 0.845955 0.546512 +vt 0.805508 0.553488 +vt 0.847676 0.560465 +vt 0.846816 0.553488 +vt 0.807229 0.567442 +vt 0.848537 0.567442 +vt 0.808089 0.574419 +vt 0.849398 0.574419 +vt 0.808950 0.581395 +vt 0.850258 0.581395 +vt 0.809811 0.588372 +vt 0.851119 0.588372 +vt 0.851979 0.595349 +vt 0.803787 0.539535 +vt 0.845955 0.546512 +vt 0.845095 0.539535 +vt 0.804647 0.546512 +vt 0.851979 0.595349 +vt 0.845095 0.632558 +vt 0.810671 0.595349 +vt 0.803787 0.632558 +vt 0.808089 0.574419 +vt 0.803787 0.539535 +vt 0.806368 0.560465 +vt 0.810671 0.595349 +vn 0.7343 0.6756 0.0661 +vn 0.9865 0.0209 0.1627 +vn 0.9860 -0.0186 0.1659 +vn 0.0411 0.9962 -0.0762 +vn 0.6749 0.7362 0.0511 +vn -0.6859 0.7068 -0.1732 +vn -0.0387 0.9952 -0.0894 +vn -0.9860 0.0186 -0.1659 +vn -0.7054 0.6869 -0.1748 +vn -0.9865 -0.0209 -0.1627 +vn -0.7343 -0.6756 -0.0661 +vn -0.6749 -0.7362 -0.0511 +vn -0.0411 -0.9962 0.0762 +vn 0.0387 -0.9952 0.0894 +vn 0.6859 -0.7068 0.1732 +vn 0.7054 -0.6869 0.1748 +vn 0.6859 0.7068 -0.1732 +vn 0.9860 0.0186 -0.1659 +vn 0.9865 -0.0209 -0.1627 +vn 0.0387 0.9952 -0.0894 +vn 0.7054 0.6869 -0.1748 +vn -0.0411 0.9962 -0.0762 +vn -0.6749 0.7362 0.0511 +vn -0.7343 0.6756 0.0661 +vn -0.9865 0.0209 0.1627 +vn -0.9860 -0.0186 0.1659 +vn -0.6859 -0.7068 0.1732 +vn -0.0387 -0.9952 0.0894 +vn -0.7054 -0.6869 0.1748 +vn 0.6749 -0.7362 -0.0511 +vn 0.0411 -0.9962 0.0762 +vn 0.7343 -0.6756 -0.0661 +s 1 +f 2256/3103/269 2271/3104/270 2255/3105/271 +f 2264/3106/269 2279/3107/270 2263/3108/271 +f 2249/3109/272 2272/3110/273 2256/3103/269 +f 2250/3111/274 2265/3112/275 2249/3109/272 +f 2257/3113/272 2280/3114/273 2264/3106/269 +f 2258/3115/274 2273/3116/275 2257/3113/272 +f 2250/3111/274 2267/3117/276 2266/3118/277 +f 2258/3115/274 2275/3119/276 2274/3120/277 +f 2251/3121/278 2268/3122/279 2267/3117/276 +f 2259/3123/278 2276/3124/279 2275/3119/276 +f 2252/3125/280 2269/3126/281 2268/3122/279 +f 2260/3127/280 2277/3128/281 2276/3124/279 +f 2253/3129/282 2270/3130/283 2269/3131/281 +f 2261/3132/282 2278/3133/283 2277/3134/281 +f 2255/3105/271 2270/3130/283 2254/3135/284 +f 2263/3108/271 2278/3133/283 2262/3136/284 +f 2288/3137/285 2295/3138/286 2287/3139/287 +f 2288/3137/285 2289/3140/288 2296/3141/289 +f 2281/3142/290 2290/3143/291 2289/3140/288 +f 2282/3144/292 2291/3145/293 2290/3143/291 +f 2283/3146/294 2292/3147/295 2291/3145/293 +f 2285/3148/296 2292/3147/295 2284/3149/297 +f 2286/3150/298 2293/3151/299 2285/3152/296 +f 2287/3139/287 2294/3153/300 2286/3150/298 +f 2304/3154/285 2311/3155/286 2303/3156/287 +f 2304/3154/285 2305/3157/288 2312/3158/289 +f 2297/3159/290 2306/3160/291 2305/3157/288 +f 2298/3161/292 2307/3162/293 2306/3160/291 +f 2299/3163/294 2308/3164/295 2307/3162/293 +f 2301/3165/296 2308/3164/295 2300/3166/297 +f 2302/3167/298 2309/3168/299 2301/3169/296 +f 2303/3156/287 2310/3170/300 2302/3167/298 +f 2327/3171/278 2320/3172/279 2319/3173/276 +f 2328/3174/280 2313/3175/281 2320/3172/279 +f 2321/3176/282 2314/3177/283 2313/3175/281 +f 2314/3177/283 2323/3178/271 2315/3179/270 +f 2315/3179/270 2324/3180/269 2316/3181/273 +f 2316/3181/273 2325/3182/272 2317/3183/275 +f 2317/3184/275 2326/3185/274 2318/3186/277 +f 2326/3185/274 2319/3173/276 2318/3186/277 +f 2343/3187/294 2336/3188/295 2335/3189/293 +f 2336/3188/295 2337/3190/296 2329/3191/299 +f 2329/3191/299 2338/3192/298 2330/3193/300 +f 2330/3193/300 2339/3194/287 2331/3195/286 +f 2331/3195/286 2340/3196/285 2332/3197/289 +f 2340/3196/285 2333/3198/288 2332/3197/289 +f 2341/3199/290 2334/3200/291 2333/3201/288 +f 2342/3202/292 2335/3189/293 2334/3200/291 +f 2256/3103/269 2272/3110/273 2271/3104/270 +f 2264/3106/269 2280/3114/273 2279/3107/270 +f 2249/3109/272 2265/3112/275 2272/3110/273 +f 2250/3111/274 2266/3118/277 2265/3112/275 +f 2257/3113/272 2273/3116/275 2280/3114/273 +f 2258/3115/274 2274/3120/277 2273/3116/275 +f 2250/3111/274 2251/3121/278 2267/3117/276 +f 2258/3115/274 2259/3123/278 2275/3119/276 +f 2251/3121/278 2252/3125/280 2268/3122/279 +f 2259/3123/278 2260/3127/280 2276/3124/279 +f 2252/3125/280 2253/3203/282 2269/3126/281 +f 2260/3127/280 2261/3204/282 2277/3128/281 +f 2253/3129/282 2254/3135/284 2270/3130/283 +f 2261/3132/282 2262/3136/284 2278/3133/283 +f 2255/3105/271 2271/3104/270 2270/3130/283 +f 2263/3108/271 2279/3107/270 2278/3133/283 +f 2288/3137/285 2296/3141/289 2295/3138/286 +f 2288/3137/285 2281/3142/290 2289/3140/288 +f 2281/3142/290 2282/3144/292 2290/3143/291 +f 2282/3144/292 2283/3146/294 2291/3145/293 +f 2283/3146/294 2284/3149/297 2292/3147/295 +f 2285/3148/296 2293/3205/299 2292/3147/295 +f 2286/3150/298 2294/3153/300 2293/3151/299 +f 2287/3139/287 2295/3138/286 2294/3153/300 +f 2304/3154/285 2312/3158/289 2311/3155/286 +f 2304/3154/285 2297/3159/290 2305/3157/288 +f 2297/3159/290 2298/3161/292 2306/3160/291 +f 2298/3161/292 2299/3163/294 2307/3162/293 +f 2299/3163/294 2300/3166/297 2308/3164/295 +f 2301/3165/296 2309/3206/299 2308/3164/295 +f 2302/3167/298 2310/3170/300 2309/3168/299 +f 2303/3156/287 2311/3155/286 2310/3170/300 +f 2327/3171/278 2328/3174/280 2320/3172/279 +f 2328/3174/280 2321/3176/282 2313/3175/281 +f 2321/3176/282 2322/3207/284 2314/3177/283 +f 2314/3177/283 2322/3207/284 2323/3178/271 +f 2315/3179/270 2323/3178/271 2324/3180/269 +f 2316/3181/273 2324/3180/269 2325/3182/272 +f 2317/3184/275 2325/3208/272 2326/3185/274 +f 2326/3185/274 2327/3171/278 2319/3173/276 +f 2343/3187/294 2344/3209/297 2336/3188/295 +f 2336/3188/295 2344/3209/297 2337/3190/296 +f 2329/3191/299 2337/3190/296 2338/3192/298 +f 2330/3193/300 2338/3192/298 2339/3194/287 +f 2331/3195/286 2339/3194/287 2340/3196/285 +f 2340/3196/285 2341/3210/290 2333/3198/288 +f 2341/3199/290 2342/3202/292 2334/3200/291 +f 2342/3202/292 2343/3187/294 2335/3189/293 +o Cover +v -1.000000 6.500000 0.500000 +v 1.000000 6.500000 0.500000 +v -1.000000 6.500000 -4.000000 +v 1.000000 6.500000 -4.000000 +v -1.000000 6.000000 -4.000000 +v -1.000000 6.000000 0.500000 +v 1.000000 6.000000 0.500000 +v 1.000000 6.000000 -4.000000 +v -2.000000 5.000000 -5.000000 +v -2.000000 5.000000 -0.500000 +v 2.000000 5.000000 -0.500000 +v 2.000000 5.000000 -5.000000 +v 2.250000 5.250000 -0.500000 +v 2.250000 5.250000 -5.000000 +v -2.250000 5.250000 -0.500000 +v -2.250000 5.250000 -5.000000 +vt 0.710949 0.470147 +vt 0.772806 0.544186 +vt 0.710949 0.543980 +vt 0.641997 0.544186 +vt 0.703959 0.469767 +vt 0.703959 0.544186 +vt 0.690189 0.581395 +vt 0.628227 0.581395 +vt 0.641997 0.469767 +vt 0.690189 0.432558 +vt 0.772806 0.469767 +vt 0.779690 0.544186 +vt 0.724613 0.423256 +vt 0.786575 0.423256 +vt 0.724613 0.590698 +vt 0.710843 0.423256 +vt 0.710843 0.409302 +vt 0.710843 0.590698 +vt 0.710843 0.604651 +vt 0.786575 0.604651 +vt 0.724613 0.604651 +vt 0.803787 0.590698 +vt 0.803787 0.604651 +vt 0.786575 0.590698 +vt 0.724613 0.409302 +vt 0.786575 0.409302 +vt 0.803787 0.423256 +vt 0.803787 0.409302 +vt 0.628227 0.432558 +vt 0.779690 0.469767 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.6247 0.0000 0.7809 +vn -0.6247 0.0000 0.7809 +vn 0.6247 0.0000 -0.7809 +vn -0.6247 0.0000 -0.7809 +vn -0.4082 -0.4082 0.8165 +vn 0.4082 -0.4082 0.8165 +vn -0.4082 0.4082 -0.8165 +vn 0.4082 0.4082 -0.8165 +s off +f 2346/3211/301 2347/3212/301 2345/3213/301 +f 2349/3214/302 2351/3215/302 2350/3216/302 +f 2349/3214/303 2354/3217/303 2353/3218/303 +f 2352/3219/304 2355/3220/304 2351/3215/304 +f 2348/3221/305 2349/3222/305 2347/3212/305 +f 2345/3213/306 2351/3215/306 2346/3211/306 +f 2348/3221/307 2357/3223/307 2358/3224/307 +f 2347/3212/308 2359/3225/308 2345/3213/308 +f 2346/3226/309 2351/3227/309 2357/3223/309 +f 2345/3228/310 2359/3225/310 2350/3229/310 +f 2359/3225/304 2353/3230/304 2354/3231/304 +f 2347/3232/311 2349/3233/311 2360/3234/311 +f 2358/3224/303 2355/3235/303 2356/3236/303 +f 2348/3237/312 2358/3224/312 2352/3238/312 +f 2350/3229/313 2359/3225/313 2354/3231/313 +f 2357/3223/314 2351/3227/314 2355/3235/314 +f 2352/3238/315 2358/3224/315 2356/3236/315 +f 2360/3234/316 2349/3233/316 2353/3230/316 +f 2346/3211/301 2348/3221/301 2347/3212/301 +f 2349/3214/302 2352/3219/302 2351/3215/302 +f 2349/3214/303 2350/3216/303 2354/3217/303 +f 2352/3219/304 2356/3239/304 2355/3220/304 +f 2348/3221/305 2352/3240/305 2349/3222/305 +f 2345/3213/306 2350/3216/306 2351/3215/306 +f 2348/3221/307 2346/3211/307 2357/3223/307 +f 2347/3212/308 2360/3234/308 2359/3225/308 +f 2359/3225/304 2360/3234/304 2353/3230/304 +f 2358/3224/303 2357/3223/303 2355/3235/303 +o Piston +v 0.000000 4.999998 0.499994 +v -0.574025 4.885818 0.499994 +v -1.060660 4.560658 0.499994 +v -1.385819 4.074023 0.499994 +v -1.500000 3.499998 0.499994 +v -1.385819 2.925972 0.499994 +v -1.060660 2.439338 0.499994 +v -0.574025 2.114178 0.499994 +v -0.000001 1.999998 0.499994 +v 0.574024 2.114178 0.499994 +v 1.060659 2.439337 0.499994 +v 1.385818 2.925972 0.499994 +v 1.500000 3.499998 0.499994 +v 1.385818 4.074023 0.499994 +v 1.060659 4.560658 0.499994 +v 0.574024 4.885818 0.499994 +v 0.000000 5.749998 0.499996 +v -0.861038 5.578727 0.499996 +v -1.590990 5.090989 0.499996 +v -2.078729 4.361035 0.499996 +v -2.250000 3.499998 0.499996 +v -2.078729 2.638961 0.499996 +v -1.590990 1.909008 0.499996 +v -0.861038 1.421269 0.499996 +v -0.000001 1.249998 0.499996 +v 0.861037 1.421269 0.499996 +v 1.590989 1.909007 0.499996 +v 2.078729 2.638960 0.499996 +v 2.250000 3.499998 0.499996 +v 2.078728 4.361035 0.499996 +v 1.590989 5.090989 0.499996 +v 0.861036 5.578727 0.499996 +v -0.574025 4.885818 1.249994 +v 0.000000 4.999998 1.249994 +v -1.060660 4.560658 1.249994 +v -1.385819 4.074023 1.249994 +v -1.500000 3.499998 1.249994 +v -1.385819 2.925972 1.249994 +v -1.060660 2.439338 1.249994 +v -0.574025 2.114178 1.249994 +v -0.000001 1.999998 1.249994 +v 0.574024 2.114178 1.249994 +v 1.060659 2.439337 1.249994 +v 1.385818 2.925972 1.249994 +v 1.500000 3.499998 1.249994 +v 1.385818 4.074023 1.249994 +v 1.060659 4.560658 1.249994 +v 0.574024 4.885818 1.249994 +v -0.861038 5.578727 1.249996 +v 0.000000 5.749998 1.249996 +v -1.590990 5.090989 1.249996 +v -2.078729 4.361035 1.249996 +v -2.250000 3.499998 1.249996 +v -2.078729 2.638961 1.249996 +v -1.590990 1.909008 1.249996 +v -0.861038 1.421269 1.249996 +v -0.000001 1.249998 1.249996 +v 0.861037 1.421269 1.249996 +v 1.590989 1.909007 1.249996 +v 2.078729 2.638960 1.249996 +v 2.250000 3.499998 1.249996 +v 2.078728 4.361035 1.249996 +v 1.590989 5.090989 1.249996 +v 0.861036 5.578727 1.249996 +vt 0.246127 0.481395 +vt 0.235800 0.455814 +vt 0.246127 0.460465 +vt 0.246127 0.513954 +vt 0.235800 0.488372 +vt 0.246127 0.493023 +vt 0.246127 0.546512 +vt 0.235800 0.520930 +vt 0.246127 0.525581 +vt 0.246127 0.579070 +vt 0.235800 0.553488 +vt 0.246127 0.558140 +vt 0.246127 0.590698 +vt 0.235800 0.618605 +vt 0.235800 0.586047 +vt 0.246127 0.623256 +vt 0.235800 0.651163 +vt 0.246127 0.655814 +vt 0.235800 0.683721 +vt 0.246127 0.688372 +vt 0.235800 0.716279 +vt 0.246127 0.720930 +vt 0.235800 0.748837 +vt 0.246127 0.774419 +vt 0.246127 0.753488 +vt 0.246127 0.786047 +vt 0.235800 0.813953 +vt 0.235800 0.781395 +vt 0.246127 0.318605 +vt 0.235800 0.293023 +vt 0.246127 0.297674 +vt 0.246127 0.351163 +vt 0.235800 0.325581 +vt 0.246127 0.330233 +vt 0.246127 0.383721 +vt 0.235800 0.358140 +vt 0.246127 0.362791 +vt 0.246127 0.416279 +vt 0.235800 0.390698 +vt 0.246127 0.395349 +vt 0.246127 0.427907 +vt 0.235800 0.423256 +vt 0.225473 0.455814 +vt 0.215146 0.481395 +vt 0.215146 0.460465 +vt 0.225473 0.488372 +vt 0.215146 0.513954 +vt 0.215146 0.493023 +vt 0.225473 0.520930 +vt 0.215146 0.546512 +vt 0.215146 0.525581 +vt 0.225473 0.553488 +vt 0.215146 0.579070 +vt 0.215146 0.558140 +vt 0.215146 0.590698 +vt 0.225473 0.618605 +vt 0.215146 0.611628 +vt 0.215146 0.623256 +vt 0.225473 0.651163 +vt 0.215146 0.644186 +vt 0.215146 0.676744 +vt 0.215146 0.655814 +vt 0.215146 0.688372 +vt 0.225473 0.716279 +vt 0.215146 0.709302 +vt 0.215146 0.720930 +vt 0.225473 0.748837 +vt 0.215146 0.741860 +vt 0.215146 0.774419 +vt 0.215146 0.753488 +vt 0.215146 0.786047 +vt 0.225473 0.813953 +vt 0.215146 0.806977 +vt 0.225473 0.293023 +vt 0.215146 0.318605 +vt 0.215146 0.297674 +vt 0.225473 0.325581 +vt 0.215146 0.351163 +vt 0.215146 0.330233 +vt 0.225473 0.358140 +vt 0.215146 0.383721 +vt 0.215146 0.362791 +vt 0.225473 0.390698 +vt 0.215146 0.416279 +vt 0.215146 0.395349 +vt 0.215146 0.427907 +vt 0.215146 0.448837 +vt 0.246127 0.611628 +vt 0.246127 0.644186 +vt 0.246127 0.676744 +vt 0.246127 0.709302 +vt 0.246127 0.741860 +vt 0.246127 0.806977 +vt 0.246127 0.448837 +vt 0.225473 0.586047 +vt 0.225473 0.683721 +vt 0.225473 0.781395 +vt 0.225473 0.423256 +vn 0.0000 0.0000 -1.0000 +vn -0.0000 -0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.9239 0.3827 0.0000 +vn -1.0000 -0.0000 0.0000 +vn -0.9239 -0.3827 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.3827 -0.9239 0.0000 +vn -0.0000 -1.0000 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.7071 -0.7071 0.0000 +s off +f 2375/3241/317 2390/3242/317 2374/3243/317 +f 2376/3244/317 2391/3245/317 2375/3246/317 +f 2361/3247/317 2392/3248/317 2376/3249/317 +f 2362/3250/317 2377/3251/317 2361/3252/317 +f 2362/3253/317 2379/3254/317 2378/3255/317 +f 2363/3256/317 2380/3257/317 2379/3254/317 +f 2364/3258/317 2381/3259/317 2380/3257/317 +f 2365/3260/317 2382/3261/317 2381/3259/317 +f 2366/3262/317 2383/3263/317 2382/3261/317 +f 2368/3264/317 2383/3263/317 2367/3265/317 +f 2368/3266/317 2385/3267/317 2384/3268/317 +f 2370/3269/317 2385/3270/317 2369/3271/317 +f 2371/3272/317 2386/3273/317 2370/3274/317 +f 2372/3275/317 2387/3276/317 2371/3277/317 +f 2373/3278/317 2388/3279/317 2372/3280/317 +f 2373/3281/317 2390/3242/317 2389/3282/317 +f 2422/3283/318 2407/3284/318 2406/3285/318 +f 2423/3286/318 2408/3287/318 2407/3288/318 +f 2424/3289/318 2394/3290/318 2408/3291/318 +f 2410/3292/318 2393/3293/318 2394/3294/318 +f 2393/3295/318 2411/3296/318 2395/3297/318 +f 2395/3298/318 2412/3299/318 2396/3300/318 +f 2412/3299/318 2397/3301/318 2396/3302/318 +f 2397/3303/318 2414/3304/318 2398/3305/318 +f 2398/3306/318 2415/3307/318 2399/3308/318 +f 2415/3307/318 2400/3309/318 2399/3310/318 +f 2400/3311/318 2417/3312/318 2401/3313/318 +f 2417/3314/318 2402/3315/318 2401/3316/318 +f 2418/3317/318 2403/3318/318 2402/3319/318 +f 2419/3320/318 2404/3321/318 2403/3322/318 +f 2420/3323/318 2405/3324/318 2404/3325/318 +f 2405/3326/318 2422/3283/318 2406/3327/318 +f 2375/3241/317 2391/3245/317 2390/3242/317 +f 2376/3244/317 2392/3248/317 2391/3245/317 +f 2361/3247/317 2377/3251/317 2392/3248/317 +f 2362/3250/317 2378/3255/317 2377/3251/317 +f 2362/3253/317 2363/3328/317 2379/3254/317 +f 2363/3256/317 2364/3329/317 2380/3257/317 +f 2364/3258/317 2365/3330/317 2381/3259/317 +f 2365/3260/317 2366/3331/317 2382/3261/317 +f 2366/3262/317 2367/3332/317 2383/3263/317 +f 2368/3264/317 2384/3268/317 2383/3263/317 +f 2368/3266/317 2369/3333/317 2385/3267/317 +f 2370/3269/317 2386/3273/317 2385/3270/317 +f 2371/3272/317 2387/3276/317 2386/3273/317 +f 2372/3275/317 2388/3279/317 2387/3276/317 +f 2373/3278/317 2389/3282/317 2388/3279/317 +f 2373/3281/317 2374/3334/317 2390/3242/317 +f 2422/3283/318 2423/3286/318 2407/3284/318 +f 2423/3286/318 2424/3289/318 2408/3287/318 +f 2424/3289/318 2410/3292/318 2394/3290/318 +f 2410/3292/318 2409/3335/318 2393/3293/318 +f 2393/3295/318 2409/3335/318 2411/3296/318 +f 2395/3298/318 2411/3296/318 2412/3299/318 +f 2412/3299/318 2413/3336/318 2397/3301/318 +f 2397/3303/318 2413/3336/318 2414/3304/318 +f 2398/3306/318 2414/3304/318 2415/3307/318 +f 2415/3307/318 2416/3337/318 2400/3309/318 +f 2400/3311/318 2416/3337/318 2417/3312/318 +f 2417/3314/318 2418/3317/318 2402/3315/318 +f 2418/3317/318 2419/3320/318 2403/3318/318 +f 2419/3320/318 2420/3323/318 2404/3321/318 +f 2420/3323/318 2421/3338/318 2405/3324/318 +f 2405/3326/318 2421/3338/318 2422/3283/318 +s 1 +f 2389/3282/319 2420/3323/320 2388/3279/320 +f 2390/3242/321 2421/3338/319 2389/3282/319 +f 2391/3245/322 2422/3283/321 2390/3242/321 +f 2378/3255/323 2410/3292/324 2377/3251/324 +f 2392/3248/325 2423/3286/322 2391/3245/322 +f 2379/3254/326 2409/3335/323 2378/3255/323 +f 2377/3251/324 2424/3289/325 2392/3248/325 +f 2380/3257/327 2411/3296/326 2379/3254/326 +f 2381/3259/328 2412/3299/327 2380/3257/327 +f 2382/3261/329 2413/3336/328 2381/3259/328 +f 2383/3263/330 2414/3304/329 2382/3261/329 +f 2384/3268/331 2415/3307/330 2383/3263/330 +f 2385/3267/332 2416/3337/331 2384/3268/331 +f 2386/3273/333 2417/3314/332 2385/3270/332 +f 2387/3276/334 2418/3317/333 2386/3273/333 +f 2388/3279/320 2419/3320/334 2387/3276/334 +f 2389/3282/319 2421/3338/319 2420/3323/320 +f 2390/3242/321 2422/3283/321 2421/3338/319 +f 2391/3245/322 2423/3286/322 2422/3283/321 +f 2378/3255/323 2409/3335/323 2410/3292/324 +f 2392/3248/325 2424/3289/325 2423/3286/322 +f 2379/3254/326 2411/3296/326 2409/3335/323 +f 2377/3251/324 2410/3292/324 2424/3289/325 +f 2380/3257/327 2412/3299/327 2411/3296/326 +f 2381/3259/328 2413/3336/328 2412/3299/327 +f 2382/3261/329 2414/3304/329 2413/3336/328 +f 2383/3263/330 2415/3307/330 2414/3304/329 +f 2384/3268/331 2416/3337/331 2415/3307/330 +f 2385/3267/332 2417/3312/332 2416/3337/331 +f 2386/3273/333 2418/3317/333 2417/3314/332 +f 2387/3276/334 2419/3320/334 2418/3317/333 +f 2388/3279/320 2420/3323/320 2419/3320/334 +o Flap +v -0.750000 6.812501 8.750000 +v 0.750000 6.812501 8.750000 +v -0.750000 7.062501 8.750000 +v 0.750000 7.062501 8.750000 +v -0.499999 6.937501 10.500000 +v 0.500000 6.937501 10.500000 +v 0.281250 6.843751 8.750000 +v 0.468750 6.843751 8.750000 +v 0.281250 7.031251 8.750000 +v 0.468750 7.031250 8.750000 +v -0.312500 7.000001 8.375000 +v -0.437500 7.000001 8.375000 +v -0.312500 6.875000 8.375000 +v -0.437500 6.875000 8.375000 +v -0.281249 7.031251 8.750000 +v -0.468749 7.031251 8.750000 +v -0.281250 6.843751 8.750000 +v -0.468750 6.843751 8.750000 +v 0.312500 6.875001 8.375000 +v 0.437500 6.875001 8.375000 +v 0.312500 7.000001 8.375000 +v 0.437501 7.000001 8.375000 +vt 0.557659 0.162791 +vt 0.537005 0.153488 +vt 0.557659 0.153488 +vt 0.540448 0.088372 +vt 0.540448 0.227907 +vt 0.537005 0.162791 +vt 0.512909 0.158140 +vt 0.581756 0.158140 +vt 0.507745 0.169767 +vt 0.512909 0.162791 +vt 0.512909 0.169767 +vt 0.512909 0.176744 +vt 0.507745 0.176744 +vt 0.507745 0.162791 +vt 0.512909 0.155814 +vt 0.507745 0.148837 +vt 0.512909 0.155814 +vt 0.507745 0.155814 +vt 0.512909 0.162791 +vt 0.507745 0.162791 +vt 0.507745 0.176744 +vt 0.512909 0.169767 +vt 0.512909 0.176744 +vt 0.507745 0.169767 +vt 0.507745 0.155814 +vt 0.512909 0.148837 +vt 0.554217 0.088372 +vt 0.554217 0.227907 +vt 0.512909 0.148837 +vt 0.507745 0.148837 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.9975 0.0712 +vn 0.0000 0.9975 0.0712 +vn 0.9899 0.0000 0.1414 +vn -0.9899 0.0000 0.1414 +vn 0.0000 0.9965 -0.0830 +vn -0.9965 0.0000 -0.0830 +vn 0.9965 -0.0000 -0.0830 +vn 0.0000 -0.9965 -0.0830 +s off +f 2427/3339/335 2426/3340/335 2425/3341/335 +f 2430/3342/336 2425/3341/336 2426/3340/336 +f 2427/3339/337 2430/3343/337 2428/3344/337 +f 2426/3340/338 2428/3344/338 2430/3345/338 +f 2425/3341/339 2429/3346/339 2427/3339/339 +f 2433/3347/340 2446/3348/340 2445/3349/340 +f 2433/3347/341 2443/3350/341 2431/3351/341 +f 2434/3352/342 2444/3353/342 2446/3348/342 +f 2442/3354/343 2437/3355/343 2441/3356/343 +f 2441/3356/342 2435/3357/342 2439/3358/342 +f 2442/3359/341 2436/3360/341 2438/3361/341 +f 2440/3362/340 2435/3357/340 2436/3360/340 +f 2432/3363/343 2443/3364/343 2444/3353/343 +f 2427/3339/335 2428/3344/335 2426/3340/335 +f 2430/3342/336 2429/3365/336 2425/3341/336 +f 2427/3339/337 2429/3366/337 2430/3343/337 +f 2433/3347/340 2434/3352/340 2446/3348/340 +f 2433/3347/341 2445/3349/341 2443/3350/341 +f 2434/3352/342 2432/3363/342 2444/3353/342 +f 2442/3354/343 2438/3367/343 2437/3355/343 +f 2441/3356/342 2437/3355/342 2435/3357/342 +f 2442/3359/341 2440/3362/341 2436/3360/341 +f 2440/3362/340 2439/3358/340 2435/3357/340 +f 2432/3363/343 2431/3368/343 2443/3364/343 +o TurbineBack +v -0.562500 3.249998 -5.250007 +v 0.562500 3.249998 -5.250007 +v -0.562500 3.749998 -5.250007 +v 0.562500 3.749998 -5.250007 +v -0.250000 4.062498 -5.250007 +v -0.250000 2.937498 -5.250007 +v 0.250000 4.062498 -5.250007 +v 0.250000 2.937498 -5.250007 +v -0.562500 3.249998 -6.250007 +v 0.562500 3.249998 -6.250007 +v -0.562500 3.749998 -6.250007 +v 0.562500 3.749998 -6.250007 +v -0.250000 4.062498 -6.250007 +v -0.250000 2.937498 -6.250007 +v 0.250000 4.062498 -6.250007 +v 0.250000 2.937498 -6.250007 +v 1.092830 4.280329 -5.250007 +v 1.092830 4.280329 -6.250007 +v 0.780330 4.592829 -6.250007 +v 0.780330 4.592829 -5.250007 +v 0.250000 4.812498 -5.250007 +v 0.250000 4.812498 -6.250007 +v -0.250000 4.812498 -6.250007 +v -0.250000 4.812498 -5.250007 +v -1.312500 3.749998 -5.250007 +v -1.312500 3.749998 -6.250007 +v -1.312500 3.249998 -6.250007 +v -1.312500 3.249998 -5.250007 +v 1.092830 2.719668 -5.250007 +v 0.780330 2.407168 -5.250007 +v 0.780330 2.407168 -6.250007 +v 1.092830 2.719668 -6.250007 +v -1.092831 4.280329 -5.250007 +v -0.780331 4.592829 -5.250007 +v -0.780331 4.592829 -6.250007 +v -1.092831 4.280329 -6.250007 +v -0.250000 2.187498 -5.250007 +v -0.250000 2.187498 -6.250007 +v 0.250000 2.187498 -6.250007 +v 0.250000 2.187498 -5.250007 +v 1.312500 3.249998 -5.250007 +v 1.312500 3.249998 -6.250007 +v 1.312500 3.749998 -6.250007 +v 1.312500 3.749998 -5.250007 +v -1.092831 2.719668 -5.250007 +v -1.092831 2.719668 -6.250007 +v -0.780331 2.407168 -6.250007 +v -0.780331 2.407168 -5.250007 +vt 0.065404 0.674419 +vt 0.075732 0.655814 +vt 0.075732 0.674419 +vt 0.051635 0.655814 +vt 0.041308 0.674419 +vt 0.041308 0.655814 +vt 0.075732 0.674419 +vt 0.065404 0.655814 +vt 0.075732 0.655814 +vt 0.051635 0.655814 +vt 0.041308 0.674419 +vt 0.041308 0.655814 +vt 0.065404 0.674419 +vt 0.075732 0.655814 +vt 0.075732 0.674419 +vt 0.051635 0.655814 +vt 0.041308 0.674419 +vt 0.041308 0.655814 +vt 0.041308 0.655814 +vt 0.051635 0.674419 +vt 0.041308 0.674419 +vt 0.065404 0.674419 +vt 0.075732 0.655814 +vt 0.075732 0.674419 +vt 0.051635 0.655814 +vt 0.041308 0.674419 +vt 0.041308 0.655814 +vt 0.065404 0.674419 +vt 0.075732 0.655814 +vt 0.075732 0.674419 +vt 0.065404 0.674419 +vt 0.075732 0.655814 +vt 0.075732 0.674419 +vt 0.051635 0.655814 +vt 0.041308 0.674419 +vt 0.041308 0.655814 +vt 0.051635 0.627907 +vt 0.065404 0.627907 +vt 0.065404 0.674419 +vt 0.075732 0.655814 +vt 0.075732 0.674419 +vt 0.051635 0.655814 +vt 0.065404 0.627907 +vt 0.065404 0.655814 +vt 0.051635 0.655814 +vt 0.041308 0.674419 +vt 0.041308 0.655814 +vt 0.065404 0.627907 +vt 0.051635 0.627907 +vt 0.065404 0.627907 +vt 0.065404 0.655814 +vt 0.065404 0.674419 +vt 0.075732 0.655814 +vt 0.075732 0.674419 +vt 0.065404 0.627907 +vt 0.065404 0.655814 +vt 0.041308 0.655814 +vt 0.051635 0.674419 +vt 0.041308 0.674419 +vt 0.065404 0.627907 +vt 0.051635 0.655814 +vt 0.051635 0.627907 +vt 0.065404 0.627907 +vt 0.065404 0.655814 +vt 0.065404 0.655814 +vt 0.065404 0.627907 +vt 0.051635 0.674419 +vt 0.065404 0.702326 +vt 0.051635 0.674419 +vt 0.065404 0.702326 +vt 0.065404 0.674419 +vt 0.065404 0.702326 +vt 0.051635 0.674419 +vt 0.065404 0.702326 +vt 0.065404 0.702326 +vt 0.051635 0.674419 +vt 0.051635 0.702326 +vt 0.065404 0.702326 +vt 0.051635 0.674419 +vt 0.065404 0.702326 +vt 0.065404 0.702326 +vt 0.051635 0.702326 +vt 0.051635 0.674419 +vt 0.051635 0.702326 +vt 0.051635 0.702326 +vt 0.051635 0.702326 +vt 0.051635 0.702326 +vt 0.051635 0.702326 +vt 0.051635 0.702326 +vt 0.051635 0.627907 +vt 0.051635 0.627907 +vt 0.051635 0.627907 +vt 0.051635 0.627907 +vt 0.051635 0.627907 +vt 0.065404 0.655814 +vt 0.065404 0.655814 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn -0.8944 0.0000 -0.4472 +vn 0.0000 -0.7646 -0.6445 +vn 0.0000 -0.8944 -0.4472 +vn 0.7646 0.0000 -0.6445 +vn 0.5298 0.5298 -0.6623 +vn -0.6468 0.6468 -0.4042 +vn -0.5298 0.5298 -0.6623 +vn 0.0000 0.7646 -0.6445 +vn -0.5070 -0.5070 0.6971 +vn -0.6965 0.0000 0.7176 +vn -0.5070 0.5070 0.6971 +vn 0.0000 0.6965 0.7176 +vn 0.5070 0.5070 0.6971 +vn 0.6667 -0.6667 0.3333 +vn 0.5070 -0.5070 0.6971 +vn -0.6667 -0.6667 0.3333 +vn 0.6667 0.6667 0.3333 +vn 0.0000 0.9545 0.2983 +vn -0.6667 0.6667 0.3333 +vn -0.9545 0.0000 0.2983 +vn 0.0000 -0.6965 0.7176 +vn 0.0000 -0.9545 0.2983 +vn 0.6965 0.0000 0.7176 +vn 0.9545 0.0000 0.2983 +vn -0.6468 -0.6468 -0.4042 +vn 0.5298 -0.5298 -0.6623 +vn 0.6468 -0.6468 -0.4042 +vn 0.8944 0.0000 -0.4472 +vn 0.6468 0.6468 -0.4042 +vn 0.0000 0.8944 -0.4472 +vn -0.7646 0.0000 -0.6445 +vn -0.5298 -0.5298 -0.6623 +vn 0.0000 0.9767 -0.2146 +vn -0.6269 0.7614 0.1652 +vn -0.0870 0.9817 -0.1695 +vn 0.6906 0.6906 -0.2146 +vn 0.0870 0.9817 0.1695 +vn 0.6269 0.7614 -0.1652 +vn 0.6906 0.6906 0.2146 +vn 0.9817 0.0870 -0.1695 +vn 0.7614 0.6269 0.1652 +vn 0.6906 -0.6906 -0.2146 +vn 0.9817 -0.0870 0.1695 +vn 0.7614 -0.6269 -0.1652 +vn 0.0000 -0.9767 -0.2146 +vn 0.6269 -0.7614 0.1652 +vn 0.0870 -0.9817 -0.1695 +vn 0.0000 -0.9767 0.2146 +vn -0.6269 -0.7614 -0.1652 +vn -0.0870 -0.9817 0.1695 +vn -0.9767 0.0000 -0.2146 +vn -0.7614 -0.6269 0.1652 +vn -0.9817 -0.0870 -0.1695 +vn -0.9767 0.0000 0.2146 +vn -0.7614 0.6269 -0.1652 +vn -0.9817 0.0870 0.1695 +vn 0.0000 0.9767 0.2146 +vn 0.9767 0.0000 -0.2146 +vn 0.9767 0.0000 0.2146 +vn 0.6906 -0.6906 0.2146 +vn -0.6906 -0.6906 -0.2146 +vn -0.6906 -0.6906 0.2146 +vn -0.6906 0.6906 -0.2146 +vn -0.6906 0.6906 0.2146 +s off +f 2469/3369/344 2461/3370/344 2459/3371/344 +f 2463/3372/345 2453/3373/345 2450/3374/345 +f 2461/3375/344 2464/3376/344 2458/3377/344 +f 2467/3378/345 2451/3379/345 2453/3380/345 +f 2473/3381/344 2457/3382/344 2455/3383/344 +f 2471/3384/345 2447/3385/345 2449/3386/345 +f 2454/3387/345 2475/3388/345 2448/3389/345 +f 2478/3390/344 2462/3391/344 2456/3392/344 +f 2480/3393/345 2449/3394/345 2451/3395/345 +f 2482/3396/344 2459/3397/344 2457/3398/344 +f 2485/3399/344 2460/3400/344 2462/3401/344 +f 2483/3402/345 2454/3403/345 2452/3404/345 +f 2483/3402/346 2452/3405/346 2462/3406/346 +f 2489/3407/344 2456/3408/344 2458/3409/344 +f 2476/3410/347 2456/3411/347 2488/3412/347 +f 2487/3413/345 2450/3414/345 2448/3415/345 +f 2458/3416/348 2487/3413/348 2448/3417/348 +f 2463/3372/349 2461/3418/349 2468/3419/349 +f 2493/3420/344 2455/3421/344 2460/3422/344 +f 2467/3378/350 2459/3423/350 2481/3424/350 +f 2447/3425/345 2494/3426/345 2452/3427/345 +f 2460/3428/351 2491/3429/351 2447/3430/351 +f 2471/3384/352 2455/3431/352 2492/3432/352 +f 2472/3433/353 2480/3393/353 2457/3434/353 +f 2470/3435/354 2482/3396/354 2457/3436/354 +f 2466/3437/355 2469/3369/355 2459/3438/355 +f 2465/3439/356 2461/3440/356 2490/3441/356 +f 2475/3388/357 2489/3407/357 2458/3442/357 +f 2478/3390/358 2456/3443/358 2486/3444/358 +f 2452/3445/359 2494/3426/359 2462/3446/359 +f 2474/3447/360 2493/3420/360 2460/3448/360 +f 2455/3449/361 2449/3450/361 2479/3451/361 +f 2458/3442/362 2448/3452/362 2475/3388/362 +f 2490/3441/363 2461/3440/363 2450/3453/363 +f 2459/3438/364 2453/3454/364 2466/3437/364 +f 2457/3436/365 2451/3455/365 2470/3435/365 +f 2479/3451/366 2473/3381/366 2455/3449/366 +f 2460/3448/367 2447/3456/367 2474/3447/367 +f 2462/3446/368 2494/3426/368 2485/3399/368 +f 2486/3444/369 2456/3443/369 2454/3457/369 +f 2456/3411/370 2476/3410/370 2454/3458/370 +f 2487/3413/371 2458/3416/371 2464/3376/371 +f 2461/3418/372 2463/3372/372 2450/3459/372 +f 2459/3423/373 2467/3378/373 2453/3460/373 +f 2457/3434/374 2480/3393/374 2451/3461/374 +f 2455/3431/375 2471/3384/375 2449/3462/375 +f 2491/3429/376 2460/3428/376 2484/3463/376 +f 2462/3406/377 2477/3464/377 2483/3402/377 +f 2469/3369/344 2468/3419/344 2461/3370/344 +f 2463/3372/345 2466/3437/345 2453/3373/345 +f 2461/3375/344 2465/3439/344 2464/3376/344 +f 2467/3378/345 2470/3435/345 2451/3379/345 +f 2473/3381/344 2472/3433/344 2457/3382/344 +f 2471/3384/345 2474/3447/345 2447/3385/345 +f 2454/3387/345 2476/3410/345 2475/3388/345 +f 2478/3390/344 2477/3464/344 2462/3391/344 +f 2480/3393/345 2479/3451/345 2449/3394/345 +f 2482/3396/344 2481/3424/344 2459/3397/344 +f 2485/3399/344 2484/3463/344 2460/3400/344 +f 2483/3402/345 2486/3444/345 2454/3403/345 +f 2489/3407/344 2488/3412/344 2456/3408/344 +f 2487/3413/345 2490/3441/345 2450/3414/345 +f 2493/3420/344 2492/3432/344 2455/3421/344 +f 2447/3425/345 2491/3429/345 2494/3426/345 +s 1 +f 2467/3378/378 2481/3424/379 2470/3435/380 +f 2463/3372/381 2468/3419/382 2466/3437/383 +f 2465/3439/384 2490/3441/385 2464/3376/386 +f 2476/3410/387 2488/3412/388 2475/3388/389 +f 2483/3402/390 2477/3464/391 2486/3444/392 +f 2485/3399/393 2494/3426/394 2484/3463/395 +f 2471/3384/396 2492/3432/397 2474/3447/398 +f 2473/3381/399 2479/3451/400 2472/3433/401 +f 2466/3437/383 2468/3419/382 2469/3369/402 +f 2464/3376/386 2490/3441/385 2487/3413/403 +f 2475/3388/389 2488/3412/388 2489/3407/404 +f 2486/3444/392 2477/3464/391 2478/3390/405 +f 2484/3463/395 2494/3426/394 2491/3429/406 +f 2474/3447/398 2492/3432/397 2493/3420/407 +f 2472/3433/401 2479/3451/400 2480/3393/408 +f 2470/3435/380 2481/3424/379 2482/3396/409 +o TurbineFront +v -0.562500 3.249998 -4.250007 +v 0.562500 3.249998 -4.250007 +v -0.562500 3.749998 -4.250007 +v 0.562500 3.749998 -4.250007 +v -0.250000 4.062498 -4.250007 +v -0.250000 2.937498 -4.250007 +v 0.250000 4.062498 -4.250007 +v 0.250000 2.937498 -4.250007 +v -0.562500 3.249998 -5.250007 +v 0.562500 3.249998 -5.250007 +v -0.562500 3.749998 -5.250007 +v 0.562500 3.749998 -5.250007 +v -0.250000 4.062498 -5.250007 +v -0.250000 2.937498 -5.250007 +v 0.250000 4.062498 -5.250007 +v 0.250000 2.937498 -5.250007 +v 1.092830 4.280328 -4.250007 +v 1.092830 4.280328 -5.250007 +v 0.780330 4.592828 -5.250007 +v 0.780330 4.592828 -4.250007 +v 0.250000 4.812498 -4.250007 +v 0.250000 4.812498 -5.250007 +v -0.250000 4.812498 -5.250007 +v -0.250000 4.812498 -4.250007 +v -1.312500 3.749998 -4.250007 +v -1.312500 3.749998 -5.250007 +v -1.312500 3.249998 -5.250007 +v -1.312500 3.249998 -4.250007 +v 1.092830 2.719668 -4.250007 +v 0.780330 2.407168 -4.250007 +v 0.780330 2.407168 -5.250007 +v 1.092830 2.719668 -5.250007 +v -1.092831 4.280328 -4.250007 +v -0.780331 4.592828 -4.250007 +v -0.780331 4.592828 -5.250007 +v -1.092831 4.280328 -5.250007 +v -0.250000 2.187498 -4.250007 +v -0.250000 2.187498 -5.250007 +v 0.250000 2.187498 -5.250007 +v 0.250000 2.187498 -4.250007 +v 1.312500 3.249998 -4.250007 +v 1.312500 3.249998 -5.250007 +v 1.312500 3.749998 -5.250007 +v 1.312500 3.749998 -4.250007 +v -1.092831 2.719668 -4.250007 +v -1.092831 2.719668 -5.250007 +v -0.780331 2.407168 -5.250007 +v -0.780331 2.407168 -4.250007 +vt 0.030981 0.674419 +vt 0.041308 0.655814 +vt 0.041308 0.674419 +vt 0.017212 0.655814 +vt 0.006885 0.674419 +vt 0.006885 0.655814 +vt 0.041308 0.674419 +vt 0.030981 0.655814 +vt 0.041308 0.655814 +vt 0.017212 0.655814 +vt 0.006885 0.674419 +vt 0.006885 0.655814 +vt 0.030981 0.674419 +vt 0.041308 0.655814 +vt 0.041308 0.674419 +vt 0.017212 0.655814 +vt 0.006885 0.674419 +vt 0.006885 0.655814 +vt 0.006885 0.655814 +vt 0.017212 0.674419 +vt 0.006885 0.674419 +vt 0.030981 0.674419 +vt 0.041308 0.655814 +vt 0.041308 0.674419 +vt 0.017212 0.655814 +vt 0.006885 0.674419 +vt 0.006885 0.655814 +vt 0.041308 0.674419 +vt 0.030981 0.655814 +vt 0.041308 0.655814 +vt 0.030981 0.674419 +vt 0.041308 0.655814 +vt 0.041308 0.674419 +vt 0.017212 0.655814 +vt 0.006885 0.674419 +vt 0.006885 0.655814 +vt 0.017212 0.627907 +vt 0.030981 0.627907 +vt 0.030981 0.674419 +vt 0.041308 0.655814 +vt 0.041308 0.674419 +vt 0.017212 0.655814 +vt 0.030981 0.627907 +vt 0.030981 0.655814 +vt 0.017212 0.655814 +vt 0.006885 0.674419 +vt 0.006885 0.655814 +vt 0.030981 0.627907 +vt 0.017212 0.627907 +vt 0.030981 0.627907 +vt 0.030981 0.655814 +vt 0.030981 0.674419 +vt 0.041308 0.655814 +vt 0.041308 0.674419 +vt 0.030981 0.627907 +vt 0.006885 0.655814 +vt 0.017212 0.674419 +vt 0.006885 0.674419 +vt 0.030981 0.627907 +vt 0.017212 0.655814 +vt 0.017212 0.627907 +vt 0.030981 0.627907 +vt 0.030981 0.655814 +vt 0.030981 0.655814 +vt 0.030981 0.627907 +vt 0.017212 0.674419 +vt 0.030981 0.674419 +vt 0.030981 0.702326 +vt 0.017212 0.674419 +vt 0.030981 0.702326 +vt 0.030981 0.674419 +vt 0.030981 0.702326 +vt 0.017212 0.674419 +vt 0.030981 0.702326 +vt 0.030981 0.702326 +vt 0.017212 0.674419 +vt 0.017212 0.702326 +vt 0.030981 0.702326 +vt 0.017212 0.674419 +vt 0.030981 0.702326 +vt 0.030981 0.702326 +vt 0.017212 0.674419 +vt 0.017212 0.627907 +vt 0.017212 0.627907 +vt 0.017212 0.627907 +vt 0.030981 0.655814 +vt 0.030981 0.655814 +vt 0.017212 0.627907 +vt 0.017212 0.627907 +vt 0.017212 0.702326 +vt 0.017212 0.702326 +vt 0.017212 0.702326 +vt 0.017212 0.702326 +vt 0.017212 0.702326 +vt 0.017212 0.702326 +vt 0.017212 0.702326 +vn 0.0000 0.0000 -1.0000 +vn -0.0000 0.0000 1.0000 +vn -0.8944 0.0000 -0.4472 +vn 0.0000 -0.7646 -0.6445 +vn 0.0000 -0.8944 -0.4472 +vn 0.7646 0.0000 -0.6445 +vn 0.5298 0.5298 -0.6623 +vn -0.6468 0.6468 -0.4042 +vn -0.5298 0.5298 -0.6623 +vn 0.0000 0.7646 -0.6445 +vn -0.5070 -0.5070 0.6971 +vn -0.6965 0.0000 0.7176 +vn -0.5070 0.5070 0.6971 +vn 0.0000 0.6965 0.7176 +vn 0.5070 0.5070 0.6971 +vn 0.6667 -0.6667 0.3333 +vn 0.5070 -0.5070 0.6971 +vn 0.0000 -0.6965 0.7176 +vn 0.8944 0.0000 -0.4472 +vn 0.6468 0.6468 -0.4042 +vn 0.0000 0.8944 -0.4472 +vn -0.7646 0.0000 -0.6445 +vn -0.5298 -0.5298 -0.6623 +vn -0.6468 -0.6468 -0.4042 +vn 0.5298 -0.5298 -0.6623 +vn 0.6468 -0.6468 -0.4042 +vn -0.6667 0.6667 0.3333 +vn 0.0000 0.9545 0.2983 +vn 0.6667 0.6667 0.3333 +vn 0.9545 0.0000 0.2983 +vn 0.6965 0.0000 0.7176 +vn 0.0000 -0.9545 0.2983 +vn -0.6667 -0.6667 0.3333 +vn -0.9545 0.0000 0.2983 +vn 0.0000 0.9767 -0.2146 +vn -0.6269 0.7614 0.1652 +vn -0.0870 0.9817 -0.1695 +vn 0.6906 0.6906 -0.2146 +vn 0.0870 0.9817 0.1695 +vn 0.6269 0.7614 -0.1652 +vn 0.6906 0.6906 0.2146 +vn 0.9817 0.0870 -0.1695 +vn 0.7614 0.6269 0.1652 +vn 0.6906 -0.6906 -0.2146 +vn 0.9817 -0.0870 0.1695 +vn 0.7614 -0.6269 -0.1652 +vn 0.0000 -0.9767 -0.2146 +vn 0.6269 -0.7614 0.1652 +vn 0.0870 -0.9817 -0.1695 +vn 0.0000 -0.9767 0.2146 +vn -0.6269 -0.7614 -0.1652 +vn -0.0870 -0.9817 0.1695 +vn -0.9767 0.0000 -0.2146 +vn -0.7614 -0.6269 0.1652 +vn -0.9817 -0.0870 -0.1695 +vn -0.9767 0.0000 0.2146 +vn -0.7614 0.6269 -0.1652 +vn -0.9817 0.0870 0.1695 +vn 0.0000 0.9767 0.2146 +vn 0.9767 0.0000 -0.2146 +vn 0.9767 0.0000 0.2146 +vn 0.6906 -0.6906 0.2146 +vn -0.6906 -0.6906 -0.2146 +vn -0.6906 -0.6906 0.2146 +vn -0.6906 0.6906 -0.2146 +vn -0.6906 0.6906 0.2146 +s off +f 2517/3465/410 2509/3466/410 2507/3467/410 +f 2511/3468/411 2501/3469/411 2498/3470/411 +f 2509/3471/410 2512/3472/410 2506/3473/410 +f 2515/3474/411 2499/3475/411 2501/3476/411 +f 2521/3477/410 2505/3478/410 2503/3479/410 +f 2519/3480/411 2495/3481/411 2497/3482/411 +f 2502/3483/411 2523/3484/411 2496/3485/411 +f 2526/3486/410 2510/3487/410 2504/3488/410 +f 2528/3489/411 2497/3490/411 2499/3491/411 +f 2505/3492/410 2529/3493/410 2507/3494/410 +f 2533/3495/410 2508/3496/410 2510/3497/410 +f 2531/3498/411 2502/3499/411 2500/3500/411 +f 2531/3498/412 2500/3501/412 2510/3502/412 +f 2537/3503/410 2504/3504/410 2506/3505/410 +f 2524/3506/413 2504/3507/413 2536/3508/413 +f 2535/3509/411 2498/3510/411 2496/3511/411 +f 2506/3512/414 2535/3509/414 2496/3513/414 +f 2511/3468/415 2509/3514/415 2516/3515/415 +f 2541/3516/410 2503/3517/410 2508/3518/410 +f 2515/3474/416 2507/3519/416 2529/3493/416 +f 2495/3520/411 2542/3521/411 2500/3522/411 +f 2508/3523/417 2539/3524/417 2495/3525/417 +f 2519/3480/418 2503/3526/418 2540/3527/418 +f 2520/3528/419 2528/3489/419 2505/3529/419 +f 2518/3530/420 2530/3531/420 2505/3532/420 +f 2514/3533/421 2517/3465/421 2507/3534/421 +f 2513/3535/422 2509/3536/422 2538/3537/422 +f 2523/3484/423 2537/3503/423 2506/3538/423 +f 2526/3486/424 2504/3539/424 2534/3540/424 +f 2500/3541/425 2542/3521/425 2510/3542/425 +f 2522/3543/426 2541/3516/426 2508/3544/426 +f 2503/3545/427 2527/3546/427 2521/3477/427 +f 2507/3519/428 2515/3474/428 2501/3547/428 +f 2505/3529/429 2528/3489/429 2499/3548/429 +f 2503/3526/430 2519/3480/430 2497/3549/430 +f 2539/3524/431 2508/3523/431 2532/3550/431 +f 2510/3502/432 2525/3551/432 2531/3498/432 +f 2504/3507/433 2524/3506/433 2502/3552/433 +f 2535/3509/434 2506/3512/434 2512/3472/434 +f 2509/3514/435 2511/3468/435 2498/3553/435 +f 2507/3534/436 2501/3554/436 2514/3533/436 +f 2538/3537/437 2509/3536/437 2498/3555/437 +f 2506/3538/438 2496/3556/438 2523/3484/438 +f 2534/3540/439 2504/3539/439 2502/3557/439 +f 2510/3542/440 2542/3521/440 2533/3495/440 +f 2508/3544/441 2495/3558/441 2522/3543/441 +f 2527/3546/442 2503/3545/442 2497/3559/442 +f 2505/3532/443 2499/3560/443 2518/3530/443 +f 2517/3465/410 2516/3515/410 2509/3466/410 +f 2511/3468/411 2514/3533/411 2501/3469/411 +f 2509/3471/410 2513/3535/410 2512/3472/410 +f 2515/3474/411 2518/3530/411 2499/3475/411 +f 2521/3477/410 2520/3528/410 2505/3478/410 +f 2519/3480/411 2522/3543/411 2495/3481/411 +f 2502/3483/411 2524/3506/411 2523/3484/411 +f 2526/3486/410 2525/3551/410 2510/3487/410 +f 2528/3489/411 2527/3546/411 2497/3490/411 +f 2505/3492/410 2530/3531/410 2529/3493/410 +f 2533/3495/410 2532/3550/410 2508/3496/410 +f 2531/3498/411 2534/3540/411 2502/3499/411 +f 2537/3503/410 2536/3508/410 2504/3504/410 +f 2535/3509/411 2538/3537/411 2498/3510/411 +f 2541/3516/410 2540/3527/410 2503/3517/410 +f 2495/3520/411 2539/3524/411 2542/3521/411 +s 1 +f 2515/3474/444 2529/3493/445 2518/3530/446 +f 2511/3468/447 2516/3515/448 2514/3533/449 +f 2513/3535/450 2538/3537/451 2512/3472/452 +f 2524/3506/453 2536/3508/454 2523/3484/455 +f 2531/3498/456 2525/3551/457 2534/3540/458 +f 2533/3495/459 2542/3521/460 2532/3550/461 +f 2519/3480/462 2540/3527/463 2522/3543/464 +f 2521/3477/465 2527/3546/466 2520/3528/467 +f 2514/3533/449 2516/3515/448 2517/3465/468 +f 2512/3472/452 2538/3537/451 2535/3509/469 +f 2523/3484/455 2536/3508/454 2537/3503/470 +f 2534/3540/458 2525/3551/457 2526/3486/471 +f 2532/3550/461 2542/3521/460 2539/3524/472 +f 2522/3543/464 2540/3527/463 2541/3516/473 +f 2520/3528/467 2527/3546/466 2528/3489/474 +f 2518/3530/446 2529/3493/445 2530/3531/475 +o Rotor +v -0.562500 3.249998 -1.250006 +v 0.562500 3.249998 -1.250006 +v -0.562500 3.749998 -1.250006 +v 0.562500 3.749998 -1.250006 +v -0.250000 4.062498 -1.250006 +v -0.250000 2.937498 -1.250006 +v 0.250000 4.062498 -1.250006 +v 0.250000 2.937498 -1.250006 +v -0.562500 3.249998 -3.250006 +v 0.562500 3.249998 -3.250006 +v -0.562500 3.749998 -3.250006 +v 0.562500 3.749998 -3.250006 +v -0.250000 4.062498 -3.250006 +v -0.250000 2.937498 -3.250006 +v 0.250000 4.062498 -3.250006 +v 0.250000 2.937498 -3.250006 +v 1.092830 4.280328 -1.250006 +v 1.092830 4.280328 -3.250006 +v 0.780330 4.592828 -3.250006 +v 0.780330 4.592828 -1.250006 +v 0.250000 4.812498 -1.250006 +v 0.250000 4.812498 -3.250006 +v -0.250000 4.812498 -3.250006 +v -0.250000 4.812498 -1.250006 +v -1.312500 3.749998 -1.250006 +v -1.312500 3.749998 -3.250006 +v -1.312500 3.249998 -3.250006 +v -1.312500 3.249998 -1.250006 +v 1.092830 2.719668 -1.250006 +v 0.780330 2.407168 -1.250006 +v 0.780330 2.407168 -3.250006 +v 1.092830 2.719668 -3.250006 +v -1.092831 4.280328 -1.250006 +v -0.780331 4.592828 -1.250006 +v -0.780331 4.592828 -3.250006 +v -1.092831 4.280328 -3.250006 +v -0.250000 2.187498 -1.250006 +v -0.250000 2.187498 -3.250006 +v 0.250000 2.187498 -3.250006 +v 0.250000 2.187498 -1.250006 +v 1.312500 3.249998 -1.250006 +v 1.312500 3.249998 -3.250006 +v 1.312500 3.749998 -3.250006 +v 1.312500 3.749998 -1.250006 +v -1.092831 2.719668 -1.250006 +v -1.092831 2.719668 -3.250006 +v -0.780331 2.407168 -3.250006 +v -0.780331 2.407168 -1.250006 +vt 0.130809 0.674419 +vt 0.103270 0.693023 +vt 0.103270 0.674419 +vt 0.103270 0.646512 +vt 0.130809 0.646512 +vt 0.141136 0.693023 +vt 0.141136 0.674419 +vt 0.130809 0.720930 +vt 0.103270 0.720930 +vt 0.092943 0.693023 +vt 0.092943 0.674419 +vt 0.130809 0.674419 +vt 0.103270 0.693023 +vt 0.103270 0.674419 +vt 0.103270 0.646512 +vt 0.130809 0.646512 +vt 0.130809 0.693023 +vt 0.141136 0.674419 +vt 0.141136 0.693023 +vt 0.130809 0.720930 +vt 0.103270 0.720930 +vt 0.092943 0.693023 +vt 0.092943 0.674419 +vt 0.130809 0.674419 +vt 0.103270 0.693023 +vt 0.103270 0.674419 +vt 0.103270 0.646512 +vt 0.130809 0.646512 +vt 0.130809 0.693023 +vt 0.141136 0.674419 +vt 0.141136 0.693023 +vt 0.130809 0.720930 +vt 0.103270 0.720930 +vt 0.092943 0.693023 +vt 0.092943 0.674419 +vt 0.103270 0.674419 +vt 0.130809 0.693023 +vt 0.103270 0.693023 +vt 0.092943 0.674419 +vt 0.092943 0.693023 +vt 0.130809 0.674419 +vt 0.103270 0.646512 +vt 0.130809 0.646512 +vt 0.141136 0.674419 +vt 0.141136 0.693023 +vt 0.130809 0.720930 +vt 0.103270 0.720930 +vt 0.103270 0.674419 +vt 0.130809 0.693023 +vt 0.103270 0.693023 +vt 0.092943 0.693023 +vt 0.092943 0.674419 +vt 0.130809 0.674419 +vt 0.103270 0.646512 +vt 0.130809 0.646512 +vt 0.141136 0.693023 +vt 0.141136 0.674419 +vt 0.130809 0.720930 +vt 0.103270 0.720930 +vt 0.130809 0.674419 +vt 0.103270 0.693023 +vt 0.103270 0.674419 +vt 0.103270 0.646512 +vt 0.130809 0.646512 +vt 0.130809 0.693023 +vt 0.141136 0.674419 +vt 0.141136 0.693023 +vt 0.130809 0.720930 +vt 0.103270 0.720930 +vt 0.092943 0.693023 +vt 0.092943 0.674419 +vt 0.130809 0.674419 +vt 0.103270 0.693023 +vt 0.103270 0.674419 +vt 0.103270 0.646512 +vt 0.130809 0.646512 +vt 0.130809 0.693023 +vt 0.141136 0.674419 +vt 0.141136 0.693023 +vt 0.130809 0.720930 +vt 0.103270 0.720930 +vt 0.092943 0.693023 +vt 0.092943 0.674419 +vt 0.130809 0.674419 +vt 0.103270 0.693023 +vt 0.103270 0.674419 +vt 0.103270 0.646512 +vt 0.130809 0.646512 +vt 0.130809 0.693023 +vt 0.141136 0.674419 +vt 0.141136 0.693023 +vt 0.130809 0.720930 +vt 0.103270 0.720930 +vt 0.092943 0.674419 +vt 0.092943 0.693023 +vt 0.130809 0.693023 +vn 0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.7071 0.7071 0.0000 +vn -0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +s off +f 2560/3561/476 2562/3562/476 2559/3563/476 +f 2560/3561/477 2546/3564/477 2554/3565/477 +f 2557/3566/478 2560/3561/478 2554/3567/478 +f 2562/3562/479 2557/3568/479 2549/3569/479 +f 2559/3563/480 2549/3570/480 2546/3571/480 +f 2564/3572/481 2566/3573/481 2563/3574/481 +f 2564/3572/482 2549/3575/482 2557/3576/482 +f 2565/3577/478 2557/3578/478 2555/3579/478 +f 2566/3573/483 2555/3580/483 2547/3581/483 +f 2563/3574/480 2547/3582/480 2549/3583/480 +f 2568/3584/483 2570/3585/483 2567/3586/483 +f 2568/3584/481 2545/3587/481 2553/3588/481 +f 2569/3589/478 2553/3590/478 2551/3591/478 +f 2570/3585/484 2551/3592/484 2543/3593/484 +f 2567/3586/480 2543/3594/480 2545/3595/480 +f 2572/3596/477 2574/3597/477 2571/3598/477 +f 2550/3599/480 2571/3598/480 2544/3600/480 +f 2573/3601/485 2550/3602/485 2558/3603/485 +f 2574/3597/478 2558/3604/478 2552/3605/478 +f 2571/3598/476 2552/3606/476 2544/3607/476 +f 2576/3608/479 2578/3609/479 2575/3610/479 +f 2576/3608/480 2545/3611/480 2547/3612/480 +f 2577/3613/476 2547/3614/476 2555/3615/476 +f 2553/3616/478 2577/3613/478 2555/3617/478 +f 2575/3610/485 2553/3618/485 2545/3619/485 +f 2580/3620/484 2582/3621/484 2579/3622/484 +f 2580/3620/483 2548/3623/483 2556/3624/483 +f 2581/3625/478 2556/3626/478 2558/3627/478 +f 2582/3621/482 2558/3628/482 2550/3629/482 +f 2579/3622/480 2550/3630/480 2548/3631/480 +f 2584/3632/482 2586/3633/482 2583/3634/482 +f 2584/3632/484 2544/3635/484 2552/3636/484 +f 2585/3637/478 2552/3638/478 2554/3639/478 +f 2586/3633/481 2554/3640/481 2546/3641/481 +f 2583/3634/480 2546/3642/480 2544/3643/480 +f 2588/3644/485 2590/3645/485 2587/3646/485 +f 2588/3644/479 2543/3647/479 2551/3648/479 +f 2589/3649/478 2551/3650/478 2556/3651/478 +f 2590/3645/477 2556/3652/477 2548/3653/477 +f 2543/3654/480 2590/3645/480 2548/3655/480 +f 2560/3561/476 2561/3656/476 2562/3562/476 +f 2560/3561/477 2559/3563/477 2546/3564/477 +f 2557/3566/478 2561/3656/478 2560/3561/478 +f 2562/3562/479 2561/3656/479 2557/3568/479 +f 2559/3563/480 2562/3562/480 2549/3570/480 +f 2564/3572/481 2565/3577/481 2566/3573/481 +f 2564/3572/482 2563/3574/482 2549/3575/482 +f 2565/3577/478 2564/3572/478 2557/3578/478 +f 2566/3573/483 2565/3577/483 2555/3580/483 +f 2563/3574/480 2566/3573/480 2547/3582/480 +f 2568/3584/483 2569/3589/483 2570/3585/483 +f 2568/3584/481 2567/3586/481 2545/3587/481 +f 2569/3589/478 2568/3584/478 2553/3590/478 +f 2570/3585/484 2569/3589/484 2551/3592/484 +f 2567/3586/480 2570/3585/480 2543/3594/480 +f 2572/3596/477 2573/3601/477 2574/3597/477 +f 2550/3599/480 2572/3596/480 2571/3598/480 +f 2573/3601/485 2572/3596/485 2550/3602/485 +f 2574/3597/478 2573/3601/478 2558/3604/478 +f 2571/3598/476 2574/3597/476 2552/3606/476 +f 2576/3608/479 2577/3613/479 2578/3609/479 +f 2576/3608/480 2575/3610/480 2545/3611/480 +f 2577/3613/476 2576/3608/476 2547/3614/476 +f 2553/3616/478 2578/3609/478 2577/3613/478 +f 2575/3610/485 2578/3609/485 2553/3618/485 +f 2580/3620/484 2581/3625/484 2582/3621/484 +f 2580/3620/483 2579/3622/483 2548/3623/483 +f 2581/3625/478 2580/3620/478 2556/3626/478 +f 2582/3621/482 2581/3625/482 2558/3628/482 +f 2579/3622/480 2582/3621/480 2550/3630/480 +f 2584/3632/482 2585/3637/482 2586/3633/482 +f 2584/3632/484 2583/3634/484 2544/3635/484 +f 2585/3637/478 2584/3632/478 2552/3638/478 +f 2586/3633/481 2585/3637/481 2554/3640/481 +f 2583/3634/480 2586/3633/480 2546/3642/480 +f 2588/3644/485 2589/3649/485 2590/3645/485 +f 2588/3644/479 2587/3646/479 2543/3647/479 +f 2589/3649/478 2588/3644/478 2551/3650/478 +f 2590/3645/477 2589/3649/477 2556/3652/477 +f 2543/3654/480 2587/3646/480 2590/3645/480 +o ShroudV +v -1.437500 0.374996 5.500000 +v 1.437500 0.374996 5.500000 +v -1.437500 0.374996 8.500000 +v 1.437500 0.374996 8.500000 +v 2.187500 0.749996 5.500000 +v 2.187500 0.749996 8.500000 +v 2.000000 6.062500 5.500000 +v 2.000000 6.062500 8.500000 +v -2.000000 6.062500 8.500000 +v -2.000000 6.062500 5.500000 +v 2.187500 6.250000 5.500000 +v 2.187500 6.250000 8.500000 +v 1.437500 7.000000 5.500000 +v -1.437500 7.000000 5.500000 +v 1.437500 7.000000 8.500000 +v -1.437500 7.000000 8.500000 +v 1.437500 -0.000004 8.500000 +v -1.437500 -0.000004 8.500000 +v 1.437500 -0.000004 5.500000 +v -1.437500 -0.000004 5.500000 +v -2.187500 6.250000 8.500000 +v -2.187500 6.250000 5.500000 +v -1.437500 6.625000 8.500000 +v 1.437500 6.625000 8.500000 +v -2.187500 0.749996 8.500000 +v -2.187500 0.749996 5.500000 +v -1.437500 6.625000 5.500000 +v 1.437500 6.625000 5.500000 +v 2.000000 0.937496 5.500000 +v 2.000000 0.937496 8.500000 +v -2.000000 0.937496 8.500000 +v -2.000000 0.937496 5.500000 +v 1.937497 6.500003 8.000000 +v 1.937497 6.875003 8.000000 +v 1.937497 6.500003 7.500000 +v 1.937497 6.875003 7.500000 +v 1.562497 6.500003 8.000000 +v 1.562497 6.875003 8.000000 +v 1.562497 6.500003 7.500000 +v 1.562497 6.875003 7.500000 +v 1.937497 6.500003 6.500000 +v 1.937497 6.875003 6.500000 +v 1.937497 6.500003 6.000000 +v 1.937497 6.875003 6.000000 +v 1.562497 6.500003 6.500000 +v 1.562497 6.875003 6.500000 +v 1.562497 6.500003 6.000000 +v 1.562497 6.875003 6.000000 +v -1.937497 6.500003 6.000000 +v -1.937497 6.875003 6.000000 +v -1.937497 6.500003 6.500000 +v -1.937497 6.875003 6.500000 +v -1.562497 6.500003 6.000000 +v -1.562497 6.875003 6.000000 +v -1.562497 6.500003 6.500000 +v -1.562497 6.875003 6.500000 +v -1.937497 6.500003 7.500000 +v -1.937497 6.875003 7.500000 +v -1.937497 6.500003 8.000000 +v -1.937497 6.875003 8.000000 +v -1.562497 6.500003 7.500000 +v -1.562497 6.875003 7.500000 +v -1.562497 6.500003 8.000000 +v -1.562497 6.875003 8.000000 +v -1.937497 0.499993 8.000000 +v -1.937497 0.124993 8.000000 +v -1.937497 0.499993 7.500000 +v -1.937497 0.124993 7.500000 +v -1.562497 0.499993 8.000000 +v -1.562497 0.124993 8.000000 +v -1.562497 0.499993 7.500000 +v -1.562497 0.124993 7.500000 +v -1.937497 0.499993 6.500000 +v -1.937497 0.124993 6.500000 +v -1.937497 0.499993 6.000000 +v -1.937497 0.124993 6.000000 +v -1.562497 0.499993 6.500000 +v -1.562497 0.124993 6.500000 +v -1.562497 0.499993 6.000000 +v -1.562497 0.124993 6.000000 +v 1.937497 0.499993 6.000000 +v 1.937497 0.124993 6.000000 +v 1.937497 0.499993 6.500000 +v 1.937497 0.124993 6.500000 +v 1.562497 0.499993 6.000000 +v 1.562497 0.124993 6.000000 +v 1.562497 0.499993 6.500000 +v 1.562497 0.124993 6.500000 +v 1.937497 0.499993 7.500000 +v 1.937497 0.124993 7.500000 +v 1.937497 0.499993 8.000000 +v 1.937497 0.124993 8.000000 +v 1.562497 0.499993 7.500000 +v 1.562497 0.124993 7.500000 +v 1.562497 0.499993 8.000000 +v 1.562497 0.124993 8.000000 +vt 0.767642 0.048837 +vt 0.772806 0.155814 +vt 0.767642 0.155814 +vt 0.726334 0.155814 +vt 0.721170 0.048837 +vt 0.726334 0.048837 +vt 0.629948 0.244186 +vt 0.633391 0.213953 +vt 0.633391 0.253488 +vt 0.678141 0.213953 +vt 0.719449 0.244186 +vt 0.678141 0.244186 +vt 0.674699 0.204651 +vt 0.674699 0.213953 +vt 0.679862 0.360465 +vt 0.721170 0.253488 +vt 0.721170 0.360465 +vt 0.674699 0.360465 +vt 0.633391 0.400000 +vt 0.633391 0.360465 +vt 0.767642 0.009302 +vt 0.674699 0.253488 +vt 0.628227 0.253488 +vt 0.726334 0.195349 +vt 0.814114 0.048837 +vt 0.814114 0.155814 +vt 0.726334 0.009302 +vt 0.767642 -0.000000 +vt 0.771084 0.009302 +vt 0.812392 0.039535 +vt 0.771084 0.039535 +vt 0.722892 0.039535 +vt 0.767642 0.195349 +vt 0.726334 0.204651 +vt 0.812392 0.195349 +vt 0.771084 0.165116 +vt 0.812392 0.165116 +vt 0.722892 0.165116 +vt 0.674699 0.400000 +vt 0.633391 0.409302 +vt 0.719449 0.400000 +vt 0.678141 0.369767 +vt 0.719449 0.369767 +vt 0.629948 0.369767 +vt 0.815835 0.632558 +vt 0.808950 0.646512 +vt 0.808950 0.632558 +vt 0.820998 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.646512 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.803787 0.660465 +vt 0.815835 0.660465 +vt 0.815835 0.632558 +vt 0.808950 0.646512 +vt 0.808950 0.632558 +vt 0.820998 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.646512 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.803787 0.660465 +vt 0.815835 0.660465 +vt 0.815835 0.632558 +vt 0.808950 0.646512 +vt 0.808950 0.632558 +vt 0.820998 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.646512 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.803787 0.660465 +vt 0.815835 0.660465 +vt 0.815835 0.632558 +vt 0.808950 0.646512 +vt 0.808950 0.632558 +vt 0.820998 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.646512 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.803787 0.660465 +vt 0.815835 0.660465 +vt 0.815835 0.632558 +vt 0.808950 0.646512 +vt 0.808950 0.632558 +vt 0.820998 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.646512 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.803787 0.660465 +vt 0.815835 0.660465 +vt 0.815835 0.632558 +vt 0.808950 0.646512 +vt 0.808950 0.632558 +vt 0.820998 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.646512 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.803787 0.660465 +vt 0.815835 0.660465 +vt 0.815835 0.632558 +vt 0.808950 0.646512 +vt 0.808950 0.632558 +vt 0.820998 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.646512 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.803787 0.660465 +vt 0.815835 0.660465 +vt 0.815835 0.632558 +vt 0.808950 0.646512 +vt 0.808950 0.632558 +vt 0.820998 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.646512 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.803787 0.660465 +vt 0.815835 0.660465 +vt 0.772806 0.048837 +vt 0.721170 0.155814 +vt 0.629948 0.213953 +vt 0.719449 0.213953 +vt 0.633391 0.204651 +vt 0.679862 0.253488 +vt 0.628227 0.360465 +vt 0.726334 -0.000000 +vt 0.812392 0.009302 +vt 0.722892 0.009302 +vt 0.767642 0.204651 +vt 0.771084 0.195349 +vt 0.722892 0.195349 +vt 0.674699 0.409302 +vt 0.678141 0.400000 +vt 0.629948 0.400000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +s off +f 2607/3657/486 2593/3658/486 2608/3659/486 +f 2610/3660/487 2592/3661/487 2609/3662/487 +f 2617/3663/487 2612/3664/487 2604/3665/487 +f 2599/3666/488 2617/3667/488 2613/3668/488 +f 2612/3664/489 2599/3669/489 2611/3670/489 +f 2614/3671/490 2617/3672/490 2618/3673/490 +f 2605/3674/491 2601/3675/491 2603/3676/491 +f 2609/3662/488 2596/3677/488 2607/3657/488 +f 2605/3674/492 2604/3665/492 2606/3678/492 +f 2604/3665/493 2611/3670/493 2606/3678/493 +f 2608/3659/490 2609/3662/490 2607/3657/490 +f 2603/3676/487 2617/3679/487 2604/3665/487 +f 2608/3659/489 2616/3680/489 2610/3660/489 +f 2606/3678/486 2614/3671/486 2605/3674/486 +f 2593/3658/492 2592/3681/492 2591/3682/492 +f 2595/3683/491 2620/3684/491 2596/3677/491 +f 2620/3685/493 2592/3686/493 2594/3687/493 +f 2592/3688/487 2595/3683/487 2609/3662/487 +f 2596/3677/486 2594/3687/486 2607/3657/486 +f 2615/3689/493 2622/3690/493 2616/3680/493 +f 2622/3691/491 2593/3692/491 2591/3693/491 +f 2616/3680/487 2591/3694/487 2610/3660/487 +f 2593/3692/486 2615/3689/486 2608/3659/486 +f 2611/3670/486 2613/3668/486 2606/3678/486 +f 2602/3695/488 2597/3696/488 2601/3675/488 +f 2597/3697/489 2614/3698/489 2618/3699/489 +f 2601/3675/487 2618/3700/487 2603/3676/487 +f 2614/3698/486 2602/3695/486 2605/3674/486 +f 2625/3701/494 2624/3702/494 2623/3703/494 +f 2629/3704/487 2626/3705/487 2625/3706/487 +f 2623/3707/486 2628/3708/486 2627/3709/486 +f 2628/3708/492 2626/3705/492 2630/3710/492 +f 2633/3711/494 2632/3712/494 2631/3713/494 +f 2637/3714/487 2634/3715/487 2633/3716/487 +f 2631/3717/486 2636/3718/486 2635/3719/486 +f 2636/3718/492 2634/3715/492 2638/3720/492 +f 2641/3721/495 2640/3722/495 2639/3723/495 +f 2645/3724/486 2642/3725/486 2641/3726/486 +f 2639/3727/487 2644/3728/487 2643/3729/487 +f 2644/3728/492 2642/3725/492 2646/3730/492 +f 2649/3731/495 2648/3732/495 2647/3733/495 +f 2653/3734/486 2650/3735/486 2649/3736/486 +f 2647/3737/487 2652/3738/487 2651/3739/487 +f 2652/3738/492 2650/3735/492 2654/3740/492 +f 2657/3741/495 2656/3742/495 2655/3743/495 +f 2661/3744/487 2658/3745/487 2657/3746/487 +f 2655/3747/486 2660/3748/486 2659/3749/486 +f 2660/3748/490 2658/3745/490 2662/3750/490 +f 2665/3751/495 2664/3752/495 2663/3753/495 +f 2669/3754/487 2666/3755/487 2665/3756/487 +f 2663/3757/486 2668/3758/486 2667/3759/486 +f 2668/3758/490 2666/3755/490 2670/3760/490 +f 2673/3761/494 2672/3762/494 2671/3763/494 +f 2677/3764/486 2674/3765/486 2673/3766/486 +f 2671/3767/487 2676/3768/487 2675/3769/487 +f 2676/3768/490 2674/3765/490 2678/3770/490 +f 2681/3771/494 2680/3772/494 2679/3773/494 +f 2685/3774/486 2682/3775/486 2681/3776/486 +f 2679/3777/487 2684/3778/487 2683/3779/487 +f 2684/3778/490 2682/3775/490 2686/3780/490 +f 2607/3657/486 2594/3781/486 2593/3658/486 +f 2610/3660/487 2591/3782/487 2592/3661/487 +f 2617/3663/487 2600/3783/487 2612/3664/487 +f 2599/3666/488 2600/3784/488 2617/3667/488 +f 2612/3664/489 2600/3785/489 2599/3669/489 +f 2614/3671/490 2613/3786/490 2617/3672/490 +f 2605/3674/491 2602/3695/491 2601/3675/491 +f 2609/3662/488 2595/3683/488 2596/3677/488 +f 2605/3674/492 2603/3676/492 2604/3665/492 +f 2604/3665/493 2612/3664/493 2611/3670/493 +f 2608/3659/490 2610/3660/490 2609/3662/490 +f 2603/3676/487 2618/3787/487 2617/3679/487 +f 2608/3659/489 2615/3689/489 2616/3680/489 +f 2606/3678/486 2613/3786/486 2614/3671/486 +f 2593/3658/492 2594/3781/492 2592/3681/492 +f 2595/3683/491 2619/3788/491 2620/3684/491 +f 2620/3685/493 2619/3789/493 2592/3686/493 +f 2592/3688/487 2619/3790/487 2595/3683/487 +f 2596/3677/486 2620/3685/486 2594/3687/486 +f 2615/3689/493 2621/3791/493 2622/3690/493 +f 2622/3691/491 2621/3792/491 2593/3692/491 +f 2616/3680/487 2622/3793/487 2591/3694/487 +f 2593/3692/486 2621/3792/486 2615/3689/486 +f 2611/3670/486 2599/3666/486 2613/3668/486 +f 2602/3695/488 2598/3794/488 2597/3696/488 +f 2597/3697/489 2598/3795/489 2614/3698/489 +f 2601/3675/487 2597/3796/487 2618/3700/487 +f 2614/3698/486 2598/3795/486 2602/3695/486 +f 2625/3701/494 2626/3705/494 2624/3702/494 +f 2629/3704/487 2630/3710/487 2626/3705/487 +f 2623/3707/486 2624/3702/486 2628/3708/486 +f 2628/3708/492 2624/3702/492 2626/3705/492 +f 2633/3711/494 2634/3715/494 2632/3712/494 +f 2637/3714/487 2638/3720/487 2634/3715/487 +f 2631/3717/486 2632/3712/486 2636/3718/486 +f 2636/3718/492 2632/3712/492 2634/3715/492 +f 2641/3721/495 2642/3725/495 2640/3722/495 +f 2645/3724/486 2646/3730/486 2642/3725/486 +f 2639/3727/487 2640/3722/487 2644/3728/487 +f 2644/3728/492 2640/3722/492 2642/3725/492 +f 2649/3731/495 2650/3735/495 2648/3732/495 +f 2653/3734/486 2654/3740/486 2650/3735/486 +f 2647/3737/487 2648/3732/487 2652/3738/487 +f 2652/3738/492 2648/3732/492 2650/3735/492 +f 2657/3741/495 2658/3745/495 2656/3742/495 +f 2661/3744/487 2662/3750/487 2658/3745/487 +f 2655/3747/486 2656/3742/486 2660/3748/486 +f 2660/3748/490 2656/3742/490 2658/3745/490 +f 2665/3751/495 2666/3755/495 2664/3752/495 +f 2669/3754/487 2670/3760/487 2666/3755/487 +f 2663/3757/486 2664/3752/486 2668/3758/486 +f 2668/3758/490 2664/3752/490 2666/3755/490 +f 2673/3761/494 2674/3765/494 2672/3762/494 +f 2677/3764/486 2678/3770/486 2674/3765/486 +f 2671/3767/487 2672/3762/487 2676/3768/487 +f 2676/3768/490 2672/3762/490 2674/3765/490 +f 2681/3771/494 2682/3775/494 2680/3772/494 +f 2685/3774/486 2686/3780/486 2682/3775/486 +f 2679/3777/487 2680/3772/487 2684/3778/487 +f 2684/3778/490 2680/3772/490 2682/3775/490 +o ShroudH +v 2.562502 1.499998 8.500000 +v 2.562502 1.499998 5.500000 +v -2.750002 1.312499 8.500000 +v -2.750002 1.312499 5.500000 +v -3.125002 2.062499 8.500000 +v -3.125002 4.937499 8.500000 +v -3.125002 2.062499 5.500000 +v -3.125002 4.937499 5.500000 +v 2.562502 5.499998 8.500000 +v 2.562502 5.499998 5.500000 +v 2.750002 1.312498 5.500000 +v 2.750002 1.312498 8.500000 +v 3.500002 2.062498 5.500000 +v 3.500002 4.937498 5.500000 +v 3.500002 2.062498 8.500000 +v 3.500002 4.937498 8.500000 +v -3.500002 2.062499 8.500000 +v -3.500002 4.937499 8.500000 +v -3.500002 2.062499 5.500000 +v -3.500002 4.937499 5.500000 +v 2.750002 5.687498 8.500000 +v 2.750002 5.687498 5.500000 +v 3.125002 4.937498 8.500000 +v 3.125002 2.062498 8.500000 +v -2.750002 5.687499 8.500000 +v -2.750002 5.687499 5.500000 +v 3.125002 4.937498 5.500000 +v 3.125002 2.062498 5.500000 +v -2.562502 1.499999 5.500000 +v -2.562502 1.499999 8.500000 +v -2.562502 5.499999 8.500000 +v -2.562502 5.499999 5.500000 +v -3.000005 5.437495 8.000000 +v -3.375005 5.437495 8.000000 +v -3.000005 5.437495 7.500000 +v -3.375005 5.437495 7.500000 +v -3.000005 5.062495 8.000000 +v -3.375005 5.062495 8.000000 +v -3.000005 5.062495 7.500000 +v -3.375005 5.062495 7.500000 +v -3.000005 5.437495 6.500000 +v -3.375005 5.437495 6.500000 +v -3.000005 5.437495 6.000000 +v -3.375005 5.437495 6.000000 +v -3.000005 5.062495 6.500000 +v -3.375005 5.062495 6.500000 +v -3.000005 5.062495 6.000000 +v -3.375005 5.062495 6.000000 +v -3.000005 1.562501 6.000000 +v -3.375005 1.562501 6.000000 +v -3.000005 1.562501 6.500000 +v -3.375005 1.562501 6.500000 +v -3.000005 1.937501 6.000000 +v -3.375005 1.937501 6.000000 +v -3.000005 1.937501 6.500000 +v -3.375005 1.937501 6.500000 +v -3.000005 1.562501 7.500000 +v -3.375005 1.562501 7.500000 +v -3.000005 1.562501 8.000000 +v -3.375005 1.562501 8.000000 +v -3.000005 1.937501 7.500000 +v -3.375005 1.937501 7.500000 +v -3.000005 1.937501 8.000000 +v -3.375005 1.937501 8.000000 +v 3.000005 1.562501 8.000000 +v 3.375005 1.562501 8.000000 +v 3.000005 1.562501 7.500000 +v 3.375005 1.562501 7.500000 +v 3.000005 1.937501 8.000000 +v 3.375005 1.937501 8.000000 +v 3.000005 1.937501 7.500000 +v 3.375005 1.937501 7.500000 +v 3.000005 1.562501 6.500000 +v 3.375005 1.562501 6.500000 +v 3.000005 1.562501 6.000000 +v 3.375005 1.562501 6.000000 +v 3.000005 1.937501 6.500000 +v 3.375005 1.937501 6.500000 +v 3.000005 1.937501 6.000000 +v 3.375005 1.937501 6.000000 +v 3.000005 5.437495 6.000000 +v 3.375005 5.437495 6.000000 +v 3.000005 5.437495 6.500000 +v 3.375005 5.437495 6.500000 +v 3.000005 5.062495 6.000000 +v 3.375005 5.062495 6.000000 +v 3.000005 5.062495 6.500000 +v 3.375005 5.062495 6.500000 +v 3.000005 5.437495 7.500000 +v 3.375005 5.437495 7.500000 +v 3.000005 5.437495 8.000000 +v 3.375005 5.437495 8.000000 +v 3.000005 5.062495 7.500000 +v 3.375005 5.062495 7.500000 +v 3.000005 5.062495 8.000000 +v 3.375005 5.062495 8.000000 +vt 0.674699 0.048837 +vt 0.679862 0.155814 +vt 0.674699 0.155814 +vt 0.633391 0.155814 +vt 0.628227 0.048837 +vt 0.633391 0.048837 +vt 0.722892 0.244186 +vt 0.726334 0.213953 +vt 0.726334 0.253488 +vt 0.771084 0.213953 +vt 0.812392 0.244186 +vt 0.771084 0.244186 +vt 0.767642 0.204651 +vt 0.767642 0.213953 +vt 0.772806 0.360465 +vt 0.814114 0.253488 +vt 0.814114 0.360465 +vt 0.767642 0.360465 +vt 0.726334 0.400000 +vt 0.726334 0.360465 +vt 0.674699 0.009302 +vt 0.767642 0.253488 +vt 0.721170 0.253488 +vt 0.633391 0.195349 +vt 0.721170 0.048837 +vt 0.721170 0.155814 +vt 0.633391 0.009302 +vt 0.674699 -0.000000 +vt 0.678141 0.009302 +vt 0.719449 0.039535 +vt 0.678141 0.039535 +vt 0.629948 0.039535 +vt 0.674699 0.195349 +vt 0.633391 0.204651 +vt 0.719449 0.195349 +vt 0.678141 0.165116 +vt 0.719449 0.165116 +vt 0.629948 0.165116 +vt 0.767642 0.400000 +vt 0.726334 0.409302 +vt 0.812392 0.400000 +vt 0.771084 0.369767 +vt 0.812392 0.369767 +vt 0.722892 0.369767 +vt 0.815835 0.632558 +vt 0.808950 0.646512 +vt 0.808950 0.632558 +vt 0.820998 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.646512 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.803787 0.660465 +vt 0.815835 0.660465 +vt 0.815835 0.632558 +vt 0.808950 0.646512 +vt 0.808950 0.632558 +vt 0.820998 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.646512 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.803787 0.660465 +vt 0.815835 0.660465 +vt 0.815835 0.632558 +vt 0.808950 0.646512 +vt 0.808950 0.632558 +vt 0.820998 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.646512 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.803787 0.660465 +vt 0.815835 0.660465 +vt 0.815835 0.632558 +vt 0.808950 0.646512 +vt 0.808950 0.632558 +vt 0.820998 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.646512 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.803787 0.660465 +vt 0.815835 0.660465 +vt 0.815835 0.632558 +vt 0.808950 0.646512 +vt 0.808950 0.632558 +vt 0.820998 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.646512 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.803787 0.660465 +vt 0.815835 0.660465 +vt 0.815835 0.632558 +vt 0.808950 0.646512 +vt 0.808950 0.632558 +vt 0.820998 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.646512 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.803787 0.660465 +vt 0.815835 0.660465 +vt 0.815835 0.632558 +vt 0.808950 0.646512 +vt 0.808950 0.632558 +vt 0.820998 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.646512 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.803787 0.660465 +vt 0.815835 0.660465 +vt 0.815835 0.632558 +vt 0.808950 0.646512 +vt 0.808950 0.632558 +vt 0.820998 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.646512 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.803787 0.660465 +vt 0.815835 0.660465 +vt 0.679862 0.048837 +vt 0.628227 0.155814 +vt 0.722892 0.213953 +vt 0.812392 0.213953 +vt 0.726334 0.204651 +vt 0.772806 0.253488 +vt 0.721170 0.360465 +vt 0.633391 -0.000000 +vt 0.719449 0.009302 +vt 0.629948 0.009302 +vt 0.674699 0.204651 +vt 0.678141 0.195349 +vt 0.629948 0.195349 +vt 0.767642 0.409302 +vt 0.771084 0.400000 +vt 0.722892 0.400000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 2703/3797/496 2692/3798/496 2704/3799/496 +f 2706/3800/497 2693/3801/497 2705/3802/497 +f 2713/3803/497 2708/3804/497 2700/3805/497 +f 2695/3806/498 2713/3807/498 2709/3808/498 +f 2708/3804/499 2695/3809/499 2707/3810/499 +f 2710/3811/500 2713/3812/500 2714/3813/500 +f 2701/3814/501 2697/3815/501 2699/3816/501 +f 2705/3802/498 2689/3817/498 2703/3797/498 +f 2701/3814/502 2700/3805/502 2702/3818/502 +f 2700/3805/503 2707/3810/503 2702/3818/503 +f 2704/3799/500 2705/3802/500 2703/3797/500 +f 2699/3816/497 2713/3819/497 2700/3805/497 +f 2704/3799/499 2712/3820/499 2706/3800/499 +f 2702/3818/496 2710/3811/496 2701/3814/496 +f 2692/3798/502 2693/3821/502 2694/3822/502 +f 2690/3823/501 2716/3824/501 2689/3817/501 +f 2716/3825/503 2693/3826/503 2691/3827/503 +f 2693/3828/497 2690/3823/497 2705/3802/497 +f 2689/3817/496 2691/3827/496 2703/3797/496 +f 2711/3829/503 2718/3830/503 2712/3820/503 +f 2718/3831/501 2692/3832/501 2694/3833/501 +f 2712/3820/497 2694/3834/497 2706/3800/497 +f 2692/3832/496 2711/3829/496 2704/3799/496 +f 2707/3810/496 2709/3808/496 2702/3818/496 +f 2698/3835/498 2688/3836/498 2697/3815/498 +f 2688/3837/499 2710/3838/499 2714/3839/499 +f 2697/3815/497 2714/3840/497 2699/3816/497 +f 2710/3838/496 2698/3835/496 2701/3814/496 +f 2721/3841/504 2720/3842/504 2719/3843/504 +f 2725/3844/497 2722/3845/497 2721/3846/497 +f 2719/3847/496 2724/3848/496 2723/3849/496 +f 2724/3848/500 2722/3845/500 2726/3850/500 +f 2729/3851/504 2728/3852/504 2727/3853/504 +f 2733/3854/497 2730/3855/497 2729/3856/497 +f 2727/3857/496 2732/3858/496 2731/3859/496 +f 2732/3858/500 2730/3855/500 2734/3860/500 +f 2737/3861/505 2736/3862/505 2735/3863/505 +f 2741/3864/496 2738/3865/496 2737/3866/496 +f 2735/3867/497 2740/3868/497 2739/3869/497 +f 2740/3868/500 2738/3865/500 2742/3870/500 +f 2745/3871/505 2744/3872/505 2743/3873/505 +f 2749/3874/496 2746/3875/496 2745/3876/496 +f 2743/3877/497 2748/3878/497 2747/3879/497 +f 2748/3878/500 2746/3875/500 2750/3880/500 +f 2753/3881/505 2752/3882/505 2751/3883/505 +f 2757/3884/497 2754/3885/497 2753/3886/497 +f 2751/3887/496 2756/3888/496 2755/3889/496 +f 2756/3888/502 2754/3885/502 2758/3890/502 +f 2761/3891/505 2760/3892/505 2759/3893/505 +f 2765/3894/497 2762/3895/497 2761/3896/497 +f 2759/3897/496 2764/3898/496 2763/3899/496 +f 2764/3898/502 2762/3895/502 2766/3900/502 +f 2769/3901/504 2768/3902/504 2767/3903/504 +f 2773/3904/496 2770/3905/496 2769/3906/496 +f 2767/3907/497 2772/3908/497 2771/3909/497 +f 2772/3908/502 2770/3905/502 2774/3910/502 +f 2777/3911/504 2776/3912/504 2775/3913/504 +f 2781/3914/496 2778/3915/496 2777/3916/496 +f 2775/3917/497 2780/3918/497 2779/3919/497 +f 2780/3918/502 2778/3915/502 2782/3920/502 +f 2703/3797/496 2691/3921/496 2692/3798/496 +f 2706/3800/497 2694/3922/497 2693/3801/497 +f 2713/3803/497 2696/3923/497 2708/3804/497 +f 2695/3806/498 2696/3924/498 2713/3807/498 +f 2708/3804/499 2696/3925/499 2695/3809/499 +f 2710/3811/500 2709/3926/500 2713/3812/500 +f 2701/3814/501 2698/3835/501 2697/3815/501 +f 2705/3802/498 2690/3823/498 2689/3817/498 +f 2701/3814/502 2699/3816/502 2700/3805/502 +f 2700/3805/503 2708/3804/503 2707/3810/503 +f 2704/3799/500 2706/3800/500 2705/3802/500 +f 2699/3816/497 2714/3927/497 2713/3819/497 +f 2704/3799/499 2711/3829/499 2712/3820/499 +f 2702/3818/496 2709/3926/496 2710/3811/496 +f 2692/3798/502 2691/3921/502 2693/3821/502 +f 2690/3823/501 2715/3928/501 2716/3824/501 +f 2716/3825/503 2715/3929/503 2693/3826/503 +f 2693/3828/497 2715/3930/497 2690/3823/497 +f 2689/3817/496 2716/3825/496 2691/3827/496 +f 2711/3829/503 2717/3931/503 2718/3830/503 +f 2718/3831/501 2717/3932/501 2692/3832/501 +f 2712/3820/497 2718/3933/497 2694/3834/497 +f 2692/3832/496 2717/3932/496 2711/3829/496 +f 2707/3810/496 2695/3806/496 2709/3808/496 +f 2698/3835/498 2687/3934/498 2688/3836/498 +f 2688/3837/499 2687/3935/499 2710/3838/499 +f 2697/3815/497 2688/3936/497 2714/3840/497 +f 2710/3838/496 2687/3935/496 2698/3835/496 +f 2721/3841/504 2722/3845/504 2720/3842/504 +f 2725/3844/497 2726/3850/497 2722/3845/497 +f 2719/3847/496 2720/3842/496 2724/3848/496 +f 2724/3848/500 2720/3842/500 2722/3845/500 +f 2729/3851/504 2730/3855/504 2728/3852/504 +f 2733/3854/497 2734/3860/497 2730/3855/497 +f 2727/3857/496 2728/3852/496 2732/3858/496 +f 2732/3858/500 2728/3852/500 2730/3855/500 +f 2737/3861/505 2738/3865/505 2736/3862/505 +f 2741/3864/496 2742/3870/496 2738/3865/496 +f 2735/3867/497 2736/3862/497 2740/3868/497 +f 2740/3868/500 2736/3862/500 2738/3865/500 +f 2745/3871/505 2746/3875/505 2744/3872/505 +f 2749/3874/496 2750/3880/496 2746/3875/496 +f 2743/3877/497 2744/3872/497 2748/3878/497 +f 2748/3878/500 2744/3872/500 2746/3875/500 +f 2753/3881/505 2754/3885/505 2752/3882/505 +f 2757/3884/497 2758/3890/497 2754/3885/497 +f 2751/3887/496 2752/3882/496 2756/3888/496 +f 2756/3888/502 2752/3882/502 2754/3885/502 +f 2761/3891/505 2762/3895/505 2760/3892/505 +f 2765/3894/497 2766/3900/497 2762/3895/497 +f 2759/3897/496 2760/3892/496 2764/3898/496 +f 2764/3898/502 2760/3892/502 2762/3895/502 +f 2769/3901/504 2770/3905/504 2768/3902/504 +f 2773/3904/496 2774/3910/496 2770/3905/496 +f 2767/3907/497 2768/3902/497 2772/3908/497 +f 2772/3908/502 2768/3902/502 2770/3905/502 +f 2777/3911/504 2778/3915/504 2776/3912/504 +f 2781/3914/496 2782/3920/496 2778/3915/496 +f 2775/3917/497 2776/3912/497 2780/3918/497 +f 2780/3918/502 2776/3912/502 2778/3915/502 +o Engine +v 0.000000 6.499998 9.499993 +v -1.148050 6.271637 9.499993 +v -2.121320 5.621321 9.499993 +v -2.771638 4.648046 9.499993 +v -3.000000 3.499998 9.499993 +v -2.771638 2.351950 9.499993 +v -2.121320 1.378675 9.499993 +v -1.148050 0.728359 9.499993 +v 0.000000 0.499998 9.499993 +v 1.148049 0.728359 9.499993 +v 2.121320 1.378675 9.499993 +v 2.771639 2.351950 9.499993 +v 3.000000 3.499998 9.499993 +v 2.771639 4.648046 9.499993 +v 2.121320 5.621321 9.499993 +v 1.148049 6.271637 9.499993 +v 0.000000 6.249998 9.499994 +v -1.052380 6.040667 9.499994 +v -1.944543 5.444544 9.499994 +v -2.540668 4.552376 9.499994 +v -2.750000 3.499998 9.499994 +v -2.540668 2.447620 9.499994 +v -1.944543 1.555452 9.499994 +v -1.052380 0.959329 9.499994 +v 0.000000 0.749998 9.499994 +v 1.052379 0.959329 9.499994 +v 1.944543 1.555452 9.499994 +v 2.540668 2.447620 9.499994 +v 2.750000 3.499998 9.499994 +v 2.540668 4.552376 9.499994 +v 1.944543 5.444544 9.499994 +v 1.052379 6.040667 9.499994 +v 2.750000 3.499998 8.499994 +v 2.500000 3.499998 6.999994 +v 1.750000 3.499998 4.999994 +v 0.750000 3.499998 3.499994 +v 0.000000 3.499998 2.999994 +v -2.750000 3.500002 8.499994 +v -2.500000 3.500002 6.999994 +v -1.750000 3.500002 4.999994 +v -0.750000 3.500002 3.499994 +v -0.000002 0.750000 8.499994 +v -0.000002 1.000000 6.999994 +v -0.000002 1.750000 4.999995 +v -0.000002 2.750000 3.499995 +v 0.000002 6.250000 8.499994 +v 0.000002 6.000000 6.999994 +v 0.000002 5.250000 4.999995 +v 0.000002 4.250000 3.499995 +v 1.944542 1.555455 8.499994 +v 1.767765 1.732232 6.999994 +v 1.237435 2.262562 4.999994 +v 0.530329 2.969669 3.499994 +v -1.944542 5.444545 8.499994 +v -1.767765 5.267768 6.999994 +v -1.237435 4.737438 4.999994 +v -0.530329 4.030331 3.499994 +v -1.944545 1.555458 8.499994 +v -1.767768 1.732235 6.999994 +v -1.237438 2.262565 4.999995 +v -0.530332 2.969671 3.499995 +v 1.944546 5.444542 8.499994 +v 1.767769 5.267766 6.999994 +v 1.237438 4.737435 4.999995 +v 0.530332 4.030329 3.499995 +v 1.052378 0.959331 8.499994 +v 0.956707 1.190301 6.999994 +v 0.669694 1.883210 4.999994 +v 0.287011 2.807090 3.499994 +v -1.052378 6.040669 8.499994 +v -0.956706 5.809700 6.999994 +v -0.669694 5.116790 4.999994 +v -0.287011 4.192910 3.499994 +v -2.540669 2.447623 8.499994 +v -2.309699 2.543293 6.999994 +v -1.616790 2.830306 4.999995 +v -0.692910 3.212989 3.499995 +v 2.540669 4.552377 8.499994 +v 2.309700 4.456707 6.999994 +v 1.616790 4.169694 4.999995 +v 0.692910 3.787011 3.499995 +v -1.052382 0.959332 8.499994 +v -0.956710 1.190302 6.999994 +v -0.669698 1.883212 4.999994 +v -0.287014 2.807091 3.499994 +v 1.052382 6.040668 8.499994 +v 0.956711 5.809698 6.999994 +v 0.669698 5.116788 4.999994 +v 0.287014 4.192909 3.499994 +v -2.540668 4.552382 8.499994 +v -2.309698 4.456710 6.999994 +v -1.616788 4.169698 4.999995 +v -0.692908 3.787014 3.499995 +v 2.540668 2.447618 8.499994 +v 2.309698 2.543289 6.999994 +v 1.616789 2.830302 4.999995 +v 0.692909 3.212986 3.499995 +v 3.000000 3.499998 8.499994 +v 2.750000 3.499998 6.999994 +v 2.000000 3.499998 4.999994 +v 0.750000 3.499998 3.249994 +v 0.000000 3.499998 2.749994 +v -3.000000 3.500002 8.499994 +v -2.750000 3.500002 6.999994 +v -2.000000 3.500002 4.999994 +v -0.750000 3.500002 3.249994 +v -0.000002 0.500000 8.499994 +v -0.000002 0.750000 6.999994 +v -0.000002 1.500000 4.999995 +v -0.000002 2.750000 3.249995 +v 0.000002 6.500000 8.499994 +v 0.000002 6.250000 6.999994 +v 0.000002 5.500000 4.999995 +v 0.000002 4.250000 3.249995 +v 2.121319 1.378678 8.499994 +v 1.944542 1.555455 6.999994 +v 1.414212 2.085785 4.999994 +v 0.530329 2.969669 3.249994 +v -2.121319 5.621322 8.499994 +v -1.944542 5.444545 6.999994 +v -1.414212 4.914215 4.999994 +v -0.530329 4.030331 3.249994 +v -2.121322 1.378681 8.499994 +v -1.944545 1.555458 6.999994 +v -1.414215 2.085788 4.999995 +v -0.530332 2.969671 3.249995 +v 2.121322 5.621319 8.499994 +v 1.944546 5.444542 6.999994 +v 1.414215 4.914212 4.999995 +v 0.530332 4.030329 3.249995 +v 1.148048 0.728361 8.499994 +v 1.052378 0.959331 6.999994 +v 0.765365 1.652241 4.999994 +v 0.287011 2.807090 3.249994 +v -1.148048 6.271639 8.499994 +v -1.052378 6.040669 6.999994 +v -0.765365 5.347760 4.999994 +v -0.287011 4.192910 3.249994 +v -2.771639 2.351952 8.499994 +v -2.540669 2.447623 6.999994 +v -1.847759 2.734635 4.999995 +v -0.692910 3.212989 3.249995 +v 2.771639 4.648048 8.499994 +v 2.540669 4.552377 6.999994 +v 1.847760 4.265365 4.999995 +v 0.692910 3.787011 3.249995 +v -1.148052 0.728363 8.499994 +v -1.052382 0.959332 6.999994 +v -0.765368 1.652242 4.999994 +v -0.287014 2.807091 3.249994 +v 1.148052 6.271637 8.499994 +v 1.052382 6.040668 6.999994 +v 0.765369 5.347758 4.999994 +v 0.287014 4.192909 3.249994 +v -2.771637 4.648052 8.499994 +v -2.540668 4.552382 6.999994 +v -1.847758 4.265368 4.999995 +v -0.692908 3.787014 3.249995 +v 2.771638 2.351948 8.499994 +v 2.540668 2.447618 6.999994 +v 1.847758 2.734631 4.999995 +v 0.692909 3.212986 3.249995 +vt 0.046472 0.009302 +vt 0.031842 -0.000000 +vt 0.046472 0.000000 +vt 0.015491 0.009302 +vt 0.030981 -0.000000 +vt 0.030981 0.009302 +vt 0.000000 0.009302 +vt 0.015491 -0.000000 +vt 0.232358 0.009302 +vt 0.247849 0.000000 +vt 0.247849 0.009302 +vt 0.217728 -0.000000 +vt 0.232358 -0.000000 +vt 0.201377 0.009302 +vt 0.216867 -0.000000 +vt 0.216867 0.009302 +vt 0.186747 0.000000 +vt 0.201377 -0.000000 +vt 0.170396 0.009302 +vt 0.185886 0.000000 +vt 0.185886 0.009302 +vt 0.155766 -0.000000 +vt 0.170396 0.000000 +vt 0.139415 0.009302 +vt 0.154905 -0.000000 +vt 0.154905 0.009302 +vt 0.123924 0.009302 +vt 0.139415 0.000000 +vt 0.108434 0.009302 +vt 0.123924 -0.000000 +vt 0.093804 0.000000 +vt 0.108434 0.000000 +vt 0.077453 0.009302 +vt 0.092943 0.000000 +vt 0.092943 0.009302 +vt 0.062823 -0.000000 +vt 0.077453 0.000000 +vt 0.061962 -0.000000 +vt 0.061962 0.009302 +vt 0.016351 0.000000 +vt 0.000861 0.000000 +vt 0.233219 -0.000000 +vt 0.202238 -0.000000 +vt 0.171256 0.000000 +vt 0.140275 0.000000 +vt 0.124785 -0.000000 +vt 0.109294 0.000000 +vt 0.078313 0.000000 +vt 0.047332 0.000000 +vt 0.481067 0.093023 +vt 0.467298 0.037209 +vt 0.481928 0.037209 +vt 0.453528 0.093023 +vt 0.466437 0.093023 +vt 0.438038 0.037209 +vt 0.451807 0.093023 +vt 0.438898 0.093023 +vt 0.423408 0.037209 +vt 0.437177 0.093023 +vt 0.424269 0.093023 +vt 0.408778 0.037209 +vt 0.422547 0.093023 +vt 0.409639 0.093023 +vt 0.394148 0.037209 +vt 0.407917 0.093023 +vt 0.395009 0.093023 +vt 0.379518 0.037209 +vt 0.393287 0.093023 +vt 0.380379 0.093023 +vt 0.364888 0.037209 +vt 0.378657 0.093023 +vt 0.365749 0.093023 +vt 0.350258 0.037209 +vt 0.364028 0.093023 +vt 0.351119 0.093023 +vt 0.335628 0.037209 +vt 0.349398 0.093023 +vt 0.336489 0.093023 +vt 0.261618 0.093023 +vt 0.247849 0.037209 +vt 0.262478 0.037209 +vt 0.263339 0.093023 +vt 0.277108 0.037209 +vt 0.276248 0.093023 +vt 0.277969 0.093023 +vt 0.291738 0.037209 +vt 0.290878 0.093023 +vt 0.305508 0.093023 +vt 0.306368 0.037209 +vt 0.307229 0.093023 +vt 0.320998 0.037209 +vt 0.320138 0.093023 +vt 0.334768 0.093023 +vt 0.303787 0.172093 +vt 0.292599 0.093023 +vt 0.296902 0.239535 +vt 0.301205 0.239535 +vt 0.265060 0.172093 +vt 0.274527 0.172093 +vt 0.271945 0.239535 +vt 0.289157 0.172093 +vt 0.279690 0.172093 +vt 0.286575 0.239535 +vt 0.282272 0.239535 +vt 0.248709 0.093023 +vt 0.259897 0.172093 +vt 0.250430 0.172093 +vt 0.257315 0.239535 +vt 0.253012 0.239535 +vt 0.479346 0.172093 +vt 0.468158 0.093023 +vt 0.476764 0.239535 +vt 0.469880 0.172093 +vt 0.464716 0.172093 +vt 0.455250 0.172093 +vt 0.457831 0.239535 +vt 0.462134 0.239535 +vt 0.450086 0.172093 +vt 0.447504 0.239535 +vt 0.440620 0.172093 +vt 0.435456 0.172093 +vt 0.425990 0.172093 +vt 0.432874 0.239535 +vt 0.428571 0.239535 +vt 0.411360 0.172093 +vt 0.420826 0.172093 +vt 0.418244 0.239535 +vt 0.406196 0.172093 +vt 0.396730 0.172093 +vt 0.403614 0.239535 +vt 0.399312 0.239535 +vt 0.391566 0.172093 +vt 0.388985 0.239535 +vt 0.382100 0.172093 +vt 0.367470 0.172093 +vt 0.376936 0.172093 +vt 0.370052 0.239535 +vt 0.374355 0.239535 +vt 0.362306 0.172093 +vt 0.359725 0.239535 +vt 0.352840 0.172093 +vt 0.338210 0.172093 +vt 0.347676 0.172093 +vt 0.340792 0.239535 +vt 0.345095 0.239535 +vt 0.323580 0.172093 +vt 0.333046 0.172093 +vt 0.330465 0.239535 +vt 0.318417 0.172093 +vt 0.308950 0.172093 +vt 0.315835 0.239535 +vt 0.311532 0.239535 +vt 0.313683 0.272093 +vt 0.326162 0.239535 +vt 0.328313 0.272093 +vt 0.342943 0.272093 +vt 0.355422 0.239535 +vt 0.357573 0.272093 +vt 0.372203 0.272093 +vt 0.384682 0.239535 +vt 0.386833 0.272093 +vt 0.401463 0.272093 +vt 0.413941 0.239535 +vt 0.416093 0.272093 +vt 0.430723 0.272093 +vt 0.443201 0.239535 +vt 0.445353 0.272093 +vt 0.459983 0.272093 +vt 0.472461 0.239535 +vt 0.474613 0.272093 +vt 0.255164 0.272093 +vt 0.299053 0.272093 +vt 0.284423 0.272093 +vt 0.267642 0.239535 +vt 0.269793 0.272093 +vt 0.291738 0.000000 +vt 0.320998 -0.000000 +vt 0.306368 0.000000 +vt 0.335628 -0.000000 +vt 0.350258 0.000000 +vt 0.364888 0.000000 +vt 0.379518 0.000000 +vt 0.394148 0.000000 +vt 0.408778 -0.000000 +vt 0.423408 -0.000000 +vt 0.438038 -0.000000 +vt 0.452668 0.037209 +vt 0.452668 -0.000000 +vt 0.467298 0.000000 +vt 0.262478 -0.000000 +vt 0.277108 -0.000000 +vt 0.185886 0.046512 +vt 0.200516 0.102326 +vt 0.186747 0.102326 +vt 0.188468 0.181395 +vt 0.198795 0.181395 +vt 0.195353 0.260465 +vt 0.191911 0.260465 +vt 0.170396 0.046512 +vt 0.185026 0.102326 +vt 0.171256 0.102326 +vt 0.155766 0.102326 +vt 0.169535 0.102326 +vt 0.139415 0.046512 +vt 0.154045 0.102326 +vt 0.140275 0.102326 +vt 0.124785 0.102326 +vt 0.138554 0.102326 +vt 0.109294 0.102326 +vt 0.123924 0.046512 +vt 0.123064 0.102326 +vt 0.093804 0.102326 +vt 0.108434 0.046512 +vt 0.107573 0.102326 +vt 0.078313 0.102326 +vt 0.092943 0.046512 +vt 0.092083 0.102326 +vt 0.062823 0.102326 +vt 0.077453 0.046512 +vt 0.076592 0.102326 +vt 0.047332 0.102326 +vt 0.061962 0.046512 +vt 0.061102 0.102326 +vt 0.031842 0.102326 +vt 0.046472 0.046512 +vt 0.045611 0.102326 +vt 0.015491 0.046512 +vt 0.030120 0.102326 +vt 0.016351 0.102326 +vt 0.000861 0.102326 +vt 0.014630 0.102326 +vt 0.232358 0.046512 +vt 0.246988 0.102326 +vt 0.233219 0.102326 +vt 0.216867 0.046512 +vt 0.231497 0.102326 +vt 0.217728 0.102326 +vt 0.202238 0.102326 +vt 0.216007 0.102326 +vt 0.201377 0.046512 +vt 0.154905 0.046512 +vt 0.030981 0.046512 +vt -0.000000 0.046512 +vt 0.203959 0.181395 +vt 0.214286 0.181395 +vt 0.207401 0.260465 +vt 0.210843 0.260465 +vt 0.219449 0.181395 +vt 0.229776 0.181395 +vt 0.222892 0.260465 +vt 0.226334 0.260465 +vt 0.234940 0.181395 +vt 0.245267 0.181395 +vt 0.241824 0.260465 +vt 0.002582 0.181395 +vt 0.012909 0.181395 +vt 0.006024 0.260465 +vt 0.009466 0.260465 +vt 0.028399 0.181395 +vt 0.021515 0.260465 +vt 0.024957 0.260465 +vt 0.033563 0.181395 +vt 0.043890 0.181395 +vt 0.037005 0.260465 +vt 0.040448 0.260465 +vt 0.049053 0.181395 +vt 0.059380 0.181395 +vt 0.052496 0.260465 +vt 0.055938 0.260465 +vt 0.074871 0.181395 +vt 0.064544 0.181395 +vt 0.067986 0.260465 +vt 0.071429 0.260465 +vt 0.080034 0.181395 +vt 0.090361 0.181395 +vt 0.083477 0.260465 +vt 0.086919 0.260465 +vt 0.095525 0.181395 +vt 0.105852 0.181395 +vt 0.098967 0.260465 +vt 0.102410 0.260465 +vt 0.121343 0.181395 +vt 0.117900 0.260465 +vt 0.111015 0.181395 +vt 0.126506 0.181395 +vt 0.136833 0.181395 +vt 0.129948 0.260465 +vt 0.133391 0.260465 +vt 0.152324 0.181395 +vt 0.148881 0.260465 +vt 0.141997 0.181395 +vt 0.157487 0.181395 +vt 0.167814 0.181395 +vt 0.160929 0.260465 +vt 0.164372 0.260465 +vt 0.172978 0.181395 +vt 0.183305 0.181395 +vt 0.176420 0.260465 +vt 0.179862 0.260465 +vt 0.193632 0.293023 +vt 0.209122 0.293023 +vt 0.224613 0.293023 +vt 0.238382 0.260465 +vt 0.240103 0.293023 +vt 0.007745 0.293023 +vt 0.023236 0.293023 +vt 0.038726 0.293023 +vt 0.054217 0.293023 +vt 0.069707 0.293023 +vt 0.085198 0.293023 +vt 0.100688 0.293023 +vt 0.114458 0.260465 +vt 0.116179 0.293023 +vt 0.131670 0.293023 +vt 0.145439 0.260465 +vt 0.147160 0.293023 +vt 0.162651 0.293023 +vt 0.178141 0.293023 +vt 0.321859 0.093023 +vt 0.294320 0.172093 +vt 0.481928 0.000000 +vt 0.247849 0.046512 +vt 0.018072 0.181395 +vn -0.0000 -0.0000 1.0000 +vn 0.0000 0.9667 0.2560 +vn 0.3814 0.9208 0.0817 +vn 0.0000 0.9967 0.0817 +vn 0.6835 0.6835 0.2560 +vn 0.3699 0.8931 0.2560 +vn 0.9208 0.3814 0.0817 +vn 0.8931 0.3699 0.2560 +vn 0.9967 -0.0000 0.0817 +vn 0.9667 -0.0000 0.2560 +vn 0.9208 -0.3814 0.0817 +vn 0.8931 -0.3699 0.2560 +vn 0.7047 -0.7047 0.0817 +vn 0.6835 -0.6835 0.2560 +vn 0.3814 -0.9208 0.0817 +vn 0.3699 -0.8931 0.2560 +vn -0.0000 -0.9967 0.0816 +vn -0.0000 -0.9667 0.2560 +vn -0.3814 -0.9208 0.0816 +vn -0.3699 -0.8931 0.2560 +vn -0.7047 -0.7047 0.0817 +vn -0.6835 -0.6835 0.2560 +vn -0.3699 0.8931 0.2560 +vn -0.3814 0.9208 0.0817 +vn -0.7047 0.7047 0.0817 +vn -0.6835 0.6835 0.2560 +vn -0.9208 0.3814 0.0817 +vn -0.8931 0.3699 0.2560 +vn -0.9667 0.0000 0.2560 +vn -0.9967 0.0000 0.0817 +vn -0.9208 -0.3814 0.0817 +vn -0.8931 -0.3699 0.2560 +vn -0.8929 0.0000 0.4502 +vn -0.6642 0.2751 0.6951 +vn -0.7189 0.0000 0.6951 +vn -0.3417 0.8249 0.4502 +vn -0.6314 0.6314 0.4502 +vn -0.5084 0.5084 0.6951 +vn -0.8249 0.3417 0.4502 +vn 0.0000 0.8929 0.4502 +vn -0.2751 0.6642 0.6951 +vn 0.0000 0.7189 0.6951 +vn 0.3417 0.8249 0.4502 +vn 0.6314 0.6314 0.4502 +vn 0.5084 0.5084 0.6951 +vn 0.2751 0.6642 0.6951 +vn 0.8249 0.3417 0.4502 +vn 0.8929 -0.0000 0.4502 +vn 0.6642 0.2751 0.6951 +vn 0.7189 -0.0000 0.6951 +vn 0.8249 -0.3417 0.4502 +vn 0.6314 -0.6314 0.4502 +vn 0.6642 -0.2751 0.6951 +vn 0.5084 -0.5084 0.6951 +vn 0.3417 -0.8249 0.4502 +vn -0.0000 -0.8929 0.4502 +vn -0.0000 -0.7189 0.6951 +vn 0.2751 -0.6642 0.6951 +vn -0.3417 -0.8249 0.4502 +vn -0.6314 -0.6314 0.4502 +vn -0.5084 -0.5084 0.6951 +vn -0.2751 -0.6642 0.6951 +vn -0.8249 -0.3417 0.4502 +vn -0.6642 -0.2751 0.6951 +vn -0.9239 0.3827 0.0000 +vn -0.9239 -0.3827 -0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 -0.7071 -0.0000 +vn -0.3827 -0.9239 -0.0000 +vn 0.0000 -1.0000 -0.0000 +vn 0.3827 -0.9239 -0.0000 +vn 0.7071 -0.7071 -0.0000 +vn 0.9239 -0.3827 -0.0000 +vn 1.0000 0.0000 -0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.7047 0.7047 0.0817 +vn 0.7071 0.7071 0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.0000 1.0000 0.0000 +vn -0.3827 0.9239 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.9967 -0.0000 -0.0817 +vn 0.8931 -0.3699 -0.2560 +vn 0.9667 -0.0000 -0.2560 +vn 0.8860 -0.0000 -0.4636 +vn 0.8186 -0.3391 -0.4636 +vn 0.6531 -0.2705 -0.7074 +vn 0.7069 -0.0000 -0.7074 +vn 0.9208 0.3814 -0.0817 +vn 0.8931 0.3699 -0.2560 +vn 0.6835 0.6835 -0.2560 +vn 0.3814 0.9208 -0.0817 +vn 0.3699 0.8931 -0.2560 +vn 0.0000 0.9667 -0.2560 +vn -0.3699 0.8931 -0.2560 +vn 0.0000 0.9967 -0.0816 +vn -0.6835 0.6835 -0.2560 +vn -0.3814 0.9208 -0.0817 +vn -0.8931 0.3699 -0.2560 +vn -0.7047 0.7047 -0.0817 +vn -0.9667 0.0000 -0.2560 +vn -0.9208 0.3814 -0.0817 +vn -0.8931 -0.3699 -0.2560 +vn -0.9967 0.0000 -0.0817 +vn -0.6835 -0.6835 -0.2560 +vn -0.9208 -0.3814 -0.0817 +vn -0.3814 -0.9208 -0.0817 +vn -0.3699 -0.8931 -0.2560 +vn -0.0000 -0.9667 -0.2560 +vn 0.3814 -0.9208 -0.0817 +vn 0.3699 -0.8931 -0.2560 +vn 0.7047 -0.7047 -0.0817 +vn 0.6835 -0.6835 -0.2560 +vn 0.9208 -0.3814 -0.0817 +vn 0.7047 0.7047 -0.0817 +vn -0.7047 -0.7047 -0.0817 +vn -0.0000 -0.9967 -0.0817 +vn 0.6265 -0.6265 -0.4636 +vn 0.4998 -0.4998 -0.7074 +vn 0.3391 -0.8186 -0.4636 +vn 0.2705 -0.6531 -0.7074 +vn -0.0000 -0.8860 -0.4636 +vn -0.0000 -0.7069 -0.7074 +vn -0.3391 -0.8186 -0.4636 +vn -0.2705 -0.6531 -0.7074 +vn -0.6265 -0.6265 -0.4636 +vn -0.4998 -0.4998 -0.7074 +vn -0.8186 -0.3391 -0.4636 +vn -0.6531 -0.2705 -0.7074 +vn -0.8860 0.0000 -0.4636 +vn -0.7069 0.0000 -0.7074 +vn -0.8186 0.3391 -0.4636 +vn -0.6531 0.2705 -0.7074 +vn -0.6265 0.6265 -0.4636 +vn -0.4998 0.4998 -0.7074 +vn -0.3391 0.8186 -0.4636 +vn -0.2705 0.6531 -0.7074 +vn 0.0000 0.8860 -0.4636 +vn 0.0000 0.7069 -0.7074 +vn 0.3391 0.8186 -0.4636 +vn 0.2705 0.6531 -0.7074 +vn 0.6265 0.6265 -0.4636 +vn 0.4998 0.4998 -0.7074 +vn 0.8186 0.3391 -0.4636 +vn 0.6531 0.2705 -0.7074 +vn -0.0000 -0.0000 -1.0000 +s off +f 2788/3937/506 2805/3938/506 2804/3939/506 +f 2790/3940/506 2805/3941/506 2789/3942/506 +f 2791/3943/506 2806/3944/506 2790/3940/506 +f 2792/3945/506 2807/3946/506 2791/3947/506 +f 2792/3945/506 2809/3948/506 2808/3949/506 +f 2794/3950/506 2809/3951/506 2793/3952/506 +f 2794/3950/506 2811/3953/506 2810/3954/506 +f 2796/3955/506 2811/3956/506 2795/3957/506 +f 2796/3955/506 2813/3958/506 2812/3959/506 +f 2798/3960/506 2813/3961/506 2797/3962/506 +f 2783/3963/506 2814/3964/506 2798/3960/506 +f 2784/3965/506 2799/3966/506 2783/3963/506 +f 2784/3965/506 2801/3967/506 2800/3968/506 +f 2786/3969/506 2801/3970/506 2785/3971/506 +f 2786/3969/506 2803/3972/506 2802/3973/506 +f 2788/3937/506 2803/3974/506 2787/3975/506 +f 2788/3937/506 2789/3942/506 2805/3938/506 +f 2790/3940/506 2806/3976/506 2805/3941/506 +f 2791/3943/506 2807/3977/506 2806/3944/506 +f 2792/3945/506 2808/3978/506 2807/3946/506 +f 2792/3945/506 2793/3952/506 2809/3948/506 +f 2794/3950/506 2810/3979/506 2809/3951/506 +f 2794/3950/506 2795/3957/506 2811/3953/506 +f 2796/3955/506 2812/3980/506 2811/3956/506 +f 2796/3955/506 2797/3962/506 2813/3958/506 +f 2798/3960/506 2814/3981/506 2813/3961/506 +f 2783/3963/506 2799/3982/506 2814/3964/506 +f 2784/3965/506 2800/3983/506 2799/3966/506 +f 2784/3965/506 2785/3971/506 2801/3967/506 +f 2786/3969/506 2802/3984/506 2801/3970/506 +f 2786/3969/506 2787/3975/506 2803/3972/506 +f 2788/3937/506 2804/3985/506 2803/3974/506 +s 1 +f 2825/3986/507 2864/3987/508 2824/3988/509 +f 2841/3989/510 2864/3987/508 2865/3990/511 +f 2856/3991/512 2841/3992/510 2857/3993/513 +f 2820/3994/514 2857/3995/513 2821/3996/515 +f 2872/3997/516 2821/3998/515 2873/3999/517 +f 2836/4000/518 2873/4001/517 2837/4002/519 +f 2852/4003/520 2837/4004/519 2853/4005/521 +f 2828/4006/522 2853/4007/521 2829/4008/523 +f 2868/4009/524 2829/4010/523 2869/4011/525 +f 2844/4012/526 2869/4013/525 2845/4014/527 +f 2849/4015/528 2824/4016/509 2848/4017/529 +f 2849/4018/528 2832/4019/530 2833/4020/531 +f 2833/4021/531 2876/4022/532 2877/4023/533 +f 2816/4024/534 2876/4022/532 2815/4025/535 +f 2816/4026/534 2860/4027/536 2861/4028/537 +f 2845/4029/527 2860/4027/536 2844/4012/526 +f 2817/4030/538 2877/4031/533 2816/4024/534 +f 2879/4032/539 2817/4030/538 2818/4033/540 +f 2850/4034/541 2833/4020/531 2834/4035/542 +f 2835/4036/543 2850/4034/541 2834/4035/542 +f 2833/4021/531 2878/4037/544 2834/4038/542 +f 2834/4038/542 2879/4039/539 2835/4040/543 +f 2825/4041/507 2850/4042/541 2826/4043/545 +f 2826/4043/545 2851/4044/546 2827/4045/547 +f 2826/4046/545 2865/4047/511 2825/3986/507 +f 2827/4048/547 2866/4049/548 2826/4046/545 +f 2841/3989/510 2866/4050/548 2842/4051/549 +f 2843/4052/550 2866/4050/548 2867/4053/551 +f 2842/4054/549 2857/3993/513 2841/3992/510 +f 2843/4055/550 2858/4056/552 2842/4054/549 +f 2821/3996/515 2858/4057/552 2822/4058/553 +f 2822/4058/553 2859/4059/554 2823/4060/555 +f 2874/4061/556 2821/3998/515 2822/4062/553 +f 2823/4063/555 2874/4061/556 2822/4062/553 +f 2837/4002/519 2874/4064/556 2838/4065/557 +f 2838/4065/557 2875/4066/558 2839/4067/559 +f 2838/4068/557 2853/4005/521 2837/4004/519 +f 2839/4069/559 2854/4070/560 2838/4068/557 +f 2830/4071/561 2853/4007/521 2854/4072/560 +f 2831/4073/562 2854/4072/560 2855/4074/563 +f 2830/4075/561 2869/4011/525 2829/4010/523 +f 2831/4076/562 2870/4077/564 2830/4075/561 +f 2846/4078/565 2869/4013/525 2870/4079/564 +f 2847/4080/566 2870/4079/564 2871/4081/567 +f 2862/4082/568 2845/4029/527 2846/4083/565 +f 2847/4084/566 2862/4082/568 2846/4083/565 +f 2816/4026/534 2862/4085/568 2817/4086/538 +f 2817/4086/538 2863/4087/569 2818/4088/540 +f 2819/4089/506 2818/4088/540 2863/4087/569 +f 2863/4090/569 2847/4084/566 2819/4091/506 +f 2871/4081/567 2819/4092/506 2847/4080/566 +f 2871/4093/567 2831/4076/562 2819/4094/506 +f 2855/4074/563 2819/4095/506 2831/4073/562 +f 2855/4096/563 2839/4069/559 2819/4097/506 +f 2875/4066/558 2819/4098/506 2839/4067/559 +f 2875/4099/558 2823/4063/555 2819/4100/506 +f 2859/4059/554 2819/4101/506 2823/4060/555 +f 2859/4102/554 2843/4055/550 2819/4103/506 +f 2867/4053/551 2819/4104/506 2843/4052/550 +f 2867/4105/551 2827/4048/547 2819/4106/506 +f 2851/4044/546 2819/4107/506 2827/4045/547 +f 2819/4108/506 2879/4032/539 2818/4033/540 +f 2879/4039/539 2819/4109/506 2835/4040/543 +f 2851/4110/546 2835/4036/543 2819/4111/506 +f 2810/4112/570 2815/4025/535 2876/4022/532 +f 2812/4113/571 2815/4025/535 2811/4114/572 +f 2812/4113/571 2844/4012/526 2860/4027/536 +f 2868/4009/524 2813/4115/573 2814/4116/574 +f 2814/4116/574 2828/4006/522 2868/4009/524 +f 2852/4003/520 2799/4117/575 2800/4118/576 +f 2800/4118/576 2836/4000/518 2852/4003/520 +f 2872/3997/516 2801/4119/577 2802/4120/578 +f 2802/4120/578 2820/3994/514 2872/3997/516 +f 2856/3991/512 2803/4121/579 2804/4122/580 +f 2804/4122/580 2840/4123/581 2856/3991/512 +f 2864/3987/508 2805/4124/582 2806/4125/583 +f 2806/4125/583 2824/3988/509 2864/3987/508 +f 2848/4017/529 2807/3946/584 2808/4126/585 +f 2809/4127/586 2848/4017/529 2808/4126/585 +f 2810/4112/570 2832/4019/530 2809/4127/586 +f 2880/4128/587 2942/4129/588 2881/4130/589 +f 2882/4131/590 2942/4129/588 2943/4132/591 +f 2882/4131/590 2944/4133/592 2883/4134/593 +f 2925/4135/594 2881/4136/589 2926/4137/595 +f 2910/4138/596 2925/4135/594 2926/4139/595 +f 2933/4140/597 2910/4141/596 2934/4142/598 +f 2894/4143/599 2933/4140/597 2934/4144/598 +f 2918/4145/600 2893/4146/601 2894/4147/599 +f 2902/4148/602 2917/4149/603 2918/4150/600 +f 2938/4151/604 2901/4152/605 2902/4153/602 +f 2886/4154/606 2937/4155/607 2938/4156/604 +f 2922/4157/608 2885/4158/609 2886/4159/606 +f 2906/4160/610 2921/4161/611 2922/4162/608 +f 2929/4163/612 2906/4164/610 2930/4165/613 +f 2890/4166/614 2929/4163/612 2930/4167/613 +f 2913/4168/615 2890/4169/614 2914/4170/616 +f 2897/4171/617 2914/4172/616 2898/4173/618 +f 2942/4174/588 2897/4171/617 2898/4175/618 +f 2793/3952/577 2941/4176/619 2794/3950/578 +f 2794/3950/578 2880/4128/587 2795/3957/579 +f 2796/3955/580 2880/4128/587 2925/4135/594 +f 2796/3955/580 2909/4177/620 2797/3962/582 +f 2797/3962/582 2933/4140/597 2798/3960/583 +f 2798/3960/583 2893/4146/601 2783/3963/584 +f 2783/3963/584 2917/4149/603 2784/3965/585 +f 2784/3965/585 2901/4152/605 2785/3971/586 +f 2785/3971/586 2937/4155/607 2786/3969/570 +f 2786/3969/570 2885/4158/609 2787/3975/572 +f 2787/3975/572 2921/4161/611 2788/3937/571 +f 2788/3937/571 2905/4178/621 2789/3942/573 +f 2789/3942/573 2929/4163/612 2790/3940/574 +f 2790/3940/574 2889/4179/622 2791/3943/575 +f 2791/3947/575 2913/4168/615 2792/3945/576 +f 2913/4168/615 2793/3952/577 2792/3945/576 +f 2943/4180/591 2898/4175/618 2899/4181/623 +f 2944/4182/592 2899/4181/623 2900/4183/624 +f 2899/4184/623 2914/4172/616 2915/4185/625 +f 2900/4186/624 2915/4185/625 2916/4187/626 +f 2915/4188/625 2890/4169/614 2891/4189/627 +f 2892/4190/628 2915/4188/625 2891/4189/627 +f 2891/4191/627 2930/4167/613 2931/4192/629 +f 2892/4193/628 2931/4192/629 2932/4194/630 +f 2907/4195/631 2930/4165/613 2906/4164/610 +f 2932/4196/630 2907/4195/631 2908/4197/632 +f 2907/4198/631 2922/4162/608 2923/4199/633 +f 2908/4200/632 2923/4199/633 2924/4201/634 +f 2923/4202/633 2886/4159/606 2887/4203/635 +f 2924/4204/634 2887/4203/635 2888/4205/636 +f 2886/4154/606 2939/4206/637 2887/4207/635 +f 2888/4208/636 2939/4206/637 2940/4209/638 +f 2939/4210/637 2902/4153/602 2903/4211/639 +f 2940/4212/638 2903/4211/639 2904/4213/640 +f 2903/4214/639 2918/4150/600 2919/4215/641 +f 2904/4216/640 2919/4215/641 2920/4217/642 +f 2895/4218/643 2918/4145/600 2894/4147/599 +f 2896/4219/644 2919/4220/641 2895/4218/643 +f 2895/4221/643 2934/4144/598 2935/4222/645 +f 2896/4223/644 2935/4222/645 2936/4224/646 +f 2911/4225/647 2934/4142/598 2910/4141/596 +f 2912/4226/648 2935/4227/645 2911/4225/647 +f 2911/4228/647 2926/4139/595 2927/4229/649 +f 2912/4230/648 2927/4229/649 2928/4231/650 +f 2927/4232/649 2881/4136/589 2882/4233/590 +f 2928/4234/650 2882/4233/590 2883/4235/593 +f 2884/4236/651 2883/4134/593 2944/4133/592 +f 2944/4182/592 2900/4183/624 2884/4237/651 +f 2916/4187/626 2884/4238/651 2900/4186/624 +f 2916/4239/626 2892/4190/628 2884/4240/651 +f 2932/4194/630 2884/4241/651 2892/4193/628 +f 2932/4196/630 2908/4197/632 2884/4242/651 +f 2924/4201/634 2884/4243/651 2908/4200/632 +f 2924/4204/634 2888/4205/636 2884/4244/651 +f 2940/4209/638 2884/4245/651 2888/4208/636 +f 2940/4212/638 2904/4213/640 2884/4246/651 +f 2920/4217/642 2884/4247/651 2904/4216/640 +f 2920/4248/642 2896/4219/644 2884/4249/651 +f 2936/4224/646 2884/4250/651 2896/4223/644 +f 2936/4251/646 2912/4226/648 2884/4252/651 +f 2928/4231/650 2884/4253/651 2912/4230/648 +f 2884/4254/651 2928/4234/650 2883/4235/593 +f 2825/3986/507 2865/4047/511 2864/3987/508 +f 2841/3989/510 2840/4123/581 2864/3987/508 +f 2856/3991/512 2840/4123/581 2841/3992/510 +f 2820/3994/514 2856/3991/512 2857/3995/513 +f 2872/3997/516 2820/3994/514 2821/3998/515 +f 2836/4000/518 2872/3997/516 2873/4001/517 +f 2852/4003/520 2836/4000/518 2837/4004/519 +f 2828/4006/522 2852/4003/520 2853/4007/521 +f 2868/4009/524 2828/4006/522 2829/4010/523 +f 2844/4012/526 2868/4009/524 2869/4013/525 +f 2849/4015/528 2825/4041/507 2824/4016/509 +f 2849/4018/528 2848/4017/529 2832/4019/530 +f 2833/4021/531 2832/4019/530 2876/4022/532 +f 2816/4024/534 2877/4031/533 2876/4022/532 +f 2816/4026/534 2815/4025/535 2860/4027/536 +f 2845/4029/527 2861/4255/537 2860/4027/536 +f 2817/4030/538 2878/4256/544 2877/4031/533 +f 2879/4032/539 2878/4256/544 2817/4030/538 +f 2850/4034/541 2849/4018/528 2833/4020/531 +f 2835/4036/543 2851/4110/546 2850/4034/541 +f 2833/4021/531 2877/4023/533 2878/4037/544 +f 2834/4038/542 2878/4037/544 2879/4039/539 +f 2825/4041/507 2849/4015/528 2850/4042/541 +f 2826/4043/545 2850/4042/541 2851/4044/546 +f 2826/4046/545 2866/4049/548 2865/4047/511 +f 2827/4048/547 2867/4105/551 2866/4049/548 +f 2841/3989/510 2865/3990/511 2866/4050/548 +f 2843/4052/550 2842/4051/549 2866/4050/548 +f 2842/4054/549 2858/4056/552 2857/3993/513 +f 2843/4055/550 2859/4102/554 2858/4056/552 +f 2821/3996/515 2857/3995/513 2858/4057/552 +f 2822/4058/553 2858/4057/552 2859/4059/554 +f 2874/4061/556 2873/3999/517 2821/3998/515 +f 2823/4063/555 2875/4099/558 2874/4061/556 +f 2837/4002/519 2873/4001/517 2874/4064/556 +f 2838/4065/557 2874/4064/556 2875/4066/558 +f 2838/4068/557 2854/4070/560 2853/4005/521 +f 2839/4069/559 2855/4096/563 2854/4070/560 +f 2830/4071/561 2829/4008/523 2853/4007/521 +f 2831/4073/562 2830/4071/561 2854/4072/560 +f 2830/4075/561 2870/4077/564 2869/4011/525 +f 2831/4076/562 2871/4093/567 2870/4077/564 +f 2846/4078/565 2845/4014/527 2869/4013/525 +f 2847/4080/566 2846/4078/565 2870/4079/564 +f 2862/4082/568 2861/4255/537 2845/4029/527 +f 2847/4084/566 2863/4090/569 2862/4082/568 +f 2816/4026/534 2861/4028/537 2862/4085/568 +f 2817/4086/538 2862/4085/568 2863/4087/569 +f 2810/4112/570 2811/4114/572 2815/4025/535 +f 2812/4113/571 2860/4027/536 2815/4025/535 +f 2812/4113/571 2813/4115/573 2844/4012/526 +f 2868/4009/524 2844/4012/526 2813/4115/573 +f 2814/4116/574 2799/4117/575 2828/4006/522 +f 2852/4003/520 2828/4006/522 2799/4117/575 +f 2800/4118/576 2801/4119/577 2836/4000/518 +f 2872/3997/516 2836/4000/518 2801/4119/577 +f 2802/4120/578 2803/4121/579 2820/3994/514 +f 2856/3991/512 2820/3994/514 2803/4121/579 +f 2804/4122/580 2805/4124/582 2840/4123/581 +f 2864/3987/508 2840/4123/581 2805/4124/582 +f 2806/4125/583 2807/4257/584 2824/3988/509 +f 2848/4017/529 2824/4016/509 2807/3946/584 +f 2809/4127/586 2832/4019/530 2848/4017/529 +f 2810/4112/570 2876/4022/532 2832/4019/530 +f 2880/4128/587 2941/4176/619 2942/4129/588 +f 2882/4131/590 2881/4130/589 2942/4129/588 +f 2882/4131/590 2943/4132/591 2944/4133/592 +f 2925/4135/594 2880/4128/587 2881/4136/589 +f 2910/4138/596 2909/4177/620 2925/4135/594 +f 2933/4140/597 2909/4177/620 2910/4141/596 +f 2894/4143/599 2893/4146/601 2933/4140/597 +f 2918/4145/600 2917/4149/603 2893/4146/601 +f 2902/4148/602 2901/4152/605 2917/4149/603 +f 2938/4151/604 2937/4155/607 2901/4152/605 +f 2886/4154/606 2885/4158/609 2937/4155/607 +f 2922/4157/608 2921/4161/611 2885/4158/609 +f 2906/4160/610 2905/4178/621 2921/4161/611 +f 2929/4163/612 2905/4178/621 2906/4164/610 +f 2890/4166/614 2889/4179/622 2929/4163/612 +f 2913/4168/615 2889/4258/622 2890/4169/614 +f 2897/4171/617 2913/4168/615 2914/4172/616 +f 2942/4174/588 2941/4176/619 2897/4171/617 +f 2793/3952/577 2897/4171/617 2941/4176/619 +f 2794/3950/578 2941/4176/619 2880/4128/587 +f 2796/3955/580 2795/3957/579 2880/4128/587 +f 2796/3955/580 2925/4135/594 2909/4177/620 +f 2797/3962/582 2909/4177/620 2933/4140/597 +f 2798/3960/583 2933/4140/597 2893/4146/601 +f 2783/3963/584 2893/4146/601 2917/4149/603 +f 2784/3965/585 2917/4149/603 2901/4152/605 +f 2785/3971/586 2901/4152/605 2937/4155/607 +f 2786/3969/570 2937/4155/607 2885/4158/609 +f 2787/3975/572 2885/4158/609 2921/4161/611 +f 2788/3937/571 2921/4161/611 2905/4178/621 +f 2789/3942/573 2905/4178/621 2929/4163/612 +f 2790/3940/574 2929/4163/612 2889/4179/622 +f 2791/3947/575 2889/4258/622 2913/4168/615 +f 2913/4168/615 2897/4171/617 2793/3952/577 +f 2943/4180/591 2942/4174/588 2898/4175/618 +f 2944/4182/592 2943/4180/591 2899/4181/623 +f 2899/4184/623 2898/4173/618 2914/4172/616 +f 2900/4186/624 2899/4184/623 2915/4185/625 +f 2915/4188/625 2914/4170/616 2890/4169/614 +f 2892/4190/628 2916/4239/626 2915/4188/625 +f 2891/4191/627 2890/4166/614 2930/4167/613 +f 2892/4193/628 2891/4191/627 2931/4192/629 +f 2907/4195/631 2931/4259/629 2930/4165/613 +f 2932/4196/630 2931/4259/629 2907/4195/631 +f 2907/4198/631 2906/4160/610 2922/4162/608 +f 2908/4200/632 2907/4198/631 2923/4199/633 +f 2923/4202/633 2922/4157/608 2886/4159/606 +f 2924/4204/634 2923/4202/633 2887/4203/635 +f 2886/4154/606 2938/4156/604 2939/4206/637 +f 2888/4208/636 2887/4207/635 2939/4206/637 +f 2939/4210/637 2938/4151/604 2902/4153/602 +f 2940/4212/638 2939/4210/637 2903/4211/639 +f 2903/4214/639 2902/4148/602 2918/4150/600 +f 2904/4216/640 2903/4214/639 2919/4215/641 +f 2895/4218/643 2919/4220/641 2918/4145/600 +f 2896/4219/644 2920/4248/642 2919/4220/641 +f 2895/4221/643 2894/4143/599 2934/4144/598 +f 2896/4223/644 2895/4221/643 2935/4222/645 +f 2911/4225/647 2935/4227/645 2934/4142/598 +f 2912/4226/648 2936/4251/646 2935/4227/645 +f 2911/4228/647 2910/4138/596 2926/4139/595 +f 2912/4230/648 2911/4228/647 2927/4229/649 +f 2927/4232/649 2926/4137/595 2881/4136/589 +f 2928/4234/650 2927/4232/649 2882/4233/590 +o Frame +v -3.125000 4.499998 -5.500007 +v -2.375000 4.499998 -5.500007 +v -3.125000 4.249998 -5.500007 +v -2.375000 4.249998 -5.500007 +v -2.375000 4.499998 -1.750007 +v -3.125000 4.499998 -1.750007 +v -2.375000 4.249998 -1.500007 +v -2.375000 3.374998 -1.500007 +v -3.125000 3.374998 -1.500007 +v -3.125000 4.249998 -1.500007 +v -2.375000 4.249998 -1.750007 +v -3.125000 4.249998 -1.750007 +v -2.375000 3.124998 -1.750007 +v -3.125000 3.124998 -1.750007 +v 2.500000 0.000000 8.250000 +v 3.500000 0.000000 8.250000 +v 3.500000 1.000000 8.250000 +v 2.500000 0.000000 4.500000 +v 3.500000 0.000000 4.500000 +v 3.500000 1.000000 4.500000 +v -3.500000 0.000000 8.250000 +v -2.500000 0.000000 8.250000 +v -3.500000 0.000000 4.500000 +v -2.500000 0.000000 4.500000 +v -3.500000 1.000000 8.250000 +v -3.500000 1.000000 4.500000 +v 2.500000 0.000000 2.500000 +v -2.500000 0.000000 2.500000 +v 1.500000 0.000000 3.500000 +v -1.500000 0.000000 3.500000 +v 2.500000 0.000000 0.000000 +v -2.500000 0.000000 0.000000 +v 1.500000 0.000000 -1.000000 +v -1.500000 0.000000 -1.000000 +v 2.500000 1.000000 2.500000 +v -2.500000 1.000000 2.500000 +v 1.500000 1.000000 3.500000 +v -1.500000 1.000000 3.500000 +v 2.500000 1.000000 0.000000 +v -2.500000 1.000000 0.000000 +v 1.500000 1.000000 -1.000000 +v -1.500000 1.000000 -1.000000 +v 1.250000 0.999998 -3.500006 +v 3.250000 0.999998 -3.500006 +v 1.250000 4.749998 -3.500006 +v 2.000000 4.749998 -3.500006 +v 1.250000 5.499998 -3.500006 +v -1.250000 4.749998 -3.500006 +v -1.250000 5.499998 -3.500006 +v -3.250000 0.999998 -3.500006 +v -1.250000 0.999998 -3.500006 +v -2.000000 4.749998 -3.500006 +v 1.250000 4.749998 -4.000006 +v 1.250000 0.999998 -4.000006 +v 3.250000 0.999998 -4.000006 +v 2.000000 4.749998 -4.000006 +v 1.250000 5.499998 -4.000006 +v -1.250000 5.499998 -4.000006 +v -1.250000 4.749998 -4.000006 +v -2.000000 4.749998 -4.000006 +v -3.250000 0.999998 -4.000006 +v -1.250000 0.999998 -4.000006 +v 3.250000 2.749998 -3.500006 +v 3.250000 2.749998 -4.000006 +v -3.250000 2.749998 -3.500006 +v -3.250000 2.749998 -4.000006 +v 2.000000 2.749998 -3.500006 +v -2.000000 2.749998 -3.500006 +v 2.000000 2.749998 -4.000006 +v -2.000000 2.749998 -4.000006 +v 3.500000 0.000000 -9.500000 +v 3.500000 1.000000 -9.500000 +v 3.500000 1.000000 -10.500000 +v 2.500000 0.000000 -10.500000 +v -2.500000 0.000000 -10.500000 +v -3.500000 0.000000 -9.500000 +v -3.500000 1.000000 -10.500000 +v 3.500000 6.000000 -10.500000 +v -3.500000 6.000000 -10.500000 +v 2.500000 7.000000 -10.500000 +v -2.500000 7.000000 -10.500000 +v -3.500000 1.000000 -9.500000 +v 3.500000 7.000000 -9.500000 +v -3.500000 7.000000 -9.500000 +v 2.500000 0.000000 -5.000000 +v -2.500000 0.000000 -5.000000 +v 1.500000 0.000000 -4.000000 +v -1.500000 0.000000 -4.000000 +v 2.500000 0.000000 -7.500000 +v -2.500000 0.000000 -7.500000 +v 1.500000 0.000000 -8.500000 +v -1.500000 0.000000 -8.500000 +v 2.500000 1.000000 -5.000000 +v -2.500000 1.000000 -5.000000 +v 1.500000 1.000000 -4.000000 +v -1.500000 1.000000 -4.000000 +v 2.500000 1.000000 -7.500000 +v -2.500000 1.000000 -7.500000 +v 1.500000 1.000000 -8.500000 +v -1.500000 1.000000 -8.500000 +v 3.500000 1.000000 4.500000 +v 3.500000 1.000000 3.500000 +v 2.500000 1.000000 3.500000 +v 2.500000 1.000000 4.500000 +v 3.500000 5.000000 4.500000 +v 3.500000 5.000000 3.500000 +v 2.500000 5.000000 3.500000 +v 2.500000 5.000000 4.500000 +v -2.500000 1.000000 4.500000 +v -2.500000 1.000000 3.500000 +v -3.500000 1.000000 3.500000 +v -3.500000 1.000000 4.500000 +v -2.500000 5.000000 4.500000 +v -2.500000 5.000000 3.500000 +v -3.500000 5.000000 3.500000 +v -3.500000 5.000000 4.500000 +v 1.500000 6.000000 3.500000 +v 1.500000 6.000000 4.500000 +v -1.500000 6.000000 4.500000 +v -1.500000 6.000000 3.500000 +v 1.500000 7.000000 3.500000 +v 1.500000 7.000000 4.500000 +v -1.500000 7.000000 4.500000 +v -1.500000 7.000000 3.500000 +v 1.750000 5.749998 -9.000008 +v 1.396446 5.603552 -9.000008 +v 1.250000 5.249998 -9.000008 +v 1.396446 4.896445 -9.000008 +v 1.750000 4.749998 -9.000008 +v 2.103553 4.896445 -9.000008 +v 2.250000 5.249998 -9.000008 +v 2.103553 5.603552 -9.000008 +v 1.396446 5.603552 -9.500008 +v 1.750000 5.749998 -9.500008 +v 1.250000 5.249998 -9.500008 +v 1.396446 4.896445 -9.500008 +v 1.750000 4.749998 -9.500008 +v 2.103553 4.896445 -9.500008 +v 2.250000 5.249998 -9.500008 +v 2.103553 5.603552 -9.500008 +v 2.750000 4.249998 -5.500007 +v 2.462988 4.192908 -5.500007 +v 2.219669 4.030329 -5.500007 +v 2.057091 3.787011 -5.500007 +v 2.000000 3.499998 -5.500007 +v 2.057091 3.212986 -5.500007 +v 2.219669 2.969668 -5.500007 +v 2.462988 2.807089 -5.500007 +v 2.750000 2.749998 -5.500007 +v 3.037012 2.807089 -5.500007 +v 3.280330 2.969668 -5.500007 +v 3.442909 3.212986 -5.500007 +v 3.500000 3.499998 -5.500007 +v 3.442909 3.787011 -5.500007 +v 3.280330 4.030329 -5.500007 +v 3.037012 4.192908 -5.500007 +v 2.750000 4.249998 -1.750007 +v 2.462988 4.192908 -1.750007 +v 2.219669 4.030329 -1.750007 +v 2.057091 3.787011 -1.750007 +v 2.000000 3.499998 -1.750007 +v 2.057091 3.212986 -1.750007 +v 2.219669 2.969668 -1.750007 +v 2.462988 2.807089 -1.750007 +v 2.750000 2.749998 -1.750007 +v 3.037012 2.807089 -1.750007 +v 3.280330 2.969668 -1.750007 +v 3.442909 3.212986 -1.750007 +v 3.500000 3.499998 -1.750007 +v 3.442909 3.787011 -1.750007 +v 3.280330 4.030329 -1.750007 +v 3.037012 4.192908 -1.750007 +v -2.500000 6.999996 8.250000 +v -3.500000 6.999996 8.250000 +v -3.500000 5.999996 8.250000 +v -2.500000 6.999996 4.500000 +v -3.500000 6.999996 4.500000 +v -3.500000 5.999996 4.500000 +v 3.500000 6.999996 8.250000 +v 2.500000 6.999996 8.250000 +v 3.500000 6.999996 4.500000 +v 2.500000 6.999996 4.500000 +v 3.500000 5.999996 8.250000 +v 3.500000 5.999996 4.500000 +v 2.000000 6.499996 4.500000 +v 3.000000 5.499996 4.500000 +v -2.000000 6.499996 4.500000 +v -3.000000 5.499996 4.500000 +v -3.500000 5.999996 3.500000 +v -3.500000 6.999996 3.500000 +v -2.500000 6.999996 3.500000 +v 3.500000 5.999996 3.500000 +v 2.500000 6.999996 3.500000 +v 3.500000 6.999996 3.500000 +v 2.000000 6.499996 3.500000 +v 3.000000 5.499996 3.500000 +v -2.000000 6.499996 3.500000 +v -3.000000 5.499996 3.500000 +v -2.500000 6.999996 -6.500000 +v -3.500000 6.999996 -6.500000 +v -3.500000 5.999996 -6.500000 +v -2.500000 6.999996 -9.500000 +v -3.500000 6.999996 -9.500000 +v -3.500000 5.999996 -9.500000 +v 3.500000 6.999996 -6.500000 +v 2.500000 6.999996 -6.500000 +v 3.500000 6.999996 -9.500000 +v 2.500000 6.999996 -9.500000 +v 3.500000 5.999996 -6.500000 +v 3.500000 5.999996 -9.500000 +v -3.500000 5.999996 -5.500000 +v -3.500000 6.999996 -5.500000 +v -2.500000 6.999996 -5.500000 +v 3.500000 5.999996 -5.500000 +v 2.500000 6.999996 -5.500000 +v 3.500000 6.999996 -5.500000 +v 2.000000 6.499996 -5.500000 +v 3.000000 5.499996 -5.500000 +v -2.000000 6.499996 -5.500000 +v -3.000000 5.499996 -5.500000 +v 2.000000 6.499996 -6.500000 +v 3.000000 5.499996 -6.500000 +v -2.000000 6.499996 -6.500000 +v -3.000000 5.499996 -6.500000 +v 2.073223 1.676775 -4.000006 +v 2.073223 1.323221 -4.000006 +v 2.250000 1.249998 -4.000006 +v 2.426777 1.323221 -4.000006 +v 2.500000 1.499998 -4.000006 +v 2.426777 1.676775 -4.000006 +v 2.000000 1.499998 -4.000006 +v 2.250000 1.749998 -4.000006 +v 1.573223 1.676775 -4.000006 +v 1.573223 1.323221 -4.000006 +v 1.750000 1.249998 -4.000006 +v 1.926777 1.323221 -4.000006 +v 2.000000 1.499998 -4.000006 +v 1.926777 1.676775 -4.000006 +v 1.500000 1.499998 -4.000006 +v 1.750000 1.749998 -4.000006 +v 2.073223 2.176775 -4.000006 +v 2.073223 1.823221 -4.000006 +v 2.250000 1.749998 -4.000006 +v 2.426777 1.823221 -4.000006 +v 2.500000 1.999998 -4.000006 +v 2.426777 2.176775 -4.000006 +v 2.000000 1.999998 -4.000006 +v 2.250000 2.249998 -4.000006 +v 1.573223 2.176775 -4.000006 +v 1.573223 1.823221 -4.000006 +v 1.750000 1.749998 -4.000006 +v 1.926777 1.823221 -4.000006 +v 2.000000 1.999998 -4.000006 +v 1.926777 2.176775 -4.000006 +v 1.500000 1.999998 -4.000006 +v 1.750000 2.249998 -4.000006 +v 2.073223 1.676775 -4.750006 +v 2.073223 1.323221 -4.750006 +v 2.250000 1.249998 -4.750006 +v 2.426777 1.323221 -4.750006 +v 2.500000 1.499998 -4.750006 +v 2.426777 1.676775 -4.750006 +v 2.000000 1.499998 -4.750006 +v 2.250000 1.749998 -4.750006 +v 1.573223 1.676775 -4.750006 +v 1.573223 1.323221 -4.750006 +v 1.750000 1.249998 -4.750006 +v 1.926777 1.323221 -4.750006 +v 2.000000 1.499998 -4.750006 +v 1.926777 1.676775 -4.750006 +v 1.500000 1.499998 -4.750006 +v 1.750000 1.749998 -4.750006 +v 2.073223 2.176775 -4.250006 +v 2.073223 1.823221 -4.250006 +v 2.250000 1.749998 -4.250006 +v 2.426777 1.823221 -4.250006 +v 2.500000 1.999998 -4.250006 +v 2.426777 2.176775 -4.250006 +v 2.000000 1.999998 -4.250006 +v 2.250000 2.249998 -4.250006 +v 1.573223 2.176775 -4.250006 +v 1.573223 1.823221 -4.250006 +v 1.750000 1.749998 -4.250006 +v 1.926777 1.823221 -4.250006 +v 2.000000 1.999998 -4.250006 +v 1.926777 2.176775 -4.250006 +v 1.500000 1.999998 -4.250006 +v 1.750000 2.249998 -4.250006 +v 2.073223 1.698221 -4.801783 +v 2.073223 1.448221 -5.051783 +v 2.250000 1.396445 -5.103559 +v 2.426777 1.448221 -5.051783 +v 2.500000 1.573221 -4.926783 +v 2.426777 1.698221 -4.801783 +v 2.000000 1.573221 -4.926783 +v 1.573223 1.698221 -4.801783 +v 1.573223 1.448221 -5.051783 +v 1.750000 1.396445 -5.103559 +v 1.926777 1.448221 -5.051783 +v 2.000000 1.573221 -4.926783 +v 1.926777 1.698221 -4.801783 +v 1.500000 1.573221 -4.926783 +v 2.073223 1.749998 -4.823230 +v 2.073223 1.749998 -5.176783 +v 2.250000 1.749998 -5.250006 +v 2.426777 1.749998 -5.176783 +v 2.500000 1.749998 -5.000006 +v 2.426777 1.749998 -4.823230 +v 2.000000 1.749998 -5.000006 +v 1.573223 1.749998 -4.823230 +v 1.573223 1.749998 -5.176783 +v 1.750000 1.749998 -5.250006 +v 1.926777 1.749998 -5.176783 +v 2.000000 1.749998 -5.000006 +v 1.926777 1.749998 -4.823230 +v 1.500000 1.749998 -5.000006 +v 2.073223 2.198221 -4.301783 +v 2.073223 1.948221 -4.551783 +v 2.250000 1.896445 -4.603559 +v 2.426777 1.948221 -4.551783 +v 2.500000 2.073221 -4.426783 +v 2.426777 2.198221 -4.301783 +v 2.000000 2.073221 -4.426783 +v 1.573223 2.198221 -4.301783 +v 1.573223 1.948221 -4.551783 +v 1.750000 1.896445 -4.603559 +v 1.926777 1.948221 -4.551783 +v 2.000000 2.073221 -4.426783 +v 1.926777 2.198221 -4.301783 +v 1.500000 2.073221 -4.426783 +v 2.073223 2.249998 -4.323230 +v 2.073223 2.249998 -4.676783 +v 2.250000 2.249998 -4.750006 +v 2.426777 2.249998 -4.676783 +v 2.500000 2.249998 -4.500006 +v 2.426777 2.249998 -4.323230 +v 2.000000 2.249998 -4.500006 +v 1.573223 2.249998 -4.323230 +v 1.573223 2.249998 -4.676783 +v 1.750000 2.249998 -4.750006 +v 1.926777 2.249998 -4.676783 +v 2.000000 2.249998 -4.500006 +v 1.926777 2.249998 -4.323230 +v 1.500000 2.249998 -4.500006 +v 2.250000 3.499998 -4.750006 +v 1.750000 3.249998 -4.750006 +v 2.250000 3.499998 -4.250006 +v 1.750000 3.249998 -4.250006 +v 2.073223 3.499998 -4.823230 +v 2.073223 3.499998 -5.176783 +v 2.250000 3.499998 -5.250006 +v 2.426777 3.499998 -5.176783 +v 2.500000 3.499998 -5.000006 +v 2.426777 3.499998 -4.823230 +v 2.000000 3.499998 -5.000006 +v 1.573223 3.249998 -4.823230 +v 1.573223 3.249998 -5.176783 +v 1.750000 3.249998 -5.250006 +v 1.926777 3.249998 -5.176783 +v 2.000000 3.249998 -5.000006 +v 1.926777 3.249998 -4.823230 +v 1.500000 3.249998 -5.000006 +v 2.073223 3.499998 -4.323230 +v 2.073223 3.499998 -4.676783 +v 2.250000 3.499998 -4.750006 +v 2.426777 3.499998 -4.676783 +v 2.500000 3.499998 -4.500006 +v 2.426777 3.499998 -4.323230 +v 2.000000 3.499998 -4.500006 +v 1.573223 3.249998 -4.323230 +v 1.573223 3.249998 -4.676783 +v 1.750000 3.249998 -4.750006 +v 1.926777 3.249998 -4.676783 +v 2.000000 3.249998 -4.500006 +v 1.926777 3.249998 -4.323230 +v 1.500000 3.249998 -4.500006 +v 1.823223 3.426775 -4.750006 +v 1.823223 3.426775 -4.250006 +v 1.698223 3.551775 -4.823230 +v 1.698223 3.551775 -5.176783 +v 1.823223 3.426775 -5.250006 +v 1.948223 3.301775 -5.176783 +v 1.948223 3.301775 -4.823230 +v 1.646446 3.603551 -5.000006 +v 1.698223 3.551775 -4.323230 +v 1.698223 3.551775 -4.676783 +v 1.823223 3.426775 -4.750006 +v 1.948223 3.301775 -4.676783 +v 1.948223 3.301775 -4.323230 +v 1.646446 3.603551 -4.500006 +v 2.000000 3.499998 -4.750006 +v 2.000000 3.499998 -4.250006 +v 2.000000 3.676775 -4.823230 +v 2.000000 3.676775 -5.176783 +v 2.000000 3.499998 -5.250006 +v 2.000000 3.323221 -5.176783 +v 2.000000 3.323221 -4.823230 +v 2.000000 3.749998 -5.000006 +v 2.000000 3.676775 -4.323230 +v 1.999999 3.676775 -4.676783 +v 2.000000 3.499998 -4.750006 +v 2.000000 3.323221 -4.676783 +v 2.000000 3.323221 -4.323230 +v 2.000000 3.749998 -4.500006 +v 2.125000 3.249998 -5.000006 +v 2.125000 3.249998 -4.500006 +v 2.125000 3.499998 -4.750006 +v 2.125000 3.499998 -4.250006 +v 2.125000 3.676775 -4.823230 +v 2.125000 3.676775 -5.176783 +v 2.125000 3.499998 -5.250006 +v 2.125000 3.323221 -5.176783 +v 2.125000 3.323221 -4.823230 +v 2.125000 3.749998 -5.000006 +v 2.125000 3.676775 -4.323230 +v 2.125000 3.676775 -4.676783 +v 2.125000 3.499998 -4.750006 +v 2.125000 3.323221 -4.676783 +v 2.125000 3.323221 -4.323230 +v 2.125000 3.749998 -4.500006 +v 2.375000 3.124998 -1.750007 +v 3.125000 3.124998 -1.750007 +v 2.375000 4.249998 -1.750007 +v 3.125000 4.249998 -1.750007 +v 2.375000 4.249998 -1.500007 +v 2.375000 3.374998 -1.500007 +v 3.125000 3.374998 -1.500007 +v 3.125000 4.249998 -1.500007 +v 2.375000 4.499998 -1.750007 +v 3.125000 4.499998 -1.750007 +v 3.125000 4.249998 -5.500007 +v 2.375000 4.249998 -5.500007 +v 3.125000 4.499998 -5.500007 +v 2.375000 4.499998 -5.500007 +v 2.625000 6.124996 3.500000 +v 3.375000 6.124996 3.500000 +v 2.625000 6.874996 3.500000 +v 3.375000 6.874996 3.500000 +v 2.625000 6.124996 -5.500000 +v 3.375000 6.124996 -5.500000 +v 2.625000 6.874996 -5.500000 +v 3.375000 6.874996 -5.500000 +v -3.375000 6.124996 3.500000 +v -2.625000 6.124996 3.500000 +v -3.375000 6.874996 3.500000 +v -2.625000 6.874996 3.500000 +v -3.375000 6.124996 -5.500000 +v -2.625000 6.124996 -5.500000 +v -3.375000 6.874996 -5.500000 +v -2.625000 6.874996 -5.500000 +v -0.250000 0.250000 -1.000000 +v 0.250000 0.250000 -1.000000 +v -0.250000 0.750000 -1.000000 +v 0.250000 0.750000 -1.000000 +v -0.250000 0.250000 3.500000 +v 0.250000 0.250000 3.500000 +v -0.250000 0.750000 3.500000 +v 0.250000 0.750000 3.500000 +v 0.750000 0.250000 -1.000000 +v 1.250000 0.250000 -1.000000 +v 0.750000 0.750000 -1.000000 +v 1.250000 0.750000 -1.000000 +v 0.750000 0.250000 3.500000 +v 1.250000 0.250000 3.500000 +v 0.750000 0.750000 3.500000 +v 1.250000 0.750000 3.500000 +v -1.250000 0.250000 -1.000000 +v -0.750000 0.250000 -1.000000 +v -1.250000 0.750000 -1.000000 +v -0.750000 0.750000 -1.000000 +v -1.250000 0.250000 3.500000 +v -0.750000 0.250000 3.500000 +v -1.250000 0.750000 3.500000 +v -0.750000 0.750000 3.500000 +v -2.250000 0.250000 -0.750000 +v -1.750000 0.250000 -0.750000 +v -2.250000 0.750000 -0.750000 +v -1.750000 0.750000 -0.750000 +v -2.250000 0.250000 3.250000 +v -1.750000 0.250000 3.250000 +v -2.250000 0.750000 3.250000 +v -1.750000 0.750000 3.250000 +v 1.750000 0.250000 -0.750000 +v 2.250000 0.250000 -0.750000 +v 1.750000 0.750000 -0.750000 +v 2.250000 0.750000 -0.750000 +v 1.750000 0.250000 3.250000 +v 2.250000 0.250000 3.250000 +v 1.750000 0.750000 3.250000 +v 2.250000 0.750000 3.250000 +v -0.250000 0.250000 -8.500000 +v 0.250000 0.250000 -8.500000 +v -0.250000 0.750000 -8.500000 +v 0.250000 0.750000 -8.500000 +v -0.250000 0.250000 -4.000000 +v 0.250000 0.250000 -4.000000 +v -0.250000 0.750000 -4.000000 +v 0.250000 0.750000 -4.000000 +v 0.750000 0.250000 -8.500000 +v 1.250000 0.250000 -8.500000 +v 0.750000 0.750000 -8.500000 +v 1.250000 0.750000 -8.500000 +v 0.750000 0.250000 -4.000000 +v 1.250000 0.250000 -4.000000 +v 0.750000 0.750000 -4.000000 +v 1.250000 0.750000 -4.000000 +v -1.250000 0.250000 -8.500000 +v -0.750000 0.250000 -8.500000 +v -1.250000 0.750000 -8.500000 +v -0.750000 0.750000 -8.500000 +v -1.250000 0.250000 -4.000000 +v -0.750000 0.250000 -4.000000 +v -1.250000 0.750000 -4.000000 +v -0.750000 0.750000 -4.000000 +v -2.250000 0.250000 -8.250000 +v -1.750000 0.250000 -8.250000 +v -2.250000 0.750000 -8.250000 +v -1.750000 0.750000 -8.250000 +v -2.250000 0.250000 -4.250000 +v -1.750000 0.250000 -4.250000 +v -2.250000 0.750000 -4.250000 +v -1.750000 0.750000 -4.250000 +v 1.750000 0.250000 -8.250000 +v 2.250000 0.250000 -8.250000 +v 1.750000 0.750000 -8.250000 +v 2.250000 0.750000 -8.250000 +v 1.750000 0.250000 -4.250000 +v 2.250000 0.250000 -4.250000 +v 1.750000 0.750000 -4.250000 +v 2.250000 0.750000 -4.250000 +v 3.500000 3.687500 -0.812500 +v 3.500000 3.312500 -0.812500 +v 3.500000 3.687500 -1.187500 +v 3.500000 3.312500 -1.187500 +v 3.000000 3.687500 -1.187500 +v 3.000000 3.687500 -0.812500 +v 3.000000 3.312500 -0.812500 +v 3.000000 3.312500 -1.187500 +v 2.875000 3.687500 -1.312500 +v 2.875000 3.312500 -1.312500 +v 2.875000 3.687500 -1.562500 +v 2.875000 3.312500 -1.562500 +v 2.500000 3.687500 -1.312500 +v 2.500000 3.312500 -1.312500 +v 2.500000 3.687500 -1.562500 +v 2.500000 3.312500 -1.562500 +v 3.250000 3.000000 -0.937500 +v 3.250000 4.000000 -0.937500 +v 3.250000 3.000000 -1.062500 +v 3.250000 4.000000 -1.062500 +v 3.375000 3.000000 -0.937500 +v 3.375000 4.000000 -0.937500 +v 3.375000 3.000000 -1.062500 +v 3.375000 4.000000 -1.062500 +v 3.250000 2.875000 -1.062500 +v 3.375000 2.875000 -1.062500 +v 3.250000 4.125000 -1.062500 +v 3.375000 4.125000 -1.062500 +v 3.375000 3.000000 -5.500000 +v 3.250000 3.000000 -5.500000 +v 3.250000 4.000000 -5.500000 +v 3.375000 4.000000 -5.500000 +v 3.375000 2.875000 -5.500000 +v 3.250000 2.875000 -5.500000 +v 3.250000 4.125000 -5.500000 +v 3.375000 4.125000 -5.500000 +v 2.624997 6.500003 8.000000 +v 2.624997 6.875003 8.000000 +v 2.624997 6.500003 7.500000 +v 2.624997 6.875003 7.500000 +v 2.999997 6.500003 8.000000 +v 2.999997 6.875003 8.000000 +v 2.999997 6.500003 7.500000 +v 2.999997 6.875003 7.500000 +v 2.624997 6.500003 6.500000 +v 2.624997 6.875003 6.500000 +v 2.624997 6.500003 6.000000 +v 2.624997 6.875003 6.000000 +v 2.999997 6.500003 6.500000 +v 2.999997 6.875003 6.500000 +v 2.999997 6.500003 6.000000 +v 2.999997 6.875003 6.000000 +v -2.750000 5.000000 3.500000 +v -3.250000 5.000000 3.500000 +v -3.250000 1.000000 -0.500000 +v -2.750000 1.000000 -0.500000 +v -3.250000 4.000000 3.500000 +v -2.750000 4.000000 3.500000 +v -2.750000 1.000000 0.500000 +v -3.250000 1.000000 0.500000 +v 2.750000 1.000000 0.500000 +v 3.250000 1.000000 0.500000 +v 3.250000 4.000000 3.500000 +v 2.750000 4.000000 3.500000 +v 3.250000 1.000000 -0.500000 +v 2.750000 1.000000 -0.500000 +v 2.750000 5.000000 3.500000 +v 3.250000 5.000000 3.500000 +v 2.625000 1.000000 -7.125000 +v 3.375000 1.000000 -7.125000 +v 2.625000 1.000000 -7.875000 +v 3.375000 1.000000 -7.875000 +v 2.625000 1.250000 -7.875000 +v 2.625000 1.250000 -7.125000 +v 3.375000 1.250000 -7.125000 +v 3.375000 1.250000 -7.875000 +v 3.375000 1.000000 -8.125000 +v 3.437500 1.000000 -8.125000 +v 3.375000 1.000000 -8.062500 +v 3.437500 1.000000 -8.062500 +v 3.375000 2.250000 -8.125000 +v 3.437500 2.250000 -8.125000 +v 3.375000 2.250000 -8.062500 +v 3.437500 2.250000 -8.062500 +v 3.375000 1.000000 -8.937500 +v 3.437500 1.000000 -8.937500 +v 3.375000 1.000000 -8.875000 +v 3.437500 1.000000 -8.875000 +v 3.375000 2.250000 -8.937500 +v 3.437500 2.250000 -8.937500 +v 3.375000 2.250000 -8.875000 +v 3.437500 2.250000 -8.875000 +v 2.562500 1.000000 -8.125000 +v 2.625000 1.000000 -8.125000 +v 2.562500 1.000000 -8.062500 +v 2.625000 1.000000 -8.062500 +v 2.562500 2.250000 -8.125000 +v 2.625000 2.250000 -8.125000 +v 2.562500 2.250000 -8.062500 +v 2.625000 2.250000 -8.062500 +v 2.562500 1.000000 -8.937500 +v 2.625000 1.000000 -8.937500 +v 2.562500 1.000000 -8.875000 +v 2.625000 1.000000 -8.875000 +v 2.562500 2.250000 -8.937500 +v 2.625000 2.250000 -8.937500 +v 2.562500 2.250000 -8.875000 +v 2.625000 2.250000 -8.875000 +v 3.437500 2.375000 -8.062500 +v 3.437500 2.375000 -8.937500 +v 2.562500 2.375000 -8.062500 +v 2.562500 2.375000 -8.937500 +v 3.437500 2.250000 -8.062500 +v 3.437500 2.250000 -8.937500 +v 2.562500 2.250000 -8.062500 +v 2.562500 2.250000 -8.937500 +v 3.062500 1.000000 -0.500000 +v 2.937500 1.000000 -0.500000 +v 3.062500 1.000000 -7.125000 +v 2.937500 1.000000 -7.125000 +v 3.062500 1.062500 -0.562500 +v 2.937500 1.062500 -0.562500 +v 3.062500 1.062500 -7.125000 +v 2.937500 1.062500 -7.125000 +v 3.062500 3.875000 2.375000 +v 2.937500 3.875000 2.375000 +v 3.062500 3.937500 2.312500 +v 2.937500 3.937500 2.312500 +v 2.875000 3.750000 2.500000 +v 2.875000 4.000000 2.500000 +v 2.875000 3.750000 2.250000 +v 2.875000 4.000000 2.250000 +v 3.125000 3.750000 2.500000 +v 3.125000 4.000000 2.500000 +v 3.125000 3.750000 2.250000 +v 3.125000 4.000000 2.250000 +v 2.812500 1.000000 -7.875000 +v 2.687500 1.000000 -7.875000 +v 2.812500 1.062500 -7.875000 +v 2.687500 1.062500 -7.875000 +v 2.812500 1.000000 -8.125000 +v 2.687500 1.000000 -8.125000 +v 2.812500 1.062500 -8.062500 +v 2.687500 1.062500 -8.062500 +v 2.812500 2.062500 -8.062500 +v 2.687500 2.062500 -8.062500 +v 2.812500 2.062500 -8.125000 +v 2.687500 2.062500 -8.125000 +v -3.062500 1.000000 -0.500000 +v -2.937500 1.000000 -0.500000 +v -3.062500 1.062500 -0.562500 +v -2.937500 1.062500 -0.562500 +v -3.062500 3.875000 2.375000 +v -2.937500 3.875000 2.375000 +v -3.062500 3.937500 2.312500 +v -2.937500 3.937500 2.312500 +v -2.875000 3.750000 2.500000 +v -2.875000 4.000000 2.500000 +v -2.875000 3.750000 2.250000 +v -2.875000 4.000000 2.250000 +v -3.125000 3.750000 2.500000 +v -3.125000 4.000000 2.500000 +v -3.125000 3.750000 2.250000 +v -3.125000 4.000000 2.250000 +v -3.375000 1.000000 -2.125000 +v -2.625000 1.000000 -2.125000 +v -3.375000 1.000000 -2.875000 +v -2.625000 1.000000 -2.875000 +v -3.375000 1.750000 -2.875000 +v -3.375000 1.750000 -2.125000 +v -2.625000 1.750000 -2.125000 +v -2.625000 1.750000 -2.875000 +v -3.375000 1.125000 -2.875000 +v -3.375000 1.125000 -2.125000 +v -2.625000 1.125000 -2.125000 +v -2.625000 1.125000 -2.875000 +v -3.375000 1.625000 -2.875000 +v -3.375000 1.625000 -2.125000 +v -2.625000 1.625000 -2.125000 +v -2.625000 1.625000 -2.875000 +v -3.312500 1.125000 -2.875000 +v -3.356694 1.125000 -2.856694 +v -3.375000 1.125000 -2.812500 +v -3.356694 1.125000 -2.768306 +v -3.312500 1.125000 -2.750000 +v -3.250000 1.125000 -2.812500 +v -3.268306 1.125000 -2.856694 +v -3.312500 1.625000 -2.875000 +v -3.356694 1.625000 -2.856694 +v -3.375000 1.625000 -2.812500 +v -3.356694 1.625000 -2.768306 +v -3.312500 1.625000 -2.750000 +v -3.250000 1.625000 -2.812500 +v -3.268306 1.625000 -2.856694 +v -3.312500 1.125000 -2.750000 +v -3.356694 1.125000 -2.731694 +v -3.375000 1.125000 -2.687500 +v -3.356694 1.125000 -2.643306 +v -3.312500 1.125000 -2.625000 +v -3.312500 1.625000 -2.750000 +v -3.356694 1.625000 -2.731694 +v -3.375000 1.625000 -2.687500 +v -3.356694 1.625000 -2.643306 +v -3.312500 1.625000 -2.625000 +v -3.312500 1.125000 -2.625000 +v -3.356694 1.125000 -2.606694 +v -3.375000 1.125000 -2.562500 +v -3.356694 1.125000 -2.518306 +v -3.312500 1.125000 -2.500000 +v -3.312500 1.625000 -2.625000 +v -3.356694 1.625000 -2.606694 +v -3.375000 1.625000 -2.562500 +v -3.356694 1.625000 -2.518306 +v -3.312500 1.625000 -2.500000 +v -3.312500 1.125000 -2.500000 +v -3.356694 1.125000 -2.481694 +v -3.375000 1.125000 -2.437500 +v -3.356694 1.125000 -2.393306 +v -3.312500 1.125000 -2.375000 +v -3.312500 1.625000 -2.500000 +v -3.356694 1.625000 -2.481694 +v -3.375000 1.625000 -2.437500 +v -3.356694 1.625000 -2.393306 +v -3.312500 1.625000 -2.375000 +v -3.312500 1.125000 -2.375000 +v -3.356694 1.125000 -2.356694 +v -3.375000 1.125000 -2.312500 +v -3.356694 1.125000 -2.268306 +v -3.312500 1.125000 -2.250000 +v -3.312500 1.625000 -2.375000 +v -3.356694 1.625000 -2.356694 +v -3.375000 1.625000 -2.312500 +v -3.356694 1.625000 -2.268306 +v -3.312500 1.625000 -2.250000 +v -3.312500 1.125000 -2.250000 +v -3.356694 1.125000 -2.231694 +v -3.375000 1.125000 -2.187500 +v -3.356694 1.125000 -2.143306 +v -3.312500 1.125000 -2.125000 +v -3.268306 1.125000 -2.143306 +v -3.250000 1.125000 -2.187500 +v -3.312500 1.625000 -2.250000 +v -3.356694 1.625000 -2.231694 +v -3.375000 1.625000 -2.187500 +v -3.356694 1.625000 -2.143306 +v -3.312500 1.625000 -2.125000 +v -3.268306 1.625000 -2.143306 +v -3.250000 1.625000 -2.187500 +v -2.687500 1.125000 -2.875000 +v -2.731694 1.125000 -2.856694 +v -2.750000 1.125000 -2.812500 +v -2.687500 1.125000 -2.750000 +v -2.643306 1.125000 -2.768306 +v -2.625000 1.125000 -2.812500 +v -2.643306 1.125000 -2.856694 +v -2.687500 1.625000 -2.875000 +v -2.731694 1.625000 -2.856694 +v -2.750000 1.625000 -2.812500 +v -2.687500 1.625000 -2.750000 +v -2.643306 1.625000 -2.768306 +v -2.625000 1.625000 -2.812500 +v -2.643306 1.625000 -2.856694 +v -2.687500 1.125000 -2.750000 +v -2.687500 1.125000 -2.625000 +v -2.643306 1.125000 -2.643306 +v -2.625000 1.125000 -2.687500 +v -2.643306 1.125000 -2.731694 +v -2.687500 1.625000 -2.750000 +v -2.687500 1.625000 -2.625000 +v -2.643306 1.625000 -2.643306 +v -2.625000 1.625000 -2.687500 +v -2.643306 1.625000 -2.731694 +v -2.687500 1.125000 -2.625000 +v -2.687500 1.125000 -2.500000 +v -2.643306 1.125000 -2.518306 +v -2.625000 1.125000 -2.562500 +v -2.643306 1.125000 -2.606694 +v -2.687500 1.625000 -2.625000 +v -2.687500 1.625000 -2.500000 +v -2.643306 1.625000 -2.518306 +v -2.625000 1.625000 -2.562500 +v -2.643306 1.625000 -2.606694 +v -2.687500 1.125000 -2.500000 +v -2.687500 1.125000 -2.375000 +v -2.643306 1.125000 -2.393306 +v -2.625000 1.125000 -2.437500 +v -2.643306 1.125000 -2.481694 +v -2.687500 1.625000 -2.500000 +v -2.687500 1.625000 -2.375000 +v -2.643306 1.625000 -2.393306 +v -2.625000 1.625000 -2.437500 +v -2.643306 1.625000 -2.481694 +v -2.687500 1.125000 -2.375000 +v -2.687500 1.125000 -2.250000 +v -2.643306 1.125000 -2.268306 +v -2.625000 1.125000 -2.312500 +v -2.643306 1.125000 -2.356694 +v -2.687500 1.625000 -2.375000 +v -2.687500 1.625000 -2.250000 +v -2.643306 1.625000 -2.268306 +v -2.625000 1.625000 -2.312500 +v -2.643306 1.625000 -2.356694 +v -2.687500 1.125000 -2.250000 +v -2.750000 1.125000 -2.187500 +v -2.731694 1.125000 -2.143306 +v -2.687500 1.125000 -2.125000 +v -2.643306 1.125000 -2.143306 +v -2.625000 1.125000 -2.187500 +v -2.643306 1.125000 -2.231694 +v -2.687500 1.625000 -2.250000 +v -2.750000 1.625000 -2.187500 +v -2.731694 1.625000 -2.143306 +v -2.687500 1.625000 -2.125000 +v -2.643306 1.625000 -2.143306 +v -2.625000 1.625000 -2.187500 +v -2.643306 1.625000 -2.231694 +v -2.812500 1.125000 -2.875000 +v -2.856694 1.125000 -2.856694 +v -2.875000 1.125000 -2.812500 +v -2.750000 1.125000 -2.812500 +v -2.768306 1.125000 -2.856694 +v -2.812500 1.625000 -2.875000 +v -2.856694 1.625000 -2.856694 +v -2.875000 1.625000 -2.812500 +v -2.750000 1.625000 -2.812500 +v -2.768306 1.625000 -2.856694 +v -2.875000 1.125000 -2.187500 +v -2.856694 1.125000 -2.143306 +v -2.812500 1.125000 -2.125000 +v -2.768306 1.125000 -2.143306 +v -2.750000 1.125000 -2.187500 +v -2.875000 1.625000 -2.187500 +v -2.856694 1.625000 -2.143306 +v -2.812500 1.625000 -2.125000 +v -2.768306 1.625000 -2.143306 +v -2.750000 1.625000 -2.187500 +v -2.937500 1.125000 -2.875000 +v -2.981694 1.125000 -2.856694 +v -3.000000 1.125000 -2.812500 +v -2.875000 1.125000 -2.812500 +v -2.893306 1.125000 -2.856694 +v -2.937500 1.625000 -2.875000 +v -2.981694 1.625000 -2.856694 +v -3.000000 1.625000 -2.812500 +v -2.875000 1.625000 -2.812500 +v -2.893306 1.625000 -2.856694 +v -3.000000 1.125000 -2.187500 +v -2.981694 1.125000 -2.143306 +v -2.937500 1.125000 -2.125000 +v -2.893306 1.125000 -2.143306 +v -2.875000 1.125000 -2.187500 +v -3.000000 1.625000 -2.187500 +v -2.981694 1.625000 -2.143306 +v -2.937500 1.625000 -2.125000 +v -2.893306 1.625000 -2.143306 +v -2.875000 1.625000 -2.187500 +v -3.062500 1.125000 -2.875000 +v -3.106694 1.125000 -2.856694 +v -3.125000 1.125000 -2.812500 +v -3.000000 1.125000 -2.812500 +v -3.018306 1.125000 -2.856694 +v -3.062500 1.625000 -2.875000 +v -3.106694 1.625000 -2.856694 +v -3.125000 1.625000 -2.812500 +v -3.000000 1.625000 -2.812500 +v -3.018306 1.625000 -2.856694 +v -3.125000 1.125000 -2.187500 +v -3.106694 1.125000 -2.143306 +v -3.062500 1.125000 -2.125000 +v -3.018306 1.125000 -2.143306 +v -3.000000 1.125000 -2.187500 +v -3.125000 1.625000 -2.187500 +v -3.106694 1.625000 -2.143306 +v -3.062500 1.625000 -2.125000 +v -3.018306 1.625000 -2.143306 +v -3.000000 1.625000 -2.187500 +v -3.187500 1.125000 -2.875000 +v -3.231694 1.125000 -2.856694 +v -3.250000 1.125000 -2.812500 +v -3.125000 1.125000 -2.812500 +v -3.143306 1.125000 -2.856694 +v -3.187500 1.625000 -2.875000 +v -3.231694 1.625000 -2.856694 +v -3.250000 1.625000 -2.812500 +v -3.125000 1.625000 -2.812500 +v -3.143306 1.625000 -2.856694 +v -3.250000 1.125000 -2.187500 +v -3.231694 1.125000 -2.143306 +v -3.187500 1.125000 -2.125000 +v -3.143306 1.125000 -2.143306 +v -3.125000 1.125000 -2.187500 +v -3.250000 1.625000 -2.187500 +v -3.231694 1.625000 -2.143306 +v -3.187500 1.625000 -2.125000 +v -3.143306 1.625000 -2.143306 +v -3.125000 1.625000 -2.187500 +v -3.062500 1.000000 -2.125000 +v -2.937500 1.000000 -2.125000 +v -3.062500 1.062500 -2.062500 +v -2.937500 1.062500 -2.062500 +v -3.062500 1.750000 -2.125000 +v -2.937500 1.750000 -2.125000 +v -3.062500 1.812500 -2.062500 +v -2.937500 1.812500 -2.062500 +v -3.062500 1.750000 -2.875000 +v -2.937500 1.750000 -2.875000 +v -3.062500 1.812500 -2.875000 +v -2.937500 1.812500 -2.875000 +v -3.062500 1.750000 -2.843750 +v -3.062500 1.750000 -2.781250 +v -3.062500 1.812500 -2.843750 +v -3.062500 1.812500 -2.781250 +v -3.312500 1.750000 -2.843750 +v -3.312500 1.750000 -2.781250 +v -3.312500 1.812500 -2.843750 +v -3.312500 1.812500 -2.781250 +v -3.062500 1.750000 -2.718750 +v -3.062500 1.750000 -2.656250 +v -3.062500 1.812500 -2.718750 +v -3.062500 1.812500 -2.656250 +v -3.312500 1.750000 -2.718750 +v -3.312500 1.750000 -2.656250 +v -3.312500 1.812500 -2.718750 +v -3.312500 1.812500 -2.656250 +v -3.062500 1.750000 -2.593750 +v -3.062500 1.750000 -2.531250 +v -3.062500 1.812500 -2.593750 +v -3.062500 1.812500 -2.531250 +v -3.312500 1.750000 -2.593750 +v -3.312500 1.750000 -2.531250 +v -3.312500 1.812500 -2.593750 +v -3.312500 1.812500 -2.531250 +v -3.062500 1.750000 -2.468750 +v -3.062500 1.750000 -2.406250 +v -3.062500 1.812500 -2.468750 +v -3.062500 1.812500 -2.406250 +v -3.312500 1.750000 -2.468750 +v -3.312500 1.750000 -2.406250 +v -3.312500 1.812500 -2.468750 +v -3.312500 1.812500 -2.406250 +v -3.062500 1.750000 -2.343750 +v -3.062500 1.750000 -2.281250 +v -3.062500 1.812500 -2.343750 +v -3.062500 1.812500 -2.281250 +v -3.312500 1.750000 -2.343750 +v -3.312500 1.750000 -2.281250 +v -3.312500 1.812500 -2.343750 +v -3.312500 1.812500 -2.281250 +v -3.062500 1.750000 -2.218750 +v -3.062500 1.750000 -2.156250 +v -3.062500 1.812500 -2.218750 +v -3.062500 1.812500 -2.156250 +v -3.312500 1.750000 -2.218750 +v -3.312500 1.750000 -2.156250 +v -3.312500 1.812500 -2.218750 +v -3.312500 1.812500 -2.156250 +v -2.687500 1.750000 -2.843750 +v -2.687500 1.750000 -2.781250 +v -2.687500 1.812500 -2.843750 +v -2.687500 1.812500 -2.781250 +v -2.937500 1.750000 -2.843750 +v -2.937500 1.750000 -2.781250 +v -2.937500 1.812500 -2.843750 +v -2.937500 1.812500 -2.781250 +v -2.687500 1.750000 -2.718750 +v -2.687500 1.750000 -2.656250 +v -2.687500 1.812500 -2.718750 +v -2.687500 1.812500 -2.656250 +v -2.937500 1.750000 -2.718750 +v -2.937500 1.750000 -2.656250 +v -2.937500 1.812500 -2.718750 +v -2.937500 1.812500 -2.656250 +v -2.687500 1.750000 -2.593750 +v -2.687500 1.750000 -2.531250 +v -2.687500 1.812500 -2.593750 +v -2.687500 1.812500 -2.531250 +v -2.937500 1.750000 -2.593750 +v -2.937500 1.750000 -2.531250 +v -2.937500 1.812500 -2.593750 +v -2.937500 1.812500 -2.531250 +v -2.687500 1.750000 -2.468750 +v -2.687500 1.750000 -2.406250 +v -2.687500 1.812500 -2.468750 +v -2.687500 1.812500 -2.406250 +v -2.937500 1.750000 -2.468750 +v -2.937500 1.750000 -2.406250 +v -2.937500 1.812500 -2.468750 +v -2.937500 1.812500 -2.406250 +v -2.687500 1.750000 -2.343750 +v -2.687500 1.750000 -2.281250 +v -2.687500 1.812500 -2.343750 +v -2.687500 1.812500 -2.281250 +v -2.937500 1.750000 -2.343750 +v -2.937500 1.750000 -2.281250 +v -2.937500 1.812500 -2.343750 +v -2.937500 1.812500 -2.281250 +v -2.687500 1.750000 -2.218750 +v -2.687500 1.750000 -2.156250 +v -2.687500 1.812500 -2.218750 +v -2.687500 1.812500 -2.156250 +v -2.937500 1.750000 -2.218750 +v -2.937500 1.750000 -2.156250 +v -2.937500 1.812500 -2.218750 +v -2.937500 1.812500 -2.156250 +v -2.875000 1.000000 -2.125000 +v -2.875000 1.875000 -2.125000 +v -2.750000 1.000000 -2.125000 +v -2.750000 1.875000 -2.125000 +v -2.750000 1.000000 -2.000000 +v -2.875000 1.000000 -2.000000 +v -2.875000 1.875000 -2.000000 +v -2.750000 1.875000 -2.000000 +v -2.875000 2.000000 -2.125000 +v -2.750000 2.000000 -2.125000 +v -2.875000 1.875000 -3.500000 +v -2.750000 1.875000 -3.500000 +v -2.875000 2.000000 -3.500000 +v -2.750000 2.000000 -3.500000 +v -3.250000 1.000000 -2.125000 +v -3.250000 1.875000 -2.125000 +v -3.125000 1.000000 -2.125000 +v -3.125000 1.875000 -2.125000 +v -3.125000 1.000000 -2.000000 +v -3.250000 1.000000 -2.000000 +v -3.250000 1.875000 -2.000000 +v -3.125000 1.875000 -2.000000 +v -3.250000 2.000000 -2.125000 +v -3.125000 2.000000 -2.125000 +v -3.250000 1.875000 -3.500000 +v -3.125000 1.875000 -3.500000 +v -3.250000 2.000000 -3.500000 +v -3.125000 2.000000 -3.500000 +v -2.875000 1.000000 -3.000000 +v -2.875000 1.875000 -3.000000 +v -2.750000 1.000000 -3.000000 +v -2.750000 1.875000 -3.000000 +v -2.750000 1.000000 -2.875000 +v -2.875000 1.000000 -2.875000 +v -2.875000 1.875000 -2.875000 +v -2.750000 1.875000 -2.875000 +v -3.250000 1.000000 -3.000000 +v -3.250000 1.875000 -3.000000 +v -3.125000 1.000000 -3.000000 +v -3.125000 1.875000 -3.000000 +v -3.125000 1.000000 -2.875000 +v -3.250000 1.000000 -2.875000 +v -3.250000 1.875000 -2.875000 +v -3.125000 1.875000 -2.875000 +v 3.500000 1.000000 -5.500000 +v 3.500000 1.000000 -6.500000 +v 2.500000 1.000000 -6.500000 +v 2.500000 1.000000 -5.500000 +v 3.500000 5.000000 -5.500000 +v 3.500000 5.000000 -6.500000 +v 2.500000 5.000000 -6.500000 +v 2.500000 5.000000 -5.500000 +v -2.500000 1.000000 -5.500000 +v -2.500000 1.000000 -6.500000 +v -3.500000 1.000000 -6.500000 +v -3.500000 1.000000 -5.500000 +v -2.500000 5.000000 -5.500000 +v -2.500000 5.000000 -6.500000 +v -3.500000 5.000000 -6.500000 +v -3.500000 5.000000 -5.500000 +v 1.500000 6.000000 -6.500000 +v 1.500000 6.000000 -5.500000 +v -1.500000 6.000000 -5.500000 +v -1.500000 6.000000 -6.500000 +v 1.500000 7.000000 -6.500000 +v 1.500000 7.000000 -5.500000 +v -1.500000 7.000000 -5.500000 +v -1.500000 7.000000 -6.500000 +v -2.750000 4.249998 -5.500007 +v -3.037012 4.192908 -5.500007 +v -3.280331 4.030329 -5.500007 +v -3.442909 3.787011 -5.500007 +v -3.500000 3.499998 -5.500007 +v -3.442909 3.212986 -5.500007 +v -3.280331 2.969668 -5.500007 +v -3.037012 2.807089 -5.500007 +v -2.750000 2.749998 -5.500007 +v -2.462988 2.807089 -5.500007 +v -2.219670 2.969668 -5.500007 +v -2.057091 3.212986 -5.500007 +v -2.000000 3.499998 -5.500007 +v -2.057091 3.787011 -5.500007 +v -2.219670 4.030329 -5.500007 +v -2.462988 4.192908 -5.500007 +v -2.750000 4.249998 -1.750007 +v -3.037012 4.192908 -1.750007 +v -3.280331 4.030329 -1.750007 +v -3.442909 3.787011 -1.750007 +v -3.500000 3.499998 -1.750007 +v -3.442909 3.212986 -1.750007 +v -3.280331 2.969668 -1.750007 +v -3.037012 2.807089 -1.750007 +v -2.750000 2.749998 -1.750007 +v -2.462988 2.807089 -1.750007 +v -2.219670 2.969668 -1.750007 +v -2.057091 3.212986 -1.750007 +v -2.000000 3.499998 -1.750007 +v -2.057091 3.787011 -1.750007 +v -2.219670 4.030329 -1.750007 +v -2.462988 4.192908 -1.750007 +v -3.500000 3.687500 -0.812500 +v -3.500000 3.312500 -0.812500 +v -3.500000 3.687500 -1.187500 +v -3.500000 3.312500 -1.187500 +v -3.000000 3.687500 -1.187500 +v -3.000000 3.687500 -0.812500 +v -3.000000 3.312500 -0.812500 +v -3.000000 3.312500 -1.187500 +v -2.875000 3.687500 -1.312500 +v -2.875000 3.312500 -1.312500 +v -2.875000 3.687500 -1.562500 +v -2.875000 3.312500 -1.562500 +v -2.500000 3.687500 -1.312500 +v -2.500000 3.312500 -1.312500 +v -2.500000 3.687500 -1.562500 +v -2.500000 3.312500 -1.562500 +v -3.250000 3.000000 -0.937500 +v -3.250000 4.000000 -0.937500 +v -3.250000 3.000000 -1.062500 +v -3.250000 4.000000 -1.062500 +v -3.375000 3.000000 -0.937500 +v -3.375000 4.000000 -0.937500 +v -3.375000 3.000000 -1.062500 +v -3.375000 4.000000 -1.062500 +v -3.250000 2.875000 -1.062500 +v -3.375000 2.875000 -1.062500 +v -3.250000 4.125000 -1.062500 +v -3.375000 4.125000 -1.062500 +v -3.375000 3.000000 -5.500000 +v -3.250000 3.000000 -5.500000 +v -3.250000 4.000000 -5.500000 +v -3.375000 4.000000 -5.500000 +v -3.375000 2.875000 -5.500000 +v -3.250000 2.875000 -5.500000 +v -3.250000 4.125000 -5.500000 +v -3.375000 4.125000 -5.500000 +v -2.624997 6.500003 6.000000 +v -2.624997 6.875003 6.000000 +v -2.624997 6.500003 6.500000 +v -2.624997 6.875003 6.500000 +v -2.999997 6.500003 6.000000 +v -2.999997 6.875003 6.000000 +v -2.999997 6.500003 6.500000 +v -2.999997 6.875003 6.500000 +v -2.624997 6.500003 7.500000 +v -2.624997 6.875003 7.500000 +v -2.624997 6.500003 8.000000 +v -2.624997 6.875003 8.000000 +v -2.999997 6.500003 7.500000 +v -2.999997 6.875003 7.500000 +v -2.999997 6.500003 8.000000 +v -2.999997 6.875003 8.000000 +v -2.624997 0.499993 8.000000 +v -2.624997 0.124993 8.000000 +v -2.624997 0.499993 7.500000 +v -2.624997 0.124993 7.500000 +v -2.999997 0.499993 8.000000 +v -2.999997 0.124993 8.000000 +v -2.999997 0.499993 7.500000 +v -2.999997 0.124993 7.500000 +v -2.624997 0.499993 6.500000 +v -2.624997 0.124993 6.500000 +v -2.624997 0.499993 6.000000 +v -2.624997 0.124993 6.000000 +v -2.999997 0.499993 6.500000 +v -2.999997 0.124993 6.500000 +v -2.999997 0.499993 6.000000 +v -2.999997 0.124993 6.000000 +v 2.624997 0.499993 6.000000 +v 2.624997 0.124993 6.000000 +v 2.624997 0.499993 6.500000 +v 2.624997 0.124993 6.500000 +v 2.999997 0.499993 6.000000 +v 2.999997 0.124993 6.000000 +v 2.999997 0.499993 6.500000 +v 2.999997 0.124993 6.500000 +v 2.624997 0.499993 7.500000 +v 2.624997 0.124993 7.500000 +v 2.624997 0.499993 8.000000 +v 2.624997 0.124993 8.000000 +v 2.999997 0.499993 7.500000 +v 2.999997 0.124993 7.500000 +v 2.999997 0.499993 8.000000 +v 2.999997 0.124993 8.000000 +v -3.000005 6.124996 8.000000 +v -3.375005 6.124996 8.000000 +v -3.000005 6.124996 7.500000 +v -3.375005 6.124996 7.500000 +v -3.000004 6.499996 8.000000 +v -3.375004 6.499996 8.000000 +v -3.000004 6.499996 7.500000 +v -3.375004 6.499996 7.500000 +v -3.000005 6.124996 6.500000 +v -3.375005 6.124996 6.500000 +v -3.000005 6.124996 6.000000 +v -3.375005 6.124996 6.000000 +v -3.000004 6.499996 6.500000 +v -3.375004 6.499996 6.500000 +v -3.000004 6.499996 6.000000 +v -3.375004 6.499996 6.000000 +v -3.000005 0.875001 6.000000 +v -3.375005 0.875001 6.000000 +v -3.000005 0.875001 6.500000 +v -3.375005 0.875001 6.500000 +v -3.000005 0.500001 6.000000 +v -3.375005 0.500001 6.000000 +v -3.000005 0.500001 6.500001 +v -3.375005 0.500001 6.500001 +v -3.000005 0.875001 7.500000 +v -3.375005 0.875001 7.500000 +v -3.000005 0.875001 8.000000 +v -3.375005 0.875001 8.000000 +v -3.000005 0.500001 7.500000 +v -3.375005 0.500001 7.500000 +v -3.000005 0.500001 8.000000 +v -3.375005 0.500001 8.000000 +v 3.000005 0.875000 8.000000 +v 3.375005 0.875000 8.000000 +v 3.000005 0.875000 7.500000 +v 3.375005 0.875000 7.500000 +v 3.000004 0.500000 8.000000 +v 3.375004 0.500000 8.000000 +v 3.000004 0.500000 7.500000 +v 3.375004 0.500000 7.500000 +v 3.000005 0.875000 6.500000 +v 3.375005 0.875000 6.500000 +v 3.000005 0.875000 6.000000 +v 3.375005 0.875000 6.000000 +v 3.000004 0.500000 6.500000 +v 3.375004 0.500000 6.500000 +v 3.000004 0.500000 6.000000 +v 3.375004 0.500000 6.000000 +v 3.000006 6.124994 6.000000 +v 3.375006 6.124994 6.000000 +v 3.000006 6.124994 6.500000 +v 3.375006 6.124994 6.500000 +v 3.000006 6.499994 6.000000 +v 3.375006 6.499994 6.000000 +v 3.000006 6.499994 6.500001 +v 3.375006 6.499994 6.500001 +v 3.000006 6.124994 7.500000 +v 3.375006 6.124994 7.500000 +v 3.000006 6.124994 8.000000 +v 3.375006 6.124994 8.000000 +v 3.000006 6.499994 7.500000 +v 3.375006 6.499994 7.500000 +v 3.000006 6.499994 8.000000 +v 3.375006 6.499994 8.000000 +v -1.750000 5.749998 -9.000008 +v -2.103554 5.603552 -9.000008 +v -2.250000 5.249998 -9.000008 +v -2.103554 4.896445 -9.000008 +v -1.750000 4.749998 -9.000008 +v -1.396447 4.896445 -9.000008 +v -1.250000 5.249998 -9.000008 +v -1.396447 5.603552 -9.000008 +v -2.103554 5.603552 -9.500008 +v -1.750000 5.749998 -9.500008 +v -2.250000 5.249998 -9.500008 +v -2.103554 4.896445 -9.500008 +v -1.750000 4.749998 -9.500008 +v -1.396447 4.896445 -9.500008 +v -1.250000 5.249998 -9.500008 +v -1.396447 5.603552 -9.500008 +v -1.750000 2.249998 -9.000008 +v -2.103554 2.103552 -9.000008 +v -2.250000 1.749998 -9.000008 +v -2.103554 1.396445 -9.000008 +v -1.750000 1.249998 -9.000008 +v -1.396447 1.396445 -9.000008 +v -1.250000 1.749998 -9.000008 +v -1.396447 2.103552 -9.000008 +v -2.103554 2.103552 -9.500008 +v -1.750000 2.249998 -9.500008 +v -2.250000 1.749998 -9.500008 +v -2.103554 1.396445 -9.500008 +v -1.750000 1.249998 -9.500008 +v -1.396447 1.396445 -9.500008 +v -1.250000 1.749998 -9.500008 +v -1.396447 2.103552 -9.500008 +v 1.750000 2.249998 -9.000008 +v 1.396446 2.103552 -9.000008 +v 1.250000 1.749998 -9.000008 +v 1.396446 1.396445 -9.000008 +v 1.750000 1.249998 -9.000008 +v 2.103553 1.396445 -9.000008 +v 2.250000 1.749998 -9.000008 +v 2.103553 2.103552 -9.000008 +v 1.396446 2.103552 -9.500008 +v 1.750000 2.249998 -9.500008 +v 1.250000 1.749998 -9.500008 +v 1.396446 1.396445 -9.500008 +v 1.750000 1.249998 -9.500008 +v 2.103553 1.396445 -9.500008 +v 2.250000 1.749998 -9.500008 +v 2.103553 2.103552 -9.500008 +v -2.073223 1.676775 -4.000006 +v -2.073223 1.323221 -4.000006 +v -2.250000 1.249998 -4.000006 +v -2.426777 1.323221 -4.000006 +v -2.500000 1.499998 -4.000006 +v -2.426777 1.676775 -4.000006 +v -2.000000 1.499998 -4.000006 +v -2.250000 1.749998 -4.000006 +v -1.573223 1.676775 -4.000006 +v -1.573223 1.323221 -4.000006 +v -1.750000 1.249998 -4.000006 +v -1.926777 1.323221 -4.000006 +v -2.000000 1.499998 -4.000006 +v -1.926777 1.676775 -4.000006 +v -1.500000 1.499998 -4.000006 +v -1.750000 1.749998 -4.000006 +v -2.073223 2.176775 -4.000006 +v -2.073223 1.823221 -4.000006 +v -2.250000 1.749998 -4.000006 +v -2.426777 1.823221 -4.000006 +v -2.500000 1.999998 -4.000006 +v -2.426777 2.176775 -4.000006 +v -2.000000 1.999998 -4.000006 +v -2.250000 2.249998 -4.000006 +v -1.573223 2.176775 -4.000006 +v -1.573223 1.823221 -4.000006 +v -1.750000 1.749998 -4.000006 +v -1.926777 1.823221 -4.000006 +v -2.000000 1.999998 -4.000006 +v -1.926777 2.176775 -4.000006 +v -1.500000 1.999998 -4.000006 +v -1.750000 2.249998 -4.000006 +v -2.073223 1.676775 -4.750006 +v -2.073223 1.323221 -4.750006 +v -2.250000 1.249998 -4.750006 +v -2.426777 1.323221 -4.750006 +v -2.500000 1.499998 -4.750006 +v -2.426777 1.676775 -4.750006 +v -2.000000 1.499998 -4.750006 +v -2.250000 1.749998 -4.750006 +v -1.573223 1.676775 -4.750006 +v -1.573223 1.323221 -4.750006 +v -1.750000 1.249998 -4.750006 +v -1.926777 1.323221 -4.750006 +v -2.000000 1.499998 -4.750006 +v -1.926777 1.676775 -4.750006 +v -1.500000 1.499998 -4.750006 +v -1.750000 1.749998 -4.750006 +v -2.073223 2.176775 -4.250006 +v -2.073223 1.823221 -4.250006 +v -2.250000 1.749998 -4.250006 +v -2.426777 1.823221 -4.250006 +v -2.500000 1.999998 -4.250006 +v -2.426777 2.176775 -4.250006 +v -2.000000 1.999998 -4.250006 +v -2.250000 2.249998 -4.250006 +v -1.573223 2.176775 -4.250006 +v -1.573223 1.823221 -4.250006 +v -1.750000 1.749998 -4.250006 +v -1.926777 1.823221 -4.250006 +v -2.000000 1.999998 -4.250006 +v -1.926777 2.176775 -4.250006 +v -1.500000 1.999998 -4.250006 +v -1.750000 2.249998 -4.250006 +v -2.073223 1.698221 -4.801783 +v -2.073223 1.448221 -5.051783 +v -2.250000 1.396445 -5.103559 +v -2.426777 1.448221 -5.051783 +v -2.500000 1.573221 -4.926783 +v -2.426777 1.698221 -4.801783 +v -2.000000 1.573221 -4.926783 +v -1.573223 1.698221 -4.801783 +v -1.573223 1.448221 -5.051783 +v -1.750000 1.396445 -5.103559 +v -1.926777 1.448221 -5.051783 +v -2.000000 1.573221 -4.926783 +v -1.926777 1.698221 -4.801783 +v -1.500000 1.573221 -4.926783 +v -2.073223 1.749998 -4.823230 +v -2.073223 1.749998 -5.176783 +v -2.250000 1.749998 -5.250006 +v -2.426777 1.749998 -5.176783 +v -2.500000 1.749998 -5.000006 +v -2.426777 1.749998 -4.823230 +v -2.000000 1.749998 -5.000006 +v -1.573223 1.749998 -4.823230 +v -1.573223 1.749998 -5.176783 +v -1.750000 1.749998 -5.250006 +v -1.926777 1.749998 -5.176783 +v -2.000000 1.749998 -5.000006 +v -1.926777 1.749998 -4.823230 +v -1.500000 1.749998 -5.000006 +v -2.073223 2.198221 -4.301783 +v -2.073223 1.948221 -4.551783 +v -2.250000 1.896445 -4.603559 +v -2.426777 1.948221 -4.551783 +v -2.500000 2.073221 -4.426783 +v -2.426777 2.198221 -4.301783 +v -2.000000 2.073221 -4.426783 +v -1.573223 2.198221 -4.301783 +v -1.573223 1.948221 -4.551783 +v -1.750000 1.896445 -4.603559 +v -1.926777 1.948221 -4.551783 +v -2.000000 2.073221 -4.426783 +v -1.926777 2.198221 -4.301783 +v -1.500000 2.073221 -4.426783 +v -2.073223 2.249998 -4.323230 +v -2.073223 2.249998 -4.676783 +v -2.250000 2.249998 -4.750006 +v -2.426777 2.249998 -4.676783 +v -2.500000 2.249998 -4.500006 +v -2.426777 2.249998 -4.323230 +v -2.000000 2.249998 -4.500006 +v -1.573223 2.249998 -4.323230 +v -1.573223 2.249998 -4.676783 +v -1.750000 2.249998 -4.750006 +v -1.926777 2.249998 -4.676783 +v -2.000000 2.249998 -4.500006 +v -1.926777 2.249998 -4.323230 +v -1.500000 2.249998 -4.500006 +v -2.250000 3.499998 -4.750006 +v -1.750000 3.249998 -4.750006 +v -2.250000 3.499998 -4.250006 +v -1.750000 3.249998 -4.250006 +v -2.073223 3.499998 -4.823230 +v -2.073223 3.499998 -5.176783 +v -2.250000 3.499998 -5.250006 +v -2.426777 3.499998 -5.176783 +v -2.500000 3.499998 -5.000006 +v -2.426777 3.499998 -4.823230 +v -2.000000 3.499998 -5.000006 +v -1.573223 3.249998 -4.823230 +v -1.573223 3.249998 -5.176783 +v -1.750000 3.249998 -5.250006 +v -1.926777 3.249998 -5.176783 +v -2.000000 3.249998 -5.000006 +v -1.926777 3.249998 -4.823230 +v -1.500000 3.249998 -5.000006 +v -2.073223 3.499998 -4.323230 +v -2.073223 3.499998 -4.676783 +v -2.250000 3.499998 -4.750006 +v -2.426777 3.499998 -4.676783 +v -2.500000 3.499998 -4.500006 +v -2.426777 3.499998 -4.323230 +v -2.000000 3.499998 -4.500006 +v -1.573223 3.249998 -4.323230 +v -1.573223 3.249998 -4.676783 +v -1.750000 3.249998 -4.750006 +v -1.926777 3.249998 -4.676783 +v -2.000000 3.249998 -4.500006 +v -1.926777 3.249998 -4.323230 +v -1.500000 3.249998 -4.500006 +v -1.823223 3.426775 -4.750006 +v -1.823223 3.426775 -4.250006 +v -1.698223 3.551775 -4.823230 +v -1.698223 3.551775 -5.176783 +v -1.823223 3.426775 -5.250006 +v -1.948223 3.301775 -5.176783 +v -1.948223 3.301775 -4.823230 +v -1.646446 3.603551 -5.000006 +v -1.698223 3.551775 -4.323230 +v -1.698223 3.551775 -4.676783 +v -1.823223 3.426775 -4.750006 +v -1.948223 3.301775 -4.676783 +v -1.948223 3.301775 -4.323230 +v -1.646446 3.603551 -4.500006 +v -2.000000 3.499998 -4.750006 +v -2.000000 3.499998 -4.250006 +v -2.000000 3.676775 -4.823230 +v -2.000000 3.676775 -5.176783 +v -2.000000 3.499998 -5.250006 +v -2.000000 3.323221 -5.176783 +v -2.000000 3.323221 -4.823230 +v -2.000000 3.749998 -5.000006 +v -2.000000 3.676775 -4.323230 +v -1.999999 3.676775 -4.676783 +v -2.000000 3.499998 -4.750006 +v -2.000000 3.323221 -4.676783 +v -2.000000 3.323221 -4.323230 +v -2.000000 3.749998 -4.500006 +v -2.125000 3.249998 -5.000006 +v -2.125000 3.249998 -4.500006 +v -2.125000 3.499998 -4.750006 +v -2.125000 3.499998 -4.250006 +v -2.125000 3.676775 -4.823230 +v -2.125000 3.676775 -5.176783 +v -2.125000 3.499998 -5.250006 +v -2.125000 3.323221 -5.176783 +v -2.125000 3.323221 -4.823230 +v -2.125000 3.749998 -5.000006 +v -2.125000 3.676775 -4.323230 +v -2.125000 3.676775 -4.676783 +v -2.125000 3.499998 -4.750006 +v -2.125000 3.323221 -4.676783 +v -2.125000 3.323221 -4.323230 +v -2.125000 3.749998 -4.500006 +vt 0.018933 0.739535 +vt 0.080895 0.767442 +vt 0.018933 0.767442 +vt 0.080895 0.776744 +vt 0.018933 0.776744 +vt 0.018933 0.702326 +vt 0.080895 0.730233 +vt 0.018933 0.730233 +vt 0.015491 0.730233 +vt 0.018933 0.730233 +vt 0.015491 0.739535 +vt 0.015491 0.767442 +vt 0.015491 0.776744 +vt 0.018933 0.776744 +vt -0.000000 0.739535 +vt 0.003442 0.767442 +vt -0.000000 0.767442 +vt 0.080895 0.739535 +vt 0.003442 0.739535 +vt -0.000000 0.730233 +vt 0.015491 0.702326 +vt 0.000000 0.702326 +vt 0.259897 0.532558 +vt 0.259897 0.569767 +vt 0.246127 0.532558 +vt 0.259897 0.458140 +vt 0.311532 0.495349 +vt 0.259897 0.495349 +vt 0.311532 0.569767 +vt 0.311532 0.532558 +vt 0.259897 0.272093 +vt 0.311532 0.309302 +vt 0.259897 0.309302 +vt 0.259897 0.867442 +vt 0.311532 0.830233 +vt 0.311532 0.867442 +vt 0.259897 0.346512 +vt 0.246127 0.867442 +vt 0.259897 0.830233 +vt 0.297762 0.793023 +vt 0.297762 0.606977 +vt 0.387263 0.420930 +vt 0.373494 0.458140 +vt 0.373494 0.420930 +vt 0.387263 0.644186 +vt 0.373494 0.755814 +vt 0.373494 0.644186 +vt 0.325301 0.346512 +vt 0.339071 0.383721 +vt 0.325301 0.383721 +vt 0.339071 0.755814 +vt 0.325301 0.644186 +vt 0.339071 0.644186 +vt 0.373494 0.346512 +vt 0.387263 0.383721 +vt 0.373494 0.383721 +vt 0.339071 0.420930 +vt 0.339071 0.458140 +vt 0.325301 0.420930 +vt 0.339071 0.346512 +vt 0.325301 0.346512 +vt 0.339071 0.495349 +vt 0.339071 0.309302 +vt 0.325301 0.755814 +vt 0.339071 0.793023 +vt 0.339071 0.606977 +vt 0.910499 0.353488 +vt 0.893287 0.288372 +vt 0.910499 0.288372 +vt 0.882960 0.139535 +vt 0.893287 0.139535 +vt 0.882960 0.167442 +vt 0.848537 0.139535 +vt 0.900172 0.065116 +vt 0.900172 0.139535 +vt 0.848537 0.167442 +vt 0.838210 0.139535 +vt 0.820998 0.065116 +vt 0.814114 0.000000 +vt 0.820998 0.000000 +vt 0.882960 0.213953 +vt 0.882960 0.186047 +vt 0.893287 0.213953 +vt 0.848537 0.213953 +vt 0.893287 0.269767 +vt 0.838210 0.213953 +vt 0.848537 0.186047 +vt 0.838210 0.186047 +vt 0.838210 0.167442 +vt 0.490534 0.644186 +vt 0.476764 0.755814 +vt 0.476764 0.644186 +vt 0.876076 -0.000000 +vt 0.882960 -0.000000 +vt 0.893287 0.167442 +vt 0.848537 -0.000000 +vt 0.855422 0.139535 +vt 0.490534 0.420930 +vt 0.476764 0.458140 +vt 0.476764 0.420930 +vt 0.848537 0.232558 +vt 0.882960 0.232558 +vt 0.910499 -0.000000 +vt 0.917384 0.065116 +vt 0.910499 0.065116 +vt 0.831325 0.139535 +vt 0.838210 0.065116 +vt 0.893287 0.065116 +vt 0.882960 0.353488 +vt 0.838210 0.288372 +vt 0.848537 0.353488 +vt 0.820998 0.353488 +vt 0.820998 0.288372 +vt 0.838210 0.269767 +vt 0.504303 0.569767 +vt 0.531842 0.569767 +vt 0.518072 0.569767 +vt 0.531842 0.532558 +vt 0.518072 0.532558 +vt 0.518072 0.495349 +vt 0.518072 0.272093 +vt 0.531842 0.272093 +vt 0.518072 0.309302 +vt 0.518072 0.234884 +vt 0.531842 0.234884 +vt 0.614458 0.309302 +vt 0.504303 0.830233 +vt 0.600688 0.272093 +vt 0.614458 0.272093 +vt 0.614458 0.532558 +vt 0.600688 0.532558 +vt 0.614458 0.495349 +vt 0.614458 0.569767 +vt 0.628227 0.532558 +vt 0.428571 0.346512 +vt 0.442341 0.383721 +vt 0.428571 0.383721 +vt 0.442341 0.755814 +vt 0.428571 0.644186 +vt 0.442341 0.644186 +vt 0.476764 0.346512 +vt 0.490534 0.383721 +vt 0.476764 0.383721 +vt 0.442341 0.420930 +vt 0.442341 0.458140 +vt 0.428571 0.420930 +vt 0.442341 0.346512 +vt 0.428571 0.755814 +vt 0.387263 0.755814 +vt 0.428571 0.346512 +vt 0.387263 0.458140 +vt 0.387263 0.346512 +vt 0.442341 0.606977 +vt 0.373494 0.606977 +vt 0.442341 0.495349 +vt 0.373494 0.495349 +vt 0.373494 0.309302 +vt 0.373494 0.793023 +vt 0.586919 0.830233 +vt 0.586919 0.569767 +vt 0.490534 0.755814 +vt 0.476764 0.793023 +vt 0.476764 0.606977 +vt 0.490534 0.346512 +vt 0.504303 0.272093 +vt 0.504303 0.532558 +vt 0.490534 0.458140 +vt 0.476764 0.309302 +vt 0.442341 0.309302 +vt 0.442341 0.793023 +vt 0.151463 0.888372 +vt 0.206540 0.851163 +vt 0.206540 0.888372 +vt 0.206540 0.962791 +vt 0.151463 0.925581 +vt 0.206540 0.925581 +vt 0.151463 0.813953 +vt 0.206540 0.813953 +vt 0.055077 0.851163 +vt -0.000000 0.888372 +vt 0.000000 0.851163 +vt -0.000000 0.925581 +vt 0.055077 0.962791 +vt -0.000000 0.962791 +vt 0.055077 0.925581 +vt -0.000000 0.813953 +vt 0.041308 0.962791 +vt 0.055077 1.000000 +vt 0.041308 1.000000 +vt 0.165232 1.000000 +vt 0.151463 0.962791 +vt 0.165232 0.962791 +vt 0.123924 0.851163 +vt 0.082616 0.813953 +vt 0.123924 0.813953 +vt 0.082616 0.888372 +vt 0.082616 0.851163 +vt 0.082616 0.962791 +vt 0.123924 0.925581 +vt 0.123924 0.962791 +vt 0.082616 0.925581 +vt 0.055077 0.813953 +vt 0.068847 0.813953 +vt 0.055077 0.888372 +vt 0.068847 1.000000 +vt 0.055077 1.000000 +vt 0.123924 0.888372 +vt 0.137694 0.813953 +vt 0.151463 0.813953 +vt 0.151463 1.000000 +vt 0.137694 1.000000 +vt 0.796866 0.697675 +vt 0.794860 0.710761 +vt 0.790017 0.716181 +vt 0.989723 0.055796 +vt 0.979373 0.027763 +vt 0.989622 0.000018 +vt 0.982353 0.063902 +vt 0.997007 0.063940 +vt 0.996993 0.103540 +vt 0.614458 0.790698 +vt 0.600688 0.790698 +vt 0.614458 0.753488 +vt 0.614458 0.827907 +vt 0.666093 0.865116 +vt 0.614458 0.865116 +vt 0.666093 0.827907 +vt 0.666093 0.790698 +vt 0.614458 0.679070 +vt 0.666093 0.716279 +vt 0.614458 0.716279 +vt 0.666093 0.641860 +vt 0.666093 0.679070 +vt 0.666093 0.604651 +vt 0.614458 0.641860 +vt 0.614458 0.604651 +vt 0.600688 0.679070 +vt 0.652324 0.734884 +vt 0.652324 0.716279 +vt 0.652324 0.753488 +vt 0.666093 0.734884 +vt 0.666093 0.753488 +vt 0.679862 0.734884 +vt 0.666093 0.734884 +vt 0.679862 0.790698 +vt 0.679862 0.679070 +vt 0.679862 0.753488 +vt 0.679862 0.846512 +vt 0.666093 0.846512 +vt 0.679862 0.716279 +vt 0.666093 0.623256 +vt 0.679862 0.641860 +vt 0.679862 0.827907 +vt 0.693632 0.716279 +vt 0.693632 0.734884 +vt 0.693632 0.790698 +vt 0.734940 0.827907 +vt 0.776248 0.865116 +vt 0.734940 0.865116 +vt 0.734940 0.790698 +vt 0.776248 0.827907 +vt 0.734940 0.753488 +vt 0.776248 0.790698 +vt 0.734940 0.679070 +vt 0.776248 0.716279 +vt 0.734940 0.716279 +vt 0.776248 0.641860 +vt 0.776248 0.679070 +vt 0.776248 0.604651 +vt 0.734940 0.641860 +vt 0.734940 0.604651 +vt 0.707401 0.716279 +vt 0.721170 0.734884 +vt 0.707401 0.734884 +vt 0.721170 0.790698 +vt 0.707401 0.790698 +vt 0.721170 0.753488 +vt 0.721170 0.716279 +vt 0.721170 0.679070 +vt 0.721170 0.827907 +vt 0.734940 0.734884 +vt 0.748709 0.716279 +vt 0.734940 0.623256 +vt 0.721170 0.641860 +vt 0.721170 0.623256 +vt 0.734940 0.734884 +vt 0.721170 0.734884 +vt 0.748709 0.753488 +vt 0.734940 0.846512 +vt 0.721170 0.846512 +vt 0.015491 0.702326 +vt -0.000000 0.730233 +vt 0.000000 0.702326 +vt 0.003442 0.739535 +vt 0.015491 0.767442 +vt 0.003442 0.767442 +vt 0.015491 0.730233 +vt 0.015491 0.776744 +vt 0.018933 0.730233 +vt 0.080895 0.739535 +vt 0.018933 0.739535 +vt -0.000000 0.739535 +vt -0.000000 0.767442 +vt 0.018933 0.776744 +vt 0.015491 0.739535 +vt 0.018933 0.767442 +vt 0.018933 0.730233 +vt 0.018933 0.702326 +vt 0.080895 0.730233 +vt 0.080895 0.776744 +vt 0.018933 0.776744 +vt 0.080895 0.767442 +vt 0.206540 0.923256 +vt 0.330465 0.951163 +vt 0.206540 0.951163 +vt 0.206540 0.867442 +vt 0.330465 0.895349 +vt 0.206540 0.895349 +vt 0.330465 0.923256 +vt 0.330465 0.979070 +vt 0.206540 0.979070 +vt 0.206540 0.923256 +vt 0.330465 0.951163 +vt 0.206540 0.951163 +vt 0.206540 0.867442 +vt 0.330465 0.895349 +vt 0.206540 0.895349 +vt 0.330465 0.923256 +vt 0.330465 0.979070 +vt 0.206540 0.979070 +vt 0.481928 0.055814 +vt 0.543890 0.037209 +vt 0.543890 0.055814 +vt 0.481928 0.018605 +vt 0.543890 -0.000000 +vt 0.543890 0.018605 +vt 0.481928 0.037209 +vt 0.481928 0.074419 +vt 0.543890 0.074419 +vt 0.481928 0.055814 +vt 0.543890 0.037209 +vt 0.543890 0.055814 +vt 0.481928 0.018605 +vt 0.543890 -0.000000 +vt 0.543890 0.018605 +vt 0.481928 0.037209 +vt 0.481928 0.074419 +vt 0.543890 0.074419 +vt 0.481928 0.055814 +vt 0.543890 0.037209 +vt 0.543890 0.055814 +vt 0.481928 0.018605 +vt 0.543890 -0.000000 +vt 0.543890 0.018605 +vt 0.481928 0.037209 +vt 0.481928 0.074419 +vt 0.543890 0.074419 +vt 0.481928 0.130233 +vt 0.537005 0.111628 +vt 0.537005 0.130233 +vt 0.481928 0.093023 +vt 0.537005 0.074419 +vt 0.537005 0.093023 +vt 0.481928 0.111628 +vt 0.481928 0.148837 +vt 0.537005 0.148837 +vt 0.481928 0.130233 +vt 0.537005 0.111628 +vt 0.537005 0.130233 +vt 0.481928 0.093023 +vt 0.537005 0.074419 +vt 0.537005 0.093023 +vt 0.481928 0.111628 +vt 0.481928 0.148837 +vt 0.537005 0.148837 +vt 0.481928 0.055814 +vt 0.543890 0.037209 +vt 0.543890 0.055814 +vt 0.481928 0.018605 +vt 0.543890 -0.000000 +vt 0.543890 0.018605 +vt 0.481928 0.037209 +vt 0.481928 0.074419 +vt 0.543890 0.074419 +vt 0.481928 0.055814 +vt 0.543890 0.037209 +vt 0.543890 0.055814 +vt 0.481928 0.018605 +vt 0.543890 -0.000000 +vt 0.543890 0.018605 +vt 0.481928 0.037209 +vt 0.481928 0.074419 +vt 0.543890 0.074419 +vt 0.481928 0.055814 +vt 0.543890 0.037209 +vt 0.543890 0.055814 +vt 0.481928 0.018605 +vt 0.543890 -0.000000 +vt 0.543890 0.018605 +vt 0.481928 0.037209 +vt 0.481928 0.074419 +vt 0.543890 0.074419 +vt 0.481928 0.130233 +vt 0.537005 0.111628 +vt 0.537005 0.130233 +vt 0.481928 0.093023 +vt 0.537005 0.074419 +vt 0.537005 0.093023 +vt 0.481928 0.111628 +vt 0.481928 0.148837 +vt 0.537005 0.148837 +vt 0.481928 0.130233 +vt 0.537005 0.111628 +vt 0.537005 0.130233 +vt 0.481928 0.093023 +vt 0.537005 0.074419 +vt 0.537005 0.093023 +vt 0.481928 0.111628 +vt 0.481928 0.148837 +vt 0.537005 0.148837 +vt 0.808950 0.683721 +vt 0.814114 0.669767 +vt 0.814114 0.683721 +vt 0.822719 0.711628 +vt 0.817556 0.718605 +vt 0.817556 0.711628 +vt 0.803787 0.702326 +vt 0.803787 0.683721 +vt 0.819277 0.683721 +vt 0.814114 0.702326 +vt 0.824441 0.683721 +vt 0.819277 0.702326 +vt 0.808950 0.702326 +vt 0.824441 0.727907 +vt 0.819277 0.737209 +vt 0.819277 0.727907 +vt 0.803787 0.727907 +vt 0.808950 0.737209 +vt 0.803787 0.737209 +vt 0.814114 0.727907 +vt 0.814114 0.737209 +vt 0.808950 0.727907 +vt 0.805508 0.711628 +vt 0.715146 0.879070 +vt 0.701377 0.883721 +vt 0.701377 0.879070 +vt 0.715146 0.865116 +vt 0.701377 0.869767 +vt 0.701377 0.865116 +vt 0.715146 0.869767 +vt 0.701377 0.874419 +vt 0.715146 0.874419 +vt 0.716867 0.865116 +vt 0.777969 0.869767 +vt 0.716867 0.869767 +vt 0.777969 0.874419 +vt 0.716867 0.874419 +vt 0.716867 0.883721 +vt 0.715146 0.883721 +vt 0.716867 0.879070 +vt 0.715146 0.869767 +vt 0.699656 0.883721 +vt 0.699656 0.879070 +vt 0.701377 0.883721 +vt 0.699656 0.869767 +vt 0.701377 0.869767 +vt 0.699656 0.874419 +vt 0.638554 0.869767 +vt 0.638554 0.874419 +vt 0.777969 0.883721 +vt 0.777969 0.879070 +vt 0.638554 0.865116 +vt 0.699656 0.865116 +vt 0.638554 0.879070 +vt 0.815835 0.646512 +vt 0.820998 0.660465 +vt 0.815835 0.660465 +vt 0.808950 0.632558 +vt 0.808950 0.646512 +vt 0.803787 0.660465 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.660465 +vt 0.815835 0.660465 +vt 0.808950 0.632558 +vt 0.808950 0.646512 +vt 0.803787 0.660465 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.621343 0.044186 +vt 0.543890 0.062791 +vt 0.543890 0.044186 +vt 0.553356 0.088372 +vt 0.621343 0.062791 +vt 0.611876 0.088372 +vt 0.611876 0.018605 +vt 0.543890 0.044186 +vt 0.553356 0.018605 +vt 0.553356 -0.000000 +vt 0.553356 0.088372 +vt 0.621343 0.062791 +vt 0.611876 0.088372 +vt 0.553356 -0.000000 +vt 0.611876 0.018605 +vt 0.553356 0.018605 +vt 0.621343 0.044186 +vt 0.543890 0.062791 +vt 0.722892 0.930233 +vt 0.733219 0.958140 +vt 0.722892 0.958140 +vt 0.736661 0.958140 +vt 0.733219 0.930233 +vt 0.736661 0.930233 +vt 0.719449 0.930233 +vt 0.719449 0.958140 +vt 0.733219 0.920930 +vt 0.722892 0.920930 +vt 0.722892 0.967442 +vt 0.733219 0.967442 +vt 0.740103 0.911628 +vt 0.739243 0.958140 +vt 0.739243 0.911628 +vt 0.740964 0.958140 +vt 0.740964 0.911628 +vt 0.741824 0.911628 +vt 0.742685 0.911628 +vt 0.741824 0.958140 +vt 0.742685 0.911628 +vt 0.741824 0.958140 +vt 0.741824 0.911628 +vt 0.740103 0.958140 +vt 0.739243 0.911628 +vt 0.740103 0.911628 +vt 0.740964 0.911628 +vt 0.740964 0.958140 +vt 0.740964 0.911628 +vt 0.740103 0.958140 +vt 0.740103 0.911628 +vt 0.741824 0.958140 +vt 0.741824 0.911628 +vt 0.742685 0.911628 +vt 0.739243 0.958140 +vt 0.739243 0.911628 +vt 0.741824 0.911628 +vt 0.740964 0.958140 +vt 0.740964 0.911628 +vt 0.742685 0.958140 +vt 0.742685 0.911628 +vt 0.740103 0.911628 +vt 0.739243 0.958140 +vt 0.739243 0.911628 +vt 0.740103 0.958140 +vt 0.808950 0.906977 +vt 0.796902 0.874419 +vt 0.808950 0.874419 +vt 0.796902 0.869767 +vt 0.808950 0.837209 +vt 0.808950 0.869767 +vt 0.796902 0.911628 +vt 0.796902 0.906977 +vt 0.810671 0.906977 +vt 0.795181 0.874419 +vt 0.693632 0.909302 +vt 0.638554 0.904651 +vt 0.693632 0.904651 +vt 0.694492 0.904651 +vt 0.784854 0.909302 +vt 0.694492 0.909302 +vt 0.784854 0.902326 +vt 0.693632 0.902326 +vt 0.784854 0.911628 +vt 0.638554 0.902326 +vt 0.693632 0.911628 +vt 0.638554 0.909302 +vt 0.645439 0.953488 +vt 0.648881 0.944186 +vt 0.648881 0.953488 +vt 0.645439 0.944186 +vt 0.641997 0.934884 +vt 0.645439 0.934884 +vt 0.641997 0.944186 +vt 0.638554 0.953488 +vt 0.638554 0.944186 +vt 0.641997 0.953488 +vt 0.661790 0.932558 +vt 0.659208 0.934884 +vt 0.659208 0.932558 +vt 0.659208 0.925581 +vt 0.661790 0.927907 +vt 0.659208 0.927907 +vt 0.663511 0.927907 +vt 0.677281 0.932558 +vt 0.663511 0.932558 +vt 0.677281 0.927907 +vt 0.678141 0.932558 +vt 0.677281 0.934884 +vt 0.662651 0.934884 +vt 0.677281 0.925581 +vt 0.662651 0.925581 +vt 0.638554 0.918605 +vt 0.693632 0.913953 +vt 0.693632 0.918605 +vt 0.638554 0.920930 +vt 0.693632 0.920930 +vt 0.638554 0.913953 +vt 0.693632 0.911628 +vt 0.648881 0.944186 +vt 0.652324 0.953488 +vt 0.648881 0.953488 +vt 0.655766 0.934884 +vt 0.652324 0.944186 +vt 0.652324 0.934884 +vt 0.659208 0.953488 +vt 0.655766 0.944186 +vt 0.659208 0.944186 +vt 0.655766 0.953488 +vt 0.919105 0.423256 +vt 0.908778 0.451163 +vt 0.908778 0.423256 +vt 0.908778 0.455814 +vt 0.919105 0.451163 +vt 0.919105 0.455814 +vt 0.907057 0.423256 +vt 0.908778 0.451163 +vt 0.907057 0.451163 +vt 0.920826 0.451163 +vt 0.919105 0.423256 +vt 0.920826 0.423256 +vt 0.908778 0.423256 +vt 0.919105 0.418605 +vt 0.908778 0.418605 +vt 0.908778 0.390698 +vt 0.919105 0.418605 +vt 0.908778 0.418605 +vt 0.920826 0.451163 +vt 0.919105 0.451163 +vt 0.907057 0.423256 +vt 0.908778 0.455814 +vt 0.715146 0.913953 +vt 0.694492 0.913953 +vt 0.694492 0.918605 +vt 0.716007 0.920930 +vt 0.715146 0.918605 +vt 0.716867 0.913953 +vt 0.726334 0.911628 +vt 0.727194 0.913953 +vt 0.716867 0.918605 +vt 0.726334 0.920930 +vt 0.727194 0.918605 +vt 0.728055 0.911628 +vt 0.738382 0.913953 +vt 0.728055 0.920930 +vt 0.738382 0.918605 +vt 0.738382 0.920930 +vt 0.739243 0.913953 +vt 0.941480 0.372093 +vt 0.940620 0.374419 +vt 0.940620 0.372093 +vt 0.944062 0.372093 +vt 0.943201 0.374419 +vt 0.943201 0.372093 +vt 0.944062 0.383721 +vt 0.944923 0.374419 +vt 0.944923 0.383721 +vt 0.925990 0.381395 +vt 0.907057 0.376744 +vt 0.925990 0.376744 +vt 0.942341 0.383721 +vt 0.943201 0.383721 +vt 0.944062 0.374419 +vt 0.941480 0.383721 +vt 0.942341 0.374419 +vt 0.942341 0.383721 +vt 0.925990 0.390698 +vt 0.907057 0.386046 +vt 0.925990 0.386046 +vt 0.939759 0.383721 +vt 0.940620 0.383721 +vt 0.941480 0.374419 +vt 0.941480 0.372093 +vt 0.940620 0.374419 +vt 0.940620 0.372093 +vt 0.944062 0.372093 +vt 0.943201 0.374419 +vt 0.943201 0.372093 +vt 0.944062 0.383721 +vt 0.944923 0.374419 +vt 0.944923 0.383721 +vt 0.925990 0.381395 +vt 0.907057 0.376744 +vt 0.925990 0.376744 +vt 0.942341 0.383721 +vt 0.943201 0.383721 +vt 0.944062 0.374419 +vt 0.941480 0.383721 +vt 0.942341 0.374419 +vt 0.942341 0.383721 +vt 0.927711 0.376744 +vt 0.927711 0.381395 +vt 0.925990 0.376744 +vt 0.939759 0.383721 +vt 0.940620 0.383721 +vt 0.941480 0.374419 +vt 0.941480 0.372093 +vt 0.940620 0.374419 +vt 0.940620 0.372093 +vt 0.944062 0.372093 +vt 0.943201 0.374419 +vt 0.943201 0.372093 +vt 0.944062 0.383721 +vt 0.944923 0.374419 +vt 0.944923 0.383721 +vt 0.927711 0.386046 +vt 0.942341 0.383721 +vt 0.943201 0.383721 +vt 0.944062 0.374419 +vt 0.941480 0.383721 +vt 0.942341 0.374419 +vt 0.942341 0.383721 +vt 0.927711 0.390698 +vt 0.925990 0.390698 +vt 0.939759 0.383721 +vt 0.940620 0.383721 +vt 0.941480 0.374419 +vt 0.940620 0.374419 +vt 0.939759 0.383721 +vt 0.939759 0.374419 +vt 0.939759 0.376744 +vt 0.927711 0.381395 +vt 0.927711 0.376744 +vt 0.942341 0.374419 +vt 0.941480 0.383721 +vt 0.941480 0.374419 +vt 0.940620 0.383721 +vt 0.943201 0.374419 +vt 0.942341 0.383721 +vt 0.942341 0.374419 +vt 0.939759 0.386046 +vt 0.939759 0.390698 +vt 0.944923 0.374419 +vt 0.944062 0.383721 +vt 0.944062 0.374419 +vt 0.943201 0.383721 +vt 0.940620 0.374419 +vt 0.939759 0.383721 +vt 0.939759 0.374419 +vt 0.907057 0.372093 +vt 0.925990 0.372093 +vt 0.942341 0.374419 +vt 0.941480 0.383721 +vt 0.941480 0.374419 +vt 0.940620 0.383721 +vt 0.943201 0.374419 +vt 0.942341 0.383721 +vt 0.942341 0.374419 +vt 0.939759 0.376744 +vt 0.944923 0.374419 +vt 0.944062 0.383721 +vt 0.944062 0.374419 +vt 0.943201 0.383721 +vt 0.940620 0.374419 +vt 0.939759 0.383721 +vt 0.939759 0.374419 +vt 0.939759 0.381395 +vt 0.942341 0.374419 +vt 0.941480 0.383721 +vt 0.941480 0.374419 +vt 0.940620 0.383721 +vt 0.943201 0.374419 +vt 0.942341 0.383721 +vt 0.942341 0.374419 +vt 0.939759 0.372093 +vt 0.944923 0.374419 +vt 0.944062 0.383721 +vt 0.944062 0.374419 +vt 0.943201 0.383721 +vt 0.944062 0.372093 +vt 0.943201 0.372093 +vt 0.941480 0.372093 +vt 0.940620 0.372093 +vt 0.944062 0.372093 +vt 0.943201 0.372093 +vt 0.941480 0.372093 +vt 0.940620 0.372093 +vt 0.944062 0.372093 +vt 0.943201 0.372093 +vt 0.941480 0.372093 +vt 0.940620 0.372093 +vt 0.907057 0.381395 +vt 0.925990 0.390698 +vt 0.907057 0.386046 +vt 0.925990 0.386046 +vt 0.927711 0.376744 +vt 0.927711 0.381395 +vt 0.925990 0.376744 +vt 0.927711 0.386046 +vt 0.927711 0.390698 +vt 0.925990 0.390698 +vt 0.927711 0.390698 +vt 0.939759 0.386046 +vt 0.939759 0.390698 +vt 0.939759 0.386046 +vt 0.939759 0.390698 +vt 0.907057 0.372093 +vt 0.925990 0.372093 +vt 0.939759 0.376744 +vt 0.939759 0.381395 +vt 0.939759 0.372093 +vt 0.907057 0.381395 +vt 0.939759 0.381395 +vt 0.939759 0.372093 +vt 0.927711 0.390698 +vt 0.939759 0.386046 +vt 0.939759 0.390698 +vt 0.939759 0.376744 +vt 0.927711 0.381395 +vt 0.927711 0.376744 +vt 0.939759 0.381395 +vt 0.939759 0.372093 +vt 0.707401 0.679070 +vt 0.707401 0.753488 +vt 0.693632 0.734884 +vt 0.693632 0.753488 +vt 0.693632 0.679070 +vt 0.151463 0.888372 +vt 0.206540 0.851163 +vt 0.206540 0.888372 +vt 0.206540 0.962791 +vt 0.151463 0.925581 +vt 0.206540 0.925581 +vt 0.151463 0.813953 +vt 0.206540 0.813953 +vt 0.055077 0.851163 +vt -0.000000 0.888372 +vt 0.000000 0.851163 +vt -0.000000 0.925581 +vt 0.055077 0.962791 +vt -0.000000 0.962791 +vt 0.055077 0.925581 +vt -0.000000 0.813953 +vt 0.041308 0.962791 +vt 0.055077 1.000000 +vt 0.041308 1.000000 +vt 0.165232 1.000000 +vt 0.151463 0.962791 +vt 0.165232 0.962791 +vt 0.123924 0.851163 +vt 0.082616 0.813953 +vt 0.123924 0.813953 +vt 0.082616 0.888372 +vt 0.082616 0.851163 +vt 0.082616 0.962791 +vt 0.123924 0.925581 +vt 0.123924 0.962791 +vt 0.082616 0.925581 +vt 0.055077 0.813953 +vt 0.068847 0.813953 +vt 0.055077 0.888372 +vt 0.068847 1.000000 +vt 0.055077 1.000000 +vt 0.123924 0.888372 +vt 0.137694 0.813953 +vt 0.151463 0.813953 +vt 0.151463 1.000000 +vt 0.137694 1.000000 +vt 0.989723 0.241843 +vt 0.979373 0.213809 +vt 0.989622 0.186064 +vt 0.982353 0.249948 +vt 0.997007 0.249986 +vt 0.996993 0.289586 +vt 0.834768 0.669767 +vt 0.829604 0.683721 +vt 0.834768 0.683721 +vt 0.838210 0.718605 +vt 0.843374 0.711628 +vt 0.838210 0.711628 +vt 0.824441 0.702326 +vt 0.824441 0.683721 +vt 0.834768 0.702326 +vt 0.839931 0.683721 +vt 0.839931 0.702326 +vt 0.845095 0.683721 +vt 0.829604 0.702326 +vt 0.839931 0.737209 +vt 0.845095 0.727907 +vt 0.839931 0.727907 +vt 0.829604 0.737209 +vt 0.824441 0.727907 +vt 0.824441 0.737209 +vt 0.834768 0.727907 +vt 0.834768 0.737209 +vt 0.829604 0.727907 +vt 0.826162 0.711628 +vt 0.701377 0.902326 +vt 0.715146 0.897674 +vt 0.701377 0.897674 +vt 0.701377 0.888372 +vt 0.715146 0.883721 +vt 0.701377 0.883721 +vt 0.701377 0.893023 +vt 0.715146 0.888372 +vt 0.715146 0.893023 +vt 0.777969 0.888372 +vt 0.716867 0.883721 +vt 0.716867 0.888372 +vt 0.777969 0.893023 +vt 0.716867 0.893023 +vt 0.716867 0.902326 +vt 0.716867 0.897674 +vt 0.715146 0.902326 +vt 0.715146 0.888372 +vt 0.699656 0.902326 +vt 0.701377 0.902326 +vt 0.699656 0.897674 +vt 0.699656 0.888372 +vt 0.699656 0.893023 +vt 0.701377 0.888372 +vt 0.638554 0.888372 +vt 0.638554 0.893023 +vt 0.777969 0.902326 +vt 0.777969 0.897674 +vt 0.638554 0.883721 +vt 0.699656 0.883721 +vt 0.638554 0.897674 +vt 0.815835 0.646512 +vt 0.820998 0.660465 +vt 0.815835 0.660465 +vt 0.808950 0.632558 +vt 0.808950 0.646512 +vt 0.803787 0.660465 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.660465 +vt 0.815835 0.660465 +vt 0.808950 0.632558 +vt 0.808950 0.646512 +vt 0.803787 0.660465 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.660465 +vt 0.815835 0.660465 +vt 0.808950 0.632558 +vt 0.808950 0.646512 +vt 0.803787 0.660465 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.660465 +vt 0.815835 0.660465 +vt 0.808950 0.632558 +vt 0.808950 0.646512 +vt 0.803787 0.660465 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.660465 +vt 0.815835 0.660465 +vt 0.808950 0.632558 +vt 0.808950 0.646512 +vt 0.803787 0.660465 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.660465 +vt 0.815835 0.660465 +vt 0.808950 0.632558 +vt 0.808950 0.646512 +vt 0.803787 0.660465 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.660465 +vt 0.815835 0.660465 +vt 0.808950 0.632558 +vt 0.808950 0.646512 +vt 0.803787 0.660465 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.660465 +vt 0.815835 0.660465 +vt 0.808950 0.632558 +vt 0.808950 0.646512 +vt 0.803787 0.660465 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.820998 0.646512 +vt 0.815835 0.660465 +vt 0.815835 0.646512 +vt 0.808950 0.632558 +vt 0.808950 0.646512 +vt 0.803787 0.660465 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.820998 0.646512 +vt 0.815835 0.660465 +vt 0.815835 0.646512 +vt 0.808950 0.632558 +vt 0.808950 0.646512 +vt 0.803787 0.660465 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.660465 +vt 0.815835 0.660465 +vt 0.808950 0.632558 +vt 0.808950 0.646512 +vt 0.803787 0.660465 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.815835 0.646512 +vt 0.820998 0.660465 +vt 0.815835 0.660465 +vt 0.808950 0.632558 +vt 0.808950 0.646512 +vt 0.803787 0.660465 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.820998 0.646512 +vt 0.815835 0.660465 +vt 0.815835 0.646512 +vt 0.808950 0.632558 +vt 0.808950 0.646512 +vt 0.803787 0.660465 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.820998 0.646512 +vt 0.815835 0.660465 +vt 0.815835 0.646512 +vt 0.808950 0.632558 +vt 0.808950 0.646512 +vt 0.803787 0.660465 +vt 0.803787 0.646512 +vt 0.808950 0.660465 +vt 0.796866 0.697675 +vt 0.794860 0.710761 +vt 0.790017 0.716181 +vt 0.796866 0.697675 +vt 0.794860 0.710761 +vt 0.790017 0.716181 +vt 0.796866 0.697675 +vt 0.794860 0.710761 +vt 0.790017 0.716181 +vt 0.677281 0.920930 +vt 0.080895 0.702326 +vt -0.000000 0.776744 +vt 0.311532 0.458140 +vt 0.311532 0.272093 +vt 0.311532 0.346512 +vt 0.387263 0.458140 +vt 0.387263 0.346512 +vt 0.325301 0.458140 +vt 0.325301 0.458140 +vt 0.814114 0.065116 +vt 0.910499 0.269767 +vt 0.876076 0.139535 +vt 0.893287 0.186047 +vt 0.855422 -0.000000 +vt 0.490534 0.458140 +vt 0.917384 -0.000000 +vt 0.831325 0.065116 +vt 0.820998 0.269767 +vt 0.504303 0.867442 +vt 0.614458 0.234884 +vt 0.628227 0.272093 +vt 0.490534 0.346512 +vt 0.428571 0.458140 +vt 0.428571 0.458140 +vt 0.476764 0.495349 +vt 0.151463 0.851163 +vt 0.151463 0.962791 +vt 0.055077 0.813953 +vt 0.055077 0.962791 +vt 0.151463 1.000000 +vt 0.785175 0.710761 +vt 0.783169 0.697674 +vt 0.785175 0.684588 +vt 0.790017 0.679168 +vt 0.794860 0.684588 +vt 0.985777 0.053673 +vt 0.982453 0.047508 +vt 0.980207 0.038423 +vt 0.980159 0.017099 +vt 0.982440 0.008115 +vt 0.985802 0.002047 +vt 0.993568 0.002141 +vt 0.997017 0.008081 +vt 0.999263 0.017166 +vt 0.999973 0.028051 +vt 0.999187 0.038715 +vt 0.997030 0.047474 +vt 0.993668 0.053542 +vt 0.993647 0.109581 +vt 0.989684 0.111576 +vt 0.985718 0.109444 +vt 0.982339 0.103502 +vt 0.980103 0.094461 +vt 0.979365 0.083750 +vt 0.980154 0.073034 +vt 0.985698 0.057861 +vt 0.989662 0.055866 +vt 0.993627 0.057998 +vt 0.999242 0.072980 +vt 0.999981 0.083692 +vt 0.999192 0.094407 +vt 0.652324 0.734884 +vt 0.679862 0.734884 +vt 0.679862 0.623256 +vt 0.776248 0.753488 +vt 0.748709 0.734884 +vt 0.748709 0.734884 +vt -0.000000 0.776744 +vt 0.080895 0.702326 +vt 0.330465 0.867442 +vt 0.330465 0.867442 +vt 0.481928 0.000000 +vt 0.481928 0.000000 +vt 0.481928 0.000000 +vt 0.481928 0.074419 +vt 0.481928 0.074419 +vt 0.481928 0.000000 +vt 0.481928 0.000000 +vt 0.481928 0.000000 +vt 0.481928 0.074419 +vt 0.481928 0.074419 +vt 0.808950 0.669767 +vt 0.822719 0.718605 +vt 0.824441 0.702326 +vt 0.824441 0.737209 +vt 0.805508 0.718605 +vt 0.715146 0.883721 +vt 0.777969 0.865116 +vt 0.638554 0.883721 +vt 0.820998 0.646512 +vt 0.815835 0.632558 +vt 0.820998 0.646512 +vt 0.815835 0.632558 +vt 0.611876 -0.000000 +vt 0.611876 -0.000000 +vt 0.740103 0.958140 +vt 0.742685 0.958140 +vt 0.742685 0.958140 +vt 0.739243 0.958140 +vt 0.740964 0.958140 +vt 0.742685 0.958140 +vt 0.741824 0.958140 +vt 0.796902 0.837209 +vt 0.808950 0.911628 +vt 0.810671 0.874419 +vt 0.795181 0.906977 +vt 0.784854 0.904651 +vt 0.638554 0.911628 +vt 0.678141 0.927907 +vt 0.638554 0.911628 +vt 0.919105 0.390698 +vt 0.920826 0.423256 +vt 0.907057 0.451163 +vt 0.919105 0.455814 +vt 0.716007 0.911628 +vt 0.738382 0.911628 +vt 0.739243 0.918605 +vt 0.942341 0.374419 +vt 0.907057 0.390698 +vt 0.939759 0.374419 +vt 0.942341 0.374419 +vt 0.939759 0.374419 +vt 0.942341 0.374419 +vt 0.939759 0.374419 +vt 0.942341 0.383721 +vt 0.944923 0.383721 +vt 0.942341 0.383721 +vt 0.944923 0.383721 +vt 0.942341 0.383721 +vt 0.927711 0.372093 +vt 0.944923 0.383721 +vt 0.907057 0.390698 +vt 0.927711 0.386046 +vt 0.927711 0.372093 +vt 0.927711 0.372093 +vt 0.927711 0.386046 +vt 0.927711 0.372093 +vt 0.707401 0.734884 +vt 0.151463 0.851163 +vt 0.151463 0.962791 +vt 0.055077 0.813953 +vt 0.055077 0.962791 +vt 0.151463 1.000000 +vt 0.985777 0.239719 +vt 0.982453 0.233555 +vt 0.980207 0.224469 +vt 0.980159 0.203146 +vt 0.982440 0.194162 +vt 0.985802 0.188094 +vt 0.993568 0.188188 +vt 0.997017 0.194128 +vt 0.999263 0.203213 +vt 0.999973 0.214098 +vt 0.999187 0.224761 +vt 0.997030 0.233520 +vt 0.993668 0.239589 +vt 0.993647 0.295627 +vt 0.989684 0.297622 +vt 0.985718 0.295491 +vt 0.982339 0.289549 +vt 0.980103 0.280508 +vt 0.979365 0.269797 +vt 0.980154 0.259081 +vt 0.985698 0.243908 +vt 0.989662 0.241913 +vt 0.993627 0.244044 +vt 0.999242 0.259027 +vt 0.999981 0.269738 +vt 0.999192 0.280454 +vt 0.829604 0.669767 +vt 0.843374 0.718605 +vt 0.845095 0.702326 +vt 0.845095 0.737209 +vt 0.826162 0.718605 +vt 0.715146 0.902326 +vt 0.777969 0.883721 +vt 0.638554 0.902326 +vt 0.820998 0.646512 +vt 0.815835 0.632558 +vt 0.820998 0.646512 +vt 0.815835 0.632558 +vt 0.820998 0.646512 +vt 0.815835 0.632558 +vt 0.820998 0.646512 +vt 0.815835 0.632558 +vt 0.820998 0.646512 +vt 0.815835 0.632558 +vt 0.820998 0.646512 +vt 0.815835 0.632558 +vt 0.820998 0.646512 +vt 0.815835 0.632558 +vt 0.820998 0.646512 +vt 0.815835 0.632558 +vt 0.820998 0.660465 +vt 0.815835 0.632558 +vt 0.820998 0.660465 +vt 0.815835 0.632558 +vt 0.820998 0.646512 +vt 0.815835 0.632558 +vt 0.820998 0.646512 +vt 0.815835 0.632558 +vt 0.820998 0.660465 +vt 0.815835 0.632558 +vt 0.820998 0.660465 +vt 0.815835 0.632558 +vt 0.785175 0.710761 +vt 0.783169 0.697674 +vt 0.785175 0.684588 +vt 0.790017 0.679168 +vt 0.794860 0.684588 +vt 0.785175 0.710761 +vt 0.783169 0.697674 +vt 0.785175 0.684588 +vt 0.790017 0.679168 +vt 0.794860 0.684588 +vt 0.785175 0.710761 +vt 0.783169 0.697674 +vt 0.785175 0.684588 +vt 0.790017 0.679168 +vt 0.794860 0.684588 +vt 0.662651 0.920930 +vt 0.803787 0.646512 +vt 0.796902 0.660465 +vt 0.796902 0.646512 +vt 0.803787 0.618605 +vt 0.796902 0.632558 +vt 0.796902 0.618605 +vt 0.803787 0.702326 +vt 0.796902 0.716279 +vt 0.796902 0.702326 +vt 0.803787 0.674419 +vt 0.796902 0.688372 +vt 0.796902 0.674419 +vt 0.803787 0.632558 +vt 0.803787 0.604651 +vt 0.796902 0.604651 +vt 0.803787 0.688372 +vt 0.803787 0.660465 +vt 0.979346 0.069767 +vt 0.917384 0.058140 +vt 0.979346 0.058140 +vt 0.979346 0.174419 +vt 0.917384 0.162791 +vt 0.979346 0.162791 +vt 0.979346 0.081395 +vt 0.917384 0.069767 +vt 0.979346 0.186047 +vt 0.917384 0.174419 +vt 0.979346 0.104651 +vt 0.917384 0.093023 +vt 0.979346 0.093023 +vt 0.917384 0.081395 +vt 0.979346 0.011628 +vt 0.917384 -0.000000 +vt 0.979346 0.000000 +vt 0.979346 0.116279 +vt 0.917384 0.104651 +vt 0.979346 0.023256 +vt 0.917384 0.011628 +vt 0.979346 0.127907 +vt 0.917384 0.116279 +vt 0.979346 0.034884 +vt 0.917384 0.023256 +vt 0.979346 0.139535 +vt 0.917384 0.127907 +vt 0.979346 0.046512 +vt 0.917384 0.034884 +vt 0.979346 0.151163 +vt 0.917384 0.139535 +vt 0.917384 0.046512 +vt 0.917384 0.151163 +vt 0.585198 0.906977 +vt 0.595525 0.913953 +vt 0.585198 0.913953 +vt 0.554217 0.941860 +vt 0.557659 0.948837 +vt 0.554217 0.948837 +vt 0.593804 0.927907 +vt 0.604131 0.934884 +vt 0.593804 0.934884 +vt 0.557659 0.955814 +vt 0.554217 0.955814 +vt 0.585198 0.865116 +vt 0.595525 0.872093 +vt 0.585198 0.872093 +vt 0.593804 0.941860 +vt 0.557659 0.962791 +vt 0.554217 0.962791 +vt 0.585198 0.920930 +vt 0.604131 0.948837 +vt 0.593804 0.948837 +vt 0.557659 0.969767 +vt 0.554217 0.969767 +vt 0.554217 0.872093 +vt 0.557659 0.879070 +vt 0.554217 0.879070 +vt 0.604131 0.955814 +vt 0.593804 0.955814 +vt 0.554217 0.920930 +vt 0.557659 0.927907 +vt 0.554217 0.927907 +vt 0.554217 0.886047 +vt 0.604131 0.962791 +vt 0.593804 0.962791 +vt 0.554217 0.976744 +vt 0.557659 0.893023 +vt 0.554217 0.893023 +vt 0.604131 0.969767 +vt 0.593804 0.969767 +vt 0.557659 0.900000 +vt 0.554217 0.900000 +vt 0.593804 0.920930 +vt 0.604131 0.927907 +vt 0.557659 0.906977 +vt 0.554217 0.906977 +vt 0.593804 0.976744 +vt 0.557659 0.913953 +vt 0.554217 0.913953 +vt 0.595525 0.879070 +vt 0.585198 0.879070 +vt 0.554217 0.865116 +vt 0.557659 0.872093 +vt 0.585198 0.886047 +vt 0.554217 0.920930 +vt 0.595525 0.893023 +vt 0.585198 0.893023 +vt 0.557659 0.934884 +vt 0.554217 0.934884 +vt 0.595525 0.900000 +vt 0.585198 0.900000 +vt 0.595525 0.906977 +vt 0.596386 0.900000 +vt 0.600688 0.906977 +vt 0.598107 0.906977 +vt 0.604991 0.941860 +vt 0.609294 0.948837 +vt 0.598107 0.879070 +vt 0.600688 0.886047 +vt 0.596386 0.886047 +vt 0.599828 0.913953 +vt 0.600688 0.913953 +vt 0.604991 0.955814 +vt 0.609294 0.955814 +vt 0.600688 0.893023 +vt 0.608434 0.927907 +vt 0.609294 0.934884 +vt 0.606713 0.934884 +vt 0.609294 0.962791 +vt 0.606713 0.962791 +vt 0.600688 0.900000 +vt 0.609294 0.941860 +vt 0.599828 0.872093 +vt 0.600688 0.879070 +vt 0.609294 0.969767 +vt 0.608434 0.969767 +vt 0.600688 0.872093 +vt 0.603270 0.879070 +vt 0.613597 0.955814 +vt 0.604991 0.900000 +vt 0.603270 0.906977 +vt 0.609294 0.927907 +vt 0.611876 0.934884 +vt 0.604991 0.886047 +vt 0.611876 0.962791 +vt 0.601549 0.913953 +vt 0.613597 0.941860 +vt 0.605852 0.893023 +vt 0.610155 0.969767 +vt 0.614458 0.948837 +vt 0.561962 0.969767 +vt 0.562823 0.962791 +vt 0.562823 0.969767 +vt 0.558520 0.900000 +vt 0.562823 0.893023 +vt 0.562823 0.900000 +vt 0.558520 0.941860 +vt 0.562823 0.948837 +vt 0.560241 0.879070 +vt 0.562823 0.872093 +vt 0.562823 0.879070 +vt 0.560241 0.906977 +vt 0.562823 0.906977 +vt 0.562823 0.955814 +vt 0.558520 0.955814 +vt 0.562823 0.886047 +vt 0.558520 0.886047 +vt 0.560241 0.934884 +vt 0.562823 0.927907 +vt 0.562823 0.934884 +vt 0.562823 0.913953 +vt 0.561962 0.913953 +vt 0.560241 0.962791 +vt 0.562823 0.941860 +vt 0.565404 0.906977 +vt 0.563683 0.913953 +vt 0.567126 0.886047 +vt 0.567986 0.893023 +vt 0.567126 0.955814 +vt 0.565404 0.934884 +vt 0.567126 0.900000 +vt 0.565404 0.962791 +vt 0.565404 0.879070 +vt 0.567126 0.941860 +vt 0.563683 0.969767 +vt 0.567986 0.948837 +vt 0.561962 0.927907 +vt 0.562823 0.920930 +vt 0.563683 0.927907 +vt 0.562823 0.976744 +vt 0.561962 0.872093 +vt 0.562823 0.865116 +vt 0.563683 0.872093 +vt 0.562823 0.920930 +vt 0.600688 0.865116 +vt 0.601549 0.872093 +vt 0.600688 0.920930 +vt 0.609294 0.920930 +vt 0.610155 0.927907 +vt 0.609294 0.976744 +vt 0.606152 0.908009 +vt 0.626506 0.913953 +vt 0.606191 0.915169 +vt 0.567986 0.872093 +vt 0.585198 0.879070 +vt 0.567986 0.879070 +vt 0.567986 0.927907 +vt 0.581756 0.920930 +vt 0.581756 0.927907 +vt 0.614458 0.969767 +vt 0.638554 0.976744 +vt 0.614458 0.976744 +vt 0.585198 0.886047 +vt 0.567986 0.886047 +vt 0.614458 0.927907 +vt 0.638554 0.934884 +vt 0.614458 0.934884 +vt 0.585198 0.893023 +vt 0.567986 0.969767 +vt 0.581756 0.976744 +vt 0.567986 0.976744 +vt 0.638554 0.941860 +vt 0.614458 0.941860 +vt 0.585198 0.900000 +vt 0.567986 0.900000 +vt 0.638554 0.948837 +vt 0.585198 0.906977 +vt 0.567986 0.906977 +vt 0.585198 0.865116 +vt 0.585198 0.872093 +vt 0.638554 0.955814 +vt 0.614458 0.955814 +vt 0.567986 0.913953 +vt 0.585198 0.913953 +vt 0.638554 0.962791 +vt 0.614458 0.962791 +vt 0.581756 0.934884 +vt 0.567986 0.934884 +vt 0.585198 0.920930 +vt 0.567986 0.920930 +vt 0.638554 0.969767 +vt 0.581756 0.941860 +vt 0.567986 0.941860 +vt 0.605852 0.872093 +vt 0.626506 0.879070 +vt 0.605852 0.879070 +vt 0.581756 0.948837 +vt 0.605852 0.865116 +vt 0.626506 0.872093 +vt 0.626506 0.886047 +vt 0.605852 0.886047 +vt 0.581756 0.955814 +vt 0.567986 0.955814 +vt 0.626506 0.893023 +vt 0.581756 0.962791 +vt 0.567986 0.962791 +vt 0.626506 0.920930 +vt 0.606230 0.922330 +vt 0.626506 0.900000 +vt 0.605852 0.900000 +vt 0.581756 0.969767 +vt 0.626506 0.906977 +vt 0.614458 0.920930 +vt 0.638554 0.927907 +vt 0.629088 0.920930 +vt 0.631670 0.913953 +vt 0.631670 0.920930 +vt 0.586919 0.941860 +vt 0.582616 0.941860 +vt 0.629088 0.893023 +vt 0.631670 0.900000 +vt 0.630809 0.900000 +vt 0.631670 0.872093 +vt 0.631670 0.879070 +vt 0.584337 0.948837 +vt 0.586919 0.948837 +vt 0.631670 0.886047 +vt 0.627367 0.886047 +vt 0.582616 0.927907 +vt 0.586919 0.920930 +vt 0.586919 0.927907 +vt 0.586919 0.955814 +vt 0.586058 0.955814 +vt 0.628227 0.865116 +vt 0.627367 0.872093 +vt 0.586919 0.934884 +vt 0.584337 0.976744 +vt 0.586919 0.969767 +vt 0.586919 0.976744 +vt 0.631670 0.893023 +vt 0.635972 0.886047 +vt 0.634251 0.893023 +vt 0.589501 0.976744 +vt 0.591222 0.941860 +vt 0.589501 0.948837 +vt 0.632530 0.900000 +vt 0.635112 0.865116 +vt 0.635972 0.872093 +vt 0.636833 0.879070 +vt 0.587780 0.955814 +vt 0.592083 0.934884 +vt 0.634251 0.920930 +vt 0.591222 0.927907 +vt 0.630809 0.913953 +vt 0.631670 0.906977 +vt 0.632530 0.913953 +vt 0.586919 0.962791 +vt 0.586058 0.969767 +vt 0.587780 0.969767 +vt 0.592083 0.927907 +vt 0.593804 0.934884 +vt 0.636833 0.906977 +vt 0.638554 0.913953 +vt 0.636833 0.913953 +vt 0.593804 0.941860 +vt 0.592083 0.941860 +vt 0.592083 0.948837 +vt 0.593804 0.948837 +vt 0.636833 0.900000 +vt 0.638554 0.906977 +vt 0.593804 0.955814 +vt 0.592083 0.955814 +vt 0.636833 0.872093 +vt 0.638554 0.879070 +vt 0.592083 0.920930 +vt 0.593804 0.927907 +vt 0.638554 0.886047 +vt 0.636833 0.886047 +vt 0.593804 0.962791 +vt 0.592083 0.962791 +vt 0.592083 0.969767 +vt 0.593804 0.976744 +vt 0.592083 0.976744 +vt 0.638554 0.893023 +vt 0.636833 0.893023 +vt 0.636833 0.865116 +vt 0.638554 0.872093 +vt 0.638554 0.900000 +vt 0.593804 0.969767 +vt 0.638554 0.920930 +vt 0.636833 0.920930 +vt 0.922547 0.390698 +vt 0.921687 0.409302 +vt 0.921687 0.390698 +vt 0.920826 0.390698 +vt 0.919966 0.409302 +vt 0.919966 0.390698 +vt 0.925129 0.390698 +vt 0.924268 0.409302 +vt 0.924268 0.390698 +vt 0.920826 0.409302 +vt 0.919105 0.409302 +vt 0.919105 0.390698 +vt 0.925990 0.390698 +vt 0.925129 0.409302 +vt 0.922547 0.390698 +vt 0.921687 0.409302 +vt 0.921687 0.390698 +vt 0.920826 0.390698 +vt 0.919966 0.409302 +vt 0.919966 0.390698 +vt 0.920826 0.409302 +vt 0.919105 0.409302 +vt 0.919105 0.390698 +vt 0.922547 0.390698 +vt 0.921687 0.409302 +vt 0.921687 0.390698 +vt 0.920826 0.390698 +vt 0.919966 0.409302 +vt 0.919966 0.390698 +vt 0.920826 0.409302 +vt 0.919105 0.409302 +vt 0.919105 0.390698 +vt 0.922547 0.390698 +vt 0.921687 0.409302 +vt 0.921687 0.390698 +vt 0.920826 0.390698 +vt 0.919966 0.409302 +vt 0.919966 0.390698 +vt 0.920826 0.409302 +vt 0.919105 0.409302 +vt 0.919105 0.390698 +vt 0.922547 0.390698 +vt 0.921687 0.409302 +vt 0.921687 0.390698 +vt 0.920826 0.390698 +vt 0.919966 0.409302 +vt 0.919966 0.390698 +vt 0.920826 0.409302 +vt 0.919105 0.409302 +vt 0.919105 0.390698 +vt 0.924268 0.390698 +vt 0.923408 0.409302 +vt 0.923408 0.390698 +vt 0.922547 0.390698 +vt 0.921687 0.409302 +vt 0.921687 0.390698 +vt 0.920826 0.390698 +vt 0.919966 0.409302 +vt 0.919966 0.390698 +vt 0.922547 0.409302 +vt 0.920826 0.409302 +vt 0.919105 0.409302 +vt 0.919105 0.390698 +vt 0.924268 0.390698 +vt 0.923408 0.409302 +vt 0.923408 0.390698 +vt 0.920826 0.390698 +vt 0.919966 0.409302 +vt 0.919966 0.390698 +vt 0.925129 0.390698 +vt 0.924268 0.409302 +vt 0.922547 0.409302 +vt 0.922547 0.390698 +vt 0.919105 0.409302 +vt 0.919105 0.390698 +vt 0.925990 0.390698 +vt 0.925129 0.409302 +vt 0.924268 0.390698 +vt 0.923408 0.409302 +vt 0.923408 0.390698 +vt 0.925129 0.390698 +vt 0.924268 0.409302 +vt 0.922547 0.409302 +vt 0.922547 0.390698 +vt 0.925990 0.390698 +vt 0.925129 0.409302 +vt 0.924268 0.390698 +vt 0.923408 0.409302 +vt 0.923408 0.390698 +vt 0.925129 0.390698 +vt 0.924268 0.409302 +vt 0.922547 0.409302 +vt 0.922547 0.390698 +vt 0.925990 0.390698 +vt 0.925129 0.409302 +vt 0.924268 0.390698 +vt 0.923408 0.409302 +vt 0.923408 0.390698 +vt 0.925129 0.390698 +vt 0.924268 0.409302 +vt 0.922547 0.409302 +vt 0.922547 0.390698 +vt 0.925990 0.390698 +vt 0.925129 0.409302 +vt 0.924268 0.390698 +vt 0.923408 0.409302 +vt 0.923408 0.390698 +vt 0.925129 0.390698 +vt 0.924268 0.409302 +vt 0.922547 0.409302 +vt 0.922547 0.390698 +vt 0.925990 0.390698 +vt 0.925129 0.409302 +vt 0.924268 0.390698 +vt 0.923408 0.409302 +vt 0.923408 0.390698 +vt 0.922547 0.390698 +vt 0.921687 0.409302 +vt 0.921687 0.390698 +vt 0.925129 0.390698 +vt 0.924268 0.409302 +vt 0.922547 0.409302 +vt 0.920826 0.409302 +vt 0.920826 0.390698 +vt 0.925990 0.390698 +vt 0.925129 0.409302 +vt 0.920826 0.390698 +vt 0.919966 0.409302 +vt 0.919966 0.390698 +vt 0.925129 0.390698 +vt 0.924268 0.409302 +vt 0.924268 0.390698 +vt 0.919105 0.409302 +vt 0.919105 0.390698 +vt 0.925990 0.390698 +vt 0.925129 0.409302 +vt 0.924268 0.390698 +vt 0.923408 0.409302 +vt 0.923408 0.390698 +vt 0.922547 0.390698 +vt 0.921687 0.409302 +vt 0.921687 0.390698 +vt 0.922547 0.409302 +vt 0.920826 0.409302 +vt 0.920826 0.390698 +vt 0.920826 0.390698 +vt 0.919966 0.409302 +vt 0.919966 0.390698 +vt 0.925129 0.390698 +vt 0.924268 0.409302 +vt 0.924268 0.390698 +vt 0.919105 0.409302 +vt 0.919105 0.390698 +vt 0.925990 0.390698 +vt 0.925129 0.409302 +vt 0.924268 0.390698 +vt 0.923408 0.409302 +vt 0.923408 0.390698 +vt 0.922547 0.390698 +vt 0.921687 0.409302 +vt 0.921687 0.390698 +vt 0.922547 0.409302 +vt 0.920826 0.409302 +vt 0.920826 0.390698 +vt 0.920826 0.390698 +vt 0.919966 0.409302 +vt 0.919966 0.390698 +vt 0.925129 0.390698 +vt 0.924268 0.409302 +vt 0.924268 0.390698 +vt 0.919105 0.409302 +vt 0.919105 0.390698 +vt 0.925990 0.390698 +vt 0.925129 0.409302 +vt 0.924268 0.390698 +vt 0.923408 0.409302 +vt 0.923408 0.390698 +vt 0.922547 0.390698 +vt 0.921687 0.409302 +vt 0.921687 0.390698 +vt 0.922547 0.409302 +vt 0.920826 0.409302 +vt 0.920826 0.390698 +vt 0.920826 0.390698 +vt 0.919966 0.409302 +vt 0.919966 0.390698 +vt 0.925129 0.390698 +vt 0.924268 0.409302 +vt 0.924268 0.390698 +vt 0.919105 0.409302 +vt 0.919105 0.390698 +vt 0.925990 0.390698 +vt 0.925129 0.409302 +vt 0.924268 0.390698 +vt 0.923408 0.409302 +vt 0.923408 0.390698 +vt 0.922547 0.390698 +vt 0.921687 0.409302 +vt 0.921687 0.390698 +vt 0.922547 0.409302 +vt 0.920826 0.409302 +vt 0.920826 0.390698 +vt 0.979346 0.255814 +vt 0.917384 0.244186 +vt 0.979346 0.244186 +vt 0.979346 0.360465 +vt 0.917384 0.348837 +vt 0.979346 0.348837 +vt 0.979346 0.267442 +vt 0.917384 0.255814 +vt 0.979346 0.372093 +vt 0.917384 0.360465 +vt 0.979346 0.290698 +vt 0.917384 0.279070 +vt 0.979346 0.279070 +vt 0.917384 0.267442 +vt 0.979346 0.197674 +vt 0.917384 0.186047 +vt 0.979346 0.186047 +vt 0.979346 0.302326 +vt 0.917384 0.290698 +vt 0.979346 0.209302 +vt 0.917384 0.197674 +vt 0.979346 0.313953 +vt 0.917384 0.302326 +vt 0.979346 0.220930 +vt 0.917384 0.209302 +vt 0.979346 0.325581 +vt 0.917384 0.313953 +vt 0.979346 0.232558 +vt 0.917384 0.220930 +vt 0.979346 0.337209 +vt 0.917384 0.325581 +vt 0.917384 0.232558 +vt 0.917384 0.337209 +vt 0.803787 0.646512 +vt 0.796902 0.660465 +vt 0.796902 0.646512 +vt 0.803787 0.618605 +vt 0.796902 0.632558 +vt 0.796902 0.618605 +vt 0.803787 0.702326 +vt 0.796902 0.716279 +vt 0.796902 0.702326 +vt 0.803787 0.674419 +vt 0.796902 0.688372 +vt 0.796902 0.674419 +vt 0.803787 0.632558 +vt 0.803787 0.604651 +vt 0.796902 0.604651 +vt 0.803787 0.688372 +vt 0.803787 0.660465 +vt 0.803787 0.646512 +vt 0.796902 0.660465 +vt 0.796902 0.646512 +vt 0.803787 0.618605 +vt 0.796902 0.632558 +vt 0.796902 0.618605 +vt 0.803787 0.702326 +vt 0.796902 0.716279 +vt 0.796902 0.702326 +vt 0.803787 0.674419 +vt 0.796902 0.688372 +vt 0.796902 0.674419 +vt 0.803787 0.632558 +vt 0.803787 0.604651 +vt 0.796902 0.604651 +vt 0.803787 0.688372 +vt 0.803787 0.660465 +vt 0.803787 0.646512 +vt 0.796902 0.660465 +vt 0.796902 0.646512 +vt 0.803787 0.618605 +vt 0.796902 0.632558 +vt 0.796902 0.618605 +vt 0.803787 0.702326 +vt 0.796902 0.716279 +vt 0.796902 0.702326 +vt 0.803787 0.674419 +vt 0.796902 0.688372 +vt 0.796902 0.674419 +vt 0.803787 0.632558 +vt 0.803787 0.604651 +vt 0.796902 0.604651 +vt 0.803787 0.688372 +vt 0.803787 0.660465 +vt 0.595525 0.913953 +vt 0.585198 0.906977 +vt 0.585198 0.913953 +vt 0.557659 0.948837 +vt 0.554217 0.941860 +vt 0.554217 0.948837 +vt 0.604131 0.934884 +vt 0.593804 0.927907 +vt 0.593804 0.934884 +vt 0.557659 0.955814 +vt 0.554217 0.955814 +vt 0.595525 0.872093 +vt 0.585198 0.865116 +vt 0.585198 0.872093 +vt 0.593804 0.941860 +vt 0.557659 0.962791 +vt 0.554217 0.962791 +vt 0.585198 0.920930 +vt 0.604131 0.948837 +vt 0.593804 0.948837 +vt 0.557659 0.969767 +vt 0.554217 0.969767 +vt 0.557659 0.879070 +vt 0.554217 0.872093 +vt 0.554217 0.879070 +vt 0.604131 0.955814 +vt 0.593804 0.955814 +vt 0.557659 0.927907 +vt 0.554217 0.920930 +vt 0.554217 0.927907 +vt 0.554217 0.886047 +vt 0.604131 0.962791 +vt 0.593804 0.962791 +vt 0.554217 0.976744 +vt 0.557659 0.893023 +vt 0.554217 0.893023 +vt 0.604131 0.969767 +vt 0.593804 0.969767 +vt 0.557659 0.900000 +vt 0.554217 0.900000 +vt 0.604131 0.927907 +vt 0.593804 0.920930 +vt 0.557659 0.906977 +vt 0.554217 0.906977 +vt 0.593804 0.976744 +vt 0.557659 0.913953 +vt 0.554217 0.913953 +vt 0.595525 0.879070 +vt 0.585198 0.879070 +vt 0.557659 0.872093 +vt 0.554217 0.865116 +vt 0.585198 0.886047 +vt 0.554217 0.920930 +vt 0.595525 0.893023 +vt 0.585198 0.893023 +vt 0.557659 0.934884 +vt 0.554217 0.934884 +vt 0.595525 0.900000 +vt 0.585198 0.900000 +vt 0.595525 0.906977 +vt 0.598107 0.906977 +vt 0.600688 0.900000 +vt 0.596386 0.900000 +vt 0.609294 0.948837 +vt 0.604991 0.941860 +vt 0.596386 0.886047 +vt 0.600688 0.879070 +vt 0.598107 0.879070 +vt 0.600688 0.913953 +vt 0.599828 0.913953 +vt 0.604991 0.955814 +vt 0.600688 0.893023 +vt 0.606713 0.934884 +vt 0.609294 0.927907 +vt 0.608434 0.927907 +vt 0.606713 0.962791 +vt 0.609294 0.955814 +vt 0.609294 0.941860 +vt 0.600688 0.872093 +vt 0.599828 0.872093 +vt 0.609294 0.969767 +vt 0.608434 0.969767 +vt 0.603270 0.879070 +vt 0.613597 0.955814 +vt 0.600688 0.906977 +vt 0.604991 0.900000 +vt 0.611876 0.934884 +vt 0.609294 0.934884 +vt 0.604991 0.886047 +vt 0.600688 0.886047 +vt 0.609294 0.962791 +vt 0.603270 0.906977 +vt 0.613597 0.941860 +vt 0.611876 0.962791 +vt 0.562823 0.969767 +vt 0.560241 0.962791 +vt 0.561962 0.969767 +vt 0.562823 0.900000 +vt 0.558520 0.900000 +vt 0.562823 0.948837 +vt 0.558520 0.941860 +vt 0.560241 0.879070 +vt 0.562823 0.872093 +vt 0.561962 0.872093 +vt 0.560241 0.906977 +vt 0.562823 0.955814 +vt 0.558520 0.955814 +vt 0.562823 0.886047 +vt 0.558520 0.886047 +vt 0.560241 0.934884 +vt 0.562823 0.927907 +vt 0.561962 0.927907 +vt 0.562823 0.913953 +vt 0.561962 0.913953 +vt 0.562823 0.893023 +vt 0.562823 0.934884 +vt 0.565404 0.906977 +vt 0.562823 0.906977 +vt 0.567126 0.886047 +vt 0.567126 0.955814 +vt 0.565404 0.934884 +vt 0.567126 0.900000 +vt 0.562823 0.962791 +vt 0.565404 0.879070 +vt 0.562823 0.879070 +vt 0.567126 0.941860 +vt 0.562823 0.941860 +vt 0.565404 0.962791 +vt 0.562823 0.920930 +vt 0.563683 0.927907 +vt 0.562823 0.976744 +vt 0.563683 0.969767 +vt 0.562823 0.865116 +vt 0.563683 0.872093 +vt 0.562823 0.920930 +vt 0.563683 0.913953 +vt 0.600688 0.865116 +vt 0.601549 0.872093 +vt 0.600688 0.920930 +vt 0.601549 0.913953 +vt 0.609294 0.920930 +vt 0.610155 0.927907 +vt 0.609294 0.976744 +vt 0.610155 0.969767 +vt 0.626506 0.913953 +vt 0.606152 0.908009 +vt 0.606191 0.915169 +vt 0.585198 0.879070 +vt 0.567986 0.872093 +vt 0.567986 0.879070 +vt 0.567986 0.927907 +vt 0.581756 0.920930 +vt 0.567986 0.920930 +vt 0.638554 0.976744 +vt 0.614458 0.969767 +vt 0.614458 0.976744 +vt 0.585198 0.886047 +vt 0.567986 0.886047 +vt 0.638554 0.934884 +vt 0.614458 0.927907 +vt 0.614458 0.934884 +vt 0.567986 0.893023 +vt 0.581756 0.976744 +vt 0.567986 0.969767 +vt 0.567986 0.976744 +vt 0.638554 0.941860 +vt 0.614458 0.941860 +vt 0.585198 0.900000 +vt 0.567986 0.900000 +vt 0.638554 0.948837 +vt 0.614458 0.948837 +vt 0.585198 0.906977 +vt 0.567986 0.906977 +vt 0.585198 0.865116 +vt 0.567986 0.865116 +vt 0.638554 0.955814 +vt 0.614458 0.955814 +vt 0.567986 0.913953 +vt 0.638554 0.962791 +vt 0.614458 0.962791 +vt 0.581756 0.934884 +vt 0.567986 0.934884 +vt 0.585198 0.920930 +vt 0.567986 0.920930 +vt 0.638554 0.969767 +vt 0.581756 0.941860 +vt 0.567986 0.941860 +vt 0.626506 0.879070 +vt 0.605852 0.872093 +vt 0.605852 0.879070 +vt 0.567986 0.948837 +vt 0.626506 0.872093 +vt 0.605852 0.865116 +vt 0.626506 0.886047 +vt 0.605852 0.886047 +vt 0.581756 0.955814 +vt 0.567986 0.955814 +vt 0.626506 0.893023 +vt 0.605852 0.893023 +vt 0.581756 0.962791 +vt 0.567986 0.962791 +vt 0.626506 0.920930 +vt 0.606230 0.922330 +vt 0.626506 0.900000 +vt 0.605852 0.900000 +vt 0.626506 0.906977 +vt 0.638554 0.927907 +vt 0.614458 0.920930 +vt 0.629088 0.920930 +vt 0.631670 0.913953 +vt 0.630809 0.913953 +vt 0.586919 0.941860 +vt 0.582616 0.941860 +vt 0.631670 0.900000 +vt 0.629088 0.893023 +vt 0.630809 0.900000 +vt 0.631670 0.872093 +vt 0.627367 0.872093 +vt 0.584337 0.948837 +vt 0.631670 0.886047 +vt 0.627367 0.886047 +vt 0.582616 0.927907 +vt 0.586919 0.920930 +vt 0.583477 0.920930 +vt 0.586919 0.955814 +vt 0.586058 0.955814 +vt 0.628227 0.865116 +vt 0.586919 0.934884 +vt 0.584337 0.976744 +vt 0.586919 0.969767 +vt 0.586058 0.969767 +vt 0.631670 0.893023 +vt 0.634251 0.893023 +vt 0.589501 0.976744 +vt 0.586919 0.976744 +vt 0.586919 0.948837 +vt 0.591222 0.941860 +vt 0.635112 0.865116 +vt 0.631670 0.865116 +vt 0.636833 0.879070 +vt 0.631670 0.879070 +vt 0.587780 0.955814 +vt 0.592083 0.934884 +vt 0.586919 0.927907 +vt 0.634251 0.920930 +vt 0.631670 0.920930 +vt 0.591222 0.927907 +vt 0.631670 0.906977 +vt 0.632530 0.913953 +vt 0.632530 0.900000 +vt 0.586919 0.962791 +vt 0.587780 0.969767 +vt 0.593804 0.934884 +vt 0.592083 0.927907 +vt 0.638554 0.913953 +vt 0.636833 0.906977 +vt 0.636833 0.913953 +vt 0.593804 0.941860 +vt 0.592083 0.941860 +vt 0.592083 0.948837 +vt 0.638554 0.906977 +vt 0.636833 0.900000 +vt 0.593804 0.955814 +vt 0.592083 0.955814 +vt 0.638554 0.879070 +vt 0.636833 0.872093 +vt 0.593804 0.927907 +vt 0.592083 0.920930 +vt 0.638554 0.886047 +vt 0.636833 0.886047 +vt 0.593804 0.962791 +vt 0.592083 0.962791 +vt 0.593804 0.976744 +vt 0.592083 0.969767 +vt 0.592083 0.976744 +vt 0.638554 0.893023 +vt 0.636833 0.893023 +vt 0.638554 0.872093 +vt 0.636833 0.865116 +vt 0.638554 0.900000 +vt 0.593804 0.969767 +vt 0.638554 0.920930 +vt 0.636833 0.920930 +vt 0.803787 0.716279 +vt 0.917384 0.186047 +vt 0.557659 0.941860 +vt 0.595525 0.865116 +vt 0.604131 0.941860 +vt 0.595525 0.920930 +vt 0.557659 0.920930 +vt 0.557659 0.886047 +vt 0.557659 0.976744 +vt 0.604131 0.920930 +vt 0.604131 0.976744 +vt 0.557659 0.865116 +vt 0.595525 0.886047 +vt 0.557659 0.920930 +vt 0.567986 0.920930 +vt 0.567986 0.865116 +vt 0.626506 0.865116 +vt 0.638554 0.920930 +vt 0.583477 0.920930 +vt 0.631670 0.865116 +vt 0.590361 0.920930 +vt 0.593804 0.920930 +vt 0.638554 0.865116 +vt 0.922547 0.409302 +vt 0.925990 0.409302 +vt 0.922547 0.409302 +vt 0.922547 0.409302 +vt 0.922547 0.409302 +vt 0.922547 0.409302 +vt 0.924268 0.409302 +vt 0.920826 0.409302 +vt 0.925990 0.409302 +vt 0.925990 0.409302 +vt 0.925990 0.409302 +vt 0.925990 0.409302 +vt 0.925990 0.409302 +vt 0.925990 0.409302 +vt 0.920826 0.409302 +vt 0.925990 0.409302 +vt 0.924268 0.409302 +vt 0.920826 0.409302 +vt 0.925990 0.409302 +vt 0.924268 0.409302 +vt 0.920826 0.409302 +vt 0.925990 0.409302 +vt 0.924268 0.409302 +vt 0.920826 0.409302 +vt 0.925990 0.409302 +vt 0.924268 0.409302 +vt 0.917384 0.372093 +vt 0.803787 0.716279 +vt 0.803787 0.716279 +vt 0.803787 0.716279 +vt 0.557659 0.941860 +vt 0.595525 0.865116 +vt 0.604131 0.941860 +vt 0.595525 0.920930 +vt 0.557659 0.920930 +vt 0.557659 0.886047 +vt 0.557659 0.976744 +vt 0.604131 0.920930 +vt 0.604131 0.976744 +vt 0.557659 0.865116 +vt 0.595525 0.886047 +vt 0.557659 0.920930 +vt 0.585198 0.872093 +vt 0.581756 0.927907 +vt 0.585198 0.893023 +vt 0.581756 0.969767 +vt 0.585198 0.913953 +vt 0.581756 0.948837 +vt 0.626506 0.865116 +vt 0.638554 0.920930 +vt 0.635972 0.886047 +vt 0.589501 0.948837 +vt 0.635972 0.872093 +vt 0.590361 0.920930 +vt 0.593804 0.948837 +vt 0.593804 0.920930 +vt 0.638554 0.865116 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.5774 -0.5774 -0.5774 +vn -0.5774 -0.5774 -0.5774 +vn -0.5774 0.5774 -0.5774 +vn 0.5774 0.5774 -0.5774 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.9239 0.3827 0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.3827 0.9239 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.9239 -0.3827 0.0000 +vn -0.9239 -0.3827 0.0000 +vn 0.7263 0.6737 0.1363 +vn 0.0000 -0.9824 -0.1866 +vn -0.9987 -0.0473 -0.0196 +vn 0.6794 -0.7194 -0.1448 +vn -0.7263 0.6737 0.1363 +vn 0.9987 -0.0473 -0.0196 +vn 0.9955 -0.0671 -0.0671 +vn -0.6794 -0.7194 -0.1448 +vn -0.0000 -0.7071 -0.7071 +vn -0.6630 -0.5294 -0.5294 +vn 0.7574 0.4617 0.4617 +vn 0.6630 -0.5294 -0.5294 +vn -0.9955 -0.0671 -0.0671 +vn -0.7574 0.4617 0.4617 +vn -0.9987 -0.0196 -0.0473 +vn 0.6794 -0.1448 -0.7194 +vn 0.9987 -0.0196 -0.0473 +vn -0.6794 -0.1448 -0.7194 +vn 0.7263 0.1363 0.6737 +vn -0.0000 -0.1866 -0.9824 +vn -0.7263 0.1363 0.6737 +vn 0.6737 -0.1363 0.7263 +vn -0.0473 0.0196 0.9987 +vn -0.7194 0.1448 0.6794 +vn -0.9824 0.1866 0.0000 +vn -0.7194 0.1448 -0.6794 +vn -0.0473 0.0196 -0.9987 +vn 0.6737 -0.1363 -0.7263 +vn 0.4617 -0.4617 0.7574 +vn -0.0671 0.0671 0.9955 +vn -0.5294 0.5294 -0.6630 +vn 0.4617 -0.4617 -0.7574 +vn -0.5294 0.5294 0.6630 +vn -0.0671 0.0671 -0.9955 +vn -0.1448 0.7194 -0.6794 +vn -0.0196 0.0473 -0.9987 +vn -0.0196 0.0473 0.9987 +vn 0.1363 -0.6737 -0.7263 +vn -0.1448 0.7194 0.6794 +vn -0.1866 0.9824 0.0000 +vn 0.1363 -0.6737 0.7263 +vn -0.3827 0.0000 0.9239 +vn 0.9239 0.0000 -0.3827 +vn -0.3827 0.0000 -0.9239 +vn 0.9239 0.0000 0.3827 +vn -0.9239 0.0000 -0.3827 +vn 0.3827 0.0000 0.9239 +vn 0.3827 0.0000 -0.9239 +vn -0.9239 0.0000 0.3827 +vn -0.6737 -0.1363 0.7263 +vn 0.0473 0.0196 0.9987 +vn 0.9824 0.1866 0.0000 +vn 0.7194 0.1448 -0.6794 +vn 0.7194 0.1448 0.6794 +vn -0.6737 -0.1363 -0.7263 +vn 0.0473 0.0196 -0.9987 +vn -0.4617 -0.4617 0.7574 +vn 0.5294 0.5294 -0.6630 +vn -0.4617 -0.4617 -0.7574 +vn 0.5294 0.5294 0.6630 +vn 0.0671 0.0671 0.9955 +vn 0.0671 0.0671 -0.9955 +vn 0.0196 0.0473 -0.9987 +vn 0.0196 0.0473 0.9987 +vn 0.1448 0.7194 -0.6794 +vn 0.1866 0.9824 0.0000 +vn -0.1363 -0.6737 -0.7263 +vn 0.1448 0.7194 0.6794 +vn -0.1363 -0.6737 0.7263 +s off +f 2949/4260/652 2945/4261/652 2950/4262/652 +f 2950/4262/653 2947/4263/653 2956/4264/653 +f 2956/4265/654 2948/4266/654 2955/4267/654 +f 2955/4268/655 2949/4269/655 2951/4270/655 +f 2951/4270/656 2950/4262/656 2954/4271/656 +f 2956/4272/653 2954/4271/653 2950/4273/653 +f 2957/4274/657 2953/4275/657 2958/4276/657 +f 2955/4267/655 2946/4277/655 2949/4260/655 +f 2956/4272/653 2953/4275/653 2954/4271/653 +f 2955/4268/655 2952/4278/655 2957/4279/655 +f 2952/4278/658 2954/4271/658 2953/4275/658 +f 2956/4280/659 2957/4279/659 2958/4281/659 +f 2960/4282/658 2961/4283/658 2959/4284/658 +f 2961/4285/660 2962/4286/660 2959/4287/660 +f 2960/4282/655 2964/4288/655 2961/4283/655 +f 2959/4287/654 2963/4289/654 2960/4282/654 +f 2965/4290/654 2968/4291/654 2966/4292/654 +f 2965/4293/653 2970/4294/653 2967/4295/653 +f 2968/4291/661 2969/4296/661 2966/4292/661 +f 2966/4297/658 2969/4298/658 2965/4293/658 +f 2964/4288/658 2968/4299/658 2962/4300/658 +f 2978/4301/662 2984/4302/662 2976/4303/662 +f 2985/4304/658 2978/4305/658 2977/4306/658 +f 2981/4307/663 2971/4308/663 2973/4309/663 +f 2974/4310/659 2981/4311/659 2973/4312/659 +f 2983/4313/664 2977/4314/664 2975/4315/664 +f 2984/4302/655 2972/4316/655 2976/4303/655 +f 2980/4317/665 2974/4318/665 2972/4316/665 +f 2979/4319/653 2975/4315/653 2971/4308/653 +f 2974/4320/654 2962/4286/654 2968/4291/654 +f 2962/4286/654 2971/4321/654 2963/4289/654 +f 2968/4291/654 2972/4322/654 2974/4320/654 +f 2964/4288/652 2982/4323/652 2970/4294/652 +f 2982/4323/652 2980/4324/652 2970/4294/652 +f 2981/4311/652 2964/4288/652 2979/4325/652 +f 2999/4326/659 3013/4327/659 3008/4328/659 +f 2989/4329/658 2990/4330/658 2991/4331/658 +f 2991/4331/658 2992/4332/658 2989/4329/658 +f 2990/4330/655 3013/4333/655 3000/4334/655 +f 2992/4332/658 2993/4335/658 2996/4336/658 +f 3009/4337/653 3005/4338/653 2994/4339/653 +f 2997/4340/659 3001/4341/659 3000/4342/659 +f 3003/4343/659 3001/4341/659 2997/4340/659 +f 3011/4344/652 3008/4328/652 3013/4327/652 +f 3003/4343/659 3004/4345/659 3002/4346/659 +f 2993/4335/660 3004/4347/660 2996/4348/660 +f 3043/4349/658 3036/4350/658 3035/4351/658 +f 2989/4329/653 2998/4352/653 2987/4353/653 +f 2991/4331/652 3002/4346/652 2993/4335/652 +f 2990/4354/661 3001/4341/661 2991/4331/661 +f 2995/4355/655 3003/4356/655 2992/4332/655 +f 3036/4357/662 3042/4358/662 3034/4359/662 +f 2992/4360/654 2997/4340/654 2989/4361/654 +f 2988/4362/655 3008/4363/655 3007/4364/655 +f 3004/4365/653 3012/4366/653 2996/4336/653 +f 2988/4362/658 3011/4367/658 2987/4353/658 +f 3011/4367/658 2989/4329/658 2987/4353/658 +f 2997/4340/659 3013/4327/659 2998/4368/659 +f 3014/4369/659 3003/4343/659 3006/4370/659 +f 2992/4332/658 3012/4366/658 2995/4355/658 +f 3014/4369/659 3005/4371/659 3010/4372/659 +f 2994/4339/658 3012/4366/658 3009/4337/658 +f 3010/4372/652 3012/4373/652 3014/4369/652 +f 2963/4289/655 3016/4374/655 2964/4288/655 +f 3016/4375/655 3015/4376/655 3017/4377/655 +f 3017/4377/666 3015/4378/666 3018/4379/666 +f 3020/4380/667 3021/4381/667 3019/4382/667 +f 3021/4381/653 3020/4383/653 3026/4384/653 +f 3018/4379/659 3021/4381/659 3025/4385/659 +f 3026/4386/653 2967/4295/653 2970/4294/653 +f 3023/4387/668 3028/4388/668 3025/4385/668 +f 3027/4389/669 3022/4390/669 3024/4391/669 +f 3016/4375/655 3022/4390/655 3027/4392/655 +f 3026/4384/653 3023/4387/653 3021/4381/653 +f 3025/4385/652 3027/4393/652 3024/4391/652 +f 3039/4394/663 3029/4395/663 3031/4396/663 +f 3032/4397/659 3039/4398/659 3031/4399/659 +f 3041/4400/664 3035/4401/664 3033/4402/664 +f 3042/4358/655 3030/4403/655 3034/4359/655 +f 3038/4404/665 3032/4405/665 3030/4403/665 +f 3037/4406/653 3033/4402/653 3029/4395/653 +f 2985/4304/652 3040/4407/652 2986/4408/652 +f 3032/4409/654 2977/4410/654 2978/4411/654 +f 3037/4412/652 2985/4304/652 2983/4413/652 +f 2977/4410/654 3029/4414/654 2975/4415/654 +f 2976/4416/654 3032/4409/654 2978/4411/654 +f 3040/4407/652 2984/4417/652 2986/4408/652 +f 3028/4418/658 3016/4374/658 3027/4419/658 +f 3043/4349/652 3026/4386/652 3044/4420/652 +f 3044/4420/652 3026/4386/652 3042/4421/652 +f 3043/4349/652 3041/4422/652 3016/4374/652 +f 3018/4379/654 3036/4423/654 3019/4382/654 +f 3036/4423/654 3020/4424/654 3019/4382/654 +f 3015/4425/654 3035/4426/654 3018/4379/654 +f 3015/4425/654 2963/4289/654 2975/4415/654 +f 3037/4412/652 2983/4413/652 2964/4288/652 +f 3020/4424/654 3034/4427/654 3030/4428/654 +f 3038/4429/652 3026/4386/652 2970/4294/652 +f 3049/4430/658 3048/4431/658 3045/4432/658 +f 3047/4433/659 3050/4434/659 3046/4435/659 +f 3048/4431/653 3051/4436/653 3047/4437/653 +f 3046/4435/655 3049/4430/655 3045/4432/655 +f 3057/4438/658 3056/4439/658 3053/4440/658 +f 3055/4441/659 3058/4442/659 3054/4443/659 +f 3056/4439/653 3059/4444/653 3055/4441/653 +f 3054/4445/655 3057/4438/655 3053/4440/655 +f 3058/4446/670 3063/4447/670 3057/4448/670 +f 3052/4449/671 3061/4450/671 3051/4451/671 +f 3062/4452/654 3064/4453/654 3061/4454/654 +f 3062/4452/658 3067/4455/658 3063/4456/658 +f 3064/4457/659 3065/4458/659 3061/4459/659 +f 3067/4455/652 3065/4458/652 3068/4460/652 +f 3063/4456/658 3060/4461/658 3057/4462/658 +f 3067/4455/660 3059/4444/660 3060/4463/660 +f 3068/4460/659 3058/4464/659 3059/4465/659 +f 3066/4466/658 3052/4467/658 3049/4468/658 +f 3050/4434/661 3066/4466/661 3049/4430/661 +f 3061/4459/659 3050/4469/659 3051/4470/659 +f 3075/4471/658 3076/4472/658 3069/4473/658 +f 3101/4474/658 3105/4475/658 3109/4476/658 +f 3095/4477/659 3091/4478/659 3087/4479/659 +f 3118/4480/658 3119/4481/658 3117/4482/658 +f 3119/4483/670 3120/4484/670 3117/4485/670 +f 3118/4480/653 3122/4486/653 3119/4483/653 +f 3117/4482/652 3121/4487/652 3118/4480/652 +f 3123/4488/652 3126/4489/652 3124/4490/652 +f 3123/4488/655 3128/4491/655 3125/4492/655 +f 3126/4493/671 3127/4494/671 3124/4495/671 +f 3124/4490/658 3127/4496/658 3123/4488/658 +f 3126/4489/658 3130/4497/658 3128/4498/658 +f 3122/4499/658 3131/4500/658 3120/4501/658 +f 3126/4489/660 3139/4502/660 3129/4503/660 +f 3120/4501/652 3134/4504/652 3121/4487/652 +f 3128/4491/655 3138/4505/655 3125/4492/655 +f 3131/4500/661 3135/4506/661 3120/4501/661 +f 3122/4486/671 3142/4507/671 3132/4508/671 +f 3125/4492/652 3137/4509/652 3126/4489/652 +f 3130/4510/670 3136/4511/670 3128/4491/670 +f 3121/4487/653 3133/4512/653 3122/4486/653 +f 3139/4502/659 3136/4513/659 3140/4514/659 +f 3134/4504/659 3135/4506/659 3133/4515/659 +f 3145/4516/670 3146/4517/670 3143/4518/670 +f 3144/4519/653 3148/4520/653 3145/4516/653 +f 3143/4521/652 3147/4522/652 3144/4519/652 +f 3149/4523/652 3152/4524/652 3150/4525/652 +f 3149/4523/655 3154/4526/655 3151/4527/655 +f 3152/4528/671 3153/4529/671 3150/4530/671 +f 3158/4531/658 3161/4532/658 3162/4533/658 +f 3156/4534/658 3155/4535/658 3157/4536/658 +f 3159/4537/652 3149/4523/652 3150/4525/652 +f 3160/4538/655 3153/4529/655 3149/4523/655 +f 3156/4534/652 3143/4521/652 3144/4519/652 +f 3155/4539/653 3144/4519/653 3145/4516/653 +f 3159/4537/660 3165/4540/660 3161/4532/660 +f 3153/4541/659 3165/4540/659 3150/4525/659 +f 3166/4542/670 3158/4543/670 3162/4544/670 +f 3167/4545/661 3157/4536/661 3163/4546/661 +f 3167/4545/659 3145/4547/659 3143/4521/659 +f 3155/4539/671 3168/4548/671 3164/4549/671 +f 3367/4550/659 3366/4551/659 3365/4552/659 +f 3371/4553/658 3369/4554/658 3370/4555/658 +f 3368/4556/655 3371/4553/655 3366/4551/655 +f 3367/4557/653 3370/4555/653 3369/4554/653 +f 3368/4558/655 3377/4559/655 3374/4560/655 +f 3366/4561/657 3370/4555/657 3365/4562/657 +f 3367/4557/653 3369/4554/653 3373/4563/653 +f 3372/4564/656 3373/4565/656 3369/4554/656 +f 3368/4556/655 3374/4566/655 3372/4564/655 +f 3367/4567/654 3375/4568/654 3368/4558/654 +f 3373/4565/653 3376/4569/653 3367/4570/653 +f 3374/4560/652 3378/4571/652 3373/4565/652 +f 3382/4572/652 3385/4573/652 3381/4574/652 +f 3379/4575/654 3384/4576/654 3380/4577/654 +f 3380/4577/655 3386/4578/655 3382/4572/655 +f 3381/4574/653 3383/4579/653 3379/4580/653 +f 3390/4581/652 3393/4582/652 3389/4583/652 +f 3387/4584/654 3392/4585/654 3388/4586/654 +f 3388/4586/655 3394/4587/655 3390/4581/655 +f 3389/4583/653 3391/4588/653 3387/4589/653 +f 3401/4590/652 3398/4591/652 3397/4592/652 +f 3400/4593/654 3395/4594/654 3396/4595/654 +f 3402/4596/655 3396/4595/655 3398/4591/655 +f 3399/4597/653 3397/4592/653 3395/4598/653 +f 3409/4599/652 3406/4600/652 3405/4601/652 +f 3408/4602/654 3403/4603/654 3404/4604/654 +f 3410/4605/655 3404/4604/655 3406/4600/655 +f 3407/4606/653 3405/4601/653 3403/4607/653 +f 3417/4608/652 3414/4609/652 3413/4610/652 +f 3416/4611/654 3411/4612/654 3412/4613/654 +f 3418/4614/655 3412/4613/655 3414/4609/655 +f 3415/4615/653 3413/4610/653 3411/4616/653 +f 3425/4617/652 3422/4618/652 3421/4619/652 +f 3424/4620/654 3419/4621/654 3420/4622/654 +f 3426/4623/655 3420/4622/655 3422/4618/655 +f 3423/4624/653 3421/4619/653 3419/4625/653 +f 3433/4626/652 3430/4627/652 3429/4628/652 +f 3432/4629/654 3427/4630/654 3428/4631/654 +f 3434/4632/655 3428/4631/655 3430/4627/655 +f 3431/4633/653 3429/4628/653 3427/4634/653 +f 3441/4635/652 3438/4636/652 3437/4637/652 +f 3440/4638/654 3435/4639/654 3436/4640/654 +f 3442/4641/655 3436/4640/655 3438/4636/655 +f 3439/4642/653 3437/4637/653 3435/4643/653 +f 3449/4644/652 3446/4645/652 3445/4646/652 +f 3448/4647/654 3443/4648/654 3444/4649/654 +f 3450/4650/655 3444/4649/655 3446/4645/655 +f 3447/4651/653 3445/4646/653 3443/4652/653 +f 3457/4653/652 3454/4654/652 3453/4655/652 +f 3456/4656/654 3451/4657/654 3452/4658/654 +f 3458/4659/655 3452/4658/655 3454/4654/655 +f 3455/4660/653 3453/4655/653 3451/4661/653 +f 3465/4662/652 3462/4663/652 3461/4664/652 +f 3464/4665/654 3459/4666/654 3460/4667/654 +f 3466/4668/655 3460/4667/655 3462/4663/655 +f 3463/4669/653 3461/4664/653 3459/4670/653 +f 3473/4671/652 3470/4672/652 3469/4673/652 +f 3472/4674/654 3467/4675/654 3468/4676/654 +f 3474/4677/655 3468/4676/655 3470/4672/655 +f 3471/4678/653 3469/4673/653 3467/4679/653 +f 3476/4680/655 3477/4681/655 3475/4682/655 +f 3482/4683/665 3483/4684/665 3479/4685/665 +f 3476/4680/654 3482/4686/654 3478/4687/654 +f 3477/4688/652 3480/4689/652 3475/4682/652 +f 3478/4690/659 3479/4691/659 3477/4688/659 +f 3475/4682/658 3481/4692/658 3476/4680/658 +f 3484/4693/655 3485/4694/655 3483/4695/655 +f 3484/4696/654 3490/4697/654 3486/4698/654 +f 3485/4694/652 3487/4699/652 3483/4695/652 +f 3490/4697/653 3487/4699/653 3489/4700/653 +f 3480/4689/664 3488/4701/664 3481/4692/664 +f 3488/4701/654 3482/4702/654 3481/4692/654 +f 3483/4684/652 3480/4689/652 3479/4685/652 +f 3492/4703/653 3493/4704/653 3491/4705/653 +f 3494/4706/659 3497/4707/659 3493/4708/659 +f 3498/4709/655 3495/4710/655 3497/4707/655 +f 3496/4711/658 3491/4705/658 3495/4710/658 +f 3494/4712/654 3506/4713/654 3498/4714/654 +f 3498/4714/655 3510/4715/655 3502/4716/655 +f 3494/4717/653 3492/4718/653 3501/4719/653 +f 3502/4716/656 3492/4703/656 3496/4711/656 +f 3498/4714/655 3502/4716/655 3496/4720/655 +f 3493/4721/653 3499/4722/653 3491/4723/653 +f 3499/4722/657 3495/4710/657 3491/4705/657 +f 3497/4724/655 3495/4725/655 3500/4726/655 +f 3500/4726/655 3503/4727/655 3497/4724/655 +f 3499/4722/654 3507/4728/654 3500/4726/654 +f 3501/4719/653 3505/4729/653 3494/4717/653 +f 3502/4716/652 3509/4730/652 3501/4719/652 +f 3497/4724/652 3504/4731/652 3493/4732/652 +f 3493/4721/653 3508/4733/653 3499/4722/653 +f 3513/4734/659 3518/4735/659 3517/4736/659 +f 3512/4737/653 3513/4734/653 3511/4738/653 +f 3511/4738/658 3516/4739/658 3512/4740/658 +f 3513/4734/654 3515/4741/654 3511/4738/654 +f 3521/4742/659 3526/4743/659 3525/4744/659 +f 3520/4745/653 3521/4742/653 3519/4746/653 +f 3519/4746/658 3524/4747/658 3520/4748/658 +f 3521/4742/654 3523/4749/654 3519/4746/654 +f 3530/4750/672 3528/4751/672 3527/4752/672 +f 3531/4753/653 3529/4754/653 3534/4755/653 +f 3536/4756/655 3542/4757/655 3537/4758/655 +f 3538/4759/657 3536/4756/657 3537/4758/657 +f 3538/4760/653 3540/4761/653 3535/4762/653 +f 3531/4763/657 3533/4764/657 3532/4765/657 +f 3533/4764/655 3527/4752/655 3532/4765/655 +f 3539/4766/672 3541/4767/672 3542/4757/672 +f 3549/4768/652 3547/4769/652 3548/4770/652 +f 3545/4771/659 3550/4772/659 3546/4773/659 +f 3544/4774/658 3548/4770/658 3543/4775/658 +f 3546/4776/655 3549/4768/655 3544/4777/655 +f 3543/4778/653 3547/4769/653 3545/4779/653 +f 3553/4780/653 3555/4781/653 3551/4782/653 +f 3558/4783/658 3553/4780/658 3554/4784/658 +f 3552/4785/655 3558/4783/655 3554/4784/655 +f 3551/4786/659 3556/4787/659 3552/4785/659 +f 3561/4788/653 3563/4789/653 3559/4790/653 +f 3566/4791/658 3561/4792/658 3562/4793/658 +f 3560/4794/655 3566/4791/655 3562/4793/655 +f 3559/4790/659 3564/4795/659 3560/4794/659 +f 3569/4796/653 3571/4797/653 3567/4798/653 +f 3574/4799/658 3569/4796/658 3570/4800/658 +f 3568/4801/655 3574/4799/655 3570/4800/655 +f 3567/4798/659 3572/4802/659 3568/4803/659 +f 3577/4804/653 3579/4805/653 3575/4806/653 +f 3582/4807/658 3577/4804/658 3578/4808/658 +f 3576/4809/655 3582/4810/655 3578/4811/655 +f 3575/4806/659 3580/4812/659 3576/4809/659 +f 3586/4813/652 3583/4814/652 3584/4815/652 +f 3587/4816/654 3590/4817/654 3588/4818/654 +f 3586/4813/653 3589/4819/653 3585/4820/653 +f 3583/4814/655 3588/4818/655 3584/4815/655 +f 3584/4815/659 3590/4821/659 3586/4813/659 +f 3585/4820/658 3587/4822/658 3583/4814/658 +f 3596/4823/672 3601/4824/672 3595/4825/672 +f 3595/4826/652 3598/4827/652 3596/4828/652 +f 3593/4829/655 3595/4826/655 3591/4830/655 +f 3594/4831/653 3596/4828/653 3598/4827/653 +f 3595/4825/655 3599/4832/655 3591/4830/655 +f 3592/4833/653 3602/4834/653 3596/4823/653 +f 3604/4835/653 3605/4836/653 3603/4837/653 +f 3606/4838/659 3609/4839/659 3605/4840/659 +f 3610/4841/655 3607/4842/655 3609/4843/655 +f 3606/4838/652 3608/4844/652 3610/4841/652 +f 3618/4845/653 3612/4846/653 3614/4847/653 +f 3611/4848/655 3617/4849/655 3613/4850/655 +f 3613/4850/652 3618/4845/652 3614/4847/652 +f 3617/4851/658 3620/4852/658 3618/4853/658 +f 3619/4854/652 3622/4855/652 3620/4852/652 +f 3618/4853/653 3622/4856/653 3616/4857/653 +f 3621/4858/655 3617/4851/655 3615/4859/655 +f 3629/4860/672 3626/4861/672 3625/4862/672 +f 3627/4863/653 3625/4862/653 3623/4864/653 +f 3630/4865/655 3624/4866/655 3626/4861/655 +f 3633/4867/655 3632/4868/655 3631/4869/655 +f 3637/4870/659 3634/4871/659 3633/4872/659 +f 3635/4873/653 3638/4874/653 3637/4875/653 +f 3636/4876/652 3634/4871/652 3638/4874/652 +f 3645/4877/652 3643/4878/652 3644/4879/652 +f 3641/4880/659 3650/4881/659 3642/4882/659 +f 3639/4883/653 3647/4884/653 3641/4885/653 +f 3642/4886/655 3649/4887/655 3640/4888/655 +f 3649/4887/652 3647/4884/652 3648/4889/652 +f 3640/4890/658 3648/4889/658 3639/4891/658 +f 3651/4892/654 3653/4893/654 3652/4894/654 +f 3645/4877/655 3654/4895/655 3646/4896/655 +f 3643/4878/653 3652/4897/653 3644/4879/653 +f 3646/4896/659 3651/4898/659 3643/4878/659 +f 3644/4879/658 3653/4893/658 3645/4877/658 +f 3624/4866/655 3874/4899/655 3626/4900/655 +f 3625/4901/653 3871/4902/653 3623/4864/653 +f 3626/4900/652 3873/4903/652 3625/4901/652 +f 3874/4904/655 3876/4905/655 3878/4906/655 +f 3873/4907/653 3875/4908/653 3871/4902/653 +f 3874/4904/658 3877/4909/658 3873/4907/658 +f 3876/4910/655 3882/4911/655 3878/4906/655 +f 3875/4912/653 3881/4913/653 3879/4914/653 +f 3878/4906/652 3881/4913/652 3877/4909/652 +f 3880/4915/659 3881/4913/659 3882/4911/659 +f 3896/4916/653 3897/4917/653 3895/4918/653 +f 3888/4919/653 3889/4920/653 3887/4921/653 +f 3886/4922/658 3888/4923/658 3884/4924/658 +f 3987/4925/653 3989/4926/653 3980/4927/653 +f 3883/4928/659 3889/4920/659 3885/4929/659 +f 3885/4929/652 3890/4930/652 3886/4922/652 +f 3894/4931/658 3896/4932/658 3892/4933/658 +f 3982/4934/655 3992/4935/655 3988/4936/655 +f 3891/4937/659 3897/4917/659 3893/4938/659 +f 3893/4938/652 3898/4939/652 3894/4931/652 +f 3912/4940/653 3913/4941/653 3911/4942/653 +f 3904/4943/653 3905/4944/653 3903/4945/653 +f 3902/4946/658 3904/4947/658 3900/4948/658 +f 4001/4949/653 4003/4950/653 3994/4951/653 +f 3899/4952/659 3905/4944/659 3901/4953/659 +f 3901/4953/652 3906/4954/652 3902/4946/652 +f 3910/4955/658 3912/4956/658 3908/4957/658 +f 3980/4958/653 3985/4959/653 3987/4960/653 +f 3907/4961/659 3913/4941/659 3909/4962/659 +f 3909/4962/652 3914/4963/652 3910/4955/652 +f 3928/4964/653 3929/4965/653 3927/4966/653 +f 3920/4967/653 3921/4968/653 3919/4969/653 +f 3918/4970/658 3920/4971/658 3916/4972/658 +f 3988/4936/656 3985/4959/656 3986/4973/656 +f 3915/4974/659 3921/4968/659 3917/4975/659 +f 3917/4975/652 3922/4976/652 3918/4970/652 +f 3926/4977/658 3928/4978/658 3924/4979/658 +f 3982/4980/655 3988/4981/655 3986/4973/655 +f 3923/4982/659 3929/4965/659 3925/4983/659 +f 3925/4983/652 3930/4984/652 3926/4977/652 +f 3934/4985/658 3936/4986/658 3932/4987/658 +f 4007/4988/653 4013/4989/653 4008/4990/653 +f 3931/4991/659 3937/4992/659 3933/4993/659 +f 3933/4993/652 3938/4994/652 3934/4985/652 +f 3942/4995/658 3944/4996/658 3940/4997/658 +f 3982/4980/655 3983/4998/655 3981/4999/655 +f 3939/5000/659 3945/5001/659 3941/5002/659 +f 3941/5002/652 3946/5003/652 3942/4995/652 +f 3950/5004/658 3952/5005/658 3948/5006/658 +f 3980/4927/654 3990/5007/654 3982/5008/654 +f 3947/5009/659 3953/5010/659 3949/5011/659 +f 3949/5011/652 3954/5012/652 3950/5004/652 +f 3958/5013/658 3960/5014/658 3956/5015/658 +f 3979/5016/653 3985/4959/653 3980/4958/653 +f 3955/5017/659 3961/5018/659 3957/5019/659 +f 3957/5019/652 3962/5020/652 3958/5013/652 +f 3966/5021/658 3968/5022/658 3964/5023/658 +f 3983/4998/658 3985/4959/658 3984/5024/658 +f 3963/5025/659 3969/5026/659 3965/5027/659 +f 3965/5027/652 3970/5028/652 3966/5021/652 +f 3974/5029/658 3976/5030/658 3972/5031/658 +f 3980/4958/659 3981/5032/659 3979/5016/659 +f 3971/5033/659 3977/5034/659 3973/5035/659 +f 3973/5035/652 3978/5036/652 3974/5029/652 +f 3971/5037/655 3974/5029/655 3972/5038/655 +f 3963/5039/655 3966/5021/655 3964/5040/655 +f 3955/5041/655 3958/5013/655 3956/5042/655 +f 3947/5043/655 3950/5004/655 3948/5044/655 +f 3939/5045/655 3942/4995/655 3940/5046/655 +f 3931/5047/655 3934/4985/655 3932/5048/655 +f 3988/4936/652 3991/5049/652 3987/4925/652 +f 3996/5050/655 4006/5051/655 4002/5052/655 +f 3994/5053/653 3999/5054/653 4001/5055/653 +f 4002/5052/656 3999/5054/656 4000/5056/656 +f 3996/5057/655 4002/5058/655 4000/5056/655 +f 4010/5059/655 4011/5060/655 4009/5061/655 +f 3996/5057/655 3997/5062/655 3995/5063/655 +f 3994/4951/654 4004/5064/654 3996/5065/654 +f 3993/5066/653 3999/5054/653 3994/5053/653 +f 3997/5062/658 3999/5054/658 3998/5067/658 +f 3994/5053/659 3995/5068/659 3993/5066/659 +f 4002/5052/652 4005/5069/652 4001/4949/652 +f 4011/5060/658 4013/4989/658 4012/5070/658 +f 4008/4990/659 4009/5071/659 4007/4988/659 +f 4018/5072/655 4019/5073/655 4017/5074/655 +f 4015/5075/653 4021/5076/653 4016/5077/653 +f 4019/5073/658 4021/5076/658 4020/5078/658 +f 4016/5077/659 4017/5079/659 4015/5075/659 +f 3159/4537/658 3158/5080/658 3160/4538/658 +f 3155/5081/658 3163/4546/658 3157/4536/658 +f 3135/4506/659 3142/5082/659 3133/5083/659 +f 3136/5084/659 3137/4509/659 3138/4505/659 +f 4027/5085/658 4026/5086/658 4023/5087/658 +f 4025/5088/659 4028/5089/659 4024/5090/659 +f 4026/5086/653 4029/5091/653 4025/5092/653 +f 4024/5090/655 4027/5085/655 4023/5087/655 +f 4035/5093/658 4034/5094/658 4031/5095/658 +f 4033/5096/659 4036/5097/659 4032/5098/659 +f 4034/5094/653 4037/5099/653 4033/5096/653 +f 4032/5100/655 4035/5093/655 4031/5095/655 +f 4036/5101/670 4041/5102/670 4035/5103/670 +f 4030/5104/671 4039/5105/671 4029/5106/671 +f 4040/5107/654 4042/5108/654 4039/5109/654 +f 4040/5107/658 4045/5110/658 4041/5111/658 +f 4042/5112/659 4043/5113/659 4039/5114/659 +f 4045/5110/652 4043/5113/652 4046/5115/652 +f 4041/5111/658 4038/5116/658 4035/5117/658 +f 4045/5110/660 4037/5099/660 4038/5118/660 +f 4046/5115/659 4036/5119/659 4037/5120/659 +f 4044/5121/658 4030/5122/658 4027/5123/658 +f 4028/5089/661 4044/5121/661 4027/5085/661 +f 4039/5114/659 4028/5124/659 4029/5125/659 +f 4063/5126/658 4067/5127/658 4071/5128/658 +f 4057/5129/659 4053/5130/659 4049/5131/659 +f 4081/5132/653 4080/5133/653 4079/5134/653 +f 4087/5135/663 4086/5136/663 4083/5137/663 +f 4086/5138/654 4080/5133/654 4082/5139/654 +f 4084/5140/652 4081/5141/652 4079/5134/652 +f 4083/5142/659 4082/5143/659 4081/5141/659 +f 4085/5144/658 4079/5134/658 4080/5133/658 +f 4089/5145/653 4088/5146/653 4087/5147/653 +f 4094/5148/654 4088/5149/654 4090/5150/654 +f 4091/5151/652 4089/5145/652 4087/5147/652 +f 4091/5151/655 4094/5148/655 4093/5152/655 +f 4092/5153/662 4084/5140/662 4085/5144/662 +f 4086/5154/654 4092/5153/654 4085/5144/654 +f 4084/5140/652 4087/5135/652 4083/5137/652 +f 4097/5155/655 4096/5156/655 4095/5157/655 +f 4101/5158/659 4098/5159/659 4097/5160/659 +f 4099/5161/653 4102/5162/653 4101/5158/653 +f 4095/5157/658 4100/5163/658 4099/5161/658 +f 4110/5164/654 4098/5165/654 4102/5166/654 +f 4114/5167/653 4102/5166/653 4106/5168/653 +f 4098/5169/655 4105/5170/655 4096/5171/655 +f 4096/5156/656 4106/5168/656 4100/5163/656 +f 4102/5166/653 4100/5172/653 4106/5168/653 +f 4097/5173/655 4095/5174/655 4103/5175/655 +f 4099/5161/657 4103/5175/657 4095/5157/657 +f 4101/5176/653 4104/5177/653 4099/5178/653 +f 4107/5179/653 4104/5177/653 4101/5176/653 +f 4111/5180/654 4103/5175/654 4104/5177/654 +f 4109/5181/655 4105/5170/655 4098/5169/655 +f 4113/5182/652 4106/5168/652 4105/5170/652 +f 4108/5183/652 4101/5176/652 4097/5184/652 +f 4112/5185/655 4097/5173/655 4103/5175/655 +f 4117/5186/658 4122/5187/658 4121/5188/658 +f 4116/5189/655 4117/5186/655 4115/5190/655 +f 4115/5190/659 4120/5191/659 4116/5192/659 +f 4117/5186/654 4119/5193/654 4115/5190/654 +f 4125/5194/658 4130/5195/658 4129/5196/658 +f 4124/5197/655 4125/5194/655 4123/5198/655 +f 4123/5198/659 4128/5199/659 4124/5200/659 +f 4125/5194/654 4127/5201/654 4123/5198/654 +f 4133/5202/659 4138/5203/659 4137/5204/659 +f 4132/5205/655 4133/5202/655 4131/5206/655 +f 4131/5206/658 4136/5207/658 4132/5208/658 +f 4133/5202/652 4135/5209/652 4131/5206/652 +f 4141/5210/659 4146/5211/659 4145/5212/659 +f 4140/5213/655 4141/5210/655 4139/5214/655 +f 4139/5214/658 4144/5215/658 4140/5216/658 +f 4141/5210/652 4143/5217/652 4139/5214/652 +f 4149/5218/658 4154/5219/658 4153/5220/658 +f 4148/5221/653 4149/5218/653 4147/5222/653 +f 4147/5222/659 4152/5223/659 4148/5224/659 +f 4149/5218/652 4151/5225/652 4147/5222/652 +f 4157/5226/658 4162/5227/658 4161/5228/658 +f 4156/5229/653 4157/5226/653 4155/5230/653 +f 4155/5230/659 4160/5231/659 4156/5232/659 +f 4157/5226/652 4159/5233/652 4155/5230/652 +f 4165/5234/659 4170/5235/659 4169/5236/659 +f 4164/5237/654 4165/5234/654 4163/5238/654 +f 4163/5238/658 4168/5239/658 4164/5240/658 +f 4165/5234/655 4167/5241/655 4163/5238/655 +f 4173/5242/659 4178/5243/659 4177/5244/659 +f 4172/5245/654 4173/5242/654 4171/5246/654 +f 4171/5246/658 4176/5247/658 4172/5248/658 +f 4173/5242/655 4175/5249/655 4171/5246/655 +f 4182/5250/658 4185/5251/658 4181/5252/658 +f 4180/5253/652 4181/5252/652 4179/5254/652 +f 4179/5254/659 4184/5255/659 4180/5256/659 +f 4181/5252/655 4183/5257/655 4179/5254/655 +f 4190/5258/658 4193/5259/658 4189/5260/658 +f 4188/5261/652 4189/5260/652 4187/5262/652 +f 4187/5262/659 4192/5263/659 4188/5264/659 +f 4189/5260/655 4191/5265/655 4187/5262/655 +f 4197/5266/659 4202/5267/659 4201/5268/659 +f 4196/5269/652 4197/5266/652 4195/5270/652 +f 4195/5270/658 4200/5271/658 4196/5272/658 +f 4197/5266/653 4199/5273/653 4195/5270/653 +f 4205/5274/659 4210/5275/659 4209/5276/659 +f 4204/5277/652 4205/5274/652 4203/5278/652 +f 4203/5278/658 4208/5279/658 4204/5280/658 +f 4205/5274/653 4207/5281/653 4203/5278/653 +f 4214/5282/658 4217/5283/658 4213/5284/658 +f 4212/5285/654 4213/5284/654 4211/5286/654 +f 4211/5286/659 4216/5287/659 4212/5288/659 +f 4213/5284/653 4215/5289/653 4211/5286/653 +f 4222/5290/658 4225/5291/658 4221/5292/658 +f 4220/5293/654 4221/5292/654 4219/5294/654 +f 4219/5294/659 4224/5295/659 4220/5296/659 +f 4221/5292/653 4223/5297/653 4219/5294/653 +f 4233/5298/658 4234/5299/658 4227/5300/658 +f 4249/5301/658 4250/5302/658 4243/5303/658 +f 4265/5304/658 4266/5305/658 4259/5306/658 +f 3615/4859/659 3622/5307/659 3621/4858/659 +f 2949/4260/652 2946/4277/652 2945/4261/652 +f 2950/4262/653 2945/4261/653 2947/4263/653 +f 2956/4265/654 2947/5308/654 2948/4266/654 +f 2951/4270/656 2949/4260/656 2950/4262/656 +f 2957/4274/657 2952/4278/657 2953/4275/657 +f 2955/4267/655 2948/4266/655 2946/4277/655 +f 2956/4272/653 2958/5309/653 2953/4275/653 +f 2955/4268/655 2951/4270/655 2952/4278/655 +f 2952/4278/658 2951/4270/658 2954/4271/658 +f 2956/4280/659 2955/4268/659 2957/4279/659 +f 2961/4285/660 2964/5310/660 2962/4286/660 +f 2960/4282/655 2963/4289/655 2964/4288/655 +f 2959/4287/654 2962/4286/654 2963/4289/654 +f 2965/4290/654 2967/5311/654 2968/4291/654 +f 2965/4293/653 2969/4298/653 2970/4294/653 +f 2968/4291/661 2970/5312/661 2969/4296/661 +f 2964/4288/658 2970/4294/658 2968/4299/658 +f 2978/4301/662 2986/5313/662 2984/4302/662 +f 2985/4304/658 2986/4408/658 2978/4305/658 +f 2981/4307/663 2979/4319/663 2971/4308/663 +f 2974/4310/659 2982/4323/659 2981/4311/659 +f 2983/4313/664 2985/5314/664 2977/4314/664 +f 2984/4302/655 2980/4317/655 2972/4316/655 +f 2980/4317/665 2982/5315/665 2974/4318/665 +f 2979/4319/653 2983/4313/653 2975/4315/653 +f 2974/4320/654 2973/5316/654 2962/4286/654 +f 2962/4286/654 2973/5316/654 2971/4321/654 +f 2968/4291/654 2967/5311/654 2972/4322/654 +f 2964/4288/652 2981/4311/652 2982/4323/652 +f 2999/4326/659 2998/4368/659 3013/4327/659 +f 2991/4331/658 2993/4335/658 2992/4332/658 +f 2990/4330/655 3011/4367/655 3013/4333/655 +f 3009/4337/653 3010/5317/653 3005/4338/653 +f 3003/4343/659 3002/4346/659 3001/4341/659 +f 3011/4344/652 3007/5318/652 3008/4328/652 +f 2993/4335/660 3002/4346/660 3004/4347/660 +f 3043/4349/658 3044/4420/658 3036/4350/658 +f 2989/4329/653 2997/5319/653 2998/4352/653 +f 2991/4331/652 3001/4341/652 3002/4346/652 +f 2990/4354/661 3000/5320/661 3001/4341/661 +f 2995/4355/655 3006/5321/655 3003/4356/655 +f 3036/4357/662 3044/5322/662 3042/4358/662 +f 2992/4360/654 3003/4343/654 2997/4340/654 +f 2988/4362/655 2999/5323/655 3008/4363/655 +f 3004/4365/653 3014/5324/653 3012/4366/653 +f 2988/4362/658 3007/4364/658 3011/4367/658 +f 3011/4367/658 2990/4330/658 2989/4329/658 +f 2997/4340/659 3000/4342/659 3013/4327/659 +f 3014/4369/659 3004/4345/659 3003/4343/659 +f 2992/4332/658 2996/4336/658 3012/4366/658 +f 3014/4369/659 3006/4370/659 3005/4371/659 +f 2994/4339/658 2995/4355/658 3012/4366/658 +f 3010/4372/652 3009/5325/652 3012/4373/652 +f 2963/4289/655 3015/4425/655 3016/4374/655 +f 3022/4390/659 3017/4377/659 3018/4379/659 +f 3018/4379/659 3019/4382/659 3021/4381/659 +f 3021/4381/659 3023/4387/659 3025/4385/659 +f 3025/4385/659 3024/4391/659 3022/4390/659 +f 3022/4390/659 3018/4379/659 3025/4385/659 +f 3026/4386/653 3020/5326/653 2967/4295/653 +f 3016/4375/655 3017/4377/655 3022/4390/655 +f 3026/4384/653 3028/5327/653 3023/4387/653 +f 3025/4385/652 3028/5328/652 3027/4393/652 +f 3039/4394/663 3037/4406/663 3029/4395/663 +f 3032/4397/659 3040/4407/659 3039/4398/659 +f 3041/4400/664 3043/5329/664 3035/4401/664 +f 3042/4358/655 3038/4404/655 3030/4403/655 +f 3038/4404/665 3040/5330/665 3032/4405/665 +f 3037/4406/653 3041/4400/653 3033/4402/653 +f 2985/4304/652 3039/4398/652 3040/4407/652 +f 3032/4409/654 3031/5331/654 2977/4410/654 +f 3037/4412/652 3039/4398/652 2985/4304/652 +f 2977/4410/654 3031/5331/654 3029/4414/654 +f 2976/4416/654 3030/4428/654 3032/4409/654 +f 3040/4407/652 3038/4429/652 2984/4417/652 +f 3028/4418/658 3026/4386/658 3016/4374/658 +f 3043/4349/652 3016/4374/652 3026/4386/652 +f 3018/4379/654 3035/4426/654 3036/4423/654 +f 3036/4423/654 3034/4427/654 3020/4424/654 +f 3015/4425/654 3033/5332/654 3035/4426/654 +f 2971/4321/654 2975/4415/654 2963/4289/654 +f 2975/4415/654 3029/4414/654 3015/4425/654 +f 3029/4414/654 3033/5332/654 3015/4425/654 +f 2983/4413/652 2979/4325/652 2964/4288/652 +f 2964/4288/652 3016/4374/652 3037/4412/652 +f 3016/4374/652 3041/4422/652 3037/4412/652 +f 3030/4428/654 2976/4416/654 3020/4424/654 +f 2976/4416/654 2972/4322/654 2967/5311/654 +f 3020/4424/654 2976/4416/654 2967/5311/654 +f 2970/4294/652 2980/4324/652 2984/4417/652 +f 3038/4429/652 3042/4421/652 3026/4386/652 +f 2970/4294/652 2984/4417/652 3038/4429/652 +f 3049/4430/658 3052/5333/658 3048/4431/658 +f 3047/4433/659 3051/5334/659 3050/4434/659 +f 3048/4431/653 3052/5333/653 3051/4436/653 +f 3046/4435/655 3050/4434/655 3049/4430/655 +f 3057/4438/658 3060/4463/658 3056/4439/658 +f 3055/4441/659 3059/4444/659 3058/4442/659 +f 3056/4439/653 3060/4463/653 3059/4444/653 +f 3054/4445/655 3058/5335/655 3057/4438/655 +f 3058/4446/670 3064/5336/670 3063/4447/670 +f 3052/4449/671 3062/5337/671 3061/4450/671 +f 3062/4452/654 3063/4456/654 3064/4453/654 +f 3062/4452/658 3066/4466/658 3067/4455/658 +f 3064/4457/659 3068/4460/659 3065/4458/659 +f 3067/4455/652 3066/4466/652 3065/4458/652 +f 3063/4456/658 3067/4455/658 3060/4461/658 +f 3067/4455/660 3068/4460/660 3059/4444/660 +f 3068/4460/659 3064/4457/659 3058/4464/659 +f 3066/4466/658 3062/4452/658 3052/4467/658 +f 3050/4434/661 3065/4458/661 3066/4466/661 +f 3061/4459/659 3065/4458/659 3050/4469/659 +f 3069/4473/658 3070/5338/658 3071/5339/658 +f 3071/5339/658 3072/5340/658 3069/4473/658 +f 3072/5340/658 3073/5341/658 3069/4473/658 +f 3073/5341/658 3074/5342/658 3069/4473/658 +f 3074/5342/658 3075/4471/658 3069/4473/658 +f 3101/4474/658 3102/5343/658 3103/5344/658 +f 3103/5344/658 3104/5345/658 3101/4474/658 +f 3104/5345/658 3105/4475/658 3101/4474/658 +f 3105/4475/658 3106/5346/658 3107/5347/658 +f 3107/5347/658 3108/5348/658 3105/4475/658 +f 3108/5348/658 3109/4476/658 3105/4475/658 +f 3109/4476/658 3110/5349/658 3111/5350/658 +f 3111/5350/658 3112/5351/658 3113/5352/658 +f 3113/5352/658 3114/5353/658 3101/4474/658 +f 3114/5353/658 3115/5354/658 3101/4474/658 +f 3115/5354/658 3116/5355/658 3101/4474/658 +f 3109/4476/658 3111/5350/658 3101/4474/658 +f 3111/5350/658 3113/5352/658 3101/4474/658 +f 3087/4479/659 3086/5356/659 3085/5357/659 +f 3085/5357/659 3100/5358/659 3099/5359/659 +f 3099/5359/659 3098/5360/659 3095/4477/659 +f 3098/5360/659 3097/5361/659 3095/4477/659 +f 3097/5361/659 3096/5362/659 3095/4477/659 +f 3095/4477/659 3094/5363/659 3093/5364/659 +f 3093/5364/659 3092/5365/659 3095/4477/659 +f 3092/5365/659 3091/4478/659 3095/4477/659 +f 3091/4478/659 3090/5366/659 3089/5367/659 +f 3089/5367/659 3088/5368/659 3091/4478/659 +f 3088/5368/659 3087/4479/659 3091/4478/659 +f 3087/4479/659 3085/5357/659 3095/4477/659 +f 3085/5357/659 3099/5359/659 3095/4477/659 +f 3119/4483/670 3122/4486/670 3120/4484/670 +f 3118/4480/653 3121/4487/653 3122/4486/653 +f 3117/4482/652 3120/4501/652 3121/4487/652 +f 3123/4488/652 3125/4492/652 3126/4489/652 +f 3123/4488/655 3127/4494/655 3128/4491/655 +f 3126/4493/671 3128/4491/671 3127/4494/671 +f 3126/4489/658 3129/4503/658 3130/4497/658 +f 3122/4499/658 3132/5369/658 3131/4500/658 +f 3126/4489/660 3137/4509/660 3139/4502/660 +f 3120/4501/652 3135/4506/652 3134/4504/652 +f 3128/4491/655 3136/4511/655 3138/4505/655 +f 3131/4500/661 3141/5370/661 3135/4506/661 +f 3122/4486/671 3133/4512/671 3142/4507/671 +f 3125/4492/652 3138/4505/652 3137/4509/652 +f 3130/4510/670 3140/5371/670 3136/4511/670 +f 3121/4487/653 3134/4504/653 3133/4512/653 +f 3139/4502/659 3137/4509/659 3136/4513/659 +f 3145/4516/670 3148/4520/670 3146/4517/670 +f 3144/4519/653 3147/4522/653 3148/4520/653 +f 3143/4521/652 3146/5372/652 3147/4522/652 +f 3149/4523/652 3151/4527/652 3152/4524/652 +f 3149/4523/655 3153/4529/655 3154/4526/655 +f 3152/4528/671 3154/4526/671 3153/4529/671 +f 3158/4531/658 3159/4537/658 3161/4532/658 +f 3159/4537/652 3160/4538/652 3149/4523/652 +f 3160/4538/655 3158/4543/655 3153/4529/655 +f 3156/4534/652 3157/4536/652 3143/4521/652 +f 3155/4539/653 3156/4534/653 3144/4519/653 +f 3159/4537/660 3150/4525/660 3165/4540/660 +f 3153/4541/659 3166/5373/659 3165/4540/659 +f 3166/4542/670 3153/4529/670 3158/4543/670 +f 3167/4545/661 3143/4521/661 3157/4536/661 +f 3167/4545/659 3168/5374/659 3145/4547/659 +f 3155/4539/671 3145/4516/671 3168/4548/671 +f 3367/4550/659 3368/4556/659 3366/4551/659 +f 3371/4553/658 3372/4564/658 3369/4554/658 +f 3368/4556/655 3372/4564/655 3371/4553/655 +f 3367/4557/653 3365/5375/653 3370/4555/653 +f 3368/4558/655 3375/4568/655 3377/4559/655 +f 3366/4561/657 3371/4553/657 3370/4555/657 +f 3372/4564/656 3374/4560/656 3373/4565/656 +f 3367/4567/654 3376/5376/654 3375/4568/654 +f 3373/4565/653 3378/4571/653 3376/4569/653 +f 3374/4560/652 3377/4559/652 3378/4571/652 +f 3382/4572/652 3386/4578/652 3385/4573/652 +f 3379/4575/654 3383/5377/654 3384/4576/654 +f 3380/4577/655 3384/4576/655 3386/4578/655 +f 3381/4574/653 3385/4573/653 3383/4579/653 +f 3390/4581/652 3394/4587/652 3393/4582/652 +f 3387/4584/654 3391/5378/654 3392/4585/654 +f 3388/4586/655 3392/4585/655 3394/4587/655 +f 3389/4583/653 3393/4582/653 3391/4588/653 +f 3401/4590/652 3402/4596/652 3398/4591/652 +f 3400/4593/654 3399/5379/654 3395/4594/654 +f 3402/4596/655 3400/4593/655 3396/4595/655 +f 3399/4597/653 3401/4590/653 3397/4592/653 +f 3409/4599/652 3410/4605/652 3406/4600/652 +f 3408/4602/654 3407/5380/654 3403/4603/654 +f 3410/4605/655 3408/4602/655 3404/4604/655 +f 3407/4606/653 3409/4599/653 3405/4601/653 +f 3417/4608/652 3418/4614/652 3414/4609/652 +f 3416/4611/654 3415/5381/654 3411/4612/654 +f 3418/4614/655 3416/4611/655 3412/4613/655 +f 3415/4615/653 3417/4608/653 3413/4610/653 +f 3425/4617/652 3426/4623/652 3422/4618/652 +f 3424/4620/654 3423/5382/654 3419/4621/654 +f 3426/4623/655 3424/4620/655 3420/4622/655 +f 3423/4624/653 3425/4617/653 3421/4619/653 +f 3433/4626/652 3434/4632/652 3430/4627/652 +f 3432/4629/654 3431/5383/654 3427/4630/654 +f 3434/4632/655 3432/4629/655 3428/4631/655 +f 3431/4633/653 3433/4626/653 3429/4628/653 +f 3441/4635/652 3442/4641/652 3438/4636/652 +f 3440/4638/654 3439/5384/654 3435/4639/654 +f 3442/4641/655 3440/4638/655 3436/4640/655 +f 3439/4642/653 3441/4635/653 3437/4637/653 +f 3449/4644/652 3450/4650/652 3446/4645/652 +f 3448/4647/654 3447/5385/654 3443/4648/654 +f 3450/4650/655 3448/4647/655 3444/4649/655 +f 3447/4651/653 3449/4644/653 3445/4646/653 +f 3457/4653/652 3458/4659/652 3454/4654/652 +f 3456/4656/654 3455/5386/654 3451/4657/654 +f 3458/4659/655 3456/4656/655 3452/4658/655 +f 3455/4660/653 3457/4653/653 3453/4655/653 +f 3465/4662/652 3466/4668/652 3462/4663/652 +f 3464/4665/654 3463/5387/654 3459/4666/654 +f 3466/4668/655 3464/4665/655 3460/4667/655 +f 3463/4669/653 3465/4662/653 3461/4664/653 +f 3473/4671/652 3474/4677/652 3470/4672/652 +f 3472/4674/654 3471/5388/654 3467/4675/654 +f 3474/4677/655 3472/4674/655 3468/4676/655 +f 3471/4678/653 3473/4671/653 3469/4673/653 +f 3476/4680/655 3478/5389/655 3477/4681/655 +f 3482/4683/665 3484/5390/665 3483/4684/665 +f 3476/4680/654 3481/4692/654 3482/4686/654 +f 3477/4688/652 3479/4691/652 3480/4689/652 +f 3478/4690/659 3482/5391/659 3479/4691/659 +f 3475/4682/658 3480/4689/658 3481/4692/658 +f 3484/4693/655 3486/5392/655 3485/4694/655 +f 3484/4696/654 3488/4701/654 3490/4697/654 +f 3485/4694/652 3489/4700/652 3487/4699/652 +f 3490/4697/653 3488/4701/653 3487/4699/653 +f 3480/4689/664 3487/4699/664 3488/4701/664 +f 3488/4701/654 3484/5393/654 3482/4702/654 +f 3483/4684/652 3487/4699/652 3480/4689/652 +f 3492/4703/653 3494/5394/653 3493/4704/653 +f 3494/4706/659 3498/4709/659 3497/4707/659 +f 3498/4709/655 3496/4711/655 3495/4710/655 +f 3496/4711/658 3492/4703/658 3491/4705/658 +f 3494/4712/654 3505/5395/654 3506/4713/654 +f 3498/4714/655 3506/4713/655 3510/4715/655 +f 3502/4716/656 3501/4719/656 3492/4703/656 +f 3499/4722/657 3500/4726/657 3495/4710/657 +f 3500/4726/655 3507/4728/655 3503/4727/655 +f 3499/4722/654 3508/4733/654 3507/4728/654 +f 3501/4719/653 3509/4730/653 3505/4729/653 +f 3502/4716/652 3510/4715/652 3509/4730/652 +f 3497/4724/652 3503/4727/652 3504/4731/652 +f 3493/4721/653 3504/5396/653 3508/4733/653 +f 3513/4734/659 3514/5397/659 3518/4735/659 +f 3512/4737/653 3514/5398/653 3513/4734/653 +f 3511/4738/658 3515/4741/658 3516/4739/658 +f 3513/4734/654 3517/4736/654 3515/4741/654 +f 3521/4742/659 3522/5399/659 3526/4743/659 +f 3520/4745/653 3522/5400/653 3521/4742/653 +f 3519/4746/658 3523/4749/658 3524/4747/658 +f 3521/4742/654 3525/4744/654 3523/4749/654 +f 3530/4750/672 3529/4754/672 3528/4751/672 +f 3531/4753/653 3528/4751/653 3529/4754/653 +f 3536/4756/655 3539/4766/655 3542/4757/655 +f 3538/4759/657 3535/5401/657 3536/4756/657 +f 3538/4760/653 3541/4767/653 3540/4761/653 +f 3531/4763/657 3534/5402/657 3533/4764/657 +f 3533/4764/655 3530/4750/655 3527/4752/655 +f 3539/4766/672 3540/4761/672 3541/4767/672 +f 3549/4768/652 3550/4772/652 3547/4769/652 +f 3545/4771/659 3547/4769/659 3550/4772/659 +f 3544/4774/658 3549/4768/658 3548/4770/658 +f 3546/4776/655 3550/4772/655 3549/4768/655 +f 3543/4778/653 3548/4770/653 3547/4769/653 +f 3553/4780/653 3557/5403/653 3555/4781/653 +f 3558/4783/658 3557/5403/658 3553/4780/658 +f 3552/4785/655 3556/4787/655 3558/4783/655 +f 3551/4786/659 3555/5404/659 3556/4787/659 +f 3561/4788/653 3565/5405/653 3563/4789/653 +f 3566/4791/658 3565/5406/658 3561/4792/658 +f 3560/4794/655 3564/4795/655 3566/4791/655 +f 3559/4790/659 3563/4789/659 3564/4795/659 +f 3569/4796/653 3573/5407/653 3571/4797/653 +f 3574/4799/658 3573/5407/658 3569/4796/658 +f 3568/4801/655 3572/5408/655 3574/4799/655 +f 3567/4798/659 3571/4797/659 3572/4802/659 +f 3577/4804/653 3581/5409/653 3579/4805/653 +f 3582/4807/658 3581/5409/658 3577/4804/658 +f 3576/4809/655 3580/4812/655 3582/4810/655 +f 3575/4806/659 3579/4805/659 3580/4812/659 +f 3586/4813/652 3585/4820/652 3583/4814/652 +f 3587/4816/654 3589/5410/654 3590/4817/654 +f 3586/4813/653 3590/5411/653 3589/4819/653 +f 3583/4814/655 3587/4816/655 3588/4818/655 +f 3584/4815/659 3588/5412/659 3590/4821/659 +f 3585/4820/658 3589/5413/658 3587/4822/658 +f 3596/4823/672 3602/4834/672 3601/4824/672 +f 3595/4826/652 3597/5414/652 3598/4827/652 +f 3593/4829/655 3597/5414/655 3595/4826/655 +f 3594/4831/653 3592/4833/653 3596/4828/653 +f 3595/4825/655 3601/4824/655 3599/4832/655 +f 3592/4833/653 3600/5415/653 3602/4834/653 +f 3604/4835/653 3606/4838/653 3605/4836/653 +f 3606/4838/659 3610/4841/659 3609/4839/659 +f 3610/4841/655 3608/4844/655 3607/4842/655 +f 3606/4838/652 3604/4835/652 3608/4844/652 +f 3618/4845/653 3616/4857/653 3612/4846/653 +f 3611/4848/655 3615/4859/655 3617/4849/655 +f 3613/4850/652 3617/4849/652 3618/4845/652 +f 3617/4851/658 3619/4854/658 3620/4852/658 +f 3619/4854/652 3621/5416/652 3622/4855/652 +f 3618/4853/653 3620/4852/653 3622/4856/653 +f 3621/4858/655 3619/4854/655 3617/4851/655 +f 3629/4860/672 3630/4865/672 3626/4861/672 +f 3627/4863/653 3629/4860/653 3625/4862/653 +f 3630/4865/655 3628/5417/655 3624/4866/655 +f 3633/4867/655 3634/4871/655 3632/4868/655 +f 3637/4870/659 3638/4874/659 3634/4871/659 +f 3635/4873/653 3636/4876/653 3638/4874/653 +f 3636/4876/652 3632/4868/652 3634/4871/652 +f 3645/4877/652 3646/4896/652 3643/4878/652 +f 3641/4880/659 3647/4884/659 3650/4881/659 +f 3639/4883/653 3648/4889/653 3647/4884/653 +f 3642/4886/655 3650/4881/655 3649/4887/655 +f 3649/4887/652 3650/4881/652 3647/4884/652 +f 3640/4890/658 3649/4887/658 3648/4889/658 +f 3651/4892/654 3654/5418/654 3653/4893/654 +f 3645/4877/655 3653/5419/655 3654/4895/655 +f 3643/4878/653 3651/5420/653 3652/4897/653 +f 3646/4896/659 3654/5421/659 3651/4898/659 +f 3644/4879/658 3652/4894/658 3653/4893/658 +f 3624/4866/655 3872/5422/655 3874/4899/655 +f 3625/4901/653 3873/4903/653 3871/4902/653 +f 3626/4900/652 3874/4899/652 3873/4903/652 +f 3874/4904/655 3872/5422/655 3876/4905/655 +f 3873/4907/653 3877/4909/653 3875/4908/653 +f 3874/4904/658 3878/4906/658 3877/4909/658 +f 3876/4910/655 3880/5423/655 3882/4911/655 +f 3875/4912/653 3877/4909/653 3881/4913/653 +f 3878/4906/652 3882/4911/652 3881/4913/652 +f 3880/4915/659 3879/5424/659 3881/4913/659 +f 3896/4916/653 3898/4939/653 3897/4917/653 +f 3888/4919/653 3890/4930/653 3889/4920/653 +f 3886/4922/658 3890/4930/658 3888/4923/658 +f 3987/4925/653 3991/5049/653 3989/4926/653 +f 3883/4928/659 3887/5425/659 3889/4920/659 +f 3885/4929/652 3889/4920/652 3890/4930/652 +f 3894/4931/658 3898/4939/658 3896/4932/658 +f 3982/4934/655 3990/5426/655 3992/4935/655 +f 3891/4937/659 3895/5427/659 3897/4917/659 +f 3893/4938/652 3897/4917/652 3898/4939/652 +f 3912/4940/653 3914/4963/653 3913/4941/653 +f 3904/4943/653 3906/4954/653 3905/4944/653 +f 3902/4946/658 3906/4954/658 3904/4947/658 +f 4001/4949/653 4005/5069/653 4003/4950/653 +f 3899/4952/659 3903/5428/659 3905/4944/659 +f 3901/4953/652 3905/4944/652 3906/4954/652 +f 3910/4955/658 3914/4963/658 3912/4956/658 +f 3907/4961/659 3911/5429/659 3913/4941/659 +f 3909/4962/652 3913/4941/652 3914/4963/652 +f 3928/4964/653 3930/4984/653 3929/4965/653 +f 3920/4967/653 3922/4976/653 3921/4968/653 +f 3918/4970/658 3922/4976/658 3920/4971/658 +f 3988/4936/656 3987/4925/656 3985/4959/656 +f 3915/4974/659 3919/5430/659 3921/4968/659 +f 3917/4975/652 3921/4968/652 3922/4976/652 +f 3926/4977/658 3930/4984/658 3928/4978/658 +f 3923/4982/659 3927/5431/659 3929/4965/659 +f 3925/4983/652 3929/4965/652 3930/4984/652 +f 3934/4985/658 3938/4994/658 3936/4986/658 +f 4007/4988/653 4012/5070/653 4013/4989/653 +f 3931/4991/659 3935/5432/659 3937/4992/659 +f 3933/4993/652 3937/4992/652 3938/4994/652 +f 3942/4995/658 3946/5003/658 3944/4996/658 +f 3982/4980/655 3986/4973/655 3983/4998/655 +f 3939/5000/659 3943/5433/659 3945/5001/659 +f 3941/5002/652 3945/5001/652 3946/5003/652 +f 3950/5004/658 3954/5012/658 3952/5005/658 +f 3980/4927/654 3989/4926/654 3990/5007/654 +f 3947/5009/659 3951/5434/659 3953/5010/659 +f 3949/5011/652 3953/5010/652 3954/5012/652 +f 3958/5013/658 3962/5020/658 3960/5014/658 +f 3979/5016/653 3984/5024/653 3985/4959/653 +f 3955/5017/659 3959/5435/659 3961/5018/659 +f 3957/5019/652 3961/5018/652 3962/5020/652 +f 3966/5021/658 3970/5028/658 3968/5022/658 +f 3983/4998/658 3986/4973/658 3985/4959/658 +f 3963/5025/659 3967/5436/659 3969/5026/659 +f 3965/5027/652 3969/5026/652 3970/5028/652 +f 3974/5029/658 3978/5036/658 3976/5030/658 +f 3980/4958/659 3982/5437/659 3981/5032/659 +f 3971/5033/659 3975/5438/659 3977/5034/659 +f 3973/5035/652 3977/5034/652 3978/5036/652 +f 3971/5037/655 3973/5035/655 3974/5029/655 +f 3963/5039/655 3965/5027/655 3966/5021/655 +f 3955/5041/655 3957/5019/655 3958/5013/655 +f 3947/5043/655 3949/5011/655 3950/5004/655 +f 3939/5045/655 3941/5002/655 3942/4995/655 +f 3931/5047/655 3933/4993/655 3934/4985/655 +f 3988/4936/652 3992/4935/652 3991/5049/652 +f 3996/5050/655 4004/5439/655 4006/5051/655 +f 4002/5052/656 4001/4949/656 3999/5054/656 +f 4010/5059/655 4014/5440/655 4011/5060/655 +f 3996/5057/655 4000/5056/655 3997/5062/655 +f 3994/4951/654 4003/4950/654 4004/5064/654 +f 3993/5066/653 3998/5067/653 3999/5054/653 +f 3997/5062/658 4000/5056/658 3999/5054/658 +f 3994/5053/659 3996/5441/659 3995/5068/659 +f 4002/5052/652 4006/5051/652 4005/5069/652 +f 4011/5060/658 4014/5440/658 4013/4989/658 +f 4008/4990/659 4010/5442/659 4009/5071/659 +f 4018/5072/655 4022/5443/655 4019/5073/655 +f 4015/5075/653 4020/5078/653 4021/5076/653 +f 4019/5073/658 4022/5443/658 4021/5076/658 +f 4016/5077/659 4018/5444/659 4017/5079/659 +f 3155/5081/658 3164/5445/658 3163/4546/658 +f 3135/4506/659 3141/5370/659 3142/5082/659 +f 4027/5085/658 4030/5446/658 4026/5086/658 +f 4025/5088/659 4029/5447/659 4028/5089/659 +f 4026/5086/653 4030/5446/653 4029/5091/653 +f 4024/5090/655 4028/5089/655 4027/5085/655 +f 4035/5093/658 4038/5118/658 4034/5094/658 +f 4033/5096/659 4037/5099/659 4036/5097/659 +f 4034/5094/653 4038/5118/653 4037/5099/653 +f 4032/5100/655 4036/5448/655 4035/5093/655 +f 4036/5101/670 4042/5449/670 4041/5102/670 +f 4030/5104/671 4040/5450/671 4039/5105/671 +f 4040/5107/654 4041/5111/654 4042/5108/654 +f 4040/5107/658 4044/5121/658 4045/5110/658 +f 4042/5112/659 4046/5115/659 4043/5113/659 +f 4045/5110/652 4044/5121/652 4043/5113/652 +f 4041/5111/658 4045/5110/658 4038/5116/658 +f 4045/5110/660 4046/5115/660 4037/5099/660 +f 4046/5115/659 4042/5112/659 4036/5119/659 +f 4044/5121/658 4040/5107/658 4030/5122/658 +f 4028/5089/661 4043/5113/661 4044/5121/661 +f 4039/5114/659 4043/5113/659 4028/5124/659 +f 4063/5126/658 4064/5451/658 4065/5452/658 +f 4065/5452/658 4066/5453/658 4063/5126/658 +f 4066/5453/658 4067/5127/658 4063/5126/658 +f 4067/5127/658 4068/5454/658 4069/5455/658 +f 4069/5455/658 4070/5456/658 4067/5127/658 +f 4070/5456/658 4071/5128/658 4067/5127/658 +f 4071/5128/658 4072/5457/658 4073/5458/658 +f 4073/5458/658 4074/5459/658 4075/5460/658 +f 4075/5460/658 4076/5461/658 4063/5126/658 +f 4076/5461/658 4077/5462/658 4063/5126/658 +f 4077/5462/658 4078/5463/658 4063/5126/658 +f 4071/5128/658 4073/5458/658 4063/5126/658 +f 4073/5458/658 4075/5460/658 4063/5126/658 +f 4049/5131/659 4048/5464/659 4047/5465/659 +f 4047/5465/659 4062/5466/659 4061/5467/659 +f 4061/5467/659 4060/5468/659 4057/5129/659 +f 4060/5468/659 4059/5469/659 4057/5129/659 +f 4059/5469/659 4058/5470/659 4057/5129/659 +f 4057/5129/659 4056/5471/659 4055/5472/659 +f 4055/5472/659 4054/5473/659 4057/5129/659 +f 4054/5473/659 4053/5130/659 4057/5129/659 +f 4053/5130/659 4052/5474/659 4051/5475/659 +f 4051/5475/659 4050/5476/659 4053/5130/659 +f 4050/5476/659 4049/5131/659 4053/5130/659 +f 4049/5131/659 4047/5465/659 4057/5129/659 +f 4047/5465/659 4061/5467/659 4057/5129/659 +f 4081/5132/653 4082/5477/653 4080/5133/653 +f 4087/5135/663 4088/5478/663 4086/5136/663 +f 4086/5138/654 4085/5144/654 4080/5133/654 +f 4084/5140/652 4083/5142/652 4081/5141/652 +f 4083/5142/659 4086/5479/659 4082/5143/659 +f 4085/5144/658 4084/5140/658 4079/5134/658 +f 4089/5145/653 4090/5480/653 4088/5146/653 +f 4094/5148/654 4092/5153/654 4088/5149/654 +f 4091/5151/652 4093/5152/652 4089/5145/652 +f 4091/5151/655 4092/5153/655 4094/5148/655 +f 4092/5153/662 4091/5151/662 4084/5140/662 +f 4086/5154/654 4088/5481/654 4092/5153/654 +f 4084/5140/652 4091/5151/652 4087/5135/652 +f 4097/5155/655 4098/5482/655 4096/5156/655 +f 4101/5158/659 4102/5162/659 4098/5159/659 +f 4099/5161/653 4100/5163/653 4102/5162/653 +f 4095/5157/658 4096/5156/658 4100/5163/658 +f 4110/5164/654 4109/5483/654 4098/5165/654 +f 4114/5167/653 4110/5164/653 4102/5166/653 +f 4096/5156/656 4105/5170/656 4106/5168/656 +f 4099/5161/657 4104/5177/657 4103/5175/657 +f 4107/5179/653 4111/5180/653 4104/5177/653 +f 4111/5180/654 4112/5185/654 4103/5175/654 +f 4109/5181/655 4113/5182/655 4105/5170/655 +f 4113/5182/652 4114/5167/652 4106/5168/652 +f 4108/5183/652 4107/5179/652 4101/5176/652 +f 4112/5185/655 4108/5484/655 4097/5173/655 +f 4117/5186/658 4118/5485/658 4122/5187/658 +f 4116/5189/655 4118/5486/655 4117/5186/655 +f 4115/5190/659 4119/5193/659 4120/5191/659 +f 4117/5186/654 4121/5188/654 4119/5193/654 +f 4125/5194/658 4126/5487/658 4130/5195/658 +f 4124/5197/655 4126/5488/655 4125/5194/655 +f 4123/5198/659 4127/5201/659 4128/5199/659 +f 4125/5194/654 4129/5196/654 4127/5201/654 +f 4133/5202/659 4134/5489/659 4138/5203/659 +f 4132/5205/655 4134/5490/655 4133/5202/655 +f 4131/5206/658 4135/5209/658 4136/5207/658 +f 4133/5202/652 4137/5204/652 4135/5209/652 +f 4141/5210/659 4142/5491/659 4146/5211/659 +f 4140/5213/655 4142/5492/655 4141/5210/655 +f 4139/5214/658 4143/5217/658 4144/5215/658 +f 4141/5210/652 4145/5212/652 4143/5217/652 +f 4149/5218/658 4150/5493/658 4154/5219/658 +f 4148/5221/653 4150/5494/653 4149/5218/653 +f 4147/5222/659 4151/5225/659 4152/5223/659 +f 4149/5218/652 4153/5220/652 4151/5225/652 +f 4157/5226/658 4158/5495/658 4162/5227/658 +f 4156/5229/653 4158/5496/653 4157/5226/653 +f 4155/5230/659 4159/5233/659 4160/5231/659 +f 4157/5226/652 4161/5228/652 4159/5233/652 +f 4165/5234/659 4166/5497/659 4170/5235/659 +f 4164/5237/654 4166/5498/654 4165/5234/654 +f 4163/5238/658 4167/5241/658 4168/5239/658 +f 4165/5234/655 4169/5236/655 4167/5241/655 +f 4173/5242/659 4174/5499/659 4178/5243/659 +f 4172/5245/654 4174/5500/654 4173/5242/654 +f 4171/5246/658 4175/5249/658 4176/5247/658 +f 4173/5242/655 4177/5244/655 4175/5249/655 +f 4182/5250/658 4186/5501/658 4185/5251/658 +f 4180/5253/652 4182/5502/652 4181/5252/652 +f 4179/5254/659 4183/5257/659 4184/5255/659 +f 4181/5252/655 4185/5251/655 4183/5257/655 +f 4190/5258/658 4194/5503/658 4193/5259/658 +f 4188/5261/652 4190/5504/652 4189/5260/652 +f 4187/5262/659 4191/5265/659 4192/5263/659 +f 4189/5260/655 4193/5259/655 4191/5265/655 +f 4197/5266/659 4198/5505/659 4202/5267/659 +f 4196/5269/652 4198/5506/652 4197/5266/652 +f 4195/5270/658 4199/5273/658 4200/5271/658 +f 4197/5266/653 4201/5268/653 4199/5273/653 +f 4205/5274/659 4206/5507/659 4210/5275/659 +f 4204/5277/652 4206/5508/652 4205/5274/652 +f 4203/5278/658 4207/5281/658 4208/5279/658 +f 4205/5274/653 4209/5276/653 4207/5281/653 +f 4214/5282/658 4218/5509/658 4217/5283/658 +f 4212/5285/654 4214/5510/654 4213/5284/654 +f 4211/5286/659 4215/5289/659 4216/5287/659 +f 4213/5284/653 4217/5283/653 4215/5289/653 +f 4222/5290/658 4226/5511/658 4225/5291/658 +f 4220/5293/654 4222/5512/654 4221/5292/654 +f 4219/5294/659 4223/5297/659 4224/5295/659 +f 4221/5292/653 4225/5291/653 4223/5297/653 +f 4227/5300/658 4228/5513/658 4229/5514/658 +f 4229/5514/658 4230/5515/658 4227/5300/658 +f 4230/5515/658 4231/5516/658 4227/5300/658 +f 4231/5516/658 4232/5517/658 4227/5300/658 +f 4232/5517/658 4233/5298/658 4227/5300/658 +f 4243/5303/658 4244/5518/658 4245/5519/658 +f 4245/5519/658 4246/5520/658 4243/5303/658 +f 4246/5520/658 4247/5521/658 4243/5303/658 +f 4247/5521/658 4248/5522/658 4243/5303/658 +f 4248/5522/658 4249/5301/658 4243/5303/658 +f 4259/5306/658 4260/5523/658 4261/5524/658 +f 4261/5524/658 4262/5525/658 4259/5306/658 +f 4262/5525/658 4263/5526/658 4259/5306/658 +f 4263/5526/658 4264/5527/658 4259/5306/658 +f 4264/5527/658 4265/5304/658 4259/5306/658 +f 3615/4859/659 3616/5528/659 3622/5307/659 +s 1 +f 3084/5529/661 3069/5530/652 3076/5531/661 +f 3082/5532/670 3075/5533/655 3074/5534/670 +f 3080/5535/671 3073/5536/654 3072/5537/671 +f 3077/5538/660 3071/5539/653 3070/5540/660 +f 3083/5541/655 3076/5531/661 3075/5533/655 +f 3081/5542/654 3074/5534/670 3073/5543/654 +f 3079/5544/653 3072/5537/671 3071/5539/653 +f 3078/5545/652 3070/5540/660 3069/5530/652 +f 3099/5546/661 3114/5547/673 3098/5548/673 +f 3092/5549/674 3107/5550/671 3091/5551/671 +f 3100/5552/675 3115/5553/661 3099/5546/661 +f 3093/5554/654 3108/5555/674 3092/5549/674 +f 3086/5556/676 3101/5557/652 3085/5558/652 +f 3085/5558/652 3116/5559/675 3100/5552/675 +f 3094/5560/677 3109/5561/654 3093/5562/654 +f 3087/5563/660 3102/5564/676 3086/5556/676 +f 3095/5565/670 3110/5566/677 3094/5560/677 +f 3088/5567/678 3103/5568/660 3087/5563/660 +f 3096/5569/679 3111/5570/670 3095/5565/670 +f 3089/5571/653 3104/5572/678 3088/5567/678 +f 3097/5573/655 3112/5574/679 3096/5569/679 +f 3090/5575/680 3105/5576/653 3089/5571/653 +f 3098/5548/673 3113/5577/655 3097/5573/655 +f 3091/5551/671 3106/5578/680 3090/5575/680 +f 3181/5579/655 3214/5580/681 3182/5581/661 +f 3194/5582/671 3227/5583/682 3195/5584/654 +f 3169/5585/660 3207/5586/683 3175/5587/653 +f 3195/5584/654 3228/5588/684 3196/5589/670 +f 3184/5590/652 3209/5591/685 3177/5592/660 +f 3207/5586/683 3170/5593/671 3175/5587/653 +f 3196/5589/670 3229/5594/686 3197/5595/655 +f 3214/5580/681 3184/5596/652 3182/5581/661 +f 3170/5593/671 3203/5597/682 3171/5598/654 +f 3197/5595/655 3230/5599/681 3198/5600/661 +f 3185/5601/660 3223/5602/683 3191/5603/653 +f 3171/5598/654 3204/5604/684 3172/5605/670 +f 3200/5606/652 3225/5607/685 3193/5608/660 +f 3223/5602/683 3186/5609/671 3191/5603/653 +f 3172/5605/670 3205/5610/686 3173/5611/655 +f 3230/5599/681 3200/5612/652 3198/5600/661 +f 3186/5609/671 3219/5613/682 3187/5614/654 +f 3173/5611/655 3206/5615/681 3174/5616/661 +f 3187/5614/654 3220/5617/684 3188/5618/670 +f 3176/5619/652 3201/5620/685 3169/5585/660 +f 3188/5618/670 3221/5621/686 3189/5622/655 +f 3206/5615/681 3176/5623/652 3174/5616/661 +f 3189/5622/655 3222/5624/681 3190/5625/661 +f 3177/5592/660 3215/5626/683 3183/5627/653 +f 3192/5628/652 3217/5629/685 3185/5601/660 +f 3215/5626/683 3178/5630/671 3183/5627/653 +f 3222/5624/681 3192/5631/652 3190/5625/661 +f 3178/5630/671 3211/5632/682 3179/5633/654 +f 3193/5608/660 3231/5634/683 3199/5635/653 +f 3179/5633/654 3212/5636/684 3180/5637/670 +f 3231/5634/683 3194/5582/671 3199/5635/653 +f 3180/5637/670 3213/5638/686 3181/5579/655 +f 3212/5639/684 3244/5640/687 3213/5641/686 +f 3202/5642/688 3235/5643/689 3203/5597/682 +f 3215/5644/683 3241/5645/690 3210/5646/688 +f 3214/5647/681 3244/5640/687 3245/5648/691 +f 3204/5649/684 3235/5643/689 3236/5650/692 +f 3211/5632/682 3241/5645/690 3242/5651/689 +f 3201/5652/685 3239/5653/693 3207/5654/683 +f 3204/5649/684 3237/5655/687 3205/5656/686 +f 3212/5639/684 3242/5651/689 3243/5657/692 +f 3207/5654/683 3234/5658/690 3202/5642/688 +f 3209/5659/685 3246/5660/693 3215/5644/683 +f 3205/5656/686 3238/5661/691 3206/5662/681 +f 3240/5663/694 3260/5664/695 3246/5660/693 +f 3235/5643/689 3250/5665/696 3236/5650/692 +f 3244/5640/687 3257/5666/696 3258/5667/697 +f 3233/5668/694 3253/5669/695 3239/5653/693 +f 3246/5660/693 3255/5670/698 3241/5645/690 +f 3237/5655/687 3250/5665/696 3251/5671/697 +f 3245/5648/691 3258/5667/697 3259/5672/699 +f 3239/5653/693 3248/5673/698 3234/5658/690 +f 3241/5645/690 3256/5674/700 3242/5651/689 +f 3238/5661/691 3251/5671/697 3252/5675/699 +f 3235/5643/689 3248/5673/698 3249/5676/700 +f 3242/5651/689 3257/5666/696 3243/5657/692 +f 3230/5677/681 3272/5678/687 3273/5679/691 +f 3220/5680/684 3263/5681/689 3264/5682/692 +f 3226/5683/688 3270/5684/689 3227/5583/682 +f 3223/5685/683 3261/5686/694 3267/5687/693 +f 3221/5688/686 3264/5682/692 3265/5689/687 +f 3227/5583/682 3271/5690/692 3228/5691/684 +f 3223/5685/683 3262/5692/690 3218/5693/688 +f 3231/5694/683 3268/5695/694 3274/5696/693 +f 3221/5688/686 3266/5697/691 3222/5698/681 +f 3229/5699/686 3271/5690/692 3272/5678/687 +f 3218/5693/688 3263/5681/689 3219/5613/682 +f 3231/5694/683 3269/5700/690 3226/5683/688 +f 3266/5697/691 3279/5701/697 3280/5702/699 +f 3263/5681/689 3276/5703/698 3277/5704/700 +f 3270/5684/689 3285/5705/696 3271/5690/692 +f 3268/5695/694 3288/5706/695 3274/5696/693 +f 3263/5681/689 3278/5707/696 3264/5682/692 +f 3271/5690/692 3286/5708/697 3272/5678/687 +f 3261/5686/694 3281/5709/695 3267/5687/693 +f 3274/5696/693 3283/5710/698 3269/5700/690 +f 3264/5682/692 3279/5701/697 3265/5689/687 +f 3272/5678/687 3287/5711/699 3273/5679/691 +f 3262/5692/690 3281/5709/695 3276/5703/698 +f 3270/5684/689 3283/5710/698 3284/5712/700 +f 3225/5713/685 3232/5714/656 3268/5695/694 +f 3268/5695/694 3232/5714/656 3282/5715/701 +f 3230/5677/681 3273/5679/691 3232/5716/656 +f 3273/5679/691 3287/5711/699 3232/5716/656 +f 3217/5717/685 3224/5718/656 3261/5686/694 +f 3261/5686/694 3224/5718/656 3275/5719/701 +f 3222/5698/681 3266/5697/691 3224/5720/656 +f 3266/5697/691 3280/5702/699 3224/5720/656 +f 3209/5659/685 3216/5721/656 3240/5663/694 +f 3240/5663/694 3216/5721/656 3254/5722/701 +f 3214/5647/681 3245/5648/691 3216/5723/656 +f 3245/5648/691 3259/5672/699 3216/5723/656 +f 3201/5652/685 3208/5724/656 3233/5668/694 +f 3233/5668/694 3208/5724/656 3247/5725/701 +f 3206/5662/681 3238/5661/691 3208/5726/656 +f 3238/5661/691 3252/5675/699 3208/5726/656 +f 3258/5727/697 3305/5728/702 3259/5729/699 +f 3275/5730/701 3313/5731/653 3281/5732/695 +f 3282/5733/701 3292/5734/703 3314/5735/704 +f 3252/5736/699 3289/5737/658 3208/5738/656 +f 3281/5732/695 3308/5739/663 3276/5740/698 +f 3247/5741/701 3299/5742/653 3253/5743/695 +f 3277/5704/700 3308/5739/663 3309/5744/659 +f 3287/5745/699 3292/5746/703 3232/5747/656 +f 3253/5743/695 3294/5748/663 3248/5749/698 +f 3277/5704/700 3310/5750/665 3278/5751/696 +f 3248/5749/698 3295/5752/659 3249/5676/700 +f 3278/5751/696 3311/5753/655 3279/5754/697 +f 3275/5730/701 3291/5755/658 3307/5756/664 +f 3249/5676/700 3296/5757/665 3250/5758/696 +f 3280/5759/699 3311/5753/655 3312/5760/662 +f 3250/5758/696 3297/5761/655 3251/5762/697 +f 3282/5733/701 3320/5763/705 3288/5764/695 +f 3280/5759/699 3291/5765/658 3224/5766/656 +f 3252/5736/699 3297/5761/655 3298/5767/662 +f 3288/5764/695 3315/5768/706 3283/5769/698 +f 3254/5770/701 3306/5771/705 3260/5772/695 +f 3284/5712/700 3315/5768/706 3316/5773/707 +f 3216/5774/656 3300/5775/704 3254/5770/701 +f 3260/5772/695 3301/5776/706 3255/5777/698 +f 3284/5712/700 3317/5778/708 3285/5779/696 +f 3255/5777/698 3302/5780/707 3256/5674/700 +f 3285/5779/696 3318/5781/670 3286/5782/697 +f 3259/5729/699 3290/5783/703 3216/5784/656 +f 3256/5674/700 3303/5785/708 3257/5786/696 +f 3287/5745/699 3318/5781/670 3319/5787/702 +f 3257/5786/696 3304/5788/670 3258/5727/697 +f 3208/5789/656 3293/5790/664 3247/5741/701 +f 3290/5791/703 3327/5792/709 3321/5793/710 +f 3320/5763/705 3330/5794/711 3315/5795/706 +f 3302/5796/707 3326/5797/712 3303/5798/708 +f 3306/5771/705 3323/5799/713 3328/5800/660 +f 3316/5801/707 3330/5794/711 3331/5802/714 +f 3306/5771/705 3324/5803/711 3301/5804/706 +f 3314/5805/704 3322/5806/710 3329/5807/713 +f 3316/5801/707 3332/5808/712 3317/5809/708 +f 3290/5810/703 3323/5799/713 3300/5811/704 +f 3314/5805/704 3334/5812/660 3320/5763/705 +f 3292/5813/703 3333/5814/709 3322/5815/710 +f 3301/5804/706 3325/5816/714 3302/5796/707 +f 3325/5816/714 3338/5817/715 3339/5818/716 +f 3333/5814/709 3336/5819/717 3322/5815/710 +f 3331/5802/714 3344/5820/715 3345/5821/716 +f 3326/5797/712 3339/5818/716 3340/5822/718 +f 3323/5799/713 3335/5823/717 3337/5824/719 +f 3323/5799/713 3342/5825/720 3328/5800/660 +f 3332/5808/712 3345/5821/716 3346/5826/718 +f 3329/5807/713 3348/5827/720 3334/5812/660 +f 3327/5792/709 3335/5828/717 3321/5793/710 +f 3324/5803/711 3342/5825/720 3338/5817/715 +f 3322/5806/710 3343/5829/719 3329/5807/713 +f 3334/5812/660 3344/5820/715 3330/5794/711 +f 3305/5830/702 3304/5831/670 3327/5792/709 +f 3327/5792/709 3304/5831/670 3341/5832/721 +f 3303/5798/708 3326/5797/712 3304/5831/670 +f 3326/5797/712 3340/5822/718 3304/5831/670 +f 3317/5809/708 3332/5808/712 3318/5833/670 +f 3332/5808/712 3346/5826/718 3318/5833/670 +f 3319/5834/702 3318/5833/670 3333/5814/709 +f 3333/5814/709 3318/5833/670 3347/5835/721 +f 3343/5836/719 3364/5837/652 3348/5827/720 +f 3304/5838/670 3357/5839/657 3341/5840/721 +f 3348/5827/720 3360/5841/672 3344/5842/715 +f 3345/5843/716 3360/5841/672 3361/5844/659 +f 3340/5845/718 3349/5846/654 3304/5838/670 +f 3345/5843/716 3362/5847/689 3346/5848/718 +f 3337/5849/719 3358/5850/652 3342/5825/720 +f 3336/5851/717 3359/5852/656 3343/5836/719 +f 3342/5825/720 3354/5853/672 3338/5854/715 +f 3346/5848/718 3350/5855/654 3318/5856/670 +f 3347/5857/721 3352/5858/658 3336/5859/717 +f 3338/5854/715 3355/5860/659 3339/5861/716 +f 3335/5862/717 3353/5863/656 3337/5849/719 +f 3339/5861/716 3356/5864/689 3340/5845/718 +f 3318/5856/670 3363/5865/657 3347/5857/721 +f 3341/5840/721 3351/5866/658 3335/5867/717 +f 3659/5868/722 3665/5869/664 3658/5870/664 +f 3657/5871/653 3663/5872/663 3656/5873/663 +f 3661/5874/665 3667/5875/723 3660/5876/723 +f 3658/5870/664 3664/5877/653 3657/5871/653 +f 3656/5873/663 3662/5878/659 3655/5879/659 +f 3655/5880/659 3668/5881/665 3661/5874/665 +f 3673/5882/722 3677/5883/664 3672/5884/664 +f 3671/5885/653 3675/5886/663 3670/5887/663 +f 3672/5884/664 3676/5888/653 3671/5885/653 +f 3670/5887/663 3674/5889/724 3669/5890/724 +f 3683/5891/722 3687/5892/664 3682/5893/664 +f 3681/5894/653 3685/5895/663 3680/5896/663 +f 3682/5893/664 3686/5897/653 3681/5894/653 +f 3680/5896/663 3684/5898/724 3679/5899/724 +f 3693/5900/722 3697/5901/664 3692/5902/664 +f 3691/5903/653 3695/5904/663 3690/5905/663 +f 3692/5902/664 3696/5906/653 3691/5903/653 +f 3690/5905/663 3694/5907/724 3689/5908/724 +f 3703/5909/722 3707/5910/664 3702/5911/664 +f 3701/5912/653 3705/5913/663 3700/5914/663 +f 3702/5911/664 3706/5915/653 3701/5912/653 +f 3700/5914/663 3704/5916/724 3699/5917/724 +f 3715/5918/725 3721/5919/662 3714/5920/662 +f 3713/5921/658 3719/5922/664 3712/5923/664 +f 3711/5924/653 3717/5925/663 3710/5926/663 +f 3714/5920/662 3720/5927/658 3713/5921/658 +f 3712/5923/664 3718/5928/653 3711/5924/653 +f 3710/5926/663 3716/5929/724 3709/5930/724 +f 3728/5931/655 3734/5932/662 3727/5933/662 +f 3725/5934/726 3731/5935/663 3724/5936/663 +f 3729/5937/665 3735/5938/655 3728/5931/655 +f 3727/5933/662 3733/5939/727 3726/5940/727 +f 3724/5936/663 3730/5941/659 3723/5942/659 +f 3723/5943/659 3736/5944/665 3729/5937/665 +f 3740/5945/655 3744/5946/662 3739/5947/662 +f 3741/5948/665 3745/5949/655 3740/5945/655 +f 3739/5947/662 3743/5950/727 3738/5951/727 +f 3737/5952/728 3746/5953/665 3741/5948/665 +f 3750/5954/655 3754/5955/662 3749/5956/662 +f 3751/5957/665 3755/5958/655 3750/5954/655 +f 3749/5956/662 3753/5959/727 3748/5960/727 +f 3747/5961/728 3756/5962/665 3751/5957/665 +f 3760/5963/655 3764/5964/662 3759/5965/662 +f 3761/5966/665 3765/5967/655 3760/5963/655 +f 3759/5965/662 3763/5968/727 3758/5969/727 +f 3757/5970/728 3766/5971/665 3761/5966/665 +f 3770/5972/655 3774/5973/662 3769/5974/662 +f 3771/5975/665 3775/5976/655 3770/5972/655 +f 3769/5974/662 3773/5977/727 3768/5978/727 +f 3767/5979/728 3776/5980/665 3771/5975/665 +f 3782/5981/655 3788/5982/662 3781/5983/662 +f 3780/5984/658 3786/5985/664 3779/5986/664 +f 3783/5987/665 3789/5988/655 3782/5981/655 +f 3781/5983/662 3787/5989/658 3780/5984/658 +f 3779/5986/664 3785/5990/729 3778/5991/729 +f 3777/5992/728 3790/5993/665 3783/5987/665 +f 3793/5994/726 3797/5995/663 3792/5996/663 +f 3795/5997/665 3799/5998/723 3794/5999/723 +f 3792/5996/663 3796/6000/659 3791/6001/659 +f 3791/6002/659 3800/6003/665 3795/5997/665 +f 3805/6004/725 3809/6005/662 3804/6006/662 +f 3803/6007/658 3807/6008/664 3802/6009/664 +f 3804/6006/662 3808/6010/658 3803/6007/658 +f 3802/6009/664 3806/6011/729 3801/6012/729 +f 3813/6013/726 3817/6014/663 3812/6015/663 +f 3815/6016/665 3819/6017/723 3814/6018/723 +f 3812/6015/663 3816/6019/659 3811/6020/659 +f 3811/6021/659 3820/6022/665 3815/6016/665 +f 3825/6023/725 3829/6024/662 3824/6025/662 +f 3823/6026/658 3827/6027/664 3822/6028/664 +f 3824/6025/662 3828/6029/658 3823/6026/658 +f 3822/6028/664 3826/6030/729 3821/6031/729 +f 3833/6032/726 3837/6033/663 3832/6034/663 +f 3835/6035/665 3839/6036/723 3834/6037/723 +f 3832/6034/663 3836/6038/659 3831/6039/659 +f 3831/6040/659 3840/6041/665 3835/6035/665 +f 3845/6042/725 3849/6043/662 3844/6044/662 +f 3843/6045/658 3847/6046/664 3842/6047/664 +f 3844/6044/662 3848/6048/658 3843/6045/658 +f 3842/6047/664 3846/6049/729 3841/6050/729 +f 3853/6051/726 3857/6052/663 3852/6053/663 +f 3855/6054/665 3859/6055/723 3854/6056/723 +f 3852/6053/663 3856/6057/659 3851/6058/659 +f 3851/6059/659 3860/6060/665 3855/6054/665 +f 3865/6061/725 3869/6062/662 3864/6063/662 +f 3863/6064/658 3867/6065/664 3862/6066/664 +f 3864/6063/662 3868/6067/658 3863/6064/658 +f 3862/6066/664 3866/6068/729 3861/6069/729 +f 4061/6070/661 4076/6071/673 4060/6072/673 +f 4054/6073/674 4069/6074/671 4053/6075/671 +f 4062/6076/675 4077/6077/661 4061/6070/661 +f 4055/6078/654 4070/6079/674 4054/6073/674 +f 4048/6080/676 4063/6081/652 4047/6082/652 +f 4047/6082/652 4078/6083/675 4062/6076/675 +f 4056/6084/677 4071/6085/654 4055/6086/654 +f 4049/6087/660 4064/6088/676 4048/6080/676 +f 4057/6089/670 4072/6090/677 4056/6084/677 +f 4050/6091/678 4065/6092/660 4049/6087/660 +f 4058/6093/679 4073/6094/670 4057/6089/670 +f 4051/6095/653 4066/6096/678 4050/6091/678 +f 4059/6097/655 4074/6098/679 4058/6093/679 +f 4052/6099/680 4067/6100/653 4051/6095/653 +f 4060/6072/673 4075/6101/655 4059/6097/655 +f 4053/6075/671 4068/6102/680 4052/6099/680 +f 4242/6103/661 4227/6104/652 4234/6105/661 +f 4240/6106/670 4233/6107/655 4232/6108/670 +f 4238/6109/671 4231/6110/654 4230/6111/671 +f 4235/6112/660 4229/6113/653 4228/6114/660 +f 4241/6115/655 4234/6105/661 4233/6107/655 +f 4239/6116/654 4232/6108/670 4231/6117/654 +f 4237/6118/653 4230/6111/671 4229/6113/653 +f 4236/6119/652 4228/6114/660 4227/6104/652 +f 4258/6120/661 4243/6121/652 4250/6122/661 +f 4256/6123/670 4249/6124/655 4248/6125/670 +f 4254/6126/671 4247/6127/654 4246/6128/671 +f 4251/6129/660 4245/6130/653 4244/6131/660 +f 4257/6132/655 4250/6122/661 4249/6124/655 +f 4255/6133/654 4248/6125/670 4247/6134/654 +f 4253/6135/653 4246/6128/671 4245/6130/653 +f 4252/6136/652 4244/6131/660 4243/6121/652 +f 4274/6137/661 4259/6138/652 4266/6139/661 +f 4272/6140/670 4265/6141/655 4264/6142/670 +f 4270/6143/671 4263/6144/654 4262/6145/671 +f 4267/6146/660 4261/6147/653 4260/6148/660 +f 4273/6149/655 4266/6139/661 4265/6141/655 +f 4271/6150/654 4264/6142/670 4263/6151/654 +f 4269/6152/653 4262/6145/671 4261/6147/653 +f 4268/6153/652 4260/6148/660 4259/6138/652 +f 4320/6154/685 4287/6155/653 4288/6156/660 +f 4333/6157/682 4300/6158/670 4301/6159/654 +f 4313/6160/686 4275/6161/661 4281/6162/655 +f 4334/6163/688 4301/6159/654 4302/6164/671 +f 4315/6165/681 4290/6166/652 4283/6167/661 +f 4276/6168/670 4313/6160/686 4281/6162/655 +f 4335/6169/683 4302/6164/671 4303/6170/653 +f 4290/6171/652 4320/6154/685 4288/6156/660 +f 4309/6172/682 4276/6168/670 4277/6173/654 +f 4336/6174/685 4303/6170/653 4304/6175/660 +f 4329/6176/686 4291/6177/661 4297/6178/655 +f 4310/6179/688 4277/6173/654 4278/6180/671 +f 4331/6181/681 4306/6182/652 4299/6183/661 +f 4292/6184/670 4329/6176/686 4297/6178/655 +f 4311/6185/683 4278/6180/671 4279/6186/653 +f 4306/6187/652 4336/6174/685 4304/6175/660 +f 4325/6188/682 4292/6184/670 4293/6189/654 +f 4312/6190/685 4279/6186/653 4280/6191/660 +f 4326/6192/688 4293/6189/654 4294/6193/671 +f 4307/6194/681 4282/6195/652 4275/6161/661 +f 4327/6196/683 4294/6193/671 4295/6197/653 +f 4282/6198/652 4312/6190/685 4280/6191/660 +f 4328/6199/685 4295/6197/653 4296/6200/660 +f 4321/6201/686 4283/6167/661 4289/6202/655 +f 4323/6203/681 4298/6204/652 4291/6177/661 +f 4284/6205/670 4321/6201/686 4289/6202/655 +f 4298/6206/652 4328/6199/685 4296/6200/660 +f 4317/6207/682 4284/6205/670 4285/6208/654 +f 4337/6209/686 4299/6183/661 4305/6210/655 +f 4318/6211/688 4285/6208/654 4286/6212/671 +f 4300/6158/670 4337/6209/686 4305/6210/655 +f 4319/6213/683 4286/6212/671 4287/6155/653 +f 4319/6214/683 4349/6215/690 4318/6216/688 +f 4341/6217/689 4308/6218/684 4309/6172/682 +f 4316/6219/684 4352/6220/687 4321/6221/686 +f 4351/6222/694 4319/6214/683 4320/6223/685 +f 4310/6224/688 4341/6217/689 4309/6172/682 +f 4348/6225/689 4316/6219/684 4317/6207/682 +f 4313/6226/686 4339/6227/691 4307/6228/681 +f 4311/6229/683 4342/6230/690 4310/6224/688 +f 4318/6216/688 4348/6225/689 4317/6207/682 +f 4340/6231/692 4313/6226/686 4308/6218/684 +f 4321/6221/686 4346/6232/691 4315/6233/681 +f 4344/6234/694 4311/6229/683 4312/6235/685 +f 4366/6236/697 4346/6232/691 4352/6220/687 +f 4356/6237/698 4341/6217/689 4342/6230/690 +f 4350/6238/693 4363/6239/698 4349/6215/690 +f 4359/6240/697 4339/6227/691 4345/6241/687 +f 4361/6242/696 4352/6220/687 4347/6243/692 +f 4343/6244/693 4356/6237/698 4342/6230/690 +f 4351/6222/694 4364/6245/695 4350/6238/693 +f 4354/6246/696 4345/6241/687 4340/6231/692 +f 4348/6225/689 4361/6242/696 4347/6243/692 +f 4344/6234/694 4357/6247/695 4343/6244/693 +f 4341/6217/689 4354/6246/696 4340/6231/692 +f 4363/6239/698 4348/6225/689 4349/6215/690 +f 4379/6248/694 4335/6249/683 4336/6250/685 +f 4370/6251/690 4325/6188/682 4326/6252/688 +f 4376/6253/689 4332/6254/684 4333/6157/682 +f 4329/6255/686 4367/6256/691 4323/6257/681 +f 4327/6258/683 4370/6251/690 4326/6252/688 +f 4377/6259/690 4333/6157/682 4334/6260/688 +f 4368/6261/692 4329/6255/686 4324/6262/684 +f 4337/6263/686 4374/6264/691 4331/6265/681 +f 4372/6266/694 4327/6258/683 4328/6267/685 +f 4335/6249/683 4377/6259/690 4334/6260/688 +f 4369/6268/689 4324/6262/684 4325/6188/682 +f 4332/6254/684 4380/6269/687 4337/6263/686 +f 4372/6266/694 4385/6270/695 4371/6271/693 +f 4369/6268/689 4382/6272/696 4368/6261/692 +f 4391/6273/698 4376/6253/689 4377/6259/690 +f 4394/6274/697 4374/6264/691 4380/6269/687 +f 4384/6275/698 4369/6268/689 4370/6251/690 +f 4378/6276/693 4391/6273/698 4377/6259/690 +f 4387/6277/697 4367/6256/691 4373/6278/687 +f 4389/6279/696 4380/6269/687 4375/6280/692 +f 4371/6271/693 4384/6275/698 4370/6251/690 +f 4379/6248/694 4392/6281/695 4378/6276/693 +f 4382/6272/696 4373/6278/687 4368/6261/692 +f 4376/6253/689 4389/6279/696 4375/6280/692 +f 4331/6265/681 4374/6264/691 4338/6282/656 +f 4374/6264/691 4388/6283/699 4338/6282/656 +f 4336/6250/685 4338/6284/656 4379/6248/694 +f 4379/6248/694 4338/6284/656 4393/6285/701 +f 4323/6257/681 4367/6256/691 4330/6286/656 +f 4367/6256/691 4381/6287/699 4330/6286/656 +f 4328/6267/685 4330/6288/656 4372/6266/694 +f 4372/6266/694 4330/6288/656 4386/6289/701 +f 4315/6233/681 4346/6232/691 4322/6290/656 +f 4346/6232/691 4360/6291/699 4322/6290/656 +f 4320/6223/685 4322/6292/656 4351/6222/694 +f 4351/6222/694 4322/6292/656 4365/6293/701 +f 4307/6228/681 4339/6227/691 4314/6294/656 +f 4339/6227/691 4353/6295/699 4314/6294/656 +f 4312/6235/685 4314/6296/656 4344/6234/694 +f 4344/6234/694 4314/6296/656 4358/6297/701 +f 4411/6298/730 4364/6299/695 4365/6300/701 +f 4419/6301/655 4381/6302/699 4387/6303/697 +f 4388/6304/699 4398/6305/731 4338/6306/656 +f 4395/6307/658 4358/6308/701 4314/6309/656 +f 4414/6310/665 4387/6303/697 4382/6311/696 +f 4405/6312/655 4353/6313/699 4359/6314/697 +f 4383/6315/700 4414/6310/665 4382/6311/696 +f 4398/6316/731 4393/6317/701 4338/6318/656 +f 4400/6319/665 4359/6314/697 4354/6320/696 +f 4416/6321/663 4383/6315/700 4384/6322/698 +f 4401/6323/659 4354/6320/696 4355/6324/700 +f 4417/6325/653 4384/6322/698 4385/6326/695 +f 4381/6302/699 4397/6327/658 4330/6328/656 +f 4402/6329/663 4355/6324/700 4356/6330/698 +f 4386/6331/701 4417/6325/653 4385/6326/695 +f 4403/6332/653 4356/6330/698 4357/6333/695 +f 4426/6334/732 4388/6304/699 4394/6335/697 +f 4397/6336/658 4386/6331/701 4330/6337/656 +f 4404/6338/664 4357/6333/695 4358/6308/701 +f 4421/6339/733 4394/6335/697 4389/6340/696 +f 4412/6341/732 4360/6342/699 4366/6343/697 +f 4390/6344/700 4421/6339/733 4389/6340/696 +f 4406/6345/734 4322/6346/656 4360/6342/699 +f 4407/6347/733 4366/6343/697 4361/6348/696 +f 4423/6349/735 4390/6344/700 4391/6350/698 +f 4408/6351/736 4361/6348/696 4362/6352/700 +f 4424/6353/671 4391/6350/698 4392/6354/695 +f 4396/6355/731 4365/6300/701 4322/6356/656 +f 4409/6357/735 4362/6352/700 4363/6358/698 +f 4393/6317/701 4424/6353/671 4392/6354/695 +f 4410/6359/671 4363/6358/698 4364/6299/695 +f 4399/6360/662 4314/6361/656 4353/6313/699 +f 4396/6362/731 4433/6363/737 4411/6364/730 +f 4436/6365/738 4426/6334/732 4421/6366/733 +f 4432/6367/739 4408/6368/736 4409/6369/735 +f 4412/6341/732 4429/6370/740 4406/6371/734 +f 4422/6372/736 4436/6365/738 4421/6366/733 +f 4430/6373/738 4412/6341/732 4407/6374/733 +f 4420/6375/734 4428/6376/741 4398/6377/731 +f 4438/6378/739 4422/6372/736 4423/6379/735 +f 4429/6370/740 4396/6380/731 4406/6371/734 +f 4440/6381/661 4420/6375/734 4426/6334/732 +f 4398/6382/731 4439/6383/737 4425/6384/730 +f 4431/6385/742 4407/6374/733 4408/6368/736 +f 4445/6386/743 4430/6373/738 4431/6385/742 +f 4442/6387/744 4439/6383/737 4428/6388/741 +f 4437/6389/742 4450/6390/745 4436/6365/738 +f 4432/6367/739 4445/6386/743 4431/6385/742 +f 4429/6370/740 4441/6391/744 4427/6392/741 +f 4448/6393/746 4429/6370/740 4434/6394/661 +f 4452/6395/747 4437/6389/742 4438/6378/739 +f 4454/6396/746 4435/6397/740 4440/6381/661 +f 4441/6398/744 4433/6363/737 4427/6399/741 +f 4430/6373/738 4448/6393/746 4434/6394/661 +f 4449/6400/748 4428/6376/741 4435/6397/740 +f 4450/6390/745 4440/6381/661 4436/6365/738 +f 4411/6364/730 4433/6363/737 4410/6401/671 +f 4433/6363/737 4447/6402/749 4410/6401/671 +f 4409/6369/735 4410/6401/671 4432/6367/739 +f 4432/6367/739 4410/6401/671 4446/6403/747 +f 4423/6379/735 4424/6404/671 4438/6378/739 +f 4438/6378/739 4424/6404/671 4452/6395/747 +f 4425/6384/730 4439/6383/737 4424/6404/671 +f 4439/6383/737 4453/6405/749 4424/6404/671 +f 4470/6406/652 4449/6407/748 4454/6396/746 +f 4463/6408/657 4410/6409/671 4447/6410/749 +f 4466/6411/672 4454/6396/746 4450/6412/745 +f 4451/6413/743 4466/6411/672 4450/6412/745 +f 4455/6414/654 4446/6415/747 4410/6409/671 +f 4468/6416/689 4451/6413/743 4452/6417/747 +f 4464/6418/652 4443/6419/748 4448/6393/746 +f 4465/6420/656 4442/6421/744 4449/6407/748 +f 4460/6422/672 4448/6393/746 4444/6423/745 +f 4456/6424/654 4452/6417/747 4424/6425/671 +f 4458/6426/658 4453/6427/749 4442/6428/744 +f 4461/6429/659 4444/6423/745 4445/6430/743 +f 4459/6431/656 4441/6432/744 4443/6419/748 +f 4462/6433/689 4445/6430/743 4446/6415/747 +f 4469/6434/657 4424/6425/671 4453/6427/749 +f 4457/6435/658 4447/6410/749 4441/6436/744 +f 3084/5529/661 3078/5545/652 3069/5530/652 +f 3082/5532/670 3083/5541/655 3075/5533/655 +f 3080/5535/671 3081/6437/654 3073/5536/654 +f 3077/5538/660 3079/5544/653 3071/5539/653 +f 3083/5541/655 3084/5529/661 3076/5531/661 +f 3081/5542/654 3082/5532/670 3074/5534/670 +f 3079/5544/653 3080/5535/671 3072/5537/671 +f 3078/5545/652 3077/5538/660 3070/5540/660 +f 3099/5546/661 3115/5553/661 3114/5547/673 +f 3092/5549/674 3108/5555/674 3107/5550/671 +f 3100/5552/675 3116/5559/675 3115/5553/661 +f 3093/5554/654 3109/6438/654 3108/5555/674 +f 3086/5556/676 3102/5564/676 3101/5557/652 +f 3085/5558/652 3101/5557/652 3116/5559/675 +f 3094/5560/677 3110/5566/677 3109/5561/654 +f 3087/5563/660 3103/5568/660 3102/5564/676 +f 3095/5565/670 3111/5570/670 3110/5566/677 +f 3088/5567/678 3104/5572/678 3103/5568/660 +f 3096/5569/679 3112/5574/679 3111/5570/670 +f 3089/5571/653 3105/5576/653 3104/5572/678 +f 3097/5573/655 3113/5577/655 3112/5574/679 +f 3090/5575/680 3106/5578/680 3105/5576/653 +f 3098/5548/673 3114/5547/673 3113/5577/655 +f 3091/5551/671 3107/5550/671 3106/5578/680 +f 3181/5579/655 3213/5638/686 3214/5580/681 +f 3194/5582/671 3226/6439/688 3227/5583/682 +f 3169/5585/660 3201/5620/685 3207/5586/683 +f 3195/5584/654 3227/5583/682 3228/5588/684 +f 3184/5590/652 3216/6440/656 3209/5591/685 +f 3207/5586/683 3202/6441/688 3170/5593/671 +f 3196/5589/670 3228/5588/684 3229/5594/686 +f 3214/5580/681 3216/6442/656 3184/5596/652 +f 3170/5593/671 3202/6441/688 3203/5597/682 +f 3197/5595/655 3229/5594/686 3230/5599/681 +f 3185/5601/660 3217/5629/685 3223/5602/683 +f 3171/5598/654 3203/5597/682 3204/5604/684 +f 3200/5606/652 3232/6443/656 3225/5607/685 +f 3223/5602/683 3218/6444/688 3186/5609/671 +f 3172/5605/670 3204/5604/684 3205/5610/686 +f 3230/5599/681 3232/6445/656 3200/5612/652 +f 3186/5609/671 3218/6444/688 3219/5613/682 +f 3173/5611/655 3205/5610/686 3206/5615/681 +f 3187/5614/654 3219/5613/682 3220/5617/684 +f 3176/5619/652 3208/6446/656 3201/5620/685 +f 3188/5618/670 3220/5617/684 3221/5621/686 +f 3206/5615/681 3208/6447/656 3176/5623/652 +f 3189/5622/655 3221/5621/686 3222/5624/681 +f 3177/5592/660 3209/5591/685 3215/5626/683 +f 3192/5628/652 3224/6448/656 3217/5629/685 +f 3215/5626/683 3210/6449/688 3178/5630/671 +f 3222/5624/681 3224/6450/656 3192/5631/652 +f 3178/5630/671 3210/6449/688 3211/5632/682 +f 3193/5608/660 3225/5607/685 3231/5634/683 +f 3179/5633/654 3211/5632/682 3212/5636/684 +f 3231/5634/683 3226/6439/688 3194/5582/671 +f 3180/5637/670 3212/5636/684 3213/5638/686 +f 3212/5639/684 3243/5657/692 3244/5640/687 +f 3202/5642/688 3234/5658/690 3235/5643/689 +f 3215/5644/683 3246/5660/693 3241/5645/690 +f 3214/5647/681 3213/5641/686 3244/5640/687 +f 3204/5649/684 3203/5597/682 3235/5643/689 +f 3211/5632/682 3210/5646/688 3241/5645/690 +f 3201/5652/685 3233/5668/694 3239/5653/693 +f 3204/5649/684 3236/5650/692 3237/5655/687 +f 3212/5639/684 3211/5632/682 3242/5651/689 +f 3207/5654/683 3239/5653/693 3234/5658/690 +f 3209/5659/685 3240/5663/694 3246/5660/693 +f 3205/5656/686 3237/5655/687 3238/5661/691 +f 3240/5663/694 3254/5722/701 3260/5664/695 +f 3235/5643/689 3249/5676/700 3250/5665/696 +f 3244/5640/687 3243/5657/692 3257/5666/696 +f 3233/5668/694 3247/5725/701 3253/5669/695 +f 3246/5660/693 3260/5664/695 3255/5670/698 +f 3237/5655/687 3236/5650/692 3250/5665/696 +f 3245/5648/691 3244/5640/687 3258/5667/697 +f 3239/5653/693 3253/5669/695 3248/5673/698 +f 3241/5645/690 3255/5670/698 3256/5674/700 +f 3238/5661/691 3237/5655/687 3251/5671/697 +f 3235/5643/689 3234/5658/690 3248/5673/698 +f 3242/5651/689 3256/5674/700 3257/5666/696 +f 3230/5677/681 3229/5699/686 3272/5678/687 +f 3220/5680/684 3219/5613/682 3263/5681/689 +f 3226/5683/688 3269/5700/690 3270/5684/689 +f 3223/5685/683 3217/5717/685 3261/5686/694 +f 3221/5688/686 3220/5680/684 3264/5682/692 +f 3227/5583/682 3270/5684/689 3271/5690/692 +f 3223/5685/683 3267/5687/693 3262/5692/690 +f 3231/5694/683 3225/5713/685 3268/5695/694 +f 3221/5688/686 3265/5689/687 3266/5697/691 +f 3229/5699/686 3228/5691/684 3271/5690/692 +f 3218/5693/688 3262/5692/690 3263/5681/689 +f 3231/5694/683 3274/5696/693 3269/5700/690 +f 3266/5697/691 3265/5689/687 3279/5701/697 +f 3263/5681/689 3262/5692/690 3276/5703/698 +f 3270/5684/689 3284/5712/700 3285/5705/696 +f 3268/5695/694 3282/5715/701 3288/5706/695 +f 3263/5681/689 3277/5704/700 3278/5707/696 +f 3271/5690/692 3285/5705/696 3286/5708/697 +f 3261/5686/694 3275/5719/701 3281/5709/695 +f 3274/5696/693 3288/5706/695 3283/5710/698 +f 3264/5682/692 3278/5707/696 3279/5701/697 +f 3272/5678/687 3286/5708/697 3287/5711/699 +f 3262/5692/690 3267/5687/693 3281/5709/695 +f 3270/5684/689 3269/5700/690 3283/5710/698 +f 3258/5727/697 3304/5788/670 3305/5728/702 +f 3275/5730/701 3307/5756/664 3313/5731/653 +f 3282/5733/701 3232/6451/656 3292/5734/703 +f 3252/5736/699 3298/5767/662 3289/5737/658 +f 3281/5732/695 3313/5731/653 3308/5739/663 +f 3247/5741/701 3293/5790/664 3299/5742/653 +f 3277/5704/700 3276/5740/698 3308/5739/663 +f 3287/5745/699 3319/5787/702 3292/5746/703 +f 3253/5743/695 3299/5742/653 3294/5748/663 +f 3277/5704/700 3309/5744/659 3310/5750/665 +f 3248/5749/698 3294/5748/663 3295/5752/659 +f 3278/5751/696 3310/5750/665 3311/5753/655 +f 3275/5730/701 3224/6452/656 3291/5755/658 +f 3249/5676/700 3295/5752/659 3296/5757/665 +f 3280/5759/699 3279/5754/697 3311/5753/655 +f 3250/5758/696 3296/5757/665 3297/5761/655 +f 3282/5733/701 3314/5735/704 3320/5763/705 +f 3280/5759/699 3312/5760/662 3291/5765/658 +f 3252/5736/699 3251/5762/697 3297/5761/655 +f 3288/5764/695 3320/5763/705 3315/5768/706 +f 3254/5770/701 3300/5775/704 3306/5771/705 +f 3284/5712/700 3283/5769/698 3315/5768/706 +f 3216/5774/656 3290/6453/703 3300/5775/704 +f 3260/5772/695 3306/5771/705 3301/5776/706 +f 3284/5712/700 3316/5773/707 3317/5778/708 +f 3255/5777/698 3301/5776/706 3302/5780/707 +f 3285/5779/696 3317/5778/708 3318/5781/670 +f 3259/5729/699 3305/5728/702 3290/5783/703 +f 3256/5674/700 3302/5780/707 3303/5785/708 +f 3287/5745/699 3286/5782/697 3318/5781/670 +f 3257/5786/696 3303/5785/708 3304/5788/670 +f 3208/5789/656 3289/6454/658 3293/5790/664 +f 3290/5791/703 3305/5830/702 3327/5792/709 +f 3320/5763/705 3334/5812/660 3330/5794/711 +f 3302/5796/707 3325/5816/714 3326/5797/712 +f 3306/5771/705 3300/5811/704 3323/5799/713 +f 3316/5801/707 3315/5795/706 3330/5794/711 +f 3306/5771/705 3328/5800/660 3324/5803/711 +f 3314/5805/704 3292/6455/703 3322/5806/710 +f 3316/5801/707 3331/5802/714 3332/5808/712 +f 3290/5810/703 3321/6456/710 3323/5799/713 +f 3314/5805/704 3329/5807/713 3334/5812/660 +f 3292/5813/703 3319/5834/702 3333/5814/709 +f 3301/5804/706 3324/5803/711 3325/5816/714 +f 3325/5816/714 3324/5803/711 3338/5817/715 +f 3333/5814/709 3347/5835/721 3336/5819/717 +f 3331/5802/714 3330/5794/711 3344/5820/715 +f 3326/5797/712 3325/5816/714 3339/5818/716 +f 3323/5799/713 3321/6456/710 3335/5823/717 +f 3323/5799/713 3337/5824/719 3342/5825/720 +f 3332/5808/712 3331/5802/714 3345/5821/716 +f 3329/5807/713 3343/5829/719 3348/5827/720 +f 3327/5792/709 3341/5832/721 3335/5828/717 +f 3324/5803/711 3328/5800/660 3342/5825/720 +f 3322/5806/710 3336/6457/717 3343/5829/719 +f 3334/5812/660 3348/5827/720 3344/5820/715 +f 3343/5836/719 3359/5852/656 3364/5837/652 +f 3304/5838/670 3349/5846/654 3357/5839/657 +f 3348/5827/720 3364/5837/652 3360/5841/672 +f 3345/5843/716 3344/5842/715 3360/5841/672 +f 3340/5845/718 3356/5864/689 3349/5846/654 +f 3345/5843/716 3361/5844/659 3362/5847/689 +f 3337/5849/719 3353/5863/656 3358/5850/652 +f 3336/5851/717 3352/6458/658 3359/5852/656 +f 3342/5825/720 3358/5850/652 3354/5853/672 +f 3346/5848/718 3362/5847/689 3350/5855/654 +f 3347/5857/721 3363/5865/657 3352/5858/658 +f 3338/5854/715 3354/5853/672 3355/5860/659 +f 3335/5862/717 3351/6459/658 3353/5863/656 +f 3339/5861/716 3355/5860/659 3356/5864/689 +f 3318/5856/670 3350/5855/654 3363/5865/657 +f 3341/5840/721 3357/5839/657 3351/5866/658 +f 3659/5868/722 3666/6460/722 3665/5869/664 +f 3657/5871/653 3664/5877/653 3663/5872/663 +f 3661/5874/665 3668/5881/665 3667/5875/723 +f 3658/5870/664 3665/5869/664 3664/5877/653 +f 3656/5873/663 3663/5872/663 3662/5878/659 +f 3655/5880/659 3662/6461/659 3668/5881/665 +f 3673/5882/722 3678/6462/722 3677/5883/664 +f 3671/5885/653 3676/5888/653 3675/5886/663 +f 3672/5884/664 3677/5883/664 3676/5888/653 +f 3670/5887/663 3675/5886/663 3674/5889/724 +f 3683/5891/722 3688/6463/722 3687/5892/664 +f 3681/5894/653 3686/5897/653 3685/5895/663 +f 3682/5893/664 3687/5892/664 3686/5897/653 +f 3680/5896/663 3685/5895/663 3684/5898/724 +f 3693/5900/722 3698/6464/722 3697/5901/664 +f 3691/5903/653 3696/5906/653 3695/5904/663 +f 3692/5902/664 3697/5901/664 3696/5906/653 +f 3690/5905/663 3695/5904/663 3694/5907/724 +f 3703/5909/722 3708/6465/722 3707/5910/664 +f 3701/5912/653 3706/5915/653 3705/5913/663 +f 3702/5911/664 3707/5910/664 3706/5915/653 +f 3700/5914/663 3705/5913/663 3704/5916/724 +f 3715/5918/725 3722/6466/725 3721/5919/662 +f 3713/5921/658 3720/5927/658 3719/5922/664 +f 3711/5924/653 3718/5928/653 3717/5925/663 +f 3714/5920/662 3721/5919/662 3720/5927/658 +f 3712/5923/664 3719/5922/664 3718/5928/653 +f 3710/5926/663 3717/5925/663 3716/5929/724 +f 3728/5931/655 3735/5938/655 3734/5932/662 +f 3725/5934/726 3732/6467/726 3731/5935/663 +f 3729/5937/665 3736/5944/665 3735/5938/655 +f 3727/5933/662 3734/5932/662 3733/5939/727 +f 3724/5936/663 3731/5935/663 3730/5941/659 +f 3723/5943/659 3730/6468/659 3736/5944/665 +f 3740/5945/655 3745/5949/655 3744/5946/662 +f 3741/5948/665 3746/5953/665 3745/5949/655 +f 3739/5947/662 3744/5946/662 3743/5950/727 +f 3737/5952/728 3742/6469/728 3746/5953/665 +f 3750/5954/655 3755/5958/655 3754/5955/662 +f 3751/5957/665 3756/5962/665 3755/5958/655 +f 3749/5956/662 3754/5955/662 3753/5959/727 +f 3747/5961/728 3752/6470/728 3756/5962/665 +f 3760/5963/655 3765/5967/655 3764/5964/662 +f 3761/5966/665 3766/5971/665 3765/5967/655 +f 3759/5965/662 3764/5964/662 3763/5968/727 +f 3757/5970/728 3762/6471/728 3766/5971/665 +f 3770/5972/655 3775/5976/655 3774/5973/662 +f 3771/5975/665 3776/5980/665 3775/5976/655 +f 3769/5974/662 3774/5973/662 3773/5977/727 +f 3767/5979/728 3772/6472/728 3776/5980/665 +f 3782/5981/655 3789/5988/655 3788/5982/662 +f 3780/5984/658 3787/5989/658 3786/5985/664 +f 3783/5987/665 3790/5993/665 3789/5988/655 +f 3781/5983/662 3788/5982/662 3787/5989/658 +f 3779/5986/664 3786/5985/664 3785/5990/729 +f 3777/5992/728 3784/6473/728 3790/5993/665 +f 3793/5994/726 3798/6474/726 3797/5995/663 +f 3795/5997/665 3800/6003/665 3799/5998/723 +f 3792/5996/663 3797/5995/663 3796/6000/659 +f 3791/6002/659 3796/6475/659 3800/6003/665 +f 3805/6004/725 3810/6476/725 3809/6005/662 +f 3803/6007/658 3808/6010/658 3807/6008/664 +f 3804/6006/662 3809/6005/662 3808/6010/658 +f 3802/6009/664 3807/6008/664 3806/6011/729 +f 3813/6013/726 3818/6477/726 3817/6014/663 +f 3815/6016/665 3820/6022/665 3819/6017/723 +f 3812/6015/663 3817/6014/663 3816/6019/659 +f 3811/6021/659 3816/6478/659 3820/6022/665 +f 3825/6023/725 3830/6479/725 3829/6024/662 +f 3823/6026/658 3828/6029/658 3827/6027/664 +f 3824/6025/662 3829/6024/662 3828/6029/658 +f 3822/6028/664 3827/6027/664 3826/6030/729 +f 3833/6032/726 3838/6480/726 3837/6033/663 +f 3835/6035/665 3840/6041/665 3839/6036/723 +f 3832/6034/663 3837/6033/663 3836/6038/659 +f 3831/6040/659 3836/6481/659 3840/6041/665 +f 3845/6042/725 3850/6482/725 3849/6043/662 +f 3843/6045/658 3848/6048/658 3847/6046/664 +f 3844/6044/662 3849/6043/662 3848/6048/658 +f 3842/6047/664 3847/6046/664 3846/6049/729 +f 3853/6051/726 3858/6483/726 3857/6052/663 +f 3855/6054/665 3860/6060/665 3859/6055/723 +f 3852/6053/663 3857/6052/663 3856/6057/659 +f 3851/6059/659 3856/6484/659 3860/6060/665 +f 3865/6061/725 3870/6485/725 3869/6062/662 +f 3863/6064/658 3868/6067/658 3867/6065/664 +f 3864/6063/662 3869/6062/662 3868/6067/658 +f 3862/6066/664 3867/6065/664 3866/6068/729 +f 4061/6070/661 4077/6077/661 4076/6071/673 +f 4054/6073/674 4070/6079/674 4069/6074/671 +f 4062/6076/675 4078/6083/675 4077/6077/661 +f 4055/6078/654 4071/6486/654 4070/6079/674 +f 4048/6080/676 4064/6088/676 4063/6081/652 +f 4047/6082/652 4063/6081/652 4078/6083/675 +f 4056/6084/677 4072/6090/677 4071/6085/654 +f 4049/6087/660 4065/6092/660 4064/6088/676 +f 4057/6089/670 4073/6094/670 4072/6090/677 +f 4050/6091/678 4066/6096/678 4065/6092/660 +f 4058/6093/679 4074/6098/679 4073/6094/670 +f 4051/6095/653 4067/6100/653 4066/6096/678 +f 4059/6097/655 4075/6101/655 4074/6098/679 +f 4052/6099/680 4068/6102/680 4067/6100/653 +f 4060/6072/673 4076/6071/673 4075/6101/655 +f 4053/6075/671 4069/6074/671 4068/6102/680 +f 4242/6103/661 4236/6119/652 4227/6104/652 +f 4240/6106/670 4241/6115/655 4233/6107/655 +f 4238/6109/671 4239/6487/654 4231/6110/654 +f 4235/6112/660 4237/6118/653 4229/6113/653 +f 4241/6115/655 4242/6103/661 4234/6105/661 +f 4239/6116/654 4240/6106/670 4232/6108/670 +f 4237/6118/653 4238/6109/671 4230/6111/671 +f 4236/6119/652 4235/6112/660 4228/6114/660 +f 4258/6120/661 4252/6136/652 4243/6121/652 +f 4256/6123/670 4257/6132/655 4249/6124/655 +f 4254/6126/671 4255/6488/654 4247/6127/654 +f 4251/6129/660 4253/6135/653 4245/6130/653 +f 4257/6132/655 4258/6120/661 4250/6122/661 +f 4255/6133/654 4256/6123/670 4248/6125/670 +f 4253/6135/653 4254/6126/671 4246/6128/671 +f 4252/6136/652 4251/6129/660 4244/6131/660 +f 4274/6137/661 4268/6153/652 4259/6138/652 +f 4272/6140/670 4273/6149/655 4265/6141/655 +f 4270/6143/671 4271/6489/654 4263/6144/654 +f 4267/6146/660 4269/6152/653 4261/6147/653 +f 4273/6149/655 4274/6137/661 4266/6139/661 +f 4271/6150/654 4272/6140/670 4264/6142/670 +f 4269/6152/653 4270/6143/671 4262/6145/671 +f 4268/6153/652 4267/6146/660 4260/6148/660 +f 4320/6154/685 4319/6213/683 4287/6155/653 +f 4333/6157/682 4332/6490/684 4300/6158/670 +f 4313/6160/686 4307/6194/681 4275/6161/661 +f 4334/6163/688 4333/6157/682 4301/6159/654 +f 4315/6165/681 4322/6491/656 4290/6166/652 +f 4276/6168/670 4308/6492/684 4313/6160/686 +f 4335/6169/683 4334/6163/688 4302/6164/671 +f 4290/6171/652 4322/6493/656 4320/6154/685 +f 4309/6172/682 4308/6492/684 4276/6168/670 +f 4336/6174/685 4335/6169/683 4303/6170/653 +f 4329/6176/686 4323/6203/681 4291/6177/661 +f 4310/6179/688 4309/6172/682 4277/6173/654 +f 4331/6181/681 4338/6494/656 4306/6182/652 +f 4292/6184/670 4324/6495/684 4329/6176/686 +f 4311/6185/683 4310/6179/688 4278/6180/671 +f 4306/6187/652 4338/6496/656 4336/6174/685 +f 4325/6188/682 4324/6495/684 4292/6184/670 +f 4312/6190/685 4311/6185/683 4279/6186/653 +f 4326/6192/688 4325/6188/682 4293/6189/654 +f 4307/6194/681 4314/6497/656 4282/6195/652 +f 4327/6196/683 4326/6192/688 4294/6193/671 +f 4282/6198/652 4314/6498/656 4312/6190/685 +f 4328/6199/685 4327/6196/683 4295/6197/653 +f 4321/6201/686 4315/6165/681 4283/6167/661 +f 4323/6203/681 4330/6499/656 4298/6204/652 +f 4284/6205/670 4316/6500/684 4321/6201/686 +f 4298/6206/652 4330/6501/656 4328/6199/685 +f 4317/6207/682 4316/6500/684 4284/6205/670 +f 4337/6209/686 4331/6181/681 4299/6183/661 +f 4318/6211/688 4317/6207/682 4285/6208/654 +f 4300/6158/670 4332/6490/684 4337/6209/686 +f 4319/6213/683 4318/6211/688 4286/6212/671 +f 4319/6214/683 4350/6238/693 4349/6215/690 +f 4341/6217/689 4340/6231/692 4308/6218/684 +f 4316/6219/684 4347/6243/692 4352/6220/687 +f 4351/6222/694 4350/6238/693 4319/6214/683 +f 4310/6224/688 4342/6230/690 4341/6217/689 +f 4348/6225/689 4347/6243/692 4316/6219/684 +f 4313/6226/686 4345/6241/687 4339/6227/691 +f 4311/6229/683 4343/6244/693 4342/6230/690 +f 4318/6216/688 4349/6215/690 4348/6225/689 +f 4340/6231/692 4345/6241/687 4313/6226/686 +f 4321/6221/686 4352/6220/687 4346/6232/691 +f 4344/6234/694 4343/6244/693 4311/6229/683 +f 4366/6236/697 4360/6291/699 4346/6232/691 +f 4356/6237/698 4355/6324/700 4341/6217/689 +f 4350/6238/693 4364/6245/695 4363/6239/698 +f 4359/6240/697 4353/6295/699 4339/6227/691 +f 4361/6242/696 4366/6236/697 4352/6220/687 +f 4343/6244/693 4357/6247/695 4356/6237/698 +f 4351/6222/694 4365/6293/701 4364/6245/695 +f 4354/6246/696 4359/6240/697 4345/6241/687 +f 4348/6225/689 4362/6352/700 4361/6242/696 +f 4344/6234/694 4358/6297/701 4357/6247/695 +f 4341/6217/689 4355/6324/700 4354/6246/696 +f 4363/6239/698 4362/6352/700 4348/6225/689 +f 4379/6248/694 4378/6276/693 4335/6249/683 +f 4370/6251/690 4369/6268/689 4325/6188/682 +f 4376/6253/689 4375/6280/692 4332/6254/684 +f 4329/6255/686 4373/6278/687 4367/6256/691 +f 4327/6258/683 4371/6271/693 4370/6251/690 +f 4377/6259/690 4376/6253/689 4333/6157/682 +f 4368/6261/692 4373/6278/687 4329/6255/686 +f 4337/6263/686 4380/6269/687 4374/6264/691 +f 4372/6266/694 4371/6271/693 4327/6258/683 +f 4335/6249/683 4378/6276/693 4377/6259/690 +f 4369/6268/689 4368/6261/692 4324/6262/684 +f 4332/6254/684 4375/6280/692 4380/6269/687 +f 4372/6266/694 4386/6289/701 4385/6270/695 +f 4369/6268/689 4383/6315/700 4382/6272/696 +f 4391/6273/698 4390/6344/700 4376/6253/689 +f 4394/6274/697 4388/6283/699 4374/6264/691 +f 4384/6275/698 4383/6315/700 4369/6268/689 +f 4378/6276/693 4392/6281/695 4391/6273/698 +f 4387/6277/697 4381/6287/699 4367/6256/691 +f 4389/6279/696 4394/6274/697 4380/6269/687 +f 4371/6271/693 4385/6270/695 4384/6275/698 +f 4379/6248/694 4393/6285/701 4392/6281/695 +f 4382/6272/696 4387/6277/697 4373/6278/687 +f 4376/6253/689 4390/6344/700 4389/6279/696 +f 4411/6298/730 4410/6359/671 4364/6299/695 +f 4419/6301/655 4413/6502/662 4381/6302/699 +f 4388/6304/699 4420/6503/734 4398/6305/731 +f 4395/6307/658 4404/6338/664 4358/6308/701 +f 4414/6310/665 4419/6301/655 4387/6303/697 +f 4405/6312/655 4399/6360/662 4353/6313/699 +f 4383/6315/700 4415/6504/659 4414/6310/665 +f 4398/6316/731 4425/6505/730 4393/6317/701 +f 4400/6319/665 4405/6312/655 4359/6314/697 +f 4416/6321/663 4415/6504/659 4383/6315/700 +f 4401/6323/659 4400/6319/665 4354/6320/696 +f 4417/6325/653 4416/6321/663 4384/6322/698 +f 4381/6302/699 4413/6502/662 4397/6327/658 +f 4402/6329/663 4401/6323/659 4355/6324/700 +f 4386/6331/701 4418/6506/664 4417/6325/653 +f 4403/6332/653 4402/6329/663 4356/6330/698 +f 4426/6334/732 4420/6503/734 4388/6304/699 +f 4397/6336/658 4418/6506/664 4386/6331/701 +f 4404/6338/664 4403/6332/653 4357/6333/695 +f 4421/6339/733 4426/6334/732 4394/6335/697 +f 4412/6341/732 4406/6345/734 4360/6342/699 +f 4390/6344/700 4422/6507/736 4421/6339/733 +f 4406/6345/734 4396/6508/731 4322/6346/656 +f 4407/6347/733 4412/6341/732 4366/6343/697 +f 4423/6349/735 4422/6507/736 4390/6344/700 +f 4408/6351/736 4407/6347/733 4361/6348/696 +f 4424/6353/671 4423/6349/735 4391/6350/698 +f 4396/6355/731 4411/6298/730 4365/6300/701 +f 4409/6357/735 4408/6351/736 4362/6352/700 +f 4393/6317/701 4425/6505/730 4424/6353/671 +f 4410/6359/671 4409/6357/735 4363/6358/698 +f 4399/6360/662 4395/6509/658 4314/6361/656 +f 4396/6362/731 4427/6399/741 4433/6363/737 +f 4436/6365/738 4440/6381/661 4426/6334/732 +f 4432/6367/739 4431/6385/742 4408/6368/736 +f 4412/6341/732 4434/6394/661 4429/6370/740 +f 4422/6372/736 4437/6389/742 4436/6365/738 +f 4430/6373/738 4434/6394/661 4412/6341/732 +f 4420/6375/734 4435/6397/740 4428/6376/741 +f 4438/6378/739 4437/6389/742 4422/6372/736 +f 4429/6370/740 4427/6392/741 4396/6380/731 +f 4440/6381/661 4435/6397/740 4420/6375/734 +f 4398/6382/731 4428/6388/741 4439/6383/737 +f 4431/6385/742 4430/6373/738 4407/6374/733 +f 4445/6386/743 4444/6510/745 4430/6373/738 +f 4442/6387/744 4453/6405/749 4439/6383/737 +f 4437/6389/742 4451/6511/743 4450/6390/745 +f 4432/6367/739 4446/6403/747 4445/6386/743 +f 4429/6370/740 4443/6512/748 4441/6391/744 +f 4448/6393/746 4443/6512/748 4429/6370/740 +f 4452/6395/747 4451/6511/743 4437/6389/742 +f 4454/6396/746 4449/6400/748 4435/6397/740 +f 4441/6398/744 4447/6402/749 4433/6363/737 +f 4430/6373/738 4444/6510/745 4448/6393/746 +f 4449/6400/748 4442/6513/744 4428/6376/741 +f 4450/6390/745 4454/6396/746 4440/6381/661 +f 4470/6406/652 4465/6420/656 4449/6407/748 +f 4463/6408/657 4455/6414/654 4410/6409/671 +f 4466/6411/672 4470/6406/652 4454/6396/746 +f 4451/6413/743 4467/6514/659 4466/6411/672 +f 4455/6414/654 4462/6433/689 4446/6415/747 +f 4468/6416/689 4467/6514/659 4451/6413/743 +f 4464/6418/652 4459/6431/656 4443/6419/748 +f 4465/6420/656 4458/6515/658 4442/6421/744 +f 4460/6422/672 4464/6418/652 4448/6393/746 +f 4456/6424/654 4468/6416/689 4452/6417/747 +f 4458/6426/658 4469/6434/657 4453/6427/749 +f 4461/6429/659 4460/6422/672 4444/6423/745 +f 4459/6431/656 4457/6516/658 4441/6432/744 +f 4462/6433/689 4461/6429/659 4445/6430/743 +f 4469/6434/657 4456/6424/654 4424/6425/671 +f 4457/6435/658 4463/6408/657 4447/6410/749 diff --git a/src/main/resources/assets/hbm/models/machines/pyrooven.obj b/src/main/resources/assets/hbm/models/machines/pyrooven.obj new file mode 100644 index 000000000..31300255a --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/pyrooven.obj @@ -0,0 +1,3366 @@ +# Blender v2.79 (sub 0) OBJ File: 'pyrooven.blend' +# www.blender.org +o Fan +v 1.500000 1.500000 1.375000 +v 1.391747 1.500000 1.437500 +v 1.391747 1.500000 1.562500 +v 1.500000 1.500000 1.625000 +v 1.608253 1.500000 1.562500 +v 1.608253 1.500000 1.437500 +v 1.500000 1.625000 1.375000 +v 1.391747 1.625000 1.437500 +v 1.391747 1.625000 1.562500 +v 1.500000 1.625000 1.625000 +v 1.608253 1.625000 1.562500 +v 1.608253 1.625000 1.437500 +v 1.608253 1.546324 1.560370 +v 1.608253 1.578676 1.439630 +v 2.041266 1.501839 1.726389 +v 2.041266 1.623161 1.273611 +v 1.498156 1.546324 1.376065 +v 1.393591 1.578676 1.436435 +v 1.425426 1.501839 0.918055 +v 1.033309 1.623161 1.144444 +v 1.393591 1.546324 1.563565 +v 1.498156 1.578676 1.623935 +v 1.033309 1.501839 1.855556 +v 1.425426 1.623161 2.081945 +vt 0.508475 0.829545 +vt 0.514124 0.818182 +vt 0.514124 0.829545 +vt 0.485876 0.829545 +vt 0.491525 0.818182 +vt 0.491525 0.829545 +vt 0.497175 0.829545 +vt 0.502825 0.818182 +vt 0.502825 0.829545 +vt 0.519774 0.818182 +vt 0.519774 0.829545 +vt 0.497175 0.818182 +vt 0.508475 0.818182 +vt 0.511326 0.831160 +vt 0.516923 0.831160 +vt 0.519721 0.840909 +vt 0.485876 0.829545 +vt 0.500000 0.869318 +vt 0.494350 0.869318 +vt 0.485876 0.829545 +vt 0.500000 0.869318 +vt 0.494350 0.869318 +vt 0.494350 0.869318 +vt 0.508475 0.829545 +vt 0.500000 0.869318 +vt 0.485876 0.818182 +vt 0.516923 0.850659 +vt 0.511326 0.850659 +vt 0.508527 0.840909 +vt 0.508475 0.829545 +vt 0.508475 0.829545 +vt 0.485876 0.829545 +vn 0.5000 0.0000 -0.8660 +vn 0.5000 0.0000 0.8660 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.5000 0.0000 0.8660 +vn -0.5000 0.0000 -0.8660 +vn 0.0000 1.0000 0.0000 +vn -0.0000 0.9659 0.2588 +vn 0.2241 0.9659 -0.1294 +vn -0.2241 0.9659 -0.1294 +s off +f 1/1/1 12/2/1 6/3/1 +f 5/4/2 10/5/2 4/6/2 +f 3/7/3 8/8/3 2/9/3 +f 6/3/4 11/10/4 5/11/4 +f 4/6/5 9/12/5 3/7/5 +f 2/9/6 7/13/6 1/1/6 +f 11/14/7 12/15/7 7/16/7 +f 15/17/8 14/18/8 13/19/8 +f 19/20/9 18/21/9 17/22/9 +f 21/23/10 24/24/10 22/25/10 +f 1/1/1 7/13/1 12/2/1 +f 5/4/2 11/26/2 10/5/2 +f 3/7/3 9/12/3 8/8/3 +f 6/3/4 12/2/4 11/10/4 +f 4/6/5 10/5/5 9/12/5 +f 2/9/6 8/8/6 7/13/6 +f 7/16/7 8/27/7 9/28/7 +f 9/28/7 10/29/7 7/16/7 +f 10/29/7 11/14/7 7/16/7 +f 15/17/8 16/30/8 14/18/8 +f 19/20/9 20/31/9 18/21/9 +f 21/23/10 23/32/10 24/24/10 +o Slider +v 2.250000 1.250000 0.250000 +v 2.250000 1.250000 -0.250000 +v 1.750000 1.250000 0.250000 +v 1.750000 1.250000 -0.250000 +v 2.250000 1.625000 0.250000 +v 2.250000 1.625000 -0.250000 +v 1.750000 1.625000 0.250000 +v 1.750000 1.625000 -0.250000 +vt 0.361582 0.806818 +vt 0.378531 0.852273 +vt 0.361582 0.852273 +vt 0.378531 0.886364 +vt 0.401130 0.852273 +vt 0.401130 0.886364 +vt 0.418079 0.852273 +vt 0.401130 0.806818 +vt 0.418079 0.806818 +vt 0.378531 0.772727 +vt 0.401130 0.772727 +vt 0.378531 0.806818 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 25/33/11 31/34/11 27/35/11 +f 27/36/12 32/37/12 28/38/12 +f 28/39/13 30/40/13 26/41/13 +f 30/40/14 25/42/14 26/43/14 +f 32/37/15 29/44/15 30/40/15 +f 25/33/11 29/44/11 31/34/11 +f 27/36/12 31/34/12 32/37/12 +f 28/39/13 32/37/13 30/40/13 +f 30/40/14 29/44/14 25/42/14 +f 32/37/15 31/34/15 29/44/15 +o Oven +v -2.500000 0.000000 3.500000 +v 2.500000 0.000000 3.500000 +v -2.500000 0.000000 -3.500000 +v 2.500000 0.000000 -3.500000 +v -2.500000 0.500000 3.500000 +v 2.500000 0.500000 3.500000 +v -2.500000 0.500000 -3.500000 +v 2.500000 0.500000 -3.500000 +v -2.375000 0.500000 3.375000 +v 0.375000 0.500000 3.375000 +v -2.375000 0.500000 2.875000 +v 0.375000 0.500000 2.875000 +v -2.375000 2.500000 2.875000 +v -2.375000 2.500000 3.375000 +v 0.375000 2.500000 3.375000 +v 0.375000 2.500000 2.875000 +v -1.625000 3.000000 2.875000 +v -1.625000 3.000000 3.375000 +v -0.375000 3.000000 3.375000 +v -0.375000 3.000000 2.875000 +v -2.375000 0.500000 -2.875000 +v 0.375000 0.500000 -2.875000 +v -2.375000 0.500000 -3.375000 +v 0.375000 0.500000 -3.375000 +v -2.375000 2.500000 -3.375000 +v -2.375000 2.500000 -2.875000 +v 0.375000 2.500000 -2.875000 +v 0.375000 2.500000 -3.375000 +v -1.625000 3.000000 -3.375000 +v -1.625000 3.000000 -2.875000 +v -0.375000 3.000000 -2.875000 +v -0.375000 3.000000 -3.375000 +v -2.375000 0.500000 -1.375000 +v 0.375000 0.500000 -1.375000 +v -2.375000 0.500000 -1.875000 +v 0.375000 0.500000 -1.875000 +v -2.375000 2.500000 -1.875000 +v -2.375000 2.500000 -1.375000 +v 0.375000 2.500000 -1.375000 +v 0.375000 2.500000 -1.875000 +v -1.625000 3.000000 -1.875000 +v -1.625000 3.000000 -1.375000 +v -0.375000 3.000000 -1.375000 +v -0.375000 3.000000 -1.875000 +v -2.375000 0.500000 1.875000 +v 0.375000 0.500000 1.875000 +v -2.375000 0.500000 1.375000 +v 0.375000 0.500000 1.375000 +v -2.375000 2.500000 1.375000 +v -2.375000 2.500000 1.875000 +v 0.375000 2.500000 1.875000 +v 0.375000 2.500000 1.375000 +v -1.625000 3.000000 1.375000 +v -1.625000 3.000000 1.875000 +v -0.375000 3.000000 1.875000 +v -0.375000 3.000000 1.375000 +v 0.250000 0.500000 -1.375000 +v 0.250000 0.500000 1.375000 +v 0.250000 2.375000 -1.375000 +v 0.250000 2.375000 1.375000 +v -0.500000 2.875000 -1.375000 +v -0.500000 2.875000 1.375000 +v -1.500000 2.875000 -1.375000 +v -1.500000 2.875000 1.375000 +v -2.250000 2.375000 -1.375000 +v -2.250000 2.375000 1.375000 +v -2.250000 0.500000 -1.375000 +v -2.250000 0.500000 1.375000 +v 0.250000 0.500000 1.875000 +v 0.250000 2.375000 1.875000 +v -0.500000 2.875000 1.875000 +v -1.500000 2.875000 1.875000 +v -2.250000 2.375000 1.875000 +v -2.250000 0.500000 1.875000 +v 0.250000 0.500000 2.875000 +v 0.250000 2.375000 2.875000 +v -0.500000 2.875000 2.875000 +v -1.500000 2.875000 2.875000 +v -2.250000 2.375000 2.875000 +v -2.250000 0.500000 2.875000 +v 0.250000 0.500000 -2.875000 +v 0.250000 2.375000 -2.875000 +v -0.500000 2.875000 -2.875000 +v -1.500000 2.875000 -2.875000 +v -2.250000 2.375000 -2.875000 +v -2.250000 0.500000 -2.875000 +v 0.250000 0.500000 -1.875000 +v 0.250000 2.375000 -1.875000 +v -0.500000 2.875000 -1.875000 +v -1.500000 2.875000 -1.875000 +v -2.250000 2.375000 -1.875000 +v -2.250000 0.500000 -1.875000 +v -1.000000 2.625000 3.375000 +v -1.500000 2.491026 3.375000 +v -1.866025 2.125000 3.375000 +v -2.000000 1.625000 3.375000 +v -1.866025 1.125000 3.375000 +v -1.500000 0.758975 3.375000 +v -1.000000 0.625000 3.375000 +v -0.500000 0.758975 3.375000 +v -0.133975 1.125000 3.375000 +v 0.000000 1.625000 3.375000 +v -0.133975 2.125000 3.375000 +v -0.500000 2.491025 3.375000 +v -1.000000 2.625000 3.500000 +v -1.500000 2.491026 3.500000 +v -1.866025 2.125000 3.500000 +v -2.000000 1.625000 3.500000 +v -1.866025 1.125000 3.500000 +v -1.500000 0.758975 3.500000 +v -1.000000 0.625000 3.500000 +v -0.500000 0.758975 3.500000 +v -0.133975 1.125000 3.500000 +v 0.000000 1.625000 3.500000 +v -0.133975 2.125000 3.500000 +v -0.500000 2.491025 3.500000 +v -1.500001 2.491025 -3.500000 +v -1.866026 2.125000 -3.500000 +v -2.000000 1.625000 -3.500000 +v -1.866025 1.125000 -3.500000 +v -1.500000 0.758975 -3.500000 +v -1.000000 0.625000 -3.500000 +v -0.500000 0.758975 -3.500000 +v -0.133975 1.125000 -3.500000 +v -0.000000 1.625000 -3.500000 +v -0.133975 2.125000 -3.500000 +v -0.500000 2.491026 -3.500000 +v -1.000000 2.625000 -3.500000 +v -1.500001 2.491025 -3.375000 +v -1.866026 2.125000 -3.375000 +v -2.000000 1.625000 -3.375000 +v -1.866025 1.125000 -3.375000 +v -1.500000 0.758975 -3.375000 +v -1.000000 0.625000 -3.375000 +v -0.500000 0.758975 -3.375000 +v -0.133975 1.125000 -3.375000 +v -0.000000 1.625000 -3.375000 +v -0.133975 2.125000 -3.375000 +v -0.500000 2.491026 -3.375000 +v -1.000000 2.625000 -3.375000 +v -0.625000 2.875000 2.000000 +v -1.375000 2.875000 2.000000 +v -0.625000 2.875000 2.750000 +v -1.375000 2.875000 2.750000 +v -1.312500 3.125000 2.062500 +v -0.687500 3.125000 2.062500 +v -1.312500 3.125000 2.687500 +v -0.687500 3.125000 2.687500 +v -1.375000 3.125000 2.000000 +v -0.625000 3.125000 2.000000 +v -1.375000 3.125000 2.750000 +v -0.625000 3.125000 2.750000 +v -1.312500 3.000000 2.062500 +v -0.687500 3.000000 2.062500 +v -1.312500 3.000000 2.687500 +v -0.687500 3.000000 2.687500 +v -1.312500 3.062500 2.062500 +v -0.687500 3.062500 2.062500 +v -1.312500 3.062500 2.687500 +v -0.687500 3.062500 2.687500 +v -0.625000 2.875000 -2.750000 +v -1.375000 2.875000 -2.750000 +v -0.625000 2.875000 -2.000000 +v -1.375000 2.875000 -2.000000 +v -1.312500 3.125000 -2.687500 +v -0.687500 3.125000 -2.687500 +v -1.312500 3.125000 -2.062500 +v -0.687500 3.125000 -2.062500 +v -1.375000 3.125000 -2.750000 +v -0.625000 3.125000 -2.750000 +v -1.375000 3.125000 -2.000000 +v -0.625000 3.125000 -2.000000 +v -1.312500 3.000000 -2.687500 +v -0.687500 3.000000 -2.687500 +v -1.312500 3.000000 -2.062500 +v -0.687500 3.000000 -2.062500 +v -1.312500 3.062500 -2.687500 +v -0.687500 3.062500 -2.687500 +v -1.312500 3.062500 -2.062500 +v -0.687500 3.062500 -2.062500 +v -0.625000 2.875000 -1.250000 +v -1.375000 2.875000 -1.250000 +v -0.625000 2.875000 -0.500000 +v -1.375000 2.875000 -0.500000 +v -1.312500 3.125000 -1.187500 +v -0.687500 3.125000 -1.187500 +v -1.312500 3.125000 -0.562500 +v -0.687500 3.125000 -0.562500 +v -1.375000 3.125000 -1.250000 +v -0.625000 3.125000 -1.250000 +v -1.375000 3.125000 -0.500000 +v -0.625000 3.125000 -0.500000 +v -1.312500 3.000000 -1.187500 +v -0.687500 3.000000 -1.187500 +v -1.312500 3.000000 -0.562500 +v -0.687500 3.000000 -0.562500 +v -1.312500 3.062500 -1.187500 +v -0.687500 3.062500 -1.187500 +v -1.312500 3.062500 -0.562500 +v -0.687500 3.062500 -0.562500 +v -0.625000 2.875000 0.500000 +v -1.375000 2.875000 0.500000 +v -0.625000 2.875000 1.250000 +v -1.375000 2.875000 1.250000 +v -1.312500 3.125000 0.562500 +v -0.687500 3.125000 0.562500 +v -1.312500 3.125000 1.187500 +v -0.687500 3.125000 1.187500 +v -1.375000 3.125000 0.500000 +v -0.625000 3.125000 0.500000 +v -1.375000 3.125000 1.250000 +v -0.625000 3.125000 1.250000 +v -1.312500 3.000000 0.562500 +v -0.687500 3.000000 0.562500 +v -1.312500 3.000000 1.187500 +v -0.687500 3.000000 1.187500 +v -1.312500 3.062500 0.562500 +v -0.687500 3.062500 0.562500 +v -1.312500 3.062500 1.187500 +v -0.687500 3.062500 1.187500 +v 0.875000 1.750000 2.125000 +v 2.125000 1.750000 2.125000 +v 0.875000 1.750000 0.875000 +v 2.125000 1.750000 0.875000 +v 2.250000 1.500000 0.750000 +v 0.750000 1.500000 0.750000 +v 2.250000 1.500000 2.250000 +v 0.750000 1.500000 2.250000 +v 0.500000 0.500000 -0.500000 +v 2.500000 0.500000 -0.500000 +v 0.500000 0.500000 -2.500000 +v 2.500000 0.500000 -2.500000 +v 2.500000 1.500000 -2.500000 +v 0.500000 1.500000 -2.500000 +v 2.500000 1.500000 -0.500000 +v 0.500000 1.500000 -0.500000 +v 0.500000 1.500000 2.500000 +v 2.500000 1.500000 2.500000 +v 0.500000 1.500000 0.500000 +v 2.500000 1.500000 0.500000 +v 2.500000 0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v 2.500000 0.500000 2.500000 +v 0.500000 0.500000 2.500000 +v 0.750000 1.750000 0.750000 +v 0.750000 1.750000 2.250000 +v 2.250000 1.750000 2.250000 +v 2.250000 1.750000 0.750000 +v 0.875000 1.500000 0.875000 +v 0.875000 1.500000 2.125000 +v 2.125000 1.500000 2.125000 +v 2.125000 1.500000 0.875000 +v -1.375000 3.000000 0.125000 +v -1.125000 3.000000 0.375000 +v -0.875000 3.000000 0.375000 +v -0.625000 3.000000 0.125000 +v -1.125000 3.000000 -0.375000 +v -1.375000 3.000000 -0.125000 +v -0.625000 3.000000 -0.125000 +v -0.875000 3.000000 -0.375000 +v -1.375000 2.875000 -0.125000 +v -1.125000 2.875000 -0.375000 +v -1.125000 2.875000 0.375000 +v -1.375000 2.875000 0.125000 +v -0.625000 2.875000 0.125000 +v -0.875000 2.875000 0.375000 +v -0.875000 2.875000 -0.375000 +v -0.625000 2.875000 -0.125000 +v 0.875000 1.687500 2.125000 +v 2.125000 1.687500 2.125000 +v 0.875000 1.687500 0.875000 +v 2.125000 1.687500 0.875000 +v 1.176777 2.801777 -0.823223 +v 0.875000 2.801777 -0.698223 +v 0.875000 2.625000 -0.625000 +v 0.875000 2.448223 -0.698223 +v 0.875000 2.375000 -0.875000 +v 0.875000 2.448223 -1.051777 +v 0.875000 2.801777 -1.051777 +v 0.875000 2.875000 -0.875000 +v 0.875000 2.000000 -1.500000 +v 0.948223 2.000000 -1.323223 +v 1.125000 2.000000 -1.250000 +v 1.301777 2.000000 -1.323223 +v 1.375000 2.000000 -1.500000 +v 1.301777 2.000000 -1.676777 +v 1.125000 2.000000 -1.750000 +v 0.948223 2.000000 -1.676777 +v 0.948223 2.375000 -1.676777 +v 1.125000 2.375000 -1.750000 +v 1.301777 2.375000 -1.676777 +v 1.375000 2.375000 -1.500000 +v 1.301777 2.375000 -1.323223 +v 1.125000 2.375000 -1.250000 +v 0.948223 2.375000 -1.323223 +v 0.875000 2.375000 -1.500000 +v 0.875000 2.551777 -1.426777 +v 0.948223 2.426777 -1.301777 +v 1.301777 2.426777 -1.301777 +v 1.375000 2.551777 -1.426777 +v 1.301777 2.676777 -1.551777 +v 1.125000 2.728553 -1.603553 +v 2.250000 2.000000 -2.250000 +v 0.750000 2.000000 -2.250000 +v 2.250000 2.000000 -0.750000 +v 0.750000 2.000000 -0.750000 +v 0.750000 1.500000 -0.750000 +v 2.250000 1.500000 -0.750000 +v 0.750000 1.500000 -2.250000 +v 2.250000 1.500000 -2.250000 +v 0.500000 0.500000 0.250000 +v 2.500000 0.500000 0.250000 +v 0.500000 0.500000 -0.250000 +v 2.500000 0.500000 -0.250000 +v 0.500000 1.250000 -0.250000 +v 0.500000 1.250000 0.250000 +v 2.500000 1.250000 0.250000 +v 2.500000 1.250000 -0.250000 +v 0.625000 1.250000 -0.031250 +v 0.625000 1.250000 0.031250 +v 2.375000 1.250000 0.031250 +v 2.375000 1.250000 -0.031250 +v 0.625000 1.500000 -0.031250 +v 0.625000 1.500000 0.031250 +v 2.375000 1.500000 0.031250 +v 2.375000 1.500000 -0.031250 +v 0.625000 1.250000 -0.125000 +v 0.625000 1.250000 -0.062500 +v 2.375000 1.250000 -0.062500 +v 2.375000 1.250000 -0.125000 +v 0.625000 1.500000 -0.125000 +v 0.625000 1.500000 -0.062500 +v 2.375000 1.500000 -0.062500 +v 2.375000 1.500000 -0.125000 +v 0.625000 1.250000 0.062500 +v 0.625000 1.250000 0.125000 +v 2.375000 1.250000 0.125000 +v 2.375000 1.250000 0.062500 +v 0.625000 1.500000 0.062500 +v 0.625000 1.500000 0.125000 +v 2.375000 1.500000 0.125000 +v 2.375000 1.500000 0.062500 +v 0.625000 1.250000 -0.218750 +v 0.625000 1.250000 -0.156250 +v 2.375000 1.250000 -0.156250 +v 2.375000 1.250000 -0.218750 +v 0.625000 1.500000 -0.218750 +v 0.625000 1.500000 -0.156250 +v 2.375000 1.500000 -0.156250 +v 2.375000 1.500000 -0.218750 +v 0.625000 1.250000 0.156250 +v 0.625000 1.250000 0.218750 +v 2.375000 1.250000 0.218750 +v 2.375000 1.250000 0.156250 +v 0.625000 1.500000 0.156250 +v 0.625000 1.500000 0.218750 +v 2.375000 1.500000 0.218750 +v 2.375000 1.500000 0.156250 +v 1.500000 1.125000 0.500000 +v 1.323223 1.051777 0.500000 +v 1.250000 0.875000 0.500000 +v 1.323223 0.698223 0.500000 +v 1.500000 0.625000 0.500000 +v 1.676777 0.698223 0.500000 +v 1.750000 0.875000 0.500000 +v 1.676777 1.051777 0.500000 +v 1.500000 1.125000 -0.500000 +v 1.323223 1.051777 -0.500000 +v 1.250000 0.875000 -0.500000 +v 1.323223 0.698223 -0.500000 +v 1.500000 0.625000 -0.500000 +v 1.676777 0.698223 -0.500000 +v 1.750000 0.875000 -0.500000 +v 1.676777 1.051777 -0.500000 +v 2.125000 1.125000 0.500000 +v 1.948223 1.051777 0.500000 +v 1.875000 0.875000 0.500000 +v 1.948223 0.698223 0.500000 +v 2.125000 0.625000 0.500000 +v 2.301777 0.698223 0.500000 +v 2.375000 0.875000 0.500000 +v 2.301777 1.051777 0.500000 +v 2.125000 1.125000 -0.500000 +v 1.948223 1.051777 -0.500000 +v 1.875000 0.875000 -0.500000 +v 1.948223 0.698223 -0.500000 +v 2.125000 0.625000 -0.500000 +v 2.301777 0.698223 -0.500000 +v 2.375000 0.875000 -0.500000 +v 2.301777 1.051777 -0.500000 +v 0.875000 1.125000 0.500000 +v 0.698223 1.051777 0.500000 +v 0.625000 0.875000 0.500000 +v 0.698223 0.698223 0.500000 +v 0.875000 0.625000 0.500000 +v 1.051777 0.698223 0.500000 +v 1.125000 0.875000 0.500000 +v 1.051777 1.051777 0.500000 +v 0.875000 1.125000 -0.500000 +v 0.698223 1.051777 -0.500000 +v 0.625000 0.875000 -0.500000 +v 0.698223 0.698223 -0.500000 +v 0.875000 0.625000 -0.500000 +v 1.051777 0.698223 -0.500000 +v 1.125000 0.875000 -0.500000 +v 1.051777 1.051777 -0.500000 +v 1.429917 1.382583 2.500000 +v 1.562500 1.437500 2.500000 +v 1.695083 1.382583 2.500000 +v 1.750000 1.250000 2.500000 +v 1.695083 1.117417 2.500000 +v 1.562500 1.062500 2.500000 +v 1.429917 1.117417 2.500000 +v 1.413833 1.117417 2.538833 +v 1.507583 1.062500 2.632582 +v 1.601333 1.117417 2.726332 +v 1.640165 1.250000 2.765165 +v 1.601333 1.382583 2.726332 +v 1.507583 1.437500 2.632582 +v 1.413833 1.382583 2.538833 +v 1.375000 1.250000 2.500000 +v 1.375000 1.382583 2.554918 +v 1.375000 1.437500 2.687500 +v 1.375000 1.382583 2.820082 +v 1.375000 1.250000 2.875000 +v 1.375000 1.117417 2.820082 +v 1.375000 1.062500 2.687500 +v 1.375000 1.117417 2.554918 +v 0.250000 1.117417 2.554918 +v 0.250000 1.062500 2.687500 +v 0.250000 1.117417 2.820082 +v 0.250000 1.250000 2.875000 +v 0.250000 1.382583 2.820082 +v 0.250000 1.437500 2.687500 +v 0.250000 1.382583 2.554918 +v 0.250000 1.250000 2.500000 +v 0.375000 1.250000 2.937500 +v 0.375000 1.382583 2.992418 +v 0.375000 1.437500 3.125000 +v 0.375000 1.382583 3.257582 +v 0.375000 1.250000 3.312500 +v 0.375000 1.117417 3.257582 +v 0.375000 1.062500 3.125000 +v 0.375000 1.117417 2.992418 +v 1.875000 1.117417 2.992418 +v 1.875000 1.062500 3.125000 +v 1.875000 1.117417 3.257582 +v 1.875000 1.250000 3.312500 +v 1.875000 1.382583 3.257582 +v 1.875000 1.437500 3.125000 +v 1.875000 1.382583 2.992418 +v 1.875000 1.250000 2.937500 +v 1.913833 1.382583 2.976333 +v 2.007583 1.437500 3.070082 +v 2.101333 1.382583 3.163832 +v 2.140165 1.250000 3.202665 +v 2.101333 1.117417 3.163832 +v 2.007583 1.062500 3.070082 +v 1.913833 1.117417 2.976333 +v 1.929917 1.117417 2.937500 +v 2.062500 1.062500 2.937500 +v 2.195083 1.117417 2.937500 +v 2.250000 1.250000 2.937500 +v 2.195083 1.382583 2.937500 +v 2.062500 1.437500 2.937500 +v 1.929917 1.382583 2.937500 +v 1.929917 1.382583 2.500000 +v 2.062500 1.437500 2.500000 +v 2.195083 1.382583 2.500000 +v 2.250000 1.250000 2.500000 +v 2.195083 1.117417 2.500000 +v 2.062500 1.062500 2.500000 +v 1.929917 1.117417 2.500000 +v 1.875000 1.250000 2.500000 +v 0.948223 2.676777 -1.551777 +v 0.948223 2.801777 -1.250000 +v 1.125000 2.875000 -1.250000 +v 1.301777 2.801777 -1.250000 +v 1.375000 2.625000 -1.250000 +v 1.301777 2.448223 -1.250000 +v 0.948223 2.448223 -1.250000 +v 0.875000 2.625000 -1.250000 +v 1.625000 2.625000 -1.250000 +v 1.698223 2.448223 -1.250000 +v 2.051777 2.448223 -1.250000 +v 2.125000 2.625000 -1.250000 +v 2.051777 2.801777 -1.250000 +v 1.875000 2.875000 -1.250000 +v 1.698223 2.801777 -1.250000 +v 1.698223 2.676777 -1.551777 +v 1.875000 2.728553 -1.603553 +v 2.051777 2.676777 -1.551777 +v 2.125000 2.551777 -1.426777 +v 2.051777 2.426777 -1.301777 +v 1.698223 2.426777 -1.301777 +v 1.625000 2.551777 -1.426777 +v 1.625000 2.375000 -1.500000 +v 1.698223 2.375000 -1.323223 +v 1.875000 2.375000 -1.250000 +v 2.051777 2.375000 -1.323223 +v 2.125000 2.375000 -1.500000 +v 2.051777 2.375000 -1.676777 +v 1.875000 2.375000 -1.750000 +v 1.698223 2.375000 -1.676777 +v 1.698223 2.000000 -1.676777 +v 1.875000 2.000000 -1.750000 +v 2.051777 2.000000 -1.676777 +v 2.125000 2.000000 -1.500000 +v 2.051777 2.000000 -1.323223 +v 1.875000 2.000000 -1.250000 +v 1.698223 2.000000 -1.323223 +v 1.625000 2.000000 -1.500000 +v 1.625000 2.875000 0.875000 +v 1.625000 2.801777 0.698223 +v 1.625000 2.448223 0.698223 +v 1.625000 2.375000 0.875000 +v 1.625000 2.448223 1.051777 +v 1.625000 2.625000 1.125000 +v 1.625000 2.801777 1.051777 +v 1.926777 2.801777 0.926777 +v 1.978553 2.625000 0.978553 +v 1.926777 2.448223 0.926777 +v 1.801777 2.375000 0.801777 +v 1.676777 2.448223 0.676777 +v 1.676777 2.801777 0.676777 +v 1.801777 2.875000 0.801777 +v 1.875000 2.875000 0.625000 +v 1.698223 2.801777 0.625000 +v 1.625000 2.625000 0.625000 +v 1.698223 2.448223 0.625000 +v 1.875000 2.375000 0.625000 +v 2.051777 2.448223 0.625000 +v 2.125000 2.625000 0.625000 +v 2.051777 2.801777 0.625000 +v 0.948223 2.801777 -1.125000 +v 1.125000 2.875000 -1.125000 +v 1.051777 2.875000 -0.948223 +v 0.926777 2.801777 -1.073223 +v 0.926777 2.448223 -1.073223 +v 1.051777 2.375000 -0.948223 +v 1.176777 2.448223 -0.823223 +v 1.228553 2.625000 -0.771447 +v -0.500000 2.875000 0.875000 +v -0.500000 2.801777 0.698223 +v -0.500000 2.448223 0.698223 +v -0.500000 2.375000 0.875000 +v -0.500000 2.448223 1.051777 +v -0.500000 2.625000 1.125000 +v -0.500000 2.801777 1.051777 +v -0.500000 2.625000 0.625000 +v 0.875000 2.625000 -1.125000 +v 0.948223 2.448223 -1.125000 +v 1.125000 2.375000 -1.125000 +v 1.301777 2.448223 -1.125000 +v 1.375000 2.625000 -1.125000 +v 1.301777 2.801777 -1.125000 +v -0.500000 2.875000 -0.875000 +v -0.500000 2.801777 -1.051777 +v -0.500000 2.448223 -1.051777 +v -0.500000 2.375000 -0.875000 +v -0.500000 2.448223 -0.698223 +v -0.500000 2.625000 -0.625000 +v -0.500000 2.801777 -0.698223 +v -0.500000 2.625000 -1.125000 +v 2.000000 2.000000 -2.250000 +v 2.000000 2.000000 -0.750000 +v 2.000000 1.500000 -0.750000 +v 2.000000 1.500000 -2.250000 +v 2.000000 2.125000 -2.250000 +v 2.000000 2.125000 -0.750000 +v 2.000000 2.000000 -0.625000 +v 2.000000 1.500000 -0.625000 +v 2.000000 2.000000 -2.375000 +v 2.000000 1.500000 -2.375000 +v 1.750000 2.000000 -2.250000 +v 1.750000 1.500000 -2.250000 +v 1.750000 2.000000 -0.750000 +v 1.750000 1.500000 -0.750000 +v 1.750000 2.125000 -0.750000 +v 1.750000 2.125000 -2.250000 +v 1.750000 2.000000 -0.625000 +v 1.750000 1.500000 -0.625000 +v 1.750000 2.000000 -2.375000 +v 1.750000 1.500000 -2.375000 +v 1.250000 2.000000 -2.250000 +v 1.250000 2.000000 -0.750000 +v 1.250000 1.500000 -0.750000 +v 1.250000 1.500000 -2.250000 +v 1.250000 2.125000 -2.250000 +v 1.250000 2.125000 -0.750000 +v 1.250000 2.000000 -0.625000 +v 1.250000 1.500000 -0.625000 +v 1.250000 2.000000 -2.375000 +v 1.250000 1.500000 -2.375000 +v 1.000000 2.000000 -2.250000 +v 1.000000 1.500000 -2.250000 +v 1.000000 2.000000 -0.750000 +v 1.000000 1.500000 -0.750000 +v 1.000000 2.125000 -0.750000 +v 1.000000 2.125000 -2.250000 +v 1.000000 2.000000 -0.625000 +v 1.000000 1.500000 -0.625000 +v 1.000000 2.000000 -2.375000 +v 1.000000 1.500000 -2.375000 +v 1.429917 0.882583 2.500000 +v 1.562500 0.937500 2.500000 +v 1.695083 0.882583 2.500000 +v 1.750000 0.750000 2.500000 +v 1.695083 0.617417 2.500000 +v 1.562500 0.562500 2.500000 +v 1.429917 0.617417 2.500000 +v 1.413833 0.617417 2.538833 +v 1.507583 0.562500 2.632582 +v 1.601333 0.617417 2.726332 +v 1.640165 0.750000 2.765165 +v 1.601333 0.882583 2.726332 +v 1.507583 0.937500 2.632582 +v 1.413833 0.882583 2.538833 +v 1.375000 0.750000 2.500000 +v 1.375000 0.882583 2.554918 +v 1.375000 0.937500 2.687500 +v 1.375000 0.882583 2.820082 +v 1.375000 0.750000 2.875000 +v 1.375000 0.617417 2.820082 +v 1.375000 0.562500 2.687500 +v 1.375000 0.617417 2.554918 +v 0.250000 0.617417 2.554918 +v 0.250000 0.562500 2.687500 +v 0.250000 0.617417 2.820082 +v 0.250000 0.750000 2.875000 +v 0.250000 0.882583 2.820082 +v 0.250000 0.937500 2.687500 +v 0.250000 0.882583 2.554918 +v 0.250000 0.750000 2.500000 +v 0.375000 0.750000 2.937500 +v 0.375000 0.882583 2.992418 +v 0.375000 0.937500 3.125000 +v 0.375000 0.882583 3.257582 +v 0.375000 0.750000 3.312500 +v 0.375000 0.617417 3.257582 +v 0.375000 0.562500 3.125000 +v 0.375000 0.617417 2.992418 +v 1.875000 0.617417 2.992418 +v 1.875000 0.562500 3.125000 +v 1.875000 0.617417 3.257582 +v 1.875000 0.750000 3.312500 +v 1.875000 0.882583 3.257582 +v 1.875000 0.937500 3.125000 +v 1.875000 0.882583 2.992418 +v 1.875000 0.750000 2.937500 +v 1.913833 0.882583 2.976333 +v 2.007583 0.937500 3.070082 +v 2.101333 0.882583 3.163832 +v 2.140165 0.750000 3.202665 +v 2.101333 0.617417 3.163832 +v 2.007583 0.562500 3.070082 +v 1.913833 0.617417 2.976333 +v 1.929917 0.617417 2.937500 +v 2.062500 0.562500 2.937500 +v 2.195083 0.617417 2.937500 +v 2.250000 0.750000 2.937500 +v 2.195083 0.882583 2.937500 +v 2.062500 0.937500 2.937500 +v 1.929917 0.882583 2.937500 +v 1.929917 0.882583 2.500000 +v 2.062500 0.937500 2.500000 +v 2.195083 0.882583 2.500000 +v 2.250000 0.750000 2.500000 +v 2.195083 0.617417 2.500000 +v 2.062500 0.562500 2.500000 +v 1.929917 0.617417 2.500000 +v 1.875000 0.750000 2.500000 +v 1.429917 1.382583 -2.500000 +v 1.562500 1.437500 -2.500000 +v 1.695083 1.382583 -2.500000 +v 1.750000 1.250000 -2.500000 +v 1.695083 1.117417 -2.500000 +v 1.562500 1.062500 -2.500000 +v 1.429917 1.117417 -2.500000 +v 1.413833 1.117417 -2.538833 +v 1.507583 1.062500 -2.632582 +v 1.601333 1.117417 -2.726332 +v 1.640165 1.250000 -2.765165 +v 1.601333 1.382583 -2.726332 +v 1.507583 1.437500 -2.632582 +v 1.413833 1.382583 -2.538833 +v 1.375000 1.250000 -2.500000 +v 1.375000 1.382583 -2.554918 +v 1.375000 1.437500 -2.687500 +v 1.375000 1.382583 -2.820082 +v 1.375000 1.250000 -2.875000 +v 1.375000 1.117417 -2.820082 +v 1.375000 1.062500 -2.687500 +v 1.375000 1.117417 -2.554918 +v 0.250000 1.117417 -2.554918 +v 0.250000 1.062500 -2.687500 +v 0.250000 1.117417 -2.820082 +v 0.250000 1.250000 -2.875000 +v 0.250000 1.382583 -2.820082 +v 0.250000 1.437500 -2.687500 +v 0.250000 1.382583 -2.554918 +v 0.250000 1.250000 -2.500000 +v 0.375000 1.250000 -2.937500 +v 0.375000 1.382583 -2.992418 +v 0.375000 1.437500 -3.125000 +v 0.375000 1.382583 -3.257582 +v 0.375000 1.250000 -3.312500 +v 0.375000 1.117417 -3.257582 +v 0.375000 1.062500 -3.125000 +v 0.375000 1.117417 -2.992418 +v 1.875000 1.117417 -2.992418 +v 1.875000 1.062500 -3.125000 +v 1.875000 1.117417 -3.257582 +v 1.875000 1.250000 -3.312500 +v 1.875000 1.382583 -3.257582 +v 1.875000 1.437500 -3.125000 +v 1.875000 1.382583 -2.992418 +v 1.875000 1.250000 -2.937500 +v 1.913833 1.382583 -2.976333 +v 2.007583 1.437500 -3.070082 +v 2.101333 1.382583 -3.163832 +v 2.140165 1.250000 -3.202665 +v 2.101333 1.117417 -3.163832 +v 2.007583 1.062500 -3.070082 +v 1.913833 1.117417 -2.976333 +v 1.929917 1.117417 -2.937500 +v 2.062500 1.062500 -2.937500 +v 2.195083 1.117417 -2.937500 +v 2.250000 1.250000 -2.937500 +v 2.195083 1.382583 -2.937500 +v 2.062500 1.437500 -2.937500 +v 1.929917 1.382583 -2.937500 +v 1.929917 1.382583 -2.500000 +v 2.062500 1.437500 -2.500000 +v 2.195083 1.382583 -2.500000 +v 2.250000 1.250000 -2.500000 +v 2.195083 1.117417 -2.500000 +v 2.062500 1.062500 -2.500000 +v 1.929917 1.117417 -2.500000 +v 1.875000 1.250000 -2.500000 +v 1.429917 0.882583 -2.500000 +v 1.562500 0.937500 -2.500000 +v 1.695083 0.882583 -2.500000 +v 1.750000 0.750000 -2.500000 +v 1.695083 0.617417 -2.500000 +v 1.562500 0.562500 -2.500000 +v 1.429917 0.617417 -2.500000 +v 1.413833 0.617417 -2.538833 +v 1.507583 0.562500 -2.632582 +v 1.601333 0.617417 -2.726332 +v 1.640165 0.750000 -2.765165 +v 1.601333 0.882583 -2.726332 +v 1.507583 0.937500 -2.632582 +v 1.413833 0.882583 -2.538833 +v 1.375000 0.750000 -2.500000 +v 1.375000 0.882583 -2.554918 +v 1.375000 0.937500 -2.687500 +v 1.375000 0.882583 -2.820082 +v 1.375000 0.750000 -2.875000 +v 1.375000 0.617417 -2.820082 +v 1.375000 0.562500 -2.687500 +v 1.375000 0.617417 -2.554918 +v 0.250000 0.617417 -2.554918 +v 0.250000 0.562500 -2.687500 +v 0.250000 0.617417 -2.820082 +v 0.250000 0.750000 -2.875000 +v 0.250000 0.882583 -2.820082 +v 0.250000 0.937500 -2.687500 +v 0.250000 0.882583 -2.554918 +v 0.250000 0.750000 -2.500000 +v 0.375000 0.750000 -2.937500 +v 0.375000 0.882583 -2.992418 +v 0.375000 0.937500 -3.125000 +v 0.375000 0.882583 -3.257582 +v 0.375000 0.750000 -3.312500 +v 0.375000 0.617417 -3.257582 +v 0.375000 0.562500 -3.125000 +v 0.375000 0.617417 -2.992418 +v 1.875000 0.617417 -2.992418 +v 1.875000 0.562500 -3.125000 +v 1.875000 0.617417 -3.257582 +v 1.875000 0.750000 -3.312500 +v 1.875000 0.882583 -3.257582 +v 1.875000 0.937500 -3.125000 +v 1.875000 0.882583 -2.992418 +v 1.875000 0.750000 -2.937500 +v 1.913833 0.882583 -2.976333 +v 2.007583 0.937500 -3.070082 +v 2.101333 0.882583 -3.163832 +v 2.140165 0.750000 -3.202665 +v 2.101333 0.617417 -3.163832 +v 2.007583 0.562500 -3.070082 +v 1.913833 0.617417 -2.976333 +v 1.929917 0.617417 -2.937500 +v 2.062500 0.562500 -2.937500 +v 2.195083 0.617417 -2.937500 +v 2.250000 0.750000 -2.937500 +v 2.195083 0.882583 -2.937500 +v 2.062500 0.937500 -2.937500 +v 1.929917 0.882583 -2.937500 +v 1.929917 0.882583 -2.500000 +v 2.062500 0.937500 -2.500000 +v 2.195083 0.882583 -2.500000 +v 2.250000 0.750000 -2.500000 +v 2.195083 0.617417 -2.500000 +v 2.062500 0.562500 -2.500000 +v 1.929917 0.617417 -2.500000 +v 1.875000 0.750000 -2.500000 +vt 0.338983 0.000000 +vt 0.022599 0.454545 +vt 0.022599 0.000000 +vt 0.022599 0.500000 +vt 0.338983 0.954545 +vt 0.022599 0.954545 +vt 0.361582 0.954545 +vt 0.338983 0.500000 +vt 0.361582 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.954545 +vt 0.338983 0.454545 +vt 0.022599 1.000000 +vt 0.338983 1.000000 +vt 0.361582 0.227273 +vt 0.395480 0.272727 +vt 0.361582 0.272727 +vt 0.361582 0.227273 +vt 0.395480 0.272727 +vt 0.361582 0.272727 +vt 0.508475 -0.000000 +vt 0.485876 0.181818 +vt 0.485876 -0.000000 +vt 0.361582 -0.000000 +vt 0.338983 0.181818 +vt 0.338983 -0.000000 +vt 0.361582 0.500000 +vt 0.485876 0.318182 +vt 0.485876 0.500000 +vt 0.361582 0.181818 +vt 0.451977 0.227273 +vt 0.395480 0.227273 +vt 0.361582 0.318182 +vt 0.451977 0.272727 +vt 0.485876 0.272727 +vt 0.485876 0.227273 +vt 0.508475 -0.000000 +vt 0.485876 0.181818 +vt 0.485876 -0.000000 +vt 0.361582 -0.000000 +vt 0.338983 0.181818 +vt 0.338983 -0.000000 +vt 0.361582 0.500000 +vt 0.485876 0.318182 +vt 0.485876 0.500000 +vt 0.361582 0.181818 +vt 0.451977 0.227273 +vt 0.395480 0.227273 +vt 0.361582 0.318182 +vt 0.451977 0.272727 +vt 0.485876 0.272727 +vt 0.485876 0.227273 +vt 0.361582 0.227273 +vt 0.395480 0.272727 +vt 0.361582 0.272727 +vt 0.508475 -0.000000 +vt 0.485876 0.181818 +vt 0.485876 -0.000000 +vt 0.361582 -0.000000 +vt 0.338983 0.181818 +vt 0.338983 -0.000000 +vt 0.361582 0.500000 +vt 0.485876 0.318182 +vt 0.485876 0.500000 +vt 0.361582 0.181818 +vt 0.451977 0.227273 +vt 0.395480 0.227273 +vt 0.361582 0.318182 +vt 0.451977 0.272727 +vt 0.485876 0.272727 +vt 0.485876 0.227273 +vt 0.361582 0.227273 +vt 0.395480 0.272727 +vt 0.361582 0.272727 +vt 0.508475 -0.000000 +vt 0.485876 0.181818 +vt 0.485876 -0.000000 +vt 0.361582 -0.000000 +vt 0.338983 0.181818 +vt 0.338983 -0.000000 +vt 0.361582 0.500000 +vt 0.485876 0.318182 +vt 0.485876 0.500000 +vt 0.361582 0.181818 +vt 0.451977 0.227273 +vt 0.395480 0.227273 +vt 0.361582 0.318182 +vt 0.451977 0.272727 +vt 0.485876 0.272727 +vt 0.485876 0.227273 +vt 0.677966 0.170455 +vt 0.553672 -0.000000 +vt 0.677966 -0.000000 +vt 0.553672 0.238636 +vt 0.553672 0.170455 +vt 0.677966 0.238636 +vt 0.553672 0.329545 +vt 0.677966 0.329545 +vt 0.553672 0.397727 +vt 0.677966 0.397727 +vt 0.553672 0.568182 +vt 0.553672 0.397727 +vt 0.508475 0.329545 +vt 0.553672 0.329545 +vt 0.553672 0.238636 +vt 0.508475 0.170455 +vt 0.553672 0.170455 +vt 0.553672 0.568182 +vt 0.508475 0.397727 +vt 0.508475 0.238636 +vt 0.553672 -0.000000 +vt 0.723164 0.397727 +vt 0.677966 0.329545 +vt 0.723164 0.329545 +vt 0.723164 0.238636 +vt 0.677966 0.170455 +vt 0.723164 0.170455 +vt 0.723164 0.568182 +vt 0.677966 0.397727 +vt 0.677966 0.238636 +vt 0.723164 -0.000000 +vt 0.988274 0.136340 +vt 0.949153 0.181770 +vt 0.910031 0.045479 +vt 0.988274 0.045478 +vt 0.988274 0.136340 +vt 0.949153 0.181770 +vt 0.497175 0.886364 +vt 0.429379 0.909091 +vt 0.429379 0.886364 +vt 0.632768 0.886364 +vt 0.564972 0.909091 +vt 0.564972 0.886364 +vt 0.497175 0.909091 +vt 0.361582 0.909091 +vt 0.361582 0.886364 +vt 0.666667 0.676136 +vt 0.694915 0.664773 +vt 0.694915 0.676136 +vt 0.697740 0.568182 +vt 0.663842 0.590909 +vt 0.663842 0.568182 +vt 0.646893 0.602273 +vt 0.658192 0.670455 +vt 0.646893 0.670455 +vt 0.663842 0.704545 +vt 0.697740 0.681818 +vt 0.697740 0.704545 +vt 0.714689 0.670455 +vt 0.703390 0.602273 +vt 0.714689 0.602273 +vt 0.700565 0.607955 +vt 0.703390 0.670455 +vt 0.700565 0.664773 +vt 0.661017 0.664773 +vt 0.658192 0.602273 +vt 0.661017 0.607955 +vt 0.663842 0.681818 +vt 0.666667 0.596591 +vt 0.697740 0.590909 +vt 0.694915 0.596591 +vt 0.666667 0.607955 +vt 0.694915 0.607955 +vt 0.666667 0.664773 +vt 0.629943 0.761364 +vt 0.601695 0.704545 +vt 0.629943 0.704545 +vt 0.666667 0.676136 +vt 0.694915 0.664773 +vt 0.694915 0.676136 +vt 0.697740 0.568182 +vt 0.663842 0.590909 +vt 0.663842 0.568182 +vt 0.646893 0.602273 +vt 0.658192 0.670455 +vt 0.646893 0.670455 +vt 0.663842 0.704545 +vt 0.697740 0.681818 +vt 0.697740 0.704545 +vt 0.714689 0.670455 +vt 0.703390 0.602273 +vt 0.714689 0.602273 +vt 0.700565 0.607955 +vt 0.703390 0.670455 +vt 0.700565 0.664773 +vt 0.661017 0.664773 +vt 0.658192 0.602273 +vt 0.661017 0.607955 +vt 0.663842 0.681818 +vt 0.666667 0.596591 +vt 0.697740 0.590909 +vt 0.694915 0.596591 +vt 0.666667 0.607955 +vt 0.694915 0.607955 +vt 0.666667 0.664773 +vt 0.629943 0.761364 +vt 0.601695 0.704545 +vt 0.629943 0.704545 +vt 0.666667 0.676136 +vt 0.694915 0.664773 +vt 0.694915 0.676136 +vt 0.697740 0.568182 +vt 0.663842 0.590909 +vt 0.663842 0.568182 +vt 0.646893 0.602273 +vt 0.658192 0.670455 +vt 0.646893 0.670455 +vt 0.663842 0.704545 +vt 0.697740 0.681818 +vt 0.697740 0.704545 +vt 0.714689 0.670455 +vt 0.703390 0.602273 +vt 0.714689 0.602273 +vt 0.700565 0.607955 +vt 0.703390 0.670455 +vt 0.700565 0.664773 +vt 0.661017 0.664773 +vt 0.658192 0.602273 +vt 0.661017 0.607955 +vt 0.663842 0.681818 +vt 0.666667 0.596591 +vt 0.697740 0.590909 +vt 0.694915 0.596591 +vt 0.666667 0.607955 +vt 0.694915 0.607955 +vt 0.666667 0.664773 +vt 0.629943 0.761364 +vt 0.601695 0.704545 +vt 0.629943 0.704545 +vt 0.666667 0.676136 +vt 0.694915 0.664773 +vt 0.694915 0.676136 +vt 0.697740 0.568182 +vt 0.663842 0.590909 +vt 0.663842 0.568182 +vt 0.646893 0.602273 +vt 0.658192 0.670455 +vt 0.646893 0.670455 +vt 0.663842 0.704545 +vt 0.697740 0.681818 +vt 0.697740 0.704545 +vt 0.714689 0.670455 +vt 0.703390 0.602273 +vt 0.714689 0.602273 +vt 0.700565 0.607955 +vt 0.703390 0.670455 +vt 0.700565 0.664773 +vt 0.661017 0.664773 +vt 0.658192 0.602273 +vt 0.661017 0.607955 +vt 0.663842 0.681818 +vt 0.666667 0.596591 +vt 0.697740 0.590909 +vt 0.694915 0.596591 +vt 0.666667 0.607955 +vt 0.694915 0.607955 +vt 0.666667 0.664773 +vt 0.629943 0.761364 +vt 0.601695 0.704545 +vt 0.629943 0.704545 +vt 0.559322 0.920455 +vt 0.502825 0.943182 +vt 0.502825 0.920455 +vt 0.587571 0.590909 +vt 0.590395 0.750000 +vt 0.587571 0.750000 +vt 0.768362 0.454545 +vt 0.858757 0.636364 +vt 0.768362 0.636364 +vt 0.723164 0.454545 +vt 0.723164 0.636364 +vt 0.903955 0.636364 +vt 0.858757 0.454545 +vt 0.903955 0.454545 +vt 0.768362 0.727273 +vt 0.858757 0.727273 +vt 0.858757 0.363636 +vt 0.768362 0.363636 +vt 0.858757 -0.000000 +vt 0.768362 0.090909 +vt 0.768362 -0.000000 +vt 0.768362 0.363636 +vt 0.858757 0.272727 +vt 0.858757 0.363636 +vt 0.903955 0.272727 +vt 0.858757 0.090909 +vt 0.903955 0.090909 +vt 0.723164 0.090909 +vt 0.768362 0.272727 +vt 0.723164 0.272727 +vt 0.587571 0.590909 +vt 0.590395 0.750000 +vt 0.587571 0.750000 +vt 0.570621 0.920455 +vt 0.632768 0.909091 +vt 0.627119 0.920455 +vt 0.367232 0.920455 +vt 0.423729 0.920455 +vt 0.435028 0.920455 +vt 0.491525 0.920455 +vt 0.367232 0.943182 +vt 0.435028 0.943182 +vt 0.570621 0.943182 +vt 0.728814 0.693182 +vt 0.723164 0.670455 +vt 0.728814 0.670455 +vt 0.740113 0.647727 +vt 0.751412 0.636364 +vt 0.751412 0.647727 +vt 0.762712 0.670455 +vt 0.768362 0.693182 +vt 0.762712 0.693182 +vt 0.751412 0.715909 +vt 0.762712 0.647727 +vt 0.762712 0.727273 +vt 0.751412 0.727273 +vt 0.740113 0.727273 +vt 0.728814 0.715909 +vt 0.740113 0.715909 +vt 0.728814 0.636364 +vt 0.740113 0.636364 +vt 0.418079 0.886364 +vt 0.474576 0.772727 +vt 0.474576 0.886364 +vt 0.451977 0.681818 +vt 0.384181 0.545455 +vt 0.451977 0.545455 +vt 0.474576 0.545455 +vt 0.474576 0.681818 +vt 0.384181 0.681818 +vt 0.451977 0.727273 +vt 0.384181 0.727273 +vt 0.384181 0.500000 +vt 0.451977 0.500000 +vt 0.361582 0.681818 +vt 0.361582 0.545455 +vt 0.601695 0.750000 +vt 0.590395 0.590909 +vt 0.601695 0.590909 +vt 0.519774 0.636364 +vt 0.542373 0.818182 +vt 0.519774 0.818182 +vt 0.542373 0.568182 +vt 0.519774 0.568182 +vt 0.519774 0.886364 +vt 0.542373 0.886364 +vt 0.576271 0.818182 +vt 0.542373 0.636364 +vt 0.576271 0.636364 +vt 0.485876 0.636364 +vt 0.485876 0.818182 +vt 0.576271 0.590909 +vt 0.576271 0.750000 +vt 0.590395 0.568182 +vt 0.587571 0.568182 +vt 0.587571 0.772727 +vt 0.590395 0.772727 +vt 0.601695 0.750000 +vt 0.590395 0.590909 +vt 0.601695 0.590909 +vt 0.576271 0.590909 +vt 0.576271 0.750000 +vt 0.590395 0.568182 +vt 0.587571 0.568182 +vt 0.587571 0.772727 +vt 0.590395 0.772727 +vt 0.587571 0.590909 +vt 0.590395 0.750000 +vt 0.587571 0.750000 +vt 0.601695 0.750000 +vt 0.590395 0.590909 +vt 0.601695 0.590909 +vt 0.576271 0.590909 +vt 0.576271 0.750000 +vt 0.590395 0.568182 +vt 0.587571 0.568182 +vt 0.587571 0.772727 +vt 0.590395 0.772727 +vt 0.587571 0.590909 +vt 0.590395 0.750000 +vt 0.587571 0.750000 +vt 0.601695 0.750000 +vt 0.590395 0.590909 +vt 0.601695 0.590909 +vt 0.576271 0.590909 +vt 0.576271 0.750000 +vt 0.590395 0.568182 +vt 0.587571 0.568182 +vt 0.587571 0.772727 +vt 0.590395 0.772727 +vt 0.587571 0.590909 +vt 0.590395 0.750000 +vt 0.587571 0.750000 +vt 0.601695 0.750000 +vt 0.590395 0.590909 +vt 0.601695 0.590909 +vt 0.576271 0.590909 +vt 0.576271 0.750000 +vt 0.590395 0.568182 +vt 0.587571 0.568182 +vt 0.587571 0.772727 +vt 0.590395 0.772727 +vt 0.457627 0.738636 +vt 0.389830 0.727273 +vt 0.457627 0.727273 +vt 0.384181 0.727273 +vt 0.361582 0.738636 +vt 0.361582 0.727273 +vt 0.485876 0.738636 +vt 0.463277 0.727273 +vt 0.485876 0.727273 +vt 0.463277 0.738636 +vt 0.457627 0.727273 +vt 0.389830 0.727273 +vt 0.384181 0.738636 +vt 0.389830 0.772727 +vt 0.457627 0.761364 +vt 0.457627 0.772727 +vt 0.361582 0.761364 +vt 0.384181 0.772727 +vt 0.361582 0.772727 +vt 0.463277 0.772727 +vt 0.485876 0.761364 +vt 0.485876 0.772727 +vt 0.457627 0.772727 +vt 0.463277 0.761364 +vt 0.389830 0.772727 +vt 0.384181 0.761364 +vt 0.389830 0.727273 +vt 0.384181 0.738636 +vt 0.384181 0.727273 +vt 0.463277 0.727273 +vt 0.463277 0.738636 +vt 0.457627 0.727273 +vt 0.389830 0.761364 +vt 0.389830 0.738636 +vt 0.485876 0.738636 +vt 0.485876 0.727273 +vt 0.361582 0.738636 +vt 0.361582 0.727273 +vt 0.457627 0.738636 +vt 0.389830 0.727273 +vt 0.457627 0.727273 +vt 0.389830 0.772727 +vt 0.457627 0.761364 +vt 0.457627 0.772727 +vt 0.361582 0.761364 +vt 0.384181 0.772727 +vt 0.361582 0.772727 +vt 0.463277 0.772727 +vt 0.485876 0.761364 +vt 0.485876 0.772727 +vt 0.457627 0.772727 +vt 0.463277 0.761364 +vt 0.389830 0.772727 +vt 0.384181 0.761364 +vt 0.389830 0.761364 +vt 0.389830 0.738636 +vt 0.508475 0.181818 +vt 0.508475 0.181818 +vt 0.508475 0.181818 +vt 0.508475 0.181818 +vt 0.677966 0.568182 +vt 0.508475 0.568182 +vt 0.508475 -0.000000 +vt 0.677966 0.568182 +vt 0.677966 -0.000000 +vt 0.926566 0.169597 +vt 0.910031 0.136340 +vt 0.903979 0.090909 +vt 0.926566 0.012221 +vt 0.988274 0.045478 +vt 0.949153 0.000048 +vt 0.971740 0.012221 +vt 0.994327 0.090909 +vt 0.971740 0.169597 +vt 0.926566 0.169597 +vt 0.910031 0.136340 +vt 0.903979 0.090909 +vt 0.910031 0.045479 +vt 0.926566 0.012221 +vt 0.949153 0.000048 +vt 0.971740 0.012221 +vt 0.994327 0.090909 +vt 0.971740 0.169597 +vt 0.601695 0.761364 +vt 0.601695 0.761364 +vt 0.601695 0.761364 +vt 0.601695 0.761364 +vt 0.559322 0.943182 +vt 0.423729 0.943182 +vt 0.491525 0.943182 +vt 0.627119 0.943182 +vt 0.723164 0.693182 +vt 0.768362 0.670455 +vt 0.762712 0.636364 +vt 0.762712 0.715909 +vt 0.728814 0.727273 +vt 0.728814 0.647727 +vt 0.418079 0.772727 +vt 1.000000 0.454545 +vt 0.994350 0.409091 +vt 1.000000 0.409091 +vt 1.000000 0.227273 +vt 0.994350 0.181818 +vt 1.000000 0.181818 +vt 1.000000 0.318182 +vt 0.994350 0.272727 +vt 1.000000 0.272727 +vt 1.000000 0.090909 +vt 0.994350 0.045455 +vt 1.000000 0.045455 +vt 1.000000 0.500000 +vt 0.994350 0.454545 +vt 0.994350 0.227273 +vt 1.000000 0.363636 +vt 0.994350 0.318182 +vt 1.000000 0.136364 +vt 0.994350 0.090909 +vt 1.000000 0.545455 +vt 0.994350 0.500000 +vt 0.994350 0.363636 +vt 0.994350 0.136364 +vt 0.994350 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.045455 +vt 0.994350 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.136364 +vt 0.994350 0.181818 +vt 0.994350 0.136364 +vt 1.000000 0.409091 +vt 0.994350 0.363636 +vt 1.000000 0.363636 +vt 1.000000 0.545455 +vt 0.994350 0.500000 +vt 1.000000 0.500000 +vt 0.994350 0.090909 +vt 1.000000 0.090909 +vt 0.994350 0.318182 +vt 1.000000 0.318182 +vt 1.000000 0.272727 +vt 0.994350 0.227273 +vt 1.000000 0.227273 +vt 0.994350 0.454545 +vt 1.000000 0.454545 +vt 0.994350 0.045455 +vt 0.994350 0.272727 +vt 1.000000 0.181818 +vt 0.994350 0.409091 +vt 0.884181 0.823864 +vt 0.892655 0.795455 +vt 0.892655 0.829545 +vt 0.909605 0.812500 +vt 0.901130 0.795455 +vt 0.909605 0.795455 +vt 0.875706 0.812500 +vt 0.867232 0.795455 +vt 0.875706 0.795455 +vt 0.884181 0.795455 +vt 0.901130 0.823864 +vt 0.918079 0.795455 +vt 0.909605 0.778409 +vt 0.918079 0.789773 +vt 0.901130 0.767045 +vt 0.875706 0.778409 +vt 0.884181 0.767045 +vt 0.901130 0.875000 +vt 0.901130 0.869318 +vt 0.909605 0.875000 +vt 0.901130 0.880682 +vt 0.918079 0.869318 +vt 0.918079 0.875000 +vt 0.918079 0.880682 +vt 0.875706 0.875000 +vt 0.867232 0.846591 +vt 0.875706 0.840909 +vt 0.892655 0.875000 +vt 0.884181 0.846591 +vt 0.892655 0.857955 +vt 0.926554 0.857955 +vt 0.926554 0.875000 +vt 0.909605 0.943182 +vt 0.918079 0.909091 +vt 0.918079 0.943182 +vt 0.892655 0.943182 +vt 0.901130 0.909091 +vt 0.901130 0.943182 +vt 0.875706 0.943182 +vt 0.884181 0.909091 +vt 0.884181 0.943182 +vt 0.646893 0.568182 +vt 0.601695 0.585227 +vt 0.601695 0.568182 +vt 0.646893 0.670455 +vt 0.601695 0.687500 +vt 0.601695 0.670455 +vt 0.646893 0.636364 +vt 0.601695 0.653409 +vt 0.601695 0.636364 +vt 0.646893 0.619318 +vt 0.601695 0.619318 +vt 0.646893 0.585227 +vt 0.601695 0.602273 +vt 0.646893 0.687500 +vt 0.601695 0.704545 +vt 0.646893 0.653409 +vt 0.646893 0.602273 +vt 0.646893 0.568182 +vt 0.601695 0.585227 +vt 0.601695 0.568182 +vt 0.646893 0.670455 +vt 0.601695 0.687500 +vt 0.601695 0.670455 +vt 0.646893 0.636364 +vt 0.601695 0.653409 +vt 0.601695 0.636364 +vt 0.646893 0.619318 +vt 0.601695 0.619318 +vt 0.646893 0.585227 +vt 0.601695 0.602273 +vt 0.646893 0.687500 +vt 0.601695 0.704545 +vt 0.646893 0.653409 +vt 0.646893 0.602273 +vt 0.646893 0.568182 +vt 0.601695 0.585227 +vt 0.601695 0.568182 +vt 0.646893 0.670455 +vt 0.601695 0.687500 +vt 0.601695 0.670455 +vt 0.646893 0.636364 +vt 0.601695 0.653409 +vt 0.601695 0.636364 +vt 0.646893 0.619318 +vt 0.601695 0.619318 +vt 0.646893 0.585227 +vt 0.601695 0.602273 +vt 0.646893 0.687500 +vt 0.601695 0.704545 +vt 0.646893 0.653409 +vt 0.646893 0.602273 +vt 0.694915 0.909091 +vt 0.694915 0.897727 +vt 0.697740 0.897727 +vt 0.692090 0.897727 +vt 0.694915 0.818182 +vt 0.697740 0.829545 +vt 0.694915 0.829545 +vt 0.692090 0.829545 +vt 0.694915 0.840909 +vt 0.706215 0.852273 +vt 0.694915 0.852273 +vt 0.694915 0.875000 +vt 0.706215 0.863636 +vt 0.706215 0.875000 +vt 0.694915 0.886364 +vt 0.700565 0.840909 +vt 0.694915 0.863636 +vt 0.700565 0.886364 +vt 0.689266 0.840909 +vt 0.683616 0.852273 +vt 0.689266 0.886364 +vt 0.683616 0.863636 +vt 0.683616 0.875000 +vt 0.632768 0.829545 +vt 0.683616 0.840909 +vt 0.632768 0.840909 +vt 0.632768 0.852273 +vt 0.632768 0.863636 +vt 0.632768 0.875000 +vt 0.683616 0.886364 +vt 0.632768 0.886364 +vt 0.632768 0.897727 +vt 0.683616 0.909091 +vt 0.632768 0.909091 +vt 0.632768 0.818182 +vt 0.683616 0.829545 +vt 0.683616 0.897727 +vt 0.632768 0.795455 +vt 0.700565 0.806818 +vt 0.632768 0.806818 +vt 0.632768 0.772727 +vt 0.700565 0.784091 +vt 0.632768 0.784091 +vt 0.632768 0.750000 +vt 0.700565 0.761364 +vt 0.632768 0.761364 +vt 0.632768 0.727273 +vt 0.700565 0.738636 +vt 0.632768 0.738636 +vt 0.700565 0.818182 +vt 0.632768 0.818182 +vt 0.700565 0.795455 +vt 0.700565 0.772727 +vt 0.700565 0.750000 +vt 0.711864 0.784091 +vt 0.706215 0.795455 +vt 0.711864 0.806818 +vt 0.709040 0.806818 +vt 0.706215 0.750000 +vt 0.711864 0.738636 +vt 0.711864 0.750000 +vt 0.711864 0.772727 +vt 0.711864 0.795455 +vt 0.711864 0.761364 +vt 0.717514 0.795455 +vt 0.723164 0.772727 +vt 0.714689 0.738636 +vt 0.717514 0.750000 +vt 0.714689 0.806818 +vt 0.723164 0.784091 +vt 0.723164 0.761364 +vt 0.709040 0.738636 +vt 0.711864 0.727273 +vt 0.711864 0.818182 +vt 0.723164 0.750000 +vt 0.742938 0.761364 +vt 0.742938 0.784091 +vt 0.723164 0.727273 +vt 0.742938 0.738636 +vt 0.723164 0.738636 +vt 0.723164 0.806818 +vt 0.742938 0.818182 +vt 0.723164 0.818182 +vt 0.723164 0.795455 +vt 0.742938 0.806818 +vt 0.742938 0.750000 +vt 0.742938 0.772727 +vt 0.742938 0.795455 +vt 0.858757 0.943182 +vt 0.867232 0.909091 +vt 0.867232 0.943182 +vt 0.926554 0.909091 +vt 0.926554 0.943182 +vt 0.909605 0.909091 +vt 0.892655 0.909091 +vt 0.875706 0.909091 +vt 0.892655 0.892045 +vt 0.867232 0.903409 +vt 0.884181 0.875000 +vt 0.926554 0.892045 +vt 0.858757 0.892045 +vt 0.867232 0.875000 +vt 0.884181 0.903409 +vt 0.858757 0.875000 +vt 0.926554 0.647727 +vt 0.935028 0.619318 +vt 0.935028 0.647727 +vt 0.943503 0.647727 +vt 0.951977 0.619318 +vt 0.951977 0.647727 +vt 0.968927 0.647727 +vt 0.960452 0.630682 +vt 0.968927 0.642045 +vt 0.951977 0.676136 +vt 0.926554 0.664773 +vt 0.935028 0.676136 +vt 0.985876 0.653409 +vt 0.994350 0.647727 +vt 0.994350 0.664773 +vt 0.960452 0.664773 +vt 0.960452 0.647727 +vt 0.943503 0.681818 +vt 0.968927 0.653409 +vt 0.935028 0.715909 +vt 0.943503 0.715909 +vt 0.951977 0.715909 +vt 0.960452 0.681818 +vt 0.960452 0.715909 +vt 0.968927 0.715909 +vt 0.977401 0.681818 +vt 0.977401 0.715909 +vt 0.985876 0.715909 +vt 0.994350 0.681818 +vt 0.994350 0.715909 +vt 0.926554 0.715909 +vt 0.935028 0.681818 +vt 0.951977 0.681818 +vt 0.968927 0.681818 +vt 0.985876 0.681818 +vt 0.985876 0.647727 +vt 0.994350 0.630682 +vt 0.943503 0.613636 +vt 0.977401 0.647727 +vt 0.985876 0.642045 +vt 0.943503 0.409091 +vt 0.951977 0.380682 +vt 0.951977 0.409091 +vt 0.960452 0.409091 +vt 0.968927 0.380682 +vt 0.968927 0.409091 +vt 0.985876 0.409091 +vt 0.977401 0.392045 +vt 0.985876 0.403409 +vt 0.960452 0.443182 +vt 0.968927 0.437500 +vt 0.951977 0.437500 +vt 0.943503 0.426136 +vt 0.935028 0.409091 +vt 0.977401 0.409091 +vt 0.977401 0.426136 +vt 0.985876 0.414773 +vt 0.935028 0.613636 +vt 0.943503 0.443182 +vt 0.926554 0.613636 +vt 0.935028 0.443182 +vt 0.985876 0.613636 +vt 0.994350 0.443182 +vt 0.994350 0.613636 +vt 0.977401 0.613636 +vt 0.985876 0.443182 +vt 0.968927 0.613636 +vt 0.977401 0.443182 +vt 0.960452 0.613636 +vt 0.968927 0.443182 +vt 0.951977 0.613636 +vt 0.951977 0.443182 +vt 0.943503 0.392045 +vt 0.960452 0.375000 +vt 0.935028 0.414773 +vt 0.926554 0.409091 +vt 0.935028 0.403409 +vt 0.994350 0.409091 +vt 0.951977 0.375000 +vt 0.960452 0.181818 +vt 0.968927 0.375000 +vt 0.977401 0.181818 +vt 0.977401 0.375000 +vt 0.935028 0.375000 +vt 0.943503 0.181818 +vt 0.943503 0.375000 +vt 0.985876 0.375000 +vt 0.994350 0.181818 +vt 0.994350 0.375000 +vt 0.926554 0.375000 +vt 0.935028 0.181818 +vt 0.951977 0.181818 +vt 0.968927 0.181818 +vt 0.985876 0.181818 +vt 0.918079 0.801136 +vt 0.867232 0.840909 +vt 0.875706 0.829545 +vt 0.858757 0.840909 +vt 0.867232 0.829545 +vt 0.926554 0.840909 +vt 0.918079 0.829545 +vt 0.926554 0.829545 +vt 0.909605 0.840909 +vt 0.918079 0.840909 +vt 0.901130 0.840909 +vt 0.909605 0.829545 +vt 0.892655 0.840909 +vt 0.901130 0.829545 +vt 0.884181 0.840909 +vt 0.884181 0.829545 +vt 0.892655 0.761364 +vt 0.867232 0.801136 +vt 0.858757 0.795455 +vt 0.867232 0.789773 +vt 0.926554 0.795455 +vt 0.884181 0.761364 +vt 0.892655 0.636364 +vt 0.901130 0.761364 +vt 0.909605 0.636364 +vt 0.909605 0.761364 +vt 0.867232 0.761364 +vt 0.875706 0.636364 +vt 0.875706 0.761364 +vt 0.918079 0.761364 +vt 0.926554 0.636364 +vt 0.926554 0.761364 +vt 0.858757 0.761364 +vt 0.867232 0.636364 +vt 0.884181 0.636364 +vt 0.901130 0.636364 +vt 0.918079 0.636364 +vt 0.694915 0.909091 +vt 0.694915 0.897727 +vt 0.697740 0.897727 +vt 0.692090 0.897727 +vt 0.694915 0.818182 +vt 0.697740 0.829545 +vt 0.694915 0.829545 +vt 0.692090 0.829545 +vt 0.694915 0.840909 +vt 0.706215 0.852273 +vt 0.694915 0.852273 +vt 0.694915 0.875000 +vt 0.706215 0.863636 +vt 0.706215 0.875000 +vt 0.694915 0.886364 +vt 0.700565 0.840909 +vt 0.694915 0.863636 +vt 0.700565 0.886364 +vt 0.689266 0.840909 +vt 0.683616 0.852273 +vt 0.689266 0.886364 +vt 0.683616 0.863636 +vt 0.683616 0.875000 +vt 0.632768 0.829545 +vt 0.683616 0.840909 +vt 0.632768 0.840909 +vt 0.632768 0.852273 +vt 0.632768 0.863636 +vt 0.632768 0.875000 +vt 0.683616 0.886364 +vt 0.632768 0.886364 +vt 0.632768 0.897727 +vt 0.683616 0.909091 +vt 0.632768 0.909091 +vt 0.632768 0.818182 +vt 0.683616 0.829545 +vt 0.683616 0.897727 +vt 0.632768 0.795455 +vt 0.700565 0.806818 +vt 0.632768 0.806818 +vt 0.632768 0.772727 +vt 0.700565 0.784091 +vt 0.632768 0.784091 +vt 0.632768 0.750000 +vt 0.700565 0.761364 +vt 0.632768 0.761364 +vt 0.632768 0.727273 +vt 0.700565 0.738636 +vt 0.632768 0.738636 +vt 0.700565 0.818182 +vt 0.632768 0.818182 +vt 0.700565 0.795455 +vt 0.700565 0.772727 +vt 0.700565 0.750000 +vt 0.711864 0.784091 +vt 0.706215 0.795455 +vt 0.711864 0.806818 +vt 0.709040 0.806818 +vt 0.706215 0.750000 +vt 0.711864 0.738636 +vt 0.711864 0.750000 +vt 0.711864 0.772727 +vt 0.711864 0.795455 +vt 0.711864 0.761364 +vt 0.717514 0.795455 +vt 0.723164 0.761364 +vt 0.723164 0.772727 +vt 0.717514 0.750000 +vt 0.714689 0.806818 +vt 0.723164 0.784091 +vt 0.709040 0.738636 +vt 0.711864 0.727273 +vt 0.714689 0.738636 +vt 0.711864 0.818182 +vt 0.723164 0.750000 +vt 0.742938 0.761364 +vt 0.742938 0.784091 +vt 0.723164 0.727273 +vt 0.742938 0.738636 +vt 0.723164 0.738636 +vt 0.723164 0.806818 +vt 0.742938 0.818182 +vt 0.723164 0.818182 +vt 0.723164 0.795455 +vt 0.742938 0.806818 +vt 0.742938 0.750000 +vt 0.742938 0.772727 +vt 0.742938 0.795455 +vt 0.694915 0.909091 +vt 0.697740 0.897727 +vt 0.694915 0.897727 +vt 0.692090 0.897727 +vt 0.694915 0.818182 +vt 0.694915 0.829545 +vt 0.697740 0.829545 +vt 0.692090 0.829545 +vt 0.706215 0.852273 +vt 0.694915 0.840909 +vt 0.694915 0.852273 +vt 0.694915 0.875000 +vt 0.706215 0.863636 +vt 0.694915 0.863636 +vt 0.700565 0.886364 +vt 0.694915 0.886364 +vt 0.700565 0.840909 +vt 0.706215 0.875000 +vt 0.689266 0.840909 +vt 0.683616 0.852273 +vt 0.689266 0.886364 +vt 0.683616 0.875000 +vt 0.683616 0.863636 +vt 0.683616 0.840909 +vt 0.632768 0.829545 +vt 0.632768 0.840909 +vt 0.632768 0.852273 +vt 0.632768 0.863636 +vt 0.683616 0.886364 +vt 0.632768 0.875000 +vt 0.632768 0.886364 +vt 0.683616 0.909091 +vt 0.632768 0.897727 +vt 0.632768 0.909091 +vt 0.683616 0.829545 +vt 0.632768 0.818182 +vt 0.683616 0.897727 +vt 0.700565 0.806818 +vt 0.632768 0.795455 +vt 0.632768 0.806818 +vt 0.700565 0.784091 +vt 0.632768 0.772727 +vt 0.632768 0.784091 +vt 0.700565 0.761364 +vt 0.632768 0.750000 +vt 0.632768 0.761364 +vt 0.700565 0.738636 +vt 0.632768 0.727273 +vt 0.632768 0.738636 +vt 0.700565 0.818182 +vt 0.632768 0.818182 +vt 0.700565 0.795455 +vt 0.700565 0.772727 +vt 0.700565 0.750000 +vt 0.711864 0.784091 +vt 0.711864 0.806818 +vt 0.706215 0.795455 +vt 0.709040 0.806818 +vt 0.706215 0.750000 +vt 0.711864 0.738636 +vt 0.709040 0.738636 +vt 0.711864 0.772727 +vt 0.711864 0.795455 +vt 0.711864 0.750000 +vt 0.717514 0.795455 +vt 0.723164 0.772727 +vt 0.711864 0.761364 +vt 0.717514 0.750000 +vt 0.723164 0.761364 +vt 0.711864 0.727273 +vt 0.714689 0.738636 +vt 0.711864 0.818182 +vt 0.714689 0.806818 +vt 0.742938 0.761364 +vt 0.723164 0.750000 +vt 0.742938 0.784091 +vt 0.723164 0.784091 +vt 0.742938 0.738636 +vt 0.723164 0.727273 +vt 0.723164 0.738636 +vt 0.742938 0.818182 +vt 0.723164 0.806818 +vt 0.723164 0.818182 +vt 0.742938 0.806818 +vt 0.723164 0.795455 +vt 0.742938 0.750000 +vt 0.742938 0.772727 +vt 0.742938 0.795455 +vt 0.694915 0.909091 +vt 0.697740 0.897727 +vt 0.694915 0.897727 +vt 0.692090 0.897727 +vt 0.694915 0.818182 +vt 0.694915 0.829545 +vt 0.697740 0.829545 +vt 0.692090 0.829545 +vt 0.706215 0.852273 +vt 0.694915 0.840909 +vt 0.694915 0.852273 +vt 0.694915 0.875000 +vt 0.706215 0.863636 +vt 0.694915 0.863636 +vt 0.700565 0.886364 +vt 0.694915 0.886364 +vt 0.700565 0.840909 +vt 0.706215 0.875000 +vt 0.689266 0.840909 +vt 0.683616 0.852273 +vt 0.689266 0.886364 +vt 0.683616 0.875000 +vt 0.683616 0.863636 +vt 0.683616 0.840909 +vt 0.632768 0.829545 +vt 0.632768 0.840909 +vt 0.632768 0.852273 +vt 0.632768 0.863636 +vt 0.683616 0.886364 +vt 0.632768 0.875000 +vt 0.632768 0.886364 +vt 0.683616 0.909091 +vt 0.632768 0.897727 +vt 0.632768 0.909091 +vt 0.683616 0.829545 +vt 0.632768 0.818182 +vt 0.683616 0.897727 +vt 0.700565 0.806818 +vt 0.632768 0.795455 +vt 0.632768 0.806818 +vt 0.700565 0.784091 +vt 0.632768 0.772727 +vt 0.632768 0.784091 +vt 0.700565 0.761364 +vt 0.632768 0.750000 +vt 0.632768 0.761364 +vt 0.700565 0.738636 +vt 0.632768 0.727273 +vt 0.632768 0.738636 +vt 0.700565 0.818182 +vt 0.632768 0.818182 +vt 0.700565 0.795455 +vt 0.700565 0.772727 +vt 0.700565 0.750000 +vt 0.711864 0.784091 +vt 0.711864 0.806818 +vt 0.706215 0.795455 +vt 0.709040 0.806818 +vt 0.706215 0.750000 +vt 0.711864 0.738636 +vt 0.709040 0.738636 +vt 0.711864 0.772727 +vt 0.711864 0.795455 +vt 0.711864 0.750000 +vt 0.717514 0.795455 +vt 0.723164 0.772727 +vt 0.711864 0.761364 +vt 0.717514 0.750000 +vt 0.723164 0.761364 +vt 0.711864 0.727273 +vt 0.714689 0.738636 +vt 0.711864 0.818182 +vt 0.714689 0.806818 +vt 0.742938 0.761364 +vt 0.723164 0.750000 +vt 0.742938 0.784091 +vt 0.723164 0.784091 +vt 0.742938 0.738636 +vt 0.723164 0.727273 +vt 0.723164 0.738636 +vt 0.742938 0.818182 +vt 0.723164 0.806818 +vt 0.723164 0.818182 +vt 0.742938 0.806818 +vt 0.723164 0.795455 +vt 0.742938 0.750000 +vt 0.742938 0.772727 +vt 0.742938 0.795455 +vt 0.994350 0.545455 +vt 0.994350 0.545455 +vt 0.646893 0.704545 +vt 0.646893 0.704545 +vt 0.646893 0.704545 +vt 0.683616 0.818182 +vt 0.700565 0.727273 +vt 0.742938 0.727273 +vt 0.858757 0.909091 +vt 0.858757 0.857955 +vt 0.926554 0.630682 +vt 0.926554 0.681818 +vt 0.926554 0.443182 +vt 0.926554 0.181818 +vt 0.858757 0.829545 +vt 0.858757 0.636364 +vt 0.683616 0.818182 +vt 0.700565 0.727273 +vt 0.742938 0.727273 +vt 0.683616 0.818182 +vt 0.700565 0.727273 +vt 0.742938 0.727273 +vt 0.683616 0.818182 +vt 0.700565 0.727273 +vt 0.742938 0.727273 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 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.5547 0.8321 0.0000 +vn 0.5547 0.8321 0.0000 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn -0.8660 -0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.8660 0.5000 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.7194 0.6794 0.1448 +vn 0.9824 -0.0000 0.1866 +vn 0.0473 -0.9987 0.0196 +vn 0.5294 -0.6630 0.5294 +vn 0.0671 -0.9955 0.0671 +vn 0.0473 0.9987 0.0196 +vn -0.4617 0.7574 -0.4617 +vn 0.0671 0.9955 0.0671 +vn 0.5294 0.6630 0.5294 +vn 0.7194 -0.6794 0.1448 +vn -0.4617 -0.7574 -0.4617 +vn 0.0196 -0.9987 0.0473 +vn -0.1363 -0.7263 -0.6737 +vn 0.1448 -0.6794 0.7194 +vn 0.0196 0.9987 0.0473 +vn 0.1448 0.6794 0.7194 +vn 0.7574 -0.4617 0.4617 +vn 0.7263 -0.6737 0.1363 +vn -0.0000 -0.7071 0.7071 +vn 0.7263 -0.1363 0.6737 +vn -0.7263 -0.6737 0.1363 +vn -0.7574 -0.4617 0.4617 +vn -0.7263 -0.1363 0.6737 +vn -0.6794 0.7194 -0.1448 +vn 0.0000 0.9824 -0.1866 +vn 0.9955 0.0671 -0.0671 +vn 0.6794 0.7194 -0.1448 +vn 0.9987 0.0473 -0.0196 +vn -0.9987 0.0473 -0.0196 +vn -0.9955 0.0671 -0.0671 +vn 0.6794 0.1448 -0.7194 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.1944 0.0000 -0.9809 +vn -0.6303 0.7311 -0.2611 +vn -0.1363 0.7263 -0.6737 +vn -0.6303 -0.7311 -0.2611 +vn 0.7150 -0.6333 0.2962 +vn 0.9239 0.0000 0.3827 +vn 0.7150 0.6333 0.2962 +vn 0.0948 -0.9947 0.0393 +vn 0.0948 0.9947 0.0393 +vn 0.1866 -0.0000 0.9824 +vn 0.0000 -0.7071 -0.7071 +vn -0.6737 -0.7263 -0.1363 +vn -0.6737 0.7263 -0.1363 +vn -0.6794 0.1448 -0.7194 +vn -0.9987 0.0196 -0.0473 +vn 0.9987 0.0196 -0.0473 +vn 0.0000 0.1866 -0.9824 +vn 0.6630 0.5294 -0.5294 +vn -0.6630 0.5294 -0.5294 +vn -0.1944 0.0000 0.9809 +vn -0.6303 0.7311 0.2611 +vn -0.4617 0.7574 0.4617 +vn -0.1363 0.7263 0.6737 +vn -0.4617 -0.7574 0.4617 +vn -0.6303 -0.7311 0.2611 +vn -0.1363 -0.7263 0.6737 +vn 0.7150 -0.6333 -0.2962 +vn 0.0671 -0.9955 -0.0671 +vn 0.5294 -0.6630 -0.5294 +vn 0.5294 0.6630 -0.5294 +vn 0.9239 0.0000 -0.3827 +vn 0.0948 0.9947 -0.0393 +vn 0.0671 0.9955 -0.0671 +vn 0.0948 -0.9947 -0.0393 +vn 0.7150 0.6333 -0.2962 +vn 0.0196 -0.9987 -0.0473 +vn 0.1448 -0.6794 -0.7194 +vn 0.0196 0.9987 -0.0473 +vn 0.1448 0.6794 -0.7194 +vn 0.1866 -0.0000 -0.9824 +vn 0.0473 0.9987 -0.0196 +vn 0.9824 -0.0000 -0.1866 +vn 0.0473 -0.9987 -0.0196 +vn 0.7194 -0.6794 -0.1448 +vn -0.6737 -0.7263 0.1363 +vn -0.6737 0.7263 0.1363 +vn 0.7194 0.6794 -0.1448 +s off +f 35/45/16 34/46/16 33/47/16 +f 38/48/17 39/49/17 37/50/17 +f 35/51/18 40/52/18 36/53/18 +f 34/54/19 37/50/19 33/55/19 +f 36/56/20 38/48/20 34/46/20 +f 33/57/21 39/49/21 35/58/21 +f 58/59/22 61/60/22 57/61/22 +f 46/62/22 49/63/22 45/64/22 +f 44/65/20 47/66/20 42/67/20 +f 41/68/21 45/69/21 43/70/21 +f 43/71/18 48/72/18 44/73/18 +f 42/67/19 46/74/19 41/68/19 +f 51/75/17 49/63/17 50/76/17 +f 45/77/18 52/78/18 48/72/18 +f 47/66/19 50/76/19 46/74/19 +f 48/79/23 51/75/23 47/80/23 +f 56/81/20 59/82/20 54/83/20 +f 53/84/21 57/85/21 55/86/21 +f 55/87/18 60/88/18 56/89/18 +f 54/83/19 58/90/19 53/84/19 +f 63/91/17 61/60/17 62/92/17 +f 57/93/18 64/94/18 60/88/18 +f 59/82/19 62/92/19 58/90/19 +f 60/95/23 63/91/23 59/96/23 +f 70/97/22 73/98/22 69/99/22 +f 68/100/20 71/101/20 66/102/20 +f 65/103/21 69/104/21 67/105/21 +f 67/106/18 72/107/18 68/108/18 +f 66/102/19 70/109/19 65/103/19 +f 75/110/17 73/98/17 74/111/17 +f 69/112/18 76/113/18 72/107/18 +f 71/101/19 74/111/19 70/109/19 +f 72/114/23 75/110/23 71/115/23 +f 82/116/22 85/117/22 81/118/22 +f 80/119/20 83/120/20 78/121/20 +f 77/122/21 81/123/21 79/124/21 +f 79/125/18 84/126/18 80/127/18 +f 78/121/19 82/128/19 77/122/19 +f 87/129/17 85/117/17 86/130/17 +f 81/131/18 88/132/18 84/126/18 +f 83/120/19 86/130/19 82/128/19 +f 84/133/23 87/129/23 83/134/23 +f 91/135/20 90/136/20 89/137/20 +f 91/135/23 94/138/23 92/139/23 +f 93/140/17 96/141/17 94/138/17 +f 95/142/22 98/143/22 96/141/22 +f 97/144/21 100/145/21 98/143/21 +f 105/146/22 110/147/22 104/148/22 +f 103/149/23 108/150/23 102/151/23 +f 106/152/21 111/153/21 105/146/21 +f 104/148/17 109/154/17 103/149/17 +f 108/150/20 101/155/20 102/151/20 +f 117/156/22 122/157/22 116/158/22 +f 115/159/23 120/160/23 114/161/23 +f 118/162/21 123/163/21 117/156/21 +f 116/158/17 121/164/17 115/159/17 +f 120/160/20 113/165/20 114/161/20 +f 147/166/19 137/167/19 141/168/19 +f 152/169/18 150/170/18 160/171/18 +f 257/172/20 279/173/20 259/174/20 +f 260/175/21 277/176/21 258/177/21 +f 258/177/18 280/178/18 257/172/18 +f 259/174/19 278/179/19 260/180/19 +f 179/181/20 185/182/20 177/183/20 +f 173/184/20 184/185/20 175/186/20 +f 175/187/19 183/188/19 176/189/19 +f 176/190/21 181/191/21 174/192/21 +f 174/193/18 182/194/18 173/195/18 +f 178/196/17 181/197/17 177/198/17 +f 179/199/17 184/200/17 180/201/17 +f 177/183/17 183/202/17 179/181/17 +f 180/203/17 182/204/17 178/205/17 +f 185/182/17 188/206/17 186/207/17 +f 177/198/19 186/207/19 178/196/19 +f 178/205/21 188/206/21 180/203/21 +f 180/201/18 187/208/18 179/199/18 +f 189/209/17 192/210/17 190/211/17 +f 199/212/20 205/213/20 197/214/20 +f 193/215/20 204/216/20 195/217/20 +f 195/218/19 203/219/19 196/220/19 +f 196/221/21 201/222/21 194/223/21 +f 194/224/18 202/225/18 193/226/18 +f 198/227/17 201/228/17 197/229/17 +f 199/230/17 204/231/17 200/232/17 +f 197/214/17 203/233/17 199/212/17 +f 200/234/17 202/235/17 198/236/17 +f 205/213/17 208/237/17 206/238/17 +f 197/229/19 206/238/19 198/227/19 +f 198/236/21 208/237/21 200/234/21 +f 200/232/18 207/239/18 199/230/18 +f 209/240/17 212/241/17 210/242/17 +f 219/243/20 225/244/20 217/245/20 +f 213/246/20 224/247/20 215/248/20 +f 215/249/19 223/250/19 216/251/19 +f 216/252/21 221/253/21 214/254/21 +f 214/255/18 222/256/18 213/257/18 +f 218/258/17 221/259/17 217/260/17 +f 219/261/17 224/262/17 220/263/17 +f 217/245/17 223/264/17 219/243/17 +f 220/265/17 222/266/17 218/267/17 +f 225/244/17 228/268/17 226/269/17 +f 217/260/19 226/269/19 218/258/19 +f 218/267/21 228/268/21 220/265/21 +f 220/263/18 227/270/18 219/261/18 +f 229/271/17 232/272/17 230/273/17 +f 239/274/20 245/275/20 237/276/20 +f 233/277/20 244/278/20 235/279/20 +f 235/280/19 243/281/19 236/282/19 +f 236/283/21 241/284/21 234/285/21 +f 234/286/18 242/287/18 233/288/18 +f 238/289/17 241/290/17 237/291/17 +f 239/292/17 244/293/17 240/294/17 +f 237/276/17 243/295/17 239/274/17 +f 240/296/17 242/297/17 238/298/17 +f 245/275/17 248/299/17 246/300/17 +f 237/291/19 246/300/19 238/289/19 +f 238/298/21 248/299/21 240/296/21 +f 240/294/18 247/301/18 239/292/18 +f 249/302/17 252/303/17 250/304/17 +f 255/305/19 284/306/19 256/307/19 +f 357/308/17 355/309/17 356/310/17 +f 267/311/17 266/312/17 268/313/17 +f 262/314/19 268/313/19 261/315/19 +f 263/316/18 265/317/18 264/318/18 +f 261/319/21 266/312/21 263/320/21 +f 264/321/20 267/311/20 262/322/20 +f 273/323/20 270/324/20 275/325/20 +f 276/326/21 271/327/21 274/328/21 +f 274/329/18 272/330/18 273/331/18 +f 275/332/19 269/333/19 276/334/19 +f 270/324/17 271/327/17 269/333/17 +f 365/335/17 363/336/17 364/337/17 +f 255/338/17 278/339/17 253/340/17 +f 253/341/17 279/173/17 254/342/17 +f 254/343/17 280/178/17 256/344/17 +f 256/307/17 277/176/17 255/305/17 +f 254/342/18 282/345/18 253/341/18 +f 256/344/21 283/346/21 254/343/21 +f 253/340/20 281/347/20 255/338/20 +f 286/348/19 298/349/19 287/350/19 +f 288/351/20 300/352/20 291/353/20 +f 292/354/18 294/355/18 289/356/18 +f 288/351/17 292/354/17 290/357/17 +f 300/352/24 292/358/24 291/353/24 +f 290/357/25 294/359/25 293/360/25 +f 296/361/26 286/362/26 285/363/26 +f 288/351/27 298/364/27 297/365/27 +f 290/357/21 296/361/21 285/363/21 +f 301/366/17 304/367/17 303/368/17 +f 336/369/17 337/370/17 335/371/17 +f 336/369/18 342/372/18 341/373/18 +f 338/374/21 341/375/21 339/376/21 +f 335/371/20 340/377/20 342/378/20 +f 337/370/19 339/379/19 340/380/19 +f 351/381/18 358/382/18 354/383/18 +f 349/384/17 347/385/17 348/386/17 +f 346/387/20 349/384/20 344/388/20 +f 343/389/21 347/385/21 345/390/21 +f 345/391/18 350/392/18 346/393/18 +f 344/394/19 348/386/19 343/395/19 +f 353/396/19 356/310/19 352/397/19 +f 354/398/20 357/308/20 353/399/20 +f 352/400/21 355/309/21 351/401/21 +f 359/402/18 366/403/18 362/404/18 +f 361/405/19 364/337/19 360/406/19 +f 362/407/20 365/335/20 361/408/20 +f 360/409/21 363/336/21 359/410/21 +f 373/411/17 371/412/17 372/413/17 +f 367/414/18 374/415/18 370/416/18 +f 369/417/19 372/413/19 368/418/19 +f 370/419/20 373/411/20 369/420/20 +f 368/421/21 371/412/21 367/422/21 +f 381/423/17 379/424/17 380/425/17 +f 375/426/18 382/427/18 378/428/18 +f 377/429/19 380/425/19 376/430/19 +f 378/431/20 381/423/20 377/432/20 +f 376/433/21 379/424/21 375/434/21 +f 389/435/17 387/436/17 388/437/17 +f 383/438/18 390/439/18 386/440/18 +f 385/441/19 388/437/19 384/442/19 +f 386/443/20 389/435/20 385/444/20 +f 384/445/21 387/436/21 383/446/21 +f 601/447/20 598/448/20 597/449/20 +f 598/450/20 604/451/20 599/452/20 +f 606/453/20 597/454/20 600/455/20 +f 597/454/20 605/456/20 601/457/20 +f 602/458/20 603/459/20 598/450/20 +f 609/460/21 612/461/21 607/462/21 +f 614/463/21 609/464/21 610/465/21 +f 607/466/21 616/467/21 608/468/21 +f 607/466/21 612/469/21 615/470/21 +f 611/471/21 609/464/21 613/472/21 +f 622/473/20 623/474/20 618/475/20 +f 615/470/28 601/447/28 605/456/28 +f 617/476/20 625/477/20 621/478/20 +f 616/467/18 605/456/18 606/453/18 +f 613/472/19 604/451/19 603/459/19 +f 611/479/29 603/459/29 602/480/29 +f 612/461/17 602/480/17 601/447/17 +f 626/481/20 617/476/20 620/482/20 +f 618/475/20 624/483/20 619/484/20 +f 621/485/20 618/486/20 617/487/20 +f 629/488/21 632/489/21 627/490/21 +f 634/491/21 629/492/21 630/493/21 +f 627/494/21 636/495/21 628/496/21 +f 627/494/21 632/497/21 635/498/21 +f 631/499/21 629/492/21 633/500/21 +f 635/498/28 621/485/28 625/477/28 +f 636/495/18 625/477/18 626/481/18 +f 633/500/19 624/483/19 623/474/19 +f 631/501/29 623/474/29 622/502/29 +f 632/489/17 622/502/17 621/485/17 +f 35/45/16 36/56/16 34/46/16 +f 38/48/17 40/52/17 39/49/17 +f 35/51/18 39/49/18 40/52/18 +f 34/54/19 38/48/19 37/50/19 +f 36/56/20 40/52/20 38/48/20 +f 33/57/21 37/50/21 39/49/21 +f 58/59/22 62/92/22 61/60/22 +f 46/62/22 50/76/22 49/63/22 +f 44/65/20 48/503/20 47/66/20 +f 41/68/21 46/74/21 45/69/21 +f 43/71/18 45/77/18 48/72/18 +f 42/67/19 47/66/19 46/74/19 +f 51/75/17 52/78/17 49/63/17 +f 45/77/18 49/63/18 52/78/18 +f 47/66/19 51/75/19 50/76/19 +f 48/79/23 52/78/23 51/75/23 +f 56/81/20 60/504/20 59/82/20 +f 53/84/21 58/90/21 57/85/21 +f 55/87/18 57/93/18 60/88/18 +f 54/83/19 59/82/19 58/90/19 +f 63/91/17 64/94/17 61/60/17 +f 57/93/18 61/60/18 64/94/18 +f 59/82/19 63/91/19 62/92/19 +f 60/95/23 64/94/23 63/91/23 +f 70/97/22 74/111/22 73/98/22 +f 68/100/20 72/505/20 71/101/20 +f 65/103/21 70/109/21 69/104/21 +f 67/106/18 69/112/18 72/107/18 +f 66/102/19 71/101/19 70/109/19 +f 75/110/17 76/113/17 73/98/17 +f 69/112/18 73/98/18 76/113/18 +f 71/101/19 75/110/19 74/111/19 +f 72/114/23 76/113/23 75/110/23 +f 82/116/22 86/130/22 85/117/22 +f 80/119/20 84/506/20 83/120/20 +f 77/122/21 82/128/21 81/123/21 +f 79/125/18 81/131/18 84/126/18 +f 78/121/19 83/120/19 82/128/19 +f 87/129/17 88/132/17 85/117/17 +f 81/131/18 85/117/18 88/132/18 +f 83/120/19 87/129/19 86/130/19 +f 84/133/23 88/132/23 87/129/23 +f 91/135/20 92/139/20 90/136/20 +f 91/135/23 93/140/23 94/138/23 +f 93/140/17 95/142/17 96/141/17 +f 95/142/22 97/144/22 98/143/22 +f 97/144/21 99/507/21 100/145/21 +f 105/146/22 111/153/22 110/147/22 +f 103/149/23 109/154/23 108/150/23 +f 106/152/21 112/508/21 111/153/21 +f 104/148/17 110/147/17 109/154/17 +f 108/150/20 107/509/20 101/155/20 +f 117/156/22 123/163/22 122/157/22 +f 115/159/23 121/164/23 120/160/23 +f 118/162/21 124/510/21 123/163/21 +f 116/158/17 122/157/17 121/164/17 +f 120/160/20 119/511/20 113/165/20 +f 137/167/19 138/512/19 139/513/19 +f 139/513/19 140/514/19 141/168/19 +f 141/168/19 142/515/19 145/516/19 +f 142/515/19 143/517/19 145/516/19 +f 143/517/19 144/518/19 145/516/19 +f 145/516/19 146/519/19 147/166/19 +f 147/166/19 148/520/19 137/167/19 +f 137/167/19 139/513/19 141/168/19 +f 145/516/19 147/166/19 141/168/19 +f 160/171/18 159/521/18 158/522/18 +f 158/522/18 157/523/18 156/524/18 +f 156/524/18 155/525/18 154/526/18 +f 154/526/18 153/527/18 152/169/18 +f 152/169/18 151/528/18 150/170/18 +f 150/170/18 149/529/18 160/171/18 +f 160/171/18 158/522/18 156/524/18 +f 156/524/18 154/526/18 160/171/18 +f 154/526/18 152/169/18 160/171/18 +f 257/172/20 280/178/20 279/173/20 +f 260/175/21 278/339/21 277/176/21 +f 258/177/18 277/176/18 280/178/18 +f 259/174/19 279/173/19 278/179/19 +f 179/181/20 187/208/20 185/182/20 +f 173/184/20 182/204/20 184/185/20 +f 175/187/19 184/200/19 183/188/19 +f 176/190/21 183/202/21 181/191/21 +f 174/193/18 181/197/18 182/194/18 +f 178/196/17 182/194/17 181/197/17 +f 179/199/17 183/188/17 184/200/17 +f 177/183/17 181/191/17 183/202/17 +f 180/203/17 184/185/17 182/204/17 +f 185/182/17 187/208/17 188/206/17 +f 177/198/19 185/182/19 186/207/19 +f 178/205/21 186/207/21 188/206/21 +f 180/201/18 188/206/18 187/208/18 +f 189/209/17 191/530/17 192/210/17 +f 199/212/20 207/239/20 205/213/20 +f 193/215/20 202/235/20 204/216/20 +f 195/218/19 204/231/19 203/219/19 +f 196/221/21 203/233/21 201/222/21 +f 194/224/18 201/228/18 202/225/18 +f 198/227/17 202/225/17 201/228/17 +f 199/230/17 203/219/17 204/231/17 +f 197/214/17 201/222/17 203/233/17 +f 200/234/17 204/216/17 202/235/17 +f 205/213/17 207/239/17 208/237/17 +f 197/229/19 205/213/19 206/238/19 +f 198/236/21 206/238/21 208/237/21 +f 200/232/18 208/237/18 207/239/18 +f 209/240/17 211/531/17 212/241/17 +f 219/243/20 227/270/20 225/244/20 +f 213/246/20 222/266/20 224/247/20 +f 215/249/19 224/262/19 223/250/19 +f 216/252/21 223/264/21 221/253/21 +f 214/255/18 221/259/18 222/256/18 +f 218/258/17 222/256/17 221/259/17 +f 219/261/17 223/250/17 224/262/17 +f 217/245/17 221/253/17 223/264/17 +f 220/265/17 224/247/17 222/266/17 +f 225/244/17 227/270/17 228/268/17 +f 217/260/19 225/244/19 226/269/19 +f 218/267/21 226/269/21 228/268/21 +f 220/263/18 228/268/18 227/270/18 +f 229/271/17 231/532/17 232/272/17 +f 239/274/20 247/301/20 245/275/20 +f 233/277/20 242/297/20 244/278/20 +f 235/280/19 244/293/19 243/281/19 +f 236/283/21 243/295/21 241/284/21 +f 234/286/18 241/290/18 242/287/18 +f 238/289/17 242/287/17 241/290/17 +f 239/292/17 243/281/17 244/293/17 +f 237/276/17 241/284/17 243/295/17 +f 240/296/17 244/278/17 242/297/17 +f 245/275/17 247/301/17 248/299/17 +f 237/291/19 245/275/19 246/300/19 +f 238/298/21 246/300/21 248/299/21 +f 240/294/18 248/299/18 247/301/18 +f 249/302/17 251/533/17 252/303/17 +f 255/305/19 281/534/19 284/306/19 +f 357/308/17 358/382/17 355/309/17 +f 267/311/17 265/317/17 266/312/17 +f 262/314/19 267/311/19 268/313/19 +f 263/316/18 266/312/18 265/317/18 +f 261/319/21 268/313/21 266/312/21 +f 264/321/20 265/317/20 267/311/20 +f 273/323/20 272/330/20 270/324/20 +f 276/326/21 269/333/21 271/327/21 +f 274/329/18 271/327/18 272/330/18 +f 275/332/19 270/324/19 269/333/19 +f 270/324/17 272/330/17 271/327/17 +f 365/335/17 366/403/17 363/336/17 +f 255/338/17 277/176/17 278/339/17 +f 253/341/17 278/179/17 279/173/17 +f 254/343/17 279/173/17 280/178/17 +f 256/307/17 280/178/17 277/176/17 +f 254/342/18 283/535/18 282/345/18 +f 256/344/21 284/536/21 283/346/21 +f 253/340/20 282/537/20 281/347/20 +f 286/348/19 295/538/19 298/349/19 +f 288/351/20 297/365/20 300/352/20 +f 292/354/18 299/539/18 294/355/18 +f 290/357/17 285/363/17 286/348/17 +f 286/348/17 287/350/17 288/351/17 +f 288/351/17 291/353/17 292/354/17 +f 292/354/17 289/356/17 290/357/17 +f 290/357/17 286/348/17 288/351/17 +f 300/352/24 299/540/24 292/358/24 +f 290/357/25 289/541/25 294/359/25 +f 296/361/26 295/542/26 286/362/26 +f 288/351/27 287/543/27 298/364/27 +f 290/357/21 293/360/21 296/361/21 +f 301/366/17 302/544/17 304/367/17 +f 336/369/17 338/374/17 337/370/17 +f 336/369/18 335/371/18 342/372/18 +f 338/374/21 336/369/21 341/375/21 +f 335/371/20 337/370/20 340/377/20 +f 337/370/19 338/374/19 339/379/19 +f 351/381/18 355/309/18 358/382/18 +f 349/384/17 350/392/17 347/385/17 +f 346/387/20 350/392/20 349/384/20 +f 343/389/21 348/386/21 347/385/21 +f 345/391/18 347/385/18 350/392/18 +f 344/394/19 349/384/19 348/386/19 +f 353/396/19 357/308/19 356/310/19 +f 354/398/20 358/382/20 357/308/20 +f 352/400/21 356/310/21 355/309/21 +f 359/402/18 363/336/18 366/403/18 +f 361/405/19 365/335/19 364/337/19 +f 362/407/20 366/403/20 365/335/20 +f 360/409/21 364/337/21 363/336/21 +f 373/411/17 374/415/17 371/412/17 +f 367/414/18 371/412/18 374/415/18 +f 369/417/19 373/411/19 372/413/19 +f 370/419/20 374/415/20 373/411/20 +f 368/421/21 372/413/21 371/412/21 +f 381/423/17 382/427/17 379/424/17 +f 375/426/18 379/424/18 382/427/18 +f 377/429/19 381/423/19 380/425/19 +f 378/431/20 382/427/20 381/423/20 +f 376/433/21 380/425/21 379/424/21 +f 389/435/17 390/439/17 387/436/17 +f 383/438/18 387/436/18 390/439/18 +f 385/441/19 389/435/19 388/437/19 +f 386/443/20 390/439/20 389/435/20 +f 384/445/21 388/437/21 387/436/21 +f 601/447/20 602/480/20 598/448/20 +f 598/450/20 603/459/20 604/451/20 +f 606/453/20 605/456/20 597/454/20 +f 609/460/21 611/479/21 612/461/21 +f 614/463/21 613/472/21 609/464/21 +f 607/466/21 615/470/21 616/467/21 +f 615/470/28 612/461/28 601/447/28 +f 616/467/18 615/470/18 605/456/18 +f 613/472/19 614/463/19 604/451/19 +f 611/479/29 613/472/29 603/459/29 +f 612/461/17 611/479/17 602/480/17 +f 626/481/20 625/477/20 617/476/20 +f 618/475/20 623/474/20 624/483/20 +f 621/485/20 622/502/20 618/486/20 +f 629/488/21 631/501/21 632/489/21 +f 634/491/21 633/500/21 629/492/21 +f 627/494/21 635/498/21 636/495/21 +f 635/498/28 632/489/28 621/485/28 +f 636/495/18 635/498/18 625/477/18 +f 633/500/19 634/491/19 624/483/19 +f 631/501/29 633/500/29 623/474/29 +f 632/489/17 631/501/17 622/502/17 +s 1 +f 129/545/30 140/546/21 128/547/21 +f 136/548/31 147/549/32 135/550/32 +f 126/551/33 137/552/17 125/553/17 +f 133/554/34 144/555/35 132/556/35 +f 130/557/36 141/558/30 129/545/30 +f 125/553/17 148/559/31 136/548/31 +f 127/560/37 138/561/33 126/551/33 +f 134/562/20 145/563/34 133/554/34 +f 131/564/16 142/565/36 130/557/36 +f 128/547/21 139/566/37 127/560/37 +f 135/550/32 146/567/20 134/562/20 +f 132/556/35 143/568/16 131/569/16 +f 165/570/36 154/571/16 166/572/16 +f 163/573/21 150/574/37 151/575/21 +f 169/576/20 158/577/32 170/578/32 +f 166/579/16 155/580/35 167/581/35 +f 163/573/21 152/582/30 164/583/30 +f 170/578/32 159/584/31 171/585/31 +f 172/586/17 149/587/33 161/588/33 +f 167/581/35 156/589/34 168/590/34 +f 164/583/30 153/591/36 165/570/36 +f 171/585/31 160/592/17 172/586/17 +f 161/588/33 150/574/37 162/593/37 +f 168/590/34 157/594/20 169/576/20 +f 588/595/38 574/596/27 587/597/39 +f 585/598/40 573/599/41 572/600/42 +f 568/601/43 570/602/44 569/603/45 +f 588/595/38 569/603/45 305/604/46 +f 587/597/39 573/599/41 586/605/47 +f 571/606/48 309/607/49 310/608/50 +f 574/596/27 308/609/51 573/599/41 +f 305/604/46 312/610/52 306/611/53 +f 331/612/54 512/613/55 326/614/56 +f 325/615/57 331/612/54 326/614/56 +f 513/616/58 330/617/59 326/614/56 +f 327/618/60 326/614/56 330/617/59 +f 334/619/28 508/620/61 509/621/62 +f 332/622/63 510/623/64 511/624/65 +f 330/617/59 514/625/66 329/626/67 +f 315/627/19 327/628/60 314/629/26 +f 317/630/20 325/631/57 316/632/27 +f 319/633/18 323/634/68 318/635/24 +f 403/636/16 396/637/69 395/638/16 +f 401/639/21 394/640/70 393/641/21 +f 399/642/17 392/643/71 391/644/17 +f 406/645/72 391/644/17 398/646/72 +f 404/647/69 397/648/20 396/637/69 +f 402/649/70 395/650/16 394/640/70 +f 400/651/71 393/641/21 392/643/71 +f 405/652/20 398/646/72 397/648/20 +f 419/653/16 412/654/69 411/655/16 +f 417/656/21 410/657/70 409/658/21 +f 415/659/17 408/660/71 407/661/17 +f 422/662/72 407/661/17 414/663/72 +f 420/664/69 413/665/20 412/654/69 +f 418/666/70 411/667/16 410/657/70 +f 416/668/71 409/658/21 408/660/71 +f 421/669/20 414/663/72 413/665/20 +f 435/670/16 428/671/69 427/672/16 +f 433/673/21 426/674/70 425/675/21 +f 431/676/17 424/677/71 423/678/17 +f 438/679/72 423/678/17 430/680/72 +f 436/681/69 429/682/20 428/671/69 +f 434/683/70 427/684/16 426/674/70 +f 432/685/71 425/675/21 424/677/71 +f 437/686/20 430/680/72 429/682/20 +f 453/687/73 452/688/44 439/689/74 +f 453/687/73 454/690/75 452/688/44 +f 453/691/73 445/692/76 446/693/48 +f 446/693/48 460/694/50 453/691/73 +f 447/695/42 443/696/77 448/697/41 +f 450/698/46 442/699/78 441/700/79 +f 451/701/45 439/689/74 452/688/44 +f 446/693/48 444/702/80 447/695/42 +f 448/697/41 442/699/78 449/703/27 +f 451/701/45 441/700/79 440/704/81 +f 459/705/49 448/697/41 458/706/51 +f 455/707/52 450/698/46 451/701/45 +f 458/706/51 449/703/27 457/708/82 +f 459/705/49 446/693/48 447/695/42 +f 455/707/52 452/688/44 454/690/75 +f 457/708/82 450/698/46 456/709/53 +f 461/710/83 459/711/49 462/712/16 +f 463/713/56 457/708/82 464/714/19 +f 465/715/29 455/716/52 466/717/17 +f 467/718/28 453/719/73 468/720/18 +f 468/721/18 460/722/50 461/710/83 +f 462/712/16 458/706/51 463/713/56 +f 464/714/19 456/709/53 465/715/29 +f 466/717/17 454/723/75 467/718/28 +f 471/724/17 483/725/75 470/726/28 +f 473/727/19 481/728/53 472/729/29 +f 475/730/16 479/731/51 474/732/56 +f 469/733/18 477/734/50 476/735/83 +f 470/726/28 484/736/25 469/737/18 +f 472/729/29 482/738/52 471/724/17 +f 474/732/56 480/739/82 473/727/19 +f 476/735/83 478/740/49 475/730/16 +f 480/739/82 487/741/46 481/728/53 +f 482/742/52 485/743/44 483/744/75 +f 478/745/49 491/746/48 490/747/42 +f 479/731/51 488/748/27 480/739/82 +f 481/728/53 486/749/45 482/742/52 +f 479/731/51 490/747/42 489/750/41 +f 487/741/46 497/751/43 486/749/45 +f 489/750/41 495/752/39 488/748/27 +f 490/747/42 492/753/84 493/754/40 +f 485/743/44 497/751/43 498/755/85 +f 487/741/46 495/752/39 496/756/38 +f 490/747/42 494/757/47 489/750/41 +f 491/746/48 477/758/50 484/759/25 +f 484/759/25 492/753/84 491/746/48 +f 484/760/25 483/744/75 485/743/44 +f 484/760/25 485/743/44 498/755/85 +f 493/761/40 503/762/69 494/757/47 +f 495/752/39 501/763/72 496/756/38 +f 484/764/25 505/765/70 492/766/84 +f 498/767/85 506/768/21 484/769/25 +f 497/770/43 499/771/71 498/767/85 +f 492/766/84 504/772/16 493/761/40 +f 494/757/47 502/773/20 495/752/39 +f 496/756/38 500/774/17 497/770/43 +f 313/775/21 321/776/86 320/777/25 +f 314/629/26 328/778/87 313/779/21 +f 316/632/27 326/780/56 315/627/19 +f 318/635/24 324/781/88 317/630/20 +f 320/777/25 322/782/89 319/633/18 +f 324/783/88 331/612/54 325/615/57 +f 321/784/86 334/619/28 322/782/89 +f 324/783/88 333/785/90 332/622/63 +f 328/786/87 330/617/59 329/626/67 +f 328/787/87 507/788/91 321/784/86 +f 322/782/89 333/785/90 323/789/68 +f 331/612/54 511/624/65 512/613/55 +f 334/619/28 510/623/64 333/785/90 +f 329/790/67 508/620/61 507/788/91 +f 528/791/67 521/792/61 522/793/91 +f 523/794/28 519/795/64 524/796/90 +f 526/797/54 518/798/65 517/799/55 +f 534/800/68 523/794/28 524/796/90 +f 529/801/87 522/793/91 536/802/86 +f 530/803/60 528/804/67 529/805/87 +f 533/806/88 524/796/90 525/807/63 +f 536/802/86 523/794/28 535/808/89 +f 533/806/88 526/797/54 532/809/57 +f 537/810/25 535/808/89 538/811/18 +f 539/812/24 533/813/88 540/814/20 +f 541/815/27 531/816/56 542/817/19 +f 543/818/26 529/819/87 544/820/21 +f 544/821/21 536/822/86 537/810/25 +f 538/811/18 534/823/68 539/812/24 +f 540/814/20 532/824/57 541/815/27 +f 542/817/19 530/825/60 543/818/26 +f 527/826/59 515/827/66 528/804/67 +f 525/807/63 519/795/64 518/798/65 +f 522/793/91 520/828/62 523/794/28 +f 530/803/60 531/829/56 527/826/59 +f 516/830/58 527/826/59 531/829/56 +f 532/809/57 526/797/54 531/829/56 +f 526/797/54 517/799/55 531/829/56 +f 558/831/45 551/832/53 552/833/46 +f 553/834/27 549/835/51 554/836/41 +f 556/837/48 548/838/49 547/839/50 +f 565/840/39 554/836/41 564/841/47 +f 566/842/38 558/831/45 552/833/46 +f 559/843/43 557/844/44 558/831/45 +f 564/841/47 555/845/42 563/846/40 +f 565/840/39 552/833/46 553/834/27 +f 563/846/40 556/837/48 562/847/84 +f 521/848/61 559/849/43 520/828/62 +f 515/850/66 560/851/85 521/848/61 +f 516/852/58 561/853/25 515/854/66 +f 531/855/56 562/856/84 516/852/58 +f 517/857/55 563/858/40 531/855/56 +f 518/859/65 564/860/47 517/857/55 +f 519/861/64 565/840/39 518/859/65 +f 520/828/62 566/862/38 519/861/64 +f 557/844/44 545/863/52 558/831/45 +f 555/845/42 549/835/51 548/838/49 +f 553/834/27 551/832/53 550/864/82 +f 560/865/85 561/866/25 557/844/44 +f 546/867/75 557/844/44 561/866/25 +f 562/847/84 556/837/48 561/868/25 +f 556/837/48 547/839/50 561/868/25 +f 551/869/53 580/870/19 550/864/82 +f 549/871/51 578/872/16 548/873/49 +f 546/874/75 575/875/17 545/876/52 +f 547/877/50 582/878/18 561/879/25 +f 561/880/25 576/881/28 546/874/75 +f 545/876/52 581/882/29 551/869/53 +f 550/864/82 579/883/56 549/871/51 +f 548/873/49 577/884/83 547/877/50 +f 585/598/40 571/606/48 584/885/84 +f 508/886/61 568/887/43 509/621/62 +f 514/888/66 567/889/85 508/886/61 +f 514/890/66 584/891/84 583/892/25 +f 326/893/56 584/891/84 513/894/58 +f 512/895/55 585/896/40 326/893/56 +f 511/897/65 586/898/47 512/895/55 +f 510/899/64 587/597/39 511/897/65 +f 509/621/62 588/900/38 510/899/64 +f 570/602/44 312/610/52 569/603/45 +f 573/599/41 309/607/49 572/600/42 +f 574/596/27 306/611/53 307/901/82 +f 567/902/85 583/903/25 570/602/44 +f 311/904/75 570/602/44 583/903/25 +f 584/885/84 571/606/48 583/905/25 +f 571/606/48 310/608/50 583/905/25 +f 306/906/53 594/907/19 307/901/82 +f 308/908/51 592/909/16 309/910/49 +f 311/911/75 589/912/17 312/913/52 +f 310/914/50 596/915/18 583/916/25 +f 583/917/25 590/918/28 311/911/75 +f 312/913/52 595/919/29 306/906/53 +f 307/901/82 593/920/56 308/908/51 +f 309/910/49 591/921/83 310/914/50 +f 651/922/73 650/923/44 637/924/74 +f 651/922/73 652/925/75 650/923/44 +f 651/926/73 643/927/76 644/928/48 +f 644/928/48 658/929/50 651/926/73 +f 645/930/42 641/931/77 646/932/41 +f 648/933/46 640/934/78 639/935/79 +f 649/936/45 637/924/74 650/923/44 +f 644/928/48 642/937/80 645/930/42 +f 646/932/41 640/934/78 647/938/27 +f 649/936/45 639/935/79 638/939/81 +f 657/940/49 646/932/41 656/941/51 +f 653/942/52 648/933/46 649/936/45 +f 656/941/51 647/938/27 655/943/82 +f 657/940/49 644/928/48 645/930/42 +f 653/942/52 650/923/44 652/925/75 +f 655/943/82 648/933/46 654/944/53 +f 659/945/83 657/946/49 660/947/16 +f 661/948/56 655/943/82 662/949/19 +f 663/950/29 653/951/52 664/952/17 +f 665/953/28 651/954/73 666/955/18 +f 666/956/18 658/957/50 659/945/83 +f 660/947/16 656/941/51 661/948/56 +f 662/949/19 654/944/53 663/950/29 +f 664/952/17 652/958/75 665/953/28 +f 669/959/17 681/960/75 668/961/28 +f 671/962/19 679/963/53 670/964/29 +f 673/965/16 677/966/51 672/967/56 +f 667/968/18 675/969/50 674/970/83 +f 668/961/28 682/971/25 667/972/18 +f 670/964/29 680/973/52 669/959/17 +f 672/967/56 678/974/82 671/962/19 +f 674/970/83 676/975/49 673/965/16 +f 678/974/82 685/976/46 679/963/53 +f 680/977/52 683/978/44 681/979/75 +f 676/980/49 689/981/48 688/982/42 +f 677/966/51 686/983/27 678/974/82 +f 679/963/53 684/984/45 680/977/52 +f 677/966/51 688/982/42 687/985/41 +f 685/976/46 695/986/43 684/984/45 +f 686/983/27 692/987/47 693/988/39 +f 689/981/48 691/989/40 688/982/42 +f 684/984/45 696/990/85 683/978/44 +f 685/976/46 693/988/39 694/991/38 +f 688/982/42 692/987/47 687/985/41 +f 689/981/48 675/992/50 682/993/25 +f 682/993/25 690/994/84 689/981/48 +f 682/995/25 681/979/75 683/978/44 +f 682/995/25 683/978/44 696/990/85 +f 691/996/40 701/997/69 692/987/47 +f 693/988/39 699/998/72 694/991/38 +f 682/999/25 703/1000/70 690/1001/84 +f 696/1002/85 704/1003/21 682/1004/25 +f 695/1005/43 697/1006/71 696/1002/85 +f 690/1001/84 702/1007/16 691/996/40 +f 692/987/47 700/1008/20 693/988/39 +f 694/991/38 698/1009/17 695/1005/43 +f 719/1010/92 705/1011/93 718/1012/94 +f 719/1010/92 718/1012/94 720/1013/95 +f 719/1014/92 712/1015/96 711/1016/97 +f 712/1015/96 719/1014/92 726/1017/98 +f 709/1018/99 713/1019/100 714/1020/101 +f 716/1021/102 708/1022/103 715/1023/24 +f 718/1012/94 706/1024/104 717/1025/105 +f 710/1026/106 712/1015/96 713/1019/100 +f 708/1022/103 714/1020/101 715/1023/24 +f 717/1025/105 707/1027/107 716/1021/102 +f 714/1020/101 725/1028/108 724/1029/109 +f 721/1030/110 716/1021/102 722/1031/111 +f 715/1023/24 724/1029/109 723/1032/112 +f 725/1028/108 712/1015/96 726/1017/98 +f 718/1012/94 721/1030/110 720/1013/95 +f 716/1021/102 723/1032/112 722/1031/111 +f 725/1033/108 727/1034/56 728/1035/16 +f 723/1032/112 729/1036/83 730/1037/18 +f 721/1038/110 731/1039/28 732/1040/17 +f 719/1041/92 733/1042/29 734/1043/19 +f 726/1044/98 734/1045/19 727/1034/56 +f 724/1029/109 728/1035/16 729/1036/83 +f 722/1031/111 730/1037/18 731/1039/28 +f 720/1046/95 732/1040/17 733/1042/29 +f 749/1047/95 737/1048/17 736/1049/29 +f 747/1050/111 739/1051/18 738/1052/28 +f 745/1053/109 741/1054/16 740/1055/83 +f 743/1056/98 735/1057/19 742/1058/56 +f 750/1059/26 736/1049/29 735/1060/19 +f 748/1061/110 738/1052/28 737/1048/17 +f 746/1062/112 740/1055/83 739/1051/18 +f 744/1063/108 742/1058/56 741/1054/16 +f 753/1064/102 746/1062/112 747/1050/111 +f 751/1065/94 748/1066/110 749/1067/95 +f 744/1068/108 757/1069/96 743/1070/98 +f 754/1071/24 745/1053/109 746/1062/112 +f 752/1072/105 747/1050/111 748/1066/110 +f 745/1053/109 756/1073/100 744/1068/108 +f 763/1074/113 753/1064/102 752/1072/105 +f 761/1075/114 755/1076/101 754/1071/24 +f 759/1077/115 757/1069/96 756/1073/100 +f 751/1065/94 763/1074/113 752/1072/105 +f 753/1064/102 761/1075/114 754/1071/24 +f 760/1078/116 756/1073/100 755/1076/101 +f 757/1069/96 750/1079/26 743/1070/98 +f 750/1079/26 757/1069/96 758/1080/117 +f 750/1081/26 751/1065/94 749/1067/95 +f 750/1081/26 764/1082/118 751/1065/94 +f 769/1083/69 759/1084/115 760/1078/116 +f 767/1085/72 761/1075/114 762/1086/119 +f 771/1087/70 750/1088/26 758/1089/117 +f 772/1090/21 764/1091/118 750/1092/26 +f 765/1093/71 763/1094/113 764/1091/118 +f 770/1095/16 758/1089/117 759/1084/115 +f 768/1096/20 760/1078/116 761/1075/114 +f 766/1097/17 762/1086/119 763/1094/113 +f 787/1098/92 773/1099/93 786/1100/94 +f 787/1098/92 786/1100/94 788/1101/95 +f 787/1102/92 780/1103/96 779/1104/97 +f 780/1103/96 787/1102/92 794/1105/98 +f 777/1106/99 781/1107/100 782/1108/101 +f 784/1109/102 776/1110/103 783/1111/24 +f 786/1100/94 774/1112/104 785/1113/105 +f 778/1114/106 780/1103/96 781/1107/100 +f 776/1110/103 782/1108/101 783/1111/24 +f 785/1113/105 775/1115/107 784/1109/102 +f 782/1108/101 793/1116/108 792/1117/109 +f 789/1118/110 784/1109/102 790/1119/111 +f 783/1111/24 792/1117/109 791/1120/112 +f 793/1116/108 780/1103/96 794/1105/98 +f 786/1100/94 789/1118/110 788/1101/95 +f 784/1109/102 791/1120/112 790/1119/111 +f 793/1121/108 795/1122/56 796/1123/16 +f 791/1120/112 797/1124/83 798/1125/18 +f 789/1126/110 799/1127/28 800/1128/17 +f 787/1129/92 801/1130/29 802/1131/19 +f 794/1132/98 802/1133/19 795/1122/56 +f 792/1117/109 796/1123/16 797/1124/83 +f 790/1119/111 798/1125/18 799/1127/28 +f 788/1134/95 800/1128/17 801/1130/29 +f 817/1135/95 805/1136/17 804/1137/29 +f 815/1138/111 807/1139/18 806/1140/28 +f 813/1141/109 809/1142/16 808/1143/83 +f 811/1144/98 803/1145/19 810/1146/56 +f 818/1147/26 804/1137/29 803/1148/19 +f 816/1149/110 806/1140/28 805/1136/17 +f 814/1150/112 808/1143/83 807/1139/18 +f 812/1151/108 810/1146/56 809/1142/16 +f 821/1152/102 814/1150/112 815/1138/111 +f 819/1153/94 816/1154/110 817/1155/95 +f 812/1156/108 825/1157/96 811/1158/98 +f 822/1159/24 813/1141/109 814/1150/112 +f 820/1160/105 815/1138/111 816/1154/110 +f 813/1141/109 824/1161/100 812/1156/108 +f 831/1162/113 821/1152/102 820/1160/105 +f 829/1163/114 823/1164/101 822/1159/24 +f 827/1165/115 825/1157/96 824/1161/100 +f 819/1153/94 831/1162/113 820/1160/105 +f 821/1152/102 829/1163/114 822/1159/24 +f 828/1166/116 824/1161/100 823/1164/101 +f 825/1157/96 818/1167/26 811/1158/98 +f 818/1167/26 825/1157/96 826/1168/117 +f 818/1169/26 819/1153/94 817/1155/95 +f 818/1169/26 832/1170/118 819/1153/94 +f 837/1171/69 827/1172/115 828/1166/116 +f 835/1173/72 829/1163/114 830/1174/119 +f 839/1175/70 818/1176/26 826/1177/117 +f 840/1178/21 832/1179/118 818/1180/26 +f 833/1181/71 831/1182/113 832/1179/118 +f 838/1183/16 826/1177/117 827/1172/115 +f 836/1184/20 828/1166/116 829/1163/114 +f 834/1185/17 830/1174/119 831/1182/113 +f 129/545/30 141/558/30 140/546/21 +f 136/548/31 148/559/31 147/549/32 +f 126/551/33 138/561/33 137/552/17 +f 133/554/34 145/563/34 144/555/35 +f 130/557/36 142/565/36 141/558/30 +f 125/553/17 137/552/17 148/559/31 +f 127/560/37 139/566/37 138/561/33 +f 134/562/20 146/567/20 145/563/34 +f 131/564/16 143/1186/16 142/565/36 +f 128/547/21 140/546/21 139/566/37 +f 135/550/32 147/549/32 146/567/20 +f 132/556/35 144/555/35 143/568/16 +f 165/570/36 153/591/36 154/571/16 +f 163/573/21 162/593/37 150/574/37 +f 169/576/20 157/594/20 158/577/32 +f 166/579/16 154/1187/16 155/580/35 +f 163/573/21 151/575/21 152/582/30 +f 170/578/32 158/577/32 159/584/31 +f 172/586/17 160/592/17 149/587/33 +f 167/581/35 155/580/35 156/589/34 +f 164/583/30 152/582/30 153/591/36 +f 171/585/31 159/584/31 160/592/17 +f 161/588/33 149/587/33 150/574/37 +f 168/590/34 156/589/34 157/594/20 +f 588/595/38 305/604/46 574/596/27 +f 585/598/40 586/605/47 573/599/41 +f 568/601/43 567/902/85 570/602/44 +f 588/595/38 568/601/43 569/603/45 +f 587/597/39 574/596/27 573/599/41 +f 571/606/48 572/600/42 309/607/49 +f 574/596/27 307/901/82 308/609/51 +f 305/604/46 569/603/45 312/610/52 +f 334/619/28 507/788/91 508/620/61 +f 332/622/63 333/785/90 510/623/64 +f 330/617/59 513/616/58 514/625/66 +f 315/627/19 326/780/56 327/628/60 +f 317/630/20 324/781/88 325/631/57 +f 319/633/18 322/782/89 323/634/68 +f 403/636/16 404/647/69 396/637/69 +f 401/639/21 402/649/70 394/640/70 +f 399/642/17 400/651/71 392/643/71 +f 406/645/72 399/642/17 391/644/17 +f 404/647/69 405/652/20 397/648/20 +f 402/649/70 403/1188/16 395/650/16 +f 400/651/71 401/639/21 393/641/21 +f 405/652/20 406/645/72 398/646/72 +f 419/653/16 420/664/69 412/654/69 +f 417/656/21 418/666/70 410/657/70 +f 415/659/17 416/668/71 408/660/71 +f 422/662/72 415/659/17 407/661/17 +f 420/664/69 421/669/20 413/665/20 +f 418/666/70 419/1189/16 411/667/16 +f 416/668/71 417/656/21 409/658/21 +f 421/669/20 422/662/72 414/663/72 +f 435/670/16 436/681/69 428/671/69 +f 433/673/21 434/683/70 426/674/70 +f 431/676/17 432/685/71 424/677/71 +f 438/679/72 431/676/17 423/678/17 +f 436/681/69 437/686/20 429/682/20 +f 434/683/70 435/1190/16 427/684/16 +f 432/685/71 433/673/21 425/675/21 +f 437/686/20 438/679/72 430/680/72 +f 447/695/42 444/702/80 443/696/77 +f 450/698/46 449/703/27 442/699/78 +f 451/701/45 440/704/81 439/689/74 +f 446/693/48 445/692/76 444/702/80 +f 448/697/41 443/696/77 442/699/78 +f 451/701/45 450/698/46 441/700/79 +f 459/705/49 447/695/42 448/697/41 +f 455/707/52 456/709/53 450/698/46 +f 458/706/51 448/697/41 449/703/27 +f 459/705/49 460/694/50 446/693/48 +f 455/707/52 451/701/45 452/688/44 +f 457/708/82 449/703/27 450/698/46 +f 461/710/83 460/722/50 459/711/49 +f 463/713/56 458/706/51 457/708/82 +f 465/715/29 456/709/53 455/716/52 +f 467/718/28 454/723/75 453/719/73 +f 468/721/18 453/1191/73 460/722/50 +f 462/712/16 459/711/49 458/706/51 +f 464/714/19 457/708/82 456/709/53 +f 466/717/17 455/716/52 454/723/75 +f 471/724/17 482/738/52 483/725/75 +f 473/727/19 480/739/82 481/728/53 +f 475/730/16 478/740/49 479/731/51 +f 469/733/18 484/1192/25 477/734/50 +f 470/726/28 483/725/75 484/736/25 +f 472/729/29 481/728/53 482/738/52 +f 474/732/56 479/731/51 480/739/82 +f 476/735/83 477/734/50 478/740/49 +f 480/739/82 488/748/27 487/741/46 +f 482/742/52 486/749/45 485/743/44 +f 478/745/49 477/758/50 491/746/48 +f 479/731/51 489/750/41 488/748/27 +f 481/728/53 487/741/46 486/749/45 +f 479/731/51 478/745/49 490/747/42 +f 487/741/46 496/756/38 497/751/43 +f 489/750/41 494/757/47 495/752/39 +f 490/747/42 491/746/48 492/753/84 +f 485/743/44 486/749/45 497/751/43 +f 487/741/46 488/748/27 495/752/39 +f 490/747/42 493/754/40 494/757/47 +f 493/761/40 504/772/16 503/762/69 +f 495/752/39 502/773/20 501/763/72 +f 484/764/25 506/1193/21 505/765/70 +f 498/767/85 499/771/71 506/768/21 +f 497/770/43 500/774/17 499/771/71 +f 492/766/84 505/765/70 504/772/16 +f 494/757/47 503/762/69 502/773/20 +f 496/756/38 501/763/72 500/774/17 +f 313/775/21 328/1194/87 321/776/86 +f 314/629/26 327/628/60 328/778/87 +f 316/632/27 325/631/57 326/780/56 +f 318/635/24 323/634/68 324/781/88 +f 320/777/25 321/776/86 322/782/89 +f 324/783/88 332/622/63 331/612/54 +f 321/784/86 507/788/91 334/619/28 +f 324/783/88 323/789/68 333/785/90 +f 328/786/87 327/618/60 330/617/59 +f 328/787/87 329/790/67 507/788/91 +f 322/782/89 334/619/28 333/785/90 +f 331/612/54 332/622/63 511/624/65 +f 334/619/28 509/621/62 510/623/64 +f 329/790/67 514/1195/66 508/620/61 +f 528/791/67 515/1196/66 521/792/61 +f 523/794/28 520/828/62 519/795/64 +f 526/797/54 525/807/63 518/798/65 +f 534/800/68 535/808/89 523/794/28 +f 529/801/87 528/791/67 522/793/91 +f 530/803/60 527/826/59 528/804/67 +f 533/806/88 534/800/68 524/796/90 +f 536/802/86 522/793/91 523/794/28 +f 533/806/88 525/807/63 526/797/54 +f 537/810/25 536/822/86 535/808/89 +f 539/812/24 534/823/68 533/813/88 +f 541/815/27 532/824/57 531/816/56 +f 543/818/26 530/825/60 529/819/87 +f 544/821/21 529/1197/87 536/822/86 +f 538/811/18 535/808/89 534/823/68 +f 540/814/20 533/813/88 532/824/57 +f 542/817/19 531/816/56 530/825/60 +f 527/826/59 516/830/58 515/827/66 +f 525/807/63 524/796/90 519/795/64 +f 522/793/91 521/792/61 520/828/62 +f 558/831/45 545/863/52 551/832/53 +f 553/834/27 550/864/82 549/835/51 +f 556/837/48 555/845/42 548/838/49 +f 565/840/39 553/834/27 554/836/41 +f 566/842/38 559/843/43 558/831/45 +f 559/843/43 560/865/85 557/844/44 +f 564/841/47 554/836/41 555/845/42 +f 565/840/39 566/842/38 552/833/46 +f 563/846/40 555/845/42 556/837/48 +f 521/848/61 560/851/85 559/849/43 +f 515/850/66 561/1198/25 560/851/85 +f 516/852/58 562/856/84 561/853/25 +f 531/855/56 563/858/40 562/856/84 +f 517/857/55 564/860/47 563/858/40 +f 518/859/65 565/840/39 564/860/47 +f 519/861/64 566/862/38 565/840/39 +f 520/828/62 559/849/43 566/862/38 +f 557/844/44 546/867/75 545/863/52 +f 555/845/42 554/836/41 549/835/51 +f 553/834/27 552/833/46 551/832/53 +f 551/869/53 581/882/29 580/870/19 +f 549/871/51 579/883/56 578/872/16 +f 546/874/75 576/881/28 575/875/17 +f 547/877/50 577/884/83 582/878/18 +f 561/880/25 582/1199/18 576/881/28 +f 545/876/52 575/875/17 581/882/29 +f 550/864/82 580/870/19 579/883/56 +f 548/873/49 578/872/16 577/884/83 +f 585/598/40 572/600/42 571/606/48 +f 508/886/61 567/889/85 568/887/43 +f 514/888/66 583/1200/25 567/889/85 +f 514/890/66 513/894/58 584/891/84 +f 326/893/56 585/896/40 584/891/84 +f 512/895/55 586/898/47 585/896/40 +f 511/897/65 587/597/39 586/898/47 +f 510/899/64 588/900/38 587/597/39 +f 509/621/62 568/887/43 588/900/38 +f 570/602/44 311/904/75 312/610/52 +f 573/599/41 308/609/51 309/607/49 +f 574/596/27 305/604/46 306/611/53 +f 306/906/53 595/919/29 594/907/19 +f 308/908/51 593/920/56 592/909/16 +f 311/911/75 590/918/28 589/912/17 +f 310/914/50 591/921/83 596/915/18 +f 583/917/25 596/1201/18 590/918/28 +f 312/913/52 589/912/17 595/919/29 +f 307/901/82 594/907/19 593/920/56 +f 309/910/49 592/909/16 591/921/83 +f 645/930/42 642/937/80 641/931/77 +f 648/933/46 647/938/27 640/934/78 +f 649/936/45 638/939/81 637/924/74 +f 644/928/48 643/927/76 642/937/80 +f 646/932/41 641/931/77 640/934/78 +f 649/936/45 648/933/46 639/935/79 +f 657/940/49 645/930/42 646/932/41 +f 653/942/52 654/944/53 648/933/46 +f 656/941/51 646/932/41 647/938/27 +f 657/940/49 658/929/50 644/928/48 +f 653/942/52 649/936/45 650/923/44 +f 655/943/82 647/938/27 648/933/46 +f 659/945/83 658/957/50 657/946/49 +f 661/948/56 656/941/51 655/943/82 +f 663/950/29 654/944/53 653/951/52 +f 665/953/28 652/958/75 651/954/73 +f 666/956/18 651/1202/73 658/957/50 +f 660/947/16 657/946/49 656/941/51 +f 662/949/19 655/943/82 654/944/53 +f 664/952/17 653/951/52 652/958/75 +f 669/959/17 680/973/52 681/960/75 +f 671/962/19 678/974/82 679/963/53 +f 673/965/16 676/975/49 677/966/51 +f 667/968/18 682/1203/25 675/969/50 +f 668/961/28 681/960/75 682/971/25 +f 670/964/29 679/963/53 680/973/52 +f 672/967/56 677/966/51 678/974/82 +f 674/970/83 675/969/50 676/975/49 +f 678/974/82 686/983/27 685/976/46 +f 680/977/52 684/984/45 683/978/44 +f 676/980/49 675/992/50 689/981/48 +f 677/966/51 687/985/41 686/983/27 +f 679/963/53 685/976/46 684/984/45 +f 677/966/51 676/980/49 688/982/42 +f 685/976/46 694/991/38 695/986/43 +f 686/983/27 687/985/41 692/987/47 +f 689/981/48 690/994/84 691/989/40 +f 684/984/45 695/986/43 696/990/85 +f 685/976/46 686/983/27 693/988/39 +f 688/982/42 691/989/40 692/987/47 +f 691/996/40 702/1007/16 701/997/69 +f 693/988/39 700/1008/20 699/998/72 +f 682/999/25 704/1204/21 703/1000/70 +f 696/1002/85 697/1006/71 704/1003/21 +f 695/1005/43 698/1009/17 697/1006/71 +f 690/1001/84 703/1000/70 702/1007/16 +f 692/987/47 701/997/69 700/1008/20 +f 694/991/38 699/998/72 698/1009/17 +f 709/1018/99 710/1026/106 713/1019/100 +f 716/1021/102 707/1027/107 708/1022/103 +f 718/1012/94 705/1011/93 706/1024/104 +f 710/1026/106 711/1016/97 712/1015/96 +f 708/1022/103 709/1018/99 714/1020/101 +f 717/1025/105 706/1024/104 707/1027/107 +f 714/1020/101 713/1019/100 725/1028/108 +f 721/1030/110 717/1025/105 716/1021/102 +f 715/1023/24 714/1020/101 724/1029/109 +f 725/1028/108 713/1019/100 712/1015/96 +f 718/1012/94 717/1025/105 721/1030/110 +f 716/1021/102 715/1023/24 723/1032/112 +f 725/1033/108 726/1044/98 727/1034/56 +f 723/1032/112 724/1029/109 729/1036/83 +f 721/1038/110 722/1031/111 731/1039/28 +f 719/1041/92 720/1046/95 733/1042/29 +f 726/1044/98 719/1205/92 734/1045/19 +f 724/1029/109 725/1033/108 728/1035/16 +f 722/1031/111 723/1032/112 730/1037/18 +f 720/1046/95 721/1038/110 732/1040/17 +f 749/1047/95 748/1061/110 737/1048/17 +f 747/1050/111 746/1062/112 739/1051/18 +f 745/1053/109 744/1063/108 741/1054/16 +f 743/1056/98 750/1206/26 735/1057/19 +f 750/1059/26 749/1047/95 736/1049/29 +f 748/1061/110 747/1050/111 738/1052/28 +f 746/1062/112 745/1053/109 740/1055/83 +f 744/1063/108 743/1056/98 742/1058/56 +f 753/1064/102 754/1071/24 746/1062/112 +f 751/1065/94 752/1072/105 748/1066/110 +f 744/1068/108 756/1073/100 757/1069/96 +f 754/1071/24 755/1076/101 745/1053/109 +f 752/1072/105 753/1064/102 747/1050/111 +f 745/1053/109 755/1076/101 756/1073/100 +f 763/1074/113 762/1086/119 753/1064/102 +f 761/1075/114 760/1078/116 755/1076/101 +f 759/1077/115 758/1080/117 757/1069/96 +f 751/1065/94 764/1082/118 763/1074/113 +f 753/1064/102 762/1086/119 761/1075/114 +f 760/1078/116 759/1077/115 756/1073/100 +f 769/1083/69 770/1095/16 759/1084/115 +f 767/1085/72 768/1096/20 761/1075/114 +f 771/1087/70 772/1207/21 750/1088/26 +f 772/1090/21 765/1093/71 764/1091/118 +f 765/1093/71 766/1097/17 763/1094/113 +f 770/1095/16 771/1087/70 758/1089/117 +f 768/1096/20 769/1083/69 760/1078/116 +f 766/1097/17 767/1085/72 762/1086/119 +f 777/1106/99 778/1114/106 781/1107/100 +f 784/1109/102 775/1115/107 776/1110/103 +f 786/1100/94 773/1099/93 774/1112/104 +f 778/1114/106 779/1104/97 780/1103/96 +f 776/1110/103 777/1106/99 782/1108/101 +f 785/1113/105 774/1112/104 775/1115/107 +f 782/1108/101 781/1107/100 793/1116/108 +f 789/1118/110 785/1113/105 784/1109/102 +f 783/1111/24 782/1108/101 792/1117/109 +f 793/1116/108 781/1107/100 780/1103/96 +f 786/1100/94 785/1113/105 789/1118/110 +f 784/1109/102 783/1111/24 791/1120/112 +f 793/1121/108 794/1132/98 795/1122/56 +f 791/1120/112 792/1117/109 797/1124/83 +f 789/1126/110 790/1119/111 799/1127/28 +f 787/1129/92 788/1134/95 801/1130/29 +f 794/1132/98 787/1208/92 802/1133/19 +f 792/1117/109 793/1121/108 796/1123/16 +f 790/1119/111 791/1120/112 798/1125/18 +f 788/1134/95 789/1126/110 800/1128/17 +f 817/1135/95 816/1149/110 805/1136/17 +f 815/1138/111 814/1150/112 807/1139/18 +f 813/1141/109 812/1151/108 809/1142/16 +f 811/1144/98 818/1209/26 803/1145/19 +f 818/1147/26 817/1135/95 804/1137/29 +f 816/1149/110 815/1138/111 806/1140/28 +f 814/1150/112 813/1141/109 808/1143/83 +f 812/1151/108 811/1144/98 810/1146/56 +f 821/1152/102 822/1159/24 814/1150/112 +f 819/1153/94 820/1160/105 816/1154/110 +f 812/1156/108 824/1161/100 825/1157/96 +f 822/1159/24 823/1164/101 813/1141/109 +f 820/1160/105 821/1152/102 815/1138/111 +f 813/1141/109 823/1164/101 824/1161/100 +f 831/1162/113 830/1174/119 821/1152/102 +f 829/1163/114 828/1166/116 823/1164/101 +f 827/1165/115 826/1168/117 825/1157/96 +f 819/1153/94 832/1170/118 831/1162/113 +f 821/1152/102 830/1174/119 829/1163/114 +f 828/1166/116 827/1165/115 824/1161/100 +f 837/1171/69 838/1183/16 827/1172/115 +f 835/1173/72 836/1184/20 829/1163/114 +f 839/1175/70 840/1210/21 818/1176/26 +f 840/1178/21 833/1181/71 832/1179/118 +f 833/1181/71 834/1185/17 831/1182/113 +f 838/1183/16 839/1175/70 826/1177/117 +f 836/1184/20 837/1171/69 828/1166/116 +f 834/1185/17 835/1173/72 830/1174/119 diff --git a/src/main/resources/assets/hbm/models/machines/rotary_furnace.obj b/src/main/resources/assets/hbm/models/machines/rotary_furnace.obj new file mode 100644 index 000000000..20591f327 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/rotary_furnace.obj @@ -0,0 +1,3893 @@ +# Blender v2.79 (sub 0) OBJ File: 'rotary_furnace.blend' +# www.blender.org +o Piston +v -0.375000 2.000000 1.125000 +v -0.375000 2.000000 1.875000 +v 0.375000 2.000000 1.875000 +v 0.375000 2.000000 1.125000 +v -0.375000 3.000000 1.125000 +v -0.375000 3.000000 1.875000 +v 0.375000 3.000000 1.875000 +v 0.375000 3.000000 1.125000 +v -0.500000 3.000000 1.000000 +v -0.500000 3.000000 2.000000 +v 0.500000 3.000000 2.000000 +v 0.500000 3.000000 1.000000 +v -0.500000 3.250000 1.000000 +v -0.500000 3.250000 2.000000 +v 0.500000 3.250000 2.000000 +v 0.500000 3.250000 1.000000 +vt 0.681035 0.815217 +vt 0.620690 0.826087 +vt 0.629310 0.815217 +vt 0.741379 0.847826 +vt 0.689655 0.934783 +vt 0.689655 0.847826 +vt 0.844828 0.847826 +vt 0.793103 0.934783 +vt 0.793103 0.847826 +vt 0.741379 0.934783 +vt 0.896552 0.847826 +vt 0.844828 0.934783 +vt 0.758621 0.826087 +vt 0.689655 0.847826 +vt 0.689655 0.826087 +vt 0.629310 0.750000 +vt 0.689655 0.739130 +vt 0.681035 0.750000 +vt 0.620690 0.739130 +vt 0.620690 0.847826 +vt 0.689655 0.934783 +vt 0.620690 0.934783 +vt 0.896552 0.826087 +vt 0.827586 0.847826 +vt 0.827586 0.826087 +vt 0.758621 0.847826 +vt 0.896552 0.934783 +vt 0.896552 0.847826 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +s off +f 8/1/1 11/2/1 7/3/1 +f 4/4/2 7/5/2 3/6/2 +f 2/7/3 5/8/3 1/9/3 +f 1/9/4 8/10/4 4/4/4 +f 3/11/5 6/12/5 2/7/5 +f 9/13/4 16/14/4 12/15/4 +f 6/16/1 9/17/1 5/18/1 +f 5/18/1 12/15/1 8/1/1 +f 7/3/1 10/19/1 6/16/1 +f 15/20/6 13/21/6 14/22/6 +f 11/23/5 14/24/5 10/25/5 +f 12/15/2 15/20/2 11/2/2 +f 10/25/3 13/26/3 9/13/3 +f 8/1/1 12/15/1 11/2/1 +f 4/4/2 8/10/2 7/5/2 +f 2/7/3 6/12/3 5/8/3 +f 1/9/4 5/8/4 8/10/4 +f 3/11/5 7/27/5 6/12/5 +f 9/13/4 13/26/4 16/14/4 +f 6/16/1 10/19/1 9/17/1 +f 5/18/1 9/17/1 12/15/1 +f 7/3/1 11/2/1 10/19/1 +f 15/20/6 16/14/6 13/21/6 +f 11/23/5 15/28/5 14/24/5 +f 12/15/2 16/14/2 15/20/2 +f 10/25/3 14/24/3 13/26/3 +o Furnace +v -1.500000 0.000000 2.500000 +v 1.500000 0.000000 2.500000 +v -1.500000 0.000000 -2.500000 +v 1.500000 0.000000 -2.500000 +v 1.500000 0.750000 -0.500000 +v -1.500000 0.500000 2.500000 +v 1.500000 0.500000 2.500000 +v 1.500000 0.250000 -0.500000 +v -1.500000 0.500000 0.500000 +v 1.500000 0.500000 0.500000 +v 1.500000 1.000000 0.500000 +v 1.500000 1.000000 -2.500000 +v -1.500000 1.000000 -2.500000 +v -1.500000 1.000000 0.500000 +v -1.250000 1.000000 -0.500000 +v 1.250000 1.000000 -0.500000 +v -1.250000 1.000000 -1.500000 +v 1.250000 1.000000 -1.500000 +v 0.500000 1.000000 0.250000 +v 0.500000 1.000000 -2.250000 +v -0.500000 1.000000 0.250000 +v -0.500000 1.000000 -2.250000 +v -1.250000 4.000000 -0.500000 +v 1.250000 4.000000 -0.500000 +v -1.250000 4.000000 -1.500000 +v 1.250000 4.000000 -1.500000 +v 0.500000 4.000000 0.250000 +v 0.500000 4.000000 -2.250000 +v -0.500000 4.000000 0.250000 +v -0.500000 4.000000 -2.250000 +v -0.500000 4.500000 -1.500000 +v -0.500000 4.500000 -0.500000 +v 0.500000 4.500000 -1.500000 +v 0.500000 4.500000 -0.500000 +v 0.500000 1.000000 0.500000 +v 1.250000 1.000000 0.500000 +v 0.500000 1.000000 0.250000 +v 1.250000 1.000000 -0.500000 +v 0.500000 3.500000 0.500000 +v 1.250000 3.500000 0.500000 +v 0.500000 3.500000 0.250000 +v 1.250000 3.500000 -0.500000 +v -0.500000 5.000000 -1.500000 +v -0.500000 5.000000 -0.500000 +v 0.500000 5.000000 -1.500000 +v 0.500000 5.000000 -0.500000 +v 0.500000 4.750000 -1.500000 +v 0.500000 4.926777 -1.426777 +v 0.500000 5.000000 -1.250000 +v 0.500000 4.926777 -1.073223 +v 0.500000 4.750000 -1.000000 +v 0.500000 4.573223 -1.073223 +v 0.500000 4.500000 -1.250000 +v 0.500000 4.573223 -1.426777 +v 0.625000 4.750000 -1.500000 +v 0.625000 4.926777 -1.426777 +v 0.625000 5.000000 -1.250000 +v 0.625000 4.926777 -1.073223 +v 0.625000 4.750000 -1.000000 +v 0.625000 4.573223 -1.073223 +v 0.625000 4.500000 -1.250000 +v 0.625000 4.573223 -1.426777 +v 0.801777 4.676777 -1.500000 +v 0.926777 4.801777 -1.426777 +v 0.978553 4.853553 -1.250000 +v 0.926777 4.801777 -1.073223 +v 0.801777 4.676777 -1.000000 +v 0.676776 4.551776 -1.073223 +v 0.676776 4.551776 -1.426777 +v 0.875000 4.500000 -1.500000 +v 1.051777 4.500000 -1.426777 +v 1.125000 4.500000 -1.250000 +v 1.051777 4.500000 -1.073223 +v 0.875000 4.500000 -1.000000 +v 0.698223 4.500000 -1.073223 +v 0.698223 4.500000 -1.426777 +v 0.625000 4.000000 -1.250000 +v 0.875000 4.000000 -1.500000 +v 1.051777 4.000000 -1.426777 +v 1.125000 4.000000 -1.250000 +v 1.051777 4.000000 -1.073223 +v 0.875000 4.000000 -1.000000 +v 0.698223 4.000000 -1.073223 +v 0.698223 4.000000 -1.426777 +v 0.500000 4.750000 -1.000000 +v 0.500000 4.926777 -0.926777 +v 0.500000 5.000000 -0.750000 +v 0.500000 4.926777 -0.573223 +v 0.500000 4.750000 -0.500000 +v 0.500000 4.573223 -0.573223 +v 0.500000 4.500000 -0.750000 +v 0.500000 4.573223 -0.926777 +v 0.625000 4.750000 -1.000000 +v 0.625000 4.926777 -0.926777 +v 0.625000 5.000000 -0.750000 +v 0.625000 4.926777 -0.573223 +v 0.625000 4.750000 -0.500000 +v 0.625000 4.573223 -0.573223 +v 0.625000 4.500000 -0.750000 +v 0.625000 4.573223 -0.926777 +v 0.801777 4.676777 -1.000000 +v 0.926777 4.801777 -0.926777 +v 0.978553 4.853553 -0.750000 +v 0.926777 4.801777 -0.573223 +v 0.801777 4.676777 -0.500000 +v 0.676776 4.551776 -0.573223 +v 0.676776 4.551776 -0.926777 +v 0.875000 4.500000 -1.000000 +v 1.051777 4.500000 -0.926777 +v 1.125000 4.500000 -0.750000 +v 1.051777 4.500000 -0.573223 +v 0.875000 4.500000 -0.500000 +v 0.698223 4.500000 -0.573223 +v 0.698223 4.500000 -0.926777 +v 0.625000 4.000000 -0.750000 +v 0.875000 4.000000 -1.000000 +v 1.051777 4.000000 -0.926777 +v 1.125000 4.000000 -0.750000 +v 1.051777 4.000000 -0.573223 +v 0.875000 4.000000 -0.500000 +v 0.698223 4.000000 -0.573223 +v 0.698223 4.000000 -0.926777 +v 1.125000 3.000000 0.500000 +v 1.051777 3.176777 0.500000 +v 0.875000 3.250000 0.500000 +v 0.698223 3.176777 0.500000 +v 0.625000 3.000000 0.500000 +v 0.698223 2.823223 0.500000 +v 0.875000 2.750000 0.500000 +v 1.051777 2.823223 0.500000 +v 1.125000 3.000000 0.625000 +v 1.051777 3.176777 0.625000 +v 0.875000 3.250000 0.625000 +v 0.698223 3.176777 0.625000 +v 0.625000 3.000000 0.625000 +v 0.698223 2.823223 0.625000 +v 0.875000 2.750000 0.625000 +v 1.051777 2.823223 0.625000 +v 1.125000 2.926777 0.801777 +v 1.051777 3.051777 0.926777 +v 0.875000 3.103553 0.978554 +v 0.698223 3.051777 0.926777 +v 0.625000 2.926777 0.801777 +v 0.698223 2.801776 0.676777 +v 1.051777 2.801776 0.676777 +v 1.125000 2.750000 0.875000 +v 1.051777 2.750000 1.051777 +v 0.875000 2.750000 1.125000 +v 0.698223 2.750000 1.051777 +v 0.625000 2.750000 0.875000 +v 0.698223 2.750000 0.698223 +v 1.051777 2.750000 0.698223 +v 0.875000 1.000000 0.625000 +v 1.125000 1.000000 0.875000 +v 1.051777 1.000000 1.051777 +v 0.875000 1.000000 1.125000 +v 0.698223 1.000000 1.051777 +v 0.625000 1.000000 0.875000 +v 0.698223 1.000000 0.698223 +v 1.051777 1.000000 0.698223 +v 0.875000 0.646447 0.771447 +v 1.125000 0.823223 0.948224 +v 1.051777 0.948223 1.073224 +v 0.698223 0.948223 1.073224 +v 0.625000 0.823223 0.948224 +v 0.698223 0.698223 0.823223 +v 1.051777 0.698223 0.823223 +v 0.875000 0.500000 1.125000 +v 1.125000 0.750000 1.125000 +v 1.051777 0.926777 1.125000 +v 0.698223 0.926777 1.125000 +v 0.625000 0.750000 1.125000 +v 0.698223 0.573223 1.125000 +v 1.051777 0.573223 1.125000 +v 1.125000 2.250000 0.500000 +v 1.051777 2.426777 0.500000 +v 0.875000 2.500000 0.500000 +v 0.698223 2.426777 0.500000 +v 0.625000 2.250000 0.500000 +v 0.698223 2.073223 0.500000 +v 0.875000 2.000000 0.500000 +v 1.051777 2.073223 0.500000 +v 1.125000 2.250000 0.875000 +v 1.051777 2.426777 0.875000 +v 0.875000 2.500000 0.875000 +v 0.698223 2.426777 0.875000 +v 0.625000 2.250000 0.875000 +v 0.698223 2.073223 0.875000 +v 0.875000 2.000000 0.875000 +v 1.051777 2.073223 0.875000 +v 1.125000 1.500000 0.500000 +v 1.051777 1.676777 0.500000 +v 0.875000 1.750000 0.500000 +v 0.698223 1.676777 0.500000 +v 0.625000 1.500000 0.500000 +v 0.698223 1.323223 0.500000 +v 0.875000 1.250000 0.500000 +v 1.051777 1.323223 0.500000 +v 1.125000 1.500000 0.875000 +v 1.051777 1.676777 0.875000 +v 0.875000 1.750000 0.875000 +v 0.698223 1.676777 0.875000 +v 0.625000 1.500000 0.875000 +v 0.698223 1.323223 0.875000 +v 0.875000 1.250000 0.875000 +v 1.051777 1.323223 0.875000 +v -0.926777 4.801777 -0.926776 +v -0.978554 4.853553 -0.750000 +v -0.926777 4.801777 -0.573223 +v -0.801777 4.676777 -0.500000 +v -0.625000 4.573223 -0.573223 +v -0.625000 4.500000 -0.750000 +v -0.625000 4.573223 -0.926776 +v -0.625000 4.750000 -1.000000 +v -1.500000 0.500000 2.250000 +v -1.250000 0.500000 2.250000 +v -1.500000 0.500000 1.750000 +v -1.250000 0.500000 1.750000 +v -1.500000 0.750000 1.750000 +v -1.500000 0.750000 2.250000 +v -1.250000 0.750000 2.250000 +v -1.250000 0.750000 1.750000 +v -1.250000 0.500000 2.187500 +v 0.187500 0.500000 2.187500 +v -1.250000 0.500000 1.812500 +v 0.187500 0.500000 1.812500 +v -1.250000 0.687500 1.812500 +v -1.250000 0.687500 2.187500 +v -0.187500 0.687500 2.187500 +v -0.187500 0.687500 1.812500 +v -0.625000 4.926777 -0.926776 +v -0.625000 5.000000 -0.750000 +v -0.625000 4.926777 -0.573223 +v -0.625000 4.750000 -0.500000 +v -0.500000 4.573223 -0.573223 +v -0.500000 4.500000 -0.750000 +v -0.500000 4.573223 -0.926776 +v -0.500000 4.750000 -1.000000 +v -0.500000 0.500000 2.000000 +v 0.500000 0.500000 2.000000 +v -0.500000 0.500000 1.000000 +v 0.500000 0.500000 1.000000 +v -0.500000 2.000000 1.000000 +v -0.500000 2.000000 2.000000 +v 0.500000 2.000000 2.000000 +v 0.500000 2.000000 1.000000 +v 0.875000 1.000000 1.250000 +v 0.875000 0.500000 1.250000 +v 1.125000 0.750000 1.250000 +v 1.051777 0.926777 1.250000 +v 0.698223 0.926777 1.250000 +v 0.625000 0.750000 1.250000 +v 0.698223 0.573223 1.250000 +v 1.051777 0.573223 1.250000 +v 0.801777 1.000000 1.426777 +v 0.801777 0.500000 1.426777 +v 0.978553 0.750000 1.603553 +v 0.926777 0.926777 1.551777 +v 0.676777 0.926777 1.301777 +v 0.676777 0.573223 1.301777 +v 0.926777 0.573223 1.551777 +v 0.625000 1.000000 1.500000 +v 0.625000 0.500000 1.500000 +v 0.625000 0.750000 1.750000 +v 0.625000 0.926777 1.676777 +v 0.625000 0.926777 1.323224 +v 0.625000 0.573223 1.323224 +v 0.625000 0.573223 1.676777 +v 0.500000 0.750000 1.250000 +v 0.500000 1.000000 1.500000 +v 0.500000 0.500000 1.500000 +v 0.500000 0.750000 1.750000 +v 0.500000 0.926777 1.676777 +v 0.500000 0.926777 1.323224 +v 0.500000 0.573223 1.323224 +v 0.500000 0.573223 1.676777 +v -0.187500 1.625000 2.187500 +v -0.187500 1.625000 1.812500 +v 0.187500 1.625000 1.812500 +v 0.187500 1.625000 2.187500 +v -0.500000 4.926777 -0.926776 +v -0.500000 5.000000 -0.750000 +v -0.500000 4.926777 -0.573223 +v -0.500000 4.750000 -0.500000 +v 1.500000 0.750000 -1.500000 +v 1.500000 0.250000 -1.500000 +v 0.500000 0.250000 -0.500000 +v 0.500000 0.250000 -1.500000 +v 0.500000 0.750000 -0.500000 +v 0.500000 0.750000 -1.500000 +v 1.375000 0.750000 -0.500000 +v 1.375000 0.250000 -0.500000 +v 1.375000 0.750000 -1.500000 +v 1.375000 0.250000 -1.500000 +v 1.125000 1.000000 -1.625000 +v 0.625000 1.000000 -2.125000 +v 1.125000 1.000000 -2.125000 +v 0.625000 3.500000 -2.125000 +v 1.125000 3.500000 -1.625000 +v 1.125000 3.500000 -2.125000 +v -1.125000 1.000000 -1.625000 +v -1.125000 1.000000 -2.125000 +v -0.625000 1.000000 -2.125000 +v -1.125000 3.500000 -2.125000 +v -1.125000 3.500000 -1.625000 +v -0.625000 3.500000 -2.125000 +v -1.125000 1.000000 0.125000 +v -0.625000 1.000000 0.125000 +v -1.125000 1.000000 -0.375000 +v -1.125000 3.500000 -0.375000 +v -1.125000 3.500000 0.125000 +v -0.625000 3.500000 0.125000 +v -0.801777 4.676777 -1.000000 +v -0.676777 4.551776 -0.926776 +v -0.676777 4.551776 -0.573223 +v -0.875000 4.500000 -0.500000 +v -1.051777 4.500000 -0.573223 +v -1.125000 4.500000 -0.750000 +v -1.051777 4.500000 -0.926776 +v -0.875000 4.500000 -1.000000 +v -0.698224 4.500000 -0.926776 +v -0.698224 4.500000 -0.573223 +v -0.625000 4.000000 -0.750000 +v -0.875000 4.000000 -0.500000 +v -1.051777 4.000000 -0.573223 +v -1.125000 4.000000 -0.750000 +v -1.051777 4.000000 -0.926776 +v -0.875000 4.000000 -1.000000 +v -0.698224 4.000000 -0.926776 +v -0.698224 4.000000 -0.573223 +v -0.500000 4.750000 -1.000000 +v -0.500000 4.926777 -1.073223 +v -0.500000 5.000000 -1.250000 +v -0.500000 4.926777 -1.426777 +v -0.500000 4.750000 -1.500000 +v -0.500000 4.573223 -1.426777 +v -0.500000 4.500000 -1.250000 +v -0.500000 4.573223 -1.073223 +v -0.625000 4.750000 -1.000000 +v -0.625000 4.926777 -1.073223 +v -0.625000 5.000000 -1.250000 +v -0.625000 4.926777 -1.426777 +v -0.625000 4.750000 -1.500000 +v -0.625000 4.573223 -1.426777 +v -0.625000 4.500000 -1.250000 +v -0.625000 4.573223 -1.073223 +v -0.801777 4.676777 -1.000000 +v -0.926777 4.801777 -1.073223 +v -0.978554 4.853553 -1.250000 +v -0.926777 4.801777 -1.426777 +v -0.801777 4.676777 -1.500000 +v -0.676777 4.551776 -1.426777 +v -0.676777 4.551776 -1.073223 +v -0.875000 4.500000 -1.000000 +v -1.051777 4.500000 -1.073223 +v -1.125000 4.500000 -1.250000 +v -1.051777 4.500000 -1.426777 +v -0.875000 4.500000 -1.500000 +v -0.698224 4.500000 -1.426777 +v -0.698224 4.500000 -1.073223 +v -0.625000 4.000000 -1.250000 +v -0.875000 4.000000 -1.000000 +v -1.051777 4.000000 -1.073223 +v -1.125000 4.000000 -1.250000 +v -1.051777 4.000000 -1.426777 +v -0.875000 4.000000 -1.500000 +v -0.698224 4.000000 -1.426777 +v -0.698224 4.000000 -1.073223 +v -0.500000 4.750000 -1.500000 +v -0.426777 4.926777 -1.500000 +v -0.250000 5.000000 -1.500000 +v -0.073224 4.926777 -1.500000 +v -0.000000 4.750000 -1.500000 +v -0.073224 4.573223 -1.500000 +v -0.250000 4.500000 -1.500000 +v -0.426777 4.573223 -1.500000 +v -0.500000 4.750000 -1.625000 +v -0.426777 4.926777 -1.625000 +v -0.250000 5.000000 -1.625000 +v -0.073224 4.926777 -1.625000 +v -0.000000 4.750000 -1.625000 +v -0.073224 4.573223 -1.625000 +v -0.250000 4.500000 -1.625000 +v -0.426777 4.573223 -1.625000 +v -0.500000 4.676777 -1.801777 +v -0.426777 4.801777 -1.926777 +v -0.250000 4.853553 -1.978554 +v -0.073224 4.801777 -1.926777 +v -0.000000 4.676777 -1.801777 +v -0.073224 4.551776 -1.676777 +v -0.426777 4.551776 -1.676777 +v -0.500000 4.500000 -1.875000 +v -0.426777 4.500000 -2.051777 +v -0.250000 4.500000 -2.125000 +v -0.073224 4.500000 -2.051777 +v -0.000000 4.500000 -1.875000 +v -0.073224 4.500000 -1.698223 +v -0.426777 4.500000 -1.698223 +v -0.250000 4.000000 -1.625000 +v -0.500000 4.000000 -1.875000 +v -0.426777 4.000000 -2.051777 +v -0.250000 4.000000 -2.125000 +v -0.073224 4.000000 -2.051777 +v -0.000000 4.000000 -1.875000 +v -0.073224 4.000000 -1.698223 +v -0.426777 4.000000 -1.698223 +v -0.000000 4.750000 -1.500000 +v 0.073223 4.926777 -1.500000 +v 0.250000 5.000000 -1.500000 +v 0.426777 4.926777 -1.500000 +v 0.500000 4.750000 -1.500000 +v 0.426777 4.573223 -1.500000 +v 0.250000 4.500000 -1.500000 +v 0.073223 4.573223 -1.500000 +v -0.000000 4.750000 -1.625000 +v 0.073223 4.926777 -1.625000 +v 0.250000 5.000000 -1.625000 +v 0.426777 4.926777 -1.625000 +v 0.500000 4.750000 -1.625000 +v 0.426777 4.573223 -1.625000 +v 0.250000 4.500000 -1.625000 +v 0.073223 4.573223 -1.625000 +v -0.000000 4.676777 -1.801777 +v 0.073223 4.801777 -1.926777 +v 0.250000 4.853553 -1.978554 +v 0.426777 4.801777 -1.926777 +v 0.500000 4.676777 -1.801777 +v 0.426777 4.551776 -1.676777 +v 0.073223 4.551776 -1.676777 +v -0.000000 4.500000 -1.875000 +v 0.073223 4.500000 -2.051777 +v 0.250000 4.500000 -2.125000 +v 0.426777 4.500000 -2.051777 +v 0.500000 4.500000 -1.875000 +v 0.426777 4.500000 -1.698223 +v 0.073223 4.500000 -1.698223 +v 0.250000 4.000000 -1.625000 +v -0.000000 4.000000 -1.875000 +v 0.073223 4.000000 -2.051777 +v 0.250000 4.000000 -2.125000 +v 0.426777 4.000000 -2.051777 +v 0.500000 4.000000 -1.875000 +v 0.426777 4.000000 -1.698223 +v 0.073223 4.000000 -1.698223 +v 0.073223 4.801777 -0.073223 +v 0.250000 4.853553 -0.021446 +v 0.426777 4.801777 -0.073223 +v 0.500000 4.676777 -0.198223 +v 0.426777 4.573223 -0.375000 +v 0.250000 4.500000 -0.375000 +v 0.073223 4.573223 -0.375000 +v -0.000000 4.750000 -0.375000 +v 0.073223 4.926777 -0.375000 +v 0.250000 5.000000 -0.375000 +v 0.426777 4.926777 -0.375000 +v 0.500000 4.750000 -0.375000 +v 0.426777 4.573223 -0.500000 +v 0.250000 4.500000 -0.500000 +v 0.073223 4.573223 -0.500000 +v -0.000000 4.750000 -0.500000 +v 0.073223 4.926777 -0.500000 +v 0.250000 5.000000 -0.500000 +v 0.426777 4.926777 -0.500000 +v 0.500000 4.750000 -0.500000 +v -0.000000 4.676777 -0.198223 +v 0.073223 4.551776 -0.323223 +v 0.426777 4.551776 -0.323223 +v 0.500000 4.500000 -0.125000 +v 0.426777 4.500000 0.051777 +v 0.250000 4.500000 0.125000 +v 0.073223 4.500000 0.051777 +v -0.000000 4.500000 -0.125000 +v 0.073223 4.500000 -0.301777 +v 0.426777 4.500000 -0.301777 +v 0.250000 4.000000 -0.375000 +v 0.500000 4.000000 -0.125000 +v 0.426777 4.000000 0.051777 +v 0.250000 4.000000 0.125000 +v 0.073223 4.000000 0.051777 +v -0.000000 4.000000 -0.125000 +v 0.073223 4.000000 -0.301777 +v 0.426777 4.000000 -0.301777 +v -0.000000 4.750000 -0.500000 +v -0.073223 4.926777 -0.500000 +v -0.250000 5.000000 -0.500000 +v -0.426777 4.926777 -0.500000 +v -0.500000 4.750000 -0.500000 +v -0.426777 4.573223 -0.500000 +v -0.250000 4.500000 -0.500000 +v -0.073223 4.573223 -0.500000 +v -0.000000 4.750000 -0.375000 +v -0.073223 4.926777 -0.375000 +v -0.250000 5.000000 -0.375000 +v -0.426777 4.926777 -0.375000 +v -0.500000 4.750000 -0.375000 +v -0.426777 4.573223 -0.375000 +v -0.250000 4.500000 -0.375000 +v -0.073223 4.573223 -0.375000 +v -0.000000 4.676777 -0.198223 +v -0.073223 4.801777 -0.073223 +v -0.250000 4.853553 -0.021446 +v -0.426777 4.801777 -0.073223 +v -0.500000 4.676777 -0.198223 +v -0.426777 4.551776 -0.323223 +v -0.073223 4.551776 -0.323223 +v -0.000000 4.500000 -0.125000 +v -0.073223 4.500000 0.051777 +v -0.250000 4.500000 0.125000 +v -0.426777 4.500000 0.051777 +v -0.500000 4.500000 -0.125000 +v -0.426777 4.500000 -0.301777 +v -0.073223 4.500000 -0.301777 +v -0.250000 4.000000 -0.375000 +v -0.000000 4.000000 -0.125000 +v -0.073223 4.000000 0.051777 +v -0.250000 4.000000 0.125000 +v -0.426777 4.000000 0.051777 +v -0.500000 4.000000 -0.125000 +v -0.426777 4.000000 -0.301777 +v -0.073223 4.000000 -0.301777 +v -1.500000 0.500000 1.250000 +v -1.250000 0.500000 1.250000 +v -1.500000 0.500000 0.750000 +v -1.250000 0.500000 0.750000 +v -1.500000 0.750000 0.750000 +v -1.500000 0.750000 1.250000 +v -1.250000 0.750000 1.250000 +v -1.250000 0.750000 0.750000 +v -1.250000 0.500000 1.187500 +v 0.187500 0.500000 1.187500 +v -1.250000 0.500000 0.812500 +v 0.187500 0.500000 0.812500 +v -1.250000 0.687500 0.812500 +v -1.250000 0.687500 1.187500 +v -0.187500 0.687500 1.187500 +v -0.187500 0.687500 0.812500 +v -0.187500 1.625000 1.187500 +v -0.187500 1.625000 0.812500 +v 0.187500 1.625000 0.812500 +v 0.187500 1.625000 1.187500 +v 0.125000 1.375000 -2.250000 +v -0.125000 1.375000 -2.250000 +v 0.125000 1.125000 -2.500000 +v -0.125000 1.125000 -2.500000 +v 0.125000 1.625000 -2.250000 +v -0.125000 1.625000 -2.250000 +v 0.125000 1.375000 -2.500000 +v -0.125000 1.375000 -2.500000 +v 0.125000 1.062500 -2.500000 +v -0.125000 1.062500 -2.500000 +v 0.187500 1.125000 -2.500000 +v 0.187500 1.375000 -2.500000 +v -0.187500 1.125000 -2.500000 +v -0.187500 1.375000 -2.500000 +v 0.125000 1.312500 -2.250000 +v -0.125000 1.312500 -2.250000 +v 0.187500 1.375000 -2.250000 +v 0.187500 1.625000 -2.250000 +v -0.187500 1.375000 -2.250000 +v -0.187500 1.625000 -2.250000 +vt 0.413793 0.000000 +vt 0.068966 0.260870 +vt 0.068966 0.000000 +vt 0.344828 0.282609 +vt 0.413793 0.347826 +vt 0.344828 0.326087 +vt 0.000000 0.347826 +vt 0.034483 0.608696 +vt 0.000000 0.608696 +vt 0.413793 0.608696 +vt 0.482759 0.347826 +vt 0.482759 0.608696 +vt 0.068966 0.782609 +vt 0.137931 0.826087 +vt 0.068966 0.826087 +vt 0.206897 0.652174 +vt 0.413793 0.695652 +vt 0.034483 0.347826 +vt 0.172414 0.608696 +vt 0.206897 0.347826 +vt 0.206897 0.608696 +vt -0.000000 0.782609 +vt -0.000000 0.826087 +vt 0.068966 0.913043 +vt 0.137931 0.913043 +vt 0.172414 0.347826 +vt 0.965517 0.000000 +vt 0.896552 0.260870 +vt 0.896552 0.000000 +vt 0.620690 0.260870 +vt 0.551724 0.000000 +vt 0.620690 0.000000 +vt 0.827586 0.000000 +vt 0.482759 0.260870 +vt 0.482759 0.000000 +vt 0.758621 0.260870 +vt 0.758621 0.000000 +vt 0.689655 0.260870 +vt 0.689655 0.000000 +vt 0.413793 0.260870 +vt 0.413793 0.000000 +vt 0.689655 0.478261 +vt 0.689655 0.413043 +vt 0.741379 0.413043 +vt 0.620690 0.326087 +vt 0.568965 0.326087 +vt 0.620690 0.478261 +vt 0.620690 0.413043 +vt 0.689655 0.326087 +vt 0.741379 0.326087 +vt 0.568965 0.413043 +vt 0.310345 0.695652 +vt 0.241379 0.739130 +vt 0.241379 0.695652 +vt 0.310345 0.739130 +vt 0.241379 0.826087 +vt 0.551724 0.695652 +vt 0.500000 0.717391 +vt 0.500000 0.695652 +vt 0.620690 0.478261 +vt 0.551724 0.478261 +vt 0.500000 0.478261 +vt 0.482759 0.695652 +vt 0.482759 0.478261 +vt 0.344828 0.826087 +vt 0.344828 0.739130 +vt 0.206897 0.739130 +vt 0.206897 0.826087 +vt 0.241379 0.869565 +vt 0.310345 0.826087 +vt 0.310345 0.869565 +vt 0.465517 0.652174 +vt 0.431034 0.630435 +vt 0.465517 0.630435 +vt 0.413793 0.630435 +vt 0.431034 0.652174 +vt 0.413793 0.652174 +vt 0.482759 0.652174 +vt 0.482759 0.630435 +vt 0.431034 0.673913 +vt 0.465517 0.673913 +vt 0.465517 0.608696 +vt 0.431034 0.608696 +vt 0.500000 0.788043 +vt 0.474138 0.695652 +vt 0.500000 0.695652 +vt 0.396552 0.777174 +vt 0.409483 0.869565 +vt 0.396552 0.902174 +vt 0.577586 0.777174 +vt 0.564655 0.869565 +vt 0.564655 0.777174 +vt 0.620690 0.652174 +vt 0.689655 0.739130 +vt 0.620690 0.739130 +vt 0.758621 0.521739 +vt 0.689655 0.652174 +vt 0.689655 0.521739 +vt 0.896552 0.521739 +vt 0.827586 0.652174 +vt 0.827586 0.521739 +vt 0.620690 0.521739 +vt 0.758621 0.652174 +vt 0.465517 0.652174 +vt 0.431034 0.630435 +vt 0.465517 0.630435 +vt 0.500000 0.902174 +vt 0.474138 0.869565 +vt 0.500000 0.869565 +vt 0.474138 0.788043 +vt 0.474138 1.000000 +vt 0.500000 1.000000 +vt 0.474138 0.902174 +vt 0.206897 0.826087 +vt 0.137931 0.782609 +vt 0.206897 0.782609 +vt 0.137931 0.695652 +vt 0.068966 0.695652 +vt 0.275862 0.326087 +vt 0.413793 0.260870 +vt 0.275862 0.282609 +vt 0.206897 0.304348 +vt 0.068966 0.304348 +vt 0.344828 0.326087 +vt 0.275862 0.282609 +vt 0.344828 0.282609 +vt 0.810345 0.260870 +vt 0.775862 0.478261 +vt 0.775862 0.260870 +vt 0.741379 0.478261 +vt 0.741379 0.260870 +vt 0.844828 0.260870 +vt 0.810345 0.478261 +vt 0.810345 0.260870 +vt 0.879310 0.260870 +vt 0.844828 0.478261 +vt 0.913793 0.478261 +vt 0.948276 0.478261 +vt 0.913793 0.521739 +vt 0.879310 0.478261 +vt 0.844828 0.521739 +vt 0.948276 0.260870 +vt 0.913793 0.260870 +vt 0.810345 0.478261 +vt 0.775862 0.521739 +vt 0.879310 0.478261 +vt 0.879310 0.260870 +vt 0.068966 0.695652 +vt 0.068966 0.652174 +vt 0.413793 0.630435 +vt 0.431034 0.652174 +vt 0.413793 0.652174 +vt 0.482759 0.652174 +vt 0.482759 0.630435 +vt 0.431034 0.673913 +vt 0.465517 0.673913 +vt 0.465517 0.608696 +vt 0.431034 0.608696 +vt 0.500000 0.788043 +vt 0.474138 0.695652 +vt 0.500000 0.695652 +vt 0.396552 0.777174 +vt 0.409483 0.869565 +vt 0.396552 0.902174 +vt 0.577586 0.777174 +vt 0.564655 0.869565 +vt 0.564655 0.777174 +vt 0.500000 0.902174 +vt 0.474138 0.869565 +vt 0.500000 0.869565 +vt 0.474138 0.788043 +vt 0.474138 1.000000 +vt 0.500000 1.000000 +vt 0.474138 0.902174 +vt 0.181034 0.875000 +vt 0.198276 0.853261 +vt 0.198276 0.875000 +vt 0.137931 0.826087 +vt 0.155172 0.847826 +vt 0.137931 0.847826 +vt 0.241379 0.826087 +vt 0.224138 0.847826 +vt 0.224138 0.826087 +vt 0.181034 0.853261 +vt 0.198276 0.847826 +vt 0.181034 0.875000 +vt 0.176724 0.853261 +vt 0.202586 0.875000 +vt 0.198276 0.875000 +vt 0.181034 0.847826 +vt 0.202586 0.853261 +vt 0.219828 0.847826 +vt 0.202586 0.826087 +vt 0.219828 0.826087 +vt 0.198276 0.826087 +vt 0.176724 0.847826 +vt 0.181034 0.826087 +vt 0.159483 0.847826 +vt 0.176724 0.826087 +vt 0.202586 0.847826 +vt 0.159483 0.826087 +vt 0.155172 0.826087 +vt 0.965517 0.260870 +vt 0.551724 0.260870 +vt 0.827586 0.260870 +vt 0.551724 0.782609 +vt 0.620690 0.695652 +vt 0.409483 0.777174 +vt 0.577586 0.902174 +vt 0.896552 0.652174 +vt 0.275862 0.326087 +vt 0.409483 0.777174 +vt 0.577586 0.902174 +vt 0.241379 0.847826 +vt 0.176724 0.875000 +vt 0.831897 0.771739 +vt 0.844828 0.760870 +vt 0.844828 0.771739 +vt 0.857759 0.771739 +vt 0.870690 0.760870 +vt 0.870690 0.771739 +vt 0.883621 0.760870 +vt 0.883621 0.771739 +vt 0.793103 0.771739 +vt 0.806035 0.760870 +vt 0.806035 0.771739 +vt 0.818965 0.771739 +vt 0.831897 0.760870 +vt 0.857759 0.760870 +vt 0.896552 0.760870 +vt 0.896552 0.771739 +vt 0.818965 0.760870 +vt 0.831897 0.755435 +vt 0.818965 0.728261 +vt 0.831897 0.728261 +vt 0.857759 0.728261 +vt 0.857759 0.755435 +vt 0.806035 0.733696 +vt 0.818965 0.744565 +vt 0.844828 0.728261 +vt 0.870690 0.728261 +vt 0.870690 0.744565 +vt 0.883621 0.728261 +vt 0.883621 0.733696 +vt 0.870690 0.711957 +vt 0.883621 0.722826 +vt 0.831897 0.701087 +vt 0.857759 0.701087 +vt 0.806035 0.722826 +vt 0.818965 0.711957 +vt 0.844828 0.695652 +vt 0.896552 0.728261 +vt 0.793103 0.728261 +vt 0.806035 0.728261 +vt 0.793103 0.695652 +vt 0.806035 0.652174 +vt 0.806035 0.695652 +vt 0.870690 0.695652 +vt 0.883621 0.652174 +vt 0.883621 0.695652 +vt 0.896552 0.652174 +vt 0.896552 0.695652 +vt 0.818965 0.695652 +vt 0.831897 0.652174 +vt 0.831897 0.695652 +vt 0.857759 0.652174 +vt 0.857759 0.695652 +vt 0.818965 0.652174 +vt 0.844828 0.652174 +vt 0.870690 0.652174 +vt 0.728448 0.771739 +vt 0.741379 0.760870 +vt 0.741379 0.771739 +vt 0.754310 0.771739 +vt 0.767241 0.760870 +vt 0.767241 0.771739 +vt 0.780172 0.760870 +vt 0.780172 0.771739 +vt 0.689655 0.771739 +vt 0.702586 0.760870 +vt 0.702586 0.771739 +vt 0.715517 0.771739 +vt 0.728448 0.760870 +vt 0.754310 0.760870 +vt 0.793103 0.760870 +vt 0.793103 0.771739 +vt 0.715517 0.760870 +vt 0.728448 0.755435 +vt 0.715517 0.728261 +vt 0.728448 0.728261 +vt 0.754310 0.728261 +vt 0.754310 0.755435 +vt 0.715517 0.744565 +vt 0.702586 0.728261 +vt 0.741379 0.728261 +vt 0.767241 0.728261 +vt 0.767241 0.744565 +vt 0.780172 0.728261 +vt 0.780172 0.733696 +vt 0.767241 0.711957 +vt 0.780172 0.722826 +vt 0.715517 0.711957 +vt 0.728448 0.701087 +vt 0.741379 0.695652 +vt 0.754310 0.701087 +vt 0.702586 0.722826 +vt 0.793103 0.728261 +vt 0.702586 0.733696 +vt 0.689655 0.728261 +vt 0.689655 0.695652 +vt 0.702586 0.652174 +vt 0.702586 0.695652 +vt 0.767241 0.695652 +vt 0.780172 0.652174 +vt 0.780172 0.695652 +vt 0.793103 0.652174 +vt 0.793103 0.695652 +vt 0.715517 0.695652 +vt 0.728448 0.652174 +vt 0.728448 0.695652 +vt 0.754310 0.652174 +vt 0.754310 0.695652 +vt 0.715517 0.652174 +vt 0.741379 0.652174 +vt 0.767241 0.652174 +vt 0.935345 0.902174 +vt 0.948276 0.891304 +vt 0.948276 0.902174 +vt 0.961207 0.902174 +vt 0.974138 0.891304 +vt 0.974138 0.902174 +vt 0.987069 0.891304 +vt 0.987069 0.902174 +vt 0.896552 0.902174 +vt 0.909483 0.891304 +vt 0.909483 0.902174 +vt 0.922414 0.902174 +vt 0.935345 0.891304 +vt 0.961207 0.891304 +vt 1.000000 0.891304 +vt 1.000000 0.902174 +vt 0.922414 0.891304 +vt 0.935345 0.885870 +vt 0.922414 0.858696 +vt 0.935345 0.858696 +vt 0.961207 0.858696 +vt 0.961207 0.885870 +vt 0.909483 0.864130 +vt 0.922414 0.875000 +vt 0.948276 0.858696 +vt 0.974138 0.858696 +vt 0.974138 0.875000 +vt 0.987069 0.864130 +vt 0.987069 0.858696 +vt 0.961207 0.831522 +vt 0.974138 0.842391 +vt 0.987069 0.853261 +vt 0.935345 0.831522 +vt 0.948276 0.826087 +vt 0.909483 0.858696 +vt 0.922414 0.842391 +vt 1.000000 0.858696 +vt 0.896552 0.858696 +vt 0.909483 0.853261 +vt 0.896552 0.826087 +vt 0.909483 0.673913 +vt 0.909483 0.826087 +vt 0.974138 0.826087 +vt 0.987069 0.673913 +vt 0.987069 0.826087 +vt 1.000000 0.673913 +vt 1.000000 0.826087 +vt 0.922414 0.826087 +vt 0.935345 0.673913 +vt 0.935345 0.826087 +vt 0.961207 0.673913 +vt 0.961207 0.826087 +vt 0.922414 0.673913 +vt 0.948276 0.673913 +vt 0.974138 0.673913 +vt 0.922414 0.657609 +vt 0.909483 0.641304 +vt 0.922414 0.641304 +vt 0.961207 0.646739 +vt 0.974138 0.641304 +vt 0.974138 0.657609 +vt 0.896552 0.673913 +vt 0.909483 0.668478 +vt 0.987069 0.641304 +vt 0.987069 0.668478 +vt 0.935345 0.646739 +vt 0.935345 0.641304 +vt 1.000000 0.641304 +vt 0.987069 0.614130 +vt 1.000000 0.608696 +vt 0.909483 0.614130 +vt 0.922414 0.625000 +vt 0.961207 0.635870 +vt 0.974138 0.625000 +vt 0.896552 0.641304 +vt 0.935345 0.635870 +vt 0.948276 0.641304 +vt 0.961207 0.641304 +vt 0.948276 0.440217 +vt 0.974138 0.456522 +vt 0.948276 0.456522 +vt 0.948276 0.472826 +vt 0.974138 0.489130 +vt 0.948276 0.489130 +vt 0.974138 0.505435 +vt 0.948276 0.505435 +vt 0.948276 0.391304 +vt 0.974138 0.407609 +vt 0.948276 0.407609 +vt 0.948276 0.423913 +vt 0.974138 0.440217 +vt 0.974138 0.472826 +vt 0.974138 0.521739 +vt 0.948276 0.521739 +vt 0.974138 0.423913 +vt 0.948276 0.309783 +vt 0.974138 0.326087 +vt 0.948276 0.326087 +vt 0.948276 0.342391 +vt 0.974138 0.358696 +vt 0.948276 0.358696 +vt 0.974138 0.375000 +vt 0.948276 0.375000 +vt 0.948276 0.260870 +vt 0.974138 0.277174 +vt 0.948276 0.277174 +vt 0.948276 0.293478 +vt 0.974138 0.309783 +vt 0.974138 0.342391 +vt 0.974138 0.391304 +vt 0.948276 0.391304 +vt 0.974138 0.293478 +vt 0.857759 0.755435 +vt 0.870690 0.728261 +vt 0.870690 0.744565 +vt 0.831897 0.755435 +vt 0.844828 0.728261 +vt 0.844828 0.760870 +vt 0.806035 0.733696 +vt 0.818965 0.728261 +vt 0.818965 0.744565 +vt 0.857759 0.728261 +vt 0.831897 0.728261 +vt 0.806035 0.771739 +vt 0.818965 0.760870 +vt 0.818965 0.771739 +vt 0.883621 0.771739 +vt 0.896552 0.760870 +vt 0.896552 0.771739 +vt 0.844828 0.771739 +vt 0.857759 0.760870 +vt 0.857759 0.771739 +vt 0.831897 0.760870 +vt 0.831897 0.771739 +vt 0.793103 0.771739 +vt 0.806035 0.760870 +vt 0.987069 0.608696 +vt 1.000000 0.597826 +vt 0.909483 0.608696 +vt 0.922414 0.597826 +vt 0.922414 0.608696 +vt 0.961207 0.608696 +vt 0.974138 0.597826 +vt 0.974138 0.608696 +vt 0.935345 0.608696 +vt 0.948276 0.597826 +vt 0.948276 0.608696 +vt 0.896552 0.608696 +vt 0.909483 0.597826 +vt 0.961207 0.597826 +vt 0.987069 0.597826 +vt 0.935345 0.597826 +vt 0.961207 0.592391 +vt 0.948276 0.565217 +vt 0.961207 0.565217 +vt 0.987069 0.592391 +vt 1.000000 0.565217 +vt 1.000000 0.581522 +vt 0.974138 0.565217 +vt 0.935345 0.570652 +vt 0.948276 0.581522 +vt 0.909483 0.570652 +vt 0.896552 0.565217 +vt 0.909483 0.565217 +vt 0.987069 0.565217 +vt 0.974138 0.532609 +vt 0.987069 0.538043 +vt 0.961207 0.538043 +vt 1.000000 0.548913 +vt 0.935345 0.565217 +vt 0.948276 0.548913 +vt 0.909483 0.559783 +vt 0.922414 0.565217 +vt 0.935345 0.559783 +vt 0.948276 0.532609 +vt 0.961207 0.521739 +vt 0.961207 0.532609 +vt 0.987069 0.532609 +vt 1.000000 0.521739 +vt 1.000000 0.532609 +vt 0.974138 0.521739 +vt 0.922414 0.532609 +vt 0.935345 0.521739 +vt 0.935345 0.532609 +vt 0.948276 0.521739 +vt 0.909483 0.532609 +vt 0.922414 0.521739 +vt 0.896552 0.532609 +vt 0.909483 0.521739 +vt 0.987069 0.521739 +vt 0.870690 0.771739 +vt 0.883621 0.760870 +vt 0.870690 0.760870 +vt 0.883621 0.728261 +vt 0.883621 0.733696 +vt 0.870690 0.711957 +vt 0.883621 0.722826 +vt 0.831897 0.701087 +vt 0.857759 0.701087 +vt 0.806035 0.722826 +vt 0.818965 0.711957 +vt 0.844828 0.695652 +vt 0.896552 0.728261 +vt 0.793103 0.728261 +vt 0.806035 0.728261 +vt 0.793103 0.695652 +vt 0.806035 0.652174 +vt 0.806035 0.695652 +vt 0.870690 0.695652 +vt 0.883621 0.652174 +vt 0.883621 0.695652 +vt 0.896552 0.652174 +vt 0.896552 0.695652 +vt 0.818965 0.695652 +vt 0.831897 0.652174 +vt 0.831897 0.695652 +vt 0.857759 0.652174 +vt 0.857759 0.695652 +vt 0.818965 0.652174 +vt 0.844828 0.652174 +vt 0.870690 0.652174 +vt 0.728448 0.771739 +vt 0.741379 0.760870 +vt 0.741379 0.771739 +vt 0.754310 0.771739 +vt 0.767241 0.760870 +vt 0.767241 0.771739 +vt 0.780172 0.760870 +vt 0.780172 0.771739 +vt 0.689655 0.771739 +vt 0.702586 0.760870 +vt 0.702586 0.771739 +vt 0.715517 0.771739 +vt 0.728448 0.760870 +vt 0.754310 0.760870 +vt 0.793103 0.760870 +vt 0.793103 0.771739 +vt 0.715517 0.760870 +vt 0.715517 0.744565 +vt 0.728448 0.728261 +vt 0.728448 0.755435 +vt 0.754310 0.728261 +vt 0.754310 0.755435 +vt 0.702586 0.728261 +vt 0.715517 0.728261 +vt 0.741379 0.728261 +vt 0.767241 0.728261 +vt 0.767241 0.744565 +vt 0.780172 0.728261 +vt 0.780172 0.733696 +vt 0.754310 0.701087 +vt 0.767241 0.711957 +vt 0.780172 0.722826 +vt 0.728448 0.701087 +vt 0.702586 0.722826 +vt 0.715517 0.711957 +vt 0.741379 0.695652 +vt 0.793103 0.728261 +vt 0.702586 0.733696 +vt 0.689655 0.728261 +vt 0.689655 0.695652 +vt 0.702586 0.652174 +vt 0.702586 0.695652 +vt 0.767241 0.695652 +vt 0.780172 0.652174 +vt 0.780172 0.695652 +vt 0.793103 0.652174 +vt 0.793103 0.695652 +vt 0.715517 0.695652 +vt 0.728448 0.652174 +vt 0.728448 0.695652 +vt 0.754310 0.652174 +vt 0.754310 0.695652 +vt 0.715517 0.652174 +vt 0.741379 0.652174 +vt 0.767241 0.652174 +vt 0.831897 0.771739 +vt 0.844828 0.760870 +vt 0.844828 0.771739 +vt 0.857759 0.771739 +vt 0.870690 0.760870 +vt 0.870690 0.771739 +vt 0.883621 0.760870 +vt 0.883621 0.771739 +vt 0.793103 0.771739 +vt 0.806035 0.760870 +vt 0.806035 0.771739 +vt 0.818965 0.771739 +vt 0.831897 0.760870 +vt 0.857759 0.760870 +vt 0.896552 0.760870 +vt 0.896552 0.771739 +vt 0.818965 0.760870 +vt 0.831897 0.755435 +vt 0.818965 0.728261 +vt 0.831897 0.728261 +vt 0.857759 0.728261 +vt 0.857759 0.755435 +vt 0.806035 0.733696 +vt 0.818965 0.744565 +vt 0.844828 0.728261 +vt 0.870690 0.728261 +vt 0.870690 0.744565 +vt 0.883621 0.728261 +vt 0.883621 0.733696 +vt 0.870690 0.711957 +vt 0.883621 0.722826 +vt 0.831897 0.701087 +vt 0.857759 0.701087 +vt 0.806035 0.722826 +vt 0.818965 0.711957 +vt 0.844828 0.695652 +vt 0.896552 0.728261 +vt 0.793103 0.728261 +vt 0.806035 0.728261 +vt 0.793103 0.695652 +vt 0.806035 0.652174 +vt 0.806035 0.695652 +vt 0.870690 0.695652 +vt 0.883621 0.652174 +vt 0.883621 0.695652 +vt 0.896552 0.652174 +vt 0.896552 0.695652 +vt 0.818965 0.695652 +vt 0.831897 0.652174 +vt 0.831897 0.695652 +vt 0.857759 0.652174 +vt 0.857759 0.695652 +vt 0.818965 0.652174 +vt 0.844828 0.652174 +vt 0.870690 0.652174 +vt 0.728448 0.771739 +vt 0.741379 0.760870 +vt 0.741379 0.771739 +vt 0.754310 0.771739 +vt 0.767241 0.760870 +vt 0.767241 0.771739 +vt 0.780172 0.760870 +vt 0.780172 0.771739 +vt 0.689655 0.771739 +vt 0.702586 0.760870 +vt 0.702586 0.771739 +vt 0.715517 0.771739 +vt 0.728448 0.760870 +vt 0.754310 0.760870 +vt 0.793103 0.760870 +vt 0.793103 0.771739 +vt 0.715517 0.760870 +vt 0.728448 0.755435 +vt 0.715517 0.728261 +vt 0.728448 0.728261 +vt 0.754310 0.728261 +vt 0.754310 0.755435 +vt 0.715517 0.744565 +vt 0.702586 0.728261 +vt 0.741379 0.728261 +vt 0.767241 0.744565 +vt 0.767241 0.728261 +vt 0.780172 0.728261 +vt 0.780172 0.733696 +vt 0.754310 0.701087 +vt 0.767241 0.711957 +vt 0.780172 0.722826 +vt 0.728448 0.701087 +vt 0.702586 0.722826 +vt 0.715517 0.711957 +vt 0.741379 0.695652 +vt 0.793103 0.728261 +vt 0.702586 0.733696 +vt 0.689655 0.728261 +vt 0.689655 0.695652 +vt 0.702586 0.652174 +vt 0.702586 0.695652 +vt 0.767241 0.695652 +vt 0.780172 0.652174 +vt 0.780172 0.695652 +vt 0.793103 0.652174 +vt 0.793103 0.695652 +vt 0.715517 0.695652 +vt 0.728448 0.652174 +vt 0.728448 0.695652 +vt 0.754310 0.652174 +vt 0.754310 0.695652 +vt 0.715517 0.652174 +vt 0.741379 0.652174 +vt 0.767241 0.652174 +vt 0.857759 0.755435 +vt 0.870690 0.728261 +vt 0.870690 0.744565 +vt 0.844828 0.760870 +vt 0.831897 0.728261 +vt 0.844828 0.728261 +vt 0.806035 0.733696 +vt 0.818965 0.728261 +vt 0.818965 0.744565 +vt 0.857759 0.728261 +vt 0.831897 0.755435 +vt 0.806035 0.771739 +vt 0.818965 0.760870 +vt 0.818965 0.771739 +vt 0.883621 0.771739 +vt 0.896552 0.760870 +vt 0.896552 0.771739 +vt 0.844828 0.771739 +vt 0.857759 0.760870 +vt 0.857759 0.771739 +vt 0.831897 0.760870 +vt 0.831897 0.771739 +vt 0.793103 0.771739 +vt 0.806035 0.760870 +vt 0.870690 0.771739 +vt 0.883621 0.760870 +vt 0.870690 0.760870 +vt 0.883621 0.728261 +vt 0.883621 0.733696 +vt 0.857759 0.701087 +vt 0.870690 0.711957 +vt 0.883621 0.722826 +vt 0.831897 0.701087 +vt 0.844828 0.695652 +vt 0.806035 0.728261 +vt 0.818965 0.711957 +vt 0.896552 0.728261 +vt 0.793103 0.728261 +vt 0.806035 0.722826 +vt 0.793103 0.695652 +vt 0.806035 0.652174 +vt 0.806035 0.695652 +vt 0.870690 0.695652 +vt 0.883621 0.652174 +vt 0.883621 0.695652 +vt 0.896552 0.652174 +vt 0.896552 0.695652 +vt 0.818965 0.695652 +vt 0.831897 0.652174 +vt 0.831897 0.695652 +vt 0.857759 0.652174 +vt 0.857759 0.695652 +vt 0.818965 0.652174 +vt 0.844828 0.652174 +vt 0.870690 0.652174 +vt 0.728448 0.771739 +vt 0.741379 0.760870 +vt 0.741379 0.771739 +vt 0.754310 0.771739 +vt 0.767241 0.760870 +vt 0.767241 0.771739 +vt 0.780172 0.760870 +vt 0.780172 0.771739 +vt 0.689655 0.771739 +vt 0.702586 0.760870 +vt 0.702586 0.771739 +vt 0.715517 0.771739 +vt 0.728448 0.760870 +vt 0.754310 0.760870 +vt 0.793103 0.760870 +vt 0.793103 0.771739 +vt 0.715517 0.760870 +vt 0.715517 0.744565 +vt 0.728448 0.728261 +vt 0.728448 0.755435 +vt 0.754310 0.728261 +vt 0.754310 0.755435 +vt 0.702586 0.728261 +vt 0.715517 0.728261 +vt 0.741379 0.728261 +vt 0.767241 0.728261 +vt 0.767241 0.744565 +vt 0.780172 0.728261 +vt 0.780172 0.733696 +vt 0.767241 0.711957 +vt 0.780172 0.722826 +vt 0.728448 0.701087 +vt 0.741379 0.695652 +vt 0.754310 0.701087 +vt 0.715517 0.711957 +vt 0.793103 0.728261 +vt 0.702586 0.733696 +vt 0.689655 0.728261 +vt 0.702586 0.722826 +vt 0.689655 0.695652 +vt 0.702586 0.652174 +vt 0.702586 0.695652 +vt 0.767241 0.695652 +vt 0.780172 0.652174 +vt 0.780172 0.695652 +vt 0.793103 0.652174 +vt 0.793103 0.695652 +vt 0.715517 0.695652 +vt 0.728448 0.652174 +vt 0.728448 0.695652 +vt 0.754310 0.652174 +vt 0.754310 0.695652 +vt 0.715517 0.652174 +vt 0.741379 0.652174 +vt 0.767241 0.652174 +vt 0.793103 0.760870 +vt 0.793103 0.652174 +vt 0.689655 0.760870 +vt 0.689655 0.652174 +vt 0.896552 0.891304 +vt 0.974138 0.391304 +vt 0.974138 0.260870 +vt 0.793103 0.760870 +vt 0.896552 0.597826 +vt 0.896552 0.581522 +vt 0.896552 0.548913 +vt 0.896552 0.521739 +vt 0.793103 0.652174 +vt 0.689655 0.760870 +vt 0.689655 0.652174 +vt 0.793103 0.760870 +vt 0.793103 0.652174 +vt 0.689655 0.760870 +vt 0.689655 0.652174 +vt 0.793103 0.760870 +vt 0.793103 0.652174 +vt 0.689655 0.760870 +vt 0.689655 0.652174 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.4851 0.7276 -0.4851 +vn 0.4851 0.7276 0.4851 +vn 0.5547 0.8321 0.0000 +vn -0.5547 0.8321 0.0000 +vn 0.0000 0.8321 -0.5547 +vn -0.4851 0.7276 0.4851 +vn 0.4851 0.7276 -0.4851 +vn 0.0000 0.8321 0.5547 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.5774 -0.5774 0.5774 +vn -0.5774 -0.5774 0.5774 +vn 0.0000 0.7071 0.7071 +vn 0.1866 0.9824 0.0000 +vn 0.0196 0.0473 -0.9987 +vn -0.1363 -0.6737 -0.7263 +vn 0.0000 -0.7071 -0.7071 +vn -0.1363 -0.6737 0.7263 +vn 0.1447 0.7194 0.6794 +vn 0.1447 0.7194 -0.6794 +vn -0.7071 -0.7071 0.0000 +vn 0.0196 0.0473 0.9987 +vn 0.0670 0.0670 0.9955 +vn 0.5293 0.5293 0.6630 +vn 0.5293 0.5293 -0.6630 +vn 0.7071 0.7071 0.0000 +vn 0.0670 0.0670 -0.9955 +vn -0.4617 -0.4617 -0.7573 +vn 0.0473 0.0196 -0.9987 +vn -0.6737 -0.1363 -0.7263 +vn 0.7194 0.1447 0.6794 +vn 0.7194 0.1447 -0.6794 +vn -0.6737 -0.1363 0.7263 +vn 0.0473 0.0196 0.9987 +vn 0.9824 0.1866 0.0000 +vn -0.4617 -0.4617 0.7573 +vn -0.7071 0.7071 0.0000 +vn 0.0000 0.9824 0.1866 +vn 0.9987 0.0473 0.0196 +vn 0.7263 -0.6737 -0.1363 +vn 0.7071 -0.7071 0.0000 +vn -0.7263 -0.6737 -0.1363 +vn -0.6794 0.7194 0.1447 +vn 0.6794 0.7194 0.1447 +vn -0.9987 0.0473 0.0196 +vn -0.9955 0.0670 0.0670 +vn -0.6630 0.5293 0.5293 +vn 0.6630 0.5293 0.5293 +vn 0.9955 0.0670 0.0670 +vn 0.7573 -0.4617 -0.4617 +vn 0.6794 0.1447 0.7194 +vn 0.9987 0.0196 0.0473 +vn 0.7263 -0.1363 -0.6737 +vn -0.6794 0.1447 0.7194 +vn 0.0000 0.1866 0.9824 +vn -0.7573 -0.4617 -0.4617 +vn -0.9987 0.0196 0.0473 +vn -0.7263 -0.1363 -0.6737 +vn -0.6794 -0.1447 -0.7194 +vn 0.6794 -0.1447 -0.7194 +vn 0.0000 -0.1866 -0.9824 +vn -0.7263 0.1363 0.6737 +vn 0.7263 0.1363 0.6737 +vn -0.9987 -0.0196 -0.0473 +vn 0.9987 -0.0196 -0.0473 +vn -0.6630 -0.5293 -0.5293 +vn -0.9955 -0.0670 -0.0670 +vn 0.9955 -0.0670 -0.0670 +vn 0.6630 -0.5293 -0.5293 +vn -0.7573 0.4617 0.4617 +vn 0.6794 -0.7194 -0.1447 +vn 0.0000 -0.9824 -0.1866 +vn -0.6794 -0.7194 -0.1447 +vn -0.9987 -0.0473 -0.0196 +vn 0.7263 0.6737 0.1363 +vn 0.9987 -0.0473 -0.0196 +vn -0.7263 0.6737 0.1363 +vn 0.7573 0.4617 0.4617 +vn -0.1447 0.7194 0.6794 +vn -0.0670 0.0670 0.9955 +vn -0.0196 0.0473 0.9987 +vn -0.1447 0.7194 -0.6794 +vn -0.1866 0.9824 0.0000 +vn 0.1363 -0.6737 -0.7263 +vn -0.0670 0.0670 -0.9955 +vn -0.0196 0.0473 -0.9987 +vn -0.5293 0.5293 0.6630 +vn -0.5293 0.5293 -0.6630 +vn 0.0473 -0.9987 0.0196 +vn 0.9824 0.0000 0.1866 +vn 0.0473 0.9987 0.0196 +vn -0.6737 -0.7263 -0.1363 +vn 0.7194 0.6794 0.1447 +vn 0.7194 -0.6794 0.1447 +vn -0.6737 0.7263 -0.1363 +vn 0.0670 0.9955 0.0670 +vn 0.5293 0.6630 0.5293 +vn 0.0670 -0.9955 0.0670 +vn -0.4617 -0.7573 -0.4617 +vn 0.5293 -0.6630 0.5293 +vn 0.1866 0.0000 0.9824 +vn 0.1447 -0.6794 0.7194 +vn 0.1447 0.6794 0.7194 +vn 0.0196 -0.9987 0.0473 +vn -0.4617 0.7573 -0.4617 +vn 0.0196 0.9987 0.0473 +vn -0.1363 -0.7263 -0.6737 +vn -0.1363 0.7263 -0.6737 +vn 0.1363 -0.6737 0.7263 +vn 0.4617 -0.4617 0.7573 +vn -0.0473 0.0196 0.9987 +vn 0.6737 -0.1363 0.7263 +vn -0.7194 0.1447 -0.6794 +vn -0.7194 0.1447 0.6794 +vn 0.6737 -0.1363 -0.7263 +vn -0.0473 0.0196 -0.9987 +vn -0.9824 0.1866 0.0000 +vn 0.4617 -0.4617 -0.7573 +vn 0.0000 0.9824 -0.1866 +vn -0.9987 0.0473 -0.0196 +vn -0.7263 -0.6737 0.1363 +vn 0.7263 -0.6737 0.1363 +vn 0.6794 0.7194 -0.1447 +vn -0.6794 0.7194 -0.1447 +vn 0.9987 0.0473 -0.0196 +vn 0.9955 0.0670 -0.0670 +vn 0.6630 0.5293 -0.5293 +vn -0.6630 0.5293 -0.5293 +vn -0.9955 0.0670 -0.0670 +vn -0.7573 -0.4617 0.4617 +vn -0.9987 0.0196 -0.0473 +vn -0.7263 -0.1363 0.6737 +vn 0.6794 0.1447 -0.7194 +vn -0.6794 0.1447 -0.7194 +vn 0.7263 -0.1363 0.6737 +vn 0.9987 0.0196 -0.0473 +vn 0.0000 0.1866 -0.9824 +vn 0.7573 -0.4617 0.4617 +s off +f 19/29/7 18/30/7 17/31/7 +f 302/32/8 28/33/8 301/34/8 +f 18/35/9 22/36/9 17/37/9 +f 29/38/10 20/39/10 19/40/10 +f 303/41/8 306/42/8 305/43/8 +f 25/44/11 29/38/11 19/45/11 +f 23/46/12 25/47/12 22/36/12 +f 27/48/12 29/38/12 30/49/12 +f 24/50/10 305/43/10 21/51/10 +f 21/52/7 306/42/7 301/53/7 +f 26/54/9 30/49/9 25/47/9 +f 31/55/11 41/56/11 33/57/11 +f 40/58/13 35/59/13 32/60/13 +f 41/56/14 38/61/14 33/57/14 +f 35/59/9 45/62/9 37/63/9 +f 38/61/10 44/64/10 36/65/10 +f 36/65/15 42/66/15 34/67/15 +f 37/63/16 39/68/16 31/69/16 +f 34/67/8 40/58/8 32/60/8 +f 41/70/17 47/71/17 46/72/17 +f 40/58/18 50/73/18 43/74/18 +f 42/66/19 50/73/19 40/58/19 +f 47/71/20 39/75/20 48/76/20 +f 46/72/21 49/77/21 44/78/21 +f 45/79/22 48/76/22 39/75/22 +f 49/80/8 62/81/8 50/82/8 +f 44/78/23 49/77/23 42/66/23 +f 50/73/24 45/79/24 43/74/24 +f 61/83/12 60/84/12 62/81/12 +f 56/85/12 57/86/12 55/87/12 +f 54/88/8 56/85/8 52/89/8 +f 51/90/11 57/91/11 53/92/11 +f 47/93/10 61/83/10 49/94/10 +f 52/89/9 55/87/9 51/90/9 +f 50/95/9 60/84/9 48/96/9 +f 48/97/11 59/98/11 47/99/11 +f 237/100/12 235/101/12 236/102/12 +f 233/103/10 238/104/10 234/105/10 +f 232/106/9 236/102/9 231/107/9 +f 234/108/8 237/100/8 232/109/8 +f 231/110/11 235/101/11 233/111/11 +f 245/112/12 243/113/12 244/114/12 +f 241/115/10 246/116/10 242/117/10 +f 239/118/9 245/119/9 244/120/9 +f 261/121/12 259/122/12 260/123/12 +f 257/124/10 262/125/10 258/126/10 +f 256/127/9 260/128/9 255/129/9 +f 258/126/8 261/121/8 256/130/8 +f 255/129/11 259/131/11 257/124/11 +f 543/132/12 541/133/12 542/134/12 +f 296/135/12 294/136/12 293/137/12 +f 245/119/9 296/135/9 293/137/9 +f 245/112/11 294/136/11 246/138/11 +f 242/139/8 296/135/8 240/140/8 +f 246/116/10 295/141/10 242/117/10 +f 301/142/9 304/143/9 302/144/9 +f 302/145/12 303/41/12 24/146/12 +f 28/33/8 21/147/8 301/34/8 +f 20/148/8 24/149/8 18/30/8 +f 21/147/8 26/150/8 24/149/8 +f 18/30/8 26/150/8 23/151/8 +f 309/152/8 308/153/8 310/154/8 +f 312/155/10 316/156/10 313/157/10 +f 313/157/8 315/158/8 311/159/8 +f 318/160/10 322/161/10 319/162/10 +f 317/163/11 320/164/11 318/160/11 +f 327/165/12 328/166/12 326/167/12 +f 320/164/12 321/168/12 322/169/12 +f 324/170/9 327/165/9 323/171/9 +f 316/156/12 314/172/12 315/173/12 +f 323/171/11 326/174/11 325/175/11 +f 25/44/11 17/176/11 22/177/11 +f 539/178/10 544/179/10 540/180/10 +f 538/181/9 542/134/9 537/182/9 +f 540/183/8 543/132/8 538/184/8 +f 537/185/11 541/133/11 539/186/11 +f 551/187/12 549/188/12 550/189/12 +f 547/190/10 552/191/10 548/192/10 +f 545/193/9 551/194/9 550/195/9 +f 556/196/12 554/197/12 553/198/12 +f 551/194/9 556/196/9 553/198/9 +f 551/187/11 554/197/11 552/199/11 +f 548/200/8 556/196/8 546/201/8 +f 552/191/10 555/202/10 548/192/10 +f 557/203/25 560/204/25 558/205/25 +f 557/206/11 563/207/11 559/208/11 +f 558/209/8 564/210/8 562/211/8 +f 559/212/10 566/213/10 560/204/10 +f 563/214/10 567/215/10 559/212/10 +f 560/204/10 570/216/10 564/217/10 +f 559/212/10 567/215/10 565/218/10 +f 560/204/10 566/213/10 569/219/10 +f 570/220/11 575/221/11 576/222/11 +f 565/218/26 572/223/26 566/213/26 +f 567/224/27 571/225/27 565/218/27 +f 568/226/8 573/227/8 567/224/8 +f 569/228/28 572/223/28 575/221/28 +f 574/229/25 563/207/25 561/230/25 +f 570/220/25 562/211/25 564/210/25 +f 19/29/7 20/148/7 18/30/7 +f 302/32/8 20/148/8 28/33/8 +f 18/35/9 23/46/9 22/36/9 +f 29/38/10 28/33/10 20/39/10 +f 303/41/8 304/143/8 306/42/8 +f 25/44/11 30/49/11 29/38/11 +f 23/46/12 26/54/12 25/47/12 +f 27/48/12 28/33/12 29/38/12 +f 24/50/10 303/41/10 305/43/10 +f 21/52/7 305/43/7 306/42/7 +f 26/54/9 27/48/9 30/49/9 +f 31/55/11 39/231/11 41/56/11 +f 40/58/13 43/232/13 35/59/13 +f 41/56/14 46/233/14 38/61/14 +f 35/59/9 43/232/9 45/62/9 +f 38/61/10 46/233/10 44/64/10 +f 36/65/15 44/64/15 42/66/15 +f 37/63/16 45/62/16 39/68/16 +f 34/67/8 42/66/8 40/58/8 +f 42/66/19 49/77/19 50/73/19 +f 47/71/20 41/70/20 39/75/20 +f 46/72/21 47/71/21 49/77/21 +f 49/80/8 61/83/8 62/81/8 +f 50/73/24 48/76/24 45/79/24 +f 61/83/12 59/98/12 60/84/12 +f 56/85/12 58/234/12 57/86/12 +f 54/88/8 58/235/8 56/85/8 +f 51/90/11 55/87/11 57/91/11 +f 47/93/10 59/98/10 61/83/10 +f 52/89/9 56/85/9 55/87/9 +f 50/95/9 62/81/9 60/84/9 +f 48/97/11 60/84/11 59/98/11 +f 237/100/12 238/104/12 235/101/12 +f 233/103/10 235/101/10 238/104/10 +f 232/106/9 237/100/9 236/102/9 +f 234/108/8 238/104/8 237/100/8 +f 231/110/11 236/102/11 235/101/11 +f 245/112/12 246/138/12 243/113/12 +f 241/115/10 243/236/10 246/116/10 +f 239/118/9 240/237/9 245/119/9 +f 261/121/12 262/125/12 259/122/12 +f 257/124/10 259/131/10 262/125/10 +f 256/127/9 261/238/9 260/128/9 +f 258/126/8 262/125/8 261/121/8 +f 255/129/11 260/128/11 259/131/11 +f 543/132/12 544/179/12 541/133/12 +f 296/135/12 295/141/12 294/136/12 +f 245/119/9 240/237/9 296/135/9 +f 245/112/11 293/137/11 294/136/11 +f 242/139/8 295/141/8 296/135/8 +f 246/116/10 294/136/10 295/141/10 +f 301/142/9 306/42/9 304/143/9 +f 302/145/12 304/143/12 303/41/12 +f 28/33/8 27/48/8 21/147/8 +f 20/148/8 302/32/8 24/149/8 +f 21/147/8 27/48/8 26/150/8 +f 18/30/8 24/149/8 26/150/8 +f 309/152/8 307/239/8 308/153/8 +f 312/155/10 314/172/10 316/156/10 +f 313/157/8 316/156/8 315/158/8 +f 318/160/10 320/164/10 322/161/10 +f 317/163/11 321/168/11 320/164/11 +f 324/170/9 328/166/9 327/165/9 +f 323/171/11 327/165/11 326/174/11 +f 25/44/11 19/45/11 17/176/11 +f 539/178/10 541/133/10 544/179/10 +f 538/181/9 543/132/9 542/134/9 +f 540/183/8 544/179/8 543/132/8 +f 537/185/11 542/134/11 541/133/11 +f 551/187/12 552/199/12 549/188/12 +f 547/190/10 549/240/10 552/191/10 +f 545/193/9 546/241/9 551/194/9 +f 556/196/12 555/202/12 554/197/12 +f 551/194/9 546/241/9 556/196/9 +f 551/187/11 553/198/11 554/197/11 +f 548/200/8 555/202/8 556/196/8 +f 552/191/10 554/197/10 555/202/10 +f 557/203/25 559/212/25 560/204/25 +f 557/206/11 561/230/11 563/207/11 +f 558/209/8 560/242/8 564/210/8 +f 559/212/10 565/218/10 566/213/10 +f 563/214/10 568/243/10 567/215/10 +f 560/204/10 569/219/10 570/216/10 +f 570/220/11 569/228/11 575/221/11 +f 565/218/26 571/225/26 572/223/26 +f 567/224/27 573/227/27 571/225/27 +f 568/226/8 574/229/8 573/227/8 +f 569/228/28 566/213/28 572/223/28 +f 574/229/25 568/226/25 563/207/25 +f 570/220/25 576/222/25 562/211/25 +s 1 +f 66/244/29 73/245/30 65/246/12 +f 64/247/25 71/248/31 63/249/10 +f 63/249/10 78/250/32 70/251/33 +f 69/252/7 76/253/34 68/254/26 +f 67/255/9 74/256/35 66/244/29 +f 65/246/12 72/257/36 64/247/25 +f 70/251/33 77/258/37 69/259/7 +f 68/254/26 75/260/38 67/255/9 +f 74/261/35 83/262/39 82/263/40 +f 73/245/30 80/264/41 72/265/36 +f 76/266/34 83/262/39 75/267/38 +f 74/261/35 81/268/42 73/245/30 +f 72/265/36 79/269/43 71/270/31 +f 71/270/31 85/271/44 78/272/32 +f 80/264/41 86/273/45 79/269/43 +f 79/269/43 92/274/46 85/271/44 +f 83/262/39 89/275/47 82/263/40 +f 81/268/42 87/276/48 80/264/41 +f 83/262/39 91/277/49 90/278/50 +f 81/268/42 89/275/47 88/279/51 +f 78/272/32 85/271/44 77/280/37 +f 85/271/44 92/274/46 77/280/37 +f 76/266/34 77/281/37 84/282/52 +f 84/282/52 77/281/37 91/277/49 +f 77/283/37 99/284/16 91/285/49 +f 86/286/45 100/287/14 92/288/46 +f 92/288/46 93/289/11 77/290/37 +f 90/291/50 97/292/13 89/293/47 +f 88/279/51 95/294/15 87/295/48 +f 91/285/49 98/296/9 90/291/50 +f 89/293/47 96/297/8 88/279/51 +f 87/295/48 94/298/10 86/286/45 +f 104/299/29 111/300/30 103/301/12 +f 102/302/25 109/303/31 101/304/10 +f 101/304/10 116/305/32 108/306/33 +f 107/307/7 114/308/34 106/309/26 +f 105/310/9 112/311/35 104/299/29 +f 103/301/12 110/312/36 102/302/25 +f 108/306/33 115/313/37 107/314/7 +f 106/309/26 113/315/38 105/310/9 +f 112/316/35 121/317/39 120/318/40 +f 111/300/30 118/319/41 110/320/36 +f 113/321/38 122/322/52 121/317/39 +f 111/300/30 120/318/40 119/323/42 +f 110/320/36 117/324/43 109/325/31 +f 109/325/31 123/326/44 116/327/32 +f 118/319/41 124/328/45 117/324/43 +f 117/324/43 130/329/46 123/326/44 +f 120/318/40 128/330/50 127/331/47 +f 118/319/41 126/332/51 125/333/48 +f 121/317/39 129/334/49 128/330/50 +f 120/318/40 126/332/51 119/323/42 +f 116/327/32 123/326/44 115/335/37 +f 123/326/44 130/329/46 115/335/37 +f 114/336/34 115/337/37 122/322/52 +f 122/322/52 115/337/37 129/334/49 +f 115/338/37 137/339/16 129/340/49 +f 124/341/45 138/342/14 130/343/46 +f 130/343/46 131/344/11 115/345/37 +f 128/346/50 135/347/13 127/348/47 +f 126/332/51 133/349/15 125/350/48 +f 129/340/49 136/351/9 128/346/50 +f 127/348/47 134/352/8 126/332/51 +f 125/350/48 132/353/10 124/341/45 +f 142/354/53 149/355/54 141/356/12 +f 140/357/42 147/358/55 139/359/8 +f 139/359/8 154/360/56 146/361/57 +f 145/362/7 152/363/58 144/364/37 +f 143/365/11 150/366/59 142/354/53 +f 140/357/42 149/355/54 148/367/60 +f 146/361/57 153/368/33 145/369/7 +f 144/364/37 151/370/61 143/365/11 +f 150/371/59 159/372/62 158/373/63 +f 149/355/54 156/374/64 148/375/60 +f 152/376/58 159/372/62 151/377/61 +f 149/355/54 158/373/63 157/378/29 +f 148/375/60 155/379/65 147/380/55 +f 154/381/56 155/379/65 161/382/66 +f 155/379/65 163/383/67 162/384/68 +f 161/382/66 162/384/68 168/385/69 +f 159/372/62 165/386/70 158/373/63 +f 156/374/64 164/387/71 163/383/67 +f 160/388/72 166/389/73 159/372/62 +f 157/378/29 165/386/70 164/387/71 +f 154/381/56 161/382/66 153/390/33 +f 161/382/66 168/385/69 153/390/33 +f 152/376/58 153/391/33 160/388/72 +f 160/388/72 153/391/33 167/392/74 +f 153/393/33 175/394/75 167/395/74 +f 162/396/68 176/397/76 168/398/69 +f 168/398/69 169/399/77 153/400/33 +f 166/401/73 173/402/78 165/403/70 +f 164/387/71 171/404/79 163/405/67 +f 167/395/74 174/406/80 166/401/73 +f 165/403/70 172/407/29 164/387/71 +f 163/405/67 170/408/81 162/396/68 +f 174/409/80 182/410/82 181/411/83 +f 171/412/79 178/413/84 170/414/81 +f 169/415/77 182/410/82 175/416/75 +f 170/414/81 183/417/85 176/418/76 +f 173/419/78 181/411/83 180/420/86 +f 176/418/76 177/421/33 169/399/77 +f 177/421/33 190/422/87 184/423/88 +f 181/411/83 189/424/89 188/425/90 +f 178/413/84 186/426/91 185/427/92 +f 177/428/33 189/424/89 182/410/82 +f 178/413/84 190/422/87 183/417/85 +f 181/411/83 187/429/93 180/420/86 +f 171/412/79 172/430/29 179/431/94 +f 179/431/94 172/430/29 186/426/91 +f 173/419/78 180/420/86 172/430/29 +f 180/420/86 187/429/93 172/430/29 +f 194/432/53 201/433/12 193/434/12 +f 192/435/42 199/436/8 191/437/8 +f 191/437/8 206/438/57 198/439/57 +f 197/440/7 204/441/37 196/442/37 +f 195/443/11 202/444/53 194/432/53 +f 192/435/42 201/433/12 200/445/42 +f 198/439/57 205/446/7 197/447/7 +f 196/442/37 203/448/11 195/443/11 +f 210/449/53 217/450/12 209/451/12 +f 208/452/42 215/453/8 207/454/8 +f 207/454/8 222/455/57 214/456/57 +f 213/457/7 220/458/37 212/459/37 +f 211/460/11 218/461/53 210/449/53 +f 208/452/42 217/450/12 216/462/42 +f 214/456/57 221/463/7 213/464/7 +f 212/459/37 219/465/11 211/460/11 +f 249/466/95 226/467/96 250/468/97 +f 247/469/98 224/470/53 248/471/99 +f 229/472/100 329/473/101 230/474/102 +f 248/471/99 225/475/103 249/466/95 +f 247/469/98 329/473/101 223/476/104 +f 253/477/33 230/478/102 254/479/10 +f 251/480/26 228/481/57 252/482/7 +f 298/483/12 249/484/95 299/485/29 +f 254/479/10 247/486/98 297/487/25 +f 252/488/7 229/489/100 253/477/33 +f 190/490/87 264/491/105 184/423/88 +f 189/492/89 268/493/14 188/494/90 +f 186/495/91 265/496/106 185/497/92 +f 187/498/93 263/499/107 172/500/29 +f 184/501/88 269/502/108 189/492/89 +f 172/500/29 266/503/109 186/495/91 +f 185/497/92 270/504/110 190/490/87 +f 188/494/90 267/505/111 187/498/93 +f 266/506/109 271/507/112 274/508/113 +f 270/509/110 272/510/114 264/511/105 +f 266/506/109 273/512/13 265/496/106 +f 267/513/111 271/507/112 263/514/107 +f 269/515/108 272/516/114 276/517/115 +f 270/509/110 273/512/13 277/518/116 +f 277/518/116 280/519/117 284/520/118 +f 271/507/112 281/521/119 274/508/113 +f 272/510/114 284/520/118 279/522/120 +f 274/508/113 280/519/117 273/512/13 +f 275/523/121 278/524/122 271/507/112 +f 272/516/114 283/525/123 276/517/115 +f 269/515/108 276/517/115 268/526/14 +f 276/517/115 283/525/123 268/526/14 +f 267/513/111 268/526/14 275/523/121 +f 275/523/121 268/526/14 282/527/124 +f 278/528/122 289/529/29 281/530/119 +f 284/531/118 287/532/7 279/533/120 +f 281/530/119 288/534/9 280/519/117 +f 268/535/14 290/536/25 282/537/124 +f 282/537/124 286/538/12 278/528/122 +f 283/539/123 285/540/10 268/535/14 +f 279/541/120 291/542/33 283/539/123 +f 280/519/117 292/543/26 284/531/118 +f 300/544/9 227/545/125 251/480/26 +f 299/485/29 250/546/97 300/544/9 +f 297/487/25 248/471/99 298/483/12 +f 250/468/97 331/547/126 227/548/125 +f 225/475/103 332/549/127 226/467/96 +f 226/467/96 338/550/128 331/547/126 +f 329/473/101 335/551/129 223/476/104 +f 224/470/53 333/552/130 225/475/103 +f 329/473/101 337/553/131 336/554/132 +f 224/470/53 335/551/129 334/555/133 +f 227/548/125 331/547/126 228/556/57 +f 331/547/126 338/550/128 228/556/57 +f 229/472/100 228/557/57 330/558/134 +f 330/558/134 228/557/57 337/553/131 +f 228/559/57 345/560/15 337/561/131 +f 332/562/127 346/563/13 338/564/128 +f 338/564/128 339/565/8 228/566/57 +f 336/567/132 343/568/14 335/569/129 +f 334/555/133 341/570/16 333/571/130 +f 337/561/131 344/572/10 336/567/132 +f 335/569/129 342/573/11 334/555/133 +f 333/571/130 340/574/9 332/562/127 +f 350/575/25 357/576/99 349/577/12 +f 348/578/29 355/579/97 347/580/9 +f 347/580/9 362/581/125 354/582/26 +f 353/583/7 360/584/100 352/585/33 +f 351/586/10 358/587/98 350/575/25 +f 349/577/12 356/588/95 348/578/29 +f 354/582/26 361/589/57 353/590/7 +f 352/585/33 359/591/102 351/586/10 +f 359/592/102 366/593/104 358/594/98 +f 357/576/99 364/595/103 356/596/95 +f 359/592/102 368/597/134 367/598/101 +f 357/576/99 366/593/104 365/599/53 +f 356/596/95 363/600/96 355/601/97 +f 355/601/97 369/602/126 362/603/125 +f 363/600/96 371/604/130 370/605/127 +f 363/600/96 376/606/128 369/602/126 +f 367/598/101 373/607/129 366/593/104 +f 365/599/53 371/604/130 364/595/103 +f 367/598/101 375/608/131 374/609/132 +f 365/599/53 373/607/129 372/610/133 +f 362/603/125 369/602/126 361/611/57 +f 369/602/126 376/606/128 361/611/57 +f 360/612/100 361/613/57 368/597/134 +f 368/597/134 361/613/57 375/608/131 +f 361/614/57 383/615/15 375/616/131 +f 370/617/127 384/618/13 376/619/128 +f 376/619/128 377/620/8 361/621/57 +f 374/622/132 381/623/14 373/624/129 +f 372/610/133 379/625/16 371/626/130 +f 375/616/131 382/627/10 374/622/132 +f 373/624/129 380/628/11 372/610/133 +f 371/626/130 378/629/9 370/617/127 +f 388/630/42 395/631/135 387/632/12 +f 386/633/53 393/634/136 385/635/11 +f 385/635/11 400/636/137 392/637/37 +f 391/638/7 398/639/138 390/640/57 +f 389/641/8 396/642/139 388/630/42 +f 387/632/12 394/643/140 386/633/53 +f 392/637/37 399/644/26 391/645/7 +f 390/640/57 397/646/141 389/641/8 +f 396/647/139 405/648/142 404/649/143 +f 395/631/135 402/650/144 394/651/140 +f 398/652/138 405/648/142 397/653/141 +f 396/647/139 403/654/25 395/631/135 +f 394/651/140 401/655/145 393/656/136 +f 393/656/136 407/657/146 400/658/137 +f 402/650/144 408/659/147 401/655/145 +f 401/655/145 414/660/148 407/657/146 +f 405/648/142 411/661/149 404/649/143 +f 403/654/25 409/662/150 402/650/144 +f 405/648/142 413/663/151 412/664/152 +f 404/649/143 410/665/153 403/654/25 +f 400/658/137 407/657/146 399/666/26 +f 407/657/146 414/660/148 399/666/26 +f 398/652/138 399/667/26 406/668/154 +f 406/668/154 399/667/26 413/663/151 +f 399/669/26 421/670/13 413/671/151 +f 408/672/147 422/673/16 414/674/148 +f 414/674/148 415/675/9 399/676/26 +f 412/677/152 419/678/15 411/679/149 +f 410/665/153 417/680/14 409/681/150 +f 413/671/151 420/682/8 412/677/152 +f 411/679/149 418/683/10 410/665/153 +f 409/681/150 416/684/11 408/672/147 +f 426/685/42 433/686/135 425/687/12 +f 424/688/53 431/689/136 423/690/11 +f 423/690/11 438/691/137 430/692/37 +f 429/693/7 436/694/138 428/695/57 +f 427/696/8 434/697/139 426/685/42 +f 425/687/12 432/698/140 424/688/53 +f 430/692/37 437/699/26 429/700/7 +f 428/695/57 435/701/141 427/696/8 +f 434/702/139 443/703/142 442/704/143 +f 433/686/135 440/705/144 432/706/140 +f 435/707/141 444/708/154 443/703/142 +f 433/686/135 442/704/143 441/709/25 +f 431/710/136 440/705/144 439/711/145 +f 431/710/136 445/712/146 438/713/137 +f 439/711/145 447/714/150 446/715/147 +f 439/711/145 452/716/148 445/712/146 +f 443/703/142 449/717/149 442/704/143 +f 441/709/25 447/714/150 440/705/144 +f 443/703/142 451/718/151 450/719/152 +f 441/709/25 449/717/149 448/720/153 +f 438/713/137 445/712/146 437/721/26 +f 445/712/146 452/716/148 437/721/26 +f 436/722/138 437/723/26 444/708/154 +f 444/708/154 437/723/26 451/718/151 +f 437/724/26 459/725/13 451/726/151 +f 446/727/147 460/728/16 452/729/148 +f 452/729/148 453/730/9 437/731/26 +f 450/732/152 457/733/15 449/734/149 +f 448/720/153 455/735/14 447/736/150 +f 451/726/151 458/737/8 450/732/152 +f 449/734/149 456/738/10 448/720/153 +f 447/736/150 454/739/11 446/727/147 +f 471/740/60 464/741/65 472/742/55 +f 470/743/54 461/744/63 462/745/29 +f 467/746/58 481/747/62 468/748/61 +f 470/743/54 463/749/64 471/740/60 +f 469/750/59 481/747/62 461/744/63 +f 475/751/37 468/752/61 476/753/11 +f 473/754/57 466/755/33 474/756/7 +f 478/757/12 471/758/60 479/759/42 +f 476/753/11 469/760/59 477/761/53 +f 474/762/7 467/763/58 475/751/37 +f 480/764/8 465/765/56 473/754/57 +f 479/759/42 472/766/55 480/764/8 +f 477/761/53 470/743/54 478/757/12 +f 472/742/55 483/767/66 465/768/56 +f 464/741/65 485/769/67 484/770/68 +f 483/767/66 484/770/68 490/771/69 +f 481/747/62 487/772/70 461/744/63 +f 463/749/64 486/773/71 485/769/67 +f 482/774/72 488/775/73 481/747/62 +f 462/745/29 487/772/70 486/773/71 +f 465/768/56 483/767/66 466/776/33 +f 483/767/66 490/771/69 466/776/33 +f 467/746/58 466/777/33 482/774/72 +f 482/774/72 466/777/33 489/778/74 +f 466/779/33 497/780/14 489/781/74 +f 484/782/68 498/783/15 490/784/69 +f 490/784/69 491/785/10 466/786/33 +f 488/787/73 495/788/16 487/789/70 +f 486/773/71 493/790/13 485/791/67 +f 489/781/74 496/792/11 488/787/73 +f 487/789/70 494/793/9 486/773/71 +f 485/791/67 492/794/8 484/782/68 +f 502/795/53 509/796/54 501/797/12 +f 500/798/42 507/799/55 499/800/8 +f 499/800/8 514/801/56 506/802/57 +f 505/803/7 512/804/58 504/805/37 +f 503/806/11 510/807/59 502/795/53 +f 501/797/12 508/808/60 500/798/42 +f 506/802/57 513/809/33 505/810/7 +f 504/805/37 511/811/61 503/806/11 +f 511/812/61 518/813/63 510/814/59 +f 509/796/54 516/815/64 508/816/60 +f 511/812/61 520/817/72 519/818/62 +f 509/796/54 518/813/63 517/819/29 +f 508/816/60 515/820/65 507/821/55 +f 507/821/55 521/822/66 514/823/56 +f 516/815/64 522/824/68 515/820/65 +f 521/822/66 522/824/68 528/825/69 +f 519/818/62 525/826/70 518/813/63 +f 516/815/64 524/827/71 523/828/67 +f 520/817/72 526/829/73 519/818/62 +f 517/819/29 525/826/70 524/827/71 +f 514/823/56 521/822/66 513/830/33 +f 521/822/66 528/825/69 513/830/33 +f 512/831/58 513/832/33 520/817/72 +f 520/817/72 513/832/33 527/833/74 +f 513/834/33 535/835/14 527/836/74 +f 522/837/68 536/838/15 528/839/69 +f 528/839/69 529/840/10 513/841/33 +f 526/842/73 533/843/16 525/844/70 +f 524/827/71 531/845/13 523/846/67 +f 527/836/74 534/847/11 526/842/73 +f 525/844/70 532/848/9 524/827/71 +f 523/846/67 530/849/8 522/837/68 +f 66/244/29 74/256/35 73/245/30 +f 64/247/25 72/257/36 71/248/31 +f 63/249/10 71/248/31 78/250/32 +f 69/252/7 77/850/37 76/253/34 +f 67/255/9 75/260/38 74/256/35 +f 65/246/12 73/245/30 72/257/36 +f 70/251/33 78/250/32 77/258/37 +f 68/254/26 76/253/34 75/260/38 +f 74/261/35 75/267/38 83/262/39 +f 73/245/30 81/268/42 80/264/41 +f 76/266/34 84/282/52 83/262/39 +f 74/261/35 82/263/40 81/268/42 +f 72/265/36 80/264/41 79/269/43 +f 71/270/31 79/269/43 85/271/44 +f 80/264/41 87/276/48 86/273/45 +f 79/269/43 86/273/45 92/274/46 +f 83/262/39 90/278/50 89/275/47 +f 81/268/42 88/279/51 87/276/48 +f 83/262/39 84/282/52 91/277/49 +f 81/268/42 82/263/40 89/275/47 +f 77/283/37 93/851/11 99/284/16 +f 86/286/45 94/298/10 100/287/14 +f 92/288/46 100/287/14 93/289/11 +f 90/291/50 98/296/9 97/292/13 +f 88/279/51 96/297/8 95/294/15 +f 91/285/49 99/284/16 98/296/9 +f 89/293/47 97/292/13 96/297/8 +f 87/295/48 95/294/15 94/298/10 +f 104/299/29 112/311/35 111/300/30 +f 102/302/25 110/312/36 109/303/31 +f 101/304/10 109/303/31 116/305/32 +f 107/307/7 115/852/37 114/308/34 +f 105/310/9 113/315/38 112/311/35 +f 103/301/12 111/300/30 110/312/36 +f 108/306/33 116/305/32 115/313/37 +f 106/309/26 114/308/34 113/315/38 +f 112/316/35 113/321/38 121/317/39 +f 111/300/30 119/323/42 118/319/41 +f 113/321/38 114/336/34 122/322/52 +f 111/300/30 112/316/35 120/318/40 +f 110/320/36 118/319/41 117/324/43 +f 109/325/31 117/324/43 123/326/44 +f 118/319/41 125/333/48 124/328/45 +f 117/324/43 124/328/45 130/329/46 +f 120/318/40 121/317/39 128/330/50 +f 118/319/41 119/323/42 126/332/51 +f 121/317/39 122/322/52 129/334/49 +f 120/318/40 127/331/47 126/332/51 +f 115/338/37 131/853/11 137/339/16 +f 124/341/45 132/353/10 138/342/14 +f 130/343/46 138/342/14 131/344/11 +f 128/346/50 136/351/9 135/347/13 +f 126/332/51 134/352/8 133/349/15 +f 129/340/49 137/339/16 136/351/9 +f 127/348/47 135/347/13 134/352/8 +f 125/350/48 133/349/15 132/353/10 +f 142/354/53 150/366/59 149/355/54 +f 140/357/42 148/367/60 147/358/55 +f 139/359/8 147/358/55 154/360/56 +f 145/362/7 153/854/33 152/363/58 +f 143/365/11 151/370/61 150/366/59 +f 140/357/42 141/356/12 149/355/54 +f 146/361/57 154/360/56 153/368/33 +f 144/364/37 152/363/58 151/370/61 +f 150/371/59 151/377/61 159/372/62 +f 149/355/54 157/378/29 156/374/64 +f 152/376/58 160/388/72 159/372/62 +f 149/355/54 150/371/59 158/373/63 +f 148/375/60 156/374/64 155/379/65 +f 154/381/56 147/380/55 155/379/65 +f 155/379/65 156/374/64 163/383/67 +f 161/382/66 155/379/65 162/384/68 +f 159/372/62 166/389/73 165/386/70 +f 156/374/64 157/378/29 164/387/71 +f 160/388/72 167/392/74 166/389/73 +f 157/378/29 158/373/63 165/386/70 +f 153/393/33 169/415/77 175/394/75 +f 162/396/68 170/408/81 176/397/76 +f 168/398/69 176/397/76 169/399/77 +f 166/401/73 174/406/80 173/402/78 +f 164/387/71 172/407/29 171/404/79 +f 167/395/74 175/394/75 174/406/80 +f 165/403/70 173/402/78 172/407/29 +f 163/405/67 171/404/79 170/408/81 +f 174/409/80 175/416/75 182/410/82 +f 171/412/79 179/431/94 178/413/84 +f 169/415/77 177/428/33 182/410/82 +f 170/414/81 178/413/84 183/417/85 +f 173/419/78 174/409/80 181/411/83 +f 176/418/76 183/417/85 177/421/33 +f 177/421/33 183/417/85 190/422/87 +f 181/411/83 182/410/82 189/424/89 +f 178/413/84 179/431/94 186/426/91 +f 177/428/33 184/501/88 189/424/89 +f 178/413/84 185/427/92 190/422/87 +f 181/411/83 188/425/90 187/429/93 +f 194/432/53 202/444/53 201/433/12 +f 192/435/42 200/445/42 199/436/8 +f 191/437/8 199/436/8 206/438/57 +f 197/440/7 205/855/7 204/441/37 +f 195/443/11 203/448/11 202/444/53 +f 192/435/42 193/434/12 201/433/12 +f 198/439/57 206/438/57 205/446/7 +f 196/442/37 204/441/37 203/448/11 +f 210/449/53 218/461/53 217/450/12 +f 208/452/42 216/462/42 215/453/8 +f 207/454/8 215/453/8 222/455/57 +f 213/457/7 221/856/7 220/458/37 +f 211/460/11 219/465/11 218/461/53 +f 208/452/42 209/451/12 217/450/12 +f 214/456/57 222/455/57 221/463/7 +f 212/459/37 220/458/37 219/465/11 +f 249/466/95 225/475/103 226/467/96 +f 247/469/98 223/476/104 224/470/53 +f 229/472/100 330/558/134 329/473/101 +f 248/471/99 224/470/53 225/475/103 +f 247/469/98 230/474/102 329/473/101 +f 253/477/33 229/489/100 230/478/102 +f 251/480/26 227/545/125 228/481/57 +f 298/483/12 248/471/99 249/484/95 +f 254/479/10 230/478/102 247/486/98 +f 252/488/7 228/857/57 229/489/100 +f 190/490/87 270/504/110 264/491/105 +f 189/492/89 269/502/108 268/493/14 +f 186/495/91 266/503/109 265/496/106 +f 187/498/93 267/505/111 263/499/107 +f 184/501/88 264/858/105 269/502/108 +f 172/500/29 263/499/107 266/503/109 +f 185/497/92 265/496/106 270/504/110 +f 188/494/90 268/493/14 267/505/111 +f 266/506/109 263/514/107 271/507/112 +f 270/509/110 277/518/116 272/510/114 +f 266/506/109 274/508/113 273/512/13 +f 267/513/111 275/523/121 271/507/112 +f 269/515/108 264/859/105 272/516/114 +f 270/509/110 265/496/106 273/512/13 +f 277/518/116 273/512/13 280/519/117 +f 271/507/112 278/524/122 281/521/119 +f 272/510/114 277/518/116 284/520/118 +f 274/508/113 281/521/119 280/519/117 +f 275/523/121 282/527/124 278/524/122 +f 272/516/114 279/860/120 283/525/123 +f 278/528/122 286/538/12 289/529/29 +f 284/531/118 292/543/26 287/532/7 +f 281/530/119 289/529/29 288/534/9 +f 268/535/14 285/540/10 290/536/25 +f 282/537/124 290/536/25 286/538/12 +f 283/539/123 291/542/33 285/540/10 +f 279/541/120 287/861/7 291/542/33 +f 280/519/117 288/534/9 292/543/26 +f 300/544/9 250/546/97 227/545/125 +f 299/485/29 249/484/95 250/546/97 +f 297/487/25 247/486/98 248/471/99 +f 250/468/97 226/467/96 331/547/126 +f 225/475/103 333/552/130 332/549/127 +f 226/467/96 332/549/127 338/550/128 +f 329/473/101 336/554/132 335/551/129 +f 224/470/53 334/555/133 333/552/130 +f 329/473/101 330/558/134 337/553/131 +f 224/470/53 223/476/104 335/551/129 +f 228/559/57 339/862/8 345/560/15 +f 332/562/127 340/574/9 346/563/13 +f 338/564/128 346/563/13 339/565/8 +f 336/567/132 344/572/10 343/568/14 +f 334/555/133 342/573/11 341/570/16 +f 337/561/131 345/560/15 344/572/10 +f 335/569/129 343/568/14 342/573/11 +f 333/571/130 341/570/16 340/574/9 +f 350/575/25 358/587/98 357/576/99 +f 348/578/29 356/588/95 355/579/97 +f 347/580/9 355/579/97 362/581/125 +f 353/583/7 361/863/57 360/584/100 +f 351/586/10 359/591/102 358/587/98 +f 349/577/12 357/576/99 356/588/95 +f 354/582/26 362/581/125 361/589/57 +f 352/585/33 360/584/100 359/591/102 +f 359/592/102 367/598/101 366/593/104 +f 357/576/99 365/599/53 364/595/103 +f 359/592/102 360/612/100 368/597/134 +f 357/576/99 358/594/98 366/593/104 +f 356/596/95 364/595/103 363/600/96 +f 355/601/97 363/600/96 369/602/126 +f 363/600/96 364/595/103 371/604/130 +f 363/600/96 370/605/127 376/606/128 +f 367/598/101 374/609/132 373/607/129 +f 365/599/53 372/610/133 371/604/130 +f 367/598/101 368/597/134 375/608/131 +f 365/599/53 366/593/104 373/607/129 +f 361/614/57 377/864/8 383/615/15 +f 370/617/127 378/629/9 384/618/13 +f 376/619/128 384/618/13 377/620/8 +f 374/622/132 382/627/10 381/623/14 +f 372/610/133 380/628/11 379/625/16 +f 375/616/131 383/615/15 382/627/10 +f 373/624/129 381/623/14 380/628/11 +f 371/626/130 379/625/16 378/629/9 +f 388/630/42 396/642/139 395/631/135 +f 386/633/53 394/643/140 393/634/136 +f 385/635/11 393/634/136 400/636/137 +f 391/638/7 399/865/26 398/639/138 +f 389/641/8 397/646/141 396/642/139 +f 387/632/12 395/631/135 394/643/140 +f 392/637/37 400/636/137 399/644/26 +f 390/640/57 398/639/138 397/646/141 +f 396/647/139 397/653/141 405/648/142 +f 395/631/135 403/654/25 402/650/144 +f 398/652/138 406/668/154 405/648/142 +f 396/647/139 404/649/143 403/654/25 +f 394/651/140 402/650/144 401/655/145 +f 393/656/136 401/655/145 407/657/146 +f 402/650/144 409/662/150 408/659/147 +f 401/655/145 408/659/147 414/660/148 +f 405/648/142 412/664/152 411/661/149 +f 403/654/25 410/665/153 409/662/150 +f 405/648/142 406/668/154 413/663/151 +f 404/649/143 411/661/149 410/665/153 +f 399/669/26 415/866/9 421/670/13 +f 408/672/147 416/684/11 422/673/16 +f 414/674/148 422/673/16 415/675/9 +f 412/677/152 420/682/8 419/678/15 +f 410/665/153 418/683/10 417/680/14 +f 413/671/151 421/670/13 420/682/8 +f 411/679/149 419/678/15 418/683/10 +f 409/681/150 417/680/14 416/684/11 +f 426/685/42 434/697/139 433/686/135 +f 424/688/53 432/698/140 431/689/136 +f 423/690/11 431/689/136 438/691/137 +f 429/693/7 437/867/26 436/694/138 +f 427/696/8 435/701/141 434/697/139 +f 425/687/12 433/686/135 432/698/140 +f 430/692/37 438/691/137 437/699/26 +f 428/695/57 436/694/138 435/701/141 +f 434/702/139 435/707/141 443/703/142 +f 433/686/135 441/709/25 440/705/144 +f 435/707/141 436/722/138 444/708/154 +f 433/686/135 434/702/139 442/704/143 +f 431/710/136 432/706/140 440/705/144 +f 431/710/136 439/711/145 445/712/146 +f 439/711/145 440/705/144 447/714/150 +f 439/711/145 446/715/147 452/716/148 +f 443/703/142 450/719/152 449/717/149 +f 441/709/25 448/720/153 447/714/150 +f 443/703/142 444/708/154 451/718/151 +f 441/709/25 442/704/143 449/717/149 +f 437/724/26 453/868/9 459/725/13 +f 446/727/147 454/739/11 460/728/16 +f 452/729/148 460/728/16 453/730/9 +f 450/732/152 458/737/8 457/733/15 +f 448/720/153 456/738/10 455/735/14 +f 451/726/151 459/725/13 458/737/8 +f 449/734/149 457/733/15 456/738/10 +f 447/736/150 455/735/14 454/739/11 +f 471/740/60 463/749/64 464/741/65 +f 470/743/54 469/750/59 461/744/63 +f 467/746/58 482/774/72 481/747/62 +f 470/743/54 462/745/29 463/749/64 +f 469/750/59 468/748/61 481/747/62 +f 475/751/37 467/763/58 468/752/61 +f 473/754/57 465/765/56 466/755/33 +f 478/757/12 470/743/54 471/758/60 +f 476/753/11 468/752/61 469/760/59 +f 474/762/7 466/869/33 467/763/58 +f 480/764/8 472/766/55 465/765/56 +f 479/759/42 471/758/60 472/766/55 +f 477/761/53 469/760/59 470/743/54 +f 472/742/55 464/741/65 483/767/66 +f 464/741/65 463/749/64 485/769/67 +f 483/767/66 464/741/65 484/770/68 +f 481/747/62 488/775/73 487/772/70 +f 463/749/64 462/745/29 486/773/71 +f 482/774/72 489/778/74 488/775/73 +f 462/745/29 461/744/63 487/772/70 +f 466/779/33 491/870/10 497/780/14 +f 484/782/68 492/794/8 498/783/15 +f 490/784/69 498/783/15 491/785/10 +f 488/787/73 496/792/11 495/788/16 +f 486/773/71 494/793/9 493/790/13 +f 489/781/74 497/780/14 496/792/11 +f 487/789/70 495/788/16 494/793/9 +f 485/791/67 493/790/13 492/794/8 +f 502/795/53 510/807/59 509/796/54 +f 500/798/42 508/808/60 507/799/55 +f 499/800/8 507/799/55 514/801/56 +f 505/803/7 513/871/33 512/804/58 +f 503/806/11 511/811/61 510/807/59 +f 501/797/12 509/796/54 508/808/60 +f 506/802/57 514/801/56 513/809/33 +f 504/805/37 512/804/58 511/811/61 +f 511/812/61 519/818/62 518/813/63 +f 509/796/54 517/819/29 516/815/64 +f 511/812/61 512/831/58 520/817/72 +f 509/796/54 510/814/59 518/813/63 +f 508/816/60 516/815/64 515/820/65 +f 507/821/55 515/820/65 521/822/66 +f 516/815/64 523/828/67 522/824/68 +f 521/822/66 515/820/65 522/824/68 +f 519/818/62 526/829/73 525/826/70 +f 516/815/64 517/819/29 524/827/71 +f 520/817/72 527/833/74 526/829/73 +f 517/819/29 518/813/63 525/826/70 +f 513/834/33 529/872/10 535/835/14 +f 522/837/68 530/849/8 536/838/15 +f 528/839/69 536/838/15 529/840/10 +f 526/842/73 534/847/11 533/843/16 +f 524/827/71 532/848/9 531/845/13 +f 527/836/74 535/835/14 534/847/11 +f 525/844/70 533/843/16 532/848/9 +f 523/846/67 531/845/13 530/849/8 +o Plane +v 4.500000 0.500000 -3.500000 +v 7.500000 0.500000 -3.500000 +v 7.500000 0.000000 -3.500000 +v 4.500000 0.000000 -3.500000 +v 7.500000 0.000000 3.500000 +v 4.500000 0.000000 3.500000 +v 7.500000 0.500000 3.500000 +v 4.500000 0.500000 3.500000 +v 4.750000 1.250000 -3.000000 +v 7.250000 1.250000 -3.000000 +v 4.750000 2.250000 -3.000000 +v 7.250000 2.250000 -3.000000 +v 5.500000 3.000000 -3.000000 +v 5.500000 0.500000 -3.000000 +v 6.500000 3.000000 -3.000000 +v 6.500000 0.500000 -3.000000 +v 4.750000 1.250000 1.000000 +v 7.250000 1.250000 1.000000 +v 4.750000 2.250000 1.000000 +v 7.250000 2.250000 1.000000 +v 5.500000 3.000000 1.000000 +v 5.500000 0.500000 1.000000 +v 6.500000 3.000000 1.000000 +v 6.500000 0.500000 1.000000 +v 4.500000 0.500000 -3.000000 +v 7.500000 0.500000 -3.000000 +v 4.500000 0.500000 -3.500000 +v 7.500000 0.500000 -3.500000 +v 4.500000 2.500000 -3.500000 +v 4.500000 2.500000 -3.000000 +v 7.500000 2.500000 -3.000000 +v 7.500000 2.500000 -3.500000 +v 5.000000 3.000000 -3.500000 +v 5.000000 3.000000 -3.000000 +v 7.000000 3.000000 -3.000000 +v 7.000000 3.000000 -3.500000 +v 4.500000 0.500000 1.500000 +v 7.500000 0.500000 1.500000 +v 4.500000 0.500000 1.000000 +v 7.500000 0.500000 1.000000 +v 4.500000 2.500000 1.000000 +v 4.500000 2.500000 1.500000 +v 7.500000 2.500000 1.500000 +v 7.500000 2.500000 1.000000 +v 5.000000 3.000000 1.000000 +v 5.000000 3.000000 1.500000 +v 7.000000 3.000000 1.500000 +v 7.000000 3.000000 1.000000 +v 4.500000 0.500000 3.000000 +v 7.500000 0.500000 3.000000 +v 4.500000 0.500000 2.500000 +v 7.500000 0.500000 2.500000 +v 4.500000 2.500000 2.500000 +v 4.500000 2.500000 3.000000 +v 7.500000 2.500000 3.000000 +v 7.500000 2.500000 2.500000 +v 5.000000 3.000000 2.500000 +v 5.000000 3.000000 3.000000 +v 7.000000 3.000000 3.000000 +v 7.000000 3.000000 2.500000 +v 7.250000 0.750000 1.750000 +v 7.250000 0.750000 2.250000 +v 7.500000 0.750000 2.250000 +v 7.500000 0.750000 1.750000 +v 4.750000 0.750000 1.750000 +v 4.750000 0.750000 2.250000 +v 4.500000 0.750000 2.250000 +v 4.500000 0.750000 1.750000 +v 4.750000 0.500000 1.750000 +v 4.500000 0.500000 1.750000 +v 4.750000 0.500000 2.250000 +v 4.500000 0.500000 2.250000 +v 6.500000 2.616025 2.500000 +v 6.866026 2.249999 2.500000 +v 7.000000 1.749999 2.500000 +v 6.866025 1.250000 2.500000 +v 6.500000 0.883974 2.500000 +v 6.000000 0.750000 2.500000 +v 5.500000 0.883974 2.500000 +v 5.133975 1.250000 2.500000 +v 5.000000 1.750000 2.500000 +v 5.133975 2.250000 2.500000 +v 5.500000 2.616025 2.500000 +v 6.000000 2.750000 2.500000 +v 6.000000 2.750000 1.500000 +v 5.500000 2.616025 1.500000 +v 5.133975 2.250000 1.500000 +v 5.000000 1.750000 1.500000 +v 5.133975 1.250000 1.500000 +v 5.500000 0.883974 1.500000 +v 6.000000 0.750000 1.500000 +v 6.500000 0.883974 1.500000 +v 6.866025 1.250000 1.500000 +v 7.000000 1.749999 1.500000 +v 6.866026 2.249999 1.500000 +v 6.500000 2.616025 1.500000 +v 7.500000 0.500000 1.750000 +v 7.250000 0.500000 1.750000 +v 7.500000 0.500000 2.250000 +v 7.250000 0.500000 2.250000 +v 4.750000 0.500000 2.187500 +v 4.750000 0.500000 1.812500 +v 4.750000 0.687500 1.812500 +v 4.750000 0.687500 2.187500 +v 5.250000 0.500000 2.187500 +v 5.250000 0.500000 1.812500 +v 5.250000 0.687500 1.812500 +v 5.250000 0.687500 2.187500 +v 6.750000 0.750000 1.750000 +v 6.750000 0.750000 2.250000 +v 6.750000 0.500000 1.750000 +v 6.750000 0.500000 2.250000 +v 5.250000 0.750000 1.750000 +v 5.250000 0.750000 2.250000 +v 5.250000 0.500000 1.750000 +v 5.250000 0.500000 2.250000 +v 7.250000 0.500000 2.187500 +v 7.250000 0.500000 1.812500 +v 7.250000 0.687500 1.812500 +v 7.250000 0.687500 2.187500 +v 6.750000 0.500000 2.187500 +v 6.750000 0.500000 1.812500 +v 6.750000 0.687500 1.812500 +v 6.750000 0.687500 2.187500 +v 6.500000 0.500000 3.500000 +v 7.000000 0.500000 3.500000 +v 6.500000 0.500000 3.000000 +v 7.000000 0.500000 3.000000 +v 6.500000 2.500000 3.000000 +v 6.500000 2.000000 3.500000 +v 7.000000 2.000000 3.500000 +v 7.000000 2.500000 3.000000 +v 5.000000 0.500000 3.500000 +v 5.500000 0.500000 3.500000 +v 5.000000 0.500000 3.000000 +v 5.500000 0.500000 3.000000 +v 5.000000 2.500000 3.000000 +v 5.000000 2.000000 3.500000 +v 5.500000 2.000000 3.500000 +v 5.500000 2.500000 3.000000 +v 5.500000 3.000000 -1.500000 +v 6.500000 3.000000 -1.500000 +v 5.500000 3.000000 -2.500000 +v 6.500000 3.000000 -2.500000 +v 5.500000 4.000000 -2.500000 +v 5.500000 4.000000 -1.500000 +v 6.500000 4.000000 -1.500000 +v 6.500000 4.000000 -2.500000 +v 7.000000 3.000000 -1.500000 +v 6.926776 3.176777 -1.500000 +v 6.750000 3.250000 -1.500000 +v 6.573223 3.176777 -1.500000 +v 6.500000 3.000000 -1.500000 +v 6.573223 2.823223 -1.500000 +v 6.750000 2.750000 -1.500000 +v 6.926776 2.823223 -1.500000 +v 7.000000 3.000000 0.000000 +v 6.926777 3.176777 0.000000 +v 6.750000 3.250000 0.000000 +v 6.573223 3.176777 0.000000 +v 6.500000 3.000000 0.000000 +v 6.573223 2.823223 0.000000 +v 6.750000 2.750000 0.000000 +v 6.926777 2.823223 0.000000 +v 7.000000 2.926777 0.176777 +v 6.926777 3.051777 0.301777 +v 6.750000 3.103553 0.353554 +v 6.573223 3.051777 0.301777 +v 6.500000 2.926777 0.176777 +v 6.573223 2.801776 0.051777 +v 6.926777 2.801776 0.051777 +v 7.000000 2.750000 0.250000 +v 6.926777 2.750000 0.426777 +v 6.750000 2.750000 0.500000 +v 6.573223 2.750000 0.426777 +v 6.500000 2.750000 0.250000 +v 6.573223 2.750000 0.073223 +v 6.926777 2.750000 0.073223 +v 6.750000 2.500000 0.000000 +v 7.000000 2.500000 0.250000 +v 6.926777 2.500000 0.426777 +v 6.750000 2.500000 0.500000 +v 6.573223 2.500000 0.426777 +v 6.500000 2.500000 0.250000 +v 6.573223 2.500000 0.073223 +v 6.926777 2.500000 0.073223 +v 7.000000 3.073223 -1.676777 +v 6.926776 3.198223 -1.551776 +v 6.573223 3.198223 -1.551776 +v 6.500000 3.073223 -1.676777 +v 6.573223 2.948223 -1.801777 +v 6.750000 2.896447 -1.853553 +v 6.926776 2.948223 -1.801777 +v 7.000000 3.250000 -1.750000 +v 6.926776 3.250000 -1.573223 +v 6.573223 3.250000 -1.573223 +v 6.500000 3.250000 -1.750000 +v 6.573223 3.250000 -1.926777 +v 6.750000 3.250000 -2.000000 +v 6.926776 3.250000 -1.926777 +v 6.750000 3.500000 -1.500000 +v 7.000000 3.500000 -1.750000 +v 6.926776 3.500000 -1.573223 +v 6.573223 3.500000 -1.573223 +v 6.500000 3.500000 -1.750000 +v 6.573223 3.500000 -1.926777 +v 6.750000 3.500000 -2.000000 +v 6.926776 3.500000 -1.926777 +v 6.676777 3.676777 -1.500000 +v 6.853553 3.853553 -1.750000 +v 6.801776 3.801776 -1.573223 +v 6.551777 3.551777 -1.573223 +v 6.551777 3.551777 -1.926777 +v 6.676777 3.676777 -2.000000 +v 6.801776 3.801776 -1.926777 +v 6.500000 3.750000 -1.500000 +v 6.500000 4.000000 -1.750000 +v 6.500000 3.926776 -1.573223 +v 6.500000 3.573223 -1.573223 +v 6.500000 3.573223 -1.926777 +v 6.500000 3.750000 -2.000000 +v 6.500000 3.926776 -1.926777 +v 6.750000 2.500000 -2.000000 +v 7.000000 2.500000 -2.250000 +v 6.926776 2.500000 -2.073223 +v 6.573223 2.500000 -2.073223 +v 6.500000 2.500000 -2.250000 +v 6.573223 2.500000 -2.426777 +v 6.750000 2.500000 -2.500000 +v 6.926776 2.500000 -2.426777 +v 6.750000 3.500000 -2.000000 +v 7.000000 3.500000 -2.250000 +v 6.926776 3.500000 -2.073223 +v 6.573223 3.500000 -2.073223 +v 6.500000 3.500000 -2.250000 +v 6.573223 3.500000 -2.426777 +v 6.750000 3.500000 -2.500000 +v 6.926776 3.500000 -2.426777 +v 6.676777 3.676777 -2.000000 +v 6.853553 3.853553 -2.250000 +v 6.801776 3.801776 -2.073223 +v 6.551777 3.551777 -2.073223 +v 6.551777 3.551777 -2.426777 +v 6.676777 3.676777 -2.500000 +v 6.801776 3.801776 -2.426777 +v 6.500000 3.750000 -2.000000 +v 6.500000 4.000000 -2.250000 +v 6.500000 3.926776 -2.073223 +v 6.500000 3.573223 -2.073223 +v 6.500000 3.573223 -2.426777 +v 6.500000 3.750000 -2.500000 +v 6.500000 3.926776 -2.426777 +v 5.000000 3.000000 -1.500000 +v 5.073224 3.176777 -1.500000 +v 5.250000 3.250000 -1.500000 +v 5.426777 3.176777 -1.500000 +v 5.500000 3.000000 -1.500000 +v 5.426777 2.823223 -1.500000 +v 5.250000 2.750000 -1.500000 +v 5.073224 2.823223 -1.500000 +v 5.000000 3.000000 0.000000 +v 5.073223 3.176777 0.000000 +v 5.250000 3.250000 0.000000 +v 5.426777 3.176777 0.000000 +v 5.500000 3.000000 0.000000 +v 5.426777 2.823223 0.000000 +v 5.250000 2.750000 0.000000 +v 5.073223 2.823223 0.000000 +v 5.000000 2.926777 0.176777 +v 5.073223 3.051777 0.301777 +v 5.250000 3.103553 0.353554 +v 5.426777 3.051777 0.301777 +v 5.500000 2.926777 0.176777 +v 5.426777 2.801776 0.051777 +v 5.073223 2.801776 0.051777 +v 5.000000 2.750000 0.250000 +v 5.073223 2.750000 0.426777 +v 5.250000 2.750000 0.500000 +v 5.426777 2.750000 0.426777 +v 5.500000 2.750000 0.250000 +v 5.426777 2.750000 0.073223 +v 5.073223 2.750000 0.073223 +v 5.250000 2.500000 0.000000 +v 5.000000 2.500000 0.250000 +v 5.073223 2.500000 0.426777 +v 5.250000 2.500000 0.500000 +v 5.426777 2.500000 0.426777 +v 5.500000 2.500000 0.250000 +v 5.426777 2.500000 0.073223 +v 5.073223 2.500000 0.073223 +v 5.000000 3.073223 -1.676777 +v 5.073224 3.198223 -1.551776 +v 5.426777 3.198223 -1.551776 +v 5.500000 3.073223 -1.676777 +v 5.426777 2.948223 -1.801777 +v 5.250000 2.896447 -1.853553 +v 5.073224 2.948223 -1.801777 +v 5.000000 3.250000 -1.750000 +v 5.073224 3.250000 -1.573223 +v 5.426777 3.250000 -1.573223 +v 5.500000 3.250000 -1.750000 +v 5.426777 3.250000 -1.926777 +v 5.250000 3.250000 -2.000000 +v 5.073224 3.250000 -1.926777 +v 5.250000 3.500000 -1.500000 +v 5.000000 3.500000 -1.750000 +v 5.073224 3.500000 -1.573223 +v 5.426777 3.500000 -1.573223 +v 5.500000 3.500000 -1.750000 +v 5.426777 3.500000 -1.926777 +v 5.250000 3.500000 -2.000000 +v 5.073224 3.500000 -1.926777 +v 5.323223 3.676777 -1.500000 +v 5.146447 3.853553 -1.750000 +v 5.198224 3.801776 -1.573223 +v 5.448223 3.551777 -1.573223 +v 5.448223 3.551777 -1.926777 +v 5.323223 3.676777 -2.000000 +v 5.198224 3.801776 -1.926777 +v 5.500000 3.750000 -1.500000 +v 5.500000 4.000000 -1.750000 +v 5.500000 3.926776 -1.573223 +v 5.500000 3.573223 -1.573223 +v 5.500000 3.573223 -1.926777 +v 5.500000 3.750000 -2.000000 +v 5.500000 3.926776 -1.926777 +v 5.250000 2.500000 -2.000000 +v 5.000000 2.500000 -2.250000 +v 5.073224 2.500000 -2.073223 +v 5.426777 2.500000 -2.073223 +v 5.500000 2.500000 -2.250000 +v 5.426777 2.500000 -2.426777 +v 5.250000 2.500000 -2.500000 +v 5.073224 2.500000 -2.426777 +v 5.250000 3.500000 -2.000000 +v 5.000000 3.500000 -2.250000 +v 5.073224 3.500000 -2.073223 +v 5.426777 3.500000 -2.073223 +v 5.500000 3.500000 -2.250000 +v 5.426777 3.500000 -2.426777 +v 5.250000 3.500000 -2.500000 +v 5.073224 3.500000 -2.426777 +v 5.323223 3.676777 -2.000000 +v 5.146447 3.853553 -2.250000 +v 5.198224 3.801776 -2.073223 +v 5.448223 3.551777 -2.073223 +v 5.448223 3.551777 -2.426777 +v 5.323223 3.676777 -2.500000 +v 5.198224 3.801776 -2.426777 +v 5.500000 3.750000 -2.000000 +v 5.500000 4.000000 -2.250000 +v 5.500000 3.926776 -2.073223 +v 5.500000 3.573223 -2.073223 +v 5.500000 3.573223 -2.426777 +v 5.500000 3.750000 -2.500000 +v 5.500000 3.926776 -2.426777 +v 5.000000 0.500000 0.250000 +v 7.000000 0.500000 0.250000 +v 5.000000 0.500000 -0.250000 +v 7.000000 0.500000 -0.250000 +v 5.000000 1.000000 -0.250000 +v 5.000000 1.000000 0.250000 +v 7.000000 1.000000 0.250000 +v 7.000000 1.000000 -0.250000 +v 5.000000 0.500000 -1.750000 +v 7.000000 0.500000 -1.750000 +v 5.000000 0.500000 -2.250000 +v 7.000000 0.500000 -2.250000 +v 5.000000 1.000000 -2.250000 +v 5.000000 1.000000 -1.750000 +v 7.000000 1.000000 -1.750000 +v 7.000000 1.000000 -2.250000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.9659 0.2588 0.0000 +vn -0.2588 -0.9659 0.0000 +vn 0.9659 -0.2588 0.0000 +vn 0.2588 0.9659 0.0000 +vn -0.2588 0.9659 0.0000 +vn -0.9659 -0.2588 0.0000 +vn 0.2588 -0.9659 0.0000 +vn 0.9659 0.2588 0.0000 +vn 0.0000 0.7071 0.7071 +vn -0.7263 0.6737 0.1363 +vn 0.0000 0.9824 0.1866 +vn 0.7263 0.6737 0.1363 +vn 0.9987 0.0473 0.0196 +vn 0.9987 -0.0473 -0.0196 +vn 0.7263 -0.6737 -0.1363 +vn 0.6794 -0.7194 -0.1447 +vn 0.0000 -0.9824 -0.1866 +vn -0.7263 -0.6737 -0.1363 +vn -0.6794 -0.7194 -0.1447 +vn -0.9987 -0.0473 -0.0196 +vn -0.6794 0.7194 0.1447 +vn 0.6794 0.7194 0.1447 +vn 0.0000 -0.7071 -0.7071 +vn -0.9987 0.0473 0.0196 +vn -0.9955 0.0670 0.0670 +vn -0.6630 0.5293 0.5293 +vn 0.6630 0.5293 0.5293 +vn 0.9955 0.0670 0.0670 +vn 0.7573 -0.4617 -0.4617 +vn 0.9987 0.0196 0.0473 +vn 0.7263 -0.1363 -0.6737 +vn -0.9987 0.0196 0.0473 +vn -0.6794 0.1447 0.7194 +vn 0.6794 0.1447 0.7194 +vn -0.7573 -0.4617 -0.4617 +vn 0.0000 0.1866 0.9824 +vn -0.7263 -0.1363 -0.6737 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.6630 -0.5293 -0.5293 +vn -0.6630 -0.5293 -0.5293 +vn 0.9955 -0.0670 -0.0670 +vn 0.7573 0.4617 0.4617 +vn -0.7573 0.4617 0.4617 +vn -0.9955 -0.0670 -0.0670 +vn 0.6794 -0.1447 -0.7194 +vn -0.6794 -0.1447 -0.7194 +vn 0.9987 -0.0196 -0.0473 +vn 0.7263 0.1363 0.6737 +vn 0.0000 -0.1866 -0.9824 +vn -0.7263 0.1363 0.6737 +vn -0.9987 -0.0196 -0.0473 +vn 0.7194 0.1447 -0.6794 +vn -0.6737 -0.1363 -0.7263 +vn 0.7194 0.1447 0.6794 +vn 0.0473 0.0196 0.9987 +vn 0.9824 0.1866 0.0000 +vn -0.6737 -0.1363 0.7263 +vn 0.0473 0.0196 -0.9987 +vn -0.9809 -0.1944 0.0000 +vn 0.5293 0.5293 0.6630 +vn 0.0670 0.0670 0.9955 +vn -0.4617 -0.4617 -0.7573 +vn 0.0670 0.0670 -0.9955 +vn -0.4617 -0.4617 0.7573 +vn 0.5293 0.5293 -0.6630 +vn -0.2611 -0.6303 0.7311 +vn 0.0392 0.0948 -0.9947 +vn 0.2962 0.7150 -0.6332 +vn 0.3827 0.9239 0.0000 +vn 0.2962 0.7150 0.6332 +vn 0.0392 0.0948 0.9947 +vn -0.2611 -0.6303 -0.7311 +vn -0.7194 0.1447 -0.6794 +vn 0.6737 -0.1363 -0.7263 +vn -0.7194 0.1447 0.6794 +vn -0.0473 0.0196 0.9987 +vn -0.9824 0.1866 0.0000 +vn 0.6737 -0.1363 0.7263 +vn -0.0473 0.0196 -0.9987 +vn 0.9809 -0.1944 0.0000 +vn -0.0670 0.0670 0.9955 +vn 0.4617 -0.4617 -0.7573 +vn 0.4617 -0.4617 0.7573 +vn -0.0670 0.0670 -0.9955 +vn 0.2611 -0.6303 0.7311 +vn -0.5293 0.5293 -0.6630 +vn -0.0392 0.0948 -0.9947 +vn -0.5293 0.5293 0.6630 +vn -0.3827 0.9239 0.0000 +vn -0.0392 0.0948 0.9947 +vn 0.2611 -0.6303 -0.7311 +vn -0.2962 0.7150 0.6332 +vn -0.2962 0.7150 -0.6332 +s off +f 577/873/155 579/874/155 580/875/155 +f 578/876/156 581/877/156 579/874/156 +f 583/878/157 582/879/157 581/877/157 +f 584/880/158 580/875/158 582/879/158 +f 583/878/159 577/873/159 584/880/159 +f 580/875/160 581/877/160 582/879/160 +f 613/881/158 617/882/158 615/883/158 +f 617/882/155 624/884/155 620/885/155 +f 596/886/156 586/887/156 588/888/156 +f 593/889/158 587/890/158 585/891/158 +f 598/892/161 585/891/161 590/893/161 +f 595/894/162 589/895/162 587/890/162 +f 597/896/159 591/897/159 589/895/159 +f 944/898/156 947/899/156 942/900/156 +f 599/901/163 588/888/163 591/897/163 +f 594/902/164 592/903/164 586/887/164 +f 615/883/155 620/885/155 616/904/155 +f 605/905/155 612/906/155 608/907/155 +f 601/908/158 605/905/158 603/909/158 +f 603/909/155 608/907/155 604/910/155 +f 602/911/157 606/912/157 601/908/157 +f 604/910/156 607/913/156 602/911/156 +f 611/914/159 609/915/159 610/916/159 +f 607/913/157 610/916/157 606/912/157 +f 608/907/163 611/914/163 607/913/163 +f 606/912/162 609/915/162 605/905/162 +f 614/917/157 618/918/157 613/881/157 +f 616/904/156 619/919/156 614/917/156 +f 623/920/159 621/921/159 622/922/159 +f 619/919/157 622/922/157 618/918/157 +f 620/885/163 623/920/163 619/919/163 +f 618/918/162 621/921/162 617/882/162 +f 625/923/158 629/924/158 627/925/158 +f 629/924/155 636/926/155 632/927/155 +f 627/925/155 632/927/155 628/928/155 +f 626/929/157 630/930/157 625/923/157 +f 628/928/156 631/931/156 626/929/156 +f 635/932/159 633/933/159 634/934/159 +f 631/931/157 634/934/157 630/930/157 +f 632/927/163 635/932/163 631/931/163 +f 630/930/162 633/933/162 629/924/162 +f 664/935/165 658/936/165 663/937/165 +f 667/938/166 655/939/166 666/940/166 +f 670/941/167 652/942/167 669/943/167 +f 663/937/162 659/944/162 662/945/162 +f 661/946/168 649/947/168 672/948/168 +f 666/940/161 656/949/161 665/950/161 +f 669/943/164 653/951/164 668/952/164 +f 662/945/169 660/953/169 661/946/169 +f 672/948/163 650/954/163 671/955/163 +f 665/950/170 657/956/170 664/935/170 +f 668/952/171 654/957/171 667/938/171 +f 671/955/172 651/958/172 670/941/172 +f 642/959/159 644/960/159 643/961/159 +f 646/962/155 641/963/155 645/964/155 +f 647/965/157 643/961/157 648/966/157 +f 679/967/156 645/964/156 641/963/156 +f 648/966/158 644/960/158 646/962/158 +f 639/968/159 637/969/159 638/970/159 +f 674/971/155 640/972/155 673/973/155 +f 675/974/157 638/970/157 676/975/157 +f 673/973/156 639/968/156 675/974/156 +f 637/969/158 696/976/158 638/970/158 +f 681/977/157 680/978/157 677/979/157 +f 683/980/155 678/981/155 679/967/155 +f 684/982/159 679/967/159 680/978/159 +f 685/983/159 690/984/159 686/985/159 +f 687/986/155 689/987/155 685/983/155 +f 686/985/157 692/988/157 688/989/157 +f 690/984/158 683/980/158 684/982/158 +f 692/988/158 684/982/158 681/977/158 +f 683/980/158 691/990/158 682/991/158 +f 680/978/156 641/963/156 642/959/156 +f 647/965/156 680/978/156 642/959/156 +f 695/992/158 674/971/158 694/993/158 +f 676/975/158 696/976/158 693/994/158 +f 696/976/157 697/995/157 693/994/157 +f 694/993/155 699/996/155 695/992/155 +f 695/992/159 700/997/159 696/976/159 +f 700/997/156 685/983/156 686/985/156 +f 699/996/156 687/986/156 685/983/156 +f 688/989/156 700/997/156 686/985/156 +f 712/998/156 715/999/156 710/1000/156 +f 707/1001/173 705/1002/173 706/1003/173 +f 704/1004/156 707/1001/156 702/1005/156 +f 703/1006/158 706/1003/158 705/1002/158 +f 715/999/173 713/1007/173 714/1008/173 +f 702/1005/157 706/1003/157 701/1009/157 +f 711/1010/158 714/1008/158 713/1007/158 +f 710/1000/157 714/1008/157 709/1011/157 +f 723/1012/159 721/1013/159 722/1014/159 +f 720/1015/156 723/1012/156 718/1016/156 +f 717/1017/158 721/1013/158 719/1018/158 +f 719/1018/155 724/1019/155 720/1015/155 +f 718/1016/157 722/1014/157 717/1017/157 +f 942/900/157 946/1020/157 941/1021/157 +f 943/1022/155 948/1023/155 944/898/155 +f 935/1024/155 940/1025/155 936/1026/155 +f 934/1027/157 938/1028/157 933/1029/157 +f 936/1026/156 939/1030/156 934/1027/156 +f 933/1029/158 937/1031/158 935/1024/158 +f 941/1021/158 945/1032/158 943/1022/158 +f 577/873/155 578/876/155 579/874/155 +f 578/876/156 583/878/156 581/877/156 +f 583/878/157 584/880/157 582/879/157 +f 584/880/158 577/873/158 580/875/158 +f 583/878/159 578/876/159 577/873/159 +f 580/875/160 579/874/160 581/877/160 +f 613/881/158 618/918/158 617/882/158 +f 617/882/155 621/921/155 624/884/155 +f 596/886/156 594/902/156 586/887/156 +f 593/889/158 595/894/158 587/890/158 +f 598/892/161 593/889/161 585/891/161 +f 595/894/162 597/896/162 589/895/162 +f 597/896/159 599/901/159 591/897/159 +f 944/898/156 948/1023/156 947/899/156 +f 599/901/163 596/886/163 588/888/163 +f 594/902/164 600/1033/164 592/903/164 +f 615/883/155 617/882/155 620/885/155 +f 605/905/155 609/915/155 612/906/155 +f 601/908/158 606/912/158 605/905/158 +f 603/909/155 605/905/155 608/907/155 +f 602/911/157 607/913/157 606/912/157 +f 604/910/156 608/907/156 607/913/156 +f 611/914/159 612/906/159 609/915/159 +f 607/913/157 611/914/157 610/916/157 +f 608/907/163 612/906/163 611/914/163 +f 606/912/162 610/916/162 609/915/162 +f 614/917/157 619/919/157 618/918/157 +f 616/904/156 620/885/156 619/919/156 +f 623/920/159 624/884/159 621/921/159 +f 619/919/157 623/920/157 622/922/157 +f 620/885/163 624/884/163 623/920/163 +f 618/918/162 622/922/162 621/921/162 +f 625/923/158 630/930/158 629/924/158 +f 629/924/155 633/933/155 636/926/155 +f 627/925/155 629/924/155 632/927/155 +f 626/929/157 631/931/157 630/930/157 +f 628/928/156 632/927/156 631/931/156 +f 635/932/159 636/926/159 633/933/159 +f 631/931/157 635/932/157 634/934/157 +f 632/927/163 636/926/163 635/932/163 +f 630/930/162 634/934/162 633/933/162 +f 664/935/165 657/956/165 658/936/165 +f 667/938/166 654/957/166 655/939/166 +f 670/941/167 651/958/167 652/942/167 +f 663/937/162 658/936/162 659/944/162 +f 661/946/168 660/953/168 649/947/168 +f 666/940/161 655/939/161 656/949/161 +f 669/943/164 652/942/164 653/951/164 +f 662/945/169 659/944/169 660/953/169 +f 672/948/163 649/947/163 650/954/163 +f 665/950/170 656/949/170 657/956/170 +f 668/952/171 653/951/171 654/957/171 +f 671/955/172 650/954/172 651/958/172 +f 642/959/159 641/963/159 644/960/159 +f 646/962/155 644/960/155 641/963/155 +f 647/965/157 642/959/157 643/961/157 +f 679/967/156 678/981/156 645/964/156 +f 648/966/158 643/961/158 644/960/158 +f 639/968/159 640/972/159 637/969/159 +f 674/971/155 637/969/155 640/972/155 +f 675/974/157 639/968/157 638/970/157 +f 673/973/156 640/972/156 639/968/156 +f 637/969/158 695/992/158 696/976/158 +f 681/977/157 684/982/157 680/978/157 +f 683/980/155 682/991/155 678/981/155 +f 684/982/159 683/980/159 679/967/159 +f 685/983/159 689/987/159 690/984/159 +f 687/986/155 691/990/155 689/987/155 +f 686/985/157 690/984/157 692/988/157 +f 690/984/158 689/987/158 683/980/158 +f 692/988/158 690/984/158 684/982/158 +f 683/980/158 689/987/158 691/990/158 +f 680/978/156 679/967/156 641/963/156 +f 647/965/156 677/979/156 680/978/156 +f 695/992/158 637/969/158 674/971/158 +f 676/975/158 638/970/158 696/976/158 +f 696/976/157 700/997/157 697/995/157 +f 694/993/155 698/1034/155 699/996/155 +f 695/992/159 699/996/159 700/997/159 +f 700/997/156 699/996/156 685/983/156 +f 699/996/156 698/1034/156 687/986/156 +f 688/989/156 697/995/156 700/997/156 +f 712/998/156 716/1035/156 715/999/156 +f 707/1001/173 708/1036/173 705/1002/173 +f 704/1004/156 708/1036/156 707/1001/156 +f 703/1006/158 701/1009/158 706/1003/158 +f 715/999/173 716/1035/173 713/1007/173 +f 702/1005/157 707/1001/157 706/1003/157 +f 711/1010/158 709/1011/158 714/1008/158 +f 710/1000/157 715/999/157 714/1008/157 +f 723/1012/159 724/1019/159 721/1013/159 +f 720/1015/156 724/1019/156 723/1012/156 +f 717/1017/158 722/1014/158 721/1013/158 +f 719/1018/155 721/1013/155 724/1019/155 +f 718/1016/157 723/1012/157 722/1014/157 +f 942/900/157 947/899/157 946/1020/157 +f 943/1022/155 945/1032/155 948/1023/155 +f 935/1024/155 937/1031/155 940/1025/155 +f 934/1027/157 939/1030/157 938/1028/157 +f 936/1026/156 940/1025/156 939/1030/156 +f 933/1029/158 938/1028/158 937/1031/158 +f 941/1021/158 946/1020/158 945/1032/158 +s 1 +f 728/1037/174 735/1038/175 727/1039/173 +f 726/1040/176 733/1041/177 725/1042/178 +f 725/1042/178 740/1043/179 732/1044/180 +f 731/1045/181 738/1046/182 730/1047/183 +f 729/1048/184 736/1049/185 728/1037/174 +f 727/1039/173 734/1050/186 726/1040/176 +f 732/1044/180 739/1051/187 731/1045/181 +f 730/1047/183 737/1052/188 729/1048/184 +f 736/1049/185 745/1053/189 744/1054/190 +f 735/1038/175 742/1055/191 734/1050/186 +f 738/1046/182 745/1053/189 737/1052/188 +f 736/1049/185 743/1056/173 735/1038/175 +f 734/1050/186 741/1057/192 733/1041/177 +f 733/1041/177 747/1058/193 740/1043/179 +f 742/1055/191 748/1059/194 741/1057/192 +f 747/1058/193 748/1059/194 754/1060/195 +f 744/1054/190 752/1061/196 751/1062/197 +f 743/1056/173 749/1063/198 742/1055/191 +f 746/1064/199 752/1061/196 745/1053/189 +f 743/1056/173 751/1062/197 750/1065/200 +f 740/1043/179 747/1058/193 739/1051/187 +f 747/1058/193 754/1060/195 739/1051/187 +f 738/1046/182 739/1051/187 746/1064/199 +f 746/1064/199 739/1051/187 753/1066/201 +f 739/1051/187 761/1067/202 753/1066/201 +f 748/1059/194 762/1068/203 754/1060/195 +f 754/1060/195 755/1069/155 739/1051/187 +f 752/1061/196 759/1070/204 751/1062/197 +f 750/1065/200 757/1071/205 749/1063/198 +f 753/1066/201 760/1072/158 752/1061/196 +f 751/1062/197 758/1073/157 750/1065/200 +f 749/1063/198 756/1074/156 748/1059/194 +f 731/1045/181 769/1075/206 732/1044/180 +f 729/1048/184 767/1076/207 730/1047/183 +f 726/1040/176 763/1077/208 764/1078/209 +f 725/1042/178 769/1075/206 763/1077/208 +f 730/1047/183 768/1079/187 731/1045/181 +f 729/1048/184 765/1080/210 766/1081/211 +f 768/1079/187 776/1082/212 769/1075/206 +f 766/1081/211 774/1083/213 767/1076/207 +f 764/1078/209 770/1084/214 771/1085/215 +f 769/1075/206 770/1084/214 763/1077/208 +f 768/1079/187 774/1083/213 775/1086/216 +f 766/1081/211 772/1087/217 773/1088/218 +f 727/1039/173 765/1080/210 728/1037/174 +f 765/1080/210 727/1039/173 772/1087/217 +f 726/1040/176 764/1078/209 727/1039/173 +f 764/1078/209 771/1085/215 727/1039/173 +f 775/1086/216 784/1089/219 776/1082/212 +f 773/1088/218 782/1090/220 774/1083/213 +f 770/1084/214 779/1091/221 771/1085/215 +f 771/1085/215 777/1092/222 727/1039/173 +f 776/1082/212 778/1093/223 770/1084/214 +f 727/1039/173 780/1094/224 772/1087/217 +f 774/1083/213 783/1095/225 775/1086/216 +f 772/1087/217 781/1096/226 773/1088/218 +f 778/1093/223 787/1097/227 779/1091/221 +f 779/1091/221 785/1098/228 777/1092/222 +f 784/1089/219 786/1099/163 778/1093/223 +f 783/1095/225 789/1100/229 790/1101/230 +f 777/1092/222 788/1102/231 780/1094/224 +f 784/1089/219 790/1101/230 791/1103/232 +f 785/1098/228 795/1104/233 788/1102/231 +f 791/1103/232 797/1105/234 798/1106/235 +f 787/1097/227 793/1107/236 794/1108/237 +f 787/1097/227 792/1109/238 785/1098/228 +f 791/1103/232 793/1107/236 786/1099/163 +f 789/1100/229 797/1105/234 790/1101/230 +f 781/1096/226 789/1100/229 782/1090/220 +f 789/1100/229 781/1096/226 796/1110/239 +f 780/1094/224 788/1102/231 781/1096/226 +f 788/1102/231 795/1104/233 781/1096/226 +f 805/1111/155 814/1112/219 806/1113/203 +f 803/1114/158 812/1115/220 804/1116/202 +f 800/1117/156 809/1118/221 801/1119/205 +f 801/1119/205 807/1120/222 799/1121/157 +f 806/1113/203 808/1122/223 800/1117/156 +f 799/1121/157 810/1123/224 802/1124/204 +f 804/1116/202 813/1125/225 805/1111/155 +f 802/1124/204 811/1126/226 803/1114/158 +f 808/1122/223 817/1127/227 809/1118/221 +f 809/1118/221 815/1128/228 807/1120/222 +f 814/1112/219 816/1129/163 808/1122/223 +f 813/1125/225 819/1130/229 820/1131/230 +f 807/1120/222 818/1132/231 810/1123/224 +f 814/1112/219 820/1131/230 821/1133/232 +f 818/1132/231 822/1134/238 825/1135/233 +f 821/1133/232 827/1136/234 828/1137/235 +f 816/1129/163 824/1138/237 817/1127/227 +f 815/1128/228 824/1138/237 822/1134/238 +f 821/1133/232 823/1139/236 816/1129/163 +f 819/1130/229 827/1136/234 820/1131/230 +f 811/1126/226 819/1130/229 812/1115/220 +f 819/1130/229 811/1126/226 826/1140/239 +f 810/1123/224 818/1132/231 811/1126/226 +f 818/1132/231 825/1135/233 811/1126/226 +f 839/1141/175 832/1142/176 831/1143/173 +f 837/1144/188 830/1145/174 829/1146/184 +f 844/1147/182 829/1146/184 836/1148/183 +f 842/1149/179 835/1150/181 834/1151/180 +f 840/1152/186 833/1153/178 832/1142/176 +f 838/1154/185 831/1143/173 830/1145/174 +f 843/1155/187 836/1148/183 835/1150/181 +f 841/1156/177 834/1151/180 833/1153/178 +f 840/1152/186 849/1157/192 841/1156/177 +f 846/1158/190 839/1141/175 838/1154/185 +f 849/1157/192 842/1149/179 841/1156/177 +f 847/1159/173 840/1152/186 839/1141/175 +f 845/1160/189 838/1154/185 837/1144/188 +f 844/1147/182 845/1160/189 837/1144/188 +f 852/1161/196 846/1158/190 845/1160/189 +f 858/1162/201 845/1160/189 851/1163/199 +f 855/1164/198 849/1157/192 848/1165/191 +f 853/1166/197 847/1159/173 846/1158/190 +f 849/1157/192 857/1167/195 850/1168/193 +f 847/1159/173 855/1164/198 848/1165/191 +f 844/1147/182 843/1155/187 851/1163/199 +f 851/1163/199 843/1155/187 858/1162/201 +f 842/1149/179 850/1168/193 843/1155/187 +f 850/1168/193 857/1167/195 843/1155/187 +f 865/1169/203 843/1155/187 857/1167/195 +f 866/1170/202 852/1161/196 858/1162/201 +f 859/1171/155 858/1162/201 843/1155/187 +f 863/1172/205 856/1173/194 855/1164/198 +f 861/1174/204 854/1175/200 853/1166/197 +f 864/1176/156 857/1167/195 856/1173/194 +f 862/1177/157 855/1164/198 854/1175/200 +f 860/1178/158 853/1166/197 852/1161/196 +f 873/1179/207 835/1150/181 836/1148/183 +f 834/1151/180 870/1180/208 833/1153/178 +f 830/1145/174 867/1181/211 829/1146/184 +f 829/1146/184 873/1179/207 836/1148/183 +f 835/1150/181 871/1182/206 834/1151/180 +f 870/1180/208 832/1142/176 833/1153/178 +f 880/1183/213 872/1184/187 873/1179/207 +f 878/1185/212 870/1180/208 871/1182/206 +f 868/1186/210 874/1187/218 867/1181/211 +f 867/1181/211 880/1183/213 873/1179/207 +f 872/1184/187 878/1185/212 871/1182/206 +f 877/1188/214 869/1189/209 870/1180/208 +f 831/1143/173 832/1142/176 869/1189/209 +f 869/1189/209 876/1190/215 831/1143/173 +f 830/1145/174 831/1143/173 868/1186/210 +f 868/1186/210 831/1143/173 875/1191/217 +f 888/1192/240 879/1193/216 880/1183/213 +f 886/1194/241 877/1188/214 878/1185/212 +f 883/1195/242 874/1187/218 875/1191/217 +f 881/1196/243 875/1191/217 831/1143/173 +f 882/1197/244 880/1183/213 874/1187/218 +f 884/1198/245 831/1143/173 876/1190/215 +f 887/1199/246 878/1185/212 879/1193/216 +f 885/1200/247 876/1190/215 877/1188/214 +f 883/1195/242 890/1201/162 882/1197/244 +f 889/1202/248 883/1195/242 881/1196/243 +f 890/1201/162 888/1192/240 882/1197/244 +f 887/1199/246 893/1203/249 886/1194/241 +f 892/1204/250 881/1196/243 884/1198/245 +f 888/1192/240 894/1205/251 887/1199/246 +f 899/1206/252 889/1202/248 892/1204/250 +f 895/1207/253 901/1208/254 894/1205/251 +f 891/1209/255 897/1210/256 890/1201/162 +f 896/1211/257 891/1209/255 889/1202/248 +f 897/1210/256 895/1207/253 890/1201/162 +f 901/1208/254 893/1203/249 894/1205/251 +f 885/1200/247 886/1194/241 893/1203/249 +f 893/1203/249 900/1212/258 885/1200/247 +f 884/1198/245 885/1200/247 892/1204/250 +f 892/1204/250 885/1200/247 899/1206/252 +f 918/1213/240 909/1214/155 910/1215/202 +f 916/1216/241 907/1217/156 908/1218/203 +f 913/1219/242 904/1220/158 905/1221/204 +f 911/1222/243 905/1221/204 903/1223/157 +f 912/1224/244 910/1215/202 904/1220/158 +f 914/1225/245 903/1223/157 906/1226/205 +f 917/1227/246 908/1218/203 909/1214/155 +f 915/1228/247 906/1226/205 907/1217/156 +f 913/1219/242 920/1229/162 912/1224/244 +f 911/1222/243 921/1230/255 913/1219/242 +f 920/1229/162 918/1213/240 912/1224/244 +f 917/1227/246 923/1231/249 916/1216/241 +f 922/1232/250 911/1222/243 914/1225/245 +f 918/1213/240 924/1233/251 917/1227/246 +f 922/1232/250 926/1234/257 919/1235/248 +f 925/1236/253 931/1237/254 924/1233/251 +f 928/1238/259 920/1229/162 921/1230/255 +f 926/1234/257 921/1230/255 919/1235/248 +f 927/1239/256 925/1236/253 920/1229/162 +f 931/1237/254 923/1231/249 924/1233/251 +f 915/1228/247 916/1216/241 923/1231/249 +f 923/1231/249 930/1240/258 915/1228/247 +f 914/1225/245 915/1228/247 922/1232/250 +f 922/1232/250 915/1228/247 929/1241/252 +f 728/1037/174 736/1049/185 735/1038/175 +f 726/1040/176 734/1050/186 733/1041/177 +f 725/1042/178 733/1041/177 740/1043/179 +f 731/1045/181 739/1051/187 738/1046/182 +f 729/1048/184 737/1052/188 736/1049/185 +f 727/1039/173 735/1038/175 734/1050/186 +f 732/1044/180 740/1043/179 739/1051/187 +f 730/1047/183 738/1046/182 737/1052/188 +f 736/1049/185 737/1052/188 745/1053/189 +f 735/1038/175 743/1056/173 742/1055/191 +f 738/1046/182 746/1064/199 745/1053/189 +f 736/1049/185 744/1054/190 743/1056/173 +f 734/1050/186 742/1055/191 741/1057/192 +f 733/1041/177 741/1057/192 747/1058/193 +f 742/1055/191 749/1063/198 748/1059/194 +f 747/1058/193 741/1057/192 748/1059/194 +f 744/1054/190 745/1053/189 752/1061/196 +f 743/1056/173 750/1065/200 749/1063/198 +f 746/1064/199 753/1066/201 752/1061/196 +f 743/1056/173 744/1054/190 751/1062/197 +f 739/1051/187 755/1069/155 761/1067/202 +f 748/1059/194 756/1074/156 762/1068/203 +f 754/1060/195 762/1068/203 755/1069/155 +f 752/1061/196 760/1072/158 759/1070/204 +f 750/1065/200 758/1073/157 757/1071/205 +f 753/1066/201 761/1067/202 760/1072/158 +f 751/1062/197 759/1070/204 758/1073/157 +f 749/1063/198 757/1071/205 756/1074/156 +f 731/1045/181 768/1079/187 769/1075/206 +f 729/1048/184 766/1081/211 767/1076/207 +f 726/1040/176 725/1042/178 763/1077/208 +f 725/1042/178 732/1044/180 769/1075/206 +f 730/1047/183 767/1076/207 768/1079/187 +f 729/1048/184 728/1037/174 765/1080/210 +f 768/1079/187 775/1086/216 776/1082/212 +f 766/1081/211 773/1088/218 774/1083/213 +f 764/1078/209 763/1077/208 770/1084/214 +f 769/1075/206 776/1082/212 770/1084/214 +f 768/1079/187 767/1076/207 774/1083/213 +f 766/1081/211 765/1080/210 772/1087/217 +f 775/1086/216 783/1095/225 784/1089/219 +f 773/1088/218 781/1096/226 782/1090/220 +f 770/1084/214 778/1093/223 779/1091/221 +f 771/1085/215 779/1091/221 777/1092/222 +f 776/1082/212 784/1089/219 778/1093/223 +f 727/1039/173 777/1092/222 780/1094/224 +f 774/1083/213 782/1090/220 783/1095/225 +f 772/1087/217 780/1094/224 781/1096/226 +f 778/1093/223 786/1099/163 787/1097/227 +f 779/1091/221 787/1097/227 785/1098/228 +f 784/1089/219 791/1103/232 786/1099/163 +f 783/1095/225 782/1090/220 789/1100/229 +f 777/1092/222 785/1098/228 788/1102/231 +f 784/1089/219 783/1095/225 790/1101/230 +f 785/1098/228 792/1109/238 795/1104/233 +f 791/1103/232 790/1101/230 797/1105/234 +f 787/1097/227 786/1099/163 793/1107/236 +f 787/1097/227 794/1108/237 792/1109/238 +f 791/1103/232 798/1106/235 793/1107/236 +f 789/1100/229 796/1110/239 797/1105/234 +f 805/1111/155 813/1125/225 814/1112/219 +f 803/1114/158 811/1126/226 812/1115/220 +f 800/1117/156 808/1122/223 809/1118/221 +f 801/1119/205 809/1118/221 807/1120/222 +f 806/1113/203 814/1112/219 808/1122/223 +f 799/1121/157 807/1120/222 810/1123/224 +f 804/1116/202 812/1115/220 813/1125/225 +f 802/1124/204 810/1123/224 811/1126/226 +f 808/1122/223 816/1129/163 817/1127/227 +f 809/1118/221 817/1127/227 815/1128/228 +f 814/1112/219 821/1133/232 816/1129/163 +f 813/1125/225 812/1115/220 819/1130/229 +f 807/1120/222 815/1128/228 818/1132/231 +f 814/1112/219 813/1125/225 820/1131/230 +f 818/1132/231 815/1128/228 822/1134/238 +f 821/1133/232 820/1131/230 827/1136/234 +f 816/1129/163 823/1139/236 824/1138/237 +f 815/1128/228 817/1127/227 824/1138/237 +f 821/1133/232 828/1137/235 823/1139/236 +f 819/1130/229 826/1140/239 827/1136/234 +f 839/1141/175 840/1152/186 832/1142/176 +f 837/1144/188 838/1154/185 830/1145/174 +f 844/1147/182 837/1144/188 829/1146/184 +f 842/1149/179 843/1155/187 835/1150/181 +f 840/1152/186 841/1156/177 833/1153/178 +f 838/1154/185 839/1141/175 831/1143/173 +f 843/1155/187 844/1147/182 836/1148/183 +f 841/1156/177 842/1149/179 834/1151/180 +f 840/1152/186 848/1165/191 849/1157/192 +f 846/1158/190 847/1159/173 839/1141/175 +f 849/1157/192 850/1168/193 842/1149/179 +f 847/1159/173 848/1165/191 840/1152/186 +f 845/1160/189 846/1158/190 838/1154/185 +f 844/1147/182 851/1163/199 845/1160/189 +f 852/1161/196 853/1166/197 846/1158/190 +f 858/1162/201 852/1161/196 845/1160/189 +f 855/1164/198 856/1173/194 849/1157/192 +f 853/1166/197 854/1175/200 847/1159/173 +f 849/1157/192 856/1173/194 857/1167/195 +f 847/1159/173 854/1175/200 855/1164/198 +f 865/1169/203 859/1171/155 843/1155/187 +f 866/1170/202 860/1178/158 852/1161/196 +f 859/1171/155 866/1170/202 858/1162/201 +f 863/1172/205 864/1176/156 856/1173/194 +f 861/1174/204 862/1177/157 854/1175/200 +f 864/1176/156 865/1169/203 857/1167/195 +f 862/1177/157 863/1172/205 855/1164/198 +f 860/1178/158 861/1174/204 853/1166/197 +f 873/1179/207 872/1184/187 835/1150/181 +f 834/1151/180 871/1182/206 870/1180/208 +f 830/1145/174 868/1186/210 867/1181/211 +f 829/1146/184 867/1181/211 873/1179/207 +f 835/1150/181 872/1184/187 871/1182/206 +f 870/1180/208 869/1189/209 832/1142/176 +f 880/1183/213 879/1193/216 872/1184/187 +f 878/1185/212 877/1188/214 870/1180/208 +f 868/1186/210 875/1191/217 874/1187/218 +f 867/1181/211 874/1187/218 880/1183/213 +f 872/1184/187 879/1193/216 878/1185/212 +f 877/1188/214 876/1190/215 869/1189/209 +f 888/1192/240 887/1199/246 879/1193/216 +f 886/1194/241 885/1200/247 877/1188/214 +f 883/1195/242 882/1197/244 874/1187/218 +f 881/1196/243 883/1195/242 875/1191/217 +f 882/1197/244 888/1192/240 880/1183/213 +f 884/1198/245 881/1196/243 831/1143/173 +f 887/1199/246 886/1194/241 878/1185/212 +f 885/1200/247 884/1198/245 876/1190/215 +f 883/1195/242 891/1209/255 890/1201/162 +f 889/1202/248 891/1209/255 883/1195/242 +f 890/1201/162 895/1207/253 888/1192/240 +f 887/1199/246 894/1205/251 893/1203/249 +f 892/1204/250 889/1202/248 881/1196/243 +f 888/1192/240 895/1207/253 894/1205/251 +f 899/1206/252 896/1211/257 889/1202/248 +f 895/1207/253 902/1242/260 901/1208/254 +f 891/1209/255 898/1243/259 897/1210/256 +f 896/1211/257 898/1243/259 891/1209/255 +f 897/1210/256 902/1242/260 895/1207/253 +f 901/1208/254 900/1212/258 893/1203/249 +f 918/1213/240 917/1227/246 909/1214/155 +f 916/1216/241 915/1228/247 907/1217/156 +f 913/1219/242 912/1224/244 904/1220/158 +f 911/1222/243 913/1219/242 905/1221/204 +f 912/1224/244 918/1213/240 910/1215/202 +f 914/1225/245 911/1222/243 903/1223/157 +f 917/1227/246 916/1216/241 908/1218/203 +f 915/1228/247 914/1225/245 906/1226/205 +f 913/1219/242 921/1230/255 920/1229/162 +f 911/1222/243 919/1235/248 921/1230/255 +f 920/1229/162 925/1236/253 918/1213/240 +f 917/1227/246 924/1233/251 923/1231/249 +f 922/1232/250 919/1235/248 911/1222/243 +f 918/1213/240 925/1236/253 924/1233/251 +f 922/1232/250 929/1241/252 926/1234/257 +f 925/1236/253 932/1244/260 931/1237/254 +f 928/1238/259 927/1239/256 920/1229/162 +f 926/1234/257 928/1238/259 921/1230/255 +f 927/1239/256 932/1244/260 925/1236/253 +f 931/1237/254 930/1240/258 923/1231/249 diff --git a/src/main/resources/assets/hbm/models/mine_ap.obj b/src/main/resources/assets/hbm/models/mine_ap.obj deleted file mode 100644 index 00709083c..000000000 --- a/src/main/resources/assets/hbm/models/mine_ap.obj +++ /dev/null @@ -1,209 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'mine_ap.blend' -# www.blender.org -o Sphere -v -0.023918 0.081742 0.000000 -v -0.044194 0.068194 0.000000 -v -0.057743 0.047918 0.000000 -v -0.062500 0.024000 0.000000 -v -0.057743 0.000082 0.000000 -v -0.016913 0.081742 -0.016912 -v -0.031250 0.068194 -0.031250 -v -0.040830 0.047918 -0.040830 -v -0.044194 0.024000 -0.044194 -v -0.040830 0.000082 -0.040830 -v -0.000000 0.081742 -0.023918 -v -0.000000 0.068194 -0.044194 -v -0.000000 0.047918 -0.057742 -v -0.000000 0.024000 -0.062500 -v -0.000000 0.000082 -0.057742 -v -0.000000 0.086500 0.000000 -v 0.016912 0.081742 -0.016912 -v 0.031250 0.068194 -0.031250 -v 0.040830 0.047918 -0.040830 -v 0.044194 0.024000 -0.044194 -v 0.040830 0.000082 -0.040830 -v 0.023918 0.081742 0.000000 -v 0.044194 0.068194 0.000000 -v 0.057742 0.047918 0.000000 -v 0.062500 0.024000 0.000000 -v 0.057742 0.000082 0.000000 -v 0.016912 0.081742 0.016912 -v 0.031250 0.068194 0.031250 -v 0.040830 0.047918 0.040830 -v 0.044194 0.024000 0.044194 -v 0.040830 0.000082 0.040830 -v -0.000000 0.081742 0.023918 -v -0.000000 0.068194 0.044194 -v -0.000000 0.047918 0.057742 -v -0.000000 0.024000 0.062500 -v -0.000000 0.000082 0.057742 -v -0.016913 0.081742 0.016912 -v -0.031250 0.068194 0.031250 -v -0.040830 0.047918 0.040830 -v -0.044194 0.024000 0.044194 -v -0.040830 0.000082 0.040830 -v -0.061524 0.148194 -0.061523 -v 0.061523 0.148194 -0.061523 -v 0.061523 0.148194 0.061523 -v -0.061524 0.148194 0.061523 -v -0.005980 0.081742 0.000000 -v -0.000000 0.081742 -0.005979 -v -0.000000 0.111500 0.000000 -v 0.005979 0.081742 0.000000 -v -0.000000 0.081742 0.005979 -v -0.000000 0.086500 0.000000 -vt 0.713388 0.422365 -vt 0.372492 0.422365 -vt 0.358449 0.234785 -vt 0.613541 0.784500 -vt 0.472338 0.784500 -vt 0.412485 0.606170 -vt 0.727431 0.234785 -vt 0.372492 0.047204 -vt 0.673395 0.606170 -vt 0.713387 0.047204 -vt 0.542940 0.958853 -vt 0.074879 0.038923 -vt 0.262088 0.020580 -vt 0.262088 0.720477 -vt 0.839131 0.569078 -vt 0.877120 0.614143 -vt 0.839131 0.803203 -vt 0.837838 0.803203 -vt 0.799848 0.614143 -vt 0.837838 0.569078 -vt 0.878413 0.569078 -vt 0.916403 0.614143 -vt 0.878413 0.803204 -vt 0.917696 0.614143 -vt 0.955685 0.569078 -vt 0.955685 0.803203 -vn -0.908700 0.180700 -0.376400 -vn -0.541400 0.810300 -0.224300 -vn -0.908700 -0.180700 -0.376400 -vn -0.786200 0.525300 -0.325600 -vn -0.376400 0.180700 -0.908700 -vn -0.224300 0.810300 -0.541400 -vn -0.376400 -0.180700 -0.908700 -vn -0.325600 0.525300 -0.786200 -vn 0.376400 -0.180700 -0.908700 -vn 0.325600 0.525300 -0.786200 -vn 0.376400 0.180700 -0.908700 -vn 0.224300 0.810300 -0.541400 -vn 0.786200 0.525300 -0.325600 -vn 0.908700 0.180700 -0.376400 -vn 0.541400 0.810300 -0.224300 -vn 0.908700 -0.180700 -0.376400 -vn 0.908700 0.180700 0.376400 -vn 0.541400 0.810300 0.224300 -vn 0.908700 -0.180700 0.376400 -vn 0.786200 0.525300 0.325600 -vn 0.224300 0.810300 0.541400 -vn 0.376400 -0.180700 0.908700 -vn 0.325600 0.525300 0.786200 -vn 0.376400 0.180700 0.908700 -vn -0.376400 -0.180700 0.908700 -vn -0.325600 0.525300 0.786200 -vn -0.376400 0.180700 0.908700 -vn -0.224300 0.810300 0.541400 -vn -0.194500 0.977600 -0.080500 -vn -0.080500 0.977600 -0.194500 -vn 0.080500 0.977600 -0.194500 -vn 0.194500 0.977600 -0.080500 -vn 0.194500 0.977600 0.080500 -vn 0.080500 0.977600 0.194500 -vn -0.080500 0.977600 0.194500 -vn -0.194500 0.977600 0.080500 -vn -0.908700 0.180700 0.376400 -vn -0.541400 0.810300 0.224300 -vn -0.908700 -0.180700 0.376400 -vn -0.786200 0.525300 0.325600 -vn -0.707100 0.000000 0.707100 -vn 0.707100 0.000000 0.707100 -vn 0.707100 0.000000 -0.707100 -vn -0.707100 0.000000 -0.707100 -vn -1.000000 0.000000 -0.000000 -vn 0.000000 0.000000 1.000000 -vn 1.000000 0.000000 -0.000000 -vn 0.000000 0.000000 -1.000000 -s off -f 3/1/1 8/2/1 9/3/1 -f 1/4/2 6/5/2 7/6/2 -f 4/7/3 9/3/3 10/8/3 -f 2/9/4 7/6/4 8/2/4 -f 8/1/5 13/2/5 14/3/5 -f 6/4/6 11/5/6 12/6/6 -f 9/7/7 14/3/7 15/8/7 -f 7/9/8 12/6/8 13/2/8 -f 14/7/9 20/3/9 21/8/9 -f 12/9/10 18/6/10 19/2/10 -f 13/1/11 19/2/11 20/3/11 -f 11/4/12 17/5/12 18/6/12 -f 18/9/13 23/6/13 24/2/13 -f 19/1/14 24/2/14 25/3/14 -f 17/4/15 22/5/15 23/6/15 -f 20/7/16 25/3/16 26/8/16 -f 25/7/17 24/1/17 29/2/17 -f 23/9/18 22/4/18 27/5/18 -f 25/7/19 30/3/19 31/8/19 -f 23/9/20 28/6/20 29/2/20 -f 28/9/21 27/4/21 32/5/21 -f 31/10/22 30/7/22 35/3/22 -f 29/1/23 28/9/23 33/6/23 -f 29/1/24 34/2/24 35/3/24 -f 35/7/25 40/3/25 41/8/25 -f 33/9/26 38/6/26 39/2/26 -f 35/7/27 34/1/27 39/2/27 -f 32/4/28 37/5/28 38/6/28 -f 1/4/29 16/11/29 6/5/29 -f 6/4/30 16/11/30 11/5/30 -f 11/4/31 16/11/31 17/5/31 -f 17/4/32 16/11/32 22/5/32 -f 22/4/33 16/11/33 27/5/33 -f 27/4/34 16/11/34 32/5/34 -f 32/4/35 16/11/35 37/5/35 -f 37/4/36 16/11/36 1/5/36 -f 39/1/37 3/2/37 4/3/37 -f 37/4/38 1/5/38 2/6/38 -f 40/7/39 4/3/39 5/8/39 -f 39/1/40 38/9/40 2/6/40 -f 27/12/41 28/13/41 44/14/41 -f 17/12/42 18/13/42 43/14/42 -f 6/12/43 7/13/43 42/14/43 -f 37/12/44 38/13/44 45/14/44 -f 47/15/45 51/16/45 48/17/45 -f 48/18/46 51/19/46 49/20/46 -f 50/21/47 51/22/47 48/23/47 -f 51/24/48 46/25/48 48/26/48 -f 4/7/1 3/1/1 9/3/1 -f 2/9/2 1/4/2 7/6/2 -f 5/10/3 4/7/3 10/8/3 -f 3/1/4 2/9/4 8/2/4 -f 9/7/5 8/1/5 14/3/5 -f 7/9/6 6/4/6 12/6/6 -f 10/10/7 9/7/7 15/8/7 -f 8/1/8 7/9/8 13/2/8 -f 15/10/9 14/7/9 21/8/9 -f 13/1/10 12/9/10 19/2/10 -f 14/7/11 13/1/11 20/3/11 -f 12/9/12 11/4/12 18/6/12 -f 19/1/13 18/9/13 24/2/13 -f 20/7/14 19/1/14 25/3/14 -f 18/9/15 17/4/15 23/6/15 -f 21/10/16 20/7/16 26/8/16 -f 30/3/17 25/7/17 29/2/17 -f 28/6/18 23/9/18 27/5/18 -f 26/10/19 25/7/19 31/8/19 -f 24/1/20 23/9/20 29/2/20 -f 33/6/21 28/9/21 32/5/21 -f 36/8/22 31/10/22 35/3/22 -f 34/2/23 29/1/23 33/6/23 -f 30/7/24 29/1/24 35/3/24 -f 36/10/25 35/7/25 41/8/25 -f 34/1/26 33/9/26 39/2/26 -f 40/3/27 35/7/27 39/2/27 -f 33/9/28 32/4/28 38/6/28 -f 40/7/37 39/1/37 4/3/37 -f 38/9/38 37/4/38 2/6/38 -f 41/10/39 40/7/39 5/8/39 -f 3/2/40 39/1/40 2/6/40 diff --git a/src/main/resources/assets/hbm/models/mine_he.obj b/src/main/resources/assets/hbm/models/mine_he.obj deleted file mode 100644 index d26f0d488..000000000 --- a/src/main/resources/assets/hbm/models/mine_he.obj +++ /dev/null @@ -1,376 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'mine_he.blend' -# www.blender.org -o Cylinder -v 0.000000 0.000000 -0.250000 -v 0.000000 0.125000 -0.250000 -v 0.125000 0.000000 -0.216506 -v 0.125000 0.125000 -0.216506 -v 0.216506 0.000000 -0.125000 -v 0.216506 0.125000 -0.125000 -v 0.250000 0.000000 0.000000 -v 0.250000 0.125000 0.000000 -v 0.216506 0.000000 0.125000 -v 0.216506 0.125000 0.125000 -v 0.125000 0.000000 0.216506 -v 0.125000 0.125000 0.216506 -v 0.000000 0.000000 0.250000 -v 0.000000 0.125000 0.250000 -v -0.125000 0.000000 0.216506 -v -0.125000 0.125000 0.216506 -v -0.216506 0.000000 0.125000 -v -0.216506 0.125000 0.125000 -v -0.250000 0.000000 0.000000 -v -0.250000 0.125000 0.000000 -v -0.216506 0.000000 -0.125000 -v -0.216506 0.125000 -0.125000 -v -0.125000 0.000000 -0.216506 -v -0.125000 0.125000 -0.216506 -v 0.100000 0.125000 -0.173205 -v -0.000000 0.125000 -0.200000 -v 0.173205 0.125000 -0.100000 -v 0.200000 0.125000 0.000000 -v 0.173205 0.125000 0.100000 -v 0.100000 0.125000 0.173205 -v 0.000000 0.125000 0.200000 -v -0.100000 0.125000 0.173205 -v -0.173205 0.125000 0.100000 -v -0.200000 0.125000 0.000000 -v -0.173205 0.125000 -0.100000 -v -0.100000 0.125000 -0.173205 -v 0.100000 0.110000 -0.173205 -v -0.000000 0.110000 -0.200000 -v 0.173205 0.110000 -0.100000 -v 0.200000 0.110000 0.000000 -v 0.173205 0.110000 0.100000 -v 0.100000 0.110000 0.173205 -v 0.000000 0.110000 0.200000 -v -0.100000 0.110000 0.173205 -v -0.173205 0.110000 0.100000 -v -0.200000 0.110000 0.000000 -v -0.173205 0.110000 -0.100000 -v -0.100000 0.110000 -0.173205 -v 0.070000 0.110000 -0.121244 -v -0.000000 0.110000 -0.140000 -v 0.121244 0.110000 -0.070000 -v 0.140000 0.110000 0.000000 -v 0.121244 0.110000 0.070000 -v 0.070000 0.110000 0.121244 -v 0.000000 0.110000 0.140000 -v -0.070000 0.110000 0.121244 -v -0.121244 0.110000 0.070000 -v -0.140000 0.110000 0.000000 -v -0.121244 0.110000 -0.070000 -v -0.070000 0.110000 -0.121244 -v 0.070000 0.125000 -0.121244 -v -0.000000 0.125000 -0.140000 -v 0.121244 0.125000 -0.070000 -v 0.140000 0.125000 0.000000 -v 0.121244 0.125000 0.070000 -v 0.070000 0.125000 0.121244 -v 0.000000 0.125000 0.140000 -v -0.070000 0.125000 0.121244 -v -0.121244 0.125000 0.070000 -v -0.140000 0.125000 0.000000 -v -0.121244 0.125000 -0.070000 -v -0.070000 0.125000 -0.121244 -v 0.035000 0.125000 -0.060622 -v -0.000000 0.125000 -0.070000 -v 0.060622 0.125000 -0.035000 -v 0.070000 0.125000 0.000000 -v 0.060622 0.125000 0.035000 -v 0.035000 0.125000 0.060622 -v 0.000000 0.125000 0.070000 -v -0.035000 0.125000 0.060622 -v -0.060622 0.125000 0.035000 -v -0.070000 0.125000 0.000000 -v -0.060622 0.125000 -0.035000 -v -0.035000 0.125000 -0.060622 -v 0.021000 0.150000 -0.036373 -v -0.000000 0.150000 -0.042000 -v 0.036373 0.150000 -0.021000 -v 0.042000 0.150000 0.000000 -v 0.036373 0.150000 0.021000 -v 0.021000 0.150000 0.036373 -v 0.000000 0.150000 0.042000 -v -0.021000 0.150000 0.036373 -v -0.036373 0.150000 0.021000 -v -0.042000 0.150000 0.000000 -v -0.036373 0.150000 -0.021000 -v -0.021000 0.150000 -0.036373 -vt 0.960752 0.210383 -vt 0.779713 0.210383 -vt 0.779713 0.035513 -vt 0.942646 0.277949 -vt 0.694075 0.517821 -vt 0.018428 0.336781 -vt 0.265732 0.089478 -vt 0.942648 0.298932 -vt 0.797817 0.298932 -vt 0.797814 0.277947 -vt 0.920923 0.380009 -vt 0.819542 0.380009 -vt 0.920923 0.400994 -vt 0.819542 0.400994 -vt 0.895578 0.495584 -vt 0.844887 0.495584 -vt 0.762072 0.729031 -vt 0.791336 0.772633 -vt 0.769830 0.794139 -vt 0.761958 0.823517 -vt 0.879471 0.823517 -vt 0.850093 0.874402 -vt 0.915201 0.764875 -vt 0.871599 0.794139 -vt 0.850093 0.772633 -vt 0.879357 0.918004 -vt 0.871599 0.852895 -vt 0.709566 0.819974 -vt 0.722685 0.771011 -vt 0.873221 0.725488 -vt 0.820715 0.764761 -vt 0.931864 0.827060 -vt 0.918744 0.876024 -vt 0.709566 0.827060 -vt 0.769830 0.852895 -vt 0.768208 0.921547 -vt 0.791336 0.874402 -vt 0.820715 0.882274 -vt 0.817172 0.712368 -vt 0.918744 0.771011 -vt 0.931864 0.819974 -vt 0.762072 0.918004 -vt 0.726228 0.882160 -vt 0.824257 0.934666 -vt 0.960752 0.035512 -vt 0.446771 0.089478 -vt 0.603555 0.179997 -vt 0.694075 0.336782 -vt 0.603555 0.674605 -vt 0.446771 0.765124 -vt 0.265732 0.765124 -vt 0.108948 0.674605 -vt 0.018428 0.517820 -vt 0.108948 0.179997 -vt 0.726228 0.764875 -vt 0.879357 0.729031 -vt 0.915201 0.882160 -vt 0.824257 0.712368 -vt 0.722685 0.876024 -vt 0.817172 0.934666 -vt 0.768208 0.725488 -vt 0.873221 0.921547 -vn 0.258800 0.000000 -0.965900 -vn 0.707100 0.000000 -0.707100 -vn 0.965900 0.000000 -0.258800 -vn 0.965900 0.000000 0.258800 -vn 0.707100 0.000000 0.707100 -vn 0.258800 0.000000 0.965900 -vn -0.258800 0.000000 0.965900 -vn -0.707100 0.000000 0.707100 -vn -0.965900 0.000000 0.258800 -vn -0.965900 0.000000 -0.258800 -vn 0.000000 1.000000 0.000000 -vn -0.258800 0.000000 -0.965900 -vn -0.707100 0.000000 -0.707100 -vn 0.000000 -1.000000 0.000000 -vn -0.655700 0.734300 0.175700 -vn 0.175700 0.734300 0.655700 -vn 0.655700 0.734300 -0.175700 -vn -0.655700 0.734300 -0.175700 -vn -0.175700 0.734300 0.655700 -vn 0.655700 0.734300 0.175700 -vn -0.480000 0.734300 -0.480000 -vn 0.175700 0.734300 -0.655700 -vn -0.480000 0.734300 0.480000 -vn 0.480000 0.734300 0.480000 -vn -0.175700 0.734300 -0.655700 -vn 0.480000 0.734300 -0.480000 -s off -f 2/1/1 4/2/1 3/3/1 -f 4/1/2 6/2/2 5/3/2 -f 6/1/3 8/2/3 7/3/3 -f 8/1/4 10/2/4 9/3/4 -f 10/1/5 12/2/5 11/3/5 -f 12/1/6 14/2/6 13/3/6 -f 14/1/7 16/2/7 15/3/7 -f 16/1/8 18/2/8 17/3/8 -f 18/1/9 20/2/9 19/3/9 -f 20/1/10 22/2/10 21/3/10 -f 10/2/11 8/1/11 28/4/11 -f 24/1/12 2/2/12 1/3/12 -f 22/1/13 24/2/13 23/3/13 -f 7/5/14 19/6/14 23/7/14 -f 27/4/9 39/8/9 40/9/9 -f 24/1/11 36/4/11 26/10/11 -f 2/1/11 26/4/11 25/10/11 -f 8/2/11 6/1/11 27/4/11 -f 22/1/11 35/4/11 36/10/11 -f 4/1/11 25/4/11 27/10/11 -f 20/1/11 34/4/11 35/10/11 -f 18/1/11 33/4/11 34/10/11 -f 16/1/11 32/4/11 33/10/11 -f 14/1/11 31/4/11 32/10/11 -f 14/2/11 12/1/11 30/4/11 -f 12/2/11 10/1/11 29/4/11 -f 39/8/11 51/11/11 52/12/11 -f 34/4/4 46/8/4 47/9/4 -f 31/4/1 43/8/1 44/9/1 -f 28/4/10 40/8/10 41/9/10 -f 35/4/5 47/8/5 48/9/5 -f 26/4/7 38/8/7 37/9/7 -f 32/4/2 44/8/2 45/9/2 -f 29/4/13 41/8/13 42/9/13 -f 36/4/6 48/8/6 38/9/6 -f 25/4/8 37/8/8 39/9/8 -f 33/4/3 45/8/3 46/9/3 -f 30/4/12 42/8/12 43/9/12 -f 54/11/6 66/13/6 67/14/6 -f 46/8/11 58/11/11 59/12/11 -f 43/8/11 55/11/11 56/12/11 -f 40/8/11 52/11/11 53/12/11 -f 47/8/11 59/11/11 60/12/11 -f 37/9/11 38/8/11 50/11/11 -f 44/8/11 56/11/11 57/12/11 -f 42/9/11 41/8/11 53/11/11 -f 38/9/11 48/8/11 60/11/11 -f 37/8/11 49/11/11 51/12/11 -f 45/8/11 57/11/11 58/12/11 -f 42/8/11 54/11/11 55/12/11 -f 66/13/11 78/15/11 79/16/11 -f 51/11/3 63/13/3 64/14/3 -f 58/11/10 70/13/10 71/14/10 -f 55/11/7 67/13/7 68/14/7 -f 52/11/4 64/13/4 65/14/4 -f 59/11/13 71/13/13 72/14/13 -f 50/11/1 62/13/1 61/14/1 -f 56/11/8 68/13/8 69/14/8 -f 53/11/5 65/13/5 66/14/5 -f 60/11/12 72/13/12 62/14/12 -f 49/11/2 61/13/2 63/14/2 -f 57/11/9 69/13/9 70/14/9 -f 81/17/15 93/18/15 94/19/15 -f 63/13/11 75/15/11 76/16/11 -f 70/13/11 82/15/11 83/16/11 -f 67/13/11 79/15/11 80/16/11 -f 64/13/11 76/15/11 77/16/11 -f 71/13/11 83/15/11 84/16/11 -f 62/13/11 74/15/11 73/16/11 -f 68/13/11 80/15/11 81/16/11 -f 66/14/11 65/13/11 77/15/11 -f 62/14/11 72/13/11 84/15/11 -f 61/13/11 73/15/11 75/16/11 -f 69/13/11 81/15/11 82/16/11 -f 95/20/11 89/21/11 87/22/11 -f 78/23/16 90/24/16 91/25/16 -f 75/26/17 87/22/17 88/27/17 -f 83/28/18 82/29/18 94/19/18 -f 79/30/19 91/25/19 92/31/19 -f 77/32/20 76/33/20 88/27/20 -f 83/34/21 95/20/21 96/35/21 -f 74/36/22 86/37/22 85/38/22 -f 80/39/23 92/31/23 93/18/23 -f 78/40/24 77/41/24 89/21/24 -f 74/42/25 84/43/25 96/35/25 -f 73/44/26 85/38/26 87/22/26 -f 1/45/1 2/1/1 3/3/1 -f 3/45/2 4/1/2 5/3/2 -f 5/45/3 6/1/3 7/3/3 -f 7/45/4 8/1/4 9/3/4 -f 9/45/5 10/1/5 11/3/5 -f 11/45/6 12/1/6 13/3/6 -f 13/45/7 14/1/7 15/3/7 -f 15/45/8 16/1/8 17/3/8 -f 17/45/9 18/1/9 19/3/9 -f 19/45/10 20/1/10 21/3/10 -f 29/10/11 10/2/11 28/4/11 -f 23/45/12 24/1/12 1/3/12 -f 21/45/13 22/1/13 23/3/13 -f 23/7/14 1/46/14 3/47/14 -f 3/47/14 5/48/14 7/5/14 -f 7/5/14 9/49/14 11/50/14 -f 11/50/14 13/51/14 15/52/14 -f 15/52/14 17/53/14 19/6/14 -f 19/6/14 21/54/14 23/7/14 -f 23/7/14 3/47/14 7/5/14 -f 7/5/14 11/50/14 15/52/14 -f 15/52/14 19/6/14 7/5/14 -f 28/10/9 27/4/9 40/9/9 -f 2/2/11 24/1/11 26/10/11 -f 4/2/11 2/1/11 25/10/11 -f 28/10/11 8/2/11 27/4/11 -f 24/2/11 22/1/11 36/10/11 -f 6/2/11 4/1/11 27/10/11 -f 22/2/11 20/1/11 35/10/11 -f 20/2/11 18/1/11 34/10/11 -f 18/2/11 16/1/11 33/10/11 -f 16/2/11 14/1/11 32/10/11 -f 31/10/11 14/2/11 30/4/11 -f 30/10/11 12/2/11 29/4/11 -f 40/9/11 39/8/11 52/12/11 -f 35/10/4 34/4/4 47/9/4 -f 32/10/1 31/4/1 44/9/1 -f 29/10/10 28/4/10 41/9/10 -f 36/10/5 35/4/5 48/9/5 -f 25/10/7 26/4/7 37/9/7 -f 33/10/2 32/4/2 45/9/2 -f 30/10/13 29/4/13 42/9/13 -f 26/10/6 36/4/6 38/9/6 -f 27/10/8 25/4/8 39/9/8 -f 34/10/3 33/4/3 46/9/3 -f 31/10/12 30/4/12 43/9/12 -f 55/12/6 54/11/6 67/14/6 -f 47/9/11 46/8/11 59/12/11 -f 44/9/11 43/8/11 56/12/11 -f 41/9/11 40/8/11 53/12/11 -f 48/9/11 47/8/11 60/12/11 -f 49/12/11 37/9/11 50/11/11 -f 45/9/11 44/8/11 57/12/11 -f 54/12/11 42/9/11 53/11/11 -f 50/12/11 38/9/11 60/11/11 -f 39/9/11 37/8/11 51/12/11 -f 46/9/11 45/8/11 58/12/11 -f 43/9/11 42/8/11 55/12/11 -f 67/14/11 66/13/11 79/16/11 -f 52/12/3 51/11/3 64/14/3 -f 59/12/10 58/11/10 71/14/10 -f 56/12/7 55/11/7 68/14/7 -f 53/12/4 52/11/4 65/14/4 -f 60/12/13 59/11/13 72/14/13 -f 49/12/1 50/11/1 61/14/1 -f 57/12/8 56/11/8 69/14/8 -f 54/12/5 53/11/5 66/14/5 -f 50/12/12 60/11/12 62/14/12 -f 51/12/2 49/11/2 63/14/2 -f 58/12/9 57/11/9 70/14/9 -f 82/55/15 81/17/15 94/19/15 -f 64/14/11 63/13/11 76/16/11 -f 71/14/11 70/13/11 83/16/11 -f 68/14/11 67/13/11 80/16/11 -f 65/14/11 64/13/11 77/16/11 -f 72/14/11 71/13/11 84/16/11 -f 61/14/11 62/13/11 73/16/11 -f 69/14/11 68/13/11 81/16/11 -f 78/16/11 66/14/11 77/15/11 -f 74/16/11 62/14/11 84/15/11 -f 63/14/11 61/13/11 75/16/11 -f 70/14/11 69/13/11 82/16/11 -f 87/22/11 85/38/11 95/20/11 -f 86/37/11 96/35/11 95/20/11 -f 95/20/11 94/19/11 93/18/11 -f 93/18/11 92/31/11 95/20/11 -f 91/25/11 90/24/11 89/21/11 -f 89/21/11 88/27/11 87/22/11 -f 85/38/11 86/37/11 95/20/11 -f 95/20/11 92/31/11 91/25/11 -f 91/25/11 89/21/11 95/20/11 -f 79/56/16 78/23/16 91/25/16 -f 76/57/17 75/26/17 88/27/17 -f 95/20/18 83/28/18 94/19/18 -f 80/58/19 79/30/19 92/31/19 -f 89/21/20 77/32/20 88/27/20 -f 84/59/21 83/34/21 96/35/21 -f 73/60/22 74/36/22 85/38/22 -f 81/61/23 80/39/23 93/18/23 -f 90/24/24 78/40/24 89/21/24 -f 86/37/25 74/42/25 96/35/25 -f 75/62/26 73/44/26 87/22/26 diff --git a/src/main/resources/assets/hbm/models/particleaccelerator/beamline.obj b/src/main/resources/assets/hbm/models/particleaccelerator/beamline.obj new file mode 100644 index 000000000..9757a9ea2 --- /dev/null +++ b/src/main/resources/assets/hbm/models/particleaccelerator/beamline.obj @@ -0,0 +1,44 @@ +# Blender v2.79 (sub 0) OBJ File: 'beamline.blend' +# www.blender.org +o Cube_Cube.001 +v -0.500000 0.000000 1.500000 +v -0.500000 1.000000 1.500000 +v -0.500000 0.000000 -1.500000 +v -0.500000 1.000000 -1.500000 +v 0.500000 0.000000 1.500000 +v 0.500000 1.000000 1.500000 +v 0.500000 0.000000 -1.500000 +v 0.500000 1.000000 -1.500000 +vt 0.200000 0.500000 +vt 0.800000 0.750000 +vt 0.200000 0.750000 +vt 0.800000 0.500000 +vt 1.000000 0.250000 +vt 1.000000 0.500000 +vt 0.800000 0.250000 +vt 0.200000 0.000000 +vt 0.800000 0.000000 +vt 0.200000 0.250000 +vt 0.000000 0.500000 +vt 0.000000 0.250000 +vt 0.800000 1.000000 +vt 0.200000 1.000000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 2/1/1 3/2/1 1/3/1 +f 4/4/2 7/5/2 3/6/2 +f 8/7/3 5/8/3 7/9/3 +f 6/10/4 1/11/4 5/12/4 +f 7/13/5 1/3/5 3/2/5 +f 4/4/6 6/10/6 8/7/6 +f 2/1/1 4/4/1 3/2/1 +f 4/4/2 8/7/2 7/5/2 +f 8/7/3 6/10/3 5/8/3 +f 6/10/4 2/1/4 1/11/4 +f 7/13/5 5/14/5 1/3/5 +f 4/4/6 2/1/6 6/10/6 diff --git a/src/main/resources/assets/hbm/models/particleaccelerator/detector.obj b/src/main/resources/assets/hbm/models/particleaccelerator/detector.obj new file mode 100644 index 000000000..77c48dc3f --- /dev/null +++ b/src/main/resources/assets/hbm/models/particleaccelerator/detector.obj @@ -0,0 +1,3159 @@ +# Blender v2.79 (sub 0) OBJ File: 'detector.blend' +# www.blender.org +o Cube_Cube.001 +v -0.500000 2.000000 4.500000 +v -0.500000 3.000000 4.500000 +v -0.500000 2.000000 3.500000 +v -0.500000 3.000000 3.500000 +v 0.500000 2.000000 4.500000 +v 0.500000 3.000000 4.500000 +v 0.500000 2.000000 3.500000 +v 0.500000 3.000000 3.500000 +v 0.000000 5.000000 4.500000 +v -1.250000 4.665063 4.500000 +v -2.165063 3.750000 4.500000 +v -2.500000 2.500000 4.500000 +v -2.165063 1.250000 4.500000 +v -1.250000 0.334937 4.500000 +v -0.000000 0.000000 4.500000 +v 1.250000 0.334936 4.500000 +v 2.165063 1.249999 4.500000 +v 2.500000 2.499999 4.500000 +v 2.165064 3.749999 4.500000 +v 1.250001 4.665063 4.500000 +v 0.000000 5.000000 -4.500000 +v -1.250000 4.665063 -4.500000 +v -2.165063 3.750000 -4.500000 +v -2.500000 2.500000 -4.500000 +v -2.165063 1.250000 -4.500000 +v -1.250000 0.334937 -4.500000 +v -0.000000 0.000000 -4.500000 +v 1.250000 0.334936 -4.500000 +v 2.165063 1.249999 -4.500000 +v 2.500000 2.499999 -4.500000 +v 2.165064 3.749999 -4.500000 +v 1.250001 4.665063 -4.500000 +v 0.000000 4.000000 4.500000 +v -0.750000 3.799038 4.500000 +v -1.299038 3.250000 4.500000 +v -1.500000 2.500000 4.500000 +v -1.299038 1.750000 4.500000 +v -0.750000 1.200962 4.500000 +v 0.000000 1.000000 4.500000 +v 0.750000 1.200962 4.500000 +v 1.299038 1.750000 4.500000 +v 1.500000 2.499999 4.500000 +v 1.299038 3.249999 4.500000 +v 0.750001 3.799038 4.500000 +v 0.000000 4.000000 4.000000 +v -0.750000 3.799038 4.000000 +v -1.299038 3.250000 4.000000 +v -1.500000 2.500000 4.000000 +v -1.299038 1.750000 4.000000 +v -0.750000 1.200962 4.000000 +v 0.000000 1.000000 4.000000 +v 0.750000 1.200962 4.000000 +v 1.299038 1.750000 4.000000 +v 1.500000 2.499999 4.000000 +v 1.299038 3.249999 4.000000 +v 0.750001 3.799038 4.000000 +v 0.000000 3.500000 4.000000 +v -0.500000 3.366025 4.000000 +v -0.866025 3.000000 4.000000 +v -1.000000 2.500000 4.000000 +v -0.866025 2.000000 4.000000 +v -0.500000 1.633975 4.000000 +v 0.000000 1.500000 4.000000 +v 0.500000 1.633975 4.000000 +v 0.866025 2.000000 4.000000 +v 1.000000 2.500000 4.000000 +v 0.866025 3.000000 4.000000 +v 0.500000 3.366025 4.000000 +v 0.000000 3.500000 3.500000 +v -0.500000 3.366025 3.500000 +v -0.866025 3.000000 3.500000 +v -1.000000 2.500000 3.500000 +v -0.866025 2.000000 3.500000 +v -0.500000 1.633975 3.500000 +v 0.000000 1.500000 3.500000 +v 0.500000 1.633975 3.500000 +v 0.866025 2.000000 3.500000 +v 1.000000 2.500000 3.500000 +v 0.866025 3.000000 3.500000 +v 0.500000 3.366025 3.500000 +v 1.500000 0.000000 4.500000 +v 2.500000 0.000000 4.500000 +v 1.500000 0.000000 3.500000 +v 2.500000 0.000000 3.500000 +v 1.500000 0.250000 3.500000 +v 1.500000 0.250000 4.500000 +v 2.500000 0.250000 4.500000 +v 2.500000 0.250000 3.500000 +v 1.625000 0.250000 3.625000 +v 1.625000 0.250000 4.375000 +v 2.375000 0.250000 4.375000 +v 2.375000 0.250000 3.625000 +v 0.875000 1.000000 3.625000 +v 0.875000 1.000000 4.375000 +v 1.625000 1.000000 4.375000 +v 1.625000 1.000000 3.625000 +v -2.375000 0.250000 3.625000 +v -2.375000 0.250000 4.375000 +v -1.625000 0.250000 4.375000 +v -1.625000 0.250000 3.625000 +v -1.625000 1.000000 3.625000 +v -1.625000 1.000000 4.375000 +v -0.875000 1.000000 4.375000 +v -0.875000 1.000000 3.625000 +v -0.388228 3.948889 4.125000 +v -0.302852 3.971766 4.161612 +v -0.267488 3.981241 4.250000 +v -0.302852 3.971766 4.338388 +v -0.388228 3.948889 4.375000 +v -0.473605 3.926012 4.338388 +v -0.508969 3.916536 4.250000 +v -0.473605 3.926012 4.161612 +v -0.226466 3.345185 4.125000 +v -0.141090 3.368062 4.161612 +v -0.105726 3.377537 4.250000 +v -0.141090 3.368062 4.338388 +v -0.226466 3.345185 4.375000 +v -0.311843 3.322309 4.338388 +v -0.347207 3.312833 4.250000 +v -0.311843 3.322309 4.161612 +v -0.134389 3.343056 4.150888 +v -0.082849 3.292161 4.213388 +v -0.102037 3.222315 4.275888 +v -0.180713 3.174432 4.301777 +v -0.272790 3.176562 4.275888 +v -0.324331 3.227456 4.213388 +v -0.305142 3.297302 4.150888 +v -0.131614 3.332698 4.125000 +v -0.073373 3.256797 4.125000 +v -0.085861 3.161944 4.125000 +v -0.161762 3.103703 4.125000 +v -0.256614 3.116191 4.125000 +v -0.314855 3.192092 4.125000 +v -0.302367 3.286944 4.125000 +v -0.226466 3.345185 3.500000 +v -0.131614 3.332698 3.500000 +v -0.073373 3.256797 3.500000 +v -0.085861 3.161944 3.500000 +v -0.161762 3.103703 3.500000 +v -0.256614 3.116191 3.500000 +v -0.314855 3.192092 3.500000 +v -0.302367 3.286944 3.500000 +v 1.750000 0.250000 4.250000 +v 2.250000 0.250000 4.250000 +v 1.750000 0.250000 3.750000 +v 2.250000 0.250000 3.750000 +v 1.750000 1.750000 4.250000 +v 2.250000 1.750000 4.250000 +v 1.750000 1.750000 3.750000 +v 2.250000 1.750000 3.750000 +v -2.250000 0.250000 4.250000 +v -1.750000 0.250000 4.250000 +v -2.250000 0.250000 3.750000 +v -1.750000 0.250000 3.750000 +v -2.250000 1.750000 4.250000 +v -1.750000 1.750000 4.250000 +v -2.250000 1.750000 3.750000 +v -1.750000 1.750000 3.750000 +v 2.121321 4.267766 3.500000 +v 1.767767 4.621320 3.500000 +v 2.121321 4.267766 -3.500000 +v 1.767767 4.621320 -3.500000 +v 2.474874 4.621320 3.500000 +v 2.121321 4.974873 3.500000 +v 2.474874 4.621320 -3.500000 +v 2.121321 4.974873 -3.500000 +v 2.121321 4.267766 4.000000 +v 1.767767 4.621320 4.000000 +v 1.767767 4.621320 -4.000000 +v 2.121321 4.267766 -4.000000 +v 1.856155 4.002601 3.500000 +v 1.502602 4.356155 3.500000 +v 1.502602 4.356155 -3.500000 +v 1.856155 4.002601 -3.500000 +v 1.856155 4.002601 4.000000 +v 1.502602 4.356155 4.000000 +v 1.502602 4.356155 -4.000000 +v 1.856155 4.002601 -4.000000 +v -1.767766 4.621321 3.500000 +v -2.121320 4.267767 3.500000 +v -1.767766 4.621321 -3.500000 +v -2.121320 4.267767 -3.500000 +v -2.121320 4.974874 3.500000 +v -2.474872 4.621321 3.500000 +v -2.121320 4.974874 -3.500000 +v -2.474872 4.621321 -3.500000 +v -1.767766 4.621321 4.000000 +v -2.121320 4.267767 4.000000 +v -2.121320 4.267767 -3.999999 +v -1.767766 4.621321 -3.999999 +v -1.502601 4.356155 3.500000 +v -1.856155 4.002602 3.500000 +v -1.856155 4.002602 -3.500000 +v -1.502601 4.356155 -3.500000 +v -1.502601 4.356155 4.000000 +v -1.856155 4.002602 4.000000 +v -1.856155 4.002602 -3.999999 +v -1.502601 4.356155 -3.999999 +v 0.388228 1.051111 4.125000 +v 0.302852 1.028234 4.161612 +v 0.267487 1.018759 4.250000 +v 0.302852 1.028234 4.338388 +v 0.388228 1.051111 4.375000 +v 0.473605 1.073988 4.338388 +v 0.508969 1.083464 4.250000 +v 0.473605 1.073988 4.161612 +v 0.226466 1.654815 4.125000 +v 0.141090 1.631938 4.161612 +v 0.105726 1.622463 4.250000 +v 0.141090 1.631938 4.338388 +v 0.226466 1.654815 4.375000 +v 0.311843 1.677691 4.338388 +v 0.347207 1.687167 4.250000 +v 0.311843 1.677691 4.161612 +v 0.134389 1.656944 4.150888 +v 0.082849 1.707839 4.213388 +v 0.102037 1.777685 4.275888 +v 0.180713 1.825568 4.301777 +v 0.272790 1.823438 4.275888 +v 0.324331 1.772544 4.213388 +v 0.305142 1.702698 4.150888 +v 0.131614 1.667302 4.125000 +v 0.073373 1.743203 4.125000 +v 0.085861 1.838056 4.125000 +v 0.161762 1.896297 4.125000 +v 0.256614 1.883809 4.125000 +v 0.314855 1.807908 4.125000 +v 0.302367 1.713056 4.125000 +v 0.226466 1.654815 3.500000 +v 0.131614 1.667302 3.500000 +v 0.073373 1.743203 3.500000 +v 0.085861 1.838056 3.500000 +v 0.161762 1.896297 3.500000 +v 0.256614 1.883809 3.500000 +v 0.314855 1.807908 3.500000 +v 0.302367 1.713056 3.500000 +v 1.448889 2.888228 4.125000 +v 1.471766 2.802852 4.161612 +v 1.481241 2.767488 4.250000 +v 1.471766 2.802852 4.338388 +v 1.448889 2.888228 4.375000 +v 1.426012 2.973605 4.338388 +v 1.416536 3.008969 4.250000 +v 1.426012 2.973605 4.161612 +v 0.845185 2.726466 4.125000 +v 0.868062 2.641090 4.161612 +v 0.877537 2.605726 4.250000 +v 0.868062 2.641090 4.338388 +v 0.845185 2.726466 4.375000 +v 0.822309 2.811843 4.338388 +v 0.812833 2.847207 4.250000 +v 0.822309 2.811843 4.161612 +v 0.843056 2.634389 4.150888 +v 0.792161 2.582849 4.213388 +v 0.722315 2.602037 4.275888 +v 0.674432 2.680713 4.301777 +v 0.676562 2.772790 4.275888 +v 0.727456 2.824331 4.213388 +v 0.797302 2.805142 4.150888 +v 0.832698 2.631614 4.125000 +v 0.756797 2.573373 4.125000 +v 0.661944 2.585861 4.125000 +v 0.603703 2.661762 4.125000 +v 0.616191 2.756614 4.125000 +v 0.692092 2.814855 4.125000 +v 0.786944 2.802367 4.125000 +v 0.845185 2.726466 3.500000 +v 0.832698 2.631614 3.500000 +v 0.756797 2.573373 3.500000 +v 0.661944 2.585861 3.500000 +v 0.603703 2.661762 3.500000 +v 0.616191 2.756614 3.500000 +v 0.692092 2.814855 3.500000 +v 0.786944 2.802367 3.500000 +v -1.448889 2.111772 4.125000 +v -1.471766 2.197149 4.161612 +v -1.481241 2.232513 4.250000 +v -1.471766 2.197149 4.338388 +v -1.448889 2.111772 4.375000 +v -1.426012 2.026395 4.338388 +v -1.416536 1.991031 4.250000 +v -1.426012 2.026395 4.161612 +v -0.845185 2.273534 4.125000 +v -0.868062 2.358910 4.161612 +v -0.877537 2.394274 4.250000 +v -0.868062 2.358910 4.338388 +v -0.845185 2.273534 4.375000 +v -0.822309 2.188157 4.338388 +v -0.812833 2.152793 4.250000 +v -0.822309 2.188157 4.161612 +v -0.843056 2.365611 4.150888 +v -0.792161 2.417151 4.213388 +v -0.722315 2.397963 4.275888 +v -0.674432 2.319287 4.301777 +v -0.676562 2.227210 4.275888 +v -0.727456 2.175669 4.213388 +v -0.797303 2.194858 4.150888 +v -0.832698 2.368386 4.125000 +v -0.756797 2.426627 4.125000 +v -0.661944 2.414139 4.125000 +v -0.603703 2.338238 4.125000 +v -0.616191 2.243386 4.125000 +v -0.692092 2.185145 4.125000 +v -0.786944 2.197633 4.125000 +v -0.845185 2.273534 3.500000 +v -0.832698 2.368386 3.500000 +v -0.756797 2.426627 3.500000 +v -0.661944 2.414139 3.500000 +v -0.603703 2.338238 3.500000 +v -0.616191 2.243386 3.500000 +v -0.692092 2.185145 3.500000 +v -0.786944 2.197633 3.500000 +v 0.388229 3.948889 4.125000 +v 0.473606 3.926012 4.161612 +v 0.508970 3.916536 4.250000 +v 0.473606 3.926012 4.338388 +v 0.388229 3.948889 4.375000 +v 0.302852 3.971766 4.338388 +v 0.267488 3.981241 4.250000 +v 0.302852 3.971766 4.161612 +v 0.226467 3.345185 4.125000 +v 0.311843 3.322309 4.161612 +v 0.347207 3.312832 4.250000 +v 0.311843 3.322309 4.338388 +v 0.226467 3.345185 4.375000 +v 0.141090 3.368062 4.338388 +v 0.105726 3.377537 4.250000 +v 0.141090 3.368062 4.161612 +v 0.305143 3.297302 4.150888 +v 0.324331 3.227456 4.213388 +v 0.272791 3.176561 4.275888 +v 0.180714 3.174432 4.301777 +v 0.102038 3.222314 4.275888 +v 0.082849 3.292161 4.213388 +v 0.134390 3.343055 4.150888 +v 0.302368 3.286944 4.125000 +v 0.314855 3.192092 4.125000 +v 0.256615 3.116191 4.125000 +v 0.161762 3.103703 4.125000 +v 0.085862 3.161944 4.125000 +v 0.073374 3.256796 4.125000 +v 0.131615 3.332697 4.125000 +v 0.226467 3.345185 3.500000 +v 0.302368 3.286944 3.500000 +v 0.314855 3.192092 3.500000 +v 0.256615 3.116191 3.500000 +v 0.161762 3.103703 3.500000 +v 0.085862 3.161944 3.500000 +v 0.073374 3.256796 3.500000 +v 0.131615 3.332697 3.500000 +v -0.388229 1.051111 4.125000 +v -0.473606 1.073988 4.161612 +v -0.508970 1.083464 4.250000 +v -0.473606 1.073988 4.338388 +v -0.388229 1.051111 4.375000 +v -0.302852 1.028235 4.338388 +v -0.267488 1.018759 4.250000 +v -0.302852 1.028235 4.161612 +v -0.226467 1.654815 4.125000 +v -0.311843 1.677692 4.161612 +v -0.347207 1.687168 4.250000 +v -0.311843 1.677692 4.338388 +v -0.226467 1.654815 4.375000 +v -0.141090 1.631938 4.338388 +v -0.105726 1.622463 4.250000 +v -0.141090 1.631938 4.161612 +v -0.305143 1.702698 4.150888 +v -0.324331 1.772544 4.213388 +v -0.272791 1.823439 4.275888 +v -0.180714 1.825568 4.301777 +v -0.102038 1.777686 4.275888 +v -0.082849 1.707839 4.213388 +v -0.134390 1.656945 4.150888 +v -0.302368 1.713056 4.125000 +v -0.314855 1.807908 4.125000 +v -0.256615 1.883809 4.125000 +v -0.161762 1.896297 4.125000 +v -0.085862 1.838056 4.125000 +v -0.073374 1.743204 4.125000 +v -0.131615 1.667303 4.125000 +v -0.226467 1.654815 3.500000 +v -0.302368 1.713056 3.500000 +v -0.314855 1.807908 3.500000 +v -0.256615 1.883809 3.500000 +v -0.161762 1.896297 3.500000 +v -0.085862 1.838056 3.500000 +v -0.073374 1.743204 3.500000 +v -0.131615 1.667303 3.500000 +v 1.448889 2.111771 4.125000 +v 1.426012 2.026394 4.161612 +v 1.416536 1.991030 4.250000 +v 1.426012 2.026394 4.338388 +v 1.448889 2.111771 4.375000 +v 1.471765 2.197148 4.338388 +v 1.481241 2.232512 4.250000 +v 1.471765 2.197148 4.161612 +v 0.845185 2.273533 4.125000 +v 0.822308 2.188157 4.161612 +v 0.812832 2.152792 4.250000 +v 0.822308 2.188157 4.338388 +v 0.845185 2.273533 4.375000 +v 0.868062 2.358910 4.338388 +v 0.877537 2.394274 4.250000 +v 0.868062 2.358910 4.161612 +v 0.797302 2.194857 4.150888 +v 0.727456 2.175669 4.213388 +v 0.676561 2.227209 4.275888 +v 0.674432 2.319286 4.301777 +v 0.722314 2.397962 4.275888 +v 0.792161 2.417151 4.213388 +v 0.843055 2.365610 4.150888 +v 0.786944 2.197632 4.125000 +v 0.692092 2.185145 4.125000 +v 0.616191 2.243385 4.125000 +v 0.603703 2.338238 4.125000 +v 0.661944 2.414138 4.125000 +v 0.756796 2.426626 4.125000 +v 0.832697 2.368386 4.125000 +v 0.845185 2.273533 3.500000 +v 0.786944 2.197632 3.500000 +v 0.692092 2.185145 3.500000 +v 0.616191 2.243385 3.500000 +v 0.603703 2.338238 3.500000 +v 0.661944 2.414138 3.500000 +v 0.756796 2.426626 3.500000 +v 0.832697 2.368386 3.500000 +v -1.448889 2.888229 4.125000 +v -1.426012 2.973606 4.161612 +v -1.416536 3.008970 4.250000 +v -1.426012 2.973606 4.338388 +v -1.448889 2.888229 4.375000 +v -1.471765 2.802852 4.338388 +v -1.481241 2.767488 4.250000 +v -1.471765 2.802852 4.161612 +v -0.845185 2.726467 4.125000 +v -0.822309 2.811843 4.161612 +v -0.812832 2.847208 4.250000 +v -0.822309 2.811843 4.338388 +v -0.845185 2.726467 4.375000 +v -0.868062 2.641090 4.338388 +v -0.877537 2.605726 4.250000 +v -0.868062 2.641090 4.161612 +v -0.797302 2.805143 4.150888 +v -0.727456 2.824331 4.213388 +v -0.676561 2.772791 4.275888 +v -0.674432 2.680714 4.301777 +v -0.722314 2.602038 4.275888 +v -0.792161 2.582849 4.213388 +v -0.843055 2.634390 4.150888 +v -0.786944 2.802368 4.125000 +v -0.692092 2.814855 4.125000 +v -0.616191 2.756615 4.125000 +v -0.603703 2.661762 4.125000 +v -0.661944 2.585862 4.125000 +v -0.756797 2.573374 4.125000 +v -0.832697 2.631614 4.125000 +v -0.845185 2.726467 3.500000 +v -0.786944 2.802368 3.500000 +v -0.692092 2.814855 3.500000 +v -0.616191 2.756615 3.500000 +v -0.603703 2.661762 3.500000 +v -0.661944 2.585862 3.500000 +v -0.756797 2.573374 3.500000 +v -0.832697 2.631614 3.500000 +v 1.060660 3.560660 4.125000 +v 1.123160 3.498160 4.161612 +v 1.149049 3.472272 4.250000 +v 1.123160 3.498160 4.338388 +v 1.060660 3.560660 4.375000 +v 0.998160 3.623160 4.338388 +v 0.972272 3.649049 4.250000 +v 0.998160 3.623160 4.161612 +v 0.618719 3.118718 4.125000 +v 0.681219 3.056218 4.161612 +v 0.707107 3.030330 4.250000 +v 0.681219 3.056218 4.338388 +v 0.618719 3.118718 4.375000 +v 0.556219 3.181218 4.338388 +v 0.530330 3.207107 4.250000 +v 0.556219 3.181218 4.161612 +v 0.662913 3.037912 4.150888 +v 0.644607 2.967830 4.213388 +v 0.574524 2.949524 4.275888 +v 0.493719 2.993718 4.301777 +v 0.449524 3.074524 4.275888 +v 0.467830 3.144607 4.213388 +v 0.537913 3.162912 4.150888 +v 0.655330 3.030330 4.125000 +v 0.618719 2.941941 4.125000 +v 0.530330 2.905330 4.125000 +v 0.441942 2.941941 4.125000 +v 0.405331 3.030330 4.125000 +v 0.441942 3.118718 4.125000 +v 0.530330 3.155330 4.125000 +v 0.618719 3.118718 3.500000 +v 0.655330 3.030330 3.500000 +v 0.618719 2.941941 3.500000 +v 0.530330 2.905330 3.500000 +v 0.441942 2.941941 3.500000 +v 0.405331 3.030330 3.500000 +v 0.441942 3.118718 3.500000 +v 0.530330 3.155330 3.500000 +v -1.060660 1.439340 4.125000 +v -1.123160 1.501840 4.161612 +v -1.149049 1.527729 4.250000 +v -1.123160 1.501840 4.338388 +v -1.060660 1.439340 4.375000 +v -0.998160 1.376840 4.338388 +v -0.972272 1.350952 4.250000 +v -0.998160 1.376840 4.161612 +v -0.618719 1.881282 4.125000 +v -0.681219 1.943782 4.161612 +v -0.707107 1.969670 4.250000 +v -0.681219 1.943782 4.338388 +v -0.618719 1.881282 4.375000 +v -0.556219 1.818782 4.338388 +v -0.530330 1.792894 4.250000 +v -0.556219 1.818782 4.161612 +v -0.662913 1.962088 4.150888 +v -0.644607 2.032170 4.213388 +v -0.574525 2.050476 4.275888 +v -0.493719 2.006282 4.301777 +v -0.449525 1.925476 4.275888 +v -0.467830 1.855393 4.213388 +v -0.537913 1.837088 4.150888 +v -0.655330 1.969670 4.125000 +v -0.618719 2.058059 4.125000 +v -0.530330 2.094670 4.125000 +v -0.441942 2.058059 4.125000 +v -0.405331 1.969670 4.125000 +v -0.441942 1.881282 4.125000 +v -0.530330 1.844670 4.125000 +v -0.618719 1.881282 3.500000 +v -0.655330 1.969670 3.500000 +v -0.618719 2.058059 3.500000 +v -0.530330 2.094670 3.500000 +v -0.441942 2.058059 3.500000 +v -0.405331 1.969670 3.500000 +v -0.441942 1.881282 3.500000 +v -0.530330 1.844670 3.500000 +v 1.060660 1.439340 4.125000 +v 0.998160 1.376839 4.161612 +v 0.972272 1.350951 4.250000 +v 0.998160 1.376839 4.338388 +v 1.060660 1.439340 4.375000 +v 1.123160 1.501840 4.338388 +v 1.149049 1.527728 4.250000 +v 1.123160 1.501840 4.161612 +v 0.618718 1.881281 4.125000 +v 0.556218 1.818781 4.161612 +v 0.530330 1.792893 4.250000 +v 0.556218 1.818781 4.338388 +v 0.618718 1.881281 4.375000 +v 0.681218 1.943781 4.338388 +v 0.707107 1.969670 4.250000 +v 0.681218 1.943781 4.161612 +v 0.537912 1.837087 4.150888 +v 0.467830 1.855393 4.213388 +v 0.449524 1.925475 4.275888 +v 0.493718 2.006281 4.301777 +v 0.574524 2.050476 4.275888 +v 0.644607 2.032170 4.213388 +v 0.662912 1.962087 4.150888 +v 0.530330 1.844670 4.125000 +v 0.441941 1.881281 4.125000 +v 0.405330 1.969670 4.125000 +v 0.441941 2.058058 4.125000 +v 0.530330 2.094669 4.125000 +v 0.618718 2.058058 4.125000 +v 0.655330 1.969670 4.125000 +v 0.618718 1.881281 3.500000 +v 0.530330 1.844670 3.500000 +v 0.441941 1.881281 3.500000 +v 0.405330 1.969670 3.500000 +v 0.441941 2.058058 3.500000 +v 0.530330 2.094669 3.500000 +v 0.618718 2.058058 3.500000 +v 0.655330 1.969670 3.500000 +v -1.060660 3.560660 4.125000 +v -0.998160 3.623160 4.161612 +v -0.972271 3.649049 4.250000 +v -0.998160 3.623160 4.338388 +v -1.060660 3.560660 4.375000 +v -1.123160 3.498160 4.338388 +v -1.149048 3.472272 4.250000 +v -1.123160 3.498160 4.161612 +v -0.618718 3.118719 4.125000 +v -0.556218 3.181219 4.161612 +v -0.530330 3.207107 4.250000 +v -0.556218 3.181219 4.338388 +v -0.618718 3.118719 4.375000 +v -0.681218 3.056219 4.338388 +v -0.707107 3.030330 4.250000 +v -0.681218 3.056219 4.161612 +v -0.537912 3.162913 4.150888 +v -0.467830 3.144607 4.213388 +v -0.449524 3.074525 4.275888 +v -0.493718 2.993719 4.301777 +v -0.574524 2.949524 4.275888 +v -0.644607 2.967830 4.213388 +v -0.662912 3.037913 4.150888 +v -0.530330 3.155330 4.125000 +v -0.441941 3.118719 4.125000 +v -0.405330 3.030330 4.125000 +v -0.441941 2.941942 4.125000 +v -0.530330 2.905331 4.125000 +v -0.618718 2.941942 4.125000 +v -0.655330 3.030330 4.125000 +v -0.618718 3.118719 3.500000 +v -0.530330 3.155330 3.500000 +v -0.441941 3.118719 3.500000 +v -0.405330 3.030330 3.500000 +v -0.441941 2.941942 3.500000 +v -0.530330 2.905331 3.500000 +v -0.618718 2.941942 3.500000 +v -0.655330 3.030330 3.500000 +v 1.500000 0.000000 0.500000 +v 2.500000 0.000000 0.500000 +v 1.500000 0.000000 -0.500000 +v 2.500000 0.000000 -0.500000 +v 1.500000 0.250000 -0.500000 +v 1.500000 0.250000 0.500000 +v 2.500000 0.250000 0.500000 +v 2.500000 0.250000 -0.500000 +v 1.500000 0.000000 -3.500000 +v 2.500000 0.000000 -3.500000 +v 1.500000 0.000000 -4.500000 +v 2.500000 0.000000 -4.500000 +v 1.500000 0.250000 -4.500000 +v 1.500000 0.250000 -3.500000 +v 2.500000 0.250000 -3.500000 +v 2.500000 0.250000 -4.500000 +v -2.500000 0.000000 4.500000 +v -1.500000 0.000000 4.500000 +v -2.500000 0.000000 3.500000 +v -1.500000 0.000000 3.500000 +v -2.500000 0.250000 3.500000 +v -2.500000 0.250000 4.500000 +v -1.500000 0.250000 4.500000 +v -1.500000 0.250000 3.500000 +v -2.500000 0.000000 0.500000 +v -1.500000 0.000000 0.500000 +v -2.500000 0.000000 -0.500000 +v -1.500000 0.000000 -0.500000 +v -2.500000 0.250000 -0.500000 +v -2.500000 0.250000 0.500000 +v -1.500000 0.250000 0.500000 +v -1.500000 0.250000 -0.500000 +v -2.500000 0.000000 -3.500000 +v -1.500000 0.000000 -3.500000 +v -2.500000 0.000000 -4.500000 +v -1.500000 0.000000 -4.500000 +v -2.500000 0.250000 -4.500000 +v -2.500000 0.250000 -3.500000 +v -1.500000 0.250000 -3.500000 +v -1.500000 0.250000 -4.500000 +v 1.625000 0.250000 -0.375000 +v 1.625000 0.250000 0.375000 +v 2.375000 0.250000 0.375000 +v 2.375000 0.250000 -0.375000 +v 0.875000 1.000000 -0.375000 +v 0.875000 1.000000 0.375000 +v 1.625000 1.000000 0.375000 +v 1.625000 1.000000 -0.375000 +v -2.375000 0.250000 -0.375000 +v -2.375000 0.250000 0.375000 +v -1.625000 0.250000 0.375000 +v -1.625000 0.250000 -0.375000 +v -1.625000 1.000000 -0.375000 +v -1.625000 1.000000 0.375000 +v -0.875000 1.000000 0.375000 +v -0.875000 1.000000 -0.375000 +v 1.750000 0.250000 0.250000 +v 2.250000 0.250000 0.250000 +v 1.750000 0.250000 -0.250000 +v 2.250000 0.250000 -0.250000 +v 1.750000 1.750000 0.250000 +v 2.250000 1.750000 0.250000 +v 1.750000 1.750000 -0.250000 +v 2.250000 1.750000 -0.250000 +v -2.250000 0.250000 0.250000 +v -1.750000 0.250000 0.250000 +v -2.250000 0.250000 -0.250000 +v -1.750000 0.250000 -0.250000 +v -2.250000 1.750000 0.250000 +v -1.750000 1.750000 0.250000 +v -2.250000 1.750000 -0.250000 +v -1.750000 1.750000 -0.250000 +v 1.625000 0.250000 -4.375000 +v 1.625000 0.250000 -3.625000 +v 2.375000 0.250000 -3.625000 +v 2.375000 0.250000 -4.375000 +v 0.875000 1.000000 -4.375000 +v 0.875000 1.000000 -3.625000 +v 1.625000 1.000000 -3.625000 +v 1.625000 1.000000 -4.375000 +v -2.375000 0.250000 -4.375000 +v -2.375000 0.250000 -3.625000 +v -1.625000 0.250000 -3.625000 +v -1.625000 0.250000 -4.375000 +v -1.625000 1.000000 -4.375000 +v -1.625000 1.000000 -3.625000 +v -0.875000 1.000000 -3.625000 +v -0.875000 1.000000 -4.375000 +v 1.750000 0.250000 -3.750000 +v 2.250000 0.250000 -3.750000 +v 1.750000 0.250000 -4.250000 +v 2.250000 0.250000 -4.250000 +v 1.750000 1.750000 -3.750000 +v 2.250000 1.750000 -3.750000 +v 1.750000 1.750000 -4.250000 +v 2.250000 1.750000 -4.250000 +v -2.250000 0.250000 -3.750000 +v -1.750000 0.250000 -3.750000 +v -2.250000 0.250000 -4.250000 +v -1.750000 0.250000 -4.250000 +v -2.250000 1.750000 -3.750000 +v -1.750000 1.750000 -3.750000 +v -2.250000 1.750000 -4.250000 +v -1.750000 1.750000 -4.250000 +vt 0.878788 0.411765 +vt 0.818182 0.352941 +vt 0.878788 0.352941 +vt 0.979699 0.073530 +vt 0.979699 0.220587 +vt 0.717270 0.220587 +vt 1.000000 0.411765 +vt 0.939394 0.352941 +vt 1.000000 0.352941 +vt 0.939394 0.411765 +vt 0.939394 0.294118 +vt 0.878788 0.294118 +vt 0.878788 0.470588 +vt 0.939394 0.470588 +vt 0.696970 0.073529 +vt 0.151515 0.147059 +vt 0.151515 0.073529 +vt 0.696970 0.735294 +vt 0.151515 0.808824 +vt 0.151515 0.735294 +vt 0.696970 0.367647 +vt 0.151515 0.441176 +vt 0.151515 0.367647 +vt 0.696970 0.514706 +vt 0.151515 0.588235 +vt 0.151515 0.514706 +vt 0.696970 0.147059 +vt 0.151515 0.220588 +vt 0.696970 0.808824 +vt 0.151515 0.882353 +vt 0.696970 0.588235 +vt 0.151515 0.661765 +vt 0.696970 0.220588 +vt 0.151515 0.294118 +vt 0.696970 -0.000000 +vt 0.151515 0.000000 +vt 0.696970 0.661765 +vt 0.696970 0.294118 +vt 0.696970 0.441176 +vt 0.090909 0.161765 +vt 0.090909 0.235294 +vt 0.090909 0.352941 +vt 0.090909 0.308824 +vt 0.090909 0.382353 +vt 0.090909 0.455882 +vt 0.090909 0.573529 +vt 0.090909 0.529412 +vt 0.090909 0.602941 +vt 0.090909 0.676471 +vt 0.090909 0.794118 +vt 0.090909 0.750000 +vt 0.090909 0.823529 +vt 0.090909 0.014706 +vt 0.090909 0.088235 +vt 0.090909 0.867647 +vt 0.060606 0.823529 +vt 0.090909 0.647059 +vt 0.060606 0.602941 +vt 0.090909 0.279412 +vt 0.060606 0.235294 +vt 0.090909 0.058824 +vt 0.060606 0.014706 +vt 0.090909 0.720588 +vt 0.060606 0.676471 +vt 0.060606 0.308824 +vt 0.090909 0.500000 +vt 0.060606 0.455882 +vt 0.090909 0.132353 +vt 0.060606 0.088235 +vt 0.060606 0.750000 +vt 0.090909 0.426471 +vt 0.060606 0.382353 +vt 0.060606 0.529412 +vt 0.090909 0.205882 +vt 0.060606 0.161765 +vt 0.060606 0.058824 +vt 0.030303 0.022059 +vt 0.060606 0.132353 +vt 0.030303 0.095588 +vt 0.030303 0.198529 +vt 0.030303 0.169118 +vt 0.060606 0.279412 +vt 0.030303 0.242647 +vt 0.060606 0.352941 +vt 0.030303 0.316176 +vt 0.060606 0.426471 +vt 0.030303 0.389706 +vt 0.060606 0.500000 +vt 0.030303 0.463235 +vt 0.060606 0.573529 +vt 0.030303 0.536765 +vt 0.060606 0.647059 +vt 0.030303 0.610294 +vt 0.030303 0.713235 +vt 0.030303 0.683824 +vt 0.030303 0.786765 +vt 0.030303 0.757353 +vt 0.060606 0.867647 +vt 0.030303 0.830882 +vt 0.000000 0.169118 +vt 0.030303 0.860294 +vt 0.000000 0.830882 +vt 0.030303 0.639706 +vt -0.000000 0.610294 +vt 0.030303 0.272059 +vt 0.000000 0.242647 +vt 0.030303 0.051471 +vt -0.000000 0.022059 +vt -0.000000 0.683824 +vt 0.030303 0.345588 +vt -0.000000 0.316176 +vt 0.030303 0.492647 +vt 0.000000 0.463235 +vt 0.030303 0.125000 +vt -0.000000 0.095588 +vt -0.000000 0.757353 +vt 0.030303 0.419118 +vt 0.000000 0.389706 +vt 0.030303 0.566176 +vt -0.000000 0.536765 +vt 0.810054 0.382349 +vt 0.757576 0.411756 +vt 0.705097 0.323534 +vt 0.772727 0.411765 +vt 0.833333 0.470588 +vt 0.772727 0.470588 +vt 0.833333 0.485294 +vt 0.772727 0.544118 +vt 0.772727 0.485294 +vt 0.848485 0.544118 +vt 0.848485 0.485294 +vt 0.757576 0.485294 +vt 0.757576 0.544118 +vt 0.772727 0.558824 +vt 0.833333 0.544118 +vt 0.833333 0.558824 +vt 0.878788 0.558824 +vt 0.833333 0.602941 +vt 0.833333 0.558824 +vt 0.742424 0.558824 +vt 0.787879 0.602941 +vt 0.742424 0.602941 +vt 0.787879 0.558824 +vt 0.696970 0.602941 +vt 0.696970 0.558824 +vt 0.833333 0.558824 +vt 0.878788 0.602941 +vt 0.833333 0.602941 +vt 0.787879 0.558824 +vt 0.742424 0.602941 +vt 0.742424 0.558824 +vt 0.787879 0.602941 +vt 0.696970 0.602941 +vt 0.696970 0.558824 +vt 0.787879 0.691176 +vt 0.757576 0.602941 +vt 0.787879 0.602941 +vt 0.727273 0.691176 +vt 0.696970 0.602941 +vt 0.727273 0.602941 +vt 0.757576 0.691176 +vt 0.727273 0.691176 +vt 0.696970 0.602941 +vt 0.727273 0.602941 +vt 0.787879 0.691176 +vt 0.757576 0.602941 +vt 0.787879 0.602941 +vt 0.757576 0.691176 +vt 0.053030 0.882353 +vt 0.477273 0.911765 +vt 0.053030 0.911765 +vt 0.477273 1.000000 +vt 0.477273 0.970588 +vt 0.507576 1.000000 +vt 0.053030 0.941176 +vt 0.477273 0.941176 +vt 0.053030 0.970588 +vt 0.053030 1.000000 +vt 0.022727 1.000000 +vt 0.507576 0.941176 +vt 0.507576 0.970588 +vt 0.022727 1.000000 +vt -0.000000 0.970588 +vt 0.022727 0.970588 +vt 0.022727 0.911765 +vt 0.053030 0.970588 +vt 0.022727 0.941176 +vt 0.053030 0.941176 +vt 0.530303 0.941176 +vt 0.530303 0.970588 +vt 0.507576 0.911765 +vt 0.477273 1.000000 +vt 0.477273 0.970588 +vt 0.507576 1.000000 +vt 0.053030 0.882353 +vt 0.477273 0.911765 +vt 0.053030 0.911765 +vt 0.530303 1.000000 +vt 0.507576 1.000000 +vt 0.507576 0.882353 +vt 0.530303 0.911765 +vt 0.507576 0.911765 +vt 0.022727 0.882353 +vt -0.000000 0.911765 +vt -0.000000 0.882353 +vt -0.000000 0.941176 +vt 0.022727 0.941176 +vt 0.022727 0.911765 +vt 0.477273 0.941176 +vt 0.053030 1.000000 +vt 0.022727 1.000000 +vt 0.507576 0.941176 +vt 0.507576 0.970588 +vt 0.022727 1.000000 +vt -0.000000 0.970588 +vt 0.022727 0.970588 +vt 0.022727 0.911765 +vt 0.530303 0.941176 +vt 0.530303 0.970588 +vt 0.507576 0.911765 +vt 0.530303 1.000000 +vt 0.507576 1.000000 +vt 0.507576 0.882353 +vt 0.530303 0.911765 +vt 0.507576 0.911765 +vt 0.022727 0.882353 +vt -0.000000 0.911765 +vt -0.000000 0.882353 +vt -0.000000 0.941176 +vt 0.022727 0.911765 +vt 0.772727 0.411765 +vt 0.833333 0.470588 +vt 0.772727 0.470588 +vt 0.833333 0.485294 +vt 0.772727 0.544118 +vt 0.772727 0.485294 +vt 0.848485 0.544118 +vt 0.848485 0.485294 +vt 0.757576 0.485294 +vt 0.757576 0.544118 +vt 0.772727 0.558824 +vt 0.833333 0.544118 +vt 0.833333 0.558824 +vt 0.772727 0.411765 +vt 0.833333 0.470588 +vt 0.772727 0.470588 +vt 0.833333 0.485294 +vt 0.772727 0.544118 +vt 0.772727 0.485294 +vt 0.848485 0.544118 +vt 0.848485 0.485294 +vt 0.757576 0.485294 +vt 0.757576 0.544118 +vt 0.772727 0.558824 +vt 0.833333 0.544118 +vt 0.833333 0.558824 +vt 0.772727 0.411765 +vt 0.833333 0.470588 +vt 0.772727 0.470588 +vt 0.833333 0.485294 +vt 0.772727 0.544118 +vt 0.772727 0.485294 +vt 0.848485 0.544118 +vt 0.848485 0.485294 +vt 0.757576 0.485294 +vt 0.757576 0.544118 +vt 0.772727 0.558824 +vt 0.833333 0.544118 +vt 0.833333 0.558824 +vt 0.772727 0.411765 +vt 0.833333 0.470588 +vt 0.772727 0.470588 +vt 0.833333 0.485294 +vt 0.772727 0.544118 +vt 0.772727 0.485294 +vt 0.848485 0.544118 +vt 0.848485 0.485294 +vt 0.757576 0.485294 +vt 0.757576 0.544118 +vt 0.772727 0.558824 +vt 0.833333 0.544118 +vt 0.833333 0.558824 +vt 0.772727 0.411765 +vt 0.833333 0.470588 +vt 0.772727 0.470588 +vt 0.833333 0.485294 +vt 0.772727 0.544118 +vt 0.772727 0.485294 +vt 0.848485 0.544118 +vt 0.848485 0.485294 +vt 0.757576 0.485294 +vt 0.757576 0.544118 +vt 0.772727 0.558824 +vt 0.833333 0.544118 +vt 0.833333 0.558824 +vt 0.878788 0.558824 +vt 0.833333 0.602941 +vt 0.833333 0.558824 +vt 0.742424 0.558824 +vt 0.787879 0.602941 +vt 0.742424 0.602941 +vt 0.787879 0.558824 +vt 0.696970 0.602941 +vt 0.696970 0.558824 +vt 0.833333 0.558824 +vt 0.878788 0.602941 +vt 0.833333 0.602941 +vt 0.787879 0.558824 +vt 0.742424 0.602941 +vt 0.742424 0.558824 +vt 0.787879 0.602941 +vt 0.696970 0.602941 +vt 0.696970 0.558824 +vt 0.787879 0.691176 +vt 0.757576 0.602941 +vt 0.787879 0.602941 +vt 0.727273 0.691176 +vt 0.696970 0.602941 +vt 0.727273 0.602941 +vt 0.757576 0.691176 +vt 0.727273 0.691176 +vt 0.696970 0.602941 +vt 0.727273 0.602941 +vt 0.787879 0.691176 +vt 0.757576 0.602941 +vt 0.787879 0.602941 +vt 0.757576 0.691176 +vt 0.878788 0.558824 +vt 0.833333 0.602941 +vt 0.833333 0.558824 +vt 0.742424 0.558824 +vt 0.787879 0.602941 +vt 0.742424 0.602941 +vt 0.787879 0.558824 +vt 0.696970 0.602941 +vt 0.696970 0.558824 +vt 0.833333 0.558824 +vt 0.878788 0.602941 +vt 0.833333 0.602941 +vt 0.787879 0.558824 +vt 0.742424 0.602941 +vt 0.742424 0.558824 +vt 0.787879 0.602941 +vt 0.696970 0.602941 +vt 0.696970 0.558824 +vt 0.787879 0.691176 +vt 0.757576 0.602941 +vt 0.787879 0.602941 +vt 0.727273 0.691176 +vt 0.696970 0.602941 +vt 0.727273 0.602941 +vt 0.757576 0.691176 +vt 0.727273 0.691176 +vt 0.696970 0.602941 +vt 0.727273 0.602941 +vt 0.787879 0.691176 +vt 0.757576 0.602941 +vt 0.787879 0.602941 +vt 0.757576 0.691176 +vt 0.818182 0.411765 +vt 0.924241 0.274414 +vt 0.848485 0.294116 +vt 0.772728 0.274414 +vt 0.696972 0.147059 +vt 0.717271 0.073530 +vt 0.772728 0.019704 +vt 0.848485 0.000002 +vt 0.924242 0.019704 +vt 0.999998 0.147059 +vt 0.696970 0.882353 +vt 0.060606 0.720588 +vt 0.060606 0.794118 +vt 0.060606 0.205882 +vt 0.000000 0.198529 +vt 0.000000 0.860294 +vt -0.000000 0.639706 +vt 0.000000 0.272059 +vt -0.000000 0.051471 +vt 0.000000 0.713235 +vt -0.000000 0.345588 +vt 0.000000 0.492647 +vt -0.000000 0.125000 +vt -0.000000 0.786765 +vt 0.000000 0.419118 +vt -0.000000 0.566176 +vt 0.727277 0.403876 +vt 0.705097 0.382348 +vt 0.696979 0.352941 +vt 0.727277 0.302006 +vt 0.757576 0.294126 +vt 0.787874 0.302006 +vt 0.810054 0.323534 +vt 0.818173 0.352941 +vt 0.787874 0.403876 +vt 0.833333 0.411765 +vt 0.878788 0.602941 +vt 0.878788 0.558824 +vt 0.696970 0.691176 +vt 0.696970 0.691176 +vt 0.477273 0.882353 +vt -0.000000 1.000000 +vt 0.477273 0.882353 +vt 0.530303 0.882353 +vt -0.000000 1.000000 +vt 0.530303 0.882353 +vt 0.833333 0.411765 +vt 0.833333 0.411765 +vt 0.833333 0.411765 +vt 0.833333 0.411765 +vt 0.833333 0.411765 +vt 0.878788 0.602941 +vt 0.878788 0.558824 +vt 0.696970 0.691176 +vt 0.696970 0.691176 +vt 0.878788 0.602941 +vt 0.878788 0.558824 +vt 0.696970 0.691176 +vt 0.696970 0.691176 +vt 0.696970 0.507353 +vt 0.704545 0.470588 +vt 0.704545 0.507353 +vt 0.712121 0.507353 +vt 0.719697 0.470588 +vt 0.719697 0.507353 +vt 0.727273 0.507353 +vt 0.734848 0.470588 +vt 0.734848 0.507353 +vt 0.750000 0.507353 +vt 0.742424 0.470588 +vt 0.750000 0.470588 +vt 0.712121 0.470588 +vt 0.727273 0.470588 +vt 0.742424 0.507353 +vt 0.757576 0.507353 +vt 0.757576 0.470588 +vt 0.742424 0.466912 +vt 0.750000 0.459559 +vt 0.750000 0.463235 +vt 0.704545 0.463235 +vt 0.712121 0.459559 +vt 0.712121 0.466912 +vt 0.719697 0.459559 +vt 0.727273 0.459559 +vt 0.734848 0.459559 +vt 0.742424 0.459559 +vt 0.704545 0.459559 +vt 0.712121 0.452206 +vt 0.719697 0.448529 +vt 0.727273 0.448529 +vt 0.742424 0.452206 +vt 0.734848 0.448529 +vt 0.750000 0.455882 +vt 0.696970 0.459559 +vt 0.704545 0.455882 +vt 0.757576 0.459559 +vt 0.750000 0.448529 +vt 0.757576 0.411765 +vt 0.757576 0.448529 +vt 0.704545 0.448529 +vt 0.712121 0.411765 +vt 0.712121 0.448529 +vt 0.696970 0.448529 +vt 0.704545 0.411765 +vt 0.727273 0.411765 +vt 0.742424 0.411765 +vt 0.742424 0.448529 +vt 0.719697 0.411765 +vt 0.734848 0.411765 +vt 0.750000 0.411765 +vt 0.696970 0.507353 +vt 0.704545 0.470588 +vt 0.704545 0.507353 +vt 0.712121 0.507353 +vt 0.719697 0.470588 +vt 0.719697 0.507353 +vt 0.727273 0.507353 +vt 0.734848 0.470588 +vt 0.734848 0.507353 +vt 0.742424 0.507353 +vt 0.750000 0.470588 +vt 0.750000 0.507353 +vt 0.712121 0.470588 +vt 0.727273 0.470588 +vt 0.742424 0.470588 +vt 0.757576 0.507353 +vt 0.757576 0.470588 +vt 0.742424 0.466912 +vt 0.750000 0.459559 +vt 0.750000 0.463235 +vt 0.704545 0.463235 +vt 0.712121 0.459559 +vt 0.712121 0.466912 +vt 0.727273 0.459559 +vt 0.742424 0.459559 +vt 0.719697 0.459559 +vt 0.734848 0.459559 +vt 0.704545 0.455882 +vt 0.712121 0.452206 +vt 0.727273 0.448529 +vt 0.742424 0.452206 +vt 0.719697 0.448529 +vt 0.734848 0.448529 +vt 0.750000 0.455882 +vt 0.696970 0.459559 +vt 0.704545 0.459559 +vt 0.757576 0.459559 +vt 0.750000 0.448529 +vt 0.757576 0.411765 +vt 0.757576 0.448529 +vt 0.704545 0.448529 +vt 0.712121 0.411765 +vt 0.712121 0.448529 +vt 0.696970 0.448529 +vt 0.704545 0.411765 +vt 0.727273 0.411765 +vt 0.742424 0.411765 +vt 0.742424 0.448529 +vt 0.719697 0.411765 +vt 0.734848 0.411765 +vt 0.750000 0.411765 +vt 0.696970 0.507353 +vt 0.704545 0.470588 +vt 0.704545 0.507353 +vt 0.719697 0.507353 +vt 0.712121 0.470588 +vt 0.719697 0.470588 +vt 0.727273 0.507353 +vt 0.734848 0.470588 +vt 0.734848 0.507353 +vt 0.742424 0.507353 +vt 0.750000 0.470588 +vt 0.750000 0.507353 +vt 0.712121 0.507353 +vt 0.727273 0.470588 +vt 0.742424 0.470588 +vt 0.757576 0.470588 +vt 0.757576 0.507353 +vt 0.742424 0.466912 +vt 0.750000 0.459559 +vt 0.750000 0.463235 +vt 0.712121 0.466912 +vt 0.704545 0.459559 +vt 0.712121 0.459559 +vt 0.727273 0.459559 +vt 0.734848 0.459559 +vt 0.742424 0.459559 +vt 0.719697 0.459559 +vt 0.704545 0.455882 +vt 0.712121 0.452206 +vt 0.727273 0.448529 +vt 0.742424 0.452206 +vt 0.719697 0.448529 +vt 0.734848 0.448529 +vt 0.750000 0.455882 +vt 0.704545 0.463235 +vt 0.696970 0.459559 +vt 0.757576 0.459559 +vt 0.750000 0.448529 +vt 0.757576 0.411765 +vt 0.757576 0.448529 +vt 0.704545 0.448529 +vt 0.712121 0.411765 +vt 0.712121 0.448529 +vt 0.696970 0.448529 +vt 0.704545 0.411765 +vt 0.727273 0.411765 +vt 0.742424 0.411765 +vt 0.742424 0.448529 +vt 0.719697 0.411765 +vt 0.734848 0.411765 +vt 0.750000 0.411765 +vt 0.696970 0.507353 +vt 0.704545 0.470588 +vt 0.704545 0.507353 +vt 0.712121 0.507353 +vt 0.719697 0.470588 +vt 0.719697 0.507353 +vt 0.727273 0.507353 +vt 0.734848 0.470588 +vt 0.734848 0.507353 +vt 0.742424 0.507353 +vt 0.750000 0.470588 +vt 0.750000 0.507353 +vt 0.712121 0.470588 +vt 0.727273 0.470588 +vt 0.742424 0.470588 +vt 0.757576 0.470588 +vt 0.757576 0.507353 +vt 0.742424 0.466912 +vt 0.750000 0.459559 +vt 0.750000 0.463235 +vt 0.712121 0.466912 +vt 0.704545 0.459559 +vt 0.712121 0.459559 +vt 0.727273 0.459559 +vt 0.734848 0.459559 +vt 0.742424 0.459559 +vt 0.719697 0.459559 +vt 0.704545 0.455882 +vt 0.712121 0.452206 +vt 0.727273 0.448529 +vt 0.742424 0.452206 +vt 0.719697 0.448529 +vt 0.734848 0.448529 +vt 0.750000 0.455882 +vt 0.704545 0.463235 +vt 0.696970 0.459559 +vt 0.757576 0.459559 +vt 0.750000 0.448529 +vt 0.757576 0.411765 +vt 0.757576 0.448529 +vt 0.704545 0.448529 +vt 0.712121 0.411765 +vt 0.712121 0.448529 +vt 0.696970 0.448529 +vt 0.704545 0.411765 +vt 0.727273 0.411765 +vt 0.742424 0.411765 +vt 0.742424 0.448529 +vt 0.719697 0.411765 +vt 0.734848 0.411765 +vt 0.750000 0.411765 +vt 0.696970 0.507353 +vt 0.704545 0.470588 +vt 0.704545 0.507353 +vt 0.712121 0.507353 +vt 0.719697 0.470588 +vt 0.719697 0.507353 +vt 0.734848 0.507353 +vt 0.727273 0.470588 +vt 0.734848 0.470588 +vt 0.742424 0.507353 +vt 0.750000 0.470588 +vt 0.750000 0.507353 +vt 0.712121 0.470588 +vt 0.727273 0.507353 +vt 0.742424 0.470588 +vt 0.757576 0.470588 +vt 0.757576 0.507353 +vt 0.742424 0.466912 +vt 0.750000 0.459559 +vt 0.750000 0.463235 +vt 0.712121 0.466912 +vt 0.704545 0.459559 +vt 0.712121 0.459559 +vt 0.727273 0.459559 +vt 0.734848 0.459559 +vt 0.742424 0.459559 +vt 0.719697 0.459559 +vt 0.704545 0.455882 +vt 0.712121 0.452206 +vt 0.727273 0.448529 +vt 0.742424 0.452206 +vt 0.719697 0.448529 +vt 0.734848 0.448529 +vt 0.750000 0.455882 +vt 0.704545 0.463235 +vt 0.696970 0.459559 +vt 0.757576 0.459559 +vt 0.750000 0.448529 +vt 0.757576 0.411765 +vt 0.757576 0.448529 +vt 0.704545 0.448529 +vt 0.712121 0.411765 +vt 0.712121 0.448529 +vt 0.696970 0.448529 +vt 0.704545 0.411765 +vt 0.727273 0.411765 +vt 0.742424 0.411765 +vt 0.742424 0.448529 +vt 0.719697 0.411765 +vt 0.734848 0.411765 +vt 0.750000 0.411765 +vt 0.696970 0.507353 +vt 0.704545 0.470588 +vt 0.704545 0.507353 +vt 0.712121 0.507353 +vt 0.719697 0.470588 +vt 0.719697 0.507353 +vt 0.727273 0.507353 +vt 0.734848 0.470588 +vt 0.734848 0.507353 +vt 0.742424 0.507353 +vt 0.750000 0.470588 +vt 0.750000 0.507353 +vt 0.712121 0.470588 +vt 0.727273 0.470588 +vt 0.742424 0.470588 +vt 0.757576 0.507353 +vt 0.757576 0.470588 +vt 0.742424 0.466912 +vt 0.750000 0.459559 +vt 0.750000 0.463235 +vt 0.704545 0.463235 +vt 0.712121 0.459559 +vt 0.712121 0.466912 +vt 0.727273 0.459559 +vt 0.734848 0.459559 +vt 0.742424 0.459559 +vt 0.719697 0.459559 +vt 0.704545 0.455882 +vt 0.712121 0.452206 +vt 0.727273 0.448529 +vt 0.734848 0.448529 +vt 0.742424 0.452206 +vt 0.719697 0.448529 +vt 0.750000 0.455882 +vt 0.696970 0.459559 +vt 0.704545 0.459559 +vt 0.757576 0.459559 +vt 0.750000 0.448529 +vt 0.757576 0.411765 +vt 0.757576 0.448529 +vt 0.704545 0.448529 +vt 0.712121 0.411765 +vt 0.712121 0.448529 +vt 0.696970 0.448529 +vt 0.704545 0.411765 +vt 0.727273 0.411765 +vt 0.742424 0.411765 +vt 0.742424 0.448529 +vt 0.719697 0.411765 +vt 0.734848 0.411765 +vt 0.750000 0.411765 +vt 0.696970 0.507353 +vt 0.704545 0.470588 +vt 0.704545 0.507353 +vt 0.719697 0.507353 +vt 0.712121 0.470588 +vt 0.719697 0.470588 +vt 0.727273 0.507353 +vt 0.734848 0.470588 +vt 0.734848 0.507353 +vt 0.742424 0.507353 +vt 0.750000 0.470588 +vt 0.750000 0.507353 +vt 0.712121 0.507353 +vt 0.727273 0.470588 +vt 0.742424 0.470588 +vt 0.757576 0.507353 +vt 0.757576 0.470588 +vt 0.742424 0.466912 +vt 0.750000 0.459559 +vt 0.750000 0.463235 +vt 0.712121 0.466912 +vt 0.704545 0.459559 +vt 0.712121 0.459559 +vt 0.727273 0.459559 +vt 0.734848 0.459559 +vt 0.742424 0.459559 +vt 0.719697 0.459559 +vt 0.704545 0.455882 +vt 0.712121 0.452206 +vt 0.727273 0.448529 +vt 0.734848 0.448529 +vt 0.742424 0.452206 +vt 0.719697 0.448529 +vt 0.750000 0.455882 +vt 0.704545 0.463235 +vt 0.696970 0.459559 +vt 0.757576 0.459559 +vt 0.750000 0.448529 +vt 0.757576 0.411765 +vt 0.757576 0.448529 +vt 0.704545 0.448529 +vt 0.712121 0.411765 +vt 0.712121 0.448529 +vt 0.696970 0.448529 +vt 0.704545 0.411765 +vt 0.727273 0.411765 +vt 0.742424 0.411765 +vt 0.742424 0.448529 +vt 0.719697 0.411765 +vt 0.734848 0.411765 +vt 0.750000 0.411765 +vt 0.696970 0.507353 +vt 0.704545 0.470588 +vt 0.704545 0.507353 +vt 0.712121 0.507353 +vt 0.719697 0.470588 +vt 0.719697 0.507353 +vt 0.727273 0.507353 +vt 0.734848 0.470588 +vt 0.734848 0.507353 +vt 0.742424 0.507353 +vt 0.750000 0.470588 +vt 0.750000 0.507353 +vt 0.712121 0.470588 +vt 0.727273 0.470588 +vt 0.742424 0.470588 +vt 0.757576 0.507353 +vt 0.757576 0.470588 +vt 0.742424 0.466912 +vt 0.750000 0.459559 +vt 0.750000 0.463235 +vt 0.712121 0.466912 +vt 0.704545 0.459559 +vt 0.712121 0.459559 +vt 0.727273 0.459559 +vt 0.734848 0.459559 +vt 0.742424 0.459559 +vt 0.719697 0.459559 +vt 0.704545 0.455882 +vt 0.712121 0.452206 +vt 0.727273 0.448529 +vt 0.734848 0.448529 +vt 0.742424 0.452206 +vt 0.719697 0.448529 +vt 0.750000 0.455882 +vt 0.704545 0.463235 +vt 0.696970 0.459559 +vt 0.757576 0.459559 +vt 0.750000 0.448529 +vt 0.757576 0.411765 +vt 0.757576 0.448529 +vt 0.704545 0.448529 +vt 0.712121 0.411765 +vt 0.712121 0.448529 +vt 0.696970 0.448529 +vt 0.704545 0.411765 +vt 0.727273 0.411765 +vt 0.742424 0.411765 +vt 0.742424 0.448529 +vt 0.719697 0.411765 +vt 0.734848 0.411765 +vt 0.750000 0.411765 +vt 0.696970 0.507353 +vt 0.704545 0.470588 +vt 0.704545 0.507353 +vt 0.712121 0.507353 +vt 0.719697 0.470588 +vt 0.719697 0.507353 +vt 0.734848 0.507353 +vt 0.727273 0.470588 +vt 0.734848 0.470588 +vt 0.742424 0.507353 +vt 0.750000 0.470588 +vt 0.750000 0.507353 +vt 0.712121 0.470588 +vt 0.727273 0.507353 +vt 0.742424 0.470588 +vt 0.757576 0.507353 +vt 0.757576 0.470588 +vt 0.742424 0.466912 +vt 0.750000 0.459559 +vt 0.750000 0.463235 +vt 0.704545 0.463235 +vt 0.712121 0.459559 +vt 0.712121 0.466912 +vt 0.727273 0.459559 +vt 0.734848 0.459559 +vt 0.742424 0.459559 +vt 0.719697 0.459559 +vt 0.704545 0.455882 +vt 0.712121 0.452206 +vt 0.727273 0.448529 +vt 0.742424 0.452206 +vt 0.719697 0.448529 +vt 0.734848 0.448529 +vt 0.750000 0.455882 +vt 0.696970 0.459559 +vt 0.704545 0.459559 +vt 0.757576 0.459559 +vt 0.750000 0.448529 +vt 0.757576 0.411765 +vt 0.757576 0.448529 +vt 0.704545 0.448529 +vt 0.712121 0.411765 +vt 0.712121 0.448529 +vt 0.696970 0.448529 +vt 0.704545 0.411765 +vt 0.727273 0.411765 +vt 0.742424 0.411765 +vt 0.742424 0.448529 +vt 0.719697 0.411765 +vt 0.734848 0.411765 +vt 0.750000 0.411765 +vt 0.696970 0.507353 +vt 0.704545 0.470588 +vt 0.704545 0.507353 +vt 0.712121 0.507353 +vt 0.719697 0.470588 +vt 0.719697 0.507353 +vt 0.727273 0.507353 +vt 0.734848 0.470588 +vt 0.734848 0.507353 +vt 0.742424 0.507353 +vt 0.750000 0.470588 +vt 0.750000 0.507353 +vt 0.712121 0.470588 +vt 0.727273 0.470588 +vt 0.742424 0.470588 +vt 0.757576 0.507353 +vt 0.757576 0.470588 +vt 0.742424 0.466912 +vt 0.750000 0.459559 +vt 0.750000 0.463235 +vt 0.712121 0.466912 +vt 0.704545 0.459559 +vt 0.712121 0.459559 +vt 0.719697 0.459559 +vt 0.727273 0.459559 +vt 0.734848 0.459559 +vt 0.742424 0.459559 +vt 0.704545 0.455882 +vt 0.712121 0.452206 +vt 0.719697 0.448529 +vt 0.727273 0.448529 +vt 0.734848 0.448529 +vt 0.742424 0.452206 +vt 0.750000 0.455882 +vt 0.704545 0.463235 +vt 0.696970 0.459559 +vt 0.757576 0.459559 +vt 0.750000 0.448529 +vt 0.757576 0.411765 +vt 0.757576 0.448529 +vt 0.704545 0.448529 +vt 0.712121 0.411765 +vt 0.712121 0.448529 +vt 0.696970 0.448529 +vt 0.704545 0.411765 +vt 0.727273 0.411765 +vt 0.742424 0.411765 +vt 0.742424 0.448529 +vt 0.719697 0.411765 +vt 0.734848 0.411765 +vt 0.750000 0.411765 +vt 0.696970 0.507353 +vt 0.704545 0.470588 +vt 0.704545 0.507353 +vt 0.712121 0.507353 +vt 0.719697 0.470588 +vt 0.719697 0.507353 +vt 0.734848 0.507353 +vt 0.727273 0.470588 +vt 0.734848 0.470588 +vt 0.742424 0.507353 +vt 0.750000 0.470588 +vt 0.750000 0.507353 +vt 0.712121 0.470588 +vt 0.727273 0.507353 +vt 0.742424 0.470588 +vt 0.757576 0.507353 +vt 0.757576 0.470588 +vt 0.742424 0.466912 +vt 0.750000 0.459559 +vt 0.750000 0.463235 +vt 0.704545 0.463235 +vt 0.712121 0.459559 +vt 0.712121 0.466912 +vt 0.727273 0.459559 +vt 0.734848 0.459559 +vt 0.742424 0.459559 +vt 0.719697 0.459559 +vt 0.704545 0.455882 +vt 0.712121 0.452206 +vt 0.719697 0.448529 +vt 0.727273 0.448529 +vt 0.742424 0.452206 +vt 0.734848 0.448529 +vt 0.750000 0.455882 +vt 0.696970 0.459559 +vt 0.704545 0.459559 +vt 0.757576 0.459559 +vt 0.750000 0.448529 +vt 0.757576 0.411765 +vt 0.757576 0.448529 +vt 0.704545 0.448529 +vt 0.712121 0.411765 +vt 0.712121 0.448529 +vt 0.696970 0.448529 +vt 0.704545 0.411765 +vt 0.727273 0.411765 +vt 0.742424 0.411765 +vt 0.742424 0.448529 +vt 0.719697 0.411765 +vt 0.734848 0.411765 +vt 0.750000 0.411765 +vt 0.696970 0.507353 +vt 0.704545 0.470588 +vt 0.704545 0.507353 +vt 0.719697 0.507353 +vt 0.712121 0.470588 +vt 0.719697 0.470588 +vt 0.734848 0.507353 +vt 0.727273 0.470588 +vt 0.734848 0.470588 +vt 0.742424 0.507353 +vt 0.750000 0.470588 +vt 0.750000 0.507353 +vt 0.712121 0.507353 +vt 0.727273 0.507353 +vt 0.742424 0.470588 +vt 0.757576 0.470588 +vt 0.757576 0.507353 +vt 0.742424 0.466912 +vt 0.750000 0.459559 +vt 0.750000 0.463235 +vt 0.712121 0.466912 +vt 0.704545 0.459559 +vt 0.712121 0.459559 +vt 0.727273 0.459559 +vt 0.734848 0.459559 +vt 0.742424 0.459559 +vt 0.719697 0.459559 +vt 0.704545 0.455882 +vt 0.712121 0.452206 +vt 0.727273 0.448529 +vt 0.742424 0.452206 +vt 0.719697 0.448529 +vt 0.734848 0.448529 +vt 0.750000 0.455882 +vt 0.704545 0.463235 +vt 0.696970 0.459559 +vt 0.757576 0.459559 +vt 0.750000 0.448529 +vt 0.757576 0.411765 +vt 0.757576 0.448529 +vt 0.704545 0.448529 +vt 0.712121 0.411765 +vt 0.712121 0.448529 +vt 0.696970 0.448529 +vt 0.704545 0.411765 +vt 0.727273 0.411765 +vt 0.742424 0.411765 +vt 0.742424 0.448529 +vt 0.719697 0.411765 +vt 0.734848 0.411765 +vt 0.750000 0.411765 +vt 0.696970 0.470588 +vt 0.696970 0.411765 +vt 0.696970 0.470588 +vt 0.696970 0.411765 +vt 0.696970 0.470588 +vt 0.696970 0.411765 +vt 0.696970 0.470588 +vt 0.696970 0.411765 +vt 0.696970 0.470588 +vt 0.696970 0.411765 +vt 0.696970 0.470588 +vt 0.696970 0.411765 +vt 0.696970 0.470588 +vt 0.696970 0.411765 +vt 0.696970 0.470588 +vt 0.696970 0.411765 +vt 0.696970 0.470588 +vt 0.696970 0.411765 +vt 0.696970 0.470588 +vt 0.696970 0.411765 +vt 0.696970 0.470588 +vt 0.696970 0.411765 +vt 0.696970 0.470588 +vt 0.696970 0.411765 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.2588 0.9659 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.9659 -0.2588 0.0000 +vn -0.2588 -0.9659 0.0000 +vn -0.9659 0.2588 0.0000 +vn 0.9659 0.2588 0.0000 +vn 0.2588 -0.9659 0.0000 +vn -0.9659 -0.2588 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.2588 0.9659 0.0000 +vn 0.5000 0.5000 -0.7071 +vn -0.5000 0.5000 0.7071 +vn -0.5000 0.5000 -0.7071 +vn 0.5000 0.5000 0.7071 +vn -0.7368 -0.0563 -0.6737 +vn -0.6830 -0.1830 -0.7071 +vn -0.6188 -0.3157 0.7194 +vn -0.6830 -0.1830 0.7071 +vn 0.6937 0.0360 0.7194 +vn 0.6830 0.1830 0.7071 +vn 0.6830 0.1830 -0.7071 +vn 0.9697 0.2395 0.0473 +vn 0.6663 0.3196 -0.6737 +vn -0.9596 -0.2774 0.0473 +vn 0.0483 -0.1802 0.9824 +vn -0.1830 0.6830 -0.7071 +vn 0.6120 0.6420 -0.4617 +vn -0.9442 -0.3224 0.0670 +vn -0.5034 -0.6829 0.5293 +vn 0.1830 -0.6830 0.7071 +vn 0.7774 -0.3397 0.5293 +vn 0.9789 0.1928 0.0670 +vn -0.8510 0.2500 -0.4617 +vn -0.9524 -0.3041 0.0196 +vn -0.4700 -0.8707 0.1447 +vn 0.2542 -0.9489 0.1866 +vn 0.9769 0.2128 0.0196 +vn 0.8424 -0.5190 0.1447 +vn 0.5272 0.8387 -0.1363 +vn -0.8759 0.4628 -0.1363 +vn -0.8660 0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.7368 0.0563 -0.6737 +vn 0.6188 0.3157 0.7194 +vn -0.6937 -0.0360 0.7194 +vn -0.6663 -0.3196 -0.6737 +vn 0.9596 0.2774 0.0473 +vn -0.0483 0.1802 0.9824 +vn -0.9697 -0.2395 0.0473 +vn 0.1830 -0.6830 -0.7071 +vn -0.6120 -0.6420 -0.4617 +vn 0.9442 0.3224 0.0670 +vn -0.1830 0.6830 0.7071 +vn -0.9789 -0.1928 0.0670 +vn 0.5034 0.6829 0.5293 +vn -0.7774 0.3397 0.5293 +vn 0.8759 -0.4628 -0.1363 +vn 0.9524 0.3041 0.0196 +vn -0.2542 0.9489 0.1866 +vn -0.9769 -0.2128 0.0196 +vn 0.4700 0.8707 0.1447 +vn -0.8424 0.5190 0.1447 +vn -0.5272 -0.8387 -0.1363 +vn 0.8510 -0.2500 -0.4617 +vn -0.0563 0.7368 -0.6737 +vn -0.2774 0.9596 0.0473 +vn -0.3157 0.6188 0.7194 +vn 0.0360 -0.6937 0.7194 +vn 0.3196 -0.6663 -0.6737 +vn -0.1802 -0.0483 0.9824 +vn 0.2395 -0.9697 0.0473 +vn 0.6420 -0.6120 -0.4617 +vn 0.2500 0.8510 -0.4617 +vn -0.3224 0.9442 0.0670 +vn -0.3397 -0.7774 0.5293 +vn 0.1928 -0.9789 0.0670 +vn -0.6829 0.5034 0.5293 +vn 0.4628 0.8759 -0.1363 +vn -0.3041 0.9524 0.0196 +vn -0.9489 -0.2542 0.1866 +vn 0.2128 -0.9769 0.0196 +vn -0.8707 0.4700 0.1447 +vn -0.5190 -0.8424 0.1447 +vn 0.8387 -0.5272 -0.1363 +vn 0.0563 -0.7368 -0.6737 +vn 0.3157 -0.6188 0.7194 +vn -0.0360 0.6937 0.7194 +vn -0.3196 0.6663 -0.6737 +vn 0.2774 -0.9596 0.0473 +vn 0.1802 0.0483 0.9824 +vn -0.2395 0.9697 0.0473 +vn -0.6420 0.6120 -0.4617 +vn -0.2500 -0.8510 -0.4617 +vn 0.3224 -0.9442 0.0670 +vn 0.3397 0.7774 0.5293 +vn -0.1928 0.9789 0.0670 +vn 0.6829 -0.5034 0.5293 +vn -0.4628 -0.8759 -0.1363 +vn 0.3041 -0.9524 0.0196 +vn 0.9489 0.2542 0.1866 +vn -0.2128 0.9769 0.0196 +vn 0.8707 -0.4700 0.1447 +vn 0.5190 0.8424 0.1447 +vn -0.8387 0.5272 -0.1363 +vn -0.6663 0.3196 -0.6737 +vn -0.6830 0.1830 -0.7071 +vn -0.6937 0.0360 0.7194 +vn -0.6830 0.1830 0.7071 +vn 0.6830 -0.1830 0.7071 +vn -0.0483 -0.1802 0.9824 +vn 0.6188 -0.3157 0.7194 +vn 0.7368 -0.0563 -0.6737 +vn 0.6830 -0.1830 -0.7071 +vn -0.9697 0.2395 0.0473 +vn 0.9596 -0.2774 0.0473 +vn 0.1830 0.6830 -0.7071 +vn 0.8510 0.2499 -0.4617 +vn -0.6120 0.6420 -0.4617 +vn -0.9789 0.1928 0.0670 +vn -0.1830 -0.6830 0.7071 +vn 0.5034 -0.6829 0.5293 +vn 0.9442 -0.3224 0.0670 +vn -0.7774 -0.3397 0.5293 +vn -0.5272 0.8387 -0.1363 +vn -0.9769 0.2128 0.0196 +vn -0.2542 -0.9489 0.1866 +vn 0.9524 -0.3041 0.0196 +vn -0.8424 -0.5190 0.1447 +vn 0.4700 -0.8707 0.1447 +vn 0.8759 0.4628 -0.1363 +vn -0.5000 0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.6663 -0.3196 -0.6737 +vn 0.6937 -0.0360 0.7194 +vn -0.6188 0.3157 0.7194 +vn -0.7368 0.0563 -0.6737 +vn 0.9697 -0.2395 0.0473 +vn 0.0483 0.1802 0.9824 +vn -0.9596 0.2774 0.0473 +vn -0.1830 -0.6830 -0.7071 +vn -0.8510 -0.2499 -0.4617 +vn 0.9789 -0.1928 0.0670 +vn 0.1830 0.6830 0.7071 +vn -0.5034 0.6829 0.5293 +vn -0.9442 0.3224 0.0670 +vn 0.7774 0.3397 0.5293 +vn 0.5272 -0.8387 -0.1363 +vn 0.9769 -0.2128 0.0196 +vn 0.2542 0.9489 0.1866 +vn -0.4700 0.8707 0.1447 +vn -0.9524 0.3041 0.0196 +vn 0.8424 0.5190 0.1447 +vn -0.8759 -0.4628 -0.1363 +vn 0.6120 -0.6420 -0.4617 +vn 0.3196 0.6663 -0.6737 +vn 0.2395 0.9697 0.0473 +vn 0.0360 0.6937 0.7194 +vn -0.3157 -0.6188 0.7194 +vn -0.0563 -0.7368 -0.6737 +vn -0.1802 0.0483 0.9824 +vn -0.2774 -0.9596 0.0473 +vn 0.2499 -0.8510 -0.4617 +vn 0.6420 0.6120 -0.4617 +vn 0.1928 0.9789 0.0670 +vn -0.6829 -0.5034 0.5293 +vn -0.3224 -0.9442 0.0670 +vn -0.3397 0.7774 0.5293 +vn 0.8387 0.5272 -0.1363 +vn 0.2128 0.9769 0.0196 +vn -0.9489 0.2542 0.1866 +vn -0.8707 -0.4700 0.1447 +vn -0.3041 -0.9524 0.0196 +vn -0.5190 0.8424 0.1447 +vn 0.4628 -0.8759 -0.1363 +vn -0.3196 -0.6663 -0.6737 +vn -0.0360 -0.6937 0.7194 +vn 0.3157 0.6188 0.7194 +vn 0.0563 0.7368 -0.6737 +vn -0.2395 -0.9697 0.0473 +vn 0.1802 -0.0483 0.9824 +vn 0.2774 0.9596 0.0473 +vn -0.2499 0.8510 -0.4617 +vn -0.6420 -0.6120 -0.4617 +vn -0.1928 -0.9789 0.0670 +vn 0.6829 0.5034 0.5293 +vn 0.3224 0.9442 0.0670 +vn 0.3397 -0.7774 0.5293 +vn -0.8387 -0.5272 -0.1363 +vn -0.2128 -0.9769 0.0196 +vn 0.9489 -0.2542 0.1866 +vn 0.8707 0.4700 0.1447 +vn 0.3041 0.9524 0.0196 +vn 0.5190 -0.8424 0.1447 +vn -0.4628 0.8759 -0.1363 +vn -0.4172 0.6099 -0.6737 +vn -0.5828 0.3780 0.7194 +vn 0.5000 -0.5000 0.7071 +vn -0.1319 -0.1319 0.9824 +vn 0.3780 -0.5828 0.7194 +vn 0.6099 -0.4172 -0.6737 +vn 0.5000 -0.5000 -0.7071 +vn -0.7200 0.6923 0.0473 +vn 0.6923 -0.7200 0.0473 +vn 0.8620 -0.2090 -0.4617 +vn -0.7513 0.6565 0.0670 +vn -0.5000 -0.5000 0.7071 +vn 0.0945 -0.8431 0.5293 +vn 0.6565 -0.7513 0.0670 +vn -0.8431 0.0945 0.5293 +vn -0.0372 0.9900 -0.1363 +vn -0.7396 0.6727 0.0196 +vn -0.6947 -0.6947 0.1866 +vn 0.6727 -0.7396 0.0196 +vn -0.9890 -0.0283 0.1447 +vn -0.0283 -0.9890 0.1447 +vn 0.9900 -0.0372 -0.1363 +vn -0.2090 0.8620 -0.4617 +vn 0.4172 -0.6099 -0.6737 +vn 0.5828 -0.3780 0.7194 +vn -0.3780 0.5828 0.7194 +vn -0.6099 0.4172 -0.6737 +vn 0.7200 -0.6923 0.0473 +vn 0.1319 0.1319 0.9824 +vn -0.6923 0.7200 0.0473 +vn -0.5000 -0.5000 -0.7071 +vn -0.8620 0.2090 -0.4617 +vn 0.2090 -0.8620 -0.4617 +vn 0.7513 -0.6565 0.0670 +vn 0.8431 -0.0945 0.5293 +vn -0.0945 0.8431 0.5293 +vn -0.6565 0.7513 0.0670 +vn 0.0372 -0.9900 -0.1363 +vn 0.7396 -0.6727 0.0196 +vn 0.9890 0.0283 0.1447 +vn 0.6947 0.6947 0.1866 +vn 0.0283 0.9890 0.1447 +vn -0.6727 0.7396 0.0196 +vn -0.9900 0.0372 -0.1363 +vn 0.6099 0.4172 -0.6737 +vn 0.3780 0.5828 0.7194 +vn -0.1319 0.1319 0.9824 +vn -0.5828 -0.3780 0.7194 +vn -0.4172 -0.6099 -0.6737 +vn 0.6923 0.7200 0.0473 +vn -0.7200 -0.6923 0.0473 +vn -0.2090 -0.8620 -0.4617 +vn 0.6565 0.7513 0.0670 +vn -0.8431 -0.0945 0.5293 +vn -0.7513 -0.6565 0.0670 +vn 0.0945 0.8431 0.5293 +vn 0.9900 0.0372 -0.1363 +vn 0.6727 0.7396 0.0196 +vn -0.0283 0.9890 0.1447 +vn -0.6947 0.6947 0.1866 +vn -0.7396 -0.6727 0.0196 +vn -0.9890 0.0282 0.1447 +vn -0.0372 -0.9900 -0.1363 +vn 0.8620 0.2090 -0.4617 +vn -0.6099 -0.4172 -0.6737 +vn -0.6923 -0.7200 0.0473 +vn -0.3780 -0.5828 0.7194 +vn 0.1319 -0.1319 0.9824 +vn 0.5828 0.3780 0.7194 +vn 0.4172 0.6099 -0.6737 +vn 0.7200 0.6923 0.0473 +vn 0.2090 0.8620 -0.4617 +vn -0.8620 -0.2090 -0.4617 +vn -0.6565 -0.7513 0.0670 +vn 0.8431 0.0945 0.5293 +vn 0.7513 0.6565 0.0670 +vn -0.0945 -0.8431 0.5293 +vn -0.9900 -0.0372 -0.1363 +vn -0.6727 -0.7396 0.0196 +vn 0.6947 -0.6947 0.1866 +vn 0.7396 0.6727 0.0196 +vn 0.0283 -0.9890 0.1447 +vn 0.9890 -0.0282 0.1447 +vn 0.0372 0.9900 -0.1363 +s off +f 2/1/1 3/2/1 1/3/1 +f 25/4/2 23/5/2 31/6/2 +f 8/7/3 5/8/3 7/9/3 +f 6/10/4 1/3/4 5/8/4 +f 7/11/5 1/3/5 3/12/5 +f 4/13/6 6/10/6 8/14/6 +f 28/15/7 17/16/7 16/17/7 +f 25/18/8 14/19/8 13/20/8 +f 32/21/9 9/22/9 20/23/9 +f 22/24/10 11/25/10 10/26/10 +f 29/27/11 18/28/11 17/16/11 +f 26/29/12 15/30/12 14/19/12 +f 23/31/13 12/32/13 11/25/13 +f 30/33/14 19/34/14 18/28/14 +f 27/35/15 16/17/15 15/36/15 +f 24/37/16 13/20/16 12/32/16 +f 31/38/17 20/23/17 19/34/17 +f 21/39/18 10/26/18 9/22/18 +f 18/28/4 41/40/4 17/16/4 +f 19/34/4 42/41/4 18/28/4 +f 19/34/4 44/42/4 43/43/4 +f 9/22/4 44/44/4 20/23/4 +f 10/26/4 33/45/4 9/22/4 +f 10/26/4 35/46/4 34/47/4 +f 12/32/4 35/48/4 11/25/4 +f 13/20/4 36/49/4 12/32/4 +f 13/20/4 38/50/4 37/51/4 +f 15/30/4 38/52/4 14/19/4 +f 16/17/4 39/53/4 15/36/4 +f 17/16/4 40/54/4 16/17/4 +f 39/55/9 50/56/9 38/52/9 +f 36/57/11 47/58/11 35/48/11 +f 43/59/16 54/60/16 42/41/16 +f 40/61/18 51/62/18 39/53/18 +f 37/63/14 48/64/14 36/49/14 +f 44/42/8 55/65/8 43/43/8 +f 34/66/15 45/67/15 33/45/15 +f 41/68/10 52/69/10 40/54/10 +f 38/50/17 49/70/17 37/51/17 +f 33/71/12 56/72/12 44/44/12 +f 35/46/7 46/73/7 34/47/7 +f 42/74/13 53/75/13 41/40/13 +f 52/76/4 63/77/4 51/62/4 +f 53/78/4 64/79/4 52/69/4 +f 53/75/4 66/80/4 65/81/4 +f 55/82/4 66/83/4 54/60/4 +f 56/84/4 67/85/4 55/65/4 +f 45/86/4 68/87/4 56/72/4 +f 46/88/4 57/89/4 45/67/4 +f 47/90/4 58/91/4 46/73/4 +f 48/92/4 59/93/4 47/58/4 +f 48/64/4 61/94/4 60/95/4 +f 49/70/4 62/96/4 61/97/4 +f 51/98/4 62/99/4 50/56/4 +f 66/80/13 77/100/13 65/81/13 +f 63/101/9 74/102/9 62/99/9 +f 60/103/11 71/104/11 59/93/11 +f 67/105/16 78/106/16 66/83/16 +f 64/107/18 75/108/18 63/77/18 +f 61/94/14 72/109/14 60/95/14 +f 68/110/8 79/111/8 67/85/8 +f 58/112/15 69/113/15 57/89/15 +f 65/114/10 76/115/10 64/79/10 +f 62/96/17 73/116/17 61/97/17 +f 57/117/12 80/118/12 68/87/12 +f 59/119/7 70/120/7 58/91/7 +f 79/121/4 69/122/4 73/123/4 +f 83/124/5 82/125/5 81/126/5 +f 87/127/6 85/128/6 86/129/6 +f 84/130/3 87/127/3 82/131/3 +f 81/132/1 85/128/1 83/133/1 +f 83/134/2 88/135/2 84/136/2 +f 82/125/4 86/129/4 81/126/4 +f 89/137/2 96/138/2 92/139/2 +f 90/140/4 95/141/4 94/142/4 +f 92/139/17 95/141/17 91/143/17 +f 90/140/8 93/144/8 89/145/8 +f 100/146/2 101/147/2 104/148/2 +f 99/149/4 102/150/4 98/151/4 +f 100/146/7 103/152/7 99/149/7 +f 98/151/10 101/153/10 97/154/10 +f 149/155/2 146/156/2 145/157/2 +f 148/158/4 143/159/4 144/160/4 +f 150/161/3 144/160/3 146/156/3 +f 157/162/2 154/163/2 153/164/2 +f 156/165/4 151/166/4 152/167/4 +f 153/164/1 155/168/1 157/162/1 +f 160/169/8 161/170/8 159/171/8 +f 162/172/10 166/173/10 169/174/10 +f 166/173/17 163/175/17 165/176/17 +f 164/177/10 160/178/10 168/179/10 +f 165/176/7 159/171/7 161/170/7 +f 162/172/10 164/177/10 166/173/10 +f 166/173/19 170/180/19 169/181/19 +f 160/182/10 176/183/10 168/184/10 +f 159/171/7 163/175/7 167/185/7 +f 184/186/20 187/187/20 183/188/20 +f 169/181/2 178/189/2 177/190/2 +f 165/176/7 161/170/7 170/191/7 +f 182/192/8 186/193/8 189/194/8 +f 180/195/7 181/196/7 179/197/7 +f 169/181/10 173/198/10 162/199/10 +f 162/200/4 174/201/4 161/202/4 +f 160/203/2 171/204/2 172/205/2 +f 168/184/4 175/206/4 167/207/4 +f 167/207/7 171/204/7 159/208/7 +f 161/202/7 178/189/7 170/180/7 +f 186/193/10 183/188/10 185/209/10 +f 184/186/8 180/210/8 188/211/8 +f 185/209/17 179/197/17 181/196/17 +f 182/192/8 184/186/8 186/193/8 +f 186/193/21 190/212/21 189/213/21 +f 180/214/8 196/215/8 188/216/8 +f 179/197/17 183/188/17 187/217/17 +f 189/213/2 198/218/2 197/219/2 +f 185/209/17 181/196/17 190/220/17 +f 189/213/8 193/221/8 182/222/8 +f 182/223/4 194/224/4 181/225/4 +f 180/226/2 191/227/2 192/228/2 +f 188/216/4 195/229/4 187/187/4 +f 187/187/17 191/227/17 179/230/17 +f 181/225/17 198/218/17 190/212/17 +f 164/177/22 167/207/22 163/175/22 +f 619/231/5 618/232/5 617/233/5 +f 623/234/6 621/235/6 622/236/6 +f 620/237/3 623/234/3 618/238/3 +f 617/239/1 621/235/1 619/240/1 +f 619/241/2 624/242/2 620/243/2 +f 618/232/4 622/236/4 617/233/4 +f 627/244/5 626/245/5 625/246/5 +f 631/247/6 629/248/6 630/249/6 +f 628/250/3 631/247/3 626/251/3 +f 625/252/1 629/248/1 627/253/1 +f 627/254/2 632/255/2 628/256/2 +f 626/245/4 630/249/4 625/246/4 +f 635/257/5 634/258/5 633/259/5 +f 639/260/6 637/261/6 638/262/6 +f 636/263/3 639/260/3 634/264/3 +f 633/265/1 637/261/1 635/266/1 +f 635/267/2 640/268/2 636/269/2 +f 634/258/4 638/262/4 633/259/4 +f 643/270/5 642/271/5 641/272/5 +f 647/273/6 645/274/6 646/275/6 +f 644/276/3 647/273/3 642/277/3 +f 641/278/1 645/274/1 643/279/1 +f 643/280/2 648/281/2 644/282/2 +f 642/271/4 646/275/4 641/272/4 +f 651/283/5 650/284/5 649/285/5 +f 655/286/6 653/287/6 654/288/6 +f 652/289/3 655/286/3 650/290/3 +f 649/291/1 653/287/1 651/292/1 +f 651/293/2 656/294/2 652/295/2 +f 650/284/4 654/288/4 649/285/4 +f 657/296/2 664/297/2 660/298/2 +f 658/299/4 663/300/4 662/301/4 +f 660/298/17 663/300/17 659/302/17 +f 658/299/8 661/303/8 657/304/8 +f 668/305/2 669/306/2 672/307/2 +f 667/308/4 670/309/4 666/310/4 +f 668/305/7 671/311/7 667/308/7 +f 666/310/10 669/312/10 665/313/10 +f 679/314/2 676/315/2 675/316/2 +f 678/317/4 673/318/4 674/319/4 +f 680/320/3 674/319/3 676/315/3 +f 687/321/2 684/322/2 683/323/2 +f 686/324/4 681/325/4 682/326/4 +f 683/323/1 685/327/1 687/321/1 +f 689/328/2 696/329/2 692/330/2 +f 690/331/4 695/332/4 694/333/4 +f 692/330/17 695/332/17 691/334/17 +f 690/331/8 693/335/8 689/336/8 +f 700/337/2 701/338/2 704/339/2 +f 699/340/4 702/341/4 698/342/4 +f 700/337/7 703/343/7 699/340/7 +f 698/342/10 701/344/10 697/345/10 +f 711/346/2 708/347/2 707/348/2 +f 710/349/4 705/350/4 706/351/4 +f 712/352/3 706/351/3 708/347/3 +f 719/353/2 716/354/2 715/355/2 +f 718/356/4 713/357/4 714/358/4 +f 715/355/1 717/359/1 719/353/1 +f 2/1/1 4/360/1 3/2/1 +f 23/5/2 22/361/2 31/6/2 +f 22/361/2 21/362/2 31/6/2 +f 21/362/2 32/363/2 31/6/2 +f 31/6/2 30/364/2 29/365/2 +f 29/365/2 28/366/2 31/6/2 +f 28/366/2 27/367/2 31/6/2 +f 27/367/2 26/368/2 25/4/2 +f 25/4/2 24/369/2 23/5/2 +f 27/367/2 25/4/2 31/6/2 +f 8/7/3 6/10/3 5/8/3 +f 6/10/4 2/1/4 1/3/4 +f 7/11/5 5/8/5 1/3/5 +f 4/13/6 2/1/6 6/10/6 +f 28/15/7 29/27/7 17/16/7 +f 25/18/8 26/29/8 14/19/8 +f 32/21/9 21/39/9 9/22/9 +f 22/24/10 23/31/10 11/25/10 +f 29/27/11 30/33/11 18/28/11 +f 26/29/12 27/370/12 15/30/12 +f 23/31/13 24/37/13 12/32/13 +f 30/33/14 31/38/14 19/34/14 +f 27/35/15 28/15/15 16/17/15 +f 24/37/16 25/18/16 13/20/16 +f 31/38/17 32/21/17 20/23/17 +f 21/39/18 22/24/18 10/26/18 +f 18/28/4 42/74/4 41/40/4 +f 19/34/4 43/59/4 42/41/4 +f 19/34/4 20/23/4 44/42/4 +f 9/22/4 33/71/4 44/44/4 +f 10/26/4 34/66/4 33/45/4 +f 10/26/4 11/25/4 35/46/4 +f 12/32/4 36/57/4 35/48/4 +f 13/20/4 37/63/4 36/49/4 +f 13/20/4 14/19/4 38/50/4 +f 15/30/4 39/55/4 38/52/4 +f 16/17/4 40/61/4 39/53/4 +f 17/16/4 41/68/4 40/54/4 +f 39/55/9 51/98/9 50/56/9 +f 36/57/11 48/92/11 47/58/11 +f 43/59/16 55/82/16 54/60/16 +f 40/61/18 52/76/18 51/62/18 +f 37/63/14 49/371/14 48/64/14 +f 44/42/8 56/84/8 55/65/8 +f 34/66/15 46/88/15 45/67/15 +f 41/68/10 53/78/10 52/69/10 +f 38/50/17 50/372/17 49/70/17 +f 33/71/12 45/86/12 56/72/12 +f 35/46/7 47/90/7 46/73/7 +f 42/74/13 54/373/13 53/75/13 +f 52/76/4 64/107/4 63/77/4 +f 53/78/4 65/114/4 64/79/4 +f 53/75/4 54/373/4 66/80/4 +f 55/82/4 67/105/4 66/83/4 +f 56/84/4 68/110/4 67/85/4 +f 45/86/4 57/117/4 68/87/4 +f 46/88/4 58/112/4 57/89/4 +f 47/90/4 59/119/4 58/91/4 +f 48/92/4 60/103/4 59/93/4 +f 48/64/4 49/371/4 61/94/4 +f 49/70/4 50/372/4 62/96/4 +f 51/98/4 63/101/4 62/99/4 +f 66/80/13 78/374/13 77/100/13 +f 63/101/9 75/375/9 74/102/9 +f 60/103/11 72/376/11 71/104/11 +f 67/105/16 79/377/16 78/106/16 +f 64/107/18 76/378/18 75/108/18 +f 61/94/14 73/379/14 72/109/14 +f 68/110/8 80/380/8 79/111/8 +f 58/112/15 70/381/15 69/113/15 +f 65/114/10 77/382/10 76/115/10 +f 62/96/17 74/383/17 73/116/17 +f 57/117/12 69/384/12 80/118/12 +f 59/119/7 71/385/7 70/120/7 +f 69/122/4 70/386/4 71/387/4 +f 71/387/4 72/388/4 69/122/4 +f 72/388/4 73/123/4 69/122/4 +f 73/123/4 74/389/4 75/390/4 +f 75/390/4 76/391/4 77/392/4 +f 77/392/4 78/393/4 79/121/4 +f 79/121/4 80/394/4 69/122/4 +f 73/123/4 75/390/4 77/392/4 +f 77/392/4 79/121/4 73/123/4 +f 83/124/5 84/395/5 82/125/5 +f 87/127/6 88/135/6 85/128/6 +f 84/130/3 88/135/3 87/127/3 +f 81/132/1 86/129/1 85/128/1 +f 83/134/2 85/128/2 88/135/2 +f 82/125/4 87/127/4 86/129/4 +f 89/137/2 93/396/2 96/138/2 +f 90/140/4 91/143/4 95/141/4 +f 92/139/17 96/138/17 95/141/17 +f 90/140/8 94/142/8 93/144/8 +f 100/146/2 97/397/2 101/147/2 +f 99/149/4 103/152/4 102/150/4 +f 100/146/7 104/148/7 103/152/7 +f 98/151/10 102/150/10 101/153/10 +f 149/155/2 150/161/2 146/156/2 +f 148/158/4 147/398/4 143/159/4 +f 150/161/3 148/158/3 144/160/3 +f 157/162/2 158/399/2 154/163/2 +f 156/165/4 155/168/4 151/166/4 +f 153/164/1 151/166/1 155/168/1 +f 160/169/8 162/400/8 161/170/8 +f 166/173/17 164/177/17 163/175/17 +f 165/176/7 163/175/7 159/171/7 +f 162/172/10 160/178/10 164/177/10 +f 166/173/19 165/176/19 170/180/19 +f 160/182/10 172/401/10 176/183/10 +f 184/186/20 188/216/20 187/187/20 +f 169/181/2 170/180/2 178/189/2 +f 180/195/7 182/402/7 181/196/7 +f 169/181/10 177/190/10 173/198/10 +f 162/200/4 173/403/4 174/201/4 +f 160/203/2 159/208/2 171/204/2 +f 168/184/4 176/183/4 175/206/4 +f 167/207/7 175/206/7 171/204/7 +f 161/202/7 174/201/7 178/189/7 +f 186/193/10 184/186/10 183/188/10 +f 185/209/17 183/188/17 179/197/17 +f 182/192/8 180/210/8 184/186/8 +f 186/193/21 185/209/21 190/212/21 +f 180/214/8 192/404/8 196/215/8 +f 189/213/2 190/212/2 198/218/2 +f 189/213/8 197/219/8 193/221/8 +f 182/223/4 193/405/4 194/224/4 +f 180/226/2 179/230/2 191/227/2 +f 188/216/4 196/215/4 195/229/4 +f 187/187/17 195/229/17 191/227/17 +f 181/225/17 194/224/17 198/218/17 +f 164/177/22 168/184/22 167/207/22 +f 619/231/5 620/406/5 618/232/5 +f 623/234/6 624/242/6 621/235/6 +f 620/237/3 624/242/3 623/234/3 +f 617/239/1 622/236/1 621/235/1 +f 619/241/2 621/235/2 624/242/2 +f 618/232/4 623/234/4 622/236/4 +f 627/244/5 628/407/5 626/245/5 +f 631/247/6 632/255/6 629/248/6 +f 628/250/3 632/255/3 631/247/3 +f 625/252/1 630/249/1 629/248/1 +f 627/254/2 629/248/2 632/255/2 +f 626/245/4 631/247/4 630/249/4 +f 635/257/5 636/408/5 634/258/5 +f 639/260/6 640/268/6 637/261/6 +f 636/263/3 640/268/3 639/260/3 +f 633/265/1 638/262/1 637/261/1 +f 635/267/2 637/261/2 640/268/2 +f 634/258/4 639/260/4 638/262/4 +f 643/270/5 644/409/5 642/271/5 +f 647/273/6 648/281/6 645/274/6 +f 644/276/3 648/281/3 647/273/3 +f 641/278/1 646/275/1 645/274/1 +f 643/280/2 645/274/2 648/281/2 +f 642/271/4 647/273/4 646/275/4 +f 651/283/5 652/410/5 650/284/5 +f 655/286/6 656/294/6 653/287/6 +f 652/289/3 656/294/3 655/286/3 +f 649/291/1 654/288/1 653/287/1 +f 651/293/2 653/287/2 656/294/2 +f 650/284/4 655/286/4 654/288/4 +f 657/296/2 661/411/2 664/297/2 +f 658/299/4 659/302/4 663/300/4 +f 660/298/17 664/297/17 663/300/17 +f 658/299/8 662/301/8 661/303/8 +f 668/305/2 665/412/2 669/306/2 +f 667/308/4 671/311/4 670/309/4 +f 668/305/7 672/307/7 671/311/7 +f 666/310/10 670/309/10 669/312/10 +f 679/314/2 680/320/2 676/315/2 +f 678/317/4 677/413/4 673/318/4 +f 680/320/3 678/317/3 674/319/3 +f 687/321/2 688/414/2 684/322/2 +f 686/324/4 685/327/4 681/325/4 +f 683/323/1 681/325/1 685/327/1 +f 689/328/2 693/415/2 696/329/2 +f 690/331/4 691/334/4 695/332/4 +f 692/330/17 696/329/17 695/332/17 +f 690/331/8 694/333/8 693/335/8 +f 700/337/2 697/416/2 701/338/2 +f 699/340/4 703/343/4 702/341/4 +f 700/337/7 704/339/7 703/343/7 +f 698/342/10 702/341/10 701/344/10 +f 711/346/2 712/352/2 708/347/2 +f 710/349/4 709/417/4 705/350/4 +f 712/352/3 710/349/3 706/351/3 +f 719/353/2 720/418/2 716/354/2 +f 718/356/4 717/359/4 713/357/4 +f 715/355/1 713/357/1 717/359/1 +s 1 +f 105/419/2 120/420/23 112/421/24 +f 111/422/16 118/423/25 110/424/26 +f 109/425/4 116/426/27 108/427/28 +f 106/428/29 115/429/30 114/430/31 +f 112/421/24 119/431/32 111/422/16 +f 110/424/26 117/432/33 109/425/4 +f 107/433/14 116/426/27 115/429/30 +f 105/434/2 114/430/31 113/435/34 +f 115/436/30 121/437/35 114/438/31 +f 120/439/23 126/440/36 119/441/32 +f 117/432/33 125/442/37 124/443/38 +f 115/436/30 123/444/39 122/445/40 +f 119/441/32 125/442/37 118/423/25 +f 117/432/33 123/444/39 116/426/27 +f 127/446/41 133/447/42 126/440/36 +f 124/443/38 132/448/43 131/449/44 +f 123/444/39 129/450/45 122/445/40 +f 126/440/36 132/448/43 125/442/37 +f 124/443/38 130/451/46 123/444/39 +f 122/445/40 128/452/47 121/437/35 +f 120/439/23 113/453/34 127/446/41 +f 127/446/41 113/453/34 134/454/48 +f 114/438/31 121/437/35 113/455/34 +f 121/437/35 128/452/47 113/455/34 +f 128/456/47 135/457/18 113/458/34 +f 134/459/48 141/460/16 133/461/42 +f 113/462/34 142/463/49 134/459/48 +f 132/448/43 139/464/15 131/449/44 +f 130/451/46 137/465/14 129/466/45 +f 133/461/42 140/467/50 132/448/43 +f 131/449/44 138/468/51 130/451/46 +f 129/466/45 136/469/52 128/456/47 +f 199/470/2 214/471/53 206/472/29 +f 205/473/14 212/474/54 204/475/28 +f 203/476/4 210/477/55 202/478/26 +f 201/479/16 208/480/56 200/481/24 +f 206/472/29 213/482/57 205/473/14 +f 203/476/4 212/474/54 211/483/58 +f 201/479/16 210/477/55 209/484/59 +f 199/485/2 208/480/56 207/486/60 +f 209/487/59 215/488/61 208/489/56 +f 214/490/53 220/491/62 213/492/57 +f 212/474/54 218/493/63 211/483/58 +f 210/477/55 216/494/64 209/487/59 +f 212/474/54 220/491/62 219/495/65 +f 210/477/55 218/493/63 217/496/66 +f 220/491/62 228/497/67 227/498/68 +f 219/495/65 225/499/69 218/493/63 +f 217/496/66 223/500/70 216/494/64 +f 220/491/62 226/501/71 219/495/65 +f 218/493/63 224/502/72 217/496/66 +f 215/488/61 223/500/70 222/503/73 +f 214/490/53 207/504/60 221/505/74 +f 221/505/74 207/504/60 228/497/67 +f 208/489/56 215/488/61 207/506/60 +f 215/488/61 222/503/73 207/506/60 +f 222/507/73 229/508/15 207/509/60 +f 228/510/67 235/511/14 227/512/68 +f 207/513/60 236/514/51 228/510/67 +f 226/501/71 233/515/18 225/499/69 +f 224/502/72 231/516/16 223/517/70 +f 227/512/68 234/518/52 226/501/71 +f 225/499/69 232/519/49 224/502/72 +f 223/517/70 230/520/50 222/507/73 +f 237/521/2 252/522/75 244/523/34 +f 242/524/63 251/525/76 250/526/77 +f 241/527/4 248/528/78 240/529/38 +f 239/530/15 246/531/79 238/532/60 +f 243/533/18 252/522/75 251/525/76 +f 241/527/4 250/526/77 249/534/80 +f 239/530/15 248/528/78 247/535/81 +f 238/532/60 245/536/29 237/537/2 +f 247/538/81 253/539/82 246/540/79 +f 251/541/76 259/542/83 258/543/84 +f 250/526/77 256/544/26 249/534/80 +f 247/538/81 255/545/85 254/546/86 +f 250/526/77 258/543/84 257/547/87 +f 248/528/78 256/544/26 255/545/85 +f 258/543/84 266/548/88 265/549/89 +f 257/547/87 263/550/90 256/544/26 +f 255/545/85 261/551/91 254/546/86 +f 258/543/84 264/552/92 257/547/87 +f 255/545/85 263/550/90 262/553/93 +f 253/539/82 261/551/91 260/554/94 +f 252/555/75 245/556/29 259/542/83 +f 259/542/83 245/556/29 266/548/88 +f 246/540/79 253/539/82 245/557/29 +f 253/539/82 260/554/94 245/557/29 +f 260/558/94 267/559/14 245/560/29 +f 266/561/88 273/562/18 265/563/89 +f 245/564/29 274/565/52 266/561/88 +f 264/552/92 271/566/16 263/550/90 +f 262/553/93 269/567/15 261/568/91 +f 265/563/89 272/569/49 264/552/92 +f 263/550/90 270/570/50 262/553/93 +f 261/568/91 268/571/51 260/558/94 +f 275/572/2 290/573/95 282/574/60 +f 281/575/15 288/576/96 280/577/38 +f 279/578/4 286/579/97 278/580/63 +f 277/581/18 284/582/98 276/583/34 +f 282/574/60 289/584/99 281/575/15 +f 280/577/38 287/585/100 279/578/4 +f 277/581/18 286/579/97 285/586/101 +f 276/583/34 283/587/24 275/588/2 +f 285/589/101 291/590/102 284/591/98 +f 289/592/99 297/593/103 296/594/104 +f 288/576/96 294/595/28 287/585/100 +f 285/589/101 293/596/105 292/597/106 +f 288/576/96 296/594/104 295/598/107 +f 287/585/100 293/596/105 286/579/97 +f 296/594/104 304/599/108 303/600/109 +f 295/598/107 301/601/110 294/595/28 +f 293/596/105 299/602/111 292/597/106 +f 295/598/107 303/600/109 302/603/112 +f 293/596/105 301/601/110 300/604/113 +f 291/590/102 299/602/111 298/605/114 +f 290/606/95 283/607/24 297/593/103 +f 297/593/103 283/607/24 304/599/108 +f 284/591/98 291/590/102 283/608/24 +f 291/590/102 298/605/114 283/608/24 +f 298/609/114 305/610/16 283/611/24 +f 304/612/108 311/613/15 303/614/109 +f 283/615/24 312/616/50 304/612/108 +f 302/603/112 309/617/14 301/601/110 +f 300/604/113 307/618/18 299/619/111 +f 303/614/109 310/620/51 302/603/112 +f 301/601/110 308/621/52 300/604/113 +f 299/619/111 306/622/49 298/609/114 +f 313/623/2 328/624/115 320/625/116 +f 319/626/13 326/627/117 318/628/118 +f 316/629/119 325/630/120 324/631/121 +f 315/632/11 322/633/122 314/634/123 +f 320/625/116 327/635/124 319/626/13 +f 318/628/118 325/630/120 317/636/4 +f 315/632/11 324/631/121 323/637/125 +f 314/634/123 321/638/126 313/639/2 +f 323/640/125 329/641/127 322/642/122 +f 327/643/124 335/644/128 334/645/129 +f 326/627/117 332/646/130 325/630/120 +f 323/640/125 331/647/131 330/648/132 +f 327/643/124 333/649/133 326/627/117 +f 325/630/120 331/647/131 324/631/121 +f 334/645/129 342/650/134 341/651/135 +f 333/649/133 339/652/136 332/646/130 +f 331/647/131 337/653/137 330/648/132 +f 334/645/129 340/654/138 333/649/133 +f 332/646/130 338/655/139 331/647/131 +f 329/641/127 337/653/137 336/656/140 +f 328/657/115 321/658/126 335/644/128 +f 335/644/128 321/658/126 342/650/134 +f 322/642/122 329/641/127 321/659/126 +f 329/641/127 336/656/140 321/659/126 +f 336/660/140 343/661/9 321/662/126 +f 342/663/134 349/664/13 341/665/135 +f 321/666/126 350/667/141 342/663/134 +f 340/654/138 347/668/12 339/652/136 +f 338/655/139 345/669/11 337/670/137 +f 341/665/135 348/671/142 340/654/138 +f 339/652/136 346/672/143 338/655/139 +f 337/670/137 344/673/144 336/660/140 +f 351/674/2 366/675/145 358/676/123 +f 357/677/11 364/678/146 356/679/119 +f 355/680/4 362/681/147 354/682/118 +f 353/683/13 360/684/148 352/685/116 +f 357/677/11 366/675/145 365/686/149 +f 355/680/4 364/678/146 363/687/150 +f 353/683/13 362/681/147 361/688/151 +f 351/689/2 360/684/148 359/690/152 +f 361/691/151 367/692/153 360/693/148 +f 366/694/145 372/695/154 365/696/149 +f 364/678/146 370/697/155 363/687/150 +f 361/691/151 369/698/156 368/699/157 +f 364/678/146 372/695/154 371/700/158 +f 363/687/150 369/698/156 362/681/147 +f 372/695/154 380/701/159 379/702/160 +f 371/700/158 377/703/161 370/697/155 +f 368/699/157 376/704/162 375/705/163 +f 372/695/154 378/706/164 371/700/158 +f 370/697/155 376/704/162 369/698/156 +f 367/692/153 375/705/163 374/707/165 +f 366/694/145 359/708/152 373/709/166 +f 373/709/166 359/708/152 380/701/159 +f 360/693/148 367/692/153 359/710/152 +f 367/692/153 374/707/165 359/710/152 +f 374/711/165 381/712/12 359/713/152 +f 380/714/159 387/715/11 379/716/160 +f 359/717/152 388/718/143 380/714/159 +f 378/706/164 385/719/9 377/703/161 +f 376/704/162 383/720/13 375/721/163 +f 379/716/160 386/722/144 378/706/164 +f 377/703/161 384/723/141 376/704/162 +f 375/721/163 382/724/142 374/711/165 +f 389/725/2 404/726/167 396/727/126 +f 394/728/155 403/729/168 402/730/169 +f 393/731/4 400/732/170 392/733/130 +f 391/734/12 398/735/171 390/736/152 +f 396/727/126 403/729/168 395/737/9 +f 393/731/4 402/730/169 401/738/172 +f 391/734/12 400/732/170 399/739/173 +f 389/740/2 398/735/171 397/741/123 +f 399/742/173 405/743/174 398/744/171 +f 403/745/168 411/746/175 410/747/176 +f 402/730/169 408/748/118 401/738/172 +f 399/742/173 407/749/177 406/750/178 +f 402/730/169 410/747/176 409/751/179 +f 400/732/170 408/748/118 407/749/177 +f 410/747/176 418/752/180 417/753/181 +f 409/751/179 415/754/182 408/748/118 +f 406/750/178 414/755/183 413/756/184 +f 409/751/179 417/753/181 416/757/185 +f 408/748/118 414/755/183 407/749/177 +f 405/743/174 413/756/184 412/758/186 +f 404/759/167 397/760/123 411/746/175 +f 411/746/175 397/760/123 418/752/180 +f 398/744/171 405/743/174 397/761/123 +f 405/743/174 412/758/186 397/761/123 +f 412/762/186 419/763/11 397/764/123 +f 418/765/180 425/766/9 417/767/181 +f 397/768/123 426/769/144 418/765/180 +f 416/757/185 423/770/13 415/754/182 +f 414/755/183 421/771/12 413/772/184 +f 417/767/181 424/773/141 416/757/185 +f 415/754/182 422/774/142 414/755/183 +f 413/772/184 420/775/143 412/762/186 +f 427/776/2 442/777/187 434/778/152 +f 433/779/12 440/780/188 432/781/130 +f 431/782/4 438/783/189 430/784/155 +f 429/785/9 436/786/190 428/787/126 +f 433/779/12 442/777/187 441/788/191 +f 432/781/130 439/789/192 431/782/4 +f 429/785/9 438/783/189 437/790/193 +f 427/791/2 436/786/190 435/792/116 +f 437/793/193 443/794/194 436/795/190 +f 441/796/191 449/797/195 448/798/196 +f 440/780/188 446/799/119 439/789/192 +f 437/793/193 445/800/197 444/801/198 +f 440/780/188 448/798/196 447/802/199 +f 439/789/192 445/800/197 438/783/189 +f 448/798/196 456/803/200 455/804/201 +f 447/802/199 453/805/202 446/799/119 +f 444/801/198 452/806/203 451/807/204 +f 447/802/199 455/804/201 454/808/205 +f 446/799/119 452/806/203 445/800/197 +f 443/794/194 451/807/204 450/809/206 +f 442/810/187 435/811/116 449/797/195 +f 449/797/195 435/811/116 456/803/200 +f 436/795/190 443/794/194 435/812/116 +f 443/794/194 450/809/206 435/812/116 +f 450/813/206 457/814/13 435/815/116 +f 456/816/200 463/817/12 455/818/201 +f 435/819/116 464/820/142 456/816/200 +f 454/808/205 461/821/11 453/805/202 +f 452/806/203 459/822/9 451/823/204 +f 455/818/201 462/824/143 454/808/205 +f 453/805/202 460/825/144 452/806/203 +f 451/823/204 458/826/141 450/813/206 +f 465/827/2 480/828/207 472/829/21 +f 471/830/10 478/831/208 470/832/20 +f 468/833/209 477/834/210 476/835/211 +f 467/836/7 474/837/212 466/838/213 +f 471/830/10 480/828/207 479/839/214 +f 470/832/20 477/834/210 469/840/4 +f 467/836/7 476/835/211 475/841/215 +f 465/842/2 474/837/212 473/843/19 +f 475/844/215 481/845/216 474/846/212 +f 480/847/207 486/848/217 479/849/214 +f 478/831/208 484/850/218 477/834/210 +f 475/844/215 483/851/219 482/852/220 +f 478/831/208 486/848/217 485/853/221 +f 476/835/211 484/850/218 483/851/219 +f 486/848/217 494/854/222 493/855/223 +f 485/853/221 491/856/224 484/850/218 +f 483/851/219 489/857/225 482/852/220 +f 486/848/217 492/858/226 485/853/221 +f 483/851/219 491/856/224 490/859/227 +f 481/845/216 489/857/225 488/860/228 +f 480/847/207 473/861/19 487/862/229 +f 487/862/229 473/861/19 494/854/222 +f 474/846/212 481/845/216 473/863/19 +f 481/845/216 488/860/228 473/863/19 +f 488/864/228 495/865/17 473/866/19 +f 494/867/222 501/868/10 493/869/223 +f 473/870/19 502/871/6 494/867/222 +f 492/858/226 499/872/8 491/856/224 +f 490/859/227 497/873/7 489/874/225 +f 493/869/223 500/875/1 492/858/226 +f 491/856/224 498/876/5 490/859/227 +f 489/874/225 496/877/3 488/864/228 +f 503/878/2 518/879/230 510/880/213 +f 509/881/7 516/882/231 508/883/209 +f 507/884/4 514/885/232 506/886/20 +f 505/887/10 512/888/233 504/889/21 +f 510/880/213 517/890/234 509/881/7 +f 507/884/4 516/882/231 515/891/235 +f 505/887/10 514/885/232 513/892/236 +f 503/893/2 512/888/233 511/894/237 +f 513/895/236 519/896/238 512/897/233 +f 517/898/234 525/899/239 524/900/240 +f 515/891/235 523/901/241 522/902/22 +f 513/895/236 521/903/242 520/904/243 +f 517/898/234 523/901/241 516/882/231 +f 515/891/235 521/903/242 514/885/232 +f 524/900/240 532/905/244 531/906/245 +f 522/902/22 530/907/246 529/908/247 +f 520/904/243 528/909/248 527/910/249 +f 523/901/241 531/906/245 530/907/246 +f 522/902/22 528/909/248 521/903/242 +f 520/904/243 526/911/250 519/896/238 +f 518/912/230 511/913/237 525/899/239 +f 525/899/239 511/913/237 532/905/244 +f 512/897/233 519/896/238 511/914/237 +f 519/896/238 526/911/250 511/914/237 +f 526/915/250 533/916/8 511/917/237 +f 532/918/244 539/919/7 531/920/245 +f 511/921/237 540/922/5 532/918/244 +f 530/907/246 537/923/17 529/908/247 +f 528/909/248 535/924/10 527/925/249 +f 531/920/245 538/926/3 530/907/246 +f 529/908/247 536/927/6 528/909/248 +f 527/925/249 534/928/1 526/915/250 +f 541/929/2 556/930/251 548/931/19 +f 547/932/17 554/933/252 546/934/22 +f 544/935/218 553/936/253 552/937/254 +f 543/938/8 550/939/255 542/940/237 +f 547/932/17 556/930/251 555/941/256 +f 545/942/4 554/933/252 553/936/253 +f 543/938/8 552/937/254 551/943/257 +f 541/944/2 550/939/255 549/945/213 +f 551/946/257 557/947/258 550/948/255 +f 556/949/251 562/950/259 555/951/256 +f 554/933/252 560/952/20 553/936/253 +f 551/946/257 559/953/260 558/954/261 +f 554/933/252 562/950/259 561/955/262 +f 553/936/253 559/953/260 552/937/254 +f 562/950/259 570/956/263 569/957/264 +f 560/952/20 568/958/265 567/959/266 +f 559/953/260 565/960/267 558/954/261 +f 562/950/259 568/958/265 561/955/262 +f 560/952/20 566/961/268 559/953/260 +f 557/947/258 565/960/267 564/962/269 +f 556/949/251 549/963/213 563/964/270 +f 563/964/270 549/963/213 570/956/263 +f 550/948/255 557/947/258 549/965/213 +f 557/947/258 564/962/269 549/965/213 +f 564/966/269 571/967/7 549/968/213 +f 570/969/263 577/970/17 569/971/264 +f 549/972/213 578/973/3 570/969/263 +f 568/958/265 575/974/10 567/959/266 +f 566/961/268 573/975/8 565/976/267 +f 569/971/264 576/977/6 568/958/265 +f 567/959/266 574/978/1 566/961/268 +f 565/976/267 572/979/5 564/966/269 +f 579/980/2 594/981/271 586/982/237 +f 584/983/218 593/984/272 592/985/273 +f 582/986/22 591/987/274 590/988/275 +f 581/989/17 588/990/276 580/991/19 +f 585/992/8 594/981/271 593/984/272 +f 584/983/218 591/987/274 583/993/4 +f 581/989/17 590/988/275 589/994/277 +f 580/991/19 587/995/21 579/996/2 +f 589/997/277 595/998/278 588/999/276 +f 593/1000/272 601/1001/279 600/1002/280 +f 592/985/273 598/1003/209 591/987/274 +f 589/997/277 597/1004/281 596/1005/282 +f 593/1000/272 599/1006/283 592/985/273 +f 591/987/274 597/1004/281 590/988/275 +f 600/1002/280 608/1007/284 607/1008/285 +f 599/1006/283 605/1009/286 598/1003/209 +f 597/1004/281 603/1010/287 596/1005/282 +f 599/1006/283 607/1008/285 606/1011/288 +f 598/1003/209 604/1012/289 597/1004/281 +f 596/1005/282 602/1013/290 595/998/278 +f 594/1014/271 587/1015/21 601/1001/279 +f 601/1001/279 587/1015/21 608/1007/284 +f 588/999/276 595/998/278 587/1016/21 +f 595/998/278 602/1013/290 587/1016/21 +f 602/1017/290 609/1018/10 587/1019/21 +f 608/1020/284 615/1021/8 607/1022/285 +f 587/1023/21 616/1024/1 608/1020/284 +f 606/1011/288 613/1025/7 605/1009/286 +f 604/1012/289 611/1026/17 603/1027/287 +f 607/1022/285 614/1028/5 606/1011/288 +f 605/1009/286 612/1029/3 604/1012/289 +f 603/1027/287 610/1030/6 602/1017/290 +f 105/419/2 113/1031/34 120/420/23 +f 111/422/16 119/431/32 118/423/25 +f 109/425/4 117/432/33 116/426/27 +f 106/428/29 107/433/14 115/429/30 +f 112/421/24 120/420/23 119/431/32 +f 110/424/26 118/423/25 117/432/33 +f 107/433/14 108/427/28 116/426/27 +f 105/434/2 106/428/29 114/430/31 +f 115/436/30 122/445/40 121/437/35 +f 120/439/23 127/446/41 126/440/36 +f 117/432/33 118/423/25 125/442/37 +f 115/436/30 116/426/27 123/444/39 +f 119/441/32 126/440/36 125/442/37 +f 117/432/33 124/443/38 123/444/39 +f 127/446/41 134/454/48 133/447/42 +f 124/443/38 125/442/37 132/448/43 +f 123/444/39 130/451/46 129/450/45 +f 126/440/36 133/447/42 132/448/43 +f 124/443/38 131/449/44 130/451/46 +f 122/445/40 129/450/45 128/452/47 +f 128/456/47 136/469/52 135/457/18 +f 134/459/48 142/463/49 141/460/16 +f 113/462/34 135/1032/18 142/463/49 +f 132/448/43 140/467/50 139/464/15 +f 130/451/46 138/468/51 137/465/14 +f 133/461/42 141/460/16 140/467/50 +f 131/449/44 139/464/15 138/468/51 +f 129/466/45 137/465/14 136/469/52 +f 199/470/2 207/1033/60 214/471/53 +f 205/473/14 213/482/57 212/474/54 +f 203/476/4 211/483/58 210/477/55 +f 201/479/16 209/484/59 208/480/56 +f 206/472/29 214/471/53 213/482/57 +f 203/476/4 204/475/28 212/474/54 +f 201/479/16 202/478/26 210/477/55 +f 199/485/2 200/481/24 208/480/56 +f 209/487/59 216/494/64 215/488/61 +f 214/490/53 221/505/74 220/491/62 +f 212/474/54 219/495/65 218/493/63 +f 210/477/55 217/496/66 216/494/64 +f 212/474/54 213/492/57 220/491/62 +f 210/477/55 211/483/58 218/493/63 +f 220/491/62 221/505/74 228/497/67 +f 219/495/65 226/501/71 225/499/69 +f 217/496/66 224/502/72 223/500/70 +f 220/491/62 227/498/68 226/501/71 +f 218/493/63 225/499/69 224/502/72 +f 215/488/61 216/494/64 223/500/70 +f 222/507/73 230/520/50 229/508/15 +f 228/510/67 236/514/51 235/511/14 +f 207/513/60 229/1034/15 236/514/51 +f 226/501/71 234/518/52 233/515/18 +f 224/502/72 232/519/49 231/516/16 +f 227/512/68 235/511/14 234/518/52 +f 225/499/69 233/515/18 232/519/49 +f 223/517/70 231/516/16 230/520/50 +f 237/521/2 245/1035/29 252/522/75 +f 242/524/63 243/533/18 251/525/76 +f 241/527/4 249/534/80 248/528/78 +f 239/530/15 247/535/81 246/531/79 +f 243/533/18 244/523/34 252/522/75 +f 241/527/4 242/524/63 250/526/77 +f 239/530/15 240/529/38 248/528/78 +f 238/532/60 246/531/79 245/536/29 +f 247/538/81 254/546/86 253/539/82 +f 251/541/76 252/555/75 259/542/83 +f 250/526/77 257/547/87 256/544/26 +f 247/538/81 248/528/78 255/545/85 +f 250/526/77 251/541/76 258/543/84 +f 248/528/78 249/534/80 256/544/26 +f 258/543/84 259/542/83 266/548/88 +f 257/547/87 264/552/92 263/550/90 +f 255/545/85 262/553/93 261/551/91 +f 258/543/84 265/549/89 264/552/92 +f 255/545/85 256/544/26 263/550/90 +f 253/539/82 254/546/86 261/551/91 +f 260/558/94 268/571/51 267/559/14 +f 266/561/88 274/565/52 273/562/18 +f 245/564/29 267/1036/14 274/565/52 +f 264/552/92 272/569/49 271/566/16 +f 262/553/93 270/570/50 269/567/15 +f 265/563/89 273/562/18 272/569/49 +f 263/550/90 271/566/16 270/570/50 +f 261/568/91 269/567/15 268/571/51 +f 275/572/2 283/1037/24 290/573/95 +f 281/575/15 289/584/99 288/576/96 +f 279/578/4 287/585/100 286/579/97 +f 277/581/18 285/586/101 284/582/98 +f 282/574/60 290/573/95 289/584/99 +f 280/577/38 288/576/96 287/585/100 +f 277/581/18 278/580/63 286/579/97 +f 276/583/34 284/582/98 283/587/24 +f 285/589/101 292/597/106 291/590/102 +f 289/592/99 290/606/95 297/593/103 +f 288/576/96 295/598/107 294/595/28 +f 285/589/101 286/579/97 293/596/105 +f 288/576/96 289/592/99 296/594/104 +f 287/585/100 294/595/28 293/596/105 +f 296/594/104 297/593/103 304/599/108 +f 295/598/107 302/603/112 301/601/110 +f 293/596/105 300/604/113 299/602/111 +f 295/598/107 296/594/104 303/600/109 +f 293/596/105 294/595/28 301/601/110 +f 291/590/102 292/597/106 299/602/111 +f 298/609/114 306/622/49 305/610/16 +f 304/612/108 312/616/50 311/613/15 +f 283/615/24 305/1038/16 312/616/50 +f 302/603/112 310/620/51 309/617/14 +f 300/604/113 308/621/52 307/618/18 +f 303/614/109 311/613/15 310/620/51 +f 301/601/110 309/617/14 308/621/52 +f 299/619/111 307/618/18 306/622/49 +f 313/623/2 321/1039/126 328/624/115 +f 319/626/13 327/635/124 326/627/117 +f 316/629/119 317/636/4 325/630/120 +f 315/632/11 323/637/125 322/633/122 +f 320/625/116 328/624/115 327/635/124 +f 318/628/118 326/627/117 325/630/120 +f 315/632/11 316/629/119 324/631/121 +f 314/634/123 322/633/122 321/638/126 +f 323/640/125 330/648/132 329/641/127 +f 327/643/124 328/657/115 335/644/128 +f 326/627/117 333/649/133 332/646/130 +f 323/640/125 324/631/121 331/647/131 +f 327/643/124 334/645/129 333/649/133 +f 325/630/120 332/646/130 331/647/131 +f 334/645/129 335/644/128 342/650/134 +f 333/649/133 340/654/138 339/652/136 +f 331/647/131 338/655/139 337/653/137 +f 334/645/129 341/651/135 340/654/138 +f 332/646/130 339/652/136 338/655/139 +f 329/641/127 330/648/132 337/653/137 +f 336/660/140 344/673/144 343/661/9 +f 342/663/134 350/667/141 349/664/13 +f 321/666/126 343/1040/9 350/667/141 +f 340/654/138 348/671/142 347/668/12 +f 338/655/139 346/672/143 345/669/11 +f 341/665/135 349/664/13 348/671/142 +f 339/652/136 347/668/12 346/672/143 +f 337/670/137 345/669/11 344/673/144 +f 351/674/2 359/1041/152 366/675/145 +f 357/677/11 365/686/149 364/678/146 +f 355/680/4 363/687/150 362/681/147 +f 353/683/13 361/688/151 360/684/148 +f 357/677/11 358/676/123 366/675/145 +f 355/680/4 356/679/119 364/678/146 +f 353/683/13 354/682/118 362/681/147 +f 351/689/2 352/685/116 360/684/148 +f 361/691/151 368/699/157 367/692/153 +f 366/694/145 373/709/166 372/695/154 +f 364/678/146 371/700/158 370/697/155 +f 361/691/151 362/681/147 369/698/156 +f 364/678/146 365/696/149 372/695/154 +f 363/687/150 370/697/155 369/698/156 +f 372/695/154 373/709/166 380/701/159 +f 371/700/158 378/706/164 377/703/161 +f 368/699/157 369/698/156 376/704/162 +f 372/695/154 379/702/160 378/706/164 +f 370/697/155 377/703/161 376/704/162 +f 367/692/153 368/699/157 375/705/163 +f 374/711/165 382/724/142 381/712/12 +f 380/714/159 388/718/143 387/715/11 +f 359/717/152 381/1042/12 388/718/143 +f 378/706/164 386/722/144 385/719/9 +f 376/704/162 384/723/141 383/720/13 +f 379/716/160 387/715/11 386/722/144 +f 377/703/161 385/719/9 384/723/141 +f 375/721/163 383/720/13 382/724/142 +f 389/725/2 397/1043/123 404/726/167 +f 394/728/155 395/737/9 403/729/168 +f 393/731/4 401/738/172 400/732/170 +f 391/734/12 399/739/173 398/735/171 +f 396/727/126 404/726/167 403/729/168 +f 393/731/4 394/728/155 402/730/169 +f 391/734/12 392/733/130 400/732/170 +f 389/740/2 390/736/152 398/735/171 +f 399/742/173 406/750/178 405/743/174 +f 403/745/168 404/759/167 411/746/175 +f 402/730/169 409/751/179 408/748/118 +f 399/742/173 400/732/170 407/749/177 +f 402/730/169 403/745/168 410/747/176 +f 400/732/170 401/738/172 408/748/118 +f 410/747/176 411/746/175 418/752/180 +f 409/751/179 416/757/185 415/754/182 +f 406/750/178 407/749/177 414/755/183 +f 409/751/179 410/747/176 417/753/181 +f 408/748/118 415/754/182 414/755/183 +f 405/743/174 406/750/178 413/756/184 +f 412/762/186 420/775/143 419/763/11 +f 418/765/180 426/769/144 425/766/9 +f 397/768/123 419/1044/11 426/769/144 +f 416/757/185 424/773/141 423/770/13 +f 414/755/183 422/774/142 421/771/12 +f 417/767/181 425/766/9 424/773/141 +f 415/754/182 423/770/13 422/774/142 +f 413/772/184 421/771/12 420/775/143 +f 427/776/2 435/1045/116 442/777/187 +f 433/779/12 441/788/191 440/780/188 +f 431/782/4 439/789/192 438/783/189 +f 429/785/9 437/790/193 436/786/190 +f 433/779/12 434/778/152 442/777/187 +f 432/781/130 440/780/188 439/789/192 +f 429/785/9 430/784/155 438/783/189 +f 427/791/2 428/787/126 436/786/190 +f 437/793/193 444/801/198 443/794/194 +f 441/796/191 442/810/187 449/797/195 +f 440/780/188 447/802/199 446/799/119 +f 437/793/193 438/783/189 445/800/197 +f 440/780/188 441/796/191 448/798/196 +f 439/789/192 446/799/119 445/800/197 +f 448/798/196 449/797/195 456/803/200 +f 447/802/199 454/808/205 453/805/202 +f 444/801/198 445/800/197 452/806/203 +f 447/802/199 448/798/196 455/804/201 +f 446/799/119 453/805/202 452/806/203 +f 443/794/194 444/801/198 451/807/204 +f 450/813/206 458/826/141 457/814/13 +f 456/816/200 464/820/142 463/817/12 +f 435/819/116 457/1046/13 464/820/142 +f 454/808/205 462/824/143 461/821/11 +f 452/806/203 460/825/144 459/822/9 +f 455/818/201 463/817/12 462/824/143 +f 453/805/202 461/821/11 460/825/144 +f 451/823/204 459/822/9 458/826/141 +f 465/827/2 473/1047/19 480/828/207 +f 471/830/10 479/839/214 478/831/208 +f 468/833/209 469/840/4 477/834/210 +f 467/836/7 475/841/215 474/837/212 +f 471/830/10 472/829/21 480/828/207 +f 470/832/20 478/831/208 477/834/210 +f 467/836/7 468/833/209 476/835/211 +f 465/842/2 466/838/213 474/837/212 +f 475/844/215 482/852/220 481/845/216 +f 480/847/207 487/862/229 486/848/217 +f 478/831/208 485/853/221 484/850/218 +f 475/844/215 476/835/211 483/851/219 +f 478/831/208 479/849/214 486/848/217 +f 476/835/211 477/834/210 484/850/218 +f 486/848/217 487/862/229 494/854/222 +f 485/853/221 492/858/226 491/856/224 +f 483/851/219 490/859/227 489/857/225 +f 486/848/217 493/855/223 492/858/226 +f 483/851/219 484/850/218 491/856/224 +f 481/845/216 482/852/220 489/857/225 +f 488/864/228 496/877/3 495/865/17 +f 494/867/222 502/871/6 501/868/10 +f 473/870/19 495/1048/17 502/871/6 +f 492/858/226 500/875/1 499/872/8 +f 490/859/227 498/876/5 497/873/7 +f 493/869/223 501/868/10 500/875/1 +f 491/856/224 499/872/8 498/876/5 +f 489/874/225 497/873/7 496/877/3 +f 503/878/2 511/1049/237 518/879/230 +f 509/881/7 517/890/234 516/882/231 +f 507/884/4 515/891/235 514/885/232 +f 505/887/10 513/892/236 512/888/233 +f 510/880/213 518/879/230 517/890/234 +f 507/884/4 508/883/209 516/882/231 +f 505/887/10 506/886/20 514/885/232 +f 503/893/2 504/889/21 512/888/233 +f 513/895/236 520/904/243 519/896/238 +f 517/898/234 518/912/230 525/899/239 +f 515/891/235 516/882/231 523/901/241 +f 513/895/236 514/885/232 521/903/242 +f 517/898/234 524/900/240 523/901/241 +f 515/891/235 522/902/22 521/903/242 +f 524/900/240 525/899/239 532/905/244 +f 522/902/22 523/901/241 530/907/246 +f 520/904/243 521/903/242 528/909/248 +f 523/901/241 524/900/240 531/906/245 +f 522/902/22 529/908/247 528/909/248 +f 520/904/243 527/910/249 526/911/250 +f 526/915/250 534/928/1 533/916/8 +f 532/918/244 540/922/5 539/919/7 +f 511/921/237 533/1050/8 540/922/5 +f 530/907/246 538/926/3 537/923/17 +f 528/909/248 536/927/6 535/924/10 +f 531/920/245 539/919/7 538/926/3 +f 529/908/247 537/923/17 536/927/6 +f 527/925/249 535/924/10 534/928/1 +f 541/929/2 549/1051/213 556/930/251 +f 547/932/17 555/941/256 554/933/252 +f 544/935/218 545/942/4 553/936/253 +f 543/938/8 551/943/257 550/939/255 +f 547/932/17 548/931/19 556/930/251 +f 545/942/4 546/934/22 554/933/252 +f 543/938/8 544/935/218 552/937/254 +f 541/944/2 542/940/237 550/939/255 +f 551/946/257 558/954/261 557/947/258 +f 556/949/251 563/964/270 562/950/259 +f 554/933/252 561/955/262 560/952/20 +f 551/946/257 552/937/254 559/953/260 +f 554/933/252 555/951/256 562/950/259 +f 553/936/253 560/952/20 559/953/260 +f 562/950/259 563/964/270 570/956/263 +f 560/952/20 561/955/262 568/958/265 +f 559/953/260 566/961/268 565/960/267 +f 562/950/259 569/957/264 568/958/265 +f 560/952/20 567/959/266 566/961/268 +f 557/947/258 558/954/261 565/960/267 +f 564/966/269 572/979/5 571/967/7 +f 570/969/263 578/973/3 577/970/17 +f 549/972/213 571/1052/7 578/973/3 +f 568/958/265 576/977/6 575/974/10 +f 566/961/268 574/978/1 573/975/8 +f 569/971/264 577/970/17 576/977/6 +f 567/959/266 575/974/10 574/978/1 +f 565/976/267 573/975/8 572/979/5 +f 579/980/2 587/1053/21 594/981/271 +f 584/983/218 585/992/8 593/984/272 +f 582/986/22 583/993/4 591/987/274 +f 581/989/17 589/994/277 588/990/276 +f 585/992/8 586/982/237 594/981/271 +f 584/983/218 592/985/273 591/987/274 +f 581/989/17 582/986/22 590/988/275 +f 580/991/19 588/990/276 587/995/21 +f 589/997/277 596/1005/282 595/998/278 +f 593/1000/272 594/1014/271 601/1001/279 +f 592/985/273 599/1006/283 598/1003/209 +f 589/997/277 590/988/275 597/1004/281 +f 593/1000/272 600/1002/280 599/1006/283 +f 591/987/274 598/1003/209 597/1004/281 +f 600/1002/280 601/1001/279 608/1007/284 +f 599/1006/283 606/1011/288 605/1009/286 +f 597/1004/281 604/1012/289 603/1010/287 +f 599/1006/283 600/1002/280 607/1008/285 +f 598/1003/209 605/1009/286 604/1012/289 +f 596/1005/282 603/1010/287 602/1013/290 +f 602/1017/290 610/1030/6 609/1018/10 +f 608/1020/284 616/1024/1 615/1021/8 +f 587/1023/21 609/1054/10 616/1024/1 +f 606/1011/288 614/1028/5 613/1025/7 +f 604/1012/289 612/1029/3 611/1026/17 +f 607/1022/285 615/1021/8 614/1028/5 +f 605/1009/286 613/1025/7 612/1029/3 +f 603/1027/287 611/1026/17 610/1030/6 diff --git a/src/main/resources/assets/hbm/models/particleaccelerator/dipole.obj b/src/main/resources/assets/hbm/models/particleaccelerator/dipole.obj new file mode 100644 index 000000000..f0f5f3141 --- /dev/null +++ b/src/main/resources/assets/hbm/models/particleaccelerator/dipole.obj @@ -0,0 +1,756 @@ +# Blender v2.79 (sub 0) OBJ File: 'dipole.blend' +# www.blender.org +o Cube_Cube.001 +v 0.500000 1.000000 1.500000 +v 0.500000 2.000000 1.500000 +v -0.500000 2.000000 1.500000 +v -0.500000 1.000000 1.500000 +v 0.250000 1.250000 1.250000 +v -0.250000 1.250000 1.250000 +v -0.250000 1.750000 1.250000 +v 0.250000 1.750000 1.250000 +v 0.500000 2.000000 -1.500000 +v 0.500000 1.000000 -1.500000 +v -0.500000 1.000000 -1.500000 +v -0.500000 2.000000 -1.500000 +v -0.250000 1.250000 -1.250000 +v -0.250000 1.750000 -1.250000 +v 0.250000 1.250000 -1.250000 +v 0.250000 1.750000 -1.250000 +v 0.500000 1.750000 -0.500000 +v 0.500000 1.250000 -0.500000 +v 0.500000 1.750000 0.500000 +v 0.500000 1.250000 0.500000 +v -0.500000 1.750000 -0.500000 +v -0.500000 1.250000 -0.500000 +v -0.500000 1.750000 0.500000 +v -0.500000 1.250000 0.500000 +v 1.500000 1.000000 0.500000 +v 1.500000 2.000000 0.500000 +v 1.500000 1.000000 -0.500000 +v 1.500000 2.000000 -0.500000 +v 1.250000 1.250000 -0.250000 +v 1.250000 1.750000 -0.250000 +v 1.250000 1.250000 0.250000 +v 1.250000 1.750000 0.250000 +v 1.000000 0.500000 1.500000 +v 1.500000 0.500000 1.000000 +v -1.500000 0.500000 1.000000 +v -1.000000 0.500000 1.500000 +v 1.500000 0.500000 -1.000000 +v 1.000000 0.500000 -1.500000 +v -1.000000 0.500000 -1.500000 +v -1.500000 0.500000 -1.000000 +v 1.000000 -0.000000 -1.500000 +v 1.500000 -0.000000 -1.000000 +v 1.500000 -0.000000 1.000000 +v 1.000000 -0.000000 1.500000 +v -1.000000 0.000000 1.500000 +v -1.500000 0.000000 1.000000 +v -1.500000 0.000000 -1.000000 +v -1.000000 0.000000 -1.500000 +v -1.000000 2.500000 1.500000 +v -1.500000 2.500000 1.000000 +v 1.500000 2.500000 1.000000 +v 1.000000 2.500000 1.500000 +v -1.500000 2.500000 -1.000000 +v -1.000000 2.500000 -1.500000 +v 1.000000 2.500000 -1.500000 +v 1.500000 2.500000 -1.000000 +v -1.000000 3.000000 -1.500000 +v -1.500000 3.000000 -1.000000 +v -1.500000 3.000000 1.000000 +v -1.000000 3.000000 1.500000 +v 1.000000 3.000000 1.500000 +v 1.500000 3.000000 1.000000 +v 1.500000 3.000000 -1.000000 +v 1.000000 3.000000 -1.500000 +v -1.250000 1.750000 -0.250000 +v -1.250000 1.250000 -0.250000 +v -1.250000 1.750000 0.250000 +v -1.250000 1.250000 0.250000 +v -1.500000 2.000000 -0.500000 +v -1.500000 1.000000 -0.500000 +v -1.500000 2.000000 0.500000 +v -1.500000 1.000000 0.500000 +v 0.375000 1.750000 -0.750000 +v 0.750000 1.750000 -0.375000 +v -0.750000 1.750000 -0.375000 +v -0.375000 1.750000 -0.750000 +v -0.375000 1.750000 0.750000 +v -0.750000 1.750000 0.375000 +v 0.750000 1.750000 0.375000 +v 0.375000 1.750000 0.750000 +v -0.500000 0.500000 1.000000 +v -1.000000 0.500000 0.500000 +v 1.000000 0.500000 0.500000 +v 0.500000 0.500000 1.000000 +v -1.000000 0.500000 -0.500000 +v -0.500000 0.500000 -1.000000 +v 0.500000 0.500000 -1.000000 +v 1.000000 0.500000 -0.500000 +v -0.500000 1.000000 -1.000000 +v -1.000000 1.000000 -0.500000 +v -1.000000 1.000000 0.500000 +v -0.500000 1.000000 1.000000 +v 0.500000 1.000000 1.000000 +v 1.000000 1.000000 0.500000 +v 1.000000 1.000000 -0.500000 +v 0.500000 1.000000 -1.000000 +v 0.375000 1.250000 0.750000 +v 0.750000 1.250000 0.375000 +v -0.750000 1.250000 0.375000 +v -0.375000 1.250000 0.750000 +v -0.375000 1.250000 -0.750000 +v -0.750000 1.250000 -0.375000 +v 0.750000 1.250000 -0.375000 +v 0.375000 1.250000 -0.750000 +v 0.375000 1.000000 -0.750000 +v 0.750000 1.000000 -0.375000 +v -0.750000 1.000000 -0.375000 +v -0.375000 1.000000 -0.750000 +v 0.750000 1.000000 0.375000 +v 0.375000 1.000000 0.750000 +v -0.375000 1.000000 0.750000 +v -0.750000 1.000000 0.375000 +v 0.750000 2.000000 0.375000 +v 0.750000 2.000000 -0.375000 +v 0.375000 2.000000 0.750000 +v -0.375000 2.000000 0.750000 +v 0.375000 2.000000 -0.750000 +v -0.375000 2.000000 -0.750000 +v -0.750000 2.000000 -0.375000 +v -0.750000 2.000000 0.375000 +v -0.500000 2.000000 -1.000000 +v -1.000000 2.000000 -0.500000 +v -1.000000 2.000000 0.500000 +v -0.500000 2.000000 1.000000 +v 0.500000 2.000000 1.000000 +v 1.000000 2.000000 0.500000 +v 1.000000 2.000000 -0.500000 +v 0.500000 2.000000 -1.000000 +v -0.500000 2.500000 1.000000 +v -1.000000 2.500000 0.500000 +v -1.000000 2.500000 -0.500000 +v -0.500000 2.500000 -1.000000 +v 0.500000 2.500000 -1.000000 +v 1.000000 2.500000 -0.500000 +v 1.000000 2.500000 0.500000 +v 0.500000 2.500000 1.000000 +v -0.500000 1.750000 -0.250000 +v -0.500000 1.250000 -0.250000 +v -0.500000 1.750000 0.250000 +v -0.500000 1.250000 0.250000 +v 0.250000 1.250000 0.500000 +v -0.250000 1.250000 0.500000 +v -0.250000 1.750000 0.500000 +v 0.250000 1.750000 0.500000 +v 0.500000 1.250000 -0.250000 +v 0.500000 1.750000 -0.250000 +v 0.500000 1.250000 0.250000 +v 0.500000 1.750000 0.250000 +v -0.250000 1.250000 -0.500000 +v -0.250000 1.750000 -0.500000 +v 0.250000 1.250000 -0.500000 +v 0.250000 1.750000 -0.500000 +v -1.000000 0.500000 -0.646447 +v -0.646447 0.500000 -1.000000 +v -1.353553 0.500000 -1.000000 +v -1.000000 0.500000 -1.353553 +v -1.000000 2.500000 -0.646447 +v -0.646447 2.500000 -1.000000 +v -1.353553 2.500000 -1.000000 +v -1.000000 2.500000 -1.353553 +v -1.000000 0.500000 1.353553 +v -0.646447 0.500000 1.000000 +v -1.353553 0.500000 1.000000 +v -1.000000 0.500000 0.646447 +v -1.000000 2.500000 1.353553 +v -0.646447 2.500000 1.000000 +v -1.353553 2.500000 1.000000 +v -1.000000 2.500000 0.646447 +v 1.000000 0.500000 -0.646447 +v 1.353553 0.500000 -1.000000 +v 0.646447 0.500000 -1.000000 +v 1.000000 0.500000 -1.353553 +v 1.000000 2.500000 -0.646447 +v 1.353553 2.500000 -1.000000 +v 0.646447 2.500000 -1.000000 +v 1.000000 2.500000 -1.353553 +v 1.000000 0.500000 1.353553 +v 1.353553 0.500000 1.000000 +v 0.646447 0.500000 1.000000 +v 1.000000 0.500000 0.646447 +v 1.000000 2.500000 1.353553 +v 1.353553 2.500000 1.000000 +v 0.646447 2.500000 1.000000 +v 1.000000 2.500000 0.646447 +vt 0.921053 0.142857 +vt 0.894737 0.250000 +vt 0.894737 0.107143 +vt 0.815790 0.285714 +vt 0.868421 0.285714 +vt 0.763158 0.214286 +vt 0.789474 0.107143 +vt 0.789474 0.250000 +vt 0.684211 0.214286 +vt 0.763158 0.285714 +vt 0.684211 0.285714 +vt 0.763158 0.357143 +vt 0.684211 0.357143 +vt 0.684211 0.214286 +vt 0.763158 0.285714 +vt 0.684211 0.285714 +vt 0.868421 0.071429 +vt 0.815790 0.071429 +vt 0.868421 0.071429 +vt 0.789474 0.107143 +vt 0.815790 0.071429 +vt 0.763158 0.214286 +vt 0.789474 0.250000 +vt 0.921053 0.142857 +vt 0.894737 0.250000 +vt 0.894737 0.107143 +vt 0.684211 0.071429 +vt 0.763158 0.142857 +vt 0.684211 0.142857 +vt 0.763158 0.214286 +vt 0.763158 0.357143 +vt 0.684211 0.357143 +vt 0.815790 0.285714 +vt 0.868421 0.285714 +vt 0.789474 0.071429 +vt 0.684211 0.000000 +vt 0.789474 0.000000 +vt 0.894737 0.071429 +vt 0.894737 0.000000 +vt 1.000000 0.071429 +vt 1.000000 0.000000 +vt 0.684211 0.071429 +vt 0.763158 0.142857 +vt 0.684211 0.142857 +vt 0.684211 0.071429 +vt 0.578947 0.000000 +vt 0.763158 0.214286 +vt 0.684211 0.214286 +vt 0.000000 0.571429 +vt 0.052632 0.857143 +vt 0.000000 0.857143 +vt 0.105263 1.000000 +vt 0.315789 0.928571 +vt 0.315789 1.000000 +vt 0.105263 0.500000 +vt 0.368421 0.571429 +vt 0.315789 0.928571 +vt 0.315789 0.428571 +vt 0.105263 0.428571 +vt 0.421053 0.857143 +vt 0.421053 0.571429 +vt 0.368421 0.071429 +vt 0.052632 0.357143 +vt 0.000000 0.571429 +vt 0.052632 0.857143 +vt 0.000000 0.857143 +vt 0.763158 0.214286 +vt 0.789474 0.107143 +vt 0.789474 0.250000 +vt 0.105263 0.500000 +vt 0.368421 0.571429 +vt 0.315789 0.428571 +vt 0.105263 0.428571 +vt 0.421053 0.857143 +vt 0.421053 0.571429 +vt 0.368421 0.071429 +vt 0.052632 0.357143 +vt 0.368421 1.000000 +vt 0.315789 1.000000 +vt 0.368421 0.500000 +vt 0.315789 0.500000 +vt 0.052632 0.428571 +vt 0.105263 1.000000 +vt 0.052632 0.928571 +vt 0.105263 0.928571 +vt 0.368421 1.000000 +vt 0.368421 0.500000 +vt 0.315789 0.500000 +vt 0.052632 0.428571 +vt 0.052632 0.928571 +vt 0.105263 0.928571 +vt 0.684211 0.142857 +vt 0.763158 0.214286 +vt 0.684211 0.214286 +vt 0.684211 0.285714 +vt 0.763158 0.357143 +vt 0.684211 0.357143 +vt 0.684211 0.071429 +vt 0.763158 0.142857 +vt 0.894737 0.250000 +vt 0.894737 0.107143 +vt 0.921053 0.142857 +vt 0.868421 0.071429 +vt 0.815790 0.071429 +vt 0.815790 0.285714 +vt 0.868421 0.285714 +vt 0.921053 0.142857 +vt 0.894737 0.250000 +vt 0.894737 0.107143 +vt 0.763158 0.285714 +vt 0.684211 0.071429 +vt 0.763158 0.142857 +vt 0.684211 0.142857 +vt 0.763158 0.214286 +vt 0.789474 0.107143 +vt 0.763158 0.214286 +vt 0.789474 0.250000 +vt 0.868421 0.071429 +vt 0.815789 0.071429 +vt 0.815789 0.285714 +vt 0.868421 0.285714 +vt 0.421053 0.428571 +vt 0.473684 0.571429 +vt 0.421053 0.571429 +vt 0.565789 0.714286 +vt 0.486842 0.750000 +vt 0.486842 0.714286 +vt 0.526316 0.357143 +vt 0.684211 0.428571 +vt 0.631579 0.642857 +vt 0.631579 0.285714 +vt 0.526316 0.285714 +vt 0.736842 0.571429 +vt 0.736842 0.428571 +vt 0.473684 0.642857 +vt 0.526316 0.714286 +vt 0.473684 0.714286 +vt 0.684211 0.714286 +vt 0.684211 0.642857 +vt 0.684211 0.357143 +vt 0.631579 0.357143 +vt 0.473684 0.285714 +vt 0.631579 0.714286 +vt 0.486842 1.000000 +vt 0.565789 0.964286 +vt 0.565789 1.000000 +vt 0.605263 0.803571 +vt 0.631579 0.910714 +vt 0.631579 0.803571 +vt 0.447368 0.803571 +vt 0.565789 0.750000 +vt 0.605263 0.910714 +vt 0.605263 1.000000 +vt 0.605263 0.964286 +vt 0.447368 0.964286 +vt 0.486842 0.964286 +vt 0.605263 0.750000 +vt 0.605263 0.714286 +vt 0.447368 0.714286 +vt 0.447368 0.750000 +vt 0.421053 0.803571 +vt 0.447368 0.910714 +vt 0.421053 0.910714 +vt 0.473684 0.428571 +vt 0.631579 0.357143 +vt 0.684211 0.571429 +vt 0.486842 0.750000 +vt 0.565789 0.714286 +vt 0.447368 0.750000 +vt 0.486842 0.714286 +vt 0.486842 0.964286 +vt 0.447368 1.000000 +vt 0.447368 0.964286 +vt 0.447368 0.910714 +vt 0.421053 0.803571 +vt 0.565789 0.964286 +vt 0.486842 1.000000 +vt 0.605263 0.964286 +vt 0.565789 1.000000 +vt 0.605263 0.714286 +vt 0.605263 0.750000 +vt 0.605263 0.803571 +vt 0.631579 0.910714 +vt 0.763158 0.285714 +vt 0.684211 0.285714 +vt 0.684211 0.428571 +vt 0.736842 0.571429 +vt 0.684211 0.285714 +vt 0.684211 0.357143 +vt 0.526316 0.642857 +vt 0.473684 0.714286 +vt 0.473684 0.642857 +vt 0.526316 0.357143 +vt 0.631579 0.285714 +vt 0.631579 0.642857 +vt 0.526316 0.714286 +vt 0.473684 0.357143 +vt 0.526316 0.285714 +vt 0.684211 0.642857 +vt 0.631579 0.714286 +vt 0.473684 0.571429 +vt 0.421053 0.428571 +vt 0.763158 0.357143 +vt 0.684211 0.357143 +vt 0.578947 0.285714 +vt 0.526316 0.000000 +vt 0.578947 0.000000 +vt 0.473684 0.285714 +vt 0.421053 0.000000 +vt 0.473684 0.000000 +vt 0.526316 0.285714 +vt 0.421053 0.285714 +vt 0.368421 0.000000 +vt 0.578947 0.285714 +vt 0.526316 0.000000 +vt 0.578947 0.000000 +vt 0.473684 0.285714 +vt 0.421053 0.000000 +vt 0.473684 0.000000 +vt 0.526316 0.285714 +vt 0.421053 0.285714 +vt 0.368421 0.000000 +vt 0.578947 0.285714 +vt 0.526316 0.000000 +vt 0.578947 0.000000 +vt 0.473684 0.285714 +vt 0.421053 0.000000 +vt 0.473684 0.000000 +vt 0.526316 0.285714 +vt 0.421053 0.285714 +vt 0.368421 0.000000 +vt 0.578947 0.285714 +vt 0.526316 0.000000 +vt 0.578947 0.000000 +vt 0.473684 0.285714 +vt 0.421053 0.000000 +vt 0.473684 0.000000 +vt 0.526316 0.285714 +vt 0.421053 0.285714 +vt 0.368421 0.000000 +vt 0.921053 0.214286 +vt 0.763158 0.142857 +vt 0.763158 0.142857 +vt 0.921053 0.214286 +vt 0.763158 0.071429 +vt 0.763158 0.071429 +vt 0.578947 0.071429 +vt 0.052632 0.571429 +vt 0.368421 0.857143 +vt 0.052632 0.071429 +vt 0.105263 0.000000 +vt 0.315789 0.000000 +vt 0.368421 0.357143 +vt 0.052632 0.571429 +vt 0.763158 0.142857 +vt 0.368421 0.857143 +vt 0.052632 0.071429 +vt 0.105263 0.000000 +vt 0.315789 0.000000 +vt 0.368421 0.357143 +vt 0.368421 0.928571 +vt 0.368421 0.428571 +vt 0.052632 0.500000 +vt 0.052632 1.000000 +vt 0.368421 0.928571 +vt 0.368421 0.428571 +vt 0.052632 0.500000 +vt 0.052632 1.000000 +vt 0.763158 0.071429 +vt 0.921053 0.214286 +vt 0.921053 0.214286 +vt 0.763158 0.071429 +vt 0.763158 0.142857 +vt 0.473684 0.428571 +vt 0.565789 0.750000 +vt 0.526316 0.642857 +vt 0.684211 0.571429 +vt 0.684211 0.285714 +vt 0.473684 0.357143 +vt 0.447368 0.803571 +vt 0.605263 0.910714 +vt 0.447368 1.000000 +vt 0.447368 0.714286 +vt 0.421053 0.910714 +vt 0.605263 1.000000 +vt 0.631579 0.803571 +vt 0.736842 0.428571 +vt 0.473684 0.285714 +vt 0.684211 0.714286 +vt 0.421053 0.571429 +vt 0.368421 0.285714 +vt 0.368421 0.285714 +vt 0.368421 0.285714 +vt 0.368421 0.285714 +vn 0.7071 0.0000 -0.7071 +vn 0.0000 0.7071 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7071 0.7071 +vn 1.0000 0.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +s off +f 5/1/1 2/2/1 1/3/1 +f 7/4/2 2/2/2 8/5/2 +f 7/6/3 4/7/3 3/8/3 +f 2/2/4 4/7/4 1/3/4 +f 7/9/5 142/10/5 6/11/5 +f 6/11/6 141/12/6 5/13/6 +f 65/14/7 138/15/7 66/16/7 +f 5/17/8 4/7/8 6/18/8 +f 13/19/9 10/20/9 15/21/9 +f 16/22/10 10/20/10 9/23/10 +f 13/24/11 12/25/11 11/26/11 +f 12/25/7 10/20/7 11/26/7 +f 68/27/4 139/28/4 67/29/4 +f 67/29/12 137/30/12 65/14/12 +f 66/16/6 140/31/6 68/32/6 +f 16/33/13 12/25/13 14/34/13 +f 19/35/4 24/36/4 20/37/4 +f 17/38/14 20/37/14 18/39/14 +f 21/40/7 18/39/7 22/41/7 +f 13/42/5 150/43/5 14/44/5 +f 23/45/5 22/46/5 24/36/5 +f 14/44/12 152/47/12 16/48/12 +f 36/49/4 44/50/4 33/51/4 +f 50/52/5 58/53/5 53/54/5 +f 46/55/6 48/56/6 42/57/6 +f 40/58/5 46/55/5 35/59/5 +f 38/60/7 48/56/7 39/61/7 +f 38/62/12 40/58/12 36/63/12 +f 52/64/4 60/65/4 49/66/4 +f 32/67/11 25/68/11 26/69/11 +f 62/70/12 64/71/12 58/53/12 +f 56/72/14 62/70/14 51/73/14 +f 54/74/7 64/71/7 55/75/7 +f 54/76/6 56/72/6 52/77/6 +f 42/57/1 38/78/1 37/79/1 +f 40/58/3 48/80/3 47/81/3 +f 46/55/11 36/82/11 35/59/11 +f 34/83/10 44/84/10 43/85/10 +f 58/53/3 54/86/3 53/54/3 +f 56/72/1 64/87/1 63/88/1 +f 62/70/10 52/89/10 51/73/10 +f 50/52/11 60/90/11 59/91/11 +f 34/83/14 42/57/14 37/79/14 +f 30/92/12 148/93/12 32/94/12 +f 31/95/6 145/96/6 29/97/6 +f 29/98/7 146/99/7 30/92/7 +f 28/100/14 25/68/14 27/101/14 +f 29/102/3 28/100/3 27/101/3 +f 29/103/15 25/68/15 31/104/15 +f 32/105/16 28/100/16 30/106/16 +f 68/107/10 71/108/10 72/109/10 +f 32/94/4 147/110/4 31/95/4 +f 5/111/14 144/112/14 8/113/14 +f 8/113/12 143/114/12 7/9/12 +f 71/108/5 70/115/5 72/109/5 +f 65/116/1 70/115/1 69/117/1 +f 68/118/17 70/115/17 66/119/17 +f 65/120/18 71/108/18 67/121/18 +f 84/122/4 92/123/4 81/124/4 +f 106/125/14 98/126/14 109/127/14 +f 94/128/12 96/129/12 90/130/12 +f 88/131/14 94/128/14 83/132/14 +f 86/133/7 96/129/7 87/134/7 +f 92/135/11 82/136/11 81/137/11 +f 86/138/3 90/130/3 89/139/3 +f 88/131/1 96/140/1 95/141/1 +f 94/128/10 84/142/10 83/132/10 +f 82/136/5 90/130/5 85/143/5 +f 112/144/5 102/145/5 107/146/5 +f 98/126/12 104/147/12 102/145/12 +f 108/148/7 104/147/7 105/149/7 +f 73/150/6 79/151/6 77/152/6 +f 108/153/3 102/145/3 101/154/3 +f 112/144/11 100/155/11 99/156/11 +f 104/157/1 106/125/1 105/158/1 +f 110/159/10 98/126/10 97/160/10 +f 110/161/4 100/162/4 111/163/4 +f 128/164/6 126/165/6 124/166/6 +f 74/167/14 113/168/14 79/151/14 +f 73/169/1 114/170/1 74/167/1 +f 75/171/3 118/172/3 76/173/3 +f 76/174/7 117/175/7 73/150/7 +f 78/176/5 119/177/5 75/171/5 +f 77/178/11 120/179/11 78/176/11 +f 79/151/10 115/180/10 80/181/10 +f 80/182/4 116/183/4 77/152/4 +f 16/48/14 151/184/14 15/185/14 +f 125/186/4 129/187/4 124/166/4 +f 126/165/10 136/188/10 125/189/10 +f 122/190/3 132/191/3 121/192/3 +f 127/193/14 135/194/14 126/165/14 +f 123/195/5 131/196/5 122/190/5 +f 128/197/1 134/198/1 127/193/1 +f 124/199/11 130/200/11 123/195/11 +f 121/201/7 133/202/7 128/164/7 +f 15/185/6 149/203/6 13/204/6 +f 159/205/3 156/206/3 155/207/3 +f 158/208/10 153/209/10 154/210/10 +f 160/211/1 154/210/1 156/206/1 +f 157/212/11 155/213/11 153/209/11 +f 167/214/3 164/215/3 163/216/3 +f 166/217/10 161/218/10 162/219/10 +f 168/220/1 162/219/1 164/215/1 +f 165/221/11 163/222/11 161/218/11 +f 175/223/3 172/224/3 171/225/3 +f 174/226/10 169/227/10 170/228/10 +f 176/229/1 170/228/1 172/224/1 +f 173/230/11 171/231/11 169/227/11 +f 183/232/3 180/233/3 179/234/3 +f 182/235/10 177/236/10 178/237/10 +f 184/238/1 178/237/1 180/233/1 +f 181/239/11 179/240/11 177/236/11 +f 5/1/1 8/241/1 2/2/1 +f 7/4/2 3/8/2 2/2/2 +f 7/6/3 6/242/3 4/7/3 +f 2/2/4 3/8/4 4/7/4 +f 7/9/5 143/114/5 142/10/5 +f 6/11/6 142/10/6 141/12/6 +f 65/14/7 137/30/7 138/15/7 +f 5/17/8 1/3/8 4/7/8 +f 13/19/9 11/26/9 10/20/9 +f 16/22/10 15/243/10 10/20/10 +f 13/24/11 14/244/11 12/25/11 +f 12/25/7 9/23/7 10/20/7 +f 68/27/4 140/245/4 139/28/4 +f 67/29/12 139/28/12 137/30/12 +f 66/16/6 138/15/6 140/31/6 +f 16/33/13 9/23/13 12/25/13 +f 19/35/4 23/45/4 24/36/4 +f 17/38/14 19/35/14 20/37/14 +f 21/40/7 17/38/7 18/39/7 +f 13/42/5 149/246/5 150/43/5 +f 23/45/5 21/247/5 22/46/5 +f 14/44/12 150/43/12 152/47/12 +f 36/49/4 45/248/4 44/50/4 +f 50/52/5 59/91/5 58/53/5 +f 42/57/6 43/85/6 44/50/6 +f 44/50/6 45/248/6 46/55/6 +f 46/55/6 47/81/6 48/56/6 +f 48/56/6 41/249/6 42/57/6 +f 42/57/6 44/50/6 46/55/6 +f 40/58/5 47/81/5 46/55/5 +f 38/60/7 41/249/7 48/56/7 +f 36/63/12 33/250/12 34/251/12 +f 34/251/12 37/252/12 38/62/12 +f 38/62/12 39/253/12 40/58/12 +f 40/58/12 35/59/12 36/63/12 +f 36/63/12 34/251/12 38/62/12 +f 52/64/4 61/254/4 60/65/4 +f 32/67/11 31/255/11 25/68/11 +f 58/53/12 59/91/12 60/65/12 +f 60/65/12 61/254/12 62/70/12 +f 62/70/12 63/88/12 64/71/12 +f 64/71/12 57/256/12 58/53/12 +f 58/53/12 60/65/12 62/70/12 +f 56/72/14 63/88/14 62/70/14 +f 54/74/7 57/256/7 64/71/7 +f 52/77/6 49/257/6 50/258/6 +f 50/258/6 53/259/6 54/76/6 +f 54/76/6 55/260/6 56/72/6 +f 56/72/6 51/73/6 52/77/6 +f 52/77/6 50/258/6 54/76/6 +f 42/57/1 41/261/1 38/78/1 +f 40/58/3 39/262/3 48/80/3 +f 46/55/11 45/263/11 36/82/11 +f 34/83/10 33/264/10 44/84/10 +f 58/53/3 57/265/3 54/86/3 +f 56/72/1 55/266/1 64/87/1 +f 62/70/10 61/267/10 52/89/10 +f 50/52/11 49/268/11 60/90/11 +f 34/83/14 43/85/14 42/57/14 +f 30/92/12 146/99/12 148/93/12 +f 31/95/6 147/110/6 145/96/6 +f 29/98/7 145/269/7 146/99/7 +f 28/100/14 26/69/14 25/68/14 +f 29/102/3 30/270/3 28/100/3 +f 29/103/15 27/101/15 25/68/15 +f 32/105/16 26/69/16 28/100/16 +f 68/107/10 67/271/10 71/108/10 +f 32/94/4 148/93/4 147/110/4 +f 5/111/14 141/272/14 144/112/14 +f 8/113/12 144/112/12 143/114/12 +f 71/108/5 69/117/5 70/115/5 +f 65/116/1 66/273/1 70/115/1 +f 68/118/17 72/109/17 70/115/17 +f 65/120/18 69/117/18 71/108/18 +f 84/122/4 93/274/4 92/123/4 +f 106/125/14 103/275/14 98/126/14 +f 90/130/12 91/276/12 92/123/12 +f 92/123/12 93/274/12 94/128/12 +f 94/128/12 95/141/12 96/129/12 +f 96/129/12 89/277/12 90/130/12 +f 90/130/12 92/123/12 94/128/12 +f 88/131/14 95/141/14 94/128/14 +f 86/133/7 89/277/7 96/129/7 +f 92/135/11 91/276/11 82/136/11 +f 86/138/3 85/143/3 90/130/3 +f 88/131/1 87/278/1 96/140/1 +f 94/128/10 93/279/10 84/142/10 +f 82/136/5 91/276/5 90/130/5 +f 112/144/5 99/156/5 102/145/5 +f 102/145/12 99/156/12 100/162/12 +f 100/162/12 97/280/12 98/126/12 +f 98/126/12 103/275/12 104/147/12 +f 104/147/12 101/281/12 102/145/12 +f 102/145/12 100/162/12 98/126/12 +f 108/148/7 101/281/7 104/147/7 +f 77/152/6 78/176/6 75/171/6 +f 75/171/6 76/174/6 73/150/6 +f 73/150/6 74/167/6 79/151/6 +f 79/151/6 80/182/6 77/152/6 +f 77/152/6 75/171/6 73/150/6 +f 108/153/3 107/146/3 102/145/3 +f 112/144/11 111/282/11 100/155/11 +f 104/157/1 103/275/1 106/125/1 +f 110/159/10 109/127/10 98/126/10 +f 110/161/4 97/280/4 100/162/4 +f 124/166/6 123/195/6 122/190/6 +f 122/190/6 121/201/6 128/164/6 +f 128/164/6 127/193/6 126/165/6 +f 126/165/6 125/186/6 124/166/6 +f 124/166/6 122/190/6 128/164/6 +f 74/167/14 114/170/14 113/168/14 +f 73/169/1 117/283/1 114/170/1 +f 75/171/3 119/177/3 118/172/3 +f 76/174/7 118/284/7 117/175/7 +f 78/176/5 120/179/5 119/177/5 +f 77/178/11 116/285/11 120/179/11 +f 79/151/10 113/168/10 115/180/10 +f 80/182/4 115/286/4 116/183/4 +f 16/48/14 152/47/14 151/184/14 +f 125/186/4 136/287/4 129/187/4 +f 126/165/10 135/194/10 136/188/10 +f 122/190/3 131/196/3 132/191/3 +f 127/193/14 134/198/14 135/194/14 +f 123/195/5 130/200/5 131/196/5 +f 128/197/1 133/288/1 134/198/1 +f 124/199/11 129/289/11 130/200/11 +f 121/201/7 132/290/7 133/202/7 +f 15/185/6 151/184/6 149/203/6 +f 159/205/3 160/211/3 156/206/3 +f 158/208/10 157/212/10 153/209/10 +f 160/211/1 158/208/1 154/210/1 +f 157/212/11 159/291/11 155/213/11 +f 167/214/3 168/220/3 164/215/3 +f 166/217/10 165/221/10 161/218/10 +f 168/220/1 166/217/1 162/219/1 +f 165/221/11 167/292/11 163/222/11 +f 175/223/3 176/229/3 172/224/3 +f 174/226/10 173/230/10 169/227/10 +f 176/229/1 174/226/1 170/228/1 +f 173/230/11 175/293/11 171/231/11 +f 183/232/3 184/238/3 180/233/3 +f 182/235/10 181/239/10 177/236/10 +f 184/238/1 182/235/1 178/237/1 +f 181/239/11 183/294/11 179/240/11 diff --git a/src/main/resources/assets/hbm/models/particleaccelerator/quadrupole.obj b/src/main/resources/assets/hbm/models/particleaccelerator/quadrupole.obj new file mode 100644 index 000000000..e6795d6bb --- /dev/null +++ b/src/main/resources/assets/hbm/models/particleaccelerator/quadrupole.obj @@ -0,0 +1,842 @@ +# Blender v2.79 (sub 0) OBJ File: 'quadrupole.blend' +# www.blender.org +o Cube_Cube.001 +v -0.500000 1.000000 1.500000 +v -0.500000 2.000000 1.500000 +v -0.500000 1.000000 -1.500000 +v -0.500000 2.000000 -1.500000 +v 0.500000 1.000000 1.500000 +v 0.500000 2.000000 1.500000 +v 0.500000 1.000000 -1.500000 +v 0.500000 2.000000 -1.500000 +v -0.625000 0.000000 1.000000 +v 0.625000 0.000000 1.000000 +v -0.625000 0.000000 -1.000000 +v 0.625000 0.000000 -1.000000 +v -0.625000 3.000000 1.000000 +v 0.625000 3.000000 1.000000 +v -0.625000 3.000000 -1.000000 +v 0.625000 3.000000 -1.000000 +v -1.500000 2.125000 1.000000 +v -1.500000 0.875000 1.000000 +v -1.500000 2.125000 -1.000000 +v -1.500000 0.875000 -1.000000 +v 1.500000 2.125000 1.000000 +v 1.500000 0.875000 1.000000 +v 1.500000 2.125000 -1.000000 +v 1.500000 0.875000 -1.000000 +v -0.500000 0.250000 1.000000 +v 0.500000 0.250000 1.000000 +v -0.500000 0.250000 -1.000000 +v 0.500000 0.250000 -1.000000 +v -0.500000 2.750000 1.000000 +v 0.500000 2.750000 1.000000 +v -0.500000 2.750000 -1.000000 +v 0.500000 2.750000 -1.000000 +v -1.250000 2.000000 1.000000 +v -1.250000 1.000000 1.000000 +v -1.250000 2.000000 -1.000000 +v -1.250000 1.000000 -1.000000 +v 1.250000 2.000000 1.000000 +v 1.250000 1.000000 1.000000 +v 1.250000 2.000000 -1.000000 +v 1.250000 1.000000 -1.000000 +v -0.353553 0.792893 1.000000 +v -0.707107 1.146447 1.000000 +v -0.707107 1.146447 -1.000000 +v -0.353553 0.792893 -1.000000 +v -1.060660 0.792893 1.250000 +v -1.237437 0.969670 1.000000 +v -0.530330 0.262563 1.000000 +v -0.707107 0.439340 1.250000 +v -1.237437 0.969670 -1.000000 +v -1.060660 0.792893 -1.250000 +v -0.707107 0.439340 -1.250000 +v -0.530330 0.262563 -1.000000 +v -0.795495 1.058058 -1.250000 +v -0.972272 1.234835 -1.000000 +v -0.972272 1.234835 1.000000 +v -0.795495 1.058058 1.250000 +v -0.441942 0.704505 1.250000 +v -0.265165 0.527728 1.000000 +v -0.265165 0.527728 -1.000000 +v -0.441942 0.704505 -1.250000 +v -0.441942 0.704505 -1.000000 +v -0.795495 1.058058 -1.000000 +v -0.795495 1.058058 1.000000 +v -0.441942 0.704505 1.000000 +v 0.353553 2.207107 1.000000 +v 0.707107 1.853553 1.000000 +v 0.707107 1.853553 -1.000000 +v 0.353553 2.207107 -1.000000 +v 1.060660 2.207107 1.250000 +v 1.237437 2.030330 1.000000 +v 0.530330 2.737437 1.000000 +v 0.707107 2.560660 1.250000 +v 1.237437 2.030330 -1.000000 +v 1.060660 2.207107 -1.250000 +v 0.707107 2.560660 -1.250000 +v 0.530330 2.737437 -1.000000 +v 0.795495 1.941942 -1.250000 +v 0.972272 1.765165 -1.000000 +v 0.972272 1.765165 1.000000 +v 0.795495 1.941942 1.250000 +v 0.441942 2.295495 1.250000 +v 0.265165 2.472272 1.000000 +v 0.265165 2.472272 -1.000000 +v 0.441942 2.295495 -1.250000 +v 0.441942 2.295495 -1.000000 +v 0.795495 1.941942 -1.000000 +v 0.795495 1.941942 1.000000 +v 0.441942 2.295495 1.000000 +v -0.707107 1.853553 1.000000 +v -0.353553 2.207107 1.000000 +v -0.353553 2.207107 -1.000000 +v -0.707107 1.853553 -1.000000 +v -0.707107 2.560660 1.250000 +v -0.530330 2.737437 1.000000 +v -1.237437 2.030330 1.000000 +v -1.060660 2.207107 1.250000 +v -0.530330 2.737437 -1.000000 +v -0.707107 2.560660 -1.250000 +v -1.060660 2.207107 -1.250000 +v -1.237437 2.030330 -1.000000 +v -0.441942 2.295495 -1.250000 +v -0.265165 2.472272 -1.000000 +v -0.265165 2.472272 1.000000 +v -0.441942 2.295495 1.250000 +v -0.795495 1.941942 1.250000 +v -0.972272 1.765165 1.000000 +v -0.972272 1.765165 -1.000000 +v -0.795495 1.941942 -1.250000 +v -0.795495 1.941942 -1.000000 +v -0.441942 2.295495 -1.000000 +v -0.441942 2.295495 1.000000 +v -0.795495 1.941942 1.000000 +v 0.707107 1.146447 1.000000 +v 0.353553 0.792893 1.000000 +v 0.353553 0.792893 -1.000000 +v 0.707107 1.146447 -1.000000 +v 0.707107 0.439340 1.250000 +v 0.530330 0.262563 1.000000 +v 1.237437 0.969670 1.000000 +v 1.060660 0.792893 1.250000 +v 0.530330 0.262563 -1.000000 +v 0.707107 0.439340 -1.250000 +v 1.060660 0.792893 -1.250000 +v 1.237437 0.969670 -1.000000 +v 0.441942 0.704505 -1.250000 +v 0.265165 0.527728 -1.000000 +v 0.265165 0.527728 1.000000 +v 0.441942 0.704505 1.250000 +v 0.795495 1.058058 1.250000 +v 0.972272 1.234835 1.000000 +v 0.972272 1.234835 -1.000000 +v 0.795495 1.058058 -1.250000 +v 0.795495 1.058058 -1.000000 +v 0.441942 0.704505 -1.000000 +v 0.441942 0.704505 1.000000 +v 0.795495 1.058058 1.000000 +v -0.250000 0.250000 0.750000 +v 0.250000 0.250000 0.750000 +v -0.250000 0.250000 0.250000 +v 0.250000 0.250000 0.250000 +v -0.250000 1.000000 0.250000 +v -0.250000 1.000000 0.750000 +v 0.250000 1.000000 0.750000 +v 0.250000 1.000000 0.250000 +v -0.250000 0.250000 -0.250000 +v 0.250000 0.250000 -0.250000 +v -0.250000 0.250000 -0.750000 +v 0.250000 0.250000 -0.750000 +v -0.250000 1.000000 -0.750000 +v -0.250000 1.000000 -0.250000 +v 0.250000 1.000000 -0.250000 +v 0.250000 1.000000 -0.750000 +v 0.250000 2.750000 0.750000 +v -0.250000 2.750000 0.750000 +v 0.250000 2.750000 0.250000 +v -0.250000 2.750000 0.250000 +v 0.250000 2.000000 0.250000 +v 0.250000 2.000000 0.750000 +v -0.250000 2.000000 0.750000 +v -0.250000 2.000000 0.250000 +v 0.250000 2.750000 -0.250000 +v -0.250000 2.750000 -0.250000 +v 0.250000 2.750000 -0.750000 +v -0.250000 2.750000 -0.750000 +v 0.250000 2.000000 -0.750000 +v 0.250000 2.000000 -0.250000 +v -0.250000 2.000000 -0.250000 +v -0.250000 2.000000 -0.750000 +v -1.250000 1.750000 0.750000 +v -1.250000 1.250000 0.750000 +v -1.250000 1.750000 0.250000 +v -1.250000 1.250000 0.250000 +v -0.500000 1.750000 0.250000 +v -0.500000 1.750000 0.750000 +v -0.500000 1.250000 0.750000 +v -0.500000 1.250000 0.250000 +v -1.250000 1.750000 -0.250000 +v -1.250000 1.250000 -0.250000 +v -1.250000 1.750000 -0.750000 +v -1.250000 1.250000 -0.750000 +v -0.500000 1.750000 -0.750000 +v -0.500000 1.750000 -0.250000 +v -0.500000 1.250000 -0.250000 +v -0.500000 1.250000 -0.750000 +v 1.250000 1.250000 0.750000 +v 1.250000 1.750000 0.750000 +v 1.250000 1.250000 0.250000 +v 1.250000 1.750000 0.250000 +v 0.500000 1.250000 0.250000 +v 0.500000 1.250000 0.750000 +v 0.500000 1.750000 0.750000 +v 0.500000 1.750000 0.250000 +v 1.250000 1.250000 -0.250000 +v 1.250000 1.750000 -0.250000 +v 1.250000 1.250000 -0.750000 +v 1.250000 1.750000 -0.750000 +v 0.500000 1.250000 -0.750000 +v 0.500000 1.250000 -0.250000 +v 0.500000 1.750000 -0.250000 +v 0.500000 1.750000 -0.750000 +vt 0.105263 0.200000 +vt 0.421053 0.300000 +vt 0.105263 0.300000 +vt 0.421053 0.200000 +vt 0.526316 0.100000 +vt 0.526316 0.200000 +vt 0.421053 0.100000 +vt 0.105263 0.000000 +vt 0.421053 0.000000 +vt 0.105263 0.100000 +vt 0.000000 0.200000 +vt 0.000000 0.100000 +vt 0.421053 0.400000 +vt 0.973684 0.000000 +vt 0.763158 0.125000 +vt 0.763158 0.000000 +vt 0.763158 0.500000 +vt 0.973684 0.625000 +vt 0.763158 0.625000 +vt 0.973684 0.750000 +vt 0.763158 0.875000 +vt 0.763158 0.750000 +vt 0.763158 0.250000 +vt 0.973684 0.375000 +vt 0.763158 0.375000 +vt 0.973684 0.500000 +vt 0.973684 0.250000 +vt 0.973684 0.125000 +vt 0.763158 1.000000 +vt 0.973684 0.875000 +vt 0.973684 1.000000 +vt 0.736842 0.112500 +vt 0.526316 0.012500 +vt 0.736842 0.012500 +vt 0.526316 0.612500 +vt 0.736842 0.512500 +vt 0.736842 0.612500 +vt 0.736842 0.862500 +vt 0.526316 0.762500 +vt 0.736842 0.762500 +vt 0.526316 0.362500 +vt 0.736842 0.262500 +vt 0.736842 0.362500 +vt 0.526316 0.887500 +vt 0.736842 0.987500 +vt 0.526316 0.987500 +vt 0.736842 0.137500 +vt 0.526316 0.237500 +vt 0.526316 0.137500 +vt 0.526316 0.487500 +vt 0.736842 0.387500 +vt 0.736842 0.487500 +vt 0.736842 0.737500 +vt 0.526316 0.637500 +vt 0.736842 0.637500 +vt 0.736842 0.887500 +vt 1.000000 0.362500 +vt 1.000000 0.487500 +vt 1.000000 0.612500 +vt 1.000000 0.737500 +vt 1.000000 0.768750 +vt 1.000000 0.887500 +vt 1.000000 0.012500 +vt 1.000000 0.237500 +vt 0.000000 0.687500 +vt 0.039474 0.637500 +vt 0.039474 0.687500 +vt -0.000000 0.637500 +vt 0.039474 0.687500 +vt -0.000000 0.687500 +vt 0.302632 0.637500 +vt 0.302632 0.687500 +vt 0.276316 0.712500 +vt 0.276316 0.575000 +vt 0.065789 0.612500 +vt 0.065789 0.575000 +vt 0.342105 0.687500 +vt 0.342105 0.637500 +vt 0.039474 0.550000 +vt 0.065789 0.475000 +vt 0.302632 0.712500 +vt 0.342105 0.712500 +vt 0.342105 0.612500 +vt 0.302632 0.612500 +vt 0.039474 0.612500 +vt 0.000000 0.637500 +vt -0.000000 0.612500 +vt 0.039474 0.712500 +vt 0.065789 0.750000 +vt 0.276316 0.750000 +vt 0.223684 0.475000 +vt 0.434211 0.462500 +vt 0.434211 0.475000 +vt 0.210526 0.462500 +vt 0.223684 0.412500 +vt 0.223684 0.462500 +vt 0.434211 0.400000 +vt 0.223684 0.400000 +vt 0.447368 0.462500 +vt 0.434211 0.412500 +vt 0.447368 0.412500 +vt 0.302632 0.637500 +vt 0.302632 0.687500 +vt 0.276316 0.712500 +vt 0.276316 0.575000 +vt 0.065789 0.612500 +vt 0.065789 0.575000 +vt 0.342105 0.637500 +vt 0.039474 0.550000 +vt 0.065789 0.475000 +vt 0.342105 0.712500 +vt 0.342105 0.687500 +vt 0.302632 0.612500 +vt 0.039474 0.612500 +vt -0.000000 0.612500 +vt 0.000000 0.712500 +vt 0.039474 0.712500 +vt 0.065789 0.750000 +vt 0.276316 0.750000 +vt 0.223684 0.475000 +vt 0.434211 0.462500 +vt 0.434211 0.475000 +vt 0.210526 0.412500 +vt 0.223684 0.462500 +vt 0.210526 0.462500 +vt 0.434211 0.400000 +vt 0.223684 0.412500 +vt 0.223684 0.400000 +vt 0.447368 0.462500 +vt 0.434211 0.412500 +vt 0.447368 0.412500 +vt -0.000000 0.687500 +vt 0.039474 0.637500 +vt 0.039474 0.687500 +vt 0.000000 0.637500 +vt 0.039474 0.687500 +vt -0.000000 0.687500 +vt 0.302632 0.637500 +vt 0.302632 0.687500 +vt 0.276316 0.712500 +vt 0.276316 0.575000 +vt 0.065789 0.612500 +vt 0.065789 0.575000 +vt 0.342105 0.687500 +vt 0.342105 0.637500 +vt 0.039474 0.550000 +vt 0.065789 0.475000 +vt 0.302632 0.712500 +vt 0.342105 0.712500 +vt 0.302632 0.612500 +vt 0.039474 0.612500 +vt -0.000000 0.637500 +vt -0.000000 0.612500 +vt 0.039474 0.712500 +vt 0.065789 0.750000 +vt 0.276316 0.750000 +vt 0.223684 0.475000 +vt 0.434211 0.462500 +vt 0.434211 0.475000 +vt 0.210526 0.412500 +vt 0.223684 0.462500 +vt 0.210526 0.462500 +vt 0.434211 0.400000 +vt 0.223684 0.412500 +vt 0.223684 0.400000 +vt 0.447368 0.462500 +vt 0.434211 0.412500 +vt 0.447368 0.412500 +vt 0.302632 0.637500 +vt 0.302632 0.687500 +vt 0.276316 0.712500 +vt 0.276316 0.575000 +vt 0.065789 0.612500 +vt 0.065789 0.575000 +vt 0.342105 0.637500 +vt 0.039474 0.550000 +vt 0.065789 0.475000 +vt 0.342105 0.712500 +vt 0.342105 0.687500 +vt 0.342105 0.612500 +vt 0.302632 0.612500 +vt 0.039474 0.612500 +vt 0.000000 0.612500 +vt 0.000000 0.712500 +vt 0.039474 0.712500 +vt 0.065789 0.750000 +vt 0.276316 0.750000 +vt 0.223684 0.475000 +vt 0.434211 0.462500 +vt 0.434211 0.475000 +vt 0.210526 0.412500 +vt 0.223684 0.462500 +vt 0.210526 0.462500 +vt 0.434211 0.400000 +vt 0.223684 0.412500 +vt 0.223684 0.400000 +vt 0.447368 0.462500 +vt 0.434211 0.412500 +vt 0.447368 0.412500 +vt 0.052632 0.475000 +vt 0.105263 0.400000 +vt 0.105263 0.475000 +vt 0.157895 0.475000 +vt 0.210526 0.400000 +vt 0.210526 0.475000 +vt 0.052632 0.475000 +vt 0.105263 0.400000 +vt 0.105263 0.475000 +vt 0.157895 0.475000 +vt 0.210526 0.400000 +vt 0.210526 0.475000 +vt -0.000000 0.475000 +vt 0.052632 0.400000 +vt 0.157895 0.400000 +vt -0.000000 0.475000 +vt 0.052632 0.400000 +vt 0.157895 0.400000 +vt 0.052632 0.475000 +vt 0.105263 0.400000 +vt 0.105263 0.475000 +vt 0.157895 0.475000 +vt 0.210526 0.400000 +vt 0.210526 0.475000 +vt 0.052632 0.475000 +vt 0.105263 0.400000 +vt 0.105263 0.475000 +vt 0.157895 0.475000 +vt 0.210526 0.400000 +vt 0.210526 0.475000 +vt -0.000000 0.475000 +vt 0.052632 0.400000 +vt 0.157895 0.400000 +vt -0.000000 0.475000 +vt 0.052632 0.400000 +vt 0.157895 0.400000 +vt 0.052632 0.475000 +vt 0.105263 0.400000 +vt 0.105263 0.475000 +vt 0.157895 0.475000 +vt 0.210526 0.400000 +vt 0.210526 0.475000 +vt 0.052632 0.475000 +vt 0.105263 0.400000 +vt 0.105263 0.475000 +vt 0.157895 0.475000 +vt 0.210526 0.400000 +vt 0.210526 0.475000 +vt -0.000000 0.475000 +vt 0.052632 0.400000 +vt 0.157895 0.400000 +vt -0.000000 0.475000 +vt 0.052632 0.400000 +vt 0.157895 0.400000 +vt 0.052632 0.475000 +vt 0.105263 0.400000 +vt 0.105263 0.475000 +vt 0.157895 0.475000 +vt 0.210526 0.400000 +vt 0.210526 0.475000 +vt 0.052632 0.475000 +vt 0.105263 0.400000 +vt 0.105263 0.475000 +vt 0.157895 0.475000 +vt 0.210526 0.400000 +vt 0.210526 0.475000 +vt -0.000000 0.400000 +vt 0.052632 0.400000 +vt 0.157895 0.400000 +vt -0.000000 0.400000 +vt 0.052632 0.400000 +vt 0.157895 0.400000 +vt 0.105263 0.400000 +vt 0.526316 0.112500 +vt 0.526316 0.512500 +vt 0.526316 0.862500 +vt 0.526316 0.262500 +vt 0.736842 0.237500 +vt 0.526316 0.387500 +vt 0.526316 0.737500 +vt 1.000000 0.262500 +vt 1.000000 0.387500 +vt 1.000000 0.512500 +vt 1.000000 0.637500 +vt 1.000000 0.862500 +vt 1.000000 0.987500 +vt 1.000000 0.112500 +vt 1.000000 0.137500 +vt 0.039474 0.637500 +vt 0.065789 0.712500 +vt 0.276316 0.612500 +vt 0.039474 0.500000 +vt 0.276316 0.475000 +vt 0.302632 0.500000 +vt 0.302632 0.550000 +vt 0.000000 0.712500 +vt 0.210526 0.412500 +vt 0.065789 0.712500 +vt 0.276316 0.612500 +vt 0.039474 0.500000 +vt 0.276316 0.475000 +vt 0.302632 0.500000 +vt 0.302632 0.550000 +vt 0.302632 0.712500 +vt 0.342105 0.612500 +vt 0.039474 0.637500 +vt 0.065789 0.712500 +vt 0.276316 0.612500 +vt 0.039474 0.500000 +vt 0.276316 0.475000 +vt 0.302632 0.500000 +vt 0.302632 0.550000 +vt 0.342105 0.612500 +vt 0.000000 0.712500 +vt 0.065789 0.712500 +vt 0.276316 0.612500 +vt 0.039474 0.500000 +vt 0.276316 0.475000 +vt 0.302632 0.500000 +vt 0.302632 0.550000 +vt 0.302632 0.712500 +vt -0.000000 0.400000 +vt -0.000000 0.400000 +vt -0.000000 0.400000 +vt -0.000000 0.400000 +vt -0.000000 0.400000 +vt -0.000000 0.400000 +vt -0.000000 0.475000 +vt -0.000000 0.475000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.5000 0.5000 -0.7071 +vn 0.5000 -0.5000 -0.7071 +vn 0.5000 -0.5000 0.7071 +vn -0.5000 0.5000 0.7071 +vn 0.5000 0.5000 -0.7071 +vn -0.5000 -0.5000 -0.7071 +vn -0.5000 -0.5000 0.7071 +vn 0.5000 0.5000 0.7071 +s off +f 2/1/1 3/2/1 1/3/1 +f 4/4/2 7/5/2 3/6/2 +f 8/7/3 5/8/3 7/9/3 +f 6/10/4 1/11/4 5/12/4 +f 7/13/5 1/3/5 3/2/5 +f 4/4/6 6/10/6 8/7/6 +f 11/14/5 10/15/5 9/16/5 +f 14/17/6 15/18/6 13/19/6 +f 19/20/1 18/21/1 17/22/1 +f 22/23/3 23/24/3 21/25/3 +f 21/25/7 16/26/7 14/17/7 +f 24/27/8 10/15/8 12/28/8 +f 9/29/9 20/30/9 11/31/9 +f 15/18/10 17/22/10 13/19/10 +f 26/32/6 27/33/6 25/34/6 +f 31/35/5 30/36/5 29/37/5 +f 34/38/3 35/39/3 33/40/3 +f 39/41/1 38/42/1 37/43/1 +f 36/44/7 25/45/7 27/46/7 +f 26/47/10 40/48/10 28/49/10 +f 32/50/9 37/51/9 30/52/9 +f 33/53/8 31/54/8 29/55/8 +f 17/22/4 29/55/4 13/19/4 +f 13/19/4 30/36/4 14/17/4 +f 14/17/4 37/51/4 21/25/4 +f 21/25/4 38/42/4 22/23/4 +f 22/23/4 26/47/4 10/15/4 +f 26/32/4 9/16/4 10/15/4 +f 9/29/4 34/56/4 18/21/4 +f 34/38/4 17/22/4 18/21/4 +f 24/27/2 39/57/2 23/24/2 +f 23/24/2 32/58/2 16/26/2 +f 16/26/2 31/59/2 15/18/2 +f 15/18/2 35/60/2 19/20/2 +f 35/61/2 20/30/2 19/20/2 +f 36/62/2 11/31/2 20/30/2 +f 27/63/2 12/28/2 11/14/2 +f 12/28/2 40/64/2 24/27/2 +f 45/65/4 57/66/4 56/67/4 +f 72/68/4 80/69/4 69/70/4 +f 60/71/7 53/72/7 54/73/7 +f 52/74/8 58/75/8 47/76/8 +f 50/77/2 60/71/2 51/78/2 +f 47/76/9 48/79/9 46/80/9 +f 54/81/11 50/77/11 49/82/11 +f 52/83/12 60/71/12 59/84/12 +f 58/85/13 48/86/13 47/87/13 +f 55/88/14 45/65/14 56/67/14 +f 46/89/10 54/73/10 49/90/10 +f 63/91/10 43/92/10 62/93/10 +f 63/94/4 41/95/4 42/96/4 +f 61/97/8 41/95/8 64/98/8 +f 41/95/7 43/92/7 42/96/7 +f 62/99/2 44/100/2 61/101/2 +f 84/102/9 77/103/9 78/104/9 +f 76/105/10 82/106/10 71/107/10 +f 75/108/2 77/103/2 84/102/2 +f 71/107/7 72/109/7 70/110/7 +f 73/111/12 77/103/12 74/112/12 +f 83/113/11 75/108/11 84/102/11 +f 82/114/14 72/68/14 71/115/14 +f 70/116/13 80/69/13 79/117/13 +f 70/118/8 78/104/8 73/119/8 +f 87/120/8 67/121/8 86/122/8 +f 88/123/4 66/124/4 87/125/4 +f 85/126/10 65/127/10 88/128/10 +f 65/127/9 67/121/9 66/124/9 +f 86/129/2 68/130/2 85/131/2 +f 93/132/4 105/133/4 104/134/4 +f 120/135/4 128/136/4 117/137/4 +f 108/138/8 101/139/8 102/140/8 +f 100/141/9 106/142/9 95/143/9 +f 98/144/2 108/138/2 99/145/2 +f 95/143/10 96/146/10 94/147/10 +f 102/148/15 98/144/15 97/149/15 +f 107/150/16 99/145/16 108/138/16 +f 106/151/17 96/152/17 95/153/17 +f 103/154/18 93/132/18 104/134/18 +f 94/155/7 102/140/7 97/156/7 +f 111/157/7 91/158/7 110/159/7 +f 112/160/4 90/161/4 111/162/4 +f 109/163/9 89/164/9 112/165/9 +f 89/164/8 91/158/8 90/161/8 +f 110/166/2 92/167/2 109/168/2 +f 132/169/10 125/170/10 126/171/10 +f 124/172/7 130/173/7 119/174/7 +f 123/175/2 125/170/2 132/169/2 +f 119/174/8 120/176/8 118/177/8 +f 121/178/16 125/170/16 122/179/16 +f 124/180/15 132/169/15 131/181/15 +f 130/182/18 120/135/18 119/183/18 +f 118/184/17 128/136/17 127/185/17 +f 118/186/9 126/171/9 121/187/9 +f 135/188/9 115/189/9 134/190/9 +f 136/191/4 114/192/4 135/193/4 +f 133/194/7 113/195/7 136/196/7 +f 113/195/10 115/189/10 114/192/10 +f 134/197/2 116/198/2 133/199/2 +f 148/200/3 151/201/3 146/202/3 +f 145/203/1 149/204/1 147/205/1 +f 140/206/3 143/207/3 138/208/3 +f 137/209/1 141/210/1 139/211/1 +f 139/212/2 144/213/2 140/206/2 +f 138/208/4 142/214/4 137/209/4 +f 147/215/2 152/216/2 148/200/2 +f 146/202/4 150/217/4 145/203/4 +f 164/218/1 167/219/1 162/220/1 +f 161/221/3 165/222/3 163/223/3 +f 156/224/1 159/225/1 154/226/1 +f 153/227/3 157/228/3 155/229/3 +f 155/230/2 160/231/2 156/224/2 +f 154/226/4 158/232/4 153/227/4 +f 163/233/2 168/234/2 164/218/2 +f 162/220/4 166/235/4 161/221/4 +f 180/236/5 183/237/5 178/238/5 +f 177/239/6 181/240/6 179/241/6 +f 172/242/5 175/243/5 170/244/5 +f 169/245/6 173/246/6 171/247/6 +f 171/248/2 176/249/2 172/242/2 +f 170/244/4 174/250/4 169/245/4 +f 179/251/2 184/252/2 180/236/2 +f 178/238/4 182/253/4 177/239/4 +f 196/254/6 199/255/6 194/256/6 +f 193/257/5 197/258/5 195/259/5 +f 188/260/6 191/261/6 186/262/6 +f 185/263/5 189/264/5 187/265/5 +f 188/260/2 189/266/2 192/267/2 +f 186/262/4 190/268/4 185/263/4 +f 196/254/2 197/269/2 200/270/2 +f 194/256/4 198/271/4 193/257/4 +f 2/1/1 4/4/1 3/2/1 +f 4/4/2 8/7/2 7/5/2 +f 8/7/3 6/10/3 5/8/3 +f 6/10/4 2/1/4 1/11/4 +f 7/13/5 5/272/5 1/3/5 +f 4/4/6 2/1/6 6/10/6 +f 11/14/5 12/28/5 10/15/5 +f 14/17/6 16/26/6 15/18/6 +f 19/20/1 20/30/1 18/21/1 +f 22/23/3 24/27/3 23/24/3 +f 21/25/7 23/24/7 16/26/7 +f 24/27/8 22/23/8 10/15/8 +f 9/29/9 18/21/9 20/30/9 +f 15/18/10 19/20/10 17/22/10 +f 26/32/6 28/273/6 27/33/6 +f 31/35/5 32/274/5 30/36/5 +f 34/38/3 36/275/3 35/39/3 +f 39/41/1 40/276/1 38/42/1 +f 36/44/7 34/56/7 25/45/7 +f 26/47/10 38/277/10 40/48/10 +f 32/50/9 39/278/9 37/51/9 +f 33/53/8 35/279/8 31/54/8 +f 17/22/4 33/53/4 29/55/4 +f 13/19/4 29/37/4 30/36/4 +f 14/17/4 30/52/4 37/51/4 +f 21/25/4 37/43/4 38/42/4 +f 22/23/4 38/277/4 26/47/4 +f 26/32/4 25/34/4 9/16/4 +f 9/29/4 25/45/4 34/56/4 +f 34/38/4 33/40/4 17/22/4 +f 24/27/2 40/280/2 39/57/2 +f 23/24/2 39/281/2 32/58/2 +f 16/26/2 32/282/2 31/59/2 +f 15/18/2 31/283/2 35/60/2 +f 35/61/2 36/284/2 20/30/2 +f 36/62/2 27/285/2 11/31/2 +f 27/63/2 28/286/2 12/28/2 +f 12/28/2 28/287/2 40/64/2 +f 45/65/4 48/86/4 57/66/4 +f 72/68/4 81/288/4 80/69/4 +f 54/73/7 55/289/7 58/75/7 +f 55/289/7 56/67/7 58/75/7 +f 56/67/7 57/66/7 58/75/7 +f 58/75/7 59/290/7 54/73/7 +f 59/290/7 60/71/7 54/73/7 +f 52/74/8 59/290/8 58/75/8 +f 50/77/2 53/72/2 60/71/2 +f 48/79/9 45/291/9 46/80/9 +f 46/80/9 49/292/9 52/74/9 +f 49/292/9 50/293/9 52/74/9 +f 50/293/9 51/294/9 52/74/9 +f 52/74/9 47/76/9 46/80/9 +f 54/81/11 53/72/11 50/77/11 +f 52/83/12 51/78/12 60/71/12 +f 58/85/13 57/66/13 48/86/13 +f 55/88/14 46/295/14 45/65/14 +f 46/89/10 55/289/10 54/73/10 +f 63/91/10 42/96/10 43/92/10 +f 63/94/4 64/296/4 41/95/4 +f 61/97/8 44/100/8 41/95/8 +f 41/95/7 44/100/7 43/92/7 +f 62/99/2 43/92/2 44/100/2 +f 78/104/9 79/297/9 82/106/9 +f 79/297/9 80/69/9 82/106/9 +f 80/69/9 81/288/9 82/106/9 +f 82/106/9 83/298/9 78/104/9 +f 83/298/9 84/102/9 78/104/9 +f 76/105/10 83/298/10 82/106/10 +f 75/108/2 74/112/2 77/103/2 +f 72/109/7 69/299/7 70/110/7 +f 70/110/7 73/300/7 76/105/7 +f 73/300/7 74/301/7 76/105/7 +f 74/301/7 75/302/7 76/105/7 +f 76/105/7 71/107/7 70/110/7 +f 73/111/12 78/303/12 77/103/12 +f 83/113/11 76/304/11 75/108/11 +f 82/114/14 81/288/14 72/68/14 +f 70/116/13 69/70/13 80/69/13 +f 70/118/8 79/297/8 78/104/8 +f 87/120/8 66/124/8 67/121/8 +f 88/123/4 65/127/4 66/124/4 +f 85/126/10 68/130/10 65/127/10 +f 65/127/9 68/130/9 67/121/9 +f 86/129/2 67/121/2 68/130/2 +f 93/132/4 96/152/4 105/133/4 +f 120/135/4 129/305/4 128/136/4 +f 102/140/8 103/306/8 106/142/8 +f 103/306/8 104/134/8 106/142/8 +f 104/134/8 105/133/8 106/142/8 +f 106/142/8 107/307/8 102/140/8 +f 107/307/8 108/138/8 102/140/8 +f 100/141/9 107/307/9 106/142/9 +f 98/144/2 101/139/2 108/138/2 +f 96/146/10 93/308/10 94/147/10 +f 94/147/10 97/309/10 100/141/10 +f 97/309/10 98/310/10 100/141/10 +f 98/310/10 99/311/10 100/141/10 +f 100/141/10 95/143/10 94/147/10 +f 102/148/15 101/139/15 98/144/15 +f 107/150/16 100/312/16 99/145/16 +f 106/151/17 105/133/17 96/152/17 +f 103/154/18 94/313/18 93/132/18 +f 94/155/7 103/306/7 102/140/7 +f 111/157/7 90/161/7 91/158/7 +f 112/160/4 89/164/4 90/161/4 +f 109/163/9 92/167/9 89/164/9 +f 89/164/8 92/167/8 91/158/8 +f 110/166/2 91/158/2 92/167/2 +f 126/171/10 127/314/10 130/173/10 +f 127/314/10 128/136/10 130/173/10 +f 128/136/10 129/305/10 130/173/10 +f 130/173/10 131/315/10 126/171/10 +f 131/315/10 132/169/10 126/171/10 +f 124/172/7 131/315/7 130/173/7 +f 123/175/2 122/179/2 125/170/2 +f 120/176/8 117/316/8 118/177/8 +f 118/177/8 121/317/8 124/172/8 +f 121/317/8 122/318/8 124/172/8 +f 122/318/8 123/319/8 124/172/8 +f 124/172/8 119/174/8 118/177/8 +f 121/178/16 126/320/16 125/170/16 +f 124/180/15 123/175/15 132/169/15 +f 130/182/18 129/305/18 120/135/18 +f 118/184/17 117/137/17 128/136/17 +f 118/186/9 127/314/9 126/171/9 +f 135/188/9 114/192/9 115/189/9 +f 136/191/4 113/195/4 114/192/4 +f 133/194/7 116/198/7 113/195/7 +f 113/195/10 116/198/10 115/189/10 +f 134/197/2 115/189/2 116/198/2 +f 148/200/3 152/216/3 151/201/3 +f 145/203/1 150/217/1 149/204/1 +f 140/206/3 144/213/3 143/207/3 +f 137/209/1 142/214/1 141/210/1 +f 139/212/2 141/321/2 144/213/2 +f 138/208/4 143/207/4 142/214/4 +f 147/215/2 149/322/2 152/216/2 +f 146/202/4 151/201/4 150/217/4 +f 164/218/1 168/234/1 167/219/1 +f 161/221/3 166/235/3 165/222/3 +f 156/224/1 160/231/1 159/225/1 +f 153/227/3 158/232/3 157/228/3 +f 155/230/2 157/323/2 160/231/2 +f 154/226/4 159/225/4 158/232/4 +f 163/233/2 165/324/2 168/234/2 +f 162/220/4 167/219/4 166/235/4 +f 180/236/5 184/252/5 183/237/5 +f 177/239/6 182/253/6 181/240/6 +f 172/242/5 176/249/5 175/243/5 +f 169/245/6 174/250/6 173/246/6 +f 171/248/2 173/325/2 176/249/2 +f 170/244/4 175/243/4 174/250/4 +f 179/251/2 181/326/2 184/252/2 +f 178/238/4 183/237/4 182/253/4 +f 196/254/6 200/270/6 199/255/6 +f 193/257/5 198/271/5 197/258/5 +f 188/260/6 192/267/6 191/261/6 +f 185/263/5 190/268/5 189/264/5 +f 188/260/2 187/327/2 189/266/2 +f 186/262/4 191/261/4 190/268/4 +f 196/254/2 195/328/2 197/269/2 +f 194/256/4 199/255/4 198/271/4 diff --git a/src/main/resources/assets/hbm/models/particleaccelerator/rfc.obj b/src/main/resources/assets/hbm/models/particleaccelerator/rfc.obj new file mode 100644 index 000000000..71caf5e62 --- /dev/null +++ b/src/main/resources/assets/hbm/models/particleaccelerator/rfc.obj @@ -0,0 +1,672 @@ +# Blender v2.79 (sub 0) OBJ File: 'rfc.blend' +# www.blender.org +o Cube_Cube.001 +v -0.500000 1.000000 4.500000 +v -0.500000 2.000000 4.500000 +v -0.500000 1.000000 -4.500000 +v -0.500000 2.000000 -4.500000 +v 0.500000 1.000000 4.500000 +v 0.500000 2.000000 4.500000 +v 0.500000 1.000000 -4.500000 +v 0.500000 2.000000 -4.500000 +v -1.000000 0.500000 4.000000 +v -1.000000 2.500000 4.000000 +v -1.000000 0.500000 3.500000 +v -1.000000 2.500000 3.500000 +v 1.000000 0.500000 4.000000 +v 1.000000 2.500000 4.000000 +v 1.000000 0.500000 3.500000 +v 1.000000 2.500000 3.500000 +v -0.500000 1.000000 4.250000 +v -0.500000 2.000000 4.250000 +v 0.500000 2.000000 4.250000 +v 0.500000 1.000000 4.250000 +v -0.500000 2.000000 3.250000 +v -0.500000 1.000000 3.250000 +v 0.500000 1.000000 3.250000 +v 0.500000 2.000000 3.250000 +v -0.187500 2.000000 3.187500 +v 0.187500 2.000000 3.187500 +v -0.187500 2.000000 2.812500 +v 0.187500 2.000000 2.812500 +v -0.187500 3.000000 2.812500 +v -0.187500 3.000000 3.187500 +v 0.187500 3.000000 3.187500 +v 0.187500 3.000000 2.812500 +v -0.187500 2.000000 -2.812500 +v 0.187500 2.000000 -2.812500 +v -0.187500 2.000000 -3.187500 +v 0.187500 2.000000 -3.187500 +v -0.187500 3.000000 -3.187500 +v -0.187500 3.000000 -2.812500 +v 0.187500 3.000000 -2.812500 +v 0.187500 3.000000 -3.187500 +v -0.187500 0.000000 3.187500 +v 0.187500 0.000000 3.187500 +v -0.187500 0.000000 2.812500 +v 0.187500 0.000000 2.812500 +v -0.187500 1.000000 2.812500 +v -0.187500 1.000000 3.187500 +v 0.187500 1.000000 3.187500 +v 0.187500 1.000000 2.812500 +v -0.187500 0.000000 -2.812500 +v 0.187500 0.000000 -2.812500 +v -0.187500 0.000000 -3.187500 +v 0.187500 0.000000 -3.187500 +v -0.187500 1.000000 -3.187500 +v -0.187500 1.000000 -2.812500 +v 0.187500 1.000000 -2.812500 +v 0.187500 1.000000 -3.187500 +v -0.125000 2.375000 3.875000 +v -0.125000 2.625000 3.875000 +v -0.125000 2.375000 -3.875000 +v -0.125000 2.625000 -3.875000 +v 0.125000 2.375000 3.875000 +v 0.125000 2.625000 3.875000 +v 0.125000 2.375000 -3.875000 +v 0.125000 2.625000 -3.875000 +v -0.125000 0.375000 3.875000 +v -0.125000 0.625000 3.875000 +v -0.125000 0.375000 -3.875000 +v -0.125000 0.625000 -3.875000 +v 0.125000 0.375000 3.875000 +v 0.125000 0.625000 3.875000 +v 0.125000 0.375000 -3.875000 +v 0.125000 0.625000 -3.875000 +v -1.000000 0.500000 2.500000 +v -1.000000 2.500000 2.500000 +v -1.000000 0.500000 2.000000 +v -1.000000 2.500000 2.000000 +v 1.000000 0.500000 2.500000 +v 1.000000 2.500000 2.500000 +v 1.000000 0.500000 2.000000 +v 1.000000 2.500000 2.000000 +v -0.500000 1.000000 2.750000 +v -0.500000 2.000000 2.750000 +v 0.500000 2.000000 2.750000 +v 0.500000 1.000000 2.750000 +v -0.500000 2.000000 1.750000 +v -0.500000 1.000000 1.750000 +v 0.500000 1.000000 1.750000 +v 0.500000 2.000000 1.750000 +v -1.000000 0.500000 1.000000 +v -1.000000 2.500000 1.000000 +v -1.000000 0.500000 0.500000 +v -1.000000 2.500000 0.500000 +v 1.000000 0.500000 1.000000 +v 1.000000 2.500000 1.000000 +v 1.000000 0.500000 0.500000 +v 1.000000 2.500000 0.500000 +v -0.500000 1.000000 1.250000 +v -0.500000 2.000000 1.250000 +v 0.500000 2.000000 1.250000 +v 0.500000 1.000000 1.250000 +v -0.500000 2.000000 0.250000 +v -0.500000 1.000000 0.250000 +v 0.500000 1.000000 0.250000 +v 0.500000 2.000000 0.250000 +v -1.000000 0.500000 -0.500000 +v -1.000000 2.500000 -0.500000 +v -1.000000 0.500000 -1.000000 +v -1.000000 2.500000 -1.000000 +v 1.000000 0.500000 -0.500000 +v 1.000000 2.500000 -0.500000 +v 1.000000 0.500000 -1.000000 +v 1.000000 2.500000 -1.000000 +v -0.500000 1.000000 -0.250000 +v -0.500000 2.000000 -0.250000 +v 0.500000 2.000000 -0.250000 +v 0.500000 1.000000 -0.250000 +v -0.500000 2.000000 -1.250000 +v -0.500000 1.000000 -1.250000 +v 0.500000 1.000000 -1.250000 +v 0.500000 2.000000 -1.250000 +v -1.000000 0.500000 -2.000000 +v -1.000000 2.500000 -2.000000 +v -1.000000 0.500000 -2.500000 +v -1.000000 2.500000 -2.500000 +v 1.000000 0.500000 -2.000000 +v 1.000000 2.500000 -2.000000 +v 1.000000 0.500000 -2.500000 +v 1.000000 2.500000 -2.500000 +v -0.500000 1.000000 -1.750000 +v -0.500000 2.000000 -1.750000 +v 0.500000 2.000000 -1.750000 +v 0.500000 1.000000 -1.750000 +v -0.500000 2.000000 -2.750000 +v -0.500000 1.000000 -2.750000 +v 0.500000 1.000000 -2.750000 +v 0.500000 2.000000 -2.750000 +v -1.000000 0.500000 -3.500000 +v -1.000000 2.500000 -3.500000 +v -1.000000 0.500000 -4.000000 +v -1.000000 2.500000 -4.000000 +v 1.000000 0.500000 -3.500000 +v 1.000000 2.500000 -3.500000 +v 1.000000 0.500000 -4.000000 +v 1.000000 2.500000 -4.000000 +v -0.500000 1.000000 -3.250000 +v -0.500000 2.000000 -3.250000 +v 0.500000 2.000000 -3.250000 +v 0.500000 1.000000 -3.250000 +v -0.500000 2.000000 -4.250000 +v -0.500000 1.000000 -4.250000 +v 0.500000 1.000000 -4.250000 +v 0.500000 2.000000 -4.250000 +v -0.187500 2.000000 0.187500 +v 0.187500 2.000000 0.187500 +v -0.187500 2.000000 -0.187500 +v 0.187500 2.000000 -0.187500 +v -0.187500 3.000000 -0.187500 +v -0.187500 3.000000 0.187500 +v 0.187500 3.000000 0.187500 +v 0.187500 3.000000 -0.187500 +v -0.187500 0.000000 0.187500 +v 0.187500 0.000000 0.187500 +v -0.187500 0.000000 -0.187500 +v 0.187500 0.000000 -0.187500 +v -0.187500 1.000000 -0.187500 +v -0.187500 1.000000 0.187500 +v 0.187500 1.000000 0.187500 +v 0.187500 1.000000 -0.187500 +vt 0.071429 0.400000 +vt 0.714286 0.600000 +vt 0.071429 0.600000 +vt 0.714286 0.400000 +vt 0.785714 0.200000 +vt 0.785714 0.400000 +vt 0.714286 0.200000 +vt 0.071429 0.000000 +vt 0.714286 -0.000000 +vt 0.071429 0.200000 +vt -0.000000 0.400000 +vt -0.000000 0.200000 +vt 0.714286 0.800000 +vt 1.000000 0.500000 +vt 0.964286 0.100000 +vt 1.000000 0.100000 +vt 0.821429 0.500000 +vt 0.928571 0.400000 +vt 0.964286 0.500000 +vt 0.785714 0.100000 +vt 0.821429 0.100000 +vt 0.964286 0.600000 +vt 0.857143 0.700000 +vt 0.821429 0.600000 +vt 0.964286 0.000000 +vt 0.857143 0.900000 +vt 0.821429 1.000000 +vt 0.964286 1.000000 +vt 0.928571 0.700000 +vt 0.928571 0.900000 +vt 0.928571 0.200000 +vt 0.857143 0.400000 +vt 0.857143 0.200000 +vt 0.741071 0.700000 +vt 0.767857 0.775000 +vt 0.741071 0.775000 +vt 0.741071 0.700000 +vt 0.767857 0.775000 +vt 0.741071 0.775000 +vt 0.794643 0.500000 +vt 0.767857 0.700000 +vt 0.767857 0.500000 +vt 0.741071 0.500000 +vt 0.714286 0.700000 +vt 0.714286 0.500000 +vt 0.821429 0.500000 +vt 0.794643 0.700000 +vt 0.794643 0.500000 +vt 0.767857 0.700000 +vt 0.767857 0.500000 +vt 0.741071 0.500000 +vt 0.714286 0.700000 +vt 0.714286 0.500000 +vt 0.821429 0.500000 +vt 0.794643 0.700000 +vt 0.767857 0.700000 +vt 0.794643 0.500000 +vt 0.794643 0.700000 +vt 0.714286 0.700000 +vt 0.741071 0.500000 +vt 0.741071 0.700000 +vt 0.821429 0.500000 +vt 0.821429 0.700000 +vt 0.767857 0.500000 +vt 0.767857 0.700000 +vt 0.794643 0.500000 +vt 0.794643 0.700000 +vt 0.714286 0.700000 +vt 0.741071 0.500000 +vt 0.741071 0.700000 +vt 0.821429 0.500000 +vt 0.821429 0.700000 +vt 0.767857 0.500000 +vt 0.767857 0.775000 +vt 0.767857 0.775000 +vt 0.071429 0.950000 +vt 0.625000 1.000000 +vt 0.071429 1.000000 +vt 0.625000 0.950000 +vt 0.642857 0.900000 +vt 0.642857 0.950000 +vt 0.625000 0.900000 +vt 0.071429 0.850000 +vt 0.625000 0.850000 +vt 0.071429 0.900000 +vt 0.053571 0.950000 +vt 0.053571 0.900000 +vt 0.071429 0.800000 +vt 0.625000 0.800000 +vt 0.071429 0.950000 +vt 0.625000 1.000000 +vt 0.071429 1.000000 +vt 0.625000 0.950000 +vt 0.642857 0.900000 +vt 0.642857 0.950000 +vt 0.625000 0.900000 +vt 0.071429 0.850000 +vt 0.625000 0.850000 +vt 0.071429 0.900000 +vt 0.053571 0.950000 +vt 0.053571 0.900000 +vt 0.071429 0.800000 +vt 0.625000 0.800000 +vt 1.000000 0.500000 +vt 0.964286 0.100000 +vt 1.000000 0.100000 +vt 0.821429 0.500000 +vt 0.928571 0.400000 +vt 0.964286 0.500000 +vt 0.785714 0.100000 +vt 0.821429 0.100000 +vt 0.964286 0.600000 +vt 0.857143 0.700000 +vt 0.821429 0.600000 +vt 0.964286 0.000000 +vt 0.857143 0.900000 +vt 0.821429 1.000000 +vt 0.964286 1.000000 +vt 0.928571 0.700000 +vt 0.928571 0.900000 +vt 0.928571 0.200000 +vt 0.857143 0.400000 +vt 0.857143 0.200000 +vt 1.000000 0.500000 +vt 0.964286 0.100000 +vt 1.000000 0.100000 +vt 0.821429 0.500000 +vt 0.928571 0.400000 +vt 0.964286 0.500000 +vt 0.785714 0.100000 +vt 0.821429 0.100000 +vt 0.964286 0.600000 +vt 0.857143 0.700000 +vt 0.821429 0.600000 +vt 0.964286 0.000000 +vt 0.857143 0.900000 +vt 0.821429 1.000000 +vt 0.964286 1.000000 +vt 0.928571 0.700000 +vt 0.928571 0.900000 +vt 0.928571 0.200000 +vt 0.857143 0.400000 +vt 0.857143 0.200000 +vt 1.000000 0.500000 +vt 0.964286 0.100000 +vt 1.000000 0.100000 +vt 0.821429 0.500000 +vt 0.928571 0.400000 +vt 0.964286 0.500000 +vt 0.785714 0.100000 +vt 0.821429 0.100000 +vt 0.964286 0.600000 +vt 0.857143 0.700000 +vt 0.821429 0.600000 +vt 0.964286 0.000000 +vt 0.857143 0.900000 +vt 0.821429 1.000000 +vt 0.964286 1.000000 +vt 0.928571 0.700000 +vt 0.928571 0.900000 +vt 0.928571 0.200000 +vt 0.857143 0.400000 +vt 0.857143 0.200000 +vt 1.000000 0.500000 +vt 0.964286 0.100000 +vt 1.000000 0.100000 +vt 0.821429 0.500000 +vt 0.928571 0.400000 +vt 0.964286 0.500000 +vt 0.785714 0.100000 +vt 0.821429 0.100000 +vt 0.964286 0.600000 +vt 0.857143 0.700000 +vt 0.821429 0.600000 +vt 0.964286 0.000000 +vt 0.857143 0.900000 +vt 0.821429 1.000000 +vt 0.964286 1.000000 +vt 0.928571 0.700000 +vt 0.928571 0.900000 +vt 0.928571 0.200000 +vt 0.857143 0.400000 +vt 0.857143 0.200000 +vt 1.000000 0.500000 +vt 0.964286 0.100000 +vt 1.000000 0.100000 +vt 0.821429 0.500000 +vt 0.928571 0.400000 +vt 0.964286 0.500000 +vt 0.785714 0.100000 +vt 0.821429 0.100000 +vt 0.964286 0.600000 +vt 0.857143 0.700000 +vt 0.821429 0.600000 +vt 0.964286 0.000000 +vt 0.857143 0.900000 +vt 0.821429 1.000000 +vt 0.964286 1.000000 +vt 0.928571 0.700000 +vt 0.928571 0.900000 +vt 0.928571 0.200000 +vt 0.857143 0.400000 +vt 0.857143 0.200000 +vt 0.741071 0.700000 +vt 0.767857 0.775000 +vt 0.741071 0.775000 +vt 0.794643 0.500000 +vt 0.767857 0.700000 +vt 0.767857 0.500000 +vt 0.741071 0.500000 +vt 0.714286 0.700000 +vt 0.714286 0.500000 +vt 0.821429 0.500000 +vt 0.794643 0.700000 +vt 0.767857 0.700000 +vt 0.794643 0.500000 +vt 0.794643 0.700000 +vt 0.714286 0.700000 +vt 0.741071 0.500000 +vt 0.741071 0.700000 +vt 0.821429 0.500000 +vt 0.821429 0.700000 +vt 0.767857 0.500000 +vt 0.767857 0.775000 +vt 0.071429 0.800000 +vt 0.785714 0.500000 +vt 0.821429 0.000000 +vt 0.821429 0.700000 +vt 0.821429 0.700000 +vt 0.714286 0.500000 +vt 0.714286 0.500000 +vt 0.741071 0.775000 +vt 0.741071 0.775000 +vt 0.785714 0.500000 +vt 0.821429 0.000000 +vt 0.785714 0.500000 +vt 0.821429 0.000000 +vt 0.785714 0.500000 +vt 0.821429 0.000000 +vt 0.785714 0.500000 +vt 0.821429 0.000000 +vt 0.785714 0.500000 +vt 0.821429 0.000000 +vt 0.821429 0.700000 +vt 0.714286 0.500000 +vt 0.741071 0.775000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.4472 -0.8944 +vn 0.0000 0.4472 0.8944 +vn 0.4472 0.0000 0.8944 +vn -0.4472 0.0000 0.8944 +vn 0.0000 -0.4472 0.8944 +vn -0.4472 0.0000 -0.8944 +vn 0.4472 0.0000 -0.8944 +vn 0.0000 -0.4472 -0.8944 +s off +f 2/1/1 3/2/1 1/3/1 +f 4/4/2 7/5/2 3/6/2 +f 8/7/3 5/8/3 7/9/3 +f 6/10/4 1/11/4 5/12/4 +f 7/13/5 1/3/5 3/2/5 +f 4/4/6 6/10/6 8/7/6 +f 10/14/1 11/15/1 9/16/1 +f 16/17/7 21/18/7 12/19/7 +f 16/17/3 13/20/3 15/21/3 +f 10/22/8 19/23/8 14/24/8 +f 15/21/5 9/25/5 11/15/5 +f 12/19/6 14/24/6 16/17/6 +f 14/24/9 20/26/9 13/27/9 +f 9/28/10 18/29/10 10/22/10 +f 13/27/11 17/30/11 9/28/11 +f 12/19/12 22/31/12 11/15/12 +f 15/21/13 24/32/13 16/17/13 +f 11/15/14 23/33/14 15/21/14 +f 39/34/6 37/35/6 38/36/6 +f 31/37/6 29/38/6 30/39/6 +f 27/40/2 32/41/2 28/42/2 +f 26/43/4 30/44/4 25/45/4 +f 28/42/3 31/37/3 26/43/3 +f 25/46/1 29/47/1 27/40/1 +f 35/48/2 40/49/2 36/50/2 +f 34/51/4 38/52/4 33/53/4 +f 36/50/3 39/34/3 34/51/3 +f 33/54/1 37/55/1 35/48/1 +f 43/56/2 48/57/2 44/58/2 +f 42/59/4 46/60/4 41/61/4 +f 44/58/3 47/62/3 42/63/3 +f 41/61/1 45/64/1 43/56/1 +f 51/65/2 56/66/2 52/67/2 +f 50/68/4 54/69/4 49/70/4 +f 52/67/3 55/71/3 50/72/3 +f 49/70/1 53/73/1 51/65/1 +f 44/74/5 41/61/5 43/56/5 +f 52/75/5 49/70/5 51/65/5 +f 58/76/1 59/77/1 57/78/1 +f 60/79/2 63/80/2 59/81/2 +f 64/82/3 61/83/3 63/84/3 +f 62/85/4 57/86/4 61/87/4 +f 63/84/5 57/88/5 59/89/5 +f 60/79/6 62/85/6 64/82/6 +f 66/90/1 67/91/1 65/92/1 +f 68/93/2 71/94/2 67/95/2 +f 72/96/3 69/97/3 71/98/3 +f 70/99/4 65/100/4 69/101/4 +f 71/98/5 65/102/5 67/103/5 +f 68/93/6 70/99/6 72/96/6 +f 74/104/1 75/105/1 73/106/1 +f 80/107/7 85/108/7 76/109/7 +f 80/107/3 77/110/3 79/111/3 +f 74/112/8 83/113/8 78/114/8 +f 79/111/5 73/115/5 75/105/5 +f 76/109/6 78/114/6 80/107/6 +f 78/114/9 84/116/9 77/117/9 +f 73/118/10 82/119/10 74/112/10 +f 77/117/11 81/120/11 73/118/11 +f 76/109/12 86/121/12 75/105/12 +f 79/111/13 88/122/13 80/107/13 +f 75/105/14 87/123/14 79/111/14 +f 90/124/1 91/125/1 89/126/1 +f 96/127/7 101/128/7 92/129/7 +f 96/127/3 93/130/3 95/131/3 +f 90/132/8 99/133/8 94/134/8 +f 95/131/5 89/135/5 91/125/5 +f 92/129/6 94/134/6 96/127/6 +f 94/134/9 100/136/9 93/137/9 +f 89/138/10 98/139/10 90/132/10 +f 93/137/11 97/140/11 89/138/11 +f 92/129/12 102/141/12 91/125/12 +f 95/131/13 104/142/13 96/127/13 +f 91/125/14 103/143/14 95/131/14 +f 106/144/1 107/145/1 105/146/1 +f 112/147/7 117/148/7 108/149/7 +f 112/147/3 109/150/3 111/151/3 +f 106/152/8 115/153/8 110/154/8 +f 111/151/5 105/155/5 107/145/5 +f 108/149/6 110/154/6 112/147/6 +f 110/154/9 116/156/9 109/157/9 +f 105/158/10 114/159/10 106/152/10 +f 109/157/11 113/160/11 105/158/11 +f 108/149/12 118/161/12 107/145/12 +f 111/151/13 120/162/13 112/147/13 +f 107/145/14 119/163/14 111/151/14 +f 122/164/1 123/165/1 121/166/1 +f 128/167/7 133/168/7 124/169/7 +f 128/167/3 125/170/3 127/171/3 +f 122/172/8 131/173/8 126/174/8 +f 127/171/5 121/175/5 123/165/5 +f 124/169/6 126/174/6 128/167/6 +f 126/174/9 132/176/9 125/177/9 +f 121/178/10 130/179/10 122/172/10 +f 125/177/11 129/180/11 121/178/11 +f 124/169/12 134/181/12 123/165/12 +f 127/171/13 136/182/13 128/167/13 +f 123/165/14 135/183/14 127/171/14 +f 138/184/1 139/185/1 137/186/1 +f 144/187/7 149/188/7 140/189/7 +f 144/187/3 141/190/3 143/191/3 +f 138/192/8 147/193/8 142/194/8 +f 143/191/5 137/195/5 139/185/5 +f 140/189/6 142/194/6 144/187/6 +f 142/194/9 148/196/9 141/197/9 +f 137/198/10 146/199/10 138/192/10 +f 141/197/11 145/200/11 137/198/11 +f 140/189/12 150/201/12 139/185/12 +f 143/191/13 152/202/13 144/187/13 +f 139/185/14 151/203/14 143/191/14 +f 159/204/6 157/205/6 158/206/6 +f 155/207/2 160/208/2 156/209/2 +f 154/210/4 158/211/4 153/212/4 +f 156/209/3 159/204/3 154/210/3 +f 153/213/1 157/214/1 155/207/1 +f 163/215/2 168/216/2 164/217/2 +f 162/218/4 166/219/4 161/220/4 +f 164/217/3 167/221/3 162/222/3 +f 161/220/1 165/223/1 163/215/1 +f 164/224/5 161/220/5 163/215/5 +f 2/1/1 4/4/1 3/2/1 +f 4/4/2 8/7/2 7/5/2 +f 8/7/3 6/10/3 5/8/3 +f 6/10/4 2/1/4 1/11/4 +f 7/13/5 5/225/5 1/3/5 +f 4/4/6 2/1/6 6/10/6 +f 10/14/1 12/19/1 11/15/1 +f 16/17/7 24/32/7 21/18/7 +f 16/17/3 14/226/3 13/20/3 +f 10/22/8 18/29/8 19/23/8 +f 15/21/5 13/227/5 9/25/5 +f 12/19/6 10/22/6 14/24/6 +f 14/24/9 19/23/9 20/26/9 +f 9/28/10 17/30/10 18/29/10 +f 13/27/11 20/26/11 17/30/11 +f 12/19/12 21/18/12 22/31/12 +f 15/21/13 23/33/13 24/32/13 +f 11/15/14 22/31/14 23/33/14 +f 39/34/6 40/49/6 37/35/6 +f 31/37/6 32/41/6 29/38/6 +f 27/40/2 29/47/2 32/41/2 +f 26/43/4 31/37/4 30/44/4 +f 28/42/3 32/41/3 31/37/3 +f 25/46/1 30/228/1 29/47/1 +f 35/48/2 37/55/2 40/49/2 +f 34/51/4 39/34/4 38/52/4 +f 36/50/3 40/49/3 39/34/3 +f 33/54/1 38/229/1 37/55/1 +f 43/56/2 45/64/2 48/57/2 +f 42/59/4 47/230/4 46/60/4 +f 44/58/3 48/57/3 47/62/3 +f 41/61/1 46/60/1 45/64/1 +f 51/65/2 53/73/2 56/66/2 +f 50/68/4 55/231/4 54/69/4 +f 52/67/3 56/66/3 55/71/3 +f 49/70/1 54/69/1 53/73/1 +f 44/74/5 42/232/5 41/61/5 +f 52/75/5 50/233/5 49/70/5 +f 58/76/1 60/79/1 59/77/1 +f 60/79/2 64/82/2 63/80/2 +f 64/82/3 62/85/3 61/83/3 +f 62/85/4 58/76/4 57/86/4 +f 63/84/5 61/83/5 57/88/5 +f 60/79/6 58/76/6 62/85/6 +f 66/90/1 68/93/1 67/91/1 +f 68/93/2 72/96/2 71/94/2 +f 72/96/3 70/99/3 69/97/3 +f 70/99/4 66/90/4 65/100/4 +f 71/98/5 69/97/5 65/102/5 +f 68/93/6 66/90/6 70/99/6 +f 74/104/1 76/109/1 75/105/1 +f 80/107/7 88/122/7 85/108/7 +f 80/107/3 78/234/3 77/110/3 +f 74/112/8 82/119/8 83/113/8 +f 79/111/5 77/235/5 73/115/5 +f 76/109/6 74/112/6 78/114/6 +f 78/114/9 83/113/9 84/116/9 +f 73/118/10 81/120/10 82/119/10 +f 77/117/11 84/116/11 81/120/11 +f 76/109/12 85/108/12 86/121/12 +f 79/111/13 87/123/13 88/122/13 +f 75/105/14 86/121/14 87/123/14 +f 90/124/1 92/129/1 91/125/1 +f 96/127/7 104/142/7 101/128/7 +f 96/127/3 94/236/3 93/130/3 +f 90/132/8 98/139/8 99/133/8 +f 95/131/5 93/237/5 89/135/5 +f 92/129/6 90/132/6 94/134/6 +f 94/134/9 99/133/9 100/136/9 +f 89/138/10 97/140/10 98/139/10 +f 93/137/11 100/136/11 97/140/11 +f 92/129/12 101/128/12 102/141/12 +f 95/131/13 103/143/13 104/142/13 +f 91/125/14 102/141/14 103/143/14 +f 106/144/1 108/149/1 107/145/1 +f 112/147/7 120/162/7 117/148/7 +f 112/147/3 110/238/3 109/150/3 +f 106/152/8 114/159/8 115/153/8 +f 111/151/5 109/239/5 105/155/5 +f 108/149/6 106/152/6 110/154/6 +f 110/154/9 115/153/9 116/156/9 +f 105/158/10 113/160/10 114/159/10 +f 109/157/11 116/156/11 113/160/11 +f 108/149/12 117/148/12 118/161/12 +f 111/151/13 119/163/13 120/162/13 +f 107/145/14 118/161/14 119/163/14 +f 122/164/1 124/169/1 123/165/1 +f 128/167/7 136/182/7 133/168/7 +f 128/167/3 126/240/3 125/170/3 +f 122/172/8 130/179/8 131/173/8 +f 127/171/5 125/241/5 121/175/5 +f 124/169/6 122/172/6 126/174/6 +f 126/174/9 131/173/9 132/176/9 +f 121/178/10 129/180/10 130/179/10 +f 125/177/11 132/176/11 129/180/11 +f 124/169/12 133/168/12 134/181/12 +f 127/171/13 135/183/13 136/182/13 +f 123/165/14 134/181/14 135/183/14 +f 138/184/1 140/189/1 139/185/1 +f 144/187/7 152/202/7 149/188/7 +f 144/187/3 142/242/3 141/190/3 +f 138/192/8 146/199/8 147/193/8 +f 143/191/5 141/243/5 137/195/5 +f 140/189/6 138/192/6 142/194/6 +f 142/194/9 147/193/9 148/196/9 +f 137/198/10 145/200/10 146/199/10 +f 141/197/11 148/196/11 145/200/11 +f 140/189/12 149/188/12 150/201/12 +f 143/191/13 151/203/13 152/202/13 +f 139/185/14 150/201/14 151/203/14 +f 159/204/6 160/208/6 157/205/6 +f 155/207/2 157/214/2 160/208/2 +f 154/210/4 159/204/4 158/211/4 +f 156/209/3 160/208/3 159/204/3 +f 153/213/1 158/244/1 157/214/1 +f 163/215/2 165/223/2 168/216/2 +f 162/218/4 167/245/4 166/219/4 +f 164/217/3 168/216/3 167/221/3 +f 161/220/1 166/219/1 165/223/1 +f 164/224/5 162/246/5 161/220/5 diff --git a/src/main/resources/assets/hbm/models/particleaccelerator/source.obj b/src/main/resources/assets/hbm/models/particleaccelerator/source.obj new file mode 100644 index 000000000..0151ee9d3 --- /dev/null +++ b/src/main/resources/assets/hbm/models/particleaccelerator/source.obj @@ -0,0 +1,3395 @@ +# Blender v2.79 (sub 0) OBJ File: 'source.blend' +# www.blender.org +o Cube_Cube.001 +v -0.500000 1.000000 -3.500000 +v -0.500000 2.000000 -3.500000 +v -0.500000 1.000000 -4.500000 +v -0.500000 2.000000 -4.500000 +v 0.500000 1.000000 -3.500000 +v 0.500000 2.000000 -3.500000 +v 0.500000 1.000000 -4.500000 +v 0.500000 2.000000 -4.500000 +v -0.625000 0.000000 -3.500000 +v 0.625000 0.000000 -3.500000 +v -0.625000 3.000000 -3.500000 +v 0.625000 3.000000 -3.500000 +v -1.500000 2.125000 -3.500000 +v -1.500000 0.875000 -3.500000 +v 1.500000 2.125000 -3.500000 +v 1.500000 0.875000 -3.500000 +v -0.625000 0.000000 3.500000 +v 0.625000 0.000000 3.500000 +v -0.625000 3.000000 3.500000 +v 0.625000 3.000000 3.500000 +v -1.500000 2.125000 3.500000 +v -1.500000 0.875000 3.500000 +v 1.500000 2.125000 3.500000 +v 1.500000 0.875000 3.500000 +v -1.000000 1.062500 3.500000 +v 1.000000 1.062500 3.500000 +v -1.000000 1.937500 3.500000 +v 1.000000 1.937500 3.500000 +v -0.437500 2.500000 3.500000 +v -0.437500 0.500000 3.500000 +v 0.437500 2.500000 3.500000 +v 0.437500 0.500000 3.500000 +v -1.000000 1.937500 4.500000 +v -1.000000 1.062500 4.500000 +v -0.437500 0.500000 4.500000 +v 0.437500 0.500000 4.500000 +v 1.000000 1.062500 4.500000 +v 1.000000 1.937500 4.500000 +v 0.437500 2.500000 4.500000 +v -0.437500 2.500000 4.500000 +v 0.250000 2.000000 -3.875000 +v 0.161612 2.000000 -3.838388 +v 0.125000 2.000000 -3.750000 +v 0.161612 2.000000 -3.661612 +v 0.250000 2.000000 -3.625000 +v 0.338388 2.000000 -3.661612 +v 0.375000 2.000000 -3.750000 +v 0.338388 2.000000 -3.838388 +v 0.250000 2.625000 -3.875000 +v 0.161612 2.625000 -3.838388 +v 0.125000 2.625000 -3.750000 +v 0.161612 2.625000 -3.661612 +v 0.250000 2.625000 -3.625000 +v 0.338388 2.625000 -3.661612 +v 0.375000 2.625000 -3.750000 +v 0.338388 2.625000 -3.838388 +v 0.250000 2.801777 -3.801777 +v 0.161612 2.775888 -3.775888 +v 0.125000 2.713388 -3.713388 +v 0.161612 2.650888 -3.650888 +v 0.338388 2.650888 -3.650888 +v 0.375000 2.713388 -3.713388 +v 0.338388 2.775888 -3.775888 +v 0.250000 2.875000 -3.625000 +v 0.161612 2.838388 -3.625000 +v 0.125000 2.750000 -3.625000 +v 0.161612 2.661612 -3.625000 +v 0.338388 2.661612 -3.625000 +v 0.375000 2.750000 -3.625000 +v 0.338388 2.838388 -3.625000 +v 0.161612 2.838388 -3.500000 +v 0.250000 2.875000 -3.500000 +v 0.125000 2.750000 -3.500000 +v 0.161612 2.661612 -3.500000 +v 0.375000 2.750000 -3.500000 +v 0.338388 2.661612 -3.500000 +v 0.338388 2.838388 -3.500000 +v 0.250000 2.625000 -3.500000 +v -0.250000 2.500000 4.375000 +v -0.161612 2.500000 4.338388 +v -0.125000 2.500000 4.250000 +v -0.161612 2.500000 4.161612 +v -0.250000 2.500000 4.125000 +v -0.338388 2.500000 4.161612 +v -0.375000 2.500000 4.250000 +v -0.338388 2.500000 4.338388 +v -0.250000 2.625000 4.375000 +v -0.161612 2.625000 4.338388 +v -0.125000 2.625000 4.250000 +v -0.161612 2.625000 4.161612 +v -0.250000 2.625000 4.125000 +v -0.338388 2.625000 4.161612 +v -0.375000 2.625000 4.250000 +v -0.338388 2.625000 4.338388 +v -0.250000 2.801777 4.301777 +v -0.161612 2.775888 4.275888 +v -0.125000 2.713388 4.213388 +v -0.161612 2.650888 4.150888 +v -0.338388 2.650888 4.150888 +v -0.375000 2.713388 4.213388 +v -0.338388 2.775888 4.275888 +v -0.250000 2.875000 4.125000 +v -0.161612 2.838388 4.125000 +v -0.125000 2.750000 4.125000 +v -0.161612 2.661612 4.125000 +v -0.338388 2.661612 4.125000 +v -0.375000 2.750000 4.125000 +v -0.338388 2.838388 4.125000 +v -0.161612 2.838388 3.500000 +v -0.250000 2.875000 3.500000 +v -0.125000 2.750000 3.500000 +v -0.161612 2.661612 3.500000 +v -0.375000 2.750000 3.500000 +v -0.338388 2.661612 3.500000 +v -0.338388 2.838388 3.500000 +v -0.250000 2.625000 3.500000 +v 0.875000 0.000000 2.500000 +v 1.500000 0.000000 2.500000 +v 1.500000 0.625000 2.500000 +v 0.875000 0.000000 2.000000 +v 1.500000 0.000000 2.000000 +v 1.500000 0.625000 2.000000 +v 1.375000 0.500000 2.375000 +v 1.375000 0.500000 2.125000 +v 1.000000 0.125000 2.375000 +v 1.000000 0.125000 2.125000 +v 1.250000 0.625000 2.375000 +v 1.250000 0.625000 2.125000 +v 0.875000 0.250000 2.375000 +v 0.875000 0.250000 2.125000 +v -0.500000 1.161612 -3.838388 +v -0.500000 1.250000 -3.875000 +v 1.125000 1.250000 -3.500000 +v 1.338388 1.161612 -3.500000 +v 1.161612 1.161612 -3.500000 +v 1.250000 1.125000 -3.500000 +v 1.161612 1.338388 -3.500000 +v 1.250000 1.375000 -3.500000 +v 1.375000 1.250000 -3.500000 +v 1.338388 1.338388 -3.500000 +v 1.338388 1.161612 -3.625000 +v 1.250000 1.125000 -3.625000 +v 1.161612 1.161612 -3.625000 +v 1.161612 1.338388 -3.625000 +v 1.250000 1.375000 -3.625000 +v 1.338388 1.338388 -3.625000 +v 1.375000 1.250000 -3.625000 +v 1.275888 1.161612 -3.775888 +v 1.213388 1.125000 -3.713388 +v 1.150888 1.161612 -3.650888 +v 1.150888 1.338388 -3.650888 +v 1.213388 1.375000 -3.713388 +v 1.275888 1.338388 -3.775888 +v 1.301777 1.250000 -3.801777 +v 1.125000 1.161612 -3.838388 +v 1.125000 1.125000 -3.750000 +v 1.125000 1.161612 -3.661612 +v 1.125000 1.250000 -3.625000 +v 1.125000 1.338388 -3.661612 +v 1.125000 1.375000 -3.750000 +v 1.125000 1.338388 -3.838388 +v 1.125000 1.250000 -3.875000 +v 0.500000 1.161612 -3.838388 +v 0.500000 1.125000 -3.750000 +v 0.500000 1.161612 -3.661612 +v 0.500000 1.250000 -3.625000 +v 0.500000 1.338388 -3.661612 +v 0.500000 1.375000 -3.750000 +v 0.500000 1.338388 -3.838388 +v 0.500000 1.250000 -3.875000 +v 0.250000 1.000000 -3.875000 +v 0.338388 1.000000 -3.838388 +v 0.375000 1.000000 -3.750000 +v 0.338388 1.000000 -3.661612 +v 0.250000 1.000000 -3.625000 +v 0.161611 1.000000 -3.661612 +v 0.125000 1.000000 -3.750000 +v 0.161611 1.000000 -3.838388 +v 0.250000 0.375000 -3.875000 +v 0.338388 0.375000 -3.838388 +v 0.375000 0.375000 -3.750000 +v 0.338388 0.375000 -3.661612 +v 0.250000 0.375000 -3.625000 +v 0.161611 0.375000 -3.661612 +v 0.125000 0.375000 -3.750000 +v 0.161611 0.375000 -3.838388 +v 0.250000 0.198223 -3.801777 +v 0.338388 0.224112 -3.775888 +v 0.375000 0.286612 -3.713388 +v 0.338388 0.349112 -3.650888 +v 0.161611 0.349112 -3.650888 +v 0.125000 0.286612 -3.713388 +v 0.161611 0.224112 -3.775888 +v 0.250000 0.125000 -3.625000 +v 0.338388 0.161612 -3.625000 +v 0.375000 0.250000 -3.625000 +v 0.338388 0.338388 -3.625000 +v 0.161611 0.338388 -3.625000 +v 0.125000 0.250000 -3.625000 +v 0.161611 0.161612 -3.625000 +v 0.338388 0.161612 -3.500000 +v 0.250000 0.125000 -3.500000 +v 0.375000 0.250000 -3.500000 +v 0.338388 0.338388 -3.500000 +v 0.125000 0.250000 -3.500000 +v 0.161611 0.338388 -3.500000 +v 0.161611 0.161612 -3.500000 +v 0.250000 0.375000 -3.500000 +v -0.250000 0.375000 -3.500000 +v -0.338389 0.161612 -3.500000 +v -0.338389 0.338388 -3.500000 +v -0.375000 0.250000 -3.500000 +v -0.161612 0.338388 -3.500000 +v -0.125000 0.250000 -3.500000 +v -0.250000 0.125000 -3.500000 +v -0.161612 0.161612 -3.500000 +v -0.338389 0.161612 -3.625000 +v -0.375000 0.250000 -3.625000 +v -0.338389 0.338388 -3.625000 +v -0.161612 0.338388 -3.625000 +v -0.125000 0.250000 -3.625000 +v -0.161612 0.161612 -3.625000 +v -0.250000 0.125000 -3.625000 +v -0.338389 0.224112 -3.775888 +v -0.375000 0.286612 -3.713388 +v -0.338389 0.349112 -3.650888 +v -0.161612 0.349112 -3.650888 +v -0.125000 0.286612 -3.713388 +v -0.161612 0.224112 -3.775888 +v -0.250000 0.198223 -3.801777 +v -0.338389 0.375000 -3.838388 +v -0.375000 0.375000 -3.750000 +v -0.338389 0.375000 -3.661612 +v -0.250000 0.375000 -3.625000 +v -0.161612 0.375000 -3.661612 +v -0.125000 0.375000 -3.750000 +v -0.161612 0.375000 -3.838388 +v -0.250000 0.375000 -3.875000 +v -0.338388 1.000000 -3.838388 +v -0.375000 1.000000 -3.750000 +v -0.338388 1.000000 -3.661612 +v -0.250000 1.000000 -3.625000 +v -0.161612 1.000000 -3.661612 +v -0.125000 1.000000 -3.750000 +v -0.161612 1.000000 -3.838388 +v -0.250000 1.000000 -3.875000 +v -0.250000 2.625000 -3.500000 +v -0.161612 2.838388 -3.500000 +v -0.161612 2.661612 -3.500000 +v -0.125000 2.750000 -3.500000 +v -0.338388 2.661612 -3.500000 +v -0.375000 2.750000 -3.500000 +v -0.250000 2.875000 -3.500000 +v -0.338388 2.838388 -3.500000 +v -0.161612 2.838388 -3.625000 +v -0.125000 2.750000 -3.625000 +v -0.161612 2.661612 -3.625000 +v -0.338388 2.661612 -3.625000 +v -0.375000 2.750000 -3.625000 +v -0.338388 2.838388 -3.625000 +v -0.250000 2.875000 -3.625000 +v -0.161612 2.775888 -3.775888 +v -0.125000 2.713388 -3.713388 +v -0.161612 2.650888 -3.650888 +v -0.338388 2.650888 -3.650888 +v -0.375000 2.713388 -3.713388 +v -0.338388 2.775888 -3.775888 +v -0.250000 2.801777 -3.801777 +v -0.161612 2.625000 -3.838388 +v -0.125000 2.625000 -3.750000 +v -0.161612 2.625000 -3.661612 +v -0.250000 2.625000 -3.625000 +v -0.338388 2.625000 -3.661612 +v -0.375000 2.625000 -3.750000 +v -0.338388 2.625000 -3.838388 +v -0.250000 2.625000 -3.875000 +v -0.161612 2.000000 -3.838388 +v -0.125000 2.000000 -3.750000 +v -0.161612 2.000000 -3.661612 +v -0.250000 2.000000 -3.625000 +v -0.338388 2.000000 -3.661612 +v -0.375000 2.000000 -3.750000 +v -0.338388 2.000000 -3.838388 +v -0.250000 2.000000 -3.875000 +v -0.500000 1.125000 -3.750000 +v -0.500000 1.161612 -3.661612 +v -0.500000 1.250000 -3.625000 +v -0.500000 1.338389 -3.661612 +v -0.500000 1.375000 -3.750000 +v -0.500000 1.338389 -3.838388 +v -1.125000 1.250000 -3.875000 +v -1.125000 1.161612 -3.838388 +v -1.125000 1.125000 -3.750000 +v -1.125000 1.161612 -3.661612 +v -1.125000 1.250000 -3.625000 +v -1.125000 1.338389 -3.661612 +v -1.125000 1.375000 -3.750000 +v -1.125000 1.338389 -3.838388 +v -1.301777 1.250000 -3.801777 +v -1.275888 1.161612 -3.775888 +v -1.213388 1.125000 -3.713388 +v -1.150888 1.161612 -3.650888 +v -1.150888 1.338389 -3.650888 +v -1.213388 1.375000 -3.713388 +v -1.275888 1.338389 -3.775888 +v -1.375000 1.250000 -3.625000 +v -1.338388 1.161612 -3.625000 +v -1.250000 1.125000 -3.625000 +v -1.161612 1.161612 -3.625000 +v -1.161612 1.338389 -3.625000 +v -1.250000 1.375000 -3.625000 +v -1.338388 1.338389 -3.625000 +v -1.338388 1.161612 -3.500000 +v -1.375000 1.250000 -3.500000 +v -1.250000 1.125000 -3.500000 +v -1.161612 1.161612 -3.500000 +v -1.250000 1.375000 -3.500000 +v -1.161612 1.338389 -3.500000 +v -1.338388 1.338389 -3.500000 +v -1.125000 1.250000 -3.500000 +v -1.125000 1.750000 -3.500000 +v -1.338388 1.838389 -3.500000 +v -1.161612 1.838389 -3.500000 +v -1.250000 1.875000 -3.500000 +v -1.161612 1.661612 -3.500000 +v -1.250000 1.625000 -3.500000 +v -1.375000 1.750000 -3.500000 +v -1.338388 1.661612 -3.500000 +v -1.338388 1.838389 -3.625000 +v -1.250000 1.875000 -3.625000 +v -1.161612 1.838389 -3.625000 +v -1.161612 1.661612 -3.625000 +v -1.250000 1.625000 -3.625000 +v -1.338388 1.661612 -3.625000 +v -1.375000 1.750000 -3.625000 +v -1.275888 1.838389 -3.775888 +v -1.213388 1.875000 -3.713388 +v -1.150888 1.838389 -3.650888 +v -1.150888 1.661612 -3.650888 +v -1.213388 1.625000 -3.713388 +v -1.275888 1.661612 -3.775888 +v -1.301777 1.750000 -3.801777 +v -1.125000 1.838389 -3.838388 +v -1.125000 1.875000 -3.750000 +v -1.125000 1.838389 -3.661612 +v -1.125000 1.750000 -3.625000 +v -1.125000 1.661612 -3.661612 +v -1.125000 1.625000 -3.750000 +v -1.125000 1.661612 -3.838388 +v -1.125000 1.750000 -3.875000 +v -0.500000 1.838388 -3.838388 +v -0.500000 1.875000 -3.750000 +v -0.500000 1.838388 -3.661612 +v -0.500000 1.750000 -3.625000 +v -0.500000 1.661612 -3.661612 +v -0.500000 1.625000 -3.750000 +v -0.500000 1.661612 -3.838388 +v -0.500000 1.750000 -3.875000 +v 1.125000 1.750000 -3.500000 +v 1.338388 1.661612 -3.500000 +v 1.161612 1.661612 -3.500000 +v 1.250000 1.625000 -3.500000 +v 1.161612 1.838388 -3.500000 +v 1.250000 1.875000 -3.500000 +v 1.375000 1.750000 -3.500000 +v 1.338388 1.838388 -3.500000 +v 1.338388 1.661612 -3.625000 +v 1.250000 1.625000 -3.625000 +v 1.161612 1.661612 -3.625000 +v 1.161612 1.838388 -3.625000 +v 1.250000 1.875000 -3.625000 +v 1.338388 1.838388 -3.625000 +v 1.375000 1.750000 -3.625000 +v 1.275888 1.661612 -3.775888 +v 1.213388 1.625000 -3.713388 +v 1.150888 1.661612 -3.650888 +v 1.150888 1.838388 -3.650888 +v 1.213388 1.875000 -3.713388 +v 1.275888 1.838388 -3.775888 +v 1.301777 1.750000 -3.801777 +v 1.125000 1.661612 -3.838388 +v 1.125000 1.625000 -3.750000 +v 1.125000 1.661612 -3.661612 +v 1.125000 1.750000 -3.625000 +v 1.125000 1.838388 -3.661612 +v 1.125000 1.875000 -3.750000 +v 1.125000 1.838388 -3.838388 +v 1.125000 1.750000 -3.875000 +v 0.500000 1.661612 -3.838388 +v 0.500000 1.625000 -3.750000 +v 0.500000 1.661612 -3.661612 +v 0.500000 1.750000 -3.625000 +v 0.500000 1.838388 -3.661612 +v 0.500000 1.875000 -3.750000 +v 0.500000 1.838388 -3.838388 +v 0.500000 1.750000 -3.875000 +v 0.250000 2.500000 4.375000 +v 0.338388 2.500000 4.338388 +v 0.375000 2.500000 4.250000 +v 0.338388 2.500000 4.161612 +v 0.250000 2.500000 4.125000 +v 0.161612 2.500000 4.161612 +v 0.125000 2.500000 4.250000 +v 0.161612 2.500000 4.338388 +v 0.250000 2.625000 4.375000 +v 0.338388 2.625000 4.338388 +v 0.375000 2.625000 4.250000 +v 0.338388 2.625000 4.161612 +v 0.250000 2.625000 4.125000 +v 0.161612 2.625000 4.161612 +v 0.125000 2.625000 4.250000 +v 0.161612 2.625000 4.338388 +v 0.250000 2.801777 4.301777 +v 0.338388 2.775888 4.275888 +v 0.375000 2.713388 4.213388 +v 0.338388 2.650888 4.150888 +v 0.161612 2.650888 4.150888 +v 0.125000 2.713388 4.213388 +v 0.161612 2.775888 4.275888 +v 0.250000 2.875000 4.125000 +v 0.338388 2.838388 4.125000 +v 0.375000 2.750000 4.125000 +v 0.338388 2.661612 4.125000 +v 0.161612 2.661612 4.125000 +v 0.125000 2.750000 4.125000 +v 0.161612 2.838388 4.125000 +v 0.338388 2.838388 3.500000 +v 0.250000 2.875000 3.500000 +v 0.375000 2.750000 3.500000 +v 0.338388 2.661612 3.500000 +v 0.125000 2.750000 3.500000 +v 0.161612 2.661612 3.500000 +v 0.161612 2.838388 3.500000 +v 0.250000 2.625000 3.500000 +v 0.250000 0.500000 4.375000 +v 0.161611 0.500000 4.338388 +v 0.125000 0.500000 4.250000 +v 0.161611 0.500000 4.161612 +v 0.250000 0.500000 4.125000 +v 0.338388 0.500000 4.161612 +v 0.375000 0.500000 4.250000 +v 0.338388 0.500000 4.338388 +v 0.250000 0.375000 4.375000 +v 0.161611 0.375000 4.338388 +v 0.125000 0.375000 4.250000 +v 0.161611 0.375000 4.161612 +v 0.250000 0.375000 4.125000 +v 0.338388 0.375000 4.161612 +v 0.375000 0.375000 4.250000 +v 0.338388 0.375000 4.338388 +v 0.250000 0.198223 4.301777 +v 0.161611 0.224112 4.275888 +v 0.125000 0.286612 4.213388 +v 0.161611 0.349112 4.150888 +v 0.338388 0.349112 4.150888 +v 0.375000 0.286612 4.213388 +v 0.338388 0.224112 4.275888 +v 0.250000 0.125000 4.125000 +v 0.161611 0.161612 4.125000 +v 0.125000 0.250000 4.125000 +v 0.161611 0.338388 4.125000 +v 0.338388 0.338388 4.125000 +v 0.375000 0.250000 4.125000 +v 0.338388 0.161612 4.125000 +v 0.161612 0.161612 3.500000 +v 0.250000 0.125000 3.500000 +v 0.125000 0.250000 3.500000 +v 0.161612 0.338388 3.500000 +v 0.375000 0.250000 3.500000 +v 0.338388 0.338388 3.500000 +v 0.338388 0.161612 3.500000 +v 0.250000 0.375000 3.500000 +v -0.250000 0.500000 4.375000 +v -0.338389 0.500000 4.338388 +v -0.375000 0.500000 4.250000 +v -0.338389 0.500000 4.161612 +v -0.250000 0.500000 4.125000 +v -0.161612 0.500000 4.161612 +v -0.125000 0.500000 4.250000 +v -0.161612 0.500000 4.338388 +v -0.250000 0.375000 4.375000 +v -0.338389 0.375000 4.338388 +v -0.375000 0.375000 4.250000 +v -0.338389 0.375000 4.161612 +v -0.250000 0.375000 4.125000 +v -0.161612 0.375000 4.161612 +v -0.125000 0.375000 4.250000 +v -0.161612 0.375000 4.338388 +v -0.250000 0.198223 4.301777 +v -0.338389 0.224112 4.275888 +v -0.375000 0.286612 4.213388 +v -0.338389 0.349112 4.150888 +v -0.161612 0.349112 4.150888 +v -0.125000 0.286612 4.213388 +v -0.161612 0.224112 4.275888 +v -0.250000 0.125000 4.125000 +v -0.338389 0.161612 4.125000 +v -0.375000 0.250000 4.125000 +v -0.338389 0.338388 4.125000 +v -0.161612 0.338388 4.125000 +v -0.125000 0.250000 4.125000 +v -0.161612 0.161612 4.125000 +v -0.338388 0.161612 3.500000 +v -0.250000 0.125000 3.500000 +v -0.375000 0.250000 3.500000 +v -0.338388 0.338388 3.500000 +v -0.125000 0.250000 3.500000 +v -0.161612 0.338388 3.500000 +v -0.161612 0.161612 3.500000 +v -0.250000 0.375000 3.500000 +v 1.000000 1.750000 4.375000 +v 1.000000 1.661612 4.338388 +v 1.000000 1.625000 4.250000 +v 1.000000 1.661612 4.161612 +v 1.000000 1.750000 4.125000 +v 1.000000 1.838388 4.161612 +v 1.000000 1.875000 4.250000 +v 1.000000 1.838388 4.338388 +v 1.125000 1.750000 4.375000 +v 1.125000 1.661612 4.338388 +v 1.125000 1.625000 4.250000 +v 1.125000 1.661612 4.161612 +v 1.125000 1.750000 4.125000 +v 1.125000 1.838388 4.161612 +v 1.125000 1.875000 4.250000 +v 1.125000 1.838388 4.338388 +v 1.301777 1.750000 4.301777 +v 1.275888 1.661612 4.275888 +v 1.213388 1.625000 4.213388 +v 1.150888 1.661612 4.150888 +v 1.150888 1.838388 4.150888 +v 1.213388 1.875000 4.213388 +v 1.275888 1.838388 4.275888 +v 1.375000 1.750000 4.125000 +v 1.338388 1.661612 4.125000 +v 1.250000 1.625000 4.125000 +v 1.161612 1.661612 4.125000 +v 1.161612 1.838388 4.125000 +v 1.250000 1.875000 4.125000 +v 1.338388 1.838388 4.125000 +v 1.338388 1.661612 3.500000 +v 1.375000 1.750000 3.500000 +v 1.250000 1.625000 3.500000 +v 1.161612 1.661612 3.500000 +v 1.250000 1.875000 3.500000 +v 1.161612 1.838388 3.500000 +v 1.338388 1.838388 3.500000 +v 1.125000 1.750000 3.500000 +v 1.000000 1.250000 4.375000 +v 1.000000 1.161612 4.338388 +v 1.000000 1.125000 4.250000 +v 1.000000 1.161612 4.161612 +v 1.000000 1.250000 4.125000 +v 1.000000 1.338388 4.161612 +v 1.000000 1.375000 4.250000 +v 1.000000 1.338388 4.338388 +v 1.125000 1.250000 4.375000 +v 1.125000 1.161612 4.338388 +v 1.125000 1.125000 4.250000 +v 1.125000 1.161612 4.161612 +v 1.125000 1.250000 4.125000 +v 1.125000 1.338388 4.161612 +v 1.125000 1.375000 4.250000 +v 1.125000 1.338388 4.338388 +v 1.301777 1.250000 4.301777 +v 1.275888 1.161612 4.275888 +v 1.213388 1.125000 4.213388 +v 1.150888 1.161612 4.150888 +v 1.150888 1.338388 4.150888 +v 1.213388 1.375000 4.213388 +v 1.275888 1.338388 4.275888 +v 1.375000 1.250000 4.125000 +v 1.338388 1.161612 4.125000 +v 1.250000 1.125000 4.125000 +v 1.161612 1.161612 4.125000 +v 1.161612 1.338388 4.125000 +v 1.250000 1.375000 4.125000 +v 1.338388 1.338388 4.125000 +v 1.338388 1.161612 3.500000 +v 1.375000 1.250000 3.500000 +v 1.250000 1.125000 3.500000 +v 1.161612 1.161612 3.500000 +v 1.250000 1.375000 3.500000 +v 1.161612 1.338388 3.500000 +v 1.338388 1.338388 3.500000 +v 1.125000 1.250000 3.500000 +v -1.000000 1.250000 4.375000 +v -1.000000 1.338389 4.338388 +v -1.000000 1.375000 4.250000 +v -1.000000 1.338389 4.161612 +v -1.000000 1.250000 4.125000 +v -1.000000 1.161612 4.161612 +v -1.000000 1.125000 4.250000 +v -1.000000 1.161612 4.338388 +v -1.125000 1.250000 4.375000 +v -1.125000 1.338389 4.338388 +v -1.125000 1.375000 4.250000 +v -1.125000 1.338389 4.161612 +v -1.125000 1.250000 4.125000 +v -1.125000 1.161612 4.161612 +v -1.125000 1.125000 4.250000 +v -1.125000 1.161612 4.338388 +v -1.301777 1.250000 4.301777 +v -1.275888 1.338389 4.275888 +v -1.213388 1.375000 4.213388 +v -1.150888 1.338389 4.150888 +v -1.150888 1.161612 4.150888 +v -1.213388 1.125000 4.213388 +v -1.275888 1.161612 4.275888 +v -1.375000 1.250000 4.125000 +v -1.338388 1.338389 4.125000 +v -1.250000 1.375000 4.125000 +v -1.161612 1.338389 4.125000 +v -1.161612 1.161612 4.125000 +v -1.250000 1.125000 4.125000 +v -1.338388 1.161612 4.125000 +v -1.338388 1.338388 3.500000 +v -1.375000 1.250000 3.500000 +v -1.250000 1.375000 3.500000 +v -1.161612 1.338388 3.500000 +v -1.250000 1.125000 3.500000 +v -1.161612 1.161612 3.500000 +v -1.338388 1.161612 3.500000 +v -1.125000 1.250000 3.500000 +v -1.000000 1.750000 4.375000 +v -1.000000 1.838389 4.338388 +v -1.000000 1.875000 4.250000 +v -1.000000 1.838389 4.161612 +v -1.000000 1.750000 4.125000 +v -1.000000 1.661612 4.161612 +v -1.000000 1.625000 4.250000 +v -1.000000 1.661612 4.338388 +v -1.125000 1.750000 4.375000 +v -1.125000 1.838389 4.338388 +v -1.125000 1.875000 4.250000 +v -1.125000 1.838389 4.161612 +v -1.125000 1.750000 4.125000 +v -1.125000 1.661612 4.161612 +v -1.125000 1.625000 4.250000 +v -1.125000 1.661612 4.338388 +v -1.301777 1.750000 4.301777 +v -1.275888 1.838389 4.275888 +v -1.213388 1.875000 4.213388 +v -1.150888 1.838389 4.150888 +v -1.150888 1.661612 4.150888 +v -1.213388 1.625000 4.213388 +v -1.275888 1.661612 4.275888 +v -1.375000 1.750000 4.125000 +v -1.338388 1.838389 4.125000 +v -1.250000 1.875000 4.125000 +v -1.161612 1.838389 4.125000 +v -1.161612 1.661612 4.125000 +v -1.250000 1.625000 4.125000 +v -1.338388 1.661612 4.125000 +v -1.338388 1.838388 3.500000 +v -1.375000 1.750000 3.500000 +v -1.250000 1.875000 3.500000 +v -1.161612 1.838388 3.500000 +v -1.250000 1.625000 3.500000 +v -1.161612 1.661612 3.500000 +v -1.338388 1.661612 3.500000 +v -1.125000 1.750000 3.500000 +v 0.875000 0.000000 0.250000 +v 1.500000 0.000000 0.250000 +v 1.500000 0.625000 0.250000 +v 0.875000 0.000000 -0.250000 +v 1.500000 0.000000 -0.250000 +v 1.500000 0.625000 -0.250000 +v 1.375000 0.500000 0.125000 +v 1.375000 0.500000 -0.125000 +v 1.000000 0.125000 0.125000 +v 1.000000 0.125000 -0.125000 +v 1.250000 0.625000 0.125000 +v 1.250000 0.625000 -0.125000 +v 0.875000 0.250000 0.125000 +v 0.875000 0.250000 -0.125000 +v 0.875000 0.000000 -2.000000 +v 1.500000 0.000000 -2.000000 +v 1.500000 0.625000 -2.000000 +v 0.875000 0.000000 -2.500000 +v 1.500000 0.000000 -2.500000 +v 1.500000 0.625000 -2.500000 +v 1.375000 0.500000 -2.125000 +v 1.375000 0.500000 -2.375000 +v 1.000000 0.125000 -2.125000 +v 1.000000 0.125000 -2.375000 +v 1.250000 0.625000 -2.125000 +v 1.250000 0.625000 -2.375000 +v 0.875000 0.250000 -2.125000 +v 0.875000 0.250000 -2.375000 +v -0.875000 3.000000 2.500000 +v -1.500000 3.000000 2.500000 +v -1.500000 2.375000 2.500000 +v -0.875000 3.000000 2.000000 +v -1.500000 3.000000 2.000000 +v -1.500000 2.375000 2.000000 +v -1.375000 2.500000 2.375000 +v -1.375000 2.500000 2.125000 +v -1.000000 2.875000 2.375000 +v -1.000000 2.875000 2.125000 +v -1.250000 2.375000 2.375000 +v -1.250000 2.375000 2.125000 +v -0.875000 2.750000 2.375000 +v -0.875000 2.750000 2.125000 +v -0.875000 3.000000 0.250000 +v -1.500000 3.000000 0.250000 +v -1.500000 2.375000 0.250000 +v -0.875000 3.000000 -0.250000 +v -1.500000 3.000000 -0.250000 +v -1.500000 2.375000 -0.250000 +v -1.375000 2.500000 0.125000 +v -1.375000 2.500000 -0.125000 +v -1.000000 2.875000 0.125000 +v -1.000000 2.875000 -0.125000 +v -1.250000 2.375000 0.125000 +v -1.250000 2.375000 -0.125000 +v -0.875000 2.750000 0.125000 +v -0.875000 2.750000 -0.125000 +v -0.875000 3.000000 -2.000000 +v -1.500000 3.000000 -2.000000 +v -1.500000 2.375000 -2.000000 +v -0.875000 3.000000 -2.500000 +v -1.500000 3.000000 -2.500000 +v -1.500000 2.375000 -2.500000 +v -1.375000 2.500000 -2.125000 +v -1.375000 2.500000 -2.375000 +v -1.000000 2.875000 -2.125000 +v -1.000000 2.875000 -2.375000 +v -1.250000 2.375000 -2.125000 +v -1.250000 2.375000 -2.375000 +v -0.875000 2.750000 -2.125000 +v -0.875000 2.750000 -2.375000 +v -1.500000 0.625000 2.500000 +v -1.500000 0.000000 2.500000 +v -0.875000 0.000000 2.500000 +v -1.500000 0.625000 2.000000 +v -1.500000 0.000000 2.000000 +v -0.875000 0.000000 2.000000 +v -1.000000 0.125000 2.375000 +v -1.000000 0.125000 2.125000 +v -1.375000 0.500000 2.375000 +v -1.375000 0.500000 2.125000 +v -0.875000 0.250000 2.375000 +v -0.875000 0.250000 2.125000 +v -1.250000 0.625000 2.375000 +v -1.250000 0.625000 2.125000 +v -1.500000 0.625000 0.250000 +v -1.500000 0.000000 0.250000 +v -0.875000 0.000000 0.250000 +v -1.500000 0.625000 -0.250000 +v -1.500000 0.000000 -0.250000 +v -0.875000 0.000000 -0.250000 +v -1.000000 0.125000 0.125000 +v -1.000000 0.125000 -0.125000 +v -1.375000 0.500000 0.125000 +v -1.375000 0.500000 -0.125000 +v -0.875000 0.250000 0.125000 +v -0.875000 0.250000 -0.125000 +v -1.250000 0.625000 0.125000 +v -1.250000 0.625000 -0.125000 +v -1.500000 0.625000 -2.000000 +v -1.500000 0.000000 -2.000000 +v -0.875000 0.000000 -2.000000 +v -1.500000 0.625000 -2.500000 +v -1.500000 0.000000 -2.500000 +v -0.875000 0.000000 -2.500000 +v -1.000000 0.125000 -2.125000 +v -1.000000 0.125000 -2.375000 +v -1.375000 0.500000 -2.125000 +v -1.375000 0.500000 -2.375000 +v -0.875000 0.250000 -2.125000 +v -0.875000 0.250000 -2.375000 +v -1.250000 0.625000 -2.125000 +v -1.250000 0.625000 -2.375000 +v 1.500000 2.375000 2.500000 +v 1.500000 3.000000 2.500000 +v 0.875000 3.000000 2.500000 +v 1.500000 2.375000 2.000000 +v 1.500000 3.000000 2.000000 +v 0.875000 3.000000 2.000000 +v 1.000000 2.875000 2.375000 +v 1.000000 2.875000 2.125000 +v 1.375000 2.500000 2.375000 +v 1.375000 2.500000 2.125000 +v 0.875000 2.750000 2.375000 +v 0.875000 2.750000 2.125000 +v 1.250000 2.375000 2.375000 +v 1.250000 2.375000 2.125000 +v 1.500000 2.375000 0.250000 +v 1.500000 3.000000 0.250000 +v 0.875000 3.000000 0.250000 +v 1.500000 2.375000 -0.250000 +v 1.500000 3.000000 -0.250000 +v 0.875000 3.000000 -0.250000 +v 1.000000 2.875000 0.125000 +v 1.000000 2.875000 -0.125000 +v 1.375000 2.500000 0.125000 +v 1.375000 2.500000 -0.125000 +v 0.875000 2.750000 0.125000 +v 0.875000 2.750000 -0.125000 +v 1.250000 2.375000 0.125000 +v 1.250000 2.375000 -0.125000 +v 1.500000 2.375000 -2.000000 +v 1.500000 3.000000 -2.000000 +v 0.875000 3.000000 -2.000000 +v 1.500000 2.375000 -2.500000 +v 1.500000 3.000000 -2.500000 +v 0.875000 3.000000 -2.500000 +v 1.000000 2.875000 -2.125000 +v 1.000000 2.875000 -2.375000 +v 1.375000 2.500000 -2.125000 +v 1.375000 2.500000 -2.375000 +v 0.875000 2.750000 -2.125000 +v 0.875000 2.750000 -2.375000 +v 1.250000 2.375000 -2.125000 +v 1.250000 2.375000 -2.375000 +vt 1.000000 0.200000 +vt 0.925926 0.100000 +vt 1.000000 0.100000 +vt 0.925926 0.200000 +vt 0.851852 0.100000 +vt 0.851852 0.200000 +vt 0.777778 0.100000 +vt 0.925926 0.000000 +vt 0.851852 0.300000 +vt 0.259259 0.875000 +vt 0.777778 0.750000 +vt 0.777778 0.875000 +vt 0.259259 0.375000 +vt 0.777778 0.250000 +vt 0.777778 0.375000 +vt 0.259259 0.625000 +vt 0.777778 0.500000 +vt 0.777778 0.625000 +vt 0.259259 0.125000 +vt 0.777778 0.000000 +vt 0.777778 0.125000 +vt 0.777778 1.000000 +vt 0.259259 0.250000 +vt 0.259259 0.750000 +vt 0.851852 0.512500 +vt 0.851852 0.612500 +vt 0.935185 0.712500 +vt 0.925926 0.612500 +vt 0.842593 0.712500 +vt 0.842593 0.412500 +vt 0.925926 0.512500 +vt 1.000000 0.500000 +vt 0.935185 0.412500 +vt 1.000000 0.625000 +vt 0.222222 0.768750 +vt 0.222222 0.606250 +vt 0.259259 0.500000 +vt 0.222222 0.650000 +vt 0.222222 0.356250 +vt 0.222222 0.106250 +vt 0.259259 0.000000 +vt 0.222222 0.150000 +vt 0.222222 0.975000 +vt 0.259259 1.000000 +vt 0.222222 0.400000 +vt 0.222222 0.525000 +vt 0.148148 0.437500 +vt 0.222222 0.437500 +vt 0.000000 0.350000 +vt 0.106481 0.293750 +vt 0.222222 0.350000 +vt 0.148148 0.262500 +vt 0.222222 0.262500 +vt 0.222222 0.175000 +vt 0.148148 0.087500 +vt 0.222222 0.087500 +vt 0.148148 0.175000 +vt 0.222222 0.612500 +vt 0.148148 0.525000 +vt 0.222222 0.700000 +vt 0.148148 0.612500 +vt 0.148148 0.350000 +vt 0.148148 -0.000000 +vt 0.222222 -0.000000 +vt 0.898148 0.775000 +vt 0.851852 0.775000 +vt 0.898148 0.712500 +vt 0.935185 0.775000 +vt 0.935185 0.712500 +vt 0.981481 0.775000 +vt 0.898148 0.837500 +vt 0.935185 0.900000 +vt 0.898148 0.900000 +vt 0.935185 0.837500 +vt 0.962963 0.918750 +vt 0.925926 0.900000 +vt 0.962963 0.900000 +vt 0.870370 0.918750 +vt 0.851852 0.900000 +vt 0.870370 0.900000 +vt 0.907407 0.900000 +vt 0.925926 0.918750 +vt 0.898148 0.775000 +vt 0.851852 0.775000 +vt 0.898148 0.712500 +vt 0.935185 0.775000 +vt 0.935185 0.712500 +vt 0.981481 0.775000 +vt 0.898148 0.837500 +vt 0.935185 0.900000 +vt 0.898148 0.900000 +vt 0.935185 0.837500 +vt 0.962963 0.918750 +vt 0.925926 0.900000 +vt 0.962963 0.900000 +vt 0.870370 0.918750 +vt 0.851852 0.900000 +vt 0.870370 0.900000 +vt 0.907407 0.900000 +vt 0.925926 0.918750 +vt 0.898148 0.775000 +vt 0.851852 0.775000 +vt 0.898148 0.712500 +vt 0.935185 0.775000 +vt 0.935185 0.712500 +vt 0.981481 0.775000 +vt 0.898148 0.837500 +vt 0.935185 0.900000 +vt 0.898148 0.900000 +vt 0.935185 0.837500 +vt 0.962963 0.918750 +vt 0.925926 0.900000 +vt 0.962963 0.900000 +vt 0.870370 0.918750 +vt 0.851852 0.900000 +vt 0.870370 0.900000 +vt 0.907407 0.900000 +vt 0.925926 0.918750 +vt 0.898148 0.775000 +vt 0.851852 0.775000 +vt 0.898148 0.712500 +vt 0.935185 0.775000 +vt 0.935185 0.712500 +vt 0.981481 0.775000 +vt 0.898148 0.837500 +vt 0.935185 0.900000 +vt 0.898148 0.900000 +vt 0.935185 0.837500 +vt 0.962963 0.918750 +vt 0.925926 0.900000 +vt 0.962963 0.900000 +vt 0.870370 0.918750 +vt 0.851852 0.900000 +vt 0.870370 0.900000 +vt 0.907407 0.900000 +vt 0.925926 0.918750 +vt 0.898148 0.775000 +vt 0.851852 0.775000 +vt 0.898148 0.712500 +vt 0.935185 0.775000 +vt 0.935185 0.712500 +vt 0.981481 0.775000 +vt 0.898148 0.837500 +vt 0.935185 0.900000 +vt 0.898148 0.900000 +vt 0.935185 0.837500 +vt 0.962963 0.918750 +vt 0.925926 0.900000 +vt 0.962963 0.900000 +vt 0.870370 0.918750 +vt 0.851852 0.900000 +vt 0.870370 0.900000 +vt 0.907407 0.900000 +vt 0.925926 0.918750 +vt 0.898148 0.775000 +vt 0.851852 0.775000 +vt 0.898148 0.712500 +vt 0.935185 0.775000 +vt 0.935185 0.712500 +vt 0.981481 0.775000 +vt 0.898148 0.837500 +vt 0.935185 0.900000 +vt 0.898148 0.900000 +vt 0.935185 0.837500 +vt 0.962963 0.918750 +vt 0.925926 0.900000 +vt 0.962963 0.900000 +vt 0.870370 0.918750 +vt 0.851852 0.900000 +vt 0.870370 0.900000 +vt 0.907407 0.900000 +vt 0.925926 0.918750 +vt 0.898148 0.775000 +vt 0.851852 0.775000 +vt 0.898148 0.712500 +vt 0.935185 0.775000 +vt 0.935185 0.712500 +vt 0.981481 0.775000 +vt 0.898148 0.837500 +vt 0.935185 0.900000 +vt 0.898148 0.900000 +vt 0.935185 0.837500 +vt 0.962963 0.918750 +vt 0.925926 0.900000 +vt 0.962963 0.900000 +vt 0.870370 0.918750 +vt 0.851852 0.900000 +vt 0.870370 0.900000 +vt 0.907407 0.918750 +vt 0.925926 0.918750 +vt 0.907407 0.900000 +vt 0.898148 0.775000 +vt 0.851852 0.775000 +vt 0.898148 0.712500 +vt 0.935185 0.775000 +vt 0.935185 0.712500 +vt 0.981481 0.775000 +vt 0.898148 0.837500 +vt 0.935185 0.900000 +vt 0.898148 0.900000 +vt 0.935185 0.837500 +vt 0.962963 0.918750 +vt 0.925926 0.900000 +vt 0.962963 0.900000 +vt 0.870370 0.918750 +vt 0.851852 0.900000 +vt 0.870370 0.900000 +vt 0.907407 0.918750 +vt 0.925926 0.918750 +vt 0.907407 0.900000 +vt 0.898148 0.775000 +vt 0.851852 0.775000 +vt 0.898148 0.712500 +vt 0.935185 0.775000 +vt 0.935185 0.712500 +vt 0.981481 0.775000 +vt 0.898148 0.837500 +vt 0.935185 0.900000 +vt 0.898148 0.900000 +vt 0.935185 0.837500 +vt 0.962963 0.918750 +vt 0.925926 0.900000 +vt 0.962963 0.900000 +vt 0.870370 0.918750 +vt 0.851852 0.900000 +vt 0.870370 0.900000 +vt 0.907407 0.918750 +vt 0.925926 0.918750 +vt 0.907407 0.900000 +vt 0.898148 0.775000 +vt 0.851852 0.775000 +vt 0.898148 0.712500 +vt 0.935185 0.775000 +vt 0.935185 0.712500 +vt 0.981481 0.775000 +vt 0.898148 0.837500 +vt 0.935185 0.900000 +vt 0.898148 0.900000 +vt 0.935185 0.837500 +vt 0.962963 0.918750 +vt 0.925926 0.900000 +vt 0.962963 0.900000 +vt 0.870370 0.918750 +vt 0.851852 0.900000 +vt 0.870370 0.900000 +vt 0.907407 0.900000 +vt 0.925926 0.918750 +vt 0.898148 0.775000 +vt 0.851852 0.775000 +vt 0.898148 0.712500 +vt 0.935185 0.775000 +vt 0.935185 0.712500 +vt 0.981481 0.775000 +vt 0.898148 0.837500 +vt 0.935185 0.900000 +vt 0.898148 0.900000 +vt 0.935185 0.837500 +vt 0.962963 0.918750 +vt 0.925926 0.900000 +vt 0.962963 0.900000 +vt 0.870370 0.918750 +vt 0.851852 0.900000 +vt 0.870370 0.900000 +vt 0.907407 0.900000 +vt 0.925926 0.918750 +vt 0.898148 0.775000 +vt 0.851852 0.775000 +vt 0.898148 0.712500 +vt 0.935185 0.775000 +vt 0.935185 0.712500 +vt 0.981481 0.775000 +vt 0.898148 0.837500 +vt 0.935185 0.900000 +vt 0.898148 0.900000 +vt 0.935185 0.837500 +vt 0.962963 0.918750 +vt 0.925926 0.900000 +vt 0.962963 0.900000 +vt 0.870370 0.918750 +vt 0.851852 0.900000 +vt 0.870370 0.900000 +vt 0.907407 0.900000 +vt 0.925926 0.918750 +vt 0.777778 0.200000 +vt 0.851852 0.000000 +vt 0.925926 0.300000 +vt 0.222222 0.856250 +vt 0.222222 0.518750 +vt 0.222222 0.725000 +vt 0.222222 0.268750 +vt 0.222222 0.018750 +vt 0.222222 0.225000 +vt 0.222222 0.900000 +vt 0.222222 0.475000 +vt 0.106481 0.493750 +vt 0.041667 0.493750 +vt -0.000000 0.437500 +vt 0.041667 0.293750 +vt 0.148148 0.700000 +vt 0.851852 0.918750 +vt 0.907407 0.918750 +vt 0.851852 0.918750 +vt 0.907407 0.918750 +vt 0.851852 0.918750 +vt 0.907407 0.918750 +vt 0.851852 0.918750 +vt 0.907407 0.918750 +vt 0.851852 0.918750 +vt 0.907407 0.918750 +vt 0.851852 0.918750 +vt 0.907407 0.918750 +vt 0.851852 0.918750 +vt 0.851852 0.918750 +vt 0.851852 0.918750 +vt 0.851852 0.918750 +vt 0.907407 0.918750 +vt 0.851852 0.918750 +vt 0.907407 0.918750 +vt 0.851852 0.918750 +vt 0.907407 0.918750 +vt 0.814815 0.712500 +vt 0.805556 0.775000 +vt 0.805556 0.712500 +vt 0.796296 0.712500 +vt 0.787037 0.775000 +vt 0.787037 0.712500 +vt 0.851852 0.712500 +vt 0.842593 0.775000 +vt 0.842593 0.712500 +vt 0.833333 0.712500 +vt 0.824074 0.775000 +vt 0.824074 0.712500 +vt 0.796296 0.775000 +vt 0.777778 0.775000 +vt 0.777778 0.712500 +vt 0.833333 0.775000 +vt 0.814815 0.775000 +vt 0.833333 0.781250 +vt 0.824074 0.793750 +vt 0.796296 0.781250 +vt 0.805556 0.793750 +vt 0.796296 0.793750 +vt 0.842593 0.793750 +vt 0.833333 0.793750 +vt 0.814815 0.793750 +vt 0.787037 0.793750 +vt 0.787037 0.787500 +vt 0.814815 0.812500 +vt 0.805556 0.812500 +vt 0.787037 0.800000 +vt 0.833333 0.806250 +vt 0.824074 0.812500 +vt 0.796296 0.806250 +vt 0.842593 0.800000 +vt 0.842593 0.787500 +vt 0.851852 0.793750 +vt 0.777778 0.793750 +vt 0.787037 0.812500 +vt 0.777778 0.825000 +vt 0.777778 0.812500 +vt 0.814815 0.825000 +vt 0.805556 0.825000 +vt 0.851852 0.812500 +vt 0.842593 0.825000 +vt 0.842593 0.812500 +vt 0.796296 0.812500 +vt 0.787037 0.825000 +vt 0.833333 0.812500 +vt 0.824074 0.825000 +vt 0.796296 0.825000 +vt 0.833333 0.825000 +vt 0.814815 0.825000 +vt 0.805556 0.837500 +vt 0.805556 0.825000 +vt 0.796296 0.825000 +vt 0.787037 0.837500 +vt 0.787037 0.825000 +vt 0.851852 0.825000 +vt 0.842593 0.837500 +vt 0.842593 0.825000 +vt 0.833333 0.825000 +vt 0.824074 0.837500 +vt 0.824074 0.825000 +vt 0.796296 0.837500 +vt 0.777778 0.837500 +vt 0.777778 0.825000 +vt 0.833333 0.837500 +vt 0.814815 0.837500 +vt 0.833333 0.843750 +vt 0.824074 0.856250 +vt 0.796296 0.843750 +vt 0.805556 0.856250 +vt 0.796296 0.856250 +vt 0.842593 0.856250 +vt 0.833333 0.856250 +vt 0.814815 0.856250 +vt 0.787037 0.856250 +vt 0.787037 0.850000 +vt 0.814815 0.875000 +vt 0.805556 0.875000 +vt 0.796296 0.868750 +vt 0.787037 0.862500 +vt 0.824074 0.875000 +vt 0.833333 0.868750 +vt 0.842593 0.850000 +vt 0.851852 0.856250 +vt 0.842593 0.862500 +vt 0.777778 0.856250 +vt 0.787037 0.875000 +vt 0.777778 0.937500 +vt 0.777778 0.875000 +vt 0.814815 0.937500 +vt 0.805556 0.937500 +vt 0.851852 0.875000 +vt 0.842593 0.937500 +vt 0.842593 0.875000 +vt 0.796296 0.875000 +vt 0.787037 0.937500 +vt 0.833333 0.875000 +vt 0.824074 0.937500 +vt 0.796296 0.937500 +vt 0.833333 0.937500 +vt 0.851852 0.712500 +vt 0.842593 0.775000 +vt 0.842593 0.712500 +vt 0.787037 0.712500 +vt 0.796296 0.775000 +vt 0.787037 0.775000 +vt 0.814815 0.712500 +vt 0.805556 0.775000 +vt 0.805556 0.712500 +vt 0.814815 0.712500 +vt 0.805556 0.775000 +vt 0.805556 0.712500 +vt 0.796296 0.712500 +vt 0.787037 0.775000 +vt 0.787037 0.712500 +vt 0.851852 0.712500 +vt 0.842593 0.775000 +vt 0.842593 0.712500 +vt 0.833333 0.712500 +vt 0.824074 0.775000 +vt 0.824074 0.712500 +vt 0.796296 0.775000 +vt 0.777778 0.775000 +vt 0.777778 0.712500 +vt 0.833333 0.775000 +vt 0.814815 0.775000 +vt 0.833333 0.793750 +vt 0.824074 0.793750 +vt 0.796296 0.793750 +vt 0.796296 0.781250 +vt 0.833333 0.781250 +vt 0.842593 0.793750 +vt 0.814815 0.793750 +vt 0.805556 0.793750 +vt 0.787037 0.793750 +vt 0.787037 0.787500 +vt 0.814815 0.812500 +vt 0.805556 0.812500 +vt 0.787037 0.800000 +vt 0.833333 0.806250 +vt 0.824074 0.812500 +vt 0.796296 0.806250 +vt 0.842593 0.787500 +vt 0.851852 0.793750 +vt 0.842593 0.800000 +vt 0.777778 0.793750 +vt 0.787037 0.812500 +vt 0.777778 0.825000 +vt 0.777778 0.812500 +vt 0.814815 0.825000 +vt 0.805556 0.825000 +vt 0.851852 0.812500 +vt 0.842593 0.825000 +vt 0.842593 0.812500 +vt 0.796296 0.812500 +vt 0.787037 0.825000 +vt 0.833333 0.812500 +vt 0.824074 0.825000 +vt 0.796296 0.825000 +vt 0.833333 0.825000 +vt 0.824074 0.812500 +vt 0.814815 0.825000 +vt 0.814815 0.812500 +vt 0.842593 0.812500 +vt 0.833333 0.825000 +vt 0.833333 0.812500 +vt 0.805556 0.812500 +vt 0.796296 0.825000 +vt 0.796296 0.812500 +vt 0.824074 0.825000 +vt 0.787037 0.825000 +vt 0.787037 0.812500 +vt 0.851852 0.812500 +vt 0.842593 0.825000 +vt 0.805556 0.825000 +vt 0.777778 0.825000 +vt 0.777778 0.812500 +vt 0.787037 0.793750 +vt 0.787037 0.800000 +vt 0.777778 0.793750 +vt 0.787037 0.787500 +vt 0.842593 0.793750 +vt 0.851852 0.793750 +vt 0.842593 0.800000 +vt 0.842593 0.787500 +vt 0.824074 0.793750 +vt 0.814815 0.793750 +vt 0.833333 0.793750 +vt 0.833333 0.806250 +vt 0.805556 0.793750 +vt 0.796296 0.806250 +vt 0.796296 0.793750 +vt 0.796296 0.781250 +vt 0.814815 0.775000 +vt 0.805556 0.775000 +vt 0.824074 0.775000 +vt 0.833333 0.781250 +vt 0.824074 0.712500 +vt 0.814815 0.712500 +vt 0.842593 0.712500 +vt 0.833333 0.775000 +vt 0.833333 0.712500 +vt 0.787037 0.712500 +vt 0.777778 0.775000 +vt 0.777778 0.712500 +vt 0.805556 0.712500 +vt 0.796296 0.775000 +vt 0.796296 0.712500 +vt 0.851852 0.712500 +vt 0.842593 0.775000 +vt 0.787037 0.775000 +vt 0.824074 0.812500 +vt 0.814815 0.825000 +vt 0.814815 0.812500 +vt 0.842593 0.812500 +vt 0.833333 0.825000 +vt 0.833333 0.812500 +vt 0.805556 0.812500 +vt 0.796296 0.825000 +vt 0.796296 0.812500 +vt 0.824074 0.825000 +vt 0.787037 0.825000 +vt 0.787037 0.812500 +vt 0.851852 0.812500 +vt 0.842593 0.825000 +vt 0.805556 0.825000 +vt 0.777778 0.825000 +vt 0.777778 0.812500 +vt 0.787037 0.793750 +vt 0.787037 0.800000 +vt 0.777778 0.793750 +vt 0.787037 0.787500 +vt 0.842593 0.793750 +vt 0.851852 0.793750 +vt 0.842593 0.800000 +vt 0.842593 0.787500 +vt 0.824074 0.793750 +vt 0.814815 0.793750 +vt 0.833333 0.793750 +vt 0.833333 0.806250 +vt 0.805556 0.793750 +vt 0.796296 0.806250 +vt 0.796296 0.793750 +vt 0.796296 0.781250 +vt 0.805556 0.775000 +vt 0.824074 0.775000 +vt 0.814815 0.775000 +vt 0.833333 0.781250 +vt 0.824074 0.712500 +vt 0.814815 0.712500 +vt 0.842593 0.712500 +vt 0.833333 0.775000 +vt 0.833333 0.712500 +vt 0.787037 0.712500 +vt 0.777778 0.775000 +vt 0.777778 0.712500 +vt 0.805556 0.712500 +vt 0.796296 0.775000 +vt 0.796296 0.712500 +vt 0.851852 0.712500 +vt 0.842593 0.775000 +vt 0.787037 0.775000 +vt 0.833333 0.712500 +vt 0.824074 0.775000 +vt 0.824074 0.712500 +vt 0.796296 0.712500 +vt 0.777778 0.775000 +vt 0.777778 0.712500 +vt 0.833333 0.775000 +vt 0.814815 0.775000 +vt 0.833333 0.793750 +vt 0.824074 0.793750 +vt 0.796296 0.793750 +vt 0.796296 0.781250 +vt 0.833333 0.781250 +vt 0.842593 0.793750 +vt 0.814815 0.793750 +vt 0.805556 0.793750 +vt 0.787037 0.787500 +vt 0.787037 0.793750 +vt 0.814815 0.812500 +vt 0.805556 0.812500 +vt 0.787037 0.800000 +vt 0.824074 0.812500 +vt 0.796296 0.806250 +vt 0.842593 0.800000 +vt 0.833333 0.806250 +vt 0.842593 0.787500 +vt 0.851852 0.793750 +vt 0.777778 0.793750 +vt 0.787037 0.812500 +vt 0.777778 0.825000 +vt 0.777778 0.812500 +vt 0.814815 0.825000 +vt 0.805556 0.825000 +vt 0.851852 0.812500 +vt 0.842593 0.825000 +vt 0.842593 0.812500 +vt 0.796296 0.812500 +vt 0.787037 0.825000 +vt 0.833333 0.812500 +vt 0.824074 0.825000 +vt 0.796296 0.825000 +vt 0.833333 0.825000 +vt 0.814815 0.712500 +vt 0.805556 0.775000 +vt 0.805556 0.712500 +vt 0.796296 0.712500 +vt 0.787037 0.775000 +vt 0.787037 0.712500 +vt 0.851852 0.712500 +vt 0.842593 0.775000 +vt 0.842593 0.712500 +vt 0.833333 0.712500 +vt 0.824074 0.775000 +vt 0.824074 0.712500 +vt 0.796296 0.775000 +vt 0.777778 0.775000 +vt 0.777778 0.712500 +vt 0.833333 0.775000 +vt 0.814815 0.775000 +vt 0.833333 0.793750 +vt 0.824074 0.793750 +vt 0.796296 0.793750 +vt 0.796296 0.781250 +vt 0.842593 0.787500 +vt 0.833333 0.781250 +vt 0.814815 0.793750 +vt 0.805556 0.793750 +vt 0.787037 0.787500 +vt 0.787037 0.793750 +vt 0.814815 0.812500 +vt 0.805556 0.812500 +vt 0.787037 0.800000 +vt 0.824074 0.812500 +vt 0.796296 0.806250 +vt 0.842593 0.800000 +vt 0.833333 0.806250 +vt 0.851852 0.793750 +vt 0.842593 0.793750 +vt 0.777778 0.793750 +vt 0.787037 0.812500 +vt 0.777778 0.825000 +vt 0.777778 0.812500 +vt 0.814815 0.825000 +vt 0.805556 0.825000 +vt 0.851852 0.812500 +vt 0.842593 0.825000 +vt 0.842593 0.812500 +vt 0.796296 0.812500 +vt 0.787037 0.825000 +vt 0.833333 0.812500 +vt 0.824074 0.825000 +vt 0.796296 0.825000 +vt 0.833333 0.825000 +vt 0.824074 0.812500 +vt 0.814815 0.825000 +vt 0.814815 0.812500 +vt 0.842593 0.812500 +vt 0.833333 0.825000 +vt 0.833333 0.812500 +vt 0.805556 0.812500 +vt 0.796296 0.825000 +vt 0.796296 0.812500 +vt 0.824074 0.825000 +vt 0.787037 0.825000 +vt 0.787037 0.812500 +vt 0.851852 0.812500 +vt 0.842593 0.825000 +vt 0.805556 0.825000 +vt 0.777778 0.825000 +vt 0.777778 0.812500 +vt 0.787037 0.793750 +vt 0.787037 0.800000 +vt 0.777778 0.793750 +vt 0.787037 0.787500 +vt 0.842593 0.793750 +vt 0.851852 0.793750 +vt 0.842593 0.800000 +vt 0.842593 0.787500 +vt 0.824074 0.793750 +vt 0.814815 0.793750 +vt 0.833333 0.793750 +vt 0.833333 0.806250 +vt 0.796296 0.793750 +vt 0.796296 0.806250 +vt 0.805556 0.793750 +vt 0.796296 0.781250 +vt 0.814815 0.775000 +vt 0.805556 0.775000 +vt 0.833333 0.781250 +vt 0.824074 0.775000 +vt 0.824074 0.712500 +vt 0.814815 0.712500 +vt 0.842593 0.712500 +vt 0.833333 0.775000 +vt 0.833333 0.712500 +vt 0.787037 0.712500 +vt 0.777778 0.775000 +vt 0.777778 0.712500 +vt 0.805556 0.712500 +vt 0.796296 0.775000 +vt 0.796296 0.712500 +vt 0.851852 0.712500 +vt 0.842593 0.775000 +vt 0.787037 0.775000 +vt 0.824074 0.812500 +vt 0.814815 0.825000 +vt 0.814815 0.812500 +vt 0.842593 0.812500 +vt 0.833333 0.825000 +vt 0.833333 0.812500 +vt 0.805556 0.812500 +vt 0.796296 0.825000 +vt 0.796296 0.812500 +vt 0.824074 0.825000 +vt 0.787037 0.825000 +vt 0.787037 0.812500 +vt 0.851852 0.812500 +vt 0.842593 0.825000 +vt 0.805556 0.825000 +vt 0.777778 0.825000 +vt 0.777778 0.812500 +vt 0.787037 0.793750 +vt 0.787037 0.800000 +vt 0.777778 0.793750 +vt 0.787037 0.787500 +vt 0.842593 0.793750 +vt 0.851852 0.793750 +vt 0.842593 0.800000 +vt 0.842593 0.787500 +vt 0.824074 0.793750 +vt 0.814815 0.793750 +vt 0.833333 0.793750 +vt 0.833333 0.806250 +vt 0.796296 0.793750 +vt 0.796296 0.806250 +vt 0.805556 0.793750 +vt 0.805556 0.775000 +vt 0.824074 0.775000 +vt 0.814815 0.775000 +vt 0.833333 0.781250 +vt 0.796296 0.781250 +vt 0.824074 0.712500 +vt 0.814815 0.712500 +vt 0.842593 0.712500 +vt 0.833333 0.775000 +vt 0.833333 0.712500 +vt 0.787037 0.712500 +vt 0.777778 0.775000 +vt 0.777778 0.712500 +vt 0.805556 0.712500 +vt 0.796296 0.775000 +vt 0.796296 0.712500 +vt 0.851852 0.712500 +vt 0.842593 0.775000 +vt 0.787037 0.775000 +vt 0.814815 0.825000 +vt 0.805556 0.837500 +vt 0.805556 0.825000 +vt 0.796296 0.825000 +vt 0.787037 0.837500 +vt 0.787037 0.825000 +vt 0.851852 0.825000 +vt 0.842593 0.837500 +vt 0.842593 0.825000 +vt 0.833333 0.825000 +vt 0.824074 0.837500 +vt 0.824074 0.825000 +vt 0.796296 0.837500 +vt 0.777778 0.837500 +vt 0.777778 0.825000 +vt 0.833333 0.837500 +vt 0.814815 0.837500 +vt 0.833333 0.843750 +vt 0.824074 0.856250 +vt 0.796296 0.843750 +vt 0.805556 0.856250 +vt 0.796296 0.856250 +vt 0.842593 0.856250 +vt 0.833333 0.856250 +vt 0.814815 0.856250 +vt 0.787037 0.856250 +vt 0.787037 0.850000 +vt 0.814815 0.875000 +vt 0.805556 0.875000 +vt 0.796296 0.868750 +vt 0.787037 0.862500 +vt 0.824074 0.875000 +vt 0.833333 0.868750 +vt 0.842593 0.850000 +vt 0.851852 0.856250 +vt 0.842593 0.862500 +vt 0.777778 0.856250 +vt 0.787037 0.875000 +vt 0.777778 0.937500 +vt 0.777778 0.875000 +vt 0.814815 0.937500 +vt 0.805556 0.937500 +vt 0.851852 0.875000 +vt 0.842593 0.937500 +vt 0.842593 0.875000 +vt 0.796296 0.875000 +vt 0.787037 0.937500 +vt 0.833333 0.875000 +vt 0.824074 0.937500 +vt 0.796296 0.937500 +vt 0.833333 0.937500 +vt 0.814815 0.825000 +vt 0.805556 0.837500 +vt 0.805556 0.825000 +vt 0.796296 0.825000 +vt 0.787037 0.837500 +vt 0.787037 0.825000 +vt 0.851852 0.825000 +vt 0.842593 0.837500 +vt 0.842593 0.825000 +vt 0.833333 0.825000 +vt 0.824074 0.837500 +vt 0.824074 0.825000 +vt 0.796296 0.837500 +vt 0.777778 0.837500 +vt 0.777778 0.825000 +vt 0.833333 0.837500 +vt 0.814815 0.837500 +vt 0.833333 0.843750 +vt 0.824074 0.856250 +vt 0.796296 0.856250 +vt 0.796296 0.843750 +vt 0.842593 0.856250 +vt 0.833333 0.856250 +vt 0.814815 0.856250 +vt 0.805556 0.856250 +vt 0.787037 0.856250 +vt 0.787037 0.850000 +vt 0.814815 0.875000 +vt 0.805556 0.875000 +vt 0.787037 0.862500 +vt 0.824074 0.875000 +vt 0.796296 0.868750 +vt 0.842593 0.862500 +vt 0.833333 0.868750 +vt 0.842593 0.850000 +vt 0.851852 0.856250 +vt 0.777778 0.856250 +vt 0.787037 0.875000 +vt 0.777778 0.937500 +vt 0.777778 0.875000 +vt 0.814815 0.937500 +vt 0.805556 0.937500 +vt 0.851852 0.875000 +vt 0.842593 0.937500 +vt 0.842593 0.875000 +vt 0.796296 0.875000 +vt 0.787037 0.937500 +vt 0.833333 0.875000 +vt 0.824074 0.937500 +vt 0.796296 0.937500 +vt 0.833333 0.937500 +vt 0.814815 0.825000 +vt 0.805556 0.837500 +vt 0.805556 0.825000 +vt 0.796296 0.825000 +vt 0.787037 0.837500 +vt 0.787037 0.825000 +vt 0.851852 0.825000 +vt 0.842593 0.837500 +vt 0.842593 0.825000 +vt 0.833333 0.825000 +vt 0.824074 0.837500 +vt 0.824074 0.825000 +vt 0.796296 0.837500 +vt 0.777778 0.825000 +vt 0.777778 0.837500 +vt 0.833333 0.837500 +vt 0.814815 0.837500 +vt 0.833333 0.843750 +vt 0.824074 0.856250 +vt 0.796296 0.856250 +vt 0.796296 0.843750 +vt 0.842593 0.856250 +vt 0.833333 0.856250 +vt 0.814815 0.856250 +vt 0.805556 0.856250 +vt 0.787037 0.856250 +vt 0.787037 0.850000 +vt 0.814815 0.875000 +vt 0.805556 0.875000 +vt 0.787037 0.862500 +vt 0.824074 0.875000 +vt 0.796296 0.868750 +vt 0.842593 0.862500 +vt 0.833333 0.868750 +vt 0.842593 0.850000 +vt 0.851852 0.856250 +vt 0.777778 0.856250 +vt 0.787037 0.875000 +vt 0.777778 0.937500 +vt 0.777778 0.875000 +vt 0.814815 0.937500 +vt 0.805556 0.937500 +vt 0.851852 0.875000 +vt 0.842593 0.937500 +vt 0.842593 0.875000 +vt 0.796296 0.875000 +vt 0.787037 0.937500 +vt 0.833333 0.875000 +vt 0.824074 0.937500 +vt 0.796296 0.937500 +vt 0.833333 0.937500 +vt 0.814815 0.825000 +vt 0.805556 0.837500 +vt 0.805556 0.825000 +vt 0.796296 0.825000 +vt 0.787037 0.837500 +vt 0.787037 0.825000 +vt 0.851852 0.825000 +vt 0.842593 0.837500 +vt 0.842593 0.825000 +vt 0.833333 0.825000 +vt 0.824074 0.837500 +vt 0.824074 0.825000 +vt 0.796296 0.837500 +vt 0.777778 0.837500 +vt 0.777778 0.825000 +vt 0.833333 0.837500 +vt 0.814815 0.837500 +vt 0.833333 0.843750 +vt 0.824074 0.856250 +vt 0.796296 0.843750 +vt 0.805556 0.856250 +vt 0.796296 0.856250 +vt 0.842593 0.856250 +vt 0.833333 0.856250 +vt 0.814815 0.856250 +vt 0.787037 0.856250 +vt 0.787037 0.850000 +vt 0.814815 0.875000 +vt 0.805556 0.875000 +vt 0.787037 0.862500 +vt 0.833333 0.868750 +vt 0.824074 0.875000 +vt 0.796296 0.868750 +vt 0.842593 0.850000 +vt 0.851852 0.856250 +vt 0.842593 0.862500 +vt 0.777778 0.856250 +vt 0.787037 0.875000 +vt 0.777778 0.937500 +vt 0.777778 0.875000 +vt 0.814815 0.937500 +vt 0.805556 0.937500 +vt 0.851852 0.875000 +vt 0.842593 0.937500 +vt 0.842593 0.875000 +vt 0.796296 0.875000 +vt 0.787037 0.937500 +vt 0.833333 0.875000 +vt 0.824074 0.937500 +vt 0.796296 0.937500 +vt 0.833333 0.937500 +vt 0.814815 0.825000 +vt 0.805556 0.837500 +vt 0.805556 0.825000 +vt 0.796296 0.825000 +vt 0.787037 0.837500 +vt 0.787037 0.825000 +vt 0.851852 0.825000 +vt 0.842593 0.837500 +vt 0.842593 0.825000 +vt 0.833333 0.825000 +vt 0.824074 0.837500 +vt 0.824074 0.825000 +vt 0.796296 0.837500 +vt 0.777778 0.837500 +vt 0.777778 0.825000 +vt 0.833333 0.837500 +vt 0.814815 0.837500 +vt 0.833333 0.843750 +vt 0.824074 0.856250 +vt 0.796296 0.856250 +vt 0.796296 0.843750 +vt 0.842593 0.856250 +vt 0.833333 0.856250 +vt 0.814815 0.856250 +vt 0.805556 0.856250 +vt 0.787037 0.856250 +vt 0.787037 0.850000 +vt 0.814815 0.875000 +vt 0.805556 0.875000 +vt 0.787037 0.862500 +vt 0.833333 0.868750 +vt 0.824074 0.875000 +vt 0.796296 0.868750 +vt 0.842593 0.850000 +vt 0.851852 0.856250 +vt 0.842593 0.862500 +vt 0.777778 0.856250 +vt 0.787037 0.875000 +vt 0.777778 0.937500 +vt 0.777778 0.875000 +vt 0.814815 0.937500 +vt 0.805556 0.937500 +vt 0.851852 0.875000 +vt 0.842593 0.937500 +vt 0.842593 0.875000 +vt 0.796296 0.875000 +vt 0.787037 0.937500 +vt 0.833333 0.875000 +vt 0.824074 0.937500 +vt 0.796296 0.937500 +vt 0.833333 0.937500 +vt 0.814815 0.825000 +vt 0.805556 0.837500 +vt 0.805556 0.825000 +vt 0.796296 0.825000 +vt 0.787037 0.837500 +vt 0.787037 0.825000 +vt 0.851852 0.825000 +vt 0.842593 0.837500 +vt 0.842593 0.825000 +vt 0.833333 0.825000 +vt 0.824074 0.837500 +vt 0.824074 0.825000 +vt 0.796296 0.837500 +vt 0.777778 0.825000 +vt 0.777778 0.837500 +vt 0.833333 0.837500 +vt 0.814815 0.837500 +vt 0.833333 0.856250 +vt 0.824074 0.856250 +vt 0.796296 0.856250 +vt 0.796296 0.843750 +vt 0.833333 0.843750 +vt 0.842593 0.856250 +vt 0.814815 0.856250 +vt 0.805556 0.856250 +vt 0.787037 0.856250 +vt 0.787037 0.850000 +vt 0.814815 0.875000 +vt 0.805556 0.875000 +vt 0.787037 0.862500 +vt 0.833333 0.868750 +vt 0.824074 0.875000 +vt 0.796296 0.868750 +vt 0.842593 0.850000 +vt 0.851852 0.856250 +vt 0.842593 0.862500 +vt 0.777778 0.856250 +vt 0.787037 0.875000 +vt 0.777778 0.937500 +vt 0.777778 0.875000 +vt 0.814815 0.937500 +vt 0.805556 0.937500 +vt 0.851852 0.875000 +vt 0.842593 0.937500 +vt 0.842593 0.875000 +vt 0.796296 0.875000 +vt 0.787037 0.937500 +vt 0.833333 0.875000 +vt 0.824074 0.937500 +vt 0.796296 0.937500 +vt 0.833333 0.937500 +vt 0.814815 0.825000 +vt 0.805556 0.837500 +vt 0.805556 0.825000 +vt 0.796296 0.825000 +vt 0.787037 0.837500 +vt 0.787037 0.825000 +vt 0.842593 0.825000 +vt 0.851852 0.837500 +vt 0.842593 0.837500 +vt 0.833333 0.825000 +vt 0.824074 0.837500 +vt 0.824074 0.825000 +vt 0.796296 0.837500 +vt 0.777778 0.825000 +vt 0.777778 0.837500 +vt 0.833333 0.837500 +vt 0.814815 0.837500 +vt 0.833333 0.843750 +vt 0.824074 0.856250 +vt 0.796296 0.843750 +vt 0.805556 0.856250 +vt 0.796296 0.856250 +vt 0.842593 0.856250 +vt 0.833333 0.856250 +vt 0.814815 0.856250 +vt 0.787037 0.856250 +vt 0.787037 0.850000 +vt 0.814815 0.875000 +vt 0.805556 0.875000 +vt 0.787037 0.862500 +vt 0.833333 0.868750 +vt 0.824074 0.875000 +vt 0.796296 0.868750 +vt 0.842593 0.850000 +vt 0.851852 0.856250 +vt 0.842593 0.862500 +vt 0.777778 0.856250 +vt 0.787037 0.875000 +vt 0.777778 0.937500 +vt 0.777778 0.875000 +vt 0.814815 0.937500 +vt 0.805556 0.937500 +vt 0.851852 0.875000 +vt 0.842593 0.937500 +vt 0.842593 0.875000 +vt 0.796296 0.875000 +vt 0.787037 0.937500 +vt 0.833333 0.875000 +vt 0.824074 0.937500 +vt 0.796296 0.937500 +vt 0.833333 0.937500 +vt 0.851852 0.775000 +vt 0.851852 0.825000 +vt 0.851852 0.837500 +vt 0.851852 0.937500 +vt 0.851852 0.775000 +vt 0.851852 0.775000 +vt 0.851852 0.825000 +vt 0.851852 0.825000 +vt 0.851852 0.775000 +vt 0.851852 0.825000 +vt 0.851852 0.775000 +vt 0.851852 0.825000 +vt 0.851852 0.775000 +vt 0.851852 0.825000 +vt 0.851852 0.825000 +vt 0.851852 0.775000 +vt 0.851852 0.825000 +vt 0.851852 0.775000 +vt 0.851852 0.837500 +vt 0.851852 0.937500 +vt 0.851852 0.837500 +vt 0.851852 0.937500 +vt 0.851852 0.837500 +vt 0.851852 0.937500 +vt 0.851852 0.837500 +vt 0.851852 0.937500 +vt 0.851852 0.837500 +vt 0.851852 0.937500 +vt 0.851852 0.837500 +vt 0.851852 0.937500 +vt 0.851852 0.825000 +vt 0.851852 0.937500 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.6794 0.1448 -0.7194 +vn 0.7071 0.0000 -0.7071 +vn 0.7263 -0.1363 0.6737 +vn 0.7071 0.0000 0.7071 +vn -0.7263 -0.1363 0.6737 +vn -0.7071 0.0000 0.7071 +vn -0.6794 0.1448 -0.7194 +vn -0.7071 0.0000 -0.7071 +vn 0.9987 0.0196 -0.0473 +vn -0.0000 -0.7071 0.7071 +vn -0.9987 0.0196 -0.0473 +vn 0.0000 0.1866 -0.9824 +vn -0.6630 0.5294 -0.5294 +vn 0.6630 0.5294 -0.5294 +vn 0.9955 0.0671 -0.0671 +vn -0.7574 -0.4617 0.4617 +vn -0.9955 0.0671 -0.0671 +vn 0.0000 0.7071 -0.7071 +vn 0.7574 -0.4617 0.4617 +vn -0.0000 0.9824 -0.1866 +vn 0.6794 0.7194 -0.1448 +vn 0.7263 -0.6737 0.1363 +vn -0.9987 0.0473 -0.0196 +vn -0.6794 0.7194 -0.1448 +vn 0.9987 0.0473 -0.0196 +vn -0.7263 -0.6737 0.1363 +vn -0.6794 0.1448 0.7194 +vn -0.7263 -0.1363 -0.6737 +vn 0.7263 -0.1363 -0.6737 +vn 0.6794 0.1448 0.7194 +vn -0.9987 0.0196 0.0473 +vn 0.0000 -0.7071 -0.7071 +vn 0.9987 0.0196 0.0473 +vn 0.0000 0.1866 0.9824 +vn 0.6630 0.5294 0.5294 +vn -0.6630 0.5294 0.5294 +vn -0.9955 0.0671 0.0671 +vn 0.7574 -0.4617 -0.4617 +vn 0.9955 0.0671 0.0671 +vn 0.0000 0.7071 0.7071 +vn -0.7574 -0.4617 -0.4617 +vn 0.0000 0.9824 0.1866 +vn -0.6794 0.7194 0.1448 +vn -0.9987 0.0473 0.0196 +vn -0.7263 -0.6737 -0.1363 +vn 0.6794 0.7194 0.1448 +vn 0.9987 0.0473 0.0196 +vn 0.7263 -0.6737 -0.1363 +vn -0.1363 0.7263 0.6737 +vn 0.0196 -0.9987 -0.0473 +vn -0.1363 -0.7263 0.6737 +vn 0.1448 -0.6794 -0.7194 +vn -0.6794 -0.1448 -0.7194 +vn -0.7263 0.1363 0.6737 +vn 0.7263 0.1363 0.6737 +vn 0.6794 -0.1448 -0.7194 +vn -0.9987 -0.0196 -0.0473 +vn 0.9987 -0.0196 -0.0473 +vn -0.0000 -0.1866 -0.9824 +vn 0.9955 -0.0671 -0.0671 +vn 0.6630 -0.5294 -0.5294 +vn -0.9955 -0.0671 -0.0671 +vn 0.7574 0.4617 0.4617 +vn -0.6630 -0.5294 -0.5294 +vn -0.7574 0.4617 0.4617 +vn -0.0000 -0.9824 -0.1866 +vn -0.6794 -0.7194 -0.1448 +vn -0.7263 0.6737 0.1363 +vn 0.9987 -0.0473 -0.0196 +vn 0.6794 -0.7194 -0.1448 +vn -0.9987 -0.0473 -0.0196 +vn 0.7263 0.6737 0.1363 +vn 0.1448 0.6794 -0.7194 +vn 0.0196 0.9987 -0.0473 +vn 0.1866 0.0000 -0.9824 +vn 0.0671 0.9955 -0.0671 +vn 0.5294 0.6630 -0.5294 +vn 0.0671 -0.9955 -0.0671 +vn -0.4617 0.7574 0.4617 +vn 0.5294 -0.6630 -0.5294 +vn -0.4617 -0.7574 0.4617 +vn 0.9824 -0.0000 -0.1866 +vn 0.7194 -0.6794 -0.1448 +vn -0.6737 -0.7263 0.1363 +vn 0.7194 0.6794 -0.1448 +vn 0.0473 -0.9987 -0.0196 +vn -0.6737 0.7263 0.1363 +vn 0.0473 0.9987 -0.0196 +vn -0.1448 0.6794 -0.7194 +vn 0.1363 0.7263 0.6737 +vn 0.1363 -0.7263 0.6737 +vn -0.1448 -0.6794 -0.7194 +vn -0.0196 0.9987 -0.0473 +vn -0.0196 -0.9987 -0.0473 +vn -0.1866 -0.0000 -0.9824 +vn -0.0671 -0.9955 -0.0671 +vn -0.5294 -0.6630 -0.5294 +vn -0.0671 0.9955 -0.0671 +vn -0.5294 0.6630 -0.5294 +vn 0.4617 0.7574 0.4617 +vn -0.9824 -0.0000 -0.1866 +vn -0.7194 0.6794 -0.1448 +vn 0.6737 0.7263 0.1363 +vn -0.7194 -0.6794 -0.1448 +vn -0.0473 0.9987 -0.0196 +vn 0.6737 -0.7263 0.1363 +vn -0.0473 -0.9987 -0.0196 +vn 0.4617 -0.7574 0.4617 +vn 0.6794 -0.1448 0.7194 +vn 0.7263 0.1363 -0.6737 +vn -0.7263 0.1363 -0.6737 +vn -0.6794 -0.1448 0.7194 +vn 0.9987 -0.0196 0.0473 +vn -0.9987 -0.0196 0.0473 +vn 0.0000 -0.1866 0.9824 +vn -0.6630 -0.5294 0.5294 +vn 0.9955 -0.0671 0.0671 +vn -0.7574 0.4617 -0.4617 +vn -0.9955 -0.0671 0.0671 +vn 0.6630 -0.5294 0.5294 +vn 0.7574 0.4617 -0.4617 +vn 0.0000 -0.9824 0.1866 +vn 0.6794 -0.7194 0.1448 +vn 0.7263 0.6737 -0.1363 +vn -0.6794 -0.7194 0.1448 +vn 0.9987 -0.0473 0.0196 +vn -0.7263 0.6737 -0.1363 +vn -0.9987 -0.0473 0.0196 +vn 0.1448 0.6794 0.7194 +vn -0.1363 0.7263 -0.6737 +vn -0.1363 -0.7263 -0.6737 +vn 0.1448 -0.6794 0.7194 +vn 0.0196 0.9987 0.0473 +vn 0.0196 -0.9987 0.0473 +vn 0.1866 0.0000 0.9824 +vn 0.5294 -0.6630 0.5294 +vn 0.5294 0.6630 0.5294 +vn 0.0671 0.9955 0.0671 +vn -0.4617 -0.7574 -0.4617 +vn 0.0671 -0.9955 0.0671 +vn -0.4617 0.7574 -0.4617 +vn 0.9824 0.0000 0.1866 +vn 0.7194 0.6794 0.1448 +vn -0.6737 0.7263 -0.1363 +vn 0.0473 -0.9987 0.0196 +vn 0.7194 -0.6794 0.1448 +vn 0.0473 0.9987 0.0196 +vn -0.6737 -0.7263 -0.1363 +vn -0.1448 -0.6794 0.7194 +vn 0.1363 -0.7263 -0.6737 +vn 0.1363 0.7263 -0.6737 +vn -0.1448 0.6794 0.7194 +vn -0.0196 -0.9987 0.0473 +vn -0.0196 0.9987 0.0473 +vn -0.1866 -0.0000 0.9824 +vn -0.0671 0.9955 0.0671 +vn -0.5294 0.6630 0.5294 +vn -0.0671 -0.9955 0.0671 +vn 0.4617 0.7574 -0.4617 +vn -0.5294 -0.6630 0.5294 +vn 0.4617 -0.7574 -0.4617 +vn -0.9824 -0.0000 0.1866 +vn -0.7194 -0.6794 0.1448 +vn 0.6737 -0.7263 -0.1363 +vn -0.0473 0.9987 0.0196 +vn -0.7194 0.6794 0.1448 +vn -0.0473 -0.9987 0.0196 +vn 0.6737 0.7263 -0.1363 +s off +f 2/1/1 3/2/1 1/3/1 +f 4/4/2 7/5/2 3/2/2 +f 8/6/3 5/7/3 7/5/3 +f 7/5/4 1/8/4 3/2/4 +f 4/4/5 6/9/5 8/6/5 +f 22/10/1 13/11/1 14/12/1 +f 23/13/3 16/14/3 15/15/3 +f 19/16/5 12/17/5 11/18/5 +f 18/19/4 9/20/4 10/21/4 +f 9/22/6 22/10/6 14/12/6 +f 24/23/7 10/21/7 16/14/7 +f 12/17/8 23/13/8 15/15/8 +f 21/24/9 11/18/9 13/11/9 +f 11/18/2 6/25/2 2/26/2 +f 14/27/2 2/26/2 1/28/2 +f 11/18/2 2/26/2 13/29/2 +f 15/30/2 5/31/2 6/25/2 +f 10/32/2 1/28/2 5/31/2 +f 10/32/2 5/31/2 16/33/2 +f 12/17/2 15/30/2 6/25/2 +f 9/34/2 14/27/2 1/28/2 +f 22/10/10 27/35/10 21/24/10 +f 29/36/10 20/37/10 19/16/10 +f 21/24/10 29/38/10 19/16/10 +f 28/39/10 24/23/10 23/13/10 +f 32/40/10 17/41/10 18/19/10 +f 24/23/10 32/42/10 18/19/10 +f 30/43/10 22/10/10 17/44/10 +f 20/37/10 28/45/10 23/13/10 +f 27/46/9 40/47/9 29/48/9 +f 36/49/10 38/50/10 40/47/10 +f 31/51/8 38/52/8 28/53/8 +f 26/54/7 36/55/7 32/56/7 +f 28/53/3 37/57/3 26/54/3 +f 25/58/1 33/59/1 27/46/1 +f 30/60/6 34/61/6 25/58/6 +f 29/48/5 39/62/5 31/51/5 +f 32/56/4 35/63/4 30/64/4 +f 118/65/10 119/66/10 117/67/10 +f 121/68/2 120/69/2 122/70/2 +f 119/71/9 120/72/9 117/73/9 +f 118/65/3 122/74/3 119/71/3 +f 117/67/4 121/68/4 118/65/4 +f 130/75/2 124/76/2 126/77/2 +f 129/78/6 126/79/6 125/80/6 +f 123/81/10 129/78/10 125/80/10 +f 128/82/8 123/81/8 124/76/8 +f 664/83/10 665/84/10 663/85/10 +f 667/86/2 666/87/2 668/88/2 +f 665/89/9 666/90/9 663/91/9 +f 664/83/3 668/92/3 665/89/3 +f 663/85/4 667/86/4 664/83/4 +f 676/93/2 670/94/2 672/95/2 +f 675/96/6 672/97/6 671/98/6 +f 669/99/10 675/96/10 671/98/10 +f 674/100/8 669/99/8 670/94/8 +f 678/101/10 679/102/10 677/103/10 +f 681/104/2 680/105/2 682/106/2 +f 679/107/9 680/108/9 677/109/9 +f 678/101/3 682/110/3 679/107/3 +f 677/103/4 681/104/4 678/101/4 +f 690/111/2 684/112/2 686/113/2 +f 689/114/6 686/115/6 685/116/6 +f 683/117/10 689/114/10 685/116/10 +f 688/118/8 683/117/8 684/112/8 +f 692/119/10 693/120/10 691/121/10 +f 695/122/2 694/123/2 696/124/2 +f 693/125/7 694/126/7 691/127/7 +f 692/119/1 696/128/1 693/125/1 +f 691/121/5 695/122/5 692/119/5 +f 704/129/2 698/130/2 700/131/2 +f 703/132/8 700/133/8 699/134/8 +f 697/135/10 703/132/10 699/134/10 +f 702/136/6 697/135/6 698/130/6 +f 706/137/10 707/138/10 705/139/10 +f 709/140/2 708/141/2 710/142/2 +f 707/143/7 708/144/7 705/145/7 +f 706/137/1 710/146/1 707/143/1 +f 705/139/5 709/140/5 706/137/5 +f 718/147/2 712/148/2 714/149/2 +f 717/150/8 714/151/8 713/152/8 +f 711/153/10 717/150/10 713/152/10 +f 716/154/6 711/153/6 712/148/6 +f 720/155/10 721/156/10 719/157/10 +f 723/158/2 722/159/2 724/160/2 +f 721/161/7 722/162/7 719/163/7 +f 720/155/1 724/164/1 721/161/1 +f 719/157/5 723/158/5 720/155/5 +f 732/165/2 726/166/2 728/167/2 +f 731/168/8 728/169/8 727/170/8 +f 725/171/10 731/168/10 727/170/10 +f 730/172/6 725/171/6 726/166/6 +f 734/173/10 735/174/10 733/175/10 +f 737/176/2 736/177/2 738/178/2 +f 735/179/8 736/180/8 733/181/8 +f 734/173/4 738/182/4 735/179/4 +f 733/175/1 737/176/1 734/173/1 +f 746/183/2 740/184/2 742/185/2 +f 745/186/9 742/187/9 741/188/9 +f 741/188/10 743/189/10 745/186/10 +f 744/190/7 739/191/7 740/184/7 +f 748/192/10 749/193/10 747/194/10 +f 751/195/2 750/196/2 752/197/2 +f 749/198/8 750/199/8 747/200/8 +f 748/192/4 752/201/4 749/198/4 +f 747/194/1 751/195/1 748/192/1 +f 760/202/2 754/203/2 756/204/2 +f 759/205/9 756/206/9 755/207/9 +f 755/207/10 757/208/10 759/205/10 +f 758/209/7 753/210/7 754/203/7 +f 762/211/10 763/212/10 761/213/10 +f 765/214/2 764/215/2 766/216/2 +f 763/217/8 764/218/8 761/219/8 +f 762/211/4 766/220/4 763/217/4 +f 761/213/1 765/214/1 762/211/1 +f 774/221/2 768/222/2 770/223/2 +f 773/224/9 770/225/9 769/226/9 +f 769/226/10 771/227/10 773/224/10 +f 772/228/7 767/229/7 768/222/7 +f 776/230/10 777/231/10 775/232/10 +f 779/233/2 778/234/2 780/235/2 +f 777/236/6 778/237/6 775/238/6 +f 776/230/5 780/239/5 777/236/5 +f 775/232/3 779/233/3 776/230/3 +f 788/240/2 782/241/2 784/242/2 +f 787/243/7 784/244/7 783/245/7 +f 781/246/10 787/243/10 783/245/10 +f 786/247/9 781/246/9 782/241/9 +f 790/248/10 791/249/10 789/250/10 +f 793/251/2 792/252/2 794/253/2 +f 791/254/6 792/255/6 789/256/6 +f 790/248/5 794/257/5 791/254/5 +f 789/250/3 793/251/3 790/248/3 +f 802/258/2 796/259/2 798/260/2 +f 801/261/7 798/262/7 797/263/7 +f 795/264/10 801/261/10 797/263/10 +f 800/265/9 795/264/9 796/259/9 +f 804/266/10 805/267/10 803/268/10 +f 807/269/2 806/270/2 808/271/2 +f 805/272/6 806/273/6 803/274/6 +f 804/266/5 808/275/5 805/272/5 +f 803/268/3 807/269/3 804/266/3 +f 816/276/2 810/277/2 812/278/2 +f 815/279/7 812/280/7 811/281/7 +f 809/282/10 815/279/10 811/281/10 +f 814/283/9 809/282/9 810/277/9 +f 2/1/1 4/4/1 3/2/1 +f 4/4/2 8/6/2 7/5/2 +f 8/6/3 6/284/3 5/7/3 +f 7/5/4 5/285/4 1/8/4 +f 4/4/5 2/286/5 6/9/5 +f 22/10/1 21/24/1 13/11/1 +f 23/13/3 24/23/3 16/14/3 +f 19/16/5 20/37/5 12/17/5 +f 18/19/4 17/41/4 9/20/4 +f 9/22/6 17/44/6 22/10/6 +f 24/23/7 18/19/7 10/21/7 +f 12/17/8 20/37/8 23/13/8 +f 21/24/9 19/16/9 11/18/9 +f 11/18/2 12/17/2 6/25/2 +f 14/27/2 13/29/2 2/26/2 +f 15/30/2 16/33/2 5/31/2 +f 10/32/2 9/34/2 1/28/2 +f 22/10/10 25/287/10 27/35/10 +f 29/36/10 31/288/10 20/37/10 +f 21/24/10 27/289/10 29/38/10 +f 28/39/10 26/290/10 24/23/10 +f 32/40/10 30/291/10 17/41/10 +f 24/23/10 26/292/10 32/42/10 +f 30/43/10 25/293/10 22/10/10 +f 20/37/10 31/294/10 28/45/10 +f 27/46/9 33/59/9 40/47/9 +f 40/47/10 33/295/10 34/296/10 +f 34/296/10 35/297/10 36/49/10 +f 36/49/10 37/298/10 38/50/10 +f 38/50/10 39/62/10 40/47/10 +f 40/47/10 34/296/10 36/49/10 +f 31/51/8 39/62/8 38/52/8 +f 26/54/7 37/57/7 36/55/7 +f 28/53/3 38/52/3 37/57/3 +f 25/58/1 34/61/1 33/59/1 +f 30/60/6 35/299/6 34/61/6 +f 29/48/5 40/47/5 39/62/5 +f 32/56/4 36/55/4 35/63/4 +f 119/71/9 122/74/9 120/72/9 +f 118/65/3 121/68/3 122/74/3 +f 117/67/4 120/69/4 121/68/4 +f 130/75/2 128/82/2 124/76/2 +f 129/78/6 130/300/6 126/79/6 +f 123/81/10 127/301/10 129/78/10 +f 128/82/8 127/301/8 123/81/8 +f 665/89/9 668/92/9 666/90/9 +f 664/83/3 667/86/3 668/92/3 +f 663/85/4 666/87/4 667/86/4 +f 676/93/2 674/100/2 670/94/2 +f 675/96/6 676/302/6 672/97/6 +f 669/99/10 673/303/10 675/96/10 +f 674/100/8 673/303/8 669/99/8 +f 679/107/9 682/110/9 680/108/9 +f 678/101/3 681/104/3 682/110/3 +f 677/103/4 680/105/4 681/104/4 +f 690/111/2 688/118/2 684/112/2 +f 689/114/6 690/304/6 686/115/6 +f 683/117/10 687/305/10 689/114/10 +f 688/118/8 687/305/8 683/117/8 +f 693/125/7 696/128/7 694/126/7 +f 692/119/1 695/122/1 696/128/1 +f 691/121/5 694/123/5 695/122/5 +f 704/129/2 702/136/2 698/130/2 +f 703/132/8 704/306/8 700/133/8 +f 697/135/10 701/307/10 703/132/10 +f 702/136/6 701/307/6 697/135/6 +f 707/143/7 710/146/7 708/144/7 +f 706/137/1 709/140/1 710/146/1 +f 705/139/5 708/141/5 709/140/5 +f 718/147/2 716/154/2 712/148/2 +f 717/150/8 718/308/8 714/151/8 +f 711/153/10 715/309/10 717/150/10 +f 716/154/6 715/309/6 711/153/6 +f 721/161/7 724/164/7 722/162/7 +f 720/155/1 723/158/1 724/164/1 +f 719/157/5 722/159/5 723/158/5 +f 732/165/2 730/172/2 726/166/2 +f 731/168/8 732/310/8 728/169/8 +f 725/171/10 729/311/10 731/168/10 +f 730/172/6 729/311/6 725/171/6 +f 735/179/8 738/182/8 736/180/8 +f 734/173/4 737/176/4 738/182/4 +f 733/175/1 736/177/1 737/176/1 +f 746/183/2 744/190/2 740/184/2 +f 745/186/9 746/312/9 742/187/9 +f 741/188/10 739/191/10 743/189/10 +f 744/190/7 743/189/7 739/191/7 +f 749/198/8 752/201/8 750/199/8 +f 748/192/4 751/195/4 752/201/4 +f 747/194/1 750/196/1 751/195/1 +f 760/202/2 758/209/2 754/203/2 +f 759/205/9 760/313/9 756/206/9 +f 755/207/10 753/210/10 757/208/10 +f 758/209/7 757/208/7 753/210/7 +f 763/217/8 766/220/8 764/218/8 +f 762/211/4 765/214/4 766/220/4 +f 761/213/1 764/215/1 765/214/1 +f 774/221/2 772/228/2 768/222/2 +f 773/224/9 774/314/9 770/225/9 +f 769/226/10 767/229/10 771/227/10 +f 772/228/7 771/227/7 767/229/7 +f 777/236/6 780/239/6 778/237/6 +f 776/230/5 779/233/5 780/239/5 +f 775/232/3 778/234/3 779/233/3 +f 788/240/2 786/247/2 782/241/2 +f 787/243/7 788/315/7 784/244/7 +f 781/246/10 785/316/10 787/243/10 +f 786/247/9 785/316/9 781/246/9 +f 791/254/6 794/257/6 792/255/6 +f 790/248/5 793/251/5 794/257/5 +f 789/250/3 792/252/3 793/251/3 +f 802/258/2 800/265/2 796/259/2 +f 801/261/7 802/317/7 798/262/7 +f 795/264/10 799/318/10 801/261/10 +f 800/265/9 799/318/9 795/264/9 +f 805/272/6 808/275/6 806/273/6 +f 804/266/5 807/269/5 808/275/5 +f 803/268/3 806/270/3 807/269/3 +f 816/276/2 814/283/2 810/277/2 +f 815/279/7 816/319/7 812/280/7 +f 809/282/10 813/320/10 815/279/10 +f 814/283/9 813/320/9 809/282/9 +s 1 +f 41/321/2 56/322/11 48/323/12 +f 47/324/3 54/325/13 46/326/14 +f 45/327/10 52/328/15 44/329/16 +f 43/330/1 50/331/17 42/332/18 +f 48/323/12 55/333/19 47/324/3 +f 46/326/14 53/334/20 45/335/10 +f 44/329/16 51/336/21 43/330/1 +f 42/332/18 49/337/22 41/321/2 +f 51/338/21 58/339/23 50/331/17 +f 55/340/19 63/341/24 62/342/25 +f 51/338/21 60/343/26 59/344/27 +f 50/331/17 57/345/28 49/337/22 +f 56/322/11 57/345/28 63/341/24 +f 55/340/19 61/346/29 54/347/13 +f 63/341/24 64/348/30 70/349/31 +f 62/342/25 68/350/32 61/346/29 +f 58/339/23 66/351/33 65/352/34 +f 63/341/24 69/353/35 62/342/25 +f 59/344/27 67/354/36 66/351/33 +f 58/339/23 64/348/30 57/345/28 +f 52/355/15 53/356/20 60/343/26 +f 60/343/26 53/356/20 67/354/36 +f 54/347/13 61/346/29 53/357/20 +f 61/346/29 68/350/32 53/357/20 +f 68/358/32 78/359/4 53/360/20 +f 70/349/31 72/361/5 77/362/8 +f 53/363/20 74/364/6 67/365/36 +f 69/366/35 76/367/7 68/358/32 +f 66/368/33 71/369/9 65/352/34 +f 70/349/31 75/370/3 69/366/35 +f 67/365/36 73/371/1 66/368/33 +f 65/352/34 72/361/5 64/348/30 +f 79/372/10 94/373/37 86/374/16 +f 85/375/1 92/376/38 84/377/18 +f 83/378/2 90/379/39 82/380/12 +f 81/381/3 88/382/40 80/383/14 +f 86/374/16 93/384/41 85/375/1 +f 84/377/18 91/385/42 83/386/2 +f 82/380/12 89/387/43 81/381/3 +f 80/383/14 87/388/44 79/372/10 +f 89/389/43 96/390/45 88/382/40 +f 93/391/41 101/392/46 100/393/47 +f 89/389/43 98/394/48 97/395/49 +f 88/382/40 95/396/50 87/388/44 +f 94/373/37 95/396/50 101/392/46 +f 93/391/41 99/397/51 92/398/38 +f 101/392/46 102/399/52 108/400/53 +f 99/397/51 107/401/54 106/402/55 +f 97/395/49 103/403/56 96/390/45 +f 100/393/47 108/400/53 107/401/54 +f 98/394/48 104/404/57 97/395/49 +f 96/390/45 102/399/52 95/396/50 +f 90/405/39 91/406/42 98/394/48 +f 98/394/48 91/406/42 105/407/58 +f 92/398/38 99/397/51 91/408/42 +f 99/397/51 106/402/55 91/408/42 +f 106/409/55 116/410/4 91/411/42 +f 108/400/53 110/412/5 115/413/9 +f 91/414/42 112/415/7 105/416/58 +f 107/417/54 114/418/6 106/409/55 +f 104/419/57 109/420/8 103/403/56 +f 108/400/53 113/421/1 107/417/54 +f 105/416/58 111/422/3 104/419/57 +f 103/403/56 110/412/5 102/399/52 +f 166/423/10 159/424/59 167/425/50 +f 165/426/20 156/427/60 157/428/61 +f 170/429/2 155/430/62 163/431/42 +f 171/432/2 186/433/63 178/434/18 +f 177/435/1 184/436/64 176/437/16 +f 175/438/10 182/439/65 174/440/14 +f 173/441/3 180/442/66 172/443/12 +f 178/434/18 185/444/67 177/435/1 +f 176/437/16 183/445/50 175/446/10 +f 174/440/14 181/447/68 173/441/3 +f 172/443/12 179/448/69 171/432/2 +f 180/442/66 189/449/70 188/450/71 +f 186/433/63 192/451/72 185/452/67 +f 181/453/68 190/454/73 189/449/70 +f 180/442/66 187/455/42 179/448/69 +f 186/433/63 187/455/42 193/456/74 +f 185/452/67 191/457/75 184/458/64 +f 193/456/74 194/459/76 200/460/77 +f 192/451/72 198/461/78 191/457/75 +f 188/450/71 196/462/79 195/463/80 +f 193/456/74 199/464/81 192/451/72 +f 190/454/73 196/462/79 189/449/70 +f 188/450/71 194/459/76 187/455/42 +f 182/465/65 183/466/50 190/454/73 +f 190/454/73 183/466/50 197/467/82 +f 184/458/64 191/457/75 183/468/50 +f 191/457/75 198/461/78 183/468/50 +f 198/469/78 208/470/5 183/471/50 +f 200/460/77 202/472/4 207/473/6 +f 183/474/50 204/475/8 197/476/82 +f 199/477/81 206/478/9 198/469/78 +f 196/479/79 201/480/7 195/463/80 +f 200/460/77 205/481/1 199/477/81 +f 197/476/82 203/482/3 196/479/79 +f 195/463/80 202/472/4 194/459/76 +f 222/483/80 215/484/4 223/485/76 +f 220/486/82 214/487/3 221/488/79 +f 217/489/77 212/490/1 218/491/81 +f 221/488/79 216/492/7 222/483/80 +f 218/491/81 211/493/9 219/494/78 +f 234/495/50 213/496/8 220/486/82 +f 217/489/77 215/484/4 210/497/6 +f 219/494/78 209/498/5 234/499/50 +f 226/500/75 219/501/78 234/502/50 +f 233/503/64 226/500/75 234/502/50 +f 227/504/73 234/505/50 220/506/82 +f 235/507/65 234/505/50 227/504/73 +f 229/508/71 223/485/76 230/509/42 +f 228/510/70 220/506/82 221/511/79 +f 224/512/74 218/513/81 225/514/72 +f 229/508/71 221/511/79 222/483/80 +f 225/514/72 219/501/78 226/500/75 +f 230/509/42 217/489/77 224/512/74 +f 232/515/67 226/500/75 233/503/64 +f 238/516/69 224/512/74 231/517/63 +f 237/518/66 230/509/42 238/516/69 +f 236/519/68 227/504/73 228/510/70 +f 231/517/63 225/514/72 232/515/67 +f 237/518/66 228/510/70 229/508/71 +f 245/520/12 238/516/69 246/521/2 +f 243/522/14 236/523/68 244/524/3 +f 241/525/16 234/526/50 242/527/10 +f 239/528/18 232/529/67 240/530/1 +f 244/524/3 237/518/66 245/520/12 +f 242/531/10 235/532/65 243/522/14 +f 240/530/1 233/533/64 241/525/16 +f 246/521/2 231/517/63 239/528/18 +f 260/534/34 253/535/5 261/536/30 +f 258/537/36 252/538/1 259/539/33 +f 255/540/31 250/541/3 256/542/35 +f 259/539/33 254/543/9 260/534/34 +f 256/542/35 249/544/7 257/545/32 +f 272/546/20 251/547/6 258/537/36 +f 255/540/31 253/535/5 248/548/8 +f 257/545/32 247/549/4 272/550/20 +f 264/551/29 257/552/32 272/553/20 +f 271/554/13 264/551/29 272/553/20 +f 265/555/26 272/556/20 258/557/36 +f 273/558/15 272/556/20 265/555/26 +f 267/559/23 261/536/30 268/560/28 +f 266/561/27 258/557/36 259/562/33 +f 262/563/24 256/564/35 263/565/25 +f 267/559/23 259/562/33 260/534/34 +f 263/565/25 257/552/32 264/551/29 +f 268/560/28 255/540/31 262/563/24 +f 270/566/19 264/551/29 271/554/13 +f 269/567/11 268/560/28 262/563/24 +f 275/568/17 268/560/28 276/569/22 +f 274/570/21 265/555/26 266/561/27 +f 270/566/19 262/563/24 263/565/25 +f 274/570/21 267/559/23 275/568/17 +f 283/571/18 276/569/22 284/572/2 +f 281/573/16 274/574/21 282/575/1 +f 279/576/14 272/577/20 280/578/10 +f 277/579/12 270/580/19 278/581/3 +f 282/575/1 275/568/17 283/571/18 +f 280/582/10 273/583/15 281/573/16 +f 278/581/3 271/584/13 279/576/14 +f 284/572/2 269/567/11 277/579/12 +f 168/585/5 161/586/83 169/587/28 +f 163/431/42 156/427/60 164/588/4 +f 165/426/20 158/589/16 166/590/10 +f 167/425/50 160/591/84 168/585/5 +f 169/587/28 162/592/85 170/429/2 +f 161/586/83 152/593/86 153/594/87 +f 155/430/62 149/595/88 156/596/60 +f 160/597/84 151/598/89 152/593/86 +f 161/586/83 154/599/12 162/592/85 +f 155/430/62 154/599/12 148/600/90 +f 157/601/61 149/595/88 150/602/91 +f 148/600/90 147/603/92 141/604/93 +f 149/595/88 143/605/94 150/602/91 +f 152/593/86 146/606/95 153/594/87 +f 149/595/88 141/604/93 142/607/96 +f 152/593/86 144/608/97 145/609/98 +f 153/594/87 147/603/92 154/599/12 +f 159/610/59 158/611/16 151/598/89 +f 151/598/89 158/611/16 144/608/97 +f 157/601/61 150/602/91 158/612/16 +f 150/602/91 143/605/94 158/612/16 +f 143/613/94 133/614/1 158/615/16 +f 141/604/93 139/616/3 134/617/7 +f 158/618/16 137/619/9 144/620/97 +f 142/621/96 135/622/6 143/613/94 +f 145/623/98 140/624/8 146/606/95 +f 141/604/93 136/625/4 142/621/96 +f 144/620/97 138/626/5 145/623/98 +f 146/606/95 139/616/3 147/603/92 +f 132/627/2 298/628/99 290/629/28 +f 289/630/5 296/631/100 288/632/50 +f 287/633/10 294/634/101 286/635/20 +f 285/636/4 292/637/102 131/638/42 +f 290/629/28 297/639/103 289/630/5 +f 288/632/50 295/640/14 287/641/10 +f 286/635/20 293/642/104 285/636/4 +f 131/638/42 291/643/105 132/627/2 +f 292/637/102 301/644/106 300/645/107 +f 298/628/99 304/646/108 297/647/103 +f 294/648/101 301/644/106 293/649/104 +f 291/643/105 300/645/107 299/650/18 +f 298/628/99 299/650/18 305/651/109 +f 296/652/100 304/646/108 303/653/110 +f 305/651/109 306/654/111 312/655/112 +f 304/646/108 310/656/113 303/653/110 +f 301/644/106 307/657/114 300/645/107 +f 304/646/108 312/655/112 311/658/115 +f 301/644/106 309/659/116 308/660/117 +f 300/645/107 306/654/111 299/650/18 +f 294/648/101 295/661/14 302/662/118 +f 302/662/118 295/661/14 309/659/116 +f 296/652/100 303/653/110 295/663/14 +f 303/653/110 310/656/113 295/663/14 +f 310/664/113 320/665/3 295/666/14 +f 312/655/112 314/667/1 319/668/9 +f 295/669/14 316/670/7 309/671/116 +f 311/672/115 318/673/8 310/664/113 +f 308/674/117 313/675/6 307/657/114 +f 312/655/112 317/676/5 311/672/115 +f 309/671/116 315/677/4 308/674/117 +f 307/657/114 314/667/1 306/654/111 +f 334/678/114 327/679/1 335/680/111 +f 332/681/116 326/682/4 333/683/117 +f 329/684/112 324/685/5 330/686/115 +f 333/683/117 328/687/6 334/678/114 +f 330/686/115 323/688/8 331/689/113 +f 346/690/14 325/691/7 332/681/116 +f 329/684/112 327/679/1 322/692/9 +f 331/689/113 321/693/3 346/694/14 +f 338/695/110 331/696/113 346/697/14 +f 345/698/100 338/695/110 346/697/14 +f 339/699/118 346/700/14 332/701/116 +f 347/702/101 346/700/14 339/699/118 +f 341/703/107 335/680/111 342/704/18 +f 340/705/106 332/701/116 333/706/117 +f 337/707/108 329/684/112 330/708/115 +f 340/705/106 334/678/114 341/703/107 +f 337/707/108 331/696/113 338/695/110 +f 336/709/109 335/680/111 329/684/112 +f 344/710/103 338/695/110 345/698/100 +f 350/711/105 336/709/109 343/712/99 +f 350/711/105 341/703/107 342/704/18 +f 348/713/104 339/699/118 340/705/106 +f 343/712/99 337/707/108 344/710/103 +f 349/714/102 340/705/106 341/703/107 +f 357/715/42 350/711/105 358/716/2 +f 355/717/20 348/718/104 356/719/4 +f 353/720/50 346/721/14 354/722/10 +f 351/723/28 344/724/103 352/725/5 +f 356/719/4 349/714/102 357/715/42 +f 354/726/10 347/727/101 355/717/20 +f 352/725/5 345/728/100 353/720/50 +f 351/723/28 350/711/105 343/712/99 +f 372/729/95 365/730/3 373/731/92 +f 370/732/97 364/733/5 371/734/98 +f 367/735/93 362/736/4 368/737/96 +f 371/734/98 366/738/8 372/729/95 +f 368/737/96 361/739/6 369/740/94 +f 384/741/16 363/742/9 370/732/97 +f 367/735/93 365/730/3 360/743/7 +f 369/740/94 359/744/1 384/745/16 +f 376/746/91 369/747/94 384/748/16 +f 383/749/61 376/746/91 384/748/16 +f 377/750/89 384/751/16 370/752/97 +f 385/753/59 384/751/16 377/750/89 +f 379/754/87 373/731/92 380/755/12 +f 378/756/86 370/752/97 371/757/98 +f 375/758/88 367/735/93 368/759/96 +f 378/756/86 372/729/95 379/754/87 +f 375/758/88 369/747/94 376/746/91 +f 374/760/90 373/731/92 367/735/93 +f 383/749/61 375/758/88 376/746/91 +f 381/761/62 380/755/12 374/760/90 +f 387/762/83 380/755/12 388/763/85 +f 386/764/84 377/750/89 378/756/86 +f 381/761/62 375/758/88 382/765/60 +f 387/762/83 378/756/86 379/754/87 +f 395/766/28 388/763/85 396/767/2 +f 393/768/50 386/769/84 394/770/5 +f 391/771/20 384/772/16 392/773/10 +f 389/774/42 382/775/60 390/776/4 +f 394/770/5 387/762/83 395/766/28 +f 392/777/10 385/778/59 393/768/50 +f 390/776/4 383/779/61 391/771/20 +f 396/767/2 381/761/62 389/774/42 +f 397/780/10 412/781/37 404/782/16 +f 403/783/1 410/784/38 402/785/18 +f 401/786/2 408/787/39 400/788/12 +f 399/789/3 406/790/40 398/791/14 +f 404/782/16 411/792/41 403/783/1 +f 402/785/18 409/793/42 401/794/2 +f 400/788/12 407/795/43 399/789/3 +f 398/791/14 405/796/44 397/780/10 +f 407/797/43 414/798/45 406/790/40 +f 411/799/41 419/800/46 418/801/47 +f 407/797/43 416/802/48 415/803/49 +f 406/790/40 413/804/50 405/796/44 +f 412/781/37 413/804/50 419/800/46 +f 411/799/41 417/805/51 410/806/38 +f 419/800/46 420/807/52 426/808/53 +f 417/805/51 425/809/54 424/810/55 +f 415/803/49 421/811/56 414/798/45 +f 418/801/47 426/808/53 425/809/54 +f 416/802/48 422/812/57 415/803/49 +f 414/798/45 420/807/52 413/804/50 +f 408/813/39 409/814/42 416/802/48 +f 416/802/48 409/814/42 423/815/58 +f 410/806/38 417/805/51 409/816/42 +f 417/805/51 424/810/55 409/816/42 +f 424/817/55 434/818/4 409/819/42 +f 426/808/53 428/820/5 433/821/9 +f 409/822/42 430/823/7 423/824/58 +f 425/825/54 432/826/6 424/817/55 +f 422/827/57 427/828/8 421/811/56 +f 426/808/53 431/829/1 425/825/54 +f 423/824/58 429/830/3 422/827/57 +f 421/811/56 428/820/5 420/807/52 +f 435/831/10 450/832/119 442/833/14 +f 441/834/3 448/835/120 440/836/12 +f 439/837/2 446/838/121 438/839/18 +f 437/840/1 444/841/122 436/842/16 +f 442/833/14 449/843/123 441/834/3 +f 440/836/12 447/844/28 439/845/2 +f 438/839/18 445/846/124 437/840/1 +f 436/842/16 443/847/125 435/831/10 +f 445/848/124 452/849/126 444/841/122 +f 450/832/119 456/850/127 449/851/123 +f 445/848/124 454/852/128 453/853/129 +f 444/841/122 451/854/20 443/847/125 +f 443/847/125 457/855/130 450/832/119 +f 449/851/123 455/856/131 448/857/120 +f 457/855/130 458/858/132 464/859/133 +f 456/850/127 462/860/134 455/856/131 +f 453/853/129 459/861/135 452/849/126 +f 456/850/127 464/859/133 463/862/136 +f 453/853/129 461/863/137 460/864/138 +f 452/849/126 458/858/132 451/854/20 +f 446/865/121 447/866/28 454/852/128 +f 454/852/128 447/866/28 461/863/137 +f 448/857/120 455/856/131 447/867/28 +f 455/856/131 462/860/134 447/867/28 +f 462/868/134 472/869/5 447/870/28 +f 464/859/133 466/871/4 471/872/7 +f 447/873/28 468/874/9 461/875/137 +f 463/876/136 470/877/8 462/868/134 +f 460/878/138 465/879/6 459/861/135 +f 464/859/133 469/880/3 463/876/136 +f 461/875/137 467/881/1 460/878/138 +f 459/861/135 466/871/4 458/858/132 +f 473/882/10 488/883/119 480/884/14 +f 479/885/3 486/886/120 478/887/12 +f 477/888/2 484/889/121 476/890/18 +f 475/891/1 482/892/122 474/893/16 +f 480/884/14 487/894/123 479/885/3 +f 477/895/2 486/886/120 485/896/28 +f 476/890/18 483/897/124 475/891/1 +f 474/893/16 481/898/125 473/882/10 +f 483/899/124 490/900/126 482/892/122 +f 488/883/119 494/901/127 487/902/123 +f 483/899/124 492/903/128 491/904/129 +f 481/898/125 490/900/126 489/905/20 +f 488/883/119 489/905/20 495/906/130 +f 487/902/123 493/907/131 486/908/120 +f 495/906/130 496/909/132 502/910/133 +f 494/901/127 500/911/134 493/907/131 +f 491/904/129 497/912/135 490/900/126 +f 494/901/127 502/910/133 501/913/136 +f 491/904/129 499/914/137 498/915/138 +f 490/900/126 496/909/132 489/905/20 +f 484/916/121 485/917/28 492/903/128 +f 492/903/128 485/917/28 499/914/137 +f 486/908/120 493/907/131 485/918/28 +f 493/907/131 500/911/134 485/918/28 +f 500/919/134 510/920/5 485/921/28 +f 502/910/133 504/922/4 509/923/7 +f 485/924/28 506/925/9 499/926/137 +f 501/927/136 508/928/8 500/919/134 +f 498/929/138 503/930/6 497/912/135 +f 502/910/133 507/931/3 501/927/136 +f 498/929/138 506/925/9 505/932/1 +f 497/912/135 504/922/4 496/909/132 +f 511/933/10 526/934/139 518/935/50 +f 517/936/5 524/937/140 516/938/28 +f 515/939/2 522/940/141 514/941/42 +f 513/942/4 520/943/142 512/944/20 +f 518/935/50 525/945/143 517/936/5 +f 516/938/28 523/946/18 515/947/2 +f 514/941/42 521/948/144 513/942/4 +f 512/944/20 519/949/145 511/933/10 +f 521/950/144 528/951/146 520/943/142 +f 525/952/143 533/953/147 532/954/148 +f 521/950/144 530/955/149 529/956/150 +f 519/949/145 528/951/146 527/957/14 +f 519/949/145 533/953/147 526/934/139 +f 525/952/143 531/958/151 524/959/140 +f 533/953/147 534/960/152 540/961/153 +f 532/954/148 538/962/154 531/958/151 +f 528/951/146 536/963/155 535/964/156 +f 533/953/147 539/965/157 532/954/148 +f 530/955/149 536/963/155 529/956/150 +f 528/951/146 534/960/152 527/957/14 +f 522/966/141 523/967/18 530/955/149 +f 530/955/149 523/967/18 537/968/158 +f 524/959/140 531/958/151 523/969/18 +f 531/958/151 538/962/154 523/969/18 +f 538/970/154 548/971/1 523/972/18 +f 540/961/153 542/973/3 547/974/8 +f 523/975/18 544/976/6 537/977/158 +f 539/978/157 546/979/9 538/970/154 +f 536/980/155 541/981/7 535/964/156 +f 540/961/153 545/982/5 539/978/157 +f 537/977/158 543/983/4 536/980/155 +f 535/964/156 542/973/3 534/960/152 +f 549/984/10 564/985/139 556/986/50 +f 555/987/5 562/988/140 554/989/28 +f 553/990/2 560/991/141 552/992/42 +f 551/993/4 558/994/142 550/995/20 +f 556/986/50 563/996/143 555/987/5 +f 554/989/28 561/997/18 553/998/2 +f 552/992/42 559/999/144 551/993/4 +f 550/995/20 557/1000/145 549/984/10 +f 559/1001/144 566/1002/146 558/994/142 +f 564/985/139 570/1003/148 563/1004/143 +f 559/1001/144 568/1005/149 567/1006/150 +f 557/1000/145 566/1002/146 565/1007/14 +f 557/1000/145 571/1008/147 564/985/139 +f 563/1004/143 569/1009/151 562/1010/140 +f 571/1008/147 572/1011/152 578/1012/153 +f 570/1003/148 576/1013/154 569/1009/151 +f 566/1002/146 574/1014/155 573/1015/156 +f 571/1008/147 577/1016/157 570/1003/148 +f 568/1005/149 574/1014/155 567/1006/150 +f 566/1002/146 572/1011/152 565/1007/14 +f 560/1017/141 561/1018/18 568/1005/149 +f 568/1005/149 561/1018/18 575/1019/158 +f 562/1010/140 569/1009/151 561/1020/18 +f 569/1009/151 576/1013/154 561/1020/18 +f 576/1021/154 586/1022/1 561/1023/18 +f 578/1012/153 580/1024/3 585/1025/8 +f 561/1026/18 582/1027/6 575/1028/158 +f 577/1029/157 584/1030/9 576/1021/154 +f 574/1031/155 579/1032/7 573/1015/156 +f 578/1012/153 583/1033/5 577/1029/157 +f 575/1028/158 581/1034/4 574/1031/155 +f 573/1015/156 580/1024/3 572/1011/152 +f 587/1035/10 602/1036/159 594/1037/20 +f 593/1038/4 600/1039/160 592/1040/42 +f 591/1041/2 598/1042/161 590/1043/28 +f 589/1044/5 596/1045/162 588/1046/50 +f 594/1037/20 601/1047/163 593/1038/4 +f 591/1048/2 600/1039/160 599/1049/12 +f 590/1043/28 597/1050/164 589/1044/5 +f 588/1046/50 595/1051/165 587/1035/10 +f 596/1045/162 605/1052/166 604/1053/167 +f 602/1036/159 608/1054/168 601/1055/163 +f 597/1056/164 606/1057/169 605/1052/166 +f 596/1045/162 603/1058/16 595/1051/165 +f 595/1051/165 609/1059/170 602/1036/159 +f 601/1055/163 607/1060/171 600/1061/160 +f 609/1059/170 610/1062/172 616/1063/173 +f 608/1054/168 614/1064/174 607/1060/171 +f 604/1053/167 612/1065/175 611/1066/176 +f 609/1059/170 615/1067/177 608/1054/168 +f 606/1057/169 612/1065/175 605/1052/166 +f 604/1053/167 610/1062/172 603/1058/16 +f 598/1068/161 599/1069/12 606/1057/169 +f 606/1057/169 599/1069/12 613/1070/178 +f 600/1061/160 607/1060/171 599/1071/12 +f 607/1060/171 614/1064/174 599/1071/12 +f 614/1072/174 624/1073/3 599/1074/12 +f 616/1063/173 618/1075/1 623/1076/6 +f 599/1077/12 620/1078/8 613/1079/178 +f 615/1080/177 622/1081/7 614/1072/174 +f 612/1082/175 617/1083/9 611/1066/176 +f 616/1063/173 621/1084/4 615/1080/177 +f 613/1079/178 619/1085/5 612/1082/175 +f 611/1066/176 618/1075/1 610/1062/172 +f 625/1086/10 640/1087/159 632/1088/20 +f 631/1089/4 638/1090/160 630/1091/42 +f 628/1092/28 637/1093/12 636/1094/161 +f 627/1095/5 634/1096/162 626/1097/50 +f 632/1088/20 639/1098/163 631/1089/4 +f 629/1099/2 638/1090/160 637/1100/12 +f 627/1095/5 636/1094/161 635/1101/164 +f 626/1097/50 633/1102/165 625/1086/10 +f 635/1103/164 642/1104/167 634/1096/162 +f 639/1105/163 647/1106/170 646/1107/168 +f 635/1103/164 644/1108/169 643/1109/166 +f 633/1102/165 642/1104/167 641/1110/16 +f 633/1102/165 647/1106/170 640/1087/159 +f 639/1105/163 645/1111/171 638/1112/160 +f 647/1106/170 648/1113/172 654/1114/173 +f 646/1107/168 652/1115/174 645/1111/171 +f 642/1104/167 650/1116/175 649/1117/176 +f 647/1106/170 653/1118/177 646/1107/168 +f 644/1108/169 650/1116/175 643/1109/166 +f 642/1104/167 648/1113/172 641/1110/16 +f 636/1119/161 637/1120/12 644/1108/169 +f 644/1108/169 637/1120/12 651/1121/178 +f 638/1112/160 645/1111/171 637/1122/12 +f 645/1111/171 652/1115/174 637/1122/12 +f 652/1123/174 662/1124/3 637/1125/12 +f 654/1114/173 656/1126/1 661/1127/6 +f 637/1128/12 658/1129/8 651/1130/178 +f 653/1131/177 660/1132/7 652/1123/174 +f 650/1133/175 655/1134/9 649/1117/176 +f 654/1114/173 659/1135/4 653/1131/177 +f 651/1130/178 657/1136/5 650/1133/175 +f 649/1117/176 656/1126/1 648/1113/172 +f 41/321/2 49/337/22 56/322/11 +f 47/324/3 55/333/19 54/325/13 +f 45/327/10 53/1137/20 52/328/15 +f 43/330/1 51/336/21 50/331/17 +f 48/323/12 56/322/11 55/333/19 +f 46/326/14 54/325/13 53/334/20 +f 44/329/16 52/328/15 51/336/21 +f 42/332/18 50/331/17 49/337/22 +f 51/338/21 59/344/27 58/339/23 +f 55/340/19 56/322/11 63/341/24 +f 51/338/21 52/355/15 60/343/26 +f 50/331/17 58/339/23 57/345/28 +f 56/322/11 49/337/22 57/345/28 +f 55/340/19 62/342/25 61/346/29 +f 63/341/24 57/345/28 64/348/30 +f 62/342/25 69/353/35 68/350/32 +f 58/339/23 59/344/27 66/351/33 +f 63/341/24 70/349/31 69/353/35 +f 59/344/27 60/343/26 67/354/36 +f 58/339/23 65/352/34 64/348/30 +f 68/358/32 76/367/7 78/359/4 +f 70/349/31 64/348/30 72/361/5 +f 53/363/20 78/1138/4 74/364/6 +f 69/366/35 75/370/3 76/367/7 +f 66/368/33 73/371/1 71/369/9 +f 70/349/31 77/362/8 75/370/3 +f 67/365/36 74/364/6 73/371/1 +f 65/352/34 71/369/9 72/361/5 +f 79/372/10 87/388/44 94/373/37 +f 85/375/1 93/384/41 92/376/38 +f 83/378/2 91/1139/42 90/379/39 +f 81/381/3 89/387/43 88/382/40 +f 86/374/16 94/373/37 93/384/41 +f 84/377/18 92/376/38 91/385/42 +f 82/380/12 90/379/39 89/387/43 +f 80/383/14 88/382/40 87/388/44 +f 89/389/43 97/395/49 96/390/45 +f 93/391/41 94/373/37 101/392/46 +f 89/389/43 90/405/39 98/394/48 +f 88/382/40 96/390/45 95/396/50 +f 94/373/37 87/388/44 95/396/50 +f 93/391/41 100/393/47 99/397/51 +f 101/392/46 95/396/50 102/399/52 +f 99/397/51 100/393/47 107/401/54 +f 97/395/49 104/404/57 103/403/56 +f 100/393/47 101/392/46 108/400/53 +f 98/394/48 105/407/58 104/404/57 +f 96/390/45 103/403/56 102/399/52 +f 106/409/55 114/418/6 116/410/4 +f 108/400/53 102/399/52 110/412/5 +f 91/414/42 116/1140/4 112/415/7 +f 107/417/54 113/421/1 114/418/6 +f 104/419/57 111/422/3 109/420/8 +f 108/400/53 115/413/9 113/421/1 +f 105/416/58 112/415/7 111/422/3 +f 103/403/56 109/420/8 110/412/5 +f 166/423/10 158/1141/16 159/424/59 +f 165/426/20 164/588/4 156/427/60 +f 170/429/2 162/592/85 155/430/62 +f 171/432/2 179/448/69 186/433/63 +f 177/435/1 185/444/67 184/436/64 +f 175/438/10 183/1142/50 182/439/65 +f 173/441/3 181/447/68 180/442/66 +f 178/434/18 186/433/63 185/444/67 +f 176/437/16 184/436/64 183/445/50 +f 174/440/14 182/439/65 181/447/68 +f 172/443/12 180/442/66 179/448/69 +f 180/442/66 181/453/68 189/449/70 +f 186/433/63 193/456/74 192/451/72 +f 181/453/68 182/465/65 190/454/73 +f 180/442/66 188/450/71 187/455/42 +f 186/433/63 179/448/69 187/455/42 +f 185/452/67 192/451/72 191/457/75 +f 193/456/74 187/455/42 194/459/76 +f 192/451/72 199/464/81 198/461/78 +f 188/450/71 189/449/70 196/462/79 +f 193/456/74 200/460/77 199/464/81 +f 190/454/73 197/467/82 196/462/79 +f 188/450/71 195/463/80 194/459/76 +f 198/469/78 206/478/9 208/470/5 +f 200/460/77 194/459/76 202/472/4 +f 183/474/50 208/1143/5 204/475/8 +f 199/477/81 205/481/1 206/478/9 +f 196/479/79 203/482/3 201/480/7 +f 200/460/77 207/473/6 205/481/1 +f 197/476/82 204/475/8 203/482/3 +f 195/463/80 201/480/7 202/472/4 +f 222/483/80 216/492/7 215/484/4 +f 220/486/82 213/496/8 214/487/3 +f 217/489/77 210/497/6 212/490/1 +f 221/488/79 214/487/3 216/492/7 +f 218/491/81 212/490/1 211/493/9 +f 234/495/50 209/1144/5 213/496/8 +f 217/489/77 223/485/76 215/484/4 +f 219/494/78 211/493/9 209/498/5 +f 229/508/71 222/483/80 223/485/76 +f 228/510/70 227/504/73 220/506/82 +f 224/512/74 217/489/77 218/513/81 +f 229/508/71 228/510/70 221/511/79 +f 225/514/72 218/513/81 219/501/78 +f 230/509/42 223/485/76 217/489/77 +f 232/515/67 225/514/72 226/500/75 +f 238/516/69 230/509/42 224/512/74 +f 237/518/66 229/508/71 230/509/42 +f 236/519/68 235/507/65 227/504/73 +f 231/517/63 224/512/74 225/514/72 +f 237/518/66 236/519/68 228/510/70 +f 245/520/12 237/518/66 238/516/69 +f 243/522/14 235/532/65 236/523/68 +f 241/525/16 233/533/64 234/526/50 +f 239/528/18 231/517/63 232/529/67 +f 244/524/3 236/523/68 237/518/66 +f 242/531/10 234/1145/50 235/532/65 +f 240/530/1 232/529/67 233/533/64 +f 246/521/2 238/516/69 231/517/63 +f 260/534/34 254/543/9 253/535/5 +f 258/537/36 251/547/6 252/538/1 +f 255/540/31 248/548/8 250/541/3 +f 259/539/33 252/538/1 254/543/9 +f 256/542/35 250/541/3 249/544/7 +f 272/546/20 247/1146/4 251/547/6 +f 255/540/31 261/536/30 253/535/5 +f 257/545/32 249/544/7 247/549/4 +f 267/559/23 260/534/34 261/536/30 +f 266/561/27 265/555/26 258/557/36 +f 262/563/24 255/540/31 256/564/35 +f 267/559/23 266/561/27 259/562/33 +f 263/565/25 256/564/35 257/552/32 +f 268/560/28 261/536/30 255/540/31 +f 270/566/19 263/565/25 264/551/29 +f 269/567/11 276/569/22 268/560/28 +f 275/568/17 267/559/23 268/560/28 +f 274/570/21 273/558/15 265/555/26 +f 270/566/19 269/567/11 262/563/24 +f 274/570/21 266/561/27 267/559/23 +f 283/571/18 275/568/17 276/569/22 +f 281/573/16 273/583/15 274/574/21 +f 279/576/14 271/584/13 272/577/20 +f 277/579/12 269/567/11 270/580/19 +f 282/575/1 274/574/21 275/568/17 +f 280/582/10 272/1147/20 273/583/15 +f 278/581/3 270/580/19 271/584/13 +f 284/572/2 276/569/22 269/567/11 +f 168/585/5 160/591/84 161/586/83 +f 163/431/42 155/430/62 156/427/60 +f 165/426/20 157/428/61 158/589/16 +f 167/425/50 159/424/59 160/591/84 +f 169/587/28 161/586/83 162/592/85 +f 161/586/83 160/597/84 152/593/86 +f 155/430/62 148/600/90 149/595/88 +f 160/597/84 159/610/59 151/598/89 +f 161/586/83 153/594/87 154/599/12 +f 155/430/62 162/592/85 154/599/12 +f 157/601/61 156/596/60 149/595/88 +f 148/600/90 154/599/12 147/603/92 +f 149/595/88 142/607/96 143/605/94 +f 152/593/86 145/609/98 146/606/95 +f 149/595/88 148/600/90 141/604/93 +f 152/593/86 151/598/89 144/608/97 +f 153/594/87 146/606/95 147/603/92 +f 143/613/94 135/622/6 133/614/1 +f 141/604/93 147/603/92 139/616/3 +f 158/618/16 133/1148/1 137/619/9 +f 142/621/96 136/625/4 135/622/6 +f 145/623/98 138/626/5 140/624/8 +f 141/604/93 134/617/7 136/625/4 +f 144/620/97 137/619/9 138/626/5 +f 146/606/95 140/624/8 139/616/3 +f 132/627/2 291/643/105 298/628/99 +f 289/630/5 297/639/103 296/631/100 +f 287/633/10 295/1149/14 294/634/101 +f 285/636/4 293/642/104 292/637/102 +f 290/629/28 298/628/99 297/639/103 +f 288/632/50 296/631/100 295/640/14 +f 286/635/20 294/634/101 293/642/104 +f 131/638/42 292/637/102 291/643/105 +f 292/637/102 293/649/104 301/644/106 +f 298/628/99 305/651/109 304/646/108 +f 294/648/101 302/662/118 301/644/106 +f 291/643/105 292/637/102 300/645/107 +f 298/628/99 291/643/105 299/650/18 +f 296/652/100 297/647/103 304/646/108 +f 305/651/109 299/650/18 306/654/111 +f 304/646/108 311/658/115 310/656/113 +f 301/644/106 308/660/117 307/657/114 +f 304/646/108 305/651/109 312/655/112 +f 301/644/106 302/662/118 309/659/116 +f 300/645/107 307/657/114 306/654/111 +f 310/664/113 318/673/8 320/665/3 +f 312/655/112 306/654/111 314/667/1 +f 295/669/14 320/1150/3 316/670/7 +f 311/672/115 317/676/5 318/673/8 +f 308/674/117 315/677/4 313/675/6 +f 312/655/112 319/668/9 317/676/5 +f 309/671/116 316/670/7 315/677/4 +f 307/657/114 313/675/6 314/667/1 +f 334/678/114 328/687/6 327/679/1 +f 332/681/116 325/691/7 326/682/4 +f 329/684/112 322/692/9 324/685/5 +f 333/683/117 326/682/4 328/687/6 +f 330/686/115 324/685/5 323/688/8 +f 346/690/14 321/1151/3 325/691/7 +f 329/684/112 335/680/111 327/679/1 +f 331/689/113 323/688/8 321/693/3 +f 341/703/107 334/678/114 335/680/111 +f 340/705/106 339/699/118 332/701/116 +f 337/707/108 336/709/109 329/684/112 +f 340/705/106 333/706/117 334/678/114 +f 337/707/108 330/708/115 331/696/113 +f 336/709/109 342/704/18 335/680/111 +f 344/710/103 337/707/108 338/695/110 +f 350/711/105 342/704/18 336/709/109 +f 350/711/105 349/714/102 341/703/107 +f 348/713/104 347/702/101 339/699/118 +f 343/712/99 336/709/109 337/707/108 +f 349/714/102 348/713/104 340/705/106 +f 357/715/42 349/714/102 350/711/105 +f 355/717/20 347/727/101 348/718/104 +f 353/720/50 345/728/100 346/721/14 +f 351/723/28 343/712/99 344/724/103 +f 356/719/4 348/718/104 349/714/102 +f 354/726/10 346/1152/14 347/727/101 +f 352/725/5 344/724/103 345/728/100 +f 351/723/28 358/716/2 350/711/105 +f 372/729/95 366/738/8 365/730/3 +f 370/732/97 363/742/9 364/733/5 +f 367/735/93 360/743/7 362/736/4 +f 371/734/98 364/733/5 366/738/8 +f 368/737/96 362/736/4 361/739/6 +f 384/741/16 359/1153/1 363/742/9 +f 367/735/93 373/731/92 365/730/3 +f 369/740/94 361/739/6 359/744/1 +f 379/754/87 372/729/95 373/731/92 +f 378/756/86 377/750/89 370/752/97 +f 375/758/88 374/760/90 367/735/93 +f 378/756/86 371/757/98 372/729/95 +f 375/758/88 368/759/96 369/747/94 +f 374/760/90 380/755/12 373/731/92 +f 383/749/61 382/765/60 375/758/88 +f 381/761/62 388/763/85 380/755/12 +f 387/762/83 379/754/87 380/755/12 +f 386/764/84 385/753/59 377/750/89 +f 381/761/62 374/760/90 375/758/88 +f 387/762/83 386/764/84 378/756/86 +f 395/766/28 387/762/83 388/763/85 +f 393/768/50 385/778/59 386/769/84 +f 391/771/20 383/779/61 384/772/16 +f 389/774/42 381/761/62 382/775/60 +f 394/770/5 386/769/84 387/762/83 +f 392/777/10 384/1154/16 385/778/59 +f 390/776/4 382/775/60 383/779/61 +f 396/767/2 388/763/85 381/761/62 +f 397/780/10 405/796/44 412/781/37 +f 403/783/1 411/792/41 410/784/38 +f 401/786/2 409/1155/42 408/787/39 +f 399/789/3 407/795/43 406/790/40 +f 404/782/16 412/781/37 411/792/41 +f 402/785/18 410/784/38 409/793/42 +f 400/788/12 408/787/39 407/795/43 +f 398/791/14 406/790/40 405/796/44 +f 407/797/43 415/803/49 414/798/45 +f 411/799/41 412/781/37 419/800/46 +f 407/797/43 408/813/39 416/802/48 +f 406/790/40 414/798/45 413/804/50 +f 412/781/37 405/796/44 413/804/50 +f 411/799/41 418/801/47 417/805/51 +f 419/800/46 413/804/50 420/807/52 +f 417/805/51 418/801/47 425/809/54 +f 415/803/49 422/812/57 421/811/56 +f 418/801/47 419/800/46 426/808/53 +f 416/802/48 423/815/58 422/812/57 +f 414/798/45 421/811/56 420/807/52 +f 424/817/55 432/826/6 434/818/4 +f 426/808/53 420/807/52 428/820/5 +f 409/822/42 434/1156/4 430/823/7 +f 425/825/54 431/829/1 432/826/6 +f 422/827/57 429/830/3 427/828/8 +f 426/808/53 433/821/9 431/829/1 +f 423/824/58 430/823/7 429/830/3 +f 421/811/56 427/828/8 428/820/5 +f 435/831/10 443/847/125 450/832/119 +f 441/834/3 449/843/123 448/835/120 +f 439/837/2 447/1157/28 446/838/121 +f 437/840/1 445/846/124 444/841/122 +f 442/833/14 450/832/119 449/843/123 +f 440/836/12 448/835/120 447/844/28 +f 438/839/18 446/838/121 445/846/124 +f 436/842/16 444/841/122 443/847/125 +f 445/848/124 453/853/129 452/849/126 +f 450/832/119 457/855/130 456/850/127 +f 445/848/124 446/865/121 454/852/128 +f 444/841/122 452/849/126 451/854/20 +f 443/847/125 451/854/20 457/855/130 +f 449/851/123 456/850/127 455/856/131 +f 457/855/130 451/854/20 458/858/132 +f 456/850/127 463/862/136 462/860/134 +f 453/853/129 460/864/138 459/861/135 +f 456/850/127 457/855/130 464/859/133 +f 453/853/129 454/852/128 461/863/137 +f 452/849/126 459/861/135 458/858/132 +f 462/868/134 470/877/8 472/869/5 +f 464/859/133 458/858/132 466/871/4 +f 447/873/28 472/1158/5 468/874/9 +f 463/876/136 469/880/3 470/877/8 +f 460/878/138 467/881/1 465/879/6 +f 464/859/133 471/872/7 469/880/3 +f 461/875/137 468/874/9 467/881/1 +f 459/861/135 465/879/6 466/871/4 +f 473/882/10 481/898/125 488/883/119 +f 479/885/3 487/894/123 486/886/120 +f 477/888/2 485/1159/28 484/889/121 +f 475/891/1 483/897/124 482/892/122 +f 480/884/14 488/883/119 487/894/123 +f 477/895/2 478/887/12 486/886/120 +f 476/890/18 484/889/121 483/897/124 +f 474/893/16 482/892/122 481/898/125 +f 483/899/124 491/904/129 490/900/126 +f 488/883/119 495/906/130 494/901/127 +f 483/899/124 484/916/121 492/903/128 +f 481/898/125 482/892/122 490/900/126 +f 488/883/119 481/898/125 489/905/20 +f 487/902/123 494/901/127 493/907/131 +f 495/906/130 489/905/20 496/909/132 +f 494/901/127 501/913/136 500/911/134 +f 491/904/129 498/915/138 497/912/135 +f 494/901/127 495/906/130 502/910/133 +f 491/904/129 492/903/128 499/914/137 +f 490/900/126 497/912/135 496/909/132 +f 500/919/134 508/928/8 510/920/5 +f 502/910/133 496/909/132 504/922/4 +f 485/924/28 510/1160/5 506/925/9 +f 501/927/136 507/931/3 508/928/8 +f 498/929/138 505/932/1 503/930/6 +f 502/910/133 509/923/7 507/931/3 +f 498/929/138 499/926/137 506/925/9 +f 497/912/135 503/930/6 504/922/4 +f 511/933/10 519/949/145 526/934/139 +f 517/936/5 525/945/143 524/937/140 +f 515/939/2 523/1161/18 522/940/141 +f 513/942/4 521/948/144 520/943/142 +f 518/935/50 526/934/139 525/945/143 +f 516/938/28 524/937/140 523/946/18 +f 514/941/42 522/940/141 521/948/144 +f 512/944/20 520/943/142 519/949/145 +f 521/950/144 529/956/150 528/951/146 +f 525/952/143 526/934/139 533/953/147 +f 521/950/144 522/966/141 530/955/149 +f 519/949/145 520/943/142 528/951/146 +f 519/949/145 527/957/14 533/953/147 +f 525/952/143 532/954/148 531/958/151 +f 533/953/147 527/957/14 534/960/152 +f 532/954/148 539/965/157 538/962/154 +f 528/951/146 529/956/150 536/963/155 +f 533/953/147 540/961/153 539/965/157 +f 530/955/149 537/968/158 536/963/155 +f 528/951/146 535/964/156 534/960/152 +f 538/970/154 546/979/9 548/971/1 +f 540/961/153 534/960/152 542/973/3 +f 523/975/18 548/1162/1 544/976/6 +f 539/978/157 545/982/5 546/979/9 +f 536/980/155 543/983/4 541/981/7 +f 540/961/153 547/974/8 545/982/5 +f 537/977/158 544/976/6 543/983/4 +f 535/964/156 541/981/7 542/973/3 +f 549/984/10 557/1000/145 564/985/139 +f 555/987/5 563/996/143 562/988/140 +f 553/990/2 561/1163/18 560/991/141 +f 551/993/4 559/999/144 558/994/142 +f 556/986/50 564/985/139 563/996/143 +f 554/989/28 562/988/140 561/997/18 +f 552/992/42 560/991/141 559/999/144 +f 550/995/20 558/994/142 557/1000/145 +f 559/1001/144 567/1006/150 566/1002/146 +f 564/985/139 571/1008/147 570/1003/148 +f 559/1001/144 560/1017/141 568/1005/149 +f 557/1000/145 558/994/142 566/1002/146 +f 557/1000/145 565/1007/14 571/1008/147 +f 563/1004/143 570/1003/148 569/1009/151 +f 571/1008/147 565/1007/14 572/1011/152 +f 570/1003/148 577/1016/157 576/1013/154 +f 566/1002/146 567/1006/150 574/1014/155 +f 571/1008/147 578/1012/153 577/1016/157 +f 568/1005/149 575/1019/158 574/1014/155 +f 566/1002/146 573/1015/156 572/1011/152 +f 576/1021/154 584/1030/9 586/1022/1 +f 578/1012/153 572/1011/152 580/1024/3 +f 561/1026/18 586/1164/1 582/1027/6 +f 577/1029/157 583/1033/5 584/1030/9 +f 574/1031/155 581/1034/4 579/1032/7 +f 578/1012/153 585/1025/8 583/1033/5 +f 575/1028/158 582/1027/6 581/1034/4 +f 573/1015/156 579/1032/7 580/1024/3 +f 587/1035/10 595/1051/165 602/1036/159 +f 593/1038/4 601/1047/163 600/1039/160 +f 591/1041/2 599/1165/12 598/1042/161 +f 589/1044/5 597/1050/164 596/1045/162 +f 594/1037/20 602/1036/159 601/1047/163 +f 591/1048/2 592/1040/42 600/1039/160 +f 590/1043/28 598/1042/161 597/1050/164 +f 588/1046/50 596/1045/162 595/1051/165 +f 596/1045/162 597/1056/164 605/1052/166 +f 602/1036/159 609/1059/170 608/1054/168 +f 597/1056/164 598/1068/161 606/1057/169 +f 596/1045/162 604/1053/167 603/1058/16 +f 595/1051/165 603/1058/16 609/1059/170 +f 601/1055/163 608/1054/168 607/1060/171 +f 609/1059/170 603/1058/16 610/1062/172 +f 608/1054/168 615/1067/177 614/1064/174 +f 604/1053/167 605/1052/166 612/1065/175 +f 609/1059/170 616/1063/173 615/1067/177 +f 606/1057/169 613/1070/178 612/1065/175 +f 604/1053/167 611/1066/176 610/1062/172 +f 614/1072/174 622/1081/7 624/1073/3 +f 616/1063/173 610/1062/172 618/1075/1 +f 599/1077/12 624/1166/3 620/1078/8 +f 615/1080/177 621/1084/4 622/1081/7 +f 612/1082/175 619/1085/5 617/1083/9 +f 616/1063/173 623/1076/6 621/1084/4 +f 613/1079/178 620/1078/8 619/1085/5 +f 611/1066/176 617/1083/9 618/1075/1 +f 625/1086/10 633/1102/165 640/1087/159 +f 631/1089/4 639/1098/163 638/1090/160 +f 628/1092/28 629/1167/2 637/1093/12 +f 627/1095/5 635/1101/164 634/1096/162 +f 632/1088/20 640/1087/159 639/1098/163 +f 629/1099/2 630/1091/42 638/1090/160 +f 627/1095/5 628/1092/28 636/1094/161 +f 626/1097/50 634/1096/162 633/1102/165 +f 635/1103/164 643/1109/166 642/1104/167 +f 639/1105/163 640/1087/159 647/1106/170 +f 635/1103/164 636/1119/161 644/1108/169 +f 633/1102/165 634/1096/162 642/1104/167 +f 633/1102/165 641/1110/16 647/1106/170 +f 639/1105/163 646/1107/168 645/1111/171 +f 647/1106/170 641/1110/16 648/1113/172 +f 646/1107/168 653/1118/177 652/1115/174 +f 642/1104/167 643/1109/166 650/1116/175 +f 647/1106/170 654/1114/173 653/1118/177 +f 644/1108/169 651/1121/178 650/1116/175 +f 642/1104/167 649/1117/176 648/1113/172 +f 652/1123/174 660/1132/7 662/1124/3 +f 654/1114/173 648/1113/172 656/1126/1 +f 637/1128/12 662/1168/3 658/1129/8 +f 653/1131/177 659/1135/4 660/1132/7 +f 650/1133/175 657/1136/5 655/1134/9 +f 654/1114/173 661/1127/6 659/1135/4 +f 651/1130/178 658/1129/8 657/1136/5 +f 649/1117/176 655/1134/9 656/1126/1 diff --git a/src/main/resources/assets/hbm/models/trinkets/pooh.obj b/src/main/resources/assets/hbm/models/trinkets/pooh.obj new file mode 100644 index 000000000..958bfc3e9 --- /dev/null +++ b/src/main/resources/assets/hbm/models/trinkets/pooh.obj @@ -0,0 +1,334 @@ +# Blender v2.79 (sub 0) OBJ File: 'pooh.blend' +# www.blender.org +o Cube_Cube.001 +v -0.250000 0.062500 0.250000 +v 0.250000 0.062500 0.250000 +v -0.250000 0.062500 -0.250000 +v 0.250000 0.062500 -0.250000 +v -0.250000 0.437500 0.250000 +v 0.250000 0.437500 0.250000 +v -0.250000 0.437500 -0.250000 +v 0.250000 0.437500 -0.250000 +v -0.187500 0.437500 0.187500 +v 0.187500 0.437500 0.187500 +v -0.187500 0.437500 -0.187500 +v 0.187500 0.437500 -0.187500 +v -0.187500 0.625000 -0.187500 +v -0.187500 0.625000 0.187500 +v 0.187500 0.625000 0.187500 +v 0.187500 0.625000 -0.187500 +v -0.250000 0.625000 0.250000 +v 0.250000 0.625000 0.250000 +v -0.250000 0.625000 -0.250000 +v 0.250000 0.625000 -0.250000 +v -0.250000 1.125000 -0.250000 +v -0.250000 1.125000 0.250000 +v 0.250000 1.125000 0.250000 +v 0.250000 1.125000 -0.250000 +v -0.125000 0.000000 -0.062500 +v 0.500000 0.000000 -0.062500 +v -0.125000 0.000000 -0.187500 +v 0.500000 0.000000 -0.187500 +v -0.125000 0.125000 -0.187500 +v -0.125000 0.125000 -0.062500 +v 0.500000 0.125000 -0.062500 +v 0.500000 0.125000 -0.187500 +v -0.125000 0.000000 0.187500 +v 0.500000 0.000000 0.187500 +v -0.125000 0.000000 0.062500 +v 0.500000 0.000000 0.062500 +v -0.125000 0.125000 0.062500 +v -0.125000 0.125000 0.187500 +v 0.500000 0.125000 0.187500 +v 0.500000 0.125000 0.062500 +v -0.062500 0.606694 -0.169194 +v 0.062500 0.606694 -0.169194 +v -0.062500 0.518306 -0.080806 +v 0.062500 0.518306 -0.080806 +v -0.062500 0.253141 -0.345971 +v -0.062500 0.341529 -0.434359 +v 0.062500 0.341529 -0.434359 +v 0.062500 0.253141 -0.345971 +v -0.062500 0.606694 0.169194 +v 0.062500 0.606694 0.169194 +v -0.062500 0.518306 0.080806 +v 0.062500 0.518306 0.080806 +v -0.062500 0.253141 0.345971 +v -0.062500 0.341529 0.434359 +v 0.062500 0.341529 0.434359 +v 0.062500 0.253141 0.345971 +v 0.250000 0.781250 0.031250 +v 0.250000 0.718750 0.031250 +v 0.250000 0.781250 -0.031250 +v 0.250000 0.718750 -0.031250 +v 0.312500 0.781250 -0.031250 +v 0.312500 0.781250 0.031250 +v 0.312500 0.718750 0.031250 +v 0.312500 0.718750 -0.031250 +v -0.093750 1.062500 -0.125000 +v 0.093750 1.062500 -0.125000 +v -0.093750 1.062500 -0.312500 +v 0.093750 1.062500 -0.312500 +v -0.093750 1.250000 -0.312500 +v -0.093750 1.250000 -0.125000 +v 0.093750 1.250000 -0.125000 +v 0.093750 1.250000 -0.312500 +v -0.093750 1.062500 0.312500 +v 0.093750 1.062500 0.312500 +v -0.093750 1.062500 0.125000 +v 0.093750 1.062500 0.125000 +v -0.093750 1.250000 0.125000 +v -0.093750 1.250000 0.312500 +v 0.093750 1.250000 0.312500 +v 0.093750 1.250000 0.125000 +vt 0.400000 -0.000000 +vt 0.200000 0.173913 +vt 0.200000 -0.000000 +vt 0.200000 0.304348 +vt 0.400000 0.478261 +vt 0.200000 0.478261 +vt 0.600000 0.173913 +vt 0.400000 0.304348 +vt 0.400000 0.173913 +vt 0.000000 0.304348 +vt 0.000000 0.173913 +vt 0.800000 0.173913 +vt 0.600000 0.304348 +vt 0.700000 0.304348 +vt 0.550000 0.369565 +vt 0.550000 0.304348 +vt 1.000000 0.304348 +vt 0.850000 0.369565 +vt 0.850000 0.304348 +vt 0.700000 0.369565 +vt 0.400000 0.369565 +vt 0.400000 0.304348 +vt 0.400000 0.478261 +vt 0.200000 0.652174 +vt 0.200000 0.478261 +vt 0.200000 0.826087 +vt 0.400000 1.000000 +vt 0.200000 1.000000 +vt 0.600000 0.652174 +vt 0.400000 0.826087 +vt 0.400000 0.652174 +vt -0.000000 0.826087 +vt -0.000000 0.652174 +vt 0.800000 0.652174 +vt 0.600000 0.826087 +vt 0.900000 0.260870 +vt 0.950000 0.043478 +vt 0.950000 0.260870 +vt 0.800000 0.043478 +vt 0.850000 0.260870 +vt 0.800000 0.260870 +vt 0.850000 -0.000000 +vt 0.800000 0.000000 +vt 0.800000 0.304348 +vt 0.850000 0.304348 +vt 0.850000 0.043478 +vt 0.900000 0.043478 +vt 1.000000 0.260870 +vt 0.900000 0.260870 +vt 0.950000 0.043478 +vt 0.950000 0.260870 +vt 0.800000 0.043478 +vt 0.850000 0.260870 +vt 0.800000 0.260870 +vt 0.850000 -0.000000 +vt 0.800000 0.000000 +vt 0.800000 0.304348 +vt 0.850000 0.304348 +vt 0.850000 0.043478 +vt 0.900000 0.043478 +vt 1.000000 0.260870 +vt 0.550000 0.369565 +vt 0.475000 0.434783 +vt 0.475000 0.369565 +vt 0.400000 0.043478 +vt 0.450000 0.000000 +vt 0.450000 0.043478 +vt 0.600000 0.173913 +vt 0.550000 0.043478 +vt 0.600000 0.043478 +vt 0.450000 0.173913 +vt 0.500000 0.043478 +vt 0.500000 0.173913 +vt 0.550000 0.173913 +vt 0.400000 0.173913 +vt 0.400000 0.000000 +vt 0.450000 0.043478 +vt 0.400000 0.043478 +vt 0.500000 0.173913 +vt 0.450000 0.173913 +vt 0.550000 0.043478 +vt 0.600000 0.173913 +vt 0.550000 0.173913 +vt 0.500000 0.043478 +vt 0.400000 0.173913 +vt 0.425000 0.521739 +vt 0.450000 0.543478 +vt 0.425000 0.543478 +vt 0.425000 0.565217 +vt 0.450000 0.565217 +vt 0.475000 0.543478 +vt 0.450000 0.521739 +vt 0.475000 0.521739 +vt 0.400000 0.521739 +vt 0.400000 0.543478 +vt 0.450000 0.500000 +vt 0.425000 0.500000 +vt 0.475000 0.500000 +vt 0.550000 0.565217 +vt 0.475000 0.565217 +vt 0.550000 0.434783 +vt 0.700000 0.434783 +vt 0.625000 0.500000 +vt 0.625000 0.434783 +vt 0.550000 0.500000 +vt 0.400000 0.500000 +vt 0.400000 0.434783 +vt 0.550000 0.369565 +vt 0.475000 0.434783 +vt 0.475000 0.369565 +vt 0.475000 0.500000 +vt 0.550000 0.565217 +vt 0.475000 0.565217 +vt 0.550000 0.434783 +vt 0.700000 0.434783 +vt 0.625000 0.500000 +vt 0.625000 0.434783 +vt 0.550000 0.500000 +vt 0.400000 0.500000 +vt 0.400000 0.434783 +vt 0.800000 0.304348 +vt 1.000000 0.369565 +vt 0.800000 0.826087 +vt 1.000000 0.043478 +vt 1.000000 0.043478 +vt 0.400000 0.000000 +vt 0.450000 0.000000 +vt 0.600000 0.043478 +vt 0.700000 0.500000 +vt 0.700000 0.500000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 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.0000 -0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +s off +f 3/1/1 2/2/1 1/3/1 +f 6/4/2 7/5/2 5/6/2 +f 3/7/3 8/8/3 4/9/3 +f 2/2/4 5/10/4 1/11/4 +f 4/9/5 6/4/5 2/2/5 +f 1/12/6 7/13/6 3/7/6 +f 12/14/5 15/15/5 10/16/5 +f 9/17/6 13/18/6 11/19/6 +f 11/19/3 16/20/3 12/14/3 +f 10/16/4 14/21/4 9/22/4 +f 19/23/1 18/24/1 17/25/1 +f 23/26/2 21/27/2 22/28/2 +f 19/29/3 24/30/3 20/31/3 +f 18/24/4 22/32/4 17/33/4 +f 20/31/5 23/26/5 18/24/5 +f 17/34/6 21/35/6 19/29/6 +f 27/36/1 26/37/1 25/38/1 +f 31/39/2 29/40/2 30/41/2 +f 28/42/5 31/39/5 26/43/5 +f 25/44/6 29/40/6 27/45/6 +f 27/36/3 32/46/3 28/47/3 +f 26/37/4 30/48/4 25/38/4 +f 35/49/1 34/50/1 33/51/1 +f 39/52/2 37/53/2 38/54/2 +f 36/55/5 39/52/5 34/56/5 +f 33/57/6 37/53/6 35/58/6 +f 35/49/3 40/59/3 36/60/3 +f 34/50/4 38/61/4 33/51/4 +f 67/62/1 66/63/1 65/64/1 +f 47/65/7 45/66/7 46/67/7 +f 42/68/5 48/69/5 47/70/5 +f 41/71/6 45/72/6 43/73/6 +f 43/73/8 48/69/8 44/74/8 +f 42/75/9 46/67/9 41/71/9 +f 53/76/8 55/77/8 54/78/8 +f 55/77/5 52/79/5 50/80/5 +f 53/81/6 49/82/6 51/83/6 +f 56/84/7 51/83/7 52/79/7 +f 54/78/10 50/80/10 49/85/10 +f 63/86/5 61/87/5 62/88/5 +f 57/89/2 61/87/2 59/90/2 +f 59/91/3 64/92/3 60/93/3 +f 58/94/4 62/88/4 57/95/4 +f 60/96/1 63/86/1 58/97/1 +f 71/98/2 69/99/2 70/100/2 +f 68/101/5 71/98/5 66/63/5 +f 65/102/6 69/103/6 67/104/6 +f 67/104/3 72/105/3 68/101/3 +f 66/63/4 70/106/4 65/107/4 +f 75/108/1 74/109/1 73/110/1 +f 79/111/2 77/112/2 78/113/2 +f 76/114/5 79/111/5 74/109/5 +f 73/115/6 77/116/6 75/117/6 +f 75/117/3 80/118/3 76/114/3 +f 74/109/4 78/119/4 73/120/4 +f 3/1/1 4/9/1 2/2/1 +f 6/4/2 8/8/2 7/5/2 +f 3/7/3 7/13/3 8/8/3 +f 2/2/4 6/4/4 5/10/4 +f 4/9/5 8/8/5 6/4/5 +f 1/12/6 5/121/6 7/13/6 +f 12/14/5 16/20/5 15/15/5 +f 9/17/6 14/122/6 13/18/6 +f 11/19/3 13/18/3 16/20/3 +f 10/16/4 15/15/4 14/21/4 +f 19/23/1 20/31/1 18/24/1 +f 23/26/2 24/30/2 21/27/2 +f 19/29/3 21/35/3 24/30/3 +f 18/24/4 23/26/4 22/32/4 +f 20/31/5 24/30/5 23/26/5 +f 17/34/6 22/123/6 21/35/6 +f 27/36/1 28/47/1 26/37/1 +f 31/39/2 32/46/2 29/40/2 +f 28/42/5 32/46/5 31/39/5 +f 25/44/6 30/41/6 29/40/6 +f 27/36/3 29/40/3 32/46/3 +f 26/37/4 31/124/4 30/48/4 +f 35/49/1 36/60/1 34/50/1 +f 39/52/2 40/59/2 37/53/2 +f 36/55/5 40/59/5 39/52/5 +f 33/57/6 38/54/6 37/53/6 +f 35/49/3 37/53/3 40/59/3 +f 34/50/4 39/125/4 38/61/4 +f 67/62/1 68/101/1 66/63/1 +f 47/65/7 48/126/7 45/66/7 +f 42/68/5 44/74/5 48/69/5 +f 41/71/6 46/67/6 45/72/6 +f 43/73/8 45/72/8 48/69/8 +f 42/75/9 47/65/9 46/67/9 +f 53/76/8 56/127/8 55/77/8 +f 55/77/5 56/84/5 52/79/5 +f 53/81/6 54/128/6 49/82/6 +f 56/84/7 53/81/7 51/83/7 +f 54/78/10 55/77/10 50/80/10 +f 63/86/5 64/92/5 61/87/5 +f 57/89/2 62/88/2 61/87/2 +f 59/91/3 61/87/3 64/92/3 +f 58/94/4 63/86/4 62/88/4 +f 60/96/1 64/92/1 63/86/1 +f 71/98/2 72/105/2 69/99/2 +f 68/101/5 72/105/5 71/98/5 +f 65/102/6 70/129/6 69/103/6 +f 67/104/3 69/103/3 72/105/3 +f 66/63/4 71/98/4 70/106/4 +f 75/108/1 76/114/1 74/109/1 +f 79/111/2 80/118/2 77/112/2 +f 76/114/5 80/118/5 79/111/5 +f 73/115/6 78/130/6 77/116/6 +f 75/117/3 77/116/3 80/118/3 +f 74/109/4 79/111/4 78/119/4 diff --git a/src/main/resources/assets/hbm/models/weapons/am180.obj b/src/main/resources/assets/hbm/models/weapons/am180.obj new file mode 100644 index 000000000..ed63feb9a --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/am180.obj @@ -0,0 +1,4369 @@ +# Blender v2.79 (sub 0) OBJ File: 'am180.blend' +# www.blender.org +o Mag +v 0.574255 2.611670 3.643148 +v 0.000000 2.611670 2.937500 +v 0.000000 2.611670 3.718750 +v 0.718750 2.611670 2.744912 +v 0.372052 2.611670 2.888518 +v 1.568893 2.611670 3.068893 +v 1.109375 2.611670 3.421494 +v 1.921494 2.611670 2.609375 +v 1.016466 2.611670 2.516466 +v 2.143148 2.611670 2.074255 +v 1.244912 2.611670 2.218750 +v 2.218750 2.611670 1.500000 +v 1.388518 2.611670 1.872052 +v 1.388518 2.611670 1.127948 +v 1.437500 2.611670 1.500000 +v 2.143148 2.611670 0.925745 +v 1.244912 2.611670 0.781250 +v 1.568893 2.611670 -0.068893 +v 1.921494 2.611670 0.390625 +v 1.109375 2.611670 -0.421494 +v 1.016466 2.611670 0.483534 +v 0.574255 2.611670 -0.643148 +v 0.718750 2.611670 0.255088 +v 0.000000 2.611670 -0.718750 +v 0.372052 2.611670 0.111482 +v -0.574255 2.611670 -0.643148 +v 0.000000 2.611670 0.062500 +v -1.109375 2.611670 -0.421494 +v -0.372052 2.611670 0.111482 +v -1.568893 2.611670 -0.068893 +v -0.718750 2.611670 0.255088 +v -1.921494 2.611670 0.390625 +v -1.016466 2.611670 0.483534 +v -2.143148 2.611670 0.925746 +v -1.244911 2.611670 0.781250 +v -2.218750 2.611670 1.500000 +v -1.388518 2.611670 1.127948 +v -2.143148 2.611670 2.074255 +v -1.437500 2.611670 1.500000 +v -1.921494 2.611670 2.609375 +v -1.388518 2.611670 1.872052 +v -1.568893 2.611670 3.068893 +v -1.244912 2.611670 2.218750 +v -1.109375 2.611670 3.421494 +v -1.016466 2.611670 2.516466 +v -0.372052 2.611670 2.888518 +v -0.718750 2.611670 2.744912 +v -0.574255 2.611670 3.643148 +v 1.016466 2.111670 0.483534 +v 0.718750 2.111670 0.255088 +v 1.149048 2.486670 0.616117 +v 0.815595 2.111670 0.949570 +v 1.149048 2.111670 0.616117 +v 0.550430 2.486670 0.684405 +v 0.883884 2.486670 0.350952 +v -0.815595 2.486670 2.050431 +v -1.149048 2.111670 2.383884 +v -1.149048 2.486670 2.383884 +v -0.883883 2.486670 2.649049 +v -0.500000 2.424170 0.633975 +v -0.156677 2.424170 0.684405 +v 0.000000 2.424170 0.500000 +v 0.550430 2.424170 0.684405 +v 0.500000 2.424170 0.633975 +v 0.326286 2.424170 0.813814 +v 0.067467 2.424170 0.813814 +v 0.500000 2.424170 2.366026 +v 0.156677 2.424170 2.315596 +v 0.000000 2.424170 2.500000 +v -0.067467 2.424170 2.186186 +v -0.550430 2.424170 2.315596 +v -0.500000 2.424170 2.366026 +v -0.326286 2.424170 2.186186 +v 0.326286 2.486670 0.813814 +v 0.067467 2.486670 0.813814 +v -0.067467 2.486670 2.186186 +v 0.062500 2.549170 1.391747 +v 0.125000 2.486670 1.500000 +v 0.062500 2.486670 1.391747 +v 0.062500 2.549170 1.608253 +v -0.062500 2.486670 1.608253 +v 0.062500 2.486670 1.608253 +v -0.062500 2.549170 1.391747 +v -0.062500 2.486670 1.391747 +v 0.125000 2.549170 1.500000 +v -0.062500 2.549170 1.608253 +v -0.125000 2.486670 1.500000 +v -0.125000 2.549170 1.500000 +v 0.437500 2.549170 1.016747 +v 0.500000 2.486670 1.125000 +v 0.437500 2.486670 1.016747 +v 0.437500 2.549170 1.233253 +v 0.312500 2.486670 1.233253 +v 0.437500 2.486670 1.233253 +v 0.312500 2.549170 1.016747 +v 0.312500 2.486670 1.016747 +v 0.500000 2.549170 1.125000 +v 0.312500 2.549170 1.233253 +v 0.250000 2.486670 1.125000 +v 0.250000 2.549170 1.125000 +v -0.312500 2.549170 1.766747 +v -0.250000 2.486670 1.875000 +v -0.312500 2.486670 1.766747 +v -0.312500 2.549170 1.983253 +v -0.437500 2.486670 1.983253 +v -0.312500 2.486670 1.983253 +v -0.437500 2.549170 1.766747 +v -0.437500 2.486670 1.766747 +v -0.250000 2.549170 1.875000 +v -0.437500 2.549170 1.983253 +v -0.500000 2.486670 1.875000 +v -0.500000 2.549170 1.875000 +v 1.244912 2.111670 0.781250 +v 0.815595 2.486670 0.949570 +v -0.815595 2.111670 2.050431 +v -0.550430 2.486670 2.315596 +v -1.000000 2.486670 1.500000 +v -0.866025 2.486670 2.000000 +v -0.326286 2.486670 2.186186 +v 0.156677 2.486670 2.315596 +v 0.866025 2.486670 2.000000 +v 0.500000 2.486670 2.366026 +v -0.866025 2.486670 1.000000 +v -0.156677 2.486670 0.684405 +v -0.500000 2.486670 0.633975 +v 1.000000 2.486670 1.500000 +v 0.866025 2.486670 1.000000 +v 0.574255 2.111670 3.643148 +v 0.000000 2.111670 3.718750 +v 1.921494 2.111670 0.390625 +v 2.143148 2.111670 0.925745 +v -1.568893 2.111670 -0.068893 +v -1.109375 2.111670 -0.421494 +v -0.574255 2.111670 3.643148 +v 2.218750 2.111670 1.500000 +v -0.574255 2.111670 -0.643148 +v -1.109375 2.111670 3.421494 +v 2.143148 2.111670 2.074255 +v 0.000000 2.111670 -0.718750 +v -1.568893 2.111670 3.068893 +v 1.921494 2.111670 2.609375 +v 0.574255 2.111670 -0.643148 +v -1.921494 2.111670 2.609375 +v 1.568893 2.111670 3.068893 +v 1.109375 2.111670 -0.421494 +v -2.143148 2.111670 2.074255 +v -2.218750 2.111670 1.500000 +v -2.143148 2.111670 0.925746 +v 1.109375 2.111670 3.421494 +v 1.568893 2.111670 -0.068893 +v -1.921494 2.111670 0.390625 +v -0.372052 2.111670 0.111482 +v 1.437500 2.111670 1.500000 +v -0.372052 2.111670 2.888518 +v -0.718750 2.111670 0.255088 +v 1.388518 2.111670 1.127948 +v 0.000000 2.111670 2.937500 +v -1.016466 2.111670 0.483534 +v 0.372052 2.111670 2.888518 +v -1.244911 2.111670 0.781250 +v -1.437500 2.111670 1.500000 +v 0.718750 2.111670 2.744912 +v -1.388518 2.111670 1.127948 +v -1.388518 2.111670 1.872052 +v 1.016466 2.111670 2.516466 +v 0.372052 2.111670 0.111482 +v 1.244912 2.111670 2.218750 +v 0.000000 2.111670 0.062500 +v 1.388518 2.111670 1.872052 +v -0.718750 2.111670 2.744912 +v 1.000000 2.111670 1.500000 +v 0.866025 2.111670 2.000000 +v 0.866025 2.111670 1.000000 +v -0.883883 2.111670 2.649049 +v 0.000000 2.111670 0.500000 +v -0.500000 2.111670 0.633975 +v -0.866025 2.111670 2.000000 +v -1.000000 2.111670 1.500000 +v 0.500000 2.111670 2.366026 +v -0.866025 2.111670 1.000000 +v 0.500000 2.111670 0.633975 +v 0.550430 2.111670 0.684405 +v 0.883884 2.111670 0.350952 +v -0.500000 2.111670 2.366026 +v -1.016466 2.111670 2.516466 +v -0.550430 2.111670 2.315596 +v 0.031250 2.611670 1.445874 +v 0.062500 2.611670 1.500000 +v -0.062500 2.611670 1.500000 +v -0.031250 2.611670 1.554127 +v -0.031250 2.611670 1.445874 +v 0.031250 2.611670 1.554127 +v -1.244912 2.111670 2.218750 +v 0.000000 2.111670 2.500000 +vt 0.033582 0.955224 +vt 0.005597 1.000000 +vt 0.000000 0.955224 +vt 0.061567 1.000000 +vt 0.039179 1.000000 +vt 0.100746 0.955224 +vt 0.072761 1.000000 +vt 0.067164 0.955224 +vt 0.134328 0.955224 +vt 0.106343 1.000000 +vt 0.167910 0.955224 +vt 0.139925 1.000000 +vt 0.201493 0.955224 +vt 0.173507 1.000000 +vt 0.229478 1.000000 +vt 0.207089 1.000000 +vt 0.235075 0.955224 +vt 0.263060 1.000000 +vt 0.240672 1.000000 +vt 0.302239 0.955224 +vt 0.274254 1.000000 +vt 0.268657 0.955224 +vt 0.335821 0.955224 +vt 0.307836 1.000000 +vt 0.369403 0.955224 +vt 0.341418 1.000000 +vt 0.402985 0.955224 +vt 0.375000 1.000000 +vt 0.436567 0.955224 +vt 0.408582 1.000000 +vt 0.470149 0.955224 +vt 0.442164 1.000000 +vt 0.503731 0.955224 +vt 0.475746 1.000000 +vt 0.537313 0.955224 +vt 0.509328 1.000000 +vt 0.570895 0.955224 +vt 0.542910 1.000000 +vt 0.604478 0.955224 +vt 0.576492 1.000000 +vt 0.638060 0.955224 +vt 0.610075 1.000000 +vt 0.671642 0.955224 +vt 0.643657 1.000000 +vt 0.705224 0.955224 +vt 0.677239 1.000000 +vt 0.738806 0.955224 +vt 0.710821 1.000000 +vt 0.766791 1.000000 +vt 0.744403 1.000000 +vt 0.805970 0.955224 +vt 0.777986 1.000000 +vt 0.772388 0.955224 +vt 0.201493 0.895522 +vt 0.179104 0.925373 +vt 0.201493 0.925373 +vt 0.223881 0.895522 +vt 0.223881 0.925373 +vt 0.567164 0.902985 +vt 0.597015 0.925373 +vt 0.567164 0.925373 +vt 0.597015 0.880597 +vt 0.567164 0.880597 +vt 0.567164 0.902985 +vt 0.537313 0.925373 +vt 0.537313 0.902985 +vt 0.537313 0.880597 +vt 0.566630 0.343284 +vt 0.563619 0.322787 +vt 0.574627 0.313433 +vt 0.563619 0.280571 +vt 0.566630 0.283582 +vt 0.555892 0.293953 +vt 0.555892 0.309405 +vt 0.545310 0.283582 +vt 0.548321 0.304079 +vt 0.537312 0.313433 +vt 0.556049 0.317459 +vt 0.548321 0.346295 +vt 0.545310 0.343284 +vt 0.556047 0.332913 +vt 0.637981 0.779028 +vt 0.637981 0.794480 +vt 0.556049 0.802535 +vt 0.619403 0.876866 +vt 0.611940 0.880597 +vt 0.619403 0.880597 +vt 0.604478 0.876866 +vt 0.597015 0.880597 +vt 0.604478 0.880597 +vt 0.626866 0.876866 +vt 0.626866 0.880597 +vt 0.611940 0.876866 +vt 0.641791 0.876866 +vt 0.634328 0.880597 +vt 0.641791 0.880597 +vt 0.634328 0.876866 +vt 0.619403 0.876866 +vt 0.611940 0.880597 +vt 0.619403 0.880597 +vt 0.604478 0.876866 +vt 0.597015 0.880597 +vt 0.604478 0.880597 +vt 0.626866 0.876866 +vt 0.626866 0.880597 +vt 0.611940 0.876866 +vt 0.641791 0.876866 +vt 0.634328 0.880597 +vt 0.641791 0.880597 +vt 0.634328 0.876866 +vt 0.600746 0.872135 +vt 0.600746 0.859209 +vt 0.611940 0.865672 +vt 0.619403 0.876866 +vt 0.611940 0.880597 +vt 0.619403 0.880597 +vt 0.604478 0.876866 +vt 0.597015 0.880597 +vt 0.604478 0.880597 +vt 0.626866 0.876866 +vt 0.626866 0.880597 +vt 0.611940 0.876866 +vt 0.641791 0.876866 +vt 0.634328 0.880597 +vt 0.641791 0.880597 +vt 0.634328 0.876866 +vt 0.600746 0.872135 +vt 0.600746 0.859209 +vt 0.611940 0.865672 +vt 0.027985 1.000000 +vt 0.095149 1.000000 +vt 0.128731 1.000000 +vt 0.162313 1.000000 +vt 0.195895 1.000000 +vt 0.296642 1.000000 +vt 0.330224 1.000000 +vt 0.363807 1.000000 +vt 0.397388 1.000000 +vt 0.430970 1.000000 +vt 0.464552 1.000000 +vt 0.498134 1.000000 +vt 0.531716 1.000000 +vt 0.565298 1.000000 +vt 0.598881 1.000000 +vt 0.632463 1.000000 +vt 0.666045 1.000000 +vt 0.699627 1.000000 +vt 0.733209 1.000000 +vt 0.800373 1.000000 +vt 0.179104 0.895522 +vt 0.597015 0.902985 +vt 0.567164 0.925373 +vt 0.567164 0.880597 +vt 0.597015 0.858209 +vt 0.567164 0.850210 +vt 0.556049 0.817987 +vt 0.564153 0.847200 +vt 0.548323 0.831369 +vt 0.548323 0.789154 +vt 0.567164 0.746804 +vt 0.545312 0.768657 +vt 0.626866 0.850210 +vt 0.645707 0.807861 +vt 0.648718 0.828358 +vt 0.597015 0.738806 +vt 0.626866 0.746804 +vt 0.629876 0.749815 +vt 0.645707 0.765646 +vt 0.597015 0.876866 +vt 0.597015 0.876866 +vt 0.608209 0.872135 +vt 0.597015 0.865672 +vt 0.608209 0.859209 +vt 0.597015 0.876866 +vt 0.608209 0.872135 +vt 0.597015 0.865672 +vt 0.608209 0.859209 +vt 0.033582 0.925373 +vt 0.000000 0.925373 +vt 0.268657 0.925373 +vt 0.235075 0.925373 +vt 0.503731 0.925373 +vt 0.470149 0.925373 +vt 0.805970 0.925373 +vt 0.772388 0.925373 +vt 0.201493 0.925373 +vt 0.436567 0.925373 +vt 0.738806 0.925373 +vt 0.167910 0.925373 +vt 0.402985 0.925373 +vt 0.705224 0.925373 +vt 0.134328 0.925373 +vt 0.369403 0.925373 +vt 0.671642 0.925373 +vt 0.100746 0.925373 +vt 0.335821 0.925373 +vt 0.638060 0.925373 +vt 0.604478 0.925373 +vt 0.570895 0.925373 +vt 0.067164 0.925373 +vt 0.302239 0.925373 +vt 0.537313 0.925373 +vt 0.313433 0.925373 +vt 0.291045 0.895522 +vt 0.291045 0.925373 +vt 0.156716 0.925373 +vt 0.134328 0.895522 +vt 0.134328 0.925373 +vt 0.537313 0.925373 +vt 0.514925 0.895522 +vt 0.514925 0.925373 +vt 0.335821 0.925373 +vt 0.313433 0.895522 +vt 0.156716 0.895522 +vt 0.022388 0.925373 +vt 0.000000 0.895522 +vt 0.000000 0.925373 +vt 0.358209 0.925373 +vt 0.335821 0.895522 +vt 0.044776 0.925373 +vt 0.022388 0.895522 +vt 0.380597 0.925373 +vt 0.358209 0.895522 +vt 0.425373 0.925373 +vt 0.402985 0.895522 +vt 0.402985 0.925373 +vt 0.067164 0.925373 +vt 0.044776 0.895522 +vt 0.380597 0.895522 +vt 0.447761 0.925373 +vt 0.425373 0.895522 +vt 0.246269 0.925373 +vt 0.089552 0.925373 +vt 0.067164 0.895522 +vt 0.268657 0.925373 +vt 0.246269 0.895522 +vt 0.111940 0.925373 +vt 0.089552 0.895522 +vt 0.268657 0.895522 +vt 0.111940 0.895522 +vt 0.492537 0.895522 +vt 0.492537 0.925373 +vt 0.720149 0.902985 +vt 0.690298 0.925373 +vt 0.690298 0.902985 +vt 0.660448 0.925373 +vt 0.660448 0.921642 +vt 0.690298 0.902985 +vt 0.660448 0.902985 +vt 0.660448 0.899254 +vt 0.750000 0.902985 +vt 0.720149 0.925373 +vt 0.567164 0.876866 +vt 0.537313 0.858209 +vt 0.630597 0.880597 +vt 0.660448 0.880597 +vt 0.750000 0.880597 +vt 0.720149 0.902985 +vt 0.720149 0.880597 +vt 0.630597 0.921642 +vt 0.660448 0.902985 +vt 0.690298 0.880597 +vt 0.600746 0.899254 +vt 0.600746 0.880597 +vt 0.597015 0.880597 +vt 0.597015 0.899254 +vt 0.567164 0.858209 +vt 0.597015 0.858209 +vt 0.597015 0.876866 +vt 0.753731 0.902985 +vt 0.750000 0.902985 +vt 0.600746 0.902985 +vt 0.600746 0.921642 +vt 0.470149 0.925373 +vt 0.470149 0.895522 +vt 0.597015 0.921642 +vt 0.597015 0.902985 +vt 0.750000 0.925373 +vt 0.753731 0.902985 +vt 0.753731 0.925373 +vt 0.597015 0.902985 +vt 0.611940 0.899254 +vt 0.611940 0.902985 +vt 0.626866 0.902985 +vt 0.626866 0.899254 +vt 0.641791 0.902985 +vt 0.641791 0.899254 +vt 0.641791 0.925373 +vt 0.626866 0.925373 +vt 0.641791 0.921642 +vt 0.611940 0.925373 +vt 0.626866 0.921642 +vt 0.597015 0.925373 +vt 0.619403 0.873134 +vt 0.611940 0.873134 +vt 0.634328 0.873134 +vt 0.597015 0.873134 +vt 0.626866 0.873134 +vt 0.604478 0.873134 +vt 0.617537 0.858709 +vt 0.619403 0.861940 +vt 0.613806 0.865172 +vt 0.537313 0.895522 +vt 0.447761 0.895522 +vt 0.567164 0.858209 +vt 0.630597 0.899254 +vt 0.630597 0.902985 +vt 0.753731 0.880597 +vt 0.611940 0.921642 +vt 0.641791 0.873134 +vt 0.617537 0.865172 +vt 0.611940 0.861940 +vt 0.613806 0.858709 +vn 0.0000 1.0000 0.0000 +vn -0.7934 0.0000 0.6088 +vn -0.6088 0.0000 0.7934 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.8660 0.0000 -0.5000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.8660 0.0000 0.5000 +vn -0.8660 0.0000 0.5000 +vn -0.8660 0.0000 -0.5000 +vn 0.2588 0.0000 0.9659 +vn 0.9659 0.0000 -0.2588 +vn -0.5000 0.0000 -0.8660 +vn -0.2588 0.0000 0.9659 +vn 1.0000 0.0000 -0.0000 +vn -0.2588 0.0000 -0.9659 +vn -0.5000 0.0000 0.8660 +vn 0.9659 0.0000 0.2588 +vn -0.7071 0.0000 0.7071 +vn 0.2588 0.0000 -0.9659 +vn 0.5000 0.0000 -0.8660 +vn -0.9659 0.0000 0.2588 +vn -1.0000 0.0000 -0.0000 +vn -0.9659 0.0000 -0.2588 +vn 0.5000 0.0000 0.8660 +vn 0.7071 0.0000 -0.7071 +vn -0.9239 0.0000 0.3827 +vn -0.3827 0.0000 0.9239 +vn 0.3144 0.0000 0.9493 +vn 0.4129 0.0000 0.9108 +vn -0.3144 0.0000 -0.9493 +vn -0.4129 0.0000 -0.9108 +vn 0.6430 0.0000 0.7659 +vn -0.6430 0.0000 -0.7659 +vn -0.6088 0.0000 -0.7934 +vn 0.3285 0.0000 -0.9445 +vn -0.3285 0.0000 0.9445 +vn 0.6088 0.0000 0.7934 +vn -0.3536 0.7071 -0.6124 +vn 0.2400 0.8773 -0.4156 +vn 0.3536 0.7071 -0.6124 +vn 0.4799 0.8773 -0.0000 +vn 0.7071 0.7071 -0.0000 +vn -0.3536 0.7071 0.6124 +vn -0.4799 0.8773 -0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.3536 0.7071 0.6124 +vn -0.2400 0.8773 0.4157 +vn -0.2400 0.8773 -0.4156 +vn 0.2400 0.8773 0.4157 +s off +f 1/1/1 2/2/1 3/3/1 +f 1/1/1 4/4/1 5/5/1 +f 6/6/1 4/7/1 7/8/1 +f 8/9/1 9/10/1 6/6/1 +f 10/11/1 11/12/1 8/9/1 +f 12/13/1 13/14/1 10/11/1 +f 12/13/1 14/15/1 15/16/1 +f 16/17/1 17/18/1 14/19/1 +f 18/20/1 17/21/1 19/22/1 +f 20/23/1 21/24/1 18/20/1 +f 22/25/1 23/26/1 20/23/1 +f 24/27/1 25/28/1 22/25/1 +f 26/29/1 27/30/1 24/27/1 +f 28/31/1 29/32/1 26/29/1 +f 30/33/1 31/34/1 28/31/1 +f 32/35/1 33/36/1 30/33/1 +f 34/37/1 35/38/1 32/35/1 +f 36/39/1 37/40/1 34/37/1 +f 38/41/1 39/42/1 36/39/1 +f 40/43/1 41/44/1 38/41/1 +f 42/45/1 43/46/1 40/43/1 +f 44/47/1 45/48/1 42/45/1 +f 44/47/1 46/49/1 47/50/1 +f 3/51/1 46/52/1 48/53/1 +f 49/54/2 17/55/2 21/56/2 +f 50/57/3 21/56/3 23/58/3 +f 51/59/4 52/60/4 53/61/4 +f 54/62/1 51/59/1 55/63/1 +f 56/64/5 57/65/5 58/66/5 +f 59/67/1 56/64/1 58/66/1 +f 60/68/1 61/69/1 62/70/1 +f 63/71/1 64/72/1 65/73/1 +f 62/70/1 65/73/1 64/72/1 +f 66/74/1 62/70/1 61/69/1 +f 67/75/1 68/76/1 69/77/1 +f 70/78/1 69/77/1 68/76/1 +f 71/79/1 72/80/1 73/81/1 +f 69/77/1 73/81/1 72/80/1 +f 74/82/1 75/83/1 76/84/1 +f 77/85/6 78/86/6 79/87/6 +f 80/88/7 81/89/7 82/90/7 +f 83/91/8 79/87/8 84/92/8 +f 85/93/9 82/90/9 78/86/9 +f 86/94/10 87/95/10 81/96/10 +f 88/97/11 84/92/11 87/95/11 +f 89/98/6 90/99/6 91/100/6 +f 92/101/7 93/102/7 94/103/7 +f 95/104/8 91/100/8 96/105/8 +f 97/106/9 94/103/9 90/99/9 +f 98/107/10 99/108/10 93/109/10 +f 100/110/11 96/105/11 99/108/11 +f 92/111/1 89/112/1 100/113/1 +f 101/114/6 102/115/6 103/116/6 +f 104/117/7 105/118/7 106/119/7 +f 107/120/8 103/116/8 108/121/8 +f 109/122/9 106/119/9 102/115/9 +f 110/123/10 111/124/10 105/125/10 +f 112/126/11 108/121/11 111/124/11 +f 104/127/1 101/128/1 112/129/1 +f 1/1/1 5/130/1 2/2/1 +f 1/1/1 7/8/1 4/4/1 +f 6/6/1 9/131/1 4/7/1 +f 8/9/1 11/132/1 9/10/1 +f 10/11/1 13/133/1 11/12/1 +f 12/13/1 15/134/1 13/14/1 +f 12/13/1 16/17/1 14/15/1 +f 16/17/1 19/22/1 17/18/1 +f 18/20/1 21/135/1 17/21/1 +f 20/23/1 23/136/1 21/24/1 +f 22/25/1 25/137/1 23/26/1 +f 24/27/1 27/138/1 25/28/1 +f 26/29/1 29/139/1 27/30/1 +f 28/31/1 31/140/1 29/32/1 +f 30/33/1 33/141/1 31/34/1 +f 32/35/1 35/142/1 33/36/1 +f 34/37/1 37/143/1 35/38/1 +f 36/39/1 39/144/1 37/40/1 +f 38/41/1 41/145/1 39/42/1 +f 40/43/1 43/146/1 41/44/1 +f 42/45/1 45/147/1 43/46/1 +f 44/47/1 47/148/1 45/48/1 +f 44/47/1 48/53/1 46/49/1 +f 3/51/1 2/149/1 46/52/1 +f 49/54/2 113/150/2 17/55/2 +f 50/57/3 49/54/3 21/56/3 +f 51/59/4 114/151/4 52/60/4 +f 54/62/1 114/151/1 51/59/1 +f 56/64/5 115/152/5 57/65/5 +f 59/67/1 116/153/1 56/64/1 +f 62/70/1 66/74/1 65/73/1 +f 69/77/1 70/78/1 73/81/1 +f 117/154/1 118/155/1 119/156/1 +f 118/155/1 56/157/1 119/156/1 +f 56/157/1 116/158/1 119/156/1 +f 76/84/1 120/159/1 121/160/1 +f 120/159/1 122/161/1 121/160/1 +f 119/156/1 76/84/1 75/83/1 +f 117/154/1 119/156/1 75/83/1 +f 123/162/1 117/154/1 75/83/1 +f 124/163/1 125/164/1 123/162/1 +f 75/83/1 124/163/1 123/162/1 +f 121/160/1 126/165/1 76/84/1 +f 126/165/1 127/166/1 74/82/1 +f 76/84/1 126/165/1 74/82/1 +f 127/166/1 114/167/1 74/82/1 +f 114/167/1 54/168/1 74/82/1 +f 77/85/6 85/93/6 78/86/6 +f 80/88/7 86/169/7 81/89/7 +f 83/91/8 77/85/8 79/87/8 +f 85/93/9 80/88/9 82/90/9 +f 86/94/10 88/97/10 87/95/10 +f 88/97/11 83/91/11 84/92/11 +f 89/98/6 97/106/6 90/99/6 +f 92/101/7 98/170/7 93/102/7 +f 95/104/8 89/98/8 91/100/8 +f 97/106/9 92/101/9 94/103/9 +f 98/107/10 100/110/10 99/108/10 +f 100/110/11 95/104/11 96/105/11 +f 100/113/1 98/171/1 92/111/1 +f 92/111/1 97/172/1 89/112/1 +f 89/112/1 95/173/1 100/113/1 +f 101/114/6 109/122/6 102/115/6 +f 104/117/7 110/174/7 105/118/7 +f 107/120/8 101/114/8 103/116/8 +f 109/122/9 104/117/9 106/119/9 +f 110/123/10 112/126/10 111/124/10 +f 112/126/11 107/120/11 108/121/11 +f 112/129/1 110/175/1 104/127/1 +f 104/127/1 109/176/1 101/128/1 +f 101/128/1 107/177/1 112/129/1 +s 1 +f 128/178/12 3/3/7 129/179/7 +f 130/180/6 16/17/13 131/181/13 +f 132/182/5 28/31/14 133/183/14 +f 129/184/7 48/53/15 134/185/15 +f 131/181/13 12/13/16 135/186/16 +f 133/183/14 26/29/17 136/187/17 +f 134/185/15 44/47/18 137/188/18 +f 135/186/16 10/11/19 138/189/19 +f 136/187/17 24/27/8 139/190/8 +f 137/188/18 42/45/20 140/191/20 +f 138/189/19 8/9/9 141/192/9 +f 139/190/8 22/25/21 142/193/21 +f 140/191/20 40/43/10 143/194/10 +f 141/192/9 6/6/4 144/195/4 +f 142/193/21 20/23/22 145/196/22 +f 143/194/10 38/41/23 146/197/23 +f 147/198/24 34/37/25 148/199/25 +f 144/195/4 7/8/26 149/200/26 +f 145/196/22 18/20/27 150/201/27 +f 146/197/23 36/39/24 147/198/24 +f 148/199/25 32/35/11 151/202/11 +f 149/200/26 1/1/12 128/178/12 +f 150/201/27 19/22/6 130/180/6 +f 151/202/11 30/33/5 132/182/5 +f 31/203/26 152/204/12 29/205/12 +f 14/206/23 153/207/24 15/208/24 +f 2/209/8 154/210/21 46/211/21 +f 33/212/4 155/213/26 31/203/26 +f 17/55/28 156/214/23 14/206/23 +f 5/215/17 157/216/8 2/217/8 +f 35/218/9 158/219/4 33/212/4 +f 4/220/14 159/221/17 5/215/17 +f 37/222/19 160/223/9 35/218/9 +f 41/224/13 161/225/16 39/226/16 +f 9/227/5 162/228/14 4/220/14 +f 39/226/16 163/229/19 37/222/19 +f 43/230/6 164/231/13 41/224/13 +f 25/232/15 50/57/29 23/58/29 +f 11/233/11 165/234/5 9/227/5 +f 27/235/7 166/236/15 25/232/15 +f 13/237/25 167/238/11 11/233/11 +f 29/205/12 168/239/7 27/235/7 +f 15/208/24 169/240/25 13/237/25 +f 46/211/21 170/241/22 47/242/22 +f 171/243/16 121/244/9 172/245/9 +f 121/244/9 122/246/30 67/247/31 +f 123/248/11 125/249/32 60/250/33 +f 173/251/6 126/252/16 171/243/16 +f 71/253/34 59/67/4 174/254/4 +f 60/250/33 175/255/8 176/256/14 +f 177/257/10 117/258/24 178/259/24 +f 69/260/7 179/261/26 67/247/31 +f 178/259/24 123/248/11 180/262/11 +f 175/255/8 64/263/22 181/264/22 +f 182/265/27 64/263/22 63/266/27 +f 183/267/5 182/268/5 63/269/35 +f 177/257/10 56/270/20 118/271/10 +f 184/272/18 69/260/7 72/273/18 +f 45/274/27 170/241/22 185/275/27 +f 185/275/27 43/230/6 45/274/27 +f 184/272/18 71/276/20 186/277/20 +f 127/278/6 52/279/27 114/280/27 +f 54/281/36 65/282/17 74/283/17 +f 75/284/21 65/282/17 66/285/21 +f 124/286/37 66/285/21 61/287/37 +f 124/286/37 60/250/33 125/249/32 +f 120/288/38 67/247/31 122/246/30 +f 76/289/15 68/290/38 120/288/38 +f 119/291/12 70/292/15 76/289/15 +f 71/276/34 119/291/12 116/293/39 +f 83/91/40 187/294/41 77/85/42 +f 77/85/42 188/295/43 85/93/44 +f 86/94/45 189/296/46 88/97/47 +f 80/88/48 190/297/49 86/169/45 +f 83/91/40 189/296/46 191/298/50 +f 85/93/44 192/299/51 80/88/48 +f 191/300/50 189/301/46 192/302/51 +f 128/178/12 1/1/12 3/3/7 +f 130/180/6 19/22/6 16/17/13 +f 132/182/5 30/33/5 28/31/14 +f 129/184/7 3/51/7 48/53/15 +f 131/181/13 16/17/13 12/13/16 +f 133/183/14 28/31/14 26/29/17 +f 134/185/15 48/53/15 44/47/18 +f 135/186/16 12/13/16 10/11/19 +f 136/187/17 26/29/17 24/27/8 +f 137/188/18 44/47/18 42/45/20 +f 138/189/19 10/11/19 8/9/9 +f 139/190/8 24/27/8 22/25/21 +f 140/191/20 42/45/20 40/43/10 +f 141/192/9 8/9/9 6/6/4 +f 142/193/21 22/25/21 20/23/22 +f 143/194/10 40/43/10 38/41/23 +f 147/198/24 36/39/24 34/37/25 +f 144/195/4 6/6/4 7/8/26 +f 145/196/22 20/23/22 18/20/27 +f 146/197/23 38/41/23 36/39/24 +f 148/199/25 34/37/25 32/35/11 +f 149/200/26 7/8/26 1/1/12 +f 150/201/27 18/20/27 19/22/6 +f 151/202/11 32/35/11 30/33/5 +f 31/203/26 155/213/26 152/204/12 +f 14/206/23 156/214/23 153/207/24 +f 2/209/8 157/303/8 154/210/21 +f 33/212/4 158/219/4 155/213/26 +f 17/55/28 113/150/28 156/214/23 +f 5/215/17 159/221/17 157/216/8 +f 35/218/9 160/223/9 158/219/4 +f 4/220/14 162/228/14 159/221/17 +f 37/222/19 163/229/19 160/223/9 +f 41/224/13 164/231/13 161/225/16 +f 9/227/5 165/234/5 162/228/14 +f 39/226/16 161/225/16 163/229/19 +f 43/230/6 193/304/6 164/231/13 +f 25/232/15 166/236/15 50/57/29 +f 11/233/11 167/238/11 165/234/5 +f 27/235/7 168/239/7 166/236/15 +f 13/237/25 169/240/25 167/238/11 +f 29/205/12 152/204/12 168/239/7 +f 15/208/24 153/207/24 169/240/25 +f 46/211/21 154/210/21 170/241/22 +f 171/243/16 126/252/16 121/244/9 +f 179/261/26 172/245/9 67/247/31 +f 172/245/9 121/244/9 67/247/31 +f 60/250/33 176/256/14 180/262/11 +f 180/262/11 123/248/11 60/250/33 +f 173/251/6 127/278/6 126/252/16 +f 174/254/4 186/305/4 71/253/34 +f 71/253/34 116/153/39 59/67/4 +f 60/250/33 62/306/8 175/255/8 +f 177/257/10 118/271/10 117/258/24 +f 69/260/7 194/307/7 179/261/26 +f 178/259/24 117/258/24 123/248/11 +f 175/255/8 62/306/8 64/263/22 +f 182/265/27 181/264/22 64/263/22 +f 63/269/35 54/62/36 55/63/5 +f 55/63/5 183/267/5 63/269/35 +f 177/257/10 115/308/20 56/270/20 +f 184/272/18 194/307/7 69/260/7 +f 45/274/27 47/242/22 170/241/22 +f 185/275/27 193/304/6 43/230/6 +f 184/272/18 72/273/18 71/276/20 +f 127/278/6 173/251/6 52/279/27 +f 54/281/36 63/266/35 65/282/17 +f 75/284/21 74/283/17 65/282/17 +f 124/286/37 75/284/21 66/285/21 +f 124/286/37 61/287/37 60/250/33 +f 120/288/38 68/290/38 67/247/31 +f 76/289/15 70/292/15 68/290/38 +f 119/291/12 73/309/12 70/292/15 +f 71/276/34 73/309/12 119/291/12 +f 83/91/40 191/298/50 187/294/41 +f 77/85/42 187/294/41 188/295/43 +f 86/94/45 190/310/49 189/296/46 +f 80/88/48 192/299/51 190/297/49 +f 83/91/40 88/97/47 189/296/46 +f 85/93/44 188/295/43 192/299/51 +f 189/301/46 190/311/49 192/302/51 +f 192/302/51 188/312/43 187/313/41 +f 187/313/41 191/300/50 192/302/51 +o MagPlate +v -0.239382 2.111670 3.718485 +v -0.239382 2.111670 3.780985 +v 0.239382 2.111670 3.718485 +v -1.590990 2.049170 3.090990 +v -1.948557 2.049170 2.625000 +v -0.239382 2.049170 3.718485 +v 0.239382 2.049170 3.780985 +v 0.239382 2.049170 3.718485 +v 0.239382 2.111670 3.780985 +v -0.239382 2.049170 3.780985 +v 0.582343 2.111670 3.673333 +v 1.125000 2.111670 3.448557 +v 1.590990 2.111670 3.090990 +v 1.948557 2.111670 2.625000 +v 2.173333 2.111670 2.082343 +v 2.250000 2.111670 1.500000 +v 2.173333 2.111670 0.917657 +v 1.948557 2.111670 0.375000 +v 1.590990 2.111670 -0.090990 +v 1.125000 2.111670 -0.448557 +v 0.582343 2.111670 -0.673333 +v 0.000000 2.111670 -0.750000 +v -0.582343 2.111670 -0.673333 +v -1.125000 2.111670 -0.448557 +v -1.590990 2.111670 -0.090991 +v -1.948557 2.111670 0.375000 +v -2.173333 2.111670 0.917658 +v -2.250000 2.111670 1.500000 +v -2.173333 2.111670 2.082343 +v -1.948557 2.111670 2.625000 +v -1.590990 2.111670 3.090990 +v -1.125000 2.111670 3.448557 +v -0.582343 2.111670 3.673333 +v -0.582343 2.049170 3.673333 +v -1.125000 2.049170 3.448557 +v 1.125000 2.049170 3.448557 +v 0.582343 2.049170 3.673333 +v 1.948557 2.049170 2.625000 +v 1.590990 2.049170 3.090990 +v 2.250000 2.049170 1.500000 +v 2.173333 2.049170 2.082343 +v 1.948557 2.049170 0.375000 +v 2.173333 2.049170 0.917657 +v 1.125000 2.049170 -0.448557 +v 1.590990 2.049170 -0.090990 +v 0.000000 2.049170 -0.750000 +v 0.582343 2.049170 -0.673333 +v -1.125000 2.049170 -0.448557 +v -0.582343 2.049170 -0.673333 +v -1.948557 2.049170 0.375000 +v -1.590990 2.049170 -0.090991 +v -2.250000 2.049170 1.500000 +v -2.173333 2.049170 0.917658 +v -2.173333 2.049170 2.082343 +vt 0.148620 0.891768 +vt 0.148620 0.895526 +vt 0.120037 0.891768 +vt 0.308001 0.854042 +vt 0.286653 0.826028 +vt 0.388694 0.891765 +vt 0.022388 0.619403 +vt 0.018657 0.623134 +vt 0.022388 0.623134 +vt 0.018657 0.619403 +vt 0.000000 0.623134 +vt 0.391791 0.615672 +vt 0.388060 0.619403 +vt 0.391791 0.619403 +vt 0.120037 0.895526 +vt 0.099562 0.889054 +vt 0.067164 0.875541 +vt 0.039344 0.854046 +vt 0.017997 0.826032 +vt 0.004577 0.793409 +vt 0.000000 0.758400 +vt 0.004577 0.723392 +vt 0.017997 0.690770 +vt 0.039344 0.662756 +vt 0.067164 0.641260 +vt 0.099562 0.627747 +vt 0.134328 0.623138 +vt 0.169095 0.627747 +vt 0.201493 0.641260 +vt 0.229313 0.662756 +vt 0.250660 0.690770 +vt 0.264080 0.723392 +vt 0.268657 0.758403 +vt 0.264080 0.793409 +vt 0.250660 0.826032 +vt 0.229313 0.854046 +vt 0.201493 0.875541 +vt 0.169095 0.889054 +vt 0.417277 0.891765 +vt 0.417276 0.895522 +vt 0.388694 0.895522 +vt 0.368218 0.889050 +vt 0.335821 0.875538 +vt 0.470149 0.875538 +vt 0.437752 0.889050 +vt 0.519317 0.826028 +vt 0.497970 0.854042 +vt 0.537313 0.758398 +vt 0.532736 0.793405 +vt 0.519317 0.690766 +vt 0.532736 0.723389 +vt 0.470149 0.641256 +vt 0.497970 0.662752 +vt 0.402985 0.623134 +vt 0.437752 0.627744 +vt 0.335821 0.641256 +vt 0.368218 0.627744 +vt 0.286653 0.690766 +vt 0.308001 0.662752 +vt 0.268657 0.758395 +vt 0.273234 0.723389 +vt 0.273234 0.793405 +vt 0.000000 0.619403 +vt 0.388060 0.615672 +vt 0.302239 0.615672 +vt 0.268657 0.619403 +vt 0.302239 0.619403 +vt 0.410448 0.619403 +vt 0.376866 0.623134 +vt 0.410448 0.623134 +vt 0.175373 0.619403 +vt 0.141791 0.623134 +vt 0.175373 0.623134 +vt 0.335821 0.615672 +vt 0.335821 0.619403 +vt 0.033582 0.615672 +vt -0.000000 0.619403 +vt 0.033582 0.619403 +vt 0.208955 0.619403 +vt 0.208955 0.623134 +vt 0.369403 0.615672 +vt 0.369403 0.619403 +vt 0.067164 0.615672 +vt 0.067164 0.619403 +vt 0.242537 0.619403 +vt 0.242537 0.623134 +vt 0.100746 0.615672 +vt 0.100746 0.619403 +vt 0.276119 0.619403 +vt 0.276119 0.623134 +vt 0.041045 0.619403 +vt 0.041045 0.623134 +vt 0.134328 0.615672 +vt 0.134328 0.619403 +vt 0.309702 0.619403 +vt 0.309702 0.623134 +vt 0.074627 0.619403 +vt 0.074627 0.623134 +vt 0.167910 0.615672 +vt 0.167910 0.619403 +vt 0.235075 0.615672 +vt 0.201493 0.619403 +vt 0.235075 0.619403 +vt 0.343284 0.619403 +vt 0.343284 0.623134 +vt 0.108209 0.619403 +vt 0.108209 0.623134 +vt 0.201493 0.615672 +vt 0.268657 0.615672 +vt 0.376866 0.619403 +vt 0.141791 0.619403 +vt 0.000000 0.615672 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.0000 0.7071 +vn -0.8660 0.0000 0.5000 +vn -0.0000 0.0000 -1.0000 +vn 0.2588 0.0000 -0.9659 +vn 0.9659 0.0000 0.2588 +vn 0.8660 0.0000 0.5000 +vn -0.5000 0.0000 0.8660 +vn -0.2588 0.0000 -0.9659 +vn -0.2588 0.0000 0.9659 +vn -0.5000 0.0000 -0.8660 +vn 0.9659 0.0000 -0.2588 +vn -0.7071 0.0000 -0.7071 +vn 0.8660 0.0000 -0.5000 +vn 0.2588 0.0000 0.9659 +vn 0.1305 0.0000 0.9914 +vn -0.8660 0.0000 -0.5000 +vn 0.7071 0.0000 -0.7071 +vn 0.5000 0.0000 0.8660 +vn -0.9659 0.0000 -0.2588 +vn -0.9659 0.0000 0.2588 +vn 0.5000 0.0000 -0.8660 +vn -0.1305 0.0000 0.9914 +vn 0.7071 0.0000 0.7071 +s off +f 195/314/52 196/315/52 197/316/52 +f 198/317/53 199/318/53 200/319/53 +f 197/320/54 201/321/54 202/322/54 +f 203/323/55 204/324/55 201/321/55 +f 196/325/56 200/326/56 204/327/56 +f 196/315/52 203/328/52 197/316/52 +f 197/316/52 205/329/52 206/330/52 +f 206/330/52 207/331/52 197/316/52 +f 207/331/52 208/332/52 197/316/52 +f 208/332/52 209/333/52 197/316/52 +f 209/333/52 210/334/52 197/316/52 +f 210/334/52 211/335/52 197/316/52 +f 211/335/52 212/336/52 197/316/52 +f 212/336/52 213/337/52 197/316/52 +f 213/337/52 214/338/52 197/316/52 +f 214/338/52 215/339/52 197/316/52 +f 215/339/52 216/340/52 197/316/52 +f 197/316/52 216/340/52 195/314/52 +f 216/340/52 217/341/52 195/314/52 +f 217/341/52 218/342/52 195/314/52 +f 218/342/52 219/343/52 195/314/52 +f 219/343/52 220/344/52 195/314/52 +f 220/344/52 221/345/52 195/314/52 +f 221/345/52 222/346/52 195/314/52 +f 222/346/52 223/347/52 195/314/52 +f 223/347/52 224/348/52 195/314/52 +f 224/348/52 225/349/52 195/314/52 +f 225/349/52 226/350/52 195/314/52 +f 226/350/52 227/351/52 195/314/52 +f 202/352/53 201/353/53 204/354/53 +f 200/319/53 228/355/53 229/356/53 +f 202/352/53 204/354/53 200/319/53 +f 230/357/53 231/358/53 202/352/53 +f 232/359/53 233/360/53 202/352/53 +f 233/360/53 230/357/53 202/352/53 +f 234/361/53 235/362/53 202/352/53 +f 235/362/53 232/359/53 202/352/53 +f 236/363/53 237/364/53 202/352/53 +f 237/364/53 234/361/53 202/352/53 +f 238/365/53 239/366/53 202/352/53 +f 239/366/53 236/363/53 202/352/53 +f 240/367/53 241/368/53 202/352/53 +f 241/368/53 238/365/53 202/352/53 +f 242/369/53 243/370/53 200/319/53 +f 243/370/53 240/367/53 200/319/53 +f 200/319/53 240/367/53 202/352/53 +f 244/371/53 245/372/53 200/319/53 +f 245/372/53 242/369/53 200/319/53 +f 246/373/53 247/374/53 200/319/53 +f 247/374/53 244/371/53 200/319/53 +f 199/318/53 248/375/53 200/319/53 +f 248/375/53 246/373/53 200/319/53 +f 229/356/53 198/317/53 200/319/53 +f 197/320/54 203/323/54 201/321/54 +f 203/323/55 196/376/55 204/324/55 +f 196/325/56 195/377/56 200/326/56 +s 1 +f 225/378/57 199/379/58 198/380/57 +f 216/381/59 241/382/60 240/383/59 +f 209/384/61 232/385/62 235/386/61 +f 226/387/63 198/380/57 229/388/63 +f 217/389/64 240/390/59 243/391/64 +f 210/392/54 235/386/61 234/393/54 +f 227/394/65 229/388/63 228/395/65 +f 218/396/66 243/391/64 242/397/66 +f 211/398/67 234/393/54 237/399/67 +f 219/400/68 242/397/66 245/401/68 +f 212/402/69 237/399/67 236/403/69 +f 205/404/70 202/322/71 231/405/70 +f 220/406/72 245/401/68 244/407/72 +f 213/408/73 236/403/69 239/409/73 +f 206/410/74 231/405/70 230/411/74 +f 221/412/75 244/407/72 247/413/75 +f 223/414/76 246/415/56 248/416/76 +f 214/417/77 239/409/73 238/418/77 +f 195/377/78 228/395/65 200/326/78 +f 207/419/79 230/411/74 233/420/79 +f 222/421/56 247/413/75 246/415/56 +f 224/422/58 248/416/76 199/379/58 +f 215/423/60 238/418/77 241/382/60 +f 208/424/62 233/420/79 232/385/62 +f 225/378/57 224/422/58 199/379/58 +f 216/381/59 215/423/60 241/382/60 +f 209/384/61 208/424/62 232/385/62 +f 226/387/63 225/378/57 198/380/57 +f 217/389/64 216/425/59 240/390/59 +f 210/392/54 209/384/61 235/386/61 +f 227/394/65 226/387/63 229/388/63 +f 218/396/66 217/389/64 243/391/64 +f 211/398/67 210/392/54 234/393/54 +f 219/400/68 218/396/66 242/397/66 +f 212/402/69 211/398/67 237/399/67 +f 205/404/70 197/320/71 202/322/71 +f 220/406/72 219/400/68 245/401/68 +f 213/408/73 212/402/69 236/403/69 +f 206/410/74 205/404/70 231/405/70 +f 221/412/75 220/406/72 244/407/72 +f 223/414/76 222/421/56 246/415/56 +f 214/417/77 213/408/73 239/409/73 +f 195/377/78 227/394/65 228/395/65 +f 207/419/79 206/410/74 230/411/74 +f 222/421/56 221/412/75 247/413/75 +f 224/422/58 223/414/76 248/416/76 +f 215/423/60 214/417/77 238/418/77 +f 208/424/62 207/419/79 233/420/79 +o Silencer +v 0.000000 1.736670 16.750000 +v -0.088388 1.773282 11.875000 +v -0.088388 1.773282 16.750000 +v 0.125000 1.861670 16.750000 +v 0.088388 1.773282 11.875000 +v 0.088388 1.773282 16.750000 +v 0.000000 1.986670 16.750000 +v 0.088388 1.950058 11.875000 +v 0.088388 1.950058 16.750000 +v -0.125000 1.861670 16.750000 +v -0.088388 1.950058 11.875000 +v -0.088388 1.950058 16.750000 +v -0.125000 1.861670 11.875000 +v 0.000000 1.736670 11.875000 +v 0.125000 1.861670 11.875000 +v 0.000000 1.986670 11.875000 +v -0.281250 2.348809 16.750000 +v -0.487139 2.142920 16.750000 +v -0.281250 1.374531 16.750000 +v 0.281250 1.374531 16.750000 +v 0.487139 1.580420 16.750000 +v 0.000000 1.299170 16.750000 +v 0.562500 1.861670 16.750000 +v 0.281250 2.348809 16.750000 +v 0.000000 2.424170 16.750000 +v -0.487139 1.580420 16.750000 +v -0.562500 1.861670 16.750000 +v 0.000000 2.424170 11.875000 +v 0.281250 2.348809 11.875000 +v -0.487139 1.580420 11.875000 +v -0.562500 1.861670 11.875000 +v -0.487139 2.142920 11.875000 +v 0.487139 1.580420 11.875000 +v 0.281250 1.374531 11.875000 +v 0.487139 2.142920 16.750000 +v 0.487139 2.142920 11.875000 +v -0.281250 2.348809 11.875000 +v 0.000000 1.299170 11.875000 +v 0.562500 1.861670 11.875000 +v -0.281250 1.374531 11.875000 +vt 0.287313 0.361940 +vt -0.000000 0.354478 +vt 0.287313 0.354478 +vt 0.287313 0.376866 +vt -0.000000 0.369403 +vt 0.287313 0.369403 +vt 0.287313 0.391791 +vt -0.000000 0.384328 +vt 0.287313 0.384328 +vt 0.287313 0.347015 +vt -0.000000 0.339552 +vt 0.287313 0.339552 +vt -0.000000 0.347015 +vt -0.000000 0.361940 +vt -0.000000 0.376866 +vt -0.000000 0.332090 +vt 0.287313 0.332090 +vt 0.026119 0.410448 +vt 0.026119 0.429104 +vt -0.000000 0.421642 +vt 0.026119 0.485075 +vt -0.000000 0.500000 +vt -0.000000 0.492537 +vt 0.026119 0.522388 +vt 0.026119 0.541045 +vt 0.000000 0.533582 +vt 0.000000 0.511194 +vt 0.026119 0.503731 +vt 0.000000 0.555970 +vt 0.026119 0.559702 +vt -0.000000 0.611940 +vt 0.026119 0.597015 +vt 0.026119 0.615672 +vt 0.000000 0.444030 +vt 0.000000 0.436567 +vt 0.000000 0.399254 +vt 0.026119 0.391791 +vt 0.026119 0.466418 +vt -0.000000 0.455224 +vt 0.026119 0.447761 +vt 0.313433 0.615672 +vt 0.313433 0.597015 +vt 0.313433 0.466418 +vt 0.313433 0.447761 +vt 0.313433 0.429104 +vt 0.313433 0.541045 +vt 0.313433 0.522388 +vt 0.026119 0.578358 +vt 0.313433 0.578358 +vt 0.313433 0.410448 +vt 0.313433 0.503731 +vt 0.313433 0.559702 +vt 0.313433 0.391791 +vt 0.313433 0.485075 +vt 0.376007 0.565419 +vt 0.376007 0.598760 +vt 0.347015 0.615672 +vt 0.000000 0.477612 +vt -0.000000 0.589552 +vt -0.000000 0.567164 +vt -0.000000 0.574627 +vt -0.000000 0.391791 +vt -0.000000 0.518657 +vt 0.000000 0.548507 +vt 0.000000 0.604478 +vt 0.000000 0.406716 +vt 0.000000 0.462687 +vt 0.330345 0.611081 +vt 0.318023 0.598760 +vt 0.313433 0.582090 +vt 0.318023 0.565419 +vt 0.330345 0.553098 +vt 0.347015 0.548507 +vt 0.363685 0.553098 +vt 0.380597 0.582090 +vt 0.363685 0.611081 +vn 0.0000 1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.0000 -1.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.5000 0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.8660 0.5000 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.0000 0.0000 -1.0000 +s 1 +f 249/426/80 250/427/81 251/428/81 +f 252/429/82 253/430/83 254/431/83 +f 255/432/84 256/433/85 257/434/85 +f 258/435/86 259/436/87 260/437/87 +f 258/435/86 250/427/81 261/438/86 +f 254/431/83 262/439/80 249/426/80 +f 252/429/82 256/433/85 263/440/82 +f 260/437/87 264/441/84 255/442/84 +f 265/443/88 266/444/88 260/445/88 +f 267/446/88 249/447/88 251/448/88 +f 268/449/88 269/450/88 254/451/88 +f 268/449/88 249/452/88 270/453/88 +f 252/454/88 269/450/88 271/455/88 +f 255/456/88 272/457/88 273/458/88 +f 266/444/88 258/459/88 260/460/88 +f 265/443/88 255/461/88 273/462/88 +f 274/463/88 258/464/88 275/465/88 +f 276/466/80 272/457/89 277/467/89 +f 278/468/90 267/446/91 274/463/90 +f 279/469/82 266/444/92 280/470/92 +f 281/471/93 268/449/94 282/472/94 +f 277/467/89 283/473/95 284/474/95 +f 278/468/90 275/465/82 279/469/82 +f 280/470/92 265/443/96 285/475/96 +f 282/472/94 270/453/84 286/476/84 +f 284/474/95 271/455/86 287/477/86 +f 276/478/80 265/443/96 273/462/80 +f 286/476/84 267/446/91 288/479/91 +f 287/477/86 269/450/93 281/471/93 +f 282/480/97 288/481/97 279/482/97 +f 274/463/88 267/446/88 251/483/88 +f 283/473/88 272/457/88 257/484/88 +f 252/485/88 283/473/88 257/486/88 +f 249/426/80 262/439/80 250/427/81 +f 252/429/82 263/440/82 253/430/83 +f 255/432/84 264/487/84 256/433/85 +f 258/435/86 261/438/86 259/436/87 +f 258/435/86 251/428/81 250/427/81 +f 254/431/83 253/430/83 262/439/80 +f 252/429/82 257/434/85 256/433/85 +f 260/437/87 259/436/87 264/441/84 +f 267/446/88 270/453/88 249/447/88 +f 268/449/88 254/488/88 249/452/88 +f 252/454/88 254/489/88 269/450/88 +f 255/456/88 257/490/88 272/457/88 +f 266/444/88 275/465/88 258/459/88 +f 265/443/88 260/491/88 255/461/88 +f 274/463/88 251/492/88 258/464/88 +f 276/466/80 273/458/80 272/457/89 +f 278/468/90 288/479/91 267/446/91 +f 279/469/82 275/465/82 266/444/92 +f 281/471/93 269/450/93 268/449/94 +f 277/467/89 272/457/89 283/473/95 +f 278/468/90 274/463/90 275/465/82 +f 280/470/92 266/444/92 265/443/96 +f 282/472/94 268/449/94 270/453/84 +f 284/474/95 283/473/95 271/455/86 +f 276/478/80 285/475/96 265/443/96 +f 286/476/84 270/453/84 267/446/91 +f 287/477/86 271/455/86 269/450/93 +f 279/482/97 280/493/97 285/494/97 +f 285/494/97 276/495/97 277/496/97 +f 277/496/97 284/497/97 287/498/97 +f 287/498/97 281/499/97 277/496/97 +f 281/499/97 282/480/97 277/496/97 +f 282/480/97 286/500/97 288/481/97 +f 288/481/97 278/501/97 279/482/97 +f 279/482/97 285/494/97 282/480/97 +f 285/494/97 277/496/97 282/480/97 +f 252/485/88 271/455/88 283/473/88 +o Bolt +v 0.625000 1.745043 -1.673765 +v 0.625000 1.861670 -1.705015 +v 0.625000 1.947047 -1.619638 +v 0.375000 1.947047 -1.619638 +v 0.375000 1.915797 -1.503012 +v 0.375000 1.947047 -1.557138 +v 0.375000 1.745044 -1.503012 +v 0.375000 1.713794 -1.619638 +v 0.375000 1.713794 -1.557138 +v 0.625000 1.947047 -1.557138 +v 0.625000 1.915797 -1.503012 +v 0.625000 1.861670 -1.471762 +v 0.625000 1.799170 -1.471762 +v 0.625000 1.745043 -1.503012 +v 0.625000 1.713793 -1.557138 +v 0.625000 1.713793 -1.619638 +v 0.625000 1.799170 -1.705015 +v 0.625000 1.915797 -1.673765 +v 0.375000 1.915797 -1.673765 +v 0.375000 1.745044 -1.673765 +v 0.343750 1.986670 -3.250000 +v 0.375000 1.869253 -3.279029 +v 0.343750 1.895141 -3.341529 +v 0.343750 1.765699 -3.341529 +v 0.375000 1.791587 -3.279029 +v 0.343750 1.674170 -3.250000 +v 0.343750 1.674170 -1.312500 +v 0.375000 1.791587 -1.283471 +v 0.343750 1.765699 -1.220971 +v 0.375000 1.869253 -1.283471 +v 0.343750 1.895141 -1.220971 +v 0.343750 1.986670 -1.312500 +v 0.375000 1.924170 -1.338388 +v 0.375000 1.736670 -3.224112 +v 0.375000 1.736670 -1.338388 +v 0.375000 1.861670 -1.471762 +v 0.375000 1.799170 -1.705015 +v 0.375000 1.861670 -1.705015 +v 0.375000 1.799170 -1.471762 +v 0.375000 1.924170 -3.224112 +vt 0.595015 0.509462 +vt 0.587553 0.507463 +vt 0.582090 0.512926 +vt 0.597015 0.500000 +vt 0.593284 0.507463 +vt 0.597015 0.503731 +vt 0.593284 0.507463 +vt 0.589552 0.500000 +vt 0.589552 0.503731 +vt 0.582090 0.516925 +vt 0.584089 0.520388 +vt 0.587553 0.522388 +vt 0.591552 0.522388 +vt 0.595015 0.520388 +vt 0.597015 0.516925 +vt 0.597015 0.512926 +vt 0.591552 0.507463 +vt 0.584089 0.509462 +vt 0.593284 0.496269 +vt 0.593284 0.496269 +vt 0.570895 0.507463 +vt 0.567164 0.500000 +vt 0.570895 0.500000 +vt 0.570895 0.492537 +vt 0.567164 0.492537 +vt 0.570895 0.485075 +vt 0.570895 0.369403 +vt 0.567164 0.361940 +vt 0.570895 0.361940 +vt 0.567164 0.354478 +vt 0.570895 0.354478 +vt 0.570895 0.347015 +vt 0.567164 0.623134 +vt 0.570895 0.623134 +vt 0.567164 0.485075 +vt 0.574627 0.567164 +vt 0.582090 0.563433 +vt 0.570895 0.563433 +vt 0.597015 0.529851 +vt 0.582090 0.526119 +vt 0.582090 0.529851 +vt 0.597015 0.555970 +vt 0.582090 0.552239 +vt 0.582090 0.555970 +vt 0.597015 0.544776 +vt 0.582090 0.541045 +vt 0.582090 0.544776 +vt 0.597015 0.533582 +vt 0.582090 0.533582 +vt 0.597015 0.559702 +vt 0.582090 0.559702 +vt 0.597015 0.567164 +vt 0.582090 0.563433 +vt 0.582090 0.567164 +vt 0.597015 0.548507 +vt 0.582090 0.548507 +vt 0.597015 0.537313 +vt 0.582090 0.537313 +vt 0.597015 0.563433 +vt 0.597015 0.526119 +vt 0.582090 0.522388 +vt 0.597015 0.552239 +vt 0.597015 0.541045 +vt 0.582090 0.451493 +vt 0.574627 0.447761 +vt 0.578358 0.447761 +vt 0.567164 0.507463 +vt 0.567164 0.369403 +vt 0.567164 0.347015 +vt 0.578358 0.567164 +vt 0.597015 0.522388 +vt 0.570895 0.451493 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.9078 0.3874 -0.1605 +vn 0.9644 0.1012 -0.2444 +vn 0.9078 0.1605 -0.3874 +vn 0.9078 -0.1605 -0.3874 +vn 0.9644 -0.1012 -0.2444 +vn 0.9078 -0.3874 -0.1605 +vn 0.9078 -0.3874 0.1605 +vn 0.9644 -0.1012 0.2444 +vn 0.9078 -0.1605 0.3874 +vn 0.9644 0.1012 0.2444 +vn 0.9078 0.1605 0.3874 +vn 0.9078 0.3874 0.1605 +vn 0.9644 0.2444 0.1012 +vn 0.9644 -0.2444 -0.1012 +vn 0.9644 -0.2444 0.1012 +vn 0.0000 0.2588 0.9659 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.2588 -0.9659 +vn 0.0000 -0.2588 -0.9659 +vn -0.0000 -0.9659 -0.2588 +vn -0.0000 -0.9659 0.2588 +vn 0.0000 -0.2588 0.9659 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.9659 0.2588 +vn 0.0000 0.9659 -0.2588 +vn -0.0000 -0.7071 -0.7071 +vn -0.0000 -0.7071 0.7071 +vn 0.9644 0.2444 -0.1012 +s off +f 289/502/98 290/503/98 291/504/98 +f 292/505/99 293/506/99 294/507/99 +f 295/508/99 296/509/99 297/510/99 +f 291/504/98 298/511/98 299/512/98 +f 299/512/98 300/513/98 301/514/98 +f 301/514/98 302/515/98 289/502/98 +f 302/515/98 303/516/98 289/502/98 +f 303/516/98 304/517/98 289/502/98 +f 289/502/98 305/518/98 290/503/98 +f 290/503/98 306/519/98 291/504/98 +f 291/504/98 299/512/98 289/502/98 +f 299/512/98 301/514/98 289/502/98 +f 292/505/99 307/520/99 293/506/99 +f 295/508/99 308/521/99 296/509/99 +s 1 +f 309/522/100 310/523/101 311/524/102 +f 312/525/103 310/523/101 313/526/104 +f 313/526/104 314/527/105 312/525/103 +f 315/528/106 316/529/107 317/530/108 +f 317/530/108 318/531/109 319/532/110 +f 318/531/109 320/533/111 319/532/110 +f 321/534/112 309/522/100 320/535/111 +f 322/536/113 315/528/106 314/527/105 +f 318/537/109 323/538/114 321/539/112 +f 300/540/115 293/541/116 324/542/115 +f 290/543/117 325/544/118 326/545/117 +f 304/546/119 297/547/120 296/548/119 +f 301/549/121 324/542/115 327/550/121 +f 306/551/122 326/545/117 307/552/122 +f 298/553/123 292/554/124 294/555/123 +f 289/556/125 296/548/119 308/557/125 +f 302/558/126 327/550/121 295/559/126 +f 291/560/124 307/552/122 292/554/124 +f 299/561/116 294/562/123 293/541/116 +f 305/563/118 308/557/125 325/544/118 +f 303/564/120 295/559/126 297/547/120 +f 322/565/113 321/539/112 323/538/114 +f 310/566/101 322/565/113 313/567/104 +f 309/522/100 328/568/127 310/523/101 +f 312/525/103 311/524/102 310/523/101 +f 313/526/104 322/536/113 314/527/105 +f 315/528/106 323/569/114 316/529/107 +f 317/530/108 316/529/107 318/531/109 +f 318/531/109 321/570/112 320/533/111 +f 321/534/112 328/568/127 309/522/100 +f 322/536/113 323/569/114 315/528/106 +f 318/537/109 316/571/107 323/538/114 +f 300/540/115 299/561/116 293/541/116 +f 290/543/117 305/563/118 325/544/118 +f 304/546/119 303/564/120 297/547/120 +f 301/549/121 300/540/115 324/542/115 +f 306/551/122 290/543/117 326/545/117 +f 298/553/123 291/560/124 292/554/124 +f 289/556/125 304/546/119 296/548/119 +f 302/558/126 301/549/121 327/550/121 +f 291/560/124 306/551/122 307/552/122 +f 299/561/116 298/572/123 294/562/123 +f 305/563/118 289/556/125 308/557/125 +f 303/564/120 302/558/126 295/559/126 +f 322/565/113 328/573/127 321/539/112 +f 310/566/101 328/573/127 322/565/113 +o Trigger +v 0.125000 0.528950 -1.431801 +v 0.125000 0.562727 -1.589303 +v 0.125000 0.600647 -1.534195 +v 0.125000 0.754238 -1.641741 +v -0.125000 0.600647 -1.534195 +v -0.125000 0.562727 -1.589303 +v -0.125000 0.528950 -1.431801 +v -0.125000 0.754238 -1.641741 +v 0.125000 0.754238 -1.750000 +v 0.125000 0.941738 -1.641741 +v 0.125000 0.861670 -1.812500 +v 0.125000 1.111670 -1.562500 +v -0.125000 0.941738 -1.641741 +v -0.125000 0.754238 -1.750000 +v -0.125000 0.861670 -1.812500 +v -0.125000 1.111670 -1.562500 +vt 0.582090 0.358209 +vt 0.578358 0.365672 +vt 0.582090 0.365672 +vt 0.582090 0.376866 +vt 0.597015 0.365672 +vt 0.600746 0.365672 +vt 0.597015 0.358209 +vt 0.597015 0.376866 +vt 0.574627 0.380597 +vt 0.582090 0.391791 +vt 0.582090 0.380597 +vt 0.574627 0.391791 +vt 0.582090 0.410448 +vt 0.582090 0.399254 +vt 0.597015 0.391791 +vt 0.604478 0.380597 +vt 0.597015 0.380597 +vt 0.604478 0.391791 +vt 0.597015 0.399254 +vt 0.597015 0.410448 +vt 0.570895 0.391791 +vt 0.608209 0.391791 +vt 0.582090 0.324627 +vt 0.597015 0.332090 +vt 0.597015 0.324627 +vt 0.582090 0.347015 +vt 0.597015 0.347015 +vt 0.582090 0.332090 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -0.2164 0.9763 +vn 0.0000 -0.4226 0.9063 +vn 0.0000 0.3007 0.9537 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.8192 0.5736 +vn 0.0000 -0.5029 -0.8644 +vn 0.0000 -0.5749 -0.8182 +vn 0.0000 -0.8567 -0.5158 +vn 0.0000 -0.9778 -0.2097 +s off +f 329/574/128 330/575/128 331/576/128 +f 330/575/128 332/577/128 331/576/128 +f 333/578/129 334/579/129 335/580/129 +f 336/581/129 334/579/129 333/578/129 +f 337/582/128 338/583/128 332/584/128 +f 339/585/128 340/586/128 338/587/128 +f 341/588/129 342/589/129 336/590/129 +f 343/591/129 341/592/129 344/593/129 +f 330/575/128 337/582/128 332/577/128 +f 336/581/129 342/589/129 334/579/129 +f 337/582/128 339/594/128 338/583/128 +f 341/588/129 343/595/129 342/589/129 +s 1 +f 341/592/130 340/586/131 344/593/131 +f 336/590/132 338/583/130 341/588/130 +f 333/578/133 332/577/132 336/581/132 +f 335/580/134 331/576/133 333/578/133 +f 339/596/135 342/597/136 343/598/135 +f 342/597/136 330/599/137 334/600/137 +f 335/580/138 330/599/137 329/574/138 +f 341/592/130 338/587/130 340/586/131 +f 336/590/132 332/584/132 338/583/130 +f 333/578/133 331/576/133 332/577/132 +f 335/580/134 329/574/134 331/576/133 +f 339/596/135 337/601/136 342/597/136 +f 342/597/136 337/601/136 330/599/137 +f 335/580/138 334/600/137 330/599/137 +o Gun +v 0.343750 1.299170 2.437500 +v -0.343750 1.299170 -2.062500 +v 0.343750 1.299170 -2.062500 +v 0.125000 2.424170 -0.750000 +v 0.343750 2.049170 -0.750000 +v 0.343750 2.424170 -0.750000 +v -0.343750 2.424170 -0.750000 +v -0.125000 2.049170 -0.750000 +v -0.125000 2.424170 -0.750000 +v 0.125000 2.236670 -0.812500 +v 0.125000 2.424170 -0.812500 +v -0.125000 2.236670 -0.812500 +v -0.125000 2.424170 -0.812500 +v 0.343750 2.299170 -1.187500 +v 0.218750 2.424170 -1.187500 +v 0.343750 2.424170 -1.125000 +v -0.343750 2.424170 -1.125000 +v -0.218750 2.424170 -1.187500 +v -0.343750 2.299170 -1.187500 +v 0.218750 2.424170 -5.375000 +v -0.218750 2.424170 -5.375000 +v 0.343750 2.299170 -5.562500 +v 0.125000 2.049170 -0.750000 +v 0.125000 1.861670 11.875000 +v 0.220971 2.082641 11.875000 +v 0.088388 1.950058 11.875000 +v 0.220971 1.640699 11.875000 +v 0.312500 1.861670 11.875000 +v 0.000000 1.736670 11.875000 +v 0.088388 1.773282 11.875000 +v -0.220971 1.640699 11.875000 +v 0.000000 1.549170 11.875000 +v -0.088388 1.950058 11.875000 +v -0.312500 1.861670 11.875000 +v -0.125000 1.861670 11.875000 +v -0.088388 1.773282 11.875000 +v 0.218750 1.799170 2.250000 +v 0.218750 2.049170 2.062500 +v 0.218750 1.861670 2.363165 +v -0.218750 1.861670 2.363165 +v -0.218750 2.049170 2.437500 +v -0.218750 2.049170 2.062500 +v 0.239382 2.049170 3.750000 +v -0.239382 2.049170 2.437500 +v -0.239382 2.049170 3.750000 +v 0.343750 2.049170 1.625000 +v -0.343750 1.799170 1.625000 +v 0.343750 1.799170 1.625000 +v 0.093750 2.517920 -5.031250 +v 0.156250 2.486670 -5.031250 +v 0.156250 2.424170 -5.031250 +v -0.093750 2.517920 -2.406250 +v -0.156250 2.486670 -2.406250 +v -0.156250 2.424170 -2.406250 +v 0.093750 2.517920 -2.406250 +v -0.093750 2.517920 -5.031250 +v 0.343750 1.299170 -5.562500 +v 0.343750 1.799170 2.437500 +v -0.343750 2.049170 -0.750000 +v -0.343750 2.299170 -5.562500 +v -0.343750 2.049170 1.625000 +v -0.343750 1.299170 2.437500 +v -0.218750 2.486670 -4.093750 +v 0.218750 2.486670 -4.968750 +v 0.218750 2.486670 -4.093750 +v -0.156250 2.549170 -4.093750 +v -0.218750 2.486670 -4.968750 +v -0.218750 2.611670 -4.093750 +v -0.218750 2.799170 -4.968750 +v -0.156250 2.799170 -4.968750 +v -0.156250 2.611670 -4.093750 +v 0.218750 2.611670 -4.093750 +v 0.156250 2.799170 -4.968750 +v 0.156250 2.611670 -4.093750 +v 0.093750 2.549170 -4.968750 +v -0.093750 2.736670 -4.968750 +v 0.093750 2.736670 -4.968750 +v -0.156250 2.549170 -4.968750 +v 0.156250 2.549170 -4.968750 +v 0.156250 2.549170 -4.093750 +v 0.093750 2.861670 -4.468750 +v -0.093750 2.861670 -4.406250 +v 0.093750 2.861670 -4.406250 +v -0.093750 2.674170 -4.468750 +v -0.093750 2.861670 -4.468750 +v 0.000000 2.830420 -4.468750 +v -0.022097 2.821268 -4.468750 +v 0.022097 2.821268 -4.468750 +v 0.093750 2.674170 -4.468750 +v 0.031250 2.799170 -4.468750 +v -0.031250 2.799170 -4.468750 +v -0.022097 2.777073 -4.468750 +v 0.022097 2.777073 -4.468750 +v 0.000000 2.767920 -4.468750 +v 0.000000 2.830420 -4.406250 +v 0.022097 2.821268 -4.406250 +v -0.022097 2.821268 -4.406250 +v -0.031250 2.799170 -4.406250 +v -0.156250 2.665242 -4.343750 +v 0.156250 2.549170 -4.343750 +v 0.156250 2.665242 -4.343750 +v -0.156250 2.678635 -4.406250 +v -0.093750 2.549170 -4.406250 +v -0.156250 2.549170 -4.406250 +v 0.093750 2.549170 -4.406250 +v 0.156250 2.678635 -4.406250 +v 0.156250 2.549170 -4.406250 +v -0.093750 2.678635 -4.406250 +v 0.022097 2.777073 -4.406250 +v 0.093750 2.678635 -4.406250 +v 0.031250 2.799170 -4.406250 +v 0.250000 2.580420 -4.781250 +v 0.250000 2.642920 -4.843750 +v 0.250000 2.705420 -4.781250 +v -0.343750 2.642920 -4.906250 +v -0.343750 2.517920 -4.781250 +v -0.343750 2.642920 -4.656250 +v 0.281250 0.924170 0.812500 +v 0.140625 0.924170 1.056070 +v -0.140625 0.924170 1.056070 +v 0.187500 1.174170 0.812500 +v 0.243570 1.174170 0.671875 +v 0.132583 1.174170 0.679918 +v 0.243570 1.174170 0.953125 +v 0.132583 1.174170 0.945082 +v 0.140625 1.174170 1.056070 +v 0.140625 1.174170 0.568930 +v 0.000000 1.174170 1.000000 +v 0.000000 1.174170 0.625000 +v -0.140625 1.174170 0.568930 +v -0.132583 1.174170 0.679917 +v -0.243570 1.174170 0.671875 +v -0.187500 1.174170 0.812500 +v -0.243570 1.174170 0.953125 +v -0.132583 1.174170 0.945082 +v -0.140625 1.174170 1.056070 +v 0.218750 0.394023 -1.004259 +v 0.218750 0.565917 -0.875000 +v 0.218750 0.565917 -0.812500 +v 0.218750 0.674170 -0.812500 +v 0.218750 0.674170 -0.750000 +v 0.218750 0.424170 -1.125000 +v 0.218750 0.456523 -1.004259 +v -0.156250 1.916588 1.934359 +v -0.156250 2.049170 1.625000 +v -0.156250 1.861670 1.625000 +v 0.156250 2.049170 1.625000 +v 0.156250 1.916588 1.934359 +v 0.156250 1.861670 1.625000 +v -0.156250 2.049170 2.062500 +v 0.156250 2.049170 2.062500 +v -0.218750 0.394023 -1.004259 +v -0.218750 0.424170 -1.125000 +v -0.218750 0.361670 -1.125000 +v -0.218750 0.565917 -0.875000 +v -0.218750 0.565917 -0.812500 +v -0.218750 0.674170 -0.812500 +v 0.281250 1.299170 -0.750000 +v 0.218750 1.236670 -1.937500 +v 0.281250 1.299170 -2.062500 +v 0.218750 0.361670 -1.125000 +v 0.218750 0.424170 -1.562500 +v 0.218750 0.503411 -1.732433 +v 0.218750 0.361670 -1.937500 +v 0.218750 0.674170 -1.812500 +v 0.218750 0.861670 -1.812500 +v 0.218750 1.111670 -1.562500 +v 0.218750 0.861670 -0.812500 +v 0.218750 1.236670 -0.750000 +v 0.218750 1.111670 -1.062500 +v -0.218750 0.424170 -1.562500 +v -0.218750 0.361670 -1.937500 +v -0.218750 0.503411 -1.732433 +v -0.218750 0.674170 -1.812500 +v -0.218750 0.861670 -0.812500 +v -0.218750 0.674170 -0.750000 +v -0.218750 1.236670 -0.750000 +v -0.218750 1.111670 -1.562500 +v -0.218750 1.111670 -1.062500 +v -0.218750 1.236670 -1.937500 +v -0.218750 0.861670 -1.812500 +v -0.281250 1.299170 -0.750000 +v -0.281250 1.299170 -2.062500 +v -0.343750 1.299170 -5.562500 +v 0.156250 2.109449 11.875000 +v -0.220971 2.082641 11.875000 +v -0.156250 2.109449 11.875000 +v 0.093750 2.421949 11.000000 +v 0.156250 2.421949 11.000000 +v 0.156250 2.109449 11.000000 +v -0.093750 2.421949 11.000000 +v 0.093750 2.421949 11.875000 +v 0.170671 2.863656 11.312500 +v -0.170671 2.863656 11.812500 +v -0.159818 2.802105 11.875000 +v -0.093750 2.421949 11.875000 +v -0.031250 2.421949 11.437500 +v 0.015625 2.796949 11.437500 +v 0.031250 2.421949 11.437500 +v -0.015625 2.796949 11.437500 +v 0.015625 2.796949 11.625000 +v -0.015625 2.796949 11.625000 +v -0.031250 2.421949 11.875000 +v 0.031250 2.421949 11.875000 +v 0.088388 1.950058 11.000000 +v 0.000000 1.986670 11.000000 +v 0.000000 1.736670 11.000000 +v 0.000000 2.174170 3.750000 +v -0.022097 2.777073 -4.406250 +v 0.000000 2.767920 -4.406250 +v 0.371209 1.780864 2.702665 +v 0.218750 1.799170 1.625000 +v 0.218750 1.916588 1.934359 +v 0.218750 1.861670 1.625000 +v 0.218750 2.049170 2.437500 +v -0.218750 1.916588 1.934359 +v -0.218750 1.861670 1.625000 +v -0.218750 1.799170 1.625000 +v -0.218750 1.799170 2.250000 +v 0.239382 2.049170 2.437500 +v -0.156250 2.424170 -5.031250 +v -0.156250 2.486670 -5.031250 +v 0.156250 2.424170 -2.406250 +v 0.156250 2.486670 -2.406250 +v -0.343750 1.799170 2.437500 +v 0.218750 2.799170 -4.968750 +v -0.093750 2.549170 -4.968750 +v -0.156250 2.549170 -4.343750 +v 0.250000 2.687115 -4.737056 +v 0.250000 2.642920 -4.718750 +v 0.250000 2.598726 -4.737056 +v 0.250000 2.598726 -4.825444 +v 0.250000 2.687115 -4.825444 +v -0.343750 2.731309 -4.692862 +v -0.343750 2.767920 -4.781250 +v -0.343750 2.731309 -4.869638 +v -0.343750 2.554532 -4.869638 +v -0.343750 2.554532 -4.692862 +v -0.243570 0.924170 0.953125 +v -0.281250 0.924170 0.812500 +v -0.243570 0.924170 0.671875 +v -0.140625 0.924170 0.568930 +v 0.000000 0.924170 0.531250 +v 0.140625 0.924170 0.568930 +v 0.243570 0.924170 0.671875 +v 0.243570 0.924170 0.953125 +v 0.000000 0.924170 1.093750 +v 0.281250 1.174170 0.812500 +v 0.000000 1.174170 1.093750 +v 0.000000 1.174170 0.531250 +v -0.281250 1.174170 0.812500 +v -0.218750 0.456523 -1.004259 +v -0.156250 2.109449 11.000000 +v -0.156250 2.421949 11.000000 +v 0.159818 2.802105 11.875000 +v 0.170671 2.863656 11.812500 +v -0.170671 2.863656 11.312500 +v -0.088388 1.950058 11.000000 +v -0.125000 1.861670 11.000000 +v -0.088388 1.773282 11.000000 +v 0.088388 1.773282 11.000000 +v 0.125000 1.861670 11.000000 +v -0.156250 2.132303 3.750000 +v 0.156250 2.132303 3.750000 +v 0.220971 1.640699 11.000000 +v 0.220971 2.082641 11.000000 +v 0.000000 1.549170 11.000000 +v 0.312500 1.861670 11.000000 +v -0.312500 1.861670 11.000000 +v -0.220971 1.640699 11.000000 +v 0.000000 2.174170 4.062500 +v 0.156250 2.132303 4.062500 +v -0.156250 2.132303 4.062500 +v 0.295753 1.799170 4.062500 +v 0.312500 1.861670 2.363165 +v 0.312500 1.861670 4.062500 +v 0.270633 2.017920 2.427792 +v 0.270633 2.017920 4.062500 +v -0.270633 2.017920 2.437500 +v -0.312500 1.861670 4.062500 +v -0.270633 2.017920 4.062500 +v 0.295753 1.799170 2.250000 +v -0.295753 1.799170 4.062500 +v -0.312500 1.861670 2.363165 +v -0.295753 1.799170 2.250000 +v 0.000000 2.049170 7.625000 +v -0.132583 1.994253 7.625000 +v 0.187500 1.861670 7.625000 +v 0.437500 1.736670 2.812500 +v 0.343750 1.799170 2.812500 +v -0.343750 1.799170 2.812500 +v -0.371209 1.780864 2.702665 +v 0.437500 1.111670 2.812500 +v 0.312500 1.299170 8.000000 +v 0.312500 1.049170 2.812500 +v -0.437500 1.361670 8.000000 +v -0.437500 1.736670 2.812500 +v -0.437500 1.111670 2.812500 +v -0.312500 1.799170 7.875000 +v -0.312500 1.299170 8.000000 +v -0.312500 1.049170 2.812500 +v 0.437500 1.361670 8.000000 +v 0.312500 1.799170 7.875000 +v 0.132583 1.994253 10.812500 +v 0.000000 2.174170 11.000000 +v -0.132583 1.994253 10.812500 +v -0.220971 2.082641 11.000000 +v -0.132583 1.729087 10.812500 +v 0.132583 1.729087 10.812500 +v 0.187500 1.861670 10.812500 +v 0.000000 2.049170 10.812500 +v -0.187500 1.861670 10.812500 +v 0.000000 1.674170 10.812500 +v -0.187500 1.861670 7.625000 +v -0.132583 1.729087 7.625000 +v 0.000000 1.674170 8.000000 +v 0.132583 1.994253 7.625000 +v 0.132583 1.729087 7.625000 +v 0.218750 2.598726 -4.737056 +v 0.218750 2.580420 -4.781250 +v 0.218750 2.687115 -4.737056 +v 0.218750 2.642920 -4.718750 +v 0.218750 2.642920 -4.843750 +v 0.218750 2.687115 -4.825444 +v 0.218750 2.598726 -4.825444 +v 0.218750 2.705420 -4.781250 +v -0.218750 2.709212 -4.847541 +v -0.281250 2.767920 -4.781250 +v -0.218750 2.736670 -4.781250 +v -0.281250 2.554532 -4.869638 +v -0.218750 2.642920 -4.875000 +v -0.218750 2.576629 -4.847541 +v -0.218750 2.576629 -4.714959 +v -0.281250 2.517920 -4.781250 +v -0.218750 2.549170 -4.781250 +v -0.281250 2.731309 -4.692862 +v -0.218750 2.642920 -4.687500 +v -0.218750 2.709212 -4.714959 +v -0.281250 2.731309 -4.869638 +v -0.281250 2.554532 -4.692862 +v -0.281250 2.642920 -4.906250 +v -0.281250 2.642920 -4.656250 +v 0.000000 1.299170 0.625000 +v -0.132583 1.299170 0.679917 +v 0.187500 1.299170 0.812500 +v 0.132583 1.299170 0.679918 +v 0.000000 1.299170 1.000000 +v 0.132583 1.299170 0.945082 +v -0.187500 1.299170 0.812500 +v -0.132583 1.299170 0.945082 +v -0.218750 0.969924 -0.875000 +v 0.218750 0.969924 -0.875000 +v 0.156250 0.799411 -3.472389 +v -0.218750 1.017962 -3.851390 +v 0.218750 1.017962 -3.851390 +v 0.156250 1.706500 -6.971929 +v -0.156250 1.749912 -6.725727 +v 0.156250 1.749912 -6.725727 +v 0.156250 -0.261926 -2.410389 +v -0.093750 -0.394406 -2.622401 +v 0.093750 -0.394406 -2.622401 +v 0.156250 0.572834 -3.366735 +v -0.156250 0.799411 -3.472389 +v 0.093750 1.812155 -7.198505 +v -0.156250 1.706500 -6.971929 +v 0.093750 -0.074426 -2.410389 +v -0.156250 -0.261926 -2.410389 +v 0.218750 0.262663 -3.404819 +v -0.156250 0.572834 -3.366735 +v 0.031250 1.892503 -7.294261 +v -0.093750 1.812155 -7.198505 +v 0.093750 0.152151 -2.304735 +v -0.093750 -0.074426 -2.410389 +v 0.218750 -0.607686 -4.014244 +v -0.218750 0.262663 -3.404819 +v -0.156250 1.100554 -12.294434 +v 0.156250 1.100554 -12.294434 +v -0.218750 0.272674 -2.161101 +v -0.093750 0.152151 -2.304735 +v 0.218750 -0.848001 -4.083153 +v -0.218750 -0.607686 -4.014244 +v 0.218750 0.730171 -12.235770 +v 0.343750 0.730171 -12.110770 +v 0.343750 0.361670 -1.937500 +v 0.218750 0.272674 -2.161101 +v 0.218750 -1.259117 -3.933519 +v -0.218750 -0.848001 -4.083153 +v 0.218750 -0.894829 -12.235770 +v -0.218750 0.730171 -12.235770 +v 0.218750 -1.474552 -3.552739 +v -0.218750 -1.259117 -3.933519 +v 0.218750 -1.445037 -12.118820 +v -0.218750 -0.894829 -12.235770 +v 0.218750 -1.441887 -3.241951 +v -0.218750 -1.474552 -3.552739 +v 0.093750 -1.752219 -11.903729 +v -0.218750 -1.445037 -12.118820 +v 0.156250 -1.289697 -3.043612 +v -0.218750 -1.441887 -3.241951 +v 0.093750 -1.428696 -10.696322 +v -0.093750 -1.752219 -11.903729 +v 0.093750 -1.102197 -3.043612 +v -0.156250 -1.289697 -3.043612 +v 0.218750 0.301005 -7.510611 +v -0.093750 -1.428696 -10.696322 +v 0.093750 -0.897409 -2.900218 +v -0.093750 -1.102197 -3.043612 +v 0.218750 0.585548 -6.749564 +v -0.218750 0.301005 -7.510611 +v 0.218750 2.174170 -5.687500 +v -0.343750 2.174170 -5.562500 +v 0.343750 2.174170 -5.562500 +v 0.156250 -0.803659 -2.737838 +v -0.093750 -0.897409 -2.900218 +v 0.218750 0.795839 -5.964749 +v -0.218750 0.585548 -6.749564 +v 0.218750 2.093290 -5.989352 +v -0.218750 2.174170 -5.687500 +v 0.093750 -0.616159 -2.737838 +v -0.156250 -0.803659 -2.737838 +v -0.218750 0.795839 -5.964749 +v -0.218750 2.093290 -5.989352 +v -0.093750 -0.616159 -2.737838 +v 0.343750 -0.848001 -3.895653 +v 0.343750 -1.071617 -3.746019 +v 0.343750 -0.769829 -12.110770 +v 0.343750 -1.191887 -3.241951 +v 0.343750 -1.164697 -3.168612 +v 0.343750 -1.502219 -12.028729 +v 0.343750 -1.053696 -10.696322 +v 0.343750 -0.977197 -3.168612 +v 0.343750 0.551005 -7.573111 +v 0.343750 -0.772409 -3.025218 +v 0.343750 0.835548 -6.874564 +v 0.343750 -0.741159 -2.862838 +v 0.343750 1.045839 -6.089749 +v 0.343750 2.049170 -5.687500 +v 0.343750 1.968290 -5.926852 +v 0.343750 -0.491159 -2.862838 +v -0.343750 1.045839 -6.089749 +v -0.343750 1.142962 -3.851390 +v 0.343750 1.562412 -6.725727 +v 0.343750 -0.331906 -2.747401 +v 0.343750 1.142962 -3.851390 +v 0.343750 0.799411 -3.222389 +v 0.343750 1.456500 -6.971929 +v 0.343750 -0.199426 -2.535389 +v 0.343750 0.510334 -3.179235 +v 0.343750 1.374655 -7.198505 +v 0.343750 0.050574 -2.535389 +v -0.343750 0.137663 -3.279819 +v 0.343750 0.277151 -2.429735 +v 0.343750 -0.607686 -3.889244 +v 0.343750 0.137663 -3.279819 +v 0.343750 0.397674 -2.161101 +v -0.343750 0.361670 -1.937500 +v 0.343750 1.236670 -1.937500 +v -0.343750 1.236670 -1.937500 +v -0.343750 -1.502219 -12.028729 +v -0.343750 -0.769829 -12.110770 +v 0.343750 -1.224552 -3.552739 +v -0.343750 0.730171 -12.110770 +v -0.343750 -1.053696 -10.696322 +v -0.343750 0.551005 -7.573111 +v -0.343750 0.835548 -6.874564 +v -0.343750 1.374655 -7.198505 +v -0.343750 1.456500 -6.971929 +v -0.343750 1.562412 -6.725727 +v -0.343750 1.968290 -5.926852 +v -0.343750 -0.848001 -3.895653 +v -0.343750 -0.977197 -3.168612 +v -0.343750 -0.607686 -3.889244 +v -0.343750 -0.772409 -3.025218 +v -0.343750 -0.741159 -2.862838 +v -0.343750 -0.491159 -2.862838 +v -0.343750 0.050574 -2.535389 +v -0.343750 0.277151 -2.429735 +v -0.343750 0.510334 -3.179235 +v -0.343750 -0.199426 -2.535389 +v -0.343750 -0.331906 -2.747401 +v -0.343750 0.397674 -2.161101 +v -0.343750 0.799411 -3.222389 +v -0.031250 1.892503 -7.294261 +v -0.343750 2.049170 -5.687500 +v -0.343750 -1.071617 -3.746019 +v -0.343750 -1.191887 -3.241951 +v -0.343750 -1.164697 -3.168612 +v -0.343750 -1.224552 -3.552739 +v 0.000000 1.986670 11.875000 +v 0.156250 2.421949 11.875000 +v -0.156250 2.421949 11.875000 +v 0.232221 2.852803 11.812500 +v 0.221368 2.791252 11.875000 +v -0.221368 2.791252 11.875000 +v -0.232221 2.852803 11.812500 +v -0.232221 2.852803 11.312500 +v 0.232221 2.852803 11.312500 +v 0.371209 1.225947 2.702665 +v -0.371209 1.225947 2.702665 +v -0.437500 1.736670 8.000000 +v 0.437500 1.736670 8.000000 +vt 0.742537 0.847015 +vt 0.701493 0.578358 +vt 0.742537 0.578358 +vt 0.615672 0.432836 +vt 0.630597 0.410448 +vt 0.630597 0.432836 +vt 0.589552 0.432836 +vt 0.604478 0.410448 +vt 0.604478 0.432836 +vt 0.611940 0.421642 +vt 0.611940 0.432836 +vt 0.608209 0.421642 +vt 0.608209 0.708955 +vt 0.619403 0.723881 +vt 0.608209 0.723881 +vt 0.828358 0.992537 +vt 0.839552 0.992537 +vt 0.833955 1.000000 +vt 0.835821 0.421642 +vt 0.839552 0.429104 +vt 0.828358 0.429104 +vt 0.839552 0.742537 +vt 0.839552 0.679105 +vt 0.828358 0.731343 +vt 0.839552 0.697761 +vt 0.839552 0.723881 +vt 0.597015 0.708955 +vt 0.488806 0.466418 +vt 0.500000 0.477612 +vt 0.488806 0.473881 +vt 0.488806 0.458955 +vt 0.500000 0.447761 +vt 0.500000 0.462687 +vt 0.488806 0.436567 +vt 0.488806 0.444030 +vt 0.488806 0.429104 +vt 0.500000 0.417910 +vt 0.500000 0.432836 +vt 0.488806 0.391791 +vt 0.500000 0.402985 +vt 0.488806 0.399254 +vt 0.488806 0.406716 +vt 0.488806 0.414179 +vt 0.764925 0.880597 +vt 0.776119 0.895522 +vt 0.757463 0.884328 +vt 0.757463 0.906716 +vt 0.753731 0.895522 +vt 0.776119 0.895522 +vt 0.664179 0.850746 +vt 0.742537 0.880597 +vt 0.664179 0.880597 +vt 0.787313 0.798507 +vt 0.828358 0.813433 +vt 0.787313 0.813433 +vt 0.630597 0.455224 +vt 0.623134 0.458955 +vt 0.615672 0.436567 +vt 0.604478 0.436567 +vt 0.597015 0.458955 +vt 0.634328 0.238806 +vt 0.636194 0.235075 +vt 0.641791 0.235075 +vt 0.634328 0.414179 +vt 0.636194 0.410448 +vt 0.641791 0.410448 +vt 0.623134 0.410448 +vt 0.634328 0.253731 +vt 0.634328 0.410448 +vt 0.802239 0.369403 +vt 0.742537 0.369403 +vt 0.802239 0.630597 +vt 0.809702 0.656716 +vt 0.787313 0.656716 +vt 0.772388 0.798507 +vt 0.772388 0.847015 +vt 0.634328 0.656716 +vt 0.641791 0.630597 +vt 0.656716 0.656716 +vt 0.641791 0.369403 +vt 0.671642 0.798507 +vt 0.656716 0.798507 +vt 0.701493 0.847015 +vt 0.828358 0.656716 +vt 0.828358 0.798507 +vt 0.514925 0.574627 +vt 0.567164 0.600746 +vt 0.514925 0.600746 +vt 0.488806 0.600746 +vt 0.492537 0.604478 +vt 0.436567 0.600746 +vt 0.488806 0.608209 +vt 0.436567 0.619403 +vt 0.462687 0.597015 +vt 0.410448 0.600746 +vt 0.410448 0.597015 +vt 0.410448 0.544776 +vt 0.462687 0.548507 +vt 0.410448 0.548507 +vt 0.514925 0.608209 +vt 0.552239 0.574627 +vt 0.541045 0.563433 +vt 0.552239 0.563433 +vt 0.462687 0.582090 +vt 0.410448 0.585821 +vt 0.410448 0.582090 +vt 0.410448 0.559702 +vt 0.462687 0.563433 +vt 0.410448 0.563433 +vt 0.507463 0.555970 +vt 0.496269 0.552239 +vt 0.507463 0.552239 +vt 0.410448 0.600746 +vt 0.414179 0.604478 +vt 0.511194 0.563433 +vt 0.541045 0.552239 +vt 0.496269 0.555970 +vt 0.501866 0.557836 +vt 0.500546 0.558382 +vt 0.503185 0.558382 +vt 0.507463 0.567164 +vt 0.503731 0.559702 +vt 0.500000 0.559702 +vt 0.496269 0.567164 +vt 0.500546 0.561021 +vt 0.503185 0.561021 +vt 0.501866 0.561567 +vt 0.496269 0.541045 +vt 0.501866 0.543044 +vt 0.507463 0.541045 +vt 0.503185 0.543590 +vt 0.500546 0.543590 +vt 0.500000 0.544909 +vt 0.473881 0.582090 +vt 0.481343 0.600746 +vt 0.473881 0.600746 +vt 0.470149 0.582090 +vt 0.462687 0.585821 +vt 0.462687 0.582090 +vt 0.462687 0.597015 +vt 0.470149 0.600746 +vt 0.462687 0.600746 +vt 0.470149 0.585821 +vt 0.503185 0.546229 +vt 0.507463 0.552239 +vt 0.503731 0.544909 +vt 0.496269 0.552239 +vt 0.507463 0.567164 +vt 0.511194 0.555970 +vt 0.511194 0.567164 +vt 0.492537 0.555970 +vt 0.496269 0.555970 +vt 0.496269 0.567164 +vt 0.511194 0.589552 +vt 0.514925 0.593284 +vt 0.511194 0.597015 +vt 0.477612 0.552239 +vt 0.470149 0.544776 +vt 0.462687 0.552239 +vt 0.313433 0.531716 +vt 0.321828 0.546258 +vt 0.338619 0.546258 +vt 0.320896 0.447761 +vt 0.324627 0.455224 +vt 0.320896 0.455224 +vt 0.324627 0.440298 +vt 0.320896 0.440298 +vt 0.320896 0.436567 +vt 0.324627 0.432836 +vt 0.324627 0.462687 +vt 0.320896 0.458955 +vt 0.320896 0.425373 +vt 0.320896 0.432836 +vt 0.320896 0.470149 +vt 0.320896 0.462687 +vt 0.324627 0.477612 +vt 0.320896 0.477612 +vt 0.324627 0.485075 +vt 0.320896 0.481343 +vt 0.320896 0.492537 +vt 0.320896 0.485075 +vt 0.324627 0.500000 +vt 0.320896 0.500000 +vt 0.324627 0.507463 +vt 0.320896 0.503731 +vt 0.320896 0.514925 +vt 0.320896 0.507463 +vt 0.541045 0.679105 +vt 0.537313 0.690298 +vt 0.541045 0.694030 +vt 0.537313 0.701493 +vt 0.541045 0.701493 +vt 0.537313 0.671642 +vt 0.537313 0.679105 +vt 0.779851 0.850746 +vt 0.798507 0.843284 +vt 0.798507 0.854478 +vt 0.798507 0.843284 +vt 0.779851 0.835821 +vt 0.798507 0.832090 +vt 0.764925 0.876866 +vt 0.742537 0.880597 +vt 0.764925 0.858209 +vt 0.567164 0.679105 +vt 0.570895 0.671642 +vt 0.567164 0.671642 +vt 0.570895 0.690298 +vt 0.567164 0.694030 +vt 0.570895 0.701493 +vt 0.570895 0.694030 +vt 0.496269 0.537313 +vt 0.429104 0.533582 +vt 0.421642 0.537313 +vt 0.541045 0.671642 +vt 0.537313 0.645522 +vt 0.402581 0.489807 +vt 0.392969 0.485076 +vt 0.414179 0.481343 +vt 0.407109 0.500000 +vt 0.407109 0.511194 +vt 0.414179 0.533582 +vt 0.392969 0.526118 +vt 0.537313 0.712687 +vt 0.541045 0.735075 +vt 0.347015 0.533580 +vt 0.364690 0.526118 +vt 0.570895 0.645522 +vt 0.567164 0.623134 +vt 0.450314 0.485075 +vt 0.440703 0.489807 +vt 0.429104 0.481343 +vt 0.436174 0.500000 +vt 0.570895 0.712687 +vt 0.567164 0.701493 +vt 0.567164 0.735075 +vt 0.496269 0.533580 +vt 0.450314 0.526118 +vt 0.478594 0.526118 +vt 0.429104 0.533580 +vt 0.436174 0.511194 +vt 0.414179 0.533582 +vt 0.347015 0.537313 +vt 0.421642 0.537313 +vt 0.742537 0.328358 +vt 0.802239 0.328358 +vt 0.500000 0.481343 +vt 0.488806 0.481343 +vt 0.500000 0.388060 +vt 0.488806 0.384328 +vt 0.500000 0.384328 +vt 0.369403 0.507463 +vt 0.369403 0.511194 +vt 0.350746 0.511194 +vt 0.451493 0.481343 +vt 0.462687 0.429104 +vt 0.462687 0.481343 +vt 0.488806 0.462687 +vt 0.425373 0.432836 +vt 0.429104 0.429104 +vt 0.451493 0.429104 +vt 0.514925 0.384328 +vt 0.518657 0.365672 +vt 0.518657 0.384328 +vt 0.488806 0.361940 +vt 0.500000 0.365672 +vt 0.488806 0.365672 +vt 0.503731 0.365672 +vt 0.488806 0.384328 +vt 0.526119 0.365672 +vt 0.500000 0.361940 +vt 0.526119 0.361940 +vt 0.529851 0.365672 +vt 0.544776 0.384328 +vt 0.476066 0.374680 +vt 0.481343 0.376866 +vt 0.481343 0.361940 +vt 0.656716 0.865672 +vt 0.500546 0.546229 +vt 0.501866 0.546775 +vt 0.623134 0.708955 +vt 0.597015 0.458955 +vt 0.597015 0.708955 +vt 0.858209 0.421642 +vt 0.858209 0.406716 +vt 0.888060 0.421642 +vt 0.615672 0.410448 +vt 0.589552 0.410448 +vt 0.608209 0.432836 +vt 0.619403 0.708955 +vt 0.828358 0.690298 +vt 0.597015 0.723881 +vt 0.488806 0.451493 +vt 0.488806 0.421642 +vt 0.802239 0.880597 +vt 0.783582 0.888060 +vt 0.802239 0.884328 +vt 0.753731 0.895522 +vt 0.783582 0.902985 +vt 0.802239 0.906716 +vt 0.802239 0.910448 +vt 0.764925 0.910448 +vt 0.742537 0.850746 +vt 0.589552 0.455224 +vt 0.641791 0.253731 +vt 0.636194 0.253731 +vt 0.634328 0.250000 +vt 0.641791 0.429104 +vt 0.636194 0.429104 +vt 0.634328 0.425373 +vt 0.623134 0.253731 +vt 0.809702 0.634328 +vt 0.634328 0.634328 +vt 0.701493 0.369403 +vt 0.671642 0.847015 +vt 0.567164 0.574627 +vt 0.492537 0.608209 +vt 0.511194 0.604478 +vt 0.511194 0.608209 +vt 0.462687 0.600746 +vt 0.462687 0.544776 +vt 0.567164 0.619403 +vt 0.541045 0.574627 +vt 0.432836 0.604478 +vt 0.432836 0.619403 +vt 0.414179 0.619403 +vt 0.410448 0.619403 +vt 0.511194 0.552239 +vt 0.481343 0.582090 +vt 0.470149 0.597015 +vt 0.507463 0.574627 +vt 0.507463 0.555970 +vt 0.496269 0.574627 +vt 0.492537 0.567164 +vt 0.462687 0.574627 +vt 0.462687 0.563433 +vt 0.508556 0.595922 +vt 0.507463 0.593284 +vt 0.508556 0.590645 +vt 0.513832 0.590645 +vt 0.513832 0.595922 +vt 0.464872 0.557516 +vt 0.470149 0.559702 +vt 0.475426 0.557516 +vt 0.475426 0.546962 +vt 0.464872 0.546962 +vt 0.344765 0.540112 +vt 0.347015 0.531716 +vt 0.344765 0.523321 +vt 0.338619 0.517175 +vt 0.330224 0.514925 +vt 0.321828 0.517175 +vt 0.315682 0.523321 +vt 0.315682 0.540112 +vt 0.330224 0.548507 +vt 0.324627 0.447761 +vt 0.324627 0.425373 +vt 0.324627 0.470149 +vt 0.324627 0.492537 +vt 0.324627 0.514925 +vt 0.537313 0.682836 +vt 0.537313 0.694030 +vt 0.772388 0.843284 +vt 0.772388 0.843284 +vt 0.791045 0.858209 +vt 0.791045 0.876866 +vt 0.764925 0.880597 +vt 0.742537 0.854478 +vt 0.764925 0.854478 +vt 0.570895 0.679105 +vt 0.570895 0.682836 +vt 0.496269 0.533582 +vt 0.541045 0.623134 +vt 0.347015 0.533582 +vt 0.350746 0.492537 +vt 0.369403 0.496269 +vt 0.369403 0.492537 +vt 0.485075 0.429104 +vt 0.488806 0.432836 +vt 0.425373 0.462687 +vt 0.514925 0.365672 +vt 0.486620 0.374680 +vt 0.488806 0.369403 +vt 0.486620 0.364126 +vt 0.476066 0.364126 +vt 0.473881 0.369403 +vt 0.660448 0.876866 +vt 0.660448 0.854478 +vt 0.623134 0.458955 +vt 0.776119 0.876866 +vt 0.794776 0.880597 +vt 0.776119 0.880597 +vt 0.552239 0.447761 +vt 0.552239 0.477612 +vt 0.552239 0.432836 +vt 0.552239 0.462687 +vt 0.552239 0.481343 +vt 0.552239 0.402985 +vt 0.552239 0.417910 +vt 0.552239 0.384328 +vt 0.231343 0.279851 +vt 0.212687 0.291045 +vt 0.212687 0.279851 +vt 0.231343 0.291045 +vt 0.212687 0.302239 +vt 0.212687 0.253731 +vt 0.313433 0.257463 +vt 0.212687 0.257463 +vt 0.309702 0.268657 +vt 0.212687 0.268657 +vt 0.309702 0.313433 +vt 0.212687 0.324627 +vt 0.212687 0.313433 +vt 0.649251 0.864581 +vt 0.656716 0.860243 +vt 0.656716 0.864583 +vt 0.639900 0.861656 +vt 0.638062 0.864582 +vt 0.638060 0.863421 +vt 0.212687 0.328358 +vt 0.313433 0.324627 +vt 0.320896 0.328358 +vt 0.656716 0.871099 +vt 0.649259 0.866761 +vt 0.656716 0.866761 +vt 0.639900 0.869687 +vt 0.649252 0.872045 +vt 0.000000 0.291045 +vt 0.000000 0.302239 +vt 0.000000 0.263060 +vt 0.858209 0.350746 +vt 0.854478 0.358209 +vt 0.850746 0.350746 +vt 0.809702 0.350746 +vt 0.809702 0.373134 +vt 0.805970 0.358209 +vt 0.899254 0.399254 +vt 0.906716 0.089552 +vt 0.906716 0.399254 +vt 0.966418 0.089552 +vt 0.988806 0.399254 +vt 0.951493 0.399254 +vt 0.802239 0.350746 +vt 0.809702 0.055970 +vt 0.944030 0.089552 +vt 0.944030 0.399254 +vt 0.861940 0.399254 +vt 0.884328 0.089552 +vt 0.850746 0.055970 +vt 0.567164 0.473881 +vt 0.552239 0.373134 +vt 0.567164 0.384328 +vt 0.552239 0.388060 +vt 0.567164 0.414179 +vt 0.567164 0.444030 +vt 0.567164 0.451493 +vt 0.567164 0.458955 +vt 0.552239 0.492537 +vt 0.567164 0.481343 +vt 0.567164 0.488806 +vt 0.567164 0.391791 +vt 0.567164 0.399254 +vt 0.567164 0.429104 +vt 0.511194 0.291045 +vt 0.320896 0.283582 +vt 0.511194 0.283582 +vt 0.511194 0.298507 +vt 0.320896 0.291045 +vt 0.492537 0.305970 +vt 0.320896 0.313433 +vt 0.320896 0.305970 +vt 0.511194 0.328358 +vt 0.320896 0.320896 +vt 0.511194 0.320896 +vt 0.320896 0.276119 +vt 0.511194 0.276119 +vt 0.320896 0.298507 +vt 0.511194 0.313433 +vt 0.511194 0.335821 +vt 0.320896 0.328358 +vt 0.638060 0.253731 +vt 0.641791 0.585821 +vt 0.638060 0.429104 +vt 0.638060 0.410448 +vt 0.638060 0.585821 +vt 0.634328 0.429104 +vt 0.000000 0.319030 +vt 0.850746 0.373134 +vt 0.850746 0.421642 +vt 0.000000 0.257463 +vt 0.000000 0.250000 +vt 0.492537 0.582090 +vt 0.488806 0.578358 +vt 0.492537 0.578358 +vt 0.481343 0.582090 +vt 0.477612 0.578358 +vt 0.481343 0.578358 +vt 0.473881 0.582090 +vt 0.470149 0.578358 +vt 0.473881 0.578358 +vt 0.466418 0.582090 +vt 0.462687 0.578358 +vt 0.466418 0.578358 +vt 0.488806 0.582090 +vt 0.485075 0.578358 +vt 0.485075 0.582090 +vt 0.477612 0.582090 +vt 0.470149 0.582090 +vt 0.500000 0.597015 +vt 0.503731 0.600746 +vt 0.500000 0.600746 +vt 0.507463 0.597015 +vt 0.511194 0.600746 +vt 0.507463 0.600746 +vt 0.488806 0.597015 +vt 0.492537 0.600746 +vt 0.488806 0.600746 +vt 0.496269 0.597015 +vt 0.496269 0.600746 +vt 0.503731 0.597015 +vt 0.511194 0.597015 +vt 0.514925 0.600746 +vt 0.485075 0.597015 +vt 0.485075 0.600746 +vt 0.492537 0.597015 +vt 0.417910 0.537313 +vt 0.410448 0.541045 +vt 0.410448 0.537313 +vt 0.432836 0.541045 +vt 0.425373 0.537313 +vt 0.432836 0.537313 +vt 0.447761 0.537313 +vt 0.440298 0.541045 +vt 0.440298 0.537313 +vt 0.462687 0.541045 +vt 0.455224 0.537313 +vt 0.462687 0.537313 +vt 0.470149 0.541045 +vt 0.470149 0.537313 +vt 0.417910 0.541045 +vt 0.447761 0.541045 +vt 0.462687 0.544776 +vt 0.410448 0.544776 +vt 0.425373 0.544776 +vt 0.425373 0.541045 +vt 0.440298 0.544776 +vt 0.455224 0.544776 +vt 0.455224 0.541045 +vt 0.417910 0.544776 +vt 0.432836 0.544776 +vt 0.447761 0.544776 +vt 0.320896 0.485075 +vt 0.313433 0.477612 +vt 0.320896 0.477612 +vt 0.320896 0.500000 +vt 0.313433 0.492537 +vt 0.320896 0.492537 +vt 0.320896 0.514925 +vt 0.313433 0.507463 +vt 0.320896 0.507463 +vt 0.320896 0.470149 +vt 0.313433 0.462687 +vt 0.320896 0.462687 +vt 0.313433 0.470149 +vt 0.313433 0.485075 +vt 0.313433 0.500000 +vt 0.313433 0.455224 +vt 0.320896 0.455224 +vt 0.339552 0.440298 +vt 0.339552 0.492537 +vt 0.339552 0.507463 +vt 0.339552 0.470149 +vt 0.339552 0.447761 +vt 0.339552 0.514925 +vt 0.339552 0.477612 +vt 0.339552 0.455224 +vt 0.339552 0.432836 +vt 0.339552 0.485075 +vt 0.339552 0.500000 +vt 0.339552 0.462687 +vt 0.794776 0.854478 +vt 0.776119 0.858209 +vt 0.776119 0.854478 +vt 0.570895 0.656716 +vt 0.597015 0.649254 +vt 0.570895 0.649254 +vt 0.597015 0.656716 +vt 0.570895 0.667910 +vt 0.597015 0.667910 +vt 0.597015 0.675373 +vt 0.570895 0.675373 +vt 0.489199 0.517656 +vt 0.570895 0.686567 +vt 0.597015 0.686567 +vt 0.570895 0.694030 +vt 0.597015 0.694030 +vt 0.597015 0.708955 +vt 0.570895 0.708955 +vt 0.597015 0.738806 +vt 0.570895 0.738806 +vt 0.597015 0.567164 +vt 0.570895 0.589552 +vt 0.597015 0.589552 +vt 0.597015 0.600746 +vt 0.570895 0.600746 +vt 0.597015 0.611940 +vt 0.570895 0.611940 +vt 0.597015 0.623134 +vt 0.570895 0.623134 +vt 0.492734 0.511194 +vt 0.000000 0.324627 +vt -0.000000 0.332090 +vt 0.858209 0.970149 +vt 0.880597 0.996269 +vt 0.854478 0.996269 +vt 0.970149 0.910448 +vt 0.988806 0.925373 +vt 0.970149 0.925373 +vt 0.858209 0.679105 +vt 0.873134 0.694030 +vt 0.861940 0.694030 +vt 0.858209 0.940298 +vt 0.876866 0.955224 +vt 0.858209 0.955224 +vt 0.973881 0.895522 +vt 0.988806 0.910448 +vt 0.861940 0.667910 +vt 0.876866 0.679105 +vt 0.854478 0.921642 +vt 0.876866 0.940298 +vt 0.977612 0.888060 +vt 0.985075 0.895522 +vt 0.861940 0.652985 +vt 0.873134 0.667910 +vt 0.854478 0.858209 +vt 0.880597 0.921642 +vt 0.988806 0.585821 +vt 0.970149 0.585821 +vt 0.880597 0.641791 +vt 0.873134 0.652985 +vt 0.854478 0.843284 +vt 0.880597 0.858209 +vt 0.902985 0.977612 +vt 0.906716 1.000000 +vt 0.891791 0.977612 +vt 0.847015 0.626866 +vt 0.854478 0.641791 +vt 0.854478 0.817164 +vt 0.880597 0.843284 +vt 0.902985 0.880597 +vt 0.929105 0.977612 +vt 0.854478 0.791045 +vt 0.880597 0.817164 +vt 0.902985 0.847015 +vt 0.929105 0.880597 +vt 0.854478 0.772388 +vt 0.880597 0.791045 +vt 0.910448 0.824627 +vt 0.929105 0.847015 +vt 0.858209 0.757463 +vt 0.880597 0.772388 +vt 0.947761 0.899254 +vt 0.958955 0.973881 +vt 0.947761 0.973881 +vt 0.861940 0.746269 +vt 0.876866 0.757463 +vt 0.940298 0.682836 +vt 0.958955 0.899254 +vt 0.861940 0.731343 +vt 0.873134 0.746269 +vt 0.940298 0.634328 +vt 0.966418 0.682836 +vt 0.966418 0.992537 +vt 1.000000 1.000000 +vt 0.958955 1.000000 +vt 0.858209 0.720149 +vt 0.873134 0.731343 +vt 0.940298 0.585821 +vt 0.966418 0.634328 +vt 0.966418 0.973881 +vt 0.992537 0.992537 +vt 0.861940 0.708955 +vt 0.876866 0.720149 +vt 0.940298 0.458955 +vt 0.966418 0.585821 +vt 0.992537 0.973881 +vt 0.873134 0.708955 +vt 0.843284 0.843284 +vt 0.925373 1.000000 +vt 0.839552 0.817164 +vt 0.891791 0.884328 +vt 0.839552 0.772388 +vt 0.854478 0.757463 +vt 0.839552 0.764925 +vt 0.839552 0.757463 +vt 0.679105 0.022388 +vt 0.761194 0.022388 +vt 0.682836 0.048507 +vt 0.858209 0.746269 +vt 0.847015 0.757463 +vt 0.843284 0.746269 +vt 0.492537 0.130597 +vt 0.500000 0.149254 +vt 0.858209 0.731343 +vt 0.843284 0.731343 +vt 0.447761 0.149254 +vt 0.451493 0.167910 +vt 0.847015 0.720149 +vt 0.406716 0.179104 +vt 0.399254 0.160448 +vt 0.402985 0.246269 +vt 0.384328 0.238806 +vt 0.399254 0.235075 +vt 0.858209 0.708955 +vt 0.843284 0.708955 +vt 0.406716 0.179104 +vt 0.399254 0.160448 +vt 0.276119 0.182836 +vt 0.447761 0.208955 +vt 0.858209 0.694030 +vt 0.843284 0.694030 +vt 0.843284 1.000000 +vt 0.843284 0.955224 +vt 0.462687 0.223881 +vt 0.462687 0.201493 +vt 0.847015 0.679105 +vt 0.843284 0.940298 +vt 0.477612 0.197761 +vt 0.477612 0.231343 +vt 0.858209 0.667910 +vt 0.843284 0.667910 +vt 0.891791 0.921642 +vt 0.485075 0.235075 +vt 0.858209 0.652985 +vt 0.843284 0.652985 +vt 0.843284 0.858209 +vt 0.843284 0.921642 +vt 0.779851 0.182836 +vt 0.768657 0.156716 +vt 0.384328 0.250000 +vt 0.376866 0.246269 +vt 0.847015 0.638060 +vt 0.895522 0.764925 +vt 0.936567 0.817164 +vt 0.895522 0.817164 +vt 0.936567 0.824627 +vt 0.895522 0.824627 +vt 0.447761 0.227612 +vt 0.895522 0.847015 +vt 0.902985 0.824627 +vt 0.936567 0.847015 +vt 0.940298 0.884328 +vt 0.768657 0.067164 +vt 0.376866 0.194030 +vt 0.167910 0.194030 +vt 0.276119 0.182836 +vt 0.839552 0.791045 +vt 0.839552 0.802239 +vt 0.276119 0.063433 +vt 0.235075 0.059701 +vt 0.268657 0.052239 +vt 0.227612 0.070896 +vt 0.276119 0.078358 +vt 0.242537 0.123134 +vt 0.216418 0.070896 +vt 0.216418 0.085821 +vt 0.197761 0.119403 +vt 0.235075 0.145522 +vt 0.190299 0.134328 +vt 0.197761 0.104478 +vt 0.208955 0.097015 +vt 0.175373 0.141791 +vt 0.160448 0.190299 +vt 0.160448 0.138060 +vt 0.238806 0.164179 +vt 0.768657 0.067164 +vt 0.761194 0.022388 +vt 0.768657 0.156716 +vt 0.682836 0.048507 +vt 0.500000 0.149254 +vt 0.451493 0.167910 +vt 0.477612 0.197761 +vt 0.462687 0.201493 +vt 0.447761 0.208955 +vt 0.399254 0.235075 +vt 0.276119 0.063433 +vt 0.235075 0.059701 +vt 0.276119 0.078358 +vt 0.227612 0.070896 +vt 0.242537 0.123134 +vt 0.216418 0.070896 +vt 0.216418 0.085821 +vt 0.197761 0.119403 +vt 0.190299 0.134328 +vt 0.235075 0.145522 +vt 0.197761 0.104478 +vt 0.208955 0.097015 +vt 0.175373 0.141791 +vt 0.238806 0.164179 +vt 0.940298 0.977612 +vt 0.779851 0.182836 +vt 0.485075 0.235075 +vt 0.477612 0.231343 +vt 0.462687 0.223881 +vt 0.447761 0.227612 +vt 0.402985 0.246269 +vt 0.384328 0.238806 +vt 0.384328 0.250000 +vt 0.376866 0.246269 +vt 0.929105 0.824627 +vt 0.679105 0.022388 +vt 0.750000 0.003731 +vt 0.492537 0.130597 +vt 0.447761 0.149254 +vt 0.966418 0.458955 +vt 0.977612 0.458955 +vt 0.376866 0.194030 +vt 0.167910 0.194030 +vt 0.876866 0.970149 +vt 0.891791 1.000000 +vt 0.891791 0.955224 +vt 0.891791 0.940298 +vt 0.891791 0.858209 +vt 0.891791 0.843284 +vt 0.895522 0.817164 +vt 0.895522 0.772388 +vt 0.880597 0.757463 +vt 0.895522 0.764925 +vt 0.876866 0.746269 +vt 0.888060 0.757463 +vt 0.876866 0.731343 +vt 0.891791 0.746269 +vt 0.888060 0.720149 +vt 0.876866 0.708955 +vt 0.876866 0.694030 +vt 0.891791 0.708955 +vt 0.888060 0.679105 +vt 0.876866 0.667910 +vt 0.876866 0.652985 +vt 0.891791 0.667910 +vt 0.888060 0.638060 +vt 0.891791 0.652985 +vt 0.888060 0.626866 +vt 0.160448 0.190299 +vt 0.160448 0.138060 +vt 0.235075 0.048507 +vt 0.238806 0.044776 +vt 0.257463 0.041045 +vt 0.895522 0.791045 +vt 0.895522 0.802239 +vt 0.257463 0.041045 +vt 0.238806 0.044776 +vt 0.268657 0.052239 +vt 0.235075 0.048507 +vt 0.339552 0.436567 +vt 0.343284 0.430970 +vt 0.350746 0.440298 +vt 0.350746 0.369403 +vt 0.369403 0.421642 +vt 0.350746 0.421642 +vt 0.429104 0.354478 +vt 0.451493 0.358209 +vt 0.429104 0.358209 +vt 0.369403 0.436567 +vt 0.369403 0.440298 +vt 0.455224 0.354478 +vt 0.485075 0.358209 +vt 0.455224 0.358209 +vt 0.395523 0.417910 +vt 0.391791 0.421642 +vt 0.429104 0.361940 +vt 0.451493 0.358209 +vt 0.451493 0.361940 +vt 0.455224 0.361940 +vt 0.455224 0.358209 +vt 0.485075 0.361940 +vt 0.395523 0.473881 +vt 0.395523 0.444030 +vt 0.485075 0.354478 +vt 0.514925 0.358209 +vt 0.514925 0.354478 +vt 0.485075 0.358209 +vt 0.514925 0.358209 +vt 0.514925 0.361940 +vt 0.451493 0.429104 +vt 0.458955 0.376866 +vt 0.458955 0.429104 +vt 0.436567 0.429104 +vt 0.444030 0.376866 +vt 0.444030 0.429104 +vt 0.481343 0.429104 +vt 0.488806 0.376866 +vt 0.488806 0.429104 +vt 0.466418 0.376866 +vt 0.466418 0.429104 +vt 0.451493 0.376866 +vt 0.429104 0.429104 +vt 0.436567 0.376866 +vt 0.473881 0.429104 +vt 0.481343 0.376866 +vt 0.473881 0.376866 +vt 0.309702 0.272388 +vt 0.231343 0.272388 +vt 0.231343 0.309702 +vt 0.902985 0.414179 +vt 0.899254 0.402985 +vt 0.891791 0.406716 +vt 0.962687 0.421642 +vt 0.958955 0.406716 +vt 0.992537 0.406716 +vt 0.951493 0.402985 +vt 0.947761 0.414179 +vt 0.904851 0.429104 +vt 0.906716 0.055970 +vt 0.951493 0.063433 +vt 0.899254 0.063433 +vt 0.354085 0.517656 +vt 0.350550 0.511194 +vt 0.929105 0.458955 +vt 0.339552 0.425373 +vt 0.638060 0.866761 +vt 0.649252 0.859298 +vt 0.000000 0.313433 +vt 0.000000 0.279851 +vt 0.000000 0.268657 +vt 0.992537 0.421642 +vt 0.794776 0.876866 +vt 0.231343 0.302239 +vt 0.320896 0.253731 +vt 0.899254 0.089552 +vt 0.988806 0.089552 +vt 0.802239 0.048507 +vt 0.861940 0.089552 +vt 0.951493 0.089552 +vt 0.858209 0.048507 +vt 0.567164 0.466418 +vt 0.567164 0.376866 +vt 0.567164 0.406716 +vt 0.567164 0.436567 +vt 0.567164 0.421642 +vt 0.320896 0.335821 +vt 0.634328 0.585821 +vt 0.809702 0.421642 +vt 0.462687 0.582090 +vt 0.514925 0.597015 +vt 0.470149 0.544776 +vt 0.313433 0.514925 +vt 0.339552 0.425373 +vt 0.794776 0.858209 +vt 0.537313 0.738806 +vt 0.570895 0.738806 +vt 0.570895 0.567164 +vt 0.981343 0.888060 +vt 0.921642 0.824627 +vt 0.750000 0.003731 +vt 0.936567 0.764925 +vt 0.895522 0.757463 +vt 0.891791 0.731343 +vt 0.891791 0.694030 +vt 0.369403 0.369403 +vt 0.451493 0.354478 +vt 0.369403 0.425373 +vt 0.395523 0.388060 +vt 0.429104 0.358209 +vt 0.391791 0.440298 +vt 0.429104 0.376866 +vt 0.309702 0.309702 +vt 0.945896 0.429104 +vt 0.944030 0.055970 +vt 0.899254 0.085821 +vt 0.951493 0.085821 +vt 0.638060 0.867922 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.4082 0.4082 -0.8165 +vn -0.4082 0.4082 -0.8165 +vn 0.7071 0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 0.8320 -0.5547 +vn 0.0000 0.3162 0.9487 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.9778 0.2095 +vn 0.0000 0.9923 0.1240 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.9852 0.1716 0.0000 +vn 0.9852 0.1712 -0.0025 +vn -0.9991 0.0416 0.0000 +vn 0.0000 0.5547 0.8321 +vn 0.9991 0.0416 0.0000 +vn 0.9947 0.0000 -0.1030 +vn 0.0000 0.8321 -0.5547 +vn -0.9852 0.1712 -0.0025 +vn 0.9852 0.1716 0.0000 +vn 0.0000 0.8828 -0.4698 +vn 0.0000 0.9846 -0.1748 +vn 0.3827 0.9239 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.0000 0.9998 0.0175 +vn 0.4997 0.8660 0.0171 +vn -0.4997 0.8660 0.0171 +vn 0.9654 -0.2604 0.0171 +vn 0.9950 -0.1001 0.0000 +vn 0.9998 -0.0000 0.0175 +vn 0.8892 0.4576 0.0000 +vn 0.8660 0.4997 0.0171 +vn -0.8817 0.4718 0.0000 +vn -0.9998 -0.0000 0.0175 +vn -0.8660 0.4997 0.0171 +vn 0.0048 0.6652 -0.7466 +vn 0.0000 0.8754 -0.4835 +vn 0.0336 0.3645 -0.9306 +vn 0.0308 0.3429 -0.9389 +vn 0.0000 0.2967 -0.9550 +vn -0.9654 -0.2604 0.0171 +vn -0.9945 -0.1050 0.0000 +vn -0.9659 -0.2588 0.0000 +vn -0.0217 0.6807 -0.7322 +vn -0.1528 0.3440 -0.9265 +vn 0.0000 0.6945 -0.7195 +vn 0.0000 0.9998 0.0207 +vn -0.7070 0.7070 0.0208 +vn 0.9998 -0.0006 0.0198 +vn 0.8932 0.4073 -0.1902 +vn 0.5547 0.8321 0.0000 +vn 0.2903 0.9569 0.0009 +vn -0.2903 0.9569 0.0009 +vn -0.0212 0.9998 0.0000 +vn -0.5547 0.8321 0.0000 +vn 0.4468 -0.8936 0.0431 +vn 0.2311 -0.9718 0.0468 +vn 0.2279 -0.9725 0.0469 +vn -0.8932 0.4073 -0.1902 +vn -0.9817 0.0000 -0.1905 +vn -0.1753 0.9688 0.1753 +vn -0.2311 -0.9718 0.0468 +vn -0.2279 -0.9725 0.0469 +vn 0.9817 0.0000 -0.1905 +vn -0.4468 -0.8936 0.0431 +vn 0.1753 0.9688 0.1753 +vn 0.8321 -0.0000 -0.5547 +vn 0.5883 0.5883 -0.5547 +vn -0.5883 0.5883 -0.5547 +vn -0.8321 -0.0000 -0.5547 +vn -0.5883 -0.5883 -0.5547 +vn 0.0000 -0.8321 -0.5547 +vn 0.5883 -0.5883 -0.5547 +vn 0.8320 0.0000 -0.5547 +vn -0.8320 0.0000 -0.5547 +vn -0.9998 -0.0006 0.0198 +vn -0.8917 -0.4523 0.0158 +vn 0.7070 0.7070 0.0208 +vn 0.8917 -0.4523 0.0158 +vn -0.8507 0.5257 0.0000 +vn 0.8507 0.5257 0.0000 +vn -0.4472 0.8944 0.0000 +vn 0.4472 0.8944 0.0000 +vn 0.0212 0.9998 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.0000 -0.7071 -0.7071 +vn 0.4472 0.6325 -0.6325 +vn 0.4472 -0.6325 -0.6325 +vn 0.4472 -0.0000 -0.8944 +vn 0.4472 -0.6325 0.6325 +vn 0.4472 -0.8944 -0.0000 +vn 0.4472 0.6325 0.6325 +vn 0.4472 -0.0000 0.8944 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.5000 0.0000 0.8660 +vn 0.8660 0.0000 0.5000 +vn -0.8660 0.0000 -0.5000 +vn -0.8660 0.0000 0.5000 +vn -0.5000 0.0000 0.8660 +vn 0.5000 0.0000 -0.8660 +vn -0.5000 0.0000 -0.8660 +vn 0.8660 0.0000 -0.5000 +vn 0.0000 -0.9914 0.1305 +vn 0.0000 -0.8793 0.4762 +vn 0.0000 -0.6302 0.7764 +vn 0.0000 -0.2588 0.9659 +vn 0.0000 0.6950 -0.7190 +vn 0.0000 0.8860 -0.4636 +vn 0.0000 0.9914 -0.1305 +vn 0.0000 0.6412 -0.7674 +vn 0.0000 0.2588 -0.9659 +vn 0.0000 -0.2588 -0.9659 +vn 0.0000 -0.6620 -0.7495 +vn 0.0000 -0.7977 -0.6030 +vn 0.0000 -0.9239 0.3827 +vn 0.0000 -0.3827 0.9239 +vn 0.0000 0.7079 0.7064 +vn 0.0000 0.4245 0.9054 +vn 0.0000 0.9763 0.2164 +vn 0.3617 -0.6800 -0.6378 +vn -0.4283 -0.8116 -0.3974 +vn 0.4283 -0.8116 -0.3974 +vn 0.0000 0.9946 0.1041 +vn 0.0000 0.9528 -0.3037 +vn 0.2707 -0.8502 0.4515 +vn -0.2581 -0.6859 0.6804 +vn 0.2581 -0.6859 0.6804 +vn 0.4210 -0.1018 -0.9013 +vn -0.3617 -0.6800 -0.6378 +vn 0.0000 0.8601 0.5101 +vn 0.2571 -0.1631 0.9525 +vn -0.2939 0.0980 0.9508 +vn 0.2939 0.0980 0.9508 +vn 0.4989 0.3637 -0.7867 +vn -0.4210 -0.1018 -0.9013 +vn 0.0000 0.7660 0.6428 +vn 0.2599 -0.6377 0.7251 +vn -0.2571 -0.1631 0.9525 +vn 0.3812 0.3641 -0.8498 +vn -0.4989 0.3637 -0.7867 +vn 0.0000 0.9877 -0.1564 +vn -0.3656 -0.8719 0.3258 +vn -0.2599 -0.6377 0.7251 +vn 0.4369 -0.0300 -0.8990 +vn -0.3812 0.3641 -0.8498 +vn 0.4071 -0.0353 -0.9127 +vn 0.1358 -0.1326 -0.9818 +vn 0.7071 0.0028 -0.7071 +vn 0.3053 -0.9310 0.1999 +vn 0.3656 -0.8719 0.3258 +vn 0.4786 -0.5779 -0.6610 +vn -0.4369 -0.0300 -0.8990 +vn 0.3801 -0.0892 -0.9206 +vn -0.4071 -0.0353 -0.9127 +vn 0.4872 -0.8552 -0.1771 +vn -0.4786 -0.5779 -0.6610 +vn 0.2373 -0.3758 -0.8958 +vn -0.3801 -0.0892 -0.9206 +vn 0.4942 -0.7969 0.3475 +vn -0.4872 -0.8552 -0.1771 +vn 0.0464 -0.5855 -0.8093 +vn -0.2373 -0.3758 -0.8958 +vn 0.3436 -0.7133 0.6108 +vn -0.4942 -0.7969 0.3475 +vn 0.0000 -0.9283 0.3718 +vn 0.0000 -0.9659 0.2588 +vn 0.2689 -0.2349 0.9341 +vn -0.2532 0.0844 0.9637 +vn 0.2532 0.0844 0.9637 +vn 0.5452 -0.7653 0.3421 +vn 0.2726 -0.7450 0.6088 +vn -0.2689 -0.2349 0.9341 +vn 0.5496 -0.7960 0.2536 +vn -0.5452 -0.7653 0.3421 +vn 0.0000 0.9945 -0.1044 +vn 0.2686 -0.8754 0.4020 +vn -0.2726 -0.7450 0.6088 +vn 0.5439 -0.8274 0.1401 +vn -0.5496 -0.7960 0.2536 +vn 0.0000 0.9404 -0.3400 +vn 0.2611 -0.1819 0.9480 +vn 0.3902 -0.9157 0.0962 +vn -0.5439 -0.8274 0.1401 +vn -0.2611 -0.1819 0.9480 +vn 0.8328 -0.0769 -0.5481 +vn -0.1358 -0.1326 -0.9818 +vn 0.8962 -0.3180 -0.3092 +vn 0.7188 -0.0240 -0.6948 +vn 0.8128 -0.5252 0.2521 +vn 0.6507 -0.7120 0.2640 +vn 0.8077 -0.5485 0.2161 +vn 0.9322 -0.3484 0.0980 +vn 0.9464 -0.2954 0.1306 +vn 0.4576 0.0558 0.8874 +vn 0.5398 -0.2890 0.7906 +vn 0.9747 -0.2052 0.0886 +vn 0.5706 -0.6782 0.4631 +vn 0.9789 -0.1943 0.0638 +vn 0.4954 -0.8429 0.2102 +vn 0.9793 -0.1994 0.0343 +vn 0.7293 0.6317 -0.2627 +vn 0.9364 0.3106 -0.1634 +vn 0.9284 0.3428 -0.1432 +vn 0.4718 0.0643 0.8793 +vn 0.5046 -0.2779 0.8174 +vn -0.9793 -0.1994 0.0343 +vn -0.7249 -0.6853 0.0697 +vn 0.9300 0.3408 -0.1376 +vn 0.4666 -0.6348 0.6159 +vn 0.6337 -0.7027 -0.3235 +vn 0.7008 -0.3789 -0.6044 +vn 0.8048 0.5815 -0.1191 +vn 0.9451 0.3045 -0.1184 +vn 0.4634 -0.7810 0.4187 +vn 0.7152 0.0555 -0.6967 +vn 0.9654 0.2563 -0.0474 +vn 0.8634 0.4934 -0.1052 +vn 0.5213 -0.2174 0.8252 +vn -0.7979 0.3019 -0.5218 +vn 0.8618 0.4995 -0.0885 +vn 0.6057 -0.5861 0.5382 +vn 0.6936 0.2622 -0.6709 +vn 0.7979 0.3019 -0.5218 +vn 0.9003 0.4329 -0.0461 +vn 0.9716 0.2354 -0.0255 +vn 0.6590 0.6590 -0.3626 +vn 0.8518 0.3705 -0.3705 +vn 0.7047 -0.7047 0.0827 +vn 0.0000 0.5257 0.8507 +vn 0.0000 0.8944 0.4472 +vn 0.6830 0.6830 -0.2589 +vn 0.4122 -0.4345 -0.8008 +vn -0.4122 -0.4345 -0.8008 +vn -0.7188 -0.0240 -0.6948 +vn 0.8812 -0.4406 -0.1711 +vn -0.9322 -0.3484 0.0980 +vn -0.9716 0.2354 -0.0255 +vn -0.9464 -0.2954 0.1306 +vn -0.9747 -0.2052 0.0886 +vn -0.9789 -0.1943 0.0638 +vn -0.9654 0.2563 -0.0474 +vn -0.9451 0.3045 -0.1184 +vn -0.9291 0.3446 -0.1345 +vn -0.9266 0.3439 -0.1522 +vn -0.7071 0.0028 -0.7071 +vn -0.9003 0.4329 -0.0461 +vn -0.8618 0.4995 -0.0885 +vn -0.8634 0.4934 -0.1052 +vn -0.8048 0.5815 -0.1191 +vn -0.6914 0.6800 -0.2443 +vn -0.7374 0.6175 -0.2737 +vn -0.9364 0.3106 -0.1634 +vn -0.6590 0.6590 -0.3626 +vn -0.8517 0.3705 -0.3705 +vn -0.0464 -0.5855 -0.8093 +vn -0.8077 -0.5485 0.2161 +vn -0.7385 -0.6513 0.1745 +vn -0.3902 -0.9157 0.0962 +vn -0.6337 -0.7027 -0.3235 +vn -0.7008 -0.3789 -0.6044 +vn -0.7152 0.0555 -0.6967 +vn -0.6936 0.2622 -0.6709 +vn -0.8328 -0.0769 -0.5481 +vn -0.8962 -0.3180 -0.3092 +vn -0.8128 -0.5252 0.2521 +vn -0.3436 -0.7133 0.6108 +vn -0.4576 0.0558 0.8874 +vn -0.5398 -0.2890 0.7906 +vn -0.4954 -0.8429 0.2102 +vn -0.2686 -0.8754 0.4020 +vn -0.4718 0.0643 0.8793 +vn -0.5046 -0.2779 0.8174 +vn -0.4634 -0.7810 0.4187 +vn -0.2707 -0.8502 0.4515 +vn -0.5213 -0.2174 0.8252 +vn -0.7047 -0.7047 0.0827 +vn -0.6057 -0.5861 0.5382 +vn -0.3053 -0.9310 0.1999 +vn -0.8812 -0.4406 -0.1711 +vn -0.9978 -0.0657 0.0000 +vn 0.9962 -0.0872 0.0000 +vn 0.0665 0.3772 0.9238 +vn 0.1604 0.9098 0.3827 +vn 0.1540 0.8732 -0.4625 +vn 0.9848 -0.1736 -0.0000 +vn 0.9848 -0.1737 -0.0000 +vn -0.0665 0.3772 0.9238 +vn -0.0665 0.3769 0.9239 +vn -0.1604 0.9098 0.3827 +vn -0.1499 0.8739 -0.4623 +vn -0.9848 -0.1736 0.0000 +vn -0.9962 -0.0872 -0.0000 +vn 0.1499 0.8739 -0.4623 +vn 0.0079 0.5854 -0.8107 +vn 0.0000 0.5871 -0.8095 +vn -0.1540 0.8732 -0.4625 +vn -0.0079 0.5854 -0.8107 +vn 0.0960 -0.5481 -0.8309 +vn 0.0622 -0.7750 -0.6288 +vn 0.2862 -0.5725 -0.7684 +vn 0.9144 -0.0000 -0.4049 +vn 0.9269 0.0000 -0.3754 +vn -0.9947 0.0000 -0.1030 +vn -0.9269 0.0000 -0.3754 +vn -0.9577 0.0000 -0.2879 +vn -0.0960 -0.5481 -0.8309 +vn -0.2862 -0.5725 -0.7684 +vn -0.0622 -0.7750 -0.6288 +vn 0.0000 -0.9639 -0.2662 +vn 0.0000 0.3604 0.9328 +vn 0.7249 -0.6853 0.0697 +vn -0.1469 0.2439 -0.9586 +vn 0.0000 0.6769 -0.7360 +vn -0.5000 0.8660 0.0000 +vn 0.9659 -0.2588 0.0000 +vn -0.9328 0.3604 0.0000 +vn 0.9328 0.3604 0.0000 +vn 0.7385 -0.6513 0.1745 +vn -0.6507 -0.7120 0.2640 +vn -0.5706 -0.6782 0.4631 +vn -0.4666 -0.6348 0.6159 +vn 0.9978 -0.0657 -0.0000 +vn 0.0665 0.3769 0.9239 +vn -0.9848 -0.1737 -0.0000 +vn -0.0622 -0.7751 -0.6288 +s off +f 345/602/139 346/603/139 347/604/139 +f 348/605/140 349/606/140 350/607/140 +f 351/608/140 352/609/140 353/610/140 +f 354/611/141 348/605/141 355/612/141 +f 356/613/142 353/610/142 352/609/142 +f 354/614/140 357/615/140 356/616/140 +f 358/617/143 359/618/143 360/619/143 +f 361/620/144 362/621/144 363/622/144 +f 358/617/145 364/623/145 359/618/145 +f 365/624/146 363/622/146 362/621/146 +f 366/625/147 365/626/147 364/627/147 +f 356/616/148 367/628/148 354/614/148 +f 368/629/140 369/630/140 370/631/140 +f 368/632/140 371/633/140 372/634/140 +f 373/635/140 371/633/140 374/636/140 +f 373/637/140 375/638/140 376/639/140 +f 377/640/140 378/641/140 379/642/140 +f 379/643/140 375/638/140 380/644/140 +f 381/645/142 382/646/142 383/647/142 +f 384/648/141 385/649/141 386/650/141 +f 387/651/149 388/652/149 389/653/149 +f 390/654/140 391/655/140 392/656/140 +f 360/657/149 359/658/149 355/659/149 +f 351/608/149 353/610/149 357/660/149 +f 355/659/149 362/661/149 357/660/149 +f 393/662/150 394/663/150 395/664/150 +f 396/665/140 397/666/140 398/667/140 +f 399/668/149 400/669/149 396/670/149 +f 366/671/142 347/604/142 401/672/142 +f 358/673/142 350/674/142 349/675/142 +f 358/673/142 349/675/142 347/604/142 +f 349/675/142 392/676/142 347/604/142 +f 345/602/142 392/676/142 402/677/142 +f 351/678/141 363/679/141 403/680/141 +f 404/681/141 346/603/141 363/679/141 +f 363/679/141 346/603/141 403/680/141 +f 403/680/141 391/682/141 405/683/141 +f 406/684/141 391/682/141 346/603/141 +f 390/654/149 403/685/149 405/686/149 +f 407/687/139 408/688/139 409/689/139 +f 407/690/140 409/689/140 410/691/140 +f 411/692/141 412/693/141 413/694/141 +f 414/695/151 412/696/151 415/697/151 +f 416/698/151 417/699/151 418/700/151 +f 408/688/142 416/701/142 409/689/142 +f 419/702/150 420/703/150 421/704/150 +f 422/705/142 415/706/142 410/707/142 +f 418/708/141 423/709/141 424/710/141 +f 425/711/149 426/712/149 427/713/149 +f 423/709/149 410/707/149 424/710/149 +f 408/714/150 411/692/150 423/715/150 +f 428/716/152 421/717/152 420/703/152 +f 429/718/150 425/711/150 430/719/150 +f 431/720/150 429/718/150 430/719/150 +f 425/711/150 432/721/150 430/719/150 +f 425/711/150 433/722/150 434/723/150 +f 429/718/150 435/724/150 428/725/150 +f 436/726/150 428/725/150 435/724/150 +f 433/722/150 437/727/150 434/723/150 +f 433/722/150 428/725/150 438/728/150 +f 426/729/140 439/730/140 427/731/140 +f 440/732/140 427/731/140 439/730/140 +f 441/733/140 426/729/140 442/734/140 +f 443/735/140 444/736/140 445/737/140 +f 446/738/150 447/739/150 448/740/150 +f 449/741/150 450/742/150 451/743/150 +f 452/744/151 446/738/151 443/735/151 +f 453/745/140 454/746/140 455/747/140 +f 427/731/140 455/747/140 454/746/140 +f 426/729/140 452/748/140 442/734/140 +f 452/749/141 429/750/141 428/751/141 +f 425/752/142 427/753/142 454/754/142 +f 456/755/142 457/756/142 458/757/142 +f 459/758/141 460/759/141 461/760/141 +f 462/761/139 463/762/139 464/763/139 +f 465/764/149 466/765/149 467/766/149 +f 468/767/149 465/764/149 469/768/149 +f 468/767/149 469/769/149 470/770/149 +f 466/765/149 471/771/149 467/772/149 +f 472/773/149 470/770/149 469/774/149 +f 471/771/149 473/775/149 467/776/149 +f 473/775/149 474/777/149 475/778/149 +f 474/777/149 476/779/149 475/780/149 +f 476/779/149 477/781/149 475/782/149 +f 477/781/149 478/783/149 479/784/149 +f 478/783/149 480/785/149 479/786/149 +f 480/785/149 472/787/149 479/788/149 +f 481/789/142 482/790/142 483/791/142 +f 483/791/142 484/792/142 485/793/142 +f 481/789/142 486/794/142 487/795/142 +f 488/796/141 489/797/141 490/798/141 +f 491/799/142 492/800/142 493/801/142 +f 494/802/149 385/803/149 495/804/149 +f 496/805/141 497/806/141 498/807/141 +f 499/808/141 496/805/141 500/809/141 +f 500/809/141 501/810/141 499/811/141 +f 502/812/153 503/813/153 504/814/153 +f 505/815/142 506/816/142 486/794/142 +f 507/817/142 506/818/142 508/819/142 +f 509/820/142 507/817/142 508/819/142 +f 510/821/142 508/819/142 503/822/142 +f 510/821/142 503/822/142 511/823/142 +f 485/793/142 512/824/142 513/825/142 +f 511/823/142 513/826/142 514/827/142 +f 498/807/141 515/828/141 516/829/141 +f 515/830/141 517/831/141 516/832/141 +f 517/831/141 518/833/141 516/832/141 +f 519/834/141 520/835/141 521/836/141 +f 521/837/141 522/838/141 523/839/141 +f 522/838/141 524/840/141 525/841/141 +f 525/841/141 516/832/141 518/833/141 +f 524/842/154 526/843/154 527/844/154 +f 366/671/150 528/845/150 404/846/150 +f 369/630/140 529/847/140 370/848/140 +f 530/849/140 377/850/140 531/851/140 +f 532/852/150 533/853/150 534/854/150 +f 535/855/149 536/856/149 532/857/149 +f 537/858/155 532/857/155 536/856/155 +f 538/859/156 539/860/156 540/861/156 +f 541/862/150 542/863/150 543/864/150 +f 544/865/149 545/866/149 542/867/149 +f 546/868/157 541/862/157 547/869/157 +f 548/870/158 546/871/158 547/872/158 +f 543/864/159 545/873/159 548/874/159 +f 549/875/140 550/876/140 551/877/140 +f 389/653/150 552/878/150 387/651/150 +f 553/879/140 452/748/140 554/880/140 +f 452/748/140 454/746/140 554/880/140 +f 365/881/149 359/882/149 364/883/149 +f 402/884/160 555/885/160 345/886/160 +f 345/602/139 406/684/139 346/603/139 +f 348/605/140 367/887/140 349/606/140 +f 351/608/140 403/888/140 352/609/140 +f 354/611/141 367/887/141 348/605/141 +f 356/613/142 357/889/142 353/610/142 +f 354/614/140 355/890/140 357/615/140 +f 358/617/145 366/625/145 364/623/145 +f 365/624/146 404/891/146 363/622/146 +f 366/625/161 404/891/161 365/626/161 +f 356/616/148 352/892/148 367/628/148 +f 368/629/140 372/634/140 369/630/140 +f 368/632/140 374/893/140 371/633/140 +f 373/635/140 376/639/140 371/633/140 +f 373/637/140 380/894/140 375/638/140 +f 377/640/140 530/849/140 378/641/140 +f 379/643/140 378/641/140 375/638/140 +f 381/645/142 556/895/142 557/896/142 +f 556/895/142 558/897/142 557/896/142 +f 557/896/142 382/646/142 381/645/142 +f 382/646/142 559/898/142 383/647/142 +f 560/899/141 561/900/141 562/901/141 +f 562/901/141 563/902/141 560/899/141 +f 563/902/141 384/648/141 386/650/141 +f 560/899/141 563/902/141 386/650/141 +f 387/651/149 564/903/149 388/652/149 +f 390/654/140 405/686/140 391/655/140 +f 348/605/149 350/607/149 355/659/149 +f 350/607/149 360/657/149 355/659/149 +f 362/661/149 361/904/149 357/660/149 +f 361/904/149 351/608/149 357/660/149 +f 355/659/149 359/658/149 362/661/149 +f 395/664/150 565/905/150 393/662/150 +f 565/905/150 566/906/150 400/907/150 +f 393/662/150 565/905/150 400/907/150 +f 398/667/140 567/908/140 396/665/140 +f 567/908/140 568/909/140 399/910/140 +f 396/665/140 567/908/140 399/910/140 +f 399/668/149 393/911/149 400/669/149 +f 366/671/142 358/673/142 347/604/142 +f 358/673/142 360/912/142 350/674/142 +f 349/675/142 390/654/142 392/676/142 +f 345/602/142 347/604/142 392/676/142 +f 351/678/141 361/913/141 363/679/141 +f 404/681/141 528/914/141 346/603/141 +f 403/680/141 346/603/141 391/682/141 +f 406/684/141 569/915/141 391/682/141 +f 390/654/149 349/675/149 403/685/149 +f 407/687/139 411/916/139 408/688/139 +f 415/917/140 412/693/140 410/691/140 +f 412/693/140 407/690/140 410/691/140 +f 409/689/140 416/701/140 424/918/140 +f 416/701/140 418/919/140 424/918/140 +f 409/689/140 424/918/140 410/691/140 +f 411/692/141 407/690/141 412/693/141 +f 414/695/151 413/920/151 412/696/151 +f 416/698/151 570/921/151 417/699/151 +f 408/688/142 570/922/142 416/701/142 +f 419/702/150 571/923/150 420/703/150 +f 422/705/142 414/695/142 415/706/142 +f 418/708/141 417/699/141 423/709/141 +f 425/711/149 429/718/149 426/712/149 +f 423/709/149 422/705/149 410/707/149 +f 411/692/150 413/694/150 422/924/150 +f 413/694/150 414/925/150 422/924/150 +f 417/926/150 570/927/150 423/715/150 +f 570/927/150 408/714/150 423/715/150 +f 411/692/150 422/924/150 423/715/150 +f 428/716/152 433/928/152 421/717/152 +f 431/720/150 435/724/150 429/718/150 +f 425/711/150 434/723/150 432/721/150 +f 436/726/150 438/728/150 428/725/150 +f 433/722/150 438/728/150 437/727/150 +f 440/732/140 455/747/140 427/731/140 +f 441/733/140 439/730/140 426/729/140 +f 443/735/140 572/929/140 444/736/140 +f 446/738/150 452/744/150 447/739/150 +f 449/741/150 454/930/150 450/742/150 +f 443/735/151 445/737/151 454/930/151 +f 445/737/151 450/742/151 454/930/151 +f 454/930/151 452/744/151 443/735/151 +f 453/745/140 554/880/140 454/746/140 +f 428/751/141 420/703/141 571/923/141 +f 571/923/141 447/931/141 428/751/141 +f 447/931/141 452/749/141 428/751/141 +f 452/749/141 426/932/141 429/750/141 +f 454/754/142 449/933/142 433/934/142 +f 449/933/142 419/935/142 433/934/142 +f 419/935/142 421/936/142 433/934/142 +f 433/934/142 425/752/142 454/754/142 +f 458/757/142 573/937/142 574/938/142 +f 574/938/142 575/939/142 456/755/142 +f 456/755/142 576/940/142 457/756/142 +f 457/756/142 577/941/142 458/757/142 +f 458/757/142 574/938/142 456/755/142 +f 461/760/141 578/942/141 579/943/141 +f 579/943/141 580/944/141 459/758/141 +f 459/758/141 581/945/141 460/759/141 +f 460/759/141 582/946/141 461/760/141 +f 461/760/141 579/943/141 459/758/141 +f 464/763/139 583/947/139 584/948/139 +f 584/948/139 585/949/139 586/950/139 +f 586/950/139 587/951/139 588/952/139 +f 588/952/139 589/953/139 462/761/139 +f 462/761/139 590/954/139 463/762/139 +f 463/762/139 591/955/139 464/763/139 +f 464/763/139 584/948/139 462/761/139 +f 584/948/139 586/950/139 462/761/139 +f 586/950/139 588/952/139 462/761/139 +f 465/764/149 592/956/149 466/765/149 +f 468/767/149 592/956/149 465/764/149 +f 472/773/149 593/957/149 470/770/149 +f 471/771/149 594/958/149 473/775/149 +f 473/775/149 594/958/149 474/777/149 +f 476/779/149 595/959/149 477/781/149 +f 477/781/149 595/959/149 478/783/149 +f 480/785/149 593/960/149 472/787/149 +f 481/789/142 487/961/142 482/790/142 +f 483/791/142 482/962/142 484/792/142 +f 481/789/142 505/815/142 486/794/142 +f 488/796/141 494/963/141 489/797/141 +f 491/799/142 495/964/142 492/800/142 +f 491/965/149 489/966/149 494/802/149 +f 494/802/149 386/967/149 385/803/149 +f 385/803/149 559/968/149 495/804/149 +f 559/968/149 382/969/149 495/804/149 +f 495/804/149 491/965/149 494/802/149 +f 496/805/141 596/970/141 497/806/141 +f 499/808/141 596/971/141 496/805/141 +f 500/809/141 520/835/141 501/810/141 +f 502/812/153 513/972/153 503/813/153 +f 505/815/142 508/973/142 506/816/142 +f 510/821/142 509/820/142 508/819/142 +f 485/793/142 484/792/142 512/824/142 +f 511/823/142 503/822/142 513/826/142 +f 498/807/141 497/806/141 515/828/141 +f 519/834/141 501/810/141 520/835/141 +f 521/837/141 524/840/141 522/838/141 +f 525/841/141 524/840/141 516/832/141 +f 524/842/154 521/974/154 526/843/154 +f 366/671/150 401/672/150 528/845/150 +f 534/854/150 597/975/150 535/976/150 +f 597/975/150 598/977/150 535/976/150 +f 535/976/150 532/852/150 534/854/150 +f 535/855/149 540/861/149 536/856/149 +f 536/856/162 599/978/162 600/979/162 +f 600/979/155 537/858/155 536/856/155 +f 540/861/163 535/855/163 601/980/163 +f 601/980/163 538/859/163 540/861/163 +f 541/862/150 544/981/150 542/863/150 +f 544/865/149 546/871/149 545/866/149 +f 546/868/157 544/981/157 541/862/157 +f 548/870/158 545/866/158 546/871/158 +f 543/864/159 542/863/159 545/873/159 +f 550/876/140 602/982/140 603/983/140 +f 603/983/140 604/984/140 550/876/140 +f 604/984/140 551/877/140 550/876/140 +f 551/877/140 605/985/140 606/986/140 +f 606/986/140 549/875/140 551/877/140 +f 607/987/150 552/878/150 389/653/150 +f 552/878/150 608/988/150 387/651/150 +f 553/879/140 442/734/140 452/748/140 +f 365/881/149 362/989/149 359/882/149 +s 1 +f 488/990/164 561/991/165 560/992/164 +f 376/639/139 609/993/153 371/633/153 +f 372/634/142 610/994/145 369/630/145 +f 375/638/154 611/995/139 376/639/139 +f 371/633/153 612/996/142 372/634/142 +f 534/997/166 369/630/145 610/994/145 +f 530/849/146 613/998/141 378/641/141 +f 378/641/141 614/999/154 375/638/154 +f 597/1000/167 530/849/146 531/851/167 +f 608/1001/168 615/1002/169 616/1003/170 +f 552/1004/149 617/1005/171 615/1002/169 +f 618/1006/172 619/1007/173 620/1008/174 +f 620/1008/174 621/1009/175 622/1010/176 +f 623/1011/177 624/1012/178 625/1013/179 +f 383/1014/180 626/1015/181 381/1016/181 +f 621/1017/182 559/1018/183 564/1019/184 +f 627/1020/185 628/1021/186 629/1022/187 +f 629/1023/181 384/1024/188 563/1025/181 +f 623/1026/189 384/1024/188 628/1027/190 +f 615/1002/169 617/1005/171 630/1028/191 +f 631/1029/192 630/1028/191 617/1005/171 +f 622/1010/176 632/1030/193 620/1008/174 +f 633/1031/194 555/1032/195 634/1033/196 +f 635/1034/197 569/1035/198 636/1036/199 +f 637/1037/200 638/1038/201 639/1039/202 +f 640/1040/141 641/1041/203 642/1042/204 +f 641/1043/203 643/1044/205 635/1034/197 +f 639/1039/202 644/1045/206 645/1046/207 +f 633/1047/194 646/1048/142 637/1037/208 +f 644/1045/206 642/1042/209 645/1046/207 +f 647/1049/210 633/1031/194 634/1033/196 +f 612/996/211 648/1050/212 610/994/212 +f 649/1051/161 650/1052/213 651/1053/213 +f 613/998/214 652/1054/215 614/999/215 +f 611/995/216 653/1055/217 609/993/217 +f 612/996/211 653/1056/217 654/1057/218 +f 649/1058/161 648/1059/212 655/1060/161 +f 613/998/214 650/1061/213 656/1062/219 +f 614/999/215 657/1063/216 611/995/216 +f 658/1064/220 650/1065/146 631/1066/192 +f 659/1067/221 656/1068/141 658/1064/220 +f 660/1069/139 653/1070/153 657/1071/139 +f 661/1072/222 654/1073/142 632/1074/193 +f 631/1066/192 655/1075/149 630/1076/191 +f 660/1069/139 652/1077/154 659/1067/221 +f 632/1074/193 653/1070/153 662/1078/223 +f 630/1079/191 648/1080/145 661/1072/222 +f 398/667/141 566/1081/224 565/905/141 +f 395/1082/142 568/1083/225 567/908/142 +f 397/1084/224 400/669/226 566/1081/224 +f 394/1085/225 399/1086/227 568/1083/225 +f 625/1013/179 624/1012/178 658/1087/220 +f 402/1088/228 392/1089/149 569/1035/198 +f 618/1006/172 632/1090/193 662/1091/223 +f 439/1092/139 431/1093/153 430/1094/139 +f 553/1095/145 438/1096/149 436/1097/145 +f 453/1098/146 434/1099/141 437/1100/146 +f 440/1101/154 430/1102/139 432/1103/154 +f 441/1104/153 435/1105/142 431/1093/153 +f 442/1106/142 436/1097/145 435/1105/142 +f 554/1107/149 437/1100/146 438/1096/149 +f 455/1108/141 432/1103/154 434/1099/141 +f 456/1109/139 663/1110/229 664/1111/139 +f 574/1112/140 665/1113/230 666/1114/140 +f 577/1115/231 667/1116/150 668/1117/231 +f 576/1118/232 664/1111/139 669/1119/232 +f 575/1120/229 666/1114/140 663/1110/229 +f 573/1121/230 670/1122/149 665/1113/230 +f 458/1123/149 668/1117/231 670/1124/149 +f 457/1125/150 669/1119/232 667/1116/150 +f 671/1126/233 672/1127/227 673/1128/227 +f 674/1129/234 675/1130/235 676/1131/234 +f 677/1132/236 678/1133/237 679/1134/237 +f 680/1135/238 681/1136/239 682/1137/238 +f 672/1138/227 682/1137/238 673/1139/227 +f 675/1130/235 683/1140/233 671/1126/233 +f 678/1133/237 676/1131/234 679/1134/237 +f 681/1136/239 684/1141/236 677/1132/236 +f 672/1138/149 578/1142/230 680/1135/230 +f 683/1140/231 579/1143/149 672/1127/149 +f 674/1129/232 459/1144/150 685/1145/150 +f 684/1141/229 460/1146/139 678/1133/139 +f 680/1135/230 461/1147/140 686/1148/140 +f 685/1145/150 580/1149/231 683/1140/231 +f 678/1133/139 581/1150/232 674/1129/232 +f 686/1148/140 582/1151/229 684/1141/229 +f 687/1152/150 475/1153/240 688/1154/240 +f 689/1155/142 467/1156/241 690/1157/241 +f 691/1158/140 469/1159/242 692/1160/242 +f 693/1161/141 479/1162/243 694/1163/243 +f 688/1154/240 477/1164/141 693/1161/141 +f 690/1157/241 473/1165/150 687/1152/150 +f 692/1160/242 465/1166/142 689/1155/142 +f 694/1163/243 472/1167/140 691/1168/140 +f 470/770/244 590/1169/245 468/767/245 +f 476/779/246 584/1170/141 595/959/141 +f 478/783/247 464/1171/248 480/785/248 +f 471/771/249 587/1172/150 594/958/150 +f 468/767/245 462/1173/142 592/956/142 +f 480/785/248 591/1174/140 593/960/140 +f 594/958/150 586/1175/250 474/777/250 +f 592/956/142 589/1176/251 466/765/251 +f 593/957/140 463/1177/244 470/770/244 +f 474/777/250 585/1178/246 476/779/246 +f 595/959/141 583/1179/247 478/783/247 +f 466/765/251 588/1180/249 471/771/249 +f 498/807/252 481/789/253 496/805/253 +f 481/789/253 500/809/254 496/805/253 +f 500/809/254 485/793/255 520/835/255 +f 488/990/164 386/967/256 494/802/256 +f 558/1181/165 492/1182/164 557/1183/164 +f 382/969/256 492/1182/164 495/804/256 +f 596/1184/257 486/1185/258 497/1186/258 +f 487/1187/257 499/1188/259 482/1189/259 +f 484/1190/260 499/1188/259 501/1191/260 +f 521/836/140 485/793/255 513/825/140 +f 523/839/141 695/1192/141 521/837/141 +f 519/1193/261 484/1190/260 501/1191/260 +f 512/1194/261 695/1195/262 696/1196/262 +f 514/1197/263 695/1195/262 523/1198/263 +f 511/1199/264 523/1198/139 522/1200/264 +f 511/1201/264 525/1202/265 510/1203/265 +f 509/1204/140 525/1202/265 518/1205/140 +f 507/1206/266 518/1205/267 517/1207/266 +f 506/1208/268 517/1207/266 515/1209/268 +f 486/1185/258 515/1209/268 497/1186/258 +f 516/829/139 505/815/252 498/807/252 +f 519/1210/141 521/837/141 695/1192/141 +f 658/1211/220 627/1020/185 659/1212/221 +f 697/1213/269 698/1214/270 699/1215/271 +f 700/1216/272 701/1217/273 702/1218/273 +f 703/1219/274 704/1220/275 705/1221/276 +f 706/1222/277 707/1223/278 697/1224/269 +f 708/1225/279 709/1226/272 700/1216/272 +f 710/1227/280 711/1228/281 703/1219/282 +f 712/1229/283 713/1230/284 706/1222/277 +f 714/1231/285 715/1232/279 708/1225/279 +f 716/1233/286 717/1234/287 710/1227/280 +f 718/1235/288 719/1236/289 712/1229/283 +f 720/1237/290 714/1231/290 721/1238/290 +f 716/1233/286 722/1239/291 723/1240/292 +f 724/1241/293 725/1242/294 718/1235/288 +f 726/1243/295 721/1244/296 727/1245/297 +f 728/1246/298 722/1239/291 729/1247/299 +f 730/1248/300 731/1249/301 724/1241/293 +f 732/1250/302 733/1251/303 726/1243/295 +f 734/1252/304 735/1253/305 730/1248/300 +f 736/1254/306 737/1255/307 732/1250/302 +f 738/1256/308 739/1257/309 734/1252/304 +f 740/1258/310 741/1259/311 736/1254/306 +f 742/1260/312 743/1261/313 738/1256/308 +f 744/1262/314 745/1263/315 740/1264/315 +f 746/1265/316 747/1266/317 742/1260/318 +f 748/1267/319 749/1268/314 744/1262/314 +f 750/1269/320 751/1270/321 746/1265/316 +f 752/1271/322 753/1272/323 748/1267/319 +f 754/1273/324 755/1274/149 756/1275/149 +f 757/1276/325 758/1277/326 750/1269/320 +f 759/1278/327 760/1279/328 752/1271/322 +f 761/1280/329 762/1281/324 754/1273/324 +f 763/1282/330 764/1283/281 757/1276/282 +f 699/1284/331 765/1285/332 759/1278/327 +f 702/1218/273 766/1286/329 761/1280/329 +f 705/1221/276 767/1287/333 763/1282/330 +f 718/1235/288 768/1288/334 724/1241/293 +f 721/1244/296 733/1251/303 720/1289/335 +f 730/1248/300 768/1288/334 769/1290/336 +f 726/1243/295 770/1291/337 732/1250/302 +f 738/1256/308 734/1252/304 771/1292/338 +f 742/1293/312 771/1294/338 772/1295/339 +f 744/1296/340 773/1297/341 774/1298/342 +f 746/1299/316 772/1300/343 775/1301/344 +f 748/1302/319 744/1296/340 776/1303/345 +f 750/1304/320 775/1301/344 777/1305/346 +f 752/1306/322 748/1302/319 778/1307/347 +f 750/1304/320 779/1308/348 757/1276/325 +f 752/1306/322 780/1309/349 759/1310/327 +f 761/1311/350 781/1312/351 782/1313/352 +f 763/1314/330 779/1308/353 783/1315/354 +f 784/1316/355 765/1317/332 785/1318/356 +f 786/1319/357 761/1311/350 782/1313/352 +f 705/1320/276 783/1315/354 787/1321/358 +f 697/1213/269 788/1322/359 789/1323/360 +f 700/1324/361 786/1319/357 790/1325/362 +f 705/1320/276 791/1326/363 703/1219/274 +f 792/1327/364 706/1222/277 789/1323/360 +f 700/1324/361 793/1328/365 708/1329/366 +f 710/1330/280 791/1326/353 794/1331/367 +f 719/1236/289 795/1332/368 713/1230/284 +f 708/1329/366 793/1328/365 714/1333/369 +f 716/1334/286 794/1331/367 796/1335/370 +f 797/1336/371 712/1229/283 798/1337/372 +f 721/1338/373 714/1333/369 727/1339/374 +f 754/1340/375 756/1341/376 781/1312/351 +f 729/1247/299 799/1342/377 728/1246/298 +f 800/1343/140 801/1344/378 802/1345/378 +f 802/1345/378 347/1346/379 346/1347/379 +f 727/1339/374 714/1333/369 793/1328/365 +f 761/1311/350 786/1319/357 702/1348/380 +f 736/1254/306 773/1349/381 740/1350/310 +f 741/1259/311 803/1351/382 737/1255/307 +f 803/1351/382 804/1352/383 737/1255/307 +f 770/1353/142 727/1339/374 773/1297/341 +f 697/1224/269 789/1323/360 706/1222/277 +f 712/1229/283 797/1336/371 718/1235/288 +f 778/1307/347 748/1302/319 776/1303/345 +f 773/1297/341 727/1339/374 774/1298/342 +f 727/1339/374 776/1303/345 774/1298/342 +f 778/1307/347 776/1303/345 793/1328/365 +f 793/1328/365 790/1325/362 778/1307/347 +f 786/1319/357 778/1307/347 790/1325/362 +f 786/1319/357 782/1313/352 780/1309/349 +f 756/1341/376 401/1354/142 781/1312/351 +f 401/1354/142 782/1313/352 781/1312/351 +f 401/1354/142 347/1355/142 788/1356/142 +f 730/1248/300 769/1290/336 734/1252/304 +f 771/1292/338 734/1252/304 805/1357/384 +f 734/1252/304 769/1290/336 805/1358/384 +f 768/1359/142 775/1360/142 769/1361/142 +f 777/1362/142 797/1363/142 798/1364/142 +f 779/1365/142 777/1362/142 783/1366/142 +f 777/1362/142 798/1364/142 783/1366/142 +f 794/1367/142 792/1368/142 796/1369/142 +f 791/1370/142 787/1371/142 794/1367/142 +f 783/1366/142 798/1364/142 787/1371/142 +f 794/1367/142 787/1371/142 798/1364/142 +f 798/1364/142 792/1368/142 794/1367/142 +f 799/1372/142 796/1369/142 792/1368/142 +f 799/1372/142 801/1373/142 728/1374/142 +f 799/1372/142 789/1375/142 347/1355/142 +f 788/1356/142 347/1355/142 789/1375/142 +f 792/1368/142 789/1375/142 799/1372/142 +f 788/1356/142 780/1309/349 401/1354/142 +f 776/1303/345 744/1296/340 774/1298/342 +f 804/1376/141 803/1377/385 806/1378/386 +f 803/1377/385 807/1379/387 806/1378/386 +f 808/1380/388 806/1378/386 807/1379/387 +f 809/1381/389 810/1382/390 808/1380/388 +f 810/1382/390 809/1381/389 811/1383/391 +f 812/1384/392 809/1381/389 784/1316/355 +f 812/1384/392 784/1316/355 813/1385/393 +f 814/1386/141 815/1387/141 816/1388/141 +f 816/1388/141 817/1389/141 795/1390/141 +f 818/1391/141 819/1392/141 817/1389/141 +f 817/1389/141 819/1392/141 795/1390/141 +f 820/1393/141 821/1394/141 822/1395/141 +f 823/1396/141 820/1393/141 824/1397/141 +f 819/1392/141 824/1397/141 795/1390/141 +f 820/1393/141 795/1390/141 824/1397/141 +f 795/1390/141 820/1393/141 822/1395/141 +f 825/1398/141 822/1395/141 821/1394/141 +f 822/1395/141 825/1398/141 826/1399/141 +f 806/1400/394 720/1289/335 733/1251/303 +f 720/1401/395 806/1378/386 827/1402/396 +f 806/1378/386 810/1382/390 827/1402/396 +f 827/1402/396 810/1382/390 715/1403/397 +f 810/1382/390 709/1404/398 715/1403/397 +f 709/1404/398 812/1384/392 701/1405/399 +f 701/1405/399 813/1385/393 766/1406/400 +f 828/1407/401 766/1406/400 813/1385/393 +f 762/1408/402 828/1407/401 755/1409/403 +f 804/1352/383 733/1251/303 737/1255/307 +f 736/1254/306 732/1250/302 773/1349/381 +f 732/1250/302 770/1291/337 773/1349/381 +f 741/1259/311 745/1410/404 803/1351/382 +f 749/1411/405 803/1377/385 745/1412/406 +f 807/1379/387 749/1411/405 808/1380/388 +f 749/1411/405 753/1413/323 808/1380/388 +f 808/1380/388 753/1413/323 809/1381/389 +f 753/1413/323 760/1414/328 809/1381/389 +f 784/1316/355 760/1414/328 765/1317/332 +f 698/1415/407 785/1416/356 765/1285/332 +f 528/1417/141 755/1409/403 828/1407/401 +f 813/1385/393 528/1417/141 828/1407/401 +f 785/1318/141 528/1417/141 784/1316/355 +f 528/1417/141 785/1318/141 346/1418/141 +f 707/1419/278 785/1420/408 698/1214/270 +f 713/1230/284 826/1421/409 707/1223/278 +f 826/1421/409 713/1230/284 822/1422/410 +f 712/1229/283 706/1222/277 798/1337/372 +f 795/1332/368 719/1236/289 816/1423/411 +f 719/1236/289 725/1242/294 816/1423/411 +f 814/1424/412 725/1242/294 731/1249/301 +f 735/1253/305 814/1424/412 731/1249/301 +f 739/1257/309 829/1425/413 735/1253/305 +f 739/1257/309 743/1261/313 830/1426/414 +f 747/1427/415 830/1428/414 743/1261/313 +f 751/1429/321 831/1430/416 747/1266/317 +f 758/1431/326 815/1432/417 751/1429/321 +f 818/1433/418 758/1431/326 764/1283/419 +f 767/1434/333 818/1433/420 764/1283/281 +f 704/1435/275 819/1436/421 767/1434/333 +f 823/1437/422 704/1435/275 711/1228/423 +f 717/1438/287 823/1437/420 711/1228/281 +f 723/1439/292 820/1440/424 717/1438/287 +f 825/1441/425 821/1442/426 722/1239/291 +f 722/1239/291 800/1443/427 825/1441/425 +f 802/1444/141 825/1398/141 800/1445/141 +f 825/1398/141 346/1418/141 826/1399/141 +f 785/1318/141 826/1399/141 346/1418/141 +f 772/1446/142 771/1447/142 775/1360/142 +f 775/1360/142 771/1447/142 769/1361/142 +f 771/1447/142 805/1448/142 769/1361/142 +f 830/1426/414 832/1449/428 739/1257/309 +f 829/1425/413 739/1257/309 832/1450/428 +f 832/1451/141 830/1452/141 829/1453/141 +f 831/1454/141 815/1387/141 830/1452/141 +f 815/1387/141 829/1453/141 830/1452/141 +f 795/1332/368 822/1422/410 713/1230/284 +f 798/1337/372 706/1222/277 792/1327/364 +f 377/1455/140 833/1456/140 531/1457/140 +f 531/1457/141 598/977/429 597/975/141 +f 534/1458/142 834/1459/430 529/1460/142 +f 834/1461/140 599/1462/431 536/1463/140 +f 540/1464/140 835/1465/140 531/1457/140 +f 836/1466/432 537/1467/433 600/1468/432 +f 599/1462/431 836/1466/432 600/1468/432 +f 836/1469/434 837/1470/435 834/1459/430 +f 835/1471/140 539/1472/436 838/1473/437 +f 539/1472/436 839/1474/438 838/1473/437 +f 538/1475/438 840/1476/439 839/1474/438 +f 840/1477/440 835/1465/441 839/1478/440 +f 537/1467/433 841/1479/442 532/1480/443 +f 532/1480/443 841/1479/442 533/1481/444 +f 601/1482/445 535/1483/446 840/1476/439 +f 535/1483/446 598/1484/444 840/1476/439 +f 374/1485/146 551/1486/149 373/1487/149 +f 370/1488/154 606/1489/141 368/1490/141 +f 377/1491/153 550/1492/139 833/1493/139 +f 373/1487/149 604/1494/145 380/1495/145 +f 368/1490/141 605/1496/146 374/1485/146 +f 833/1497/139 549/1498/154 370/1488/154 +f 379/1499/142 602/1500/153 377/1491/153 +f 380/1495/145 603/1501/142 379/1499/142 +f 621/1009/175 564/1502/145 387/1503/145 +f 625/1013/179 389/1504/146 623/1011/177 +f 555/1032/195 402/1088/228 634/1033/196 +f 639/1039/447 842/1505/448 637/1506/449 +f 555/885/450 633/1047/194 842/1507/451 +f 555/885/450 842/1507/451 345/886/160 +f 641/1043/203 635/1034/197 636/1036/199 +f 406/1508/452 843/1509/453 636/1510/454 +f 636/1510/454 843/1509/453 641/1041/203 +f 645/1046/455 642/1511/456 843/1512/457 +f 843/1512/457 639/1039/447 645/1046/455 +f 843/1512/457 345/1513/458 842/1505/448 +f 637/1037/208 842/1507/451 633/1047/194 +f 642/1042/204 641/1041/203 843/1509/453 +f 647/1514/210 844/1515/459 845/1516/459 +f 644/1045/140 638/1038/140 845/1516/459 +f 696/1517/142 513/826/142 512/1518/142 +f 696/1517/142 514/827/142 513/826/142 +f 699/1284/331 759/1278/327 788/1519/460 +f 788/1356/460 759/1310/327 780/1309/349 +f 370/1520/140 529/1460/140 833/1456/140 +f 531/1457/140 833/1456/140 529/1460/140 +f 623/1026/189 385/1521/461 384/1024/188 +f 383/1014/180 621/1017/182 619/1522/462 +f 658/1523/220 631/1029/192 625/1013/179 +f 617/1005/171 625/1013/179 631/1029/192 +f 616/1003/170 661/1524/222 622/1010/176 +f 661/1524/222 632/1525/193 622/1010/176 +f 615/1002/169 630/1028/191 616/1003/170 +f 630/1028/191 661/1524/222 616/1003/170 +f 799/1342/377 729/1247/299 796/1335/370 +f 716/1334/286 796/1335/370 729/1247/299 +f 722/1239/291 821/1442/426 723/1439/292 +f 636/1510/454 569/1526/452 406/1508/452 +f 488/990/164 490/1527/165 561/991/165 +f 376/639/139 611/995/139 609/993/153 +f 372/634/142 612/996/142 610/994/145 +f 375/638/154 614/999/154 611/995/139 +f 371/633/153 609/993/153 612/996/142 +f 534/997/166 529/847/166 369/630/145 +f 530/849/146 651/1053/146 613/998/141 +f 378/641/141 613/998/141 614/999/154 +f 597/1000/167 651/1053/146 530/849/146 +f 608/1001/168 552/1004/149 615/1002/169 +f 552/1004/149 607/1528/463 617/1005/171 +f 618/1006/172 626/1529/464 619/1007/173 +f 620/1008/174 619/1007/173 621/1009/175 +f 623/1011/177 628/1021/186 624/1012/178 +f 383/1014/180 619/1522/462 626/1015/181 +f 621/1017/182 383/1014/180 559/1018/183 +f 627/1020/185 624/1012/178 628/1021/186 +f 629/1023/181 628/1027/190 384/1024/188 +f 637/1037/200 646/1530/200 638/1038/201 +f 640/1040/141 844/1531/465 641/1041/203 +f 641/1043/203 844/1532/465 643/1044/205 +f 639/1039/202 638/1038/201 644/1045/206 +f 633/1047/194 845/1533/466 646/1048/142 +f 644/1045/206 640/1534/209 642/1042/209 +f 647/1049/210 845/1535/466 633/1031/194 +f 612/996/211 654/1536/218 648/1050/212 +f 649/1051/161 655/1537/161 650/1052/213 +f 613/998/214 656/1538/219 652/1054/215 +f 611/995/216 657/1539/216 653/1055/217 +f 612/996/211 609/993/217 653/1056/217 +f 649/1058/161 610/994/212 648/1059/212 +f 613/998/214 651/1053/213 650/1061/213 +f 614/999/215 652/1540/215 657/1063/216 +f 658/1064/220 656/1068/141 650/1065/146 +f 659/1067/221 652/1077/154 656/1068/141 +f 660/1069/139 662/1078/223 653/1070/153 +f 661/1072/222 648/1080/145 654/1073/142 +f 631/1066/192 650/1065/146 655/1075/149 +f 660/1069/139 657/1071/139 652/1077/154 +f 632/1074/193 654/1073/142 653/1070/153 +f 630/1079/191 655/1541/149 648/1080/145 +f 398/667/141 397/1084/224 566/1081/224 +f 395/1082/142 394/1085/225 568/1083/225 +f 397/1084/224 396/670/226 400/669/226 +f 394/1085/225 393/1542/227 399/1086/227 +f 392/1089/149 391/1543/149 569/1035/198 +f 569/1035/198 635/1034/197 402/1088/228 +f 635/1034/197 643/1044/205 634/1033/196 +f 402/1088/228 635/1034/197 634/1033/196 +f 643/1044/205 647/1049/210 634/1033/196 +f 618/1006/172 620/1008/174 632/1090/193 +f 439/1092/139 441/1104/153 431/1093/153 +f 553/1095/145 554/1107/149 438/1096/149 +f 453/1098/146 455/1108/141 434/1099/141 +f 440/1101/154 439/1544/139 430/1102/139 +f 441/1104/153 442/1106/142 435/1105/142 +f 442/1106/142 553/1095/145 436/1097/145 +f 554/1107/149 453/1098/146 437/1100/146 +f 455/1108/141 440/1101/154 432/1103/154 +f 456/1109/139 575/1120/229 663/1110/229 +f 574/1112/140 573/1121/230 665/1113/230 +f 577/1115/231 457/1125/150 667/1116/150 +f 576/1118/232 456/1109/139 664/1111/139 +f 575/1120/229 574/1112/140 666/1114/140 +f 573/1121/230 458/1545/149 670/1122/149 +f 458/1123/149 577/1115/231 668/1117/231 +f 457/1125/150 576/1118/232 669/1119/232 +f 671/1126/233 683/1140/233 672/1127/227 +f 674/1129/234 685/1145/235 675/1130/235 +f 677/1132/236 684/1141/236 678/1133/237 +f 680/1135/238 686/1148/239 681/1136/239 +f 672/1138/227 680/1135/238 682/1137/238 +f 675/1130/235 685/1145/235 683/1140/233 +f 678/1133/237 674/1129/234 676/1131/234 +f 681/1136/239 686/1148/239 684/1141/236 +f 672/1138/149 579/1546/149 578/1142/230 +f 683/1140/231 580/1149/231 579/1143/149 +f 674/1129/232 581/1150/232 459/1144/150 +f 684/1141/229 582/1151/229 460/1146/139 +f 680/1135/230 578/1142/230 461/1147/140 +f 685/1145/150 459/1144/150 580/1149/231 +f 678/1133/139 460/1146/139 581/1150/232 +f 686/1148/140 461/1147/140 582/1151/229 +f 687/1152/150 473/1165/150 475/1153/240 +f 689/1155/142 465/1166/142 467/1156/241 +f 691/1158/140 472/1547/140 469/1159/242 +f 693/1161/141 477/1164/141 479/1162/243 +f 688/1154/240 475/1153/240 477/1164/141 +f 690/1157/241 467/1156/241 473/1165/150 +f 692/1160/242 469/1159/242 465/1166/142 +f 694/1163/243 479/1162/243 472/1167/140 +f 470/770/244 463/1177/244 590/1169/245 +f 476/779/246 585/1178/246 584/1170/141 +f 478/783/247 583/1179/247 464/1171/248 +f 471/771/249 588/1180/249 587/1172/150 +f 468/767/245 590/1169/245 462/1173/142 +f 480/785/248 464/1171/248 591/1174/140 +f 594/958/150 587/1172/150 586/1175/250 +f 592/956/142 462/1173/142 589/1176/251 +f 593/957/140 591/1548/140 463/1177/244 +f 474/777/250 586/1175/250 585/1178/246 +f 595/959/141 584/1170/141 583/1179/247 +f 466/765/251 589/1176/251 588/1180/249 +f 498/807/252 505/815/252 481/789/253 +f 481/789/253 483/791/254 500/809/254 +f 500/809/254 483/791/254 485/793/255 +f 488/990/164 560/992/164 386/967/256 +f 558/1181/165 493/1549/165 492/1182/164 +f 382/969/256 557/1183/164 492/1182/164 +f 596/1184/257 487/1187/257 486/1185/258 +f 487/1187/257 596/1184/257 499/1188/259 +f 484/1190/260 482/1189/259 499/1188/259 +f 513/825/140 502/1550/140 526/1551/140 +f 521/836/140 520/835/255 485/793/255 +f 513/825/140 526/1551/140 521/836/140 +f 519/1193/261 512/1194/261 484/1190/260 +f 512/1194/261 519/1193/261 695/1195/262 +f 514/1197/263 696/1196/262 695/1195/262 +f 511/1199/264 514/1197/139 523/1198/139 +f 511/1201/264 522/1552/264 525/1202/265 +f 509/1204/140 510/1203/265 525/1202/265 +f 507/1206/266 509/1204/267 518/1205/267 +f 506/1208/268 507/1206/266 517/1207/266 +f 486/1185/258 506/1208/268 515/1209/268 +f 516/829/139 508/973/139 505/815/252 +f 658/1211/220 624/1012/178 627/1020/185 +f 697/1213/269 707/1419/278 698/1214/270 +f 700/1216/272 709/1226/272 701/1217/273 +f 703/1219/274 711/1228/423 704/1220/275 +f 706/1222/277 713/1230/284 707/1223/278 +f 708/1225/279 715/1232/279 709/1226/272 +f 710/1227/280 717/1234/287 711/1228/281 +f 712/1229/283 719/1236/289 713/1230/284 +f 714/1231/285 827/1553/285 715/1232/279 +f 716/1233/286 723/1240/292 717/1234/287 +f 718/1235/288 725/1242/294 719/1236/289 +f 720/1237/290 827/1553/290 714/1231/290 +f 716/1233/286 729/1247/299 722/1239/291 +f 724/1241/293 731/1249/301 725/1242/294 +f 728/1246/298 800/1443/427 722/1239/291 +f 730/1248/300 735/1253/305 731/1249/301 +f 732/1250/302 737/1255/307 733/1251/303 +f 734/1252/304 739/1257/309 735/1253/305 +f 736/1254/306 741/1259/311 737/1255/307 +f 738/1256/308 743/1261/313 739/1257/309 +f 740/1258/310 745/1554/404 741/1259/311 +f 742/1260/312 747/1266/415 743/1261/313 +f 744/1262/314 749/1268/314 745/1263/315 +f 746/1265/316 751/1270/321 747/1266/317 +f 748/1267/319 753/1272/323 749/1268/314 +f 750/1269/320 758/1277/326 751/1270/321 +f 752/1271/322 760/1279/328 753/1272/323 +f 754/1273/324 762/1281/324 755/1274/149 +f 757/1276/325 764/1283/419 758/1277/326 +f 759/1278/327 765/1285/332 760/1279/328 +f 761/1280/329 766/1286/329 762/1281/324 +f 763/1282/330 767/1287/333 764/1283/281 +f 699/1284/331 698/1415/407 765/1285/332 +f 702/1218/273 701/1217/273 766/1286/329 +f 705/1221/276 704/1220/275 767/1287/333 +f 718/1235/288 797/1336/371 768/1288/334 +f 721/1244/296 726/1243/295 733/1251/303 +f 730/1248/300 724/1241/293 768/1288/334 +f 726/1243/295 727/1245/297 770/1291/337 +f 742/1293/312 738/1256/308 771/1294/338 +f 744/1296/340 740/1555/467 773/1297/341 +f 746/1299/316 742/1260/318 772/1300/343 +f 750/1304/320 746/1299/316 775/1301/344 +f 750/1304/320 777/1305/346 779/1308/348 +f 752/1306/322 778/1307/347 780/1309/349 +f 761/1311/350 754/1340/375 781/1312/351 +f 763/1314/330 757/1276/282 779/1308/353 +f 705/1320/276 763/1314/330 783/1315/354 +f 697/1213/269 699/1215/271 788/1322/359 +f 700/1324/361 702/1348/380 786/1319/357 +f 705/1320/276 787/1321/358 791/1326/363 +f 700/1324/361 790/1325/362 793/1328/365 +f 710/1330/280 703/1219/282 791/1326/353 +f 716/1334/286 710/1330/280 794/1331/367 +f 800/1343/140 728/1556/140 801/1344/378 +f 802/1345/378 801/1344/378 347/1346/379 +f 727/1339/374 793/1328/365 776/1303/345 +f 786/1319/357 780/1309/349 778/1307/347 +f 401/1354/142 780/1309/349 782/1313/352 +f 768/1359/142 797/1363/142 775/1360/142 +f 777/1362/142 775/1360/142 797/1363/142 +f 799/1372/142 347/1355/142 801/1373/142 +f 808/1380/388 810/1382/390 806/1378/386 +f 812/1384/392 811/1383/391 809/1381/389 +f 814/1386/141 829/1453/141 815/1387/141 +f 816/1388/141 815/1387/141 817/1389/141 +f 810/1382/390 811/1383/391 709/1404/398 +f 709/1404/398 811/1383/391 812/1384/392 +f 701/1405/399 812/1384/392 813/1385/393 +f 828/1407/401 762/1408/402 766/1406/400 +f 804/1352/383 806/1400/394 733/1251/303 +f 749/1411/405 807/1379/387 803/1377/385 +f 784/1316/355 809/1381/389 760/1414/328 +f 813/1385/393 784/1316/355 528/1417/141 +f 707/1419/278 826/1421/409 785/1420/408 +f 814/1424/412 816/1423/411 725/1242/294 +f 735/1253/305 829/1425/413 814/1424/412 +f 747/1427/415 831/1557/468 830/1428/414 +f 751/1429/321 815/1432/417 831/1430/416 +f 758/1431/326 817/1558/469 815/1432/417 +f 818/1433/418 817/1558/469 758/1431/326 +f 767/1434/333 819/1436/421 818/1433/420 +f 704/1435/275 824/1559/470 819/1436/421 +f 823/1437/422 824/1559/470 704/1435/275 +f 717/1438/287 820/1440/424 823/1437/420 +f 723/1439/292 821/1442/426 820/1440/424 +f 802/1444/141 346/1418/141 825/1398/141 +f 531/1457/141 835/1465/441 598/977/429 +f 534/1458/142 533/1560/471 834/1459/430 +f 834/1461/140 837/1561/472 599/1462/431 +f 531/1457/140 529/1460/140 536/1562/140 +f 529/1460/140 834/1459/140 536/1562/140 +f 536/1562/140 540/1464/140 531/1457/140 +f 836/1466/432 841/1479/442 537/1467/433 +f 599/1462/431 837/1561/472 836/1466/432 +f 834/1459/430 533/1560/471 841/1563/434 +f 841/1563/434 836/1469/434 834/1459/430 +f 835/1471/140 540/1564/140 539/1472/436 +f 539/1472/436 538/1475/438 839/1474/438 +f 538/1475/438 601/1482/445 840/1476/439 +f 598/977/429 835/1465/441 840/1477/440 +f 835/1465/441 838/1565/473 839/1478/440 +f 374/1485/146 605/1496/146 551/1486/149 +f 370/1488/154 549/1498/154 606/1489/141 +f 377/1491/153 602/1500/153 550/1492/139 +f 373/1487/149 551/1486/149 604/1494/145 +f 368/1490/141 606/1489/141 605/1496/146 +f 833/1497/139 550/1566/139 549/1498/154 +f 379/1499/142 603/1501/142 602/1500/153 +f 380/1495/145 604/1494/145 603/1501/142 +f 608/1001/168 616/1003/170 387/1503/145 +f 616/1003/170 622/1010/176 387/1503/145 +f 622/1010/176 621/1009/175 387/1503/145 +f 625/1013/179 617/1005/171 389/1504/146 +f 617/1005/171 607/1528/463 389/1504/146 +f 389/1504/146 388/1567/146 623/1011/177 +f 843/1512/457 842/1505/448 639/1039/447 +f 843/1512/474 406/1568/458 345/1513/458 +f 647/1514/210 643/1569/205 844/1515/459 +f 638/1038/140 646/1570/140 845/1516/459 +f 845/1516/459 844/1515/459 644/1045/140 +f 844/1515/459 640/1571/140 644/1045/140 +f 623/1026/189 388/1572/150 385/1521/461 +l 716 799 diff --git a/src/main/resources/assets/hbm/models/weapons/animations/am180.json b/src/main/resources/assets/hbm/models/weapons/animations/am180.json new file mode 100644 index 000000000..696b981a7 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/animations/am180.json @@ -0,0 +1 @@ +{"anim": {"Fire": {"Gun": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.049645546823740005, 33.333333333333336, "BEZIER", "AUTO", 22.22222089767456, 0.049645546823740005, "AUTO_CLAMPED", 61.111108462015785, 0.049645546823740005, "AUTO_CLAMPED"], [-0.0984705239534378, 83.33333333333334, "BEZIER", "AUTO", 88.88889153798421, -0.0984705239534378, "AUTO_CLAMPED", 155.5555502573649, -0.0984705239534378, "AUTO_CLAMPED"], [0.0, 116.66666666666667, "BEZIER", "AUTO", 194.44444974263507, 0.0, "AUTO_CLAMPED", 272.2222328186035, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, -0.0, "AUTO_CLAMPED"], [-0.11763561517000198, 33.333333333333336, "BEZIER", "AUTO", 22.22222089767456, -0.06207846477627754, "AUTO_CLAMPED", 61.111108462015785, -0.25652849674224854, "AUTO_CLAMPED"], [-0.35466307401657104, 83.33333333333334, "BEZIER", "AUTO", 88.88889153798421, -0.35466307401657104, "AUTO_CLAMPED", 155.5555502573649, -0.35466307401657104, "AUTO_CLAMPED"], [-0.0, 116.66666666666667, "BEZIER", "AUTO", 194.44444974263507, -0.0, "AUTO_CLAMPED", 272.2222328186035, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.137577086687088, 33.333333333333336, "BEZIER", "AUTO", 22.22222089767456, 0.137577086687088, "AUTO_CLAMPED", 61.111108462015785, 0.137577086687088, "AUTO_CLAMPED"], [0.027738595381379128, 83.33333333333334, "BEZIER", "AUTO", 88.88889153798421, 0.04755187779664993, "AUTO_CLAMPED", 155.5555502573649, 0.0, "AUTO_CLAMPED"], [0.0, 116.66666666666667, "BEZIER", "AUTO", 194.44444974263507, 0.0, "AUTO_CLAMPED", 272.2222328186035, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [-1.5968555392666686, 33.333333333333336, "BEZIER", "AUTO", 22.22222089767456, -1.5968555392666686, "AUTO_CLAMPED", 61.111108462015785, -1.5968555392666686, "AUTO_CLAMPED"], [-0.2641522033845276, 83.33333333333334, "BEZIER", "AUTO", 88.88889153798421, -0.4528323639051482, "AUTO_CLAMPED", 155.5555502573649, 0.0, "AUTO_CLAMPED"], [0.0, 116.66666666666667, "BEZIER", "AUTO", 194.44444974263507, 0.0, "AUTO_CLAMPED", 272.2222328186035, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, -0.0, "AUTO_CLAMPED"], [0.8132398352613003, 33.333333333333336, "BEZIER", "AUTO", 22.22222089767456, 0.8132398352613003, "AUTO_CLAMPED", 61.111108462015785, 0.8132398352613003, "AUTO_CLAMPED"], [-2.1020325519800904, 83.33333333333334, "BEZIER", "AUTO", 88.88889153798421, -2.1020325519800904, "AUTO_CLAMPED", 155.5555502573649, -2.1020325519800904, "AUTO_CLAMPED"], [-0.0, 116.66666666666667, "BEZIER", "AUTO", 194.44444974263507, -0.0, "AUTO_CLAMPED", 272.2222328186035, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.11745385395824333, 33.333333333333336, "BEZIER", "AUTO", 22.22222089767456, 0.11745385395824333, "AUTO_CLAMPED", 61.111108462015785, 0.11745385395824333, "AUTO_CLAMPED"], [0.07823202625797401, 83.33333333333334, "BEZIER", "AUTO", 88.88889153798421, 0.10131339657798917, "AUTO_CLAMPED", 155.5555502573649, 0.045918111145006095, "AUTO_CLAMPED"], [0.0, 116.66666666666667, "BEZIER", "AUTO", 194.44444974263507, 0.0, "AUTO_CLAMPED", 272.2222328186035, 0.0, "AUTO_CLAMPED"]]}}, "Trigger": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.0, "AUTO_CLAMPED"]], "z": [[-1.5625001192092896, 0.0, "BEZIER", "AUTO", 16.666666666666668, -1.5625001192092896, "AUTO_CLAMPED"]], "y": [[1.111669898033142, 0.0, "BEZIER", "AUTO", 16.666666666666668, 1.111669898033142, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [29.4423193041891, 16.666666666666668, "BEZIER", "AUTO", 11.11111044883728, 29.4423193041891, "AUTO_CLAMPED", 38.888891537984215, 29.4423193041891, "AUTO_CLAMPED"], [29.4423193041891, 66.66666666666666, "BEZIER", "AUTO", 61.111108462015785, 29.4423193041891, "AUTO_CLAMPED", 133.33333333333334, 29.4423193041891, "AUTO_CLAMPED"], [0.0, 150.0, "BEZIER", "AUTO", 183.33333333333331, 0.0, "AUTO_CLAMPED", 283.3333333333333, 0.0, "AUTO_CLAMPED"]]}}}, "FireDry": {"Bolt": {"location": {"x": [[0.4437499940395355, 0.0, "BEZIER", "AUTO", 933.3333333333334, 0.4437499940395355, "AUTO_CLAMPED"]], "z": [[-1.8655332326889038, 0.0, "BEZIER", "AUTO", 122.22222487131755, -1.8655332326889038, "AUTO_CLAMPED"], [-1.8655332326889038, 366.66666666666663, "BEZIER", "EASE_IN", 244.44443384806314, -1.8655332326889038, "AUTO_CLAMPED", 405.55556615193683, -1.8655332326889038, "AUTO_CLAMPED"], [-3.3269410133361816, 116.66666666666669, "BEZIER", "AUTO", 444.44443384806317, -3.3269410133361816, "AUTO_CLAMPED", 516.6666666666666, -3.3269410133361816, "AUTO_CLAMPED"], [-3.3269410133361816, 100.00000000000006, "EXPO", "EASE_IN", 550.0, -3.3269410133361816, "AUTO_CLAMPED"], [-1.8655332326889038, 83.33333333333326, "BEZIER", "AUTO", 694.444465637207, -1.8655332326889038, "AUTO_CLAMPED"]], "y": [[1.8304203748703003, 0.0, "BEZIER", "AUTO", 933.3333333333334, 1.8304203748703003, "AUTO_CLAMPED"]]}}, "Gun": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 33.333333333333336, 0.0, "AUTO_CLAMPED"], [0.0, 100.0, "BEZIER", "AUTO", 66.66666666666667, 0.0, "AUTO_CLAMPED", 177.77776718139648, 0.0, "AUTO_CLAMPED"], [0.378823459148407, 233.33333333333331, "BEZIER", "AUTO", 255.55556615193686, 0.378823459148407, "AUTO_CLAMPED", 377.7777671813965, 0.378823459148407, "AUTO_CLAMPED"], [0.3284962773323059, 133.33333333333337, "BEZIER", "AUTO", 422.2222328186035, 0.378823459148407, "AUTO_CLAMPED", 505.5555661519369, 0.28446000814437866, "AUTO_CLAMPED"], [0.0780496671795845, 116.66666666666669, "BEZIER", "AUTO", 544.444465637207, 0.12340082228183746, "AUTO_CLAMPED", 605.555534362793, 0.052134718745946884, "AUTO_CLAMPED"], [0.052134718745946884, 66.66666666666663, "BEZIER", "AUTO", 627.7777989705403, 0.052134718745946884, "AUTO_CLAMPED", 677.7777989705404, 0.052134718745946884, "AUTO_CLAMPED"], [0.06624312698841095, 83.33333333333326, "BEZIER", "AUTO", 705.555534362793, 0.06624312698841095, "AUTO_CLAMPED", 794.444465637207, 0.06624312698841095, "AUTO_CLAMPED"], [0.0, 183.33333333333337, "BEZIER", "AUTO", 855.555534362793, 0.0, "AUTO_CLAMPED", 977.7777989705404, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 33.333333333333336, -0.0, "AUTO_CLAMPED"], [-0.0, 100.0, "BEZIER", "AUTO", 66.66666666666667, -0.0, "AUTO_CLAMPED", 177.77776718139648, -0.0, "AUTO_CLAMPED"], [0.3215503692626953, 233.33333333333331, "BEZIER", "AUTO", 255.55556615193686, 0.3215503692626953, "AUTO_CLAMPED", 377.7777671813965, 0.3215503692626953, "AUTO_CLAMPED"], [0.27883198857307434, 133.33333333333337, "BEZIER", "AUTO", 422.2222328186035, 0.3215503692626953, "AUTO_CLAMPED", 505.5555661519369, 0.2414534091949463, "AUTO_CLAMPED"], [-0.044656865298748016, 116.66666666666669, "BEZIER", "AUTO", 544.444465637207, -0.010165050625801086, "AUTO_CLAMPED", 605.555534362793, -0.06436647474765778, "AUTO_CLAMPED"], [-0.06436647474765778, 66.66666666666663, "BEZIER", "AUTO", 627.7777989705403, -0.06436647474765778, "AUTO_CLAMPED", 677.7777989705404, -0.06436647474765778, "AUTO_CLAMPED"], [0.21741850674152374, 83.33333333333326, "BEZIER", "AUTO", 705.555534362793, 0.21741850674152374, "AUTO_CLAMPED", 794.444465637207, 0.21741850674152374, "AUTO_CLAMPED"], [-0.0, 183.33333333333337, "BEZIER", "AUTO", 855.555534362793, -0.0, "AUTO_CLAMPED", 977.7777989705404, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 33.333333333333336, 0.0, "AUTO_CLAMPED"], [0.0, 100.0, "BEZIER", "AUTO", 66.66666666666667, 0.0, "AUTO_CLAMPED", 177.77776718139648, 0.0, "AUTO_CLAMPED"], [-0.03033590316772461, 233.33333333333331, "BEZIER", "AUTO", 255.55556615193686, -0.03033590316772461, "AUTO_CLAMPED", 377.7777671813965, -0.03033590316772461, "AUTO_CLAMPED"], [-0.013926569372415543, 133.33333333333337, "BEZIER", "AUTO", 422.2222328186035, -0.022176561877131462, "AUTO_CLAMPED", 505.5555661519369, -0.006707826163619757, "AUTO_CLAMPED"], [0.000580325722694397, 116.66666666666669, "BEZIER", "AUTO", 544.444465637207, 0.000580325722694397, "AUTO_CLAMPED", 605.555534362793, 0.000580325722694397, "AUTO_CLAMPED"], [-0.08202043920755386, 66.66666666666663, "BEZIER", "AUTO", 627.7777989705403, -0.08202043920755386, "AUTO_CLAMPED", 677.7777989705404, -0.08202043920755386, "AUTO_CLAMPED"], [0.007577709853649139, 83.33333333333326, "BEZIER", "AUTO", 705.555534362793, 0.007577709853649139, "AUTO_CLAMPED", 794.444465637207, 0.007577709853649139, "AUTO_CLAMPED"], [0.0, 183.33333333333337, "BEZIER", "AUTO", 855.555534362793, 0.0, "AUTO_CLAMPED", 977.7777989705404, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, 0.0, "AUTO_CLAMPED"], [0.0, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, 0.0, "AUTO_CLAMPED", 200.0, 0.0, "AUTO_CLAMPED"], [-9.762812852427766, 199.99999999999997, "BEZIER", "AUTO", 266.6666666666667, -9.762812852427766, "AUTO_CLAMPED", 377.7777671813965, -9.762812852427766, "AUTO_CLAMPED"], [-8.46581115546112, 133.33333333333337, "BEZIER", "AUTO", 422.2222328186035, -8.46581115546112, "AUTO_CLAMPED", 505.5555661519369, -8.46581115546112, "AUTO_CLAMPED"], [-9.922516335601005, 116.66666666666669, "BEZIER", "AUTO", 544.444465637207, -9.922516335601005, "AUTO_CLAMPED", 605.555534362793, -9.922516335601005, "AUTO_CLAMPED"], [-5.976405705364225, 66.66666666666663, "BEZIER", "AUTO", 627.7777989705403, -7.419544849151995, "AUTO_CLAMPED", 677.7777989705404, -4.172482309238042, "AUTO_CLAMPED"], [-3.5616000082690333, 83.33333333333326, "BEZIER", "AUTO", 705.555534362793, -4.02454510757062, "AUTO_CLAMPED", 794.444465637207, -2.5431206190508133, "AUTO_CLAMPED"], [0.0, 183.33333333333337, "BEZIER", "AUTO", 855.555534362793, 0.0, "AUTO_CLAMPED", 977.7777989705404, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, -0.0, "AUTO_CLAMPED"], [-0.0, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, -0.0, "AUTO_CLAMPED", 200.0, -0.0, "AUTO_CLAMPED"], [12.070624489948354, 199.99999999999997, "BEZIER", "AUTO", 266.6666666666667, 12.070624489948354, "AUTO_CLAMPED", 377.7777671813965, 12.070624489948354, "AUTO_CLAMPED"], [10.467026700197236, 133.33333333333337, "BEZIER", "AUTO", 422.2222328186035, 11.083953291694883, "AUTO_CLAMPED", 505.5555661519369, 9.927215505749972, "AUTO_CLAMPED"], [8.542568821353722, 116.66666666666669, "BEZIER", "AUTO", 544.444465637207, 9.67049003919035, "AUTO_CLAMPED", 605.555534362793, 7.8980422891937, "AUTO_CLAMPED"], [6.156128899881594, 66.66666666666663, "BEZIER", "AUTO", 627.7777989705403, 6.969043500744525, "AUTO_CLAMPED", 677.7777989705404, 5.139985862246341, "AUTO_CLAMPED"], [3.4902371246036825, 83.33333333333326, "BEZIER", "AUTO", 705.555534362793, 4.305224474436301, "AUTO_CLAMPED", 794.444465637207, 1.6972648695945567, "AUTO_CLAMPED"], [-0.0, 183.33333333333337, "BEZIER", "AUTO", 855.555534362793, -0.0, "AUTO_CLAMPED", 977.7777989705404, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, 0.0, "AUTO_CLAMPED"], [0.0, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, 0.0, "AUTO_CLAMPED", 200.0, 0.0, "AUTO_CLAMPED"], [6.133171353420711, 199.99999999999997, "BEZIER", "AUTO", 266.6666666666667, 6.133171353420711, "AUTO_CLAMPED", 377.7777671813965, 6.133171353420711, "AUTO_CLAMPED"], [5.3183716203468565, 133.33333333333337, "BEZIER", "AUTO", 422.2222328186035, 6.133171353420711, "AUTO_CLAMPED", 505.5555661519369, 4.60542196062894, "AUTO_CLAMPED"], [2.264997877368833, 116.66666666666669, "BEZIER", "AUTO", 544.444465637207, 2.684597955867284, "AUTO_CLAMPED", 605.555534362793, 2.0252264344330624, "AUTO_CLAMPED"], [2.0252264344330624, 66.66666666666663, "BEZIER", "AUTO", 627.7777989705403, 2.147129516305334, "AUTO_CLAMPED", 677.7777989705404, 1.8728476888144283, "AUTO_CLAMPED"], [0.9566294649628159, 83.33333333333326, "BEZIER", "AUTO", 705.555534362793, 1.339521972427503, "AUTO_CLAMPED", 794.444465637207, 0.11426602324569855, "AUTO_CLAMPED"], [0.0, 183.33333333333337, "BEZIER", "AUTO", 855.555534362793, 0.0, "AUTO_CLAMPED", 977.7777989705404, 0.0, "AUTO_CLAMPED"]]}}, "Trigger": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.0, "AUTO_CLAMPED"]], "z": [[-1.5625001192092896, 0.0, "BEZIER", "AUTO", 16.666666666666668, -1.5625001192092896, "AUTO_CLAMPED"]], "y": [[1.111669898033142, 0.0, "BEZIER", "AUTO", 16.666666666666668, 1.111669898033142, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [29.4423193041891, 16.666666666666668, "BEZIER", "AUTO", 11.11111044883728, 29.4423193041891, "AUTO_CLAMPED", 38.888891537984215, 29.4423193041891, "AUTO_CLAMPED"], [29.4423193041891, 66.66666666666666, "BEZIER", "AUTO", 61.111108462015785, 29.4423193041891, "AUTO_CLAMPED", 133.33333333333334, 29.4423193041891, "AUTO_CLAMPED"], [0.0, 150.0, "BEZIER", "AUTO", 183.33333333333331, 0.0, "AUTO_CLAMPED", 283.3333333333333, 0.0, "AUTO_CLAMPED"]]}}}, "Inspect": {"Gun": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 55.555554231007896, 0.0, "AUTO_CLAMPED"], [0.07114996761083603, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 0.07114996761083603, "AUTO_CLAMPED", 211.11111640930176, 0.07114996761083603, "AUTO_CLAMPED"], [0.06900998950004578, 133.33333333333334, "BEZIER", "AUTO", 255.55555025736493, 0.07114996761083603, "AUTO_CLAMPED", 355.55556615193683, 0.06633501499891281, "AUTO_CLAMPED"], [0.04820222035050392, 166.66666666666669, "BEZIER", "AUTO", 411.1111005147298, 0.04820222035050392, "AUTO_CLAMPED", 527.7777671813965, 0.04820222035050392, "AUTO_CLAMPED"], [0.05328037589788437, 183.33333333333331, "BEZIER", "AUTO", 588.8888676961262, 0.05328037589788437, "AUTO_CLAMPED", 1138.888931274414, 0.05328037589788437, "AUTO_CLAMPED"], [0.05328037589788437, 1466.6666666666665, "BEZIER", "AUTO", 1627.7777353922527, 0.05328037589788437, "AUTO_CLAMPED", 2166.6666666666665, 0.05328037589788437, "AUTO_CLAMPED"], [0.0, 150.0, "BEZIER", "AUTO", 2216.666666666667, 0.0, "AUTO_CLAMPED", 2400.0, 0.0, "AUTO_CLAMPED"], [0.0, 400.0, "BEZIER", "AUTO", 2533.333333333333, 0.0, "AUTO_CLAMPED", 2694.4445292154946, 0.0, "AUTO_CLAMPED"], [-0.005077464040368795, 83.33333333333348, "BEZIER", "AUTO", 2722.222137451172, -0.005077464040368795, "AUTO_CLAMPED", 2811.1111958821616, -0.005077464040368795, "AUTO_CLAMPED"], [0.03527374938130379, 183.33333333333303, "BEZIER", "AUTO", 2872.222137451172, 0.03527374938130379, "AUTO_CLAMPED", 2977.777862548828, 0.03527374938130379, "AUTO_CLAMPED"], [-0.020133668556809425, 133.33333333333348, "BEZIER", "AUTO", 3022.222137451172, -0.020133668556809425, "AUTO_CLAMPED", 3166.6666666666665, -0.020133668556809425, "AUTO_CLAMPED"], [0.0, 300.0, "BEZIER", "AUTO", 3266.6666666666665, 0.0, "AUTO_CLAMPED", 3466.666666666667, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 55.555554231007896, -0.0, "AUTO_CLAMPED"], [0.10114581137895584, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 0.10114581137895584, "AUTO_CLAMPED", 211.11111640930176, 0.10114581137895584, "AUTO_CLAMPED"], [-0.1629212200641632, 133.33333333333334, "BEZIER", "AUTO", 255.55555025736493, -0.1629212200641632, "AUTO_CLAMPED", 355.55556615193683, -0.1629212200641632, "AUTO_CLAMPED"], [-0.004916742444038391, 166.66666666666669, "BEZIER", "AUTO", 411.1111005147298, -0.027451736852526665, "AUTO_CLAMPED", 527.7777671813965, 0.019871752709150314, "AUTO_CLAMPED"], [0.019871752709150314, 183.33333333333331, "BEZIER", "AUTO", 588.8888676961262, 0.019871752709150314, "AUTO_CLAMPED", 1138.888931274414, 0.019871752709150314, "AUTO_CLAMPED"], [0.019871752709150314, 1466.6666666666665, "BEZIER", "AUTO", 1627.7777353922527, 0.019871752709150314, "AUTO_CLAMPED", 2166.6666666666665, 0.019871752709150314, "AUTO_CLAMPED"], [-0.0, 150.0, "BEZIER", "AUTO", 2216.666666666667, -0.0, "AUTO_CLAMPED", 2400.0, -0.0, "AUTO_CLAMPED"], [-0.0, 400.0, "BEZIER", "AUTO", 2533.333333333333, -0.0, "AUTO_CLAMPED", 2694.4445292154946, -0.0, "AUTO_CLAMPED"], [0.01262839324772358, 83.33333333333348, "BEZIER", "AUTO", 2722.222137451172, 0.0035094833001494408, "AUTO_CLAMPED", 2811.1111958821616, 0.03268999606370926, "AUTO_CLAMPED"], [0.07990105450153351, 183.33333333333303, "BEZIER", "AUTO", 2872.222137451172, 0.07990105450153351, "AUTO_CLAMPED", 2977.777862548828, 0.07990105450153351, "AUTO_CLAMPED"], [0.07229746878147125, 133.33333333333348, "BEZIER", "AUTO", 3022.222137451172, 0.07987289875745773, "AUTO_CLAMPED", 3166.6666666666665, 0.05525274574756622, "AUTO_CLAMPED"], [-0.0, 300.0, "BEZIER", "AUTO", 3266.6666666666665, -0.0, "AUTO_CLAMPED", 3466.666666666667, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 55.555554231007896, 0.0, "AUTO_CLAMPED"], [-0.29975396394729614, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, -0.12830781936645508, "AUTO_CLAMPED", 211.11111640930176, -0.43691086769104004, "AUTO_CLAMPED"], [-0.6016762852668762, 133.33333333333334, "BEZIER", "AUTO", 255.55555025736493, -0.6016762852668762, "AUTO_CLAMPED", 355.55556615193683, -0.6016762852668762, "AUTO_CLAMPED"], [-0.2427852749824524, 166.66666666666669, "BEZIER", "AUTO", 411.1111005147298, -0.2427852749824524, "AUTO_CLAMPED", 527.7777671813965, -0.2427852749824524, "AUTO_CLAMPED"], [-0.5669558644294739, 183.33333333333331, "BEZIER", "AUTO", 588.8888676961262, -0.5669558644294739, "AUTO_CLAMPED", 1138.888931274414, -0.5669558644294739, "AUTO_CLAMPED"], [-0.5669558644294739, 1466.6666666666665, "BEZIER", "AUTO", 1627.7777353922527, -0.5669558644294739, "AUTO_CLAMPED", 2227.777862548828, -0.5669558644294739, "AUTO_CLAMPED"], [0.0, 333.3333333333335, "BEZIER", "AUTO", 2338.8888041178384, 0.0, "AUTO_CLAMPED", 2522.222137451172, 0.0, "AUTO_CLAMPED"], [0.0, 216.66666666666652, "BEZIER", "AUTO", 2594.4445292154946, 0.0, "AUTO_CLAMPED", 2694.4445292154946, 0.0, "AUTO_CLAMPED"], [0.13483214378356934, 83.33333333333348, "BEZIER", "AUTO", 2722.222137451172, 0.0764673575758934, "AUTO_CLAMPED", 2811.1111958821616, 0.2632346749305725, "AUTO_CLAMPED"], [0.3040197491645813, 183.33333333333303, "BEZIER", "AUTO", 2872.222137451172, 0.3040197491645813, "AUTO_CLAMPED", 2977.777862548828, 0.3040197491645813, "AUTO_CLAMPED"], [-0.47273141145706177, 133.33333333333348, "BEZIER", "AUTO", 3022.222137451172, -0.47273141145706177, "AUTO_CLAMPED", 3166.6666666666665, -0.47273141145706177, "AUTO_CLAMPED"], [0.0, 300.0, "BEZIER", "AUTO", 3266.6666666666665, 0.0, "AUTO_CLAMPED", 3466.666666666667, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 55.555554231007896, 0.0, "AUTO_CLAMPED"], [2.9641926033154022, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 2.9641926033154022, "AUTO_CLAMPED", 211.11111640930176, 2.9641926033154022, "AUTO_CLAMPED"], [2.9641926033154022, 133.33333333333334, "BEZIER", "AUTO", 255.55555025736493, 2.9641926033154022, "AUTO_CLAMPED", 355.55556615193683, 2.9641926033154022, "AUTO_CLAMPED"], [-1.8676834254716639, 166.66666666666669, "BEZIER", "AUTO", 411.1111005147298, -1.8676834254716639, "AUTO_CLAMPED", 527.7777671813965, -1.8676834254716639, "AUTO_CLAMPED"], [0.692141648494032, 183.33333333333331, "BEZIER", "AUTO", 588.8888676961262, 0.692141648494032, "AUTO_CLAMPED", 1138.888931274414, 0.692141648494032, "AUTO_CLAMPED"], [0.692141648494032, 1466.6666666666665, "BEZIER", "AUTO", 1627.7777353922527, 0.692141648494032, "AUTO_CLAMPED", 2183.333333333333, 0.692141648494032, "AUTO_CLAMPED"], [0.0, 200.0, "BEZIER", "AUTO", 2250.0, 0.692141648494032, "AUTO_CLAMPED", 2433.333333333333, -1.2112479248851957, "AUTO_CLAMPED"], [-7.739051707015083, 350.0, "BEZIER", "AUTO", 2550.0, -7.739051707015083, "AUTO_CLAMPED", 2722.222137451172, -7.739051707015083, "AUTO_CLAMPED"], [-7.646921846621719, 166.66666666666697, "BEZIER", "AUTO", 2777.777862548828, -7.646921846621719, "AUTO_CLAMPED", 2866.6666666666665, -7.646921846621719, "AUTO_CLAMPED"], [-7.646921846621719, 99.99999999999955, "BEZIER", "AUTO", 2900.0, -7.646921846621719, "AUTO_CLAMPED", 2977.777862548828, -7.646921846621719, "AUTO_CLAMPED"], [-7.646921846621719, 133.33333333333348, "BEZIER", "AUTO", 3022.222137451172, -7.646921846621719, "AUTO_CLAMPED", 3166.6666666666665, -7.646921846621719, "AUTO_CLAMPED"], [0.0, 300.0, "BEZIER", "AUTO", 3266.6666666666665, 0.0, "AUTO_CLAMPED", 3466.666666666667, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 55.555554231007896, -0.0, "AUTO_CLAMPED"], [-0.97928136045834, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, -0.97928136045834, "AUTO_CLAMPED", 211.11111640930176, -0.97928136045834, "AUTO_CLAMPED"], [-0.97928136045834, 133.33333333333334, "BEZIER", "AUTO", 255.55555025736493, -0.97928136045834, "AUTO_CLAMPED", 355.55556615193683, -0.97928136045834, "AUTO_CLAMPED"], [-0.8304706416290971, 166.66666666666669, "BEZIER", "AUTO", 411.1111005147298, -0.8304706416290971, "AUTO_CLAMPED", 527.7777671813965, -0.8304706416290971, "AUTO_CLAMPED"], [-0.8304706416290971, 183.33333333333331, "BEZIER", "AUTO", 588.8888676961262, -0.8304706416290971, "AUTO_CLAMPED", 1138.888931274414, -0.8304706416290971, "AUTO_CLAMPED"], [-0.8304706416290971, 1466.6666666666665, "BEZIER", "AUTO", 1627.7777353922527, -0.8304706416290971, "AUTO_CLAMPED", 2250.0, -0.8304706416290971, "AUTO_CLAMPED"], [-0.0, 400.0, "BEZIER", "AUTO", 2383.3333333333335, -0.0, "AUTO_CLAMPED", 2622.222137451172, -0.0, "AUTO_CLAMPED"], [-8.823071883961452, 316.66666666666697, "BEZIER", "AUTO", 2727.777862548828, -8.823071883961452, "AUTO_CLAMPED", 2866.6666666666665, -8.823071883961452, "AUTO_CLAMPED"], [-8.823071883961452, 99.99999999999955, "BEZIER", "AUTO", 2900.0, -8.823071883961452, "AUTO_CLAMPED", 2977.777862548828, -8.823071883961452, "AUTO_CLAMPED"], [-8.823071883961452, 133.33333333333348, "BEZIER", "AUTO", 3022.222137451172, -8.823071883961452, "AUTO_CLAMPED", 3166.6666666666665, -8.823071883961452, "AUTO_CLAMPED"], [-0.0, 300.0, "BEZIER", "AUTO", 3266.6666666666665, -0.0, "AUTO_CLAMPED", 3466.666666666667, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 55.555554231007896, 0.0, "AUTO_CLAMPED"], [0.35034732308023736, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 0.35034732308023736, "AUTO_CLAMPED", 211.11111640930176, 0.35034732308023736, "AUTO_CLAMPED"], [0.35034732308023736, 133.33333333333334, "BEZIER", "AUTO", 255.55555025736493, 0.35034732308023736, "AUTO_CLAMPED", 355.55556615193683, 0.35034732308023736, "AUTO_CLAMPED"], [0.007649265755435478, 166.66666666666669, "BEZIER", "AUTO", 411.1111005147298, 0.007649265755435478, "AUTO_CLAMPED", 527.7777671813965, 0.007649265755435478, "AUTO_CLAMPED"], [0.007649265755435478, 183.33333333333331, "BEZIER", "AUTO", 588.8888676961262, 0.007649265755435478, "AUTO_CLAMPED", 1138.888931274414, 0.007649265755435478, "AUTO_CLAMPED"], [0.007649265755435478, 1466.6666666666665, "BEZIER", "AUTO", 1627.7777353922527, 0.007649265755435478, "AUTO_CLAMPED", 2250.0, 0.007649265755435478, "AUTO_CLAMPED"], [0.0, 400.0, "BEZIER", "AUTO", 2383.3333333333335, 0.0, "AUTO_CLAMPED", 2622.222137451172, 0.0, "AUTO_CLAMPED"], [1.1941439572647203, 316.66666666666697, "BEZIER", "AUTO", 2727.777862548828, 1.1941439572647203, "AUTO_CLAMPED", 2866.6666666666665, 1.1941439572647203, "AUTO_CLAMPED"], [1.1941439572647203, 99.99999999999955, "BEZIER", "AUTO", 2900.0, 1.1941439572647203, "AUTO_CLAMPED", 2977.777862548828, 1.1941439572647203, "AUTO_CLAMPED"], [1.1941439572647203, 133.33333333333348, "BEZIER", "AUTO", 3022.222137451172, 1.1941439572647203, "AUTO_CLAMPED", 3166.6666666666665, 1.1941439572647203, "AUTO_CLAMPED"], [0.0, 300.0, "BEZIER", "AUTO", 3266.6666666666665, 0.0, "AUTO_CLAMPED", 3466.666666666667, 0.0, "AUTO_CLAMPED"]]}}, "Mag": {"location": {"x": [[1.6590982809816524e-08, 0.0, "BEZIER", "AUTO", 55.555554231007896, 1.6590982809816524e-08, "AUTO_CLAMPED"], [1.6590982809816524e-08, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 1.6590982809816524e-08, "AUTO_CLAMPED", 277.7777671813965, 1.6590982809816524e-08, "AUTO_CLAMPED"], [-0.00021278602071106434, 333.33333333333337, "BEZIER", "AUTO", 388.88889948527014, 1.658918336033821e-08, "AUTO_CLAMPED", 555.555534362793, -0.0003191873256582767, "AUTO_CLAMPED"], [-0.11996961385011673, 166.66666666666663, "BEZIER", "AUTO", 611.1111323038737, -0.11996961385011673, "AUTO_CLAMPED", 794.444465637207, -0.11996961385011673, "AUTO_CLAMPED"], [5.424437999725342, 383.33333333333337, "BEZIER", "AUTO", 922.2222010294596, 5.351675987243652, "AUTO_CLAMPED", 1083.3333333333333, 5.443419456481934, "AUTO_CLAMPED"], [5.443419456481934, 100.0, "BEZIER", "AUTO", 1116.6666666666667, 5.43773889541626, "AUTO_CLAMPED", 1266.6666666666665, 5.463301658630371, "AUTO_CLAMPED"], [5.622357368469238, 350.0, "BEZIER", "AUTO", 1383.3333333333333, 5.622357368469238, "AUTO_CLAMPED", 1594.4444020589192, 5.622357368469238, "AUTO_CLAMPED"], [5.575819969177246, 283.33333333333326, "BACK", "AUTO", 1688.888931274414, 5.588100433349609, "AUTO_CLAMPED", 14.701579093933105], [5.515981674194336, 316.66666666666674, "BEZIER", "AUTO", 2283.333333333333, 5.412052154541016, "AUTO_CLAMPED"], [-0.003756664227694273, 550.0, "BEZIER", "AUTO", 2466.666666666667, -0.0037566630635410547, "AUTO_CLAMPED", 2688.8888041178384, -0.0037566644605249166, "AUTO_CLAMPED"], [-0.0037566644605249166, 116.66666666666652, "BEZIER", "AUTO", 2727.777862548828, -0.0037566644605249166, "AUTO_CLAMPED", 2838.8888041178384, -0.0037566644605249166, "AUTO_CLAMPED"], [1.6590982809816524e-08, 216.66666666666697, "BEZIER", "AUTO", 2911.1111958821616, 1.6590982809816524e-08, "AUTO_CLAMPED", 3055.5554707845054, 1.6590982809816524e-08, "AUTO_CLAMPED"]], "z": [[1.5, 0.0, "BEZIER", "AUTO", 55.555554231007896, 1.5, "AUTO_CLAMPED"], [1.5, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 1.5, "AUTO_CLAMPED", 277.7777671813965, 1.5, "AUTO_CLAMPED"], [1.6245688199996948, 333.33333333333337, "BEZIER", "AUTO", 388.88889948527014, 1.6245688199996948, "AUTO_CLAMPED", 555.555534362793, 1.6245688199996948, "AUTO_CLAMPED"], [1.6012111902236938, 166.66666666666663, "BEZIER", "AUTO", 611.1111323038737, 1.6012111902236938, "AUTO_CLAMPED", 794.444465637207, 1.6012111902236938, "AUTO_CLAMPED"], [2.137399435043335, 383.33333333333337, "BEZIER", "AUTO", 922.2222010294596, 2.016054153442383, "AUTO_CLAMPED", 1083.3333333333333, 2.1690547466278076, "AUTO_CLAMPED"], [2.213783025741577, 100.0, "BEZIER", "AUTO", 1116.6666666666667, 2.180736780166626, "AUTO_CLAMPED", 1266.6666666666665, 2.3294453620910645, "AUTO_CLAMPED"], [2.7068216800689697, 350.0, "BEZIER", "AUTO", 1383.3333333333333, 2.7068216800689697, "AUTO_CLAMPED", 1594.4444020589192, 2.7068216800689697, "AUTO_CLAMPED"], [2.5465469360351562, 283.33333333333326, "BACK", "AUTO", 1688.888931274414, 2.596926212310791, "AUTO_CLAMPED", 6.601579666137695], [2.3682148456573486, 316.66666666666674, "BEZIER", "AUTO", 2283.333333333333, 2.124948024749756, "AUTO_CLAMPED"], [1.4047539234161377, 550.0, "BEZIER", "AUTO", 2466.666666666667, 1.4047539234161377, "AUTO_CLAMPED", 2688.8888041178384, 1.4047539234161377, "AUTO_CLAMPED"], [1.634982943534851, 116.66666666666652, "BEZIER", "AUTO", 2727.777862548828, 1.634982943534851, "AUTO_CLAMPED", 2838.8888041178384, 1.634982943534851, "AUTO_CLAMPED"], [1.5, 216.66666666666697, "BEZIER", "AUTO", 2911.1111958821616, 1.5, "AUTO_CLAMPED", 3055.5554707845054, 1.5, "AUTO_CLAMPED"]], "y": [[2.3913047313690186, 0.0, "BEZIER", "AUTO", 55.555554231007896, 2.3913047313690186, "AUTO_CLAMPED"], [2.3913047313690186, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 2.3913047313690186, "AUTO_CLAMPED", 277.7777671813965, 2.3913047313690186, "AUTO_CLAMPED"], [3.190911054611206, 333.33333333333337, "BEZIER", "AUTO", 388.88889948527014, 2.6377265453338623, "AUTO_CLAMPED", 555.555534362793, 3.467503309249878, "AUTO_CLAMPED"], [3.820786476135254, 166.66666666666663, "BEZIER", "AUTO", 611.1111323038737, 3.820786476135254, "AUTO_CLAMPED", 794.444465637207, 3.820786476135254, "AUTO_CLAMPED"], [2.135780096054077, 383.33333333333337, "BEZIER", "AUTO", 922.2222010294596, 3.0386812686920166, "AUTO_CLAMPED", 1083.3333333333333, 1.9002406597137451, "AUTO_CLAMPED"], [1.6564807891845703, 100.0, "BEZIER", "AUTO", 1116.6666666666667, 1.6564807891845703, "AUTO_CLAMPED", 1266.6666666666665, 1.6564807891845703, "AUTO_CLAMPED"], [9.165933609008789, 350.0, "BEZIER", "AUTO", 1383.3333333333333, 9.165933609008789, "AUTO_CLAMPED", 1594.4444020589192, 9.165933609008789, "AUTO_CLAMPED"], [2.7490081787109375, 283.33333333333326, "BACK", "AUTO", 1688.888931274414, 3.3798696994781494, "AUTO_CLAMPED", 9.001579284667969], [1.6357232332229614, 499.9999999999998, "BEZIER", "AUTO", 2405.5554707845054, 1.6357232332229614, "AUTO_CLAMPED"], [3.1212010383605957, 366.66666666666697, "BEZIER", "AUTO", 2527.777862548828, 3.1212010383605957, "AUTO_CLAMPED", 2688.8888041178384, 3.1212010383605957, "AUTO_CLAMPED"], [2.9346296787261963, 116.66666666666652, "BEZIER", "AUTO", 2727.777862548828, 3.0464632511138916, "AUTO_CLAMPED", 2838.8888041178384, 2.7269389629364014, "AUTO_CLAMPED"], [2.3913047313690186, 216.66666666666697, "BEZIER", "AUTO", 2911.1111958821616, 2.3913047313690186, "AUTO_CLAMPED", 3055.5554707845054, 2.3913047313690186, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 55.555554231007896, 0.0, "AUTO_CLAMPED"], [0.0, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 0.0, "AUTO_CLAMPED", 277.7777671813965, 0.0, "AUTO_CLAMPED"], [19.9088334682391, 333.33333333333337, "BEZIER", "AUTO", 388.88889948527014, 19.9088334682391, "AUTO_CLAMPED", 555.555534362793, 19.9088334682391, "AUTO_CLAMPED"], [19.9088334682391, 166.66666666666663, "BEZIER", "AUTO", 611.1111323038737, 19.9088334682391, "AUTO_CLAMPED", 794.444465637207, 19.9088334682391, "AUTO_CLAMPED"], [17.756861134368812, 383.33333333333337, "BEZIER", "AUTO", 922.2222010294596, 17.756861134368812, "AUTO_CLAMPED", 1083.3333333333333, 17.756861134368812, "AUTO_CLAMPED"], [27.787557421139063, 100.0, "BEZIER", "AUTO", 1116.6666666666667, 27.787557421139063, "AUTO_CLAMPED", 1361.111068725586, 27.787557421139063, "AUTO_CLAMPED"], [-346.42714006153335, 633.3333333333333, "BACK", "AUTO", 1572.2222646077473, -337.1036586368992, "AUTO_CLAMPED", 1.7015800476074219], [-351.08888077385046, 316.66666666666674, "BEZIER", "AUTO", 2283.333333333333, -351.08888077385046, "AUTO_CLAMPED"], [-344.7845342076587, 550.0, "BEZIER", "AUTO", 2466.666666666667, -344.7845342076587, "AUTO_CLAMPED", 2688.8888041178384, -344.7845342076587, "AUTO_CLAMPED"], [-344.7845342076587, 116.66666666666652, "BEZIER", "AUTO", 2727.777862548828, -344.7845342076587, "AUTO_CLAMPED", 2838.8888041178384, -344.7845342076587, "AUTO_CLAMPED"], [-360.00001001791264, 216.66666666666697, "BEZIER", "AUTO", 2911.1111958821616, -360.00001001791264, "AUTO_CLAMPED", 3055.5554707845054, -360.00001001791264, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 55.555554231007896, -0.0, "AUTO_CLAMPED"], [-0.0, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, -0.0, "AUTO_CLAMPED", 277.7777671813965, -0.0, "AUTO_CLAMPED"], [0.06078959074761263, 333.33333333333337, "BEZIER", "AUTO", 388.88889948527014, 0.06078959074761263, "AUTO_CLAMPED", 555.555534362793, 0.06078959074761263, "AUTO_CLAMPED"], [0.06078959074761263, 166.66666666666663, "BEZIER", "AUTO", 611.1111323038737, 0.06078959074761263, "AUTO_CLAMPED", 794.444465637207, 0.06078959074761263, "AUTO_CLAMPED"], [12.226716510597948, 383.33333333333337, "BEZIER", "AUTO", 922.2222010294596, 12.226716510597948, "AUTO_CLAMPED", 1083.3333333333333, 12.226716510597948, "AUTO_CLAMPED"], [7.483050240507481, 100.0, "BEZIER", "AUTO", 1116.6666666666667, 9.542523029995575, "AUTO_CLAMPED", 1361.111068725586, -5.560278564615314, "AUTO_CLAMPED"], [-5.560278991502137, 633.3333333333333, "BACK", "AUTO", 1572.2222646077473, -5.560278991502137, "AUTO_CLAMPED", 9.001579284667969], [1.8954325630787217, 316.66666666666674, "BEZIER", "AUTO", 2283.333333333333, 1.8954325630787217, "AUTO_CLAMPED"], [1.877165435586934, 550.0, "BEZIER", "AUTO", 2466.666666666667, 1.877165435586934, "AUTO_CLAMPED", 2688.8888041178384, 1.877165435586934, "AUTO_CLAMPED"], [1.877165435586934, 116.66666666666652, "BEZIER", "AUTO", 2727.777862548828, 1.877165435586934, "AUTO_CLAMPED", 2838.8888041178384, 1.877165435586934, "AUTO_CLAMPED"], [-0.0, 216.66666666666697, "BEZIER", "AUTO", 2911.1111958821616, -0.0, "AUTO_CLAMPED", 3055.5554707845054, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 55.555554231007896, 0.0, "AUTO_CLAMPED"], [0.0, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 0.0, "AUTO_CLAMPED", 277.7777671813965, 0.0, "AUTO_CLAMPED"], [0.35444556998437726, 333.33333333333337, "BEZIER", "AUTO", 388.88889948527014, 0.35444556998437726, "AUTO_CLAMPED", 555.555534362793, 0.35444556998437726, "AUTO_CLAMPED"], [0.35444556998437726, 166.66666666666663, "BEZIER", "AUTO", 611.1111323038737, 0.35444556998437726, "AUTO_CLAMPED", 794.444465637207, 0.35444556998437726, "AUTO_CLAMPED"], [1.9508375635219841, 383.33333333333337, "BEZIER", "AUTO", 922.2222010294596, 1.9508375635219841, "AUTO_CLAMPED", 1083.3333333333333, 1.9508375635219841, "AUTO_CLAMPED"], [-0.5366209624963392, 100.0, "BEZIER", "AUTO", 1116.6666666666667, -0.12644982674495836, "AUTO_CLAMPED", 1361.111068725586, -3.134371675684736, "AUTO_CLAMPED"], [-3.134371462241324, 633.3333333333333, "BACK", "AUTO", 1572.2222646077473, -3.134371462241324, "AUTO_CLAMPED", 6.901579856872559], [-0.4163264435344581, 316.66666666666674, "BEZIER", "AUTO", 2283.333333333333, -0.3268274065907398, "AUTO_CLAMPED"], [-0.3268274065907398, 550.0, "BEZIER", "AUTO", 2466.666666666667, -0.3268274065907398, "AUTO_CLAMPED", 2688.8888041178384, -0.3268274065907398, "AUTO_CLAMPED"], [-0.3268274065907398, 116.66666666666652, "BEZIER", "AUTO", 2727.777862548828, -0.3268274065907398, "AUTO_CLAMPED", 2838.8888041178384, -0.3268274065907398, "AUTO_CLAMPED"], [0.0, 216.66666666666697, "BEZIER", "AUTO", 2911.1111958821616, 0.0, "AUTO_CLAMPED", 3055.5554707845054, 0.0, "AUTO_CLAMPED"]]}}}, "Jammed": {"Bolt": {"location": {"x": [[0.4437499940395355, 0.0, "BEZIER", "AUTO", 305.55556615193683, 0.4437499940395355, "AUTO_CLAMPED"]], "z": [[-1.8655332326889038, 0.0, "BEZIER", "AUTO", 122.22222487131755, -1.8655332326889038, "AUTO_CLAMPED"], [-1.8655332326889038, 366.66666666666663, "BEZIER", "EASE_IN", 244.44443384806314, -1.8655332326889038, "AUTO_CLAMPED", 405.55556615193683, -1.8655332326889038, "AUTO_CLAMPED"], [-3.3269410133361816, 116.66666666666669, "BEZIER", "AUTO", 444.44443384806317, -3.3269410133361816, "AUTO_CLAMPED", 516.6666666666666, -3.3269410133361816, "AUTO_CLAMPED"], [-3.3269410133361816, 100.00000000000006, "EXPO", "EASE_IN", 550.0, -3.3269410133361816, "AUTO_CLAMPED"], [-2.962660312652588, 49.999999999999886, "EXPO", "AUTO"], [-3.3269410133361816, 466.66666666666674, "EXPO", "EASE_IN"], [-1.8655332326889038, 83.33333333333326, "BEZIER", "AUTO", 1211.111068725586, -1.8655332326889038, "AUTO_CLAMPED"]], "y": [[1.8304203748703003, 0.0, "BEZIER", "AUTO", 305.55556615193683, 1.8304203748703003, "AUTO_CLAMPED"]]}}, "Gun": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 33.333333333333336, 0.0, "AUTO_CLAMPED"], [0.0, 100.0, "BEZIER", "AUTO", 66.66666666666667, 0.0, "AUTO_CLAMPED", 177.77776718139648, 0.0, "AUTO_CLAMPED"], [0.378823459148407, 233.33333333333331, "BEZIER", "AUTO", 255.55556615193686, 0.378823459148407, "AUTO_CLAMPED", 377.7777671813965, 0.378823459148407, "AUTO_CLAMPED"], [0.3284962773323059, 133.33333333333337, "BEZIER", "AUTO", 422.2222328186035, 0.378823459148407, "AUTO_CLAMPED", 505.5555661519369, 0.28446000814437866, "AUTO_CLAMPED"], [0.0780496671795845, 116.66666666666669, "BEZIER", "AUTO", 544.444465637207, 0.09820573776960373, "AUTO_CLAMPED", 633.3333333333333, 0.052134718745946884, "AUTO_CLAMPED"], [0.052134718745946884, 149.9999999999999, "BEZIER", "AUTO", 683.3333333333334, 0.052134718745946884, "AUTO_CLAMPED", 866.6666666666667, 0.052134718745946884, "AUTO_CLAMPED"], [0.0780496671795845, 400.0, "BEZIER", "AUTO", 1000.0, 0.0780496671795845, "AUTO_CLAMPED", 1161.111068725586, 0.0780496671795845, "AUTO_CLAMPED"], [-0.02280152216553688, 83.33333333333326, "BEZIER", "AUTO", 1188.888931274414, -0.02280152216553688, "AUTO_CLAMPED", 1244.4444020589192, -0.02280152216553688, "AUTO_CLAMPED"], [0.06624312698841095, 83.33333333333348, "BEZIER", "AUTO", 1272.2222646077475, 0.06624312698841095, "AUTO_CLAMPED", 1355.5555979410808, 0.06624312698841095, "AUTO_CLAMPED"], [0.0, 166.66666666666652, "BEZIER", "AUTO", 1411.111068725586, 0.0, "AUTO_CLAMPED", 1522.2222646077475, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 33.333333333333336, -0.0, "AUTO_CLAMPED"], [-0.0, 100.0, "BEZIER", "AUTO", 66.66666666666667, -0.0, "AUTO_CLAMPED", 177.77776718139648, -0.0, "AUTO_CLAMPED"], [0.3215503692626953, 233.33333333333331, "BEZIER", "AUTO", 255.55556615193686, 0.3215503692626953, "AUTO_CLAMPED", 377.7777671813965, 0.3215503692626953, "AUTO_CLAMPED"], [0.27883198857307434, 133.33333333333337, "BEZIER", "AUTO", 422.2222328186035, 0.3215503692626953, "AUTO_CLAMPED", 505.5555661519369, 0.2414534091949463, "AUTO_CLAMPED"], [-0.044656865298748016, 116.66666666666669, "BEZIER", "AUTO", 544.444465637207, -0.029327169060707092, "AUTO_CLAMPED", 633.3333333333333, -0.06436647474765778, "AUTO_CLAMPED"], [-0.06436647474765778, 149.9999999999999, "BEZIER", "AUTO", 683.3333333333334, -0.06436647474765778, "AUTO_CLAMPED", 866.6666666666667, -0.06436647474765778, "AUTO_CLAMPED"], [-0.044656865298748016, 400.0, "BEZIER", "AUTO", 1000.0, -0.06436647474765778, "AUTO_CLAMPED", 1161.111068725586, -0.04055069759488106, "AUTO_CLAMPED"], [0.3886209726333618, 83.33333333333326, "BEZIER", "AUTO", 1188.888931274414, 0.3886209726333618, "AUTO_CLAMPED", 1244.4444020589192, 0.3886209726333618, "AUTO_CLAMPED"], [0.21741850674152374, 83.33333333333348, "BEZIER", "AUTO", 1272.2222646077475, 0.2926041781902313, "AUTO_CLAMPED", 1355.5555979410808, 0.06704716384410858, "AUTO_CLAMPED"], [-0.0, 166.66666666666652, "BEZIER", "AUTO", 1411.111068725586, -0.0, "AUTO_CLAMPED", 1522.2222646077475, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 33.333333333333336, 0.0, "AUTO_CLAMPED"], [0.0, 100.0, "BEZIER", "AUTO", 66.66666666666667, 0.0, "AUTO_CLAMPED", 177.77776718139648, 0.0, "AUTO_CLAMPED"], [-0.03033590316772461, 233.33333333333331, "BEZIER", "AUTO", 255.55556615193686, -0.03033590316772461, "AUTO_CLAMPED", 377.7777671813965, -0.03033590316772461, "AUTO_CLAMPED"], [-0.013926569372415543, 133.33333333333337, "BEZIER", "AUTO", 422.2222328186035, -0.022176561877131462, "AUTO_CLAMPED", 505.5555661519369, -0.006707826163619757, "AUTO_CLAMPED"], [0.000580325722694397, 116.66666666666669, "BEZIER", "AUTO", 544.444465637207, 0.000580325722694397, "AUTO_CLAMPED", 633.3333333333333, 0.000580325722694397, "AUTO_CLAMPED"], [-0.08202043920755386, 149.9999999999999, "BEZIER", "AUTO", 683.3333333333334, -0.08202043920755386, "AUTO_CLAMPED", 866.6666666666667, -0.08202043920755386, "AUTO_CLAMPED"], [0.000580325722694397, 400.0, "BEZIER", "AUTO", 1000.0, 0.000580325722694397, "AUTO_CLAMPED", 1161.111068725586, 0.000580325722694397, "AUTO_CLAMPED"], [-0.027275841683149338, 83.33333333333326, "BEZIER", "AUTO", 1188.888931274414, -0.027275841683149338, "AUTO_CLAMPED", 1244.4444020589192, -0.027275841683149338, "AUTO_CLAMPED"], [0.007577709853649139, 83.33333333333348, "BEZIER", "AUTO", 1272.2222646077475, 0.007577709853649139, "AUTO_CLAMPED", 1355.5555979410808, 0.007577709853649139, "AUTO_CLAMPED"], [0.0, 166.66666666666652, "BEZIER", "AUTO", 1411.111068725586, 0.0, "AUTO_CLAMPED", 1522.2222646077475, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, 0.0, "AUTO_CLAMPED"], [0.0, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, 0.0, "AUTO_CLAMPED", 200.0, 0.0, "AUTO_CLAMPED"], [-9.762812852427766, 199.99999999999997, "BEZIER", "AUTO", 266.6666666666667, -9.762812852427766, "AUTO_CLAMPED", 377.7777671813965, -9.762812852427766, "AUTO_CLAMPED"], [-8.46581115546112, 133.33333333333337, "BEZIER", "AUTO", 422.2222328186035, -8.46581115546112, "AUTO_CLAMPED", 505.5555661519369, -8.46581115546112, "AUTO_CLAMPED"], [-9.922516335601005, 116.66666666666669, "BEZIER", "AUTO", 544.444465637207, -9.922516335601005, "AUTO_CLAMPED", 633.3333333333333, -9.922516335601005, "AUTO_CLAMPED"], [-5.976405705364225, 149.9999999999999, "BEZIER", "AUTO", 683.3333333333334, -5.976405705364225, "AUTO_CLAMPED", 866.6666666666667, -5.976405705364225, "AUTO_CLAMPED"], [-9.922516335601005, 400.0, "BEZIER", "AUTO", 1000.0, -9.922516335601005, "AUTO_CLAMPED", 1161.111068725586, -9.922516335601005, "AUTO_CLAMPED"], [-1.247449955198673, 83.33333333333326, "BEZIER", "AUTO", 1188.888931274414, -1.247449955198673, "AUTO_CLAMPED", 1244.4444020589192, -1.247449955198673, "AUTO_CLAMPED"], [-3.5616000082690333, 83.33333333333348, "BEZIER", "AUTO", 1272.2222646077475, -3.5616000082690333, "AUTO_CLAMPED", 1355.5555979410808, -3.5616000082690333, "AUTO_CLAMPED"], [0.0, 166.66666666666652, "BEZIER", "AUTO", 1411.111068725586, 0.0, "AUTO_CLAMPED", 1522.2222646077475, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, -0.0, "AUTO_CLAMPED"], [-0.0, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, -0.0, "AUTO_CLAMPED", 200.0, -0.0, "AUTO_CLAMPED"], [12.070624489948354, 199.99999999999997, "BEZIER", "AUTO", 266.6666666666667, 12.070624489948354, "AUTO_CLAMPED", 377.7777671813965, 12.070624489948354, "AUTO_CLAMPED"], [10.467026700197236, 133.33333333333337, "BEZIER", "AUTO", 422.2222328186035, 11.19349074296167, "AUTO_CLAMPED", 505.5555661519369, 9.831370876221769, "AUTO_CLAMPED"], [8.542568821353722, 116.66666666666669, "BEZIER", "AUTO", 544.444465637207, 9.311070970912292, "AUTO_CLAMPED", 633.3333333333333, 7.55449487299946, "AUTO_CLAMPED"], [6.156128899881594, 149.9999999999999, "BEZIER", "AUTO", 683.3333333333334, 6.156128899881594, "AUTO_CLAMPED", 866.6666666666667, 6.156128899881594, "AUTO_CLAMPED"], [8.542568821353722, 400.0, "BEZIER", "AUTO", 1000.0, 8.542568821353722, "AUTO_CLAMPED", 1161.111068725586, 8.542568821353722, "AUTO_CLAMPED"], [6.806507196613024, 83.33333333333326, "BEZIER", "AUTO", 1188.888931274414, 7.8036123625973355, "AUTO_CLAMPED", 1244.4444020589192, 5.80940160374189, "AUTO_CLAMPED"], [3.4902371246036825, 83.33333333333348, "BEZIER", "AUTO", 1272.2222646077475, 4.554145169208715, "AUTO_CLAMPED", 1355.5555979410808, 1.3624208219502054, "AUTO_CLAMPED"], [-0.0, 166.66666666666652, "BEZIER", "AUTO", 1411.111068725586, -0.0, "AUTO_CLAMPED", 1522.2222646077475, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, 0.0, "AUTO_CLAMPED"], [0.0, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, 0.0, "AUTO_CLAMPED", 200.0, 0.0, "AUTO_CLAMPED"], [6.133171353420711, 199.99999999999997, "BEZIER", "AUTO", 266.6666666666667, 6.133171353420711, "AUTO_CLAMPED", 377.7777671813965, 6.133171353420711, "AUTO_CLAMPED"], [5.3183716203468565, 133.33333333333337, "BEZIER", "AUTO", 422.2222328186035, 6.133171353420711, "AUTO_CLAMPED", 505.5555661519369, 4.60542196062894, "AUTO_CLAMPED"], [2.264997877368833, 116.66666666666669, "BEZIER", "AUTO", 544.444465637207, 2.451486801145922, "AUTO_CLAMPED", 633.3333333333333, 2.0252264344330624, "AUTO_CLAMPED"], [2.0252264344330624, 149.9999999999999, "BEZIER", "AUTO", 683.3333333333334, 2.0252264344330624, "AUTO_CLAMPED", 866.6666666666667, 2.0252264344330624, "AUTO_CLAMPED"], [2.264997877368833, 400.0, "BEZIER", "AUTO", 1000.0, 2.0252264344330624, "AUTO_CLAMPED", 1161.111068725586, 2.3149502524203096, "AUTO_CLAMPED"], [4.3664396179857174, 83.33333333333326, "BEZIER", "AUTO", 1188.888931274414, 4.3664396179857174, "AUTO_CLAMPED", 1244.4444020589192, 4.3664396179857174, "AUTO_CLAMPED"], [0.9566294649628159, 83.33333333333348, "BEZIER", "AUTO", 1272.2222646077475, 1.4349441974442239, "AUTO_CLAMPED", 1355.5555979410808, 0.0, "AUTO_CLAMPED"], [0.0, 166.66666666666652, "BEZIER", "AUTO", 1411.111068725586, 0.0, "AUTO_CLAMPED", 1522.2222646077475, 0.0, "AUTO_CLAMPED"]]}}}, "Reload": {"Bolt": {"location": {"x": [[0.4437499940395355, 0.0, "BEZIER", "AUTO", 933.3333333333334, 0.4437499940395355, "AUTO_CLAMPED"]], "z": [[-1.8655332326889038, 0.0, "BEZIER", "AUTO", 916.6666666666666, -1.8655332326889038, "AUTO_CLAMPED"], [-1.8655332326889038, 2750.0, "BEZIER", "EASE_IN", 1833.3333333333333, -1.8655332326889038, "AUTO_CLAMPED", 2788.8888041178384, -1.8655332326889038, "AUTO_CLAMPED"], [-3.3269410133361816, 116.66666666666652, "BEZIER", "AUTO", 2827.777862548828, -3.3269410133361816, "AUTO_CLAMPED", 2900.0, -3.3269410133361816, "AUTO_CLAMPED"], [-3.3269410133361816, 100.00000000000045, "EXPO", "EASE_IN", 2933.333333333333, -3.3269410133361816, "AUTO_CLAMPED"], [-1.8655332326889038, 83.33333333333303, "BEZIER", "AUTO", 3077.777862548828, -1.8655332326889038, "AUTO_CLAMPED"]], "y": [[1.8304203748703003, 0.0, "BEZIER", "AUTO", 933.3333333333334, 1.8304203748703003, "AUTO_CLAMPED"]]}}, "Gun": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 55.555554231007896, 0.0, "AUTO_CLAMPED"], [0.07114996761083603, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 0.07114996761083603, "AUTO_CLAMPED", 205.5555502573649, 0.07114996761083603, "AUTO_CLAMPED"], [0.06900998950004578, 116.66666666666666, "BEZIER", "AUTO", 244.4444497426351, 0.07114996761083603, "AUTO_CLAMPED", 344.44443384806317, 0.0656471699476242, "AUTO_CLAMPED"], [0.04820222035050392, 183.33333333333337, "BEZIER", "AUTO", 405.55556615193683, 0.04820222035050392, "AUTO_CLAMPED", 561.1111323038737, 0.04820222035050392, "AUTO_CLAMPED"], [0.05328037589788437, 283.3333333333333, "BEZIER", "AUTO", 655.555534362793, 0.05328037589788437, "AUTO_CLAMPED", 894.444465637207, 0.05328037589788437, "AUTO_CLAMPED"], [-0.06346340477466583, 433.33333333333326, "BEZIER", "AUTO", 1038.8888676961262, -0.06346340477466583, "AUTO_CLAMPED", 1538.888931274414, -0.06346340477466583, "AUTO_CLAMPED"], [0.17794586718082428, 1066.6666666666667, "BEZIER", "AUTO", 1894.4444020589192, -0.06346340477466583, "AUTO_CLAMPED", 2305.5554707845054, 0.21566607058048248, "AUTO_CLAMPED"], [0.3289692997932434, 166.66666666666652, "BEZIER", "AUTO", 2361.111195882161, 0.3043280839920044, "AUTO_CLAMPED", 2461.1111958821616, 0.3486822843551636, "AUTO_CLAMPED"], [0.3486822843551636, 133.33333333333348, "BEZIER", "AUTO", 2505.5554707845054, 0.34406736493110657, "AUTO_CLAMPED", 2611.111195882161, 0.35502779483795166, "AUTO_CLAMPED"], [0.378823459148407, 183.33333333333348, "BEZIER", "AUTO", 2672.222137451172, 0.378823459148407, "AUTO_CLAMPED", 2777.777862548828, 0.378823459148407, "AUTO_CLAMPED"], [0.3284962773323059, 133.33333333333303, "BEZIER", "AUTO", 2822.222137451172, 0.378823459148407, "AUTO_CLAMPED", 2905.5554707845054, 0.28446000814437866, "AUTO_CLAMPED"], [0.0780496671795845, 116.66666666666697, "BEZIER", "AUTO", 2944.4445292154946, 0.12340082228183746, "AUTO_CLAMPED", 3005.5554707845054, 0.052134718745946884, "AUTO_CLAMPED"], [0.052134718745946884, 66.66666666666652, "BEZIER", "AUTO", 3027.777862548828, 0.052134718745946884, "AUTO_CLAMPED", 3077.777862548828, 0.052134718745946884, "AUTO_CLAMPED"], [0.06624312698841095, 83.33333333333348, "BEZIER", "AUTO", 3105.555470784505, 0.06624312698841095, "AUTO_CLAMPED", 3194.4445292154946, 0.06624312698841095, "AUTO_CLAMPED"], [0.0, 183.33333333333303, "BEZIER", "AUTO", 3255.5554707845054, 0.0, "AUTO_CLAMPED", 3377.777862548828, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 55.555554231007896, -0.0, "AUTO_CLAMPED"], [0.10114581137895584, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 0.10114581137895584, "AUTO_CLAMPED", 205.5555502573649, 0.10114581137895584, "AUTO_CLAMPED"], [-0.1629212200641632, 116.66666666666666, "BEZIER", "AUTO", 244.4444497426351, -0.1629212200641632, "AUTO_CLAMPED", 344.44443384806317, -0.1629212200641632, "AUTO_CLAMPED"], [-0.004916742444038391, 183.33333333333337, "BEZIER", "AUTO", 405.55556615193683, -0.020956357941031456, "AUTO_CLAMPED", 561.1111323038737, 0.019871752709150314, "AUTO_CLAMPED"], [0.019871752709150314, 283.3333333333333, "BEZIER", "AUTO", 655.555534362793, 0.019871752709150314, "AUTO_CLAMPED", 894.444465637207, 0.019871752709150314, "AUTO_CLAMPED"], [-0.05724658444523811, 433.33333333333326, "BEZIER", "AUTO", 1038.8888676961262, -0.05724658444523811, "AUTO_CLAMPED", 1538.888931274414, -0.05724658444523811, "AUTO_CLAMPED"], [0.06616419553756714, 1066.6666666666667, "BEZIER", "AUTO", 1894.4444020589192, -0.057246580719947815, "AUTO_CLAMPED", 2305.5554707845054, 0.08544713258743286, "AUTO_CLAMPED"], [0.35016486048698425, 166.66666666666652, "BEZIER", "AUTO", 2361.111195882161, 0.35016486048698425, "AUTO_CLAMPED", 2461.1111958821616, 0.35016486048698425, "AUTO_CLAMPED"], [0.22380617260932922, 133.33333333333348, "BEZIER", "AUTO", 2505.5554707845054, 0.22380617260932922, "AUTO_CLAMPED", 2611.111195882161, 0.22380617260932922, "AUTO_CLAMPED"], [0.3215503692626953, 183.33333333333348, "BEZIER", "AUTO", 2672.222137451172, 0.3215503692626953, "AUTO_CLAMPED", 2777.777862548828, 0.3215503692626953, "AUTO_CLAMPED"], [0.27883198857307434, 133.33333333333303, "BEZIER", "AUTO", 2822.222137451172, 0.3215503692626953, "AUTO_CLAMPED", 2905.5554707845054, 0.2414534091949463, "AUTO_CLAMPED"], [-0.044656865298748016, 116.66666666666697, "BEZIER", "AUTO", 2944.4445292154946, -0.010165050625801086, "AUTO_CLAMPED", 3005.5554707845054, -0.06436647474765778, "AUTO_CLAMPED"], [-0.06436647474765778, 66.66666666666652, "BEZIER", "AUTO", 3027.777862548828, -0.06436647474765778, "AUTO_CLAMPED", 3077.777862548828, -0.06436647474765778, "AUTO_CLAMPED"], [0.21741850674152374, 83.33333333333348, "BEZIER", "AUTO", 3105.555470784505, 0.21741850674152374, "AUTO_CLAMPED", 3194.4445292154946, 0.21741850674152374, "AUTO_CLAMPED"], [-0.0, 183.33333333333303, "BEZIER", "AUTO", 3255.5554707845054, -0.0, "AUTO_CLAMPED", 3377.777862548828, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 55.555554231007896, 0.0, "AUTO_CLAMPED"], [-0.29975396394729614, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, -0.11118181049823761, "AUTO_CLAMPED", 205.5555502573649, -0.431754469871521, "AUTO_CLAMPED"], [-0.6016762852668762, 116.66666666666666, "BEZIER", "AUTO", 244.4444497426351, -0.6016762852668762, "AUTO_CLAMPED", 344.44443384806317, -0.6016762852668762, "AUTO_CLAMPED"], [-0.2427852749824524, 183.33333333333337, "BEZIER", "AUTO", 405.55556615193683, -0.2427852749824524, "AUTO_CLAMPED", 561.1111323038737, -0.2427852749824524, "AUTO_CLAMPED"], [-0.5669558644294739, 283.3333333333333, "BEZIER", "AUTO", 655.555534362793, -0.4411567151546478, "AUTO_CLAMPED", 894.444465637207, -0.7593545913696289, "AUTO_CLAMPED"], [-0.7819992303848267, 433.33333333333326, "BEZIER", "AUTO", 1038.8888676961262, -0.7819992303848267, "AUTO_CLAMPED", 1538.888931274414, -0.7819992303848267, "AUTO_CLAMPED"], [-0.31888678669929504, 1066.6666666666667, "BEZIER", "AUTO", 1894.4444020589192, -0.4946317672729492, "AUTO_CLAMPED", 2305.5554707845054, -0.2914266288280487, "AUTO_CLAMPED"], [-0.2666915953159332, 166.66666666666652, "BEZIER", "AUTO", 2361.111195882161, -0.2666915953159332, "AUTO_CLAMPED", 2461.1111958821616, -0.2666915953159332, "AUTO_CLAMPED"], [-1.1831088066101074, 133.33333333333348, "BEZIER", "AUTO", 2505.5554707845054, -1.1831088066101074, "AUTO_CLAMPED", 2611.111195882161, -1.1831088066101074, "AUTO_CLAMPED"], [-0.03033590316772461, 183.33333333333348, "BEZIER", "AUTO", 2672.222137451172, -0.05289873480796814, "AUTO_CLAMPED", 2777.777862548828, -0.013926569372415543, "AUTO_CLAMPED"], [-0.013926569372415543, 133.33333333333303, "BEZIER", "AUTO", 2822.222137451172, -0.018347715958952904, "AUTO_CLAMPED", 2905.5554707845054, -0.010058065876364708, "AUTO_CLAMPED"], [0.000580325722694397, 116.66666666666697, "BEZIER", "AUTO", 2944.4445292154946, 0.000580325722694397, "AUTO_CLAMPED", 3005.5554707845054, 0.000580325722694397, "AUTO_CLAMPED"], [-0.08202043920755386, 66.66666666666652, "BEZIER", "AUTO", 3027.777862548828, -0.08202043920755386, "AUTO_CLAMPED", 3077.777862548828, -0.08202043920755386, "AUTO_CLAMPED"], [0.007577709853649139, 83.33333333333348, "BEZIER", "AUTO", 3105.555470784505, 0.007577709853649139, "AUTO_CLAMPED", 3194.4445292154946, 0.007577709853649139, "AUTO_CLAMPED"], [0.0, 183.33333333333303, "BEZIER", "AUTO", 3255.5554707845054, 0.0, "AUTO_CLAMPED", 3377.777862548828, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 55.555554231007896, 0.0, "AUTO_CLAMPED"], [2.9641926033154022, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 2.9641926033154022, "AUTO_CLAMPED", 205.5555502573649, 2.9641926033154022, "AUTO_CLAMPED"], [2.9641926033154022, 116.66666666666666, "BEZIER", "AUTO", 244.4444497426351, 2.9641926033154022, "AUTO_CLAMPED", 344.44443384806317, 2.9641926033154022, "AUTO_CLAMPED"], [-1.8676834254716639, 183.33333333333337, "BEZIER", "AUTO", 405.55556615193683, -1.8676834254716639, "AUTO_CLAMPED", 527.7777671813965, -1.8676834254716639, "AUTO_CLAMPED"], [0.692141648494032, 183.33333333333331, "BEZIER", "AUTO", 588.8888676961262, -0.02622915371246545, "AUTO_CLAMPED", 877.7777989705403, 3.3697056300941135, "AUTO_CLAMPED"], [3.3697056300941135, 683.3333333333333, "BEZIER", "AUTO", 1105.5555979410808, 3.3697056300941135, "AUTO_CLAMPED", 1638.8889312744138, 3.3697056300941135, "AUTO_CLAMPED"], [-4.827653264332706, 916.6666666666667, "BEZIER", "AUTO", 1944.4444020589194, 3.3697058435375253, "AUTO_CLAMPED", 2305.5554707845054, -6.318082076612705, "AUTO_CLAMPED"], [-9.225060960015261, 166.66666666666652, "BEZIER", "AUTO", 2361.111195882161, -9.225060960015261, "AUTO_CLAMPED", 2461.1111958821616, -9.225060960015261, "AUTO_CLAMPED"], [-5.332826008177896, 133.33333333333348, "BEZIER", "AUTO", 2505.5554707845054, -5.332826008177896, "AUTO_CLAMPED", 2611.111195882161, -5.332826008177896, "AUTO_CLAMPED"], [-9.762812852427766, 183.33333333333348, "BEZIER", "AUTO", 2672.222137451172, -9.762812852427766, "AUTO_CLAMPED", 2777.777862548828, -9.762812852427766, "AUTO_CLAMPED"], [-8.46581115546112, 133.33333333333303, "BEZIER", "AUTO", 2822.222137451172, -8.46581115546112, "AUTO_CLAMPED", 2905.5554707845054, -8.46581115546112, "AUTO_CLAMPED"], [-9.922516335601005, 116.66666666666697, "BEZIER", "AUTO", 2944.4445292154946, -9.922516335601005, "AUTO_CLAMPED", 3005.5554707845054, -9.922516335601005, "AUTO_CLAMPED"], [-5.976405705364225, 66.66666666666652, "BEZIER", "AUTO", 3027.777862548828, -7.419543141604702, "AUTO_CLAMPED", 3077.777862548828, -4.172483589898511, "AUTO_CLAMPED"], [-3.5616000082690333, 83.33333333333348, "BEZIER", "AUTO", 3105.555470784505, -4.024545961344266, "AUTO_CLAMPED", 3194.4445292154946, -2.543118911503521, "AUTO_CLAMPED"], [0.0, 183.33333333333303, "BEZIER", "AUTO", 3255.5554707845054, 0.0, "AUTO_CLAMPED", 3377.777862548828, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 55.555554231007896, -0.0, "AUTO_CLAMPED"], [-0.97928136045834, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, -0.97928136045834, "AUTO_CLAMPED", 205.5555502573649, -0.97928136045834, "AUTO_CLAMPED"], [-0.97928136045834, 116.66666666666666, "BEZIER", "AUTO", 244.4444497426351, -0.97928136045834, "AUTO_CLAMPED", 344.44443384806317, -0.97928136045834, "AUTO_CLAMPED"], [-0.8304706416290971, 183.33333333333337, "BEZIER", "AUTO", 405.55556615193683, -0.8304706416290971, "AUTO_CLAMPED", 527.7777671813965, -0.8304706416290971, "AUTO_CLAMPED"], [-0.8304706416290971, 183.33333333333331, "BEZIER", "AUTO", 588.8888676961262, -0.8304706416290971, "AUTO_CLAMPED", 877.7777989705403, -0.8304706416290971, "AUTO_CLAMPED"], [13.812658261344582, 683.3333333333333, "BEZIER", "AUTO", 1105.5555979410808, 13.812658261344582, "AUTO_CLAMPED", 1638.8889312744138, 13.812658261344582, "AUTO_CLAMPED"], [3.3376227374586827, 916.6666666666667, "BEZIER", "AUTO", 1944.4444020589194, 3.3376227374586827, "AUTO_CLAMPED", 2305.5554707845054, 3.3376227374586827, "AUTO_CLAMPED"], [5.674417428948574, 166.66666666666652, "BEZIER", "AUTO", 2361.111195882161, 5.674417428948574, "AUTO_CLAMPED", 2461.1111958821616, 5.674417428948574, "AUTO_CLAMPED"], [3.6080137050002086, 133.33333333333348, "BEZIER", "AUTO", 2505.5554707845054, 3.6080137050002086, "AUTO_CLAMPED", 2611.111195882161, 3.6080137050002086, "AUTO_CLAMPED"], [12.070624489948354, 183.33333333333348, "BEZIER", "AUTO", 2672.222137451172, 12.070624489948354, "AUTO_CLAMPED", 2777.777862548828, 12.070624489948354, "AUTO_CLAMPED"], [10.467026700197236, 133.33333333333303, "BEZIER", "AUTO", 2822.222137451172, 11.08395414546853, "AUTO_CLAMPED", 2905.5554707845054, 9.927215505749972, "AUTO_CLAMPED"], [8.542568821353722, 116.66666666666697, "BEZIER", "AUTO", 2944.4445292154946, 9.67049003919035, "AUTO_CLAMPED", 3005.5554707845054, 7.8980422891937, "AUTO_CLAMPED"], [6.156128899881594, 66.66666666666652, "BEZIER", "AUTO", 3027.777862548828, 6.969043500744525, "AUTO_CLAMPED", 3077.777862548828, 5.139985862246341, "AUTO_CLAMPED"], [3.4902371246036825, 83.33333333333348, "BEZIER", "AUTO", 3105.555470784505, 4.305224474436301, "AUTO_CLAMPED", 3194.4445292154946, 1.697264656151145, "AUTO_CLAMPED"], [-0.0, 183.33333333333303, "BEZIER", "AUTO", 3255.5554707845054, -0.0, "AUTO_CLAMPED", 3377.777862548828, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 55.555554231007896, 0.0, "AUTO_CLAMPED"], [0.35034732308023736, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 0.35034732308023736, "AUTO_CLAMPED", 205.5555502573649, 0.35034732308023736, "AUTO_CLAMPED"], [0.35034732308023736, 116.66666666666666, "BEZIER", "AUTO", 244.4444497426351, 0.35034732308023736, "AUTO_CLAMPED", 344.44443384806317, 0.35034732308023736, "AUTO_CLAMPED"], [0.007649265755435478, 183.33333333333337, "BEZIER", "AUTO", 405.55556615193683, 0.007649265755435478, "AUTO_CLAMPED", 527.7777671813965, 0.007649265755435478, "AUTO_CLAMPED"], [0.007649265755435478, 183.33333333333331, "BEZIER", "AUTO", 588.8888676961262, 0.007649265755435478, "AUTO_CLAMPED", 877.7777989705403, 0.007649265755435478, "AUTO_CLAMPED"], [0.22848543578639705, 683.3333333333333, "BEZIER", "AUTO", 1105.5555979410808, 0.0800165065601324, "AUTO_CLAMPED", 1638.8889312744138, 0.42765108394132434, "AUTO_CLAMPED"], [0.7637636524610204, 916.6666666666667, "BEZIER", "AUTO", 1944.4444020589194, 0.7637636524610204, "AUTO_CLAMPED", 2305.5554707845054, 0.7637636524610204, "AUTO_CLAMPED"], [0.04634753594369751, 166.66666666666652, "BEZIER", "AUTO", 2361.111195882161, 0.04634753594369751, "AUTO_CLAMPED", 2461.1111958821616, 0.04634753594369751, "AUTO_CLAMPED"], [0.6907170204435554, 133.33333333333348, "BEZIER", "AUTO", 2505.5554707845054, 0.0463475292735909, "AUTO_CLAMPED", 2611.111195882161, 1.576725050791937, "AUTO_CLAMPED"], [6.133171353420711, 183.33333333333348, "BEZIER", "AUTO", 2672.222137451172, 6.133171353420711, "AUTO_CLAMPED", 2777.777862548828, 6.133171353420711, "AUTO_CLAMPED"], [5.3183716203468565, 133.33333333333303, "BEZIER", "AUTO", 2822.222137451172, 6.133171353420711, "AUTO_CLAMPED", 2905.5554707845054, 4.60542196062894, "AUTO_CLAMPED"], [2.264997877368833, 116.66666666666697, "BEZIER", "AUTO", 2944.4445292154946, 2.684597955867284, "AUTO_CLAMPED", 3005.5554707845054, 2.0252264344330624, "AUTO_CLAMPED"], [2.0252264344330624, 66.66666666666652, "BEZIER", "AUTO", 3027.777862548828, 2.147129516305334, "AUTO_CLAMPED", 3077.777862548828, 1.8728476888144283, "AUTO_CLAMPED"], [0.9566294649628159, 83.33333333333348, "BEZIER", "AUTO", 3105.555470784505, 1.339521972427503, "AUTO_CLAMPED", 3194.4445292154946, 0.11426586316313989, "AUTO_CLAMPED"], [0.0, 183.33333333333303, "BEZIER", "AUTO", 3255.5554707845054, 0.0, "AUTO_CLAMPED", 3377.777862548828, 0.0, "AUTO_CLAMPED"]]}}, "Mag": {"location": {"x": [[1.6590982809816524e-08, 0.0, "BEZIER", "AUTO", 55.555554231007896, 1.6590982809816524e-08, "AUTO_CLAMPED"], [1.6590982809816524e-08, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 1.6590982809816524e-08, "AUTO_CLAMPED", 250.0, 1.6590982809816524e-08, "AUTO_CLAMPED"], [-0.00021278602071106434, 250.00000000000003, "BEZIER", "AUTO", 333.3333333333333, 1.658918336033821e-08, "AUTO_CLAMPED", 461.1111005147298, -0.00032628074404783547, "AUTO_CLAMPED"], [-0.08896885067224503, 133.33333333333331, "BEZIER", "AUTO", 505.5555661519369, -0.08896885067224503, "AUTO_CLAMPED", 594.444465637207, -0.08896885067224503, "AUTO_CLAMPED"], [0.49737149477005005, 133.33333333333337, "BEZIER", "AUTO", 638.8888676961263, -0.07979017496109009, "AUTO_CLAMPED", 744.444465637207, 1.2909687757492065, "AUTO_CLAMPED"], [4.048333168029785, 183.33333333333337, "BEZIER", "AUTO", 805.555534362793, 3.1584081649780273, "AUTO_CLAMPED", 911.1111323038737, 4.69555139541626, "AUTO_CLAMPED"], [6.1233038902282715, 133.33333333333326, "BEZIER", "EASE_IN", 955.555534362793, 4.825736999511719, "AUTO_CLAMPED", 1100.0, 9.042829513549805, "AUTO_CLAMPED"], [17.87222671508789, 300.0, "CONSTANT", "AUTO", 1200.0, 17.87222671508789, "AUTO_CLAMPED"], [4.58225154876709, 216.66666666666652, "BEZIER", "AUTO", 1650.0, 2.1092658042907715, "AUTO_CLAMPED"], [2.1092658042907715, 400.0000000000002, "BEZIER", "AUTO", 1783.3333333333333, 2.669361114501953, "AUTO_CLAMPED", 2000.0, 1.7592062950134277, "AUTO_CLAMPED"], [0.5067520141601562, 249.99999999999977, "BEZIER", "AUTO", 2083.3333333333335, 0.9715721607208252, "AUTO_CLAMPED", 2227.777862548828, 0.165883868932724, "AUTO_CLAMPED"], [-0.001381576294079423, 183.33333333333348, "BEZIER", "AUTO", 2288.8888041178384, -0.001381576294079423, "AUTO_CLAMPED", 2400.0, -0.001381576294079423, "AUTO_CLAMPED"], [1.6590982809816524e-08, 150.0, "BEZIER", "AUTO", 2450.0, 1.6590982809816524e-08, "AUTO_CLAMPED", 2550.0, 1.6590982809816524e-08, "AUTO_CLAMPED"]], "z": [[1.5, 0.0, "BEZIER", "AUTO", 55.555554231007896, 1.5, "AUTO_CLAMPED"], [1.5, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 1.5, "AUTO_CLAMPED", 250.0, 1.5, "AUTO_CLAMPED"], [1.6245688199996948, 250.00000000000003, "BEZIER", "AUTO", 333.3333333333333, 1.6245688199996948, "AUTO_CLAMPED", 461.1111005147298, 1.6245688199996948, "AUTO_CLAMPED"], [1.6176480054855347, 133.33333333333331, "BEZIER", "AUTO", 505.5555661519369, 1.6193782091140747, "AUTO_CLAMPED", 594.444465637207, 1.6159178018569946, "AUTO_CLAMPED"], [1.6000792980194092, 133.33333333333337, "BEZIER", "AUTO", 638.8888676961263, 1.6176480054855347, "AUTO_CLAMPED", 744.444465637207, 1.5759223699569702, "AUTO_CLAMPED"], [-1.4766695499420166, 183.33333333333337, "BEZIER", "AUTO", 805.555534362793, -1.4766695499420166, "AUTO_CLAMPED", 911.1111323038737, -1.4766695499420166, "AUTO_CLAMPED"], [-1.1554278135299683, 133.33333333333326, "BEZIER", "EASE_IN", 955.555534362793, -1.4023916721343994, "AUTO_CLAMPED", 1100.0, -0.5997589826583862, "AUTO_CLAMPED"], [0.8301324844360352, 300.0, "CONSTANT", "AUTO", 1200.0, 0.8301324844360352, "AUTO_CLAMPED"], [-2.845935821533203, 216.66666666666652, "BEZIER", "AUTO", 1650.0, -2.845935821533203, "AUTO_CLAMPED"], [-2.06758451461792, 400.0000000000002, "BEZIER", "AUTO", 1783.3333333333333, -2.845935821533203, "AUTO_CLAMPED", 2000.0, -1.5811150074005127, "AUTO_CLAMPED"], [1.2230087518692017, 249.99999999999977, "BEZIER", "AUTO", 2083.3333333333335, 0.7558850049972534, "AUTO_CLAMPED", 2227.777862548828, 1.5655661821365356, "AUTO_CLAMPED"], [1.5655661821365356, 183.33333333333348, "BEZIER", "AUTO", 2288.8888041178384, 1.5655661821365356, "AUTO_CLAMPED", 2400.0, 1.5655661821365356, "AUTO_CLAMPED"], [1.5, 150.0, "BEZIER", "AUTO", 2450.0, 1.5, "AUTO_CLAMPED", 2550.0, 1.5, "AUTO_CLAMPED"]], "y": [[2.3913047313690186, 0.0, "BEZIER", "AUTO", 55.555554231007896, 2.3913047313690186, "AUTO_CLAMPED"], [2.3913047313690186, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 2.3913047313690186, "AUTO_CLAMPED", 250.0, 2.3913047313690186, "AUTO_CLAMPED"], [3.190911054611206, 250.00000000000003, "BEZIER", "AUTO", 333.3333333333333, 2.795443058013916, "AUTO_CLAMPED", 461.1111005147298, 3.401827335357666, "AUTO_CLAMPED"], [3.736901044845581, 133.33333333333331, "BEZIER", "AUTO", 505.5555661519369, 3.6102774143218994, "AUTO_CLAMPED", 594.444465637207, 3.8635246753692627, "AUTO_CLAMPED"], [3.9083218574523926, 133.33333333333337, "BEZIER", "AUTO", 638.8888676961263, 3.9083218574523926, "AUTO_CLAMPED", 777.7777989705403, 3.9083218574523926, "AUTO_CLAMPED"], [2.154109477996826, 283.33333333333326, "BEZIER", "AUTO", 938.4711583455404, 0.7801735401153564, "ALIGNED", 1088.4118398030598, 8.086616516113281, "ALIGNED"], [-8.979971885681152, 333.33333333333337, "CONSTANT", "AUTO", 1262.9019419352214, -4.779057025909424, "ALIGNED"], [-4.248352527618408, 216.66666666666652, "BEZIER", "AUTO", 1650.0, 0.3588838577270508, "AUTO_CLAMPED"], [2.7332305908203125, 400.0000000000002, "BEZIER", "AUTO", 1783.3333333333333, 2.5646088123321533, "AUTO_CLAMPED", 2000.0, 2.8386192321777344, "AUTO_CLAMPED"], [2.8386192321777344, 249.99999999999977, "BEZIER", "AUTO", 2083.3333333333335, 2.8386192321777344, "AUTO_CLAMPED", 2227.777862548828, 2.8386192321777344, "AUTO_CLAMPED"], [2.8217806816101074, 183.33333333333348, "BEZIER", "AUTO", 2288.8888041178384, 2.8386192321777344, "AUTO_CLAMPED", 2400.0, 2.8080036640167236, "AUTO_CLAMPED"], [2.3913047313690186, 150.0, "BEZIER", "AUTO", 2450.0, 2.3913047313690186, "AUTO_CLAMPED", 2550.0, 2.3913047313690186, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 55.555554231007896, 0.0, "AUTO_CLAMPED"], [0.0, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 0.0, "AUTO_CLAMPED", 250.0, 0.0, "AUTO_CLAMPED"], [19.9088334682391, 250.00000000000003, "BEZIER", "AUTO", 333.3333333333333, 19.9088334682391, "AUTO_CLAMPED", 450.0, 19.9088334682391, "AUTO_CLAMPED"], [19.9088334682391, 99.99999999999994, "BEZIER", "AUTO", 483.3333333333333, 19.9088334682391, "AUTO_CLAMPED", 588.8888676961262, 19.9088334682391, "AUTO_CLAMPED"], [19.65956571447948, 216.66666666666663, "BEZIER", "AUTO", 661.1111323038737, 19.9088334682391, "AUTO_CLAMPED", 822.2222010294596, 19.352774107530017, "AUTO_CLAMPED"], [6.8487506359690835, 266.66666666666674, "BEZIER", "EASE_IN", 911.1111323038737, 6.8487506359690835, "AUTO_CLAMPED", 1100.0, 6.8487506359690835, "AUTO_CLAMPED"], [18.430997390354484, 300.0, "CONSTANT", "AUTO", 1203.1758626302083, 16.18389759681885, "ALIGNED"], [3.7309174095858877, 216.66666666666652, "BEZIER", "AUTO", 1622.2222646077473, 3.7309174095858877, "AUTO_CLAMPED"], [6.951205607953391, 316.66666666666674, "BEZIER", "AUTO", 1727.7777353922525, 5.1776103861761795, "AUTO_CLAMPED", 1944.4444020589194, 8.81814817134352, "AUTO_CLAMPED"], [11.202414385112291, 333.33333333333326, "BEZIER", "AUTO", 2055.5555979410806, 11.047306765476826, "AUTO_CLAMPED", 2227.777862548828, 11.287723447845751, "AUTO_CLAMPED"], [11.287723447845751, 183.33333333333348, "BEZIER", "AUTO", 2288.8888041178384, 11.287723447845751, "AUTO_CLAMPED", 2400.0, 11.287723447845751, "AUTO_CLAMPED"], [0.0, 150.0, "BEZIER", "AUTO", 2450.0, 0.0, "AUTO_CLAMPED", 2550.0, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 55.555554231007896, -0.0, "AUTO_CLAMPED"], [-0.0, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, -0.0, "AUTO_CLAMPED", 250.0, -0.0, "AUTO_CLAMPED"], [0.06078959074761263, 250.00000000000003, "BEZIER", "AUTO", 333.3333333333333, 0.06078959074761263, "AUTO_CLAMPED", 450.0, 0.06078959074761263, "AUTO_CLAMPED"], [0.06078959074761263, 99.99999999999994, "BEZIER", "AUTO", 483.3333333333333, 0.06078959074761263, "AUTO_CLAMPED", 588.8888676961262, 0.06078959074761263, "AUTO_CLAMPED"], [7.811642957513978, 216.66666666666663, "BEZIER", "AUTO", 661.1111323038737, 7.811642957513978, "AUTO_CLAMPED", 822.2222010294596, 7.811642957513978, "AUTO_CLAMPED"], [-38.30911379034874, 266.66666666666674, "BEZIER", "EASE_IN", 911.3918304443359, 13.807524520409672, "ALIGNED", 1077.3877461751301, -83.82624232502783, "ALIGNED"], [-352.32899724031466, 300.0, "CONSTANT", "AUTO", 1261.3759358723958, -321.9006410916913, "ALIGNED"], [-69.20970580309225, 216.66666666666652, "BEZIER", "AUTO", 1622.2222646077473, -43.611167661881616, "AUTO_CLAMPED"], [-43.611167661881616, 316.66666666666674, "BEZIER", "AUTO", 1727.7777353922525, -51.158690619285785, "AUTO_CLAMPED", 1944.4444020589194, -35.66640773253867, "AUTO_CLAMPED"], [-3.7350402825236366, 333.33333333333326, "BEZIER", "AUTO", 2055.5555979410806, -10.995832752344318, "AUTO_CLAMPED", 2227.777862548828, 0.25839587469851427, "AUTO_CLAMPED"], [0.2583960614614994, 183.33333333333348, "BEZIER", "AUTO", 2288.8888041178384, 0.2583960614614994, "AUTO_CLAMPED", 2400.0, 0.2583960614614994, "AUTO_CLAMPED"], [-0.0, 150.0, "BEZIER", "AUTO", 2450.0, -0.0, "AUTO_CLAMPED", 2550.0, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 55.555554231007896, 0.0, "AUTO_CLAMPED"], [0.0, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 0.0, "AUTO_CLAMPED", 250.0, 0.0, "AUTO_CLAMPED"], [0.35444556998437726, 250.00000000000003, "BEZIER", "AUTO", 333.3333333333333, 0.35444556998437726, "AUTO_CLAMPED", 450.0, 0.35444556998437726, "AUTO_CLAMPED"], [0.35444556998437726, 99.99999999999994, "BEZIER", "AUTO", 483.3333333333333, 0.35444556998437726, "AUTO_CLAMPED", 588.8888676961262, 0.35444556998437726, "AUTO_CLAMPED"], [3.2815099586626775, 216.66666666666663, "BEZIER", "AUTO", 661.1111323038737, 3.2815099586626775, "AUTO_CLAMPED", 822.2222010294596, 3.2815099586626775, "AUTO_CLAMPED"], [-16.578976228979897, 266.66666666666674, "BEZIER", "EASE_IN", 911.1111323038737, -16.578976228979897, "AUTO_CLAMPED", 1100.0, -16.578976228979897, "AUTO_CLAMPED"], [-8.980774975481523, 300.0, "CONSTANT", "AUTO", 1200.0, -8.980774975481523, "AUTO_CLAMPED"], [-10.256062647303052, 216.66666666666652, "BEZIER", "AUTO", 1622.2222646077473, -10.955330584339789, "AUTO_CLAMPED"], [-11.29071421692857, 316.66666666666674, "BEZIER", "AUTO", 1727.7777353922525, -10.97447645835698, "AUTO_CLAMPED", 1944.4444020589194, -11.623596292733836, "AUTO_CLAMPED"], [-12.285666165777036, 333.33333333333326, "BEZIER", "AUTO", 2055.5555979410806, -12.285666165777036, "AUTO_CLAMPED", 2183.333333333333, -12.285666165777036, "AUTO_CLAMPED"], [-1.6670543025653557, 50.000000000000455, "BEZIER", "AUTO", 2200.0, -1.9612403685147366, "AUTO_CLAMPED", 2311.1111958821616, 0.0, "AUTO_CLAMPED"], [0.0, 283.33333333333303, "BEZIER", "AUTO", 2405.5554707845054, 0.0, "AUTO_CLAMPED", 2594.4445292154946, 0.0, "AUTO_CLAMPED"]]}}}}, "offset": {"Bolt": [0.4437499940395355, 1.8304203748703003, -1.8655332326889038], "Mag": [1.6590982809816524e-08, 2.3913047313690186, 1.5], "MagPlate": [8.392404104995421e-09, 2.080420970916748, 1.7499605417251587], "Silencer": [2.45330426196233e-07, 1.8616708517074585, 11.875], "Trigger": [2.9753691066503052e-08, 1.111669898033142, -1.562500238418579]}, "hierarchy": {"Bolt": "Gun", "Mag": "Gun", "MagPlate": "Mag", "Silencer": "Gun", "Trigger": "Gun"}} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/weapons/animations/congolake.json b/src/main/resources/assets/hbm/models/weapons/animations/congolake.json index 0fd6911a6..192bd4f63 100644 --- a/src/main/resources/assets/hbm/models/weapons/animations/congolake.json +++ b/src/main/resources/assets/hbm/models/weapons/animations/congolake.json @@ -1 +1 @@ -{"anim": {"Fire": {"Gun": {"location": {"x": [[0.0, 0.0], [0.0, 50.0], [-0.015234995633363724, 133.33333333333331], [-0.0032073669135570526, 166.66666666666669], [0.0, 150.0], [0.1729116439819336, 183.33333333333337], [0.13706907629966736, 83.33333333333326], [0.13706907629966736, 200.0], [0.08123889565467834, 166.66666666666663], [0.0, 116.66666666666674]], "z": [[-0.0, 0.0], [-0.7130982875823975, 50.0], [-0.8931010961532593, 133.33333333333331], [-0.1880212426185608, 166.66666666666669], [-0.0, 150.0], [0.07001475989818573, 183.33333333333337], [0.3594728708267212, 83.33333333333326], [0.3594728708267212, 200.0], [0.052131712436676025, 166.66666666666663], [-0.0, 116.66666666666674]], "y": [[0.0, 0.0], [-0.05462139472365379, 50.0], [0.33006909489631653, 133.33333333333331], [0.06948822736740112, 166.66666666666669], [0.0, 150.0], [0.1356278508901596, 183.33333333333337], [0.16076654195785522, 83.33333333333326], [0.16076654195785522, 200.0], [0.13280370831489563, 166.66666666666663], [0.0, 116.66666666666674]]}, "rotation_euler": {"x": [[0.0, 0.0], [5.533829083941263, 83.33333333333333], [-6.777895961066664, 133.33333333333337], [-1.4269255553586289, 166.66666666666663], [0.0, 116.66666666666669], [-1.6187724423744758, 216.66666666666663], [-3.0496036919995886, 100.0], [-1.5771150119048625, 216.66666666666663], [-1.3797563756722266, 133.33333333333348], [0.0, 116.66666666666652]], "z": [[-0.0, 0.0], [0.20789931232904474, 83.33333333333333], [-0.2137078679498249, 133.33333333333337], [-0.04499113641374835, 166.66666666666663], [-0.0, 116.66666666666669], [6.481160527009576, 216.66666666666663], [6.3670886839075465, 100.0], [2.910396325865089, 216.66666666666663], [2.9018462096847024, 133.33333333333348], [-0.0, 116.66666666666652]], "y": [[0.0, 0.0], [0.299797573280649, 83.33333333333333], [-0.3922261210480681, 133.33333333333337], [-0.08257391881641295, 166.66666666666663], [0.0, 116.66666666666669], [-1.7981676810899783, 216.66666666666663], [-1.8284025806680975, 100.0], [4.424185025436767, 216.66666666666663], [0.5393851613977845, 133.33333333333348], [0.0, 116.66666666666652]]}}, "Loop": {"rotation_euler": {"z": [[0.0, 0.0], [28.83552188323058, 50.0], [-11.070683087911195, 50.0], [-2.56723823045354, 33.33333333333334], [7.0765451287518255, 49.99999999999997], [80.15762477840892, 116.66666666666669], [60.820607917294126, 50.0], [-0.0, 83.33333333333337]]}, "location": {"x": [[0.2532634139060974, 0.0]], "z": [[3.4837722778320312, 0.0]], "y": [[1.4936577081680298, 0.0]]}}, "Pump": {"location": {"z": [[-0.0, 683.3333333333334], [-0.10627399384975433, 49.999999999999886], [-0.7439179420471191, 66.66666666666674], [-0.7439179420471191, 200.0], [-0.18597948551177979, 66.66666666666674], [-0.0, 66.66666666666652]]}}, "Shell": {"location": {"x": [[1.5205265935236412e-09, 0.0, "CONSTANT"], [-2.204763704938273e-09, 683.3333333333334], [-2.204763704938273e-09, 66.66666666666663], [1.5205265935236412e-09, 116.66666666666674], [-0.01397116482257843, 66.66666666666663], [-0.01397116482257843, 49.999999999999886], [1.5205265935236412e-09, 150.0]], "z": [[1.2549771070480347, 0.0, "CONSTANT"], [1.2549771070480347, 683.3333333333334], [0.4066495895385742, 66.66666666666663], [0.4066495895385742, 116.66666666666674], [0.4519183039665222, 66.66666666666663], [0.4519183039665222, 49.999999999999886], [1.2549771070480347, 150.0]], "y": [[1.7459099292755127, 0.0, "CONSTANT"], [1.199751853942871, 683.3333333333334], [1.199751853942871, 66.66666666666663], [1.5027252435684204, 116.66666666666674], [1.5814520120620728, 66.66666666666663], [1.5814520120620728, 49.999999999999886], [1.7459099292755127, 150.0]]}, "rotation_euler": {"x": [[0.0, 0.0, "CONSTANT"], [0.0, 683.3333333333334], [0.0, 66.66666666666663], [-24.580495030325643, 116.66666666666674], [-15.192167789711336, 66.66666666666663], [-15.192167789711336, 49.999999999999886], [0.0, 150.0]], "z": [[0.0, 0.0, "CONSTANT"], [0.0, 683.3333333333334], [0.0, 66.66666666666663], [0.0, 116.66666666666674], [-9.025331207124422e-09, 66.66666666666663], [-9.025331207124422e-09, 49.999999999999886], [0.0, 150.0]], "y": [[0.0, 0.0, "CONSTANT"], [0.0, 683.3333333333334], [0.0, 66.66666666666663], [8.004127933608693e-08, 116.66666666666674], [1.31019960381489e-07, 66.66666666666663], [1.31019960381489e-07, 49.999999999999886], [0.0, 150.0]]}}, "Sight": {"rotation_euler": {"x": [[0.0, 0.0], [-10.132303034637006, 50.0], [0.0, 33.33333333333333], [0.0, 99.99999999999999], [-7.955241708397972, 83.33333333333337], [-10.701222787779573, 99.99999999999994], [0.0, 116.66666666666669]]}, "location": {"x": [[0.0, 0.0]], "z": [[2.990000009536743, 0.0]], "y": [[2.104297161102295, 0.0]]}}}, "FireEmpty": {"Gun": {"location": {"x": [[0.0, 0.0], [0.0, 50.0], [-0.015234995633363724, 133.33333333333331], [-0.0032073669135570526, 166.66666666666669], [0.0, 150.0], [0.1729116439819336, 183.33333333333337], [0.13706907629966736, 83.33333333333326], [0.13706907629966736, 200.0], [0.08123889565467834, 166.66666666666663], [0.0, 116.66666666666674]], "z": [[-0.0, 0.0], [-0.7130982875823975, 50.0], [-0.8931010961532593, 133.33333333333331], [-0.1880212426185608, 166.66666666666669], [-0.0, 150.0], [0.07001475989818573, 183.33333333333337], [0.3594728708267212, 83.33333333333326], [0.3594728708267212, 200.0], [0.052131712436676025, 166.66666666666663], [-0.0, 116.66666666666674]], "y": [[0.0, 0.0], [-0.05462139472365379, 50.0], [0.33006909489631653, 133.33333333333331], [0.06948822736740112, 166.66666666666669], [0.0, 150.0], [0.1356278508901596, 183.33333333333337], [0.16076654195785522, 83.33333333333326], [0.16076654195785522, 200.0], [0.13280370831489563, 166.66666666666663], [0.0, 116.66666666666674]]}, "rotation_euler": {"x": [[0.0, 0.0], [5.533829083941263, 83.33333333333333], [-6.777895961066664, 133.33333333333337], [-1.4269255553586289, 166.66666666666663], [0.0, 116.66666666666669], [-1.6187724423744758, 216.66666666666663], [-3.0496036919995886, 100.0], [-1.5771150119048625, 216.66666666666663], [-1.3797563756722266, 133.33333333333348], [0.0, 116.66666666666652]], "z": [[-0.0, 0.0], [0.20789931232904474, 83.33333333333333], [-0.2137078679498249, 133.33333333333337], [-0.04499113641374835, 166.66666666666663], [-0.0, 116.66666666666669], [6.481160527009576, 216.66666666666663], [6.3670886839075465, 100.0], [2.910396325865089, 216.66666666666663], [2.9018462096847024, 133.33333333333348], [-0.0, 116.66666666666652]], "y": [[0.0, 0.0], [0.299797573280649, 83.33333333333333], [-0.3922261210480681, 133.33333333333337], [-0.08257391881641295, 166.66666666666663], [0.0, 116.66666666666669], [-1.7981676810899783, 216.66666666666663], [-1.8284025806680975, 100.0], [4.424185025436767, 216.66666666666663], [0.5393851613977845, 133.33333333333348], [0.0, 116.66666666666652]]}}, "Loop": {"rotation_euler": {"z": [[0.0, 0.0], [28.83552188323058, 50.0], [-11.070683087911195, 50.0], [-2.56723823045354, 33.33333333333334], [7.0765451287518255, 49.99999999999997], [80.15762477840892, 116.66666666666669], [60.820607917294126, 50.0], [-0.0, 83.33333333333337]]}, "location": {"x": [[0.2532634139060974, 0.0]], "z": [[3.4837722778320312, 0.0]], "y": [[1.4936577081680298, 0.0]]}}, "Pump": {"location": {"z": [[-0.0, 683.3333333333334], [-0.10627399384975433, 49.999999999999886], [-0.7439179420471191, 66.66666666666674], [-0.7439179420471191, 200.0], [-0.18597948551177979, 66.66666666666674], [-0.0, 66.66666666666652]]}}, "Shell": {"location": {"x": [[1.5205265935236412e-09, 0.0]], "z": [[1.2549771070480347, 0.0]], "y": [[-4.465472221374512, 0.0]]}}, "Sight": {"rotation_euler": {"x": [[0.0, 0.0], [-10.132303034637006, 50.0], [0.0, 33.33333333333333], [0.0, 99.99999999999999], [-7.955241708397972, 83.33333333333337], [-10.701222787779573, 99.99999999999994], [0.0, 116.66666666666669]]}, "location": {"x": [[0.0, 0.0]], "z": [[2.990000009536743, 0.0]], "y": [[2.104297161102295, 0.0]]}}}, "Reload": {"GuardInner": {"location": {"x": [[3.725290298461914e-09, 0.0]], "z": [[0.8854429721832275, 0.0]], "y": [[0.8707519173622131, 0.0]]}, "rotation_euler": {"x": [[0.0, 350.0], [16.02038116054145, 83.33333333333337], [23.71116221314476, 83.33333333333326], [23.71116221314476, 66.66666666666674], [0.0, 83.33333333333326]]}}, "GuardOuter": {"location": {"x": [[0.0, 0.0]], "z": [[-0.07262593507766724, 0.0]], "y": [[0.8707519173622131, 0.0]]}, "rotation_euler": {"x": [[0.0, 350.0], [-17.139458137176558, 83.33333333333337], [-29.355340260203572, 83.33333333333326], [-29.355340260203572, 100.00000000000011], [0.0, 99.99999999999989]]}}, "Gun": {"location": {"x": [[1.7611019611358643, 0.0], [1.7662079334259033, 150.0], [1.7611019611358643, 250.0], [1.613909363746643, 100.0], [1.7571532726287842, 116.66666666666674], [1.7611019611358643, 99.99999999999989]], "z": [[0.31467199325561523, 0.0], [0.30754023790359497, 150.0], [0.31467199325561523, 250.0], [0.4306454658508301, 100.0], [0.3806498050689697, 116.66666666666674], [0.31467199325561523, 99.99999999999989]], "y": [[0.8750439286231995, 0.0], [0.8376463055610657, 150.0], [0.8750439286231995, 250.0], [1.1308174133300781, 100.0], [1.108587384223938, 116.66666666666674], [0.8750439286231995, 99.99999999999989]]}, "rotation_euler": {"x": [[-18.983153297952903, 0.0], [-20.857867762844858, 250.0], [-18.983153297952903, 100.0], [-20.627756982159838, 116.66666666666669], [-20.258341078257818, 116.66666666666669], [-18.983153297952903, 133.33333333333326]], "z": [[86.04810969222216, 0.0], [87.57263523572567, 250.0], [86.04810969222216, 100.0], [89.15816119870658, 116.66666666666669], [86.00693048171614, 116.66666666666669], [86.04810969222216, 133.33333333333326]], "y": [[29.613753637261834, 0.0], [28.64577410544575, 250.0], [29.613753637261834, 100.0], [25.730953311102372, 116.66666666666669], [27.311677651096765, 116.66666666666669], [29.613753637261834, 133.33333333333326]]}}, "Shell": {"location": {"x": [[1.5205265935236412e-09, 0.0], [1.5205265935236412e-09, 216.66666666666669], [3.600797242597764e-07, 133.33333333333331], [1.9156854591528827e-07, 83.33333333333337], [2.418599649445241e-07, 83.33333333333326], [2.3999731979529315e-07, 100.00000000000011]], "z": [[-2.2731080055236816, 0.0], [-2.2731080055236816, 216.66666666666669], [0.2386959344148636, 133.33333333333331], [0.33605021238327026, 83.33333333333337], [0.4338737428188324, 83.33333333333326], [1.2500436305999756, 100.00000000000011]], "y": [[-1.4170563220977783, 0.0], [-1.4170563220977783, 216.66666666666669], [0.5333303213119507, 133.33333333333331], [0.8954256176948547, 83.33333333333337], [1.1207358837127686, 83.33333333333326], [1.2056175470352173, 100.00000000000011]]}, "rotation_euler": {"x": [[0.0, 0.0], [0.0, 216.66666666666669], [-23.121160227355304, 133.33333333333331], [-14.526026270149163, 83.33333333333337], [-5.042295800981765, 83.33333333333326], [0.0, 100.00000000000011]], "z": [[0.0, 0.0], [-0.0, 216.66666666666669], [-0.0, 133.33333333333331], [2.551953161995936e-07, 83.33333333333337], [7.134593799244011e-07, 83.33333333333326], [-0.0, 100.00000000000011]], "y": [[0.0, 0.0], [0.0, 216.66666666666669], [1.7075472925031877e-06, 133.33333333333331], [1.688370023551335e-06, 83.33333333333337], [1.6331417525071545e-06, 83.33333333333326], [0.0, 100.00000000000011]]}}}, "ReloadEmpty": {"Gun": {"location": {"x": [[0.0, 0.0], [1.2511006593704224, 183.33333333333331], [1.6423077583312988, 216.66666666666669], [1.6554410457611084, 150.0], [1.7105761766433716, 66.66666666666674], [1.7476284503936768, 116.66666666666652], [1.7611019611358643, 133.33333333333348]], "z": [[-0.0, 0.0], [0.26347818970680237, 183.33333333333331], [0.32502928376197815, 216.66666666666669], [0.30153536796569824, 150.0], [0.3000105023384094, 66.66666666666674], [0.3107622563838959, 116.66666666666652], [0.31467199325561523, 133.33333333333348]], "y": [[0.0, 0.0], [0.42658743262290955, 183.33333333333331], [-0.009814918041229248, 216.66666666666669], [-0.1131410151720047, 150.0], [-0.20051059126853943, 66.66666666666674], [0.5882294178009033, 116.66666666666652], [0.8750439286231995, 133.33333333333348]]}, "rotation_euler": {"x": [[0.0, 0.0], [-14.617513238986898, 116.66666666666667], [-37.38541266737456, 233.33333333333331], [-36.45018560017598, 166.66666666666663], [-30.74254485044399, 66.66666666666674], [-21.750068053366945, 149.9999999999999], [-18.983153297952903, 133.33333333333348]], "z": [[-0.0, 0.0], [32.06710636071164, 116.66666666666667], [40.97562647251089, 233.33333333333331], [38.71689657436601, 166.66666666666663], [32.11341504328433, 66.66666666666674], [73.35759772377095, 149.9999999999999], [86.04810969222216, 133.33333333333348]], "y": [[0.0, 0.0], [21.50487279989995, 116.66666666666667], [44.292741993873435, 233.33333333333331], [46.044774308440914, 166.66666666666663], [49.72028010083778, 66.66666666666674], [34.34470124134409, 149.9999999999999], [29.613753637261834, 133.33333333333348]]}}, "Pump": {"location": {"z": [[-0.0, 83.33333333333333], [-0.10627399384975433, 50.000000000000014], [-0.7439179420471191, 66.66666666666666], [-0.7439179420471191, 483.33333333333337], [-0.18597948551177979, 66.66666666666663], [-0.0, 66.66666666666663]]}}, "Shell": {"location": {"x": [[1.5205265935236412e-09, 0.0], [1.8807575702667236, 216.66666666666669], [0.1613924205303192, 216.66666666666669], [0.010319530963897705, 100.0], [2.558298035637563e-07, 83.33333333333337]], "z": [[-2.2731080055236816, 0.0], [-1.77922523021698, 216.66666666666669], [0.5386117100715637, 216.66666666666669], [0.9011819362640381, 100.0], [1.2500436305999756, 83.33333333333337]], "y": [[-1.4170563220977783, 0.0], [-0.7542737126350403, 216.66666666666669], [1.8265879154205322, 216.66666666666669], [1.7011022567749023, 100.0], [1.7520724534988403, 83.33333333333337]]}, "rotation_euler": {"x": [[0.0, 0.0], [0.0, 166.66666666666666], [17.895010248068782, 216.66666666666666], [3.92045772037468, 116.66666666666669], [0.0, 116.66666666666674]], "z": [[0.0, 0.0], [-0.0, 166.66666666666666], [-7.282242678909106, 216.66666666666666], [-2.104055355191472, 116.66666666666669], [-0.0, 116.66666666666674]], "y": [[0.0, 0.0], [0.0, 166.66666666666666], [-21.433229238148392, 216.66666666666666], [-7.3901921111938655, 116.66666666666669], [0.0, 116.66666666666674]]}}}, "ReloadEnd": {"Gun": {"location": {"x": [[1.7611019611358643, 0.0], [-0.31797051429748535, 216.66666666666669], [0.0, 83.33333333333331]], "z": [[0.31467199325561523, 0.0], [0.010336088016629219, 216.66666666666669], [-0.0, 83.33333333333331]], "y": [[0.8750439286231995, 0.0], [0.0250311940908432, 216.66666666666669], [0.0, 83.33333333333331]]}, "rotation_euler": {"x": [[-18.983153297952903, 0.0], [0.09662330444411844, 216.66666666666669], [0.0, 83.33333333333331]], "z": [[86.04810969222216, 0.0], [-9.502314560125358, 216.66666666666669], [-0.0, 83.33333333333331]], "y": [[29.613753637261834, 0.0], [-0.24104249845162748, 216.66666666666669], [0.0, 83.33333333333331]]}}}, "ReloadStart": {"GuardInner": {"location": {"x": [[3.725290298461914e-09, 0.0]], "z": [[0.8854429721832275, 0.0]], "y": [[0.8707519173622131, 0.0]]}, "rotation_euler": {"x": [[0.0, 350.0], [16.02038116054145, 83.33333333333337], [23.71116221314476, 83.33333333333326], [23.71116221314476, 66.66666666666674], [0.0, 83.33333333333326]]}}, "GuardOuter": {"location": {"x": [[0.0, 0.0]], "z": [[-0.07262593507766724, 0.0]], "y": [[0.8707519173622131, 0.0]]}, "rotation_euler": {"x": [[0.0, 350.0], [-17.139458137176558, 83.33333333333337], [-29.355340260203572, 83.33333333333326], [-29.355340260203572, 100.00000000000011], [0.0, 99.99999999999989]]}}, "Gun": {"location": {"x": [[0.0, 0.0], [1.2318342924118042, 183.33333333333331], [1.642445683479309, 83.33333333333337], [1.7611019611358643, 133.33333333333331], [1.613909363746643, 100.0], [1.7571532726287842, 116.66666666666674], [1.7611019611358643, 66.66666666666663]], "z": [[-0.0, 0.0], [0.2732446491718292, 183.33333333333331], [0.36432620882987976, 83.33333333333337], [0.31467199325561523, 133.33333333333331], [0.4306454658508301, 100.0], [0.3806498050689697, 116.66666666666674], [0.31467199325561523, 66.66666666666663]], "y": [[0.0, 0.0], [0.7328978776931763, 183.33333333333331], [0.9771971702575684, 83.33333333333337], [0.8750439286231995, 133.33333333333331], [1.1308174133300781, 100.0], [1.108587384223938, 116.66666666666674], [0.8750439286231995, 66.66666666666663]]}, "rotation_euler": {"x": [[0.0, 0.0], [-14.617513238986898, 150.0], [-19.490018221164963, 83.33333333333334], [-18.983153297952903, 116.66666666666666], [-20.627756982159838, 133.33333333333331], [-20.258341078257818, 100.00000000000006], [-18.983153297952903, 100.0]], "z": [[-0.0, 0.0], [65.44332775888294, 150.0], [87.25777034517726, 83.33333333333334], [86.04810969222216, 116.66666666666666], [89.15816119870658, 133.33333333333331], [86.00693048171614, 100.00000000000006], [86.04810969222216, 100.0]], "y": [[0.0, 0.0], [21.504871092352655, 150.0], [28.673161456470208, 83.33333333333334], [29.613753637261834, 116.66666666666666], [25.730953311102372, 133.33333333333331], [27.311677651096765, 100.00000000000006], [29.613753637261834, 100.0]]}}, "Shell": {"location": {"x": [[1.5205265935236412e-09, 0.0], [1.5205265935236412e-09, 216.66666666666669], [3.600797242597764e-07, 133.33333333333331], [1.9156854591528827e-07, 83.33333333333337], [2.418599649445241e-07, 83.33333333333326], [2.3999731979529315e-07, 100.00000000000011]], "z": [[-2.2731080055236816, 0.0], [-2.2731080055236816, 216.66666666666669], [0.2386959344148636, 133.33333333333331], [0.33605021238327026, 83.33333333333337], [0.4338737428188324, 83.33333333333326], [1.2500436305999756, 100.00000000000011]], "y": [[-1.4170563220977783, 0.0], [-1.4170563220977783, 216.66666666666669], [0.5333303213119507, 133.33333333333331], [0.8954256176948547, 83.33333333333337], [1.1207358837127686, 83.33333333333326], [1.2056175470352173, 100.00000000000011]]}, "rotation_euler": {"x": [[0.0, 0.0], [0.0, 216.66666666666669], [-23.121160227355304, 133.33333333333331], [-14.526026270149163, 83.33333333333337], [-5.042295800981765, 83.33333333333326], [0.0, 100.00000000000011]], "z": [[0.0, 0.0], [-0.0, 216.66666666666669], [-0.0, 133.33333333333331], [2.551953161995936e-07, 83.33333333333337], [7.134593799244011e-07, 83.33333333333326], [-0.0, 100.00000000000011]], "y": [[0.0, 0.0], [0.0, 216.66666666666669], [1.7075472925031877e-06, 133.33333333333331], [1.688370023551335e-06, 83.33333333333337], [1.6331417525071545e-06, 83.33333333333326], [0.0, 100.00000000000011]]}}}}, "offset": {"GuardInner": [3.725290298461914e-09, 0.8707519173622131, 0.8854429721832275], "GuardOuter": [0.0, 0.8707519173622131, -0.07262593507766724], "Loop": [0.2532634139060974, 1.4936577081680298, 3.4837722778320312], "Pump": [1.1568772606551647e-09, 0.0, -0.0], "Shell": [1.5205265935236412e-09, 1.7459099292755127, 1.2549771070480347], "ShellFore": [1.5205265935236412e-09, 1.7459099292755127, 1.2549771070480347], "Sight": [0.0, 2.104297161102295, 2.990000009536743]}} \ No newline at end of file +{"anim": {"Equip": {"Gun": {"location": {"x": [[-0.23637241125106812, 0.0, "BACK", "AUTO", 1.7015800476074219], [0.0, 716.6666666666666, "BEZIER", "AUTO", 955.555534362793, 0.0, "AUTO_CLAMPED"]], "z": [[-2.670673370361328, 0.0, "BACK", "AUTO", 1.7015800476074219], [-0.0, 716.6666666666666, "BEZIER", "AUTO", 955.555534362793, -0.0, "AUTO_CLAMPED"]], "y": [[-4.068621635437012, 0.0, "BACK", "AUTO", 1.7015800476074219], [0.0, 716.6666666666666, "BEZIER", "AUTO", 955.555534362793, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[88.63504384036447, 0.0, "BACK", "AUTO", 1.7015800476074219], [-3.8488709345706, 516.6666666666666, "BEZIER", "EASE_OUT", 611.1111323038737, -3.8488709345706, "AUTO_CLAMPED"], [0.0, 283.33333333333337, "BEZIER", "AUTO", 705.555534362793, 0.0, "AUTO_CLAMPED", 894.444465637207, 0.0, "AUTO_CLAMPED"]], "z": [[1.9343983654068213, 0.0, "BACK", "AUTO", 1.7015800476074219], [6.406567604197043, 516.6666666666666, "BEZIER", "EASE_OUT", 611.1111323038737, 6.406567604197043, "AUTO_CLAMPED"], [-0.0, 283.33333333333337, "BEZIER", "AUTO", 705.555534362793, -0.0, "AUTO_CLAMPED", 894.444465637207, -0.0, "AUTO_CLAMPED"]], "y": [[-3.580704901151205, 0.0, "BACK", "AUTO", 1.7015800476074219], [-0.8266392790306901, 516.6666666666666, "BEZIER", "EASE_OUT", 611.1111323038737, -0.2922556837352062, "AUTO_CLAMPED"], [0.0, 283.33333333333337, "BEZIER", "AUTO", 705.555534362793, 0.0, "AUTO_CLAMPED", 894.444465637207, 0.0, "AUTO_CLAMPED"]]}}, "Loop": {"rotation_euler": {"z": [[-0.0, 0.0, "BEZIER", "AUTO", 72.22222487131755, -0.0, "AUTO_CLAMPED"], [-0.0, 216.66666666666669, "BEZIER", "AUTO", 144.44443384806317, -0.0, "AUTO_CLAMPED", 277.7777671813965, -0.0, "AUTO_CLAMPED"], [40.12815367576864, 183.33333333333331, "BOUNCE", "AUTO", 338.8888994852702, 40.12815367576864, "AUTO_CLAMPED"], [-0.0, 450.0, "BEZIER", "AUTO", 1000.0, -0.0, "AUTO_CLAMPED"]]}, "location": {"x": [[0.2532634139060974, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.2532634139060974, "AUTO_CLAMPED"]], "z": [[3.4837722778320312, 0.0, "BEZIER", "AUTO", 16.666666666666668, 3.4837722778320312, "AUTO_CLAMPED"]], "y": [[1.4936577081680298, 0.0, "BEZIER", "AUTO", 16.666666666666668, 1.4936577081680298, "AUTO_CLAMPED"]]}}, "Sight": {"rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 83.33333333333333, 0.0, "AUTO_CLAMPED"], [0.0, 250.0, "BEZIER", "AUTO", 166.66666666666666, 0.0, "AUTO_CLAMPED", 300.0, 0.0, "AUTO_CLAMPED"], [-23.23367222600563, 150.0, "BOUNCE", "AUTO", 350.0, -23.23367222600563, "AUTO_CLAMPED"], [0.0, 383.33333333333337, "BEZIER", "AUTO", 911.1111323038737, 0.0, "AUTO_CLAMPED"]]}, "location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.0, "AUTO_CLAMPED"]], "z": [[2.990000009536743, 0.0, "BEZIER", "AUTO", 16.666666666666668, 2.990000009536743, "AUTO_CLAMPED"]], "y": [[2.104297161102295, 0.0, "BEZIER", "AUTO", 16.666666666666668, 2.104297161102295, "AUTO_CLAMPED"]]}}}, "Fire": {"Gun": {"location": {"x": [[0.0, 0.0, "LINEAR", "AUTO"], [0.0, 50.0, "LINEAR", "AUTO"], [-0.015234995633363724, 133.33333333333331, "LINEAR", "AUTO"], [-0.0032073669135570526, 166.66666666666669, "LINEAR", "AUTO"], [0.0, 150.0, "LINEAR", "AUTO"], [0.1729116439819336, 183.33333333333337, "LINEAR", "AUTO"], [0.13706907629966736, 83.33333333333326, "LINEAR", "AUTO"], [0.13706907629966736, 200.0, "LINEAR", "AUTO"], [0.08123889565467834, 166.66666666666663, "LINEAR", "AUTO"], [0.0, 116.66666666666674, "LINEAR", "AUTO"]], "z": [[-0.0, 0.0, "LINEAR", "AUTO"], [-0.7130982875823975, 50.0, "LINEAR", "AUTO"], [-0.8931010961532593, 133.33333333333331, "LINEAR", "AUTO"], [-0.1880212426185608, 166.66666666666669, "LINEAR", "AUTO"], [-0.0, 150.0, "LINEAR", "AUTO"], [0.07001475989818573, 183.33333333333337, "LINEAR", "AUTO"], [0.3594728708267212, 83.33333333333326, "LINEAR", "AUTO"], [0.3594728708267212, 200.0, "LINEAR", "AUTO"], [0.052131712436676025, 166.66666666666663, "LINEAR", "AUTO"], [-0.0, 116.66666666666674, "LINEAR", "AUTO"]], "y": [[0.0, 0.0, "LINEAR", "AUTO"], [-0.05462139472365379, 50.0, "LINEAR", "AUTO"], [0.33006909489631653, 133.33333333333331, "LINEAR", "AUTO"], [0.06948822736740112, 166.66666666666669, "LINEAR", "AUTO"], [0.0, 150.0, "LINEAR", "AUTO"], [0.1356278508901596, 183.33333333333337, "LINEAR", "AUTO"], [0.16076654195785522, 83.33333333333326, "LINEAR", "AUTO"], [0.16076654195785522, 200.0, "LINEAR", "AUTO"], [0.13280370831489563, 166.66666666666663, "LINEAR", "AUTO"], [0.0, 116.66666666666674, "LINEAR", "AUTO"]]}, "rotation_euler": {"x": [[0.0, 0.0, "LINEAR", "AUTO"], [5.533829083941263, 83.33333333333333, "LINEAR", "AUTO"], [-6.777895961066664, 133.33333333333337, "LINEAR", "AUTO"], [-1.4269255553586289, 166.66666666666663, "LINEAR", "AUTO"], [0.0, 116.66666666666669, "LINEAR", "AUTO"], [-1.6187724423744758, 216.66666666666663, "LINEAR", "AUTO"], [-3.0496036919995886, 100.0, "LINEAR", "AUTO"], [-1.5771150119048625, 216.66666666666663, "LINEAR", "AUTO"], [-1.3797563756722266, 133.33333333333348, "LINEAR", "AUTO"], [0.0, 116.66666666666652, "LINEAR", "AUTO"]], "z": [[-0.0, 0.0, "LINEAR", "AUTO"], [0.20789931232904474, 83.33333333333333, "LINEAR", "AUTO"], [-0.2137078679498249, 133.33333333333337, "LINEAR", "AUTO"], [-0.04499113641374835, 166.66666666666663, "LINEAR", "AUTO"], [-0.0, 116.66666666666669, "LINEAR", "AUTO"], [6.481160527009576, 216.66666666666663, "LINEAR", "AUTO"], [6.3670886839075465, 100.0, "LINEAR", "AUTO"], [2.910396325865089, 216.66666666666663, "LINEAR", "AUTO"], [2.9018462096847024, 133.33333333333348, "LINEAR", "AUTO"], [-0.0, 116.66666666666652, "LINEAR", "AUTO"]], "y": [[0.0, 0.0, "LINEAR", "AUTO"], [0.299797573280649, 83.33333333333333, "LINEAR", "AUTO"], [-0.3922261210480681, 133.33333333333337, "LINEAR", "AUTO"], [-0.08257391881641295, 166.66666666666663, "LINEAR", "AUTO"], [0.0, 116.66666666666669, "LINEAR", "AUTO"], [-1.7981676810899783, 216.66666666666663, "LINEAR", "AUTO"], [-1.8284025806680975, 100.0, "LINEAR", "AUTO"], [4.424185025436767, 216.66666666666663, "LINEAR", "AUTO"], [0.5393851613977845, 133.33333333333348, "LINEAR", "AUTO"], [0.0, 116.66666666666652, "LINEAR", "AUTO"]]}}, "Loop": {"rotation_euler": {"z": [[0.0, 0.0, "LINEAR", "AUTO"], [28.83552188323058, 50.0, "LINEAR", "AUTO"], [-11.070683087911195, 50.0, "LINEAR", "AUTO"], [-2.56723823045354, 33.33333333333334, "LINEAR", "AUTO"], [7.0765451287518255, 49.99999999999997, "LINEAR", "AUTO"], [80.15762477840892, 116.66666666666669, "LINEAR", "AUTO"], [60.820607917294126, 50.0, "LINEAR", "AUTO"], [-0.0, 83.33333333333337, "LINEAR", "AUTO"]]}, "location": {"x": [[0.2532634139060974, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.2532634139060974, "AUTO_CLAMPED"]], "z": [[3.4837722778320312, 0.0, "BEZIER", "AUTO", 16.666666666666668, 3.4837722778320312, "AUTO_CLAMPED"]], "y": [[1.4936577081680298, 0.0, "BEZIER", "AUTO", 16.666666666666668, 1.4936577081680298, "AUTO_CLAMPED"]]}}, "Pump": {"location": {"z": [[-0.0, 683.3333333333334, "LINEAR", "AUTO"], [-0.10627399384975433, 49.999999999999886, "LINEAR", "AUTO"], [-0.7439179420471191, 66.66666666666674, "LINEAR", "AUTO"], [-0.7439179420471191, 200.0, "LINEAR", "AUTO"], [-0.18597948551177979, 66.66666666666674, "LINEAR", "AUTO"], [-0.0, 66.66666666666652, "LINEAR", "AUTO"]]}}, "Shell": {"location": {"x": [[1.5205265935236412e-09, 0.0, "CONSTANT", "AUTO"], [-2.204763704938273e-09, 683.3333333333334, "LINEAR", "AUTO"], [-2.204763704938273e-09, 66.66666666666663, "LINEAR", "AUTO"], [1.5205265935236412e-09, 116.66666666666674, "LINEAR", "AUTO"], [-0.01397116482257843, 66.66666666666663, "LINEAR", "AUTO"], [-0.01397116482257843, 49.999999999999886, "LINEAR", "AUTO"], [1.5205265935236412e-09, 150.0, "BEZIER", "AUTO", 1183.3333333333333, 1.5205265935236412e-09, "AUTO_CLAMPED"]], "z": [[1.2549771070480347, 0.0, "CONSTANT", "AUTO"], [1.2549771070480347, 683.3333333333334, "LINEAR", "AUTO"], [0.4066495895385742, 66.66666666666663, "LINEAR", "AUTO"], [0.4066495895385742, 116.66666666666674, "LINEAR", "AUTO"], [0.4519183039665222, 66.66666666666663, "LINEAR", "AUTO"], [0.4519183039665222, 49.999999999999886, "LINEAR", "AUTO"], [1.2549771070480347, 150.0, "BEZIER", "AUTO", 1183.3333333333333, 1.2549771070480347, "AUTO_CLAMPED"]], "y": [[1.7459099292755127, 0.0, "CONSTANT", "AUTO"], [1.199751853942871, 683.3333333333334, "LINEAR", "AUTO"], [1.199751853942871, 66.66666666666663, "LINEAR", "AUTO"], [1.5027252435684204, 116.66666666666674, "LINEAR", "AUTO"], [1.5814520120620728, 66.66666666666663, "LINEAR", "AUTO"], [1.5814520120620728, 49.999999999999886, "LINEAR", "AUTO"], [1.7459099292755127, 150.0, "BEZIER", "AUTO", 1183.3333333333333, 1.7459099292755127, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "CONSTANT", "AUTO"], [0.0, 683.3333333333334, "LINEAR", "AUTO"], [0.0, 66.66666666666663, "LINEAR", "AUTO"], [-24.580495030325643, 116.66666666666674, "LINEAR", "AUTO"], [-15.192167789711336, 66.66666666666663, "LINEAR", "AUTO"], [-15.192167789711336, 49.999999999999886, "LINEAR", "AUTO"], [0.0, 150.0, "BEZIER", "AUTO", 1183.3333333333333, 0.0, "AUTO_CLAMPED"]], "z": [[0.0, 0.0, "CONSTANT", "AUTO"], [0.0, 683.3333333333334, "LINEAR", "AUTO"], [0.0, 66.66666666666663, "LINEAR", "AUTO"], [0.0, 116.66666666666674, "LINEAR", "AUTO"], [-9.025331207124422e-09, 66.66666666666663, "LINEAR", "AUTO"], [-9.025331207124422e-09, 49.999999999999886, "LINEAR", "AUTO"], [0.0, 150.0, "BEZIER", "AUTO", 1183.3333333333333, 0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "CONSTANT", "AUTO"], [0.0, 683.3333333333334, "LINEAR", "AUTO"], [0.0, 66.66666666666663, "LINEAR", "AUTO"], [8.004127933608693e-08, 116.66666666666674, "LINEAR", "AUTO"], [1.31019960381489e-07, 66.66666666666663, "LINEAR", "AUTO"], [1.31019960381489e-07, 49.999999999999886, "LINEAR", "AUTO"], [0.0, 150.0, "BEZIER", "AUTO", 1183.3333333333333, 0.0, "AUTO_CLAMPED"]]}}, "Sight": {"rotation_euler": {"x": [[0.0, 0.0, "LINEAR", "AUTO"], [-10.132303034637006, 50.0, "LINEAR", "AUTO"], [0.0, 33.33333333333333, "LINEAR", "AUTO"], [0.0, 99.99999999999999, "LINEAR", "AUTO"], [-7.955241708397972, 83.33333333333337, "LINEAR", "AUTO"], [-10.701222787779573, 99.99999999999994, "LINEAR", "AUTO"], [0.0, 116.66666666666669, "LINEAR", "AUTO"]]}, "location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.0, "AUTO_CLAMPED"]], "z": [[2.990000009536743, 0.0, "BEZIER", "AUTO", 16.666666666666668, 2.990000009536743, "AUTO_CLAMPED"]], "y": [[2.104297161102295, 0.0, "BEZIER", "AUTO", 16.666666666666668, 2.104297161102295, "AUTO_CLAMPED"]]}}}, "FireEmpty": {"Gun": {"location": {"x": [[0.0, 0.0, "LINEAR", "AUTO"], [0.0, 50.0, "LINEAR", "AUTO"], [-0.015234995633363724, 133.33333333333331, "LINEAR", "AUTO"], [-0.0032073669135570526, 166.66666666666669, "LINEAR", "AUTO"], [0.0, 150.0, "LINEAR", "AUTO"], [0.1729116439819336, 183.33333333333337, "LINEAR", "AUTO"], [0.13706907629966736, 83.33333333333326, "LINEAR", "AUTO"], [0.13706907629966736, 200.0, "LINEAR", "AUTO"], [0.08123889565467834, 166.66666666666663, "LINEAR", "AUTO"], [0.0, 116.66666666666674, "LINEAR", "AUTO"]], "z": [[-0.0, 0.0, "LINEAR", "AUTO"], [-0.7130982875823975, 50.0, "LINEAR", "AUTO"], [-0.8931010961532593, 133.33333333333331, "LINEAR", "AUTO"], [-0.1880212426185608, 166.66666666666669, "LINEAR", "AUTO"], [-0.0, 150.0, "LINEAR", "AUTO"], [0.07001475989818573, 183.33333333333337, "LINEAR", "AUTO"], [0.3594728708267212, 83.33333333333326, "LINEAR", "AUTO"], [0.3594728708267212, 200.0, "LINEAR", "AUTO"], [0.052131712436676025, 166.66666666666663, "LINEAR", "AUTO"], [-0.0, 116.66666666666674, "LINEAR", "AUTO"]], "y": [[0.0, 0.0, "LINEAR", "AUTO"], [-0.05462139472365379, 50.0, "LINEAR", "AUTO"], [0.33006909489631653, 133.33333333333331, "LINEAR", "AUTO"], [0.06948822736740112, 166.66666666666669, "LINEAR", "AUTO"], [0.0, 150.0, "LINEAR", "AUTO"], [0.1356278508901596, 183.33333333333337, "LINEAR", "AUTO"], [0.16076654195785522, 83.33333333333326, "LINEAR", "AUTO"], [0.16076654195785522, 200.0, "LINEAR", "AUTO"], [0.13280370831489563, 166.66666666666663, "LINEAR", "AUTO"], [0.0, 116.66666666666674, "LINEAR", "AUTO"]]}, "rotation_euler": {"x": [[0.0, 0.0, "LINEAR", "AUTO"], [5.533829083941263, 83.33333333333333, "LINEAR", "AUTO"], [-6.777895961066664, 133.33333333333337, "LINEAR", "AUTO"], [-1.4269255553586289, 166.66666666666663, "LINEAR", "AUTO"], [0.0, 116.66666666666669, "LINEAR", "AUTO"], [-1.6187724423744758, 216.66666666666663, "LINEAR", "AUTO"], [-3.0496036919995886, 100.0, "LINEAR", "AUTO"], [-1.5771150119048625, 216.66666666666663, "LINEAR", "AUTO"], [-1.3797563756722266, 133.33333333333348, "LINEAR", "AUTO"], [0.0, 116.66666666666652, "LINEAR", "AUTO"]], "z": [[-0.0, 0.0, "LINEAR", "AUTO"], [0.20789931232904474, 83.33333333333333, "LINEAR", "AUTO"], [-0.2137078679498249, 133.33333333333337, "LINEAR", "AUTO"], [-0.04499113641374835, 166.66666666666663, "LINEAR", "AUTO"], [-0.0, 116.66666666666669, "LINEAR", "AUTO"], [6.481160527009576, 216.66666666666663, "LINEAR", "AUTO"], [6.3670886839075465, 100.0, "LINEAR", "AUTO"], [2.910396325865089, 216.66666666666663, "LINEAR", "AUTO"], [2.9018462096847024, 133.33333333333348, "LINEAR", "AUTO"], [-0.0, 116.66666666666652, "LINEAR", "AUTO"]], "y": [[0.0, 0.0, "LINEAR", "AUTO"], [0.299797573280649, 83.33333333333333, "LINEAR", "AUTO"], [-0.3922261210480681, 133.33333333333337, "LINEAR", "AUTO"], [-0.08257391881641295, 166.66666666666663, "LINEAR", "AUTO"], [0.0, 116.66666666666669, "LINEAR", "AUTO"], [-1.7981676810899783, 216.66666666666663, "LINEAR", "AUTO"], [-1.8284025806680975, 100.0, "LINEAR", "AUTO"], [4.424185025436767, 216.66666666666663, "LINEAR", "AUTO"], [0.5393851613977845, 133.33333333333348, "LINEAR", "AUTO"], [0.0, 116.66666666666652, "LINEAR", "AUTO"]]}}, "Loop": {"rotation_euler": {"z": [[0.0, 0.0, "LINEAR", "AUTO"], [28.83552188323058, 50.0, "LINEAR", "AUTO"], [-11.070683087911195, 50.0, "LINEAR", "AUTO"], [-2.56723823045354, 33.33333333333334, "LINEAR", "AUTO"], [7.0765451287518255, 49.99999999999997, "LINEAR", "AUTO"], [80.15762477840892, 116.66666666666669, "LINEAR", "AUTO"], [60.820607917294126, 50.0, "LINEAR", "AUTO"], [-0.0, 83.33333333333337, "LINEAR", "AUTO"]]}, "location": {"x": [[0.2532634139060974, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.2532634139060974, "AUTO_CLAMPED"]], "z": [[3.4837722778320312, 0.0, "BEZIER", "AUTO", 16.666666666666668, 3.4837722778320312, "AUTO_CLAMPED"]], "y": [[1.4936577081680298, 0.0, "BEZIER", "AUTO", 16.666666666666668, 1.4936577081680298, "AUTO_CLAMPED"]]}}, "Pump": {"location": {"z": [[-0.0, 683.3333333333334, "LINEAR", "AUTO"], [-0.10627399384975433, 49.999999999999886, "LINEAR", "AUTO"], [-0.7439179420471191, 66.66666666666674, "LINEAR", "AUTO"], [-0.7439179420471191, 200.0, "LINEAR", "AUTO"], [-0.18597948551177979, 66.66666666666674, "LINEAR", "AUTO"], [-0.0, 66.66666666666652, "LINEAR", "AUTO"]]}}, "Shell": {"location": {"x": [[1.5205265935236412e-09, 0.0, "BEZIER", "AUTO", 16.666666666666668, 1.5205265935236412e-09, "AUTO_CLAMPED"]], "z": [[1.2549771070480347, 0.0, "BEZIER", "AUTO", 16.666666666666668, 1.2549771070480347, "AUTO_CLAMPED"]], "y": [[-4.465472221374512, 0.0, "BEZIER", "AUTO", 16.666666666666668, -4.465472221374512, "AUTO_CLAMPED"]]}}, "Sight": {"rotation_euler": {"x": [[0.0, 0.0, "LINEAR", "AUTO"], [-10.132303034637006, 50.0, "LINEAR", "AUTO"], [0.0, 33.33333333333333, "LINEAR", "AUTO"], [0.0, 99.99999999999999, "LINEAR", "AUTO"], [-7.955241708397972, 83.33333333333337, "LINEAR", "AUTO"], [-10.701222787779573, 99.99999999999994, "LINEAR", "AUTO"], [0.0, 116.66666666666669, "LINEAR", "AUTO"]]}, "location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.0, "AUTO_CLAMPED"]], "z": [[2.990000009536743, 0.0, "BEZIER", "AUTO", 16.666666666666668, 2.990000009536743, "AUTO_CLAMPED"]], "y": [[2.104297161102295, 0.0, "BEZIER", "AUTO", 16.666666666666668, 2.104297161102295, "AUTO_CLAMPED"]]}}}, "Inspect": {"Gun": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 50.0, 0.0, "AUTO_CLAMPED"], [-0.12323401868343353, 150.0, "BEZIER", "AUTO", 100.0, -0.12323401868343353, "AUTO_CLAMPED", 244.44443384806314, -0.12323401868343353, "AUTO_CLAMPED"], [0.6714629530906677, 283.33333333333337, "BEZIER", "AUTO", 338.8888994852702, 0.6316179633140564, "AUTO_CLAMPED", 550.0, 0.720683217048645, "AUTO_CLAMPED"], [0.720683217048645, 350.0, "BEZIER", "AUTO", 666.6666666666666, 0.6878942847251892, "AUTO_CLAMPED", 822.2222010294596, 0.7316128611564636, "AUTO_CLAMPED"], [0.7498289346694946, 116.66666666666663, "BEZIER", "AUTO", 861.1111323038737, 0.7498289346694946, "AUTO_CLAMPED", 938.8888676961263, 0.7498289346694946, "AUTO_CLAMPED"], [-0.2174956500530243, 116.66666666666663, "BEZIER", "AUTO", 977.7777989705404, -0.2174956500530243, "AUTO_CLAMPED", 1055.555534362793, -0.2174956500530243, "AUTO_CLAMPED"], [0.6381056308746338, 116.66666666666663, "BEZIER", "AUTO", 1094.4444020589192, 0.25491249561309814, "AUTO_CLAMPED", 1177.7777353922525, 1.0760406255722046, "AUTO_CLAMPED"], [1.39745032787323, 133.33333333333326, "BEZIER", "AUTO", 1222.2222646077473, 1.39745032787323, "AUTO_CLAMPED", 1305.5555979410806, 1.39745032787323, "AUTO_CLAMPED"], [0.7498289346694946, 116.66666666666674, "BEZIER", "AUTO", 1344.4444020589192, 0.7582998871803284, "AUTO_CLAMPED", 1416.6666666666667, 0.7425681352615356, "AUTO_CLAMPED"], [0.7425681352615356, 100.00000000000023, "BEZIER", "AUTO", 1450.0, 0.7498289346694946, "AUTO_CLAMPED", 1572.2222646077473, 0.7232059836387634, "AUTO_CLAMPED"], [0.0, 266.6666666666665, "BEZIER", "AUTO", 1661.111068725586, 0.0, "AUTO_CLAMPED", 1838.888931274414, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 50.0, -0.0, "AUTO_CLAMPED"], [0.004470236599445343, 150.0, "BEZIER", "AUTO", 100.0, 0.004470236599445343, "AUTO_CLAMPED", 244.44443384806314, 0.004470236599445343, "AUTO_CLAMPED"], [-0.7847118377685547, 283.33333333333337, "BEZIER", "AUTO", 338.8888994852702, -0.7847118377685547, "AUTO_CLAMPED", 550.0, -0.7847118377685547, "AUTO_CLAMPED"], [-0.7614920139312744, 350.0, "BEZIER", "AUTO", 666.6666666666666, -0.7614920139312744, "AUTO_CLAMPED", 822.2222010294596, -0.7614920139312744, "AUTO_CLAMPED"], [-0.8043150305747986, 116.66666666666663, "BEZIER", "AUTO", 861.1111323038737, -0.8043150305747986, "AUTO_CLAMPED", 938.8888676961263, -0.8043150305747986, "AUTO_CLAMPED"], [0.2914704382419586, 116.66666666666663, "BEZIER", "AUTO", 977.7777989705404, 0.2914704382419586, "AUTO_CLAMPED", 1055.555534362793, 0.2914704382419586, "AUTO_CLAMPED"], [-1.007084608078003, 116.66666666666663, "BEZIER", "AUTO", 1094.4444020589192, -0.7027649879455566, "AUTO_CLAMPED", 1177.7777353922525, -1.3548784255981445, "AUTO_CLAMPED"], [-1.3548784255981445, 133.33333333333326, "BEZIER", "AUTO", 1222.2222646077473, -1.3548784255981445, "AUTO_CLAMPED", 1305.5555979410806, -1.3548784255981445, "AUTO_CLAMPED"], [-0.8043150305747986, 116.66666666666674, "BEZIER", "AUTO", 1344.4444020589192, -0.9178578853607178, "AUTO_CLAMPED", 1416.6666666666667, -0.7069925665855408, "AUTO_CLAMPED"], [-0.7069925665855408, 100.00000000000023, "BEZIER", "AUTO", 1450.0, -0.7431455850601196, "AUTO_CLAMPED", 1572.2222646077473, -0.6105844974517822, "AUTO_CLAMPED"], [-0.0, 266.6666666666665, "BEZIER", "AUTO", 1661.111068725586, -0.0, "AUTO_CLAMPED", 1838.888931274414, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 50.0, 0.0, "AUTO_CLAMPED"], [-0.8819321990013123, 150.0, "BEZIER", "AUTO", 100.0, -0.8819321990013123, "AUTO_CLAMPED", 244.44443384806314, -0.8819321990013123, "AUTO_CLAMPED"], [0.7901571393013, 283.33333333333337, "BEZIER", "AUTO", 338.8888994852702, 0.7901571393013, "AUTO_CLAMPED", 550.0, 0.7901571393013, "AUTO_CLAMPED"], [0.597180962562561, 350.0, "BEZIER", "AUTO", 666.6666666666666, 0.7901571393013, "AUTO_CLAMPED", 822.2222010294596, 0.5328555703163147, "AUTO_CLAMPED"], [0.0791918933391571, 116.66666666666663, "BEZIER", "AUTO", 861.1111323038737, 0.0791918933391571, "AUTO_CLAMPED", 938.8888676961263, 0.0791918933391571, "AUTO_CLAMPED"], [2.510791063308716, 116.66666666666663, "BEZIER", "AUTO", 977.7777989705404, 0.9371596574783325, "AUTO_CLAMPED", 1055.555534362793, 4.084422588348389, "AUTO_CLAMPED"], [5.609644889831543, 116.66666666666663, "BEZIER", "AUTO", 1077.044932047526, 5.669650554656982, "ALIGNED", 1188.8394673665364, 5.550473213195801, "ALIGNED"], [1.905346393585205, 133.33333333333326, "BEZIER", "AUTO", 1222.2222646077473, 3.3027164936065674, "AUTO_CLAMPED", 1305.5555979410806, 0.6826475858688354, "AUTO_CLAMPED"], [0.0791918933391571, 116.66666666666674, "BEZIER", "AUTO", 1344.4444020589192, 0.37730181217193604, "AUTO_CLAMPED", 1416.6666666666667, -0.17633089423179626, "AUTO_CLAMPED"], [-0.42653748393058777, 100.00000000000023, "BEZIER", "AUTO", 1450.0, -0.42653748393058777, "AUTO_CLAMPED", 1572.2222646077473, -0.42653748393058777, "AUTO_CLAMPED"], [0.0, 266.6666666666665, "BEZIER", "AUTO", 1661.111068725586, 0.0, "AUTO_CLAMPED", 1838.888931274414, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, 0.0, "AUTO_CLAMPED"], [-4.633752304645683, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, -4.633752304645683, "AUTO_CLAMPED", 166.66666666666666, -4.633752304645683, "AUTO_CLAMPED"], [5.477748961987227, 100.0, "BEZIER", "AUTO", 200.0, 5.477748961987227, "AUTO_CLAMPED", 344.44443384806317, 5.477748961987227, "AUTO_CLAMPED"], [-30.605503934936856, 333.33333333333326, "BEZIER", "AUTO", 455.55556615193683, -29.397615716071368, "AUTO_CLAMPED", 638.8888676961263, -31.390630764935235, "AUTO_CLAMPED"], [-31.390630764935235, 216.66666666666674, "BEZIER", "AUTO", 711.1111323038737, -31.390630764935235, "AUTO_CLAMPED", 822.2222010294596, -31.390630764935235, "AUTO_CLAMPED"], [-17.61978265282124, 116.66666666666663, "BEZIER", "EASE_IN_OUT", 861.1111323038737, -19.94842124466849, "AUTO_CLAMPED", 1066.6666666666667, -7.639905534796823, "AUTO_CLAMPED"], [-7.639905534796823, 500.0, "BEZIER", "AUTO", 1233.3333333333335, -17.248046192148713, "AUTO_CLAMPED", 1427.7777353922525, -6.0385489008671165, "AUTO_CLAMPED"], [-2.2699262857418203, 83.33333333333348, "BEZIER", "AUTO", 1455.5555979410808, -3.903406153111743, "AUTO_CLAMPED", 1555.5555979410806, 1.977121198665251, "AUTO_CLAMPED"], [2.8329244783173966, 216.66666666666652, "BEZIER", "AUTO", 1627.7777353922527, 2.8329244783173966, "AUTO_CLAMPED", 1750.0, 2.8329244783173966, "AUTO_CLAMPED"], [0.0, 149.99999999999977, "BEZIER", "AUTO", 1800.0, 0.0, "AUTO_CLAMPED", 1900.0, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, -0.0, "AUTO_CLAMPED"], [-3.1105595018039556, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, -1.7627949851521283, "AUTO_CLAMPED", 177.77778307596842, -4.458324018455783, "AUTO_CLAMPED"], [-6.432775040042382, 133.33333333333334, "BEZIER", "AUTO", 222.22221692403158, -5.391058066607309, "AUTO_CLAMPED", 366.66666666666663, -8.776637696662767, "AUTO_CLAMPED"], [-11.67222638585068, 299.99999999999994, "BEZIER", "AUTO", 466.6666666666667, -11.67222638585068, "AUTO_CLAMPED", 638.8888676961263, -11.67222638585068, "AUTO_CLAMPED"], [-4.456549023045226, 216.66666666666674, "BEZIER", "AUTO", 711.1111323038737, -4.456549023045226, "AUTO_CLAMPED", 822.2222010294596, -4.456549023045226, "AUTO_CLAMPED"], [-13.314149220808385, 116.66666666666663, "BEZIER", "EASE_IN_OUT", 861.1111323038737, -4.456549023045226, "AUTO_CLAMPED", 1066.6666666666667, -51.27529219370166, "AUTO_CLAMPED"], [-361.35626702102377, 500.0, "BEZIER", "AUTO", 1233.3333333333335, -361.35626702102377, "AUTO_CLAMPED", 1427.7777353922525, -361.35626702102377, "AUTO_CLAMPED"], [-355.8403428511049, 83.33333333333348, "BEZIER", "AUTO", 1455.5555979410808, -357.0212279170867, "AUTO_CLAMPED", 1555.5555979410806, -352.7700635361574, "AUTO_CLAMPED"], [-352.7700635361574, 216.66666666666652, "BEZIER", "AUTO", 1627.7777353922527, -352.7700635361574, "AUTO_CLAMPED", 1750.0, -352.7700635361574, "AUTO_CLAMPED"], [-360.00001001791264, 149.99999999999977, "BEZIER", "AUTO", 1800.0, -360.00001001791264, "AUTO_CLAMPED", 1900.0, -360.00001001791264, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, 0.0, "AUTO_CLAMPED"], [0.33971415928555554, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, 0.33971415928555554, "AUTO_CLAMPED", 177.77778307596842, 0.33971415928555554, "AUTO_CLAMPED"], [-0.41244006589672083, 133.33333333333334, "BEZIER", "AUTO", 222.22221692403158, -0.41244006589672083, "AUTO_CLAMPED", 366.66666666666663, -0.41244006589672083, "AUTO_CLAMPED"], [44.46649859126397, 299.99999999999994, "BEZIER", "AUTO", 466.6666666666667, 44.46649859126397, "AUTO_CLAMPED", 638.8888676961263, 44.46649859126397, "AUTO_CLAMPED"], [44.02138882343258, 216.66666666666674, "BEZIER", "AUTO", 711.1111323038737, 44.02138882343258, "AUTO_CLAMPED", 822.2222010294596, 44.02138882343258, "AUTO_CLAMPED"], [47.94823533200216, 116.66666666666663, "BEZIER", "EASE_IN_OUT", 861.1111323038737, 47.88392910096649, "AUTO_CLAMPED", 1066.6666666666667, 48.223830049917595, "AUTO_CLAMPED"], [48.223830049917595, 500.0, "BEZIER", "AUTO", 1233.3333333333335, 47.94823533200216, "AUTO_CLAMPED", 1427.7777353922525, 48.26976307208593, "AUTO_CLAMPED"], [48.38842053344197, 83.33333333333348, "BEZIER", "AUTO", 1455.5555979410808, 48.38842053344197, "AUTO_CLAMPED", 1555.5555979410806, 48.38842053344197, "AUTO_CLAMPED"], [5.144987695152906, 216.66666666666652, "BEZIER", "AUTO", 1627.7777353922527, 12.57663649328781, "AUTO_CLAMPED", 1750.0, 0.0, "AUTO_CLAMPED"], [0.0, 149.99999999999977, "BEZIER", "AUTO", 1800.0, 0.0, "AUTO_CLAMPED", 1900.0, 0.0, "AUTO_CLAMPED"]]}}, "Loop": {"rotation_euler": {"z": [[-0.0, 516.6666666666666, "BEZIER", "AUTO", 544.444465637207, -0.0, "AUTO_CLAMPED"], [46.517741002802204, 83.33333333333337, "BOUNCE", "AUTO", 572.2222010294596, 46.517741002802204, "AUTO_CLAMPED"], [-0.0, 250.0, "BEZIER", "AUTO", 866.6666666666667, -0.0, "AUTO_CLAMPED"], [-0.0, 50.0, "BEZIER", "EASE_IN", 883.3333333333333, -0.0, "AUTO_CLAMPED", 983.3333333333333, -0.0, "AUTO_CLAMPED"], [142.2283622194905, 250.0, "BEZIER", "AUTO", 1066.6666666666667, 142.2283622194905, "AUTO_CLAMPED", 1216.6666666666665, 142.2283622194905, "AUTO_CLAMPED"], [142.2283622194905, 200.0, "BOUNCE", "AUTO", 1283.3333333333333, 142.2283622194905, "AUTO_CLAMPED"], [-0.0, 300.0, "BEZIER", "AUTO", 1750.0, -0.0, "AUTO_CLAMPED"]]}, "location": {"x": [[0.2532634139060974, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.2532634139060974, "AUTO_CLAMPED"]], "z": [[3.4837722778320312, 0.0, "BEZIER", "AUTO", 16.666666666666668, 3.4837722778320312, "AUTO_CLAMPED"]], "y": [[1.4936577081680298, 0.0, "BEZIER", "AUTO", 16.666666666666668, 1.4936577081680298, "AUTO_CLAMPED"]]}}, "Pump": {"location": {"z": [[-0.0, 483.3333333333333, "BEZIER", "AUTO", 533.3333333333334, -0.0, "AUTO_CLAMPED"], [-0.5437495112419128, 149.99999999999994, "BEZIER", "AUTO", 583.3333333333334, -0.5437495112419128, "AUTO_CLAMPED", 894.444465637207, -0.5437495112419128, "AUTO_CLAMPED"], [-0.5437495112419128, 783.3333333333335, "BEZIER", "AUTO", 1155.5555979410808, -0.5437495112419128, "AUTO_CLAMPED", 1461.111068725586, -0.5437495112419128, "AUTO_CLAMPED"], [-0.0, 133.33333333333326, "BEZIER", "AUTO", 1505.5555979410806, -0.0, "AUTO_CLAMPED", 1594.4444020589192, -0.0, "AUTO_CLAMPED"]]}}, "Shell": {"location": {"z": [[1.2549771070480347, 0.0, "BEZIER", "AUTO", 161.11111640930176, 1.2549771070480347, "AUTO_CLAMPED"], [1.2549771070480347, 483.3333333333333, "BEZIER", "AUTO", 322.22220102945965, 1.2549771070480347, "AUTO_CLAMPED", 533.3333333333334, 1.2549771070480347, "AUTO_CLAMPED"], [0.6961657404899597, 149.99999999999994, "BEZIER", "AUTO", 583.3333333333334, 0.6961657404899597, "AUTO_CLAMPED", 894.444465637207, 0.6961657404899597, "AUTO_CLAMPED"], [0.6961657404899597, 783.3333333333335, "BEZIER", "AUTO", 1155.5555979410808, 0.6961657404899597, "AUTO_CLAMPED", 1461.111068725586, 0.6961657404899597, "AUTO_CLAMPED"], [1.2549771070480347, 133.33333333333326, "BEZIER", "AUTO", 1505.5555979410806, 1.2549771070480347, "AUTO_CLAMPED", 1594.4444020589192, 1.2549771070480347, "AUTO_CLAMPED"]], "x": [[1.5205265935236412e-09, 0.0, "BEZIER", "AUTO", 16.666666666666668, 1.5205265935236412e-09, "AUTO_CLAMPED"]], "y": [[1.7459099292755127, 0.0, "BEZIER", "AUTO", 16.666666666666668, 1.7459099292755127, "AUTO_CLAMPED"]]}}, "Sight": {"rotation_euler": {"x": [[0.0, 1083.3333333333333, "BEZIER", "AUTO", 1161.111068725586, 0.0, "AUTO_CLAMPED"], [-59.84361082822633, 233.33333333333348, "BOUNCE", "AUTO", 1238.888931274414, -59.84361082822633, "AUTO_CLAMPED"], [0.0, 350.0, "BEZIER", "AUTO", 1783.3333333333333, 0.0, "AUTO_CLAMPED"]]}, "location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.0, "AUTO_CLAMPED"]], "z": [[2.990000009536743, 0.0, "BEZIER", "AUTO", 16.666666666666668, 2.990000009536743, "AUTO_CLAMPED"]], "y": [[2.104297161102295, 0.0, "BEZIER", "AUTO", 16.666666666666668, 2.104297161102295, "AUTO_CLAMPED"]]}}}, "Jammed": {"Gun": {"location": {"x": [[1.7611019611358643, 0.0, "BEZIER", "AUTO", 72.22222487131755, 1.7611019611358643, "AUTO_CLAMPED"], [0.4335063397884369, 216.66666666666669, "BEZIER", "AUTO", 144.44443384806317, 0.4335063397884369, "AUTO_CLAMPED", 261.11111640930176, 0.4335063397884369, "AUTO_CLAMPED"], [0.5203688144683838, 133.33333333333331, "BEZIER", "AUTO", 305.55556615193683, 0.5203688144683838, "AUTO_CLAMPED", 394.44443384806317, 0.5203688144683838, "AUTO_CLAMPED"], [0.5093004703521729, 133.33333333333331, "BEZIER", "AUTO", 438.88889948527014, 0.5203688144683838, "AUTO_CLAMPED", 516.6666666666666, 0.5009992122650146, "AUTO_CLAMPED"], [0.46423017978668213, 100.00000000000006, "BEZIER", "AUTO", 550.0, 0.46423017978668213, "AUTO_CLAMPED", 611.1111323038737, 0.46423017978668213, "AUTO_CLAMPED"], [0.5423690676689148, 83.33333333333326, "BEZIER", "AUTO", 638.8888676961263, 0.5423690676689148, "AUTO_CLAMPED", 716.6666666666666, 0.5423690676689148, "AUTO_CLAMPED"], [0.46423017978668213, 150.0, "BEZIER", "AUTO", 766.6666666666666, 0.483991414308548, "AUTO_CLAMPED", 877.7777989705403, 0.4400775730609894, "AUTO_CLAMPED"], [0.4400775730609894, 183.33333333333337, "BEZIER", "AUTO", 938.8888676961263, 0.46423017978668213, "AUTO_CLAMPED", 1072.2222646077473, 0.4115335941314697, "AUTO_CLAMPED"], [0.0, 216.66666666666652, "BEZIER", "AUTO", 1144.4444020589192, 0.0, "AUTO_CLAMPED", 1288.888931274414, 0.0, "AUTO_CLAMPED"]], "z": [[0.31467199325561523, 0.0, "BEZIER", "AUTO", 72.22222487131755, 0.31467199325561523, "AUTO_CLAMPED"], [0.1592063307762146, 216.66666666666669, "BEZIER", "AUTO", 144.44443384806317, 0.1592063307762146, "AUTO_CLAMPED", 261.11111640930176, 0.1592063307762146, "AUTO_CLAMPED"], [0.6345540285110474, 133.33333333333331, "BEZIER", "AUTO", 305.55556615193683, 0.6345540285110474, "AUTO_CLAMPED", 394.44443384806317, 0.6345540285110474, "AUTO_CLAMPED"], [0.5526263117790222, 133.33333333333331, "BEZIER", "AUTO", 438.88889948527014, 0.6345540285110474, "AUTO_CLAMPED", 516.6666666666666, 0.49118053913116455, "AUTO_CLAMPED"], [0.21367275714874268, 100.00000000000006, "BEZIER", "AUTO", 550.0, 0.3746391534805298, "AUTO_CLAMPED", 611.1111323038737, 0.07953411340713501, "AUTO_CLAMPED"], [-0.08545513451099396, 83.33333333333326, "BEZIER", "AUTO", 638.8888676961263, -0.08545513451099396, "AUTO_CLAMPED", 716.6666666666666, -0.08545513451099396, "AUTO_CLAMPED"], [0.21367275714874268, 150.0, "BEZIER", "AUTO", 766.6666666666666, 0.21367275714874268, "AUTO_CLAMPED", 877.7777989705403, 0.21367275714874268, "AUTO_CLAMPED"], [-0.23178784549236298, 183.33333333333337, "BEZIER", "AUTO", 938.8888676961263, -0.23178784549236298, "AUTO_CLAMPED", 1072.2222646077473, -0.23178784549236298, "AUTO_CLAMPED"], [-0.0, 216.66666666666652, "BEZIER", "AUTO", 1144.4444020589192, -0.0, "AUTO_CLAMPED", 1288.888931274414, -0.0, "AUTO_CLAMPED"]], "y": [[0.8750439286231995, 0.0, "BEZIER", "AUTO", 72.22222487131755, 0.8750439286231995, "AUTO_CLAMPED"], [0.8282241821289062, 216.66666666666669, "BEZIER", "AUTO", 144.44443384806317, 0.8282241821289062, "AUTO_CLAMPED", 261.11111640930176, 0.8282241821289062, "AUTO_CLAMPED"], [0.8524319529533386, 133.33333333333331, "BEZIER", "AUTO", 305.55556615193683, 0.8524319529533386, "AUTO_CLAMPED", 394.44443384806317, 0.8524319529533386, "AUTO_CLAMPED"], [0.694107174873352, 133.33333333333331, "BEZIER", "AUTO", 438.88889948527014, 0.7370265126228333, "AUTO_CLAMPED", 516.6666666666666, 0.6619176864624023, "AUTO_CLAMPED"], [0.5792746543884277, 100.00000000000006, "BEZIER", "AUTO", 550.0, 0.6705016493797302, "AUTO_CLAMPED", 611.1111323038737, 0.5032521486282349, "AUTO_CLAMPED"], [0.3579166531562805, 83.33333333333326, "BEZIER", "AUTO", 638.8888676961263, 0.3579166531562805, "AUTO_CLAMPED", 716.6666666666666, 0.3579166531562805, "AUTO_CLAMPED"], [0.5792746543884277, 150.0, "BEZIER", "AUTO", 766.6666666666666, 0.5792746543884277, "AUTO_CLAMPED", 877.7777989705403, 0.5792746543884277, "AUTO_CLAMPED"], [0.12604567408561707, 183.33333333333337, "BEZIER", "AUTO", 938.8888676961263, 0.23269972205162048, "AUTO_CLAMPED", 1072.2222646077473, 0.0, "AUTO_CLAMPED"], [0.0, 216.66666666666652, "BEZIER", "AUTO", 1144.4444020589192, 0.0, "AUTO_CLAMPED", 1288.888931274414, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[-18.983153297952903, 0.0, "BEZIER", "AUTO", 88.88889153798421, -18.983153297952903, "AUTO_CLAMPED"], [-19.09516157015194, 266.6666666666667, "BEZIER", "AUTO", 177.77776718139648, -18.983153297952903, "AUTO_CLAMPED", 300.0, -19.137165526000228, "AUTO_CLAMPED"], [-22.28346484640992, 99.99999999999994, "BEZIER", "AUTO", 333.3333333333333, -22.28346484640992, "AUTO_CLAMPED", 405.55556615193683, -22.28346484640992, "AUTO_CLAMPED"], [-17.511022135572542, 116.66666666666669, "BEZIER", "AUTO", 444.44443384806317, -18.973317825548083, "AUTO_CLAMPED", 516.6666666666666, -16.25762607381455, "AUTO_CLAMPED"], [-14.249356651213104, 100.00000000000006, "BEZIER", "AUTO", 550.0, -16.361834269981436, "AUTO_CLAMPED", 611.1111323038737, -12.488958208686002, "AUTO_CLAMPED"], [-9.18919392913623, 83.33333333333326, "BEZIER", "AUTO", 638.8888676961263, -9.18919392913623, "AUTO_CLAMPED", 716.6666666666666, -9.18919392913623, "AUTO_CLAMPED"], [-14.249356651213104, 150.0, "BEZIER", "AUTO", 766.6666666666666, -14.249356651213104, "AUTO_CLAMPED", 877.7777989705403, -14.249356651213104, "AUTO_CLAMPED"], [-4.831175507510316, 183.33333333333337, "BEZIER", "AUTO", 938.8888676961263, -7.957230147220092, "AUTO_CLAMPED", 1094.4444020589192, 0.0, "AUTO_CLAMPED"], [0.0, 283.33333333333326, "BEZIER", "AUTO", 1188.888931274414, 0.0, "AUTO_CLAMPED", 1377.7777353922527, 0.0, "AUTO_CLAMPED"]], "z": [[86.04810969222216, 0.0, "BEZIER", "AUTO", 88.88889153798421, 86.04810969222216, "AUTO_CLAMPED"], [12.109782818233683, 266.6666666666667, "BEZIER", "AUTO", 177.77776718139648, 12.109782818233683, "AUTO_CLAMPED", 300.0, 12.109782818233683, "AUTO_CLAMPED"], [14.211438856035777, 99.99999999999994, "BEZIER", "AUTO", 333.3333333333333, 14.211438856035777, "AUTO_CLAMPED", 405.55556615193683, 14.211438856035777, "AUTO_CLAMPED"], [11.62535165135053, 116.66666666666669, "BEZIER", "AUTO", 444.44443384806317, 12.759742765878451, "AUTO_CLAMPED", 516.6666666666666, 10.65301616639127, "AUTO_CLAMPED"], [9.913802721767361, 100.00000000000006, "BEZIER", "AUTO", 550.0, 9.913802721767361, "AUTO_CLAMPED", 611.1111323038737, 9.913802721767361, "AUTO_CLAMPED"], [14.555850291160024, 83.33333333333326, "BEZIER", "AUTO", 638.8888676961263, 14.555850291160024, "AUTO_CLAMPED", 716.6666666666666, 14.555850291160024, "AUTO_CLAMPED"], [9.913802721767361, 150.0, "BEZIER", "AUTO", 766.6666666666666, 9.913802721767361, "AUTO_CLAMPED", 877.7777989705403, 9.913802721767361, "AUTO_CLAMPED"], [10.868919299829018, 183.33333333333337, "BEZIER", "AUTO", 938.8888676961263, 10.868919299829018, "AUTO_CLAMPED", 1094.4444020589192, 10.868919299829018, "AUTO_CLAMPED"], [-0.0, 283.33333333333326, "BEZIER", "AUTO", 1188.888931274414, -0.0, "AUTO_CLAMPED", 1377.7777353922527, -0.0, "AUTO_CLAMPED"]], "y": [[29.613753637261834, 0.0, "BEZIER", "AUTO", 88.88889153798421, 29.613753637261834, "AUTO_CLAMPED"], [14.500921909854782, 266.6666666666667, "BEZIER", "AUTO", 177.77776718139648, 14.500921909854782, "AUTO_CLAMPED", 300.0, 14.500921909854782, "AUTO_CLAMPED"], [14.956577489764673, 99.99999999999994, "BEZIER", "AUTO", 333.3333333333333, 14.956577489764673, "AUTO_CLAMPED", 405.55556615193683, 14.956577489764673, "AUTO_CLAMPED"], [12.810625967647754, 116.66666666666669, "BEZIER", "AUTO", 444.44443384806317, 13.804464595661505, "AUTO_CLAMPED", 516.6666666666666, 11.958763920590117, "AUTO_CLAMPED"], [8.863413542520487, 100.00000000000006, "BEZIER", "AUTO", 550.0, 11.223185844151947, "AUTO_CLAMPED", 611.1111323038737, 6.896936339903054, "AUTO_CLAMPED"], [3.8025490185063964, 83.33333333333326, "BEZIER", "AUTO", 638.8888676961263, 3.8025490185063964, "AUTO_CLAMPED", 716.6666666666666, 3.8025490185063964, "AUTO_CLAMPED"], [8.863413542520487, 150.0, "BEZIER", "AUTO", 766.6666666666666, 8.863413542520487, "AUTO_CLAMPED", 877.7777989705403, 8.863413542520487, "AUTO_CLAMPED"], [4.843448503675183, 183.33333333333337, "BEZIER", "AUTO", 938.8888676961263, 6.679401645027318, "AUTO_CLAMPED", 1094.4444020589192, 2.0060666865941186, "AUTO_CLAMPED"], [0.0, 283.33333333333326, "BEZIER", "AUTO", 1188.888931274414, 0.0, "AUTO_CLAMPED", 1377.7777353922527, 0.0, "AUTO_CLAMPED"]]}}, "Pump": {"location": {"z": [[-0.0, 250.0, "BEZIER", "AUTO", 294.4444338480631, -0.0, "AUTO_CLAMPED"], [-0.7347903847694397, 133.33333333333331, "BEZIER", "AUTO", 338.8888994852702, -0.7347903847694397, "AUTO_CLAMPED", 438.88889948527014, -0.7347903847694397, "AUTO_CLAMPED"], [-0.7347903847694397, 166.66666666666669, "BEZIER", "EASE_OUT", 494.4444338480631, -0.7347903847694397, "AUTO_CLAMPED", 561.1111323038737, -0.7347903847694397, "AUTO_CLAMPED"], [-0.5442891716957092, 33.33333333333337, "BEZIER", "AUTO", 572.2222010294596, -0.5442891716957092, "AUTO_CLAMPED", 627.7777989705403, -0.5442891716957092, "AUTO_CLAMPED"], [-0.5442891716957092, 133.33333333333326, "BEZIER", "AUTO", 672.2222010294596, -0.5442891716957092, "AUTO_CLAMPED", 733.3333333333333, -0.5442891716957092, "AUTO_CLAMPED"], [-0.7347903847694397, 50.0, "BEZIER", "EASE_OUT", 750.0, -0.7347903847694397, "AUTO_CLAMPED", 805.555534362793, -0.7347903847694397, "AUTO_CLAMPED"], [-0.7347903847694397, 116.66666666666663, "BEZIER", "EASE_OUT", 844.444465637207, -0.7347903847694397, "AUTO_CLAMPED", 916.6666666666666, -0.7347903847694397, "AUTO_CLAMPED"], [-0.0, 100.0, "BEZIER", "AUTO", 950.0, -0.0, "AUTO_CLAMPED", 1016.6666666666666, -0.0, "AUTO_CLAMPED"]]}}, "Shell": {"location": {"x": [[-0.0016984597314149141, 0.0, "BEZIER", "AUTO", 83.33333333333333, -0.0016984597314149141, "AUTO_CLAMPED"], [-0.0016984597314149141, 250.0, "BEZIER", "AUTO", 166.66666666666666, -0.0016984597314149141, "AUTO_CLAMPED", 294.4444338480631, -0.0016984597314149141, "AUTO_CLAMPED"], [-0.007186012342572212, 133.33333333333331, "BEZIER", "AUTO", 338.8888994852702, -0.007186012342572212, "AUTO_CLAMPED", 438.88889948527014, -0.007186012342572212, "AUTO_CLAMPED"], [-0.007186012342572212, 166.66666666666669, "BEZIER", "AUTO", 494.4444338480631, -0.007186012342572212, "AUTO_CLAMPED", 561.1111323038737, -0.007186012342572212, "AUTO_CLAMPED"], [-0.005604023113846779, 33.33333333333337, "BEZIER", "AUTO", 572.2222010294596, -0.005604023113846779, "AUTO_CLAMPED", 627.7777989705403, -0.005604023113846779, "AUTO_CLAMPED"], [-0.005604023113846779, 133.33333333333326, "BEZIER", "AUTO", 672.2222010294596, -0.005604023113846779, "AUTO_CLAMPED", 733.3333333333333, -0.005604023113846779, "AUTO_CLAMPED"], [-0.00728671345859766, 50.0, "BEZIER", "AUTO", 750.0, -0.00728671345859766, "AUTO_CLAMPED", 805.555534362793, -0.00728671345859766, "AUTO_CLAMPED"], [-0.00728671345859766, 116.66666666666663, "BEZIER", "AUTO", 844.444465637207, -0.00728671345859766, "AUTO_CLAMPED", 916.6666666666666, -0.00728671345859766, "AUTO_CLAMPED"], [1.5205265935236412e-09, 100.0, "CONSTANT", "AUTO", 950.0, 1.5205265935236412e-09, "AUTO_CLAMPED"], [-0.00728671345859766, 33.33333333333337, "BEZIER", "AUTO", 1027.7777989705403, -0.00728671345859766, "AUTO_CLAMPED"]], "z": [[1.2552038431167603, 0.0, "BEZIER", "AUTO", 83.33333333333333, 1.2552038431167603, "AUTO_CLAMPED"], [1.2552038431167603, 250.0, "BEZIER", "AUTO", 166.66666666666666, 1.2552038431167603, "AUTO_CLAMPED", 294.4444338480631, 1.2552038431167603, "AUTO_CLAMPED"], [0.5118296146392822, 133.33333333333331, "BEZIER", "AUTO", 338.8888994852702, 0.5118296146392822, "AUTO_CLAMPED", 438.88889948527014, 0.5118296146392822, "AUTO_CLAMPED"], [0.5118296146392822, 166.66666666666669, "BEZIER", "AUTO", 494.4444338480631, 0.5118296146392822, "AUTO_CLAMPED", 561.1111323038737, 0.5118296146392822, "AUTO_CLAMPED"], [0.7032749652862549, 33.33333333333337, "BEZIER", "AUTO", 572.2222010294596, 0.7032749652862549, "AUTO_CLAMPED", 627.7777989705403, 0.7032749652862549, "AUTO_CLAMPED"], [0.7032749652862549, 133.33333333333326, "BEZIER", "AUTO", 672.2222010294596, 0.7032749652862549, "AUTO_CLAMPED", 733.3333333333333, 0.7032749652862549, "AUTO_CLAMPED"], [0.5241438150405884, 50.0, "BEZIER", "AUTO", 750.0, 0.5241438150405884, "AUTO_CLAMPED", 805.555534362793, 0.5241438150405884, "AUTO_CLAMPED"], [0.5241438150405884, 116.66666666666663, "BEZIER", "AUTO", 844.444465637207, 0.5241438150405884, "AUTO_CLAMPED", 916.6666666666666, 0.5241438150405884, "AUTO_CLAMPED"], [1.2549771070480347, 100.0, "CONSTANT", "AUTO", 950.0, 1.2549771070480347, "AUTO_CLAMPED"], [0.5241438150405884, 33.33333333333337, "BEZIER", "AUTO", 1027.7777989705403, 0.5241438150405884, "AUTO_CLAMPED"]], "y": [[1.7186778783798218, 0.0, "BEZIER", "AUTO", 83.33333333333333, 1.7186778783798218, "AUTO_CLAMPED"], [1.7186778783798218, 250.0, "BEZIER", "AUTO", 166.66666666666666, 1.7186778783798218, "AUTO_CLAMPED", 294.4444338480631, 1.7186778783798218, "AUTO_CLAMPED"], [1.6501657962799072, 133.33333333333331, "BEZIER", "AUTO", 338.8888994852702, 1.6501657962799072, "AUTO_CLAMPED", 438.88889948527014, 1.6501657962799072, "AUTO_CLAMPED"], [1.6501657962799072, 166.66666666666669, "BEZIER", "AUTO", 494.4444338480631, 1.6501657962799072, "AUTO_CLAMPED", 561.1111323038737, 1.6501657962799072, "AUTO_CLAMPED"], [1.6572562456130981, 33.33333333333337, "BEZIER", "AUTO", 572.2222010294596, 1.6572562456130981, "AUTO_CLAMPED", 627.7777989705403, 1.6572562456130981, "AUTO_CLAMPED"], [1.6572562456130981, 133.33333333333326, "BEZIER", "AUTO", 672.2222010294596, 1.6572562456130981, "AUTO_CLAMPED", 733.3333333333333, 1.6572562456130981, "AUTO_CLAMPED"], [1.6632939577102661, 50.0, "BEZIER", "AUTO", 750.0, 1.6632939577102661, "AUTO_CLAMPED", 805.555534362793, 1.6632939577102661, "AUTO_CLAMPED"], [1.6632939577102661, 116.66666666666663, "BEZIER", "AUTO", 844.444465637207, 1.6632939577102661, "AUTO_CLAMPED", 916.6666666666666, 1.6632939577102661, "AUTO_CLAMPED"], [1.7459099292755127, 100.0, "CONSTANT", "AUTO", 950.0, 1.7459099292755127, "AUTO_CLAMPED"], [1.6632939577102661, 33.33333333333337, "BEZIER", "AUTO", 1027.7777989705403, 1.6632939577102661, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[-7.092402266683656, 0.0, "BEZIER", "AUTO", 83.33333333333333, -7.092402266683656, "AUTO_CLAMPED"], [-7.092402266683656, 250.0, "BEZIER", "AUTO", 166.66666666666666, -7.092402266683656, "AUTO_CLAMPED", 294.4444338480631, -7.092402266683656, "AUTO_CLAMPED"], [-7.092402266683656, 133.33333333333331, "BEZIER", "AUTO", 338.8888994852702, -7.092402266683656, "AUTO_CLAMPED", 438.88889948527014, -7.092402266683656, "AUTO_CLAMPED"], [-7.092402266683656, 166.66666666666669, "BEZIER", "AUTO", 494.4444338480631, -7.092402266683656, "AUTO_CLAMPED", 561.1111323038737, -7.092402266683656, "AUTO_CLAMPED"], [-15.248571491877302, 33.33333333333337, "BEZIER", "AUTO", 572.2222010294596, -15.248571491877302, "AUTO_CLAMPED", 627.7777989705403, -15.248571491877302, "AUTO_CLAMPED"], [-15.248571491877302, 133.33333333333326, "BEZIER", "AUTO", 672.2222010294596, -15.248571491877302, "AUTO_CLAMPED", 733.3333333333333, -15.248571491877302, "AUTO_CLAMPED"], [-7.092402266683656, 50.0, "BEZIER", "AUTO", 750.0, -7.092402266683656, "AUTO_CLAMPED", 805.555534362793, -7.092402266683656, "AUTO_CLAMPED"], [-7.092402266683656, 116.66666666666663, "BEZIER", "AUTO", 844.444465637207, -7.092402266683656, "AUTO_CLAMPED", 916.6666666666666, -7.092402266683656, "AUTO_CLAMPED"], [0.0, 100.0, "CONSTANT", "AUTO", 950.0, 0.0, "AUTO_CLAMPED"], [-7.092402266683656, 33.33333333333337, "BEZIER", "AUTO", 1027.7777989705403, -7.092402266683656, "AUTO_CLAMPED"]], "z": [[0.9713454276947256, 0.0, "BEZIER", "AUTO", 83.33333333333333, 0.9713454276947256, "AUTO_CLAMPED"], [0.9713454276947256, 250.0, "BEZIER", "AUTO", 166.66666666666666, 0.9713454276947256, "AUTO_CLAMPED", 294.4444338480631, 0.9713454276947256, "AUTO_CLAMPED"], [0.9713454276947256, 133.33333333333331, "BEZIER", "AUTO", 338.8888994852702, 0.9713454276947256, "AUTO_CLAMPED", 438.88889948527014, 0.9713454276947256, "AUTO_CLAMPED"], [0.9713454276947256, 166.66666666666669, "BEZIER", "AUTO", 494.4444338480631, 0.9713454276947256, "AUTO_CLAMPED", 561.1111323038737, 0.9713454276947256, "AUTO_CLAMPED"], [1.0169068448835306, 33.33333333333337, "BEZIER", "AUTO", 572.2222010294596, 1.0169068448835306, "AUTO_CLAMPED", 627.7777989705403, 1.0169068448835306, "AUTO_CLAMPED"], [1.0169068448835306, 133.33333333333326, "BEZIER", "AUTO", 672.2222010294596, 1.0169068448835306, "AUTO_CLAMPED", 733.3333333333333, 1.0169068448835306, "AUTO_CLAMPED"], [0.9713454276947256, 50.0, "BEZIER", "AUTO", 750.0, 0.9713454276947256, "AUTO_CLAMPED", 805.555534362793, 0.9713454276947256, "AUTO_CLAMPED"], [0.9713454276947256, 116.66666666666663, "BEZIER", "AUTO", 844.444465637207, 0.9713454276947256, "AUTO_CLAMPED", 916.6666666666666, 0.9713454276947256, "AUTO_CLAMPED"], [-0.0, 100.0, "CONSTANT", "AUTO", 950.0, -0.0, "AUTO_CLAMPED"], [0.9713454276947256, 33.33333333333337, "BEZIER", "AUTO", 1027.7777989705403, 0.9713454276947256, "AUTO_CLAMPED"]], "y": [[0.39039896540381036, 0.0, "BEZIER", "AUTO", 83.33333333333333, 0.39039896540381036, "AUTO_CLAMPED"], [0.39039896540381036, 250.0, "BEZIER", "AUTO", 166.66666666666666, 0.39039896540381036, "AUTO_CLAMPED", 294.4444338480631, 0.39039896540381036, "AUTO_CLAMPED"], [0.39039896540381036, 133.33333333333331, "BEZIER", "AUTO", 338.8888994852702, 0.39039896540381036, "AUTO_CLAMPED", 438.88889948527014, 0.39039896540381036, "AUTO_CLAMPED"], [0.39039896540381036, 166.66666666666669, "BEZIER", "AUTO", 494.4444338480631, 0.39039896540381036, "AUTO_CLAMPED", 561.1111323038737, 0.39039896540381036, "AUTO_CLAMPED"], [0.24863083861951166, 33.33333333333337, "BEZIER", "AUTO", 572.2222010294596, 0.24863083861951166, "AUTO_CLAMPED", 627.7777989705403, 0.24863083861951166, "AUTO_CLAMPED"], [0.24863083861951166, 133.33333333333326, "BEZIER", "AUTO", 672.2222010294596, 0.24863083861951166, "AUTO_CLAMPED", 733.3333333333333, 0.24863083861951166, "AUTO_CLAMPED"], [0.39039896540381036, 50.0, "BEZIER", "AUTO", 750.0, 0.39039896540381036, "AUTO_CLAMPED", 805.555534362793, 0.39039896540381036, "AUTO_CLAMPED"], [0.39039896540381036, 116.66666666666663, "BEZIER", "AUTO", 844.444465637207, 0.39039896540381036, "AUTO_CLAMPED", 916.6666666666666, 0.39039896540381036, "AUTO_CLAMPED"], [0.0, 100.0, "CONSTANT", "AUTO", 950.0, 0.0, "AUTO_CLAMPED"], [0.39039896540381036, 33.33333333333337, "BEZIER", "AUTO", 1027.7777989705403, 0.39039896540381036, "AUTO_CLAMPED"]]}}}, "Reload": {"GuardInner": {"location": {"x": [[3.725290298461914e-09, 0.0, "LINEAR", "AUTO"]], "z": [[0.8854429721832275, 0.0, "LINEAR", "AUTO"]], "y": [[0.8707519173622131, 0.0, "LINEAR", "AUTO"]]}, "rotation_euler": {"x": [[0.0, 350.0, "LINEAR", "AUTO"], [16.02038116054145, 83.33333333333337, "LINEAR", "AUTO"], [23.71116221314476, 83.33333333333326, "LINEAR", "AUTO"], [23.71116221314476, 66.66666666666674, "LINEAR", "AUTO"], [0.0, 83.33333333333326, "LINEAR", "AUTO"]]}}, "GuardOuter": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.0, "AUTO_CLAMPED"]], "z": [[-0.07262593507766724, 0.0, "BEZIER", "AUTO", 16.666666666666668, -0.07262593507766724, "AUTO_CLAMPED"]], "y": [[0.8707519173622131, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.8707519173622131, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 350.0, "BEZIER", "AUTO", 377.7777671813965, 0.0, "AUTO_CLAMPED"], [-17.139458137176558, 83.33333333333337, "BEZIER", "AUTO", 405.55556615193683, -9.800624779672956, "AUTO_CLAMPED", 461.1111005147298, -24.478291494680157, "AUTO_CLAMPED"], [-29.355340260203572, 83.33333333333326, "BEZIER", "AUTO", 488.8888994852702, -29.355340260203572, "AUTO_CLAMPED", 550.0, -29.355340260203572, "AUTO_CLAMPED"], [-29.355340260203572, 100.00000000000011, "BEZIER", "AUTO", 583.3333333333334, -29.355340260203572, "AUTO_CLAMPED", 650.0, -29.355340260203572, "AUTO_CLAMPED"], [0.0, 99.99999999999989, "BEZIER", "AUTO", 683.3333333333334, 0.0, "AUTO_CLAMPED", 750.0, 0.0, "AUTO_CLAMPED"]]}}, "Gun": {"location": {"x": [[1.7611019611358643, 0.0, "LINEAR", "AUTO"], [1.7662079334259033, 150.0, "LINEAR", "AUTO"], [1.7611019611358643, 250.0, "LINEAR", "AUTO"], [1.613909363746643, 100.0, "LINEAR", "AUTO"], [1.7571532726287842, 116.66666666666674, "LINEAR", "AUTO"], [1.7611019611358643, 99.99999999999989, "LINEAR", "AUTO"]], "z": [[0.31467199325561523, 0.0, "LINEAR", "AUTO"], [0.30754023790359497, 150.0, "LINEAR", "AUTO"], [0.31467199325561523, 250.0, "LINEAR", "AUTO"], [0.4306454658508301, 100.0, "LINEAR", "AUTO"], [0.3806498050689697, 116.66666666666674, "LINEAR", "AUTO"], [0.31467199325561523, 99.99999999999989, "LINEAR", "AUTO"]], "y": [[0.8750439286231995, 0.0, "LINEAR", "AUTO"], [0.8376463055610657, 150.0, "LINEAR", "AUTO"], [0.8750439286231995, 250.0, "LINEAR", "AUTO"], [1.1308174133300781, 100.0, "LINEAR", "AUTO"], [1.108587384223938, 116.66666666666674, "LINEAR", "AUTO"], [0.8750439286231995, 99.99999999999989, "LINEAR", "AUTO"]]}, "rotation_euler": {"x": [[-18.983153297952903, 0.0, "LINEAR", "AUTO"], [-20.857867762844858, 250.0, "LINEAR", "AUTO"], [-18.983153297952903, 100.0, "LINEAR", "AUTO"], [-20.627756982159838, 116.66666666666669, "LINEAR", "AUTO"], [-20.258341078257818, 116.66666666666669, "LINEAR", "AUTO"], [-18.983153297952903, 133.33333333333326, "LINEAR", "AUTO"]], "z": [[86.04810969222216, 0.0, "LINEAR", "AUTO"], [87.57263523572567, 250.0, "LINEAR", "AUTO"], [86.04810969222216, 100.0, "LINEAR", "AUTO"], [89.15816119870658, 116.66666666666669, "LINEAR", "AUTO"], [86.00693048171614, 116.66666666666669, "LINEAR", "AUTO"], [86.04810969222216, 133.33333333333326, "LINEAR", "AUTO"]], "y": [[29.613753637261834, 0.0, "LINEAR", "AUTO"], [28.64577410544575, 250.0, "LINEAR", "AUTO"], [29.613753637261834, 100.0, "LINEAR", "AUTO"], [25.730953311102372, 116.66666666666669, "LINEAR", "AUTO"], [27.311677651096765, 116.66666666666669, "LINEAR", "AUTO"], [29.613753637261834, 133.33333333333326, "LINEAR", "AUTO"]]}}, "Shell": {"location": {"x": [[1.5205265935236412e-09, 0.0, "LINEAR", "AUTO"], [1.5205265935236412e-09, 216.66666666666669, "LINEAR", "AUTO"], [3.600797242597764e-07, 133.33333333333331, "LINEAR", "AUTO"], [1.9156854591528827e-07, 83.33333333333337, "LINEAR", "AUTO"], [2.418599649445241e-07, 83.33333333333326, "LINEAR", "AUTO"], [2.3999731979529315e-07, 100.00000000000011, "LINEAR", "AUTO"]], "z": [[-2.2731080055236816, 0.0, "LINEAR", "AUTO"], [-2.2731080055236816, 216.66666666666669, "LINEAR", "AUTO"], [0.2386959344148636, 133.33333333333331, "LINEAR", "AUTO"], [0.33605021238327026, 83.33333333333337, "LINEAR", "AUTO"], [0.4338737428188324, 83.33333333333326, "LINEAR", "AUTO"], [1.2500436305999756, 100.00000000000011, "LINEAR", "AUTO"]], "y": [[-1.4170563220977783, 0.0, "LINEAR", "AUTO"], [-1.4170563220977783, 216.66666666666669, "LINEAR", "AUTO"], [0.5333303213119507, 133.33333333333331, "LINEAR", "AUTO"], [0.8954256176948547, 83.33333333333337, "LINEAR", "AUTO"], [1.1207358837127686, 83.33333333333326, "LINEAR", "AUTO"], [1.2056175470352173, 100.00000000000011, "LINEAR", "AUTO"]]}, "rotation_euler": {"x": [[0.0, 0.0, "LINEAR", "AUTO"], [0.0, 216.66666666666669, "LINEAR", "AUTO"], [-23.121160227355304, 133.33333333333331, "LINEAR", "AUTO"], [-14.526026270149163, 83.33333333333337, "LINEAR", "AUTO"], [-5.042295800981765, 83.33333333333326, "LINEAR", "AUTO"], [0.0, 100.00000000000011, "LINEAR", "AUTO"]], "z": [[0.0, 0.0, "LINEAR", "AUTO"], [-0.0, 216.66666666666669, "LINEAR", "AUTO"], [-0.0, 133.33333333333331, "LINEAR", "AUTO"], [2.551953161995936e-07, 83.33333333333337, "LINEAR", "AUTO"], [7.134593799244011e-07, 83.33333333333326, "LINEAR", "AUTO"], [-0.0, 100.00000000000011, "LINEAR", "AUTO"]], "y": [[0.0, 0.0, "LINEAR", "AUTO"], [0.0, 216.66666666666669, "LINEAR", "AUTO"], [1.7075472925031877e-06, 133.33333333333331, "LINEAR", "AUTO"], [1.688370023551335e-06, 83.33333333333337, "LINEAR", "AUTO"], [1.6331417525071545e-06, 83.33333333333326, "LINEAR", "AUTO"], [0.0, 100.00000000000011, "LINEAR", "AUTO"]]}}}, "ReloadEmpty": {"Gun": {"location": {"x": [[0.0, 0.0, "LINEAR", "AUTO"], [1.2511006593704224, 183.33333333333331, "LINEAR", "AUTO"], [1.6423077583312988, 216.66666666666669, "LINEAR", "AUTO"], [1.6554410457611084, 150.0, "LINEAR", "AUTO"], [1.7105761766433716, 66.66666666666674, "LINEAR", "AUTO"], [1.7476284503936768, 116.66666666666652, "LINEAR", "AUTO"], [1.7611019611358643, 133.33333333333348, "LINEAR", "AUTO"]], "z": [[-0.0, 0.0, "LINEAR", "AUTO"], [0.26347818970680237, 183.33333333333331, "LINEAR", "AUTO"], [0.32502928376197815, 216.66666666666669, "LINEAR", "AUTO"], [0.30153536796569824, 150.0, "LINEAR", "AUTO"], [0.3000105023384094, 66.66666666666674, "LINEAR", "AUTO"], [0.3107622563838959, 116.66666666666652, "LINEAR", "AUTO"], [0.31467199325561523, 133.33333333333348, "LINEAR", "AUTO"]], "y": [[0.0, 0.0, "LINEAR", "AUTO"], [0.42658743262290955, 183.33333333333331, "LINEAR", "AUTO"], [-0.009814918041229248, 216.66666666666669, "LINEAR", "AUTO"], [-0.1131410151720047, 150.0, "LINEAR", "AUTO"], [-0.20051059126853943, 66.66666666666674, "LINEAR", "AUTO"], [0.5882294178009033, 116.66666666666652, "LINEAR", "AUTO"], [0.8750439286231995, 133.33333333333348, "LINEAR", "AUTO"]]}, "rotation_euler": {"x": [[0.0, 0.0, "LINEAR", "AUTO"], [-14.617513238986898, 116.66666666666667, "LINEAR", "AUTO"], [-37.38541266737456, 233.33333333333331, "LINEAR", "AUTO"], [-36.45018560017598, 166.66666666666663, "LINEAR", "AUTO"], [-30.74254485044399, 66.66666666666674, "LINEAR", "AUTO"], [-21.750068053366945, 149.9999999999999, "LINEAR", "AUTO"], [-18.983153297952903, 133.33333333333348, "LINEAR", "AUTO"]], "z": [[-0.0, 0.0, "LINEAR", "AUTO"], [32.06710636071164, 116.66666666666667, "LINEAR", "AUTO"], [40.97562647251089, 233.33333333333331, "LINEAR", "AUTO"], [38.71689657436601, 166.66666666666663, "LINEAR", "AUTO"], [32.11341504328433, 66.66666666666674, "LINEAR", "AUTO"], [73.35759772377095, 149.9999999999999, "LINEAR", "AUTO"], [86.04810969222216, 133.33333333333348, "LINEAR", "AUTO"]], "y": [[0.0, 0.0, "LINEAR", "AUTO"], [21.50487279989995, 116.66666666666667, "LINEAR", "AUTO"], [44.292741993873435, 233.33333333333331, "LINEAR", "AUTO"], [46.044774308440914, 166.66666666666663, "LINEAR", "AUTO"], [49.72028010083778, 66.66666666666674, "LINEAR", "AUTO"], [34.34470124134409, 149.9999999999999, "LINEAR", "AUTO"], [29.613753637261834, 133.33333333333348, "LINEAR", "AUTO"]]}}, "Pump": {"location": {"z": [[-0.0, 83.33333333333333, "LINEAR", "AUTO"], [-0.10627399384975433, 50.000000000000014, "LINEAR", "AUTO"], [-0.7439179420471191, 66.66666666666666, "LINEAR", "AUTO"], [-0.7439179420471191, 483.33333333333337, "LINEAR", "AUTO"], [-0.18597948551177979, 66.66666666666663, "LINEAR", "AUTO"], [-0.0, 66.66666666666663, "LINEAR", "AUTO"]]}}, "Shell": {"location": {"x": [[1.5205265935236412e-09, 0.0, "LINEAR", "AUTO"], [1.8807575702667236, 216.66666666666669, "LINEAR", "AUTO"], [0.1613924205303192, 216.66666666666669, "LINEAR", "AUTO"], [0.010319530963897705, 100.0, "LINEAR", "AUTO"], [2.558298035637563e-07, 83.33333333333337, "LINEAR", "AUTO"]], "z": [[-2.2731080055236816, 0.0, "LINEAR", "AUTO"], [-1.77922523021698, 216.66666666666669, "LINEAR", "AUTO"], [0.5386117100715637, 216.66666666666669, "LINEAR", "AUTO"], [0.9011819362640381, 100.0, "LINEAR", "AUTO"], [1.2500436305999756, 83.33333333333337, "LINEAR", "AUTO"]], "y": [[-1.4170563220977783, 0.0, "LINEAR", "AUTO"], [-0.7542737126350403, 216.66666666666669, "LINEAR", "AUTO"], [1.8265879154205322, 216.66666666666669, "LINEAR", "AUTO"], [1.7011022567749023, 100.0, "LINEAR", "AUTO"], [1.7520724534988403, 83.33333333333337, "LINEAR", "AUTO"]]}, "rotation_euler": {"x": [[0.0, 0.0, "LINEAR", "AUTO"], [0.0, 166.66666666666666, "LINEAR", "AUTO"], [17.895010248068782, 216.66666666666666, "LINEAR", "AUTO"], [3.92045772037468, 116.66666666666669, "LINEAR", "AUTO"], [0.0, 116.66666666666674, "LINEAR", "AUTO"]], "z": [[0.0, 0.0, "LINEAR", "AUTO"], [-0.0, 166.66666666666666, "LINEAR", "AUTO"], [-7.282242678909106, 216.66666666666666, "LINEAR", "AUTO"], [-2.104055355191472, 116.66666666666669, "LINEAR", "AUTO"], [-0.0, 116.66666666666674, "LINEAR", "AUTO"]], "y": [[0.0, 0.0, "LINEAR", "AUTO"], [0.0, 166.66666666666666, "LINEAR", "AUTO"], [-21.433229238148392, 216.66666666666666, "LINEAR", "AUTO"], [-7.3901921111938655, 116.66666666666669, "LINEAR", "AUTO"], [0.0, 116.66666666666674, "LINEAR", "AUTO"]]}}}, "ReloadEnd": {"Gun": {"location": {"x": [[1.7611019611358643, 0.0, "LINEAR", "AUTO"], [-0.31797051429748535, 216.66666666666669, "LINEAR", "AUTO"], [0.0, 83.33333333333331, "LINEAR", "AUTO"]], "z": [[0.31467199325561523, 0.0, "LINEAR", "AUTO"], [0.010336088016629219, 216.66666666666669, "LINEAR", "AUTO"], [-0.0, 83.33333333333331, "LINEAR", "AUTO"]], "y": [[0.8750439286231995, 0.0, "LINEAR", "AUTO"], [0.0250311940908432, 216.66666666666669, "LINEAR", "AUTO"], [0.0, 83.33333333333331, "LINEAR", "AUTO"]]}, "rotation_euler": {"x": [[-18.983153297952903, 0.0, "LINEAR", "AUTO"], [0.09662330444411844, 216.66666666666669, "LINEAR", "AUTO"], [0.0, 83.33333333333331, "LINEAR", "AUTO"]], "z": [[86.04810969222216, 0.0, "LINEAR", "AUTO"], [-9.502314560125358, 216.66666666666669, "LINEAR", "AUTO"], [-0.0, 83.33333333333331, "LINEAR", "AUTO"]], "y": [[29.613753637261834, 0.0, "LINEAR", "AUTO"], [-0.24104249845162748, 216.66666666666669, "LINEAR", "AUTO"], [0.0, 83.33333333333331, "LINEAR", "AUTO"]]}}}, "ReloadStart": {"GuardInner": {"location": {"x": [[3.725290298461914e-09, 0.0, "LINEAR", "AUTO"]], "z": [[0.8854429721832275, 0.0, "LINEAR", "AUTO"]], "y": [[0.8707519173622131, 0.0, "LINEAR", "AUTO"]]}, "rotation_euler": {"x": [[0.0, 350.0, "LINEAR", "AUTO"], [16.02038116054145, 83.33333333333337, "LINEAR", "AUTO"], [23.71116221314476, 83.33333333333326, "LINEAR", "AUTO"], [23.71116221314476, 66.66666666666674, "LINEAR", "AUTO"], [0.0, 83.33333333333326, "LINEAR", "AUTO"]]}}, "GuardOuter": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.0, "AUTO_CLAMPED"]], "z": [[-0.07262593507766724, 0.0, "BEZIER", "AUTO", 16.666666666666668, -0.07262593507766724, "AUTO_CLAMPED"]], "y": [[0.8707519173622131, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.8707519173622131, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 350.0, "BEZIER", "AUTO", 377.7777671813965, 0.0, "AUTO_CLAMPED"], [-17.139458137176558, 83.33333333333337, "BEZIER", "AUTO", 405.55556615193683, -9.800624779672956, "AUTO_CLAMPED", 461.1111005147298, -24.478291494680157, "AUTO_CLAMPED"], [-29.355340260203572, 83.33333333333326, "BEZIER", "AUTO", 488.8888994852702, -29.355340260203572, "AUTO_CLAMPED", 550.0, -29.355340260203572, "AUTO_CLAMPED"], [-29.355340260203572, 100.00000000000011, "BEZIER", "AUTO", 583.3333333333334, -29.355340260203572, "AUTO_CLAMPED", 650.0, -29.355340260203572, "AUTO_CLAMPED"], [0.0, 99.99999999999989, "BEZIER", "AUTO", 683.3333333333334, 0.0, "AUTO_CLAMPED", 750.0, 0.0, "AUTO_CLAMPED"]]}}, "Gun": {"location": {"x": [[0.0, 0.0, "LINEAR", "AUTO"], [1.2318342924118042, 183.33333333333331, "LINEAR", "AUTO"], [1.642445683479309, 83.33333333333337, "LINEAR", "AUTO"], [1.7611019611358643, 133.33333333333331, "LINEAR", "AUTO"], [1.613909363746643, 100.0, "LINEAR", "AUTO"], [1.7571532726287842, 116.66666666666674, "LINEAR", "AUTO"], [1.7611019611358643, 66.66666666666663, "LINEAR", "AUTO"]], "z": [[-0.0, 0.0, "LINEAR", "AUTO"], [0.2732446491718292, 183.33333333333331, "LINEAR", "AUTO"], [0.36432620882987976, 83.33333333333337, "LINEAR", "AUTO"], [0.31467199325561523, 133.33333333333331, "LINEAR", "AUTO"], [0.4306454658508301, 100.0, "LINEAR", "AUTO"], [0.3806498050689697, 116.66666666666674, "LINEAR", "AUTO"], [0.31467199325561523, 66.66666666666663, "LINEAR", "AUTO"]], "y": [[0.0, 0.0, "LINEAR", "AUTO"], [0.7328978776931763, 183.33333333333331, "LINEAR", "AUTO"], [0.9771971702575684, 83.33333333333337, "LINEAR", "AUTO"], [0.8750439286231995, 133.33333333333331, "LINEAR", "AUTO"], [1.1308174133300781, 100.0, "LINEAR", "AUTO"], [1.108587384223938, 116.66666666666674, "LINEAR", "AUTO"], [0.8750439286231995, 66.66666666666663, "LINEAR", "AUTO"]]}, "rotation_euler": {"x": [[0.0, 0.0, "LINEAR", "AUTO"], [-14.617513238986898, 150.0, "LINEAR", "AUTO"], [-19.490018221164963, 83.33333333333334, "LINEAR", "AUTO"], [-18.983153297952903, 116.66666666666666, "LINEAR", "AUTO"], [-20.627756982159838, 133.33333333333331, "LINEAR", "AUTO"], [-20.258341078257818, 100.00000000000006, "LINEAR", "AUTO"], [-18.983153297952903, 100.0, "LINEAR", "AUTO"]], "z": [[-0.0, 0.0, "LINEAR", "AUTO"], [65.44332775888294, 150.0, "LINEAR", "AUTO"], [87.25777034517726, 83.33333333333334, "LINEAR", "AUTO"], [86.04810969222216, 116.66666666666666, "LINEAR", "AUTO"], [89.15816119870658, 133.33333333333331, "LINEAR", "AUTO"], [86.00693048171614, 100.00000000000006, "LINEAR", "AUTO"], [86.04810969222216, 100.0, "LINEAR", "AUTO"]], "y": [[0.0, 0.0, "LINEAR", "AUTO"], [21.504871092352655, 150.0, "LINEAR", "AUTO"], [28.673161456470208, 83.33333333333334, "LINEAR", "AUTO"], [29.613753637261834, 116.66666666666666, "LINEAR", "AUTO"], [25.730953311102372, 133.33333333333331, "LINEAR", "AUTO"], [27.311677651096765, 100.00000000000006, "LINEAR", "AUTO"], [29.613753637261834, 100.0, "LINEAR", "AUTO"]]}}, "Shell": {"location": {"x": [[1.5205265935236412e-09, 0.0, "LINEAR", "AUTO"], [1.5205265935236412e-09, 216.66666666666669, "LINEAR", "AUTO"], [3.600797242597764e-07, 133.33333333333331, "LINEAR", "AUTO"], [1.9156854591528827e-07, 83.33333333333337, "LINEAR", "AUTO"], [2.418599649445241e-07, 83.33333333333326, "LINEAR", "AUTO"], [2.3999731979529315e-07, 100.00000000000011, "LINEAR", "AUTO"]], "z": [[-2.2731080055236816, 0.0, "LINEAR", "AUTO"], [-2.2731080055236816, 216.66666666666669, "LINEAR", "AUTO"], [0.2386959344148636, 133.33333333333331, "LINEAR", "AUTO"], [0.33605021238327026, 83.33333333333337, "LINEAR", "AUTO"], [0.4338737428188324, 83.33333333333326, "LINEAR", "AUTO"], [1.2500436305999756, 100.00000000000011, "LINEAR", "AUTO"]], "y": [[-1.4170563220977783, 0.0, "LINEAR", "AUTO"], [-1.4170563220977783, 216.66666666666669, "LINEAR", "AUTO"], [0.5333303213119507, 133.33333333333331, "LINEAR", "AUTO"], [0.8954256176948547, 83.33333333333337, "LINEAR", "AUTO"], [1.1207358837127686, 83.33333333333326, "LINEAR", "AUTO"], [1.2056175470352173, 100.00000000000011, "LINEAR", "AUTO"]]}, "rotation_euler": {"x": [[0.0, 0.0, "LINEAR", "AUTO"], [0.0, 216.66666666666669, "LINEAR", "AUTO"], [-23.121160227355304, 133.33333333333331, "LINEAR", "AUTO"], [-14.526026270149163, 83.33333333333337, "LINEAR", "AUTO"], [-5.042295800981765, 83.33333333333326, "LINEAR", "AUTO"], [0.0, 100.00000000000011, "LINEAR", "AUTO"]], "z": [[0.0, 0.0, "LINEAR", "AUTO"], [-0.0, 216.66666666666669, "LINEAR", "AUTO"], [-0.0, 133.33333333333331, "LINEAR", "AUTO"], [2.551953161995936e-07, 83.33333333333337, "LINEAR", "AUTO"], [7.134593799244011e-07, 83.33333333333326, "LINEAR", "AUTO"], [-0.0, 100.00000000000011, "LINEAR", "AUTO"]], "y": [[0.0, 0.0, "LINEAR", "AUTO"], [0.0, 216.66666666666669, "LINEAR", "AUTO"], [1.7075472925031877e-06, 133.33333333333331, "LINEAR", "AUTO"], [1.688370023551335e-06, 83.33333333333337, "LINEAR", "AUTO"], [1.6331417525071545e-06, 83.33333333333326, "LINEAR", "AUTO"], [0.0, 100.00000000000011, "LINEAR", "AUTO"]]}}}}, "offset": {"GuardInner": [3.725290298461914e-09, 0.8707519173622131, 0.8854429721832275], "GuardOuter": [0.0, 0.8707519173622131, -0.07262593507766724], "Loop": [0.2532634139060974, 1.4936577081680298, 3.4837722778320312], "Pump": [1.6174453776329756e-08, 1.1175870895385742e-08, -0.0], "Shell": [1.5205265935236412e-09, 1.7459099292755127, 1.2549771070480347], "ShellFore": [1.5205265935236412e-09, 1.7459099292755127, 1.2549771070480347], "Sight": [0.0, 2.104297161102295, 2.990000009536743]}, "hierarchy": {"GuardInner": "GuardOuter", "GuardOuter": "Gun", "Loop": "Gun", "Pump": "Gun", "Shell": "Gun", "ShellFore": "Shell", "Sight": "Gun"}} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/weapons/animations/flamethrower.json b/src/main/resources/assets/hbm/models/weapons/animations/flamethrower.json new file mode 100644 index 000000000..334a5ca74 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/animations/flamethrower.json @@ -0,0 +1 @@ +{"anim": {"Reload": {"Gauge": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 292.80862808227545, 0.0, "AUTO_CLAMPED"], [0.0, 750.0, "BEZIER", "AUTO", 457.1913719177246, 0.0, "AUTO_CLAMPED", 1238.0144119262698, 0.0, "AUTO_CLAMPED"], [0.0, 1250.0, "BEZIER", "AUTO", 1511.9855880737305, 0.0, "AUTO_CLAMPED", 2195.2056884765625, 0.0, "AUTO_CLAMPED"], [0.0, 500.0, "BEZIER", "AUTO", 2304.7943115234375, 0.0, "AUTO_CLAMPED", 2988.0144119262695, 0.0, "AUTO_CLAMPED"], [0.0, 1250.0, "LINEAR", "AUTO", 3261.9857788085938, 0.0, "AUTO_CLAMPED"], [0.0, 750.0, "BEZIER", "AUTO", 4792.808532714844, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 292.80862808227545, -0.0, "AUTO_CLAMPED"], [-1.0132989883422852, 750.0, "BEZIER", "AUTO", 457.1913719177246, -1.0132989883422852, "AUTO_CLAMPED", 1238.0144119262698, -1.0132989883422852, "AUTO_CLAMPED"], [-1.0132989883422852, 1250.0, "BEZIER", "AUTO", 1511.9855880737305, -1.0132989883422852, "AUTO_CLAMPED", 2195.2056884765625, -1.0132989883422852, "AUTO_CLAMPED"], [-1.0132989883422852, 500.0, "BEZIER", "AUTO", 2304.7943115234375, -1.0132989883422852, "AUTO_CLAMPED", 2988.0144119262695, -1.0132989883422852, "AUTO_CLAMPED"], [-1.0132989883422852, 1250.0, "LINEAR", "AUTO", 3261.9857788085938, -1.0132989883422852, "AUTO_CLAMPED"], [-0.0, 750.0, "BEZIER", "AUTO", 4792.808532714844, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 292.80862808227545, 0.0, "AUTO_CLAMPED"], [0.0, 750.0, "BEZIER", "AUTO", 457.1913719177246, 0.0, "AUTO_CLAMPED", 1238.0144119262698, 0.0, "AUTO_CLAMPED"], [0.0, 1250.0, "BEZIER", "AUTO", 1511.9855880737305, 0.0, "AUTO_CLAMPED", 2195.2056884765625, 0.0, "AUTO_CLAMPED"], [2.400388240814209, 500.0, "BEZIER", "AUTO", 2304.7943115234375, 2.400388240814209, "AUTO_CLAMPED", 2988.0144119262695, 2.400388240814209, "AUTO_CLAMPED"], [2.400388240814209, 1250.0, "LINEAR", "AUTO", 3261.9857788085938, 2.400388240814209, "AUTO_CLAMPED"], [0.0, 750.0, "BEZIER", "AUTO", 4792.808532714844, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 292.80862808227545, 0.0, "AUTO_CLAMPED"], [31.53669436033596, 750.0, "BEZIER", "AUTO", 457.1913719177246, 31.53669436033596, "AUTO_CLAMPED", 1238.0144119262698, 31.53669436033596, "AUTO_CLAMPED"], [31.53669436033596, 1250.0, "BEZIER", "AUTO", 1511.9855880737305, 31.53669436033596, "AUTO_CLAMPED", 2195.2056884765625, 31.53669436033596, "AUTO_CLAMPED"], [-23.37867031189583, 500.0, "BEZIER", "AUTO", 2304.7943115234375, -23.37867031189583, "AUTO_CLAMPED", 2988.0144119262695, -23.37867031189583, "AUTO_CLAMPED"], [-23.37867031189583, 1250.0, "LINEAR", "AUTO", 3261.9857788085938, -23.37867031189583, "AUTO_CLAMPED"], [0.0, 750.0, "BEZIER", "AUTO", 4792.808532714844, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 292.80862808227545, -0.0, "AUTO_CLAMPED"], [0.0, 750.0, "BEZIER", "AUTO", 457.1913719177246, 0.0, "AUTO_CLAMPED", 1238.0144119262698, 0.0, "AUTO_CLAMPED"], [0.0, 1250.0, "BEZIER", "AUTO", 1511.9855880737305, 0.0, "AUTO_CLAMPED", 2195.2056884765625, 0.0, "AUTO_CLAMPED"], [0.0, 500.0, "BEZIER", "AUTO", 2304.7943115234375, 0.0, "AUTO_CLAMPED", 2988.0144119262695, 0.0, "AUTO_CLAMPED"], [-0.0, 1250.0, "LINEAR", "AUTO", 3261.9857788085938, -0.0, "AUTO_CLAMPED"], [-0.0, 750.0, "BEZIER", "AUTO", 4792.808532714844, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 292.80862808227545, 0.0, "AUTO_CLAMPED"], [0.0, 750.0, "BEZIER", "AUTO", 457.1913719177246, 0.0, "AUTO_CLAMPED", 1238.0144119262698, 0.0, "AUTO_CLAMPED"], [0.0, 1250.0, "BEZIER", "AUTO", 1511.9855880737305, 0.0, "AUTO_CLAMPED", 2195.2056884765625, 0.0, "AUTO_CLAMPED"], [0.0, 500.0, "BEZIER", "AUTO", 2304.7943115234375, 0.0, "AUTO_CLAMPED", 2988.0144119262695, 0.0, "AUTO_CLAMPED"], [0.0, 1250.0, "LINEAR", "AUTO", 3261.9857788085938, 0.0, "AUTO_CLAMPED"], [0.0, 750.0, "BEZIER", "AUTO", 4792.808532714844, 0.0, "AUTO_CLAMPED"]]}}, "Gun": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 292.80862808227545, 0.0, "AUTO_CLAMPED"], [0.0, 750.0, "BEZIER", "AUTO", 457.1913719177246, 0.0, "AUTO_CLAMPED", 1238.0144119262698, 0.0, "AUTO_CLAMPED"], [0.0, 1250.0, "BEZIER", "AUTO", 1511.9855880737305, 0.0, "AUTO_CLAMPED", 2195.2056884765625, 0.0, "AUTO_CLAMPED"], [0.0, 500.0, "BEZIER", "AUTO", 2304.7943115234375, 0.0, "AUTO_CLAMPED", 2988.0144119262695, 0.0, "AUTO_CLAMPED"], [0.0, 1250.0, "LINEAR", "AUTO", 3261.9857788085938, 0.0, "AUTO_CLAMPED"], [0.0, 750.0, "BEZIER", "AUTO", 4792.808532714844, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 292.80862808227545, -0.0, "AUTO_CLAMPED"], [-1.0132989883422852, 750.0, "BEZIER", "AUTO", 457.1913719177246, -1.0132989883422852, "AUTO_CLAMPED", 1238.0144119262698, -1.0132989883422852, "AUTO_CLAMPED"], [-1.0132989883422852, 1250.0, "BEZIER", "AUTO", 1511.9855880737305, -1.0132989883422852, "AUTO_CLAMPED", 2195.2056884765625, -1.0132989883422852, "AUTO_CLAMPED"], [-1.0132989883422852, 500.0, "BEZIER", "AUTO", 2304.7943115234375, -1.0132989883422852, "AUTO_CLAMPED", 2988.0144119262695, -1.0132989883422852, "AUTO_CLAMPED"], [-1.0132989883422852, 1250.0, "LINEAR", "AUTO", 3261.9857788085938, -1.0132989883422852, "AUTO_CLAMPED"], [-0.0, 750.0, "BEZIER", "AUTO", 4792.808532714844, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 292.80862808227545, 0.0, "AUTO_CLAMPED"], [0.0, 750.0, "BEZIER", "AUTO", 457.1913719177246, 0.0, "AUTO_CLAMPED", 1238.0144119262698, 0.0, "AUTO_CLAMPED"], [0.0, 1250.0, "BEZIER", "AUTO", 1511.9855880737305, 0.0, "AUTO_CLAMPED", 2195.2056884765625, 0.0, "AUTO_CLAMPED"], [2.400388240814209, 500.0, "BEZIER", "AUTO", 2304.7943115234375, 2.400388240814209, "AUTO_CLAMPED", 2988.0144119262695, 2.400388240814209, "AUTO_CLAMPED"], [2.400388240814209, 1250.0, "LINEAR", "AUTO", 3261.9857788085938, 2.400388240814209, "AUTO_CLAMPED"], [0.0, 750.0, "BEZIER", "AUTO", 4792.808532714844, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 292.80862808227545, 0.0, "AUTO_CLAMPED"], [31.53669436033596, 750.0, "BEZIER", "AUTO", 457.1913719177246, 31.53669436033596, "AUTO_CLAMPED", 1238.0144119262698, 31.53669436033596, "AUTO_CLAMPED"], [31.53669436033596, 1250.0, "BEZIER", "AUTO", 1511.9855880737305, 31.53669436033596, "AUTO_CLAMPED", 2195.2056884765625, 31.53669436033596, "AUTO_CLAMPED"], [-23.37867031189583, 500.0, "BEZIER", "AUTO", 2304.7943115234375, -23.37867031189583, "AUTO_CLAMPED", 2988.0144119262695, -23.37867031189583, "AUTO_CLAMPED"], [-23.37867031189583, 1250.0, "LINEAR", "AUTO", 3261.9857788085938, -23.37867031189583, "AUTO_CLAMPED"], [0.0, 750.0, "BEZIER", "AUTO", 4792.808532714844, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 292.80862808227545, -0.0, "AUTO_CLAMPED"], [0.0, 750.0, "BEZIER", "AUTO", 457.1913719177246, 0.0, "AUTO_CLAMPED", 1238.0144119262698, 0.0, "AUTO_CLAMPED"], [0.0, 1250.0, "BEZIER", "AUTO", 1511.9855880737305, 0.0, "AUTO_CLAMPED", 2195.2056884765625, 0.0, "AUTO_CLAMPED"], [0.0, 500.0, "BEZIER", "AUTO", 2304.7943115234375, 0.0, "AUTO_CLAMPED", 2988.0144119262695, 0.0, "AUTO_CLAMPED"], [0.0, 1250.0, "LINEAR", "AUTO", 3261.9857788085938, 0.0, "AUTO_CLAMPED"], [0.0, 750.0, "BEZIER", "AUTO", 4792.808532714844, 0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 292.80862808227545, 0.0, "AUTO_CLAMPED"], [0.0, 750.0, "BEZIER", "AUTO", 457.1913719177246, 0.0, "AUTO_CLAMPED", 1238.0144119262698, 0.0, "AUTO_CLAMPED"], [0.0, 1250.0, "BEZIER", "AUTO", 1511.9855880737305, 0.0, "AUTO_CLAMPED", 2195.2056884765625, 0.0, "AUTO_CLAMPED"], [0.0, 500.0, "BEZIER", "AUTO", 2304.7943115234375, 0.0, "AUTO_CLAMPED", 2988.0144119262695, 0.0, "AUTO_CLAMPED"], [0.0, 1250.0, "LINEAR", "AUTO", 3261.9857788085938, 0.0, "AUTO_CLAMPED"], [0.0, 750.0, "BEZIER", "AUTO", 4792.808532714844, 0.0, "AUTO_CLAMPED"]]}}, "Tank": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 292.80862808227545, 0.0, "AUTO_CLAMPED"], [0.0, 750.0, "LINEAR", "AUTO", 457.1913719177246, 0.0, "AUTO_CLAMPED"], [-0.044564783573150635, 400.0000000000002, "LINEAR", "AUTO"], [-0.044564783573150635, 349.9999999999998, "BEZIER", "AUTO", 1695.2056884765625, -0.044564783573150635, "AUTO_CLAMPED"], [-0.044564783573150635, 500.0, "BEZIER", "AUTO", 1804.7943115234375, -0.044564783573150635, "AUTO_CLAMPED", 2195.2056884765625, -0.044564783573150635, "AUTO_CLAMPED"], [-0.044564783573150635, 500.0, "BEZIER", "AUTO", 2304.7943115234375, -0.044564783573150635, "AUTO_CLAMPED", 2695.2056884765625, -0.044564783573150635, "AUTO_CLAMPED"], [-0.044564783573150635, 500.0, "BEZIER", "AUTO", 2804.7943115234375, -0.044564783573150635, "AUTO_CLAMPED", 3097.6028442382812, -0.044564783573150635, "AUTO_CLAMPED"], [-0.044564783573150635, 250.0, "BEZIER", "AUTO", 3152.3971557617188, -0.044564783573150635, "AUTO_CLAMPED", 3347.6028442382812, -0.044564783573150635, "AUTO_CLAMPED"], [-0.044564783573150635, 250.0, "LINEAR", "AUTO", 3402.3971557617188, -0.044564783573150635, "AUTO_CLAMPED"], [0.0, 250.0, "LINEAR", "AUTO"], [0.0, 750.0, "BEZIER", "AUTO", 4792.808532714844, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 292.80862808227545, -0.0, "AUTO_CLAMPED"], [-1.0132989883422852, 750.0, "LINEAR", "AUTO", 457.1913719177246, -1.0132989883422852, "AUTO_CLAMPED"], [2.5499136447906494, 400.0000000000002, "LINEAR", "AUTO"], [1.4521247148513794, 349.9999999999998, "BEZIER", "AUTO", 1695.2056884765625, 1.4521247148513794, "AUTO_CLAMPED"], [3.9383955001831055, 500.0, "BEZIER", "AUTO", 1804.7943115234375, 3.9383955001831055, "AUTO_CLAMPED", 2195.2056884765625, 3.9383955001831055, "AUTO_CLAMPED"], [3.9383955001831055, 500.0, "BEZIER", "AUTO", 2304.7943115234375, 3.9383955001831055, "AUTO_CLAMPED", 2695.2056884765625, 3.9383955001831055, "AUTO_CLAMPED"], [4.342286586761475, 500.0, "BEZIER", "AUTO", 2804.7943115234375, 3.9470109939575195, "AUTO_CLAMPED", 3097.6028442382812, 4.539924621582031, "AUTO_CLAMPED"], [5.1528000831604, 250.0, "BEZIER", "AUTO", 3152.3971557617188, 5.1528000831604, "AUTO_CLAMPED", 3347.6028442382812, 5.1528000831604, "AUTO_CLAMPED"], [2.7643589973449707, 250.0, "LINEAR", "AUTO", 3402.3971557617188, 3.9673728942871094, "AUTO_CLAMPED"], [-1.0099999904632568, 250.0, "LINEAR", "AUTO"], [-0.0, 750.0, "BEZIER", "AUTO", 4792.808532714844, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 292.80862808227545, 0.0, "AUTO_CLAMPED"], [0.0, 750.0, "LINEAR", "AUTO", 457.1913719177246, 0.0, "AUTO_CLAMPED"], [-2.2834606170654297, 400.0000000000002, "LINEAR", "AUTO"], [-5.361827373504639, 349.9999999999998, "BEZIER", "AUTO", 1695.2056884765625, -7.615589141845703, "AUTO_CLAMPED"], [-12.509732246398926, 500.0, "BEZIER", "AUTO", 1804.7943115234375, -12.509732246398926, "AUTO_CLAMPED", 2195.2056884765625, -12.509732246398926, "AUTO_CLAMPED"], [-12.509732246398926, 500.0, "BEZIER", "AUTO", 2304.7943115234375, -12.509732246398926, "AUTO_CLAMPED", 2695.2056884765625, -12.509732246398926, "AUTO_CLAMPED"], [-4.52110481262207, 500.0, "BEZIER", "AUTO", 2804.7943115234375, -7.63911247253418, "AUTO_CLAMPED", 3097.6028442382812, -2.9621009826660156, "AUTO_CLAMPED"], [-0.5289543867111206, 250.0, "BEZIER", "AUTO", 3152.3971557617188, -2.206026554107666, "AUTO_CLAMPED", 3347.6028442382812, 1.1481177806854248, "AUTO_CLAMPED"], [4.070199966430664, 250.0, "LINEAR", "AUTO", 3402.3971557617188, 4.070199966430664, "AUTO_CLAMPED"], [2.4000000953674316, 250.0, "LINEAR", "AUTO"], [0.0, 750.0, "BEZIER", "AUTO", 4792.808532714844, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 292.80862808227545, 0.0, "AUTO_CLAMPED"], [31.53669436033596, 750.0, "LINEAR", "AUTO", 457.1913719177246, 31.53669436033596, "AUTO_CLAMPED"], [31.53669436033596, 400.0000000000002, "LINEAR", "AUTO"], [60.02500016201436, 349.9999999999998, "BEZIER", "AUTO", 1695.2056884765625, 60.02500016201436, "AUTO_CLAMPED"], [60.02500016201436, 500.0, "BEZIER", "AUTO", 1804.7943115234375, 60.02500016201436, "AUTO_CLAMPED", 2195.2056884765625, 60.02500016201436, "AUTO_CLAMPED"], [60.02500016201436, 500.0, "BEZIER", "AUTO", 2304.7943115234375, 60.02500016201436, "AUTO_CLAMPED", 2695.2056884765625, 60.02500016201436, "AUTO_CLAMPED"], [60.02500016201436, 500.0, "BEZIER", "AUTO", 2804.7943115234375, 60.02500016201436, "AUTO_CLAMPED", 3097.6028442382812, 60.02500016201436, "AUTO_CLAMPED"], [23.514188095218056, 250.0, "BEZIER", "AUTO", 3152.3971557617188, 39.881238922178085, "AUTO_CLAMPED", 3347.6028442382812, 7.147137268258023, "AUTO_CLAMPED"], [-23.820132758710436, 250.0, "LINEAR", "AUTO", 3402.3971557617188, -23.820132758710436, "AUTO_CLAMPED"], [-23.820132758710436, 250.0, "LINEAR", "AUTO"], [0.0, 750.0, "BEZIER", "AUTO", 4792.808532714844, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 292.80862808227545, -0.0, "AUTO_CLAMPED"], [0.0, 750.0, "LINEAR", "AUTO", 457.1913719177246, 0.0, "AUTO_CLAMPED"], [0.0, 400.0000000000002, "LINEAR", "AUTO"], [0.0, 349.9999999999998, "BEZIER", "AUTO", 1695.2056884765625, 0.0, "AUTO_CLAMPED"], [0.0, 500.0, "BEZIER", "AUTO", 1804.7943115234375, 0.0, "AUTO_CLAMPED", 2195.2056884765625, 0.0, "AUTO_CLAMPED"], [0.0, 500.0, "BEZIER", "AUTO", 2304.7943115234375, 0.0, "AUTO_CLAMPED", 2695.2056884765625, 0.0, "AUTO_CLAMPED"], [0.0, 500.0, "BEZIER", "AUTO", 2804.7943115234375, 0.0, "AUTO_CLAMPED", 3097.6028442382812, 0.0, "AUTO_CLAMPED"], [0.0, 250.0, "BEZIER", "AUTO", 3152.3971557617188, 0.0, "AUTO_CLAMPED", 3347.6028442382812, 0.0, "AUTO_CLAMPED"], [0.0, 250.0, "LINEAR", "AUTO", 3402.3971557617188, 0.0, "AUTO_CLAMPED"], [0.0, 250.0, "LINEAR", "AUTO"], [0.0, 750.0, "BEZIER", "AUTO", 4792.808532714844, 0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 292.80862808227545, 0.0, "AUTO_CLAMPED"], [0.0, 750.0, "LINEAR", "AUTO", 457.1913719177246, 0.0, "AUTO_CLAMPED"], [0.0, 400.0000000000002, "LINEAR", "AUTO"], [0.0, 349.9999999999998, "BEZIER", "AUTO", 1695.2056884765625, 0.0, "AUTO_CLAMPED"], [0.0, 500.0, "BEZIER", "AUTO", 1804.7943115234375, 0.0, "AUTO_CLAMPED", 2195.2056884765625, 0.0, "AUTO_CLAMPED"], [0.0, 500.0, "BEZIER", "AUTO", 2304.7943115234375, 0.0, "AUTO_CLAMPED", 2695.2056884765625, 0.0, "AUTO_CLAMPED"], [0.0, 500.0, "BEZIER", "AUTO", 2804.7943115234375, 0.0, "AUTO_CLAMPED", 3097.6028442382812, 0.0, "AUTO_CLAMPED"], [0.0, 250.0, "BEZIER", "AUTO", 3152.3971557617188, 0.0, "AUTO_CLAMPED", 3347.6028442382812, 0.0, "AUTO_CLAMPED"], [0.0, 250.0, "LINEAR", "AUTO", 3402.3971557617188, 0.0, "AUTO_CLAMPED"], [0.0, 250.0, "LINEAR", "AUTO"], [0.0, 750.0, "BEZIER", "AUTO", 4792.808532714844, 0.0, "AUTO_CLAMPED"]]}}}}, "offset": {}, "hierarchy": {}} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/weapons/animations/lag.json b/src/main/resources/assets/hbm/models/weapons/animations/lag.json new file mode 100644 index 000000000..dbb5b84c6 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/animations/lag.json @@ -0,0 +1 @@ +{"anim": {"Dryfire": {"Grip": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 194.44444974263507, 0.0, "AUTO_CLAMPED"], [0.0, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, 0.0, "AUTO_CLAMPED", 644.444465637207, 0.0, "AUTO_CLAMPED"], [0.07023310661315918, 183.33333333333326, "BEZIER", "AUTO", 705.555534362793, 0.07023310661315918, "AUTO_CLAMPED", 777.7777989705403, 0.07023310661315918, "AUTO_CLAMPED"], [0.07023310661315918, 33.33333333333337, "BEZIER", "AUTO", 788.8888676961263, 0.07023310661315918, "AUTO_CLAMPED", 850.0, 0.07023310661315918, "AUTO_CLAMPED"], [-0.005564689636230469, 150.0, "BEZIER", "AUTO", 900.0, -0.005564689636230469, "AUTO_CLAMPED", 977.7777989705404, -0.005564689636230469, "AUTO_CLAMPED"], [0.0, 83.33333333333326, "BEZIER", "AUTO", 1005.5555343627929, 0.0, "AUTO_CLAMPED", 1061.1111323038738, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 194.44444974263507, -0.0, "AUTO_CLAMPED"], [-0.0, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, -0.0, "AUTO_CLAMPED", 644.444465637207, -0.0, "AUTO_CLAMPED"], [-0.0, 183.33333333333326, "BEZIER", "AUTO", 705.555534362793, -0.0, "AUTO_CLAMPED", 777.7777989705403, -0.0, "AUTO_CLAMPED"], [-0.0, 33.33333333333337, "BEZIER", "AUTO", 788.8888676961263, -0.0, "AUTO_CLAMPED", 850.0, -0.0, "AUTO_CLAMPED"], [-0.0, 150.0, "BEZIER", "AUTO", 900.0, -0.0, "AUTO_CLAMPED", 977.7777989705404, -0.0, "AUTO_CLAMPED"], [-0.0, 83.33333333333326, "BEZIER", "AUTO", 1005.5555343627929, -0.0, "AUTO_CLAMPED", 1061.1111323038738, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 194.44444974263507, 0.0, "AUTO_CLAMPED"], [0.0, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, 0.0, "AUTO_CLAMPED", 644.444465637207, 0.0, "AUTO_CLAMPED"], [0.17485475540161133, 183.33333333333326, "BEZIER", "AUTO", 705.555534362793, 0.17485475540161133, "AUTO_CLAMPED", 777.7777989705403, 0.17485475540161133, "AUTO_CLAMPED"], [0.17485475540161133, 33.33333333333337, "BEZIER", "AUTO", 788.8888676961263, 0.17485475540161133, "AUTO_CLAMPED", 850.0, 0.17485475540161133, "AUTO_CLAMPED"], [-0.016497015953063965, 150.0, "BEZIER", "AUTO", 900.0, -0.016497015953063965, "AUTO_CLAMPED", 977.7777989705404, -0.016497015953063965, "AUTO_CLAMPED"], [0.0, 83.33333333333326, "BEZIER", "AUTO", 1005.5555343627929, 0.0, "AUTO_CLAMPED", 1061.1111323038738, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 172.22221692403158, 0.0, "AUTO_CLAMPED"], [0.0, 516.6666666666666, "BEZIER", "AUTO", 344.44446563720703, 0.0, "AUTO_CLAMPED", 583.3333333333334, 0.0, "AUTO_CLAMPED"], [-2.1999998762362876, 200.0, "BEZIER", "AUTO", 650.0, -2.1999998762362876, "AUTO_CLAMPED", 744.444465637207, -2.1999998762362876, "AUTO_CLAMPED"], [-2.1999998762362876, 83.33333333333337, "BEZIER", "AUTO", 772.2222010294596, -2.1999998762362876, "AUTO_CLAMPED", 877.7777989705403, -2.1999998762362876, "AUTO_CLAMPED"], [0.0, 233.33333333333326, "BEZIER", "AUTO", 955.555534362793, 0.0, "AUTO_CLAMPED", 1111.111068725586, 0.0, "AUTO_CLAMPED"]], "z": [[0.0, 0.0, "BEZIER", "AUTO", 194.44444974263507, 0.0, "AUTO_CLAMPED"], [0.0, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, 0.0, "AUTO_CLAMPED", 644.444465637207, 0.0, "AUTO_CLAMPED"], [-2.575079927950949, 183.33333333333326, "BEZIER", "AUTO", 705.555534362793, -2.575079927950949, "AUTO_CLAMPED", 777.7777989705403, -2.575079927950949, "AUTO_CLAMPED"], [-2.575079927950949, 33.33333333333337, "BEZIER", "AUTO", 788.8888676961263, -2.575079927950949, "AUTO_CLAMPED", 850.0, -2.575079927950949, "AUTO_CLAMPED"], [0.2377203317919303, 150.0, "BEZIER", "AUTO", 900.0, 0.2377203317919303, "AUTO_CLAMPED", 977.7777989705404, 0.2377203317919303, "AUTO_CLAMPED"], [-0.0, 83.33333333333326, "BEZIER", "AUTO", 1005.5555343627929, -0.0, "AUTO_CLAMPED", 1061.1111323038738, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 194.44444974263507, 0.0, "AUTO_CLAMPED"], [0.0, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, 0.0, "AUTO_CLAMPED", 644.444465637207, 0.0, "AUTO_CLAMPED"], [0.0, 183.33333333333326, "BEZIER", "AUTO", 705.555534362793, 0.0, "AUTO_CLAMPED", 777.7777989705403, 0.0, "AUTO_CLAMPED"], [0.0, 33.33333333333337, "BEZIER", "AUTO", 788.8888676961263, 0.0, "AUTO_CLAMPED", 877.7777989705403, 0.0, "AUTO_CLAMPED"], [0.0, 233.33333333333326, "BEZIER", "AUTO", 955.555534362793, 0.0, "AUTO_CLAMPED", 1111.111068725586, 0.0, "AUTO_CLAMPED"]]}}, "Hammer": {"location": {"x": [[3.125, 0.0, "BEZIER", "AUTO", 16.666666666666668, 3.125, "AUTO_CLAMPED"]], "z": [[1.862645149230957e-08, 0.0, "BEZIER", "AUTO", 16.666666666666668, 1.862645149230957e-08, "AUTO_CLAMPED"]], "y": [[0.125, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.125, "AUTO_CLAMPED"]]}, "rotation_euler": {"z": [[-0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, -0.0, "AUTO_CLAMPED"], [25.00000012650595, 33.333333333333336, "BEZIER", "AUTO", 22.22222089767456, 25.00000012650595, "AUTO_CLAMPED", 216.66666666666669, 25.00000012650595, "AUTO_CLAMPED"], [25.00000012650595, 550.0, "BEZIER", "AUTO", 400.0, 25.00000012650595, "AUTO_CLAMPED", 627.7777989705403, 25.00000012650595, "AUTO_CLAMPED"], [-60.000001669652114, 133.33333333333326, "BEZIER", "AUTO", 672.2222010294596, -60.000001669652114, "AUTO_CLAMPED", 733.3333333333333, -60.000001669652114, "AUTO_CLAMPED"], [-60.000001669652114, 50.0, "BEZIER", "AUTO", 750.0, -60.000001669652114, "AUTO_CLAMPED", 783.3333333333334, -60.000001669652114, "AUTO_CLAMPED"], [-0.0, 50.0, "BEZIER", "AUTO", 800.0, -0.0, "AUTO_CLAMPED", 833.3333333333334, -0.0, "AUTO_CLAMPED"]], "x": [[0.0, 583.3333333333334, "BEZIER", "AUTO", 627.7777989705403, 0.0, "AUTO_CLAMPED"], [0.0, 133.33333333333326, "BEZIER", "AUTO", 672.2222010294596, 0.0, "AUTO_CLAMPED", 733.3333333333333, 0.0, "AUTO_CLAMPED"], [0.0, 50.0, "BEZIER", "AUTO", 750.0, 0.0, "AUTO_CLAMPED", 783.3333333333334, 0.0, "AUTO_CLAMPED"]], "y": [[0.0, 583.3333333333334, "BEZIER", "AUTO", 627.7777989705403, 0.0, "AUTO_CLAMPED"], [0.0, 133.33333333333326, "BEZIER", "AUTO", 672.2222010294596, 0.0, "AUTO_CLAMPED", 733.3333333333333, 0.0, "AUTO_CLAMPED"], [0.0, 50.0, "BEZIER", "AUTO", 750.0, 0.0, "AUTO_CLAMPED", 783.3333333333334, 0.0, "AUTO_CLAMPED"]]}}}, "Firing": {"Bullet": {"location": {"x": [[1.59375, 0.0, "BEZIER", "AUTO", 11.111111442248026, 1.59375, "AUTO_CLAMPED"], [1.59375, 33.333333333333336, "QUAD", "EASE_OUT", 22.22222089767456, 1.59375, "AUTO_CLAMPED"], [0.90625, 66.66666666666666, "SINE", "EASE_IN"], [-0.5937501192092896, 100.0, "BEZIER", "AUTO", 233.33333333333334, -0.5937501192092896, "AUTO_CLAMPED"]], "y": [[0.5625, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.5625, "AUTO_CLAMPED"], [0.5625, 33.333333333333336, "QUAD", "AUTO", 22.22222089767456, 0.5625, "AUTO_CLAMPED"], [0.875, 66.66666666666666, "SINE", "AUTO"], [0.9999978542327881, 66.66666666666666, "BEZIER", "AUTO", 188.88888359069824, 0.9999978542327881, "AUTO_CLAMPED"]]}, "rotation_euler": {"z": [[-19.99999941818584, 0.0, "BEZIER", "AUTO", 11.111111442248026, -19.99999941818584, "AUTO_CLAMPED"], [-19.99999941818584, 33.333333333333336, "QUAD", "AUTO", 22.22222089767456, -19.99999941818584, "AUTO_CLAMPED"], [-7.500000208706514, 66.66666666666666, "SINE", "AUTO"], [-0.0, 66.66666666666666, "BEZIER", "AUTO", 188.88888359069824, -0.0, "AUTO_CLAMPED"]]}}, "Grip": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "QUAD", "EASE_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED"], [0.5237600207328796, 49.99999999999999, "BEZIER", "AUTO", 108.33333333333334, 0.5237600207328796, "ALIGNED"], [0.3084455132484436, 50.000000000000014, "BEZIER", "AUTO", 116.66666666666667, 0.43553054332733154, "AUTO_CLAMPED", 161.11111640930176, 0.09663715958595276, "AUTO_CLAMPED"], [-0.04659605026245117, 83.33333333333334, "BEZIER", "AUTO", 188.88888359069824, -0.04659605026245117, "AUTO_CLAMPED", 233.33333333333334, -0.04659605026245117, "AUTO_CLAMPED"], [0.0, 50.0, "BEZIER", "AUTO", 250.0, 0.0, "AUTO_CLAMPED", 283.3333333333333, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, -0.0, "AUTO_CLAMPED"], [-0.0, 33.333333333333336, "QUAD", "EASE_OUT", 22.22222089767456, -0.0, "AUTO_CLAMPED"], [6.210800052031118e-08, 49.99999999999999, "BEZIER", "AUTO", 100.0, 6.210800052031118e-08, "AUTO_CLAMPED"], [6.210800052031118e-08, 50.000000000000014, "BEZIER", "AUTO", 116.66666666666667, 6.210800052031118e-08, "AUTO_CLAMPED", 161.11111640930176, 6.210800052031118e-08, "AUTO_CLAMPED"], [-1.2910305713376147e-08, 83.33333333333334, "BEZIER", "AUTO", 188.88888359069824, -1.2910305713376147e-08, "AUTO_CLAMPED", 233.33333333333334, -1.2910305713376147e-08, "AUTO_CLAMPED"], [-1.063667554035419e-08, 50.0, "BEZIER", "AUTO", 250.0, -1.063667554035419e-08, "AUTO_CLAMPED", 283.3333333333333, -1.063667554035419e-08, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "QUAD", "EASE_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED"], [0.431023508310318, 49.99999999999999, "BEZIER", "AUTO", 108.33333333333334, 0.431023508310318, "ALIGNED"], [0.2511425018310547, 50.000000000000014, "BEZIER", "AUTO", 116.66666666666667, 0.3581860363483429, "AUTO_CLAMPED", 161.11111640930176, 0.07273662090301514, "AUTO_CLAMPED"], [-0.05201435089111328, 83.33333333333334, "BEZIER", "AUTO", 188.88888359069824, -0.05201435089111328, "AUTO_CLAMPED", 233.33333333333334, -0.05201435089111328, "AUTO_CLAMPED"], [0.0, 50.0, "BEZIER", "AUTO", 250.0, 0.0, "AUTO_CLAMPED", 283.3333333333333, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"z": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "QUAD", "EASE_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED"], [-2.49999992727323, 49.99999999999999, "BEZIER", "AUTO", 100.0, -2.49999992727323, "AUTO_CLAMPED"], [-1.2580600137440534, 50.000000000000014, "BEZIER", "AUTO", 116.67113304138184, -4.465294226503781, "ALIGNED", 161.0812822977702, 4.083021345262861, "ALIGNED"], [1.3109028394749147, 83.33333333333334, "BACK", "EASE_OUT", 188.88888359069824, 1.3109028394749147, "ALIGNED", 3.6015799045562744], [-0.0, 216.66666666666669, "BEZIER", "AUTO", 505.5555661519369, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "QUAD", "EASE_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED"], [0.6000007957649733, 49.99999999999999, "BEZIER", "AUTO", 100.0, 0.6000007957649733, "AUTO_CLAMPED"], [-0.4999999961268166, 50.000000000000014, "BEZIER", "AUTO", 116.66666666666667, -0.4999999961268166, "AUTO_CLAMPED", 233.33333333333334, -0.4999999961268166, "AUTO_CLAMPED"], [0.0, 300.0, "BEZIER", "AUTO", 333.3333333333333, 0.0, "AUTO_CLAMPED", 533.3333333333334, 0.0, "AUTO_CLAMPED"]]}}, "Hammer": {"rotation_euler": {"z": [[-0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, -0.0, "ALIGNED"], [25.00000012650595, 33.333333333333336, "BEZIER", "AUTO", 22.22222089767456, 25.00000012650595, "AUTO_CLAMPED", 55.55555820465088, 25.00000012650595, "AUTO_CLAMPED"], [-45.00000125223908, 66.66666666666666, "BEZIER", "AUTO", 77.77777512868245, -45.00000125223908, "AUTO_CLAMPED", 133.33333333333334, -45.00000125223908, "AUTO_CLAMPED"], [-0.0, 100.0, "BEZIER", "AUTO", 166.66666666666666, -0.0, "AUTO_CLAMPED", 233.33333333333334, -0.0, "AUTO_CLAMPED"]]}, "location": {"x": [[3.125, 0.0, "BEZIER", "AUTO", 16.666666666666668, 3.125, "AUTO_CLAMPED"]], "z": [[1.862645149230957e-08, 0.0, "BEZIER", "AUTO", 16.666666666666668, 1.862645149230957e-08, "AUTO_CLAMPED"]], "y": [[0.125, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.125, "AUTO_CLAMPED"]]}}, "Slide": {"location": {"x": [[-3.25, 0.0, "SINE", "EASE_OUT"], [-3.25, 33.333333333333336, "QUAD", "EASE_OUT"], [-1.75, 66.66666666666666, "SINE", "EASE_IN"], [-3.25, 100.0, "SINE", "EASE_OUT"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 16.666666666666668, -0.0, "AUTO_CLAMPED"]], "y": [[0.75, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.75, "AUTO_CLAMPED"]]}}}, "Inspect": {"Bullet": {"location": {"x": [[1.59375, 0.0, "CONSTANT", "AUTO"], [-0.59375, 16.666666666666668, "BEZIER", "AUTO", 944.4444656372069, -0.59375, "AUTO_CLAMPED"], [-0.59375, 2783.3333333333335, "BEZIER", "AUTO", 1872.2221374511719, -0.59375, "AUTO_CLAMPED", 3727.777862548828, -0.59375, "AUTO_CLAMPED"]], "y": [[0.5625, 0.0, "CONSTANT", "AUTO"], [1.0, 16.666666666666668, "BEZIER", "AUTO", 944.4444656372069, 1.0, "AUTO_CLAMPED"], [1.0, 2783.3333333333335, "BEZIER", "AUTO", 1872.2221374511719, 1.0, "AUTO_CLAMPED", 3727.777862548828, 1.0, "AUTO_CLAMPED"]]}}, "Grip": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "BEZIER", "EASE_IN", 22.22222089767456, 0.0, "AUTO_CLAMPED", 116.66666666666667, 0.0, "AUTO_CLAMPED"], [-1.71687650680542, 249.99999999999997, "BEZIER", "AUTO", 200.0, -1.71687650680542, "AUTO_CLAMPED", 383.3333333333333, -1.71687650680542, "AUTO_CLAMPED"], [0.5513148307800293, 300.00000000000006, "BEZIER", "AUTO", 483.3333333333333, -0.29949963092803955, "AUTO_CLAMPED", 683.3333333333334, 1.4021292924880981, "AUTO_CLAMPED"], [1.6863813400268555, 299.9999999999999, "BEZIER", "AUTO", 783.3333333333334, 1.6863813400268555, "AUTO_CLAMPED", 1322.2222646077473, 1.6863813400268555, "AUTO_CLAMPED"], [1.0514655113220215, 1316.6666666666667, "BEZIER", "AUTO", 1761.111068725586, 1.6863813400268555, "AUTO_CLAMPED", 2344.4445292154946, 0.8425058722496033, "AUTO_CLAMPED"], [-1.970992922782898, 433.3333333333335, "BEZIER", "AUTO", 2488.8888041178384, -1.970992922782898, "AUTO_CLAMPED", 2688.8888041178384, -1.970992922782898, "AUTO_CLAMPED"], [0.0, 166.66666666666652, "BEZIER", "EASE_IN", 2744.4445292154946, 0.0, "AUTO_CLAMPED", 2855.555470784505, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, -0.0, "AUTO_CLAMPED"], [-0.0, 33.333333333333336, "BEZIER", "EASE_IN_OUT", 22.22222089767456, -0.0, "AUTO_CLAMPED", 116.66666666666667, -0.0, "AUTO_CLAMPED"], [2.112370729446411, 249.99999999999997, "BEZIER", "AUTO", 200.0, 1.0917030572891235, "AUTO_CLAMPED", 361.11110051472986, 3.0649938583374023, "AUTO_CLAMPED"], [3.955737590789795, 233.33333333333331, "BEZIER", "AUTO", 438.88889948527014, 3.955737590789795, "AUTO_CLAMPED", 538.8888676961263, 3.955737590789795, "AUTO_CLAMPED"], [3.7618730068206787, 66.66666666666674, "BEZIER", "AUTO", 561.1111323038737, 3.8623299598693848, "AUTO_CLAMPED", 683.3333333333334, 3.309816360473633, "AUTO_CLAMPED"], [2.715005397796631, 299.9999999999999, "BEZIER", "AUTO", 783.3333333333334, 2.715005397796631, "AUTO_CLAMPED", 1322.2222646077473, 2.715005397796631, "AUTO_CLAMPED"], [4.174439907073975, 1316.6666666666667, "BEZIER", "AUTO", 1761.111068725586, 2.715005397796631, "AUTO_CLAMPED", 2277.777862548828, 4.433073997497559, "AUTO_CLAMPED"], [5.207278251647949, 233.33333333333303, "BEZIER", "AUTO", 2355.555470784505, 5.207278251647949, "AUTO_CLAMPED", 2555.5554707845054, 5.207278251647949, "AUTO_CLAMPED"], [-0.0, 366.66666666666697, "BEZIER", "EASE_IN_OUT", 2677.777862548828, -0.0, "AUTO_CLAMPED", 2922.222137451172, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "BEZIER", "EASE_IN_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED", 216.66666666666669, 0.0, "AUTO_CLAMPED"], [0.9560011625289917, 550.0, "BEZIER", "AUTO", 400.0, 0.6512281894683838, "AUTO_CLAMPED", 683.3333333333334, 1.1222410202026367, "AUTO_CLAMPED"], [1.235924243927002, 299.9999999999999, "BEZIER", "AUTO", 783.3333333333334, 1.1854032278060913, "AUTO_CLAMPED", 1072.2222646077473, 1.331352949142456, "AUTO_CLAMPED"], [1.3816792964935303, 566.6666666666667, "BEZIER", "AUTO", 1261.111068725586, 1.3816792964935303, "AUTO_CLAMPED", 1700.0, 1.3816792964935303, "AUTO_CLAMPED"], [0.991679310798645, 750.0, "BEZIER", "AUTO", 1950.0, 0.991679310798645, "AUTO_CLAMPED", 2277.777862548828, 0.991679310798645, "AUTO_CLAMPED"], [0.991679310798645, 233.33333333333303, "BEZIER", "AUTO", 2355.555470784505, 0.991679310798645, "AUTO_CLAMPED", 2555.5554707845054, 0.991679310798645, "AUTO_CLAMPED"], [0.0, 366.66666666666697, "BEZIER", "EASE_IN_OUT", 2677.777862548828, 0.0, "AUTO_CLAMPED", 2922.222137451172, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "BEZIER", "EASE_IN_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED", 216.66666666666669, 0.0, "AUTO_CLAMPED"], [5.020503228661193, 550.0, "BEZIER", "AUTO", 400.0, 3.059422302374893, "AUTO_CLAMPED", 683.3333333333334, 6.090183850331944, "AUTO_CLAMPED"], [7.589897451014929, 299.9999999999999, "BEZIER", "AUTO", 783.3333333333334, 6.833084743334013, "AUTO_CLAMPED", 1322.2222646077473, 10.911463694395382, "AUTO_CLAMPED"], [14.500997041935651, 1316.6666666666667, "BEZIER", "AUTO", 1761.111068725586, 14.500997041935651, "AUTO_CLAMPED", 2238.8888041178384, 14.500997041935651, "AUTO_CLAMPED"], [14.500997041935651, 116.66666666666652, "BEZIER", "AUTO", 2277.777862548828, 14.500997041935651, "AUTO_CLAMPED", 2477.777862548828, 14.500997041935651, "AUTO_CLAMPED"], [0.0, 483.3333333333335, "BEZIER", "EASE_IN_OUT", 2638.888804117839, 0.0, "AUTO_CLAMPED", 2961.1111958821616, 0.0, "AUTO_CLAMPED"]], "z": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "BEZIER", "EASE_IN_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED", 216.66666666666669, 0.0, "AUTO_CLAMPED"], [-2.5185520017194545, 550.0, "BEZIER", "AUTO", 400.0, -1.7974633178318207, "AUTO_CLAMPED", 683.3333333333334, -2.9118731408296927, "AUTO_CLAMPED"], [-2.9849506154201286, 299.9999999999999, "BEZIER", "AUTO", 783.3333333333334, -2.9849506154201286, "AUTO_CLAMPED", 1322.2222646077473, -2.9849506154201286, "AUTO_CLAMPED"], [-2.6852116056755273, 1316.6666666666667, "BEZIER", "AUTO", 1761.111068725586, -2.6852116056755273, "AUTO_CLAMPED", 2238.8888041178384, -2.6852116056755273, "AUTO_CLAMPED"], [-2.6852116056755273, 116.66666666666652, "BEZIER", "AUTO", 2277.777862548828, -2.6852116056755273, "AUTO_CLAMPED", 2477.777862548828, -2.6852116056755273, "AUTO_CLAMPED"], [0.0, 483.3333333333335, "BEZIER", "EASE_IN_OUT", 2638.888804117839, 0.0, "AUTO_CLAMPED", 2961.1111958821616, 0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, 0.0, "AUTO_CLAMPED"], [0.0, 33.333333333333336, "BEZIER", "EASE_IN_OUT", 22.22222089767456, 0.0, "AUTO_CLAMPED", 216.66666666666669, 0.0, "AUTO_CLAMPED"], [133.86457701475643, 550.0, "BEZIER", "AUTO", 400.0, 95.5376944872819, "AUTO_CLAMPED", 683.3333333333334, 154.77014681876466, "AUTO_CLAMPED"], [158.65432513558918, 299.9999999999999, "BEZIER", "AUTO", 783.3333333333334, 158.65432513558918, "AUTO_CLAMPED", 983.3333333333333, 158.65432513558918, "AUTO_CLAMPED"], [157.74876499505052, 300.0, "BEZIER", "AUTO", 1083.3333333333333, 158.02887105291276, "AUTO_CLAMPED", 1333.3333333333333, 157.32859907806804, "AUTO_CLAMPED"], [157.32859907806804, 450.0, "BEZIER", "AUTO", 1483.3333333333335, 157.32859907806804, "AUTO_CLAMPED", 1822.2222646077473, 157.32859907806804, "AUTO_CLAMPED"], [155.08037401086662, 566.6666666666667, "BEZIER", "AUTO", 2011.1110687255857, 157.32859907806804, "AUTO_CLAMPED", 2277.777862548828, 154.1546374915198, "AUTO_CLAMPED"], [108.19301732112919, 233.33333333333303, "BEZIER", "AUTO", 2355.555470784505, 135.62436159403188, "AUTO_CLAMPED", 2555.5554707845054, 65.08662112947903, "AUTO_CLAMPED"], [0.0, 366.66666666666697, "BEZIER", "EASE_IN_OUT", 2677.777862548828, 0.0, "AUTO_CLAMPED", 2922.222137451172, 0.0, "AUTO_CLAMPED"]]}}}, "Jam": {"Grip": {"location": {"x": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 16.666666666666668, 0.0, "AUTO_CLAMPED"], [0.0, 50.0, "QUAD", "EASE_IN_OUT", 33.333333333333336, 0.0, "AUTO_CLAMPED"], [0.7684813737869263, 250.0, "BACK", "EASE_OUT", 1.7015800476074219], [-0.07987856864929199, 300.0, "SINE", "AUTO"], [-0.07659769058227539, 366.66666666666663, "BEZIER", "AUTO", 1044.444465637207, -0.07659769058227539, "AUTO_CLAMPED"], [-0.07659769058227539, 233.33333333333337, "QUAD", "EASE_OUT", 1122.2222646077473, -0.07659769058227539, "AUTO_CLAMPED"], [0.34417805075645447, 200.0, "QUAD", "EASE_IN"], [0.27417799830436707, 316.6666666666665, "BEZIER", "AUTO", 1733.3333333333335, 0.27417799830436707, "AUTO_CLAMPED"], [0.27417805790901184, 50.0, "QUAD", "EASE_IN", 1750.0, 0.27417805790901184, "AUTO_CLAMPED"], [-0.016215801239013672, 166.66666666666674, "BACK", "AUTO", 1.7015800476074219], [0.0, 266.66666666666674, "BEZIER", "EASE_IN_OUT", 2288.8888041178384, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "EASE_IN_OUT", 16.666666666666668, -0.0, "AUTO_CLAMPED"], [-0.0, 50.0, "QUAD", "EASE_IN_OUT", 33.333333333333336, -0.0, "AUTO_CLAMPED"], [-0.172386035323143, 250.0, "BACK", "EASE_OUT", 1.7015800476074219], [-0.04781261831521988, 183.33333333333331, "BEZIER", "AUTO", 522.2222328186035, -0.04781261831521988, "AUTO_CLAMPED"], [-0.04781261831521988, 116.66666666666669, "SINE", "AUTO", 561.1111323038737, -0.04781261831521988, "AUTO_CLAMPED"], [-0.25952833890914917, 366.66666666666663, "BEZIER", "AUTO", 1044.444465637207, -0.25952833890914917, "AUTO_CLAMPED"], [-0.25952833890914917, 233.33333333333337, "QUAD", "EASE_OUT", 1122.2222646077473, -0.25952833890914917, "AUTO_CLAMPED"], [-1.6563783884048462, 200.0, "QUAD", "EASE_IN"], [-0.9063783884048462, 316.6666666666665, "BEZIER", "AUTO", 1733.3333333333335, -0.9063783884048462, "AUTO_CLAMPED"], [-0.9063783884048462, 50.0, "QUAD", "EASE_IN", 1750.0, -0.9063783884048462, "AUTO_CLAMPED"], [-0.19053393602371216, 166.66666666666674, "BACK", "AUTO", 1.7015800476074219], [-0.0, 266.66666666666674, "BEZIER", "EASE_IN_OUT", 2288.8888041178384, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 16.666666666666668, 0.0, "AUTO_CLAMPED"], [0.0, 50.0, "QUAD", "EASE_IN_OUT", 33.333333333333336, 0.0, "AUTO_CLAMPED"], [1.9825199842453003, 250.0, "BACK", "EASE_OUT", 1.7015800476074219], [0.699442982673645, 300.0, "SINE", "AUTO"], [0.6867120265960693, 366.66666666666663, "BEZIER", "AUTO", 1044.444465637207, 0.6867120265960693, "AUTO_CLAMPED"], [0.6867120265960693, 233.33333333333337, "QUAD", "EASE_OUT", 1122.2222646077473, 0.6867120265960693, "AUTO_CLAMPED"], [0.8148880004882812, 200.0, "QUAD", "EASE_IN"], [1.2448880672454834, 316.6666666666665, "BEZIER", "AUTO", 1733.3333333333335, 1.2448880672454834, "AUTO_CLAMPED"], [1.2448880672454834, 50.0, "QUAD", "EASE_IN", 1750.0, 1.2448880672454834, "AUTO_CLAMPED"], [0.44753724336624146, 166.66666666666674, "BACK", "AUTO", 1.7015800476074219], [0.0, 266.66666666666674, "BEZIER", "EASE_IN_OUT", 2288.8888041178384, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 16.666666666666668, 0.0, "AUTO_CLAMPED"], [0.0, 50.0, "QUAD", "EASE_IN_OUT", 33.333333333333336, 0.0, "AUTO_CLAMPED"], [-2.9187993795349088, 250.0, "BACK", "EASE_OUT", 1.7015800476074219], [-0.4350010878597721, 183.33333333333331, "BEZIER", "AUTO", 522.2222328186035, -0.4350010878597721, "AUTO_CLAMPED"], [-0.4350010878597721, 116.66666666666669, "SINE", "AUTO", 561.1111323038737, -0.4350010878597721, "AUTO_CLAMPED"], [-2.977798553585479, 366.66666666666663, "BEZIER", "AUTO", 1044.444465637207, -2.977798553585479, "AUTO_CLAMPED"], [-2.977798553585479, 233.33333333333337, "QUAD", "EASE_OUT", 1122.2222646077473, -2.977798553585479, "AUTO_CLAMPED"], [-3.8259987654743424, 200.0, "QUAD", "EASE_IN"], [-2.426001230918489, 316.6666666666665, "BEZIER", "AUTO", 1733.3333333333335, -2.426001230918489, "AUTO_CLAMPED"], [-2.426001230918489, 50.0, "QUAD", "EASE_IN", 1750.0, -2.426001230918489, "AUTO_CLAMPED"], [-0.46099678784084064, 166.66666666666674, "BACK", "AUTO", 1.7015800476074219], [0.0, 266.66666666666674, "BEZIER", "EASE_IN_OUT", 2288.8888041178384, 0.0, "AUTO_CLAMPED"]], "z": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 16.666666666666668, 0.0, "AUTO_CLAMPED"], [0.0, 50.0, "QUAD", "EASE_IN_OUT", 33.333333333333336, 0.0, "AUTO_CLAMPED"], [-9.06172296242993, 250.0, "BACK", "EASE_OUT", 1.7015800476074219], [0.7263285595589442, 300.0, "SINE", "AUTO"], [0.9408103199582433, 366.66666666666663, "BEZIER", "AUTO", 1044.444465637207, 0.9408103199582433, "AUTO_CLAMPED"], [0.9408103199582433, 233.33333333333337, "QUAD", "EASE_OUT", 1122.2222646077473, 0.9408103199582433, "AUTO_CLAMPED"], [-1.024439796486114, 200.0, "QUAD", "EASE_IN"], [-7.224439641736934, 316.6666666666665, "BEZIER", "AUTO", 1733.3333333333335, -7.224439641736934, "AUTO_CLAMPED"], [-7.224439641736934, 50.0, "QUAD", "EASE_IN", 1750.0, -7.224439641736934, "AUTO_CLAMPED"], [-0.6818431639686808, 166.66666666666674, "BACK", "AUTO", 1.7015800476074219], [0.0, 266.66666666666674, "BEZIER", "EASE_IN_OUT", 2288.8888041178384, 0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 16.666666666666668, 0.0, "AUTO_CLAMPED"], [0.0, 50.0, "QUAD", "EASE_IN_OUT", 33.333333333333336, 0.0, "AUTO_CLAMPED"], [-0.3186239491911578, 250.0, "BACK", "EASE_OUT", 1.7015800476074219], [-0.04786912399892983, 183.33333333333331, "BEZIER", "AUTO", 522.2222328186035, -0.04786912399892983, "AUTO_CLAMPED"], [-0.04786912399892983, 116.66666666666669, "SINE", "AUTO", 561.1111323038737, -0.04786912399892983, "AUTO_CLAMPED"], [-3.0794514052291326, 366.66666666666663, "BEZIER", "AUTO", 1044.444465637207, -3.0794514052291326, "AUTO_CLAMPED"], [-3.0794514052291326, 233.33333333333337, "QUAD", "EASE_OUT", 1122.2222646077473, -3.0794514052291326, "AUTO_CLAMPED"], [-6.585746518014926, 200.0, "QUAD", "EASE_IN"], [-3.3857467562467116, 316.6666666666665, "BEZIER", "AUTO", 1733.3333333333335, -3.3857467562467116, "AUTO_CLAMPED"], [-3.3857467562467116, 50.0, "QUAD", "EASE_IN", 1750.0, -3.3857467562467116, "AUTO_CLAMPED"], [-0.7094660497977991, 166.66666666666674, "BACK", "AUTO", 1.7015800476074219], [0.0, 266.66666666666674, "BEZIER", "EASE_IN_OUT", 2288.8888041178384, 0.0, "AUTO_CLAMPED"]]}}, "Magazine": {"location": {"x": [[2.125, 0.0, "BEZIER", "AUTO", 111.11110846201579, 2.125, "AUTO_CLAMPED"], [2.125, 333.3333333333333, "BEZIER", "EASE_OUT", 222.22223281860352, 2.125, "AUTO_CLAMPED", 400.0, 2.125, "AUTO_CLAMPED"], [3.215369939804077, 200.00000000000006, "BEZIER", "AUTO", 466.6666666666667, 3.0801353454589844, "AUTO_CLAMPED", 588.8888676961262, 3.3280653953552246, "AUTO_CLAMPED"], [3.3280653953552246, 166.66666666666663, "BEZIER", "EASE_IN_OUT", 655.555534362793, 3.3280653953552246, "ALIGNED", 811.1111323038737, 3.3280653953552246, "ALIGNED"], [2.663938045501709, 300.0, "CUBIC", "EASE_IN", 900.0, 2.8518593311309814, "AUTO_CLAMPED"], [2.5386571884155273, 200.0, "QUAD", "EASE_IN_OUT"], [3.517561435699463, 500.0, "QUAD", "AUTO"], [3.215369939804077, 116.66666666666674, "BEZIER", "EASE_IN", 1861.111068725586, 2.8700082302093506, "AUTO_CLAMPED"], [2.125, 133.33333333333326, "BEZIER", "AUTO", 1905.5555979410808, 2.125, "AUTO_CLAMPED", 1994.4444020589192, 2.125, "AUTO_CLAMPED"]], "z": [[-2.443810274144198e-07, 0.0, "BEZIER", "AUTO", 194.44444974263507, -2.443810274144198e-07, "AUTO_CLAMPED"], [-2.443810274144198e-07, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, -2.443810274144198e-07, "AUTO_CLAMPED", 722.2222010294597, -2.443810274144198e-07, "AUTO_CLAMPED"], [4.639456748962402, 416.66666666666663, "CUBIC", "EASE_IN", 861.1111323038737, 4.639456748962402, "AUTO_CLAMPED"], [1.1628408432006836, 200.0, "QUAD", "EASE_IN_OUT"], [1.921958327293396, 200.0, "QUAD", "AUTO"], [-0.0, 300.0, "QUAD", "EASE_IN_OUT"], [-2.443810274144198e-07, 116.66666666666674, "BEZIER", "AUTO", 1861.111068725586, -2.443810274144198e-07, "AUTO_CLAMPED"], [-2.443810274144198e-07, 133.33333333333326, "BEZIER", "AUTO", 1905.5555979410808, -2.443810274144198e-07, "AUTO_CLAMPED", 1994.4444020589192, -2.443810274144198e-07, "AUTO_CLAMPED"]], "y": [[-1.5, 0.0, "BEZIER", "AUTO", 111.11110846201579, -1.5, "AUTO_CLAMPED"], [-1.5, 333.3333333333333, "BEZIER", "EASE_OUT", 222.22223281860352, -1.5, "AUTO_CLAMPED", 400.0, -1.5, "AUTO_CLAMPED"], [-5.614299774169922, 200.00000000000006, "BEZIER", "AUTO", 466.6666666666667, -5.13734769821167, "AUTO_CLAMPED", 588.8888676961262, -6.0117597579956055, "AUTO_CLAMPED"], [-6.0117597579956055, 166.66666666666663, "BEZIER", "EASE_IN_OUT", 655.555534362793, -6.0117597579956055, "ALIGNED", 811.1111323038737, -6.0117597579956055, "ALIGNED"], [-2.2079570293426514, 300.0, "CUBIC", "EASE_IN", 900.0, -2.2079570293426514, "AUTO_CLAMPED"], [-3.1993041038513184, 200.0, "QUAD", "EASE_IN_OUT"], [-6.543550491333008, 500.0, "QUAD", "AUTO"], [-5.614299774169922, 116.66666666666674, "BEZIER", "EASE_IN", 1861.111068725586, -4.5522990226745605, "AUTO_CLAMPED"], [-1.5, 133.33333333333326, "BEZIER", "AUTO", 1905.5555979410808, -1.5, "AUTO_CLAMPED", 1994.4444020589192, -1.5, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 177.77778307596842, 0.0, "AUTO_CLAMPED"], [0.0, 533.3333333333334, "BEZIER", "AUTO", 366.6665395100911, 0.0, "ALIGNED", 616.6666666666667, 0.0, "ALIGNED"], [7.889100717796508, 216.66666666666663, "BEZIER", "EASE_IN", 677.7777989705404, 7.889100717796508, "AUTO_CLAMPED", 833.3333333333334, 7.889100717796508, "AUTO_CLAMPED"], [7.889100717796508, 250.0, "CUBIC", "EASE_IN", 916.6666666666666, 7.889100717796508, "AUTO_CLAMPED"], [-9.461601510030203, 200.0, "QUAD", "EASE_IN_OUT"], [0.09899676183016481, 166.66666666666674, "QUAD", "AUTO"], [0.0, 333.33333333333326, "QUAD", "AUTO"], [0.0, 116.66666666666674, "BEZIER", "AUTO", 1861.111068725586, 0.0, "AUTO_CLAMPED"], [0.0, 133.33333333333326, "BEZIER", "AUTO", 1905.5555979410808, 0.0, "AUTO_CLAMPED", 1994.4444020589192, 0.0, "AUTO_CLAMPED"]], "z": [[0.0, 0.0, "BEZIER", "AUTO", 177.77778307596842, 0.0, "AUTO_CLAMPED"], [-0.0, 533.3333333333334, "BEZIER", "AUTO", 355.55553436279297, -0.0, "AUTO_CLAMPED", 588.8888676961262, -0.0, "AUTO_CLAMPED"], [-0.051977426088786305, 166.66666666666663, "BEZIER", "EASE_IN_OUT", 655.555534362793, -0.015593215153433329, "ALIGNED", 811.1111323038737, -0.1429379300817956, "ALIGNED"], [-3.0519773961795793, 300.0, "CUBIC", "EASE_IN", 900.0, -3.0519773961795793, "AUTO_CLAMPED"], [-2.346791954000674, 200.0, "QUAD", "EASE_IN_OUT"], [-3.453324221007995, 166.66666666666674, "QUAD", "AUTO"], [-0.0, 333.33333333333326, "BEZIER", "AUTO", 1783.3333333333333, -0.0, "AUTO_CLAMPED"], [0.0, 250.0, "BEZIER", "AUTO", 1866.6666666666667, 0.0, "AUTO_CLAMPED", 2033.3333333333333, 0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 177.77778307596842, 0.0, "AUTO_CLAMPED"], [0.0, 533.3333333333334, "BEZIER", "AUTO", 355.55553436279297, 0.0, "AUTO_CLAMPED", 588.8888676961262, 0.0, "AUTO_CLAMPED"], [-0.0825022485208741, 166.66666666666663, "BEZIER", "EASE_IN_OUT", 655.555534362793, -0.0825022485208741, "ALIGNED", 811.1111323038737, -0.0825022485208741, "ALIGNED"], [-0.0825022485208741, 300.0, "CUBIC", "EASE_IN", 900.0, -0.0825022485208741, "AUTO_CLAMPED"], [-1.7667953415716402, 200.0, "QUAD", "EASE_IN_OUT"], [-1.1941604991291164, 166.66666666666674, "QUAD", "AUTO"], [0.0, 333.33333333333326, "BEZIER", "AUTO", 1783.3333333333333, 0.0, "AUTO_CLAMPED"], [0.0, 250.0, "BEZIER", "AUTO", 1866.6666666666667, 0.0, "AUTO_CLAMPED", 2033.3333333333333, 0.0, "AUTO_CLAMPED"]]}}}, "Reload": {"Bullet": {"location": {"x": [[1.59375, 0.0, "BEZIER", "AUTO", 666.6666666666666, 1.59375, "AUTO_CLAMPED"], [1.59375, 2000.0, "BEZIER", "AUTO", 1333.3333333333333, 1.59375, "AUTO_CLAMPED", 2066.6666666666665, 1.59375, "AUTO_CLAMPED"], [0.90625, 200.0, "LINEAR", "AUTO", 2133.3333333333335, 0.90625, "AUTO_CLAMPED"], [0.90625, 133.33333333333348, "LINEAR", "AUTO"], [-0.5937501192092896, 99.99999999999955, "BEZIER", "AUTO", 2466.666666666667, -0.5937501192092896, "AUTO_CLAMPED"]], "y": [[0.5625, 0.0, "BEZIER", "AUTO", 666.6666666666666, 0.5625, "AUTO_CLAMPED"], [0.5625, 2000.0, "BEZIER", "AUTO", 1333.3333333333333, 0.5625, "AUTO_CLAMPED", 2066.6666666666665, 0.5625, "AUTO_CLAMPED"], [0.875, 200.0, "BEZIER", "AUTO", 2133.3333333333335, 0.875, "AUTO_CLAMPED", 2244.4445292154946, 0.875, "AUTO_CLAMPED"], [0.875, 133.33333333333348, "SINE", "EASE_OUT", 2288.8888041178384, 0.875, "AUTO_CLAMPED"], [0.9999978542327881, 33.33333333333303, "BEZIER", "AUTO", 2377.777862548828, 0.9999978542327881, "AUTO_CLAMPED"]]}, "rotation_euler": {"z": [[0.0, 0.0, "CONSTANT", "AUTO"], [-19.99999941818584, 2000.0, "BEZIER", "AUTO", 2066.6666666666665, -19.99999941818584, "AUTO_CLAMPED"], [-7.500000208706514, 200.0, "BEZIER", "AUTO", 2133.3333333333335, -7.500000208706514, "AUTO_CLAMPED", 2244.4445292154946, -7.500000208706514, "AUTO_CLAMPED"], [-7.500000208706514, 133.33333333333348, "SINE", "EASE_OUT", 2288.8888041178384, -7.500000208706514, "AUTO_CLAMPED"], [-0.0, 33.33333333333303, "BEZIER", "AUTO", 2377.777862548828, -0.0, "AUTO_CLAMPED"]]}}, "Grip": {"location": {"x": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [0.0, 16.666666666666668, "QUAD", "EASE_IN_OUT", 11.11111044883728, 0.0, "AUTO_CLAMPED"], [-0.5098327398300171, 283.3333333333333, "BACK", "EASE_OUT", 1.7015800476074219], [0.23206636309623718, 233.33333333333337, "BEZIER", "EASE_IN_OUT", 733.3333333333333, 0.23206636309623718, "AUTO_CLAMPED"], [0.23206636309623718, 599.9999999999999, "BEZIER", "EASE_IN", 933.3333333333334, 0.23206636309623718, "AUTO_CLAMPED", 1266.6666666666665, 0.23206636309623718, "AUTO_CLAMPED"], [0.38155651092529297, 400.0, "BACK", "AUTO", 1483.3333333333335, 0.38155651092529297, "ALIGNED", 1.7015800476074219], [0.3984723687171936, 266.66666666666674, "LINEAR", "AUTO"], [0.3984723687171936, 166.66666666666652, "BEZIER", "AUTO", 2011.1111958821612, 0.3984723687171936, "ALIGNED"], [0.0, 633.3333333333335, "QUAD", "EASE_IN_OUT", 2388.888804117839, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "EASE_IN_OUT", 5.555555721124013, -0.0, "AUTO_CLAMPED"], [-0.0, 16.666666666666668, "QUAD", "EASE_IN_OUT", 11.11111044883728, -0.0, "AUTO_CLAMPED"], [-1.590022325515747, 283.3333333333333, "BACK", "EASE_OUT", 1.7015800476074219], [-0.16680538654327393, 233.33333333333337, "BEZIER", "EASE_IN_OUT", 733.3333333333333, -0.16680538654327393, "AUTO_CLAMPED"], [-0.16680538654327393, 599.9999999999999, "BEZIER", "EASE_IN", 933.3333333333334, -0.16680538654327393, "AUTO_CLAMPED", 1266.6666666666665, -0.16680538654327393, "AUTO_CLAMPED"], [-0.13560596108436584, 400.0, "BACK", "AUTO", 1466.6666666666665, -0.13560596108436584, "ALIGNED", 1.7015800476074219], [-0.29175129532814026, 266.66666666666674, "LINEAR", "AUTO"], [-0.29175129532814026, 166.66666666666652, "BEZIER", "AUTO", 2011.1111958821612, -0.29175129532814026, "ALIGNED"], [-0.0, 633.3333333333335, "QUAD", "EASE_IN_OUT", 2388.888804117839, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [0.0, 16.666666666666668, "QUAD", "EASE_IN_OUT", 11.11111044883728, 0.0, "AUTO_CLAMPED"], [3.8397903442382812, 283.3333333333333, "BACK", "EASE_OUT", 1.7015800476074219], [0.3740246295928955, 533.3333333333334, "BEZIER", "EASE_IN_OUT", 933.3333333333334, 0.3740246295928955, "AUTO_CLAMPED"], [0.3740246295928955, 299.9999999999999, "BEZIER", "EASE_IN", 1033.3333333333333, 0.3740246295928955, "AUTO_CLAMPED", 1266.6666666666665, 0.3740246295928955, "AUTO_CLAMPED"], [0.5059270858764648, 400.0, "BACK", "AUTO", 1466.6666666666665, 0.5059270858764648, "ALIGNED", 3.9015798568725586], [1.2094907760620117, 266.66666666666674, "LINEAR", "AUTO"], [1.2094907760620117, 166.66666666666652, "BEZIER", "AUTO", 2011.1111958821612, 1.2094907760620117, "ALIGNED"], [0.0, 633.3333333333335, "QUAD", "EASE_IN_OUT", 2388.888804117839, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [0.0, 16.666666666666668, "QUAD", "EASE_IN_OUT", 11.11111044883728, 0.0, "AUTO_CLAMPED"], [-16.158301462904227, 283.3333333333333, "BACK", "EASE_OUT", 1.7015800476074219], [-10.301796740211811, 233.33333333333337, "BEZIER", "EASE_IN_OUT", 733.3333333333333, -10.301796740211811, "AUTO_CLAMPED"], [-10.301796740211811, 599.9999999999999, "BEZIER", "EASE_IN", 933.3333333333334, -10.301796740211811, "AUTO_CLAMPED", 1266.6666666666665, -10.301796740211811, "AUTO_CLAMPED"], [-19.784100553616323, 400.0, "BACK", "AUTO", 1400.0, -19.784100553616323, "AUTO_CLAMPED", 1.7015800476074219], [-16.903297516434197, 266.66666666666674, "LINEAR", "AUTO"], [-16.903297516434197, 100.0, "BEZIER", "AUTO", 1944.4445292154949, -8.062240890614454, "ALIGNED"], [0.0, 766.6666666666665, "QUAD", "EASE_IN_OUT", 2411.1111958821616, 0.0, "AUTO_CLAMPED"]], "z": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [0.0, 16.666666666666668, "QUAD", "EASE_IN_OUT", 11.11111044883728, 0.0, "AUTO_CLAMPED"], [-16.899083289716298, 283.3333333333333, "BACK", "EASE_OUT", 2.5], [-5.380695815862754, 533.3333333333334, "BEZIER", "EASE_IN_OUT", 1066.6666666666667, -5.380695815862754, "AUTO_CLAMPED"], [-11.906051935670543, 699.9999999999999, "BACK", "AUTO", 1300.0, -6.886808876911218, "AUTO_CLAMPED", 6.0], [-20.04334209111145, 266.66666666666674, "LINEAR", "AUTO"], [-20.04334209111145, 166.66666666666652, "BEZIER", "AUTO", 2177.777862548828, -30.043338385109788, "ALIGNED"], [0.0, 700.0, "QUAD", "EASE_IN_OUT", 2433.333333333333, 0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "EASE_IN_OUT", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [0.0, 16.666666666666668, "QUAD", "EASE_IN_OUT", 11.11111044883728, 0.0, "AUTO_CLAMPED"], [-1.7823402117923546, 283.3333333333333, "BACK", "EASE_OUT", 1.7015800476074219], [6.773653132931616, 233.33333333333337, "BEZIER", "EASE_IN_OUT", 733.3333333333333, 6.773653132931616, "AUTO_CLAMPED"], [6.773653132931616, 599.9999999999999, "BEZIER", "EASE_IN", 933.3333333333334, 6.773653132931616, "AUTO_CLAMPED", 1266.6666666666665, 6.773653132931616, "AUTO_CLAMPED"], [18.416894757265702, 400.0, "BACK", "AUTO", 1400.0, 17.224420567809638, "AUTO_CLAMPED", 1.7015800476074219], [19.211877550236412, 266.66666666666674, "BEZIER", "AUTO", 1844.4445292154946, 19.211877550236412, "ALIGNED"], [19.211877550236412, 100.0, "BEZIER", "AUTO", 1866.6666666666667, 19.211877550236412, "ALIGNED", 1944.4445292154949, 19.211877550236412, "ALIGNED"], [0.0, 266.6666666666665, "QUAD", "EASE_IN_OUT", 2077.7777353922525, 0.0, "AUTO_CLAMPED"]]}}, "Hammer": {"rotation_euler": {"z": [[-0.0, 0.0, "BEZIER", "AUTO", 666.6666666666666, -0.0, "AUTO_CLAMPED"], [-0.0, 2000.0, "BEZIER", "AUTO", 1333.3333333333333, -0.0, "AUTO_CLAMPED", 2066.6666666666665, -0.0, "AUTO_CLAMPED"], [-45.00000125223908, 200.0, "BEZIER", "AUTO", 2133.3333333333335, -45.00000125223908, "AUTO_CLAMPED", 2244.4445292154946, -45.00000125223908, "AUTO_CLAMPED"], [-45.00000125223908, 133.33333333333348, "LINEAR", "AUTO", 2288.8888041178384, -45.00000125223908, "AUTO_CLAMPED"], [-0.0, 133.33333333333348, "BEZIER", "AUTO", 2511.111195882161, -0.0, "AUTO_CLAMPED"]]}, "location": {"x": [[3.125, 0.0, "BEZIER", "AUTO", 16.666666666666668, 3.125, "AUTO_CLAMPED"]], "z": [[1.862645149230957e-08, 0.0, "BEZIER", "AUTO", 16.666666666666668, 1.862645149230957e-08, "AUTO_CLAMPED"]], "y": [[0.125, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.125, "AUTO_CLAMPED"]]}}, "Magazine": {"location": {"x": [[2.125, 0.0, "LINEAR", "AUTO"], [2.125, 366.66666666666663, "LINEAR", "AUTO"], [3.215367555618286, 133.33333333333337, "LINEAR", "EASE_IN"], [6.216582298278809, 266.66666666666663, "CONSTANT", "AUTO"], [1.6932545900344849, 233.33333333333337, "BEZIER", "AUTO", 1133.3333333333333, 1.6932545900344849, "AUTO_CLAMPED"], [3.215367555618286, 400.0, "LINEAR", "EASE_IN", 1266.6666666666665, 3.215367555618286, "AUTO_CLAMPED"], [2.125, 166.66666666666674, "BEZIER", "AUTO", 1622.2222646077473, 2.125, "AUTO_CLAMPED"]], "z": [[-2.443810274144198e-07, 0.0, "LINEAR", "AUTO"], [-2.443810274144198e-07, 366.66666666666663, "LINEAR", "AUTO"], [-0.0, 133.33333333333337, "BEZIER", "EASE_IN", 522.2222010294596, -0.020347656682133675, "ALIGNED"], [-0.0, 266.66666666666663, "CONSTANT", "AUTO", 761.1110687255859, -7.450580596923828e-09, "ALIGNED"], [15.77025318145752, 233.33333333333337, "BEZIER", "AUTO", 1133.3333333333333, 15.77025318145752, "AUTO_CLAMPED"], [-0.0, 400.0, "BEZIER", "EASE_IN", 1266.6666666666665, 5.865144885319751e-07, "AUTO_CLAMPED", 1455.5555979410808, -2.443810274144198e-07, "AUTO_CLAMPED"], [-2.443810274144198e-07, 166.66666666666674, "BEZIER", "AUTO", 1511.111068725586, -2.443810274144198e-07, "AUTO_CLAMPED", 1622.2222646077473, -2.443810274144198e-07, "AUTO_CLAMPED"]], "y": [[-1.5, 0.0, "LINEAR", "AUTO"], [-1.5, 366.66666666666663, "LINEAR", "AUTO"], [-5.614295482635498, 133.33333333333337, "LINEAR", "EASE_IN"], [-16.93880844116211, 266.66666666666663, "CONSTANT", "AUTO"], [-21.048290252685547, 233.33333333333337, "BEZIER", "AUTO", 1133.3333333333333, -21.048290252685547, "AUTO_CLAMPED"], [-5.614295482635498, 400.0, "LINEAR", "EASE_IN", 1266.6666666666665, -11.369051933288574, "AUTO_CLAMPED"], [-1.5, 166.66666666666674, "BEZIER", "AUTO", 1622.2222646077473, -1.5, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "LINEAR", "AUTO"], [0.0, 366.66666666666663, "LINEAR", "AUTO"], [0.0, 133.33333333333337, "BEZIER", "EASE_IN", 555.555534362793, 0.0, "ALIGNED"], [0.0, 266.66666666666663, "CONSTANT", "AUTO", 677.7777989705404, 0.0, "AUTO_CLAMPED"], [-15.976201789442515, 233.33333333333337, "BEZIER", "AUTO", 1133.3333333333333, -15.976201789442515, "AUTO_CLAMPED"], [0.0, 400.0, "BEZIER", "EASE_IN", 1266.6666666666665, 0.0, "AUTO_CLAMPED", 1455.5555979410808, 0.0, "AUTO_CLAMPED"], [0.0, 166.66666666666674, "BEZIER", "AUTO", 1511.111068725586, 0.0, "AUTO_CLAMPED", 1622.2222646077473, 0.0, "AUTO_CLAMPED"]], "z": [[0.0, 0.0, "LINEAR", "AUTO"], [0.0, 366.66666666666663, "LINEAR", "AUTO"], [0.0, 133.33333333333337, "BEZIER", "EASE_IN", 555.555534362793, 0.0, "ALIGNED"], [0.0, 266.66666666666663, "CONSTANT", "AUTO", 677.7777989705404, 0.0, "AUTO_CLAMPED"], [-7.264861555018716, 233.33333333333337, "BEZIER", "AUTO", 1133.3333333333333, -7.264861555018716, "AUTO_CLAMPED"], [0.0, 400.0, "BEZIER", "EASE_IN", 1266.6666666666665, 0.0, "AUTO_CLAMPED", 1455.5555979410808, 0.0, "AUTO_CLAMPED"], [-0.0, 166.66666666666674, "BEZIER", "AUTO", 1511.111068725586, -0.0, "AUTO_CLAMPED", 1622.2222646077473, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "LINEAR", "AUTO"], [0.0, 366.66666666666663, "LINEAR", "AUTO"], [0.0, 133.33333333333337, "BEZIER", "EASE_IN", 555.555534362793, 0.0, "ALIGNED"], [0.0, 266.66666666666663, "CONSTANT", "AUTO", 677.7777989705404, 0.0, "AUTO_CLAMPED"], [-3.817224960598638, 233.33333333333337, "BEZIER", "AUTO", 1133.3333333333333, -3.817224960598638, "AUTO_CLAMPED"], [0.0, 400.0, "BEZIER", "EASE_IN", 1266.6666666666665, 0.0, "AUTO_CLAMPED", 1455.5555979410808, 0.0, "AUTO_CLAMPED"], [0.0, 166.66666666666674, "BEZIER", "AUTO", 1511.111068725586, 0.0, "AUTO_CLAMPED", 1622.2222646077473, 0.0, "AUTO_CLAMPED"]]}}, "Slide": {"location": {"x": [[-3.25, 0.0, "BEZIER", "AUTO", 666.6666666666666, -3.25, "AUTO_CLAMPED"], [-3.25, 2000.0, "BEZIER", "AUTO", 1766.6666666666665, -3.25, "ALIGNED", 2022.2221374511719, -3.25, "ALIGNED"], [-1.75, 200.0, "LINEAR", "AUTO", 2161.1111958821616, -1.75, "ALIGNED"], [-1.75, 133.33333333333348, "LINEAR", "AUTO"], [-3.25, 99.99999999999955, "BEZIER", "AUTO", 2433.333333333333, -3.25, "ALIGNED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 16.666666666666668, -0.0, "AUTO_CLAMPED"]], "y": [[0.75, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.75, "AUTO_CLAMPED"]]}}}}, "offset": {"Bullet": [1.59375, 0.5625, -2.443810274144198e-07], "Decal": [-2.3125, 0.6875, 0.3850004971027374], "DecalM": [0.0, 0.0, -10.609639167785645], "GripM": [0.0, 0.0, -10.609639167785645], "Hammer": [3.125, 0.125, 1.862645149230957e-08], "Magazine": [2.125, -1.5, -2.443810274144198e-07], "Slide": [-3.25, 0.75, -0.0], "SlideM": [0.0, 0.0, -10.609639167785645], "Text": [-6.25, 0.6875, 0.3850004971027374], "TextM": [0.0, 0.0, -10.609639167785645]}, "hierarchy": {"Bullet": "Magazine", "Decal": "Slide", "DecalM": "SlideM", "Hammer": "Grip", "Magazine": "Grip", "Slide": "Grip", "SlideM": "GripM", "Text": "Slide", "TextM": "SlideM"}, "rotmode": {"Bullet": "XYZ", "Decal": "XYZ", "DecalM": "XYZ", "GripM": "XYZ", "Hammer": "XYZ", "Magazine": "XYZ", "Slide": "XYZ", "SlideM": "XYZ", "Text": "XYZ", "TextM": "XYZ"}} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/weapons/animations/python.json b/src/main/resources/assets/hbm/models/weapons/animations/python.json index 8659ec6c1..2a65e9774 100644 --- a/src/main/resources/assets/hbm/models/weapons/animations/python.json +++ b/src/main/resources/assets/hbm/models/weapons/animations/python.json @@ -1 +1 @@ -{"anim": {"Fire": {"Body": {"location": {"z": [[-0.0, 0.0], [0.1901400089263916, 50.0], [-0.0, 283.3333333333333]], "y": [[0.0, 0.0], [0.22623062133789062, 50.0], [0.0, 283.3333333333333]]}, "rotation_euler": {"x": [[0.0, 16.666666666666668], [50.512076610560676, 66.66666666666666], [0.0, 250.0]]}}, "Hammer": {"rotation_euler": {"x": [[0.0, 0.0], [-44.61753114928588, 16.666666666666668], [-44.61753114928588, 183.33333333333334], [0.0, 300.0]]}, "location": {"x": [[0.00012800097465515137, 0.0]], "z": [[0.1478099822998047, 0.0]], "y": [[0.1151699647307396, 0.0]]}}}, "Reload": {"Body": {"location": {"x": [[0.0, 0.0], [0.1266033947467804, 216.66666666666669], [-0.1256844699382782, 66.66666666666663], [-0.10699314624071121, 100.0], [-0.05540347099304199, 183.33333333333331], [-0.04984791576862335, 83.33333333333337], [-0.04814600944519043, 100.0], [-0.0495946928858757, 50.0], [-0.1901838481426239, 216.66666666666663], [-0.209717258810997, 366.66666666666663], [-0.2682616710662842, 83.33333333333326], [0.06351689994335175, 100.00000000000023], [0.059162016957998276, 83.33333333333326], [0.0, 199.99999999999977]], "z": [[-0.0, 0.0], [0.018239933997392654, 216.66666666666669], [-0.003715081140398979, 66.66666666666663], [0.003378540277481079, 100.0], [0.06673367321491241, 183.33333333333331], [0.13605912029743195, 83.33333333333337], [0.11836071312427521, 100.0], [0.13753235340118408, 50.0], [0.2322661280632019, 216.66666666666663], [0.20868675410747528, 366.66666666666663], [0.15863937139511108, 83.33333333333326], [0.2003980427980423, 100.00000000000023], [0.09448619186878204, 83.33333333333326], [-0.0, 199.99999999999977]], "y": [[0.0, 0.0], [0.04348362237215042, 216.66666666666669], [0.04043026641011238, 66.66666666666663], [0.0498494915664196, 100.0], [0.21255171298980713, 183.33333333333331], [0.027551360428333282, 83.33333333333337], [0.09703753143548965, 100.0], [0.024584002792835236, 50.0], [-0.3309659957885742, 216.66666666666663], [-0.3340303301811218, 366.66666666666663], [-0.1700890064239502, 83.33333333333326], [0.016301512718200684, 100.00000000000023], [-0.015913818031549454, 83.33333333333326], [0.0, 199.99999999999977]]}, "rotation_euler": {"x": [[0.0, 0.0], [3.3686347844983024, 150.0], [0.02222707974050119, 166.66666666666663], [4.537149524119608, 100.00000000000006], [61.414745582626026, 233.33333333333331], [52.280518454609116, 133.33333333333337], [-71.68136001842309, 199.9999999999999], [-67.29034068404862, 366.66666666666674], [-53.072130549224426, 116.66666666666652], [-7.130840436898373, 100.00000000000023], [-2.7997762896148553, 83.33333333333326], [0.0, 199.99999999999977]], "z": [[0.0, 0.0], [-17.712562234959403, 150.0], [13.30397138517142, 166.66666666666663], [5.758366003376731, 100.00000000000006], [5.603675025280636, 233.33333333333331], [6.040763589705493, 133.33333333333337], [-1.4811513876747122, 199.9999999999999], [-0.9937320130296772, 366.66666666666674], [5.75973417564485, 116.66666666666652], [-7.87355264592462, 100.00000000000023], [-5.935155631645579, 83.33333333333326], [-0.0, 199.99999999999977]], "y": [[0.0, 0.0], [-3.362418245136533, 150.0], [5.488280686800564, 166.66666666666663], [2.9251945710321565, 100.00000000000006], [-3.2122371128833507, 233.33333333333331], [-2.2836878362589266, 133.33333333333337], [6.285038902068653, 199.9999999999999], [6.379913644734715, 366.66666666666674], [24.273973215848397, 116.66666666666652], [-30.381999654726528, 100.00000000000023], [-9.056688259237983, 83.33333333333326], [0.0, 199.99999999999977]]}}, "Cylinder": {"location": {"x": [[-0.0010489225387573242, 0.0], [-0.0010489225387573242, 283.3333333333333], [-0.07956840097904205, 83.33333333333331], [-0.07956840097904205, 1200.0], [-0.0010489225387573242, 83.33333333333326]], "z": [[0.07426249980926514, 0.0], [0.07426249980926514, 283.3333333333333], [0.07129553705453873, 83.33333333333331], [0.07129553705453873, 1200.0], [0.07426249980926514, 83.33333333333326]], "y": [[0.10388392210006714, 0.0], [0.10388392210006714, 283.3333333333333], [0.07195358723402023, 83.33333333333331], [0.07195358723402023, 1200.0], [0.10388392210006714, 83.33333333333326]]}}}}, "offset": {"Cylinder": [-0.0010489225387573242, 0.10388392210006714, 0.07426249980926514], "Grip": [0.0, -1.8214237229585706e-08, -0.0], "Hammer": [0.00012800097465515137, 0.1151699647307396, 0.1478099822998047]}} \ No newline at end of file +{"anim": {"Fire": {"Body": {"location": {"z": [[-0.0, 0.0, "LINEAR", "AUTO"], [0.1901400089263916, 50.0, "LINEAR", "AUTO"], [-0.0, 283.3333333333333, "LINEAR", "AUTO"]], "y": [[0.0, 0.0, "LINEAR", "AUTO"], [0.22623062133789062, 50.0, "LINEAR", "AUTO"], [0.0, 283.3333333333333, "LINEAR", "AUTO"]]}, "rotation_euler": {"x": [[0.0, 16.666666666666668, "LINEAR", "AUTO"], [50.512076610560676, 66.66666666666666, "LINEAR", "AUTO"], [0.0, 250.0, "LINEAR", "AUTO"]]}}, "Hammer": {"rotation_euler": {"x": [[0.0, 0.0, "LINEAR", "AUTO"], [-44.61753114928588, 16.666666666666668, "LINEAR", "AUTO"], [-44.61753114928588, 183.33333333333334, "LINEAR", "AUTO"], [0.0, 300.0, "LINEAR", "AUTO"]]}, "location": {"x": [[0.00012800097465515137, 0.0, "LINEAR", "AUTO"]], "z": [[0.1478099822998047, 0.0, "LINEAR", "AUTO"]], "y": [[0.1151699647307396, 0.0, "LINEAR", "AUTO"]]}}}, "Reload": {"Body": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 72.22222487131755, 0.0, "AUTO_CLAMPED"], [0.1266033947467804, 216.66666666666669, "BEZIER", "AUTO", 144.44443384806317, 0.1266033947467804, "AUTO_CLAMPED", 238.88888359069824, 0.1266033947467804, "AUTO_CLAMPED"], [-0.1256844699382782, 66.66666666666663, "BEZIER", "AUTO", 261.11111640930176, -0.1256844699382782, "AUTO_CLAMPED", 316.66666666666663, -0.1256844699382782, "AUTO_CLAMPED"], [-0.10699314624071121, 100.0, "BEZIER", "AUTO", 350.0, -0.11716071516275406, "AUTO_CLAMPED", 444.44443384806317, -0.08835260570049286, "AUTO_CLAMPED"], [-0.05540347099304199, 183.33333333333331, "BEZIER", "AUTO", 505.5555661519369, -0.06418702006340027, "AUTO_CLAMPED", 594.444465637207, -0.05141094699501991, "AUTO_CLAMPED"], [-0.04984791576862335, 83.33333333333337, "BEZIER", "AUTO", 622.2222010294596, -0.05059652775526047, "AUTO_CLAMPED", 683.3333333333334, -0.048949580639600754, "AUTO_CLAMPED"], [-0.04814600944519043, 100.0, "BEZIER", "AUTO", 716.6666666666666, -0.04814600944519043, "AUTO_CLAMPED", 766.6666666666666, -0.04814600944519043, "AUTO_CLAMPED"], [-0.0495946928858757, 50.0, "BEZIER", "AUTO", 783.3333333333334, -0.04814600944519043, "AUTO_CLAMPED", 872.2222010294596, -0.055872321128845215, "AUTO_CLAMPED"], [-0.1901838481426239, 216.66666666666663, "BEZIER", "AUTO", 944.4444656372069, -0.17864137887954712, "AUTO_CLAMPED", 1138.888931274414, -0.209717258810997, "AUTO_CLAMPED"], [-0.209717258810997, 366.66666666666663, "BEZIER", "AUTO", 1261.111068725586, -0.1901838481426239, "AUTO_CLAMPED", 1411.111068725586, -0.21415667235851288, "AUTO_CLAMPED"], [-0.2682616710662842, 83.33333333333326, "BEZIER", "AUTO", 1438.888931274414, -0.2682616710662842, "AUTO_CLAMPED", 1500.0, -0.2682616710662842, "AUTO_CLAMPED"], [0.06351689994335175, 100.00000000000023, "BEZIER", "AUTO", 1533.3333333333333, 0.06351689994335175, "AUTO_CLAMPED", 1594.4444020589192, 0.06351689994335175, "AUTO_CLAMPED"], [0.059162016957998276, 83.33333333333326, "BEZIER", "AUTO", 1622.2222646077473, 0.06351689994335175, "AUTO_CLAMPED", 1716.6666666666665, 0.04871029779314995, "AUTO_CLAMPED"], [0.0, 199.99999999999977, "BEZIER", "AUTO", 1783.3333333333333, 0.0, "AUTO_CLAMPED", 1916.6666666666667, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 72.22222487131755, -0.0, "AUTO_CLAMPED"], [0.018239933997392654, 216.66666666666669, "BEZIER", "AUTO", 144.44443384806317, 0.018239933997392654, "AUTO_CLAMPED", 238.88888359069824, 0.018239933997392654, "AUTO_CLAMPED"], [-0.003715081140398979, 66.66666666666663, "BEZIER", "AUTO", 261.11111640930176, -0.003715081140398979, "AUTO_CLAMPED", 316.66666666666663, -0.003715081140398979, "AUTO_CLAMPED"], [0.003378540277481079, 100.0, "BEZIER", "AUTO", 350.0, 0.0009166612289845943, "AUTO_CLAMPED", 444.44443384806317, 0.007891984656453133, "AUTO_CLAMPED"], [0.06673367321491241, 183.33333333333331, "BEZIER", "AUTO", 505.5555661519369, 0.0051122792065143585, "AUTO_CLAMPED", 594.444465637207, 0.09474340081214905, "AUTO_CLAMPED"], [0.13605912029743195, 83.33333333333337, "BEZIER", "AUTO", 622.2222010294596, 0.13605912029743195, "AUTO_CLAMPED", 683.3333333333334, 0.13605912029743195, "AUTO_CLAMPED"], [0.11836071312427521, 100.0, "BEZIER", "AUTO", 716.6666666666666, 0.11836071312427521, "AUTO_CLAMPED", 766.6666666666666, 0.11836071312427521, "AUTO_CLAMPED"], [0.13753235340118408, 50.0, "BEZIER", "AUTO", 783.3333333333334, 0.12769433856010437, "AUTO_CLAMPED", 872.2222010294596, 0.18016371130943298, "AUTO_CLAMPED"], [0.2322661280632019, 216.66666666666663, "BEZIER", "AUTO", 944.4444656372069, 0.2322661280632019, "AUTO_CLAMPED", 1138.888931274414, 0.2322661280632019, "AUTO_CLAMPED"], [0.20868675410747528, 366.66666666666663, "BEZIER", "AUTO", 1261.111068725586, 0.2322661280632019, "AUTO_CLAMPED", 1411.111068725586, 0.20332780480384827, "AUTO_CLAMPED"], [0.15863937139511108, 83.33333333333326, "BEZIER", "AUTO", 1438.888931274414, 0.15863937139511108, "AUTO_CLAMPED", 1500.0, 0.15863937139511108, "AUTO_CLAMPED"], [0.2003980427980423, 100.00000000000023, "BEZIER", "AUTO", 1533.3333333333333, 0.2003980427980423, "AUTO_CLAMPED", 1594.4444020589192, 0.2003980427980423, "AUTO_CLAMPED"], [0.09448619186878204, 83.33333333333326, "BEZIER", "AUTO", 1622.2222646077473, 0.1338554322719574, "AUTO_CLAMPED", 1716.6666666666665, -0.0, "AUTO_CLAMPED"], [-0.0, 199.99999999999977, "BEZIER", "AUTO", 1783.3333333333333, -0.0, "AUTO_CLAMPED", 1916.6666666666667, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 72.22222487131755, 0.0, "AUTO_CLAMPED"], [0.04348362237215042, 216.66666666666669, "BEZIER", "AUTO", 144.44443384806317, 0.04348362237215042, "AUTO_CLAMPED", 238.88888359069824, 0.04348362237215042, "AUTO_CLAMPED"], [0.04043026641011238, 66.66666666666663, "BEZIER", "AUTO", 261.11111640930176, 0.04043026641011238, "AUTO_CLAMPED", 316.66666666666663, 0.04043026641011238, "AUTO_CLAMPED"], [0.0498494915664196, 100.0, "BEZIER", "AUTO", 350.0, 0.04043026641011238, "AUTO_CLAMPED", 444.44443384806317, 0.0671180710196495, "AUTO_CLAMPED"], [0.21255171298980713, 183.33333333333331, "BEZIER", "AUTO", 505.5555661519369, 0.21255171298980713, "AUTO_CLAMPED", 594.444465637207, 0.21255171298980713, "AUTO_CLAMPED"], [0.027551360428333282, 83.33333333333337, "BEZIER", "AUTO", 622.2222010294596, 0.027551360428333282, "AUTO_CLAMPED", 683.3333333333334, 0.027551360428333282, "AUTO_CLAMPED"], [0.09703753143548965, 100.0, "BEZIER", "AUTO", 716.6666666666666, 0.09703753143548965, "AUTO_CLAMPED", 766.6666666666666, 0.09703753143548965, "AUTO_CLAMPED"], [0.024584002792835236, 50.0, "BEZIER", "AUTO", 783.3333333333334, 0.06167126074433327, "AUTO_CLAMPED", 872.2222010294596, -0.13612744212150574, "AUTO_CLAMPED"], [-0.3309659957885742, 216.66666666666663, "BEZIER", "AUTO", 944.4444656372069, -0.3291552662849426, "AUTO_CLAMPED", 1138.888931274414, -0.3340303301811218, "AUTO_CLAMPED"], [-0.3340303301811218, 366.66666666666663, "BEZIER", "AUTO", 1261.111068725586, -0.3340303301811218, "AUTO_CLAMPED", 1411.111068725586, -0.3340303301811218, "AUTO_CLAMPED"], [-0.1700890064239502, 83.33333333333326, "BEZIER", "AUTO", 1438.888931274414, -0.2501014769077301, "AUTO_CLAMPED", 1500.0, -0.07407404482364655, "AUTO_CLAMPED"], [0.016301512718200684, 100.00000000000023, "BEZIER", "AUTO", 1533.3333333333333, 0.016301512718200684, "AUTO_CLAMPED", 1594.4444020589192, 0.016301512718200684, "AUTO_CLAMPED"], [-0.015913818031549454, 83.33333333333326, "BEZIER", "AUTO", 1622.2222646077473, -0.015913818031549454, "AUTO_CLAMPED", 1716.6666666666665, -0.015913818031549454, "AUTO_CLAMPED"], [0.0, 199.99999999999977, "BEZIER", "AUTO", 1783.3333333333333, 0.0, "AUTO_CLAMPED", 1916.6666666666667, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 50.0, 0.0, "AUTO_CLAMPED"], [3.3686347844983024, 150.0, "BEZIER", "AUTO", 100.0, 3.3686347844983024, "AUTO_CLAMPED", 205.5555502573649, 3.3686347844983024, "AUTO_CLAMPED"], [0.02222707974050119, 166.66666666666663, "BEZIER", "AUTO", 261.11111640930176, 0.02222707974050119, "AUTO_CLAMPED", 350.0, 0.02222707974050119, "AUTO_CLAMPED"], [4.537149524119608, 100.00000000000006, "BEZIER", "AUTO", 383.3333333333333, 0.022227143106513993, "AUTO_CLAMPED", 494.4444338480631, 15.07196841315016, "AUTO_CLAMPED"], [61.414745582626026, 233.33333333333331, "BEZIER", "AUTO", 572.2222010294596, 61.414745582626026, "AUTO_CLAMPED", 694.444465637207, 61.414745582626026, "AUTO_CLAMPED"], [52.280518454609116, 133.33333333333337, "BEZIER", "AUTO", 738.8888676961262, 61.414745582626026, "AUTO_CLAMPED", 850.0, 38.57917605503646, "AUTO_CLAMPED"], [-71.68136001842309, 199.9999999999999, "BEZIER", "AUTO", 916.6666666666666, -71.68136001842309, "AUTO_CLAMPED", 1105.5555979410808, -71.68136001842309, "AUTO_CLAMPED"], [-67.29034068404862, 366.66666666666674, "BEZIER", "AUTO", 1227.7777353922525, -67.82028823156074, "AUTO_CLAMPED", 1388.888931274414, -67.12171697381935, "AUTO_CLAMPED"], [-53.072130549224426, 116.66666666666652, "BEZIER", "AUTO", 1427.7777353922525, -67.29034068404862, "AUTO_CLAMPED", 1500.0, -40.88509231506237, "AUTO_CLAMPED"], [-7.130840436898373, 100.00000000000023, "BEZIER", "AUTO", 1533.3333333333333, -12.328117499015958, "AUTO_CLAMPED", 1594.4444020589192, -2.7997765030582666, "AUTO_CLAMPED"], [-2.7997762896148553, 83.33333333333326, "BEZIER", "AUTO", 1622.2222646077473, -2.971331431658535, "AUTO_CLAMPED", 1716.6666666666665, -2.388044162153436, "AUTO_CLAMPED"], [0.0, 199.99999999999977, "BEZIER", "AUTO", 1783.3333333333333, 0.0, "AUTO_CLAMPED", 1916.6666666666667, 0.0, "AUTO_CLAMPED"]], "z": [[0.0, 0.0, "BEZIER", "AUTO", 50.0, 0.0, "AUTO_CLAMPED"], [-17.712562234959403, 150.0, "BEZIER", "AUTO", 100.0, -17.712562234959403, "AUTO_CLAMPED", 205.5555502573649, -17.712562234959403, "AUTO_CLAMPED"], [13.30397138517142, 166.66666666666663, "BEZIER", "AUTO", 261.11111640930176, 13.30397138517142, "AUTO_CLAMPED", 350.0, 13.30397138517142, "AUTO_CLAMPED"], [5.758366003376731, 100.00000000000006, "BEZIER", "AUTO", 383.3333333333333, 5.82466195389499, "AUTO_CLAMPED", 494.4444338480631, 5.603675025280636, "AUTO_CLAMPED"], [5.603675025280636, 233.33333333333331, "BEZIER", "AUTO", 572.2222010294596, 5.603675025280636, "AUTO_CLAMPED", 694.444465637207, 5.603675025280636, "AUTO_CLAMPED"], [6.040763589705493, 133.33333333333337, "BEZIER", "AUTO", 738.8888676961262, 6.040763589705493, "AUTO_CLAMPED", 850.0, 6.040763589705493, "AUTO_CLAMPED"], [-1.4811513876747122, 199.9999999999999, "BEZIER", "AUTO", 916.6666666666666, -1.4811513876747122, "AUTO_CLAMPED", 1105.5555979410808, -1.4811513876747122, "AUTO_CLAMPED"], [-0.9937320130296772, 366.66666666666674, "BEZIER", "AUTO", 1227.7777353922525, -1.4811513876747122, "AUTO_CLAMPED", 1388.888931274414, -0.8386440301880752, "AUTO_CLAMPED"], [5.75973417564485, 116.66666666666652, "BEZIER", "AUTO", 1427.7777353922525, 5.75973417564485, "AUTO_CLAMPED", 1500.0, 5.75973417564485, "AUTO_CLAMPED"], [-7.87355264592462, 100.00000000000023, "BEZIER", "AUTO", 1533.3333333333333, -7.87355264592462, "AUTO_CLAMPED", 1594.4444020589192, -7.87355264592462, "AUTO_CLAMPED"], [-5.935155631645579, 83.33333333333326, "BEZIER", "AUTO", 1622.2222646077473, -6.982968975801712, "AUTO_CLAMPED", 1716.6666666666665, -3.4204037764255912, "AUTO_CLAMPED"], [-0.0, 199.99999999999977, "BEZIER", "AUTO", 1783.3333333333333, -0.0, "AUTO_CLAMPED", 1916.6666666666667, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 50.0, 0.0, "AUTO_CLAMPED"], [-3.362418245136533, 150.0, "BEZIER", "AUTO", 100.0, -3.362418245136533, "AUTO_CLAMPED", 205.5555502573649, -3.362418245136533, "AUTO_CLAMPED"], [5.488280686800564, 166.66666666666663, "BEZIER", "AUTO", 261.11111640930176, 5.488280686800564, "AUTO_CLAMPED", 350.0, 5.488280686800564, "AUTO_CLAMPED"], [2.9251945710321565, 100.00000000000006, "BEZIER", "AUTO", 383.3333333333333, 4.216823897329765, "AUTO_CLAMPED", 494.4444338480631, -0.08860740377234073, "AUTO_CLAMPED"], [-3.2122371128833507, 233.33333333333331, "BEZIER", "AUTO", 572.2222010294596, -3.2122371128833507, "AUTO_CLAMPED", 694.444465637207, -3.2122371128833507, "AUTO_CLAMPED"], [-2.2836878362589266, 133.33333333333337, "BEZIER", "AUTO", 738.8888676961262, -3.2122371128833507, "AUTO_CLAMPED", 850.0, -0.8908639213222903, "AUTO_CLAMPED"], [6.285038902068653, 199.9999999999999, "BEZIER", "AUTO", 916.6666666666666, 6.233289120048405, "AUTO_CLAMPED", 1105.5555979410808, 6.379913644734715, "AUTO_CLAMPED"], [6.379913644734715, 366.66666666666674, "BEZIER", "AUTO", 1227.7777353922525, 6.285038902068653, "AUTO_CLAMPED", 1388.888931274414, 6.410100946432055, "AUTO_CLAMPED"], [24.273973215848397, 116.66666666666652, "BEZIER", "AUTO", 1427.7777353922525, 24.273973215848397, "AUTO_CLAMPED", 1500.0, 24.273973215848397, "AUTO_CLAMPED"], [-30.381999654726528, 100.00000000000023, "BEZIER", "AUTO", 1533.3333333333333, -30.381999654726528, "AUTO_CLAMPED", 1594.4444020589192, -30.381999654726528, "AUTO_CLAMPED"], [-9.056688259237983, 83.33333333333326, "BEZIER", "AUTO", 1622.2222646077473, -12.830308011514791, "AUTO_CLAMPED", 1716.6666666666665, 0.0, "AUTO_CLAMPED"], [0.0, 199.99999999999977, "BEZIER", "AUTO", 1783.3333333333333, 0.0, "AUTO_CLAMPED", 1916.6666666666667, 0.0, "AUTO_CLAMPED"]]}}, "Cylinder": {"location": {"x": [[-0.0010489225387573242, 0.0, "LINEAR", "AUTO"], [-0.0010489225387573242, 283.3333333333333, "LINEAR", "AUTO"], [-0.07956840097904205, 83.33333333333331, "LINEAR", "AUTO"], [-0.07956840097904205, 1200.0, "LINEAR", "AUTO"], [-0.0010489225387573242, 83.33333333333326, "LINEAR", "AUTO"]], "z": [[0.07426249980926514, 0.0, "LINEAR", "AUTO"], [0.07426249980926514, 283.3333333333333, "LINEAR", "AUTO"], [0.07129553705453873, 83.33333333333331, "LINEAR", "AUTO"], [0.07129553705453873, 1200.0, "LINEAR", "AUTO"], [0.07426249980926514, 83.33333333333326, "LINEAR", "AUTO"]], "y": [[0.10388392210006714, 0.0, "LINEAR", "AUTO"], [0.10388392210006714, 283.3333333333333, "LINEAR", "AUTO"], [0.07195358723402023, 83.33333333333331, "LINEAR", "AUTO"], [0.07195358723402023, 1200.0, "LINEAR", "AUTO"], [0.10388392210006714, 83.33333333333326, "LINEAR", "AUTO"]]}}}}, "offset": {"Cylinder": [-0.0010489225387573242, 0.10388392210006714, 0.07426249980926514], "Grip": [0.0, -1.8214237229585706e-08, -0.0], "Hammer": [0.00012800097465515137, 0.1151699647307396, 0.1478099822998047]}} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/weapons/animations/spas12.json b/src/main/resources/assets/hbm/models/weapons/animations/spas12.json index f54a77a32..2545eff3c 100644 --- a/src/main/resources/assets/hbm/models/weapons/animations/spas12.json +++ b/src/main/resources/assets/hbm/models/weapons/animations/spas12.json @@ -1 +1 @@ -{"anim": {"Fire": {"MainBody": {"location": {"z": [[-0.0, 0.0], [0.7581773996353149, 16.666666666666668], [0.8946337699890137, 50.0], [1.6292921304702759, 50.0], [0.27919262647628784, 383.3333333333333], [0.13398613035678864, 33.33333333333337], [-0.08360463380813599, 83.33333333333337], [-0.28197288513183594, 116.66666666666652], [-0.4585123360157013, 83.33333333333337], [-0.0, 216.66666666666663]], "y": [[0.0, 0.0], [-0.055255696177482605, 16.666666666666668], [0.06926095485687256, 50.0], [-0.035571567714214325, 50.0], [0.14532151818275452, 383.3333333333333], [0.14532163739204407, 33.33333333333337], [0.2893771231174469, 83.33333333333337], [0.059010088443756104, 116.66666666666652], [0.3883959650993347, 83.33333333333337], [0.0, 216.66666666666663]], "x": [[0.0, 0.0], [0.09942026436328888, 16.666666666666668], [-0.04042813181877136, 50.0], [0.13011114299297333, 50.0], [0.026651103049516678, 383.3333333333333], [0.0, 33.33333333333337], [-0.11603647470474243, 83.33333333333337], [-0.3945091962814331, 116.66666666666652], [-0.30177658796310425, 83.33333333333337], [0.0, 216.66666666666663]]}, "rotation_euler": {"x": [[0.0, 0.0], [-8.462898079780109, 16.666666666666668], [19.266058025827537, 83.33333333333333], [1.500494163239071, 233.33333333333331], [6.633028929431163, 216.66666666666669], [8.546770241466927, 100.0], [12.210589580193902, 133.33333333333337], [7.617799627548077, 66.66666666666663], [0.539266273417544, 116.66666666666663], [0.0, 33.33333333333337]], "z": [[-0.0, 0.0], [-2.3773901342652737, 16.666666666666668], [-0.0, 316.66666666666663], [-0.0, 216.66666666666669], [-2.5606105990811003, 100.0], [-8.612766944322175, 133.33333333333337], [-9.193280943580838, 66.66666666666663], [-1.0644272457036594, 116.66666666666663], [-0.0, 33.33333333333337]], "y": [[0.0, 0.0], [-2.661507434160998, 16.666666666666668], [-0.0, 316.66666666666663], [0.0, 216.66666666666669], [5.899426058323597, 100.0], [-1.813550761204728, 133.33333333333337], [-5.824772090695357, 66.66666666666663], [-0.9415905623492115, 116.66666666666663], [0.0, 33.33333333333337]]}}, "PumpGrip": {"location": {"z": [[-0.0, 0.0], [-0.0, 550.0], [1.3243759870529175, 100.0], [1.0643759965896606, 216.66666666666674], [-0.0, 66.66666666666663]]}}}, "FireAlt": {"MainBody": {"location": {"x": [[0.0, 0.0], [0.0, 216.66666666666669], [0.0, 499.99999999999994], [-0.11603647470474243, 66.66666666666674], [-0.3945091962814331, 83.33333333333337], [-0.30177658796310425, 83.33333333333326], [0.0, 233.33333333333326]], "z": [[-0.0, 0.0], [1.8780767917633057, 33.333333333333336], [0.46677228808403015, 183.33333333333334], [0.13398613035678864, 499.99999999999994], [-0.08360463380813599, 66.66666666666674], [-0.28197288513183594, 83.33333333333337], [-0.4585123360157013, 83.33333333333326], [-0.0, 233.33333333333326]], "y": [[0.0, 0.0], [0.7429239749908447, 50.0], [1.0745543241500854, 166.66666666666669], [0.14532163739204407, 499.99999999999994], [0.2893771231174469, 66.66666666666674], [0.059010088443756104, 83.33333333333337], [0.3883959650993347, 83.33333333333326], [0.0, 233.33333333333326]]}, "rotation_euler": {"x": [[0.0, 0.0], [0.0, 16.666666666666668], [22.4874603988034, 100.0], [13.903672239582296, 66.66666666666664], [6.633028929431163, 83.33333333333337], [8.546770241466927, 550.0], [12.210589580193902, 100.0], [7.269988465764457, 66.66666666666663], [0.0, 150.0]], "z": [[-0.0, 0.0], [-11.095223957599051, 116.66666666666667], [-0.0, 150.0], [-2.5606105990811003, 550.0], [-8.612766944322175, 100.0], [-12.303416119882606, 66.66666666666663], [-0.0, 150.0]], "y": [[0.0, 0.0], [-2.9238404860292015, 116.66666666666667], [0.0, 150.0], [5.899426058323597, 550.0], [-1.813550761204728, 100.0], [-6.207043691275808, 66.66666666666663], [0.0, 150.0]]}}, "PumpGrip": {"location": {"z": [[-0.0, 0.0], [-0.0, 816.6666666666666], [1.3243759870529175, 100.0], [1.0643759965896606, 216.66666666666663], [-0.0, 66.66666666666674]]}}}, "Reload": {"MainBody": {"location": {"x": [[-0.7295733690261841, 0.0], [-0.7295733690261841, 83.33333333333333], [-0.7295733690261841, 99.99999999999999], [-0.5556169748306274, 133.33333333333331], [-0.6492857933044434, 116.66666666666674], [-0.7295733690261841, 100.0]], "z": [[-0.29214829206466675, 0.0], [-0.29214829206466675, 83.33333333333333], [-0.29214829206466675, 99.99999999999999], [-0.30703651905059814, 133.33333333333331], [-0.29901978373527527, 116.66666666666674], [-0.29214829206466675, 100.0]], "y": [[0.2915276288986206, 0.0], [0.2915276288986206, 83.33333333333333], [0.2915276288986206, 99.99999999999999], [0.4859994053840637, 133.33333333333331], [0.38128381967544556, 116.66666666666674], [0.2915276288986206, 100.0]]}, "rotation_euler": {"x": [[2.2122143889063857, 0.0], [1.6652197564429725, 83.33333333333333], [2.2122143889063857, 133.33333333333337], [9.618481563755287, 116.66666666666663], [5.616534990827301, 100.00000000000006], [2.2122143889063857, 100.0]], "z": [[-48.21786729477217, 0.0], [-45.59814140842461, 83.33333333333333], [-48.21786729477217, 133.33333333333337], [-53.60401787046082, 116.66666666666663], [-50.637738430910574, 100.00000000000006], [-48.21786729477217, 100.0]], "y": [[27.10300512666912, 0.0], [27.402903365198746, 83.33333333333333], [27.10300512666912, 133.33333333333337], [28.044826741511347, 116.66666666666663], [27.549100149288286, 100.00000000000006], [27.10300512666912, 100.0]]}}, "Shell": {"location": {"x": [[0.0, 0.0], [-5.029141902923584e-08, 133.33333333333334], [0.004309347365051508, 83.33333333333334], [0.004309249576181173, 83.33333333333331], [0.004309284035116434, 50.0]], "z": [[1.5591249465942383, 0.0], [1.0179417133331299, 133.33333333333334], [-0.1231224536895752, 83.33333333333334], [-0.11966821551322937, 83.33333333333331], [-0.12080879509449005, 50.0]], "y": [[-2.6872029304504395, 0.0], [-2.3433218002319336, 133.33333333333334], [-1.7275460958480835, 83.33333333333334], [-0.3831302523612976, 83.33333333333331], [-0.2624862790107727, 50.0]]}, "rotation_euler": {"x": [[0.0, 0.0], [0.0, 133.33333333333334], [21.14787588745631, 83.33333333333334], [0.40499606683590605, 83.33333333333331], [0.40499606683590605, 50.0]], "z": [[-0.0, 0.0], [-0.0, 133.33333333333334], [-0.0, 83.33333333333334], [-1.0271807443729786e-06, 83.33333333333331], [-1.0271807443729786e-06, 50.0]], "y": [[0.0, 0.0], [0.0, 133.33333333333334], [-1.9209907040660864e-06, 83.33333333333334], [-4.784677867278997e-06, 83.33333333333331], [-4.784677867278997e-06, 50.0]]}}}, "ReloadEmptyStart": {"MainBody": {"location": {"x": [[0.0, 0.0], [-0.3959049880504608, 100.0], [-0.8907862305641174, 50.0], [-0.912574291229248, 133.33333333333331], [-0.8907862305641174, 183.33333333333337], [-0.7295733690261841, 333.3333333333333]], "z": [[-0.0, 0.0], [-0.04771782457828522, 100.0], [-0.10736510902643204, 50.0], [-0.1299014389514923, 133.33333333333331], [-0.10736510902643204, 183.33333333333337], [-0.29214829206466675, 333.3333333333333]], "y": [[0.0, 0.0], [0.08693332225084305, 100.0], [0.1955999732017517, 50.0], [0.07320505380630493, 133.33333333333331], [0.1955999732017517, 183.33333333333337], [0.2915276288986206, 333.3333333333333]]}, "rotation_euler": {"x": [[0.0, 0.0], [5.215149959628216, 116.66666666666667], [14.341662388977594, 66.66666666666664], [10.053024175167023, 150.0], [14.341662388977594, 183.33333333333331], [9.347183888601442, 83.33333333333337], [3.4013761500584048, 133.33333333333326], [2.2122143889063857, 66.66666666666674]], "z": [[-0.0, 0.0], [17.232944643893813, 116.66666666666667], [47.39059819759481, 66.66666666666664], [51.027851515545024, 150.0], [47.39059819759481, 183.33333333333331], [8.022402104733061, 83.33333333333337], [-38.844487923156436, 133.33333333333326], [-48.21786729477217, 66.66666666666674]], "y": [[0.0, 0.0], [-3.394506473857253, 116.66666666666667], [-9.334892963190004, 66.66666666666664], [-8.375116488567105, 150.0], [-9.334892963190004, 183.33333333333331], [5.668946020536571, 83.33333333333337], [23.530662511496125, 133.33333333333326], [27.10300512666912, 66.66666666666674]]}}, "PumpGrip": {"location": {"z": [[-0.0, 0.0], [-0.0, 183.33333333333331], [1.0550689697265625, 66.66666666666669], [1.0550689697265625, 166.66666666666669], [-0.0, 99.99999999999994]]}}, "Shell": {"location": {"x": [[1.089231252670288, 0.0], [0.8341609239578247, 150.0], [1.3178642988204956, 100.0], [1.0271152257919312, 33.333333333333314], [0.0, 66.66666666666669]], "z": [[1.2379006147384644, 0.0], [1.0393552780151367, 150.0], [1.1692359447479248, 100.0], [0.8952870965003967, 33.333333333333314], [-0.0, 66.66666666666669]], "y": [[-2.3190526962280273, 0.0], [-3.043679714202881, 150.0], [0.42155078053474426, 100.0], [0.3692183494567871, 33.333333333333314], [0.0, 66.66666666666669]]}, "rotation_euler": {"x": [[0.0, 0.0], [0.0, 150.0], [-4.686586806083493, 100.0], [-4.686586806083493, 33.333333333333314], [0.0, 66.66666666666669]], "z": [[-0.0, 0.0], [-0.0, 150.0], [-0.5807879005165506, 100.0], [-0.5807879005165506, 33.333333333333314], [-0.0, 66.66666666666669]], "y": [[0.0, 0.0], [0.0, 150.0], [15.393064143768921, 100.0], [15.393064143768921, 33.333333333333314], [0.0, 66.66666666666669]]}}}, "ReloadEnd": {"MainBody": {"location": {"x": [[-0.7295733690261841, 0.0], [-0.5471799969673157, 166.66666666666666], [-0.15633714199066162, 100.00000000000003], [0.0, 150.0]], "z": [[-0.29214829206466675, 0.0], [-0.21911121904850006, 166.66666666666666], [-0.06260320544242859, 100.00000000000003], [-0.0, 150.0]], "y": [[0.2915276288986206, 0.0], [0.21864572167396545, 166.66666666666666], [0.0624702125787735, 100.00000000000003], [0.0, 150.0]]}, "rotation_euler": {"x": [[2.2122143889063857, 0.0], [1.6591607383189364, 166.66666666666666], [0.47404597097185575, 100.00000000000003], [0.0, 150.0]], "z": [[-48.21786729477217, 0.0], [-36.16339961730548, 166.66666666666666], [-10.332401110335347, 100.00000000000003], [-0.0, 150.0]], "y": [[27.10300512666912, 0.0], [20.327254271888663, 166.66666666666666], [5.807786690890005, 100.00000000000003], [0.0, 150.0]]}}}, "ReloadStart": {"MainBody": {"location": {"x": [[0.0, 0.0], [-0.7295733690261841, 166.66666666666666], [-0.7152981162071228, 50.00000000000003], [-0.7095879912376404, 66.66666666666663], [-0.7295733690261841, 116.66666666666669]], "z": [[-0.0, 0.0], [-0.29214829206466675, 166.66666666666666], [-0.28362342715263367, 50.00000000000003], [-0.28021347522735596, 66.66666666666663], [-0.29214829206466675, 116.66666666666669]], "y": [[0.0, 0.0], [0.2915276288986206, 166.66666666666666], [0.4171614646911621, 50.00000000000003], [0.4674150049686432, 66.66666666666663], [0.2915276288986206, 116.66666666666669]]}, "rotation_euler": {"x": [[0.0, 0.0], [2.2122143889063857, 166.66666666666666], [5.485797059263618, 50.00000000000003], [6.795230554293333, 66.66666666666663], [2.2122143889063857, 116.66666666666669]], "z": [[-0.0, 0.0], [-48.21786729477217, 166.66666666666666], [-50.902555110315724, 50.00000000000003], [-51.976428187476394, 66.66666666666663], [-48.21786729477217, 116.66666666666669]], "y": [[0.0, 0.0], [27.10300512666912, 166.66666666666666], [26.843731145775436, 50.00000000000003], [26.74002155341796, 66.66666666666663], [27.10300512666912, 116.66666666666669]]}}, "Shell": {"location": {"x": [[0.0, 0.0], [1.2852251529693604e-07, 133.33333333333334], [0.0, 83.33333333333334], [0.004309284035116434, 83.33333333333331], [0.004309284035116434, 50.0]], "z": [[-0.0, 0.0], [0.8857776522636414, 133.33333333333334], [-0.0984112098813057, 83.33333333333334], [-0.2392037808895111, 83.33333333333331], [-0.12080879509449005, 50.0]], "y": [[-2.806074380874634, 0.0], [-2.2905659675598145, 133.33333333333334], [-1.7331905364990234, 83.33333333333334], [-0.3817155361175537, 83.33333333333331], [-0.2624862790107727, 50.0]]}, "rotation_euler": {"x": [[0.0, 0.0], [0.0, 133.33333333333334], [21.14787588745631, 83.33333333333334], [0.40499606683590605, 83.33333333333331], [0.40499606683590605, 50.0]], "z": [[-0.0, 0.0], [-0.0, 133.33333333333334], [-0.0, 83.33333333333334], [-1.0271807443729786e-06, 83.33333333333331], [-1.0271807443729786e-06, 50.0]], "y": [[0.0, 0.0], [0.0, 133.33333333333334], [-1.9209907040660864e-06, 83.33333333333334], [-4.784677867278997e-06, 83.33333333333331], [-4.784677867278997e-06, 50.0]]}}}}, "offset": {}} \ No newline at end of file +{"anim": {"Fire": {"MainBody": {"location": {"z": [[-0.0, 0.0, "BEZIER", "AUTO", 5.555555721124013, -0.0, "AUTO_CLAMPED"], [0.7581773996353149, 16.666666666666668, "BEZIER", "AUTO", 11.11111044883728, 0.7126919627189636, "AUTO_CLAMPED", 33.333333333333336, 0.8946337699890137, "AUTO_CLAMPED"], [0.8946337699890137, 50.0, "BEZIER", "AUTO", 50.0, 0.7581773996353149, "AUTO_CLAMPED", 83.33333333333333, 1.0310901403427124, "AUTO_CLAMPED"], [1.6292921304702759, 50.0, "BEZIER", "AUTO", 100.0, 1.6292921304702759, "AUTO_CLAMPED", 244.44443384806314, 1.6292921304702759, "AUTO_CLAMPED"], [0.27919262647628784, 383.3333333333333, "BEZIER", "AUTO", 372.2222328186035, 0.8619835376739502, "AUTO_CLAMPED", 511.11110051472986, 0.2285151481628418, "AUTO_CLAMPED"], [0.13398613035678864, 33.33333333333337, "BEZIER", "AUTO", 522.2222328186035, 0.1792329102754593, "AUTO_CLAMPED", 555.555534362793, 0.043492577970027924, "AUTO_CLAMPED"], [-0.08360463380813599, 66.66666666666663, "BEZIER", "AUTO", 577.7777989705404, -0.030859101563692093, "AUTO_CLAMPED", 638.8888676961263, -0.17590931057929993, "AUTO_CLAMPED"], [-0.28197288513183594, 116.66666666666663, "BEZIER", "AUTO", 677.7777989705404, -0.20204517245292664, "AUTO_CLAMPED", 750.0, -0.35048234462738037, "AUTO_CLAMPED"], [-0.4585123360157013, 100.0, "BEZIER", "AUTO", 783.3333333333334, -0.4585123360157013, "AUTO_CLAMPED", 905.5555343627929, -0.4585123360157013, "AUTO_CLAMPED"], [-0.0, 266.66666666666663, "BEZIER", "AUTO", 994.444465637207, -0.0, "AUTO_CLAMPED", 1172.2222646077473, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [-0.055255696177482605, 16.666666666666668, "BEZIER", "AUTO", 11.11111044883728, -0.055255696177482605, "AUTO_CLAMPED", 33.333333333333336, -0.055255696177482605, "AUTO_CLAMPED"], [0.06926095485687256, 50.0, "BEZIER", "AUTO", 50.0, 0.06926095485687256, "AUTO_CLAMPED", 83.33333333333333, 0.06926095485687256, "AUTO_CLAMPED"], [-0.035571567714214325, 50.0, "BEZIER", "AUTO", 100.0, -0.035571567714214325, "AUTO_CLAMPED", 244.44443384806314, -0.035571567714214325, "AUTO_CLAMPED"], [0.14532151818275452, 383.3333333333333, "BEZIER", "AUTO", 372.2222328186035, 0.14532014727592468, "AUTO_CLAMPED", 511.11110051472986, 0.14532163739204407, "AUTO_CLAMPED"], [0.14532163739204407, 33.33333333333337, "BEZIER", "AUTO", 522.2222328186035, 0.14532151818275452, "AUTO_CLAMPED", 555.555534362793, 0.14532187581062317, "AUTO_CLAMPED"], [0.2893771231174469, 66.66666666666663, "BEZIER", "AUTO", 577.7777989705404, 0.2893771231174469, "AUTO_CLAMPED", 638.8888676961263, 0.2893771231174469, "AUTO_CLAMPED"], [0.059010088443756104, 116.66666666666663, "BEZIER", "AUTO", 677.7777989705404, 0.059010088443756104, "AUTO_CLAMPED", 750.0, 0.059010088443756104, "AUTO_CLAMPED"], [0.3883959650993347, 100.0, "BEZIER", "AUTO", 783.3333333333334, 0.3883959650993347, "AUTO_CLAMPED", 905.5555343627929, 0.3883959650993347, "AUTO_CLAMPED"], [0.0, 266.66666666666663, "BEZIER", "AUTO", 994.444465637207, 0.0, "AUTO_CLAMPED", 1172.2222646077473, 0.0, "AUTO_CLAMPED"]], "x": [[0.0, 0.0, "BEZIER", "AUTO", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [0.09942026436328888, 16.666666666666668, "BEZIER", "AUTO", 11.11111044883728, 0.09942026436328888, "AUTO_CLAMPED", 33.333333333333336, 0.09942026436328888, "AUTO_CLAMPED"], [-0.04042813181877136, 50.0, "BEZIER", "AUTO", 50.0, -0.04042813181877136, "AUTO_CLAMPED", 83.33333333333333, -0.04042813181877136, "AUTO_CLAMPED"], [0.13011114299297333, 50.0, "BEZIER", "AUTO", 100.0, 0.13011114299297333, "AUTO_CLAMPED", 244.44443384806314, 0.13011114299297333, "AUTO_CLAMPED"], [0.026651103049516678, 383.3333333333333, "BEZIER", "AUTO", 372.2222328186035, 0.11272260546684265, "AUTO_CLAMPED", 511.11110051472986, 0.019166624173521996, "AUTO_CLAMPED"], [0.0, 33.33333333333337, "BEZIER", "AUTO", 522.2222328186035, 0.011162804439663887, "AUTO_CLAMPED", 555.555534362793, -0.022325608879327774, "AUTO_CLAMPED"], [-0.11603647470474243, 66.66666666666663, "BEZIER", "AUTO", 577.7777989705404, -0.05728715658187866, "AUTO_CLAMPED", 638.8888676961263, -0.21884778141975403, "AUTO_CLAMPED"], [-0.3945091962814331, 116.66666666666663, "BEZIER", "AUTO", 677.7777989705404, -0.3945091962814331, "AUTO_CLAMPED", 750.0, -0.3945091962814331, "AUTO_CLAMPED"], [-0.30177658796310425, 100.0, "BEZIER", "AUTO", 783.3333333333334, -0.35092929005622864, "AUTO_CLAMPED", 905.5555343627929, -0.1707027107477188, "AUTO_CLAMPED"], [0.0, 266.66666666666663, "BEZIER", "AUTO", 994.444465637207, 0.0, "AUTO_CLAMPED", 1172.2222646077473, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [-8.462898079780109, 16.666666666666668, "BEZIER", "AUTO", 11.11111044883728, -8.462898079780109, "AUTO_CLAMPED", 44.44444179534912, -8.462898079780109, "AUTO_CLAMPED"], [11.626710005221716, 83.33333333333333, "BEZIER", "AUTO", 72.22222487131755, 11.626710005221716, "AUTO_CLAMPED", 177.77776718139648, 11.626710005221716, "AUTO_CLAMPED"], [1.500494163239071, 233.33333333333331, "BEZIER", "AUTO", 255.55556615193686, 1.500494163239071, "AUTO_CLAMPED", 405.55556615193683, 1.500494163239071, "AUTO_CLAMPED"], [6.633028929431163, 216.66666666666669, "BEZIER", "AUTO", 477.7777671813965, 4.961353790448882, "AUTO_CLAMPED", 577.7777989705404, 7.275981102987497, "AUTO_CLAMPED"], [8.391754829385256, 83.33333333333326, "BEZIER", "AUTO", 605.555534362793, 7.6542608848848985, "AUTO_CLAMPED", 683.3333333333334, 9.719244783259548, "AUTO_CLAMPED"], [12.210589580193902, 150.0000000000001, "BEZIER", "AUTO", 733.3333333333333, 12.210589580193902, "AUTO_CLAMPED", 805.555534362793, 12.210589580193902, "AUTO_CLAMPED"], [7.617799627548077, 66.66666666666663, "BEZIER", "AUTO", 827.7777989705404, 9.69863554121268, "AUTO_CLAMPED", 888.8888676961263, 3.976336778635024, "AUTO_CLAMPED"], [0.539266273417544, 116.66666666666663, "BEZIER", "AUTO", 927.7777989705404, 1.6551651843761848, "AUTO_CLAMPED", 977.7777989705404, 0.22043800552066753, "AUTO_CLAMPED"], [0.0, 33.33333333333337, "BEZIER", "AUTO", 988.8888676961262, 0.0, "AUTO_CLAMPED", 1011.1111323038738, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 5.555555721124013, -0.0, "AUTO_CLAMPED"], [-2.3773901342652737, 16.666666666666668, "BEZIER", "AUTO", 11.11111044883728, -2.3773901342652737, "AUTO_CLAMPED", 122.22222487131755, -2.3773901342652737, "AUTO_CLAMPED"], [-0.0, 316.66666666666663, "BEZIER", "AUTO", 227.77776718139648, -0.0, "AUTO_CLAMPED", 405.55556615193683, -0.0, "AUTO_CLAMPED"], [-0.0, 216.66666666666669, "BEZIER", "AUTO", 477.7777671813965, -0.0, "AUTO_CLAMPED", 577.7777989705404, -0.0, "AUTO_CLAMPED"], [-2.549341854167637, 83.33333333333326, "BEZIER", "AUTO", 605.555534362793, -1.2295183607498625, "AUTO_CLAMPED", 683.3333333333334, -4.925024014253585, "AUTO_CLAMPED"], [-8.612766944322175, 150.0000000000001, "BEZIER", "AUTO", 733.3333333333333, -7.593291201258779, "AUTO_CLAMPED", 805.555534362793, -9.065867179708835, "AUTO_CLAMPED"], [-9.193280943580838, 66.66666666666663, "BEZIER", "AUTO", 827.7777989705404, -9.193280943580838, "AUTO_CLAMPED", 888.8888676961263, -9.193280943580838, "AUTO_CLAMPED"], [-1.0644272457036594, 116.66666666666663, "BEZIER", "AUTO", 927.7777989705404, -3.4164384247255755, "AUTO_CLAMPED", 977.7777989705404, -0.3924239830905869, "AUTO_CLAMPED"], [-0.0, 33.33333333333337, "BEZIER", "AUTO", 988.8888676961262, -0.0, "AUTO_CLAMPED", 1011.1111323038738, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [-2.661507434160998, 16.666666666666668, "BEZIER", "AUTO", 11.11111044883728, -2.661507434160998, "AUTO_CLAMPED", 122.22222487131755, -2.661507434160998, "AUTO_CLAMPED"], [-0.0, 316.66666666666663, "BEZIER", "AUTO", 227.77776718139648, -0.0, "AUTO_CLAMPED", 405.55556615193683, -0.0, "AUTO_CLAMPED"], [0.0, 216.66666666666669, "BEZIER", "AUTO", 477.7777671813965, 0.0, "AUTO_CLAMPED", 577.7777989705404, 0.0, "AUTO_CLAMPED"], [2.434119977964107, 83.33333333333326, "BEZIER", "AUTO", 605.555534362793, 2.434119977964107, "AUTO_CLAMPED", 683.3333333333334, 2.434119977964107, "AUTO_CLAMPED"], [-1.813550761204728, 150.0000000000001, "BEZIER", "AUTO", 733.3333333333333, 1.9640603828683056, "AUTO_CLAMPED", 805.555534362793, -3.4924891660390824, "AUTO_CLAMPED"], [-5.824772090695357, 66.66666666666663, "BEZIER", "AUTO", 827.7777989705404, -5.824772090695357, "AUTO_CLAMPED", 888.8888676961263, -5.824772090695357, "AUTO_CLAMPED"], [-0.9415905623492115, 116.66666666666663, "BEZIER", "AUTO", 927.7777989705404, -2.7657766751435897, "AUTO_CLAMPED", 977.7777989705404, -0.42039451487628826, "AUTO_CLAMPED"], [0.0, 33.33333333333337, "BEZIER", "AUTO", 988.8888676961262, 0.0, "AUTO_CLAMPED", 1011.1111323038738, 0.0, "AUTO_CLAMPED"]]}}, "PumpGrip": {"location": {"z": [[-0.0, 0.0, "LINEAR", "AUTO"], [-0.0, 550.0, "BEZIER", "AUTO", 583.3333333333334, -0.0, "AUTO_CLAMPED"], [1.3243759870529175, 100.0, "BEZIER", "AUTO", 616.6666666666667, 1.3243759870529175, "AUTO_CLAMPED", 722.2222010294597, 1.3243759870529175, "AUTO_CLAMPED"], [1.0643759965896606, 216.66666666666674, "BEZIER", "AUTO", 794.444465637207, 1.3243759870529175, "AUTO_CLAMPED", 888.8888676961263, 0.9843760132789612, "AUTO_CLAMPED"], [-0.0, 66.66666666666663, "BEZIER", "AUTO", 911.1111323038737, -0.0, "AUTO_CLAMPED", 955.555534362793, -0.0, "AUTO_CLAMPED"]]}}}, "FireAlt": {"MainBody": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 72.22222487131755, 0.0, "AUTO_CLAMPED"], [0.0, 216.66666666666669, "BEZIER", "AUTO", 144.44443384806317, 0.0, "AUTO_CLAMPED", 383.3333333333333, 0.0, "AUTO_CLAMPED"], [0.0, 499.99999999999994, "BEZIER", "AUTO", 550.0, 0.0, "AUTO_CLAMPED", 738.8888676961262, 0.0, "AUTO_CLAMPED"], [-0.11603647470474243, 66.66666666666674, "BEZIER", "AUTO", 761.1111323038738, -0.03429786115884781, "AUTO_CLAMPED", 811.1111323038737, -0.21820974349975586, "AUTO_CLAMPED"], [-0.3945091962814331, 83.33333333333337, "BEZIER", "AUTO", 838.8888676961262, -0.3945091962814331, "AUTO_CLAMPED", 894.444465637207, -0.3945091962814331, "AUTO_CLAMPED"], [-0.30177658796310425, 83.33333333333326, "BEZIER", "AUTO", 922.2222010294596, -0.34912535548210144, "AUTO_CLAMPED", 1033.3333333333333, -0.15973030030727386, "AUTO_CLAMPED"], [0.0, 250.0, "BEZIER", "AUTO", 1116.6666666666667, 0.0, "AUTO_CLAMPED", 1283.3333333333333, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 11.111111442248026, -0.0, "AUTO_CLAMPED"], [1.8780767917633057, 33.333333333333336, "BEZIER", "AUTO", 22.22222089767456, 1.8780767917633057, "AUTO_CLAMPED", 94.44444974263509, 1.8780767917633057, "AUTO_CLAMPED"], [0.46677228808403015, 183.33333333333334, "BEZIER", "AUTO", 155.5555502573649, 0.5887938737869263, "AUTO_CLAMPED", 383.3333333333333, 0.13398614525794983, "AUTO_CLAMPED"], [0.13398613035678864, 499.99999999999994, "BEZIER", "AUTO", 550.0, 0.46677225828170776, "AUTO_CLAMPED", 738.8888676961262, 0.08961464464664459, "AUTO_CLAMPED"], [-0.08360463380813599, 66.66666666666674, "BEZIER", "AUTO", 761.1111323038738, -0.01296059787273407, "AUTO_CLAMPED", 811.1111323038737, -0.17190967500209808, "AUTO_CLAMPED"], [-0.28197288513183594, 83.33333333333337, "BEZIER", "AUTO", 838.8888676961262, -0.21032220125198364, "AUTO_CLAMPED", 894.444465637207, -0.35362356901168823, "AUTO_CLAMPED"], [-0.4585123360157013, 83.33333333333326, "BEZIER", "AUTO", 922.2222010294596, -0.4585123360157013, "AUTO_CLAMPED", 1033.3333333333333, -0.4585123360157013, "AUTO_CLAMPED"], [-0.0, 250.0, "BEZIER", "AUTO", 1116.6666666666667, -0.0, "AUTO_CLAMPED", 1283.3333333333333, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 16.666666666666668, 0.0, "AUTO_CLAMPED"], [0.7429239749908447, 50.0, "BEZIER", "AUTO", 33.333333333333336, 0.6434348821640015, "AUTO_CLAMPED", 105.5555502573649, 1.0745543241500854, "AUTO_CLAMPED"], [1.0745543241500854, 166.66666666666669, "BEZIER", "AUTO", 161.11111640930176, 1.0745543241500854, "AUTO_CLAMPED", 383.3333333333333, 1.0745543241500854, "AUTO_CLAMPED"], [0.14532163739204407, 499.99999999999994, "BEZIER", "AUTO", 550.0, 0.14532163739204407, "AUTO_CLAMPED", 738.8888676961262, 0.14532163739204407, "AUTO_CLAMPED"], [0.2893771231174469, 66.66666666666674, "BEZIER", "AUTO", 761.1111323038738, 0.2893771231174469, "AUTO_CLAMPED", 811.1111323038737, 0.2893771231174469, "AUTO_CLAMPED"], [0.059010088443756104, 83.33333333333337, "BEZIER", "AUTO", 838.8888676961262, 0.059010088443756104, "AUTO_CLAMPED", 894.444465637207, 0.059010088443756104, "AUTO_CLAMPED"], [0.3883959650993347, 83.33333333333326, "BEZIER", "AUTO", 922.2222010294596, 0.3883959650993347, "AUTO_CLAMPED", 1033.3333333333333, 0.3883959650993347, "AUTO_CLAMPED"], [0.0, 250.0, "BEZIER", "AUTO", 1116.6666666666667, 0.0, "AUTO_CLAMPED", 1283.3333333333333, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [0.0, 16.666666666666668, "BEZIER", "AUTO", 11.11111044883728, 0.0, "AUTO_CLAMPED", 55.555554231007896, 0.0, "AUTO_CLAMPED"], [17.70531540425002, 116.66666666666667, "BEZIER", "AUTO", 94.44444974263509, 17.70531540425002, "AUTO_CLAMPED", 150.0, 17.70531540425002, "AUTO_CLAMPED"], [13.903672239582296, 49.99999999999997, "BEZIER", "AUTO", 166.66666666666666, 15.701645260280928, "AUTO_CLAMPED", 222.22221692403158, 9.70840015040486, "AUTO_CLAMPED"], [6.633028929431163, 116.66666666666669, "BEZIER", "AUTO", 261.11111640930176, 6.633028929431163, "AUTO_CLAMPED", 472.2222010294596, 6.633028929431163, "AUTO_CLAMPED"], [8.546770241466927, 516.6666666666666, "BEZIER", "AUTO", 644.444465637207, 6.633028929431163, "AUTO_CLAMPED", 850.0, 8.917171400156718, "AUTO_CLAMPED"], [12.210589580193902, 100.0, "BEZIER", "AUTO", 883.3333333333333, 12.210589580193902, "AUTO_CLAMPED", 938.8888676961263, 12.210589580193902, "AUTO_CLAMPED"], [7.269988465764457, 66.66666666666663, "BEZIER", "AUTO", 961.1111323038737, 9.449915910133958, "AUTO_CLAMPED", 1038.8888676961262, 1.8201694279538818, "AUTO_CLAMPED"], [0.0, 166.66666666666674, "BEZIER", "AUTO", 1094.4444020589192, 0.0, "AUTO_CLAMPED", 1205.5555979410808, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, -0.0, "AUTO_CLAMPED"], [-11.299828250602307, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, -11.299828250602307, "AUTO_CLAMPED", 188.88888359069824, -11.299828250602307, "AUTO_CLAMPED"], [-0.0, 166.66666666666666, "BEZIER", "AUTO", 244.4444497426351, -0.0, "AUTO_CLAMPED", 472.2222010294596, -0.0, "AUTO_CLAMPED"], [-2.5606105990811003, 516.6666666666666, "BEZIER", "AUTO", 644.444465637207, -0.0, "AUTO_CLAMPED", 850.0, -3.0562125403518103, "AUTO_CLAMPED"], [-8.612766944322175, 100.0, "BEZIER", "AUTO", 883.3333333333333, -5.840664660233507, "AUTO_CLAMPED", 938.8888676961263, -10.46083513371462, "AUTO_CLAMPED"], [-12.303416119882606, 66.66666666666663, "BEZIER", "AUTO", 961.1111323038737, -12.303416119882606, "AUTO_CLAMPED", 1038.8888676961262, -12.303416119882606, "AUTO_CLAMPED"], [-0.0, 166.66666666666674, "BEZIER", "AUTO", 1094.4444020589192, -0.0, "AUTO_CLAMPED", 1205.5555979410808, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, 0.0, "AUTO_CLAMPED"], [-1.977470392086568, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, -1.977470392086568, "AUTO_CLAMPED", 188.88888359069824, -1.977470392086568, "AUTO_CLAMPED"], [0.0, 166.66666666666666, "BEZIER", "AUTO", 244.4444497426351, -0.9796583015231601, "AUTO_CLAMPED", 472.2222010294596, 3.0369407347217963, "AUTO_CLAMPED"], [5.899426058323597, 516.6666666666666, "BEZIER", "AUTO", 644.444465637207, 5.899426058323597, "AUTO_CLAMPED", 850.0, 5.899426058323597, "AUTO_CLAMPED"], [-1.813550761204728, 100.0, "BEZIER", "AUTO", 883.3333333333333, 1.7061153006550123, "AUTO_CLAMPED", 938.8888676961263, -4.159995015887966, "AUTO_CLAMPED"], [-6.207043691275808, 66.66666666666663, "BEZIER", "AUTO", 961.1111323038737, -6.207043691275808, "AUTO_CLAMPED", 1038.8888676961262, -6.207043691275808, "AUTO_CLAMPED"], [0.0, 166.66666666666674, "BEZIER", "AUTO", 1094.4444020589192, 0.0, "AUTO_CLAMPED", 1205.5555979410808, 0.0, "AUTO_CLAMPED"]]}}, "PumpGrip": {"location": {"z": [[-0.0, 0.0, "LINEAR", "AUTO"], [-0.0, 816.6666666666666, "BEZIER", "AUTO", 850.0, -0.0, "AUTO_CLAMPED"], [1.3243759870529175, 100.0, "BEZIER", "AUTO", 883.3333333333333, 1.3243759870529175, "AUTO_CLAMPED", 988.8888676961262, 1.3243759870529175, "AUTO_CLAMPED"], [1.0643759965896606, 216.66666666666663, "BEZIER", "AUTO", 1061.1111323038738, 1.3243759870529175, "AUTO_CLAMPED", 1155.5555979410808, 0.9843760132789612, "AUTO_CLAMPED"], [-0.0, 66.66666666666674, "LINEAR", "AUTO", 1177.7777353922525, -0.0, "AUTO_CLAMPED"]]}}}, "FireDry": {"MainBody": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 83.33333333333333, 0.0, "AUTO_CLAMPED"], [0.0, 250.0, "BEZIER", "AUTO", 166.66666666666666, 0.0, "AUTO_CLAMPED", 327.7777671813965, 0.0, "AUTO_CLAMPED"], [-0.14821384847164154, 233.33333333333331, "BEZIER", "AUTO", 405.55556615193683, -0.10107992589473724, "AUTO_CLAMPED", 533.3333333333334, -0.17851422727108002, "AUTO_CLAMPED"], [-0.18652059137821198, 149.99999999999994, "BEZIER", "AUTO", 583.3333333333334, -0.18652059137821198, "AUTO_CLAMPED", 694.444465637207, -0.18652059137821198, "AUTO_CLAMPED"], [-0.1720721423625946, 183.33333333333337, "BEZIER", "AUTO", 755.555534362793, -0.1720721423625946, "AUTO_CLAMPED", 850.0, -0.1720721423625946, "AUTO_CLAMPED"], [-0.21047449111938477, 100.0, "BEZIER", "AUTO", 883.3333333333333, -0.21047449111938477, "AUTO_CLAMPED", 961.1111323038737, -0.21047449111938477, "AUTO_CLAMPED"], [-0.16133126616477966, 133.33333333333337, "BEZIER", "AUTO", 1005.5555343627929, -0.1923203021287918, "AUTO_CLAMPED", 1133.3333333333333, -0.10322683304548264, "AUTO_CLAMPED"], [0.0, 250.0, "BEZIER", "AUTO", 1216.6666666666665, 0.0, "AUTO_CLAMPED", 1383.3333333333333, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 83.33333333333333, -0.0, "AUTO_CLAMPED"], [-0.0, 250.0, "BEZIER", "AUTO", 166.66666666666666, -0.0, "AUTO_CLAMPED", 327.7777671813965, -0.0, "AUTO_CLAMPED"], [-0.1766490787267685, 233.33333333333331, "BEZIER", "AUTO", 405.55556615193683, -0.08031249046325684, "AUTO_CLAMPED", 533.3333333333334, -0.23857975006103516, "AUTO_CLAMPED"], [-0.3071326017379761, 149.99999999999994, "BEZIER", "AUTO", 583.3333333333334, -0.3071326017379761, "AUTO_CLAMPED", 694.444465637207, -0.3071326017379761, "AUTO_CLAMPED"], [0.25795137882232666, 183.33333333333337, "BEZIER", "AUTO", 755.555534362793, 0.25795137882232666, "AUTO_CLAMPED", 850.0, 0.25795137882232666, "AUTO_CLAMPED"], [0.08236825466156006, 100.0, "BEZIER", "AUTO", 883.3333333333333, 0.15054117143154144, "AUTO_CLAMPED", 961.1111323038737, -0.008528970181941986, "AUTO_CLAMPED"], [-0.02967098355293274, 133.33333333333337, "BEZIER", "AUTO", 1005.5555343627929, -0.02967098355293274, "AUTO_CLAMPED", 1133.3333333333333, -0.02967098355293274, "AUTO_CLAMPED"], [-0.0, 250.0, "BEZIER", "AUTO", 1216.6666666666665, -0.0, "AUTO_CLAMPED", 1383.3333333333333, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 83.33333333333333, 0.0, "AUTO_CLAMPED"], [0.0, 250.0, "BEZIER", "AUTO", 166.66666666666666, 0.0, "AUTO_CLAMPED", 327.7777671813965, 0.0, "AUTO_CLAMPED"], [0.30453160405158997, 233.33333333333331, "BEZIER", "AUTO", 405.55556615193683, 0.30453160405158997, "AUTO_CLAMPED", 533.3333333333334, 0.30453160405158997, "AUTO_CLAMPED"], [-0.02473139762878418, 149.99999999999994, "BEZIER", "AUTO", 583.3333333333334, 0.09544896334409714, "AUTO_CLAMPED", 694.444465637207, -0.1716185063123703, "AUTO_CLAMPED"], [-0.185700923204422, 183.33333333333337, "BEZIER", "AUTO", 755.555534362793, -0.185700923204422, "AUTO_CLAMPED", 850.0, -0.185700923204422, "AUTO_CLAMPED"], [-0.015024490654468536, 100.0, "BEZIER", "AUTO", 883.3333333333333, -0.08966775238513947, "AUTO_CLAMPED", 961.1111323038737, 0.08449985831975937, "AUTO_CLAMPED"], [0.14599764347076416, 133.33333333333337, "BEZIER", "AUTO", 1005.5555343627929, 0.14599764347076416, "AUTO_CLAMPED", 1133.3333333333333, 0.14599764347076416, "AUTO_CLAMPED"], [0.0, 250.0, "BEZIER", "AUTO", 1216.6666666666665, 0.0, "AUTO_CLAMPED", 1383.3333333333333, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 83.33333333333333, 0.0, "AUTO_CLAMPED"], [0.0, 250.0, "BEZIER", "AUTO", 166.66666666666666, 0.0, "AUTO_CLAMPED", 327.7777671813965, 0.0, "AUTO_CLAMPED"], [10.013142700603318, 233.33333333333331, "BEZIER", "AUTO", 405.55556615193683, 10.013142700603318, "AUTO_CLAMPED", 533.3333333333334, 10.013142700603318, "AUTO_CLAMPED"], [8.468210259407087, 149.99999999999994, "BEZIER", "AUTO", 583.3333333333334, 9.67957333701282, "AUTO_CLAMPED", 683.3333333333334, 7.256847181801352, "AUTO_CLAMPED"], [3.8440996205485227, 150.0000000000001, "BEZIER", "AUTO", 733.3333333333333, 5.167689536406736, "AUTO_CLAMPED", 838.8888676961262, 2.3734442059157104, "AUTO_CLAMPED"], [1.3950524775967643, 166.66666666666663, "BEZIER", "AUTO", 894.444465637207, 1.8479337200431605, "AUTO_CLAMPED", 1050.0, 0.5798664653088336, "AUTO_CLAMPED"], [0.0, 300.0, "BEZIER", "AUTO", 1150.0, 0.0, "AUTO_CLAMPED", 1350.0, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 83.33333333333333, -0.0, "AUTO_CLAMPED"], [-0.0, 250.0, "BEZIER", "AUTO", 166.66666666666666, -0.0, "AUTO_CLAMPED", 327.7777671813965, -0.0, "AUTO_CLAMPED"], [-1.0905663796572982, 233.33333333333331, "BEZIER", "AUTO", 405.55556615193683, -1.0905663796572982, "AUTO_CLAMPED", 533.3333333333334, -1.0905663796572982, "AUTO_CLAMPED"], [-0.9023532600016038, 149.99999999999994, "BEZIER", "AUTO", 583.3333333333334, -1.0494438383770615, "AUTO_CLAMPED", 683.3333333333334, -0.7552627349869991, "AUTO_CLAMPED"], [-0.31931371825604976, 150.0000000000001, "BEZIER", "AUTO", 733.3333333333333, -0.5022042795988796, "AUTO_CLAMPED", 838.8888676961262, -0.1161019967708965, "AUTO_CLAMPED"], [0.0004827262459451294, 166.66666666666663, "BEZIER", "AUTO", 894.444465637207, 0.0004827262459451294, "AUTO_CLAMPED", 1050.0, 0.0004827262459451294, "AUTO_CLAMPED"], [-0.0, 300.0, "BEZIER", "AUTO", 1150.0, -0.0, "AUTO_CLAMPED", 1350.0, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 83.33333333333333, 0.0, "AUTO_CLAMPED"], [0.0, 250.0, "BEZIER", "AUTO", 166.66666666666666, 0.0, "AUTO_CLAMPED", 327.7777671813965, 0.0, "AUTO_CLAMPED"], [-1.2307371226298867, 233.33333333333331, "BEZIER", "AUTO", 405.55556615193683, -1.2307371226298867, "AUTO_CLAMPED", 533.3333333333334, -1.2307371226298867, "AUTO_CLAMPED"], [-1.1005413373315729, 149.99999999999994, "BEZIER", "AUTO", 583.3333333333334, -1.2009474660082877, "AUTO_CLAMPED", 683.3333333333334, -1.0001352086548583, "AUTO_CLAMPED"], [-0.741974762039298, 150.0000000000001, "BEZIER", "AUTO", 733.3333333333333, -0.8291126079230281, "AUTO_CLAMPED", 838.8888676961262, -0.6451549095636632, "AUTO_CLAMPED"], [-0.5715324072218015, 166.66666666666663, "BEZIER", "AUTO", 894.444465637207, -0.6518964129961715, "AUTO_CLAMPED", 1050.0, -0.42687716481142374, "AUTO_CLAMPED"], [0.0, 300.0, "BEZIER", "AUTO", 1150.0, 0.0, "AUTO_CLAMPED", 1350.0, 0.0, "AUTO_CLAMPED"]]}}, "PumpGrip": {"location": {"z": [[-0.0, 0.0, "LINEAR", "AUTO"], [-0.0, 550.0, "BEZIER", "AUTO", 583.3333333333334, -0.0, "AUTO_CLAMPED"], [1.3243759870529175, 100.0, "BEZIER", "AUTO", 616.6666666666667, 1.3243759870529175, "AUTO_CLAMPED", 722.2222010294597, 1.3243759870529175, "AUTO_CLAMPED"], [1.0643759965896606, 216.66666666666674, "BEZIER", "AUTO", 794.444465637207, 1.3243759870529175, "AUTO_CLAMPED", 888.8888676961263, 0.9843760132789612, "AUTO_CLAMPED"], [-0.0, 66.66666666666663, "BEZIER", "AUTO", 911.1111323038737, -0.0, "AUTO_CLAMPED", 955.555534362793, -0.0, "AUTO_CLAMPED"]]}}}, "Inspect": {"MainBody": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 105.55555820465088, 0.0, "AUTO_CLAMPED"], [-0.26629936695098877, 316.66666666666663, "BEZIER", "AUTO", 211.1111005147298, -0.26629936695098877, "AUTO_CLAMPED", 338.8888994852702, -0.26629936695098877, "AUTO_CLAMPED"], [-0.017356067895889282, 66.66666666666669, "BEZIER", "AUTO", 361.11110051472986, -0.1009325236082077, "AUTO_CLAMPED", 405.55556615193683, 0.06622038781642914, "AUTO_CLAMPED"], [0.11843034625053406, 66.66666666666669, "BEZIER", "AUTO", 427.7777671813965, 0.06800641119480133, "AUTO_CLAMPED", 483.3333333333333, 0.19406625628471375, "AUTO_CLAMPED"], [0.5941287279129028, 100.0, "BEZIER", "AUTO", 516.6666666666666, 0.37913745641708374, "AUTO_CLAMPED", 611.1111323038737, 0.9882794618606567, "AUTO_CLAMPED"], [1.6117087602615356, 183.33333333333326, "BEZIER", "AUTO", 672.2222010294596, 1.4829950332641602, "AUTO_CLAMPED", 766.6666666666666, 1.6819162368774414, "AUTO_CLAMPED"], [1.6819162368774414, 100.00000000000011, "BEZIER", "AUTO", 800.0, 1.6819162368774414, "AUTO_CLAMPED", 866.6666666666667, 1.6819162368774414, "AUTO_CLAMPED"], [1.6105526685714722, 100.0, "BEZIER", "AUTO", 900.0, 1.6105526685714722, "AUTO_CLAMPED", 983.3333333333333, 1.6105526685714722, "AUTO_CLAMPED"], [1.7710378170013428, 149.9999999999999, "BEZIER", "AUTO", 1033.3333333333333, 1.7710378170013428, "AUTO_CLAMPED", 1116.6666666666667, 1.7710378170013428, "AUTO_CLAMPED"], [1.6593616008758545, 100.0, "BEZIER", "AUTO", 1150.0, 1.7710378170013428, "AUTO_CLAMPED", 1255.5555979410806, 1.4173964262008667, "AUTO_CLAMPED"], [0.0, 216.66666666666674, "BEZIER", "AUTO", 1327.7777353922527, 0.0, "AUTO_CLAMPED", 1472.2222646077473, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 105.55555820465088, -0.0, "AUTO_CLAMPED"], [-2.5266575813293457, 316.66666666666663, "BEZIER", "AUTO", 211.1111005147298, -2.5266575813293457, "AUTO_CLAMPED", 338.8888994852702, -2.5266575813293457, "AUTO_CLAMPED"], [-2.423205614089966, 66.66666666666669, "BEZIER", "AUTO", 361.11110051472986, -2.4301905632019043, "AUTO_CLAMPED", 405.55556615193683, -2.4162206649780273, "AUTO_CLAMPED"], [-2.4162206649780273, 66.66666666666669, "BEZIER", "AUTO", 427.7777671813965, -2.4162206649780273, "AUTO_CLAMPED", 483.3333333333333, -2.4162206649780273, "AUTO_CLAMPED"], [-2.464684247970581, 100.0, "BEZIER", "AUTO", 516.6666666666666, -2.4381086826324463, "AUTO_CLAMPED", 611.1111323038737, -2.513406276702881, "AUTO_CLAMPED"], [-2.631500720977783, 183.33333333333326, "BEZIER", "AUTO", 672.2222010294596, -2.5778839588165283, "AUTO_CLAMPED", 766.6666666666666, -2.6607463359832764, "AUTO_CLAMPED"], [-2.686760425567627, 100.00000000000011, "BEZIER", "AUTO", 800.0, -2.686760425567627, "AUTO_CLAMPED", 866.6666666666667, -2.686760425567627, "AUTO_CLAMPED"], [-2.6478917598724365, 100.0, "BEZIER", "AUTO", 900.0, -2.679433584213257, "AUTO_CLAMPED", 983.3333333333333, -2.600579023361206, "AUTO_CLAMPED"], [-2.4987831115722656, 149.9999999999999, "BEZIER", "AUTO", 1033.3333333333333, -2.4987831115722656, "AUTO_CLAMPED", 1116.6666666666667, -2.4987831115722656, "AUTO_CLAMPED"], [-2.541956901550293, 100.0, "BEZIER", "AUTO", 1150.0, -2.541956901550293, "AUTO_CLAMPED", 1255.5555979410806, -2.541956901550293, "AUTO_CLAMPED"], [-0.0, 216.66666666666674, "BEZIER", "AUTO", 1327.7777353922527, -0.0, "AUTO_CLAMPED", 1472.2222646077473, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 105.55555820465088, 0.0, "AUTO_CLAMPED"], [1.279327630996704, 316.66666666666663, "BEZIER", "AUTO", 211.1111005147298, 1.018487572669983, "AUTO_CLAMPED", 338.8888994852702, 1.334241271018982, "AUTO_CLAMPED"], [1.3850702047348022, 66.66666666666669, "BEZIER", "AUTO", 361.11110051472986, 1.3555750846862793, "AUTO_CLAMPED", 405.55556615193683, 1.4145653247833252, "AUTO_CLAMPED"], [1.5013269186019897, 66.66666666666669, "BEZIER", "AUTO", 427.7777671813965, 1.4522218704223633, "AUTO_CLAMPED", 483.3333333333333, 1.5749845504760742, "AUTO_CLAMPED"], [1.6744012832641602, 100.0, "BEZIER", "AUTO", 516.6666666666666, 1.6744012832641602, "AUTO_CLAMPED", 611.1111323038737, 1.6744012832641602, "AUTO_CLAMPED"], [1.6744012832641602, 183.33333333333326, "BEZIER", "AUTO", 672.2222010294596, 1.6744012832641602, "AUTO_CLAMPED", 766.6666666666666, 1.6744012832641602, "AUTO_CLAMPED"], [1.9445902109146118, 100.00000000000011, "BEZIER", "AUTO", 800.0, 1.9445902109146118, "AUTO_CLAMPED", 866.6666666666667, 1.9445902109146118, "AUTO_CLAMPED"], [1.8480366468429565, 100.0, "BEZIER", "AUTO", 900.0, 1.8963457345962524, "AUTO_CLAMPED", 983.3333333333333, 1.7755730152130127, "AUTO_CLAMPED"], [1.702963948249817, 149.9999999999999, "BEZIER", "AUTO", 1033.3333333333333, 1.702963948249817, "AUTO_CLAMPED", 1116.6666666666667, 1.702963948249817, "AUTO_CLAMPED"], [1.7295565605163574, 100.0, "BEZIER", "AUTO", 1150.0, 1.7295565605163574, "AUTO_CLAMPED", 1255.5555979410806, 1.7295565605163574, "AUTO_CLAMPED"], [0.0, 216.66666666666674, "BEZIER", "AUTO", 1327.7777353922527, 0.0, "AUTO_CLAMPED", 1472.2222646077473, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 83.33333333333333, 0.0, "AUTO_CLAMPED"], [45.21538785262085, 250.0, "BEZIER", "AUTO", 166.66666666666666, 45.21538785262085, "AUTO_CLAMPED", 350.0, 45.21538785262085, "AUTO_CLAMPED"], [24.574402501585993, 300.0, "BEZIER", "AUTO", 450.0, 33.5531540335259, "AUTO_CLAMPED", 644.444465637207, 16.094471637563164, "AUTO_CLAMPED"], [10.008142148357223, 283.33333333333337, "BEZIER", "AUTO", 738.8888676961262, 10.008142148357223, "AUTO_CLAMPED", 866.6666666666667, 10.008142148357223, "AUTO_CLAMPED"], [17.11625256947144, 100.0, "BEZIER", "AUTO", 900.0, 17.11625256947144, "AUTO_CLAMPED", 983.3333333333333, 17.11625256947144, "AUTO_CLAMPED"], [13.858683491066714, 149.9999999999999, "BEZIER", "AUTO", 1033.3333333333333, 14.0008146050528, "AUTO_CLAMPED", 1127.7777353922527, 13.73234462821534, "AUTO_CLAMPED"], [13.73234462821534, 133.33333333333326, "BEZIER", "AUTO", 1172.2222646077473, 13.858683491066714, "AUTO_CLAMPED", 1322.2222646077473, 13.43229014910845, "AUTO_CLAMPED"], [0.0, 316.66666666666674, "BEZIER", "AUTO", 1427.7777353922525, 0.0, "AUTO_CLAMPED", 1638.8889312744138, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 83.33333333333333, -0.0, "AUTO_CLAMPED"], [64.57814769671742, 250.0, "BEZIER", "AUTO", 166.66666666666666, 50.78887685686462, "AUTO_CLAMPED", 350.0, 81.12527133850297, "AUTO_CLAMPED"], [81.12527133850297, 300.0, "BEZIER", "AUTO", 450.0, 78.5323334540802, "AUTO_CLAMPED", 644.444465637207, 83.57416053333017, "AUTO_CLAMPED"], [90.64872021146763, 283.33333333333337, "BEZIER", "AUTO", 738.8888676961262, 90.64872021146763, "AUTO_CLAMPED", 866.6666666666667, 90.64872021146763, "AUTO_CLAMPED"], [89.44265906820513, 100.0, "BEZIER", "AUTO", 900.0, 89.44265906820513, "AUTO_CLAMPED", 983.3333333333333, 89.44265906820513, "AUTO_CLAMPED"], [92.26923723356653, 149.9999999999999, "BEZIER", "AUTO", 1033.3333333333333, 92.26923723356653, "AUTO_CLAMPED", 1127.7777353922527, 92.26923723356653, "AUTO_CLAMPED"], [90.42948479948856, 133.33333333333326, "BEZIER", "AUTO", 1172.2222646077473, 92.26923723356653, "AUTO_CLAMPED", 1322.2222646077473, 86.06006935345884, "AUTO_CLAMPED"], [-0.0, 316.66666666666674, "BEZIER", "AUTO", 1427.7777353922525, -0.0, "AUTO_CLAMPED", 1638.8889312744138, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 83.33333333333333, 0.0, "AUTO_CLAMPED"], [51.0063774007945, 250.0, "BEZIER", "AUTO", 166.66666666666666, 47.77261409296821, "AUTO_CLAMPED", 350.0, 54.88689473622389, "AUTO_CLAMPED"], [54.88689473622389, 300.0, "BEZIER", "AUTO", 450.0, 53.85283141664063, "AUTO_CLAMPED", 644.444465637207, 55.86351274979275, "AUTO_CLAMPED"], [58.68484874496615, 283.33333333333337, "BEZIER", "AUTO", 738.8888676961262, 58.68484874496615, "AUTO_CLAMPED", 866.6666666666667, 58.68484874496615, "AUTO_CLAMPED"], [58.346330909321985, 100.0, "BEZIER", "AUTO", 900.0, 58.346330909321985, "AUTO_CLAMPED", 983.3333333333333, 58.346330909321985, "AUTO_CLAMPED"], [59.502880011291076, 149.9999999999999, "BEZIER", "AUTO", 1033.3333333333333, 59.502880011291076, "AUTO_CLAMPED", 1127.7777353922527, 59.502880011291076, "AUTO_CLAMPED"], [57.137930426268746, 133.33333333333326, "BEZIER", "AUTO", 1172.2222646077473, 59.502880011291076, "AUTO_CLAMPED", 1322.2222646077473, 51.52117558872753, "AUTO_CLAMPED"], [0.0, 316.66666666666674, "BEZIER", "AUTO", 1427.7777353922525, 0.0, "AUTO_CLAMPED", 1638.8889312744138, 0.0, "AUTO_CLAMPED"]]}}, "PumpGrip": {"location": {"z": [[-0.0, 0.0, "BEZIER", "AUTO", 77.77777512868245, -0.0, "AUTO_CLAMPED"], [-0.0, 233.33333333333334, "BEZIER", "AUTO", 155.55556615193686, -0.0, "AUTO_CLAMPED", 272.2222328186035, -0.0, "AUTO_CLAMPED"], [1.0609124898910522, 116.66666666666666, "BEZIER", "AUTO", 311.1111005147298, 1.0609124898910522, "AUTO_CLAMPED", 550.0, 1.0609124898910522, "AUTO_CLAMPED"], [1.0609124898910522, 600.0, "QUAD", "EASE_IN", 750.0, 1.0609124898910522, "AUTO_CLAMPED"], [-0.0, 133.33333333333326, "BEZIER", "AUTO", 1127.7777353922527, -0.0, "AUTO_CLAMPED"]]}}, "Shell": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 77.77776718139648, 0.0, "AUTO_CLAMPED"], [0.09711318463087082, 233.33333333333334, "BEZIER", "AUTO", 155.55556615193686, 0.09711318463087082, "AUTO_CLAMPED", 266.6666666666667, 0.09711318463087082, "AUTO_CLAMPED"], [0.09711318463087082, 99.99999999999997, "BEZIER", "AUTO", 300.0, 0.09711318463087082, "AUTO_CLAMPED", 338.8888994852702, 0.09711318463087082, "AUTO_CLAMPED"], [0.1717265248298645, 16.666666666666686, "QUAD", "EASE_OUT", 344.44443384806317, 0.12953773140907288, "AUTO_CLAMPED"], [3.2667922973632812, 233.33333333333337, "QUAD", "EASE_IN_OUT"], [0.23389390110969543, 233.33333333333326, "QUAD", "EASE_OUT"], [0.3322022557258606, 50.000000000000114, "QUAD", "EASE_IN_OUT"], [0.09610268473625183, 83.33333333333326, "QUAD", "EASE_IN"], [0.0961027443408966, 133.33333333333326, "BEZIER", "AUTO", 1127.7777353922527, 0.0961027443408966, "AUTO_CLAMPED"]], "z": [[-2.9000000953674316, 0.0, "BEZIER", "AUTO", 77.77776718139648, -2.9000000953674316, "AUTO_CLAMPED"], [-2.731125831604004, 233.33333333333334, "BEZIER", "AUTO", 155.55556615193686, -2.9000000953674316, "AUTO_CLAMPED", 266.6666666666667, -2.6587512493133545, "AUTO_CLAMPED"], [-1.736064076423645, 99.99999999999997, "BEZIER", "AUTO", 300.0, -1.9049280881881714, "AUTO_CLAMPED", 338.8888994852702, -1.7079200744628906, "AUTO_CLAMPED"], [-1.696025013923645, 16.666666666666686, "QUAD", "EASE_OUT", 344.44443384806317, -1.696025013923645, "AUTO_CLAMPED"], [-2.1708288192749023, 233.33333333333337, "QUAD", "EASE_IN_OUT"], [-1.8607081174850464, 233.33333333333326, "QUAD", "EASE_OUT"], [-1.8212902545928955, 50.000000000000114, "QUAD", "EASE_IN_OUT"], [-1.7331995964050293, 83.33333333333326, "QUAD", "EASE_IN"], [-2.7515883445739746, 133.33333333333326, "BEZIER", "AUTO", 1127.7777353922527, -2.7515883445739746, "AUTO_CLAMPED"]], "y": [[1.600000023841858, 0.0, "BEZIER", "AUTO", 77.77776718139648, 1.600000023841858, "AUTO_CLAMPED"], [1.6872104406356812, 233.33333333333334, "BEZIER", "AUTO", 155.55556615193686, 1.6872104406356812, "AUTO_CLAMPED", 266.6666666666667, 1.6872104406356812, "AUTO_CLAMPED"], [1.6872104406356812, 99.99999999999997, "BEZIER", "AUTO", 300.0, 1.6872104406356812, "AUTO_CLAMPED", 338.8888994852702, 1.6872104406356812, "AUTO_CLAMPED"], [1.6872103214263916, 16.666666666666686, "QUAD", "EASE_OUT", 344.44443384806317, 1.6872104406356812, "AUTO_CLAMPED"], [0.6765189170837402, 233.33333333333337, "QUAD", "EASE_IN_OUT"], [1.718790054321289, 233.33333333333326, "QUAD", "EASE_OUT"], [1.718790054321289, 50.000000000000114, "QUAD", "EASE_IN_OUT"], [1.6789368391036987, 83.33333333333326, "QUAD", "EASE_IN"], [1.6789368391036987, 133.33333333333326, "BEZIER", "AUTO", 1127.7777353922527, 1.6789368391036987, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 77.77776718139648, 0.0, "AUTO_CLAMPED"], [0.0, 233.33333333333334, "BEZIER", "AUTO", 155.55556615193686, 0.0, "AUTO_CLAMPED", 266.6666666666667, 0.0, "AUTO_CLAMPED"], [0.0, 99.99999999999997, "BEZIER", "AUTO", 300.0, 0.0, "AUTO_CLAMPED", 338.8888994852702, 0.0, "AUTO_CLAMPED"], [-2.68231656683564e-06, 16.666666666666686, "QUAD", "EASE_OUT", 344.44443384806317, -2.5741321112339668e-06, "AUTO_CLAMPED"], [-5.711481934348984e-06, 466.66666666666663, "QUAD", "EASE_OUT"], [-5.711481934348984e-06, 50.000000000000114, "QUAD", "EASE_IN_OUT"], [0.0, 83.33333333333326, "QUAD", "EASE_IN"], [0.0, 133.33333333333326, "BEZIER", "AUTO", 1127.7777353922527, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 77.77776718139648, -0.0, "AUTO_CLAMPED"], [-0.0, 233.33333333333334, "BEZIER", "AUTO", 155.55556615193686, -0.0, "AUTO_CLAMPED", 266.6666666666667, -0.0, "AUTO_CLAMPED"], [-0.0, 99.99999999999997, "BEZIER", "AUTO", 300.0, -0.0, "AUTO_CLAMPED", 338.8888994852702, -0.0, "AUTO_CLAMPED"], [-1.7882108410015936e-06, 16.666666666666686, "QUAD", "EASE_OUT", 344.44443384806317, -1.7713721194070523e-06, "AUTO_CLAMPED"], [-2.2596944349822487e-06, 466.66666666666663, "QUAD", "EASE_OUT"], [-2.2596944349822487e-06, 50.000000000000114, "QUAD", "EASE_IN_OUT"], [-0.0, 83.33333333333326, "QUAD", "EASE_IN"], [-0.0, 133.33333333333326, "BEZIER", "AUTO", 1127.7777353922527, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 77.77776718139648, 0.0, "AUTO_CLAMPED"], [0.0, 233.33333333333334, "BEZIER", "AUTO", 155.55556615193686, 0.0, "AUTO_CLAMPED", 266.6666666666667, 0.0, "AUTO_CLAMPED"], [0.0, 99.99999999999997, "BEZIER", "AUTO", 300.0, 0.0, "AUTO_CLAMPED", 338.8888994852702, 0.0, "AUTO_CLAMPED"], [-17.27483248652621, 16.666666666666686, "QUAD", "EASE_OUT", 344.44443384806317, -8.28723500583749, "AUTO_CLAMPED"], [-1069.6500258383642, 466.66666666666663, "QUAD", "EASE_OUT"], [-1069.6500258383642, 50.000000000000114, "QUAD", "EASE_IN_OUT"], [-1080.0000027329813, 83.33333333333326, "QUAD", "EASE_IN"], [-1080.0000027329813, 133.33333333333326, "BEZIER", "AUTO", 1127.7777353922527, -1080.0000027329813, "AUTO_CLAMPED"]]}}}, "Jammed": {"MainBody": {"location": {"x": [[-0.7295733690261841, 0.0, "BEZIER", "AUTO", 55.555554231007896, -0.7295733690261841, "AUTO_CLAMPED"], [-0.1906633973121643, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, -0.3445723056793213, "AUTO_CLAMPED", 200.0, -0.09831805527210236, "AUTO_CLAMPED"], [-0.04989950358867645, 100.00000000000003, "BEZIER", "AUTO", 233.33333333333334, -0.08916591107845306, "AUTO_CLAMPED", 333.3333333333333, 0.028633318841457367, "AUTO_CLAMPED"], [0.2286735624074936, 200.0, "BEZIER", "AUTO", 400.0, 0.22762319445610046, "AUTO_CLAMPED", 616.6666666666667, 0.23103690147399902, "AUTO_CLAMPED"], [0.23103690147399902, 449.99999999999994, "BEZIER", "AUTO", 766.6666666666666, 0.23103690147399902, "AUTO_CLAMPED", 927.7777989705404, 0.23103690147399902, "AUTO_CLAMPED"], [0.18799884617328644, 33.33333333333337, "BEZIER", "AUTO", 938.8888676961263, 0.18799884617328644, "AUTO_CLAMPED", 1000.0, 0.18799884617328644, "AUTO_CLAMPED"], [0.23103690147399902, 150.0, "BEZIER", "AUTO", 1050.0, 0.23103690147399902, "AUTO_CLAMPED", 1150.0, 0.23103690147399902, "AUTO_CLAMPED"], [0.03553652763366699, 150.0, "BEZIER", "AUTO", 1200.0, 0.08990925550460815, "AUTO_CLAMPED", 1261.111068725586, 0.02345369942486286, "AUTO_CLAMPED"], [0.015655018389225006, 33.33333333333326, "BEZIER", "AUTO", 1272.2222646077475, 0.015655018389225006, "AUTO_CLAMPED", 1366.6666666666667, 0.015655018389225006, "AUTO_CLAMPED"], [0.23103690147399902, 250.0, "BEZIER", "AUTO", 1450.0, 0.23103690147399902, "AUTO_CLAMPED", 1605.5555979410808, 0.23103690147399902, "AUTO_CLAMPED"], [0.0, 216.66666666666674, "BEZIER", "AUTO", 1677.7777353922525, 0.0, "AUTO_CLAMPED", 1822.2222646077473, 0.0, "AUTO_CLAMPED"]], "z": [[-0.29214829206466675, 0.0, "BEZIER", "AUTO", 61.111112435658775, -0.29214829206466675, "AUTO_CLAMPED"], [-0.7353980541229248, 183.33333333333331, "BEZIER", "AUTO", 122.22221692403157, -0.7353980541229248, "AUTO_CLAMPED", 216.66666666666669, -0.7353980541229248, "AUTO_CLAMPED"], [-0.6644507646560669, 100.0, "BEZIER", "AUTO", 250.0, -0.6644507646560669, "AUTO_CLAMPED", 350.0, -0.6644507646560669, "AUTO_CLAMPED"], [-1.0157172679901123, 200.0, "BEZIER", "AUTO", 416.6666666666667, -0.9963687062263489, "AUTO_CLAMPED", 633.3333333333333, -1.0592515468597412, "AUTO_CLAMPED"], [-1.0592515468597412, 450.00000000000006, "BEZIER", "AUTO", 783.3333333333334, -1.0157172679901123, "AUTO_CLAMPED", 944.4444656372069, -1.0624762773513794, "AUTO_CLAMPED"], [-1.0901333093643188, 33.33333333333326, "BEZIER", "AUTO", 955.555534362793, -1.0901333093643188, "AUTO_CLAMPED", 1016.6666666666666, -1.0901333093643188, "AUTO_CLAMPED"], [-1.0592515468597412, 150.0000000000001, "BEZIER", "AUTO", 1066.6666666666667, -1.0592515468597412, "AUTO_CLAMPED", 1166.6666666666667, -1.0592515468597412, "AUTO_CLAMPED"], [-1.1155942678451538, 149.99999999999977, "BEZIER", "AUTO", 1216.6666666666665, -1.0592515468597412, "AUTO_CLAMPED", 1277.7777353922527, -1.1281148195266724, "AUTO_CLAMPED"], [-1.1526213884353638, 33.333333333333485, "BEZIER", "AUTO", 1288.888931274414, -1.1526213884353638, "AUTO_CLAMPED", 1383.3333333333333, -1.1526213884353638, "AUTO_CLAMPED"], [-1.0592515468597412, 250.0, "BEZIER", "AUTO", 1466.6666666666665, -1.1526213884353638, "AUTO_CLAMPED", 1616.6666666666667, -0.9845556616783142, "AUTO_CLAMPED"], [-0.0, 200.0, "BEZIER", "AUTO", 1683.3333333333333, -0.0, "AUTO_CLAMPED", 1816.6666666666667, -0.0, "AUTO_CLAMPED"]], "y": [[0.2915276288986206, 0.0, "BEZIER", "AUTO", 55.555554231007896, 0.2915276288986206, "AUTO_CLAMPED"], [0.22574126720428467, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 0.22574126720428467, "AUTO_CLAMPED", 200.0, 0.22574126720428467, "AUTO_CLAMPED"], [0.517949640750885, 100.00000000000003, "BEZIER", "AUTO", 233.39649836222333, 0.3859146237373352, "ALIGNED", 329.8230489095052, 0.7685902118682861, "ALIGNED"], [0.7685902118682861, 200.0, "BEZIER", "AUTO", 400.0, 0.7576487064361572, "AUTO_CLAMPED", 616.6666666666667, 0.793208658695221, "AUTO_CLAMPED"], [0.9315266609191895, 449.99999999999994, "BEZIER", "AUTO", 766.6666666666666, 0.9315266609191895, "AUTO_CLAMPED", 927.7777989705404, 0.9315266609191895, "AUTO_CLAMPED"], [0.7277153134346008, 33.33333333333337, "BEZIER", "AUTO", 938.8888676961263, 0.7277153134346008, "AUTO_CLAMPED", 1000.0, 0.7277153134346008, "AUTO_CLAMPED"], [0.9315266609191895, 150.0, "BEZIER", "AUTO", 1050.0, 0.8033905625343323, "AUTO_CLAMPED", 1150.0, 1.0596626996994019, "AUTO_CLAMPED"], [1.2402596473693848, 150.0, "BEZIER", "AUTO", 1200.0, 1.2402596473693848, "AUTO_CLAMPED", 1261.111068725586, 1.2402596473693848, "AUTO_CLAMPED"], [0.5438048839569092, 33.33333333333326, "BEZIER", "AUTO", 1272.2222646077475, 0.5438048839569092, "AUTO_CLAMPED", 1366.6666666666667, 0.5438048839569092, "AUTO_CLAMPED"], [0.9315266609191895, 250.0, "BEZIER", "AUTO", 1450.0, 0.9315266609191895, "AUTO_CLAMPED", 1605.5555979410808, 0.9315266609191895, "AUTO_CLAMPED"], [0.0, 216.66666666666674, "BEZIER", "AUTO", 1677.7777353922525, 0.0, "AUTO_CLAMPED", 1822.2222646077473, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[2.2122143889063857, 0.0, "BEZIER", "AUTO", 116.66666666666667, 2.2122143889063857, "AUTO_CLAMPED"], [-11.605778036736565, 350.0, "BEZIER", "AUTO", 233.33333333333334, -11.605778036736565, "AUTO_CLAMPED", 416.6666666666667, -11.605778036736565, "AUTO_CLAMPED"], [13.54058109085171, 200.0, "BEZIER", "AUTO", 483.3333333333333, 12.773715625373004, "AUTO_CLAMPED", 672.2222010294596, 14.946501253191611, "AUTO_CLAMPED"], [14.946501253191611, 366.66666666666663, "BEZIER", "AUTO", 794.444465637207, 14.946501253191611, "AUTO_CLAMPED", 938.8888676961263, 14.946501253191611, "AUTO_CLAMPED"], [8.062115385888454, 66.66666666666663, "BEZIER", "AUTO", 961.1111323038737, 8.062115385888454, "AUTO_CLAMPED", 1022.2222010294597, 8.062115385888454, "AUTO_CLAMPED"], [14.946501253191611, 116.66666666666674, "BEZIER", "AUTO", 1061.1111323038738, 14.946501253191611, "AUTO_CLAMPED", 1150.0, 14.946501253191611, "AUTO_CLAMPED"], [11.862608517454676, 150.0, "BEZIER", "AUTO", 1200.0, 14.946501253191611, "AUTO_CLAMPED", 1272.2222646077475, 10.491989334066341, "AUTO_CLAMPED"], [6.561224004460465, 66.66666666666674, "BEZIER", "AUTO", 1294.4444020589192, 6.561224004460465, "AUTO_CLAMPED", 1355.5555979410808, 6.561224004460465, "AUTO_CLAMPED"], [14.946501253191611, 116.66666666666652, "BEZIER", "AUTO", 1394.4444020589192, 14.946501253191611, "AUTO_CLAMPED", 1461.111068725586, 14.946501253191611, "AUTO_CLAMPED"], [14.006491346026728, 83.33333333333326, "BEZIER", "AUTO", 1488.888931274414, 14.750078673040385, "AUTO_CLAMPED", 1550.0, 13.114186041346153, "AUTO_CLAMPED"], [9.6433169853511, 100.00000000000023, "BEZIER", "AUTO", 1583.3333333333333, 11.433959505523017, "AUTO_CLAMPED", 1700.0, 5.1667102580344855, "AUTO_CLAMPED"], [0.0, 250.0, "BEZIER", "AUTO", 1783.3333333333333, 0.0, "AUTO_CLAMPED", 1950.0, 0.0, "AUTO_CLAMPED"]], "z": [[-48.21786729477217, 0.0, "BEZIER", "AUTO", 116.66666666666667, -48.21786729477217, "AUTO_CLAMPED"], [10.971158693967647, 350.0, "BEZIER", "AUTO", 233.33333333333334, -18.476973101205132, "AUTO_CLAMPED", 472.22223281860346, 41.821582967257406, "AUTO_CLAMPED"], [75.12389147332541, 366.66666666666663, "BEZIER", "AUTO", 594.444465637207, 72.35069123632766, "AUTO_CLAMPED", 783.3333333333334, 76.63654614805147, "AUTO_CLAMPED"], [76.63654614805147, 200.0, "BEZIER", "AUTO", 850.0, 75.12389147332541, "AUTO_CLAMPED", 938.8888676961263, 77.14076437296013, "AUTO_CLAMPED"], [81.97817755072997, 66.66666666666663, "BEZIER", "AUTO", 961.1111323038737, 81.97817755072997, "AUTO_CLAMPED", 1022.2222010294597, 81.97817755072997, "AUTO_CLAMPED"], [76.63654614805147, 116.66666666666674, "BEZIER", "AUTO", 1061.1111323038738, 76.63654614805147, "AUTO_CLAMPED", 1150.0, 76.63654614805147, "AUTO_CLAMPED"], [81.10338058221308, 150.0, "BEZIER", "AUTO", 1200.0, 76.63654614805147, "AUTO_CLAMPED", 1272.2222646077475, 83.08864336636898, "AUTO_CLAMPED"], [86.807483293955, 66.66666666666674, "BEZIER", "AUTO", 1294.4444020589192, 86.807483293955, "AUTO_CLAMPED", 1355.5555979410808, 86.807483293955, "AUTO_CLAMPED"], [76.63654614805147, 116.66666666666652, "BEZIER", "AUTO", 1394.4444020589192, 76.63654614805147, "AUTO_CLAMPED", 1461.111068725586, 76.63654614805147, "AUTO_CLAMPED"], [77.04931497016284, 83.33333333333326, "BEZIER", "AUTO", 1488.888931274414, 77.04931497016284, "AUTO_CLAMPED", 1550.0, 77.04931497016284, "AUTO_CLAMPED"], [73.88012768584443, 100.00000000000023, "BEZIER", "AUTO", 1583.3333333333333, 77.04931497016284, "AUTO_CLAMPED", 1733.3333333333335, 62.7879756058246, "AUTO_CLAMPED"], [-0.0, 349.9999999999998, "BEZIER", "AUTO", 1849.9999999999998, -0.0, "AUTO_CLAMPED", 2083.3333333333335, -0.0, "AUTO_CLAMPED"]], "y": [[27.10300512666912, 0.0, "BEZIER", "AUTO", 116.66666666666667, 27.10300512666912, "AUTO_CLAMPED"], [-0.509413544267828, 350.0, "BEZIER", "AUTO", 233.33333333333334, -0.509413544267828, "AUTO_CLAMPED", 450.0, -0.509413544267828, "AUTO_CLAMPED"], [23.16085216416954, 300.0, "BEZIER", "AUTO", 550.0, 17.89713102180607, "AUTO_CLAMPED", 738.8888676961262, 27.839716160735865, "AUTO_CLAMPED"], [27.839716160735865, 266.66666666666663, "BEZIER", "AUTO", 827.7777989705404, 24.69888782185135, "AUTO_CLAMPED", 938.8888676961263, 28.624923245456994, "AUTO_CLAMPED"], [29.802734726312334, 66.66666666666663, "BEZIER", "AUTO", 961.1111323038737, 29.802734726312334, "AUTO_CLAMPED", 1022.2222010294597, 29.802734726312334, "AUTO_CLAMPED"], [27.839716160735865, 116.66666666666674, "BEZIER", "AUTO", 1061.1111323038738, 27.839716160735865, "AUTO_CLAMPED", 1150.0, 27.839716160735865, "AUTO_CLAMPED"], [29.329365050790013, 150.0, "BEZIER", "AUTO", 1200.0, 28.62709866070764, "AUTO_CLAMPED", 1272.2222646077475, 29.641484205292087, "AUTO_CLAMPED"], [29.93678743405759, 66.66666666666674, "BEZIER", "AUTO", 1294.4444020589192, 29.93678743405759, "AUTO_CLAMPED", 1355.5555979410808, 29.93678743405759, "AUTO_CLAMPED"], [27.839716160735865, 116.66666666666652, "BEZIER", "AUTO", 1394.4444020589192, 29.75232110004847, "AUTO_CLAMPED", 1461.111068725586, 26.473570751253888, "AUTO_CLAMPED"], [24.22572134445684, 83.33333333333326, "BEZIER", "AUTO", 1488.888931274414, 24.22572134445684, "AUTO_CLAMPED", 1550.0, 24.22572134445684, "AUTO_CLAMPED"], [29.605232976272244, 100.00000000000023, "BEZIER", "AUTO", 1583.3333333333333, 29.605232976272244, "AUTO_CLAMPED", 1716.6666666666665, 29.605232976272244, "AUTO_CLAMPED"], [0.0, 300.0, "BEZIER", "AUTO", 1816.6666666666667, 0.0, "AUTO_CLAMPED", 2016.6666666666665, 0.0, "AUTO_CLAMPED"]]}}, "PumpGrip": {"location": {"z": [[-0.0, 0.0, "BEZIER", "AUTO", 77.77777512868245, -0.0, "AUTO_CLAMPED"], [-0.0, 233.33333333333334, "BEZIER", "AUTO", 155.55556615193686, -0.0, "AUTO_CLAMPED", 266.6666666666667, -0.0, "AUTO_CLAMPED"], [0.7575316429138184, 99.99999999999997, "BEZIER", "AUTO", 300.0, 0.7575316429138184, "AUTO_CLAMPED", 694.4444020589192, 0.7575316429138184, "AUTO_CLAMPED"], [0.7575316429138184, 1083.3333333333335, "BEZIER", "AUTO", 1055.5555979410806, 0.7575316429138184, "AUTO_CLAMPED", 1455.5555979410808, 0.7575316429138184, "AUTO_CLAMPED"], [-0.0, 116.66666666666652, "BEZIER", "AUTO", 1494.4444020589192, -0.0, "AUTO_CLAMPED", 1572.2222646077473, -0.0, "AUTO_CLAMPED"]]}}, "Shell": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 77.77777512868245, 0.0, "AUTO_CLAMPED"], [0.10088974982500076, 233.33333333333334, "BEZIER", "AUTO", 155.55556615193686, 0.0, "AUTO_CLAMPED", 266.6666666666667, 0.14412821829319, "AUTO_CLAMPED"], [0.21595029532909393, 99.99999999999997, "BEZIER", "AUTO", 300.0, 0.21595029532909393, "AUTO_CLAMPED", 527.7777989705403, 0.21595029532909393, "AUTO_CLAMPED"], [0.21595029532909393, 583.3333333333333, "BEZIER", "AUTO", 722.2222010294597, 0.21595029532909393, "AUTO_CLAMPED", 922.2222010294596, 0.21595029532909393, "AUTO_CLAMPED"], [0.17595839500427246, 16.666666666666742, "BEZIER", "AUTO", 927.7777989705404, 0.17595839500427246, "AUTO_CLAMPED", 1038.8888676961262, 0.17595839500427246, "AUTO_CLAMPED"], [0.17595839500427246, 316.66666666666663, "BEZIER", "AUTO", 1144.4444020589192, 0.17595839500427246, "AUTO_CLAMPED", 1261.111068725586, 0.17595839500427246, "AUTO_CLAMPED"], [0.09587424248456955, 33.33333333333326, "BEZIER", "AUTO", 1272.2222646077475, 0.09587424248456955, "AUTO_CLAMPED", 1338.888931274414, 0.09587424248456955, "AUTO_CLAMPED"], [0.09587424248456955, 166.66666666666674, "BEZIER", "AUTO", 1394.4444020589192, 0.09587424248456955, "AUTO_CLAMPED", 1477.7777353922525, 0.09587424248456955, "AUTO_CLAMPED"], [0.09587424248456955, 83.33333333333326, "BEZIER", "AUTO", 1505.5555979410806, 0.09587424248456955, "AUTO_CLAMPED", 1561.111068725586, 0.09587424248456955, "AUTO_CLAMPED"]], "z": [[-2.9000000953674316, 0.0, "BEZIER", "AUTO", 77.77777512868245, -2.9000000953674316, "AUTO_CLAMPED"], [-2.7272896766662598, 233.33333333333334, "BEZIER", "AUTO", 155.55556615193686, -2.9000000953674316, "AUTO_CLAMPED", 266.6666666666667, -2.653270959854126, "AUTO_CLAMPED"], [-2.0865931510925293, 99.99999999999997, "BEZIER", "AUTO", 300.0, -2.0865931510925293, "AUTO_CLAMPED", 527.7777989705403, -2.0865931510925293, "AUTO_CLAMPED"], [-2.0865931510925293, 583.3333333333333, "BEZIER", "AUTO", 722.2222010294597, -2.0865931510925293, "AUTO_CLAMPED", 922.2222010294596, -2.0865931510925293, "AUTO_CLAMPED"], [-2.091643810272217, 16.666666666666742, "BEZIER", "AUTO", 927.7777989705404, -2.091643810272217, "AUTO_CLAMPED", 1038.8888676961262, -2.091643810272217, "AUTO_CLAMPED"], [-2.091643810272217, 316.66666666666663, "BEZIER", "AUTO", 1144.4444020589192, -2.091643810272217, "AUTO_CLAMPED", 1261.111068725586, -2.091643810272217, "AUTO_CLAMPED"], [-2.091643810272217, 33.33333333333326, "BEZIER", "AUTO", 1272.2222646077475, -2.091643810272217, "AUTO_CLAMPED", 1338.888931274414, -2.091643810272217, "AUTO_CLAMPED"], [-2.091643810272217, 166.66666666666674, "BEZIER", "AUTO", 1394.4444020589192, -2.091643810272217, "AUTO_CLAMPED", 1477.7777353922525, -2.091643810272217, "AUTO_CLAMPED"], [-2.7139627933502197, 83.33333333333326, "BEZIER", "AUTO", 1505.5555979410806, -2.7139627933502197, "AUTO_CLAMPED", 1561.111068725586, -2.7139627933502197, "AUTO_CLAMPED"]], "y": [[1.600000023841858, 0.0, "BEZIER", "AUTO", 77.77777512868245, 1.600000023841858, "AUTO_CLAMPED"], [1.6788396835327148, 233.33333333333334, "BEZIER", "AUTO", 155.55556615193686, 1.620819330215454, "AUTO_CLAMPED", 266.6666666666667, 1.7037055492401123, "AUTO_CLAMPED"], [1.7354042530059814, 99.99999999999997, "BEZIER", "AUTO", 300.0, 1.7354042530059814, "AUTO_CLAMPED", 527.7777989705403, 1.7354042530059814, "AUTO_CLAMPED"], [1.7354042530059814, 583.3333333333333, "BEZIER", "AUTO", 722.2222010294597, 1.7354042530059814, "AUTO_CLAMPED", 922.2222010294596, 1.7354042530059814, "AUTO_CLAMPED"], [1.713067889213562, 16.666666666666742, "BEZIER", "AUTO", 927.7777989705404, 1.713067889213562, "AUTO_CLAMPED", 1038.8888676961262, 1.713067889213562, "AUTO_CLAMPED"], [1.713067889213562, 316.66666666666663, "BEZIER", "AUTO", 1144.4444020589192, 1.713067889213562, "AUTO_CLAMPED", 1261.111068725586, 1.713067889213562, "AUTO_CLAMPED"], [1.6614195108413696, 33.33333333333326, "BEZIER", "AUTO", 1272.2222646077475, 1.6614195108413696, "AUTO_CLAMPED", 1338.888931274414, 1.6614195108413696, "AUTO_CLAMPED"], [1.6614195108413696, 166.66666666666674, "BEZIER", "AUTO", 1394.4444020589192, 1.6614195108413696, "AUTO_CLAMPED", 1477.7777353922525, 1.6614195108413696, "AUTO_CLAMPED"], [1.6614195108413696, 83.33333333333326, "BEZIER", "AUTO", 1505.5555979410806, 1.6614195108413696, "AUTO_CLAMPED", 1561.111068725586, 1.6614195108413696, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 77.77777512868245, 0.0, "AUTO_CLAMPED"], [0.0, 233.33333333333334, "BEZIER", "AUTO", 155.55556615193686, 0.0, "AUTO_CLAMPED", 266.6666666666667, 0.0, "AUTO_CLAMPED"], [-13.527462858777055, 99.99999999999997, "BEZIER", "AUTO", 300.0, -13.527462858777055, "AUTO_CLAMPED", 527.7777989705403, -13.527462858777055, "AUTO_CLAMPED"], [-13.527462858777055, 583.3333333333333, "BEZIER", "AUTO", 722.2222010294597, -13.527462858777055, "AUTO_CLAMPED", 922.2222010294596, -13.527462858777055, "AUTO_CLAMPED"], [-7.794041560022856, 16.666666666666742, "BEZIER", "AUTO", 927.7777989705404, -7.794041560022856, "AUTO_CLAMPED", 1038.8888676961262, -7.794041560022856, "AUTO_CLAMPED"], [-7.794041560022856, 316.66666666666663, "BEZIER", "AUTO", 1144.4444020589192, -7.794041560022856, "AUTO_CLAMPED", 1261.111068725586, -7.794041560022856, "AUTO_CLAMPED"], [0.0, 33.33333333333326, "BEZIER", "AUTO", 1272.2222646077475, 0.0, "AUTO_CLAMPED", 1338.888931274414, 0.0, "AUTO_CLAMPED"], [0.0, 166.66666666666674, "BEZIER", "AUTO", 1394.4444020589192, 0.0, "AUTO_CLAMPED", 1477.7777353922525, 0.0, "AUTO_CLAMPED"], [0.0, 83.33333333333326, "BEZIER", "AUTO", 1505.5555979410806, 0.0, "AUTO_CLAMPED", 1561.111068725586, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 77.77777512868245, -0.0, "AUTO_CLAMPED"], [-0.0, 233.33333333333334, "BEZIER", "AUTO", 155.55556615193686, -0.0, "AUTO_CLAMPED", 266.6666666666667, -0.0, "AUTO_CLAMPED"], [19.831365462672814, 99.99999999999997, "BEZIER", "AUTO", 300.0, 19.831365462672814, "AUTO_CLAMPED", 527.7777989705403, 19.831365462672814, "AUTO_CLAMPED"], [19.831365462672814, 583.3333333333333, "BEZIER", "AUTO", 722.2222010294597, 19.831365462672814, "AUTO_CLAMPED", 922.2222010294596, 19.831365462672814, "AUTO_CLAMPED"], [16.99874599499054, 16.666666666666742, "BEZIER", "AUTO", 927.7777989705404, 16.99874599499054, "AUTO_CLAMPED", 1038.8888676961262, 16.99874599499054, "AUTO_CLAMPED"], [16.99874599499054, 316.66666666666663, "BEZIER", "AUTO", 1144.4444020589192, 16.99874599499054, "AUTO_CLAMPED", 1261.111068725586, 16.99874599499054, "AUTO_CLAMPED"], [-0.0, 33.33333333333326, "BEZIER", "AUTO", 1272.2222646077475, -0.0, "AUTO_CLAMPED", 1338.888931274414, -0.0, "AUTO_CLAMPED"], [-0.0, 166.66666666666674, "BEZIER", "AUTO", 1394.4444020589192, -0.0, "AUTO_CLAMPED", 1477.7777353922525, -0.0, "AUTO_CLAMPED"], [-0.0, 83.33333333333326, "BEZIER", "AUTO", 1505.5555979410806, -0.0, "AUTO_CLAMPED", 1561.111068725586, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 77.77777512868245, 0.0, "AUTO_CLAMPED"], [0.0, 233.33333333333334, "BEZIER", "AUTO", 155.55556615193686, 0.0, "AUTO_CLAMPED", 266.6666666666667, 0.0, "AUTO_CLAMPED"], [36.84236140193977, 99.99999999999997, "BEZIER", "AUTO", 300.0, 36.84236140193977, "AUTO_CLAMPED", 527.7777989705403, 36.84236140193977, "AUTO_CLAMPED"], [36.84236140193977, 583.3333333333333, "BEZIER", "AUTO", 722.2222010294597, 36.84236140193977, "AUTO_CLAMPED", 922.2222010294596, 36.84236140193977, "AUTO_CLAMPED"], [21.77011978122281, 16.666666666666742, "BEZIER", "AUTO", 927.7777989705404, 21.77011978122281, "AUTO_CLAMPED", 1038.8888676961262, 21.77011978122281, "AUTO_CLAMPED"], [21.77011978122281, 316.66666666666663, "BEZIER", "AUTO", 1144.4444020589192, 21.77011978122281, "AUTO_CLAMPED", 1261.111068725586, 21.77011978122281, "AUTO_CLAMPED"], [0.0, 33.33333333333326, "BEZIER", "AUTO", 1272.2222646077475, 0.0, "AUTO_CLAMPED", 1338.888931274414, 0.0, "AUTO_CLAMPED"], [0.0, 166.66666666666674, "BEZIER", "AUTO", 1394.4444020589192, 0.0, "AUTO_CLAMPED", 1477.7777353922525, 0.0, "AUTO_CLAMPED"], [0.0, 83.33333333333326, "BEZIER", "AUTO", 1505.5555979410806, 0.0, "AUTO_CLAMPED", 1561.111068725586, 0.0, "AUTO_CLAMPED"]]}}}, "Reload": {"MainBody": {"location": {"x": [[-0.7295733690261841, 0.0, "LINEAR", "AUTO"], [-0.7295733690261841, 83.33333333333333, "LINEAR", "AUTO"], [-0.7295733690261841, 99.99999999999999, "LINEAR", "AUTO"], [-0.5556169748306274, 133.33333333333331, "LINEAR", "AUTO"], [-0.6492857933044434, 116.66666666666674, "LINEAR", "AUTO"], [-0.7295733690261841, 100.0, "LINEAR", "AUTO"]], "z": [[-0.29214829206466675, 0.0, "LINEAR", "AUTO"], [-0.29214829206466675, 83.33333333333333, "LINEAR", "AUTO"], [-0.29214829206466675, 99.99999999999999, "LINEAR", "AUTO"], [-0.30703651905059814, 133.33333333333331, "LINEAR", "AUTO"], [-0.29901978373527527, 116.66666666666674, "LINEAR", "AUTO"], [-0.29214829206466675, 100.0, "LINEAR", "AUTO"]], "y": [[0.2915276288986206, 0.0, "LINEAR", "AUTO"], [0.2915276288986206, 83.33333333333333, "LINEAR", "AUTO"], [0.2915276288986206, 99.99999999999999, "LINEAR", "AUTO"], [0.4859994053840637, 133.33333333333331, "LINEAR", "AUTO"], [0.38128381967544556, 116.66666666666674, "LINEAR", "AUTO"], [0.2915276288986206, 100.0, "LINEAR", "AUTO"]]}, "rotation_euler": {"x": [[2.2122143889063857, 0.0, "LINEAR", "AUTO"], [1.6652197564429725, 83.33333333333333, "LINEAR", "AUTO"], [2.2122143889063857, 133.33333333333337, "LINEAR", "AUTO"], [9.618481563755287, 116.66666666666663, "LINEAR", "AUTO"], [5.616534990827301, 100.00000000000006, "LINEAR", "AUTO"], [2.2122143889063857, 100.0, "LINEAR", "AUTO"]], "z": [[-48.21786729477217, 0.0, "LINEAR", "AUTO"], [-45.59814140842461, 83.33333333333333, "LINEAR", "AUTO"], [-48.21786729477217, 133.33333333333337, "LINEAR", "AUTO"], [-53.60401787046082, 116.66666666666663, "LINEAR", "AUTO"], [-50.637738430910574, 100.00000000000006, "LINEAR", "AUTO"], [-48.21786729477217, 100.0, "LINEAR", "AUTO"]], "y": [[27.10300512666912, 0.0, "LINEAR", "AUTO"], [27.402903365198746, 83.33333333333333, "LINEAR", "AUTO"], [27.10300512666912, 133.33333333333337, "LINEAR", "AUTO"], [28.044826741511347, 116.66666666666663, "LINEAR", "AUTO"], [27.549100149288286, 100.00000000000006, "LINEAR", "AUTO"], [27.10300512666912, 100.0, "LINEAR", "AUTO"]]}}, "Shell": {"location": {"x": [[-5.960464477539063e-08, 0.0, "BEZIER", "AUTO", 44.444445768992104, -5.960464477539063e-08, "AUTO_CLAMPED"], [1.2852251529693604e-07, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, -5.960464477539063e-08, "AUTO_CLAMPED", 161.11111640930176, 2.461019903421402e-07, "AUTO_CLAMPED"], [0.0043095857836306095, 83.33333333333334, "BEZIER", "AUTO", 188.88888359069824, 0.004309445153921843, "AUTO_CLAMPED", 244.4444497426351, 0.0043097264133393764, "AUTO_CLAMPED"], [0.0043097264133393764, 83.33333333333331, "BEZIER", "AUTO", 272.2222328186035, 0.0043097264133393764, "AUTO_CLAMPED", 316.66666666666663, 0.0043097264133393764, "AUTO_CLAMPED"], [0.004309403244405985, 50.0, "BEZIER", "AUTO", 333.3333333333333, 0.004309403244405985, "AUTO_CLAMPED", 366.66666666666663, 0.004309403244405985, "AUTO_CLAMPED"]], "z": [[-1.3408751487731934, 0.0, "BEZIER", "AUTO", 44.444445768992104, -1.3408751487731934, "AUTO_CLAMPED"], [-1.88205885887146, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, -1.7226817607879639, "AUTO_CLAMPED", 161.11111640930176, -1.981669545173645, "AUTO_CLAMPED"], [-2.250572919845581, 83.33333333333334, "BEZIER", "AUTO", 188.88888359069824, -1.9943935871124268, "AUTO_CLAMPED", 244.4444497426351, -2.5067522525787354, "AUTO_CLAMPED"], [-3.008287191390991, 83.33333333333331, "BEZIER", "AUTO", 272.2222328186035, -3.0063869953155518, "AUTO_CLAMPED", 316.66666666666663, -3.009427309036255, "AUTO_CLAMPED"], [-3.009427309036255, 50.0, "BEZIER", "AUTO", 333.3333333333333, -3.009427309036255, "AUTO_CLAMPED", 366.66666666666663, -3.009427309036255, "AUTO_CLAMPED"]], "y": [[-1.0872026681900024, 0.0, "BEZIER", "AUTO", 44.444445768992104, -1.0872026681900024, "AUTO_CLAMPED"], [-0.7433216571807861, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, -1.0872026681900024, "AUTO_CLAMPED", 161.11111640930176, -0.5283960103988647, "AUTO_CLAMPED"], [0.8109492063522339, 83.33333333333334, "BEZIER", "AUTO", 188.88888359069824, 0.385259211063385, "AUTO_CLAMPED", 244.4444497426351, 1.2366392612457275, "AUTO_CLAMPED"], [1.2373285293579102, 83.33333333333331, "BEZIER", "AUTO", 272.2222328186035, 1.1743639707565308, "AUTO_CLAMPED", 316.66666666666663, 1.2751072645187378, "AUTO_CLAMPED"], [1.3579723834991455, 50.0, "BEZIER", "AUTO", 333.3333333333333, 1.3579723834991455, "AUTO_CLAMPED", 366.66666666666663, 1.3579723834991455, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, 0.0, "AUTO_CLAMPED"], [0.0, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, 0.0, "AUTO_CLAMPED", 161.11111640930176, 0.0, "AUTO_CLAMPED"], [21.14787588745631, 83.33333333333334, "BEZIER", "AUTO", 188.88888359069824, 21.14787588745631, "AUTO_CLAMPED", 244.4444497426351, 21.14787588745631, "AUTO_CLAMPED"], [0.40499606683590605, 83.33333333333331, "BEZIER", "AUTO", 272.2222328186035, 0.40499606683590605, "AUTO_CLAMPED", 316.66666666666663, 0.40499606683590605, "AUTO_CLAMPED"], [0.40499606683590605, 50.0, "BEZIER", "AUTO", 333.3333333333333, 0.40499606683590605, "AUTO_CLAMPED", 366.66666666666663, 0.40499606683590605, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, -0.0, "AUTO_CLAMPED"], [-0.0, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, -0.0, "AUTO_CLAMPED", 161.11111640930176, -0.0, "AUTO_CLAMPED"], [-0.0, 83.33333333333334, "BEZIER", "AUTO", 188.88888359069824, -0.0, "AUTO_CLAMPED", 244.4444497426351, -0.0, "AUTO_CLAMPED"], [-1.0271807443729786e-06, 83.33333333333331, "BEZIER", "AUTO", 272.2222328186035, -1.0271807443729786e-06, "AUTO_CLAMPED", 316.66666666666663, -1.0271807443729786e-06, "AUTO_CLAMPED"], [-1.0271807443729786e-06, 50.0, "BEZIER", "AUTO", 333.3333333333333, -1.0271807443729786e-06, "AUTO_CLAMPED", 366.66666666666663, -1.0271807443729786e-06, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, 0.0, "AUTO_CLAMPED"], [0.0, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, 0.0, "AUTO_CLAMPED", 161.11111640930176, 0.0, "AUTO_CLAMPED"], [-1.9209907040660864e-06, 83.33333333333334, "BEZIER", "AUTO", 188.88888359069824, -7.248212372463371e-07, "AUTO_CLAMPED", 244.4444497426351, -3.1171601708858352e-06, "AUTO_CLAMPED"], [-4.784677867278997e-06, 83.33333333333331, "BEZIER", "AUTO", 272.2222328186035, -4.784677867278997e-06, "AUTO_CLAMPED", 316.66666666666663, -4.784677867278997e-06, "AUTO_CLAMPED"], [-4.784677867278997e-06, 50.0, "BEZIER", "AUTO", 333.3333333333333, -4.784677867278997e-06, "AUTO_CLAMPED", 366.66666666666663, -4.784677867278997e-06, "AUTO_CLAMPED"]]}}}, "ReloadEmptyStart": {"MainBody": {"location": {"x": [[0.0, 0.0, "LINEAR", "AUTO"], [-0.3959049880504608, 100.0, "LINEAR", "AUTO"], [-0.8907862305641174, 50.0, "LINEAR", "AUTO"], [-0.912574291229248, 133.33333333333331, "LINEAR", "AUTO"], [-0.8907862305641174, 183.33333333333337, "LINEAR", "AUTO"], [-0.7295733690261841, 333.3333333333333, "LINEAR", "AUTO"]], "z": [[-0.0, 0.0, "LINEAR", "AUTO"], [-0.04771782457828522, 100.0, "LINEAR", "AUTO"], [-0.10736510902643204, 50.0, "LINEAR", "AUTO"], [-0.1299014389514923, 133.33333333333331, "LINEAR", "AUTO"], [-0.10736510902643204, 183.33333333333337, "LINEAR", "AUTO"], [-0.29214829206466675, 333.3333333333333, "LINEAR", "AUTO"]], "y": [[0.0, 0.0, "LINEAR", "AUTO"], [0.08693332225084305, 100.0, "LINEAR", "AUTO"], [0.1955999732017517, 50.0, "LINEAR", "AUTO"], [0.07320505380630493, 133.33333333333331, "LINEAR", "AUTO"], [0.1955999732017517, 183.33333333333337, "LINEAR", "AUTO"], [0.2915276288986206, 333.3333333333333, "LINEAR", "AUTO"]]}, "rotation_euler": {"x": [[0.0, 0.0, "LINEAR", "AUTO"], [5.215149959628216, 116.66666666666667, "LINEAR", "AUTO"], [14.341662388977594, 66.66666666666664, "LINEAR", "AUTO"], [10.053024175167023, 150.0, "LINEAR", "AUTO"], [14.341662388977594, 183.33333333333331, "LINEAR", "AUTO"], [9.347183888601442, 83.33333333333337, "LINEAR", "AUTO"], [3.4013761500584048, 133.33333333333326, "LINEAR", "AUTO"], [2.2122143889063857, 66.66666666666674, "LINEAR", "AUTO"]], "z": [[-0.0, 0.0, "LINEAR", "AUTO"], [17.232944643893813, 116.66666666666667, "LINEAR", "AUTO"], [47.39059819759481, 66.66666666666664, "LINEAR", "AUTO"], [51.027851515545024, 150.0, "LINEAR", "AUTO"], [47.39059819759481, 183.33333333333331, "LINEAR", "AUTO"], [8.022402104733061, 83.33333333333337, "LINEAR", "AUTO"], [-38.844487923156436, 133.33333333333326, "LINEAR", "AUTO"], [-48.21786729477217, 66.66666666666674, "LINEAR", "AUTO"]], "y": [[0.0, 0.0, "LINEAR", "AUTO"], [-3.394506473857253, 116.66666666666667, "LINEAR", "AUTO"], [-9.334892963190004, 66.66666666666664, "LINEAR", "AUTO"], [-8.375116488567105, 150.0, "LINEAR", "AUTO"], [-9.334892963190004, 183.33333333333331, "LINEAR", "AUTO"], [5.668946020536571, 83.33333333333337, "LINEAR", "AUTO"], [23.530662511496125, 133.33333333333326, "LINEAR", "AUTO"], [27.10300512666912, 66.66666666666674, "LINEAR", "AUTO"]]}}, "PumpGrip": {"location": {"z": [[-0.0, 0.0, "LINEAR", "AUTO"], [-0.0, 183.33333333333331, "LINEAR", "AUTO"], [1.0550689697265625, 66.66666666666669, "LINEAR", "AUTO"], [1.0550689697265625, 166.66666666666669, "LINEAR", "AUTO"], [-0.0, 99.99999999999994, "LINEAR", "AUTO"]]}}, "Shell": {"location": {"x": [[1.089231252670288, 0.0, "LINEAR", "AUTO"], [0.8341608047485352, 150.0, "LINEAR", "AUTO"], [0.5637267231941223, 100.0, "LINEAR", "AUTO"], [0.27297717332839966, 33.333333333333314, "LINEAR", "AUTO"], [1.1920928955078125e-07, 66.66666666666669, "LINEAR", "AUTO"]], "z": [[-1.6620994806289673, 0.0, "LINEAR", "AUTO"], [-1.8606443405151367, 150.0, "LINEAR", "AUTO"], [-1.7523975372314453, 100.0, "LINEAR", "AUTO"], [-2.0263478755950928, 33.333333333333314, "LINEAR", "AUTO"], [-2.9000000953674316, 66.66666666666669, "LINEAR", "AUTO"]], "y": [[-0.7190526723861694, 0.0, "LINEAR", "AUTO"], [-1.443679928779602, 150.0, "LINEAR", "AUTO"], [1.7873222827911377, 100.0, "LINEAR", "AUTO"], [1.7349900007247925, 33.333333333333314, "LINEAR", "AUTO"], [1.5999999046325684, 66.66666666666669, "LINEAR", "AUTO"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 50.0, 0.0, "AUTO_CLAMPED"], [0.0, 150.0, "BEZIER", "AUTO", 100.0, 0.0, "AUTO_CLAMPED", 183.33333333333331, 0.0, "AUTO_CLAMPED"], [-4.686586806083493, 100.0, "BEZIER", "AUTO", 216.66666666666669, -4.686586806083493, "AUTO_CLAMPED", 261.11111640930176, -4.686586806083493, "AUTO_CLAMPED"], [-4.686586806083493, 33.333333333333314, "BEZIER", "AUTO", 272.2222328186035, -4.686586806083493, "AUTO_CLAMPED", 305.55556615193683, -4.686586806083493, "AUTO_CLAMPED"], [0.0, 66.66666666666669, "BEZIER", "AUTO", 327.7777671813965, 0.0, "AUTO_CLAMPED", 372.2222328186035, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 50.0, -0.0, "AUTO_CLAMPED"], [-0.0, 150.0, "BEZIER", "AUTO", 100.0, -0.0, "AUTO_CLAMPED", 183.33333333333331, -0.0, "AUTO_CLAMPED"], [-0.5807879005165506, 100.0, "BEZIER", "AUTO", 216.66666666666669, -0.5807879005165506, "AUTO_CLAMPED", 261.11111640930176, -0.5807879005165506, "AUTO_CLAMPED"], [-0.5807879005165506, 33.333333333333314, "BEZIER", "AUTO", 272.2222328186035, -0.5807879005165506, "AUTO_CLAMPED", 305.55556615193683, -0.5807879005165506, "AUTO_CLAMPED"], [-0.0, 66.66666666666669, "BEZIER", "AUTO", 327.7777671813965, -0.0, "AUTO_CLAMPED", 372.2222328186035, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 50.0, 0.0, "AUTO_CLAMPED"], [0.0, 150.0, "BEZIER", "AUTO", 100.0, 0.0, "AUTO_CLAMPED", 183.33333333333331, 0.0, "AUTO_CLAMPED"], [15.393064143768921, 100.0, "BEZIER", "AUTO", 216.66666666666669, 15.393064143768921, "AUTO_CLAMPED", 261.11111640930176, 15.393064143768921, "AUTO_CLAMPED"], [15.393064143768921, 33.333333333333314, "BEZIER", "AUTO", 272.2222328186035, 15.393064143768921, "AUTO_CLAMPED", 305.55556615193683, 15.393064143768921, "AUTO_CLAMPED"], [0.0, 66.66666666666669, "BEZIER", "AUTO", 327.7777671813965, 0.0, "AUTO_CLAMPED", 372.2222328186035, 0.0, "AUTO_CLAMPED"]]}}}, "ReloadEnd": {"MainBody": {"location": {"x": [[-0.7295733690261841, 0.0, "LINEAR", "AUTO"], [-0.5471799969673157, 166.66666666666666, "LINEAR", "AUTO"], [-0.15633714199066162, 100.00000000000003, "LINEAR", "AUTO"], [0.0, 150.0, "LINEAR", "AUTO"]], "z": [[-0.29214829206466675, 0.0, "LINEAR", "AUTO"], [-0.21911121904850006, 166.66666666666666, "LINEAR", "AUTO"], [-0.06260320544242859, 100.00000000000003, "LINEAR", "AUTO"], [-0.0, 150.0, "LINEAR", "AUTO"]], "y": [[0.2915276288986206, 0.0, "LINEAR", "AUTO"], [0.21864572167396545, 166.66666666666666, "LINEAR", "AUTO"], [0.0624702125787735, 100.00000000000003, "LINEAR", "AUTO"], [0.0, 150.0, "LINEAR", "AUTO"]]}, "rotation_euler": {"x": [[2.2122143889063857, 0.0, "LINEAR", "AUTO"], [1.6591607383189364, 166.66666666666666, "LINEAR", "AUTO"], [0.47404597097185575, 100.00000000000003, "LINEAR", "AUTO"], [0.0, 150.0, "LINEAR", "AUTO"]], "z": [[-48.21786729477217, 0.0, "LINEAR", "AUTO"], [-36.16339961730548, 166.66666666666666, "LINEAR", "AUTO"], [-10.332401110335347, 100.00000000000003, "LINEAR", "AUTO"], [-0.0, 150.0, "LINEAR", "AUTO"]], "y": [[27.10300512666912, 0.0, "LINEAR", "AUTO"], [20.327254271888663, 166.66666666666666, "LINEAR", "AUTO"], [5.807786690890005, 100.00000000000003, "LINEAR", "AUTO"], [0.0, 150.0, "LINEAR", "AUTO"]]}}}, "ReloadStart": {"MainBody": {"location": {"x": [[0.0, 0.0, "LINEAR", "AUTO"], [-0.7295733690261841, 166.66666666666666, "LINEAR", "AUTO"], [-0.7152981162071228, 50.00000000000003, "LINEAR", "AUTO"], [-0.7095879912376404, 66.66666666666663, "LINEAR", "AUTO"], [-0.7295733690261841, 116.66666666666669, "LINEAR", "AUTO"]], "z": [[-0.0, 0.0, "LINEAR", "AUTO"], [-0.29214829206466675, 166.66666666666666, "LINEAR", "AUTO"], [-0.28362342715263367, 50.00000000000003, "LINEAR", "AUTO"], [-0.28021347522735596, 66.66666666666663, "LINEAR", "AUTO"], [-0.29214829206466675, 116.66666666666669, "LINEAR", "AUTO"]], "y": [[0.0, 0.0, "LINEAR", "AUTO"], [0.2915276288986206, 166.66666666666666, "LINEAR", "AUTO"], [0.4171614646911621, 50.00000000000003, "LINEAR", "AUTO"], [0.4674150049686432, 66.66666666666663, "LINEAR", "AUTO"], [0.2915276288986206, 116.66666666666669, "LINEAR", "AUTO"]]}, "rotation_euler": {"x": [[0.0, 0.0, "LINEAR", "AUTO"], [2.2122143889063857, 166.66666666666666, "LINEAR", "AUTO"], [5.485797059263618, 50.00000000000003, "LINEAR", "AUTO"], [6.795230554293333, 66.66666666666663, "LINEAR", "AUTO"], [2.2122143889063857, 116.66666666666669, "LINEAR", "AUTO"]], "z": [[-0.0, 0.0, "LINEAR", "AUTO"], [-48.21786729477217, 166.66666666666666, "LINEAR", "AUTO"], [-50.902555110315724, 50.00000000000003, "LINEAR", "AUTO"], [-51.976428187476394, 66.66666666666663, "LINEAR", "AUTO"], [-48.21786729477217, 116.66666666666669, "LINEAR", "AUTO"]], "y": [[0.0, 0.0, "LINEAR", "AUTO"], [27.10300512666912, 166.66666666666666, "LINEAR", "AUTO"], [26.843731145775436, 50.00000000000003, "LINEAR", "AUTO"], [26.74002155341796, 66.66666666666663, "LINEAR", "AUTO"], [27.10300512666912, 116.66666666666669, "LINEAR", "AUTO"]]}}, "Shell": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, 0.0, "AUTO_CLAMPED"], [1.8812716007232666e-07, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, 1.5194885349956166e-07, "AUTO_CLAMPED", 161.11111640930176, 2.1073859102216375e-07, "AUTO_CLAMPED"], [2.384185791015625e-07, 83.33333333333334, "BEZIER", "AUTO", 188.88888359069824, 1.8812716007232666e-07, "AUTO_CLAMPED", 244.4444497426351, 2.8870999813079834e-07, "AUTO_CLAMPED"], [0.004309164825826883, 83.33333333333331, "BEZIER", "AUTO", 272.2222328186035, 0.004308667965233326, "AUTO_CLAMPED", 316.66666666666663, 0.00430946284905076, "AUTO_CLAMPED"], [0.00430946284905076, 50.0, "BEZIER", "AUTO", 333.3333333333333, 0.00430946284905076, "AUTO_CLAMPED", 366.66666666666663, 0.00430946284905076, "AUTO_CLAMPED"]], "z": [[-2.9000000953674316, 0.0, "BEZIER", "AUTO", 44.444445768992104, -2.9000000953674316, "AUTO_CLAMPED"], [-2.0142228603363037, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, -2.0142228603363037, "AUTO_CLAMPED", 161.11111640930176, -2.0142228603363037, "AUTO_CLAMPED"], [-2.2258617877960205, 83.33333333333334, "BEZIER", "AUTO", 188.88888359069824, -2.0142228603363037, "AUTO_CLAMPED", 244.4444497426351, -2.4375007152557373, "AUTO_CLAMPED"], [-3.127822160720825, 83.33333333333331, "BEZIER", "AUTO", 272.2222328186035, -3.127822160720825, "AUTO_CLAMPED", 316.66666666666663, -3.127822160720825, "AUTO_CLAMPED"], [-3.009427070617676, 50.0, "BEZIER", "AUTO", 333.3333333333333, -3.009427070617676, "AUTO_CLAMPED", 366.66666666666663, -3.009427070617676, "AUTO_CLAMPED"]], "y": [[-1.2060743570327759, 0.0, "BEZIER", "AUTO", 44.444445768992104, -1.2060743570327759, "AUTO_CLAMPED"], [-0.690565824508667, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, -1.2060743570327759, "AUTO_CLAMPED", 161.11111640930176, -0.36837297677993774, "AUTO_CLAMPED"], [0.8053045272827148, 83.33333333333334, "BEZIER", "AUTO", 188.88888359069824, 0.4213707149028778, "AUTO_CLAMPED", 244.4444497426351, 1.1892383098602295, "AUTO_CLAMPED"], [1.2387430667877197, 83.33333333333331, "BEZIER", "AUTO", 272.2222328186035, 1.1673623323440552, "AUTO_CLAMPED", 316.66666666666663, 1.2815715074539185, "AUTO_CLAMPED"], [1.3579723834991455, 50.0, "BEZIER", "AUTO", 333.3333333333333, 1.3579723834991455, "AUTO_CLAMPED", 366.66666666666663, 1.3579723834991455, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, 0.0, "AUTO_CLAMPED"], [0.0, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, 0.0, "AUTO_CLAMPED", 161.11111640930176, 0.0, "AUTO_CLAMPED"], [21.14787588745631, 83.33333333333334, "BEZIER", "AUTO", 188.88888359069824, 21.14787588745631, "AUTO_CLAMPED", 244.4444497426351, 21.14787588745631, "AUTO_CLAMPED"], [0.40499606683590605, 83.33333333333331, "BEZIER", "AUTO", 272.2222328186035, 0.40499606683590605, "AUTO_CLAMPED", 316.66666666666663, 0.40499606683590605, "AUTO_CLAMPED"], [0.40499606683590605, 50.0, "BEZIER", "AUTO", 333.3333333333333, 0.40499606683590605, "AUTO_CLAMPED", 366.66666666666663, 0.40499606683590605, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, -0.0, "AUTO_CLAMPED"], [-0.0, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, -0.0, "AUTO_CLAMPED", 161.11111640930176, -0.0, "AUTO_CLAMPED"], [-0.0, 83.33333333333334, "BEZIER", "AUTO", 188.88888359069824, -0.0, "AUTO_CLAMPED", 244.4444497426351, -0.0, "AUTO_CLAMPED"], [-1.0271807443729786e-06, 83.33333333333331, "BEZIER", "AUTO", 272.2222328186035, -1.0271807443729786e-06, "AUTO_CLAMPED", 316.66666666666663, -1.0271807443729786e-06, "AUTO_CLAMPED"], [-1.0271807443729786e-06, 50.0, "BEZIER", "AUTO", 333.3333333333333, -1.0271807443729786e-06, "AUTO_CLAMPED", 366.66666666666663, -1.0271807443729786e-06, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, 0.0, "AUTO_CLAMPED"], [0.0, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, 0.0, "AUTO_CLAMPED", 161.11111640930176, 0.0, "AUTO_CLAMPED"], [-1.9209907040660864e-06, 83.33333333333334, "BEZIER", "AUTO", 188.88888359069824, -7.248212372463371e-07, "AUTO_CLAMPED", 244.4444497426351, -3.1171601708858352e-06, "AUTO_CLAMPED"], [-4.784677867278997e-06, 83.33333333333331, "BEZIER", "AUTO", 272.2222328186035, -4.784677867278997e-06, "AUTO_CLAMPED", 316.66666666666663, -4.784677867278997e-06, "AUTO_CLAMPED"], [-4.784677867278997e-06, 50.0, "BEZIER", "AUTO", 333.3333333333333, -4.784677867278997e-06, "AUTO_CLAMPED", 366.66666666666663, -4.784677867278997e-06, "AUTO_CLAMPED"]]}}}}, "offset": {"PumpGrip": [-3.073364496231079e-08, 2.8870999813079834e-08, -0.0], "Shell": [0.0, 1.600000023841858, -2.9000000953674316], "ShellFore": [0.0, 1.600260615348816, -2.8731613159179688]}, "hierarchy": {"PumpGrip": "MainBody", "Shell": "MainBody", "ShellFore": "Shell"}} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/weapons/animations/stg77.json b/src/main/resources/assets/hbm/models/weapons/animations/stg77.json new file mode 100644 index 000000000..4681ba0f0 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/animations/stg77.json @@ -0,0 +1 @@ +{"anim": {"Fire": {"Gun": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [7.314687019273744e-18, 16.666666666666668, "BEZIER", "AUTO", 11.11111044883728, 1.8286713412281298e-18, "AUTO_CLAMPED", 27.77777910232544, 1.8286718375364973e-17, "AUTO_CLAMPED"], [4.3888125424364915e-17, 33.33333333333333, "BEZIER", "AUTO", 38.888887564341225, 4.3888125424364915e-17, "AUTO_CLAMPED", 105.5555502573649, 4.3888125424364915e-17, "AUTO_CLAMPED"], [0.0, 166.66666666666669, "BEZIER", "AUTO", 161.11111640930176, 0.0, "AUTO_CLAMPED", 272.2222328186035, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 5.555555721124013, -0.0, "AUTO_CLAMPED"], [-0.3074626326560974, 16.666666666666668, "BEZIER", "AUTO", 11.11111044883728, -0.2629571557044983, "AUTO_CLAMPED", 27.77777910232544, -0.39647355675697327, "AUTO_CLAMPED"], [-0.39647355675697327, 33.33333333333333, "BEZIER", "AUTO", 38.888887564341225, -0.39647355675697327, "AUTO_CLAMPED", 105.5555502573649, -0.39647355675697327, "AUTO_CLAMPED"], [-0.0, 166.66666666666669, "BEZIER", "AUTO", 161.11111640930176, -0.0, "AUTO_CLAMPED", 272.2222328186035, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [0.03294242173433304, 16.666666666666668, "BEZIER", "AUTO", 11.11111044883728, 0.00823560357093811, "AUTO_CLAMPED", 27.77777910232544, 0.0823560580611229, "AUTO_CLAMPED"], [0.19765454530715942, 33.33333333333333, "BEZIER", "AUTO", 38.888887564341225, 0.19765454530715942, "AUTO_CLAMPED", 105.5555502573649, 0.19765454530715942, "AUTO_CLAMPED"], [0.0, 166.66666666666669, "BEZIER", "AUTO", 161.11111640930176, 0.0, "AUTO_CLAMPED", 272.2222328186035, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [1.0804245092351814, 16.666666666666668, "BEZIER", "AUTO", 11.11111044883728, 1.0804245092351814, "AUTO_CLAMPED", 44.44444179534912, 1.0804245092351814, "AUTO_CLAMPED"], [-1.8890702418668548, 83.33333333333333, "BEZIER", "AUTO", 72.22222487131755, -1.8890702418668548, "AUTO_CLAMPED", 138.88888359069824, -1.8890702418668548, "AUTO_CLAMPED"], [-6.830189170012751e-06, 116.66666666666669, "BEZIER", "AUTO", 177.77778307596842, -6.830189170012751e-06, "AUTO_CLAMPED", 255.55555025736493, -6.830189170012751e-06, "AUTO_CLAMPED"]], "z": [[0.0, 0.0, "BEZIER", "AUTO", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [-6.286747389742679e-16, 16.666666666666668, "BEZIER", "AUTO", 11.11111044883728, -6.286747389742679e-16, "AUTO_CLAMPED", 44.44444179534912, -6.286747389742679e-16, "AUTO_CLAMPED"], [4.294603873921931e-18, 83.33333333333333, "BEZIER", "AUTO", 72.22222487131755, 4.294603873921931e-18, "AUTO_CLAMPED", 138.88888359069824, 4.294603873921931e-18, "AUTO_CLAMPED"], [-0.0, 116.66666666666669, "BEZIER", "AUTO", 177.77778307596842, -0.0, "AUTO_CLAMPED", 255.55555025736493, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 5.555555721124013, 0.0, "AUTO_CLAMPED"], [1.2765992093518362e-18, 16.666666666666668, "BEZIER", "AUTO", 11.11111044883728, 1.2765992093518362e-18, "AUTO_CLAMPED", 44.44444179534912, 1.2765992093518362e-18, "AUTO_CLAMPED"], [-3.3053638735980754e-16, 83.33333333333333, "BEZIER", "AUTO", 72.22222487131755, -3.3053638735980754e-16, "AUTO_CLAMPED", 138.88888359069824, -3.3053638735980754e-16, "AUTO_CLAMPED"], [0.0, 116.66666666666669, "BEZIER", "AUTO", 177.77778307596842, 0.0, "AUTO_CLAMPED", 255.55555025736493, 0.0, "AUTO_CLAMPED"]]}}, "Safety": {"location": {"x": [[-1.485612965979044e-08, 0.0, "BEZIER", "AUTO", 5.555555721124013, -1.485612965979044e-08, "AUTO_CLAMPED"], [0.25, 16.666666666666668, "BEZIER", "AUTO", 11.11111044883728, 0.25, "AUTO_CLAMPED", 677.7777989705404, 0.25, "AUTO_CLAMPED"], [0.25, 1983.3333333333333, "BEZIER", "AUTO", 1338.8888041178386, 0.25, "AUTO_CLAMPED", 2027.7777353922525, 0.25, "AUTO_CLAMPED"], [0.0, 83.33333333333348, "BEZIER", "AUTO", 2055.5555979410806, 0.0, "AUTO_CLAMPED", 2111.111068725586, 0.0, "AUTO_CLAMPED"]]}}}, "FireDry": {"Gun": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, 0.0, "AUTO_CLAMPED"], [0.0, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, 0.0, "AUTO_CLAMPED", 194.44444974263507, 0.0, "AUTO_CLAMPED"], [-0.1619010716676712, 183.3333333333333, "BEZIER", "AUTO", 255.55555025736493, -0.1049237996339798, "AUTO_CLAMPED", 350.0, -0.1929795891046524, "AUTO_CLAMPED"], [-0.23081070184707642, 100.00000000000006, "BEZIER", "AUTO", 383.3333333333333, -0.20979301631450653, "AUTO_CLAMPED", 461.1111005147298, -0.25883427262306213, "AUTO_CLAMPED"], [-0.2943320870399475, 133.33333333333331, "BEZIER", "AUTO", 505.5555661519369, -0.2943320870399475, "AUTO_CLAMPED", 572.2222010294596, -0.2943320870399475, "AUTO_CLAMPED"], [-0.21849314868450165, 66.66666666666674, "BEZIER", "AUTO", 594.444465637207, -0.25429102778434753, "AUTO_CLAMPED", 705.555534362793, -0.07530158758163452, "AUTO_CLAMPED"], [0.0, 266.6666666666665, "BEZIER", "AUTO", 794.444465637207, 0.0, "AUTO_CLAMPED", 972.2222010294597, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, -0.0, "AUTO_CLAMPED"], [-0.0, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, -0.0, "AUTO_CLAMPED", 194.44444974263507, -0.0, "AUTO_CLAMPED"], [0.0017719045281410217, 183.3333333333333, "BEZIER", "AUTO", 255.55555025736493, 0.0017719045281410217, "AUTO_CLAMPED", 350.0, 0.0017719045281410217, "AUTO_CLAMPED"], [-0.30075472593307495, 100.00000000000006, "BEZIER", "AUTO", 383.3333333333333, -0.23500275611877441, "AUTO_CLAMPED", 461.1111005147298, -0.38842400908470154, "AUTO_CLAMPED"], [-0.38842400908470154, 133.33333333333331, "BEZIER", "AUTO", 505.5555661519369, -0.38842400908470154, "AUTO_CLAMPED", 572.2222010294596, -0.38842400908470154, "AUTO_CLAMPED"], [-0.08043090999126434, 66.66666666666674, "BEZIER", "AUTO", 594.444465637207, -0.10053864121437073, "AUTO_CLAMPED", 705.555534362793, -0.0, "AUTO_CLAMPED"], [-0.0, 266.6666666666665, "BEZIER", "AUTO", 794.444465637207, -0.0, "AUTO_CLAMPED", 972.2222010294597, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, 0.0, "AUTO_CLAMPED"], [0.0, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, 0.0, "AUTO_CLAMPED", 194.44444974263507, 0.0, "AUTO_CLAMPED"], [0.8948926329612732, 183.3333333333333, "BEZIER", "AUTO", 255.55555025736493, 0.8948926329612732, "AUTO_CLAMPED", 350.0, 0.8948926329612732, "AUTO_CLAMPED"], [0.8227108120918274, 100.00000000000006, "BEZIER", "AUTO", 383.3333333333333, 0.8227108120918274, "AUTO_CLAMPED", 461.1111005147298, 0.8227108120918274, "AUTO_CLAMPED"], [0.9215061664581299, 133.33333333333331, "BEZIER", "AUTO", 505.5555661519369, 0.9215061664581299, "AUTO_CLAMPED", 572.2222010294596, 0.9215061664581299, "AUTO_CLAMPED"], [0.8227109313011169, 66.66666666666674, "BEZIER", "AUTO", 594.444465637207, 0.8827967643737793, "AUTO_CLAMPED", 705.555534362793, 0.5823675394058228, "AUTO_CLAMPED"], [0.0, 266.6666666666665, "BEZIER", "AUTO", 794.444465637207, 0.0, "AUTO_CLAMPED", 972.2222010294597, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, 0.0, "AUTO_CLAMPED"], [0.0, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, 0.0, "AUTO_CLAMPED", 194.44444974263507, 0.0, "AUTO_CLAMPED"], [-8.03014668547821, 183.3333333333333, "BEZIER", "AUTO", 255.55555025736493, -5.0853387993575385, "AUTO_CLAMPED", 350.0, -9.636405687684693, "AUTO_CLAMPED"], [-11.123879162488192, 100.00000000000006, "BEZIER", "AUTO", 383.3333333333333, -10.605811875263665, "AUTO_CLAMPED", 461.1111005147298, -11.8146349762718, "AUTO_CLAMPED"], [-11.8146349762718, 133.33333333333331, "BEZIER", "AUTO", 505.5555661519369, -11.8146349762718, "AUTO_CLAMPED", 572.2222010294596, -11.8146349762718, "AUTO_CLAMPED"], [-7.397934984391721, 66.66666666666674, "BEZIER", "AUTO", 594.444465637207, -9.24741873048965, "AUTO_CLAMPED", 705.555534362793, 0.0, "AUTO_CLAMPED"], [0.0, 266.6666666666665, "BEZIER", "AUTO", 794.444465637207, 0.0, "AUTO_CLAMPED", 972.2222010294597, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, -0.0, "AUTO_CLAMPED"], [-0.0, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, -0.0, "AUTO_CLAMPED", 194.44444974263507, -0.0, "AUTO_CLAMPED"], [4.904490331174411, 183.3333333333333, "BEZIER", "AUTO", 255.55555025736493, 3.6124584506025945, "AUTO_CLAMPED", 350.0, 5.60923522615185, "AUTO_CLAMPED"], [5.641247895904876, 100.00000000000006, "BEZIER", "AUTO", 383.3333333333333, 5.62360509039191, "AUTO_CLAMPED", 461.1111005147298, 5.664771494293223, "AUTO_CLAMPED"], [5.694113986967598, 133.33333333333331, "BEZIER", "AUTO", 505.5555661519369, 5.694113986967598, "AUTO_CLAMPED", 572.2222010294596, 5.694113986967598, "AUTO_CLAMPED"], [5.0084014141124, 66.66666666666674, "BEZIER", "AUTO", 594.444465637207, 5.4078961904586835, "AUTO_CLAMPED", 705.555534362793, 3.4104218818404406, "AUTO_CLAMPED"], [-0.0, 266.6666666666665, "BEZIER", "AUTO", 794.444465637207, -0.0, "AUTO_CLAMPED", 972.2222010294597, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, 0.0, "AUTO_CLAMPED"], [0.0, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, 0.0, "AUTO_CLAMPED", 194.44444974263507, 0.0, "AUTO_CLAMPED"], [-2.5315146335470806, 183.3333333333333, "BEZIER", "AUTO", 255.55555025736493, -1.7923157030751582, "AUTO_CLAMPED", 350.0, -2.934714147187862, "AUTO_CLAMPED"], [-3.140443713856877, 100.00000000000006, "BEZIER", "AUTO", 383.3333333333333, -3.0245894048248863, "AUTO_CLAMPED", 461.1111005147298, -3.2949163393429433, "AUTO_CLAMPED"], [-3.495574063666401, 133.33333333333331, "BEZIER", "AUTO", 505.5555661519369, -3.495574063666401, "AUTO_CLAMPED", 572.2222010294596, -3.495574063666401, "AUTO_CLAMPED"], [-1.197574526497065, 66.66666666666674, "BEZIER", "AUTO", 594.444465637207, -1.4969681848017575, "AUTO_CLAMPED", 705.555534362793, 0.0, "AUTO_CLAMPED"], [0.0, 266.6666666666665, "BEZIER", "AUTO", 794.444465637207, 0.0, "AUTO_CLAMPED", 972.2222010294597, 0.0, "AUTO_CLAMPED"]]}}, "Handle": {"location": {"x": [[0.375, 0.0, "BEZIER", "AUTO", 72.22222487131755, 0.375, "AUTO_CLAMPED"], [0.375, 216.66666666666669, "BEZIER", "AUTO", 144.44443384806317, 0.375, "AUTO_CLAMPED", 266.6666666666667, 0.375, "AUTO_CLAMPED"], [0.29343682527542114, 149.99999999999994, "BEZIER", "EASE_IN", 316.66666666666663, 0.29343682527542114, "AUTO_CLAMPED", 405.55556615193683, 0.29343682527542114, "AUTO_CLAMPED"], [0.29343682527542114, 116.66666666666669, "QUAD", "EASE_IN", 444.44443384806317, 0.29343682527542114, "AUTO_CLAMPED"], [0.375, 50.00000000000006, "BEZIER", "AUTO", 550.0, 0.375, "AUTO_CLAMPED"]], "z": [[2.375, 0.0, "BEZIER", "AUTO", 72.22222487131755, 2.375, "AUTO_CLAMPED"], [2.375, 216.66666666666669, "BEZIER", "AUTO", 144.44443384806317, 2.375, "AUTO_CLAMPED", 266.6666666666667, 2.375, "AUTO_CLAMPED"], [0.3861556053161621, 149.99999999999994, "BEZIER", "EASE_IN", 316.66666666666663, 0.3861556053161621, "AUTO_CLAMPED", 405.55556615193683, 0.3861556053161621, "AUTO_CLAMPED"], [0.3861556053161621, 116.66666666666669, "QUAD", "EASE_IN", 444.44443384806317, 0.3861556053161621, "AUTO_CLAMPED"], [2.375, 50.00000000000006, "BEZIER", "AUTO", 550.0, 2.375, "AUTO_CLAMPED"]], "y": [[-0.062499821186065674, 0.0, "BEZIER", "AUTO", 72.22222487131755, -0.062499821186065674, "AUTO_CLAMPED"], [-0.062499821186065674, 216.66666666666669, "BEZIER", "AUTO", 144.44443384806317, -0.062499821186065674, "AUTO_CLAMPED", 266.6666666666667, -0.062499821186065674, "AUTO_CLAMPED"], [-0.10900178551673889, 149.99999999999994, "BEZIER", "EASE_IN", 316.66666666666663, -0.10900178551673889, "AUTO_CLAMPED", 405.55556615193683, -0.10900178551673889, "AUTO_CLAMPED"], [-0.10900178551673889, 116.66666666666669, "QUAD", "EASE_IN", 444.44443384806317, -0.10900178551673889, "AUTO_CLAMPED"], [-0.062499821186065674, 50.00000000000006, "BEZIER", "AUTO", 550.0, -0.062499821186065674, "AUTO_CLAMPED"]]}}, "Safety": {"location": {"x": [[-1.485612965979044e-08, 0.0, "BEZIER", "AUTO", 5.555555721124013, -1.485612965979044e-08, "AUTO_CLAMPED"], [0.25, 16.666666666666668, "BEZIER", "AUTO", 11.11111044883728, 0.25, "AUTO_CLAMPED", 677.7777989705404, 0.25, "AUTO_CLAMPED"], [0.25, 1983.3333333333333, "BEZIER", "AUTO", 1338.8888041178386, 0.25, "AUTO_CLAMPED", 2027.7777353922525, 0.25, "AUTO_CLAMPED"], [0.0, 83.33333333333348, "BEZIER", "AUTO", 2055.5555979410806, 0.0, "AUTO_CLAMPED", 2111.111068725586, 0.0, "AUTO_CLAMPED"]]}}}, "Inspect": {"Barrel": {"location": {"x": [[-3.4825498573809455e-07, 0.0, "BEZIER", "AUTO", 194.44444974263507, -3.4825498573809455e-07, "AUTO_CLAMPED"], [-3.4825498573809455e-07, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, -3.4825498573809455e-07, "AUTO_CLAMPED", 661.1111323038737, -3.4825498573809455e-07, "AUTO_CLAMPED"], [-3.476189931461704e-07, 233.33333333333326, "BEZIER", "AUTO", 738.8888676961262, -3.478257042388577e-07, "AUTO_CLAMPED", 961.1111323038737, -3.4723512953860336e-07, "AUTO_CLAMPED"], [-3.2426760299131274e-07, 433.33333333333337, "BEZIER", "AUTO", 1105.5555979410808, -3.476189931461704e-07, "AUTO_CLAMPED", 1277.7777353922527, -3.197769444795995e-07, "AUTO_CLAMPED"], [1.0077298879623413, 83.33333333333326, "BEZIER", "AUTO", 1305.5555979410806, 0.5834590196609497, "AUTO_CLAMPED", 1416.6666666666667, 2.2805423736572266, "AUTO_CLAMPED"], [2.2805423736572266, 250.0, "BEZIER", "AUTO", 1500.0, 2.219541549682617, "AUTO_CLAMPED", 1638.8889312744138, 2.321209669113159, "AUTO_CLAMPED"], [2.416100025177002, 166.66666666666674, "BEZIER", "AUTO", 1694.4444020589194, 2.416100025177002, "AUTO_CLAMPED", 1827.7777353922527, 2.416100025177002, "AUTO_CLAMPED"], [0.6327074766159058, 233.33333333333348, "BEZIER", "AUTO", 1905.5555979410808, 0.8426411747932434, "AUTO_CLAMPED", 2266.6666666666665, -0.13205105066299438, "AUTO_CLAMPED"], [-0.13205105066299438, 850.0, "BEZIER", "AUTO", 2550.0, -0.13205105066299438, "AUTO_CLAMPED", 2944.4445292154946, -0.13205105066299438, "AUTO_CLAMPED"], [1.7186524868011475, 333.33333333333303, "BEZIER", "AUTO", 3055.5554707845054, 0.9271268844604492, "AUTO_CLAMPED", 3222.222137451172, 2.114415168762207, "AUTO_CLAMPED"], [2.443265438079834, 166.66666666666697, "BEZIER", "AUTO", 3277.7778625488277, 2.443265438079834, "AUTO_CLAMPED", 3461.1111958821616, 2.443265438079834, "AUTO_CLAMPED"], [-3.2426760299131274e-07, 383.3333333333335, "BEZIER", "AUTO", 3588.8888041178384, -2.8295360721131146e-07, "AUTO_CLAMPED", 3788.8888041178384, -3.476189931461704e-07, "AUTO_CLAMPED"], [-3.476189931461704e-07, 216.66666666666606, "BEZIER", "AUTO", 3861.111195882161, -3.4734756582111004e-07, "AUTO_CLAMPED", 3983.3333333333335, -3.478068890672148e-07, "AUTO_CLAMPED"], [-3.4825498573809455e-07, 150.0, "BEZIER", "AUTO", 4033.333333333333, -3.4825498573809455e-07, "AUTO_CLAMPED", 4133.333333333333, -3.4825498573809455e-07, "AUTO_CLAMPED"]], "z": [[2.999999761581421, 0.0, "BEZIER", "AUTO", 194.44444974263507, 2.999999761581421, "AUTO_CLAMPED"], [2.999999761581421, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, 2.999999761581421, "AUTO_CLAMPED", 661.1111323038737, 2.999999761581421, "AUTO_CLAMPED"], [3.153888702392578, 233.33333333333326, "BEZIER", "AUTO", 738.8888676961262, 2.999999761581421, "AUTO_CLAMPED", 961.1111323038737, 3.4396824836730957, "AUTO_CLAMPED"], [8.80422592163086, 433.33333333333337, "BEZIER", "AUTO", 1105.5555979410808, 7.72268009185791, "AUTO_CLAMPED", 1277.7777353922527, 9.012215614318848, "AUTO_CLAMPED"], [9.101808547973633, 83.33333333333326, "BEZIER", "AUTO", 1305.5555979410806, 9.101808547973633, "AUTO_CLAMPED", 1416.6666666666667, 9.101808547973633, "AUTO_CLAMPED"], [9.039411544799805, 250.0, "BEZIER", "AUTO", 1500.0, 9.101808547973633, "AUTO_CLAMPED", 1638.8889312744138, 8.99781322479248, "AUTO_CLAMPED"], [4.012010097503662, 166.66666666666674, "BEZIER", "AUTO", 1694.4444020589194, 4.076910972595215, "AUTO_CLAMPED", 1827.7777353922527, 3.9211485385894775, "AUTO_CLAMPED"], [3.9211485385894775, 233.33333333333348, "BEZIER", "AUTO", 1905.5555979410808, 3.926347017288208, "AUTO_CLAMPED", 2266.6666666666665, 3.9022114276885986, "AUTO_CLAMPED"], [3.7453043460845947, 850.0, "BEZIER", "AUTO", 2550.0, 3.7453043460845947, "AUTO_CLAMPED", 2944.4445292154946, 3.7453043460845947, "AUTO_CLAMPED"], [4.118513107299805, 333.33333333333303, "BEZIER", "AUTO", 3055.5554707845054, 3.7453043460845947, "AUTO_CLAMPED", 3222.222137451172, 4.305117607116699, "AUTO_CLAMPED"], [5.457437992095947, 166.66666666666697, "BEZIER", "AUTO", 3277.7778625488277, 4.835398197174072, "AUTO_CLAMPED", 3461.1111958821616, 6.888129711151123, "AUTO_CLAMPED"], [8.80422592163086, 383.3333333333335, "BEZIER", "AUTO", 3588.8888041178384, 8.80422592163086, "AUTO_CLAMPED", 3788.8888041178384, 8.80422592163086, "AUTO_CLAMPED"], [3.153888702392578, 216.66666666666606, "BEZIER", "AUTO", 3861.111195882161, 3.3761727809906006, "AUTO_CLAMPED", 3983.3333333333335, 2.999999761581421, "AUTO_CLAMPED"], [2.999999761581421, 150.0, "BEZIER", "AUTO", 4033.333333333333, 2.999999761581421, "AUTO_CLAMPED", 4133.333333333333, 2.999999761581421, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 194.44444974263507, 0.0, "AUTO_CLAMPED"], [0.0, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, 0.0, "AUTO_CLAMPED", 661.1111323038737, 0.0, "AUTO_CLAMPED"], [-1.14656162342186e-09, 233.33333333333326, "BEZIER", "AUTO", 738.8888676961262, 0.0, "AUTO_CLAMPED", 961.1111323038737, -3.2758902257512545e-09, "AUTO_CLAMPED"], [-4.3244856584578883e-08, 433.33333333333337, "BEZIER", "AUTO", 1105.5555979410808, -4.3244856584578883e-08, "AUTO_CLAMPED", 1277.7777353922527, -4.3244856584578883e-08, "AUTO_CLAMPED"], [0.451265811920166, 83.33333333333326, "BEZIER", "AUTO", 1305.5555979410806, 0.451265811920166, "AUTO_CLAMPED", 1416.6666666666667, 0.451265811920166, "AUTO_CLAMPED"], [0.202208012342453, 250.0, "BEZIER", "AUTO", 1500.0, 0.202208012342453, "AUTO_CLAMPED", 1638.8889312744138, 0.202208012342453, "AUTO_CLAMPED"], [1.4557093381881714, 166.66666666666674, "BEZIER", "AUTO", 1694.4444020589194, 0.9137952327728271, "AUTO_CLAMPED", 1827.7777353922527, 2.2143890857696533, "AUTO_CLAMPED"], [2.640509605407715, 233.33333333333348, "BEZIER", "AUTO", 1905.5555979410808, 2.640509605407715, "AUTO_CLAMPED", 2266.6666666666665, 2.640509605407715, "AUTO_CLAMPED"], [2.3980705738067627, 850.0, "BEZIER", "AUTO", 2550.0, 2.5700769424438477, "AUTO_CLAMPED", 2944.4445292154946, 2.3306171894073486, "AUTO_CLAMPED"], [2.0349507331848145, 333.33333333333303, "BEZIER", "AUTO", 3055.5554707845054, 2.2475428581237793, "AUTO_CLAMPED", 3222.222137451172, 1.928654670715332, "AUTO_CLAMPED"], [1.5582460165023804, 166.66666666666697, "BEZIER", "AUTO", 3277.7778625488277, 1.789979100227356, "AUTO_CLAMPED", 3461.1111958821616, 1.0252599716186523, "AUTO_CLAMPED"], [-4.3244856584578883e-08, 383.3333333333335, "BEZIER", "AUTO", 3588.8888041178384, -4.3244856584578883e-08, "AUTO_CLAMPED", 3788.8888041178384, -4.3244856584578883e-08, "AUTO_CLAMPED"], [-1.14656162342186e-09, 216.66666666666606, "BEZIER", "AUTO", 3861.111195882161, -2.8027060672286552e-09, "AUTO_CLAMPED", 3983.3333333333335, 0.0, "AUTO_CLAMPED"], [0.0, 150.0, "BEZIER", "AUTO", 4033.333333333333, 0.0, "AUTO_CLAMPED", 4133.333333333333, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[4.2688682312579694e-07, 0.0, "BEZIER", "AUTO", 194.44444974263507, 4.2688682312579694e-07, "AUTO_CLAMPED"], [4.2688682312579694e-07, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, 4.2688682312579694e-07, "AUTO_CLAMPED", 683.3333333333334, 4.2688682312579694e-07, "AUTO_CLAMPED"], [4.2688682312579694e-07, 299.9999999999999, "BEZIER", "AUTO", 783.3333333333334, 4.2688682312579694e-07, "AUTO_CLAMPED", 972.2222010294597, 4.2688682312579694e-07, "AUTO_CLAMPED"], [4.2688682312579694e-07, 266.66666666666674, "BEZIER", "AUTO", 1061.1111323038738, 4.2688682312579694e-07, "AUTO_CLAMPED", 1166.6666666666667, 4.2688682312579694e-07, "AUTO_CLAMPED"], [4.2688682312579694e-07, 50.0, "BEZIER", "AUTO", 1183.3333333333333, 4.2688682312579694e-07, "AUTO_CLAMPED", 1244.4444020589192, 4.2688682312579694e-07, "AUTO_CLAMPED"], [-4.966584861579466, 133.33333333333326, "BEZIER", "AUTO", 1288.888931274414, -4.966584861579466, "AUTO_CLAMPED", 1394.4444020589192, -4.966584861579466, "AUTO_CLAMPED"], [1.9358982322598737, 183.33333333333326, "BEZIER", "AUTO", 1455.5555979410808, 1.9358982322598737, "AUTO_CLAMPED", 1688.888931274414, 1.9358982322598737, "AUTO_CLAMPED"], [-6.827979603816252, 516.6666666666667, "BEZIER", "AUTO", 1861.111068725586, -5.420612722032778, "AUTO_CLAMPED", 2300.0, -9.007128406620371, "AUTO_CLAMPED"], [-9.007128406620371, 800.0000000000002, "BEZIER", "AUTO", 2566.6666666666665, -9.007128406620371, "AUTO_CLAMPED", 2922.222137451172, -9.007128406620371, "AUTO_CLAMPED"], [2.9107004827265666, 266.6666666666665, "BEZIER", "AUTO", 3011.111195882161, 2.9107004827265666, "AUTO_CLAMPED", 3244.4445292154946, 2.9107004827265666, "AUTO_CLAMPED"], [0.48410032959523186, 433.33333333333303, "BEZIER", "AUTO", 3388.888804117839, 1.3711487364924237, "AUTO_CLAMPED", 3577.777862548828, 0.21116234182352578, "AUTO_CLAMPED"], [4.2688682312579694e-07, 133.33333333333348, "BEZIER", "AUTO", 3622.2221374511714, 4.2688682312579694e-07, "AUTO_CLAMPED", 3755.5554707845054, 4.2688682312579694e-07, "AUTO_CLAMPED"], [4.2688682312579694e-07, 266.6666666666665, "BEZIER", "AUTO", 3844.4445292154946, 4.2688682312579694e-07, "AUTO_CLAMPED", 3983.3333333333335, 4.2688682312579694e-07, "AUTO_CLAMPED"], [4.2688682312579694e-07, 150.0, "BEZIER", "AUTO", 4033.333333333333, 4.2688682312579694e-07, "AUTO_CLAMPED", 4133.333333333333, 4.2688682312579694e-07, "AUTO_CLAMPED"]], "z": [[5.336085289072462e-08, 0.0, "BEZIER", "AUTO", 194.44444974263507, 5.336085289072462e-08, "AUTO_CLAMPED"], [5.336085289072462e-08, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, 5.336085289072462e-08, "AUTO_CLAMPED", 683.3333333333334, 5.336085289072462e-08, "AUTO_CLAMPED"], [21.229704968807646, 299.9999999999999, "BEZIER", "AUTO", 783.3333333333334, 21.229704968807646, "AUTO_CLAMPED", 972.2222010294597, 21.229704968807646, "AUTO_CLAMPED"], [-0.0, 266.66666666666674, "BEZIER", "AUTO", 1061.1111323038738, -0.0, "AUTO_CLAMPED", 1166.6666666666667, -0.0, "AUTO_CLAMPED"], [-0.0, 50.0, "BEZIER", "AUTO", 1183.3333333333333, -0.0, "AUTO_CLAMPED", 1244.4444020589192, -0.0, "AUTO_CLAMPED"], [-2.0298756588237254, 133.33333333333326, "BEZIER", "AUTO", 1288.888931274414, -2.0298756588237254, "AUTO_CLAMPED", 1394.4444020589192, -2.0298756588237254, "AUTO_CLAMPED"], [-0.5952278809173096, 183.33333333333326, "BEZIER", "AUTO", 1455.5555979410808, -2.0298756588237254, "AUTO_CLAMPED", 1688.888931274414, 3.447870101512328, "AUTO_CLAMPED"], [106.08308992424222, 516.6666666666667, "BEZIER", "AUTO", 1861.111068725586, 106.08308992424222, "AUTO_CLAMPED", 2300.0, 106.08308992424222, "AUTO_CLAMPED"], [105.00005414830997, 800.0000000000002, "BEZIER", "AUTO", 2566.6666666666665, 106.08308992424222, "AUTO_CLAMPED", 2922.222137451172, 104.63904449972894, "AUTO_CLAMPED"], [64.47990225569596, 266.6666666666665, "BEZIER", "AUTO", 3011.111195882161, 81.97973483386073, "AUTO_CLAMPED", 3244.4445292154946, 36.042676023725505, "AUTO_CLAMPED"], [21.229704968807646, 433.33333333333303, "BEZIER", "AUTO", 3388.888804117839, 21.229704968807646, "AUTO_CLAMPED", 3666.6666666666665, 21.229704968807646, "AUTO_CLAMPED"], [21.229704968807646, 400.0, "BEZIER", "AUTO", 3800.0, 21.229704968807646, "AUTO_CLAMPED", 3983.3333333333335, 21.229704968807646, "AUTO_CLAMPED"], [5.336085289072462e-08, 150.0, "BEZIER", "AUTO", 4033.333333333333, 5.336085289072462e-08, "AUTO_CLAMPED", 4133.333333333333, 5.336085289072462e-08, "AUTO_CLAMPED"]], "y": [[2.3678878470259048e-07, 0.0, "BEZIER", "AUTO", 194.44444974263507, 2.3678878470259048e-07, "AUTO_CLAMPED"], [2.3678878470259048e-07, 583.3333333333334, "BEZIER", "AUTO", 388.8888676961263, 2.3678878470259048e-07, "AUTO_CLAMPED", 683.3333333333334, 2.3678878470259048e-07, "AUTO_CLAMPED"], [2.3678878470259048e-07, 299.9999999999999, "BEZIER", "AUTO", 783.3333333333334, 2.3678878470259048e-07, "AUTO_CLAMPED", 972.2222010294597, 2.3678878470259048e-07, "AUTO_CLAMPED"], [2.3678878470259048e-07, 266.66666666666674, "BEZIER", "AUTO", 1061.1111323038738, 2.3678878470259048e-07, "AUTO_CLAMPED", 1166.6666666666667, 2.3678878470259048e-07, "AUTO_CLAMPED"], [2.3678878470259048e-07, 50.0, "BEZIER", "AUTO", 1183.3333333333333, 2.3678878470259048e-07, "AUTO_CLAMPED", 1244.4444020589192, 2.3678878470259048e-07, "AUTO_CLAMPED"], [1.115360179787856, 133.33333333333326, "BEZIER", "AUTO", 1288.888931274414, 1.115360179787856, "AUTO_CLAMPED", 1394.4444020589192, 1.115360179787856, "AUTO_CLAMPED"], [-4.12851638155067, 183.33333333333326, "BEZIER", "AUTO", 1455.5555979410808, -4.12851638155067, "AUTO_CLAMPED", 1688.888931274414, -4.12851638155067, "AUTO_CLAMPED"], [9.113779249189182, 516.6666666666667, "BEZIER", "AUTO", 1861.111068725586, 9.113779249189182, "AUTO_CLAMPED", 2300.0, 9.113779249189182, "AUTO_CLAMPED"], [7.091429391613753, 800.0000000000002, "BEZIER", "AUTO", 2566.6666666666665, 9.113779249189182, "AUTO_CLAMPED", 2922.222137451172, 6.417312772421942, "AUTO_CLAMPED"], [3.5139701109787724, 266.6666666666665, "BEZIER", "AUTO", 3011.111195882161, 3.5139701109787724, "AUTO_CLAMPED", 3244.4445292154946, 3.5139701109787724, "AUTO_CLAMPED"], [5.187581608590752, 433.33333333333303, "BEZIER", "AUTO", 3388.888804117839, 5.187581608590752, "AUTO_CLAMPED", 3577.777862548828, 5.187581608590752, "AUTO_CLAMPED"], [2.3678878470259048e-07, 133.33333333333348, "BEZIER", "AUTO", 3622.2221374511714, 2.3678878470259048e-07, "AUTO_CLAMPED", 3755.5554707845054, 2.3678878470259048e-07, "AUTO_CLAMPED"], [2.3678878470259048e-07, 266.6666666666665, "BEZIER", "AUTO", 3844.4445292154946, 2.3678878470259048e-07, "AUTO_CLAMPED", 3983.3333333333335, 2.3678878470259048e-07, "AUTO_CLAMPED"], [2.3678878470259048e-07, 150.0, "BEZIER", "AUTO", 4033.333333333333, 2.3678878470259048e-07, "AUTO_CLAMPED", 4133.333333333333, 2.3678878470259048e-07, "AUTO_CLAMPED"]]}}, "Breech": {"location": {"x": [[-1.485612965979044e-08, 0.0, "BEZIER", "AUTO", 55.555554231007896, -1.485612965979044e-08, "AUTO_CLAMPED"], [-1.485612965979044e-08, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, -1.485612965979044e-08, "AUTO_CLAMPED", 194.44444974263507, -1.485612965979044e-08, "AUTO_CLAMPED"], [-1.2877069188732548e-08, 83.33333333333334, "BEZIER", "AUTO", 222.22221692403158, -1.2877069188732548e-08, "AUTO_CLAMPED", 1605.5555979410808, -1.2877069188732548e-08, "AUTO_CLAMPED"], [-1.2877069188732548e-08, 4066.666666666666, "QUAD", "EASE_IN", 2961.1109415690103, -1.2877069188732548e-08, "AUTO_CLAMPED"], [-1.2877069188732548e-08, 83.33333333333394, "BEZIER", "AUTO", 4427.777608235677, -1.2877069188732548e-08, "AUTO_CLAMPED"]], "z": [[-8.634078341174245e-08, 0.0, "BEZIER", "AUTO", 55.555554231007896, -8.634078341174245e-08, "AUTO_CLAMPED"], [-8.634078341174245e-08, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, -8.634078341174245e-08, "AUTO_CLAMPED", 194.44444974263507, -8.634078341174245e-08, "AUTO_CLAMPED"], [-1.5, 83.33333333333334, "BEZIER", "AUTO", 222.22221692403158, -1.5, "AUTO_CLAMPED", 1605.5555979410808, -1.5, "AUTO_CLAMPED"], [-1.5, 4066.666666666666, "QUAD", "EASE_IN", 2961.1109415690103, -1.5, "AUTO_CLAMPED"], [-0.0, 83.33333333333394, "BEZIER", "AUTO", 4427.777608235677, -0.0, "AUTO_CLAMPED"]], "y": [[2.3298342421984586e-11, 0.0, "BEZIER", "AUTO", 55.555554231007896, 2.3298342421984586e-11, "AUTO_CLAMPED"], [2.3298342421984586e-11, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 2.3298342421984586e-11, "AUTO_CLAMPED", 194.44444974263507, 2.3298342421984586e-11, "AUTO_CLAMPED"], [2.3298342421984586e-11, 83.33333333333334, "BEZIER", "AUTO", 222.22221692403158, 2.3298342421984586e-11, "AUTO_CLAMPED", 1605.5555979410808, 2.3298342421984586e-11, "AUTO_CLAMPED"], [2.3298342421984586e-11, 4066.666666666666, "QUAD", "EASE_IN", 2961.1109415690103, 2.3298342421984586e-11, "AUTO_CLAMPED"], [2.3298342421984586e-11, 83.33333333333394, "BEZIER", "AUTO", 4427.777608235677, 2.3298342421984586e-11, "AUTO_CLAMPED"]]}}, "Gun": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 50.0, 0.0, "AUTO_CLAMPED"], [-0.02083667740225792, 150.0, "BEZIER", "AUTO", 100.0, -0.02083667740225792, "AUTO_CLAMPED", 177.77778307596842, -0.02083667740225792, "AUTO_CLAMPED"], [0.0423724502325058, 83.33333333333334, "BEZIER", "AUTO", 205.5555502573649, 0.03780621662735939, "AUTO_CLAMPED", 272.2222328186035, 0.04876517504453659, "AUTO_CLAMPED"], [0.04876517504453659, 116.66666666666666, "BEZIER", "AUTO", 311.1111005147298, 0.04459141194820404, "AUTO_CLAMPED", 427.7777671813965, 0.05711269751191139, "AUTO_CLAMPED"], [0.15443837642669678, 233.33333333333337, "BEZIER", "AUTO", 505.5555661519369, 0.098850317299366, "AUTO_CLAMPED", 638.8888676961263, 0.1941441297531128, "AUTO_CLAMPED"], [0.27173158526420593, 166.66666666666663, "BEZIER", "AUTO", 694.444465637207, 0.2409164309501648, "AUTO_CLAMPED", 777.7777989705403, 0.2871391475200653, "AUTO_CLAMPED"], [0.29855743050575256, 83.33333333333337, "BEZIER", "AUTO", 805.555534362793, 0.29855743050575256, "AUTO_CLAMPED", 961.1111323038737, 0.29855743050575256, "AUTO_CLAMPED"], [0.2740669250488281, 383.33333333333314, "BEZIER", "AUTO", 1088.888931274414, 0.2740669250488281, "AUTO_CLAMPED", 1255.5555979410806, 0.2740669250488281, "AUTO_CLAMPED"], [0.2740669250488281, 116.66666666666674, "BEZIER", "AUTO", 1294.4444020589192, 0.2740669250488281, "AUTO_CLAMPED", 1472.2222646077473, 0.2740669250488281, "AUTO_CLAMPED"], [0.4802725315093994, 416.66666666666674, "BEZIER", "AUTO", 1611.111068725586, 0.2740669250488281, "AUTO_CLAMPED", 1827.7777353922527, 0.5957476496696472, "AUTO_CLAMPED"], [1.9431005716323853, 233.33333333333348, "BEZIER", "AUTO", 1905.5555979410808, 1.9431005716323853, "AUTO_CLAMPED", 2266.6666666666665, 1.9431005716323853, "AUTO_CLAMPED"], [1.907791018486023, 850.0, "BEZIER", "AUTO", 2550.0, 1.9431005716323853, "AUTO_CLAMPED", 3000.0, 1.8870207071304321, "AUTO_CLAMPED"], [0.3691011667251587, 500.0, "BEZIER", "AUTO", 3166.6666666666665, 1.1041052341461182, "AUTO_CLAMPED", 3388.888804117839, 0.12409980595111847, "AUTO_CLAMPED"], [-0.11557845771312714, 166.66666666666652, "BEZIER", "AUTO", 3444.4445292154946, -0.11557845771312714, "AUTO_CLAMPED", 3611.111195882161, -0.11557845771312714, "AUTO_CLAMPED"], [-0.020050223916769028, 333.3333333333335, "BEZIER", "AUTO", 3722.222137451172, -0.08285386860370636, "AUTO_CLAMPED", 3894.4445292154946, 0.014491777867078781, "AUTO_CLAMPED"], [0.05813262239098549, 183.33333333333303, "BEZIER", "AUTO", 3955.555470784505, 0.05813262239098549, "AUTO_CLAMPED", 4038.888804117838, 0.05813262239098549, "AUTO_CLAMPED"], [-0.02910347655415535, 66.66666666666652, "BEZIER", "AUTO", 4061.1111958821616, -0.020191330462694168, "AUTO_CLAMPED", 4144.444529215494, -0.0536118783056736, "AUTO_CLAMPED"], [-0.0536118783056736, 183.33333333333394, "BEZIER", "AUTO", 4205.555470784505, -0.0536118783056736, "AUTO_CLAMPED", 4311.110941569011, -0.0536118783056736, "AUTO_CLAMPED"], [-0.06167206913232803, 133.33333333333303, "BEZIER", "AUTO", 4355.555725097656, -0.0536118783056736, "AUTO_CLAMPED", 4433.333333333334, -0.06771720945835114, "AUTO_CLAMPED"], [-0.1415620893239975, 100.0, "BEZIER", "AUTO", 4466.666666666667, -0.1415620893239975, "AUTO_CLAMPED", 4550.0, -0.1415620893239975, "AUTO_CLAMPED"], [-0.08136281371116638, 150.0, "BEZIER", "AUTO", 4600.0, -0.11289574205875397, "AUTO_CLAMPED", 4711.11094156901, -0.04282256215810776, "AUTO_CLAMPED"], [0.0, 183.33333333333303, "BEZIER", "AUTO", 4772.222391764322, 0.0, "AUTO_CLAMPED", 4894.444274902344, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 50.0, -0.0, "AUTO_CLAMPED"], [0.06308488547801971, 150.0, "BEZIER", "AUTO", 100.0, 0.050379302352666855, "AUTO_CLAMPED", 177.77778307596842, 0.07014354318380356, "AUTO_CLAMPED"], [0.07014354318380356, 83.33333333333334, "BEZIER", "AUTO", 205.5555502573649, 0.07014354318380356, "AUTO_CLAMPED", 272.2222328186035, 0.07014354318380356, "AUTO_CLAMPED"], [-0.2970268726348877, 116.66666666666666, "BEZIER", "AUTO", 311.1111005147298, -0.2970268726348877, "AUTO_CLAMPED", 427.7777671813965, -0.2970268726348877, "AUTO_CLAMPED"], [0.48283126950263977, 233.33333333333337, "BEZIER", "AUTO", 505.5555661519369, 0.4784080684185028, "AUTO_CLAMPED", 638.8888676961263, 0.4859907031059265, "AUTO_CLAMPED"], [0.4859907031059265, 166.66666666666663, "BEZIER", "AUTO", 694.444465637207, 0.4859907031059265, "AUTO_CLAMPED", 777.7777989705403, 0.4859907031059265, "AUTO_CLAMPED"], [0.48505380749702454, 83.33333333333337, "BEZIER", "AUTO", 805.555534362793, 0.4859907031059265, "AUTO_CLAMPED", 961.1111323038737, 0.4807440936565399, "AUTO_CLAMPED"], [-0.9854410886764526, 383.33333333333314, "BEZIER", "AUTO", 1088.888931274414, -0.9854410886764526, "AUTO_CLAMPED", 1255.5555979410806, -0.9854410886764526, "AUTO_CLAMPED"], [-0.9854410886764526, 116.66666666666674, "BEZIER", "AUTO", 1294.4444020589192, -0.9854410886764526, "AUTO_CLAMPED", 1472.2222646077473, -0.9854410886764526, "AUTO_CLAMPED"], [-0.260303258895874, 416.66666666666674, "BEZIER", "AUTO", 1611.111068725586, -0.5004230737686157, "AUTO_CLAMPED", 1827.7777353922527, -0.12583616375923157, "AUTO_CLAMPED"], [-0.059579282999038696, 233.33333333333348, "BEZIER", "AUTO", 1905.5555979410808, -0.06816916912794113, "AUTO_CLAMPED", 2266.6666666666665, -0.02828754484653473, "AUTO_CLAMPED"], [-0.02828754484653473, 850.0, "BEZIER", "AUTO", 2550.0, -0.02828754484653473, "AUTO_CLAMPED", 3000.0, -0.02828754484653473, "AUTO_CLAMPED"], [-0.7562031745910645, 500.0, "BEZIER", "AUTO", 3166.6666666666665, -0.028287529945373535, "AUTO_CLAMPED", 3388.888804117839, -0.9988417625427246, "AUTO_CLAMPED"], [-1.45088529586792, 166.66666666666652, "BEZIER", "AUTO", 3444.4445292154946, -1.45088529586792, "AUTO_CLAMPED", 3611.111195882161, -1.45088529586792, "AUTO_CLAMPED"], [-0.34966766834259033, 333.3333333333335, "BEZIER", "AUTO", 3722.222137451172, -1.0736470222473145, "AUTO_CLAMPED", 3894.4445292154946, 0.04852098226547241, "AUTO_CLAMPED"], [0.551598072052002, 183.33333333333303, "BEZIER", "AUTO", 3955.555470784505, 0.551598072052002, "AUTO_CLAMPED", 4038.888804117838, 0.551598072052002, "AUTO_CLAMPED"], [0.21308356523513794, 66.66666666666652, "BEZIER", "AUTO", 4061.1111958821616, 0.21308356523513794, "AUTO_CLAMPED", 4144.444529215494, 0.21308356523513794, "AUTO_CLAMPED"], [0.28127816319465637, 183.33333333333394, "BEZIER", "AUTO", 4205.555470784505, 0.2418711632490158, "AUTO_CLAMPED", 4311.110941569011, 0.30993780493736267, "AUTO_CLAMPED"], [0.5588431358337402, 133.33333333333303, "BEZIER", "AUTO", 4355.555725097656, 0.3442142605781555, "AUTO_CLAMPED", 4433.333333333334, 0.7198147773742676, "AUTO_CLAMPED"], [0.9822345972061157, 100.0, "BEZIER", "AUTO", 4466.666666666667, 0.9822345972061157, "AUTO_CLAMPED", 4550.0, 0.9822345972061157, "AUTO_CLAMPED"], [0.5645393133163452, 150.0, "BEZIER", "AUTO", 4600.0, 0.7833319306373596, "AUTO_CLAMPED", 4711.11094156901, 0.2971261441707611, "AUTO_CLAMPED"], [-0.0, 183.33333333333303, "BEZIER", "AUTO", 4772.222391764322, -0.0, "AUTO_CLAMPED", 4894.444274902344, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 50.0, 0.0, "AUTO_CLAMPED"], [0.29495516419410706, 150.0, "BEZIER", "AUTO", 100.0, 0.012983113527297974, "AUTO_CLAMPED", 177.77778307596842, 0.45160630345344543, "AUTO_CLAMPED"], [0.6912786960601807, 83.33333333333334, "BEZIER", "AUTO", 205.5555502573649, 0.6912786960601807, "AUTO_CLAMPED", 272.2222328186035, 0.6912786960601807, "AUTO_CLAMPED"], [0.65456223487854, 116.66666666666666, "BEZIER", "AUTO", 311.1111005147298, 0.6773354411125183, "AUTO_CLAMPED", 427.7777671813965, 0.6090157628059387, "AUTO_CLAMPED"], [0.5281488299369812, 233.33333333333337, "BEZIER", "AUTO", 505.5555661519369, 0.5281493067741394, "AUTO_CLAMPED", 638.8888676961263, 0.5281484723091125, "AUTO_CLAMPED"], [0.5281484723091125, 166.66666666666663, "BEZIER", "AUTO", 694.444465637207, 0.5281488299369812, "AUTO_CLAMPED", 777.7777989705403, 0.5281482934951782, "AUTO_CLAMPED"], [0.4392372965812683, 83.33333333333337, "BEZIER", "AUTO", 805.555534362793, 0.4585650563240051, "AUTO_CLAMPED", 961.1111323038737, 0.35032957792282104, "AUTO_CLAMPED"], [0.35032957792282104, 383.33333333333314, "BEZIER", "AUTO", 1088.888931274414, 0.35032957792282104, "AUTO_CLAMPED", 1255.5555979410806, 0.35032957792282104, "AUTO_CLAMPED"], [0.35032957792282104, 116.66666666666674, "BEZIER", "AUTO", 1294.4444020589192, 0.35032957792282104, "AUTO_CLAMPED", 1472.2222646077473, 0.35032957792282104, "AUTO_CLAMPED"], [-0.15319062769412994, 416.66666666666674, "BEZIER", "AUTO", 1611.111068725586, -0.15319062769412994, "AUTO_CLAMPED", 1827.7777353922527, -0.15319062769412994, "AUTO_CLAMPED"], [-0.0010606944561004639, 233.33333333333348, "BEZIER", "AUTO", 1905.5555979410808, -0.03289319574832916, "AUTO_CLAMPED", 2266.6666666666665, 0.11490055918693542, "AUTO_CLAMPED"], [0.11490055918693542, 850.0, "BEZIER", "AUTO", 2550.0, 0.11490055918693542, "AUTO_CLAMPED", 3000.0, 0.11490055918693542, "AUTO_CLAMPED"], [-0.09989842027425766, 500.0, "BEZIER", "AUTO", 3166.6666666666665, -0.09989842027425766, "AUTO_CLAMPED", 3388.888804117839, -0.09989842027425766, "AUTO_CLAMPED"], [-0.08923035115003586, 166.66666666666652, "BEZIER", "AUTO", 3444.4445292154946, -0.09767797589302063, "AUTO_CLAMPED", 3611.111195882161, -0.07233510911464691, "AUTO_CLAMPED"], [0.008636273443698883, 333.3333333333335, "BEZIER", "AUTO", 3722.222137451172, -0.03053111955523491, "AUTO_CLAMPED", 3894.4445292154946, 0.030178340151906013, "AUTO_CLAMPED"], [0.06862585991621017, 183.33333333333303, "BEZIER", "AUTO", 3955.555470784505, 0.050922829657793045, "AUTO_CLAMPED", 4038.888804117838, 0.0750633254647255, "AUTO_CLAMPED"], [0.10057792067527771, 66.66666666666652, "BEZIER", "AUTO", 4061.1111958821616, 0.08109861612319946, "AUTO_CLAMPED", 4144.444529215494, 0.1541460007429123, "AUTO_CLAMPED"], [0.3093843460083008, 183.33333333333394, "BEZIER", "AUTO", 4205.555470784505, 0.3093843460083008, "AUTO_CLAMPED", 4311.110941569011, 0.3093843460083008, "AUTO_CLAMPED"], [0.26554036140441895, 133.33333333333303, "BEZIER", "AUTO", 4355.555725097656, 0.26554036140441895, "AUTO_CLAMPED", 4433.333333333334, 0.26554036140441895, "AUTO_CLAMPED"], [0.29273808002471924, 100.0, "BEZIER", "AUTO", 4466.666666666667, 0.29273808002471924, "AUTO_CLAMPED", 4550.0, 0.29273808002471924, "AUTO_CLAMPED"], [0.16825121641159058, 150.0, "BEZIER", "AUTO", 4600.0, 0.23345857858657837, "AUTO_CLAMPED", 4711.11094156901, 0.08855333179235458, "AUTO_CLAMPED"], [0.0, 183.33333333333303, "BEZIER", "AUTO", 4772.222391764322, 0.0, "AUTO_CLAMPED", 4894.444274902344, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 50.0, 0.0, "AUTO_CLAMPED"], [-2.9534568266006116, 150.0, "BEZIER", "AUTO", 100.0, -1.3133897753847399, "AUTO_CLAMPED", 177.77778307596842, -3.86460512909737, "AUTO_CLAMPED"], [-5.710508148522921, 83.33333333333334, "BEZIER", "AUTO", 205.5555502573649, -4.876580470678446, "AUTO_CLAMPED", 272.2222328186035, -6.87800732439201, "AUTO_CLAMPED"], [-7.696533779431753, 116.66666666666666, "BEZIER", "AUTO", 311.1111005147298, -7.696533779431753, "AUTO_CLAMPED", 427.7777671813965, -7.696533779431753, "AUTO_CLAMPED"], [-5.8089520919171385, 233.33333333333337, "BEZIER", "AUTO", 505.5555661519369, -6.371148377595473, "AUTO_CLAMPED", 638.8888676961263, -5.4073834993841094, "AUTO_CLAMPED"], [-4.539861962993749, 166.66666666666663, "BEZIER", "AUTO", 694.444465637207, -5.3951971612443375, "AUTO_CLAMPED", 777.7777989705403, -4.112194363868455, "AUTO_CLAMPED"], [-3.127623662228175, 83.33333333333337, "BEZIER", "AUTO", 805.555534362793, -3.473739656437163, "AUTO_CLAMPED", 961.1111323038737, -1.535489704668689, "AUTO_CLAMPED"], [-1.535489704668689, 383.33333333333314, "BEZIER", "AUTO", 1088.888931274414, -3.127623662228175, "AUTO_CLAMPED", 1255.5555979410806, -1.0509272700874235, "AUTO_CLAMPED"], [2.7294481796087613, 116.66666666666674, "BEZIER", "AUTO", 1294.4444020589192, 0.9161917568685786, "AUTO_CLAMPED", 1394.4444020589192, 5.578851129629048, "AUTO_CLAMPED"], [8.048309866028566, 183.33333333333326, "BEZIER", "AUTO", 1455.5555979410808, 8.048309866028566, "AUTO_CLAMPED", 1716.6666666666665, 8.048309866028566, "AUTO_CLAMPED"], [-1.0452921505787514, 600.0, "BEZIER", "AUTO", 1916.6666666666667, -1.0452921505787514, "AUTO_CLAMPED", 2355.555470784505, -1.0452921505787514, "AUTO_CLAMPED"], [0.4828017398792832, 716.666666666667, "BEZIER", "AUTO", 2594.4445292154946, -1.0452921505787514, "AUTO_CLAMPED", 2955.555470784505, 1.264617208790677, "AUTO_CLAMPED"], [8.048309866028566, 366.6666666666665, "BEZIER", "AUTO", 3077.777862548828, 8.048309866028566, "AUTO_CLAMPED", 3300.0, 8.048309866028566, "AUTO_CLAMPED"], [2.595919902325716, 300.0, "BEZIER", "AUTO", 3400.0, 4.856025443258115, "AUTO_CLAMPED", 3611.111195882161, 0.08469114405698466, "AUTO_CLAMPED"], [-1.5691175007170122, 333.3333333333335, "BEZIER", "AUTO", 3722.222137451172, -1.2756998310492575, "AUTO_CLAMPED", 3894.4445292154946, -1.7304971550012538, "AUTO_CLAMPED"], [-2.1712955793624857, 183.33333333333303, "BEZIER", "AUTO", 3955.555470784505, -1.5691175007170122, "AUTO_CLAMPED", 4100.0, -2.992447601807864, "AUTO_CLAMPED"], [-11.065961719647424, 250.00000000000045, "BEZIER", "AUTO", 4183.333333333334, -11.065961719647424, "AUTO_CLAMPED", 4311.110941569011, -11.065961719647424, "AUTO_CLAMPED"], [-9.540283581721457, 133.33333333333303, "BEZIER", "AUTO", 4355.555725097656, -11.065961719647424, "AUTO_CLAMPED", 4433.333333333334, -8.396025405163806, "AUTO_CLAMPED"], [-4.054896760694865, 100.0, "BEZIER", "AUTO", 4466.666666666667, -4.523611662297819, "AUTO_CLAMPED", 4550.0, -3.35182419484702, "AUTO_CLAMPED"], [-3.35182419484702, 150.0, "BEZIER", "AUTO", 4600.0, -3.9688641247962066, "AUTO_CLAMPED", 4711.11094156901, -2.597664161885008, "AUTO_CLAMPED"], [0.0, 183.33333333333303, "BEZIER", "AUTO", 4772.222391764322, 0.0, "AUTO_CLAMPED", 4894.444274902344, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 50.0, -0.0, "AUTO_CLAMPED"], [2.436934656232387, 150.0, "BEZIER", "AUTO", 100.0, -0.0, "AUTO_CLAMPED", 177.77778307596842, 3.7907874327556343, "AUTO_CLAMPED"], [8.29600667627908, 83.33333333333334, "BEZIER", "AUTO", 205.5555502573649, 7.150087909979468, "AUTO_CLAMPED", 272.2222328186035, 9.900292607589074, "AUTO_CLAMPED"], [9.900292607589074, 116.66666666666666, "BEZIER", "AUTO", 311.1111005147298, 9.900292607589074, "AUTO_CLAMPED", 427.7777671813965, 9.900292607589074, "AUTO_CLAMPED"], [9.537960463630007, 233.33333333333337, "BEZIER", "AUTO", 505.5555661519369, 9.900292607589074, "AUTO_CLAMPED", 638.8888676961263, 9.27915178937353, "AUTO_CLAMPED"], [3.2866599212968675, 166.66666666666663, "BEZIER", "AUTO", 694.444465637207, 3.3280098865321244, "AUTO_CLAMPED", 777.7777989705403, 3.265984938679239, "AUTO_CLAMPED"], [3.265984938679239, 83.33333333333337, "BEZIER", "AUTO", 805.555534362793, 3.265984938679239, "AUTO_CLAMPED", 961.1111323038737, 3.265984938679239, "AUTO_CLAMPED"], [3.2300122533114854, 383.33333333333314, "BEZIER", "AUTO", 1088.888931274414, 3.265984938679239, "AUTO_CLAMPED", 1255.5555979410806, 3.21906410040219, "AUTO_CLAMPED"], [2.471013671652754, 116.66666666666674, "BEZIER", "AUTO", 1294.4444020589192, 2.699584671566761, "AUTO_CLAMPED", 1394.4444020589192, 2.111830885231297, "AUTO_CLAMPED"], [1.7888114958658243, 183.33333333333326, "BEZIER", "AUTO", 1455.5555979410808, 2.471013671652754, "AUTO_CLAMPED", 1716.6666666666665, -0.44385013153805253, "AUTO_CLAMPED"], [-53.90040026911519, 600.0, "BEZIER", "AUTO", 1916.6666666666667, -53.75442205107909, "AUTO_CLAMPED", 2355.555470784505, -54.07476475334186, "AUTO_CLAMPED"], [-54.07476475334186, 716.666666666667, "BEZIER", "AUTO", 2594.4445292154946, -54.07476475334186, "AUTO_CLAMPED", 2955.555470784505, -54.07476475334186, "AUTO_CLAMPED"], [1.7888114958658243, 366.6666666666665, "BEZIER", "AUTO", 3077.777862548828, 1.7888114958658243, "AUTO_CLAMPED", 3300.0, 1.7888114958658243, "AUTO_CLAMPED"], [1.7386759863672265, 300.0, "BEZIER", "AUTO", 3400.0, 1.770021752180825, "AUTO_CLAMPED", 3611.111195882161, 1.7038473576854507, "AUTO_CLAMPED"], [1.1032046842210548, 333.3333333333335, "BEZIER", "AUTO", 3722.222137451172, 1.653517507960625, "AUTO_CLAMPED", 3894.4445292154946, 0.8005326418364618, "AUTO_CLAMPED"], [0.3466162255244121, 183.33333333333303, "BEZIER", "AUTO", 3955.555470784505, 0.3466162255244121, "AUTO_CLAMPED", 4100.0, 0.3466162255244121, "AUTO_CLAMPED"], [3.3507091664650157, 250.00000000000045, "BEZIER", "AUTO", 4183.333333333334, 3.275644106826106, "AUTO_CLAMPED", 4311.110941569011, 3.390743893398222, "AUTO_CLAMPED"], [3.390743893398222, 133.33333333333303, "BEZIER", "AUTO", 4355.555725097656, 3.390743893398222, "AUTO_CLAMPED", 4433.333333333334, 3.390743893398222, "AUTO_CLAMPED"], [2.507234591708155, 100.0, "BEZIER", "AUTO", 4466.666666666667, 2.9874869634797308, "AUTO_CLAMPED", 4550.0, 1.786855927329085, "AUTO_CLAMPED"], [0.49128061932106065, 150.0, "BEZIER", "AUTO", 4600.0, 0.8932375187805756, "AUTO_CLAMPED", 4711.11094156901, -0.0, "AUTO_CLAMPED"], [-0.0, 183.33333333333303, "BEZIER", "AUTO", 4772.222391764322, -0.0, "AUTO_CLAMPED", 4894.444274902344, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 50.0, 0.0, "AUTO_CLAMPED"], [-0.7983665113742158, 150.0, "BEZIER", "AUTO", 100.0, -0.6190833838106369, "AUTO_CLAMPED", 177.77778307596842, -0.8979682785544556, "AUTO_CLAMPED"], [-0.992514745253534, 83.33333333333334, "BEZIER", "AUTO", 205.5555502573649, -0.8618291606865364, "AUTO_CLAMPED", 272.2222328186035, -1.1754745956638424, "AUTO_CLAMPED"], [-1.6854107561248821, 116.66666666666666, "BEZIER", "AUTO", 311.1111005147298, -1.6854107561248821, "AUTO_CLAMPED", 427.7777671813965, -1.6854107561248821, "AUTO_CLAMPED"], [-1.1982608537869455, 233.33333333333337, "BEZIER", "AUTO", 505.5555661519369, -1.5772293108517543, "AUTO_CLAMPED", 638.8888676961263, -0.9275690377568215, "AUTO_CLAMPED"], [-0.1777374637585329, 166.66666666666663, "BEZIER", "AUTO", 694.444465637207, -0.5187205841464696, "AUTO_CLAMPED", 777.7777989705403, -0.007245896894457941, "AUTO_CLAMPED"], [0.2512206008928572, 83.33333333333337, "BEZIER", "AUTO", 805.555534362793, 0.14627936000938632, "AUTO_CLAMPED", 961.1111323038737, 0.7339503036207379, "AUTO_CLAMPED"], [0.7339503036207379, 383.33333333333314, "BEZIER", "AUTO", 1088.888931274414, 0.2512206008928572, "AUTO_CLAMPED", 1255.5555979410806, 0.8808680461936824, "AUTO_CLAMPED"], [1.674447235289954, 116.66666666666674, "BEZIER", "AUTO", 1294.4444020589192, 1.270214335372091, "AUTO_CLAMPED", 1394.4444020589192, 2.309670302748478, "AUTO_CLAMPED"], [2.9816544088153627, 183.33333333333326, "BEZIER", "AUTO", 1455.5555979410808, 2.9816544088153627, "AUTO_CLAMPED", 1716.6666666666665, 2.9816544088153627, "AUTO_CLAMPED"], [-9.653015000198872, 600.0, "BEZIER", "AUTO", 1916.6666666666667, -9.653015000198872, "AUTO_CLAMPED", 2355.555470784505, -9.653015000198872, "AUTO_CLAMPED"], [-9.131150981569462, 716.666666666667, "BEZIER", "AUTO", 2594.4445292154946, -9.653015000198872, "AUTO_CLAMPED", 2955.555470784505, -8.864151202950849, "AUTO_CLAMPED"], [2.9816544088153627, 366.6666666666665, "BEZIER", "AUTO", 3077.777862548828, 2.9816544088153627, "AUTO_CLAMPED", 3300.0, 2.9816544088153627, "AUTO_CLAMPED"], [2.453467982892049, 300.0, "BEZIER", "AUTO", 3400.0, 2.9324793946687984, "AUTO_CLAMPED", 3611.111195882161, 1.92123296233821, "AUTO_CLAMPED"], [0.15764028579621828, 333.3333333333335, "BEZIER", "AUTO", 3722.222137451172, 0.8583350386783988, "AUTO_CLAMPED", 3894.4445292154946, -0.22774182562093837, "AUTO_CLAMPED"], [-1.1207623258128072, 183.33333333333303, "BEZIER", "AUTO", 3955.555470784505, -0.5035574574673355, "AUTO_CLAMPED", 4100.0, -1.962405342655047, "AUTO_CLAMPED"], [-3.472777026651014, 250.00000000000045, "BEZIER", "AUTO", 4183.333333333334, -3.4388632164311965, "AUTO_CLAMPED", 4311.110941569011, -3.4908644347902658, "AUTO_CLAMPED"], [-3.4908644347902658, 133.33333333333303, "BEZIER", "AUTO", 4355.555725097656, -3.4908644347902658, "AUTO_CLAMPED", 4433.333333333334, -3.4908644347902658, "AUTO_CLAMPED"], [-2.2245484298869593, 100.0, "BEZIER", "AUTO", 4466.666666666667, -2.7440901841985643, "AUTO_CLAMPED", 4550.0, -1.445235798419552, "AUTO_CLAMPED"], [-0.8577322211232923, 150.0, "BEZIER", "AUTO", 4600.0, -1.1771962302215087, "AUTO_CLAMPED", 4711.11094156901, -0.4672762396481682, "AUTO_CLAMPED"], [0.0, 183.33333333333303, "BEZIER", "AUTO", 4772.222391764322, 0.0, "AUTO_CLAMPED", 4894.444274902344, 0.0, "AUTO_CLAMPED"]]}}, "Handle": {"location": {"x": [[0.375, 0.0, "BEZIER", "AUTO", 55.555554231007896, 0.375, "AUTO_CLAMPED"], [0.375, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 0.375, "AUTO_CLAMPED", 194.44444974263507, 0.375, "AUTO_CLAMPED"], [0.375, 83.33333333333334, "BEZIER", "AUTO", 222.22221692403158, 0.375, "AUTO_CLAMPED", 272.2222328186035, 0.375, "AUTO_CLAMPED"], [0.375, 66.66666666666663, "BEZIER", "AUTO", 294.4444338480631, 0.375, "AUTO_CLAMPED", 1650.0, 0.375, "AUTO_CLAMPED"], [0.375, 3999.9999999999995, "QUAD", "EASE_IN", 2983.3333333333335, 0.375, "AUTO_CLAMPED"], [0.375, 83.33333333333394, "BEZIER", "AUTO", 4427.777608235677, 0.375, "AUTO_CLAMPED"]], "z": [[2.375, 0.0, "BEZIER", "AUTO", 55.555554231007896, 2.375, "AUTO_CLAMPED"], [2.375, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 2.375, "AUTO_CLAMPED", 194.44444974263507, 2.375, "AUTO_CLAMPED"], [0.3762938976287842, 83.33333333333334, "BEZIER", "AUTO", 222.22221692403158, 0.3762938976287842, "AUTO_CLAMPED", 272.2222328186035, 0.3762938976287842, "AUTO_CLAMPED"], [0.3762938976287842, 66.66666666666663, "BEZIER", "AUTO", 294.4444338480631, 0.3762938976287842, "AUTO_CLAMPED", 1650.0, 0.3762938976287842, "AUTO_CLAMPED"], [0.3762938976287842, 3999.9999999999995, "QUAD", "EASE_IN", 2983.3333333333335, 0.3762938976287842, "AUTO_CLAMPED"], [2.375, 83.33333333333394, "BEZIER", "AUTO", 4427.777608235677, 2.375, "AUTO_CLAMPED"]], "y": [[-0.062499821186065674, 0.0, "BEZIER", "AUTO", 55.555554231007896, -0.062499821186065674, "AUTO_CLAMPED"], [-0.062499821186065674, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, -0.062499821186065674, "AUTO_CLAMPED", 194.44444974263507, -0.062499821186065674, "AUTO_CLAMPED"], [-0.062499821186065674, 83.33333333333334, "BEZIER", "AUTO", 222.22221692403158, -0.062499821186065674, "AUTO_CLAMPED", 272.2222328186035, -0.062499821186065674, "AUTO_CLAMPED"], [-0.062499821186065674, 66.66666666666663, "BEZIER", "AUTO", 294.4444338480631, -0.062499821186065674, "AUTO_CLAMPED", 1650.0, -0.062499821186065674, "AUTO_CLAMPED"], [-0.062499821186065674, 3999.9999999999995, "QUAD", "EASE_IN", 2983.3333333333335, -0.062499821186065674, "AUTO_CLAMPED"], [-0.062499821186065674, 83.33333333333394, "BEZIER", "AUTO", 4427.777608235677, -0.062499821186065674, "AUTO_CLAMPED"]]}, "rotation_euler": {"z": [[-0.0, 0.0, "BEZIER", "AUTO", 83.33333333333333, -0.0, "AUTO_CLAMPED"], [-0.0, 250.0, "BEZIER", "AUTO", 166.66666666666666, -0.0, "AUTO_CLAMPED", 272.2222328186035, -0.0, "AUTO_CLAMPED"], [-0.0, 66.66666666666663, "BEZIER", "AUTO", 294.4444338480631, -0.0, "AUTO_CLAMPED", 344.44443384806317, -0.0, "AUTO_CLAMPED"], [33.709797591950974, 83.33333333333337, "BEZIER", "AUTO", 372.2222328186035, 33.709797591950974, "AUTO_CLAMPED", 1683.3333333333333, 33.709797591950974, "AUTO_CLAMPED"], [33.709797591950974, 3850.0, "BEZIER", "AUTO", 2966.666666666667, 33.709797591950974, "AUTO_CLAMPED", 4283.333333333333, 33.709797591950974, "AUTO_CLAMPED"], [-0.0, 100.0, "BEZIER", "AUTO", 4316.666666666666, -0.0, "AUTO_CLAMPED", 4383.333333333333, -0.0, "AUTO_CLAMPED"]]}}, "Lever": {"location": {"x": [[-1.485612965979044e-08, 0.0, "BEZIER", "AUTO", 16.666666666666668, -1.485612965979044e-08, "AUTO_CLAMPED"]], "z": [[-8.634078341174245e-08, 0.0, "BEZIER", "AUTO", 16.666666666666668, -8.634078341174245e-08, "AUTO_CLAMPED"]], "y": [[2.3298342421984586e-11, 0.0, "BEZIER", "AUTO", 16.666666666666668, 2.3298342421984586e-11, "AUTO_CLAMPED"]]}, "rotation_euler": {"z": [[-0.0, 500.0, "BEZIER", "AUTO", 527.7777671813965, -0.0, "AUTO_CLAMPED"], [-9.99999970909292, 83.33333333333337, "BEZIER", "AUTO", 555.555534362793, -9.99999970909292, "AUTO_CLAMPED", 638.8888676961263, -9.99999970909292, "AUTO_CLAMPED"], [-9.99999970909292, 166.66666666666663, "BEZIER", "AUTO", 694.444465637207, -9.99999970909292, "AUTO_CLAMPED", 777.7777989705403, -9.99999970909292, "AUTO_CLAMPED"], [-0.0, 83.33333333333337, "BEZIER", "AUTO", 805.555534362793, -0.0, "AUTO_CLAMPED", 861.1111323038737, -0.0, "AUTO_CLAMPED"]]}}}, "Reload": {"Gun": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 55.555554231007896, 0.0, "AUTO_CLAMPED"], [-0.06027263402938843, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, -0.031955964863300323, "AUTO_CLAMPED", 216.66666666666669, -0.08575763553380966, "AUTO_CLAMPED"], [-0.10829480737447739, 149.99999999999997, "BEZIER", "AUTO", 266.6666666666667, -0.10829480737447739, "AUTO_CLAMPED", 377.7777671813965, -0.10829480737447739, "AUTO_CLAMPED"], [-0.044792406260967255, 183.33333333333337, "BEZIER", "AUTO", 438.88889948527014, -0.044792406260967255, "AUTO_CLAMPED", 611.1111323038737, -0.044792406260967255, "AUTO_CLAMPED"], [-0.9130013585090637, 333.33333333333337, "BEZIER", "AUTO", 722.2222010294597, -0.9130013585090637, "AUTO_CLAMPED", 955.555534362793, -0.9130013585090637, "AUTO_CLAMPED"], [-0.8715896010398865, 366.66666666666663, "BEZIER", "AUTO", 1077.7777353922527, -0.8715896010398865, "AUTO_CLAMPED", 1405.5555979410808, -0.8715896010398865, "AUTO_CLAMPED"], [-1.1114810705184937, 616.6666666666667, "BEZIER", "AUTO", 1611.111068725586, -1.1114810705184937, "AUTO_CLAMPED", 1872.2222646077473, -1.1114810705184937, "AUTO_CLAMPED"], [-1.1057782173156738, 166.66666666666674, "BEZIER", "AUTO", 1927.7777353922525, -1.1057782173156738, "AUTO_CLAMPED", 2016.6666666666665, -1.1057782173156738, "AUTO_CLAMPED"], [-1.2333530187606812, 100.0, "BEZIER", "AUTO", 2050.0, -1.2333530187606812, "AUTO_CLAMPED", 2138.888804117839, -1.2333530187606812, "AUTO_CLAMPED"], [-1.1345771551132202, 166.66666666666652, "BEZIER", "AUTO", 2194.4445292154946, -1.195904016494751, "AUTO_CLAMPED", 2311.1111958821616, -1.067117691040039, "AUTO_CLAMPED"], [-0.9707659482955933, 183.33333333333303, "BEZIER", "AUTO", 2372.222137451172, -0.9707659482955933, "AUTO_CLAMPED", 2461.1111958821616, -0.9707659482955933, "AUTO_CLAMPED"], [-0.9749962091445923, 83.33333333333348, "BEZIER", "AUTO", 2488.8888041178384, -0.9749962091445923, "AUTO_CLAMPED", 2555.5554707845054, -0.9749962091445923, "AUTO_CLAMPED"], [-0.9614148139953613, 116.66666666666697, "BEZIER", "AUTO", 2594.4445292154946, -0.9749962091445923, "AUTO_CLAMPED", 2716.666666666667, -0.9323118329048157, "AUTO_CLAMPED"], [0.0, 250.0, "BEZIER", "AUTO", 2800.0, 0.0, "AUTO_CLAMPED", 2966.666666666667, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 55.555554231007896, -0.0, "AUTO_CLAMPED"], [-0.039887718856334686, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, -0.0, "AUTO_CLAMPED", 216.66666666666669, -0.07578666508197784, "AUTO_CLAMPED"], [-0.5982881784439087, 149.99999999999997, "BEZIER", "AUTO", 266.6666666666667, -0.5982881784439087, "AUTO_CLAMPED", 377.7777671813965, -0.5982881784439087, "AUTO_CLAMPED"], [0.1292285919189453, 183.33333333333337, "BEZIER", "AUTO", 438.88889948527014, 0.1192409098148346, "AUTO_CLAMPED", 611.1111323038737, 0.1473880112171173, "AUTO_CLAMPED"], [0.1473880112171173, 333.33333333333337, "BEZIER", "AUTO", 722.2222010294597, 0.1292285919189453, "AUTO_CLAMPED", 955.555534362793, 0.16736337542533875, "AUTO_CLAMPED"], [0.30984991788864136, 366.66666666666663, "BEZIER", "AUTO", 1077.7777353922527, 0.26116254925727844, "AUTO_CLAMPED", 1405.5555979410808, 0.39173322916030884, "AUTO_CLAMPED"], [0.39173322916030884, 616.6666666666667, "BEZIER", "AUTO", 1611.111068725586, 0.39173322916030884, "AUTO_CLAMPED", 1872.2222646077473, 0.39173322916030884, "AUTO_CLAMPED"], [-0.06899482011795044, 166.66666666666674, "BEZIER", "AUTO", 1927.7777353922525, 0.07043655216693878, "AUTO_CLAMPED", 2016.6666666666665, -0.15265364944934845, "AUTO_CLAMPED"], [-0.17084091901779175, 100.0, "BEZIER", "AUTO", 2050.0, -0.17084091901779175, "AUTO_CLAMPED", 2138.888804117839, -0.17084091901779175, "AUTO_CLAMPED"], [0.2747926712036133, 166.66666666666652, "BEZIER", "AUTO", 2194.4445292154946, 0.1940881907939911, "AUTO_CLAMPED", 2311.1111958821616, 0.363567590713501, "AUTO_CLAMPED"], [0.363567590713501, 183.33333333333303, "BEZIER", "AUTO", 2372.222137451172, 0.2747926712036133, "AUTO_CLAMPED", 2461.1111958821616, 0.4039198160171509, "AUTO_CLAMPED"], [0.8713808059692383, 83.33333333333348, "BEZIER", "AUTO", 2488.8888041178384, 0.8713808059692383, "AUTO_CLAMPED", 2555.5554707845054, 0.8713808059692383, "AUTO_CLAMPED"], [0.3006858229637146, 116.66666666666697, "BEZIER", "AUTO", 2594.4445292154946, 0.4410058856010437, "AUTO_CLAMPED", 2716.666666666667, -0.0, "AUTO_CLAMPED"], [-0.0, 250.0, "BEZIER", "AUTO", 2800.0, -0.0, "AUTO_CLAMPED", 2966.666666666667, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 55.555554231007896, 0.0, "AUTO_CLAMPED"], [0.4887576997280121, 166.66666666666666, "BEZIER", "AUTO", 111.11111640930176, 0.3054804801940918, "AUTO_CLAMPED", 216.66666666666669, 0.6537071466445923, "AUTO_CLAMPED"], [0.7476427555084229, 149.99999999999997, "BEZIER", "AUTO", 266.6666666666667, 0.7196719646453857, "AUTO_CLAMPED", 377.7777671813965, 0.781829297542572, "AUTO_CLAMPED"], [0.9780957698822021, 183.33333333333337, "BEZIER", "AUTO", 438.88889948527014, 0.7592593431472778, "AUTO_CLAMPED", 611.1111323038737, 1.375980257987976, "AUTO_CLAMPED"], [2.5719027519226074, 333.33333333333337, "BEZIER", "AUTO", 722.2222010294597, 2.5719027519226074, "AUTO_CLAMPED", 955.555534362793, 2.5719027519226074, "AUTO_CLAMPED"], [1.7368642091751099, 366.66666666666663, "BEZIER", "AUTO", 1077.7777353922527, 1.7368642091751099, "AUTO_CLAMPED", 1405.5555979410808, 1.7368642091751099, "AUTO_CLAMPED"], [2.4045543670654297, 616.6666666666667, "BEZIER", "AUTO", 1611.111068725586, 2.4045543670654297, "AUTO_CLAMPED", 1872.2222646077473, 2.4045543670654297, "AUTO_CLAMPED"], [2.0934579372406006, 166.66666666666674, "BEZIER", "AUTO", 1927.7777353922525, 2.1594762802124023, "AUTO_CLAMPED", 2016.6666666666665, 2.053846836090088, "AUTO_CLAMPED"], [1.9846371412277222, 100.0, "BEZIER", "AUTO", 2050.0, 2.078697443008423, "AUTO_CLAMPED", 2138.888804117839, 1.8278698921203613, "AUTO_CLAMPED"], [1.3036167621612549, 166.66666666666652, "BEZIER", "AUTO", 2194.4445292154946, 1.340794563293457, "AUTO_CLAMPED", 2311.1111958821616, 1.2627211809158325, "AUTO_CLAMPED"], [1.2627211809158325, 183.33333333333303, "BEZIER", "AUTO", 2372.222137451172, 1.2627211809158325, "AUTO_CLAMPED", 2461.1111958821616, 1.2627211809158325, "AUTO_CLAMPED"], [1.5373237133026123, 83.33333333333348, "BEZIER", "AUTO", 2488.8888041178384, 1.5373237133026123, "AUTO_CLAMPED", 2555.5554707845054, 1.5373237133026123, "AUTO_CLAMPED"], [1.2078009843826294, 116.66666666666697, "BEZIER", "AUTO", 2594.4445292154946, 1.4098081588745117, "AUTO_CLAMPED", 2716.666666666667, 0.7749283313751221, "AUTO_CLAMPED"], [0.0, 250.0, "BEZIER", "AUTO", 2800.0, 0.0, "AUTO_CLAMPED", 2966.666666666667, 0.0, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, 0.0, "AUTO_CLAMPED"], [-7.947998292783174, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, -7.947998292783174, "AUTO_CLAMPED", 200.0, -7.947998292783174, "AUTO_CLAMPED"], [-7.806066108056663, 199.99999999999997, "BEZIER", "AUTO", 266.6666666666667, -7.806066108056663, "AUTO_CLAMPED", 411.1111005147298, -7.806066108056663, "AUTO_CLAMPED"], [-12.494120977924887, 233.33333333333331, "BEZIER", "AUTO", 488.8888994852702, -7.806066108056663, "AUTO_CLAMPED", 633.3333333333333, -16.512453601558555, "AUTO_CLAMPED"], [-34.233983874898186, 200.0, "BEZIER", "AUTO", 700.0, -34.233983874898186, "AUTO_CLAMPED", 900.0, -34.233983874898186, "AUTO_CLAMPED"], [-30.0797330481022, 400.0000000000001, "BEZIER", "AUTO", 1033.3333333333333, -30.0797330481022, "AUTO_CLAMPED", 1383.3333333333333, -30.0797330481022, "AUTO_CLAMPED"], [-39.29156478546879, 650.0, "BEZIER", "AUTO", 1600.0, -37.85145354991745, "AUTO_CLAMPED", 1872.2222646077473, -39.66082530256719, "AUTO_CLAMPED"], [-41.294691929398866, 166.66666666666674, "BEZIER", "AUTO", 1927.7777353922525, -39.61380286522624, "AUTO_CLAMPED", 2016.6666666666665, -42.303224001864606, "AUTO_CLAMPED"], [-43.933805307705505, 100.0, "BEZIER", "AUTO", 2050.0, -43.933805307705505, "AUTO_CLAMPED", 2138.888804117839, -43.933805307705505, "AUTO_CLAMPED"], [-32.51975324229214, 166.66666666666652, "BEZIER", "AUTO", 2194.4445292154946, -35.980196868292815, "AUTO_CLAMPED", 2305.5554707845054, -29.059309616291465, "AUTO_CLAMPED"], [-27.806946620645437, 166.66666666666652, "BEZIER", "AUTO", 2361.111195882161, -30.092023973513637, "AUTO_CLAMPED", 2450.0, -26.435900550433974, "AUTO_CLAMPED"], [-22.543387695274756, 100.0, "BEZIER", "AUTO", 2483.3333333333335, -23.870447347231334, "AUTO_CLAMPED", 2572.222137451172, -20.331622177862887, "AUTO_CLAMPED"], [-19.089285899918437, 166.66666666666652, "BEZIER", "AUTO", 2627.777862548828, -21.559835332151042, "AUTO_CLAMPED", 2777.777862548828, -14.88935135285882, "AUTO_CLAMPED"], [0.0, 283.33333333333394, "BEZIER", "AUTO", 2872.222137451172, 0.0, "AUTO_CLAMPED", 3061.1111958821616, 0.0, "AUTO_CLAMPED"]], "z": [[-0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, -0.0, "AUTO_CLAMPED"], [11.053427468746804, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, 11.053427468746804, "AUTO_CLAMPED", 200.0, 11.053427468746804, "AUTO_CLAMPED"], [7.8228555668102, 199.99999999999997, "BEZIER", "AUTO", 266.6666666666667, 7.8228555668102, "AUTO_CLAMPED", 411.1111005147298, 7.8228555668102, "AUTO_CLAMPED"], [17.08093707636789, 233.33333333333331, "BEZIER", "AUTO", 488.8888994852702, 10.958562971364497, "AUTO_CLAMPED", 633.3333333333333, 22.328685821357283, "AUTO_CLAMPED"], [29.770721629672483, 200.0, "BEZIER", "AUTO", 700.0, 29.770721629672483, "AUTO_CLAMPED", 900.0, 29.770721629672483, "AUTO_CLAMPED"], [20.79820776799209, 400.0000000000001, "BEZIER", "AUTO", 1033.3333333333333, 20.79820776799209, "AUTO_CLAMPED", 1383.3333333333333, 20.79820776799209, "AUTO_CLAMPED"], [31.411958030618603, 650.0, "BEZIER", "AUTO", 1600.0, 30.32892225468636, "AUTO_CLAMPED", 1872.2222646077473, 31.68965986189298, "AUTO_CLAMPED"], [33.02801493918947, 166.66666666666674, "BEZIER", "AUTO", 1927.7777353922525, 31.411958030618603, "AUTO_CLAMPED", 2016.6666666666665, 33.99764908433199, "AUTO_CLAMPED"], [36.74340562124463, 100.0, "BEZIER", "AUTO", 2050.0, 36.74340562124463, "AUTO_CLAMPED", 2138.888804117839, 36.74340562124463, "AUTO_CLAMPED"], [23.01222724783006, 166.66666666666652, "BEZIER", "AUTO", 2194.4445292154946, 26.45975157101566, "AUTO_CLAMPED", 2305.5554707845054, 19.564702924644468, "AUTO_CLAMPED"], [17.208031528896193, 166.66666666666652, "BEZIER", "AUTO", 2361.111195882161, 22.953306620954947, "AUTO_CLAMPED", 2450.0, 13.760866644415668, "AUTO_CLAMPED"], [7.025505686405259, 100.0, "BEZIER", "AUTO", 2483.3333333333335, 7.025505686405259, "AUTO_CLAMPED", 2572.222137451172, 7.025505686405259, "AUTO_CLAMPED"], [7.114583306013272, 166.66666666666652, "BEZIER", "AUTO", 2627.777862548828, 7.114583306013272, "AUTO_CLAMPED", 2777.777862548828, 7.114583306013272, "AUTO_CLAMPED"], [-0.0, 283.33333333333394, "BEZIER", "AUTO", 2872.222137451172, -0.0, "AUTO_CLAMPED", 3061.1111958821616, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 44.444445768992104, 0.0, "AUTO_CLAMPED"], [-0.5836962804425067, 133.33333333333334, "BEZIER", "AUTO", 88.88888359069824, -0.5836962804425067, "AUTO_CLAMPED", 200.0, -0.5836962804425067, "AUTO_CLAMPED"], [0.9077218954109396, 199.99999999999997, "BEZIER", "AUTO", 266.6666666666667, 0.9077218954109396, "AUTO_CLAMPED", 411.1111005147298, 0.9077218954109396, "AUTO_CLAMPED"], [-0.11387248695562946, 233.33333333333331, "BEZIER", "AUTO", 488.8888994852702, 0.9077218954109396, "AUTO_CLAMPED", 633.3333333333333, -0.9895248299443609, "AUTO_CLAMPED"], [-3.443730153101654, 200.0, "BEZIER", "AUTO", 700.0, -2.733326873283682, "AUTO_CLAMPED", 900.0, -4.864536712737598, "AUTO_CLAMPED"], [-4.864536712737598, 400.0000000000001, "BEZIER", "AUTO", 1033.3333333333333, -4.864536712737598, "AUTO_CLAMPED", 1383.3333333333333, -4.864536712737598, "AUTO_CLAMPED"], [-2.6581730211855623, 650.0, "BEZIER", "AUTO", 1600.0, -2.6581730211855623, "AUTO_CLAMPED", 1872.2222646077473, -2.6581730211855623, "AUTO_CLAMPED"], [-6.302553641534681, 166.66666666666674, "BEZIER", "AUTO", 1927.7777353922525, -6.302553641534681, "AUTO_CLAMPED", 2016.6666666666665, -6.302553641534681, "AUTO_CLAMPED"], [-2.311909751022596, 100.0, "BEZIER", "AUTO", 2050.0, -2.311909751022596, "AUTO_CLAMPED", 2138.888804117839, -2.311909751022596, "AUTO_CLAMPED"], [-6.151943274580845, 166.66666666666652, "BEZIER", "AUTO", 2194.4445292154946, -4.8060570599507715, "AUTO_CLAMPED", 2305.5554707845054, -7.497829062324096, "AUTO_CLAMPED"], [-7.695458024637476, 166.66666666666652, "BEZIER", "AUTO", 2361.111195882161, -7.695458024637476, "AUTO_CLAMPED", 2450.0, -7.695458024637476, "AUTO_CLAMPED"], [-7.258249078128498, 100.0, "BEZIER", "AUTO", 2483.3333333333335, -7.258249078128498, "AUTO_CLAMPED", 2572.222137451172, -7.258249078128498, "AUTO_CLAMPED"], [-9.170077937196657, 166.66666666666652, "BEZIER", "AUTO", 2627.777862548828, -9.170077937196657, "AUTO_CLAMPED", 2777.777862548828, -9.170077937196657, "AUTO_CLAMPED"], [0.0, 283.33333333333394, "BEZIER", "AUTO", 2872.222137451172, 0.0, "AUTO_CLAMPED", 3061.1111958821616, 0.0, "AUTO_CLAMPED"]]}}, "Handle": {"location": {"x": [[0.375, 0.0, "BEZIER", "AUTO", 61.111112435658775, 0.375, "AUTO_CLAMPED"], [0.375, 183.33333333333331, "QUAD", "EASE_OUT", 122.22221692403157, 0.375, "AUTO_CLAMPED"], [0.375, 150.0, "BEZIER", "AUTO", 366.66666666666663, 0.375, "AUTO_CLAMPED"], [0.375, 100.00000000000006, "BEZIER", "AUTO", 400.0, 0.375, "AUTO_CLAMPED", 1038.8888676961262, 0.375, "AUTO_CLAMPED"], [0.375, 1816.6666666666665, "BEZIER", "AUTO", 1644.4445292154949, 0.375, "AUTO_CLAMPED", 2277.777862548828, 0.375, "AUTO_CLAMPED"], [0.375, 83.33333333333348, "QUAD", "EASE_IN", 2305.5554707845054, 0.375, "AUTO_CLAMPED"], [0.375, 83.33333333333303, "BEZIER", "AUTO", 2444.4445292154946, 0.375, "AUTO_CLAMPED"]], "z": [[2.375, 0.0, "BEZIER", "AUTO", 61.111112435658775, 2.375, "AUTO_CLAMPED"], [2.375, 183.33333333333331, "QUAD", "EASE_OUT", 122.22221692403157, 2.375, "AUTO_CLAMPED"], [0.3507676124572754, 150.0, "BEZIER", "AUTO", 366.66666666666663, 0.3507676124572754, "AUTO_CLAMPED"], [0.3507676124572754, 100.00000000000006, "BEZIER", "AUTO", 400.0, 0.3507676124572754, "AUTO_CLAMPED", 1038.8888676961262, 0.3507676124572754, "AUTO_CLAMPED"], [0.3507676124572754, 1816.6666666666665, "BEZIER", "AUTO", 1644.4445292154949, 0.3507676124572754, "AUTO_CLAMPED", 2277.777862548828, 0.3507676124572754, "AUTO_CLAMPED"], [0.3507676124572754, 83.33333333333348, "QUAD", "EASE_IN", 2305.5554707845054, 0.3507676124572754, "AUTO_CLAMPED"], [2.375, 83.33333333333303, "BEZIER", "AUTO", 2444.4445292154946, 2.375, "AUTO_CLAMPED"]], "y": [[-0.062499821186065674, 0.0, "BEZIER", "AUTO", 61.111112435658775, -0.062499821186065674, "AUTO_CLAMPED"], [-0.062499821186065674, 183.33333333333331, "QUAD", "EASE_OUT", 122.22221692403157, -0.062499821186065674, "AUTO_CLAMPED"], [-0.06249997019767761, 150.0, "BEZIER", "AUTO", 366.66666666666663, -0.06249997019767761, "AUTO_CLAMPED"], [-0.06249997019767761, 100.00000000000006, "BEZIER", "AUTO", 400.0, -0.06249997019767761, "AUTO_CLAMPED", 1038.8888676961262, -0.06249997019767761, "AUTO_CLAMPED"], [-0.06249997019767761, 1816.6666666666665, "BEZIER", "AUTO", 1644.4445292154949, -0.06249997019767761, "AUTO_CLAMPED", 2277.777862548828, -0.06249997019767761, "AUTO_CLAMPED"], [-0.06249997019767761, 83.33333333333348, "QUAD", "EASE_IN", 2305.5554707845054, -0.06249997019767761, "AUTO_CLAMPED"], [-0.062499821186065674, 83.33333333333303, "BEZIER", "AUTO", 2444.4445292154946, -0.062499821186065674, "AUTO_CLAMPED"]]}, "rotation_euler": {"z": [[0.0, 0.0, "BEZIER", "AUTO", 61.111112435658775, 0.0, "AUTO_CLAMPED"], [0.0, 183.33333333333331, "QUAD", "EASE_OUT", 122.22221692403157, 0.0, "AUTO_CLAMPED"], [0.0, 150.0, "BEZIER", "AUTO", 366.66666666666663, 0.0, "AUTO_CLAMPED"], [35.69566826294301, 100.00000000000006, "BEZIER", "AUTO", 400.0, 35.69566826294301, "AUTO_CLAMPED", 1038.8888676961262, 35.69566826294301, "AUTO_CLAMPED"], [35.69566826294301, 1816.6666666666665, "BEZIER", "AUTO", 1644.4445292154949, 35.69566826294301, "AUTO_CLAMPED", 2288.8888041178384, 35.69566826294301, "AUTO_CLAMPED"], [-0.0, 116.66666666666652, "QUAD", "EASE_IN", 2327.777862548828, -0.0, "AUTO_CLAMPED"], [-0.0, 50.0, "BEZIER", "AUTO", 2433.333333333333, -0.0, "AUTO_CLAMPED"]]}}, "Magazine": {"location": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 250.0, 0.0, "AUTO_CLAMPED"], [0.0, 750.0, "BEZIER", "AUTO", 500.0, 0.0, "AUTO_CLAMPED", 777.7777989705403, 0.0, "AUTO_CLAMPED"], [3.725290298461914e-09, 83.33333333333337, "BEZIER", "AUTO", 805.555534362793, 3.725290298461914e-09, "AUTO_CLAMPED", 888.8888676961263, 3.725290298461914e-09, "AUTO_CLAMPED"], [3.725290298461914e-09, 166.66666666666663, "BEZIER", "AUTO", 944.4444656372069, 3.725290298461914e-09, "AUTO_CLAMPED", 1061.1111323038738, 3.725290298461914e-09, "AUTO_CLAMPED"], [2.275148391723633, 183.33333333333326, "BEZIER", "EASE_IN", 1122.4605560302734, 1.95159113407135, "ALIGNED", 1279.7747294108074, 2.7877635955810547, "ALIGNED"], [1.1207209825515747, 266.66666666666674, "CONSTANT", "AUTO", 1386.2855275472007, 2.162842035293579, "ALIGNED"], [1.1920928955078125e-07, 183.33333333333326, "BEZIER", "AUTO", 1744.4444020589192, -7.450580596923828e-09, "AUTO_CLAMPED"], [-7.450580596923828e-09, 333.33333333333326, "BEZIER", "AUTO", 1855.5555979410808, -7.450580596923828e-09, "AUTO_CLAMPED", 1988.888931274414, -7.450580596923828e-09, "AUTO_CLAMPED"], [0.0, 66.66666666666674, "BEZIER", "AUTO", 2011.1110687255857, 0.0, "AUTO_CLAMPED", 2055.5555979410806, 0.0, "AUTO_CLAMPED"]], "z": [[-3.7083332538604736, 0.0, "BEZIER", "AUTO", 250.0, -3.7083332538604736, "AUTO_CLAMPED"], [-3.7083332538604736, 750.0, "BEZIER", "AUTO", 500.0, -3.7083332538604736, "AUTO_CLAMPED", 777.7777989705403, -3.7083332538604736, "AUTO_CLAMPED"], [-3.7083332538604736, 83.33333333333337, "BEZIER", "AUTO", 805.555534362793, -3.7083332538604736, "AUTO_CLAMPED", 888.8888676961263, -3.7083332538604736, "AUTO_CLAMPED"], [-3.586667060852051, 166.66666666666663, "BEZIER", "AUTO", 944.4444656372069, -3.7083332538604736, "AUTO_CLAMPED", 1061.1111323038738, -3.452834129333496, "AUTO_CLAMPED"], [0.1384201943874359, 183.33333333333326, "BEZIER", "EASE_IN", 1122.2222646077473, 0.1384201943874359, "AUTO_CLAMPED", 1272.2222646077475, 0.1384201943874359, "AUTO_CLAMPED"], [-0.4952211380004883, 266.66666666666674, "CONSTANT", "AUTO", 1361.111068725586, 0.1384202241897583, "AUTO_CLAMPED"], [-3.7083330154418945, 183.33333333333326, "BEZIER", "AUTO", 1744.4444020589192, -3.7083330154418945, "AUTO_CLAMPED"], [-3.7083330154418945, 333.33333333333326, "BEZIER", "AUTO", 1855.5555979410808, -3.7083330154418945, "AUTO_CLAMPED", 1988.888931274414, -3.7083330154418945, "AUTO_CLAMPED"], [-3.7083332538604736, 66.66666666666674, "BEZIER", "AUTO", 2011.1110687255857, -3.7083332538604736, "AUTO_CLAMPED", 2055.5555979410806, -3.7083332538604736, "AUTO_CLAMPED"]], "y": [[-0.8715280890464783, 0.0, "BEZIER", "AUTO", 250.0, -0.8715280890464783, "AUTO_CLAMPED"], [-0.8715280890464783, 750.0, "BEZIER", "AUTO", 500.0, -0.8715280890464783, "AUTO_CLAMPED", 777.7777989705403, -0.8715280890464783, "AUTO_CLAMPED"], [-0.9779874682426453, 83.33333333333337, "BEZIER", "AUTO", 805.555534362793, -0.8715280890464783, "AUTO_CLAMPED", 888.8888676961263, -1.190906286239624, "AUTO_CLAMPED"], [-2.6450467109680176, 166.66666666666663, "BEZIER", "AUTO", 944.4444656372069, -2.288226842880249, "AUTO_CLAMPED", 1061.1111323038738, -3.037548542022705, "AUTO_CLAMPED"], [-3.938255786895752, 183.33333333333326, "BEZIER", "EASE_IN", 1082.1139017740886, -2.2764382362365723, "ALIGNED", 1409.4801584879558, -7.651127338409424, "ALIGNED"], [-18.826751708984375, 266.66666666666674, "CONSTANT", "AUTO", 1402.2291819254558, -17.237646102905273, "ALIGNED"], [-5.262813568115234, 183.33333333333326, "BEZIER", "AUTO", 1744.4444020589192, -1.393867015838623, "AUTO_CLAMPED"], [-1.393867015838623, 333.33333333333326, "BEZIER", "AUTO", 1855.5555979410808, -2.4820737838745117, "AUTO_CLAMPED", 1988.888931274414, -1.1762256622314453, "AUTO_CLAMPED"], [-0.8715280890464783, 66.66666666666674, "BEZIER", "AUTO", 2011.1110687255857, -0.8715280890464783, "AUTO_CLAMPED", 2055.5555979410806, -0.8715280890464783, "AUTO_CLAMPED"]]}, "rotation_euler": {"x": [[0.0, 0.0, "BEZIER", "AUTO", 250.0, 0.0, "AUTO_CLAMPED"], [0.0, 750.0, "BEZIER", "AUTO", 500.0, 0.0, "AUTO_CLAMPED", 777.7777989705403, 0.0, "AUTO_CLAMPED"], [-4.174188148983252, 83.33333333333337, "BEZIER", "AUTO", 805.555534362793, -4.1741847338886675, "AUTO_CLAMPED", 888.8888676961263, -4.174194979172422, "AUTO_CLAMPED"], [-4.174194979172422, 166.66666666666663, "BEZIER", "AUTO", 944.4444656372069, -4.174188148983252, "AUTO_CLAMPED", 1044.444465637207, -4.174200528701124, "AUTO_CLAMPED"], [-33.8234246189833, 133.33333333333326, "BEZIER", "EASE_IN", 1088.888931274414, -33.07182377252593, "AUTO_CLAMPED", 1238.888931274414, -35.60847748309321, "AUTO_CLAMPED"], [-35.60847748309321, 316.66666666666674, "CONSTANT", "EASE_IN", 1344.4444020589192, -35.60847748309321, "AUTO_CLAMPED"], [0.0, 183.33333333333326, "BEZIER", "AUTO", 1744.4444020589192, 0.0, "AUTO_CLAMPED"], [-12.942791835634793, 333.33333333333326, "BEZIER", "AUTO", 1855.5555979410808, -12.942791835634793, "AUTO_CLAMPED", 1988.888931274414, -12.942791835634793, "AUTO_CLAMPED"], [0.0, 66.66666666666674, "BEZIER", "AUTO", 2011.1110687255857, 0.0, "AUTO_CLAMPED", 2055.5555979410806, 0.0, "AUTO_CLAMPED"]], "z": [[0.0, 0.0, "BEZIER", "AUTO", 250.0, 0.0, "AUTO_CLAMPED"], [3.415094992117375e-06, 750.0, "BEZIER", "AUTO", 500.0, 3.415094992117375e-06, "AUTO_CLAMPED", 777.7777989705403, 3.415094992117375e-06, "AUTO_CLAMPED"], [1.8849241299780381e-06, 83.33333333333337, "BEZIER", "AUTO", 805.555534362793, 1.8849241299780381e-06, "AUTO_CLAMPED", 888.8888676961263, 1.8849241299780381e-06, "AUTO_CLAMPED"], [2.257795465726353e-06, 166.66666666666663, "BEZIER", "AUTO", 944.4444656372069, 1.8849241299780381e-06, "AUTO_CLAMPED", 1044.444465637207, 2.5560926157472046e-06, "AUTO_CLAMPED"], [37.2502910350242, 133.33333333333326, "BEZIER", "EASE_IN", 1088.888931274414, 19.088867550831775, "AUTO_CLAMPED", 1238.888931274414, 80.3836698889905, "AUTO_CLAMPED"], [152.35956815499205, 316.66666666666674, "CONSTANT", "EASE_IN", 1421.4354197184246, 149.74669294838202, "ALIGNED"], [-0.0, 183.33333333333326, "BEZIER", "AUTO", 1744.4444020589192, -0.0, "AUTO_CLAMPED"], [2.1809719917281588e-06, 333.33333333333326, "BEZIER", "AUTO", 1855.5555979410808, 2.1809719917281588e-06, "AUTO_CLAMPED", 1988.888931274414, 2.1809719917281588e-06, "AUTO_CLAMPED"], [-0.0, 66.66666666666674, "BEZIER", "AUTO", 2011.1110687255857, -0.0, "AUTO_CLAMPED", 2055.5555979410806, -0.0, "AUTO_CLAMPED"]], "y": [[0.0, 0.0, "BEZIER", "AUTO", 250.0, 0.0, "AUTO_CLAMPED"], [-2.988207965436078e-06, 750.0, "BEZIER", "AUTO", 500.0, -2.988207965436078e-06, "AUTO_CLAMPED", 777.7777989705403, -2.988207965436078e-06, "AUTO_CLAMPED"], [1.4521725675751222e-06, 83.33333333333337, "BEZIER", "AUTO", 805.555534362793, -2.7954582095194046e-08, "AUTO_CLAMPED", 888.8888676961263, 4.412426968693505e-06, "AUTO_CLAMPED"], [6.561225588819226e-06, 166.66666666666663, "BEZIER", "AUTO", 944.4444656372069, 1.4521722622418728e-06, "AUTO_CLAMPED", 1044.444465637207, 1.0648468575769908e-05, "AUTO_CLAMPED"], [0.704543404396924, 133.33333333333326, "BEZIER", "EASE_IN", 1088.888931274414, 0.704543404396924, "AUTO_CLAMPED", 1238.888931274414, 0.704543404396924, "AUTO_CLAMPED"], [-2.4474770532163017, 316.66666666666674, "CONSTANT", "EASE_IN", 1344.4444020589192, -2.4474770532163017, "AUTO_CLAMPED"], [0.0, 183.33333333333326, "BEZIER", "AUTO", 1744.4444020589192, 0.0, "AUTO_CLAMPED"], [-5.757404055061827e-06, 333.33333333333326, "BEZIER", "AUTO", 1855.5555979410808, -5.757404055061827e-06, "AUTO_CLAMPED", 1988.888931274414, -5.757404055061827e-06, "AUTO_CLAMPED"], [0.0, 66.66666666666674, "BEZIER", "AUTO", 2011.1110687255857, 0.0, "AUTO_CLAMPED", 2055.5555979410806, 0.0, "AUTO_CLAMPED"]]}}}}, "offset": {"Barrel": [-3.4825498573809455e-07, 0.0, 2.999999761581421], "Breech": [-1.485612965979044e-08, 2.3298342421984586e-11, -8.634078341174245e-08], "Bullets": [-2.2280778111394284e-08, -3.766064543553327e-11, 1.7626307080575998e-09], "Handle": [0.375, -0.062499821186065674, 2.375], "Lever": [-1.485612965979044e-08, 2.3298342421984586e-11, -8.634078341174245e-08], "Magazine": [0.0, -0.8715280890464783, -3.7083332538604736], "Safety": [-1.485612965979044e-08, 2.3298342421984586e-11, -0.0]}, "hierarchy": {"Barrel": "Gun", "Breech": "Gun", "Bullets": "Magazine", "Handle": "Gun", "Lever": "Gun", "Magazine": "Gun", "Safety": "Gun"}} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/weapons/bio_revolver.obj b/src/main/resources/assets/hbm/models/weapons/bio_revolver.obj index 08d9f49ba..c19fd8ec5 100644 --- a/src/main/resources/assets/hbm/models/weapons/bio_revolver.obj +++ b/src/main/resources/assets/hbm/models/weapons/bio_revolver.obj @@ -384,7 +384,7 @@ vn 0.0000 0.7071 0.7071 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.9239 -0.3827 0.0000 vn 0.0000 -0.7071 -0.7071 vn 0.0000 -0.7071 0.7071 @@ -393,6 +393,8 @@ vn 0.0000 -0.5847 0.8112 vn 0.0000 -0.8112 0.5847 vn 0.0000 -0.4472 0.8944 vn 0.0000 -0.8944 0.4472 +vn -0.9239 -0.3827 0.0000 +vn 0.3827 0.9239 0.0000 vn 0.9239 0.3827 0.0000 s off f 2/1/1 16/2/1 4/3/1 @@ -548,11 +550,11 @@ f 82/183/15 75/175/7 74/177/15 f 121/184/30 124/185/31 123/186/31 f 122/187/30 117/188/32 118/189/32 f 123/186/31 120/190/33 119/191/33 -f 128/192/25 134/193/24 126/145/24 -f 131/194/26 133/195/34 125/196/34 -f 131/194/26 140/197/25 132/198/25 -f 130/144/23 136/199/25 128/192/25 -f 125/196/34 135/200/26 127/148/26 +f 128/192/34 134/193/24 126/145/24 +f 131/194/35 133/195/36 125/196/36 +f 140/197/25 131/194/35 132/198/25 +f 130/144/23 136/199/34 128/192/34 +f 125/196/36 135/200/26 127/148/26 f 129/142/22 137/149/22 138/143/23 f 126/145/24 134/193/24 140/146/25 f 127/148/26 135/200/26 137/149/22 @@ -575,11 +577,11 @@ f 82/183/15 83/173/7 75/175/7 f 121/184/30 122/187/30 124/185/31 f 122/187/30 121/184/30 117/188/32 f 123/186/31 124/185/31 120/190/33 -f 128/192/25 136/199/25 134/193/24 -f 131/194/26 139/203/26 133/195/34 -f 131/194/26 139/203/26 140/197/25 -f 130/144/23 138/143/23 136/199/25 -f 125/196/34 133/195/34 135/200/26 +f 128/192/34 136/199/34 134/193/24 +f 131/194/35 139/203/35 133/195/36 +f 140/197/25 139/203/35 131/194/35 +f 130/144/23 138/143/23 136/199/34 +f 125/196/36 133/195/36 135/200/26 o Latch v -0.500000 2.500400 -0.875000 v 0.500000 2.500400 -0.875000 @@ -665,54 +667,54 @@ vn 0.0000 0.0000 -1.0000 vn 0.0000 -0.9487 0.3162 vn 0.0000 0.7071 -0.7071 s off -f 158/204/35 159/205/35 157/206/35 -f 164/207/36 161/208/36 162/209/36 -f 159/205/37 162/210/37 157/206/37 -f 157/206/38 161/208/38 158/204/38 -f 158/204/39 163/211/39 160/212/39 -f 163/211/39 165/213/39 160/212/39 -f 179/214/38 171/215/38 167/216/38 -f 160/212/40 166/217/40 159/205/40 -f 164/218/37 166/217/37 168/219/37 -f 180/220/36 181/221/36 182/222/36 -f 169/223/39 165/224/39 167/216/39 -f 173/225/37 168/226/37 170/227/37 -f 171/228/36 176/229/36 172/230/36 -f 174/231/36 177/232/36 173/233/36 -f 178/234/39 181/235/39 177/232/39 -f 175/236/37 180/237/37 176/229/37 -f 177/238/38 168/226/38 173/225/38 -f 182/239/41 174/240/41 170/227/41 -f 176/229/41 169/223/41 172/241/41 -f 179/242/42 167/243/42 163/244/42 -f 165/213/43 169/223/43 180/237/43 -f 158/204/35 160/212/35 159/205/35 -f 164/207/36 163/244/36 161/208/36 -f 159/205/37 164/218/37 162/210/37 -f 157/206/38 162/209/38 161/208/38 -f 158/204/39 161/245/39 163/211/39 -f 163/211/39 167/246/39 165/213/39 -f 179/214/38 175/247/38 171/215/38 -f 160/212/40 165/213/40 166/217/40 -f 164/218/37 159/205/37 166/217/37 -f 180/220/36 179/242/36 181/221/36 -f 167/216/39 171/215/39 172/241/39 -f 172/241/39 169/223/39 167/216/39 -f 170/227/37 174/240/37 173/225/37 -f 168/226/37 166/248/37 170/227/37 -f 171/228/36 175/236/36 176/229/36 -f 174/231/36 178/234/36 177/232/36 -f 178/234/39 182/239/39 181/235/39 -f 175/236/37 179/249/37 180/237/37 -f 177/238/38 181/250/38 168/226/38 -f 182/239/41 178/234/41 174/240/41 -f 176/229/41 180/237/41 169/223/41 -f 163/244/42 164/207/42 181/221/42 -f 164/207/42 168/251/42 181/221/42 -f 181/221/42 179/242/42 163/244/42 -f 180/237/43 182/239/43 165/213/43 -f 182/239/43 170/227/43 166/217/43 -f 165/213/43 182/239/43 166/217/43 +f 158/204/37 159/205/37 157/206/37 +f 164/207/38 161/208/38 162/209/38 +f 159/205/39 162/210/39 157/206/39 +f 157/206/40 161/208/40 158/204/40 +f 158/204/41 163/211/41 160/212/41 +f 163/211/41 165/213/41 160/212/41 +f 179/214/40 171/215/40 167/216/40 +f 160/212/42 166/217/42 159/205/42 +f 164/218/39 166/217/39 168/219/39 +f 180/220/38 181/221/38 182/222/38 +f 169/223/41 165/224/41 167/216/41 +f 173/225/39 168/226/39 170/227/39 +f 171/228/38 176/229/38 172/230/38 +f 174/231/38 177/232/38 173/233/38 +f 178/234/41 181/235/41 177/232/41 +f 175/236/39 180/237/39 176/229/39 +f 177/238/40 168/226/40 173/225/40 +f 182/239/43 174/240/43 170/227/43 +f 176/229/43 169/223/43 172/241/43 +f 179/242/44 167/243/44 163/244/44 +f 165/213/45 169/223/45 180/237/45 +f 158/204/37 160/212/37 159/205/37 +f 164/207/38 163/244/38 161/208/38 +f 159/205/39 164/218/39 162/210/39 +f 157/206/40 162/209/40 161/208/40 +f 158/204/41 161/245/41 163/211/41 +f 163/211/41 167/246/41 165/213/41 +f 179/214/40 175/247/40 171/215/40 +f 160/212/42 165/213/42 166/217/42 +f 164/218/39 159/205/39 166/217/39 +f 180/220/38 179/242/38 181/221/38 +f 167/216/41 171/215/41 172/241/41 +f 172/241/41 169/223/41 167/216/41 +f 170/227/39 174/240/39 173/225/39 +f 168/226/39 166/248/39 170/227/39 +f 171/228/38 175/236/38 176/229/38 +f 174/231/38 178/234/38 177/232/38 +f 178/234/41 182/239/41 181/235/41 +f 175/236/39 179/249/39 180/237/39 +f 177/238/40 181/250/40 168/226/40 +f 182/239/43 178/234/43 174/240/43 +f 176/229/43 180/237/43 169/223/43 +f 163/244/44 164/207/44 181/221/44 +f 164/207/44 168/251/44 181/221/44 +f 181/221/44 179/242/44 163/244/44 +f 180/237/45 182/239/45 165/213/45 +f 182/239/45 170/227/45 166/217/45 +f 165/213/45 182/239/45 166/217/45 o Hammer v 0.125000 1.750400 -4.125000 v -0.125000 1.750400 -4.125000 @@ -788,42 +790,42 @@ vn 1.0000 0.0000 0.0000 vn 0.0000 -1.0000 0.0000 vn 0.0000 0.0000 1.0000 s off -f 185/252/44 184/253/44 183/254/44 -f 187/255/45 186/256/45 185/252/45 -f 189/257/46 188/258/46 187/259/46 -f 191/260/47 190/261/47 189/262/47 -f 193/263/48 192/264/48 191/260/48 -f 203/265/49 184/266/49 186/267/49 -f 190/268/49 194/269/49 188/270/49 -f 206/271/50 187/259/50 185/272/50 -f 206/271/51 194/273/51 193/263/51 -f 202/274/49 196/275/49 198/276/49 -f 201/277/47 198/276/47 197/278/47 -f 199/279/50 197/278/50 195/280/50 -f 196/275/52 199/281/52 195/282/52 -f 205/283/52 204/284/52 203/265/52 -f 184/253/46 204/284/46 183/254/46 -f 193/263/50 191/285/50 189/257/50 -f 185/252/44 186/256/44 184/253/44 -f 187/255/45 188/286/45 186/256/45 -f 189/257/46 190/287/46 188/258/46 -f 191/260/47 192/264/47 190/261/47 -f 193/263/48 194/273/48 192/264/48 -f 186/267/49 188/270/49 205/283/49 -f 205/283/49 203/265/49 186/267/49 -f 192/288/49 194/269/49 190/268/49 -f 194/269/49 205/283/49 188/270/49 -f 185/272/50 183/289/50 204/284/50 -f 204/284/50 206/271/50 185/272/50 -f 206/271/51 205/290/51 194/273/51 -f 202/274/49 200/291/49 196/275/49 -f 201/277/47 202/274/47 198/276/47 -f 199/279/50 201/277/50 197/278/50 -f 196/275/52 200/291/52 199/281/52 -f 205/283/52 206/271/52 204/284/52 -f 184/253/46 203/265/46 204/284/46 -f 189/257/50 187/259/50 193/263/50 -f 187/259/50 206/271/50 193/263/50 +f 185/252/46 184/253/46 183/254/46 +f 187/255/47 186/256/47 185/252/47 +f 189/257/48 188/258/48 187/259/48 +f 191/260/49 190/261/49 189/262/49 +f 193/263/50 192/264/50 191/260/50 +f 203/265/51 184/266/51 186/267/51 +f 190/268/51 194/269/51 188/270/51 +f 206/271/52 187/259/52 185/272/52 +f 206/271/53 194/273/53 193/263/53 +f 202/274/51 196/275/51 198/276/51 +f 201/277/49 198/276/49 197/278/49 +f 199/279/52 197/278/52 195/280/52 +f 196/275/54 199/281/54 195/282/54 +f 205/283/54 204/284/54 203/265/54 +f 184/253/48 204/284/48 183/254/48 +f 193/263/52 191/285/52 189/257/52 +f 185/252/46 186/256/46 184/253/46 +f 187/255/47 188/286/47 186/256/47 +f 189/257/48 190/287/48 188/258/48 +f 191/260/49 192/264/49 190/261/49 +f 193/263/50 194/273/50 192/264/50 +f 186/267/51 188/270/51 205/283/51 +f 205/283/51 203/265/51 186/267/51 +f 192/288/51 194/269/51 190/268/51 +f 194/269/51 205/283/51 188/270/51 +f 185/272/52 183/289/52 204/284/52 +f 204/284/52 206/271/52 185/272/52 +f 206/271/53 205/290/53 194/273/53 +f 202/274/51 200/291/51 196/275/51 +f 201/277/49 202/274/49 198/276/49 +f 199/279/52 201/277/52 197/278/52 +f 196/275/54 200/291/54 199/281/54 +f 205/283/54 206/271/54 204/284/54 +f 184/253/48 203/265/48 204/284/48 +f 189/257/52 187/259/52 193/263/52 +f 187/259/52 206/271/52 193/263/52 o Drum v 0.000000 2.250000 -0.875000 v -0.625000 2.082532 -0.875000 @@ -1538,339 +1540,339 @@ vn 0.2588 -0.9659 0.0000 vn -0.9659 -0.2588 0.0000 vn -0.2588 0.9659 0.0000 s off -f 245/292/53 274/293/53 244/294/53 -f 244/294/53 275/295/53 243/296/53 -f 246/297/53 273/298/53 245/292/53 -f 241/299/53 326/300/53 240/301/53 -f 324/302/53 241/299/53 242/303/53 -f 323/304/53 242/303/53 243/296/53 -f 294/305/53 321/306/53 293/307/53 -f 293/307/53 322/308/53 292/309/53 -f 322/308/53 291/310/53 292/309/53 -f 288/311/53 261/312/53 262/313/53 -f 289/314/53 260/315/53 261/312/53 -f 290/316/53 259/317/53 260/315/53 -f 278/318/53 305/319/53 277/320/53 -f 257/321/53 310/322/53 256/323/53 -f 258/324/53 309/325/53 257/321/53 -f 259/317/53 308/326/53 258/324/53 -f 277/320/53 306/327/53 276/328/53 -f 306/327/53 275/295/53 276/328/53 -f 275/295/53 259/317/53 323/304/53 -f 230/329/53 272/330/53 246/297/53 -f 220/331/53 240/301/53 326/300/53 -f 222/332/53 320/333/53 294/305/53 -f 224/334/53 288/311/53 262/313/53 -f 226/335/53 256/323/53 310/322/53 -f 228/336/53 304/337/53 278/318/53 -f 233/338/54 318/339/54 317/340/54 -f 238/341/54 265/342/54 264/343/54 -f 270/344/54 297/345/54 296/346/54 -f 249/347/54 302/348/54 301/349/54 -f 253/350/54 280/351/54 254/352/54 -f 286/353/54 313/354/54 312/355/54 -f 284/356/54 313/354/54 285/357/54 -f 283/358/54 314/359/54 284/356/54 -f 233/338/54 316/360/54 234/361/54 -f 234/361/54 315/362/54 235/363/54 -f 237/364/54 266/365/54 265/342/54 -f 236/366/54 267/367/54 266/365/54 -f 269/368/54 298/369/54 297/345/54 -f 267/367/54 298/369/54 268/370/54 -f 250/371/54 301/349/54 300/372/54 -f 251/373/54 300/372/54 299/374/54 -f 252/375/54 281/376/54 253/350/54 -f 251/373/54 282/377/54 252/375/54 -f 251/373/54 267/367/54 315/362/54 -f 208/378/54 318/339/54 232/379/54 -f 218/380/54 238/341/54 264/343/54 -f 216/381/54 270/344/54 296/346/54 -f 214/382/54 302/348/54 248/383/54 -f 212/384/54 254/352/54 280/351/54 -f 210/385/54 286/353/54 312/355/54 -f 333/386/53 331/387/53 329/388/53 -f 341/389/53 339/390/53 337/391/53 -f 349/392/53 347/393/53 345/394/53 -f 357/395/53 355/396/53 353/397/53 -f 365/398/53 363/399/53 361/400/53 -f 373/401/53 371/402/53 369/403/53 -f 379/404/54 381/405/54 375/406/54 -f 387/407/54 389/408/54 383/409/54 -f 393/410/54 395/411/54 397/412/54 -f 403/413/54 405/414/54 399/415/54 -f 409/416/54 411/417/54 413/418/54 -f 417/419/54 419/420/54 421/421/54 -f 245/292/53 273/298/53 274/293/53 -f 244/294/53 274/293/53 275/295/53 -f 246/297/53 272/330/53 273/298/53 -f 241/299/53 325/422/53 326/300/53 -f 324/302/53 325/422/53 241/299/53 -f 323/304/53 324/302/53 242/303/53 -f 294/305/53 320/333/53 321/306/53 -f 293/307/53 321/306/53 322/308/53 -f 322/308/53 323/304/53 291/310/53 -f 288/311/53 289/314/53 261/312/53 -f 289/314/53 290/316/53 260/315/53 -f 290/316/53 291/310/53 259/317/53 -f 278/318/53 304/337/53 305/319/53 -f 257/321/53 309/325/53 310/322/53 -f 258/324/53 308/326/53 309/325/53 -f 259/317/53 307/423/53 308/326/53 -f 277/320/53 305/319/53 306/327/53 -f 306/327/53 307/423/53 275/295/53 -f 323/304/53 243/296/53 275/295/53 -f 275/295/53 307/423/53 259/317/53 -f 259/317/53 291/310/53 323/304/53 -f 230/329/53 229/424/53 272/330/53 -f 229/424/53 271/425/53 272/330/53 -f 239/426/53 219/427/53 246/297/53 -f 219/427/53 230/329/53 246/297/53 -f 220/331/53 219/427/53 240/301/53 -f 219/427/53 239/426/53 240/301/53 -f 319/428/53 221/429/53 326/300/53 -f 221/429/53 220/331/53 326/300/53 -f 222/332/53 221/429/53 320/333/53 -f 221/429/53 319/428/53 320/333/53 -f 287/430/53 223/431/53 294/305/53 -f 223/431/53 222/332/53 294/305/53 -f 224/334/53 223/431/53 288/311/53 -f 223/431/53 287/430/53 288/311/53 -f 255/432/53 225/433/53 262/313/53 -f 225/433/53 224/334/53 262/313/53 -f 226/335/53 225/433/53 256/323/53 -f 225/433/53 255/432/53 256/323/53 -f 303/434/53 227/435/53 310/322/53 -f 227/435/53 226/335/53 310/322/53 -f 228/336/53 227/435/53 304/337/53 -f 227/435/53 303/434/53 304/337/53 -f 271/425/53 229/424/53 278/318/53 -f 229/424/53 228/336/53 278/318/53 -f 233/338/54 232/379/54 318/339/54 -f 238/341/54 237/364/54 265/342/54 -f 270/344/54 269/368/54 297/345/54 -f 249/347/54 248/383/54 302/348/54 -f 253/350/54 281/376/54 280/351/54 -f 286/353/54 285/357/54 313/354/54 -f 284/356/54 314/359/54 313/354/54 -f 283/358/54 315/362/54 314/359/54 -f 233/338/54 317/340/54 316/360/54 -f 234/361/54 316/360/54 315/362/54 -f 237/364/54 236/366/54 266/365/54 -f 236/366/54 235/363/54 267/367/54 -f 269/368/54 268/370/54 298/369/54 -f 267/367/54 299/374/54 298/369/54 -f 250/371/54 249/347/54 301/349/54 -f 251/373/54 250/371/54 300/372/54 -f 252/375/54 282/377/54 281/376/54 -f 251/373/54 283/358/54 282/377/54 -f 315/362/54 283/358/54 251/373/54 -f 251/373/54 299/374/54 267/367/54 -f 267/367/54 235/363/54 315/362/54 -f 231/436/54 207/437/54 232/379/54 -f 207/437/54 208/378/54 232/379/54 -f 208/378/54 209/438/54 318/339/54 -f 209/438/54 311/439/54 318/339/54 -f 263/440/54 217/441/54 264/343/54 -f 217/441/54 218/380/54 264/343/54 -f 218/380/54 207/437/54 238/341/54 -f 207/437/54 231/436/54 238/341/54 -f 295/442/54 215/443/54 296/346/54 -f 215/443/54 216/381/54 296/346/54 -f 216/381/54 217/441/54 270/344/54 -f 217/441/54 263/440/54 270/344/54 -f 247/444/54 213/445/54 248/383/54 -f 213/445/54 214/382/54 248/383/54 -f 214/382/54 215/443/54 302/348/54 -f 215/443/54 295/442/54 302/348/54 -f 279/446/54 211/447/54 280/351/54 -f 211/447/54 212/384/54 280/351/54 -f 212/384/54 213/445/54 254/352/54 -f 213/445/54 247/444/54 254/352/54 -f 311/439/54 209/438/54 312/355/54 -f 209/438/54 210/385/54 312/355/54 -f 210/385/54 211/447/54 286/353/54 -f 211/447/54 279/446/54 286/353/54 -f 329/388/53 328/448/53 327/449/53 -f 327/449/53 334/450/53 333/386/53 -f 333/386/53 332/451/53 331/387/53 -f 331/387/53 330/452/53 329/388/53 -f 329/388/53 327/449/53 333/386/53 -f 337/391/53 336/453/53 335/454/53 -f 335/454/53 342/455/53 341/389/53 -f 341/389/53 340/456/53 339/390/53 -f 339/390/53 338/457/53 337/391/53 -f 337/391/53 335/454/53 341/389/53 -f 345/394/53 344/458/53 343/459/53 -f 343/459/53 350/460/53 345/394/53 -f 350/460/53 349/392/53 345/394/53 -f 349/392/53 348/461/53 347/393/53 -f 347/393/53 346/462/53 345/394/53 -f 353/397/53 352/463/53 351/464/53 -f 351/464/53 358/465/53 357/395/53 -f 357/395/53 356/466/53 355/396/53 -f 355/396/53 354/467/53 353/397/53 -f 353/397/53 351/464/53 357/395/53 -f 361/400/53 360/468/53 359/469/53 -f 359/469/53 366/470/53 361/400/53 -f 366/470/53 365/398/53 361/400/53 -f 365/398/53 364/471/53 363/399/53 -f 363/399/53 362/472/53 361/400/53 -f 369/403/53 368/473/53 367/474/53 -f 367/474/53 374/475/53 369/403/53 -f 374/475/53 373/401/53 369/403/53 -f 373/401/53 372/476/53 371/402/53 -f 371/402/53 370/477/53 369/403/53 -f 375/406/54 376/478/54 377/479/54 -f 377/479/54 378/480/54 379/404/54 -f 379/404/54 380/481/54 381/405/54 -f 381/405/54 382/482/54 375/406/54 -f 375/406/54 377/479/54 379/404/54 -f 383/409/54 384/483/54 385/484/54 -f 385/484/54 386/485/54 387/407/54 -f 387/407/54 388/486/54 389/408/54 -f 389/408/54 390/487/54 383/409/54 -f 383/409/54 385/484/54 387/407/54 -f 391/488/54 392/489/54 393/410/54 -f 393/410/54 394/490/54 395/411/54 -f 395/411/54 396/491/54 397/412/54 -f 397/412/54 398/492/54 391/488/54 -f 391/488/54 393/410/54 397/412/54 -f 399/415/54 400/493/54 401/494/54 -f 401/494/54 402/495/54 403/413/54 -f 403/413/54 404/496/54 405/414/54 -f 405/414/54 406/497/54 399/415/54 -f 399/415/54 401/494/54 403/413/54 -f 407/498/54 408/499/54 409/416/54 -f 409/416/54 410/500/54 411/417/54 -f 411/417/54 412/501/54 413/418/54 -f 413/418/54 414/502/54 407/498/54 -f 407/498/54 409/416/54 413/418/54 -f 415/503/54 416/504/54 417/419/54 -f 417/419/54 418/505/54 419/420/54 -f 419/420/54 420/506/54 421/421/54 -f 421/421/54 422/507/54 415/503/54 -f 415/503/54 417/419/54 421/421/54 +f 245/292/55 274/293/55 244/294/55 +f 244/294/55 275/295/55 243/296/55 +f 246/297/55 273/298/55 245/292/55 +f 241/299/55 326/300/55 240/301/55 +f 324/302/55 241/299/55 242/303/55 +f 323/304/55 242/303/55 243/296/55 +f 294/305/55 321/306/55 293/307/55 +f 293/307/55 322/308/55 292/309/55 +f 322/308/55 291/310/55 292/309/55 +f 288/311/55 261/312/55 262/313/55 +f 289/314/55 260/315/55 261/312/55 +f 290/316/55 259/317/55 260/315/55 +f 278/318/55 305/319/55 277/320/55 +f 257/321/55 310/322/55 256/323/55 +f 258/324/55 309/325/55 257/321/55 +f 259/317/55 308/326/55 258/324/55 +f 277/320/55 306/327/55 276/328/55 +f 306/327/55 275/295/55 276/328/55 +f 275/295/55 259/317/55 323/304/55 +f 230/329/55 272/330/55 246/297/55 +f 220/331/55 240/301/55 326/300/55 +f 222/332/55 320/333/55 294/305/55 +f 224/334/55 288/311/55 262/313/55 +f 226/335/55 256/323/55 310/322/55 +f 228/336/55 304/337/55 278/318/55 +f 233/338/56 318/339/56 317/340/56 +f 238/341/56 265/342/56 264/343/56 +f 270/344/56 297/345/56 296/346/56 +f 249/347/56 302/348/56 301/349/56 +f 253/350/56 280/351/56 254/352/56 +f 286/353/56 313/354/56 312/355/56 +f 284/356/56 313/354/56 285/357/56 +f 283/358/56 314/359/56 284/356/56 +f 233/338/56 316/360/56 234/361/56 +f 234/361/56 315/362/56 235/363/56 +f 237/364/56 266/365/56 265/342/56 +f 236/366/56 267/367/56 266/365/56 +f 269/368/56 298/369/56 297/345/56 +f 267/367/56 298/369/56 268/370/56 +f 250/371/56 301/349/56 300/372/56 +f 251/373/56 300/372/56 299/374/56 +f 252/375/56 281/376/56 253/350/56 +f 251/373/56 282/377/56 252/375/56 +f 251/373/56 267/367/56 315/362/56 +f 208/378/56 318/339/56 232/379/56 +f 218/380/56 238/341/56 264/343/56 +f 216/381/56 270/344/56 296/346/56 +f 214/382/56 302/348/56 248/383/56 +f 212/384/56 254/352/56 280/351/56 +f 210/385/56 286/353/56 312/355/56 +f 333/386/55 331/387/55 329/388/55 +f 341/389/55 339/390/55 337/391/55 +f 349/392/55 347/393/55 345/394/55 +f 357/395/55 355/396/55 353/397/55 +f 365/398/55 363/399/55 361/400/55 +f 373/401/55 371/402/55 369/403/55 +f 379/404/56 381/405/56 375/406/56 +f 387/407/56 389/408/56 383/409/56 +f 393/410/56 395/411/56 397/412/56 +f 403/413/56 405/414/56 399/415/56 +f 409/416/56 411/417/56 413/418/56 +f 417/419/56 419/420/56 421/421/56 +f 245/292/55 273/298/55 274/293/55 +f 244/294/55 274/293/55 275/295/55 +f 246/297/55 272/330/55 273/298/55 +f 241/299/55 325/422/55 326/300/55 +f 324/302/55 325/422/55 241/299/55 +f 323/304/55 324/302/55 242/303/55 +f 294/305/55 320/333/55 321/306/55 +f 293/307/55 321/306/55 322/308/55 +f 322/308/55 323/304/55 291/310/55 +f 288/311/55 289/314/55 261/312/55 +f 289/314/55 290/316/55 260/315/55 +f 290/316/55 291/310/55 259/317/55 +f 278/318/55 304/337/55 305/319/55 +f 257/321/55 309/325/55 310/322/55 +f 258/324/55 308/326/55 309/325/55 +f 259/317/55 307/423/55 308/326/55 +f 277/320/55 305/319/55 306/327/55 +f 306/327/55 307/423/55 275/295/55 +f 323/304/55 243/296/55 275/295/55 +f 275/295/55 307/423/55 259/317/55 +f 259/317/55 291/310/55 323/304/55 +f 230/329/55 229/424/55 272/330/55 +f 229/424/55 271/425/55 272/330/55 +f 239/426/55 219/427/55 246/297/55 +f 219/427/55 230/329/55 246/297/55 +f 220/331/55 219/427/55 240/301/55 +f 219/427/55 239/426/55 240/301/55 +f 319/428/55 221/429/55 326/300/55 +f 221/429/55 220/331/55 326/300/55 +f 222/332/55 221/429/55 320/333/55 +f 221/429/55 319/428/55 320/333/55 +f 287/430/55 223/431/55 294/305/55 +f 223/431/55 222/332/55 294/305/55 +f 224/334/55 223/431/55 288/311/55 +f 223/431/55 287/430/55 288/311/55 +f 255/432/55 225/433/55 262/313/55 +f 225/433/55 224/334/55 262/313/55 +f 226/335/55 225/433/55 256/323/55 +f 225/433/55 255/432/55 256/323/55 +f 303/434/55 227/435/55 310/322/55 +f 227/435/55 226/335/55 310/322/55 +f 228/336/55 227/435/55 304/337/55 +f 227/435/55 303/434/55 304/337/55 +f 271/425/55 229/424/55 278/318/55 +f 229/424/55 228/336/55 278/318/55 +f 233/338/56 232/379/56 318/339/56 +f 238/341/56 237/364/56 265/342/56 +f 270/344/56 269/368/56 297/345/56 +f 249/347/56 248/383/56 302/348/56 +f 253/350/56 281/376/56 280/351/56 +f 286/353/56 285/357/56 313/354/56 +f 284/356/56 314/359/56 313/354/56 +f 283/358/56 315/362/56 314/359/56 +f 233/338/56 317/340/56 316/360/56 +f 234/361/56 316/360/56 315/362/56 +f 237/364/56 236/366/56 266/365/56 +f 236/366/56 235/363/56 267/367/56 +f 269/368/56 268/370/56 298/369/56 +f 267/367/56 299/374/56 298/369/56 +f 250/371/56 249/347/56 301/349/56 +f 251/373/56 250/371/56 300/372/56 +f 252/375/56 282/377/56 281/376/56 +f 251/373/56 283/358/56 282/377/56 +f 315/362/56 283/358/56 251/373/56 +f 251/373/56 299/374/56 267/367/56 +f 267/367/56 235/363/56 315/362/56 +f 231/436/56 207/437/56 232/379/56 +f 207/437/56 208/378/56 232/379/56 +f 208/378/56 209/438/56 318/339/56 +f 209/438/56 311/439/56 318/339/56 +f 263/440/56 217/441/56 264/343/56 +f 217/441/56 218/380/56 264/343/56 +f 218/380/56 207/437/56 238/341/56 +f 207/437/56 231/436/56 238/341/56 +f 295/442/56 215/443/56 296/346/56 +f 215/443/56 216/381/56 296/346/56 +f 216/381/56 217/441/56 270/344/56 +f 217/441/56 263/440/56 270/344/56 +f 247/444/56 213/445/56 248/383/56 +f 213/445/56 214/382/56 248/383/56 +f 214/382/56 215/443/56 302/348/56 +f 215/443/56 295/442/56 302/348/56 +f 279/446/56 211/447/56 280/351/56 +f 211/447/56 212/384/56 280/351/56 +f 212/384/56 213/445/56 254/352/56 +f 213/445/56 247/444/56 254/352/56 +f 311/439/56 209/438/56 312/355/56 +f 209/438/56 210/385/56 312/355/56 +f 210/385/56 211/447/56 286/353/56 +f 211/447/56 279/446/56 286/353/56 +f 329/388/55 328/448/55 327/449/55 +f 327/449/55 334/450/55 333/386/55 +f 333/386/55 332/451/55 331/387/55 +f 331/387/55 330/452/55 329/388/55 +f 329/388/55 327/449/55 333/386/55 +f 337/391/55 336/453/55 335/454/55 +f 335/454/55 342/455/55 341/389/55 +f 341/389/55 340/456/55 339/390/55 +f 339/390/55 338/457/55 337/391/55 +f 337/391/55 335/454/55 341/389/55 +f 345/394/55 344/458/55 343/459/55 +f 343/459/55 350/460/55 345/394/55 +f 350/460/55 349/392/55 345/394/55 +f 349/392/55 348/461/55 347/393/55 +f 347/393/55 346/462/55 345/394/55 +f 353/397/55 352/463/55 351/464/55 +f 351/464/55 358/465/55 357/395/55 +f 357/395/55 356/466/55 355/396/55 +f 355/396/55 354/467/55 353/397/55 +f 353/397/55 351/464/55 357/395/55 +f 361/400/55 360/468/55 359/469/55 +f 359/469/55 366/470/55 361/400/55 +f 366/470/55 365/398/55 361/400/55 +f 365/398/55 364/471/55 363/399/55 +f 363/399/55 362/472/55 361/400/55 +f 369/403/55 368/473/55 367/474/55 +f 367/474/55 374/475/55 369/403/55 +f 374/475/55 373/401/55 369/403/55 +f 373/401/55 372/476/55 371/402/55 +f 371/402/55 370/477/55 369/403/55 +f 375/406/56 376/478/56 377/479/56 +f 377/479/56 378/480/56 379/404/56 +f 379/404/56 380/481/56 381/405/56 +f 381/405/56 382/482/56 375/406/56 +f 375/406/56 377/479/56 379/404/56 +f 383/409/56 384/483/56 385/484/56 +f 385/484/56 386/485/56 387/407/56 +f 387/407/56 388/486/56 389/408/56 +f 389/408/56 390/487/56 383/409/56 +f 383/409/56 385/484/56 387/407/56 +f 391/488/56 392/489/56 393/410/56 +f 393/410/56 394/490/56 395/411/56 +f 395/411/56 396/491/56 397/412/56 +f 397/412/56 398/492/56 391/488/56 +f 391/488/56 393/410/56 397/412/56 +f 399/415/56 400/493/56 401/494/56 +f 401/494/56 402/495/56 403/413/56 +f 403/413/56 404/496/56 405/414/56 +f 405/414/56 406/497/56 399/415/56 +f 399/415/56 401/494/56 403/413/56 +f 407/498/56 408/499/56 409/416/56 +f 409/416/56 410/500/56 411/417/56 +f 411/417/56 412/501/56 413/418/56 +f 413/418/56 414/502/56 407/498/56 +f 407/498/56 409/416/56 413/418/56 +f 415/503/56 416/504/56 417/419/56 +f 417/419/56 418/505/56 419/420/56 +f 419/420/56 420/506/56 421/421/56 +f 421/421/56 422/507/56 415/503/56 +f 415/503/56 417/419/56 421/421/56 s 1 -f 437/508/55 426/509/56 425/510/55 -f 444/511/57 433/512/58 432/513/57 -f 441/514/59 430/515/60 429/516/59 -f 438/517/56 427/518/61 426/509/56 -f 445/519/58 434/520/62 433/512/58 -f 435/521/63 424/522/64 423/523/63 -f 442/524/60 431/525/65 430/515/60 -f 439/526/61 428/527/66 427/518/61 -f 446/528/62 423/523/63 434/520/62 -f 436/529/64 425/510/55 424/522/64 -f 443/530/65 432/513/57 431/525/65 -f 440/531/66 429/532/59 428/527/66 -f 453/533/56 460/534/67 452/535/67 -f 451/536/63 458/537/68 450/538/68 -f 449/539/57 456/540/69 448/541/69 -f 454/542/70 461/543/56 453/533/56 -f 452/535/67 459/544/63 451/545/63 -f 450/538/68 457/546/57 449/539/57 -f 448/541/69 455/547/59 447/548/59 -f 447/548/59 462/549/70 454/542/70 -f 469/550/57 476/551/69 468/552/69 -f 467/553/59 474/554/70 466/555/70 -f 465/556/56 472/557/67 464/558/67 -f 470/559/68 477/560/57 469/550/57 -f 468/552/69 475/561/59 467/562/59 -f 466/555/70 473/563/56 465/556/56 -f 464/558/67 471/564/63 463/565/63 -f 463/565/63 478/566/68 470/559/68 -f 485/567/64 492/568/71 484/569/71 -f 483/570/58 490/571/72 482/572/72 -f 481/573/60 488/574/73 480/575/73 -f 486/576/74 493/577/64 485/567/64 -f 484/569/71 491/578/58 483/579/58 -f 482/572/72 489/580/60 481/573/60 -f 480/575/73 487/581/61 479/582/61 -f 479/582/61 494/583/74 486/576/74 -f 501/584/60 508/585/73 500/586/73 -f 499/587/61 506/588/74 498/589/74 -f 497/590/64 504/591/71 496/592/71 -f 502/593/72 509/594/60 501/584/60 -f 500/586/73 507/595/61 499/596/61 -f 498/589/74 505/597/64 497/590/64 -f 496/592/71 503/598/58 495/599/58 -f 495/599/58 510/600/72 502/593/72 -f 517/601/62 524/602/75 516/603/75 -f 515/604/65 522/605/76 514/606/76 -f 513/607/66 520/608/77 512/609/77 -f 518/610/78 525/611/62 517/601/62 -f 516/603/75 523/612/65 515/613/65 -f 514/606/76 521/614/66 513/607/66 -f 512/609/77 519/615/55 511/616/55 -f 511/616/55 526/617/78 518/610/78 -f 533/618/66 540/619/77 532/620/77 -f 531/621/55 538/622/78 530/623/78 -f 529/624/62 536/625/75 528/626/75 -f 534/627/76 541/628/66 533/618/66 -f 532/620/77 539/629/55 531/630/55 -f 530/623/78 537/631/62 529/624/62 -f 528/626/75 535/632/65 527/633/65 -f 527/633/65 542/634/76 534/627/76 -f 437/508/55 438/517/56 426/509/56 -f 444/511/57 445/519/58 433/512/58 -f 441/514/59 442/524/60 430/515/60 -f 438/517/56 439/526/61 427/518/61 -f 445/519/58 446/528/62 434/520/62 -f 435/521/63 436/529/64 424/522/64 -f 442/524/60 443/530/65 431/525/65 -f 439/526/61 440/531/66 428/527/66 -f 446/528/62 435/521/63 423/523/63 -f 436/529/64 437/508/55 425/510/55 -f 443/530/65 444/511/57 432/513/57 -f 440/531/66 441/635/59 429/532/59 -f 453/533/56 461/543/56 460/534/67 -f 451/536/63 459/636/63 458/537/68 -f 449/539/57 457/546/57 456/540/69 -f 454/542/70 462/549/70 461/543/56 -f 452/535/67 460/534/67 459/544/63 -f 450/538/68 458/537/68 457/546/57 -f 448/541/69 456/540/69 455/547/59 -f 447/548/59 455/547/59 462/549/70 -f 469/550/57 477/560/57 476/551/69 -f 467/553/59 475/637/59 474/554/70 -f 465/556/56 473/563/56 472/557/67 -f 470/559/68 478/566/68 477/560/57 -f 468/552/69 476/551/69 475/561/59 -f 466/555/70 474/554/70 473/563/56 -f 464/558/67 472/557/67 471/564/63 -f 463/565/63 471/564/63 478/566/68 -f 485/567/64 493/577/64 492/568/71 -f 483/570/58 491/638/58 490/571/72 -f 481/573/60 489/580/60 488/574/73 -f 486/576/74 494/583/74 493/577/64 -f 484/569/71 492/568/71 491/578/58 -f 482/572/72 490/571/72 489/580/60 -f 480/575/73 488/574/73 487/581/61 -f 479/582/61 487/581/61 494/583/74 -f 501/584/60 509/594/60 508/585/73 -f 499/587/61 507/639/61 506/588/74 -f 497/590/64 505/597/64 504/591/71 -f 502/593/72 510/600/72 509/594/60 -f 500/586/73 508/585/73 507/595/61 -f 498/589/74 506/588/74 505/597/64 -f 496/592/71 504/591/71 503/598/58 -f 495/599/58 503/598/58 510/600/72 -f 517/601/62 525/611/62 524/602/75 -f 515/604/65 523/640/65 522/605/76 -f 513/607/66 521/614/66 520/608/77 -f 518/610/78 526/617/78 525/611/62 -f 516/603/75 524/602/75 523/612/65 -f 514/606/76 522/605/76 521/614/66 -f 512/609/77 520/608/77 519/615/55 -f 511/616/55 519/615/55 526/617/78 -f 533/618/66 541/628/66 540/619/77 -f 531/621/55 539/641/55 538/622/78 -f 529/624/62 537/631/62 536/625/75 -f 534/627/76 542/634/76 541/628/66 -f 532/620/77 540/619/77 539/629/55 -f 530/623/78 538/622/78 537/631/62 -f 528/626/75 536/625/75 535/632/65 -f 527/633/65 535/632/65 542/634/76 +f 437/508/57 426/509/58 425/510/57 +f 444/511/59 433/512/60 432/513/59 +f 441/514/61 430/515/62 429/516/61 +f 438/517/58 427/518/63 426/509/58 +f 445/519/60 434/520/64 433/512/60 +f 435/521/65 424/522/66 423/523/65 +f 442/524/62 431/525/67 430/515/62 +f 439/526/63 428/527/68 427/518/63 +f 446/528/64 423/523/65 434/520/64 +f 436/529/66 425/510/57 424/522/66 +f 443/530/67 432/513/59 431/525/67 +f 440/531/68 429/532/61 428/527/68 +f 453/533/58 460/534/69 452/535/69 +f 451/536/65 458/537/70 450/538/70 +f 449/539/59 456/540/71 448/541/71 +f 454/542/72 461/543/58 453/533/58 +f 452/535/69 459/544/65 451/545/65 +f 450/538/70 457/546/59 449/539/59 +f 448/541/71 455/547/61 447/548/61 +f 447/548/61 462/549/72 454/542/72 +f 469/550/59 476/551/71 468/552/71 +f 467/553/61 474/554/72 466/555/72 +f 465/556/58 472/557/69 464/558/69 +f 470/559/70 477/560/59 469/550/59 +f 468/552/71 475/561/61 467/562/61 +f 466/555/72 473/563/58 465/556/58 +f 464/558/69 471/564/65 463/565/65 +f 463/565/65 478/566/70 470/559/70 +f 485/567/66 492/568/73 484/569/73 +f 483/570/60 490/571/74 482/572/74 +f 481/573/62 488/574/75 480/575/75 +f 486/576/76 493/577/66 485/567/66 +f 484/569/73 491/578/60 483/579/60 +f 482/572/74 489/580/62 481/573/62 +f 480/575/75 487/581/63 479/582/63 +f 479/582/63 494/583/76 486/576/76 +f 501/584/62 508/585/75 500/586/75 +f 499/587/63 506/588/76 498/589/76 +f 497/590/66 504/591/73 496/592/73 +f 502/593/74 509/594/62 501/584/62 +f 500/586/75 507/595/63 499/596/63 +f 498/589/76 505/597/66 497/590/66 +f 496/592/73 503/598/60 495/599/60 +f 495/599/60 510/600/74 502/593/74 +f 517/601/64 524/602/77 516/603/77 +f 515/604/67 522/605/78 514/606/78 +f 513/607/68 520/608/79 512/609/79 +f 518/610/80 525/611/64 517/601/64 +f 516/603/77 523/612/67 515/613/67 +f 514/606/78 521/614/68 513/607/68 +f 512/609/79 519/615/57 511/616/57 +f 511/616/57 526/617/80 518/610/80 +f 533/618/68 540/619/79 532/620/79 +f 531/621/57 538/622/80 530/623/80 +f 529/624/64 536/625/77 528/626/77 +f 534/627/78 541/628/68 533/618/68 +f 532/620/79 539/629/57 531/630/57 +f 530/623/80 537/631/64 529/624/64 +f 528/626/77 535/632/67 527/633/67 +f 527/633/67 542/634/78 534/627/78 +f 437/508/57 438/517/58 426/509/58 +f 444/511/59 445/519/60 433/512/60 +f 441/514/61 442/524/62 430/515/62 +f 438/517/58 439/526/63 427/518/63 +f 445/519/60 446/528/64 434/520/64 +f 435/521/65 436/529/66 424/522/66 +f 442/524/62 443/530/67 431/525/67 +f 439/526/63 440/531/68 428/527/68 +f 446/528/64 435/521/65 423/523/65 +f 436/529/66 437/508/57 425/510/57 +f 443/530/67 444/511/59 432/513/59 +f 440/531/68 441/635/61 429/532/61 +f 453/533/58 461/543/58 460/534/69 +f 451/536/65 459/636/65 458/537/70 +f 449/539/59 457/546/59 456/540/71 +f 454/542/72 462/549/72 461/543/58 +f 452/535/69 460/534/69 459/544/65 +f 450/538/70 458/537/70 457/546/59 +f 448/541/71 456/540/71 455/547/61 +f 447/548/61 455/547/61 462/549/72 +f 469/550/59 477/560/59 476/551/71 +f 467/553/61 475/637/61 474/554/72 +f 465/556/58 473/563/58 472/557/69 +f 470/559/70 478/566/70 477/560/59 +f 468/552/71 476/551/71 475/561/61 +f 466/555/72 474/554/72 473/563/58 +f 464/558/69 472/557/69 471/564/65 +f 463/565/65 471/564/65 478/566/70 +f 485/567/66 493/577/66 492/568/73 +f 483/570/60 491/638/60 490/571/74 +f 481/573/62 489/580/62 488/574/75 +f 486/576/76 494/583/76 493/577/66 +f 484/569/73 492/568/73 491/578/60 +f 482/572/74 490/571/74 489/580/62 +f 480/575/75 488/574/75 487/581/63 +f 479/582/63 487/581/63 494/583/76 +f 501/584/62 509/594/62 508/585/75 +f 499/587/63 507/639/63 506/588/76 +f 497/590/66 505/597/66 504/591/73 +f 502/593/74 510/600/74 509/594/62 +f 500/586/75 508/585/75 507/595/63 +f 498/589/76 506/588/76 505/597/66 +f 496/592/73 504/591/73 503/598/60 +f 495/599/60 503/598/60 510/600/74 +f 517/601/64 525/611/64 524/602/77 +f 515/604/67 523/640/67 522/605/78 +f 513/607/68 521/614/68 520/608/79 +f 518/610/80 526/617/80 525/611/64 +f 516/603/77 524/602/77 523/612/67 +f 514/606/78 522/605/78 521/614/68 +f 512/609/79 520/608/79 519/615/57 +f 511/616/57 519/615/57 526/617/80 +f 533/618/68 541/628/68 540/619/79 +f 531/621/57 539/641/57 538/622/80 +f 529/624/64 537/631/64 536/625/77 +f 534/627/78 542/634/78 541/628/68 +f 532/620/79 540/619/79 539/629/57 +f 530/623/80 538/622/80 537/631/64 +f 528/626/77 536/625/77 535/632/67 +f 527/633/67 535/632/67 542/634/78 o Grip v 0.000000 2.250000 -3.375000 v -0.625000 2.082532 -3.375000 @@ -2945,540 +2947,540 @@ vn 0.0000 -0.2898 -0.9571 vn 0.0000 -0.8816 -0.4718 vn 0.0000 0.1305 -0.9914 s off -f 948/642/79 946/643/79 944/644/79 -f 553/645/80 543/646/80 547/647/80 -f 582/648/81 576/649/81 574/650/81 -f 576/649/82 585/651/82 577/652/82 -f 572/653/82 582/648/82 574/650/82 -f 585/654/83 575/655/83 577/656/83 -f 575/655/82 581/657/82 573/658/82 -f 579/659/80 574/660/80 575/661/80 -f 579/662/82 586/663/82 578/664/82 -f 597/665/79 594/666/79 595/667/79 -f 607/668/81 605/669/81 601/670/81 -f 618/671/83 598/672/83 600/673/83 -f 594/666/80 602/674/80 595/667/80 -f 620/675/84 625/676/84 621/677/84 -f 597/665/85 624/678/85 596/679/85 -f 600/680/83 587/681/83 602/682/83 -f 578/664/81 590/683/81 592/684/81 -f 761/685/83 747/686/83 745/687/83 -f 763/688/83 751/689/83 747/686/83 -f 765/690/83 749/691/83 751/689/83 -f 767/692/83 753/693/83 749/691/83 -f 769/694/83 757/695/83 753/693/83 -f 771/696/83 755/697/83 757/695/83 -f 755/697/83 775/698/83 759/699/83 -f 779/700/83 775/698/83 777/701/83 -f 746/702/81 760/703/81 744/704/81 -f 774/705/81 754/706/81 758/707/81 -f 774/705/81 778/708/81 776/709/81 -f 785/710/83 783/711/83 781/712/83 -f 787/713/83 791/714/83 783/711/83 -f 789/715/83 795/716/83 791/714/83 -f 793/717/83 799/718/83 795/716/83 -f 799/718/83 801/719/83 803/720/83 -f 800/721/81 798/722/81 802/723/81 -f 796/724/81 794/725/81 798/722/81 -f 794/725/81 788/726/81 790/727/81 -f 786/728/81 790/727/81 788/726/81 -f 782/729/81 784/730/81 780/731/81 -f 809/732/79 812/733/79 808/734/79 -f 807/735/83 813/736/83 809/737/83 -f 808/738/81 810/739/81 805/740/81 -f 819/741/83 814/742/83 806/743/83 -f 816/744/81 815/745/81 818/746/81 -f 816/747/80 817/748/80 819/749/80 -f 805/740/81 815/745/81 804/750/81 -f 814/742/83 807/735/83 806/743/83 -f 579/751/83 593/752/83 591/753/83 -f 578/664/81 586/663/81 596/754/81 -f 916/755/79 919/756/79 917/757/79 -f 944/644/79 943/758/79 942/759/79 -f 942/759/79 949/760/79 948/642/79 -f 948/642/79 947/761/79 946/643/79 -f 946/643/79 945/762/79 944/644/79 -f 944/644/79 942/759/79 948/642/79 -f 543/646/80 544/763/80 545/764/80 -f 545/764/80 546/765/80 543/646/80 -f 546/765/80 547/647/80 543/646/80 -f 547/647/80 548/766/80 549/767/80 -f 549/767/80 550/768/80 551/769/80 -f 551/769/80 552/770/80 553/645/80 -f 553/645/80 554/771/80 543/646/80 -f 547/647/80 549/767/80 551/769/80 -f 551/769/80 553/645/80 547/647/80 -f 582/648/81 584/772/81 576/649/81 -f 576/649/82 584/772/82 585/651/82 -f 572/653/82 580/773/82 582/648/82 -f 585/654/83 583/774/83 575/655/83 -f 575/655/82 583/774/82 581/657/82 -f 575/661/80 573/775/80 579/659/80 -f 579/659/80 578/776/80 574/660/80 -f 578/776/80 572/777/80 574/660/80 -f 574/660/80 576/649/80 577/652/80 -f 574/660/80 577/652/80 575/661/80 -f 579/662/82 587/778/82 586/663/82 -f 597/665/79 596/679/79 594/666/79 -f 605/669/81 603/779/81 601/670/81 -f 601/670/81 586/780/81 599/781/81 -f 599/781/81 619/782/81 601/670/81 -f 619/782/81 617/783/81 601/670/81 -f 617/783/81 615/784/81 601/670/81 -f 615/784/81 613/785/81 601/670/81 -f 613/785/81 611/786/81 601/670/81 -f 611/786/81 609/787/81 601/670/81 -f 609/787/81 607/668/81 601/670/81 -f 598/672/83 587/788/83 600/673/83 -f 600/673/83 602/789/83 604/790/83 -f 604/790/83 606/791/83 600/673/83 -f 606/791/83 608/792/83 600/673/83 -f 608/792/83 610/793/83 600/673/83 -f 610/793/83 612/794/83 600/673/83 -f 612/794/83 614/795/83 600/673/83 -f 614/795/83 616/796/83 600/673/83 -f 616/796/83 618/671/83 600/673/83 -f 594/666/80 603/797/80 602/674/80 -f 620/675/84 624/678/84 625/676/84 -f 597/665/85 625/676/85 624/678/85 -f 587/681/83 579/751/83 597/798/83 -f 579/751/83 623/799/83 625/800/83 -f 597/798/83 579/751/83 625/800/83 -f 623/799/83 621/801/83 625/800/83 -f 597/798/83 595/802/83 587/681/83 -f 595/802/83 602/682/83 587/681/83 -f 580/773/81 572/653/81 592/684/81 -f 572/653/81 578/664/81 592/684/81 -f 578/664/81 622/803/81 590/683/81 -f 622/803/81 588/804/81 590/683/81 -f 761/685/83 763/688/83 747/686/83 -f 763/688/83 765/690/83 751/689/83 -f 765/690/83 767/692/83 749/691/83 -f 767/692/83 769/694/83 753/693/83 -f 769/694/83 771/696/83 757/695/83 -f 771/696/83 773/805/83 755/697/83 -f 755/697/83 773/805/83 775/698/83 -f 779/700/83 759/699/83 775/698/83 -f 746/702/81 762/806/81 760/703/81 -f 774/705/81 772/807/81 754/706/81 -f 774/705/81 758/707/81 778/708/81 -f 785/710/83 787/713/83 783/711/83 -f 787/713/83 789/715/83 791/714/83 -f 789/715/83 793/717/83 795/716/83 -f 793/717/83 797/808/83 799/718/83 -f 799/718/83 797/808/83 801/719/83 -f 800/721/81 796/724/81 798/722/81 -f 796/724/81 792/809/81 794/725/81 -f 794/725/81 792/809/81 788/726/81 -f 786/728/81 782/729/81 790/727/81 -f 782/729/81 786/728/81 784/730/81 -f 809/732/79 813/736/79 812/733/79 -f 807/735/83 811/810/83 813/736/83 -f 808/738/81 812/733/81 810/739/81 -f 819/741/83 817/748/83 814/742/83 -f 816/744/81 804/750/81 815/745/81 -f 816/747/80 818/746/80 817/748/80 -f 805/740/81 810/739/81 815/745/81 -f 814/742/83 811/810/83 807/735/83 -f 589/811/83 623/799/83 591/753/83 -f 623/799/83 579/751/83 591/753/83 -f 579/751/83 573/658/83 593/752/83 -f 573/658/83 581/657/83 593/752/83 -f 620/675/81 622/803/81 624/812/81 -f 622/803/81 578/664/81 624/812/81 -f 586/663/81 601/813/81 603/814/81 -f 603/814/81 594/815/81 586/663/81 -f 594/815/81 596/754/81 586/663/81 -f 596/754/81 624/812/81 578/664/81 -f 916/755/79 918/816/79 919/756/79 +f 948/642/81 946/643/81 944/644/81 +f 553/645/82 543/646/82 547/647/82 +f 582/648/83 576/649/83 574/650/83 +f 576/649/84 585/651/84 577/652/84 +f 572/653/84 582/648/84 574/650/84 +f 585/654/85 575/655/85 577/656/85 +f 575/655/84 581/657/84 573/658/84 +f 579/659/82 574/660/82 575/661/82 +f 579/662/84 586/663/84 578/664/84 +f 597/665/81 594/666/81 595/667/81 +f 607/668/83 605/669/83 601/670/83 +f 618/671/85 598/672/85 600/673/85 +f 594/666/82 602/674/82 595/667/82 +f 620/675/86 625/676/86 621/677/86 +f 597/665/87 624/678/87 596/679/87 +f 600/680/85 587/681/85 602/682/85 +f 578/664/83 590/683/83 592/684/83 +f 761/685/85 747/686/85 745/687/85 +f 763/688/85 751/689/85 747/686/85 +f 765/690/85 749/691/85 751/689/85 +f 767/692/85 753/693/85 749/691/85 +f 769/694/85 757/695/85 753/693/85 +f 771/696/85 755/697/85 757/695/85 +f 755/697/85 775/698/85 759/699/85 +f 779/700/85 775/698/85 777/701/85 +f 746/702/83 760/703/83 744/704/83 +f 774/705/83 754/706/83 758/707/83 +f 774/705/83 778/708/83 776/709/83 +f 785/710/85 783/711/85 781/712/85 +f 787/713/85 791/714/85 783/711/85 +f 789/715/85 795/716/85 791/714/85 +f 793/717/85 799/718/85 795/716/85 +f 799/718/85 801/719/85 803/720/85 +f 800/721/83 798/722/83 802/723/83 +f 796/724/83 794/725/83 798/722/83 +f 794/725/83 788/726/83 790/727/83 +f 786/728/83 790/727/83 788/726/83 +f 782/729/83 784/730/83 780/731/83 +f 809/732/81 812/733/81 808/734/81 +f 807/735/85 813/736/85 809/737/85 +f 808/738/83 810/739/83 805/740/83 +f 819/741/85 814/742/85 806/743/85 +f 816/744/83 815/745/83 818/746/83 +f 816/747/82 817/748/82 819/749/82 +f 805/740/83 815/745/83 804/750/83 +f 814/742/85 807/735/85 806/743/85 +f 579/751/85 593/752/85 591/753/85 +f 578/664/83 586/663/83 596/754/83 +f 916/755/81 919/756/81 917/757/81 +f 944/644/81 943/758/81 942/759/81 +f 942/759/81 949/760/81 948/642/81 +f 948/642/81 947/761/81 946/643/81 +f 946/643/81 945/762/81 944/644/81 +f 944/644/81 942/759/81 948/642/81 +f 543/646/82 544/763/82 545/764/82 +f 545/764/82 546/765/82 543/646/82 +f 546/765/82 547/647/82 543/646/82 +f 547/647/82 548/766/82 549/767/82 +f 549/767/82 550/768/82 551/769/82 +f 551/769/82 552/770/82 553/645/82 +f 553/645/82 554/771/82 543/646/82 +f 547/647/82 549/767/82 551/769/82 +f 551/769/82 553/645/82 547/647/82 +f 582/648/83 584/772/83 576/649/83 +f 576/649/84 584/772/84 585/651/84 +f 572/653/84 580/773/84 582/648/84 +f 585/654/85 583/774/85 575/655/85 +f 575/655/84 583/774/84 581/657/84 +f 575/661/82 573/775/82 579/659/82 +f 579/659/82 578/776/82 574/660/82 +f 578/776/82 572/777/82 574/660/82 +f 574/660/82 576/649/82 577/652/82 +f 574/660/82 577/652/82 575/661/82 +f 579/662/84 587/778/84 586/663/84 +f 597/665/81 596/679/81 594/666/81 +f 605/669/83 603/779/83 601/670/83 +f 601/670/83 586/780/83 599/781/83 +f 599/781/83 619/782/83 601/670/83 +f 619/782/83 617/783/83 601/670/83 +f 617/783/83 615/784/83 601/670/83 +f 615/784/83 613/785/83 601/670/83 +f 613/785/83 611/786/83 601/670/83 +f 611/786/83 609/787/83 601/670/83 +f 609/787/83 607/668/83 601/670/83 +f 598/672/85 587/788/85 600/673/85 +f 600/673/85 602/789/85 604/790/85 +f 604/790/85 606/791/85 600/673/85 +f 606/791/85 608/792/85 600/673/85 +f 608/792/85 610/793/85 600/673/85 +f 610/793/85 612/794/85 600/673/85 +f 612/794/85 614/795/85 600/673/85 +f 614/795/85 616/796/85 600/673/85 +f 616/796/85 618/671/85 600/673/85 +f 594/666/82 603/797/82 602/674/82 +f 620/675/86 624/678/86 625/676/86 +f 597/665/87 625/676/87 624/678/87 +f 587/681/85 579/751/85 597/798/85 +f 579/751/85 623/799/85 625/800/85 +f 597/798/85 579/751/85 625/800/85 +f 623/799/85 621/801/85 625/800/85 +f 597/798/85 595/802/85 587/681/85 +f 595/802/85 602/682/85 587/681/85 +f 580/773/83 572/653/83 592/684/83 +f 572/653/83 578/664/83 592/684/83 +f 578/664/83 622/803/83 590/683/83 +f 622/803/83 588/804/83 590/683/83 +f 761/685/85 763/688/85 747/686/85 +f 763/688/85 765/690/85 751/689/85 +f 765/690/85 767/692/85 749/691/85 +f 767/692/85 769/694/85 753/693/85 +f 769/694/85 771/696/85 757/695/85 +f 771/696/85 773/805/85 755/697/85 +f 755/697/85 773/805/85 775/698/85 +f 779/700/85 759/699/85 775/698/85 +f 746/702/83 762/806/83 760/703/83 +f 774/705/83 772/807/83 754/706/83 +f 774/705/83 758/707/83 778/708/83 +f 785/710/85 787/713/85 783/711/85 +f 787/713/85 789/715/85 791/714/85 +f 789/715/85 793/717/85 795/716/85 +f 793/717/85 797/808/85 799/718/85 +f 799/718/85 797/808/85 801/719/85 +f 800/721/83 796/724/83 798/722/83 +f 796/724/83 792/809/83 794/725/83 +f 794/725/83 792/809/83 788/726/83 +f 786/728/83 782/729/83 790/727/83 +f 782/729/83 786/728/83 784/730/83 +f 809/732/81 813/736/81 812/733/81 +f 807/735/85 811/810/85 813/736/85 +f 808/738/83 812/733/83 810/739/83 +f 819/741/85 817/748/85 814/742/85 +f 816/744/83 804/750/83 815/745/83 +f 816/747/82 818/746/82 817/748/82 +f 805/740/83 810/739/83 815/745/83 +f 814/742/85 811/810/85 807/735/85 +f 589/811/85 623/799/85 591/753/85 +f 623/799/85 579/751/85 591/753/85 +f 579/751/85 573/658/85 593/752/85 +f 573/658/85 581/657/85 593/752/85 +f 620/675/83 622/803/83 624/812/83 +f 622/803/83 578/664/83 624/812/83 +f 586/663/83 601/813/83 603/814/83 +f 603/814/83 594/815/83 586/663/83 +f 594/815/83 596/754/83 586/663/83 +f 596/754/83 624/812/83 578/664/83 +f 916/755/81 918/816/81 919/756/81 s 1 -f 563/817/86 556/818/87 561/819/87 -f 838/820/88 837/821/89 854/822/90 -f 832/823/91 838/820/88 854/822/90 -f 842/824/92 838/820/88 832/823/91 -f 849/825/93 838/820/88 842/824/92 -f 847/826/94 838/820/88 849/825/93 -f 839/827/95 855/828/96 838/820/88 -f 844/829/97 838/820/88 855/828/96 -f 841/830/98 838/820/88 844/829/97 -f 852/831/99 838/820/88 841/830/98 -f 846/832/100 838/820/88 852/831/99 -f 837/821/89 838/820/88 846/832/100 -f 839/827/95 838/820/88 847/826/94 -f 831/833/101 848/834/102 850/835/103 -f 840/836/104 830/837/105 829/838/106 -f 829/838/106 856/839/107 840/836/104 -f 845/840/108 828/841/109 827/842/110 -f 826/843/111 845/840/108 827/842/110 -f 825/844/112 835/845/113 826/843/111 -f 824/846/114 853/847/115 825/844/112 -f 823/848/116 834/849/117 824/846/114 -f 822/850/118 836/851/119 823/848/116 -f 821/852/120 851/853/121 822/850/118 -f 820/854/122 833/855/123 821/852/120 -f 850/835/103 820/854/122 831/833/101 -f 847/826/94 850/835/103 848/834/102 -f 840/836/104 847/826/94 848/834/102 -f 840/836/104 855/828/96 839/827/95 -f 845/840/108 855/828/96 856/839/107 -f 845/840/108 841/830/98 844/829/97 -f 835/845/113 852/831/99 841/830/98 -f 846/832/100 853/847/115 834/849/117 -f 834/849/117 837/821/89 846/832/100 -f 836/851/119 854/822/90 837/821/89 -f 851/853/121 832/823/91 854/822/90 -f 843/856/124 832/823/91 833/855/123 -f 843/856/124 849/825/93 842/824/92 -f 858/857/125 562/858/86 559/859/86 -f 859/860/125 563/817/86 565/861/125 -f 564/862/125 859/860/125 565/861/125 -f 568/863/88 569/864/88 555/865/88 -f 555/865/88 560/866/87 570/867/88 -f 560/866/87 559/859/86 562/858/86 -f 561/819/87 857/868/88 571/869/88 -f 874/870/126 877/871/84 875/872/126 -f 872/873/127 875/872/126 873/874/127 -f 870/875/128 873/874/127 871/876/128 -f 626/877/129 629/878/130 627/879/131 -f 588/880/132 627/879/131 589/881/133 -f 628/882/134 631/883/135 629/878/130 -f 630/884/136 633/885/137 631/883/135 -f 632/886/138 635/887/139 633/888/137 -f 634/889/140 637/890/141 635/891/139 -f 637/890/141 620/892/142 621/893/143 -f 622/894/144 649/895/145 588/896/132 -f 637/897/141 645/898/146 635/899/139 -f 646/900/147 639/901/148 642/902/149 -f 635/899/139 644/903/150 633/904/137 -f 631/905/135 644/903/150 643/906/151 -f 629/907/130 643/906/151 642/902/149 -f 623/908/152 640/909/153 638/910/154 -f 627/911/131 642/902/149 641/912/155 -f 623/908/152 639/901/148 621/913/143 -f 627/911/131 640/909/153 589/914/133 -f 637/897/141 639/901/148 646/900/147 -f 650/915/156 649/895/145 648/916/157 -f 636/917/158 654/918/159 655/919/160 -f 632/886/138 654/918/159 634/920/140 -f 630/884/136 653/921/161 632/886/138 -f 636/917/158 647/922/162 620/892/142 -f 628/923/134 652/924/163 630/884/136 -f 626/925/129 651/926/164 628/923/134 -f 622/894/144 647/922/162 648/916/157 -f 588/896/132 650/915/156 626/925/129 -f 667/927/165 660/928/80 659/929/165 -f 665/930/166 658/931/83 657/932/166 -f 670/933/81 663/934/167 662/935/81 -f 668/936/80 661/937/168 660/928/80 -f 666/938/83 659/929/165 658/931/83 -f 664/939/88 657/932/166 656/940/88 -f 671/941/167 656/940/88 663/934/167 -f 669/942/168 662/935/81 661/943/168 -f 672/944/79 679/945/169 673/946/170 -f 673/946/170 680/947/171 674/948/172 -f 674/948/172 681/949/173 675/950/82 -f 675/951/82 682/952/174 676/953/175 -f 682/952/174 677/954/176 676/953/175 -f 677/954/176 678/955/177 672/956/79 -f 684/957/178 679/945/169 678/958/177 -f 685/959/179 680/947/171 679/945/169 -f 680/947/171 687/960/180 681/949/173 -f 687/961/180 682/952/174 681/962/173 -f 688/963/181 683/964/182 682/952/174 -f 689/965/183 678/955/177 683/964/182 -f 690/966/88 685/959/179 684/957/178 -f 691/967/184 686/968/185 685/959/179 -f 692/969/186 687/960/180 686/968/185 -f 687/961/180 694/970/187 688/963/181 -f 688/963/181 695/971/188 689/965/183 -f 695/971/188 684/972/178 689/965/183 -f 696/973/189 691/967/184 690/966/88 -f 691/967/184 698/974/190 692/969/186 -f 692/969/186 699/975/191 693/976/80 -f 693/977/80 700/978/192 694/970/187 -f 700/978/192 695/971/188 694/970/187 -f 695/971/188 696/979/189 690/980/88 -f 696/973/189 703/981/193 697/982/194 -f 703/981/193 698/974/190 697/982/194 -f 704/983/195 699/975/191 698/974/190 -f 705/984/196 700/978/192 699/985/191 -f 706/986/197 701/987/198 700/978/192 -f 707/988/199 696/979/189 701/987/198 -f 708/989/82 703/981/193 702/990/200 -f 709/991/201 704/983/195 703/981/193 -f 710/992/202 705/993/196 704/983/195 -f 711/994/79 706/986/197 705/984/196 -f 706/986/197 713/995/203 707/988/199 -f 713/995/203 702/996/200 707/988/199 -f 708/989/82 715/997/204 709/991/201 -f 709/991/201 716/998/205 710/992/202 -f 710/992/202 717/999/177 711/1000/79 -f 711/994/79 718/1001/206 712/1002/207 -f 718/1001/206 713/995/203 712/1002/207 -f 713/995/203 714/1003/173 708/1004/82 -f 720/1005/180 715/997/204 714/1006/173 -f 721/1007/208 716/998/205 715/997/204 -f 716/998/205 723/1008/178 717/999/177 -f 723/1009/178 718/1001/206 717/1010/177 -f 724/1011/209 719/1012/210 718/1001/206 -f 725/1013/211 714/1003/173 719/1012/210 -f 726/1014/80 721/1007/208 720/1005/180 -f 727/1015/212 722/1016/213 721/1007/208 -f 728/1017/214 723/1008/178 722/1016/213 -f 723/1009/178 730/1018/215 724/1011/209 -f 724/1011/209 731/1019/216 725/1013/211 -f 731/1019/216 720/1020/180 725/1013/211 -f 732/1021/191 727/1015/212 726/1014/80 -f 727/1015/212 734/1022/217 728/1017/214 -f 734/1022/217 729/1023/88 728/1017/214 -f 729/1024/88 736/1025/218 730/1018/215 -f 736/1025/218 731/1019/216 730/1018/215 -f 731/1019/216 732/1026/191 726/1027/80 -f 732/1021/191 739/1028/219 733/1029/220 -f 739/1028/219 734/1022/217 733/1029/220 -f 740/1030/221 735/1031/189 734/1022/217 -f 735/1032/189 742/1033/222 736/1025/218 -f 742/1033/222 737/1034/223 736/1025/218 -f 743/1035/224 732/1026/191 737/1034/223 -f 672/944/79 739/1028/219 738/1036/196 -f 673/946/170 740/1030/221 739/1028/219 -f 674/948/172 741/1037/200 740/1030/221 -f 675/951/82 742/1033/222 741/1038/200 -f 742/1033/222 677/954/176 743/1035/224 -f 677/954/176 738/1039/196 743/1035/224 -f 905/1040/225 902/1041/226 903/1042/226 -f 903/1042/226 900/1043/227 901/1044/227 -f 901/1044/227 898/1045/228 899/1046/228 -f 899/1046/228 896/1047/229 897/1048/229 -f 897/1048/229 894/1049/80 895/1050/80 -f 889/1051/230 892/1052/231 888/1053/230 -f 888/1053/230 891/1054/232 889/1051/230 -f 887/1055/233 890/1056/232 886/1057/233 -f 883/1058/234 886/1057/233 882/1059/234 -f 885/1060/229 880/1061/235 881/1062/235 -f 882/1059/234 885/1060/229 883/1058/234 -f 881/1062/235 878/1063/236 879/1064/236 -f 750/1065/81 762/806/81 746/702/81 -f 766/1066/81 750/1065/81 748/1067/81 -f 768/1068/81 748/1067/81 752/1069/81 -f 756/1070/81 768/1068/81 752/1069/81 -f 754/706/81 770/1071/81 756/1070/81 -f 935/1072/173 936/1073/82 934/1074/173 -f 933/1075/180 934/1074/173 932/1076/180 -f 930/1077/80 933/1075/180 932/1076/180 -f 929/1078/191 930/1077/80 928/1079/191 -f 927/1080/196 928/1079/191 926/1081/196 -f 925/1082/237 926/1081/196 924/1083/237 -f 868/1084/238 871/876/128 869/1085/238 -f 866/1086/239 869/1085/238 867/1087/239 -f 813/736/240 810/739/241 812/733/242 -f 864/1088/243 867/1087/239 865/1089/243 -f 862/1090/244 865/1089/243 863/1091/244 -f 860/1092/245 863/1091/244 861/1093/245 -f 818/746/246 814/742/247 817/748/248 -f 811/810/249 815/745/250 810/739/241 -f 906/1094/88 909/1095/251 907/1096/88 -f 908/1097/251 911/1098/252 909/1095/251 -f 910/1099/252 913/1100/253 911/1098/252 -f 912/1101/253 915/1102/254 913/1100/253 -f 914/1103/254 917/1104/255 915/1102/254 -f 937/1105/82 938/1106/200 936/1073/82 -f 939/1107/200 940/1108/189 938/1106/200 -f 941/1109/189 922/1110/256 940/1108/189 -f 921/1111/88 923/1112/256 920/1113/88 -f 563/817/86 557/1114/86 556/818/87 -f 831/833/101 830/837/105 848/834/102 -f 840/836/104 848/834/102 830/837/105 -f 829/838/106 828/841/109 856/839/107 -f 845/840/108 856/839/107 828/841/109 -f 826/843/111 835/845/113 845/840/108 -f 825/844/112 853/847/115 835/845/113 -f 824/846/114 834/849/117 853/847/115 -f 823/848/116 836/851/119 834/849/117 -f 822/850/118 851/853/121 836/851/119 -f 821/852/120 833/855/123 851/853/121 -f 820/854/122 843/856/124 833/855/123 -f 850/835/103 843/856/124 820/854/122 -f 847/826/94 849/825/93 850/835/103 -f 840/836/104 839/827/95 847/826/94 -f 840/836/104 856/839/107 855/828/96 -f 845/840/108 844/829/97 855/828/96 -f 845/840/108 835/845/113 841/830/98 -f 835/845/113 853/847/115 852/831/99 -f 846/832/100 852/831/99 853/847/115 -f 834/849/117 836/851/119 837/821/89 -f 836/851/119 851/853/121 854/822/90 -f 851/853/121 833/855/123 832/823/91 -f 843/856/124 842/824/92 832/823/91 -f 843/856/124 850/835/103 849/825/93 -f 858/857/125 564/862/125 562/858/86 -f 859/860/125 557/1114/86 563/817/86 -f 564/862/125 858/857/125 859/860/125 -f 568/863/88 566/1115/88 567/1116/88 -f 569/864/88 571/869/88 857/868/88 -f 568/863/88 567/1116/88 569/864/88 -f 555/865/88 570/867/88 568/863/88 -f 569/864/88 857/868/88 555/865/88 -f 555/865/88 558/1117/87 560/866/87 -f 560/866/87 558/1117/87 559/859/86 -f 561/819/87 556/818/87 857/868/88 -f 874/870/126 876/1118/84 877/871/84 -f 872/873/127 874/870/126 875/872/126 -f 870/875/128 872/873/127 873/874/127 -f 626/877/129 628/882/134 629/878/130 -f 588/880/132 626/877/129 627/879/131 -f 628/882/134 630/884/136 631/883/135 -f 630/884/136 632/886/138 633/885/137 -f 632/886/138 634/920/140 635/887/139 -f 634/889/140 636/1119/158 637/890/141 -f 637/890/141 636/1119/158 620/892/142 -f 622/894/144 648/916/157 649/895/145 -f 637/897/141 646/900/147 645/898/146 -f 639/901/148 638/910/154 642/902/149 -f 638/910/154 640/909/153 641/912/155 -f 641/912/155 642/902/149 638/910/154 -f 642/902/149 643/906/151 646/900/147 -f 643/906/151 644/903/150 645/898/146 -f 646/900/147 643/906/151 645/898/146 -f 635/899/139 645/898/146 644/903/150 -f 631/905/135 633/904/137 644/903/150 -f 629/907/130 631/905/135 643/906/151 -f 623/908/152 589/914/133 640/909/153 -f 627/911/131 629/907/130 642/902/149 -f 623/908/152 638/910/154 639/901/148 -f 627/911/131 641/912/155 640/909/153 -f 637/897/141 621/913/143 639/901/148 -f 648/916/157 647/922/162 651/926/164 -f 647/922/162 655/919/160 651/926/164 -f 655/919/160 654/918/159 652/924/163 -f 654/918/159 653/921/161 652/924/163 -f 652/924/163 651/926/164 655/919/160 -f 651/926/164 650/915/156 648/916/157 -f 636/917/158 634/920/140 654/918/159 -f 632/886/138 653/921/161 654/918/159 -f 630/884/136 652/924/163 653/921/161 -f 636/917/158 655/919/160 647/922/162 -f 628/923/134 651/926/164 652/924/163 -f 626/925/129 650/915/156 651/926/164 -f 622/894/144 620/892/142 647/922/162 -f 588/896/132 649/895/145 650/915/156 -f 667/927/165 668/936/80 660/928/80 -f 665/930/166 666/938/83 658/931/83 -f 670/933/81 671/941/167 663/934/167 -f 668/936/80 669/1120/168 661/937/168 -f 666/938/83 667/927/165 659/929/165 -f 664/939/88 665/930/166 657/932/166 -f 671/941/167 664/939/88 656/940/88 -f 669/942/168 670/933/81 662/935/81 -f 672/944/79 678/958/177 679/945/169 -f 673/946/170 679/945/169 680/947/171 -f 674/948/172 680/947/171 681/949/173 -f 675/951/82 681/962/173 682/952/174 -f 682/952/174 683/964/182 677/954/176 -f 677/954/176 683/964/182 678/955/177 -f 684/957/178 685/959/179 679/945/169 -f 685/959/179 686/968/185 680/947/171 -f 680/947/171 686/968/185 687/960/180 -f 687/961/180 688/963/181 682/952/174 -f 688/963/181 689/965/183 683/964/182 -f 689/965/183 684/972/178 678/955/177 -f 690/966/88 691/967/184 685/959/179 -f 691/967/184 692/969/186 686/968/185 -f 692/969/186 693/976/80 687/960/180 -f 687/961/180 693/977/80 694/970/187 -f 688/963/181 694/970/187 695/971/188 -f 695/971/188 690/980/88 684/972/178 -f 696/973/189 697/982/194 691/967/184 -f 691/967/184 697/982/194 698/974/190 -f 692/969/186 698/974/190 699/975/191 -f 693/977/80 699/985/191 700/978/192 -f 700/978/192 701/987/198 695/971/188 -f 695/971/188 701/987/198 696/979/189 -f 696/973/189 702/990/200 703/981/193 -f 703/981/193 704/983/195 698/974/190 -f 704/983/195 705/993/196 699/975/191 -f 705/984/196 706/986/197 700/978/192 -f 706/986/197 707/988/199 701/987/198 -f 707/988/199 702/996/200 696/979/189 -f 708/989/82 709/991/201 703/981/193 -f 709/991/201 710/992/202 704/983/195 -f 710/992/202 711/1000/79 705/993/196 -f 711/994/79 712/1002/207 706/986/197 -f 706/986/197 712/1002/207 713/995/203 -f 713/995/203 708/1004/82 702/996/200 -f 708/989/82 714/1006/173 715/997/204 -f 709/991/201 715/997/204 716/998/205 -f 710/992/202 716/998/205 717/999/177 -f 711/994/79 717/1010/177 718/1001/206 -f 718/1001/206 719/1012/210 713/995/203 -f 713/995/203 719/1012/210 714/1003/173 -f 720/1005/180 721/1007/208 715/997/204 -f 721/1007/208 722/1016/213 716/998/205 -f 716/998/205 722/1016/213 723/1008/178 -f 723/1009/178 724/1011/209 718/1001/206 -f 724/1011/209 725/1013/211 719/1012/210 -f 725/1013/211 720/1020/180 714/1003/173 -f 726/1014/80 727/1015/212 721/1007/208 -f 727/1015/212 728/1017/214 722/1016/213 -f 728/1017/214 729/1023/88 723/1008/178 -f 723/1009/178 729/1024/88 730/1018/215 -f 724/1011/209 730/1018/215 731/1019/216 -f 731/1019/216 726/1027/80 720/1020/180 -f 732/1021/191 733/1029/220 727/1015/212 -f 727/1015/212 733/1029/220 734/1022/217 -f 734/1022/217 735/1031/189 729/1023/88 -f 729/1024/88 735/1032/189 736/1025/218 -f 736/1025/218 737/1034/223 731/1019/216 -f 731/1019/216 737/1034/223 732/1026/191 -f 732/1021/191 738/1036/196 739/1028/219 -f 739/1028/219 740/1030/221 734/1022/217 -f 740/1030/221 741/1037/200 735/1031/189 -f 735/1032/189 741/1038/200 742/1033/222 -f 742/1033/222 743/1035/224 737/1034/223 -f 743/1035/224 738/1039/196 732/1026/191 -f 672/944/79 673/946/170 739/1028/219 -f 673/946/170 674/948/172 740/1030/221 -f 674/948/172 675/950/82 741/1037/200 -f 675/951/82 676/953/175 742/1033/222 -f 742/1033/222 676/953/175 677/954/176 -f 677/954/176 672/956/79 738/1039/196 -f 905/1040/225 904/1121/225 902/1041/226 -f 903/1042/226 902/1041/226 900/1043/227 -f 901/1044/227 900/1043/227 898/1045/228 -f 899/1046/228 898/1045/228 896/1047/229 -f 897/1048/229 896/1047/229 894/1049/80 -f 889/1051/230 893/1122/231 892/1052/231 -f 888/1053/230 890/1056/232 891/1054/232 -f 887/1055/233 891/1054/232 890/1056/232 -f 883/1058/234 887/1055/233 886/1057/233 -f 885/1060/229 884/1123/229 880/1061/235 -f 882/1059/234 884/1123/229 885/1060/229 -f 881/1062/235 880/1061/235 878/1063/236 -f 750/1065/81 764/1124/81 762/806/81 -f 766/1066/81 764/1124/81 750/1065/81 -f 768/1068/81 766/1066/81 748/1067/81 -f 756/1070/81 770/1071/81 768/1068/81 -f 754/706/81 772/807/81 770/1071/81 -f 935/1072/173 937/1105/82 936/1073/82 -f 933/1075/180 935/1072/173 934/1074/173 -f 930/1077/80 931/1125/80 933/1075/180 -f 929/1078/191 931/1125/80 930/1077/80 -f 927/1080/196 929/1078/191 928/1079/191 -f 925/1082/237 927/1080/196 926/1081/196 -f 868/1084/238 870/875/128 871/876/128 -f 866/1086/239 868/1084/238 869/1085/238 -f 813/736/240 811/810/249 810/739/241 -f 864/1088/243 866/1086/239 867/1087/239 -f 862/1090/244 864/1088/243 865/1089/243 -f 860/1092/245 862/1090/244 863/1091/244 -f 818/746/246 815/745/250 814/742/247 -f 811/810/249 814/742/247 815/745/250 -f 906/1094/88 908/1097/251 909/1095/251 -f 908/1097/251 910/1099/252 911/1098/252 -f 910/1099/252 912/1101/253 913/1100/253 -f 912/1101/253 914/1103/254 915/1102/254 -f 914/1103/254 916/1126/255 917/1104/255 -f 937/1105/82 939/1107/200 938/1106/200 -f 939/1107/200 941/1109/189 940/1108/189 -f 941/1109/189 923/1127/256 922/1110/256 -f 921/1111/88 922/1128/256 923/1112/256 +f 563/817/88 556/818/89 561/819/89 +f 838/820/90 837/821/91 854/822/92 +f 832/823/93 838/820/90 854/822/92 +f 842/824/94 838/820/90 832/823/93 +f 849/825/95 838/820/90 842/824/94 +f 847/826/96 838/820/90 849/825/95 +f 839/827/97 855/828/98 838/820/90 +f 844/829/99 838/820/90 855/828/98 +f 841/830/100 838/820/90 844/829/99 +f 852/831/101 838/820/90 841/830/100 +f 846/832/102 838/820/90 852/831/101 +f 837/821/91 838/820/90 846/832/102 +f 839/827/97 838/820/90 847/826/96 +f 831/833/103 848/834/104 850/835/105 +f 840/836/106 830/837/107 829/838/108 +f 829/838/108 856/839/109 840/836/106 +f 845/840/110 828/841/111 827/842/112 +f 826/843/113 845/840/110 827/842/112 +f 825/844/114 835/845/115 826/843/113 +f 824/846/116 853/847/117 825/844/114 +f 823/848/118 834/849/119 824/846/116 +f 822/850/120 836/851/121 823/848/118 +f 821/852/122 851/853/123 822/850/120 +f 820/854/124 833/855/125 821/852/122 +f 850/835/105 820/854/124 831/833/103 +f 847/826/96 850/835/105 848/834/104 +f 840/836/106 847/826/96 848/834/104 +f 840/836/106 855/828/98 839/827/97 +f 845/840/110 855/828/98 856/839/109 +f 845/840/110 841/830/100 844/829/99 +f 835/845/115 852/831/101 841/830/100 +f 846/832/102 853/847/117 834/849/119 +f 834/849/119 837/821/91 846/832/102 +f 836/851/121 854/822/92 837/821/91 +f 851/853/123 832/823/93 854/822/92 +f 843/856/126 832/823/93 833/855/125 +f 843/856/126 849/825/95 842/824/94 +f 858/857/127 562/858/88 559/859/88 +f 859/860/127 563/817/88 565/861/127 +f 564/862/127 859/860/127 565/861/127 +f 568/863/90 569/864/90 555/865/90 +f 555/865/90 560/866/89 570/867/90 +f 560/866/89 559/859/88 562/858/88 +f 561/819/89 857/868/90 571/869/90 +f 874/870/128 877/871/86 875/872/128 +f 872/873/129 875/872/128 873/874/129 +f 870/875/130 873/874/129 871/876/130 +f 626/877/131 629/878/132 627/879/133 +f 588/880/134 627/879/133 589/881/135 +f 628/882/136 631/883/137 629/878/132 +f 630/884/138 633/885/139 631/883/137 +f 632/886/140 635/887/141 633/888/139 +f 634/889/142 637/890/143 635/891/141 +f 637/890/143 620/892/144 621/893/145 +f 622/894/146 649/895/147 588/896/134 +f 637/897/143 645/898/148 635/899/141 +f 646/900/149 639/901/150 642/902/151 +f 635/899/141 644/903/152 633/904/139 +f 631/905/137 644/903/152 643/906/153 +f 629/907/132 643/906/153 642/902/151 +f 623/908/154 640/909/155 638/910/156 +f 627/911/133 642/902/151 641/912/157 +f 623/908/154 639/901/150 621/913/145 +f 627/911/133 640/909/155 589/914/135 +f 637/897/143 639/901/150 646/900/149 +f 650/915/158 649/895/147 648/916/159 +f 636/917/160 654/918/161 655/919/162 +f 632/886/140 654/918/161 634/920/142 +f 630/884/138 653/921/163 632/886/140 +f 636/917/160 647/922/164 620/892/144 +f 628/923/136 652/924/165 630/884/138 +f 626/925/131 651/926/166 628/923/136 +f 622/894/146 647/922/164 648/916/159 +f 588/896/134 650/915/158 626/925/131 +f 667/927/167 660/928/82 659/929/167 +f 665/930/168 658/931/85 657/932/168 +f 670/933/83 663/934/169 662/935/83 +f 668/936/82 661/937/170 660/928/82 +f 666/938/85 659/929/167 658/931/85 +f 664/939/90 657/932/168 656/940/90 +f 671/941/169 656/940/90 663/934/169 +f 669/942/170 662/935/83 661/943/170 +f 672/944/81 679/945/171 673/946/172 +f 673/946/172 680/947/173 674/948/174 +f 674/948/174 681/949/175 675/950/84 +f 675/951/84 682/952/176 676/953/177 +f 682/952/176 677/954/178 676/953/177 +f 677/954/178 678/955/179 672/956/81 +f 684/957/180 679/945/171 678/958/179 +f 685/959/181 680/947/173 679/945/171 +f 680/947/173 687/960/182 681/949/175 +f 687/961/182 682/952/176 681/962/175 +f 688/963/183 683/964/184 682/952/176 +f 689/965/185 678/955/179 683/964/184 +f 690/966/90 685/959/181 684/957/180 +f 691/967/186 686/968/187 685/959/181 +f 692/969/188 687/960/182 686/968/187 +f 687/961/182 694/970/189 688/963/183 +f 688/963/183 695/971/190 689/965/185 +f 695/971/190 684/972/180 689/965/185 +f 696/973/191 691/967/186 690/966/90 +f 691/967/186 698/974/192 692/969/188 +f 692/969/188 699/975/193 693/976/82 +f 693/977/82 700/978/194 694/970/189 +f 700/978/194 695/971/190 694/970/189 +f 695/971/190 696/979/191 690/980/90 +f 696/973/191 703/981/195 697/982/196 +f 703/981/195 698/974/192 697/982/196 +f 704/983/197 699/975/193 698/974/192 +f 705/984/198 700/978/194 699/985/193 +f 706/986/199 701/987/200 700/978/194 +f 707/988/201 696/979/191 701/987/200 +f 708/989/84 703/981/195 702/990/202 +f 709/991/203 704/983/197 703/981/195 +f 710/992/204 705/993/198 704/983/197 +f 711/994/81 706/986/199 705/984/198 +f 706/986/199 713/995/205 707/988/201 +f 713/995/205 702/996/202 707/988/201 +f 708/989/84 715/997/206 709/991/203 +f 709/991/203 716/998/207 710/992/204 +f 710/992/204 717/999/179 711/1000/81 +f 711/994/81 718/1001/208 712/1002/209 +f 718/1001/208 713/995/205 712/1002/209 +f 713/995/205 714/1003/175 708/1004/84 +f 720/1005/182 715/997/206 714/1006/175 +f 721/1007/210 716/998/207 715/997/206 +f 716/998/207 723/1008/180 717/999/179 +f 723/1009/180 718/1001/208 717/1010/179 +f 724/1011/211 719/1012/212 718/1001/208 +f 725/1013/213 714/1003/175 719/1012/212 +f 726/1014/82 721/1007/210 720/1005/182 +f 727/1015/214 722/1016/215 721/1007/210 +f 728/1017/216 723/1008/180 722/1016/215 +f 723/1009/180 730/1018/217 724/1011/211 +f 724/1011/211 731/1019/218 725/1013/213 +f 731/1019/218 720/1020/182 725/1013/213 +f 732/1021/193 727/1015/214 726/1014/82 +f 727/1015/214 734/1022/219 728/1017/216 +f 734/1022/219 729/1023/90 728/1017/216 +f 729/1024/90 736/1025/220 730/1018/217 +f 736/1025/220 731/1019/218 730/1018/217 +f 731/1019/218 732/1026/193 726/1027/82 +f 732/1021/193 739/1028/221 733/1029/222 +f 739/1028/221 734/1022/219 733/1029/222 +f 740/1030/223 735/1031/191 734/1022/219 +f 735/1032/191 742/1033/224 736/1025/220 +f 742/1033/224 737/1034/225 736/1025/220 +f 743/1035/226 732/1026/193 737/1034/225 +f 672/944/81 739/1028/221 738/1036/198 +f 673/946/172 740/1030/223 739/1028/221 +f 674/948/174 741/1037/202 740/1030/223 +f 675/951/84 742/1033/224 741/1038/202 +f 742/1033/224 677/954/178 743/1035/226 +f 677/954/178 738/1039/198 743/1035/226 +f 905/1040/227 902/1041/228 903/1042/228 +f 903/1042/228 900/1043/229 901/1044/229 +f 901/1044/229 898/1045/230 899/1046/230 +f 899/1046/230 896/1047/231 897/1048/231 +f 897/1048/231 894/1049/82 895/1050/82 +f 889/1051/232 892/1052/233 888/1053/232 +f 888/1053/232 891/1054/234 889/1051/232 +f 887/1055/235 890/1056/234 886/1057/235 +f 883/1058/236 886/1057/235 882/1059/236 +f 885/1060/231 880/1061/237 881/1062/237 +f 882/1059/236 885/1060/231 883/1058/236 +f 881/1062/237 878/1063/238 879/1064/238 +f 750/1065/83 762/806/83 746/702/83 +f 766/1066/83 750/1065/83 748/1067/83 +f 768/1068/83 748/1067/83 752/1069/83 +f 756/1070/83 768/1068/83 752/1069/83 +f 754/706/83 770/1071/83 756/1070/83 +f 935/1072/175 936/1073/84 934/1074/175 +f 933/1075/182 934/1074/175 932/1076/182 +f 930/1077/82 933/1075/182 932/1076/182 +f 929/1078/193 930/1077/82 928/1079/193 +f 927/1080/198 928/1079/193 926/1081/198 +f 925/1082/239 926/1081/198 924/1083/239 +f 868/1084/240 871/876/130 869/1085/240 +f 866/1086/241 869/1085/240 867/1087/241 +f 813/736/242 810/739/243 812/733/244 +f 864/1088/245 867/1087/241 865/1089/245 +f 862/1090/246 865/1089/245 863/1091/246 +f 860/1092/247 863/1091/246 861/1093/247 +f 818/746/248 814/742/249 817/748/250 +f 811/810/251 815/745/252 810/739/243 +f 906/1094/90 909/1095/253 907/1096/90 +f 908/1097/253 911/1098/254 909/1095/253 +f 910/1099/254 913/1100/255 911/1098/254 +f 912/1101/255 915/1102/256 913/1100/255 +f 914/1103/256 917/1104/257 915/1102/256 +f 937/1105/84 938/1106/202 936/1073/84 +f 939/1107/202 940/1108/191 938/1106/202 +f 941/1109/191 922/1110/258 940/1108/191 +f 921/1111/90 923/1112/258 920/1113/90 +f 563/817/88 557/1114/88 556/818/89 +f 831/833/103 830/837/107 848/834/104 +f 840/836/106 848/834/104 830/837/107 +f 829/838/108 828/841/111 856/839/109 +f 845/840/110 856/839/109 828/841/111 +f 826/843/113 835/845/115 845/840/110 +f 825/844/114 853/847/117 835/845/115 +f 824/846/116 834/849/119 853/847/117 +f 823/848/118 836/851/121 834/849/119 +f 822/850/120 851/853/123 836/851/121 +f 821/852/122 833/855/125 851/853/123 +f 820/854/124 843/856/126 833/855/125 +f 850/835/105 843/856/126 820/854/124 +f 847/826/96 849/825/95 850/835/105 +f 840/836/106 839/827/97 847/826/96 +f 840/836/106 856/839/109 855/828/98 +f 845/840/110 844/829/99 855/828/98 +f 845/840/110 835/845/115 841/830/100 +f 835/845/115 853/847/117 852/831/101 +f 846/832/102 852/831/101 853/847/117 +f 834/849/119 836/851/121 837/821/91 +f 836/851/121 851/853/123 854/822/92 +f 851/853/123 833/855/125 832/823/93 +f 843/856/126 842/824/94 832/823/93 +f 843/856/126 850/835/105 849/825/95 +f 858/857/127 564/862/127 562/858/88 +f 859/860/127 557/1114/88 563/817/88 +f 564/862/127 858/857/127 859/860/127 +f 568/863/90 566/1115/90 567/1116/90 +f 569/864/90 571/869/90 857/868/90 +f 568/863/90 567/1116/90 569/864/90 +f 555/865/90 570/867/90 568/863/90 +f 569/864/90 857/868/90 555/865/90 +f 555/865/90 558/1117/89 560/866/89 +f 560/866/89 558/1117/89 559/859/88 +f 561/819/89 556/818/89 857/868/90 +f 874/870/128 876/1118/86 877/871/86 +f 872/873/129 874/870/128 875/872/128 +f 870/875/130 872/873/129 873/874/129 +f 626/877/131 628/882/136 629/878/132 +f 588/880/134 626/877/131 627/879/133 +f 628/882/136 630/884/138 631/883/137 +f 630/884/138 632/886/140 633/885/139 +f 632/886/140 634/920/142 635/887/141 +f 634/889/142 636/1119/160 637/890/143 +f 637/890/143 636/1119/160 620/892/144 +f 622/894/146 648/916/159 649/895/147 +f 637/897/143 646/900/149 645/898/148 +f 639/901/150 638/910/156 642/902/151 +f 638/910/156 640/909/155 641/912/157 +f 641/912/157 642/902/151 638/910/156 +f 642/902/151 643/906/153 646/900/149 +f 643/906/153 644/903/152 645/898/148 +f 646/900/149 643/906/153 645/898/148 +f 635/899/141 645/898/148 644/903/152 +f 631/905/137 633/904/139 644/903/152 +f 629/907/132 631/905/137 643/906/153 +f 623/908/154 589/914/135 640/909/155 +f 627/911/133 629/907/132 642/902/151 +f 623/908/154 638/910/156 639/901/150 +f 627/911/133 641/912/157 640/909/155 +f 637/897/143 621/913/145 639/901/150 +f 648/916/159 647/922/164 651/926/166 +f 647/922/164 655/919/162 651/926/166 +f 655/919/162 654/918/161 652/924/165 +f 654/918/161 653/921/163 652/924/165 +f 652/924/165 651/926/166 655/919/162 +f 651/926/166 650/915/158 648/916/159 +f 636/917/160 634/920/142 654/918/161 +f 632/886/140 653/921/163 654/918/161 +f 630/884/138 652/924/165 653/921/163 +f 636/917/160 655/919/162 647/922/164 +f 628/923/136 651/926/166 652/924/165 +f 626/925/131 650/915/158 651/926/166 +f 622/894/146 620/892/144 647/922/164 +f 588/896/134 649/895/147 650/915/158 +f 667/927/167 668/936/82 660/928/82 +f 665/930/168 666/938/85 658/931/85 +f 670/933/83 671/941/169 663/934/169 +f 668/936/82 669/1120/170 661/937/170 +f 666/938/85 667/927/167 659/929/167 +f 664/939/90 665/930/168 657/932/168 +f 671/941/169 664/939/90 656/940/90 +f 669/942/170 670/933/83 662/935/83 +f 672/944/81 678/958/179 679/945/171 +f 673/946/172 679/945/171 680/947/173 +f 674/948/174 680/947/173 681/949/175 +f 675/951/84 681/962/175 682/952/176 +f 682/952/176 683/964/184 677/954/178 +f 677/954/178 683/964/184 678/955/179 +f 684/957/180 685/959/181 679/945/171 +f 685/959/181 686/968/187 680/947/173 +f 680/947/173 686/968/187 687/960/182 +f 687/961/182 688/963/183 682/952/176 +f 688/963/183 689/965/185 683/964/184 +f 689/965/185 684/972/180 678/955/179 +f 690/966/90 691/967/186 685/959/181 +f 691/967/186 692/969/188 686/968/187 +f 692/969/188 693/976/82 687/960/182 +f 687/961/182 693/977/82 694/970/189 +f 688/963/183 694/970/189 695/971/190 +f 695/971/190 690/980/90 684/972/180 +f 696/973/191 697/982/196 691/967/186 +f 691/967/186 697/982/196 698/974/192 +f 692/969/188 698/974/192 699/975/193 +f 693/977/82 699/985/193 700/978/194 +f 700/978/194 701/987/200 695/971/190 +f 695/971/190 701/987/200 696/979/191 +f 696/973/191 702/990/202 703/981/195 +f 703/981/195 704/983/197 698/974/192 +f 704/983/197 705/993/198 699/975/193 +f 705/984/198 706/986/199 700/978/194 +f 706/986/199 707/988/201 701/987/200 +f 707/988/201 702/996/202 696/979/191 +f 708/989/84 709/991/203 703/981/195 +f 709/991/203 710/992/204 704/983/197 +f 710/992/204 711/1000/81 705/993/198 +f 711/994/81 712/1002/209 706/986/199 +f 706/986/199 712/1002/209 713/995/205 +f 713/995/205 708/1004/84 702/996/202 +f 708/989/84 714/1006/175 715/997/206 +f 709/991/203 715/997/206 716/998/207 +f 710/992/204 716/998/207 717/999/179 +f 711/994/81 717/1010/179 718/1001/208 +f 718/1001/208 719/1012/212 713/995/205 +f 713/995/205 719/1012/212 714/1003/175 +f 720/1005/182 721/1007/210 715/997/206 +f 721/1007/210 722/1016/215 716/998/207 +f 716/998/207 722/1016/215 723/1008/180 +f 723/1009/180 724/1011/211 718/1001/208 +f 724/1011/211 725/1013/213 719/1012/212 +f 725/1013/213 720/1020/182 714/1003/175 +f 726/1014/82 727/1015/214 721/1007/210 +f 727/1015/214 728/1017/216 722/1016/215 +f 728/1017/216 729/1023/90 723/1008/180 +f 723/1009/180 729/1024/90 730/1018/217 +f 724/1011/211 730/1018/217 731/1019/218 +f 731/1019/218 726/1027/82 720/1020/182 +f 732/1021/193 733/1029/222 727/1015/214 +f 727/1015/214 733/1029/222 734/1022/219 +f 734/1022/219 735/1031/191 729/1023/90 +f 729/1024/90 735/1032/191 736/1025/220 +f 736/1025/220 737/1034/225 731/1019/218 +f 731/1019/218 737/1034/225 732/1026/193 +f 732/1021/193 738/1036/198 739/1028/221 +f 739/1028/221 740/1030/223 734/1022/219 +f 740/1030/223 741/1037/202 735/1031/191 +f 735/1032/191 741/1038/202 742/1033/224 +f 742/1033/224 743/1035/226 737/1034/225 +f 743/1035/226 738/1039/198 732/1026/193 +f 672/944/81 673/946/172 739/1028/221 +f 673/946/172 674/948/174 740/1030/223 +f 674/948/174 675/950/84 741/1037/202 +f 675/951/84 676/953/177 742/1033/224 +f 742/1033/224 676/953/177 677/954/178 +f 677/954/178 672/956/81 738/1039/198 +f 905/1040/227 904/1121/227 902/1041/228 +f 903/1042/228 902/1041/228 900/1043/229 +f 901/1044/229 900/1043/229 898/1045/230 +f 899/1046/230 898/1045/230 896/1047/231 +f 897/1048/231 896/1047/231 894/1049/82 +f 889/1051/232 893/1122/233 892/1052/233 +f 888/1053/232 890/1056/234 891/1054/234 +f 887/1055/235 891/1054/234 890/1056/234 +f 883/1058/236 887/1055/235 886/1057/235 +f 885/1060/231 884/1123/231 880/1061/237 +f 882/1059/236 884/1123/231 885/1060/231 +f 881/1062/237 880/1061/237 878/1063/238 +f 750/1065/83 764/1124/83 762/806/83 +f 766/1066/83 764/1124/83 750/1065/83 +f 768/1068/83 766/1066/83 748/1067/83 +f 756/1070/83 770/1071/83 768/1068/83 +f 754/706/83 772/807/83 770/1071/83 +f 935/1072/175 937/1105/84 936/1073/84 +f 933/1075/182 935/1072/175 934/1074/175 +f 930/1077/82 931/1125/82 933/1075/182 +f 929/1078/193 931/1125/82 930/1077/82 +f 927/1080/198 929/1078/193 928/1079/193 +f 925/1082/239 927/1080/198 926/1081/198 +f 868/1084/240 870/875/130 871/876/130 +f 866/1086/241 868/1084/240 869/1085/240 +f 813/736/242 811/810/251 810/739/243 +f 864/1088/245 866/1086/241 867/1087/241 +f 862/1090/246 864/1088/245 865/1089/245 +f 860/1092/247 862/1090/246 863/1091/246 +f 818/746/248 815/745/252 814/742/249 +f 811/810/251 814/742/249 815/745/252 +f 906/1094/90 908/1097/253 909/1095/253 +f 908/1097/253 910/1099/254 911/1098/254 +f 910/1099/254 912/1101/255 913/1100/255 +f 912/1101/255 914/1103/256 915/1102/256 +f 914/1103/256 916/1126/257 917/1104/257 +f 937/1105/84 939/1107/202 938/1106/202 +f 939/1107/202 941/1109/191 940/1108/191 +f 941/1109/191 923/1127/258 922/1110/258 +f 921/1111/90 922/1128/258 923/1112/258 diff --git a/src/main/resources/assets/hbm/models/weapons/c130.obj b/src/main/resources/assets/hbm/models/weapons/c130.obj new file mode 100644 index 000000000..062ea4ab5 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/c130.obj @@ -0,0 +1,3946 @@ +# Blender v2.79 (sub 0) OBJ File: 'c130.blend' +# www.blender.org +o Prop4 +v 8.876309 4.210099 19.990316 +v 9.975476 4.210099 20.539900 +v 8.876309 3.821485 20.151285 +v 8.876309 3.660516 20.539900 +v 8.876309 3.821485 20.928514 +v 8.876309 4.210099 21.089483 +v 8.876309 4.598713 20.928514 +v 8.876309 4.759683 20.539900 +v 8.876309 4.598713 20.151285 +v 9.092196 4.022467 23.179798 +v 9.092196 4.397732 23.179798 +v 9.092196 4.397732 20.800001 +v 9.092196 4.022467 20.800001 +v 9.259592 4.022467 20.800001 +v 9.259592 4.397732 20.800001 +v 9.259592 4.397732 23.179798 +v 9.259592 4.022467 23.179798 +v 9.092196 4.022467 20.279799 +v 9.092196 4.397732 20.279799 +v 9.092196 4.397732 17.900002 +v 9.092196 4.022467 17.900002 +v 9.259590 4.397732 17.900002 +v 9.259590 4.022467 17.900002 +v 9.259590 4.397732 20.279799 +v 9.259590 4.022467 20.279799 +v 9.092196 1.570201 20.352268 +v 9.092196 1.570201 20.727533 +v 9.092196 3.949998 20.727533 +v 9.092196 3.949998 20.352268 +v 9.259590 3.949998 20.352268 +v 9.259590 3.949998 20.727533 +v 9.259590 1.570201 20.727533 +v 9.259590 1.570201 20.352268 +v 9.092196 4.470201 20.352268 +v 9.092196 4.470201 20.727533 +v 9.092196 6.849997 20.727533 +v 9.092196 6.849997 20.352268 +v 9.259590 6.849997 20.727533 +v 9.259590 6.849997 20.352268 +v 9.259590 4.470201 20.727533 +v 9.259590 4.470201 20.352268 +vt 0.057500 0.876667 +vt 0.055000 0.893333 +vt 0.053750 0.876667 +vt 0.061250 0.876667 +vt 0.058750 0.893333 +vt 0.057500 0.876667 +vt 0.065000 0.876667 +vt 0.062500 0.893333 +vt 0.061250 0.876667 +vt 0.068750 0.876667 +vt 0.066250 0.893333 +vt 0.065000 0.876667 +vt 0.072500 0.876667 +vt 0.070000 0.893333 +vt 0.068750 0.876667 +vt 0.076250 0.876667 +vt 0.073750 0.893333 +vt 0.072500 0.876667 +vt 0.080000 0.876667 +vt 0.077500 0.893333 +vt 0.076250 0.876667 +vt 0.053750 0.876667 +vt 0.051250 0.893333 +vt 0.050000 0.876667 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vn 0.4194 -0.3474 -0.8387 +vn 0.4194 -0.8387 -0.3474 +vn 0.4194 -0.8387 0.3474 +vn 0.4194 -0.3474 0.8387 +vn 0.4194 0.3474 0.8387 +vn 0.4194 0.8387 0.3474 +vn 0.4194 0.8387 -0.3474 +vn 0.4194 0.3474 -0.8387 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s 1 +f 1/1/1 2/2/1 3/3/1 +f 3/4/2 2/5/2 4/6/2 +f 4/7/3 2/8/3 5/9/3 +f 5/10/4 2/11/4 6/12/4 +f 6/13/5 2/14/5 7/15/5 +f 7/16/6 2/17/6 8/18/6 +f 8/19/7 2/20/7 9/21/7 +f 9/22/8 2/23/8 1/24/8 +f 11/25/9 13/26/9 10/27/9 +f 15/28/10 17/29/10 14/30/10 +f 16/31/11 10/32/11 17/29/11 +f 14/30/12 10/33/12 13/34/12 +f 12/35/13 16/31/13 15/28/13 +f 19/36/9 21/37/9 18/38/9 +f 20/39/14 23/40/14 21/41/14 +f 22/42/10 25/43/10 23/40/10 +f 23/40/12 18/38/12 21/37/12 +f 20/44/13 24/45/13 22/42/13 +f 27/46/9 29/47/9 26/48/9 +f 31/49/10 33/50/10 30/51/10 +f 32/52/12 26/53/12 33/50/12 +f 30/51/14 26/54/14 29/55/14 +f 28/56/11 32/52/11 31/49/11 +f 35/57/9 37/58/9 34/59/9 +f 36/60/13 39/61/13 37/62/13 +f 38/63/10 41/64/10 39/61/10 +f 39/61/14 34/59/14 37/58/14 +f 36/65/11 40/66/11 38/63/11 +f 11/25/9 12/35/9 13/26/9 +f 15/28/10 16/31/10 17/29/10 +f 16/31/11 11/67/11 10/32/11 +f 14/30/12 17/29/12 10/33/12 +f 12/35/13 11/25/13 16/31/13 +f 19/36/9 20/68/9 21/37/9 +f 20/39/14 22/42/14 23/40/14 +f 22/42/10 24/45/10 25/43/10 +f 23/40/12 25/43/12 18/38/12 +f 20/44/13 19/69/13 24/45/13 +f 27/46/9 28/56/9 29/47/9 +f 31/49/10 32/52/10 33/50/10 +f 32/52/12 27/70/12 26/53/12 +f 30/51/14 33/50/14 26/54/14 +f 28/56/11 27/46/11 32/52/11 +f 35/57/9 36/71/9 37/58/9 +f 36/60/13 38/63/13 39/61/13 +f 38/63/10 40/66/10 41/64/10 +f 39/61/14 41/64/14 34/59/14 +f 36/65/11 35/72/11 40/66/11 +o Prop3 +v 8.876309 4.210100 10.612316 +v 9.975476 4.210100 11.161900 +v 8.876309 3.821486 10.773286 +v 8.876309 3.660517 11.161900 +v 8.876309 3.821486 11.550513 +v 8.876309 4.210100 11.711483 +v 8.876309 4.598713 11.550513 +v 8.876309 4.759684 11.161900 +v 8.876309 4.598713 10.773286 +v 9.092196 4.022468 13.801797 +v 9.092196 4.397733 13.801797 +v 9.092196 4.397733 11.422001 +v 9.092196 4.022468 11.422001 +v 9.259592 4.022468 11.422001 +v 9.259592 4.397733 11.422001 +v 9.259592 4.397733 13.801797 +v 9.259592 4.022468 13.801797 +v 9.092196 4.022468 10.901798 +v 9.092196 4.397733 10.901798 +v 9.092196 4.397733 8.522002 +v 9.092196 4.022468 8.522002 +v 9.259590 4.397733 8.522002 +v 9.259590 4.022468 8.522002 +v 9.259590 4.397733 10.901798 +v 9.259590 4.022468 10.901798 +v 9.092196 1.570202 10.974267 +v 9.092196 1.570202 11.349533 +v 9.092196 3.949999 11.349533 +v 9.092196 3.949999 10.974267 +v 9.259590 3.949999 10.974267 +v 9.259590 3.949999 11.349533 +v 9.259590 1.570202 11.349533 +v 9.259590 1.570202 10.974267 +v 9.092196 4.470201 10.974267 +v 9.092196 4.470201 11.349533 +v 9.092196 6.849998 11.349533 +v 9.092196 6.849998 10.974267 +v 9.259590 6.849998 11.349533 +v 9.259590 6.849998 10.974267 +v 9.259590 4.470201 11.349533 +v 9.259590 4.470201 10.974267 +vt 0.057500 0.876667 +vt 0.055000 0.893333 +vt 0.053750 0.876667 +vt 0.061250 0.876667 +vt 0.058750 0.893333 +vt 0.057500 0.876667 +vt 0.065000 0.876667 +vt 0.062500 0.893333 +vt 0.061250 0.876667 +vt 0.068750 0.876667 +vt 0.066250 0.893333 +vt 0.065000 0.876667 +vt 0.072500 0.876667 +vt 0.070000 0.893333 +vt 0.068750 0.876667 +vt 0.076250 0.876667 +vt 0.073750 0.893333 +vt 0.072500 0.876667 +vt 0.080000 0.876667 +vt 0.077500 0.893333 +vt 0.076250 0.876667 +vt 0.053750 0.876667 +vt 0.051250 0.893333 +vt 0.050000 0.876667 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vn 0.4194 -0.3474 -0.8387 +vn 0.4194 -0.8387 -0.3474 +vn 0.4194 -0.8387 0.3474 +vn 0.4194 -0.3474 0.8387 +vn 0.4194 0.3474 0.8387 +vn 0.4194 0.8387 0.3474 +vn 0.4194 0.8387 -0.3474 +vn 0.4194 0.3474 -0.8387 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s 1 +f 42/73/15 43/74/15 44/75/15 +f 44/76/16 43/77/16 45/78/16 +f 45/79/17 43/80/17 46/81/17 +f 46/82/18 43/83/18 47/84/18 +f 47/85/19 43/86/19 48/87/19 +f 48/88/20 43/89/20 49/90/20 +f 49/91/21 43/92/21 50/93/21 +f 50/94/22 43/95/22 42/96/22 +f 52/97/23 54/98/23 51/99/23 +f 56/100/24 58/101/24 55/102/24 +f 57/103/25 51/104/25 58/101/25 +f 55/102/26 51/105/26 54/106/26 +f 53/107/27 57/103/27 56/100/27 +f 60/108/23 62/109/23 59/110/23 +f 61/111/28 64/112/28 62/113/28 +f 63/114/24 66/115/24 64/112/24 +f 64/112/26 59/110/26 62/109/26 +f 61/116/27 65/117/27 63/114/27 +f 68/118/23 70/119/23 67/120/23 +f 72/121/24 74/122/24 71/123/24 +f 73/124/26 67/125/26 74/122/26 +f 71/123/28 67/126/28 70/127/28 +f 69/128/25 73/124/25 72/121/25 +f 76/129/23 78/130/23 75/131/23 +f 77/132/27 80/133/27 78/134/27 +f 79/135/24 82/136/24 80/133/24 +f 80/133/28 75/131/28 78/130/28 +f 77/137/25 81/138/25 79/135/25 +f 52/97/23 53/107/23 54/98/23 +f 56/100/24 57/103/24 58/101/24 +f 57/103/25 52/139/25 51/104/25 +f 55/102/26 58/101/26 51/105/26 +f 53/107/27 52/97/27 57/103/27 +f 60/108/23 61/140/23 62/109/23 +f 61/111/28 63/114/28 64/112/28 +f 63/114/24 65/117/24 66/115/24 +f 64/112/26 66/115/26 59/110/26 +f 61/116/27 60/141/27 65/117/27 +f 68/118/23 69/128/23 70/119/23 +f 72/121/24 73/124/24 74/122/24 +f 73/124/26 68/142/26 67/125/26 +f 71/123/28 74/122/28 67/126/28 +f 69/128/25 68/118/25 73/124/25 +f 76/129/23 77/143/23 78/130/23 +f 77/132/27 79/135/27 80/133/27 +f 79/135/24 81/138/24 82/136/24 +f 80/133/28 82/136/28 75/131/28 +f 77/137/25 76/144/25 81/138/25 +o Prop2 +v 8.876309 4.210101 -11.711483 +v 9.975476 4.210101 -11.161900 +v 8.876309 3.821486 -11.550513 +v 8.876309 3.660517 -11.161900 +v 8.876309 3.821486 -10.773286 +v 8.876309 4.210101 -10.612316 +v 8.876309 4.598714 -10.773286 +v 8.876309 4.759685 -11.161900 +v 8.876309 4.598714 -11.550513 +v 9.092196 4.022469 -8.522002 +v 9.092196 4.397734 -8.522002 +v 9.092196 4.397734 -10.901798 +v 9.092196 4.022469 -10.901798 +v 9.259592 4.022469 -10.901798 +v 9.259592 4.397734 -10.901798 +v 9.259592 4.397734 -8.522002 +v 9.259592 4.022469 -8.522002 +v 9.092196 4.022469 -11.422001 +v 9.092196 4.397734 -11.422001 +v 9.092196 4.397734 -13.801797 +v 9.092196 4.022469 -13.801797 +v 9.259590 4.397734 -13.801797 +v 9.259590 4.022469 -13.801797 +v 9.259590 4.397734 -11.422001 +v 9.259590 4.022469 -11.422001 +v 9.092196 1.570202 -11.349532 +v 9.092196 1.570202 -10.974266 +v 9.092196 3.950000 -10.974266 +v 9.092196 3.950000 -11.349532 +v 9.259590 3.950000 -11.349532 +v 9.259590 3.950000 -10.974266 +v 9.259590 1.570202 -10.974266 +v 9.259590 1.570202 -11.349532 +v 9.092196 4.470202 -11.349532 +v 9.092196 4.470202 -10.974266 +v 9.092196 6.849998 -10.974266 +v 9.092196 6.849998 -11.349532 +v 9.259590 6.849998 -10.974266 +v 9.259590 6.849998 -11.349532 +v 9.259590 4.470202 -10.974266 +v 9.259590 4.470202 -11.349532 +vt 0.057500 0.876667 +vt 0.055000 0.893333 +vt 0.053750 0.876667 +vt 0.061250 0.876667 +vt 0.058750 0.893333 +vt 0.057500 0.876667 +vt 0.065000 0.876667 +vt 0.062500 0.893333 +vt 0.061250 0.876667 +vt 0.068750 0.876667 +vt 0.066250 0.893333 +vt 0.065000 0.876667 +vt 0.072500 0.876667 +vt 0.070000 0.893333 +vt 0.068750 0.876667 +vt 0.076250 0.876667 +vt 0.073750 0.893333 +vt 0.072500 0.876667 +vt 0.080000 0.876667 +vt 0.077500 0.893333 +vt 0.076250 0.876667 +vt 0.053750 0.876667 +vt 0.051250 0.893333 +vt 0.050000 0.876667 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vn 0.4194 -0.3474 -0.8387 +vn 0.4194 -0.8387 -0.3474 +vn 0.4194 -0.8387 0.3474 +vn 0.4194 -0.3474 0.8387 +vn 0.4194 0.3474 0.8387 +vn 0.4194 0.8387 0.3474 +vn 0.4194 0.8387 -0.3474 +vn 0.4194 0.3474 -0.8387 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s 1 +f 83/145/29 84/146/29 85/147/29 +f 85/148/30 84/149/30 86/150/30 +f 86/151/31 84/152/31 87/153/31 +f 87/154/32 84/155/32 88/156/32 +f 88/157/33 84/158/33 89/159/33 +f 89/160/34 84/161/34 90/162/34 +f 90/163/35 84/164/35 91/165/35 +f 91/166/36 84/167/36 83/168/36 +f 93/169/37 95/170/37 92/171/37 +f 97/172/38 99/173/38 96/174/38 +f 98/175/39 92/176/39 99/173/39 +f 96/174/40 92/177/40 95/178/40 +f 94/179/41 98/175/41 97/172/41 +f 101/180/37 103/181/37 100/182/37 +f 102/183/42 105/184/42 103/185/42 +f 104/186/38 107/187/38 105/184/38 +f 105/184/40 100/182/40 103/181/40 +f 102/188/41 106/189/41 104/186/41 +f 109/190/37 111/191/37 108/192/37 +f 113/193/38 115/194/38 112/195/38 +f 114/196/40 108/197/40 115/194/40 +f 112/195/42 108/198/42 111/199/42 +f 110/200/39 114/196/39 113/193/39 +f 117/201/37 119/202/37 116/203/37 +f 118/204/41 121/205/41 119/206/41 +f 120/207/38 123/208/38 121/205/38 +f 121/205/42 116/203/42 119/202/42 +f 118/209/39 122/210/39 120/207/39 +f 93/169/37 94/179/37 95/170/37 +f 97/172/38 98/175/38 99/173/38 +f 98/175/39 93/211/39 92/176/39 +f 96/174/40 99/173/40 92/177/40 +f 94/179/41 93/169/41 98/175/41 +f 101/180/37 102/212/37 103/181/37 +f 102/183/42 104/186/42 105/184/42 +f 104/186/38 106/189/38 107/187/38 +f 105/184/40 107/187/40 100/182/40 +f 102/188/41 101/213/41 106/189/41 +f 109/190/37 110/200/37 111/191/37 +f 113/193/38 114/196/38 115/194/38 +f 114/196/40 109/214/40 108/197/40 +f 112/195/42 115/194/42 108/198/42 +f 110/200/39 109/190/39 114/196/39 +f 117/201/37 118/215/37 119/202/37 +f 118/204/41 120/207/41 121/205/41 +f 120/207/38 122/210/38 123/208/38 +f 121/205/42 123/208/42 116/203/42 +f 118/209/39 117/216/39 122/210/39 +o Prop1 +v 8.876309 4.210101 -21.089483 +v 9.975476 4.210101 -20.539900 +v 8.876309 3.821487 -20.928514 +v 8.876309 3.660518 -20.539900 +v 8.876309 3.821487 -20.151285 +v 8.876309 4.210101 -19.990316 +v 8.876309 4.598715 -20.151285 +v 8.876309 4.759685 -20.539900 +v 8.876309 4.598715 -20.928514 +v 9.092196 4.022469 -17.900002 +v 9.092196 4.397734 -17.900002 +v 9.092196 4.397734 -20.279799 +v 9.092196 4.022469 -20.279799 +v 9.259592 4.022469 -20.279799 +v 9.259592 4.397734 -20.279799 +v 9.259592 4.397734 -17.900002 +v 9.259592 4.022469 -17.900002 +v 9.092196 4.022469 -20.800001 +v 9.092196 4.397734 -20.800001 +v 9.092196 4.397734 -23.179798 +v 9.092196 4.022469 -23.179798 +v 9.259590 4.397734 -23.179798 +v 9.259590 4.022469 -23.179798 +v 9.259590 4.397734 -20.800001 +v 9.259590 4.022469 -20.800001 +v 9.092196 1.570203 -20.727531 +v 9.092196 1.570203 -20.352266 +v 9.092196 3.950000 -20.352266 +v 9.092196 3.950000 -20.727531 +v 9.259590 3.950000 -20.727531 +v 9.259590 3.950000 -20.352266 +v 9.259590 1.570203 -20.352266 +v 9.259590 1.570203 -20.727531 +v 9.092196 4.470203 -20.727531 +v 9.092196 4.470203 -20.352266 +v 9.092196 6.849999 -20.352266 +v 9.092196 6.849999 -20.727531 +v 9.259590 6.849999 -20.352266 +v 9.259590 6.849999 -20.727531 +v 9.259590 4.470203 -20.352266 +v 9.259590 4.470203 -20.727531 +vt 0.076250 0.876667 +vt 0.073750 0.893333 +vt 0.072500 0.876667 +vt 0.070000 0.893333 +vt 0.068750 0.876667 +vt 0.066250 0.893333 +vt 0.065000 0.876667 +vt 0.062500 0.893333 +vt 0.061250 0.876667 +vt 0.057500 0.876667 +vt 0.055000 0.893333 +vt 0.053750 0.876667 +vt 0.051250 0.893333 +vt 0.050000 0.876667 +vt 0.061250 0.876667 +vt 0.058750 0.893333 +vt 0.057500 0.876667 +vt 0.080000 0.876667 +vt 0.077500 0.893333 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.185000 0.908333 +vt 0.188750 0.876667 +vt 0.188750 0.908333 +vt 0.183750 0.876667 +vt 0.180000 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.908333 +vt 0.180000 0.910000 +vt 0.178750 0.908333 +vt 0.178750 0.876667 +vt 0.185000 0.876667 +vt 0.188750 0.876667 +vt 0.185000 0.908333 +vt 0.185000 0.876667 +vt 0.180000 0.910000 +vt 0.183750 0.908333 +vt 0.183750 0.910000 +vt 0.180000 0.908333 +vt 0.183750 0.876667 +vt 0.178750 0.908333 +vt 0.180000 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vt 0.183750 0.910000 +vt 0.188750 0.908333 +vt 0.178750 0.876667 +vn 0.4194 -0.3474 -0.8387 +vn 0.4194 -0.8387 -0.3474 +vn 0.4194 -0.8387 0.3474 +vn 0.4194 -0.3474 0.8387 +vn 0.4194 0.3474 0.8387 +vn 0.4194 0.8387 0.3474 +vn 0.4194 0.8387 -0.3474 +vn 0.4194 0.3474 -0.8387 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s 1 +f 124/217/43 125/218/43 126/219/43 +f 126/219/44 125/220/44 127/221/44 +f 127/221/45 125/222/45 128/223/45 +f 128/223/46 125/224/46 129/225/46 +f 129/226/47 125/227/47 130/228/47 +f 130/228/48 125/229/48 131/230/48 +f 131/231/49 125/232/49 132/233/49 +f 132/234/50 125/235/50 124/217/50 +f 134/236/51 136/237/51 133/238/51 +f 138/239/52 140/240/52 137/241/52 +f 139/242/53 133/243/53 140/240/53 +f 137/241/54 133/244/54 136/245/54 +f 135/246/55 139/242/55 138/239/55 +f 142/247/51 144/248/51 141/249/51 +f 143/250/56 146/251/56 144/252/56 +f 145/253/52 148/254/52 146/251/52 +f 146/251/54 141/249/54 144/248/54 +f 143/255/55 147/256/55 145/253/55 +f 150/257/51 152/258/51 149/259/51 +f 154/260/52 156/261/52 153/262/52 +f 155/263/54 149/264/54 156/261/54 +f 153/262/56 149/265/56 152/266/56 +f 151/267/53 155/263/53 154/260/53 +f 158/268/51 160/269/51 157/270/51 +f 159/271/55 162/272/55 160/273/55 +f 161/274/52 164/275/52 162/272/52 +f 162/272/56 157/270/56 160/269/56 +f 159/276/53 163/277/53 161/274/53 +f 134/236/51 135/246/51 136/237/51 +f 138/239/52 139/242/52 140/240/52 +f 139/242/53 134/278/53 133/243/53 +f 137/241/54 140/240/54 133/244/54 +f 135/246/55 134/236/55 139/242/55 +f 142/247/51 143/279/51 144/248/51 +f 143/250/56 145/253/56 146/251/56 +f 145/253/52 147/256/52 148/254/52 +f 146/251/54 148/254/54 141/249/54 +f 143/255/55 142/280/55 147/256/55 +f 150/257/51 151/267/51 152/258/51 +f 154/260/52 155/263/52 156/261/52 +f 155/263/54 150/281/54 149/264/54 +f 153/262/56 156/261/56 149/265/56 +f 151/267/53 150/257/53 155/263/53 +f 158/268/51 159/282/51 160/269/51 +f 159/271/55 161/274/55 162/272/55 +f 161/274/52 163/277/52 164/275/52 +f 162/272/56 164/275/56 157/270/56 +f 159/276/53 158/283/53 163/277/53 +o Plane +v -8.648877 2.337463 -3.828772 +v 17.109543 2.337462 -3.828772 +v 17.109543 0.872254 -3.537324 +v -8.648877 0.872255 -3.537324 +v 17.109543 -0.369889 -2.707351 +v -8.648877 -0.369888 -2.707351 +v 17.109543 -1.199862 -1.465208 +v -8.648877 -1.199861 -1.465208 +v 17.109543 -1.491310 -0.000000 +v -8.648877 -1.491309 -0.000000 +v 17.109543 -1.199862 1.465208 +v -8.648877 -1.199861 1.465208 +v 17.109543 -0.369889 2.707351 +v -8.648877 -0.369888 2.707351 +v 17.109543 0.872254 3.537324 +v -8.648877 0.872255 3.537324 +v 17.109543 2.337462 3.828772 +v -8.648877 2.337463 3.828772 +v 17.109543 3.802669 3.537324 +v -8.648877 3.802670 3.537324 +v 17.109543 5.044812 2.707351 +v -8.648877 5.044813 2.707351 +v 17.109543 5.874785 1.465208 +v -8.648877 5.874786 1.465208 +v 17.109543 6.166234 0.000000 +v -8.648877 6.166231 0.000000 +v 17.109543 5.874785 -1.465208 +v -8.648877 5.874786 -1.465208 +v 17.109543 5.044812 -2.707351 +v -8.648877 5.044813 -2.707351 +v 18.622576 0.819016 -3.307737 +v 18.622576 -0.342507 -2.531632 +v 17.109543 3.802669 -3.537324 +v -8.648877 3.802670 -3.537324 +v -22.527349 6.033054 -0.479178 +v -22.527349 5.863158 -0.885406 +v -24.803490 5.347558 0.000000 +v -17.322922 2.833023 -1.568635 +v -17.322922 2.415598 -0.848939 +v -22.527349 4.584874 -0.479178 +v -22.527349 4.754769 -0.885406 +v -17.322922 3.457743 2.049520 +v -17.322922 4.194651 2.218385 +v -22.527349 5.308964 1.252153 +v -22.527349 5.009036 1.156838 +v -17.322922 4.194651 -2.218385 +v -17.322922 3.457743 -2.049520 +v -22.527349 5.009036 -1.156838 +v -22.527349 5.308964 -1.252153 +v -17.322922 6.120280 0.000000 +v -17.322922 5.973704 -0.848939 +v -22.527349 6.092710 0.000000 +v -17.322922 2.415598 0.848939 +v -17.322922 2.833023 1.568635 +v -22.527349 4.754769 0.885406 +v -22.527349 4.584874 0.479178 +v -17.322922 5.556279 1.568635 +v -17.322922 5.973704 0.848939 +v -22.527349 6.033054 0.479178 +v -22.527349 5.863158 0.885406 +v -17.322922 4.931559 -2.049520 +v -22.527349 5.608891 -1.156838 +v -17.322922 2.269018 0.000000 +v -22.527349 4.525215 0.000000 +v -17.322922 4.931559 2.049520 +v -22.527349 5.608891 1.156838 +v -17.322922 5.556279 -1.568635 +v 18.622576 3.559235 -3.307737 +v 18.622576 4.720757 -2.531632 +v 20.313610 3.625209 -1.918521 +v 20.313610 2.744985 -2.506668 +v 18.622576 -0.342507 2.531632 +v 18.622576 0.819016 3.307737 +v 18.622576 5.496862 1.370110 +v 18.622576 5.769394 0.000000 +v 18.622576 -1.391143 -0.000000 +v 18.622576 -1.118612 1.370110 +v 18.622576 3.559235 3.307737 +v 18.622576 4.720757 2.531632 +v 18.622576 -1.118612 -1.370110 +v 18.622576 2.189125 3.580269 +v 18.622576 2.189125 -3.580269 +v 18.622576 5.496862 -1.370110 +v 20.313610 -0.799979 1.038296 +v 20.313610 -1.006509 -0.000000 +v 21.630833 -0.630115 -0.000000 +v 21.630833 -0.488594 0.711476 +v 20.313610 0.668393 2.506668 +v 20.313610 1.706689 2.713198 +v 20.313610 1.706689 -2.713198 +v 20.313610 0.668393 -2.506668 +v 20.313610 2.744985 2.506668 +v 20.313610 -0.211831 -1.918521 +v 20.313610 3.625209 1.918521 +v 20.313610 -0.799979 -1.038296 +v 20.313610 4.213357 1.038296 +v 20.313610 4.419887 0.000000 +v 20.313610 4.213357 -1.038296 +v 20.313610 -0.211831 1.918521 +v 21.630833 2.543696 1.314636 +v 21.630833 1.940536 1.717654 +v 23.161669 1.704029 1.096937 +v 23.161669 2.089221 0.839559 +v 21.630833 3.088236 0.000000 +v 21.630833 2.946714 -0.711476 +v 21.630833 -0.085575 1.314636 +v 21.630833 2.543696 -1.314635 +v 21.630833 0.517585 1.717654 +v 21.630833 1.940536 -1.717654 +v 21.630833 1.229060 1.859176 +v 21.630833 1.229060 -1.859176 +v 21.630833 0.517585 -1.717654 +v 21.630833 -0.085575 -1.314635 +v 21.630833 -0.488594 -0.711476 +v 21.630833 2.946714 0.711476 +v 23.161669 1.704029 -1.096937 +v 23.161669 2.089221 -0.839559 +v 23.950235 1.751938 -0.467252 +v 23.950235 1.537561 -0.610494 +v 23.161669 0.410103 -0.839559 +v 23.161669 0.152726 -0.454366 +v 23.161669 2.346599 0.454366 +v 23.161669 0.062347 0.000000 +v 23.161669 2.436978 0.000000 +v 23.161669 0.152726 0.454366 +v 23.161669 2.346599 -0.454366 +v 23.161669 0.410103 0.839559 +v 23.161669 0.795296 1.096937 +v 23.161669 1.249662 1.187316 +v 23.161669 1.249662 -1.187316 +v 23.161669 0.795296 -1.096937 +v 23.950235 1.031812 -0.610494 +v 23.950235 1.284687 -0.660794 +v 23.950235 1.895180 -0.252875 +v 23.950235 1.945480 0.000000 +v 23.950235 1.895180 0.252875 +v 23.950235 1.751938 0.467252 +v 23.950235 1.537561 0.610494 +v 23.950235 1.284687 0.660794 +v 23.950235 1.031812 0.610494 +v 23.950235 0.817435 0.467252 +v 23.950235 0.674193 0.252875 +v 23.950235 0.623893 0.000000 +v 23.950235 0.674193 -0.252875 +v 23.950235 0.817435 -0.467252 +v -23.618507 18.840416 -0.394288 +v -23.811937 6.847831 -0.394289 +v -29.203978 8.049699 0.000000 +v -18.412893 8.049699 0.000000 +v -23.272705 18.840416 0.000001 +v -23.618507 18.840416 0.394290 +v -18.758696 8.049699 0.404003 +v -23.811937 6.847831 0.394289 +v -16.836498 7.231033 0.394289 +v -26.797274 19.118101 0.000001 +v -29.365820 6.847831 0.000000 +v -23.435175 6.224818 -0.513844 +v -29.125296 6.008132 0.000000 +v -16.490694 7.231033 0.000000 +v -10.014664 5.966194 0.451128 +v -23.435175 6.224818 0.513844 +v -22.237053 5.198684 1.199751 +v -16.683172 5.198684 1.199751 +v -26.535391 5.330534 1.007645 +v -7.680647 5.966194 0.000000 +v -16.836498 7.231033 -0.394289 +v -10.014664 5.966194 -0.451128 +v -27.328730 4.765311 0.844866 +v -22.237053 5.198684 -1.199751 +v -26.535391 5.330534 -1.007645 +v -16.683172 5.198684 -1.199751 +v -27.328730 4.765311 -0.844866 +v -18.758696 8.049699 -0.404003 +v -21.774847 4.765311 -0.844866 +v -21.774847 4.765311 0.000000 +v -21.774847 4.765311 0.844866 +v -27.797274 18.840416 0.000001 +v -20.182421 5.820175 -13.388203 +v -17.837469 5.820174 -0.207668 +v -17.837469 5.519457 -0.207668 +v -20.182421 5.519457 -13.388203 +v -21.592556 6.009354 -13.388203 +v -23.479408 6.009353 -0.207668 +v -18.044111 6.009353 -0.207668 +v -20.374386 6.009354 -13.388203 +v -20.374386 5.330279 -13.388203 +v -18.044111 5.330279 -0.207668 +v -23.479408 5.330279 -0.207668 +v -21.592556 5.330279 -13.388203 +v -23.225643 5.669816 -13.388203 +v -25.237371 5.669816 -0.207668 +v -20.182421 5.519456 13.388203 +v -17.837469 5.519459 0.207668 +v -17.837469 5.820175 0.207668 +v -20.182421 5.820174 13.388203 +v -21.592556 5.330278 13.388203 +v -23.479408 5.330280 0.207668 +v -18.044111 5.330279 0.207668 +v -20.374386 5.330278 13.388203 +v -20.374386 6.009353 13.388203 +v -18.044111 6.009354 0.207668 +v -23.479408 6.009354 0.207668 +v -21.592556 6.009353 13.388203 +v -23.225643 5.669816 13.388203 +v -25.237371 5.669816 0.207668 +v -14.045300 3.096631 0.848939 +v -14.045300 3.514056 1.568635 +v -14.045300 3.096631 -0.848939 +v -14.045300 2.950051 0.000000 +v -14.045300 3.514056 -1.568635 +v -5.371254 0.311145 -2.707351 +v -5.371254 -0.518828 -1.465208 +v -5.371254 -0.518828 1.465208 +v -5.371254 0.311145 2.707351 +v -5.371254 -0.810276 -0.000000 +v 2.656979 -0.906801 -1.548738 +v 4.656979 -0.906801 -1.548738 +v 4.656979 -1.282411 -2.455540 +v 2.656979 -1.282411 -2.455540 +v 4.656979 -0.906801 -3.362341 +v 2.656979 -0.906801 -3.362341 +v 4.656979 0.000000 -3.737951 +v 2.656979 0.000000 -3.737951 +v 4.656979 0.906801 -3.362341 +v 2.656979 0.906801 -3.362341 +v 1.209754 0.906801 -3.362341 +v 1.209754 0.000000 -3.737951 +v 1.209754 -1.282411 -2.455540 +v 1.209754 -0.906801 -3.362341 +v 0.003049 -0.392748 -2.648372 +v 0.003049 -0.768357 -1.741571 +v 6.104204 0.000000 -3.737951 +v 6.104204 0.906802 -3.362341 +v 6.104204 -1.282411 -2.455540 +v 6.104204 -0.906801 -3.362341 +v 1.209754 -0.906801 -1.548738 +v 6.104204 -0.906801 -1.548738 +v 7.310909 -0.768357 -1.741571 +v 7.310909 -0.392747 -2.648372 +v 0.003049 0.514054 -3.023982 +v 7.310909 0.514054 -3.023982 +v 0.003048 1.420855 -2.648372 +v 7.310909 1.420856 -2.648372 +v 0.003049 -0.392748 -0.834769 +v 7.310909 -0.392747 -0.834769 +v 2.656979 -0.906801 1.548734 +v 4.656979 -0.906801 1.548734 +v 4.656979 -1.282411 2.455535 +v 2.656979 -1.282411 2.455535 +v 4.656979 -0.906801 3.362337 +v 2.656979 -0.906801 3.362337 +v 4.656979 -0.000000 3.737946 +v 2.656979 -0.000000 3.737946 +v 4.656979 0.906801 3.362337 +v 2.656979 0.906802 3.362337 +v 1.209754 0.906802 3.362337 +v 1.209754 -0.000000 3.737946 +v 1.209754 -1.282411 2.455535 +v 1.209754 -0.906801 3.362337 +v 0.003049 -0.392747 2.648367 +v 0.003049 -0.768357 1.741566 +v 6.104204 -0.000000 3.737946 +v 6.104204 0.906801 3.362337 +v 6.104204 -1.282411 2.455535 +v 6.104204 -0.906801 3.362337 +v 1.209754 -0.906801 1.548734 +v 6.104204 -0.906801 1.548734 +v 7.310909 -0.768357 1.741566 +v 7.310909 -0.392748 2.648367 +v 0.003049 0.514054 3.023977 +v 7.310909 0.514054 3.023977 +v 0.003049 1.420856 2.648367 +v 7.310909 1.420855 2.648367 +v 0.003049 -0.392747 0.834765 +v 7.310909 -0.392748 0.834765 +v 1.500305 3.122780 -17.418180 +v 2.907010 3.122780 -17.418180 +v 2.907010 2.581584 -16.876984 +v 1.500305 2.581584 -16.876984 +v 2.907010 2.581584 -16.111618 +v 1.500305 2.581584 -16.111618 +v 2.907010 3.122780 -15.570421 +v 1.500305 3.122781 -15.570421 +v 2.907010 3.888147 -15.570421 +v 1.500305 3.888147 -15.570421 +v 2.907010 4.429342 -16.111618 +v 1.500305 4.429342 -16.111618 +v 2.907010 4.429343 -16.876984 +v 2.907010 5.216080 -16.876984 +v 2.907010 5.216080 -16.111618 +v 2.907010 3.888147 -17.418180 +v 5.008881 4.429343 -16.876984 +v 5.008881 3.888147 -17.418180 +v 1.500305 4.429343 -16.876984 +v 1.500305 3.888147 -17.418180 +v 5.008881 2.581584 -16.876984 +v 5.008881 2.581584 -16.111618 +v -0.285478 4.429344 -16.111618 +v -0.285478 3.888148 -15.570421 +v 5.008881 3.888147 -15.570421 +v 5.008881 4.429342 -16.111618 +v -0.285478 3.122781 -15.570421 +v -0.285478 2.581584 -16.111618 +v -0.285478 3.122781 -17.418180 +v -0.285478 3.888147 -17.418180 +v -0.285478 2.581584 -16.876984 +v 5.008881 3.122780 -15.570421 +v 5.008881 3.122780 -17.418180 +v -0.285478 4.429343 -16.876984 +v -6.039415 3.505464 -16.494301 +v 7.367077 3.369535 -16.822462 +v 7.367077 3.177303 -16.630230 +v 7.367077 3.641392 -16.822462 +v 7.367077 3.833624 -16.630230 +v 7.367077 3.833624 -16.358374 +v 7.367077 3.641392 -16.166142 +v 7.367077 3.369535 -16.166142 +v 7.367077 3.177303 -16.358374 +v 1.500305 5.216080 -16.111618 +v 1.500305 5.216080 -16.876984 +v 4.805163 4.210103 -12.231182 +v 7.559474 4.239601 -11.989785 +v 7.559474 3.025841 -11.747283 +v 4.805163 2.904310 -11.917976 +v 7.559474 2.783338 -11.161830 +v 4.805163 2.591105 -11.161829 +v 7.559474 3.025841 -10.576376 +v 4.805163 2.904310 -10.405683 +v 7.559474 4.239601 -10.333874 +v 4.805163 4.210103 -10.092476 +v 7.559474 4.825054 -10.576376 +v 4.805163 4.966249 -10.405683 +v 7.559474 5.067556 -11.161829 +v 4.805163 5.279455 -11.161829 +v 8.887003 3.803822 -11.568155 +v 8.887003 3.635535 -11.161875 +v 7.559474 4.825054 -11.747282 +v 4.805163 4.966249 -11.917976 +v 8.887003 4.210102 -11.736441 +v 8.887003 4.616381 -11.568155 +v 8.887003 4.784667 -11.161875 +v 8.887003 4.616381 -10.755596 +v 8.887003 4.210102 -10.587309 +v 8.887003 3.803822 -10.755596 +v 2.193453 4.210103 -12.231182 +v 2.193453 2.904310 -11.917976 +v -0.516882 3.711920 -11.527017 +v -0.516882 4.254626 -11.678282 +v 2.193453 4.210103 -10.092476 +v 2.193453 2.904310 -10.405683 +v 2.193453 2.591105 -11.161829 +v 2.193453 4.966249 -10.405683 +v 2.193453 4.966249 -11.917976 +v -0.516882 3.560654 -11.161829 +v -0.516882 3.711920 -10.796642 +v -0.516882 4.254626 -10.645377 +v -0.516882 4.619813 -10.796642 +v -0.516882 4.771080 -11.161829 +v -0.516882 4.619813 -11.527017 +v 2.193454 5.279455 -11.161829 +v 4.354962 5.543211 -34.577400 +v 4.464384 5.455995 -34.388062 +v 4.464384 5.200350 -34.388062 +v 4.365958 5.151175 -34.558372 +v 3.854457 5.349201 -35.443459 +v 3.854457 5.543211 -35.443459 +v 4.245422 5.113065 -34.399647 +v 4.746218 4.829812 -10.770060 +v -3.556738 5.186512 -10.723449 +v -0.380831 5.328140 -34.644386 +v 4.245421 5.543215 -34.399647 +v 1.347604 5.543211 -35.483459 +v 4.964909 4.917097 -10.771288 +v 4.964909 5.455994 -10.771288 +v 4.999471 5.455992 -4.836422 +v 4.999471 4.779428 -4.836423 +v 1.347604 5.349200 -35.483459 +v 4.746218 5.543214 -10.770059 +v -3.470909 4.692151 -4.788582 +v -3.470909 5.543211 -4.788580 +v -5.886427 4.692151 -2.723212 +v -5.886427 5.543211 -1.772059 +v 4.780781 4.692149 -4.835188 +v 4.780781 5.543209 -4.835186 +v 4.999470 5.455994 -2.717648 +v 4.999470 4.779427 -2.717649 +v 4.780781 4.692150 -2.717762 +v 4.780781 5.543210 -2.717758 +v 4.780214 5.543206 -1.608046 +v 4.998903 5.455990 -1.607934 +v 4.805163 4.210103 -21.609173 +v 7.559474 4.239601 -21.367777 +v 7.559474 3.025841 -21.125275 +v 4.805162 2.904311 -21.295967 +v 7.559474 2.783338 -20.539822 +v 4.805162 2.591105 -20.539822 +v 7.559474 3.025841 -19.954369 +v 4.805162 2.904311 -19.783674 +v 7.559474 4.239601 -19.711866 +v 4.805163 4.210102 -19.470469 +v 7.559474 4.825054 -19.954369 +v 4.805163 4.966249 -19.783674 +v 7.559474 5.067557 -20.539822 +v 4.805163 5.279455 -20.539822 +v 8.887003 3.803822 -20.946146 +v 8.887003 3.635536 -20.539867 +v 7.559474 4.825054 -21.125275 +v 4.805163 4.966250 -21.295967 +v 2.193454 5.279455 -20.539822 +v 2.193453 4.966249 -19.783674 +v 8.887003 4.210102 -21.114433 +v 8.887003 4.616381 -20.946148 +v 8.887003 4.784668 -20.539867 +v 8.887003 4.616381 -20.133587 +v 8.887003 4.210101 -19.965302 +v 8.887003 3.803822 -20.133587 +v 2.193453 4.210103 -21.609173 +v 2.193453 2.904311 -21.295967 +v -0.516882 3.711920 -20.905008 +v -0.516882 4.254626 -21.056274 +v 2.193453 4.210102 -19.470469 +v 2.193453 2.904311 -19.783674 +v 2.193453 4.966249 -21.295967 +v 2.193453 2.591105 -20.539822 +v -0.516882 3.560655 -20.539822 +v -0.516882 3.711921 -20.174635 +v -0.516882 4.254626 -20.023371 +v -0.516882 4.619814 -20.174635 +v -0.516882 4.771080 -20.539822 +v -0.516882 4.619813 -20.905008 +v 4.998903 4.779424 -1.607935 +v -5.886994 5.543206 -1.613495 +v 1.500305 3.122778 17.418180 +v 2.907010 3.122778 17.418180 +v 2.907010 2.581582 16.876984 +v 1.500305 2.581582 16.876984 +v 2.907010 2.581582 16.111618 +v 1.500305 2.581582 16.111618 +v 2.907010 3.122779 15.570421 +v 1.500305 3.122779 15.570421 +v 2.907010 3.888145 15.570421 +v 1.500305 3.888145 15.570421 +v 2.907010 4.429341 16.111618 +v 1.500305 4.429341 16.111618 +v 2.907010 4.429341 16.876984 +v 2.907010 5.216078 16.876984 +v 2.907010 5.216079 16.111618 +v 2.907010 3.888145 17.418180 +v 5.008881 4.429341 16.876984 +v 5.008881 3.888145 17.418180 +v 1.500305 4.429341 16.876984 +v 1.500305 3.888145 17.418180 +v 5.008881 2.581582 16.876984 +v 5.008881 2.581582 16.111618 +v -0.285478 4.429343 16.111618 +v -0.285478 3.888146 15.570421 +v 5.008881 3.888145 15.570421 +v 5.008881 4.429341 16.111618 +v -0.285478 3.122779 15.570421 +v -0.285478 2.581582 16.111618 +v -0.285478 3.122778 17.418180 +v -0.285478 3.888145 17.418180 +v -0.285478 2.581582 16.876984 +v 5.008881 3.122778 15.570421 +v 5.008881 3.122778 17.418180 +v -0.285478 4.429341 16.876984 +v -6.039415 3.505462 16.494301 +v 7.367077 3.369533 16.822462 +v 7.367077 3.177301 16.630230 +v 7.367077 3.641390 16.822462 +v 7.367077 3.833622 16.630230 +v 7.367077 3.833622 16.358374 +v 7.367077 3.641390 16.166142 +v 7.367077 3.369533 16.166142 +v 7.367077 3.177301 16.358374 +v 1.500305 5.216079 16.111618 +v 1.500305 5.216078 16.876984 +v 4.805163 4.210102 12.231182 +v 7.559474 4.239600 11.989785 +v 7.559474 3.025840 11.747282 +v 4.805163 2.904310 11.917976 +v 7.559474 2.783338 11.161830 +v 4.805163 2.591104 11.161829 +v 7.559474 3.025840 10.576376 +v 4.805163 2.904310 10.405683 +v 7.559474 4.239600 10.333874 +v 4.805163 4.210102 10.092476 +v 7.559474 4.825053 10.576376 +v 4.805163 4.966249 10.405683 +v 7.559474 5.067555 11.161829 +v 4.805163 5.279455 11.161829 +v 8.887003 3.803821 11.568155 +v 8.887003 3.635535 11.161875 +v 7.559474 4.825053 11.747282 +v 4.805163 4.966249 11.917976 +v 8.887003 4.210101 11.736441 +v 8.887003 4.616380 11.568155 +v 8.887003 4.784667 11.161875 +v 8.887003 4.616381 10.755596 +v 8.887003 4.210101 10.587309 +v 8.887003 3.803821 10.755596 +v 2.193453 4.210102 12.231182 +v 2.193453 2.904310 11.917976 +v -0.516882 3.711920 11.527017 +v -0.516882 4.254625 11.678282 +v 2.193453 4.210102 10.092476 +v 2.193453 2.904310 10.405683 +v 2.193453 2.591104 11.161829 +v 2.193453 4.966249 10.405683 +v 2.193453 4.966249 11.917976 +v -0.516882 3.560653 11.161829 +v -0.516882 3.711920 10.796642 +v -0.516882 4.254625 10.645377 +v -0.516882 4.619812 10.796642 +v -0.516882 4.771079 11.161829 +v -0.516882 4.619812 11.527017 +v 2.193454 5.279454 11.161829 +v 4.354962 5.543208 34.577400 +v 4.464384 5.455991 34.388062 +v 4.464384 5.200346 34.388062 +v 4.365958 5.151172 34.558372 +v 3.854456 5.349198 35.443459 +v 3.854457 5.543209 35.443459 +v 4.245422 5.113067 34.399647 +v 4.746218 4.829815 10.770060 +v -3.556738 5.186512 10.723449 +v -0.380831 5.328137 34.644386 +v 4.245421 5.543208 34.399647 +v 1.347604 5.543208 35.483459 +v 4.964909 4.917096 10.771288 +v 4.964909 5.455994 10.771288 +v 4.999471 5.455993 4.836423 +v 4.999471 4.779428 4.836423 +v 1.347604 5.349197 35.483459 +v 4.746218 5.543210 10.770059 +v -3.470909 4.692152 4.788581 +v -3.470909 5.543211 4.788581 +v -5.886427 4.692151 2.723212 +v -5.886427 5.543211 1.772059 +v 4.780781 4.692150 4.835188 +v 4.780781 5.543209 4.835187 +v 4.999470 5.455994 2.717648 +v 4.999470 4.779428 2.717649 +v 4.780781 4.692151 2.717762 +v 4.780781 5.543211 2.717758 +v 4.780214 5.543207 1.608046 +v 4.998903 5.455990 1.607934 +v 4.805163 4.210100 21.609173 +v 7.559474 4.239599 21.367777 +v 7.559474 3.025839 21.125275 +v 4.805162 2.904309 21.295967 +v 7.559474 2.783336 20.539822 +v 4.805162 2.591103 20.539822 +v 7.559474 3.025839 19.954369 +v 4.805162 2.904309 19.783674 +v 7.559474 4.239599 19.711866 +v 4.805163 4.210100 19.470469 +v 7.559474 4.825052 19.954369 +v 4.805163 4.966247 19.783674 +v 7.559474 5.067555 20.539822 +v 4.805163 5.279453 20.539822 +v 8.887003 3.803820 20.946146 +v 8.887003 3.635534 20.539867 +v 7.559474 4.825052 21.125275 +v 4.805163 4.966248 21.295967 +v 2.193454 5.279453 20.539822 +v 2.193453 4.966247 19.783674 +v 8.887003 4.210099 21.114433 +v 8.887003 4.616379 20.946148 +v 8.887003 4.784666 20.539867 +v 8.887003 4.616379 20.133587 +v 8.887003 4.210099 19.965302 +v 8.887003 3.803820 20.133587 +v 2.193453 4.210101 21.609173 +v 2.193453 2.904309 21.295967 +v -0.516882 3.711918 20.905008 +v -0.516882 4.254624 21.056274 +v 2.193453 4.210100 19.470469 +v 2.193453 2.904309 19.783674 +v 2.193453 4.966247 21.295967 +v 2.193453 2.591103 20.539822 +v -0.516882 3.560653 20.539822 +v -0.516882 3.711918 20.174635 +v -0.516882 4.254624 20.023371 +v -0.516882 4.619812 20.174635 +v -0.516882 4.771078 20.539822 +v -0.516882 4.619811 20.905008 +v 4.998903 4.779424 1.607935 +v -5.886994 5.543207 1.613495 +v 1.683473 5.441774 -10.576500 +v 4.056783 5.531373 -10.576500 +v 4.056783 5.531373 -18.701500 +v 1.683473 5.441775 -18.701500 +v 1.683473 5.441773 18.701500 +v 4.056783 5.531371 18.701500 +v 4.056783 5.531372 10.576500 +v 1.683473 5.441773 10.576500 +v 1.176675 5.141184 -25.716265 +v 3.549040 5.029347 -25.716265 +v 3.552980 5.112920 -33.840836 +v 1.180615 5.224756 -33.840836 +v 1.176675 5.141182 25.716253 +v 3.549040 5.029345 25.716253 +v 3.552980 5.112917 33.840820 +v 1.180615 5.224753 33.840820 +vt 0.181250 0.853333 +vt 0.188750 0.858333 +vt 0.185000 0.868333 +vt 0.101250 0.863333 +vt 0.097500 0.865000 +vt 0.093750 0.863333 +vt 0.177500 0.858333 +vt 0.185000 0.853333 +vt 0.188750 0.863333 +vt 0.101250 0.863333 +vt 0.097500 0.865000 +vt 0.093750 0.863333 +vt 0.181250 0.868333 +vt 0.185000 0.868333 +vt 0.188750 0.863333 +vt 0.101250 0.851667 +vt 0.097500 0.850000 +vt 0.093750 0.851667 +vt 0.627500 0.311667 +vt 0.625000 0.311667 +vt 0.625000 0.315000 +vt 0.671250 0.191667 +vt 0.902500 0.131667 +vt 0.673750 0.131667 +vt 0.643750 0.138333 +vt 0.636250 0.131667 +vt 0.633750 0.133333 +vt 0.387500 0.311667 +vt 0.330000 0.318333 +vt 0.387500 0.318333 +vt 0.638750 0.311667 +vt 0.663750 0.315000 +vt 0.663750 0.311667 +vt 0.620000 0.315000 +vt 0.620000 0.318333 +vt 0.636250 0.193333 +vt 0.398750 0.133333 +vt 0.398750 0.241667 +vt 0.682500 0.311667 +vt 0.825000 0.295000 +vt 0.765000 0.295000 +vt 0.765000 0.306667 +vt 0.732500 0.310000 +vt 0.960000 0.238333 +vt 0.902500 0.238333 +vt 0.340000 0.241667 +vt 0.308750 0.310000 +vt 0.330000 0.310000 +vt 0.980000 0.131667 +vt 0.960000 0.131667 +vt 0.318750 0.133333 +vt 0.340000 0.133333 +vt 0.307500 0.130000 +vt 0.318750 0.130000 +vt 0.673750 0.128333 +vt 0.671250 0.130000 +vt 0.633750 0.130000 +vt 0.398750 0.130000 +vt 0.340000 0.130000 +vt 0.960000 0.128333 +vt 0.980000 0.128333 +vt 0.662500 0.168333 +vt 0.181250 0.853333 +vt 0.177500 0.863333 +vt 0.185000 0.868333 +vt 0.101250 0.851667 +vt 0.097500 0.850000 +vt 0.093750 0.851667 +vt 0.297500 0.318333 +vt 0.308750 0.318333 +vt 0.307500 0.133333 +vt 0.310000 0.273333 +vt 0.411250 0.090000 +vt 0.330000 0.058333 +vt 0.411250 0.058333 +vt 0.411250 0.090000 +vt 0.330000 0.058333 +vt 0.411250 0.058333 +vt 0.411250 0.058333 +vt 0.330000 0.090000 +vt 0.330000 0.058333 +vt 0.411250 0.090000 +vt 0.330000 0.058333 +vt 0.411250 0.058333 +vt 0.185000 0.853333 +vt 0.188750 0.863333 +vt 0.181250 0.868333 +vt 0.177500 0.863333 +vt 0.177500 0.858333 +vt 0.092500 0.858333 +vt 0.102500 0.858333 +vt 0.093750 0.851667 +vt 0.101250 0.851667 +vt 0.097500 0.850000 +vt 0.185000 0.868333 +vt 0.181250 0.868333 +vt 0.177500 0.863333 +vt 0.181250 0.853333 +vt 0.188750 0.858333 +vt 0.092500 0.858333 +vt 0.102500 0.858333 +vt 0.093750 0.851667 +vt 0.101250 0.851667 +vt 0.097500 0.850000 +vt 0.188750 0.858333 +vt 0.185000 0.853333 +vt 0.181250 0.853333 +vt 0.177500 0.858333 +vt 0.177500 0.863333 +vt 0.092500 0.858333 +vt 0.102500 0.858333 +vt 0.093750 0.863333 +vt 0.101250 0.863333 +vt 0.097500 0.865000 +vt 0.627500 0.316667 +vt 0.637500 0.316667 +vt 0.637500 0.313333 +vt 0.645000 0.171667 +vt 0.638750 0.315000 +vt 0.726250 0.295000 +vt 0.980000 0.268333 +vt 0.902500 0.128333 +vt 0.662500 0.136667 +vt 0.188750 0.863333 +vt 0.188750 0.858333 +vt 0.185000 0.853333 +vt 0.177500 0.858333 +vt 0.181250 0.868333 +vt 0.092500 0.858333 +vt 0.102500 0.858333 +vt 0.093750 0.863333 +vt 0.101250 0.863333 +vt 0.097500 0.865000 +vt 0.297500 0.310000 +vt 0.307500 0.273333 +vt 0.330000 0.090000 +vt 0.330000 0.090000 +vt 0.411250 0.090000 +vt 0.330000 0.090000 +vt 0.620000 0.603333 +vt 0.362500 0.623333 +vt 0.362500 0.603333 +vt 0.620000 0.623333 +vt 0.362500 0.643333 +vt 0.620000 0.643333 +vt 0.362500 0.663333 +vt 0.620000 0.663333 +vt 0.362500 0.683333 +vt 0.620000 0.683333 +vt 0.362500 0.703333 +vt 0.620000 0.703333 +vt 0.362500 0.723333 +vt 0.620000 0.723333 +vt 0.362500 0.743333 +vt 0.620000 0.743333 +vt 0.362500 0.763333 +vt 0.620000 0.763333 +vt 0.362500 0.783333 +vt 0.620000 0.783333 +vt 0.362500 0.803333 +vt 0.620000 0.803333 +vt 0.362500 0.823333 +vt 0.620000 0.823333 +vt 0.362500 0.843333 +vt 0.620000 0.523333 +vt 0.362500 0.543333 +vt 0.362500 0.523333 +vt 0.620000 0.543333 +vt 0.362500 0.563333 +vt 0.635000 0.623333 +vt 0.635000 0.643333 +vt 0.620000 0.563333 +vt 0.362500 0.583333 +vt 0.620000 0.583333 +vt 0.222500 0.551667 +vt 0.222500 0.558333 +vt 0.197500 0.555000 +vt 0.273750 0.665000 +vt 0.217500 0.676667 +vt 0.217500 0.665000 +vt 0.271250 0.758333 +vt 0.216250 0.750000 +vt 0.271250 0.748333 +vt 0.271250 0.608333 +vt 0.215000 0.616667 +vt 0.215000 0.611667 +vt 0.275000 0.528333 +vt 0.222500 0.538333 +vt 0.222500 0.531667 +vt 0.273750 0.711667 +vt 0.217500 0.700000 +vt 0.273750 0.700000 +vt 0.275000 0.820000 +vt 0.222500 0.810000 +vt 0.275000 0.808333 +vt 0.272500 0.588333 +vt 0.218750 0.596667 +vt 0.218750 0.591667 +vt 0.273750 0.676667 +vt 0.217500 0.688333 +vt 0.272500 0.778333 +vt 0.218750 0.770000 +vt 0.272500 0.768333 +vt 0.275000 0.548333 +vt 0.268750 0.628333 +vt 0.212500 0.636667 +vt 0.212500 0.631667 +vt 0.268750 0.738333 +vt 0.212500 0.730000 +vt 0.268750 0.728333 +vt 0.275000 0.838333 +vt 0.222500 0.828333 +vt 0.275000 0.826667 +vt 0.273750 0.688333 +vt 0.273750 0.798333 +vt 0.220000 0.790000 +vt 0.273750 0.788333 +vt 0.635000 0.583333 +vt 0.656250 0.563333 +vt 0.656250 0.583333 +vt 0.635000 0.743333 +vt 0.635000 0.843333 +vt 0.620000 0.843333 +vt 0.635000 0.703333 +vt 0.635000 0.803333 +vt 0.635000 0.563333 +vt 0.635000 0.663333 +vt 0.635000 0.763333 +vt 0.635000 0.603333 +vt 0.635000 0.523333 +vt 0.635000 0.543333 +vt 0.635000 0.723333 +vt 0.635000 0.823333 +vt 0.635000 0.683333 +vt 0.635000 0.783333 +vt 0.656250 0.686667 +vt 0.670000 0.698333 +vt 0.656250 0.701667 +vt 0.656250 0.763333 +vt 0.656250 0.603333 +vt 0.656250 0.623333 +vt 0.656250 0.783333 +vt 0.656250 0.643333 +vt 0.656250 0.803333 +vt 0.656250 0.663333 +vt 0.656250 0.823333 +vt 0.656250 0.683333 +vt 0.656250 0.843333 +vt 0.656250 0.703333 +vt 0.656250 0.523333 +vt 0.656250 0.543333 +vt 0.656250 0.723333 +vt 0.656250 0.743333 +vt 0.673750 0.798333 +vt 0.690000 0.790000 +vt 0.690000 0.796667 +vt 0.656250 0.541667 +vt 0.675000 0.530000 +vt 0.675000 0.540000 +vt 0.656250 0.705000 +vt 0.670000 0.716667 +vt 0.656250 0.720000 +vt 0.656250 0.561667 +vt 0.673750 0.550000 +vt 0.673750 0.560000 +vt 0.656250 0.725000 +vt 0.671250 0.736667 +vt 0.656250 0.740000 +vt 0.656250 0.581667 +vt 0.673750 0.570000 +vt 0.673750 0.580000 +vt 0.656250 0.746667 +vt 0.671250 0.758333 +vt 0.656250 0.761667 +vt 0.656250 0.620000 +vt 0.671250 0.608333 +vt 0.671250 0.618333 +vt 0.656250 0.601667 +vt 0.672500 0.590000 +vt 0.672500 0.600000 +vt 0.656250 0.768333 +vt 0.672500 0.780000 +vt 0.656250 0.781667 +vt 0.656250 0.641667 +vt 0.671250 0.630000 +vt 0.671250 0.640000 +vt 0.656250 0.786667 +vt 0.656250 0.801667 +vt 0.656250 0.661667 +vt 0.670000 0.650000 +vt 0.670000 0.660000 +vt 0.656250 0.806667 +vt 0.673750 0.816667 +vt 0.656250 0.820000 +vt 0.656250 0.681667 +vt 0.670000 0.670000 +vt 0.670000 0.680000 +vt 0.656250 0.826667 +vt 0.675000 0.836667 +vt 0.656250 0.840000 +vt 0.690000 0.571667 +vt 0.700000 0.576667 +vt 0.690000 0.578333 +vt 0.686250 0.658333 +vt 0.690000 0.808333 +vt 0.690000 0.815000 +vt 0.686206 0.678333 +vt 0.691250 0.828333 +vt 0.691250 0.835000 +vt 0.686250 0.690000 +vt 0.686250 0.696667 +vt 0.691250 0.538333 +vt 0.686250 0.708333 +vt 0.686250 0.715000 +vt 0.690000 0.558333 +vt 0.687500 0.728333 +vt 0.687500 0.735000 +vt 0.687500 0.750000 +vt 0.687500 0.756667 +vt 0.687500 0.616667 +vt 0.688750 0.598333 +vt 0.688750 0.771667 +vt 0.688750 0.778333 +vt 0.687500 0.638333 +vt 0.717500 0.551667 +vt 0.721250 0.555000 +vt 0.711250 0.565000 +vt 0.697500 0.751667 +vt 0.697500 0.755000 +vt 0.687500 0.610000 +vt 0.697500 0.615000 +vt 0.688750 0.591667 +vt 0.698750 0.596667 +vt 0.698750 0.773333 +vt 0.698750 0.776667 +vt 0.687500 0.631667 +vt 0.697500 0.636667 +vt 0.700000 0.791667 +vt 0.700000 0.795000 +vt 0.686250 0.651667 +vt 0.696250 0.656667 +vt 0.701250 0.810000 +vt 0.701250 0.813333 +vt 0.686250 0.671667 +vt 0.696250 0.676667 +vt 0.701250 0.830000 +vt 0.701250 0.833333 +vt 0.696250 0.691667 +vt 0.696250 0.695000 +vt 0.691250 0.531667 +vt 0.701250 0.536667 +vt 0.696250 0.710000 +vt 0.696250 0.713333 +vt 0.690000 0.551667 +vt 0.700000 0.556667 +vt 0.697500 0.730000 +vt 0.697500 0.733333 +vt 0.212500 0.735000 +vt 0.186250 0.731667 +vt 0.220000 0.571667 +vt 0.220000 0.576667 +vt 0.193750 0.575000 +vt 0.216250 0.755000 +vt 0.190000 0.753333 +vt 0.188750 0.613333 +vt 0.192500 0.595000 +vt 0.218750 0.775000 +vt 0.192500 0.773333 +vt 0.186250 0.635000 +vt 0.220000 0.795000 +vt 0.193750 0.791667 +vt 0.217500 0.668333 +vt 0.217500 0.675000 +vt 0.192500 0.671667 +vt 0.222500 0.816667 +vt 0.197500 0.813333 +vt 0.217500 0.680000 +vt 0.217500 0.686667 +vt 0.192500 0.683333 +vt 0.222500 0.835000 +vt 0.198750 0.831667 +vt 0.217500 0.690000 +vt 0.217500 0.696667 +vt 0.192500 0.693333 +vt 0.198750 0.535000 +vt 0.217500 0.701667 +vt 0.217500 0.708333 +vt 0.192500 0.705000 +vt 0.083750 0.290000 +vt 0.082500 0.125000 +vt 0.027500 0.141667 +vt 0.083750 0.290000 +vt 0.132500 0.141667 +vt 0.132500 0.141667 +vt 0.082500 0.125000 +vt 0.152500 0.130000 +vt 0.246250 0.413333 +vt 0.211250 0.413333 +vt 0.243750 0.406667 +vt 0.026250 0.111667 +vt 0.026250 0.125000 +vt 0.155000 0.130000 +vt 0.118750 0.101667 +vt 0.185000 0.078333 +vt 0.252500 0.101667 +vt 0.087500 0.081667 +vt 0.118750 0.078333 +vt 0.221250 0.111667 +vt 0.242500 0.111667 +vt 0.086250 0.111667 +vt 0.152500 0.130000 +vt 0.086250 0.111667 +vt 0.272500 0.440000 +vt 0.301250 0.440000 +vt 0.272500 0.453333 +vt 0.118750 0.101667 +vt 0.087500 0.081667 +vt 0.061250 0.101667 +vt 0.185000 0.078333 +vt 0.118750 0.078333 +vt 0.301250 0.490000 +vt 0.272500 0.490000 +vt 0.272500 0.476667 +vt 0.221250 0.111667 +vt 0.243750 0.420000 +vt 0.132500 0.141667 +vt 0.217500 0.465000 +vt 0.217500 0.453333 +vt 0.217500 0.476667 +vt 0.217500 0.440000 +vt 0.083750 0.290000 +vt 0.052500 0.295000 +vt 0.042500 0.290000 +vt 0.296250 0.465000 +vt 0.103750 0.321667 +vt 0.106250 0.498333 +vt 0.103750 0.498333 +vt 0.048750 0.321667 +vt 0.101250 0.498333 +vt 0.047500 0.498333 +vt 0.108750 0.498333 +vt 0.162500 0.321667 +vt 0.162500 0.498333 +vt 0.101250 0.321667 +vt 0.108750 0.321667 +vt 0.106250 0.321667 +vt 0.101250 0.500000 +vt 0.030000 0.498333 +vt 0.180000 0.498333 +vt 0.103750 0.321667 +vt 0.106250 0.498333 +vt 0.103750 0.498333 +vt 0.047500 0.321667 +vt 0.101250 0.498333 +vt 0.047500 0.498333 +vt 0.108297 0.498333 +vt 0.162500 0.321667 +vt 0.162500 0.498333 +vt 0.101250 0.321667 +vt 0.108750 0.321667 +vt 0.106250 0.321667 +vt 0.101250 0.500000 +vt 0.030000 0.498333 +vt 0.180000 0.498333 +vt 0.273750 0.568333 +vt 0.230000 0.885000 +vt 0.238750 0.930000 +vt 0.230000 0.930000 +vt 0.271250 0.743333 +vt 0.271250 0.623333 +vt 0.271250 0.603333 +vt 0.275000 0.543333 +vt 0.275000 0.523333 +vt 0.256250 0.885000 +vt 0.247500 0.930000 +vt 0.247500 0.885000 +vt 0.275000 0.803333 +vt 0.272500 0.603333 +vt 0.272500 0.583333 +vt 0.265000 0.885000 +vt 0.256250 0.930000 +vt 0.272500 0.763333 +vt 0.275000 0.563333 +vt 0.268750 0.643333 +vt 0.268750 0.623333 +vt 0.268750 0.723333 +vt 0.275000 0.823333 +vt 0.238750 0.885000 +vt 0.273750 0.783333 +vt 0.273750 0.583333 +vt 0.273750 0.563333 +vt 0.122500 0.990000 +vt 0.216250 0.971667 +vt 0.216250 0.990000 +vt 0.122500 0.916667 +vt 0.216250 0.935000 +vt 0.122500 0.935000 +vt 0.122500 0.971667 +vt 0.216250 0.953333 +vt 0.122500 0.953333 +vt 0.333750 0.885000 +vt 0.318750 0.928333 +vt 0.318750 0.885000 +vt 0.303750 0.928333 +vt 0.303750 0.885000 +vt 0.288750 0.885000 +vt 0.288750 0.928333 +vt 0.333750 0.986667 +vt 0.240000 0.941667 +vt 0.333750 0.941667 +vt 0.333750 0.941667 +vt 0.240000 0.986667 +vt 0.240000 0.941667 +vt 0.273750 0.885000 +vt 0.273750 0.928333 +vt 0.435000 0.963333 +vt 0.415000 0.976667 +vt 0.435000 0.976667 +vt 0.435000 0.950000 +vt 0.415000 0.963333 +vt 0.435000 0.936667 +vt 0.415000 0.950000 +vt 0.435000 0.923333 +vt 0.415000 0.936667 +vt 0.450000 0.936667 +vt 0.450000 0.963333 +vt 0.465000 0.950000 +vt 0.450000 0.950000 +vt 0.415000 0.923333 +vt 0.400000 0.936667 +vt 0.400000 0.950000 +vt 0.450000 0.976667 +vt 0.400000 0.963333 +vt 0.385000 0.950000 +vt 0.462500 0.936667 +vt 0.450000 0.923333 +vt 0.400000 0.923333 +vt 0.387500 0.936667 +vt 0.462500 0.963333 +vt 0.387500 0.963333 +vt 0.400000 0.976667 +vt 0.435000 0.923333 +vt 0.415000 0.936667 +vt 0.415000 0.923333 +vt 0.435000 0.936667 +vt 0.415000 0.950000 +vt 0.435000 0.950000 +vt 0.415000 0.963333 +vt 0.435000 0.963333 +vt 0.415000 0.976667 +vt 0.400000 0.963333 +vt 0.400000 0.936667 +vt 0.385000 0.950000 +vt 0.385000 0.936667 +vt 0.450000 0.976667 +vt 0.435000 0.976667 +vt 0.450000 0.950000 +vt 0.400000 0.950000 +vt 0.450000 0.963333 +vt 0.400000 0.923333 +vt 0.450000 0.936667 +vt 0.465000 0.950000 +vt 0.465000 0.963333 +vt 0.400000 0.976667 +vt 0.387500 0.963333 +vt 0.462500 0.963333 +vt 0.462500 0.976667 +vt 0.387500 0.936667 +vt 0.387500 0.923333 +vt 0.450000 0.923333 +vt 0.462500 0.936667 +vt 0.143750 0.846667 +vt 0.136250 0.828333 +vt 0.143750 0.828333 +vt 0.136250 0.846667 +vt 0.128750 0.828333 +vt 0.121250 0.846667 +vt 0.121250 0.828333 +vt 0.113750 0.846667 +vt 0.113750 0.828333 +vt 0.106250 0.828333 +vt 0.076250 0.898333 +vt 0.068750 0.908333 +vt 0.068750 0.898333 +vt 0.158750 0.846667 +vt 0.151250 0.875000 +vt 0.151250 0.846667 +vt 0.151250 0.828333 +vt 0.158750 0.828333 +vt 0.128750 0.875000 +vt 0.128750 0.846667 +vt 0.113750 0.805000 +vt 0.106250 0.875000 +vt 0.106250 0.846667 +vt 0.128750 0.805000 +vt 0.151250 0.805000 +vt 0.143750 0.805000 +vt 0.121250 0.875000 +vt 0.143750 0.875000 +vt 0.136250 0.875000 +vt 0.166250 0.805000 +vt 0.166250 0.828333 +vt 0.166250 0.846667 +vt 0.158750 0.875000 +vt 0.121250 0.805000 +vt 0.113750 0.875000 +vt 0.136250 0.805000 +vt 0.158750 0.805000 +vt 0.125000 0.726667 +vt 0.155000 0.726667 +vt 0.141250 0.908333 +vt 0.138750 0.908333 +vt 0.117500 0.726667 +vt 0.147500 0.726667 +vt 0.140000 0.726667 +vt 0.106250 0.805000 +vt 0.110000 0.726667 +vt 0.102500 0.871667 +vt 0.101250 0.878333 +vt 0.096250 0.876667 +vt 0.132500 0.726667 +vt 0.162500 0.726667 +vt 0.131250 0.908333 +vt 0.123750 0.908333 +vt 0.116250 0.908333 +vt 0.108750 0.908333 +vt 0.166250 0.875000 +vt 0.161250 0.908333 +vt 0.153750 0.908333 +vt 0.146250 0.908333 +vt 0.055000 0.908333 +vt 0.055000 0.898333 +vt 0.090000 0.898333 +vt 0.076250 0.908333 +vt 0.097500 0.898333 +vt 0.090000 0.908333 +vt 0.075000 0.626667 +vt 0.047500 0.610000 +vt 0.075000 0.608333 +vt 0.047500 0.606667 +vt 0.075000 0.596667 +vt 0.047500 0.586667 +vt 0.075000 0.585000 +vt 0.047500 0.583333 +vt 0.075000 0.566667 +vt 0.047500 0.565000 +vt 0.075000 0.555000 +vt 0.047500 0.553333 +vt 0.075000 0.543333 +vt 0.031250 0.600000 +vt 0.047500 0.598333 +vt 0.075000 0.650000 +vt 0.047500 0.640000 +vt 0.075000 0.638333 +vt 0.047500 0.628333 +vt 0.033750 0.558333 +vt 0.047500 0.556667 +vt 0.033750 0.635000 +vt 0.033750 0.630000 +vt 0.047500 0.626667 +vt 0.033750 0.621667 +vt 0.031250 0.593333 +vt 0.031250 0.586667 +vt 0.033750 0.546667 +vt 0.047500 0.545000 +vt 0.047500 0.566667 +vt 0.033750 0.571667 +vt 0.033750 0.566667 +vt 0.033750 0.646667 +vt 0.033750 0.640000 +vt 0.101250 0.626667 +vt 0.128750 0.618333 +vt 0.128750 0.625000 +vt 0.101250 0.585000 +vt 0.101250 0.608333 +vt 0.101250 0.566667 +vt 0.101250 0.638333 +vt 0.101250 0.596667 +vt 0.128750 0.630000 +vt 0.128750 0.636667 +vt 0.101250 0.543333 +vt 0.128750 0.551667 +vt 0.101250 0.555000 +vt 0.128750 0.575000 +vt 0.128750 0.601667 +vt 0.128750 0.606667 +vt 0.101250 0.650000 +vt 0.128750 0.641667 +vt 0.128750 0.646667 +vt 0.128750 0.563333 +vt 0.128750 0.591667 +vt 0.627500 0.311667 +vt 0.637500 0.313333 +vt 0.627500 0.316667 +vt 0.902500 0.131667 +vt 0.671250 0.191667 +vt 0.673750 0.131667 +vt 0.633750 0.133333 +vt 0.643750 0.138333 +vt 0.645000 0.171667 +vt 0.387500 0.311667 +vt 0.330000 0.318333 +vt 0.330000 0.310000 +vt 0.663750 0.315000 +vt 0.638750 0.311667 +vt 0.663750 0.311667 +vt 0.387500 0.318333 +vt 0.620000 0.315000 +vt 0.620000 0.318333 +vt 0.636250 0.193333 +vt 0.398750 0.133333 +vt 0.682500 0.311667 +vt 0.825000 0.295000 +vt 0.765000 0.306667 +vt 0.765000 0.295000 +vt 0.732500 0.310000 +vt 0.726250 0.295000 +vt 0.960000 0.238333 +vt 0.902500 0.238333 +vt 0.340000 0.241667 +vt 0.340000 0.133333 +vt 0.308750 0.310000 +vt 0.980000 0.131667 +vt 0.980000 0.268333 +vt 0.318750 0.133333 +vt 0.307500 0.130000 +vt 0.318750 0.130000 +vt 0.673750 0.128333 +vt 0.671250 0.130000 +vt 0.633750 0.130000 +vt 0.636250 0.131667 +vt 0.902500 0.128333 +vt 0.398750 0.130000 +vt 0.340000 0.130000 +vt 0.960000 0.128333 +vt 0.960000 0.131667 +vt 0.980000 0.128333 +vt 0.662500 0.168333 +vt 0.662500 0.136667 +vt 0.075000 0.626667 +vt 0.047500 0.610000 +vt 0.075000 0.608333 +vt 0.047500 0.606667 +vt 0.075000 0.596667 +vt 0.047500 0.586667 +vt 0.075000 0.585000 +vt 0.047500 0.583333 +vt 0.075000 0.566667 +vt 0.047500 0.565000 +vt 0.075000 0.555000 +vt 0.047500 0.553333 +vt 0.075000 0.543333 +vt 0.031250 0.600000 +vt 0.047500 0.598333 +vt 0.075000 0.650000 +vt 0.047500 0.640000 +vt 0.075000 0.638333 +vt 0.047500 0.628333 +vt 0.101250 0.543333 +vt 0.101250 0.555000 +vt 0.033750 0.558333 +vt 0.047500 0.556667 +vt 0.033750 0.635000 +vt 0.033750 0.630000 +vt 0.047500 0.626667 +vt 0.033750 0.621667 +vt 0.031250 0.593333 +vt 0.031250 0.586667 +vt 0.033750 0.546667 +vt 0.047500 0.545000 +vt 0.047500 0.566667 +vt 0.033750 0.571667 +vt 0.033750 0.566667 +vt 0.033750 0.646667 +vt 0.033750 0.640000 +vt 0.101250 0.626667 +vt 0.128750 0.618333 +vt 0.128750 0.625000 +vt 0.101250 0.585000 +vt 0.101250 0.650000 +vt 0.101250 0.608333 +vt 0.101250 0.566667 +vt 0.101250 0.638333 +vt 0.101250 0.596667 +vt 0.128750 0.630000 +vt 0.128750 0.636667 +vt 0.128750 0.551667 +vt 0.128750 0.575000 +vt 0.128750 0.601667 +vt 0.128750 0.606667 +vt 0.128750 0.641667 +vt 0.128750 0.646667 +vt 0.128750 0.563333 +vt 0.128750 0.591667 +vt 0.297500 0.318333 +vt 0.297500 0.310000 +vt 0.310000 0.273333 +vt 0.307500 0.133333 +vt 0.136250 0.828333 +vt 0.143750 0.846667 +vt 0.143750 0.828333 +vt 0.128750 0.828333 +vt 0.136250 0.846667 +vt 0.121250 0.828333 +vt 0.128750 0.846667 +vt 0.113750 0.828333 +vt 0.121250 0.846667 +vt 0.106250 0.828333 +vt 0.113750 0.846667 +vt 0.068750 0.908333 +vt 0.076250 0.898333 +vt 0.068750 0.898333 +vt 0.151250 0.875000 +vt 0.158750 0.846667 +vt 0.151250 0.846667 +vt 0.151250 0.828333 +vt 0.158750 0.828333 +vt 0.128750 0.875000 +vt 0.113750 0.805000 +vt 0.106250 0.875000 +vt 0.106250 0.846667 +vt 0.128750 0.805000 +vt 0.151250 0.805000 +vt 0.143750 0.805000 +vt 0.121250 0.875000 +vt 0.143750 0.875000 +vt 0.136250 0.875000 +vt 0.166250 0.805000 +vt 0.166250 0.828333 +vt 0.158750 0.875000 +vt 0.166250 0.846667 +vt 0.121250 0.805000 +vt 0.113750 0.875000 +vt 0.136250 0.805000 +vt 0.158750 0.805000 +vt 0.125000 0.726667 +vt 0.155000 0.726667 +vt 0.141250 0.908333 +vt 0.117500 0.726667 +vt 0.147500 0.726667 +vt 0.140000 0.726667 +vt 0.110000 0.726667 +vt 0.106250 0.805000 +vt 0.097500 0.878333 +vt 0.101250 0.878333 +vt 0.102500 0.876667 +vt 0.132500 0.726667 +vt 0.162500 0.726667 +vt 0.131250 0.908333 +vt 0.123750 0.908333 +vt 0.116250 0.908333 +vt 0.111250 0.908333 +vt 0.161250 0.908333 +vt 0.166250 0.875000 +vt 0.156250 0.908333 +vt 0.146250 0.908333 +vt 0.055000 0.908333 +vt 0.055000 0.898333 +vt 0.076250 0.908333 +vt 0.090000 0.898333 +vt 0.090000 0.908333 +vt 0.097500 0.898333 +vt 0.075000 0.626667 +vt 0.047500 0.610000 +vt 0.047500 0.626667 +vt 0.075000 0.596667 +vt 0.047500 0.606667 +vt 0.075000 0.608333 +vt 0.047500 0.586667 +vt 0.047500 0.595000 +vt 0.075000 0.566667 +vt 0.047500 0.583333 +vt 0.075000 0.585000 +vt 0.075000 0.555000 +vt 0.047500 0.565000 +vt 0.075000 0.543333 +vt 0.047500 0.553333 +vt 0.031250 0.600000 +vt 0.047500 0.598333 +vt 0.075000 0.650000 +vt 0.047500 0.640000 +vt 0.047500 0.648333 +vt 0.075000 0.638333 +vt 0.047500 0.628333 +vt 0.047500 0.636667 +vt 0.033750 0.558333 +vt 0.047500 0.556667 +vt 0.033750 0.635000 +vt 0.033750 0.621667 +vt 0.031250 0.593333 +vt 0.033750 0.546667 +vt 0.047500 0.545000 +vt 0.047500 0.566667 +vt 0.033750 0.571667 +vt 0.033750 0.646667 +vt 0.101250 0.626667 +vt 0.128750 0.618333 +vt 0.101250 0.608333 +vt 0.101250 0.585000 +vt 0.101250 0.566667 +vt 0.101250 0.638333 +vt 0.101250 0.596667 +vt 0.128750 0.630000 +vt 0.128750 0.551667 +vt 0.101250 0.543333 +vt 0.101250 0.555000 +vt 0.128750 0.575000 +vt 0.128750 0.601667 +vt 0.101250 0.650000 +vt 0.128750 0.641667 +vt 0.128750 0.563333 +vt 0.128750 0.591667 +vt 0.075000 0.626667 +vt 0.047500 0.610000 +vt 0.047500 0.626667 +vt 0.075000 0.596667 +vt 0.047500 0.606667 +vt 0.075000 0.608333 +vt 0.047500 0.586667 +vt 0.047500 0.595000 +vt 0.075000 0.566667 +vt 0.047500 0.583333 +vt 0.075000 0.585000 +vt 0.075000 0.555000 +vt 0.047500 0.565000 +vt 0.075000 0.543333 +vt 0.047500 0.553333 +vt 0.031250 0.600000 +vt 0.047500 0.598333 +vt 0.075000 0.650000 +vt 0.047500 0.640000 +vt 0.047500 0.648333 +vt 0.075000 0.638333 +vt 0.047500 0.628333 +vt 0.047500 0.636667 +vt 0.101250 0.543333 +vt 0.033750 0.558333 +vt 0.047500 0.556667 +vt 0.033750 0.635000 +vt 0.033750 0.621667 +vt 0.031250 0.593333 +vt 0.033750 0.546667 +vt 0.047500 0.545000 +vt 0.047500 0.566667 +vt 0.033750 0.571667 +vt 0.033750 0.646667 +vt 0.101250 0.626667 +vt 0.128750 0.618333 +vt 0.101250 0.608333 +vt 0.101250 0.585000 +vt 0.101250 0.650000 +vt 0.101250 0.566667 +vt 0.101250 0.596667 +vt 0.101250 0.638333 +vt 0.128750 0.630000 +vt 0.128750 0.551667 +vt 0.101250 0.555000 +vt 0.128750 0.575000 +vt 0.128750 0.601667 +vt 0.128750 0.641667 +vt 0.128750 0.563333 +vt 0.128750 0.591667 +vt 0.271250 0.618333 +vt 0.275000 0.540000 +vt 0.217500 0.711667 +vt 0.272500 0.598333 +vt 0.275000 0.560000 +vt 0.268750 0.638333 +vt 0.670000 0.688333 +vt 0.673750 0.788333 +vt 0.656250 0.526667 +vt 0.670000 0.706667 +vt 0.656250 0.546667 +vt 0.671250 0.726667 +vt 0.656250 0.566667 +vt 0.671250 0.748333 +vt 0.656250 0.605000 +vt 0.656250 0.586667 +vt 0.672500 0.770000 +vt 0.656250 0.626667 +vt 0.656250 0.646667 +vt 0.673750 0.806667 +vt 0.656250 0.666667 +vt 0.675000 0.826667 +vt 0.700000 0.573333 +vt 0.722500 0.558333 +vt 0.722500 0.561667 +vt 0.721250 0.565000 +vt 0.720000 0.566667 +vt 0.717500 0.568333 +vt 0.715000 0.568333 +vt 0.712500 0.566667 +vt 0.710000 0.561667 +vt 0.712500 0.553333 +vt 0.710000 0.558333 +vt 0.711250 0.555000 +vt 0.715000 0.551667 +vt 0.720000 0.553333 +vt 0.697500 0.611667 +vt 0.698750 0.593333 +vt 0.697500 0.633333 +vt 0.696250 0.653333 +vt 0.696250 0.673333 +vt 0.701250 0.533333 +vt 0.700000 0.553333 +vt 0.061250 0.101610 +vt 0.252500 0.101667 +vt 0.217500 0.490000 +vt 0.108750 0.500000 +vt 0.108750 0.516667 +vt 0.101250 0.516667 +vt 0.105000 0.538333 +vt 0.030000 0.321667 +vt 0.180000 0.321667 +vt 0.108750 0.500000 +vt 0.108750 0.516667 +vt 0.101250 0.516667 +vt 0.105000 0.538333 +vt 0.030000 0.321667 +vt 0.180000 0.321667 +vt 0.273750 0.578333 +vt 0.271250 0.763333 +vt 0.265000 0.930000 +vt 0.272500 0.783333 +vt 0.268750 0.743333 +vt 0.275000 0.843333 +vt 0.273750 0.803333 +vt 0.216250 0.916667 +vt 0.333750 0.928333 +vt 0.240000 0.986667 +vt 0.333750 0.986667 +vt 0.465000 0.963333 +vt 0.385000 0.963333 +vt 0.465000 0.936667 +vt 0.385000 0.936667 +vt 0.462500 0.923333 +vt 0.387500 0.923333 +vt 0.462500 0.976667 +vt 0.387500 0.976667 +vt 0.465000 0.936667 +vt 0.385000 0.963333 +vt 0.387500 0.976667 +vt 0.462500 0.923333 +vt 0.097500 0.870000 +vt 0.101250 0.870000 +vt 0.102500 0.876667 +vt 0.097500 0.878333 +vt 0.096250 0.871667 +vt 0.133750 0.908333 +vt 0.126250 0.908333 +vt 0.118750 0.908333 +vt 0.111250 0.908333 +vt 0.163750 0.908333 +vt 0.156250 0.908333 +vt 0.148750 0.908333 +vt 0.097500 0.908333 +vt 0.047500 0.595000 +vt 0.031250 0.606667 +vt 0.047500 0.648333 +vt 0.047500 0.636667 +vt 0.033750 0.563333 +vt 0.033750 0.626667 +vt 0.033750 0.553333 +vt 0.128750 0.546667 +vt 0.128750 0.568333 +vt 0.128750 0.558333 +vt 0.128750 0.586667 +vt 0.637500 0.316667 +vt 0.625000 0.315000 +vt 0.625000 0.311667 +vt 0.638750 0.315000 +vt 0.398750 0.241667 +vt 0.308750 0.318333 +vt 0.047500 0.595000 +vt 0.031250 0.606667 +vt 0.047500 0.648333 +vt 0.047500 0.636667 +vt 0.033750 0.563333 +vt 0.033750 0.626667 +vt 0.033750 0.553333 +vt 0.128750 0.546667 +vt 0.128750 0.568333 +vt 0.128750 0.558333 +vt 0.128750 0.586667 +vt 0.307500 0.273333 +vt 0.138750 0.908333 +vt 0.102500 0.871667 +vt 0.101250 0.870000 +vt 0.097500 0.870000 +vt 0.096250 0.871667 +vt 0.096250 0.876667 +vt 0.133750 0.908333 +vt 0.126250 0.908333 +vt 0.118750 0.908333 +vt 0.108750 0.908333 +vt 0.163750 0.908333 +vt 0.153750 0.908333 +vt 0.148750 0.908333 +vt 0.097500 0.908333 +vt 0.031250 0.606667 +vt 0.033750 0.563333 +vt 0.033750 0.630000 +vt 0.033750 0.626667 +vt 0.031250 0.586667 +vt 0.033750 0.553333 +vt 0.033750 0.566667 +vt 0.033750 0.640000 +vt 0.128750 0.625000 +vt 0.128750 0.636667 +vt 0.128750 0.546667 +vt 0.128750 0.568333 +vt 0.128750 0.606667 +vt 0.128750 0.646667 +vt 0.128750 0.558333 +vt 0.128750 0.586667 +vt 0.031250 0.606667 +vt 0.033750 0.563333 +vt 0.033750 0.630000 +vt 0.033750 0.626667 +vt 0.031250 0.586667 +vt 0.033750 0.553333 +vt 0.033750 0.566667 +vt 0.033750 0.640000 +vt 0.128750 0.625000 +vt 0.128750 0.636667 +vt 0.128750 0.546667 +vt 0.128750 0.568333 +vt 0.128750 0.606667 +vt 0.128750 0.646667 +vt 0.128750 0.558333 +vt 0.128750 0.586667 +vn 1.0000 0.0000 0.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.8658 0.0000 0.5004 +vn -0.0459 -0.9989 0.0110 +vn 0.0000 1.0000 -0.0000 +vn 1.0000 0.0000 0.0058 +vn 0.0160 0.0000 0.9999 +vn 0.9998 0.0000 0.0212 +vn -0.0429 0.9991 -0.0002 +vn -0.4367 0.0000 0.8996 +vn -0.9999 0.0000 -0.0145 +vn -0.6499 0.0000 0.7600 +vn -0.0432 -0.9957 0.0823 +vn -0.0432 0.9973 0.0593 +vn -0.0000 -1.0000 -0.0000 +vn 0.3704 0.9289 -0.0002 +vn 0.3671 -0.9285 -0.0559 +vn 0.3514 0.9109 -0.2165 +vn 0.3704 0.9288 0.0078 +vn 0.3711 -0.9284 0.0190 +vn 0.3704 0.9289 0.0022 +vn 0.3704 -0.9286 0.0237 +vn 0.3704 0.9289 0.0000 +vn 0.3707 -0.9288 0.0000 +vn -0.0405 -0.9933 0.1083 +vn 1.0000 0.0000 -0.0005 +vn -0.0377 0.9993 0.0000 +vn -0.0471 -0.9988 -0.0103 +vn -0.0471 -0.9988 0.0103 +vn -0.0430 -0.9990 0.0116 +vn -0.0535 0.9883 -0.1431 +vn -0.0465 0.9989 -0.0010 +vn -0.6399 0.5727 0.5124 +vn -0.0001 -0.9997 0.0232 +vn 0.3705 -0.9286 0.0190 +vn 0.3705 -0.9285 0.0237 +vn 0.0119 -0.9743 0.2249 +vn 0.0035 -0.9751 0.2219 +vn 0.0810 0.0057 -0.9967 +vn -0.1343 -0.3904 -0.9108 +vn -0.0938 -0.0125 -0.9955 +vn 0.0630 -0.3770 -0.9241 +vn -0.0927 -0.6622 -0.7436 +vn 0.0473 -0.7034 -0.7093 +vn -0.0000 -0.9239 -0.3827 +vn 0.0367 -0.9224 -0.3845 +vn 0.0329 -0.9995 -0.0000 +vn -0.0000 -0.9239 0.3827 +vn 0.0367 -0.9224 0.3845 +vn -0.0927 -0.6622 0.7436 +vn 0.0473 -0.7034 0.7093 +vn -0.1343 -0.3904 0.9108 +vn 0.0630 -0.3770 0.9241 +vn -0.0938 -0.0125 0.9955 +vn 0.0810 0.0057 0.9967 +vn -0.0550 0.3723 0.9265 +vn 0.0986 0.3856 0.9174 +vn -0.0249 0.7017 0.7120 +vn 0.1131 0.7053 0.6998 +vn -0.0070 0.9226 0.3858 +vn 0.1226 0.9177 0.3779 +vn -0.0014 1.0000 0.0000 +vn 0.1259 0.9920 0.0000 +vn -0.0070 0.9226 -0.3858 +vn 0.1226 0.9177 -0.3779 +vn -0.0249 0.7017 -0.7120 +vn 0.2507 -0.3642 -0.8969 +vn 0.1960 -0.6891 -0.6976 +vn 0.1131 0.7053 -0.6998 +vn -0.0550 0.3723 -0.9265 +vn 0.0986 0.3856 -0.9174 +vn -0.1689 0.9518 -0.2560 +vn -0.2026 0.8198 -0.5356 +vn -0.9999 0.0152 -0.0000 +vn -0.3334 -0.6673 -0.6660 +vn -0.3677 -0.8964 -0.2474 +vn -0.3703 -0.7707 -0.5186 +vn -0.1850 0.0004 0.9827 +vn -0.3649 -0.4770 0.7996 +vn -0.2728 -0.4089 0.8708 +vn -0.1850 0.0004 -0.9827 +vn -0.3649 -0.4770 -0.7996 +vn -0.3264 0.0192 -0.9450 +vn -0.0032 1.0000 0.0000 +vn -0.1583 0.9874 0.0000 +vn -0.3334 -0.6673 0.6660 +vn -0.3677 -0.8964 0.2474 +vn -0.3863 -0.8696 0.3074 +vn -0.0117 0.9403 0.3403 +vn -0.2026 0.8198 0.5356 +vn -0.0419 0.7512 0.6588 +vn -0.1008 0.4241 -0.9000 +vn -0.2608 0.5178 -0.8148 +vn -0.3863 -0.8696 -0.3074 +vn -0.3669 -0.9303 -0.0000 +vn -0.1008 0.4241 0.9000 +vn -0.3264 0.0192 0.9450 +vn -0.0117 0.9403 -0.3403 +vn -0.2728 -0.4089 -0.8708 +vn -0.3703 -0.7707 0.5186 +vn -0.1689 0.9518 0.2560 +vn -0.3977 -0.9175 -0.0000 +vn -0.2608 0.5178 0.8148 +vn 0.3630 0.3606 -0.8592 +vn 0.6235 0.5508 -0.5548 +vn 0.5707 0.3111 -0.7599 +vn 0.2507 -0.3642 0.8969 +vn 0.4384 0.8988 0.0000 +vn 0.1571 -0.9110 0.3812 +vn 0.4042 0.6486 0.6449 +vn 0.4042 0.6486 -0.6449 +vn 0.1571 -0.9110 -0.3812 +vn 0.3097 0.0059 0.9508 +vn 0.3097 0.0059 -0.9508 +vn 0.4298 0.8347 -0.3444 +vn 0.1960 -0.6891 0.6976 +vn 0.4298 0.8347 0.3444 +vn 0.1430 -0.9897 -0.0000 +vn 0.3630 0.3606 0.8592 +vn 0.2476 -0.9689 0.0000 +vn 0.3523 -0.8680 0.3499 +vn 0.2698 -0.8895 0.3687 +vn 0.4980 -0.0029 0.8672 +vn 0.4980 -0.0029 -0.8672 +vn 0.4128 -0.3500 -0.8409 +vn 0.5707 0.3111 0.7599 +vn 0.3303 -0.6676 -0.6672 +vn 0.6235 0.5508 0.5548 +vn 0.2698 -0.8895 -0.3687 +vn 0.6547 0.6978 0.2907 +vn 0.6649 0.7469 -0.0000 +vn 0.6547 0.6978 -0.2907 +vn 0.3303 -0.6676 0.6672 +vn 0.4128 -0.3500 0.8409 +vn 0.5478 0.5836 0.5994 +vn 0.4691 0.3372 0.8162 +vn 0.4631 0.6263 0.6271 +vn 0.5732 0.8194 0.0000 +vn 0.5669 0.7589 -0.3205 +vn 0.3827 -0.6643 0.6421 +vn 0.5478 0.5836 -0.5994 +vn 0.4269 -0.3638 0.8279 +vn 0.5161 0.3131 -0.7973 +vn 0.4737 -0.0189 0.8805 +vn 0.4737 -0.0189 -0.8805 +vn 0.4257 -0.3636 -0.8286 +vn 0.5161 0.3131 0.7973 +vn 0.3827 -0.6643 -0.6421 +vn 0.3523 -0.8680 -0.3499 +vn 0.5669 0.7589 0.3205 +vn 0.3415 -0.9399 0.0000 +vn 0.4631 0.6263 -0.6271 +vn 0.8540 0.2014 -0.4797 +vn 0.4691 0.3372 -0.8162 +vn 0.4920 -0.8044 -0.3329 +vn 0.4591 0.8206 0.3403 +vn 0.4933 -0.8699 -0.0000 +vn 0.4577 0.8891 0.0000 +vn 0.4920 -0.8044 0.3329 +vn 0.4591 0.8206 -0.3403 +vn 0.4883 -0.6175 0.6167 +vn 0.4827 -0.3358 0.8088 +vn 0.4759 -0.0008 0.8795 +vn 0.4827 -0.3358 -0.8088 +vn 0.4759 -0.0008 -0.8795 +vn 0.4883 -0.6175 -0.6167 +vn 0.8654 -0.5011 0.0000 +vn 0.8631 -0.3559 -0.3584 +vn 0.8512 0.3725 0.3698 +vn 0.8604 -0.1928 0.4717 +vn 0.8572 0.0026 0.5149 +vn 0.8604 -0.1928 -0.4717 +vn 0.8572 0.0026 -0.5149 +vn 0.8540 0.2014 0.4797 +vn 0.8648 -0.4635 -0.1931 +vn 0.8493 0.4881 0.2010 +vn 0.8486 0.5290 -0.0000 +vn 0.8648 -0.4635 0.1931 +vn 0.8493 0.4881 -0.2010 +vn 0.8631 -0.3559 0.3584 +vn 0.8512 0.3725 -0.3698 +vn 0.2304 0.6351 -0.7372 +vn -0.0556 0.0738 -0.9957 +vn -0.0764 0.0081 -0.9970 +vn 0.6917 0.7222 -0.0000 +vn 0.2932 0.2402 0.9254 +vn 0.5995 0.8004 0.0000 +vn -0.0477 0.0732 0.9962 +vn 0.1893 0.5721 0.7980 +vn -0.2282 0.9736 0.0000 +vn 0.2304 0.6351 0.7372 +vn -0.9997 0.0243 0.0000 +vn -0.0708 -0.0046 -0.9975 +vn 0.2401 0.9707 -0.0000 +vn -0.0307 0.3710 0.9281 +vn 0.0147 0.6209 0.7838 +vn 0.1072 0.7709 0.6279 +vn -0.0940 0.2428 0.9655 +vn -0.0321 0.0475 0.9984 +vn 0.1421 0.9899 0.0000 +vn 0.1893 0.5721 -0.7980 +vn -0.0307 0.3710 -0.9281 +vn -0.3565 -0.6551 0.6661 +vn -0.0940 0.2428 -0.9655 +vn 0.0147 0.6209 -0.7838 +vn -0.0321 0.0475 -0.9984 +vn -0.3565 -0.6551 -0.6661 +vn 0.1072 0.7709 -0.6279 +vn 0.2892 0.2425 -0.9260 +vn -0.0185 -0.9506 0.3099 +vn -0.0185 -0.9506 -0.3099 +vn -0.0938 0.0570 0.9940 +vn -0.0768 0.0053 0.9970 +vn -0.0708 -0.0046 0.9975 +vn -0.0938 0.0570 -0.9940 +vn 0.9098 0.3822 -0.1619 +vn 0.9036 -0.3973 -0.1603 +vn 0.9036 0.3973 -0.1603 +vn -0.1043 0.9944 -0.0158 +vn 0.3414 0.9380 -0.0604 +vn -0.0931 0.9956 -0.0133 +vn 0.3414 -0.9380 -0.0604 +vn -0.1043 -0.9944 -0.0158 +vn -0.0931 -0.9956 -0.0133 +vn 0.3955 0.9158 -0.0703 +vn 0.3955 -0.9158 -0.0703 +vn 0.9098 -0.3822 -0.1619 +vn 0.0000 0.0000 -1.0000 +vn -0.2024 0.9789 -0.0291 +vn -0.2024 -0.9789 -0.0291 +vn 0.9098 -0.3822 0.1619 +vn 0.9036 0.3973 0.1603 +vn 0.9036 -0.3973 0.1603 +vn -0.1043 -0.9944 0.0158 +vn 0.3414 -0.9380 0.0604 +vn -0.0931 -0.9956 0.0133 +vn 0.3414 0.9380 0.0604 +vn -0.1043 0.9944 0.0158 +vn -0.0931 0.9956 0.0133 +vn 0.3955 -0.9158 0.0704 +vn 0.3955 0.9158 0.0703 +vn 0.9098 0.3822 0.1619 +vn -0.0000 0.0000 1.0000 +vn -0.2024 -0.9789 0.0291 +vn -0.2024 0.9789 0.0291 +vn -0.0419 0.7512 -0.6588 +vn 0.1769 -0.8514 0.4938 +vn 0.1911 -0.9199 0.3424 +vn 0.1922 -0.9249 -0.3279 +vn 0.2034 -0.9791 0.0000 +vn 0.1769 -0.8514 -0.4938 +vn 0.1911 -0.9199 -0.3424 +vn 0.1922 -0.9249 0.3279 +vn -0.3601 -0.7774 -0.5156 +vn -0.3792 -0.8660 -0.3260 +vn -0.3595 -0.8072 -0.4682 +vn -0.3601 -0.7774 0.5156 +vn -0.3792 -0.8660 0.3260 +vn -0.3829 -0.8572 0.3443 +vn -0.3829 -0.8572 -0.3443 +vn -0.3946 -0.9188 0.0000 +vn -0.0478 0.2298 -0.9721 +vn -0.1878 0.9036 -0.3850 +vn -0.1892 0.9107 -0.3673 +vn -0.2034 0.9791 0.0000 +vn -0.1892 0.9107 0.3673 +vn -0.1878 0.9036 0.3850 +vn 0.0460 -0.2216 -0.9740 +vn -0.1276 0.6143 -0.7787 +vn -0.0478 0.2298 0.9721 +vn 0.0460 -0.2216 0.9740 +vn -0.1276 0.6143 0.7787 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.3827 -0.9239 +vn -0.2584 -0.0301 -0.9656 +vn -0.2138 -0.9758 -0.0466 +vn -0.5821 -0.5915 -0.5579 +vn -0.2876 -0.6718 -0.6826 +vn 0.2584 -0.0301 -0.9656 +vn 0.2876 -0.6718 -0.6826 +vn -0.0962 -0.9196 0.3809 +vn 0.2138 -0.9758 -0.0466 +vn 0.5821 -0.5915 -0.5579 +vn -0.4781 0.0910 -0.8736 +vn -0.2081 0.3743 -0.9036 +vn 0.2081 0.3743 -0.9036 +vn 0.4781 0.0910 -0.8736 +vn -0.3220 -0.9376 0.1309 +vn 0.3220 -0.9376 0.1309 +vn 0.0962 -0.9196 0.3809 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.3827 0.9239 +vn -0.2584 -0.0301 0.9656 +vn -0.2138 -0.9758 0.0466 +vn -0.5821 -0.5915 0.5579 +vn -0.3220 -0.9376 -0.1309 +vn 0.2081 0.3743 0.9036 +vn 0.2876 -0.6718 0.6826 +vn -0.2876 -0.6718 0.6826 +vn 0.2584 -0.0301 0.9656 +vn -0.0962 -0.9196 -0.3809 +vn 0.2138 -0.9758 0.0466 +vn 0.5821 -0.5915 0.5579 +vn 0.4781 0.0910 0.8736 +vn -0.2081 0.3743 0.9037 +vn -0.4781 0.0910 0.8736 +vn 0.3582 0.3573 0.8626 +vn -0.1649 -0.9112 -0.3774 +vn 0.0962 -0.9196 -0.3809 +vn 0.3220 -0.9376 -0.1309 +vn 0.0000 -0.3827 -0.9239 +vn -0.0000 -0.3827 0.9239 +vn -0.2811 0.6786 0.6786 +vn 0.2811 0.6786 -0.6786 +vn 0.7071 0.0000 0.7071 +vn 0.2811 0.6786 0.6786 +vn 0.1290 0.3795 -0.9162 +vn -0.2811 0.6786 -0.6786 +vn 0.1290 -0.9162 0.3795 +vn -0.0842 0.3813 0.9206 +vn 0.1290 0.9162 0.3795 +vn -0.0842 -0.9206 0.3813 +vn -0.0842 0.3813 -0.9206 +vn -0.0842 -0.3813 -0.9206 +vn 0.1290 -0.3795 0.9162 +vn 0.1290 -0.3795 -0.9162 +vn 0.1290 -0.9162 -0.3795 +vn -0.0842 0.9206 0.3813 +vn 0.1290 0.9162 -0.3795 +vn -0.0842 -0.3813 0.9206 +vn 0.1290 0.3795 0.9162 +vn -0.0842 -0.9206 -0.3813 +vn -0.0842 0.9206 -0.3813 +vn 0.7274 -0.2626 -0.6340 +vn 0.7274 -0.6340 -0.2626 +vn 0.7274 0.6340 -0.2626 +vn 0.7274 0.2626 0.6340 +vn 0.7274 -0.6340 0.2626 +vn 0.7274 -0.2626 0.6340 +vn 0.7274 0.6340 0.2626 +vn 0.7274 0.2626 -0.6340 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.0395 0.0793 -0.9961 +vn 0.2579 -0.6421 -0.7219 +vn 0.0374 -0.6482 -0.7605 +vn 0.0345 -0.9994 0.0000 +vn 0.2580 -0.6421 0.7219 +vn 0.0374 -0.6482 0.7605 +vn 0.0395 0.0793 0.9961 +vn 0.1484 0.0900 0.9848 +vn 0.0396 0.7059 0.7072 +vn 0.1393 0.7021 0.6983 +vn 0.0380 0.9993 0.0000 +vn 0.5402 -0.8415 -0.0000 +vn 0.2980 -0.9546 0.0000 +vn 0.1393 0.7021 -0.6983 +vn 0.0396 0.7059 -0.7072 +vn 0.1483 0.0900 -0.9848 +vn 0.2023 0.6897 0.6953 +vn 0.2022 0.6897 -0.6953 +vn 0.1873 -0.0056 -0.9823 +vn 0.3633 -0.5613 -0.7436 +vn 0.3633 -0.5613 0.7436 +vn 0.2084 0.9780 -0.0000 +vn 0.1406 0.9901 0.0000 +vn 0.1874 -0.0056 0.9823 +vn -0.0994 0.0743 -0.9923 +vn -0.2799 -0.6041 -0.7461 +vn -0.1984 0.0653 -0.9779 +vn -0.1426 -0.6541 0.7428 +vn -0.1426 -0.6541 -0.7428 +vn -0.0994 0.0743 0.9923 +vn -0.0928 0.7032 -0.7049 +vn -0.1643 -0.9864 0.0000 +vn -0.1889 0.6964 -0.6923 +vn -0.0906 0.9959 0.0000 +vn -0.1889 0.6964 0.6923 +vn -0.0928 0.7032 0.7049 +vn -0.2799 -0.6041 0.7461 +vn -0.3368 -0.9416 0.0000 +vn -0.1844 0.9829 0.0000 +vn -0.1984 0.0653 0.9779 +vn 0.6227 -0.6827 -0.3822 +vn 0.4008 -0.5261 -0.7501 +vn 0.6464 0.7155 -0.2650 +vn 0.1749 -0.9843 -0.0258 +vn -0.9373 -0.0099 -0.3483 +vn 0.1369 -0.9880 -0.0719 +vn 0.1380 0.9894 0.0443 +vn 0.4011 0.6112 -0.6824 +vn -0.1967 0.7052 -0.6812 +vn 0.8295 -0.5582 -0.0210 +vn 0.8281 0.5606 -0.0024 +vn 0.8262 -0.5633 -0.0090 +vn -0.1756 -0.6143 -0.7693 +vn 0.8286 0.5598 -0.0112 +vn 0.8478 -0.4952 -0.1898 +vn 0.8588 0.4836 -0.1688 +vn 0.1747 0.9846 -0.0085 +vn -0.9999 -0.0000 0.0145 +vn -0.9059 0.0000 -0.4234 +vn -0.9123 0.0653 -0.4043 +vn -0.6550 0.5133 -0.5545 +vn -0.6399 0.5727 -0.5124 +vn -0.0103 -0.9997 -0.0232 +vn -0.0431 -0.9979 -0.0485 +vn -0.0108 0.9998 -0.0148 +vn 0.1889 0.9820 -0.0005 +vn 0.9311 -0.3647 0.0002 +vn 0.1888 -0.9820 0.0000 +vn 0.1886 0.9820 0.0000 +vn 0.8278 0.5611 0.0004 +vn 0.8278 0.5610 0.0002 +vn 0.1887 -0.9820 -0.0119 +vn 1.0000 -0.0000 0.0005 +vn 0.1886 0.9821 0.0001 +vn 0.2579 -0.6421 0.7219 +vn 0.1483 0.0900 0.9848 +vn 0.2580 -0.6421 -0.7219 +vn 0.1484 0.0900 -0.9848 +vn 0.2023 0.6897 -0.6953 +vn 0.2022 0.6897 0.6953 +vn -0.1896 0.9814 -0.0289 +vn -0.1896 -0.9814 -0.0289 +vn -0.1896 -0.9814 0.0289 +vn -0.1896 0.9814 0.0289 +vn -0.3595 -0.8072 0.4682 +vn -0.3582 0.3573 -0.8626 +vn 0.3582 0.3573 -0.8626 +vn -0.1649 -0.9112 0.3774 +vn 0.1649 -0.9112 0.3774 +vn -0.3582 0.3573 0.8626 +vn 0.1649 -0.9112 -0.3774 +vn -0.0431 0.9986 -0.0308 +vn 0.1874 -0.0056 -0.9823 +vn 0.1873 -0.0056 0.9823 +s off +f 500/284/57 503/285/57 505/286/57 +f 521/287/58 522/288/58 523/289/58 +f 577/290/57 579/291/57 570/292/57 +f 592/293/58 593/294/58 594/295/58 +f 662/296/57 661/297/57 660/298/57 +f 676/299/58 675/300/58 668/301/58 +f 685/302/59 684/303/59 683/304/59 +f 691/305/60 689/306/60 688/307/60 +f 687/308/61 682/309/61 692/310/61 +f 694/311/62 696/312/62 695/313/62 +f 686/314/63 693/315/63 698/316/63 +f 684/317/64 695/313/64 683/318/64 +f 691/319/65 699/320/65 690/321/65 +f 691/322/66 698/316/66 693/315/66 +f 690/323/67 701/324/67 700/325/67 +f 701/324/68 702/326/68 700/325/68 +f 700/327/69 689/306/69 690/328/69 +f 699/320/70 701/329/70 690/321/70 +f 707/330/57 696/312/57 697/331/57 +f 700/327/71 708/332/71 704/333/71 +f 709/334/61 701/329/61 705/335/61 +f 711/336/72 709/334/72 706/337/72 +f 684/338/73 685/339/73 688/307/73 +f 692/310/74 682/309/74 683/340/74 +f 683/340/75 699/320/75 692/310/75 +f 689/306/76 684/338/76 688/307/76 +f 705/335/77 695/341/77 696/342/77 +f 697/343/78 689/306/78 704/333/78 +f 706/337/79 705/335/79 696/342/79 +f 707/344/80 704/333/80 708/332/80 +f 698/345/81 691/305/81 688/307/81 +f 736/346/57 734/347/57 732/348/57 +f 747/349/58 746/350/58 740/351/58 +f 707/330/82 711/352/82 706/353/82 +f 710/354/61 703/355/61 709/334/61 +f 755/356/83 757/357/83 754/358/83 +f 759/359/83 761/360/83 758/361/83 +f 765/362/84 763/363/84 762/364/84 +f 767/365/85 769/366/85 766/367/85 +f 500/284/57 499/368/57 503/285/57 +f 503/285/57 504/369/57 505/286/57 +f 505/286/57 506/370/57 500/284/57 +f 506/370/57 507/371/57 500/284/57 +f 507/371/57 508/372/57 500/284/57 +f 523/289/58 512/373/58 520/374/58 +f 512/373/58 511/375/58 519/376/58 +f 511/375/58 518/377/58 519/376/58 +f 519/376/58 520/374/58 512/373/58 +f 520/374/58 521/287/58 523/289/58 +f 570/292/57 569/378/57 577/290/57 +f 569/378/57 575/379/57 577/290/57 +f 575/379/57 576/380/57 577/290/57 +f 577/290/57 578/381/57 579/291/57 +f 579/291/57 580/382/57 570/292/57 +f 594/295/58 584/383/58 591/384/58 +f 584/383/58 583/385/58 590/386/58 +f 583/385/58 589/387/58 590/386/58 +f 590/386/58 591/384/58 584/383/58 +f 591/384/58 592/293/58 594/295/58 +f 660/298/57 656/388/57 657/389/57 +f 657/389/57 665/390/57 660/298/57 +f 665/390/57 664/391/57 660/298/57 +f 664/391/57 663/392/57 660/298/57 +f 663/392/57 662/296/57 660/298/57 +f 668/301/58 669/393/58 677/394/58 +f 669/393/58 680/395/58 678/396/58 +f 680/395/58 679/397/58 678/396/58 +f 678/396/58 677/394/58 669/393/58 +f 677/394/58 676/299/58 668/301/58 +f 683/304/59 682/398/59 685/302/59 +f 682/398/59 687/399/59 686/400/59 +f 685/302/59 682/398/59 686/400/59 +f 691/305/86 690/328/86 689/306/86 +f 692/310/87 691/319/87 693/401/87 +f 693/401/61 687/308/61 692/310/61 +f 694/311/62 697/331/62 696/312/62 +f 686/314/63 687/402/63 693/315/63 +f 684/317/64 694/311/64 695/313/64 +f 691/319/88 692/310/88 699/320/88 +f 701/324/89 703/403/89 702/326/89 +f 700/327/90 704/333/90 689/306/90 +f 699/320/61 705/335/61 701/329/61 +f 707/330/57 706/353/57 696/312/57 +f 700/327/71 702/404/71 708/332/71 +f 709/334/61 703/355/61 701/329/61 +f 711/336/72 710/354/72 709/334/72 +f 683/340/75 695/341/75 699/320/75 +f 689/306/91 694/405/91 684/338/91 +f 705/335/77 699/320/77 695/341/77 +f 697/343/92 694/405/92 689/306/92 +f 706/337/79 709/334/79 705/335/79 +f 707/344/80 697/343/80 704/333/80 +f 688/307/93 685/339/93 686/406/93 +f 686/406/94 698/345/94 688/307/94 +f 732/348/57 726/407/57 736/346/57 +f 726/407/57 727/408/57 736/346/57 +f 727/408/57 737/409/57 736/346/57 +f 736/346/57 735/410/57 734/347/57 +f 734/347/57 733/411/57 732/348/57 +f 740/351/58 741/412/58 748/413/58 +f 741/412/58 751/414/58 749/415/58 +f 751/414/58 750/416/58 749/415/58 +f 749/415/58 748/413/58 741/412/58 +f 748/413/58 747/349/58 740/351/58 +f 707/330/82 752/417/82 711/352/82 +f 710/354/61 753/418/61 703/355/61 +f 755/356/83 756/419/83 757/357/83 +f 759/359/83 760/420/83 761/360/83 +f 765/362/84 764/421/84 763/363/84 +f 767/365/85 768/422/85 769/366/85 +s 1 +f 166/423/95 168/424/96 165/425/97 +f 167/426/98 170/427/99 168/424/96 +f 169/428/100 172/429/101 170/427/99 +f 171/430/102 174/431/71 172/429/101 +f 173/432/103 176/433/104 174/431/71 +f 175/434/105 178/435/106 176/433/104 +f 177/436/107 180/437/108 178/435/106 +f 179/438/109 182/439/110 180/437/108 +f 181/440/111 184/441/112 182/439/110 +f 183/442/113 186/443/114 184/441/112 +f 185/444/115 188/445/116 186/443/114 +f 187/446/117 190/447/118 188/445/116 +f 189/448/119 192/449/120 190/450/118 +f 191/451/121 194/452/122 192/449/120 +f 169/428/100 195/453/123 196/454/124 +f 193/455/125 198/456/126 194/452/122 +f 197/457/127 165/425/97 198/456/126 +f 199/458/128 200/459/129 201/460/130 +f 202/461/131 204/462/132 205/463/133 +f 207/464/134 209/465/135 206/466/136 +f 210/467/137 212/468/138 213/469/139 +f 214/470/140 199/471/128 216/472/141 +f 218/473/142 220/474/143 217/475/144 +f 222/476/145 224/477/146 221/478/147 +f 225/479/148 213/480/139 226/481/149 +f 203/482/150 228/483/151 204/462/132 +f 229/484/152 208/485/153 207/486/134 +f 215/487/154 200/459/129 199/458/128 +f 211/488/155 205/489/133 212/490/138 +f 206/491/136 219/492/156 218/493/142 +f 214/494/140 223/495/157 222/496/145 +f 217/475/144 228/483/151 227/497/158 +f 221/498/147 230/499/159 229/500/152 +f 232/501/160 234/502/161 235/503/162 +f 177/436/107 237/504/163 179/438/109 +f 187/446/117 239/505/164 189/506/119 +f 173/432/103 241/507/165 175/434/105 +f 183/442/113 243/508/166 185/444/115 +f 197/457/127 233/509/167 232/501/160 +f 171/430/102 196/454/124 244/510/168 +f 179/438/109 245/511/169 181/440/111 +f 167/426/98 246/512/170 195/453/123 +f 191/451/121 239/513/164 247/514/171 +f 175/434/105 236/515/172 177/436/107 +f 185/444/115 238/516/173 187/446/117 +f 166/423/95 232/501/160 246/512/170 +f 173/432/103 244/510/168 240/517/174 +f 181/440/111 242/518/175 183/442/113 +f 193/455/125 247/514/171 233/509/167 +f 249/519/176 251/520/177 248/521/178 +f 237/504/163 253/522/179 245/511/169 +f 195/453/123 254/523/180 255/524/181 +f 246/512/170 235/503/162 254/523/180 +f 245/511/169 256/525/182 242/518/175 +f 196/454/124 255/524/181 257/526/183 +f 242/518/175 258/527/184 243/508/166 +f 244/510/168 257/526/183 259/528/185 +f 243/508/166 260/529/186 238/516/173 +f 240/517/174 259/528/185 249/530/176 +f 238/516/173 261/531/187 239/505/164 +f 240/517/174 248/532/178 241/507/165 +f 247/514/171 261/533/187 262/534/188 +f 241/507/165 263/535/189 236/515/172 +f 233/509/167 262/534/188 234/502/161 +f 236/515/172 252/536/190 237/504/163 +f 264/537/191 266/538/192 267/539/193 +f 262/540/188 268/541/194 269/542/195 +f 248/543/178 270/544/196 263/545/189 +f 234/546/161 269/547/195 271/548/197 +f 263/549/189 272/550/198 252/551/190 +f 235/552/162 271/553/197 273/554/199 +f 252/555/190 274/556/200 253/557/179 +f 255/558/181 275/559/201 276/560/202 +f 254/561/180 273/562/199 275/563/201 +f 253/564/179 265/565/203 256/566/182 +f 257/567/183 276/568/202 277/569/204 +f 256/570/182 264/537/191 258/571/184 +f 259/572/185 277/573/204 278/574/205 +f 258/575/184 279/576/206 260/577/186 +f 249/578/176 278/579/205 250/580/207 +f 260/581/186 268/582/194 261/583/187 +f 281/584/208 283/585/209 280/586/210 +f 277/573/204 285/587/211 278/574/205 +f 279/576/206 267/588/193 286/589/212 +f 278/579/205 287/590/213 250/580/207 +f 268/582/194 286/591/212 288/592/214 +f 251/520/177 287/593/213 289/594/215 +f 268/541/194 290/595/216 269/542/195 +f 270/544/196 289/596/215 291/597/217 +f 269/547/195 281/598/208 271/548/197 +f 272/550/198 291/599/217 292/600/218 +f 271/553/197 280/586/210 273/554/199 +f 274/556/200 292/601/218 293/602/219 +f 275/559/201 295/603/220 276/560/202 +f 273/562/199 294/604/221 275/563/201 +f 265/565/203 293/605/219 266/606/192 +f 276/568/202 284/607/222 277/569/204 +f 307/608/223 309/609/224 301/610/225 +f 293/602/219 304/611/226 303/612/227 +f 294/613/221 296/614/228 295/603/220 +f 280/615/210 297/616/229 294/604/221 +f 266/606/192 303/617/227 302/618/230 +f 295/619/220 309/620/224 284/607/222 +f 267/539/193 302/621/230 301/622/225 +f 284/623/222 308/624/231 285/587/211 +f 286/589/212 301/625/225 300/626/232 +f 285/627/211 307/628/223 287/590/213 +f 288/592/214 300/629/232 299/630/233 +f 289/594/215 307/631/223 306/632/234 +f 288/633/214 298/634/235 290/595/216 +f 291/597/217 306/635/234 305/636/236 +f 290/637/216 282/638/237 281/598/208 +f 292/600/218 305/639/236 304/640/226 +f 219/492/156 209/641/135 201/642/130 +f 200/643/129 226/644/149 201/645/130 +f 209/465/135 208/646/153 201/647/130 +f 213/469/139 212/468/138 201/648/130 +f 226/481/149 213/480/139 201/649/130 +f 208/485/153 230/650/159 201/651/130 +f 212/490/138 205/489/133 201/652/130 +f 230/499/159 224/653/146 201/654/130 +f 205/655/133 204/656/132 201/657/130 +f 224/477/146 223/658/157 201/659/130 +f 204/660/132 228/661/151 201/662/130 +f 223/495/157 216/663/141 201/664/130 +f 228/665/151 220/666/143 201/667/130 +f 216/472/141 199/471/128 201/668/130 +f 220/669/143 219/670/156 201/671/130 +f 310/672/238 311/673/239 312/674/240 +f 314/675/241 316/676/242 313/677/243 +f 317/678/244 318/679/245 316/676/242 +f 314/680/241 319/681/246 315/682/247 +f 311/673/239 322/683/248 320/684/249 +f 313/677/243 318/679/245 323/685/250 +f 325/686/251 327/687/252 324/688/253 +f 325/686/251 328/689/254 326/690/255 +f 323/685/250 324/691/253 329/692/256 +f 317/678/244 322/683/248 325/693/251 +f 330/694/257 321/695/258 311/673/239 +f 318/679/245 325/693/251 324/691/253 +f 328/696/254 322/697/248 332/698/259 +f 321/699/258 334/700/260 322/701/248 +f 321/699/258 335/702/261 333/703/262 +f 322/704/248 334/705/260 336/706/263 +f 323/685/250 331/707/264 330/694/257 +f 330/694/257 313/677/243 323/685/250 +f 310/708/238 319/681/246 314/680/241 +f 337/709/265 314/675/241 313/677/243 +f 339/710/71 340/711/266 332/698/259 +f 334/705/260 338/712/267 336/706/263 +f 328/696/254 340/711/266 326/713/255 +f 316/676/242 315/714/247 317/678/244 +f 315/714/247 319/715/246 341/716/268 +f 317/678/244 315/714/247 312/674/269 +f 341/716/268 312/674/269 315/714/247 +f 312/674/269 320/684/270 317/678/244 +f 312/674/240 341/716/271 310/672/238 +f 341/716/271 319/715/246 310/672/238 +f 310/672/238 337/709/265 311/673/239 +f 337/709/265 330/694/257 311/673/239 +f 311/673/239 320/684/249 312/674/240 +f 322/717/248 336/706/263 332/698/259 +f 343/718/272 345/719/273 342/720/274 +f 347/721/275 349/722/276 346/723/277 +f 350/724/278 352/725/279 353/726/280 +f 342/720/274 348/727/281 343/718/272 +f 351/728/282 345/719/273 344/729/283 +f 349/730/284 342/720/284 345/719/284 +f 354/731/285 347/721/275 346/723/277 +f 352/725/279 354/732/286 353/726/280 +f 357/733/287 359/734/288 356/735/289 +f 361/736/290 363/737/291 360/738/292 +f 364/739/293 366/740/294 367/741/295 +f 356/735/289 362/742/296 357/733/287 +f 365/743/297 359/734/288 358/744/298 +f 363/745/299 356/735/299 359/734/299 +f 368/746/300 361/736/290 360/738/292 +f 366/740/294 368/747/301 367/741/295 +f 231/748/302 226/644/149 200/643/129 +f 218/749/303 370/750/304 371/751/303 +f 182/439/110 206/752/136 180/437/108 +f 165/425/97 211/753/155 210/754/137 +f 190/450/118 215/755/154 214/756/140 +f 203/757/305 373/758/306 227/759/306 +f 188/445/116 221/760/147 186/443/114 +f 198/456/126 210/761/137 225/762/148 +f 202/763/307 372/764/308 203/757/305 +f 184/441/112 207/765/134 182/439/110 +f 192/449/120 231/766/302 215/755/154 +f 168/424/96 202/767/131 211/768/155 +f 180/437/108 218/769/142 178/435/106 +f 190/447/118 222/770/145 188/445/116 +f 217/771/309 373/758/306 370/750/304 +f 186/443/114 229/772/152 184/441/112 +f 194/452/122 225/773/148 231/774/302 +f 375/775/310 372/776/311 374/777/312 +f 378/778/313 370/779/314 377/780/315 +f 376/781/316 373/782/317 372/776/311 +f 377/780/315 373/782/317 379/783/158 +f 178/784/318 377/785/319 176/786/320 +f 176/786/320 379/787/321 174/788/321 +f 172/789/322 379/787/321 376/790/323 +f 178/791/318 371/792/324 378/793/325 +f 170/794/326 374/795/327 202/796/327 +f 170/797/326 376/790/323 375/798/328 +f 383/799/71 381/800/104 380/801/104 +f 385/802/329 382/803/71 383/799/71 +f 387/804/284 384/805/329 385/802/329 +f 389/806/330 386/807/284 387/804/284 +f 391/808/331 389/806/330 387/804/284 +f 392/809/332 394/810/333 393/811/334 +f 388/812/330 396/813/335 386/807/284 +f 392/809/332 385/802/329 383/799/71 +f 399/814/336 382/803/71 384/805/329 +f 393/811/334 387/804/284 385/802/329 +f 396/813/335 384/805/329 386/807/284 +f 400/815/337 383/799/71 380/801/104 +f 398/816/338 381/800/104 382/803/71 +f 403/817/339 398/816/338 399/814/336 +f 394/810/333 391/808/331 393/811/334 +f 396/813/335 403/817/339 399/814/336 +f 404/818/340 390/819/341 391/808/331 +f 397/820/342 405/821/343 396/813/335 +f 400/815/337 395/822/344 392/809/332 +f 402/823/345 401/824/346 398/816/338 +f 411/825/101 413/826/71 410/827/101 +f 412/828/71 415/829/347 413/826/71 +f 414/830/347 417/831/299 415/829/347 +f 416/832/299 419/833/348 417/831/299 +f 419/833/348 421/834/349 417/831/299 +f 422/835/350 424/836/351 425/837/352 +f 416/832/299 427/838/353 418/839/348 +f 415/829/347 422/835/350 413/826/71 +f 412/828/71 429/840/354 414/830/347 +f 417/831/299 423/841/355 415/829/347 +f 414/830/347 426/842/356 416/832/299 +f 413/826/71 430/843/357 410/827/101 +f 411/825/101 428/844/358 412/828/71 +f 428/844/358 433/845/359 429/840/354 +f 421/834/349 424/836/351 423/841/355 +f 426/842/356 433/845/359 435/846/360 +f 420/847/361 434/848/362 421/834/349 +f 427/838/353 435/849/360 437/850/363 +f 430/843/357 425/851/352 438/852/364 +f 431/853/365 432/854/366 428/844/358 +f 441/855/367 443/856/101 440/857/367 +f 442/858/101 445/859/104 443/856/101 +f 445/859/104 446/860/368 447/861/368 +f 447/861/368 448/862/348 449/863/348 +f 448/862/348 451/864/369 449/863/348 +f 452/865/370 454/866/371 450/867/372 +f 452/868/370 457/869/373 455/870/330 +f 452/868/370 459/871/330 458/872/374 +f 455/870/330 440/857/367 459/871/330 +f 442/858/101 461/873/375 444/874/104 +f 451/864/369 463/875/376 449/863/348 +f 448/862/348 465/876/377 450/877/372 +f 447/861/368 467/878/378 445/859/104 +f 440/857/367 469/879/379 459/871/330 +f 443/856/101 468/880/380 440/857/367 +f 444/874/104 471/881/381 446/860/368 +f 455/870/330 472/882/382 441/855/367 +f 441/855/367 460/883/383 442/858/101 +f 458/872/374 462/884/384 451/885/369 +f 450/886/372 456/887/385 452/868/370 +f 449/863/348 466/888/386 447/861/368 +f 446/860/368 464/889/387 448/862/348 +f 445/859/104 470/890/388 443/856/101 +f 459/871/330 473/891/389 458/872/374 +f 467/878/378 466/888/386 474/892/58 +f 473/891/389 469/879/379 474/893/58 +f 460/883/383 475/894/390 476/895/391 +f 466/888/386 463/875/376 474/896/58 +f 469/879/379 468/880/380 474/897/58 +f 468/880/380 470/890/388 474/898/58 +f 463/875/376 462/899/384 474/900/58 +f 475/901/390 478/902/392 480/903/393 +f 470/890/388 467/878/378 474/904/58 +f 462/884/384 473/891/389 474/905/58 +f 460/883/383 482/906/394 461/873/375 +f 461/873/375 481/907/395 471/881/381 +f 471/881/381 480/908/393 464/889/387 +f 464/889/387 479/909/396 465/876/377 +f 465/910/377 478/911/392 456/887/385 +f 456/887/385 477/912/397 457/869/373 +f 457/869/373 475/913/390 472/882/382 +f 450/867/372 483/914/398 451/915/369 +f 458/916/374 453/917/399 452/865/370 +f 451/918/369 484/919/400 458/916/374 +f 485/920/401 487/921/402 488/922/403 +f 487/923/402 490/924/404 488/922/403 +f 490/924/404 491/925/405 492/926/406 +f 491/927/405 494/928/407 492/926/406 +f 493/929/408 496/930/409 494/928/407 +f 495/931/410 498/932/411 496/930/409 +f 487/923/402 500/933/412 489/934/413 +f 498/935/411 501/936/414 502/937/415 +f 502/937/415 486/938/416 485/920/401 +f 493/929/408 506/939/417 495/940/410 +f 486/938/416 504/941/418 503/942/419 +f 486/943/416 499/944/420 487/921/402 +f 491/925/405 500/945/412 508/946/421 +f 495/931/410 505/947/422 497/948/423 +f 493/949/408 508/950/421 507/951/424 +f 501/936/414 505/952/422 504/953/418 +f 509/954/425 511/955/426 512/956/427 +f 494/928/407 514/957/428 492/926/406 +f 490/924/404 510/958/429 488/922/403 +f 496/930/409 513/959/430 494/928/407 +f 485/920/401 517/960/431 502/937/415 +f 488/922/403 509/954/425 485/920/401 +f 492/926/406 515/961/432 490/924/404 +f 517/960/431 512/962/427 523/963/433 +f 524/964/434 521/965/435 516/966/436 +f 513/959/430 519/967/437 514/957/428 +f 510/958/429 518/968/438 511/969/426 +f 524/970/434 523/971/433 522/972/439 +f 516/966/436 520/973/440 513/959/430 +f 514/957/428 518/974/438 515/961/432 +f 528/975/441 529/976/442 525/977/443 +f 532/978/444 534/979/445 531/980/446 +f 535/981/447 530/982/448 536/983/449 +f 537/984/450 539/985/451 540/986/452 +f 536/987/449 529/988/442 541/989/453 +f 538/990/454 527/991/455 526/992/456 +f 534/993/445 542/994/457 535/981/447 +f 534/995/445 536/987/449 541/989/453 +f 533/996/458 543/997/459 544/998/460 +f 544/998/460 545/999/461 546/1000/462 +f 532/978/444 543/1001/463 533/1002/464 +f 542/994/457 544/1003/465 548/1004/466 +f 539/985/451 550/1005/467 540/986/452 +f 543/1001/463 551/1006/468 545/1007/71 +f 544/1003/465 552/1008/469 548/1004/466 +f 552/1008/469 554/1009/470 549/1010/471 +f 527/1011/455 531/980/446 528/1012/441 +f 535/981/447 526/1013/456 525/1014/443 +f 542/994/457 526/1013/456 535/981/447 +f 532/978/444 527/1011/455 537/1015/450 +f 538/1016/454 548/1004/466 539/1017/451 +f 532/978/444 540/1018/452 547/1019/472 +f 549/1010/471 548/1004/466 552/1008/469 +f 547/1019/472 550/1020/467 551/1006/468 +f 531/980/446 541/1021/453 529/1022/442 +f 555/1023/401 557/1024/402 558/1025/403 +f 557/1026/402 560/1027/404 558/1025/403 +f 560/1027/404 561/1028/405 562/1029/406 +f 561/1030/405 564/1031/407 562/1029/406 +f 563/1032/408 566/1033/409 564/1031/407 +f 565/1034/410 568/1035/411 566/1033/409 +f 557/1026/402 570/1036/412 559/1037/413 +f 568/1038/411 571/1039/414 572/1040/415 +f 572/1040/415 556/1041/416 555/1023/401 +f 566/1033/409 573/1042/434 574/1043/436 +f 563/1032/408 578/1044/417 565/1045/410 +f 556/1041/416 576/1046/418 575/1047/419 +f 556/1048/416 569/1049/420 557/1024/402 +f 561/1028/405 570/1050/412 580/1051/421 +f 565/1034/410 577/1052/422 567/1053/423 +f 563/1054/408 580/1055/421 579/1056/424 +f 571/1039/414 577/1057/422 576/1058/418 +f 581/1059/425 583/1060/426 584/1061/427 +f 564/1031/407 586/1062/428 562/1029/406 +f 572/1040/415 573/1063/434 568/1038/411 +f 560/1027/404 582/1064/429 558/1025/403 +f 566/1033/409 585/1065/430 564/1031/407 +f 555/1023/401 587/1066/431 572/1040/415 +f 558/1025/403 581/1059/425 555/1023/401 +f 562/1029/406 588/1067/432 560/1027/404 +f 587/1066/431 584/1068/427 594/1069/433 +f 573/1042/434 592/1070/435 574/1043/436 +f 585/1065/430 590/1071/437 586/1062/428 +f 582/1064/429 589/1072/438 583/1073/426 +f 573/1063/434 594/1074/433 593/1075/439 +f 574/1043/436 591/1076/440 585/1065/430 +f 586/1062/428 589/1077/438 588/1067/432 +f 550/1005/467 554/1078/470 595/1079/473 +f 546/1080/61 553/1081/474 552/1008/469 +f 600/1082/104 598/1083/368 597/1084/368 +f 602/1085/101 599/1086/104 600/1082/104 +f 604/1087/367 601/1088/101 602/1085/101 +f 606/1089/330 603/1090/367 604/1087/367 +f 608/1091/374 605/1092/330 606/1089/330 +f 611/1093/399 609/1094/372 607/1095/370 +f 614/1096/387 609/1097/372 612/1098/348 +f 616/1099/348 609/1097/372 615/1100/369 +f 597/1084/368 612/1098/348 616/1099/348 +f 618/1101/383 599/1086/104 601/1088/101 +f 620/1102/379 608/1091/374 606/1089/330 +f 622/1103/385 605/1092/330 607/1104/370 +f 624/1105/388 604/1087/367 602/1085/101 +f 626/1106/376 597/1084/368 616/1099/348 +f 625/1107/386 600/1082/104 597/1084/368 +f 628/1108/382 601/1088/101 603/1090/367 +f 629/1109/381 612/1098/348 598/1083/368 +f 617/1110/375 598/1083/368 599/1086/104 +f 619/1111/389 615/1100/369 608/1112/374 +f 613/1113/377 607/1114/370 609/1097/372 +f 623/1115/380 606/1089/330 604/1087/367 +f 621/1116/373 603/1090/367 605/1092/330 +f 627/1117/378 602/1085/101 600/1082/104 +f 630/1118/384 616/1099/348 615/1100/369 +f 624/1105/388 631/1119/58 623/1115/380 +f 630/1118/384 631/1120/58 626/1106/376 +f 617/1110/375 632/1121/395 629/1109/381 +f 623/1115/380 631/1122/58 620/1102/379 +f 626/1106/376 631/1123/58 625/1107/386 +f 625/1107/386 631/1124/58 627/1117/378 +f 620/1102/379 631/1125/58 619/1126/389 +f 635/1127/396 634/1128/393 632/1129/395 +f 627/1117/378 631/1130/58 624/1105/388 +f 619/1111/389 631/1131/58 630/1118/384 +f 639/1132/391 617/1110/375 618/1101/383 +f 638/1133/390 618/1101/383 628/1108/382 +f 637/1134/397 628/1108/382 621/1116/373 +f 622/1103/385 637/1135/397 621/1116/373 +f 635/1136/396 622/1137/385 613/1113/377 +f 614/1096/387 635/1138/396 613/1113/377 +f 632/1139/395 614/1096/387 629/1109/381 +f 640/1140/400 607/1095/370 608/1141/374 +f 610/1142/371 615/1143/369 609/1094/372 +f 641/1144/398 608/1145/374 615/1143/369 +f 642/1146/407 644/1147/475 643/1148/476 +f 647/1149/404 644/1150/475 645/1151/406 +f 647/1149/404 648/1152/477 646/1153/413 +f 651/1154/401 648/1155/477 649/1156/403 +f 653/1157/415 650/1158/478 651/1154/401 +f 655/1159/411 652/1160/414 653/1157/415 +f 657/1161/412 644/1150/475 646/1162/413 +f 655/1163/411 658/1164/410 654/1165/423 +f 659/1166/409 643/1167/476 658/1168/410 +f 663/1169/479 650/1158/478 652/1170/414 +f 643/1167/476 661/1171/480 658/1168/410 +f 656/1172/421 643/1148/476 644/1147/475 +f 648/1152/477 657/1173/412 646/1153/413 +f 662/1174/422 652/1160/414 654/1175/423 +f 650/1176/478 665/1177/420 648/1155/477 +f 658/1164/410 662/1178/422 654/1165/423 +f 666/1179/430 668/1180/437 667/1181/428 +f 671/1182/429 651/1154/401 649/1156/403 +f 667/1181/428 647/1149/404 645/1151/406 +f 670/1183/425 653/1157/415 651/1154/401 +f 674/1184/436 642/1146/407 659/1166/409 +f 666/1179/430 645/1151/406 642/1146/407 +f 672/1185/432 649/1156/403 647/1149/404 +f 674/1184/436 669/1186/440 666/1179/430 +f 678/1187/433 681/1188/434 673/1189/431 +f 676/1190/426 670/1183/425 671/1182/429 +f 667/1181/428 675/1191/438 672/1185/432 +f 681/1192/434 680/1193/435 674/1184/436 +f 677/1194/427 673/1189/431 670/1183/425 +f 675/1195/438 671/1182/429 672/1185/432 +f 712/1196/407 714/1197/475 713/1198/476 +f 717/1199/404 714/1200/475 715/1201/406 +f 717/1199/404 718/1202/477 716/1203/413 +f 721/1204/401 718/1205/477 719/1206/403 +f 723/1207/415 720/1208/478 721/1204/401 +f 725/1209/411 722/1210/414 723/1207/415 +f 727/1211/412 714/1200/475 716/1212/413 +f 725/1213/411 728/1214/410 724/1215/423 +f 729/1216/409 713/1217/476 728/1218/410 +f 723/1207/415 730/1219/434 725/1209/411 +f 735/1220/479 720/1208/478 722/1221/414 +f 713/1217/476 733/1222/480 728/1218/410 +f 726/1223/421 713/1198/476 714/1197/475 +f 718/1202/477 727/1224/412 716/1203/413 +f 734/1225/422 722/1210/414 724/1226/423 +f 720/1227/478 737/1228/420 718/1205/477 +f 728/1214/410 734/1229/422 724/1215/423 +f 738/1230/430 740/1231/437 739/1232/428 +f 743/1233/429 721/1204/401 719/1206/403 +f 730/1234/434 729/1216/409 725/1213/411 +f 739/1232/428 717/1199/404 715/1201/406 +f 742/1235/425 723/1207/415 721/1204/401 +f 729/1216/409 738/1230/430 712/1196/407 +f 738/1230/430 715/1201/406 712/1196/407 +f 745/1236/432 719/1206/403 717/1199/404 +f 744/1237/436 741/1238/440 738/1230/430 +f 749/1239/433 730/1219/434 731/1240/431 +f 747/1241/426 742/1235/425 743/1233/429 +f 739/1232/428 746/1242/438 745/1236/432 +f 730/1234/434 751/1243/435 744/1237/436 +f 748/1244/427 731/1240/431 742/1235/425 +f 746/1245/438 743/1233/429 745/1236/432 +f 524/964/434 496/930/409 498/932/411 +f 502/937/415 524/970/434 498/935/411 +f 659/1166/409 681/1192/434 674/1184/436 +f 653/1157/415 681/1188/434 655/1159/411 +f 166/423/95 167/426/98 168/424/96 +f 167/426/98 169/428/100 170/427/99 +f 169/428/100 171/430/102 172/429/101 +f 171/430/102 173/432/103 174/431/71 +f 173/432/103 175/434/105 176/433/104 +f 175/434/105 177/436/107 178/435/106 +f 177/436/107 179/438/109 180/437/108 +f 179/438/109 181/440/111 182/439/110 +f 181/440/111 183/442/113 184/441/112 +f 183/442/113 185/444/115 186/443/114 +f 185/444/115 187/446/117 188/445/116 +f 187/446/117 189/506/119 190/447/118 +f 189/448/119 191/451/121 192/449/120 +f 191/451/121 193/455/125 194/452/122 +f 169/428/100 167/426/98 195/453/123 +f 193/455/125 197/457/127 198/456/126 +f 197/457/127 166/423/95 165/425/97 +f 202/461/131 203/482/150 204/462/132 +f 207/464/134 208/646/153 209/465/135 +f 210/467/137 211/1246/155 212/468/138 +f 214/470/140 215/1247/154 199/471/128 +f 218/473/142 219/1248/156 220/474/143 +f 222/476/145 223/658/157 224/477/146 +f 225/479/148 210/1249/137 213/480/139 +f 203/482/150 227/497/158 228/483/151 +f 229/484/152 230/650/159 208/485/153 +f 215/487/154 231/1250/302 200/459/129 +f 211/488/155 202/1251/131 205/489/133 +f 206/491/136 209/641/135 219/492/156 +f 214/494/140 216/663/141 223/495/157 +f 217/475/144 220/474/143 228/483/151 +f 221/498/147 224/653/146 230/499/159 +f 232/501/160 233/509/167 234/502/161 +f 177/436/107 236/515/172 237/504/163 +f 187/446/117 238/516/173 239/505/164 +f 173/432/103 240/517/174 241/507/165 +f 183/442/113 242/518/175 243/508/166 +f 197/457/127 193/455/125 233/509/167 +f 171/430/102 169/428/100 196/454/124 +f 179/438/109 237/504/163 245/511/169 +f 167/426/98 166/423/95 246/512/170 +f 191/451/121 189/448/119 239/513/164 +f 175/434/105 241/507/165 236/515/172 +f 185/444/115 243/508/166 238/516/173 +f 166/423/95 197/457/127 232/501/160 +f 173/432/103 171/430/102 244/510/168 +f 181/440/111 245/511/169 242/518/175 +f 193/455/125 191/451/121 247/514/171 +f 249/519/176 250/1252/207 251/520/177 +f 237/504/163 252/536/190 253/522/179 +f 195/453/123 246/512/170 254/523/180 +f 246/512/170 232/501/160 235/503/162 +f 245/511/169 253/522/179 256/525/182 +f 196/454/124 195/453/123 255/524/181 +f 242/518/175 256/525/182 258/527/184 +f 244/510/168 196/454/124 257/526/183 +f 243/508/166 258/527/184 260/529/186 +f 240/517/174 244/510/168 259/528/185 +f 238/516/173 260/529/186 261/531/187 +f 240/517/174 249/530/176 248/532/178 +f 247/514/171 239/513/164 261/533/187 +f 241/507/165 248/532/178 263/535/189 +f 233/509/167 247/514/171 262/534/188 +f 236/515/172 263/535/189 252/536/190 +f 264/537/191 265/1253/203 266/538/192 +f 262/540/188 261/1254/187 268/541/194 +f 248/543/178 251/1255/177 270/544/196 +f 234/546/161 262/1256/188 269/547/195 +f 263/549/189 270/1257/196 272/550/198 +f 235/552/162 234/1258/161 271/553/197 +f 252/555/190 272/1259/198 274/556/200 +f 255/558/181 254/1260/180 275/559/201 +f 254/561/180 235/1261/162 273/562/199 +f 253/564/179 274/1262/200 265/565/203 +f 257/567/183 255/1263/181 276/568/202 +f 256/570/182 265/1253/203 264/537/191 +f 259/572/185 257/1264/183 277/573/204 +f 258/575/184 264/1265/191 279/576/206 +f 249/578/176 259/1266/185 278/579/205 +f 260/581/186 279/1267/206 268/582/194 +f 281/584/208 282/1268/237 283/585/209 +f 277/573/204 284/623/222 285/587/211 +f 279/576/206 264/1265/191 267/588/193 +f 278/579/205 285/627/211 287/590/213 +f 268/582/194 279/1267/206 286/591/212 +f 251/520/177 250/1252/207 287/593/213 +f 268/541/194 288/633/214 290/595/216 +f 270/544/196 251/1255/177 289/596/215 +f 269/547/195 290/637/216 281/598/208 +f 272/550/198 270/1257/196 291/599/217 +f 271/553/197 281/584/208 280/586/210 +f 274/556/200 272/1259/198 292/601/218 +f 275/559/201 294/613/221 295/603/220 +f 273/562/199 280/615/210 294/604/221 +f 265/565/203 274/1262/200 293/605/219 +f 276/568/202 295/619/220 284/607/222 +f 309/609/224 296/1269/228 297/1270/229 +f 297/1270/229 283/1271/209 309/609/224 +f 283/1271/209 282/1272/237 309/609/224 +f 282/1272/237 298/1273/235 299/1274/233 +f 299/1274/233 300/1275/232 301/610/225 +f 301/610/225 302/1276/230 305/1277/236 +f 302/1276/230 303/1278/227 305/1277/236 +f 303/1278/227 304/1279/226 305/1277/236 +f 305/1277/236 306/1280/234 307/608/223 +f 307/608/223 308/1281/231 309/609/224 +f 282/1272/237 299/1274/233 309/609/224 +f 299/1274/233 301/610/225 309/609/224 +f 305/1277/236 307/608/223 301/610/225 +f 293/602/219 292/601/218 304/611/226 +f 294/613/221 297/1282/229 296/614/228 +f 280/615/210 283/1283/209 297/616/229 +f 266/606/192 293/605/219 303/617/227 +f 295/619/220 296/1284/228 309/620/224 +f 267/539/193 266/538/192 302/621/230 +f 284/623/222 309/1285/224 308/624/231 +f 286/589/212 267/588/193 301/625/225 +f 285/627/211 308/1286/231 307/628/223 +f 288/592/214 286/591/212 300/629/232 +f 289/594/215 287/593/213 307/631/223 +f 288/633/214 299/1287/233 298/634/235 +f 291/597/217 289/596/215 306/635/234 +f 290/637/216 298/1288/235 282/638/237 +f 292/600/218 291/599/217 305/639/236 +f 314/675/241 315/714/247 316/676/242 +f 311/673/239 321/695/258 322/683/248 +f 313/677/243 316/676/242 318/679/245 +f 325/686/251 326/690/255 327/687/252 +f 325/686/251 322/1289/248 328/689/254 +f 323/685/250 318/679/245 324/691/253 +f 317/678/244 320/684/270 322/683/248 +f 330/694/257 331/707/264 321/695/258 +f 318/679/245 317/678/244 325/693/251 +f 321/699/258 333/703/262 334/700/260 +f 321/699/258 331/1290/264 335/702/261 +f 323/685/250 329/692/256 331/707/264 +f 330/694/257 337/709/265 313/677/243 +f 337/709/265 310/672/238 314/675/241 +f 332/698/259 336/706/263 339/710/71 +f 336/706/263 338/712/267 339/710/71 +f 334/705/260 333/1291/262 338/712/267 +f 328/696/254 332/698/259 340/711/266 +f 343/718/272 344/729/283 345/719/273 +f 347/721/275 348/727/281 349/722/276 +f 350/724/278 351/728/282 352/725/279 +f 342/720/274 349/722/276 348/727/281 +f 351/728/282 350/724/278 345/719/273 +f 350/1292/284 353/1293/284 346/1294/284 +f 353/1293/284 354/1295/284 346/1294/284 +f 346/1294/284 349/730/284 350/1292/284 +f 350/1292/284 349/730/284 345/719/284 +f 354/731/285 355/1296/481 347/721/275 +f 352/725/279 355/1297/482 354/732/286 +f 357/733/287 358/744/298 359/734/288 +f 361/736/290 362/742/296 363/737/291 +f 364/739/293 365/743/297 366/740/294 +f 356/735/289 363/737/291 362/742/296 +f 365/743/297 364/739/293 359/734/288 +f 364/1298/299 367/1299/299 360/1300/299 +f 367/1299/299 368/1301/299 360/1300/299 +f 360/1300/299 363/745/299 364/1298/299 +f 364/1298/299 363/745/299 359/734/299 +f 368/746/300 369/1302/483 361/736/290 +f 366/740/294 369/1303/484 368/747/301 +f 231/748/302 225/1304/148 226/644/149 +f 218/749/303 217/771/309 370/750/304 +f 182/439/110 207/1305/134 206/752/136 +f 165/425/97 168/424/96 211/753/155 +f 190/450/118 192/449/120 215/755/154 +f 203/757/305 372/764/308 373/758/306 +f 188/445/116 222/770/145 221/760/147 +f 198/456/126 165/425/97 210/761/137 +f 202/763/307 374/1306/307 372/764/308 +f 184/441/112 229/1307/152 207/765/134 +f 192/449/120 194/452/122 231/766/302 +f 168/424/96 170/427/99 202/767/131 +f 180/437/108 206/1308/136 218/769/142 +f 190/447/118 214/1309/140 222/770/145 +f 217/771/309 227/759/306 373/758/306 +f 186/443/114 221/1310/147 229/772/152 +f 194/452/122 198/456/126 225/773/148 +f 375/775/310 376/781/316 372/776/311 +f 378/778/313 371/1311/485 370/779/314 +f 376/781/316 379/783/158 373/782/317 +f 377/780/315 370/779/314 373/782/317 +f 178/784/318 378/1312/325 377/785/319 +f 176/786/320 377/785/319 379/787/321 +f 172/789/322 174/788/321 379/787/321 +f 178/791/318 218/1313/324 371/792/324 +f 170/794/326 375/1314/328 374/795/327 +f 170/797/326 172/789/322 376/790/323 +f 383/799/71 382/803/71 381/800/104 +f 385/802/329 384/805/329 382/803/71 +f 387/804/284 386/807/284 384/805/329 +f 389/806/330 388/812/330 386/807/284 +f 391/808/331 390/819/341 389/806/330 +f 392/809/332 395/1315/344 394/810/333 +f 388/812/330 397/820/342 396/813/335 +f 392/809/332 393/811/334 385/802/329 +f 399/814/336 398/816/338 382/803/71 +f 393/811/334 391/808/331 387/804/284 +f 396/813/335 399/814/336 384/805/329 +f 400/815/337 392/809/332 383/799/71 +f 398/816/338 401/824/346 381/800/104 +f 403/817/339 402/1316/345 398/816/338 +f 394/810/333 404/1317/340 391/808/331 +f 396/813/335 405/1318/343 403/817/339 +f 404/818/340 406/1319/486 390/819/341 +f 397/820/342 407/1320/487 405/821/343 +f 400/815/337 408/1321/488 395/822/344 +f 402/823/345 409/1322/489 401/824/346 +f 411/825/101 412/828/71 413/826/71 +f 412/828/71 414/830/347 415/829/347 +f 414/830/347 416/832/299 417/831/299 +f 416/832/299 418/839/348 419/833/348 +f 419/833/348 420/847/361 421/834/349 +f 422/835/350 423/841/355 424/836/351 +f 416/832/299 426/842/356 427/838/353 +f 415/829/347 423/841/355 422/835/350 +f 412/828/71 428/844/358 429/840/354 +f 417/831/299 421/834/349 423/841/355 +f 414/830/347 429/840/354 426/842/356 +f 413/826/71 422/835/350 430/843/357 +f 411/825/101 431/853/365 428/844/358 +f 428/844/358 432/1323/366 433/845/359 +f 421/834/349 434/1324/362 424/836/351 +f 426/842/356 429/840/354 433/845/359 +f 420/847/361 436/1325/490 434/848/362 +f 427/838/353 426/842/356 435/849/360 +f 430/843/357 422/835/350 425/851/352 +f 431/853/365 439/1326/491 432/854/366 +f 441/855/367 442/858/101 443/856/101 +f 442/858/101 444/874/104 445/859/104 +f 445/859/104 444/874/104 446/860/368 +f 447/861/368 446/860/368 448/862/348 +f 448/862/348 450/877/372 451/864/369 +f 452/865/370 453/917/399 454/866/371 +f 452/868/370 456/887/385 457/869/373 +f 452/868/370 455/870/330 459/871/330 +f 455/870/330 441/855/367 440/857/367 +f 442/858/101 460/883/383 461/873/375 +f 451/864/369 462/899/384 463/875/376 +f 448/862/348 464/889/387 465/876/377 +f 447/861/368 466/888/386 467/878/378 +f 440/857/367 468/880/380 469/879/379 +f 443/856/101 470/890/388 468/880/380 +f 444/874/104 461/873/375 471/881/381 +f 455/870/330 457/869/373 472/882/382 +f 441/855/367 472/882/382 460/883/383 +f 458/872/374 473/891/389 462/884/384 +f 450/886/372 465/910/377 456/887/385 +f 449/863/348 463/875/376 466/888/386 +f 446/860/368 471/881/381 464/889/387 +f 445/859/104 467/878/378 470/890/388 +f 459/871/330 469/879/379 473/891/389 +f 460/883/383 472/882/382 475/894/390 +f 482/1327/394 476/1328/391 475/901/390 +f 475/901/390 477/1329/397 478/902/392 +f 478/902/392 479/1330/396 480/903/393 +f 480/903/393 481/1331/395 482/1327/394 +f 482/1327/394 475/901/390 480/903/393 +f 460/883/383 476/1332/391 482/906/394 +f 461/873/375 482/1333/394 481/907/395 +f 471/881/381 481/1334/395 480/908/393 +f 464/889/387 480/1335/393 479/909/396 +f 465/910/377 479/1336/396 478/911/392 +f 456/887/385 478/1337/392 477/912/397 +f 457/869/373 477/1338/397 475/913/390 +f 450/867/372 454/866/371 483/914/398 +f 458/916/374 484/919/400 453/917/399 +f 451/918/369 483/1339/398 484/919/400 +f 485/920/401 486/943/416 487/921/402 +f 487/923/402 489/934/413 490/924/404 +f 490/924/404 489/1340/413 491/925/405 +f 491/927/405 493/949/408 494/928/407 +f 493/929/408 495/940/410 496/930/409 +f 495/931/410 497/948/423 498/932/411 +f 487/923/402 499/1341/420 500/933/412 +f 498/935/411 497/1342/423 501/936/414 +f 502/937/415 501/1343/414 486/938/416 +f 493/929/408 507/1344/424 506/939/417 +f 486/938/416 501/1343/414 504/941/418 +f 486/943/416 503/1345/419 499/944/420 +f 491/925/405 489/1340/413 500/945/412 +f 495/931/410 506/1346/417 505/947/422 +f 493/949/408 491/927/405 508/950/421 +f 501/936/414 497/1342/423 505/952/422 +f 509/954/425 510/958/429 511/955/426 +f 494/928/407 513/959/430 514/957/428 +f 490/924/404 515/961/432 510/958/429 +f 496/930/409 516/966/436 513/959/430 +f 485/920/401 509/954/425 517/960/431 +f 488/922/403 510/958/429 509/954/425 +f 492/926/406 514/957/428 515/961/432 +f 517/960/431 509/954/425 512/962/427 +f 524/964/434 522/1347/439 521/965/435 +f 513/959/430 520/1348/440 519/967/437 +f 510/958/429 515/961/432 518/968/438 +f 524/970/434 517/960/431 523/971/433 +f 516/966/436 521/1349/435 520/973/440 +f 514/957/428 519/1350/437 518/974/438 +f 530/1351/448 525/977/443 529/976/442 +f 525/977/443 526/1352/456 528/975/441 +f 526/1352/456 527/1353/455 528/975/441 +f 532/978/444 533/1002/464 534/979/445 +f 536/983/449 534/993/445 535/981/447 +f 535/981/447 525/1014/443 530/982/448 +f 537/984/450 538/990/454 539/985/451 +f 536/987/449 530/1354/448 529/988/442 +f 538/990/454 537/984/450 527/991/455 +f 534/993/445 533/1355/492 542/994/457 +f 544/998/460 543/997/459 545/999/461 +f 532/978/444 547/1019/472 543/1001/463 +f 542/994/457 533/1355/492 544/1003/465 +f 539/985/451 549/1356/471 550/1005/467 +f 543/1001/463 547/1019/472 551/1006/468 +f 544/1003/465 546/1080/61 552/1008/469 +f 552/1008/469 553/1081/474 554/1009/470 +f 542/994/457 538/1016/454 526/1013/456 +f 532/978/444 531/980/446 527/1011/455 +f 538/1016/454 542/994/457 548/1004/466 +f 532/978/444 537/1015/450 540/1018/452 +f 549/1010/471 539/1017/451 548/1004/466 +f 547/1019/472 540/1018/452 550/1020/467 +f 529/1022/442 528/1012/441 531/980/446 +f 531/980/446 534/979/445 541/1021/453 +f 555/1023/401 556/1048/416 557/1024/402 +f 557/1026/402 559/1037/413 560/1027/404 +f 560/1027/404 559/1357/413 561/1028/405 +f 561/1030/405 563/1054/408 564/1031/407 +f 563/1032/408 565/1045/410 566/1033/409 +f 565/1034/410 567/1053/423 568/1035/411 +f 557/1026/402 569/1358/420 570/1036/412 +f 568/1038/411 567/1359/423 571/1039/414 +f 572/1040/415 571/1360/414 556/1041/416 +f 566/1033/409 568/1035/411 573/1042/434 +f 563/1032/408 579/1361/424 578/1044/417 +f 556/1041/416 571/1360/414 576/1046/418 +f 556/1048/416 575/1362/419 569/1049/420 +f 561/1028/405 559/1357/413 570/1050/412 +f 565/1034/410 578/1363/417 577/1052/422 +f 563/1054/408 561/1030/405 580/1055/421 +f 571/1039/414 567/1359/423 577/1057/422 +f 581/1059/425 582/1064/429 583/1060/426 +f 564/1031/407 585/1065/430 586/1062/428 +f 572/1040/415 587/1066/431 573/1063/434 +f 560/1027/404 588/1067/432 582/1064/429 +f 566/1033/409 574/1043/436 585/1065/430 +f 555/1023/401 581/1059/425 587/1066/431 +f 558/1025/403 582/1064/429 581/1059/425 +f 562/1029/406 586/1062/428 588/1067/432 +f 587/1066/431 581/1059/425 584/1068/427 +f 573/1042/434 593/1364/439 592/1070/435 +f 585/1065/430 591/1365/440 590/1071/437 +f 582/1064/429 588/1067/432 589/1072/438 +f 573/1063/434 587/1066/431 594/1074/433 +f 574/1043/436 592/1366/435 591/1076/440 +f 586/1062/428 590/1367/437 589/1077/438 +f 550/1005/467 549/1356/471 554/1078/470 +f 546/1080/61 596/1368/61 553/1081/474 +f 600/1082/104 599/1086/104 598/1083/368 +f 602/1085/101 601/1088/101 599/1086/104 +f 604/1087/367 603/1090/367 601/1088/101 +f 606/1089/330 605/1092/330 603/1090/367 +f 608/1091/374 607/1104/370 605/1092/330 +f 611/1093/399 610/1142/371 609/1094/372 +f 614/1096/387 613/1113/377 609/1097/372 +f 616/1099/348 612/1098/348 609/1097/372 +f 597/1084/368 598/1083/368 612/1098/348 +f 618/1101/383 617/1110/375 599/1086/104 +f 620/1102/379 619/1126/389 608/1091/374 +f 622/1103/385 621/1116/373 605/1092/330 +f 624/1105/388 623/1115/380 604/1087/367 +f 626/1106/376 625/1107/386 597/1084/368 +f 625/1107/386 627/1117/378 600/1082/104 +f 628/1108/382 618/1101/383 601/1088/101 +f 629/1109/381 614/1096/387 612/1098/348 +f 617/1110/375 629/1109/381 598/1083/368 +f 619/1111/389 630/1118/384 615/1100/369 +f 613/1113/377 622/1137/385 607/1114/370 +f 623/1115/380 620/1102/379 606/1089/330 +f 621/1116/373 628/1108/382 603/1090/367 +f 627/1117/378 624/1105/388 602/1085/101 +f 630/1118/384 626/1106/376 616/1099/348 +f 617/1110/375 633/1369/394 632/1121/395 +f 632/1129/395 633/1370/394 639/1371/391 +f 639/1371/391 638/1372/390 632/1129/395 +f 638/1372/390 637/1373/397 632/1129/395 +f 637/1373/397 636/1374/392 632/1129/395 +f 636/1374/392 635/1127/396 632/1129/395 +f 639/1132/391 633/1375/394 617/1110/375 +f 638/1133/390 639/1376/391 618/1101/383 +f 637/1134/397 638/1377/390 628/1108/382 +f 622/1103/385 636/1378/392 637/1135/397 +f 635/1136/396 636/1379/392 622/1137/385 +f 614/1096/387 634/1380/393 635/1138/396 +f 632/1139/395 634/1381/393 614/1096/387 +f 640/1140/400 611/1093/399 607/1095/370 +f 610/1142/371 641/1144/398 615/1143/369 +f 641/1144/398 640/1382/400 608/1145/374 +f 642/1146/407 645/1151/406 644/1147/475 +f 647/1149/404 646/1162/413 644/1150/475 +f 647/1149/404 649/1156/403 648/1152/477 +f 651/1154/401 650/1176/478 648/1155/477 +f 653/1157/415 652/1170/414 650/1158/478 +f 655/1159/411 654/1175/423 652/1160/414 +f 657/1161/412 656/1383/421 644/1150/475 +f 655/1163/411 659/1166/409 658/1164/410 +f 659/1166/409 642/1146/407 643/1167/476 +f 663/1169/479 664/1384/493 650/1158/478 +f 643/1167/476 660/1385/494 661/1171/480 +f 656/1172/421 660/1386/494 643/1148/476 +f 648/1152/477 665/1387/420 657/1173/412 +f 662/1174/422 663/1388/479 652/1160/414 +f 650/1176/478 664/1389/493 665/1177/420 +f 658/1164/410 661/1390/480 662/1178/422 +f 666/1179/430 669/1391/440 668/1180/437 +f 671/1182/429 670/1183/425 651/1154/401 +f 667/1181/428 672/1185/432 647/1149/404 +f 670/1183/425 673/1189/431 653/1157/415 +f 674/1184/436 666/1179/430 642/1146/407 +f 666/1179/430 667/1181/428 645/1151/406 +f 672/1185/432 671/1182/429 649/1156/403 +f 674/1184/436 680/1392/435 669/1186/440 +f 678/1187/433 679/1393/439 681/1188/434 +f 676/1190/426 677/1394/427 670/1183/425 +f 667/1181/428 668/1395/437 675/1191/438 +f 681/1192/434 679/1396/439 680/1193/435 +f 677/1194/427 678/1397/433 673/1189/431 +f 675/1195/438 676/1398/426 671/1182/429 +f 712/1196/407 715/1201/406 714/1197/475 +f 717/1199/404 716/1212/413 714/1200/475 +f 717/1199/404 719/1206/403 718/1202/477 +f 721/1204/401 720/1227/478 718/1205/477 +f 723/1207/415 722/1221/414 720/1208/478 +f 725/1209/411 724/1226/423 722/1210/414 +f 727/1211/412 726/1399/421 714/1200/475 +f 725/1213/411 729/1216/409 728/1214/410 +f 729/1216/409 712/1196/407 713/1217/476 +f 723/1207/415 731/1240/431 730/1219/434 +f 735/1220/479 736/1400/493 720/1208/478 +f 713/1217/476 732/1401/494 733/1222/480 +f 726/1223/421 732/1402/494 713/1198/476 +f 718/1202/477 737/1403/420 727/1224/412 +f 734/1225/422 735/1404/479 722/1210/414 +f 720/1227/478 736/1405/493 737/1228/420 +f 728/1214/410 733/1406/480 734/1229/422 +f 738/1230/430 741/1407/440 740/1231/437 +f 743/1233/429 742/1235/425 721/1204/401 +f 730/1234/434 744/1237/436 729/1216/409 +f 739/1232/428 745/1236/432 717/1199/404 +f 742/1235/425 731/1240/431 723/1207/415 +f 729/1216/409 744/1237/436 738/1230/430 +f 738/1230/430 739/1232/428 715/1201/406 +f 745/1236/432 743/1233/429 719/1206/403 +f 744/1237/436 751/1408/435 741/1238/440 +f 749/1239/433 750/1409/439 730/1219/434 +f 747/1241/426 748/1410/427 742/1235/425 +f 739/1232/428 740/1411/437 746/1242/438 +f 730/1234/434 750/1412/439 751/1243/435 +f 748/1244/427 749/1413/433 731/1240/431 +f 746/1245/438 747/1414/426 743/1233/429 +f 524/964/434 516/966/436 496/930/409 +f 502/937/415 517/960/431 524/970/434 +f 659/1166/409 655/1163/411 681/1192/434 +f 653/1157/415 673/1189/431 681/1188/434 diff --git a/src/main/resources/assets/hbm/models/weapons/carbine.obj b/src/main/resources/assets/hbm/models/weapons/carbine.obj index 5a5caf913..6b8176493 100644 --- a/src/main/resources/assets/hbm/models/weapons/carbine.obj +++ b/src/main/resources/assets/hbm/models/weapons/carbine.obj @@ -1,6 +1,847 @@ # Blender v2.79 (sub 0) OBJ File: 'carbine.blend' # www.blender.org -o Cylinder +o Bullet +v 0.000000 1.000000 0.187500 +v -0.062500 0.983253 0.187500 +v -0.108253 0.937500 0.187500 +v -0.125000 0.875000 0.187500 +v -0.108253 0.812500 0.187500 +v -0.062500 0.766747 0.187500 +v 0.000000 0.750000 0.187500 +v 0.062500 0.766747 0.187500 +v 0.108253 0.812500 0.187500 +v 0.125000 0.875000 0.187500 +v 0.108253 0.937500 0.187500 +v 0.062500 0.983253 0.187500 +v 0.000000 1.000000 0.812500 +v -0.062500 0.983253 0.812500 +v -0.108253 0.937500 0.812500 +v -0.125000 0.875000 0.812500 +v -0.108253 0.812500 0.812500 +v -0.062500 0.766747 0.812500 +v 0.000000 0.750000 0.812500 +v 0.062500 0.766747 0.812500 +v 0.108253 0.812500 0.812500 +v 0.125000 0.875000 0.812500 +v 0.108253 0.937500 0.812500 +v 0.062500 0.983253 0.812500 +v 0.000000 0.968750 1.000000 +v -0.046875 0.956190 1.000000 +v -0.081190 0.921875 1.000000 +v -0.093750 0.875000 1.000000 +v -0.081190 0.828125 1.000000 +v -0.046875 0.793810 1.000000 +v 0.000000 0.781250 1.000000 +v 0.046875 0.793810 1.000000 +v 0.081190 0.828125 1.000000 +v 0.093750 0.875000 1.000000 +v 0.081190 0.921875 1.000000 +v 0.046875 0.956190 1.000000 +v 0.000000 0.906250 1.062500 +v -0.015625 0.902063 1.062500 +v -0.027063 0.890625 1.062500 +v -0.031250 0.875000 1.062500 +v -0.027063 0.859375 1.062500 +v -0.015625 0.847937 1.062500 +v 0.000000 0.843750 1.062500 +v 0.015625 0.847937 1.062500 +v 0.027063 0.859375 1.062500 +v 0.031250 0.875000 1.062500 +v 0.027063 0.890625 1.062500 +v 0.015625 0.902063 1.062500 +vt 0.107288 0.837093 +vt 0.113553 0.826359 +vt 0.119818 0.858560 +vt 0.117170 0.866417 +vt 0.107288 0.858560 +vt 0.113553 0.869293 +vt 0.109936 0.866417 +vt 0.106319 0.847826 +vt 0.109936 0.829235 +vt 0.117170 0.829235 +vt 0.119818 0.837092 +vt 0.120788 0.847826 +vt 0.106227 0.836957 +vt 0.069597 0.826087 +vt 0.106227 0.826087 +vt 0.106227 0.934783 +vt 0.069597 0.923913 +vt 0.106227 0.923913 +vt 0.106227 0.880435 +vt 0.069597 0.869565 +vt 0.106227 0.869565 +vt 0.106227 0.902174 +vt 0.069597 0.891304 +vt 0.106227 0.891304 +vt 0.106227 0.847826 +vt 0.069597 0.836957 +vt 0.106227 0.945652 +vt 0.069597 0.934783 +vt 0.069597 0.880435 +vt 0.106227 0.913043 +vt 0.069597 0.902174 +vt 0.106227 0.858696 +vt 0.069597 0.847826 +vt 0.106227 0.956522 +vt 0.069597 0.945652 +vt 0.069597 0.913043 +vt 0.069597 0.858696 +vt 0.058608 0.945652 +vt 0.058608 0.934783 +vt 0.058608 0.891304 +vt 0.058608 0.880435 +vt 0.058608 0.913043 +vt 0.058608 0.902174 +vt 0.058608 0.858696 +vt 0.058608 0.847826 +vt 0.069597 0.956522 +vt 0.058608 0.923913 +vt 0.058608 0.836957 +vt 0.058608 0.826087 +vt 0.058608 0.869565 +vt 0.054945 0.945652 +vt 0.054945 0.934783 +vt 0.054945 0.891304 +vt 0.054945 0.880435 +vt 0.054945 0.913043 +vt 0.054945 0.902174 +vt 0.054945 0.847826 +vt 0.058608 0.956522 +vt 0.054945 0.869565 +vt 0.054945 0.858696 +vt 0.054945 0.836957 +vt 0.054945 0.826087 +vt 0.054945 0.923913 +vt 0.053164 0.826561 +vt 0.054593 0.829009 +vt 0.053164 0.836354 +vt 0.054945 0.956522 +vt 0.052339 0.835698 +vt 0.051735 0.829009 +vt 0.051735 0.833906 +vt 0.051514 0.831457 +vt 0.052339 0.827217 +vt 0.053989 0.827217 +vt 0.054814 0.831457 +vt 0.054593 0.833906 +vt 0.053989 0.835698 +vn 0.0000 0.0000 -1.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.0000 -0.9967 0.0814 +vn 0.0000 -1.0000 0.0000 +vn -0.8660 -0.5000 0.0000 +vn -0.9967 0.0000 0.0814 +vn -1.0000 -0.0000 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.8632 0.4983 0.0814 +vn 0.8660 0.5000 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.0000 0.9967 0.0814 +vn -0.0000 1.0000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 0.4983 -0.8632 0.0814 +vn -0.5000 -0.8660 0.0000 +vn -0.8632 -0.4983 0.0814 +vn 0.4983 0.8632 0.0814 +vn -0.8660 0.5000 0.0000 +vn -0.4983 0.8632 0.0814 +vn 1.0000 -0.0000 0.0000 +vn 0.8632 -0.4983 0.0814 +vn -0.4983 -0.8632 0.0814 +vn -0.8632 0.4983 0.0814 +vn 0.9967 -0.0000 0.0814 +vn -0.4494 -0.7784 0.4382 +vn -0.7784 -0.4494 0.4382 +vn 0.0000 0.8989 0.4382 +vn 0.4494 0.7784 0.4382 +vn -0.7784 0.4494 0.4382 +vn -0.4494 0.7784 0.4382 +vn 0.8989 -0.0000 0.4382 +vn 0.7784 -0.4494 0.4382 +vn -0.8989 0.0000 0.4382 +vn 0.4494 -0.7784 0.4382 +vn 0.0000 -0.8989 0.4382 +vn 0.7784 0.4494 0.4382 +vn -0.2172 -0.3762 0.9007 +vn -0.3762 -0.2172 0.9007 +vn 0.0000 0.4344 0.9007 +vn 0.2172 0.3762 0.9007 +vn -0.3762 0.2172 0.9007 +vn -0.2172 0.3762 0.9007 +vn 0.3762 -0.2172 0.9007 +vn 0.3762 0.2172 0.9007 +vn 0.4344 0.0000 0.9007 +vn 0.2172 -0.3762 0.9007 +vn 0.0000 -0.4344 0.9007 +vn -0.4344 0.0000 0.9007 +s off +f 9/1/1 7/2/1 3/3/1 +f 3/3/1 2/4/1 11/5/1 +f 2/4/1 1/6/1 11/5/1 +f 1/6/1 12/7/1 11/5/1 +f 11/5/1 10/8/1 9/1/1 +f 9/1/1 8/9/1 7/2/1 +f 7/2/1 6/10/1 5/11/1 +f 5/11/1 4/12/1 7/2/1 +f 4/12/1 3/3/1 7/2/1 +f 11/5/1 9/1/1 3/3/1 +s 1 +f 8/13/2 19/14/3 7/15/4 +f 5/16/5 16/17/6 4/18/7 +f 12/19/8 23/20/9 11/21/10 +f 2/22/11 13/23/12 1/24/13 +f 9/25/14 20/26/15 8/13/2 +f 6/27/16 17/28/17 5/16/5 +f 1/24/13 24/29/18 12/19/8 +f 3/30/19 14/31/20 2/22/11 +f 10/32/21 21/33/22 9/25/14 +f 7/34/4 18/35/23 6/27/16 +f 4/18/7 15/36/24 3/30/19 +f 11/21/10 22/37/25 10/32/21 +f 17/28/17 30/38/26 29/39/27 +f 24/29/18 25/40/28 36/41/29 +f 14/31/20 27/42/30 26/43/31 +f 21/33/22 34/44/32 33/45/33 +f 19/46/3 30/38/26 18/35/23 +f 15/36/24 28/47/34 27/42/30 +f 23/20/9 34/44/32 22/37/25 +f 19/14/3 32/48/35 31/49/36 +f 17/28/17 28/47/34 16/17/6 +f 24/29/18 35/50/37 23/20/9 +f 14/31/20 25/40/28 13/23/12 +f 21/33/22 32/48/35 20/26/15 +f 29/39/27 42/51/38 41/52/39 +f 36/41/29 37/53/40 48/54/41 +f 26/43/31 39/55/42 38/56/43 +f 34/44/32 45/57/44 33/45/33 +f 31/58/36 42/51/38 30/38/26 +f 28/47/34 39/55/42 27/42/30 +f 34/44/32 47/59/45 46/60/46 +f 31/49/36 44/61/47 43/62/48 +f 28/47/34 41/52/39 40/63/49 +f 36/41/29 47/59/45 35/50/37 +f 26/43/31 37/53/40 25/40/28 +f 33/45/33 44/61/47 32/48/35 +f 43/64/48 45/65/44 37/66/40 +f 8/13/2 20/26/15 19/14/3 +f 5/16/5 17/28/17 16/17/6 +f 12/19/8 24/29/18 23/20/9 +f 2/22/11 14/31/20 13/23/12 +f 9/25/14 21/33/22 20/26/15 +f 6/27/16 18/35/23 17/28/17 +f 1/24/13 13/23/12 24/29/18 +f 3/30/19 15/36/24 14/31/20 +f 10/32/21 22/37/25 21/33/22 +f 7/34/4 19/46/3 18/35/23 +f 4/18/7 16/17/6 15/36/24 +f 11/21/10 23/20/9 22/37/25 +f 17/28/17 18/35/23 30/38/26 +f 24/29/18 13/23/12 25/40/28 +f 14/31/20 15/36/24 27/42/30 +f 21/33/22 22/37/25 34/44/32 +f 19/46/3 31/58/36 30/38/26 +f 15/36/24 16/17/6 28/47/34 +f 23/20/9 35/50/37 34/44/32 +f 19/14/3 20/26/15 32/48/35 +f 17/28/17 29/39/27 28/47/34 +f 24/29/18 36/41/29 35/50/37 +f 14/31/20 26/43/31 25/40/28 +f 21/33/22 33/45/33 32/48/35 +f 29/39/27 30/38/26 42/51/38 +f 36/41/29 25/40/28 37/53/40 +f 26/43/31 27/42/30 39/55/42 +f 34/44/32 46/60/46 45/57/44 +f 31/58/36 43/67/48 42/51/38 +f 28/47/34 40/63/49 39/55/42 +f 34/44/32 35/50/37 47/59/45 +f 31/49/36 32/48/35 44/61/47 +f 28/47/34 29/39/27 41/52/39 +f 36/41/29 48/54/41 47/59/45 +f 26/43/31 38/56/43 37/53/40 +f 33/45/33 45/57/44 44/61/47 +f 37/66/40 38/68/43 41/69/39 +f 38/68/43 39/70/42 41/69/39 +f 39/70/42 40/71/49 41/69/39 +f 41/69/39 42/72/38 43/64/48 +f 43/64/48 44/73/47 45/65/44 +f 45/65/44 46/74/46 47/75/45 +f 47/75/45 48/76/41 45/65/44 +f 48/76/41 37/66/40 45/65/44 +f 41/69/39 43/64/48 37/66/40 +o Magazine +v 0.187500 0.875000 1.125000 +v -0.187500 0.875000 1.125000 +v 0.187500 0.875000 0.125000 +v -0.187500 0.875000 0.125000 +v -0.187500 -1.375000 1.125000 +v 0.187500 -1.375000 1.125000 +v -0.187500 -1.375000 0.125000 +v 0.187500 -1.375000 0.125000 +v -0.125000 0.875000 1.125000 +v -0.062500 0.750000 1.125000 +v 0.062500 0.750000 1.125000 +v 0.125000 0.875000 1.125000 +v -0.125000 0.875000 0.125000 +v -0.062500 0.750000 0.125000 +v 0.062500 0.750000 0.125000 +v 0.125000 0.875000 0.125000 +vt 0.450549 0.989130 +vt 0.391941 1.000000 +vt 0.391941 0.989130 +vt 0.391941 0.456522 +vt 0.450549 0.521739 +vt 0.391941 0.521739 +vt 0.391941 0.913043 +vt 0.450549 0.913043 +vt 0.384615 0.891304 +vt 0.377289 0.891304 +vt 0.472527 0.913043 +vt 0.531136 0.521739 +vt 0.531136 0.913043 +vt 0.472527 0.521739 +vt 0.465201 0.891304 +vt 0.457875 0.891304 +vt 0.391941 0.923913 +vt 0.450549 0.923913 +vt 0.391941 0.945652 +vt 0.450549 0.967391 +vt 0.391941 0.967391 +vt 0.450549 0.945652 +vt 0.450549 1.000000 +vt 0.450549 0.456522 +vt 0.388278 0.913043 +vt 0.369963 0.913043 +vt 0.369963 0.521739 +vt 0.373626 0.913043 +vt 0.468864 0.913043 +vt 0.454212 0.913043 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.8944 0.4472 0.0000 +vn 0.8944 0.4472 0.0000 +s off +f 61/77/50 50/78/50 57/79/50 +f 53/80/51 56/81/51 54/82/51 +f 49/83/52 56/81/52 51/84/52 +f 54/82/53 59/85/53 58/86/53 +f 52/87/54 53/88/54 50/89/54 +f 55/90/55 62/91/55 63/92/55 +f 51/84/50 60/93/50 49/83/50 +f 64/94/56 59/95/56 60/93/56 +f 62/96/57 57/79/57 58/97/57 +f 63/98/50 58/97/50 59/95/50 +f 61/77/50 52/99/50 50/78/50 +f 53/80/51 55/100/51 56/81/51 +f 49/83/52 54/82/52 56/81/52 +f 54/82/53 49/83/53 59/85/53 +f 49/83/53 60/101/53 59/85/53 +f 50/102/53 53/103/53 58/86/53 +f 53/103/53 54/82/53 58/86/53 +f 58/86/53 57/104/53 50/102/53 +f 52/87/54 55/90/54 53/88/54 +f 55/90/55 52/87/55 62/91/55 +f 52/87/55 61/105/55 62/91/55 +f 51/84/55 56/81/55 63/92/55 +f 56/81/55 55/90/55 63/92/55 +f 63/92/55 64/106/55 51/84/55 +f 51/84/50 64/94/50 60/93/50 +f 64/94/56 63/98/56 59/95/56 +f 62/96/57 61/77/57 57/79/57 +f 63/98/50 62/96/50 58/97/50 +o Slide +v -0.093750 1.162380 1.125000 +v -0.162380 1.093750 1.125000 +v -0.187500 1.000000 1.125000 +v 0.187500 1.000000 1.125000 +v 0.162380 1.093750 1.125000 +v 0.093750 1.162380 1.125000 +v 0.000000 1.187500 1.125000 +v -0.093750 1.162380 0.125000 +v -0.162380 1.093750 0.125000 +v -0.187500 1.000000 0.125000 +v 0.187500 1.000000 0.125000 +v 0.162380 1.093750 0.125000 +v 0.093750 1.162380 0.125000 +v 0.000000 1.187500 0.125000 +v 0.093750 0.837620 1.375000 +v 0.000000 0.812500 1.375000 +v -0.093750 0.837620 1.375000 +v -0.162380 0.906250 1.375000 +v -0.187500 1.000000 1.375000 +v 0.162380 0.906250 1.375000 +v 0.187500 1.000000 1.375000 +v 0.000000 1.312500 1.375000 +v -0.156250 1.270633 1.375000 +v -0.270633 1.156250 1.375000 +v -0.312500 1.000000 1.375000 +v -0.093750 0.837620 1.125000 +v 0.000000 0.812500 1.125000 +v 0.093750 0.837620 1.125000 +v 0.162380 0.906250 1.125000 +v 0.187500 1.000000 1.125000 +v 0.312500 1.000000 1.375000 +v 0.270633 1.156250 1.375000 +v 0.156250 1.270633 1.375000 +v -0.162380 0.906250 1.125000 +v -0.187500 1.000000 1.125000 +v -0.156250 1.270633 1.125000 +v 0.000000 1.312500 1.125000 +v -0.270633 1.156250 1.125000 +v -0.312500 1.000000 1.125000 +v 0.312500 1.000000 1.125000 +v 0.270633 1.156250 1.125000 +v 0.156250 1.270633 1.125000 +v -0.093750 1.162380 1.437500 +v -0.162380 1.093750 1.437500 +v -0.187500 1.000000 1.437500 +v -0.162380 0.906250 1.437500 +v -0.093750 0.837620 1.437500 +v 0.000000 0.812500 1.437500 +v 0.093750 0.837620 1.437500 +v 0.162380 0.906250 1.437500 +v 0.187500 1.000000 1.437500 +v 0.162380 1.093750 1.437500 +v 0.093750 1.162380 1.437500 +v 0.000000 1.187500 1.437500 +v -0.093750 1.162380 1.375000 +v -0.162380 1.093750 1.375000 +v -0.187500 1.000000 1.375000 +v -0.162380 0.906250 1.375000 +v -0.093750 0.837620 1.375000 +v 0.000000 0.812500 1.375000 +v 0.093750 0.837620 1.375000 +v 0.162380 0.906250 1.375000 +v 0.187500 1.000000 1.375000 +v 0.162380 1.093750 1.375000 +v 0.093750 1.162380 1.375000 +v 0.000000 1.187500 1.375000 +v 0.125000 1.000000 1.125000 +v 0.500000 1.000000 1.125000 +v 0.125000 1.000000 1.000000 +v 0.500000 1.000000 1.000000 +v 0.125000 1.062500 1.125000 +v 0.500000 1.062500 1.125000 +v 0.125000 1.062500 1.000000 +v 0.500000 1.062500 1.000000 +v 0.500000 0.906250 1.125000 +v 0.500000 1.156250 1.125000 +v 0.500000 0.906250 1.000000 +v 0.500000 1.156250 1.000000 +v 0.750000 0.968750 1.125000 +v 0.750000 1.093750 1.125000 +v 0.750000 0.968750 1.000000 +v 0.750000 1.093750 1.000000 +v 0.625000 0.906250 1.000000 +v 0.625000 1.156250 1.000000 +v 0.625000 0.906250 1.125000 +v 0.625000 1.156250 1.125000 +v 0.250000 1.000000 3.500000 +v -0.250000 1.000000 3.500000 +v 0.250000 1.125000 3.500000 +v -0.250000 1.125000 3.500000 +v -0.187500 1.125000 3.500000 +v -0.187500 1.000000 3.500000 +v 0.187500 1.125000 3.500000 +v 0.187500 1.000000 3.500000 +v 0.250000 1.000000 1.375000 +v 0.250000 1.125000 1.375000 +v -0.250000 1.125000 1.375000 +v -0.250000 1.000000 1.375000 +v -0.187500 1.125000 1.375000 +v -0.187500 1.000000 1.375000 +v 0.187500 1.000000 1.375000 +v 0.187500 1.125000 1.375000 +v -0.125000 1.000000 1.125000 +v -0.500000 1.000000 1.125000 +v -0.125000 1.000000 1.000000 +v -0.500000 1.000000 1.000000 +v -0.125000 1.062500 1.125000 +v -0.500000 1.062500 1.125000 +v -0.125000 1.062500 1.000000 +v -0.500000 1.062500 1.000000 +v -0.500000 0.906250 1.125000 +v -0.500000 1.156250 1.125000 +v -0.500000 0.906250 1.000000 +v -0.500000 1.156250 1.000000 +v -0.750000 0.968750 1.125000 +v -0.750000 1.093750 1.125000 +v -0.750000 0.968750 1.000000 +v -0.750000 1.093750 1.000000 +v -0.625000 0.906250 1.000000 +v -0.625000 1.156250 1.000000 +v -0.625000 0.906250 1.125000 +v -0.625000 1.156250 1.125000 +vt 0.022092 0.858808 +vt 0.043842 0.858808 +vt 0.032967 0.912594 +vt 0.043736 0.945870 +vt 0.032967 0.999130 +vt 0.022198 0.945870 +vt 0.690786 0.755520 +vt 0.690786 0.787959 +vt 0.681319 0.804179 +vt 0.886447 0.673913 +vt 0.864469 0.695652 +vt 0.864469 0.673913 +vt 0.864469 0.706522 +vt 0.886447 0.728261 +vt 0.864469 0.728261 +vt 0.886447 0.706522 +vt 0.930403 0.750000 +vt 0.923077 0.706522 +vt 0.930403 0.706522 +vt 0.864469 0.739130 +vt 0.886447 0.739130 +vt 0.908425 0.739130 +vt 0.908425 0.717391 +vt 0.915751 0.706522 +vt 0.886447 0.750000 +vt 0.886447 0.706522 +vt 0.893773 0.706522 +vt 0.000000 0.815217 +vt 0.003663 0.793478 +vt 0.003663 0.815217 +vt 0.000000 0.728261 +vt 0.003663 0.706522 +vt 0.003663 0.728261 +vt 0.128205 0.728261 +vt 0.003663 0.695652 +vt 0.128205 0.706522 +vt 0.003663 0.739130 +vt 0.128205 0.760870 +vt 0.003663 0.760870 +vt 0.128205 0.826087 +vt 0.003663 0.826087 +vt 0.128205 0.815217 +vt 0.128205 0.739130 +vt 0.003663 0.782609 +vt 0.128205 0.793478 +vt 0.003663 0.760870 +vt 0.128205 0.782609 +vt 0.864469 0.695652 +vt 0.886447 0.673913 +vt 0.864469 0.673913 +vt 0.886447 0.728261 +vt 0.864469 0.706522 +vt 0.864469 0.728261 +vt 0.886447 0.706522 +vt 0.886447 0.695652 +vt 0.923077 0.706522 +vt 0.930403 0.750000 +vt 0.930403 0.706522 +vt 0.864469 0.739130 +vt 0.886447 0.739130 +vt 0.915751 0.750000 +vt 0.923077 0.750000 +vt 0.915751 0.706522 +vt 0.893773 0.750000 +vt 0.901099 0.739130 +vt 0.893773 0.706522 +vt 0.038405 0.830860 +vt 0.042385 0.842672 +vt 0.051093 0.858808 +vt 0.048664 0.885701 +vt 0.042030 0.905388 +vt 0.023904 0.905388 +vt 0.017270 0.885701 +vt 0.014841 0.858808 +vt 0.023549 0.842672 +vt 0.027529 0.830860 +vt 0.032967 0.826536 +vt 0.023641 0.929891 +vt 0.027582 0.918194 +vt 0.032967 0.913913 +vt 0.038352 0.918194 +vt 0.042293 0.929891 +vt 0.050916 0.945870 +vt 0.048511 0.972500 +vt 0.041941 0.991995 +vt 0.023993 0.991995 +vt 0.017423 0.972500 +vt 0.015018 0.945870 +vt 0.675853 0.799833 +vt 0.671852 0.787959 +vt 0.670387 0.771739 +vt 0.671852 0.755520 +vt 0.675853 0.743646 +vt 0.681319 0.739300 +vt 0.686785 0.743646 +vt 0.692251 0.771739 +vt 0.686785 0.799833 +vt 0.886447 0.695652 +vt 0.923077 0.750000 +vt 0.915751 0.750000 +vt 0.901099 0.717391 +vt 0.901099 0.739130 +vt 0.893773 0.750000 +vt -0.000000 0.793478 +vt 0.000000 0.706522 +vt 0.128205 0.695652 +vt 0.128205 0.760870 +vt 0.908425 0.717391 +vt 0.908425 0.739130 +vt 0.901099 0.717391 +vt 0.886447 0.706522 +vt 0.886447 0.750000 +vt 0.263736 0.804348 +vt 0.205128 0.826087 +vt 0.205128 0.804348 +vt 0.263736 0.695652 +vt 0.205128 0.717391 +vt 0.205128 0.695652 +vt 0.263736 0.717391 +vt 0.205128 0.739130 +vt 0.263736 0.760870 +vt 0.205128 0.782609 +vt 0.205128 0.760870 +vt 0.263736 0.739130 +vt 0.263736 0.782609 +vt -0.000000 0.913043 +vt 0.014652 0.934783 +vt -0.000000 0.934783 +vt -0.000000 0.826087 +vt 0.014652 0.847826 +vt -0.000000 0.847826 +vt 0.014652 0.956522 +vt -0.000000 0.956522 +vt 0.014652 0.869565 +vt -0.000000 0.869565 +vt 0.014652 0.891304 +vt -0.000000 0.891304 +vt 0.014652 0.913043 +vt 0.670330 0.934783 +vt 0.666667 0.956522 +vt 0.666667 0.934783 +vt 0.670330 0.826087 +vt 0.666667 0.847826 +vt 0.666667 0.826087 +vt 0.670330 0.869565 +vt 0.666667 0.891304 +vt 0.666667 0.869565 +vt 0.670330 0.760870 +vt 0.666667 0.782609 +vt 0.666667 0.760870 +vt 0.670330 0.956522 +vt 0.666667 0.978261 +vt 0.670330 0.847826 +vt 0.670330 0.891304 +vt 0.666667 0.913043 +vt 0.670330 0.782609 +vt 0.666667 0.804348 +vt 0.670330 0.978261 +vt 0.666667 1.000000 +vt 0.670330 0.913043 +vt 0.670330 0.804348 +vt 0.670330 0.739130 +vt 0.666667 0.739130 +vt 0.901099 0.695652 +vt 0.908425 0.695652 +vt 0.908425 0.782609 +vt 0.901099 0.760870 +vt 0.908425 0.760870 +vt 0.901099 0.673913 +vt 0.908425 0.673913 +vt 0.901099 0.695652 +vt 0.908425 0.695652 +vt 0.901099 0.760870 +vt 0.908425 0.782609 +vt 0.908425 0.760870 +vt 0.901099 0.673913 +vt 0.908425 0.673913 +vt 0.263736 0.826087 +vt 0.014652 0.826087 +vt 0.670330 1.000000 +vt 0.901099 0.782609 +vt 0.901099 0.782609 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.8660 0.5000 0.0000 +vn -0.9659 0.2588 0.0000 +vn 0.9659 0.2588 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.5000 0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.8507 0.5257 0.0000 +vn 0.8507 -0.5257 0.0000 +vn 0.2298 -0.9732 0.0000 +vn 0.2298 0.9732 0.0000 +vn -0.8507 -0.5257 0.0000 +vn -0.8507 0.5257 0.0000 +vn -0.2298 -0.9732 0.0000 +vn -0.2298 0.9732 0.0000 +s off +f 83/107/58 85/108/58 86/109/58 +f 99/110/59 101/111/59 94/112/59 +f 114/113/58 116/114/58 118/115/58 +f 131/116/60 134/117/60 132/118/60 +f 138/119/61 135/120/61 136/121/61 +f 134/117/59 137/122/59 138/119/59 +f 140/123/62 141/124/62 139/125/62 +f 132/126/58 135/120/58 131/127/58 +f 146/128/59 145/129/59 147/130/59 +f 140/131/58 139/132/58 149/133/58 +f 156/134/58 154/135/58 152/136/58 +f 157/137/58 151/138/58 153/139/58 +f 151/138/63 160/140/63 153/139/63 +f 158/141/60 159/142/60 151/138/60 +f 157/143/62 165/144/62 158/145/62 +f 152/136/60 164/146/60 156/147/60 +f 154/135/62 162/148/62 152/136/62 +f 153/139/61 166/149/61 157/143/61 +f 155/150/61 161/151/61 154/135/61 +f 156/152/63 163/153/63 155/150/63 +f 170/154/60 167/155/60 168/156/60 +f 171/157/61 174/158/61 172/159/61 +f 170/154/59 173/160/59 169/161/59 +f 177/162/63 176/163/63 175/164/63 +f 171/157/58 168/165/58 167/166/58 +f 184/167/59 178/168/59 183/169/59 +f 186/170/58 180/171/58 185/172/58 +f 79/173/58 84/174/58 85/108/58 +f 85/108/58 95/175/58 96/176/58 +f 96/176/58 97/177/58 85/108/58 +f 97/177/58 86/109/58 85/108/58 +f 86/109/58 87/178/58 83/107/58 +f 87/178/58 88/179/58 83/107/58 +f 88/179/58 89/180/58 83/107/58 +f 83/107/58 82/181/58 81/182/58 +f 81/182/58 80/183/58 79/173/58 +f 79/173/58 85/108/58 81/182/58 +f 81/182/58 85/108/58 83/107/58 +f 94/112/59 93/184/59 92/185/59 +f 92/185/59 91/186/59 94/112/59 +f 91/186/59 90/187/59 94/112/59 +f 90/187/59 98/188/59 99/110/59 +f 99/110/59 103/189/59 102/190/59 +f 102/190/59 100/191/59 99/110/59 +f 100/191/59 101/111/59 99/110/59 +f 101/111/59 106/192/59 94/112/59 +f 106/192/59 105/193/59 94/112/59 +f 105/193/59 104/194/59 94/112/59 +f 90/187/59 99/110/59 94/112/59 +f 118/115/58 107/195/58 108/196/58 +f 108/196/58 109/197/58 110/198/58 +f 110/198/58 111/199/58 112/200/58 +f 112/200/58 113/201/58 110/198/58 +f 113/201/58 114/113/58 110/198/58 +f 114/113/58 115/202/58 116/114/58 +f 116/114/58 117/203/58 118/115/58 +f 118/115/58 108/196/58 114/113/58 +f 108/196/58 110/198/58 114/113/58 +f 131/116/60 133/204/60 134/117/60 +f 138/119/61 137/122/61 135/120/61 +f 134/117/59 133/204/59 137/122/59 +f 140/123/62 142/205/62 141/124/62 +f 132/126/58 136/121/58 135/120/58 +f 147/130/59 141/124/59 142/205/59 +f 142/205/59 148/206/59 147/130/59 +f 148/206/59 146/128/59 147/130/59 +f 149/133/58 143/207/58 144/208/58 +f 144/208/58 150/209/58 149/133/58 +f 150/209/58 140/131/58 149/133/58 +f 156/134/58 155/210/58 154/135/58 +f 157/137/58 158/211/58 151/138/58 +f 151/138/63 159/142/63 160/140/63 +f 158/141/60 165/212/60 159/142/60 +f 157/143/62 166/149/62 165/144/62 +f 152/136/60 162/148/60 164/146/60 +f 154/135/62 161/151/62 162/148/62 +f 153/139/61 160/140/61 166/149/61 +f 155/150/61 163/153/61 161/151/61 +f 156/152/63 164/213/63 163/153/63 +f 170/154/60 169/161/60 167/155/60 +f 171/157/61 173/160/61 174/158/61 +f 170/154/59 174/158/59 173/160/59 +f 177/162/63 178/168/63 176/163/63 +f 171/157/58 172/159/58 168/165/58 +f 178/168/59 177/162/59 183/169/59 +f 183/169/59 181/214/59 182/215/59 +f 182/215/59 184/167/59 183/169/59 +f 180/171/58 179/216/58 185/172/58 +f 185/172/58 175/217/58 176/218/58 +f 176/218/58 186/170/58 185/172/58 +s 1 +f 73/219/64 67/220/65 66/221/64 +f 75/222/66 69/223/67 68/224/66 +f 76/225/67 70/226/68 69/223/67 +f 78/227/61 65/228/69 71/229/61 +f 77/230/68 71/229/61 70/226/68 +f 72/231/69 66/221/64 65/228/69 +f 87/232/69 102/233/64 88/234/64 +f 95/235/66 105/236/67 96/237/67 +f 88/234/64 103/238/65 89/239/65 +f 96/237/67 106/240/68 97/241/68 +f 97/241/68 101/242/61 86/243/61 +f 86/243/61 100/244/69 87/232/69 +f 121/245/62 110/246/70 109/247/62 +f 128/248/67 117/249/68 116/250/67 +f 130/251/61 107/252/69 118/253/61 +f 125/254/71 114/255/72 113/256/71 +f 122/257/70 111/258/73 110/246/70 +f 129/259/68 118/253/61 117/249/68 +f 119/260/69 108/261/64 107/252/69 +f 126/262/72 115/263/63 114/255/72 +f 123/264/73 112/265/60 111/258/73 +f 120/266/64 109/247/62 108/261/64 +f 127/267/63 116/250/67 115/263/63 +f 124/268/60 113/256/71 112/269/60 +f 146/128/74 143/207/75 145/129/75 +f 145/129/75 149/270/76 147/271/76 +f 142/272/61 150/273/77 148/274/77 +f 148/274/77 144/208/74 146/128/74 +f 147/271/76 139/275/60 141/276/60 +f 179/216/78 182/215/79 181/214/78 +f 185/277/80 181/214/78 183/278/80 +f 186/279/81 178/280/61 184/281/81 +f 180/171/79 184/281/81 182/215/79 +f 175/282/60 183/278/80 177/283/60 +f 73/219/64 74/284/65 67/220/65 +f 75/222/66 76/225/67 69/223/67 +f 76/225/67 77/230/68 70/226/68 +f 78/227/61 72/231/69 65/228/69 +f 77/230/68 78/227/61 71/229/61 +f 72/231/69 73/219/64 66/221/64 +f 87/232/69 100/244/69 102/233/64 +f 95/235/66 104/285/66 105/236/67 +f 88/234/64 102/233/64 103/238/65 +f 96/237/67 105/236/67 106/240/68 +f 97/241/68 106/240/68 101/242/61 +f 86/243/61 101/242/61 100/244/69 +f 121/245/62 122/257/70 110/246/70 +f 128/248/67 129/259/68 117/249/68 +f 130/251/61 119/260/69 107/252/69 +f 125/254/71 126/262/72 114/255/72 +f 122/257/70 123/264/73 111/258/73 +f 129/259/68 130/251/61 118/253/61 +f 119/260/69 120/266/64 108/261/64 +f 126/262/72 127/267/63 115/263/63 +f 123/264/73 124/286/60 112/265/60 +f 120/266/64 121/245/62 109/247/62 +f 127/267/63 128/248/67 116/250/67 +f 124/268/60 125/254/71 113/256/71 +f 146/128/74 144/208/74 143/207/75 +f 145/129/75 143/207/75 149/270/76 +f 142/272/61 140/287/61 150/273/77 +f 148/274/77 150/273/77 144/208/74 +f 147/271/76 149/270/76 139/275/60 +f 179/216/78 180/171/79 182/215/79 +f 185/277/80 179/216/78 181/214/78 +f 186/279/81 176/288/61 178/280/61 +f 180/171/79 186/279/81 184/281/81 +f 175/282/60 185/277/80 183/278/80 +o Gun v 0.000000 1.187500 4.375000 v 0.000000 1.187500 8.000000 v 0.093750 1.162380 4.375000 @@ -213,20 +1054,6 @@ v -0.250000 0.875000 1.625000 v -0.250000 1.000000 1.625000 v 0.125000 0.312500 1.375000 v -0.125000 0.312500 1.375000 -v -0.093750 1.162380 1.125000 -v -0.162380 1.093750 1.125000 -v -0.187500 1.000000 1.125000 -v 0.187500 1.000000 1.125000 -v 0.162380 1.093750 1.125000 -v 0.093750 1.162380 1.125000 -v 0.000000 1.187500 1.125000 -v -0.093750 1.162380 0.125000 -v -0.162380 1.093750 0.125000 -v -0.187500 1.000000 0.125000 -v 0.187500 1.000000 0.125000 -v 0.162380 1.093750 0.125000 -v 0.093750 1.162380 0.125000 -v 0.000000 1.187500 0.125000 v 0.187500 1.000000 1.625000 v -0.187500 1.000000 1.625000 v 0.187500 1.000000 0.125000 @@ -247,61 +1074,9 @@ v -0.125000 1.216506 -0.125000 v 0.000000 1.250000 -0.125000 v -0.216506 1.125000 -0.125000 v -0.250000 1.000000 -0.125000 -v 0.093750 0.837620 1.375000 -v 0.000000 0.812500 1.375000 -v -0.093750 0.837620 1.375000 -v -0.162380 0.906250 1.375000 -v -0.187500 1.000000 1.375000 v 0.250000 1.000000 -0.125000 v 0.216506 1.125000 -0.125000 v 0.125000 1.216506 -0.125000 -v 0.162380 0.906250 1.375000 -v 0.187500 1.000000 1.375000 -v 0.000000 1.312500 1.375000 -v -0.156250 1.270633 1.375000 -v -0.270633 1.156250 1.375000 -v -0.312500 1.000000 1.375000 -v -0.093750 0.837620 1.125000 -v 0.000000 0.812500 1.125000 -v 0.093750 0.837620 1.125000 -v 0.162380 0.906250 1.125000 -v 0.187500 1.000000 1.125000 -v 0.312500 1.000000 1.375000 -v 0.270633 1.156250 1.375000 -v 0.156250 1.270633 1.375000 -v -0.162380 0.906250 1.125000 -v -0.187500 1.000000 1.125000 -v -0.156250 1.270633 1.125000 -v 0.000000 1.312500 1.125000 -v -0.270633 1.156250 1.125000 -v -0.312500 1.000000 1.125000 -v 0.312500 1.000000 1.125000 -v 0.270633 1.156250 1.125000 -v 0.156250 1.270633 1.125000 -v -0.093750 1.162380 1.437500 -v -0.162380 1.093750 1.437500 -v -0.187500 1.000000 1.437500 -v -0.162380 0.906250 1.437500 -v -0.093750 0.837620 1.437500 -v 0.000000 0.812500 1.437500 -v 0.093750 0.837620 1.437500 -v 0.162380 0.906250 1.437500 -v 0.187500 1.000000 1.437500 -v 0.162380 1.093750 1.437500 -v 0.093750 1.162380 1.437500 -v 0.000000 1.187500 1.437500 -v -0.093750 1.162380 1.375000 -v -0.162380 1.093750 1.375000 -v -0.187500 1.000000 1.375000 -v -0.162380 0.906250 1.375000 -v -0.093750 0.837620 1.375000 -v 0.000000 0.812500 1.375000 -v 0.093750 0.837620 1.375000 -v 0.162380 0.906250 1.375000 -v 0.187500 1.000000 1.375000 -v 0.162380 1.093750 1.375000 -v 0.093750 1.162380 1.375000 -v 0.000000 1.187500 1.375000 v -0.187500 1.000000 1.437500 v -0.162380 0.906250 1.437500 v -0.093750 0.837620 1.437500 @@ -496,14 +1271,6 @@ v 0.250000 0.156350 4.656250 v 0.250000 0.218850 4.656250 v 0.250000 0.156350 4.593750 v 0.250000 0.218850 4.593750 -v 0.125000 1.000000 1.125000 -v 0.500000 1.000000 1.125000 -v 0.125000 1.000000 1.000000 -v 0.500000 1.000000 1.000000 -v 0.125000 1.062500 1.125000 -v 0.500000 1.062500 1.125000 -v 0.125000 1.062500 1.000000 -v 0.500000 1.062500 1.000000 v 0.312500 1.000000 1.250000 v 0.312500 0.875000 1.250000 v 0.312500 1.000000 -0.875000 @@ -512,18 +1279,6 @@ v 0.437500 0.875000 1.250000 v 0.437500 1.000000 1.250000 v 0.437500 0.875000 0.000000 v 0.437500 1.000000 0.000000 -v 0.500000 0.906250 1.125000 -v 0.500000 1.156250 1.125000 -v 0.500000 0.906250 1.000000 -v 0.500000 1.156250 1.000000 -v 0.750000 0.968750 1.125000 -v 0.750000 1.093750 1.125000 -v 0.750000 0.968750 1.000000 -v 0.750000 1.093750 1.000000 -v 0.625000 0.906250 1.000000 -v 0.625000 1.156250 1.000000 -v 0.625000 0.906250 1.125000 -v 0.625000 1.156250 1.125000 v 0.687500 0.875000 0.000000 v 0.687500 1.000000 0.000000 v 0.562500 0.875000 -0.500000 @@ -602,22 +1357,6 @@ v -0.250000 0.562500 -8.000000 v -0.125000 0.562500 -8.125000 v 0.312500 0.875000 -1.000000 v -0.312500 0.875000 -1.000000 -v 0.250000 1.000000 3.500000 -v -0.250000 1.000000 3.500000 -v 0.250000 1.125000 3.500000 -v -0.250000 1.125000 3.500000 -v -0.187500 1.125000 3.500000 -v -0.187500 1.000000 3.500000 -v 0.187500 1.125000 3.500000 -v 0.187500 1.000000 3.500000 -v 0.250000 1.000000 1.375000 -v 0.250000 1.125000 1.375000 -v -0.250000 1.125000 1.375000 -v -0.250000 1.000000 1.375000 -v -0.187500 1.125000 1.375000 -v -0.187500 1.000000 1.375000 -v 0.187500 1.000000 1.375000 -v 0.187500 1.125000 1.375000 v 0.312500 1.000000 -1.000000 v -0.312500 1.000000 -1.000000 v 0.312500 1.000000 -0.125000 @@ -716,70 +1455,6 @@ v -0.250000 1.437500 -0.625000 v -0.250000 1.525888 -0.588388 v -0.250000 1.562500 -0.500000 v -0.250000 1.525888 -0.411612 -v 0.187500 0.875000 1.125000 -v -0.187500 0.875000 1.125000 -v 0.187500 0.875000 0.125000 -v -0.187500 0.875000 0.125000 -v -0.187500 -1.375000 1.125000 -v 0.187500 -1.375000 1.125000 -v -0.187500 -1.375000 0.125000 -v 0.187500 -1.375000 0.125000 -v 0.000000 1.000000 0.187500 -v -0.062500 0.983253 0.187500 -v -0.108253 0.937500 0.187500 -v -0.125000 0.875000 0.187500 -v -0.108253 0.812500 0.187500 -v -0.062500 0.766747 0.187500 -v 0.000000 0.750000 0.187500 -v 0.062500 0.766747 0.187500 -v 0.108253 0.812500 0.187500 -v 0.125000 0.875000 0.187500 -v 0.108253 0.937500 0.187500 -v 0.062500 0.983253 0.187500 -v 0.000000 1.000000 0.812500 -v -0.062500 0.983253 0.812500 -v -0.108253 0.937500 0.812500 -v -0.125000 0.875000 0.812500 -v -0.108253 0.812500 0.812500 -v -0.062500 0.766747 0.812500 -v 0.000000 0.750000 0.812500 -v 0.062500 0.766747 0.812500 -v 0.108253 0.812500 0.812500 -v 0.125000 0.875000 0.812500 -v 0.108253 0.937500 0.812500 -v 0.062500 0.983253 0.812500 -v 0.000000 0.968750 1.000000 -v -0.046875 0.956190 1.000000 -v -0.081190 0.921875 1.000000 -v -0.093750 0.875000 1.000000 -v -0.081190 0.828125 1.000000 -v -0.046875 0.793810 1.000000 -v 0.000000 0.781250 1.000000 -v 0.046875 0.793810 1.000000 -v 0.081190 0.828125 1.000000 -v 0.093750 0.875000 1.000000 -v 0.081190 0.921875 1.000000 -v 0.046875 0.956190 1.000000 -v 0.000000 0.906250 1.062500 -v -0.015625 0.902063 1.062500 -v -0.027063 0.890625 1.062500 -v -0.031250 0.875000 1.062500 -v -0.027063 0.859375 1.062500 -v -0.015625 0.847937 1.062500 -v 0.000000 0.843750 1.062500 -v 0.015625 0.847937 1.062500 -v 0.027063 0.859375 1.062500 -v 0.031250 0.875000 1.062500 -v 0.027063 0.890625 1.062500 -v 0.015625 0.902063 1.062500 -v -0.125000 0.875000 1.125000 -v -0.062500 0.750000 1.125000 -v 0.062500 0.750000 1.125000 -v 0.125000 0.875000 1.125000 -v -0.125000 0.875000 0.125000 -v -0.062500 0.750000 0.125000 -v 0.062500 0.750000 0.125000 -v 0.125000 0.875000 0.125000 v -0.125000 0.250000 0.000000 v 0.125000 0.250000 0.000000 v -0.125000 0.250000 -0.750000 @@ -924,26 +1599,6 @@ v -0.687500 0.875000 0.000000 v -0.687500 1.000000 0.000000 v -0.562500 0.875000 -0.500000 v -0.562500 1.000000 -0.500000 -v -0.125000 1.000000 1.125000 -v -0.500000 1.000000 1.125000 -v -0.125000 1.000000 1.000000 -v -0.500000 1.000000 1.000000 -v -0.125000 1.062500 1.125000 -v -0.500000 1.062500 1.125000 -v -0.125000 1.062500 1.000000 -v -0.500000 1.062500 1.000000 -v -0.500000 0.906250 1.125000 -v -0.500000 1.156250 1.125000 -v -0.500000 0.906250 1.000000 -v -0.500000 1.156250 1.000000 -v -0.750000 0.968750 1.125000 -v -0.750000 1.093750 1.125000 -v -0.750000 0.968750 1.000000 -v -0.750000 1.093750 1.000000 -v -0.625000 0.906250 1.000000 -v -0.625000 1.156250 1.000000 -v -0.625000 0.906250 1.125000 -v -0.625000 1.156250 1.125000 vt 0.062271 0.065217 vt 0.058608 0.043478 vt 0.062271 0.043478 @@ -1139,15 +1794,6 @@ vt 0.131868 0.543478 vt 0.723636 0.674017 vt 0.748892 0.674017 vt 0.736264 0.738921 -vt 0.022092 0.858808 -vt 0.043842 0.858808 -vt 0.032967 0.912594 -vt 0.043736 0.945870 -vt 0.032967 0.999130 -vt 0.022198 0.945870 -vt 0.690786 0.755520 -vt 0.690786 0.787959 -vt 0.681319 0.804179 vt 0.886447 0.858696 vt 0.879121 0.869565 vt 0.879121 0.858696 @@ -1231,7 +1877,7 @@ vt 0.267399 0.880435 vt 0.267399 0.847826 vt 0.285714 0.913043 vt 0.285714 0.902174 -vt 0.293040 0.902174 +vt 0.289377 0.902174 vt 0.271062 0.902174 vt 0.311355 0.880435 vt 0.300366 0.902174 @@ -1353,18 +1999,6 @@ vt 0.307692 0.815217 vt 0.278388 0.847826 vt 0.307692 0.826087 vt 0.197802 0.434783 -vt 0.886447 0.673913 -vt 0.864469 0.695652 -vt 0.864469 0.673913 -vt 0.864469 0.706522 -vt 0.886447 0.728261 -vt 0.864469 0.728261 -vt 0.886447 0.706522 -vt 0.930403 0.750000 -vt 0.923077 0.706522 -vt 0.930403 0.706522 -vt 0.864469 0.739130 -vt 0.886447 0.739130 vt 0.842491 0.630435 vt 0.915751 0.652174 vt 0.842491 0.652174 @@ -1377,12 +2011,6 @@ vt 0.842491 0.652174 vt 0.901099 0.586957 vt 0.915751 0.608696 vt 0.901099 0.608696 -vt 0.908425 0.739130 -vt 0.908425 0.717391 -vt 0.915751 0.706522 -vt 0.886447 0.750000 -vt 0.886447 0.706522 -vt 0.893773 0.706522 vt 0.945055 0.630435 vt 0.967033 0.673913 vt 0.945055 0.630435 @@ -1410,26 +2038,6 @@ vt 0.864469 0.673913 vt 0.864469 0.684783 vt 0.864469 0.695652 vt 0.183150 0.630435 -vt 0.000000 0.815217 -vt 0.003663 0.793478 -vt 0.003663 0.815217 -vt 0.000000 0.728261 -vt 0.003663 0.706522 -vt 0.003663 0.728261 -vt 0.128205 0.728261 -vt 0.003663 0.695652 -vt 0.128205 0.706522 -vt 0.003663 0.739130 -vt 0.128205 0.760870 -vt 0.003663 0.760870 -vt 0.128205 0.826087 -vt 0.003663 0.826087 -vt 0.128205 0.815217 -vt 0.128205 0.739130 -vt 0.003663 0.782609 -vt 0.128205 0.793478 -vt 0.003663 0.760870 -vt 0.128205 0.782609 vt 0.216117 0.282609 vt 0.260073 0.304348 vt 0.216117 0.304348 @@ -1520,31 +2128,6 @@ vt 0.832911 0.593645 vt 0.832911 0.637123 vt 0.832911 0.667225 vt 0.822767 0.667225 -vt 0.450549 0.989130 -vt 0.391941 1.000000 -vt 0.391941 0.989130 -vt 0.391941 0.456522 -vt 0.450549 0.521739 -vt 0.391941 0.521739 -vt 0.391941 0.913043 -vt 0.450549 0.913043 -vt 0.369963 0.913043 -vt 0.369963 0.913043 -vt 0.472527 0.913043 -vt 0.531136 0.521739 -vt 0.531136 0.913043 -vt 0.472527 0.521739 -vt 0.450549 0.913043 -vt 0.450549 0.913043 -vt 0.107288 0.837093 -vt 0.113553 0.826359 -vt 0.119818 0.858560 -vt 0.391941 0.923913 -vt 0.450549 0.923913 -vt 0.391941 0.945652 -vt 0.450549 0.967391 -vt 0.391941 0.967391 -vt 0.450549 0.945652 vt 0.670330 0.652174 vt 0.626374 0.695652 vt 0.626374 0.652174 @@ -1686,25 +2269,6 @@ vt 0.901099 0.586957 vt 0.901099 0.608696 vt 0.945055 0.630435 vt 0.945055 0.630435 -vt 0.864469 0.695652 -vt 0.886447 0.673913 -vt 0.864469 0.673913 -vt 0.886447 0.728261 -vt 0.864469 0.706522 -vt 0.864469 0.728261 -vt 0.886447 0.706522 -vt 0.886447 0.695652 -vt 0.923077 0.706522 -vt 0.930403 0.750000 -vt 0.930403 0.706522 -vt 0.864469 0.739130 -vt 0.886447 0.739130 -vt 0.915751 0.750000 -vt 0.923077 0.750000 -vt 0.915751 0.706522 -vt 0.893773 0.750000 -vt 0.901099 0.739130 -vt 0.893773 0.706522 vt 0.058608 0.054348 vt 0.058608 0.097826 vt 0.058608 0.141304 @@ -1758,37 +2322,6 @@ vt 0.743554 0.658180 vt 0.750845 0.695652 vt 0.748892 0.717287 vt 0.743554 0.733124 -vt 0.038405 0.830860 -vt 0.042385 0.842672 -vt 0.051093 0.858808 -vt 0.048664 0.885701 -vt 0.042030 0.905388 -vt 0.023904 0.905388 -vt 0.017270 0.885701 -vt 0.014841 0.858808 -vt 0.023549 0.842672 -vt 0.027529 0.830860 -vt 0.032967 0.826536 -vt 0.023641 0.929891 -vt 0.027582 0.918194 -vt 0.032967 0.913913 -vt 0.038352 0.918194 -vt 0.042293 0.929891 -vt 0.050916 0.945870 -vt 0.048511 0.972500 -vt 0.041941 0.991995 -vt 0.023993 0.991995 -vt 0.017423 0.972500 -vt 0.015018 0.945870 -vt 0.675853 0.799833 -vt 0.671852 0.787959 -vt 0.670387 0.771739 -vt 0.671852 0.755520 -vt 0.675853 0.743646 -vt 0.681319 0.739300 -vt 0.686785 0.743646 -vt 0.692251 0.771739 -vt 0.686785 0.799833 vt 0.923077 0.858696 vt 0.901099 0.782609 vt 0.267399 0.934783 @@ -1799,7 +2332,7 @@ vt 0.930403 0.771739 vt 0.996337 0.858696 vt 0.945055 0.880435 vt 0.278388 0.913043 -vt 0.296703 0.902174 +vt 0.293040 0.902174 vt 0.274725 0.902174 vt 0.307692 0.902174 vt 0.608059 0.826087 @@ -1822,24 +2355,14 @@ vt 0.307692 0.728261 vt 0.274725 0.815217 vt 0.307692 0.847826 vt 0.043956 0.434783 -vt 0.886447 0.695652 -vt 0.923077 0.750000 vt 0.915751 0.630435 vt 0.835165 0.652174 vt 0.915751 0.586957 -vt 0.915751 0.750000 -vt 0.901099 0.717391 -vt 0.901099 0.739130 -vt 0.893773 0.750000 vt 0.915751 0.608696 vt 0.842491 0.695652 vt 0.043956 0.586957 vt 0.197802 0.586957 vt 0.043956 0.543478 -vt -0.000000 0.793478 -vt 0.000000 0.706522 -vt 0.128205 0.695652 -vt 0.128205 0.760870 vt 0.208791 0.282609 vt 0.208791 0.391304 vt 0.772894 0.771739 @@ -1877,23 +2400,6 @@ vt 0.822767 0.637123 vt 0.827839 0.630889 vt 0.835012 0.652174 vt 0.827839 0.673459 -vt 0.450549 1.000000 -vt 0.450549 0.456522 -vt 0.369963 0.913043 -vt 0.369963 0.913043 -vt 0.369963 0.521739 -vt 0.369963 0.913043 -vt 0.450549 0.913043 -vt 0.450549 0.913043 -vt 0.117170 0.866417 -vt 0.107288 0.858560 -vt 0.113553 0.869293 -vt 0.109936 0.866417 -vt 0.106319 0.847826 -vt 0.109936 0.829235 -vt 0.117170 0.829235 -vt 0.119818 0.837092 -vt 0.120788 0.847826 vt 0.772894 0.586957 vt 0.750916 0.630435 vt 0.728938 0.586957 @@ -1922,11 +2428,6 @@ vt 0.835165 0.652174 vt 0.842491 0.652174 vt 0.915751 0.586957 vt 0.915751 0.608696 -vt 0.908425 0.717391 -vt 0.908425 0.739130 -vt 0.901099 0.717391 -vt 0.886447 0.706522 -vt 0.886447 0.750000 vt 0.274725 0.108696 vt 0.274725 0.130435 vt 0.274725 0.086957 @@ -1998,19 +2499,6 @@ vt 0.611722 0.782609 vt 0.611722 0.978261 vt 0.611722 0.913043 vt 0.611722 0.804348 -vt 0.263736 0.804348 -vt 0.205128 0.826087 -vt 0.205128 0.804348 -vt 0.263736 0.695652 -vt 0.205128 0.717391 -vt 0.205128 0.695652 -vt 0.263736 0.717391 -vt 0.205128 0.739130 -vt 0.263736 0.760870 -vt 0.205128 0.782609 -vt 0.205128 0.760870 -vt 0.263736 0.739130 -vt 0.263736 0.782609 vt 0.706960 0.760870 vt 0.721612 0.782609 vt 0.706960 0.782609 @@ -2024,44 +2512,6 @@ vt 0.721612 0.739130 vt 0.706960 0.739130 vt 0.721612 0.717391 vt 0.721612 0.760870 -vt -0.000000 0.913043 -vt 0.014652 0.934783 -vt -0.000000 0.934783 -vt -0.000000 0.826087 -vt 0.014652 0.847826 -vt -0.000000 0.847826 -vt 0.014652 0.956522 -vt -0.000000 0.956522 -vt 0.014652 0.869565 -vt -0.000000 0.869565 -vt 0.014652 0.891304 -vt -0.000000 0.891304 -vt 0.014652 0.913043 -vt 0.670330 0.934783 -vt 0.666667 0.956522 -vt 0.666667 0.934783 -vt 0.670330 0.826087 -vt 0.666667 0.847826 -vt 0.666667 0.826087 -vt 0.670330 0.869565 -vt 0.666667 0.891304 -vt 0.666667 0.869565 -vt 0.670330 0.760870 -vt 0.666667 0.782609 -vt 0.666667 0.760870 -vt 0.670330 0.956522 -vt 0.666667 0.978261 -vt 0.670330 0.847826 -vt 0.670330 0.891304 -vt 0.666667 0.913043 -vt 0.670330 0.782609 -vt 0.666667 0.804348 -vt 0.670330 0.978261 -vt 0.666667 1.000000 -vt 0.670330 0.913043 -vt 0.670330 0.804348 -vt 0.670330 0.739130 -vt 0.666667 0.739130 vt 0.128205 0.739130 vt 0.205128 0.760870 vt 0.128205 0.760870 @@ -2090,13 +2540,6 @@ vt 0.608059 0.804348 vt 0.611722 0.782609 vt 0.611722 0.804348 vt 0.611722 0.673913 -vt 0.901099 0.695652 -vt 0.908425 0.695652 -vt 0.908425 0.782609 -vt 0.901099 0.760870 -vt 0.908425 0.760870 -vt 0.901099 0.673913 -vt 0.908425 0.673913 vt 0.945055 0.608696 vt 0.945055 0.586957 vt 0.967033 0.608696 @@ -2247,60 +2690,6 @@ vt 0.820513 0.760870 vt 0.816850 0.739130 vt 0.820513 0.739130 vt 0.816850 0.717391 -vt 0.106227 0.836957 -vt 0.069597 0.826087 -vt 0.106227 0.826087 -vt 0.106227 0.934783 -vt 0.069597 0.923913 -vt 0.106227 0.923913 -vt 0.106227 0.880435 -vt 0.069597 0.869565 -vt 0.106227 0.869565 -vt 0.106227 0.902174 -vt 0.069597 0.891304 -vt 0.106227 0.891304 -vt 0.106227 0.847826 -vt 0.069597 0.836957 -vt 0.106227 0.945652 -vt 0.069597 0.934783 -vt 0.069597 0.880435 -vt 0.106227 0.913043 -vt 0.069597 0.902174 -vt 0.106227 0.858696 -vt 0.069597 0.847826 -vt 0.106227 0.956522 -vt 0.069597 0.945652 -vt 0.069597 0.913043 -vt 0.069597 0.858696 -vt 0.058608 0.945652 -vt 0.058608 0.934783 -vt 0.058608 0.891304 -vt 0.058608 0.880435 -vt 0.058608 0.913043 -vt 0.058608 0.902174 -vt 0.058608 0.858696 -vt 0.058608 0.847826 -vt 0.069597 0.956522 -vt 0.058608 0.923913 -vt 0.058608 0.836957 -vt 0.058608 0.826087 -vt 0.058608 0.869565 -vt 0.054945 0.945652 -vt 0.054945 0.934783 -vt 0.054945 0.891304 -vt 0.054945 0.880435 -vt 0.054945 0.913043 -vt 0.054945 0.902174 -vt 0.054945 0.847826 -vt 0.058608 0.956522 -vt 0.054945 0.869565 -vt 0.054945 0.858696 -vt 0.054945 0.836957 -vt 0.054945 0.826087 -vt 0.054945 0.923913 -vt 0.053164 0.826561 -vt 0.054593 0.829009 -vt 0.053164 0.836354 vt 0.750916 0.652174 vt 0.692308 0.652174 vt 0.688645 0.652174 @@ -2367,13 +2756,6 @@ vt 0.318681 0.358696 vt 0.945055 0.608696 vt 0.967033 0.608696 vt 0.945055 0.586957 -vt 0.901099 0.695652 -vt 0.908425 0.695652 -vt 0.901099 0.760870 -vt 0.908425 0.782609 -vt 0.908425 0.760870 -vt 0.901099 0.673913 -vt 0.908425 0.673913 vt -0.000000 0.206522 vt 0.000000 0.097826 vt -0.000000 0.141304 @@ -2402,13 +2784,9 @@ vt 0.652015 0.869565 vt 0.652015 0.760870 vt 0.652015 0.956522 vt 0.611722 1.000000 -vt 0.263736 0.826087 vt 0.706960 0.652174 -vt 0.014652 0.826087 -vt 0.670330 1.000000 vt 0.205128 0.695652 vt 0.608059 0.782609 -vt 0.901099 0.782609 vt 0.967033 0.586957 vt 0.663004 0.521739 vt 0.663004 0.500000 @@ -2420,16 +2798,6 @@ vt 0.963370 0.086957 vt 0.824176 0.673913 vt 0.816850 0.760870 vt 0.816850 0.760870 -vt 0.054945 0.956522 -vt 0.052339 0.835698 -vt 0.051735 0.829009 -vt 0.051735 0.833906 -vt 0.051514 0.831457 -vt 0.052339 0.827217 -vt 0.053989 0.827217 -vt 0.054814 0.831457 -vt 0.054593 0.833906 -vt 0.053989 0.835698 vt 0.772894 0.652174 vt 0.728938 0.652174 vt 0.677656 0.652174 @@ -2443,7 +2811,6 @@ vt 0.523810 0.358696 vt 0.531136 0.423913 vt 0.531136 0.456522 vt 0.967033 0.586957 -vt 0.901099 0.782609 vn 0.0000 0.0000 1.0000 vn 0.0000 0.0000 -1.0000 vn -1.0000 0.0000 0.0000 @@ -2526,10 +2893,6 @@ vn 0.3535 -0.6124 -0.7071 vn -0.3057 -0.7078 -0.6369 vn -0.0407 -0.7592 -0.6496 vn 0.7768 0.6297 0.0000 -vn 0.8507 0.5257 0.0000 -vn 0.8507 -0.5257 0.0000 -vn 0.2298 -0.9732 0.0000 -vn 0.2298 0.9732 0.0000 vn 0.9701 0.0000 -0.2425 vn 0.9145 0.0000 -0.4046 vn 0.8321 0.0000 -0.5547 @@ -2595,42 +2958,6 @@ vn -0.8727 0.2257 -0.4330 vn -0.9808 0.1951 0.0000 vn 0.9808 0.1951 0.0000 vn 0.0000 0.7071 0.7071 -vn -0.0000 -0.9967 0.0814 -vn -0.9967 0.0000 0.0814 -vn 0.8632 0.4983 0.0814 -vn 0.0000 0.9967 0.0814 -vn 0.4983 -0.8632 0.0814 -vn -0.8632 -0.4983 0.0814 -vn 0.4983 0.8632 0.0814 -vn -0.4983 0.8632 0.0814 -vn 0.8632 -0.4983 0.0814 -vn -0.4983 -0.8632 0.0814 -vn -0.8632 0.4983 0.0814 -vn 0.9967 -0.0000 0.0814 -vn -0.4494 -0.7784 0.4382 -vn -0.7784 -0.4494 0.4382 -vn 0.0000 0.8989 0.4382 -vn 0.4494 0.7784 0.4382 -vn -0.7784 0.4494 0.4382 -vn -0.4494 0.7784 0.4382 -vn 0.8989 -0.0000 0.4382 -vn 0.7784 -0.4494 0.4382 -vn -0.8989 0.0000 0.4382 -vn 0.4494 -0.7784 0.4382 -vn 0.0000 -0.8989 0.4382 -vn 0.7784 0.4494 0.4382 -vn -0.2172 -0.3762 0.9007 -vn -0.3762 -0.2172 0.9007 -vn 0.0000 0.4344 0.9007 -vn 0.2172 0.3762 0.9007 -vn -0.3762 0.2172 0.9007 -vn -0.2172 0.3762 0.9007 -vn 0.3762 -0.2172 0.9007 -vn 0.3762 0.2172 0.9007 -vn 0.4344 0.0000 0.9007 -vn 0.2172 -0.3762 0.9007 -vn 0.0000 -0.4344 0.9007 -vn -0.4344 0.0000 0.9007 vn 0.0000 -0.3827 -0.9239 vn 0.0000 -0.9239 -0.3827 vn 0.0000 -0.9239 0.3827 @@ -2661,1489 +2988,1207 @@ vn -0.9761 -0.2175 0.0000 vn -0.9145 0.0000 -0.4046 vn -0.9701 0.0000 -0.2425 vn -0.8321 0.0000 -0.5547 -vn -0.8507 -0.5257 0.0000 -vn -0.8507 0.5257 0.0000 -vn -0.2298 -0.9732 0.0000 -vn -0.2298 0.9732 0.0000 vn -0.3536 -0.6124 -0.7071 vn -0.4000 -0.6928 -0.6000 vn -0.8727 -0.4330 -0.2257 vn 0.9732 0.2298 0.0000 s off -f 8/1/1 33/2/1 10/3/1 -f 8/1/1 35/4/1 34/5/1 -f 4/6/1 35/7/1 6/8/1 -f 4/6/1 25/9/1 36/10/1 -f 24/11/1 25/12/1 2/13/1 -f 24/11/1 27/14/1 26/15/1 -f 22/16/1 28/17/1 27/18/1 -f 20/19/1 29/20/1 28/21/1 -f 18/22/1 30/23/1 29/24/1 -f 14/25/1 30/26/1 16/27/1 -f 14/28/1 32/29/1 31/30/1 -f 10/3/1 32/31/1 12/32/1 -f 43/33/1 45/34/1 38/35/1 -f 60/36/1 55/37/1 181/38/1 -f 53/39/1 72/40/1 184/41/1 -f 52/42/1 55/43/1 50/44/1 -f 79/45/2 69/46/2 78/47/2 -f 51/48/2 81/49/2 70/50/2 -f 56/51/2 58/52/2 77/53/2 -f 104/54/2 92/55/2 95/56/2 -f 49/57/2 54/58/2 51/48/2 -f 183/59/1 71/60/1 68/61/1 -f 83/62/1 65/63/1 67/64/1 -f 61/65/2 74/66/2 73/67/2 -f 183/68/1 66/69/1 82/70/1 -f 58/52/2 76/71/2 77/72/2 -f 57/73/2 75/74/2 76/71/2 -f 184/75/1 71/60/1 182/76/1 -f 83/77/1 59/78/1 84/79/1 -f 62/80/2 79/81/2 74/66/2 -f 181/82/1 59/78/1 60/36/1 -f 85/83/1 102/84/1 87/85/1 -f 91/86/1 108/87/1 93/88/1 -f 86/89/1 107/90/1 91/86/1 -f 112/91/2 99/92/2 100/93/2 -f 98/94/2 112/91/2 100/93/2 -f 90/95/1 108/87/1 106/96/1 -f 111/97/2 94/98/2 99/92/2 -f 115/99/2 97/100/2 96/101/2 -f 89/102/1 113/103/1 88/104/1 -f 116/105/2 98/106/2 97/100/2 -f 90/107/1 114/108/1 89/102/1 -f 94/109/2 104/54/2 95/56/2 -f 86/110/1 102/84/1 105/111/1 -f 884/112/1 881/113/1 886/114/1 -f 143/115/2 155/116/2 154/117/2 -f 133/118/2 155/116/2 144/119/2 -f 133/120/2 145/121/2 156/122/2 -f 135/123/2 145/121/2 134/124/2 -f 136/125/2 146/126/2 135/127/2 -f 137/128/2 147/129/2 136/130/2 -f 138/131/2 148/132/2 137/133/2 -f 138/134/2 150/135/2 149/136/2 -f 140/137/2 150/138/2 139/139/2 -f 140/140/2 152/141/2 151/142/2 -f 141/143/2 153/144/2 152/141/2 -f 143/145/2 153/144/2 142/146/2 -f 69/46/2 81/147/2 78/47/2 -f 82/70/1 65/63/1 80/148/1 -f 75/149/2 61/65/2 73/67/2 -f 167/150/2 163/151/2 159/152/2 -f 193/153/3 201/154/3 192/155/3 -f 191/156/4 199/157/4 190/158/4 -f 189/159/5 197/160/5 188/161/5 -f 192/155/6 200/162/6 191/163/6 -f 190/158/7 198/164/7 189/159/7 -f 202/165/2 197/166/2 199/167/2 -f 197/166/8 601/168/8 600/169/8 -f 600/169/2 196/170/2 186/171/2 -f 188/172/1 206/173/1 189/174/1 -f 187/175/9 205/176/9 188/172/9 -f 185/177/1 204/178/1 187/175/1 -f 194/179/1 210/180/1 195/181/1 -f 193/182/9 209/183/9 194/179/9 -f 193/182/1 207/184/1 208/185/1 -f 190/186/1 212/187/1 191/188/1 -f 212/187/1 192/189/1 191/188/1 -f 189/174/1 211/190/1 190/186/1 -f 185/177/10 186/171/10 229/191/10 -f 186/171/10 230/192/10 229/191/10 -f 235/193/1 239/194/1 231/195/1 -f 251/196/1 256/197/1 257/198/1 -f 270/199/2 272/200/2 265/201/2 -f 285/202/1 287/203/1 289/204/1 -f 340/205/2 360/206/2 341/207/2 -f 339/208/2 361/209/2 340/205/2 -f 338/210/2 362/211/2 339/208/2 -f 338/210/2 364/212/2 363/213/2 -f 337/214/2 365/215/2 364/212/2 -f 336/216/2 366/217/2 365/215/2 -f 317/218/1 359/219/1 316/220/1 -f 318/221/1 358/222/1 317/218/1 -f 319/223/1 357/224/1 318/221/1 -f 355/225/1 319/223/1 320/226/1 -f 354/227/1 320/226/1 321/228/1 -f 353/229/1 321/228/1 322/230/1 -f 353/229/1 349/231/1 347/232/1 -f 347/233/11 378/234/11 346/235/11 -f 350/236/2 360/206/2 346/237/2 -f 351/238/12 374/239/12 352/240/12 -f 366/217/2 352/240/2 345/241/2 -f 351/238/1 359/219/1 348/242/1 -f 391/243/1 382/244/1 389/245/1 -f 377/246/10 375/247/10 376/248/10 -f 379/249/10 373/250/10 380/251/10 -f 350/236/2 378/252/2 377/246/2 -f 348/253/13 379/249/13 380/251/13 -f 350/236/14 376/248/14 349/231/14 -f 351/238/15 380/254/15 373/250/15 -f 352/240/16 379/255/16 345/241/16 -f 349/231/1 375/256/1 347/232/1 -f 389/257/3 384/258/3 390/259/3 -f 392/260/10 389/245/10 390/261/10 -f 389/262/1 382/263/1 353/229/1 -f 384/258/10 347/233/10 346/235/10 -f 390/264/2 384/265/2 346/237/2 -f 387/266/2 390/261/2 381/267/2 -f 391/268/1 385/269/1 348/242/1 -f 391/270/5 388/271/5 385/272/5 -f 392/273/2 387/274/2 366/217/2 -f 385/272/10 345/275/10 348/253/10 -f 397/276/17 404/277/17 400/278/17 -f 395/279/3 398/280/3 396/281/3 -f 394/282/5 400/278/5 393/283/5 -f 396/281/2 397/276/2 394/282/2 -f 393/283/1 399/284/1 395/285/1 -f 402/286/10 404/277/10 401/287/10 -f 398/280/18 401/288/18 397/276/18 -f 400/278/19 403/289/19 399/284/19 -f 399/290/20 402/291/20 398/280/20 -f 369/292/2 411/293/2 410/294/2 -f 368/295/2 410/294/2 409/296/2 -f 368/297/2 408/298/2 367/299/2 -f 367/299/2 407/300/2 344/301/2 -f 333/302/1 417/303/1 332/304/1 -f 415/305/1 333/302/1 334/306/1 -f 414/307/1 334/306/1 323/308/1 -f 324/309/1 414/307/1 323/308/1 -f 325/310/1 425/311/1 324/309/1 -f 326/312/1 424/313/1 325/310/1 -f 327/314/1 423/315/1 326/312/1 -f 328/316/1 422/317/1 327/314/1 -f 329/318/1 421/319/1 328/316/1 -f 419/320/1 329/321/1 330/322/1 -f 418/323/1 330/322/1 331/324/1 -f 417/303/1 331/324/1 332/304/1 -f 428/325/2 431/326/2 427/327/2 -f 427/327/2 432/328/2 426/329/2 -f 430/330/2 432/328/2 434/331/2 -f 429/332/2 434/331/2 435/333/2 -f 372/334/21 435/335/21 413/336/21 -f 405/337/22 428/325/22 342/338/22 -f 441/339/2 446/340/2 445/341/2 -f 441/339/2 444/342/2 442/343/2 -f 442/343/2 443/344/2 436/345/2 -f 437/346/2 443/344/2 449/347/2 -f 438/348/2 449/347/2 448/349/2 -f 439/350/2 448/349/2 447/351/2 -f 455/352/1 460/353/1 454/354/1 -f 457/355/1 455/352/1 456/356/1 -f 458/357/1 456/356/1 451/358/1 -f 450/359/1 458/357/1 451/358/1 -f 452/360/1 463/361/1 450/359/1 -f 453/362/1 462/363/1 452/360/1 -f 482/364/23 484/365/23 480/366/23 -f 470/367/23 472/368/23 468/369/23 -f 467/370/2 469/371/2 471/372/2 -f 464/373/5 469/371/5 465/374/5 -f 466/375/1 468/369/1 464/373/1 -f 467/370/3 470/376/3 466/377/3 -f 472/378/4 475/379/4 473/380/4 -f 471/372/3 474/381/3 470/376/3 -f 469/371/24 475/382/24 471/372/24 -f 468/369/5 473/380/5 469/371/5 -f 477/383/2 483/384/2 479/385/2 -f 476/386/5 481/387/5 477/383/5 -f 476/388/1 482/364/1 480/366/1 -f 479/385/3 482/364/3 478/389/3 -f 484/390/4 487/391/4 485/392/4 -f 483/384/3 486/393/3 482/364/3 -f 481/387/24 487/394/24 483/384/24 -f 480/395/5 485/396/5 481/387/5 -f 489/397/3 490/398/3 488/399/3 -f 491/400/2 494/401/2 490/402/2 -f 495/403/5 492/404/5 494/405/5 -f 493/406/1 488/399/1 492/404/1 -f 494/401/4 488/407/4 490/402/4 -f 491/400/10 493/406/10 495/408/10 -f 197/160/5 600/409/5 186/171/5 -f 496/410/4 499/411/4 497/412/4 -f 503/413/10 500/414/10 501/415/10 -f 499/411/2 502/416/2 503/413/2 -f 513/417/3 514/418/3 512/419/3 -f 497/420/1 500/414/1 496/421/1 -f 508/422/5 511/423/5 509/424/5 -f 504/425/10 511/423/10 506/426/10 -f 505/427/1 509/424/1 504/425/1 -f 505/428/4 510/429/4 508/430/4 -f 510/431/1 525/432/1 511/433/1 -f 519/434/2 518/435/2 520/436/2 -f 513/437/1 512/438/1 522/439/1 -f 526/440/4 510/429/4 507/441/4 -f 511/423/10 527/442/10 506/426/10 -f 528/443/1 531/444/1 529/445/1 -f 535/446/2 532/447/2 533/448/2 -f 531/444/3 533/449/3 529/450/3 -f 528/451/25 534/452/25 530/453/25 -f 531/444/10 534/452/10 535/446/10 -f 539/454/1 536/455/1 537/456/1 -f 540/457/2 543/458/2 541/459/2 -f 541/460/5 539/454/5 537/461/5 -f 542/462/26 536/463/26 538/464/26 -f 539/454/10 542/462/10 538/465/10 -f 193/153/3 196/170/3 202/466/3 -f 210/180/10 230/192/10 195/181/10 -f 607/467/1 605/468/1 603/469/1 -f 608/470/1 602/471/1 604/472/1 -f 602/471/5 611/473/5 604/472/5 -f 609/474/4 610/475/4 602/471/4 -f 608/476/3 616/477/3 609/478/3 -f 603/469/4 615/479/4 607/480/4 -f 605/468/3 613/481/3 603/469/3 -f 604/472/10 617/482/10 608/476/10 -f 606/483/10 612/484/10 605/468/10 -f 607/485/5 614/486/5 606/483/5 -f 624/487/27 626/488/27 628/489/27 -f 618/490/5 624/487/5 620/491/5 -f 633/492/4 630/493/4 631/494/4 -f 621/495/3 623/496/3 619/497/3 -f 619/498/2 622/499/2 618/500/2 -f 629/501/10 626/488/10 627/502/10 -f 625/503/28 627/502/28 623/496/28 -f 623/496/29 626/488/29 622/499/29 -f 621/504/1 620/505/1 628/489/1 -f 636/506/10 639/507/10 637/508/10 -f 632/509/5 634/510/5 630/493/5 -f 639/511/2 640/512/2 632/509/2 -f 636/506/1 635/513/1 631/494/1 -f 632/509/2 637/514/2 639/511/2 -f 635/515/3 633/492/3 631/494/3 -f 636/516/30 641/517/30 635/518/30 -f 637/508/5 642/519/5 636/506/5 -f 634/520/30 643/521/30 638/522/30 -f 639/507/3 638/523/3 643/524/3 -f 641/517/2 637/514/2 633/492/2 -f 649/525/1 658/526/1 657/527/1 -f 644/528/1 652/529/1 651/530/1 -f 644/531/1 658/526/1 650/532/1 -f 660/533/1 656/534/1 648/535/1 -f 659/536/1 654/537/1 646/538/1 -f 646/538/1 652/529/1 645/539/1 -f 671/540/2 664/541/2 675/542/2 -f 663/543/2 668/544/2 669/545/2 -f 673/546/2 664/541/2 672/547/2 -f 673/546/2 661/548/2 665/549/2 -f 661/550/2 667/551/2 662/552/2 -f 667/551/2 663/543/2 662/552/2 -f 689/553/3 684/554/3 686/555/3 -f 699/556/5 695/557/5 693/558/5 -f 683/559/31 677/560/31 681/561/31 -f 682/562/32 676/563/32 678/564/32 -f 682/565/33 679/566/33 683/567/33 -f 681/568/19 676/569/19 680/570/19 -f 700/571/5 704/572/5 706/573/5 -f 710/574/3 715/575/3 713/576/3 -f 776/577/10 717/578/10 772/579/10 -f 720/580/4 723/581/4 721/582/4 -f 716/583/5 723/581/5 718/584/5 -f 721/582/1 774/585/1 773/586/1 -f 719/587/3 720/588/3 717/589/3 -f 722/590/2 777/591/2 778/592/2 -f 732/593/2 730/594/2 726/595/2 -f 718/584/10 775/596/10 716/583/10 -f 779/597/31 774/598/31 775/596/31 -f 777/599/32 772/579/32 773/600/32 -f 778/601/10 773/600/10 774/598/10 -f 784/602/4 786/603/4 785/604/4 -f 781/605/5 787/606/5 783/607/5 -f 782/608/3 785/604/3 780/609/3 -f 783/610/2 784/602/2 782/611/2 -f 780/612/1 786/603/1 781/613/1 -f 802/614/3 788/615/3 790/616/3 -f 801/617/5 791/618/5 789/619/5 -f 806/620/3 792/621/3 794/622/3 -f 805/623/5 795/624/5 793/625/5 -f 804/626/3 790/616/3 792/621/3 -f 791/618/5 805/627/5 793/625/5 -f 810/628/3 796/629/3 798/630/3 -f 797/631/5 811/632/5 799/633/5 -f 808/634/3 794/622/3 796/629/3 -f 795/624/5 809/635/5 797/631/5 -f 819/636/5 813/637/5 815/638/5 -f 816/639/3 814/640/3 812/641/3 -f 820/642/3 818/643/3 816/639/3 -f 823/644/5 817/645/5 819/636/5 -f 821/646/5 823/644/5 825/647/5 -f 822/648/3 820/642/3 824/649/3 -f 827/650/1 844/651/1 826/652/1 -f 844/651/1 845/653/1 858/654/1 -f 865/655/2 847/656/2 849/657/2 -f 841/658/10 863/659/10 853/660/10 -f 863/659/3 857/661/3 860/662/3 -f 851/663/2 862/664/2 841/665/2 -f 848/666/4 857/661/4 851/667/4 -f 864/668/5 867/669/5 865/670/5 -f 850/671/4 865/670/4 849/672/4 -f 852/673/10 866/674/10 840/675/10 -f 840/676/2 864/668/2 850/677/2 -f 860/678/2 846/679/2 861/680/2 -f 865/655/2 868/681/2 869/682/2 -f 860/678/2 871/683/2 863/684/2 -f 870/685/2 861/680/2 859/686/2 -f 887/687/2 882/688/2 885/689/2 -f 883/690/1 101/691/1 85/692/1 -f 885/689/2 92/693/2 103/694/2 -f 886/695/1 88/696/1 113/103/1 -f 880/697/2 115/99/2 96/698/2 -f 893/699/10 888/700/10 890/701/10 -f 894/702/10 891/703/10 889/704/10 -f 906/705/1 900/706/1 902/707/1 -f 905/708/2 903/709/2 901/710/2 -f 910/711/2 893/699/2 890/712/2 -f 892/713/1 908/714/1 888/715/1 -f 895/716/2 911/717/2 891/718/2 -f 909/719/1 894/702/1 889/720/1 -f 903/709/2 911/721/2 899/722/2 -f 909/723/1 902/707/1 898/724/1 -f 910/725/2 901/710/2 897/726/2 -f 900/706/1 908/727/1 896/728/1 -f 919/729/3 916/730/3 917/731/3 -f 919/729/10 912/732/10 914/733/10 -f 917/731/1 913/734/1 912/732/1 -f 913/735/4 918/736/4 915/737/4 -f 921/738/1 918/739/1 919/740/1 -f 918/736/4 922/741/4 915/737/4 -f 919/729/10 923/742/10 921/738/10 -f 927/743/4 924/744/4 925/745/4 -f 928/746/10 931/747/10 929/748/10 -f 927/743/2 930/749/2 926/750/2 -f 934/751/5 933/752/5 932/753/5 -f 928/746/1 925/754/1 924/755/1 -f 941/756/2 935/757/2 940/758/2 -f 943/759/1 937/760/1 942/761/1 -f 8/1/1 34/762/1 33/2/1 -f 8/1/1 6/8/1 35/4/1 -f 4/6/1 36/763/1 35/7/1 -f 4/6/1 2/13/1 25/9/1 -f 24/11/1 26/764/1 25/12/1 -f 24/11/1 22/16/1 27/14/1 -f 22/16/1 20/19/1 28/17/1 -f 20/19/1 18/22/1 29/20/1 -f 18/22/1 16/27/1 30/23/1 -f 14/25/1 31/765/1 30/26/1 -f 14/28/1 12/32/1 32/29/1 -f 10/3/1 33/766/1 32/31/1 -f 38/35/1 37/767/1 41/768/1 -f 37/767/1 39/769/1 41/768/1 -f 39/769/1 40/770/1 41/768/1 -f 41/768/1 42/771/1 43/33/1 -f 43/33/1 44/772/1 45/34/1 -f 45/34/1 46/773/1 47/774/1 -f 47/774/1 48/775/1 45/34/1 -f 48/775/1 38/35/1 45/34/1 -f 41/768/1 43/33/1 38/35/1 -f 60/36/1 50/776/1 55/37/1 -f 53/39/1 52/42/1 72/40/1 -f 52/42/1 53/777/1 55/43/1 -f 79/45/2 64/778/2 69/46/2 -f 51/48/2 54/779/2 81/49/2 -f 56/51/2 49/780/2 58/52/2 -f 104/54/2 103/694/2 92/55/2 -f 49/57/2 56/781/2 54/58/2 -f 183/59/1 182/76/1 71/60/1 -f 83/62/1 80/148/1 65/63/1 -f 61/65/2 62/80/2 74/66/2 -f 183/68/1 68/61/1 66/69/1 -f 58/52/2 57/73/2 76/71/2 -f 57/73/2 63/782/2 75/74/2 -f 184/75/1 72/40/1 71/60/1 -f 83/77/1 67/64/1 59/78/1 -f 62/80/2 64/778/2 79/81/2 -f 181/82/1 84/79/1 59/78/1 -f 85/83/1 101/691/1 102/84/1 -f 91/86/1 107/90/1 108/87/1 -f 86/89/1 105/111/1 107/90/1 -f 112/91/2 111/97/2 99/92/2 -f 98/94/2 110/783/2 112/91/2 -f 90/95/1 93/88/1 108/87/1 -f 111/97/2 109/784/2 94/98/2 -f 115/99/2 116/105/2 97/100/2 -f 89/102/1 114/108/1 113/103/1 -f 116/105/2 110/783/2 98/106/2 -f 90/107/1 106/96/1 114/108/1 -f 94/109/2 109/784/2 104/54/2 -f 86/110/1 87/85/1 102/84/1 -f 884/112/1 883/785/1 881/113/1 -f 143/115/2 144/786/2 155/116/2 -f 133/118/2 156/122/2 155/116/2 -f 133/120/2 134/787/2 145/121/2 -f 135/123/2 146/126/2 145/121/2 -f 136/125/2 147/129/2 146/126/2 -f 137/128/2 148/132/2 147/129/2 -f 138/131/2 149/136/2 148/132/2 -f 138/134/2 139/788/2 150/135/2 -f 140/137/2 151/142/2 150/138/2 -f 140/140/2 141/789/2 152/141/2 -f 141/143/2 142/790/2 153/144/2 -f 143/145/2 154/117/2 153/144/2 -f 69/46/2 70/50/2 81/147/2 -f 82/70/1 66/69/1 65/63/1 -f 75/149/2 63/782/2 61/65/2 -f 159/152/2 158/791/2 157/792/2 -f 157/792/2 168/793/2 159/152/2 -f 168/793/2 167/150/2 159/152/2 -f 167/150/2 166/794/2 163/151/2 -f 166/794/2 165/795/2 163/151/2 -f 165/795/2 164/796/2 163/151/2 -f 163/151/2 162/797/2 161/798/2 -f 161/798/2 160/799/2 163/151/2 -f 160/799/2 159/152/2 163/151/2 -f 193/153/3 202/466/3 201/154/3 -f 191/156/4 200/800/4 199/157/4 -f 189/159/5 198/164/5 197/160/5 -f 192/155/6 201/154/6 200/162/6 -f 190/158/7 199/157/7 198/164/7 -f 197/166/2 198/801/2 199/167/2 -f 199/167/2 200/802/2 202/165/2 -f 200/802/2 201/803/2 202/165/2 -f 197/166/8 202/165/8 601/168/8 -f 600/169/2 601/168/2 196/170/2 -f 188/172/1 205/176/1 206/173/1 -f 187/175/9 204/178/9 205/176/9 -f 185/177/1 203/804/1 204/178/1 -f 194/179/1 209/183/1 210/180/1 -f 193/182/9 208/185/9 209/183/9 -f 193/182/1 192/189/1 207/184/1 -f 190/186/1 211/190/1 212/187/1 -f 212/187/1 207/184/1 192/189/1 -f 189/174/1 206/173/1 211/190/1 -f 227/805/10 203/804/10 229/191/10 -f 203/804/10 185/177/10 229/191/10 -f 186/171/10 196/170/10 230/192/10 -f 231/195/1 232/806/1 235/193/1 -f 232/806/1 233/807/1 235/193/1 -f 233/807/1 234/808/1 235/193/1 -f 235/193/1 236/809/1 237/810/1 -f 237/810/1 238/811/1 239/194/1 -f 239/194/1 240/812/1 241/813/1 -f 241/813/1 242/814/1 239/194/1 -f 242/814/1 231/195/1 239/194/1 -f 235/193/1 237/810/1 239/194/1 -f 247/815/1 255/816/1 256/197/1 -f 256/197/1 266/817/1 267/818/1 -f 267/818/1 268/819/1 256/197/1 -f 268/819/1 257/198/1 256/197/1 -f 257/198/1 258/820/1 251/196/1 -f 258/820/1 259/821/1 251/196/1 -f 259/821/1 260/822/1 251/196/1 -f 251/196/1 250/823/1 249/824/1 -f 249/824/1 248/825/1 247/815/1 -f 247/815/1 256/197/1 249/824/1 -f 249/824/1 256/197/1 251/196/1 -f 265/201/2 264/826/2 263/827/2 -f 263/827/2 262/828/2 265/201/2 -f 262/828/2 261/829/2 265/201/2 -f 261/829/2 269/830/2 270/199/2 -f 270/199/2 274/831/2 273/832/2 -f 273/832/2 271/833/2 270/199/2 -f 271/833/2 272/200/2 270/199/2 -f 272/200/2 277/834/2 265/201/2 -f 277/834/2 276/835/2 265/201/2 -f 276/835/2 275/836/2 265/201/2 -f 261/829/2 270/199/2 265/201/2 -f 289/204/1 278/837/1 279/838/1 -f 279/838/1 280/839/1 281/840/1 -f 281/840/1 282/841/1 283/842/1 -f 283/842/1 284/843/1 281/840/1 -f 284/843/1 285/202/1 281/840/1 -f 285/202/1 286/844/1 287/203/1 -f 287/203/1 288/845/1 289/204/1 -f 289/204/1 279/838/1 285/202/1 -f 279/838/1 281/840/1 285/202/1 -f 340/205/2 361/209/2 360/206/2 -f 339/208/2 362/211/2 361/209/2 -f 338/210/2 363/213/2 362/211/2 -f 338/210/2 337/214/2 364/212/2 -f 337/214/2 336/216/2 365/215/2 -f 336/216/2 335/846/2 366/217/2 -f 317/218/1 358/222/1 359/219/1 -f 318/221/1 357/224/1 358/222/1 -f 319/223/1 356/847/1 357/224/1 -f 355/225/1 356/847/1 319/223/1 -f 354/227/1 355/225/1 320/226/1 -f 353/229/1 354/227/1 321/228/1 -f 353/229/1 322/230/1 349/231/1 -f 347/233/11 375/247/11 378/234/11 -f 350/236/2 341/207/2 360/206/2 -f 351/238/12 373/250/12 374/239/12 -f 366/217/2 335/846/2 352/240/2 -f 351/238/1 316/220/1 359/219/1 -f 391/243/1 386/848/1 382/244/1 -f 377/246/10 378/234/10 375/247/10 -f 379/249/10 374/239/10 373/250/10 -f 350/236/2 346/237/2 378/252/2 -f 348/253/13 345/275/13 379/249/13 -f 350/236/14 377/246/14 376/248/14 -f 351/238/15 348/242/15 380/254/15 -f 352/240/16 374/239/16 379/255/16 -f 349/231/1 376/248/1 375/256/1 -f 389/257/3 383/849/3 384/258/3 -f 392/260/10 391/243/10 389/245/10 -f 353/229/1 347/232/1 389/262/1 -f 347/232/1 383/850/1 389/262/1 -f 384/258/10 383/849/10 347/233/10 -f 346/237/2 360/206/2 390/264/2 -f 360/206/2 381/851/2 390/264/2 -f 387/266/2 392/260/2 390/261/2 -f 348/242/1 359/219/1 391/268/1 -f 359/219/1 386/852/1 391/268/1 -f 391/270/5 392/853/5 388/271/5 -f 366/217/2 345/241/2 392/273/2 -f 345/241/2 388/854/2 392/273/2 -f 385/272/10 388/271/10 345/275/10 -f 397/276/17 401/287/17 404/277/17 -f 395/279/3 399/290/3 398/280/3 -f 394/282/5 397/276/5 400/278/5 -f 396/281/2 398/280/2 397/276/2 -f 393/283/1 400/278/1 399/284/1 -f 402/286/10 403/855/10 404/277/10 -f 398/280/18 402/856/18 401/288/18 -f 400/278/19 404/857/19 403/289/19 -f 399/290/20 403/858/20 402/291/20 -f 369/292/2 370/859/2 411/293/2 -f 368/295/2 369/292/2 410/294/2 -f 368/297/2 409/860/2 408/298/2 -f 367/299/2 408/298/2 407/300/2 -f 333/302/1 416/861/1 417/303/1 -f 415/305/1 416/861/1 333/302/1 -f 414/307/1 415/305/1 334/306/1 -f 324/309/1 425/311/1 414/307/1 -f 325/310/1 424/313/1 425/311/1 -f 326/312/1 423/315/1 424/313/1 -f 327/314/1 422/317/1 423/315/1 -f 328/316/1 421/319/1 422/317/1 -f 329/318/1 420/862/1 421/319/1 -f 419/320/1 420/863/1 329/321/1 -f 418/323/1 419/320/1 330/322/1 -f 417/303/1 418/323/1 331/324/1 -f 428/325/2 433/864/2 431/326/2 -f 427/327/2 431/326/2 432/328/2 -f 430/330/2 426/329/2 432/328/2 -f 429/332/2 430/330/2 434/331/2 -f 372/334/21 429/332/21 435/335/21 -f 405/337/22 433/865/22 428/325/22 -f 441/339/2 440/866/2 446/340/2 -f 441/339/2 445/341/2 444/342/2 -f 442/343/2 444/342/2 443/344/2 -f 437/346/2 436/345/2 443/344/2 -f 438/348/2 437/346/2 449/347/2 -f 439/350/2 438/348/2 448/349/2 -f 455/352/1 459/867/1 460/353/1 -f 457/355/1 459/867/1 455/352/1 -f 458/357/1 457/355/1 456/356/1 -f 450/359/1 463/361/1 458/357/1 -f 452/360/1 462/363/1 463/361/1 -f 453/362/1 461/868/1 462/363/1 -f 482/364/23 486/869/23 484/365/23 -f 470/367/23 474/870/23 472/368/23 -f 467/370/2 465/374/2 469/371/2 -f 464/373/5 468/369/5 469/371/5 -f 466/375/1 470/367/1 468/369/1 -f 467/370/3 471/372/3 470/376/3 -f 472/378/4 474/871/4 475/379/4 -f 471/372/3 475/872/3 474/381/3 -f 469/371/24 473/873/24 475/382/24 -f 468/369/5 472/378/5 473/380/5 -f 477/383/2 481/387/2 483/384/2 -f 476/386/5 480/395/5 481/387/5 -f 476/388/1 478/389/1 482/364/1 -f 479/385/3 483/384/3 482/364/3 -f 484/390/4 486/393/4 487/391/4 -f 483/384/3 487/391/3 486/393/3 -f 481/387/24 485/874/24 487/394/24 -f 480/395/5 484/875/5 485/396/5 -f 489/397/3 491/876/3 490/398/3 -f 491/400/2 495/408/2 494/401/2 -f 495/403/5 493/406/5 492/404/5 -f 493/406/1 489/397/1 488/399/1 -f 494/401/4 492/877/4 488/407/4 -f 491/400/10 489/397/10 493/406/10 -f 186/171/5 185/177/5 197/160/5 -f 185/177/5 187/878/5 188/161/5 -f 197/160/5 185/177/5 188/161/5 -f 496/410/4 498/879/4 499/411/4 -f 503/413/10 502/416/10 500/414/10 -f 499/411/2 498/879/2 502/416/2 -f 513/417/3 515/880/3 514/418/3 -f 497/420/1 501/415/1 500/414/1 -f 508/422/5 510/881/5 511/423/5 -f 504/425/10 509/424/10 511/423/10 -f 505/427/1 508/882/1 509/424/1 -f 505/428/4 507/441/4 510/429/4 -f 510/431/1 524/883/1 525/432/1 -f 520/436/2 514/418/2 515/880/2 -f 515/880/2 521/884/2 520/436/2 -f 521/884/2 519/434/2 520/436/2 -f 522/439/1 516/885/1 517/886/1 -f 517/886/1 523/887/1 522/439/1 -f 523/887/1 513/437/1 522/439/1 -f 526/440/4 524/888/4 510/429/4 -f 511/423/10 525/432/10 527/442/10 -f 528/443/1 530/889/1 531/444/1 -f 535/446/2 534/452/2 532/447/2 -f 531/444/3 535/446/3 533/449/3 -f 528/451/25 532/447/25 534/452/25 -f 531/444/10 530/889/10 534/452/10 -f 539/454/1 538/465/1 536/455/1 -f 540/457/2 542/462/2 543/458/2 -f 541/460/5 543/458/5 539/454/5 -f 542/462/26 540/457/26 536/463/26 -f 539/454/10 543/458/10 542/462/10 -f 193/153/3 194/890/3 195/181/3 -f 195/181/3 196/170/3 193/153/3 -f 196/170/3 601/891/3 202/466/3 -f 228/892/10 230/192/10 210/180/10 -f 230/192/10 196/170/10 195/181/10 -f 607/467/1 606/893/1 605/468/1 -f 608/470/1 609/894/1 602/471/1 -f 602/471/5 610/475/5 611/473/5 -f 609/474/4 616/895/4 610/475/4 -f 608/476/3 617/482/3 616/477/3 -f 603/469/4 613/481/4 615/479/4 -f 605/468/3 612/484/3 613/481/3 -f 604/472/10 611/473/10 617/482/10 -f 606/483/10 614/486/10 612/484/10 -f 607/485/5 615/896/5 614/486/5 -f 624/487/27 622/499/27 626/488/27 -f 618/490/5 622/499/5 624/487/5 -f 633/492/4 632/509/4 630/493/4 -f 621/495/3 625/503/3 623/496/3 -f 619/498/2 623/496/2 622/499/2 -f 629/501/10 628/489/10 626/488/10 -f 625/503/28 629/501/28 627/502/28 -f 623/496/29 627/502/29 626/488/29 -f 620/505/1 624/897/1 628/489/1 -f 628/489/1 629/501/1 621/504/1 -f 629/501/1 625/898/1 621/504/1 -f 636/506/10 638/523/10 639/507/10 -f 632/509/5 640/899/5 634/510/5 -f 639/511/2 643/521/2 640/512/2 -f 631/494/1 630/493/1 638/523/1 -f 630/493/1 634/900/1 638/523/1 -f 638/523/1 636/506/1 631/494/1 -f 632/509/2 633/492/2 637/514/2 -f 635/515/3 641/901/3 633/492/3 -f 636/516/30 642/902/30 641/517/30 -f 634/520/30 640/512/30 643/521/30 -f 641/517/2 642/902/2 637/514/2 -f 649/525/1 650/532/1 658/526/1 -f 644/528/1 645/539/1 652/529/1 -f 644/531/1 651/903/1 658/526/1 -f 660/533/1 649/525/1 656/534/1 -f 649/525/1 657/527/1 656/534/1 -f 656/534/1 655/904/1 648/535/1 -f 659/536/1 648/535/1 654/537/1 -f 648/535/1 655/904/1 654/537/1 -f 654/537/1 653/905/1 646/538/1 -f 646/538/1 653/905/1 652/529/1 -f 647/906/2 670/907/2 671/540/2 -f 671/540/2 672/547/2 664/541/2 -f 675/542/2 647/906/2 671/540/2 -f 670/907/2 647/906/2 669/545/2 -f 647/906/2 674/908/2 669/545/2 -f 674/908/2 663/543/2 669/545/2 -f 673/546/2 665/549/2 664/541/2 -f 673/546/2 666/909/2 661/548/2 -f 661/550/2 666/910/2 667/551/2 -f 667/551/2 668/544/2 663/543/2 -f 686/555/3 687/911/3 691/912/3 -f 691/912/3 690/913/3 689/553/3 -f 689/553/3 688/914/3 684/554/3 -f 684/554/3 685/915/3 686/555/3 -f 686/555/3 691/912/3 689/553/3 -f 693/558/5 692/916/5 698/917/5 -f 698/917/5 697/918/5 699/556/5 -f 699/556/5 696/919/5 695/557/5 -f 695/557/5 694/920/5 693/558/5 -f 693/558/5 698/917/5 699/556/5 -f 683/559/31 679/921/31 677/560/31 -f 682/562/32 680/922/32 676/563/32 -f 682/565/33 678/923/33 679/566/33 -f 681/568/19 677/560/19 676/569/19 -f 706/573/5 707/924/5 701/925/5 -f 701/925/5 702/926/5 700/571/5 -f 700/571/5 703/927/5 704/572/5 -f 704/572/5 705/928/5 706/573/5 -f 706/573/5 701/925/5 700/571/5 -f 713/576/3 712/929/3 708/930/3 -f 708/930/3 709/931/3 710/574/3 -f 710/574/3 711/932/3 715/575/3 -f 715/575/3 714/933/3 713/576/3 -f 713/576/3 708/930/3 710/574/3 -f 776/577/10 719/934/10 717/578/10 -f 720/580/4 722/935/4 723/581/4 -f 716/583/5 721/582/5 723/581/5 -f 721/582/1 716/583/1 774/585/1 -f 716/583/1 775/936/1 774/585/1 -f 717/937/1 720/938/1 773/586/1 -f 720/938/1 721/582/1 773/586/1 -f 773/586/1 772/939/1 717/937/1 -f 719/587/3 722/590/3 720/588/3 -f 722/590/2 719/587/2 777/591/2 -f 719/587/2 776/940/2 777/591/2 -f 718/584/2 723/581/2 778/592/2 -f 723/581/2 722/590/2 778/592/2 -f 778/592/2 779/941/2 718/584/2 -f 726/595/2 725/942/2 734/943/2 -f 725/942/2 724/944/2 734/943/2 -f 724/944/2 735/945/2 734/943/2 -f 734/943/2 733/946/2 732/593/2 -f 732/593/2 731/947/2 730/594/2 -f 730/594/2 729/948/2 728/949/2 -f 728/949/2 727/950/2 730/594/2 -f 727/950/2 726/595/2 730/594/2 -f 734/943/2 732/593/2 726/595/2 -f 718/584/10 779/597/10 775/596/10 -f 779/597/31 778/601/31 774/598/31 -f 777/599/32 776/577/32 772/579/32 -f 778/601/10 777/599/10 773/600/10 -f 784/602/4 787/606/4 786/603/4 -f 781/605/5 786/603/5 787/606/5 -f 782/608/3 784/602/3 785/604/3 -f 783/610/2 787/606/2 784/602/2 -f 780/612/1 785/604/1 786/603/1 -f 802/614/3 800/951/3 788/615/3 -f 801/617/5 803/952/5 791/618/5 -f 806/620/3 804/953/3 792/621/3 -f 805/623/5 807/954/5 795/624/5 -f 804/626/3 802/955/3 790/616/3 -f 791/618/5 803/956/5 805/627/5 -f 810/628/3 808/634/3 796/629/3 -f 797/631/5 809/635/5 811/632/5 -f 808/634/3 806/957/3 794/622/3 -f 795/624/5 807/958/5 809/635/5 -f 819/636/5 817/645/5 813/637/5 -f 816/639/3 818/643/3 814/640/3 -f 820/642/3 822/648/3 818/643/3 -f 823/644/5 821/646/5 817/645/5 -f 827/650/1 845/653/1 844/651/1 -f 845/653/1 829/959/1 856/960/1 -f 858/654/1 828/961/1 844/651/1 -f 845/653/1 856/960/1 858/654/1 -f 865/655/2 859/686/2 847/656/2 -f 841/658/10 862/664/10 863/659/10 -f 863/659/3 862/664/3 857/661/3 -f 851/663/2 857/661/2 862/664/2 -f 848/666/4 860/662/4 857/661/4 -f 864/668/5 866/674/5 867/669/5 -f 850/671/4 864/668/4 865/670/4 -f 852/673/10 867/669/10 866/674/10 -f 840/676/2 866/674/2 864/668/2 -f 860/678/2 848/962/2 846/679/2 -f 865/655/2 867/963/2 868/681/2 -f 860/678/2 870/685/2 871/683/2 -f 859/686/2 865/655/2 869/682/2 -f 870/685/2 860/678/2 861/680/2 -f 859/686/2 869/682/2 870/685/2 -f 887/687/2 880/964/2 882/688/2 -f 883/690/1 884/112/1 101/691/1 -f 885/689/2 882/965/2 92/693/2 -f 886/695/1 881/966/1 88/696/1 -f 880/697/2 887/967/2 115/99/2 -f 893/699/10 892/713/10 888/700/10 -f 894/702/10 895/716/10 891/703/10 -f 906/705/1 904/968/1 900/706/1 -f 905/708/2 907/969/2 903/709/2 -f 910/711/2 897/726/2 893/699/2 -f 892/713/1 896/728/1 908/714/1 -f 895/716/2 899/722/2 911/717/2 -f 909/719/1 898/724/1 894/702/1 -f 903/709/2 907/970/2 911/721/2 -f 909/723/1 906/971/1 902/707/1 -f 910/725/2 905/972/2 901/710/2 -f 900/706/1 904/973/1 908/727/1 -f 919/729/3 918/974/3 916/730/3 -f 919/729/10 917/731/10 912/732/10 -f 917/731/1 916/975/1 913/734/1 -f 913/735/4 916/976/4 918/736/4 -f 921/738/1 920/977/1 918/739/1 -f 918/736/4 920/978/4 922/741/4 -f 919/729/10 914/733/10 923/742/10 -f 927/743/4 926/750/4 924/744/4 -f 928/746/10 930/749/10 931/747/10 -f 927/743/2 931/747/2 930/749/2 -f 934/751/5 935/757/5 933/752/5 -f 928/746/1 929/748/1 925/754/1 -f 935/757/2 934/751/2 940/758/2 -f 940/758/2 938/979/2 939/980/2 -f 939/980/2 941/756/2 940/758/2 -f 937/760/1 936/981/1 942/761/1 -f 942/761/1 932/982/1 933/983/1 -f 933/983/1 943/759/1 942/761/1 +f 194/289/82 219/290/82 196/291/82 +f 194/289/82 221/292/82 220/293/82 +f 190/294/82 221/295/82 192/296/82 +f 190/294/82 211/297/82 222/298/82 +f 210/299/82 211/300/82 188/301/82 +f 210/299/82 213/302/82 212/303/82 +f 208/304/82 214/305/82 213/306/82 +f 206/307/82 215/308/82 214/309/82 +f 204/310/82 216/311/82 215/312/82 +f 200/313/82 216/314/82 202/315/82 +f 200/316/82 218/317/82 217/318/82 +f 196/291/82 218/319/82 198/320/82 +f 229/321/82 231/322/82 224/323/82 +f 246/324/82 241/325/82 367/326/82 +f 239/327/82 258/328/82 370/329/82 +f 238/330/82 241/331/82 236/332/82 +f 265/333/83 255/334/83 264/335/83 +f 237/336/83 267/337/83 256/338/83 +f 242/339/83 244/340/83 263/341/83 +f 290/342/83 278/343/83 281/344/83 +f 235/345/83 240/346/83 237/336/83 +f 369/347/82 257/348/82 254/349/82 +f 269/350/82 251/351/82 253/352/82 +f 247/353/83 260/354/83 259/355/83 +f 369/356/82 252/357/82 268/358/82 +f 244/340/83 262/359/83 263/360/83 +f 243/361/83 261/362/83 262/359/83 +f 370/363/82 257/348/82 368/364/82 +f 269/365/82 245/366/82 270/367/82 +f 248/368/83 265/369/83 260/354/83 +f 367/370/82 245/366/82 246/324/82 +f 271/371/82 288/372/82 273/373/82 +f 277/374/82 294/375/82 279/376/82 +f 272/377/82 293/378/82 277/374/82 +f 298/379/83 285/380/83 286/381/83 +f 284/382/83 298/379/83 286/381/83 +f 276/383/82 294/375/82 292/384/82 +f 297/385/83 280/386/83 285/380/83 +f 301/387/83 283/388/83 282/389/83 +f 275/390/82 299/391/82 274/392/82 +f 302/393/83 284/394/83 283/388/83 +f 276/395/82 300/396/82 275/390/82 +f 280/397/83 290/342/83 281/344/83 +f 272/398/82 288/372/82 291/399/82 +f 904/400/82 901/401/82 906/402/82 +f 329/403/83 341/404/83 340/405/83 +f 319/406/83 341/404/83 330/407/83 +f 319/408/83 331/409/83 342/410/83 +f 321/411/83 331/409/83 320/412/83 +f 322/413/83 332/414/83 321/415/83 +f 323/416/83 333/417/83 322/418/83 +f 324/419/83 334/420/83 323/421/83 +f 324/422/83 336/423/83 335/424/83 +f 326/425/83 336/426/83 325/427/83 +f 326/428/83 338/429/83 337/430/83 +f 327/431/83 339/432/83 338/429/83 +f 329/433/83 339/432/83 328/434/83 +f 255/334/83 267/435/83 264/335/83 +f 268/358/82 251/351/82 266/436/82 +f 261/437/83 247/353/83 259/355/83 +f 353/438/83 349/439/83 345/440/83 +f 379/441/84 387/442/84 378/443/84 +f 377/444/85 385/445/85 376/446/85 +f 375/447/86 383/448/86 374/449/86 +f 378/443/87 386/450/87 377/451/87 +f 376/446/88 384/452/88 375/447/88 +f 388/453/83 383/454/83 385/455/83 +f 383/454/89 701/456/89 700/457/89 +f 700/457/83 382/458/83 372/459/83 +f 374/460/82 392/461/82 375/462/82 +f 373/463/90 391/464/90 374/460/90 +f 371/465/82 390/466/82 373/463/82 +f 380/467/82 396/468/82 381/469/82 +f 379/470/90 395/471/90 380/467/90 +f 379/470/82 393/472/82 394/473/82 +f 376/474/82 398/475/82 377/476/82 +f 398/475/82 378/477/82 377/476/82 +f 375/462/82 397/478/82 376/474/82 +f 371/465/91 372/459/91 401/479/91 +f 372/459/91 402/480/91 401/479/91 +f 407/481/82 411/482/82 403/483/82 +f 460/484/83 480/485/83 461/486/83 +f 459/487/83 481/488/83 460/484/83 +f 458/489/83 482/490/83 459/487/83 +f 458/489/83 484/491/83 483/492/83 +f 457/493/83 485/494/83 484/491/83 +f 456/495/83 486/496/83 485/494/83 +f 437/497/82 479/498/82 436/499/82 +f 438/500/82 478/501/82 437/497/82 +f 439/502/82 477/503/82 438/500/82 +f 475/504/82 439/502/82 440/505/82 +f 474/506/82 440/505/82 441/507/82 +f 473/508/82 441/507/82 442/509/82 +f 473/508/82 469/510/82 467/511/82 +f 467/512/92 498/513/92 466/514/92 +f 470/515/83 480/485/83 466/516/83 +f 471/517/93 494/518/93 472/519/93 +f 486/496/83 472/519/83 465/520/83 +f 471/517/82 479/498/82 468/521/82 +f 511/522/82 502/523/82 509/524/82 +f 497/525/91 495/526/91 496/527/91 +f 499/528/91 493/529/91 500/530/91 +f 470/515/83 498/531/83 497/525/83 +f 468/532/94 499/528/94 500/530/94 +f 470/515/95 496/527/95 469/510/95 +f 471/517/96 500/533/96 493/529/96 +f 472/519/97 499/534/97 465/520/97 +f 469/510/82 495/535/82 467/511/82 +f 509/536/84 504/537/84 510/538/84 +f 512/539/91 509/524/91 510/540/91 +f 509/541/82 502/542/82 473/508/82 +f 504/537/91 467/512/91 466/514/91 +f 510/543/83 504/544/83 466/516/83 +f 507/545/83 510/540/83 501/546/83 +f 511/547/82 505/548/82 468/521/82 +f 511/549/86 508/550/86 505/551/86 +f 512/552/83 507/553/83 486/496/83 +f 505/551/91 465/554/91 468/532/91 +f 517/555/98 524/556/98 520/557/98 +f 515/558/84 518/559/84 516/560/84 +f 514/561/86 520/557/86 513/562/86 +f 516/560/83 517/555/83 514/561/83 +f 513/562/82 519/563/82 515/564/82 +f 522/565/91 524/556/91 521/566/91 +f 518/559/99 521/567/99 517/555/99 +f 520/557/100 523/568/100 519/563/100 +f 519/569/101 522/570/101 518/559/101 +f 489/571/83 531/572/83 530/573/83 +f 488/574/83 530/573/83 529/575/83 +f 488/576/83 528/577/83 487/578/83 +f 487/578/83 527/579/83 464/580/83 +f 453/581/82 537/582/82 452/583/82 +f 535/584/82 453/581/82 454/585/82 +f 534/586/82 454/585/82 443/587/82 +f 444/588/82 534/586/82 443/587/82 +f 445/589/82 545/590/82 444/588/82 +f 446/591/82 544/592/82 445/589/82 +f 447/593/82 543/594/82 446/591/82 +f 448/595/82 542/596/82 447/593/82 +f 449/597/82 541/598/82 448/595/82 +f 539/599/82 449/600/82 450/601/82 +f 538/602/82 450/601/82 451/603/82 +f 537/582/82 451/603/82 452/583/82 +f 548/604/83 551/605/83 547/606/83 +f 547/606/83 552/607/83 546/608/83 +f 550/609/83 552/607/83 554/610/83 +f 549/611/83 554/610/83 555/612/83 +f 492/613/102 555/614/102 533/615/102 +f 525/616/103 548/604/103 462/617/103 +f 561/618/83 566/619/83 565/620/83 +f 561/618/83 564/621/83 562/622/83 +f 562/622/83 563/623/83 556/624/83 +f 557/625/83 563/623/83 569/626/83 +f 558/627/83 569/626/83 568/628/83 +f 559/629/83 568/628/83 567/630/83 +f 575/631/82 580/632/82 574/633/82 +f 577/634/82 575/631/82 576/635/82 +f 578/636/82 576/635/82 571/637/82 +f 570/638/82 578/636/82 571/637/82 +f 572/639/82 583/640/82 570/638/82 +f 573/641/82 582/642/82 572/639/82 +f 602/643/104 604/644/104 600/645/104 +f 590/646/104 592/647/104 588/648/104 +f 587/649/83 589/650/83 591/651/83 +f 584/652/86 589/650/86 585/653/86 +f 586/654/82 588/648/82 584/652/82 +f 587/649/84 590/655/84 586/656/84 +f 592/657/85 595/658/85 593/659/85 +f 591/651/84 594/660/84 590/655/84 +f 589/650/105 595/661/105 591/651/105 +f 588/648/86 593/659/86 589/650/86 +f 597/662/83 603/663/83 599/664/83 +f 596/665/86 601/666/86 597/662/86 +f 596/667/82 602/643/82 600/645/82 +f 599/664/84 602/643/84 598/668/84 +f 604/669/85 607/670/85 605/671/85 +f 603/663/84 606/672/84 602/643/84 +f 601/666/105 607/673/105 603/663/105 +f 600/674/86 605/675/86 601/666/86 +f 609/676/84 610/677/84 608/678/84 +f 611/679/83 614/680/83 610/681/83 +f 615/682/86 612/683/86 614/684/86 +f 613/685/82 608/678/82 612/683/82 +f 614/680/85 608/686/85 610/681/85 +f 611/679/91 613/685/91 615/687/91 +f 383/448/86 700/688/86 372/459/86 +f 620/689/86 623/690/86 621/691/86 +f 616/692/91 623/690/91 618/693/91 +f 617/694/82 621/691/82 616/692/82 +f 617/695/85 622/696/85 620/697/85 +f 622/698/82 625/699/82 623/700/82 +f 626/701/85 622/696/85 619/702/85 +f 623/690/91 627/703/91 618/693/91 +f 628/704/82 631/705/82 629/706/82 +f 635/707/83 632/708/83 633/709/83 +f 631/705/84 633/710/84 629/711/84 +f 628/712/106 634/713/106 630/714/106 +f 631/705/91 634/713/91 635/707/91 +f 639/715/82 636/716/82 637/717/82 +f 640/718/83 643/719/83 641/720/83 +f 641/721/86 639/715/86 637/722/86 +f 642/723/107 636/724/107 638/725/107 +f 639/715/91 642/723/91 638/726/91 +f 379/441/84 382/458/84 388/727/84 +f 396/468/91 402/480/91 381/469/91 +f 708/728/108 710/729/108 712/730/108 +f 702/731/86 708/728/86 704/732/86 +f 717/733/85 714/734/85 715/735/85 +f 705/736/84 707/737/84 703/738/84 +f 703/739/83 706/740/83 702/741/83 +f 713/742/91 710/729/91 711/743/91 +f 709/744/109 711/743/109 707/737/109 +f 707/737/110 710/729/110 706/740/110 +f 705/745/82 704/746/82 712/730/82 +f 720/747/91 723/748/91 721/749/91 +f 716/750/86 718/751/86 714/734/86 +f 723/752/83 724/753/83 716/750/83 +f 720/747/82 719/754/82 715/735/82 +f 716/750/83 721/755/83 723/752/83 +f 719/756/84 717/733/84 715/735/84 +f 720/757/111 725/758/111 719/759/111 +f 721/749/86 726/760/86 720/747/86 +f 718/761/111 727/762/111 722/763/111 +f 723/748/84 722/764/84 727/765/84 +f 725/758/83 721/755/83 717/733/83 +f 733/766/82 742/767/82 741/768/82 +f 728/769/82 736/770/82 735/771/82 +f 728/772/82 742/767/82 734/773/82 +f 744/774/82 740/775/82 732/776/82 +f 743/777/82 738/778/82 730/779/82 +f 730/779/82 736/770/82 729/780/82 +f 755/781/83 748/782/83 759/783/83 +f 747/784/83 752/785/83 753/786/83 +f 757/787/83 748/782/83 756/788/83 +f 757/787/83 745/789/83 749/790/83 +f 745/791/83 751/792/83 746/793/83 +f 751/792/83 747/784/83 746/793/83 +f 773/794/84 768/795/84 770/796/84 +f 783/797/86 779/798/86 777/799/86 +f 767/800/112 761/801/112 765/802/112 +f 766/803/113 760/804/113 762/805/113 +f 766/806/114 763/807/114 767/808/114 +f 765/809/100 760/810/100 764/811/100 +f 784/812/86 788/813/86 790/814/86 +f 794/815/84 799/816/84 797/817/84 +f 804/818/85 806/819/85 805/820/85 +f 801/821/86 807/822/86 803/823/86 +f 802/824/84 805/820/84 800/825/84 +f 803/826/83 804/818/83 802/827/83 +f 800/828/82 806/819/82 801/829/82 +f 822/830/84 808/831/84 810/832/84 +f 821/833/86 811/834/86 809/835/86 +f 826/836/84 812/837/84 814/838/84 +f 825/839/86 815/840/86 813/841/86 +f 824/842/84 810/832/84 812/837/84 +f 811/834/86 825/843/86 813/841/86 +f 830/844/84 816/845/84 818/846/84 +f 817/847/86 831/848/86 819/849/86 +f 828/850/84 814/838/84 816/845/84 +f 815/840/86 829/851/86 817/847/86 +f 839/852/86 833/853/86 835/854/86 +f 836/855/84 834/856/84 832/857/84 +f 840/858/84 838/859/84 836/855/84 +f 843/860/86 837/861/86 839/852/86 +f 841/862/86 843/860/86 845/863/86 +f 842/864/84 840/858/84 844/865/84 +f 847/866/82 864/867/82 846/868/82 +f 864/867/82 865/869/82 878/870/82 +f 885/871/83 867/872/83 869/873/83 +f 861/874/91 883/875/91 873/876/91 +f 883/875/84 877/877/84 880/878/84 +f 871/879/83 882/880/83 861/881/83 +f 868/882/85 877/877/85 871/883/85 +f 884/884/86 887/885/86 885/886/86 +f 870/887/85 885/886/85 869/888/85 +f 872/889/91 886/890/91 860/891/91 +f 860/892/83 884/884/83 870/893/83 +f 880/894/83 866/895/83 881/896/83 +f 885/871/83 888/897/83 889/898/83 +f 880/894/83 891/899/83 883/900/83 +f 890/901/83 881/896/83 879/902/83 +f 907/903/83 902/904/83 905/905/83 +f 903/906/82 287/907/82 271/908/82 +f 905/905/83 278/909/83 289/910/83 +f 906/911/82 274/912/82 299/391/82 +f 900/913/83 301/387/83 282/914/83 +f 913/915/91 908/916/91 910/917/91 +f 914/918/91 911/919/91 909/920/91 +f 926/921/82 920/922/82 922/923/82 +f 925/924/83 923/925/83 921/926/83 +f 930/927/83 913/915/83 910/928/83 +f 912/929/82 928/930/82 908/931/82 +f 915/932/83 931/933/83 911/934/83 +f 929/935/82 914/918/82 909/936/82 +f 923/925/83 931/937/83 919/938/83 +f 929/939/82 922/923/82 918/940/82 +f 930/941/83 921/926/83 917/942/83 +f 920/922/82 928/943/82 916/944/82 +f 939/945/84 936/946/84 937/947/84 +f 939/945/91 932/948/91 934/949/91 +f 937/947/82 933/950/82 932/948/82 +f 933/951/85 938/952/85 935/953/85 +f 941/954/82 938/955/82 939/956/82 +f 938/952/85 942/957/85 935/953/85 +f 939/945/91 943/958/91 941/954/91 +f 194/289/82 220/959/82 219/290/82 +f 194/289/82 192/296/82 221/292/82 +f 190/294/82 222/960/82 221/295/82 +f 190/294/82 188/301/82 211/297/82 +f 210/299/82 212/961/82 211/300/82 +f 210/299/82 208/304/82 213/302/82 +f 208/304/82 206/307/82 214/305/82 +f 206/307/82 204/310/82 215/308/82 +f 204/310/82 202/315/82 216/311/82 +f 200/313/82 217/962/82 216/314/82 +f 200/316/82 198/320/82 218/317/82 +f 196/291/82 219/963/82 218/319/82 +f 224/323/82 223/964/82 227/965/82 +f 223/964/82 225/966/82 227/965/82 +f 225/966/82 226/967/82 227/965/82 +f 227/965/82 228/968/82 229/321/82 +f 229/321/82 230/969/82 231/322/82 +f 231/322/82 232/970/82 233/971/82 +f 233/971/82 234/972/82 231/322/82 +f 234/972/82 224/323/82 231/322/82 +f 227/965/82 229/321/82 224/323/82 +f 246/324/82 236/973/82 241/325/82 +f 239/327/82 238/330/82 258/328/82 +f 238/330/82 239/974/82 241/331/82 +f 265/333/83 250/975/83 255/334/83 +f 237/336/83 240/976/83 267/337/83 +f 242/339/83 235/977/83 244/340/83 +f 290/342/83 289/910/83 278/343/83 +f 235/345/83 242/978/83 240/346/83 +f 369/347/82 368/364/82 257/348/82 +f 269/350/82 266/436/82 251/351/82 +f 247/353/83 248/368/83 260/354/83 +f 369/356/82 254/349/82 252/357/82 +f 244/340/83 243/361/83 262/359/83 +f 243/361/83 249/979/83 261/362/83 +f 370/363/82 258/328/82 257/348/82 +f 269/365/82 253/352/82 245/366/82 +f 248/368/83 250/975/83 265/369/83 +f 367/370/82 270/367/82 245/366/82 +f 271/371/82 287/907/82 288/372/82 +f 277/374/82 293/378/82 294/375/82 +f 272/377/82 291/399/82 293/378/82 +f 298/379/83 297/385/83 285/380/83 +f 284/382/83 296/980/83 298/379/83 +f 276/383/82 279/376/82 294/375/82 +f 297/385/83 295/981/83 280/386/83 +f 301/387/83 302/393/83 283/388/83 +f 275/390/82 300/396/82 299/391/82 +f 302/393/83 296/980/83 284/394/83 +f 276/395/82 292/384/82 300/396/82 +f 280/397/83 295/981/83 290/342/83 +f 272/398/82 273/373/82 288/372/82 +f 904/400/82 903/982/82 901/401/82 +f 329/403/83 330/983/83 341/404/83 +f 319/406/83 342/410/83 341/404/83 +f 319/408/83 320/984/83 331/409/83 +f 321/411/83 332/414/83 331/409/83 +f 322/413/83 333/417/83 332/414/83 +f 323/416/83 334/420/83 333/417/83 +f 324/419/83 335/424/83 334/420/83 +f 324/422/83 325/985/83 336/423/83 +f 326/425/83 337/430/83 336/426/83 +f 326/428/83 327/986/83 338/429/83 +f 327/431/83 328/987/83 339/432/83 +f 329/433/83 340/405/83 339/432/83 +f 255/334/83 256/338/83 267/435/83 +f 268/358/82 252/357/82 251/351/82 +f 261/437/83 249/979/83 247/353/83 +f 345/440/83 344/988/83 343/989/83 +f 343/989/83 354/990/83 345/440/83 +f 354/990/83 353/438/83 345/440/83 +f 353/438/83 352/991/83 349/439/83 +f 352/991/83 351/992/83 349/439/83 +f 351/992/83 350/993/83 349/439/83 +f 349/439/83 348/994/83 347/995/83 +f 347/995/83 346/996/83 349/439/83 +f 346/996/83 345/440/83 349/439/83 +f 379/441/84 388/727/84 387/442/84 +f 377/444/85 386/997/85 385/445/85 +f 375/447/86 384/452/86 383/448/86 +f 378/443/87 387/442/87 386/450/87 +f 376/446/88 385/445/88 384/452/88 +f 383/454/83 384/998/83 385/455/83 +f 385/455/83 386/999/83 388/453/83 +f 386/999/83 387/1000/83 388/453/83 +f 383/454/89 388/453/89 701/456/89 +f 700/457/83 701/456/83 382/458/83 +f 374/460/82 391/464/82 392/461/82 +f 373/463/90 390/466/90 391/464/90 +f 371/465/82 389/1001/82 390/466/82 +f 380/467/82 395/471/82 396/468/82 +f 379/470/90 394/473/90 395/471/90 +f 379/470/82 378/477/82 393/472/82 +f 376/474/82 397/478/82 398/475/82 +f 398/475/82 393/472/82 378/477/82 +f 375/462/82 392/461/82 397/478/82 +f 399/1002/91 389/1001/91 401/479/91 +f 389/1001/91 371/465/91 401/479/91 +f 372/459/91 382/458/91 402/480/91 +f 403/483/82 404/1003/82 407/481/82 +f 404/1003/82 405/1004/82 407/481/82 +f 405/1004/82 406/1005/82 407/481/82 +f 407/481/82 408/1006/82 409/1007/82 +f 409/1007/82 410/1008/82 411/482/82 +f 411/482/82 412/1009/82 413/1010/82 +f 413/1010/82 414/1011/82 411/482/82 +f 414/1011/82 403/483/82 411/482/82 +f 407/481/82 409/1007/82 411/482/82 +f 460/484/83 481/488/83 480/485/83 +f 459/487/83 482/490/83 481/488/83 +f 458/489/83 483/492/83 482/490/83 +f 458/489/83 457/493/83 484/491/83 +f 457/493/83 456/495/83 485/494/83 +f 456/495/83 455/1012/83 486/496/83 +f 437/497/82 478/501/82 479/498/82 +f 438/500/82 477/503/82 478/501/82 +f 439/502/82 476/1013/82 477/503/82 +f 475/504/82 476/1013/82 439/502/82 +f 474/506/82 475/504/82 440/505/82 +f 473/508/82 474/506/82 441/507/82 +f 473/508/82 442/509/82 469/510/82 +f 467/512/92 495/526/92 498/513/92 +f 470/515/83 461/486/83 480/485/83 +f 471/517/93 493/529/93 494/518/93 +f 486/496/83 455/1012/83 472/519/83 +f 471/517/82 436/499/82 479/498/82 +f 511/522/82 506/1014/82 502/523/82 +f 497/525/91 498/513/91 495/526/91 +f 499/528/91 494/518/91 493/529/91 +f 470/515/83 466/516/83 498/531/83 +f 468/532/94 465/554/94 499/528/94 +f 470/515/95 497/525/95 496/527/95 +f 471/517/96 468/521/96 500/533/96 +f 472/519/97 494/518/97 499/534/97 +f 469/510/82 496/527/82 495/535/82 +f 509/536/84 503/1015/84 504/537/84 +f 512/539/91 511/522/91 509/524/91 +f 473/508/82 467/511/82 509/541/82 +f 467/511/82 503/1016/82 509/541/82 +f 504/537/91 503/1015/91 467/512/91 +f 466/516/83 480/485/83 510/543/83 +f 480/485/83 501/1017/83 510/543/83 +f 507/545/83 512/539/83 510/540/83 +f 468/521/82 479/498/82 511/547/82 +f 479/498/82 506/1018/82 511/547/82 +f 511/549/86 512/1019/86 508/550/86 +f 486/496/83 465/520/83 512/552/83 +f 465/520/83 508/1020/83 512/552/83 +f 505/551/91 508/550/91 465/554/91 +f 517/555/98 521/566/98 524/556/98 +f 515/558/84 519/569/84 518/559/84 +f 514/561/86 517/555/86 520/557/86 +f 516/560/83 518/559/83 517/555/83 +f 513/562/82 520/557/82 519/563/82 +f 522/565/91 523/1021/91 524/556/91 +f 518/559/99 522/1022/99 521/567/99 +f 520/557/100 524/1023/100 523/568/100 +f 519/569/101 523/1024/101 522/570/101 +f 489/571/83 490/1025/83 531/572/83 +f 488/574/83 489/571/83 530/573/83 +f 488/576/83 529/1026/83 528/577/83 +f 487/578/83 528/577/83 527/579/83 +f 453/581/82 536/1027/82 537/582/82 +f 535/584/82 536/1027/82 453/581/82 +f 534/586/82 535/584/82 454/585/82 +f 444/588/82 545/590/82 534/586/82 +f 445/589/82 544/592/82 545/590/82 +f 446/591/82 543/594/82 544/592/82 +f 447/593/82 542/596/82 543/594/82 +f 448/595/82 541/598/82 542/596/82 +f 449/597/82 540/1028/82 541/598/82 +f 539/599/82 540/1029/82 449/600/82 +f 538/602/82 539/599/82 450/601/82 +f 537/582/82 538/602/82 451/603/82 +f 548/604/83 553/1030/83 551/605/83 +f 547/606/83 551/605/83 552/607/83 +f 550/609/83 546/608/83 552/607/83 +f 549/611/83 550/609/83 554/610/83 +f 492/613/102 549/611/102 555/614/102 +f 525/616/103 553/1031/103 548/604/103 +f 561/618/83 560/1032/83 566/619/83 +f 561/618/83 565/620/83 564/621/83 +f 562/622/83 564/621/83 563/623/83 +f 557/625/83 556/624/83 563/623/83 +f 558/627/83 557/625/83 569/626/83 +f 559/629/83 558/627/83 568/628/83 +f 575/631/82 579/1033/82 580/632/82 +f 577/634/82 579/1033/82 575/631/82 +f 578/636/82 577/634/82 576/635/82 +f 570/638/82 583/640/82 578/636/82 +f 572/639/82 582/642/82 583/640/82 +f 573/641/82 581/1034/82 582/642/82 +f 602/643/104 606/1035/104 604/644/104 +f 590/646/104 594/1036/104 592/647/104 +f 587/649/83 585/653/83 589/650/83 +f 584/652/86 588/648/86 589/650/86 +f 586/654/82 590/646/82 588/648/82 +f 587/649/84 591/651/84 590/655/84 +f 592/657/85 594/1037/85 595/658/85 +f 591/651/84 595/1038/84 594/660/84 +f 589/650/105 593/1039/105 595/661/105 +f 588/648/86 592/657/86 593/659/86 +f 597/662/83 601/666/83 603/663/83 +f 596/665/86 600/674/86 601/666/86 +f 596/667/82 598/668/82 602/643/82 +f 599/664/84 603/663/84 602/643/84 +f 604/669/85 606/672/85 607/670/85 +f 603/663/84 607/670/84 606/672/84 +f 601/666/105 605/1040/105 607/673/105 +f 600/674/86 604/1041/86 605/675/86 +f 609/676/84 611/1042/84 610/677/84 +f 611/679/83 615/687/83 614/680/83 +f 615/682/86 613/685/86 612/683/86 +f 613/685/82 609/676/82 608/678/82 +f 614/680/85 612/1043/85 608/686/85 +f 611/679/91 609/676/91 613/685/91 +f 372/459/86 371/465/86 383/448/86 +f 371/465/86 373/1044/86 374/449/86 +f 383/448/86 371/465/86 374/449/86 +f 620/689/86 622/1045/86 623/690/86 +f 616/692/91 621/691/91 623/690/91 +f 617/694/82 620/1046/82 621/691/82 +f 617/695/85 619/702/85 622/696/85 +f 622/698/82 624/1047/82 625/699/82 +f 626/701/85 624/1048/85 622/696/85 +f 623/690/91 625/699/91 627/703/91 +f 628/704/82 630/1049/82 631/705/82 +f 635/707/83 634/713/83 632/708/83 +f 631/705/84 635/707/84 633/710/84 +f 628/712/106 632/708/106 634/713/106 +f 631/705/91 630/1049/91 634/713/91 +f 639/715/82 638/726/82 636/716/82 +f 640/718/83 642/723/83 643/719/83 +f 641/721/86 643/719/86 639/715/86 +f 642/723/107 640/718/107 636/724/107 +f 639/715/91 643/719/91 642/723/91 +f 379/441/84 380/1050/84 381/469/84 +f 381/469/84 382/458/84 379/441/84 +f 382/458/84 701/1051/84 388/727/84 +f 400/1052/91 402/480/91 396/468/91 +f 402/480/91 382/458/91 381/469/91 +f 708/728/108 706/740/108 710/729/108 +f 702/731/86 706/740/86 708/728/86 +f 717/733/85 716/750/85 714/734/85 +f 705/736/84 709/744/84 707/737/84 +f 703/739/83 707/737/83 706/740/83 +f 713/742/91 712/730/91 710/729/91 +f 709/744/109 713/742/109 711/743/109 +f 707/737/110 711/743/110 710/729/110 +f 704/746/82 708/1053/82 712/730/82 +f 712/730/82 713/742/82 705/745/82 +f 713/742/82 709/1054/82 705/745/82 +f 720/747/91 722/764/91 723/748/91 +f 716/750/86 724/1055/86 718/751/86 +f 723/752/83 727/762/83 724/753/83 +f 715/735/82 714/734/82 722/764/82 +f 714/734/82 718/1056/82 722/764/82 +f 722/764/82 720/747/82 715/735/82 +f 716/750/83 717/733/83 721/755/83 +f 719/756/84 725/1057/84 717/733/84 +f 720/757/111 726/1058/111 725/758/111 +f 718/761/111 724/753/111 727/762/111 +f 725/758/83 726/1058/83 721/755/83 +f 733/766/82 734/773/82 742/767/82 +f 728/769/82 729/780/82 736/770/82 +f 728/772/82 735/1059/82 742/767/82 +f 744/774/82 733/766/82 740/775/82 +f 733/766/82 741/768/82 740/775/82 +f 740/775/82 739/1060/82 732/776/82 +f 743/777/82 732/776/82 738/778/82 +f 732/776/82 739/1060/82 738/778/82 +f 738/778/82 737/1061/82 730/779/82 +f 730/779/82 737/1061/82 736/770/82 +f 731/1062/83 754/1063/83 755/781/83 +f 755/781/83 756/788/83 748/782/83 +f 759/783/83 731/1062/83 755/781/83 +f 754/1063/83 731/1062/83 753/786/83 +f 731/1062/83 758/1064/83 753/786/83 +f 758/1064/83 747/784/83 753/786/83 +f 757/787/83 749/790/83 748/782/83 +f 757/787/83 750/1065/83 745/789/83 +f 745/791/83 750/1066/83 751/792/83 +f 751/792/83 752/785/83 747/784/83 +f 770/796/84 771/1067/84 775/1068/84 +f 775/1068/84 774/1069/84 773/794/84 +f 773/794/84 772/1070/84 768/795/84 +f 768/795/84 769/1071/84 770/796/84 +f 770/796/84 775/1068/84 773/794/84 +f 777/799/86 776/1072/86 782/1073/86 +f 782/1073/86 781/1074/86 783/797/86 +f 783/797/86 780/1075/86 779/798/86 +f 779/798/86 778/1076/86 777/799/86 +f 777/799/86 782/1073/86 783/797/86 +f 767/800/112 763/1077/112 761/801/112 +f 766/803/113 764/1078/113 760/804/113 +f 766/806/114 762/1079/114 763/807/114 +f 765/809/100 761/801/100 760/810/100 +f 790/814/86 791/1080/86 785/1081/86 +f 785/1081/86 786/1082/86 784/812/86 +f 784/812/86 787/1083/86 788/813/86 +f 788/813/86 789/1084/86 790/814/86 +f 790/814/86 785/1081/86 784/812/86 +f 797/817/84 796/1085/84 792/1086/84 +f 792/1086/84 793/1087/84 794/815/84 +f 794/815/84 795/1088/84 799/816/84 +f 799/816/84 798/1089/84 797/817/84 +f 797/817/84 792/1086/84 794/815/84 +f 804/818/85 807/822/85 806/819/85 +f 801/821/86 806/819/86 807/822/86 +f 802/824/84 804/818/84 805/820/84 +f 803/826/83 807/822/83 804/818/83 +f 800/828/82 805/820/82 806/819/82 +f 822/830/84 820/1090/84 808/831/84 +f 821/833/86 823/1091/86 811/834/86 +f 826/836/84 824/1092/84 812/837/84 +f 825/839/86 827/1093/86 815/840/86 +f 824/842/84 822/1094/84 810/832/84 +f 811/834/86 823/1095/86 825/843/86 +f 830/844/84 828/850/84 816/845/84 +f 817/847/86 829/851/86 831/848/86 +f 828/850/84 826/1096/84 814/838/84 +f 815/840/86 827/1097/86 829/851/86 +f 839/852/86 837/861/86 833/853/86 +f 836/855/84 838/859/84 834/856/84 +f 840/858/84 842/864/84 838/859/84 +f 843/860/86 841/862/86 837/861/86 +f 847/866/82 865/869/82 864/867/82 +f 865/869/82 849/1098/82 876/1099/82 +f 878/870/82 848/1100/82 864/867/82 +f 865/869/82 876/1099/82 878/870/82 +f 885/871/83 879/902/83 867/872/83 +f 861/874/91 882/880/91 883/875/91 +f 883/875/84 882/880/84 877/877/84 +f 871/879/83 877/877/83 882/880/83 +f 868/882/85 880/878/85 877/877/85 +f 884/884/86 886/890/86 887/885/86 +f 870/887/85 884/884/85 885/886/85 +f 872/889/91 887/885/91 886/890/91 +f 860/892/83 886/890/83 884/884/83 +f 880/894/83 868/1101/83 866/895/83 +f 885/871/83 887/1102/83 888/897/83 +f 880/894/83 890/901/83 891/899/83 +f 879/902/83 885/871/83 889/898/83 +f 890/901/83 880/894/83 881/896/83 +f 879/902/83 889/898/83 890/901/83 +f 907/903/83 900/1103/83 902/904/83 +f 903/906/82 904/400/82 287/907/82 +f 905/905/83 902/1104/83 278/909/83 +f 906/911/82 901/1105/82 274/912/82 +f 900/913/83 907/1106/83 301/387/83 +f 913/915/91 912/929/91 908/916/91 +f 914/918/91 915/932/91 911/919/91 +f 926/921/82 924/1107/82 920/922/82 +f 925/924/83 927/1108/83 923/925/83 +f 930/927/83 917/942/83 913/915/83 +f 912/929/82 916/944/82 928/930/82 +f 915/932/83 919/938/83 931/933/83 +f 929/935/82 918/940/82 914/918/82 +f 923/925/83 927/1109/83 931/937/83 +f 929/939/82 926/1110/82 922/923/82 +f 930/941/83 925/1111/83 921/926/83 +f 920/922/82 924/1112/82 928/943/82 +f 939/945/84 938/1113/84 936/946/84 +f 939/945/91 937/947/91 932/948/91 +f 937/947/82 936/1114/82 933/950/82 +f 933/951/85 936/1115/85 938/952/85 +f 941/954/82 940/1116/82 938/955/82 +f 938/952/85 940/1117/85 942/957/85 +f 939/945/91 934/949/91 943/958/91 s 1 -f 2/13/10 3/984/34 1/985/10 -f 4/6/34 5/986/35 3/984/34 -f 8/1/5 9/987/36 7/988/5 -f 10/3/36 11/989/22 9/987/36 -f 12/32/22 13/990/4 11/989/22 -f 14/25/4 15/991/21 13/992/4 -f 16/27/21 17/993/37 15/991/21 -f 18/22/37 19/994/3 17/993/37 -f 20/19/3 21/995/38 19/994/3 -f 22/16/38 23/996/39 21/995/38 -f 24/11/39 1/985/10 23/996/39 -f 29/20/35 40/997/5 28/21/5 -f 36/763/21 47/998/37 35/7/37 -f 26/764/22 38/999/4 25/12/4 -f 33/766/38 44/1000/39 32/31/39 -f 30/23/34 41/1001/35 29/24/35 -f 25/9/4 48/1002/21 36/10/21 -f 27/14/36 37/1003/22 26/15/22 -f 34/762/3 45/1004/38 33/2/38 -f 31/765/10 42/1005/34 30/26/34 -f 28/17/5 39/1006/36 27/18/36 -f 35/4/37 46/1007/3 34/5/3 -f 32/29/39 43/1008/10 31/30/10 -f 49/780/40 60/36/41 58/52/41 -f 59/78/42 58/52/41 60/36/41 -f 59/78/42 63/782/43 57/73/42 -f 65/63/44 63/782/27 67/64/27 -f 68/61/28 62/80/45 66/69/45 -f 72/40/46 69/46/47 71/60/47 -f 66/69/45 61/65/44 65/63/44 -f 52/42/48 49/57/40 51/48/48 -f 72/40/46 51/48/48 70/50/46 -f 854/1009/9 835/1010/9 855/1011/9 -f 101/691/46 104/54/47 102/84/47 -f 105/111/49 104/54/47 109/784/49 -f 105/111/28 111/97/45 107/90/45 -f 107/90/45 112/91/44 108/87/44 -f 108/87/44 110/783/27 106/96/27 -f 114/108/42 110/783/43 116/105/42 -f 114/108/42 115/99/41 113/103/41 -f 884/112/48 887/687/40 885/689/48 -f 122/1012/50 126/1013/51 117/1014/52 -f 124/1015/44 130/1016/53 121/1017/45 -f 123/1018/54 127/1019/55 132/1020/56 -f 126/1013/51 551/1021/57 548/1022/58 -f 128/1023/59 120/1024/60 119/1025/48 -f 124/1015/44 132/1020/56 131/1026/61 -f 126/1027/51 118/1028/40 117/1029/52 -f 130/1016/53 122/1030/50 121/1017/45 -f 118/1028/40 128/1023/59 119/1025/48 -f 68/61/49 69/46/47 64/778/49 -f 144/119/21 157/1031/4 133/118/4 -f 134/124/22 159/1032/36 135/123/36 -f 141/143/38 166/1033/3 142/790/3 -f 138/134/34 163/1034/10 139/788/10 -f 135/127/36 160/1035/5 136/125/5 -f 142/146/3 167/1036/37 143/145/37 -f 139/139/10 164/1037/39 140/137/39 -f 136/130/5 161/1038/35 137/128/35 -f 143/115/37 168/1039/21 144/786/21 -f 133/120/4 158/1040/22 134/787/22 -f 140/140/39 165/1041/38 141/789/38 -f 137/133/35 162/1042/34 138/131/34 -f 151/142/22 174/1043/4 150/138/4 -f 148/132/37 171/1044/3 147/129/3 -f 155/116/34 178/1045/35 154/117/35 -f 145/121/39 180/1046/10 156/122/10 -f 152/141/36 175/1047/22 151/142/22 -f 149/136/21 172/1048/37 148/132/37 -f 156/122/10 179/1049/34 155/116/34 -f 146/126/38 169/1050/39 145/121/39 -f 153/144/5 176/1051/36 152/141/36 -f 150/135/4 173/1052/21 149/136/21 -f 147/129/3 170/1053/38 146/126/38 -f 154/117/35 177/1054/5 153/144/5 -f 221/1055/38 215/1056/62 214/1057/38 -f 223/1058/63 217/1059/35 216/1060/63 -f 224/1061/35 218/1062/34 217/1059/35 -f 226/1063/10 213/1064/39 219/1065/10 -f 225/1066/34 219/1065/10 218/1062/34 -f 220/1067/39 214/1057/38 213/1064/39 -f 233/1068/38 246/1069/62 234/1070/62 -f 241/1071/35 252/1072/63 253/1073/35 -f 242/1074/34 253/1073/35 254/1075/34 -f 231/1076/10 243/1077/39 232/1078/39 -f 242/1074/34 244/1079/10 231/1076/10 -f 232/1078/39 245/1080/38 233/1068/38 -f 258/1081/39 273/1082/38 259/1083/38 -f 266/1084/63 276/1085/35 267/1086/35 -f 259/1083/38 274/1087/62 260/1088/62 -f 267/1086/35 277/1089/34 268/1090/34 -f 268/1090/34 272/1091/10 257/1092/10 -f 257/1092/10 271/1093/39 258/1081/39 -f 292/1094/3 281/1095/37 280/1096/3 -f 299/1097/35 288/1098/34 287/1099/35 -f 301/1100/10 278/1101/39 289/1102/10 -f 296/1103/22 285/1104/36 284/1105/22 -f 293/1106/37 282/1107/21 281/1095/37 -f 300/1108/34 289/1102/10 288/1098/34 -f 290/1109/39 279/1110/38 278/1101/39 -f 297/1111/36 286/1112/5 285/1104/36 -f 294/1113/21 283/1114/4 282/1107/21 -f 291/1115/38 280/1096/3 279/1110/38 -f 298/1116/5 287/1099/35 286/1112/5 -f 295/1117/4 284/1105/22 283/1118/4 -f 306/1119/39 312/1120/10 305/1121/10 -f 304/1122/34 310/1123/35 303/1124/35 -f 307/1125/38 313/1126/39 306/1119/39 -f 305/1121/10 311/1127/34 304/1122/34 -f 303/1124/35 309/1128/63 302/1129/63 -f 308/1130/62 314/1131/38 307/1125/38 -f 338/210/4 320/226/22 319/223/4 -f 339/208/22 321/228/36 320/226/22 -f 340/205/36 322/230/64 321/228/36 -f 335/846/65 317/218/37 316/220/65 -f 336/216/37 318/221/21 317/218/37 -f 337/214/21 319/223/4 318/221/21 -f 341/207/64 349/231/66 322/230/64 -f 368/1132/4 328/316/21 369/1133/21 -f 371/1134/67 325/310/38 372/334/68 -f 343/1135/69 333/302/35 332/304/5 -f 367/1136/22 329/321/4 368/1137/4 -f 370/1138/70 326/312/3 371/1134/67 -f 344/1139/71 330/322/22 367/1136/22 -f 369/1133/21 327/314/37 370/1138/70 -f 372/334/68 325/310/38 324/309/39 -f 426/329/10 324/309/39 323/308/10 -f 344/1139/71 332/304/5 331/324/36 -f 335/846/65 351/238/72 352/240/72 -f 343/1140/73 405/1141/74 342/1142/75 -f 371/1143/76 413/1144/77 412/1145/78 -f 371/1143/76 411/293/74 370/859/79 -f 344/301/80 406/1146/81 343/1140/73 -f 427/327/34 323/308/10 334/306/34 -f 437/346/39 451/358/10 436/345/10 -f 438/348/38 450/359/39 437/346/39 -f 441/339/35 454/354/63 440/866/63 -f 439/350/62 452/360/38 438/348/38 -f 442/343/34 455/352/35 441/339/35 -f 436/345/10 456/356/34 442/343/34 -f 334/306/34 333/302/35 342/338/82 -f 519/434/83 516/885/84 518/435/84 -f 518/435/84 522/1147/85 520/1148/85 -f 515/1149/10 523/1150/86 521/1151/86 -f 521/1151/86 517/886/83 519/434/83 -f 520/1148/85 512/1152/4 514/1153/4 -f 524/883/87 527/1154/88 525/432/87 -f 526/1155/88 506/1156/89 527/1154/88 -f 551/1157/57 558/1158/90 559/1159/91 -f 125/1160/92 548/1161/58 549/1162/93 -f 125/1160/92 544/1163/94 128/1023/59 -f 132/1020/56 547/1164/95 131/1026/61 -f 128/1023/59 545/1165/96 127/1166/55 -f 127/1019/55 546/1167/97 132/1020/56 -f 129/1168/98 550/1169/99 551/1157/57 -f 131/1026/61 550/1169/99 130/1016/53 -f 555/1170/100 562/1171/101 558/1172/102 -f 546/1173/97 555/1174/103 547/1164/95 -f 545/1175/96 554/1176/104 546/1167/97 -f 549/1162/93 552/1177/105 544/1163/94 -f 549/1162/93 556/1178/106 557/1179/107 -f 544/1163/94 553/1180/108 545/1165/96 -f 547/1164/95 558/1158/90 550/1169/99 -f 548/1022/58 559/1181/91 556/1182/106 -f 558/1172/102 563/1183/109 559/1184/91 -f 555/1170/100 560/1185/110 561/1186/111 -f 561/1186/111 566/1187/112 562/1171/101 -f 562/1171/101 567/1188/113 563/1183/109 -f 561/1186/111 564/1189/114 565/1190/115 -f 565/1190/115 570/1191/116 566/1187/112 -f 566/1187/112 571/1192/117 567/1188/113 -f 564/1189/114 569/1193/118 565/1190/115 -f 557/1179/107 572/1194/119 552/1177/105 -f 557/1179/107 574/1195/120 575/1196/121 -f 552/1177/105 573/1197/122 553/1180/108 -f 575/1198/123 576/1199/124 572/1200/125 -f 574/1201/120 579/1202/126 575/1198/123 -f 573/1203/122 576/1199/124 577/1204/127 -f 579/1202/126 580/1205/128 576/1199/124 -f 579/1202/126 582/1206/129 583/1207/130 -f 576/1199/124 581/1208/131 577/1204/127 -f 583/1207/130 584/1209/132 580/1205/128 -f 583/1207/130 586/1210/133 587/1211/134 -f 580/1205/128 585/1212/135 581/1208/131 -f 587/1211/134 588/1213/136 584/1209/132 -f 586/1210/133 591/1214/137 587/1211/134 -f 584/1209/132 589/1215/138 585/1212/135 -f 591/1216/137 592/1217/139 588/1218/136 -f 591/1216/137 594/1219/140 595/1220/141 -f 588/1218/136 593/1221/142 589/1222/138 -f 595/1220/141 596/1223/143 592/1217/139 -f 594/1224/140 599/1225/144 595/1220/141 -f 592/1217/139 597/1226/145 593/1227/142 -f 563/1228/109 578/1229/146 559/1181/91 -f 573/1230/122 554/1176/104 553/1231/108 -f 597/1232/145 569/1233/118 568/1234/147 -f 570/1235/116 598/1236/148 571/1237/117 -f 596/1223/143 570/1235/116 569/1233/118 -f 564/1189/114 593/1227/142 568/1238/147 -f 577/1239/127 560/1240/110 554/1176/104 -f 581/1241/131 585/1212/135 593/1227/142 -f 568/1238/147 593/1227/142 597/1226/145 -f 594/1242/140 571/1243/117 598/1244/148 -f 594/1242/140 567/1245/113 571/1243/117 -f 582/1246/129 594/1242/140 586/1247/133 -f 574/1248/120 559/1181/91 578/1229/146 -f 645/539/28 663/543/149 646/538/149 -f 653/1249/5 667/1250/7 652/1251/7 -f 646/538/149 674/908/3 659/536/3 -f 654/1252/27 668/1253/5 653/1249/5 -f 660/1254/5 664/541/150 649/1255/150 -f 655/1256/10 669/1257/27 654/1252/27 -f 656/1258/28 670/1259/10 655/1256/10 -f 657/1260/3 671/1261/28 656/1258/28 -f 649/1255/150 665/549/27 650/1262/27 -f 658/1263/6 672/1264/3 657/1260/3 -f 650/1262/27 661/548/10 644/1265/10 -f 644/528/10 662/552/28 645/539/28 -f 651/1266/4 673/1267/6 658/1263/6 -f 652/1251/7 666/1268/4 651/1269/4 -f 689/1270/9 696/1271/1 688/1272/1 -f 690/1273/4 695/1274/9 689/1270/9 -f 685/1275/10 698/1276/29 686/1277/29 -f 686/1277/29 692/1278/2 687/1279/2 -f 691/1280/8 694/1281/4 690/1282/4 -f 687/1279/2 693/1283/8 691/1280/8 -f 684/1284/151 697/1285/10 685/1275/10 -f 688/1272/1 699/1286/151 684/1284/151 -f 711/1287/1 700/1288/151 715/1289/151 -f 715/1289/151 702/1290/10 714/1291/10 -f 712/1292/2 706/1293/8 708/1294/8 -f 708/1294/8 705/1295/4 709/1296/4 -f 713/1297/29 707/1298/2 712/1292/2 -f 714/1291/10 701/1299/29 713/1297/29 -f 709/1300/4 704/1301/9 710/1302/9 -f 710/1302/9 703/1303/1 711/1287/1 -f 731/1304/22 742/1305/152 730/1306/4 -f 728/1307/37 739/1308/153 727/1309/3 -f 735/1310/34 746/1311/154 734/1312/35 -f 725/1313/39 736/1314/155 724/1315/10 -f 732/1316/36 743/1317/156 731/1304/22 -f 729/1318/21 740/1319/157 728/1307/37 -f 724/1315/10 747/1320/158 735/1310/34 -f 726/1321/38 737/1322/159 725/1313/39 -f 733/1323/5 744/1324/160 732/1316/36 -f 730/1325/4 741/1326/161 729/1318/21 -f 727/1309/3 738/1327/162 726/1321/38 -f 734/1312/35 745/1328/163 733/1323/5 -f 740/1319/157 753/1329/164 752/1330/165 -f 747/1320/158 748/1331/166 759/1332/167 -f 737/1322/159 750/1333/168 749/1334/169 -f 744/1324/160 757/1335/170 756/1336/171 -f 742/1337/152 753/1329/164 741/1326/161 -f 738/1327/162 751/1338/172 750/1333/168 -f 746/1311/154 757/1335/170 745/1328/163 -f 742/1305/152 755/1339/173 754/1340/174 -f 740/1319/157 751/1338/172 739/1308/153 -f 747/1320/158 758/1341/175 746/1311/154 -f 737/1322/159 748/1331/166 736/1314/155 -f 744/1324/160 755/1339/173 743/1317/156 -f 752/1330/165 765/1342/176 764/1343/177 -f 759/1332/167 760/1344/178 771/1345/179 -f 749/1334/169 762/1346/180 761/1347/181 -f 757/1335/170 768/1348/182 756/1336/171 -f 754/1349/174 765/1342/176 753/1329/164 -f 751/1338/172 762/1346/180 750/1333/168 -f 757/1335/170 770/1350/183 769/1351/184 -f 754/1340/174 767/1352/185 766/1353/186 -f 751/1338/172 764/1343/177 763/1354/187 -f 759/1332/167 770/1350/183 758/1341/175 -f 749/1334/169 760/1344/178 748/1331/166 -f 756/1336/171 767/1352/185 755/1339/173 -f 766/1355/186 768/1356/182 760/1357/178 -f 791/618/188 788/615/2 789/619/2 -f 793/625/189 790/616/188 791/618/188 -f 795/624/190 792/621/189 793/625/189 -f 797/631/191 794/622/190 795/624/190 -f 799/633/23 796/629/191 797/631/191 -f 801/617/1 802/1358/192 803/952/192 -f 805/623/193 806/1359/194 807/954/194 -f 806/1360/194 809/635/195 807/958/194 -f 809/635/195 810/1361/18 811/632/18 -f 804/1362/193 803/956/192 802/1363/192 -f 818/1364/196 815/1365/23 814/640/23 -f 813/637/24 816/1366/197 812/1367/24 -f 817/1368/197 820/1369/188 816/1366/197 -f 822/1370/198 819/1371/196 818/1364/196 -f 825/1372/199 822/1370/198 824/1373/199 -f 825/1374/199 820/1369/188 821/1375/188 -f 826/652/10 831/1376/193 827/650/10 -f 830/1377/193 833/1378/1 831/1376/193 -f 843/1379/48 875/1380/200 839/1381/201 -f 834/1382/202 837/1383/203 835/1384/204 -f 836/1385/205 839/1381/201 837/1383/203 -f 829/1386/28 859/1387/45 856/1388/45 -f 838/1389/206 843/1379/48 839/1381/201 -f 850/1390/207 849/1391/32 847/1392/32 -f 846/1393/31 848/1394/31 851/1395/208 -f 850/1390/207 827/1396/5 840/1397/5 -f 844/1398/209 841/1399/3 826/1400/3 -f 834/1382/202 872/1401/210 836/1385/205 -f 837/1383/203 875/1380/200 873/1402/211 -f 858/1403/44 846/1393/27 828/1404/27 -f 856/1388/45 861/1405/44 858/1403/44 -f 838/1389/206 876/1406/41 842/1407/40 -f 836/1385/205 874/1408/212 838/1389/206 -f 835/1384/204 873/1402/211 855/1409/213 -f 852/1410/5 840/1397/5 875/1380/200 -f 874/1411/212 872/1412/210 841/1399/3 -f 831/1413/5 833/1414/5 827/1396/5 -f 832/1415/1 855/1011/9 833/1378/1 -f 854/1416/214 826/1400/3 872/1412/210 -f 101/691/46 885/689/48 103/694/46 -f 887/967/40 113/103/41 115/99/41 -f 827/1396/5 855/1417/213 873/1418/211 -f 826/1400/3 832/1419/3 830/1420/3 -f 902/707/48 899/722/46 898/724/46 -f 898/724/46 895/716/5 894/702/5 -f 897/726/41 892/713/3 893/699/3 -f 901/710/40 896/728/41 897/726/41 -f 902/707/48 901/710/40 903/709/48 -f 6/8/35 7/988/5 5/986/35 -f 923/1421/215 920/977/216 921/738/216 -f 914/1422/217 922/1423/215 923/1421/215 -f 936/981/218 939/980/219 938/979/218 -f 942/1424/220 938/979/218 940/1425/220 -f 943/1426/221 935/1427/10 941/1428/221 -f 937/760/219 941/1428/221 939/980/219 -f 932/1429/4 940/1425/220 934/1430/4 -f 2/13/10 4/6/34 3/984/34 -f 4/6/34 6/8/35 5/986/35 -f 8/1/5 10/3/36 9/987/36 -f 10/3/36 12/32/22 11/989/22 -f 12/32/22 14/28/4 13/990/4 -f 14/25/4 16/27/21 15/991/21 -f 16/27/21 18/22/37 17/993/37 -f 18/22/37 20/19/3 19/994/3 -f 20/19/3 22/16/38 21/995/38 -f 22/16/38 24/11/39 23/996/39 -f 24/11/39 2/13/10 1/985/10 -f 29/20/35 41/1431/35 40/997/5 -f 36/763/21 48/1432/21 47/998/37 -f 26/764/22 37/1433/22 38/999/4 -f 33/766/38 45/1434/38 44/1000/39 -f 30/23/34 42/1435/34 41/1001/35 -f 25/9/4 38/1436/4 48/1002/21 -f 27/14/36 39/1437/36 37/1003/22 -f 34/762/3 46/1438/3 45/1004/38 -f 31/765/10 43/1439/10 42/1005/34 -f 28/17/5 40/1440/5 39/1006/36 -f 35/4/37 47/1441/37 46/1007/3 -f 32/29/39 44/1442/39 43/1008/10 -f 49/780/40 50/776/40 60/36/41 -f 59/78/42 57/73/42 58/52/41 -f 59/78/42 67/64/43 63/782/43 -f 65/63/44 61/65/44 63/782/27 -f 68/61/28 64/778/28 62/80/45 -f 72/40/46 70/50/46 69/46/47 -f 66/69/45 62/80/45 61/65/44 -f 52/42/48 50/44/40 49/57/40 -f 72/40/46 52/42/48 51/48/48 -f 854/1009/9 834/1443/9 835/1010/9 -f 101/691/46 103/694/46 104/54/47 -f 105/111/49 102/84/47 104/54/47 -f 105/111/28 109/784/28 111/97/45 -f 107/90/45 111/97/45 112/91/44 -f 108/87/44 112/91/44 110/783/27 -f 114/108/42 106/96/43 110/783/43 -f 114/108/42 116/105/42 115/99/41 -f 884/112/48 886/114/40 887/687/40 -f 122/1012/50 129/1444/98 126/1013/51 -f 124/1015/44 131/1026/61 130/1016/53 -f 123/1018/54 120/1445/60 127/1019/55 -f 126/1013/51 129/1444/98 551/1021/57 -f 128/1023/59 127/1166/55 120/1024/60 -f 124/1015/44 123/1018/54 132/1020/56 -f 126/1027/51 125/1160/92 118/1028/40 -f 130/1016/53 129/1168/98 122/1030/50 -f 118/1028/40 125/1160/92 128/1023/59 -f 68/61/49 71/60/47 69/46/47 -f 144/119/21 168/1446/21 157/1031/4 -f 134/124/22 158/1447/22 159/1032/36 -f 141/143/38 165/1448/38 166/1033/3 -f 138/134/34 162/1449/34 163/1034/10 -f 135/127/36 159/1450/36 160/1035/5 -f 142/146/3 166/1451/3 167/1036/37 -f 139/139/10 163/1452/10 164/1037/39 -f 136/130/5 160/1453/5 161/1038/35 -f 143/115/37 167/1454/37 168/1039/21 -f 133/120/4 157/1455/4 158/1040/22 -f 140/140/39 164/1456/39 165/1041/38 -f 137/133/35 161/1457/35 162/1042/34 -f 151/142/22 175/1047/22 174/1043/4 -f 148/132/37 172/1048/37 171/1044/3 -f 155/116/34 179/1049/34 178/1045/35 -f 145/121/39 169/1050/39 180/1046/10 -f 152/141/36 176/1051/36 175/1047/22 -f 149/136/21 173/1052/21 172/1048/37 -f 156/122/10 180/1046/10 179/1049/34 -f 146/126/38 170/1053/38 169/1050/39 -f 153/144/5 177/1054/5 176/1051/36 -f 150/135/4 174/1458/4 173/1052/21 -f 147/129/3 171/1044/3 170/1053/38 -f 154/117/35 178/1045/35 177/1054/5 -f 221/1055/38 222/1459/62 215/1056/62 -f 223/1058/63 224/1061/35 217/1059/35 -f 224/1061/35 225/1066/34 218/1062/34 -f 226/1063/10 220/1067/39 213/1064/39 -f 225/1066/34 226/1063/10 219/1065/10 -f 220/1067/39 221/1055/38 214/1057/38 -f 233/1068/38 245/1080/38 246/1069/62 -f 241/1071/35 240/1460/63 252/1072/63 -f 242/1074/34 241/1071/35 253/1073/35 -f 231/1076/10 244/1079/10 243/1077/39 -f 242/1074/34 254/1075/34 244/1079/10 -f 232/1078/39 243/1077/39 245/1080/38 -f 258/1081/39 271/1093/39 273/1082/38 -f 266/1084/63 275/1461/63 276/1085/35 -f 259/1083/38 273/1082/38 274/1087/62 -f 267/1086/35 276/1085/35 277/1089/34 -f 268/1090/34 277/1089/34 272/1091/10 -f 257/1092/10 272/1091/10 271/1093/39 -f 292/1094/3 293/1106/37 281/1095/37 -f 299/1097/35 300/1108/34 288/1098/34 -f 301/1100/10 290/1109/39 278/1101/39 -f 296/1103/22 297/1111/36 285/1104/36 -f 293/1106/37 294/1113/21 282/1107/21 -f 300/1108/34 301/1100/10 289/1102/10 -f 290/1109/39 291/1115/38 279/1110/38 -f 297/1111/36 298/1116/5 286/1112/5 -f 294/1113/21 295/1462/4 283/1114/4 -f 291/1115/38 292/1094/3 280/1096/3 -f 298/1116/5 299/1097/35 287/1099/35 -f 295/1117/4 296/1103/22 284/1105/22 -f 306/1119/39 313/1126/39 312/1120/10 -f 304/1122/34 311/1127/34 310/1123/35 -f 307/1125/38 314/1131/38 313/1126/39 -f 305/1121/10 312/1120/10 311/1127/34 -f 303/1124/35 310/1123/35 309/1128/63 -f 308/1130/62 315/1463/62 314/1131/38 -f 338/210/4 339/208/22 320/226/22 -f 339/208/22 340/205/36 321/228/36 -f 340/205/36 341/207/64 322/230/64 -f 335/846/65 336/216/37 317/218/37 -f 336/216/37 337/214/21 318/221/21 -f 337/214/21 338/210/4 319/223/4 -f 341/207/64 350/236/66 349/231/66 -f 368/1132/4 329/318/4 328/316/21 -f 371/1134/67 326/312/3 325/310/38 -f 343/1135/69 342/338/82 333/302/35 -f 367/1136/22 330/322/22 329/321/4 -f 370/1138/70 327/314/37 326/312/3 -f 344/1139/71 331/324/36 330/322/22 -f 369/1133/21 328/316/21 327/314/37 -f 324/309/39 430/330/39 372/334/68 -f 430/330/39 429/332/28 372/334/68 -f 426/329/10 430/330/39 324/309/39 -f 344/1139/71 343/1135/69 332/304/5 -f 335/846/65 316/220/65 351/238/72 -f 343/1140/73 406/1146/81 405/1141/74 -f 371/1143/76 372/1464/222 413/1144/77 -f 371/1143/76 412/1145/78 411/293/74 -f 344/301/80 407/300/223 406/1146/81 -f 427/327/34 426/329/10 323/308/10 -f 437/346/39 450/359/39 451/358/10 -f 438/348/38 452/360/38 450/359/39 -f 441/339/35 455/352/35 454/354/63 -f 439/350/62 453/362/62 452/360/38 -f 442/343/34 456/356/34 455/352/35 -f 436/345/10 451/358/10 456/356/34 -f 428/325/27 427/327/34 342/338/82 -f 427/327/34 334/306/34 342/338/82 -f 519/434/83 517/886/83 516/885/84 -f 518/435/84 516/885/84 522/1147/85 -f 515/1149/10 513/1465/10 523/1150/86 -f 521/1151/86 523/1150/86 517/886/83 -f 520/1148/85 522/1147/85 512/1152/4 -f 524/883/87 526/1155/88 527/1154/88 -f 526/1155/88 507/1466/89 506/1156/89 -f 551/1157/57 550/1169/99 558/1158/90 -f 125/1160/92 126/1027/51 548/1161/58 -f 125/1160/92 549/1162/93 544/1163/94 -f 132/1020/56 546/1173/97 547/1164/95 -f 128/1023/59 544/1163/94 545/1165/96 -f 127/1019/55 545/1175/96 546/1167/97 -f 129/1168/98 130/1016/53 550/1169/99 -f 131/1026/61 547/1164/95 550/1169/99 -f 555/1170/100 561/1186/111 562/1171/101 -f 546/1173/97 554/1467/104 555/1174/103 -f 545/1175/96 553/1231/108 554/1176/104 -f 549/1162/93 557/1179/107 552/1177/105 -f 549/1162/93 548/1161/58 556/1178/106 -f 544/1163/94 552/1177/105 553/1180/108 -f 547/1164/95 555/1174/103 558/1158/90 -f 548/1022/58 551/1021/57 559/1181/91 -f 558/1172/102 562/1171/101 563/1183/109 -f 555/1170/100 554/1468/104 560/1185/110 -f 561/1186/111 565/1190/115 566/1187/112 -f 562/1171/101 566/1187/112 567/1188/113 -f 561/1186/111 560/1185/110 564/1189/114 -f 565/1190/115 569/1193/118 570/1191/116 -f 566/1187/112 570/1191/116 571/1192/117 -f 564/1189/114 568/1238/147 569/1193/118 -f 557/1179/107 575/1196/121 572/1194/119 -f 557/1179/107 556/1178/106 574/1195/120 -f 552/1177/105 572/1194/119 573/1197/122 -f 575/1198/123 579/1202/126 576/1199/124 -f 574/1201/120 578/1469/146 579/1202/126 -f 573/1203/122 572/1200/125 576/1199/124 -f 579/1202/126 583/1207/130 580/1205/128 -f 579/1202/126 578/1469/146 582/1206/129 -f 576/1199/124 580/1205/128 581/1208/131 -f 583/1207/130 587/1211/134 584/1209/132 -f 583/1207/130 582/1206/129 586/1210/133 -f 580/1205/128 584/1209/132 585/1212/135 -f 587/1211/134 591/1214/137 588/1213/136 -f 586/1210/133 590/1470/224 591/1214/137 -f 584/1209/132 588/1213/136 589/1215/138 -f 591/1216/137 595/1220/141 592/1217/139 -f 591/1216/137 590/1471/224 594/1219/140 -f 588/1218/136 592/1217/139 593/1221/142 -f 595/1220/141 599/1225/144 596/1223/143 -f 594/1224/140 598/1472/148 599/1225/144 -f 592/1217/139 596/1223/143 597/1226/145 -f 563/1228/109 567/1245/113 578/1229/146 -f 573/1230/122 577/1239/127 554/1176/104 -f 597/1232/145 596/1223/143 569/1233/118 -f 570/1235/116 599/1225/144 598/1236/148 -f 596/1223/143 599/1225/144 570/1235/116 -f 577/1239/127 564/1189/114 560/1240/110 -f 589/1215/138 593/1227/142 585/1212/135 -f 593/1227/142 564/1189/114 581/1241/131 -f 564/1189/114 577/1239/127 581/1241/131 -f 582/1246/129 578/1229/146 567/1245/113 -f 567/1245/113 594/1242/140 582/1246/129 -f 594/1242/140 590/1473/224 586/1247/133 -f 574/1248/120 556/1182/106 559/1181/91 -f 645/539/28 662/552/28 663/543/149 -f 653/1249/5 668/1253/5 667/1250/7 -f 646/538/149 663/543/149 674/908/3 -f 654/1252/27 669/1257/27 668/1253/5 -f 660/1254/5 675/542/5 664/541/150 -f 655/1256/10 670/1259/10 669/1257/27 -f 656/1258/28 671/1261/28 670/1259/10 -f 657/1260/3 672/1264/3 671/1261/28 -f 649/1255/150 664/541/150 665/549/27 -f 658/1263/6 673/1267/6 672/1264/3 -f 650/1262/27 665/549/27 661/548/10 -f 644/528/10 661/550/10 662/552/28 -f 651/1266/4 666/1474/4 673/1267/6 -f 652/1251/7 667/1250/7 666/1268/4 -f 689/1270/9 695/1274/9 696/1271/1 -f 690/1273/4 694/1475/4 695/1274/9 -f 685/1275/10 697/1285/10 698/1276/29 -f 686/1277/29 698/1276/29 692/1278/2 -f 691/1280/8 693/1283/8 694/1281/4 -f 687/1279/2 692/1278/2 693/1283/8 -f 684/1284/151 699/1286/151 697/1285/10 -f 688/1272/1 696/1271/1 699/1286/151 -f 711/1287/1 703/1303/1 700/1288/151 -f 715/1289/151 700/1288/151 702/1290/10 -f 712/1292/2 707/1298/2 706/1293/8 -f 708/1294/8 706/1293/8 705/1295/4 -f 713/1297/29 701/1299/29 707/1298/2 -f 714/1291/10 702/1290/10 701/1299/29 -f 709/1300/4 705/1476/4 704/1301/9 -f 710/1302/9 704/1301/9 703/1303/1 -f 731/1304/22 743/1317/156 742/1305/152 -f 728/1307/37 740/1319/157 739/1308/153 -f 735/1310/34 747/1320/158 746/1311/154 -f 725/1313/39 737/1322/159 736/1314/155 -f 732/1316/36 744/1324/160 743/1317/156 -f 729/1318/21 741/1326/161 740/1319/157 -f 724/1315/10 736/1314/155 747/1320/158 -f 726/1321/38 738/1327/162 737/1322/159 -f 733/1323/5 745/1328/163 744/1324/160 -f 730/1325/4 742/1337/152 741/1326/161 -f 727/1309/3 739/1308/153 738/1327/162 -f 734/1312/35 746/1311/154 745/1328/163 -f 740/1319/157 741/1326/161 753/1329/164 -f 747/1320/158 736/1314/155 748/1331/166 -f 737/1322/159 738/1327/162 750/1333/168 -f 744/1324/160 745/1328/163 757/1335/170 -f 742/1337/152 754/1349/174 753/1329/164 -f 738/1327/162 739/1308/153 751/1338/172 -f 746/1311/154 758/1341/175 757/1335/170 -f 742/1305/152 743/1317/156 755/1339/173 -f 740/1319/157 752/1330/165 751/1338/172 -f 747/1320/158 759/1332/167 758/1341/175 -f 737/1322/159 749/1334/169 748/1331/166 -f 744/1324/160 756/1336/171 755/1339/173 -f 752/1330/165 753/1329/164 765/1342/176 -f 759/1332/167 748/1331/166 760/1344/178 -f 749/1334/169 750/1333/168 762/1346/180 -f 757/1335/170 769/1351/184 768/1348/182 -f 754/1349/174 766/1477/186 765/1342/176 -f 751/1338/172 763/1354/187 762/1346/180 -f 757/1335/170 758/1341/175 770/1350/183 -f 754/1340/174 755/1339/173 767/1352/185 -f 751/1338/172 752/1330/165 764/1343/177 -f 759/1332/167 771/1345/179 770/1350/183 -f 749/1334/169 761/1347/181 760/1344/178 -f 756/1336/171 768/1348/182 767/1352/185 -f 760/1357/178 761/1478/181 764/1479/177 -f 761/1478/181 762/1480/180 764/1479/177 -f 762/1480/180 763/1481/187 764/1479/177 -f 764/1479/177 765/1482/176 766/1355/186 -f 766/1355/186 767/1483/185 768/1356/182 -f 768/1356/182 769/1484/184 770/1485/183 -f 770/1485/183 771/1486/179 768/1356/182 -f 771/1486/179 760/1357/178 768/1356/182 -f 764/1479/177 766/1355/186 760/1357/178 -f 791/618/188 790/616/188 788/615/2 -f 793/625/189 792/621/189 790/616/188 -f 795/624/190 794/622/190 792/621/189 -f 797/631/191 796/629/191 794/622/190 -f 799/633/23 798/630/23 796/629/191 -f 801/617/1 800/1487/1 802/1358/192 -f 805/623/193 804/1488/193 806/1359/194 -f 806/1360/194 808/1489/195 809/635/195 -f 809/635/195 808/1489/195 810/1361/18 -f 804/1362/193 805/627/193 803/956/192 -f 818/1364/196 819/1371/196 815/1365/23 -f 813/637/24 817/1368/197 816/1366/197 -f 817/1368/197 821/1375/188 820/1369/188 -f 822/1370/198 823/1490/198 819/1371/196 -f 825/1372/199 823/1490/198 822/1370/198 -f 825/1374/199 824/1491/199 820/1369/188 -f 826/652/10 830/1377/193 831/1376/193 -f 830/1377/193 832/1415/1 833/1378/1 -f 843/1379/48 877/1492/46 875/1380/200 -f 834/1382/202 836/1385/205 837/1383/203 -f 836/1385/205 838/1389/206 839/1381/201 -f 829/1386/28 847/1392/28 859/1387/45 -f 838/1389/206 842/1407/40 843/1379/48 -f 847/1392/32 829/1386/32 850/1390/207 -f 829/1386/32 845/1493/225 850/1390/207 -f 851/1395/208 844/1398/209 828/1404/31 -f 828/1404/31 846/1393/31 851/1395/208 -f 850/1390/207 845/1493/225 827/1396/5 -f 844/1398/209 851/1395/208 841/1399/3 -f 834/1382/202 854/1494/214 872/1401/210 -f 837/1383/203 839/1381/201 875/1380/200 -f 858/1403/44 861/1405/44 846/1393/27 -f 856/1388/45 859/1387/45 861/1405/44 -f 838/1389/206 874/1408/212 876/1406/41 -f 836/1385/205 872/1401/210 874/1408/212 -f 835/1384/204 837/1383/203 873/1402/211 -f 840/1397/5 827/1396/5 873/1418/211 -f 873/1418/211 875/1380/200 840/1397/5 -f 875/1380/200 877/1492/46 852/1410/5 -f 877/1492/46 879/1495/5 852/1410/5 -f 872/1412/210 826/1400/3 841/1399/3 -f 841/1399/3 853/1496/3 874/1411/212 -f 853/1496/3 878/1497/3 876/1498/41 -f 874/1411/212 853/1496/3 876/1498/41 -f 832/1415/1 854/1009/9 855/1011/9 -f 854/1416/214 832/1419/3 826/1400/3 -f 101/691/46 884/112/48 885/689/48 -f 887/967/40 886/695/40 113/103/41 -f 827/1396/5 833/1414/5 855/1417/213 -f 902/707/48 903/709/48 899/722/46 -f 898/724/46 899/722/46 895/716/5 -f 897/726/41 896/728/41 892/713/3 -f 901/710/40 900/706/40 896/728/41 -f 902/707/48 900/706/40 901/710/40 -f 6/8/35 8/1/5 7/988/5 -f 923/1421/215 922/1423/215 920/977/216 -f 914/1422/217 915/1499/217 922/1423/215 -f 936/981/218 937/760/219 939/980/219 -f 942/1424/220 936/981/218 938/979/218 -f 943/1426/221 933/1500/10 935/1427/10 -f 937/760/219 943/1426/221 941/1428/221 -f 932/1429/4 942/1424/220 940/1425/220 +f 188/301/91 189/1118/115 187/1119/91 +f 190/294/115 191/1120/116 189/1118/115 +f 194/289/86 195/1121/117 193/1122/86 +f 196/291/117 197/1123/103 195/1121/117 +f 198/320/103 199/1124/85 197/1123/103 +f 200/313/85 201/1125/102 199/1126/85 +f 202/315/102 203/1127/118 201/1125/102 +f 204/310/118 205/1128/84 203/1127/118 +f 206/307/84 207/1129/119 205/1128/84 +f 208/304/119 209/1130/120 207/1129/119 +f 210/299/120 187/1119/91 209/1130/120 +f 215/308/116 226/1131/86 214/309/86 +f 222/960/102 233/1132/118 221/295/118 +f 212/961/103 224/1133/85 211/300/85 +f 219/963/119 230/1134/120 218/319/120 +f 216/311/115 227/1135/116 215/312/116 +f 211/297/85 234/1136/102 222/298/102 +f 213/302/117 223/1137/103 212/303/103 +f 220/959/84 231/1138/119 219/290/119 +f 217/962/91 228/1139/115 216/314/115 +f 214/305/86 225/1140/117 213/306/117 +f 221/292/118 232/1141/84 220/293/84 +f 218/317/120 229/1142/91 217/318/91 +f 235/977/121 246/324/122 244/340/122 +f 245/366/123 244/340/122 246/324/122 +f 245/366/123 249/979/124 243/361/123 +f 251/351/125 249/979/108 253/352/108 +f 254/349/109 248/368/126 252/357/126 +f 258/328/127 255/334/128 257/348/128 +f 252/357/126 247/353/125 251/351/125 +f 238/330/129 235/345/121 237/336/129 +f 258/328/127 237/336/129 256/338/127 +f 874/1143/90 855/1144/90 875/1145/90 +f 287/907/127 290/342/128 288/372/128 +f 291/399/130 290/342/128 295/981/130 +f 291/399/109 297/385/126 293/378/126 +f 293/378/126 298/379/125 294/375/125 +f 294/375/125 296/980/108 292/384/108 +f 300/396/123 296/980/124 302/393/123 +f 300/396/123 301/387/122 299/391/122 +f 904/400/129 907/903/121 905/905/129 +f 308/1146/131 312/1147/132 303/1148/133 +f 310/1149/125 316/1150/134 307/1151/126 +f 309/1152/135 313/1153/136 318/1154/137 +f 312/1147/132 651/1155/138 648/1156/139 +f 314/1157/140 306/1158/141 305/1159/129 +f 310/1149/125 318/1154/137 317/1160/142 +f 312/1161/132 304/1162/121 303/1163/133 +f 316/1150/134 308/1164/131 307/1151/126 +f 304/1162/121 314/1157/140 305/1159/129 +f 254/349/130 255/334/128 250/975/130 +f 330/407/102 343/1165/85 319/406/85 +f 320/412/103 345/1166/117 321/411/117 +f 327/431/119 352/1167/84 328/987/84 +f 324/422/115 349/1168/91 325/985/91 +f 321/415/117 346/1169/86 322/413/86 +f 328/434/84 353/1170/118 329/433/118 +f 325/427/91 350/1171/120 326/425/120 +f 322/418/86 347/1172/116 323/416/116 +f 329/403/118 354/1173/102 330/983/102 +f 319/408/85 344/1174/103 320/984/103 +f 326/428/120 351/1175/119 327/986/119 +f 323/421/116 348/1176/115 324/419/115 +f 337/430/103 360/1177/85 336/426/85 +f 334/420/118 357/1178/84 333/417/84 +f 341/404/115 364/1179/116 340/405/116 +f 331/409/120 366/1180/91 342/410/91 +f 338/429/117 361/1181/103 337/430/103 +f 335/424/102 358/1182/118 334/420/118 +f 342/410/91 365/1183/115 341/404/115 +f 332/414/119 355/1184/120 331/409/120 +f 339/432/86 362/1185/117 338/429/117 +f 336/423/85 359/1186/102 335/424/102 +f 333/417/84 356/1187/119 332/414/119 +f 340/405/116 363/1188/86 339/432/86 +f 405/1189/119 418/1190/143 406/1191/143 +f 413/1192/116 419/1193/144 420/1194/116 +f 414/1195/115 420/1194/116 421/1196/115 +f 403/1197/91 415/1198/120 404/1199/120 +f 414/1195/115 416/1200/91 403/1197/91 +f 404/1199/120 417/1201/119 405/1189/119 +f 426/1202/120 432/1203/91 425/1204/91 +f 424/1205/115 430/1206/116 423/1207/116 +f 427/1208/119 433/1209/120 426/1202/120 +f 425/1204/91 431/1210/115 424/1205/115 +f 423/1207/116 429/1211/144 422/1212/144 +f 428/1213/143 434/1214/119 427/1208/119 +f 458/489/85 440/505/103 439/502/85 +f 459/487/103 441/507/117 440/505/103 +f 460/484/117 442/509/145 441/507/117 +f 455/1012/146 437/497/118 436/499/146 +f 456/495/118 438/500/102 437/497/118 +f 457/493/102 439/502/85 438/500/102 +f 461/486/145 469/510/147 442/509/145 +f 488/1215/85 448/595/102 489/1216/102 +f 491/1217/148 445/589/119 492/613/149 +f 463/1218/150 453/581/116 452/583/86 +f 487/1219/103 449/600/85 488/1220/85 +f 490/1221/151 446/591/84 491/1217/148 +f 464/1222/152 450/601/103 487/1219/103 +f 489/1216/102 447/593/118 490/1221/151 +f 492/613/149 445/589/119 444/588/120 +f 546/608/91 444/588/120 443/587/91 +f 464/1222/152 452/583/86 451/603/117 +f 455/1012/146 471/517/153 472/519/153 +f 463/1223/154 525/1224/155 462/1225/156 +f 491/1226/157 533/1227/158 532/1228/159 +f 491/1226/157 531/572/155 490/1025/160 +f 464/580/161 526/1229/162 463/1223/154 +f 547/606/115 443/587/91 454/585/115 +f 557/625/120 571/637/91 556/624/91 +f 558/627/119 570/638/120 557/625/120 +f 561/618/116 574/633/144 560/1032/144 +f 559/629/143 572/639/119 558/627/119 +f 562/622/115 575/631/116 561/618/116 +f 556/624/91 576/635/115 562/622/115 +f 454/585/115 453/581/116 462/617/163 +f 624/1047/164 627/1230/165 625/699/164 +f 626/1231/165 618/1232/166 627/1230/165 +f 651/1233/138 658/1234/167 659/1235/168 +f 311/1236/169 648/1237/139 649/1238/170 +f 311/1236/169 644/1239/171 314/1157/140 +f 318/1154/137 647/1240/172 317/1160/142 +f 314/1157/140 645/1241/173 313/1242/136 +f 313/1153/136 646/1243/174 318/1154/137 +f 315/1244/175 650/1245/176 651/1233/138 +f 317/1160/142 650/1245/176 316/1150/134 +f 655/1246/177 662/1247/178 658/1248/179 +f 646/1249/174 655/1250/180 647/1240/172 +f 645/1251/173 654/1252/181 646/1243/174 +f 649/1238/170 652/1253/182 644/1239/171 +f 649/1238/170 656/1254/183 657/1255/184 +f 644/1239/171 653/1256/185 645/1241/173 +f 647/1240/172 658/1234/167 650/1245/176 +f 648/1156/139 659/1257/168 656/1258/183 +f 658/1248/179 663/1259/186 659/1260/168 +f 655/1246/177 660/1261/187 661/1262/188 +f 661/1262/188 666/1263/189 662/1247/178 +f 662/1247/178 667/1264/190 663/1259/186 +f 661/1262/188 664/1265/191 665/1266/192 +f 665/1266/192 670/1267/193 666/1263/189 +f 666/1263/189 671/1268/194 667/1264/190 +f 664/1265/191 669/1269/195 665/1266/192 +f 657/1255/184 672/1270/196 652/1253/182 +f 657/1255/184 674/1271/197 675/1272/198 +f 652/1253/182 673/1273/199 653/1256/185 +f 675/1274/200 676/1275/201 672/1276/202 +f 674/1277/197 679/1278/203 675/1274/200 +f 673/1279/199 676/1275/201 677/1280/204 +f 679/1278/203 680/1281/205 676/1275/201 +f 679/1278/203 682/1282/206 683/1283/207 +f 676/1275/201 681/1284/208 677/1280/204 +f 683/1283/207 684/1285/209 680/1281/205 +f 683/1283/207 686/1286/210 687/1287/211 +f 680/1281/205 685/1288/212 681/1284/208 +f 687/1287/211 688/1289/213 684/1285/209 +f 686/1286/210 691/1290/214 687/1287/211 +f 684/1285/209 689/1291/215 685/1288/212 +f 691/1292/214 692/1293/216 688/1294/213 +f 691/1292/214 694/1295/217 695/1296/218 +f 688/1294/213 693/1297/219 689/1298/215 +f 695/1296/218 696/1299/220 692/1293/216 +f 694/1300/217 699/1301/221 695/1296/218 +f 692/1293/216 697/1302/222 693/1303/219 +f 663/1304/186 678/1305/223 659/1257/168 +f 673/1306/199 654/1252/181 653/1307/185 +f 697/1308/222 669/1309/195 668/1310/224 +f 670/1311/193 698/1312/225 671/1313/194 +f 696/1299/220 670/1311/193 669/1309/195 +f 664/1265/191 693/1303/219 668/1314/224 +f 677/1315/204 660/1316/187 654/1252/181 +f 681/1317/208 685/1288/212 693/1303/219 +f 668/1314/224 693/1303/219 697/1302/222 +f 694/1318/217 671/1319/194 698/1320/225 +f 694/1318/217 667/1321/190 671/1319/194 +f 682/1322/206 694/1318/217 686/1323/210 +f 674/1324/197 659/1257/168 678/1305/223 +f 729/780/109 747/784/226 730/779/226 +f 737/1325/86 751/1326/88 736/1327/88 +f 730/779/226 758/1064/84 743/777/84 +f 738/1328/108 752/1329/86 737/1325/86 +f 744/1330/86 748/782/227 733/1331/227 +f 739/1332/91 753/1333/108 738/1328/108 +f 740/1334/109 754/1335/91 739/1332/91 +f 741/1336/84 755/1337/109 740/1334/109 +f 733/1331/227 749/790/108 734/1338/108 +f 742/1339/87 756/1340/84 741/1336/84 +f 734/1338/108 745/789/91 728/1341/91 +f 728/769/91 746/793/109 729/780/109 +f 735/1342/85 757/1343/87 742/1339/87 +f 736/1327/88 750/1344/85 735/1345/85 +f 773/1346/90 780/1347/82 772/1348/82 +f 774/1349/85 779/1350/90 773/1346/90 +f 769/1351/91 782/1352/110 770/1353/110 +f 770/1353/110 776/1354/83 771/1355/83 +f 775/1356/89 778/1357/85 774/1358/85 +f 771/1355/83 777/1359/89 775/1356/89 +f 768/1360/228 781/1361/91 769/1351/91 +f 772/1348/82 783/1362/228 768/1360/228 +f 795/1363/82 784/1364/228 799/1365/228 +f 799/1365/228 786/1366/91 798/1367/91 +f 796/1368/83 790/1369/89 792/1370/89 +f 792/1370/89 789/1371/85 793/1372/85 +f 797/1373/110 791/1374/83 796/1368/83 +f 798/1367/91 785/1375/110 797/1373/110 +f 793/1376/85 788/1377/90 794/1378/90 +f 794/1378/90 787/1379/82 795/1363/82 +f 811/834/229 808/831/83 809/835/83 +f 813/841/230 810/832/229 811/834/229 +f 815/840/231 812/837/230 813/841/230 +f 817/847/232 814/838/231 815/840/231 +f 819/849/104 816/845/232 817/847/232 +f 821/833/82 822/1380/233 823/1091/233 +f 825/839/234 826/1381/235 827/1093/235 +f 826/1382/235 829/851/236 827/1097/235 +f 829/851/236 830/1383/99 831/848/99 +f 824/1384/234 823/1095/233 822/1385/233 +f 838/1386/237 835/1387/104 834/856/104 +f 833/853/105 836/1388/238 832/1389/105 +f 837/1390/238 840/1391/229 836/1388/238 +f 842/1392/239 839/1393/237 838/1386/237 +f 845/1394/240 842/1392/239 844/1395/240 +f 845/1396/240 840/1391/229 841/1397/229 +f 846/868/91 851/1398/234 847/866/91 +f 850/1399/234 853/1400/82 851/1398/234 +f 863/1401/129 895/1402/241 859/1403/242 +f 854/1404/243 857/1405/244 855/1406/245 +f 856/1407/246 859/1403/242 857/1405/244 +f 849/1408/109 879/1409/126 876/1410/126 +f 858/1411/247 863/1401/129 859/1403/242 +f 870/1412/248 869/1413/113 867/1414/113 +f 866/1415/112 868/1416/112 871/1417/249 +f 870/1412/248 847/1418/86 860/1419/86 +f 864/1420/250 861/1421/84 846/1422/84 +f 854/1404/243 892/1423/251 856/1407/246 +f 857/1405/244 895/1402/241 893/1424/252 +f 878/1425/125 866/1415/108 848/1426/108 +f 876/1410/126 881/1427/125 878/1425/125 +f 858/1411/247 896/1428/122 862/1429/121 +f 856/1407/246 894/1430/253 858/1411/247 +f 855/1406/245 893/1424/252 875/1431/254 +f 872/1432/86 860/1419/86 895/1402/241 +f 894/1433/253 892/1434/251 861/1421/84 +f 851/1435/86 853/1436/86 847/1418/86 +f 852/1437/82 875/1145/90 853/1400/82 +f 874/1438/255 846/1422/84 892/1434/251 +f 287/907/127 905/905/129 289/910/127 +f 907/1106/121 299/391/122 301/387/122 +f 847/1418/86 875/1439/254 893/1440/252 +f 846/1422/84 852/1441/84 850/1442/84 +f 922/923/129 919/938/127 918/940/127 +f 918/940/127 915/932/86 914/918/86 +f 917/942/122 912/929/84 913/915/84 +f 921/926/121 916/944/122 917/942/122 +f 922/923/129 921/926/121 923/925/129 +f 192/296/116 193/1122/86 191/1120/116 +f 943/1443/256 940/1116/257 941/954/257 +f 934/1444/258 942/1445/256 943/1443/256 +f 188/301/91 190/294/115 189/1118/115 +f 190/294/115 192/296/116 191/1120/116 +f 194/289/86 196/291/117 195/1121/117 +f 196/291/117 198/320/103 197/1123/103 +f 198/320/103 200/316/85 199/1124/85 +f 200/313/85 202/315/102 201/1125/102 +f 202/315/102 204/310/118 203/1127/118 +f 204/310/118 206/307/84 205/1128/84 +f 206/307/84 208/304/119 207/1129/119 +f 208/304/119 210/299/120 209/1130/120 +f 210/299/120 188/301/91 187/1119/91 +f 215/308/116 227/1446/116 226/1131/86 +f 222/960/102 234/1447/102 233/1132/118 +f 212/961/103 223/1448/103 224/1133/85 +f 219/963/119 231/1449/119 230/1134/120 +f 216/311/115 228/1450/115 227/1135/116 +f 211/297/85 224/1451/85 234/1136/102 +f 213/302/117 225/1452/117 223/1137/103 +f 220/959/84 232/1453/84 231/1138/119 +f 217/962/91 229/1454/91 228/1139/115 +f 214/305/86 226/1455/86 225/1140/117 +f 221/292/118 233/1456/118 232/1141/84 +f 218/317/120 230/1457/120 229/1142/91 +f 235/977/121 236/973/121 246/324/122 +f 245/366/123 243/361/123 244/340/122 +f 245/366/123 253/352/124 249/979/124 +f 251/351/125 247/353/125 249/979/108 +f 254/349/109 250/975/109 248/368/126 +f 258/328/127 256/338/127 255/334/128 +f 252/357/126 248/368/126 247/353/125 +f 238/330/129 236/332/121 235/345/121 +f 258/328/127 238/330/129 237/336/129 +f 874/1143/90 854/1458/90 855/1144/90 +f 287/907/127 289/910/127 290/342/128 +f 291/399/130 288/372/128 290/342/128 +f 291/399/109 295/981/109 297/385/126 +f 293/378/126 297/385/126 298/379/125 +f 294/375/125 298/379/125 296/980/108 +f 300/396/123 292/384/124 296/980/124 +f 300/396/123 302/393/123 301/387/122 +f 904/400/129 906/402/121 907/903/121 +f 308/1146/131 315/1459/175 312/1147/132 +f 310/1149/125 317/1160/142 316/1150/134 +f 309/1152/135 306/1460/141 313/1153/136 +f 312/1147/132 315/1459/175 651/1155/138 +f 314/1157/140 313/1242/136 306/1158/141 +f 310/1149/125 309/1152/135 318/1154/137 +f 312/1161/132 311/1236/169 304/1162/121 +f 316/1150/134 315/1244/175 308/1164/131 +f 304/1162/121 311/1236/169 314/1157/140 +f 254/349/130 257/348/128 255/334/128 +f 330/407/102 354/1461/102 343/1165/85 +f 320/412/103 344/1462/103 345/1166/117 +f 327/431/119 351/1463/119 352/1167/84 +f 324/422/115 348/1464/115 349/1168/91 +f 321/415/117 345/1465/117 346/1169/86 +f 328/434/84 352/1466/84 353/1170/118 +f 325/427/91 349/1467/91 350/1171/120 +f 322/418/86 346/1468/86 347/1172/116 +f 329/403/118 353/1469/118 354/1173/102 +f 319/408/85 343/1470/85 344/1174/103 +f 326/428/120 350/1471/120 351/1175/119 +f 323/421/116 347/1472/116 348/1176/115 +f 337/430/103 361/1181/103 360/1177/85 +f 334/420/118 358/1182/118 357/1178/84 +f 341/404/115 365/1183/115 364/1179/116 +f 331/409/120 355/1184/120 366/1180/91 +f 338/429/117 362/1185/117 361/1181/103 +f 335/424/102 359/1186/102 358/1182/118 +f 342/410/91 366/1180/91 365/1183/115 +f 332/414/119 356/1187/119 355/1184/120 +f 339/432/86 363/1188/86 362/1185/117 +f 336/423/85 360/1473/85 359/1186/102 +f 333/417/84 357/1178/84 356/1187/119 +f 340/405/116 364/1179/116 363/1188/86 +f 405/1189/119 417/1201/119 418/1190/143 +f 413/1192/116 412/1474/144 419/1193/144 +f 414/1195/115 413/1192/116 420/1194/116 +f 403/1197/91 416/1200/91 415/1198/120 +f 414/1195/115 421/1196/115 416/1200/91 +f 404/1199/120 415/1198/120 417/1201/119 +f 426/1202/120 433/1209/120 432/1203/91 +f 424/1205/115 431/1210/115 430/1206/116 +f 427/1208/119 434/1214/119 433/1209/120 +f 425/1204/91 432/1203/91 431/1210/115 +f 423/1207/116 430/1206/116 429/1211/144 +f 428/1213/143 435/1475/143 434/1214/119 +f 458/489/85 459/487/103 440/505/103 +f 459/487/103 460/484/117 441/507/117 +f 460/484/117 461/486/145 442/509/145 +f 455/1012/146 456/495/118 437/497/118 +f 456/495/118 457/493/102 438/500/102 +f 457/493/102 458/489/85 439/502/85 +f 461/486/145 470/515/147 469/510/147 +f 488/1215/85 449/597/85 448/595/102 +f 491/1217/148 446/591/84 445/589/119 +f 463/1218/150 462/617/163 453/581/116 +f 487/1219/103 450/601/103 449/600/85 +f 490/1221/151 447/593/118 446/591/84 +f 464/1222/152 451/603/117 450/601/103 +f 489/1216/102 448/595/102 447/593/118 +f 444/588/120 550/609/120 492/613/149 +f 550/609/120 549/611/109 492/613/149 +f 546/608/91 550/609/120 444/588/120 +f 464/1222/152 463/1218/150 452/583/86 +f 455/1012/146 436/499/146 471/517/153 +f 463/1223/154 526/1229/162 525/1224/155 +f 491/1226/157 492/1476/259 533/1227/158 +f 491/1226/157 532/1228/159 531/572/155 +f 464/580/161 527/579/260 526/1229/162 +f 547/606/115 546/608/91 443/587/91 +f 557/625/120 570/638/120 571/637/91 +f 558/627/119 572/639/119 570/638/120 +f 561/618/116 575/631/116 574/633/144 +f 559/629/143 573/641/143 572/639/119 +f 562/622/115 576/635/115 575/631/116 +f 556/624/91 571/637/91 576/635/115 +f 548/604/108 547/606/115 462/617/163 +f 547/606/115 454/585/115 462/617/163 +f 624/1047/164 626/1231/165 627/1230/165 +f 626/1231/165 619/1477/166 618/1232/166 +f 651/1233/138 650/1245/176 658/1234/167 +f 311/1236/169 312/1161/132 648/1237/139 +f 311/1236/169 649/1238/170 644/1239/171 +f 318/1154/137 646/1249/174 647/1240/172 +f 314/1157/140 644/1239/171 645/1241/173 +f 313/1153/136 645/1251/173 646/1243/174 +f 315/1244/175 316/1150/134 650/1245/176 +f 317/1160/142 647/1240/172 650/1245/176 +f 655/1246/177 661/1262/188 662/1247/178 +f 646/1249/174 654/1478/181 655/1250/180 +f 645/1251/173 653/1307/185 654/1252/181 +f 649/1238/170 657/1255/184 652/1253/182 +f 649/1238/170 648/1237/139 656/1254/183 +f 644/1239/171 652/1253/182 653/1256/185 +f 647/1240/172 655/1250/180 658/1234/167 +f 648/1156/139 651/1155/138 659/1257/168 +f 658/1248/179 662/1247/178 663/1259/186 +f 655/1246/177 654/1479/181 660/1261/187 +f 661/1262/188 665/1266/192 666/1263/189 +f 662/1247/178 666/1263/189 667/1264/190 +f 661/1262/188 660/1261/187 664/1265/191 +f 665/1266/192 669/1269/195 670/1267/193 +f 666/1263/189 670/1267/193 671/1268/194 +f 664/1265/191 668/1314/224 669/1269/195 +f 657/1255/184 675/1272/198 672/1270/196 +f 657/1255/184 656/1254/183 674/1271/197 +f 652/1253/182 672/1270/196 673/1273/199 +f 675/1274/200 679/1278/203 676/1275/201 +f 674/1277/197 678/1480/223 679/1278/203 +f 673/1279/199 672/1276/202 676/1275/201 +f 679/1278/203 683/1283/207 680/1281/205 +f 679/1278/203 678/1480/223 682/1282/206 +f 676/1275/201 680/1281/205 681/1284/208 +f 683/1283/207 687/1287/211 684/1285/209 +f 683/1283/207 682/1282/206 686/1286/210 +f 680/1281/205 684/1285/209 685/1288/212 +f 687/1287/211 691/1290/214 688/1289/213 +f 686/1286/210 690/1481/261 691/1290/214 +f 684/1285/209 688/1289/213 689/1291/215 +f 691/1292/214 695/1296/218 692/1293/216 +f 691/1292/214 690/1482/261 694/1295/217 +f 688/1294/213 692/1293/216 693/1297/219 +f 695/1296/218 699/1301/221 696/1299/220 +f 694/1300/217 698/1483/225 699/1301/221 +f 692/1293/216 696/1299/220 697/1302/222 +f 663/1304/186 667/1321/190 678/1305/223 +f 673/1306/199 677/1315/204 654/1252/181 +f 697/1308/222 696/1299/220 669/1309/195 +f 670/1311/193 699/1301/221 698/1312/225 +f 696/1299/220 699/1301/221 670/1311/193 +f 677/1315/204 664/1265/191 660/1316/187 +f 689/1291/215 693/1303/219 685/1288/212 +f 693/1303/219 664/1265/191 681/1317/208 +f 664/1265/191 677/1315/204 681/1317/208 +f 682/1322/206 678/1305/223 667/1321/190 +f 667/1321/190 694/1318/217 682/1322/206 +f 694/1318/217 690/1484/261 686/1323/210 +f 674/1324/197 656/1258/183 659/1257/168 +f 729/780/109 746/793/109 747/784/226 +f 737/1325/86 752/1329/86 751/1326/88 +f 730/779/226 747/784/226 758/1064/84 +f 738/1328/108 753/1333/108 752/1329/86 +f 744/1330/86 759/783/86 748/782/227 +f 739/1332/91 754/1335/91 753/1333/108 +f 740/1334/109 755/1337/109 754/1335/91 +f 741/1336/84 756/1340/84 755/1337/109 +f 733/1331/227 748/782/227 749/790/108 +f 742/1339/87 757/1343/87 756/1340/84 +f 734/1338/108 749/790/108 745/789/91 +f 728/769/91 745/791/91 746/793/109 +f 735/1342/85 750/1485/85 757/1343/87 +f 736/1327/88 751/1326/88 750/1344/85 +f 773/1346/90 779/1350/90 780/1347/82 +f 774/1349/85 778/1486/85 779/1350/90 +f 769/1351/91 781/1361/91 782/1352/110 +f 770/1353/110 782/1352/110 776/1354/83 +f 775/1356/89 777/1359/89 778/1357/85 +f 771/1355/83 776/1354/83 777/1359/89 +f 768/1360/228 783/1362/228 781/1361/91 +f 772/1348/82 780/1347/82 783/1362/228 +f 795/1363/82 787/1379/82 784/1364/228 +f 799/1365/228 784/1364/228 786/1366/91 +f 796/1368/83 791/1374/83 790/1369/89 +f 792/1370/89 790/1369/89 789/1371/85 +f 797/1373/110 785/1375/110 791/1374/83 +f 798/1367/91 786/1366/91 785/1375/110 +f 793/1376/85 789/1487/85 788/1377/90 +f 794/1378/90 788/1377/90 787/1379/82 +f 811/834/229 810/832/229 808/831/83 +f 813/841/230 812/837/230 810/832/229 +f 815/840/231 814/838/231 812/837/230 +f 817/847/232 816/845/232 814/838/231 +f 819/849/104 818/846/104 816/845/232 +f 821/833/82 820/1488/82 822/1380/233 +f 825/839/234 824/1489/234 826/1381/235 +f 826/1382/235 828/1490/236 829/851/236 +f 829/851/236 828/1490/236 830/1383/99 +f 824/1384/234 825/843/234 823/1095/233 +f 838/1386/237 839/1393/237 835/1387/104 +f 833/853/105 837/1390/238 836/1388/238 +f 837/1390/238 841/1397/229 840/1391/229 +f 842/1392/239 843/1491/239 839/1393/237 +f 845/1394/240 843/1491/239 842/1392/239 +f 845/1396/240 844/1492/240 840/1391/229 +f 846/868/91 850/1399/234 851/1398/234 +f 850/1399/234 852/1437/82 853/1400/82 +f 863/1401/129 897/1493/127 895/1402/241 +f 854/1404/243 856/1407/246 857/1405/244 +f 856/1407/246 858/1411/247 859/1403/242 +f 849/1408/109 867/1414/109 879/1409/126 +f 858/1411/247 862/1429/121 863/1401/129 +f 867/1414/113 849/1408/113 870/1412/248 +f 849/1408/113 865/1494/262 870/1412/248 +f 871/1417/249 864/1420/250 848/1426/112 +f 848/1426/112 866/1415/112 871/1417/249 +f 870/1412/248 865/1494/262 847/1418/86 +f 864/1420/250 871/1417/249 861/1421/84 +f 854/1404/243 874/1495/255 892/1423/251 +f 857/1405/244 859/1403/242 895/1402/241 +f 878/1425/125 881/1427/125 866/1415/108 +f 876/1410/126 879/1409/126 881/1427/125 +f 858/1411/247 894/1430/253 896/1428/122 +f 856/1407/246 892/1423/251 894/1430/253 +f 855/1406/245 857/1405/244 893/1424/252 +f 860/1419/86 847/1418/86 893/1440/252 +f 893/1440/252 895/1402/241 860/1419/86 +f 895/1402/241 897/1493/127 872/1432/86 +f 897/1493/127 899/1496/86 872/1432/86 +f 892/1434/251 846/1422/84 861/1421/84 +f 861/1421/84 873/1497/84 894/1433/253 +f 873/1497/84 898/1498/84 896/1499/122 +f 894/1433/253 873/1497/84 896/1499/122 +f 852/1437/82 874/1143/90 875/1145/90 +f 874/1438/255 852/1441/84 846/1422/84 +f 287/907/127 904/400/129 905/905/129 +f 907/1106/121 906/911/121 299/391/122 +f 847/1418/86 853/1436/86 875/1439/254 +f 922/923/129 923/925/129 919/938/127 +f 918/940/127 919/938/127 915/932/86 +f 917/942/122 916/944/122 912/929/84 +f 921/926/121 920/922/121 916/944/122 +f 922/923/129 920/922/121 921/926/121 +f 192/296/116 194/289/86 193/1122/86 +f 943/1443/256 942/1445/256 940/1116/257 +f 934/1444/258 935/1500/258 942/1445/256 diff --git a/src/main/resources/assets/hbm/models/weapons/congolake.obj b/src/main/resources/assets/hbm/models/weapons/congolake.obj index 4a34fe6d0..77e57c3d1 100644 --- a/src/main/resources/assets/hbm/models/weapons/congolake.obj +++ b/src/main/resources/assets/hbm/models/weapons/congolake.obj @@ -486,6 +486,10 @@ v 0.213723 1.586004 0.965536 v -0.173216 1.890425 0.967058 v -0.217260 1.720861 0.967058 v -0.217260 1.599823 0.967058 +v -0.262079 1.644726 0.500033 +v -0.262079 1.095427 0.500033 +v -0.262079 1.095427 -0.049266 +v -0.262079 1.644726 -0.049266 vn 0.4257 0.9049 -0.0048 vn 0.9414 0.3371 -0.0136 vn 1.0000 -0.0021 -0.0092 @@ -1081,876 +1085,880 @@ vn -1.0000 0.0069 -0.0048 vn 0.9998 0.0169 0.0048 vn 1.0000 0.0064 0.0018 vn 1.0000 0.0059 -0.0044 -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.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.157783 0.800051 -vt 0.152072 0.860847 -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.258767 0.637676 -vt 0.254047 0.637653 -vt 0.251845 0.609578 -vt 0.251796 0.618515 -vt 0.251734 0.625465 -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 0.314366 0.974575 +vt 0.294812 0.983757 +vt 0.294657 0.974626 +vt 0.273456 0.983821 +vt 0.273229 0.974643 +vt 0.262381 0.983825 +vt 0.256051 0.974627 +vt 0.125608 0.833003 +vt 0.097336 0.818509 +vt 0.125610 0.817068 +vt 0.168440 0.797914 +vt 0.168440 0.810937 +vt 0.109231 0.810850 +vt 0.127314 0.975213 +vt 0.110436 0.984714 +vt 0.110100 0.975425 +vt 0.056961 0.985323 +vt 0.034809 0.976056 +vt 0.057052 0.975881 +vt 0.034870 0.985378 +vt 0.014902 0.976066 +vt 0.199446 0.818509 +vt 0.171174 0.833003 +vt 0.171172 0.817068 +vt 0.035307 0.871570 +vt 0.010838 0.731525 +vt 0.017874 0.745939 +vt 0.015372 0.753889 +vt 0.013899 0.704033 +vt 0.009136 0.701562 +vt 0.015271 0.913475 +vt 0.091632 0.975630 +vt 0.055268 0.870904 +vt 0.088357 0.868401 +vt 0.013764 0.426507 +vt 0.049854 0.416508 +vt 0.048730 0.438624 +vt 0.271875 0.869165 +vt 0.255984 0.912460 +vt 0.239398 0.867230 +vt 0.221112 0.974619 +vt 0.221070 0.866929 +vt 0.043269 0.488700 +vt 0.010790 0.459448 +vt 0.008714 0.489627 +vt 0.040214 0.363540 +vt 0.041285 0.381724 +vt 0.016409 0.381718 +vt 0.106773 0.867819 +vt 0.188797 0.866552 +vt 0.189454 0.906961 +vt 0.168859 0.866621 +vt 0.203932 0.974655 +vt 0.190529 0.973040 +vt 0.139611 0.907321 +vt 0.140686 0.973400 +vt 0.179637 0.973784 +vt 0.191879 0.982076 +vt 0.221110 0.983839 +vt 0.239478 0.983833 +vt 0.239470 0.974613 +vt 0.091859 0.984987 +vt 0.068629 0.985230 +vt 0.151599 0.973987 +vt 0.139629 0.982453 +vt 0.295488 0.911453 +vt 0.309465 0.867101 +vt 0.314455 0.910484 +vt 0.099265 0.705133 +vt 0.088674 0.685929 +vt 0.091711 0.679203 +vt 0.273373 0.912228 +vt 0.291054 0.869493 +vt 0.017282 0.678268 +vt 0.096715 0.734089 +vt 0.094272 0.707475 +vt 0.090072 0.746670 +vt 0.092216 0.753889 +vt 0.019880 0.685690 +vt 0.093170 0.731081 +vt 0.048521 0.438176 +vt 0.099086 0.434250 +vt 0.101118 0.416781 +vt 0.100614 0.417134 +vt 0.096976 0.454191 +vt 0.045608 0.464377 +vt 0.014112 0.425933 +vt 0.044187 0.506979 +vt 0.009380 0.512438 +vt 0.010839 0.490063 +vt 0.047070 0.507273 +vt 0.012396 0.512817 +vt 0.011742 0.459951 +vt 0.045438 0.489041 +vt 0.050505 0.416012 +vt 0.015811 0.406181 +vt 0.046833 0.464770 +vt 0.129115 0.442360 +vt 0.092797 0.383213 +vt 0.123836 0.367927 +vt 0.125752 0.384299 +vt 0.099258 0.434566 +vt 0.129673 0.442572 +vt 0.097922 0.454465 +vt 0.098488 0.471892 +vt 0.102467 0.399479 +vt 0.100128 0.472119 +vt 0.086379 0.367151 +vt 0.161380 0.436557 +vt 0.130349 0.413686 +vt 0.161569 0.406968 +vt 0.161572 0.462620 +vt 0.129818 0.462254 +vt 0.101290 0.399869 +vt 0.131373 0.382847 +vt 0.130916 0.413409 +vt 0.133141 0.382502 +vt 0.128491 0.462088 +vt 0.134570 0.358305 +vt 0.163321 0.382995 +vt 0.324006 0.378811 +vt 0.325470 0.339869 +vt 0.159015 0.480806 +vt 0.319147 0.479969 +vt 0.160154 0.462543 +vt 0.162323 0.406763 +vt 0.321290 0.436577 +vt 0.153411 0.381937 +vt 0.160980 0.436419 +vt 0.161642 0.383255 +vt 0.136981 0.571642 +vt 0.167260 0.581677 +vt 0.136981 0.582193 +vt 0.088568 0.571730 +vt 0.068186 0.582193 +vt 0.068186 0.571642 +vt 0.189977 0.581195 +vt 0.167260 0.571127 +vt 0.189978 0.570644 +vt 0.321611 0.479559 +vt 0.161143 0.480842 +vt 0.322066 0.436265 +vt 0.321076 0.361203 +vt 0.323456 0.380752 +vt 0.322534 0.378630 +vt 0.250154 0.861901 +vt 0.273221 0.863645 +vt 0.091316 0.863096 +vt 0.293066 0.865130 +vt 0.016873 0.869922 +vt 0.033786 0.867553 +vt 0.077381 0.863815 +vt 0.155566 0.859050 +vt 0.138639 0.852324 +vt 0.158066 0.848509 +vt 0.054011 0.865875 +vt 0.236326 0.861386 +vt 0.202051 0.581155 +vt 0.202051 0.570604 +vt 0.116599 0.571730 +vt 0.116599 0.582281 +vt 0.015190 0.570644 +vt 0.003116 0.581155 +vt 0.003116 0.570604 +vt 0.037907 0.581677 +vt 0.037907 0.571127 +vt 0.015190 0.581195 +vt 0.105668 0.571763 +vt 0.105668 0.582313 +vt 0.099489 0.571763 +vt 0.088568 0.582281 +vt 0.099489 0.582313 +vt 0.188632 0.851962 +vt 0.167878 0.848436 +vt 0.181394 0.841551 +vt 0.294067 0.765307 +vt 0.303167 0.742799 +vt 0.303167 0.765307 +vt 0.153583 0.394527 +vt 0.321316 0.411605 +vt 0.153648 0.415574 +vt 0.323510 0.392026 +vt 0.124127 0.408395 +vt 0.125603 0.393079 +vt 0.041308 0.395688 +vt 0.086689 0.412835 +vt 0.039823 0.413998 +vt 0.273195 0.706085 +vt 0.289603 0.702101 +vt 0.290452 0.704463 +vt 0.091482 0.394771 +vt 0.016236 0.394518 +vt 0.281554 0.750145 +vt 0.271561 0.745601 +vt 0.294030 0.744517 +vt 0.170751 0.858940 +vt 0.157783 0.866701 +vt 0.152072 0.907231 +vt 0.193727 0.946545 +vt 0.180297 0.805801 +vt 0.193725 0.805801 +vt 0.265671 0.739717 +vt 0.271448 0.739627 +vt 0.294067 0.742799 +vt 0.303167 0.737007 +vt 0.293952 0.738551 +vt 0.236000 0.750152 +vt 0.245972 0.745613 +vt 0.245995 0.750365 +vt 0.223524 0.744575 +vt 0.246072 0.739642 +vt 0.254076 0.752695 +vt 0.263451 0.750371 +vt 0.263443 0.752726 +vt 0.265727 0.745679 +vt 0.263353 0.745711 +vt 0.265808 0.750329 +vt 0.258767 0.758451 +vt 0.254047 0.758435 +vt 0.251845 0.739719 +vt 0.251796 0.745677 +vt 0.251734 0.750310 +vt 0.138954 0.866913 +vt 0.254084 0.750341 +vt 0.254163 0.745706 +vt 0.263310 0.739731 +vt 0.254206 0.739729 +vt 0.294067 0.737007 +vt 0.303167 0.710087 +vt 0.251853 0.712821 +vt 0.253156 0.708583 +vt 0.254213 0.712822 +vt 0.263295 0.712822 +vt 0.265655 0.712820 +vt 0.266567 0.709390 +vt 0.267638 0.704756 +vt 0.268986 0.706693 +vt 0.294067 0.710087 +vt 0.303167 0.706535 +vt 0.264350 0.708583 +vt 0.263295 0.708459 +vt 0.248520 0.706695 +vt 0.244268 0.703729 +vt 0.249867 0.704757 +vt 0.254213 0.708459 +vt 0.263295 0.703419 +vt 0.250939 0.709391 +vt 0.294067 0.706535 +vt 0.303167 0.702909 +vt 0.294067 0.702909 +vt 0.303167 0.698653 +vt 0.273237 0.703725 +vt 0.254213 0.703419 +vt 0.263295 0.697733 +vt 0.263141 0.681307 +vt 0.254213 0.697733 +vt 0.254367 0.681307 +vt 0.303021 0.681307 +vt 0.294067 0.698653 +vt 0.294213 0.681307 +vt 0.227901 0.702110 +vt 0.244311 0.706088 +vt 0.227053 0.704473 +vt 0.322830 0.682996 +vt 0.328472 0.685929 +vt 0.323984 0.687618 +vt 0.330014 0.698122 +vt 0.325218 0.701627 +vt 0.325218 0.698122 +vt 0.328472 0.693475 +vt 0.322830 0.696409 +vt 0.323984 0.691787 +vt 0.329035 0.701651 +vt 0.324239 0.705156 +vt 0.324239 0.701651 +vt 0.321255 0.698122 +vt 0.320214 0.705156 +vt 0.315026 0.701651 +vt 0.320214 0.701651 +vt 0.319165 0.684659 +vt 0.319165 0.694745 +vt 0.320185 0.690657 +vt 0.314282 0.692993 +vt 0.310555 0.689715 +vt 0.315100 0.689715 +vt 0.321255 0.701627 +vt 0.316083 0.698122 +vt 0.320185 0.688747 +vt 0.314282 0.686411 +vt 0.309808 0.692705 +vt 0.304377 0.692083 +vt 0.310555 0.689690 +vt 0.309808 0.686699 +vt 0.315026 0.705156 +vt 0.310543 0.701651 +vt 0.316083 0.701627 +vt 0.311538 0.698122 +vt 0.305983 0.704643 +vt 0.304350 0.702752 +vt 0.305983 0.702165 +vt 0.304377 0.687322 +vt 0.305407 0.685401 +vt 0.311538 0.701627 +vt 0.304942 0.698635 +vt 0.303203 0.702752 +vt 0.304350 0.704055 +vt 0.303203 0.704055 +vt 0.303203 0.700526 +vt 0.303203 0.699222 +vt 0.305407 0.694003 +vt 0.303203 0.693493 +vt 0.303203 0.685911 +vt 0.303745 0.684901 +vt 0.009347 0.702508 +vt 0.097357 0.761717 +vt 0.009348 0.761718 +vt 0.107587 0.886203 +vt 0.189150 0.866351 +vt 0.189194 0.886242 +vt 0.107632 0.866276 +vt 0.189109 0.847757 +vt 0.107673 0.847757 +vt 0.097357 0.702508 +vt 0.117762 0.761717 +vt 0.093110 0.764736 +vt 0.013595 0.764737 +vt 0.013557 0.678915 +vt 0.013557 0.699807 +vt 0.009348 0.788668 +vt 0.097358 0.847797 +vt 0.009348 0.847797 +vt 0.144454 0.847817 +vt 0.117763 0.788667 +vt 0.144712 0.788607 +vt 0.097357 0.675817 +vt 0.117762 0.702508 +vt 0.097357 0.788667 +vt 0.117763 0.847797 +vt 0.280600 0.601937 +vt 0.283604 0.655959 +vt 0.280600 0.655959 +vt 0.013595 0.785649 +vt 0.093110 0.785649 +vt 0.300859 0.601847 +vt 0.303774 0.655919 +vt 0.300859 0.655919 +vt 0.093147 0.699807 +vt 0.093147 0.678915 +vt 0.009347 0.675817 +vt 0.317967 0.601847 +vt 0.303774 0.601847 +vt 0.303778 0.598933 +vt 0.320881 0.655919 +vt 0.320881 0.601847 +vt 0.303778 0.658833 +vt 0.317967 0.655919 +vt 0.317971 0.658833 +vt 0.297812 0.601937 +vt 0.283604 0.601937 +vt 0.297808 0.658963 +vt 0.297812 0.655959 +vt 0.300817 0.655959 +vt 0.300817 0.601937 +vt 0.297808 0.598933 +vt 0.283600 0.598933 +vt 0.080480 0.567142 +vt 0.103363 0.564023 +vt 0.103172 0.582659 +vt 0.333333 0.333333 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.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.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.243789 0.946439 -vt 0.243564 0.943592 -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.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.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.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.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.176993 0.860576 -vt 0.163321 0.799991 -vt 0.048042 0.441712 -vt 0.048083 0.435555 -vt 0.263488 0.637699 +vt 0.195007 0.587425 +vt 0.201745 0.621001 +vt 0.195007 0.621001 +vt 0.201745 0.587425 +vt 0.208482 0.621001 +vt 0.154582 0.587425 +vt 0.161320 0.621001 +vt 0.154582 0.621001 +vt 0.161319 0.587425 +vt 0.168057 0.621001 +vt 0.168057 0.587425 +vt 0.174795 0.621001 +vt 0.174795 0.587425 +vt 0.181532 0.621001 +vt 0.231060 0.611245 +vt 0.226296 0.616009 +vt 0.219558 0.599743 +vt 0.181532 0.587425 +vt 0.188270 0.621001 +vt 0.188270 0.587425 +vt 0.126584 0.946545 +vt 0.140012 0.805801 +vt 0.140013 0.946545 +vt 0.207154 0.805801 +vt 0.207155 0.946545 +vt 0.166870 0.946545 +vt 0.153440 0.805801 +vt 0.166869 0.805801 +vt 0.180298 0.946545 +vt 0.153441 0.946545 +vt 0.234135 0.916941 +vt 0.220697 0.946508 +vt 0.220707 0.916936 +vt 0.220583 0.946544 +vt 0.220582 0.805801 +vt 0.113155 0.805801 +vt 0.126584 0.805801 +vt 0.314568 0.927703 +vt 0.309497 0.911649 +vt 0.313761 0.912852 +vt 0.301277 0.916963 +vt 0.287839 0.946531 +vt 0.287849 0.916959 +vt 0.260992 0.916950 +vt 0.247553 0.946517 +vt 0.247564 0.916945 +vt 0.328134 0.916973 +vt 0.314695 0.946541 +vt 0.314706 0.916968 +vt 0.274410 0.946527 +vt 0.274420 0.916954 +vt 0.260982 0.946522 +vt 0.234125 0.946513 +vt 0.301267 0.946536 +vt 0.308531 0.965365 +vt 0.297558 0.946631 +vt 0.309626 0.947366 +vt 0.314647 0.931012 +vt 0.310460 0.929361 +vt 0.311777 0.982171 +vt 0.312696 0.967078 +vt 0.320287 0.865187 +vt 0.307573 0.876224 +vt 0.317673 0.861500 +vt 0.313606 0.909991 +vt 0.308535 0.893937 +vt 0.312799 0.895139 +vt 0.312873 0.964171 +vt 0.313792 0.949078 +vt 0.320287 0.994669 +vt 0.307435 0.983365 +vt 0.312643 0.892279 +vt 0.311836 0.877427 +vt 0.296659 0.894582 +vt 0.293357 0.911091 +vt 0.292551 0.896239 +vt 0.295697 0.876869 +vt 0.297621 0.912294 +vt 0.298902 0.929432 +vt 0.296462 0.964631 +vt 0.260683 0.940469 +vt 0.247255 0.990105 +vt 0.247255 0.940469 +vt 0.293215 0.947825 +vt 0.295366 0.982631 +vt 0.281238 0.992293 +vt 0.291201 0.980918 +vt 0.292395 0.893379 +vt 0.291588 0.878527 +vt 0.270381 0.921133 +vt 0.294350 0.909842 +vt 0.269266 0.920527 +vt 0.292119 0.965825 +vt 0.281862 0.867275 +vt 0.284016 0.863361 +vt 0.300968 0.990105 +vt 0.288372 0.992113 +vt 0.287540 0.990105 +vt 0.287540 0.940469 +vt 0.274112 0.990105 +vt 0.274112 0.940469 +vt 0.206969 0.940469 +vt 0.193541 0.990105 +vt 0.193541 0.940469 +vt 0.233826 0.940469 +vt 0.220398 0.990105 +vt 0.220398 0.940469 +vt 0.260683 0.990105 +vt 0.300968 0.940469 +vt 0.206969 0.990105 +vt 0.233826 0.990105 +vt 0.000000 0.604167 +vt 0.052083 0.614583 +vt 0.000000 0.614583 +vt 0.207801 0.992113 +vt 0.234658 0.992113 +vt 0.259851 0.992113 +vt 0.248086 0.992113 +vt 0.286708 0.992113 +vt 0.274943 0.992113 +vt 0.206138 0.992113 +vt 0.194373 0.992113 +vt 0.232995 0.992113 +vt 0.221230 0.992113 +vt 0.261515 0.992113 +vt 0.048732 0.631895 +vt 0.045556 0.631895 +vt 0.048732 0.624227 +vt 0.000000 0.583333 +vt 0.052083 0.593750 +vt 0.000000 0.593750 +vt 0.000000 0.645833 +vt 0.052083 0.656250 +vt 0.000000 0.656250 +vt 0.000000 0.625000 +vt 0.052083 0.635417 +vt 0.000000 0.635417 +vt 0.052083 0.625000 +vt 0.052083 0.604167 +vt 0.052083 0.666667 +vt 0.000000 0.666667 +vt 0.052083 0.645833 +vt 0.077693 0.788354 +vt 0.085752 0.801871 +vt 0.072784 0.791046 +vt 0.099335 0.699167 +vt 0.085924 0.885616 +vt 0.085920 0.699167 +vt 0.194542 0.788354 +vt 0.186482 0.801871 +vt 0.184647 0.796963 +vt 0.154742 0.796963 +vt 0.169694 0.801871 +vt 0.152906 0.801871 +vt 0.137953 0.796963 +vt 0.136117 0.801871 +vt 0.171530 0.796963 +vt 0.117493 0.796963 +vt 0.102541 0.801871 +vt 0.104376 0.796963 +vt 0.134281 0.796963 +vt 0.119329 0.801871 +vt 0.121165 0.796963 +vt 0.072504 0.699167 +vt 0.072521 0.885617 +vt 0.059088 0.699169 +vt 0.045714 0.885621 +vt 0.045673 0.699171 +vt 0.126166 0.699170 +vt 0.112729 0.885617 +vt 0.112751 0.699168 +vt 0.059117 0.885619 +vt 0.032312 0.885625 +vt 0.032257 0.699175 +vt 0.099327 0.885616 +vt 0.100705 0.796963 +vt 0.087588 0.796963 +vt 0.018909 0.885629 +vt 0.018841 0.699179 +vt 0.102541 0.813773 +vt 0.085752 0.813773 +vt 0.136117 0.813773 +vt 0.169694 0.813773 +vt 0.119329 0.813773 +vt 0.152906 0.813773 +vt 0.151119 0.818366 +vt 0.137904 0.818366 +vt 0.186482 0.813773 +vt 0.171480 0.818366 +vt 0.100754 0.818366 +vt 0.087538 0.818366 +vt 0.104327 0.818366 +vt 0.121115 0.818366 +vt 0.077795 0.827295 +vt 0.073051 0.824912 +vt 0.194439 0.827295 +vt 0.184696 0.818366 +vt 0.167908 0.818366 +vt 0.154692 0.818366 +vt 0.274714 0.946621 +vt 0.261210 0.988262 +vt 0.261210 0.946621 +vt 0.288333 0.991891 +vt 0.271580 0.982525 +vt 0.289932 0.990127 +vt 0.247705 0.946621 +vt 0.234201 0.988262 +vt 0.234201 0.946621 +vt 0.220697 0.988262 +vt 0.220697 0.946621 +vt 0.247705 0.988262 +vt 0.301723 0.946621 +vt 0.288219 0.988262 +vt 0.288219 0.946621 +vt 0.315227 0.946621 +vt 0.301723 0.988262 +vt 0.328732 0.946621 +vt 0.315227 0.988262 +vt 0.274714 0.988262 +vt 0.293124 0.990127 +vt 0.309933 0.978799 +vt 0.311477 0.982525 +vt 0.266945 0.980385 +vt 0.261721 0.961916 +vt 0.269323 0.980269 +vt 0.316112 0.980385 +vt 0.321335 0.961916 +vt 0.323100 0.963515 +vt 0.316112 0.940255 +vt 0.321335 0.958724 +vt 0.313734 0.940372 +vt 0.288333 0.928749 +vt 0.271580 0.938115 +vt 0.271463 0.935737 +vt 0.266945 0.940255 +vt 0.261721 0.958724 +vt 0.259957 0.957125 +vt 0.294723 0.928749 +vt 0.311476 0.938115 +vt 0.293124 0.930513 +vt 0.294723 0.991891 +vt 0.311593 0.984904 +vt 0.273123 0.941841 +vt 0.291528 0.937984 +vt 0.275734 0.944527 +vt 0.291476 0.986401 +vt 0.273049 0.978725 +vt 0.313734 0.980269 +vt 0.317609 0.960373 +vt 0.310007 0.941915 +vt 0.289932 0.930513 +vt 0.269323 0.940372 +vt 0.265447 0.960267 +vt 0.291581 0.934239 +vt 0.291528 0.982656 +vt 0.269192 0.960320 +vt 0.309933 0.941841 +vt 0.307322 0.976114 +vt 0.273123 0.978799 +vt 0.265447 0.960373 +vt 0.275734 0.976114 +vt 0.313864 0.960320 +vt 0.317609 0.960267 +vt 0.307322 0.944526 +vt 0.282700 0.788354 +vt 0.271598 0.801335 +vt 0.270797 0.788354 +vt 0.263862 0.769178 +vt 0.276843 0.758076 +vt 0.276843 0.768585 +vt 0.272434 0.783733 +vt 0.263862 0.757275 +vt 0.272669 0.742859 +vt 0.256381 0.797161 +vt 0.297255 0.796926 +vt 0.282107 0.801335 +vt 0.269648 0.929377 +vt 0.269215 0.938226 +vt 0.267789 0.929371 +vt 0.270334 0.937627 +vt 0.294268 0.949068 +vt 0.237869 0.929284 +vt 0.237791 0.941042 +vt 0.289962 0.956023 +vt 0.303659 0.954085 +vt 0.304214 0.956023 +vt 0.261457 0.956023 +vt 0.247760 0.954085 +vt 0.260902 0.954085 +vt 0.232711 0.956043 +vt 0.222295 0.947283 +vt 0.233498 0.954151 +vt 0.318708 0.956043 +vt 0.329124 0.947283 +vt 0.330769 0.948691 +vt 0.275710 0.956023 +vt 0.289407 0.954085 +vt 0.247205 0.956023 +vt 0.246640 0.954088 +vt 0.317921 0.954152 +vt 0.262012 0.954085 +vt 0.275154 0.954085 +vt 0.262012 0.968803 +vt 0.275709 0.966917 +vt 0.275154 0.968803 +vt 0.261457 0.966917 +vt 0.317931 0.968653 +vt 0.304214 0.966917 +vt 0.318708 0.966518 +vt 0.233488 0.968653 +vt 0.247205 0.966917 +vt 0.246629 0.968797 +vt 0.232711 0.966518 +vt 0.289407 0.968804 +vt 0.289962 0.966917 +vt 0.329533 0.974827 +vt 0.331194 0.973125 +vt 0.221886 0.974827 +vt 0.247760 0.968803 +vt 0.260902 0.968803 +vt 0.290517 0.968804 +vt 0.303659 0.968803 +vt 0.286548 0.950491 +vt 0.274178 0.961268 +vt 0.276506 0.948594 +vt 0.263857 0.954512 +vt 0.253669 0.961144 +vt 0.241589 0.950367 +vt 0.251491 0.948594 +vt 0.302318 0.970585 +vt 0.296095 0.960564 +vt 0.309892 0.960802 +vt 0.284417 0.962679 +vt 0.263815 0.973350 +vt 0.274027 0.963312 +vt 0.273860 0.973515 +vt 0.284163 0.964604 +vt 0.263891 0.963133 +vt 0.253734 0.973283 +vt 0.253781 0.963153 +vt 0.263905 0.961147 +vt 0.243789 0.964293 +vt 0.243564 0.962395 +vt 0.208616 0.798710 +vt 0.199561 0.808701 +vt 0.199561 0.798710 +vt 0.223046 0.809482 +vt 0.228088 0.809503 +vt 0.228001 0.815388 +vt 0.247216 0.808701 +vt 0.256270 0.798710 +vt 0.256270 0.808701 +vt 0.232635 0.797937 +vt 0.228128 0.797913 +vt 0.228192 0.792030 +vt 0.236144 0.809851 +vt 0.232647 0.808907 +vt 0.236489 0.807195 +vt 0.219824 0.797560 +vt 0.223052 0.798499 +vt 0.219448 0.800206 +vt 0.211461 0.808701 +vt 0.208616 0.808701 +vt 0.244371 0.798710 +vt 0.247216 0.798710 +vt 0.223330 0.806719 +vt 0.217127 0.800691 +vt 0.223330 0.800691 +vt 0.232384 0.806719 +vt 0.238657 0.800691 +vt 0.238657 0.806719 +vt 0.215001 0.800239 +vt 0.211461 0.798710 +vt 0.240830 0.800239 +vt 0.244370 0.808701 +vt 0.240830 0.807171 +vt 0.215001 0.807171 +vt 0.212477 0.812587 +vt 0.232384 0.800691 +vt 0.217127 0.806719 +vt 0.243247 0.794631 +vt 0.223051 0.808804 +vt 0.232650 0.798611 +vt 0.236090 0.797760 +vt 0.236348 0.800331 +vt 0.219875 0.809656 +vt 0.219585 0.807097 +vt 0.243247 0.812779 +vt 0.212477 0.794823 +vt 0.223082 0.797813 +vt 0.220294 0.788354 +vt 0.232619 0.809589 +vt 0.235699 0.819021 +vt 0.144323 0.841810 +vt 0.314455 0.983672 +vt 0.097131 0.833438 +vt 0.159735 0.834493 +vt 0.138787 0.844225 +vt 0.117867 0.834432 +vt 0.109270 0.797526 +vt 0.127627 0.984452 +vt 0.014857 0.985334 +vt 0.199651 0.833438 +vt 0.014710 0.728381 +vt 0.014697 0.406798 +vt 0.010653 0.381900 +vt 0.010554 0.360815 +vt 0.199186 0.867077 +vt 0.128645 0.867658 +vt 0.203942 0.983844 +vt 0.131861 0.358705 +vt 0.318354 0.502992 +vt 0.153393 0.360805 +vt 0.321715 0.502527 +vt 0.322483 0.339779 +vt 0.308636 0.863435 +vt 0.018435 0.866447 +vt 0.009876 0.415271 +vt 0.010440 0.394049 +vt 0.271559 0.750365 +vt 0.223589 0.738615 +vt 0.327319 0.681307 +vt 0.330014 0.701627 +vt 0.327319 0.698097 +vt 0.329035 0.705156 +vt 0.315100 0.689690 +vt 0.310543 0.705156 +vt 0.304942 0.701113 +vt 0.303745 0.694504 +vt 0.117762 0.675817 +vt 0.317971 0.598933 +vt 0.283600 0.658963 +vt 0.141926 0.564373 +vt 0.168187 0.567833 +vt 0.141640 0.582703 +vt 0.180275 0.573798 +vt 0.167479 0.579327 +vt 0.081648 0.579811 +vt 0.075115 0.575029 +vt 0.074695 0.571646 +vt 1.000000 0.333333 +vt 0.208482 0.587425 +vt 0.219558 0.616009 +vt 0.214794 0.611245 +vt 0.214794 0.604507 +vt 0.226296 0.599743 +vt 0.231060 0.604507 +vt 0.113156 0.946545 +vt 0.328124 0.946545 +vt 0.313949 0.946109 +vt 0.317605 0.998401 +vt 0.292296 0.962918 +vt 0.283402 0.996286 +vt 0.300137 0.992113 +vt 0.219566 0.992113 +vt 0.246423 0.992113 +vt 0.273280 0.992113 +vt 0.043310 0.629649 +vt 0.043310 0.626473 +vt 0.045556 0.624227 +vt 0.050978 0.626473 +vt 0.050978 0.629649 +vt 0.052083 0.583333 +vt 0.199450 0.791046 +vt 0.167858 0.796963 +vt 0.151070 0.796963 +vt 0.126132 0.885619 +vt 0.117543 0.818366 +vt 0.134331 0.818366 +vt 0.199184 0.824912 +vt 0.271463 0.984904 +vt 0.328732 0.988262 +vt 0.291581 0.986401 +vt 0.259957 0.963515 +vt 0.323100 0.957125 +vt 0.311593 0.935737 +vt 0.291476 0.934239 +vt 0.310007 0.978725 +vt 0.273049 0.941915 +vt 0.237860 0.917527 +vt 0.290517 0.954085 +vt 0.220707 0.948754 +vt 0.276265 0.954085 +vt 0.304779 0.954088 +vt 0.304790 0.968797 +vt 0.276265 0.968803 +vt 0.220287 0.973067 +vt 0.293315 0.966609 +vt 0.220063 0.818793 +vt 0.235926 0.788665 +vt 0.216897 0.808234 +vt 0.238896 0.799150 +vt 0.238896 0.808261 +vt 0.216897 0.799176 +vt 0.176993 0.907051 +vt 0.163321 0.866661 +vt 0.048042 0.627808 +vt 0.048083 0.623703 +vt 0.000000 0.327174 +vt 0.000000 0.063451 +vt 0.263723 0.063451 +vt 0.263723 0.327174 +vt 0.263488 0.758466 s 0 f 1/1/1 3/2/1 4/3/1 f 4/3/2 5/4/2 6/5/2 @@ -2843,7 +2851,9 @@ f 67/70/567 480/76/567 476/70/567 f 23/24/568 481/10/568 469/24/568 f 321/868/132 323/868/132 325/868/132 f 246/869/132 248/869/132 250/869/132 -f 147/214/153 60/870/153 479/218/153 +f 487/870/66 486/871/66 489/872/66 +f 487/870/66 489/872/66 488/873/66 +f 147/214/153 60/874/153 479/218/153 f 421/859/6 420/701/6 426/713/6 f 423/705/6 422/707/6 416/704/6 f 421/859/6 426/713/6 423/705/6 @@ -3014,275 +3024,275 @@ vn 0.4012 0.9160 -0.0000 vn 1.0000 -0.0023 -0.0000 vn 0.3982 0.9173 0.0006 vn 1.0000 -0.0038 -0.0002 -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 -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.062578 0.483566 +vt 0.270772 0.347832 +vt 0.259071 0.363013 +vt 0.258022 0.360582 +vt 0.124225 0.531799 +vt 0.000380 0.526709 +vt 0.124223 0.526706 +vt 0.000378 0.521619 +vt 0.124220 0.521617 +vt 0.124223 0.557252 +vt 0.000382 0.552160 +vt 0.124225 0.552162 +vt 0.124227 0.536891 +vt 0.000387 0.541983 +vt 0.000384 0.536893 +vt 0.124221 0.562339 +vt 0.000380 0.557249 +vt 0.000384 0.547070 +vt 0.124227 0.547073 +vt 0.000382 0.531801 +vt 0.124229 0.541983 +vt 0.301296 0.405237 +vt 0.311550 0.387228 +vt 0.315428 0.391106 +vt 0.319568 0.368044 +vt 0.317107 0.387052 +vt 0.317107 0.367067 +vt 0.254931 0.368044 +vt 0.257392 0.387052 +vt 0.254911 0.386066 +vt 0.303748 0.406295 +vt 0.316485 0.393557 +vt 0.316477 0.360581 +vt 0.301296 0.348881 +vt 0.303727 0.347832 +vt 0.278234 0.344741 +vt 0.297242 0.347202 +vt 0.277257 0.347202 +vt 0.270772 0.406287 +vt 0.259071 0.391106 +vt 0.273203 0.405237 +vt 0.278234 0.409377 +vt 0.297242 0.406917 +vt 0.296257 0.409397 +vt 0.297242 0.352686 +vt 0.278257 0.355349 +vt 0.277257 0.352686 +vt 0.311623 0.367067 +vt 0.257392 0.367067 +vt 0.262876 0.387052 +vt 0.315428 0.363013 +vt 0.297418 0.352759 +vt 0.277081 0.401360 +vt 0.277257 0.406917 +vt 0.297242 0.401433 +vt 0.273203 0.348881 +vt 0.262949 0.366891 +vt 0.308960 0.386052 +vt 0.278257 0.398770 +vt 0.265539 0.368067 +vt 0.277257 0.401433 +vt 0.296243 0.398770 +vt 0.311623 0.387052 +vt 0.308960 0.368067 +vt 0.262876 0.367067 +vt 0.265539 0.386052 +vt 0.296242 0.355349 +vt 0.189118 0.377388 +vt 0.194118 0.395891 +vt 0.187203 0.379249 +vt 0.246869 0.375099 +vt 0.244287 0.354537 +vt 0.251935 0.373001 +vt 0.246935 0.395891 +vt 0.251935 0.377389 +vt 0.253850 0.379249 +vt 0.196766 0.354537 +vt 0.187203 0.371141 +vt 0.194097 0.354498 +vt 0.246956 0.354498 +vt 0.253850 0.371141 +vt 0.222720 0.406603 +vt 0.241223 0.401603 +vt 0.224565 0.408503 +vt 0.199830 0.401603 +vt 0.218332 0.406603 +vt 0.216488 0.408503 +vt 0.216488 0.341886 +vt 0.199869 0.351434 +vt 0.199830 0.348765 +vt 0.241184 0.351434 +vt 0.224565 0.341886 +vt 0.241223 0.348765 +vt 0.203910 0.391811 +vt 0.220431 0.401537 +vt 0.201967 0.393889 +vt 0.239221 0.393754 +vt 0.244287 0.395853 +vt 0.201832 0.356635 +vt 0.189118 0.373001 +vt 0.220622 0.401537 +vt 0.241184 0.398955 +vt 0.220431 0.348853 +vt 0.218333 0.343786 +vt 0.199868 0.398955 +vt 0.239086 0.356501 +vt 0.222720 0.343786 +vt 0.194184 0.375290 +vt 0.196766 0.395853 +vt 0.197027 0.375195 +vt 0.220527 0.351695 +vt 0.244026 0.375195 +vt 0.237143 0.358578 +vt 0.220622 0.348852 +vt 0.201832 0.393754 +vt 0.239221 0.356635 +vt 0.237143 0.391811 +vt 0.246869 0.375290 +vt 0.203910 0.358578 +vt 0.194184 0.375099 +vt 0.239086 0.393889 +vt 0.201967 0.356500 +vt 0.000378 0.562337 +vt 0.297419 0.401360 +vt 0.319588 0.386066 +vt 0.296265 0.344741 +vt 0.258014 0.393557 +vt 0.311550 0.366891 +vt 0.262949 0.387228 +vt 0.277081 0.352759 +vt 0.220526 0.398694 +vt 0.137874 0.640852 +vt 0.058604 0.613805 +vt 0.138976 0.617246 +vt 0.064584 0.595461 +vt 0.133379 0.595700 +vt 0.134776 0.656441 +vt 0.059414 0.638152 +vt 0.062578 0.655711 s 0 -f 487/871/596 489/872/596 486/873/596 -f 491/874/597 493/875/597 490/876/597 -f 490/876/598 495/877/598 494/878/598 -f 497/879/599 499/880/599 496/881/599 -f 487/882/600 500/883/600 501/884/600 -f 494/885/601 498/886/601 497/879/601 -f 496/881/602 503/887/602 502/888/602 -f 487/882/603 492/889/603 491/874/603 -f 502/888/604 500/883/604 486/890/604 -f 505/891/601 507/892/601 504/893/601 -f 490/894/605 504/895/605 508/896/605 -f 486/897/606 509/898/606 502/899/606 -f 497/900/607 504/893/607 494/901/607 -f 490/902/608 510/903/608 491/904/608 -f 487/905/609 510/906/609 488/907/609 -f 496/908/610 509/909/610 511/910/610 -f 496/911/611 505/912/611 497/913/611 -f 513/914/612 515/915/612 512/916/612 -f 504/895/613 516/917/613 508/896/613 -f 489/918/614 518/919/614 509/898/614 -f 508/920/597 513/921/597 510/903/597 -f 509/909/615 519/922/615 511/910/615 -f 510/906/603 512/916/603 488/907/603 -f 511/923/616 506/924/616 505/912/616 -f 488/925/617 517/926/617 489/872/617 -f 521/927/618 523/928/618 525/929/618 -f 519/930/619 522/931/619 506/924/619 -f 517/926/620 515/915/620 525/929/620 -f 507/892/621 522/931/621 521/927/621 -f 507/932/622 520/933/622 516/917/622 -f 517/934/623 524/935/623 518/919/623 -f 513/921/624 520/933/624 514/936/624 -f 519/922/625 524/935/625 523/928/625 -f 526/937/626 501/938/626 500/939/626 -f 529/940/601 531/941/601 528/942/601 -f 493/943/627 528/944/627 495/945/627 -f 533/946/628 500/947/628 503/948/628 -f 528/942/629 498/949/629 495/950/629 -f 534/951/630 493/952/630 492/953/630 -f 501/954/631 534/955/631 492/956/631 -f 499/957/632 533/958/632 503/959/632 -f 531/960/633 499/961/633 498/962/633 -f 537/963/634 539/964/634 536/965/634 -f 540/966/613 528/944/613 532/967/613 -f 541/968/614 526/969/614 533/946/614 -f 539/970/597 532/971/597 534/951/597 -f 543/972/615 533/958/615 535/973/615 -f 536/965/603 534/955/603 527/974/603 -f 530/975/616 535/976/616 531/960/616 -f 542/977/617 527/978/617 526/937/617 -f 545/979/635 547/980/635 549/981/635 -f 548/982/636 543/983/636 530/975/636 -f 545/979/637 536/984/637 542/977/637 -f 529/940/638 548/982/638 530/985/638 -f 544/986/639 529/987/639 540/966/639 -f 546/988/640 542/989/640 541/968/640 -f 539/970/641 544/986/641 540/990/641 -f 543/972/642 546/988/642 541/991/642 -f 487/871/643 488/925/643 489/872/643 -f 491/874/597 492/889/597 493/875/597 -f 490/876/598 493/875/598 495/877/598 -f 497/879/599 498/886/599 499/880/599 -f 487/882/644 486/890/644 500/883/644 -f 494/885/601 495/992/601 498/886/601 -f 496/881/602 499/880/602 503/887/602 -f 487/882/603 501/884/603 492/889/603 -f 502/888/614 503/887/614 500/883/614 -f 505/891/601 506/993/601 507/892/601 -f 490/894/645 494/994/645 504/895/645 -f 486/897/646 489/918/646 509/898/646 -f 497/900/607 505/891/607 504/893/607 -f 490/902/608 508/920/608 510/903/608 -f 487/905/609 491/995/609 510/906/609 -f 496/908/647 502/996/647 509/909/647 -f 496/911/648 511/923/648 505/912/648 -f 513/914/612 514/936/612 515/915/612 -f 504/895/613 507/932/613 516/917/613 -f 489/918/614 517/934/614 518/919/614 -f 508/920/597 516/997/597 513/921/597 -f 509/909/615 518/998/615 519/922/615 -f 510/906/603 513/914/603 512/916/603 -f 511/923/616 519/930/616 506/924/616 -f 488/925/617 512/999/617 517/926/617 -f 514/936/618 520/933/618 521/927/618 -f 521/927/618 522/931/618 523/928/618 -f 523/928/618 524/935/618 525/929/618 -f 525/929/618 515/915/618 514/936/618 -f 514/936/618 521/927/618 525/929/618 -f 519/930/619 523/928/619 522/931/619 -f 517/926/620 512/999/620 515/915/620 -f 507/892/621 506/993/621 522/931/621 -f 507/932/622 521/927/622 520/933/622 -f 517/934/623 525/929/623 524/935/623 -f 513/921/624 516/997/624 520/933/624 -f 519/922/625 518/998/625 524/935/625 -f 526/937/649 527/978/649 501/938/649 -f 529/940/601 530/985/601 531/941/601 -f 493/943/650 532/967/650 528/944/650 -f 533/946/628 526/969/628 500/947/628 -f 528/942/629 531/941/629 498/949/629 -f 534/951/630 532/971/630 493/952/630 -f 501/954/631 527/974/631 534/955/631 -f 499/957/651 535/973/651 533/958/651 -f 531/960/652 535/976/652 499/961/652 -f 537/963/634 538/1000/634 539/964/634 -f 540/966/613 529/987/613 528/944/613 -f 541/968/614 542/989/614 526/969/614 -f 539/970/597 540/990/597 532/971/597 -f 543/972/615 541/991/615 533/958/615 -f 536/965/603 539/964/603 534/955/603 -f 530/975/616 543/983/616 535/976/616 -f 542/977/617 536/984/617 527/978/617 -f 549/981/635 544/986/635 538/1000/635 -f 538/1000/635 537/963/635 545/979/635 -f 545/979/635 546/988/635 547/980/635 -f 547/980/635 548/982/635 549/981/635 -f 549/981/635 538/1000/635 545/979/635 -f 548/982/636 547/980/636 543/983/636 -f 545/979/637 537/963/637 536/984/637 -f 529/940/638 549/981/638 548/982/638 -f 544/986/639 549/981/639 529/987/639 -f 546/988/640 545/979/640 542/989/640 -f 539/970/641 538/1000/641 544/986/641 -f 543/972/642 547/980/642 546/988/642 -f 555/1001/653 552/1002/653 554/1003/653 -f 554/1003/654 556/1004/654 553/1005/654 -f 557/1006/655 550/1007/655 555/1001/655 -f 555/1001/653 550/1007/653 552/1002/653 -f 554/1003/656 552/1002/656 556/1004/656 -f 557/1006/657 551/1008/657 550/1007/657 +f 491/875/596 493/876/596 490/877/596 +f 495/878/597 497/879/597 494/880/597 +f 494/880/598 499/881/598 498/882/598 +f 501/883/599 503/884/599 500/885/599 +f 491/886/600 504/887/600 505/888/600 +f 498/889/601 502/890/601 501/883/601 +f 500/885/602 507/891/602 506/892/602 +f 491/886/603 496/893/603 495/878/603 +f 506/892/604 504/887/604 490/894/604 +f 509/895/601 511/896/601 508/897/601 +f 494/898/605 508/899/605 512/900/605 +f 490/901/606 513/902/606 506/903/606 +f 501/904/607 508/897/607 498/905/607 +f 494/906/608 514/907/608 495/908/608 +f 491/909/609 514/910/609 492/911/609 +f 500/912/610 513/913/610 515/914/610 +f 500/915/611 509/916/611 501/917/611 +f 517/918/612 519/919/612 516/920/612 +f 508/899/613 520/921/613 512/900/613 +f 493/922/614 522/923/614 513/902/614 +f 512/924/597 517/925/597 514/907/597 +f 513/913/615 523/926/615 515/914/615 +f 514/910/603 516/920/603 492/911/603 +f 515/927/616 510/928/616 509/916/616 +f 492/929/617 521/930/617 493/876/617 +f 525/931/618 527/932/618 529/933/618 +f 523/934/619 526/935/619 510/928/619 +f 521/930/620 519/919/620 529/933/620 +f 511/896/621 526/935/621 525/931/621 +f 511/936/622 524/937/622 520/921/622 +f 521/938/623 528/939/623 522/923/623 +f 517/925/624 524/937/624 518/940/624 +f 523/926/625 528/939/625 527/932/625 +f 530/941/626 505/942/626 504/943/626 +f 533/944/601 535/945/601 532/946/601 +f 497/947/627 532/948/627 499/949/627 +f 537/950/628 504/951/628 507/952/628 +f 532/946/629 502/953/629 499/954/629 +f 538/955/630 497/956/630 496/957/630 +f 505/958/631 538/959/631 496/960/631 +f 503/961/632 537/962/632 507/963/632 +f 535/964/633 503/965/633 502/966/633 +f 541/967/634 543/968/634 540/969/634 +f 544/970/613 532/948/613 536/971/613 +f 545/972/614 530/973/614 537/950/614 +f 543/974/597 536/975/597 538/955/597 +f 547/976/615 537/962/615 539/977/615 +f 540/969/603 538/959/603 531/978/603 +f 534/979/616 539/980/616 535/964/616 +f 546/981/617 531/982/617 530/941/617 +f 549/983/635 551/984/635 553/985/635 +f 552/986/636 547/987/636 534/979/636 +f 549/983/637 540/988/637 546/981/637 +f 533/944/638 552/986/638 534/989/638 +f 548/990/639 533/991/639 544/970/639 +f 550/992/640 546/993/640 545/972/640 +f 543/974/641 548/990/641 544/994/641 +f 547/976/642 550/992/642 545/995/642 +f 491/875/643 492/929/643 493/876/643 +f 495/878/597 496/893/597 497/879/597 +f 494/880/598 497/879/598 499/881/598 +f 501/883/599 502/890/599 503/884/599 +f 491/886/644 490/894/644 504/887/644 +f 498/889/601 499/996/601 502/890/601 +f 500/885/602 503/884/602 507/891/602 +f 491/886/603 505/888/603 496/893/603 +f 506/892/614 507/891/614 504/887/614 +f 509/895/601 510/997/601 511/896/601 +f 494/898/645 498/998/645 508/899/645 +f 490/901/646 493/922/646 513/902/646 +f 501/904/607 509/895/607 508/897/607 +f 494/906/608 512/924/608 514/907/608 +f 491/909/609 495/999/609 514/910/609 +f 500/912/647 506/1000/647 513/913/647 +f 500/915/648 515/927/648 509/916/648 +f 517/918/612 518/940/612 519/919/612 +f 508/899/613 511/936/613 520/921/613 +f 493/922/614 521/938/614 522/923/614 +f 512/924/597 520/1001/597 517/925/597 +f 513/913/615 522/1002/615 523/926/615 +f 514/910/603 517/918/603 516/920/603 +f 515/927/616 523/934/616 510/928/616 +f 492/929/617 516/1003/617 521/930/617 +f 518/940/618 524/937/618 525/931/618 +f 525/931/618 526/935/618 527/932/618 +f 527/932/618 528/939/618 529/933/618 +f 529/933/618 519/919/618 518/940/618 +f 518/940/618 525/931/618 529/933/618 +f 523/934/619 527/932/619 526/935/619 +f 521/930/620 516/1003/620 519/919/620 +f 511/896/621 510/997/621 526/935/621 +f 511/936/622 525/931/622 524/937/622 +f 521/938/623 529/933/623 528/939/623 +f 517/925/624 520/1001/624 524/937/624 +f 523/926/625 522/1002/625 528/939/625 +f 530/941/649 531/982/649 505/942/649 +f 533/944/601 534/989/601 535/945/601 +f 497/947/650 536/971/650 532/948/650 +f 537/950/628 530/973/628 504/951/628 +f 532/946/629 535/945/629 502/953/629 +f 538/955/630 536/975/630 497/956/630 +f 505/958/631 531/978/631 538/959/631 +f 503/961/651 539/977/651 537/962/651 +f 535/964/652 539/980/652 503/965/652 +f 541/967/634 542/1004/634 543/968/634 +f 544/970/613 533/991/613 532/948/613 +f 545/972/614 546/993/614 530/973/614 +f 543/974/597 544/994/597 536/975/597 +f 547/976/615 545/995/615 537/962/615 +f 540/969/603 543/968/603 538/959/603 +f 534/979/616 547/987/616 539/980/616 +f 546/981/617 540/988/617 531/982/617 +f 553/985/635 548/990/635 542/1004/635 +f 542/1004/635 541/967/635 549/983/635 +f 549/983/635 550/992/635 551/984/635 +f 551/984/635 552/986/635 553/985/635 +f 553/985/635 542/1004/635 549/983/635 +f 552/986/636 551/984/636 547/987/636 +f 549/983/637 541/967/637 540/988/637 +f 533/944/638 553/985/638 552/986/638 +f 548/990/639 553/985/639 533/991/639 +f 550/992/640 549/983/640 546/993/640 +f 543/974/641 542/1004/641 548/990/641 +f 547/976/642 551/984/642 550/992/642 +f 559/1005/653 556/1006/653 558/1007/653 +f 558/1007/654 560/1008/654 557/1009/654 +f 561/1010/655 554/1011/655 559/1005/655 +f 559/1005/653 554/1011/653 556/1006/653 +f 558/1007/656 556/1006/656 560/1008/656 +f 561/1010/657 555/1012/657 554/1011/657 o Shell v 0.000000 1.558350 0.961217 v 0.132625 1.613285 0.961217 @@ -3389,60 +3399,60 @@ vt 0.416064 0.709256 vt 0.498826 0.763730 vt 0.417116 0.818904 s 0 -f 582/1009/658 559/1010/658 583/1011/658 -f 559/1010/659 584/1012/659 583/1011/659 -f 560/1013/660 585/1014/660 584/1012/660 -f 561/1015/661 586/1016/661 585/1014/661 -f 562/1017/662 587/1018/662 586/1016/662 -f 563/1019/663 588/1020/663 587/1018/663 -f 588/1020/664 565/1021/664 589/1022/664 -f 565/1021/665 582/1023/665 589/1022/665 -f 563/1024/666 572/1025/666 564/1026/666 -f 558/1027/666 566/1028/666 559/1029/666 -f 558/1027/666 573/1030/666 567/1031/666 -f 561/1032/666 568/1033/666 569/1034/666 -f 568/1035/660 577/1036/660 569/1037/660 -f 571/1038/663 580/1039/663 572/1040/663 -f 569/1037/661 578/1041/661 570/1042/661 -f 572/1040/664 581/1043/664 573/1044/664 -f 566/1045/659 576/1046/659 568/1035/659 -f 570/1042/662 579/1047/662 571/1048/662 -f 573/1044/665 575/1049/665 567/1050/665 -f 567/1050/658 574/1051/658 566/1045/658 -f 562/1052/666 569/1034/666 570/1053/666 -f 559/1029/666 568/1033/666 560/1054/666 -f 564/1026/666 573/1030/666 565/1055/666 -f 562/1052/666 571/1056/666 563/1057/666 -f 581/1058/667 579/1059/667 577/1060/667 -f 582/1009/658 558/1061/658 559/1010/658 -f 559/1010/659 560/1013/659 584/1012/659 -f 560/1013/660 561/1015/660 585/1014/660 -f 561/1015/661 562/1017/661 586/1016/661 -f 562/1017/662 563/1019/662 587/1018/662 -f 563/1019/663 564/1062/663 588/1020/663 -f 588/1020/664 564/1062/664 565/1021/664 -f 565/1021/665 558/1063/665 582/1023/665 -f 563/1024/666 571/1064/666 572/1025/666 -f 558/1027/666 567/1031/666 566/1028/666 -f 558/1027/666 565/1055/666 573/1030/666 -f 561/1032/666 560/1054/666 568/1033/666 -f 568/1035/660 576/1046/660 577/1036/660 -f 571/1038/663 579/1065/663 580/1039/663 -f 569/1037/661 577/1036/661 578/1041/661 -f 572/1040/664 580/1039/664 581/1043/664 -f 566/1045/659 574/1051/659 576/1046/659 -f 570/1042/662 578/1041/662 579/1047/662 -f 573/1044/665 581/1043/665 575/1049/665 -f 567/1050/658 575/1049/658 574/1051/658 -f 562/1052/666 561/1032/666 569/1034/666 -f 559/1029/666 566/1028/666 568/1033/666 -f 564/1026/666 572/1025/666 573/1030/666 -f 562/1052/666 570/1053/666 571/1056/666 -f 577/1060/667 576/1066/667 574/1067/667 -f 574/1067/667 575/1068/667 581/1058/667 -f 581/1058/667 580/1069/667 579/1059/667 -f 579/1059/667 578/1070/667 577/1060/667 -f 577/1060/667 574/1067/667 581/1058/667 +f 586/1013/658 563/1014/658 587/1015/658 +f 563/1014/659 588/1016/659 587/1015/659 +f 564/1017/660 589/1018/660 588/1016/660 +f 565/1019/661 590/1020/661 589/1018/661 +f 566/1021/662 591/1022/662 590/1020/662 +f 567/1023/663 592/1024/663 591/1022/663 +f 592/1024/664 569/1025/664 593/1026/664 +f 569/1025/665 586/1027/665 593/1026/665 +f 567/1028/666 576/1029/666 568/1030/666 +f 562/1031/666 570/1032/666 563/1033/666 +f 562/1031/666 577/1034/666 571/1035/666 +f 565/1036/666 572/1037/666 573/1038/666 +f 572/1039/660 581/1040/660 573/1041/660 +f 575/1042/663 584/1043/663 576/1044/663 +f 573/1041/661 582/1045/661 574/1046/661 +f 576/1044/664 585/1047/664 577/1048/664 +f 570/1049/659 580/1050/659 572/1039/659 +f 574/1046/662 583/1051/662 575/1052/662 +f 577/1048/665 579/1053/665 571/1054/665 +f 571/1054/658 578/1055/658 570/1049/658 +f 566/1056/666 573/1038/666 574/1057/666 +f 563/1033/666 572/1037/666 564/1058/666 +f 568/1030/666 577/1034/666 569/1059/666 +f 566/1056/666 575/1060/666 567/1061/666 +f 585/1062/667 583/1063/667 581/1064/667 +f 586/1013/658 562/1065/658 563/1014/658 +f 563/1014/659 564/1017/659 588/1016/659 +f 564/1017/660 565/1019/660 589/1018/660 +f 565/1019/661 566/1021/661 590/1020/661 +f 566/1021/662 567/1023/662 591/1022/662 +f 567/1023/663 568/1066/663 592/1024/663 +f 592/1024/664 568/1066/664 569/1025/664 +f 569/1025/665 562/1067/665 586/1027/665 +f 567/1028/666 575/1068/666 576/1029/666 +f 562/1031/666 571/1035/666 570/1032/666 +f 562/1031/666 569/1059/666 577/1034/666 +f 565/1036/666 564/1058/666 572/1037/666 +f 572/1039/660 580/1050/660 581/1040/660 +f 575/1042/663 583/1069/663 584/1043/663 +f 573/1041/661 581/1040/661 582/1045/661 +f 576/1044/664 584/1043/664 585/1047/664 +f 570/1049/659 578/1055/659 580/1050/659 +f 574/1046/662 582/1045/662 583/1051/662 +f 577/1048/665 585/1047/665 579/1053/665 +f 571/1054/658 579/1053/658 578/1055/658 +f 566/1056/666 565/1036/666 573/1038/666 +f 563/1033/666 570/1032/666 572/1037/666 +f 568/1030/666 576/1029/666 577/1034/666 +f 566/1056/666 574/1057/666 575/1060/666 +f 581/1064/667 580/1070/667 578/1071/667 +f 578/1071/667 579/1072/667 585/1062/667 +f 585/1062/667 584/1073/667 583/1063/667 +f 583/1063/667 582/1074/667 581/1064/667 +f 581/1064/667 578/1071/667 585/1062/667 o Sight v -0.128183 2.091560 2.999992 v 0.128183 2.091560 2.999992 @@ -3479,98 +3489,98 @@ vn 0.0001 -0.9985 -0.0541 vn -0.0001 -0.9985 -0.0541 vn -0.0000 -0.0000 -1.0000 vt 0.276157 1.000043 -vt 0.277845 0.988719 +vt 0.277845 0.992479 vt 0.279031 0.999320 -vt 0.262350 0.883120 -vt 0.272118 0.893652 -vt 0.262350 0.893652 -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.262350 0.922080 +vt 0.272118 0.929101 +vt 0.262350 0.929101 +vt 0.274698 0.993787 +vt 0.275897 0.993777 +vt 0.222326 0.777476 +vt 0.223796 0.783767 +vt 0.221878 0.783681 +vt 0.276984 0.922230 +vt 0.274471 0.922080 +vt 0.209797 0.705905 +vt 0.219735 0.712775 +vt 0.209797 0.712775 +vt 0.225468 0.776184 +vt 0.226612 0.783315 +vt 0.222094 0.705905 +vt 0.223523 0.777445 +vt 0.281111 0.929195 +vt 0.279697 0.992551 +vt 0.228356 0.783036 +vt 0.227211 0.775904 +vt 0.220401 0.776146 +vt 0.217884 0.712823 +vt 0.272118 0.931521 +vt 0.279262 0.929125 +vt 0.219072 0.783148 +vt 0.289130 0.922373 +vt 0.289049 0.929239 +vt 0.272776 0.992493 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.236749 0.573040 +vt 0.226877 0.712825 +vt 0.236860 0.705929 +vt 0.236778 0.712942 +vt 0.236749 0.715360 vt 0.269746 0.998630 -vt 0.224609 0.558677 -vt 0.218549 0.664294 -vt 0.262350 0.897282 -vt 0.226848 0.572865 -vt 0.271059 0.988251 +vt 0.224609 0.705785 +vt 0.218549 0.776196 +vt 0.262350 0.931521 +vt 0.226848 0.715243 +vt 0.271059 0.992167 s 0 -f 594/1071/668 596/1072/668 593/1073/668 -f 598/1074/669 601/1075/669 600/1076/669 -f 594/1071/670 603/1077/670 595/1078/670 -f 604/1079/670 602/1080/670 594/1081/670 -f 590/1082/671 603/1077/671 597/1083/671 -f 592/1084/668 607/1085/668 606/1086/668 -f 602/1080/669 608/1087/669 609/1088/669 -f 591/1089/672 605/1090/672 604/1079/672 -f 596/1072/672 601/1091/672 611/1092/672 -f 593/1093/673 608/1087/673 612/1094/673 -f 612/1095/671 613/1096/671 607/1085/671 -f 610/1097/674 600/1076/674 601/1075/674 -f 595/1078/675 610/1098/675 596/1072/675 -f 612/1095/668 594/1081/668 593/1099/668 -f 607/1085/676 604/1079/676 612/1095/676 -f 610/1098/668 592/1100/668 606/1101/668 -f 611/1102/669 602/1103/669 609/1104/669 -f 605/1090/669 613/1105/669 608/1087/669 -f 601/1075/669 603/1077/669 611/1102/669 -f 613/1105/669 598/1106/669 600/1107/669 -f 606/1108/674 613/1105/674 600/1107/674 -f 593/1109/673 611/1102/673 609/1104/673 -f 594/1071/668 595/1078/668 596/1072/668 -f 598/1074/669 597/1083/669 601/1075/669 -f 594/1071/670 602/1103/670 603/1077/670 -f 604/1079/670 605/1090/670 602/1080/670 -f 590/1082/671 595/1078/671 603/1077/671 -f 592/1084/668 591/1089/668 607/1085/668 -f 602/1080/669 605/1090/669 608/1087/669 -f 591/1089/672 599/1110/672 605/1090/672 -f 596/1072/672 610/1098/672 601/1091/672 -f 593/1093/673 609/1088/673 608/1087/673 -f 612/1095/671 608/1111/671 613/1096/671 -f 610/1097/674 606/1112/674 600/1076/674 -f 595/1078/676 590/1082/676 610/1098/676 -f 612/1095/668 604/1079/668 594/1081/668 -f 607/1085/675 591/1089/675 604/1079/675 -f 610/1098/668 590/1082/668 592/1100/668 -f 611/1102/669 603/1077/669 602/1103/669 -f 605/1090/669 599/1110/669 613/1105/669 -f 601/1075/669 597/1083/669 603/1077/669 -f 613/1105/669 599/1110/669 598/1106/669 -f 606/1108/674 607/1113/674 613/1105/674 -f 593/1109/673 596/1114/673 611/1102/673 -f 592/1084/677 598/1106/677 591/1089/677 -f 592/1084/677 590/1082/677 597/1083/677 -f 598/1106/677 599/1110/677 591/1089/677 -f 592/1084/677 597/1083/677 598/1106/677 +f 598/1075/668 600/1076/668 597/1077/668 +f 602/1078/669 605/1079/669 604/1080/669 +f 598/1075/670 607/1081/670 599/1082/670 +f 608/1083/670 606/1084/670 598/1085/670 +f 594/1086/671 607/1081/671 601/1087/671 +f 596/1088/668 611/1089/668 610/1090/668 +f 606/1084/669 612/1091/669 613/1092/669 +f 595/1093/672 609/1094/672 608/1083/672 +f 600/1076/672 605/1095/672 615/1096/672 +f 597/1097/673 612/1091/673 616/1098/673 +f 616/1099/671 617/1100/671 611/1089/671 +f 614/1101/674 604/1080/674 605/1079/674 +f 599/1082/675 614/1102/675 600/1076/675 +f 616/1099/668 598/1085/668 597/1103/668 +f 611/1089/676 608/1083/676 616/1099/676 +f 614/1102/668 596/1104/668 610/1105/668 +f 615/1106/669 606/1107/669 613/1108/669 +f 609/1094/669 617/1109/669 612/1091/669 +f 605/1079/669 607/1081/669 615/1106/669 +f 617/1109/669 602/1110/669 604/1111/669 +f 610/1112/674 617/1109/674 604/1111/674 +f 597/1113/673 615/1106/673 613/1108/673 +f 598/1075/668 599/1082/668 600/1076/668 +f 602/1078/669 601/1087/669 605/1079/669 +f 598/1075/670 606/1107/670 607/1081/670 +f 608/1083/670 609/1094/670 606/1084/670 +f 594/1086/671 599/1082/671 607/1081/671 +f 596/1088/668 595/1093/668 611/1089/668 +f 606/1084/669 609/1094/669 612/1091/669 +f 595/1093/672 603/1114/672 609/1094/672 +f 600/1076/672 614/1102/672 605/1095/672 +f 597/1097/673 613/1092/673 612/1091/673 +f 616/1099/671 612/1115/671 617/1100/671 +f 614/1101/674 610/1116/674 604/1080/674 +f 599/1082/676 594/1086/676 614/1102/676 +f 616/1099/668 608/1083/668 598/1085/668 +f 611/1089/675 595/1093/675 608/1083/675 +f 614/1102/668 594/1086/668 596/1104/668 +f 615/1106/669 607/1081/669 606/1107/669 +f 609/1094/669 603/1114/669 617/1109/669 +f 605/1079/669 601/1087/669 607/1081/669 +f 617/1109/669 603/1114/669 602/1110/669 +f 610/1112/674 611/1117/674 617/1109/674 +f 597/1113/673 600/1118/673 615/1106/673 +f 596/1088/677 602/1110/677 595/1093/677 +f 596/1088/677 594/1086/677 601/1087/677 +f 602/1110/677 603/1114/677 595/1093/677 +f 596/1088/677 601/1087/677 602/1110/677 o Loop v 0.406256 1.125653 3.483772 v 0.372781 1.206173 3.302696 @@ -3647,149 +3657,149 @@ vn -0.7060 0.2714 -0.6541 vn -0.7060 0.2715 0.6542 vn -0.4343 -0.3822 0.8157 vn -0.2163 -0.9063 0.3630 -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.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.187482 0.621036 +vt 0.156855 0.629655 +vt 0.154582 0.621037 +vt 0.181530 0.637775 +vt 0.160534 0.637775 +vt 0.181530 0.646689 +vt 0.160534 0.646689 +vt 0.156855 0.654809 +vt 0.187482 0.663428 +vt 0.154582 0.663428 +vt 0.208478 0.621036 +vt 0.177852 0.629655 +vt 0.175578 0.621036 +vt 0.202527 0.637775 +vt 0.202527 0.646689 +vt 0.177852 0.654809 +vt 0.208479 0.663427 +vt 0.175579 0.663428 +vt 0.229475 0.621036 +vt 0.198848 0.629655 +vt 0.196575 0.621036 +vt 0.227202 0.629655 +vt 0.223523 0.646689 +vt 0.198849 0.654809 +vt 0.229475 0.663427 +vt 0.196575 0.663428 +vt 0.250472 0.621036 +vt 0.219845 0.629655 +vt 0.217572 0.621036 +vt 0.248198 0.629655 +vt 0.223523 0.637775 +vt 0.244520 0.637775 +vt 0.244520 0.646689 +vt 0.219845 0.654808 +vt 0.250472 0.663427 +vt 0.217572 0.663427 +vt 0.238569 0.621036 +vt 0.269195 0.629655 +vt 0.240842 0.629655 +vt 0.265517 0.637775 +vt 0.269195 0.654809 +vt 0.240842 0.654808 +vt 0.238568 0.663427 +vt 0.259565 0.621036 +vt 0.290192 0.629655 +vt 0.261838 0.629655 +vt 0.286513 0.637775 +vt 0.265517 0.646689 +vt 0.290191 0.654809 +vt 0.261838 0.654808 +vt 0.259565 0.663427 +vt 0.280562 0.621036 +vt 0.311188 0.629655 +vt 0.282835 0.629655 +vt 0.307510 0.637775 +vt 0.286513 0.646689 +vt 0.311188 0.654809 +vt 0.282835 0.654809 +vt 0.280561 0.663428 +vt 0.185209 0.629655 +vt 0.185209 0.654809 +vt 0.206205 0.629655 +vt 0.206205 0.654809 +vt 0.227202 0.654808 +vt 0.248198 0.654808 +vt 0.271468 0.621036 +vt 0.271468 0.663428 +vt 0.292465 0.621036 +vt 0.292465 0.663428 +vt 0.313461 0.621037 +vt 0.307510 0.646689 +vt 0.313461 0.663428 s 0 -f 615/1115/678 617/1116/678 614/1117/678 -f 617/1116/679 618/1118/679 619/1119/679 -f 619/1119/680 620/1120/680 621/1121/680 -f 620/1120/681 623/1122/681 621/1121/681 -f 623/1122/682 615/1123/682 614/1124/682 -f 624/1125/683 616/1126/683 615/1127/683 -f 616/1126/684 626/1128/684 618/1118/684 -f 618/1118/685 627/1129/685 620/1120/685 -f 627/1129/686 622/1130/686 620/1120/686 -f 622/1130/687 624/1131/687 615/1132/687 -f 629/1133/688 625/1134/688 624/1135/688 -f 630/1136/689 626/1128/689 625/1134/689 -f 626/1128/690 632/1137/690 627/1129/690 -f 632/1137/691 628/1138/691 627/1129/691 -f 628/1138/692 629/1139/692 624/1140/692 -f 634/1141/693 630/1142/693 629/1143/693 -f 635/1144/694 631/1145/694 630/1142/694 -f 636/1146/695 632/1137/695 631/1145/695 -f 637/1147/696 633/1148/696 632/1137/696 -f 633/1148/697 634/1149/697 629/1150/697 -f 634/1151/698 640/1152/698 635/1153/698 -f 635/1153/699 641/1154/699 636/1146/699 -f 641/1154/700 637/1147/700 636/1146/700 -f 637/1147/701 643/1155/701 638/1156/701 -f 643/1155/702 634/1157/702 638/1156/702 -f 639/1158/703 645/1159/703 640/1160/703 -f 645/1159/704 641/1154/704 640/1160/704 -f 646/1161/705 642/1162/705 641/1154/705 -f 642/1162/706 648/1163/706 643/1164/706 -f 648/1163/707 639/1165/707 643/1164/707 -f 644/1166/708 617/1167/708 645/1168/708 -f 617/1167/709 646/1161/709 645/1168/709 -f 619/1169/710 647/1170/710 646/1161/710 -f 647/1170/711 623/1171/711 648/1172/711 -f 623/1171/712 644/1173/712 648/1172/712 -f 615/1115/678 616/1174/678 617/1116/678 -f 617/1116/679 616/1174/679 618/1118/679 -f 619/1119/680 618/1118/680 620/1120/680 -f 620/1120/681 622/1175/681 623/1122/681 -f 623/1122/682 622/1175/682 615/1123/682 -f 624/1125/683 625/1176/683 616/1126/683 -f 616/1126/684 625/1176/684 626/1128/684 -f 618/1118/685 626/1128/685 627/1129/685 -f 627/1129/686 628/1177/686 622/1130/686 -f 622/1130/687 628/1177/687 624/1131/687 -f 629/1133/688 630/1136/688 625/1134/688 -f 630/1136/689 631/1145/689 626/1128/689 -f 626/1128/713 631/1145/713 632/1137/713 -f 632/1137/691 633/1178/691 628/1138/691 -f 628/1138/714 633/1178/714 629/1139/714 -f 634/1141/693 635/1144/693 630/1142/693 -f 635/1144/694 636/1146/694 631/1145/694 -f 636/1146/695 637/1147/695 632/1137/695 -f 637/1147/696 638/1179/696 633/1148/696 -f 633/1148/697 638/1179/697 634/1149/697 -f 634/1151/698 639/1180/698 640/1152/698 -f 635/1153/699 640/1152/699 641/1154/699 -f 641/1154/700 642/1162/700 637/1147/700 -f 637/1147/701 642/1162/701 643/1155/701 -f 643/1155/715 639/1181/715 634/1157/715 -f 639/1158/703 644/1182/703 645/1159/703 -f 645/1159/704 646/1161/704 641/1154/704 -f 646/1161/705 647/1170/705 642/1162/705 -f 642/1162/706 647/1170/706 648/1163/706 -f 648/1163/716 644/1183/716 639/1165/716 -f 644/1166/708 614/1184/708 617/1167/708 -f 617/1167/709 619/1169/709 646/1161/709 -f 619/1169/710 621/1185/710 647/1170/710 -f 647/1170/711 621/1185/711 623/1171/711 -f 623/1171/717 614/1186/717 644/1173/717 +f 619/1119/678 621/1120/678 618/1121/678 +f 621/1120/679 622/1122/679 623/1123/679 +f 623/1123/680 624/1124/680 625/1125/680 +f 624/1124/681 627/1126/681 625/1125/681 +f 627/1126/682 619/1127/682 618/1128/682 +f 628/1129/683 620/1130/683 619/1131/683 +f 620/1130/684 630/1132/684 622/1122/684 +f 622/1122/685 631/1133/685 624/1124/685 +f 631/1133/686 626/1134/686 624/1124/686 +f 626/1134/687 628/1135/687 619/1136/687 +f 633/1137/688 629/1138/688 628/1139/688 +f 634/1140/689 630/1132/689 629/1138/689 +f 630/1132/690 636/1141/690 631/1133/690 +f 636/1141/691 632/1142/691 631/1133/691 +f 632/1142/692 633/1143/692 628/1144/692 +f 638/1145/693 634/1146/693 633/1147/693 +f 639/1148/694 635/1149/694 634/1146/694 +f 640/1150/695 636/1141/695 635/1149/695 +f 641/1151/696 637/1152/696 636/1141/696 +f 637/1152/697 638/1153/697 633/1154/697 +f 638/1155/698 644/1156/698 639/1157/698 +f 639/1157/699 645/1158/699 640/1150/699 +f 645/1158/700 641/1151/700 640/1150/700 +f 641/1151/701 647/1159/701 642/1160/701 +f 647/1159/702 638/1161/702 642/1160/702 +f 643/1162/703 649/1163/703 644/1164/703 +f 649/1163/704 645/1158/704 644/1164/704 +f 650/1165/705 646/1166/705 645/1158/705 +f 646/1166/706 652/1167/706 647/1168/706 +f 652/1167/707 643/1169/707 647/1168/707 +f 648/1170/708 621/1171/708 649/1172/708 +f 621/1171/709 650/1165/709 649/1172/709 +f 623/1173/710 651/1174/710 650/1165/710 +f 651/1174/711 627/1175/711 652/1176/711 +f 627/1175/712 648/1177/712 652/1176/712 +f 619/1119/678 620/1178/678 621/1120/678 +f 621/1120/679 620/1178/679 622/1122/679 +f 623/1123/680 622/1122/680 624/1124/680 +f 624/1124/681 626/1179/681 627/1126/681 +f 627/1126/682 626/1179/682 619/1127/682 +f 628/1129/683 629/1180/683 620/1130/683 +f 620/1130/684 629/1180/684 630/1132/684 +f 622/1122/685 630/1132/685 631/1133/685 +f 631/1133/686 632/1181/686 626/1134/686 +f 626/1134/687 632/1181/687 628/1135/687 +f 633/1137/688 634/1140/688 629/1138/688 +f 634/1140/689 635/1149/689 630/1132/689 +f 630/1132/713 635/1149/713 636/1141/713 +f 636/1141/691 637/1182/691 632/1142/691 +f 632/1142/714 637/1182/714 633/1143/714 +f 638/1145/693 639/1148/693 634/1146/693 +f 639/1148/694 640/1150/694 635/1149/694 +f 640/1150/695 641/1151/695 636/1141/695 +f 641/1151/696 642/1183/696 637/1152/696 +f 637/1152/697 642/1183/697 638/1153/697 +f 638/1155/698 643/1184/698 644/1156/698 +f 639/1157/699 644/1156/699 645/1158/699 +f 645/1158/700 646/1166/700 641/1151/700 +f 641/1151/701 646/1166/701 647/1159/701 +f 647/1159/715 643/1185/715 638/1161/715 +f 643/1162/703 648/1186/703 649/1163/703 +f 649/1163/704 650/1165/704 645/1158/704 +f 650/1165/705 651/1174/705 646/1166/705 +f 646/1166/706 651/1174/706 652/1167/706 +f 652/1167/716 648/1187/716 643/1169/716 +f 648/1170/708 618/1188/708 621/1171/708 +f 621/1171/709 623/1173/709 650/1165/709 +f 623/1173/710 625/1189/710 651/1174/710 +f 651/1174/711 625/1189/711 627/1175/711 +f 627/1175/717 618/1190/717 648/1177/717 o GuardOuter v -0.171766 0.857316 0.902020 v -0.171766 0.884188 0.902020 @@ -3821,105 +3831,104 @@ vn -0.0000 1.0000 -0.0000 vn -0.0000 -0.0000 1.0000 vn -1.0000 -0.0000 -0.0000 vn 1.0000 -0.0000 -0.0000 -vt 0.107481 0.515568 -vt 0.100711 0.826566 -vt 0.100711 0.515568 -vt 0.200617 0.674832 -vt 0.204562 0.504617 -vt 0.204562 0.674832 -vt 0.189902 0.504617 -vt 0.196672 0.515568 -vt 0.189902 0.515568 -vt 0.196672 0.690063 -vt 0.200617 0.519848 -vt 0.200617 0.690063 -vt 0.025060 0.515568 -vt 0.100711 0.504617 -vt 0.114251 0.515568 -vt 0.002510 0.987540 -vt 0.006455 0.971113 -vt 0.006455 0.987540 -vt 0.006455 0.521044 -vt 0.010401 0.504617 -vt 0.010401 0.521044 -vt 0.107481 0.504617 -vt 0.114251 0.504617 -vt 0.196672 0.705295 -vt 0.018291 0.504617 -vt 0.025060 0.504617 -vt 0.010401 0.971113 -vt 0.014346 0.504617 -vt 0.014346 0.971113 -vt 0.196672 0.519848 -vt 0.200617 0.504617 -vt 0.196672 0.735759 -vt 0.200617 0.720527 -vt 0.200617 0.735759 -vt 0.200617 0.705295 -vt 0.196672 0.720527 -vt 0.002510 0.971113 -vt 0.006455 0.504617 -vt 0.018291 0.826566 -vt 0.018291 0.515568 -vt 0.006455 0.987540 -vt 0.018291 0.504617 -vt 0.014346 0.504617 -vt 0.107481 0.826566 -vt 0.189902 0.826566 -vt 0.200617 0.504617 -vt 0.196672 0.504617 -vt 0.010401 0.504617 -vt 0.002510 0.504617 -vt 0.025060 0.826566 -vt 0.010401 0.987540 -vt 0.018291 0.971113 -vt 0.114251 0.826566 -vt 0.196672 0.826566 +vt 0.107481 0.677045 +vt 0.100711 0.884377 +vt 0.100711 0.677045 +vt 0.200617 0.783221 +vt 0.204562 0.669744 +vt 0.204562 0.783221 +vt 0.189902 0.669744 +vt 0.196672 0.677045 +vt 0.189902 0.677045 +vt 0.196672 0.793376 +vt 0.200617 0.679899 +vt 0.200617 0.793376 +vt 0.025060 0.677045 +vt 0.100711 0.669744 +vt 0.114251 0.677045 +vt 0.002510 0.991693 +vt 0.006455 0.980742 +vt 0.006455 0.991693 +vt 0.006455 0.680696 +vt 0.010401 0.669744 +vt 0.010401 0.680696 +vt 0.107481 0.669744 +vt 0.114251 0.669744 +vt 0.196672 0.803530 +vt 0.018291 0.669744 +vt 0.025060 0.669744 +vt 0.010401 0.980742 +vt 0.014346 0.669744 +vt 0.014346 0.980742 +vt 0.196672 0.679899 +vt 0.200617 0.669744 +vt 0.196672 0.823839 +vt 0.200617 0.813685 +vt 0.200617 0.823839 +vt 0.200617 0.803530 +vt 0.196672 0.813685 +vt 0.002510 0.980742 +vt 0.006455 0.669744 +vt 0.018291 0.884377 +vt 0.018291 0.677045 +vt 0.006455 0.991693 +vt 0.018291 0.669744 +vt 0.107481 0.884377 +vt 0.189902 0.884377 +vt 0.200617 0.669744 +vt 0.196672 0.669744 +vt 0.010401 0.669744 +vt 0.002510 0.669744 +vt 0.025060 0.884377 +vt 0.010401 0.991693 +vt 0.018291 0.980742 +vt 0.114251 0.884377 +vt 0.196672 0.884377 s 0 -f 657/1187/718 666/1188/718 651/1189/718 -f 652/1190/719 655/1191/719 651/1192/719 -f 654/1193/720 661/1194/720 656/1195/720 -f 654/1196/721 649/1197/721 653/1198/721 -f 655/1199/718 649/1200/718 651/1189/718 -f 652/1201/720 654/1193/720 656/1195/720 -f 659/1202/722 657/1203/722 658/1204/722 -f 661/1205/723 663/1206/723 662/1207/723 -f 652/1201/720 659/1208/720 650/1209/720 -f 649/1200/718 657/1187/718 651/1189/718 -f 653/1198/721 664/1210/721 654/1196/721 -f 655/1199/718 663/1211/718 653/1212/718 -f 656/1213/722 668/1214/722 655/1215/722 -f 650/1216/721 658/1217/721 649/1197/721 -f 667/1218/719 672/1219/719 668/1220/719 -f 666/1221/719 669/1222/719 665/1210/719 -f 660/1223/722 670/1224/722 657/1203/722 -f 655/1199/718 672/1225/718 662/1226/718 -f 662/1207/723 671/1227/723 661/1205/723 -f 651/1228/723 665/1215/723 652/1229/723 -f 652/1201/720 669/1230/720 660/1187/720 -f 661/1194/720 667/1231/720 656/1195/720 -f 657/1187/718 670/1230/718 666/1188/718 -f 652/1190/719 656/1232/719 655/1191/719 -f 654/1193/720 664/1233/720 661/1194/720 -f 654/1196/721 650/1216/721 649/1197/721 -f 655/1199/718 653/1212/718 649/1200/718 -f 652/1201/720 650/1209/720 654/1193/720 -f 659/1202/722 660/1223/722 657/1203/722 -f 661/1205/723 664/1224/723 663/1206/723 -f 652/1201/720 660/1187/720 659/1208/720 -f 649/1200/718 658/1208/718 657/1187/718 -f 653/1198/721 663/1221/721 664/1210/721 -f 655/1199/718 662/1226/718 663/1211/718 -f 656/1213/722 667/1234/722 668/1214/722 -f 650/1216/721 659/1233/721 658/1217/721 -f 667/1218/719 671/1222/719 672/1219/719 -f 666/1221/719 670/1219/719 669/1222/719 -f 660/1223/722 669/1235/722 670/1224/722 -f 655/1199/718 668/1236/718 672/1225/718 -f 662/1207/723 672/1237/723 671/1227/723 -f 651/1228/723 666/1238/723 665/1215/723 -f 652/1201/720 665/1239/720 669/1230/720 -f 661/1194/720 671/1240/720 667/1231/720 +f 661/1191/718 670/1192/718 655/1193/718 +f 656/1194/719 659/1195/719 655/1196/719 +f 658/1197/720 665/1198/720 660/1199/720 +f 658/1200/721 653/1201/721 657/1202/721 +f 659/1203/718 653/1204/718 655/1193/718 +f 656/1205/720 658/1197/720 660/1199/720 +f 663/1206/722 661/1207/722 662/1208/722 +f 665/1209/723 667/1210/723 666/1211/723 +f 656/1205/720 663/1212/720 654/1213/720 +f 653/1204/718 661/1191/718 655/1193/718 +f 657/1202/721 668/1214/721 658/1200/721 +f 659/1203/718 667/1215/718 657/1216/718 +f 660/1217/722 672/1218/722 659/1219/722 +f 654/1220/721 662/1221/721 653/1201/721 +f 671/1222/719 676/1223/719 672/1224/719 +f 670/1225/719 673/1226/719 669/1214/719 +f 664/1227/722 674/1228/722 661/1207/722 +f 659/1203/718 676/1229/718 666/1230/718 +f 666/1211/723 675/1231/723 665/1209/723 +f 655/1232/723 669/1219/723 656/1218/723 +f 656/1205/720 673/1233/720 664/1191/720 +f 665/1198/720 671/1234/720 660/1199/720 +f 661/1191/718 674/1233/718 670/1192/718 +f 656/1194/719 660/1235/719 659/1195/719 +f 658/1197/720 668/1236/720 665/1198/720 +f 658/1200/721 654/1220/721 653/1201/721 +f 659/1203/718 657/1216/718 653/1204/718 +f 656/1205/720 654/1213/720 658/1197/720 +f 663/1206/722 664/1227/722 661/1207/722 +f 665/1209/723 668/1228/723 667/1210/723 +f 656/1205/720 664/1191/720 663/1212/720 +f 653/1204/718 662/1212/718 661/1191/718 +f 657/1202/721 667/1225/721 668/1214/721 +f 659/1203/718 666/1230/718 667/1215/718 +f 660/1217/722 671/1237/722 672/1218/722 +f 654/1220/721 663/1236/721 662/1221/721 +f 671/1222/719 675/1226/719 676/1223/719 +f 670/1225/719 674/1223/719 673/1226/719 +f 664/1227/722 673/1238/722 674/1228/722 +f 659/1203/718 672/1239/718 676/1229/718 +f 666/1211/723 676/1240/723 675/1231/723 +f 655/1232/723 670/1241/723 669/1219/723 +f 656/1205/720 669/1242/720 673/1233/720 +f 665/1198/720 675/1243/720 671/1234/720 o GuardInner v 0.161860 0.857316 -0.061518 v 0.161860 0.884188 -0.061518 @@ -3938,8 +3947,8 @@ v -0.057255 0.857316 0.852620 v -0.057255 0.884188 0.852620 v 0.057255 0.884188 0.852620 v 0.161860 0.857316 0.844969 -v -0.161860 0.857316 0.844969 -v -0.161860 0.884188 0.844969 +v -0.161859 0.857316 0.844969 +v -0.161859 0.884188 0.844969 v 0.161860 0.884188 0.844969 vn -0.0000 1.0000 -0.0000 vn 1.0000 -0.0000 -0.0000 @@ -3997,40 +4006,40 @@ vt 0.163307 0.731201 vt 0.176815 0.737326 vt 0.228731 0.981424 s 0 -f 688/1241/724 682/1242/724 687/1243/724 -f 673/1244/725 692/1245/725 689/1246/725 -f 690/1247/726 683/1248/726 686/1249/726 -f 676/1250/727 690/1251/727 691/1252/727 -f 692/1253/724 681/1254/724 688/1241/724 -f 682/1255/728 684/1256/728 683/1257/728 -f 674/1258/729 684/1256/729 681/1259/729 -f 675/1260/730 682/1255/730 683/1257/730 -f 680/1261/724 687/1243/724 679/1262/724 -f 686/1249/726 684/1263/726 685/1264/726 -f 679/1265/727 686/1266/727 678/1267/727 -f 678/1268/726 685/1264/726 677/1269/726 -f 677/1270/725 688/1271/725 680/1272/725 -f 684/1263/726 689/1253/726 685/1264/726 -f 682/1242/724 691/1273/724 687/1243/724 -f 689/1274/731 688/1275/731 685/1260/731 -f 687/1276/732 690/1277/732 686/1278/732 -f 688/1241/724 681/1254/724 682/1242/724 -f 673/1244/725 674/1279/725 692/1245/725 -f 690/1247/726 675/1280/726 683/1248/726 -f 676/1250/727 675/1281/727 690/1251/727 -f 692/1253/724 674/1282/724 681/1254/724 -f 682/1255/728 681/1259/728 684/1256/728 -f 674/1258/729 673/1283/729 684/1256/729 -f 675/1260/730 676/1275/730 682/1255/730 -f 680/1261/724 688/1241/724 687/1243/724 -f 686/1249/726 683/1248/726 684/1263/726 -f 679/1265/727 687/1284/727 686/1266/727 -f 678/1268/726 686/1249/726 685/1264/726 -f 677/1270/725 685/1285/725 688/1271/725 -f 684/1263/726 673/1282/726 689/1253/726 -f 682/1242/724 676/1286/724 691/1273/724 -f 689/1274/731 692/1265/731 688/1275/731 -f 687/1276/732 691/1283/732 690/1277/732 +f 692/1244/724 686/1245/724 691/1246/724 +f 677/1247/725 696/1248/725 693/1249/725 +f 694/1250/726 687/1251/726 690/1252/726 +f 680/1253/727 694/1254/727 695/1255/727 +f 696/1256/724 685/1257/724 692/1244/724 +f 686/1258/728 688/1259/728 687/1260/728 +f 678/1261/729 688/1259/729 685/1262/729 +f 679/1263/730 686/1258/730 687/1260/730 +f 684/1264/724 691/1246/724 683/1265/724 +f 690/1252/726 688/1266/726 689/1267/726 +f 683/1268/727 690/1269/727 682/1270/727 +f 682/1271/726 689/1267/726 681/1272/726 +f 681/1273/725 692/1274/725 684/1275/725 +f 688/1266/726 693/1256/726 689/1267/726 +f 686/1245/724 695/1276/724 691/1246/724 +f 693/1277/731 692/1278/731 689/1263/731 +f 691/1279/732 694/1280/732 690/1281/732 +f 692/1244/724 685/1257/724 686/1245/724 +f 677/1247/725 678/1282/725 696/1248/725 +f 694/1250/726 679/1283/726 687/1251/726 +f 680/1253/727 679/1284/727 694/1254/727 +f 696/1256/724 678/1285/724 685/1257/724 +f 686/1258/728 685/1262/728 688/1259/728 +f 678/1261/729 677/1286/729 688/1259/729 +f 679/1263/730 680/1278/730 686/1258/730 +f 684/1264/724 692/1244/724 691/1246/724 +f 690/1252/726 687/1251/726 688/1266/726 +f 683/1268/727 691/1287/727 690/1269/727 +f 682/1271/726 690/1252/726 689/1267/726 +f 681/1273/725 689/1288/725 692/1274/725 +f 688/1266/726 677/1285/726 693/1256/726 +f 686/1245/724 680/1289/724 695/1276/724 +f 693/1277/731 696/1268/731 692/1278/731 +f 691/1279/732 695/1286/732 694/1280/732 o ShellFore v 0.000000 1.558350 1.603447 v 0.132625 1.613285 1.603447 @@ -4109,43 +4118,43 @@ vt 0.290267 0.902716 vt 0.331685 0.902716 vt 0.000347 0.902716 s 0 -f 697/1287/733 704/1288/733 696/1288/733 -f 717/1289/734 693/1290/734 700/1291/734 -f 699/1292/735 708/1291/735 707/1292/735 -f 695/1293/736 702/1294/736 694/1294/736 -f 698/1295/737 705/1287/737 697/1287/737 -f 700/1291/738 701/1290/738 708/1291/738 -f 694/1294/739 701/1296/739 693/1296/739 -f 696/1288/740 703/1293/740 695/1293/740 -f 698/1295/741 707/1292/741 706/1295/741 -f 701/1297/742 702/1298/742 709/1299/742 -f 702/1298/743 703/1300/743 709/1299/743 -f 703/1300/744 704/1301/744 709/1299/744 -f 704/1301/745 705/1302/745 709/1299/745 -f 705/1302/746 706/1303/746 709/1299/746 -f 706/1303/747 707/1304/747 709/1299/747 -f 707/1304/748 708/1305/748 709/1299/748 -f 708/1305/749 701/1297/749 709/1299/749 -f 716/1306/750 700/1291/750 699/1292/750 -f 715/1307/751 699/1292/751 698/1295/751 -f 714/1308/752 698/1295/752 697/1287/752 -f 713/1309/753 697/1287/753 696/1288/753 -f 712/1310/754 696/1288/754 695/1293/754 -f 711/1311/755 695/1293/755 694/1294/755 -f 710/1312/756 694/1294/756 693/1296/756 -f 697/1287/733 705/1287/733 704/1288/733 -f 717/1289/734 710/1313/734 693/1290/734 -f 699/1292/735 700/1291/735 708/1291/735 -f 695/1293/736 703/1293/736 702/1294/736 -f 698/1295/737 706/1295/737 705/1287/737 -f 700/1291/738 693/1290/738 701/1290/738 -f 694/1294/739 702/1294/739 701/1296/739 -f 696/1288/740 704/1288/740 703/1293/740 -f 698/1295/741 699/1292/741 707/1292/741 -f 716/1306/750 717/1289/750 700/1291/750 -f 715/1307/751 716/1306/751 699/1292/751 -f 714/1308/752 715/1307/752 698/1295/752 -f 713/1309/753 714/1308/753 697/1287/753 -f 712/1310/754 713/1309/754 696/1288/754 -f 711/1311/755 712/1310/755 695/1293/755 -f 710/1312/756 711/1311/756 694/1294/756 +f 701/1290/733 708/1291/733 700/1291/733 +f 721/1292/734 697/1293/734 704/1294/734 +f 703/1295/735 712/1294/735 711/1295/735 +f 699/1296/736 706/1297/736 698/1297/736 +f 702/1298/737 709/1290/737 701/1290/737 +f 704/1294/738 705/1293/738 712/1294/738 +f 698/1297/739 705/1299/739 697/1299/739 +f 700/1291/740 707/1296/740 699/1296/740 +f 702/1298/741 711/1295/741 710/1298/741 +f 705/1300/742 706/1301/742 713/1302/742 +f 706/1301/743 707/1303/743 713/1302/743 +f 707/1303/744 708/1304/744 713/1302/744 +f 708/1304/745 709/1305/745 713/1302/745 +f 709/1305/746 710/1306/746 713/1302/746 +f 710/1306/747 711/1307/747 713/1302/747 +f 711/1307/748 712/1308/748 713/1302/748 +f 712/1308/749 705/1300/749 713/1302/749 +f 720/1309/750 704/1294/750 703/1295/750 +f 719/1310/751 703/1295/751 702/1298/751 +f 718/1311/752 702/1298/752 701/1290/752 +f 717/1312/753 701/1290/753 700/1291/753 +f 716/1313/754 700/1291/754 699/1296/754 +f 715/1314/755 699/1296/755 698/1297/755 +f 714/1315/756 698/1297/756 697/1299/756 +f 701/1290/733 709/1290/733 708/1291/733 +f 721/1292/734 714/1316/734 697/1293/734 +f 703/1295/735 704/1294/735 712/1294/735 +f 699/1296/736 707/1296/736 706/1297/736 +f 702/1298/737 710/1298/737 709/1290/737 +f 704/1294/738 697/1293/738 705/1293/738 +f 698/1297/739 706/1297/739 705/1299/739 +f 700/1291/740 708/1291/740 707/1296/740 +f 702/1298/741 703/1295/741 711/1295/741 +f 720/1309/750 721/1292/750 704/1294/750 +f 719/1310/751 720/1309/751 703/1295/751 +f 718/1311/752 719/1310/752 702/1298/752 +f 717/1312/753 718/1311/753 701/1290/753 +f 716/1313/754 717/1312/754 700/1291/754 +f 715/1314/755 716/1313/755 699/1296/755 +f 714/1315/756 715/1314/756 698/1297/756 diff --git a/src/main/resources/assets/hbm/models/weapons/fatman.obj b/src/main/resources/assets/hbm/models/weapons/fatman.obj new file mode 100644 index 000000000..95b03b9a9 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/fatman.obj @@ -0,0 +1,3404 @@ +# Blender v2.79 (sub 0) OBJ File: 'fatman.blend' +# www.blender.org +o Piston +v 0.000000 1.187500 -5.750000 +v -0.132583 1.132582 -5.750000 +v -0.187500 1.000000 -5.750000 +v -0.132583 0.867417 -5.750000 +v 0.000000 0.812500 -5.750000 +v 0.132583 0.867417 -5.750000 +v 0.187500 1.000000 -5.750000 +v 0.132583 1.132582 -5.750000 +v 0.000000 1.187500 -2.375000 +v -0.132583 1.132582 -2.375000 +v -0.187500 1.000000 -2.375000 +v -0.132583 0.867417 -2.375000 +v 0.000000 0.812500 -2.375000 +v 0.132583 0.867417 -2.375000 +v 0.187500 1.000000 -2.375000 +v 0.132583 1.132582 -2.375000 +vt 0.728571 0.690984 +vt 0.739303 0.707865 +vt 0.728571 0.724747 +vt 0.720982 0.719802 +vt 0.717839 0.707865 +vt 0.720982 0.695928 +vt 0.736160 0.695928 +vt 0.736160 0.719802 +vt 0.932143 0.724719 +vt 0.739286 0.713483 +vt 0.932143 0.713483 +vt 0.932143 0.702247 +vt 0.739286 0.691011 +vt 0.932143 0.691011 +vt 0.932143 0.769663 +vt 0.739286 0.758427 +vt 0.932143 0.758427 +vt 0.932143 0.747191 +vt 0.739286 0.735955 +vt 0.932143 0.735955 +vt 0.739286 0.724719 +vt 0.739286 0.702247 +vt 0.932143 0.780899 +vt 0.739286 0.769663 +vt 0.739286 0.747191 +vt 0.739286 0.780899 +vn 0.0000 0.0000 1.0000 +vn 0.7071 0.7071 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 13/1/1 15/2/1 9/3/1 +f 9/3/1 10/4/1 11/5/1 +f 11/5/1 12/6/1 13/1/1 +f 13/1/1 14/7/1 15/2/1 +f 15/2/1 16/8/1 9/3/1 +f 9/3/1 11/5/1 13/1/1 +s 1 +f 8/9/2 15/10/3 7/11/3 +f 6/12/4 13/13/5 5/14/5 +f 4/15/6 11/16/7 3/17/7 +f 2/18/8 9/19/9 1/20/9 +f 1/20/9 16/21/2 8/9/2 +f 7/11/3 14/22/4 6/12/4 +f 5/23/5 12/24/6 4/15/6 +f 3/17/7 10/25/8 2/18/8 +f 8/9/2 16/21/2 15/10/3 +f 6/12/4 14/22/4 13/13/5 +f 4/15/6 12/24/6 11/16/7 +f 2/18/8 10/25/8 9/19/9 +f 1/20/9 9/19/9 16/21/2 +f 7/11/3 15/10/3 14/22/4 +f 5/23/5 13/26/5 12/24/6 +f 3/17/7 11/16/7 10/25/8 +o Handle +v -0.250000 -0.500000 7.000000 +v 0.250000 -0.500000 7.000000 +v -0.250000 -0.500000 4.000000 +v 0.250000 -0.500000 4.000000 +v -0.250000 -1.500000 6.500000 +v 0.250000 -1.500000 6.500000 +v -0.250000 -1.500000 4.000000 +v 0.250000 -1.500000 4.000000 +v 0.349112 -1.088388 4.000000 +v 0.525888 -0.911612 4.000000 +v 0.304917 -1.132583 4.125000 +v 0.570083 -0.867417 4.125000 +v 1.409772 -2.149048 5.500000 +v 1.586548 -1.972272 5.500000 +v 0.304917 -1.132583 4.375000 +v 0.570083 -0.867417 4.375000 +v 0.349112 -1.088388 4.500000 +v 0.525888 -0.911612 4.500000 +v 1.409772 -2.149048 3.750000 +v 1.586548 -1.972272 3.750000 +v 1.365578 -2.193243 3.875000 +v 1.630743 -1.928078 3.875000 +v 1.586548 -1.972272 4.375000 +v 1.409772 -2.149048 4.375000 +v 1.365578 -2.193243 4.250000 +v 1.630743 -1.928078 4.250000 +v 1.409772 -2.149048 4.375000 +v 1.586548 -1.972272 4.375000 +v 1.144607 -1.883883 5.875000 +v 1.321383 -1.707107 5.875000 +v 0.349112 -1.088388 5.875000 +v 0.525888 -0.911612 5.875000 +v 1.321383 -2.060660 5.500000 +v 1.498160 -1.883883 5.500000 +v 1.498160 -1.883883 4.375000 +v 1.321383 -2.060660 4.375000 +v 1.144607 -1.883883 5.750000 +v 1.321383 -1.707107 5.750000 +v 0.349112 -1.088388 5.750000 +v 0.525888 -0.911612 5.750000 +v 0.791053 -1.530330 4.750000 +v 0.967830 -1.353553 4.750000 +v 0.349112 -1.088388 4.750000 +v 0.525888 -0.911612 4.750000 +v 0.525888 -0.911612 4.875000 +v 0.967830 -1.353553 4.875000 +v 0.791053 -1.530330 4.875000 +v 0.349112 -1.088388 4.875000 +v 1.232995 -1.972272 4.875000 +v 1.409772 -1.795495 4.875000 +v 1.232995 -1.972272 5.000000 +v 1.409772 -1.795495 5.000000 +v 0.250000 -0.625000 4.000000 +v 0.250000 -0.625000 6.500000 +v 0.250000 -1.125000 4.000000 +v 0.250000 -1.125000 6.500000 +v 0.625000 -0.625000 4.000000 +v 0.625000 -0.625000 6.500000 +v 0.625000 -1.125000 4.000000 +v 0.625000 -1.125000 6.500000 +v 0.437500 -0.562500 4.000000 +v 0.281250 -0.604367 4.000000 +v 0.166867 -0.718750 4.000000 +v 0.125000 -0.875000 4.000000 +v 0.166867 -1.031250 4.000000 +v 0.281250 -1.145633 4.000000 +v 0.437500 -1.187500 4.000000 +v 0.593750 -1.145633 4.000000 +v 0.708133 -1.031250 4.000000 +v 0.750000 -0.875000 4.000000 +v 0.708133 -0.718750 4.000000 +v 0.593750 -0.604367 4.000000 +v 0.281250 -0.604367 3.812500 +v 0.437500 -0.562500 3.812500 +v 0.166867 -0.718750 3.812500 +v 0.125000 -0.875000 3.812500 +v 0.166867 -1.031250 3.812500 +v 0.281250 -1.145633 3.812500 +v 0.437500 -1.187500 3.812500 +v 0.593750 -1.145633 3.812500 +v 0.708133 -1.031250 3.812500 +v 0.750000 -0.875000 3.812500 +v 0.708133 -0.718750 3.812500 +v 0.593750 -0.604367 3.812500 +v 0.437500 -0.625000 3.812500 +v 0.312500 -0.658494 3.812500 +v 0.220994 -0.750000 3.812500 +v 0.187500 -0.875000 3.812500 +v 0.220994 -1.000000 3.812500 +v 0.312500 -1.091507 3.812500 +v 0.437500 -1.125000 3.812500 +v 0.562500 -1.091507 3.812500 +v 0.654006 -1.000000 3.812500 +v 0.687500 -0.875000 3.812500 +v 0.654006 -0.750000 3.812500 +v 0.562500 -0.658494 3.812500 +v 0.437500 -0.625000 3.875000 +v 0.312500 -0.658494 3.875000 +v 0.220994 -0.750000 3.875000 +v 0.187500 -0.875000 3.875000 +v 0.220994 -1.000000 3.875000 +v 0.312500 -1.091507 3.875000 +v 0.437500 -1.125000 3.875000 +v 0.562500 -1.091507 3.875000 +v 0.654006 -1.000000 3.875000 +v 0.687500 -0.875000 3.875000 +v 0.654006 -0.750000 3.875000 +v 0.562500 -0.658494 3.875000 +vt 0.414286 0.601124 +vt 0.557143 0.646067 +vt 0.414286 0.646067 +vt 0.557143 0.511236 +vt 0.385714 0.511236 +vt 0.614286 0.646067 +vt 0.557143 0.601124 +vt 0.614286 0.601124 +vt 0.557143 0.735955 +vt 0.357143 0.601124 +vt 0.357143 0.646067 +vt 0.457143 0.735955 +vt 0.464286 0.741573 +vt 0.457143 0.769663 +vt 0.278571 0.696629 +vt 0.342857 0.707865 +vt 0.278571 0.707865 +vt 0.342857 0.741573 +vt 0.278571 0.730337 +vt 0.342857 0.730337 +vt 0.185714 0.696629 +vt 0.250000 0.707865 +vt 0.185714 0.707865 +vt 0.250000 0.741573 +vt 0.185714 0.730337 +vt 0.250000 0.730337 +vt 0.275000 0.696629 +vt 0.253571 0.741573 +vt 0.521429 0.859551 +vt 0.535714 0.803371 +vt 0.535714 0.859551 +vt 0.514286 0.859551 +vt 0.500000 0.803371 +vt 0.514286 0.803371 +vt 0.514286 0.735955 +vt 0.500000 0.747191 +vt 0.500000 0.735955 +vt 0.542857 0.859551 +vt 0.542857 0.803371 +vt 0.535714 0.747191 +vt 0.542857 0.747191 +vt 0.521429 0.803371 +vt 0.514286 0.747191 +vt 0.521429 0.747191 +vt 0.021429 0.730337 +vt 0.164286 0.775281 +vt 0.021429 0.775281 +vt 0.185714 0.775281 +vt 0.164286 0.730337 +vt 0.185714 0.730337 +vt 0.164286 0.696629 +vt 0.021429 0.696629 +vt 0.000000 0.730337 +vt 0.000000 0.775281 +vt 0.021429 0.808989 +vt 0.164286 0.808989 +vt 0.763088 0.570208 +vt 0.778571 0.556147 +vt 0.794054 0.570208 +vt 0.753571 0.556180 +vt 0.757143 0.567416 +vt 0.753571 0.567416 +vt 0.757143 0.679775 +vt 0.753571 0.691011 +vt 0.753571 0.679775 +vt 0.753571 0.668539 +vt 0.753571 0.657303 +vt 0.757143 0.668539 +vt 0.757143 0.646067 +vt 0.753571 0.646067 +vt 0.757143 0.634831 +vt 0.753571 0.634831 +vt 0.757143 0.623595 +vt 0.753571 0.623595 +vt 0.753571 0.612360 +vt 0.757143 0.601124 +vt 0.753571 0.601124 +vt 0.753571 0.589888 +vt 0.757143 0.578652 +vt 0.753571 0.578652 +vt 0.762623 0.646072 +vt 0.775000 0.612350 +vt 0.787377 0.646072 +vt 0.385714 0.735955 +vt 0.464286 0.764045 +vt 0.435714 0.769663 +vt 0.435714 0.735955 +vt 0.428571 0.764045 +vt 0.428571 0.741573 +vt 0.342857 0.696629 +vt 0.278571 0.741573 +vt 0.250000 0.696629 +vt 0.185714 0.741573 +vt 0.253571 0.696629 +vt 0.275000 0.741573 +vt 0.500000 0.859551 +vt 0.778571 0.612393 +vt 0.769632 0.608625 +vt 0.763088 0.598331 +vt 0.760693 0.584270 +vt 0.769632 0.559915 +vt 0.787510 0.559915 +vt 0.796449 0.584270 +vt 0.794054 0.598331 +vt 0.787510 0.608625 +vt 0.757143 0.556180 +vt 0.757143 0.691011 +vt 0.757143 0.657303 +vt 0.757143 0.612360 +vt 0.757143 0.589888 +vt 0.782146 0.654301 +vt 0.775000 0.657312 +vt 0.767854 0.654301 +vt 0.760709 0.634831 +vt 0.762623 0.623591 +vt 0.767855 0.615362 +vt 0.782146 0.615362 +vt 0.787377 0.623591 +vt 0.789292 0.634831 +vt 0.428571 0.769663 +vt 0.435714 0.904494 +vt 0.428571 0.904494 +vt 0.464286 0.904494 +vt 0.464286 0.769663 +vt 0.478571 0.904494 +vt 0.485714 0.769663 +vt 0.485714 0.904494 +vt 0.414286 0.769663 +vt 0.407143 0.904494 +vt 0.414286 0.904494 +vt 0.450000 0.904494 +vt 0.392857 0.904494 +vt 0.407143 0.769663 +vt 0.278571 0.764045 +vt 0.275000 0.764045 +vt 0.253571 0.764045 +vt 0.250000 0.764045 +vt 0.185714 0.764045 +vt 0.742857 0.567416 +vt 0.742857 0.668539 +vt 0.742857 0.601124 +vt 0.742857 0.612360 +vt 0.742857 0.623595 +vt 0.742857 0.634831 +vt 0.742857 0.578652 +vt 0.742857 0.679775 +vt 0.742857 0.646067 +vt 0.742857 0.589888 +vt 0.742857 0.691011 +vt 0.742857 0.657303 +vt 0.760714 0.679775 +vt 0.760714 0.623595 +vt 0.760714 0.646067 +vt 0.760714 0.589888 +vt 0.760714 0.691011 +vt 0.760714 0.657303 +vt 0.760714 0.601124 +vt 0.760714 0.567416 +vt 0.760714 0.668539 +vt 0.760714 0.612360 +vt 0.760714 0.634831 +vt 0.760714 0.578652 +vt 0.457143 0.904494 +vt 0.478571 0.769663 +vt 0.385714 0.769663 +vt 0.342857 0.764045 +vt 0.742857 0.556180 +vt 0.760714 0.556180 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.4472 0.8944 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.0000 0.0000 1.0000 +vn -0.1387 0.1387 0.9806 +vn 0.1387 -0.1387 -0.9806 +vn 0.0000 1.0000 0.0000 +vn 0.4294 0.3303 0.8405 +vn 0.7003 0.6719 0.2412 +vn 0.4127 0.3119 0.8558 +vn 0.6533 -0.6533 0.3827 +vn 0.2892 0.4839 -0.8260 +vn 0.6539 0.7133 -0.2521 +vn 0.2508 0.4525 -0.8557 +vn -0.4839 -0.2892 -0.8260 +vn -0.7133 -0.6539 -0.2521 +vn -0.7158 -0.6671 -0.2065 +vn -0.3303 -0.4294 0.8405 +vn -0.6719 -0.7003 0.2412 +vn -0.3119 -0.4127 0.8558 +vn 0.6671 0.7158 -0.2065 +vn 0.7028 0.6771 0.2181 +vn -0.6771 -0.7028 0.2181 +vn 0.2706 -0.2706 0.9239 +vn -0.7071 0.7071 0.0000 +vn -0.6533 0.6533 -0.3827 +vn -0.2706 0.2706 -0.9239 +vn 0.5000 -0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.8660 0.5000 -0.0000 +vn 0.5000 0.8660 -0.0000 +vn -0.5000 0.8660 -0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.8660 0.5000 -0.0000 +vn -0.4525 -0.2508 -0.8557 +s off +f 21/27/10 24/28/10 22/29/10 +f 19/30/11 21/27/11 17/31/11 +f 20/32/12 23/33/12 19/34/12 +f 20/35/13 22/29/13 24/28/13 +f 17/36/14 22/29/14 18/37/14 +f 37/38/15 35/39/15 38/40/15 +f 49/41/16 40/42/16 29/43/16 +f 51/44/17 30/45/17 39/46/17 +f 55/47/16 45/48/16 47/49/16 +f 54/50/17 48/51/17 46/52/17 +f 45/48/16 49/53/16 29/43/16 +f 30/45/17 54/54/17 46/52/17 +f 60/55/12 57/56/12 59/57/12 +f 61/58/18 63/59/18 62/60/18 +f 66/61/15 67/62/15 65/63/15 +f 57/56/16 64/64/16 59/57/16 +f 63/65/16 65/66/16 67/67/16 +f 60/55/17 62/60/17 58/68/17 +f 62/60/19 67/62/19 68/69/19 +f 58/68/20 65/66/20 57/56/20 +f 62/60/17 66/70/17 58/68/17 +f 76/71/13 73/72/13 74/73/13 +f 69/74/12 75/75/12 71/76/12 +f 71/77/10 76/71/10 72/78/10 +f 72/79/18 74/73/18 70/80/18 +f 70/81/21 73/72/21 69/82/21 +f 81/83/18 83/84/18 85/85/18 +f 95/86/12 108/87/12 96/88/12 +f 106/89/12 95/90/12 94/91/12 +f 93/92/12 106/89/12 94/91/12 +f 92/93/12 105/94/12 93/92/12 +f 103/95/12 92/93/12 91/96/12 +f 102/97/12 91/96/12 89/98/12 +f 101/99/12 89/98/12 90/100/12 +f 100/101/12 101/99/12 90/100/12 +f 111/102/12 100/101/12 99/103/12 +f 98/104/12 111/102/12 99/103/12 +f 109/105/12 98/104/12 97/106/12 +f 108/87/12 97/106/12 96/88/12 +f 123/107/12 119/108/12 115/109/12 +f 21/27/10 23/33/10 24/28/10 +f 19/30/11 23/33/11 21/27/11 +f 20/32/12 24/28/12 23/33/12 +f 20/35/13 18/110/13 22/29/13 +f 17/36/14 21/27/14 22/29/14 +f 35/39/15 36/111/15 38/40/15 +f 38/40/15 42/112/15 41/113/15 +f 42/112/15 44/114/15 41/113/15 +f 44/114/15 43/115/15 41/113/15 +f 41/113/15 37/38/15 38/40/15 +f 49/41/16 52/116/16 40/42/16 +f 51/44/17 50/117/17 30/45/17 +f 55/47/16 53/118/16 45/48/16 +f 54/50/17 56/119/17 48/51/17 +f 45/48/16 53/120/16 49/53/16 +f 30/45/17 50/121/17 54/54/17 +f 60/55/12 58/68/12 57/56/12 +f 61/58/18 64/122/18 63/59/18 +f 66/61/15 68/69/15 67/62/15 +f 57/56/16 63/65/16 64/64/16 +f 63/65/16 57/56/16 65/66/16 +f 60/55/17 61/58/17 62/60/17 +f 62/60/19 63/59/19 67/62/19 +f 58/68/20 66/70/20 65/66/20 +f 62/60/17 68/69/17 66/70/17 +f 76/71/13 75/75/13 73/72/13 +f 69/74/12 73/72/12 75/75/12 +f 71/77/10 75/75/10 76/71/10 +f 72/79/18 76/71/18 74/73/18 +f 70/81/21 74/73/21 73/72/21 +f 77/123/18 78/124/18 79/125/18 +f 79/125/18 80/126/18 81/83/18 +f 81/83/18 82/127/18 83/84/18 +f 83/84/18 84/128/18 85/85/18 +f 85/85/18 86/129/18 87/130/18 +f 87/130/18 88/131/18 85/85/18 +f 88/131/18 77/123/18 85/85/18 +f 77/123/18 79/125/18 85/85/18 +f 79/125/18 81/83/18 85/85/18 +f 95/86/12 107/132/12 108/87/12 +f 106/89/12 107/133/12 95/90/12 +f 93/92/12 105/94/12 106/89/12 +f 92/93/12 104/134/12 105/94/12 +f 103/95/12 104/134/12 92/93/12 +f 102/97/12 103/95/12 91/96/12 +f 101/99/12 102/97/12 89/98/12 +f 100/101/12 112/135/12 101/99/12 +f 111/102/12 112/135/12 100/101/12 +f 98/104/12 110/136/12 111/102/12 +f 109/105/12 110/136/12 98/104/12 +f 108/87/12 109/105/12 97/106/12 +f 115/109/12 114/137/12 123/107/12 +f 114/137/12 113/138/12 123/107/12 +f 113/138/12 124/139/12 123/107/12 +f 123/107/12 122/140/12 119/108/12 +f 122/140/12 121/141/12 119/108/12 +f 121/141/12 120/142/12 119/108/12 +f 119/108/12 118/143/12 117/144/12 +f 117/144/12 116/145/12 119/108/12 +f 116/145/12 115/109/12 119/108/12 +s 1 +f 44/146/22 32/147/23 34/148/24 +f 30/45/25 40/42/15 39/46/15 +f 26/149/26 38/40/27 36/150/28 +f 25/151/29 37/152/30 27/153/31 +f 34/148/24 43/154/32 44/146/22 +f 36/150/28 25/151/29 26/149/26 +f 31/155/33 43/154/32 33/156/34 +f 28/157/35 42/112/36 38/40/27 +f 27/158/31 41/159/37 31/155/33 +f 46/52/38 29/43/25 30/45/25 +f 48/51/18 45/48/38 46/52/38 +f 51/44/39 49/160/40 50/117/40 +f 54/54/41 49/161/40 53/162/41 +f 56/119/12 53/163/41 55/164/12 +f 84/165/42 95/86/10 96/88/42 +f 81/166/43 92/93/11 93/92/43 +f 87/167/44 100/101/45 88/168/45 +f 77/169/21 89/98/46 78/170/46 +f 84/165/42 97/106/47 85/171/47 +f 81/166/43 94/91/48 82/172/48 +f 88/168/45 90/100/21 77/169/21 +f 79/173/49 89/98/46 91/96/49 +f 85/171/47 98/104/13 86/174/13 +f 83/175/10 94/91/48 95/90/10 +f 80/176/11 91/96/49 92/93/11 +f 86/174/13 99/103/44 87/167/44 +f 105/94/44 118/177/45 106/89/45 +f 112/135/48 113/178/10 101/99/10 +f 102/97/42 115/179/47 103/95/47 +f 109/105/49 122/180/11 110/136/11 +f 106/89/45 119/181/21 107/133/21 +f 103/95/47 116/182/13 104/134/13 +f 110/136/11 123/183/43 111/102/43 +f 107/132/21 120/184/46 108/87/46 +f 104/134/13 117/185/44 105/94/44 +f 111/102/43 124/186/48 112/135/48 +f 101/99/10 114/187/42 102/97/42 +f 108/87/46 121/188/49 109/105/49 +f 44/146/22 42/112/36 32/147/23 +f 30/45/25 29/43/25 40/42/15 +f 26/149/26 28/189/35 38/40/27 +f 25/151/29 35/190/50 37/152/30 +f 34/148/24 33/156/34 43/154/32 +f 36/150/28 35/190/50 25/151/29 +f 31/155/33 41/159/37 43/154/32 +f 28/157/35 32/147/23 42/112/36 +f 27/158/31 37/191/30 41/159/37 +f 46/52/38 45/48/38 29/43/25 +f 48/51/18 47/49/18 45/48/38 +f 51/44/39 52/192/39 49/160/40 +f 54/54/41 50/121/40 49/161/40 +f 56/119/12 54/50/41 53/163/41 +f 84/165/42 83/193/10 95/86/10 +f 81/166/43 80/176/11 92/93/11 +f 87/167/44 99/103/44 100/101/45 +f 77/169/21 90/100/21 89/98/46 +f 84/165/42 96/88/42 97/106/47 +f 81/166/43 93/92/43 94/91/48 +f 88/168/45 100/101/45 90/100/21 +f 79/173/49 78/170/46 89/98/46 +f 85/171/47 97/106/47 98/104/13 +f 83/175/10 82/172/48 94/91/48 +f 80/176/11 79/173/49 91/96/49 +f 86/174/13 98/104/13 99/103/44 +f 105/94/44 117/185/44 118/177/45 +f 112/135/48 124/186/48 113/178/10 +f 102/97/42 114/187/42 115/179/47 +f 109/105/49 121/188/49 122/180/11 +f 106/89/45 118/177/45 119/181/21 +f 103/95/47 115/179/47 116/182/13 +f 110/136/11 122/180/11 123/183/43 +f 107/132/21 119/194/21 120/184/46 +f 104/134/13 116/182/13 117/185/44 +f 111/102/43 123/183/43 124/186/48 +f 101/99/10 113/178/10 114/187/42 +f 108/87/46 120/184/46 121/188/49 +o Gauge +v 0.437500 -0.830806 3.875000 +v 0.393306 -0.875000 3.875000 +v 0.592180 -1.029680 3.875000 +v 0.437500 -0.830806 3.812500 +v 0.393306 -0.875000 3.812500 +v 0.592180 -1.029680 3.812500 +vt 0.689286 0.674157 +vt 0.689286 0.696629 +vt 0.685714 0.674157 +vt 0.685714 0.668539 +vt 0.671429 0.674157 +vt 0.671429 0.668539 +vt 0.703571 0.668539 +vt 0.689286 0.668539 +vt 0.703571 0.674157 +vn 0.0000 0.0000 -1.0000 +vn -0.6139 -0.7894 0.0000 +vn 0.7894 0.6139 0.0000 +vn -0.7071 0.7071 0.0000 +s off +f 128/195/51 130/196/51 129/197/51 +f 126/198/52 130/199/52 127/200/52 +f 127/201/53 128/195/53 125/202/53 +f 125/202/54 129/197/54 126/198/54 +f 126/198/52 129/197/52 130/199/52 +f 127/201/53 130/203/53 128/195/53 +f 125/202/54 128/195/54 129/197/54 +o Lid +v 1.000000 1.250000 6.750000 +v 1.000000 1.250000 -0.250000 +v 1.000000 0.750000 6.750000 +v 1.000000 0.750000 -0.250000 +v 0.750000 0.250000 6.750000 +v 0.750000 0.250000 -0.250000 +v 0.250000 -0.125000 6.750000 +v 0.250000 -0.125000 -0.250000 +v 1.000000 1.375000 -0.250000 +v 1.000000 1.375000 6.750000 +v 1.088388 1.338388 -0.250000 +v 1.088388 1.338388 6.750000 +v 1.125000 1.250000 -0.250000 +v 1.125000 1.250000 6.750000 +v 1.088388 1.161612 -0.250000 +v 1.088388 1.161612 6.750000 +v 1.000000 1.125000 -0.250000 +v 1.000000 1.125000 6.750000 +v 0.911612 1.161612 -0.250000 +v 0.911612 1.161612 6.750000 +v 0.875000 1.250000 -0.250000 +v 0.875000 1.250000 6.750000 +v 0.911612 1.338388 -0.250000 +v 0.911612 1.338388 6.750000 +v 0.250000 -0.125000 -0.250000 +v 0.250000 -0.125000 6.750000 +v 0.750000 0.250000 -0.250000 +v 0.750000 0.250000 6.750000 +v 1.000000 0.750000 -0.250000 +v 1.000000 0.750000 6.750000 +v 1.000000 1.250000 -0.250000 +v 1.000000 1.250000 6.750000 +vt 0.721692 0.432584 +vt 0.728571 0.421762 +vt 0.735451 0.432584 +vt 0.735451 0.455056 +vt 0.733436 0.462709 +vt 0.723707 0.447404 +vt 0.733436 0.440236 +vt 0.728571 0.443406 +vt 0.723707 0.440236 +vt 0.723707 0.424931 +vt 0.733436 0.424931 +vt 0.728571 0.465878 +vt 0.723707 0.462709 +vt 0.721692 0.455056 +vt 0.728571 0.444234 +vt 0.733436 0.447404 +vt 0.242857 0.331461 +vt 0.642857 0.286517 +vt 0.642857 0.331461 +vt 0.242857 0.286517 +vt 0.642857 0.235955 +vt 0.242857 0.235955 +vt 0.642857 0.179775 +vt 0.242857 0.376404 +vt 0.642857 0.365169 +vt 0.642857 0.376404 +vt 0.242857 0.365169 +vt 0.642857 0.353933 +vt 0.242857 0.353933 +vt 0.642857 0.342697 +vt 0.242857 0.342697 +vt 0.642857 0.331461 +vt 0.242857 0.421348 +vt 0.642857 0.410112 +vt 0.642857 0.421348 +vt 0.242857 0.410112 +vt 0.642857 0.398876 +vt 0.242857 0.398876 +vt 0.642857 0.387640 +vt 0.242857 0.387640 +vt 0.642857 0.179775 +vt 0.242857 0.235955 +vt 0.642857 0.235955 +vt 0.242857 0.286517 +vt 0.642857 0.286517 +vt 0.242857 0.331461 +vt 0.642857 0.331461 +vt 0.242857 0.179775 +vt 0.242857 0.331461 +vt 0.242857 0.179775 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.9732 -0.2298 0.0000 +vn 0.7678 -0.6407 0.0000 +vn 0.6000 -0.8000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -1.0000 -0.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.6000 0.8000 0.0000 +vn -0.7678 0.6407 0.0000 +vn -0.9732 0.2298 0.0000 +s off +f 152/204/55 148/205/55 144/206/55 +f 151/207/56 153/208/56 145/209/56 +f 144/206/55 142/210/55 140/211/55 +f 140/211/55 154/212/55 152/204/55 +f 152/204/55 150/213/55 148/205/55 +f 148/205/55 146/214/55 144/206/55 +f 144/206/55 140/211/55 152/204/55 +f 153/208/56 139/215/56 141/216/56 +f 141/216/56 143/217/56 153/208/56 +f 143/217/56 145/209/56 153/208/56 +f 145/209/56 147/218/56 149/219/56 +f 149/219/56 151/207/56 145/209/56 +s 1 +f 131/220/57 134/221/58 132/222/57 +f 133/223/58 136/224/59 134/221/58 +f 135/225/59 138/226/60 136/224/59 +f 140/227/61 141/228/62 139/229/61 +f 142/230/62 143/231/57 141/228/62 +f 144/232/57 145/233/63 143/231/57 +f 146/234/63 147/235/64 145/233/63 +f 148/236/64 149/237/65 147/238/64 +f 150/239/65 151/240/66 149/237/65 +f 152/241/66 153/242/67 151/240/66 +f 154/243/67 139/229/61 153/242/67 +f 155/244/68 158/245/69 157/246/69 +f 157/246/69 160/247/70 159/248/70 +f 159/248/70 162/249/66 161/250/66 +f 131/220/57 133/223/58 134/221/58 +f 133/223/58 135/225/59 136/224/59 +f 135/225/59 137/251/60 138/226/60 +f 140/227/61 142/230/62 141/228/62 +f 142/230/62 144/232/57 143/231/57 +f 144/232/57 146/234/63 145/233/63 +f 146/234/63 148/252/64 147/235/64 +f 148/236/64 150/239/65 149/237/65 +f 150/239/65 152/241/66 151/240/66 +f 152/241/66 154/243/67 153/242/67 +f 154/243/67 140/227/61 139/229/61 +f 155/244/68 156/253/68 158/245/69 +f 157/246/69 158/245/69 160/247/70 +f 159/248/70 160/247/70 162/249/66 +o MiniNuke +v 0.000000 2.000000 -1.000000 +v -0.382683 1.923880 -1.000000 +v -0.707107 1.707107 -1.000000 +v -0.923880 1.382683 -1.000000 +v -1.000000 1.000000 -1.000000 +v -0.923880 0.617316 -1.000000 +v -0.707107 0.292893 -1.000000 +v -0.382683 0.076120 -1.000000 +v 0.000000 0.000000 -1.000000 +v 0.382683 0.076120 -1.000000 +v 0.707107 0.292893 -1.000000 +v 0.923880 0.617316 -1.000000 +v 1.000000 1.000000 -1.000000 +v 0.923880 1.382684 -1.000000 +v 0.707107 1.707107 -1.000000 +v 0.382683 1.923880 -1.000000 +v 0.000000 1.375000 -2.375000 +v -0.143507 1.346455 -2.375000 +v -0.265165 1.265165 -2.375000 +v -0.346455 1.143506 -2.375000 +v -0.375000 1.000000 -2.375000 +v -0.346455 0.856494 -2.375000 +v -0.265165 0.734835 -2.375000 +v -0.143507 0.653545 -2.375000 +v 0.000000 0.625000 -2.375000 +v 0.143506 0.653545 -2.375000 +v 0.265165 0.734835 -2.375000 +v 0.346455 0.856494 -2.375000 +v 0.375000 1.000000 -2.375000 +v 0.346455 1.143506 -2.375000 +v 0.265165 1.265165 -2.375000 +v 0.143506 1.346455 -2.375000 +v 0.000000 1.375000 0.375000 +v -0.143507 1.346455 0.375000 +v -0.265165 1.265165 0.375000 +v -0.346455 1.143506 0.375000 +v -0.375000 1.000000 0.375000 +v -0.346455 0.856494 0.375000 +v -0.265165 0.734835 0.375000 +v -0.143507 0.653545 0.375000 +v 0.000000 0.625000 0.375000 +v 0.143506 0.653545 0.375000 +v 0.265165 0.734835 0.375000 +v 0.346455 0.856494 0.375000 +v 0.375000 1.000000 0.375000 +v 0.346455 1.143506 0.375000 +v 0.265165 1.265165 0.375000 +v 0.143506 1.346455 0.375000 +v 0.000000 1.875000 -1.750000 +v -0.334848 1.808394 -1.750000 +v -0.618719 1.618718 -1.750000 +v -0.808394 1.334848 -1.750000 +v -0.875000 1.000000 -1.750000 +v -0.808394 0.665152 -1.750000 +v -0.618719 0.381282 -1.750000 +v -0.334848 0.191606 -1.750000 +v 0.000000 0.125000 -1.750000 +v 0.334848 0.191605 -1.750000 +v 0.618718 0.381281 -1.750000 +v 0.808394 0.665152 -1.750000 +v 0.875000 1.000000 -1.750000 +v 0.808394 1.334848 -1.750000 +v 0.618718 1.618719 -1.750000 +v 0.334847 1.808395 -1.750000 +v 0.000000 1.875000 -0.250000 +v -0.334848 1.808394 -0.250000 +v -0.618719 1.618718 -0.250000 +v -0.808394 1.334848 -0.250000 +v -0.875000 1.000000 -0.250000 +v -0.808394 0.665152 -0.250000 +v -0.618719 0.381282 -0.250000 +v -0.334848 0.191606 -0.250000 +v 0.000000 0.125000 -0.250000 +v 0.334848 0.191605 -0.250000 +v 0.618718 0.381281 -0.250000 +v 0.808394 0.665152 -0.250000 +v 0.875000 1.000000 -0.250000 +v 0.808394 1.334848 -0.250000 +v 0.618718 1.618719 -0.250000 +v 0.334847 1.808395 -0.250000 +v 0.000000 1.000000 0.625000 +v 0.000000 2.000000 -3.250000 +v -0.382683 1.923880 -3.250000 +v -0.923880 1.382683 -3.250000 +v -1.000000 1.000000 -3.250000 +v -0.923880 0.617316 -3.250000 +v -0.382683 0.076120 -3.250000 +v 0.000000 0.000000 -3.250000 +v 0.382683 0.076120 -3.250000 +v 0.923880 0.617316 -3.250000 +v 1.000000 1.000000 -3.250000 +v 0.923880 1.382684 -3.250000 +v 0.382683 1.923880 -3.250000 +v 0.000000 2.000000 -2.750000 +v -0.382683 1.923880 -2.750000 +v -0.707107 1.707107 -2.750000 +v -0.923880 1.382683 -2.750000 +v -1.000000 1.000000 -2.750000 +v -0.923880 0.617316 -2.750000 +v -0.707107 0.292893 -2.750000 +v -0.382683 0.076120 -2.750000 +v 0.000000 0.000000 -2.750000 +v 0.382683 0.076120 -2.750000 +v 0.707107 0.292893 -2.750000 +v 0.923880 0.617316 -2.750000 +v 1.000000 1.000000 -2.750000 +v 0.923880 1.382684 -2.750000 +v 0.707107 1.707107 -2.750000 +v 0.382683 1.923880 -2.750000 +v 0.000000 2.000000 -2.500000 +v -0.382683 1.923880 -2.500000 +v -0.707107 1.707107 -2.500000 +v -0.923880 1.382683 -2.500000 +v -1.000000 1.000000 -2.500000 +v -0.923880 0.617316 -2.500000 +v -0.707107 0.292893 -2.500000 +v -0.382683 0.076120 -2.500000 +v 0.000000 0.000000 -2.500000 +v 0.382683 0.076120 -2.500000 +v 0.707107 0.292893 -2.500000 +v 0.923880 0.617316 -2.500000 +v 1.000000 1.000000 -2.500000 +v 0.923880 1.382684 -2.500000 +v 0.707107 1.707107 -2.500000 +v 0.382683 1.923880 -2.500000 +v 0.000000 1.875000 -3.250000 +v -0.334848 1.808394 -3.250000 +v -0.808394 1.334848 -3.250000 +v -0.875000 1.000000 -3.250000 +v -0.808394 0.665152 -3.250000 +v -0.334848 0.191606 -3.250000 +v 0.000000 0.125000 -3.250000 +v 0.334848 0.191605 -3.250000 +v 0.808394 0.665152 -3.250000 +v 0.875000 1.000000 -3.250000 +v 0.808394 1.334848 -3.250000 +v 0.334847 1.808395 -3.250000 +v 0.000000 1.875000 -2.750000 +v -0.334848 1.808394 -2.750000 +v -0.618719 1.618718 -2.750000 +v -0.808394 1.334848 -2.750000 +v -0.875000 1.000000 -2.750000 +v -0.808394 0.665152 -2.750000 +v -0.618719 0.381282 -2.750000 +v -0.334848 0.191606 -2.750000 +v 0.000000 0.125000 -2.750000 +v 0.334848 0.191605 -2.750000 +v 0.618718 0.381281 -2.750000 +v 0.808394 0.665152 -2.750000 +v 0.875000 1.000000 -2.750000 +v 0.808394 1.334848 -2.750000 +v 0.618718 1.618719 -2.750000 +v 0.334847 1.808395 -2.750000 +v 0.000000 1.875000 -2.500000 +v -0.334848 1.808394 -2.500000 +v -0.618719 1.618718 -2.500000 +v -0.808394 1.334848 -2.500000 +v -0.875000 1.000000 -2.500000 +v -0.808394 0.665152 -2.500000 +v -0.618719 0.381282 -2.500000 +v -0.334848 0.191606 -2.500000 +v 0.000000 0.125000 -2.500000 +v 0.334848 0.191605 -2.500000 +v 0.618718 0.381281 -2.500000 +v 0.808394 0.665152 -2.500000 +v 0.875000 1.000000 -2.500000 +v 0.808394 1.334848 -2.500000 +v 0.618718 1.618719 -2.500000 +v 0.334847 1.808395 -2.500000 +v 0.062500 1.875000 -2.250000 +v -0.062500 1.875000 -2.250000 +v 0.062500 1.875000 -2.750000 +v -0.062500 1.875000 -2.750000 +v 0.062500 1.250000 -2.250000 +v -0.062500 1.250000 -2.250000 +v 0.062500 1.250000 -2.750000 +v -0.062500 1.250000 -2.750000 +v -0.062500 1.562500 -1.937500 +v 0.062500 1.562500 -1.937500 +v -0.062500 0.125000 -2.250000 +v 0.062500 0.125000 -2.250000 +v -0.062500 0.125000 -2.750000 +v 0.062500 0.125000 -2.750000 +v -0.062500 0.750000 -2.250000 +v 0.062500 0.750000 -2.250000 +v -0.062500 0.750000 -2.750000 +v 0.062500 0.750000 -2.750000 +v 0.062500 0.437500 -1.937500 +v -0.062500 0.437500 -1.937500 +v 0.875000 0.937500 -2.250000 +v 0.875000 1.062500 -2.250000 +v 0.875000 0.937500 -2.750000 +v 0.875000 1.062500 -2.750000 +v 0.250000 0.937500 -2.250000 +v 0.250000 1.062500 -2.250000 +v 0.250000 0.937500 -2.750000 +v 0.250000 1.062500 -2.750000 +v 0.562500 1.062500 -1.937500 +v 0.562500 0.937500 -1.937500 +v -0.875000 1.062500 -2.250000 +v -0.875000 0.937500 -2.250000 +v -0.875000 1.062500 -2.750000 +v -0.875000 0.937500 -2.750000 +v -0.250000 1.062500 -2.250000 +v -0.250000 0.937500 -2.250000 +v -0.250000 1.062500 -2.750000 +v -0.250000 0.937500 -2.750000 +v -0.562500 0.937500 -1.937500 +v -0.562500 1.062500 -1.937500 +vt 0.814815 0.197385 +vt 0.885186 0.197385 +vt 0.885186 0.296732 +vt -0.000000 0.000000 +vt 0.050000 0.023529 +vt 0.000000 0.023529 +vt 0.750000 0.023529 +vt 0.800000 0.000000 +vt 0.800000 0.023529 +vt 0.733333 0.329412 +vt 0.750000 0.235294 +vt 0.750000 0.329412 +vt 0.700000 0.117647 +vt 0.750000 0.094118 +vt 0.750000 0.117647 +vt 0.650000 0.117647 +vt 0.700000 0.094118 +vt 0.666667 0.329412 +vt 0.650000 0.235294 +vt 0.666667 0.235294 +vt 0.600000 0.000000 +vt 0.650000 0.023529 +vt 0.600000 0.023529 +vt 0.550000 0.023529 +vt 0.533333 0.235294 +vt 0.550000 0.329412 +vt 0.533333 0.329412 +vt 0.500000 0.094118 +vt 0.550000 0.117647 +vt 0.500000 0.117647 +vt 0.450000 0.094118 +vt 0.450000 0.117647 +vt 0.466667 0.329412 +vt 0.450000 0.235294 +vt 0.466667 0.235294 +vt 0.400000 0.000000 +vt 0.450000 0.023529 +vt 0.400000 0.023529 +vt 0.350000 -0.000000 +vt 0.350000 0.023529 +vt 0.350000 0.235294 +vt 0.333333 0.329412 +vt 0.333333 0.235294 +vt 0.300000 0.094118 +vt 0.350000 0.117647 +vt 0.300000 0.117647 +vt 0.066667 0.235294 +vt 0.050000 0.329412 +vt 0.050000 0.235294 +vt 0.100000 0.094118 +vt 0.050000 0.117647 +vt 0.050000 0.094118 +vt 0.150000 0.094118 +vt 0.100000 0.117647 +vt 0.133333 0.329412 +vt 0.150000 0.235294 +vt 0.150000 0.329412 +vt 0.200000 -0.000000 +vt 0.150000 0.023529 +vt 0.150000 -0.000000 +vt 0.250000 0.023529 +vt 0.250000 0.000000 +vt 0.266667 0.235294 +vt 0.250000 0.329412 +vt 0.250000 0.235294 +vt 0.250000 0.094118 +vt 0.250000 0.117647 +vt 0.350000 0.164706 +vt 0.300000 0.188235 +vt 0.300000 0.164706 +vt 0.400000 0.164706 +vt 0.350000 0.188235 +vt 0.450000 0.164706 +vt 0.400000 0.188235 +vt 0.500000 0.164706 +vt 0.450000 0.188235 +vt 0.550000 0.164706 +vt 0.500000 0.188235 +vt 0.600000 0.188235 +vt 0.550000 0.188235 +vt 0.650000 0.164706 +vt 0.600000 0.164706 +vt 0.700000 0.188235 +vt 0.650000 0.188235 +vt 0.700000 0.164706 +vt 0.750000 0.188235 +vt 0.750000 0.164706 +vt 0.800000 0.188235 +vt -0.000000 0.164706 +vt 0.050000 0.188235 +vt 0.000000 0.188235 +vt 0.100000 0.164706 +vt 0.050000 0.164706 +vt 0.150000 0.188235 +vt 0.100000 0.188235 +vt 0.150000 0.164706 +vt 0.200000 0.188235 +vt 0.250000 0.164706 +vt 0.200000 0.164706 +vt 0.250000 0.188235 +vt 0.900000 0.117647 +vt 0.916667 0.023529 +vt 0.916667 0.117647 +vt 0.800000 0.023529 +vt 0.816667 0.117647 +vt 0.800000 0.117647 +vt 0.900000 0.117647 +vt 0.916667 0.023529 +vt 0.916667 0.117647 +vt 0.816667 0.023529 +vt 0.900000 0.023529 +vt 0.816667 -0.000000 +vt 0.900000 -0.000000 +vt 1.000000 0.023529 +vt 1.000000 0.117647 +vt 0.900000 0.176471 +vt 0.800000 0.023529 +vt 0.816667 0.117647 +vt 0.800000 0.117647 +vt 0.816667 0.023529 +vt 0.900000 0.023529 +vt 0.816667 -0.000000 +vt 0.900000 -0.000000 +vt 1.000000 0.023529 +vt 1.000000 0.117647 +vt 0.900000 0.176471 +vt 0.900000 0.117647 +vt 0.916667 0.023529 +vt 0.916667 0.117647 +vt 0.800000 0.023529 +vt 0.816667 0.117647 +vt 0.800000 0.117647 +vt 0.900000 0.117647 +vt 0.916667 0.023529 +vt 0.916667 0.117647 +vt 0.816667 0.023529 +vt 0.900000 0.023529 +vt 0.816667 -0.000000 +vt 0.900000 -0.000000 +vt 1.000000 0.023529 +vt 1.000000 0.117647 +vt 0.900000 0.176471 +vt 0.800000 0.023529 +vt 0.816667 0.117647 +vt 0.800000 0.117647 +vt 0.816667 0.023529 +vt 0.900000 -0.000000 +vt 0.816667 -0.000000 +vt 1.000000 0.023529 +vt 1.000000 0.117647 +vt 0.900000 0.176471 +vt 0.869042 0.311960 +vt 0.850000 0.317307 +vt 0.830958 0.311960 +vt 0.814815 0.296732 +vt 0.804028 0.273942 +vt 0.800241 0.247059 +vt 0.804028 0.220176 +vt 0.830958 0.182157 +vt 0.850000 0.176810 +vt 0.869042 0.182157 +vt 0.895972 0.220176 +vt 0.899760 0.247059 +vt 0.895972 0.273942 +vt 0.050000 -0.000000 +vt 0.750000 -0.000000 +vt 0.733333 0.235294 +vt 0.650000 0.094118 +vt 0.650000 0.329412 +vt 0.650000 -0.000000 +vt 0.550000 0.000000 +vt 0.550000 0.235294 +vt 0.550000 0.094118 +vt 0.450000 0.329412 +vt 0.450000 -0.000000 +vt 0.350000 0.329412 +vt 0.350000 0.094118 +vt 0.066667 0.329412 +vt 0.150000 0.117647 +vt 0.133333 0.235294 +vt 0.200000 0.023529 +vt 0.266667 0.329412 +vt 0.800000 0.164706 +vt 0.858333 0.176471 +vt 0.958333 0.176471 +vt 0.916667 0.176471 +vt 0.858333 0.176471 +vt 0.958333 0.176471 +vt 0.916667 0.176471 +vt 0.900000 0.023529 +vt 0.858333 0.176471 +vt 0.958333 0.176471 +vt 0.916667 0.176471 +vt 0.858333 0.176471 +vt 0.958333 0.176471 +vt 0.916667 0.176471 +vt 0.533333 0.329412 +vt 0.500000 0.482353 +vt 0.516667 0.329412 +vt 0.550000 0.623529 +vt 0.500000 0.623529 +vt 0.500000 0.764706 +vt 0.516667 0.917647 +vt 0.550000 0.764706 +vt 0.533333 0.917647 +vt 0.450000 0.482353 +vt 0.450000 0.623529 +vt 0.400000 0.482353 +vt 0.400000 0.623529 +vt 0.350000 0.482353 +vt 0.350000 0.623529 +vt 0.300000 0.482353 +vt 0.300000 0.623529 +vt 0.250000 0.482353 +vt 0.250000 0.623529 +vt 0.200000 0.482353 +vt 0.200000 0.623529 +vt 0.150000 0.482353 +vt 0.150000 0.623529 +vt 0.100000 0.482353 +vt 0.100000 0.623529 +vt 0.050000 0.482353 +vt 0.050000 0.623529 +vt -0.000000 0.482353 +vt -0.000000 0.623529 +vt 0.750000 0.623529 +vt 0.800000 0.482353 +vt 0.800000 0.623529 +vt 0.700000 0.623529 +vt 0.750000 0.482353 +vt 0.650000 0.623529 +vt 0.700000 0.482353 +vt 0.600000 0.482353 +vt 0.600000 0.623529 +vt 0.550000 0.482353 +vt 0.483333 0.329412 +vt 0.466667 0.329412 +vt 0.433333 0.329412 +vt 0.416667 0.329412 +vt 0.383333 0.329412 +vt 0.366667 0.329412 +vt 0.333333 0.329412 +vt 0.316667 0.329412 +vt 0.283333 0.329412 +vt 0.266667 0.329412 +vt 0.216667 0.329412 +vt 0.183333 0.329412 +vt 0.166667 0.329412 +vt 0.116667 0.329412 +vt 0.083333 0.329412 +vt 0.066667 0.329412 +vt 0.033333 0.329412 +vt 0.016667 0.329412 +vt 0.766667 0.329412 +vt 0.733333 0.329412 +vt 0.716667 0.329412 +vt 0.683333 0.329412 +vt 0.650000 0.482353 +vt 0.666667 0.329412 +vt 0.633333 0.329412 +vt 0.616667 0.329412 +vt 0.583333 0.329412 +vt 0.566667 0.329412 +vt 0.450000 0.764706 +vt 0.400000 0.764706 +vt 0.350000 0.764706 +vt 0.300000 0.764706 +vt 0.250000 0.764706 +vt 0.200000 0.764706 +vt 0.150000 0.764706 +vt 0.100000 0.764706 +vt 0.050000 0.764706 +vt -0.000000 0.764706 +vt 0.750000 0.764706 +vt 0.700000 0.764706 +vt 0.650000 0.764706 +vt 0.600000 0.764706 +vt 0.466667 0.917647 +vt 0.483333 0.917647 +vt 0.433333 0.917647 +vt 0.416667 0.917647 +vt 0.383333 0.917647 +vt 0.366667 0.917647 +vt 0.333333 0.917647 +vt 0.316667 0.917647 +vt 0.283333 0.917647 +vt 0.266667 0.917647 +vt 0.233333 0.917647 +vt 0.216667 0.917647 +vt 0.183333 0.917647 +vt 0.166667 0.917647 +vt 0.116667 0.917647 +vt 0.133333 0.917647 +vt 0.083333 0.917647 +vt 0.066667 0.917647 +vt 0.033333 0.917647 +vt 0.016667 0.917647 +vt 0.783333 0.917647 +vt 0.766667 0.917647 +vt 0.733333 0.917647 +vt 0.716667 0.917647 +vt 0.683333 0.917647 +vt 0.666667 0.917647 +vt 0.616667 0.917647 +vt 0.633333 0.917647 +vt 0.583333 0.917647 +vt 0.566667 0.917647 +vt 0.425000 1.000000 +vt 0.375000 1.000000 +vt 0.325000 1.000000 +vt 0.275000 1.000000 +vt 0.225000 1.000000 +vt 0.175000 1.000000 +vt 0.125000 1.000000 +vt 0.075000 1.000000 +vt 0.025000 1.000000 +vt 0.775000 1.000000 +vt 0.725000 1.000000 +vt 0.675000 1.000000 +vt 0.625000 1.000000 +vt 0.575000 1.000000 +vt 0.525000 1.000000 +vt 0.475000 1.000000 +vt 0.600000 0.117647 +vt 0.200000 0.117647 +vt 0.400000 0.117647 +vt 0.000000 0.117647 +vt 0.800000 0.117647 +vt 0.600000 0.329412 +vt 0.200000 0.329412 +vt 0.600000 0.235294 +vt 0.200000 0.235294 +vt 0.800000 0.329412 +vt 0.400000 0.235294 +vt 0.400000 0.329412 +vt 0.000000 0.235294 +vt -0.000000 0.329412 +vt 0.500000 0.235294 +vt 0.100000 0.235294 +vt 0.700000 0.235294 +vt 0.300000 0.235294 +vt 0.800000 0.235294 +vt 0.233333 0.329412 +vt 0.133333 0.329412 +vt 0.783333 0.329412 +vt 0.800000 0.764706 +vn 0.0000 0.0000 -1.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.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.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7214 0.2988 -0.6247 +vn -0.6492 0.6492 -0.3965 +vn -0.5522 0.5522 -0.6247 +vn -0.7071 0.7071 -0.0000 +vn -0.6492 0.6492 0.3965 +vn -0.4850 0.4850 0.7277 +vn -0.8482 0.3513 0.3965 +vn -0.6337 0.2625 0.7277 +vn -0.3513 0.8482 -0.3965 +vn -0.0000 0.9180 -0.3965 +vn 0.3513 0.8482 -0.3965 +vn 0.6492 0.6492 -0.3965 +vn 0.7071 0.7071 -0.0000 +vn 0.8482 0.3513 -0.3965 +vn 0.9180 -0.0000 -0.3965 +vn 0.8482 -0.3513 -0.3965 +vn 0.6492 -0.6492 -0.3965 +vn 0.7071 -0.7071 0.0000 +vn 0.3513 -0.8482 -0.3965 +vn -0.0000 -0.9180 -0.3965 +vn -0.7071 -0.7071 0.0000 +vn -0.3513 -0.8482 -0.3965 +vn -0.6492 -0.6492 -0.3965 +vn -0.9180 0.0000 -0.3965 +vn -0.8482 0.3513 -0.3965 +vn -0.2988 0.7214 -0.6247 +vn 0.0000 0.7809 -0.6247 +vn 0.2988 0.7214 -0.6247 +vn 0.5522 0.5522 -0.6247 +vn 0.7214 0.2988 -0.6247 +vn 0.7809 -0.0000 -0.6247 +vn 0.7214 -0.2988 -0.6247 +vn 0.5522 -0.5522 -0.6247 +vn 0.2988 -0.7214 -0.6247 +vn 0.0000 -0.7809 -0.6247 +vn -0.2988 -0.7214 -0.6247 +vn -0.5522 -0.5522 -0.6247 +vn -0.8482 -0.3513 -0.3965 +vn -0.7214 -0.2988 -0.6247 +vn -0.7809 -0.0000 -0.6247 +vn -0.3513 0.8482 0.3965 +vn -0.0000 0.9180 0.3965 +vn 0.3513 0.8482 0.3965 +vn 0.6492 0.6492 0.3965 +vn 0.8482 0.3513 0.3965 +vn 0.9180 -0.0000 0.3965 +vn 0.8482 -0.3513 0.3965 +vn 0.6492 -0.6492 0.3965 +vn 0.3513 -0.8482 0.3965 +vn -0.0000 -0.9180 0.3965 +vn -0.3513 -0.8482 0.3965 +vn -0.6492 -0.6492 0.3965 +vn -0.8482 -0.3513 0.3965 +vn -0.9180 0.0000 0.3965 +vn -0.2625 0.6337 0.7277 +vn 0.0000 0.6859 0.7277 +vn 0.2625 0.6337 0.7277 +vn 0.4850 0.4850 0.7277 +vn 0.6337 0.2625 0.7277 +vn 0.6859 0.0000 0.7277 +vn 0.6337 -0.2625 0.7277 +vn 0.4850 -0.4850 0.7277 +vn 0.2625 -0.6337 0.7277 +vn 0.0000 -0.6859 0.7277 +vn -0.2625 -0.6337 0.7277 +vn -0.4850 -0.4850 0.7277 +vn -0.6337 -0.2625 0.7277 +vn -0.6859 -0.0000 0.7277 +vn -0.9472 0.3207 0.0000 +vn -0.9808 0.1951 0.0000 +vn 0.9472 -0.3207 0.0000 +vn 0.9808 -0.1951 0.0000 +vn -0.9808 -0.1951 0.0000 +vn 0.9808 0.1951 0.0000 +vn -0.3207 -0.9472 0.0000 +vn -0.1951 -0.9808 0.0000 +vn -0.1951 0.9808 0.0000 +vn 0.3207 0.9472 0.0000 +vn 0.1951 0.9808 0.0000 +vn 0.1951 -0.9808 0.0000 +vn 0.3207 -0.9472 0.0000 +vn -0.3207 0.9472 0.0000 +vn -0.9472 -0.3207 0.0000 +vn 0.9472 0.3207 0.0000 +s off +f 189/254/71 185/255/71 181/256/71 +f 294/257/71 251/258/71 250/259/71 +f 249/260/71 294/261/71 250/262/71 +f 249/263/72 307/264/72 293/265/72 +f 262/266/71 307/267/71 263/268/71 +f 261/269/71 306/270/71 262/266/71 +f 248/271/73 305/272/73 261/273/73 +f 291/274/71 248/275/71 247/276/71 +f 246/277/71 291/274/71 247/276/71 +f 259/278/74 290/279/74 246/280/74 +f 302/281/71 259/282/71 258/283/71 +f 301/284/71 258/283/71 257/285/71 +f 245/286/75 301/287/75 257/288/75 +f 288/289/71 245/290/71 244/291/71 +f 299/292/71 244/291/71 255/293/71 +f 315/294/76 255/295/76 271/296/76 +f 314/297/71 271/298/71 270/299/71 +f 265/300/77 295/301/77 309/302/77 +f 310/303/71 265/304/71 309/305/71 +f 311/306/71 266/307/71 310/303/71 +f 252/308/78 311/309/78 296/310/78 +f 297/311/71 252/312/71 296/313/71 +f 254/314/71 297/311/71 298/315/71 +f 269/316/79 298/317/79 313/318/79 +f 313/319/71 270/299/71 269/320/71 +f 287/321/80 330/322/80 286/323/80 +f 272/324/80 331/325/80 287/321/80 +f 273/326/80 316/327/80 272/324/80 +f 274/328/80 317/329/80 273/326/80 +f 275/330/80 318/331/80 274/328/80 +f 275/330/80 320/332/80 319/333/80 +f 277/334/80 320/332/80 276/335/80 +f 277/334/80 322/336/80 321/337/80 +f 278/338/80 323/339/80 322/336/80 +f 279/340/80 324/341/80 323/339/80 +f 280/342/80 325/343/80 324/344/80 +f 282/345/80 325/343/80 281/346/80 +f 282/345/80 327/347/80 326/348/80 +f 283/349/80 328/350/80 327/347/80 +f 285/351/80 328/350/80 284/352/80 +f 286/323/80 329/353/80 285/351/80 +f 332/354/81 335/355/81 333/356/81 +f 339/357/82 336/358/82 337/359/82 +f 342/360/82 345/361/82 343/362/82 +f 332/354/83 336/358/83 338/363/83 +f 334/364/71 339/365/71 335/366/71 +f 335/355/84 339/367/84 337/368/84 +f 333/356/85 341/369/85 332/354/85 +f 349/370/81 346/371/81 347/372/81 +f 342/360/84 346/371/84 348/373/84 +f 344/374/71 349/375/71 345/376/71 +f 345/361/83 349/377/83 347/378/83 +f 343/362/86 351/379/86 342/360/86 +f 352/380/83 355/381/83 353/382/83 +f 359/383/84 356/384/84 357/385/84 +f 362/386/84 365/387/84 363/388/84 +f 352/380/82 356/384/82 358/389/82 +f 354/390/71 359/391/71 355/392/71 +f 355/381/81 359/393/81 357/394/81 +f 353/382/87 361/395/87 352/380/87 +f 369/396/83 366/397/83 367/398/83 +f 362/386/81 366/397/81 368/399/81 +f 365/400/71 368/399/71 369/401/71 +f 365/387/82 369/402/82 367/403/82 +f 363/388/88 371/404/88 362/386/88 +f 181/256/71 180/405/71 179/406/71 +f 179/406/71 194/407/71 181/256/71 +f 194/407/71 193/408/71 181/256/71 +f 193/408/71 192/409/71 191/410/71 +f 191/410/71 190/411/71 193/408/71 +f 190/411/71 189/254/71 193/408/71 +f 189/254/71 188/412/71 185/255/71 +f 188/412/71 187/413/71 185/255/71 +f 187/413/71 186/414/71 185/255/71 +f 185/255/71 184/415/71 181/256/71 +f 184/415/71 183/416/71 181/256/71 +f 183/416/71 182/417/71 181/256/71 +f 181/256/71 193/408/71 189/254/71 +f 294/257/71 295/418/71 251/258/71 +f 249/260/71 293/419/71 294/261/71 +f 249/263/72 263/420/72 307/264/72 +f 262/266/71 306/270/71 307/267/71 +f 261/269/71 305/421/71 306/270/71 +f 248/271/73 292/422/73 305/272/73 +f 291/274/71 292/423/71 248/275/71 +f 246/277/71 290/424/71 291/274/71 +f 259/278/74 303/425/74 290/279/74 +f 302/281/71 303/426/71 259/282/71 +f 301/284/71 302/281/71 258/283/71 +f 245/286/75 289/427/75 301/287/75 +f 288/289/71 289/428/71 245/290/71 +f 299/292/71 288/289/71 244/291/71 +f 315/294/76 299/429/76 255/295/76 +f 314/297/71 315/430/71 271/298/71 +f 265/300/77 251/431/77 295/301/77 +f 310/303/71 266/307/71 265/304/71 +f 311/306/71 267/432/71 266/307/71 +f 252/308/78 267/433/78 311/309/78 +f 297/311/71 253/434/71 252/312/71 +f 254/314/71 253/434/71 297/311/71 +f 269/316/79 254/435/79 298/317/79 +f 313/319/71 314/297/71 270/299/71 +f 287/321/80 331/325/80 330/322/80 +f 272/324/80 316/327/80 331/325/80 +f 273/326/80 317/329/80 316/327/80 +f 274/328/80 318/331/80 317/329/80 +f 275/330/80 319/333/80 318/331/80 +f 275/330/80 276/335/80 320/332/80 +f 277/334/80 321/337/80 320/332/80 +f 277/334/80 278/338/80 322/336/80 +f 278/338/80 279/340/80 323/339/80 +f 279/340/80 280/436/80 324/341/80 +f 280/342/80 281/346/80 325/343/80 +f 282/345/80 326/348/80 325/343/80 +f 282/345/80 283/349/80 327/347/80 +f 283/349/80 284/352/80 328/350/80 +f 285/351/80 329/353/80 328/350/80 +f 286/323/80 330/322/80 329/353/80 +f 332/354/81 334/364/81 335/355/81 +f 339/357/82 338/363/82 336/358/82 +f 342/360/82 344/374/82 345/361/82 +f 338/363/83 334/364/83 332/354/83 +f 332/354/83 341/437/83 336/358/83 +f 334/364/71 338/363/71 339/365/71 +f 340/438/84 333/356/84 337/368/84 +f 333/356/84 335/355/84 337/368/84 +f 333/356/85 340/439/85 341/369/85 +f 349/370/81 348/373/81 346/371/81 +f 348/373/84 344/374/84 342/360/84 +f 342/360/84 351/440/84 346/371/84 +f 344/374/71 348/373/71 349/375/71 +f 350/441/83 343/362/83 347/378/83 +f 343/362/83 345/361/83 347/378/83 +f 343/362/86 350/442/86 351/379/86 +f 352/380/83 354/390/83 355/381/83 +f 359/383/84 358/389/84 356/384/84 +f 362/386/84 364/443/84 365/387/84 +f 358/389/82 354/390/82 352/380/82 +f 352/380/82 361/444/82 356/384/82 +f 354/390/71 358/389/71 359/391/71 +f 360/445/81 353/382/81 357/394/81 +f 353/382/81 355/381/81 357/394/81 +f 353/382/87 360/446/87 361/395/87 +f 369/396/83 368/399/83 366/397/83 +f 368/399/81 364/443/81 362/386/81 +f 362/386/81 371/447/81 366/397/81 +f 365/400/71 364/443/71 368/399/71 +f 370/448/82 363/388/82 367/403/82 +f 363/388/82 365/387/82 367/403/82 +f 363/388/88 370/449/88 371/404/88 +s 1 +f 182/450/89 213/451/90 181/452/91 +f 213/451/90 166/453/72 165/454/92 +f 166/453/72 229/455/93 165/454/92 +f 197/456/94 230/457/95 198/458/96 +f 212/459/97 165/454/92 164/460/79 +f 211/461/98 164/460/79 163/462/81 +f 226/463/99 163/462/81 178/464/74 +f 225/465/100 178/464/74 177/466/101 +f 224/467/102 177/466/101 176/468/77 +f 223/469/103 176/468/77 175/470/83 +f 222/471/104 175/470/83 174/472/76 +f 221/473/105 174/472/76 173/474/106 +f 220/475/107 173/474/106 172/476/73 +f 219/477/108 172/476/73 171/478/82 +f 170/479/78 219/480/108 171/481/82 +f 169/482/109 218/483/110 170/479/78 +f 168/484/75 217/485/111 169/482/109 +f 215/486/112 168/484/75 167/487/84 +f 214/488/113 167/487/84 166/453/72 +f 181/489/91 212/459/97 180/490/114 +f 180/491/114 211/461/98 179/492/115 +f 179/493/115 226/463/99 194/494/116 +f 194/495/116 225/465/100 193/496/117 +f 193/497/117 224/467/102 192/498/118 +f 191/499/119 224/467/102 223/469/103 +f 191/500/119 222/471/104 190/501/120 +f 189/502/121 222/471/104 221/473/105 +f 189/503/121 220/475/107 188/504/122 +f 188/505/122 219/477/108 187/506/123 +f 186/507/124 219/480/108 218/483/110 +f 186/508/124 217/485/111 185/509/125 +f 185/510/125 216/511/126 184/512/127 +f 184/513/127 215/486/112 183/514/128 +f 183/515/128 214/488/113 182/516/89 +f 165/454/92 228/517/129 164/460/79 +f 164/460/79 227/518/130 163/462/81 +f 163/462/81 242/519/131 178/464/74 +f 178/464/74 241/520/132 177/466/101 +f 176/468/77 241/520/132 240/521/133 +f 176/468/77 239/522/134 175/470/83 +f 175/470/83 238/523/135 174/472/76 +f 174/472/76 237/524/136 173/474/106 +f 173/474/106 236/525/137 172/476/73 +f 172/476/73 235/526/138 171/478/82 +f 171/481/82 234/527/139 170/479/78 +f 169/482/109 234/527/139 233/528/140 +f 169/482/109 232/529/141 168/484/75 +f 168/484/75 231/530/142 167/487/84 +f 166/453/72 231/530/142 230/457/95 +f 196/531/143 229/455/93 197/532/94 +f 227/518/130 196/533/143 195/534/144 +f 242/519/131 195/535/144 210/536/145 +f 241/520/132 210/537/145 209/538/146 +f 240/521/133 209/539/146 208/540/147 +f 239/522/134 208/541/147 207/542/148 +f 238/523/135 207/543/148 206/544/149 +f 205/545/150 238/523/135 206/546/149 +f 236/525/137 205/547/150 204/548/151 +f 235/526/138 204/549/151 203/550/152 +f 234/527/139 203/551/152 202/552/153 +f 233/528/140 202/553/153 201/554/154 +f 232/529/141 201/555/154 200/556/155 +f 199/557/156 232/529/141 200/558/155 +f 230/457/95 199/559/156 198/560/96 +f 196/533/143 243/561/80 195/534/144 +f 195/535/144 243/562/80 210/536/145 +f 210/537/145 243/563/80 209/538/146 +f 209/539/146 243/564/80 208/540/147 +f 208/541/147 243/565/80 207/542/148 +f 207/543/148 243/566/80 206/544/149 +f 206/546/149 243/567/80 205/545/150 +f 205/547/150 243/568/80 204/548/151 +f 204/549/151 243/569/80 203/550/152 +f 203/551/152 243/570/80 202/552/153 +f 202/553/153 243/571/80 201/554/154 +f 201/555/154 243/572/80 200/556/155 +f 200/558/155 243/573/80 199/557/156 +f 199/559/156 243/574/80 198/560/96 +f 198/458/96 243/575/80 197/456/94 +f 197/532/94 243/576/80 196/531/143 +f 247/276/84 259/282/157 246/277/158 +f 253/434/83 267/432/159 252/312/160 +f 248/275/161 260/577/84 247/276/84 +f 254/314/162 268/578/83 253/434/83 +f 250/262/82 263/268/163 249/260/164 +f 245/290/165 256/579/81 244/291/81 +f 244/291/81 271/298/166 255/293/167 +f 251/258/168 264/580/82 250/259/82 +f 265/304/169 280/342/82 264/580/82 +f 258/283/92 273/326/79 257/285/170 +f 266/307/106 281/346/73 265/304/169 +f 259/282/157 274/328/92 258/283/92 +f 267/432/159 282/345/106 266/307/106 +f 260/577/84 275/330/72 259/282/157 +f 268/578/83 283/349/76 267/432/159 +f 261/269/171 276/335/84 260/577/84 +f 269/320/172 284/352/83 268/578/83 +f 262/266/109 277/334/75 261/269/171 +f 270/299/101 285/351/77 269/320/172 +f 263/268/163 278/338/109 262/266/109 +f 271/298/166 286/323/101 270/299/101 +f 264/581/82 279/340/78 263/268/163 +f 257/285/170 272/324/81 256/579/81 +f 256/579/81 287/321/74 271/298/166 +f 303/425/159 291/582/83 290/279/160 +f 311/309/157 297/583/84 296/310/158 +f 304/584/83 292/422/162 291/582/83 +f 312/585/84 298/317/161 297/583/84 +f 307/264/166 294/586/81 293/265/167 +f 300/587/82 289/427/168 288/588/82 +f 315/294/163 288/588/82 299/429/164 +f 308/589/81 295/301/165 294/590/81 +f 318/331/106 303/425/159 302/591/106 +f 326/348/92 311/309/157 310/592/92 +f 319/333/76 304/584/83 303/425/159 +f 327/347/72 312/585/84 311/309/157 +f 320/332/83 305/272/172 304/584/83 +f 328/350/84 313/318/171 312/585/84 +f 321/337/77 306/593/101 305/272/172 +f 329/353/75 314/594/109 313/318/171 +f 322/336/101 307/264/166 306/593/101 +f 330/322/109 315/294/163 314/594/109 +f 323/339/74 308/595/81 307/264/166 +f 316/327/82 301/287/169 300/587/82 +f 331/325/78 300/587/82 315/294/163 +f 324/344/81 309/302/170 308/589/81 +f 317/329/73 302/591/106 301/287/169 +f 325/343/79 310/592/92 309/302/170 +f 182/450/89 214/488/113 213/451/90 +f 213/451/90 214/488/113 166/453/72 +f 166/453/72 230/457/95 229/455/93 +f 197/456/94 229/455/93 230/457/95 +f 212/459/97 213/451/90 165/454/92 +f 211/461/98 212/459/97 164/460/79 +f 226/463/99 211/461/98 163/462/81 +f 225/465/100 226/463/99 178/464/74 +f 224/467/102 225/465/100 177/466/101 +f 223/469/103 224/467/102 176/468/77 +f 222/471/104 223/469/103 175/470/83 +f 221/473/105 222/471/104 174/472/76 +f 220/475/107 221/473/105 173/474/106 +f 219/477/108 220/475/107 172/476/73 +f 170/479/78 218/483/110 219/480/108 +f 169/482/109 217/485/111 218/483/110 +f 168/484/75 216/511/126 217/485/111 +f 215/486/112 216/511/126 168/484/75 +f 214/488/113 215/486/112 167/487/84 +f 181/489/91 213/451/90 212/459/97 +f 180/491/114 212/459/97 211/461/98 +f 179/493/115 211/461/98 226/463/99 +f 194/495/116 226/463/99 225/465/100 +f 193/497/117 225/465/100 224/467/102 +f 191/499/119 192/596/118 224/467/102 +f 191/500/119 223/469/103 222/471/104 +f 189/502/121 190/597/120 222/471/104 +f 189/503/121 221/473/105 220/475/107 +f 188/505/122 220/475/107 219/477/108 +f 186/507/124 187/598/123 219/480/108 +f 186/508/124 218/483/110 217/485/111 +f 185/510/125 217/485/111 216/511/126 +f 184/513/127 216/511/126 215/486/112 +f 183/515/128 215/486/112 214/488/113 +f 165/454/92 229/455/93 228/517/129 +f 164/460/79 228/517/129 227/518/130 +f 163/462/81 227/518/130 242/519/131 +f 178/464/74 242/519/131 241/520/132 +f 176/468/77 177/466/101 241/520/132 +f 176/468/77 240/521/133 239/522/134 +f 175/470/83 239/522/134 238/523/135 +f 174/472/76 238/523/135 237/524/136 +f 173/474/106 237/524/136 236/525/137 +f 172/476/73 236/525/137 235/526/138 +f 171/481/82 235/599/138 234/527/139 +f 169/482/109 170/479/78 234/527/139 +f 169/482/109 233/528/140 232/529/141 +f 168/484/75 232/529/141 231/530/142 +f 166/453/72 167/487/84 231/530/142 +f 196/531/143 228/517/129 229/455/93 +f 227/518/130 228/517/129 196/533/143 +f 242/519/131 227/518/130 195/535/144 +f 241/520/132 242/519/131 210/537/145 +f 240/521/133 241/520/132 209/539/146 +f 239/522/134 240/521/133 208/541/147 +f 238/523/135 239/522/134 207/543/148 +f 205/545/150 237/524/136 238/523/135 +f 236/525/137 237/524/136 205/547/150 +f 235/526/138 236/525/137 204/549/151 +f 234/527/139 235/599/138 203/551/152 +f 233/528/140 234/527/139 202/553/153 +f 232/529/141 233/528/140 201/555/154 +f 199/557/156 231/530/142 232/529/141 +f 230/457/95 231/530/142 199/559/156 +f 247/276/84 260/577/84 259/282/157 +f 253/434/83 268/578/83 267/432/159 +f 248/275/161 261/269/171 260/577/84 +f 254/314/162 269/320/172 268/578/83 +f 250/262/82 264/581/82 263/268/163 +f 245/290/165 257/285/170 256/579/81 +f 244/291/81 256/579/81 271/298/166 +f 251/258/168 265/304/169 264/580/82 +f 265/304/169 281/346/73 280/342/82 +f 258/283/92 274/328/92 273/326/79 +f 266/307/106 282/345/106 281/346/73 +f 259/282/157 275/330/72 274/328/92 +f 267/432/159 283/349/76 282/345/106 +f 260/577/84 276/335/84 275/330/72 +f 268/578/83 284/352/83 283/349/76 +f 261/269/171 277/334/75 276/335/84 +f 269/320/172 285/351/77 284/352/83 +f 262/266/109 278/338/109 277/334/75 +f 270/299/101 286/323/101 285/351/77 +f 263/268/163 279/340/78 278/338/109 +f 271/298/166 287/321/74 286/323/101 +f 264/581/82 280/436/82 279/340/78 +f 257/285/170 273/326/79 272/324/81 +f 256/579/81 272/324/81 287/321/74 +f 303/425/159 304/584/83 291/582/83 +f 311/309/157 312/585/84 297/583/84 +f 304/584/83 305/272/172 292/422/162 +f 312/585/84 313/318/171 298/317/161 +f 307/264/166 308/595/81 294/586/81 +f 300/587/82 301/287/169 289/427/168 +f 315/294/163 300/587/82 288/588/82 +f 308/589/81 309/302/170 295/301/165 +f 318/331/106 319/333/76 303/425/159 +f 326/348/92 327/347/72 311/309/157 +f 319/333/76 320/332/83 304/584/83 +f 327/347/72 328/350/84 312/585/84 +f 320/332/83 321/337/77 305/272/172 +f 328/350/84 329/353/75 313/318/171 +f 321/337/77 322/336/101 306/593/101 +f 329/353/75 330/322/109 314/594/109 +f 322/336/101 323/339/74 307/264/166 +f 330/322/109 331/325/78 315/294/163 +f 323/339/74 324/341/81 308/595/81 +f 316/327/82 317/329/73 301/287/169 +f 331/325/78 316/327/82 300/587/82 +f 324/344/81 325/343/79 309/302/170 +f 317/329/73 318/331/106 302/591/106 +f 325/343/79 326/348/92 310/592/92 +o Launcher +v -0.250000 0.000000 8.000000 +v 0.250000 0.000000 8.000000 +v -0.250000 0.000000 -2.000000 +v 0.250000 0.000000 -2.000000 +v -0.250000 -0.250000 8.000000 +v 0.250000 -0.250000 8.000000 +v -0.250000 -0.500000 -2.000000 +v -0.250000 -0.500000 7.750000 +v 0.250000 -0.500000 7.750000 +v 0.250000 -0.500000 -2.000000 +v -1.000000 1.250000 -0.250000 +v -1.000000 1.250000 6.750000 +v -1.000000 0.750000 6.750000 +v -1.000000 0.750000 -0.250000 +v -0.750000 0.250000 6.750000 +v -0.750000 0.250000 -0.250000 +v -0.250000 -0.125000 6.750000 +v -0.250000 -0.125000 -0.250000 +v -1.088388 1.338388 -5.750000 +v -1.125000 1.250000 -5.750000 +v -1.088388 1.161612 -5.750000 +v -1.000000 1.125000 -5.750000 +v -0.911612 1.161612 -5.750000 +v -0.875000 1.250000 -5.750000 +v -0.911612 1.338388 -5.750000 +v -1.000000 1.375000 -5.750000 +v -1.088388 1.338388 -0.250000 +v -1.125000 1.250000 -0.250000 +v -1.088388 1.161612 -0.250000 +v -1.000000 1.125000 -0.250000 +v -0.911612 1.161612 -0.250000 +v -0.875000 1.250000 -0.250000 +v -0.911612 1.338388 -0.250000 +v -1.000000 1.375000 -0.250000 +v -0.250000 0.000000 -3.000000 +v 0.250000 0.000000 -3.000000 +v -0.250000 -0.500000 -3.000000 +v 0.250000 -0.500000 -3.000000 +v 0.250000 0.000000 -7.500000 +v -0.250000 0.000000 -7.500000 +v 0.250000 -0.500000 -7.500000 +v -0.250000 -0.500000 -7.500000 +v -1.000000 1.500000 1.000000 +v -1.176777 1.426777 1.000000 +v -1.250000 1.250000 1.000000 +v -1.176777 1.073223 1.000000 +v -1.000000 1.000000 1.000000 +v -0.823223 1.073223 1.000000 +v -0.750000 1.250000 1.000000 +v -0.823223 1.426777 1.000000 +v -1.176777 1.426777 -1.500000 +v -1.250000 1.250000 -1.500000 +v -1.000000 1.500000 -1.500000 +v -1.176777 1.073223 -1.500000 +v -1.000000 1.000000 -1.500000 +v -0.823223 1.073223 -1.500000 +v -0.750000 1.250000 -1.500000 +v -0.823223 1.426777 -1.500000 +v 1.000000 1.250000 -0.250000 +v 1.000000 0.750000 -0.250000 +v 0.750000 0.250000 -0.250000 +v 0.250000 -0.125000 -0.250000 +v -1.000000 1.250000 -0.250000 +v 1.000000 1.375000 -0.250000 +v 1.088388 1.338388 -0.250000 +v 1.125000 1.250000 -0.250000 +v 1.088388 1.161612 -0.250000 +v 1.000000 1.125000 -0.250000 +v 0.911612 1.161612 -0.250000 +v 0.875000 1.250000 -0.250000 +v 0.911612 1.338388 -0.250000 +v -1.000000 0.750000 -0.250000 +v -0.750000 0.250000 -0.250000 +v -0.250000 -0.125000 -0.250000 +v -1.088388 1.338388 6.750000 +v -1.088388 1.338388 -0.250000 +v -1.125000 1.250000 6.750000 +v -1.125000 1.250000 -0.250000 +v -1.088388 1.161612 6.750000 +v -1.088388 1.161612 -0.250000 +v -1.000000 1.125000 6.750000 +v -1.000000 1.125000 -0.250000 +v 1.000000 0.750000 -5.750000 +v 1.000000 1.250000 -5.750000 +v 0.750000 0.250000 -5.750000 +v 0.250000 -0.125000 -5.750000 +v -0.911612 1.161612 6.750000 +v -0.911612 1.161612 -0.250000 +v 1.000000 1.375000 -5.750000 +v 1.088388 1.338388 -5.750000 +v 1.125000 1.250000 -5.750000 +v -0.750000 0.250000 -5.750000 +v -1.000000 0.750000 -5.750000 +v 1.088388 1.161612 -5.750000 +v 1.000000 1.125000 -5.750000 +v -0.875000 1.250000 6.750000 +v 0.911612 1.161612 -5.750000 +v -1.000000 1.250000 -5.750000 +v 0.875000 1.250000 -5.750000 +v -0.250000 -0.125000 -5.750000 +v 0.911612 1.338388 -5.750000 +v -0.875000 1.250000 -0.250000 +v -0.911612 1.338388 6.750000 +v -0.911612 1.338388 -0.250000 +v -1.000000 1.375000 6.750000 +v -1.000000 1.375000 -0.250000 +v 0.250000 0.000000 -7.500000 +v -0.250000 0.000000 -7.500000 +v 0.250000 0.000000 -6.250000 +v -0.250000 0.000000 -6.250000 +v 0.250000 1.500000 -6.250000 +v -0.250000 1.500000 -6.250000 +v 0.250000 1.750000 -6.750000 +v -0.250000 1.750000 -6.750000 +v -0.250000 -0.125000 -5.750000 +v -1.000000 1.250000 -5.750000 +v -1.000000 0.750000 -5.750000 +v -0.750000 0.250000 -5.750000 +v 0.250000 -0.125000 -5.750000 +v 0.750000 0.250000 -5.750000 +v 1.000000 1.250000 -5.750000 +v 1.000000 0.750000 -5.750000 +v -0.250000 -0.125000 -0.250000 +v -0.750000 0.250000 -0.250000 +v -1.000000 0.750000 -0.250000 +v -1.000000 1.250000 -0.250000 +v 0.250000 -0.125000 -0.250000 +v 0.750000 0.250000 -0.250000 +v 1.000000 0.750000 -0.250000 +v 1.000000 1.250000 -0.250000 +v -0.250000 -0.125000 -0.250000 +v -0.250000 -0.125000 6.750000 +v -0.750000 0.250000 -0.250000 +v -0.750000 0.250000 6.750000 +v -1.000000 0.750000 -0.250000 +v -1.000000 0.750000 6.750000 +v -1.000000 1.250000 6.750000 +v -1.000000 1.250000 -0.250000 +v 0.000000 1.187500 -6.250000 +v -0.132583 1.132583 -6.250000 +v -0.187500 1.000000 -6.250000 +v -0.132583 0.867417 -6.250000 +v 0.000000 0.812500 -6.250000 +v 0.132583 0.867417 -6.250000 +v 0.187500 1.000000 -6.250000 +v 0.132583 1.132583 -6.250000 +v 0.000000 1.187500 -6.125000 +v -0.132583 1.132583 -6.125000 +v -0.187500 1.000000 -6.125000 +v -0.132583 0.867417 -6.125000 +v 0.000000 0.812500 -6.125000 +v 0.132583 0.867417 -6.125000 +v 0.187500 1.000000 -6.125000 +v 0.132583 1.132583 -6.125000 +v 0.000000 1.437500 -6.125001 +v -0.309359 1.309359 -6.125001 +v -0.437500 1.000000 -6.125001 +v -0.309359 0.690640 -6.125001 +v 0.000000 0.562500 -6.125001 +v 0.309359 0.690640 -6.125001 +v 0.437500 1.000000 -6.125001 +v 0.309359 1.309359 -6.125001 +v 0.000000 1.437500 -5.125001 +v -0.309359 1.309359 -5.125001 +v -0.437500 1.000000 -5.125001 +v -0.309359 0.690640 -5.125001 +v 0.000000 0.562500 -5.125001 +v 0.309359 0.690640 -5.125001 +v 0.437500 1.000000 -5.125001 +v 0.309359 1.309359 -5.125001 +v 0.000000 1.500000 -5.625001 +v -0.353553 1.353553 -5.625001 +v -0.500000 1.000000 -5.625001 +v -0.353553 0.646446 -5.625001 +v 0.000000 0.500000 -5.625001 +v 0.353553 0.646446 -5.625001 +v 0.500000 1.000000 -5.625001 +v 0.353553 1.353553 -5.625001 +v 0.000000 1.250000 -5.125001 +v -0.176777 1.176776 -5.125001 +v -0.250000 1.000000 -5.125001 +v -0.176777 0.823223 -5.125001 +v 0.000000 0.750000 -5.125001 +v 0.176777 0.823223 -5.125001 +v 0.250000 1.000000 -5.125001 +v 0.176777 1.176776 -5.125001 +v 0.000000 1.250000 -2.750001 +v -0.176777 1.176776 -2.750001 +v -0.250000 1.000000 -2.750001 +v -0.176777 0.823223 -2.750001 +v 0.000000 0.750000 -2.750001 +v 0.176777 0.823223 -2.750001 +v 0.250000 1.000000 -2.750001 +v 0.176777 1.176776 -2.750001 +v -0.687500 0.062500 3.000000 +v -0.906250 0.003886 3.000000 +v -1.066386 -0.156250 3.000000 +v -1.125000 -0.375000 3.000000 +v -1.066386 -0.593750 3.000000 +v -0.906250 -0.753886 3.000000 +v -0.687500 -0.812500 3.000000 +v -0.468750 -0.753886 3.000000 +v -0.308614 -0.593750 3.000000 +v -0.250000 -0.375000 3.000000 +v -0.308614 -0.156250 3.000000 +v -0.468750 0.003886 3.000000 +v -0.687500 0.062500 -2.000000 +v -0.906250 0.003886 -2.000000 +v -1.066386 -0.156250 -2.000000 +v -1.125000 -0.375000 -2.000000 +v -1.066386 -0.593750 -2.000000 +v -0.906250 -0.753886 -2.000000 +v -0.687500 -0.812500 -2.000000 +v -0.468750 -0.753886 -2.000000 +v -0.308614 -0.593750 -2.000000 +v -0.250000 -0.375000 -2.000000 +v -0.308614 -0.156250 -2.000000 +v -0.468750 0.003886 -2.000000 +v -0.687500 -0.125000 3.312500 +v -0.812500 -0.158494 3.312500 +v -0.904006 -0.250000 3.312500 +v -0.937500 -0.375000 3.312500 +v -0.904006 -0.500000 3.312500 +v -0.812500 -0.591506 3.312500 +v -0.687500 -0.625000 3.312500 +v -0.562500 -0.591506 3.312500 +v -0.470994 -0.500000 3.312500 +v -0.437500 -0.375000 3.312500 +v -0.470994 -0.250000 3.312500 +v -0.562500 -0.158494 3.312500 +v -0.687500 -0.375000 3.437500 +v -0.687500 -0.125000 -2.312500 +v -0.812500 -0.158494 -2.312500 +v -0.904006 -0.250000 -2.312500 +v -0.937500 -0.375000 -2.312500 +v -0.904006 -0.500000 -2.312500 +v -0.812500 -0.591506 -2.312500 +v -0.687500 -0.625000 -2.312500 +v -0.562500 -0.591506 -2.312500 +v -0.470994 -0.500000 -2.312500 +v -0.437500 -0.375000 -2.312500 +v -0.470994 -0.250000 -2.312500 +v -0.562500 -0.158494 -2.312500 +v -0.687500 -0.375000 -2.437500 +v -0.125000 -0.500000 7.625000 +v 0.125000 -0.500000 7.625000 +v -0.125000 -0.500000 7.375000 +v 0.125000 -0.500000 7.375000 +v -0.125000 -0.875000 7.625000 +v 0.125000 -0.875000 7.625000 +v -0.125000 -0.875000 7.375000 +v 0.125000 -0.875000 7.375000 +v 0.000000 -0.625000 7.375000 +v -0.088388 -0.661612 7.375000 +v -0.125000 -0.750000 7.375000 +v -0.088388 -0.838388 7.375000 +v 0.000000 -0.875000 7.375000 +v 0.088388 -0.838388 7.375000 +v 0.125000 -0.750000 7.375000 +v 0.088388 -0.661612 7.375000 +v 0.000000 -0.625000 1.000000 +v -0.088388 -0.661612 1.000000 +v -0.125000 -0.750000 1.000000 +v -0.088388 -0.838388 1.000000 +v 0.000000 -0.875000 1.000000 +v 0.088388 -0.838388 1.000000 +v 0.125000 -0.750000 1.000000 +v 0.088388 -0.661612 1.000000 +v 0.250000 -0.500000 -2.000000 +v -0.250000 -0.500000 -2.000000 +v 0.250000 -1.000000 -2.000000 +v -0.250000 -1.000000 -2.000000 +v 0.375000 -0.500000 -2.000000 +v -0.375000 -0.500000 -2.000000 +v 0.375000 -0.500000 1.000000 +v -0.375000 -0.500000 1.000000 +v 0.375000 -1.125000 -2.000000 +v -0.375000 -1.125000 -2.000000 +v 0.375000 -1.125000 1.000000 +v -0.375000 -1.125000 1.000000 +v 0.250000 2.125000 -7.500000 +v -0.250000 2.125000 -7.500000 +v 0.250000 2.125000 -6.750000 +v -0.250000 2.125000 -6.750000 +v 0.000000 1.250000 -7.500001 +v -0.176777 1.176776 -7.500001 +v -0.250000 1.000000 -7.500001 +v -0.176777 0.823223 -7.500001 +v 0.000000 0.750000 -7.500001 +v 0.176777 0.823223 -7.500001 +v 0.250000 1.000000 -7.500001 +v 0.176777 1.176776 -7.500001 +v 0.000000 1.250000 -7.750001 +v -0.176777 1.176776 -7.750001 +v -0.250000 1.000000 -7.750001 +v -0.176777 0.823223 -7.750001 +v 0.000000 0.750000 -7.750001 +v 0.176777 0.823223 -7.750001 +v 0.250000 1.000000 -7.750001 +v 0.176777 1.176776 -7.750001 +v 0.250000 -0.375000 -6.875000 +v 0.250000 1.125000 -6.875000 +v 0.250000 -0.375000 -6.625000 +v 0.250000 1.125000 -6.625000 +v 0.375000 -0.375000 -6.875000 +v 0.375000 1.125000 -6.875000 +v 0.375000 -0.375000 -6.625000 +v 0.375000 1.125000 -6.625000 +v -0.375000 -0.375000 -6.875000 +v -0.375000 1.125000 -6.875000 +v -0.375000 -0.375000 -6.625000 +v -0.375000 1.125000 -6.625000 +v -0.250000 -0.375000 -6.875000 +v -0.250000 1.125000 -6.875000 +v -0.250000 -0.375000 -6.625000 +v -0.250000 1.125000 -6.625000 +v 0.250000 1.437500 -7.375000 +v 0.250000 1.614277 -7.301777 +v 0.250000 1.687500 -7.125000 +v 0.250000 1.614277 -6.948223 +v 0.250000 1.437500 -6.875000 +v 0.250000 1.260723 -6.948223 +v 0.250000 1.187500 -7.125000 +v 0.250000 1.260723 -7.301777 +v 0.375000 1.437500 -7.375000 +v 0.375000 1.614277 -7.301777 +v 0.375000 1.687500 -7.125000 +v 0.375000 1.614277 -6.948223 +v 0.375000 1.437500 -6.875000 +v 0.375000 1.260723 -6.948223 +v 0.375000 1.187500 -7.125000 +v 0.375000 1.260723 -7.301777 +v -0.375000 1.437500 -7.375000 +v -0.375000 1.614277 -7.301777 +v -0.375000 1.687500 -7.125000 +v -0.375000 1.614277 -6.948223 +v -0.375000 1.437500 -6.875000 +v -0.375000 1.260723 -6.948223 +v -0.375000 1.187500 -7.125000 +v -0.375000 1.260723 -7.301777 +v -0.250000 1.437500 -7.375000 +v -0.250000 1.614277 -7.301777 +v -0.250000 1.687500 -7.125000 +v -0.250000 1.614277 -6.948223 +v -0.250000 1.437500 -6.875000 +v -0.250000 1.260723 -6.948223 +v -0.250000 1.187500 -7.125000 +v -0.250000 1.260723 -7.301777 +v -0.750000 -0.437500 -2.375000 +v -0.625000 -0.437500 -2.375000 +v -0.750000 -0.312500 -2.375000 +v -0.625000 -0.312500 -2.375000 +v -0.750000 -0.437500 -7.250000 +v -0.625000 -0.437500 -7.250000 +v -0.750000 -0.312500 -7.125000 +v -0.625000 -0.312500 -7.125000 +v -0.750000 0.312500 -7.250000 +v -0.625000 0.187500 -7.250000 +v -0.750000 0.312500 -7.125000 +v -0.625000 0.187500 -7.125000 +v -0.250000 0.312500 -7.250000 +v -0.250000 0.187500 -7.250000 +v -0.250000 0.312500 -7.125000 +v -0.250000 0.187500 -7.125000 +v -1.000000 1.187500 -5.562501 +v -1.000000 1.312500 -5.562501 +v -1.000000 1.187500 -5.687501 +v -1.000000 1.312500 -5.687501 +v 1.000000 1.187500 -5.562501 +v 1.000000 1.312500 -5.562501 +v 1.000000 1.187500 -5.687501 +v 1.000000 1.312500 -5.687501 +vt 0.028571 0.089888 +vt 0.600000 0.134831 +vt 0.028571 0.134831 +vt 0.628571 0.089888 +vt 0.600000 0.089888 +vt 0.042857 0.044944 +vt 0.014286 0.089888 +vt 0.600000 -0.000000 +vt 0.042857 -0.000000 +vt 0.014286 0.134831 +vt -0.000000 0.089888 +vt 0.042857 0.179775 +vt 0.028571 0.157303 +vt 0.714286 0.179775 +vt 0.657143 0.134831 +vt 0.714286 0.134831 +vt 1.000000 0.089888 +vt 0.971429 0.134831 +vt 0.971429 0.089888 +vt 0.735451 0.477528 +vt 0.733436 0.485181 +vt 0.723706 0.469876 +vt 0.735451 0.500000 +vt 0.733436 0.507652 +vt 0.723706 0.492347 +vt 0.714286 0.044944 +vt 0.714286 0.089888 +vt 0.971429 0.179775 +vt 0.714286 -0.000000 +vt 0.971429 0.044944 +vt 0.907093 0.443820 +vt 0.902924 0.459655 +vt 0.882791 0.427985 +vt 0.902924 0.472929 +vt 0.907093 0.488764 +vt 0.902924 0.504599 +vt 0.735451 0.477528 +vt 0.733436 0.485181 +vt 0.723706 0.469876 +vt 0.735451 0.500000 +vt 0.733436 0.507652 +vt 0.723706 0.492347 +vt 0.721692 0.432584 +vt 0.728571 0.421762 +vt 0.735451 0.432584 +vt 0.735451 0.455056 +vt 0.733436 0.462709 +vt 0.723707 0.447404 +vt 0.242857 0.921348 +vt 0.214286 0.898876 +vt 0.285714 0.764045 +vt 0.214286 0.764045 +vt 0.185714 0.898876 +vt 0.185714 0.764045 +vt 0.185714 0.943820 +vt 0.314286 0.955056 +vt 0.314286 0.764045 +vt 0.357143 0.921348 +vt 0.696429 0.590254 +vt 0.713942 0.601665 +vt 0.721196 0.629214 +vt 0.713942 0.578111 +vt 0.696429 0.589522 +vt 0.696429 0.511602 +vt 0.892857 0.511359 +vt 0.907065 0.533708 +vt 0.892857 0.556057 +vt 0.600000 0.567416 +vt 0.614286 0.533708 +vt 0.614286 0.567416 +vt 0.585714 0.533708 +vt 0.585714 0.567416 +vt 0.571429 0.567416 +vt 0.557143 0.567416 +vt 0.571429 0.533708 +vt 0.557143 0.533708 +vt 0.571429 0.511236 +vt 0.628571 0.089888 +vt 0.657143 0.089888 +vt 0.657143 -0.000000 +vt 0.657143 0.044944 +vt 0.035714 0.370787 +vt 0.207143 0.303371 +vt 0.207143 0.370787 +vt 0.207143 0.247191 +vt 0.035714 0.179775 +vt 0.207143 0.179775 +vt 0.035714 0.303371 +vt -0.000000 0.303371 +vt 0.035714 0.426966 +vt 0.242857 0.370787 +vt 0.242857 1.000000 +vt 0.285714 0.955056 +vt 0.285714 1.000000 +vt 0.214286 0.943820 +vt 0.185714 0.977528 +vt 0.135714 0.898847 +vt 0.121448 0.876405 +vt 0.135714 0.853963 +vt 0.164286 0.808989 +vt 0.178571 0.797753 +vt 0.178571 0.808989 +vt 0.164286 0.943820 +vt 0.178571 0.808989 +vt 0.178571 0.943820 +vt 0.178571 0.797753 +vt 0.164286 0.808989 +vt 0.164286 0.797753 +vt 0.157143 0.808989 +vt 0.157143 0.943820 +vt 0.164286 0.955056 +vt 0.178571 0.955056 +vt 0.185714 0.943820 +vt 0.185714 0.808989 +vt 0.185714 0.943820 +vt 0.178571 0.943820 +vt 0.164286 0.955056 +vt 0.164286 0.943820 +vt 0.157143 0.808989 +vt 0.121490 0.831461 +vt 0.135714 0.809085 +vt 0.149939 0.831461 +vt 0.135714 0.809086 +vt 0.149939 0.831461 +vt 0.135714 0.853836 +vt 0.935714 0.792135 +vt 0.664286 0.780899 +vt 0.935714 0.780899 +vt 0.935714 0.803371 +vt 0.664286 0.814607 +vt 0.657143 0.803371 +vt 0.935714 0.825843 +vt 0.935714 0.814607 +vt 0.657143 0.792135 +vt 0.650000 0.814607 +vt 0.621429 0.825843 +vt 0.614286 0.814607 +vt 0.621429 0.792135 +vt 0.650000 0.780899 +vt 0.614286 0.803371 +vt 0.585714 0.803371 +vt 0.607143 0.792135 +vt 0.585714 0.780899 +vt 0.607143 0.780899 +vt 0.607143 0.825843 +vt 0.585714 0.814607 +vt 0.585714 0.792135 +vt 0.500000 0.915730 +vt 0.385714 0.904494 +vt 0.500000 0.904494 +vt 0.385714 0.926966 +vt 0.500000 0.938202 +vt 0.385714 0.938202 +vt 0.385714 0.949438 +vt 0.500000 0.949438 +vt 0.385714 0.915730 +vt 0.628571 0.134831 +vt 0.028571 0.067416 +vt 0.600000 0.044944 +vt -0.000000 0.134831 +vt 0.600000 0.179775 +vt 0.657143 0.179775 +vt 1.000000 0.134831 +vt 0.728571 0.488350 +vt 0.723706 0.485181 +vt 0.721691 0.477528 +vt 0.728571 0.466706 +vt 0.733436 0.469876 +vt 0.728571 0.510822 +vt 0.723706 0.507652 +vt 0.721691 0.500000 +vt 0.728571 0.489177 +vt 0.733436 0.492347 +vt 0.971429 0.000000 +vt 0.892857 0.466214 +vt 0.882791 0.459655 +vt 0.878621 0.443820 +vt 0.892857 0.421426 +vt 0.902924 0.427985 +vt 0.892857 0.511158 +vt 0.882791 0.504599 +vt 0.878621 0.488764 +vt 0.882790 0.472929 +vt 0.892857 0.466370 +vt 0.728571 0.488350 +vt 0.723706 0.485181 +vt 0.721691 0.477528 +vt 0.728571 0.466706 +vt 0.733436 0.469876 +vt 0.728571 0.510822 +vt 0.723706 0.507652 +vt 0.721691 0.500000 +vt 0.728571 0.489177 +vt 0.733436 0.492347 +vt 0.733436 0.440236 +vt 0.728571 0.443406 +vt 0.723707 0.440236 +vt 0.723707 0.424931 +vt 0.733436 0.424931 +vt 0.728571 0.465878 +vt 0.723707 0.462709 +vt 0.721692 0.455056 +vt 0.728571 0.444234 +vt 0.733436 0.447404 +vt 0.242857 0.955056 +vt 0.385714 0.764045 +vt 0.385714 0.898876 +vt 0.357143 0.955056 +vt 0.713942 0.656762 +vt 0.696429 0.668174 +vt 0.678916 0.656762 +vt 0.671661 0.629214 +vt 0.678916 0.601665 +vt 0.678915 0.578111 +vt 0.671661 0.550562 +vt 0.678915 0.523013 +vt 0.713942 0.523013 +vt 0.721196 0.550562 +vt 0.882811 0.549511 +vt 0.878649 0.533708 +vt 0.882811 0.517905 +vt 0.902904 0.517905 +vt 0.902903 0.549511 +vt 0.600000 0.533708 +vt 0.557143 0.511236 +vt 0.628571 0.134831 +vt 0.035714 0.247191 +vt -0.000000 0.370787 +vt 0.207143 0.426966 +vt 0.242857 0.303371 +vt 0.214286 0.977528 +vt 0.149981 0.876405 +vt 0.145802 0.892274 +vt 0.125626 0.892274 +vt 0.125626 0.860536 +vt 0.145802 0.860536 +vt 0.164286 0.797753 +vt 0.185714 0.808989 +vt 0.178571 0.955056 +vt 0.157143 0.943820 +vt 0.145772 0.847282 +vt 0.135714 0.853836 +vt 0.125656 0.847283 +vt 0.125656 0.815639 +vt 0.145772 0.815639 +vt 0.125656 0.847283 +vt 0.121490 0.831461 +vt 0.125656 0.815639 +vt 0.145772 0.815639 +vt 0.145772 0.847283 +vt 0.664286 0.825843 +vt 0.650000 0.825843 +vt 0.621429 0.780899 +vt 0.585714 0.825843 +vt 0.500000 0.926966 +vt 0.642857 0.410112 +vt 0.957143 0.421348 +vt 0.642857 0.421348 +vt 0.642857 0.365169 +vt 0.957143 0.376404 +vt 0.642857 0.376404 +vt 0.642857 0.398876 +vt 0.957143 0.410112 +vt 0.642857 0.342697 +vt 0.957143 0.353933 +vt 0.642857 0.353933 +vt 0.957143 0.365169 +vt 0.957143 0.387640 +vt 0.642857 0.387640 +vt 0.642857 0.179775 +vt 0.242857 0.235955 +vt 0.642857 0.235955 +vt 0.242857 0.286517 +vt 0.642857 0.286517 +vt 0.242857 0.331461 +vt 0.642857 0.331461 +vt 0.957143 0.398876 +vt 0.642857 0.331461 +vt 0.957143 0.342697 +vt 0.735714 0.539326 +vt 0.878571 0.556180 +vt 0.735714 0.556180 +vt 0.735714 0.488764 +vt 0.878571 0.505618 +vt 0.735714 0.505618 +vt 0.735714 0.455056 +vt 0.878571 0.471910 +vt 0.735714 0.471910 +vt 0.735714 0.421348 +vt 0.878571 0.438202 +vt 0.735714 0.438202 +vt 0.735714 0.522472 +vt 0.878571 0.539326 +vt 0.878571 0.522472 +vt 0.878571 0.488764 +vt 0.878571 0.455056 +vt 0.242857 0.387640 +vt 0.642857 0.376404 +vt 0.642857 0.387640 +vt 0.242857 0.376404 +vt 0.642857 0.365169 +vt 0.642857 0.331461 +vt 0.957143 0.342697 +vt 0.642857 0.342697 +vt 0.957143 0.235955 +vt 0.642857 0.286517 +vt 0.642857 0.235955 +vt 0.242857 0.398876 +vt 0.642857 0.398876 +vt 0.957143 0.179775 +vt 0.642857 0.179775 +vt 0.242857 0.410112 +vt 0.642857 0.410112 +vt 0.642857 0.410112 +vt 0.957143 0.421348 +vt 0.642857 0.421348 +vt 0.242857 0.421348 +vt 0.642857 0.421348 +vt 0.642857 0.331461 +vt 0.957143 0.286517 +vt 0.642857 0.286517 +vt 0.642857 0.365169 +vt 0.957143 0.376404 +vt 0.642857 0.376404 +vt 0.242857 0.342697 +vt 0.642857 0.331461 +vt 0.642857 0.342697 +vt 0.642857 0.398876 +vt 0.957143 0.410112 +vt 0.642857 0.353933 +vt 0.957143 0.365169 +vt 0.242857 0.353933 +vt 0.642857 0.353933 +vt 0.642857 0.235955 +vt 0.957143 0.179775 +vt 0.642857 0.179775 +vt 0.957143 0.235955 +vt 0.242857 0.365169 +vt 0.642857 0.387640 +vt 0.957143 0.398876 +vt 0.957143 0.353933 +vt 0.957143 0.286517 +vt 0.642857 0.331461 +vt 0.957143 0.387640 +vt 0.642857 0.331461 +vt 0.957143 0.286517 +vt 0.642857 0.286517 +vt 0.957143 0.235955 +vt 0.642857 0.286517 +vt 0.642857 0.235955 +vt 0.957143 0.179775 +vt 0.642857 0.179775 +vt 0.957143 0.286517 +vt 0.642857 0.331461 +vt 0.642857 0.235955 +vt 0.957143 0.179775 +vt 0.642857 0.179775 +vt 0.957143 0.235955 +vt 0.242857 0.331461 +vt 0.642857 0.286517 +vt 0.642857 0.331461 +vt 0.242857 0.286517 +vt 0.642857 0.235955 +vt 0.242857 0.235955 +vt 0.642857 0.179775 +vt 0.107143 0.842697 +vt 0.100000 0.831461 +vt 0.107143 0.831461 +vt 0.107143 0.820225 +vt 0.100000 0.808989 +vt 0.107143 0.808989 +vt 0.107143 0.887640 +vt 0.100000 0.876405 +vt 0.107143 0.876405 +vt 0.107143 0.865169 +vt 0.100000 0.853933 +vt 0.107143 0.853933 +vt 0.100000 0.842697 +vt 0.100000 0.820225 +vt 0.107143 0.898876 +vt 0.100000 0.887640 +vt 0.100000 0.865169 +vt 0.671429 0.780899 +vt 0.642857 0.747191 +vt 0.671429 0.747191 +vt 0.614286 0.780899 +vt 0.614286 0.747191 +vt 0.642857 0.713483 +vt 0.614286 0.713483 +vt 0.642857 0.679775 +vt 0.614286 0.679775 +vt 0.614286 0.646067 +vt 0.642857 0.612360 +vt 0.614286 0.612360 +vt 0.614286 0.578652 +vt 0.642857 0.544944 +vt 0.614286 0.544944 +vt 0.614286 0.511236 +vt 0.671429 0.544944 +vt 0.642857 0.511236 +vt 0.671429 0.511236 +vt 0.671429 0.578652 +vt 0.642857 0.578652 +vt 0.671429 0.646067 +vt 0.671429 0.612360 +vt 0.671429 0.679775 +vt 0.642857 0.646067 +vt 0.671429 0.713483 +vt 0.932143 0.606742 +vt 0.796429 0.589888 +vt 0.932143 0.589888 +vt 0.932143 0.573034 +vt 0.796429 0.556180 +vt 0.932143 0.556180 +vt 0.932143 0.674157 +vt 0.796429 0.657303 +vt 0.932143 0.657303 +vt 0.932143 0.640449 +vt 0.796429 0.623595 +vt 0.932143 0.623595 +vt 0.796429 0.606742 +vt 0.796429 0.573034 +vt 0.932143 0.691011 +vt 0.796429 0.674157 +vt 0.796429 0.640449 +vt 0.321429 0.471910 +vt 0.035714 0.449438 +vt 0.321429 0.449438 +vt 0.321429 0.584270 +vt 0.035714 0.561798 +vt 0.321429 0.561798 +vt 0.321429 0.539326 +vt 0.035714 0.516854 +vt 0.321429 0.516854 +vt 0.321429 0.651685 +vt 0.035714 0.629214 +vt 0.321429 0.629214 +vt 0.035714 0.426966 +vt 0.321429 0.426966 +vt 0.035714 0.494382 +vt 0.321429 0.494382 +vt 0.035714 0.606742 +vt 0.321429 0.606742 +vt 0.321429 0.696629 +vt 0.035714 0.674157 +vt 0.321429 0.674157 +vt 0.035714 0.471910 +vt 0.035714 0.584270 +vt 0.035714 0.539326 +vt 0.035714 0.651685 +vt 0.342857 0.522472 +vt 0.342857 0.533708 +vt 0.342857 0.544944 +vt 0.342857 0.556180 +vt 0.342857 0.578652 +vt 0.342857 0.589888 +vt 0.342857 0.601124 +vt 0.342857 0.612360 +vt 0.342857 0.623595 +vt 0.342857 0.646067 +vt 0.342857 0.657303 +vt 0.342857 0.668539 +vt 0.342857 0.679775 +vt 0.342857 0.691011 +vt 0.342857 0.443820 +vt 0.342857 0.466292 +vt 0.342857 0.477528 +vt 0.342857 0.488764 +vt 0.342857 0.511236 +vt 0.014286 0.556180 +vt 0.357143 0.528090 +vt 0.342857 0.500000 +vt 0.357143 0.505618 +vt 0.357143 0.483146 +vt 0.342857 0.455056 +vt 0.357143 0.460674 +vt 0.342857 0.432584 +vt 0.357143 0.438202 +vt 0.357143 0.685393 +vt 0.357143 0.662921 +vt 0.342857 0.634831 +vt 0.357143 0.640449 +vt 0.357143 0.617977 +vt 0.357143 0.595506 +vt 0.342857 0.567416 +vt 0.357143 0.573034 +vt 0.357143 0.550562 +vt 0.014286 0.522472 +vt 0.014286 0.511236 +vt 0.014286 0.477528 +vt 0.014286 0.466292 +vt 0.014286 0.432584 +vt 0.014286 0.691011 +vt 0.035714 0.696629 +vt 0.014286 0.657303 +vt 0.014286 0.646067 +vt 0.014286 0.612360 +vt 0.014286 0.589888 +vt 0.014286 0.578652 +vt 0.014286 0.544944 +vt -0.000000 0.550562 +vt 0.014286 0.567416 +vt -0.000000 0.573034 +vt 0.014286 0.601124 +vt -0.000000 0.595506 +vt 0.014286 0.623595 +vt -0.000000 0.617977 +vt 0.014286 0.634831 +vt -0.000000 0.640449 +vt 0.014286 0.668539 +vt -0.000000 0.662921 +vt 0.014286 0.679775 +vt -0.000000 0.685393 +vt 0.014286 0.443820 +vt 0.000000 0.438202 +vt 0.014286 0.455056 +vt -0.000000 0.460674 +vt 0.014286 0.488764 +vt -0.000000 0.483146 +vt 0.014286 0.500000 +vt -0.000000 0.505618 +vt 0.014286 0.533708 +vt -0.000000 0.528090 +vt 0.721429 0.421348 +vt 0.357143 0.432584 +vt 0.357143 0.421348 +vt 0.721429 0.488764 +vt 0.357143 0.500000 +vt 0.357143 0.488764 +vt 0.721429 0.466292 +vt 0.357143 0.477528 +vt 0.357143 0.466292 +vt 0.721429 0.455056 +vt 0.357143 0.455056 +vt 0.721429 0.432584 +vt 0.357143 0.443820 +vt 0.721429 0.500000 +vt 0.357143 0.511236 +vt 0.721429 0.477528 +vt 0.721429 0.443820 +vt 0.121429 0.859551 +vt 0.107143 0.876405 +vt 0.107143 0.859551 +vt 0.121429 0.825843 +vt 0.107143 0.842697 +vt 0.107143 0.825843 +vt 0.121429 0.926966 +vt 0.107143 0.943820 +vt 0.107143 0.926966 +vt 0.121429 0.893258 +vt 0.107143 0.910112 +vt 0.107143 0.893258 +vt 0.121429 0.842697 +vt 0.121429 0.808989 +vt 0.107143 0.808989 +vt 0.121429 0.910112 +vt 0.121429 0.876405 +vt 0.157143 0.842697 +vt 0.150000 0.825843 +vt 0.157143 0.825843 +vt 0.157143 0.943820 +vt 0.150000 0.926966 +vt 0.157143 0.926966 +vt 0.157143 0.910112 +vt 0.150000 0.893258 +vt 0.157143 0.893258 +vt 0.157143 0.876405 +vt 0.150000 0.859551 +vt 0.157143 0.859551 +vt 0.150000 0.808989 +vt 0.157143 0.808989 +vt 0.150000 0.910112 +vt 0.150000 0.876405 +vt 0.150000 0.842697 +vt 0.157143 0.842697 +vt 0.150000 0.825843 +vt 0.157143 0.825843 +vt 0.157143 0.943820 +vt 0.150000 0.926966 +vt 0.157143 0.926966 +vt 0.157143 0.910112 +vt 0.150000 0.893258 +vt 0.157143 0.893258 +vt 0.157143 0.876405 +vt 0.150000 0.859551 +vt 0.157143 0.859551 +vt 0.150000 0.808989 +vt 0.157143 0.808989 +vt 0.150000 0.910112 +vt 0.150000 0.876405 +vt 0.150000 0.842697 +vt 0.242857 0.179775 +vt 0.957143 0.331461 +vt 0.878571 0.421348 +vt 0.957143 0.331461 +vt 0.957143 0.331461 +vt 0.242857 0.331461 +vt 0.957143 0.331461 +vt 0.957143 0.331461 +vt 0.957143 0.331461 +vt 0.242857 0.179775 +vt 0.100000 0.898876 +vt 0.642857 0.780899 +vt 0.796429 0.691011 +vt 0.721429 0.511236 +vt 0.121429 0.943820 +vt 0.150000 0.943820 +vt 0.150000 0.943820 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.8944 0.4472 +vn 0.0000 -0.8944 -0.4472 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.6000 -0.8000 0.0000 +vn -0.7678 -0.6407 0.0000 +vn -0.9732 -0.2298 0.0000 +vn 0.7678 -0.6407 0.0000 +vn 0.9732 -0.2298 0.0000 +vn 0.6000 -0.8000 0.0000 +vn -0.9732 0.2298 0.0000 +vn 0.7678 0.6407 0.0000 +vn 0.9732 0.2298 0.0000 +vn 0.6000 0.8000 0.0000 +vn -0.7678 0.6407 0.0000 +vn -0.6000 0.8000 0.0000 +vn -0.0000 -0.9923 -0.1240 +vn -0.7016 -0.7016 -0.1240 +vn 0.0000 -0.9923 0.1240 +vn -0.7016 -0.7016 0.1240 +vn -0.9923 -0.0000 0.1240 +vn -0.7016 0.7016 0.1240 +vn 0.0000 0.9923 0.1240 +vn 0.7016 0.7016 0.1240 +vn 0.9923 0.0000 0.1240 +vn 0.7016 -0.7016 0.1240 +vn 0.7016 -0.7016 -0.1240 +vn 0.9923 0.0000 -0.1240 +vn 0.0000 0.9923 -0.1240 +vn 0.7016 0.7016 -0.1240 +vn -0.7016 0.7016 -0.1240 +vn -0.9923 0.0000 -0.1240 +vn -0.8371 -0.4833 0.2563 +vn -0.4833 -0.8371 -0.2563 +vn -0.4833 -0.8371 0.2563 +vn 0.4833 0.8371 0.2563 +vn -0.0000 0.9666 -0.2563 +vn -0.0000 0.9666 0.2563 +vn -0.4833 0.8371 0.2563 +vn -0.8371 0.4833 -0.2563 +vn -0.8371 0.4833 0.2563 +vn 0.8371 -0.4833 0.2563 +vn 0.9666 0.0000 -0.2563 +vn 0.9666 -0.0000 0.2563 +vn 0.0000 -0.9666 -0.2563 +vn -0.0000 -0.9666 0.2563 +vn -0.9666 -0.0000 -0.2563 +vn -0.9666 0.0000 0.2563 +vn 0.8371 0.4833 -0.2563 +vn 0.8371 0.4833 0.2563 +vn 0.4833 -0.8371 -0.2563 +vn 0.4833 -0.8371 0.2563 +vn -0.8371 -0.4833 -0.2563 +vn 0.4833 0.8371 -0.2563 +vn -0.4833 0.8371 -0.2563 +vn 0.8371 -0.4833 -0.2563 +vn -0.6087 0.3515 0.7113 +vn -0.3515 0.6087 0.7113 +vn -0.0000 0.7029 0.7113 +vn 0.3515 0.6087 0.7113 +vn 0.6087 0.3515 0.7113 +vn 0.7029 0.0000 0.7113 +vn 0.6087 -0.3515 0.7113 +vn 0.3515 -0.6087 0.7113 +vn 0.0000 -0.7029 0.7113 +vn -0.3515 -0.6087 0.7113 +vn -0.6087 -0.3515 0.7113 +vn -0.7029 0.0000 0.7113 +vn 0.0000 0.7029 -0.7113 +vn -0.6087 0.3515 -0.7113 +vn -0.6087 -0.3515 -0.7113 +vn -0.0000 -0.7029 -0.7113 +vn 0.6087 -0.3515 -0.7113 +vn 0.6087 0.3515 -0.7113 +vn 0.3515 0.6087 -0.7113 +vn -0.3515 0.6087 -0.7113 +vn 0.7029 0.0000 -0.7113 +vn 0.3515 -0.6087 -0.7113 +vn -0.3515 -0.6087 -0.7113 +vn -0.7029 -0.0000 -0.7113 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +s off +f 373/600/173 374/601/173 372/602/173 +f 381/603/174 374/601/174 375/604/174 +f 380/605/175 375/604/175 373/600/175 +f 372/602/176 377/606/176 373/600/176 +f 378/607/177 380/605/177 379/608/177 +f 376/609/178 380/610/178 377/606/178 +f 379/611/179 376/612/179 372/602/179 +f 408/613/179 641/614/179 406/615/179 +f 412/616/174 411/617/174 410/618/174 +f 403/619/176 404/620/176 400/621/176 +f 391/622/174 390/623/174 394/624/174 +f 409/625/175 410/618/175 407/626/175 +f 407/626/173 411/617/173 406/615/173 +f 406/615/179 413/627/179 408/613/179 +f 408/628/177 412/629/177 409/625/177 +f 420/630/176 421/631/176 417/632/176 +f 425/633/174 423/634/174 422/635/174 +f 437/636/176 436/637/176 440/638/176 +f 470/639/174 472/640/174 465/641/174 +f 448/642/176 452/643/176 467/644/176 +f 449/645/174 447/646/174 459/647/174 +f 484/648/175 482/649/175 478/650/175 +f 480/651/176 483/652/176 481/653/176 +f 482/649/180 485/654/180 483/652/180 +f 653/655/179 479/656/179 485/657/179 +f 530/658/174 529/659/174 528/660/174 +f 541/661/176 534/662/176 538/663/176 +f 562/664/176 564/665/176 558/666/176 +f 618/667/179 620/668/179 616/669/179 +f 623/670/174 618/667/174 619/671/174 +f 617/672/175 623/670/175 619/671/175 +f 616/673/176 621/674/176 617/672/176 +f 620/675/177 623/676/177 621/674/177 +f 641/614/176 642/677/176 640/678/176 +f 409/625/181 643/679/181 408/628/181 +f 409/625/175 640/678/175 642/680/175 +f 406/615/180 640/678/180 407/626/180 +f 647/681/173 644/682/173 645/683/173 +f 648/684/177 651/685/177 649/686/177 +f 646/687/175 648/684/175 644/682/175 +f 647/681/176 650/688/176 646/687/176 +f 645/683/179 651/689/179 647/681/179 +f 644/682/174 649/690/174 645/683/174 +f 655/691/173 652/692/173 653/693/173 +f 484/694/176 655/695/176 485/654/176 +f 664/696/174 670/697/174 668/698/174 +f 680/699/177 686/700/177 682/701/177 +f 679/702/175 676/703/175 677/704/175 +f 672/705/177 678/706/177 674/707/177 +f 674/708/176 679/702/176 675/709/176 +f 675/710/173 677/704/173 673/711/173 +f 673/712/174 676/703/174 672/713/174 +f 682/701/176 687/714/176 683/715/176 +f 683/715/173 685/716/173 681/717/173 +f 681/717/174 684/718/174 680/699/174 +f 680/699/179 683/715/179 681/717/179 +f 700/719/175 702/720/175 696/721/175 +f 710/722/179 708/723/179 706/724/179 +f 721/725/175 727/726/175 723/727/175 +f 720/728/179 726/729/179 724/730/179 +f 723/731/173 726/729/173 722/732/173 +f 720/728/177 725/733/177 721/725/177 +f 726/734/176 731/735/176 730/736/176 +f 724/730/174 729/737/174 725/733/174 +f 729/737/175 727/738/175 725/733/175 +f 726/734/179 728/739/179 724/730/179 +f 730/736/173 732/740/173 728/739/173 +f 729/741/177 735/742/177 731/743/177 +f 731/744/176 734/745/176 730/736/176 +f 729/741/174 732/740/174 733/746/174 +f 653/655/174 478/650/174 479/656/174 +f 739/747/174 742/748/174 738/749/174 +f 741/750/176 736/751/176 740/752/176 +f 742/753/177 736/751/177 738/754/177 +f 739/747/173 741/750/173 743/755/173 +f 373/600/173 375/604/173 374/601/173 +f 381/603/174 378/756/174 374/601/174 +f 373/600/175 377/757/175 380/605/175 +f 380/605/175 381/758/175 375/604/175 +f 372/602/176 376/609/176 377/606/176 +f 378/607/177 381/758/177 380/605/177 +f 376/609/178 379/759/178 380/610/178 +f 372/602/179 374/601/179 379/611/179 +f 374/601/179 378/760/179 379/611/179 +f 408/613/179 643/761/179 641/614/179 +f 412/616/174 413/762/174 411/617/174 +f 404/620/176 405/763/176 398/764/176 +f 398/764/176 399/765/176 404/620/176 +f 399/765/176 400/621/176 404/620/176 +f 400/621/176 401/766/176 402/767/176 +f 402/767/176 403/619/176 400/621/176 +f 390/623/174 397/768/174 396/769/174 +f 396/769/174 395/770/174 390/623/174 +f 395/770/174 394/624/174 390/623/174 +f 394/624/174 393/771/174 392/772/174 +f 392/772/174 391/622/174 394/624/174 +f 409/625/175 412/629/175 410/618/175 +f 407/626/173 410/618/173 411/617/173 +f 406/615/179 411/617/179 413/627/179 +f 408/628/177 413/773/177 412/629/177 +f 421/631/176 414/774/176 417/632/176 +f 414/774/176 415/775/176 417/632/176 +f 415/775/176 416/776/176 417/632/176 +f 417/632/176 418/777/176 419/778/176 +f 419/778/176 420/630/176 417/632/176 +f 422/635/174 424/779/174 429/780/174 +f 429/780/174 428/781/174 422/635/174 +f 428/781/174 427/782/174 422/635/174 +f 427/782/174 426/783/174 422/635/174 +f 426/783/174 425/633/174 422/635/174 +f 436/637/176 435/784/176 442/785/176 +f 442/785/176 441/786/176 436/637/176 +f 441/786/176 440/638/176 436/637/176 +f 440/638/176 439/787/176 438/788/176 +f 438/788/176 437/636/176 440/638/176 +f 472/640/174 460/789/174 461/790/174 +f 461/790/174 462/791/174 472/640/174 +f 462/791/174 465/641/174 472/640/174 +f 465/641/174 466/792/174 468/793/174 +f 468/793/174 470/639/174 465/641/174 +f 467/644/176 474/794/176 476/795/176 +f 476/795/176 446/796/176 448/642/176 +f 448/642/176 450/797/176 452/643/176 +f 452/643/176 458/798/176 467/644/176 +f 467/644/176 476/795/176 448/642/176 +f 447/646/174 477/799/174 475/800/174 +f 475/800/174 473/801/174 447/646/174 +f 473/801/174 459/647/174 447/646/174 +f 459/647/174 453/802/174 451/803/174 +f 451/803/174 449/645/174 459/647/174 +f 480/651/175 478/650/175 482/649/175 +f 478/650/175 652/692/175 484/648/175 +f 652/692/175 654/804/175 484/648/175 +f 480/651/176 482/649/176 483/652/176 +f 482/649/180 484/694/180 485/654/180 +f 481/805/179 483/806/179 479/656/179 +f 483/806/179 485/657/179 479/656/179 +f 485/657/179 655/807/179 653/655/179 +f 528/660/174 527/808/174 526/809/174 +f 526/809/174 533/810/174 528/660/174 +f 533/810/174 532/811/174 528/660/174 +f 532/811/174 531/812/174 528/660/174 +f 531/812/174 530/658/174 528/660/174 +f 534/662/176 535/813/176 538/663/176 +f 535/813/176 536/814/176 538/663/176 +f 536/814/176 537/815/176 538/663/176 +f 538/663/176 539/816/176 540/817/176 +f 540/817/176 541/661/176 538/663/176 +f 558/666/176 559/818/176 560/819/176 +f 560/819/176 561/820/176 562/664/176 +f 562/664/176 563/821/176 564/665/176 +f 564/665/176 565/822/176 558/666/176 +f 558/666/176 560/819/176 562/664/176 +f 618/667/179 622/823/179 620/668/179 +f 623/670/174 622/823/174 618/667/174 +f 617/672/175 621/674/175 623/670/175 +f 616/673/176 620/675/176 621/674/176 +f 620/675/177 622/824/177 623/676/177 +f 641/614/176 643/825/176 642/677/176 +f 409/625/181 642/680/181 643/679/181 +f 409/625/175 407/626/175 640/678/175 +f 406/615/180 641/614/180 640/678/180 +f 647/681/173 646/687/173 644/682/173 +f 648/684/177 650/826/177 651/685/177 +f 646/687/175 650/826/175 648/684/175 +f 647/681/176 651/827/176 650/688/176 +f 645/683/179 649/828/179 651/689/179 +f 644/682/174 648/829/174 649/690/174 +f 655/691/173 654/804/173 652/692/173 +f 484/694/176 654/830/176 655/695/176 +f 666/831/174 665/832/174 664/696/174 +f 664/696/174 671/833/174 670/697/174 +f 670/697/174 669/834/174 668/698/174 +f 668/698/174 667/835/174 666/831/174 +f 666/831/174 664/696/174 668/698/174 +f 680/699/177 684/836/177 686/700/177 +f 679/702/175 678/706/175 676/703/175 +f 672/705/177 676/703/177 678/706/177 +f 674/708/176 678/706/176 679/702/176 +f 675/710/173 679/702/173 677/704/173 +f 673/712/174 677/704/174 676/703/174 +f 682/701/176 686/837/176 687/714/176 +f 683/715/173 687/838/173 685/716/173 +f 681/717/174 685/839/174 684/718/174 +f 680/699/179 682/701/179 683/715/179 +f 696/721/175 697/840/175 698/841/175 +f 698/841/175 699/842/175 700/719/175 +f 700/719/175 701/843/175 702/720/175 +f 702/720/175 703/844/175 696/721/175 +f 696/721/175 698/841/175 700/719/175 +f 706/724/179 705/845/179 704/846/179 +f 704/846/179 711/847/179 710/722/179 +f 710/722/179 709/848/179 708/723/179 +f 708/723/179 707/849/179 706/724/179 +f 706/724/179 704/846/179 710/722/179 +f 721/725/175 725/733/175 727/726/175 +f 720/728/179 722/732/179 726/729/179 +f 723/731/173 727/850/173 726/729/173 +f 720/728/177 724/730/177 725/733/177 +f 726/734/176 727/851/176 731/735/176 +f 724/730/174 728/739/174 729/737/174 +f 729/737/175 731/852/175 727/738/175 +f 726/734/179 730/736/179 728/739/179 +f 730/736/173 734/745/173 732/740/173 +f 729/741/177 733/746/177 735/742/177 +f 731/744/176 735/853/176 734/745/176 +f 729/741/174 728/739/174 732/740/174 +f 653/655/174 652/692/174 478/650/174 +f 739/747/174 743/755/174 742/748/174 +f 741/750/176 737/854/176 736/751/176 +f 742/753/177 740/752/177 736/751/177 +f 739/747/173 737/854/173 741/750/173 +s 1 +f 400/855/182 393/856/177 401/857/177 +f 404/858/183 397/859/173 405/860/173 +f 399/861/179 392/862/182 400/855/182 +f 402/863/184 395/864/175 403/865/175 +f 403/865/175 396/866/183 404/858/183 +f 405/860/173 390/867/185 398/868/185 +f 389/869/186 386/870/187 387/871/187 +f 387/871/187 384/872/188 385/873/188 +f 385/873/188 383/874/179 382/875/179 +f 398/868/185 391/876/179 399/861/179 +f 401/877/177 394/878/184 402/863/184 +f 417/879/182 426/880/177 418/881/177 +f 414/882/173 422/883/185 415/884/185 +f 420/885/175 429/886/183 421/887/183 +f 418/888/177 427/889/184 419/890/184 +f 416/891/179 425/892/182 417/879/182 +f 415/884/185 423/893/179 416/891/179 +f 421/887/183 424/894/173 414/882/173 +f 419/890/184 428/895/175 420/885/175 +f 446/896/185 477/897/173 447/898/185 +f 476/899/173 475/900/183 477/897/173 +f 439/901/177 465/902/184 438/903/184 +f 456/904/189 431/905/190 432/906/189 +f 448/907/179 447/898/185 449/908/179 +f 457/909/191 432/906/189 433/910/191 +f 450/911/182 449/908/179 451/912/182 +f 440/913/182 466/914/177 439/915/177 +f 452/916/177 451/912/182 453/917/177 +f 434/918/179 464/919/188 443/920/188 +f 436/921/183 460/922/173 435/923/173 +f 458/924/184 453/925/177 459/926/184 +f 441/927/179 468/928/182 440/913/182 +f 437/929/175 461/930/183 436/921/183 +f 467/931/175 459/926/184 473/932/175 +f 444/933/187 471/934/186 445/935/186 +f 443/920/188 463/936/187 444/933/187 +f 474/937/183 473/932/175 475/900/183 +f 442/938/185 470/939/179 441/927/179 +f 438/903/184 462/940/175 437/929/175 +f 454/941/190 430/942/175 431/905/190 +f 435/923/173 472/943/185 442/938/185 +f 501/944/179 493/945/192 500/946/192 +f 489/947/193 496/948/194 495/949/193 +f 486/950/195 495/949/193 494/951/195 +f 488/952/194 497/953/175 496/948/194 +f 499/954/196 490/955/197 498/956/197 +f 500/946/192 491/957/196 499/954/196 +f 508/958/175 506/959/194 509/960/175 +f 507/961/194 504/962/193 506/959/194 +f 505/963/193 502/964/195 504/962/193 +f 517/965/183 524/966/175 516/967/175 +f 515/968/184 522/969/177 514/970/177 +f 513/971/182 520/972/179 512/973/179 +f 511/974/185 518/975/173 510/976/173 +f 510/976/173 525/977/183 517/965/183 +f 516/967/175 523/978/184 515/968/184 +f 514/979/177 521/980/182 513/971/182 +f 512/973/179 519/981/185 511/974/185 +f 530/982/198 545/983/182 529/984/199 +f 545/983/182 538/985/200 537/986/201 +f 544/987/179 537/986/201 536/988/202 +f 543/989/185 536/988/202 535/990/203 +f 534/991/204 543/989/185 535/990/203 +f 549/992/183 534/991/204 541/993/205 +f 540/994/206 549/992/183 541/993/205 +f 547/995/184 540/994/206 539/996/207 +f 538/997/200 547/995/184 539/996/207 +f 531/998/208 546/999/177 530/1000/198 +f 532/1001/209 547/995/184 531/998/208 +f 532/1001/209 549/992/183 548/1002/175 +f 526/1003/210 549/992/183 533/1004/211 +f 527/1005/212 542/1006/173 526/1003/210 +f 528/1007/213 543/989/185 527/1005/212 +f 528/1007/213 545/983/182 544/987/179 +f 557/1008/183 564/1009/175 556/1010/175 +f 555/1011/184 562/1012/177 554/1013/177 +f 553/1014/182 560/1015/179 552/1016/179 +f 551/1017/185 558/1018/173 550/1019/173 +f 550/1019/173 565/1020/183 557/1008/183 +f 556/1010/175 563/1021/184 555/1011/184 +f 554/1022/177 561/1023/182 553/1014/182 +f 552/1016/179 559/1024/185 551/1017/185 +f 570/1025/214 583/1026/215 571/1027/216 +f 577/1028/217 578/1029/218 566/1030/219 +f 567/1031/220 580/1032/221 568/1033/222 +f 574/1034/223 587/1035/224 575/1036/225 +f 571/1027/216 584/1037/226 572/1038/227 +f 568/1033/222 581/1039/228 569/1040/229 +f 575/1036/225 588/1041/230 576/1042/231 +f 572/1043/227 585/1044/232 573/1045/233 +f 569/1040/229 582/1046/234 570/1025/214 +f 576/1042/231 589/1047/235 577/1028/217 +f 566/1030/219 579/1048/236 567/1031/220 +f 573/1045/233 586/1049/237 574/1034/223 +f 567/1031/220 592/1050/238 591/1051/239 +f 566/1030/219 591/1052/239 590/1053/240 +f 566/1030/219 601/1054/241 577/1028/217 +f 576/1042/231 601/1055/241 600/1056/242 +f 575/1036/225 600/1057/242 599/1058/243 +f 575/1036/225 598/1059/244 574/1034/223 +f 573/1045/233 598/1060/244 597/1061/245 +f 572/1043/227 597/1062/245 596/1063/246 +f 572/1038/227 595/1064/247 571/1027/216 +f 571/1027/216 594/1065/248 570/1025/214 +f 569/1040/229 594/1066/248 593/1067/249 +f 569/1040/229 592/1068/238 568/1033/222 +f 603/1069/250 579/1048/236 578/1029/218 +f 591/1051/239 592/1050/238 602/1070/176 +f 592/1068/238 593/1071/249 602/1072/176 +f 593/1067/249 594/1066/248 602/1073/176 +f 594/1065/248 595/1074/247 602/1075/176 +f 595/1064/247 596/1076/246 602/1077/176 +f 596/1063/246 597/1062/245 602/1078/176 +f 597/1061/245 598/1060/244 602/1079/176 +f 598/1059/244 599/1080/243 602/1081/176 +f 599/1058/243 600/1057/242 602/1082/176 +f 600/1056/242 601/1055/241 602/1083/176 +f 601/1054/241 590/1084/240 602/1085/176 +f 590/1053/240 591/1052/239 602/1086/176 +f 579/1048/236 605/1087/251 580/1032/221 +f 605/1088/251 581/1039/228 580/1032/221 +f 581/1039/228 607/1089/252 582/1046/234 +f 607/1090/252 583/1026/215 582/1046/234 +f 583/1026/215 609/1091/253 584/1037/226 +f 609/1092/253 585/1044/232 584/1093/226 +f 585/1044/232 611/1094/254 586/1049/237 +f 611/1095/254 587/1035/224 586/1049/237 +f 587/1035/224 613/1096/255 588/1041/230 +f 588/1041/230 614/1097/256 589/1047/235 +f 614/1098/256 578/1029/218 589/1047/235 +f 604/1099/257 603/1069/250 615/1100/174 +f 603/1101/250 614/1098/256 615/1102/174 +f 614/1097/256 613/1103/255 615/1104/174 +f 613/1096/255 612/1105/258 615/1106/174 +f 612/1107/258 611/1095/254 615/1108/174 +f 611/1094/254 610/1109/259 615/1110/174 +f 610/1111/259 609/1092/253 615/1112/174 +f 609/1091/253 608/1113/260 615/1114/174 +f 608/1115/260 607/1090/252 615/1116/174 +f 607/1089/252 606/1117/261 615/1118/174 +f 606/1119/261 605/1088/251 615/1120/174 +f 605/1087/251 604/1121/257 615/1122/174 +f 636/1123/177 629/1124/184 628/1125/177 +f 634/1126/179 627/1127/182 626/1128/179 +f 632/1129/173 625/1130/185 624/1131/173 +f 639/1132/183 624/1131/173 631/1133/183 +f 637/1134/184 630/1135/175 629/1124/184 +f 635/1136/182 628/1137/177 627/1127/182 +f 633/1138/185 626/1128/179 625/1130/185 +f 638/1139/175 631/1133/183 630/1135/175 +f 671/1140/183 656/1141/173 663/1142/183 +f 669/1143/184 662/1144/175 661/1145/184 +f 667/1146/182 660/1147/177 659/1148/182 +f 665/1149/185 658/1150/179 657/1151/185 +f 670/1152/175 663/1142/183 662/1144/175 +f 668/1153/177 661/1145/184 660/1154/177 +f 666/1155/179 659/1148/182 658/1150/179 +f 664/1156/173 657/1151/185 656/1141/173 +f 688/1157/174 703/1158/262 695/1159/262 +f 694/1160/177 701/1161/178 693/1162/178 +f 692/1163/176 699/1164/263 691/1165/263 +f 690/1166/173 697/1167/264 689/1168/264 +f 695/1159/262 702/1169/177 694/1170/177 +f 693/1162/178 700/1171/176 692/1163/176 +f 691/1165/263 698/1172/173 690/1166/173 +f 689/1168/264 696/1173/174 688/1157/174 +f 704/1174/174 719/1175/262 711/1176/262 +f 710/1177/177 717/1178/178 709/1179/178 +f 708/1180/176 715/1181/263 707/1182/263 +f 706/1183/173 713/1184/264 705/1185/264 +f 711/1176/262 718/1186/177 710/1187/177 +f 709/1179/178 716/1188/176 708/1180/176 +f 707/1182/263 714/1189/173 706/1183/173 +f 705/1185/264 712/1190/174 704/1174/174 +f 400/855/182 392/862/182 393/856/177 +f 404/858/183 396/866/183 397/859/173 +f 399/861/179 391/876/179 392/862/182 +f 402/863/184 394/878/184 395/864/175 +f 403/865/175 395/864/175 396/866/183 +f 405/860/173 397/859/173 390/867/185 +f 389/869/186 388/1191/186 386/870/187 +f 387/871/187 386/870/187 384/872/188 +f 385/873/188 384/872/188 383/874/179 +f 398/868/185 390/867/185 391/876/179 +f 401/877/177 393/1192/177 394/878/184 +f 417/879/182 425/892/182 426/880/177 +f 414/882/173 424/894/173 422/883/185 +f 420/885/175 428/895/175 429/886/183 +f 418/888/177 426/1193/177 427/889/184 +f 416/891/179 423/893/179 425/892/182 +f 415/884/185 422/883/185 423/893/179 +f 421/887/183 429/886/183 424/894/173 +f 419/890/184 427/889/184 428/895/175 +f 446/896/185 476/899/173 477/897/173 +f 476/899/173 474/937/183 475/900/183 +f 439/901/177 466/1194/177 465/902/184 +f 456/904/189 454/941/190 431/905/190 +f 448/907/179 446/896/185 447/898/185 +f 457/909/191 456/904/189 432/906/189 +f 450/911/182 448/907/179 449/908/179 +f 440/913/182 468/928/182 466/914/177 +f 452/916/177 450/911/182 451/912/182 +f 434/918/179 469/1195/179 464/919/188 +f 436/921/183 461/930/183 460/922/173 +f 458/924/184 452/1196/177 453/925/177 +f 441/927/179 470/939/179 468/928/182 +f 437/929/175 462/940/175 461/930/183 +f 467/931/175 458/924/184 459/926/184 +f 444/933/187 463/936/187 471/934/186 +f 443/920/188 464/919/188 463/936/187 +f 474/937/183 467/931/175 473/932/175 +f 442/938/185 472/943/185 470/939/179 +f 438/903/184 465/902/184 462/940/175 +f 454/941/190 455/1197/175 430/942/175 +f 435/923/173 460/922/173 472/943/185 +f 501/944/179 492/1198/179 493/945/192 +f 489/947/193 488/952/194 496/948/194 +f 486/950/195 489/947/193 495/949/193 +f 488/952/194 487/1199/175 497/953/175 +f 499/954/196 491/957/196 490/955/197 +f 500/946/192 493/945/192 491/957/196 +f 508/958/175 507/961/194 506/959/194 +f 507/961/194 505/963/193 504/962/193 +f 505/963/193 503/1200/195 502/964/195 +f 517/965/183 525/977/183 524/966/175 +f 515/968/184 523/978/184 522/969/177 +f 513/971/182 521/980/182 520/972/179 +f 511/974/185 519/981/185 518/975/173 +f 510/976/173 518/975/173 525/977/183 +f 516/967/175 524/966/175 523/978/184 +f 514/979/177 522/1201/177 521/980/182 +f 512/973/179 520/972/179 519/981/185 +f 530/982/198 546/1202/177 545/983/182 +f 545/983/182 546/1202/177 538/985/200 +f 544/987/179 545/983/182 537/986/201 +f 543/989/185 544/987/179 536/988/202 +f 534/991/204 542/1006/173 543/989/185 +f 549/992/183 542/1006/173 534/991/204 +f 540/994/206 548/1002/175 549/992/183 +f 547/995/184 548/1002/175 540/994/206 +f 538/997/200 546/999/177 547/995/184 +f 531/998/208 547/995/184 546/999/177 +f 532/1001/209 548/1002/175 547/995/184 +f 532/1001/209 533/1004/211 549/992/183 +f 526/1003/210 542/1006/173 549/992/183 +f 527/1005/212 543/989/185 542/1006/173 +f 528/1007/213 544/987/179 543/989/185 +f 528/1007/213 529/984/199 545/983/182 +f 557/1008/183 565/1020/183 564/1009/175 +f 555/1011/184 563/1021/184 562/1012/177 +f 553/1014/182 561/1023/182 560/1015/179 +f 551/1017/185 559/1024/185 558/1018/173 +f 550/1019/173 558/1018/173 565/1020/183 +f 556/1010/175 564/1009/175 563/1021/184 +f 554/1022/177 562/1203/177 561/1023/182 +f 552/1016/179 560/1015/179 559/1024/185 +f 570/1025/214 582/1046/234 583/1026/215 +f 577/1028/217 589/1047/235 578/1029/218 +f 567/1031/220 579/1048/236 580/1032/221 +f 574/1034/223 586/1049/237 587/1035/224 +f 571/1027/216 583/1026/215 584/1037/226 +f 568/1033/222 580/1032/221 581/1039/228 +f 575/1036/225 587/1035/224 588/1041/230 +f 572/1043/227 584/1093/226 585/1044/232 +f 569/1040/229 581/1039/228 582/1046/234 +f 576/1042/231 588/1041/230 589/1047/235 +f 566/1030/219 578/1029/218 579/1048/236 +f 573/1045/233 585/1044/232 586/1049/237 +f 567/1031/220 568/1033/222 592/1050/238 +f 566/1030/219 567/1031/220 591/1052/239 +f 566/1030/219 590/1084/240 601/1054/241 +f 576/1042/231 577/1028/217 601/1055/241 +f 575/1036/225 576/1042/231 600/1057/242 +f 575/1036/225 599/1080/243 598/1059/244 +f 573/1045/233 574/1034/223 598/1060/244 +f 572/1043/227 573/1045/233 597/1062/245 +f 572/1038/227 596/1076/246 595/1064/247 +f 571/1027/216 595/1074/247 594/1065/248 +f 569/1040/229 570/1025/214 594/1066/248 +f 569/1040/229 593/1071/249 592/1068/238 +f 603/1069/250 604/1099/257 579/1048/236 +f 579/1048/236 604/1121/257 605/1087/251 +f 605/1088/251 606/1119/261 581/1039/228 +f 581/1039/228 606/1117/261 607/1089/252 +f 607/1090/252 608/1115/260 583/1026/215 +f 583/1026/215 608/1113/260 609/1091/253 +f 609/1092/253 610/1111/259 585/1044/232 +f 585/1044/232 610/1109/259 611/1094/254 +f 611/1095/254 612/1107/258 587/1035/224 +f 587/1035/224 612/1105/258 613/1096/255 +f 588/1041/230 613/1103/255 614/1097/256 +f 614/1098/256 603/1101/250 578/1029/218 +f 636/1123/177 637/1134/184 629/1124/184 +f 634/1126/179 635/1136/182 627/1127/182 +f 632/1129/173 633/1138/185 625/1130/185 +f 639/1132/183 632/1129/173 624/1131/173 +f 637/1134/184 638/1139/175 630/1135/175 +f 635/1136/182 636/1204/177 628/1137/177 +f 633/1138/185 634/1126/179 626/1128/179 +f 638/1139/175 639/1132/183 631/1133/183 +f 671/1140/183 664/1156/173 656/1141/173 +f 669/1143/184 670/1152/175 662/1144/175 +f 667/1146/182 668/1205/177 660/1147/177 +f 665/1149/185 666/1155/179 658/1150/179 +f 670/1152/175 671/1140/183 663/1142/183 +f 668/1153/177 669/1143/184 661/1145/184 +f 666/1155/179 667/1146/182 659/1148/182 +f 664/1156/173 665/1149/185 657/1151/185 +f 688/1157/174 696/1173/174 703/1158/262 +f 694/1160/177 702/1206/177 701/1161/178 +f 692/1163/176 700/1171/176 699/1164/263 +f 690/1166/173 698/1172/173 697/1167/264 +f 695/1159/262 703/1158/262 702/1169/177 +f 693/1162/178 701/1161/178 700/1171/176 +f 691/1165/263 699/1164/263 698/1172/173 +f 689/1168/264 697/1167/264 696/1173/174 +f 704/1174/174 712/1190/174 719/1175/262 +f 710/1177/177 718/1207/177 717/1178/178 +f 708/1180/176 716/1188/176 715/1181/263 +f 706/1183/173 714/1189/173 713/1184/264 +f 711/1176/262 719/1175/262 718/1186/177 +f 709/1179/178 717/1178/178 716/1188/176 +f 707/1182/263 715/1181/263 714/1189/173 +f 705/1185/264 713/1184/264 712/1190/174 diff --git a/src/main/resources/assets/hbm/models/weapons/flamer.obj b/src/main/resources/assets/hbm/models/weapons/flamer.obj deleted file mode 100644 index 2b9e7e367..000000000 --- a/src/main/resources/assets/hbm/models/weapons/flamer.obj +++ /dev/null @@ -1,1755 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'flamer.blend' -# www.blender.org -o Cylinder -v 0.000000 1.250000 -2.500000 -v 0.000000 1.250000 2.500000 -v 0.176777 1.176776 -2.500000 -v 0.176777 1.176777 2.500000 -v 0.250000 1.000000 -2.500000 -v 0.250000 1.000000 2.500000 -v 0.176777 0.823223 -2.500000 -v 0.176777 0.823224 2.500000 -v -0.000000 0.750000 -2.500000 -v -0.000000 0.750000 2.500000 -v -0.176777 0.823223 -2.500000 -v -0.176777 0.823224 2.500000 -v -0.250000 1.000000 -2.500000 -v -0.250000 1.000000 2.500000 -v -0.176777 1.176776 -2.500000 -v -0.176777 1.176777 2.500000 -v 0.000000 1.500000 2.500000 -v 0.353553 1.353554 2.500000 -v 0.500000 1.000000 2.500000 -v 0.353553 0.646447 2.500000 -v -0.000000 0.500000 2.500000 -v -0.353553 0.646447 2.500000 -v -0.500000 1.000000 2.500000 -v -0.353553 1.353554 2.500000 -v 0.353553 1.353554 4.500000 -v 0.000000 1.500000 4.500000 -v 0.500000 1.000000 4.500000 -v 0.353553 0.646447 4.500000 -v -0.000000 0.500000 4.500000 -v -0.353553 0.646447 4.500000 -v -0.500000 1.000000 4.500000 -v -0.353553 1.353554 4.500000 -v 0.265165 1.265165 4.750000 -v 0.000000 1.375000 4.750000 -v 0.375000 1.000000 4.750000 -v 0.265165 0.734835 4.750000 -v -0.000000 0.625000 4.750000 -v -0.265165 0.734835 4.750000 -v -0.375000 1.000000 4.750000 -v -0.265165 1.265165 4.750000 -v 0.000000 0.775916 0.562275 -v 0.000000 -0.672973 0.950503 -v 0.375000 1.000000 5.000000 -v -0.265165 0.734835 5.000000 -v 0.000000 1.375000 5.000000 -v -0.000000 0.625000 5.000000 -v 0.125000 -0.608268 1.191985 -v 0.125000 0.840621 0.803756 -v 0.088388 -0.585392 1.277361 -v 0.088388 0.863497 0.889133 -v -0.000000 -0.575916 1.312725 -v -0.000000 0.872973 0.924497 -v -0.088388 -0.585392 1.277361 -v -0.088388 0.863497 0.889133 -v -0.125000 -0.608268 1.191985 -v -0.125000 0.840621 0.803756 -v 0.265165 1.265165 5.000000 -v 0.265165 0.734835 5.000000 -v 0.088388 -0.663497 0.985867 -v 0.088388 0.785392 0.597639 -v 0.125000 -0.640621 1.071244 -v 0.125000 0.808268 0.683015 -v -0.125000 -0.640621 1.071244 -v -0.125000 0.808268 0.683015 -v -0.088388 -0.663497 0.985867 -v -0.088388 0.785392 0.597639 -v -0.375000 1.000000 5.000000 -v -0.265165 1.265165 5.000000 -v -0.198874 1.198874 5.000000 -v -0.281250 1.000000 5.000000 -v -0.198874 0.801127 5.000000 -v -0.000000 0.718750 5.000000 -v 0.000000 1.281250 5.000000 -v 0.198874 0.801127 5.000000 -v 0.281250 1.000000 5.000000 -v 0.198874 1.198874 5.000000 -v -0.198874 1.198874 4.750000 -v -0.281250 1.000000 4.750000 -v -0.198874 0.801127 4.750000 -v -0.000000 0.718750 4.750000 -v 0.000000 1.281250 4.750000 -v 0.198874 0.801127 4.750000 -v 0.281250 1.000000 4.750000 -v 0.198874 1.198874 4.750000 -v 0.000000 0.850000 -1.125000 -v 0.000000 -0.650000 -1.125000 -v 0.125000 -0.650000 -0.875000 -v 0.125000 0.850000 -0.875000 -v 0.088388 -0.650000 -0.786612 -v 0.088388 0.850000 -0.786612 -v -0.000000 -0.650000 -0.750000 -v -0.000000 0.850000 -0.750000 -v -0.088388 -0.650000 -0.786612 -v -0.088388 0.850000 -0.786612 -v -0.125000 -0.650000 -0.875000 -v -0.125000 0.850000 -0.875000 -v 0.088388 -0.650000 -1.088388 -v 0.088388 0.850000 -1.088388 -v 0.125000 -0.650000 -1.000000 -v 0.125000 0.850000 -1.000000 -v -0.125000 -0.650000 -1.000000 -v -0.125000 0.850000 -1.000000 -v -0.088388 -0.650000 -1.088388 -v -0.088388 0.850000 -1.088388 -v -0.334835 -0.995481 2.879628 -v -0.600000 -1.073146 2.801963 -v -0.600000 -0.984758 2.536798 -v -0.600000 0.429456 1.122584 -v -0.246447 -0.881204 2.640351 -v -0.246447 0.533009 1.226137 -v -0.100000 -0.631204 2.890351 -v -0.100000 0.783009 1.476137 -v -0.246447 -0.381205 3.140351 -v -0.246447 1.033009 1.726137 -v -0.600000 -0.277651 3.243904 -v -0.600000 1.136562 1.829691 -v -0.953553 -0.381205 3.140351 -v -0.953553 1.033009 1.726137 -v -1.100000 -0.631204 2.890351 -v -1.100000 0.783009 1.476137 -v -0.953553 -0.881204 2.640351 -v -0.953553 0.533009 1.226137 -v -0.225000 -0.807981 3.067128 -v -0.334835 -0.620481 3.254628 -v -0.600000 -0.542816 3.332293 -v -0.865165 -0.620481 3.254628 -v -0.975000 -0.807981 3.067128 -v -0.865165 -0.995481 2.879628 -v -0.600000 -0.896369 3.155516 -v -0.334835 0.772286 1.111861 -v -0.600000 0.694620 1.034196 -v -0.225000 0.959786 1.299361 -v -0.334835 1.147285 1.486861 -v -0.600000 1.224951 1.564526 -v -0.865165 1.147285 1.486861 -v -0.975000 0.959786 1.299361 -v -0.865165 0.772286 1.111861 -v -0.334835 0.949062 0.935084 -v -0.600000 0.871397 0.857419 -v -0.225000 1.136562 1.122584 -v -0.334835 1.324062 1.310084 -v -0.600000 1.401727 1.387749 -v -0.865165 1.324062 1.310084 -v -0.975000 1.136562 1.122584 -v -0.865165 0.949062 0.935084 -v -0.507192 1.070937 1.056959 -v -0.600000 1.043755 1.029776 -v -0.468750 1.136562 1.122584 -v -0.507192 1.202187 1.188209 -v -0.600000 1.229370 1.215392 -v -0.692808 1.202187 1.188209 -v -0.731250 1.136562 1.122584 -v -0.692808 1.070937 1.056959 -v -0.507192 1.582703 0.553196 -v -0.600000 1.547831 0.537018 -v -0.468750 1.666892 0.592254 -v -0.507192 1.751081 0.631312 -v -0.600000 1.785953 0.647490 -v -0.692808 1.751081 0.631312 -v -0.731250 1.666892 0.592254 -v -0.692808 1.582703 0.553196 -v -0.507192 1.900055 -0.126021 -v -0.600000 1.862579 -0.134584 -v -0.468750 1.990531 -0.105349 -v -0.507192 2.081007 -0.084676 -v -0.600000 2.118484 -0.076113 -v -0.692808 2.081007 -0.084676 -v -0.731250 1.990531 -0.105349 -v -0.692808 1.900055 -0.126021 -v -0.507192 2.128390 -1.114374 -v -0.600000 2.089948 -1.114167 -v -0.468750 2.221196 -1.114874 -v -0.507192 2.314003 -1.115373 -v -0.600000 2.352444 -1.115580 -v -0.692808 2.314003 -1.115373 -v -0.731250 2.221196 -1.114874 -v -0.692808 2.128390 -1.114374 -v -0.507192 2.127253 -2.030281 -v -0.600000 2.090441 -2.019205 -v -0.468750 2.216124 -2.057023 -v -0.507192 2.304996 -2.083764 -v -0.600000 2.341808 -2.094840 -v -0.692808 2.304996 -2.083764 -v -0.731250 2.216124 -2.057023 -v -0.692808 2.127253 -2.030281 -v -0.472031 1.940117 -2.669739 -v -0.564838 1.908912 -2.647287 -v -0.433588 2.015452 -2.723941 -v -0.472031 2.090787 -2.778143 -v -0.564838 2.121992 -2.800595 -v -0.657646 2.090787 -2.778143 -v -0.696088 2.015452 -2.723941 -v -0.657646 1.940117 -2.669739 -v -0.442782 1.729579 -2.977650 -v -0.535590 1.710985 -2.944004 -v -0.404340 1.774468 -3.058879 -v -0.442782 1.819358 -3.140109 -v -0.535590 1.837952 -3.173755 -v -0.628398 1.819358 -3.140109 -v -0.666840 1.774468 -3.058879 -v -0.628398 1.729579 -2.977650 -v -0.391283 1.438127 -3.156019 -v -0.484091 1.440989 -3.117683 -v -0.352841 1.431219 -3.248569 -v -0.391283 1.424311 -3.341119 -v -0.484091 1.421449 -3.379455 -v -0.576899 1.424311 -3.341119 -v -0.615341 1.431219 -3.248569 -v -0.576899 1.438127 -3.156019 -v -0.249516 1.207628 -3.148211 -v -0.342324 1.226989 -3.115000 -v -0.211074 1.160890 -3.228390 -v -0.249516 1.114151 -3.308570 -v -0.342324 1.094791 -3.341782 -v -0.435132 1.114151 -3.308570 -v -0.473574 1.160890 -3.228390 -v -0.435132 1.207628 -3.148211 -v -0.121115 1.064876 -3.038342 -v -0.213923 1.101756 -3.027492 -v -0.082673 0.975842 -3.064536 -v -0.121115 0.886808 -3.090731 -v -0.213923 0.849929 -3.101581 -v -0.306731 0.886808 -3.090731 -v -0.345173 0.975842 -3.064536 -v -0.306731 1.064876 -3.038342 -v -0.033410 1.011130 -2.881844 -v -0.126218 1.049316 -2.886280 -v 0.005033 0.918943 -2.871136 -v -0.033410 0.826755 -2.860428 -v -0.126218 0.788570 -2.855992 -v -0.219025 0.826755 -2.860428 -v -0.257468 0.918943 -2.871136 -v -0.219025 1.011130 -2.881844 -v 0.117527 1.061549 -2.447793 -v 0.024719 1.099735 -2.452229 -v 0.155969 0.969362 -2.437085 -v 0.117527 0.877173 -2.426377 -v 0.024719 0.838988 -2.421941 -v -0.068089 0.877173 -2.426377 -v -0.106531 0.969362 -2.437085 -v -0.068089 1.061549 -2.447793 -v -0.000000 1.625000 -0.375000 -v 0.088388 1.588388 -0.375000 -v 0.000000 1.750000 -2.000000 -v 0.000000 1.750000 -0.500000 -v 0.176777 1.676777 -2.000000 -v 0.176777 1.676777 -0.500000 -v 0.250000 1.500000 -2.000000 -v 0.250000 1.500000 -0.500000 -v 0.176777 1.323223 -2.000000 -v 0.176777 1.323223 -0.500000 -v -0.000000 1.250000 -2.000000 -v -0.000000 1.250000 -0.500000 -v -0.176777 1.323223 -2.000000 -v -0.176777 1.323223 -0.500000 -v -0.250000 1.500000 -2.000000 -v -0.250000 1.500000 -0.500000 -v -0.176777 1.676777 -2.000000 -v -0.176777 1.676777 -0.500000 -v 0.125000 1.500000 -0.375000 -v 0.088388 1.411612 -0.375000 -v -0.000000 1.375000 -0.375000 -v -0.088388 1.411612 -0.375000 -v -0.125000 1.500000 -0.375000 -v -0.088388 1.588388 -0.375000 -v -0.000000 1.625000 -2.125000 -v 0.088388 1.588388 -2.125000 -v 0.125000 1.500000 -2.125000 -v 0.088388 1.411612 -2.125000 -v -0.000000 1.375000 -2.125000 -v -0.088388 1.411612 -2.125000 -v -0.125000 1.500000 -2.125000 -v -0.088388 1.588388 -2.125000 -v -0.066291 1.316698 0.680730 -v -0.093750 1.254391 0.658093 -v -0.066291 1.192085 0.635456 -v -0.000000 1.166277 0.626079 -v 0.066291 1.192085 0.635456 -v 0.093750 1.254391 0.658093 -v -0.000000 1.342506 0.690107 -v 0.066291 1.316698 0.680730 -v 0.066291 1.469112 0.404562 -v 0.093750 1.410994 0.372674 -v 0.066291 1.352876 0.340786 -v -0.000000 1.328803 0.327577 -v -0.066291 1.352876 0.340786 -v -0.093750 1.410994 0.372674 -v -0.066291 1.469112 0.404562 -v -0.000000 1.493185 0.417770 -v -0.066291 1.564097 0.052334 -v -0.093750 1.500000 0.035418 -v -0.066291 1.435904 0.018502 -v -0.000000 1.409354 0.011496 -v 0.066291 1.435904 0.018502 -v 0.093750 1.500000 0.035418 -v -0.000000 1.590647 0.059341 -v 0.066291 1.564097 0.052334 -v -0.066291 1.566291 -0.375000 -v -0.093750 1.500000 -0.375000 -v -0.066291 1.433709 -0.375000 -v -0.000000 1.406250 -0.375000 -v 0.066291 1.433709 -0.375000 -v 0.093750 1.500000 -0.375000 -v 0.066291 1.566291 -0.375000 -v -0.000000 1.593750 -0.375000 -v -0.000000 1.239741 0.972957 -v -0.066291 1.213933 0.963580 -v -0.093750 1.151626 0.940943 -v -0.066291 1.089320 0.918306 -v -0.000000 1.063512 0.908929 -v 0.066291 1.089320 0.918306 -v 0.093750 1.151626 0.940943 -v 0.066291 1.213933 0.963580 -v 0.250000 1.250000 2.250000 -v 0.250000 0.750000 2.250000 -v 0.250000 1.250000 0.000000 -v 0.312500 1.250000 0.000000 -v 0.250000 0.750000 -2.000000 -v 0.250000 1.750000 -0.500000 -v 0.250000 1.750000 -2.000000 -v 0.312500 1.250000 2.250000 -v 0.312500 0.750000 2.250000 -v 0.312500 0.750000 -2.000000 -v 0.312500 1.750000 -2.000000 -v 0.312500 1.750000 -0.500000 -v -0.312500 1.250000 0.750000 -v -0.312500 0.750000 0.750000 -v -0.312500 1.250000 0.000000 -v -0.250000 1.250000 0.000000 -v -0.312500 0.750000 -2.000000 -v -0.312500 1.750000 -0.500000 -v -0.312500 1.750000 -2.000000 -v -0.250000 1.250000 0.750000 -v -0.250000 0.750000 0.750000 -v -0.250000 0.750000 -2.000000 -v -0.250000 1.750000 -2.000000 -v -0.250000 1.750000 -0.500000 -v 0.312500 1.875000 -2.000000 -v -0.312500 1.875000 -2.000000 -v 0.312500 1.875000 0.250000 -v -0.312500 1.875000 0.250000 -v 0.312500 1.625000 0.750000 -v -0.312500 1.625000 0.750000 -v 0.312500 1.625000 2.000000 -v -0.312500 1.625000 2.000000 -v 0.312500 1.375000 2.250000 -v -0.312500 1.375000 2.250000 -v 0.312500 1.250000 0.250000 -v 0.312500 1.250000 2.000000 -v -0.000000 1.000000 4.750000 -v 0.353553 1.353554 4.500000 -v 0.000000 1.500000 4.500000 -v 0.500000 1.000000 4.500000 -v 0.353553 0.646447 4.500000 -v -0.000000 0.500000 4.500000 -v -0.353553 0.646447 4.500000 -v -0.500000 1.000000 4.500000 -v -0.353553 1.353554 4.500000 -v 0.265165 1.265165 4.750000 -v 0.000000 1.375000 4.750000 -v 0.375000 1.000000 4.750000 -v 0.265165 0.734835 4.750000 -v -0.000000 0.625000 4.750000 -v -0.265165 0.734835 4.750000 -v -0.375000 1.000000 4.750000 -v -0.265165 1.265165 4.750000 -v -0.334835 0.772286 1.111861 -v -0.600000 0.694620 1.034196 -v -0.225000 0.959786 1.299361 -v -0.334835 1.147285 1.486861 -v -0.600000 1.224951 1.564526 -v -0.865165 1.147285 1.486861 -v -0.975000 0.959786 1.299361 -v -0.865165 0.772286 1.111861 -vt 0.798533 0.049911 -vt 0.749182 0.069988 -vt 0.728740 0.021518 -vt 0.547206 0.354533 -vt 0.448111 0.257208 -vt 0.489158 0.216895 -vt 0.081818 0.339286 -vt 0.072727 0.339286 -vt 0.072727 0.312500 -vt 0.081818 0.250000 -vt 0.072727 0.250000 -vt 0.072727 0.223214 -vt 0.081818 0.401786 -vt 0.081818 0.428571 -vt 0.072727 0.428571 -vt 0.081818 0.383929 -vt 0.072727 0.383929 -vt 0.072727 0.357143 -vt 0.926786 0.215241 -vt 0.943995 0.232143 -vt 0.926786 0.249044 -vt 0.081818 0.517857 -vt 0.072727 0.517857 -vt 0.072727 0.491071 -vt 0.081818 0.562500 -vt 0.072727 0.562500 -vt 0.072727 0.535714 -vt 0.081818 0.473214 -vt 0.072727 0.473214 -vt 0.072727 0.446429 -vt 0.081818 0.294643 -vt 0.072727 0.294643 -vt 0.072727 0.267857 -vt 0.000000 0.508929 -vt 0.036364 0.491071 -vt 0.036364 0.517857 -vt 0.592964 0.246503 -vt 0.697945 0.246503 -vt 0.697945 0.289211 -vt 0.981818 0.607143 -vt 0.763636 0.750000 -vt 0.690909 0.678571 -vt 0.990909 0.750000 -vt 0.981818 0.750000 -vt 0.763636 0.758929 -vt 0.990909 0.607143 -vt 0.990909 0.678571 -vt 0.690909 0.758929 -vt 0.690909 0.750000 -vt 0.981818 0.758929 -vt 0.363636 0.758929 -vt 0.363636 0.750000 -vt 0.581818 0.758929 -vt 0.581818 0.750000 -vt 0.890909 0.000000 -vt 0.890909 0.321429 -vt 0.800000 0.321429 -vt 0.890909 0.392857 -vt 0.800000 0.392857 -vt 0.890909 0.571429 -vt 0.800000 0.571429 -vt 0.890909 0.607143 -vt 0.800000 0.607143 -vt 0.936364 0.392857 -vt 0.000000 0.241071 -vt 0.036364 0.223214 -vt 0.036364 0.250000 -vt 0.036364 0.446429 -vt 0.036364 0.473214 -vt 0.000000 0.464286 -vt 0.036364 0.357143 -vt 0.036364 0.383929 -vt 0.000000 0.375000 -vt 0.036364 0.294643 -vt 0.000000 0.285714 -vt 0.036364 0.267857 -vt 0.036364 0.401786 -vt 0.036364 0.428571 -vt 0.000000 0.419643 -vt 0.036364 0.562500 -vt 0.000000 0.553571 -vt 0.036364 0.535714 -vt 0.036364 0.312500 -vt 0.036364 0.339286 -vt 0.000000 0.330357 -vt 0.749182 0.001441 -vt 0.778091 0.001441 -vt 0.798533 0.021518 -vt 0.778091 0.069988 -vt 0.728740 0.049911 -vt 0.547206 0.216895 -vt 0.588252 0.257208 -vt 0.588252 0.314220 -vt 0.489158 0.354533 -vt 0.448111 0.314220 -vt 0.081818 0.312500 -vt 0.081818 0.223214 -vt 0.072727 0.401786 -vt 0.081818 0.357143 -vt 0.909577 0.249044 -vt 0.909577 0.215241 -vt 0.897409 0.244094 -vt 0.892369 0.232143 -vt 0.897409 0.220192 -vt 0.938955 0.220192 -vt 0.938955 0.244094 -vt 0.081818 0.491071 -vt 0.081818 0.535714 -vt 0.081818 0.446429 -vt 0.081818 0.267857 -vt 0.667197 0.319410 -vt 0.623712 0.319410 -vt 0.592964 0.289211 -vt 0.623712 0.216304 -vt 0.667197 0.216304 -vt 0.363636 0.678571 -vt 0.363636 0.607143 -vt 0.981818 0.678571 -vt 0.581818 0.678571 -vt 0.581818 0.607143 -vt 0.800000 0.000000 -vt 0.981818 0.321429 -vt 0.936364 0.571429 -vt 0.000000 0.107143 -vt 0.000000 0.080357 -vt 0.727273 0.080357 -vt 0.000000 0.053571 -vt 0.727273 0.053571 -vt 0.000000 0.026786 -vt 0.727273 0.026786 -vt 0.000000 -0.000000 -vt 0.727273 -0.000000 -vt 0.000000 0.214286 -vt 0.000000 0.187500 -vt 0.727273 0.187500 -vt -0.000000 0.160714 -vt 0.727273 0.160714 -vt 0.000000 0.133929 -vt 0.727273 0.107143 -vt 0.727273 0.133929 -vt 0.154545 0.392857 -vt 0.118182 0.383929 -vt 0.118182 0.357143 -vt 0.445455 0.482143 -vt 0.154545 0.482143 -vt 0.154545 0.437500 -vt 0.445455 0.571429 -vt 0.154545 0.571429 -vt 0.154545 0.526786 -vt 0.445455 0.303571 -vt 0.154545 0.303571 -vt 0.154545 0.258929 -vt 0.445455 0.392857 -vt 0.154545 0.348214 -vt 0.445455 0.437500 -vt 0.445455 0.526786 -vt 0.445455 0.258929 -vt 0.154545 0.214286 -vt 0.445455 0.348214 -vt 0.118182 0.473214 -vt 0.118182 0.428571 -vt 0.118182 0.401786 -vt 0.118182 0.517857 -vt 0.118182 0.491071 -vt 0.118182 0.250000 -vt 0.118182 0.223214 -vt 0.118182 0.339286 -vt 0.118182 0.446429 -vt 0.118182 0.562500 -vt 0.118182 0.535714 -vt 0.118182 0.294643 -vt 0.963636 0.000000 -vt 0.963636 0.214286 -vt 0.954545 0.214286 -vt 0.909091 0.214286 -vt 0.900000 0.214286 -vt 0.900000 -0.000000 -vt 0.945455 0.214286 -vt 0.945455 0.000000 -vt 0.890909 0.214286 -vt 0.936364 0.214286 -vt 0.936364 0.000000 -vt 0.990909 0.214286 -vt 0.981818 0.214286 -vt 0.981818 0.000000 -vt 0.927273 0.214286 -vt 1.000000 0.214286 -vt 0.990909 0.000000 -vt 0.909091 -0.000000 -vt 0.927273 0.000000 -vt 0.954545 0.000000 -vt 0.081818 0.607143 -vt 0.054545 0.607143 -vt 0.063636 0.571429 -vt 0.000000 0.642857 -vt 0.009091 0.607143 -vt 0.036364 0.607143 -vt 0.090909 0.928571 -vt 0.045455 0.928571 -vt 0.045455 0.642857 -vt 0.281818 0.607143 -vt 0.290909 0.571429 -vt 0.309091 0.607143 -vt 0.000000 0.928571 -vt 0.018182 0.571429 -vt 0.227273 0.642857 -vt 0.236364 0.607143 -vt 0.263636 0.607143 -vt 0.363636 0.928571 -vt 0.318182 0.928571 -vt 0.318182 0.642857 -vt 0.336364 0.571429 -vt 0.354545 0.607143 -vt 0.327273 0.607143 -vt 0.272727 0.642857 -vt 0.272727 0.928571 -vt 0.245455 0.571429 -vt 0.181818 0.642857 -vt 0.136364 0.642857 -vt 0.145455 0.607143 -vt 0.227273 0.928571 -vt 0.090909 0.642857 -vt 0.100000 0.607143 -vt 0.127273 0.607143 -vt 0.109091 0.571429 -vt 0.181818 0.928571 -vt 0.136364 0.928571 -vt 0.172727 0.964286 -vt 0.190909 0.607143 -vt 0.200000 0.571429 -vt 0.218182 0.607143 -vt 0.363636 0.642857 -vt 0.172727 0.607143 -vt 0.172727 1.000000 -vt 0.145455 1.000000 -vt 0.309091 0.964286 -vt 0.127273 0.964286 -vt 0.100000 0.964286 -vt 0.263636 0.964286 -vt 0.236364 0.964286 -vt 0.036364 0.964286 -vt 0.009091 0.964286 -vt 0.218182 0.964286 -vt 0.190909 0.964286 -vt 0.081818 0.964286 -vt 0.354545 0.964286 -vt 0.327273 0.964286 -vt 0.263636 1.000000 -vt 0.236364 1.000000 -vt 0.354545 1.000000 -vt 0.327273 1.000000 -vt 0.081818 1.000000 -vt 0.054545 1.000000 -vt 0.127273 1.000000 -vt 0.100000 1.000000 -vt 0.218182 1.000000 -vt 0.190909 1.000000 -vt 0.309091 1.000000 -vt 0.281818 1.000000 -vt 0.036364 1.000000 -vt 0.448482 0.946245 -vt 0.447816 0.936764 -vt 0.523996 0.936068 -vt 0.369358 0.915395 -vt 0.369651 0.904997 -vt 0.443928 0.907333 -vt 0.369577 0.977632 -vt 0.444759 0.974927 -vt 0.444202 0.985187 -vt 0.368934 0.957145 -vt 0.447883 0.955729 -vt 0.446357 0.965194 -vt 0.368756 0.946516 -vt 0.368859 0.935885 -vt 0.369103 0.925507 -vt 0.444557 0.917588 -vt 0.369251 0.967522 -vt 0.446224 0.927310 -vt 0.522087 0.975636 -vt 0.626450 0.975177 -vt 0.626057 0.985284 -vt 0.521878 0.916354 -vt 0.523095 0.965773 -vt 0.524450 0.945986 -vt 0.524068 0.955907 -vt 0.522955 0.926210 -vt 0.521371 0.906291 -vt 0.521651 0.985702 -vt 0.628882 0.945575 -vt 0.723624 0.945363 -vt 0.722938 0.955028 -vt 0.628486 0.955489 -vt 0.627480 0.965327 -vt 0.628421 0.935698 -vt 0.626249 0.916110 -vt 0.627351 0.925915 -vt 0.625775 0.906009 -vt 0.721652 0.964592 -vt 0.790095 0.963668 -vt 0.789097 0.973339 -vt 0.722167 0.926018 -vt 0.719968 0.906107 -vt 0.720504 0.974265 -vt 0.720292 0.984376 -vt 0.723330 0.935673 -vt 0.720747 0.916255 -vt 0.791502 0.954389 -vt 0.831324 0.953660 -vt 0.829446 0.962292 -vt 0.792458 0.945160 -vt 0.791501 0.926590 -vt 0.788839 0.906848 -vt 0.789375 0.983686 -vt 0.792466 0.935897 -vt 0.789942 0.917055 -vt 0.829472 0.918437 -vt 0.827726 0.908180 -vt 0.862719 0.910216 -vt 0.832923 0.936395 -vt 0.828203 0.971666 -vt 0.832673 0.945158 -vt 0.831759 0.927625 -vt 0.828966 0.982180 -vt 0.863999 0.960877 -vt 0.889845 0.961285 -vt 0.890148 0.970994 -vt 0.862777 0.969191 -vt 0.866818 0.953742 -vt 0.871109 0.938583 -vt 0.869466 0.946526 -vt 0.866875 0.920299 -vt 0.870562 0.929761 -vt 0.899634 0.931326 -vt 0.924923 0.932413 -vt 0.925432 0.940574 -vt 0.895714 0.946765 -vt 0.892429 0.953646 -vt 0.891166 0.913838 -vt 0.865152 0.979003 -vt 0.898514 0.939714 -vt 0.896870 0.922597 -vt 0.914512 0.972870 -vt 0.917998 0.983727 -vt 0.894742 0.980719 -vt 0.919650 0.955423 -vt 0.915792 0.963054 -vt 0.923237 0.948280 -vt 0.920544 0.924055 -vt 0.945061 0.931037 -vt 0.935756 0.975611 -vt 0.937251 0.965252 -vt 0.984846 0.968093 -vt 0.913450 0.915823 -vt 0.933929 0.913381 -vt 0.940874 0.956561 -vt 0.946125 0.940120 -vt 0.944297 0.948500 -vt 0.940514 0.922208 -vt 0.989499 0.946755 -vt 0.986463 0.957358 -vt 0.992017 0.925068 -vt 0.991979 0.935995 -vt 0.984210 0.904997 -vt 0.938053 0.986290 -vt 0.985609 0.978434 -vt 0.989108 0.914525 -vt 0.690909 0.437500 -vt 0.709091 0.446429 -vt 0.709091 0.455357 -vt 0.472727 0.544643 -vt 0.454545 0.535714 -vt 0.454545 0.526786 -vt 0.472727 0.464286 -vt 0.472727 0.437500 -vt 0.690909 0.410714 -vt 0.709091 0.419643 -vt 0.709091 0.428571 -vt 0.454545 0.428571 -vt 0.454545 0.419643 -vt 0.472727 0.410714 -vt 0.690909 0.357143 -vt 0.709091 0.366071 -vt 0.709091 0.375000 -vt 0.472727 0.571429 -vt 0.454545 0.562500 -vt 0.454545 0.553571 -vt 0.472727 0.383929 -vt 0.690909 0.383929 -vt 0.690909 0.517857 -vt 0.690909 0.491071 -vt 0.709091 0.500000 -vt 0.472727 0.491071 -vt 0.454545 0.482143 -vt 0.454545 0.473214 -vt 0.472727 0.357143 -vt 0.743565 0.392074 -vt 0.718979 0.382072 -vt 0.753748 0.367928 -vt 0.454545 0.375000 -vt 0.454545 0.366071 -vt 0.690909 0.544643 -vt 0.454545 0.401786 -vt 0.454545 0.392857 -vt 0.718979 0.367928 -vt 0.743565 0.357926 -vt 0.729163 0.392074 -vt 0.472727 0.517857 -vt 0.454545 0.508929 -vt 0.454545 0.500000 -vt 0.690909 0.464286 -vt 0.709091 0.553571 -vt 0.709091 0.562500 -vt 0.454545 0.455357 -vt 0.454545 0.446429 -vt 0.709091 0.392857 -vt 0.709091 0.401786 -vt 0.709091 0.526786 -vt 0.709091 0.535714 -vt 0.709091 0.473214 -vt 0.709091 0.482143 -vt 0.883488 0.817576 -vt 0.882232 0.827636 -vt 0.835305 0.826374 -vt 0.885741 0.796519 -vt 0.884937 0.807186 -vt 0.834078 0.804683 -vt 0.885054 0.867824 -vt 0.834209 0.870476 -vt 0.834772 0.859787 -vt 0.882271 0.847386 -vt 0.835381 0.848832 -vt 0.835584 0.837608 -vt 0.881777 0.837512 -vt 0.834652 0.815389 -vt 0.885897 0.878489 -vt 0.834109 0.881224 -vt 0.788550 0.816272 -vt 0.788349 0.805553 -vt 0.935471 0.867378 -vt 0.935886 0.878049 -vt 0.934232 0.817658 -vt 0.932675 0.837417 -vt 0.933171 0.847256 -vt 0.934307 0.857171 -vt 0.935356 0.807446 -vt 0.933133 0.827577 -vt 0.883566 0.857440 -vt 0.995395 0.848137 -vt 0.995120 0.858794 -vt 0.995353 0.826466 -vt 0.994699 0.805334 -vt 0.935730 0.796774 -vt 0.994822 0.869271 -vt 0.995520 0.837301 -vt 0.995038 0.815809 -vt 0.994494 0.879958 -vt 0.788149 0.880627 -vt 0.788294 0.869864 -vt 0.788460 0.858982 -vt 0.788621 0.848192 -vt 0.788686 0.826897 -vt 0.788149 0.794715 -vt 0.788710 0.837511 -vt 0.727273 0.214286 -vt 0.445455 0.214286 -vt 0.118182 0.312500 -vt 0.118182 0.267857 -vt 1.000000 0.000000 -vt 0.145455 0.964286 -vt 0.281818 0.964286 -vt 0.054545 0.964286 -vt 0.009091 1.000000 -vt 0.369943 0.988027 -vt 0.988370 0.988839 -vt 0.709091 0.508929 -vt 0.729163 0.357926 -vt 0.753748 0.382072 -vt 0.690909 0.571429 -vt 0.833952 0.793960 -vt 0.994330 0.794648 -vn 0.000000 0.000000 -1.000000 -vn 0.000000 0.000000 1.000000 -vn 0.000000 -0.965900 0.258800 -vn 0.000000 -1.000000 0.000000 -vn 0.000000 0.707100 -0.707100 -vn 1.000000 0.000000 0.000000 -vn -1.000000 -0.000000 0.000000 -vn 0.000000 1.000000 0.000000 -vn 0.000000 0.707100 0.707100 -vn 0.000000 0.894400 0.447200 -vn 0.707100 0.707100 0.000000 -vn 0.549000 0.549000 -0.630200 -vn 0.776400 0.000000 -0.630200 -vn 0.707100 -0.707100 0.000000 -vn 0.549000 -0.549000 -0.630200 -vn 0.000000 -0.776400 -0.630200 -vn -0.707100 -0.707100 0.000000 -vn -0.549000 -0.549000 -0.630200 -vn -0.776400 0.000000 -0.630200 -vn -0.707100 0.707100 0.000000 -vn 0.000000 0.776400 -0.630200 -vn -0.549000 0.549000 -0.630200 -vn 0.632400 0.632400 0.447200 -vn -0.776400 0.000000 0.630200 -vn -0.549000 0.549000 0.630200 -vn -0.632400 0.632400 0.447200 -vn -0.632400 -0.632400 0.447200 -vn -0.894400 0.000000 0.447200 -vn 0.632400 -0.632400 0.447200 -vn 0.000000 -0.894400 0.447200 -vn 0.894400 0.000000 0.447200 -vn 0.000000 0.776400 0.630200 -vn 0.000000 -0.776400 0.630200 -vn -0.549000 -0.549000 0.630200 -vn 0.549000 0.549000 0.630200 -vn 0.776400 0.000000 0.630200 -vn 0.549000 -0.549000 0.630200 -vn 0.731800 -0.605300 0.312900 -vn 0.980800 0.050500 0.188400 -vn 0.707100 0.183000 0.683000 -vn -0.594300 0.000000 0.804200 -vn -0.420300 -0.420300 0.804200 -vn -0.980800 -0.050500 -0.188400 -vn -0.707100 -0.183000 -0.683000 -vn -0.549000 -0.750800 -0.367100 -vn 0.000000 0.258800 0.965900 -vn 0.000000 -0.407800 0.913000 -vn 0.000000 -0.258800 -0.965900 -vn 0.000000 -0.809700 -0.586800 -vn -0.707100 0.183000 0.683000 -vn -0.549000 -0.466700 0.693400 -vn 0.707100 -0.183000 -0.683000 -vn 0.980800 -0.050500 -0.188400 -vn 0.731800 -0.680700 0.031700 -vn -0.980800 0.050500 0.188400 -vn 0.549000 -0.750800 -0.367100 -vn -0.731900 -0.680700 0.031700 -vn -0.731900 -0.605300 0.312900 -vn 0.000000 0.594300 0.804200 -vn -0.420300 0.420300 0.804200 -vn 0.594300 0.000000 0.804200 -vn 0.000000 -0.594300 0.804200 -vn 0.420300 -0.420300 0.804200 -vn 0.420300 0.420300 0.804200 -vn 0.980800 0.000000 0.195100 -vn 0.707100 0.000000 0.707100 -vn 0.549000 -0.630200 0.549000 -vn -0.980800 0.000000 -0.195100 -vn -0.707100 0.000000 -0.707100 -vn -0.549000 -0.630200 -0.549000 -vn 0.000000 -0.630200 0.776400 -vn 0.000000 -0.630200 -0.776400 -vn -0.707100 0.000000 0.707100 -vn -0.549000 -0.630200 0.549000 -vn 0.707100 0.000000 -0.707100 -vn 0.980800 0.000000 -0.195100 -vn 0.731800 -0.665700 -0.145600 -vn -0.980800 0.000000 0.195100 -vn -0.731900 -0.665700 0.145600 -vn 0.549000 -0.630200 -0.549000 -vn 0.000000 -1.000000 0.005700 -vn 0.497100 -0.854400 0.151300 -vn 0.000000 -0.707100 0.707100 -vn 0.975900 -0.154200 0.154200 -vn 0.703000 -0.502900 0.502900 -vn 0.000000 -0.535800 -0.844300 -vn 0.690100 -0.333700 -0.642200 -vn 0.690100 -0.642200 -0.333700 -vn 0.000000 -0.005700 1.000000 -vn 0.497100 -0.151300 0.854400 -vn 0.975900 0.154200 -0.154200 -vn -0.690100 0.333700 0.642200 -vn -0.497100 -0.151300 0.854400 -vn 0.690100 0.642200 0.333700 -vn 0.690100 0.333700 0.642200 -vn 0.000000 0.535800 0.844300 -vn 0.000000 0.844300 0.535800 -vn -0.975900 -0.154200 0.154200 -vn -0.690100 -0.642200 -0.333700 -vn -0.497100 -0.854400 0.151300 -vn -0.690100 0.642200 0.333700 -vn 0.000000 -0.844300 -0.535800 -vn -0.975900 0.154200 -0.154200 -vn -0.690100 -0.333700 -0.642200 -vn -0.894400 0.316200 -0.316200 -vn -0.703000 -0.502900 0.502900 -vn -0.776400 0.445700 -0.445700 -vn -0.549000 0.057500 -0.833800 -vn 0.632400 0.763400 0.131000 -vn -0.632400 -0.131000 -0.763400 -vn 0.000000 -0.316200 -0.948700 -vn 0.000000 0.948700 0.316200 -vn -0.632400 0.763400 0.131000 -vn 0.632400 -0.131000 -0.763400 -vn 0.894400 0.316200 -0.316200 -vn 0.000000 0.994600 0.103300 -vn -0.549000 0.833800 -0.057500 -vn 0.776400 0.445700 -0.445700 -vn 0.549000 0.833800 -0.057500 -vn 0.000000 -0.707100 -0.707100 -vn 0.000000 -0.103300 -0.994600 -vn 0.549000 0.057500 -0.833800 -vn -0.707100 -0.500000 -0.500000 -vn -0.707100 0.500000 0.500000 -vn 0.707100 0.500000 0.500000 -vn 0.707100 -0.500000 -0.500000 -vn 0.000000 0.827100 0.562100 -vn 0.683300 0.600200 0.415700 -vn 0.693300 0.682400 0.231700 -vn 0.705400 -0.496100 -0.506200 -vn 0.000000 -0.699000 -0.715100 -vn 0.000000 -0.811400 -0.584400 -vn -0.705400 -0.496100 -0.506200 -vn -0.725200 -0.561800 -0.398000 -vn -0.705600 0.503700 0.498400 -vn -0.683300 0.600200 0.415700 -vn -0.999000 0.032000 0.030400 -vn 0.000000 0.712400 0.701800 -vn 0.705600 0.503700 0.498400 -vn 1.000000 0.000400 -0.001700 -vn 0.725200 -0.561800 -0.398000 -vn -1.000000 0.000400 -0.001700 -vn 0.999000 0.032000 0.030400 -vn -0.718600 -0.657300 -0.226900 -vn -0.719300 -0.690200 -0.078800 -vn 0.000000 -0.993100 -0.116900 -vn 0.718600 -0.657300 -0.226900 -vn -0.999700 0.023400 0.010300 -vn 0.000000 0.947900 0.318400 -vn -0.693300 0.682400 0.231700 -vn 0.999700 0.023400 0.010300 -vn 0.000000 -0.944200 -0.329200 -vn 0.000000 0.994700 0.102800 -vn -0.006100 0.987200 -0.159300 -vn -0.691700 0.710900 -0.126900 -vn -0.691700 0.718000 0.077200 -vn -0.999600 0.027600 0.005700 -vn 0.691700 0.718000 0.077200 -vn 0.719300 -0.690200 -0.078800 -vn 0.999600 0.027600 0.005700 -vn -0.999300 0.027700 -0.025700 -vn -0.997900 0.001500 -0.064500 -vn -0.717500 -0.649700 0.251000 -vn 0.998800 0.042800 0.023500 -vn -0.006300 -0.990800 0.135100 -vn -0.723100 -0.686200 0.078500 -vn 0.682800 0.724400 -0.094700 -vn 0.719700 -0.684400 0.116600 -vn -0.687200 0.630100 -0.361500 -vn -0.684100 0.423900 -0.593500 -vn -0.995000 -0.050400 -0.085800 -vn -0.003300 0.887300 -0.461200 -vn 0.996600 0.073200 0.037400 -vn -0.002200 -0.909500 0.415700 -vn 0.678000 0.671800 -0.298300 -vn 0.723200 -0.602900 0.336800 -vn 0.726500 -0.411900 0.550000 -vn -0.003300 -0.704400 0.709800 -vn -0.033300 -0.321700 0.946200 -vn 0.661200 0.525400 -0.535500 -vn -0.717000 -0.537600 0.443600 -vn -0.006700 0.629700 -0.776800 -vn 0.991200 0.131100 0.017300 -vn -0.960600 -0.273300 -0.049700 -vn -0.890000 -0.428900 0.154400 -vn -0.634000 -0.151900 0.758300 -vn -0.681200 -0.430500 0.592100 -vn -0.697800 -0.058900 -0.713900 -vn 0.597300 0.310100 -0.739600 -vn -0.041800 0.139900 -0.989300 -vn 0.718700 0.085800 0.690000 -vn 0.929700 0.356300 -0.093200 -vn 0.882400 0.353000 -0.311000 -vn 0.874400 0.089800 -0.476700 -vn 0.610500 -0.532600 -0.586200 -vn 0.000900 -0.430000 -0.902800 -vn -0.651600 -0.535800 -0.536900 -vn 0.010300 0.310300 0.950600 -vn 0.629100 -0.101200 -0.770700 -vn 0.674700 0.632300 0.380800 -vn -0.573400 0.329700 0.749900 -vn 0.047400 0.812400 0.581200 -vn -0.672400 -0.724800 -0.150000 -vn -0.900900 -0.218100 0.375200 -vn -0.009400 -0.872900 -0.487700 -vn 0.705600 0.708100 -0.027000 -vn 0.930000 -0.066400 -0.361400 -vn -0.660900 0.652200 0.371200 -vn -0.936300 -0.021900 0.350400 -vn -0.945200 0.037700 0.324300 -vn 0.036300 0.994200 0.101200 -vn -0.676800 -0.715000 0.174900 -vn 0.639800 -0.721300 -0.265100 -vn -0.008100 -0.998200 -0.058600 -vn 0.717300 0.648600 -0.254300 -vn 0.080500 -0.992900 0.087300 -vn -0.645400 -0.700000 0.305700 -vn 0.945200 -0.037700 -0.324300 -vn 0.719700 -0.672500 -0.172200 -vn 0.080500 0.986500 -0.142600 -vn -0.645400 0.751400 0.137100 -vn 0.719700 0.615200 -0.321700 -vn 0.661500 0.661500 -0.353100 -vn 0.323800 0.323800 -0.888900 -vn 0.000000 0.458000 -0.888900 -vn -0.661500 -0.661500 0.353100 -vn -0.323800 -0.323800 0.888900 -vn -0.458000 0.000000 0.888900 -vn 0.000000 0.935500 0.353100 -vn 0.661500 0.661500 0.353100 -vn 0.935500 0.000000 -0.353100 -vn 0.458000 0.000000 -0.888900 -vn 0.323800 0.323800 0.888900 -vn 0.458000 0.000000 0.888900 -vn 0.935500 0.000000 0.353100 -vn 0.000000 -0.935500 -0.353100 -vn 0.000000 -0.458000 -0.888900 -vn 0.323800 -0.323800 -0.888900 -vn 0.000000 -0.935500 0.353100 -vn 0.000000 -0.458000 0.888900 -vn 0.661500 -0.661500 0.353100 -vn 0.661500 -0.661500 -0.353100 -vn -0.935500 0.000000 -0.353100 -vn -0.661500 0.661500 -0.353100 -vn -0.323800 0.323800 -0.888900 -vn -0.661500 0.661500 0.353100 -vn -0.323800 0.323800 0.888900 -vn 0.000000 0.458000 0.888900 -vn -0.323800 -0.323800 -0.888900 -vn 0.323800 -0.323800 0.888900 -vn -0.661500 -0.661500 -0.353100 -vn -0.935500 0.000000 0.353100 -vn 0.000000 0.935500 -0.353100 -vn -0.458000 0.000000 -0.888900 -vn 0.999500 0.028900 0.008500 -vn 0.691200 0.669900 0.271000 -vn 0.716000 0.635600 0.288600 -vn 0.000000 -0.931700 -0.363100 -vn 0.720600 -0.644800 -0.254800 -vn 0.697400 -0.653200 -0.294700 -vn -0.720600 -0.644800 -0.254800 -vn -0.697400 -0.653200 -0.294700 -vn -0.999800 -0.016500 -0.008800 -vn -0.691200 0.669900 0.270900 -vn -0.716000 0.635600 0.288600 -vn 0.000000 0.909800 0.415000 -vn 0.000000 0.925400 0.378900 -vn 0.999800 -0.016500 -0.008800 -vn 0.000000 -0.912200 -0.409800 -vn 0.707100 -0.664600 -0.241500 -vn -0.720700 -0.688000 -0.084700 -vn 0.000000 -0.993100 -0.117200 -vn 0.999500 0.031400 0.001000 -vn 0.000000 0.990300 0.138600 -vn -0.689800 0.717500 0.096500 -vn -0.999500 0.031400 0.001000 -vn 0.720700 -0.688000 -0.084700 -vn 0.689800 0.717500 0.096500 -vn -0.999500 0.028900 0.008500 -vn -0.706000 0.708200 0.002700 -vn -1.000000 -0.000700 0.001000 -vn 0.706000 0.708200 0.002700 -vn 0.705900 -0.708300 0.005000 -vn -0.705900 -0.708300 0.005000 -vn 0.000000 1.000000 0.005300 -vn 1.000000 -0.000700 0.001000 -vn 0.000000 -0.999900 0.008000 -vn 0.000000 -0.939900 -0.341500 -vn -0.707100 -0.664600 -0.241500 -vn -0.707100 0.664600 0.241500 -vn 0.707100 0.664600 0.241500 -vn 0.000000 0.939900 0.341500 -vn 0.549000 -0.466700 0.693400 -vn 0.731900 -0.665700 0.145600 -vn -0.731900 -0.665700 -0.145600 -s off -f 7/1/1 11/2/1 15/3/1 -f 21/4/1 24/5/1 17/6/1 -f 57/7/2 76/8/2 75/9/2 -f 58/10/2 74/11/2 72/12/2 -f 45/13/2 68/14/2 69/15/2 -f 45/16/2 73/17/2 76/18/2 -f 63/19/3 42/20/3 61/21/3 -f 44/22/2 71/23/2 70/24/2 -f 46/25/2 72/26/2 71/27/2 -f 67/28/2 70/29/2 69/30/2 -f 43/31/2 75/32/2 74/33/2 -f 350/34/2 78/35/2 79/36/2 -f 101/19/4 86/20/4 99/21/4 -f 144/37/5 141/38/5 140/39/5 -f 323/40/6 325/41/6 317/42/6 -f 320/43/1 324/44/1 323/40/1 -f 319/41/7 320/44/7 318/40/7 -f 319/45/8 325/41/8 324/44/8 -f 315/40/2 322/46/2 321/47/2 -f 316/48/9 317/49/9 325/41/9 -f 318/44/4 323/50/4 322/51/4 -f 314/51/8 321/52/8 317/49/8 -f 335/40/6 337/41/6 329/42/6 -f 332/43/1 336/44/1 335/40/1 -f 331/41/7 332/44/7 330/40/7 -f 331/45/8 337/41/8 336/44/8 -f 327/40/2 334/46/2 333/47/2 -f 328/48/9 329/49/9 337/41/9 -f 330/44/4 335/50/4 334/53/4 -f 326/53/8 333/54/8 329/49/8 -f 339/55/8 341/56/8 340/57/8 -f 341/56/10 343/58/10 342/59/10 -f 343/58/8 345/60/8 344/61/8 -f 345/60/9 347/62/9 346/63/9 -f 342/64/6 349/60/6 348/56/6 -f 350/65/2 80/66/2 82/67/2 -f 77/68/2 78/69/2 350/70/2 -f 84/71/2 81/72/2 350/73/2 -f 83/74/2 350/75/2 82/76/2 -f 81/77/2 77/78/2 350/79/2 -f 80/80/2 350/81/2 79/82/2 -f 83/83/2 84/84/2 350/85/2 -f 15/3/1 1/86/1 3/87/1 -f 3/87/1 5/88/1 7/1/1 -f 7/1/1 9/89/1 11/2/1 -f 11/2/1 13/90/1 15/3/1 -f 15/3/1 3/87/1 7/1/1 -f 17/6/1 18/91/1 19/92/1 -f 19/92/1 20/93/1 21/4/1 -f 21/4/1 22/94/1 23/95/1 -f 23/95/1 24/5/1 21/4/1 -f 17/6/1 19/92/1 21/4/1 -f 43/96/2 57/7/2 75/9/2 -f 46/97/2 58/10/2 72/12/2 -f 73/98/2 45/13/2 69/15/2 -f 57/99/2 45/16/2 76/18/2 -f 61/21/3 47/100/3 55/101/3 -f 49/102/3 51/103/3 53/104/3 -f 53/104/3 55/101/3 47/100/3 -f 63/19/3 65/105/3 42/20/3 -f 42/20/3 59/106/3 61/21/3 -f 47/100/3 49/102/3 53/104/3 -f 55/101/3 63/19/3 61/21/3 -f 67/107/2 44/22/2 70/24/2 -f 44/108/2 46/25/2 71/27/2 -f 68/109/2 67/28/2 69/30/2 -f 58/110/2 43/31/2 74/33/2 -f 99/21/4 87/100/4 95/101/4 -f 89/102/4 91/103/4 93/104/4 -f 93/104/4 95/101/4 87/100/4 -f 101/19/4 103/105/4 86/20/4 -f 86/20/4 97/106/4 99/21/4 -f 87/100/4 89/102/4 93/104/4 -f 95/101/4 101/19/4 99/21/4 -f 140/39/5 138/111/5 144/37/5 -f 139/112/5 145/113/5 144/37/5 -f 144/37/5 143/114/5 142/115/5 -f 142/115/5 141/38/5 144/37/5 -f 138/111/5 139/112/5 144/37/5 -f 321/116/6 322/117/6 317/42/6 -f 323/40/6 324/44/6 325/41/6 -f 317/42/6 322/117/6 323/40/6 -f 318/46/1 320/43/1 323/40/1 -f 318/40/7 315/117/7 316/42/7 -f 316/42/7 319/41/7 318/40/7 -f 315/117/7 314/116/7 316/42/7 -f 320/50/8 319/45/8 324/44/8 -f 314/118/2 315/40/2 321/47/2 -f 319/45/9 316/48/9 325/41/9 -f 315/52/4 318/44/4 322/51/4 -f 316/48/8 314/51/8 317/49/8 -f 333/119/6 334/120/6 329/42/6 -f 335/40/6 336/44/6 337/41/6 -f 329/42/6 334/120/6 335/40/6 -f 330/46/1 332/43/1 335/40/1 -f 330/40/7 327/120/7 328/42/7 -f 328/42/7 331/41/7 330/40/7 -f 327/120/7 326/119/7 328/42/7 -f 332/50/8 331/45/8 336/44/8 -f 326/118/2 327/40/2 333/47/2 -f 331/45/9 328/48/9 337/41/9 -f 327/54/4 330/44/4 334/53/4 -f 328/48/8 326/53/8 329/49/8 -f 338/121/8 339/55/8 340/57/8 -f 340/57/10 341/56/10 342/59/10 -f 342/59/8 343/58/8 344/61/8 -f 344/61/9 345/60/9 346/63/9 -f 348/56/6 340/122/6 342/64/6 -f 342/64/6 344/123/6 349/60/6 -s 1 -f 2/124/8 4/125/11 3/126/12 -f 4/125/11 6/127/6 5/128/13 -f 6/127/6 8/129/14 7/130/15 -f 8/129/14 10/131/4 9/132/16 -f 10/133/4 12/134/17 11/135/18 -f 12/134/17 14/136/7 13/137/19 -f 16/138/20 2/124/8 1/139/21 -f 14/136/7 16/138/20 15/140/22 -f 352/141/10 360/142/10 359/143/23 -f 23/144/19 357/145/7 358/146/20 -f 21/147/16 355/148/4 356/149/17 -f 19/150/13 353/151/6 354/152/14 -f 17/153/21 26/141/8 25/154/11 -f 24/155/22 358/146/20 26/141/8 -f 22/156/18 356/149/17 357/145/7 -f 20/157/15 354/152/14 355/158/4 -f 18/159/12 25/154/11 353/151/6 -f 39/160/7 67/28/24 68/109/25 -f 32/146/26 40/161/26 360/162/10 -f 30/149/27 364/163/27 365/164/28 -f 28/152/29 362/165/29 363/166/30 -f 27/151/31 351/154/23 359/167/23 -f 31/145/28 365/160/28 40/168/26 -f 29/148/30 363/169/30 364/170/27 -f 28/152/29 27/151/31 361/171/31 -f 366/161/20 68/14/25 45/13/32 -f 37/169/4 46/25/33 44/108/34 -f 34/142/8 45/16/32 57/99/35 -f 35/171/6 43/31/36 58/110/37 -f 47/172/38 48/173/39 50/174/40 -f 75/9/41 76/8/42 84/84/34 -f 64/175/43 66/176/44 65/177/45 -f 50/174/40 52/178/46 51/179/47 -f 33/167/11 57/7/35 43/96/36 -f 66/176/44 41/180/48 42/55/49 -f 52/178/46 54/181/50 53/182/51 -f 36/165/14 58/10/37 46/97/33 -f 60/183/52 62/184/53 61/185/54 -f 53/182/51 54/181/50 56/186/55 -f 41/187/48 60/183/52 59/188/56 -f 61/185/54 62/184/53 48/173/39 -f 39/164/7 38/163/17 44/22/34 -f 63/189/57 55/190/58 56/186/55 -f 72/12/59 74/11/60 82/67/25 -f 72/26/59 80/80/32 79/82/35 -f 70/29/61 78/69/36 77/68/37 -f 76/18/42 73/17/62 81/72/33 -f 75/32/41 83/74/24 82/76/25 -f 69/15/63 77/78/37 81/77/33 -f 71/23/64 79/36/35 78/35/36 -f 88/173/65 90/174/66 89/191/67 -f 102/175/68 104/176/69 103/177/70 -f 90/174/66 92/178/2 91/179/71 -f 104/176/69 85/180/1 86/55/72 -f 92/178/2 94/181/73 93/182/74 -f 98/183/75 100/184/76 99/185/77 -f 94/181/73 96/186/78 95/190/79 -f 85/187/1 98/183/75 97/188/80 -f 99/185/77 100/184/76 88/173/65 -f 95/190/79 96/186/78 102/175/68 -f 106/192/81 105/193/82 129/194/83 -f 111/195/84 123/196/85 105/197/82 -f 108/198/86 110/199/87 109/200/88 -f 125/201/89 129/202/83 124/203/90 -f 109/200/88 105/193/82 106/192/81 -f 110/199/87 112/204/91 111/195/84 -f 105/197/82 123/196/85 129/205/83 -f 117/206/92 126/207/93 125/208/89 -f 112/209/91 114/210/94 113/211/95 -f 129/212/83 123/213/85 124/214/90 -f 113/211/95 115/215/96 125/201/89 -f 114/210/94 116/216/97 115/215/96 -f 129/217/83 125/208/89 126/207/93 -f 119/218/98 121/219/99 128/220/100 -f 115/215/96 116/216/97 118/221/101 -f 121/219/99 107/222/102 106/223/81 -f 128/224/100 106/223/81 129/225/83 -f 118/221/101 120/226/103 119/218/98 -f 122/227/104 120/226/103 373/228/105 -f 121/219/99 122/227/104 108/198/86 -f 119/218/98 120/226/103 122/227/104 -f 127/229/106 129/230/83 126/231/93 -f 117/206/92 119/218/98 127/229/106 -f 111/232/84 113/211/95 124/214/90 -f 127/233/106 128/220/100 129/148/83 -f 136/228/7 144/234/107 145/235/108 -f 116/216/97 114/210/94 370/236/109 -f 122/227/104 374/237/110 368/238/111 -f 116/216/97 371/239/112 372/240/113 -f 110/199/87 367/241/114 369/242/115 -f 118/221/101 372/243/113 373/244/105 -f 110/199/87 108/198/86 368/245/111 -f 112/209/91 369/246/115 370/247/109 -f 134/239/9 142/248/116 143/249/117 -f 132/246/6 140/250/118 141/251/119 -f 131/245/120 139/252/121 138/253/122 -f 137/237/123 145/254/108 139/255/121 -f 135/243/124 143/256/117 144/257/107 -f 133/236/125 141/258/119 142/259/116 -f 132/242/6 130/241/126 138/260/122 -f 158/261/127 157/262/128 165/263/129 -f 146/264/130 147/265/131 155/266/132 -f 153/267/133 161/268/134 155/269/132 -f 151/270/135 159/271/136 160/272/137 -f 150/273/138 149/274/139 157/262/128 -f 148/275/140 146/264/130 154/276/141 -f 152/277/142 160/272/137 161/268/134 -f 150/273/138 158/261/127 159/271/136 -f 149/274/139 148/275/140 156/278/143 -f 169/279/144 177/280/145 171/281/146 -f 156/278/143 154/276/141 162/282/147 -f 160/272/137 168/283/148 169/279/144 -f 158/261/127 166/284/149 167/285/150 -f 157/262/128 156/278/143 164/286/151 -f 154/276/141 155/266/132 163/287/152 -f 161/268/134 169/279/144 163/288/152 -f 159/271/136 167/285/150 168/283/148 -f 174/289/153 182/290/154 183/291/155 -f 167/285/150 175/292/156 176/293/157 -f 166/284/149 165/263/129 173/294/158 -f 164/286/151 162/282/147 170/295/159 -f 168/283/148 176/293/157 177/280/145 -f 166/284/149 174/289/153 175/292/156 -f 165/263/129 164/286/151 172/296/160 -f 162/282/147 163/287/152 171/297/146 -f 184/298/161 192/299/162 193/300/163 -f 173/294/158 172/296/160 180/301/164 -f 170/295/159 171/297/146 179/302/165 -f 177/280/145 185/303/166 179/304/165 -f 175/292/156 183/291/155 184/298/161 -f 174/289/153 173/294/158 181/305/167 -f 172/296/160 170/295/159 178/306/168 -f 176/293/157 184/298/161 185/303/166 -f 191/307/169 199/308/170 200/309/171 -f 182/290/154 190/310/172 191/307/169 -f 181/305/167 180/301/164 188/311/173 -f 178/306/168 179/302/165 187/312/174 -f 185/303/166 193/300/163 187/313/174 -f 183/291/155 191/307/169 192/299/162 -f 182/290/154 181/305/167 189/314/175 -f 180/301/164 178/306/168 186/315/176 -f 194/316/177 195/317/178 203/318/179 -f 190/310/172 189/314/175 197/319/180 -f 188/311/173 186/315/176 194/316/177 -f 192/299/162 200/309/171 201/320/181 -f 190/310/172 198/321/182 199/308/170 -f 189/314/175 188/311/173 196/322/183 -f 186/315/176 187/312/174 195/317/178 -f 193/300/163 201/320/181 195/323/178 -f 208/324/184 216/325/185 217/326/186 -f 195/323/178 201/320/181 209/327/187 -f 199/308/170 207/328/188 208/324/184 -f 197/319/180 205/329/189 206/330/190 -f 196/322/183 194/316/177 202/331/191 -f 200/309/171 208/324/184 209/327/187 -f 198/321/182 206/330/190 207/328/188 -f 197/319/180 196/322/183 204/332/192 -f 212/333/193 220/334/194 221/335/195 -f 206/330/190 214/336/196 215/337/197 -f 205/329/189 204/332/192 212/333/193 -f 202/331/191 203/318/179 211/338/198 -f 203/339/179 209/327/187 217/326/186 -f 207/328/188 215/337/197 216/325/185 -f 205/329/189 213/340/199 214/336/196 -f 204/332/192 202/331/191 210/341/200 -f 225/342/201 219/343/202 211/344/198 -f 215/337/197 223/345/203 224/346/204 -f 213/340/199 221/335/195 222/347/205 -f 218/348/206 220/334/194 212/333/193 -f 224/346/204 225/342/201 217/326/186 -f 214/336/196 222/347/205 223/345/203 -f 221/335/195 220/334/194 228/349/207 -f 233/350/208 232/351/209 240/352/210 -f 218/348/206 219/353/202 227/354/211 -f 219/343/202 225/342/201 233/350/208 -f 223/345/203 231/355/212 232/351/209 -f 221/335/195 229/356/213 230/357/214 -f 220/334/194 218/348/206 226/358/215 -f 224/346/204 232/351/209 233/350/208 -f 222/347/205 230/357/214 231/355/212 -f 219/353/202 218/348/206 210/341/200 -f 230/357/214 238/359/216 239/360/217 -f 228/349/207 236/361/218 237/362/219 -f 226/358/215 227/354/211 235/363/220 -f 227/364/211 233/350/208 241/365/221 -f 231/355/212 239/360/217 240/352/210 -f 229/356/213 237/362/219 238/359/216 -f 228/349/207 226/358/215 234/366/222 -f 246/367/223 267/368/224 266/369/225 -f 255/370/226 263/371/227 264/372/228 -f 245/373/229 247/374/230 246/367/223 -f 248/375/231 268/376/232 267/377/224 -f 247/374/230 243/378/233 260/379/234 -f 247/374/230 249/380/235 248/375/231 -f 252/381/236 270/382/237 269/383/238 -f 253/384/239 262/385/240 263/386/227 -f 249/380/235 251/387/241 250/388/242 -f 256/389/243 258/390/244 273/391/245 -f 259/392/246 265/393/247 242/394/248 -f 251/387/241 253/395/239 252/381/236 -f 269/396/238 271/397/249 267/398/224 -f 251/387/241 261/399/250 262/400/240 -f 253/384/239 255/370/226 254/401/251 -f 249/380/235 260/402/234 261/403/250 -f 264/404/228 262/405/240 242/406/248 -f 255/370/226 257/407/252 256/389/243 -f 257/407/252 264/408/228 265/409/247 -f 259/392/246 245/373/229 244/410/253 -f 257/407/252 259/392/246 258/390/244 -f 254/401/251 271/411/249 270/412/237 -f 245/373/229 242/413/248 243/414/233 -f 250/388/242 269/415/238 268/416/232 -f 256/389/243 272/417/254 271/418/249 -f 244/410/253 266/419/225 273/420/245 -f 283/421/255 282/422/256 281/423/257 -f 285/424/258 284/425/259 278/426/260 -f 286/427/261 276/428/262 275/429/263 -f 288/430/264 274/431/265 280/432/266 -f 282/422/256 289/433/267 280/432/266 -f 284/425/259 283/421/255 279/434/268 -f 285/435/258 277/436/269 276/428/262 -f 279/434/268 312/437/6 311/438/270 -f 292/439/271 293/440/272 285/435/258 -f 295/441/273 283/421/255 284/425/259 -f 296/442/274 289/433/267 282/422/256 -f 296/442/274 290/443/275 288/430/264 -f 291/444/276 292/439/271 286/427/261 -f 294/445/277 284/425/259 285/424/258 -f 297/446/278 282/422/256 283/421/255 -f 287/447/279 275/429/263 274/431/265 -f 298/448/280 299/449/281 291/444/276 -f 304/450/282 297/446/278 295/441/273 -f 302/451/283 294/445/277 293/452/272 -f 299/449/281 300/453/284 292/439/271 -f 305/454/285 298/448/280 290/443/275 -f 305/454/285 296/442/274 297/446/278 -f 303/455/286 295/441/273 294/445/277 -f 300/453/284 301/456/287 293/440/272 -f 290/443/275 291/444/276 287/447/279 -f 277/436/269 310/457/288 309/458/289 -f 275/429/263 308/459/7 307/460/290 -f 281/423/257 313/461/291 312/437/6 -f 278/426/260 311/438/270 310/462/288 -f 276/428/262 309/458/289 308/459/7 -f 280/432/266 274/431/265 307/460/290 -f 280/432/266 306/463/292 313/461/291 -f 1/139/21 2/124/8 3/126/12 -f 3/126/12 4/125/11 5/128/13 -f 5/128/13 6/127/6 7/130/15 -f 7/130/15 8/129/14 9/132/16 -f 9/464/16 10/133/4 11/135/18 -f 11/135/18 12/134/17 13/137/19 -f 15/140/22 16/138/20 1/139/21 -f 13/137/19 14/136/7 15/140/22 -f 351/154/23 352/141/10 359/143/23 -f 24/155/22 23/144/19 358/146/20 -f 22/156/18 21/147/16 356/149/17 -f 20/157/15 19/150/13 354/152/14 -f 18/159/12 17/153/21 25/154/11 -f 17/153/21 24/155/22 26/141/8 -f 23/144/19 22/156/18 357/145/7 -f 21/465/16 20/157/15 355/158/4 -f 19/150/13 18/159/12 353/151/6 -f 366/168/20 39/160/7 68/109/25 -f 352/141/10 32/146/26 360/162/10 -f 31/145/28 30/149/27 365/164/28 -f 29/158/30 28/152/29 363/166/30 -f 361/466/31 27/151/31 359/167/23 -f 32/146/26 31/145/28 40/168/26 -f 30/149/27 29/148/30 364/170/27 -f 362/467/29 28/152/29 361/171/31 -f 34/162/8 366/161/20 45/13/32 -f 38/170/17 37/169/4 44/108/34 -f 33/143/11 34/142/8 57/99/35 -f 36/467/14 35/171/6 58/110/37 -f 49/191/293 47/172/38 50/174/40 -f 83/83/24 75/9/41 84/84/34 -f 63/189/57 64/175/43 65/177/45 -f 49/191/293 50/174/40 51/179/47 -f 35/466/6 33/167/11 43/96/36 -f 65/177/45 66/176/44 42/55/49 -f 51/179/47 52/178/46 53/182/51 -f 37/166/4 36/165/14 46/97/33 -f 59/188/56 60/183/52 61/185/54 -f 55/190/58 53/182/51 56/186/55 -f 42/468/49 41/187/48 59/188/56 -f 47/172/38 61/185/54 48/173/39 -f 67/107/24 39/164/7 44/22/34 -f 64/175/43 63/189/57 56/186/55 -f 80/66/32 72/12/59 82/67/25 -f 71/27/64 72/26/59 79/82/35 -f 69/30/63 70/29/61 77/68/37 -f 84/71/34 76/18/42 81/72/33 -f 74/33/60 75/32/41 82/76/25 -f 73/98/62 69/15/63 81/77/33 -f 70/24/61 71/23/64 78/35/36 -f 87/172/294 88/173/65 89/191/67 -f 101/189/295 102/175/68 103/177/70 -f 89/191/67 90/174/66 91/179/71 -f 103/177/70 104/176/69 86/55/72 -f 91/179/71 92/178/2 93/182/74 -f 97/188/80 98/183/75 99/185/77 -f 93/182/74 94/181/73 95/190/79 -f 86/468/72 85/187/1 97/188/80 -f 87/172/294 99/185/77 88/173/65 -f 101/189/295 95/190/79 102/175/68 -f 109/200/88 111/195/84 105/197/82 -f 107/222/102 108/198/86 109/200/88 -f 107/222/102 109/200/88 106/192/81 -f 109/200/88 110/199/87 111/195/84 -f 115/215/96 117/206/92 125/208/89 -f 111/232/84 112/209/91 113/211/95 -f 124/203/90 113/211/95 125/201/89 -f 113/211/95 114/210/94 115/215/96 -f 127/233/106 119/218/98 128/220/100 -f 117/206/92 115/215/96 118/221/101 -f 128/224/100 121/219/99 106/223/81 -f 117/206/92 118/221/101 119/218/98 -f 374/469/110 122/227/104 373/228/105 -f 107/222/102 121/219/99 108/198/86 -f 121/219/99 119/218/98 122/227/104 -f 126/231/93 117/206/92 127/229/106 -f 123/213/85 111/232/84 124/214/90 -f 137/469/123 136/228/7 145/235/108 -f 371/470/112 116/216/97 370/236/109 -f 108/198/86 122/227/104 368/238/111 -f 118/221/101 116/216/97 372/240/113 -f 112/204/91 110/199/87 369/242/115 -f 120/226/103 118/221/101 373/244/105 -f 367/471/114 110/199/87 368/245/111 -f 114/210/94 112/209/91 370/247/109 -f 135/240/124 134/239/9 143/249/117 -f 133/247/125 132/246/6 141/251/119 -f 130/471/126 131/245/120 138/253/122 -f 131/238/120 137/237/123 139/255/121 -f 136/244/7 135/243/124 144/257/107 -f 134/470/9 133/236/125 142/259/116 -f 140/472/118 132/242/6 138/260/122 -f 166/284/149 158/261/127 165/263/129 -f 154/276/141 146/264/130 155/266/132 -f 147/473/131 153/267/133 155/269/132 -f 152/277/142 151/270/135 160/272/137 -f 158/261/127 150/273/138 157/262/128 -f 156/278/143 148/275/140 154/276/141 -f 153/267/133 152/277/142 161/268/134 -f 151/270/135 150/273/138 159/271/136 -f 157/262/128 149/274/139 156/278/143 -f 163/288/152 169/279/144 171/281/146 -f 164/286/151 156/278/143 162/282/147 -f 161/268/134 160/272/137 169/279/144 -f 159/271/136 158/261/127 167/285/150 -f 165/263/129 157/262/128 164/286/151 -f 162/282/147 154/276/141 163/287/152 -f 155/269/132 161/268/134 163/288/152 -f 160/272/137 159/271/136 168/283/148 -f 175/292/156 174/289/153 183/291/155 -f 168/283/148 167/285/150 176/293/157 -f 174/289/153 166/284/149 173/294/158 -f 172/296/160 164/286/151 170/295/159 -f 169/279/144 168/283/148 177/280/145 -f 167/285/150 166/284/149 175/292/156 -f 173/294/158 165/263/129 172/296/160 -f 170/295/159 162/282/147 171/297/146 -f 185/303/166 184/298/161 193/300/163 -f 181/305/167 173/294/158 180/301/164 -f 178/306/168 170/295/159 179/302/165 -f 171/281/146 177/280/145 179/304/165 -f 176/293/157 175/292/156 184/298/161 -f 182/290/154 174/289/153 181/305/167 -f 180/301/164 172/296/160 178/306/168 -f 177/280/145 176/293/157 185/303/166 -f 192/299/162 191/307/169 200/309/171 -f 183/291/155 182/290/154 191/307/169 -f 189/314/175 181/305/167 188/311/173 -f 186/315/176 178/306/168 187/312/174 -f 179/304/165 185/303/166 187/313/174 -f 184/298/161 183/291/155 192/299/162 -f 190/310/172 182/290/154 189/314/175 -f 188/311/173 180/301/164 186/315/176 -f 202/331/191 194/316/177 203/318/179 -f 198/321/182 190/310/172 197/319/180 -f 196/322/183 188/311/173 194/316/177 -f 193/300/163 192/299/162 201/320/181 -f 191/307/169 190/310/172 199/308/170 -f 197/319/180 189/314/175 196/322/183 -f 194/316/177 186/315/176 195/317/178 -f 187/313/174 193/300/163 195/323/178 -f 209/327/187 208/324/184 217/326/186 -f 203/339/179 195/323/178 209/327/187 -f 200/309/171 199/308/170 208/324/184 -f 198/321/182 197/319/180 206/330/190 -f 204/332/192 196/322/183 202/331/191 -f 201/320/181 200/309/171 209/327/187 -f 199/308/170 198/321/182 207/328/188 -f 205/329/189 197/319/180 204/332/192 -f 213/340/199 212/333/193 221/335/195 -f 207/328/188 206/330/190 215/337/197 -f 213/340/199 205/329/189 212/333/193 -f 210/341/200 202/331/191 211/338/198 -f 211/344/198 203/339/179 217/326/186 -f 208/324/184 207/328/188 216/325/185 -f 206/330/190 205/329/189 214/336/196 -f 212/333/193 204/332/192 210/341/200 -f 217/326/186 225/342/201 211/344/198 -f 216/325/185 215/337/197 224/346/204 -f 214/336/196 213/340/199 222/347/205 -f 210/341/200 218/348/206 212/333/193 -f 216/325/185 224/346/204 217/326/186 -f 215/337/197 214/336/196 223/345/203 -f 229/356/213 221/335/195 228/349/207 -f 241/365/221 233/350/208 240/352/210 -f 226/358/215 218/348/206 227/354/211 -f 227/364/211 219/343/202 233/350/208 -f 224/346/204 223/345/203 232/351/209 -f 222/347/205 221/335/195 230/357/214 -f 228/349/207 220/334/194 226/358/215 -f 225/342/201 224/346/204 233/350/208 -f 223/345/203 222/347/205 231/355/212 -f 211/338/198 219/353/202 210/341/200 -f 231/355/212 230/357/214 239/360/217 -f 229/356/213 228/349/207 237/362/219 -f 234/366/222 226/358/215 235/363/220 -f 235/474/220 227/364/211 241/365/221 -f 232/351/209 231/355/212 240/352/210 -f 230/357/214 229/356/213 238/359/216 -f 236/361/218 228/349/207 234/366/222 -f 244/410/253 246/367/223 266/369/225 -f 257/407/252 255/370/226 264/372/228 -f 244/410/253 245/373/229 246/367/223 -f 246/367/223 248/375/231 267/377/224 -f 249/380/235 247/374/230 260/379/234 -f 246/367/223 247/374/230 248/375/231 -f 250/388/242 252/381/236 269/383/238 -f 255/370/226 253/384/239 263/386/227 -f 248/375/231 249/380/235 250/388/242 -f 272/475/254 256/389/243 273/391/245 -f 245/373/229 259/392/246 242/394/248 -f 250/388/242 251/387/241 252/381/236 -f 273/476/245 266/405/225 267/398/224 -f 267/398/224 268/477/232 269/396/238 -f 269/396/238 270/406/237 271/397/249 -f 271/397/249 272/404/254 273/476/245 -f 273/476/245 267/398/224 271/397/249 -f 253/395/239 251/387/241 262/400/240 -f 252/478/236 253/384/239 254/401/251 -f 251/387/241 249/380/235 261/403/250 -f 260/477/234 243/396/233 242/406/248 -f 242/406/248 265/397/247 264/404/228 -f 264/404/228 263/476/227 262/405/240 -f 262/405/240 261/398/250 260/477/234 -f 260/477/234 242/406/248 262/405/240 -f 254/401/251 255/370/226 256/389/243 -f 259/392/246 257/407/252 265/409/247 -f 258/390/244 259/392/246 244/410/253 -f 256/389/243 257/407/252 258/390/244 -f 252/478/236 254/401/251 270/412/237 -f 247/374/230 245/373/229 243/414/233 -f 248/375/231 250/388/242 268/416/232 -f 254/401/251 256/389/243 271/418/249 -f 258/390/244 244/410/253 273/420/245 -f 279/434/268 283/421/255 281/423/257 -f 277/479/269 285/424/258 278/426/260 -f 287/447/279 286/427/261 275/429/263 -f 289/433/267 288/430/264 280/432/266 -f 281/423/257 282/422/256 280/432/266 -f 278/426/260 284/425/259 279/434/268 -f 286/427/261 285/435/258 276/428/262 -f 278/426/260 279/434/268 311/438/270 -f 286/427/261 292/439/271 285/435/258 -f 294/445/277 295/441/273 284/425/259 -f 297/446/278 296/442/274 282/422/256 -f 289/433/267 296/442/274 288/430/264 -f 287/447/279 291/444/276 286/427/261 -f 293/452/272 294/445/277 285/424/258 -f 295/441/273 297/446/278 283/421/255 -f 288/430/264 287/447/279 274/431/265 -f 290/443/275 298/448/280 291/444/276 -f 303/455/286 304/450/282 295/441/273 -f 301/480/287 302/451/283 293/452/272 -f 291/444/276 299/449/281 292/439/271 -f 296/442/274 305/454/285 290/443/275 -f 304/450/282 305/454/285 297/446/278 -f 302/451/283 303/455/286 294/445/277 -f 292/439/271 300/453/284 293/440/272 -f 288/430/264 290/443/275 287/447/279 -f 276/428/262 277/436/269 309/458/289 -f 274/431/265 275/429/263 307/460/290 -f 279/434/268 281/423/257 312/437/6 -f 277/479/269 278/426/260 310/462/288 -f 275/429/263 276/428/262 308/459/7 -f 306/463/292 280/432/266 307/460/290 -f 281/423/257 280/432/266 313/461/291 diff --git a/src/main/resources/assets/hbm/models/weapons/flamethrower.obj b/src/main/resources/assets/hbm/models/weapons/flamethrower.obj new file mode 100644 index 000000000..c1db95f4f --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/flamethrower.obj @@ -0,0 +1,4058 @@ +# Blender v2.79 (sub 0) OBJ File: 'flamethrower.blend' +# www.blender.org +o Tank +v 0.000000 -1.125000 -0.500000 +v 0.437500 -1.242228 -0.500000 +v 0.000000 -1.000000 -6.000000 +v 0.000000 -1.000000 -1.000000 +v 0.500000 -1.133975 -6.000000 +v 0.500000 -1.133975 -1.000000 +v 0.866025 -1.500000 -6.000000 +v 0.866025 -1.500000 -1.000000 +v 1.000000 -2.000000 -6.000000 +v 1.000000 -2.000000 -1.000000 +v 0.866025 -2.500000 -6.000000 +v 0.866025 -2.500000 -1.000000 +v 0.500000 -2.866025 -6.000000 +v 0.500000 -2.866025 -1.000000 +v 0.000000 -3.000000 -6.000000 +v 0.000000 -3.000000 -1.000000 +v -0.500000 -2.866025 -6.000000 +v -0.500000 -2.866026 -1.000000 +v -0.866025 -2.500000 -6.000000 +v -0.866025 -2.500000 -1.000000 +v -1.000000 -2.000000 -6.000000 +v -1.000000 -2.000000 -1.000000 +v -0.866026 -1.500000 -6.000000 +v -0.866026 -1.500001 -1.000000 +v -0.500000 -1.133975 -6.000000 +v -0.500000 -1.133975 -1.000000 +v 0.757772 -1.562500 -0.500000 +v 0.875000 -2.000000 -0.500000 +v 0.757772 -2.437500 -0.500000 +v 0.437500 -2.757772 -0.500000 +v 0.000000 -2.875000 -0.500000 +v -0.437500 -2.757772 -0.500000 +v -0.757772 -2.437500 -0.500000 +v -0.875000 -2.000000 -0.500000 +v -0.757772 -1.562500 -0.500000 +v -0.437500 -1.242228 -0.500000 +v 0.000000 -1.500000 -0.250000 +v 0.250000 -1.566987 -0.250000 +v 0.433013 -1.750000 -0.250000 +v 0.500000 -2.000000 -0.250000 +v 0.433012 -2.250000 -0.250000 +v 0.250000 -2.433013 -0.250000 +v 0.000000 -2.500000 -0.250000 +v -0.250000 -2.433013 -0.250000 +v -0.433012 -2.250000 -0.250000 +v -0.500000 -2.000000 -0.250000 +v -0.433013 -1.750000 -0.250000 +v -0.250000 -1.566988 -0.250000 +v 0.000000 -1.125000 -6.500000 +v 0.437500 -1.242228 -6.500000 +v 0.757772 -1.562500 -6.500000 +v 0.875000 -2.000000 -6.500000 +v 0.757772 -2.437500 -6.500000 +v 0.437500 -2.757772 -6.500000 +v 0.000000 -2.875000 -6.500000 +v -0.437500 -2.757772 -6.500000 +v -0.757772 -2.437500 -6.500000 +v -0.875000 -2.000000 -6.500000 +v -0.757772 -1.562500 -6.500000 +v -0.437500 -1.242228 -6.500000 +v 0.000000 -1.500000 -6.750000 +v 0.250000 -1.566987 -6.750000 +v 0.433013 -1.750000 -6.750000 +v 0.500000 -2.000000 -6.750000 +v 0.433012 -2.250000 -6.750000 +v 0.250000 -2.433013 -6.750000 +v 0.000000 -2.500000 -6.750000 +v -0.250000 -2.433013 -6.750000 +v -0.433012 -2.250000 -6.750000 +v -0.500000 -2.000000 -6.750000 +v -0.433013 -1.750000 -6.750000 +v -0.250000 -1.566988 -6.750000 +vt 0.346821 0.604839 +vt 0.369942 0.580645 +vt 0.369942 0.612903 +vt 0.390173 0.741935 +vt 0.369942 0.709677 +vt 0.390173 0.709677 +vt 0.624277 0.709677 +vt 0.624277 0.741935 +vt 0.369942 0.645161 +vt 0.346821 0.620968 +vt 0.390173 0.774194 +vt 0.369942 0.806452 +vt 0.369942 0.774194 +vt 0.624277 0.677419 +vt 0.369942 0.935484 +vt 0.346821 0.911290 +vt 0.369942 0.903226 +vt 0.369942 0.741935 +vt 0.390173 0.677419 +vt 0.624277 0.645161 +vt 0.346821 0.895161 +vt 0.369942 0.870968 +vt 0.369942 0.677419 +vt 0.390173 0.645161 +vt 0.624277 0.612903 +vt 0.346821 0.862903 +vt 0.369942 0.838710 +vt 0.390173 0.612903 +vt 0.624277 0.580645 +vt 0.346821 0.814516 +vt 0.390173 0.580645 +vt 0.369942 0.548387 +vt 0.390173 0.548387 +vt 0.624277 0.548387 +vt 0.346821 0.782258 +vt 0.390173 0.903226 +vt 0.390173 0.870968 +vt 0.390173 0.935484 +vt 0.624277 0.903226 +vt 0.624277 0.935484 +vt 0.346821 0.750000 +vt 0.390173 0.838710 +vt 0.390173 0.806452 +vt 0.624277 0.870968 +vt 0.346821 0.733871 +vt 0.624277 0.838710 +vt 0.346821 0.685484 +vt 0.624277 0.806452 +vt 0.346821 0.669355 +vt 0.624277 0.774194 +vt 0.346821 0.572581 +vt 0.647399 0.612903 +vt 0.647399 0.645161 +vt 0.343702 0.564533 +vt 0.343702 0.596757 +vt 0.303697 0.596757 +vt 0.670520 0.669355 +vt 0.647399 0.677419 +vt 0.647399 0.709677 +vt 0.647399 0.741935 +vt 0.647399 0.774194 +vt 0.647399 0.806452 +vt 0.647399 0.838710 +vt 0.647399 0.870968 +vt 0.647399 0.935484 +vt 0.647399 0.903226 +vt 0.647399 0.580645 +vt 0.303697 0.790340 +vt 0.343702 0.790340 +vt 0.323699 0.838676 +vt 0.670520 0.685484 +vt 0.670520 0.701613 +vt 0.670520 0.733871 +vt 0.670520 0.750000 +vt 0.670520 0.766129 +vt 0.670520 0.798387 +vt 0.670520 0.830645 +vt 0.670520 0.846774 +vt 0.670520 0.862903 +vt 0.670520 0.895161 +vt 0.670520 0.911290 +vt 0.670520 0.927419 +vt 0.670520 0.556452 +vt 0.670520 0.572581 +vt 0.670520 0.604839 +vt 0.670520 0.637097 +vt 0.346821 0.588710 +vt 0.346821 0.637097 +vt 0.346821 0.927419 +vt 0.346821 0.879032 +vt 0.346821 0.846774 +vt 0.346821 0.830645 +vt 0.346821 0.798387 +vt 0.346821 0.766129 +vt 0.346821 0.717742 +vt 0.346821 0.701613 +vt 0.346821 0.653226 +vt 0.346821 0.556452 +vt 0.335248 0.608552 +vt 0.323699 0.612869 +vt 0.312151 0.608552 +vt 0.300602 0.580645 +vt 0.303697 0.564533 +vt 0.312151 0.552738 +vt 0.323699 0.548421 +vt 0.335248 0.552738 +vt 0.346796 0.580645 +vt 0.670520 0.653226 +vt 0.647399 0.548387 +vt 0.312151 0.834358 +vt 0.303697 0.822564 +vt 0.300602 0.806452 +vt 0.312151 0.778545 +vt 0.323699 0.774227 +vt 0.335248 0.778545 +vt 0.346796 0.806452 +vt 0.343702 0.822564 +vt 0.335248 0.834358 +vt 0.670520 0.717742 +vt 0.670520 0.782258 +vt 0.670520 0.814516 +vt 0.670520 0.879032 +vt 0.670520 0.588710 +vt 0.670520 0.620968 +vn 0.2881 -0.1664 0.9430 +vn 0.4177 -0.7235 0.5496 +vn 0.7235 -0.4177 0.5496 +vn -0.0000 0.9928 0.1198 +vn 0.4177 0.7235 0.5496 +vn 0.4964 0.8598 0.1198 +vn 0.4964 0.8598 -0.1198 +vn -0.0000 0.9928 -0.1198 +vn 0.8354 -0.0000 0.5496 +vn -0.4964 0.8598 0.1198 +vn -0.7235 0.4177 0.5496 +vn -0.4177 0.7235 0.5496 +vn 0.8598 0.4964 -0.1198 +vn 0.0000 -0.8354 0.5496 +vn -0.1664 -0.2881 0.9430 +vn -0.4177 -0.7235 0.5496 +vn -0.0000 0.8354 0.5496 +vn 0.8598 0.4964 0.1198 +vn 0.9928 0.0000 -0.1198 +vn -0.7235 -0.4177 0.5496 +vn 0.7235 0.4177 0.5496 +vn 0.9928 -0.0000 0.1198 +vn 0.8598 -0.4964 -0.1198 +vn -0.2881 -0.1664 0.9430 +vn -0.8354 -0.0000 0.5496 +vn 0.8598 -0.4964 0.1198 +vn 0.4964 -0.8598 -0.1198 +vn -0.2881 0.1664 0.9430 +vn 0.4964 -0.8598 0.1198 +vn 0.0000 -0.9928 0.1198 +vn 0.0000 -0.9928 -0.1198 +vn -0.1664 0.2881 0.9430 +vn -0.4964 -0.8598 0.1198 +vn -0.8598 -0.4964 0.1198 +vn -0.4964 -0.8598 -0.1198 +vn -0.0000 0.3327 0.9430 +vn -0.9928 -0.0000 0.1198 +vn -0.8598 0.4964 0.1198 +vn -0.8598 -0.4964 -0.1198 +vn -0.9928 -0.0000 -0.1198 +vn 0.2881 0.1664 0.9430 +vn -0.8598 0.4964 -0.1198 +vn -0.4964 0.8598 -0.1198 +vn 0.1664 -0.2881 0.9430 +vn 0.7235 -0.4177 -0.5496 +vn 0.8354 0.0000 -0.5496 +vn 0.2881 0.1664 -0.9430 +vn 0.7235 0.4177 -0.5496 +vn 0.4177 0.7235 -0.5496 +vn -0.0000 0.8354 -0.5496 +vn -0.4177 0.7235 -0.5496 +vn -0.7235 0.4177 -0.5496 +vn -0.8354 -0.0000 -0.5496 +vn -0.7235 -0.4177 -0.5496 +vn 0.0000 -0.8354 -0.5496 +vn -0.4177 -0.7235 -0.5496 +vn 0.4177 -0.7235 -0.5496 +vn 0.2881 -0.1664 -0.9430 +vn -0.2881 -0.1664 -0.9430 +vn 0.0000 0.3327 -0.9430 +vn 0.1664 0.2881 -0.9430 +vn -0.1664 0.2881 -0.9430 +vn -0.2881 0.1664 -0.9430 +vn -0.3327 -0.0000 -0.9430 +vn -0.1664 -0.2881 -0.9430 +vn -0.0000 -0.3327 -0.9430 +vn 0.1664 -0.2881 -0.9430 +vn 0.3327 -0.0000 -0.9430 +vn 0.3327 -0.0000 0.9430 +vn 0.0000 -0.3327 0.9430 +vn -0.3327 -0.0000 0.9430 +vn 0.1664 0.2881 0.9430 +s 1 +f 41/1/1 30/2/2 29/3/3 +f 4/4/4 2/5/5 6/6/6 +f 4/4/4 5/7/7 3/8/8 +f 28/9/9 41/10/1 29/3/3 +f 26/11/10 35/12/11 36/13/12 +f 6/6/6 7/14/13 5/7/7 +f 31/15/14 44/16/15 32/17/16 +f 26/11/10 1/18/17 4/4/4 +f 8/19/18 9/20/19 7/14/13 +f 44/21/15 33/22/20 32/17/16 +f 6/6/6 27/23/21 8/19/18 +f 10/24/22 11/25/23 9/20/19 +f 45/26/24 34/27/25 33/22/20 +f 10/24/22 29/3/3 12/28/26 +f 12/28/26 13/29/27 11/25/23 +f 34/27/25 47/30/28 35/12/11 +f 14/31/29 31/32/14 16/33/30 +f 14/31/29 15/34/31 13/29/27 +f 35/12/11 48/35/32 36/13/12 +f 18/36/33 33/22/20 20/37/34 +f 16/38/30 17/39/35 15/40/31 +f 36/13/12 37/41/36 1/18/17 +f 22/42/37 35/12/11 24/43/38 +f 18/36/33 19/44/39 17/39/35 +f 37/45/36 2/5/5 1/18/17 +f 8/19/18 28/9/9 10/24/22 +f 20/37/34 21/46/40 19/44/39 +f 2/5/5 39/47/41 27/23/21 +f 14/31/29 29/3/3 30/2/2 +f 22/42/37 23/48/42 21/46/40 +f 16/38/30 32/17/16 18/36/33 +f 39/49/41 28/9/9 27/23/21 +f 24/43/38 25/50/43 23/48/42 +f 42/51/44 31/32/14 30/2/2 +f 20/37/34 34/27/25 22/42/37 +f 26/11/10 3/8/8 25/50/43 +f 9/20/19 53/52/45 52/53/46 +f 41/54/1 39/55/41 47/56/28 +f 52/53/46 63/57/47 51/58/48 +f 3/8/8 50/59/49 49/60/50 +f 7/14/13 50/59/49 5/7/7 +f 23/48/42 60/61/51 59/62/52 +f 19/44/39 58/63/53 57/64/54 +f 17/39/35 55/65/55 15/40/31 +f 3/8/8 60/61/51 25/50/43 +f 13/29/27 53/52/45 11/25/23 +f 9/20/19 51/58/48 7/14/13 +f 21/46/40 59/62/52 58/63/53 +f 19/44/39 56/66/56 17/39/35 +f 15/34/31 54/67/57 13/29/27 +f 65/68/58 69/69/59 61/70/60 +f 50/59/49 63/71/47 62/72/61 +f 50/59/49 61/73/60 49/60/50 +f 60/61/51 61/74/60 72/75/62 +f 60/61/51 71/76/63 59/62/52 +f 59/62/52 70/77/64 58/63/53 +f 57/64/54 70/78/64 69/79/59 +f 57/64/54 68/80/65 56/66/56 +f 55/65/55 68/81/65 67/82/66 +f 54/67/57 67/83/66 66/84/67 +f 54/67/57 65/85/58 53/52/45 +f 53/52/45 64/86/68 52/53/46 +f 41/1/1 42/87/44 30/2/2 +f 4/4/4 1/18/17 2/5/5 +f 4/4/4 6/6/6 5/7/7 +f 28/9/9 40/88/69 41/10/1 +f 26/11/10 24/43/38 35/12/11 +f 6/6/6 8/19/18 7/14/13 +f 31/15/14 43/89/70 44/16/15 +f 26/11/10 36/13/12 1/18/17 +f 8/19/18 10/24/22 9/20/19 +f 44/21/15 45/90/24 33/22/20 +f 6/6/6 2/5/5 27/23/21 +f 10/24/22 12/28/26 11/25/23 +f 45/26/24 46/91/71 34/27/25 +f 10/24/22 28/9/9 29/3/3 +f 12/28/26 14/31/29 13/29/27 +f 34/27/25 46/92/71 47/30/28 +f 14/31/29 30/2/2 31/32/14 +f 14/31/29 16/33/30 15/34/31 +f 35/12/11 47/93/28 48/35/32 +f 18/36/33 32/17/16 33/22/20 +f 16/38/30 18/36/33 17/39/35 +f 36/13/12 48/94/32 37/41/36 +f 22/42/37 34/27/25 35/12/11 +f 18/36/33 20/37/34 19/44/39 +f 37/45/36 38/95/72 2/5/5 +f 8/19/18 27/23/21 28/9/9 +f 20/37/34 22/42/37 21/46/40 +f 2/5/5 38/96/72 39/47/41 +f 14/31/29 12/28/26 29/3/3 +f 22/42/37 24/43/38 23/48/42 +f 16/38/30 31/15/14 32/17/16 +f 39/49/41 40/97/69 28/9/9 +f 24/43/38 26/11/10 25/50/43 +f 42/51/44 43/98/70 31/32/14 +f 20/37/34 33/22/20 34/27/25 +f 26/11/10 4/4/4 3/8/8 +f 9/20/19 11/25/23 53/52/45 +f 39/55/41 38/99/72 47/56/28 +f 38/99/72 37/100/36 47/56/28 +f 37/100/36 48/101/32 47/56/28 +f 47/56/28 46/102/71 45/103/24 +f 45/103/24 44/104/15 43/105/70 +f 43/105/70 42/106/44 41/54/1 +f 41/54/1 40/107/69 39/55/41 +f 47/56/28 45/103/24 43/105/70 +f 43/105/70 41/54/1 47/56/28 +f 52/53/46 64/108/68 63/57/47 +f 3/8/8 5/7/7 50/59/49 +f 7/14/13 51/58/48 50/59/49 +f 23/48/42 25/50/43 60/61/51 +f 19/44/39 21/46/40 58/63/53 +f 17/39/35 56/66/56 55/65/55 +f 3/8/8 49/60/50 60/61/51 +f 13/29/27 54/67/57 53/52/45 +f 9/20/19 52/53/46 51/58/48 +f 21/46/40 23/48/42 59/62/52 +f 19/44/39 57/64/54 56/66/56 +f 15/34/31 55/109/55 54/67/57 +f 61/70/60 62/110/61 65/68/58 +f 62/110/61 63/111/47 65/68/58 +f 63/111/47 64/112/68 65/68/58 +f 65/68/58 66/113/67 67/114/66 +f 67/114/66 68/115/65 69/69/59 +f 69/69/59 70/116/64 71/117/63 +f 71/117/63 72/118/62 69/69/59 +f 72/118/62 61/70/60 69/69/59 +f 65/68/58 67/114/66 69/69/59 +f 50/59/49 51/58/48 63/71/47 +f 50/59/49 62/119/61 61/73/60 +f 60/61/51 49/60/50 61/74/60 +f 60/61/51 72/120/62 71/76/63 +f 59/62/52 71/121/63 70/77/64 +f 57/64/54 58/63/53 70/78/64 +f 57/64/54 69/122/59 68/80/65 +f 55/65/55 56/66/56 68/81/65 +f 54/67/57 55/109/55 67/83/66 +f 54/67/57 66/123/67 65/85/58 +f 53/52/45 65/124/58 64/86/68 +o Gauge +v 1.312500 1.125000 -4.187500 +v 1.187500 1.125000 -4.187500 +v 1.250000 1.500000 -4.250000 +v 1.187500 1.125000 -4.250000 +v 1.250000 1.500000 -4.187500 +v 1.312500 1.125000 -4.250000 +vt 0.959538 0.056452 +vt 0.962428 0.080645 +vt 0.959538 0.080645 +vt 0.979769 0.084677 +vt 0.962428 0.088710 +vt 0.959538 0.088710 +vt 0.962428 0.112903 +vt 0.959538 0.112903 +vt 0.962428 0.056452 +vn -0.9864 0.1644 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.9864 0.1644 0.0000 +s off +f 77/125/73 76/126/73 74/127/73 +f 76/126/74 75/128/74 78/129/74 +f 74/127/75 78/129/75 73/130/75 +f 73/130/76 75/131/76 77/132/76 +f 77/125/73 75/133/73 76/126/73 +f 74/127/75 76/126/75 78/129/75 +f 73/130/76 78/129/76 75/131/76 +o HeatShield +v 0.500000 -1.000000 2.500000 +v 3.000000 -1.000000 2.500000 +v 0.500000 2.500000 2.500000 +v 3.000000 1.990000 2.500000 +v 0.500000 2.500000 2.250000 +v 0.500000 -1.000000 2.250000 +v 3.000000 -1.000000 2.250000 +v 3.000000 1.990000 2.250000 +v 1.500000 2.500000 2.500000 +v 1.500000 2.500000 2.250000 +v -3.000000 -1.000000 2.500000 +v -0.500000 -1.000000 2.500000 +v -3.000000 2.000000 2.500000 +v -0.500000 2.500000 2.500000 +v -3.000000 2.000000 2.250000 +v -3.000000 -1.000000 2.250000 +v -0.500000 -1.000000 2.250000 +v -0.500000 2.500000 2.250000 +v -1.500000 2.500000 2.500000 +v -1.500000 2.500000 2.250000 +v -0.500000 0.625000 2.437500 +v 0.500000 0.625000 2.437500 +v -0.500000 0.625000 2.312500 +v 0.500000 0.625000 2.312500 +v -0.500000 0.750000 2.312500 +v -0.500000 0.750000 2.437500 +v 0.500000 0.750000 2.437500 +v 0.500000 0.750000 2.312500 +v -0.500000 1.125000 2.437500 +v 0.500000 1.125000 2.437500 +v -0.500000 1.125000 2.312500 +v 0.500000 1.125000 2.312500 +v -0.500000 1.250000 2.312500 +v -0.500000 1.250000 2.437500 +v 0.500000 1.250000 2.437500 +v 0.500000 1.250000 2.312500 +v -0.500000 2.125000 2.437500 +v 0.500000 2.125000 2.437500 +v -0.500000 2.125000 2.312500 +v 0.500000 2.125000 2.312500 +v -0.500000 2.250000 2.312500 +v -0.500000 2.250000 2.437500 +v 0.500000 2.250000 2.437500 +v 0.500000 2.250000 2.312500 +v 2.000000 -3.000000 2.500000 +v 2.000000 -3.000000 2.250000 +v -2.000000 -3.000000 2.250000 +v -2.000000 -3.000000 2.500000 +v -2.937500 1.812500 2.250000 +v -2.812500 1.812500 2.250000 +v -2.937500 1.937500 2.250000 +v -2.812500 1.937500 2.250000 +v -0.687500 0.562500 -4.500000 +v -0.562500 0.562500 -4.500000 +v -0.687500 0.687500 -4.500000 +v -0.562500 0.687500 -4.500000 +v -1.137500 0.437500 -3.150000 +v -1.587500 0.437500 -1.800000 +v -2.037500 0.687500 -0.450000 +v -2.487500 1.187500 0.900000 +v -2.362500 1.187500 0.900000 +v -1.912500 0.687500 -0.450000 +v -1.462500 0.437500 -1.800000 +v -1.012500 0.437500 -3.150000 +v -1.012500 0.312500 -3.150000 +v -1.462500 0.312500 -1.800000 +v -1.912500 0.562500 -0.450000 +v -2.362500 1.062500 0.900000 +v -2.487500 1.062500 0.900000 +v -2.037500 0.562500 -0.450000 +v -1.587500 0.312500 -1.800000 +v -1.137500 0.312500 -3.150000 +vt 0.566474 0.370968 +vt 0.520231 0.145161 +vt 0.635838 0.338710 +vt 0.647399 0.338710 +vt 0.763006 0.145161 +vt 0.716763 0.370968 +vt 0.635838 0.145161 +vt 0.520231 0.370968 +vt 0.508671 0.145161 +vt 0.635838 0.370968 +vt 0.566474 0.387097 +vt 0.346821 0.145161 +vt 0.358382 0.016129 +vt 0.358382 0.145161 +vt 0.520231 0.387097 +vt 0.473988 0.145161 +vt 0.427746 0.370968 +vt 0.358382 0.338710 +vt 0.855491 0.370968 +vt 0.809249 0.370968 +vt 0.809249 0.145161 +vt 0.485549 0.370968 +vt 0.473988 0.370968 +vt 0.427746 0.387097 +vt 0.404624 0.016129 +vt 0.358382 0.387097 +vt 0.358382 0.370968 +vt 0.930636 0.653226 +vt 0.976879 0.661290 +vt 0.930636 0.661290 +vt 0.976879 0.669355 +vt 0.930636 0.677419 +vt 0.930636 0.669355 +vt 0.930636 0.685484 +vt 0.976879 0.677419 +vt 0.976879 0.685484 +vt 0.976879 0.669355 +vt 0.930636 0.677419 +vt 0.930636 0.669355 +vt 0.930636 0.653226 +vt 0.976879 0.661290 +vt 0.930636 0.661290 +vt 0.930636 0.685484 +vt 0.976879 0.677419 +vt 0.976879 0.685484 +vt 0.976879 0.669355 +vt 0.930636 0.677419 +vt 0.930636 0.669355 +vt 0.930636 0.653226 +vt 0.976879 0.661290 +vt 0.930636 0.661290 +vt 0.930636 0.685484 +vt 0.976879 0.677419 +vt 0.976879 0.685484 +vt 0.589595 -0.000000 +vt 0.589595 0.016129 +vt 0.647399 0.016129 +vt 0.647399 0.145161 +vt 0.693642 0.016129 +vt 0.763006 0.370968 +vt 0.508671 0.370968 +vt 0.635838 0.387097 +vt 0.346821 0.016129 +vt 0.924855 0.145161 +vt 0.924855 0.338710 +vt 0.485549 0.145161 +vt 0.346821 0.338710 +vt 0.473988 0.387097 +vt 0.976879 0.653226 +vt 0.976879 0.653226 +vt 0.976879 0.653226 +vt 0.404624 0.000000 +vt 0.635838 0.016129 +vt 0.878613 0.016129 +vt 0.277457 0.983871 +vt 0.346821 0.991935 +vt 0.277457 0.991935 +vt 0.346821 0.975806 +vt 0.346821 0.983871 +vt 0.277457 0.975806 +vt 0.346821 0.967742 +vt 0.346821 1.000000 +vt 0.277457 1.000000 +vt -0.000000 1.000000 +vt 0.069364 0.991935 +vt 0.069364 1.000000 +vt 0.138728 0.991935 +vt 0.138728 1.000000 +vt 0.208092 0.991935 +vt 0.208092 1.000000 +vt 0.000000 0.975806 +vt 0.069364 0.967742 +vt 0.069364 0.975806 +vt 0.138728 0.967742 +vt 0.138728 0.975806 +vt 0.208092 0.967742 +vt 0.208092 0.975806 +vt 0.277457 0.967742 +vt 0.069364 0.983871 +vt 0.000000 0.983871 +vt 0.138728 0.983871 +vt 0.208092 0.983871 +vt -0.000000 0.991935 +vt -0.000000 0.967742 +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.3219 0.9468 0.0000 +vn -0.8944 -0.4472 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.3162 0.9487 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.8944 -0.4472 0.0000 +vn 0.6788 0.6701 0.3004 +vn -0.5806 0.8131 -0.0429 +vn -0.6975 0.6931 -0.1819 +vn 0.7923 -0.5902 0.1548 +vn 0.6866 0.6388 0.3472 +vn 0.6651 -0.7335 0.1405 +vn -0.6262 -0.7022 -0.3388 +vn -0.6449 -0.7160 -0.2673 +vn -0.8661 -0.4997 -0.0111 +vn -0.6464 0.5821 -0.4933 +vn -0.7075 -0.6998 0.0981 +vn -0.6614 0.6307 -0.4059 +vn -0.6866 -0.7268 -0.0152 +vn -0.6788 0.6701 -0.3004 +vn -0.6650 -0.7335 -0.1405 +vn 0.6561 -0.5453 0.5217 +vn 0.6152 -0.6243 0.4814 +vn 0.6281 -0.6770 0.3837 +vn 0.6449 -0.7160 0.2673 +vn 0.7334 0.6775 -0.0555 +vn 0.5151 0.8106 -0.2786 +vn 0.7162 0.6954 0.0597 +vn 0.6975 0.6931 0.1819 +vn -0.5700 0.6227 -0.5360 +s off +f 87/134/77 79/135/77 82/136/77 +f 86/137/78 84/138/78 88/139/78 +f 80/140/79 86/137/79 82/136/79 +f 81/141/80 84/142/80 79/135/80 +f 82/143/81 88/144/81 87/134/81 +f 94/145/82 126/146/82 89/147/82 +f 87/134/83 83/148/83 81/141/83 +f 90/149/77 97/150/77 91/151/77 +f 98/152/78 96/153/78 95/154/78 +f 90/149/79 96/155/79 92/156/79 +f 91/151/80 94/145/80 89/147/80 +f 92/156/83 98/157/83 97/150/83 +f 79/135/77 90/149/77 126/158/77 +f 97/150/84 93/159/84 91/160/84 +f 101/161/85 100/162/85 99/163/85 +f 105/164/83 103/165/83 104/166/83 +f 101/167/78 106/168/78 102/169/78 +f 100/162/77 104/166/77 99/163/77 +f 113/170/83 111/171/83 112/172/83 +f 109/173/85 108/174/85 107/175/85 +f 109/176/78 114/177/78 110/178/78 +f 108/174/77 112/172/77 107/175/77 +f 121/179/83 119/180/83 120/181/83 +f 117/182/85 116/183/85 115/184/85 +f 117/185/78 122/186/78 118/187/78 +f 116/183/77 120/181/77 115/184/77 +f 126/158/85 124/188/85 123/189/85 +f 80/140/86 124/190/86 85/191/86 +f 95/154/78 84/138/78 124/192/78 +f 81/141/77 79/135/77 87/134/77 +f 79/135/77 80/140/77 82/136/77 +f 85/191/78 84/138/78 86/137/78 +f 84/138/78 83/193/78 88/139/78 +f 80/140/79 85/191/79 86/137/79 +f 81/141/80 83/194/80 84/142/80 +f 82/143/81 86/195/81 88/144/81 +f 94/145/82 125/196/82 126/146/82 +f 87/134/83 88/144/83 83/148/83 +f 91/151/77 89/147/77 90/149/77 +f 90/149/77 92/156/77 97/150/77 +f 95/154/78 94/197/78 93/198/78 +f 93/198/78 98/152/78 95/154/78 +f 90/149/79 95/199/79 96/155/79 +f 91/151/80 93/200/80 94/145/80 +f 92/156/83 96/201/83 98/157/83 +f 90/149/77 89/147/77 126/158/77 +f 126/158/77 123/189/77 79/135/77 +f 123/189/77 80/140/77 79/135/77 +f 97/150/84 98/157/84 93/159/84 +f 101/161/85 102/202/85 100/162/85 +f 105/164/83 106/168/83 103/165/83 +f 101/167/78 103/165/78 106/168/78 +f 100/162/77 105/164/77 104/166/77 +f 113/170/83 114/177/83 111/171/83 +f 109/173/85 110/203/85 108/174/85 +f 109/176/78 111/171/78 114/177/78 +f 108/174/77 113/170/77 112/172/77 +f 121/179/83 122/186/83 119/180/83 +f 117/182/85 118/204/85 116/183/85 +f 117/185/78 119/180/78 122/186/78 +f 116/183/77 121/179/77 120/181/77 +f 126/158/85 125/205/85 124/188/85 +f 80/140/86 123/206/86 124/190/86 +f 84/138/78 85/191/78 124/192/78 +f 124/192/78 125/207/78 95/154/78 +f 125/207/78 94/197/78 95/154/78 +s 1 +f 142/208/87 133/209/88 135/210/89 +f 142/208/87 132/211/90 134/212/91 +f 143/213/92 131/214/93 132/211/90 +f 135/210/89 131/215/93 150/216/94 +f 127/217/95 138/218/96 147/219/97 +f 147/219/97 137/220/98 148/221/99 +f 148/221/99 136/222/100 149/223/101 +f 149/223/101 135/210/89 150/216/94 +f 128/224/102 147/225/97 146/226/103 +f 146/226/103 148/227/99 145/228/104 +f 145/228/104 149/229/101 144/230/105 +f 144/230/105 150/231/94 143/213/92 +f 128/224/102 139/232/106 130/233/107 +f 146/226/103 140/234/108 139/232/106 +f 145/228/104 141/235/109 140/234/108 +f 141/235/109 143/213/92 142/208/87 +f 130/233/107 138/218/96 129/236/110 +f 139/232/106 137/220/98 138/218/96 +f 140/234/108 136/222/100 137/220/98 +f 141/235/109 135/210/89 136/222/100 +f 142/208/87 134/212/91 133/209/88 +f 142/208/87 143/213/92 132/211/90 +f 143/213/92 150/231/94 131/214/93 +f 135/210/89 133/209/88 131/215/93 +f 127/217/95 129/236/110 138/218/96 +f 147/219/97 138/218/96 137/220/98 +f 148/221/99 137/220/98 136/222/100 +f 149/223/101 136/222/100 135/210/89 +f 128/224/102 127/237/95 147/225/97 +f 146/226/103 147/225/97 148/227/99 +f 145/228/104 148/227/99 149/229/101 +f 144/230/105 149/229/101 150/231/94 +f 128/224/102 146/226/103 139/232/106 +f 146/226/103 145/228/104 140/234/108 +f 145/228/104 144/230/105 141/235/109 +f 141/235/109 144/230/105 143/213/92 +f 130/233/107 139/232/106 138/218/96 +f 139/232/106 140/234/108 137/220/98 +f 140/234/108 141/235/109 136/222/100 +f 141/235/109 142/208/87 135/210/89 +o Gun +v 0.000000 0.500000 7.000000 +v -0.250000 0.433013 7.000000 +v -0.433012 0.250000 7.000000 +v -0.500000 0.000000 7.000000 +v -0.433012 -0.250000 7.000000 +v -0.250000 -0.433013 7.000000 +v 0.000000 -0.500000 7.000000 +v 0.250000 -0.433013 7.000000 +v 0.433012 -0.250000 7.000000 +v 0.500000 -0.000000 7.000000 +v 0.433013 0.250000 7.000000 +v 0.250000 0.433013 7.000000 +v 0.000000 0.750000 5.750000 +v -0.375000 0.649519 5.750000 +v -0.649519 0.375000 5.750000 +v -0.750000 0.000000 5.750000 +v -0.649519 -0.375000 5.750000 +v -0.375000 -0.649519 5.750000 +v 0.000000 -0.750000 5.750000 +v 0.375000 -0.649519 5.750000 +v 0.649519 -0.375000 5.750000 +v 0.750000 -0.000000 5.750000 +v 0.649519 0.375000 5.750000 +v 0.375000 0.649519 5.750000 +v 0.000000 0.375000 7.000000 +v -0.187500 0.324760 7.000000 +v -0.324759 0.187500 7.000000 +v -0.375000 0.000000 7.000000 +v -0.324759 -0.187500 7.000000 +v -0.187500 -0.324759 7.000000 +v 0.000000 -0.375000 7.000000 +v 0.187500 -0.324760 7.000000 +v 0.324759 -0.187500 7.000000 +v 0.375000 -0.000000 7.000000 +v 0.324759 0.187500 7.000000 +v 0.187500 0.324759 7.000000 +v 0.000000 0.500000 5.500000 +v -0.250000 0.433013 5.500000 +v -0.433012 0.250000 5.500000 +v -0.500000 0.000000 5.500000 +v -0.433012 -0.250000 5.500000 +v -0.250000 -0.433013 5.500000 +v 0.000000 -0.500000 5.500000 +v 0.250000 -0.433013 5.500000 +v 0.433012 -0.250000 5.500000 +v 0.500000 -0.000000 5.500000 +v 0.433013 0.250000 5.500000 +v 0.250000 0.433013 5.500000 +v 0.000000 0.375000 6.000000 +v -0.187500 0.324760 6.000000 +v -0.324759 0.187500 6.000000 +v -0.375000 0.000000 6.000000 +v -0.324759 -0.187500 6.000000 +v -0.187500 -0.324759 6.000000 +v 0.000000 -0.375000 6.000000 +v 0.187500 -0.324760 6.000000 +v 0.324759 -0.187500 6.000000 +v 0.375000 -0.000000 6.000000 +v 0.324759 0.187500 6.000000 +v 0.187500 0.324759 6.000000 +v 0.000000 0.750000 5.500000 +v -0.375000 0.649519 5.500000 +v -0.649519 0.375000 5.500000 +v -0.750000 0.000000 5.500000 +v -0.649519 -0.375000 5.500000 +v -0.375000 -0.649519 5.500000 +v 0.000000 -0.750000 5.500000 +v 0.375000 -0.649519 5.500000 +v 0.649519 -0.375000 5.500000 +v 0.750000 -0.000000 5.500000 +v 0.649519 0.375000 5.500000 +v 0.375000 0.649519 5.500000 +v 0.000000 0.750000 4.000000 +v -0.375000 0.649519 4.000000 +v -0.649519 0.375000 4.000000 +v -0.750000 0.000000 4.000000 +v -0.649519 -0.375000 4.000000 +v -0.375000 -0.649519 4.000000 +v 0.000000 -0.750000 4.000000 +v 0.375000 -0.649519 4.000000 +v 0.649519 -0.375000 4.000000 +v 0.750000 -0.000000 4.000000 +v 0.649519 0.375000 4.000000 +v 0.375000 0.649519 4.000000 +v 0.000000 0.500000 4.000000 +v -0.250000 0.433013 4.000000 +v -0.433012 0.250000 4.000000 +v -0.500000 0.000000 4.000000 +v -0.433012 -0.250000 4.000000 +v -0.250000 -0.433013 4.000000 +v 0.000000 -0.500000 4.000000 +v 0.250000 -0.433013 4.000000 +v 0.433012 -0.250000 4.000000 +v 0.500000 -0.000000 4.000000 +v 0.433013 0.250000 4.000000 +v 0.250000 0.433013 4.000000 +v 0.000000 0.500000 -3.500000 +v -0.250000 0.433013 -3.500000 +v -0.433012 0.250000 -3.500000 +v -0.500000 0.000000 -3.500000 +v -0.433012 -0.250000 -3.500000 +v -0.250000 -0.433013 -3.500000 +v 0.000000 -0.500000 -3.500000 +v 0.250000 -0.433013 -3.500000 +v 0.433012 -0.250000 -3.500000 +v 0.500000 -0.000000 -3.500000 +v 0.433013 0.250000 -3.500000 +v 0.250000 0.433013 -3.500000 +v 0.000000 0.750000 -3.500000 +v -0.375000 0.649519 -3.500000 +v -0.649519 0.375000 -3.500000 +v -0.750000 0.000000 -3.500000 +v -0.649519 -0.375000 -3.500000 +v -0.375000 -0.649519 -3.500000 +v 0.000000 -0.750000 -3.500000 +v 0.375000 -0.649519 -3.500000 +v 0.649519 -0.375000 -3.500000 +v 0.750000 -0.000000 -3.500000 +v 0.649519 0.375000 -3.500000 +v 0.375000 0.649519 -3.500000 +v 0.000000 0.750000 -4.500000 +v -0.375000 0.649519 -4.500000 +v -0.649519 0.375000 -4.500000 +v -0.750000 0.000000 -4.500000 +v -0.649519 -0.375000 -4.500000 +v -0.375000 -0.649519 -4.500000 +v 0.000000 -0.750000 -4.500000 +v 0.375000 -0.649519 -4.500000 +v 0.649519 -0.375000 -4.500000 +v 0.750000 -0.000000 -4.500000 +v 0.649519 0.375000 -4.500000 +v 0.375000 0.649519 -4.500000 +v -0.500000 1.000000 -4.500000 +v -1.000000 0.500000 -4.500000 +v 1.000000 0.500000 -4.500000 +v 0.500000 1.000000 -4.500000 +v -1.000000 -0.500000 -4.500000 +v -0.500000 -1.000000 -4.500000 +v 0.500000 -1.000000 -4.500000 +v 1.000000 -0.500000 -4.500000 +v -0.500000 -1.000000 -8.000000 +v -1.000000 -0.500000 -8.000000 +v -1.000000 0.500000 -8.000000 +v -0.500000 1.000000 -8.000000 +v 0.500000 1.000000 -8.000000 +v 1.000000 0.500000 -8.000000 +v 1.000000 -0.500000 -8.000000 +v 0.500000 -1.000000 -8.000000 +v 0.000000 -0.625000 4.750000 +v -0.176777 -0.625000 4.823223 +v -0.250000 -0.625000 5.000000 +v -0.176777 -0.625000 5.176777 +v 0.000000 -0.625000 5.250000 +v 0.176776 -0.625000 5.176777 +v 0.250000 -0.625000 5.000000 +v 0.176776 -0.625000 4.823223 +v 0.000000 -0.875000 4.750000 +v -0.176777 -0.875000 4.823223 +v -0.250000 -0.875000 5.000000 +v -0.176777 -0.875000 5.176777 +v 0.000000 -0.875000 5.250000 +v 0.176776 -0.875000 5.176777 +v 0.250000 -0.875000 5.000000 +v 0.176776 -0.875000 4.823223 +v 0.000000 -0.875000 4.875000 +v -0.088388 -0.875000 4.911612 +v -0.125000 -0.875000 5.000000 +v -0.088388 -0.875000 5.088388 +v 0.000000 -0.875000 5.125000 +v 0.088388 -0.875000 5.088388 +v 0.125000 -0.875000 5.000000 +v 0.088388 -0.875000 4.911612 +v 0.000000 -1.125000 4.875000 +v -0.088388 -1.125000 4.911612 +v -0.125000 -1.125000 5.000000 +v -0.088388 -1.125000 5.088388 +v 0.000000 -1.125000 5.125000 +v 0.088388 -1.125000 5.088388 +v 0.125000 -1.125000 5.000000 +v 0.088388 -1.125000 4.911612 +v 0.000000 -1.500000 7.250000 +v 0.000000 -1.390165 4.984835 +v -0.088388 -1.364277 5.010723 +v -0.125000 -1.301777 5.073223 +v -0.088388 -1.239277 5.135724 +v 0.000000 -1.213388 5.161612 +v 0.088388 -1.239277 5.135724 +v 0.125000 -1.301777 5.073223 +v 0.088388 -1.364277 5.010723 +v 0.000000 -1.500000 5.250000 +v -0.088388 -1.463388 5.250000 +v -0.125000 -1.375000 5.250000 +v -0.088388 -1.286611 5.250000 +v 0.000000 -1.250000 5.250000 +v 0.088388 -1.286611 5.250000 +v 0.125000 -1.375000 5.250000 +v 0.088388 -1.463388 5.250000 +v -0.088388 -1.463388 7.250000 +v -0.125000 -1.375000 7.250000 +v -0.088388 -1.286611 7.250000 +v 0.000000 -1.250000 7.250000 +v 0.088388 -1.286611 7.250000 +v 0.125000 -1.375000 7.250000 +v 0.088388 -1.463388 7.250000 +v 0.000000 -0.875000 7.625000 +v 0.000000 -1.390165 7.515165 +v -0.088388 -1.364277 7.489277 +v -0.125000 -1.301777 7.426777 +v -0.088388 -1.239276 7.364276 +v 0.000000 -1.213388 7.338388 +v 0.088388 -1.239276 7.364276 +v 0.125000 -1.301777 7.426777 +v 0.088388 -1.364277 7.489277 +v 0.000000 -1.125000 7.625000 +v -0.088388 -1.125000 7.588388 +v -0.125000 -1.125000 7.500000 +v -0.088388 -1.125000 7.411612 +v 0.000000 -1.125000 7.375000 +v 0.088388 -1.125000 7.411612 +v 0.125000 -1.125000 7.500000 +v 0.088388 -1.125000 7.588388 +v -0.088388 -0.875000 7.588388 +v -0.125000 -0.875000 7.500000 +v -0.088388 -0.875000 7.411612 +v 0.000000 -0.875000 7.375000 +v 0.088388 -0.875000 7.411612 +v 0.125000 -0.875000 7.500000 +v 0.088388 -0.875000 7.588388 +v 0.000000 -0.875000 7.750000 +v -0.176777 -0.875000 7.676777 +v -0.250000 -0.875000 7.500000 +v -0.176777 -0.875000 7.323223 +v 0.000000 -0.875000 7.250000 +v 0.176776 -0.875000 7.323223 +v 0.250000 -0.875000 7.500000 +v 0.176776 -0.875000 7.676777 +v 0.000000 -0.375000 7.625000 +v -0.088388 -0.375000 7.588388 +v -0.125000 -0.375000 7.500000 +v -0.088388 -0.375000 7.411612 +v 0.000000 -0.375000 7.375000 +v 0.088388 -0.375000 7.411612 +v 0.125000 -0.375000 7.500000 +v 0.088388 -0.375000 7.588388 +v -0.500000 -0.750000 -4.500000 +v 0.500000 -0.750000 -4.500000 +v 0.500000 -1.000000 -4.500000 +v -0.500000 -1.000000 -4.500000 +v -0.500000 -0.750000 4.250000 +v 0.500000 -0.750000 4.250000 +v 0.500000 -1.000000 4.250000 +v -0.500000 -1.000000 4.250000 +v 0.375000 1.000000 -7.125000 +v -0.500000 -0.750000 4.500000 +v 0.500000 -0.750000 4.500000 +v -0.375000 1.000000 -7.125000 +v -0.500000 -0.500000 4.250000 +v 0.500000 -0.500000 4.250000 +v -0.500000 -0.500000 4.500000 +v 0.500000 -0.500000 4.500000 +v -0.375000 1.000000 -7.875000 +v 0.375000 1.000000 -7.875000 +v -0.375000 1.250000 -7.125000 +v 0.375000 1.250000 -7.125000 +v -0.375000 1.250000 -7.875000 +v 0.375000 1.250000 -7.875000 +v -0.250000 1.250000 -7.250000 +v 0.250000 1.250000 -7.250000 +v -0.250000 1.250000 -7.750000 +v 0.250000 1.250000 -7.750000 +v -0.250000 1.875000 -7.750000 +v -0.250000 2.250000 -7.250000 +v 0.250000 2.250000 -7.250000 +v 0.250000 1.875000 -7.750000 +v -0.500000 0.000000 -0.750000 +v -0.433012 0.250000 -0.750000 +v -0.187500 2.062500 -7.250000 +v 0.187500 2.062500 -7.250000 +v -0.250000 0.433013 -0.750000 +v 0.000000 0.500000 -0.750000 +v -0.187500 2.062500 -5.750000 +v 0.187500 2.062500 -5.750000 +v -0.250000 1.625000 -5.750000 +v 0.250000 1.625000 -5.750000 +v -0.250000 2.125000 -5.750000 +v 0.250000 2.125000 -5.750000 +v -0.250000 2.125000 -5.375000 +v -0.250000 1.625000 -5.500000 +v 0.250000 1.625000 -5.500000 +v 0.250000 2.125000 -5.375000 +v -0.062500 1.687500 -7.250000 +v -0.187500 1.812500 -7.250000 +v 0.187500 1.812500 -7.250000 +v 0.062500 1.687500 -7.250000 +v -0.187500 1.812500 -5.750000 +v -0.062500 1.687500 -5.750000 +v 0.062500 1.687500 -5.750000 +v 0.187500 1.812500 -5.750000 +v -0.433012 -0.250000 -0.750000 +v -0.250000 -0.433013 -0.750000 +v 0.000000 -0.500000 -0.750000 +v 0.250000 -0.433013 -0.750000 +v 0.433012 -0.250000 -0.750000 +v 0.500000 -0.000000 -0.750000 +v 0.433013 0.250000 -0.750000 +v 0.250000 0.433013 -0.750000 +v 0.000000 0.625000 -0.750000 +v -0.312500 0.541266 -0.750000 +v -0.541266 0.312500 -0.750000 +v -0.625000 0.000000 -0.750000 +v -0.541266 -0.312500 -0.750000 +v -0.312500 -0.541266 -0.750000 +v 0.000000 -0.625000 -0.750000 +v 0.312500 -0.541266 -0.750000 +v 0.541265 -0.312500 -0.750000 +v 0.625000 -0.000000 -0.750000 +v 0.541266 0.312500 -0.750000 +v 0.312500 0.541266 -0.750000 +v 0.433012 -0.250000 -0.250000 +v 0.250000 -0.433013 -0.250000 +v 0.000000 -0.500000 -0.250000 +v -0.250000 -0.433013 -0.250000 +v -0.433012 -0.250000 -0.250000 +v -0.500000 0.000000 -0.250000 +v -0.433012 0.250000 -0.250000 +v -0.250000 0.433013 -0.250000 +v 0.000000 0.500000 -0.250000 +v 0.500000 -0.000000 -0.250000 +v 0.433013 0.250000 -0.250000 +v 0.250000 0.433013 -0.250000 +v -0.312500 0.541266 -0.250000 +v 0.000000 0.625000 -0.250000 +v -0.541266 0.312500 -0.250000 +v -0.625000 0.000000 -0.250000 +v -0.541266 -0.312500 -0.250000 +v -0.312500 -0.541266 -0.250000 +v 0.000000 -0.625000 -0.250000 +v 0.312500 -0.541266 -0.250000 +v 0.541265 -0.312500 -0.250000 +v 0.625000 -0.000000 -0.250000 +v 0.541266 0.312500 -0.250000 +v 0.312500 0.541266 -0.250000 +v 0.375000 0.125000 -0.375000 +v 0.375000 -0.125000 -0.375000 +v 0.375000 0.125000 -0.625000 +v 0.375000 -0.125000 -0.625000 +v 0.875000 -0.125000 -0.625000 +v 0.875000 0.125000 -0.625000 +v 0.875000 -0.125000 -0.375000 +v 0.875000 0.125000 -0.375000 +v 0.875000 -0.187500 -0.687500 +v 0.875000 0.187500 -0.687500 +v 0.625000 -0.125000 -0.375000 +v 0.625000 0.125000 -0.375000 +v 2.875000 -0.187500 -0.687500 +v 2.875000 0.187500 -0.687500 +v 0.750000 0.125000 -0.375000 +v 0.750000 -0.125000 -0.375000 +v 0.875000 -0.187500 -0.437500 +v 0.875000 -0.062500 -0.312500 +v 0.875000 0.062500 -0.312500 +v 0.875000 0.187500 -0.437500 +v 0.000000 -0.500000 7.500000 +v 2.875000 -0.062500 -0.312500 +v 2.875000 -0.187500 -0.437500 +v 2.875000 0.187500 -0.437500 +v 2.875000 0.062500 -0.312500 +v 0.625000 0.125000 -0.125000 +v 0.625000 -0.125000 -0.125000 +v 0.750000 0.125000 -0.125000 +v 0.750000 -0.125000 -0.125000 +v 0.750000 0.125000 0.000000 +v 0.750000 -0.125000 0.000000 +v 2.875000 0.125000 -0.125000 +v 2.875000 -0.125000 -0.125000 +v 2.750000 0.125000 0.000000 +v 2.750000 -0.125000 0.000000 +v 0.312500 0.541266 -3.500000 +v 0.217648 0.553754 -3.500000 +v 0.141747 0.495513 -3.500000 +v 0.129259 0.400660 -3.500000 +v 0.282352 0.312272 -3.500000 +v 0.358253 0.370513 -3.500000 +v 0.370741 0.465365 -3.500000 +v 0.312500 0.541266 4.000000 +v 0.217648 0.553754 4.000000 +v 0.141747 0.495513 4.000000 +v 0.129259 0.400660 4.000000 +v 0.282352 0.312272 4.000000 +v 0.358253 0.370513 4.000000 +v 0.370741 0.465365 4.000000 +v -0.312500 0.541266 -3.500000 +v -0.370741 0.465365 -3.500000 +v -0.358253 0.370513 -3.500000 +v -0.282352 0.312272 -3.500000 +v -0.129259 0.400660 -3.500000 +v -0.141747 0.495513 -3.500000 +v -0.217648 0.553753 -3.500000 +v -0.312500 0.541266 4.000000 +v -0.370741 0.465365 4.000000 +v -0.358253 0.370513 4.000000 +v -0.282352 0.312272 4.000000 +v -0.129259 0.400660 4.000000 +v -0.141747 0.495513 4.000000 +v -0.217648 0.553753 4.000000 +v 1.250000 1.750000 -4.250000 +v 0.896447 1.603553 -4.250000 +v 0.750000 1.250000 -4.250000 +v 0.896447 0.896447 -4.250000 +v 1.250000 0.750000 -4.250000 +v 1.603553 0.896447 -4.250000 +v 1.750000 1.250000 -4.250000 +v 1.603553 1.603553 -4.250000 +v 0.896447 1.603553 -4.000000 +v 1.250000 1.750000 -4.000000 +v 0.750000 1.250000 -4.000000 +v 0.896447 0.896447 -4.000000 +v 1.250000 0.750000 -4.000000 +v 1.603553 0.896447 -4.000000 +v 1.750000 1.250000 -4.000000 +v 1.603553 1.603553 -4.000000 +v 1.073223 1.426777 -3.750000 +v 1.250000 1.500000 -3.750000 +v 1.000000 1.250000 -3.750000 +v 1.073223 1.073223 -3.750000 +v 1.250000 1.000000 -3.750000 +v 1.426776 1.073223 -3.750000 +v 1.500000 1.250000 -3.750000 +v 1.426776 1.426777 -3.750000 +v 1.016466 1.281631 -4.093750 +v 1.016466 1.281631 -3.906250 +v 1.281631 1.016466 -3.906250 +v 1.281631 1.016466 -4.093750 +v 0.309360 0.574524 -4.093750 +v 0.309360 0.574524 -3.906250 +v 0.574524 0.309359 -3.906250 +v 0.574524 0.309359 -4.093750 +v 0.940640 1.559359 -4.250000 +v 1.250000 1.687500 -4.250000 +v 0.812500 1.250000 -4.250000 +v 0.940640 0.940641 -4.250000 +v 1.250000 0.812500 -4.250000 +v 1.559359 0.940641 -4.250000 +v 1.687500 1.250000 -4.250000 +v 1.559359 1.559359 -4.250000 +v 0.940640 1.559359 -4.187500 +v 1.250000 1.687500 -4.187500 +v 0.812500 1.250000 -4.187500 +v 0.940640 0.940641 -4.187500 +v 1.250000 0.812500 -4.187500 +v 1.559359 0.940641 -4.187500 +v 1.687500 1.250000 -4.187500 +v 1.559359 1.559359 -4.187500 +v 0.000000 -1.000000 -5.000000 +v -0.250000 -1.566987 -7.500000 +v -0.433013 -1.750000 -7.500000 +v -0.500000 -2.000000 -7.500000 +v 0.866025 -2.500000 -5.000000 +v 0.500000 -2.866025 -5.000000 +v 0.000000 -3.000000 -5.000000 +v -0.500000 -2.866025 -5.000000 +v -0.866025 -2.500000 -5.000000 +v -1.000000 -2.000000 -5.000000 +v -0.866026 -1.500000 -5.000000 +v -0.500000 -1.133975 -5.000000 +v 0.000000 -1.000000 -5.500000 +v 0.000000 -1.500000 -7.500000 +v 0.250000 -1.566987 -7.500000 +v 0.433013 -1.750000 -7.500000 +v 0.866025 -2.500000 -5.500000 +v 0.500000 -2.866025 -5.500000 +v 0.000000 -3.000000 -5.500000 +v -0.500000 -2.866025 -5.500000 +v -0.866025 -2.500000 -5.500000 +v -1.000000 -2.000000 -5.500000 +v -0.866026 -1.500000 -5.500000 +v -0.500000 -1.133975 -5.500000 +v 0.000000 -0.750000 -5.500000 +v -0.625000 -0.917468 -5.500000 +v -1.082532 -1.375000 -5.500000 +v -1.250000 -2.000000 -5.500000 +v -1.082532 -2.625000 -5.500000 +v -0.625000 -3.082531 -5.500000 +v 0.000000 -3.250000 -5.500000 +v 0.625000 -3.082532 -5.500000 +v 1.082531 -2.625000 -5.500000 +v 0.500000 -2.000000 -7.500000 +v 0.433012 -2.250000 -7.500000 +v 0.250000 -2.433013 -7.500000 +v 0.000000 -0.750000 -5.000000 +v -0.625000 -0.917468 -5.000000 +v -1.082532 -1.375000 -5.000000 +v -1.250000 -2.000000 -5.000000 +v -1.082532 -2.625000 -5.000000 +v -0.625000 -3.082531 -5.000000 +v 0.000000 -3.250000 -5.000000 +v 0.625000 -3.082532 -5.000000 +v 1.082531 -2.625000 -5.000000 +v 0.000000 -2.500000 -7.500000 +v -0.250000 -2.433013 -7.500000 +v -0.433012 -2.250000 -7.500000 +v 1.082531 -2.625000 -1.500000 +v -0.250000 -1.566988 -6.750000 +v -0.433013 -1.750000 -6.750000 +v -0.500000 -2.000000 -6.750000 +v 0.625000 -3.082532 -1.500000 +v 0.000000 -3.250000 -1.500000 +v -0.625000 -3.082531 -1.500000 +v -1.082532 -2.625000 -1.500000 +v -1.250000 -2.000000 -1.500000 +v -1.082532 -1.375000 -1.500000 +v -0.625000 -0.917468 -1.500000 +v 0.000000 -0.750000 -1.500000 +v 1.082531 -2.625000 -2.000000 +v -0.433012 -2.250000 -6.750000 +v -0.250000 -2.433013 -6.750000 +v 0.000000 -2.500000 -6.750000 +v 0.625000 -3.082532 -2.000000 +v 0.000000 -3.250000 -2.000000 +v -0.625000 -3.082531 -2.000000 +v -1.082532 -2.625000 -2.000000 +v -1.250000 -2.000000 -2.000000 +v -1.082532 -1.375000 -2.000000 +v -0.625000 -0.917468 -2.000000 +v 0.000000 -0.750000 -2.000000 +v -0.500000 -1.133975 -2.000000 +v -0.866026 -1.500000 -2.000000 +v -1.000000 -2.000000 -2.000000 +v -0.866025 -2.500000 -2.000000 +v -0.500000 -2.866025 -2.000000 +v 0.000000 -3.000000 -2.000000 +v 0.500000 -2.866025 -2.000000 +v 0.866025 -2.500000 -2.000000 +v 0.000000 -1.000000 -2.000000 +v 0.250000 -2.433013 -6.750000 +v 0.433012 -2.250000 -6.750000 +v 0.500000 -2.000000 -6.750000 +v -0.500000 -1.133975 -1.500000 +v -0.866026 -1.500000 -1.500000 +v -1.000000 -2.000000 -1.500000 +v -0.866025 -2.500000 -1.500000 +v -0.500000 -2.866025 -1.500000 +v 0.000000 -3.000000 -1.500000 +v 0.500000 -2.866025 -1.500000 +v 0.866025 -2.500000 -1.500000 +v 0.000000 -1.000000 -1.500000 +v 0.433013 -1.750000 -6.750000 +v 0.250000 -1.566987 -6.750000 +v 0.000000 -1.500000 -6.750000 +v -0.250000 -1.625000 -6.875000 +v 0.250000 -1.625000 -6.875000 +v -0.250000 -1.625000 -7.375000 +v 0.250000 -1.625000 -7.375000 +v -0.250000 -1.000000 -6.875000 +v 0.250000 -1.000000 -6.875000 +v -0.250000 -1.000000 -7.375000 +v 0.250000 -1.000000 -7.375000 +v 0.000000 -1.625000 -7.500000 +v -0.265165 -1.734835 -7.500000 +v -0.375000 -2.000000 -7.500000 +v -0.265165 -2.265165 -7.500000 +v 0.000000 -2.375000 -7.500000 +v 0.265165 -2.265165 -7.500000 +v 0.375000 -2.000000 -7.500000 +v 0.265165 -1.734835 -7.500000 +v 0.000000 -1.625000 -8.500000 +v -0.265165 -1.734835 -8.500000 +v -0.375000 -2.000000 -8.500000 +v -0.265165 -2.265165 -8.500000 +v 0.000000 -2.375000 -8.500000 +v 0.265165 -2.265165 -8.500000 +v 0.375000 -2.000000 -8.500000 +v 0.265165 -1.734835 -8.500000 +v 0.375000 0.000000 -8.250001 +v 0.000000 -1.478553 -8.853554 +v -0.265165 -1.556218 -8.931218 +v -0.375000 -1.743718 -9.118718 +v -0.265165 -1.931218 -9.306218 +v 0.000000 -2.008883 -9.383883 +v 0.265165 -1.931218 -9.306218 +v 0.375000 -1.743718 -9.118718 +v 0.265165 -1.556219 -8.931218 +v 0.000000 -1.125000 -9.000000 +v -0.265165 -1.125000 -9.109835 +v -0.375000 -1.125000 -9.375000 +v -0.265165 -1.125000 -9.640165 +v 0.000000 -1.125000 -9.750000 +v 0.265165 -1.125000 -9.640165 +v 0.375000 -1.125000 -9.375000 +v 0.265165 -1.125000 -9.109835 +v 0.000000 -0.875000 -9.000000 +v -0.265165 -0.875000 -9.109835 +v -0.375000 -0.875000 -9.375000 +v -0.265165 -0.875000 -9.640165 +v 0.000000 -0.875000 -9.750000 +v 0.265165 -0.875000 -9.640165 +v 0.375000 -0.875000 -9.375000 +v 0.265165 -0.875000 -9.109835 +v 0.265165 0.265166 -8.250001 +v 0.000000 0.375000 -8.250000 +v -0.265165 0.265166 -8.250001 +v -0.375000 0.000000 -8.250001 +v -0.265165 -0.265165 -8.250000 +v 0.000000 -0.375000 -8.250000 +v 0.000000 -0.375000 -8.500000 +v -0.265165 -0.265165 -8.500000 +v -0.375000 0.000000 -8.500001 +v -0.265165 0.265166 -8.500001 +v 0.000000 0.375000 -8.500000 +v 0.265165 0.265166 -8.500001 +v 0.375000 0.000000 -8.500001 +v 0.265165 -0.265165 -8.500000 +v 0.265165 -0.443782 -8.931218 +v 0.375000 -0.256282 -9.118719 +v 0.265165 -0.068781 -9.306219 +v 0.000000 0.008884 -9.383883 +v -0.265165 -0.068781 -9.306219 +v -0.375000 -0.256282 -9.118719 +v -0.265165 -0.443782 -8.931218 +v 0.000000 -0.521446 -8.853554 +v 0.265165 -0.265165 -8.250000 +v 0.000000 0.500000 -8.250000 +v -0.353553 0.353554 -8.250000 +v -0.500000 0.000000 -8.250000 +v -0.353553 -0.353553 -8.250000 +v 0.000000 -0.500000 -8.250000 +v 0.353553 -0.353553 -8.250000 +v 0.500000 0.000000 -8.250000 +v 0.353553 0.353554 -8.250000 +v -0.353553 0.353554 -8.000000 +v 0.000000 0.500000 -8.000000 +v -0.500000 0.000000 -8.000000 +v -0.353553 -0.353553 -8.000000 +v 0.000000 -0.500000 -8.000000 +v 0.353553 -0.353553 -8.000000 +v 0.500000 0.000000 -8.000000 +v 0.353553 0.353554 -8.000000 +v -0.937500 1.000000 -4.562500 +v -0.562500 1.000000 -4.562500 +v -0.937500 1.000000 -4.937500 +v -0.562500 1.000000 -4.937500 +v -0.937500 0.500000 -4.562500 +v -0.562500 0.500000 -4.562500 +v -0.937500 0.500000 -4.937500 +v -0.562500 0.500000 -4.937500 +v -0.937500 1.000000 -5.062500 +v -0.562500 1.000000 -5.062500 +v -0.937500 1.000000 -5.437500 +v -0.562500 1.000000 -5.437500 +v -0.937500 0.500000 -5.062500 +v -0.562500 0.500000 -5.062500 +v -0.937500 0.500000 -5.437500 +v -0.562500 0.500000 -5.437500 +v -0.875000 1.000000 -4.625000 +v -0.625000 1.000000 -4.625000 +v -0.875000 1.000000 -4.875000 +v -0.625000 1.000000 -4.875000 +v -0.875000 1.375000 -4.875000 +v -0.875000 1.375000 -4.625000 +v -0.625000 1.375000 -4.625000 +v -0.625000 1.375000 -4.875000 +v -0.875000 1.000000 -5.125000 +v -0.625000 1.000000 -5.125000 +v -0.875000 1.000000 -5.375000 +v -0.625000 1.000000 -5.375000 +v -0.875000 1.375000 -5.375000 +v -0.875000 1.375000 -5.125000 +v -0.625000 1.375000 -5.125000 +v -0.625000 1.375000 -5.375000 +v -0.500000 0.000000 2.125000 +v -0.433012 0.250000 2.125000 +v -0.250000 0.433013 2.125000 +v 0.000000 0.500000 2.125000 +v -0.433012 -0.250000 2.125000 +v -0.250000 -0.433013 2.125000 +v 0.000000 -0.500000 2.125000 +v 0.250000 -0.433013 2.125000 +v 0.433012 -0.250000 2.125000 +v 0.500000 -0.000000 2.125000 +v 0.433013 0.250000 2.125000 +v 0.250000 0.433013 2.125000 +v 0.000000 0.625000 2.125000 +v -0.312500 0.541266 2.125000 +v -0.541266 0.312500 2.125000 +v -0.625000 0.000000 2.125000 +v -0.541266 -0.312500 2.125000 +v -0.312500 -0.541266 2.125000 +v 0.000000 -0.625000 2.125000 +v 0.312500 -0.541266 2.125000 +v 0.541265 -0.312500 2.125000 +v 0.625000 -0.000000 2.125000 +v 0.541266 0.312500 2.125000 +v 0.312500 0.541266 2.125000 +v 0.433012 -0.250000 2.625000 +v 0.250000 -0.433013 2.625000 +v 0.000000 -0.500000 2.625000 +v -0.250000 -0.433013 2.625000 +v -0.433012 -0.250000 2.625000 +v -0.500000 0.000000 2.625000 +v -0.433012 0.250000 2.625000 +v -0.250000 0.433013 2.625000 +v 0.000000 0.500000 2.625000 +v 0.500000 -0.000000 2.625000 +v 0.433013 0.250000 2.625000 +v 0.250000 0.433013 2.625000 +v -0.312500 0.541266 2.625000 +v 0.000000 0.625000 2.625000 +v -0.541266 0.312500 2.625000 +v -0.625000 0.000000 2.625000 +v -0.541266 -0.312500 2.625000 +v -0.312500 -0.541266 2.625000 +v 0.000000 -0.625000 2.625000 +v 0.312500 -0.541266 2.625000 +v 0.541265 -0.312500 2.625000 +v 0.625000 -0.000000 2.625000 +v 0.541266 0.312500 2.625000 +v 0.312500 0.541266 2.625000 +vt 0.052023 0.334677 +vt 0.046243 0.318548 +vt 0.052023 0.318548 +vt 0.052023 0.383065 +vt 0.046243 0.366935 +vt 0.052023 0.366935 +vt 0.052023 0.245968 +vt 0.046243 0.258065 +vt 0.046243 0.245968 +vt 0.052023 0.479839 +vt 0.046243 0.463710 +vt 0.052023 0.463710 +vt 0.052023 0.407258 +vt 0.046243 0.391129 +vt 0.052023 0.391129 +vt 0.052023 0.286290 +vt 0.046243 0.270161 +vt 0.052023 0.270161 +vt 0.052023 0.197581 +vt 0.046243 0.209677 +vt 0.046243 0.197581 +vt 0.052023 0.431452 +vt 0.046243 0.415323 +vt 0.052023 0.415323 +vt 0.052023 0.310484 +vt 0.046243 0.294355 +vt 0.052023 0.294355 +vt 0.052023 0.358871 +vt 0.046243 0.342742 +vt 0.052023 0.342742 +vt 0.052023 0.237903 +vt 0.046243 0.221774 +vt 0.052023 0.221774 +vt 0.052023 0.439516 +vt 0.046243 0.451613 +vt 0.046243 0.439516 +vt 0.002476 0.496091 +vt 0.017341 0.484117 +vt 0.032206 0.496091 +vt 0.132948 0.290323 +vt 0.121387 0.310484 +vt 0.121387 0.294355 +vt 0.132948 0.314516 +vt 0.121387 0.334677 +vt 0.121387 0.318548 +vt 0.121387 0.342742 +vt 0.132948 0.362903 +vt 0.121387 0.358871 +vt 0.121387 0.366935 +vt 0.132948 0.387097 +vt 0.121387 0.383065 +vt 0.121387 0.407258 +vt 0.121387 0.391129 +vt 0.121387 0.415323 +vt 0.132948 0.435484 +vt 0.121387 0.431452 +vt 0.121387 0.455645 +vt 0.121387 0.439516 +vt 0.121387 0.463710 +vt 0.132948 0.483871 +vt 0.121387 0.479839 +vt 0.132948 0.193548 +vt 0.121387 0.213710 +vt 0.121387 0.197581 +vt 0.132948 0.217742 +vt 0.121387 0.237903 +vt 0.121387 0.221774 +vt 0.132948 0.241935 +vt 0.121387 0.262097 +vt 0.121387 0.245968 +vt 0.132948 0.266129 +vt 0.121387 0.286290 +vt 0.121387 0.270161 +vt 0.202312 0.290323 +vt 0.213873 0.310484 +vt 0.202312 0.314516 +vt 0.213873 0.334677 +vt 0.202312 0.338710 +vt 0.213873 0.342742 +vt 0.202312 0.362903 +vt 0.213873 0.366935 +vt 0.202312 0.387097 +vt 0.213873 0.407258 +vt 0.202312 0.411290 +vt 0.213873 0.415323 +vt 0.202312 0.435484 +vt 0.213873 0.455645 +vt 0.202312 0.459677 +vt 0.213873 0.463710 +vt 0.202312 0.483871 +vt 0.213873 0.197581 +vt 0.202312 0.217742 +vt 0.202312 0.193548 +vt 0.213873 0.221774 +vt 0.202312 0.241935 +vt 0.213873 0.262097 +vt 0.202312 0.266129 +vt 0.213873 0.286290 +vt 0.213873 0.366935 +vt 0.225434 0.387097 +vt 0.213873 0.383065 +vt 0.213873 0.262097 +vt 0.225434 0.241935 +vt 0.225434 0.266129 +vt 0.213873 0.463710 +vt 0.225434 0.483871 +vt 0.213873 0.479839 +vt 0.213873 0.407258 +vt 0.225434 0.411290 +vt 0.213873 0.286290 +vt 0.225434 0.290323 +vt 0.213873 0.197581 +vt 0.225434 0.217742 +vt 0.213873 0.213710 +vt 0.213873 0.415323 +vt 0.225434 0.435484 +vt 0.213873 0.431452 +vt 0.213873 0.310484 +vt 0.225434 0.314516 +vt 0.213873 0.342742 +vt 0.225434 0.362903 +vt 0.213873 0.358871 +vt 0.213873 0.221774 +vt 0.213873 0.237903 +vt 0.213873 0.455645 +vt 0.225434 0.459677 +vt 0.213873 0.334677 +vt 0.225434 0.338710 +vt 0.092486 0.677419 +vt 0.254335 0.741935 +vt 0.092486 0.741935 +vt 0.092486 0.580645 +vt 0.254335 0.645161 +vt 0.092486 0.645161 +vt 0.092486 0.483871 +vt 0.254335 0.548387 +vt 0.092486 0.548387 +vt 0.000000 0.741935 +vt 0.023121 0.645161 +vt 0.277457 0.645161 +vt 0.346821 0.677419 +vt 0.323699 0.774194 +vt 0.092486 0.774194 +vt 0.254335 0.774194 +vt 0.092486 0.870968 +vt 0.254335 0.838710 +vt 0.254335 0.870968 +vt 0.092486 0.838710 +vt 0.676301 0.943548 +vt 0.682081 0.935484 +vt 0.684971 0.943548 +vt 0.658960 0.943548 +vt 0.664740 0.935484 +vt 0.667630 0.943548 +vt 0.650289 0.943548 +vt 0.658960 0.935484 +vt 0.641618 0.943548 +vt 0.635838 0.935484 +vt 0.638728 0.935484 +vt 0.693642 0.943548 +vt 0.687861 0.935484 +vt 0.690751 0.935484 +vt 0.670520 0.935484 +vt 0.673410 0.935484 +vt 0.647399 0.935484 +vt 0.632948 0.943548 +vt 0.627168 0.935484 +vt 0.630058 0.935484 +vt 0.739884 0.903226 +vt 0.745665 0.911290 +vt 0.736994 0.911290 +vt 0.760116 0.903226 +vt 0.754335 0.911290 +vt 0.757225 0.903226 +vt 0.705202 0.903226 +vt 0.710983 0.911290 +vt 0.702312 0.911290 +vt 0.722543 0.903226 +vt 0.728324 0.911290 +vt 0.719653 0.911290 +vt 0.731214 0.903226 +vt 0.751445 0.903226 +vt 0.748555 0.903226 +vt 0.699422 0.903226 +vt 0.693642 0.911290 +vt 0.696532 0.903226 +vt 0.716763 0.903226 +vt 0.713873 0.903226 +vt 0.699422 0.548387 +vt 0.294798 0.483871 +vt 0.699422 0.483871 +vt 0.699422 0.403226 +vt 0.294798 0.387097 +vt 0.699422 0.387097 +vt 0.294798 0.467742 +vt 0.699422 0.467742 +vt 0.832370 0.395161 +vt 0.803468 0.387097 +vt 0.838150 0.387097 +vt 0.838150 0.395161 +vt 0.815029 0.435484 +vt 0.815029 0.395161 +vt 0.283237 0.483871 +vt 0.283237 0.483871 +vt 0.271676 0.467742 +vt 0.283237 0.467742 +vt 0.294798 0.403226 +vt 0.283237 0.387097 +vt 0.283237 0.403226 +vt 0.271676 0.403226 +vt 0.271676 0.387097 +vt 0.283237 0.387097 +vt 0.283237 0.548387 +vt 0.271676 0.483871 +vt 0.907514 0.370968 +vt 0.872832 0.387097 +vt 0.872832 0.370968 +vt 0.803468 0.370968 +vt 0.768786 0.387097 +vt 0.768786 0.370968 +vt 0.838150 0.370968 +vt 0.867052 0.395161 +vt 0.901734 0.395161 +vt 0.907514 0.387097 +vt 0.797688 0.395161 +vt 0.815029 0.467742 +vt 0.838150 0.435484 +vt 0.838150 0.467742 +vt 0.791907 0.395161 +vt 0.768786 0.459677 +vt 0.768786 0.395161 +vt 0.791907 0.459677 +vt 0.861272 0.395161 +vt 0.768786 0.500000 +vt 0.838150 0.491935 +vt 0.838150 0.500000 +vt 0.768786 0.548387 +vt 0.838150 0.524194 +vt 0.838150 0.548387 +vt 0.768786 0.524194 +vt 0.838150 0.508065 +vt 0.809249 0.596774 +vt 0.786127 0.564516 +vt 0.809249 0.564516 +vt 0.786127 0.653226 +vt 0.809249 0.620968 +vt 0.809249 0.653226 +vt 0.786127 0.620968 +vt 0.786127 0.596774 +vt 0.809249 0.548387 +vt 0.774566 0.564516 +vt 0.820809 0.564516 +vt 0.826590 0.596774 +vt 0.768786 0.508065 +vt 0.838150 0.483871 +vt 0.768786 0.491935 +vt 0.768786 0.483871 +vt 0.838150 0.467742 +vt 1.000000 0.330645 +vt 0.994220 0.310484 +vt 1.000000 0.314516 +vt 1.000000 0.350806 +vt 0.994220 0.330645 +vt 1.000000 0.334677 +vt 1.000000 0.370968 +vt 0.994220 0.350806 +vt 1.000000 0.354839 +vt 1.000000 0.391129 +vt 0.994220 0.370968 +vt 1.000000 0.375000 +vt 1.000000 0.411290 +vt 0.994220 0.391129 +vt 1.000000 0.395161 +vt 1.000000 0.431452 +vt 0.994220 0.411290 +vt 1.000000 0.415323 +vt 1.000000 0.435484 +vt 0.994220 0.451613 +vt 0.994220 0.431452 +vt 1.000000 0.455645 +vt 0.994220 0.471774 +vt 1.000000 0.475806 +vt 0.994220 0.491935 +vt 1.000000 0.270161 +vt 0.994220 0.250000 +vt 1.000000 0.254032 +vt 1.000000 0.274194 +vt 0.994220 0.290323 +vt 0.994220 0.270161 +vt 1.000000 0.310484 +vt 1.000000 0.294355 +vt 0.971098 0.310484 +vt 0.965318 0.330645 +vt 0.965318 0.314516 +vt 0.971098 0.330645 +vt 0.965318 0.350806 +vt 0.965318 0.334677 +vt 0.971098 0.350806 +vt 0.965318 0.370968 +vt 0.965318 0.354839 +vt 0.971098 0.370968 +vt 0.965318 0.391129 +vt 0.965318 0.375000 +vt 0.971098 0.391129 +vt 0.965318 0.411290 +vt 0.965318 0.395161 +vt 0.971098 0.411290 +vt 0.965318 0.431452 +vt 0.965318 0.415323 +vt 0.965318 0.435484 +vt 0.971098 0.451613 +vt 0.965318 0.451613 +vt 0.965318 0.455645 +vt 0.971098 0.471774 +vt 0.965318 0.471774 +vt 0.965318 0.475806 +vt 0.971098 0.491935 +vt 0.965318 0.491935 +vt 0.971098 0.250000 +vt 0.965318 0.270161 +vt 0.965318 0.254032 +vt 0.965318 0.274194 +vt 0.971098 0.290323 +vt 0.965318 0.290323 +vt 0.965318 0.310484 +vt 0.965318 0.294355 +vt 0.890173 0.895161 +vt 0.797688 0.879032 +vt 0.890173 0.879032 +vt 0.786127 0.854839 +vt 0.797688 0.854839 +vt 0.927746 0.870968 +vt 0.904624 0.854839 +vt 0.927746 0.854839 +vt 0.927746 0.887097 +vt 0.904624 0.870968 +vt 0.927746 0.919355 +vt 0.904624 0.903226 +vt 0.927746 0.903226 +vt 0.890173 0.911290 +vt 0.797688 0.903226 +vt 0.890173 0.903226 +vt 0.797688 0.911290 +vt 0.890173 0.915323 +vt 0.797688 0.919355 +vt 0.893064 0.875000 +vt 0.890173 0.854839 +vt 0.893064 0.858871 +vt 0.462428 0.959677 +vt 0.450867 0.951613 +vt 0.462428 0.951613 +vt 0.450867 0.983871 +vt 0.445087 0.983871 +vt 0.450867 0.975806 +vt 0.797688 0.895161 +vt 0.890173 0.899194 +vt 0.893064 0.915323 +vt 0.901734 0.854839 +vt 0.904624 0.858871 +vt 0.901734 0.879032 +vt 0.904624 0.875000 +vt 0.890173 0.935484 +vt 0.890173 0.919355 +vt 0.462428 0.983871 +vt 0.462428 0.975806 +vt 0.450867 0.959677 +vt 0.450867 0.935484 +vt 0.462428 0.935484 +vt 0.445087 0.983871 +vt 0.352601 0.975806 +vt 0.445087 0.975806 +vt 0.445087 0.951613 +vt 0.346821 0.959677 +vt 0.346821 0.975806 +vt 0.445087 0.951613 +vt 0.352601 0.959677 +vt 0.346821 0.951613 +vt 0.346821 0.935484 +vt 0.445087 0.935484 +vt 0.445087 0.959677 +vt 0.930636 0.129032 +vt 0.927746 0.153226 +vt 0.927746 0.129032 +vt 0.965329 0.016129 +vt 0.976879 0.000015 +vt 0.988428 0.016129 +vt 0.956647 0.491935 +vt 0.973988 0.556452 +vt 0.956647 0.556452 +vt 0.930636 0.556452 +vt 0.947977 0.491935 +vt 0.947977 0.556452 +vt 0.930636 0.225806 +vt 0.927746 0.201613 +vt 0.930636 0.201613 +vt 0.930636 0.177419 +vt 0.930636 0.153226 +vt 0.973988 0.491935 +vt 0.982659 0.556452 +vt 0.930636 0.080645 +vt 0.927746 0.056452 +vt 0.930636 0.056452 +vt 0.930636 0.104839 +vt 0.927746 0.104839 +vt 0.927746 0.177419 +vt 0.930636 0.250000 +vt 0.927746 0.225806 +vt 0.927746 0.080645 +vt 0.945086 0.000034 +vt 0.959375 0.008291 +vt 0.965293 0.028226 +vt 0.722543 0.463710 +vt 0.734104 0.427419 +vt 0.734104 0.467742 +vt 0.722543 0.504032 +vt 0.734104 0.508065 +vt 0.722543 0.544355 +vt 0.734104 0.548387 +vt 0.722543 0.584677 +vt 0.734104 0.588710 +vt 0.722543 0.625000 +vt 0.734104 0.629032 +vt 0.722543 0.665323 +vt 0.734104 0.669355 +vt 0.722543 0.705645 +vt 0.734104 0.709677 +vt 0.708338 0.725837 +vt 0.748309 0.725837 +vt 0.728324 0.774132 +vt 0.757225 0.387097 +vt 0.734104 0.370968 +vt 0.757225 0.370968 +vt 0.768786 0.705645 +vt 0.757225 0.669355 +vt 0.768786 0.673387 +vt 0.722543 0.423387 +vt 0.734104 0.387097 +vt 0.734104 0.427419 +vt 0.768786 0.665323 +vt 0.757225 0.629032 +vt 0.768786 0.633065 +vt 0.768786 0.423387 +vt 0.768786 0.391129 +vt 0.768786 0.463710 +vt 0.757225 0.427419 +vt 0.768786 0.431452 +vt 0.768786 0.504032 +vt 0.757225 0.467742 +vt 0.768786 0.471774 +vt 0.768786 0.625000 +vt 0.757225 0.588710 +vt 0.768786 0.592742 +vt 0.768786 0.544355 +vt 0.757225 0.508065 +vt 0.768786 0.512097 +vt 0.768786 0.584677 +vt 0.757225 0.548387 +vt 0.768786 0.552419 +vt 0.768786 0.584677 +vt 0.757225 0.548387 +vt 0.768786 0.552419 +vt 0.768786 0.625000 +vt 0.757225 0.588710 +vt 0.768786 0.592742 +vt 0.768786 0.665323 +vt 0.757225 0.629032 +vt 0.768786 0.633065 +vt 0.768786 0.705645 +vt 0.757225 0.669355 +vt 0.768786 0.673387 +vt 0.768786 0.544355 +vt 0.757225 0.508065 +vt 0.768786 0.512097 +vt 0.722543 0.705645 +vt 0.734104 0.669355 +vt 0.734104 0.709677 +vt 0.768786 0.504032 +vt 0.757225 0.467742 +vt 0.768786 0.471774 +vt 0.768786 0.463710 +vt 0.757225 0.427419 +vt 0.768786 0.431452 +vt 0.722543 0.665323 +vt 0.734104 0.629032 +vt 0.768786 0.423387 +vt 0.757225 0.387097 +vt 0.768786 0.391129 +vt 0.722543 0.423387 +vt 0.734104 0.387097 +vt 0.734104 0.370968 +vt 0.757225 0.370968 +vt 0.722543 0.625000 +vt 0.734104 0.588710 +vt 0.722543 0.584677 +vt 0.734104 0.548387 +vt 0.722543 0.544355 +vt 0.734104 0.508065 +vt 0.748309 0.790353 +vt 0.748309 0.822550 +vt 0.708338 0.822550 +vt 0.722543 0.504032 +vt 0.734104 0.467742 +vt 0.722543 0.463710 +vt 0.884393 0.500000 +vt 0.861272 0.459677 +vt 0.884393 0.459677 +vt 0.930636 0.500000 +vt 0.907514 0.459677 +vt 0.930636 0.459677 +vt 0.907514 0.500000 +vt 0.861272 0.500000 +vt 0.838150 0.459677 +vt 0.826390 0.685484 +vt 0.803468 0.717463 +vt 0.780547 0.685484 +vt 0.965318 0.612903 +vt 0.982659 0.588710 +vt 0.982659 0.612903 +vt 0.965318 0.612903 +vt 0.982659 0.588710 +vt 0.982659 0.612903 +vt 0.947977 0.588710 +vt 0.965318 0.556452 +vt 0.965318 0.588710 +vt 1.000000 0.556452 +vt 1.000000 0.588710 +vt 0.982659 0.556452 +vt 0.930636 0.588710 +vt 0.947977 0.556452 +vt 0.947977 0.588710 +vt 0.965318 0.556452 +vt 0.965318 0.588710 +vt 1.000000 0.556452 +vt 1.000000 0.588710 +vt 0.982659 0.556452 +vt 0.930636 0.588710 +vt 0.947977 0.556452 +vt 0.953757 0.653226 +vt 0.965318 0.637097 +vt 0.965318 0.653226 +vt 0.953757 0.653226 +vt 0.965318 0.637097 +vt 0.965318 0.653226 +vt 0.953757 0.612903 +vt 0.942197 0.637097 +vt 0.942197 0.612903 +vt 0.976879 0.612903 +vt 0.965318 0.612903 +vt 0.953757 0.637097 +vt 0.930636 0.637097 +vt 0.930636 0.612903 +vt 0.953757 0.612903 +vt 0.942197 0.637097 +vt 0.942197 0.612903 +vt 0.976879 0.612903 +vt 0.965318 0.612903 +vt 0.953757 0.637097 +vt 0.930636 0.637097 +vt 0.930636 0.612903 +vt 0.965318 0.330645 +vt 0.959538 0.310484 +vt 0.965318 0.314516 +vt 0.965318 0.350806 +vt 0.959538 0.330645 +vt 0.965318 0.334677 +vt 0.965318 0.370968 +vt 0.959538 0.350806 +vt 0.965318 0.354839 +vt 0.965318 0.391129 +vt 0.959538 0.370968 +vt 0.965318 0.375000 +vt 0.965318 0.411290 +vt 0.959538 0.391129 +vt 0.965318 0.395161 +vt 0.965318 0.431452 +vt 0.959538 0.411290 +vt 0.965318 0.415323 +vt 0.965318 0.435484 +vt 0.959538 0.451613 +vt 0.959538 0.431452 +vt 0.965318 0.455645 +vt 0.959538 0.471774 +vt 0.965318 0.475806 +vt 0.959538 0.491935 +vt 0.965318 0.270161 +vt 0.959538 0.250000 +vt 0.965318 0.254032 +vt 0.965318 0.274194 +vt 0.959538 0.290323 +vt 0.959538 0.270161 +vt 0.965318 0.310484 +vt 0.965318 0.294355 +vt 0.936416 0.310484 +vt 0.930636 0.330645 +vt 0.930636 0.314516 +vt 0.936416 0.330645 +vt 0.930636 0.350806 +vt 0.930636 0.334677 +vt 0.936416 0.350806 +vt 0.930636 0.370968 +vt 0.930636 0.354839 +vt 0.936416 0.370968 +vt 0.930636 0.391129 +vt 0.930636 0.375000 +vt 0.936416 0.391129 +vt 0.930636 0.411290 +vt 0.930636 0.395161 +vt 0.936416 0.411290 +vt 0.930636 0.431452 +vt 0.930636 0.415323 +vt 0.930636 0.435484 +vt 0.936416 0.451613 +vt 0.930636 0.451613 +vt 0.930636 0.455645 +vt 0.936416 0.471774 +vt 0.930636 0.471774 +vt 0.930636 0.475806 +vt 0.936416 0.491935 +vt 0.930636 0.491935 +vt 0.936416 0.250000 +vt 0.930636 0.270161 +vt 0.930636 0.254032 +vt 0.930636 0.274194 +vt 0.936416 0.290323 +vt 0.930636 0.290323 +vt 0.930636 0.310484 +vt 0.930636 0.294355 +vt 0.046243 0.330645 +vt 0.046243 0.379032 +vt 0.052023 0.262097 +vt 0.046243 0.475806 +vt 0.046243 0.403226 +vt 0.046243 0.282258 +vt 0.052023 0.213710 +vt 0.046243 0.427419 +vt 0.046243 0.306452 +vt 0.046243 0.354839 +vt 0.046243 0.233871 +vt 0.052023 0.455645 +vt 0.017341 0.532012 +vt 0.008759 0.528803 +vt 0.002476 0.520038 +vt 0.000177 0.508065 +vt 0.008759 0.487326 +vt 0.025923 0.487326 +vt 0.034506 0.508065 +vt 0.032206 0.520038 +vt 0.025923 0.528803 +vt 0.132948 0.338710 +vt 0.132948 0.411290 +vt 0.132948 0.459677 +vt 0.213873 0.294355 +vt 0.213873 0.318548 +vt 0.213873 0.358871 +vt 0.213873 0.383065 +vt 0.213873 0.391129 +vt 0.213873 0.431452 +vt 0.213873 0.439516 +vt 0.213873 0.479839 +vt 0.213873 0.213710 +vt 0.213873 0.237903 +vt 0.213873 0.245968 +vt 0.213873 0.270161 +vt 0.213873 0.245968 +vt 0.213873 0.391129 +vt 0.213873 0.270161 +vt 0.225434 0.193548 +vt 0.213873 0.294355 +vt 0.213873 0.439516 +vt 0.213873 0.318548 +vt 0.254335 0.677419 +vt 0.254335 0.580645 +vt 0.254335 0.483871 +vt 0.069364 0.774194 +vt 0.023121 0.774194 +vt 0.000000 0.677419 +vt 0.069364 0.645161 +vt 0.277457 0.774194 +vt 0.323699 0.645161 +vt 0.346821 0.741935 +vt 0.679191 0.935484 +vt 0.661850 0.935484 +vt 0.653179 0.935484 +vt 0.644509 0.935484 +vt 0.624277 0.943548 +vt 0.742775 0.903226 +vt 0.763006 0.911290 +vt 0.708093 0.903226 +vt 0.725434 0.903226 +vt 0.734104 0.903226 +vt 0.294798 0.548387 +vt 0.809249 0.395161 +vt 0.271676 0.548387 +vt 0.843931 0.395161 +vt 0.878613 0.395161 +vt 0.774566 0.395161 +vt 0.861272 0.459677 +vt 0.786127 0.548387 +vt 0.768786 0.596774 +vt 0.768786 0.467742 +vt 1.000000 0.451613 +vt 1.000000 0.471774 +vt 1.000000 0.491935 +vt 1.000000 0.290323 +vt 0.971098 0.431452 +vt 0.971098 0.270161 +vt 0.786127 0.879032 +vt 0.780347 0.870968 +vt 0.780347 0.862903 +vt 0.904624 0.887097 +vt 0.904624 0.919355 +vt 0.893064 0.899194 +vt 0.797688 0.935484 +vt 0.346821 0.983871 +vt 0.976879 0.032243 +vt 0.968712 0.027523 +vt 0.968712 0.004735 +vt 0.985046 0.004735 +vt 0.985046 0.027523 +vt 0.930636 0.491935 +vt 0.982659 0.491935 +vt 0.927746 0.250000 +vt 0.959375 0.048160 +vt 0.945086 0.056418 +vt 0.930798 0.048160 +vt 0.924880 0.028226 +vt 0.930798 0.008291 +vt 0.722543 0.431452 +vt 0.722543 0.471774 +vt 0.722543 0.512097 +vt 0.722543 0.552419 +vt 0.722543 0.592742 +vt 0.722543 0.633065 +vt 0.722543 0.673387 +vt 0.716785 0.769818 +vt 0.708338 0.758034 +vt 0.705247 0.741936 +vt 0.716785 0.714053 +vt 0.728324 0.709739 +vt 0.739862 0.714053 +vt 0.751401 0.741935 +vt 0.748309 0.758034 +vt 0.739862 0.769819 +vt 0.757225 0.709677 +vt 0.722543 0.391129 +vt 0.757225 0.709677 +vt 0.722543 0.673387 +vt 0.722543 0.633065 +vt 0.722543 0.391129 +vt 0.722543 0.592742 +vt 0.722543 0.552419 +vt 0.722543 0.512097 +vt 0.739862 0.834335 +vt 0.728324 0.838648 +vt 0.716785 0.834335 +vt 0.705246 0.806452 +vt 0.708338 0.790353 +vt 0.716785 0.778569 +vt 0.728324 0.774255 +vt 0.739862 0.778569 +vt 0.751401 0.806452 +vt 0.722543 0.471774 +vt 0.722543 0.431452 +vt 0.838150 0.500000 +vt 0.819676 0.708097 +vt 0.787260 0.708097 +vt 0.787260 0.662871 +vt 0.803468 0.653505 +vt 0.819676 0.662871 +vt 0.930636 0.556452 +vt 0.930636 0.556452 +vt 0.976879 0.637097 +vt 0.976879 0.637097 +vt 0.965318 0.451613 +vt 0.965318 0.471774 +vt 0.965318 0.491935 +vt 0.965318 0.290323 +vt 0.936416 0.431452 +vt 0.936416 0.270161 +vt 0.109827 0.314516 +vt 0.109827 0.338710 +vt 0.109827 0.362903 +vt 0.109827 0.387097 +vt 0.109827 0.411290 +vt 0.109827 0.459677 +vt 0.109827 0.483871 +vt 0.109827 0.193548 +vt 0.109827 0.217742 +vt 0.109827 0.241935 +vt 0.109827 0.290323 +vt 0.109827 0.435484 +vt 0.109827 0.266129 +vt 0.000000 0.270161 +vt 0.000000 0.197581 +vt 0.000000 0.415323 +vt 0.000000 0.294355 +vt 0.000000 0.342742 +vt 0.000000 0.221774 +vt 0.000000 0.439516 +vt 0.000000 0.318548 +vt 0.000000 0.366935 +vt 0.000000 0.245968 +vt 0.000000 0.463710 +vt 0.000000 0.391129 +vt -0.000000 0.032258 +vt 0.346821 0.048387 +vt -0.000000 0.048387 +vt -0.000000 0.177419 +vt 0.346821 0.193548 +vt -0.000000 0.193548 +vt -0.000000 0.129032 +vt 0.346821 0.145161 +vt -0.000000 0.145161 +vt 0.346821 0.064516 +vt -0.000000 0.064516 +vt -0.000000 -0.000000 +vt 0.346821 0.016129 +vt -0.000000 0.016129 +vt 0.346821 0.161290 +vt -0.000000 0.161290 +vt 0.346821 0.080645 +vt -0.000000 0.080645 +vt -0.000000 0.096774 +vt 0.346821 0.112903 +vt -0.000000 0.112903 +vt 0.346821 0.032258 +vt 0.346821 0.177419 +vt 0.346821 0.096774 +vt 0.346821 0.129032 +vt 0.271676 0.338710 +vt 0.271676 0.387097 +vt 0.271676 0.266129 +vt 0.271676 0.483871 +vt 0.271676 0.411290 +vt 0.271676 0.290323 +vt 0.271676 0.217742 +vt 0.271676 0.435484 +vt 0.271676 0.314516 +vt 0.271676 0.362903 +vt 0.271676 0.241935 +vt 0.271676 0.459677 +vt 0.650289 0.959677 +vt 0.641618 0.959677 +vt 0.632948 0.959677 +vt 0.624277 0.959677 +vt 0.684971 0.959677 +vt 0.676301 0.959677 +vt 0.667630 0.959677 +vt 0.658960 0.959677 +vt 0.693642 0.959677 +vt 0.624277 0.983871 +vt 0.612717 0.975806 +vt 0.624277 0.975806 +vt 0.624277 1.000000 +vt 0.612717 0.991935 +vt 0.624277 0.991935 +vt 0.624277 0.951613 +vt 0.612717 0.943548 +vt 0.624277 0.943548 +vt 0.624277 0.967742 +vt 0.612717 0.959677 +vt 0.624277 0.959677 +vt 0.612717 0.967742 +vt 0.612717 0.983871 +vt 0.612717 0.935484 +vt 0.624277 0.935484 +vt 0.612717 0.951613 +vt 0.606936 0.943548 +vt 0.601156 0.935484 +vt 0.604046 0.935484 +vt 0.601156 0.951613 +vt 0.609827 0.951613 +vt 0.601156 0.983871 +vt 0.601156 0.975806 +vt 0.606936 0.991935 +vt 0.601156 1.000000 +vt 0.601156 0.991935 +vt 0.601156 0.943548 +vt 0.601156 0.967742 +vt 0.601156 0.959677 +vt 0.609827 0.983871 +vt 0.589595 0.967742 +vt 0.592486 0.983871 +vt 0.595376 0.943548 +vt 0.598266 0.935484 +vt 0.592486 0.951613 +vt 0.589595 0.975806 +vt 0.595376 0.991935 +vt 0.589595 0.959677 +vt 0.589595 1.000000 +vt 0.497110 0.991935 +vt 0.589595 0.991935 +vt 0.589595 0.951613 +vt 0.497110 0.943548 +vt 0.589595 0.943548 +vt 0.497110 0.959677 +vt 0.497110 0.967742 +vt 0.497110 0.983871 +vt 0.589595 0.983871 +vt 0.497110 0.935484 +vt 0.589595 0.935484 +vt 0.497110 0.951613 +vt 0.497110 0.975806 +vt 0.485549 0.983871 +vt 0.485549 0.975806 +vt 0.491329 0.991935 +vt 0.485549 1.000000 +vt 0.485549 0.991935 +vt 0.494220 0.951613 +vt 0.485549 0.943548 +vt 0.491329 0.943548 +vt 0.485549 0.967742 +vt 0.485549 0.959677 +vt 0.494220 0.983871 +vt 0.488439 0.935484 +vt 0.485549 0.935484 +vt 0.485549 0.951613 +vt 0.479769 0.991935 +vt 0.476879 0.983871 +vt 0.479769 0.943548 +vt 0.482659 0.935484 +vt 0.473988 0.959677 +vt 0.476879 0.951613 +vt 0.473988 0.975806 +vt 0.473988 0.967742 +vt 0.462428 0.967742 +vt 0.462428 0.959677 +vt 0.473988 0.983871 +vt 0.462428 0.991935 +vt 0.462428 0.983871 +vt 0.473988 0.935484 +vt 0.462428 0.943548 +vt 0.462428 0.935484 +vt 0.473988 0.951613 +vt 0.462428 0.951613 +vt 0.462428 0.975806 +vt 0.473988 1.000000 +vt 0.473988 0.991935 +vt 0.473988 0.943548 +vt 0.719653 0.943548 +vt 0.713873 0.943548 +vt 0.739884 0.943548 +vt 0.757225 0.943548 +vt 0.705202 0.943548 +vt 0.728324 0.943548 +vt 0.722543 0.943548 +vt 0.731214 0.943548 +vt 0.754335 0.943548 +vt 0.748555 0.943548 +vt 0.702312 0.943548 +vt 0.696532 0.943548 +vt 0.346821 0.879032 +vt -0.000000 0.870968 +vt 0.346821 0.870968 +vt 0.346821 0.911290 +vt -0.000000 0.903226 +vt 0.346821 0.903226 +vt 0.346821 0.887097 +vt -0.000000 0.879032 +vt 0.346821 0.919355 +vt -0.000000 0.911290 +vt -0.000000 0.895161 +vt 0.346821 0.895161 +vt -0.000000 0.887097 +vt 0.346821 0.927419 +vt 0.000000 0.919355 +vt 0.346821 0.919355 +vt 0.346821 0.959677 +vt 0.000000 0.951613 +vt 0.346821 0.951613 +vt 0.346821 0.935484 +vt 0.000000 0.927419 +vt 0.346821 0.967742 +vt 0.000000 0.959677 +vt 0.000000 0.943548 +vt 0.346821 0.943548 +vt 0.000000 0.935484 +vt 0.942197 0.080645 +vt 0.959538 0.060484 +vt 0.959538 0.072581 +vt 0.942197 0.153226 +vt 0.942197 0.177419 +vt 0.942197 0.225806 +vt 0.942197 0.129032 +vt 0.942197 0.201613 +vt 0.942197 0.250000 +vt 0.942197 0.104839 +vt 0.959538 0.120968 +vt 0.959538 0.193548 +vt 0.959538 0.241935 +vt 0.959538 0.084677 +vt 0.959538 0.096774 +vt 0.959538 0.145161 +vt 0.959538 0.169355 +vt 0.959538 0.217742 +vt 0.924855 0.201613 +vt 0.924855 0.056452 +vt 0.924855 0.104839 +vt 0.924855 0.177419 +vt 0.924855 0.225806 +vt 0.924855 0.080645 +vt 0.924855 0.129032 +vt 0.924855 0.153226 +vt 0.699422 0.471774 +vt 0.699422 0.504032 +vt 0.699422 0.633065 +vt 0.699422 0.665323 +vt 0.699422 0.512097 +vt 0.699422 0.544355 +vt 0.699422 0.391129 +vt 0.699422 0.423387 +vt 0.699422 0.673387 +vt 0.699422 0.705645 +vt 0.699422 0.552419 +vt 0.699422 0.584677 +vt 0.699422 0.431452 +vt 0.699422 0.463710 +vt 0.699422 0.592742 +vt 0.699422 0.625000 +vt 0.699422 0.592742 +vt 0.699422 0.625000 +vt 0.699422 0.431452 +vt 0.699422 0.463710 +vt 0.699422 0.552419 +vt 0.699422 0.584677 +vt 0.699422 0.673387 +vt 0.699422 0.705645 +vt 0.699422 0.391129 +vt 0.699422 0.423387 +vt 0.699422 0.512097 +vt 0.699422 0.544355 +vt 0.699422 0.633065 +vt 0.699422 0.665323 +vt 0.699422 0.471774 +vt 0.699422 0.504032 +vt 0.670520 0.887097 +vt 0.705202 0.903226 +vt 0.670520 0.903226 +vt 0.670520 0.854839 +vt 0.705202 0.870968 +vt 0.670520 0.870968 +vt 0.670520 0.806452 +vt 0.705202 0.790323 +vt 0.705202 0.806452 +vt 0.670520 0.741935 +vt 0.705202 0.758065 +vt 0.670520 0.758065 +vt 0.670520 0.709677 +vt 0.705202 0.725806 +vt 0.670520 0.725806 +vt 0.670520 0.838710 +vt 0.705202 0.854839 +vt 0.670520 0.774194 +vt 0.705202 0.774194 +vt 0.705202 0.741935 +vt 0.670520 0.822581 +vt 0.705202 0.838710 +vt 0.705202 0.887097 +vt 0.670520 0.790323 +vt 0.705202 0.822581 +vt 0.849711 0.564516 +vt 0.838150 0.500000 +vt 0.849711 0.500000 +vt 0.872832 0.564516 +vt 0.861272 0.500000 +vt 0.872832 0.500000 +vt 0.895954 0.564516 +vt 0.884393 0.500000 +vt 0.895954 0.500000 +vt 0.919075 0.564516 +vt 0.907514 0.500000 +vt 0.919075 0.500000 +vt 0.861272 0.564516 +vt 0.884393 0.564516 +vt 0.907514 0.564516 +vt 0.930636 0.564516 +vt 0.930636 0.500000 +vt 0.919075 0.612903 +vt 0.907514 0.576613 +vt 0.919075 0.580645 +vt 0.861272 0.576613 +vt 0.849711 0.612903 +vt 0.849711 0.580645 +vt 0.884393 0.629032 +vt 0.872832 0.568548 +vt 0.907514 0.616935 +vt 0.895954 0.568548 +vt 0.930636 0.584677 +vt 0.838150 0.584677 +vt 0.861272 0.616935 +vt 0.861272 0.641129 +vt 0.849711 0.677419 +vt 0.849711 0.645161 +vt 0.872832 0.689516 +vt 0.872832 0.633065 +vt 0.907514 0.681452 +vt 0.895954 0.633065 +vt 0.907514 0.641129 +vt 0.930636 0.649194 +vt 0.919075 0.677419 +vt 0.919075 0.645161 +vt 0.838150 0.649194 +vt 0.861272 0.681452 +vt 0.895954 0.689516 +vt 0.919075 0.693548 +vt 0.907514 0.709677 +vt 0.907514 0.693548 +vt 0.861272 0.709677 +vt 0.849711 0.693548 +vt 0.861272 0.693548 +vt 0.884393 0.693548 +vt 0.872832 0.709677 +vt 0.872832 0.693548 +vt 0.895954 0.693548 +vt 0.930636 0.693548 +vt 0.919075 0.709677 +vt 0.849711 0.709677 +vt 0.838150 0.693548 +vt 0.895954 0.709677 +vt 0.895954 0.854839 +vt 0.884393 0.838710 +vt 0.895954 0.838710 +vt 0.872832 0.854839 +vt 0.861272 0.838710 +vt 0.872832 0.838710 +vt 0.849711 0.854839 +vt 0.838150 0.838710 +vt 0.849711 0.838710 +vt 0.930636 0.854839 +vt 0.919075 0.838710 +vt 0.930636 0.838710 +vt 0.907514 0.854839 +vt 0.907514 0.838710 +vt 0.861272 0.854839 +vt 0.849711 0.790323 +vt 0.838150 0.818548 +vt 0.838150 0.794355 +vt 0.872832 0.834677 +vt 0.861272 0.786290 +vt 0.872832 0.778226 +vt 0.895954 0.834677 +vt 0.884393 0.774194 +vt 0.895954 0.778226 +vt 0.919075 0.790323 +vt 0.907514 0.826613 +vt 0.907514 0.786290 +vt 0.861272 0.826613 +vt 0.930636 0.794355 +vt 0.919075 0.822581 +vt 0.930636 0.729839 +vt 0.919075 0.758065 +vt 0.919075 0.725806 +vt 0.907514 0.762097 +vt 0.895954 0.713710 +vt 0.907514 0.721774 +vt 0.884393 0.709677 +vt 0.872832 0.770161 +vt 0.872832 0.713710 +vt 0.861272 0.762097 +vt 0.849711 0.725806 +vt 0.861272 0.721774 +vt 0.895954 0.770161 +vt 0.849711 0.758065 +vt 0.838150 0.729839 +vt 0.780347 0.725806 +vt 0.768786 0.701613 +vt 0.780347 0.701613 +vt 0.780347 0.677419 +vt 0.768786 0.653226 +vt 0.780347 0.653226 +vt 0.780347 0.822581 +vt 0.768786 0.798387 +vt 0.780347 0.798387 +vt 0.780347 0.774194 +vt 0.768786 0.750000 +vt 0.780347 0.750000 +vt 0.768786 0.725806 +vt 0.768786 0.677419 +vt 0.780347 0.846774 +vt 0.768786 0.822581 +vt 0.768786 0.774194 +vt 0.725434 0.951613 +vt 0.736994 0.943548 +vt 0.734104 0.951613 +vt 0.745665 0.943548 +vt 0.742775 0.951613 +vt 0.751445 0.951613 +vt 0.763006 0.943548 +vt 0.760116 0.951613 +vt 0.699422 0.951613 +vt 0.710983 0.943548 +vt 0.708093 0.951613 +vt 0.716763 0.951613 +vt 0.000000 0.282258 +vt 0.000000 0.209677 +vt 0.000000 0.427419 +vt 0.000000 0.306452 +vt 0.000000 0.354839 +vt 0.000000 0.233871 +vt 0.000000 0.451613 +vt 0.000000 0.330645 +vt 0.000000 0.379032 +vt 0.000000 0.258065 +vt 0.000000 0.475806 +vt 0.000000 0.403226 +vt 0.346821 -0.000000 +vt 0.271676 0.193548 +vt 0.612717 1.000000 +vt 0.604046 1.000000 +vt 0.598266 1.000000 +vt 0.497110 1.000000 +vt 0.488439 1.000000 +vt 0.482659 1.000000 +vt 0.462428 1.000000 +vt -0.000000 0.919355 +vt 0.000000 0.967742 +vt 0.942197 0.056452 +vt 0.959538 0.108871 +vt 0.959538 0.181452 +vt 0.959538 0.229839 +vt 0.959538 0.133065 +vt 0.959538 0.157258 +vt 0.959538 0.205645 +vt 0.924855 0.250000 +vt 0.705202 0.709677 +vt 0.838150 0.564516 +vt 0.872832 0.625000 +vt 0.895954 0.625000 +vt 0.930636 0.608871 +vt 0.838150 0.608871 +vt 0.930636 0.673387 +vt 0.838150 0.673387 +vt 0.930636 0.709677 +vt 0.838150 0.709677 +vt 0.884393 0.854839 +vt 0.838150 0.854839 +vt 0.919075 0.854839 +vt 0.849711 0.822581 +vt 0.930636 0.818548 +vt 0.930636 0.754032 +vt 0.838150 0.754032 +vt 0.768786 0.846774 +vn -0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.8000 -0.6000 +vn 0.0000 -0.2425 0.9701 +vn 0.0000 0.7071 0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.5000 0.8660 0.0000 +vn 0.4903 0.8492 0.1961 +vn -0.0000 0.9806 0.1961 +vn -0.4903 0.8492 0.1961 +vn -0.8492 0.4903 0.1961 +vn -0.9806 -0.0000 0.1961 +vn -0.8492 -0.4903 0.1961 +vn -0.4903 -0.8492 0.1961 +vn -0.0000 -0.9806 0.1961 +vn 0.4903 -0.8492 0.1961 +vn 0.8492 -0.4903 0.1961 +vn 0.9806 -0.0000 0.1961 +vn 0.8492 0.4903 0.1961 +vn 0.6124 0.3536 -0.7071 +vn 0.3536 0.6124 -0.7071 +vn 0.0000 0.7071 -0.7071 +vn -0.3536 0.6124 -0.7071 +vn -0.6124 0.3536 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn -0.6124 -0.3536 -0.7071 +vn -0.3536 -0.6124 -0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.3536 -0.6124 -0.7071 +vn 0.6124 -0.3536 -0.7071 +vn 0.7071 -0.0000 -0.7071 +vn -0.8660 -0.5000 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.8660 0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 0.6794 -0.1448 -0.7194 +vn 0.7263 0.1363 0.6737 +vn -0.7263 0.1363 0.6737 +vn -0.6794 -0.1448 -0.7194 +vn 0.0000 -0.1866 -0.9824 +vn 0.9987 -0.0196 -0.0473 +vn 0.0000 0.2049 0.9788 +vn -0.9987 -0.0196 -0.0473 +vn -0.9955 -0.0671 -0.0671 +vn 0.9955 -0.0671 -0.0671 +vn 0.6630 -0.5294 -0.5294 +vn 0.7574 0.4617 0.4617 +vn -0.7574 0.4617 0.4617 +vn -0.6630 -0.5294 -0.5294 +vn -0.0000 -0.9824 -0.1866 +vn 0.9987 -0.0473 -0.0196 +vn -0.7263 0.6737 0.1363 +vn -0.0000 0.9788 0.2049 +vn -0.9987 -0.0473 -0.0196 +vn 0.6794 -0.7194 -0.1448 +vn 0.7263 0.6737 0.1363 +vn -0.6794 -0.7194 -0.1448 +vn 0.7263 0.6737 -0.1363 +vn -0.7263 0.6737 -0.1363 +vn -0.6794 -0.7194 0.1448 +vn -0.0000 -0.9824 0.1866 +vn 0.9987 -0.0473 0.0196 +vn 0.0000 0.9788 -0.2049 +vn -0.9987 -0.0473 0.0196 +vn 0.6794 -0.7194 0.1448 +vn 0.9955 -0.0671 0.0671 +vn 0.6630 -0.5294 0.5293 +vn 0.7574 0.4617 -0.4617 +vn -0.7574 0.4617 -0.4617 +vn -0.6630 -0.5294 0.5293 +vn -0.9955 -0.0671 0.0671 +vn 0.7263 0.1363 -0.6737 +vn 0.9987 -0.0196 0.0473 +vn -0.7263 0.1363 -0.6737 +vn 0.0000 0.2049 -0.9788 +vn -0.6794 -0.1448 0.7194 +vn -0.9987 -0.0196 0.0473 +vn 0.6794 -0.1448 0.7194 +vn 0.0000 -0.1866 0.9824 +vn -0.9701 0.2425 -0.0000 +vn -0.6860 0.2425 0.6860 +vn 0.9701 0.2425 -0.0000 +vn 0.6860 0.2425 0.6860 +vn 0.0000 0.2425 -0.9701 +vn 0.6860 0.2425 -0.6860 +vn -0.6860 0.2425 -0.6860 +vn 0.0000 0.2425 0.9701 +vn 0.6088 -0.7934 0.0000 +vn -0.2588 0.9659 0.0000 +vn 0.9659 0.2588 0.0000 +vn -0.9914 0.1305 0.0000 +vn 0.9914 0.1305 0.0000 +vn -0.9659 0.2588 0.0000 +vn 0.2588 0.9659 0.0000 +vn -0.6088 -0.7934 0.0000 +vn -0.5000 -0.5000 0.7071 +vn -0.5000 0.5000 0.7071 +vn 0.5000 0.5000 0.7071 +vn 0.5000 -0.5000 0.7071 +vn 0.2588 -0.9659 0.0000 +vn -0.9987 0.0196 -0.0473 +vn 0.9987 0.0196 -0.0473 +vn 0.6794 0.1448 -0.7194 +vn -0.7263 -0.1363 0.6737 +vn 0.7263 -0.1363 0.6737 +vn -0.6794 0.1448 -0.7194 +vn 0.0000 0.9824 -0.1866 +vn -0.6794 0.7194 -0.1448 +vn 0.9987 0.0473 -0.0196 +vn 0.6794 0.7194 -0.1448 +vn -0.0000 -0.9788 0.2049 +vn 0.7263 -0.6737 0.1363 +vn -0.7263 -0.6737 0.1363 +vn -0.9987 0.0473 -0.0196 +vn 0.7574 -0.4617 0.4617 +vn 0.9955 0.0671 -0.0671 +vn 0.6630 0.5294 -0.5294 +vn -0.6630 0.5294 -0.5294 +vn -0.7574 -0.4617 0.4617 +vn -0.9955 0.0671 -0.0671 +vn 0.0000 -0.2049 0.9788 +vn 0.0000 0.1866 -0.9824 +vn 0.5000 0.7071 -0.5000 +vn -0.5000 0.7071 -0.5000 +vn -0.5000 0.7071 0.5000 +vn 0.5000 0.7071 0.5000 +s off +f 151/238/111 186/239/111 162/240/111 +f 153/241/111 176/242/111 152/243/111 +f 159/244/111 184/245/111 183/246/111 +f 157/247/111 180/248/111 156/249/111 +f 154/250/111 177/251/111 153/252/111 +f 161/253/111 184/254/111 160/255/111 +f 157/256/111 182/257/111 181/258/111 +f 155/259/111 178/260/111 154/261/111 +f 162/262/111 185/263/111 161/264/111 +f 152/265/111 175/266/111 151/267/111 +f 159/268/111 182/269/111 158/270/111 +f 155/271/111 180/272/111 179/273/111 +f 203/274/111 205/275/111 207/276/111 +f 221/277/111 198/278/111 197/279/111 +f 222/280/111 187/281/111 198/282/111 +f 187/283/111 212/284/111 188/285/111 +f 188/286/111 213/287/111 189/288/111 +f 213/287/111 190/289/111 189/290/111 +f 190/291/111 215/292/111 191/293/111 +f 215/292/111 192/294/111 191/295/111 +f 192/296/111 217/297/111 193/298/111 +f 217/299/111 194/300/111 193/301/111 +f 218/302/111 195/303/111 194/304/111 +f 219/305/111 196/306/111 195/307/111 +f 220/308/111 197/309/111 196/310/111 +f 233/311/112 246/312/112 234/313/112 +f 234/313/112 235/314/112 223/315/112 +f 235/316/112 224/317/112 223/315/112 +f 236/318/112 225/319/112 224/317/112 +f 225/319/112 238/320/112 226/321/112 +f 238/322/112 227/323/112 226/321/112 +f 227/323/112 240/324/112 228/325/112 +f 240/326/112 229/327/112 228/325/112 +f 241/328/112 230/329/112 229/330/112 +f 242/331/112 231/332/112 230/329/112 +f 231/332/112 244/333/112 232/334/112 +f 232/334/112 245/335/112 233/311/112 +f 248/336/111 261/337/111 249/338/111 +f 256/339/111 267/340/111 268/341/111 +f 252/342/111 265/343/111 253/344/111 +f 250/345/111 261/337/111 262/346/111 +f 257/347/111 268/341/111 269/348/111 +f 253/349/111 266/350/111 254/351/111 +f 250/352/111 263/353/111 251/354/111 +f 258/355/111 269/348/111 270/356/111 +f 247/357/111 260/358/111 248/359/111 +f 254/360/111 267/340/111 255/361/111 +f 252/362/111 263/353/111 264/363/111 +f 247/364/111 270/356/111 259/365/111 +f 286/366/113 294/367/113 283/368/113 +f 290/369/114 296/370/114 285/371/114 +f 288/372/115 298/373/115 289/374/115 +f 288/375/111 290/376/111 286/366/111 +f 296/377/112 298/378/112 292/379/112 +f 296/370/116 286/366/116 285/371/116 +f 284/380/117 294/367/117 293/381/117 +f 298/373/118 290/369/118 289/374/118 +f 288/382/119 292/383/119 291/384/119 +f 284/380/120 292/383/120 287/385/120 +f 309/386/115 318/387/115 310/388/115 +f 307/389/115 316/390/115 308/391/115 +f 314/392/115 315/393/115 307/389/115 +f 313/394/115 320/395/115 321/396/115 +f 311/397/115 318/398/115 319/399/115 +f 309/386/115 316/400/115 317/401/115 +f 313/394/115 322/402/115 314/392/115 +f 312/403/115 319/404/115 320/405/115 +f 378/406/115 385/407/115 386/408/115 +f 375/409/115 384/410/115 376/411/115 +f 374/412/115 381/413/115 382/414/115 +f 372/415/115 379/416/115 380/417/115 +f 355/418/115 386/408/115 379/416/115 +f 376/419/115 385/407/115 377/420/115 +f 374/421/115 383/422/115 375/423/115 +f 372/424/115 381/413/115 373/425/115 +f 395/426/113 400/427/113 396/428/113 +f 398/429/120 399/430/120 395/431/120 +f 401/432/115 398/429/115 397/433/115 +f 396/428/114 401/432/114 397/433/114 +f 420/434/113 414/435/113 416/436/113 +f 419/437/112 424/438/112 420/439/112 +f 401/432/114 400/427/114 405/440/114 +f 400/441/114 410/442/114 405/443/114 +f 399/430/120 402/444/120 404/445/120 +f 401/432/121 404/446/121 402/444/121 +f 405/443/111 409/447/111 404/446/111 +f 404/446/120 407/448/120 399/449/120 +f 399/450/112 408/451/112 400/441/112 +f 406/452/120 415/453/120 411/454/120 +f 403/455/111 413/456/111 406/457/111 +f 411/454/112 416/436/112 412/458/112 +f 412/458/114 414/435/114 403/455/114 +f 419/459/113 416/436/113 415/453/113 +f 417/460/113 415/453/113 413/461/113 +f 418/462/113 413/456/113 414/435/113 +f 423/463/122 421/464/122 422/465/122 +f 418/466/111 422/467/111 417/468/111 +f 418/466/114 424/438/114 423/469/114 +f 417/470/120 421/464/120 419/437/120 +f 447/471/115 441/472/115 444/473/115 +f 431/474/113 428/475/113 427/476/113 +f 432/477/114 443/478/114 428/475/114 +f 435/479/112 434/480/112 433/481/112 +f 439/482/123 437/483/123 438/484/123 +f 435/479/113 440/485/113 436/486/113 +f 434/480/115 438/487/115 433/481/115 +f 436/486/114 439/488/114 434/480/114 +f 435/479/120 438/489/120 437/490/120 +f 448/491/118 444/473/118 443/478/118 +f 442/492/119 446/493/119 445/494/119 +f 445/494/120 427/495/120 442/492/120 +f 455/496/112 466/497/112 454/498/112 +f 456/499/112 467/500/112 455/501/112 +f 430/502/112 468/503/112 456/504/112 +f 429/505/112 457/506/112 430/507/112 +f 426/508/112 458/509/112 429/510/112 +f 425/511/112 459/512/112 426/513/112 +f 425/514/112 461/515/112 460/516/112 +f 449/517/112 462/518/112 461/515/112 +f 450/519/112 463/520/112 462/518/112 +f 452/521/112 463/522/112 451/523/112 +f 452/524/112 465/525/112 464/526/112 +f 454/527/112 465/525/112 453/528/112 +f 490/529/111 479/530/111 478/531/111 +f 491/532/111 480/533/111 479/534/111 +f 492/535/111 477/536/111 480/537/111 +f 482/538/111 476/539/111 477/540/111 +f 481/541/111 475/542/111 476/543/111 +f 483/544/111 474/545/111 475/546/111 +f 474/547/111 485/548/111 473/549/111 +f 473/550/111 486/551/111 472/552/111 +f 472/553/111 487/554/111 471/555/111 +f 487/556/111 470/557/111 471/558/111 +f 470/559/111 489/560/111 469/561/111 +f 489/560/111 478/562/111 469/563/111 +f 512/564/113 506/565/113 502/566/113 +f 515/567/114 505/568/114 506/565/114 +f 495/569/112 497/570/112 496/571/112 +f 493/572/113 498/573/113 495/569/113 +f 496/574/115 499/575/115 494/576/115 +f 510/577/111 517/578/111 511/579/111 +f 514/580/121 499/581/121 515/582/121 +f 498/583/120 501/584/120 497/585/120 +f 504/586/113 520/587/113 507/588/113 +f 502/566/112 505/568/112 501/584/112 +f 499/575/111 493/572/111 494/576/111 +f 521/589/115 523/590/115 519/591/115 +f 516/592/124 500/593/124 517/578/124 +f 511/579/120 499/594/120 510/577/120 +f 497/585/120 509/595/120 499/596/120 +f 512/597/120 498/583/120 500/598/120 +f 501/599/115 515/582/115 509/600/115 +f 508/601/115 519/591/115 503/602/115 +f 503/602/120 518/603/120 504/586/120 +f 507/588/114 521/604/114 508/605/114 +f 521/606/115 527/607/115 523/608/115 +f 523/608/125 518/603/125 519/591/125 +f 518/603/113 522/609/113 520/587/113 +f 524/610/126 527/607/126 525/611/126 +f 520/612/113 526/613/113 524/614/113 +f 520/612/112 525/615/112 521/616/112 +f 523/608/111 526/613/111 522/617/111 +f 557/618/112 589/619/112 588/620/112 +f 574/621/111 576/622/111 578/623/111 +f 587/624/112 580/625/112 583/626/112 +f 581/627/111 586/628/111 582/629/111 +f 586/628/118 583/626/118 582/629/118 +f 561/630/112 594/631/112 562/632/112 +f 563/633/112 589/619/112 556/634/112 +f 584/635/117 581/636/117 580/625/117 +f 559/637/112 592/638/112 560/639/112 +f 558/640/112 588/620/112 590/641/112 +f 563/633/112 594/631/112 595/642/112 +f 560/643/112 593/644/112 561/630/112 +f 558/640/112 591/645/112 559/637/112 +f 600/646/112 599/647/112 598/648/112 +f 622/649/112 635/650/112 634/651/112 +f 623/652/112 634/651/112 633/653/112 +f 624/654/112 633/653/112 632/655/112 +f 625/656/112 632/655/112 631/657/112 +f 626/658/112 631/657/112 630/659/112 +f 627/660/112 630/659/112 629/661/112 +f 616/662/112 629/661/112 628/663/112 +f 638/664/112 651/665/112 617/666/112 +f 652/667/127 683/668/127 695/669/127 +f 604/670/111 641/671/111 615/672/111 +f 682/673/112 664/674/112 668/675/112 +f 615/676/111 642/677/111 614/678/111 +f 694/679/111 652/667/111 695/680/111 +f 693/681/111 656/682/111 694/683/111 +f 692/684/111 657/685/111 693/686/111 +f 614/687/111 643/688/111 613/689/111 +f 691/690/111 658/691/111 692/692/111 +f 690/693/111 659/694/111 691/695/111 +f 613/696/111 644/697/111 612/698/111 +f 689/699/111 660/700/111 690/701/111 +f 688/702/111 661/703/111 689/704/111 +f 696/705/111 662/706/111 688/707/111 +f 612/708/111 645/709/111 611/710/111 +f 684/711/112 674/712/112 675/713/112 +f 611/714/111 646/715/111 610/716/111 +f 610/717/111 647/718/111 609/719/111 +f 676/720/112 673/721/112 674/712/112 +f 609/722/111 648/723/111 608/724/111 +f 621/725/112 636/726/112 635/650/112 +f 648/723/127 620/727/127 608/728/127 +f 677/729/112 672/730/112 673/721/112 +f 678/731/112 671/732/112 672/730/112 +f 679/733/112 670/734/112 671/732/112 +f 686/735/111 697/736/111 654/737/111 +f 680/738/112 669/739/112 670/734/112 +f 681/740/112 668/675/112 669/739/112 +f 707/741/114 701/742/114 703/743/114 +f 704/744/120 702/745/120 700/746/120 +f 706/747/112 703/743/112 702/745/112 +f 705/748/111 700/749/111 701/742/111 +f 774/750/112 772/751/112 778/752/112 +f 789/753/113 790/754/113 788/755/113 +f 797/756/113 798/757/113 796/758/113 +f 789/759/114 795/760/114 791/761/114 +f 790/754/120 792/762/120 788/763/120 +f 791/761/112 794/764/112 790/754/112 +f 788/765/111 793/766/111 789/759/111 +f 797/767/114 803/768/114 799/769/114 +f 798/757/120 800/770/120 796/771/120 +f 799/769/112 802/772/112 798/757/112 +f 796/773/111 801/774/111 797/767/111 +f 818/775/113 816/776/113 817/777/113 +f 810/778/113 808/779/113 809/780/113 +f 807/781/114 810/782/114 805/783/114 +f 804/784/120 808/779/120 806/785/120 +f 806/785/112 811/786/112 807/781/112 +f 805/783/111 809/787/111 804/788/111 +f 815/789/114 818/790/114 813/791/114 +f 812/792/120 816/776/120 814/793/120 +f 814/793/112 819/794/112 815/789/112 +f 813/791/111 817/795/111 812/796/111 +f 830/797/112 841/798/112 829/799/112 +f 831/800/112 842/801/112 830/802/112 +f 823/803/112 843/804/112 831/805/112 +f 822/806/112 832/807/112 823/808/112 +f 821/809/112 833/810/112 822/811/112 +f 820/812/112 834/813/112 821/814/112 +f 820/815/112 836/816/112 835/817/112 +f 824/818/112 837/819/112 836/816/112 +f 825/820/112 838/821/112 837/819/112 +f 827/822/112 838/823/112 826/824/112 +f 827/825/112 840/826/112 839/827/112 +f 829/828/112 840/826/112 828/829/112 +f 865/830/111 854/831/111 853/832/111 +f 866/833/111 855/834/111 854/835/111 +f 867/836/111 852/837/111 855/838/111 +f 857/839/111 851/840/111 852/841/111 +f 856/842/111 850/843/111 851/844/111 +f 858/845/111 849/846/111 850/847/111 +f 849/848/111 860/849/111 848/850/111 +f 848/851/111 861/852/111 847/853/111 +f 847/854/111 862/855/111 846/856/111 +f 862/857/111 845/858/111 846/859/111 +f 845/860/111 864/861/111 844/862/111 +f 864/861/111 853/863/111 844/864/111 +f 151/238/111 175/865/111 186/239/111 +f 153/241/111 177/866/111 176/242/111 +f 159/244/111 160/867/111 184/245/111 +f 157/247/111 181/868/111 180/248/111 +f 154/250/111 178/869/111 177/251/111 +f 161/253/111 185/870/111 184/254/111 +f 157/256/111 158/871/111 182/257/111 +f 155/259/111 179/872/111 178/260/111 +f 162/262/111 186/873/111 185/263/111 +f 152/265/111 176/874/111 175/266/111 +f 159/268/111 183/875/111 182/269/111 +f 155/271/111 156/876/111 180/272/111 +f 199/877/111 200/878/111 201/879/111 +f 201/879/111 202/880/111 203/274/111 +f 203/274/111 204/881/111 205/275/111 +f 205/275/111 206/882/111 207/276/111 +f 207/276/111 208/883/111 209/884/111 +f 209/884/111 210/885/111 207/276/111 +f 210/885/111 199/877/111 207/276/111 +f 199/877/111 201/879/111 207/276/111 +f 201/879/111 203/274/111 207/276/111 +f 221/277/111 222/280/111 198/278/111 +f 222/280/111 211/886/111 187/281/111 +f 187/283/111 211/886/111 212/284/111 +f 188/286/111 212/284/111 213/287/111 +f 213/287/111 214/887/111 190/289/111 +f 190/291/111 214/887/111 215/292/111 +f 215/292/111 216/888/111 192/294/111 +f 192/296/111 216/888/111 217/297/111 +f 217/299/111 218/302/111 194/300/111 +f 218/302/111 219/305/111 195/303/111 +f 219/305/111 220/308/111 196/306/111 +f 220/308/111 221/277/111 197/309/111 +f 233/311/112 245/889/112 246/312/112 +f 234/313/112 246/890/112 235/314/112 +f 235/316/112 236/891/112 224/317/112 +f 236/318/112 237/892/112 225/319/112 +f 225/319/112 237/893/112 238/320/112 +f 238/322/112 239/894/112 227/323/112 +f 227/323/112 239/895/112 240/324/112 +f 240/326/112 241/896/112 229/327/112 +f 241/328/112 242/897/112 230/329/112 +f 242/331/112 243/898/112 231/332/112 +f 231/332/112 243/899/112 244/333/112 +f 232/334/112 244/900/112 245/335/112 +f 248/336/111 260/358/111 261/337/111 +f 256/339/111 255/901/111 267/340/111 +f 252/342/111 264/363/111 265/343/111 +f 250/345/111 249/902/111 261/337/111 +f 257/347/111 256/903/111 268/341/111 +f 253/349/111 265/904/111 266/350/111 +f 250/352/111 262/346/111 263/353/111 +f 258/355/111 257/905/111 269/348/111 +f 247/357/111 259/365/111 260/358/111 +f 254/360/111 266/350/111 267/340/111 +f 252/362/111 251/906/111 263/353/111 +f 247/364/111 258/907/111 270/356/111 +f 286/366/113 295/908/113 294/367/113 +f 290/369/114 297/909/114 296/370/114 +f 288/372/115 291/910/115 298/373/115 +f 286/366/111 283/368/111 284/911/111 +f 284/911/111 287/912/111 288/375/111 +f 288/375/111 289/913/111 290/376/111 +f 290/376/111 285/914/111 286/366/111 +f 286/366/111 284/911/111 288/375/111 +f 292/379/112 293/915/112 294/367/112 +f 294/367/112 295/908/112 296/377/112 +f 296/377/112 297/916/112 298/378/112 +f 298/378/112 291/917/112 292/379/112 +f 292/379/112 294/367/112 296/377/112 +f 296/370/116 295/908/116 286/366/116 +f 284/380/117 283/368/117 294/367/117 +f 298/373/118 297/909/118 290/369/118 +f 288/382/119 287/385/119 292/383/119 +f 284/380/120 293/381/120 292/383/120 +f 309/386/115 317/918/115 318/387/115 +f 307/389/115 315/919/115 316/390/115 +f 314/392/115 322/920/115 315/393/115 +f 313/394/115 312/403/115 320/395/115 +f 311/397/115 310/388/115 318/398/115 +f 309/386/115 308/391/115 316/400/115 +f 313/394/115 321/921/115 322/402/115 +f 312/403/115 311/922/115 319/404/115 +f 378/406/115 377/923/115 385/407/115 +f 375/409/115 383/924/115 384/410/115 +f 374/412/115 373/925/115 381/413/115 +f 372/415/115 355/926/115 379/416/115 +f 355/418/115 378/927/115 386/408/115 +f 376/419/115 384/410/115 385/407/115 +f 374/421/115 382/414/115 383/422/115 +f 372/424/115 380/417/115 381/413/115 +f 395/426/113 399/928/113 400/427/113 +f 398/429/120 402/444/120 399/430/120 +f 401/432/115 402/444/115 398/429/115 +f 396/428/114 400/427/114 401/432/114 +f 420/434/113 418/929/113 414/435/113 +f 419/437/112 421/464/112 424/438/112 +f 400/441/114 408/451/114 410/442/114 +f 401/432/121 405/443/121 404/446/121 +f 405/443/111 410/442/111 409/447/111 +f 404/446/120 409/447/120 407/448/120 +f 399/450/112 407/930/112 408/451/112 +f 406/452/120 413/461/120 415/453/120 +f 403/455/111 414/435/111 413/456/111 +f 411/454/112 415/453/112 416/436/112 +f 412/458/114 416/436/114 414/435/114 +f 419/459/113 420/931/113 416/436/113 +f 417/460/113 419/932/113 415/453/113 +f 418/462/113 417/933/113 413/456/113 +f 423/463/122 424/438/122 421/464/122 +f 418/466/111 423/469/111 422/467/111 +f 418/466/114 420/439/114 424/438/114 +f 417/470/120 422/934/120 421/464/120 +f 447/471/115 446/493/115 441/472/115 +f 431/474/113 432/477/113 428/475/113 +f 432/477/114 448/491/114 443/478/114 +f 435/479/112 436/486/112 434/480/112 +f 439/482/123 440/485/123 437/483/123 +f 435/479/113 437/483/113 440/485/113 +f 434/480/115 439/935/115 438/487/115 +f 436/486/114 440/936/114 439/488/114 +f 435/479/120 433/481/120 438/489/120 +f 448/491/118 447/471/118 444/473/118 +f 442/492/119 441/472/119 446/493/119 +f 445/494/120 431/937/120 427/495/120 +f 455/496/112 467/500/112 466/497/112 +f 456/499/112 468/503/112 467/500/112 +f 430/502/112 457/506/112 468/503/112 +f 429/505/112 458/509/112 457/506/112 +f 426/508/112 459/512/112 458/509/112 +f 425/511/112 460/516/112 459/512/112 +f 425/514/112 449/938/112 461/515/112 +f 449/517/112 450/939/112 462/518/112 +f 450/519/112 451/940/112 463/520/112 +f 452/521/112 464/526/112 463/522/112 +f 452/524/112 453/941/112 465/525/112 +f 454/527/112 466/497/112 465/525/112 +f 490/529/111 491/532/111 479/530/111 +f 491/532/111 492/535/111 480/533/111 +f 492/535/111 482/538/111 477/536/111 +f 482/538/111 481/541/111 476/539/111 +f 481/541/111 483/544/111 475/542/111 +f 483/544/111 484/942/111 474/545/111 +f 474/547/111 484/942/111 485/548/111 +f 473/550/111 485/548/111 486/551/111 +f 472/553/111 486/551/111 487/554/111 +f 487/556/111 488/943/111 470/557/111 +f 470/559/111 488/943/111 489/560/111 +f 489/560/111 490/529/111 478/562/111 +f 512/564/113 516/592/113 506/565/113 +f 506/565/114 516/944/114 515/567/114 +f 516/944/114 517/945/114 515/567/114 +f 517/945/114 514/946/114 515/567/114 +f 495/569/112 498/573/112 497/570/112 +f 493/572/113 500/947/113 498/573/113 +f 496/574/115 497/948/115 499/575/115 +f 510/577/111 514/580/111 517/578/111 +f 510/577/121 499/581/121 514/580/121 +f 499/581/121 509/600/121 515/582/121 +f 498/583/120 502/566/120 501/584/120 +f 504/586/113 518/603/113 520/587/113 +f 502/566/112 506/565/112 505/568/112 +f 499/575/111 500/947/111 493/572/111 +f 512/564/124 500/593/124 516/592/124 +f 500/593/124 511/579/124 517/578/124 +f 511/579/120 500/949/120 499/594/120 +f 497/585/120 501/584/120 509/595/120 +f 512/597/120 502/566/120 498/583/120 +f 501/599/115 505/950/115 515/582/115 +f 508/601/115 521/589/115 519/591/115 +f 503/602/120 519/591/120 518/603/120 +f 507/588/114 520/587/114 521/604/114 +f 521/606/115 525/951/115 527/607/115 +f 523/608/125 522/617/125 518/603/125 +f 524/610/126 526/613/126 527/607/126 +f 520/612/113 522/617/113 526/613/113 +f 520/612/112 524/614/112 525/615/112 +f 523/608/111 527/607/111 526/613/111 +f 557/618/112 556/634/112 589/619/112 +f 573/952/111 572/953/111 574/621/111 +f 574/621/111 575/954/111 576/622/111 +f 576/622/111 577/955/111 578/623/111 +f 578/623/111 579/956/111 573/952/111 +f 573/952/111 574/621/111 578/623/111 +f 587/624/112 584/635/112 580/625/112 +f 581/627/111 585/957/111 586/628/111 +f 586/628/118 587/624/118 583/626/118 +f 561/630/112 593/644/112 594/631/112 +f 563/633/112 595/642/112 589/619/112 +f 584/635/117 585/958/117 581/636/117 +f 559/637/112 591/645/112 592/638/112 +f 558/640/112 557/618/112 588/620/112 +f 563/633/112 562/632/112 594/631/112 +f 560/643/112 592/959/112 593/644/112 +f 558/640/112 590/641/112 591/645/112 +f 598/648/112 596/960/112 597/961/112 +f 597/961/112 603/962/112 598/648/112 +f 603/962/112 602/963/112 598/648/112 +f 602/963/112 601/964/112 598/648/112 +f 601/964/112 600/646/112 598/648/112 +f 622/649/112 621/965/112 635/650/112 +f 623/652/112 622/966/112 634/651/112 +f 624/654/112 623/967/112 633/653/112 +f 625/656/112 624/968/112 632/655/112 +f 626/658/112 625/969/112 631/657/112 +f 627/660/112 626/970/112 630/659/112 +f 616/662/112 627/971/112 629/661/112 +f 617/666/112 618/972/112 638/664/112 +f 618/972/112 619/973/112 638/664/112 +f 619/973/112 637/974/112 638/664/112 +f 638/664/112 639/975/112 649/976/112 +f 649/976/112 650/977/112 651/665/112 +f 651/665/112 607/978/112 606/979/112 +f 606/979/112 605/980/112 651/665/112 +f 605/980/112 617/666/112 651/665/112 +f 638/664/112 649/976/112 651/665/112 +f 652/667/127 664/674/127 683/668/127 +f 604/670/111 640/981/111 641/671/111 +f 682/673/112 683/982/112 664/674/112 +f 615/676/111 641/671/111 642/677/111 +f 694/679/111 656/682/111 652/667/111 +f 693/681/111 657/685/111 656/682/111 +f 692/684/111 658/691/111 657/685/111 +f 614/687/111 642/677/111 643/688/111 +f 691/690/111 659/694/111 658/691/111 +f 690/693/111 660/700/111 659/694/111 +f 613/696/111 643/688/111 644/697/111 +f 689/699/111 661/703/111 660/700/111 +f 688/702/111 662/706/111 661/703/111 +f 696/705/111 663/983/111 662/706/111 +f 612/708/111 644/697/111 645/709/111 +f 684/711/112 676/984/112 674/712/112 +f 611/714/111 645/709/111 646/715/111 +f 610/717/111 646/715/111 647/718/111 +f 676/720/112 677/985/112 673/721/112 +f 609/722/111 647/718/111 648/723/111 +f 621/725/112 620/986/112 636/726/112 +f 648/723/127 636/726/127 620/727/127 +f 677/729/112 678/987/112 672/730/112 +f 678/731/112 679/988/112 671/732/112 +f 679/733/112 680/989/112 670/734/112 +f 697/736/111 698/990/111 654/737/111 +f 698/990/111 699/991/111 654/737/111 +f 699/991/111 653/992/111 654/737/111 +f 654/737/111 655/993/111 665/994/111 +f 665/994/111 666/995/111 667/996/111 +f 667/996/111 685/997/111 686/735/111 +f 686/735/111 687/998/111 697/736/111 +f 654/737/111 665/994/111 667/996/111 +f 667/996/111 686/735/111 654/737/111 +f 680/738/112 681/999/112 669/739/112 +f 681/740/112 682/1000/112 668/675/112 +f 707/741/114 705/748/114 701/742/114 +f 704/744/120 706/747/120 702/745/120 +f 706/747/112 707/741/112 703/743/112 +f 705/748/111 704/1001/111 700/749/111 +f 774/750/112 773/1002/112 772/751/112 +f 772/751/112 779/1003/112 778/752/112 +f 778/752/112 777/1004/112 776/1005/112 +f 776/1005/112 775/1006/112 778/752/112 +f 775/1006/112 774/750/112 778/752/112 +f 789/753/113 791/761/113 790/754/113 +f 797/756/113 799/769/113 798/757/113 +f 789/759/114 793/766/114 795/760/114 +f 790/754/120 794/764/120 792/762/120 +f 791/761/112 795/760/112 794/764/112 +f 788/765/111 792/1007/111 793/766/111 +f 797/767/114 801/774/114 803/768/114 +f 798/757/120 802/772/120 800/770/120 +f 799/769/112 803/768/112 802/772/112 +f 796/773/111 800/1008/111 801/774/111 +f 818/775/113 819/794/113 816/776/113 +f 810/778/113 811/786/113 808/779/113 +f 807/781/114 811/786/114 810/782/114 +f 804/784/120 809/1009/120 808/779/120 +f 806/785/112 808/779/112 811/786/112 +f 805/783/111 810/782/111 809/787/111 +f 815/789/114 819/794/114 818/790/114 +f 812/792/120 817/1010/120 816/776/120 +f 814/793/112 816/776/112 819/794/112 +f 813/791/111 818/790/111 817/795/111 +f 830/797/112 842/801/112 841/798/112 +f 831/800/112 843/804/112 842/801/112 +f 823/803/112 832/807/112 843/804/112 +f 822/806/112 833/810/112 832/807/112 +f 821/809/112 834/813/112 833/810/112 +f 820/812/112 835/817/112 834/813/112 +f 820/815/112 824/1011/112 836/816/112 +f 824/818/112 825/1012/112 837/819/112 +f 825/820/112 826/1013/112 838/821/112 +f 827/822/112 839/827/112 838/823/112 +f 827/825/112 828/1014/112 840/826/112 +f 829/828/112 841/798/112 840/826/112 +f 865/830/111 866/833/111 854/831/111 +f 866/833/111 867/836/111 855/834/111 +f 867/836/111 857/839/111 852/837/111 +f 857/839/111 856/842/111 851/840/111 +f 856/842/111 858/845/111 850/843/111 +f 858/845/111 859/1015/111 849/846/111 +f 849/848/111 859/1015/111 860/849/111 +f 848/851/111 860/849/111 861/852/111 +f 847/854/111 861/852/111 862/855/111 +f 862/857/111 863/1016/111 845/858/111 +f 845/860/111 863/1016/111 864/861/111 +f 864/861/111 865/830/111 853/863/111 +s 1 +f 174/1017/128 151/238/129 162/240/128 +f 163/1018/129 152/265/130 151/267/129 +f 164/1019/130 153/241/131 152/243/130 +f 165/1020/131 154/250/132 153/252/131 +f 166/1021/132 155/259/133 154/261/132 +f 155/271/133 168/1022/134 156/876/134 +f 156/249/134 169/1023/135 157/247/135 +f 169/1024/135 158/871/136 157/256/135 +f 170/1025/136 159/268/137 158/270/136 +f 171/1026/137 160/867/138 159/244/137 +f 160/255/138 173/1027/139 161/253/139 +f 161/264/139 174/1017/128 162/262/128 +f 173/1027/140 198/278/141 174/1017/141 +f 198/282/141 163/1018/142 174/1017/141 +f 163/1018/142 188/285/143 164/1019/143 +f 188/286/143 165/1020/144 164/1019/143 +f 189/290/144 166/1021/145 165/1020/144 +f 166/1021/145 191/293/146 167/1028/146 +f 191/295/146 168/1022/147 167/1028/146 +f 192/296/147 169/1023/148 168/1022/147 +f 169/1024/148 194/300/149 170/1025/149 +f 194/304/149 171/1026/150 170/1025/149 +f 171/1026/150 196/306/151 172/1029/151 +f 172/1029/151 197/309/140 173/1027/140 +f 185/870/152 208/1030/120 184/254/120 +f 182/257/153 205/1031/113 181/258/113 +f 179/872/154 202/1032/114 178/260/114 +f 186/873/155 209/1033/152 185/263/152 +f 176/874/156 199/1034/115 175/266/115 +f 183/875/157 206/1035/153 182/269/153 +f 180/272/127 203/1036/154 179/273/154 +f 175/865/115 210/1037/155 186/239/155 +f 177/866/158 200/1038/156 176/242/156 +f 184/245/120 207/1039/157 183/246/157 +f 181/868/113 204/1040/127 180/248/127 +f 178/869/114 201/1041/158 177/251/158 +f 216/888/155 229/327/115 217/297/115 +f 213/287/157 226/321/120 214/887/120 +f 220/308/114 233/311/154 221/277/154 +f 217/299/115 230/329/156 218/302/156 +f 214/887/120 227/323/152 215/292/152 +f 221/277/154 234/313/127 222/280/127 +f 211/886/113 224/317/153 212/284/153 +f 218/302/156 231/332/158 219/305/158 +f 215/292/152 228/325/155 216/888/155 +f 222/280/127 223/315/113 211/886/113 +f 212/284/153 225/319/157 213/287/157 +f 219/305/158 232/334/114 220/308/114 +f 243/1042/158 256/1043/114 244/1044/114 +f 240/1045/155 253/1046/115 241/1047/115 +f 237/1048/157 250/1049/120 238/1050/120 +f 244/1044/114 257/1051/154 245/1052/154 +f 241/1053/115 254/1054/156 242/1055/156 +f 238/1050/120 251/1056/152 239/1057/152 +f 245/1052/154 258/1058/127 246/1059/127 +f 235/1060/113 248/1061/153 236/1062/153 +f 242/1055/156 255/1063/158 243/1042/158 +f 239/1057/152 252/1064/155 240/1045/155 +f 246/1059/127 247/1065/113 235/1060/113 +f 236/1062/153 249/1066/157 237/1048/157 +f 270/356/127 271/1067/113 259/365/113 +f 260/358/153 273/1068/157 261/337/157 +f 267/340/158 280/1069/114 268/341/114 +f 264/363/155 277/1070/115 265/343/115 +f 261/337/157 274/1071/120 262/346/120 +f 268/341/114 281/1072/154 269/348/154 +f 265/904/115 278/1073/156 266/350/156 +f 262/346/120 275/1074/152 263/353/152 +f 269/348/154 282/1075/127 270/356/127 +f 259/365/113 272/1076/153 260/358/153 +f 266/350/156 279/1077/158 267/340/158 +f 263/353/152 276/1078/155 264/363/155 +f 313/394/114 306/1079/151 305/1080/114 +f 311/922/111 304/1081/126 303/1082/111 +f 309/386/120 302/1083/125 301/1084/120 +f 307/389/112 300/1085/145 299/1086/112 +f 314/392/151 299/1086/112 306/1079/151 +f 312/403/126 305/1080/114 304/1081/126 +f 310/388/125 303/1087/111 302/1083/125 +f 308/391/145 301/1084/120 300/1085/145 +f 321/1088/114 330/1089/159 322/1090/151 +f 319/1091/111 328/1092/160 320/1093/126 +f 317/1094/120 326/1095/161 318/1096/125 +f 315/1097/112 324/1098/162 316/1099/145 +f 322/1090/151 323/1100/163 315/1097/112 +f 320/1093/126 329/1101/164 321/1088/114 +f 318/1096/125 327/1102/165 319/1103/111 +f 316/1099/145 325/1104/166 317/1094/120 +f 326/1105/161 336/1106/124 327/1107/165 +f 324/1098/162 334/1108/167 325/1109/166 +f 330/1089/159 338/1110/168 339/1111/169 +f 328/1112/160 336/1113/124 337/1114/170 +f 326/1105/161 334/1108/167 335/1115/171 +f 324/1098/162 332/1116/148 333/1117/172 +f 323/1100/163 339/1111/169 332/1116/148 +f 328/1112/160 338/1110/168 329/1118/164 +f 339/1111/169 340/1119/173 332/1116/148 +f 337/1114/170 346/1120/174 338/1110/168 +f 336/1106/124 343/1121/175 344/1122/176 +f 333/1117/172 342/1123/177 334/1108/167 +f 338/1110/168 347/1124/178 339/1111/169 +f 336/1113/124 345/1125/179 337/1114/170 +f 335/1115/171 342/1123/177 343/1121/175 +f 332/1116/148 341/1126/180 333/1117/172 +f 344/1127/176 352/1128/181 345/1129/179 +f 342/1130/177 350/1131/182 343/1132/175 +f 340/1119/173 348/1133/183 341/1126/180 +f 347/1124/178 331/1134/184 340/1119/173 +f 345/1129/179 353/1135/185 346/1136/174 +f 343/1132/175 351/1137/186 344/1138/176 +f 341/1126/180 349/1139/187 342/1130/177 +f 346/1136/174 354/1140/188 347/1124/178 +f 354/1140/188 362/1141/189 363/1142/190 +f 352/1143/181 360/1144/142 361/1145/191 +f 349/1146/187 359/1147/192 350/1148/182 +f 348/1133/183 356/1149/121 357/1150/193 +f 354/1140/188 356/1149/121 331/1134/184 +f 353/1151/185 361/1145/191 362/1141/189 +f 351/1152/186 359/1147/192 360/1153/142 +f 348/1133/183 358/1154/194 349/1146/187 +f 362/1141/189 369/1155/195 370/1156/196 +f 360/1153/142 367/1157/197 368/1158/198 +f 358/1154/194 365/1159/199 366/1160/200 +f 362/1141/189 371/1161/201 363/1142/190 +f 360/1144/142 369/1155/195 361/1145/191 +f 358/1154/194 367/1157/197 359/1147/192 +f 357/1150/193 364/1162/202 365/1159/199 +f 363/1142/190 364/1162/202 356/1149/121 +f 365/1159/199 355/1163/111 372/1164/125 +f 371/1161/201 355/1163/111 364/1162/202 +f 370/1165/196 376/1166/151 377/1167/114 +f 368/1168/198 374/1169/145 375/1170/112 +f 366/1171/200 372/1164/125 373/1172/120 +f 370/1165/196 378/1173/126 371/1161/201 +f 368/1174/198 376/1166/151 369/1175/195 +f 366/1171/200 374/1169/145 367/1176/197 +f 381/413/203 388/1177/204 389/1178/203 +f 385/407/205 394/1179/206 386/408/206 +f 383/924/207 392/1180/208 384/410/208 +f 381/413/203 390/1181/209 382/414/209 +f 380/417/204 387/1182/210 388/1183/204 +f 386/408/206 387/1184/210 379/416/210 +f 385/407/205 392/1185/208 393/1186/205 +f 383/422/207 390/1187/209 391/1188/207 +f 466/497/114 489/560/158 465/525/158 +f 459/512/157 481/541/153 458/509/153 +f 467/500/154 490/529/114 466/497/114 +f 460/516/120 483/544/157 459/512/157 +f 468/503/127 491/532/154 467/500/154 +f 461/515/152 484/942/120 460/516/120 +f 457/506/113 492/535/127 468/503/127 +f 462/518/155 485/548/152 461/515/152 +f 463/520/115 486/551/155 462/518/155 +f 464/526/156 487/556/115 463/522/115 +f 465/525/158 488/943/156 464/526/156 +f 458/509/153 482/538/113 457/506/113 +f 533/1189/158 539/1190/211 532/1191/211 +f 530/1192/157 536/1193/212 529/1194/212 +f 534/1195/213 540/1196/158 533/1189/158 +f 531/1197/214 537/1198/157 530/1192/157 +f 529/1194/212 535/1199/127 528/1200/127 +f 528/1200/127 541/1201/213 534/1195/213 +f 547/1202/154 553/1203/215 546/1204/215 +f 544/1205/152 550/1206/216 543/1207/216 +f 548/1208/217 554/1209/154 547/1202/154 +f 545/1210/218 551/1211/152 544/1205/152 +f 543/1207/216 549/1212/153 542/1213/153 +f 542/1213/153 555/1214/217 548/1208/217 +f 567/1215/219 576/1216/121 575/1217/219 +f 557/618/117 565/1218/113 556/634/113 +f 556/634/113 571/1219/116 563/633/116 +f 562/632/114 569/1220/118 561/630/118 +f 560/639/115 567/1215/119 559/637/119 +f 558/640/120 564/1221/117 557/618/117 +f 563/633/116 570/1222/114 562/632/114 +f 561/630/118 568/1223/115 560/643/115 +f 559/637/119 566/1224/120 558/640/120 +f 566/1224/125 572/1225/220 564/1221/220 +f 571/1219/221 578/1226/126 570/1222/126 +f 569/1220/222 576/1227/121 568/1223/121 +f 566/1224/125 575/1228/219 574/1229/125 +f 564/1221/220 573/1230/124 565/1218/124 +f 565/1218/124 579/1231/221 571/1219/221 +f 570/1222/126 577/1232/222 569/1220/222 +f 593/644/117 602/1233/120 594/631/120 +f 591/645/116 600/1234/113 592/638/113 +f 588/620/118 598/1235/114 590/641/114 +f 594/631/120 603/1236/119 595/642/119 +f 592/959/113 601/1237/117 593/644/117 +f 590/641/114 599/1238/116 591/645/116 +f 589/619/115 596/1239/118 588/620/118 +f 595/642/119 597/1240/115 589/619/115 +f 610/1241/113 623/652/127 611/1242/127 +f 614/1243/158 627/660/156 615/1244/156 +f 611/1245/127 624/654/154 612/1246/154 +f 608/1247/117 621/725/153 609/1248/153 +f 615/1249/156 616/662/223 604/1250/223 +f 612/1251/154 625/656/114 613/1252/114 +f 609/1253/153 622/649/113 610/1254/113 +f 613/1255/114 626/658/158 614/1256/158 +f 635/650/156 646/715/115 634/651/115 +f 632/655/152 643/688/120 631/657/120 +f 629/661/153 640/981/212 628/663/212 +f 636/726/118 647/718/156 635/650/156 +f 633/653/155 644/697/152 632/655/152 +f 630/659/157 641/671/153 629/661/153 +f 634/651/115 645/709/155 633/653/155 +f 631/657/120 642/677/157 630/659/157 +f 672/730/120 661/703/157 673/721/157 +f 669/739/115 658/691/155 670/734/155 +f 673/721/157 662/706/153 674/712/153 +f 670/734/155 659/694/152 671/732/152 +f 664/674/118 656/682/156 668/675/156 +f 674/712/153 663/983/212 675/713/212 +f 671/732/152 660/700/120 672/730/120 +f 668/675/156 657/685/115 669/739/115 +f 690/1257/114 677/729/158 689/1258/158 +f 694/1259/153 681/740/113 693/1260/113 +f 691/1261/154 678/731/114 690/1262/114 +f 688/1263/156 684/711/223 696/1264/223 +f 695/1265/117 682/673/153 694/1266/153 +f 692/1267/127 679/733/154 691/1268/154 +f 689/1269/158 676/720/156 688/1270/156 +f 693/1271/113 680/738/127 692/1272/127 +f 666/1273/155 649/1274/115 667/1275/115 +f 655/1276/120 651/1277/152 665/1278/152 +f 699/1279/113 618/1280/127 617/1281/113 +f 686/1282/158 637/1283/114 687/1284/114 +f 667/1285/115 639/1286/156 685/1287/156 +f 654/1288/157 607/1289/120 655/1276/120 +f 697/1290/154 637/1283/114 619/1291/154 +f 685/1287/156 638/1292/158 686/1282/158 +f 653/1293/153 606/1294/157 654/1288/157 +f 665/1278/152 650/1295/155 666/1273/155 +f 698/1296/127 619/1291/154 618/1280/127 +f 699/1279/113 605/1297/153 653/1293/153 +f 723/1298/179 708/1299/113 715/1300/116 +f 721/1301/178 714/1302/114 713/1303/118 +f 719/1304/180 712/1305/115 711/1306/119 +f 717/1307/175 710/1308/120 709/1309/117 +f 722/1310/174 715/1300/116 714/1302/114 +f 720/1311/173 713/1303/118 712/1305/115 +f 718/1312/177 711/1306/119 710/1308/120 +f 716/1313/176 709/1309/117 708/1314/113 +f 726/1315/171 718/1316/177 717/1317/175 +f 722/1318/174 732/1319/170 723/1320/179 +f 729/1321/148 721/1322/178 720/1311/173 +f 727/1323/167 719/1324/180 718/1316/177 +f 716/1325/176 726/1315/171 717/1317/175 +f 732/1319/170 716/1326/176 723/1320/179 +f 721/1322/178 731/1327/168 722/1318/174 +f 719/1324/180 729/1321/148 720/1311/173 +f 731/1328/168 740/1329/160 732/1330/170 +f 729/1321/148 738/1331/159 730/1332/169 +f 735/1333/166 728/1334/172 727/1335/167 +f 725/1336/124 734/1337/161 726/1338/171 +f 740/1329/160 725/1339/124 732/1330/170 +f 730/1332/169 739/1340/164 731/1328/168 +f 736/1341/162 729/1321/148 728/1334/172 +f 734/1337/161 727/1335/167 726/1338/171 +f 734/1342/161 743/1343/224 735/1344/166 +f 747/1345/225 740/1346/160 739/1347/164 +f 737/1348/163 746/1349/226 738/1350/159 +f 743/1343/224 736/1351/162 735/1344/166 +f 733/1352/165 742/1353/227 734/1342/161 +f 748/1354/228 733/1355/165 740/1346/160 +f 746/1349/226 739/1347/164 738/1350/159 +f 744/1356/229 737/1348/163 736/1351/162 +f 751/1357/117 759/1358/230 758/1359/231 +f 749/1360/116 761/1361/232 760/1362/233 +f 771/1363/118 755/1364/234 762/1365/235 +f 754/1366/115 756/1367/236 755/1368/234 +f 752/1369/120 758/1359/231 757/1370/237 +f 759/1358/230 749/1360/116 760/1362/233 +f 724/1371/114 762/1365/235 761/1361/232 +f 756/1367/236 752/1369/120 757/1370/237 +f 763/1372/238 755/1373/234 770/1374/121 +f 760/1375/233 764/1376/239 765/1377/240 +f 758/1378/231 766/1379/142 767/1380/241 +f 769/1381/242 757/1382/237 768/1383/243 +f 761/1384/232 763/1372/238 764/1376/239 +f 766/1379/142 760/1375/233 765/1377/240 +f 757/1382/237 767/1380/241 768/1383/243 +f 770/1385/121 756/1386/236 769/1381/242 +f 741/1387/244 769/1388/242 742/1389/227 +f 768/1390/243 744/1391/229 743/1392/224 +f 745/1393/245 765/1394/240 746/1395/226 +f 764/1396/239 748/1397/228 747/1398/225 +f 742/1389/227 768/1390/243 743/1392/224 +f 767/1399/241 745/1393/245 744/1391/229 +f 746/1395/226 764/1396/239 747/1398/225 +f 763/1400/238 741/1401/244 748/1397/228 +f 779/1402/116 786/1403/114 778/1404/114 +f 777/1405/118 784/1406/115 776/1407/115 +f 775/1408/119 782/1409/120 774/1410/120 +f 773/1411/117 781/1412/113 772/1413/113 +f 772/1413/113 787/1414/116 779/1402/116 +f 778/1404/114 785/1415/118 777/1405/118 +f 776/1416/115 783/1417/119 775/1408/119 +f 774/1410/120 780/1418/117 773/1411/117 +f 841/798/114 864/861/158 840/826/158 +f 834/813/157 856/842/153 833/810/153 +f 842/801/154 865/830/114 841/798/114 +f 835/817/120 858/845/157 834/813/157 +f 843/804/127 866/833/154 842/801/154 +f 836/816/152 859/1015/120 835/817/120 +f 832/807/113 867/836/127 843/804/127 +f 837/819/155 860/849/152 836/816/152 +f 838/821/115 861/852/155 837/819/155 +f 839/827/156 862/857/115 838/823/115 +f 840/826/158 863/1016/156 839/827/156 +f 833/810/153 857/839/113 832/807/113 +f 388/1183/246 387/1182/142 513/1419/113 +f 387/1184/142 394/1420/247 513/1421/113 +f 394/1179/247 393/1422/117 513/1423/113 +f 393/1186/117 392/1185/248 513/1424/113 +f 392/1180/248 391/1425/124 513/1426/113 +f 391/1188/124 390/1187/249 513/1427/113 +f 390/1181/249 389/1428/116 513/1429/113 +f 389/1178/116 388/1177/246 513/1430/113 +f 174/1017/128 163/1018/129 151/238/129 +f 163/1018/129 164/1019/130 152/265/130 +f 164/1019/130 165/1020/131 153/241/131 +f 165/1020/131 166/1021/132 154/250/132 +f 166/1021/132 167/1028/133 155/259/133 +f 155/271/133 167/1028/133 168/1022/134 +f 156/249/134 168/1022/134 169/1023/135 +f 169/1024/135 170/1025/136 158/871/136 +f 170/1025/136 171/1026/137 159/268/137 +f 171/1026/137 172/1029/138 160/867/138 +f 160/255/138 172/1029/138 173/1027/139 +f 161/264/139 173/1027/139 174/1017/128 +f 173/1027/140 197/279/140 198/278/141 +f 198/282/141 187/281/142 163/1018/142 +f 163/1018/142 187/283/142 188/285/143 +f 188/286/143 189/288/144 165/1020/144 +f 189/290/144 190/289/145 166/1021/145 +f 166/1021/145 190/291/145 191/293/146 +f 191/295/146 192/294/147 168/1022/147 +f 192/296/147 193/298/148 169/1023/148 +f 169/1024/148 193/301/148 194/300/149 +f 194/304/149 195/303/150 171/1026/150 +f 171/1026/150 195/307/150 196/306/151 +f 172/1029/151 196/310/151 197/309/140 +f 185/870/152 209/1431/152 208/1030/120 +f 182/257/153 206/1432/153 205/1031/113 +f 179/872/154 203/1433/154 202/1032/114 +f 186/873/155 210/1434/155 209/1033/152 +f 176/874/156 200/1435/156 199/1034/115 +f 183/875/157 207/1436/157 206/1035/153 +f 180/272/127 204/1437/127 203/1036/154 +f 175/865/115 199/1438/115 210/1037/155 +f 177/866/158 201/1439/158 200/1038/156 +f 184/245/120 208/1440/120 207/1039/157 +f 181/868/113 205/1441/113 204/1040/127 +f 178/869/114 202/1442/114 201/1041/158 +f 216/888/155 228/325/155 229/327/115 +f 213/287/157 225/319/157 226/321/120 +f 220/308/114 232/334/114 233/311/154 +f 217/299/115 229/330/115 230/329/156 +f 214/887/120 226/321/120 227/323/152 +f 221/277/154 233/311/154 234/313/127 +f 211/886/113 223/315/113 224/317/153 +f 218/302/156 230/329/156 231/332/158 +f 215/292/152 227/323/152 228/325/155 +f 222/280/127 234/313/127 223/315/113 +f 212/284/153 224/317/153 225/319/157 +f 219/305/158 231/332/158 232/334/114 +f 243/1042/158 255/1063/158 256/1043/114 +f 240/1045/155 252/1064/155 253/1046/115 +f 237/1048/157 249/1066/157 250/1049/120 +f 244/1044/114 256/1043/114 257/1051/154 +f 241/1053/115 253/1443/115 254/1054/156 +f 238/1050/120 250/1049/120 251/1056/152 +f 245/1052/154 257/1051/154 258/1058/127 +f 235/1060/113 247/1065/113 248/1061/153 +f 242/1055/156 254/1054/156 255/1063/158 +f 239/1057/152 251/1056/152 252/1064/155 +f 246/1059/127 258/1058/127 247/1065/113 +f 236/1062/153 248/1061/153 249/1066/157 +f 270/356/127 282/1075/127 271/1067/113 +f 260/358/153 272/1076/153 273/1068/157 +f 267/340/158 279/1077/158 280/1069/114 +f 264/363/155 276/1078/155 277/1070/115 +f 261/337/157 273/1068/157 274/1071/120 +f 268/341/114 280/1069/114 281/1072/154 +f 265/904/115 277/1444/115 278/1073/156 +f 262/346/120 274/1071/120 275/1074/152 +f 269/348/154 281/1072/154 282/1075/127 +f 259/365/113 271/1067/113 272/1076/153 +f 266/350/156 278/1073/156 279/1077/158 +f 263/353/152 275/1074/152 276/1078/155 +f 313/394/114 314/392/151 306/1079/151 +f 311/922/111 312/403/126 304/1081/126 +f 309/386/120 310/388/125 302/1083/125 +f 307/389/112 308/391/145 300/1085/145 +f 314/392/151 307/389/112 299/1086/112 +f 312/403/126 313/394/114 305/1080/114 +f 310/388/125 311/397/111 303/1087/111 +f 308/391/145 309/386/120 301/1084/120 +f 321/1088/114 329/1101/164 330/1089/159 +f 319/1091/111 327/1445/165 328/1092/160 +f 317/1094/120 325/1104/166 326/1095/161 +f 315/1097/112 323/1100/163 324/1098/162 +f 322/1090/151 330/1089/159 323/1100/163 +f 320/1093/126 328/1092/160 329/1101/164 +f 318/1096/125 326/1095/161 327/1102/165 +f 316/1099/145 324/1098/162 325/1104/166 +f 326/1105/161 335/1115/171 336/1106/124 +f 324/1098/162 333/1117/172 334/1108/167 +f 330/1089/159 329/1118/164 338/1110/168 +f 328/1112/160 327/1446/165 336/1113/124 +f 326/1105/161 325/1109/166 334/1108/167 +f 324/1098/162 323/1100/163 332/1116/148 +f 323/1100/163 330/1089/159 339/1111/169 +f 328/1112/160 337/1114/170 338/1110/168 +f 339/1111/169 347/1124/178 340/1119/173 +f 337/1114/170 345/1125/179 346/1120/174 +f 336/1106/124 335/1115/171 343/1121/175 +f 333/1117/172 341/1126/180 342/1123/177 +f 338/1110/168 346/1120/174 347/1124/178 +f 336/1113/124 344/1447/176 345/1125/179 +f 335/1115/171 334/1108/167 342/1123/177 +f 332/1116/148 340/1119/173 341/1126/180 +f 344/1127/176 351/1448/186 352/1128/181 +f 342/1130/177 349/1139/187 350/1131/182 +f 340/1119/173 331/1134/184 348/1133/183 +f 347/1124/178 354/1140/188 331/1134/184 +f 345/1129/179 352/1128/181 353/1135/185 +f 343/1132/175 350/1131/182 351/1137/186 +f 341/1126/180 348/1133/183 349/1139/187 +f 346/1136/174 353/1135/185 354/1140/188 +f 354/1140/188 353/1151/185 362/1141/189 +f 352/1143/181 351/1449/186 360/1144/142 +f 349/1146/187 358/1154/194 359/1147/192 +f 348/1133/183 331/1134/184 356/1149/121 +f 354/1140/188 363/1142/190 356/1149/121 +f 353/1151/185 352/1143/181 361/1145/191 +f 351/1152/186 350/1148/182 359/1147/192 +f 348/1133/183 357/1150/193 358/1154/194 +f 362/1141/189 361/1145/191 369/1155/195 +f 360/1153/142 359/1147/192 367/1157/197 +f 358/1154/194 357/1150/193 365/1159/199 +f 362/1141/189 370/1156/196 371/1161/201 +f 360/1144/142 368/1450/198 369/1155/195 +f 358/1154/194 366/1160/200 367/1157/197 +f 357/1150/193 356/1149/121 364/1162/202 +f 363/1142/190 371/1161/201 364/1162/202 +f 365/1159/199 364/1162/202 355/1163/111 +f 371/1161/201 378/1173/126 355/1163/111 +f 370/1165/196 369/1175/195 376/1166/151 +f 368/1168/198 367/1176/197 374/1169/145 +f 366/1171/200 365/1159/199 372/1164/125 +f 370/1165/196 377/1167/114 378/1173/126 +f 368/1174/198 375/1451/112 376/1166/151 +f 366/1171/200 373/1172/120 374/1169/145 +f 381/413/203 380/417/204 388/1177/204 +f 385/407/205 393/1422/205 394/1179/206 +f 383/924/207 391/1425/207 392/1180/208 +f 381/413/203 389/1428/203 390/1181/209 +f 380/417/204 379/416/210 387/1182/210 +f 386/408/206 394/1420/206 387/1184/210 +f 385/407/205 384/410/208 392/1185/208 +f 383/422/207 382/414/209 390/1187/209 +f 466/497/114 490/529/114 489/560/158 +f 459/512/157 483/544/157 481/541/153 +f 467/500/154 491/532/154 490/529/114 +f 460/516/120 484/942/120 483/544/157 +f 468/503/127 492/535/127 491/532/154 +f 461/515/152 485/548/152 484/942/120 +f 457/506/113 482/538/113 492/535/127 +f 462/518/155 486/551/155 485/548/152 +f 463/520/115 487/554/115 486/551/155 +f 464/526/156 488/943/156 487/556/115 +f 465/525/158 489/560/158 488/943/156 +f 458/509/153 481/541/153 482/538/113 +f 533/1189/158 540/1196/158 539/1190/211 +f 530/1192/157 537/1198/157 536/1193/212 +f 534/1195/213 541/1201/213 540/1196/158 +f 531/1197/214 538/1452/214 537/1198/157 +f 529/1194/212 536/1193/212 535/1199/127 +f 528/1200/127 535/1199/127 541/1201/213 +f 547/1202/154 554/1209/154 553/1203/215 +f 544/1205/152 551/1211/152 550/1206/216 +f 548/1208/217 555/1214/217 554/1209/154 +f 545/1210/218 552/1453/218 551/1211/152 +f 543/1207/216 550/1206/216 549/1212/153 +f 542/1213/153 549/1212/153 555/1214/217 +f 567/1215/219 568/1454/121 576/1216/121 +f 557/618/117 564/1221/117 565/1218/113 +f 556/634/113 565/1218/113 571/1219/116 +f 562/632/114 570/1222/114 569/1220/118 +f 560/639/115 568/1454/115 567/1215/119 +f 558/640/120 566/1224/120 564/1221/117 +f 563/633/116 571/1219/116 570/1222/114 +f 561/630/118 569/1220/118 568/1223/115 +f 559/637/119 567/1215/119 566/1224/120 +f 566/1224/125 574/1455/125 572/1225/220 +f 571/1219/221 579/1456/221 578/1226/126 +f 569/1220/222 577/1457/222 576/1227/121 +f 566/1224/125 567/1215/219 575/1228/219 +f 564/1221/220 572/1458/220 573/1230/124 +f 565/1218/124 573/1459/124 579/1231/221 +f 570/1222/126 578/1460/126 577/1232/222 +f 593/644/117 601/1237/117 602/1233/120 +f 591/645/116 599/1238/116 600/1234/113 +f 588/620/118 596/1239/118 598/1235/114 +f 594/631/120 602/1233/120 603/1236/119 +f 592/959/113 600/1461/113 601/1237/117 +f 590/641/114 598/1235/114 599/1238/116 +f 589/619/115 597/1240/115 596/1239/118 +f 595/642/119 603/1236/119 597/1240/115 +f 610/1241/113 622/966/113 623/652/127 +f 614/1243/158 626/970/158 627/660/156 +f 611/1245/127 623/967/127 624/654/154 +f 608/1247/117 620/986/117 621/725/153 +f 615/1249/156 627/971/156 616/662/223 +f 612/1251/154 624/968/154 625/656/114 +f 609/1253/153 621/965/153 622/649/113 +f 613/1255/114 625/969/114 626/658/158 +f 635/650/156 647/718/156 646/715/115 +f 632/655/152 644/697/152 643/688/120 +f 629/661/153 641/671/153 640/981/212 +f 636/726/118 648/723/118 647/718/156 +f 633/653/155 645/709/155 644/697/152 +f 630/659/157 642/677/157 641/671/153 +f 634/651/115 646/715/115 645/709/155 +f 631/657/120 643/688/120 642/677/157 +f 672/730/120 660/700/120 661/703/157 +f 669/739/115 657/685/115 658/691/155 +f 673/721/157 661/703/157 662/706/153 +f 670/734/155 658/691/155 659/694/152 +f 664/674/118 652/667/118 656/682/156 +f 674/712/153 662/706/153 663/983/212 +f 671/732/152 659/694/152 660/700/120 +f 668/675/156 656/682/156 657/685/115 +f 690/1257/114 678/987/114 677/729/158 +f 694/1259/153 682/1000/153 681/740/113 +f 691/1261/154 679/988/154 678/731/114 +f 688/1263/156 676/984/156 684/711/223 +f 695/1265/117 683/982/117 682/673/153 +f 692/1267/127 680/989/127 679/733/154 +f 689/1269/158 677/985/158 676/720/156 +f 693/1271/113 681/999/113 680/738/127 +f 666/1273/155 650/1295/155 649/1274/115 +f 655/1276/120 607/1289/120 651/1277/152 +f 699/1279/113 698/1296/127 618/1280/127 +f 686/1282/158 638/1292/158 637/1283/114 +f 667/1285/115 649/1462/115 639/1286/156 +f 654/1288/157 606/1294/157 607/1289/120 +f 697/1290/154 687/1284/114 637/1283/114 +f 685/1287/156 639/1286/156 638/1292/158 +f 653/1293/153 605/1297/153 606/1294/157 +f 665/1278/152 651/1277/152 650/1295/155 +f 698/1296/127 697/1290/154 619/1291/154 +f 699/1279/113 617/1281/113 605/1297/153 +f 723/1298/179 716/1463/176 708/1299/113 +f 721/1301/178 722/1310/174 714/1302/114 +f 719/1304/180 720/1311/173 712/1305/115 +f 717/1307/175 718/1312/177 710/1308/120 +f 722/1310/174 723/1298/179 715/1300/116 +f 720/1311/173 721/1301/178 713/1303/118 +f 718/1312/177 719/1304/180 711/1306/119 +f 716/1313/176 717/1307/175 709/1309/117 +f 726/1315/171 727/1323/167 718/1316/177 +f 722/1318/174 731/1327/168 732/1319/170 +f 729/1321/148 730/1464/169 721/1322/178 +f 727/1323/167 728/1465/172 719/1324/180 +f 716/1325/176 725/1466/124 726/1315/171 +f 732/1319/170 725/1467/124 716/1326/176 +f 721/1322/178 730/1464/169 731/1327/168 +f 719/1324/180 728/1465/172 729/1321/148 +f 731/1328/168 739/1340/164 740/1329/160 +f 729/1321/148 737/1348/163 738/1331/159 +f 735/1333/166 736/1341/162 728/1334/172 +f 725/1336/124 733/1468/165 734/1337/161 +f 740/1329/160 733/1469/165 725/1339/124 +f 730/1332/169 738/1331/159 739/1340/164 +f 736/1341/162 737/1348/163 729/1321/148 +f 734/1337/161 735/1333/166 727/1335/167 +f 734/1342/161 742/1353/227 743/1343/224 +f 747/1345/225 748/1354/228 740/1346/160 +f 737/1348/163 745/1393/245 746/1349/226 +f 743/1343/224 744/1356/229 736/1351/162 +f 733/1352/165 741/1470/244 742/1353/227 +f 748/1354/228 741/1471/244 733/1355/165 +f 746/1349/226 747/1345/225 739/1347/164 +f 744/1356/229 745/1393/245 737/1348/163 +f 751/1357/117 750/1472/113 759/1358/230 +f 749/1360/116 724/1371/114 761/1361/232 +f 771/1363/118 754/1473/115 755/1364/234 +f 754/1366/115 753/1474/119 756/1367/236 +f 752/1369/120 751/1357/117 758/1359/231 +f 759/1358/230 750/1472/113 749/1360/116 +f 724/1371/114 771/1363/118 762/1365/235 +f 756/1367/236 753/1474/119 752/1369/120 +f 763/1372/238 762/1475/235 755/1373/234 +f 760/1375/233 761/1384/232 764/1376/239 +f 758/1378/231 759/1358/230 766/1379/142 +f 769/1381/242 756/1386/236 757/1382/237 +f 761/1384/232 762/1475/235 763/1372/238 +f 766/1379/142 759/1358/230 760/1375/233 +f 757/1382/237 758/1378/231 767/1380/241 +f 770/1385/121 755/1476/234 756/1386/236 +f 741/1387/244 770/1477/121 769/1388/242 +f 768/1390/243 767/1399/241 744/1391/229 +f 745/1393/245 766/1379/142 765/1394/240 +f 764/1396/239 763/1400/238 748/1397/228 +f 742/1389/227 769/1388/242 768/1390/243 +f 767/1399/241 766/1379/142 745/1393/245 +f 746/1395/226 765/1394/240 764/1396/239 +f 763/1400/238 770/1478/121 741/1401/244 +f 779/1402/116 787/1414/116 786/1403/114 +f 777/1405/118 785/1415/118 784/1406/115 +f 775/1408/119 783/1417/119 782/1409/120 +f 773/1411/117 780/1418/117 781/1412/113 +f 772/1413/113 781/1412/113 787/1414/116 +f 778/1404/114 786/1403/114 785/1415/118 +f 776/1416/115 784/1479/115 783/1417/119 +f 774/1410/120 782/1409/120 780/1418/117 +f 841/798/114 865/830/114 864/861/158 +f 834/813/157 858/845/157 856/842/153 +f 842/801/154 866/833/154 865/830/114 +f 835/817/120 859/1015/120 858/845/157 +f 843/804/127 867/836/127 866/833/154 +f 836/816/152 860/849/152 859/1015/120 +f 832/807/113 857/839/113 867/836/127 +f 837/819/155 861/852/155 860/849/152 +f 838/821/115 862/855/115 861/852/155 +f 839/827/156 863/1016/156 862/857/115 +f 840/826/158 864/861/158 863/1016/156 +f 833/810/153 856/842/153 857/839/113 diff --git a/src/main/resources/assets/hbm/models/weapons/flaregun.obj b/src/main/resources/assets/hbm/models/weapons/flaregun.obj new file mode 100644 index 000000000..8d080c39a --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/flaregun.obj @@ -0,0 +1,2850 @@ +# Blender v2.79 (sub 0) OBJ File: 'flaregun.blend' +# www.blender.org +o Flare +v 0.882965 4.591380 -2.458135 +v 0.509780 4.964565 -2.458135 +v 0.000000 5.101160 -2.458135 +v -0.509780 4.964565 -2.458135 +v -0.882965 4.591380 -2.458135 +v -1.019560 4.081600 -2.458135 +v -0.882965 3.571820 -2.458135 +v -0.509780 3.198636 -2.458135 +v 0.000000 3.062041 -2.458135 +v 0.509780 3.198636 -2.458135 +v 1.019560 4.081600 -2.458135 +v 0.882964 3.571820 -2.458135 +v 0.882965 4.591380 -2.128838 +v 0.509780 4.964565 -2.128838 +v 0.000000 5.101160 -2.128838 +v -0.509780 4.964565 -2.128838 +v -0.882965 4.591380 -2.128838 +v -1.019560 4.081600 -2.128838 +v -0.882965 3.571820 -2.128838 +v -0.509780 3.198636 -2.128838 +v 0.000000 3.062041 -2.128838 +v 0.509780 3.198636 -2.128838 +v 1.019560 4.081600 -2.128838 +v 0.882964 3.571820 -2.128838 +v 0.767825 4.524904 -2.128838 +v 0.443304 4.849426 -2.128838 +v -0.000000 4.968208 -2.128838 +v -0.443304 4.849426 -2.128838 +v -0.767825 4.524904 -2.128838 +v -0.886608 4.081600 -2.128838 +v -0.767825 3.638296 -2.128838 +v -0.443304 3.313776 -2.128838 +v -0.000000 3.194993 -2.128838 +v 0.443304 3.313776 -2.128838 +v 0.886608 4.081600 -2.128838 +v 0.767824 3.638296 -2.128838 +v 0.767825 4.524904 2.191458 +v 0.443304 4.849426 2.191458 +v -0.000000 4.968208 2.191458 +v -0.443304 4.849426 2.191458 +v -0.767825 4.524904 2.191458 +v -0.886608 4.081600 2.191458 +v -0.767825 3.638296 2.191458 +v -0.443304 3.313776 2.191458 +v -0.000000 3.194993 2.191458 +v 0.443304 3.313776 2.191458 +v 0.886608 4.081600 2.191458 +v 0.767824 3.638296 2.191458 +vt 0.112500 0.250000 +vt 0.115000 0.236667 +vt 0.115000 0.250000 +vt 0.115000 0.223333 +vt 0.112500 0.210000 +vt 0.115000 0.210000 +vt 0.115000 0.183333 +vt 0.112500 0.196667 +vt 0.112500 0.183333 +vt 0.112500 0.263333 +vt 0.115000 0.263333 +vt 0.115000 0.196667 +vt 0.112500 0.290000 +vt 0.115000 0.276667 +vt 0.115000 0.290000 +vt 0.112500 0.316667 +vt 0.115000 0.303333 +vt 0.115000 0.316667 +vt 0.112500 0.223333 +vt 0.112500 0.276667 +vt 0.115000 0.170000 +vt 0.112500 0.170000 +vt 0.115000 0.156667 +vt 0.146256 0.253555 +vt 0.119988 0.233333 +vt 0.146256 0.213112 +vt 0.149838 0.160614 +vt 0.149838 0.206053 +vt 0.120324 0.183333 +vt 0.112500 0.236667 +vt 0.112500 0.303333 +vt 0.112500 0.156667 +vt 0.152666 0.221658 +vt 0.155012 0.233333 +vt 0.152666 0.245008 +vt 0.137500 0.256683 +vt 0.128744 0.253555 +vt 0.122334 0.245008 +vt 0.122334 0.221658 +vt 0.128744 0.213112 +vt 0.137500 0.209983 +vt 0.122960 0.170216 +vt 0.130162 0.160614 +vt 0.140000 0.157099 +vt 0.157039 0.170216 +vt 0.159675 0.183333 +vt 0.157039 0.196450 +vt 0.140000 0.209567 +vt 0.130162 0.206053 +vt 0.122960 0.196450 +vt 0.120000 0.290000 +vt 0.120000 0.303333 +vt 0.120000 0.263333 +vt 0.120000 0.276667 +vt 0.120000 0.170000 +vt 0.120000 0.183333 +vt 0.120000 0.156667 +vt 0.120000 0.236667 +vt 0.120000 0.250000 +vt 0.120000 0.210000 +vt 0.120000 0.223333 +vt 0.120000 0.196667 +vt 0.120000 0.316667 +vt 0.025000 0.250000 +vt 0.025000 0.223333 +vt 0.025000 0.183333 +vt 0.025000 0.263333 +vt 0.025000 0.196667 +vt 0.025000 0.290000 +vt 0.025000 0.316667 +vt 0.025000 0.236667 +vt 0.025000 0.303333 +vt 0.025000 0.276667 +vt 0.025000 0.170000 +vt 0.025000 0.210000 +vt 0.025000 0.156667 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn -1.0000 -0.0000 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.0000 -1.0000 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.8660 0.5000 0.0000 +vn 1.0000 -0.0000 0.0000 +s off +f 28/1/1 15/2/1 16/3/1 +f 14/4/1 25/5/1 13/6/1 +f 24/7/1 35/8/1 36/9/1 +f 29/10/1 16/3/1 17/11/1 +f 23/12/1 25/5/1 35/8/1 +f 31/13/1 18/14/1 19/15/1 +f 33/16/1 20/17/1 21/18/1 +f 15/2/1 26/19/1 14/4/1 +f 20/17/1 31/13/1 19/15/1 +f 30/20/1 17/11/1 18/14/1 +f 36/9/1 22/21/1 24/7/1 +f 34/22/1 21/23/1 22/21/1 +f 38/24/1 42/25/1 46/26/1 +f 8/27/2 4/28/2 11/29/2 +f 28/1/1 27/30/1 15/2/1 +f 14/4/1 26/19/1 25/5/1 +f 24/7/1 23/12/1 35/8/1 +f 29/10/1 28/1/1 16/3/1 +f 23/12/1 13/6/1 25/5/1 +f 31/13/1 30/20/1 18/14/1 +f 33/16/1 32/31/1 20/17/1 +f 15/2/1 27/30/1 26/19/1 +f 20/17/1 32/31/1 31/13/1 +f 30/20/1 29/10/1 17/11/1 +f 36/9/1 34/22/1 22/21/1 +f 34/22/1 33/32/1 21/23/1 +f 46/26/1 48/33/1 47/34/1 +f 47/34/1 37/35/1 46/26/1 +f 37/35/1 38/24/1 46/26/1 +f 38/24/1 39/36/1 42/25/1 +f 39/36/1 40/37/1 42/25/1 +f 40/37/1 41/38/1 42/25/1 +f 42/25/1 43/39/1 44/40/1 +f 44/40/1 45/41/1 42/25/1 +f 45/41/1 46/26/1 42/25/1 +f 11/29/2 12/42/2 10/43/2 +f 10/43/2 9/44/2 11/29/2 +f 9/44/2 8/27/2 11/29/2 +f 8/27/2 7/45/2 6/46/2 +f 6/46/2 5/47/2 4/28/2 +f 4/28/2 3/48/2 11/29/2 +f 3/48/2 2/49/2 11/29/2 +f 2/49/2 1/50/2 11/29/2 +f 8/27/2 6/46/2 4/28/2 +s 1 +f 20/17/3 7/51/4 8/52/3 +f 18/14/5 5/53/6 6/54/5 +f 24/7/7 10/55/8 12/56/7 +f 22/21/8 9/57/9 10/55/8 +f 16/3/10 3/58/11 4/59/10 +f 14/4/12 1/60/13 2/61/12 +f 11/62/14 24/7/7 12/56/7 +f 17/11/6 4/59/10 5/53/6 +f 1/60/13 23/12/14 11/62/14 +f 19/15/4 6/54/5 7/51/4 +f 21/18/9 8/52/3 9/63/9 +f 15/2/11 2/61/12 3/58/11 +f 40/64/10 27/30/11 28/1/10 +f 38/65/12 25/5/13 26/19/12 +f 35/8/14 48/66/7 36/9/7 +f 41/67/6 28/1/10 29/10/6 +f 25/5/13 47/68/14 35/8/14 +f 43/69/4 30/20/5 31/13/4 +f 45/70/9 32/31/3 33/16/9 +f 39/71/11 26/19/12 27/30/11 +f 44/72/3 31/13/4 32/31/3 +f 42/73/5 29/10/6 30/20/5 +f 48/66/7 34/22/8 36/9/7 +f 46/74/8 33/32/9 34/22/8 +f 20/17/3 19/15/4 7/51/4 +f 18/14/5 17/11/6 5/53/6 +f 24/7/7 22/21/8 10/55/8 +f 22/21/8 21/23/9 9/57/9 +f 16/3/10 15/2/11 3/58/11 +f 14/4/12 13/6/13 1/60/13 +f 11/62/14 23/12/14 24/7/7 +f 17/11/6 16/3/10 4/59/10 +f 1/60/13 13/6/13 23/12/14 +f 19/15/4 18/14/5 6/54/5 +f 21/18/9 20/17/3 8/52/3 +f 15/2/11 14/4/12 2/61/12 +f 40/64/10 39/71/11 27/30/11 +f 38/65/12 37/75/13 25/5/13 +f 35/8/14 47/68/14 48/66/7 +f 41/67/6 40/64/10 28/1/10 +f 25/5/13 37/75/13 47/68/14 +f 43/69/4 42/73/5 30/20/5 +f 45/70/9 44/72/3 32/31/3 +f 39/71/11 38/65/12 26/19/12 +f 44/72/3 43/69/4 31/13/4 +f 42/73/5 41/67/6 29/10/6 +f 48/66/7 46/74/8 34/22/8 +f 46/74/8 45/76/9 33/32/9 +o Hammer +v 0.745252 1.700511 -4.104497 +v 0.745252 1.813547 -4.151319 +v 0.745252 1.926583 -4.104497 +v 0.745252 1.973404 -3.991461 +v 0.745252 1.926583 -3.878425 +v 0.745252 1.813547 -3.831604 +v 0.745252 1.700511 -3.878425 +v 0.745252 1.653689 -3.991461 +v -0.626225 1.813547 -4.184730 +v -0.626225 1.676885 -4.128123 +v -0.745252 1.700511 -4.104497 +v -0.745252 1.813547 -4.151319 +v 0.626225 1.676885 -4.128123 +v 0.626225 1.813547 -4.184730 +v -0.626225 1.620278 -3.991461 +v -0.745252 1.653689 -3.991461 +v 0.626225 1.620278 -3.991461 +v -0.626225 1.676885 -3.854800 +v -0.745252 1.700511 -3.878425 +v 0.626225 1.676885 -3.854800 +v -0.626225 1.813547 -3.798193 +v -0.745252 1.813547 -3.831604 +v 0.626225 1.813547 -3.798193 +v -0.626225 1.950208 -3.854800 +v -0.745252 1.926583 -3.878425 +v 0.626225 1.950208 -3.854800 +v -0.626225 2.006815 -3.991461 +v -0.745252 1.973404 -3.991461 +v 0.626225 2.006815 -3.991461 +v -0.626225 1.950208 -4.128123 +v -0.745252 1.926583 -4.104497 +v 0.626225 1.950208 -4.128123 +v -0.206205 4.430529 -5.327692 +v -0.206205 4.510303 -5.183657 +v 0.206205 4.510303 -5.183657 +v 0.206205 4.430529 -5.327692 +v 0.206205 4.421892 -4.871769 +v 0.206205 4.372530 -4.722456 +v 0.206205 4.399612 -4.484733 +v 0.206205 4.442521 -4.233756 +v 0.206205 4.459024 -4.063620 +v 0.206205 4.490410 -3.895228 +v 0.206205 4.474938 -3.775805 +v 0.206205 4.611975 -3.495304 +v 0.206205 4.409944 -3.251491 +v 0.206205 4.139801 -3.461582 +v 0.206205 4.039521 -3.813910 +v 0.206205 4.008822 -4.135539 +v 0.206205 3.934636 -4.626007 +v 0.206205 3.845099 -4.867631 +v 0.206205 3.740214 -5.107749 +v 0.206205 4.068292 -5.353975 +v 0.206205 4.292388 -5.408881 +v 0.206205 4.476391 -5.035797 +v -0.206205 4.611975 -3.495304 +v -0.206205 4.409944 -3.251491 +v -0.206205 4.139801 -3.461582 +v -0.206205 4.474938 -3.775805 +v -0.206205 4.399612 -4.484733 +v -0.206205 4.442521 -4.233756 +v -0.206205 3.845099 -4.867631 +v -0.206205 3.934636 -4.626007 +v -0.206205 4.459024 -4.063620 +v -0.206205 4.490410 -3.895228 +v -0.206205 4.008822 -4.135539 +v -0.206205 4.039521 -3.813910 +v -0.206205 3.740214 -5.107749 +v -0.206205 4.372530 -4.722456 +v -0.206205 4.476391 -5.035797 +v -0.206205 4.421892 -4.871769 +v -0.206205 4.292388 -5.408881 +v -0.206205 4.068292 -5.353975 +vt 0.589044 0.875414 +vt 0.591244 0.874200 +vt 0.591244 0.882498 +vt 0.599072 0.881280 +vt 0.599072 0.875472 +vt 0.603428 0.875472 +vt 0.609398 0.934618 +vt 0.605458 0.935216 +vt 0.607800 0.924944 +vt 0.572500 0.826666 +vt 0.565000 0.816666 +vt 0.572500 0.816666 +vt 0.592420 0.913470 +vt 0.587478 0.912434 +vt 0.587032 0.904256 +vt 0.593446 0.875414 +vt 0.594358 0.878348 +vt 0.593446 0.881284 +vt 0.589044 0.881284 +vt 0.588132 0.878348 +vt 0.598170 0.878376 +vt 0.601250 0.874268 +vt 0.604330 0.878376 +vt 0.603428 0.881280 +vt 0.601250 0.882482 +vt 0.601300 0.936164 +vt 0.599674 0.926582 +vt 0.598482 0.936528 +vt 0.595692 0.937222 +vt 0.594344 0.927260 +vt 0.593712 0.936880 +vt 0.589066 0.939906 +vt 0.588506 0.929476 +vt 0.585026 0.935444 +vt 0.611804 0.922966 +vt 0.615782 0.920648 +vt 0.619862 0.927896 +vt 0.611872 0.935708 +vt 0.620770 0.932846 +vt 0.619426 0.935898 +vt 0.617040 0.937660 +vt 0.614590 0.936912 +vt 0.565000 0.826666 +vt 0.613758 0.913438 +vt 0.611736 0.913788 +vt 0.613114 0.903606 +vt 0.608884 0.913078 +vt 0.606004 0.912706 +vt 0.607666 0.902912 +vt 0.601754 0.911736 +vt 0.622638 0.911970 +vt 0.618510 0.916532 +vt 0.619080 0.905870 +vt 0.597728 0.911126 +vt 0.599360 0.901238 +vt 0.591202 0.896848 +vt 0.595268 0.899216 +vt 0.595198 0.912240 +vt 0.586102 0.909316 +vt 0.589916 0.914236 +vt 0.597526 0.878376 +vt 0.595008 0.878348 +vt 0.593906 0.874802 +vt 0.601250 0.873410 +vt 0.598616 0.874864 +vt 0.591244 0.873332 +vt 0.603882 0.874864 +vt 0.588584 0.874802 +vt 0.604974 0.878376 +vt 0.587482 0.878348 +vt 0.603882 0.881886 +vt 0.588584 0.881896 +vt 0.601250 0.883340 +vt 0.591244 0.883366 +vt 0.593906 0.881896 +vt 0.598616 0.881886 +vt 0.565000 0.870000 +vt 0.572500 0.873334 +vt 0.565000 0.873334 +vt 0.572500 0.940000 +vt 0.565000 0.950000 +vt 0.565000 0.940000 +vt 0.565000 0.833334 +vt 0.572500 0.833334 +vt 0.565000 0.853334 +vt 0.572500 0.846666 +vt 0.572500 0.853334 +vt 0.565000 0.840000 +vt 0.572500 0.836666 +vt 0.572500 0.840000 +vt 0.565000 0.856666 +vt 0.572500 0.856666 +vt 0.565000 0.836666 +vt 0.565000 0.846666 +vt 0.565000 0.866666 +vt 0.572500 0.863334 +vt 0.572500 0.866666 +vt 0.572500 0.880000 +vt 0.565000 0.883334 +vt 0.565000 0.880000 +vt 0.565000 0.863334 +vt 0.572500 0.883334 +vt 0.565000 0.896666 +vt 0.572500 0.870000 +vt 0.572500 0.950000 +vt 0.572500 0.896666 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.7700 0.6380 +vn -0.2703 -0.0000 -0.9628 +vn -0.2703 -0.6808 -0.6808 +vn 0.2703 -0.0000 -0.9628 +vn 0.2703 -0.6808 -0.6808 +vn -0.2703 -0.9628 -0.0000 +vn 0.2703 -0.9628 -0.0000 +vn -0.2703 -0.6808 0.6808 +vn 0.2703 -0.6808 0.6808 +vn -0.2703 0.0000 0.9628 +vn 0.2703 0.0000 0.9628 +vn -0.2703 0.6808 0.6808 +vn 0.2703 0.6808 0.6808 +vn -0.2703 0.9628 0.0000 +vn 0.2703 0.9628 0.0000 +vn -0.2703 0.6808 -0.6808 +vn 0.2703 0.6808 -0.6808 +vn 0.0000 0.9902 -0.1397 +vn 0.0000 0.7161 -0.6980 +vn 0.0000 -0.6139 0.7894 +vn 0.0000 0.9868 -0.1621 +vn 0.0000 0.8985 -0.4390 +vn 0.0000 0.9900 -0.1409 +vn 0.0000 0.9912 -0.1326 +vn 0.0000 0.9901 -0.1400 +vn 0.0000 0.9996 -0.0277 +vn 0.0000 0.9947 0.1027 +vn 0.0000 0.9629 0.2697 +vn 0.0000 0.9492 0.3146 +vn 0.0000 0.1450 -0.9894 +vn 0.0000 -0.4278 -0.9039 +vn 0.0000 -0.6003 -0.7998 +s off +f 55/77/15 56/78/15 52/79/15 +f 79/80/16 59/81/16 67/82/16 +f 86/83/15 87/84/15 97/85/15 +f 92/86/17 104/87/17 93/88/17 +f 117/89/16 81/90/16 120/91/16 +f 56/78/15 49/92/15 52/79/15 +f 49/92/15 50/93/15 52/79/15 +f 50/93/15 51/94/15 52/79/15 +f 52/79/15 53/95/15 54/96/15 +f 54/96/15 55/77/15 52/79/15 +f 79/80/16 60/97/16 59/81/16 +f 59/81/16 64/98/16 67/82/16 +f 67/82/16 70/99/16 79/80/16 +f 70/99/16 73/100/16 79/80/16 +f 73/100/16 76/101/16 79/80/16 +f 87/84/15 88/102/15 96/103/15 +f 88/102/15 89/104/15 96/103/15 +f 89/104/15 90/105/15 95/106/15 +f 90/105/15 91/107/15 95/106/15 +f 91/107/15 92/108/15 94/109/15 +f 92/108/15 93/110/15 94/109/15 +f 94/109/15 95/106/15 91/107/15 +f 95/106/15 96/103/15 89/104/15 +f 96/103/15 97/85/15 87/84/15 +f 98/111/15 99/112/15 100/113/15 +f 97/85/15 98/111/15 86/83/15 +f 98/111/15 100/113/15 85/114/15 +f 86/83/15 98/111/15 85/114/15 +f 100/113/15 101/115/15 84/116/15 +f 84/116/15 83/117/15 102/118/15 +f 84/116/15 102/118/15 100/113/15 +f 102/118/15 85/114/15 100/113/15 +f 92/86/17 103/119/17 104/87/17 +f 106/120/16 112/121/16 114/122/16 +f 112/121/16 111/123/16 114/122/16 +f 111/123/16 108/124/16 113/125/16 +f 108/124/16 107/126/16 113/125/16 +f 104/127/16 103/128/16 105/129/16 +f 103/128/16 106/120/16 105/129/16 +f 114/122/16 105/129/16 106/120/16 +f 113/125/16 114/122/16 111/123/16 +f 107/126/16 116/130/16 110/131/16 +f 113/125/16 107/126/16 110/131/16 +f 120/91/16 115/132/16 109/133/16 +f 120/91/16 109/133/16 118/134/16 +f 109/133/16 110/131/16 116/130/16 +f 118/134/16 109/133/16 116/130/16 +f 81/90/16 119/135/16 120/91/16 +f 117/89/16 82/136/16 81/90/16 +f 118/134/16 117/89/16 120/91/16 +s 1 +f 57/137/18 59/81/19 60/97/18 +f 62/138/20 49/92/21 61/139/21 +f 63/140/22 59/81/19 58/141/19 +f 65/142/23 49/92/21 56/78/23 +f 66/143/24 64/98/22 63/140/22 +f 68/144/25 56/78/23 55/77/25 +f 69/145/26 67/82/24 66/143/24 +f 71/146/27 55/77/25 54/96/27 +f 72/147/28 70/99/26 69/145/26 +f 74/148/29 54/96/27 53/95/29 +f 75/149/30 73/100/28 72/147/28 +f 77/150/31 53/95/29 52/79/31 +f 75/149/30 79/80/32 76/101/30 +f 77/150/31 51/94/33 80/151/33 +f 78/152/32 60/97/18 79/80/32 +f 80/151/33 50/93/20 62/138/20 +f 82/153/34 84/154/35 81/155/35 +f 94/156/36 104/157/36 105/158/36 +f 106/159/37 92/86/38 91/160/37 +f 107/161/39 88/162/40 87/163/39 +f 111/164/41 90/165/42 89/166/41 +f 116/167/43 87/163/39 86/168/43 +f 112/169/42 91/160/37 90/165/42 +f 108/170/40 89/166/41 88/162/40 +f 117/171/44 85/172/45 102/173/44 +f 101/174/46 120/175/47 119/176/46 +f 118/177/45 86/168/43 85/172/45 +f 100/178/47 115/179/48 120/175/47 +f 84/154/35 119/176/46 81/155/35 +f 82/153/34 102/173/44 83/180/34 +f 57/137/18 58/141/19 59/81/19 +f 62/138/20 50/93/20 49/92/21 +f 63/140/22 64/98/22 59/81/19 +f 65/142/23 61/139/21 49/92/21 +f 66/143/24 67/82/24 64/98/22 +f 68/144/25 65/142/23 56/78/23 +f 69/145/26 70/99/26 67/82/24 +f 71/146/27 68/144/25 55/77/25 +f 72/147/28 73/100/28 70/99/26 +f 74/148/29 71/146/27 54/96/27 +f 75/149/30 76/101/30 73/100/28 +f 77/150/31 74/148/29 53/95/29 +f 75/149/30 78/152/32 79/80/32 +f 77/150/31 52/79/31 51/94/33 +f 78/152/32 57/137/18 60/97/18 +f 80/151/33 51/94/33 50/93/20 +f 82/153/34 83/180/34 84/154/35 +f 94/156/36 93/181/36 104/157/36 +f 106/159/37 103/119/38 92/86/38 +f 107/161/39 108/170/40 88/162/40 +f 111/164/41 112/169/42 90/165/42 +f 116/167/43 107/161/39 87/163/39 +f 112/169/42 106/159/37 91/160/37 +f 108/170/40 111/164/41 89/166/41 +f 117/171/44 118/177/45 85/172/45 +f 101/174/46 100/178/47 120/175/47 +f 118/177/45 116/167/43 86/168/43 +f 100/178/47 99/182/48 115/179/48 +f 84/154/35 101/174/46 119/176/46 +f 82/153/34 117/171/44 102/173/44 +o Barrel +v 0.731983 1.964559 1.588737 +v 0.731983 2.154102 1.510226 +v 0.731983 2.343645 1.588737 +v 0.731983 2.422156 1.778280 +v 0.731983 2.343645 1.967823 +v 0.731983 2.154102 2.046335 +v 0.731983 1.964559 1.967823 +v 0.731983 1.886048 1.778280 +v -0.634395 2.154102 1.465021 +v -0.634395 1.932595 1.556772 +v -0.731983 1.964559 1.588737 +v -0.731983 2.154102 1.510226 +v 0.634395 1.932594 1.556772 +v 0.634395 2.154102 1.465021 +v -0.634395 1.840843 1.778280 +v -0.731983 1.886048 1.778280 +v 0.634395 1.840843 1.778280 +v -0.634395 1.932595 1.999788 +v -0.731983 1.964559 1.967823 +v 0.634395 1.932594 1.999788 +v -0.634395 2.154102 2.091539 +v -0.731983 2.154102 2.046335 +v 0.634395 2.154102 2.091539 +v -0.634395 2.375610 1.999788 +v -0.731983 2.343645 1.967823 +v 0.634395 2.375610 1.999788 +v -0.634395 2.467361 1.778280 +v -0.731983 2.422156 1.778280 +v 0.634395 2.467361 1.778280 +v -0.634395 2.375610 1.556772 +v -0.731983 2.343645 1.588737 +v 0.634395 2.375610 1.556772 +v -0.480500 5.241631 -2.458135 +v -0.480500 5.241631 2.917163 +v 0.480500 5.241631 2.917163 +v 0.480500 5.241631 -2.458135 +v 1.160030 4.562099 2.917163 +v 1.160029 4.562099 -2.458135 +v 1.160030 3.601100 2.917163 +v 1.160030 3.601100 -2.458135 +v 0.480500 2.921570 2.917163 +v 0.480500 2.921571 -2.458135 +v -0.480500 2.921570 2.917163 +v -0.480500 2.921571 -2.458135 +v -1.160029 3.601100 2.917163 +v -1.160030 3.601100 -2.458135 +v -1.160029 4.562099 2.917163 +v -0.882965 3.571820 2.917163 +v -1.019560 4.081600 2.917163 +v -0.882965 4.591380 2.917163 +v -0.509780 4.964565 2.917163 +v 0.000000 5.101160 2.917163 +v 0.509780 4.964563 2.917163 +v 0.882965 4.591380 2.917163 +v -1.160030 4.562099 -2.458135 +v 0.882965 4.591380 -2.458135 +v 0.509780 4.964565 -2.458135 +v 0.000000 5.101160 -2.458135 +v -0.509780 4.964565 -2.458135 +v -0.882965 4.591380 -2.458135 +v -1.019560 4.081600 -2.458135 +v -0.882965 3.571820 -2.458135 +v 0.000000 5.224927 2.791627 +v 0.000000 5.224926 8.802454 +v 0.437532 5.137895 8.802454 +v 0.437532 5.137897 2.791627 +v 0.808454 4.890054 8.802454 +v 0.808454 4.890055 2.791627 +v 1.056296 4.519132 8.802454 +v 1.056296 4.519133 2.791627 +v 1.143327 4.081600 8.802454 +v 1.143327 4.081600 2.791627 +v 1.056296 3.644067 8.802454 +v 1.056296 3.644068 2.791627 +v 0.808454 3.273145 8.802454 +v 0.808454 3.273145 2.791627 +v 0.437532 3.025303 8.802454 +v 0.437532 3.025304 2.791627 +v 0.000000 2.938272 8.802454 +v 0.000000 2.938273 2.791627 +v -0.437532 3.025303 8.802454 +v -0.437532 3.025304 2.791627 +v -0.808454 3.273145 8.802454 +v -0.808454 3.273145 2.791627 +v -1.056296 3.644067 8.802454 +v -1.056296 3.644068 2.791627 +v -1.143327 4.081600 8.802454 +v -1.143327 4.081600 2.791627 +v -1.056296 4.519132 8.802454 +v -1.056296 4.519133 2.791627 +v -0.808454 4.890054 8.802454 +v -0.808454 4.890055 2.791627 +v -0.437532 5.137895 8.802454 +v -0.882965 3.571820 8.802454 +v -1.019560 4.081600 8.802454 +v -0.882965 4.591379 8.802453 +v -0.509780 4.964563 8.802455 +v 0.000000 5.101159 8.802455 +v 0.509780 4.964563 8.802455 +v 0.882965 4.591380 8.802454 +v -0.437532 5.137897 2.791627 +v -0.509780 3.198636 -2.458135 +v -0.509780 3.198635 2.917163 +v 0.000000 3.062040 2.917163 +v 0.000000 3.062041 -2.458135 +v -0.509780 3.198635 8.802456 +v 0.000000 3.062040 8.802452 +v 0.509780 3.198635 2.917163 +v 0.509780 3.198636 -2.458135 +v 0.509780 3.198635 8.802452 +v 1.019560 4.081600 -2.458135 +v 1.019560 4.081600 2.917163 +v 1.019560 4.081600 8.802454 +v 0.882964 3.571820 -2.458135 +v 0.882965 3.571820 2.917163 +v 0.882965 3.571820 8.802455 +v 0.380419 2.209798 2.878785 +v 0.380419 3.025099 2.869944 +v -0.380419 3.025099 2.869944 +v -0.380419 2.209798 2.878785 +v -0.380419 1.997613 2.520242 +v 0.380419 1.997613 2.520242 +v -0.380419 3.025099 1.369944 +v -0.380419 1.988772 1.369944 +v 0.380419 3.025099 1.369944 +v 0.380419 1.988772 1.369944 +vt 0.303068 0.499090 +vt 0.305662 0.507436 +vt 0.299402 0.510894 +vt 0.311900 0.502596 +vt 0.314444 0.499204 +vt 0.318042 0.510786 +vt 0.402500 0.900000 +vt 0.295000 0.926666 +vt 0.295000 0.900000 +vt 0.402500 0.926666 +vt 0.295000 0.953334 +vt 0.402500 0.740000 +vt 0.295000 0.766666 +vt 0.295000 0.740000 +vt 0.402500 0.766666 +vt 0.295000 0.793334 +vt 0.402500 0.793334 +vt 0.295000 0.820000 +vt 0.402500 0.820000 +vt 0.295000 0.846666 +vt 0.224086 0.536286 +vt 0.223498 0.528860 +vt 0.233744 0.532522 +vt 0.402500 0.846666 +vt 0.295000 0.873334 +vt 0.402500 0.873334 +vt 0.374172 0.391588 +vt 0.373584 0.384172 +vt 0.387224 0.402360 +vt 0.369048 0.457912 +vt 0.358566 0.456996 +vt 0.366964 0.453774 +vt 0.243990 0.481534 +vt 0.233744 0.477874 +vt 0.243402 0.474110 +vt 0.356002 0.509156 +vt 0.366484 0.510072 +vt 0.358086 0.513292 +vt 0.346214 0.428866 +vt 0.354292 0.446270 +vt 0.340652 0.428082 +vt 0.040000 0.806666 +vt 0.055000 0.786667 +vt 0.055000 0.806666 +vt 0.060000 0.806666 +vt 0.060000 0.786667 +vt 0.077500 0.920000 +vt 0.077500 0.893334 +vt 0.100000 0.893334 +vt 0.032500 0.920000 +vt 0.032500 0.900000 +vt 0.040000 0.893334 +vt 0.080000 0.806666 +vt 0.305662 0.502548 +vt 0.303068 0.510894 +vt 0.296808 0.507436 +vt 0.296808 0.502548 +vt 0.299402 0.499090 +vt 0.318042 0.499204 +vt 0.320586 0.502596 +vt 0.320586 0.507394 +vt 0.314444 0.510786 +vt 0.311900 0.507394 +vt 0.402500 0.953334 +vt 0.210428 0.518074 +vt 0.210428 0.492320 +vt 0.213252 0.505198 +vt 0.215996 0.491536 +vt 0.251490 0.518860 +vt 0.257060 0.518074 +vt 0.243402 0.536286 +vt 0.243990 0.528860 +vt 0.215996 0.518860 +vt 0.387224 0.428082 +vt 0.373584 0.446270 +vt 0.374172 0.438854 +vt 0.381662 0.428866 +vt 0.353704 0.391588 +vt 0.354292 0.384172 +vt 0.363938 0.387932 +vt 0.384404 0.415222 +vt 0.381662 0.401578 +vt 0.343604 0.466676 +vt 0.349882 0.458304 +vt 0.349144 0.463190 +vt 0.358086 0.453774 +vt 0.375168 0.458304 +vt 0.381446 0.466676 +vt 0.377782 0.465694 +vt 0.384844 0.477614 +vt 0.382428 0.478254 +vt 0.384844 0.489452 +vt 0.381742 0.492230 +vt 0.343308 0.474836 +vt 0.340206 0.477614 +vt 0.257060 0.492320 +vt 0.254236 0.505198 +vt 0.223498 0.481534 +vt 0.224086 0.474110 +vt 0.251490 0.491536 +vt 0.340206 0.489452 +vt 0.342622 0.488812 +vt 0.349882 0.508762 +vt 0.343604 0.500390 +vt 0.347268 0.501374 +vt 0.366964 0.513292 +vt 0.381446 0.500390 +vt 0.375168 0.508762 +vt 0.375906 0.503876 +vt 0.340652 0.402360 +vt 0.346214 0.401578 +vt 0.363938 0.442510 +vt 0.343472 0.415222 +vt 0.353704 0.438854 +vt 0.040000 0.786667 +vt 0.107500 0.900000 +vt 0.107500 0.920000 +vt 0.062500 0.893334 +vt 0.062500 0.920000 +vt 0.080000 0.786667 +vt 0.322118 0.501128 +vt 0.319144 0.497162 +vt 0.307558 0.507848 +vt 0.307558 0.502136 +vt 0.322448 0.507798 +vt 0.322448 0.502192 +vt 0.304192 0.497010 +vt 0.322118 0.508864 +vt 0.303378 0.496560 +vt 0.299092 0.496560 +vt 0.318346 0.513268 +vt 0.295248 0.501050 +vt 0.313342 0.512828 +vt 0.294912 0.502136 +vt 0.294912 0.507848 +vt 0.310038 0.502192 +vt 0.310038 0.507798 +vt 0.298278 0.512974 +vt 0.310368 0.501128 +vt 0.299092 0.513422 +vt 0.303378 0.513422 +vt 0.318346 0.496722 +vt 0.314140 0.496722 +vt 0.307222 0.508934 +vt 0.290000 0.913334 +vt 0.170000 0.926666 +vt 0.170000 0.913334 +vt 0.290000 0.926666 +vt 0.170000 0.940000 +vt 0.290000 0.940000 +vt 0.170000 0.953334 +vt 0.290000 0.740000 +vt 0.170000 0.753334 +vt 0.170000 0.740000 +vt 0.290000 0.753334 +vt 0.170000 0.766666 +vt 0.290000 0.766666 +vt 0.170000 0.780000 +vt 0.290000 0.780000 +vt 0.170000 0.793334 +vt 0.290000 0.793334 +vt 0.170000 0.806666 +vt 0.290000 0.806666 +vt 0.170000 0.820000 +vt 0.290000 0.820000 +vt 0.170000 0.833334 +vt 0.290000 0.833334 +vt 0.170000 0.846666 +vt 0.290000 0.846666 +vt 0.170000 0.860000 +vt 0.290000 0.860000 +vt 0.170000 0.873334 +vt 0.290000 0.873334 +vt 0.170000 0.886666 +vt 0.290000 0.886666 +vt 0.170000 0.900000 +vt 0.290000 0.900000 +vt 0.295000 0.610000 +vt 0.402500 0.596666 +vt 0.402500 0.610000 +vt 0.290000 0.610000 +vt 0.172500 0.596666 +vt 0.290000 0.596666 +vt 0.295000 0.596666 +vt 0.402500 0.583334 +vt 0.290000 0.583334 +vt 0.295000 0.556666 +vt 0.402500 0.543334 +vt 0.402500 0.556666 +vt 0.172500 0.556666 +vt 0.290000 0.543334 +vt 0.290000 0.556666 +vt 0.295000 0.623334 +vt 0.402500 0.623334 +vt 0.172500 0.623334 +vt 0.290000 0.623334 +vt 0.402500 0.570000 +vt 0.172500 0.570000 +vt 0.290000 0.570000 +vt 0.295000 0.636666 +vt 0.402500 0.636666 +vt 0.172500 0.636666 +vt 0.290000 0.636666 +vt 0.295000 0.650000 +vt 0.402500 0.650000 +vt 0.172500 0.650000 +vt 0.290000 0.650000 +vt 0.295000 0.663334 +vt 0.402500 0.663334 +vt 0.290000 0.663334 +vt 0.295000 0.690000 +vt 0.402500 0.676666 +vt 0.402500 0.690000 +vt 0.172500 0.690000 +vt 0.290000 0.676666 +vt 0.290000 0.690000 +vt 0.295000 0.676666 +vt 0.172500 0.676666 +vt 0.295000 0.703334 +vt 0.402500 0.703334 +vt 0.172500 0.703334 +vt 0.290000 0.703334 +vt 0.295000 0.583334 +vt 0.172500 0.583334 +vt 0.307222 0.501050 +vt 0.319144 0.512828 +vt 0.314140 0.513268 +vt 0.298278 0.497010 +vt 0.310368 0.508864 +vt 0.295248 0.508934 +vt 0.313342 0.497164 +vt 0.304192 0.512974 +vt 0.290000 0.953334 +vt 0.172500 0.610000 +vt 0.295000 0.543334 +vt 0.172500 0.543334 +vt 0.295000 0.570000 +vt 0.172500 0.663334 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 -1.0000 -0.0000 +vn -0.7071 -0.7071 -0.0000 +vn -0.0000 0.0000 1.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0108 0.9999 +vn 0.0000 -0.8606 0.5093 +vn 0.0000 -1.0000 0.0077 +vn -0.4203 -0.6416 -0.6416 +vn -0.4203 0.0000 -0.9074 +vn 0.4203 0.0000 -0.9074 +vn 0.4203 -0.6416 -0.6416 +vn -0.4203 -0.9074 0.0000 +vn 0.4203 -0.9074 0.0000 +vn -0.4203 -0.6416 0.6416 +vn 0.4203 -0.6416 0.6416 +vn -0.4203 0.0000 0.9074 +vn 0.4203 0.0000 0.9074 +vn -0.4203 0.6416 0.6416 +vn 0.4203 0.6416 0.6416 +vn -0.4203 0.9074 0.0000 +vn 0.4203 0.9074 0.0000 +vn -0.4203 0.6416 -0.6416 +vn 0.4203 0.6416 -0.6416 +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.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.5000 0.8660 0.0000 +vn -0.5000 0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.8660 0.5000 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.5000 -0.8660 -0.0000 +s off +f 128/183/49 122/184/49 124/185/49 +f 148/186/50 151/187/50 139/188/50 +f 154/189/51 156/190/51 153/191/51 +f 155/192/52 158/193/52 156/190/52 +f 157/194/49 160/195/49 158/196/49 +f 159/197/53 162/198/53 160/195/53 +f 161/199/54 164/200/54 162/198/54 +f 163/201/55 166/202/55 164/200/55 +f 154/203/56 171/204/56 172/205/56 +f 165/206/50 175/207/50 166/202/50 +f 167/208/57 153/191/57 175/207/57 +f 180/209/58 175/210/58 153/211/58 +f 217/212/56 218/213/56 213/214/56 +f 228/215/56 224/216/56 161/217/56 +f 230/218/56 227/219/56 197/220/56 +f 229/221/58 160/222/58 162/223/58 +f 238/224/59 240/225/59 237/226/59 +f 242/227/60 240/225/60 241/228/60 +f 243/229/50 244/230/50 241/231/50 +f 238/232/49 237/233/49 242/234/49 +f 241/228/61 246/235/61 242/227/61 +f 128/183/49 121/236/49 122/184/49 +f 122/184/49 123/237/49 124/185/49 +f 124/185/49 125/238/49 128/183/49 +f 125/238/49 126/239/49 128/183/49 +f 126/239/49 127/240/49 128/183/49 +f 151/187/50 132/241/50 139/188/50 +f 132/241/50 131/242/50 139/188/50 +f 131/242/50 136/243/50 139/188/50 +f 139/188/50 142/244/50 145/245/50 +f 145/245/50 148/186/50 139/188/50 +f 154/189/51 155/192/51 156/190/51 +f 155/192/52 157/246/52 158/193/52 +f 157/194/49 159/197/49 160/195/49 +f 159/197/53 161/199/53 162/198/53 +f 161/199/54 163/201/54 164/200/54 +f 163/201/55 165/206/55 166/202/55 +f 167/247/56 165/248/56 169/249/56 +f 165/248/56 168/250/56 169/249/56 +f 174/251/56 157/252/56 155/253/56 +f 173/254/56 174/251/56 155/253/56 +f 167/247/56 169/249/56 170/255/56 +f 167/247/56 170/255/56 154/203/56 +f 170/255/56 171/204/56 154/203/56 +f 173/254/56 155/253/56 172/205/56 +f 155/253/56 154/203/56 172/205/56 +f 165/206/50 167/208/50 175/207/50 +f 167/208/57 154/189/57 153/191/57 +f 156/256/58 158/257/58 176/258/58 +f 156/256/58 176/258/58 177/259/58 +f 182/260/58 166/261/58 181/262/58 +f 166/261/58 175/210/58 181/262/58 +f 153/211/58 156/256/58 178/263/58 +f 156/256/58 177/259/58 178/263/58 +f 180/209/58 181/262/58 175/210/58 +f 153/211/58 178/263/58 179/264/58 +f 179/264/58 180/209/58 153/211/58 +f 187/265/56 185/266/56 219/267/56 +f 185/266/56 184/268/56 218/213/56 +f 219/267/56 185/266/56 218/213/56 +f 184/268/56 213/214/56 218/213/56 +f 213/214/56 211/269/56 217/212/56 +f 211/269/56 209/270/56 216/271/56 +f 209/270/56 207/272/56 215/273/56 +f 207/272/56 205/274/56 215/273/56 +f 205/274/56 214/275/56 215/273/56 +f 220/276/56 189/277/56 187/265/56 +f 219/267/56 220/276/56 187/265/56 +f 209/270/56 215/273/56 216/271/56 +f 211/269/56 216/271/56 217/212/56 +f 159/278/56 157/252/56 232/279/56 +f 157/252/56 174/251/56 232/279/56 +f 168/250/56 165/248/56 223/280/56 +f 165/248/56 163/281/56 223/280/56 +f 159/278/56 232/279/56 235/282/56 +f 159/278/56 235/282/56 228/215/56 +f 223/280/56 163/281/56 224/216/56 +f 163/281/56 161/217/56 224/216/56 +f 161/217/56 159/278/56 228/215/56 +f 191/283/56 189/277/56 233/284/56 +f 189/277/56 220/276/56 233/284/56 +f 195/285/56 193/286/56 236/287/56 +f 193/286/56 191/283/56 233/284/56 +f 199/288/56 197/220/56 227/219/56 +f 197/220/56 195/285/56 230/218/56 +f 203/289/56 201/290/56 226/291/56 +f 201/290/56 199/288/56 227/219/56 +f 226/291/56 201/290/56 227/219/56 +f 214/275/56 205/274/56 203/289/56 +f 226/291/56 214/275/56 203/289/56 +f 193/286/56 233/284/56 236/287/56 +f 195/285/56 236/287/56 230/218/56 +f 164/292/58 166/261/58 182/260/58 +f 164/292/58 182/260/58 222/293/58 +f 176/258/58 158/257/58 231/294/58 +f 158/257/58 160/222/58 231/294/58 +f 162/223/58 164/292/58 225/295/58 +f 164/292/58 222/293/58 225/295/58 +f 234/296/58 231/294/58 160/222/58 +f 162/223/58 225/295/58 229/221/58 +f 229/221/58 234/296/58 160/222/58 +f 238/224/59 239/297/59 240/225/59 +f 242/227/60 237/226/60 240/225/60 +f 240/298/50 239/299/50 241/231/50 +f 239/299/50 243/229/50 241/231/50 +f 246/300/49 245/301/49 242/234/49 +f 245/301/49 238/232/49 242/234/49 +f 241/228/61 244/302/61 246/235/61 +s 1 +f 130/303/62 132/241/63 129/304/63 +f 134/305/64 121/236/65 133/306/65 +f 135/307/66 131/242/62 130/308/62 +f 137/309/67 121/236/65 128/183/67 +f 135/310/66 139/188/68 136/243/66 +f 137/311/67 127/240/69 140/312/69 +f 138/313/68 142/244/70 139/188/68 +f 143/314/71 127/240/69 126/239/71 +f 141/315/70 145/245/72 142/244/70 +f 143/316/71 125/238/73 146/317/73 +f 147/318/74 145/245/72 144/319/72 +f 149/320/75 125/238/73 124/185/75 +f 147/321/74 151/187/76 148/186/74 +f 149/322/75 123/237/77 152/323/77 +f 129/324/63 151/187/76 150/325/76 +f 134/326/64 123/237/77 122/184/64 +f 184/327/51 186/328/78 183/329/51 +f 185/330/78 188/331/52 186/328/78 +f 187/332/52 190/333/79 188/331/52 +f 189/334/79 192/335/49 190/336/79 +f 191/337/49 194/338/80 192/335/49 +f 193/339/80 196/340/53 194/338/80 +f 195/341/53 198/342/81 196/340/53 +f 197/343/81 200/344/54 198/342/81 +f 199/345/54 202/346/82 200/344/54 +f 201/347/82 204/348/55 202/346/82 +f 203/349/55 206/350/83 204/348/55 +f 205/351/83 208/352/50 206/350/83 +f 207/353/50 210/354/84 208/352/50 +f 209/355/84 212/356/57 210/354/84 +f 211/357/57 221/358/85 212/356/57 +f 213/359/85 183/329/51 221/358/85 +f 223/360/86 225/361/51 222/362/86 +f 223/363/86 227/364/51 224/365/51 +f 224/366/51 229/367/87 225/361/51 +f 227/364/51 228/368/87 224/365/51 +f 232/369/50 176/370/88 231/371/50 +f 233/372/50 174/373/88 232/374/50 +f 168/375/89 222/362/86 182/376/89 +f 214/377/89 223/363/86 168/378/89 +f 234/379/90 232/369/50 231/371/50 +f 236/380/90 232/374/50 235/381/90 +f 169/382/49 182/376/89 181/383/49 +f 215/384/49 168/378/89 169/385/49 +f 170/386/91 181/383/49 180/387/91 +f 216/388/91 169/385/49 170/389/91 +f 171/390/92 180/387/91 179/391/92 +f 171/392/92 216/388/91 170/389/91 +f 173/393/93 178/394/54 177/395/93 +f 219/396/93 172/397/54 173/398/93 +f 172/399/54 179/391/92 178/394/54 +f 218/400/54 171/392/92 172/397/54 +f 174/401/88 177/395/93 176/402/88 +f 220/403/88 173/398/93 174/404/88 +f 228/405/87 234/379/90 229/367/87 +f 230/406/87 235/381/90 228/368/87 +f 130/303/62 131/242/62 132/241/63 +f 134/305/64 122/184/64 121/236/65 +f 135/307/66 136/243/66 131/242/62 +f 137/309/67 133/407/65 121/236/65 +f 135/310/66 138/408/68 139/188/68 +f 137/311/67 128/183/67 127/240/69 +f 138/313/68 141/409/70 142/244/70 +f 143/314/71 140/410/69 127/240/69 +f 141/315/70 144/411/72 145/245/72 +f 143/316/71 126/239/71 125/238/73 +f 147/318/74 148/186/74 145/245/72 +f 149/320/75 146/412/73 125/238/73 +f 147/321/74 150/413/76 151/187/76 +f 149/322/75 124/185/75 123/237/77 +f 129/324/63 132/241/63 151/187/76 +f 134/326/64 152/414/77 123/237/77 +f 184/327/51 185/330/78 186/328/78 +f 185/330/78 187/332/52 188/331/52 +f 187/332/52 189/415/79 190/333/79 +f 189/334/79 191/337/49 192/335/49 +f 191/337/49 193/339/80 194/338/80 +f 193/339/80 195/341/53 196/340/53 +f 195/341/53 197/343/81 198/342/81 +f 197/343/81 199/345/54 200/344/54 +f 199/345/54 201/347/82 202/346/82 +f 201/347/82 203/349/55 204/348/55 +f 203/349/55 205/351/83 206/350/83 +f 205/351/83 207/353/50 208/352/50 +f 207/353/50 209/355/84 210/354/84 +f 209/355/84 211/357/57 212/356/57 +f 211/357/57 213/359/85 221/358/85 +f 213/359/85 184/327/51 183/329/51 +f 223/360/86 224/366/51 225/361/51 +f 223/363/86 226/416/86 227/364/51 +f 224/366/51 228/405/87 229/367/87 +f 227/364/51 230/406/87 228/368/87 +f 232/369/50 174/417/88 176/370/88 +f 233/372/50 220/418/88 174/373/88 +f 168/375/89 223/360/86 222/362/86 +f 214/377/89 226/416/86 223/363/86 +f 234/379/90 235/419/90 232/369/50 +f 236/380/90 233/372/50 232/374/50 +f 169/382/49 168/375/89 182/376/89 +f 215/384/49 214/377/89 168/378/89 +f 170/386/91 169/382/49 181/383/49 +f 216/388/91 215/384/49 169/385/49 +f 171/390/92 170/386/91 180/387/91 +f 171/392/92 217/420/92 216/388/91 +f 173/393/93 172/399/54 178/394/54 +f 219/396/93 218/400/54 172/397/54 +f 172/399/54 171/390/92 179/391/92 +f 218/400/54 217/420/92 171/392/92 +f 174/401/88 173/393/93 177/395/93 +f 220/403/88 219/396/93 173/398/93 +f 228/405/87 235/419/90 234/379/90 +f 230/406/87 236/380/90 235/381/90 +o Gun +v 0.513393 3.167058 -2.968280 +v 0.000000 3.026850 -2.968280 +v 0.000000 3.026850 2.166241 +v 0.412401 3.137352 1.926816 +v 0.518167 3.171832 1.672396 +v -0.513393 3.167058 -2.968280 +v -0.518167 3.171832 1.672396 +v -0.412401 3.137352 1.926816 +v 0.648125 2.914532 2.325881 +v -0.648125 2.914532 2.325881 +v -0.648125 2.694242 2.477893 +v 0.648125 2.694242 2.477893 +v 0.648125 3.202249 -2.603896 +v 0.648125 3.207023 1.672396 +v 0.648125 3.172543 1.926816 +v 0.648125 3.087669 2.138505 +v 0.648125 1.827062 2.466587 +v 0.648125 1.827062 -3.371653 +v 0.648125 3.202249 -3.373368 +v -0.648125 3.202249 -3.373368 +v -0.648125 3.202249 -2.603896 +v -0.648125 3.482961 -2.583913 +v -0.648125 3.482961 -3.353385 +v 0.410225 1.557572 2.449717 +v -0.648125 1.827062 2.466587 +v -0.410225 1.557569 2.449717 +v -0.648125 3.087669 2.138505 +v -0.648125 3.172543 1.926816 +v -0.648125 3.207023 1.672396 +v 1.038337 -3.794194 -8.814981 +v 1.038337 -3.162951 -8.684003 +v 1.038337 -2.579798 -8.560258 +v 1.038337 -1.996350 -8.402351 +v 1.038337 -1.120453 -8.045218 +v 1.038337 -0.091451 -7.476527 +v 1.038337 0.441162 -7.089207 +v 1.038337 1.112446 -6.400294 +v 1.038337 1.220466 -6.142394 +v 1.038337 1.005753 -5.478510 +v 1.038337 0.750945 -5.306003 +v 1.038337 0.223651 -5.215686 +v 1.038337 -0.101480 -5.453102 +v 1.038337 -0.769097 -5.873155 +v 1.038337 -1.364660 -6.016363 +v 1.038337 -2.303804 -6.153728 +v 1.038337 -3.304539 -6.180392 +v 1.038337 -4.531919 -6.132348 +v 1.038337 -5.079535 -6.119195 +v 1.038337 -5.072083 -8.828292 +v 1.038337 -4.355278 -8.863739 +v 0.677363 -5.419761 -5.771656 +v 0.677363 -4.520823 -5.793253 +v -0.677363 -4.520823 -5.793253 +v -0.677363 -5.419761 -5.771656 +v -0.677363 -5.410460 -9.151239 +v -0.677363 -4.348941 -9.203733 +v 0.677363 -4.348941 -9.203733 +v 0.677363 -5.410460 -9.151239 +v 0.677363 -1.429002 -5.682898 +v 0.677363 -0.902601 -5.556320 +v -0.677363 -0.902601 -5.556320 +v -0.677363 -1.429002 -5.682898 +v -0.677363 -3.744874 -9.151239 +v -0.677363 -3.093311 -9.016046 +v 0.677363 -3.093311 -9.016046 +v 0.677363 -3.744874 -9.151239 +v 0.677363 -3.302420 -5.840949 +v 0.677363 -2.332974 -5.815118 +v -0.677363 -2.332974 -5.815118 +v -0.677363 -3.302420 -5.840949 +v 0.677363 -0.294467 -5.173693 +v -0.677363 -0.294467 -5.173693 +v 0.677363 0.173305 -4.878585 +v -0.677363 0.173305 -4.878585 +v -0.677363 -2.500212 -8.890191 +v 0.677363 -2.500212 -8.890191 +v -0.677363 -1.887578 -8.724384 +v 0.677363 -1.887578 -8.724384 +v -0.677363 -0.973846 -8.351825 +v -0.677363 0.091069 -7.763287 +v 0.677363 0.091069 -7.763287 +v 0.677363 -0.973846 -8.351825 +v -0.677363 0.664022 -7.346631 +v 0.677363 0.664022 -7.346631 +v -0.677363 1.400451 -6.590861 +v 0.677363 1.400451 -6.590861 +v -1.038337 -5.079535 -6.119195 +v -1.038337 -5.072083 -8.828292 +v -0.677363 0.881192 -4.984477 +v -0.677363 1.292630 -5.263024 +v -1.038337 1.005753 -5.478510 +v -1.038337 0.750945 -5.306003 +v -0.677363 1.581939 -6.157557 +v -1.038337 1.220466 -6.142394 +v -1.038337 -4.355278 -8.863739 +v 0.677363 1.581939 -6.157557 +v 0.677363 1.292630 -5.263024 +v -1.038337 -1.364660 -6.016363 +v -1.038337 -2.303804 -6.153728 +v -1.038337 -2.579798 -8.560258 +v -1.038337 -1.996350 -8.402351 +v -1.038337 -3.794194 -8.814981 +v -1.038337 -3.162951 -8.684003 +v -1.038337 -3.304539 -6.180392 +v -1.038337 -4.531919 -6.132348 +v -1.038337 -0.101480 -5.453102 +v -1.038337 -0.769097 -5.873155 +v -1.038337 -1.120453 -8.045218 +v -1.038337 -0.091451 -7.476527 +v -1.038337 0.223651 -5.215686 +v -1.038337 0.441162 -7.089207 +v -1.038337 1.112446 -6.400294 +v 0.677363 0.881192 -4.984477 +v -0.388087 0.378275 -0.541007 +v -0.388087 0.538445 -0.691282 +v 0.388087 0.538445 -0.691282 +v 0.388087 0.378275 -0.541007 +v 0.388087 0.263531 0.761497 +v 0.388087 0.549235 0.902510 +v -0.388087 0.549235 0.902510 +v -0.388087 0.263531 0.761497 +v -0.388087 -3.282760 -2.259867 +v 0.388087 -3.282760 -2.259867 +v 0.388087 -3.416696 -2.107284 +v -0.388087 -3.416696 -2.107284 +v 0.388087 -2.115547 -1.510431 +v 0.388087 -2.036536 -0.519215 +v -0.388087 -2.036536 -0.519215 +v -0.388087 -2.115547 -1.510431 +v -0.388087 -2.019589 -1.905299 +v -0.388087 -1.845016 -1.572362 +v 0.388087 -1.845016 -1.572362 +v 0.388087 -2.019589 -1.905299 +v -0.388087 -2.824581 -2.298897 +v -0.388087 -2.254520 -2.104208 +v 0.388087 -2.254520 -2.104208 +v 0.388087 -2.824581 -2.298897 +v 0.388087 -2.749647 -2.086469 +v 0.388087 -2.339508 -1.897398 +v -0.388087 -2.339508 -1.897398 +v -0.388087 -2.749647 -2.086469 +v 0.388087 -1.052225 0.501511 +v 0.388087 -0.560944 0.588307 +v -0.388087 -0.560944 0.588307 +v -0.388087 -1.052225 0.501511 +v -0.388087 -1.284873 0.069368 +v -0.388087 -0.821706 0.217083 +v 0.388087 -0.821706 0.217083 +v 0.388087 -1.284873 0.069368 +v -0.388087 -1.788417 -0.845057 +v 0.388087 -1.788417 -0.845057 +v 0.388087 -1.766717 0.022973 +v -0.388087 -1.766717 0.022973 +v 0.388087 -0.334531 0.625094 +v 0.388087 0.005006 0.677293 +v -0.388087 0.005006 0.677293 +v -0.388087 -0.334531 0.625094 +v -0.388087 -0.356680 0.194787 +v -0.388087 0.002437 0.021986 +v 0.388087 0.002437 0.021986 +v 0.388087 -0.356680 0.194787 +v -0.388087 -1.615613 -0.248490 +v -0.388087 -1.423407 0.304049 +v 0.388087 -1.615613 -0.248490 +v 0.388087 -1.423407 0.304049 +v -0.334293 -1.549449 -2.555341 +v -0.334293 -1.287187 -2.738739 +v -0.334293 -0.766452 -2.910610 +v -0.334293 -0.399781 -2.891256 +v -0.334293 -0.115175 -2.859514 +v -0.334293 0.168657 -2.706223 +v -0.334293 0.588200 -2.184493 +v -0.334293 0.282394 -3.889986 +v -0.334293 -0.106957 -3.400619 +v -0.334293 -0.356724 -3.225651 +v -0.334293 -0.736246 -3.153187 +v -0.334293 -1.159743 -2.994812 +v -0.334293 -1.539680 -2.799144 +v -0.334293 -1.754503 -2.595457 +v -0.334293 -1.929948 -2.254812 +v -0.339648 -2.024864 -1.896991 +v -0.339648 -1.896961 -1.579169 +v -0.334293 -1.813819 -2.175126 +v 0.334293 0.282394 -3.889986 +v 0.334293 -0.106957 -3.400619 +v 0.334293 0.168657 -2.706223 +v 0.334293 0.588200 -2.184493 +v 0.334293 -1.287187 -2.738739 +v 0.334293 -0.766452 -2.910610 +v 0.334293 -1.159743 -2.994812 +v 0.334293 -1.539680 -2.799144 +v 0.334293 -1.754503 -2.595457 +v 0.334293 -1.929948 -2.254812 +v 0.334293 -0.736246 -3.153187 +v 0.334293 -0.356724 -3.225651 +v 0.334293 -0.115175 -2.859514 +v 0.334293 -0.399781 -2.891256 +v 0.334293 -1.549449 -2.555341 +v 0.334293 -1.813819 -2.175126 +v 0.328939 -1.896961 -1.579169 +v 0.328939 -2.024864 -1.896991 +v -0.677363 4.127562 -4.010149 +v -0.677363 4.243626 -3.549657 +v 0.677363 4.243626 -3.549657 +v 0.677363 4.127562 -4.010149 +v -0.677363 4.582104 -3.283700 +v 0.677363 4.582104 -3.283700 +v -0.677363 2.640762 -6.548580 +v -0.677363 2.737251 -6.208553 +v 0.677363 2.737251 -6.208553 +v 0.677363 2.640762 -6.548580 +v -0.677363 2.014416 -6.783812 +v -0.677363 2.238806 -6.763745 +v 0.677363 2.238806 -6.763745 +v 0.677363 2.014416 -6.783812 +v -0.677363 3.424877 -5.697894 +v -0.677363 3.656194 -5.417248 +v 0.677363 3.656194 -5.417248 +v 0.677363 3.424877 -5.697894 +v -0.677363 3.870349 -5.088138 +v -0.677363 4.091084 -4.470795 +v 0.677363 4.091084 -4.470795 +v 0.677363 3.870349 -5.088138 +v -0.677363 2.497756 -6.693510 +v 0.677363 2.497756 -6.693510 +v -0.677363 0.283971 -3.279829 +v 0.677363 0.283971 -3.279829 +v -0.677363 1.474082 -6.850760 +v -0.677363 1.751935 -6.791059 +v 0.677363 1.751935 -6.791059 +v 0.677363 1.474082 -6.850760 +v -0.677363 1.300423 -6.918651 +v 0.677363 1.300423 -6.918651 +v 0.677363 0.288958 -4.369509 +v -0.677363 0.288958 -4.369509 +v 0.677363 0.183064 -4.636606 +v -0.677363 0.183064 -4.636606 +v 0.677363 -0.094873 -5.054910 +v 0.677363 0.938536 -7.024597 +v -0.677363 0.938536 -7.024597 +v -0.677363 -0.094873 -5.054910 +v -0.410225 1.557572 -3.367706 +v -0.410225 0.363872 -4.767666 +v -0.410225 0.088182 -3.011839 +v -0.410225 0.346088 -2.547045 +v -0.410225 0.370646 -2.111420 +v -0.410225 0.490531 -1.718697 +v -0.410225 0.536416 0.879805 +v -0.410225 1.060247 2.159820 +v -0.410225 1.224972 2.278783 +v 0.410225 1.224972 2.278783 +v 0.410225 0.370646 -2.111420 +v 0.410225 0.490531 -1.718697 +v 0.410225 0.088182 -3.011839 +v 0.410225 0.346088 -2.547045 +v 0.410225 0.363872 -4.767666 +v 0.410225 1.557572 -3.367706 +v 0.410225 1.060247 2.159820 +v 0.410225 0.536416 0.879805 +v 0.165776 0.293496 -1.893382 +v 0.165776 0.680617 -1.761686 +v -0.165974 0.680617 -1.761686 +v -0.165974 0.293496 -1.893382 +v -0.165974 -1.314300 -1.864868 +v 0.165776 -1.314300 -1.864868 +v 0.165776 -1.503054 -1.310113 +v -0.165974 -1.503054 -1.310113 +v 0.165776 -0.933038 -1.695922 +v 0.165776 -0.526778 -1.857364 +v -0.165974 -0.526778 -1.857364 +v -0.165974 -0.933038 -1.695922 +v -0.165974 -0.802843 -2.222122 +v -0.165974 -0.354921 -2.352316 +v 0.165776 -0.354921 -2.352316 +v 0.165776 -0.802843 -2.222122 +v 0.165776 -0.071044 -1.902498 +v -0.165974 -0.071044 -1.902498 +v -0.165974 0.129456 -2.466887 +v 0.165776 0.129456 -2.466887 +v -0.165974 0.697671 -2.080118 +v -0.165974 0.361592 -2.371173 +v 0.165776 0.361592 -2.371173 +v 0.165776 0.697671 -2.080118 +v -1.216637 4.585567 -2.907501 +v -1.216637 4.585567 -2.368979 +v -0.503948 5.298257 -2.368979 +v -0.503948 5.298257 -2.907501 +v 1.216637 4.585567 -2.907501 +v 1.216637 4.585567 -2.368979 +v 1.216637 3.577672 -2.368979 +v 1.216637 3.577672 -2.907501 +v 0.503948 2.864983 -2.368979 +v 0.503948 2.864983 -2.907501 +v -0.503947 2.864983 -2.907501 +v -0.503947 2.864983 -2.368979 +v -1.216637 3.577672 -2.368979 +v -1.216637 3.577672 -2.907501 +v 0.503947 5.298257 -2.368979 +v 0.503947 5.298257 -2.907501 +v 0.370304 4.975613 -3.279490 +v -0.370304 4.975613 -3.279490 +v 0.893993 4.451924 -3.279490 +v 0.893993 3.711316 -3.279490 +v 0.370304 3.187627 -3.279490 +v -0.893993 3.711316 -3.279490 +v -0.370304 3.187627 -3.279490 +v -0.893993 4.451924 -3.279490 +v 0.648125 3.482961 -3.353385 +v 0.648125 3.482961 -2.583913 +v -0.648125 1.827062 -3.371653 +vt 0.336992 0.270342 +vt 0.255266 0.273654 +vt 0.255266 0.270342 +vt 0.614566 0.346798 +vt 0.614596 0.379886 +vt 0.600710 0.379886 +vt 0.465000 0.643334 +vt 0.480000 0.636666 +vt 0.480000 0.643334 +vt 0.255266 0.300062 +vt 0.336992 0.303374 +vt 0.255266 0.303374 +vt 0.600214 0.487836 +vt 0.601098 0.500080 +vt 0.595040 0.491676 +vt 0.503148 0.512132 +vt 0.503584 0.524246 +vt 0.495896 0.518924 +vt 0.096596 0.379962 +vt 0.093018 0.386784 +vt 0.091840 0.380216 +vt 0.070000 0.743334 +vt 0.057500 0.726666 +vt 0.070000 0.726666 +vt 0.070000 0.700000 +vt 0.057500 0.683334 +vt 0.070000 0.683334 +vt 0.053524 0.411332 +vt 0.046216 0.417760 +vt 0.046848 0.410186 +vt 0.070000 0.676666 +vt 0.057500 0.663334 +vt 0.070000 0.663334 +vt 0.070000 0.716666 +vt 0.057500 0.710000 +vt 0.070000 0.710000 +vt 0.070000 0.646666 +vt 0.057500 0.646666 +vt 0.057500 0.676666 +vt 0.057500 0.700000 +vt 0.057500 0.716666 +vt 0.512500 0.690000 +vt 0.540000 0.800000 +vt 0.512500 0.800000 +vt 0.757830 0.629988 +vt 0.796914 0.668008 +vt 0.786324 0.691844 +vt 0.816062 0.674308 +vt 0.815928 0.668042 +vt 0.826376 0.691556 +vt 0.568242 0.229558 +vt 0.611622 0.230578 +vt 0.540712 0.253308 +vt 0.487500 0.780000 +vt 0.470000 0.793334 +vt 0.470000 0.780000 +vt 0.487500 0.756666 +vt 0.470000 0.770000 +vt 0.470000 0.756666 +vt 0.487500 0.710000 +vt 0.470000 0.710000 +vt 0.599684 0.311164 +vt 0.608072 0.304958 +vt 0.614494 0.340312 +vt 0.487500 0.770000 +vt 0.007500 0.690000 +vt 0.015000 0.700000 +vt 0.007500 0.700000 +vt 0.007500 0.770000 +vt 0.015000 0.753334 +vt 0.015000 0.770000 +vt 0.007500 0.723334 +vt 0.015000 0.736666 +vt 0.007500 0.736666 +vt 0.015000 0.800000 +vt 0.007500 0.786666 +vt 0.015000 0.786666 +vt 0.007500 0.710000 +vt 0.015000 0.723334 +vt 0.015000 0.813334 +vt 0.007500 0.800000 +vt 0.047414 0.461680 +vt 0.057378 0.458394 +vt 0.054322 0.468652 +vt 0.027954 0.468120 +vt 0.024942 0.458008 +vt 0.034762 0.461248 +vt 0.007500 0.753334 +vt 0.015000 0.710000 +vt 0.015000 0.820000 +vt 0.007500 0.813334 +vt 0.117500 0.613333 +vt 0.127500 0.583333 +vt 0.127500 0.613333 +vt 0.117500 0.523334 +vt 0.127500 0.493334 +vt 0.127500 0.523334 +vt 0.117500 0.493334 +vt 0.127500 0.463334 +vt 0.117500 0.673333 +vt 0.127500 0.643333 +vt 0.127500 0.673333 +vt 0.117500 0.643333 +vt 0.247500 0.426666 +vt 0.262500 0.406666 +vt 0.280000 0.406666 +vt 0.117500 0.553334 +vt 0.127500 0.553334 +vt 0.117500 0.583333 +vt 0.137500 0.580000 +vt 0.137500 0.550000 +vt 0.137500 0.496666 +vt 0.137500 0.520000 +vt 0.137500 0.490000 +vt 0.137500 0.670000 +vt 0.137500 0.640000 +vt 0.137500 0.610000 +vt 0.222500 0.433334 +vt 0.212500 0.466666 +vt 0.187500 0.453334 +vt 0.465000 0.626666 +vt 0.480000 0.633334 +vt 0.465000 0.633334 +vt 0.637500 0.253333 +vt 0.540000 0.260000 +vt 0.540000 0.253333 +vt 0.510000 0.340000 +vt 0.615000 0.346667 +vt 0.510000 0.346667 +vt 0.487500 0.793334 +vt 0.470000 0.860000 +vt 0.624854 0.290024 +vt 0.553464 0.289918 +vt 0.540646 0.259308 +vt 0.343956 0.273776 +vt 0.523542 0.380000 +vt 0.518950 0.379170 +vt 0.511750 0.372962 +vt 0.509210 0.346798 +vt 0.509006 0.367662 +vt 0.515130 0.377128 +vt 0.465000 0.636666 +vt 0.343956 0.299940 +vt 0.614288 0.539426 +vt 0.616976 0.546688 +vt 0.600194 0.532792 +vt 0.586600 0.546412 +vt 0.589464 0.542342 +vt 0.610988 0.518476 +vt 0.611690 0.524230 +vt 0.603488 0.523666 +vt 0.612684 0.532858 +vt 0.609334 0.505992 +vt 0.603912 0.511850 +vt 0.605570 0.496560 +vt 0.570988 0.478972 +vt 0.589880 0.480978 +vt 0.583670 0.487284 +vt 0.556706 0.449310 +vt 0.559614 0.445906 +vt 0.560010 0.462858 +vt 0.559672 0.475440 +vt 0.555962 0.460954 +vt 0.569808 0.485846 +vt 0.563464 0.481410 +vt 0.563614 0.473280 +vt 0.552306 0.459954 +vt 0.548502 0.474806 +vt 0.548156 0.461908 +vt 0.544616 0.480926 +vt 0.544462 0.472592 +vt 0.538112 0.485474 +vt 0.536902 0.478426 +vt 0.523902 0.486948 +vt 0.551544 0.448020 +vt 0.548562 0.444530 +vt 0.506942 0.487514 +vt 0.517534 0.480484 +vt 0.512246 0.491450 +vt 0.501450 0.496456 +vt 0.506034 0.500066 +vt 0.497592 0.506126 +vt 0.494158 0.533668 +vt 0.495178 0.524822 +vt 0.520896 0.547564 +vt 0.489756 0.547846 +vt 0.517960 0.543392 +vt 0.492512 0.540402 +vt 0.506960 0.533602 +vt 0.093652 0.424652 +vt 0.103830 0.435566 +vt 0.070558 0.427612 +vt 0.080106 0.417484 +vt 0.090662 0.417270 +vt 0.083518 0.410986 +vt 0.084932 0.401114 +vt 0.090042 0.409866 +vt 0.088022 0.390098 +vt 0.089664 0.400328 +vt 0.095814 0.374628 +vt 0.102458 0.370064 +vt 0.104014 0.373084 +vt 0.109440 0.367596 +vt 0.115640 0.370922 +vt 0.057500 0.743334 +vt 0.034146 0.369466 +vt 0.040944 0.374134 +vt 0.032556 0.372556 +vt 0.045010 0.379852 +vt 0.040144 0.379592 +vt 0.048916 0.389962 +vt 0.043804 0.386570 +vt 0.052076 0.401232 +vt 0.047236 0.400428 +vt 0.027004 0.366940 +vt 0.020660 0.370344 +vt 0.057016 0.417980 +vt 0.066782 0.428340 +vt 0.043156 0.425314 +vt 0.032742 0.436480 +vt 0.540000 0.690000 +vt 0.765968 0.719244 +vt 0.754758 0.724574 +vt 0.752980 0.632546 +vt 0.746394 0.725446 +vt 0.738034 0.728246 +vt 0.733200 0.736432 +vt 0.733200 0.632400 +vt 0.771946 0.714068 +vt 0.777044 0.708476 +vt 0.795132 0.686058 +vt 0.792498 0.689516 +vt 0.796410 0.679792 +vt 0.765428 0.623270 +vt 0.798002 0.661284 +vt 0.801168 0.648326 +vt 0.799238 0.657082 +vt 0.796778 0.674360 +vt 0.859270 0.633056 +vt 0.878786 0.632914 +vt 0.865768 0.724708 +vt 0.878786 0.735546 +vt 0.874018 0.727470 +vt 0.811732 0.648624 +vt 0.846990 0.623906 +vt 0.813636 0.657262 +vt 0.854486 0.630532 +vt 0.814854 0.661408 +vt 0.857518 0.723846 +vt 0.846460 0.718588 +vt 0.840562 0.713482 +vt 0.835532 0.707964 +vt 0.820284 0.689260 +vt 0.816424 0.679666 +vt 0.817686 0.685848 +vt 0.634976 0.245906 +vt 0.637830 0.253308 +vt 0.517340 0.226738 +vt 0.546654 0.220602 +vt 0.554412 0.226342 +vt 0.561686 0.226888 +vt 0.632990 0.242238 +vt 0.639758 0.311592 +vt 0.509514 0.340312 +vt 0.537844 0.315742 +vt 0.584736 0.314638 +vt 0.512600 0.332310 +vt 0.514746 0.328346 +vt 0.591824 0.311754 +vt 0.015000 0.690000 +vt 0.053638 0.489364 +vt 0.056132 0.499138 +vt 0.050102 0.499570 +vt 0.044590 0.491084 +vt 0.042778 0.485222 +vt 0.044948 0.472990 +vt 0.053466 0.480160 +vt 0.054178 0.448766 +vt 0.064684 0.444000 +vt 0.037192 0.472396 +vt 0.039332 0.484452 +vt 0.028796 0.479462 +vt 0.037544 0.490228 +vt 0.028626 0.488534 +vt 0.032112 0.498592 +vt 0.026168 0.498168 +vt 0.017740 0.443822 +vt 0.028094 0.448520 +vt 0.007500 0.820000 +vt 0.117500 0.463334 +vt 0.295000 0.426666 +vt 0.295000 0.450000 +vt 0.280000 0.470000 +vt 0.262500 0.470000 +vt 0.247500 0.450000 +vt 0.137500 0.556667 +vt 0.137500 0.526666 +vt 0.137500 0.466666 +vt 0.137500 0.646667 +vt 0.137500 0.616667 +vt 0.137500 0.586667 +vt 0.187500 0.433334 +vt 0.197500 0.420000 +vt 0.212500 0.420000 +vt 0.222500 0.453334 +vt 0.197500 0.466666 +vt 0.480000 0.626666 +vt 0.637500 0.260000 +vt 0.615000 0.340000 +vt 0.487500 0.860000 +vt 0.540618 0.289918 +vt 0.638112 0.259308 +vt 0.638300 0.278610 +vt 0.635762 0.283514 +vt 0.632634 0.287368 +vt 0.629100 0.289256 +vt 0.245828 0.286858 +vt 0.250404 0.276350 +vt 0.250404 0.297368 +vt 0.465000 0.950000 +vt 0.492500 0.943334 +vt 0.492500 0.950000 +vt 0.246358 0.270342 +vt 0.250404 0.270342 +vt 0.465000 0.920000 +vt 0.470000 0.913334 +vt 0.492500 0.920000 +vt 0.242776 0.303374 +vt 0.242776 0.270342 +vt 0.246358 0.303374 +vt 0.250404 0.303374 +vt 0.781120 0.480610 +vt 0.749548 0.462818 +vt 0.752368 0.447180 +vt 0.427500 0.650000 +vt 0.455000 0.673334 +vt 0.427500 0.673334 +vt 0.455000 0.793334 +vt 0.427500 0.763334 +vt 0.455000 0.763334 +vt 0.427500 0.553334 +vt 0.455000 0.570000 +vt 0.427500 0.570000 +vt 0.455000 0.826666 +vt 0.427500 0.806666 +vt 0.455000 0.806666 +vt 0.427500 0.593334 +vt 0.455000 0.620000 +vt 0.427500 0.620000 +vt 0.427500 0.536666 +vt 0.455000 0.553334 +vt 0.427500 0.520000 +vt 0.455000 0.536666 +vt 0.427500 0.793334 +vt 0.455000 0.650000 +vt 0.455000 0.840000 +vt 0.427500 0.826666 +vt 0.455000 0.856666 +vt 0.427500 0.840000 +vt 0.455000 0.916666 +vt 0.427500 0.883334 +vt 0.455000 0.883334 +vt 0.427500 0.856666 +vt 0.455000 0.933334 +vt 0.427500 0.916666 +vt 0.455000 0.963334 +vt 0.427500 0.933334 +vt 0.455000 0.593334 +vt 0.837092 0.341162 +vt 0.896614 0.349824 +vt 0.843432 0.350018 +vt 0.918888 0.505838 +vt 0.909190 0.509100 +vt 0.912576 0.502430 +vt 0.913420 0.516608 +vt 0.896158 0.514720 +vt 0.836062 0.368946 +vt 0.842736 0.368780 +vt 0.807740 0.349838 +vt 0.815134 0.368824 +vt 0.808438 0.368658 +vt 0.814100 0.340954 +vt 0.754392 0.349642 +vt 0.747548 0.340708 +vt 0.737532 0.516950 +vt 0.754850 0.515056 +vt 0.755148 0.524546 +vt 0.747974 0.364312 +vt 0.754652 0.364020 +vt 0.902582 0.421712 +vt 0.898632 0.447056 +vt 0.895936 0.422476 +vt 0.842218 0.417334 +vt 0.851794 0.430522 +vt 0.845472 0.433370 +vt 0.799352 0.430594 +vt 0.808960 0.417364 +vt 0.805694 0.433450 +vt 0.743308 0.459312 +vt 0.839746 0.401812 +vt 0.843694 0.383466 +vt 0.846266 0.399988 +vt 0.807478 0.383390 +vt 0.811438 0.401792 +vt 0.804898 0.399964 +vt 0.748404 0.421756 +vt 0.755598 0.396246 +vt 0.755072 0.422522 +vt 0.902076 0.396338 +vt 0.896356 0.364156 +vt 0.903012 0.364448 +vt 0.907662 0.459150 +vt 0.909688 0.480118 +vt 0.901444 0.462644 +vt 0.852786 0.457286 +vt 0.869968 0.480382 +vt 0.864338 0.485158 +vt 0.798358 0.457442 +vt 0.786768 0.485402 +vt 0.735774 0.475280 +vt 0.736600 0.488884 +vt 0.729962 0.487562 +vt 0.837092 0.384758 +vt 0.814100 0.384686 +vt 0.748914 0.396302 +vt 0.903436 0.340918 +vt 0.895412 0.396282 +vt 0.848694 0.415252 +vt 0.802462 0.415276 +vt 0.745800 0.445490 +vt 0.858804 0.453448 +vt 0.792320 0.453592 +vt 0.741276 0.480346 +vt 0.905178 0.445372 +vt 0.915174 0.475068 +vt 0.914350 0.488628 +vt 0.877572 0.494322 +vt 0.872518 0.500154 +vt 0.773494 0.494594 +vt 0.778564 0.500446 +vt 0.891096 0.511892 +vt 0.887354 0.519430 +vt 0.759928 0.512220 +vt 0.763680 0.519782 +vt 0.732048 0.506148 +vt 0.738378 0.502728 +vt 0.920966 0.487310 +vt 0.895860 0.524180 +vt 0.741776 0.509418 +vt 0.022500 0.536666 +vt 0.037500 0.543334 +vt 0.022500 0.543334 +vt 0.037500 0.853334 +vt 0.022500 0.846666 +vt 0.037500 0.846666 +vt 0.037500 0.693334 +vt 0.022500 0.700000 +vt 0.022500 0.693334 +vt 0.037500 0.770000 +vt 0.022500 0.743334 +vt 0.037500 0.743334 +vt 0.022500 0.646666 +vt 0.037500 0.656666 +vt 0.022500 0.656666 +vt 0.022500 0.666666 +vt 0.037500 0.683334 +vt 0.022500 0.683334 +vt 0.037500 0.730000 +vt 0.022500 0.716666 +vt 0.037500 0.716666 +vt 0.037500 0.823334 +vt 0.022500 0.810000 +vt 0.037500 0.810000 +vt 0.022500 0.583334 +vt 0.037500 0.596666 +vt 0.022500 0.596666 +vt 0.037500 0.700000 +vt 0.037500 0.666666 +vt 0.022500 0.730000 +vt 0.022500 0.626666 +vt 0.037500 0.646666 +vt 0.037500 0.786666 +vt 0.022500 0.770000 +vt 0.037500 0.840000 +vt 0.022500 0.830000 +vt 0.037500 0.830000 +vt 0.022500 0.560000 +vt 0.037500 0.573334 +vt 0.022500 0.573334 +vt 0.022500 0.840000 +vt 0.037500 0.560000 +vt 0.037500 0.583334 +vt 0.022500 0.823334 +vt 0.037500 0.610000 +vt 0.022500 0.610000 +vt 0.022500 0.796666 +vt 0.037500 0.796666 +vt 0.022500 0.786666 +vt 0.037500 0.626666 +vt 0.130000 0.806666 +vt 0.117500 0.790000 +vt 0.130000 0.790000 +vt 0.130000 0.760000 +vt 0.117500 0.750000 +vt 0.130000 0.750000 +vt 0.130000 0.743334 +vt 0.117500 0.733334 +vt 0.130000 0.733334 +vt 0.130000 0.783334 +vt 0.117500 0.773334 +vt 0.130000 0.773334 +vt 0.117500 0.723334 +vt 0.130000 0.723334 +vt 0.117500 0.743334 +vt 0.117500 0.760000 +vt 0.117500 0.783334 +vt 0.512500 0.813334 +vt 0.540000 0.823334 +vt 0.512500 0.823334 +vt 0.540000 0.813334 +vt 0.512500 0.896666 +vt 0.540000 0.903334 +vt 0.512500 0.903334 +vt 0.512500 0.916666 +vt 0.540000 0.923334 +vt 0.512500 0.923334 +vt 0.512500 0.863334 +vt 0.540000 0.873334 +vt 0.512500 0.873334 +vt 0.512500 0.836666 +vt 0.540000 0.853334 +vt 0.512500 0.853334 +vt 0.540000 0.896666 +vt 0.540000 0.910000 +vt 0.512500 0.910000 +vt 0.512500 0.930000 +vt 0.540000 0.936666 +vt 0.512500 0.936666 +vt 0.540000 0.836666 +vt 0.540000 0.863334 +vt 0.540000 0.916666 +vt 0.540000 0.930000 +vt 0.540000 0.943334 +vt 0.512500 0.943334 +vt 0.512500 0.660000 +vt 0.540000 0.660000 +vt 0.512500 0.653334 +vt 0.540000 0.653334 +vt 0.540000 0.953334 +vt 0.512500 0.953334 +vt 0.512500 0.640000 +vt 0.540000 0.640000 +vt 0.487500 0.903334 +vt 0.470000 0.903334 +vt 0.470000 0.896666 +vt 0.487500 0.896666 +vt 0.343956 0.286858 +vt 0.465000 0.943334 +vt 0.487500 0.913334 +vt 0.455000 0.520000 +vt 0.427500 0.963334 +vt 0.037500 0.536666 +vt 0.022500 0.853334 +vt 0.117500 0.806666 +vn -0.2614 0.9652 -0.0011 +vn -0.2578 0.9662 -0.0012 +vn 1.0000 0.0000 0.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.2583 0.9661 -0.0030 +vn 0.2614 0.9652 -0.0011 +vn 0.0000 -0.7793 0.6267 +vn 0.0000 0.3134 0.9496 +vn 0.0000 0.8210 0.5709 +vn 0.0000 -0.1108 0.9938 +vn 0.0000 0.9904 0.1382 +vn 0.0000 0.5731 0.8195 +vn 0.0000 -0.0527 0.9986 +vn 0.0000 -0.4752 0.8799 +vn 0.0000 0.0009 1.0000 +vn 0.0000 -0.9564 0.2920 +vn 0.0000 -0.8744 0.4852 +vn 0.0000 -0.9879 -0.1551 +vn 0.0000 -0.9984 0.0563 +vn 0.0000 -0.3221 0.9467 +vn 0.0000 -0.9467 -0.3221 +vn 0.0000 0.3693 0.9293 +vn 0.0000 -0.2791 -0.9603 +vn 0.0000 0.0986 0.9951 +vn 0.0000 -0.2302 -0.9731 +vn 0.0000 -0.5726 -0.8198 +vn 0.0000 0.5605 0.8281 +vn 0.0000 -0.0250 0.9997 +vn 0.0000 0.3812 -0.9245 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.0000 0.0000 1.0000 +vn 0.7071 0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7554 -0.6552 +vn 0.5342 0.5342 -0.6552 +vn 0.7554 0.0000 -0.6552 +vn 0.5342 -0.5342 -0.6552 +vn -0.5342 -0.5342 -0.6552 +vn -0.7554 0.0000 -0.6552 +vn -0.5342 0.5342 -0.6552 +vn 0.0000 0.0000 -1.0000 +vn -0.7497 -0.6618 -0.0000 +vn 0.7497 -0.6618 -0.0000 +vn 0.0000 -0.9998 0.0177 +vn -0.2508 0.9680 -0.0007 +vn -0.2457 0.9693 -0.0042 +vn -0.2507 0.9680 -0.0044 +vn 0.2508 0.9680 -0.0044 +vn 0.2457 0.9693 -0.0042 +vn 0.2508 0.9680 -0.0007 +vn -0.9999 0.0087 -0.0127 +vn -0.9998 0.0166 -0.0067 +vn 0.9999 -0.0087 0.0127 +vn 0.9998 -0.0166 0.0067 +vn -0.0000 1.0000 0.0070 +vn -0.2419 0.9698 0.0308 +vn -0.2652 0.9642 0.0010 +vn 0.2680 0.9634 0.0025 +vn 0.2419 0.9698 0.0308 +vn 0.0164 0.6644 0.7472 +vn 0.0000 0.2912 0.9567 +vn -0.0164 0.6644 0.7472 +vn -0.1115 0.9619 0.2498 +vn -0.0769 0.8571 0.5095 +vn -0.1619 0.9600 0.2284 +vn 0.0000 -0.0304 0.9995 +vn 0.0000 -0.2276 0.9738 +vn 0.0000 0.8427 0.5384 +vn -0.2117 0.9713 0.1081 +vn -0.2592 0.9571 0.1297 +vn 0.1115 0.9619 0.2498 +vn 0.0769 0.8571 0.5095 +vn 0.2094 0.9718 0.1082 +vn 0.1619 0.9600 0.2284 +vn 0.9123 0.2199 -0.3455 +vn 0.9336 -0.1391 0.3302 +vn 0.9221 -0.0733 0.3800 +vn 0.3677 0.0294 0.9295 +vn -0.2777 0.0231 0.9604 +vn 0.2777 0.0231 0.9604 +vn -0.3635 0.0174 -0.9314 +vn 0.2844 -0.0474 -0.9575 +vn -0.2844 -0.0474 -0.9575 +vn 0.3853 -0.3583 0.8504 +vn -0.3723 -0.1758 0.9113 +vn 0.3723 -0.1758 0.9113 +vn -0.3681 0.1909 -0.9100 +vn 0.3641 0.1352 -0.9215 +vn -0.3641 0.1352 -0.9215 +vn 0.3736 -0.0796 0.9242 +vn -0.3711 0.0058 0.9286 +vn 0.3711 0.0058 0.9286 +vn 0.3632 -0.5016 0.7852 +vn -0.3853 -0.3583 0.8504 +vn 0.4618 -0.3170 0.8284 +vn -0.3632 -0.5016 0.7852 +vn 0.2844 -0.9587 -0.0026 +vn -0.2777 -0.9607 -0.0026 +vn -0.2844 -0.9587 -0.0026 +vn 0.3635 0.0174 -0.9314 +vn -0.3677 0.0294 0.9295 +vn -0.3662 0.2182 -0.9046 +vn 0.3681 0.1909 -0.9100 +vn -0.3639 0.2981 -0.8825 +vn 0.3662 0.2182 -0.9046 +vn -0.3639 0.5001 -0.7858 +vn 0.3641 0.4018 -0.8403 +vn -0.3641 0.4018 -0.8403 +vn 0.3639 0.2981 -0.8825 +vn -0.3625 0.6100 -0.7046 +vn 0.3639 0.5001 -0.7858 +vn -0.4789 0.6904 -0.5422 +vn 0.3625 0.6100 -0.7046 +vn -0.3736 -0.0796 0.9242 +vn -0.8982 -0.3076 0.3142 +vn -0.8954 -0.3221 -0.3074 +vn -0.6900 0.2669 0.6728 +vn -0.8937 0.3587 0.2695 +vn -0.9005 0.1621 0.4035 +vn -0.7050 0.5671 0.4260 +vn -0.8927 0.4503 -0.0189 +vn -0.9118 0.0077 -0.4106 +vn 0.8954 -0.3221 -0.3074 +vn 0.9118 0.0077 -0.4106 +vn 0.8982 -0.3076 0.3142 +vn 0.2777 -0.9607 -0.0026 +vn 0.7050 0.5671 0.4260 +vn 0.8927 0.4503 -0.0189 +vn 0.7079 0.7057 -0.0296 +vn 0.9171 0.0126 0.3984 +vn -0.9221 -0.0733 0.3800 +vn -0.9234 -0.0329 0.3824 +vn -0.9123 0.1310 -0.3879 +vn 0.9123 0.1310 -0.3879 +vn -0.9126 0.0593 -0.4046 +vn -0.9176 0.0816 -0.3890 +vn 0.9126 0.0593 -0.4046 +vn 0.9176 0.0816 -0.3890 +vn 0.9209 0.0024 0.3898 +vn 0.9234 -0.0329 0.3824 +vn -0.9171 0.0126 0.3984 +vn -0.9211 -0.2186 0.3222 +vn -0.9336 -0.1391 0.3302 +vn -0.9123 0.2199 -0.3455 +vn 0.8848 -0.1072 0.4534 +vn -0.9209 0.0024 0.3898 +vn -0.9153 0.0944 -0.3915 +vn 0.9153 0.0944 -0.3915 +vn -0.9126 0.1764 -0.3689 +vn 0.9126 0.1764 -0.3689 +vn 0.9211 -0.2186 0.3222 +vn -0.8848 -0.1072 0.4534 +vn -0.9103 0.2709 -0.3129 +vn 0.9103 0.2709 -0.3129 +vn -0.9023 0.3595 -0.2379 +vn 0.9023 0.3595 -0.2379 +vn 0.4789 0.6904 -0.5422 +vn 0.6900 0.2669 0.6728 +vn 0.9005 0.1621 0.4035 +vn -0.4618 -0.3170 0.8284 +vn -0.7079 0.7057 -0.0296 +vn 0.8937 0.3587 0.2695 +vn 0.0000 -0.6842 -0.7293 +vn 0.0000 -0.7629 -0.6465 +vn 0.0000 -0.4426 0.8967 +vn 0.0000 -0.3771 0.9262 +vn 0.0000 -0.4508 -0.8926 +vn 0.0000 -0.7515 -0.6597 +vn 0.0000 -0.9636 0.2674 +vn 0.0000 -0.9547 0.2975 +vn 0.0000 0.9610 -0.2766 +vn 0.0000 0.7803 -0.6254 +vn 0.0000 0.4933 -0.8699 +vn 0.0000 0.1218 -0.9926 +vn 0.0000 -0.6736 0.7391 +vn 0.0000 -0.2295 0.9733 +vn 0.0000 -0.1672 0.9859 +vn 0.0000 -0.3258 0.9454 +vn 0.0000 0.1300 -0.9915 +vn 0.0000 0.5117 -0.8592 +vn 0.0000 -0.0312 0.9995 +vn 0.0000 0.9839 -0.1788 +vn 0.0000 -0.7818 0.6235 +vn 0.0000 -0.2316 0.9728 +vn 0.0000 -0.1562 0.9877 +vn 0.0000 -0.6559 -0.7549 +vn 0.0000 -0.2457 -0.9694 +vn 0.0000 0.8559 -0.5172 +vn 0.0000 -0.5543 0.8323 +vn 0.0000 -0.7825 -0.6226 +vn 0.0000 -0.6852 -0.7283 +vn 0.0000 -0.4048 -0.9144 +vn 0.0000 -0.5787 -0.8155 +vn 0.0000 -0.7998 -0.6002 +vn 0.0000 -0.9331 -0.3597 +vn 0.0000 -0.9334 -0.3588 +vn 0.0000 -0.3893 -0.9211 +vn 0.0000 -0.2699 -0.9629 +vn 0.0000 -0.9666 -0.2564 +vn 0.0000 0.8387 -0.5446 +vn 0.0000 0.9868 -0.1622 +vn 0.0000 0.6178 -0.7863 +vn 0.0000 0.8229 -0.5682 +vn 0.0000 0.8640 -0.5035 +vn 0.0000 0.1761 -0.9844 +vn 0.0000 0.0584 -0.9983 +vn 0.0000 0.8062 -0.5917 +vn 0.0000 0.6890 -0.7248 +vn 0.0000 0.9778 -0.2096 +vn 0.0000 0.8960 -0.4441 +vn 0.0000 0.5042 -0.8636 +vn 0.0000 0.1193 -0.9929 +vn 0.0000 0.2880 -0.9576 +vn 0.0000 0.3228 -0.9465 +vn 0.0000 -1.0000 -0.0046 +vn 0.0000 -0.9827 0.1854 +vn 0.0000 -0.8861 0.4635 +vn 0.0000 0.2810 -0.9597 +vn 0.0000 -0.8329 0.5534 +vn 0.0000 -0.5228 0.8525 +vn 0.0000 -0.9255 0.3787 +vn 0.0000 -0.7858 0.6185 +vn -0.2574 0.9663 0.0002 +vn 0.0000 1.0000 -0.0007 +vn 0.2574 0.9663 0.0002 +vn 0.2592 0.9571 0.1297 +s off +f 259/421/94 251/422/95 260/423/94 +f 264/424/96 265/425/96 259/426/96 +f 267/427/97 269/428/97 266/429/97 +f 253/430/98 267/431/99 275/432/99 +f 399/433/97 392/434/97 408/435/97 +f 394/436/96 407/437/96 389/438/96 +f 412/439/97 413/440/97 424/441/97 +f 433/442/100 417/443/100 432/444/100 +f 435/445/101 413/446/101 434/447/101 +f 441/448/96 442/449/96 443/450/96 +f 444/451/102 429/452/102 445/453/102 +f 442/454/103 415/455/103 443/456/103 +f 446/457/104 429/452/104 428/458/104 +f 434/447/105 412/459/105 444/451/105 +f 443/456/106 414/460/106 435/445/106 +f 432/444/107 416/461/107 442/454/107 +f 472/462/108 453/463/108 452/464/108 +f 482/465/96 476/466/96 456/467/96 +f 458/468/97 475/469/97 455/470/97 +f 493/471/97 494/472/97 488/473/97 +f 498/474/109 493/475/109 492/476/109 +f 500/477/110 491/478/110 490/479/110 +f 502/480/111 490/479/111 489/481/111 +f 501/482/96 500/483/96 503/484/96 +f 501/485/112 492/476/112 491/478/112 +f 507/486/113 509/487/113 506/488/113 +f 511/489/114 513/490/114 510/491/114 +f 515/492/115 517/493/115 514/494/115 +f 519/495/116 521/496/116 518/497/116 +f 522/498/117 516/499/117 515/492/117 +f 524/500/118 520/501/118 519/495/118 +f 518/502/97 517/503/97 516/504/97 +f 518/497/119 511/489/119 510/491/119 +f 515/505/96 514/506/96 521/507/96 +f 514/494/120 513/490/120 512/508/120 +f 506/488/121 523/509/121 522/498/121 +f 527/510/122 525/511/122 524/500/122 +f 531/512/123 533/513/123 530/514/123 +f 535/515/96 537/516/96 534/517/96 +f 536/518/124 539/519/124 537/516/124 +f 541/520/125 543/521/125 540/522/125 +f 542/523/97 530/514/97 543/521/97 +f 538/524/126 536/525/126 535/526/126 +f 544/527/127 534/517/127 545/528/127 +f 532/529/128 545/528/128 533/513/128 +f 545/528/129 547/530/129 533/513/129 +f 534/517/130 546/531/130 545/528/130 +f 534/517/131 549/532/131 548/533/131 +f 539/519/132 549/534/132 537/516/132 +f 543/521/133 552/535/133 540/522/133 +f 530/514/134 551/536/134 543/521/134 +f 533/513/135 553/537/135 530/514/135 +f 549/538/136 552/539/136 553/540/136 +f 259/541/96 554/542/96 555/543/96 +f 272/544/137 556/545/137 488/546/137 +f 270/547/138 264/548/138 263/549/138 +f 499/550/139 494/551/139 493/475/139 +f 275/552/97 267/553/97 556/554/97 +f 259/421/140 247/555/141 251/422/142 +f 259/426/96 260/556/96 264/424/96 +f 260/556/96 261/557/96 255/558/96 +f 263/559/96 260/556/96 258/560/96 +f 261/557/96 262/561/96 255/558/96 +f 255/558/96 258/560/96 260/556/96 +f 263/559/96 264/424/96 260/556/96 +f 267/427/97 268/562/97 269/428/97 +f 253/430/143 252/563/144 267/431/145 +f 367/564/97 366/565/97 405/566/97 +f 366/565/97 361/567/97 360/568/97 +f 360/568/97 405/566/97 366/565/97 +f 390/569/97 403/570/97 404/571/97 +f 403/570/97 402/572/97 404/571/97 +f 402/572/97 367/564/97 405/566/97 +f 402/572/97 405/566/97 404/571/97 +f 391/573/97 390/569/97 393/574/97 +f 393/574/97 390/569/97 404/571/97 +f 399/433/97 409/575/97 392/434/97 +f 409/575/97 391/573/97 392/434/97 +f 375/576/97 374/577/97 396/578/97 +f 374/577/97 399/433/97 408/435/97 +f 392/434/97 391/573/97 393/574/97 +f 368/579/97 371/580/97 387/581/97 +f 381/582/97 380/583/97 387/581/97 +f 380/583/97 368/579/97 387/581/97 +f 377/584/97 376/585/97 375/576/97 +f 376/585/97 381/582/97 386/586/97 +f 375/576/97 376/585/97 386/586/97 +f 396/578/97 377/584/97 375/576/97 +f 381/582/97 387/581/97 386/586/97 +f 408/435/97 396/578/97 374/577/97 +f 383/587/96 382/588/96 384/589/96 +f 382/588/96 379/590/96 385/591/96 +f 384/589/96 382/588/96 385/591/96 +f 379/590/96 378/592/96 372/593/96 +f 378/592/96 397/594/96 372/593/96 +f 369/595/96 383/587/96 384/589/96 +f 384/589/96 370/596/96 369/595/96 +f 398/597/96 373/598/96 410/599/96 +f 373/598/96 372/593/96 397/594/96 +f 410/599/96 373/598/96 397/594/96 +f 372/593/96 385/591/96 379/590/96 +f 411/600/96 398/597/96 395/601/96 +f 389/438/96 388/602/96 394/436/96 +f 388/602/96 411/600/96 395/601/96 +f 394/436/96 388/602/96 395/601/96 +f 401/603/96 400/604/96 407/437/96 +f 400/604/96 389/438/96 407/437/96 +f 362/605/96 365/606/96 363/607/96 +f 365/606/96 364/608/96 406/609/96 +f 363/607/96 365/606/96 406/609/96 +f 364/608/96 401/603/96 406/609/96 +f 398/597/96 410/599/96 395/601/96 +f 407/437/96 406/609/96 401/603/96 +f 417/610/97 418/611/97 419/612/97 +f 417/610/97 419/612/97 420/613/97 +f 416/614/97 417/610/97 420/613/97 +f 421/615/97 422/616/97 415/617/97 +f 422/616/97 423/618/97 414/619/97 +f 416/614/97 420/613/97 421/615/97 +f 415/617/97 416/614/97 421/615/97 +f 422/616/97 414/619/97 415/617/97 +f 423/618/97 424/441/97 413/440/97 +f 424/441/97 425/620/97 412/439/97 +f 425/620/97 426/621/97 429/622/97 +f 426/621/146 427/623/146 429/622/146 +f 427/623/147 428/624/147 429/622/147 +f 413/440/97 414/619/97 423/618/97 +f 425/620/97 429/622/97 412/439/97 +f 433/442/100 418/625/100 417/443/100 +f 435/445/101 414/460/101 413/446/101 +f 439/626/96 438/627/96 445/628/96 +f 438/627/96 437/629/96 444/630/96 +f 437/629/96 436/631/96 434/632/96 +f 436/631/96 440/633/96 435/634/96 +f 436/631/96 435/634/96 434/632/96 +f 440/633/96 441/448/96 443/450/96 +f 435/634/96 440/633/96 443/450/96 +f 447/635/148 439/626/148 445/628/148 +f 438/627/96 444/630/96 445/628/96 +f 445/628/149 446/636/149 447/635/149 +f 431/637/96 430/638/96 432/639/96 +f 430/638/96 433/640/96 432/639/96 +f 441/448/96 431/637/96 442/449/96 +f 431/637/96 432/639/96 442/449/96 +f 434/632/96 444/630/96 437/629/96 +f 444/451/102 412/459/102 429/452/102 +f 442/454/103 416/461/103 415/455/103 +f 446/457/104 445/453/104 429/452/104 +f 434/447/105 413/446/105 412/459/105 +f 443/456/106 415/455/106 414/460/106 +f 432/444/107 417/443/107 416/461/107 +f 472/462/108 473/641/108 453/463/108 +f 469/642/96 468/643/96 480/644/96 +f 468/643/96 451/645/96 480/644/96 +f 450/646/96 453/647/96 473/648/96 +f 464/649/96 469/642/96 480/644/96 +f 451/645/96 450/646/96 473/648/96 +f 451/645/96 473/648/96 480/644/96 +f 465/650/96 464/649/96 480/644/96 +f 471/651/96 457/652/96 460/653/96 +f 457/652/96 456/467/96 460/653/96 +f 456/467/96 465/650/96 480/644/96 +f 456/467/96 480/644/96 482/465/96 +f 482/465/96 484/654/96 477/655/96 +f 484/654/96 485/656/96 479/657/96 +f 477/655/96 484/654/96 479/657/96 +f 476/466/96 461/658/96 456/467/96 +f 461/658/96 460/653/96 456/467/96 +f 482/465/96 477/655/96 476/466/96 +f 481/659/97 472/660/97 448/661/97 +f 472/660/97 452/662/97 449/663/97 +f 472/660/97 449/663/97 448/661/97 +f 486/664/97 487/665/97 478/666/97 +f 487/665/97 483/667/97 474/668/97 +f 478/666/97 487/665/97 474/668/97 +f 483/667/97 481/659/97 455/470/97 +f 448/661/97 467/669/97 481/659/97 +f 467/669/97 466/670/97 481/659/97 +f 481/659/97 466/670/97 463/671/97 +f 462/672/97 481/659/97 463/671/97 +f 455/470/97 454/673/97 459/674/97 +f 454/673/97 470/675/97 459/674/97 +f 462/672/97 455/470/97 481/659/97 +f 474/668/97 483/667/97 475/469/97 +f 475/469/97 483/667/97 455/470/97 +f 459/674/97 458/468/97 455/470/97 +f 496/676/97 272/677/97 494/472/97 +f 272/677/97 488/473/97 494/472/97 +f 488/473/97 489/678/97 490/679/97 +f 491/680/97 492/681/97 488/473/97 +f 492/681/97 493/471/97 488/473/97 +f 488/473/97 490/679/97 491/680/97 +f 495/682/97 496/676/97 494/472/97 +f 498/474/109 499/550/109 493/475/109 +f 500/477/110 501/485/110 491/478/110 +f 502/480/111 500/477/111 490/479/111 +f 502/683/96 503/484/96 500/483/96 +f 503/484/96 270/684/96 505/685/96 +f 499/686/96 503/484/96 505/685/96 +f 270/684/96 497/687/96 505/685/96 +f 497/687/96 504/688/96 505/685/96 +f 499/686/96 498/689/96 503/484/96 +f 498/689/96 501/482/96 503/484/96 +f 501/485/112 498/474/112 492/476/112 +f 507/486/113 508/690/113 509/487/113 +f 511/489/114 512/508/114 513/490/114 +f 515/492/115 516/499/115 517/493/115 +f 519/495/116 520/501/116 521/496/116 +f 522/498/117 523/509/117 516/499/117 +f 524/500/118 525/511/118 520/501/118 +f 509/691/97 508/692/97 526/693/97 +f 526/693/97 527/694/97 509/691/97 +f 527/694/97 524/695/97 509/691/97 +f 524/695/97 519/696/97 523/697/97 +f 519/696/97 518/502/97 516/504/97 +f 518/502/97 510/698/97 517/503/97 +f 510/698/97 513/699/97 517/503/97 +f 519/696/97 516/504/97 523/697/97 +f 523/697/97 509/691/97 524/695/97 +f 518/497/119 521/496/119 511/489/119 +f 521/507/96 520/700/96 515/505/96 +f 520/700/96 525/701/96 522/702/96 +f 525/701/96 528/703/96 506/704/96 +f 528/703/96 529/705/96 506/704/96 +f 529/705/96 507/706/96 506/704/96 +f 506/704/96 522/702/96 525/701/96 +f 520/700/96 522/702/96 515/505/96 +f 512/707/96 511/708/96 514/506/96 +f 511/708/96 521/507/96 514/506/96 +f 514/494/120 517/493/120 513/490/120 +f 506/488/121 509/487/121 523/509/121 +f 527/510/122 528/709/122 525/511/122 +f 531/512/123 532/529/123 533/513/123 +f 535/515/96 536/518/96 537/516/96 +f 536/518/124 538/710/124 539/519/124 +f 541/520/125 542/523/125 543/521/125 +f 542/523/97 531/512/97 530/514/97 +f 535/526/126 544/711/126 532/712/126 +f 532/712/126 531/713/126 535/526/126 +f 531/713/126 542/714/126 535/526/126 +f 542/714/126 541/715/126 535/526/126 +f 541/715/126 538/524/126 535/526/126 +f 544/527/127 535/515/127 534/517/127 +f 532/529/128 544/527/128 545/528/128 +f 545/528/129 546/716/129 547/530/129 +f 534/517/130 548/717/130 546/531/130 +f 534/517/131 537/516/131 549/532/131 +f 539/519/132 550/718/132 549/534/132 +f 543/521/133 551/719/133 552/535/133 +f 530/514/134 553/720/134 551/536/134 +f 533/513/135 547/721/135 553/537/135 +f 553/540/136 547/722/136 546/723/136 +f 546/723/136 548/724/136 553/540/136 +f 548/724/136 549/538/136 553/540/136 +f 549/538/136 550/725/136 552/539/136 +f 552/539/136 551/726/136 553/540/136 +f 259/541/96 265/727/96 554/542/96 +f 272/544/137 271/728/137 556/545/137 +f 270/547/138 503/729/138 264/548/138 +f 499/550/139 505/730/139 494/551/139 +f 267/553/97 266/731/97 556/554/97 +f 556/554/97 271/732/97 275/552/97 +f 271/732/97 257/733/97 275/552/97 +f 275/552/97 257/733/97 256/734/97 +f 256/734/97 273/735/97 274/736/97 +f 275/552/97 256/734/97 274/736/97 +s 1 +f 249/737/150 250/738/151 251/422/152 +f 253/430/153 254/739/154 249/737/150 +f 256/740/155 258/741/156 255/742/157 +f 250/738/158 262/743/159 261/744/160 +f 271/745/161 272/746/162 263/747/161 +f 249/737/163 256/748/155 255/749/157 +f 251/422/164 261/744/160 260/423/165 +f 254/739/166 273/750/167 249/737/163 +f 253/430/168 274/751/169 254/739/166 +f 281/752/170 289/753/171 290/754/172 +f 298/755/173 300/756/174 297/757/175 +f 302/758/176 304/759/177 301/760/178 +f 306/761/179 308/762/180 305/763/181 +f 310/764/182 312/765/183 309/766/184 +f 314/767/185 316/768/186 313/769/187 +f 317/770/188 307/771/189 306/761/179 +f 319/772/190 318/773/191 317/770/188 +f 304/759/192 300/756/193 301/760/194 +f 309/766/184 303/774/195 302/758/176 +f 313/769/187 299/775/196 298/755/173 +f 321/776/197 311/777/198 310/764/182 +f 323/778/199 322/779/200 321/776/197 +f 326/780/201 328/781/202 325/782/203 +f 325/782/203 324/783/204 323/778/199 +f 329/784/205 327/785/206 326/780/201 +f 331/786/207 330/787/208 329/784/205 +f 305/763/181 315/788/209 314/767/185 +f 301/789/194 333/790/210 334/791/211 +f 335/792/212 337/793/213 338/794/214 +f 336/795/215 340/796/216 337/793/213 +f 302/797/176 334/791/211 341/798/217 +f 295/799/218 303/800/195 296/801/219 +f 304/802/192 294/803/220 297/804/221 +f 343/805/222 284/806/223 342/807/224 +f 298/808/173 294/803/220 293/809/225 +f 315/810/209 344/811/226 345/812/227 +f 321/813/197 347/814/228 323/815/199 +f 279/816/229 322/817/200 324/818/204 +f 306/819/179 290/754/172 289/753/171 +f 310/820/182 348/821/230 349/822/231 +f 276/823/232 311/824/198 277/825/233 +f 314/826/185 292/827/234 291/828/235 +f 316/829/186 351/830/236 299/831/196 +f 307/832/189 352/833/237 353/834/238 +f 325/835/203 355/836/239 326/837/201 +f 281/752/170 328/838/202 327/839/206 +f 317/840/188 287/841/240 319/842/190 +f 309/843/184 341/798/217 348/821/230 +f 296/801/219 312/844/183 276/823/232 +f 313/845/187 293/809/225 292/827/234 +f 299/831/196 333/790/210 300/846/174 +f 315/810/209 350/847/241 316/829/186 +f 310/820/182 346/848/242 321/813/197 +f 278/849/243 311/824/198 322/817/200 +f 314/826/185 290/754/172 305/850/181 +f 325/835/203 347/814/228 354/851/244 +f 279/816/229 328/838/202 280/852/245 +f 306/819/179 288/853/246 317/840/188 +f 307/832/189 344/811/226 308/854/180 +f 318/855/191 356/856/247 352/833/237 +f 326/837/201 357/857/248 329/858/205 +f 282/859/249 327/839/206 330/860/208 +f 329/858/205 358/861/250 331/862/207 +f 283/863/251 330/860/208 332/864/252 +f 359/865/253 287/841/240 286/866/254 +f 335/792/212 356/856/247 320/867/255 +f 331/862/207 340/796/216 339/868/256 +f 284/806/223 332/864/252 342/807/224 +f 359/865/253 285/869/257 343/805/222 +f 350/847/241 345/812/227 346/848/242 +f 361/870/258 363/871/259 360/872/259 +f 365/873/260 367/874/261 364/875/261 +f 369/876/262 371/877/263 368/878/262 +f 373/879/264 375/880/265 372/881/265 +f 377/882/266 379/883/267 376/884/267 +f 381/885/268 383/886/269 380/887/269 +f 385/888/270 387/889/271 384/890/271 +f 389/891/272 391/892/273 388/893/273 +f 393/894/274 395/895/275 392/896/275 +f 384/890/271 371/877/276 370/897/276 +f 380/887/269 369/876/262 368/878/262 +f 376/884/267 382/898/268 381/885/268 +f 372/881/265 386/899/270 385/888/270 +f 396/900/277 378/901/266 377/882/266 +f 398/902/278 374/903/264 373/879/264 +f 401/904/279 403/905/280 400/906/280 +f 405/907/281 407/908/282 404/909/282 +f 364/875/261 402/910/279 401/904/279 +f 360/872/259 406/911/281 405/907/281 +f 404/909/282 394/912/274 393/894/274 +f 400/906/280 390/913/272 389/891/272 +f 392/896/275 410/914/283 408/915/283 +f 388/893/273 409/916/284 411/917/284 +f 411/917/284 399/918/278 398/902/278 +f 408/915/283 397/919/277 396/900/277 +f 419/920/285 431/921/286 420/922/286 +f 423/923/287 437/924/288 424/925/288 +f 425/926/289 439/927/290 426/928/291 +f 421/929/292 440/930/293 422/931/293 +f 426/928/291 447/932/294 427/933/294 +f 424/925/288 438/934/289 425/926/289 +f 422/931/293 436/935/287 423/923/287 +f 420/922/286 441/936/292 421/929/292 +f 449/937/295 451/938/296 448/939/296 +f 449/937/295 453/463/297 450/940/295 +f 455/941/298 457/942/299 454/943/299 +f 459/944/300 461/945/301 458/946/301 +f 463/947/302 465/948/303 462/949/303 +f 467/950/304 469/951/305 466/952/305 +f 462/949/303 456/953/298 455/941/298 +f 454/943/299 471/954/306 470/955/306 +f 475/956/307 477/957/308 474/958/308 +f 448/939/296 468/959/304 467/950/304 +f 466/952/305 464/960/302 463/947/302 +f 470/955/306 460/961/300 459/944/300 +f 458/946/301 476/962/307 475/956/307 +f 474/958/308 479/963/309 478/964/309 +f 473/641/310 481/965/311 480/966/311 +f 480/966/311 483/967/312 482/968/312 +f 478/964/309 485/969/313 486/970/313 +f 482/968/312 487/971/314 484/972/314 +f 497/973/315 272/746/162 496/974/315 +f 505/730/316 495/975/317 494/551/316 +f 504/976/317 496/974/315 495/975/317 +f 251/422/152 247/555/318 248/977/319 +f 248/977/319 249/737/150 251/422/152 +f 249/737/150 248/977/319 253/430/153 +f 248/977/319 252/563/320 253/430/153 +f 256/740/155 257/978/156 258/741/156 +f 250/738/158 249/737/163 262/743/159 +f 272/746/162 270/979/162 263/747/161 +f 263/747/161 258/741/156 257/978/156 +f 257/978/156 271/745/161 263/747/161 +f 255/749/157 262/743/159 249/737/163 +f 249/737/163 273/750/167 256/748/155 +f 251/422/164 250/738/158 261/744/160 +f 254/739/166 274/751/169 273/750/167 +f 253/430/168 275/432/321 274/751/169 +f 296/801/219 276/823/232 293/809/225 +f 276/823/232 277/825/233 292/827/234 +f 277/825/233 278/849/243 292/827/234 +f 278/849/243 279/816/229 291/828/235 +f 292/827/234 278/849/243 291/828/235 +f 279/816/229 280/852/245 291/828/235 +f 280/852/245 281/752/170 290/754/172 +f 291/828/235 280/852/245 290/754/172 +f 281/752/170 282/859/249 289/753/171 +f 282/859/249 283/863/251 288/853/246 +f 283/863/251 284/806/223 285/869/257 +f 285/869/257 286/866/254 283/863/251 +f 286/866/254 287/841/240 288/853/246 +f 286/866/254 288/853/246 283/863/251 +f 282/859/249 288/853/246 289/753/171 +f 295/799/218 296/801/219 293/809/225 +f 276/823/232 292/827/234 293/809/225 +f 293/809/225 294/803/220 295/799/218 +f 298/755/173 299/775/196 300/756/174 +f 302/758/176 303/774/195 304/759/177 +f 306/761/179 307/771/189 308/762/180 +f 310/764/182 311/777/198 312/765/183 +f 314/767/185 315/788/209 316/768/186 +f 317/770/188 318/773/191 307/771/189 +f 319/772/190 320/980/255 318/773/191 +f 304/759/192 297/757/221 300/756/193 +f 309/766/184 312/765/183 303/774/195 +f 313/769/187 316/768/186 299/775/196 +f 321/776/197 322/779/200 311/777/198 +f 323/778/199 324/783/204 322/779/200 +f 326/780/201 327/785/206 328/781/202 +f 325/782/203 328/781/202 324/783/204 +f 329/784/205 330/787/208 327/785/206 +f 331/786/207 332/981/252 330/787/208 +f 305/763/181 308/762/180 315/788/209 +f 301/789/194 300/846/193 333/790/210 +f 335/792/212 336/795/215 337/793/213 +f 336/795/215 339/868/256 340/796/216 +f 302/797/176 301/789/178 334/791/211 +f 295/799/218 304/802/177 303/800/195 +f 304/802/192 295/799/218 294/803/220 +f 343/805/222 285/869/257 284/806/223 +f 298/808/173 297/804/175 294/803/220 +f 315/810/209 308/854/180 344/811/226 +f 321/813/197 346/848/242 347/814/228 +f 279/816/229 278/849/243 322/817/200 +f 306/819/179 305/850/181 290/754/172 +f 310/820/182 309/843/184 348/821/230 +f 276/823/232 312/844/183 311/824/198 +f 314/826/185 313/845/187 292/827/234 +f 316/829/186 350/847/241 351/830/236 +f 307/832/189 318/855/191 352/833/237 +f 325/835/203 354/851/244 355/836/239 +f 281/752/170 280/852/245 328/838/202 +f 317/840/188 288/853/246 287/841/240 +f 309/843/184 302/797/176 341/798/217 +f 296/801/219 303/800/195 312/844/183 +f 313/845/187 298/808/173 293/809/225 +f 299/831/196 351/830/236 333/790/210 +f 315/810/209 345/812/227 350/847/241 +f 310/820/182 349/822/231 346/848/242 +f 278/849/243 277/825/233 311/824/198 +f 314/826/185 291/828/235 290/754/172 +f 325/835/203 323/815/199 347/814/228 +f 279/816/229 324/818/204 328/838/202 +f 306/819/179 289/753/171 288/853/246 +f 307/832/189 353/834/238 344/811/226 +f 318/855/191 320/867/255 356/856/247 +f 326/837/201 355/836/239 357/857/248 +f 282/859/249 281/752/170 327/839/206 +f 329/858/205 357/857/248 358/861/250 +f 283/863/251 282/859/249 330/860/208 +f 359/865/253 319/842/190 287/841/240 +f 335/792/212 338/794/214 356/856/247 +f 331/862/207 358/861/250 340/796/216 +f 284/806/223 283/863/251 332/864/252 +f 359/865/253 286/866/254 285/869/257 +f 352/833/237 356/856/247 338/794/214 +f 338/794/214 337/793/213 358/861/250 +f 337/793/213 340/796/216 358/861/250 +f 358/861/250 357/857/248 352/833/237 +f 357/857/248 355/836/239 353/834/238 +f 355/836/239 354/851/244 344/811/226 +f 354/851/244 347/814/228 345/812/227 +f 347/814/228 346/848/242 345/812/227 +f 346/848/242 349/822/231 350/847/241 +f 349/822/231 348/821/230 350/847/241 +f 348/821/230 341/798/217 351/830/236 +f 341/798/217 334/791/211 351/830/236 +f 334/791/211 333/790/210 351/830/236 +f 351/830/236 350/847/241 348/821/230 +f 355/836/239 344/811/226 353/834/238 +f 344/811/226 354/851/244 345/812/227 +f 358/861/250 352/833/237 338/794/214 +f 353/834/238 352/833/237 357/857/248 +f 361/870/258 362/982/258 363/871/259 +f 365/873/260 366/983/260 367/874/261 +f 369/876/262 370/897/263 371/877/263 +f 373/879/264 374/903/264 375/880/265 +f 377/882/266 378/901/266 379/883/267 +f 381/885/268 382/898/268 383/886/269 +f 385/888/270 386/899/270 387/889/271 +f 389/891/272 390/913/272 391/892/273 +f 393/894/274 394/912/274 395/895/275 +f 384/890/271 387/889/271 371/877/276 +f 380/887/269 383/886/269 369/876/262 +f 376/884/267 379/883/267 382/898/268 +f 372/881/265 375/880/265 386/899/270 +f 396/900/277 397/919/277 378/901/266 +f 398/902/278 399/918/278 374/903/264 +f 401/904/279 402/910/279 403/905/280 +f 405/907/281 406/911/281 407/908/282 +f 364/875/261 367/874/261 402/910/279 +f 360/872/259 363/871/259 406/911/281 +f 404/909/282 407/908/282 394/912/274 +f 400/906/280 403/905/280 390/913/272 +f 392/896/275 395/895/275 410/914/283 +f 388/893/273 391/892/273 409/916/284 +f 411/917/284 409/916/284 399/918/278 +f 408/915/283 410/914/283 397/919/277 +f 419/920/285 430/984/285 431/921/286 +f 423/923/287 436/935/287 437/924/288 +f 425/926/289 438/934/289 439/927/290 +f 421/929/292 441/936/292 440/930/293 +f 426/928/291 439/927/290 447/932/294 +f 424/925/288 437/924/288 438/934/289 +f 422/931/293 440/930/293 436/935/287 +f 420/922/286 431/921/286 441/936/292 +f 449/937/295 450/940/295 451/938/296 +f 449/937/295 452/464/297 453/463/297 +f 455/941/298 456/953/298 457/942/299 +f 459/944/300 460/961/300 461/945/301 +f 463/947/302 464/960/302 465/948/303 +f 467/950/304 468/959/304 469/951/305 +f 462/949/303 465/948/303 456/953/298 +f 454/943/299 457/942/299 471/954/306 +f 475/956/307 476/962/307 477/957/308 +f 448/939/296 451/938/296 468/959/304 +f 466/952/305 469/951/305 464/960/302 +f 470/955/306 471/954/306 460/961/300 +f 458/946/301 461/945/301 476/962/307 +f 474/958/308 477/957/308 479/963/309 +f 473/641/310 472/462/310 481/965/311 +f 480/966/311 481/965/311 483/967/312 +f 478/964/309 479/963/309 485/969/313 +f 482/968/312 483/967/312 487/971/314 +f 497/973/315 270/979/162 272/746/162 +f 505/730/316 504/976/317 495/975/317 +f 504/976/317 497/973/315 496/974/315 diff --git a/src/main/resources/assets/hbm/models/weapons/folly.obj b/src/main/resources/assets/hbm/models/weapons/folly.obj new file mode 100644 index 000000000..814647aec --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/folly.obj @@ -0,0 +1,3004 @@ +# Blender v2.79 (sub 0) OBJ File: 'folly.blend' +# www.blender.org +o Cog +v 0.382683 1.923880 -4.500000 +v 0.707107 1.707107 -4.500000 +v 0.923880 1.382684 -4.500000 +v 1.000000 1.000000 -4.500000 +v 0.923880 0.617316 -4.500000 +v 0.707107 0.292893 -4.500000 +v 0.382683 0.076120 -4.500000 +v 0.000000 0.000000 -4.500000 +v -0.382683 0.076120 -4.500000 +v -0.707107 0.292893 -4.500000 +v -0.923880 0.617316 -4.500000 +v -1.000000 1.000000 -4.500000 +v -0.923880 1.382683 -4.500000 +v -0.707107 1.707107 -4.500000 +v -0.382683 1.923880 -4.500000 +v 0.000000 2.000000 -4.500000 +v 0.000000 2.000000 -3.500000 +v -0.382683 1.923880 -3.500000 +v -0.707107 1.707107 -3.500000 +v -0.923880 1.382683 -3.500000 +v -1.000000 1.000000 -3.500000 +v -0.923880 0.617316 -3.500000 +v -0.707107 0.292893 -3.500000 +v -0.382683 0.076120 -3.500000 +v 0.000000 0.000000 -3.500000 +v 0.382683 0.076120 -3.500000 +v 0.707107 0.292893 -3.500000 +v 0.923880 0.617316 -3.500000 +v 1.000000 1.000000 -3.500000 +v 0.923880 1.382684 -3.500000 +v 0.707107 1.707107 -3.500000 +v 0.382683 1.923880 -3.500000 +v 1.250000 0.750000 -4.375000 +v -1.250000 0.750000 -4.375000 +v 1.250000 1.250000 -4.375000 +v -1.250000 1.250000 -4.375000 +v -1.250000 1.250000 -4.125000 +v 1.250000 1.250000 -4.125000 +v -1.250000 0.750000 -4.125000 +v 1.250000 0.750000 -4.125000 +v 0.250000 2.250000 -4.125000 +v 0.250000 -0.250000 -4.125000 +v -0.250000 2.250000 -4.125000 +v -0.250000 -0.250000 -4.125000 +v -0.250000 -0.250000 -4.375000 +v -0.250000 2.250000 -4.375000 +v 0.250000 -0.250000 -4.375000 +v 0.250000 2.250000 -4.375000 +v -0.707107 2.060660 -4.125000 +v 1.060660 0.292893 -4.125000 +v -1.060660 1.707107 -4.125000 +v 0.707107 -0.060660 -4.125000 +v 0.707107 -0.060660 -4.375000 +v -1.060660 1.707107 -4.375000 +v 1.060660 0.292893 -4.375000 +v -0.707107 2.060660 -4.375000 +v 1.060660 1.707107 -4.375000 +v -0.707107 -0.060660 -4.375000 +v 0.707107 2.060660 -4.375000 +v -1.060660 0.292893 -4.375000 +v -1.060660 0.292893 -4.125000 +v 0.707107 2.060660 -4.125000 +v -0.707107 -0.060660 -4.125000 +v 1.060660 1.707107 -4.125000 +vt 0.668136 0.865446 +vt 0.629147 0.797819 +vt 0.645297 0.634554 +vt 0.705005 0.634623 +vt 0.743971 0.702209 +vt 0.727831 0.865378 +vt 0.126866 0.765625 +vt 0.134328 0.828125 +vt 0.126866 0.828125 +vt 0.216418 0.828125 +vt 0.208955 0.765625 +vt 0.216418 0.765625 +vt 0.134328 0.671875 +vt 0.208955 0.734375 +vt 0.134328 0.734375 +vt 0.208955 0.765625 +vt 0.134328 0.828125 +vt 0.134328 0.765625 +vt 0.134328 0.859375 +vt 0.208955 0.828125 +vt 0.208955 0.859375 +vt 0.216418 0.828125 +vt 0.216418 0.765625 +vt 0.126866 0.765625 +vt 0.126866 0.828125 +vt 0.134328 0.859375 +vt 0.208955 0.828125 +vt 0.208955 0.859375 +vt 0.208955 0.734375 +vt 0.134328 0.765625 +vt 0.134328 0.734375 +vt 0.134328 0.671875 +vt 0.126866 0.765625 +vt 0.134328 0.828125 +vt 0.126866 0.828125 +vt 0.216418 0.828125 +vt 0.208955 0.765625 +vt 0.216418 0.765625 +vt 0.134328 0.859375 +vt 0.208955 0.828125 +vt 0.208955 0.859375 +vt 0.208955 0.734375 +vt 0.134328 0.765625 +vt 0.134328 0.734375 +vt 0.134328 0.671875 +vt 0.134328 0.671875 +vt 0.208955 0.734375 +vt 0.134328 0.734375 +vt 0.134328 0.765625 +vt 0.208955 0.828125 +vt 0.134328 0.828125 +vt 0.134328 0.859375 +vt 0.208955 0.859375 +vt 0.216418 0.828125 +vt 0.208955 0.765625 +vt 0.216418 0.765625 +vt 0.126866 0.765625 +vt 0.126866 0.828125 +vt 0.656716 0.874957 +vt 0.645297 0.865445 +vt 0.635616 0.838358 +vt 0.626876 0.750000 +vt 0.629147 0.702181 +vt 0.635616 0.661642 +vt 0.656716 0.625043 +vt 0.668136 0.634554 +vt 0.677817 0.661642 +vt 0.684285 0.702181 +vt 0.686557 0.750000 +vt 0.684285 0.797819 +vt 0.677817 0.838358 +vt 0.716418 0.874884 +vt 0.705005 0.865378 +vt 0.695330 0.838306 +vt 0.688865 0.797791 +vt 0.686595 0.750000 +vt 0.688865 0.702209 +vt 0.695330 0.661694 +vt 0.716418 0.625117 +vt 0.727831 0.634623 +vt 0.737506 0.661694 +vt 0.746241 0.750000 +vt 0.743971 0.797791 +vt 0.737506 0.838306 +vt 0.208955 0.671875 +vt 0.208955 0.671875 +vt 0.208955 0.671875 +vt 0.208955 0.671875 +vt 0.776119 0.562500 +vt 0.746269 0.515625 +vt 0.776119 0.515625 +vt 0.776119 0.187500 +vt 0.746269 0.140625 +vt 0.776119 0.140625 +vt 0.776119 0.609375 +vt 0.746269 0.562500 +vt 0.776119 0.234375 +vt 0.746269 0.187500 +vt 0.776119 0.656250 +vt 0.746269 0.609375 +vt 0.776119 0.281250 +vt 0.746269 0.234375 +vt 0.776119 0.703125 +vt 0.746269 0.656250 +vt 0.776119 0.328125 +vt 0.746269 0.281250 +vt 0.776119 0.750000 +vt 0.746269 0.703125 +vt 0.776119 0.421875 +vt 0.746269 0.375000 +vt 0.776119 0.375000 +vt 0.746269 0.328125 +vt 0.776119 0.046875 +vt 0.746269 -0.000000 +vt 0.776119 -0.000000 +vt 0.776119 0.468750 +vt 0.746269 0.421875 +vt 0.776119 0.093750 +vt 0.746269 0.046875 +vt 0.746269 0.468750 +vt 0.746269 0.093750 +vt 0.746269 0.750000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.9239 0.3827 0.0000 +vn 0.9239 -0.3827 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.3827 0.9239 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.3827 -0.9239 0.0000 +s off +f 32/1/1 20/2/1 24/3/1 +f 7/4/2 11/5/2 15/6/2 +f 41/7/3 46/8/3 43/9/3 +f 44/10/4 47/11/4 42/12/4 +f 38/13/1 39/14/1 40/15/1 +f 34/16/2 35/17/2 33/18/2 +f 39/14/4 33/18/4 40/15/4 +f 38/19/3 36/20/3 37/21/3 +f 37/22/5 34/16/5 39/23/5 +f 40/24/6 35/17/6 38/25/6 +f 43/26/5 45/27/5 44/28/5 +f 42/29/6 48/30/6 41/31/6 +f 47/11/2 46/8/2 48/30/2 +f 43/32/1 42/29/1 41/31/1 +f 49/33/7 54/34/7 51/35/7 +f 52/36/8 55/37/8 50/38/8 +f 51/39/9 53/40/9 52/41/9 +f 50/42/10 56/43/10 49/44/10 +f 55/37/2 54/34/2 56/43/2 +f 51/45/1 50/42/1 49/44/1 +f 62/46/1 63/47/1 64/48/1 +f 57/49/2 60/50/2 59/51/2 +f 63/47/8 57/49/8 64/48/8 +f 62/52/7 60/50/7 61/53/7 +f 61/54/9 58/55/9 63/56/9 +f 64/57/10 59/51/10 62/58/10 +f 32/1/1 17/59/1 18/60/1 +f 18/60/1 19/61/1 32/1/1 +f 19/61/1 20/2/1 32/1/1 +f 20/2/1 21/62/1 22/63/1 +f 22/63/1 23/64/1 20/2/1 +f 23/64/1 24/3/1 20/2/1 +f 24/3/1 25/65/1 26/66/1 +f 26/66/1 27/67/1 28/68/1 +f 28/68/1 29/69/1 32/1/1 +f 29/69/1 30/70/1 32/1/1 +f 30/70/1 31/71/1 32/1/1 +f 24/3/1 26/66/1 32/1/1 +f 26/66/1 28/68/1 32/1/1 +f 15/6/2 16/72/2 1/73/2 +f 1/73/2 2/74/2 3/75/2 +f 3/75/2 4/76/2 7/4/2 +f 4/76/2 5/77/2 7/4/2 +f 5/77/2 6/78/2 7/4/2 +f 7/4/2 8/79/2 9/80/2 +f 9/80/2 10/81/2 7/4/2 +f 10/81/2 11/5/2 7/4/2 +f 11/5/2 12/82/2 13/83/2 +f 13/83/2 14/84/2 11/5/2 +f 14/84/2 15/6/2 11/5/2 +f 15/6/2 1/73/2 7/4/2 +f 1/73/2 3/75/2 7/4/2 +f 41/7/3 48/30/3 46/8/3 +f 44/10/4 45/27/4 47/11/4 +f 38/13/1 37/85/1 39/14/1 +f 34/16/2 36/20/2 35/17/2 +f 39/14/4 34/16/4 33/18/4 +f 38/19/3 35/17/3 36/20/3 +f 37/22/5 36/20/5 34/16/5 +f 40/24/6 33/18/6 35/17/6 +f 43/26/5 46/8/5 45/27/5 +f 42/29/6 47/11/6 48/30/6 +f 47/11/2 45/27/2 46/8/2 +f 43/32/1 44/86/1 42/29/1 +f 49/33/7 56/43/7 54/34/7 +f 52/36/8 53/40/8 55/37/8 +f 51/39/9 54/34/9 53/40/9 +f 50/42/10 55/37/10 56/43/10 +f 55/37/2 53/40/2 54/34/2 +f 51/45/1 52/87/1 50/42/1 +f 62/46/1 61/88/1 63/47/1 +f 57/49/2 58/55/2 60/50/2 +f 63/47/8 58/55/8 57/49/8 +f 62/52/7 59/51/7 60/50/7 +f 61/54/9 60/50/9 58/55/9 +f 64/57/10 57/49/10 59/51/10 +s 1 +f 12/89/5 20/90/11 13/91/11 +f 4/92/6 28/93/12 5/94/12 +f 11/95/13 21/96/5 12/89/5 +f 3/97/14 29/98/6 4/92/6 +f 10/99/9 22/100/13 11/95/13 +f 2/101/10 30/102/14 3/97/14 +f 9/103/15 23/104/9 10/99/9 +f 1/105/16 31/106/10 2/101/10 +f 8/107/4 24/108/15 9/103/15 +f 15/109/17 17/110/3 16/111/3 +f 16/111/3 32/112/16 1/105/16 +f 7/113/18 25/114/4 8/115/4 +f 14/116/7 18/117/17 15/109/17 +f 6/118/8 26/119/18 7/113/18 +f 13/91/11 19/120/7 14/116/7 +f 5/94/12 27/121/8 6/118/8 +f 12/89/5 21/96/5 20/90/11 +f 4/92/6 29/98/6 28/93/12 +f 11/95/13 22/100/13 21/96/5 +f 3/97/14 30/102/14 29/98/6 +f 10/99/9 23/104/9 22/100/13 +f 2/101/10 31/106/10 30/102/14 +f 9/103/15 24/108/15 23/104/9 +f 1/105/16 32/112/16 31/106/10 +f 8/107/4 25/122/4 24/108/15 +f 15/109/17 18/117/17 17/110/3 +f 16/111/3 17/110/3 32/112/16 +f 7/113/18 26/119/18 25/114/4 +f 14/116/7 19/120/7 18/117/17 +f 6/118/8 27/121/8 26/119/18 +f 13/91/11 20/90/11 19/120/7 +f 5/94/12 28/93/12 27/121/8 +o Breech +v -0.500000 0.000000 -6.000000 +v 0.500000 0.000000 -6.000000 +v -0.500000 0.000000 -7.000000 +v 0.500000 0.000000 -7.000000 +v -0.500000 -0.250000 -7.250000 +v 0.500000 -0.250000 -7.250000 +v -0.500000 -0.250000 -5.750000 +v 0.500000 -0.250000 -5.750000 +v 0.250000 0.125000 -7.187500 +v -0.250000 0.125000 -7.187500 +v 0.250000 0.125000 -5.812500 +v -0.250000 0.125000 -5.812500 +v -0.500000 -0.250000 -5.625000 +v 0.500000 -0.250000 -5.625000 +v -0.500000 0.125000 -5.625000 +v 0.500000 0.125000 -5.625000 +v 0.500000 -0.250000 -7.375000 +v -0.500000 -0.250000 -7.375000 +v 0.500000 0.125000 -7.375000 +v -0.500000 0.125000 -7.375000 +v 0.250000 0.375000 -5.812500 +v 0.250000 0.375000 -7.187500 +v -0.250000 0.375000 -7.187500 +v -0.250000 0.375000 -5.812500 +v 0.000000 2.000000 -4.500000 +v -0.382683 1.923880 -4.500000 +v -0.707107 1.707107 -4.500000 +v -0.923880 1.382683 -4.500000 +v -1.000000 1.000000 -4.500000 +v -0.923880 0.617316 -4.500000 +v -0.707107 0.292893 -4.500000 +v -0.382683 0.076120 -4.500000 +v 0.000000 0.000000 -4.500000 +v 0.382683 0.076120 -4.500000 +v 0.707107 0.292893 -4.500000 +v 0.923880 0.617316 -4.500000 +v 1.000000 1.000000 -4.500000 +v 0.923880 1.382684 -4.500000 +v 0.707107 1.707107 -4.500000 +v 0.382683 1.923880 -4.500000 +v 0.000000 1.750000 -5.500000 +v -0.287013 1.692910 -5.500000 +v -0.530330 1.530330 -5.500000 +v -0.692910 1.287013 -5.500000 +v -0.750000 1.000000 -5.500000 +v -0.692910 0.712987 -5.500000 +v -0.530330 0.469670 -5.500000 +v -0.287013 0.307090 -5.500000 +v 0.000000 0.250000 -5.500000 +v 0.287013 0.307090 -5.500000 +v 0.530330 0.469670 -5.500000 +v 0.692910 0.712987 -5.500000 +v 0.750000 1.000000 -5.500000 +v 0.692910 1.287013 -5.500000 +v 0.530330 1.530330 -5.500000 +v 0.287012 1.692910 -5.500000 +v 0.000000 1.750000 -7.500000 +v -0.287013 1.692910 -7.500000 +v -0.530330 1.530330 -7.500000 +v -0.692910 1.287013 -7.500000 +v -0.750000 1.000000 -7.500000 +v -0.692910 0.712987 -7.500000 +v -0.530330 0.469670 -7.500000 +v -0.287013 0.307090 -7.500000 +v 0.000000 0.250000 -7.500000 +v 0.287013 0.307090 -7.500000 +v 0.530330 0.469670 -7.500000 +v 0.692910 0.712987 -7.500000 +v 0.750000 1.000000 -7.500000 +v 0.692910 1.287013 -7.500000 +v 0.530330 1.530330 -7.500000 +v 0.287012 1.692910 -7.500000 +v 0.000000 1.500000 -8.000000 +v -0.191342 1.461940 -8.000000 +v -0.353553 1.353553 -8.000000 +v -0.461940 1.191342 -8.000000 +v -0.500000 1.000000 -8.000000 +v -0.461940 0.808658 -8.000000 +v -0.353553 0.646447 -8.000000 +v -0.191342 0.538060 -8.000000 +v 0.000000 0.500000 -8.000000 +v 0.191341 0.538060 -8.000000 +v 0.353553 0.646446 -8.000000 +v 0.461940 0.808658 -8.000000 +v 0.500000 1.000000 -8.000000 +v 0.461940 1.191342 -8.000000 +v 0.353553 1.353554 -8.000000 +v 0.191341 1.461940 -8.000000 +vt 0.085821 0.796875 +vt 0.115672 0.671875 +vt 0.115672 0.796875 +vt 0.078358 0.796875 +vt 0.085821 0.671875 +vt 0.123134 0.671875 +vt 0.022388 0.656250 +vt 0.063433 0.671875 +vt 0.011194 0.671875 +vt 0.011194 0.796875 +vt 0.014925 0.843750 +vt 0.022388 0.812500 +vt 0.078358 0.625000 +vt 0.063433 0.656250 +vt 0.063433 0.625000 +vt 0.000000 0.796875 +vt 0.000000 0.671875 +vt 0.126866 0.796875 +vt 0.123134 0.796875 +vt 0.175373 0.625000 +vt 0.134328 0.656250 +vt 0.134328 0.625000 +vt 0.119403 0.625000 +vt 0.078358 0.656250 +vt 0.063433 0.796875 +vt 0.074627 0.671875 +vt 0.074627 0.796875 +vt 0.078358 0.671875 +vt 0.119403 0.656250 +vt 0.810345 0.643319 +vt 0.831446 0.643319 +vt 0.831446 0.731681 +vt 0.014925 0.625000 +vt 0.059701 0.625000 +vt 0.063433 0.625000 +vt 0.059701 0.843750 +vt 0.052239 0.812500 +vt 0.052239 0.656250 +vt 0.011194 0.843750 +vt 0.126866 0.671875 +vt 0.175373 0.656250 +vt 0.826605 0.745225 +vt 0.820895 0.749981 +vt 0.815185 0.745225 +vt 0.810345 0.731681 +vt 0.807110 0.711411 +vt 0.805975 0.687500 +vt 0.807110 0.663589 +vt 0.815185 0.629775 +vt 0.820895 0.625019 +vt 0.826605 0.629775 +vt 0.834680 0.663589 +vt 0.835816 0.687500 +vt 0.834680 0.711411 +vt 0.011194 0.625000 +vt 0.063433 0.843750 +vt 0.776119 0.281250 +vt 0.805970 0.234375 +vt 0.805970 0.273438 +vt 0.776119 0.656250 +vt 0.805970 0.695312 +vt 0.776119 0.703125 +vt 0.805970 0.320312 +vt 0.776119 0.328125 +vt 0.805970 0.742188 +vt 0.776119 0.750000 +vt 0.776119 0.421875 +vt 0.805970 0.375000 +vt 0.805970 0.414062 +vt 0.805970 0.367188 +vt 0.776119 0.375000 +vt 0.776119 0.046875 +vt 0.805970 -0.000000 +vt 0.805970 0.039062 +vt 0.776119 0.468750 +vt 0.805970 0.421875 +vt 0.805970 0.460938 +vt 0.805970 0.085938 +vt 0.776119 0.093750 +vt 0.776119 0.515625 +vt 0.805970 0.468750 +vt 0.805970 0.507812 +vt 0.805970 0.132812 +vt 0.776119 0.140625 +vt 0.805970 0.554688 +vt 0.776119 0.562500 +vt 0.805970 0.179688 +vt 0.776119 0.187500 +vt 0.776119 0.609375 +vt 0.805970 0.562500 +vt 0.805970 0.601562 +vt 0.776119 0.234375 +vt 0.805970 0.187500 +vt 0.805970 0.226562 +vt 0.805970 0.648438 +vt 0.805970 0.117188 +vt 0.865672 0.156250 +vt 0.805970 0.156250 +vt 0.805970 0.468750 +vt 0.865672 0.507812 +vt 0.805970 0.507812 +vt 0.865672 0.195312 +vt 0.805970 0.195312 +vt 0.865672 0.546875 +vt 0.805970 0.546875 +vt 0.865672 0.234375 +vt 0.805970 0.234375 +vt 0.865672 0.585938 +vt 0.805970 0.585938 +vt 0.865672 0.273438 +vt 0.805970 0.273438 +vt 0.865672 0.625000 +vt 0.805970 0.625000 +vt 0.805970 0.312500 +vt 0.865672 0.351562 +vt 0.805970 0.351562 +vt 0.865672 0.312500 +vt 0.865672 0.039062 +vt 0.865672 0.390625 +vt 0.805970 0.390625 +vt 0.865672 0.078125 +vt 0.805970 0.078125 +vt 0.865672 0.429688 +vt 0.805970 0.429688 +vt 0.865672 0.117188 +vt 0.865672 0.468750 +vt 0.880597 0.203125 +vt 0.880597 0.242188 +vt 0.880597 0.281250 +vt 0.880597 0.320312 +vt 0.880597 0.359375 +vt 0.880597 0.421875 +vt 0.880597 0.437500 +vt 0.880597 0.500000 +vt 0.880597 0.515625 +vt 0.880597 0.578125 +vt 0.880597 0.593750 +vt 0.865672 -0.000000 +vt 0.880597 0.031250 +vt 0.880597 0.070312 +vt 0.880597 0.085938 +vt 0.880597 0.125000 +vt 0.880597 0.187500 +vt 0.805970 0.656250 +vt 0.805970 0.281250 +vt 0.805970 0.703125 +vt 0.805970 0.328125 +vt 0.776119 -0.000000 +vt 0.805970 0.046875 +vt 0.805970 0.093750 +vt 0.805970 0.515625 +vt 0.805970 0.140625 +vt 0.805970 0.609375 +vt 0.880597 0.226562 +vt 0.880597 0.265625 +vt 0.880597 0.304688 +vt 0.880597 0.343750 +vt 0.880597 0.382812 +vt 0.880597 0.398438 +vt 0.880597 0.460938 +vt 0.880597 0.476562 +vt 0.880597 0.539062 +vt 0.880597 0.554688 +vt 0.880597 0.617188 +vt 0.880597 0.007812 +vt 0.880597 0.046875 +vt 0.880597 0.109375 +vt 0.880597 0.148438 +vt 0.880597 0.164062 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.6860 0.6860 -0.2425 +vn 0.8963 0.3713 -0.2425 +vn -0.6860 -0.6860 -0.2425 +vn -0.3713 -0.8963 -0.2425 +vn 0.3713 0.8963 -0.2425 +vn -0.0000 -0.9701 -0.2425 +vn -0.3713 0.8963 -0.2425 +vn -0.0000 0.9701 -0.2425 +vn 0.3713 -0.8963 -0.2425 +vn -0.6860 0.6860 -0.2425 +vn 0.6860 -0.6860 -0.2425 +vn -0.8963 0.3713 -0.2425 +vn 0.8963 -0.3713 -0.2425 +vn -0.9701 -0.0000 -0.2425 +vn 0.9701 0.0000 -0.2425 +vn -0.8963 -0.3713 -0.2425 +vn 0.9239 -0.3827 0.0000 +vn -0.9239 -0.3827 0.0000 +vn 0.9239 0.3827 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.3827 -0.9239 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.9239 0.3827 0.0000 +vn 0.8263 0.3423 -0.4472 +vn 0.6325 0.6325 -0.4472 +vn 0.3423 0.8263 -0.4472 +vn -0.0000 0.8944 -0.4472 +vn -0.3423 0.8263 -0.4472 +vn -0.6325 0.6325 -0.4472 +vn -0.8263 0.3423 -0.4472 +vn -0.8944 -0.0000 -0.4472 +vn -0.8263 -0.3423 -0.4472 +vn -0.6325 -0.6325 -0.4472 +vn -0.3423 -0.8263 -0.4472 +vn -0.0000 -0.8944 -0.4472 +vn 0.3423 -0.8263 -0.4472 +vn 0.6325 -0.6325 -0.4472 +vn 0.8263 -0.3423 -0.4472 +vn 0.8944 -0.0000 -0.4472 +s off +f 67/123/19 66/124/19 65/125/19 +f 69/126/20 68/127/20 67/123/20 +f 72/128/21 65/125/21 66/124/21 +f 66/129/22 83/130/22 80/131/22 +f 83/130/23 79/132/23 80/131/23 +f 71/133/24 79/132/24 65/134/24 +f 75/135/25 88/136/25 76/137/25 +f 80/131/25 77/138/25 78/139/25 +f 72/128/19 77/140/19 71/141/19 +f 76/142/24 87/143/24 74/144/24 +f 73/145/22 85/146/22 75/135/22 +f 84/147/26 81/148/26 82/149/26 +f 69/126/19 81/148/19 70/150/19 +f 74/144/26 86/151/26 73/145/26 +f 147/152/26 143/153/26 139/154/26 +f 80/131/22 72/155/22 66/129/22 +f 83/130/22 70/156/22 81/157/22 +f 84/147/24 69/158/24 67/159/24 +f 79/132/24 67/159/24 65/134/24 +f 67/123/19 68/127/19 66/124/19 +f 69/126/20 70/150/20 68/127/20 +f 72/128/21 71/141/21 65/125/21 +f 66/129/22 68/160/22 83/130/22 +f 83/130/23 84/147/23 79/132/23 +f 71/133/24 77/161/24 79/132/24 +f 75/135/25 85/146/25 88/136/25 +f 80/131/25 79/132/25 77/138/25 +f 72/128/19 78/162/19 77/140/19 +f 76/142/24 88/163/24 87/143/24 +f 73/145/22 86/151/22 85/146/22 +f 84/147/26 83/130/26 81/148/26 +f 69/126/19 82/149/19 81/148/19 +f 74/144/26 87/143/26 86/151/26 +f 139/154/26 138/164/26 137/165/26 +f 137/165/26 152/166/26 139/154/26 +f 152/166/26 151/167/26 139/154/26 +f 151/167/26 150/168/26 149/169/26 +f 149/169/26 148/170/26 147/152/26 +f 147/152/26 146/171/26 143/153/26 +f 146/171/26 145/172/26 143/153/26 +f 145/172/26 144/173/26 143/153/26 +f 143/153/26 142/174/26 141/175/26 +f 141/175/26 140/176/26 139/154/26 +f 151/167/26 149/169/26 139/154/26 +f 149/169/26 147/152/26 139/154/26 +f 143/153/26 141/175/26 139/154/26 +f 80/131/22 78/177/22 72/155/22 +f 83/130/22 68/160/22 70/156/22 +f 84/147/24 82/178/24 69/158/24 +f 79/132/24 84/147/24 67/159/24 +s 1 +f 103/179/27 118/180/28 119/181/27 +f 95/182/29 112/183/30 96/184/30 +f 103/179/27 120/185/31 104/186/31 +f 96/184/30 113/187/32 97/188/32 +f 90/189/33 105/190/34 106/191/33 +f 104/186/31 105/192/34 89/193/34 +f 98/194/35 113/195/32 114/196/35 +f 91/197/36 106/198/33 107/199/36 +f 98/194/35 115/200/37 99/201/37 +f 92/202/38 107/203/36 108/204/38 +f 99/201/37 116/205/39 100/206/39 +f 92/202/38 109/207/40 93/208/40 +f 100/206/39 117/209/41 101/210/41 +f 94/211/42 109/212/40 110/213/42 +f 102/214/28 117/215/41 118/216/28 +f 94/211/42 111/217/29 95/182/29 +f 116/218/43 133/219/22 117/220/22 +f 109/221/24 126/222/44 110/223/44 +f 117/220/22 134/224/45 118/225/45 +f 110/223/44 127/226/46 111/227/46 +f 118/225/45 135/228/47 119/229/47 +f 111/227/46 128/230/48 112/231/48 +f 119/229/47 136/232/49 120/233/49 +f 112/231/48 129/234/19 113/235/19 +f 105/236/23 122/237/50 106/238/50 +f 120/233/49 121/239/23 105/236/23 +f 113/195/19 130/240/51 114/196/51 +f 106/238/50 123/241/52 107/242/52 +f 114/196/51 131/243/53 115/244/53 +f 107/242/52 124/245/54 108/246/54 +f 115/244/53 132/247/43 116/218/43 +f 108/246/54 125/248/24 109/221/24 +f 150/249/55 135/228/56 134/224/55 +f 151/250/56 136/232/57 135/228/56 +f 152/251/57 121/239/58 136/232/57 +f 137/252/58 122/237/59 121/239/58 +f 138/253/59 123/241/60 122/237/59 +f 123/241/60 140/254/61 124/245/61 +f 140/255/61 125/248/62 124/245/61 +f 125/248/62 142/256/63 126/222/63 +f 142/257/63 127/226/64 126/222/63 +f 127/226/64 144/258/65 128/230/65 +f 144/259/65 129/234/66 128/230/65 +f 129/260/66 146/261/67 130/240/67 +f 130/240/67 147/262/68 131/243/68 +f 147/263/68 132/247/69 131/243/68 +f 148/264/69 133/219/70 132/247/69 +f 133/219/70 150/265/55 134/224/55 +f 103/179/27 102/214/28 118/180/28 +f 95/182/29 111/266/29 112/183/30 +f 103/179/27 119/267/27 120/185/31 +f 96/184/30 112/268/30 113/187/32 +f 90/189/33 89/193/34 105/190/34 +f 104/186/31 120/269/31 105/192/34 +f 98/194/35 97/270/32 113/195/32 +f 91/197/36 90/189/33 106/198/33 +f 98/194/35 114/271/35 115/200/37 +f 92/202/38 91/197/36 107/203/36 +f 99/201/37 115/272/37 116/205/39 +f 92/202/38 108/273/38 109/207/40 +f 100/206/39 116/274/39 117/209/41 +f 94/211/42 93/208/40 109/212/40 +f 102/214/28 101/210/41 117/215/41 +f 94/211/42 110/275/42 111/217/29 +f 116/218/43 132/247/43 133/219/22 +f 109/221/24 125/248/24 126/222/44 +f 117/220/22 133/219/22 134/224/45 +f 110/223/44 126/222/44 127/226/46 +f 118/225/45 134/224/45 135/228/47 +f 111/227/46 127/226/46 128/230/48 +f 119/229/47 135/228/47 136/232/49 +f 112/231/48 128/230/48 129/234/19 +f 105/236/23 121/239/23 122/237/50 +f 120/233/49 136/232/49 121/239/23 +f 113/195/19 129/260/19 130/240/51 +f 106/238/50 122/237/50 123/241/52 +f 114/196/51 130/240/51 131/243/53 +f 107/242/52 123/241/52 124/245/54 +f 115/244/53 131/243/53 132/247/43 +f 108/246/54 124/245/54 125/248/24 +f 150/249/55 151/276/56 135/228/56 +f 151/250/56 152/277/57 136/232/57 +f 152/251/57 137/278/58 121/239/58 +f 137/252/58 138/279/59 122/237/59 +f 138/253/59 139/280/60 123/241/60 +f 123/241/60 139/281/60 140/254/61 +f 140/255/61 141/282/62 125/248/62 +f 125/248/62 141/283/62 142/256/63 +f 142/257/63 143/284/64 127/226/64 +f 127/226/64 143/285/64 144/258/65 +f 144/259/65 145/286/66 129/234/66 +f 129/260/66 145/287/66 146/261/67 +f 130/240/67 146/288/67 147/262/68 +f 147/263/68 148/289/69 132/247/69 +f 148/264/69 149/290/70 133/219/70 +f 133/219/70 149/291/70 150/265/55 +o Shell +v 0.000000 1.562500 -3.500000 +v -0.215260 1.519682 -3.500000 +v -0.397748 1.397748 -3.500000 +v -0.519682 1.215260 -3.500000 +v -0.562500 1.000000 -3.500000 +v -0.519682 0.784740 -3.500000 +v -0.397748 0.602252 -3.500000 +v -0.215260 0.480318 -3.500000 +v 0.000000 0.437500 -3.500000 +v 0.215260 0.480318 -3.500000 +v 0.397747 0.602252 -3.500000 +v 0.519682 0.784740 -3.500000 +v 0.562500 1.000000 -3.500000 +v 0.519682 1.215260 -3.500000 +v 0.397747 1.397748 -3.500000 +v 0.215259 1.519682 -3.500000 +v 0.287012 1.692909 -3.250000 +v 0.530330 1.530331 -3.250000 +v 0.692910 1.287012 -3.250000 +v 0.750000 1.000000 -3.250000 +v 0.692910 0.712988 -3.250000 +v 0.530330 0.469669 -3.250000 +v 0.287013 0.307091 -3.250000 +v 0.000000 0.250000 -3.250000 +v -0.287013 0.307091 -3.250000 +v -0.530330 0.469669 -3.250000 +v -0.692910 0.712988 -3.250000 +v -0.750000 1.000000 -3.250000 +v -0.692910 1.287012 -3.250000 +v -0.530330 1.530331 -3.250000 +v -0.287013 1.692909 -3.250000 +v 0.000000 1.750000 -3.250000 +v 0.287012 1.692909 -1.000000 +v 0.530330 1.530331 -1.000000 +v 0.692910 1.287012 -1.000000 +v 0.750000 1.000000 -1.000000 +v 0.692910 0.712988 -1.000000 +v 0.530330 0.469669 -1.000000 +v 0.287013 0.307091 -1.000000 +v 0.000000 0.250000 -1.000000 +v -0.287013 0.307091 -1.000000 +v -0.530330 0.469669 -1.000000 +v -0.692910 0.712988 -1.000000 +v -0.750000 1.000000 -1.000000 +v -0.692910 1.287012 -1.000000 +v -0.530330 1.530331 -1.000000 +v -0.287013 1.692909 -1.000000 +v 0.000000 1.750000 -1.000000 +v 0.179382 1.433068 0.000000 +v 0.331456 1.331457 0.000000 +v 0.433069 1.179382 0.000000 +v 0.468750 1.000000 0.000000 +v 0.433069 0.820618 0.000000 +v 0.331456 0.668543 0.000000 +v 0.179383 0.566932 0.000000 +v 0.000000 0.531250 0.000000 +v -0.179383 0.566932 0.000000 +v -0.331456 0.668543 0.000000 +v -0.433069 0.820618 0.000000 +v -0.468750 1.000000 0.000000 +v -0.433069 1.179382 0.000000 +v -0.331456 1.331457 0.000000 +v -0.179383 1.433068 0.000000 +v 0.000000 1.468750 0.000000 +v 0.000000 1.000000 0.500000 +vt 0.864481 0.745016 +vt 0.840742 0.745016 +vt 0.840743 0.645609 +vt 0.846188 0.630372 +vt 0.852612 0.625022 +vt 0.859036 0.630372 +vt 0.864481 0.645610 +vt 0.868120 0.668414 +vt 0.869398 0.695313 +vt 0.868120 0.722212 +vt 0.859036 0.760253 +vt 0.852612 0.765604 +vt 0.846188 0.760253 +vt 0.837104 0.722212 +vt 0.835826 0.695313 +vt 0.837104 0.668414 +vt 1.000000 0.242188 +vt 0.992537 0.273438 +vt 0.992537 0.234375 +vt 1.000000 0.007812 +vt 0.992537 0.039062 +vt 0.992537 0.000000 +vt 0.992537 0.351562 +vt 1.000000 0.382812 +vt 0.992537 0.390625 +vt 1.000000 0.554688 +vt 0.992537 0.585938 +vt 0.992537 0.546875 +vt 1.000000 0.320312 +vt 0.992537 0.312500 +vt 1.000000 0.164062 +vt 0.992537 0.195312 +vt 0.992537 0.156250 +vt 1.000000 0.617188 +vt 0.992537 0.625000 +vt 1.000000 0.398438 +vt 0.992537 0.429688 +vt 0.992537 0.078125 +vt 1.000000 0.109375 +vt 0.992537 0.117188 +vt 1.000000 0.476562 +vt 0.992537 0.507812 +vt 0.992537 0.468750 +vt 1.000000 0.539062 +vt 1.000000 0.148438 +vt 1.000000 0.304688 +vt 1.000000 0.203125 +vt 1.000000 0.070312 +vt 1.000000 0.460938 +vt 0.925373 0.156250 +vt 0.925373 0.078125 +vt 0.925373 0.585938 +vt 0.925373 0.468750 +vt 0.925373 0.390625 +vt 0.925373 0.507812 +vt 0.925373 0.234375 +vt 0.925373 0.117188 +vt 0.925373 0.000000 +vt 0.925373 0.273438 +vt 0.925373 0.351562 +vt 0.925373 0.195312 +vt 0.925373 0.546875 +vt 0.925373 0.429688 +vt 0.925373 0.312500 +vt 0.925373 0.039062 +vt 0.895522 0.007812 +vt 0.895522 0.320312 +vt 0.895522 0.539062 +vt 0.895522 0.515625 +vt 0.895522 0.164062 +vt 0.895522 0.304688 +vt 0.895522 0.281250 +vt 0.895522 0.226562 +vt 0.895522 0.203125 +vt 0.895522 0.554688 +vt 0.895522 0.070312 +vt 0.895522 0.046875 +vt 0.895522 0.617188 +vt 0.895522 0.593750 +vt 0.895522 0.085938 +vt 0.895522 0.398438 +vt 0.895522 0.242188 +vt 0.895522 0.125000 +vt 0.895522 0.437500 +vt 0.895522 0.382812 +vt 0.895522 0.359375 +vt 0.895522 0.476562 +vt 0.895522 0.460938 +vt 0.880597 0.445312 +vt 0.880597 0.367188 +vt 0.895522 0.031250 +vt 0.880597 0.015625 +vt 0.895522 0.343750 +vt 0.880597 0.328125 +vt 0.880597 0.523438 +vt 0.895522 0.187500 +vt 0.880597 0.171875 +vt 0.880597 0.289062 +vt 0.880597 0.210938 +vt 0.895522 0.578125 +vt 0.880597 0.562500 +vt 0.880597 0.054688 +vt 0.880597 0.601562 +vt 0.895522 0.109375 +vt 0.880597 0.093750 +vt 0.895522 0.421875 +vt 0.880597 0.406250 +vt 0.895522 0.265625 +vt 0.880597 0.250000 +vt 0.895522 0.148438 +vt 0.880597 0.132812 +vt 0.895522 0.500000 +vt 0.880597 0.484375 +vt 1.000000 0.265625 +vt 1.000000 0.031250 +vt 1.000000 0.359375 +vt 1.000000 0.578125 +vt 1.000000 0.343750 +vt 1.000000 0.187500 +vt 1.000000 0.593750 +vt 1.000000 0.421875 +vt 1.000000 0.085938 +vt 1.000000 0.500000 +vt 1.000000 0.515625 +vt 1.000000 0.125000 +vt 1.000000 0.281250 +vt 1.000000 0.226562 +vt 1.000000 0.046875 +vt 1.000000 0.437500 +vt 0.925373 0.625000 +vn 0.0000 0.0000 -1.0000 +vn 0.5657 0.5657 -0.6000 +vn 0.3061 0.7391 -0.6000 +vn 0.0000 -0.8000 -0.6000 +vn 0.3061 -0.7391 -0.6000 +vn -0.3061 0.7391 -0.6000 +vn -0.5657 0.5657 -0.6000 +vn -0.5657 -0.5657 -0.6000 +vn -0.3061 -0.7391 -0.6000 +vn 0.0000 0.8000 -0.6000 +vn 0.8000 0.0000 -0.6000 +vn 0.7391 0.3061 -0.6000 +vn -0.7391 0.3061 -0.6000 +vn 0.5657 -0.5657 -0.6000 +vn 0.7391 -0.3061 -0.6000 +vn -0.8000 -0.0000 -0.6000 +vn -0.7391 -0.3061 -0.6000 +vn 0.9239 0.3827 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.0000 -1.0000 0.0000 +vn -0.3827 -0.9239 0.0000 +vn -0.9239 -0.3827 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.9239 0.3827 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.3684 -0.8894 0.2707 +vn 0.0000 -0.8777 0.4792 +vn 0.0000 -0.9627 0.2707 +vn -0.3684 0.8894 0.2707 +vn 0.0000 0.8777 0.4792 +vn 0.0000 0.9627 0.2707 +vn -0.8894 -0.3684 0.2707 +vn -0.6206 -0.6207 0.4792 +vn -0.8109 -0.3359 0.4792 +vn 0.8894 0.3684 0.2707 +vn 0.8777 0.0000 0.4792 +vn 0.9627 0.0000 0.2707 +vn 0.3684 0.8894 0.2707 +vn 0.3359 0.8109 0.4792 +vn 0.6206 0.6207 0.4792 +vn 0.8109 0.3359 0.4792 +vn -0.3684 -0.8894 0.2707 +vn -0.6807 -0.6807 0.2707 +vn 0.6206 -0.6207 0.4792 +vn 0.3359 -0.8109 0.4792 +vn -0.3359 -0.8109 0.4792 +vn 0.8894 -0.3684 0.2707 +vn 0.6807 -0.6807 0.2707 +vn -0.8894 0.3684 0.2707 +vn -0.6206 0.6207 0.4792 +vn -0.6807 0.6807 0.2707 +vn 0.6807 0.6807 0.2707 +vn 0.8109 -0.3359 0.4792 +vn -0.9627 -0.0000 0.2707 +vn -0.8109 0.3359 0.4792 +vn -0.3359 0.8109 0.4792 +vn -0.8777 -0.0000 0.4792 +vn -0.0000 -0.0000 1.0000 +s off +f 155/292/71 167/293/71 163/294/71 +f 163/294/71 162/295/71 161/296/71 +f 161/296/71 160/297/71 163/294/71 +f 160/297/71 159/298/71 163/294/71 +f 159/298/71 158/299/71 157/300/71 +f 157/300/71 156/301/71 155/292/71 +f 155/292/71 154/302/71 167/293/71 +f 154/302/71 153/303/71 167/293/71 +f 153/303/71 168/304/71 167/293/71 +f 167/293/71 166/305/71 165/306/71 +f 165/306/71 164/307/71 163/294/71 +f 159/298/71 157/300/71 163/294/71 +f 157/300/71 155/292/71 163/294/71 +f 167/293/71 165/306/71 163/294/71 +s 1 +f 167/308/72 169/309/73 170/310/72 +f 161/311/74 175/312/75 176/313/74 +f 183/314/76 155/315/77 182/316/77 +f 159/317/78 177/318/79 178/319/78 +f 153/320/80 183/314/76 184/321/80 +f 165/322/81 171/323/82 172/324/81 +f 177/318/79 161/325/74 176/326/74 +f 155/327/77 181/328/83 182/316/77 +f 174/329/84 164/330/85 173/331/85 +f 157/332/86 179/333/87 180/334/86 +f 179/333/87 159/335/78 178/319/78 +f 173/331/85 165/336/81 172/324/81 +f 169/309/73 153/337/80 184/321/80 +f 166/338/82 170/310/72 171/323/82 +f 175/312/75 163/339/84 174/329/84 +f 181/328/83 157/340/86 180/334/86 +f 171/323/88 188/341/89 172/324/89 +f 173/331/90 190/342/91 174/329/91 +f 176/326/92 193/343/93 177/318/93 +f 179/333/94 196/344/95 180/334/95 +f 181/328/96 198/345/97 182/316/97 +f 178/319/98 195/346/94 179/333/94 +f 169/309/99 186/347/100 170/310/100 +f 172/324/89 189/348/90 173/331/90 +f 175/312/101 192/349/92 176/313/92 +f 184/321/102 185/350/99 169/309/99 +f 182/316/97 199/351/103 183/314/103 +f 170/310/100 187/352/88 171/323/88 +f 177/318/93 194/353/98 178/319/98 +f 180/334/95 197/354/96 181/328/96 +f 183/314/103 200/355/102 184/321/102 +f 174/329/91 191/356/101 175/312/101 +f 191/356/104 208/357/105 192/349/106 +f 199/351/107 216/358/108 200/355/109 +f 195/346/110 210/359/111 211/360/112 +f 187/352/113 204/361/114 188/341/115 +f 185/350/116 216/362/108 201/363/117 +f 187/352/113 202/364/118 203/365/119 +f 193/343/120 210/366/111 194/353/121 +f 191/356/104 206/367/122 207/368/123 +f 193/343/120 208/369/105 209/370/124 +f 189/348/125 206/371/122 190/342/126 +f 197/354/127 214/372/128 198/345/129 +f 185/350/116 202/373/118 186/347/130 +f 188/341/115 205/374/131 189/348/125 +f 196/344/132 213/375/133 197/354/127 +f 199/351/107 214/376/128 215/377/134 +f 195/346/110 212/378/135 196/344/132 +f 212/379/135 217/380/136 213/375/133 +f 214/376/128 217/381/136 215/377/134 +f 207/382/123 217/383/136 208/357/105 +f 215/384/134 217/385/136 216/358/108 +f 210/359/111 217/386/136 211/360/112 +f 203/387/119 217/388/136 204/361/114 +f 216/362/108 217/389/136 201/363/117 +f 202/364/118 217/390/136 203/365/119 +f 209/391/124 217/392/136 210/366/111 +f 206/367/122 217/393/136 207/368/123 +f 208/369/105 217/394/136 209/370/124 +f 205/395/131 217/396/136 206/371/122 +f 213/397/133 217/398/136 214/372/128 +f 201/399/117 217/400/136 202/373/118 +f 204/401/114 217/402/136 205/374/131 +f 211/403/112 217/404/136 212/378/135 +f 167/308/72 168/405/73 169/309/73 +f 161/311/74 162/406/75 175/312/75 +f 183/314/76 154/407/76 155/315/77 +f 159/317/78 160/408/79 177/318/79 +f 153/320/80 154/409/76 183/314/76 +f 165/322/81 166/410/82 171/323/82 +f 177/318/79 160/411/79 161/325/74 +f 155/327/77 156/412/83 181/328/83 +f 174/329/84 163/413/84 164/330/85 +f 157/332/86 158/414/87 179/333/87 +f 179/333/87 158/415/87 159/335/78 +f 173/331/85 164/416/85 165/336/81 +f 169/309/73 168/417/73 153/337/80 +f 166/338/82 167/418/72 170/310/72 +f 175/312/75 162/419/75 163/339/84 +f 181/328/83 156/420/83 157/340/86 +f 171/323/88 187/352/88 188/341/89 +f 173/331/90 189/348/90 190/342/91 +f 176/326/92 192/421/92 193/343/93 +f 179/333/94 195/346/94 196/344/95 +f 181/328/96 197/354/96 198/345/97 +f 178/319/98 194/353/98 195/346/94 +f 169/309/99 185/350/99 186/347/100 +f 172/324/89 188/341/89 189/348/90 +f 175/312/101 191/356/101 192/349/92 +f 184/321/102 200/355/102 185/350/99 +f 182/316/97 198/345/97 199/351/103 +f 170/310/100 186/347/100 187/352/88 +f 177/318/93 193/343/93 194/353/98 +f 180/334/95 196/344/95 197/354/96 +f 183/314/103 199/351/103 200/355/102 +f 174/329/91 190/342/91 191/356/101 +f 191/356/104 207/382/123 208/357/105 +f 199/351/107 215/384/134 216/358/108 +f 195/346/110 194/353/121 210/359/111 +f 187/352/113 203/387/119 204/361/114 +f 185/350/116 200/355/109 216/362/108 +f 187/352/113 186/347/130 202/364/118 +f 193/343/120 209/391/124 210/366/111 +f 191/356/104 190/342/126 206/367/122 +f 193/343/120 192/421/106 208/369/105 +f 189/348/125 205/395/131 206/371/122 +f 197/354/127 213/397/133 214/372/128 +f 185/350/116 201/399/117 202/373/118 +f 188/341/115 204/401/114 205/374/131 +f 196/344/132 212/379/135 213/375/133 +f 199/351/107 198/345/129 214/376/128 +f 195/346/110 211/403/112 212/378/135 +o Barrel +v 0.000000 2.000000 8.000000 +v -0.382683 1.923880 8.000000 +v -0.707107 1.707107 8.000000 +v -0.923880 1.382683 8.000000 +v -1.000000 1.000000 8.000000 +v -0.923880 0.617316 8.000000 +v -0.707107 0.292893 8.000000 +v -0.382683 0.076120 8.000000 +v 0.000000 0.000000 8.000000 +v 0.382683 0.076120 8.000000 +v 0.707107 0.292893 8.000000 +v 0.923880 0.617316 8.000000 +v 1.000000 1.000000 8.000000 +v 0.923880 1.382684 8.000000 +v 0.707107 1.707107 8.000000 +v 0.382683 1.923880 8.000000 +v 0.000000 2.000000 0.500000 +v -0.382683 1.923880 0.500000 +v -0.707107 1.707107 0.500000 +v -0.923880 1.382683 0.500000 +v -1.000000 1.000000 0.500000 +v -0.923880 0.617316 0.500000 +v -0.707107 0.292893 0.500000 +v -0.382683 0.076120 0.500000 +v 0.000000 0.000000 0.500000 +v 0.382683 0.076120 0.500000 +v 0.707107 0.292893 0.500000 +v 0.923880 0.617316 0.500000 +v 1.000000 1.000000 0.500000 +v 0.923880 1.382684 0.500000 +v 0.707107 1.707107 0.500000 +v 0.382683 1.923880 0.500000 +v 0.287012 1.692910 0.500000 +v 0.530330 1.530330 0.500000 +v 0.692910 1.287013 0.500000 +v 0.750000 1.000000 0.500000 +v 0.692910 0.712987 0.500000 +v 0.530330 0.469670 0.500000 +v 0.287013 0.307090 0.500000 +v 0.000000 0.250000 0.500000 +v -0.287013 0.307090 0.500000 +v -0.530330 0.469670 0.500000 +v -0.692910 0.712987 0.500000 +v -0.750000 1.000000 0.500000 +v -0.692910 1.287013 0.500000 +v -0.530330 1.530330 0.500000 +v -0.287013 1.692910 0.500000 +v 0.000000 1.750000 0.500000 +v 0.000000 1.750000 8.000000 +v -0.287013 1.692910 8.000000 +v -0.530330 1.530330 8.000000 +v -0.692910 1.287013 8.000000 +v -0.750000 1.000000 8.000000 +v -0.692910 0.712987 8.000000 +v -0.530330 0.469670 8.000000 +v -0.287013 0.307090 8.000000 +v 0.000000 0.250000 8.000000 +v 0.287013 0.307090 8.000000 +v 0.530330 0.469670 8.000000 +v 0.692910 0.712987 8.000000 +v 0.750000 1.000000 8.000000 +v 0.692910 1.287013 8.000000 +v 0.530330 1.530330 8.000000 +v 0.287012 1.692910 8.000000 +vt 0.231343 0.468750 +vt 0.223881 0.507812 +vt 0.223881 0.468750 +vt 0.231343 0.093750 +vt 0.223881 0.046875 +vt 0.231343 0.046875 +vt 0.223881 0.421875 +vt 0.231343 0.421875 +vt 0.231343 -0.000000 +vt 0.223881 0.039062 +vt 0.223881 0.000000 +vt 0.223881 0.375000 +vt 0.231343 0.375000 +vt 0.231343 0.703125 +vt 0.223881 0.742188 +vt 0.223881 0.703125 +vt 0.223881 0.328125 +vt 0.231343 0.328125 +vt 0.231343 0.656250 +vt 0.223881 0.695312 +vt 0.223881 0.656250 +vt 0.223881 0.281250 +vt 0.231343 0.281250 +vt 0.231343 0.609375 +vt 0.223881 0.648438 +vt 0.223881 0.609375 +vt 0.223881 0.234375 +vt 0.231343 0.234375 +vt 0.231343 0.562500 +vt 0.223881 0.601562 +vt 0.223881 0.562500 +vt 0.231343 0.187500 +vt 0.223881 0.226562 +vt 0.223881 0.187500 +vt 0.223881 0.140625 +vt 0.231343 0.140625 +vt 0.223881 0.515625 +vt 0.231343 0.515625 +vt 0.223881 0.132812 +vt 0.223881 0.093750 +vt 0.223881 0.085938 +vt 0.223881 0.460938 +vt 0.223881 0.414062 +vt 0.231343 0.750000 +vt 0.223881 0.367188 +vt 0.223881 0.320312 +vt 0.223881 0.273438 +vt 0.223881 0.179688 +vt 0.223881 0.554688 +vt 0.000000 0.156250 +vt 0.223881 0.195312 +vt 0.000000 0.195312 +vt 0.000000 -0.000000 +vt 0.223881 0.039062 +vt 0.000000 0.039062 +vt 0.000000 0.507812 +vt 0.223881 0.546875 +vt 0.000000 0.546875 +vt 0.000000 0.351562 +vt 0.223881 0.390625 +vt 0.000000 0.390625 +vt 0.223881 0.234375 +vt 0.000000 0.234375 +vt 0.223881 0.078125 +vt 0.000000 0.078125 +vt 0.223881 0.585938 +vt 0.000000 0.585938 +vt 0.223881 0.429688 +vt 0.000000 0.429688 +vt 0.223881 0.273438 +vt 0.000000 0.273438 +vt 0.223881 0.117188 +vt 0.000000 0.117188 +vt 0.223881 0.625000 +vt 0.000000 0.625000 +vt 0.223881 0.468750 +vt 0.000000 0.468750 +vt 0.000000 0.312500 +vt 0.223881 0.351562 +vt 0.223881 0.507812 +vt 0.223881 0.156250 +vt 0.223881 0.312500 +vt 0.455224 0.046875 +vt 0.455224 0.468750 +vt 0.455224 0.093750 +vt 0.455224 0.515625 +vt 0.455224 0.140625 +vt 0.455224 0.562500 +vt 0.455224 0.187500 +vt 0.455224 0.609375 +vt 0.455224 0.234375 +vt 0.455224 0.656250 +vt 0.455224 0.281250 +vt 0.455224 0.703125 +vt 0.455224 0.375000 +vt 0.455224 0.328125 +vt 0.455224 -0.000000 +vt 0.455224 0.421875 +vt 0.223881 -0.000000 +vt 0.455224 0.750000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.9239 0.3827 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.3827 -0.9239 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.3827 0.9239 0.0000 +vn -0.9239 -0.3827 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.9239 0.3827 0.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 220/422/137 269/423/137 268/424/137 +f 228/425/137 275/426/137 227/427/137 +f 220/422/137 267/428/137 219/429/137 +f 226/430/137 275/431/137 274/432/137 +f 219/429/137 266/433/137 218/434/137 +f 225/435/137 274/436/137 273/437/137 +f 218/434/137 281/438/137 233/439/137 +f 224/440/137 273/441/137 272/442/137 +f 233/439/137 280/443/137 232/444/137 +f 223/445/137 272/446/137 271/447/137 +f 232/444/137 279/448/137 231/449/137 +f 222/450/137 271/451/137 270/452/137 +f 230/453/137 279/454/137 278/455/137 +f 230/453/137 277/456/137 229/457/137 +f 222/450/137 269/458/137 221/459/137 +f 228/425/137 277/460/137 276/461/137 +f 220/422/137 221/459/137 269/423/137 +f 228/425/137 276/462/137 275/426/137 +f 220/422/137 268/463/137 267/428/137 +f 226/430/137 227/427/137 275/431/137 +f 219/429/137 267/464/137 266/433/137 +f 225/435/137 226/465/137 274/436/137 +f 218/434/137 266/466/137 281/438/137 +f 224/440/137 225/435/137 273/441/137 +f 233/439/137 281/467/137 280/443/137 +f 223/445/137 224/440/137 272/446/137 +f 232/444/137 280/468/137 279/448/137 +f 222/450/137 223/445/137 271/451/137 +f 230/453/137 231/449/137 279/454/137 +f 230/453/137 278/469/137 277/456/137 +f 222/450/137 270/470/137 269/458/137 +f 228/425/137 229/457/137 277/460/137 +s 1 +f 270/471/138 262/472/139 269/473/139 +f 274/474/140 258/475/141 273/476/141 +f 277/477/142 255/478/143 276/479/143 +f 281/480/144 251/481/145 280/482/145 +f 269/473/139 263/483/146 268/484/146 +f 273/476/141 259/485/147 272/486/147 +f 276/479/143 256/487/148 275/488/148 +f 280/482/145 252/489/149 279/490/149 +f 268/484/146 264/491/150 267/492/150 +f 272/486/147 260/493/151 271/494/151 +f 275/488/148 257/495/140 274/496/140 +f 279/490/149 253/497/152 278/498/152 +f 266/499/153 250/500/144 281/480/144 +f 278/498/152 254/501/142 277/477/142 +f 271/494/151 261/502/138 270/471/138 +f 267/492/150 265/503/153 266/499/153 +f 243/504/150 228/425/146 227/427/150 +f 236/505/143 221/459/142 220/422/143 +f 244/506/146 229/457/139 228/425/146 +f 237/507/142 222/450/152 221/459/142 +f 245/508/139 230/453/138 229/457/139 +f 238/509/152 223/445/149 222/450/152 +f 246/510/138 231/449/151 230/453/138 +f 239/511/149 224/440/145 223/445/149 +f 247/512/151 232/444/147 231/449/151 +f 240/513/145 225/435/144 224/440/145 +f 248/514/147 233/439/141 232/444/147 +f 241/515/144 226/465/153 225/435/144 +f 234/516/140 219/429/148 218/434/140 +f 249/517/141 218/434/140 233/439/141 +f 242/518/153 227/427/150 226/430/153 +f 235/519/148 220/422/143 219/429/148 +f 270/471/138 261/502/138 262/472/139 +f 274/474/140 257/520/140 258/475/141 +f 277/477/142 254/501/142 255/478/143 +f 281/480/144 250/500/144 251/481/145 +f 269/473/139 262/472/139 263/483/146 +f 273/476/141 258/475/141 259/485/147 +f 276/479/143 255/478/143 256/487/148 +f 280/482/145 251/481/145 252/489/149 +f 268/484/146 263/483/146 264/491/150 +f 272/486/147 259/485/147 260/493/151 +f 275/488/148 256/487/148 257/495/140 +f 279/490/149 252/489/149 253/497/152 +f 266/499/153 265/503/153 250/500/144 +f 278/498/152 253/497/152 254/501/142 +f 271/494/151 260/493/151 261/502/138 +f 267/492/150 264/491/150 265/503/153 +f 243/504/150 244/506/146 228/425/146 +f 236/505/143 237/507/142 221/459/142 +f 244/506/146 245/508/139 229/457/139 +f 237/507/142 238/509/152 222/450/152 +f 245/508/139 246/510/138 230/453/138 +f 238/509/152 239/511/149 223/445/149 +f 246/510/138 247/512/151 231/449/151 +f 239/511/149 240/513/145 224/440/145 +f 247/512/151 248/514/147 232/444/147 +f 240/513/145 241/515/144 225/435/144 +f 248/514/147 249/517/141 233/439/141 +f 241/515/144 242/521/153 226/465/153 +f 234/516/140 235/519/148 219/429/148 +f 249/517/141 234/516/140 218/434/140 +f 242/518/153 243/504/150 227/427/150 +f 235/519/148 236/505/143 220/422/143 +o Cannon +v 0.000000 2.000000 0.500000 +v -0.382683 1.923880 0.500000 +v -0.707107 1.707107 0.500000 +v -0.923880 1.382683 0.500000 +v -1.000000 1.000000 0.500000 +v -0.923880 0.617316 0.500000 +v -0.707107 0.292893 0.500000 +v -0.382683 0.076120 0.500000 +v 0.000000 0.000000 0.500000 +v 0.382683 0.076120 0.500000 +v 0.707107 0.292893 0.500000 +v 0.923880 0.617316 0.500000 +v 1.000000 1.000000 0.500000 +v 0.923880 1.382684 0.500000 +v 0.707107 1.707107 0.500000 +v 0.382683 1.923880 0.500000 +v 0.000000 1.750000 0.500000 +v -0.287013 1.692910 0.500000 +v -0.530330 1.530330 0.500000 +v -0.692910 1.287013 0.500000 +v -0.750000 1.000000 0.500000 +v -0.692910 0.712987 0.500000 +v -0.530330 0.469670 0.500000 +v -0.287013 0.307090 0.500000 +v 0.000000 0.250000 0.500000 +v 0.287013 0.307090 0.500000 +v 0.530330 0.469670 0.500000 +v 0.692910 0.712987 0.500000 +v 0.750000 1.000000 0.500000 +v 0.692910 1.287013 0.500000 +v 0.530330 1.530330 0.500000 +v 0.287012 1.692910 0.500000 +v 0.000000 2.250000 0.500000 +v -0.478354 2.154850 0.500000 +v -0.883883 1.883883 0.500000 +v -1.154850 1.478354 0.500000 +v -1.250000 1.000000 0.500000 +v -1.154850 0.521646 0.500000 +v -0.883883 0.116117 0.500000 +v -0.478354 -0.154850 0.500000 +v -0.000000 -0.250000 0.500000 +v 0.478354 -0.154850 0.500000 +v 0.883883 0.116117 0.500000 +v 1.154849 0.521646 0.500000 +v 1.250000 1.000000 0.500000 +v 1.154849 1.478354 0.500000 +v 0.883883 1.883883 0.500000 +v 0.478354 2.154850 0.500000 +v 0.000000 2.250000 -4.000000 +v -0.478354 2.154850 -4.000000 +v -0.883883 1.883883 -4.000000 +v -1.154850 1.478354 -4.000000 +v -1.250000 1.000000 -4.000000 +v -1.154850 0.521646 -4.000000 +v -0.883883 0.116117 -4.000000 +v -0.478354 -0.154850 -4.000000 +v -0.000000 -0.250000 -4.000000 +v 0.478354 -0.154850 -4.000000 +v 0.883883 0.116117 -4.000000 +v 1.154849 0.521646 -4.000000 +v 1.250000 1.000000 -4.000000 +v 1.154849 1.478354 -4.000000 +v 0.883883 1.883883 -4.000000 +v 0.478354 2.154850 -4.000000 +v 0.000000 2.000000 -4.000000 +v -0.382683 1.923880 -4.000000 +v -0.707107 1.707107 -4.000000 +v -0.923880 1.382683 -4.000000 +v -1.000000 1.000000 -4.000000 +v -0.923880 0.617316 -4.000000 +v -0.707107 0.292893 -4.000000 +v -0.382683 0.076120 -4.000000 +v 0.000000 0.000000 -4.000000 +v 0.382683 0.076120 -4.000000 +v 0.707107 0.292893 -4.000000 +v 0.923880 0.617316 -4.000000 +v 1.000000 1.000000 -4.000000 +v 0.923880 1.382684 -4.000000 +v 0.707107 1.707107 -4.000000 +v 0.382683 1.923880 -4.000000 +v 0.000000 2.000000 -3.500000 +v -0.382683 1.923880 -3.500000 +v -0.707107 1.707107 -3.500000 +v -0.923880 1.382683 -3.500000 +v -1.000000 1.000000 -3.500000 +v -0.923880 0.617316 -3.500000 +v -0.707107 0.292893 -3.500000 +v -0.382683 0.076120 -3.500000 +v 0.000000 0.000000 -3.500000 +v 0.382683 0.076120 -3.500000 +v 0.707107 0.292893 -3.500000 +v 0.923880 0.617316 -3.500000 +v 1.000000 1.000000 -3.500000 +v 0.923880 1.382684 -3.500000 +v 0.707107 1.707107 -3.500000 +v 0.382683 1.923880 -3.500000 +v -0.250000 -0.375000 -2.000000 +v 0.250000 -0.375000 -2.000000 +v -0.250000 -0.375000 -3.000000 +v 0.250000 -0.375000 -3.000000 +v -0.250000 -0.187500 -2.000000 +v 0.250000 -0.187500 -2.000000 +v -0.250000 -0.187500 -3.000000 +v 0.250000 -0.187500 -3.000000 +v 0.187500 -1.375000 -2.125000 +v -0.187500 -1.375000 -2.125000 +v -0.187500 -1.375000 -3.125000 +v 0.187500 -1.375000 -3.125000 +v 0.187500 -1.250000 -3.125000 +v -0.187500 -1.250000 -3.125000 +v 0.187500 -1.250000 -2.125000 +v -0.187500 -1.250000 -2.125000 +v -0.125000 -0.375000 -2.625000 +v -0.062500 -0.375000 -2.562500 +v 0.062500 -0.375000 -2.562500 +v 0.125000 -0.375000 -2.625000 +v -0.062500 -0.375000 -2.937500 +v -0.125000 -0.375000 -2.875000 +v 0.125000 -0.375000 -2.875000 +v 0.062500 -0.375000 -2.937500 +v -0.125000 -1.250000 -3.000000 +v -0.062500 -1.250000 -3.062500 +v -0.062500 -1.250000 -2.687500 +v -0.125000 -1.250000 -2.750000 +v 0.125000 -1.250000 -2.750000 +v 0.062500 -1.250000 -2.687500 +v 0.062500 -1.250000 -3.062500 +v 0.125000 -1.250000 -3.000000 +v -0.187500 -0.375000 -2.000000 +v 0.187500 -0.375000 -2.000000 +v -0.187500 -1.250000 -2.125000 +v 0.187500 -1.250000 -2.125000 +v 0.187500 -1.250000 -2.250000 +v 0.187500 -0.375000 -2.125000 +v -0.187500 -0.375000 -2.125000 +v -0.187500 -1.250000 -2.250000 +v -0.062500 -0.375000 -2.500000 +v 0.062500 -0.375000 -2.500000 +v -0.062500 -0.625000 -2.437500 +v 0.062500 -0.625000 -2.437500 +v 0.062500 -0.375000 -2.562500 +v -0.062500 -0.375000 -2.562500 +v 0.062500 -0.625000 -2.625000 +v -0.062500 -0.625000 -2.625000 +v 1.315785 0.529006 -1.250000 +v 1.065785 0.095994 -1.250000 +v 1.315785 0.529006 -2.250000 +v 1.065785 0.095994 -2.250000 +v 1.153405 0.622756 -2.250000 +v 1.153405 0.622756 -1.250000 +v 0.903405 0.189744 -1.250000 +v 0.903405 0.189744 -2.250000 +v 1.190784 0.312500 -1.812500 +v 1.212882 0.350773 -1.794194 +v 1.222034 0.366626 -1.750000 +v 1.212882 0.350773 -1.705806 +v 1.190784 0.312500 -1.687500 +v 1.168688 0.274227 -1.705806 +v 1.159534 0.258373 -1.750000 +v 1.168688 0.274227 -1.794194 +v 1.407291 0.187500 -1.812500 +v 1.429388 0.225773 -1.794194 +v 1.438541 0.241626 -1.750000 +v 1.429388 0.225773 -1.705806 +v 1.407291 0.187500 -1.687500 +v 1.385194 0.149227 -1.705806 +v 1.376041 0.133373 -1.750000 +v 1.385194 0.149227 -1.794194 +v 1.623797 0.062500 -2.062500 +v 1.645895 0.100773 -2.044194 +v 1.655047 0.116626 -2.000000 +v 1.645895 0.100773 -1.955806 +v 1.623797 0.062500 -1.937500 +v 1.601700 0.024227 -1.955806 +v 1.592547 0.008373 -2.000000 +v 1.601700 0.024227 -2.044194 +v 1.732050 -0.000000 -2.062500 +v 1.754148 0.038273 -2.044194 +v 1.763300 0.054127 -2.000000 +v 1.754148 0.038273 -1.955806 +v 1.732050 -0.000000 -1.937500 +v 1.709953 -0.038273 -1.955806 +v 1.700800 -0.054127 -2.000000 +v 1.709953 -0.038273 -2.044194 +v 1.732050 -0.000000 -2.125000 +v 1.776245 0.076546 -2.088388 +v 1.794550 0.108253 -2.000000 +v 1.776245 0.076546 -1.911612 +v 1.732050 -0.000000 -1.875000 +v 1.687856 -0.076547 -1.911612 +v 1.669550 -0.108253 -2.000000 +v 1.687856 -0.076547 -2.088388 +v 2.381570 -0.375000 -2.125000 +v 2.425764 -0.298454 -2.088388 +v 2.444070 -0.266747 -2.000000 +v 2.425764 -0.298454 -1.911612 +v 2.381570 -0.375000 -1.875000 +v 2.337376 -0.451547 -1.911612 +v 2.319070 -0.483253 -2.000000 +v 2.337376 -0.451547 -2.088388 +v 1.375000 1.250000 -2.500000 +v 1.375000 0.750000 -2.500000 +v 1.375000 1.250000 -3.000000 +v 1.375000 0.750000 -3.000000 +v 1.187500 1.250000 -3.000000 +v 1.187500 1.250000 -2.500000 +v 1.187500 0.750000 -2.500000 +v 1.187500 0.750000 -3.000000 +v 1.437500 1.437500 -2.687500 +v 1.437500 0.562500 -2.687500 +v 1.437500 1.437500 -2.812500 +v 1.437500 0.562500 -2.812500 +v 2.562500 1.437500 -2.812500 +v 2.562500 1.437500 -2.687500 +v 2.562500 0.562500 -2.687500 +v 2.562500 0.562500 -2.812500 +v 1.375000 0.500000 -2.812500 +v 1.375000 1.500000 -2.812500 +v 2.625000 0.500000 -2.812500 +v 2.625000 1.500000 -2.812500 +v 1.375000 1.500000 -2.687500 +v 1.375000 0.500000 -2.687500 +v 2.625000 1.500000 -2.687500 +v 2.625000 0.500000 -2.687500 +v 1.500000 1.375000 -1.250000 +v 1.500000 0.625000 -1.250000 +v 1.500000 1.375000 -2.250000 +v 1.500000 0.625000 -2.250000 +v 1.125000 1.375000 -2.250000 +v 1.125000 1.375000 -1.250000 +v 1.125000 0.625000 -1.250000 +v 1.125000 0.625000 -2.250000 +v 1.281250 0.968750 -2.500000 +v 1.343750 0.968750 -2.500000 +v 1.281250 1.031250 -2.500000 +v 1.343750 1.031250 -2.500000 +v 1.281250 0.968750 -2.250000 +v 1.343750 0.968750 -2.250000 +v 1.281250 1.031250 -2.250000 +v 1.343750 1.031250 -2.250000 +v 1.281250 1.093750 -2.500000 +v 1.343750 1.093750 -2.500000 +v 1.281250 1.156250 -2.500000 +v 1.343750 1.156250 -2.500000 +v 1.281250 1.093750 -2.250000 +v 1.343750 1.093750 -2.250000 +v 1.281250 1.156250 -2.250000 +v 1.343750 1.156250 -2.250000 +v 1.281250 0.843750 -2.500000 +v 1.343750 0.843750 -2.500000 +v 1.281250 0.906250 -2.500000 +v 1.343750 0.906250 -2.500000 +v 1.281250 0.843750 -2.250000 +v 1.343750 0.843750 -2.250000 +v 1.281250 0.906250 -2.250000 +v 1.343750 0.906250 -2.250000 +v -0.375000 2.500000 -1.250000 +v 0.375000 2.500000 -1.250000 +v -0.375000 2.500000 -2.250000 +v 0.375000 2.500000 -2.250000 +v -0.375000 2.125000 -2.625000 +v -0.375000 2.125000 -1.250000 +v 0.375000 2.125000 -1.250000 +v 0.375000 2.125000 -2.625000 +v 0.375000 2.750000 -2.500000 +v 0.375000 2.750000 -1.000000 +v 0.551776 2.676777 -2.500000 +v 0.551776 2.676777 -1.000000 +v 0.625000 2.500000 -2.500000 +v 0.625000 2.500000 -1.000000 +v 0.551776 2.323223 -2.500000 +v 0.551776 2.323223 -1.000000 +v 0.375000 2.250000 -2.500000 +v 0.375000 2.250000 -1.000000 +v 0.198223 2.323223 -2.500000 +v 0.198223 2.323223 -1.000000 +v 0.125000 2.500000 -2.500000 +v 0.125000 2.500000 -1.000000 +v 0.198223 2.676777 -2.500000 +v 0.198223 2.676777 -1.000000 +v -0.218750 2.450000 -1.250000 +v -0.293880 2.418880 -1.250000 +v -0.325000 2.343750 -1.250000 +v -0.293880 2.268620 -1.250000 +v -0.218750 2.237500 -1.250000 +v -0.143620 2.268620 -1.250000 +v -0.112500 2.343750 -1.250000 +v -0.143620 2.418880 -1.250000 +v -0.218750 2.450000 -1.187500 +v -0.293880 2.418880 -1.187500 +v -0.325000 2.343750 -1.187500 +v -0.293880 2.268620 -1.187500 +v -0.218750 2.237500 -1.187500 +v -0.143620 2.268620 -1.187500 +v -0.112500 2.343750 -1.187500 +v -0.143620 2.418880 -1.187500 +v 0.507582 2.632582 -1.000000 +v 0.375000 2.687500 -1.000000 +v 0.562500 2.500000 -1.000000 +v 0.507582 2.367418 -1.000000 +v 0.375000 2.312500 -1.000000 +v 0.242417 2.367418 -1.000000 +v 0.187500 2.500000 -1.000000 +v 0.242417 2.632582 -1.000000 +v 0.507582 2.632582 -0.875000 +v 0.375000 2.687500 -0.875000 +v 0.562500 2.500000 -0.875000 +v 0.507582 2.367418 -0.875000 +v 0.375000 2.312500 -0.875000 +v 0.242417 2.367418 -0.875000 +v 0.187500 2.500000 -0.875000 +v 0.242417 2.632582 -0.875000 +v 0.000000 2.312500 -1.500000 +v 0.883883 1.883883 -1.625000 +v 0.478354 2.154849 -1.625000 +v 0.000000 2.312500 -1.625000 +v 0.000000 2.250000 -1.625000 +v 1.312500 1.000000 -1.625000 +v 1.250000 1.000000 -1.625000 +v 0.478354 2.154850 -1.500000 +v 0.883883 1.883883 -1.500000 +v 1.154849 1.478354 -1.500000 +v 1.250000 1.000000 -1.500000 +v 0.000000 2.250000 -1.500000 +v 1.312500 1.000000 -1.500000 +v 1.212592 1.502272 -1.500000 +v 0.928077 1.928078 -1.500000 +v 0.502271 2.212592 -1.500000 +v 1.154849 1.478354 -1.625000 +v 1.212592 1.502272 -1.625000 +v 0.928077 1.928078 -1.625000 +v 0.502271 2.212592 -1.625000 +v 0.502271 2.212592 -2.000000 +v 0.928077 1.928078 -2.000000 +v 1.212592 1.502272 -2.000000 +v 1.154849 1.478354 -2.000000 +v 0.502271 2.212592 -1.875000 +v 0.928077 1.928078 -1.875000 +v 1.212592 1.502272 -1.875000 +v 1.312500 1.000000 -1.875000 +v 0.000000 2.250000 -1.875000 +v 1.250000 1.000000 -1.875000 +v 1.154849 1.478354 -1.875000 +v 0.883883 1.883883 -1.875000 +v 0.478354 2.154850 -1.875000 +v 1.250000 1.000000 -2.000000 +v 1.312500 1.000000 -2.000000 +v 0.000000 2.250000 -2.000000 +v 0.000000 2.312500 -2.000000 +v 0.478354 2.154849 -2.000000 +v 0.883883 1.883883 -2.000000 +v 0.000000 2.312500 -1.875000 +v 0.000000 1.750000 -3.500000 +v -0.287013 1.692910 -3.500000 +v -0.530330 1.530330 -3.500000 +v -0.692910 1.287013 -3.500000 +v -0.750000 1.000000 -3.500000 +v -0.692910 0.712987 -3.500000 +v -0.530330 0.469670 -3.500000 +v -0.287013 0.307090 -3.500000 +v 0.000000 0.250000 -3.500000 +v 0.287013 0.307090 -3.500000 +v 0.530330 0.469670 -3.500000 +v 0.692910 0.712987 -3.500000 +v 0.750000 1.000000 -3.500000 +v 0.692910 1.287013 -3.500000 +v 0.530330 1.530330 -3.500000 +v 0.287012 1.692910 -3.500000 +vt 0.455224 0.320312 +vt 0.462687 0.375000 +vt 0.455224 0.367188 +vt 0.455224 0.382812 +vt 0.462687 0.437500 +vt 0.455224 0.429688 +vt 0.455224 0.492188 +vt 0.455224 0.445312 +vt 0.462687 0.500000 +vt 0.455224 0.554688 +vt 0.455224 0.507812 +vt 0.462687 0.562500 +vt 0.455224 0.617188 +vt 0.455224 0.570312 +vt 0.462687 0.625000 +vt 0.455224 0.679688 +vt 0.455224 0.632812 +vt 0.455224 0.695312 +vt 0.462687 0.750000 +vt 0.455224 0.742188 +vt 0.455224 0.804688 +vt 0.455224 0.757812 +vt 0.455224 0.820312 +vt 0.462687 0.875000 +vt 0.455224 0.867188 +vt 0.455224 0.929688 +vt 0.455224 0.882812 +vt 0.455224 0.945312 +vt 0.462687 1.000000 +vt 0.455224 0.992188 +vt 0.455224 0.007812 +vt 0.462687 0.062500 +vt 0.455224 0.054688 +vt 0.455224 0.117188 +vt 0.455224 0.070312 +vt 0.462687 0.125000 +vt 0.455224 0.179688 +vt 0.455224 0.132812 +vt 0.462687 0.187500 +vt 0.455224 0.242188 +vt 0.455224 0.195312 +vt 0.462687 0.250000 +vt 0.455224 0.304688 +vt 0.455224 0.257812 +vt 0.604478 0.257812 +vt 0.597015 0.312500 +vt 0.597015 0.250000 +vt 0.604478 0.320312 +vt 0.597015 0.375000 +vt 0.604478 0.382812 +vt 0.597015 0.437500 +vt 0.604478 0.492188 +vt 0.597015 0.500000 +vt 0.604478 0.554688 +vt 0.597015 0.562500 +vt 0.604478 0.570312 +vt 0.597015 0.625000 +vt 0.604478 0.632812 +vt 0.597015 0.687500 +vt 0.604478 0.695312 +vt 0.597015 0.750000 +vt 0.604478 0.757812 +vt 0.597015 0.812500 +vt 0.604478 0.820312 +vt 0.597015 0.875000 +vt 0.604478 0.882812 +vt 0.597015 0.937500 +vt 0.604478 0.945312 +vt 0.597015 1.000000 +vt 0.604478 0.007812 +vt 0.597015 0.062500 +vt 0.597015 0.000000 +vt 0.604478 0.070312 +vt 0.597015 0.125000 +vt 0.604478 0.179688 +vt 0.597015 0.187500 +vt 0.604478 0.195312 +vt 0.626866 0.421875 +vt 0.619403 0.468750 +vt 0.619403 0.421875 +vt 0.619403 0.328125 +vt 0.626866 0.367188 +vt 0.619403 0.375000 +vt 0.626866 0.234375 +vt 0.619403 0.281250 +vt 0.619403 0.234375 +vt 0.626866 0.140625 +vt 0.619403 0.187500 +vt 0.619403 0.140625 +vt 0.626866 0.046875 +vt 0.619403 0.093750 +vt 0.619403 0.046875 +vt 0.626866 0.703125 +vt 0.619403 0.750000 +vt 0.619403 0.703125 +vt 0.626866 0.609375 +vt 0.619403 0.656250 +vt 0.619403 0.609375 +vt 0.626866 0.515625 +vt 0.619403 0.562500 +vt 0.619403 0.515625 +vt 0.619403 0.000000 +vt 0.626866 0.039062 +vt 0.626866 0.695312 +vt 0.626866 0.601562 +vt 0.626866 0.507812 +vt 0.626866 0.414062 +vt 0.626866 0.281250 +vt 0.626866 0.226562 +vt 0.626866 0.132812 +vt 0.449627 0.773438 +vt 0.419776 0.835938 +vt 0.419776 0.773438 +vt 0.455224 0.835938 +vt 0.449627 0.835938 +vt 0.414179 0.773438 +vt 0.419776 0.859375 +vt 0.449627 0.750000 +vt 0.389925 0.750000 +vt 0.360075 0.796875 +vt 0.360075 0.750000 +vt 0.410448 0.968750 +vt 0.414179 0.859375 +vt 0.414179 0.968750 +vt 0.395522 0.968750 +vt 0.399254 0.859375 +vt 0.399254 0.968750 +vt 0.360075 0.812500 +vt 0.389925 0.859375 +vt 0.360075 0.859375 +vt 0.408582 0.968750 +vt 0.401119 0.859375 +vt 0.408582 0.859375 +vt 0.401119 0.968750 +vt 0.410448 0.859375 +vt 0.416045 0.859375 +vt 0.416045 0.968750 +vt 0.425373 0.859375 +vt 0.423507 0.968750 +vt 0.423507 0.859375 +vt 0.360075 0.875000 +vt 0.389925 0.812500 +vt 0.393657 0.859375 +vt 0.389925 0.796875 +vt 0.356343 0.812500 +vt 0.425373 0.859375 +vt 0.436567 0.968750 +vt 0.425373 0.968750 +vt 0.440298 0.968750 +vt 0.451493 0.859375 +vt 0.451493 0.968750 +vt 0.455224 0.859375 +vt 0.397388 0.781250 +vt 0.389925 0.796875 +vt 0.389925 0.781250 +vt 0.436567 0.859375 +vt 0.399254 0.750000 +vt 0.402985 0.781250 +vt 0.080224 0.820312 +vt 0.110075 0.882812 +vt 0.080224 0.882812 +vt 0.397388 0.796875 +vt 0.401119 0.828125 +vt 0.399254 0.828125 +vt 0.402985 0.796875 +vt 0.110075 0.796875 +vt 0.110075 0.820312 +vt 0.115672 0.820312 +vt 0.115672 0.882812 +vt 0.074627 0.820312 +vt 0.080224 0.906250 +vt 0.764925 0.851562 +vt 0.766791 0.843750 +vt 0.766791 0.859375 +vt 0.764925 0.757812 +vt 0.766791 0.750000 +vt 0.766791 0.765625 +vt 0.764925 0.789062 +vt 0.766791 0.781250 +vt 0.766791 0.796875 +vt 0.764925 0.835938 +vt 0.766791 0.828125 +vt 0.764925 0.859375 +vt 0.766791 0.875000 +vt 0.764925 0.867188 +vt 0.764925 0.765625 +vt 0.764925 0.773438 +vt 0.764925 0.796875 +vt 0.766791 0.812500 +vt 0.764925 0.804688 +vt 0.764925 0.820312 +vt 0.789154 0.765625 +vt 0.792910 0.749897 +vt 0.796666 0.765625 +vt 0.132463 0.882812 +vt 0.147388 0.945312 +vt 0.132463 0.945312 +vt 0.830224 0.937500 +vt 0.833955 0.812500 +vt 0.833955 0.937500 +vt 0.126866 0.882812 +vt 0.147388 0.859375 +vt 0.147388 0.882812 +vt 0.132463 0.968750 +vt 0.152985 0.945312 +vt 0.789179 0.812500 +vt 0.792910 0.937500 +vt 0.789179 0.937500 +vt 0.830224 0.953125 +vt 0.828358 0.820312 +vt 0.794776 0.835938 +vt 0.794776 0.820312 +vt 0.839552 0.929688 +vt 0.835821 0.820312 +vt 0.839552 0.820312 +vt 0.830224 0.812500 +vt 0.792910 0.796875 +vt 0.830224 0.796875 +vt 0.828358 0.929688 +vt 0.794776 0.929688 +vt 0.792910 0.812500 +vt 0.835821 0.929688 +vt 0.869403 0.820312 +vt 0.871269 0.937500 +vt 0.869403 0.929688 +vt 0.871269 0.812500 +vt 0.865672 0.929688 +vt 0.865672 0.820312 +vt 0.794776 0.914062 +vt 0.313433 0.796875 +vt 0.343284 0.890625 +vt 0.313433 0.890625 +vt 0.242537 0.796875 +vt 0.250000 0.789062 +vt 0.250000 0.796875 +vt 0.343284 0.796875 +vt 0.354478 0.890625 +vt 0.302239 0.796875 +vt 0.343284 0.750000 +vt 0.313433 0.937500 +vt 0.242537 0.812500 +vt 0.250000 0.804688 +vt 0.250000 0.812500 +vt 0.242537 0.804688 +vt 0.242537 0.789062 +vt 0.250000 0.781250 +vt 0.242537 0.828125 +vt 0.250000 0.820312 +vt 0.250000 0.828125 +vt 0.242537 0.843750 +vt 0.250000 0.835938 +vt 0.250000 0.843750 +vt 0.242537 0.835938 +vt 0.242537 0.820312 +vt 0.250000 0.812500 +vt 0.242537 0.765625 +vt 0.250000 0.757812 +vt 0.250000 0.765625 +vt 0.242537 0.781250 +vt 0.250000 0.773438 +vt 0.250000 0.781250 +vt 0.242537 0.773438 +vt 0.242537 0.757812 +vt 0.250000 0.750000 +vt 0.261194 0.796875 +vt 0.291045 0.890625 +vt 0.261194 0.890625 +vt 0.291045 0.796875 +vt 0.302239 0.890625 +vt 0.250000 0.796875 +vt 0.261194 0.750000 +vt 0.302239 0.750000 +vt 0.261194 0.937500 +vt 0.875000 0.742188 +vt 0.873134 0.757812 +vt 0.873134 0.742188 +vt 0.921958 0.634135 +vt 0.932520 0.634135 +vt 0.932520 0.678365 +vt 0.925373 0.734382 +vt 0.929103 0.750000 +vt 0.925373 0.765618 +vt 0.875000 0.671875 +vt 0.873134 0.687500 +vt 0.873134 0.671875 +vt 0.875000 0.789062 +vt 0.873134 0.804688 +vt 0.873134 0.789062 +vt 0.873134 0.718750 +vt 0.875000 0.718750 +vt 0.873134 0.695312 +vt 0.875000 0.695312 +vt 0.873134 0.648438 +vt 0.875000 0.648438 +vt 0.873134 0.765625 +vt 0.875000 0.765625 +vt 0.873134 0.625000 +vt 0.875000 0.625000 +vt 0.925373 0.687509 +vt 0.929329 0.694371 +vt 0.930968 0.710938 +vt 0.074627 0.843750 +vt 0.059701 0.851562 +vt 0.059701 0.843750 +vt 0.074627 0.875000 +vt 0.059701 0.867188 +vt 0.074627 0.867188 +vt 0.074627 0.875000 +vt 0.059701 0.867188 +vt 0.074627 0.867188 +vt 0.044776 0.851562 +vt 0.029851 0.843750 +vt 0.044776 0.843750 +vt 0.029851 0.851562 +vt 0.014925 0.843750 +vt 0.029851 0.867188 +vt 0.014925 0.875000 +vt 0.014925 0.867188 +vt 0.044776 0.867188 +vt 0.029851 0.875000 +vt 0.044776 0.875000 +vt 0.074627 0.843750 +vt 0.059701 0.851562 +vt 0.059701 0.843750 +vt 0.044776 0.851562 +vt 0.029851 0.843750 +vt 0.044776 0.843750 +vt 0.029851 0.851562 +vt 0.014925 0.843750 +vt 0.029851 0.867188 +vt 0.014925 0.875000 +vt 0.014925 0.867188 +vt 0.044776 0.867188 +vt 0.029851 0.875000 +vt 0.044776 0.875000 +vt 0.462687 0.312500 +vt 0.462687 0.687500 +vt 0.462687 0.812500 +vt 0.462687 0.937500 +vt 0.462687 0.000000 +vt 0.604478 0.304688 +vt 0.604478 0.367188 +vt 0.604478 0.429688 +vt 0.604478 0.445312 +vt 0.604478 0.507812 +vt 0.604478 0.617188 +vt 0.604478 0.679688 +vt 0.604478 0.742188 +vt 0.604478 0.804688 +vt 0.604478 0.867188 +vt 0.604478 0.929688 +vt 0.604478 0.992188 +vt 0.604478 0.054688 +vt 0.604478 0.117188 +vt 0.604478 0.132812 +vt 0.604478 0.242188 +vt 0.626866 0.460938 +vt 0.626866 0.328125 +vt 0.626866 0.273438 +vt 0.626866 0.179688 +vt 0.626866 0.085938 +vt 0.626866 0.742188 +vt 0.626866 0.648438 +vt 0.626866 0.554688 +vt 0.626866 0.000000 +vt 0.626866 0.656250 +vt 0.626866 0.562500 +vt 0.626866 0.468750 +vt 0.626866 0.375000 +vt 0.626866 0.320312 +vt 0.626866 0.187500 +vt 0.626866 0.093750 +vt 0.455224 0.773438 +vt 0.414179 0.835938 +vt 0.449627 0.859375 +vt 0.419776 0.750000 +vt 0.395522 0.859375 +vt 0.425373 0.968750 +vt 0.389925 0.875000 +vt 0.393657 0.812500 +vt 0.356343 0.859375 +vt 0.440298 0.859375 +vt 0.455224 0.968750 +vt 0.401119 0.750000 +vt 0.080224 0.796875 +vt 0.074627 0.882812 +vt 0.110075 0.906250 +vt 0.764925 0.843750 +vt 0.764925 0.750000 +vt 0.764925 0.781250 +vt 0.764925 0.828125 +vt 0.764925 0.812500 +vt 0.795566 0.776746 +vt 0.792910 0.781353 +vt 0.790255 0.776746 +vt 0.790255 0.754503 +vt 0.795566 0.754503 +vt 0.126866 0.945312 +vt 0.132463 0.859375 +vt 0.147388 0.968750 +vt 0.152985 0.882812 +vt 0.792910 0.953125 +vt 0.828358 0.835938 +vt 0.828358 0.914062 +vt 0.354478 0.796875 +vt 0.302239 0.890625 +vt 0.313433 0.750000 +vt 0.343284 0.937500 +vt 0.242537 0.781250 +vt 0.242537 0.812500 +vt 0.242537 0.750000 +vt 0.302239 0.796875 +vt 0.250000 0.890625 +vt 0.302239 0.937500 +vt 0.927239 0.687525 +vt 0.921958 0.678365 +vt 0.919770 0.656250 +vt 0.927239 0.624975 +vt 0.934708 0.656250 +vt 0.922736 0.761044 +vt 0.921643 0.750000 +vt 0.922736 0.738956 +vt 0.928010 0.738957 +vt 0.928010 0.761044 +vt 0.875000 0.812500 +vt 0.873134 0.734375 +vt 0.873134 0.710938 +vt 0.873134 0.664062 +vt 0.873134 0.781250 +vt 0.873134 0.640625 +vt 0.929329 0.727504 +vt 0.925373 0.734367 +vt 0.921417 0.727504 +vt 0.919778 0.710938 +vt 0.921417 0.694371 +vt 0.074627 0.851562 +vt 0.059701 0.875000 +vt 0.059701 0.875000 +vt 0.014925 0.851562 +vt 0.074627 0.851562 +vt 0.014925 0.851562 +vt 0.604478 0.000000 +vt 0.604478 0.046875 +vt 0.604478 0.421875 +vt 0.604478 0.468750 +vt 0.604478 0.093750 +vt 0.604478 0.515625 +vt 0.604478 0.140625 +vt 0.604478 0.562500 +vt 0.604478 0.187500 +vt 0.604478 0.609375 +vt 0.604478 0.234375 +vt 0.604478 0.656250 +vt 0.604478 0.281250 +vt 0.604478 0.703125 +vt 0.604478 0.328125 +vt 0.604478 0.750000 +vt 0.604478 0.375000 +vt 0.746269 0.773438 +vt 0.753731 0.765625 +vt 0.753731 0.773438 +vt 0.746269 0.796875 +vt 0.753731 0.789062 +vt 0.753731 0.796875 +vt 0.746269 0.804688 +vt 0.753731 0.812500 +vt 0.746269 0.812500 +vt 0.746269 0.757812 +vt 0.746269 0.765625 +vt 0.746269 0.781250 +vt 0.753731 0.781250 +vt 0.746269 0.789062 +vt 0.753731 0.804688 +vt 0.746269 0.750000 +vt 0.753731 0.757812 +vt 0.761194 0.812500 +vt 0.761194 0.757812 +vt 0.761194 0.765625 +vt 0.761194 0.773438 +vt 0.761194 0.781250 +vt 0.761194 0.789062 +vt 0.761194 0.804688 +vt 0.761194 0.750000 +vt 0.761194 0.796875 +vt 0.764925 0.789062 +vt 0.764925 0.796875 +vt 0.764925 0.804688 +vt 0.764925 0.812500 +vt 0.764925 0.765625 +vt 0.764925 0.773438 +vt 0.764925 0.781250 +vt 0.789179 0.812500 +vt 0.789179 0.828125 +vt 0.789179 0.859375 +vt 0.789179 0.765625 +vt 0.789179 0.781250 +vt 0.789179 0.796875 +vt 0.789179 0.843750 +vt 0.789179 0.875000 +vt 0.919776 0.695312 +vt 0.919776 0.718750 +vt 0.919776 0.671875 +vt 0.919776 0.648438 +vt 0.919776 0.625000 +vt 0.919776 0.789062 +vt 0.919776 0.812500 +vt 0.919776 0.765625 +vt 0.919776 0.742188 +vt 0.921642 0.765625 +vt 0.919776 0.757812 +vt 0.921642 0.757812 +vt 0.921642 0.750000 +vt 0.919776 0.742188 +vt 0.921642 0.742188 +vt 0.921642 0.796875 +vt 0.919776 0.789062 +vt 0.921642 0.789062 +vt 0.921642 0.781250 +vt 0.919776 0.773438 +vt 0.921642 0.773438 +vt 0.919776 0.750000 +vt 0.919776 0.734375 +vt 0.921642 0.734375 +vt 0.919776 0.781250 +vt 0.919776 0.765625 +vt 0.869403 0.765625 +vt 0.869403 0.625000 +vt 0.869403 0.671875 +vt 0.869403 0.742188 +vt 0.869403 0.789062 +vt 0.869403 0.648438 +vt 0.869403 0.695312 +vt 0.869403 0.718750 +vt 0.626866 0.273438 +vt 0.746269 0.312500 +vt 0.626866 0.312500 +vt 0.626866 0.195312 +vt 0.746269 0.234375 +vt 0.626866 0.234375 +vt 0.626866 0.117188 +vt 0.746269 0.156250 +vt 0.626866 0.156250 +vt 0.746269 0.351562 +vt 0.626866 0.351562 +vt 0.626866 0.585938 +vt 0.746269 0.625000 +vt 0.626866 0.625000 +vt 0.746269 0.195312 +vt 0.626866 0.039062 +vt 0.746269 0.078125 +vt 0.626866 0.078125 +vt 0.626866 0.429688 +vt 0.746269 0.468750 +vt 0.626866 0.468750 +vt 0.626866 0.390625 +vt 0.746269 0.429688 +vt 0.626866 -0.000000 +vt 0.746269 0.039062 +vt 0.746269 0.273438 +vt 0.626866 0.507812 +vt 0.746269 0.546875 +vt 0.626866 0.546875 +vt 0.746269 0.117188 +vt 0.746269 0.507812 +vt 0.746269 0.390625 +vt 0.746269 0.585938 +vt 0.753731 0.750000 +vt 0.789179 0.750000 +vt 0.919776 0.796875 +vt 0.869403 0.781250 +vt 0.869403 0.640625 +vt 0.869403 0.687500 +vt 0.869403 0.757812 +vt 0.869403 0.804688 +vt 0.869403 0.664062 +vt 0.869403 0.710938 +vt 0.869403 0.734375 +vt 0.746269 0.000000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.1414 -0.9899 +vn 0.0000 -0.1414 0.9899 +vn 0.0000 1.0000 0.0000 +vn 0.7035 -0.1005 0.7035 +vn 0.7035 0.1005 -0.7035 +vn -0.7035 0.1005 -0.7035 +vn -0.7035 -0.1005 0.7035 +vn 0.0000 0.2425 0.9701 +vn 0.8660 -0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.8660 0.5000 -0.0000 +vn 0.0000 0.7071 -0.7071 +vn -0.9239 0.3827 0.0000 +vn 0.9239 -0.3827 0.0000 +vn -0.9239 -0.3827 0.0000 +vn 0.9239 0.3827 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.3827 -0.9239 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.3536 0.6124 -0.7071 +vn 0.5738 0.8140 0.0899 +vn 0.1205 0.7727 -0.6233 +vn -0.6089 -0.4907 -0.6233 +vn -0.4181 -0.9040 0.0899 +vn -0.3536 -0.6124 0.7071 +vn 0.3058 -0.1766 0.9356 +vn 0.3536 0.6124 0.7071 +vn -0.3639 0.2101 -0.9074 +vn -0.3536 -0.6124 -0.7071 +vn -0.0595 -0.7094 0.7023 +vn 0.5846 0.4062 0.7023 +vn 0.3639 -0.2101 0.9074 +vn 0.6089 0.4907 0.6233 +vn 0.4181 0.9040 -0.0899 +vn 0.0595 0.7094 -0.7023 +vn -0.3058 0.1766 -0.9356 +vn -0.5846 -0.4062 -0.7023 +vn -0.1205 -0.7727 0.6233 +vn -0.5738 -0.8140 -0.0899 +vn 0.1951 0.9808 -0.0000 +vn 0.9808 0.1951 0.0000 +s off +f 295/522/154 328/523/154 296/524/154 +f 296/525/154 329/526/154 297/527/154 +f 329/526/154 282/528/154 297/529/154 +f 314/530/154 283/531/154 282/532/154 +f 315/533/154 284/534/154 283/535/154 +f 316/536/154 285/537/154 284/538/154 +f 285/539/154 318/540/154 286/541/154 +f 318/540/154 287/542/154 286/543/154 +f 287/544/154 320/545/154 288/546/154 +f 320/545/154 289/547/154 288/548/154 +f 289/549/154 322/550/154 290/551/154 +f 290/552/154 323/553/154 291/554/154 +f 323/553/154 292/555/154 291/556/154 +f 324/557/154 293/558/154 292/559/154 +f 325/560/154 294/561/154 293/562/154 +f 326/563/154 295/564/154 294/565/154 +f 358/566/155 343/567/155 342/568/155 +f 359/569/155 344/570/155 343/567/155 +f 360/571/155 345/572/155 344/570/155 +f 345/572/155 346/573/155 330/574/155 +f 330/574/155 347/575/155 331/576/155 +f 347/577/155 332/578/155 331/576/155 +f 348/579/155 333/580/155 332/578/155 +f 349/581/155 334/582/155 333/580/155 +f 350/583/155 335/584/155 334/582/155 +f 351/585/155 336/586/155 335/584/155 +f 352/587/155 337/588/155 336/586/155 +f 353/589/155 338/590/155 337/588/155 +f 354/591/155 339/592/155 338/593/155 +f 355/594/155 340/595/155 339/592/155 +f 340/595/155 357/596/155 341/597/155 +f 357/598/155 342/568/155 341/597/155 +f 635/599/155 364/600/155 363/601/155 +f 377/602/155 634/603/155 362/604/155 +f 647/605/155 376/606/155 375/607/155 +f 645/608/155 374/609/155 373/610/155 +f 643/611/155 372/612/155 371/613/155 +f 641/614/155 370/615/155 369/616/155 +f 639/617/155 368/618/155 367/619/155 +f 637/620/155 366/621/155 365/622/155 +f 370/623/155 643/624/155 371/613/155 +f 368/618/155 641/625/155 369/616/155 +f 366/621/155 639/626/155 367/619/155 +f 364/600/155 637/627/155 365/622/155 +f 362/604/155 635/628/155 363/601/155 +f 648/629/155 377/602/155 376/606/155 +f 374/609/155 647/630/155 375/607/155 +f 372/612/155 645/631/155 373/610/155 +f 380/632/156 379/633/156 378/634/156 +f 380/632/155 385/635/155 381/636/155 +f 379/633/154 382/637/154 378/634/154 +f 381/636/157 383/638/157 379/633/157 +f 378/634/158 384/639/158 380/632/158 +f 388/640/156 386/641/156 387/642/156 +f 401/643/159 403/644/159 398/645/159 +f 395/646/160 407/647/160 396/648/160 +f 392/649/161 391/650/161 393/651/161 +f 400/652/157 406/653/157 409/654/157 +f 407/647/162 397/655/162 396/648/162 +f 401/643/163 409/654/163 408/656/163 +f 398/645/164 402/657/164 399/658/164 +f 404/659/165 394/660/165 405/661/165 +f 399/658/158 405/661/158 394/660/158 +f 391/650/158 387/662/158 393/651/158 +f 390/663/155 388/664/155 391/650/155 +f 392/649/157 389/665/157 390/663/157 +f 393/651/154 386/666/154 392/649/154 +f 412/667/160 411/668/160 410/669/160 +f 415/670/159 417/671/159 416/672/159 +f 412/673/158 416/672/158 417/671/158 +f 420/674/166 419/675/166 418/676/166 +f 413/677/157 415/670/157 411/668/157 +f 418/678/158 425/679/158 420/674/158 +f 427/680/167 428/681/167 426/682/167 +f 421/683/157 422/684/157 419/685/157 +f 420/674/156 424/686/156 421/683/156 +f 427/680/168 433/687/168 429/688/168 +f 428/681/155 433/689/155 430/690/155 +f 426/682/154 432/691/154 427/680/154 +f 428/681/169 431/692/169 426/682/169 +f 463/693/170 472/694/170 471/695/170 +f 461/696/170 470/697/170 469/698/170 +f 459/699/170 468/700/170 467/701/170 +f 464/702/170 473/703/170 472/694/170 +f 463/704/170 470/705/170 462/706/170 +f 461/707/170 468/700/170 460/708/170 +f 459/709/170 466/710/170 458/711/170 +f 465/712/170 466/710/170 473/703/170 +f 478/713/167 480/714/167 474/715/167 +f 483/716/157 484/717/157 482/718/157 +f 499/719/158 503/720/158 502/721/158 +f 482/718/154 488/722/154 483/716/154 +f 483/716/156 489/723/156 485/724/156 +f 484/717/161 487/725/161 482/718/161 +f 485/724/155 486/726/155 484/717/155 +f 505/727/157 501/728/157 504/729/157 +f 502/730/161 501/728/161 499/719/161 +f 493/731/161 496/732/161 497/733/161 +f 492/734/157 491/735/157 493/736/157 +f 498/737/156 505/738/156 503/739/156 +f 493/731/155 499/719/155 492/740/155 +f 494/741/155 500/742/155 497/733/155 +f 492/740/155 501/728/155 494/741/155 +f 497/733/155 498/737/155 493/731/155 +f 490/743/154 503/720/154 491/735/154 +f 496/744/154 504/745/154 495/746/154 +f 495/746/154 502/721/154 490/743/154 +f 491/735/154 505/747/154 496/744/154 +f 496/744/158 494/748/158 497/749/158 +f 495/750/156 492/740/156 494/741/156 +f 507/751/157 508/752/157 506/753/157 +f 521/754/157 515/755/157 517/756/157 +f 509/757/155 510/758/155 508/752/155 +f 506/753/154 512/759/154 507/751/154 +f 507/751/156 513/760/156 509/757/156 +f 508/752/161 511/761/161 506/753/161 +f 518/762/158 516/763/158 514/764/158 +f 520/765/161 517/756/161 516/763/161 +f 519/766/156 514/767/156 515/755/156 +f 529/768/157 523/769/157 525/770/157 +f 526/771/158 524/772/158 522/773/158 +f 528/774/161 525/770/161 524/772/161 +f 527/775/156 522/776/156 523/769/156 +f 537/777/157 531/778/157 533/779/157 +f 534/780/158 532/781/158 530/782/158 +f 536/783/161 533/779/161 532/781/161 +f 535/784/156 530/785/156 531/778/156 +f 539/786/161 540/787/161 538/788/161 +f 541/789/171 542/790/171 540/787/171 +f 538/788/154 544/791/154 539/786/154 +f 541/789/157 544/792/157 545/793/157 +f 540/787/158 543/794/158 538/788/158 +f 561/795/154 584/796/154 585/797/154 +f 552/798/155 556/799/155 560/800/155 +f 574/801/154 576/802/154 570/803/154 +f 551/804/154 578/805/154 580/806/154 +f 557/807/154 582/808/154 583/809/154 +f 561/795/154 579/810/154 547/811/154 +f 547/811/154 578/812/154 549/813/154 +f 551/804/154 581/814/154 553/815/154 +f 557/807/154 584/816/154 559/817/154 +f 553/815/154 582/818/154 555/819/154 +f 590/820/154 589/821/154 588/822/154 +f 604/823/154 607/824/154 603/825/154 +f 600/826/155 611/827/155 599/828/155 +f 627/829/155 616/830/155 628/831/155 +f 608/832/154 601/833/154 602/834/154 +f 607/824/154 602/834/154 603/825/154 +f 609/835/154 605/836/154 601/833/154 +f 613/837/155 598/838/155 597/839/155 +f 612/840/155 596/841/155 613/837/155 +f 611/827/155 595/842/155 612/840/155 +f 623/843/154 620/844/154 624/845/154 +f 619/846/154 626/847/154 625/848/154 +f 620/844/154 625/848/154 624/845/154 +f 618/849/154 622/850/154 626/847/154 +f 614/851/155 629/852/155 630/853/155 +f 615/854/155 631/855/155 614/851/155 +f 616/830/155 632/856/155 615/854/155 +f 295/522/154 327/857/154 328/523/154 +f 296/525/154 328/523/154 329/526/154 +f 329/526/154 314/530/154 282/528/154 +f 314/530/154 315/533/154 283/531/154 +f 315/533/154 316/536/154 284/534/154 +f 316/536/154 317/858/154 285/537/154 +f 285/539/154 317/858/154 318/540/154 +f 318/540/154 319/859/154 287/542/154 +f 287/544/154 319/859/154 320/545/154 +f 320/545/154 321/860/154 289/547/154 +f 289/549/154 321/860/154 322/550/154 +f 290/552/154 322/861/154 323/553/154 +f 323/553/154 324/557/154 292/555/154 +f 324/557/154 325/560/154 293/558/154 +f 325/560/154 326/563/154 294/561/154 +f 326/563/154 327/857/154 295/564/154 +f 358/566/155 359/862/155 343/567/155 +f 359/569/155 360/863/155 344/570/155 +f 360/571/155 361/864/155 345/572/155 +f 345/572/155 361/865/155 346/573/155 +f 330/574/155 346/866/155 347/575/155 +f 347/577/155 348/867/155 332/578/155 +f 348/579/155 349/868/155 333/580/155 +f 349/581/155 350/869/155 334/582/155 +f 350/583/155 351/870/155 335/584/155 +f 351/585/155 352/871/155 336/586/155 +f 352/587/155 353/872/155 337/588/155 +f 353/589/155 354/873/155 338/590/155 +f 354/591/155 355/874/155 339/592/155 +f 355/594/155 356/875/155 340/595/155 +f 340/595/155 356/876/155 357/596/155 +f 357/598/155 358/877/155 342/568/155 +f 635/599/155 636/878/155 364/600/155 +f 377/602/155 649/879/155 634/603/155 +f 647/605/155 648/880/155 376/606/155 +f 645/608/155 646/881/155 374/609/155 +f 643/611/155 644/882/155 372/612/155 +f 641/614/155 642/883/155 370/615/155 +f 639/617/155 640/884/155 368/618/155 +f 637/620/155 638/885/155 366/621/155 +f 370/623/155 642/886/155 643/624/155 +f 368/618/155 640/887/155 641/625/155 +f 366/621/155 638/888/155 639/626/155 +f 364/600/155 636/889/155 637/627/155 +f 362/604/155 634/890/155 635/628/155 +f 648/629/155 649/891/155 377/602/155 +f 374/609/155 646/892/155 647/630/155 +f 372/612/155 644/893/155 645/631/155 +f 380/632/156 381/636/156 379/633/156 +f 380/632/155 384/894/155 385/635/155 +f 379/633/154 383/895/154 382/637/154 +f 381/636/157 385/896/157 383/638/157 +f 378/634/158 382/897/158 384/639/158 +f 388/640/156 389/665/156 386/641/156 +f 401/643/159 408/656/159 403/644/159 +f 395/646/160 404/898/160 407/647/160 +f 392/649/161 390/663/161 391/650/161 +f 400/652/157 397/655/157 406/653/157 +f 407/647/162 406/653/162 397/655/162 +f 401/643/163 400/652/163 409/654/163 +f 398/645/164 403/644/164 402/657/164 +f 404/659/165 395/899/165 394/660/165 +f 399/658/158 402/657/158 405/661/158 +f 391/650/158 388/900/158 387/662/158 +f 390/663/155 389/901/155 388/664/155 +f 392/649/157 386/641/157 389/665/157 +f 393/651/154 387/902/154 386/666/154 +f 412/667/160 413/677/160 411/668/160 +f 415/670/159 414/903/159 417/671/159 +f 412/673/158 410/904/158 416/672/158 +f 420/674/166 421/683/166 419/675/166 +f 413/677/157 414/903/157 415/670/157 +f 418/678/158 423/905/158 425/679/158 +f 427/680/167 429/688/167 428/681/167 +f 421/683/157 424/686/157 422/684/157 +f 420/674/156 425/679/156 424/686/156 +f 427/680/168 432/906/168 433/687/168 +f 428/681/155 429/688/155 433/689/155 +f 426/682/154 431/907/154 432/691/154 +f 428/681/169 430/908/169 431/692/169 +f 463/693/170 464/909/170 472/694/170 +f 461/696/170 462/910/170 470/697/170 +f 459/699/170 460/911/170 468/700/170 +f 464/702/170 465/912/170 473/703/170 +f 463/704/170 471/695/170 470/705/170 +f 461/707/170 469/698/170 468/700/170 +f 459/709/170 467/701/170 466/710/170 +f 465/712/170 458/913/170 466/710/170 +f 474/715/167 475/914/167 476/915/167 +f 476/915/167 477/916/167 478/713/167 +f 478/713/167 479/917/167 480/714/167 +f 480/714/167 481/918/167 474/715/167 +f 474/715/167 476/915/167 478/713/167 +f 483/716/157 485/724/157 484/717/157 +f 499/719/158 498/737/158 503/720/158 +f 482/718/154 487/919/154 488/722/154 +f 483/716/156 488/920/156 489/723/156 +f 484/717/161 486/921/161 487/725/161 +f 485/724/155 489/922/155 486/726/155 +f 505/727/157 500/742/157 501/728/157 +f 502/730/161 504/923/161 501/728/161 +f 493/731/161 491/924/161 496/732/161 +f 492/734/157 490/743/157 491/735/157 +f 498/737/156 500/742/156 505/738/156 +f 493/731/155 498/737/155 499/719/155 +f 494/741/155 501/728/155 500/742/155 +f 492/740/155 499/719/155 501/728/155 +f 497/733/155 500/742/155 498/737/155 +f 490/743/154 502/721/154 503/720/154 +f 496/744/154 505/747/154 504/745/154 +f 495/746/154 504/745/154 502/721/154 +f 491/735/154 503/720/154 505/747/154 +f 496/744/158 495/746/158 494/748/158 +f 495/750/156 490/925/156 492/740/156 +f 507/751/157 509/757/157 508/752/157 +f 521/754/157 519/766/157 515/755/157 +f 509/757/155 513/926/155 510/758/155 +f 506/753/154 511/927/154 512/759/154 +f 507/751/156 512/928/156 513/760/156 +f 508/752/161 510/929/161 511/761/161 +f 518/762/158 520/765/158 516/763/158 +f 520/765/161 521/754/161 517/756/161 +f 519/766/156 518/930/156 514/767/156 +f 529/768/157 527/775/157 523/769/157 +f 526/771/158 528/774/158 524/772/158 +f 528/774/161 529/768/161 525/770/161 +f 527/775/156 526/931/156 522/776/156 +f 537/777/157 535/784/157 531/778/157 +f 534/780/158 536/783/158 532/781/158 +f 536/783/161 537/777/161 533/779/161 +f 535/784/156 534/932/156 530/785/156 +f 539/786/161 541/789/161 540/787/161 +f 541/789/171 545/933/171 542/790/171 +f 538/788/154 543/934/154 544/791/154 +f 541/789/157 539/786/157 544/792/157 +f 540/787/158 542/935/158 543/794/158 +f 561/795/154 559/817/154 584/796/154 +f 560/800/155 546/936/155 548/937/155 +f 548/937/155 550/938/155 560/800/155 +f 550/938/155 552/798/155 560/800/155 +f 552/798/155 554/939/155 556/799/155 +f 556/799/155 558/940/155 560/800/155 +f 570/803/154 571/941/154 572/942/154 +f 572/942/154 573/943/154 574/801/154 +f 574/801/154 575/944/154 576/802/154 +f 576/802/154 577/945/154 570/803/154 +f 570/803/154 572/942/154 574/801/154 +f 551/804/154 549/813/154 578/805/154 +f 557/807/154 555/946/154 582/808/154 +f 561/795/154 585/947/154 579/810/154 +f 547/811/154 579/948/154 578/812/154 +f 551/804/154 580/949/154 581/814/154 +f 557/807/154 583/950/154 584/816/154 +f 553/815/154 581/951/154 582/818/154 +f 588/822/154 586/952/154 587/953/154 +f 587/953/154 593/954/154 588/822/154 +f 593/954/154 592/955/154 588/822/154 +f 592/955/154 591/956/154 588/822/154 +f 591/956/154 590/820/154 588/822/154 +f 604/823/154 606/957/154 607/824/154 +f 600/826/155 610/958/155 611/827/155 +f 627/829/155 617/959/155 616/830/155 +f 608/832/154 609/835/154 601/833/154 +f 607/824/154 608/832/154 602/834/154 +f 609/835/154 594/960/154 605/836/154 +f 613/837/155 596/841/155 598/838/155 +f 612/840/155 595/842/155 596/841/155 +f 611/827/155 610/958/155 595/842/155 +f 623/843/154 621/961/154 620/844/154 +f 619/846/154 618/849/154 626/847/154 +f 620/844/154 619/846/154 625/848/154 +f 618/849/154 633/962/154 622/850/154 +f 614/851/155 631/855/155 629/852/155 +f 615/854/155 632/856/155 631/855/155 +f 616/830/155 617/959/155 632/856/155 +s 1 +f 317/858/172 334/582/158 318/540/158 +f 325/560/173 342/568/157 326/563/157 +f 318/540/158 335/584/174 319/859/174 +f 326/563/157 343/567/175 327/857/175 +f 319/859/174 336/586/176 320/545/176 +f 327/857/175 344/570/177 328/523/177 +f 320/545/176 337/588/178 321/860/178 +f 328/523/177 345/572/179 329/526/179 +f 321/860/178 338/590/156 322/550/156 +f 314/530/161 331/576/180 315/533/180 +f 329/526/179 330/574/161 314/530/161 +f 322/861/156 339/592/181 323/553/181 +f 315/533/180 332/578/182 316/536/182 +f 323/553/181 340/595/183 324/557/183 +f 316/536/182 333/580/172 317/858/172 +f 324/557/183 341/597/173 325/560/173 +f 354/963/161 371/613/180 355/964/180 +f 347/965/181 364/600/183 348/966/183 +f 355/964/180 372/612/182 356/967/182 +f 348/966/183 365/622/173 349/968/173 +f 356/967/182 373/610/172 357/969/172 +f 349/968/173 366/621/157 350/970/157 +f 357/969/172 374/609/158 358/971/158 +f 350/970/157 367/619/175 351/972/175 +f 358/971/158 375/607/174 359/973/174 +f 351/972/175 368/618/177 352/974/177 +f 359/973/174 376/606/176 360/975/176 +f 352/974/177 369/616/179 353/976/179 +f 360/975/176 377/602/178 361/977/178 +f 353/976/179 370/615/161 354/978/161 +f 346/979/156 363/601/181 347/965/181 +f 361/977/178 362/604/156 346/979/156 +f 435/980/184 444/981/185 443/982/186 +f 440/983/168 449/984/187 448/985/188 +f 439/986/189 446/987/190 438/988/154 +f 437/989/191 444/981/185 436/990/169 +f 434/991/155 443/982/186 442/992/192 +f 434/991/155 449/984/187 441/993/193 +f 439/986/189 448/985/188 447/994/194 +f 438/995/154 445/996/195 437/989/191 +f 447/994/194 454/997/196 446/987/190 +f 444/981/185 453/998/197 452/999/198 +f 442/992/192 451/1000/199 450/1001/200 +f 442/992/192 457/1002/201 449/984/187 +f 448/985/188 455/1003/202 447/994/194 +f 445/996/195 454/1004/196 453/998/197 +f 443/982/186 452/999/198 451/1000/199 +f 449/984/187 456/1005/203 448/985/188 +f 456/1005/203 465/1006/193 464/1007/168 +f 454/997/196 463/1008/189 462/1009/154 +f 452/999/198 461/696/191 460/1010/169 +f 450/1001/200 459/1011/184 458/1012/155 +f 450/1001/200 465/1006/193 457/1002/201 +f 455/1003/202 464/1007/168 463/1008/189 +f 454/1004/196 461/696/191 453/998/197 +f 452/999/198 459/1011/184 451/1000/199 +f 467/701/184 474/1013/155 466/710/155 +f 466/710/155 481/1014/193 473/703/193 +f 472/694/168 479/1015/189 471/695/189 +f 470/697/154 477/1016/191 469/698/191 +f 467/701/184 476/1017/169 475/1018/184 +f 472/694/168 481/1014/193 480/1019/168 +f 470/705/154 479/1015/189 478/1020/154 +f 469/698/191 476/1017/169 468/700/169 +f 547/811/161 548/1021/177 546/1022/161 +f 549/813/177 550/1023/157 548/1021/177 +f 551/804/157 552/1024/183 550/1023/157 +f 553/815/183 554/1025/156 552/1024/183 +f 555/946/156 556/1026/176 554/1027/156 +f 557/807/176 558/1028/158 556/1026/176 +f 559/817/158 560/1029/182 558/1028/158 +f 561/795/182 546/1022/161 560/1029/182 +f 562/1030/161 577/1031/177 569/1032/177 +f 568/1033/157 575/1034/183 567/1035/183 +f 566/1036/156 573/1037/176 565/1038/176 +f 564/1039/158 571/1040/182 563/1041/182 +f 569/1032/177 576/1042/157 568/1033/157 +f 567/1035/183 574/1043/156 566/1044/156 +f 565/1038/176 572/1045/158 564/1039/158 +f 563/1041/182 570/1046/161 562/1030/161 +f 583/950/176 592/1047/158 584/816/158 +f 581/951/183 590/1048/156 582/818/156 +f 578/805/177 588/1049/157 580/806/157 +f 584/796/158 593/1050/182 585/797/182 +f 582/808/156 591/1051/176 583/809/176 +f 580/949/157 589/1052/183 581/814/183 +f 579/948/161 586/1053/177 578/812/177 +f 585/947/182 587/1054/161 579/810/161 +f 609/835/179 597/839/204 594/960/204 +f 606/957/205 611/827/175 607/824/175 +f 607/824/175 612/840/177 608/832/177 +f 608/832/177 613/837/179 609/835/179 +f 299/1055/181 634/1056/156 298/1057/156 +f 301/1058/173 636/1059/183 300/1060/183 +f 303/1061/175 638/1062/157 302/1063/157 +f 298/1057/156 649/1064/178 313/1065/178 +f 307/1066/180 642/1067/161 306/1068/161 +f 302/1063/157 637/1069/173 301/1058/173 +f 305/1070/179 640/1071/177 304/1072/177 +f 311/1073/174 646/1074/158 310/1075/158 +f 312/1076/176 647/1077/174 311/1073/174 +f 306/1078/161 641/1079/179 305/1070/179 +f 300/1060/183 635/1080/181 299/1055/181 +f 309/1081/172 644/1082/182 308/1083/182 +f 304/1072/177 639/1084/175 303/1061/175 +f 310/1075/158 645/1085/172 309/1081/172 +f 313/1065/178 648/1086/176 312/1076/176 +f 308/1083/182 643/1087/180 307/1066/180 +f 618/849/179 630/853/204 633/962/204 +f 621/961/205 616/830/175 620/844/175 +f 620/844/175 615/854/177 619/846/177 +f 619/846/177 614/851/179 618/849/179 +f 317/858/172 333/580/172 334/582/158 +f 325/560/173 341/597/173 342/568/157 +f 318/540/158 334/582/158 335/584/174 +f 326/563/157 342/568/157 343/567/175 +f 319/859/174 335/584/174 336/586/176 +f 327/857/175 343/567/175 344/570/177 +f 320/545/176 336/586/176 337/588/178 +f 328/523/177 344/570/177 345/572/179 +f 321/860/178 337/588/178 338/590/156 +f 314/530/161 330/574/161 331/576/180 +f 329/526/179 345/572/179 330/574/161 +f 322/861/156 338/593/156 339/592/181 +f 315/533/180 331/576/180 332/578/182 +f 323/553/181 339/592/181 340/595/183 +f 316/536/182 332/578/182 333/580/172 +f 324/557/183 340/595/183 341/597/173 +f 354/963/161 370/623/161 371/613/180 +f 347/965/181 363/601/181 364/600/183 +f 355/964/180 371/613/180 372/612/182 +f 348/966/183 364/600/183 365/622/173 +f 356/967/182 372/612/182 373/610/172 +f 349/968/173 365/622/173 366/621/157 +f 357/969/172 373/610/172 374/609/158 +f 350/970/157 366/621/157 367/619/175 +f 358/971/158 374/609/158 375/607/174 +f 351/972/175 367/619/175 368/618/177 +f 359/973/174 375/607/174 376/606/176 +f 352/974/177 368/618/177 369/616/179 +f 360/975/176 376/606/176 377/602/178 +f 353/976/179 369/616/179 370/615/161 +f 346/979/156 362/604/156 363/601/181 +f 361/977/178 377/602/178 362/604/156 +f 435/980/184 436/990/169 444/981/185 +f 440/983/168 441/993/193 449/984/187 +f 439/986/189 447/994/194 446/987/190 +f 437/989/191 445/996/195 444/981/185 +f 434/991/155 435/980/184 443/982/186 +f 434/991/155 442/992/192 449/984/187 +f 439/986/189 440/983/168 448/985/188 +f 438/995/154 446/1088/190 445/996/195 +f 447/994/194 455/1003/202 454/997/196 +f 444/981/185 445/996/195 453/998/197 +f 442/992/192 443/982/186 451/1000/199 +f 442/992/192 450/1001/200 457/1002/201 +f 448/985/188 456/1005/203 455/1003/202 +f 445/996/195 446/1088/190 454/1004/196 +f 443/982/186 444/981/185 452/999/198 +f 449/984/187 457/1002/201 456/1005/203 +f 456/1005/203 457/1002/201 465/1006/193 +f 454/997/196 455/1003/202 463/1008/189 +f 452/999/198 453/998/197 461/696/191 +f 450/1001/200 451/1000/199 459/1011/184 +f 450/1001/200 458/1012/155 465/1006/193 +f 455/1003/202 456/1005/203 464/1007/168 +f 454/1004/196 462/910/154 461/696/191 +f 452/999/198 460/1010/169 459/1011/184 +f 467/701/184 475/1018/184 474/1013/155 +f 466/710/155 474/1013/155 481/1014/193 +f 472/694/168 480/1019/168 479/1015/189 +f 470/697/154 478/1089/154 477/1016/191 +f 467/701/184 468/700/169 476/1017/169 +f 472/694/168 473/703/193 481/1014/193 +f 470/705/154 471/695/189 479/1015/189 +f 469/698/191 477/1016/191 476/1017/169 +f 547/811/161 549/813/177 548/1021/177 +f 549/813/177 551/804/157 550/1023/157 +f 551/804/157 553/815/183 552/1024/183 +f 553/815/183 555/819/156 554/1025/156 +f 555/946/156 557/807/176 556/1026/176 +f 557/807/176 559/817/158 558/1028/158 +f 559/817/158 561/795/182 560/1029/182 +f 561/795/182 547/811/161 546/1022/161 +f 562/1030/161 570/1046/161 577/1031/177 +f 568/1033/157 576/1042/157 575/1034/183 +f 566/1036/156 574/1090/156 573/1037/176 +f 564/1039/158 572/1045/158 571/1040/182 +f 569/1032/177 577/1031/177 576/1042/157 +f 567/1035/183 575/1034/183 574/1043/156 +f 565/1038/176 573/1037/176 572/1045/158 +f 563/1041/182 571/1040/182 570/1046/161 +f 583/950/176 591/1091/176 592/1047/158 +f 581/951/183 589/1092/183 590/1048/156 +f 578/805/177 586/1093/177 588/1049/157 +f 584/796/158 592/1094/158 593/1050/182 +f 582/808/156 590/1095/156 591/1051/176 +f 580/949/157 588/1096/157 589/1052/183 +f 579/948/161 587/1097/161 586/1053/177 +f 585/947/182 593/1098/182 587/1054/161 +f 609/835/179 613/837/179 597/839/204 +f 606/957/205 599/828/205 611/827/175 +f 607/824/175 611/827/175 612/840/177 +f 608/832/177 612/840/177 613/837/179 +f 299/1055/181 635/1080/181 634/1056/156 +f 301/1058/173 637/1069/173 636/1059/183 +f 303/1061/175 639/1084/175 638/1062/157 +f 298/1057/156 634/1056/156 649/1064/178 +f 307/1066/180 643/1087/180 642/1067/161 +f 302/1063/157 638/1062/157 637/1069/173 +f 305/1070/179 641/1079/179 640/1071/177 +f 311/1073/174 647/1077/174 646/1074/158 +f 312/1076/176 648/1086/176 647/1077/174 +f 306/1078/161 642/1099/161 641/1079/179 +f 300/1060/183 636/1059/183 635/1080/181 +f 309/1081/172 645/1085/172 644/1082/182 +f 304/1072/177 640/1071/177 639/1084/175 +f 310/1075/158 646/1074/158 645/1085/172 +f 313/1065/178 649/1064/178 648/1086/176 +f 308/1083/182 644/1082/182 643/1087/180 +f 618/849/179 614/851/179 630/853/204 +f 621/961/205 628/831/205 616/830/175 +f 620/844/175 616/830/175 615/854/177 +f 619/846/177 615/854/177 614/851/179 diff --git a/src/main/resources/assets/hbm/models/weapons/g3.obj b/src/main/resources/assets/hbm/models/weapons/g3.obj new file mode 100644 index 000000000..3c68f4ea0 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/g3.obj @@ -0,0 +1,6864 @@ +# Blender v2.79 (sub 0) OBJ File: '' +# www.blender.org +mtllib g3.mtl +o Trigger_Rifle.002 +v 0.125000 -2.093750 -3.062500 +v 0.125000 -1.968750 -3.125000 +v 0.125000 -2.093750 -3.000000 +v 0.125000 -1.781250 -3.187500 +v 0.125000 -1.968750 -3.250000 +v 0.125000 -1.781250 -3.312500 +v 0.125000 -1.593750 -3.187500 +v 0.125000 -1.406250 -3.312500 +v 0.125000 -1.218750 -3.000000 +v 0.125000 -1.343750 -3.375000 +v -0.125000 -1.968750 -3.125000 +v -0.125000 -2.093750 -3.062500 +v -0.125000 -2.093750 -3.000000 +v -0.125000 -1.781250 -3.187500 +v -0.125000 -1.968750 -3.250000 +v -0.125000 -1.593750 -3.187500 +v -0.125000 -1.781250 -3.312500 +v -0.125000 -1.218750 -3.000000 +v -0.125000 -1.406250 -3.312500 +v -0.125000 -1.343750 -3.375000 +vt 0.656371 0.559846 +vt 0.667954 0.563707 +vt 0.656371 0.563707 +vt 0.629344 0.555985 +vt 0.640927 0.563707 +vt 0.629344 0.563707 +vt 0.617761 0.555985 +vt 0.606178 0.563707 +vt 0.691120 0.563707 +vt 0.698842 0.552124 +vt 0.718147 0.563707 +vt 0.602317 0.563707 +vt 0.606178 0.540541 +vt 0.667954 0.579151 +vt 0.656371 0.583012 +vt 0.656371 0.579151 +vt 0.629344 0.586873 +vt 0.640927 0.579151 +vt 0.640927 0.586873 +vt 0.617761 0.586873 +vt 0.629344 0.579151 +vt 0.691120 0.579151 +vt 0.718147 0.579151 +vt 0.698842 0.590734 +vt 0.606178 0.579151 +vt 0.606178 0.602317 +vt 0.602317 0.579151 +vt 0.667954 0.555985 +vt 0.640927 0.555985 +vt 0.667954 0.586873 +vt 0.652510 0.579151 +vt 0.652510 0.563707 +vt 0.679537 0.579151 +vt 0.679537 0.563707 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -0.4472 0.8944 +vn 0.0000 -0.2298 0.9732 +vn 0.0000 -0.1602 -0.9871 +vn 0.0000 -0.3827 -0.9239 +vn 0.0000 -0.3827 0.9239 +vn 0.0000 -0.9571 -0.2898 +vn 0.0000 0.1602 0.9871 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.6070 -0.7947 +vn 0.0000 0.5257 0.8507 +usemtl None +s off +f 1/1/1 2/2/1 3/3/1 +f 4/4/1 5/5/1 6/6/1 +f 7/7/1 6/6/1 8/8/1 +f 7/9/1 8/10/1 9/11/1 +f 8/8/1 10/12/1 9/13/1 +f 11/14/2 12/15/2 13/16/2 +f 14/17/2 15/18/2 11/19/2 +f 16/20/2 17/21/2 14/17/2 +f 16/22/2 18/23/2 19/24/2 +f 19/25/2 18/26/2 20/27/2 +f 1/1/1 5/28/1 2/2/1 +f 4/4/1 2/29/1 5/5/1 +f 7/7/1 4/4/1 6/6/1 +f 11/14/2 15/30/2 12/15/2 +f 14/17/2 17/21/2 15/18/2 +f 16/20/2 19/25/2 17/21/2 +s 1 +f 9/11/3 16/22/4 7/9/4 +f 6/6/5 19/25/6 8/8/6 +f 3/3/7 12/31/8 1/32/8 +f 7/9/4 14/33/9 4/34/9 +f 8/8/6 20/27/10 10/12/10 +f 1/32/8 15/18/11 5/5/11 +f 4/34/9 11/14/12 2/2/12 +f 5/5/11 17/21/5 6/6/5 +f 2/2/12 13/16/7 3/3/7 +f 9/11/3 18/23/3 16/22/4 +f 6/6/5 17/21/5 19/25/6 +f 3/3/7 13/16/7 12/31/8 +f 7/9/4 16/22/4 14/33/9 +f 8/8/6 19/25/6 20/27/10 +f 1/32/8 12/31/8 15/18/11 +f 4/34/9 14/33/9 11/14/12 +f 5/5/11 15/18/11 17/21/5 +f 2/2/12 11/14/12 13/16/7 +o Selector_Rifle.001 +v 0.343750 -0.755365 -3.411612 +v 0.406250 -0.718753 -3.500000 +v 0.343750 -0.718753 -3.500000 +v 0.343750 -0.932141 -3.411612 +v 0.406250 -0.843753 -3.375000 +v 0.343750 -0.843753 -3.375000 +v 0.406250 -0.755365 -3.411612 +v 0.343750 -0.968753 -3.500000 +v 0.406250 -0.932141 -3.411612 +v 0.343750 -0.937503 -4.187500 +v 0.468750 -1.000003 -4.125000 +v 0.343750 -1.000003 -4.125000 +v 0.468750 -0.937503 -4.187500 +v 0.343750 -0.718753 -4.062500 +v 0.468750 -0.718753 -4.062500 +v 0.468750 -0.843753 -4.000000 +v 0.468750 -0.718753 -3.750000 +v 0.468750 -0.906253 -3.750000 +v 0.406250 -0.968753 -3.500000 +v 0.343750 -0.843753 -4.000000 +vt 0.725869 0.474903 +vt 0.722008 0.471042 +vt 0.725869 0.471042 +vt 0.725869 0.482625 +vt 0.722008 0.478764 +vt 0.725869 0.478764 +vt 0.722008 0.474903 +vt 0.725869 0.486486 +vt 0.722008 0.482625 +vt 0.725869 0.420849 +vt 0.718147 0.416988 +vt 0.725869 0.416988 +vt 0.718147 0.420849 +vt 0.725869 0.436293 +vt 0.718147 0.436293 +vt 0.718147 0.405405 +vt 0.710425 0.432432 +vt 0.712686 0.420849 +vt 0.718147 0.455598 +vt 0.718147 0.389961 +vt 0.722008 0.374517 +vt 0.725869 0.374517 +vt 0.710425 0.440154 +vt 0.706564 0.455598 +vt 0.718147 0.471042 +vt 0.715885 0.476503 +vt 0.710425 0.478764 +vt 0.722008 0.486486 +vt 0.725869 0.405405 +vt 0.704964 0.476503 +vt 0.702703 0.471042 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.9835 0.1810 +vn 0.0000 0.9808 0.1951 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.9973 0.0738 +vn 0.0000 -0.7071 -0.7071 +vn -0.0000 -0.9985 0.0553 +vn 0.0000 0.4961 -0.8682 +vn 0.0000 0.8649 -0.5019 +vn 0.0000 -0.6247 0.7809 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -0.9701 -0.2425 +vn 0.0000 -0.9987 0.0506 +vn 0.9925 0.0000 0.1222 +vn 0.9900 0.0000 0.1410 +vn 0.9902 0.0000 0.1396 +vn 0.9916 0.0000 0.1297 +usemtl None +s 1 +f 21/35/13 22/36/14 23/37/15 +f 24/38/16 25/39/17 26/40/17 +f 26/40/17 27/41/13 21/35/13 +f 28/42/18 29/43/16 24/38/16 +f 30/44/19 31/45/20 32/46/20 +f 33/47/21 34/48/22 35/49/22 +f 36/50/23 32/46/20 31/45/20 +f 33/47/24 36/51/24 31/52/24 +f 23/37/15 22/36/14 37/53/25 +f 38/54/26 39/55/27 28/56/18 +f 36/57/24 37/53/28 38/58/29 +f 22/59/30 27/60/24 25/61/24 +f 22/59/30 38/58/29 37/53/28 +f 21/35/13 27/41/13 22/36/14 +f 24/38/16 29/43/16 25/39/17 +f 26/40/17 25/39/17 27/41/13 +f 28/42/18 39/62/27 29/43/16 +f 30/44/19 33/47/19 31/45/20 +f 33/47/21 30/44/21 34/48/22 +f 36/50/23 40/63/23 32/46/20 +f 33/47/24 35/49/24 36/51/24 +f 35/49/22 34/48/22 37/53/25 +f 34/48/22 23/37/15 37/53/25 +f 28/56/18 40/63/26 38/54/26 +f 40/63/26 36/50/26 38/54/26 +f 36/57/24 35/49/24 37/53/28 +f 25/61/24 29/64/24 39/65/31 +f 39/65/31 22/59/30 25/61/24 +f 22/59/30 39/65/31 38/58/29 +o Silencer +v -0.220972 0.220971 11.250000 +v -0.000001 0.312500 11.250000 +v -0.000000 -0.312500 11.250000 +v 0.312499 0.000000 11.250000 +v 0.220971 -0.220971 11.562500 +v 0.220971 -0.220971 11.250000 +v -0.220971 -0.220971 11.250000 +v -0.000000 -0.312500 11.562500 +v -0.220971 -0.220971 11.562500 +v -0.312501 -0.000000 11.562500 +v -0.220972 0.220971 11.562500 +v 0.220970 0.220971 11.562500 +v 0.220970 0.220971 11.250000 +v -0.312501 -0.000000 11.250000 +v -0.000001 0.312500 11.562500 +v 0.312499 0.000000 11.562500 +v 0.353552 -0.353553 15.312500 +v -0.000000 -0.500000 11.562500 +v 0.353553 -0.353553 11.562500 +v -0.353554 -0.353553 15.312500 +v -0.500000 -0.000000 11.562500 +v -0.353553 -0.353553 11.562500 +v -0.353554 0.353554 15.312500 +v -0.000001 0.500000 11.562500 +v -0.353554 0.353554 11.562500 +v 0.353552 0.353554 15.312500 +v 0.499999 0.000000 11.562500 +v 0.353552 0.353554 11.562500 +v 0.499999 0.000000 15.312500 +v -0.000001 -0.500000 15.312500 +v -0.500001 -0.000000 15.312500 +v -0.000001 0.500000 15.312500 +v 0.093749 0.000000 15.312500 +v 0.066290 0.066292 15.312500 +v -0.066292 0.066292 15.312500 +v -0.000001 0.093750 15.312500 +v -0.093751 -0.000000 15.312500 +v -0.066292 -0.066291 15.312500 +v -0.000001 -0.093750 15.312500 +v 0.066290 -0.066291 15.312500 +v -0.066292 -0.066291 14.812500 +v -0.066292 0.066292 14.812500 +v 0.066290 0.066292 14.812500 +v -0.000001 -0.093750 14.812500 +v -0.093751 -0.000000 14.812500 +v -0.000001 0.093750 14.812500 +v 0.093749 0.000000 14.812500 +v 0.066290 -0.066291 14.812500 +vt 0.865111 0.565111 +vt 0.853846 0.592308 +vt 0.930769 0.592308 +vt 1.000000 0.715385 +vt 0.961538 0.684615 +vt 1.000000 0.684615 +vt 1.000000 0.961538 +vt 0.961538 0.992308 +vt 0.961538 0.961538 +vt 1.000000 0.869231 +vt 0.961538 0.900000 +vt 0.961538 0.869231 +vt 1.000000 0.807692 +vt 0.961538 0.776923 +vt 1.000000 0.776923 +vt 1.000000 0.669231 +vt 0.961538 0.638462 +vt 1.000000 0.638462 +vt 1.000000 0.915385 +vt 0.961538 0.946154 +vt 0.961538 0.915385 +vt 1.000000 0.823077 +vt 0.961538 0.853846 +vt 0.961538 0.823077 +vt 1.000000 0.761538 +vt 0.961538 0.730769 +vt 1.000000 0.730769 +vt 0.476923 0.676923 +vt 0.938462 0.630769 +vt 0.938462 0.676923 +vt 0.476923 0.953846 +vt 0.938462 0.907692 +vt 0.938462 0.953846 +vt 0.476923 0.861538 +vt 0.938462 0.815385 +vt 0.938462 0.861538 +vt 0.476923 0.769231 +vt 0.938462 0.723077 +vt 0.938462 0.769231 +vt 0.476923 0.723077 +vt 0.476923 1.000000 +vt 0.938462 1.000000 +vt 0.476923 0.907692 +vt 0.476923 0.815385 +vt 0.961538 0.807692 +vt 0.430769 0.742308 +vt 0.430769 0.788462 +vt 0.430769 0.842308 +vt 0.430769 0.834615 +vt 0.430769 0.880769 +vt 0.430769 0.926923 +vt 0.430769 0.973077 +vt 0.430769 0.650000 +vt 0.476923 0.630769 +vt 0.430769 0.696154 +vt 0.930769 0.569231 +vt 0.992308 0.576923 +vt 0.930769 0.576923 +vt 0.930769 0.584615 +vt 0.992308 0.592308 +vt 0.930769 0.592308 +vt 0.930769 0.600000 +vt 0.992308 0.607692 +vt 0.930769 0.607692 +vt 0.930769 0.623077 +vt 0.992308 0.630769 +vt 0.930769 0.630769 +vt 0.992308 0.584615 +vt 0.992308 0.600000 +vt 0.992308 0.615385 +vt 0.930769 0.615385 +vt 0.992308 0.623077 +vt 0.980769 0.546154 +vt 0.992308 0.557692 +vt 0.980769 0.569231 +vt 0.865111 0.619504 +vt 0.892308 0.630769 +vt 0.919504 0.619504 +vt 0.919504 0.565111 +vt 0.892308 0.553846 +vt 0.961538 0.715385 +vt 1.000000 0.992308 +vt 1.000000 0.900000 +vt 0.961538 0.669231 +vt 1.000000 0.946154 +vt 1.000000 0.853846 +vt 0.961538 0.761538 +vt 0.430769 0.750000 +vt 0.430769 0.796154 +vt 0.430769 0.888462 +vt 0.430769 0.934615 +vt 0.430769 0.980769 +vt 0.430769 0.657692 +vt 0.430769 0.703846 +vt 0.992308 0.569231 +vt 0.972610 0.565851 +vt 0.969231 0.557692 +vt 0.972610 0.549533 +vt 0.988928 0.549533 +vt 0.988928 0.565851 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 -0.0000 +vn -0.0000 -1.0000 -0.0000 +vn -0.7071 0.7071 -0.0000 +vn -1.0000 -0.0000 -0.0000 +vn 0.0000 1.0000 -0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.0000 0.0000 1.0000 +usemtl None +s 1 +f 41/66/32 42/67/32 43/68/32 +f 44/69/33 45/70/34 46/71/34 +f 47/72/35 48/73/36 49/74/35 +f 41/75/37 50/76/38 51/77/37 +f 42/78/39 52/79/40 53/80/40 +f 46/81/34 48/82/36 43/83/36 +f 54/84/38 49/85/35 50/86/38 +f 42/87/39 51/88/37 55/89/39 +f 53/90/40 56/91/33 44/92/33 +f 57/93/34 58/94/36 59/95/34 +f 60/96/35 61/97/38 62/98/35 +f 63/99/37 64/100/39 65/101/37 +f 66/102/40 67/103/33 68/104/40 +f 69/105/33 59/95/34 67/103/33 +f 70/106/36 62/98/35 58/107/36 +f 71/108/38 65/101/37 61/97/38 +f 72/109/39 68/104/40 64/100/39 +f 48/82/32 59/95/32 58/94/32 +f 45/70/32 67/103/32 59/95/32 +f 56/91/32 68/104/32 67/103/32 +f 55/110/32 68/104/32 52/79/32 +f 51/88/32 64/100/32 55/89/32 +f 50/76/32 65/101/32 51/77/32 +f 49/85/32 61/97/32 50/86/32 +f 48/73/32 62/98/32 49/74/32 +f 66/102/41 73/111/41 69/105/41 +f 72/109/41 74/112/41 66/102/41 +f 72/109/41 75/113/41 76/114/41 +f 71/108/41 75/115/41 63/99/41 +f 60/96/41 77/116/41 71/108/41 +f 70/106/41 78/117/41 60/96/41 +f 57/93/41 79/118/41 70/119/41 +f 69/105/41 80/120/41 57/93/41 +f 79/121/39 81/122/40 78/123/40 +f 77/124/33 82/125/34 75/126/34 +f 76/127/36 83/128/35 74/129/35 +f 80/130/37 84/131/39 79/132/39 +f 78/123/40 85/133/33 77/124/33 +f 75/126/34 86/134/36 76/127/36 +f 74/129/35 87/135/38 73/136/38 +f 73/136/38 88/137/37 80/130/37 +f 85/138/41 84/139/41 87/140/41 +f 42/67/32 53/141/32 43/68/32 +f 53/141/32 44/142/32 43/68/32 +f 44/142/32 46/143/32 43/68/32 +f 43/68/32 47/144/32 54/145/32 +f 54/145/32 41/66/32 43/68/32 +f 44/69/33 56/146/33 45/70/34 +f 47/72/35 43/147/36 48/73/36 +f 41/75/37 54/148/38 50/76/38 +f 42/78/39 55/110/39 52/79/40 +f 46/81/34 45/149/34 48/82/36 +f 54/84/38 47/150/35 49/85/35 +f 42/87/39 41/151/37 51/88/37 +f 53/90/40 52/152/40 56/91/33 +f 57/93/34 70/119/36 58/94/36 +f 60/96/35 71/108/38 61/97/38 +f 63/99/37 72/109/39 64/100/39 +f 66/102/40 69/105/33 67/103/33 +f 69/105/33 57/93/34 59/95/34 +f 70/106/36 60/96/35 62/98/35 +f 71/108/38 63/99/37 65/101/37 +f 72/109/39 66/102/40 68/104/40 +f 48/82/32 45/149/32 59/95/32 +f 45/70/32 56/146/32 67/103/32 +f 56/91/32 52/152/32 68/104/32 +f 55/110/32 64/100/32 68/104/32 +f 51/88/32 65/101/32 64/100/32 +f 50/76/32 61/97/32 65/101/32 +f 49/85/32 62/98/32 61/97/32 +f 48/73/32 58/107/32 62/98/32 +f 66/102/41 74/153/41 73/111/41 +f 72/109/41 76/154/41 74/112/41 +f 72/109/41 63/99/41 75/113/41 +f 71/108/41 77/155/41 75/115/41 +f 60/96/41 78/156/41 77/116/41 +f 70/106/41 79/157/41 78/117/41 +f 57/93/41 80/158/41 79/118/41 +f 69/105/41 73/159/41 80/120/41 +f 79/121/39 84/160/39 81/122/40 +f 77/124/33 85/133/33 82/125/34 +f 76/127/36 86/134/36 83/128/35 +f 80/130/37 88/137/37 84/131/39 +f 78/123/40 81/122/40 85/133/33 +f 75/126/34 82/125/34 86/134/36 +f 74/129/35 83/128/35 87/135/38 +f 73/136/38 87/135/38 88/137/37 +f 87/140/41 83/161/41 86/162/41 +f 86/162/41 82/163/41 87/140/41 +f 82/163/41 85/138/41 87/140/41 +f 85/138/41 81/164/41 84/139/41 +f 84/139/41 88/165/41 87/140/41 +o Scope_Scope.001 +v 0.312500 2.156250 -3.312500 +v 0.312500 1.531250 -2.687500 +v 0.312500 1.531250 -3.312500 +v -0.312500 2.156250 -2.687500 +v -0.312500 1.531250 -3.312500 +v -0.312500 1.531250 -2.687500 +v 0.312500 2.156250 -2.687500 +v -0.250000 2.093750 -3.437500 +v -0.312500 2.156250 -3.312500 +v 0.250000 1.593750 -3.437500 +v 0.250000 2.093750 -3.437500 +v -0.250000 1.593750 -3.437500 +v 0.250000 2.093750 -2.562500 +v -0.250000 1.593750 -2.562500 +v 0.250000 1.593750 -2.562500 +v -0.250000 2.093750 -2.562500 +v -0.093750 1.468750 -1.875000 +v 0.093750 1.656250 -1.875000 +v -0.093750 1.656250 -1.875000 +v -0.093750 1.281250 -2.500000 +v 0.093750 1.281250 -4.000000 +v -0.093750 1.281250 -4.000000 +v -0.093750 1.468750 -2.000000 +v 0.093750 1.468750 -1.875000 +v 0.093750 1.281250 -2.187500 +v 0.093750 1.468750 -2.312500 +v 0.093750 1.468750 -2.000000 +v -0.093750 1.281250 -2.187500 +v -0.093750 1.468750 -2.312500 +v 0.093750 1.468750 -4.125000 +v 0.093750 1.281250 -4.312500 +v -0.093750 1.468750 -4.125000 +v -0.093750 1.281250 -4.312500 +v -0.093750 1.656250 -2.312500 +v 0.093750 1.281250 -4.875000 +v -0.156250 0.531250 -4.750000 +v -0.281250 0.531250 -5.062500 +v -0.156250 0.531250 -5.062500 +v -0.093750 1.093750 -5.062500 +v -0.093750 1.281250 -4.875000 +v 0.343750 0.531250 -2.500000 +v 0.343750 0.781250 -2.187500 +v 0.343750 0.531250 -2.187500 +v -0.156250 0.531250 -2.187500 +v -0.281250 0.531250 -2.500000 +v -0.156250 0.531250 -2.500000 +v 0.156250 0.531250 -5.062500 +v 0.343750 0.531250 -4.750000 +v 0.156250 0.531250 -4.750000 +v -0.093750 0.906250 -4.750000 +v -0.093750 1.031250 -4.562500 +v -0.093750 1.093750 -4.750000 +v 0.093750 0.906250 -4.750000 +v 0.093750 1.093750 -4.750000 +v 0.093750 1.031250 -4.562500 +v -0.093750 0.906250 -2.500000 +v -0.093750 1.093750 -2.500000 +v -0.093750 1.031250 -2.687500 +v 0.093750 0.906250 -2.500000 +v 0.093750 1.031250 -2.687500 +v 0.093750 1.093750 -2.500000 +v -0.281250 0.781250 -4.750000 +v -0.156250 0.718750 -4.750000 +v 0.093750 1.281250 -2.500000 +v 0.093750 1.093750 -5.062500 +v 0.406250 0.593750 -4.906250 +v 0.406250 0.612056 -4.950444 +v 0.406250 0.656250 -4.968750 +v 0.406250 0.656250 -2.406250 +v 0.406250 0.718750 -2.343750 +v 0.406250 0.656250 -2.281250 +v -0.156250 0.718750 -5.062500 +v -0.281250 0.781250 -5.062500 +v 0.343750 0.781250 -5.062500 +v 0.343750 0.531250 -5.062500 +v 0.281250 0.781250 -2.500000 +v 0.156250 0.718750 -2.500000 +v -0.156250 0.718750 -2.187500 +v 0.156250 0.718750 -2.187500 +v -0.093750 1.093750 -2.187500 +v 0.156250 0.531250 -2.187500 +v 0.093750 1.656250 -4.125000 +v -0.093750 1.656250 -4.125000 +v 0.093750 1.656250 -3.687500 +v 0.093750 1.468750 -3.687500 +v 0.093750 1.468750 -3.812500 +v -0.093750 1.656250 -3.687500 +v -0.093750 1.468750 -3.812500 +v -0.093750 1.468750 -3.687500 +v 0.093750 1.656250 -2.312500 +v -0.281250 0.531250 -4.750000 +v 0.343750 0.781250 -2.500000 +v -0.281250 0.531250 -2.187500 +v 0.281250 0.781250 -4.750000 +v 0.156250 0.718750 -4.750000 +v 0.343750 0.781250 -4.750000 +v 0.093750 1.093750 -2.187500 +v 0.406250 0.700444 -4.950444 +v 0.406250 0.718750 -4.906250 +v 0.406250 0.700444 -4.862056 +v 0.406250 0.656250 -4.843750 +v 0.406250 0.612056 -4.862056 +v 0.406250 0.700444 -2.387945 +v 0.406250 0.700444 -2.299556 +v 0.406250 0.612056 -2.299556 +v 0.406250 0.593750 -2.343750 +v 0.406250 0.612056 -2.387945 +v 0.281250 0.781250 -5.062500 +v 0.156250 0.718750 -5.062500 +v -0.281250 0.781250 -2.500000 +v -0.156250 0.718750 -2.500000 +v 0.156250 0.531250 -2.500000 +v 0.281250 0.781250 -2.187500 +v -0.281250 0.781250 -2.187500 +v 0.270633 1.687500 -5.750000 +v 0.312500 1.843750 -5.625000 +v 0.312500 1.843750 -5.750000 +v 0.270633 2.000000 -5.750000 +v 0.156250 2.114383 -5.625000 +v 0.156250 2.114383 -5.750000 +v -0.156250 1.573117 -5.750000 +v 0.000000 1.531250 -5.625000 +v 0.000000 1.531250 -5.750000 +v -0.270633 2.000000 -5.750000 +v -0.312500 1.843750 -5.625000 +v -0.312500 1.843750 -5.750000 +v 0.000000 2.156250 -5.625000 +v 0.000000 2.156250 -5.750000 +v 0.156250 1.573117 -5.625000 +v 0.156250 1.573117 -5.750000 +v -0.270633 1.687500 -5.625000 +v -0.270633 1.687500 -5.750000 +v -0.156250 2.114383 -5.625000 +v -0.156250 2.114383 -5.750000 +v 0.270633 1.687500 -5.625000 +v 0.270633 2.000000 -5.625000 +v -0.156250 1.573117 -5.625000 +v -0.270633 2.000000 -5.625000 +v 0.000000 2.218750 -5.750000 +v -0.324760 2.031250 -5.750000 +v -0.187500 2.168509 -5.750000 +v -0.324760 1.656250 -5.750000 +v -0.375000 1.843750 -5.750000 +v 0.000000 1.468750 -5.750000 +v -0.187500 1.518990 -5.750000 +v 0.187500 1.518990 -5.750000 +v 0.324759 1.656250 -5.750000 +v 0.324759 2.031250 -5.750000 +v 0.375000 1.843750 -5.750000 +v 0.187500 2.168509 -5.750000 +v 0.187500 1.518990 -4.500000 +v 0.375000 1.843750 -4.500000 +v -0.324760 1.656250 -4.500000 +v -0.187500 2.168509 -4.500000 +v 0.324759 1.656250 -4.500000 +v 0.324759 2.031250 -4.500000 +v -0.187500 1.518990 -4.500000 +v -0.324760 2.031250 -4.500000 +v 0.187500 2.168509 -4.500000 +v 0.000000 1.468750 -4.500000 +v -0.375000 1.843750 -4.500000 +v 0.000000 2.218750 -4.500000 +v 0.125000 2.060256 -4.312500 +v 0.216506 1.968750 -4.312500 +v 0.250000 1.843750 -4.312500 +v 0.216506 1.718750 -4.312500 +v 0.125000 1.627244 -4.312500 +v 0.000000 1.593750 -4.312500 +v -0.125000 1.627244 -4.312500 +v -0.216506 1.718750 -4.312500 +v -0.250000 1.843750 -4.312500 +v -0.216506 1.968750 -4.312500 +v -0.125000 2.060256 -4.312500 +v 0.000000 2.093750 -4.312500 +v 0.216506 1.968750 -1.687500 +v -0.125000 1.627244 -1.687500 +v -0.216506 1.968750 -1.687500 +v 0.125000 2.060256 -1.687500 +v 0.000000 1.593750 -1.687500 +v -0.250000 1.843750 -1.687500 +v -0.000000 2.093750 -1.687500 +v 0.125000 1.627244 -1.687500 +v 0.250000 1.843750 -1.687500 +v -0.216506 1.718750 -1.687500 +v -0.125000 2.060256 -1.687500 +v 0.216506 1.718750 -1.687500 +v -0.000000 2.468750 -0.187500 +v 0.312500 2.385015 -0.187500 +v 0.541266 2.156250 -0.187500 +v 0.625000 1.843750 -0.187500 +v 0.541266 1.531250 -0.187500 +v 0.312500 1.302484 -0.187500 +v -0.000000 1.218750 -0.187500 +v -0.312500 1.302484 -0.187500 +v -0.541266 1.531250 -0.187500 +v -0.625000 1.843750 -0.187500 +v -0.541266 2.156250 -0.187500 +v -0.312500 2.385015 -0.187500 +v 0.541266 2.156250 1.312500 +v -0.312500 1.302484 1.312500 +v -0.541266 2.156250 1.312500 +v 0.312500 2.385015 1.312500 +v -0.000000 1.218750 1.312500 +v -0.625000 1.843750 1.312500 +v -0.000000 2.468750 1.312500 +v 0.312500 1.302484 1.312500 +v 0.625000 1.843750 1.312500 +v -0.541266 1.531250 1.312500 +v -0.312500 2.385015 1.312500 +v 0.541266 1.531250 1.312500 +v -0.562500 1.843750 1.312500 +v -0.487139 2.125000 1.312500 +v -0.281250 2.330889 1.312500 +v -0.000000 2.406250 1.312500 +v 0.281250 2.330889 1.312500 +v 0.487139 2.125000 1.312500 +v 0.562500 1.843750 1.312500 +v 0.487139 1.562500 1.312500 +v 0.281250 1.356611 1.312500 +v -0.000000 1.281250 1.312500 +v -0.281250 1.356611 1.312500 +v -0.487139 1.562500 1.312500 +v 0.281250 2.330889 1.062500 +v -0.000000 1.281250 1.062500 +v -0.562500 1.843750 1.062500 +v -0.000000 2.406250 1.062500 +v 0.281250 1.356611 1.062500 +v 0.562500 1.843750 1.062500 +v -0.487139 1.562500 1.062500 +v -0.281250 2.330889 1.062500 +v 0.487139 1.562500 1.062500 +v 0.487139 2.125000 1.062500 +v -0.281250 1.356611 1.062500 +v -0.487139 2.125000 1.062500 +v 0.125000 2.218750 -3.216506 +v 0.216506 2.156250 -3.125000 +v 0.125000 2.156250 -3.216506 +v 0.000000 2.218750 -2.750000 +v -0.125000 2.156250 -2.783494 +v 0.000000 2.156250 -2.750000 +v -0.250000 2.218750 -3.000000 +v -0.216506 2.156250 -3.125000 +v -0.250000 2.156250 -3.000000 +v 0.000000 2.218750 -3.250000 +v 0.000000 2.156250 -3.250000 +v 0.125000 2.218750 -2.783494 +v 0.125000 2.156250 -2.783494 +v -0.216506 2.218750 -2.875000 +v -0.216506 2.156250 -2.875000 +v -0.125000 2.218750 -3.216506 +v -0.125000 2.156250 -3.216506 +v 0.216506 2.218750 -2.875000 +v 0.216506 2.156250 -2.875000 +v 0.216506 2.218750 -3.125000 +v 0.250000 2.156250 -3.000000 +v -0.125000 2.218750 -2.783494 +v -0.216506 2.218750 -3.125000 +v 0.250000 2.218750 -3.000000 +v -0.270633 2.406250 -3.156250 +v -0.156250 2.218750 -3.270633 +v -0.270633 2.218750 -3.156250 +v 0.312500 2.406250 -3.000000 +v 0.270633 2.218750 -2.843750 +v 0.312500 2.218750 -3.000000 +v 0.156250 2.406250 -3.270633 +v 0.270633 2.218750 -3.156250 +v 0.156250 2.218750 -3.270633 +v 0.000000 2.406250 -2.687500 +v -0.156250 2.218750 -2.729367 +v 0.000000 2.218750 -2.687500 +v -0.312500 2.406250 -3.000000 +v -0.312500 2.218750 -3.000000 +v 0.000000 2.406250 -3.312500 +v 0.000000 2.218750 -3.312500 +v 0.156250 2.406250 -2.729367 +v 0.156250 2.218750 -2.729367 +v -0.270633 2.406250 -2.843750 +v -0.270633 2.218750 -2.843750 +v -0.156250 2.406250 -3.270633 +v 0.270633 2.406250 -2.843750 +v 0.270633 2.406250 -3.156250 +v -0.156250 2.406250 -2.729367 +v -0.375000 1.627243 -3.125000 +v -0.312500 1.718750 -3.216506 +v -0.312500 1.627243 -3.125000 +v -0.375000 2.093750 -3.000000 +v -0.312500 2.060256 -2.875000 +v -0.312500 2.093750 -3.000000 +v -0.375000 1.968750 -3.216506 +v -0.312500 2.060256 -3.125000 +v -0.312500 1.968750 -3.216506 +v -0.375000 1.843750 -2.750000 +v -0.312500 1.718750 -2.783494 +v -0.312500 1.843750 -2.750000 +v -0.375000 1.593750 -3.000000 +v -0.312500 1.593750 -3.000000 +v -0.375000 1.843750 -3.250000 +v -0.312500 1.843750 -3.250000 +v -0.375000 1.968750 -2.783494 +v -0.312500 1.968750 -2.783494 +v -0.375000 1.627243 -2.875000 +v -0.312500 1.627243 -2.875000 +v -0.375000 1.718750 -3.216506 +v -0.375000 2.060256 -2.875000 +v -0.375000 2.060256 -3.125000 +v -0.375000 1.718750 -2.783494 +v -0.375000 2.114383 -3.156250 +v -0.375000 2.156250 -3.000000 +v -0.375000 2.000000 -3.270633 +v -0.375000 1.843750 -3.312500 +v -0.375000 1.687500 -3.270633 +v -0.375000 1.573117 -3.156250 +v -0.375000 1.531250 -3.000000 +v -0.375000 1.687500 -2.729367 +v -0.375000 1.573117 -2.843750 +v -0.375000 1.843750 -2.687500 +v -0.375000 2.000000 -2.729367 +v -0.375000 2.114383 -2.843750 +v -0.562500 1.531250 -3.000000 +v -0.562500 1.843750 -3.312500 +v -0.562500 2.000000 -2.729367 +v -0.562500 1.573117 -2.843750 +v -0.562500 1.687500 -3.270633 +v -0.562500 2.114383 -2.843750 +v -0.562500 2.114383 -3.156250 +v -0.562500 1.687500 -2.729367 +v -0.562500 1.573117 -3.156250 +v -0.562500 2.156250 -3.000000 +v -0.562500 2.000000 -3.270633 +v -0.562500 1.843750 -2.687500 +v 0.312500 1.968750 -3.216506 +v 0.375000 1.843750 -3.250000 +v 0.312500 1.843750 -3.250000 +v 0.312500 1.843750 -2.750000 +v 0.375000 1.968750 -2.783494 +v 0.312500 1.968750 -2.783494 +v 0.312500 1.593750 -3.000000 +v 0.375000 1.627243 -2.875000 +v 0.312500 1.627243 -2.875000 +v 0.375000 1.718750 -3.216506 +v 0.312500 1.718750 -3.216506 +v 0.375000 2.060256 -2.875000 +v 0.312500 2.060256 -2.875000 +v 0.312500 2.093750 -3.000000 +v 0.375000 2.060256 -3.125000 +v 0.312500 2.060256 -3.125000 +v 0.375000 1.718750 -2.783494 +v 0.312500 1.718750 -2.783494 +v 0.375000 1.627243 -3.125000 +v 0.312500 1.627243 -3.125000 +v 0.375000 2.093750 -3.000000 +v 0.375000 1.968750 -3.216506 +v 0.375000 1.843750 -2.750000 +v 0.375000 1.593750 -3.000000 +v 0.375000 2.000000 -3.270633 +v 0.500000 1.843750 -3.312500 +v 0.375000 1.843750 -3.312500 +v 0.375000 1.843750 -2.687500 +v 0.500000 2.000000 -2.729367 +v 0.375000 2.000000 -2.729367 +v 0.375000 1.531250 -3.000000 +v 0.500000 1.573117 -2.843750 +v 0.375000 1.573117 -2.843750 +v 0.500000 1.687500 -3.270633 +v 0.375000 1.687500 -3.270633 +v 0.500000 2.114383 -2.843750 +v 0.375000 2.114383 -2.843750 +v 0.375000 2.156250 -3.000000 +v 0.500000 2.114383 -3.156250 +v 0.375000 2.114383 -3.156250 +v 0.500000 1.687500 -2.729367 +v 0.375000 1.687500 -2.729367 +v 0.500000 1.573117 -3.156250 +v 0.375000 1.573117 -3.156250 +v 0.500000 2.156250 -3.000000 +v 0.500000 2.000000 -3.270633 +v 0.500000 1.843750 -2.687500 +v 0.500000 1.531250 -3.000000 +v 0.625000 1.843750 -3.250000 +v 0.625000 1.968750 -3.216506 +v 0.625000 2.060256 -3.125000 +v 0.625000 2.060256 -2.875000 +v 0.625000 1.968750 -2.783494 +v 0.625000 1.843750 -2.750000 +v 0.625000 1.718750 -2.783494 +v 0.625000 1.627244 -2.875000 +v 0.625000 1.593750 -3.000000 +v 0.625000 1.718750 -3.216506 +v 0.625000 1.627244 -3.125000 +v 0.625000 2.093750 -3.000000 +v 0.343750 0.700444 -4.862056 +v 0.343750 0.718750 -4.906250 +v 0.343750 0.612056 -4.862056 +v 0.343750 0.656250 -4.843750 +v 0.343750 0.612056 -4.950444 +v 0.343750 0.593750 -4.906250 +v 0.343750 0.700444 -4.950444 +v 0.343750 0.656250 -4.968750 +v 0.343750 0.700444 -2.299556 +v 0.343750 0.718750 -2.343750 +v 0.343750 0.612056 -2.299556 +v 0.343750 0.656250 -2.281250 +v 0.343750 0.612056 -2.387945 +v 0.343750 0.593750 -2.343750 +v 0.343750 0.700444 -2.387945 +v 0.343750 0.656250 -2.406250 +vt 0.815385 0.353846 +vt 0.738462 0.276923 +vt 0.815385 0.276923 +vt 0.738462 0.123077 +vt 0.815385 0.200000 +vt 0.738462 0.200000 +vt 0.815385 0.046154 +vt 0.738462 0.046154 +vt 0.830769 0.115385 +vt 0.815385 0.123077 +vt 0.830769 0.269231 +vt 0.830769 0.346154 +vt 0.830769 0.192308 +vt 0.830769 0.207692 +vt 0.892308 0.269231 +vt 0.661538 0.269231 +vt 0.723077 0.207692 +vt 0.723077 0.269231 +vt 0.738462 0.353846 +vt 0.723077 0.284615 +vt 0.723077 0.053846 +vt 0.723077 0.130769 +vt 0.938462 0.476923 +vt 0.961538 0.453846 +vt 0.961538 0.476923 +vt 0.923077 0.084615 +vt 0.946154 0.269231 +vt 0.923077 0.269231 +vt 0.923077 0.476923 +vt 0.938462 0.453846 +vt 0.192308 0.384615 +vt 0.215385 0.407692 +vt 0.169231 0.407692 +vt 0.115385 0.376923 +vt 0.100000 0.400000 +vt 0.076923 0.376923 +vt 0.900000 0.400000 +vt 0.876923 0.415385 +vt 0.876923 0.376923 +vt 0.876923 0.515385 +vt 0.900000 0.530769 +vt 0.876923 0.553846 +vt 0.946154 0.284615 +vt 0.923077 0.307692 +vt 0.923077 0.284615 +vt 0.961538 0.530769 +vt 0.938462 0.530769 +vt 0.938462 0.492308 +vt 0.938462 0.438462 +vt 0.946154 0.376923 +vt 0.946154 0.307692 +vt 0.115385 0.153846 +vt 0.076923 0.169231 +vt 0.076923 0.153846 +vt 0.030769 0.261538 +vt 0.053846 0.238462 +vt 0.053846 0.261538 +vt 0.230769 0.276923 +vt 0.192308 0.307692 +vt 0.192308 0.276923 +vt 0.115385 0.261538 +vt 0.076923 0.276923 +vt 0.076923 0.261538 +vt 0.230769 0.146154 +vt 0.192308 0.169231 +vt 0.192308 0.146154 +vt 0.876923 0.361538 +vt 0.892308 0.338462 +vt 0.900000 0.361538 +vt 0.992308 0.361538 +vt 0.969231 0.361538 +vt 0.976923 0.338462 +vt 0.876923 0.084615 +vt 0.900000 0.084615 +vt 0.892308 0.107692 +vt 0.992308 0.084615 +vt 0.976923 0.107692 +vt 0.969231 0.084615 +vt 0.138462 0.215385 +vt 0.115385 0.200000 +vt 0.130769 0.192308 +vt 0.230769 0.361538 +vt 0.230769 0.384615 +vt 0.969231 0.400000 +vt 0.900000 0.400000 +vt 0.923077 0.376923 +vt 0.076923 0.353846 +vt 0.423077 0.584615 +vt 0.420824 0.579176 +vt 0.415385 0.576923 +vt 0.415385 0.600000 +vt 0.407692 0.607692 +vt 0.415385 0.615385 +vt 0.061538 0.192308 +vt 0.076923 0.200000 +vt 0.230769 0.200000 +vt 0.230769 0.169231 +vt 0.030769 0.323077 +vt 0.007692 0.307692 +vt 0.023077 0.300000 +vt 0.130769 0.300000 +vt 0.169231 0.300000 +vt 0.138462 0.346154 +vt 0.192308 0.253846 +vt 0.923077 0.553846 +vt 0.923077 0.530769 +vt 0.923077 0.453846 +vt 0.900000 0.453846 +vt 0.900000 0.438462 +vt 0.923077 0.476923 +vt 0.900000 0.492308 +vt 0.900000 0.476923 +vt 0.830769 0.053846 +vt 0.830769 0.284615 +vt 0.830769 0.130769 +vt 0.892308 0.207692 +vt 0.661538 0.207692 +vt 0.723077 0.346154 +vt 0.723077 0.115385 +vt 0.723077 0.192308 +vt 0.946154 0.084615 +vt 0.923077 0.453846 +vt 0.138462 0.400000 +vt 0.938462 0.400000 +vt 0.961538 0.400000 +vt 0.115385 0.169231 +vt 0.030769 0.238462 +vt 0.230769 0.307692 +vt 0.115385 0.276923 +vt 0.184615 0.200000 +vt 0.161538 0.238462 +vt 0.161538 0.215385 +vt 0.138462 0.238462 +vt 0.169231 0.192308 +vt 0.192308 0.200000 +vt 0.169231 0.169231 +vt 0.130769 0.169231 +vt 0.192308 0.361538 +vt 0.115385 0.353846 +vt 0.409945 0.579176 +vt 0.407692 0.584615 +vt 0.409945 0.590055 +vt 0.415385 0.592308 +vt 0.420824 0.590055 +vt 0.409945 0.602253 +vt 0.409945 0.613132 +vt 0.420824 0.613132 +vt 0.423077 0.607692 +vt 0.420824 0.602253 +vt 0.007692 0.200000 +vt 0.000000 0.200000 +vt 0.000000 0.169231 +vt 0.023077 0.169231 +vt 0.023077 0.192308 +vt 0.061538 0.169231 +vt 0.076923 0.307692 +vt 0.061538 0.300000 +vt 0.053846 0.346154 +vt 0.053846 0.323077 +vt 0.061538 0.276923 +vt -0.000000 0.276923 +vt 0.023077 0.276923 +vt -0.000000 0.307692 +vt 0.030769 0.346154 +vt 0.169231 0.276923 +vt 0.184615 0.307692 +vt 0.161538 0.346154 +vt 0.115385 0.307692 +vt 0.130769 0.276923 +vt 0.230769 0.253846 +vt 0.900000 0.553846 +vt 0.923077 0.400000 +vt 0.300000 0.523077 +vt 0.323077 0.538462 +vt 0.323077 0.523077 +vt 0.346154 0.523077 +vt 0.369231 0.538462 +vt 0.369231 0.523077 +vt 0.507692 0.523077 +vt 0.530769 0.538462 +vt 0.530769 0.523077 +vt 0.438462 0.523077 +vt 0.461538 0.538462 +vt 0.461538 0.523077 +vt 0.392308 0.538462 +vt 0.392308 0.523077 +vt 0.253846 0.523077 +vt 0.276923 0.538462 +vt 0.276923 0.523077 +vt 0.484615 0.538462 +vt 0.484615 0.523077 +vt 0.415385 0.538462 +vt 0.415385 0.523077 +vt 0.300000 0.538462 +vt 0.346154 0.538462 +vt 0.507692 0.538462 +vt 0.438462 0.538462 +vt 0.248693 0.519231 +vt 0.215385 0.461538 +vt 0.182076 0.519231 +vt 0.413462 0.523077 +vt 0.392308 0.515385 +vt 0.394231 0.523077 +vt 0.417308 0.523077 +vt 0.438462 0.515385 +vt 0.415385 0.515385 +vt 0.459615 0.523077 +vt 0.440385 0.523077 +vt 0.463462 0.523077 +vt 0.484615 0.515385 +vt 0.461538 0.515385 +vt 0.505769 0.523077 +vt 0.486538 0.523077 +vt 0.509615 0.523077 +vt 0.530769 0.515385 +vt 0.507692 0.515385 +vt 0.275000 0.523077 +vt 0.253846 0.515385 +vt 0.255769 0.523077 +vt 0.298077 0.523077 +vt 0.276923 0.515385 +vt 0.278846 0.523077 +vt 0.321154 0.523077 +vt 0.300000 0.515385 +vt 0.301923 0.523077 +vt 0.325000 0.523077 +vt 0.346154 0.515385 +vt 0.323077 0.515385 +vt 0.390385 0.523077 +vt 0.369231 0.515385 +vt 0.371154 0.523077 +vt 0.367308 0.523077 +vt 0.348077 0.523077 +vt 0.276923 0.361538 +vt 0.323077 0.361538 +vt 0.484615 0.361538 +vt 0.415385 0.361538 +vt 0.300000 0.361538 +vt 0.346154 0.361538 +vt 0.507692 0.361538 +vt 0.438462 0.361538 +vt 0.369231 0.361538 +vt 0.253846 0.361538 +vt 0.461538 0.361538 +vt 0.392308 0.361538 +vt 0.373077 0.330769 +vt 0.365385 0.330769 +vt 0.350000 0.330769 +vt 0.342308 0.330769 +vt 0.326923 0.330769 +vt 0.303846 0.330769 +vt 0.280769 0.330769 +vt 0.257692 0.330769 +vt 0.530769 0.361538 +vt 0.511539 0.330769 +vt 0.503846 0.330769 +vt 0.488462 0.330769 +vt 0.480769 0.330769 +vt 0.465385 0.330769 +vt 0.442308 0.330769 +vt 0.419231 0.330769 +vt 0.411538 0.330769 +vt 0.396154 0.330769 +vt 0.853846 0.469231 +vt 0.530769 0.446154 +vt 0.853846 0.446154 +vt 0.853846 0.630769 +vt 0.530769 0.607692 +vt 0.853846 0.607692 +vt 0.853846 0.561538 +vt 0.530769 0.538462 +vt 0.853846 0.538462 +vt 0.853846 0.492308 +vt 0.530769 0.469231 +vt 0.853846 0.376923 +vt 0.530769 0.353846 +vt 0.853846 0.353846 +vt 0.853846 0.584615 +vt 0.530769 0.561538 +vt 0.853846 0.515385 +vt 0.530769 0.492308 +vt 0.853846 0.400000 +vt 0.530769 0.376923 +vt 0.530769 0.423077 +vt 0.853846 0.423077 +vt 0.530769 0.584615 +vt 0.530769 0.515385 +vt 0.530769 0.400000 +vt 0.407692 0.738462 +vt 0.223077 0.769231 +vt 0.223077 0.730769 +vt 0.407692 0.723077 +vt 0.223077 0.692308 +vt 0.407692 0.700000 +vt 0.407692 0.684615 +vt 0.223077 0.653846 +vt 0.407692 0.661538 +vt 0.407692 0.646154 +vt 0.223077 0.615385 +vt 0.407692 0.623077 +vt 0.407692 0.607692 +vt 0.223077 0.576923 +vt 0.407692 0.584615 +vt 0.407692 0.569231 +vt 0.223077 0.538462 +vt 0.407692 0.546154 +vt 0.407692 0.969231 +vt 0.223077 1.000000 +vt 0.223077 0.961538 +vt 0.407692 0.953846 +vt 0.223077 0.923077 +vt 0.407692 0.930769 +vt 0.407692 0.915385 +vt 0.223077 0.884615 +vt 0.407692 0.892308 +vt 0.407692 0.876923 +vt 0.223077 0.846154 +vt 0.407692 0.853846 +vt 0.407692 0.800000 +vt 0.407692 0.776923 +vt 0.407692 0.838462 +vt 0.223077 0.807692 +vt 0.407692 0.815385 +vt 0.038462 0.692308 +vt 0.038462 0.961538 +vt 0.038462 0.846154 +vt 0.038462 0.730769 +vt 0.038462 0.538462 +vt 0.038462 0.884615 +vt 0.038462 0.769231 +vt 0.038462 0.576923 +vt 0.038462 0.653846 +vt 0.038462 0.923077 +vt 0.038462 0.807692 +vt 0.038462 0.615385 +vt 0.030769 0.882692 +vt 0.030769 0.848077 +vt 0.030769 0.844231 +vt 0.030769 0.809615 +vt 0.030769 0.805769 +vt 0.030769 0.771154 +vt 0.030769 0.732692 +vt 0.030769 0.694231 +vt 0.030769 0.655769 +vt 0.030769 0.651923 +vt 0.030769 0.617308 +vt 0.030769 0.613461 +vt 0.030769 0.578846 +vt 0.030769 0.540385 +vt 0.038462 1.000000 +vt 0.030769 0.963462 +vt 0.030769 0.925000 +vt 0.030769 0.886539 +vt 0.030769 0.769231 +vt 0.000000 0.730769 +vt 0.030769 0.730769 +vt 0.030769 0.576923 +vt -0.000000 0.538462 +vt 0.030769 0.538462 +vt 0.030769 0.923077 +vt 0.000000 0.884615 +vt 0.030769 0.884615 +vt 0.030769 0.807692 +vt -0.000000 0.769231 +vt 0.030769 0.615385 +vt 0.000000 0.576923 +vt 0.030769 0.692308 +vt 0.000000 0.653846 +vt 0.030769 0.653846 +vt 0.030769 0.961538 +vt -0.000000 0.923077 +vt 0.030769 0.846154 +vt -0.000000 0.807692 +vt 0.000000 0.615385 +vt 0.000000 0.692308 +vt 0.030769 1.000000 +vt -0.000000 0.961538 +vt -0.000000 0.846154 +vt 0.009275 0.434615 +vt 0.129186 0.434615 +vt 0.069231 0.538462 +vt 0.515385 0.300000 +vt 0.500000 0.292308 +vt 0.515385 0.292308 +vt 0.438462 0.300000 +vt 0.423077 0.292308 +vt 0.438462 0.292308 +vt 0.392308 0.300000 +vt 0.376923 0.292308 +vt 0.392308 0.292308 +vt 0.530769 0.300000 +vt 0.530769 0.292308 +vt 0.453846 0.300000 +vt 0.453846 0.292308 +vt 0.407692 0.300000 +vt 0.407692 0.292308 +vt 0.361538 0.300000 +vt 0.346154 0.292308 +vt 0.361538 0.292308 +vt 0.469231 0.300000 +vt 0.469231 0.292308 +vt 0.500000 0.300000 +vt 0.484615 0.292308 +vt 0.423077 0.300000 +vt 0.376923 0.300000 +vt 0.484615 0.300000 +vt 0.376923 0.330769 +vt 0.361538 0.307692 +vt 0.376923 0.307692 +vt 0.484615 0.330769 +vt 0.469231 0.307692 +vt 0.484615 0.307692 +vt 0.515385 0.330769 +vt 0.500000 0.307692 +vt 0.515385 0.307692 +vt 0.438462 0.330769 +vt 0.423077 0.307692 +vt 0.438462 0.307692 +vt 0.392308 0.330769 +vt 0.392308 0.307692 +vt 0.530769 0.330769 +vt 0.530769 0.307692 +vt 0.453846 0.330769 +vt 0.453846 0.307692 +vt 0.407692 0.330769 +vt 0.407692 0.307692 +vt 0.361538 0.330769 +vt 0.346154 0.307692 +vt 0.469231 0.330769 +vt 0.500000 0.330769 +vt 0.423077 0.330769 +vt 0.550000 0.348693 +vt 0.588462 0.348693 +vt 0.607692 0.315385 +vt 0.452308 0.300000 +vt 0.440000 0.300000 +vt 0.467692 0.300000 +vt 0.455385 0.300000 +vt 0.483077 0.300000 +vt 0.470769 0.300000 +vt 0.498462 0.300000 +vt 0.486154 0.300000 +vt 0.501539 0.300000 +vt 0.516923 0.300000 +vt 0.360000 0.300000 +vt 0.347692 0.300000 +vt 0.375385 0.300000 +vt 0.363077 0.300000 +vt 0.390769 0.300000 +vt 0.378462 0.300000 +vt 0.406154 0.300000 +vt 0.393846 0.300000 +vt 0.424615 0.300000 +vt 0.409231 0.300000 +vt 0.615385 0.323077 +vt 0.607692 0.338462 +vt 0.607692 0.323077 +vt 0.615385 0.215385 +vt 0.607692 0.230769 +vt 0.607692 0.215385 +vt 0.615385 0.184615 +vt 0.607692 0.200000 +vt 0.607692 0.184615 +vt 0.615385 0.261538 +vt 0.607692 0.276923 +vt 0.607692 0.261538 +vt 0.615385 0.307692 +vt 0.607692 0.307692 +vt 0.615385 0.169231 +vt 0.607692 0.169231 +vt 0.615385 0.246154 +vt 0.607692 0.246154 +vt 0.615385 0.292308 +vt 0.607692 0.292308 +vt 0.615385 0.338462 +vt 0.607692 0.353846 +vt 0.615385 0.230769 +vt 0.615385 0.200000 +vt 0.615385 0.276923 +vt 0.615385 0.213846 +vt 0.623077 0.200000 +vt 0.623077 0.215385 +vt 0.615385 0.198462 +vt 0.623077 0.184615 +vt 0.615385 0.183077 +vt 0.623077 0.169231 +vt 0.615385 0.340000 +vt 0.623077 0.353846 +vt 0.615385 0.352308 +vt 0.615385 0.324615 +vt 0.623077 0.338462 +vt 0.615385 0.336923 +vt 0.615385 0.309231 +vt 0.623077 0.323077 +vt 0.615385 0.321538 +vt 0.615385 0.293846 +vt 0.623077 0.307692 +vt 0.615385 0.306154 +vt 0.615385 0.290769 +vt 0.623077 0.276923 +vt 0.623077 0.292308 +vt 0.615385 0.275385 +vt 0.623077 0.261538 +vt 0.615385 0.247692 +vt 0.615385 0.260000 +vt 0.615385 0.232308 +vt 0.623077 0.246154 +vt 0.615385 0.244615 +vt 0.615385 0.216923 +vt 0.623077 0.230769 +vt 0.615385 0.229231 +vt 0.646154 0.307692 +vt 0.646154 0.169231 +vt 0.646154 0.246154 +vt 0.646154 0.292308 +vt 0.646154 0.338462 +vt 0.646154 0.230769 +vt 0.646154 0.200000 +vt 0.646154 0.276923 +vt 0.646154 0.323077 +vt 0.646154 0.215385 +vt 0.646154 0.184615 +vt 0.646154 0.261538 +vt 0.703846 0.348693 +vt 0.665385 0.348693 +vt 0.646154 0.315385 +vt 0.676923 -0.000000 +vt 0.661538 0.007692 +vt 0.661538 -0.000000 +vt 0.753846 -0.000000 +vt 0.738462 0.007692 +vt 0.738462 0.000000 +vt 0.800000 0.000000 +vt 0.784615 0.007692 +vt 0.784615 -0.000000 +vt 0.846154 -0.000000 +vt 0.830769 0.007692 +vt 0.830769 -0.000000 +vt 0.723077 0.007692 +vt 0.723077 -0.000000 +vt 0.707692 -0.000000 +vt 0.692308 0.007692 +vt 0.692308 -0.000000 +vt 0.769231 0.007692 +vt 0.769231 -0.000000 +vt 0.815385 0.007692 +vt 0.815385 -0.000000 +vt 0.707692 0.007692 +vt 0.676923 0.007692 +vt 0.753846 0.007692 +vt 0.800000 0.007692 +vt 0.676923 0.015385 +vt 0.661538 0.030769 +vt 0.661538 0.015385 +vt 0.753846 0.015385 +vt 0.738462 0.030769 +vt 0.738462 0.015385 +vt 0.800000 0.015385 +vt 0.784615 0.030769 +vt 0.784615 0.015385 +vt 0.846154 0.015385 +vt 0.830769 0.030769 +vt 0.830769 0.015385 +vt 0.723077 0.030769 +vt 0.723077 0.015385 +vt 0.707692 0.015385 +vt 0.692308 0.030769 +vt 0.692308 0.015385 +vt 0.769231 0.030769 +vt 0.769231 0.015385 +vt 0.815385 0.030769 +vt 0.815385 0.015385 +vt 0.707692 0.030769 +vt 0.676923 0.030769 +vt 0.753846 0.030769 +vt 0.800000 0.030769 +vt 0.661538 0.046154 +vt 0.676923 0.046154 +vt 0.692308 0.046154 +vt 0.723077 0.046154 +vt 0.738462 0.046154 +vt 0.753846 0.046154 +vt 0.769231 0.046154 +vt 0.784615 0.046154 +vt 0.800000 0.046154 +vt 0.846154 0.030769 +vt 0.830769 0.046154 +vt 0.815385 0.046154 +vt 0.661538 0.076923 +vt 0.676923 0.103570 +vt 0.723077 0.076923 +vt 0.709231 0.007692 +vt 0.721538 0.007692 +vt 0.724615 0.007692 +vt 0.736923 0.007692 +vt 0.740000 0.007692 +vt 0.752308 0.007692 +vt 0.767692 0.007692 +vt 0.755385 0.007692 +vt 0.783077 0.007692 +vt 0.770769 0.007692 +vt 0.786154 0.007692 +vt 0.798462 0.007692 +vt 0.801538 0.007692 +vt 0.813846 0.007692 +vt 0.816923 0.007692 +vt 0.829231 0.007692 +vt 0.832308 0.007692 +vt 0.844615 0.007692 +vt 0.675385 0.007692 +vt 0.663077 0.007692 +vt 0.690769 0.007692 +vt 0.678462 0.007692 +vt 0.706154 0.007692 +vt 0.693846 0.007692 +vt 0.938462 0.553846 +vt 0.961538 0.553846 +vt 0.846154 0.476923 +vt 0.884615 0.453846 +vt 0.884615 0.476923 +vt 0.923077 0.061538 +vt 0.946154 0.061538 +vt 0.161538 0.392308 +vt 0.138462 0.369231 +vt 0.161538 0.369231 +vt 0.192308 0.253846 +vt 0.230769 0.207692 +vt 0.230769 0.253846 +vt 0.076923 0.246154 +vt 0.115385 0.246154 +vt 0.192308 0.315385 +vt 0.230769 0.315385 +vt 0.138462 0.246154 +vt 0.030769 0.353846 +vt 0.053846 0.353846 +vt 1.000000 0.338462 +vt 0.430769 0.576923 +vt 0.438462 0.569231 +vt 0.438462 0.576923 +vt 0.415385 0.576923 +vt 0.423077 0.569231 +vt 0.423077 0.576923 +vt 0.461538 0.576923 +vt 0.469231 0.569231 +vt 0.469231 0.576923 +vt 0.446154 0.576923 +vt 0.453846 0.569231 +vt 0.453846 0.576923 +vt 0.430769 0.569231 +vt 0.407692 0.576923 +vt 0.415385 0.569231 +vt 0.461538 0.569231 +vt 0.446154 0.569231 +vt 0.430769 0.600000 +vt 0.438462 0.592308 +vt 0.438462 0.600000 +vt 0.415385 0.600000 +vt 0.423077 0.592308 +vt 0.423077 0.600000 +vt 0.461538 0.600000 +vt 0.469231 0.592308 +vt 0.469231 0.600000 +vt 0.446154 0.600000 +vt 0.453846 0.592308 +vt 0.453846 0.600000 +vt 0.430769 0.592308 +vt 0.407692 0.600000 +vt 0.415385 0.592308 +vt 0.461538 0.592308 +vt 0.446154 0.592308 +vt 0.192308 0.207692 +vt 0.253846 0.538462 +vt 0.196154 0.533309 +vt 0.215385 0.538462 +vt 0.234615 0.533309 +vt 0.253846 0.500000 +vt 0.248693 0.480769 +vt 0.234615 0.466691 +vt 0.196154 0.466691 +vt 0.182076 0.480769 +vt 0.176923 0.500000 +vt 0.436538 0.523077 +vt 0.482692 0.523077 +vt 0.528846 0.523077 +vt 0.344231 0.523077 +vt 0.388462 0.330769 +vt 0.319231 0.330769 +vt 0.296154 0.330769 +vt 0.273077 0.330769 +vt 0.526923 0.330769 +vt 0.457692 0.330769 +vt 0.434615 0.330769 +vt 0.530769 0.630769 +vt 0.407692 0.761538 +vt 0.407692 0.992308 +vt 0.030769 0.767308 +vt 0.030769 0.728846 +vt 0.030769 0.690385 +vt 0.030769 0.575000 +vt 0.030769 0.998077 +vt 0.030769 0.959615 +vt 0.030769 0.921154 +vt 0.000000 1.000000 +vt 0.034615 0.529186 +vt 0.009275 0.503846 +vt 0.000000 0.469231 +vt 0.034615 0.409275 +vt 0.069231 0.400000 +vt 0.103846 0.409275 +vt 0.138462 0.469231 +vt 0.129186 0.503846 +vt 0.103846 0.529186 +vt 0.346154 0.300000 +vt 0.346154 0.330769 +vt 0.602539 0.296154 +vt 0.588462 0.282076 +vt 0.569231 0.276923 +vt 0.550000 0.282076 +vt 0.535922 0.296154 +vt 0.530769 0.315385 +vt 0.535922 0.334615 +vt 0.569231 0.353846 +vt 0.602539 0.334615 +vt 0.513846 0.300000 +vt 0.529231 0.300000 +vt 0.436923 0.300000 +vt 0.421538 0.300000 +vt 0.615385 0.353846 +vt 0.615385 0.201538 +vt 0.615385 0.186154 +vt 0.615385 0.170769 +vt 0.615385 0.278462 +vt 0.615385 0.263077 +vt 0.646154 0.353846 +vt 0.651307 0.296154 +vt 0.665385 0.282076 +vt 0.684615 0.276923 +vt 0.703846 0.282076 +vt 0.717924 0.296154 +vt 0.723077 0.315385 +vt 0.717924 0.334615 +vt 0.684615 0.353846 +vt 0.651307 0.334615 +vt 0.846154 0.007692 +vt 0.707692 0.046154 +vt 0.846154 0.046154 +vt 0.676923 0.050276 +vt 0.665661 0.061538 +vt 0.665661 0.092308 +vt 0.692308 0.107692 +vt 0.707692 0.103570 +vt 0.718955 0.092308 +vt 0.718955 0.061538 +vt 0.707692 0.050276 +vt 0.692308 0.046154 +vt 0.846154 0.453846 +vt 0.138462 0.392308 +vt 0.161538 0.246154 +vt 1.000000 0.107692 +vt 0.407692 0.569231 +vt 0.407692 0.592308 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 -0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 -0.0000 +vn 0.0000 0.8944 -0.4472 +vn 0.0000 -0.8944 -0.4472 +vn 0.8944 0.0000 -0.4472 +vn -0.8944 -0.0000 -0.4472 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.8944 0.0000 0.4472 +vn 0.0000 0.8944 0.4472 +vn -0.8944 0.0000 0.4472 +vn 0.0000 -0.8944 0.4472 +vn 0.0000 0.7071 -0.7071 +vn -0.8660 0.5000 0.0000 +vn -0.8660 -0.5000 -0.0000 +vn -0.5000 -0.8660 -0.0000 +vn 0.5000 0.8660 -0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.5000 -0.8660 -0.0000 +vn 0.0000 0.8320 0.5547 +vn 0.4160 0.7206 0.5547 +vn 0.7206 0.4160 0.5547 +vn 0.8321 0.0000 0.5547 +vn 0.7206 -0.4160 0.5547 +vn 0.4160 -0.7206 0.5547 +vn -0.0000 -0.8321 0.5547 +vn -0.4160 -0.7206 0.5547 +vn -0.7206 -0.4160 0.5547 +vn -0.8320 -0.0000 0.5547 +vn -0.8321 -0.0000 0.5547 +vn -0.7206 0.4160 0.5547 +vn -0.4160 0.7206 0.5547 +vn -0.0000 0.8321 0.5547 +vn 0.4851 0.8402 -0.2425 +vn 0.0000 0.9701 -0.2425 +vn 0.8402 0.4851 -0.2425 +vn 0.9701 0.0000 -0.2425 +vn 0.8402 -0.4851 -0.2425 +vn 0.4851 -0.8402 -0.2425 +vn 0.0000 -0.9701 -0.2425 +vn -0.4851 -0.8402 -0.2425 +vn -0.8402 -0.4851 -0.2425 +vn -0.9701 -0.0000 -0.2425 +vn -0.8402 0.4851 -0.2425 +vn -0.4851 0.8402 -0.2425 +vn 0.5000 0.0000 -0.8660 +vn 0.8660 0.0000 -0.5000 +vn -0.5000 -0.0000 0.8660 +vn -0.8660 0.0000 -0.5000 +vn 0.5000 0.0000 0.8660 +vn -0.8660 0.0000 0.5000 +vn -0.5000 0.0000 -0.8660 +vn 0.8660 0.0000 0.5000 +vn 0.0000 -0.8660 -0.5000 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 0.8660 0.5000 +vn 0.0000 0.5000 -0.8660 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 0.5000 0.8660 +vn 0.0000 -0.8660 0.5000 +vn 0.2217 -0.0000 -0.9751 +vn 0.2217 0.4876 0.8445 +vn 0.2217 -0.8445 0.4876 +vn 0.2217 -0.4876 -0.8445 +vn 0.2217 0.8445 0.4876 +vn 0.2217 0.8445 -0.4876 +vn 0.2217 -0.4876 0.8445 +vn 0.2217 -0.8445 -0.4876 +vn 0.2217 0.9751 -0.0000 +vn 0.2217 0.4876 -0.8445 +vn 0.2217 -0.0000 0.9751 +vn 0.2217 -0.9751 -0.0000 +vn 0.4472 -0.0000 -0.8944 +vn 0.4472 0.4472 -0.7746 +vn 0.4472 0.7746 -0.4472 +vn 0.4472 0.7746 0.4472 +vn 0.4472 0.4472 0.7746 +vn 0.4472 -0.0000 0.8944 +vn 0.4472 -0.4472 0.7746 +vn 0.4472 -0.7746 0.4472 +vn 0.4472 -0.8944 -0.0000 +vn 0.4472 -0.4472 -0.7746 +vn 0.4472 -0.7746 -0.4472 +vn 0.0000 0.3827 -0.9239 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.9239 0.3827 +vn 0.0000 -0.3827 0.9239 +vn 0.8575 0.5145 -0.0000 +vn 0.4927 0.8702 -0.0000 +vn -0.9637 0.2669 0.0000 +vn -0.8575 0.5145 0.0000 +vn 0.0000 -0.9571 0.2898 +vn 0.0000 -0.9571 -0.2898 +vn 0.0000 -0.8321 -0.5547 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.4472 0.8944 0.0000 +usemtl None +s off +f 89/166/42 90/167/42 91/168/42 +f 92/169/43 93/170/43 94/171/43 +f 90/167/44 93/170/44 91/168/44 +f 89/172/45 92/169/45 95/173/45 +f 89/172/46 96/174/46 97/175/46 +f 93/170/47 98/176/47 91/168/47 +f 91/168/48 99/177/48 89/166/48 +f 97/175/49 100/178/49 93/170/49 +f 100/179/50 99/180/50 98/176/50 +f 101/181/51 102/182/51 103/183/51 +f 95/184/52 103/185/52 90/167/52 +f 92/169/53 101/186/53 95/173/53 +f 94/171/54 104/187/54 92/169/54 +f 90/167/55 102/182/55 94/171/55 +f 105/188/51 106/189/51 107/190/51 +f 108/191/45 109/192/45 110/193/45 +f 111/194/44 112/195/44 105/188/44 +f 113/196/42 114/197/42 115/198/42 +f 116/199/43 117/200/43 108/201/43 +f 118/202/42 109/203/42 119/204/42 +f 110/205/43 120/206/43 121/207/43 +f 118/208/56 121/209/56 120/210/56 +f 122/211/43 117/212/43 111/213/43 +f 106/189/42 112/195/42 115/214/42 +f 123/215/45 121/209/45 119/216/45 +f 124/217/44 125/218/44 126/219/44 +f 123/220/56 127/221/56 128/222/56 +f 129/223/42 130/224/42 131/225/42 +f 132/226/44 133/227/44 134/228/44 +f 135/229/44 136/230/44 137/231/44 +f 138/232/43 139/233/43 140/234/43 +f 141/235/42 142/236/42 143/237/42 +f 144/238/43 145/239/43 146/240/43 +f 147/241/42 148/242/42 149/243/42 +f 138/244/51 150/245/51 151/246/51 +f 113/196/42 149/247/42 152/248/42 +f 153/249/42 123/215/42 142/236/42 +f 119/216/42 109/192/42 143/237/42 +f 127/250/43 140/234/43 128/251/43 +f 145/252/43 116/199/43 108/201/43 +f 110/193/43 146/240/43 108/191/43 +f 154/253/42 155/254/42 156/255/42 +f 157/256/42 158/257/42 159/258/42 +f 160/259/50 161/260/50 127/221/50 +f 162/261/42 136/230/42 163/262/42 +f 147/263/50 164/264/50 165/265/50 +f 166/266/51 167/267/51 168/268/51 +f 169/269/44 129/223/44 131/225/44 +f 170/270/50 120/206/50 171/271/50 +f 172/272/42 173/273/42 174/274/42 +f 175/275/51 173/273/51 172/272/51 +f 176/276/43 177/277/43 175/275/43 +f 89/166/42 95/184/42 90/167/42 +f 92/169/43 97/175/43 93/170/43 +f 90/167/44 94/171/44 93/170/44 +f 89/172/45 97/175/45 92/169/45 +f 89/172/46 99/278/46 96/174/46 +f 93/170/47 100/179/47 98/176/47 +f 91/168/48 98/279/48 99/177/48 +f 97/175/49 96/280/49 100/178/49 +f 100/179/50 96/281/50 99/180/50 +f 101/181/51 104/282/51 102/182/51 +f 95/184/52 101/283/52 103/185/52 +f 92/169/53 104/284/53 101/186/53 +f 94/171/54 102/285/54 104/187/54 +f 90/167/55 103/183/55 102/182/55 +f 105/188/51 112/195/51 106/189/51 +f 108/191/45 152/286/45 109/192/45 +f 111/194/44 115/287/44 112/195/44 +f 113/196/42 152/248/42 114/197/42 +f 116/199/43 111/288/43 117/200/43 +f 118/202/42 174/274/42 109/203/42 +f 110/205/43 176/276/43 120/206/43 +f 118/208/56 119/216/56 121/209/56 +f 105/188/43 107/190/43 111/213/43 +f 107/190/43 122/211/43 111/213/43 +f 114/289/42 178/290/42 115/214/42 +f 178/290/42 106/189/42 115/214/42 +f 123/215/45 128/251/45 121/209/45 +f 124/217/44 179/291/44 125/218/44 +f 123/220/56 153/292/56 127/221/56 +f 129/223/42 180/293/42 130/224/42 +f 132/226/44 181/294/44 133/227/44 +f 135/229/44 163/262/44 136/230/44 +f 182/295/51 142/296/51 141/297/51 +f 138/244/51 140/298/51 150/245/51 +f 182/295/51 141/297/51 183/299/51 +f 141/297/51 138/244/51 183/299/51 +f 136/230/51 184/300/51 182/295/51 +f 183/299/51 137/301/51 136/230/51 +f 179/291/51 124/302/51 151/246/51 +f 183/299/51 136/230/51 182/295/51 +f 150/245/51 179/291/51 151/246/51 +f 151/246/51 183/299/51 138/244/51 +f 113/196/42 185/303/42 149/247/42 +f 109/192/42 152/286/42 148/242/42 +f 152/286/42 149/243/42 148/242/42 +f 148/242/42 143/237/42 109/192/42 +f 143/237/42 142/236/42 119/216/42 +f 142/236/42 123/215/42 119/216/42 +f 145/252/43 168/304/43 116/199/43 +f 110/193/43 121/209/43 139/233/43 +f 121/209/43 128/251/43 140/234/43 +f 139/233/43 121/209/43 140/234/43 +f 139/233/43 146/240/43 110/193/43 +f 146/240/43 145/239/43 108/191/43 +f 156/255/42 186/305/42 187/306/42 +f 187/306/42 188/307/42 156/255/42 +f 188/307/42 189/308/42 156/255/42 +f 189/308/42 190/309/42 156/255/42 +f 190/309/42 154/253/42 156/255/42 +f 157/256/42 191/310/42 158/257/42 +f 158/257/42 192/311/42 159/258/42 +f 159/258/42 193/312/42 194/313/42 +f 194/313/42 195/314/42 159/258/42 +f 195/314/42 157/256/42 159/258/42 +f 196/315/50 162/316/50 163/317/50 +f 163/317/50 135/318/50 197/319/50 +f 160/259/50 126/320/50 125/218/50 +f 196/315/50 163/317/50 197/319/50 +f 160/259/50 125/218/50 161/260/50 +f 196/315/50 197/319/50 153/292/50 +f 197/319/50 160/259/50 127/221/50 +f 127/221/50 153/292/50 197/319/50 +f 162/261/42 184/300/42 136/230/42 +f 133/227/50 198/321/50 199/322/50 +f 198/321/50 145/323/50 144/324/50 +f 198/321/50 144/324/50 199/322/50 +f 199/322/50 134/325/50 133/227/50 +f 129/326/50 200/327/50 165/265/50 +f 180/328/50 129/326/50 164/264/50 +f 129/326/50 165/265/50 164/264/50 +f 165/265/50 199/322/50 144/324/50 +f 147/263/50 149/329/50 164/264/50 +f 165/265/50 144/324/50 147/263/50 +f 169/330/51 131/225/51 167/267/51 +f 131/225/51 130/224/51 201/331/51 +f 201/331/51 185/332/51 167/267/51 +f 185/332/51 168/268/51 167/267/51 +f 131/225/51 201/331/51 167/267/51 +f 168/268/51 202/333/51 166/266/51 +f 202/333/51 181/294/51 166/266/51 +f 181/294/51 132/334/51 166/266/51 +f 169/269/44 200/335/44 129/223/44 +f 170/270/50 118/336/50 120/206/50 +f 118/202/42 170/337/42 174/274/42 +f 170/337/42 172/272/42 174/274/42 +f 175/275/51 177/277/51 173/273/51 +f 175/275/43 171/271/43 176/276/43 +f 171/271/43 120/206/43 176/276/43 +s 1 +f 203/338/57 204/339/43 205/340/43 +f 206/341/58 207/342/59 208/343/59 +f 209/344/60 210/345/45 211/346/45 +f 212/347/61 213/348/42 214/349/42 +f 208/343/59 215/350/44 216/351/44 +f 211/352/45 217/353/62 218/354/62 +f 214/349/42 219/355/63 220/356/63 +f 216/351/44 221/357/64 222/358/64 +f 218/354/62 223/359/57 203/338/57 +f 205/340/43 224/360/58 206/341/58 +f 220/356/63 225/361/60 209/344/60 +f 222/358/64 226/362/61 212/347/61 +f 217/363/50 213/364/50 207/365/50 +f 222/366/50 227/367/50 216/368/50 +f 222/369/50 228/370/50 229/371/50 +f 214/372/50 228/370/50 212/373/50 +f 214/374/50 230/375/50 231/376/50 +f 209/377/50 230/375/50 220/378/50 +f 209/379/50 232/380/50 233/381/50 +f 218/382/50 232/383/50 211/384/50 +f 203/385/50 234/386/50 218/387/50 +f 205/388/50 235/389/50 203/390/50 +f 205/391/50 236/392/50 237/393/50 +f 216/394/50 238/395/50 208/396/50 +f 208/397/50 236/392/50 206/398/50 +f 235/389/61 239/399/64 234/386/64 +f 236/392/63 240/400/42 237/393/42 +f 233/381/59 241/401/58 230/375/58 +f 228/370/57 242/402/62 229/371/62 +f 237/393/42 243/403/61 235/389/61 +f 238/395/60 244/404/63 236/392/63 +f 232/380/44 245/405/59 233/381/59 +f 231/376/43 246/406/57 228/370/57 +f 227/367/45 247/407/60 238/395/60 +f 234/386/64 248/408/44 232/383/44 +f 230/375/58 249/409/43 231/376/43 +f 229/371/62 250/410/45 227/367/45 +f 250/410/65 251/411/66 247/407/66 +f 244/404/67 251/412/66 252/413/67 +f 240/400/68 252/414/67 253/415/68 +f 240/400/68 254/416/69 243/403/69 +f 243/403/69 255/417/70 239/399/70 +f 239/399/70 256/418/71 248/408/71 +f 248/419/71 257/420/72 245/405/72 +f 241/401/73 257/421/72 258/422/73 +f 249/409/74 258/423/73 259/424/75 +f 249/409/74 260/425/76 246/406/76 +f 246/406/76 261/426/77 242/402/77 +f 250/410/65 261/427/77 262/428/78 +f 251/429/60 263/430/63 252/431/63 +f 256/432/44 264/433/59 257/434/59 +f 259/435/43 265/436/57 260/437/57 +f 262/438/45 266/439/60 251/429/60 +f 255/440/64 267/441/44 256/442/44 +f 258/443/58 268/444/43 259/435/43 +f 261/445/62 269/446/45 262/438/45 +f 254/447/61 270/448/64 255/440/64 +f 252/431/63 271/449/42 253/450/42 +f 257/434/59 272/451/58 258/443/58 +f 260/437/57 273/452/62 261/445/62 +f 253/450/42 274/453/61 254/447/61 +f 266/454/79 275/455/80 276/456/79 +f 266/457/79 277/458/81 263/459/81 +f 263/460/81 278/461/82 271/462/82 +f 271/463/82 279/464/83 274/465/83 +f 274/466/83 280/467/84 270/468/84 +f 270/469/84 281/470/85 267/471/85 +f 264/472/86 281/473/85 282/474/86 +f 264/475/86 283/476/87 272/477/87 +f 272/478/87 284/479/88 268/480/88 +f 268/481/88 285/482/89 265/483/89 +f 273/484/90 275/455/80 269/485/80 +f 265/486/89 286/487/90 273/488/90 +f 276/456/60 287/489/63 277/458/63 +f 281/473/44 288/490/59 282/474/59 +f 284/479/43 289/491/57 285/482/57 +f 275/455/45 290/492/60 276/456/60 +f 280/467/64 291/493/44 281/470/44 +f 283/476/58 292/494/43 284/479/43 +f 286/487/62 293/495/45 275/455/45 +f 279/464/61 294/496/64 280/467/64 +f 278/461/42 287/489/63 295/497/42 +f 282/474/59 296/498/58 283/476/58 +f 285/482/57 297/499/62 286/487/62 +f 278/461/42 298/500/61 279/464/61 +f 289/491/51 299/501/51 300/502/51 +f 297/499/51 300/503/51 301/504/51 +f 293/495/51 301/505/51 302/506/51 +f 293/495/51 303/507/51 290/492/51 +f 290/492/51 304/508/51 287/489/51 +f 287/489/51 305/509/51 295/497/51 +f 298/500/51 305/510/51 306/511/51 +f 294/496/51 306/512/51 307/513/51 +f 294/496/51 308/514/51 291/493/51 +f 291/515/51 309/516/51 288/490/51 +f 288/490/51 310/517/51 296/498/51 +f 296/498/51 299/518/51 292/494/51 +f 302/519/44 311/520/59 303/521/59 +f 307/522/62 312/523/45 308/524/45 +f 310/525/63 313/526/42 299/527/42 +f 301/528/64 314/529/44 302/519/44 +f 306/530/57 315/531/62 307/522/62 +f 304/532/58 316/533/43 305/534/43 +f 309/535/60 317/536/63 310/525/63 +f 300/537/61 318/538/64 301/528/64 +f 305/534/43 319/539/57 306/530/57 +f 303/521/59 320/540/58 304/532/58 +f 308/541/45 321/542/60 309/535/60 +f 299/527/42 322/543/61 300/537/61 +f 318/544/51 321/545/51 316/546/51 +f 323/547/91 324/548/92 325/549/91 +f 326/550/51 327/551/93 328/552/51 +f 329/553/43 330/554/94 331/555/43 +f 332/556/50 325/549/91 333/557/50 +f 334/558/95 328/552/51 335/559/95 +f 336/560/96 331/555/43 337/561/96 +f 338/562/97 333/563/50 339/564/97 +f 340/565/98 335/559/95 341/566/98 +f 342/567/92 343/568/42 324/548/92 +f 344/569/93 337/561/96 327/551/93 +f 345/570/94 339/564/97 330/554/94 +f 346/571/42 341/566/98 343/568/42 +f 347/572/94 348/573/97 349/574/94 +f 350/575/42 351/576/98 352/577/42 +f 353/578/91 354/579/92 355/580/91 +f 356/581/51 357/582/93 358/583/51 +f 359/584/43 349/574/94 360/585/43 +f 361/586/50 355/580/91 362/587/50 +f 363/588/95 358/583/51 364/589/95 +f 365/590/96 360/585/43 366/591/96 +f 367/592/97 362/593/50 348/573/97 +f 368/594/98 364/589/95 351/576/98 +f 369/595/92 352/577/42 354/579/92 +f 370/596/93 366/591/96 357/582/93 +f 370/597/45 363/598/45 350/599/45 +f 334/600/44 358/583/44 326/601/44 +f 340/602/44 364/589/44 334/603/44 +f 346/604/44 351/576/44 340/605/44 +f 342/606/44 352/577/44 346/607/44 +f 342/608/44 355/580/44 354/579/44 +f 323/609/44 362/587/44 355/580/44 +f 338/610/44 362/593/44 332/611/44 +f 345/612/44 348/573/44 338/613/44 +f 329/614/44 349/574/44 345/615/44 +f 336/616/44 360/585/44 329/617/44 +f 344/618/44 358/583/44 357/582/44 +f 336/619/44 357/582/44 366/591/44 +f 371/620/99 372/621/100 373/622/99 +f 374/623/45 375/624/101 376/625/45 +f 377/626/102 378/627/103 379/628/102 +f 380/629/51 381/630/104 382/631/51 +f 383/632/44 373/622/99 384/633/44 +f 385/634/50 379/628/102 386/635/50 +f 387/636/105 382/631/51 388/637/105 +f 389/638/106 384/633/44 390/639/106 +f 391/640/100 386/641/50 372/621/100 +f 392/642/101 388/637/105 375/624/101 +f 393/643/103 376/625/45 378/627/103 +f 394/644/104 390/639/106 381/630/104 +f 374/645/42 395/646/42 396/647/42 +f 393/648/42 397/649/42 395/646/42 +f 377/650/42 398/651/42 397/649/42 +f 391/652/42 398/653/42 385/654/42 +f 371/655/42 399/656/42 391/657/42 +f 383/658/42 400/659/42 371/660/42 +f 389/661/42 401/662/42 383/663/42 +f 389/664/42 402/665/42 403/666/42 +f 394/667/42 404/668/42 402/665/42 +f 387/669/42 404/668/42 380/670/42 +f 392/671/42 405/672/42 387/673/42 +f 374/674/42 406/675/42 392/676/42 +f 407/677/44 400/659/99 401/662/44 +f 408/678/50 397/649/102 398/651/50 +f 409/679/105 404/668/51 405/672/105 +f 410/680/106 401/662/44 403/666/106 +f 411/681/100 398/653/50 399/656/100 +f 412/682/101 405/672/105 406/675/101 +f 413/683/103 396/647/45 395/646/103 +f 414/684/104 403/666/106 402/665/104 +f 415/685/99 399/656/100 400/659/99 +f 416/686/45 406/675/101 396/647/45 +f 417/687/102 395/646/103 397/649/102 +f 418/688/51 402/665/104 404/668/51 +f 414/689/43 409/690/43 416/691/43 +f 419/692/102 420/693/50 421/694/50 +f 422/695/51 423/696/105 424/697/105 +f 425/698/44 426/699/106 427/700/106 +f 421/701/50 428/702/100 429/703/100 +f 424/697/105 430/704/101 431/705/101 +f 432/706/45 433/707/103 434/708/103 +f 427/700/106 435/709/104 436/710/104 +f 429/703/100 437/711/99 438/712/99 +f 431/705/101 439/713/45 432/706/45 +f 434/708/103 440/714/102 419/692/102 +f 436/710/104 441/715/51 422/695/51 +f 438/712/99 442/716/44 425/698/44 +f 443/717/102 444/718/107 445/719/50 +f 446/720/51 447/721/108 448/722/105 +f 449/723/44 450/724/109 451/725/106 +f 445/726/50 452/727/110 453/728/100 +f 448/722/105 454/729/111 455/730/101 +f 456/731/45 457/732/112 458/733/103 +f 451/725/106 459/734/113 460/735/104 +f 453/728/100 461/736/114 462/737/99 +f 455/730/101 463/738/115 456/731/45 +f 458/733/103 464/739/116 443/717/102 +f 460/735/104 465/740/117 446/720/51 +f 462/737/99 466/741/118 449/723/44 +f 464/739/116 467/742/119 444/718/107 +f 457/732/112 468/743/120 464/739/116 +f 463/738/115 469/744/121 457/732/112 +f 470/745/122 463/738/115 454/729/111 +f 471/746/123 454/729/111 447/721/108 +f 472/747/124 447/721/108 465/740/117 +f 473/748/125 465/740/117 459/734/113 +f 474/749/126 459/734/113 450/724/109 +f 475/750/127 450/724/109 466/741/118 +f 461/736/114 475/750/127 466/741/118 +f 444/751/107 476/752/128 452/727/110 +f 452/727/110 477/753/129 461/736/114 +f 478/754/42 471/755/42 475/756/42 +f 455/730/43 439/757/43 430/758/43 +f 448/722/43 430/759/43 423/760/43 +f 446/720/43 423/761/43 441/762/43 +f 435/763/43 446/720/43 441/764/43 +f 426/765/43 460/735/43 435/766/43 +f 449/723/43 426/767/43 442/768/43 +f 462/737/43 442/769/43 437/770/43 +f 453/728/43 437/771/43 428/772/43 +f 445/726/43 428/773/43 420/774/43 +f 440/775/43 445/719/43 420/776/43 +f 433/777/43 443/717/43 440/778/43 +f 439/779/43 458/733/43 433/780/43 +f 114/781/130 122/211/50 178/782/50 +f 110/783/131 174/784/132 176/785/132 +f 152/286/56 117/786/130 114/787/130 +f 115/788/131 116/789/133 113/790/133 +f 142/791/134 196/792/135 153/793/134 +f 150/245/136 125/218/43 179/291/43 +f 127/794/137 150/245/136 140/795/137 +f 202/333/136 133/227/43 181/294/43 +f 198/321/136 168/304/137 145/252/137 +f 149/247/134 201/796/135 164/797/135 +f 141/297/71 139/798/138 138/244/71 +f 148/799/139 144/324/140 146/800/139 +f 116/789/133 185/332/51 113/790/133 +f 148/242/139 139/801/138 143/237/138 +f 479/802/141 187/803/45 480/804/45 +f 481/805/131 189/806/51 482/807/51 +f 483/808/142 154/809/44 484/810/44 +f 485/811/56 156/812/50 486/813/50 +f 482/807/51 188/814/141 479/802/141 +f 484/815/44 190/816/131 481/805/131 +f 486/813/50 155/817/142 483/808/142 +f 480/804/45 186/818/56 485/811/56 +f 487/819/141 158/820/45 488/821/45 +f 489/822/131 159/823/51 490/824/51 +f 491/825/142 194/826/44 492/827/44 +f 493/828/56 157/829/50 494/830/50 +f 490/824/51 192/831/141 487/819/141 +f 492/832/44 193/833/131 489/822/131 +f 494/830/50 195/834/142 491/825/142 +f 488/821/45 191/835/56 493/828/56 +f 130/224/45 164/797/135 201/796/135 +f 182/836/135 162/261/45 196/792/135 +f 174/784/132 177/277/44 176/785/132 +f 203/338/57 223/359/57 204/339/43 +f 206/341/58 224/360/58 207/342/59 +f 209/344/60 225/361/60 210/345/45 +f 212/347/61 226/362/61 213/348/42 +f 208/343/59 207/342/59 215/350/44 +f 211/352/45 210/837/45 217/353/62 +f 214/349/42 213/348/42 219/355/63 +f 216/351/44 215/350/44 221/357/64 +f 218/354/62 217/353/62 223/359/57 +f 205/340/43 204/339/43 224/360/58 +f 220/356/63 219/355/63 225/361/60 +f 222/358/64 221/357/64 226/362/61 +f 207/365/50 224/838/50 217/363/50 +f 224/838/50 204/839/50 217/363/50 +f 204/839/50 223/840/50 217/363/50 +f 217/363/50 210/841/50 213/364/50 +f 210/841/50 225/842/50 213/364/50 +f 225/842/50 219/843/50 213/364/50 +f 213/364/50 226/844/50 221/845/50 +f 221/845/50 215/846/50 213/364/50 +f 215/846/50 207/365/50 213/364/50 +f 222/366/50 229/371/50 227/367/50 +f 222/369/50 212/847/50 228/370/50 +f 214/372/50 231/376/50 228/370/50 +f 214/374/50 220/848/50 230/375/50 +f 209/377/50 233/381/50 230/375/50 +f 209/379/50 211/849/50 232/380/50 +f 218/382/50 234/386/50 232/383/50 +f 203/385/50 235/389/50 234/386/50 +f 205/388/50 237/393/50 235/389/50 +f 205/391/50 206/850/50 236/392/50 +f 216/394/50 227/367/50 238/395/50 +f 208/397/50 238/395/50 236/392/50 +f 235/389/61 243/403/61 239/399/64 +f 236/392/63 244/404/63 240/400/42 +f 233/381/59 245/405/59 241/401/58 +f 228/370/57 246/406/57 242/402/62 +f 237/393/42 240/400/42 243/403/61 +f 238/395/60 247/407/60 244/404/63 +f 232/380/44 248/419/44 245/405/59 +f 231/376/43 249/409/43 246/406/57 +f 227/367/45 250/410/45 247/407/60 +f 234/386/64 239/399/64 248/408/44 +f 230/375/58 241/401/58 249/409/43 +f 229/371/62 242/402/62 250/410/45 +f 250/410/65 262/851/78 251/411/66 +f 244/404/67 247/407/66 251/412/66 +f 240/400/68 244/404/67 252/414/67 +f 240/400/68 253/852/68 254/416/69 +f 243/403/69 254/853/69 255/417/70 +f 239/399/70 255/854/70 256/418/71 +f 248/419/71 256/855/71 257/420/72 +f 241/401/73 245/405/72 257/421/72 +f 249/409/74 241/401/73 258/423/73 +f 249/409/74 259/856/75 260/425/76 +f 246/406/76 260/857/76 261/426/77 +f 250/410/65 242/402/77 261/427/77 +f 251/429/60 266/439/60 263/430/63 +f 256/432/44 267/858/44 264/433/59 +f 259/435/43 268/444/43 265/436/57 +f 262/438/45 269/446/45 266/439/60 +f 255/440/64 270/448/64 267/441/44 +f 258/443/58 272/451/58 268/444/43 +f 261/445/62 273/452/62 269/446/45 +f 254/447/61 274/453/61 270/448/64 +f 252/431/63 263/430/63 271/449/42 +f 257/434/59 264/433/59 272/451/58 +f 260/437/57 265/436/57 273/452/62 +f 253/450/42 271/449/42 274/453/61 +f 266/454/79 269/859/80 275/455/80 +f 266/457/79 276/456/79 277/458/81 +f 263/460/81 277/458/81 278/461/82 +f 271/463/82 278/461/82 279/464/83 +f 274/466/83 279/464/83 280/467/84 +f 270/469/84 280/467/84 281/470/85 +f 264/472/86 267/860/85 281/473/85 +f 264/475/86 282/474/86 283/476/87 +f 272/478/87 283/476/87 284/479/88 +f 268/481/88 284/479/88 285/482/89 +f 273/484/90 286/487/90 275/455/80 +f 265/486/89 285/482/89 286/487/90 +f 276/456/60 290/492/60 287/489/63 +f 281/473/44 291/515/44 288/490/59 +f 284/479/43 292/494/43 289/491/57 +f 275/455/45 293/495/45 290/492/60 +f 280/467/64 294/496/64 291/493/44 +f 283/476/58 296/498/58 292/494/43 +f 286/487/62 297/499/62 293/495/45 +f 279/464/61 298/500/61 294/496/64 +f 278/461/42 277/458/63 287/489/63 +f 282/474/59 288/490/59 296/498/58 +f 285/482/57 289/491/57 297/499/62 +f 278/461/42 295/497/42 298/500/61 +f 289/491/51 292/494/51 299/501/51 +f 297/499/51 289/491/51 300/503/51 +f 293/495/51 297/499/51 301/505/51 +f 293/495/51 302/861/51 303/507/51 +f 290/492/51 303/862/51 304/508/51 +f 287/489/51 304/863/51 305/509/51 +f 298/500/51 295/497/51 305/510/51 +f 294/496/51 298/500/51 306/512/51 +f 294/496/51 307/864/51 308/514/51 +f 291/515/51 308/865/51 309/516/51 +f 288/490/51 309/866/51 310/517/51 +f 296/498/51 310/867/51 299/518/51 +f 302/519/44 314/529/44 311/520/59 +f 307/522/62 315/531/62 312/523/45 +f 310/525/63 317/536/63 313/526/42 +f 301/528/64 318/538/64 314/529/44 +f 306/530/57 319/539/57 315/531/62 +f 304/532/58 320/540/58 316/533/43 +f 309/535/60 321/542/60 317/536/63 +f 300/537/61 322/543/61 318/538/64 +f 305/534/43 316/533/43 319/539/57 +f 303/521/59 311/520/59 320/540/58 +f 308/541/45 312/868/45 321/542/60 +f 299/527/42 313/526/42 322/543/61 +f 316/546/51 320/869/51 311/870/51 +f 311/870/51 314/871/51 318/544/51 +f 318/544/51 322/872/51 313/873/51 +f 313/873/51 317/874/51 321/545/51 +f 321/545/51 312/875/51 315/876/51 +f 315/876/51 319/877/51 316/546/51 +f 316/546/51 311/870/51 318/544/51 +f 318/544/51 313/873/51 321/545/51 +f 321/545/51 315/876/51 316/546/51 +f 323/547/91 342/567/92 324/548/92 +f 326/550/51 344/569/93 327/551/93 +f 329/553/43 345/570/94 330/554/94 +f 332/556/50 323/547/91 325/549/91 +f 334/558/95 326/550/51 328/552/51 +f 336/560/96 329/553/43 331/555/43 +f 338/562/97 332/878/50 333/563/50 +f 340/565/98 334/558/95 335/559/95 +f 342/567/92 346/571/42 343/568/42 +f 344/569/93 336/560/96 337/561/96 +f 345/570/94 338/562/97 339/564/97 +f 346/571/42 340/565/98 341/566/98 +f 347/572/94 367/592/97 348/573/97 +f 350/575/42 368/594/98 351/576/98 +f 353/578/91 369/595/92 354/579/92 +f 356/581/51 370/596/93 357/582/93 +f 359/584/43 347/572/94 349/574/94 +f 361/586/50 353/578/91 355/580/91 +f 363/588/95 356/581/51 358/583/51 +f 365/590/96 359/584/43 360/585/43 +f 367/592/97 361/879/50 362/593/50 +f 368/594/98 363/588/95 364/589/95 +f 369/595/92 350/575/42 352/577/42 +f 370/596/93 365/590/96 366/591/96 +f 350/599/45 369/880/45 353/881/45 +f 353/881/45 361/882/45 367/883/45 +f 367/883/45 347/884/45 359/885/45 +f 359/885/45 365/886/45 370/597/45 +f 370/597/45 356/887/45 363/598/45 +f 363/598/45 368/888/45 350/599/45 +f 350/599/45 353/881/45 370/597/45 +f 353/881/45 367/883/45 370/597/45 +f 367/883/45 359/885/45 370/597/45 +f 334/600/44 364/589/44 358/583/44 +f 340/602/44 351/576/44 364/589/44 +f 346/604/44 352/577/44 351/576/44 +f 342/606/44 354/579/44 352/577/44 +f 342/608/44 323/889/44 355/580/44 +f 323/609/44 332/890/44 362/587/44 +f 338/610/44 348/573/44 362/593/44 +f 345/612/44 349/574/44 348/573/44 +f 329/614/44 360/585/44 349/574/44 +f 336/616/44 366/591/44 360/585/44 +f 344/618/44 326/891/44 358/583/44 +f 336/619/44 344/892/44 357/582/44 +f 371/620/99 391/640/100 372/621/100 +f 374/623/45 392/642/101 375/624/101 +f 377/626/102 393/643/103 378/627/103 +f 380/629/51 394/644/104 381/630/104 +f 383/632/44 371/620/99 373/622/99 +f 385/634/50 377/626/102 379/628/102 +f 387/636/105 380/629/51 382/631/51 +f 389/638/106 383/632/44 384/633/44 +f 391/640/100 385/893/50 386/641/50 +f 392/642/101 387/636/105 388/637/105 +f 393/643/103 374/623/45 376/625/45 +f 394/644/104 389/638/106 390/639/106 +f 374/645/42 393/894/42 395/646/42 +f 393/648/42 377/895/42 397/649/42 +f 377/650/42 385/896/42 398/651/42 +f 391/652/42 399/656/42 398/653/42 +f 371/655/42 400/659/42 399/656/42 +f 383/658/42 401/662/42 400/659/42 +f 389/661/42 403/666/42 401/662/42 +f 389/664/42 394/897/42 402/665/42 +f 394/667/42 380/898/42 404/668/42 +f 387/669/42 405/672/42 404/668/42 +f 392/671/42 406/675/42 405/672/42 +f 374/674/42 396/647/42 406/675/42 +f 407/677/44 415/685/99 400/659/99 +f 408/678/50 417/687/102 397/649/102 +f 409/679/105 418/688/51 404/668/51 +f 410/680/106 407/677/44 401/662/44 +f 411/681/100 408/899/50 398/653/50 +f 412/682/101 409/679/105 405/672/105 +f 413/683/103 416/686/45 396/647/45 +f 414/684/104 410/680/106 403/666/106 +f 415/685/99 411/681/100 399/656/100 +f 416/686/45 412/682/101 406/675/101 +f 417/687/102 413/683/103 395/646/103 +f 418/688/51 414/684/104 402/665/104 +f 416/691/43 413/900/43 417/901/43 +f 417/901/43 408/902/43 411/903/43 +f 411/903/43 415/904/43 407/905/43 +f 407/905/43 410/906/43 414/689/43 +f 414/689/43 418/907/43 409/690/43 +f 409/690/43 412/908/43 416/691/43 +f 416/691/43 417/901/43 414/689/43 +f 417/901/43 411/903/43 414/689/43 +f 411/903/43 407/905/43 414/689/43 +f 419/692/102 440/714/102 420/693/50 +f 422/695/51 441/715/51 423/696/105 +f 425/698/44 442/716/44 426/699/106 +f 421/701/50 420/909/50 428/702/100 +f 424/697/105 423/696/105 430/704/101 +f 432/706/45 439/713/45 433/707/103 +f 427/700/106 426/699/106 435/709/104 +f 429/703/100 428/702/100 437/711/99 +f 431/705/101 430/704/101 439/713/45 +f 434/708/103 433/707/103 440/714/102 +f 436/710/104 435/709/104 441/715/51 +f 438/712/99 437/711/99 442/716/44 +f 443/717/102 464/739/116 444/718/107 +f 446/720/51 465/740/117 447/721/108 +f 449/723/44 466/741/118 450/724/109 +f 445/726/50 444/751/107 452/727/110 +f 448/722/105 447/721/108 454/729/111 +f 456/731/45 463/738/115 457/732/112 +f 451/725/106 450/724/109 459/734/113 +f 453/728/100 452/727/110 461/736/114 +f 455/730/101 454/729/111 463/738/115 +f 458/733/103 457/732/112 464/739/116 +f 460/735/104 459/734/113 465/740/117 +f 462/737/99 461/736/114 466/741/118 +f 464/739/116 468/743/120 467/742/119 +f 457/732/112 469/744/121 468/743/120 +f 463/738/115 478/910/143 469/744/121 +f 470/745/122 478/910/143 463/738/115 +f 471/746/123 470/745/122 454/729/111 +f 472/747/124 471/746/123 447/721/108 +f 473/748/125 472/747/124 465/740/117 +f 474/749/126 473/748/125 459/734/113 +f 475/750/127 474/749/126 450/724/109 +f 461/736/114 477/753/129 475/750/127 +f 444/751/107 467/911/119 476/752/128 +f 452/727/110 476/752/128 477/753/129 +f 468/912/42 469/913/42 478/754/42 +f 478/754/42 470/914/42 471/755/42 +f 471/755/42 472/915/42 475/756/42 +f 472/915/42 473/916/42 475/756/42 +f 473/916/42 474/917/42 475/756/42 +f 475/756/42 477/918/42 476/919/42 +f 476/919/42 467/920/42 475/756/42 +f 467/920/42 468/912/42 475/756/42 +f 468/912/42 478/754/42 475/756/42 +f 455/730/43 456/731/43 439/757/43 +f 448/722/43 455/730/43 430/759/43 +f 446/720/43 448/722/43 423/761/43 +f 435/763/43 460/735/43 446/720/43 +f 426/765/43 451/725/43 460/735/43 +f 449/723/43 451/725/43 426/767/43 +f 462/737/43 449/723/43 442/769/43 +f 453/728/43 462/737/43 437/771/43 +f 445/726/43 453/728/43 428/773/43 +f 440/775/43 443/717/43 445/719/43 +f 433/777/43 458/733/43 443/717/43 +f 439/779/43 456/731/43 458/733/43 +f 114/781/130 117/212/130 122/211/50 +f 110/783/131 109/921/131 174/784/132 +f 152/286/56 108/191/56 117/786/130 +f 115/788/131 111/922/131 116/789/133 +f 142/791/134 182/836/135 196/792/135 +f 150/245/136 161/260/136 125/218/43 +f 127/794/137 161/260/136 150/245/136 +f 202/333/136 198/321/136 133/227/43 +f 198/321/136 202/333/136 168/304/137 +f 149/247/134 185/303/134 201/796/135 +f 141/297/71 143/923/138 139/798/138 +f 148/799/139 147/263/140 144/324/140 +f 116/789/133 168/268/51 185/332/51 +f 148/242/139 146/924/139 139/801/138 +f 479/802/141 188/814/141 187/803/45 +f 481/805/131 190/816/131 189/806/51 +f 483/808/142 155/817/142 154/809/44 +f 485/811/56 186/818/56 156/812/50 +f 482/807/51 189/806/51 188/814/141 +f 484/815/44 154/925/44 190/816/131 +f 486/813/50 156/812/50 155/817/142 +f 480/804/45 187/803/45 186/818/56 +f 487/819/141 192/831/141 158/820/45 +f 489/822/131 193/833/131 159/823/51 +f 491/825/142 195/834/142 194/826/44 +f 493/828/56 191/835/56 157/829/50 +f 490/824/51 159/823/51 192/831/141 +f 492/832/44 194/926/44 193/833/131 +f 494/830/50 157/829/50 195/834/142 +f 488/821/45 158/820/45 191/835/56 +f 130/224/45 180/293/45 164/797/135 +f 182/836/135 184/300/45 162/261/45 +f 174/784/132 173/273/44 177/277/44 +o Flash_Hider +v -0.250001 -0.000000 12.500000 +v -0.176778 0.176777 12.500000 +v -0.176778 0.176777 11.625000 +v -0.176778 0.176777 11.250000 +v -0.000001 0.250000 11.250000 +v -0.000000 -0.250000 11.250000 +v 0.249999 0.000000 12.500000 +v 0.176776 -0.176777 12.500000 +v 0.176776 -0.176777 11.625000 +v -0.000000 -0.250000 11.625000 +v -0.176778 -0.176777 12.500000 +v -0.176778 -0.176777 11.625000 +v -0.000001 0.250000 11.625000 +v 0.176776 0.176777 12.500000 +v 0.176776 0.176777 11.625000 +v 0.176776 0.176777 11.250000 +v 0.249999 0.000000 11.625000 +v 0.250000 0.000000 11.250000 +v 0.176777 -0.176777 11.250000 +v -0.176777 -0.176777 11.250000 +v -0.250001 -0.000000 11.625000 +v -0.250001 -0.000000 11.250000 +v 0.088387 -0.088388 12.437500 +v -0.000001 -0.125000 12.437500 +v -0.000001 -0.250000 12.500000 +v -0.088389 -0.088388 11.625000 +v -0.088389 -0.088388 12.437500 +v -0.000001 0.125000 12.437500 +v 0.088387 0.088388 12.437500 +v -0.088389 0.088388 12.437500 +v 0.124999 0.000000 12.437500 +v 0.088387 -0.088388 11.625000 +v -0.125001 -0.000000 12.437500 +v -0.088389 0.088388 11.625000 +v 0.088387 0.088388 11.625000 +v -0.000001 0.250000 12.500000 +v -0.000001 0.125000 11.625000 +v 0.124999 0.000000 11.625000 +v -0.000001 -0.125000 11.625000 +v -0.125001 -0.000000 11.625000 +vt 0.092664 0.494208 +vt 0.081081 0.494208 +vt 0.081081 0.548263 +vt 0.058577 0.684060 +vt 0.054054 0.694981 +vt 0.084942 0.694981 +vt 0.046332 0.494208 +vt 0.034749 0.494208 +vt 0.034749 0.548263 +vt 0.115830 0.548263 +vt 0.104247 0.494208 +vt 0.104247 0.548263 +vt 0.069498 0.548263 +vt 0.057915 0.494208 +vt 0.057915 0.548263 +vt 0.081081 0.571429 +vt 0.069498 0.571429 +vt 0.057915 0.571429 +vt 0.046332 0.548263 +vt 0.046332 0.571429 +vt 0.034749 0.571429 +vt 0.023166 0.548263 +vt 0.023166 0.571429 +vt 0.104247 0.571429 +vt 0.092664 0.548263 +vt 0.092664 0.571429 +vt 0.038610 0.486486 +vt 0.084942 0.640927 +vt 0.034749 0.648649 +vt 0.030888 0.640927 +vt 0.084942 0.652510 +vt 0.034749 0.652510 +vt 0.115830 0.494208 +vt 0.108108 0.486486 +vt 0.065637 0.486486 +vt 0.061776 0.486486 +vt 0.084942 0.486486 +vt 0.084942 0.660232 +vt 0.030888 0.660232 +vt 0.034749 0.667954 +vt 0.084942 0.671815 +vt 0.034749 0.671815 +vt 0.034749 0.629344 +vt 0.084942 0.633205 +vt 0.034749 0.633205 +vt 0.034749 0.610039 +vt 0.084942 0.613900 +vt 0.034749 0.613900 +vt 0.084942 0.640927 +vt 0.030888 0.640927 +vt 0.084942 0.602317 +vt 0.030888 0.602317 +vt 0.084942 0.621622 +vt 0.030888 0.621622 +vt 0.084942 0.660232 +vt 0.030888 0.660232 +vt 0.084942 0.679537 +vt 0.030888 0.679537 +vt 0.084942 0.621622 +vt 0.030888 0.621622 +vt 0.027689 0.684062 +vt 0.030888 0.694981 +vt 0.023166 0.694981 +vt 0.027689 0.705901 +vt 0.038610 0.702703 +vt 0.038610 0.710425 +vt 0.046332 0.694981 +vt 0.049531 0.705900 +vt 0.044070 0.700440 +vt 0.049531 0.684060 +vt 0.038610 0.687259 +vt 0.038610 0.679537 +vt 0.044070 0.689520 +vt 0.033150 0.700441 +vt 0.058577 0.705901 +vt 0.069498 0.710425 +vt 0.080419 0.705901 +vt 0.080419 0.684060 +vt 0.069498 0.679537 +vt 0.115830 0.571429 +vt 0.069498 0.494208 +vt 0.042471 0.486486 +vt 0.084942 0.648649 +vt 0.111969 0.486486 +vt 0.088803 0.486486 +vt 0.084942 0.667954 +vt 0.084942 0.629344 +vt 0.084942 0.610039 +vt 0.033150 0.689521 +vt 0.054054 0.694981 +vn -0.9239 0.3827 -0.0000 +vn -0.7972 0.6037 -0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.7972 -0.6037 0.0000 +vn -0.1368 -0.9906 -0.0000 +vn -0.3827 -0.9239 -0.0000 +vn -0.6037 -0.7972 -0.0000 +vn 0.1368 0.9906 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.6037 0.7972 0.0000 +vn -0.7071 0.7071 -0.0000 +vn -0.0000 1.0000 -0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.9906 -0.1368 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 -1.0000 -0.0000 +vn -0.7071 -0.7071 -0.0000 +vn -0.9906 0.1368 -0.0000 +vn -1.0000 0.0000 -0.0000 +vn -0.4397 0.1821 0.8795 +vn 0.8760 0.4823 0.0000 +vn -0.1951 0.9808 -0.0000 +vn -0.2783 0.9605 -0.0000 +vn 0.1821 0.4397 0.8795 +vn -0.1821 -0.4397 0.8795 +vn -0.1822 -0.4397 0.8795 +vn 0.4397 -0.1821 0.8795 +vn -0.4823 0.8760 -0.0000 +vn -0.9808 -0.1951 -0.0000 +vn -0.9605 -0.2783 -0.0000 +vn 0.4823 -0.8760 0.0000 +vn 0.9808 0.1951 0.0000 +vn 0.9605 0.2783 0.0000 +vn -0.8760 -0.4823 -0.0000 +vn 0.1951 -0.9808 0.0000 +vn 0.2783 -0.9605 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.8315 0.5556 0.0000 +vn 0.1822 0.4397 0.8795 +vn -0.5556 0.8315 -0.0000 +vn 0.5556 -0.8315 0.0000 +vn -0.8315 -0.5556 -0.0000 +usemtl None +s 1 +f 495/927/144 496/928/144 497/929/145 +f 498/930/146 499/931/146 500/932/146 +f 501/933/147 502/934/147 503/935/148 +f 504/936/149 505/937/150 506/938/151 +f 507/939/152 508/940/153 509/941/154 +f 498/942/155 507/939/152 499/943/156 +f 510/944/157 511/945/158 512/946/159 +f 513/947/160 504/948/149 500/949/161 +f 514/950/162 515/951/163 516/952/164 +f 501/933/165 517/953/165 502/934/165 +f 504/954/159 518/955/166 519/956/159 +f 518/955/166 520/957/167 521/958/168 +f 519/959/169 521/960/169 505/937/169 +f 508/940/170 522/961/170 523/962/171 +f 495/927/172 524/963/172 496/928/172 +f 521/958/168 506/964/155 505/965/155 +f 525/966/173 526/967/174 517/968/175 +f 527/969/176 528/970/177 524/971/178 +f 522/972/179 529/973/180 523/974/181 +f 524/971/178 497/975/157 496/976/157 +f 507/977/164 522/972/179 530/978/164 +f 523/974/181 509/979/160 508/980/160 +f 511/981/156 525/966/173 501/982/156 +f 517/968/175 503/983/162 502/984/162 +f 515/985/161 527/969/176 495/986/161 +f 497/987/182 531/988/182 507/989/182 +f 509/990/182 532/991/182 511/992/182 +f 533/993/182 503/994/182 526/995/182 +f 506/996/182 534/997/182 515/998/182 +f 520/999/182 526/995/182 529/1000/182 +f 497/929/145 498/942/155 516/952/164 +f 516/952/164 515/951/163 497/929/145 +f 515/951/163 495/927/144 497/929/145 +f 499/931/146 510/1001/146 512/1002/146 +f 512/1002/146 513/1003/146 499/931/146 +f 513/1003/146 500/932/146 499/931/146 +f 500/932/146 514/1004/146 516/1005/146 +f 516/1005/146 498/930/146 500/932/146 +f 503/935/148 513/947/160 512/946/159 +f 512/946/159 511/945/158 503/935/148 +f 511/945/158 501/933/147 503/935/148 +f 506/938/151 514/950/162 500/1006/161 +f 504/936/149 519/959/150 505/937/150 +f 506/938/151 500/1006/161 504/936/149 +f 509/941/154 510/944/157 499/943/156 +f 507/939/152 530/1007/153 508/940/153 +f 509/941/154 499/943/156 507/939/152 +f 498/942/155 497/929/145 507/939/152 +f 510/944/157 509/941/154 511/945/158 +f 513/947/160 503/935/148 504/948/149 +f 514/950/162 506/938/151 515/951/163 +f 501/933/165 525/1008/165 517/953/165 +f 504/954/159 533/1009/183 518/955/166 +f 518/955/166 533/1009/183 520/957/167 +f 519/959/169 518/1010/184 521/960/169 +f 508/940/170 530/1007/170 522/961/170 +f 495/927/172 527/1011/172 524/963/172 +f 521/958/168 520/957/167 506/964/155 +f 525/966/173 532/1012/185 526/967/174 +f 527/969/176 534/1013/186 528/970/177 +f 522/972/179 531/1014/187 529/973/180 +f 524/971/178 528/970/177 497/975/157 +f 507/977/164 531/1014/187 522/972/179 +f 523/974/181 529/973/180 509/979/160 +f 511/981/156 532/1012/185 525/966/173 +f 517/968/175 526/967/174 503/983/162 +f 515/985/161 534/1013/186 527/969/176 +f 497/987/182 528/1015/182 531/988/182 +f 509/990/182 529/1000/182 532/991/182 +f 533/993/182 504/1016/182 503/994/182 +f 506/996/182 520/999/182 534/997/182 +f 520/999/182 533/993/182 526/995/182 +f 526/995/182 532/991/182 529/1000/182 +f 529/1000/182 531/988/182 528/1015/182 +f 528/1015/182 534/997/182 529/1000/182 +f 534/997/182 520/999/182 529/1000/182 +o Stock +v 0.154680 0.735485 -6.625000 +v 0.343750 0.343750 -6.625000 +v 0.156250 0.343750 -7.375000 +v -0.154680 0.735485 -6.625000 +v -0.156250 0.343750 -7.375000 +v -0.343750 0.343750 -6.625000 +v 0.000000 0.781250 -6.625000 +v 0.468750 -0.093750 -6.625000 +v 0.406250 0.093750 -7.375000 +v 0.468750 0.093750 -6.625000 +v 0.343750 -0.343750 -6.625000 +v 0.343750 -0.343750 -7.625000 +v 0.406250 -0.093750 -7.375000 +v -0.156250 0.218750 -7.625000 +v 0.156250 0.218750 -7.625000 +v -0.156250 0.156250 -8.000000 +v 0.156250 0.156250 -8.000000 +v -0.156249 0.156250 -12.125000 +v 0.343751 0.031250 -12.125000 +v 0.156251 0.156250 -12.125000 +v 0.343750 -0.656249 -7.250000 +v 0.343750 -0.718750 -6.625000 +v 0.218750 -0.781249 -7.250000 +v -0.343750 -0.718750 -6.625000 +v -0.218750 -0.781249 -7.250000 +v 0.156251 -2.406250 -12.125000 +v 0.343751 -2.218750 -12.125000 +v -0.156249 -2.406250 -12.125000 +v 0.343750 0.031250 -8.000000 +v 0.343750 0.031250 -7.625000 +v -0.343750 -0.656249 -7.250000 +v -0.343750 -0.343750 -7.625000 +v -0.343750 -0.343750 -6.625000 +v -0.343749 -2.218750 -12.125000 +v -0.343749 0.031250 -12.125000 +v -0.343750 0.031250 -8.000000 +v -0.406250 0.093750 -7.375000 +v -0.343750 0.031250 -7.625000 +v -0.468750 0.093750 -6.625000 +v -0.468750 -0.093750 -6.625000 +v -0.406250 -0.093750 -7.375000 +v 0.343751 -2.218750 -12.500000 +v -0.156249 0.156250 -12.500000 +v -0.343749 0.031250 -12.500000 +v 0.156251 0.156250 -12.500000 +v 0.156251 -2.406250 -12.500000 +v -0.156249 -2.406250 -12.500000 +v 0.343751 -0.718750 -12.312500 +v 0.343751 0.031250 -12.500000 +v 0.343751 -1.468750 -12.312500 +v -0.343749 -0.718750 -12.312500 +v -0.343749 -2.218750 -12.500000 +v -0.343749 -1.468750 -12.312500 +vt 0.980695 0.088803 +vt 0.980695 0.115830 +vt 0.934363 0.108108 +vt 0.980695 0.069498 +vt 0.934363 0.050193 +vt 0.980695 0.042471 +vt 0.988417 0.088803 +vt 0.934363 0.088803 +vt 0.988417 0.079151 +vt 0.934363 0.069498 +vt 0.988417 0.069498 +vt 0.660232 0.270270 +vt 0.706564 0.281853 +vt 0.660232 0.281853 +vt 0.660232 0.297297 +vt 0.934363 0.127413 +vt 0.660232 0.254826 +vt 0.722008 0.254826 +vt 0.706564 0.270270 +vt 0.918919 0.069498 +vt 0.918919 0.088803 +vt 0.895753 0.069498 +vt 0.895753 0.088803 +vt 0.640927 0.069498 +vt 0.640927 0.104247 +vt 0.640927 0.088803 +vt 0.698842 0.235521 +vt 0.660232 0.231660 +vt 0.610039 0.158301 +vt 0.571429 0.150579 +vt 0.610039 0.146718 +vt 0.571429 0.115830 +vt 0.610039 0.119691 +vt 0.926641 0.142857 +vt 1.000000 0.123552 +vt 1.000000 0.138996 +vt 0.926641 0.123552 +vt 0.745174 0.277992 +vt 1.000000 0.277992 +vt 0.918919 0.104247 +vt 0.934363 0.108108 +vt 0.722008 0.277992 +vt 0.610039 0.108108 +vt 0.660232 0.231660 +vt 0.722008 0.254826 +vt 0.698842 0.235521 +vt 0.660232 0.254826 +vt 1.000000 0.138996 +vt 1.000000 0.123552 +vt 1.000000 0.277992 +vt 0.895753 0.054054 +vt 0.745174 0.277992 +vt 0.895753 0.104247 +vt 0.934363 0.050193 +vt 0.918919 0.054054 +vt 0.934363 0.030888 +vt 0.660232 0.297297 +vt 0.706564 0.281853 +vt 0.660232 0.281853 +vt 0.660232 0.270270 +vt 0.706564 0.270270 +vt 0.722008 0.277992 +vt 0.057915 0.266409 +vt 0.042471 0.289575 +vt 0.042471 0.266409 +vt 0.266409 0.266409 +vt 0.247104 0.289575 +vt 0.247104 0.266409 +vt 0.231660 0.289575 +vt 0.231660 0.266409 +vt 0.281853 0.266409 +vt 0.266409 0.289575 +vt 0.077220 0.266409 +vt 0.057915 0.289575 +vt 0.092664 0.266409 +vt 0.077220 0.289575 +vt 0.328185 0.277992 +vt 0.281853 0.289575 +vt 0.420849 0.266409 +vt 0.420849 0.289575 +vt 0.374517 0.277992 +vt 0.362934 0.223938 +vt 0.316602 0.266409 +vt 0.316602 0.223938 +vt 0.420849 0.235521 +vt 0.409266 0.266409 +vt 0.409266 0.223938 +vt 0.262548 0.235521 +vt 0.270270 0.266409 +vt 0.262548 0.254826 +vt 0.270270 0.223938 +vt 0.185328 0.277992 +vt 0.092664 0.289575 +vt 0.138996 0.277992 +vt 0.640927 0.054054 +vt 0.362934 0.266409 +vt 0.420849 0.254826 +vn 0.5473 0.7423 -0.3866 +vn 0.8653 0.4760 -0.1572 +vn 0.4013 0.8284 -0.3908 +vn -0.5473 0.7423 -0.3866 +vn -0.4013 0.8284 -0.3908 +vn -0.8653 0.4760 -0.1572 +vn -0.0000 0.8838 -0.4679 +vn 0.9776 -0.2045 -0.0496 +vn 0.9031 0.3710 -0.2165 +vn 0.9707 0.2263 -0.0809 +vn 0.8944 -0.4472 0.0000 +vn 0.9987 -0.0335 -0.0381 +vn 0.9878 -0.0620 -0.1431 +vn 0.0000 0.9510 -0.3092 +vn 0.0000 0.9966 -0.0825 +vn -0.1922 0.9814 0.0000 +vn 0.5865 0.8096 -0.0234 +vn 0.8817 0.4719 0.0000 +vn 0.5547 0.8321 0.0000 +vn 0.9999 -0.0096 0.0031 +vn 1.0000 0.0000 0.0000 +vn 0.7056 -0.7056 0.0657 +vn 0.1245 -0.9895 0.0741 +vn 0.3705 -0.9144 0.1632 +vn -0.1245 -0.9895 0.0741 +vn -0.3705 -0.9144 0.1632 +vn 0.2585 -0.9591 0.1158 +vn 0.6896 -0.6896 0.2210 +vn 0.8875 -0.4389 0.1407 +vn -0.2585 -0.9591 0.1158 +vn 0.9090 0.3749 -0.1824 +vn 0.6863 0.6863 -0.2408 +vn 0.9987 -0.0335 -0.0380 +vn -0.7056 -0.7056 0.0657 +vn -1.0000 -0.0000 -0.0000 +vn -0.9987 -0.0335 -0.0380 +vn -0.9999 -0.0096 0.0031 +vn -0.8875 -0.4389 0.1407 +vn -0.6896 -0.6896 0.2210 +vn -0.8817 0.4719 -0.0000 +vn -0.5547 0.8321 -0.0000 +vn -0.5865 0.8096 -0.0234 +vn -0.6863 0.6863 -0.2408 +vn -0.9031 0.3710 -0.2165 +vn -0.9090 0.3749 -0.1824 +vn -0.9707 0.2263 -0.0809 +vn -0.9776 -0.2045 -0.0496 +vn -0.9878 -0.0620 -0.1431 +vn -0.8944 -0.4472 -0.0000 +vn 0.9099 -0.4148 0.0000 +vn 0.9239 -0.3827 -0.0000 +vn 0.1922 0.9814 0.0000 +vn -0.2898 0.9571 -0.0000 +vn -0.8594 0.5112 -0.0000 +vn 0.2898 0.9571 -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.8594 0.5112 0.0000 +vn 0.0000 0.1222 -0.9925 +vn 0.0000 -0.1222 -0.9925 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.1628 -0.9867 +vn 0.0000 -0.1775 -0.9841 +vn -0.9099 -0.4148 -0.0000 +vn -0.1245 -0.9894 0.0741 +usemtl None +s 1 +f 535/1017/188 536/1018/189 537/1019/190 +f 538/1020/191 539/1021/192 540/1022/193 +f 535/1023/188 537/1024/190 541/1025/194 +f 541/1025/194 539/1026/192 538/1027/191 +f 537/1024/190 539/1026/192 541/1025/194 +f 542/1028/195 543/1029/196 544/1030/197 +f 544/1030/197 543/1029/196 536/1031/189 +f 537/1019/190 536/1018/189 543/1032/196 +f 542/1028/195 545/1033/198 546/1034/199 +f 547/1035/200 542/1028/195 546/1034/199 +f 537/1024/190 548/1036/201 539/1026/192 +f 549/1037/201 550/1038/202 548/1036/201 +f 551/1039/202 552/1040/203 550/1038/202 +f 551/1039/204 553/1041/205 554/1042/206 +f 555/1043/207 546/1034/199 556/1044/208 +f 555/1045/209 556/1046/210 557/1047/211 +f 557/1047/211 558/1048/212 559/1049/213 +f 557/1047/211 560/1050/214 555/1045/209 +f 560/1051/215 561/1052/216 555/1043/207 +f 562/1053/217 557/1047/211 559/1049/213 +f 555/1043/207 561/1052/216 546/1034/199 +f 563/1054/205 546/1034/199 553/1055/205 +f 561/1052/216 553/1055/205 546/1034/199 +f 564/1056/218 549/1037/219 543/1057/196 +f 543/1057/196 549/1037/219 537/1024/190 +f 546/1034/199 564/1058/218 547/1035/200 +f 563/1054/205 564/1058/218 546/1034/199 +f 543/1029/196 547/1035/200 564/1058/218 +f 545/1033/208 556/1044/208 546/1034/220 +f 559/1049/213 558/1048/212 565/1059/221 +f 558/1060/222 566/1061/223 565/1062/224 +f 558/1060/222 567/1063/222 566/1061/223 +f 562/1053/217 559/1049/213 565/1059/221 +f 568/1064/225 562/1065/226 565/1062/224 +f 565/1062/224 566/1061/223 568/1064/225 +f 568/1064/225 566/1061/223 569/1066/227 +f 552/1040/228 570/1067/227 550/1038/229 +f 569/1066/227 566/1061/223 570/1068/227 +f 563/1069/205 551/1039/204 564/1056/218 +f 548/1036/230 571/1070/231 539/1026/192 +f 572/1071/232 571/1070/231 548/1036/230 +f 539/1021/192 571/1072/231 540/1022/193 +f 540/1073/193 571/1074/231 573/1075/233 +f 574/1076/234 571/1074/231 575/1077/235 +f 567/1063/236 574/1076/234 566/1061/223 +f 575/1077/235 566/1061/223 574/1076/234 +f 571/1074/231 572/1078/232 575/1077/235 +f 575/1077/235 572/1078/232 566/1061/223 +f 570/1068/227 566/1061/223 572/1078/232 +f 560/1079/214 576/1080/237 561/1081/238 +f 554/1082/239 577/1083/240 552/1084/203 +f 552/1084/203 578/1085/241 569/1086/227 +f 553/1087/205 579/1088/242 554/1082/239 +f 562/1089/217 580/1090/243 560/1079/214 +f 568/1091/244 581/1092/245 562/1089/217 +f 553/1087/205 582/1093/208 583/1094/246 +f 561/1095/238 576/1096/237 584/1097/208 +f 561/1095/238 582/1093/208 553/1087/205 +f 584/1098/247 585/1099/248 582/1100/248 +f 580/1101/249 586/1102/250 576/1103/250 +f 586/1102/250 584/1098/247 576/1103/250 +f 579/1104/249 578/1105/251 577/1106/249 +f 582/1100/248 578/1105/251 583/1107/251 +f 578/1085/241 585/1108/222 569/1086/227 +f 586/1109/252 568/1091/244 587/1110/222 +f 585/1108/222 568/1091/244 569/1086/227 +f 551/1039/204 549/1037/219 564/1056/218 +f 570/1067/227 572/1071/232 550/1038/229 +f 548/1036/230 550/1038/229 572/1071/232 +f 542/1028/195 547/1035/200 543/1029/196 +f 537/1024/190 549/1037/201 548/1036/201 +f 549/1037/201 551/1039/202 550/1038/202 +f 551/1039/202 554/1042/239 552/1040/203 +f 551/1039/204 563/1069/205 553/1041/205 +f 557/1047/211 556/1046/210 558/1048/253 +f 562/1053/217 560/1050/214 557/1047/211 +f 552/1040/228 569/1111/227 570/1067/227 +f 574/1076/234 573/1075/233 571/1074/231 +f 560/1079/214 580/1090/243 576/1080/237 +f 554/1082/239 579/1088/242 577/1083/240 +f 552/1084/203 577/1083/240 578/1085/241 +f 553/1087/205 583/1094/246 579/1088/242 +f 562/1089/217 581/1092/245 580/1090/243 +f 568/1091/244 586/1109/252 581/1092/245 +f 561/1095/238 584/1097/208 582/1093/208 +f 584/1098/247 587/1112/247 585/1099/248 +f 580/1101/249 581/1113/249 586/1102/250 +f 586/1102/250 587/1112/247 584/1098/247 +f 579/1104/249 583/1107/251 578/1105/251 +f 582/1100/248 585/1099/248 578/1105/251 +f 585/1108/222 587/1110/222 568/1091/244 +o Magazine +v 0.312500 -3.843750 -1.312500 +v -0.312500 -3.593750 0.437500 +v -0.312500 -3.843750 -1.312500 +v 0.312500 -3.593750 0.437500 +v -0.312500 -0.218750 0.250000 +v 0.312500 -0.218750 -0.562500 +v 0.125000 -0.218750 -0.562500 +v 0.312500 -0.218750 0.250000 +v -0.312500 -0.218750 -0.562500 +v -0.125000 -0.218750 -0.562500 +v 0.125000 -0.218750 -1.437500 +v 0.125000 -0.093750 -0.687500 +v 0.125000 -0.093750 -1.437500 +v -0.125000 -0.093750 -0.687500 +v -0.125000 -0.218750 -1.437500 +v -0.125000 -0.093750 -1.437500 +v -0.187500 -0.093750 -1.437500 +v -0.312500 -0.218750 -1.437500 +v 0.187500 -0.093750 -1.437500 +v 0.312500 -0.218750 -1.437500 +v -0.187500 -0.093750 -0.687500 +v 0.187500 -0.093750 -0.687500 +vt 0.420849 0.328185 +vt 0.312741 0.289575 +vt 0.420849 0.289575 +vt 0.312741 0.328185 +vt 0.104247 0.289575 +vt 0.698842 0.328185 +vt 0.698842 0.316602 +vt 0.749035 0.328185 +vt 0.698842 0.289575 +vt 0.749035 0.289575 +vt 0.698842 0.301158 +vt 0.675676 0.316602 +vt 0.667954 0.359073 +vt 0.667954 0.316602 +vt 0.683398 0.359073 +vt 0.675676 0.316602 +vt 0.683398 0.316602 +vt 0.652510 0.297297 +vt 0.644788 0.301158 +vt 0.644788 0.289575 +vt 0.644788 0.316602 +vt 0.652510 0.320463 +vt 0.644788 0.328185 +vt 0.104247 0.328185 +vt 0.675676 0.366795 +vt 0.675676 0.366795 +vt 0.652510 0.301158 +vt 0.652510 0.316602 +vt 0.656371 0.243243 +vt 0.656371 0.289575 +vt 0.687259 0.362934 +vt 0.687259 0.316602 +vt 0.656371 0.374517 +vt 0.644788 0.382239 +vt 0.664093 0.362934 +vt 0.664093 0.316602 +vt 0.683398 0.374517 +vt 0.694981 0.374517 +vt 0.667954 0.374517 +vt 0.656371 0.374517 +vt 0.436293 0.185328 +vt 0.644788 0.185328 +vt 0.644788 0.235521 +vt 0.644788 0.432432 +vt 0.436293 0.432432 +vt 0.683398 0.362934 +vt 0.656371 0.328185 +vt 0.667954 0.362934 +vn 0.0000 -0.9899 0.1414 +vn 0.0000 0.0555 0.9985 +vn -0.0000 1.0000 0.0000 +vn -1.0000 -0.0000 -0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.0000 0.0000 -1.0000 +vn 0.0000 -0.0345 -0.9994 +vn -0.9221 0.3869 -0.0000 +vn -0.7071 0.7071 -0.0000 +vn 0.0000 0.8959 0.4444 +vn 0.9221 0.3869 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.9847 0.1743 0.0000 +vn 0.0000 0.7071 0.7071 +vn -0.9847 0.1743 0.0000 +vn 0.0000 0.9239 0.3827 +usemtl None +s off +f 588/1114/254 589/1115/254 590/1116/254 +f 591/1117/255 592/1118/255 589/1115/255 +f 593/1119/256 594/1120/256 595/1121/256 +f 596/1122/256 592/1123/256 597/1124/256 +f 598/1125/257 599/1126/257 600/1127/257 +f 601/1128/258 602/1129/258 603/1130/258 +f 604/1131/259 602/1132/259 605/1133/259 +f 598/1134/259 606/1135/259 607/1136/259 +f 594/1120/256 592/1123/256 595/1121/256 +f 598/1134/256 597/1124/256 594/1120/256 +f 598/1134/260 607/1136/260 588/1114/260 +f 588/1114/254 591/1117/254 589/1115/254 +f 591/1117/255 595/1137/255 592/1118/255 +f 598/1125/257 594/1138/257 599/1126/257 +f 601/1128/258 597/1139/258 602/1129/258 +f 604/1131/259 603/1140/259 602/1132/259 +f 598/1134/259 600/1141/259 606/1135/259 +f 594/1120/256 597/1124/256 592/1123/256 +f 598/1134/256 602/1132/256 597/1124/256 +f 588/1114/260 590/1116/260 602/1132/260 +f 590/1116/260 605/1133/260 602/1132/260 +f 602/1132/260 598/1134/260 588/1114/260 +s 1 +f 605/1133/261 608/1142/262 604/1143/262 +f 608/1144/263 603/1130/256 604/1145/256 +f 607/1136/264 609/1146/265 593/1147/266 +f 600/1127/256 609/1148/263 606/1149/256 +f 597/1150/267 608/1144/263 596/1151/267 +f 609/1148/263 594/1152/267 593/1153/267 +f 589/1154/257 592/1155/257 596/1156/268 +f 593/1147/266 595/1157/258 591/1158/258 +f 605/1133/261 596/1156/268 608/1142/262 +f 608/1144/263 601/1159/269 603/1130/256 +f 607/1136/264 606/1160/265 609/1146/265 +f 600/1127/256 599/1161/269 609/1148/263 +f 597/1150/267 601/1159/269 608/1144/263 +f 609/1148/263 599/1161/269 594/1152/267 +f 605/1133/261 590/1116/257 596/1156/268 +f 590/1116/257 589/1154/257 596/1156/268 +f 591/1158/258 588/1114/258 593/1147/266 +f 588/1114/258 607/1136/264 593/1147/266 +o Mag_Paddle +v -0.093750 -1.307663 -1.505856 +v 0.093750 -1.477596 -1.585097 +v 0.093750 -1.307663 -1.505856 +v 0.093750 -1.451182 -1.641741 +v -0.093750 -1.281250 -1.562500 +v 0.093750 -1.281250 -1.562500 +v -0.093750 -1.477596 -1.585097 +v 0.156250 -1.734404 -1.773809 +v -0.156250 -1.734404 -1.773809 +v -0.156250 -1.507827 -1.668154 +v 0.156250 -1.534240 -1.611510 +v -0.156250 -1.534240 -1.611510 +v -0.093750 -1.451182 -1.641741 +v 0.156250 -1.507827 -1.668154 +v -0.156250 -1.760817 -1.717165 +v 0.156250 -1.760817 -1.717165 +vt 0.725869 0.664093 +vt 0.737452 0.652510 +vt 0.737452 0.664093 +vt 0.749035 0.652510 +vt 0.760618 0.664093 +vt 0.749035 0.664093 +vt 0.741313 0.652510 +vt 0.745174 0.664093 +vt 0.741313 0.664093 +vt 0.764479 0.664093 +vt 0.768340 0.652510 +vt 0.768340 0.664093 +vt 0.745174 0.633205 +vt 0.764479 0.633205 +vt 0.764479 0.648649 +vt 0.741313 0.648649 +vt 0.722008 0.648649 +vt 0.725869 0.652510 +vt 0.760618 0.652510 +vt 0.745174 0.652510 +vt 0.764479 0.652510 +vt 0.745174 0.648649 +vt 0.722008 0.633205 +vt 0.741313 0.633205 +vt 0.768340 0.648649 +vt 0.768340 0.633205 +vt 0.745174 0.629344 +vt 0.764479 0.629344 +vn 0.0000 -0.4226 0.9063 +vn 0.0000 0.4226 -0.9063 +vn 1.0000 0.0000 0.0000 +vn -1.0000 -0.0000 -0.0000 +vn 0.9239 0.3468 0.1617 +vn 0.7071 0.6409 0.2988 +vn -0.7071 0.6409 0.2988 +vn -0.9239 0.3468 0.1617 +vn 0.0000 -0.9063 -0.4226 +usemtl None +s off +f 610/1162/270 611/1163/270 612/1164/270 +f 613/1165/271 614/1166/271 615/1167/271 +f 611/1168/272 615/1169/272 612/1170/272 +f 614/1171/273 616/1172/273 610/1173/273 +f 617/1174/271 618/1175/271 619/1176/271 +f 620/1177/270 611/1163/270 621/1178/270 +f 610/1162/270 616/1179/270 611/1163/270 +f 613/1165/271 622/1180/271 614/1166/271 +f 611/1168/272 613/1181/272 615/1169/272 +f 614/1171/273 622/1182/273 616/1172/273 +f 619/1176/271 622/1180/271 613/1165/271 +f 613/1165/271 623/1183/271 619/1176/271 +f 623/1183/271 617/1174/271 619/1176/271 +f 611/1163/270 616/1179/270 621/1178/270 +f 621/1178/270 624/1184/270 625/1185/270 +f 625/1185/270 620/1177/270 621/1178/270 +s 1 +f 620/1177/274 613/1181/275 611/1168/275 +f 622/1182/276 621/1186/277 616/1172/276 +f 619/1176/277 624/1187/273 621/1186/277 +f 625/1185/272 623/1183/274 620/1177/274 +f 625/1188/278 618/1175/278 617/1174/278 +f 620/1177/274 623/1183/274 613/1181/275 +f 622/1182/276 619/1176/277 621/1186/277 +f 619/1176/277 618/1175/273 624/1187/273 +f 625/1185/272 617/1174/272 623/1183/274 +f 625/1188/278 624/1189/278 618/1175/278 +o Plug +v -0.000000 0.781250 5.125000 +v -0.156250 0.625000 5.125000 +v -0.110486 0.735485 5.125000 +v 0.156250 0.625000 5.437500 +v -0.110486 0.514515 5.125000 +v -0.110486 0.514515 5.687500 +v -0.156250 0.625000 5.687500 +v 0.110486 0.735485 5.437500 +v 0.110485 0.514515 5.125000 +v -0.000000 0.468750 5.125000 +v -0.110486 0.735485 6.000000 +v -0.110486 0.514515 6.000000 +v 0.110485 0.514515 6.000000 +v 0.110486 0.735485 5.125000 +v 0.156250 0.625000 5.125000 +v 0.110486 0.735485 6.000000 +v -0.000000 0.781250 6.000000 +v -0.156250 0.625000 6.000000 +v -0.000000 0.468750 6.000000 +v 0.156250 0.625000 6.000000 +vt 0.181467 0.602317 +vt 0.193050 0.598456 +vt 0.189189 0.602317 +vt 0.208494 0.579151 +vt 0.193050 0.598456 +vt 0.193050 0.563707 +vt 0.181467 0.509652 +vt 0.189189 0.486486 +vt 0.189189 0.509652 +vt 0.204633 0.602317 +vt 0.196911 0.602317 +vt 0.177606 0.579151 +vt 0.193050 0.563707 +vt 0.194084 0.547229 +vt 0.180433 0.547229 +vt 0.180433 0.560879 +vt 0.177606 0.598456 +vt 0.208494 0.598456 +vt 0.181467 0.486486 +vt 0.194084 0.560879 +vt 0.196911 0.554054 +vt 0.187259 0.544402 +vt 0.177606 0.554054 +vt 0.187259 0.563707 +vt 0.196911 0.544402 +vt 0.196911 0.490348 +vt 0.189189 0.544402 +vt 0.173745 0.544402 +vt 0.173745 0.490348 +vt 0.189189 0.490348 +vt 0.181467 0.490348 +vt 0.181467 0.544402 +vn 0.0000 0.0000 -1.0000 +vn -0.3827 0.9239 -0.0000 +vn -0.6048 -0.2505 -0.7560 +vn 0.3827 -0.9239 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.3827 0.9239 0.0000 +vn 0.6037 0.7972 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.9906 -0.1368 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 1.0000 -0.0000 0.0000 +usemtl None +s off +f 626/1190/279 627/1191/279 628/1192/279 +f 629/1193/280 630/1194/280 631/1195/280 +f 629/1196/281 632/1197/281 633/1198/281 +f 630/1194/279 634/1199/279 635/1200/279 +f 627/1191/282 633/1201/282 632/1202/282 +f 636/1203/283 637/1204/283 638/1205/283 +f 626/1190/279 639/1206/279 627/1191/279 +f 629/1193/280 640/1207/280 630/1194/280 +f 629/1196/281 631/1208/281 632/1197/281 +f 630/1194/279 640/1207/279 634/1199/279 +f 627/1191/282 639/1206/282 633/1201/282 +f 641/1209/283 642/1210/283 636/1203/283 +f 636/1203/283 643/1211/283 637/1204/283 +f 637/1204/283 644/1212/283 638/1205/283 +f 638/1205/283 645/1213/283 641/1209/283 +f 641/1209/283 636/1203/283 638/1205/283 +s 1 +f 642/1214/284 633/1198/285 626/1215/284 +f 641/1216/286 629/1196/287 633/1198/285 +f 629/1196/287 638/1217/288 634/1218/288 +f 633/1198/285 639/1219/284 626/1215/284 +f 629/1196/287 634/1218/288 640/1220/288 +f 642/1214/284 641/1216/286 633/1198/285 +f 641/1216/286 645/1221/289 629/1196/287 +f 629/1196/287 645/1221/289 638/1217/288 +o Handle +v -0.034864 0.545839 5.343752 +v -0.080628 0.656323 5.218752 +v -0.034864 0.545839 5.218752 +v 0.208084 0.775912 5.343752 +v -0.080628 0.656323 5.343752 +v 0.253848 0.665427 5.593752 +v 0.253848 0.665427 5.343752 +v 0.450993 0.679438 5.656252 +v 0.427076 0.737180 5.593752 +v 0.381311 0.847665 5.593752 +v 0.357394 0.905408 5.656252 +v 0.184166 0.833655 5.968752 +v 0.357394 0.905408 6.031252 +v 0.277766 0.607685 5.968752 +v 0.450993 0.679438 6.031252 +v 0.208084 0.775912 5.593752 +v 0.184166 0.833655 5.656252 +v 0.277766 0.607685 5.656252 +v 0.080621 0.593674 5.156252 +v 0.427076 0.737180 5.343752 +v 0.323569 0.823748 5.156252 +v 0.034857 0.704159 5.156252 +v 0.381311 0.847665 5.343752 +v 0.369333 0.713263 5.156252 +vt 0.277992 0.416988 +vt 0.285714 0.409266 +vt 0.285714 0.416988 +vt 0.258687 0.409266 +vt 0.277992 0.409266 +vt 0.243243 0.416988 +vt 0.258687 0.416988 +vt 0.343629 0.420849 +vt 0.339768 0.416988 +vt 0.339768 0.409266 +vt 0.258687 0.378378 +vt 0.239382 0.389961 +vt 0.235521 0.378378 +vt 0.239382 0.436293 +vt 0.258687 0.447876 +vt 0.235521 0.447876 +vt 0.243243 0.409266 +vt 0.343629 0.405405 +vt 0.366795 0.405405 +vt 0.366795 0.420849 +vt 0.258687 0.389961 +vt 0.258687 0.436293 +vt 0.277992 0.436293 +vt 0.289575 0.424710 +vt 0.262548 0.447876 +vt 0.277992 0.447876 +vt 0.277992 0.389961 +vt 0.289575 0.382239 +vt 0.289575 0.401544 +vt 0.262548 0.378378 +vt 0.277992 0.378378 +vt 0.324324 0.416988 +vt 0.293436 0.416988 +vt 0.312741 0.409266 +vt 0.312741 0.416988 +vt 0.293436 0.409266 +vt 0.324324 0.409266 +vt 0.239382 0.405405 +vt 0.239382 0.420849 +vt 0.262548 0.389961 +vt 0.262548 0.436293 +vt 0.220077 0.420849 +vt 0.220077 0.405405 +vt 0.208494 0.420849 +vt 0.289575 0.444015 +vt 0.208494 0.405405 +vn -0.9239 -0.3827 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.9239 0.3827 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.3827 -0.9239 -0.0000 +vn 0.3536 -0.8536 -0.3827 +vn -0.3536 0.8535 -0.3827 +vn 0.9119 0.3777 -0.1602 +vn -0.2123 -0.0879 -0.9732 +vn -0.0000 0.0000 -1.0000 +vn -0.4132 -0.1711 -0.8944 +vn 0.8765 0.3630 -0.3162 +vn -0.2706 0.6533 -0.7071 +vn -0.3535 0.8536 -0.3827 +vn -0.3536 0.8536 -0.3827 +vn 0.2706 -0.6533 -0.7071 +vn -0.7495 -0.3104 0.5847 +vn -0.2922 -0.1210 0.9487 +usemtl None +s off +f 646/1222/290 647/1223/290 648/1224/290 +f 646/1222/291 649/1225/291 650/1226/291 +f 651/1227/290 649/1225/290 652/1228/290 +f 653/1229/292 654/1230/292 655/1231/292 +f 656/1232/293 657/1233/293 658/1234/293 +f 659/1235/294 653/1236/294 660/1237/294 +f 646/1222/290 650/1226/290 647/1223/290 +f 646/1222/291 652/1228/291 649/1225/291 +f 651/1227/290 661/1238/290 649/1225/290 +f 655/1231/292 656/1239/292 653/1229/292 +f 656/1239/292 658/1240/292 653/1229/292 +f 658/1240/292 660/1241/292 653/1229/292 +f 656/1232/293 662/1242/293 657/1233/293 +f 659/1235/294 663/1243/294 653/1236/294 +s 1 +f 652/1244/294 646/1222/294 664/1245/294 +f 654/1246/295 652/1244/294 665/1247/294 +f 649/1248/293 666/1249/293 667/1250/293 +f 649/1248/293 655/1251/296 668/1252/293 +f 665/1253/297 655/1231/292 654/1230/292 +f 664/1254/298 666/1255/299 669/1256/299 +f 648/1224/300 667/1257/298 664/1254/298 +f 669/1256/301 668/1258/297 665/1253/297 +f 662/1259/290 651/1227/290 663/1260/290 +f 662/1242/302 655/1251/303 661/1261/304 +f 654/1246/295 663/1243/305 651/1262/295 +f 662/1259/290 659/1263/306 657/1264/306 +f 660/1265/307 657/1264/306 659/1263/306 +f 646/1222/294 648/1224/294 664/1245/294 +f 664/1245/294 669/1266/294 652/1244/294 +f 669/1266/294 665/1247/294 652/1244/294 +f 654/1246/295 651/1262/295 652/1244/294 +f 667/1250/293 647/1223/293 650/1226/293 +f 649/1248/293 668/1252/293 666/1249/293 +f 667/1250/293 650/1226/293 649/1248/293 +f 649/1248/293 661/1261/296 655/1251/296 +f 665/1253/297 668/1258/297 655/1231/292 +f 664/1254/298 667/1257/298 666/1255/299 +f 648/1224/300 647/1223/300 667/1257/298 +f 669/1256/301 666/1255/301 668/1258/297 +f 662/1259/290 661/1238/290 651/1227/290 +f 662/1242/302 656/1232/302 655/1251/296 +f 654/1246/295 653/1236/305 663/1243/305 +f 662/1259/290 663/1260/290 659/1263/306 +f 660/1265/307 658/1267/307 657/1264/306 +o Guide_And_Bolt +v 0.093750 0.468750 0.125000 +v -0.156250 0.625000 0.125000 +v -0.093750 0.468750 0.125000 +v 0.281250 0.343750 0.125000 +v -0.281250 0.343750 0.125000 +v -0.218750 0.093750 0.125000 +v -0.093750 0.218750 0.125000 +v -0.343750 0.218750 0.125000 +v 0.218750 0.093750 0.125000 +v 0.343750 0.218750 0.125000 +v 0.093750 0.218750 0.125000 +v -0.093750 0.468750 -1.750000 +v 0.093750 0.218750 0.875000 +v -0.218750 0.093750 0.875000 +v -0.343750 0.218750 -1.750000 +v -0.093750 0.218750 0.875000 +v -0.281250 0.343750 -1.750000 +v -0.218750 -0.093750 0.875000 +v 0.093750 -0.218750 0.875000 +v -0.000000 0.468750 5.125000 +v -0.110486 0.514515 0.125000 +v -0.000000 0.468750 0.125000 +v -0.000000 0.781250 5.125000 +v 0.110486 0.735485 0.125000 +v -0.000000 0.781250 0.125000 +v 0.110485 0.514515 5.125000 +v 0.110485 0.514515 0.125000 +v -0.110486 0.514515 5.125000 +v 0.110486 0.735485 5.125000 +v 0.156250 0.625000 0.125000 +v -0.156250 0.625000 5.125000 +v -0.156250 0.625000 -1.750000 +v 0.218750 0.093750 0.875000 +v -0.093750 -0.218750 0.875000 +v 0.218750 -0.093750 0.875000 +v 0.156250 0.625000 5.125000 +v -0.110486 0.735485 5.125000 +vt 0.347490 0.509652 +vt 0.335907 0.494208 +vt 0.347490 0.498069 +vt 0.355212 0.521236 +vt 0.355212 0.486486 +vt 0.370656 0.490348 +vt 0.362934 0.498069 +vt 0.362934 0.482625 +vt 0.370656 0.517375 +vt 0.362934 0.525097 +vt 0.362934 0.509652 +vt 0.335907 0.517375 +vt 0.220077 0.505791 +vt 0.335907 0.505791 +vt 0.262548 0.471042 +vt 0.208494 0.482625 +vt 0.208494 0.471042 +vt 0.262548 0.447876 +vt 0.208494 0.459459 +vt 0.208494 0.447876 +vt 0.335907 0.490348 +vt 0.220077 0.482625 +vt 0.335907 0.482625 +vt 0.262548 0.459459 +vt 0.220077 0.490348 +vt 0.270270 0.474903 +vt 0.262548 0.455598 +vt 0.281853 0.447876 +vt 0.598456 0.440154 +vt 0.289575 0.447876 +vt 0.289575 0.440154 +vt 0.289575 0.471042 +vt 0.598456 0.463320 +vt 0.598456 0.471042 +vt 0.598456 0.432432 +vt 0.289575 0.432432 +vt 0.598456 0.447876 +vt 0.289575 0.455598 +vt 0.289575 0.463320 +vt 0.598456 0.455598 +vt 0.598456 0.461390 +vt 0.608108 0.451737 +vt 0.617761 0.461390 +vt 0.335907 0.513514 +vt 0.220077 0.517375 +vt 0.262548 0.482625 +vt 0.262548 0.467181 +vt 0.270270 0.447876 +vt 0.289575 0.455598 +vt 0.289575 0.467181 +vt 0.281853 0.474903 +vt 0.598456 0.455598 +vt 0.289575 0.455598 +vt 0.614933 0.468215 +vt 0.608108 0.471042 +vt 0.601283 0.468215 +vt 0.601283 0.454565 +vt 0.614933 0.454565 +vn -0.0000 0.0000 1.0000 +vn -0.9285 -0.3714 -0.0000 +vn -0.9550 0.2966 -0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 0.7071 -0.0000 +vn -0.3827 0.9239 0.0000 +vn -0.7497 0.6618 -0.0000 +vn -0.8944 0.4472 -0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.7071 -0.7071 -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.0000 0.0000 -1.0000 +usemtl None +s 1 +f 670/1268/308 671/1269/308 672/1270/308 +f 673/1271/308 672/1270/308 674/1272/308 +f 675/1273/308 676/1274/308 677/1275/308 +f 678/1276/308 679/1277/308 680/1278/308 +f 680/1278/308 679/1277/308 673/1271/308 +f 671/1279/309 681/1280/310 672/1281/310 +f 682/1282/311 678/1283/312 680/1284/311 +f 683/1285/313 676/1286/314 675/1287/313 +f 674/1288/315 684/1289/316 677/1290/316 +f 685/1291/314 680/1284/311 676/1286/314 +f 672/1281/310 686/1292/315 674/1288/315 +f 685/1293/308 687/1294/308 688/1295/308 +f 689/1296/317 690/1297/318 691/1298/317 +f 692/1299/311 693/1300/312 694/1301/311 +f 695/1302/319 691/1298/317 696/1303/319 +f 697/1304/318 671/1305/320 690/1297/318 +f 698/1306/312 699/1307/321 693/1300/312 +f 689/1308/322 700/1309/322 692/1310/322 +f 670/1268/308 699/1311/308 671/1269/308 +f 673/1271/308 670/1268/308 672/1270/308 +f 673/1271/308 674/1272/308 676/1274/308 +f 674/1272/308 677/1275/308 676/1274/308 +f 676/1274/308 680/1278/308 673/1271/308 +f 671/1279/309 701/1312/309 681/1280/310 +f 682/1282/311 702/1313/312 678/1283/312 +f 683/1285/313 685/1291/314 676/1286/314 +f 674/1288/315 686/1292/315 684/1289/316 +f 685/1291/314 682/1282/311 680/1284/311 +f 672/1281/310 681/1280/310 686/1292/315 +f 685/1293/308 683/1314/308 687/1294/308 +f 687/1294/308 703/1315/308 688/1295/308 +f 688/1295/308 704/1316/308 702/1317/308 +f 702/1317/308 682/1318/308 688/1295/308 +f 682/1318/308 685/1293/308 688/1295/308 +f 689/1296/317 697/1304/318 690/1297/318 +f 692/1299/311 698/1306/312 693/1300/312 +f 695/1302/319 689/1296/317 691/1298/317 +f 697/1304/318 700/1319/320 671/1305/320 +f 698/1306/312 705/1320/321 699/1307/321 +f 692/1310/322 698/1321/322 705/1322/322 +f 705/1322/322 695/1323/322 692/1310/322 +f 695/1323/322 689/1308/322 692/1310/322 +f 689/1308/322 697/1324/322 700/1309/322 +f 700/1309/322 706/1325/322 692/1310/322 +o Bullet +v 0.099841 -0.175376 -0.129965 +v 0.070825 -0.251737 -0.248711 +v 0.099231 -0.186101 -0.254503 +v 0.004758 -0.267392 -0.121575 +v -0.061742 -0.249788 -0.248230 +v 0.004148 -0.278117 -0.246113 +v -0.087637 -0.172620 -0.129284 +v -0.059841 -0.117709 -0.259614 +v -0.088247 -0.183345 -0.253822 +v 0.007446 -0.080604 -0.137674 +v 0.072726 -0.119658 -0.260095 +v 0.006836 -0.091329 -0.262212 +v 0.071436 -0.241012 -0.124174 +v -0.061132 -0.239063 -0.123692 +v -0.059231 -0.106984 -0.135076 +v 0.073336 -0.108933 -0.135558 +v 0.050573 -0.202586 0.060816 +v -0.037805 -0.201287 0.061137 +v -0.036538 -0.113234 0.053547 +v 0.051840 -0.114534 0.053226 +v 0.069510 -0.158829 0.056954 +v -0.055475 -0.156991 0.057409 +v 0.007913 -0.095648 0.051815 +v 0.007628 -0.147185 0.181719 +v 0.006122 -0.220173 0.062548 +v -0.108395 -0.325341 -0.617887 +v -0.156232 -0.278953 -1.374432 +v -0.112057 -0.389692 -1.365112 +v -0.105228 -0.105209 -0.636860 +v 0.002240 -0.125593 -1.388416 +v -0.108889 -0.169560 -1.384085 +v 0.115718 -0.108457 -0.637663 +v 0.156232 -0.283547 -1.375568 +v 0.112057 -0.172808 -1.384888 +v 0.159893 -0.219196 -0.628343 +v 0.108889 -0.392940 -1.365915 +v 0.001422 -0.372556 -0.614359 +v -0.002240 -0.436907 -1.361584 +v -0.152571 -0.214602 -0.627207 +v 0.005901 -0.061242 -0.641191 +v 0.112550 -0.328589 -0.618690 +v 0.007284 -0.060198 -0.264895 +v -0.082840 -0.116821 -0.510506 +v -0.081619 -0.095371 -0.261431 +v 0.130478 -0.186561 -0.254616 +v 0.093917 -0.119420 -0.511148 +v 0.095137 -0.097970 -0.262073 +v 0.092603 -0.274075 -0.246894 +v 0.129257 -0.208011 -0.503692 +v -0.084153 -0.271477 -0.246252 +v 0.002480 -0.330699 -0.492504 +v 0.003700 -0.309249 -0.243429 +v -0.120714 -0.204336 -0.502783 +v -0.119494 -0.182886 -0.253708 +v 0.006063 -0.081648 -0.513970 +v 0.091383 -0.295526 -0.495969 +v -0.085374 -0.292927 -0.495327 +vt 0.776062 0.513514 +vt 0.772201 0.505791 +vt 0.776062 0.505791 +vt 0.799228 0.513514 +vt 0.795367 0.505791 +vt 0.799228 0.505791 +vt 0.791506 0.513514 +vt 0.787645 0.505791 +vt 0.791506 0.505791 +vt 0.783784 0.513514 +vt 0.779923 0.505791 +vt 0.783784 0.505791 +vt 0.772201 0.513514 +vt 0.768340 0.505791 +vt 0.795367 0.513514 +vt 0.787645 0.513514 +vt 0.779923 0.513514 +vt 0.772201 0.525097 +vt 0.768340 0.513514 +vt 0.795367 0.525097 +vt 0.787645 0.525097 +vt 0.779923 0.525097 +vt 0.776062 0.525097 +vt 0.791506 0.525097 +vt 0.783784 0.525097 +vt 0.774131 0.532819 +vt 0.781853 0.532819 +vt 0.785714 0.532819 +vt 0.793436 0.532819 +vt 0.768340 0.525097 +vt 0.770270 0.532819 +vt 0.777992 0.532819 +vt 0.789575 0.532819 +vt 0.799228 0.525097 +vt 0.797297 0.532819 +vt 0.745174 0.494208 +vt 0.698842 0.501930 +vt 0.698842 0.494208 +vt 0.745174 0.509652 +vt 0.698842 0.517375 +vt 0.698842 0.509652 +vt 0.745174 0.525097 +vt 0.698842 0.532819 +vt 0.698842 0.525097 +vt 0.745174 0.532819 +vt 0.698842 0.540541 +vt 0.745174 0.486486 +vt 0.698842 0.486486 +vt 0.745174 0.501930 +vt 0.745174 0.517375 +vt 0.745174 0.540541 +vt 0.698842 0.548263 +vt 0.768340 0.517375 +vt 0.752896 0.509652 +vt 0.768340 0.509652 +vt 0.768340 0.532819 +vt 0.752896 0.525097 +vt 0.768340 0.525097 +vt 0.768340 0.540541 +vt 0.752896 0.532819 +vt 0.768340 0.494208 +vt 0.752896 0.486486 +vt 0.768340 0.486486 +vt 0.752896 0.501930 +vt 0.768340 0.501930 +vt 0.752896 0.517375 +vt 0.768340 0.548263 +vt 0.752896 0.540541 +vt 0.752896 0.494208 +vt 0.752896 0.494981 +vt 0.752896 0.501158 +vt 0.752896 0.502703 +vt 0.752896 0.508880 +vt 0.752896 0.516602 +vt 0.752896 0.524324 +vt 0.752896 0.525869 +vt 0.752896 0.532046 +vt 0.752896 0.539768 +vt 0.752896 0.547490 +vt 0.745174 0.548263 +vt 0.752896 0.493436 +vt 0.795367 0.501930 +vt 0.787645 0.494208 +vt 0.795367 0.486486 +vt 0.777992 0.486486 +vt 0.768340 0.496139 +vt 0.777992 0.505791 +vt 0.752896 0.548263 +vt 0.752896 0.510425 +vt 0.752896 0.518147 +vt 0.752896 0.533591 +vt 0.752896 0.541313 +vt 0.752896 0.487259 +vt 0.803089 0.494208 +vt 0.800827 0.499669 +vt 0.789907 0.499669 +vt 0.789907 0.488748 +vt 0.800827 0.488748 +vt 0.784818 0.502964 +vt 0.787645 0.496139 +vt 0.784818 0.489314 +vt 0.771167 0.489314 +vt 0.771167 0.502964 +vn 0.9970 -0.0077 0.0770 +vn 0.6969 -0.7148 0.0581 +vn 0.9999 -0.0147 -0.0036 +vn -0.0139 -0.9860 0.1662 +vn -0.7172 -0.6940 0.0633 +vn -0.0143 -0.9962 0.0859 +vn -0.9962 0.0216 0.0842 +vn -0.6969 0.7148 -0.0581 +vn -0.9999 0.0147 0.0036 +vn 0.0147 0.9999 -0.0050 +vn 0.7172 0.6940 -0.0633 +vn 0.0143 0.9962 -0.0859 +vn 0.6950 -0.7055 0.1385 +vn -0.7144 -0.6848 0.1437 +vn -0.6942 0.7194 0.0226 +vn 0.7152 0.6987 0.0175 +vn 0.6665 -0.6564 0.3534 +vn -0.6829 -0.6366 0.3583 +vn -0.6635 0.7078 0.2425 +vn 0.6858 0.6879 0.2376 +vn 0.9556 0.0116 0.2945 +vn -0.9527 0.0397 0.3014 +vn 0.0151 0.9763 0.2160 +vn 0.0049 0.0858 0.9963 +vn -0.0122 -0.9250 0.3799 +vn -0.7115 -0.6789 0.1811 +vn -0.6914 0.7199 0.0605 +vn 0.7127 0.6993 0.0554 +vn 0.9934 -0.0044 0.1147 +vn -0.0137 -0.9790 0.2035 +vn -0.9922 0.0248 0.1219 +vn 0.0148 0.9993 0.0330 +vn 0.6925 -0.6996 0.1760 +vn -0.6907 0.7199 0.0678 +vn 0.7121 0.6993 0.0627 +vn 0.9925 -0.0038 0.1219 +vn -0.0136 -0.9775 0.2107 +vn -0.9913 0.0254 0.1291 +vn 0.0148 0.9991 0.0403 +vn 0.6920 -0.6983 0.1832 +vn -0.7108 -0.6777 0.1883 +vn -0.0049 -0.0858 -0.9963 +usemtl None +s 1 +f 707/1326/323 708/1327/324 709/1328/325 +f 710/1329/326 711/1330/327 712/1331/328 +f 713/1332/329 714/1333/330 715/1334/331 +f 716/1335/332 717/1336/333 718/1337/334 +f 719/1338/335 712/1339/328 708/1327/324 +f 720/1340/336 715/1334/331 711/1330/327 +f 721/1341/337 718/1337/334 714/1333/330 +f 722/1342/338 709/1328/325 717/1336/333 +f 723/1343/339 710/1344/326 719/1338/335 +f 724/1345/340 713/1332/329 720/1340/336 +f 725/1346/341 716/1335/332 721/1341/337 +f 726/1347/342 707/1326/323 722/1342/338 +f 727/1348/343 719/1338/335 707/1326/323 +f 710/1329/326 724/1345/340 720/1340/336 +f 728/1349/344 721/1341/337 713/1332/329 +f 729/1350/345 722/1342/338 716/1335/332 +f 723/1343/339 727/1348/343 730/1351/346 +f 726/1347/342 729/1350/345 730/1352/346 +f 729/1350/345 725/1346/341 730/1353/346 +f 728/1349/344 724/1345/340 730/1354/346 +f 731/1355/347 723/1343/339 730/1356/346 +f 727/1348/343 726/1347/342 730/1357/346 +f 725/1346/341 728/1349/344 730/1358/346 +f 724/1345/340 731/1359/347 730/1360/346 +f 732/1361/348 733/1362/331 734/1363/327 +f 735/1364/349 736/1365/334 737/1366/330 +f 738/1367/350 739/1368/325 740/1369/333 +f 741/1370/351 742/1371/324 739/1368/325 +f 743/1372/352 734/1363/327 744/1373/328 +f 745/1374/353 737/1366/330 733/1362/331 +f 746/1375/354 740/1369/333 736/1365/334 +f 747/1376/355 744/1377/328 742/1371/324 +f 748/1378/334 749/1379/356 750/1380/330 +f 751/1381/325 752/1382/357 753/1383/333 +f 754/1384/324 755/1385/358 751/1381/325 +f 756/1386/327 757/1387/359 758/1388/328 +f 750/1380/330 759/1389/360 760/1390/331 +f 753/1383/333 761/1391/361 748/1378/334 +f 758/1392/328 762/1393/362 754/1384/324 +f 760/1390/331 763/1394/363 756/1386/327 +f 745/1374/353 763/1395/363 759/1396/360 +f 735/1364/349 759/1397/360 749/1398/356 +f 735/1364/349 761/1399/361 746/1375/354 +f 746/1375/354 752/1400/357 738/1367/350 +f 741/1370/351 752/1401/357 755/1402/358 +f 741/1370/351 762/1403/362 747/1376/355 +f 747/1376/355 757/1404/359 743/1405/352 +f 743/1372/352 763/1406/363 732/1361/348 +f 748/1407/346 760/1408/346 758/1409/346 +f 744/1410/364 733/1411/364 736/1412/364 +f 707/1326/323 719/1338/335 708/1327/324 +f 710/1329/326 720/1340/336 711/1330/327 +f 713/1332/329 721/1341/337 714/1333/330 +f 716/1335/332 722/1342/338 717/1336/333 +f 719/1338/335 710/1344/326 712/1339/328 +f 720/1340/336 713/1332/329 715/1334/331 +f 721/1341/337 716/1335/332 718/1337/334 +f 722/1342/338 707/1326/323 709/1328/325 +f 723/1343/339 731/1355/347 710/1344/326 +f 724/1345/340 728/1349/344 713/1332/329 +f 725/1346/341 729/1350/345 716/1335/332 +f 726/1347/342 727/1348/343 707/1326/323 +f 727/1348/343 723/1343/339 719/1338/335 +f 710/1329/326 731/1359/347 724/1345/340 +f 728/1349/344 725/1346/341 721/1341/337 +f 729/1350/345 726/1347/342 722/1342/338 +f 732/1361/348 745/1374/353 733/1362/331 +f 735/1364/349 746/1375/354 736/1365/334 +f 738/1367/350 741/1370/351 739/1368/325 +f 741/1370/351 747/1376/355 742/1371/324 +f 743/1372/352 732/1361/348 734/1363/327 +f 745/1374/353 735/1364/349 737/1366/330 +f 746/1375/354 738/1367/350 740/1369/333 +f 747/1376/355 743/1405/352 744/1377/328 +f 748/1378/334 761/1391/361 749/1379/356 +f 751/1381/325 755/1385/358 752/1382/357 +f 754/1384/324 762/1393/362 755/1385/358 +f 756/1386/327 763/1394/363 757/1387/359 +f 750/1380/330 749/1379/356 759/1389/360 +f 753/1383/333 752/1382/357 761/1391/361 +f 758/1392/328 757/1413/359 762/1393/362 +f 760/1390/331 759/1389/360 763/1394/363 +f 745/1374/353 732/1361/348 763/1395/363 +f 735/1364/349 745/1374/353 759/1397/360 +f 735/1364/349 749/1414/356 761/1399/361 +f 746/1375/354 761/1415/361 752/1400/357 +f 741/1370/351 738/1367/350 752/1401/357 +f 741/1370/351 755/1416/358 762/1403/362 +f 747/1376/355 762/1417/362 757/1404/359 +f 743/1372/352 757/1418/359 763/1406/363 +f 751/1419/346 753/1420/346 748/1407/346 +f 748/1407/346 750/1421/346 760/1408/346 +f 760/1408/346 756/1422/346 758/1409/346 +f 758/1409/346 754/1423/346 751/1419/346 +f 751/1419/346 748/1407/346 758/1409/346 +f 736/1412/364 740/1424/364 739/1425/364 +f 739/1425/364 742/1426/364 744/1410/364 +f 744/1410/364 734/1427/364 733/1411/364 +f 733/1411/364 737/1428/364 736/1412/364 +f 736/1412/364 739/1425/364 744/1410/364 +o Rifle +v -0.375000 -0.656250 0.375000 +v 0.375000 -0.281250 0.375000 +v -0.375000 -0.281250 0.375000 +v 0.375000 -0.281250 -1.750000 +v 0.375000 -0.656250 0.375000 +v 0.375000 -1.343750 -1.500000 +v -0.375000 -0.281250 -1.750000 +v -0.375000 -1.343750 -1.500000 +v 0.281250 -1.343750 -1.750000 +v -0.281250 -1.343750 -1.500000 +v -0.281250 -1.343750 -1.750000 +v -0.281250 -0.375001 -1.727942 +v -0.281250 -0.906250 -1.937500 +v 0.281250 -0.906250 -1.937500 +v 0.281250 -0.375001 -1.727942 +v 0.281250 -1.343750 -1.500000 +v 0.468750 -0.906253 -1.643382 +v 0.468750 -0.593753 -1.125000 +v 0.468750 -0.906253 -1.125000 +v 0.343750 -0.906253 -1.643382 +v 0.468750 -0.593753 -1.716910 +v 0.343750 -0.906253 -1.750000 +v 0.343750 -0.860489 -1.860485 +v 0.343750 -0.750003 -1.906250 +v 0.343750 -0.593753 -1.716911 +v 0.281250 -0.906253 -1.125000 +v 0.281250 -0.593753 -1.125000 +v -0.156250 0.625000 -1.750000 +v -0.218750 0.625000 0.125000 +v -0.218750 0.625000 -1.750000 +v 0.156250 0.625000 -6.250000 +v -0.156250 0.625000 -6.250000 +v 0.110486 0.735485 5.375000 +v 0.209597 0.647097 5.375000 +v 0.156250 0.625000 5.375000 +v -0.110486 0.735485 1.812500 +v -0.000000 0.781250 1.875000 +v -0.000000 0.781250 2.062500 +v 0.110486 0.735485 2.062500 +v 0.163832 0.757582 5.375000 +v 0.154680 0.779680 2.062500 +v 0.163832 0.757582 2.062500 +v 0.022097 0.834597 2.062500 +v 0.022097 0.834597 1.875000 +v 0.156250 0.625000 1.875000 +v -0.110486 0.514515 1.812500 +v -0.000000 0.468750 1.812500 +v 0.110485 0.514515 1.812500 +v 0.110486 0.735485 1.875000 +v 0.209597 0.647097 1.875000 +v 0.154680 0.779680 1.875000 +v -0.156250 0.625000 6.000000 +v -0.000000 0.781250 6.000000 +v 0.156250 0.625000 6.000000 +v 0.198874 0.426126 9.125000 +v -0.198874 0.198874 9.125000 +v 0.198874 0.198874 9.125000 +v 0.281250 0.000000 9.125000 +v -0.198874 -0.198874 9.125000 +v 0.218750 -0.281250 0.250000 +v 0.093750 -0.218750 0.250000 +v 0.218750 -0.093750 0.250000 +v -0.218750 -0.093750 0.250000 +v -0.093750 -0.218750 0.250000 +v -0.218750 -0.281250 0.250000 +v -0.218750 -0.281250 -1.437500 +v 0.218750 -0.281250 -1.437500 +v -0.218750 -0.093750 -1.437500 +v 0.218750 -0.093750 -1.437500 +v 0.093750 -0.218750 -1.437500 +v -0.093750 -0.218750 -1.437500 +v 0.187500 -1.906250 -2.375000 +v 0.187500 -1.343750 -2.312500 +v 0.187500 -1.906250 -2.312500 +v 0.187500 -2.093750 -2.375000 +v 0.187500 -2.156250 -2.500000 +v 0.187500 -2.218750 -2.500000 +v 0.187500 -2.218750 -2.687500 +v 0.187500 -2.281250 -2.687500 +v 0.187500 -2.218750 -3.437500 +v 0.187500 -2.281250 -3.437500 +v 0.187500 -1.906250 -4.000000 +v -0.187500 -2.218750 -3.437500 +v -0.187500 -1.906250 -4.000000 +v -0.187500 -2.281250 -3.437500 +v -0.187500 -2.218750 -2.687500 +v -0.187500 -2.281250 -2.687500 +v -0.187500 -2.218750 -2.500000 +v -0.187500 -2.156250 -2.500000 +v -0.187500 -2.093750 -2.375000 +v -0.187500 -2.093750 -2.437500 +v -0.187500 -1.906250 -2.375000 +v -0.187500 -1.906250 -2.312500 +v -0.187500 -1.343750 -2.312500 +v -0.187500 -1.343750 -2.375000 +v -0.031250 1.031250 9.000000 +v 0.031250 1.187500 9.000000 +v -0.031250 1.187500 9.000000 +v -0.031250 1.187500 8.937500 +v 0.093750 0.968750 9.000000 +v 0.031250 1.031250 9.000000 +v 0.031250 1.187500 8.937500 +v -0.031250 1.031250 8.937500 +v 0.031250 1.031250 8.937500 +v -0.093750 0.968750 8.937500 +v -0.093750 0.968750 9.000000 +v 0.093750 0.968750 8.937500 +v 0.156250 1.187500 -5.187500 +v 0.156250 0.875000 -5.437500 +v 0.156250 1.187500 -5.312500 +v -0.156250 1.187500 -5.187500 +v -0.156250 0.875000 -5.437500 +v -0.156250 0.875000 -5.062500 +v 0.156250 0.750000 -5.062500 +v 0.156250 0.875000 -5.062500 +v -0.156250 0.750000 -5.062500 +v 0.156250 1.231694 -5.294194 +v 0.156250 1.250000 -5.250000 +v -0.156250 1.250000 -5.250000 +v -0.156250 1.187500 -5.312500 +v -0.125000 1.187500 -5.312500 +v -0.125000 1.231694 -5.294194 +v -0.125000 1.250000 -5.250000 +v 0.125000 1.187500 -5.187500 +v 0.125000 1.231694 -5.205806 +v 0.125000 1.250000 -5.250000 +v -0.125000 1.187500 -5.187500 +v -0.125000 0.875000 -5.437500 +v 0.125000 1.187500 -5.312500 +v 0.125000 0.875000 -5.062500 +v 0.125000 0.875000 -5.437500 +v 0.156250 0.750000 -5.437500 +v -0.125000 0.875000 -5.062500 +v 0.125000 1.250000 -5.281250 +v 0.062500 1.250000 -5.218750 +v 0.125000 1.250000 -5.218750 +v -0.125000 1.250000 -5.281250 +v -0.062500 1.250000 -5.218750 +v -0.062500 1.250000 -5.281250 +v 0.062500 1.187500 -5.281250 +v 0.125000 0.875000 -5.281250 +v -0.062500 1.187500 -5.281250 +v 0.000000 1.125000 -5.281250 +v -0.125000 0.875000 -5.281250 +v 0.022097 0.915403 -5.281250 +v 0.031250 0.937500 -5.281250 +v -0.031250 0.937500 -5.281250 +v -0.022097 0.915403 -5.281250 +v 0.000000 0.906250 -5.281250 +v 0.000000 0.968750 -5.281250 +v 0.022097 0.959597 -5.281250 +v -0.022097 0.959597 -5.281250 +v -0.125000 1.062500 -5.218750 +v 0.125000 1.062500 -5.156250 +v 0.125000 1.062500 -5.218750 +v -0.062500 1.062500 -5.093750 +v -0.125000 1.062500 -5.156250 +v 0.062500 1.187500 -5.218750 +v -0.125000 1.250000 -5.218750 +v -0.062500 1.187500 -5.218750 +v 0.000000 1.125000 -5.218750 +v -0.125000 1.000000 -5.156250 +v 0.062500 1.000000 -5.093750 +v -0.062500 1.000000 -5.093750 +v 0.125000 1.000000 -5.218750 +v 0.125000 1.000000 -5.156250 +v 0.125000 0.875000 -5.218750 +v 0.000000 0.906250 -5.218750 +v -0.125000 0.875000 -5.218750 +v -0.125000 1.000000 -5.218750 +v 0.000000 0.968750 -5.218750 +v 0.022097 0.959597 -5.218750 +v 0.022097 0.915403 -5.218750 +v -0.022097 0.915403 -5.218750 +v -0.022097 0.959597 -5.218750 +v -0.031250 0.937500 -5.218750 +v 0.031250 0.937500 -5.218750 +v -0.093750 0.843750 -5.062500 +v 0.093750 0.843750 -4.750000 +v 0.093750 0.843750 -5.062500 +v -0.093750 0.843750 -4.750000 +v 0.031250 0.875000 -4.750000 +v -0.093750 0.781250 -4.687500 +v 0.093750 0.781250 -4.687500 +v 0.031250 0.875000 -4.687500 +v 0.093750 0.781250 -5.062500 +v -0.093750 0.843750 -4.687500 +v -0.281250 -0.375001 -1.937500 +v 0.281250 -0.375001 -1.937500 +v 0.343750 -0.639518 -1.860485 +v 0.343750 -0.593753 -1.750000 +v 0.281250 -0.593753 -1.750000 +v 0.281250 -0.906253 -1.750000 +v 0.156250 0.625000 0.125000 +v -0.110486 0.735485 6.000000 +v -0.000000 0.781250 1.812500 +v 0.156250 0.625000 1.812500 +v 0.110486 0.735485 1.812500 +v -0.156250 0.625000 1.812500 +v 0.110486 0.735485 6.000000 +v 0.110485 0.514515 6.000000 +v -0.000000 0.468750 6.000000 +v -0.110486 0.514515 6.000000 +v -0.198874 0.426126 9.125000 +v -0.281250 -0.000000 9.125000 +v -0.000000 -0.281250 9.125000 +v 0.198874 -0.198874 9.125000 +v 0.187500 -1.343750 -2.375000 +v 0.187500 -2.093750 -2.437500 +v 0.187500 -1.843750 -4.000000 +v -0.187500 -1.843750 -4.000000 +v -0.156250 0.750000 -5.437500 +v 0.156250 1.231694 -5.205806 +v -0.156250 1.231694 -5.205806 +v -0.156250 1.231694 -5.294194 +v -0.125000 1.231694 -5.205806 +v 0.125000 1.231694 -5.294194 +v 0.062500 1.250000 -5.281250 +v 0.062500 1.062500 -5.093750 +v -0.031250 0.875000 -4.750000 +v 0.093750 0.843750 -4.687500 +v -0.031250 0.875000 -4.687500 +v -0.093750 0.781250 -5.062500 +v -0.343750 -0.343750 2.000000 +v -0.093750 -0.468750 -6.625000 +v -0.093750 -0.468750 2.000000 +v 0.154680 0.470320 2.000000 +v 0.343750 0.343750 -6.250000 +v 0.154680 0.470320 -6.250000 +v 0.468750 -0.093750 0.125000 +v 0.468750 -0.031250 0.187500 +v 0.468750 -0.093750 2.000000 +v -0.468750 -0.093750 0.125000 +v -0.468750 -0.093750 -6.187500 +v -0.343750 -0.343750 -6.625000 +v 0.093750 -0.468750 -6.625000 +v 0.343750 -0.343750 2.000000 +v 0.093750 -0.468750 2.000000 +v 0.468750 -0.093750 -6.187500 +v 0.343750 -0.343750 -6.625000 +v 0.468750 0.093750 2.000000 +v 0.468750 0.093750 0.187500 +v -0.468750 -0.031250 0.187500 +v -0.468750 -0.093750 2.000000 +v -0.406250 -0.093750 -6.187500 +v -0.468750 0.093750 0.187500 +v -0.406250 -0.031250 0.187500 +v -0.437500 0.156250 -6.187500 +v -0.406250 0.093750 -6.250000 +v -0.406250 0.156250 -6.187500 +v -0.406250 0.156250 0.125000 +v -0.437500 0.156250 0.125000 +v -0.406250 0.093750 0.187500 +v -0.406250 -0.093750 0.125000 +v -0.406250 -0.031250 -6.250000 +v -0.468750 0.093750 -6.250000 +v -0.468750 -0.031250 -6.250000 +v -0.468750 0.093750 -6.625000 +v -0.468750 -0.093750 -6.625000 +v -0.343750 0.343750 2.000000 +v -0.154680 0.470320 0.125000 +v -0.343750 0.343750 0.125000 +v -0.343750 0.343750 -6.250000 +v -0.154680 0.470320 -1.750000 +v -0.154680 0.470320 -6.250000 +v -0.406250 0.218750 0.125000 +v -0.343750 0.343750 -1.750000 +v -0.406250 0.218750 -1.750000 +v -0.468750 0.093750 2.000000 +v 0.343750 -1.343750 -4.250000 +v -0.343750 -1.343750 -1.750000 +v -0.343750 -1.343750 -4.250000 +v 0.343750 -0.760617 -4.593750 +v -0.343750 -0.875000 -4.479367 +v -0.343750 -0.760617 -4.593750 +v 0.343750 -0.718750 -4.750000 +v -0.343750 -0.718750 -4.750000 +v 0.343750 -1.218750 -4.437500 +v -0.343750 -1.307138 -4.382583 +v -0.343750 -1.218750 -4.437500 +v 0.343750 -0.718750 -6.625000 +v -0.343750 -0.718750 -6.625000 +v 0.343750 -0.875000 -4.479367 +v -0.343750 -1.031250 -4.437500 +v 0.343750 -1.031250 -4.437500 +v 0.343750 -1.307138 -4.382583 +v -0.343750 -0.343750 -1.937500 +v 0.343750 -1.031253 -1.750000 +v -0.343750 -0.906253 -1.937500 +v -0.343750 -1.031253 -1.750000 +v 0.343750 -1.187503 -1.593750 +v -0.343750 -1.077017 -1.639515 +v -0.343750 -1.187503 -1.593750 +v 0.343750 -0.906253 -1.937500 +v 0.343750 -1.077017 -1.639515 +v 0.343750 -1.297988 -1.639515 +v -0.343750 -1.297988 -1.639515 +v 0.343750 -0.343750 -1.937500 +v 0.343750 -1.343750 -1.750000 +v -0.375000 -1.121210 -1.683709 +v -0.343750 -1.187501 -1.656250 +v -0.343750 -1.121210 -1.683709 +v -0.375000 -1.253792 -1.683709 +v -0.343750 -1.281251 -1.750000 +v -0.343750 -1.253792 -1.683709 +v -0.375000 -1.253792 -1.816291 +v -0.343750 -1.187501 -1.843750 +v -0.343750 -1.253792 -1.816291 +v -0.375000 -1.121210 -1.816291 +v -0.343750 -1.093751 -1.750000 +v -0.343750 -1.121210 -1.816291 +v -0.375000 -1.093751 -1.750000 +v -0.375000 -1.187501 -1.656250 +v -0.375000 -1.281251 -1.750000 +v -0.375000 -1.187501 -1.843750 +v 0.281250 -0.639518 -1.860485 +v 0.281250 -0.750003 -1.906250 +v 0.281250 -0.860489 -1.860485 +v 0.093750 0.468750 0.125000 +v 0.281250 0.343750 0.125000 +v 0.218750 0.093750 0.125000 +v 0.093750 0.218750 0.125000 +v 0.343750 0.218750 0.125000 +v -0.343750 0.218750 0.125000 +v -0.093750 0.218750 0.125000 +v -0.218750 0.093750 0.125000 +v -0.218750 0.093750 -6.250000 +v -0.343750 0.218750 -6.250000 +v -0.343750 0.218750 -1.750000 +v 0.093750 -0.218750 0.750000 +v -0.093750 -0.218750 0.750000 +v 0.093750 0.218750 0.750000 +v -0.218750 0.093750 0.750000 +v 0.218750 -0.093750 0.750000 +v 0.218750 0.093750 0.750000 +v -0.093750 0.218750 0.750000 +v -0.281250 0.343750 -1.750000 +v -0.093750 0.468750 -1.750000 +v -0.281250 0.343750 -6.250000 +v -0.093750 0.468750 -6.250000 +v 0.343750 0.218750 -6.250000 +v 0.093750 0.468750 -6.250000 +v 0.218750 0.093750 -6.250000 +v 0.281250 0.343750 -6.250000 +v 0.093750 -0.218750 -6.250000 +v -0.218750 -0.093750 -6.250000 +v -0.218750 0.625000 9.250000 +v -0.154680 0.779680 9.250000 +v 0.000000 0.843750 -6.250000 +v -0.000000 0.843750 9.250000 +v -0.154680 0.470320 2.000000 +v 0.218750 0.625000 9.250000 +v 0.154680 0.470320 9.250000 +v 0.154680 0.779680 9.250000 +v 0.218750 0.625000 -6.250000 +v 0.154680 0.779680 -6.250000 +v -0.154680 0.470320 9.250000 +v 0.154680 -0.154680 9.437500 +v -0.000000 -0.218750 9.125000 +v 0.154680 -0.154680 9.125000 +v -0.154680 -0.154680 9.437500 +v -0.218750 -0.000000 9.125000 +v -0.154680 -0.154680 9.125000 +v -0.154680 0.154680 9.437500 +v -0.000000 0.218750 9.125000 +v -0.154680 0.154680 9.125000 +v 0.154680 0.154680 9.437500 +v 0.218750 0.000000 9.125000 +v 0.154680 0.154680 9.125000 +v 0.218750 0.000000 9.437500 +v -0.000000 -0.218750 9.437500 +v -0.218750 -0.000000 9.437500 +v -0.000000 0.218750 9.437500 +v -0.132582 0.132583 9.500000 +v 0.132582 0.132583 9.500000 +v 0.187500 0.000000 9.500000 +v -0.000000 -0.187500 9.500000 +v -0.000000 0.187500 9.500000 +v 0.132582 -0.132583 9.500000 +v -0.187500 -0.000000 9.500000 +v 0.187500 0.000000 11.250000 +v -0.000000 -0.187500 11.250000 +v -0.132582 -0.132583 9.500000 +v -0.187500 -0.000000 11.250000 +v -0.000000 0.187500 11.250000 +v 0.132582 -0.132583 11.250000 +v -0.132582 -0.132583 11.250000 +v -0.132582 0.132583 11.250000 +v 0.132582 0.132583 11.250000 +v 0.281250 0.625000 8.750000 +v 0.281250 0.625000 9.125000 +v 0.198874 -0.198874 8.750000 +v -0.198874 0.823874 9.125000 +v -0.281250 0.625000 8.750000 +v -0.281250 0.625000 9.125000 +v -0.198874 0.198874 8.750000 +v -0.281250 -0.000000 8.750000 +v -0.198874 0.426126 8.750000 +v 0.198874 0.823874 8.750000 +v 0.198874 0.823874 9.125000 +v -0.198874 -0.198874 8.750000 +v 0.198874 0.198874 8.750000 +v 0.281250 0.000000 8.750000 +v -0.000000 -0.281250 8.750000 +v 0.198874 0.426126 8.750000 +v 0.468750 -0.031250 -6.250000 +v 0.468750 -0.093750 -6.625000 +v 0.468750 0.093750 -6.625000 +v 0.343750 0.343750 2.000000 +v 0.437500 0.156250 0.125000 +v 0.468750 0.093750 -6.250000 +v 0.406250 -0.031250 -6.250000 +v 0.406250 -0.093750 -6.187500 +v 0.406250 -0.093750 0.125000 +v 0.406250 0.156250 -6.187500 +v 0.437500 0.156250 -6.187500 +v 0.406250 0.093750 0.187500 +v 0.406250 -0.031250 0.187500 +v 0.406250 0.156250 0.125000 +v 0.406250 0.093750 -6.250000 +v -0.343750 -0.755362 -1.661612 +v -0.281250 -0.843750 -1.625000 +v -0.281250 -0.755362 -1.661612 +v -0.343750 -0.932138 -1.661612 +v -0.281250 -0.968750 -1.750000 +v -0.281250 -0.932138 -1.661612 +v -0.343750 -0.932138 -1.838388 +v -0.281250 -0.843750 -1.875000 +v -0.281250 -0.932138 -1.838388 +v -0.343750 -0.755362 -1.838388 +v -0.281250 -0.718750 -1.750000 +v -0.281250 -0.755362 -1.838388 +v -0.343750 -0.718750 -1.750000 +v -0.343750 -0.843750 -1.625000 +v -0.343750 -0.968750 -1.750000 +v -0.343750 -0.843750 -1.875000 +v -0.218750 -0.093750 0.750000 +v -0.093750 -0.218750 -6.250000 +v 0.218750 -0.093750 -6.250000 +v -0.097057 -0.362222 8.750000 +v 0.097057 -0.362222 8.750000 +v 0.362222 -0.097057 8.750000 +v 0.265165 -0.265165 8.750000 +v 0.362222 0.097057 8.750000 +v 0.265165 0.265165 8.750000 +v 0.250000 0.470320 8.750000 +v -0.265165 -0.265165 8.750000 +v -0.362222 -0.097057 8.750000 +v -0.362222 0.097057 8.750000 +v -0.265165 0.265165 8.750000 +v -0.250000 0.470320 8.750000 +v 0.156250 0.841529 9.125000 +v -0.218750 0.625000 -6.250000 +v -0.343750 0.343750 -6.625000 +v 0.343750 0.343750 -6.625000 +v -0.125000 -2.406250 -4.187500 +v 0.125000 -2.593750 -4.375000 +v 0.125000 -2.406250 -4.187500 +v 0.125000 -2.343750 -5.437500 +v -0.125000 -1.906249 -5.062500 +v 0.125000 -1.906249 -5.062500 +v -0.125000 -2.593750 -4.375000 +v 0.125000 -2.718750 -4.437500 +v 0.125000 -1.656250 -4.812500 +v -0.125000 -2.718750 -4.437500 +v 0.125000 -2.906250 -4.437500 +v -0.312500 -1.343750 -4.812500 +v 0.312500 -1.343750 -4.812500 +v -0.125000 -2.906250 -4.437500 +v 0.125000 -3.093750 -4.625000 +v -0.312500 -1.343750 -3.562500 +v 0.312500 -1.968750 -4.000000 +v 0.312500 -1.343750 -3.562500 +v -0.312500 -1.093749 -4.937500 +v 0.312500 -1.093749 -4.937500 +v -0.125000 -3.093750 -4.625000 +v 0.125000 -3.218750 -4.687500 +v -0.312500 -1.968750 -4.000000 +v 0.125000 -2.093750 -4.125000 +v 0.312500 -0.906249 -5.187500 +v 0.312500 -3.406250 -4.750000 +v 0.125000 -3.531250 -4.687500 +v -0.125000 -2.093750 -4.125000 +v 0.125000 -2.218750 -4.187500 +v -0.312500 -0.906249 -5.187500 +v 0.312500 -0.718750 -5.187500 +v -0.125000 -3.531250 -4.687500 +v 0.125000 -2.968750 -5.750000 +v -0.125000 -2.218750 -4.187500 +v -0.125000 -2.968750 -5.750000 +v 0.312500 -2.031250 -4.187500 +v 0.312500 -2.156250 -4.250000 +v 0.312500 -2.406250 -4.250000 +v 0.312500 -2.656250 -4.500000 +v 0.312500 -2.531250 -4.437500 +v 0.312500 -2.906250 -4.500000 +v 0.312500 -3.156250 -4.750000 +v 0.312500 -3.031250 -4.687500 +v 0.312500 -2.968750 -5.562500 +v 0.312500 -2.343750 -5.250000 +v 0.312500 -1.906250 -4.937500 +v 0.312500 -1.656250 -4.750000 +v 0.312500 -0.718750 -3.562500 +v -0.125000 -3.218750 -4.687500 +v -0.312500 -3.406250 -4.750000 +v -0.312500 -3.156250 -4.750000 +v -0.312500 -2.968750 -5.562500 +v -0.312500 -2.906250 -4.500000 +v -0.312500 -2.656250 -4.500000 +v -0.312500 -3.031250 -4.687500 +v -0.312500 -2.406250 -4.250000 +v -0.312500 -2.156250 -4.250000 +v -0.312500 -2.531250 -4.437500 +v -0.312500 -2.343750 -5.250000 +v -0.312500 -1.906250 -4.937500 +v -0.312500 -2.031250 -4.187500 +v -0.312500 -1.656250 -4.750000 +v -0.125000 -2.343750 -5.437500 +v -0.125000 -1.656250 -4.812500 +v -0.312500 -0.718750 -3.562500 +v -0.312500 -0.718750 -5.187500 +v 0.154680 0.735485 -6.625000 +v -0.154680 0.735485 -6.625000 +v -0.154680 0.779680 -6.250000 +v 0.000000 0.781250 -6.625000 +v 0.156250 0.841529 8.750000 +v -0.156250 0.841529 8.750000 +v -0.198874 0.823874 8.750000 +v -0.000000 1.468750 9.125000 +v -0.154680 1.342180 9.125000 +v -0.000000 1.406250 9.125000 +v -0.281250 1.187500 8.750000 +v -0.198874 0.988626 9.125000 +v -0.281250 1.187500 9.125000 +v 0.198874 1.386374 8.750000 +v 0.198874 1.386374 9.125000 +v 0.198874 0.988626 8.750000 +v 0.281250 1.187500 9.125000 +v 0.198874 0.988626 9.125000 +v -0.198874 0.988626 8.750000 +v -0.156250 0.970971 9.125000 +v -0.000000 1.468750 8.750000 +v -0.198874 1.386374 9.125000 +v -0.156250 0.970971 8.750000 +v -0.156250 0.841529 9.125000 +v -0.198874 1.386374 8.750000 +v 0.156250 0.970971 8.750000 +v 0.156250 0.970971 9.125000 +v 0.281250 1.187500 8.750000 +v 0.218750 1.187500 8.750000 +v 0.154680 1.032820 9.125000 +v 0.218750 1.187500 9.125000 +v -0.218750 1.187500 9.125000 +v 0.154680 1.342180 9.125000 +v -0.000000 0.968750 9.125000 +v -0.154680 1.032820 9.125000 +v -0.000000 0.968750 8.750000 +v -0.218750 1.187500 8.750000 +v -0.000000 1.406250 8.750000 +v 0.154680 1.032820 8.750000 +v -0.154680 1.032820 8.750000 +v -0.154680 1.342180 8.750000 +v 0.154680 1.342180 8.750000 +v -0.000000 0.406250 9.250000 +v -0.000000 0.406250 2.000000 +v 0.375000 -1.121210 -1.816291 +v 0.343750 -1.187501 -1.843750 +v 0.343750 -1.121210 -1.816291 +v 0.375000 -1.253792 -1.816291 +v 0.343750 -1.281251 -1.750000 +v 0.343750 -1.253792 -1.816291 +v 0.375000 -1.253792 -1.683709 +v 0.343750 -1.187501 -1.656250 +v 0.343750 -1.253792 -1.683709 +v 0.375000 -1.121210 -1.683709 +v 0.343750 -1.093751 -1.750000 +v 0.343750 -1.121210 -1.683709 +v 0.375000 -1.093751 -1.750000 +v 0.375000 -1.187501 -1.843750 +v 0.375000 -1.281251 -1.750000 +v 0.375000 -1.187501 -1.656250 +vt 0.810811 0.532819 +vt 0.833977 0.486486 +vt 0.833977 0.532819 +vt 0.833977 0.355212 +vt 0.810811 0.486486 +vt 0.768340 0.370656 +vt 0.833977 0.664093 +vt 0.768340 0.710425 +vt 0.833977 0.710425 +vt 0.768340 0.664093 +vt 0.644788 0.710425 +vt 0.644788 0.664093 +vt 0.706564 0.602317 +vt 0.671815 0.617761 +vt 0.671815 0.602317 +vt 0.611969 0.603679 +vt 0.644788 0.590734 +vt 0.733591 0.590734 +vt 0.766409 0.603679 +vt 0.706564 0.617761 +vt 0.737452 0.442880 +vt 0.756757 0.474903 +vt 0.737452 0.474903 +vt 0.737452 0.428571 +vt 0.756757 0.436293 +vt 0.737452 0.436293 +vt 0.737452 0.418920 +vt 0.740279 0.412094 +vt 0.747104 0.409268 +vt 0.756757 0.438338 +vt 0.764479 0.438338 +vt 0.729730 0.442880 +vt 0.725869 0.474903 +vt 0.737452 0.486486 +vt 0.756757 0.486486 +vt 0.324324 0.571429 +vt 0.208494 0.567568 +vt 0.324324 0.567568 +vt 0.602317 0.590734 +vt 0.602317 0.571429 +vt 0.598456 0.532819 +vt 0.590734 0.536680 +vt 0.590734 0.532819 +vt 0.370656 0.494208 +vt 0.374517 0.486486 +vt 0.386100 0.486486 +vt 0.386100 0.478764 +vt 0.590734 0.474903 +vt 0.590734 0.478764 +vt 0.339768 0.536680 +vt 0.335907 0.532819 +vt 0.339768 0.532819 +vt 0.347490 0.536680 +vt 0.340412 0.532819 +vt 0.346847 0.532819 +vt 0.359073 0.532819 +vt 0.359073 0.536680 +vt 0.374517 0.532819 +vt 0.641961 0.535646 +vt 0.644788 0.542471 +vt 0.641961 0.549296 +vt 0.367439 0.532819 +vt 0.374517 0.536680 +vt 0.366795 0.536680 +vt 0.615830 0.532819 +vt 0.606178 0.542471 +vt 0.615830 0.552124 +vt 0.366152 0.532819 +vt 0.130124 0.384872 +vt 0.144138 0.360301 +vt 0.144138 0.384872 +vt 0.156401 0.389961 +vt 0.168665 0.360301 +vt 0.312741 0.555985 +vt 0.316602 0.548263 +vt 0.324324 0.555985 +vt 0.324324 0.528958 +vt 0.316602 0.536680 +vt 0.312741 0.528958 +vt 0.208494 0.528958 +vt 0.312741 0.567568 +vt 0.208494 0.555985 +vt 0.208494 0.517375 +vt 0.312741 0.517375 +vt 0.196911 0.555985 +vt 0.204633 0.548263 +vt 0.204633 0.536680 +vt 0.196911 0.528958 +vt 0.675676 0.517375 +vt 0.671815 0.552124 +vt 0.671815 0.517375 +vt 0.671815 0.505791 +vt 0.675676 0.498069 +vt 0.671815 0.494208 +vt 0.675676 0.482625 +vt 0.671815 0.482625 +vt 0.675676 0.436293 +vt 0.671815 0.436293 +vt 0.671815 0.393822 +vt 0.644788 0.436293 +vt 0.648649 0.393822 +vt 0.648649 0.436293 +vt 0.644788 0.482625 +vt 0.648649 0.482625 +vt 0.648649 0.494208 +vt 0.644788 0.498069 +vt 0.648649 0.505791 +vt 0.644788 0.501930 +vt 0.644788 0.517375 +vt 0.648649 0.517375 +vt 0.648649 0.552124 +vt 0.644788 0.552124 +vt 0.223938 0.382239 +vt 0.220077 0.374517 +vt 0.223938 0.374517 +vt 0.223938 0.370656 +vt 0.216216 0.386100 +vt 0.220077 0.382239 +vt 0.220077 0.370656 +vt 0.223938 0.362934 +vt 0.231660 0.374517 +vt 0.212355 0.370656 +vt 0.212355 0.374517 +vt 0.220077 0.362934 +vt 0.227799 0.359073 +vt 0.235521 0.370656 +vt 0.235521 0.374517 +vt 0.208494 0.370656 +vt 0.208494 0.374517 +vt 0.173745 0.416988 +vt 0.189189 0.397683 +vt 0.181467 0.416988 +vt 0.138996 0.416988 +vt 0.123552 0.397683 +vt 0.146718 0.397683 +vt 0.166023 0.389961 +vt 0.166023 0.397683 +vt 0.146718 0.389961 +vt 0.180336 0.419719 +vt 0.177606 0.420849 +vt 0.135135 0.420849 +vt 0.131274 0.416988 +vt 0.297297 0.386100 +vt 0.294567 0.387231 +vt 0.293436 0.389961 +vt 0.351351 0.393822 +vt 0.354081 0.392692 +vt 0.355212 0.389961 +vt 0.297297 0.393822 +vt 0.316602 0.378378 +vt 0.351351 0.386100 +vt 0.332046 0.401544 +vt 0.206564 0.397683 +vt 0.191120 0.397683 +vt 0.189189 0.389961 +vt 0.316602 0.401544 +vt 0.378378 0.405405 +vt 0.382239 0.401544 +vt 0.382239 0.405405 +vt 0.378378 0.382239 +vt 0.382239 0.386100 +vt 0.378378 0.386100 +vt 0.374517 0.386100 +vt 0.378378 0.382239 +vt 0.355212 0.382239 +vt 0.374517 0.393822 +vt 0.378378 0.397683 +vt 0.378378 0.393822 +vt 0.370656 0.389961 +vt 0.355212 0.397683 +vt 0.357708 0.388596 +vt 0.359073 0.388031 +vt 0.359073 0.391892 +vt 0.357708 0.391328 +vt 0.357143 0.389961 +vt 0.361004 0.389961 +vt 0.360438 0.388595 +vt 0.360438 0.391326 +vt 0.393822 0.397683 +vt 0.397683 0.382239 +vt 0.393822 0.382239 +vt 0.401544 0.393822 +vt 0.397683 0.397683 +vt 0.386100 0.393822 +vt 0.382239 0.397683 +vt 0.382239 0.393822 +vt 0.382239 0.382239 +vt 0.386100 0.386100 +vt 0.393822 0.382239 +vt 0.389961 0.389961 +vt 0.393822 0.397683 +vt 0.409266 0.382239 +vt 0.405405 0.393822 +vt 0.405405 0.386100 +vt 0.413127 0.397683 +vt 0.409266 0.397683 +vt 0.420849 0.397683 +vt 0.418919 0.389961 +vt 0.420849 0.382239 +vt 0.413127 0.382239 +vt 0.415058 0.389961 +vt 0.415623 0.391326 +vt 0.418353 0.391326 +vt 0.418353 0.388596 +vt 0.415623 0.388596 +vt 0.416988 0.388031 +vt 0.416988 0.391892 +vt 0.355212 0.382239 +vt 0.366795 0.378378 +vt 0.355212 0.378378 +vt 0.366795 0.401544 +vt 0.355212 0.397683 +vt 0.355212 0.401544 +vt 0.148649 0.397683 +vt 0.420849 0.420849 +vt 0.401544 0.409266 +vt 0.420849 0.409266 +vt 0.401544 0.420849 +vt 0.399614 0.413127 +vt 0.397683 0.424710 +vt 0.386100 0.424710 +vt 0.389961 0.418919 +vt 0.382239 0.420849 +vt 0.362934 0.424710 +vt 0.397683 0.420849 +vt 0.768340 0.648649 +vt 0.611969 0.590734 +vt 0.766409 0.590734 +vt 0.756757 0.428571 +vt 0.753930 0.412094 +vt 0.756757 0.418920 +vt 0.756757 0.420965 +vt 0.737452 0.425507 +vt 0.764479 0.436293 +vt 0.768340 0.436293 +vt 0.768340 0.474903 +vt 0.725869 0.436293 +vt 0.729730 0.436293 +vt 0.208494 0.590734 +vt 0.598456 0.536680 +vt 0.629344 0.486486 +vt 0.629344 0.494208 +vt 0.370656 0.486486 +vt 0.386100 0.474903 +vt 0.347490 0.532819 +vt 0.635135 0.552124 +vt 0.628310 0.549296 +vt 0.625483 0.542471 +vt 0.628310 0.535646 +vt 0.635135 0.532819 +vt 0.373874 0.532819 +vt 0.609005 0.535646 +vt 0.609005 0.549296 +vt 0.622656 0.549296 +vt 0.625483 0.542471 +vt 0.622656 0.535646 +vt 0.359717 0.532819 +vt 0.130124 0.360301 +vt 0.156401 0.355212 +vt 0.173745 0.372587 +vt 0.168665 0.384872 +vt 0.208494 0.567568 +vt 0.675676 0.552124 +vt 0.675676 0.505791 +vt 0.675676 0.501930 +vt 0.675676 0.494208 +vt 0.675676 0.393822 +vt 0.644788 0.393822 +vt 0.644788 0.494208 +vt 0.644788 0.505791 +vt 0.227799 0.386100 +vt 0.231660 0.370656 +vt 0.216216 0.359073 +vt 0.123552 0.389961 +vt 0.174876 0.419719 +vt 0.137865 0.419719 +vt 0.132405 0.419718 +vt 0.294567 0.392692 +vt 0.354081 0.387231 +vt 0.332046 0.378378 +vt 0.208494 0.389961 +vt 0.208494 0.397683 +vt 0.378378 0.401544 +vt 0.378378 0.386100 +vt 0.401544 0.386100 +vt 0.378378 0.382239 +vt 0.378378 0.397683 +vt 0.164093 0.397683 +vt 0.399614 0.416988 +vt 0.386100 0.420849 +vt 0.393822 0.418919 +vt 0.362934 0.420849 +vt 0.420849 0.424710 +vt 0.532819 0.849421 +vt -0.000000 0.833977 +vt 0.532819 0.833977 +vt 0.532819 0.749035 +vt 0.023166 0.764479 +vt 0.023166 0.749035 +vt 0.416988 0.791506 +vt 0.420849 0.787645 +vt 0.532819 0.791506 +vt 0.416988 0.864865 +vt 0.027027 0.864865 +vt 0.000000 0.849421 +vt -0.000000 0.822394 +vt 0.532819 0.806950 +vt 0.532819 0.822394 +vt 0.027027 0.791506 +vt -0.000000 0.806950 +vt 0.532819 0.779923 +vt 0.420849 0.779923 +vt 0.420849 0.868726 +vt 0.532819 0.864865 +vt 0.795367 0.729730 +vt 0.405405 0.733591 +vt 0.405405 0.729730 +vt 0.806950 0.729730 +vt 0.799228 0.733591 +vt 0.799228 0.729730 +vt 0.389961 0.729730 +vt 0.393822 0.733591 +vt 0.389961 0.733591 +vt 0.000000 0.733591 +vt 0.000000 0.729730 +vt 0.810811 0.729730 +vt 0.806950 0.733591 +vt 0.795367 0.733591 +vt 0.401544 0.733591 +vt 0.393822 0.729730 +vt 0.401544 0.729730 +vt 0.000000 0.722008 +vt 0.000000 0.714286 +vt 0.003861 0.710425 +vt 0.023166 0.868726 +vt 0.000000 0.876448 +vt 0.000000 0.864865 +vt 0.532819 0.891892 +vt 0.416988 0.907336 +vt 0.416988 0.891892 +vt 0.023166 0.891892 +vt 0.301158 0.907336 +vt 0.023166 0.907336 +vt 0.722008 0.988417 +vt 1.000000 1.000000 +vt 0.722008 1.000000 +vt 0.416988 0.884170 +vt 0.420849 0.876448 +vt 0.023166 0.876448 +vt 0.301158 0.891892 +vt 0.027027 0.880309 +vt 0.301158 0.884170 +vt 0.416988 0.880309 +vt 0.532819 0.876448 +vt 0.895753 0.563707 +vt 0.938224 0.409266 +vt 0.938224 0.563707 +vt 0.895753 0.613900 +vt 0.938224 0.602317 +vt 0.938224 0.613900 +vt 0.895753 0.625483 +vt 0.938224 0.625483 +vt 0.895753 0.579151 +vt 0.938224 0.571429 +vt 0.938224 0.579151 +vt 0.895753 0.741313 +vt 0.938224 0.741313 +vt 0.895753 0.602317 +vt 0.938224 0.590734 +vt 0.895753 0.590734 +vt 0.895753 0.571429 +vt 0.967181 0.577876 +vt 1.000000 0.420849 +vt 0.895753 0.378378 +vt 0.938224 0.362934 +vt 0.938224 0.378378 +vt 0.895753 0.393822 +vt 0.938224 0.386100 +vt 0.938224 0.393822 +vt 0.895753 0.362934 +vt 0.938224 0.328185 +vt 0.895753 0.386100 +vt 0.895753 0.401544 +vt 0.938224 0.401544 +vt 0.866795 0.577876 +vt 0.859729 0.584942 +vt 0.833977 0.420849 +vt 0.895753 0.409266 +vt 0.552124 0.791506 +vt 0.555985 0.795367 +vt 0.552124 0.795367 +vt 0.559846 0.791506 +vt 0.563707 0.795367 +vt 0.559846 0.795367 +vt 0.536680 0.791506 +vt 0.540541 0.795367 +vt 0.536680 0.795367 +vt 0.544402 0.791506 +vt 0.548263 0.795367 +vt 0.544402 0.795367 +vt 0.548263 0.791506 +vt 0.555985 0.791506 +vt 0.532819 0.791506 +vt 0.532819 0.795367 +vt 0.540541 0.791506 +vt 0.542705 0.789809 +vt 0.538610 0.791506 +vt 0.538610 0.779923 +vt 0.768340 0.428571 +vt 0.764479 0.420849 +vt 0.768340 0.420849 +vt 0.729730 0.428571 +vt 0.725869 0.428571 +vt 0.725869 0.420849 +vt 0.644788 0.633205 +vt 0.617761 0.640927 +vt 0.606178 0.633205 +vt 0.610039 0.617761 +vt 0.617761 0.625483 +vt 0.602317 0.625483 +vt 0.633205 0.640927 +vt 0.613900 0.652510 +vt 0.644788 0.625483 +vt 0.629344 0.625483 +vt 0.637066 0.617761 +vt 0.602317 0.694981 +vt 0.602317 0.706564 +vt 0.324324 0.706564 +vt 0.169884 0.660232 +vt 0.208494 0.671815 +vt 0.169884 0.671815 +vt 0.169884 0.625483 +vt 0.208494 0.613900 +vt 0.208494 0.625483 +vt 0.169884 0.602317 +vt 0.208494 0.602317 +vt 0.169884 0.648649 +vt 0.208494 0.660232 +vt 0.169884 0.637066 +vt 0.208494 0.656371 +vt 0.216216 0.675676 +vt 0.235521 0.667954 +vt 0.648649 0.625483 +vt 0.208494 0.710425 +vt 0.324324 0.710425 +vt 0.332046 0.710425 +vt 0.332046 0.706564 +vt 0.347490 0.710425 +vt 0.347490 0.706564 +vt 0.359073 0.706564 +vt 0.324324 0.536680 +vt 0.602317 0.544402 +vt 0.324324 0.544402 +vt 0.324324 0.559846 +vt 0.602317 0.559846 +vt 0.208494 0.617761 +vt 0.602317 0.625483 +vt 0.208494 0.625483 +vt 0.602317 0.602317 +vt 0.208494 0.602317 +vt 0.602317 0.637066 +vt 0.208494 0.637066 +vt 0.602317 0.617761 +vt 0.629344 0.652510 +vt 0.637066 0.671815 +vt 0.610039 0.660232 +vt 0.640927 0.687259 +vt 0.606178 0.687259 +vt 0.617761 0.694981 +vt 0.613900 0.706564 +vt 0.629344 0.694981 +vt 0.633205 0.706564 +vt 0.606178 0.988417 +vt 0.042471 0.988417 +vt 0.042471 0.976834 +vt 1.000000 0.965251 +vt 0.042471 0.965251 +vt 0.606178 1.000000 +vt 0.490348 1.000000 +vt 0.042471 0.942085 +vt 0.042471 0.930502 +vt 0.490348 0.930502 +vt 0.590734 0.471042 +vt 0.629344 0.478764 +vt 0.370656 0.517375 +vt 0.629344 0.509652 +vt 0.629344 0.517375 +vt 0.370656 0.501930 +vt 0.629344 0.501930 +vt 0.370656 0.525097 +vt 0.629344 0.525097 +vt 0.370656 0.509652 +vt 0.486486 0.953668 +vt 0.281853 0.952190 +vt 0.486486 0.952190 +vt 0.281853 0.943563 +vt 0.042471 0.953668 +vt 0.498069 0.943563 +vt 1.000000 0.942085 +vt 1.000000 0.953668 +vt 0.486486 0.963773 +vt 0.498069 0.963773 +vt 0.370656 0.478764 +vt 0.374517 0.478764 +vt 0.370656 0.471042 +vt 0.374517 0.471042 +vt 0.559846 0.907336 +vt 0.559846 0.926641 +vt 0.579151 0.926641 +vt 0.166023 0.702703 +vt 0.146718 0.710425 +vt 0.146718 0.702703 +vt 0.166023 0.656371 +vt 0.146718 0.664093 +vt 0.146718 0.656371 +vt 0.166023 0.671815 +vt 0.146718 0.679537 +vt 0.146718 0.671815 +vt 0.166023 0.687259 +vt 0.146718 0.694981 +vt 0.146718 0.687259 +vt 0.166023 0.694981 +vt 0.166023 0.648649 +vt 0.146718 0.648649 +vt 0.166023 0.664093 +vt 0.166023 0.679537 +vt 0.169884 0.672366 +vt 0.169884 0.687810 +vt 0.169884 0.695532 +vt 0.169884 0.649200 +vt 0.169884 0.671263 +vt 0.169884 0.680088 +vt 0.169884 0.703254 +vt 0.166023 0.710425 +vt 0.169884 0.663541 +vt 0.131274 0.602317 +vt 0.138996 0.710425 +vt 0.131274 0.710425 +vt 0.084942 0.602317 +vt 0.092664 0.710425 +vt 0.084942 0.710425 +vt 0.100386 0.602317 +vt 0.108108 0.710425 +vt 0.100386 0.710425 +vt 0.115830 0.602317 +vt 0.123552 0.710425 +vt 0.115830 0.710425 +vt 0.138996 0.602317 +vt 0.146718 0.710425 +vt 0.092664 0.602317 +vt 0.108108 0.602317 +vt 0.123552 0.602317 +vt 0.359073 0.332046 +vt 0.343629 0.355212 +vt 0.343629 0.332046 +vt 0.420849 0.332046 +vt 0.405405 0.355212 +vt 0.405405 0.332046 +vt 0.204633 0.332046 +vt 0.189189 0.355212 +vt 0.189189 0.332046 +vt 0.142857 0.332046 +vt 0.158301 0.355212 +vt 0.142857 0.355212 +vt 0.173745 0.355212 +vt 0.173745 0.332046 +vt 0.328185 0.355212 +vt 0.328185 0.332046 +vt 0.127413 0.355212 +vt 0.127413 0.332046 +vt 0.389961 0.332046 +vt 0.374517 0.355212 +vt 0.374517 0.332046 +vt 0.389961 0.355212 +vt 0.111969 0.355212 +vt 0.111969 0.332046 +vt 0.359073 0.355212 +vt 0.023166 0.787645 +vt 0.000000 0.791506 +vt 0.000000 0.779923 +vt 0.532819 0.764479 +vt 0.416988 0.776062 +vt 0.023166 0.779923 +vt 0.393822 0.729730 +vt 0.401544 0.725869 +vt 0.401544 0.729730 +vt 0.405405 0.725869 +vt 0.405405 0.729730 +vt 0.795367 0.725869 +vt 0.795367 0.729730 +vt -0.000000 0.729730 +vt 0.389961 0.725869 +vt 0.389961 0.729730 +vt 0.799228 0.729730 +vt 0.806950 0.725869 +vt 0.806950 0.729730 +vt 0.799228 0.725869 +vt 0.810811 0.729730 +vt 0.791506 0.725869 +vt 0.795367 0.722008 +vt 0.795367 0.714286 +vt 0.393822 0.725869 +vt 0.552124 0.810811 +vt 0.555985 0.814672 +vt 0.552124 0.814672 +vt 0.559846 0.810811 +vt 0.563707 0.814672 +vt 0.559846 0.814672 +vt 0.536680 0.810811 +vt 0.540541 0.814672 +vt 0.536680 0.814672 +vt 0.544402 0.810811 +vt 0.548263 0.814672 +vt 0.544402 0.814672 +vt 0.548263 0.810811 +vt 0.555985 0.810811 +vt 0.532819 0.810811 +vt 0.532819 0.814672 +vt 0.540541 0.810811 +vt 0.540540 0.795367 +vt 0.548262 0.803089 +vt 0.540540 0.810811 +vt 0.169884 0.683398 +vt 0.312741 0.671815 +vt 0.602317 0.660232 +vt 0.602317 0.671815 +vt 0.312741 0.660232 +vt 0.602317 0.648649 +vt 0.312741 0.683398 +vt 0.602317 0.683398 +vt 0.312741 0.648649 +vt 0.200772 0.648649 +vt 0.208494 0.694981 +vt 0.200772 0.683398 +vt 0.305019 0.683398 +vt 0.583012 0.845560 +vt 1.000000 0.857143 +vt 0.583012 0.857143 +vt 0.583012 0.830116 +vt 1.000000 0.845560 +vt 1.000000 0.814672 +vt 1.000000 0.830116 +vt 0.583012 0.803089 +vt 0.583012 0.814672 +vt 0.583012 0.787645 +vt 1.000000 0.803089 +vt 0.583012 0.772201 +vt 1.000000 0.787645 +vt 1.000000 0.772201 +vt 0.583012 0.872587 +vt 1.000000 0.872587 +vt 1.000000 0.888031 +vt 0.583012 0.888031 +vt 1.000000 0.899614 +vt 0.583012 0.899614 +vt 0.583012 0.915058 +vt 1.000000 0.915058 +vt 0.583012 0.930502 +vt 1.000000 0.930502 +vt 0.583012 0.741313 +vt 1.000000 0.766409 +vt 0.583012 0.772201 +vt 0.570643 0.773138 +vt 0.538670 0.773138 +vt 0.548805 0.734380 +vt 0.117860 0.389961 +vt 0.104247 0.382239 +vt 0.104247 0.571429 +vt 0.111969 0.579151 +vt 0.092664 0.579151 +vt 0.166023 0.571429 +vt 0.177606 0.579151 +vt 0.158301 0.579151 +vt 0.000000 0.891892 +vt 0.000000 0.764479 +vt 0.177606 0.602317 +vt 0.849421 0.030888 +vt 0.833977 0.015444 +vt 0.849421 0.015444 +vt 0.652510 0.015444 +vt 0.617761 0.030888 +vt 0.617761 0.015444 +vt 0.833977 0.030888 +vt 0.826255 0.015444 +vt 0.598456 0.015444 +vt 0.822394 0.030888 +vt 0.810811 0.015444 +vt 0.822394 0.015444 +vt 0.575290 0.042471 +vt 0.575290 0.003861 +vt 0.810811 0.030888 +vt 0.795367 0.015444 +vt 0.930502 0.042471 +vt 0.884170 0.003861 +vt 0.930502 0.003861 +vt 0.559846 0.042471 +vt 0.559846 0.003861 +vt 0.795367 0.030888 +vt 0.787645 0.015444 +vt 0.884170 0.042471 +vt 0.872587 0.015444 +vt 0.540541 0.003861 +vt 0.772201 0.003861 +vt 0.768340 0.015444 +vt 0.872587 0.030888 +vt 0.864865 0.015444 +vt 0.540541 0.042471 +vt 0.528958 0.003861 +vt 0.768340 0.030888 +vt 0.694981 0.015444 +vt 0.861004 0.030888 +vt 0.861004 0.015444 +vt 0.694981 0.030888 +vt 0.872587 0.003861 +vt 0.864865 0.003861 +vt 0.849421 0.003861 +vt 0.826255 0.003861 +vt 0.833977 0.003861 +vt 0.810811 0.003861 +vt 0.787645 0.003861 +vt 0.795367 0.003861 +vt 0.474903 0.000000 +vt 0.525097 0.027027 +vt 0.474903 0.015444 +vt 0.652510 0.003861 +vt 0.694981 0.003861 +vt 0.617761 0.003861 +vt 0.598456 0.003861 +vt 0.706564 0.003861 +vt 0.760618 0.003861 +vt 0.459459 0.030888 +vt 0.471042 0.023166 +vt 0.459459 0.046332 +vt 0.444015 0.061776 +vt 0.455598 0.054054 +vt 0.444015 0.077220 +vt 0.505791 0.065637 +vt 0.486486 0.092664 +vt 0.440154 0.084942 +vt 0.474903 0.108108 +vt 0.478764 0.127413 +vt 0.401544 0.127413 +vt 0.428571 0.088803 +vt 0.501930 0.154440 +vt 0.501930 0.166023 +vt 0.486486 0.142857 +vt 0.401544 0.166023 +vt 0.787645 0.030888 +vt 0.474903 0.000000 +vt 0.474903 0.015444 +vt 0.525097 0.027027 +vt 0.459459 0.030888 +vt 0.459459 0.046332 +vt 0.471042 0.023166 +vt 0.444015 0.061776 +vt 0.444015 0.077220 +vt 0.455598 0.054054 +vt 0.505791 0.065637 +vt 0.486486 0.092664 +vt 0.440154 0.084942 +vt 0.474903 0.108108 +vt 0.706564 0.042471 +vt 0.760618 0.042471 +vt 0.772201 0.042471 +vt 0.787645 0.042471 +vt 0.795367 0.042471 +vt 0.810811 0.042471 +vt 0.826255 0.042471 +vt 0.826255 0.030888 +vt 0.833977 0.042471 +vt 0.849421 0.042471 +vt 0.864865 0.042471 +vt 0.864865 0.030888 +vt 0.872587 0.042471 +vt 0.694981 0.042471 +vt 0.652510 0.042471 +vt 0.652510 0.030888 +vt 0.617761 0.042471 +vt 0.598456 0.042471 +vt 0.598456 0.030888 +vt 0.428571 0.088803 +vt 0.401544 0.127413 +vt 0.478764 0.127413 +vt 0.401544 0.166023 +vt 0.486486 0.142857 +vt 0.501930 0.154440 +vt 0.501930 0.166023 +vt 0.698842 0.552124 +vt 0.698842 0.517375 +vt 0.675676 0.501930 +vt 0.698842 0.505791 +vt 0.698842 0.490348 +vt 0.675676 0.490348 +vt 0.698842 0.444015 +vt 0.675676 0.444015 +vt 0.698842 0.401544 +vt 0.675676 0.401544 +vt 0.146718 0.602317 +vt 0.135135 0.579151 +vt 0.123552 0.602317 +vt 0.123552 0.579151 +vt 0.135135 0.602317 +vt 0.146718 0.579151 +vt 0.092664 0.602317 +vt 0.324324 0.355212 +vt 0.208494 0.355212 +vt 0.204633 0.355212 +vt 0.181467 0.362934 +vt 0.181467 0.382239 +vt 0.207129 0.360301 +vt 0.266409 0.332046 +vt 0.252681 0.328185 +vt 0.264693 0.328185 +vt 0.235521 0.355212 +vt 0.220077 0.332046 +vt 0.235521 0.332046 +vt 0.281853 0.355212 +vt 0.281853 0.332046 +vt 0.312741 0.355212 +vt 0.297297 0.332046 +vt 0.312741 0.332046 +vt 0.216216 0.355212 +vt 0.220077 0.332046 +vt 0.216216 0.332046 +vt 0.266409 0.355212 +vt 0.250965 0.332046 +vt 0.216216 0.355212 +vt 0.208494 0.332046 +vt 0.216216 0.332046 +vt 0.250965 0.355212 +vt 0.316602 0.355212 +vt 0.316602 0.332046 +vt 0.297297 0.355212 +vt 0.397683 0.355212 +vt 0.409266 0.378378 +vt 0.397683 0.378378 +vt 0.324324 0.332046 +vt 0.237237 0.328185 +vt 0.249249 0.328185 +vt 0.233805 0.328185 +vt 0.280137 0.328185 +vt 0.295581 0.328185 +vt 0.311025 0.328185 +vt 0.315933 0.332046 +vt 0.312741 0.328185 +vt 0.324324 0.328185 +vt 0.216886 0.332046 +vt 0.220077 0.328185 +vt 0.096662 0.372587 +vt 0.096525 0.362934 +vt 0.104247 0.362934 +vt 0.328185 0.355212 +vt 0.339768 0.378378 +vt 0.328185 0.378378 +vt 0.351351 0.355212 +vt 0.362934 0.378378 +vt 0.351351 0.378378 +vt 0.374517 0.355212 +vt 0.386100 0.378378 +vt 0.374517 0.378378 +vt 0.409266 0.355212 +vt 0.420849 0.378378 +vt 0.339768 0.355212 +vt 0.362934 0.355212 +vt 0.386100 0.355212 +vt 0.280137 0.359073 +vt 0.295581 0.359073 +vt 0.311025 0.359073 +vt 0.252681 0.359073 +vt 0.237237 0.359073 +vt 0.233805 0.359073 +vt 0.220077 0.355212 +vt 0.315933 0.355212 +vt 0.312741 0.359073 +vt 0.220077 0.359073 +vt 0.216886 0.355212 +vt 0.173882 0.372587 +vt 0.173745 0.382239 +vt 0.146718 0.432432 +vt 0.150579 0.451737 +vt 0.146718 0.451737 +vt 0.162162 0.424710 +vt 0.166023 0.420849 +vt 0.166023 0.424710 +vt 0.162162 0.428571 +vt 0.166023 0.428571 +vt 0.146718 0.424710 +vt 0.150579 0.428571 +vt 0.146718 0.428571 +vt 0.146718 0.420849 +vt 0.150579 0.424710 +vt 0.150579 0.432432 +vt 0.166023 0.432432 +vt 0.162162 0.432432 +vt 0.166023 0.416988 +vt 0.162162 0.420849 +vt 0.162162 0.416988 +vt 0.150579 0.420849 +vt 0.146718 0.416988 +vt 0.150579 0.416988 +vt 0.150579 0.397683 +vt 0.166023 0.451737 +vt 0.162162 0.451737 +vt 0.162162 0.397683 +vt 0.382239 0.393822 +vt 0.378378 0.389961 +vt 0.382239 0.389961 +vt 0.382239 0.397683 +vt 0.378378 0.397683 +vt 0.378378 0.393822 +vt 0.413127 0.397683 +vt 0.409266 0.401544 +vt 0.409266 0.397683 +vt 0.389961 0.397683 +vt 0.386100 0.401544 +vt 0.386100 0.397683 +vt 0.397683 0.397683 +vt 0.393822 0.401544 +vt 0.393822 0.397683 +vt 0.405405 0.397683 +vt 0.401544 0.401544 +vt 0.401544 0.397683 +vt 0.405405 0.401544 +vt 0.382239 0.401544 +vt 0.382239 0.397683 +vt 0.389961 0.401544 +vt 0.397683 0.401544 +vt 0.401544 0.386100 +vt 0.401544 0.393822 +vt 0.401544 0.397683 +vt 0.405405 0.397683 +vt 0.401544 0.382239 +vt 0.405405 0.382239 +vt 0.173745 0.528958 +vt 0.166023 0.544402 +vt 0.123552 0.544402 +vt 0.389961 0.413127 +vt 0.386100 0.416988 +vt 0.386100 0.413127 +vt 0.397683 0.413127 +vt 0.393822 0.416988 +vt 0.393822 0.413127 +vt 0.042471 0.918919 +vt 0.490348 0.918919 +vt 0.042471 0.907336 +vt 0.490348 0.907336 +vt 0.555985 0.783784 +vt 0.552124 0.779923 +vt 0.555985 0.779923 +vt 0.548263 0.783784 +vt 0.544402 0.779923 +vt 0.548263 0.779923 +vt 0.571429 0.783784 +vt 0.567568 0.779923 +vt 0.571429 0.779923 +vt 0.563707 0.783784 +vt 0.559846 0.779923 +vt 0.563707 0.779923 +vt 0.559846 0.783784 +vt 0.552124 0.783784 +vt 0.575290 0.783784 +vt 0.575290 0.779923 +vt 0.567568 0.783784 +vt 0.565403 0.793671 +vt 0.569498 0.795367 +vt 0.569498 0.783784 +vt 0.810811 0.733591 +vt 0.393822 0.710425 +vt 0.393822 0.725869 +vt 0.397683 0.714286 +vt 0.397683 0.722008 +vt 0.003861 0.725869 +vt 0.532819 0.907336 +vt 1.000000 0.988417 +vt 0.940486 0.571897 +vt 0.945946 0.575290 +vt 0.965251 0.420849 +vt 0.941051 0.402441 +vt 0.947876 0.399614 +vt 0.954702 0.402441 +vt 0.957529 0.409266 +vt 1.000000 0.710425 +vt 0.976834 0.594595 +vt 0.957529 0.575290 +vt 0.974248 0.584942 +vt 0.976834 0.710425 +vt 0.895753 0.328185 +vt 0.892926 0.402441 +vt 0.886100 0.399614 +vt 0.868726 0.420849 +vt 0.876448 0.409266 +vt 0.893491 0.571897 +vt 0.888031 0.575290 +vt 0.876448 0.575290 +vt 0.879275 0.402441 +vt 0.833977 0.710425 +vt 0.857143 0.594595 +vt 0.857143 0.710425 +vt 0.563707 0.791506 +vt 0.534515 0.789809 +vt 0.532818 0.785714 +vt 0.534515 0.781619 +vt 0.542705 0.781619 +vt 0.544401 0.785714 +vt 0.764479 0.428571 +vt 0.729730 0.420849 +vt 0.637066 0.652510 +vt 0.208494 0.706564 +vt 0.169884 0.613900 +vt 0.208494 0.648649 +vt 0.235521 0.656371 +vt 0.227799 0.648649 +vt 0.216216 0.648649 +vt 0.208494 0.667954 +vt 0.227799 0.675676 +vt 0.359073 0.710425 +vt 0.602317 0.536680 +vt 0.617761 0.652510 +vt 0.637066 0.660232 +vt 0.610039 0.671815 +vt 0.602317 0.679537 +vt 0.644788 0.679537 +vt 1.000000 0.976834 +vt 0.042471 1.000000 +vt 1.000000 0.930502 +vt 0.629344 0.471042 +vt 0.498069 0.953668 +vt 0.629344 0.532819 +vt 0.370656 0.532819 +vt 0.579151 0.907336 +vt 0.571429 0.903475 +vt 0.555985 0.918919 +vt 0.571429 0.930502 +vt 0.583012 0.918919 +vt 0.169884 0.678985 +vt 0.169884 0.694429 +vt 0.169884 0.702151 +vt 0.169884 0.655819 +vt 0.169884 0.664644 +vt 0.169884 0.686707 +vt 0.169884 0.709873 +vt 0.169884 0.656922 +vt 0.146718 0.602317 +vt 0.420849 0.355212 +vt 0.158301 0.332046 +vt 0.027027 0.776062 +vt 0.000000 0.725869 +vt 0.810811 0.725869 +vt 0.791506 0.710425 +vt 0.401544 0.710425 +vt 0.397683 0.714286 +vt 0.397683 0.722008 +vt 0.401544 0.725869 +vt 0.563707 0.810811 +vt 0.535080 0.808549 +vt 0.532818 0.803089 +vt 0.535080 0.797629 +vt 0.546001 0.797629 +vt 0.546001 0.808549 +vt 0.208494 0.683398 +vt 0.169884 0.694981 +vt 1.000000 0.747104 +vt 0.570643 0.740376 +vt 0.560508 0.779133 +vt 0.548805 0.779133 +vt 0.560508 0.734380 +vt 0.532819 0.750761 +vt 0.538670 0.740376 +vt 0.532819 0.762753 +vt 0.105338 0.384873 +vt 0.105338 0.360301 +vt 0.117860 0.355212 +vt 0.528958 0.042471 +vt 0.698842 0.501930 +vt 0.182558 0.384872 +vt 0.194844 0.389961 +vt 0.207129 0.384872 +vt 0.194844 0.355212 +vt 0.182558 0.360301 +vt 0.220077 0.355212 +vt 0.221793 0.328185 +vt 0.268125 0.328185 +vt 0.283569 0.328185 +vt 0.299013 0.328185 +vt 0.208494 0.328185 +vt 0.096525 0.382239 +vt 0.420849 0.355212 +vt 0.268125 0.359073 +vt 0.283569 0.359073 +vt 0.299013 0.359073 +vt 0.264693 0.359073 +vt 0.249249 0.359073 +vt 0.221793 0.359073 +vt 0.324324 0.359073 +vt 0.208494 0.359073 +vt 0.173745 0.362934 +vt 0.413127 0.401544 +vt 0.115830 0.528958 +vt 0.115830 0.517375 +vt 0.173745 0.517375 +vt 0.123552 0.501930 +vt 0.166023 0.501930 +vt 0.123552 0.478764 +vt 0.166023 0.478764 +vt 0.144788 0.571429 +vt 0.135135 0.568601 +vt 0.154440 0.568601 +vt 0.389961 0.416988 +vt 0.397683 0.416988 +vt 0.544402 0.783784 +vt 0.573593 0.793671 +vt 0.575290 0.789575 +vt 0.573593 0.785480 +vt 0.565403 0.785480 +vt 0.563707 0.789575 +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.2290 -0.9734 +vn 0.0000 -0.9389 0.3443 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.0000 0.0000 -1.0000 +vn 0.3827 -0.9239 -0.0000 +vn 0.9239 -0.3827 0.0000 +vn -0.3827 0.9239 -0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 -0.7071 0.0073 +vn -0.2298 -0.9732 -0.0000 +vn -0.2295 -0.9733 0.0076 +vn 0.5626 0.8267 0.0078 +vn 0.8369 0.5474 0.0000 +vn 0.5563 0.8310 0.0000 +vn 0.9314 -0.3640 0.0000 +vn 0.9733 -0.2295 0.0076 +vn -0.9314 -0.3640 -0.0000 +vn -0.7071 -0.7071 -0.0000 +vn 0.2298 -0.9732 0.0000 +vn 0.7071 -0.7071 0.0073 +vn 0.2295 -0.9733 0.0076 +vn 0.7071 -0.7071 0.0000 +vn 0.9733 0.2295 0.0076 +vn 0.9621 0.2728 0.0000 +vn -0.9733 -0.2295 0.0076 +vn -0.0000 0.9239 -0.3827 +vn 0.0000 0.9239 0.3827 +vn -0.0000 -0.3358 -0.9419 +vn -0.0000 0.3827 -0.9239 +vn -0.0000 -0.9077 0.4197 +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.9077 -0.4197 +vn -0.0000 -0.3827 -0.9239 +vn -0.0000 0.3827 0.9239 +vn -0.0000 -0.3358 0.9419 +vn -0.9732 0.2298 -0.0000 +vn -0.9732 -0.2298 -0.0000 +vn -0.7501 0.6613 0.0078 +vn -0.5563 0.8310 -0.0000 +vn -0.7503 0.6611 0.0000 +vn -0.8369 0.5474 -0.0000 +vn -0.9906 0.1368 -0.0000 +vn -0.9239 -0.3827 -0.0000 +vn -0.8944 0.4472 0.0000 +vn -0.9621 0.2728 -0.0000 +vn -0.9733 0.2295 0.0076 +vn 0.0000 -0.9909 -0.1343 +vn 0.0000 -0.9808 0.1951 +vn 0.0000 -0.8660 -0.5000 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 -0.9914 -0.1305 +vn 0.0000 -0.2744 -0.9616 +vn 0.0000 -0.8008 -0.5989 +vn 0.0000 -0.1305 -0.9914 +vn 0.0000 0.8822 0.4709 +vn 0.0000 0.4719 0.8817 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.9871 0.1602 0.0000 +vn 0.9224 0.3863 0.0000 +vn 0.3827 0.9239 -0.0000 +vn -0.3827 -0.9239 -0.0000 +vn 0.9675 -0.2527 0.0000 +vn -0.9239 0.3827 -0.0000 +vn 0.7497 -0.6618 0.0000 +vn 0.9285 0.3714 0.0000 +vn 0.5547 -0.8321 0.0000 +vn -0.7497 -0.6618 -0.0000 +vn -0.9871 0.1602 -0.0000 +vn -0.9285 0.3714 -0.0000 +vn -0.5547 -0.8321 -0.0000 +vn -0.9906 0.1367 -0.0000 +vn -0.7972 -0.6037 -0.0000 +vn 0.7972 -0.6037 0.0000 +vn -0.6037 -0.7972 -0.0000 +vn 0.9239 0.3827 -0.0000 +vn 0.9239 0.3826 0.0000 +vn 0.6901 -0.6901 0.2181 +vn -0.6901 -0.6901 0.2181 +vn -0.6901 0.6901 0.2181 +vn 0.6901 0.6901 0.2181 +vn 0.9759 0.0000 0.2181 +vn -0.0000 -0.9759 0.2181 +vn -0.9759 0.0000 0.2181 +vn 0.0000 0.9759 0.2181 +vn -0.6858 0.6859 0.2434 +vn 0.6858 0.6859 0.2434 +vn 0.9699 0.0000 0.2434 +vn -0.0000 -0.9699 0.2434 +vn 0.0000 0.9699 0.2434 +vn 0.6858 -0.6859 0.2434 +vn -0.9699 0.0000 0.2434 +vn -0.6858 -0.6859 0.2434 +vn 0.9808 -0.1951 0.0000 +vn -0.9808 0.1951 -0.0000 +vn -0.9808 -0.1951 -0.0000 +vn 0.9808 0.1951 0.0000 +vn 0.9732 -0.2298 0.0000 +vn 0.9732 0.2298 0.0000 +vn 0.7501 0.6613 0.0078 +vn 0.8944 0.4472 0.0000 +vn 0.9675 0.2527 0.0000 +vn -0.9675 0.2527 -0.0000 +vn -0.9675 -0.2527 -0.0000 +vn -0.2587 -0.9658 0.0164 +vn 0.2587 -0.9658 0.0164 +vn 0.9658 -0.2587 0.0164 +vn 0.7070 -0.7070 0.0165 +vn 0.9658 0.2587 0.0164 +vn 0.9529 0.3034 0.0013 +vn 0.9972 0.0737 -0.0141 +vn -0.7070 -0.7070 0.0165 +vn -0.9658 -0.2587 0.0164 +vn -0.9658 0.2587 0.0164 +vn -0.9529 0.3034 0.0013 +vn -0.5626 0.8267 0.0078 +vn -0.9972 0.0737 -0.0141 +vn -0.9005 0.4348 -0.0073 +vn 0.9005 0.4348 -0.0073 +vn 0.9135 0.4060 -0.0262 +vn -0.1452 -0.3671 0.9188 +vn 0.1981 -0.5913 0.7817 +vn 0.1452 -0.3671 0.9188 +vn 0.3316 0.5046 -0.7971 +vn -0.2171 0.6491 -0.7290 +vn 0.2171 0.6491 -0.7290 +vn -0.1981 -0.5913 0.7817 +vn 0.1909 -0.2085 0.9592 +vn 0.1257 0.3641 -0.9228 +vn -0.1909 -0.2085 0.9592 +vn -0.0577 -0.2625 -0.9632 +vn 0.0577 -0.2625 -0.9632 +vn 0.0000 -0.5735 0.8192 +vn 0.0000 -0.6407 -0.7678 +vn -0.2221 -0.8356 0.5024 +vn 0.1664 -0.6204 0.7665 +vn 0.2221 -0.8356 0.5024 +vn 0.0000 -0.4472 -0.8944 +vn 0.3162 0.0000 0.9487 +vn 0.1251 0.0000 0.9921 +vn -0.1664 -0.6204 0.7665 +vn -0.1647 -0.8707 -0.4634 +vn 0.1574 -0.8728 -0.4621 +vn 0.1647 -0.8707 -0.4634 +vn -0.3158 0.4243 -0.8487 +vn 0.3158 0.4243 -0.8487 +vn 0.4257 -0.6798 0.5972 +vn 0.3781 -0.2402 0.8941 +vn 0.3421 -0.4253 0.8379 +vn 0.4258 -0.6015 0.6760 +vn 0.8970 0.1977 -0.3953 +vn 0.8992 0.2330 -0.3704 +vn 0.8599 0.3129 -0.4032 +vn 0.8941 0.1096 -0.4342 +vn 0.4212 -0.8013 -0.4248 +vn 0.3942 -0.8092 -0.4357 +vn -0.1251 0.0000 0.9921 +vn -0.8970 0.1977 -0.3953 +vn -0.8992 0.2330 -0.3704 +vn -0.8599 0.3129 -0.4032 +vn -0.8941 0.1096 -0.4342 +vn -0.4212 -0.8013 -0.4248 +vn -0.1574 -0.8728 -0.4621 +vn -0.3942 -0.8092 -0.4357 +vn -0.3162 0.0000 0.9487 +vn -0.3781 -0.2402 0.8941 +vn -0.4258 -0.6015 0.6760 +vn -0.3421 -0.4253 0.8379 +vn -0.4257 -0.6798 0.5972 +vn -0.3316 0.5046 -0.7971 +vn -0.1257 0.3641 -0.9228 +vn 0.0000 -0.1602 0.9871 +vn 0.0000 -0.5257 0.8507 +vn 0.0000 -0.9871 0.1602 +vn 0.0000 -0.9571 -0.2898 +vn 0.0000 -0.8507 0.5257 +vn 0.0000 -0.8321 -0.5547 +vn 0.0000 0.1602 -0.9871 +vn 0.0000 0.5257 -0.8507 +vn 0.0000 0.8507 -0.5257 +vn 0.0000 0.9871 -0.1602 +vn 0.0000 0.9571 0.2898 +vn 0.0000 0.8321 0.5547 +vn 0.6763 0.7307 -0.0931 +vn 0.0000 0.9915 -0.1298 +vn -0.6763 0.7307 -0.0931 +vn -0.6906 0.7182 -0.0846 +vn 0.0000 0.9864 -0.1644 +vn 0.6906 0.7182 -0.0846 +vn -0.9135 0.4060 -0.0262 +vn 0.8315 0.5556 -0.0000 +vn -0.8315 0.5556 -0.0000 +vn -0.8315 -0.5556 -0.0000 +vn 0.8315 -0.5556 0.0000 +vn 0.0000 0.3770 -0.9262 +vn 0.0000 0.3714 -0.9285 +vn 0.0000 0.3770 0.9262 +vn 0.0000 0.3714 0.9285 +vn -0.3827 0.0000 0.9239 +vn 0.3827 0.0000 0.9239 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.2298 0.9732 0.0000 +vn 0.4472 0.8944 0.0000 +vn -0.4472 0.8944 0.0000 +vn -0.2298 0.9732 0.0000 +usemtl None +s off +f 764/1429/365 765/1430/365 766/1431/365 +f 767/1432/366 768/1433/366 769/1434/366 +f 770/1435/367 764/1429/367 766/1431/367 +f 769/1436/368 770/1435/368 767/1437/368 +f 771/1438/369 768/1439/369 764/1440/369 +f 772/1441/370 773/1442/370 774/1443/370 +f 775/1444/367 776/1445/367 773/1442/367 +f 777/1446/366 778/1447/366 779/1448/366 +f 780/1449/366 781/1450/366 782/1451/366 +f 783/1452/368 784/1453/368 780/1454/368 +f 785/1455/366 786/1456/366 787/1457/366 +f 781/1450/371 784/1458/371 788/1459/371 +f 783/1460/370 782/1451/370 789/1461/370 +f 789/1462/365 781/1450/365 790/1463/365 +f 791/1464/370 792/1465/370 793/1466/370 +f 794/1467/370 791/1464/370 795/1468/370 +f 796/1469/372 797/1470/372 798/1471/372 +f 799/1472/373 800/1473/373 801/1474/373 +f 802/1475/373 803/1476/373 796/1477/373 +f 804/1478/372 805/1479/372 802/1480/372 +f 806/1481/372 802/1482/372 801/1483/372 +f 806/1481/374 800/1484/374 807/1485/374 +f 797/1470/375 808/1486/375 798/1471/375 +f 809/1487/365 810/1488/365 811/1489/365 +f 812/1490/365 813/1491/365 814/1492/365 +f 815/1493/372 816/1494/372 817/1495/372 +f 807/1485/365 812/1496/365 814/1492/365 +f 818/1497/365 819/1498/365 820/1499/365 +f 821/1500/365 819/1498/365 822/1501/365 +f 823/1502/372 824/1503/372 825/1504/372 +f 826/1505/372 827/1506/372 828/1507/372 +f 824/1503/372 828/1507/372 827/1506/372 +f 823/1502/371 829/1508/371 828/1507/371 +f 825/1509/367 830/1510/367 823/1502/367 +f 828/1507/366 831/1511/366 826/1512/366 +f 830/1510/365 832/1513/365 833/1514/365 +f 834/1515/365 831/1516/365 829/1508/365 +f 830/1510/365 834/1515/365 829/1508/365 +f 835/1517/366 836/1518/366 837/1519/366 +f 838/1520/366 835/1517/366 837/1519/366 +f 839/1521/366 838/1520/366 840/1522/366 +f 841/1523/366 840/1522/366 842/1524/366 +f 843/1525/366 842/1524/366 844/1526/366 +f 845/1527/366 843/1525/366 844/1526/366 +f 846/1528/367 847/1529/367 848/1530/367 +f 849/1531/367 848/1530/367 850/1532/367 +f 851/1533/367 849/1531/367 850/1532/367 +f 852/1534/367 853/1535/367 854/1536/367 +f 855/1537/367 853/1535/367 856/1538/367 +f 855/1537/367 857/1539/367 858/1540/367 +f 859/1541/365 860/1542/365 861/1543/365 +f 860/1542/371 862/1544/371 861/1543/371 +f 859/1541/365 863/1545/365 864/1546/365 +f 865/1547/372 866/1548/372 862/1544/372 +f 862/1544/367 859/1549/367 861/1543/367 +f 867/1550/366 860/1542/366 864/1551/366 +f 867/1552/372 868/1553/372 866/1548/372 +f 859/1549/376 868/1554/376 869/1555/376 +f 870/1556/377 864/1551/377 863/1557/377 +f 871/1558/366 872/1559/366 873/1560/366 +f 874/1561/367 875/1562/367 876/1563/367 +f 877/1564/366 872/1559/366 878/1565/366 +f 875/1562/367 879/1566/367 876/1563/367 +f 873/1560/366 880/1567/366 881/1568/366 +f 882/1569/367 883/1570/367 874/1561/367 +f 884/1571/366 885/1572/366 886/1573/366 +f 887/1574/367 888/1575/367 889/1576/367 +f 890/1577/366 891/1578/366 884/1571/366 +f 892/1579/367 893/1580/367 887/1574/367 +f 891/1581/372 894/1582/372 895/1583/372 +f 893/1580/371 891/1578/371 896/1584/371 +f 897/1585/371 898/1586/371 899/1587/371 +f 900/1588/371 901/1589/371 902/1590/371 +f 903/1591/372 897/1592/372 904/1593/372 +f 905/1594/372 900/1595/372 902/1596/372 +f 906/1597/372 907/1598/372 905/1594/372 +f 906/1597/372 903/1591/372 904/1593/372 +f 904/1593/372 908/1599/372 909/1600/372 +f 910/1601/372 911/1602/372 907/1598/372 +f 907/1598/372 912/1603/372 904/1593/372 +f 913/1604/372 906/1597/372 914/1605/372 +f 904/1593/372 914/1605/372 906/1597/372 +f 907/1598/372 906/1597/372 915/1606/372 +f 916/1607/371 917/1608/371 918/1609/371 +f 919/1610/371 917/1608/371 920/1611/371 +f 921/1612/365 899/1613/365 898/1614/365 +f 922/1615/365 923/1616/365 901/1589/365 +f 923/1616/365 916/1617/365 924/1618/365 +f 921/1612/365 924/1618/365 918/1619/365 +f 918/1619/365 924/1618/365 916/1617/365 +f 925/1620/370 926/1621/370 927/1622/370 +f 925/1620/370 928/1623/370 929/1624/370 +f 930/1625/365 931/1626/365 932/1627/365 +f 933/1628/365 934/1629/365 928/1623/365 +f 935/1630/365 928/1623/365 934/1629/365 +f 930/1625/365 936/1631/365 931/1626/365 +f 937/1632/365 932/1627/365 931/1626/365 +f 933/1628/365 938/1633/365 934/1629/365 +f 933/1628/365 932/1627/365 939/1634/365 +f 928/1623/365 940/1635/365 930/1625/365 +f 900/1636/367 916/1637/367 922/1638/367 +f 918/1639/366 897/1640/366 899/1641/366 +f 896/1642/365 879/1566/365 877/1564/365 +f 941/1643/371 942/1644/371 943/1645/371 +f 944/1646/372 945/1647/372 942/1644/372 +f 946/1648/365 947/1649/365 948/1650/365 +f 942/1651/366 947/1649/366 949/1652/366 +f 946/1648/367 950/1653/367 944/1646/367 +f 764/1429/365 768/1433/365 765/1430/365 +f 767/1432/366 765/1430/366 768/1433/366 +f 770/1435/367 771/1654/367 764/1429/367 +f 769/1436/368 771/1438/368 770/1435/368 +f 771/1438/369 769/1436/369 768/1439/369 +f 772/1441/370 779/1448/370 773/1442/370 +f 951/1655/367 776/1445/367 775/1444/367 +f 776/1445/367 774/1443/367 773/1442/367 +f 779/1448/366 772/1441/366 777/1446/366 +f 777/1446/366 952/1656/366 778/1447/366 +f 780/1449/366 784/1458/366 781/1450/366 +f 783/1452/368 788/1657/368 784/1453/368 +f 953/1658/366 954/1659/366 787/1457/366 +f 954/1659/366 788/1660/366 785/1455/366 +f 787/1457/366 954/1659/366 785/1455/366 +f 788/1660/366 783/1661/366 785/1455/366 +f 954/1662/371 955/1663/371 788/1459/371 +f 955/1663/371 790/1664/371 788/1459/371 +f 790/1664/371 781/1450/371 788/1459/371 +f 789/1461/370 956/1665/370 783/1460/370 +f 956/1665/370 785/1666/370 783/1460/370 +f 783/1460/370 780/1449/370 782/1451/370 +f 789/1462/365 782/1451/365 781/1450/365 +f 791/1464/370 957/1667/370 792/1465/370 +f 794/1467/370 957/1667/370 791/1464/370 +f 796/1469/372 803/1668/372 797/1470/372 +f 816/1669/373 958/1670/373 801/1474/373 +f 958/1670/373 799/1472/373 801/1474/373 +f 799/1472/373 959/1671/373 800/1473/373 +f 802/1475/373 805/1672/373 803/1476/373 +f 806/1481/372 804/1478/372 802/1482/372 +f 806/1481/374 801/1673/374 800/1484/374 +f 797/1470/375 813/1491/375 808/1486/375 +f 811/1489/365 960/1674/365 961/1675/365 +f 961/1675/365 959/1676/365 811/1489/365 +f 959/1676/365 799/1677/365 811/1489/365 +f 799/1677/365 962/1678/365 811/1489/365 +f 962/1678/365 809/1487/365 811/1489/365 +f 812/1490/365 808/1679/365 813/1491/365 +f 815/1493/372 958/1680/372 816/1494/372 +f 816/1494/372 963/1681/372 817/1495/372 +f 817/1495/372 964/1682/372 815/1493/372 +f 964/1682/372 965/1683/372 815/1493/372 +f 965/1683/372 966/1684/372 815/1493/372 +f 807/1485/365 800/1685/365 812/1496/365 +f 818/1497/365 967/1686/365 819/1498/365 +f 821/1500/365 820/1499/365 819/1498/365 +f 819/1498/365 968/1687/365 822/1501/365 +f 822/1501/365 969/1688/365 970/1689/365 +f 970/1689/365 821/1500/365 822/1501/365 +f 824/1503/372 823/1502/372 828/1507/372 +f 823/1502/371 830/1510/371 829/1508/371 +f 825/1509/367 832/1690/367 830/1510/367 +f 828/1507/366 829/1508/366 831/1511/366 +f 830/1510/365 833/1514/365 834/1515/365 +f 835/1517/366 971/1691/366 836/1518/366 +f 838/1520/366 972/1692/366 835/1517/366 +f 839/1521/366 972/1693/366 838/1520/366 +f 841/1523/366 839/1694/366 840/1522/366 +f 843/1525/366 841/1523/366 842/1524/366 +f 845/1527/366 973/1695/366 843/1525/366 +f 846/1528/367 974/1696/367 847/1529/367 +f 849/1531/367 846/1528/367 848/1530/367 +f 851/1533/367 852/1697/367 849/1531/367 +f 852/1534/367 851/1533/367 853/1535/367 +f 855/1537/367 854/1698/367 853/1535/367 +f 855/1537/367 856/1538/367 857/1539/367 +f 859/1541/365 864/1546/365 860/1542/365 +f 860/1542/371 865/1547/371 862/1544/371 +f 859/1541/365 869/1699/365 863/1545/365 +f 865/1547/372 867/1552/372 866/1548/372 +f 862/1544/367 866/1700/367 859/1549/367 +f 867/1550/366 865/1547/366 860/1542/366 +f 867/1552/372 870/1701/372 868/1553/372 +f 859/1549/376 866/1700/376 868/1554/376 +f 870/1556/377 867/1550/377 864/1551/377 +f 871/1558/366 878/1565/366 872/1559/366 +f 874/1561/367 883/1570/367 875/1562/367 +f 877/1564/366 895/1583/366 872/1559/366 +f 875/1562/367 975/1702/367 879/1566/367 +f 881/1568/366 976/1703/366 871/1558/366 +f 871/1558/366 873/1560/366 881/1568/366 +f 874/1561/367 977/1704/367 882/1569/367 +f 882/1569/367 978/1705/367 883/1570/367 +f 886/1573/366 979/1706/366 890/1577/366 +f 890/1577/366 884/1571/366 886/1573/366 +f 889/1576/367 980/1707/367 892/1579/367 +f 892/1579/367 887/1574/367 889/1576/367 +f 890/1577/366 896/1584/366 891/1578/366 +f 892/1579/367 894/1708/367 893/1580/367 +f 894/1582/372 872/1559/372 895/1583/372 +f 895/1583/372 975/1709/372 891/1581/372 +f 975/1709/372 875/1710/372 891/1581/372 +f 893/1580/371 894/1708/371 891/1578/371 +f 897/1585/371 981/1711/371 898/1586/371 +f 900/1588/371 922/1615/371 901/1589/371 +f 903/1591/372 981/1712/372 897/1592/372 +f 905/1594/372 907/1598/372 900/1595/372 +f 909/1600/372 914/1605/372 904/1593/372 +f 904/1593/372 912/1603/372 908/1599/372 +f 911/1602/372 912/1603/372 907/1598/372 +f 907/1598/372 915/1606/372 910/1601/372 +f 913/1604/372 915/1606/372 906/1597/372 +f 916/1607/371 920/1611/371 917/1608/371 +f 919/1610/371 982/1713/371 917/1608/371 +f 921/1612/365 918/1619/365 899/1613/365 +f 922/1615/365 916/1617/365 923/1616/365 +f 925/1620/370 929/1624/370 926/1621/370 +f 925/1620/370 933/1628/370 928/1623/370 +f 935/1630/365 940/1635/365 928/1623/365 +f 930/1625/365 940/1635/365 936/1631/365 +f 937/1632/365 939/1634/365 932/1627/365 +f 933/1628/365 939/1634/365 938/1633/365 +f 900/1636/367 907/1714/367 916/1637/367 +f 918/1639/366 904/1715/366 897/1640/366 +f 877/1564/365 878/1565/365 893/1716/365 +f 896/1642/365 876/1563/365 879/1566/365 +f 877/1564/365 893/1716/365 896/1642/365 +f 941/1643/371 944/1646/371 942/1644/371 +f 944/1646/372 983/1717/372 945/1647/372 +f 947/1649/365 984/1718/365 948/1650/365 +f 948/1650/365 985/1719/365 946/1648/365 +f 985/1719/365 950/1653/365 946/1648/365 +f 949/1652/366 943/1720/366 942/1651/366 +f 942/1651/366 984/1718/366 947/1649/366 +f 944/1646/367 941/1643/367 986/1721/367 +f 986/1721/367 946/1648/367 944/1646/367 +s 1 +f 987/1722/378 988/1723/379 989/1724/380 +f 990/1725/381 991/1726/382 992/1727/383 +f 993/1728/384 994/1729/366 995/1730/385 +f 996/1731/386 997/1732/386 998/1733/387 +f 999/1734/388 1000/1735/389 1001/1736/390 +f 1002/1737/384 993/1728/384 1003/1738/391 +f 1004/1739/392 994/1729/366 1005/1740/393 +f 988/1723/379 1001/1736/390 989/1724/380 +f 1006/1741/367 996/1731/386 1007/1742/394 +f 996/1743/395 1008/1744/396 997/1745/396 +f 1009/1746/397 1010/1747/398 1006/1748/398 +f 1011/1749/399 1012/1750/400 1013/1751/401 +f 1011/1749/399 1014/1752/402 1015/1753/403 +f 1015/1754/403 1016/1755/404 1009/1746/397 +f 1006/1748/398 1017/1756/395 996/1743/395 +f 1018/1757/405 1019/1758/406 1020/1759/405 +f 997/1745/396 1018/1757/405 1020/1759/405 +f 1012/1760/367 1018/1761/367 1008/1762/367 +f 1020/1763/367 1021/1764/407 1022/1765/408 +f 1023/1766/409 1024/1767/410 1025/1768/411 +f 1026/1769/412 1027/1770/410 1028/1771/410 +f 793/1772/413 1028/1773/414 1027/1774/414 +f 1025/1768/411 1029/1775/415 1009/1776/416 +f 1019/1777/416 1026/1769/412 1021/1764/407 +f 1030/1778/411 1011/1779/415 1031/1780/415 +f 1015/1781/415 1031/1780/415 1011/1779/415 +f 1032/1782/417 1006/1741/367 1007/1742/394 +f 1033/1783/418 1034/1784/419 1035/1785/418 +f 1036/1786/420 1037/1787/421 1038/1788/420 +f 1039/1789/422 1038/1788/420 1040/1790/422 +f 1041/1791/423 1042/1792/424 1043/1793/423 +f 1044/1794/370 1040/1790/422 1045/1795/370 +f 1046/1796/421 1047/1797/425 1037/1787/421 +f 1048/1798/425 1043/1793/423 1047/1797/425 +f 1035/1785/418 1049/1799/424 1033/1783/418 +f 1037/1800/367 1035/1785/367 1050/1801/367 +f 1051/1802/426 1052/1803/427 1053/1804/426 +f 1054/1805/365 1055/1806/428 1056/1807/365 +f 1057/1808/427 1050/1809/365 1052/1803/427 +f 1058/1810/428 1053/1804/426 1055/1806/428 +f 1059/1811/429 1056/1807/365 1060/1812/429 +f 1046/1813/366 1036/1814/366 1061/1815/366 +f 1062/1816/419 1060/1812/429 1034/1784/419 +f 1063/1817/428 1064/1818/365 1065/1819/428 +f 1066/1820/429 1067/1821/370 1068/1822/429 +f 1069/1823/430 1070/1824/372 1071/1825/430 +f 1072/1826/431 1073/1827/371 1074/1828/431 +f 1075/1829/371 1065/1819/428 1073/1827/371 +f 1076/1830/365 1068/1822/429 1064/1818/365 +f 1077/1831/370 1071/1825/430 1067/1832/370 +f 1078/1833/372 1074/1828/431 1070/1824/372 +f 1063/1834/367 1075/1835/367 1077/1836/367 +f 954/1662/395 1079/1837/431 955/1663/395 +f 1079/1837/431 787/1838/372 1080/1839/372 +f 786/1840/430 956/1665/402 1081/1841/430 +f 1080/1842/372 786/1840/430 1081/1841/430 +f 1025/1843/372 1082/1844/372 1083/1845/372 +f 1084/1846/372 1085/1847/372 1086/1848/372 +f 1024/1849/372 957/1850/372 1082/1844/372 +f 1087/1851/372 1088/1852/372 1089/1853/372 +f 1090/1854/377 1091/1855/432 1092/1856/433 +f 1093/1857/375 827/1858/434 1094/1859/434 +f 1095/1860/435 1088/1861/373 1085/1862/435 +f 1088/1861/373 1096/1863/374 1089/1864/436 +f 1097/1865/437 824/1866/375 1093/1857/375 +f 1085/1862/435 1098/1867/414 1095/1860/435 +f 1099/1868/372 1098/1869/372 1093/1870/372 +f 1029/1871/372 1025/1843/372 1087/1851/372 +f 1088/1852/372 1025/1843/372 1083/1845/372 +f 1029/1872/371 1092/1856/371 1031/1873/371 +f 1030/1874/365 1092/1856/365 1100/1875/365 +f 1027/1876/365 1100/1875/365 1101/1877/365 +f 791/1878/365 1027/1876/365 1101/1877/365 +f 1092/1879/433 1102/1880/438 1100/1881/438 +f 1101/1882/439 795/1468/439 791/1464/439 +f 1100/1881/438 1103/1883/440 1101/1882/440 +f 1083/1884/441 1104/1885/442 1086/1886/442 +f 957/1667/443 1105/1887/443 1082/1888/443 +f 1086/1886/442 1106/1889/376 1084/1890/376 +f 1082/1888/444 1107/1891/441 1083/1884/441 +f 1108/1892/365 1106/1893/365 1109/1894/365 +f 1107/1895/365 1102/1896/365 1106/1893/365 +f 1107/1895/365 1103/1897/365 1102/1896/365 +f 795/1898/365 1105/1899/365 794/1900/365 +f 792/1901/445 1110/1902/367 1111/1903/376 +f 1112/1904/371 1111/1903/376 1113/1905/371 +f 792/1901/445 1024/1906/414 1114/1907/446 +f 1115/1908/366 1116/1909/391 990/1910/447 +f 798/1911/413 963/1912/387 796/1477/448 +f 810/1913/371 966/1914/377 965/1915/371 +f 962/1916/366 958/1670/374 815/1917/366 +f 811/1918/376 965/1915/371 964/1919/376 +f 809/1920/377 815/1917/366 966/1914/377 +f 804/1921/377 803/1922/449 805/1923/450 +f 797/1924/449 1117/1925/377 1115/1908/366 +f 813/1926/449 1115/1908/366 1118/1927/366 +f 1119/1928/377 813/1926/449 1118/1927/366 +f 1117/1925/377 806/1929/434 1113/1905/371 +f 807/1930/434 1119/1928/377 1112/1904/371 +f 1113/1905/371 807/1930/434 1112/1904/371 +f 801/1474/435 802/1475/435 796/1477/448 +f 800/1473/435 961/1931/387 812/1932/387 +f 812/1932/387 960/1933/367 808/1934/413 +f 811/1918/376 964/1919/376 798/1471/413 +f 1120/1935/365 1116/1936/365 1117/1937/365 +f 1121/1938/451 1122/1939/370 1123/1940/391 +f 1124/1941/452 1125/1942/367 1126/1943/387 +f 1127/1944/453 1128/1945/371 1129/1946/376 +f 1130/1947/454 1131/1948/366 1132/1949/377 +f 1133/1950/455 1123/1940/391 1131/1948/366 +f 1134/1951/456 1126/1943/387 1122/1952/370 +f 1135/1953/457 1129/1946/376 1125/1942/367 +f 1136/1954/458 1132/1949/377 1128/1945/371 +f 1137/1955/459 1136/1954/458 1127/1944/453 +f 1138/1956/460 1133/1950/455 1130/1947/454 +f 1139/1957/461 1121/1938/451 1133/1950/455 +f 1140/1958/462 1124/1941/452 1134/1951/456 +f 1135/1953/457 1137/1959/459 1127/1944/453 +f 1141/1960/463 1130/1947/454 1136/1954/458 +f 1142/1961/464 1134/1962/456 1121/1938/451 +f 1124/1941/452 1143/1963/465 1135/1953/457 +f 1144/1964/366 1142/1965/464 1139/1966/461 +f 1145/1967/370 1146/1968/466 1140/1969/462 +f 1147/1970/367 1137/1971/459 1143/1972/465 +f 1148/1973/371 1138/1974/460 1141/1975/463 +f 1149/1976/391 1140/1977/462 1142/1965/464 +f 1150/1978/387 1143/1972/465 1146/1968/466 +f 1151/1979/376 1141/1975/463 1137/1971/459 +f 1152/1980/377 1139/1966/461 1138/1974/460 +f 818/1981/467 1153/1982/366 1154/1983/366 +f 969/1984/370 1155/1985/391 970/1986/391 +f 1156/1987/376 1157/1988/367 1158/1989/367 +f 968/1990/367 1159/1991/468 1160/1992/367 +f 1158/1989/367 1161/1993/469 967/1994/469 +f 1154/1983/366 1162/1995/377 1163/1996/377 +f 968/1990/367 1164/1997/387 822/1998/387 +f 821/1999/366 1165/2000/470 820/2001/470 +f 970/1986/391 1166/2002/366 821/1999/366 +f 822/1998/387 1167/2003/370 969/2004/370 +f 1159/1991/468 967/1994/469 1161/1993/469 +f 820/2001/470 1168/2005/467 818/1981/467 +f 1169/2006/366 1170/2007/471 1171/2008/472 +f 1172/2009/473 1005/1740/393 1173/2010/474 +f 1173/2010/474 991/1726/382 1172/2009/473 +f 991/1726/382 1174/2011/393 1171/2008/472 +f 1174/2012/406 1175/2013/405 1169/2014/405 +f 1169/2014/405 1176/2015/396 1002/2016/396 +f 1002/2016/396 1177/2017/395 993/2018/395 +f 1173/2019/403 1178/2020/401 1179/2021/399 +f 994/2022/398 1180/2023/404 1005/2024/397 +f 993/2018/395 1181/2025/398 994/2022/398 +f 1180/2023/404 1173/2026/403 1005/2024/397 +f 1182/2027/366 1180/2028/366 1181/2029/366 +f 1179/2021/399 1183/2030/400 1174/2012/406 +f 1184/2031/428 1185/2032/365 1186/2033/428 +f 1187/2034/429 1188/2035/370 1189/2036/429 +f 1190/2037/430 1191/2038/372 1192/2039/430 +f 1193/2040/431 1194/2041/371 1195/2042/431 +f 1196/2043/371 1186/2033/428 1194/2041/371 +f 1197/2044/365 1189/2036/429 1185/2032/365 +f 1198/2045/370 1192/2039/430 1188/2046/370 +f 1199/2047/372 1195/2042/431 1191/2038/372 +f 1198/2048/367 1197/2049/367 1196/2050/367 +f 827/1858/434 1200/2051/449 1094/1859/434 +f 834/2052/434 1108/2053/375 1201/2054/434 +f 833/2055/375 1202/2056/437 1108/2053/375 +f 831/2057/475 1201/2054/434 1109/2058/449 +f 832/2059/476 825/2060/476 1084/1890/477 +f 1089/2061/436 826/2062/475 831/2063/475 +f 1001/2064/390 1203/2065/478 989/2066/380 +f 1000/2067/389 1204/2068/479 1001/2064/390 +f 1000/2067/389 1205/2069/480 1206/2070/481 +f 1004/2071/392 1205/2069/480 995/2072/385 +f 1172/2073/473 1207/2074/482 1004/2071/392 +f 990/2075/381 1208/2076/483 1172/2073/473 +f 1208/2076/483 990/2075/381 1209/2077/484 +f 987/2078/378 1203/2065/478 1210/2079/485 +f 987/2078/378 1211/2080/486 1007/2081/394 +f 1007/2081/394 1212/2082/487 1032/2083/417 +f 1023/2084/409 1212/2082/487 1213/2085/488 +f 1023/2084/409 1213/2085/488 1114/2086/489 +f 1213/2085/488 1214/2087/490 1114/2086/489 +f 1209/2088/371 1114/2089/371 1214/2090/371 +f 1213/2091/365 1210/2092/365 1205/2093/365 +f 818/1497/365 1154/2094/365 1215/2095/365 +f 1028/2096/365 1216/2097/365 1026/2098/365 +f 992/2099/365 991/2100/365 1118/2101/365 +f 1026/1769/412 1217/2102/491 1021/1764/407 +f 991/1726/382 1171/2008/472 1218/2103/492 +f 1118/2101/493 991/2100/382 1218/2104/492 +f 1219/2105/494 1220/2106/495 1221/2107/496 +f 1222/2108/497 1223/2109/498 1224/2110/499 +f 1225/2111/500 1226/2112/501 1220/2106/495 +f 1223/2109/498 1227/2113/502 1224/2110/499 +f 1228/2114/503 1229/2115/496 1226/2116/501 +f 1227/2113/502 1230/2117/504 1231/2118/505 +f 1232/2119/494 1233/2120/495 1229/2115/496 +f 1234/2121/506 1235/2122/506 1236/2123/506 +f 1231/2118/505 1237/2124/507 1238/2125/507 +f 1239/2126/500 1240/2127/501 1233/2120/495 +f 1241/2128/508 1242/2129/509 1235/2122/510 +f 1237/2124/507 1243/2130/511 1238/2125/507 +f 1244/2131/512 1240/2127/501 1245/2132/513 +f 1246/2133/514 1247/2134/501 1242/2129/509 +f 1248/2135/511 1249/2136/372 1243/2130/511 +f 1250/2137/515 1251/2138/516 1245/2132/517 +f 1252/2139/503 1221/2107/496 1247/2140/501 +f 1253/2141/518 1222/2108/497 1251/2138/519 +f 1242/2129/509 1254/2142/520 1235/2122/510 +f 1255/2143/521 1242/2129/509 1247/2134/501 +f 1221/2107/496 1256/2144/522 1247/2140/501 +f 1255/2143/521 1247/2140/501 1256/2144/522 +f 1257/2145/521 1220/2106/495 1226/2112/501 +f 1220/2106/495 1256/2144/522 1221/2107/496 +f 1258/2146/523 1256/2144/522 1220/2106/495 +f 1229/2115/496 1259/2147/522 1226/2116/501 +f 1226/2116/501 1259/2147/522 1257/2145/521 +f 1260/2148/521 1233/2120/495 1240/2127/501 +f 1233/2120/495 1259/2147/522 1229/2115/496 +f 1261/2149/523 1259/2147/522 1233/2120/495 +f 1244/2150/366 1262/2151/524 1260/2152/366 +f 1222/2108/497 1263/2153/525 1251/2138/519 +f 1262/2154/524 1251/2138/519 1263/2153/525 +f 1224/2110/499 1264/2155/526 1222/2108/497 +f 1263/2153/525 1222/2108/497 1264/2155/526 +f 1227/2113/502 1265/2156/527 1224/2110/499 +f 1264/2155/526 1224/2110/499 1265/2156/527 +f 1231/2118/505 1265/2156/527 1227/2113/502 +f 1262/2157/528 1244/2158/529 1245/2132/517 +f 1240/2127/501 1244/2131/512 1260/2148/521 +f 1259/2159/366 1261/2160/366 1257/2161/366 +f 1256/2162/366 1258/2163/366 1255/2164/366 +f 1260/2152/366 1262/2151/524 1261/2160/366 +f 1262/2151/524 1263/2165/525 1261/2160/366 +f 1261/2160/366 1263/2165/525 1257/2161/366 +f 1257/2161/366 1263/2165/525 1258/2163/366 +f 1258/2163/366 1263/2165/525 1255/2164/366 +f 1263/2165/525 1264/2166/526 1255/2164/366 +f 1255/2164/366 1264/2166/526 1254/2167/366 +f 1264/2166/526 1265/2168/527 1254/2167/366 +f 1265/2168/527 1231/2169/366 1236/2170/366 +f 1235/2171/366 1254/2167/366 1236/2170/366 +f 1243/2172/366 1249/2173/366 1238/2174/366 +f 1249/2173/366 1266/2175/366 1238/2174/366 +f 1266/2175/366 1236/2170/366 1231/2169/366 +f 1238/2174/366 1266/2175/366 1231/2169/366 +f 1254/2167/366 1265/2168/527 1236/2170/366 +f 1251/2138/516 1262/2157/528 1245/2132/517 +f 1250/2137/530 1240/2127/501 1267/2176/503 +f 1268/2177/367 1269/2178/367 1270/2179/531 +f 1271/2180/367 1272/2181/367 1273/2182/367 +f 1274/2183/367 1275/2184/367 1276/2185/367 +f 1269/2178/367 1273/2182/367 1270/2179/531 +f 1270/2179/531 1273/2182/367 1277/2186/532 +f 1273/2182/367 1272/2181/367 1277/2186/532 +f 1272/2181/367 1276/2185/367 1277/2186/532 +f 1276/2185/367 1275/2184/367 1277/2186/532 +f 1277/2186/532 1275/2184/367 1278/2187/533 +f 1275/2184/367 1279/2188/367 1278/2187/533 +f 1278/2187/533 1279/2188/367 1280/2189/534 +f 1270/2190/535 1253/2141/536 1250/2137/515 +f 1270/2190/535 1250/2137/515 1268/2191/537 +f 1250/2137/530 1267/2176/503 1268/2192/538 +f 1268/2192/538 1267/2176/503 1269/2193/539 +f 1239/2126/500 1269/2193/539 1267/2176/503 +f 1273/2194/540 1239/2126/500 1271/2195/541 +f 1239/2126/500 1232/2119/494 1271/2195/541 +f 1232/2119/494 1228/2114/503 1271/2195/541 +f 1271/2195/541 1228/2114/503 1272/2196/539 +f 1225/2111/500 1272/2196/539 1228/2197/503 +f 1276/2198/540 1225/2111/500 1274/2199/541 +f 1225/2111/500 1219/2105/494 1274/2199/541 +f 1219/2105/494 1252/2139/503 1274/2199/541 +f 1274/2199/541 1252/2139/503 1275/2200/539 +f 1246/2133/514 1275/2200/539 1252/2201/503 +f 1246/2133/514 1241/2128/508 1279/2202/542 +f 1270/2203/531 1277/2204/532 1253/2141/518 +f 1253/2141/518 1277/2204/532 1281/2205/543 +f 1277/2204/532 1278/2206/533 1281/2205/543 +f 1281/2205/543 1278/2206/533 1223/2109/498 +f 1278/2206/533 1280/2207/534 1223/2109/498 +f 1223/2109/498 1280/2207/534 1282/2208/544 +f 1230/2117/504 1282/2208/544 1280/2207/534 +f 1241/2209/367 1234/2210/367 1279/2188/367 +f 1279/2188/367 1234/2210/367 1280/2189/534 +f 1280/2189/534 1234/2210/367 1230/2211/367 +f 1234/2210/367 1283/2212/367 1230/2211/367 +f 1230/2211/367 1283/2212/367 1237/2213/367 +f 1248/2214/367 1237/2213/367 1284/2215/367 +f 1284/2215/367 1237/2213/367 1283/2212/367 +f 856/1538/545 838/1520/546 837/1519/545 +f 850/1532/547 844/1526/548 842/1524/547 +f 853/1535/546 840/1522/549 838/1520/546 +f 857/1539/365 837/1519/545 836/1518/365 +f 848/1530/548 845/1527/550 844/1526/548 +f 851/1533/549 842/1524/547 840/1522/549 +f 835/1517/551 858/2216/372 971/1691/372 +f 972/1692/552 855/2217/551 835/1517/551 +f 839/2218/553 854/2219/552 972/1692/552 +f 849/2220/554 839/2218/553 841/2221/554 +f 846/2222/555 841/2221/554 843/2223/555 +f 974/2224/556 843/2223/555 973/2225/556 +f 1118/2101/493 1218/2104/492 1285/2226/557 +f 1112/2227/558 1286/2228/559 1287/2229/560 +f 1286/2228/559 1112/2227/558 1288/2230/561 +f 1285/2226/557 1288/2230/561 1112/2227/558 +f 1112/2227/558 1119/2231/562 1285/2226/557 +f 1118/2101/493 1285/2226/557 1119/2231/562 +f 1026/2098/412 1216/2097/563 1217/2232/491 +f 1287/2229/560 1286/2228/559 1216/2097/563 +f 1217/2232/491 1216/2097/563 1286/2228/559 +f 1289/2233/564 1163/1996/377 1162/1995/377 +f 1156/1987/376 1290/2234/565 1291/2235/376 +f 1290/2236/372 1289/2237/372 1161/2238/372 +f 1292/2239/365 1293/2240/365 1294/2241/365 +f 1295/2242/367 1296/2243/387 1297/2244/367 +f 1298/2245/377 1292/2239/371 1299/2246/377 +f 1300/2247/391 1301/2248/366 1302/2249/391 +f 1303/2250/387 1304/2251/566 1296/2252/387 +f 1305/2253/371 1306/2254/376 1292/2239/371 +f 1307/2255/566 1308/2256/565 1304/2257/566 +f 1309/2258/376 1297/2244/367 1306/2254/376 +f 1310/2259/567 1302/2249/391 1311/2260/567 +f 1312/2261/366 1299/2246/377 1301/2248/366 +f 1313/2262/367 1314/2263/376 1315/2264/367 +f 1215/2265/564 1310/2259/567 1311/2260/567 +f 1306/2254/365 1316/2266/365 1293/2267/365 +f 1296/2243/365 1316/2268/365 1297/2244/365 +f 1292/2239/365 1317/2269/365 1299/2246/365 +f 1299/2246/365 1315/2270/365 1301/2248/365 +f 1301/2248/365 1314/2271/365 1302/2249/365 +f 1311/2272/365 1314/2273/365 1318/2274/365 +f 1304/2275/365 1319/2276/365 1296/2243/365 +f 1318/2277/365 1304/2278/365 1308/2279/365 +f 1320/2280/371 1319/2281/377 1318/2282/371 +f 1321/2283/366 1293/2284/391 1316/2285/366 +f 1322/2286/370 1317/2287/387 1294/2288/370 +f 1323/2289/376 1318/2290/371 1314/2263/376 +f 1324/2291/377 1316/2285/366 1319/2281/377 +f 1325/2292/391 1294/2288/370 1293/2284/391 +f 1326/2293/387 1315/2264/367 1317/2287/387 +f 1326/2294/372 1305/2253/372 1298/2245/372 +f 1313/2295/372 1298/2245/372 1312/2261/372 +f 1323/2296/372 1312/2261/372 1300/2247/372 +f 1305/2253/372 1325/2297/372 1309/2258/372 +f 1309/2258/372 1321/2298/372 1295/2242/372 +f 1321/2299/372 1303/2300/372 1295/2242/372 +f 1310/2301/372 1323/2302/372 1300/2247/372 +f 1324/2303/372 1307/2304/372 1303/2300/372 +f 1320/2305/372 1310/2306/372 1289/2237/372 +f 883/2307/568 891/2308/569 875/2309/569 +f 889/2310/371 976/2311/428 881/2312/371 +f 980/2313/431 881/2312/371 880/2314/431 +f 882/2315/371 885/2316/431 978/2317/431 +f 977/2318/428 886/2319/371 882/2315/371 +f 883/2307/568 885/2316/431 884/2320/568 +f 980/2313/431 873/2321/568 892/2322/568 +f 871/2323/570 888/2324/428 887/2325/570 +f 979/2326/428 874/2327/570 890/2328/570 +f 896/2329/571 874/2327/570 876/1563/571 +f 892/2322/568 872/2330/569 894/2331/569 +f 871/2323/570 893/2332/571 878/1565/571 +f 924/2333/371 905/2334/449 923/2335/449 +f 902/1590/366 923/2335/449 905/2334/449 +f 921/2336/437 981/1711/367 903/2337/437 +f 921/2336/437 906/2338/371 924/2333/371 +f 912/2339/371 936/2340/376 908/2341/376 +f 910/2342/366 937/2343/377 911/2344/377 +f 913/2345/370 938/2346/391 915/2347/391 +f 909/2348/367 935/2349/387 914/2350/387 +f 908/2341/376 940/2351/367 909/2348/367 +f 911/2344/377 931/2352/371 912/2353/371 +f 915/2347/391 939/2354/366 910/2342/366 +f 914/2350/387 934/2355/370 913/2345/370 +f 919/2356/572 926/1621/573 982/2357/573 +f 917/2358/574 926/1621/573 929/2359/574 +f 927/1622/572 920/2360/575 925/2361/575 +f 1021/2362/372 1217/2363/372 1218/2364/372 +f 945/2365/576 984/2366/577 942/2367/577 +f 944/2368/578 985/2369/579 983/2370/579 +f 985/2369/579 945/2365/576 983/2370/579 +f 990/1910/447 1327/2371/370 1328/2372/370 +f 1328/2372/370 1120/2373/387 1114/2374/446 +f 1329/2375/431 1330/2376/372 1331/2377/431 +f 1332/2378/430 1333/2379/370 1334/2380/430 +f 1335/2381/429 1336/2382/365 1337/2383/429 +f 1338/2384/428 1339/2385/371 1340/2386/428 +f 1341/2387/371 1331/2377/431 1339/2385/371 +f 1342/2388/372 1334/2380/430 1330/2376/372 +f 1343/2389/370 1337/2383/429 1333/2390/370 +f 1344/2391/365 1340/2386/428 1336/2382/365 +f 1329/2392/366 1341/2393/366 1343/2394/366 +f 987/1722/378 998/1733/387 988/1723/379 +f 990/1725/381 1172/2009/473 991/1726/382 +f 987/1722/378 1007/1742/394 996/1731/386 +f 997/1732/386 1022/1765/408 998/1733/387 +f 987/1722/378 996/1731/386 998/1733/387 +f 999/1734/388 1003/1738/391 1000/1735/389 +f 995/1730/385 1000/1735/389 993/1728/384 +f 1000/1735/389 1003/1738/391 993/1728/384 +f 1003/1738/391 1170/2007/471 1002/1737/384 +f 1004/1739/392 995/1730/385 994/1729/366 +f 988/1723/379 999/1734/388 1001/1736/390 +f 996/1743/395 1017/1756/395 1008/1744/396 +f 1009/1746/397 1016/1755/404 1010/1747/398 +f 1011/1749/399 1019/1758/406 1012/1750/400 +f 1011/1749/399 1013/1751/401 1014/1752/402 +f 1015/1754/403 1014/2395/402 1016/1755/404 +f 1006/1748/398 1010/1747/398 1017/1756/395 +f 1018/1757/405 1012/1750/400 1019/1758/406 +f 997/1745/396 1008/1744/396 1018/1757/405 +f 1008/1762/367 1017/2396/367 1014/2397/367 +f 1017/2396/367 1010/2398/367 1014/2397/367 +f 1010/2398/367 1016/2399/367 1014/2397/367 +f 1014/2397/367 1013/2400/367 1008/1762/367 +f 1013/2400/367 1012/1760/367 1008/1762/367 +f 1022/1765/408 997/1732/386 1020/1763/367 +f 1020/1763/367 1019/1777/416 1021/1764/407 +f 1023/1766/409 1114/2401/489 1024/1767/410 +f 1026/1769/412 1030/1778/411 1027/1770/410 +f 793/1772/413 1216/2402/367 1028/1773/414 +f 1032/1782/417 1023/1766/409 1009/1776/416 +f 1023/1766/409 1025/1768/411 1009/1776/416 +f 1029/1775/415 1015/1781/415 1009/1776/416 +f 1019/1777/416 1011/1779/415 1026/1769/412 +f 1030/1778/411 1026/1769/412 1011/1779/415 +f 1015/1781/415 1029/1775/415 1031/1780/415 +f 1032/1782/417 1009/1776/416 1006/1741/367 +f 1033/1783/418 1062/1816/419 1034/1784/419 +f 1036/1786/420 1046/1796/421 1037/1787/421 +f 1039/1789/422 1036/1786/420 1038/1788/420 +f 1041/1791/423 1049/1799/424 1042/1792/424 +f 1044/1794/370 1039/1789/422 1040/1790/422 +f 1046/1796/421 1048/1798/425 1047/1797/425 +f 1048/1798/425 1041/1791/423 1043/1793/423 +f 1035/1785/418 1042/1792/424 1049/1799/424 +f 1042/2403/367 1035/1785/367 1043/2404/367 +f 1035/1785/367 1034/1784/367 1052/2405/367 +f 1034/1784/367 1060/2406/367 1056/2407/367 +f 1056/2407/367 1055/2408/367 1053/2409/367 +f 1052/2405/367 1050/1801/367 1035/1785/367 +f 1050/1801/367 998/2410/367 1040/2411/367 +f 1056/2407/367 1053/2409/367 1034/1784/367 +f 1053/2409/367 1052/2405/367 1034/1784/367 +f 1047/2412/367 1043/2404/367 1035/1785/367 +f 1047/2412/367 1035/1785/367 1037/1800/367 +f 1050/1801/367 1040/2411/367 1038/2413/367 +f 998/2410/367 1045/2414/367 1040/2411/367 +f 1050/1801/367 1038/2413/367 1037/1800/367 +f 1051/1802/426 1057/1808/427 1052/1803/427 +f 1054/1805/365 1058/1810/428 1055/1806/428 +f 1057/1808/427 1061/2415/365 1050/1809/365 +f 1058/1810/428 1051/1802/426 1053/1804/426 +f 1059/1811/429 1054/1805/365 1056/1807/365 +f 1059/2416/366 1062/1816/366 1054/2417/366 +f 1062/1816/366 1033/1783/366 1057/2418/366 +f 1054/2417/366 1062/1816/366 1051/2419/366 +f 1033/1783/366 1049/2420/366 1041/2421/366 +f 1033/1783/366 1041/2421/366 1048/2422/366 +f 1051/2419/366 1058/2423/366 1054/2417/366 +f 1003/2424/366 1061/1815/366 1039/2425/366 +f 1061/1815/366 1057/2418/366 1033/1783/366 +f 1039/2425/366 1061/1815/366 1036/1814/366 +f 1057/2418/366 1051/2419/366 1062/1816/366 +f 1033/1783/366 1048/2422/366 1046/1813/366 +f 1033/1783/366 1046/1813/366 1061/1815/366 +f 1039/2425/366 1044/2426/366 1003/2424/366 +f 1062/1816/419 1059/1811/429 1060/1812/429 +f 1063/1817/428 1076/1830/365 1064/1818/365 +f 1066/1820/429 1077/2427/370 1067/1821/370 +f 1069/1823/430 1078/1833/372 1070/1824/372 +f 1072/1826/431 1075/1829/371 1073/1827/371 +f 1075/1829/371 1063/1817/428 1065/1819/428 +f 1076/1830/365 1066/1820/429 1068/1822/429 +f 1077/1831/370 1069/1823/430 1071/1825/430 +f 1078/1833/372 1072/1826/431 1074/1828/431 +f 1075/1835/367 1072/2428/367 1077/1836/367 +f 1072/2428/367 1078/2429/367 1077/1836/367 +f 1078/2429/367 1069/2430/367 1077/1836/367 +f 1077/1836/367 1066/2431/367 1076/2432/367 +f 1076/2432/367 1063/1834/367 1077/1836/367 +f 954/1662/395 953/2433/431 1079/1837/431 +f 1079/1837/431 953/2433/431 787/1838/372 +f 786/1840/430 785/1666/402 956/1665/402 +f 1080/1842/372 787/2434/372 786/1840/430 +f 1025/1843/372 1024/1849/372 1082/1844/372 +f 1024/1849/372 792/2435/372 957/1850/372 +f 1087/2436/377 1089/2061/377 1092/1856/433 +f 1089/2061/377 1090/1854/377 1092/1856/433 +f 1093/1857/375 824/1866/375 827/1858/434 +f 1095/1860/435 1099/2437/373 1088/1861/373 +f 1088/1861/373 1099/2437/373 1096/1863/374 +f 1097/1865/437 825/2438/476 824/1866/375 +f 1085/1862/435 1084/1890/477 1098/1867/414 +f 1093/1870/372 1094/2439/372 1200/2440/372 +f 1200/2440/372 1096/2441/372 1099/1868/372 +f 1099/1868/372 1095/2442/372 1098/1869/372 +f 1098/1869/372 1097/2443/372 1093/1870/372 +f 1093/1870/372 1200/2440/372 1099/1868/372 +f 1083/1845/372 1086/1848/372 1085/1847/372 +f 1088/1852/372 1087/1851/372 1025/1843/372 +f 1083/1845/372 1085/1847/372 1088/1852/372 +f 1029/1872/371 1087/2436/371 1092/1856/371 +f 1030/1874/365 1031/1873/365 1092/1856/365 +f 1027/1876/365 1030/1874/365 1100/1875/365 +f 791/1878/365 793/2444/365 1027/1876/365 +f 1092/1879/433 1091/2445/432 1102/1880/438 +f 1101/1882/439 1103/1883/439 795/1468/439 +f 1100/1881/438 1102/1880/438 1103/1883/440 +f 1083/1884/441 1107/1891/441 1104/1885/442 +f 957/1667/443 794/1467/443 1105/1887/443 +f 1086/1886/442 1104/1885/442 1106/1889/376 +f 1082/1888/444 1105/1887/444 1107/1891/441 +f 1109/1894/365 1201/2446/365 1108/1892/365 +f 1108/1892/365 1202/2447/365 1106/1893/365 +f 1106/1893/365 1090/2448/365 1109/1894/365 +f 1091/2449/365 1090/2448/365 1102/1896/365 +f 1090/2448/365 1106/1893/365 1102/1896/365 +f 1106/1893/365 1104/2450/365 1107/1895/365 +f 1107/1895/365 1105/1899/365 1103/1897/365 +f 795/1898/365 1103/1897/365 1105/1899/365 +f 1111/1903/376 1287/2451/376 792/1901/445 +f 1287/2451/376 1216/2402/367 793/1772/413 +f 793/1772/413 792/1901/413 1287/2451/376 +f 1112/1904/371 1287/2451/376 1111/1903/376 +f 1120/2452/387 1110/1902/367 1114/1907/446 +f 1110/1902/367 792/1901/445 1114/1907/446 +f 992/2453/374 1118/1927/366 990/1910/447 +f 1118/1927/366 1115/1908/366 990/1910/447 +f 798/1911/413 817/2454/367 963/1912/387 +f 810/1913/371 809/1920/377 966/1914/377 +f 962/1916/366 799/1472/374 958/1670/374 +f 811/1918/376 810/1913/371 965/1915/371 +f 809/1920/377 962/1916/366 815/1917/366 +f 804/1921/377 1117/1925/377 803/1922/449 +f 797/1924/449 803/1922/449 1117/1925/377 +f 813/1926/449 797/1924/449 1115/1908/366 +f 1119/1928/377 814/2455/377 813/1926/449 +f 1117/1925/377 804/1921/377 806/1929/434 +f 807/1930/434 814/2455/377 1119/1928/377 +f 1113/1905/371 806/1929/434 807/1930/434 +f 796/1477/448 963/1912/387 816/1669/435 +f 816/1669/435 801/1474/435 796/1477/448 +f 800/1473/435 959/1671/435 961/1931/387 +f 812/1932/387 961/1931/387 960/1933/367 +f 817/2456/367 798/1471/413 964/1919/376 +f 798/1471/413 808/1486/413 811/1918/376 +f 808/1486/413 960/2457/367 811/1918/376 +f 1111/2458/365 1110/2459/365 1120/1935/365 +f 1120/1935/365 1327/2460/365 1116/1936/365 +f 1116/1936/365 1115/2461/365 1117/1937/365 +f 1117/1937/365 1113/2462/365 1111/2458/365 +f 1111/2458/365 1120/1935/365 1117/1937/365 +f 1121/1938/451 1134/1962/456 1122/1939/370 +f 1124/1941/452 1135/1953/457 1125/1942/367 +f 1127/1944/453 1136/1954/458 1128/1945/371 +f 1130/1947/454 1133/1950/455 1131/1948/366 +f 1133/1950/455 1121/1938/451 1123/1940/391 +f 1134/1951/456 1124/1941/452 1126/1943/387 +f 1135/1953/457 1127/1944/453 1129/1946/376 +f 1136/1954/458 1130/1947/454 1132/1949/377 +f 1137/1955/459 1141/2463/463 1136/1954/458 +f 1138/1956/460 1139/2464/461 1133/1950/455 +f 1139/1957/461 1142/2465/464 1121/1938/451 +f 1140/1958/462 1146/2466/466 1124/1941/452 +f 1135/1953/457 1143/2467/465 1137/1959/459 +f 1141/1960/463 1138/2468/460 1130/1947/454 +f 1142/1961/464 1140/2469/462 1134/1962/456 +f 1124/1941/452 1146/2470/466 1143/1963/465 +f 1144/1964/366 1149/1976/391 1142/1965/464 +f 1145/1967/370 1150/1978/387 1146/1968/466 +f 1147/1970/367 1151/1979/376 1137/1971/459 +f 1148/1973/371 1152/1980/377 1138/1974/460 +f 1149/1976/391 1145/2471/370 1140/1977/462 +f 1150/1978/387 1147/1970/367 1143/1972/465 +f 1151/1979/376 1148/1973/371 1141/1975/463 +f 1152/1980/377 1144/1964/366 1139/1966/461 +f 818/1981/467 1168/2005/467 1153/1982/366 +f 969/1984/370 1167/2472/370 1155/1985/391 +f 1156/1987/376 1291/2235/376 1157/1988/367 +f 968/1990/367 819/2473/468 1159/1991/468 +f 1158/1989/367 1157/1988/367 1161/1993/469 +f 1154/1983/366 1153/1982/366 1162/1995/377 +f 968/1990/367 1160/1992/367 1164/1997/387 +f 821/1999/366 1166/2002/366 1165/2000/470 +f 970/1986/391 1155/1985/391 1166/2002/366 +f 822/1998/387 1164/1997/387 1167/2003/370 +f 1159/1991/468 819/2473/468 967/1994/469 +f 820/2001/470 1165/2000/470 1168/2005/467 +f 1171/2008/472 1174/2011/393 1169/2006/366 +f 1169/2006/366 1002/1737/384 1170/2007/471 +f 1172/2009/473 1004/1739/392 1005/1740/393 +f 1173/2010/474 1179/2474/474 991/1726/382 +f 991/1726/382 1179/2474/474 1174/2011/393 +f 1174/2012/406 1183/2030/400 1175/2013/405 +f 1169/2014/405 1175/2013/405 1176/2015/396 +f 1002/2016/396 1176/2015/396 1177/2017/395 +f 1173/2019/403 1182/2475/402 1178/2020/401 +f 994/2022/398 1181/2025/398 1180/2023/404 +f 993/2018/395 1177/2017/395 1181/2025/398 +f 1180/2023/404 1182/2476/402 1173/2026/403 +f 1181/2029/366 1177/2477/366 1182/2027/366 +f 1177/2477/366 1176/2478/366 1182/2027/366 +f 1176/2478/366 1175/2479/366 1183/2480/366 +f 1183/2480/366 1178/2481/366 1176/2478/366 +f 1178/2481/366 1182/2027/366 1176/2478/366 +f 1179/2021/399 1178/2020/401 1183/2030/400 +f 1184/2031/428 1197/2044/365 1185/2032/365 +f 1187/2034/429 1198/2482/370 1188/2035/370 +f 1190/2037/430 1199/2047/372 1191/2038/372 +f 1193/2040/431 1196/2043/371 1194/2041/371 +f 1196/2043/371 1184/2031/428 1186/2033/428 +f 1197/2044/365 1187/2034/429 1189/2036/429 +f 1198/2045/370 1190/2037/430 1192/2039/430 +f 1199/2047/372 1193/2040/431 1195/2042/431 +f 1196/2050/367 1193/2483/367 1199/2484/367 +f 1199/2484/367 1190/2485/367 1198/2048/367 +f 1198/2048/367 1187/2486/367 1197/2049/367 +f 1197/2049/367 1184/2487/367 1196/2050/367 +f 1196/2050/367 1199/2484/367 1198/2048/367 +f 827/1858/434 826/2488/475 1200/2051/449 +f 834/2052/434 833/2055/375 1108/2053/375 +f 833/2055/375 832/2059/476 1202/2056/437 +f 831/2057/475 834/2052/434 1201/2054/434 +f 825/2060/476 1097/1865/437 1098/1867/414 +f 1084/1890/477 1106/1889/367 832/2059/476 +f 1106/1889/367 1202/2056/437 832/2059/476 +f 825/2060/476 1098/1867/414 1084/1890/477 +f 1089/2061/436 1096/2489/374 826/2062/475 +f 1096/2489/374 1200/2051/449 826/2062/475 +f 1109/2058/449 1090/1854/366 831/2063/475 +f 1090/1854/366 1089/2061/436 831/2063/475 +f 1001/2064/390 1204/2068/479 1203/2065/478 +f 1000/2067/389 1206/2070/481 1204/2068/479 +f 1000/2067/389 995/2072/385 1205/2069/480 +f 1004/2071/392 1207/2074/482 1205/2069/480 +f 1172/2073/473 1208/2076/483 1207/2074/482 +f 987/2078/378 989/2066/380 1203/2065/478 +f 987/2078/378 1210/2079/485 1211/2080/486 +f 1007/2081/394 1211/2080/486 1212/2082/487 +f 1023/2084/409 1032/2083/417 1212/2082/487 +f 1209/2088/371 990/2490/371 1114/2089/371 +f 1208/2491/365 1209/2088/365 1214/2090/365 +f 1213/2091/365 1212/2492/365 1210/2092/365 +f 1212/2492/365 1211/2493/365 1210/2092/365 +f 1208/2491/365 1214/2090/365 1213/2091/365 +f 1205/2093/365 1207/2494/365 1208/2491/365 +f 1204/2495/365 1206/2496/365 1205/2093/365 +f 1210/2092/365 1203/2497/365 1205/2093/365 +f 1203/2497/365 1204/2495/365 1205/2093/365 +f 1205/2093/365 1208/2491/365 1213/2091/365 +f 1154/2094/365 1163/2498/365 1215/2095/365 +f 1215/2095/365 1308/2279/365 967/1686/365 +f 1308/2279/365 1156/2499/365 1158/2500/365 +f 967/1686/365 1308/2279/365 1158/2500/365 +f 967/1686/365 818/1497/365 1215/2095/365 +f 1219/2105/494 1225/2111/500 1220/2106/495 +f 1222/2108/497 1281/2205/543 1223/2109/498 +f 1225/2111/500 1228/2197/503 1226/2112/501 +f 1223/2109/498 1282/2208/544 1227/2113/502 +f 1228/2114/503 1232/2119/494 1229/2115/496 +f 1227/2113/502 1282/2208/544 1230/2117/504 +f 1232/2119/494 1239/2126/500 1233/2120/495 +f 1234/2121/506 1241/2128/506 1235/2122/506 +f 1231/2118/505 1230/2117/504 1237/2124/507 +f 1239/2126/500 1267/2176/503 1240/2127/501 +f 1241/2128/508 1246/2133/514 1242/2129/509 +f 1237/2124/507 1248/2135/511 1243/2130/511 +f 1246/2133/514 1252/2201/503 1247/2134/501 +f 1248/2135/511 1284/2501/372 1249/2136/372 +f 1250/2137/515 1253/2141/536 1251/2138/516 +f 1252/2139/503 1219/2105/494 1221/2107/496 +f 1253/2141/518 1281/2205/543 1222/2108/497 +f 1255/2143/521 1254/2142/520 1242/2129/509 +f 1257/2145/521 1258/2146/523 1220/2106/495 +f 1260/2148/521 1261/2149/523 1233/2120/495 +f 1250/2137/530 1245/2132/513 1240/2127/501 +f 1239/2126/500 1273/2194/540 1269/2193/539 +f 1225/2111/500 1276/2198/540 1272/2196/539 +f 1246/2133/514 1279/2202/542 1275/2200/539 +f 856/1538/545 853/1535/546 838/1520/546 +f 850/1532/547 848/1530/548 844/1526/548 +f 853/1535/546 851/1533/549 840/1522/549 +f 857/1539/365 856/1538/545 837/1519/545 +f 848/1530/548 847/1529/550 845/1527/550 +f 851/1533/549 850/1532/547 842/1524/547 +f 835/1517/551 855/2217/551 858/2216/372 +f 972/1692/552 854/2219/552 855/2217/551 +f 839/2218/553 852/2502/553 854/2219/552 +f 849/2220/554 852/2502/553 839/2218/553 +f 846/2222/555 849/2220/554 841/2221/554 +f 974/2224/556 846/2222/555 843/2223/555 +f 1289/2233/564 1215/2265/564 1163/1996/377 +f 1156/1987/376 1308/2256/565 1290/2234/565 +f 1289/2237/372 1162/2503/372 1153/2504/372 +f 1153/2504/372 1168/2505/372 1289/2237/372 +f 1168/2505/372 1161/2238/372 1289/2237/372 +f 1161/2238/372 1157/2506/372 1290/2236/372 +f 1157/2506/372 1291/2507/372 1290/2236/372 +f 1292/2239/365 1306/2254/365 1293/2240/365 +f 1295/2242/367 1303/2300/387 1296/2243/387 +f 1298/2245/377 1305/2253/371 1292/2239/371 +f 1300/2247/391 1312/2261/366 1301/2248/366 +f 1303/2250/387 1307/2508/566 1304/2251/566 +f 1305/2253/371 1309/2258/376 1306/2254/376 +f 1307/2255/566 1290/2234/565 1308/2256/565 +f 1309/2258/376 1295/2242/367 1297/2244/367 +f 1310/2259/567 1300/2247/391 1302/2249/391 +f 1312/2261/366 1298/2245/377 1299/2246/377 +f 1313/2262/367 1323/2289/376 1314/2263/376 +f 1215/2265/564 1289/2233/564 1310/2259/567 +f 1306/2254/365 1297/2244/365 1316/2266/365 +f 1296/2243/365 1319/2509/365 1316/2268/365 +f 1292/2239/365 1294/2510/365 1317/2269/365 +f 1299/2246/365 1317/2511/365 1315/2270/365 +f 1301/2248/365 1315/2512/365 1314/2271/365 +f 1311/2272/365 1302/2249/365 1314/2273/365 +f 1304/2275/365 1318/2513/365 1319/2276/365 +f 1308/2279/365 1215/2095/365 1318/2277/365 +f 1215/2095/365 1311/2514/365 1318/2277/365 +f 1320/2280/371 1324/2291/377 1319/2281/377 +f 1321/2283/366 1325/2292/391 1293/2284/391 +f 1322/2286/370 1326/2293/387 1317/2287/387 +f 1323/2289/376 1320/2515/371 1318/2290/371 +f 1324/2291/377 1321/2283/366 1316/2285/366 +f 1325/2292/391 1322/2286/370 1294/2288/370 +f 1326/2293/387 1313/2262/367 1315/2264/367 +f 1326/2294/372 1322/2516/372 1305/2253/372 +f 1313/2295/372 1326/2517/372 1298/2245/372 +f 1323/2296/372 1313/2518/372 1312/2261/372 +f 1305/2253/372 1322/2519/372 1325/2297/372 +f 1309/2258/372 1325/2520/372 1321/2298/372 +f 1321/2299/372 1324/2521/372 1303/2300/372 +f 1310/2301/372 1320/2522/372 1323/2302/372 +f 1324/2303/372 1320/2523/372 1307/2304/372 +f 1289/2237/372 1290/2236/372 1320/2305/372 +f 1290/2236/372 1307/2524/372 1320/2305/372 +f 883/2307/568 884/2320/568 891/2308/569 +f 889/2310/371 888/2324/428 976/2311/428 +f 980/2313/431 889/2310/371 881/2312/371 +f 882/2315/371 886/2319/371 885/2316/431 +f 977/2318/428 979/2326/428 886/2319/371 +f 883/2307/568 978/2317/431 885/2316/431 +f 980/2313/431 880/2314/431 873/2321/568 +f 871/2323/570 976/2311/428 888/2324/428 +f 979/2326/428 977/2318/428 874/2327/570 +f 896/2329/571 890/2328/570 874/2327/570 +f 892/2322/568 873/2321/568 872/2330/569 +f 871/2323/570 887/2325/570 893/2332/571 +f 924/2333/371 906/2338/371 905/2334/449 +f 902/1590/366 901/1589/366 923/2335/449 +f 921/2336/437 898/1586/367 981/1711/367 +f 921/2336/437 903/2337/437 906/2338/371 +f 912/2339/371 931/2525/371 936/2340/376 +f 910/2342/366 939/2354/366 937/2343/377 +f 913/2345/370 934/2355/370 938/2346/391 +f 909/2348/367 940/2351/367 935/2349/387 +f 908/2341/376 936/2340/376 940/2351/367 +f 911/2344/377 937/2343/377 931/2352/371 +f 915/2347/391 938/2346/391 939/2354/366 +f 914/2350/387 935/2349/387 934/2355/370 +f 919/2356/572 927/1622/572 926/1621/573 +f 917/2358/574 982/2357/573 926/1621/573 +f 927/1622/572 919/2356/572 920/2360/575 +f 1171/2526/372 1170/2527/372 1022/2528/372 +f 1170/2527/372 1003/2529/372 998/2530/372 +f 1003/2529/372 1044/2531/372 1045/2532/372 +f 998/2530/372 1022/2528/372 1170/2527/372 +f 1022/2528/372 1021/2362/372 1171/2526/372 +f 1003/2529/372 1045/2532/372 998/2530/372 +f 1218/2364/372 1171/2526/372 1021/2362/372 +f 1288/2533/372 1285/2534/372 1286/2535/372 +f 1285/2534/372 1218/2364/372 1217/2363/372 +f 1217/2363/372 1286/2535/372 1285/2534/372 +f 945/2365/576 948/2536/576 984/2366/577 +f 944/2368/578 950/2537/578 985/2369/579 +f 985/2369/579 948/2536/576 945/2365/576 +f 990/1910/447 1116/1909/391 1327/2371/370 +f 1328/2372/370 1327/2371/370 1120/2373/387 +f 1329/2375/431 1342/2388/372 1330/2376/372 +f 1332/2378/430 1343/2538/370 1333/2379/370 +f 1335/2381/429 1344/2391/365 1336/2382/365 +f 1338/2384/428 1341/2387/371 1339/2385/371 +f 1341/2387/371 1329/2375/431 1331/2377/431 +f 1342/2388/372 1332/2378/430 1334/2380/430 +f 1343/2389/370 1335/2381/429 1337/2383/429 +f 1344/2391/365 1338/2384/428 1340/2386/428 +f 1341/2393/366 1338/2539/366 1343/2394/366 +f 1338/2539/366 1344/2540/366 1343/2394/366 +f 1344/2540/366 1335/2541/366 1343/2394/366 +f 1343/2394/366 1332/2542/366 1342/2543/366 +f 1342/2543/366 1329/2392/366 1343/2394/366 diff --git a/src/main/resources/assets/hbm/models/weapons/greasegun.obj b/src/main/resources/assets/hbm/models/weapons/greasegun.obj index fd439f5e1..666f8fc0e 100644 --- a/src/main/resources/assets/hbm/models/weapons/greasegun.obj +++ b/src/main/resources/assets/hbm/models/weapons/greasegun.obj @@ -1,6 +1,1914 @@ # Blender v2.79 (sub 0) OBJ File: 'greasegun.blend' # www.blender.org -o Cylinder +o Bullet +v 0.000000 -0.293931 1.531675 +v -0.078125 -0.313602 1.538834 +v -0.135317 -0.367344 1.558395 +v -0.156250 -0.440758 1.585115 +v -0.135317 -0.514171 1.611836 +v -0.078125 -0.567913 1.631396 +v 0.000000 -0.587584 1.638556 +v 0.078125 -0.567914 1.631396 +v 0.135316 -0.514171 1.611836 +v 0.156250 -0.440758 1.585115 +v 0.135316 -0.367344 1.558395 +v 0.078125 -0.313602 1.538834 +v 0.000000 -0.122921 2.001521 +v -0.078125 -0.142592 2.008681 +v -0.135317 -0.196334 2.028241 +v -0.156250 -0.269747 2.054962 +v -0.135317 -0.343161 2.081682 +v -0.078125 -0.396903 2.101243 +v 0.000000 -0.416574 2.108402 +v 0.078125 -0.396903 2.101243 +v 0.135316 -0.343161 2.081682 +v 0.156250 -0.269747 2.054962 +v 0.135316 -0.196334 2.028241 +v 0.078125 -0.142592 2.008681 +v 0.000000 -0.095498 2.191073 +v -0.058594 -0.110252 2.196443 +v -0.101488 -0.150559 2.211114 +v -0.117188 -0.205619 2.231154 +v -0.101488 -0.260679 2.251194 +v -0.058594 -0.300986 2.265865 +v 0.000000 -0.315739 2.271235 +v 0.058594 -0.300986 2.265865 +v 0.101487 -0.260679 2.251194 +v 0.117188 -0.205619 2.231154 +v 0.101487 -0.150559 2.211114 +v 0.058594 -0.110252 2.196443 +v 0.000000 -0.147536 2.276525 +v -0.019531 -0.152454 2.278315 +v -0.033830 -0.165889 2.283205 +v -0.039062 -0.184243 2.289885 +v -0.033830 -0.202596 2.296565 +v -0.019531 -0.216031 2.301455 +v 0.000000 -0.220949 2.303245 +v 0.019531 -0.216032 2.301455 +v 0.033829 -0.202596 2.296565 +v 0.039062 -0.184243 2.289885 +v 0.033829 -0.165889 2.283205 +v 0.019531 -0.152454 2.278315 +vt 0.676595 0.272573 +vt 0.683036 0.263897 +vt 0.689476 0.289927 +vt 0.686754 0.296278 +vt 0.676595 0.289927 +vt 0.683036 0.298603 +vt 0.679317 0.296278 +vt 0.675599 0.281250 +vt 0.679317 0.266222 +vt 0.686754 0.266222 +vt 0.689476 0.272573 +vt 0.690473 0.281250 +vt 0.636905 0.298611 +vt 0.660714 0.291667 +vt 0.660714 0.298611 +vt 0.636905 0.333333 +vt 0.660714 0.326389 +vt 0.660714 0.333333 +vt 0.636905 0.263889 +vt 0.660714 0.270833 +vt 0.636905 0.270833 +vt 0.636905 0.284722 +vt 0.636905 0.291667 +vt 0.636905 0.326389 +vt 0.660714 0.319444 +vt 0.636905 0.347222 +vt 0.660714 0.340278 +vt 0.660714 0.347222 +vt 0.636905 0.277778 +vt 0.660714 0.284722 +vt 0.636905 0.312500 +vt 0.636905 0.319444 +vt 0.636905 0.305556 +vt 0.660714 0.305556 +vt 0.636905 0.340278 +vt 0.660714 0.277778 +vt 0.660714 0.312500 +vt 0.669643 0.340278 +vt 0.669643 0.347222 +vt 0.669643 0.284722 +vt 0.669643 0.312500 +vt 0.669643 0.319444 +vt 0.669643 0.305556 +vt 0.669643 0.277778 +vt 0.669643 0.291667 +vt 0.669643 0.298611 +vt 0.669643 0.333333 +vt 0.660714 0.263889 +vt 0.669643 0.270833 +vt 0.669643 0.326389 +vt 0.675595 0.347222 +vt 0.675595 0.277778 +vt 0.675595 0.284722 +vt 0.675595 0.319444 +vt 0.675595 0.305556 +vt 0.675595 0.340278 +vt 0.675595 0.312500 +vt 0.675595 0.291667 +vt 0.675595 0.298611 +vt 0.675595 0.326389 +vt 0.675595 0.333333 +vt 0.675595 0.263889 +vt 0.675595 0.270833 +vt 0.676042 0.302196 +vt 0.681100 0.302196 +vt 0.678571 0.312365 +vt 0.669643 0.263889 +vt 0.677132 0.311457 +vt 0.676042 0.308915 +vt 0.675653 0.305556 +vt 0.677132 0.299654 +vt 0.678571 0.298746 +vt 0.680011 0.299654 +vt 0.681490 0.305556 +vt 0.681100 0.308915 +vt 0.680011 0.311457 +vn 0.0000 -0.3420 -0.9397 +vn -0.5000 0.8138 -0.2962 +vn -0.8616 0.5019 -0.0754 +vn -0.4975 0.8441 -0.1999 +vn 0.8660 -0.4698 0.1710 +vn 0.9949 0.0345 0.0948 +vn 0.8616 -0.4330 0.2649 +vn -0.0000 -0.9397 0.3420 +vn -0.4974 -0.7752 0.3894 +vn -0.5000 -0.8138 0.2962 +vn -1.0000 0.0000 -0.0000 +vn -0.8660 0.4698 -0.1710 +vn 1.0000 -0.0000 0.0000 +vn 0.8616 0.5019 -0.0754 +vn 0.4975 -0.7752 0.3894 +vn -0.0000 -0.9004 0.4350 +vn -0.8660 -0.4698 0.1710 +vn -0.9949 0.0345 0.0948 +vn 0.5000 0.8138 -0.2962 +vn 0.8660 0.4698 -0.1710 +vn 0.0000 0.9397 -0.3420 +vn -0.0000 0.9694 -0.2455 +vn 0.5000 -0.8138 0.2962 +vn -0.8616 -0.4330 0.2649 +vn 0.4975 0.8441 -0.1999 +vn 0.4331 -0.5339 0.7262 +vn 0.0000 -0.6430 0.7659 +vn -0.8661 0.1709 0.4697 +vn 0.4331 0.8758 0.2131 +vn 0.7501 0.5779 0.3215 +vn -0.0000 0.9848 0.1734 +vn -0.7501 -0.2360 0.6178 +vn -0.7501 0.5779 0.3215 +vn -0.4331 0.8758 0.2131 +vn 0.7501 -0.2360 0.6178 +vn -0.4331 -0.5339 0.7262 +vn 0.8661 0.1709 0.4697 +vn 0.0000 -0.0388 0.9992 +vn -0.3276 0.1389 0.9346 +vn -0.3782 0.3166 0.8699 +vn 0.3276 0.4943 0.8052 +vn 0.0000 0.6720 0.7405 +vn 0.1891 0.0088 0.9819 +vn 0.1891 0.6244 0.7579 +vn -0.3276 0.4943 0.8052 +vn -0.1891 0.6244 0.7579 +vn 0.3782 0.3166 0.8699 +vn 0.3276 0.1389 0.9346 +vn -0.1891 0.0088 0.9819 +s off +f 9/1/1 7/2/1 3/3/1 +f 3/3/1 2/4/1 11/5/1 +f 2/4/1 1/6/1 11/5/1 +f 1/6/1 12/7/1 11/5/1 +f 11/5/1 10/8/1 9/1/1 +f 9/1/1 8/9/1 7/2/1 +f 7/2/1 6/10/1 5/11/1 +f 5/11/1 4/12/1 7/2/1 +f 4/12/1 3/3/1 7/2/1 +f 11/5/1 9/1/1 3/3/1 +s 1 +f 2/13/2 15/14/3 14/15/4 +f 9/16/5 22/17/6 21/18/7 +f 7/19/8 18/20/9 6/21/10 +f 4/22/11 15/14/3 3/23/12 +f 10/24/13 23/25/14 22/17/6 +f 7/26/8 20/27/15 19/28/16 +f 5/29/17 16/30/18 4/22/11 +f 12/31/19 23/25/14 11/32/20 +f 1/33/21 14/15/4 13/34/22 +f 9/16/5 20/27/15 8/35/23 +f 5/29/17 18/20/9 17/36/24 +f 1/33/21 24/37/25 12/31/19 +f 19/28/16 32/38/26 31/39/27 +f 17/36/24 28/40/28 16/30/18 +f 23/25/14 36/41/29 35/42/30 +f 14/15/4 25/43/31 13/34/22 +f 21/18/7 32/38/26 20/27/15 +f 18/20/9 29/44/32 17/36/24 +f 24/37/25 25/43/31 36/41/29 +f 14/15/4 27/45/33 26/46/34 +f 22/17/6 33/47/35 21/18/7 +f 19/48/16 30/49/36 18/20/9 +f 16/30/18 27/45/33 15/14/3 +f 22/17/6 35/42/30 34/50/37 +f 32/38/26 43/51/38 31/39/27 +f 28/40/28 41/52/39 40/53/40 +f 36/41/29 47/54/41 35/42/30 +f 26/46/34 37/55/42 25/43/31 +f 33/47/35 44/56/43 32/38/26 +f 30/49/36 41/52/39 29/44/32 +f 36/41/29 37/55/42 48/57/44 +f 26/46/34 39/58/45 38/59/46 +f 33/47/35 46/60/47 45/61/48 +f 30/49/36 43/62/38 42/63/49 +f 28/40/28 39/58/45 27/45/33 +f 35/42/30 46/60/47 34/50/37 +f 41/64/39 45/65/48 37/66/42 +f 2/13/2 3/23/12 15/14/3 +f 9/16/5 10/24/13 22/17/6 +f 7/19/8 19/48/16 18/20/9 +f 4/22/11 16/30/18 15/14/3 +f 10/24/13 11/32/20 23/25/14 +f 7/26/8 8/35/23 20/27/15 +f 5/29/17 17/36/24 16/30/18 +f 12/31/19 24/37/25 23/25/14 +f 1/33/21 2/13/2 14/15/4 +f 9/16/5 21/18/7 20/27/15 +f 5/29/17 6/21/10 18/20/9 +f 1/33/21 13/34/22 24/37/25 +f 19/28/16 20/27/15 32/38/26 +f 17/36/24 29/44/32 28/40/28 +f 23/25/14 24/37/25 36/41/29 +f 14/15/4 26/46/34 25/43/31 +f 21/18/7 33/47/35 32/38/26 +f 18/20/9 30/49/36 29/44/32 +f 24/37/25 13/34/22 25/43/31 +f 14/15/4 15/14/3 27/45/33 +f 22/17/6 34/50/37 33/47/35 +f 19/48/16 31/67/27 30/49/36 +f 16/30/18 28/40/28 27/45/33 +f 22/17/6 23/25/14 35/42/30 +f 32/38/26 44/56/43 43/51/38 +f 28/40/28 29/44/32 41/52/39 +f 36/41/29 48/57/44 47/54/41 +f 26/46/34 38/59/46 37/55/42 +f 33/47/35 45/61/48 44/56/43 +f 30/49/36 42/63/49 41/52/39 +f 36/41/29 25/43/31 37/55/42 +f 26/46/34 27/45/33 39/58/45 +f 33/47/35 34/50/37 46/60/47 +f 30/49/36 31/67/27 43/62/38 +f 28/40/28 40/53/40 39/58/45 +f 35/42/30 47/54/41 46/60/47 +f 37/66/42 38/68/46 39/69/45 +f 39/69/45 40/70/40 37/66/42 +f 40/70/40 41/64/39 37/66/42 +f 41/64/39 42/71/49 45/65/48 +f 42/71/49 43/72/38 45/65/48 +f 43/72/38 44/73/43 45/65/48 +f 45/65/48 46/74/47 47/75/41 +f 47/75/41 48/76/44 37/66/42 +f 45/65/48 47/75/41 37/66/42 +o Handle +v -0.250000 -1.580894 -0.329788 +v -0.250000 -1.459289 -0.374049 +v -0.250000 -1.331845 -0.351577 +v -0.250000 -1.232712 -0.268394 +v -0.250000 -1.188451 -0.146789 +v -0.250000 -1.210923 -0.019345 +v -0.250000 -1.294106 0.079788 +v -0.250000 -1.415711 0.124049 +v -0.250000 -1.543154 0.101577 +v -0.250000 -1.642288 0.018394 +v -0.250000 -1.686549 -0.103211 +v -0.250000 -1.664077 -0.230654 +v -0.500000 -1.580894 -0.329788 +v -0.500000 -1.459289 -0.374049 +v -0.500000 -1.331845 -0.351577 +v -0.500000 -1.232712 -0.268394 +v -0.500000 -1.188451 -0.146789 +v -0.500000 -1.210923 -0.019345 +v -0.500000 -1.294106 0.079788 +v -0.500000 -1.415711 0.124049 +v -0.500000 -1.543154 0.101577 +v -0.500000 -1.642288 0.018394 +v -0.500000 -1.686549 -0.103211 +v -0.500000 -1.664077 -0.230654 +v -0.593750 -0.612984 1.052531 +v -0.593750 -0.521780 1.019336 +v -0.593750 -0.426197 1.036189 +v -0.593750 -0.351847 1.098576 +v -0.593750 -0.318652 1.189780 +v -0.593750 -0.335506 1.285363 +v -0.593750 -0.397893 1.359713 +v -0.593750 -0.489097 1.392909 +v -0.593750 -0.584679 1.376055 +v -0.593750 -0.659029 1.313668 +v -0.593750 -0.692225 1.222464 +v -0.593750 -0.675371 1.126881 +v -0.781250 -0.612984 1.052531 +v -0.781250 -0.521780 1.019336 +v -0.781250 -0.426197 1.036189 +v -0.781250 -0.351847 1.098576 +v -0.781250 -0.318652 1.189780 +v -0.781250 -0.335506 1.285363 +v -0.781250 -0.397893 1.359713 +v -0.781250 -0.489097 1.392909 +v -0.781250 -0.584679 1.376055 +v -0.781250 -0.659029 1.313668 +v -0.781250 -0.692225 1.222464 +v -0.781250 -0.675371 1.126881 +v -0.750000 -0.643681 1.226622 +v -0.625000 -0.643681 1.226622 +v -0.750000 -0.438893 1.083228 +v -0.625000 -0.438893 1.083228 +v -0.750000 -0.582287 0.878440 +v -0.750000 -0.787075 1.021834 +v -0.625000 -0.787075 1.021834 +v -0.625000 -0.582287 0.878440 +v -0.437500 -1.155863 0.059288 +v -0.437500 -1.360651 0.202682 +v -0.312500 -1.360651 0.202682 +v -0.312500 -1.155863 0.059288 +v -0.437500 -1.227560 -0.043106 +v -0.437500 -1.432348 0.100288 +v -0.312500 -1.432348 0.100288 +v -0.312500 -1.227560 -0.043106 +v -0.781250 -0.577135 1.103728 +v -0.781250 -0.516333 1.081598 +v -0.781250 -0.452611 1.092834 +v -0.781250 -0.403044 1.134425 +v -0.781250 -0.380914 1.195228 +v -0.781250 -0.392150 1.258950 +v -0.781250 -0.433741 1.308516 +v -0.781250 -0.494544 1.330647 +v -0.781250 -0.558265 1.319411 +v -0.781250 -0.607832 1.277819 +v -0.781250 -0.629963 1.217017 +v -0.781250 -0.618727 1.153295 +v -1.531250 -0.577135 1.103728 +v -1.531250 -0.516333 1.081598 +v -1.531250 -0.452611 1.092834 +v -1.531250 -0.403044 1.134425 +v -1.531250 -0.380914 1.195228 +v -1.531250 -0.392150 1.258950 +v -1.531250 -0.433741 1.308516 +v -1.531250 -0.494544 1.330647 +v -1.531250 -0.558265 1.319411 +v -1.531250 -0.607832 1.277819 +v -1.531250 -0.629963 1.217017 +v -1.531250 -0.618727 1.153295 +vt 0.717262 0.500032 +vt 0.727560 0.513905 +vt 0.727560 0.541651 +vt 0.668008 0.736165 +vt 0.668008 0.763835 +vt 0.647468 0.763835 +vt 0.647468 0.680609 +vt 0.657738 0.666774 +vt 0.668008 0.680609 +vt 0.577381 0.722222 +vt 0.571429 0.708333 +vt 0.577381 0.708333 +vt 0.636905 0.722222 +vt 0.625000 0.708333 +vt 0.636905 0.708333 +vt 0.636905 0.680556 +vt 0.625000 0.666667 +vt 0.636905 0.666667 +vt 0.625000 0.722222 +vt 0.577381 0.680556 +vt 0.577381 0.666667 +vt 0.571429 0.666667 +vt 0.711309 0.694407 +vt 0.706168 0.687481 +vt 0.706168 0.673629 +vt 0.706964 0.541651 +vt 0.705371 0.527778 +vt 0.706964 0.513905 +vt 0.711316 0.503749 +vt 0.723207 0.503749 +vt 0.729153 0.527778 +vt 0.723207 0.551806 +vt 0.717262 0.555524 +vt 0.711316 0.551806 +vt 0.645879 0.750000 +vt 0.647468 0.736165 +vt 0.651809 0.726037 +vt 0.657738 0.722330 +vt 0.663667 0.726037 +vt 0.669597 0.750000 +vt 0.663667 0.773963 +vt 0.657738 0.777671 +vt 0.651809 0.773963 +vt 0.669597 0.694444 +vt 0.668008 0.708280 +vt 0.663667 0.718408 +vt 0.657738 0.722115 +vt 0.651809 0.718408 +vt 0.647468 0.708280 +vt 0.645879 0.694444 +vt 0.651809 0.670481 +vt 0.663667 0.670481 +vt 0.571429 0.722222 +vt 0.625000 0.680556 +vt 0.571429 0.680556 +vt 0.708341 0.668559 +vt 0.711309 0.666703 +vt 0.714278 0.668559 +vt 0.716451 0.673629 +vt 0.717246 0.680555 +vt 0.716451 0.687481 +vt 0.714278 0.692551 +vt 0.708341 0.692552 +vt 0.705373 0.680555 +vt 0.705357 0.611111 +vt 0.693452 0.597222 +vt 0.705357 0.597222 +vt 0.705357 0.513889 +vt 0.693452 0.500000 +vt 0.705357 0.500000 +vt 0.705357 0.652778 +vt 0.693452 0.638889 +vt 0.705357 0.638889 +vt 0.705357 0.555556 +vt 0.693452 0.541667 +vt 0.705357 0.541667 +vt 0.693452 0.583333 +vt 0.705357 0.583333 +vt 0.693452 0.625000 +vt 0.705357 0.625000 +vt 0.693452 0.527778 +vt 0.705357 0.527778 +vt 0.693452 0.569444 +vt 0.705357 0.569444 +vt 0.693452 0.611111 +vt 0.693452 0.513889 +vt 0.705357 0.666667 +vt 0.693452 0.652778 +vt 0.693452 0.555556 +vt 0.636905 0.805556 +vt 0.645833 0.791667 +vt 0.645833 0.805556 +vt 0.636905 0.708333 +vt 0.645833 0.694444 +vt 0.645833 0.708333 +vt 0.636905 0.750000 +vt 0.645833 0.736111 +vt 0.645833 0.750000 +vt 0.636905 0.791667 +vt 0.645833 0.777778 +vt 0.636905 0.694444 +vt 0.645833 0.680556 +vt 0.636905 0.833333 +vt 0.645833 0.819444 +vt 0.645833 0.833333 +vt 0.636905 0.736111 +vt 0.645833 0.722222 +vt 0.636905 0.777778 +vt 0.645833 0.763889 +vt 0.636905 0.680556 +vt 0.645833 0.666667 +vt 0.636905 0.819444 +vt 0.636905 0.722222 +vt 0.636905 0.763889 +vt 0.577381 0.750000 +vt 0.625000 0.750000 +vt 0.705357 0.708333 +vt 0.669643 0.715278 +vt 0.669643 0.708333 +vt 0.705357 0.687500 +vt 0.669643 0.694444 +vt 0.669643 0.687500 +vt 0.705357 0.736111 +vt 0.669643 0.743056 +vt 0.669643 0.736111 +vt 0.705357 0.666667 +vt 0.669643 0.673611 +vt 0.669643 0.666667 +vt 0.705357 0.715278 +vt 0.669643 0.722222 +vt 0.705357 0.694444 +vt 0.669643 0.701389 +vt 0.705357 0.743056 +vt 0.669643 0.750000 +vt 0.705357 0.673611 +vt 0.669643 0.680556 +vt 0.705357 0.722222 +vt 0.669643 0.729167 +vt 0.705357 0.701389 +vt 0.705357 0.680556 +vt 0.705357 0.729167 +vt 0.693452 0.666667 +vt 0.636905 0.666667 +vt 0.636905 0.750000 +vt 0.571429 0.750000 +vt 0.705357 0.750000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.8192 -0.5736 +vn 0.0000 -0.8192 0.5736 +vn 0.0000 0.9962 -0.0872 +vn 0.0000 0.9063 0.4226 +vn 0.0000 -0.9063 -0.4226 +vn 0.0000 -0.5736 -0.8192 +vn 0.0000 -0.0872 -0.9962 +vn 0.0000 0.4226 -0.9063 +vn 0.0000 -0.4226 0.9063 +vn 0.0000 0.5736 0.8192 +vn 0.0000 -0.9962 0.0872 +vn 0.0000 0.0872 0.9962 +vn 0.9886 0.0865 0.1236 +vn -0.9886 -0.0865 -0.1236 +s off +f 71/77/50 69/78/50 67/79/50 +f 93/80/50 91/81/50 87/82/50 +f 81/83/51 83/84/51 73/85/51 +f 108/86/52 109/87/52 105/88/52 +f 100/89/52 101/90/52 99/91/52 +f 97/92/53 103/93/53 98/94/53 +f 104/95/52 105/88/52 101/90/52 +f 103/93/53 106/96/53 107/97/53 +f 106/96/53 111/98/53 107/97/53 +f 131/99/50 129/100/50 127/101/50 +f 63/102/50 62/103/50 61/104/50 +f 61/104/50 72/105/50 71/77/50 +f 71/77/50 70/106/50 69/78/50 +f 69/78/50 68/107/50 67/79/50 +f 67/79/50 66/108/50 63/102/50 +f 66/108/50 65/109/50 63/102/50 +f 65/109/50 64/110/50 63/102/50 +f 63/102/50 61/104/50 67/79/50 +f 61/104/50 71/77/50 67/79/50 +f 87/82/50 86/111/50 85/112/50 +f 85/112/50 96/113/50 95/114/50 +f 95/114/50 94/115/50 93/80/50 +f 93/80/50 92/116/50 91/81/50 +f 91/81/50 90/117/50 87/82/50 +f 90/117/50 89/118/50 87/82/50 +f 89/118/50 88/119/50 87/82/50 +f 87/82/50 85/112/50 95/114/50 +f 95/114/50 93/80/50 87/82/50 +f 73/85/51 74/120/51 75/121/51 +f 75/121/51 76/122/51 77/123/51 +f 77/123/51 78/124/51 81/83/51 +f 78/124/51 79/125/51 81/83/51 +f 79/125/51 80/126/51 81/83/51 +f 81/83/51 82/127/51 83/84/51 +f 83/84/51 84/128/51 73/85/51 +f 73/85/51 75/121/51 81/83/51 +f 75/121/51 77/123/51 81/83/51 +f 108/86/52 112/129/52 109/87/52 +f 100/89/52 104/95/52 101/90/52 +f 97/92/53 102/130/53 103/93/53 +f 104/95/52 108/86/52 105/88/52 +f 103/93/53 102/130/53 106/96/53 +f 106/96/53 110/131/53 111/98/53 +f 127/101/50 126/132/50 125/133/50 +f 125/133/50 136/134/50 127/101/50 +f 136/134/50 135/135/50 127/101/50 +f 135/135/50 134/136/50 133/137/50 +f 133/137/50 132/138/50 131/99/50 +f 131/99/50 130/139/50 129/100/50 +f 129/100/50 128/140/50 127/101/50 +f 135/135/50 133/137/50 127/101/50 +f 133/137/50 131/99/50 127/101/50 +s 1 +f 53/141/54 66/142/55 54/143/55 +f 60/144/56 61/145/57 49/146/57 +f 50/147/58 63/148/59 51/149/59 +f 57/150/60 70/151/53 58/152/53 +f 54/143/55 67/153/61 55/154/61 +f 51/149/59 64/155/52 52/156/52 +f 58/152/53 71/157/62 59/158/62 +f 55/154/61 68/159/63 56/160/63 +f 52/156/52 65/161/54 53/141/54 +f 59/158/62 72/162/56 60/144/56 +f 49/163/57 62/164/58 50/147/58 +f 56/160/63 69/165/60 57/150/60 +f 87/166/59 76/167/52 75/168/59 +f 94/169/53 83/170/62 82/171/53 +f 91/172/61 80/173/63 79/174/61 +f 88/175/52 77/176/54 76/167/52 +f 95/177/62 84/178/56 83/170/62 +f 85/179/57 74/180/58 73/181/57 +f 92/182/63 81/183/60 80/173/63 +f 89/184/54 78/185/55 77/176/54 +f 96/186/56 73/187/57 84/178/56 +f 86/188/58 75/168/59 74/180/58 +f 93/189/60 82/171/53 81/183/60 +f 90/190/55 79/174/61 78/185/55 +f 104/95/64 107/191/64 108/86/64 +f 100/89/51 103/192/64 104/95/64 +f 99/91/50 102/130/65 97/92/50 +f 101/90/65 106/96/65 102/130/65 +f 131/193/61 120/194/63 119/195/61 +f 107/191/64 112/129/51 108/86/64 +f 105/88/65 110/131/50 106/96/65 +f 128/196/52 117/197/54 116/198/52 +f 135/199/62 124/200/56 123/201/62 +f 125/202/57 114/203/58 113/204/57 +f 132/205/63 121/206/60 120/194/63 +f 129/207/54 118/208/55 117/197/54 +f 136/209/56 113/210/57 124/200/56 +f 126/211/58 115/212/59 114/203/58 +f 133/213/60 122/214/53 121/206/60 +f 130/215/55 119/195/61 118/208/55 +f 127/216/59 116/198/52 115/212/59 +f 134/217/53 123/201/62 122/214/53 +f 53/141/54 65/161/54 66/142/55 +f 60/144/56 72/162/56 61/145/57 +f 50/147/58 62/164/58 63/148/59 +f 57/150/60 69/165/60 70/151/53 +f 54/143/55 66/142/55 67/153/61 +f 51/149/59 63/148/59 64/155/52 +f 58/152/53 70/151/53 71/157/62 +f 55/154/61 67/153/61 68/159/63 +f 52/156/52 64/155/52 65/161/54 +f 59/158/62 71/157/62 72/162/56 +f 49/163/57 61/218/57 62/164/58 +f 56/160/63 68/159/63 69/165/60 +f 87/166/59 88/175/52 76/167/52 +f 94/169/53 95/177/62 83/170/62 +f 91/172/61 92/182/63 80/173/63 +f 88/175/52 89/184/54 77/176/54 +f 95/177/62 96/186/56 84/178/56 +f 85/179/57 86/188/58 74/180/58 +f 92/182/63 93/189/60 81/183/60 +f 89/184/54 90/190/55 78/185/55 +f 96/186/56 85/219/57 73/187/57 +f 86/188/58 87/166/59 75/168/59 +f 93/189/60 94/169/53 82/171/53 +f 90/190/55 91/172/61 79/174/61 +f 104/95/64 103/192/64 107/191/64 +f 100/89/51 98/220/51 103/192/64 +f 99/91/50 101/90/65 102/130/65 +f 101/90/65 105/88/65 106/96/65 +f 131/193/61 132/205/63 120/194/63 +f 107/191/64 111/221/51 112/129/51 +f 105/88/65 109/87/50 110/131/50 +f 128/196/52 129/207/54 117/197/54 +f 135/199/62 136/209/56 124/200/56 +f 125/202/57 126/211/58 114/203/58 +f 132/205/63 133/213/60 121/206/60 +f 129/207/54 130/215/55 118/208/55 +f 136/209/56 125/222/57 113/210/57 +f 126/211/58 127/216/59 115/212/59 +f 133/213/60 134/217/53 122/214/53 +f 130/215/55 131/193/61 119/195/61 +f 127/216/59 128/196/52 116/198/52 +f 134/217/53 135/199/62 123/201/62 +o Magazine +v 0.187500 -0.312500 1.375000 +v 0.187500 -0.312500 2.375000 +v -0.187500 -0.312500 2.375000 +v -0.187500 -0.312500 1.375000 +v -0.187500 -6.687500 1.375000 +v -0.187500 -6.687500 2.375000 +v 0.187500 -6.687500 2.375000 +v 0.187500 -6.687500 1.375000 +v 0.125000 -0.187500 1.375000 +v -0.125000 -0.187500 1.375000 +v 0.062500 -0.187500 1.875000 +v -0.062500 -0.187500 1.875000 +v -0.062500 -0.187500 1.375000 +v -0.125000 -0.187500 1.875000 +v 0.062500 -0.187500 1.375000 +v 0.125000 -0.187500 1.875000 +v 0.187500 -0.312500 1.875000 +v -0.187500 -0.312500 1.875000 +v 0.062500 -0.312500 1.875000 +v -0.062500 -0.312500 1.875000 +v 0.062500 -0.312500 1.375000 +v -0.062500 -0.312500 1.375000 +vt 0.779762 0.041667 +vt 0.779762 0.750000 +vt 0.755952 0.750000 +vt 0.797619 0.041667 +vt 0.845238 0.041667 +vt 0.845238 0.750000 +vt 0.821429 0.750000 +vt 0.732143 0.041667 +vt 0.779762 -0.000000 +vt 0.863095 0.041667 +vt 0.857143 0.750000 +vt 0.851190 0.750000 +vt 0.797619 0.805556 +vt 0.800595 0.861111 +vt 0.797619 0.861111 +vt 0.806548 0.861111 +vt 0.800595 0.805556 +vt 0.806548 0.805556 +vt 0.776786 0.805556 +vt 0.779762 0.861111 +vt 0.776786 0.861111 +vt 0.770833 0.805556 +vt 0.770833 0.861111 +vt 0.797619 0.875000 +vt 0.803571 0.875000 +vt 0.779762 0.875000 +vt 0.773810 0.875000 +vt 0.797619 0.750000 +vt 0.791667 0.805556 +vt 0.785714 0.805556 +vt 0.791667 0.861111 +vt 0.785714 0.861111 +vt 0.779762 0.805556 +vt 0.779762 0.791667 +vt 0.797619 0.791667 +vt 0.732143 0.750000 +vt 0.732143 0.000000 +vt 0.863095 0.750000 +vt 0.779762 0.805556 +vt 0.797619 0.805556 +vt 0.773810 0.791667 +vt 0.803571 0.791667 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.8944 0.4472 0.0000 +vn -0.8944 0.4472 0.0000 +s off +f 142/223/66 139/224/66 154/225/66 +f 143/226/67 139/224/67 142/223/67 +f 144/227/68 137/228/68 153/229/68 +f 141/230/69 143/231/69 142/223/69 +f 141/232/70 158/233/70 157/234/70 +f 147/235/71 145/236/71 151/237/71 +f 137/238/72 152/239/72 153/240/72 +f 150/241/71 149/242/71 146/243/71 +f 154/244/73 146/243/73 140/245/73 +f 157/246/70 145/236/70 137/247/70 +f 146/243/70 158/248/70 140/249/70 +f 138/250/71 155/251/71 156/252/71 +f 147/235/66 157/253/66 155/251/66 +f 158/254/68 148/255/68 156/252/68 +f 156/252/71 157/253/71 158/254/71 +f 150/241/67 156/256/67 148/255/67 +f 155/257/67 152/239/67 147/235/67 +f 140/258/66 141/230/66 154/225/66 +f 141/230/66 142/223/66 154/225/66 +f 143/226/67 138/250/67 139/224/67 +f 138/250/68 143/226/68 153/229/68 +f 143/226/68 144/227/68 153/229/68 +f 141/230/69 144/259/69 143/231/69 +f 137/228/70 144/227/70 157/234/70 +f 144/227/70 141/232/70 157/234/70 +f 141/232/70 140/260/70 158/233/70 +f 147/235/71 152/239/71 145/236/71 +f 137/238/72 145/236/72 152/239/72 +f 150/241/71 148/255/71 149/242/71 +f 154/244/73 150/241/73 146/243/73 +f 157/246/70 151/237/70 145/236/70 +f 146/243/70 149/242/70 158/248/70 +f 154/261/71 139/224/71 156/252/71 +f 139/224/71 138/250/71 156/252/71 +f 138/250/71 153/262/71 155/251/71 +f 147/235/66 151/237/66 157/253/66 +f 158/254/68 149/242/68 148/255/68 +f 156/252/71 155/251/71 157/253/71 +f 150/241/67 154/263/67 156/256/67 +f 155/257/67 153/264/67 152/239/67 +o Flap +v 0.562500 1.125000 0.312500 +v 0.519682 0.909741 0.312500 +v 0.397748 0.727252 0.312500 +v 0.215260 0.605318 0.312500 +v 0.625000 1.125000 0.312500 +v 0.239177 0.547575 0.312500 +v 0.441942 0.683058 0.312500 +v 0.577425 0.885823 0.312500 +v 0.562500 1.125000 2.437500 +v 0.519682 0.909741 2.437500 +v 0.397747 0.727252 2.437500 +v 0.215260 0.605318 2.437500 +v 0.239177 0.547575 2.437500 +v 0.441941 0.683058 2.437500 +v 0.577424 0.885823 2.437500 +v 0.625000 1.125000 2.437500 +v 0.239177 0.547575 2.062500 +v 0.000000 0.500000 2.062500 +v 0.000000 0.562500 2.062500 +v 0.215260 0.605318 2.062500 +v 0.239177 0.547575 0.687500 +v 0.000000 0.500000 0.687500 +v 0.215260 0.605318 0.687500 +v 0.000000 0.562500 0.687500 +vt 0.431548 0.597222 +vt 0.532738 0.590278 +vt 0.431548 0.590278 +vt 0.449405 0.520833 +vt 0.431548 0.513889 +vt 0.431548 0.520833 +vt 0.449405 0.486111 +vt 0.514881 0.493056 +vt 0.514881 0.486111 +vt 0.529762 0.513889 +vt 0.532738 0.541667 +vt 0.532738 0.513889 +vt 0.529762 0.569444 +vt 0.532738 0.597222 +vt 0.532738 0.569444 +vt 0.529762 0.541667 +vt 0.431548 0.541667 +vt 0.434524 0.513889 +vt 0.434524 0.569444 +vt 0.431548 0.569444 +vt 0.434524 0.541667 +vt 0.449405 0.513889 +vt 0.452381 0.486111 +vt 0.511905 0.513889 +vt 0.514881 0.513889 +vt 0.514881 0.520833 +vt 0.532738 0.520833 +vt 0.449405 0.493056 +vt 0.529762 0.597222 +vt 0.434524 0.597222 +vt 0.452381 0.513889 +vt 0.511905 0.486111 +vt 0.532738 0.569444 +vt 0.431548 0.534722 +vt 0.532738 0.534722 +vt 0.449405 0.486111 +vt 0.514881 0.513889 +vt 0.449405 0.513889 +vt 0.532738 0.597222 +vt 0.431548 0.569444 +vt 0.514881 0.486111 +vt 0.431548 0.597222 +vt 0.532738 0.513889 +vt 0.431548 0.513889 +vn 0.0000 1.0000 0.0000 +vn -0.9239 -0.3827 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.0000 0.0000 1.0000 +vn -0.9239 0.3827 -0.0000 +vn -0.7071 0.7071 -0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.9808 -0.1951 0.0000 +vn -0.1951 0.9808 0.0000 +vn -0.4430 0.8965 -0.0000 +vn -0.9808 0.1951 -0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.4430 -0.8965 0.0000 +vn 0.1951 -0.9808 0.0000 +vn -0.5556 0.8315 0.0000 +vn 0.5556 -0.8315 0.0000 +s off +f 174/265/74 159/266/74 167/267/74 +f 178/268/75 171/269/75 170/270/75 +f 176/271/76 182/272/76 180/273/76 +f 162/274/77 165/275/77 164/276/77 +f 160/277/77 163/278/77 166/279/77 +f 161/280/77 166/279/77 165/275/77 +f 172/281/78 170/282/78 171/269/78 +f 174/265/78 168/283/78 173/284/78 +f 173/284/78 169/285/78 172/281/78 +f 175/286/78 177/287/78 176/271/78 +f 180/273/77 181/288/77 179/289/77 +f 164/276/75 181/290/75 162/291/75 +f 174/265/74 163/278/74 159/266/74 +f 178/268/75 175/286/75 171/269/75 +f 176/271/76 177/292/76 182/272/76 +f 162/274/77 161/280/77 165/275/77 +f 160/277/77 159/293/77 163/278/77 +f 161/280/77 160/277/77 166/279/77 +f 172/281/78 169/285/78 170/282/78 +f 174/265/78 167/294/78 168/283/78 +f 173/284/78 168/283/78 169/285/78 +f 175/286/78 178/295/78 177/287/78 +f 180/273/77 182/296/77 181/288/77 +f 164/276/75 179/289/75 181/290/75 +s 1 +f 168/297/79 161/298/80 169/299/80 +f 173/284/81 163/278/82 174/265/82 +f 182/300/83 178/301/84 181/302/84 +f 167/303/85 160/304/79 168/297/79 +f 172/281/86 166/279/81 173/284/81 +f 175/286/87 180/273/88 179/289/87 +f 178/301/84 161/298/80 181/302/84 +f 179/289/87 165/275/86 172/281/86 +f 168/297/79 160/304/79 161/298/80 +f 173/284/81 166/279/81 163/278/82 +f 182/300/83 177/305/83 178/301/84 +f 167/303/85 159/306/85 160/304/79 +f 172/281/86 165/275/86 166/279/81 +f 175/286/87 176/271/88 180/273/88 +f 178/301/84 170/307/89 169/299/80 +f 169/299/80 161/298/80 178/301/84 +f 161/298/80 162/308/89 181/302/84 +f 172/281/86 171/269/90 175/286/87 +f 179/289/87 164/276/90 165/275/86 +f 172/281/86 175/286/87 179/289/87 +o Stock +v -0.375000 -0.437500 -6.562500 +v -0.437500 -0.454247 -6.562500 +v -0.483253 -0.500000 -6.562500 +v -0.500000 -0.562500 -6.562500 +v -0.483253 -0.625000 -6.562500 +v -0.437500 -0.670753 -6.562500 +v -0.375000 -0.687500 -6.562500 +v -0.312500 -0.670753 -6.562500 +v -0.266747 -0.625000 -6.562500 +v -0.250000 -0.562500 -6.562500 +v -0.266747 -0.500000 -6.562500 +v -0.312500 -0.454247 -6.562500 +v -0.375000 -2.937500 -7.062500 +v -0.375000 -0.504487 -6.812500 +v -0.437500 -0.518991 -6.804127 +v -0.483253 -0.558614 -6.781250 +v -0.500000 -0.612741 -6.750000 +v -0.483253 -0.666867 -6.718750 +v -0.437500 -0.706490 -6.695873 +v -0.375000 -0.720994 -6.687500 +v -0.312500 -0.706490 -6.695873 +v -0.266747 -0.666867 -6.718750 +v -0.250000 -0.612741 -6.750000 +v -0.266747 -0.558614 -6.781250 +v -0.312500 -0.518991 -6.804127 +v -0.375000 -0.687500 -6.995513 +v -0.437500 -0.695874 -6.981009 +v -0.483253 -0.718750 -6.941386 +v -0.500000 -0.750000 -6.887259 +v -0.483253 -0.781250 -6.833133 +v -0.437500 -0.804126 -6.793509 +v -0.375000 -0.812500 -6.779007 +v -0.312500 -0.804126 -6.793509 +v -0.266747 -0.781250 -6.833133 +v -0.250000 -0.750000 -6.887259 +v -0.266747 -0.718750 -6.941386 +v -0.312500 -0.695874 -6.981009 +v -0.375000 -0.937500 -7.062500 +v -0.437500 -0.937500 -7.045753 +v -0.483253 -0.937500 -7.000000 +v -0.500000 -0.937500 -6.937500 +v -0.483253 -0.937500 -6.875000 +v -0.437500 -0.937500 -6.829247 +v -0.375000 -0.937500 -6.812500 +v -0.312500 -0.937500 -6.829247 +v -0.266747 -0.937500 -6.875000 +v -0.250000 -0.937500 -6.937500 +v -0.266747 -0.937500 -7.000000 +v -0.312500 -0.937500 -7.045753 +v -0.437500 -2.937500 -7.045753 +v -0.483253 -2.937500 -7.000000 +v -0.500000 -2.937500 -6.937500 +v -0.483253 -2.937500 -6.875000 +v -0.437500 -2.937500 -6.829247 +v -0.375000 -2.937500 -6.812500 +v -0.312500 -2.937500 -6.829247 +v -0.266747 -2.937500 -6.875000 +v -0.250000 -2.937500 -6.937500 +v -0.266747 -2.937500 -7.000000 +v -0.312500 -2.937500 -7.045753 +v 0.375000 -0.437500 -6.562500 +v -0.324759 -3.125000 -7.062500 +v -0.378886 -3.156250 -7.045753 +v -0.418509 -3.179127 -7.000000 +v -0.433013 -3.187500 -6.937500 +v -0.418509 -3.179127 -6.875000 +v -0.378886 -3.156250 -6.829247 +v -0.324759 -3.125000 -6.812500 +v -0.270633 -3.093750 -6.829247 +v -0.231009 -3.070873 -6.875000 +v -0.216506 -3.062500 -6.937500 +v -0.231009 -3.070873 -7.000000 +v -0.270633 -3.093750 -7.045753 +v -0.187500 -3.262259 -7.062500 +v -0.218750 -3.316386 -7.045753 +v -0.241627 -3.356009 -7.000000 +v -0.250000 -3.370513 -6.937500 +v -0.241627 -3.356009 -6.875000 +v -0.218750 -3.316386 -6.829247 +v -0.187500 -3.262259 -6.812500 +v -0.156250 -3.208133 -6.829247 +v -0.133374 -3.168509 -6.875000 +v -0.125000 -3.154006 -6.937500 +v -0.133373 -3.168509 -7.000000 +v -0.156250 -3.208133 -7.045753 +v 0.000000 -3.312500 -7.062500 +v 0.000000 -3.375000 -7.045753 +v 0.000000 -3.420753 -7.000000 +v 0.000000 -3.437500 -6.937500 +v 0.000000 -3.420753 -6.875000 +v -0.000000 -3.375000 -6.829247 +v 0.000000 -3.312500 -6.812500 +v -0.000000 -3.250000 -6.829247 +v 0.000000 -3.204247 -6.875000 +v 0.000000 -3.187500 -6.937500 +v 0.000000 -3.204247 -7.000000 +v 0.000000 -3.250000 -7.045753 +v 0.437500 -0.454247 -6.562500 +v 0.483253 -0.500000 -6.562500 +v 0.500000 -0.562500 -6.562500 +v 0.483253 -0.625000 -6.562500 +v 0.437500 -0.670753 -6.562500 +v 0.375000 -0.687500 -6.562500 +v 0.312500 -0.670753 -6.562500 +v 0.266747 -0.625000 -6.562500 +v 0.250000 -0.562500 -6.562500 +v 0.266747 -0.500000 -6.562500 +v 0.312500 -0.454247 -6.562500 +v 0.375000 -2.937500 -7.062500 +v 0.375000 -0.504487 -6.812500 +v 0.437500 -0.518991 -6.804127 +v 0.483253 -0.558614 -6.781250 +v 0.500000 -0.612741 -6.750000 +v 0.483253 -0.666867 -6.718750 +v 0.437500 -0.706490 -6.695873 +v 0.375000 -0.720994 -6.687500 +v 0.312500 -0.706490 -6.695873 +v 0.266747 -0.666867 -6.718750 +v 0.250000 -0.612741 -6.750000 +v 0.266747 -0.558614 -6.781250 +v 0.312500 -0.518991 -6.804127 +v 0.375000 -0.687500 -6.995513 +v 0.437500 -0.695874 -6.981009 +v 0.483253 -0.718750 -6.941386 +v 0.500000 -0.750000 -6.887259 +v 0.483253 -0.781250 -6.833133 +v 0.437500 -0.804126 -6.793509 +v 0.375000 -0.812500 -6.779007 +v 0.312500 -0.804126 -6.793509 +v 0.266747 -0.781250 -6.833133 +v 0.250000 -0.750000 -6.887259 +v 0.266747 -0.718750 -6.941386 +v 0.312500 -0.695874 -6.981009 +v 0.375000 -0.937500 -7.062500 +v 0.437500 -0.937500 -7.045753 +v 0.483253 -0.937500 -7.000000 +v 0.500000 -0.937500 -6.937500 +v 0.483253 -0.937500 -6.875000 +v 0.437500 -0.937500 -6.829247 +v 0.375000 -0.937500 -6.812500 +v 0.312500 -0.937500 -6.829247 +v 0.266747 -0.937500 -6.875000 +v 0.250000 -0.937500 -6.937500 +v 0.266747 -0.937500 -7.000000 +v 0.312500 -0.937500 -7.045753 +v 0.437500 -2.937500 -7.045753 +v 0.483253 -2.937500 -7.000000 +v 0.500000 -2.937500 -6.937500 +v 0.483253 -2.937500 -6.875000 +v 0.437500 -2.937500 -6.829247 +v 0.375000 -2.937500 -6.812500 +v 0.312500 -2.937500 -6.829247 +v 0.266747 -2.937500 -6.875000 +v 0.250000 -2.937500 -6.937500 +v 0.266747 -2.937500 -7.000000 +v 0.312500 -2.937500 -7.045753 +v 0.324759 -3.125000 -7.062500 +v 0.378886 -3.156250 -7.045753 +v 0.418509 -3.179127 -7.000000 +v 0.433012 -3.187500 -6.937500 +v 0.418509 -3.179127 -6.875000 +v 0.378886 -3.156250 -6.829247 +v 0.324759 -3.125000 -6.812500 +v 0.270633 -3.093750 -6.829247 +v 0.231009 -3.070873 -6.875000 +v 0.216506 -3.062500 -6.937500 +v 0.231009 -3.070873 -7.000000 +v 0.270633 -3.093750 -7.045753 +v 0.187500 -3.262259 -7.062500 +v 0.218750 -3.316386 -7.045753 +v 0.241627 -3.356009 -7.000000 +v 0.250000 -3.370513 -6.937500 +v 0.241627 -3.356009 -6.875000 +v 0.218750 -3.316386 -6.829247 +v 0.187500 -3.262259 -6.812500 +v 0.156250 -3.208133 -6.829247 +v 0.133373 -3.168509 -6.875000 +v 0.125000 -3.154006 -6.937500 +v 0.133373 -3.168509 -7.000000 +v 0.156250 -3.208133 -7.045753 +v -0.375000 -0.437500 1.187500 +v -0.437500 -0.454247 1.187500 +v -0.483253 -0.500000 1.187500 +v -0.500000 -0.562500 1.187500 +v -0.483253 -0.625000 1.187500 +v -0.437500 -0.670753 1.187500 +v -0.375000 -0.687500 1.187500 +v -0.312500 -0.670753 1.187500 +v -0.266747 -0.625000 1.187500 +v -0.250000 -0.562500 1.187500 +v -0.266747 -0.500000 1.187500 +v -0.312500 -0.454247 1.187500 +v 0.375000 -0.437500 1.187500 +v 0.437500 -0.454247 1.187500 +v 0.483253 -0.500000 1.187500 +v 0.500000 -0.562500 1.187500 +v 0.483253 -0.625000 1.187500 +v 0.437500 -0.670753 1.187500 +v 0.375000 -0.687500 1.187500 +v 0.312500 -0.670753 1.187500 +v 0.266747 -0.625000 1.187500 +v 0.250000 -0.562500 1.187500 +v 0.266747 -0.500000 1.187500 +v 0.312500 -0.454247 1.187500 +vt 0.518695 0.923665 +vt 0.528925 0.923665 +vt 0.523810 0.944337 +vt 0.518695 0.937446 +vt 0.523810 0.916775 +vt 0.528925 0.937446 +vt 0.520857 0.942491 +vt 0.518695 0.937446 +vt 0.517904 0.930556 +vt 0.520857 0.918621 +vt 0.523810 0.916775 +vt 0.526763 0.918621 +vt 0.529716 0.930556 +vt 0.528925 0.937446 +vt 0.526763 0.942490 +vt 0.526763 0.942490 +vt 0.523810 0.944337 +vt 0.520857 0.942491 +vt 0.517904 0.930556 +vt 0.518695 0.923665 +vt 0.520857 0.918621 +vt 0.526763 0.918621 +vt 0.528925 0.923665 +vt 0.529716 0.930556 +vt 0.369048 0.986111 +vt 0.377976 0.993056 +vt 0.369048 0.993056 +vt 0.369048 0.965278 +vt 0.377976 0.972222 +vt 0.369048 0.972222 +vt 0.369048 0.937500 +vt 0.377976 0.930556 +vt 0.377976 0.937500 +vt 0.369048 0.951389 +vt 0.377976 0.944444 +vt 0.377976 0.951389 +vt 0.369048 1.000000 +vt 0.377976 1.000000 +vt 0.369048 0.979167 +vt 0.377976 0.979167 +vt 0.369048 0.944444 +vt 0.369048 0.958333 +vt 0.377976 0.958333 +vt 0.369048 0.916667 +vt 0.377976 0.923611 +vt 0.369048 0.923611 +vt 0.377976 0.986111 +vt 0.377976 0.965278 +vt 0.369048 0.930556 +vt 0.386905 0.944444 +vt 0.386905 0.958333 +vt 0.386905 0.916667 +vt 0.386905 0.923611 +vt 0.386905 0.986111 +vt 0.386905 0.965278 +vt 0.386905 0.930556 +vt 0.386905 0.993056 +vt 0.386905 0.972222 +vt 0.386905 0.937500 +vt 0.386905 0.951389 +vt 0.386905 1.000000 +vt 0.386905 0.979167 +vt 0.395833 0.979167 +vt 0.395833 0.937500 +vt 0.395833 0.944444 +vt 0.395833 0.958333 +vt 0.395833 0.916667 +vt 0.395833 0.923611 +vt 0.395833 0.986111 +vt 0.395833 0.965278 +vt 0.395833 0.930556 +vt 0.395833 0.993056 +vt 0.395833 0.972222 +vt 0.395833 0.951389 +vt 0.395833 1.000000 +vt 0.491071 0.979167 +vt 0.491071 0.944444 +vt 0.491071 0.958333 +vt 0.491071 0.916667 +vt 0.491071 0.923611 +vt 0.491071 0.986111 +vt 0.491071 0.965278 +vt 0.491071 0.930556 +vt 0.491071 0.993056 +vt 0.491071 0.972222 +vt 0.491071 0.937500 +vt 0.491071 0.951389 +vt 0.491071 1.000000 +vt 0.500000 0.993056 +vt 0.500000 1.000000 +vt 0.500000 0.979167 +vt 0.500000 0.944444 +vt 0.500000 0.958333 +vt 0.500000 0.916667 +vt 0.500000 0.923611 +vt 0.500000 0.986111 +vt 0.500000 0.965278 +vt 0.500000 0.930556 +vt 0.500000 0.972222 +vt 0.500000 0.937500 +vt 0.500000 0.951389 +vt 0.508929 0.944444 +vt 0.508929 0.951389 +vt 0.508929 0.993056 +vt 0.508929 1.000000 +vt 0.508929 0.979167 +vt 0.508929 0.958333 +vt 0.508929 0.923611 +vt 0.508929 0.986111 +vt 0.508929 0.965278 +vt 0.508929 0.930556 +vt 0.508929 0.972222 +vt 0.508929 0.937500 +vt 0.517857 0.937500 +vt 0.517857 0.944444 +vt 0.517857 0.951389 +vt 0.517857 0.993056 +vt 0.517857 1.000000 +vt 0.517857 0.979167 +vt 0.517857 0.958333 +vt 0.517857 0.916667 +vt 0.517857 0.923611 +vt 0.517857 0.986111 +vt 0.517857 0.965278 +vt 0.517857 0.930556 +vt 0.517857 0.972222 +vt 0.377976 0.993056 +vt 0.369048 1.000000 +vt 0.369048 0.993056 +vt 0.377976 0.930556 +vt 0.369048 0.937500 +vt 0.369048 0.930556 +vt 0.369048 0.965278 +vt 0.377976 0.972222 +vt 0.369048 0.972222 +vt 0.369048 0.951389 +vt 0.377976 0.958333 +vt 0.369048 0.958333 +vt 0.377976 0.986111 +vt 0.369048 0.986111 +vt 0.377976 0.923611 +vt 0.369048 0.923611 +vt 0.377976 0.944444 +vt 0.369048 0.944444 +vt 0.369048 0.979167 +vt 0.369048 0.916667 +vt 0.377976 0.979167 +vt 0.386905 0.965278 +vt 0.377976 0.965278 +vt 0.386905 0.944444 +vt 0.377976 0.951389 +vt 0.386905 0.979167 +vt 0.377976 0.916667 +vt 0.386905 0.923611 +vt 0.377976 0.937500 +vt 0.386905 0.972222 +vt 0.386905 0.993056 +vt 0.377976 1.000000 +vt 0.386905 0.930556 +vt 0.386905 0.951389 +vt 0.395833 0.923611 +vt 0.395833 0.958333 +vt 0.386905 0.958333 +vt 0.395833 0.944444 +vt 0.395833 0.986111 +vt 0.386905 0.986111 +vt 0.386905 0.916667 +vt 0.395833 0.937500 +vt 0.386905 0.937500 +vt 0.395833 0.979167 +vt 0.395833 0.993056 +vt 0.386905 1.000000 +vt 0.395833 0.930556 +vt 0.395833 0.972222 +vt 0.491071 0.923611 +vt 0.491071 0.958333 +vt 0.395833 0.965278 +vt 0.491071 0.944444 +vt 0.395833 0.951389 +vt 0.491071 0.979167 +vt 0.395833 0.916667 +vt 0.491071 0.937500 +vt 0.491071 0.972222 +vt 0.491071 0.993056 +vt 0.395833 1.000000 +vt 0.491071 0.930556 +vt 0.491071 0.951389 +vt 0.491071 0.986111 +vt 0.500000 0.993056 +vt 0.500000 0.923611 +vt 0.500000 0.958333 +vt 0.491071 0.965278 +vt 0.500000 0.944444 +vt 0.500000 0.986111 +vt 0.491071 0.916667 +vt 0.500000 0.972222 +vt 0.491071 1.000000 +vt 0.500000 0.937500 +vt 0.500000 0.951389 +vt 0.508929 0.958333 +vt 0.508929 0.993056 +vt 0.508929 0.923611 +vt 0.500000 0.930556 +vt 0.500000 0.965278 +vt 0.508929 0.944444 +vt 0.508929 0.979167 +vt 0.500000 0.979167 +vt 0.508929 0.916667 +vt 0.500000 0.916667 +vt 0.500000 1.000000 +vt 0.508929 0.930556 +vt 0.508929 0.972222 +vt 0.517857 0.972222 +vt 0.508929 0.965278 +vt 0.517857 0.965278 +vt 0.517857 0.979167 +vt 0.508929 0.986111 +vt 0.517857 0.986111 +vt 0.517857 1.000000 +vt 0.517857 0.916667 +vt 0.517857 0.923611 +vt 0.517857 0.930556 +vt 0.508929 0.937500 +vt 0.517857 0.937500 +vt 0.517857 0.944444 +vt 0.508929 0.951389 +vt 0.517857 0.958333 +vt 0.000000 0.937500 +vt 0.000000 0.965278 +vt 0.000000 0.979167 +vt 0.000000 0.930556 +vt 0.000000 0.958333 +vt -0.000000 0.986111 +vt 0.000000 0.923611 +vt -0.000000 0.993056 +vt 0.000000 0.916667 +vt 0.000000 0.944444 +vt 0.000000 0.916667 +vt 0.000000 0.993056 +vt 0.000000 0.951389 +vt 0.000000 0.923611 +vt 0.000000 0.986111 +vt 0.000000 0.958333 +vt 0.000000 0.951389 +vt 0.000000 0.930556 +vt 0.000000 0.979167 +vt 0.000000 0.965278 +vt 0.000000 0.944444 +vt 0.000000 0.937500 +vt 0.000000 0.972222 +vt 0.000000 0.972222 +vt 0.377976 0.916667 +vt 0.508929 0.916667 +vt 0.508929 1.000000 +vt -0.000000 1.000000 +vt 0.000000 1.000000 +vn 0.0000 0.0000 1.0000 +vn -0.0000 -0.9911 0.1334 +vn 0.5194 -0.7400 0.4273 +vn 0.5065 -0.8546 0.1144 +vn -0.9998 0.0215 -0.0058 +vn -0.8846 -0.4039 0.2332 +vn -0.8738 -0.4822 0.0628 +vn 0.4883 0.8653 -0.1129 +vn 0.8474 0.4598 -0.2654 +vn 0.4823 0.7586 -0.4380 +vn -0.4883 0.8653 -0.1129 +vn 0.0000 0.8660 -0.5000 +vn -0.4823 0.7586 -0.4380 +vn 0.8738 -0.4822 0.0628 +vn 0.8846 -0.4039 0.2332 +vn -0.5065 -0.8546 0.1144 +vn -0.5194 -0.7400 0.4273 +vn 0.0000 0.9918 -0.1278 +vn -0.8549 0.5140 -0.0698 +vn -0.8474 0.4598 -0.2654 +vn 0.9991 0.0373 -0.0215 +vn 0.9998 0.0215 -0.0058 +vn -0.0000 -0.8660 0.5000 +vn -0.9991 0.0373 -0.0215 +vn 0.8549 0.5140 -0.0698 +vn -0.0000 0.5000 -0.8660 +vn -0.8474 0.2655 -0.4598 +vn 0.8846 -0.2332 0.4039 +vn 0.9991 0.0215 -0.0373 +vn 0.0000 -0.5000 0.8660 +vn -0.9991 0.0215 -0.0373 +vn 0.8474 0.2655 -0.4598 +vn 0.5195 -0.4273 0.7400 +vn -0.8846 -0.2332 0.4039 +vn 0.4823 0.4380 -0.7586 +vn -0.4823 0.4380 -0.7586 +vn -0.5194 -0.4273 0.7400 +vn -0.5065 -0.1144 0.8546 +vn 0.4883 0.1129 -0.8653 +vn -0.0000 0.1278 -0.9918 +vn -0.8549 0.0698 -0.5140 +vn 0.8738 -0.0628 0.4822 +vn 0.9998 0.0058 -0.0215 +vn -0.0000 -0.1334 0.9911 +vn -0.9998 0.0058 -0.0215 +vn 0.8549 0.0698 -0.5140 +vn 0.5065 -0.1144 0.8546 +vn -0.8738 -0.0628 0.4822 +vn -0.4883 0.1129 -0.8653 +vn -0.5140 -0.0698 0.8549 +vn -0.0215 -0.0058 -0.9998 +vn -0.8653 -0.1129 -0.4883 +vn 0.8546 0.1144 0.5065 +vn 0.9911 0.1334 0.0000 +vn -0.0215 -0.0058 0.9998 +vn -0.9918 -0.1278 0.0000 +vn 0.8546 0.1144 -0.5065 +vn 0.4822 0.0628 0.8738 +vn -0.8653 -0.1129 0.4883 +vn 0.4822 0.0628 -0.8738 +vn -0.5140 -0.0698 -0.8549 +vn 0.4039 0.2332 0.8846 +vn 0.7400 0.4273 0.5195 +vn -0.4598 -0.2655 0.8474 +vn -0.0373 -0.0215 -0.9991 +vn -0.7586 -0.4380 -0.4823 +vn 0.8660 0.5000 0.0000 +vn -0.0373 -0.0215 0.9991 +vn -0.8660 -0.5000 -0.0000 +vn 0.7400 0.4273 -0.5195 +vn -0.7586 -0.4380 0.4823 +vn 0.4039 0.2332 -0.8846 +vn -0.4598 -0.2655 -0.8474 +vn -0.0215 -0.0373 -0.9991 +vn -0.2655 -0.4598 -0.8474 +vn 0.2332 0.4039 0.8846 +vn 0.4273 0.7400 0.5195 +vn -0.2655 -0.4598 0.8474 +vn -0.4380 -0.7586 -0.4823 +vn 0.5000 0.8660 -0.0000 +vn -0.0215 -0.0373 0.9991 +vn -0.5000 -0.8660 -0.0000 +vn 0.4273 0.7400 -0.5194 +vn -0.4380 -0.7586 0.4823 +vn 0.2332 0.4039 -0.8846 +vn 0.0000 0.4664 -0.8846 +vn 0.0000 -0.0431 -0.9991 +vn 0.0000 -0.5309 -0.8474 +vn 0.0000 0.4664 0.8846 +vn 0.0000 0.8545 0.5195 +vn -0.0000 -0.5309 0.8474 +vn 0.0000 -0.8760 -0.4823 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -0.0431 0.9991 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 0.8545 -0.5194 +vn 0.0000 -0.8760 0.4823 +vn -0.5194 -0.7400 0.4272 +vn 0.5195 -0.7400 0.4272 +vn 0.5194 -0.4273 0.7400 +vn 0.5140 -0.0698 0.8549 +vn 0.0215 -0.0058 -0.9998 +vn 0.8653 -0.1129 -0.4883 +vn -0.9911 0.1334 0.0000 +vn 0.9918 -0.1278 0.0000 +vn -0.8546 0.1144 -0.5065 +vn -0.4822 0.0628 0.8738 +vn 0.8653 -0.1129 0.4883 +vn 0.5140 -0.0698 -0.8549 +vn -0.8546 0.1144 0.5065 +vn -0.4039 0.2332 0.8846 +vn 0.4598 -0.2654 0.8474 +vn 0.0373 -0.0215 -0.9991 +vn -0.4822 0.0628 -0.8738 +vn 0.7586 -0.4380 -0.4823 +vn -0.7400 0.4272 0.5194 +vn 0.0215 -0.0058 0.9998 +vn -0.7400 0.4273 -0.5195 +vn 0.8660 -0.5000 -0.0000 +vn 0.4598 -0.2654 -0.8474 +vn 0.0215 -0.0373 -0.9991 +vn -0.2332 0.4039 0.8846 +vn 0.2655 -0.4598 0.8474 +vn 0.7586 -0.4380 0.4823 +vn -0.4039 0.2332 -0.8846 +vn 0.4380 -0.7586 -0.4823 +vn -0.5000 0.8660 -0.0000 +vn -0.8660 0.5000 -0.0000 +vn 0.0215 -0.0373 0.9991 +vn 0.0373 -0.0215 0.9991 +vn 0.4380 -0.7586 0.4823 +vn -0.4273 0.7400 -0.5194 +vn -0.2332 0.4039 -0.8846 +vn -0.4273 0.7400 0.5194 +vn 0.5000 -0.8660 -0.0000 +vn 0.2654 -0.4598 -0.8474 +vn 1.0000 0.0000 0.0000 +vn -1.0000 -0.0000 0.0000 +s off +f 367/309/91 371/310/91 363/311/91 +f 385/312/91 381/313/91 377/314/91 +f 363/311/91 364/315/91 365/316/91 +f 365/316/91 366/317/91 363/311/91 +f 366/317/91 367/309/91 363/311/91 +f 367/309/91 368/318/91 371/310/91 +f 368/318/91 369/319/91 371/310/91 +f 369/319/91 370/320/91 371/310/91 +f 371/310/91 372/321/91 373/322/91 +f 373/322/91 374/323/91 371/310/91 +f 374/323/91 363/311/91 371/310/91 +f 377/314/91 376/324/91 375/325/91 +f 375/325/91 386/326/91 377/314/91 +f 386/326/91 385/312/91 377/314/91 +f 385/312/91 384/327/91 383/328/91 +f 383/328/91 382/329/91 385/312/91 +f 382/329/91 381/313/91 385/312/91 +f 381/313/91 380/330/91 377/314/91 +f 380/330/91 379/331/91 377/314/91 +f 379/331/91 378/332/91 377/314/91 +s 1 +f 189/333/92 203/334/93 190/335/94 +f 186/336/95 200/337/96 187/338/97 +f 194/339/98 206/340/99 207/341/100 +f 184/342/101 196/343/102 197/344/103 +f 191/345/104 203/334/93 204/346/105 +f 188/347/106 200/337/96 201/348/107 +f 194/339/98 196/343/102 183/349/108 +f 185/350/109 197/344/103 198/351/110 +f 191/352/104 205/353/111 192/354/112 +f 189/333/92 201/348/107 202/355/113 +f 185/350/109 199/356/114 186/336/95 +f 192/354/112 206/340/99 193/357/115 +f 207/341/100 208/358/116 196/343/102 +f 197/344/103 210/359/117 198/351/110 +f 205/353/111 216/360/118 217/361/119 +f 201/348/107 214/362/120 202/355/113 +f 198/351/110 211/363/121 199/356/114 +f 205/353/111 218/364/122 206/340/99 +f 202/355/113 215/365/123 203/334/93 +f 199/356/114 212/366/124 200/337/96 +f 207/341/100 218/364/122 219/367/125 +f 197/344/103 208/358/116 209/368/126 +f 204/346/105 215/365/123 216/369/118 +f 200/337/96 213/370/127 201/348/107 +f 212/366/124 225/371/128 213/370/127 +f 208/358/116 231/372/129 220/373/130 +f 209/368/126 222/374/131 210/359/117 +f 217/361/119 228/375/132 229/376/133 +f 214/362/120 225/371/128 226/377/134 +f 210/359/117 223/378/135 211/363/121 +f 218/364/122 229/376/133 230/379/136 +f 214/362/120 227/380/137 215/365/123 +f 211/363/121 224/381/138 212/366/124 +f 219/367/125 230/379/136 231/372/129 +f 209/368/126 220/373/130 221/382/139 +f 216/369/118 227/380/137 228/383/132 +f 224/381/138 236/384/140 225/371/128 +f 231/372/129 195/385/141 220/373/130 +f 221/382/139 233/386/142 222/374/131 +f 229/376/133 239/387/143 240/388/144 +f 225/371/128 237/389/145 226/377/134 +f 222/374/131 234/390/146 223/378/135 +f 229/376/133 241/391/147 230/379/136 +f 226/377/134 238/392/148 227/380/137 +f 223/378/135 235/393/149 224/381/138 +f 230/379/136 242/394/150 231/372/129 +f 221/382/139 195/385/141 232/395/151 +f 228/383/132 238/392/148 239/396/143 +f 239/396/143 251/397/152 252/398/153 +f 235/393/149 249/399/154 236/384/140 +f 242/394/150 244/400/155 195/385/141 +f 232/395/151 246/401/156 233/386/142 +f 240/388/144 252/402/153 253/403/157 +f 237/389/145 249/399/154 250/404/158 +f 234/390/146 246/401/156 247/405/159 +f 240/388/144 254/406/160 241/391/147 +f 237/389/145 251/397/152 238/392/148 +f 235/393/149 247/405/159 248/407/161 +f 242/394/150 254/406/160 255/408/162 +f 232/395/151 244/400/155 245/409/163 +f 245/409/163 256/410/164 257/411/165 +f 252/398/153 263/412/166 264/413/167 +f 248/407/161 261/414/168 249/399/154 +f 255/408/162 256/410/164 244/400/155 +f 246/401/156 257/411/165 258/415/169 +f 252/402/153 265/416/170 253/403/157 +f 250/404/158 261/414/168 262/417/171 +f 247/405/159 258/415/169 259/418/172 +f 254/406/160 265/416/170 266/419/173 +f 250/404/158 263/412/166 251/397/152 +f 247/405/159 260/420/174 248/407/161 +f 255/408/162 266/419/173 267/421/175 +f 266/419/173 279/422/176 267/421/175 +f 257/411/165 268/423/177 269/424/178 +f 264/413/167 275/425/179 276/426/180 +f 260/420/174 273/427/181 261/414/168 +f 267/421/175 268/423/177 256/410/164 +f 257/411/165 270/428/182 258/415/169 +f 265/416/170 276/429/180 277/430/183 +f 262/417/171 273/427/181 274/431/184 +f 259/418/172 270/428/182 271/432/185 +f 266/419/173 277/430/183 278/433/186 +f 262/417/171 275/425/179 263/412/166 +f 259/418/172 272/434/187 260/420/174 +f 299/435/188 285/436/92 286/437/106 +f 296/438/105 282/439/112 283/440/104 +f 290/441/101 302/442/110 289/443/109 +f 280/444/98 292/445/102 243/446/108 +f 300/447/96 286/437/106 287/448/97 +f 297/449/189 283/440/104 284/450/94 +f 292/445/102 290/441/101 243/446/108 +f 294/451/99 280/444/98 281/452/115 +f 288/453/95 300/447/96 287/448/97 +f 285/454/92 297/449/189 284/450/94 +f 282/439/112 294/451/99 281/452/115 +f 289/443/109 301/455/114 288/453/95 +f 292/445/102 315/456/126 303/457/103 +f 306/458/122 293/459/100 294/451/99 +f 313/460/121 300/447/96 301/455/114 +f 298/461/113 309/462/190 297/449/189 +f 295/463/111 306/458/122 294/451/99 +f 314/464/117 301/455/114 302/442/110 +f 311/465/127 298/466/113 299/435/188 +f 308/467/118 295/463/111 296/438/105 +f 303/457/103 314/464/117 302/442/110 +f 305/468/125 292/445/102 293/459/100 +f 300/447/96 311/465/127 299/435/188 +f 309/462/190 296/438/105 297/449/189 +f 321/469/137 308/467/118 309/462/190 +f 316/470/130 315/456/126 304/471/116 +f 318/472/136 305/468/125 306/458/122 +f 313/460/121 324/473/138 312/474/124 +f 310/475/120 321/469/137 309/462/190 +f 319/476/133 306/458/122 307/477/119 +f 314/464/117 325/478/135 313/460/121 +f 323/479/128 310/480/120 311/465/127 +f 320/481/132 307/477/119 308/467/118 +f 315/456/126 326/482/131 314/464/117 +f 305/468/125 316/470/130 304/471/116 +f 312/474/124 323/479/128 311/465/127 +f 332/483/191 320/481/132 321/469/137 +f 291/484/192 327/485/139 316/470/130 +f 329/486/193 317/487/129 318/472/136 +f 336/488/194 324/473/138 325/478/135 +f 322/489/134 332/483/191 321/469/137 +f 330/490/195 318/472/136 319/476/133 +f 337/491/196 325/478/135 326/482/131 +f 334/492/197 322/493/134 323/479/128 +f 331/494/198 319/476/133 320/481/132 +f 327/485/139 337/491/196 326/482/131 +f 328/495/199 316/470/130 317/487/129 +f 324/473/138 334/492/197 323/479/128 +f 335/496/200 346/497/201 334/492/197 +f 344/498/202 331/494/198 332/483/191 +f 339/499/203 338/500/204 291/484/192 +f 341/501/205 328/495/199 329/486/193 +f 336/488/194 347/502/206 335/496/200 +f 333/503/207 344/498/202 332/483/191 +f 330/490/195 341/501/205 329/486/193 +f 349/504/208 336/488/194 337/491/196 +f 346/497/201 333/505/207 334/492/197 +f 331/494/198 342/506/209 330/490/195 +f 338/500/204 349/504/208 337/491/196 +f 328/495/199 339/499/203 291/484/192 +f 340/507/210 351/508/211 339/499/203 +f 347/502/206 358/509/212 346/497/201 +f 356/510/213 343/511/214 344/498/202 +f 351/508/211 350/512/215 339/499/203 +f 353/513/216 340/507/210 341/501/205 +f 360/514/217 347/502/206 348/515/218 +f 357/516/219 344/498/202 345/517/220 +f 342/506/209 353/513/216 341/501/205 +f 349/504/208 360/514/217 348/515/218 +f 358/509/212 345/518/220 346/497/201 +f 355/519/221 342/506/209 343/511/214 +f 350/512/215 361/520/222 349/504/208 +f 278/521/186 362/522/223 279/523/176 +f 277/524/183 361/520/222 278/521/186 +f 359/525/224 277/524/183 276/526/180 +f 358/509/212 276/526/180 275/425/179 +f 274/527/184 358/509/212 275/425/179 +f 356/510/213 274/528/184 273/529/181 +f 272/530/187 356/510/213 273/529/181 +f 354/531/225 272/530/187 271/532/185 +f 270/533/182 354/531/225 271/532/185 +f 352/534/226 270/533/182 269/424/178 +f 268/535/177 352/534/226 269/424/178 +f 362/522/223 268/535/177 279/523/176 +f 281/452/115 378/536/227 282/439/112 +f 289/443/109 386/537/217 290/441/101 +f 189/333/92 368/538/172 188/347/106 +f 282/439/112 379/539/209 283/440/104 +f 290/441/101 375/540/183 243/446/108 +f 190/335/94 369/541/185 189/333/92 +f 283/440/104 380/542/225 284/450/94 +f 191/345/104 370/543/225 190/335/94 +f 284/450/94 381/544/185 285/454/92 +f 184/342/101 363/545/183 183/349/108 +f 192/354/112 371/546/209 191/352/104 +f 285/436/92 382/547/172 286/437/106 +f 185/350/109 364/548/217 184/342/101 +f 193/357/115 372/549/227 192/354/112 +f 286/437/106 383/550/159 287/448/97 +f 186/336/95 365/551/218 185/350/109 +f 243/446/108 376/552/170 280/444/98 +f 194/339/98 373/553/157 193/357/115 +f 287/448/97 384/554/228 288/453/95 +f 187/338/97 366/555/228 186/336/95 +f 280/444/98 377/556/157 281/452/115 +f 183/349/108 374/557/170 194/339/98 +f 288/453/95 385/558/218 289/443/109 +f 188/347/106 367/559/159 187/338/97 +f 189/333/92 202/355/113 203/334/93 +f 186/336/95 199/356/114 200/337/96 +f 194/339/98 193/357/115 206/340/99 +f 184/342/101 183/349/108 196/343/102 +f 191/345/104 190/335/94 203/334/93 +f 188/347/106 187/338/97 200/337/96 +f 194/339/98 207/341/100 196/343/102 +f 185/350/109 184/342/101 197/344/103 +f 191/352/104 204/560/105 205/353/111 +f 189/333/92 188/347/106 201/348/107 +f 185/350/109 198/351/110 199/356/114 +f 192/354/112 205/353/111 206/340/99 +f 207/341/100 219/367/125 208/358/116 +f 197/344/103 209/368/126 210/359/117 +f 205/353/111 204/560/105 216/360/118 +f 201/348/107 213/370/127 214/362/120 +f 198/351/110 210/359/117 211/363/121 +f 205/353/111 217/361/119 218/364/122 +f 202/355/113 214/362/120 215/365/123 +f 199/356/114 211/363/121 212/366/124 +f 207/341/100 206/340/99 218/364/122 +f 197/344/103 196/343/102 208/358/116 +f 204/346/105 203/334/93 215/365/123 +f 200/337/96 212/366/124 213/370/127 +f 212/366/124 224/381/138 225/371/128 +f 208/358/116 219/367/125 231/372/129 +f 209/368/126 221/382/139 222/374/131 +f 217/361/119 216/360/118 228/375/132 +f 214/362/120 213/370/127 225/371/128 +f 210/359/117 222/374/131 223/378/135 +f 218/364/122 217/361/119 229/376/133 +f 214/362/120 226/377/134 227/380/137 +f 211/363/121 223/378/135 224/381/138 +f 219/367/125 218/364/122 230/379/136 +f 209/368/126 208/358/116 220/373/130 +f 216/369/118 215/365/123 227/380/137 +f 224/381/138 235/393/149 236/384/140 +f 231/372/129 242/394/150 195/385/141 +f 221/382/139 232/395/151 233/386/142 +f 229/376/133 228/375/132 239/387/143 +f 225/371/128 236/384/140 237/389/145 +f 222/374/131 233/386/142 234/390/146 +f 229/376/133 240/388/144 241/391/147 +f 226/377/134 237/389/145 238/392/148 +f 223/378/135 234/390/146 235/393/149 +f 230/379/136 241/391/147 242/394/150 +f 221/382/139 220/373/130 195/385/141 +f 228/383/132 227/380/137 238/392/148 +f 239/396/143 238/392/148 251/397/152 +f 235/393/149 248/407/161 249/399/154 +f 242/394/150 255/408/162 244/400/155 +f 232/395/151 245/409/163 246/401/156 +f 240/388/144 239/387/143 252/402/153 +f 237/389/145 236/384/140 249/399/154 +f 234/390/146 233/386/142 246/401/156 +f 240/388/144 253/403/157 254/406/160 +f 237/389/145 250/404/158 251/397/152 +f 235/393/149 234/390/146 247/405/159 +f 242/394/150 241/391/147 254/406/160 +f 232/395/151 195/385/141 244/400/155 +f 245/409/163 244/400/155 256/410/164 +f 252/398/153 251/397/152 263/412/166 +f 248/407/161 260/420/174 261/414/168 +f 255/408/162 267/421/175 256/410/164 +f 246/401/156 245/409/163 257/411/165 +f 252/402/153 264/561/167 265/416/170 +f 250/404/158 249/399/154 261/414/168 +f 247/405/159 246/401/156 258/415/169 +f 254/406/160 253/403/157 265/416/170 +f 250/404/158 262/417/171 263/412/166 +f 247/405/159 259/418/172 260/420/174 +f 255/408/162 254/406/160 266/419/173 +f 266/419/173 278/433/186 279/422/176 +f 257/411/165 256/410/164 268/423/177 +f 264/413/167 263/412/166 275/425/179 +f 260/420/174 272/434/187 273/427/181 +f 267/421/175 279/422/176 268/423/177 +f 257/411/165 269/424/178 270/428/182 +f 265/416/170 264/561/167 276/429/180 +f 262/417/171 261/414/168 273/427/181 +f 259/418/172 258/415/169 270/428/182 +f 266/419/173 265/416/170 277/430/183 +f 262/417/171 274/431/184 275/425/179 +f 259/418/172 271/432/185 272/434/187 +f 299/435/188 298/466/113 285/436/92 +f 296/438/105 295/463/111 282/439/112 +f 290/441/101 303/457/103 302/442/110 +f 280/444/98 293/459/100 292/445/102 +f 300/447/96 299/435/188 286/437/106 +f 297/449/189 296/438/105 283/440/104 +f 292/445/102 303/457/103 290/441/101 +f 294/451/99 293/459/100 280/444/98 +f 288/453/95 301/455/114 300/447/96 +f 285/454/92 298/461/113 297/449/189 +f 282/439/112 295/463/111 294/451/99 +f 289/443/109 302/442/110 301/455/114 +f 292/445/102 304/471/116 315/456/126 +f 306/458/122 305/468/125 293/459/100 +f 313/460/121 312/474/124 300/447/96 +f 298/461/113 310/475/120 309/462/190 +f 295/463/111 307/477/119 306/458/122 +f 314/464/117 313/460/121 301/455/114 +f 311/465/127 310/480/120 298/466/113 +f 308/467/118 307/477/119 295/463/111 +f 303/457/103 315/456/126 314/464/117 +f 305/468/125 304/471/116 292/445/102 +f 300/447/96 312/474/124 311/465/127 +f 309/462/190 308/467/118 296/438/105 +f 321/469/137 320/481/132 308/467/118 +f 316/470/130 327/485/139 315/456/126 +f 318/472/136 317/487/129 305/468/125 +f 313/460/121 325/478/135 324/473/138 +f 310/475/120 322/489/134 321/469/137 +f 319/476/133 318/472/136 306/458/122 +f 314/464/117 326/482/131 325/478/135 +f 323/479/128 322/493/134 310/480/120 +f 320/481/132 319/476/133 307/477/119 +f 315/456/126 327/485/139 326/482/131 +f 305/468/125 317/487/129 316/470/130 +f 312/474/124 324/473/138 323/479/128 +f 332/483/191 331/494/198 320/481/132 +f 291/484/192 338/500/204 327/485/139 +f 329/486/193 328/495/199 317/487/129 +f 336/488/194 335/496/200 324/473/138 +f 322/489/134 333/503/207 332/483/191 +f 330/490/195 329/486/193 318/472/136 +f 337/491/196 336/488/194 325/478/135 +f 334/492/197 333/505/207 322/493/134 +f 331/494/198 330/490/195 319/476/133 +f 327/485/139 338/500/204 337/491/196 +f 328/495/199 291/484/192 316/470/130 +f 324/473/138 335/496/200 334/492/197 +f 335/496/200 347/502/206 346/497/201 +f 344/498/202 343/511/214 331/494/198 +f 339/499/203 350/512/215 338/500/204 +f 341/501/205 340/507/210 328/495/199 +f 336/488/194 348/515/218 347/502/206 +f 333/503/207 345/517/220 344/498/202 +f 330/490/195 342/506/209 341/501/205 +f 349/504/208 348/515/218 336/488/194 +f 346/497/201 345/518/220 333/505/207 +f 331/494/198 343/511/214 342/506/209 +f 338/500/204 350/512/215 349/504/208 +f 328/495/199 340/507/210 339/499/203 +f 340/507/210 352/534/226 351/508/211 +f 347/502/206 359/525/224 358/509/212 +f 356/510/213 355/519/221 343/511/214 +f 351/508/211 362/522/223 350/512/215 +f 353/513/216 352/534/226 340/507/210 +f 360/514/217 359/525/224 347/502/206 +f 357/516/219 356/510/213 344/498/202 +f 342/506/209 354/531/225 353/513/216 +f 349/504/208 361/520/222 360/514/217 +f 358/509/212 357/562/219 345/518/220 +f 355/519/221 354/531/225 342/506/209 +f 350/512/215 362/522/223 361/520/222 +f 278/521/186 361/520/222 362/522/223 +f 277/524/183 360/514/217 361/520/222 +f 359/525/224 360/514/217 277/524/183 +f 358/509/212 359/525/224 276/526/180 +f 274/527/184 357/562/219 358/509/212 +f 356/510/213 357/516/219 274/528/184 +f 272/530/187 355/519/221 356/510/213 +f 354/531/225 355/519/221 272/530/187 +f 270/533/182 353/513/216 354/531/225 +f 352/534/226 353/513/216 270/533/182 +f 268/535/177 351/508/211 352/534/226 +f 362/522/223 351/508/211 268/535/177 +f 281/452/115 377/556/157 378/536/227 +f 289/443/109 385/558/218 386/537/217 +f 189/333/92 369/541/185 368/538/172 +f 282/439/112 378/536/227 379/539/209 +f 290/441/101 386/537/217 375/540/183 +f 190/335/94 370/543/225 369/541/185 +f 283/440/104 379/539/209 380/542/225 +f 191/345/104 371/563/209 370/543/225 +f 284/450/94 380/542/225 381/544/185 +f 184/342/101 364/548/217 363/545/183 +f 192/354/112 372/549/227 371/546/209 +f 285/436/92 381/564/185 382/547/172 +f 185/350/109 365/551/218 364/548/217 +f 193/357/115 373/553/157 372/549/227 +f 286/437/106 382/547/172 383/550/159 +f 186/336/95 366/555/228 365/551/218 +f 243/446/108 375/540/183 376/552/170 +f 194/339/98 374/557/170 373/553/157 +f 287/448/97 383/550/159 384/554/228 +f 187/338/97 367/559/159 366/555/228 +f 280/444/98 376/552/170 377/556/157 +f 183/349/108 363/545/183 374/557/170 +f 288/453/95 384/554/228 385/558/218 +f 188/347/106 368/538/172 367/559/159 +o Gun v 0.000000 0.250000 3.750000 v 0.000000 0.250000 8.000000 v 0.095671 0.230970 3.750000 @@ -227,16 +2135,8 @@ v 0.397747 0.397748 -4.625000 v 0.215259 0.519682 -4.625000 v -0.312500 -0.437500 1.250000 v 0.312500 -0.437500 1.250000 -v 0.187500 -0.312500 1.375000 -v 0.187500 -0.312500 2.375000 -v -0.187500 -0.312500 2.375000 -v -0.187500 -0.312500 1.375000 v -0.312500 -2.187500 1.250000 v 0.312500 -2.187500 1.250000 -v -0.187500 -6.687500 1.375000 -v -0.187500 -6.687500 2.375000 -v 0.187500 -6.687500 2.375000 -v 0.187500 -6.687500 1.375000 v -0.312500 -0.437500 2.312500 v -0.125000 -0.437500 2.500000 v 0.125000 -0.437500 2.500000 @@ -328,22 +2228,6 @@ v -0.230970 0.095671 2.875000 v -0.176777 0.176777 2.875000 v -0.095671 0.230970 2.875000 v -0.000000 0.250000 2.875000 -v 0.562500 1.125000 0.312500 -v 0.519682 0.909741 0.312500 -v 0.397748 0.727252 0.312500 -v 0.215260 0.605318 0.312500 -v 0.625000 1.125000 0.312500 -v 0.239177 0.547575 0.312500 -v 0.441942 0.683058 0.312500 -v 0.577425 0.885823 0.312500 -v 0.562500 1.125000 2.437500 -v 0.519682 0.909741 2.437500 -v 0.397747 0.727252 2.437500 -v 0.215260 0.605318 2.437500 -v 0.239177 0.547575 2.437500 -v 0.441941 0.683058 2.437500 -v 0.577424 0.885823 2.437500 -v 0.625000 1.125000 2.437500 v 0.625000 0.000000 0.312500 v 0.577425 0.239177 0.312500 v 0.441941 0.441942 0.312500 @@ -372,14 +2256,6 @@ v 0.239177 0.577425 2.062500 v 0.000000 0.625000 2.062500 v 0.215260 0.519682 2.062500 v 0.000000 0.562500 2.062500 -v 0.239177 0.547575 2.062500 -v 0.000000 0.500000 2.062500 -v 0.000000 0.562500 2.062500 -v 0.215260 0.605318 2.062500 -v 0.239177 0.547575 0.687500 -v 0.000000 0.500000 0.687500 -v 0.215260 0.605318 0.687500 -v 0.000000 0.562500 0.687500 v -0.250000 -0.437500 -1.875000 v 0.250000 -0.437500 -1.875000 v -0.250000 -1.812500 -1.875000 @@ -416,14 +2292,14 @@ v -0.250000 -0.312500 -2.875000 v 0.250000 -0.312500 -2.875000 v -0.375000 -0.600718 -3.125000 v 0.375000 -0.600718 -3.125000 -v -0.375000 -0.654728 -3.449057 -v 0.375000 -0.654728 -3.449057 +v -0.375000 -0.654727 -3.449057 +v 0.375000 -0.654727 -3.449057 v -0.375000 -3.311872 -4.173732 v 0.375000 -3.311872 -4.173732 v -0.375000 -3.085226 -4.929220 v 0.375000 -3.085226 -4.929220 -v 0.375000 -0.961348 -4.201034 -v -0.375000 -0.961348 -4.201034 +v 0.375000 -0.961349 -4.201034 +v -0.375000 -0.961349 -4.201034 v 0.250000 -0.812500 -4.875000 v 0.375000 -0.312500 -4.679806 v 0.250000 -0.812500 -2.875000 @@ -480,94 +2356,6 @@ v -0.125000 -1.437500 -3.125000 v 0.125000 -1.437500 -3.125000 v -0.125000 -1.437500 -3.500000 v 0.125000 -1.437500 -3.500000 -v -0.250000 -1.580894 -0.329788 -v -0.250000 -1.459289 -0.374049 -v -0.250000 -1.331845 -0.351577 -v -0.250000 -1.232712 -0.268394 -v -0.250000 -1.188451 -0.146789 -v -0.250000 -1.210923 -0.019345 -v -0.250000 -1.294106 0.079788 -v -0.250000 -1.415711 0.124049 -v -0.250000 -1.543154 0.101577 -v -0.250000 -1.642288 0.018394 -v -0.250000 -1.686549 -0.103211 -v -0.250000 -1.664077 -0.230654 -v -0.500000 -1.580894 -0.329788 -v -0.500000 -1.459289 -0.374049 -v -0.500000 -1.331845 -0.351577 -v -0.500000 -1.232712 -0.268394 -v -0.500000 -1.188451 -0.146789 -v -0.500000 -1.210923 -0.019345 -v -0.500000 -1.294106 0.079788 -v -0.500000 -1.415711 0.124049 -v -0.500000 -1.543154 0.101577 -v -0.500000 -1.642288 0.018394 -v -0.500000 -1.686549 -0.103211 -v -0.500000 -1.664077 -0.230654 -v -0.593750 -0.612984 1.052531 -v -0.593750 -0.521780 1.019336 -v -0.593750 -0.426197 1.036189 -v -0.593750 -0.351847 1.098576 -v -0.593750 -0.318652 1.189780 -v -0.593750 -0.335506 1.285363 -v -0.593750 -0.397893 1.359713 -v -0.593750 -0.489097 1.392909 -v -0.593750 -0.584679 1.376055 -v -0.593750 -0.659029 1.313668 -v -0.593750 -0.692225 1.222464 -v -0.593750 -0.675371 1.126881 -v -0.781250 -0.612984 1.052531 -v -0.781250 -0.521780 1.019336 -v -0.781250 -0.426197 1.036189 -v -0.781250 -0.351847 1.098576 -v -0.781250 -0.318652 1.189780 -v -0.781250 -0.335506 1.285363 -v -0.781250 -0.397893 1.359713 -v -0.781250 -0.489097 1.392909 -v -0.781250 -0.584679 1.376055 -v -0.781250 -0.659029 1.313668 -v -0.781250 -0.692225 1.222464 -v -0.781250 -0.675371 1.126881 -v -0.750000 -0.643681 1.226622 -v -0.625000 -0.643681 1.226622 -v -0.750000 -0.438893 1.083228 -v -0.625000 -0.438893 1.083228 -v -0.750000 -0.582287 0.878440 -v -0.750000 -0.787075 1.021834 -v -0.625000 -0.787075 1.021834 -v -0.625000 -0.582287 0.878440 -v -0.437500 -1.155863 0.059288 -v -0.437500 -1.360651 0.202682 -v -0.312500 -1.360651 0.202682 -v -0.312500 -1.155863 0.059288 -v -0.437500 -1.227560 -0.043106 -v -0.437500 -1.432348 0.100288 -v -0.312500 -1.432348 0.100288 -v -0.312500 -1.227560 -0.043106 -v -0.781250 -0.577135 1.103728 -v -0.781250 -0.516333 1.081598 -v -0.781250 -0.452611 1.092834 -v -0.781250 -0.403044 1.134425 -v -0.781250 -0.380914 1.195228 -v -0.781250 -0.392150 1.258950 -v -0.781250 -0.433741 1.308516 -v -0.781250 -0.494544 1.330647 -v -0.781250 -0.558265 1.319411 -v -0.781250 -0.607832 1.277819 -v -0.781250 -0.629963 1.217017 -v -0.781250 -0.618727 1.153295 -v -1.531250 -0.577135 1.103728 -v -1.531250 -0.516333 1.081598 -v -1.531250 -0.452611 1.092834 -v -1.531250 -0.403044 1.134425 -v -1.531250 -0.380914 1.195228 -v -1.531250 -0.392150 1.258950 -v -1.531250 -0.433741 1.308516 -v -1.531250 -0.494544 1.330647 -v -1.531250 -0.558265 1.319411 -v -1.531250 -0.607832 1.277819 -v -1.531250 -0.629963 1.217017 -v -1.531250 -0.618727 1.153295 v -0.375000 -0.375000 -1.937500 v -0.468750 -0.400120 -1.937500 v -0.537380 -0.468750 -1.937500 @@ -616,272 +2404,6 @@ v -0.212621 -0.656250 -5.062500 v -0.187500 -0.562500 -5.062500 v -0.212621 -0.468750 -5.062500 v -0.281250 -0.400120 -5.062500 -v -0.375000 -0.437500 -6.562500 -v -0.437500 -0.454247 -6.562500 -v -0.483253 -0.500000 -6.562500 -v -0.500000 -0.562500 -6.562500 -v -0.483253 -0.625000 -6.562500 -v -0.437500 -0.670753 -6.562500 -v -0.375000 -0.687500 -6.562500 -v -0.312500 -0.670753 -6.562500 -v -0.266747 -0.625000 -6.562500 -v -0.250000 -0.562500 -6.562500 -v -0.266747 -0.500000 -6.562500 -v -0.312500 -0.454247 -6.562500 -v -0.375000 -2.937500 -7.062500 -v -0.375000 -0.504487 -6.812500 -v -0.437500 -0.518991 -6.804127 -v -0.483253 -0.558614 -6.781250 -v -0.500000 -0.612741 -6.750000 -v -0.483253 -0.666867 -6.718750 -v -0.437500 -0.706490 -6.695873 -v -0.375000 -0.720994 -6.687500 -v -0.312500 -0.706490 -6.695873 -v -0.266747 -0.666867 -6.718750 -v -0.250000 -0.612741 -6.750000 -v -0.266747 -0.558614 -6.781250 -v -0.312500 -0.518991 -6.804127 -v -0.375000 -0.687500 -6.995513 -v -0.437500 -0.695874 -6.981009 -v -0.483253 -0.718750 -6.941386 -v -0.500000 -0.750000 -6.887259 -v -0.483253 -0.781250 -6.833133 -v -0.437500 -0.804126 -6.793509 -v -0.375000 -0.812500 -6.779007 -v -0.312500 -0.804126 -6.793509 -v -0.266747 -0.781250 -6.833133 -v -0.250000 -0.750000 -6.887259 -v -0.266747 -0.718750 -6.941386 -v -0.312500 -0.695874 -6.981009 -v -0.375000 -0.937500 -7.062500 -v -0.437500 -0.937500 -7.045753 -v -0.483253 -0.937500 -7.000000 -v -0.500000 -0.937500 -6.937500 -v -0.483253 -0.937500 -6.875000 -v -0.437500 -0.937500 -6.829247 -v -0.375000 -0.937500 -6.812500 -v -0.312500 -0.937500 -6.829247 -v -0.266747 -0.937500 -6.875000 -v -0.250000 -0.937500 -6.937500 -v -0.266747 -0.937500 -7.000000 -v -0.312500 -0.937500 -7.045753 -v -0.437500 -2.937500 -7.045753 -v -0.483253 -2.937500 -7.000000 -v -0.500000 -2.937500 -6.937500 -v -0.483253 -2.937500 -6.875000 -v -0.437500 -2.937500 -6.829247 -v -0.375000 -2.937500 -6.812500 -v -0.312500 -2.937500 -6.829247 -v -0.266747 -2.937500 -6.875000 -v -0.250000 -2.937500 -6.937500 -v -0.266747 -2.937500 -7.000000 -v -0.312500 -2.937500 -7.045753 -v 0.375000 -0.437500 -6.562500 -v -0.324759 -3.125000 -7.062500 -v -0.378886 -3.156250 -7.045753 -v -0.418509 -3.179127 -7.000000 -v -0.433013 -3.187500 -6.937500 -v -0.418509 -3.179127 -6.875000 -v -0.378886 -3.156250 -6.829247 -v -0.324759 -3.125000 -6.812500 -v -0.270633 -3.093750 -6.829247 -v -0.231009 -3.070873 -6.875000 -v -0.216506 -3.062500 -6.937500 -v -0.231009 -3.070873 -7.000000 -v -0.270633 -3.093750 -7.045753 -v -0.187500 -3.262259 -7.062500 -v -0.218750 -3.316386 -7.045753 -v -0.241627 -3.356009 -7.000000 -v -0.250000 -3.370513 -6.937500 -v -0.241627 -3.356009 -6.875000 -v -0.218750 -3.316386 -6.829247 -v -0.187500 -3.262259 -6.812500 -v -0.156250 -3.208133 -6.829247 -v -0.133374 -3.168509 -6.875000 -v -0.125000 -3.154006 -6.937500 -v -0.133373 -3.168509 -7.000000 -v -0.156250 -3.208133 -7.045753 -v 0.000000 -3.312500 -7.062500 -v 0.000000 -3.375000 -7.045753 -v 0.000000 -3.420753 -7.000000 -v 0.000000 -3.437500 -6.937500 -v 0.000000 -3.420753 -6.875000 -v -0.000000 -3.375000 -6.829247 -v 0.000000 -3.312500 -6.812500 -v -0.000000 -3.250000 -6.829247 -v 0.000000 -3.204247 -6.875000 -v 0.000000 -3.187500 -6.937500 -v 0.000000 -3.204247 -7.000000 -v 0.000000 -3.250000 -7.045753 -v 0.437500 -0.454247 -6.562500 -v 0.483253 -0.500000 -6.562500 -v 0.500000 -0.562500 -6.562500 -v 0.483253 -0.625000 -6.562500 -v 0.437500 -0.670753 -6.562500 -v 0.375000 -0.687500 -6.562500 -v 0.312500 -0.670753 -6.562500 -v 0.266747 -0.625000 -6.562500 -v 0.250000 -0.562500 -6.562500 -v 0.266747 -0.500000 -6.562500 -v 0.312500 -0.454247 -6.562500 -v 0.375000 -2.937500 -7.062500 -v 0.375000 -0.504487 -6.812500 -v 0.437500 -0.518991 -6.804127 -v 0.483253 -0.558614 -6.781250 -v 0.500000 -0.612741 -6.750000 -v 0.483253 -0.666867 -6.718750 -v 0.437500 -0.706490 -6.695873 -v 0.375000 -0.720994 -6.687500 -v 0.312500 -0.706490 -6.695873 -v 0.266747 -0.666867 -6.718750 -v 0.250000 -0.612741 -6.750000 -v 0.266747 -0.558614 -6.781250 -v 0.312500 -0.518991 -6.804127 -v 0.375000 -0.687500 -6.995513 -v 0.437500 -0.695874 -6.981009 -v 0.483253 -0.718750 -6.941386 -v 0.500000 -0.750000 -6.887259 -v 0.483253 -0.781250 -6.833133 -v 0.437500 -0.804126 -6.793509 -v 0.375000 -0.812500 -6.779007 -v 0.312500 -0.804126 -6.793509 -v 0.266747 -0.781250 -6.833133 -v 0.250000 -0.750000 -6.887259 -v 0.266747 -0.718750 -6.941386 -v 0.312500 -0.695874 -6.981009 -v 0.375000 -0.937500 -7.062500 -v 0.437500 -0.937500 -7.045753 -v 0.483253 -0.937500 -7.000000 -v 0.500000 -0.937500 -6.937500 -v 0.483253 -0.937500 -6.875000 -v 0.437500 -0.937500 -6.829247 -v 0.375000 -0.937500 -6.812500 -v 0.312500 -0.937500 -6.829247 -v 0.266747 -0.937500 -6.875000 -v 0.250000 -0.937500 -6.937500 -v 0.266747 -0.937500 -7.000000 -v 0.312500 -0.937500 -7.045753 -v 0.437500 -2.937500 -7.045753 -v 0.483253 -2.937500 -7.000000 -v 0.500000 -2.937500 -6.937500 -v 0.483253 -2.937500 -6.875000 -v 0.437500 -2.937500 -6.829247 -v 0.375000 -2.937500 -6.812500 -v 0.312500 -2.937500 -6.829247 -v 0.266747 -2.937500 -6.875000 -v 0.250000 -2.937500 -6.937500 -v 0.266747 -2.937500 -7.000000 -v 0.312500 -2.937500 -7.045753 -v 0.324759 -3.125000 -7.062500 -v 0.378886 -3.156250 -7.045753 -v 0.418509 -3.179127 -7.000000 -v 0.433012 -3.187500 -6.937500 -v 0.418509 -3.179127 -6.875000 -v 0.378886 -3.156250 -6.829247 -v 0.324759 -3.125000 -6.812500 -v 0.270633 -3.093750 -6.829247 -v 0.231009 -3.070873 -6.875000 -v 0.216506 -3.062500 -6.937500 -v 0.231009 -3.070873 -7.000000 -v 0.270633 -3.093750 -7.045753 -v 0.187500 -3.262259 -7.062500 -v 0.218750 -3.316386 -7.045753 -v 0.241627 -3.356009 -7.000000 -v 0.250000 -3.370513 -6.937500 -v 0.241627 -3.356009 -6.875000 -v 0.218750 -3.316386 -6.829247 -v 0.187500 -3.262259 -6.812500 -v 0.156250 -3.208133 -6.829247 -v 0.133373 -3.168509 -6.875000 -v 0.125000 -3.154006 -6.937500 -v 0.133373 -3.168509 -7.000000 -v 0.156250 -3.208133 -7.045753 -v -0.375000 -0.437500 1.187500 -v -0.437500 -0.454247 1.187500 -v -0.483253 -0.500000 1.187500 -v -0.500000 -0.562500 1.187500 -v -0.483253 -0.625000 1.187500 -v -0.437500 -0.670753 1.187500 -v -0.375000 -0.687500 1.187500 -v -0.312500 -0.670753 1.187500 -v -0.266747 -0.625000 1.187500 -v -0.250000 -0.562500 1.187500 -v -0.266747 -0.500000 1.187500 -v -0.312500 -0.454247 1.187500 -v 0.375000 -0.437500 1.187500 -v 0.437500 -0.454247 1.187500 -v 0.483253 -0.500000 1.187500 -v 0.500000 -0.562500 1.187500 -v 0.483253 -0.625000 1.187500 -v 0.437500 -0.670753 1.187500 -v 0.375000 -0.687500 1.187500 -v 0.312500 -0.670753 1.187500 -v 0.266747 -0.625000 1.187500 -v 0.250000 -0.562500 1.187500 -v 0.266747 -0.500000 1.187500 -v 0.312500 -0.454247 1.187500 -v 0.000000 -0.293931 1.531675 -v -0.078125 -0.313602 1.538834 -v -0.135317 -0.367344 1.558395 -v -0.156250 -0.440758 1.585115 -v -0.135317 -0.514171 1.611836 -v -0.078125 -0.567913 1.631396 -v 0.000000 -0.587584 1.638556 -v 0.078125 -0.567914 1.631396 -v 0.135316 -0.514171 1.611836 -v 0.156250 -0.440758 1.585115 -v 0.135316 -0.367344 1.558395 -v 0.078125 -0.313602 1.538834 -v 0.000000 -0.122921 2.001521 -v -0.078125 -0.142592 2.008681 -v -0.135317 -0.196334 2.028241 -v -0.156250 -0.269747 2.054962 -v -0.135317 -0.343161 2.081682 -v -0.078125 -0.396903 2.101243 -v 0.000000 -0.416574 2.108402 -v 0.078125 -0.396903 2.101243 -v 0.135316 -0.343161 2.081682 -v 0.156250 -0.269747 2.054962 -v 0.135316 -0.196334 2.028241 -v 0.078125 -0.142592 2.008681 -v 0.000000 -0.095498 2.191073 -v -0.058594 -0.110252 2.196443 -v -0.101488 -0.150559 2.211114 -v -0.117188 -0.205619 2.231154 -v -0.101488 -0.260679 2.251194 -v -0.058594 -0.300986 2.265865 -v 0.000000 -0.315739 2.271235 -v 0.058594 -0.300986 2.265865 -v 0.101487 -0.260679 2.251194 -v 0.117188 -0.205619 2.231154 -v 0.101487 -0.150559 2.211114 -v 0.058594 -0.110252 2.196443 -v 0.000000 -0.147536 2.276525 -v -0.019531 -0.152454 2.278315 -v -0.033830 -0.165889 2.283205 -v -0.039062 -0.184243 2.289885 -v -0.033830 -0.202596 2.296565 -v -0.019531 -0.216031 2.301455 -v 0.000000 -0.220949 2.303245 -v 0.019531 -0.216032 2.301455 -v 0.033829 -0.202596 2.296565 -v 0.039062 -0.184243 2.289885 -v 0.033829 -0.165889 2.283205 -v 0.019531 -0.152454 2.278315 -v 0.125000 -0.187500 1.375000 -v -0.125000 -0.187500 1.375000 -v 0.062500 -0.187500 1.875000 -v -0.062500 -0.187500 1.875000 -v -0.062500 -0.187500 1.375000 -v -0.125000 -0.187500 1.875000 -v 0.062500 -0.187500 1.375000 -v 0.125000 -0.187500 1.875000 -v 0.187500 -0.312500 1.875000 -v -0.187500 -0.312500 1.875000 -v 0.062500 -0.312500 1.875000 -v -0.062500 -0.312500 1.875000 -v 0.062500 -0.312500 1.375000 -v -0.062500 -0.312500 1.375000 v 0.031250 0.875000 2.500000 v 0.031250 0.875000 2.875000 v -0.031250 0.875000 2.500000 @@ -1138,9 +2660,6 @@ vt -0.000000 0.444444 vt 0.002976 0.444444 vt -0.000000 0.416667 vt 0.002976 0.416667 -vt 0.779762 0.041667 -vt 0.779762 0.750000 -vt 0.755952 0.750000 vt 0.681548 0.069444 vt 0.672619 0.048611 vt 0.681548 0.000000 @@ -1153,15 +2672,6 @@ vt 0.601190 0.263889 vt 0.681548 0.263889 vt 0.732143 0.069444 vt 0.732143 0.263889 -vt 0.797619 0.041667 -vt 0.845238 0.041667 -vt 0.845238 0.750000 -vt 0.821429 0.750000 -vt 0.732143 0.041667 -vt 0.779762 -0.000000 -vt 0.863095 0.041667 -vt 0.845238 0.750000 -vt 0.845238 0.750000 vt 0.651786 0.069444 vt 0.660714 0.069444 vt 0.651786 0.263889 @@ -1197,30 +2707,9 @@ vt 0.461310 0.006944 vt 0.571429 0.131944 vt 0.568452 0.118056 vt 0.571429 0.118056 -vt 0.431548 0.597222 -vt 0.532738 0.590278 -vt 0.431548 0.590278 -vt 0.449405 0.520833 -vt 0.431548 0.513889 -vt 0.431548 0.520833 -vt 0.449405 0.486111 -vt 0.514881 0.493056 -vt 0.514881 0.486111 -vt 0.529762 0.513889 -vt 0.532738 0.541667 -vt 0.532738 0.513889 vt 0.532738 0.430556 vt 0.529762 0.458333 vt 0.532738 0.458333 -vt 0.529762 0.569444 -vt 0.532738 0.597222 -vt 0.532738 0.569444 -vt 0.529762 0.541667 -vt 0.431548 0.541667 -vt 0.434524 0.513889 -vt 0.434524 0.569444 -vt 0.431548 0.569444 -vt 0.434524 0.541667 vt 0.529762 0.402778 vt 0.529762 0.430556 vt 0.532738 0.486111 @@ -1247,12 +2736,6 @@ vt 0.514881 0.486111 vt 0.514881 0.513889 vt 0.446429 0.513889 vt 0.449405 0.513889 -vt 0.449405 0.513889 -vt 0.452381 0.486111 -vt 0.511905 0.513889 -vt 0.514881 0.513889 -vt 0.514881 0.520833 -vt 0.532738 0.520833 vt 0.110119 0.708333 vt 0.175595 0.763889 vt 0.110119 0.763889 @@ -1353,31 +2836,6 @@ vt 0.538690 0.708333 vt 0.538690 0.791667 vt 0.544643 0.833333 vt 0.526786 0.833333 -vt 0.717262 0.500032 -vt 0.727560 0.513905 -vt 0.727560 0.541651 -vt 0.668008 0.736165 -vt 0.668008 0.763835 -vt 0.647468 0.763835 -vt 0.647468 0.680609 -vt 0.657738 0.666774 -vt 0.668008 0.680609 -vt 0.577381 0.722222 -vt 0.571429 0.708333 -vt 0.577381 0.708333 -vt 0.636905 0.722222 -vt 0.625000 0.708333 -vt 0.636905 0.708333 -vt 0.636905 0.680556 -vt 0.625000 0.666667 -vt 0.636905 0.666667 -vt 0.625000 0.722222 -vt 0.577381 0.680556 -vt 0.577381 0.666667 -vt 0.571429 0.666667 -vt 0.711309 0.694407 -vt 0.706168 0.687481 -vt 0.706168 0.673629 vt 0.533983 0.531184 vt 0.541666 0.500130 vt 0.549350 0.531185 @@ -1390,38 +2848,6 @@ vt 0.403030 0.649371 vt 0.403031 0.628407 vt 0.410715 0.597353 vt 0.418398 0.628407 -vt 0.518695 0.923665 -vt 0.528925 0.923665 -vt 0.523810 0.944337 -vt 0.518695 0.937446 -vt 0.523810 0.916775 -vt 0.528925 0.937446 -vt 0.676595 0.272573 -vt 0.683036 0.263897 -vt 0.689476 0.289927 -vt 0.797619 0.805556 -vt 0.800595 0.861111 -vt 0.797619 0.861111 -vt 0.806548 0.861111 -vt 0.800595 0.805556 -vt 0.806548 0.805556 -vt 0.776786 0.805556 -vt 0.779762 0.861111 -vt 0.776786 0.861111 -vt 0.770833 0.805556 -vt 0.770833 0.861111 -vt 0.797619 0.875000 -vt 0.803571 0.875000 -vt 0.779762 0.875000 -vt 0.773810 0.875000 -vt 0.797619 0.750000 -vt 0.791667 0.805556 -vt 0.785714 0.805556 -vt 0.791667 0.861111 -vt 0.785714 0.861111 -vt 0.779762 0.805556 -vt 0.779762 0.791667 -vt 0.797619 0.791667 vt 0.708333 0.347222 vt 0.711310 0.305556 vt 0.711310 0.347222 @@ -1553,12 +2979,9 @@ vt -0.000000 0.333333 vt -0.000000 0.277778 vt -0.000000 0.666667 vt -0.000000 0.472222 -vt 0.732143 0.750000 vt 0.672619 0.020833 vt 0.732143 0.000000 vt 0.571429 0.069444 -vt 0.732143 0.000000 -vt 0.863095 0.750000 vt 0.443298 0.305555 vt 0.441600 0.315121 vt 0.433400 0.315121 @@ -1579,14 +3002,9 @@ vt 0.449405 0.006944 vt 0.449405 -0.000000 vt 0.544643 -0.000000 vt 0.568452 0.131944 -vt 0.449405 0.493056 -vt 0.529762 0.597222 -vt 0.434524 0.597222 vt 0.434524 0.430556 vt 0.517857 0.486111 vt 0.446429 0.486111 -vt 0.452381 0.513889 -vt 0.511905 0.486111 vt 0.324405 0.708333 vt 0.175595 0.916667 vt 0.324405 0.833333 @@ -1625,45 +3043,6 @@ vt 0.401786 0.902778 vt 0.431548 0.812500 vt 0.401786 0.861111 vt 0.520833 0.736111 -vt 0.706964 0.541651 -vt 0.705371 0.527778 -vt 0.706964 0.513905 -vt 0.711316 0.503749 -vt 0.723207 0.503749 -vt 0.729153 0.527778 -vt 0.723207 0.551806 -vt 0.717262 0.555524 -vt 0.711316 0.551806 -vt 0.645879 0.750000 -vt 0.647468 0.736165 -vt 0.651809 0.726037 -vt 0.657738 0.722330 -vt 0.663667 0.726037 -vt 0.669597 0.750000 -vt 0.663667 0.773963 -vt 0.657738 0.777671 -vt 0.651809 0.773963 -vt 0.669597 0.694444 -vt 0.668008 0.708280 -vt 0.663667 0.718408 -vt 0.657738 0.722115 -vt 0.651809 0.718408 -vt 0.647468 0.708280 -vt 0.645879 0.694444 -vt 0.651809 0.670481 -vt 0.663667 0.670481 -vt 0.571429 0.722222 -vt 0.625000 0.680556 -vt 0.571429 0.680556 -vt 0.708341 0.668559 -vt 0.711309 0.666703 -vt 0.714278 0.668559 -vt 0.716451 0.673629 -vt 0.717246 0.680555 -vt 0.716451 0.687481 -vt 0.714278 0.692551 -vt 0.708341 0.692552 -vt 0.705373 0.680555 vt 0.546103 0.538762 vt 0.541666 0.541536 vt 0.537230 0.538762 @@ -1700,37 +3079,6 @@ vt 0.406278 0.600127 vt 0.415151 0.600127 vt 0.418398 0.607704 vt 0.419587 0.618056 -vt 0.520857 0.942491 -vt 0.518695 0.937446 -vt 0.517904 0.930556 -vt 0.520857 0.918621 -vt 0.523810 0.916775 -vt 0.526763 0.918621 -vt 0.529716 0.930556 -vt 0.528925 0.937446 -vt 0.526763 0.942490 -vt 0.526763 0.942490 -vt 0.523810 0.944337 -vt 0.520857 0.942491 -vt 0.517904 0.930556 -vt 0.518695 0.923665 -vt 0.520857 0.918621 -vt 0.526763 0.918621 -vt 0.528925 0.923665 -vt 0.529716 0.930556 -vt 0.686754 0.296278 -vt 0.676595 0.289927 -vt 0.683036 0.298603 -vt 0.679317 0.296278 -vt 0.675599 0.281250 -vt 0.679317 0.266222 -vt 0.686754 0.266222 -vt 0.689476 0.272573 -vt 0.690473 0.281250 -vt 0.779762 0.805556 -vt 0.797619 0.805556 -vt 0.773810 0.791667 -vt 0.803571 0.791667 vt 0.714286 0.388889 vt 0.729167 0.305556 vt 0.708333 0.263889 @@ -2057,14 +3405,6 @@ vt 0.544643 0.284722 vt 0.544643 0.305556 vt 0.544643 0.326389 vt 0.544643 0.347222 -vt 0.532738 0.569444 -vt 0.431548 0.534722 -vt 0.532738 0.534722 -vt 0.449405 0.486111 -vt 0.514881 0.513889 -vt 0.449405 0.513889 -vt 0.532738 0.597222 -vt 0.431548 0.569444 vt 0.077381 0.326389 vt 0.077381 0.472222 vt 0.077381 0.451389 @@ -2093,19 +3433,19 @@ vt 1.000000 0.472222 vt 1.000000 0.055556 vt 0.976190 0.097222 vt 1.000000 0.333333 -vt 0.931548 0.298611 -vt 0.925595 0.027778 -vt 0.892857 0.312500 -vt 0.952381 0.368056 -vt 0.892857 0.312500 -vt 0.931548 0.298611 +vt 0.928571 0.291667 +vt 0.925595 0.034722 +vt 0.892857 0.326389 +vt 0.949405 0.368056 +vt 0.892857 0.326389 +vt 0.928571 0.291667 vt 0.949405 0.333333 vt 0.964286 0.368056 -vt 0.875000 0.333333 +vt 0.875000 0.347222 vt 0.863095 0.368056 vt 0.863095 0.312500 vt 0.880952 0.305556 -vt 0.925595 0.027778 +vt 0.925595 0.034722 vt 0.916667 0.000000 vt 0.961310 0.055556 vt 0.976190 0.041667 @@ -2114,7 +3454,7 @@ vt 0.958333 0.312500 vt 0.949405 0.333333 vt 0.964286 0.368056 vt 0.958333 0.312500 -vt 0.875000 0.333333 +vt 0.875000 0.347222 vt 0.863095 0.368056 vt 0.875000 0.368056 vt 0.880952 0.305556 @@ -2131,83 +3471,6 @@ vt 0.401786 0.763889 vt 0.550595 0.736111 vt 0.568452 0.736111 vt 0.550595 0.763889 -vt 0.705357 0.611111 -vt 0.693452 0.597222 -vt 0.705357 0.597222 -vt 0.705357 0.513889 -vt 0.693452 0.500000 -vt 0.705357 0.500000 -vt 0.705357 0.652778 -vt 0.693452 0.638889 -vt 0.705357 0.638889 -vt 0.705357 0.555556 -vt 0.693452 0.541667 -vt 0.705357 0.541667 -vt 0.693452 0.583333 -vt 0.705357 0.583333 -vt 0.693452 0.625000 -vt 0.705357 0.625000 -vt 0.693452 0.527778 -vt 0.705357 0.527778 -vt 0.693452 0.569444 -vt 0.705357 0.569444 -vt 0.693452 0.611111 -vt 0.693452 0.513889 -vt 0.705357 0.666667 -vt 0.693452 0.652778 -vt 0.693452 0.555556 -vt 0.636905 0.805556 -vt 0.645833 0.791667 -vt 0.645833 0.805556 -vt 0.636905 0.708333 -vt 0.645833 0.694444 -vt 0.645833 0.708333 -vt 0.636905 0.750000 -vt 0.645833 0.736111 -vt 0.645833 0.750000 -vt 0.636905 0.791667 -vt 0.645833 0.777778 -vt 0.636905 0.694444 -vt 0.645833 0.680556 -vt 0.636905 0.833333 -vt 0.645833 0.819444 -vt 0.645833 0.833333 -vt 0.636905 0.736111 -vt 0.645833 0.722222 -vt 0.636905 0.777778 -vt 0.645833 0.763889 -vt 0.636905 0.680556 -vt 0.645833 0.666667 -vt 0.636905 0.819444 -vt 0.636905 0.722222 -vt 0.636905 0.763889 -vt 0.577381 0.750000 -vt 0.625000 0.750000 -vt 0.705357 0.708333 -vt 0.669643 0.715278 -vt 0.669643 0.708333 -vt 0.705357 0.687500 -vt 0.669643 0.694444 -vt 0.669643 0.687500 -vt 0.705357 0.736111 -vt 0.669643 0.743056 -vt 0.669643 0.736111 -vt 0.705357 0.666667 -vt 0.669643 0.673611 -vt 0.669643 0.666667 -vt 0.705357 0.715278 -vt 0.669643 0.722222 -vt 0.705357 0.694444 -vt 0.669643 0.701389 -vt 0.705357 0.743056 -vt 0.669643 0.750000 -vt 0.705357 0.673611 -vt 0.669643 0.680556 -vt 0.705357 0.722222 -vt 0.669643 0.729167 -vt 0.705357 0.701389 -vt 0.705357 0.680556 -vt 0.705357 0.729167 vt 0.550595 0.513889 vt 0.693452 0.527778 vt 0.550595 0.527778 @@ -2258,288 +3521,6 @@ vt 0.419643 0.652778 vt 0.520833 0.652778 vt 0.419643 0.708333 vt 0.419643 0.638889 -vt 0.369048 0.916667 -vt 0.377976 0.923611 -vt 0.369048 0.923611 -vt 0.369048 0.979167 -vt 0.377976 0.986111 -vt 0.369048 0.986111 -vt 0.369048 0.951389 -vt 0.377976 0.944444 -vt 0.377976 0.951389 -vt 0.369048 0.965278 -vt 0.377976 0.958333 -vt 0.377976 0.965278 -vt 0.369048 0.930556 -vt 0.377976 0.930556 -vt 0.369048 0.993056 -vt 0.377976 0.993056 -vt 0.369048 0.958333 -vt 0.369048 0.972222 -vt 0.377976 0.972222 -vt 0.377976 0.937500 -vt 0.369048 0.937500 -vt 0.369048 1.000000 -vt 0.377976 1.000000 -vt 0.377976 0.979167 -vt 0.369048 0.944444 -vt 0.386905 0.958333 -vt 0.386905 0.972222 -vt 0.386905 0.930556 -vt 0.386905 0.937500 -vt 0.386905 1.000000 -vt 0.386905 0.979167 -vt 0.386905 0.944444 -vt 0.377976 0.916667 -vt 0.386905 0.923611 -vt 0.386905 0.986111 -vt 0.386905 0.951389 -vt 0.386905 0.965278 -vt 0.386905 0.993056 -vt 0.395833 0.993056 -vt 0.395833 0.951389 -vt 0.395833 0.958333 -vt 0.395833 0.972222 -vt 0.395833 0.930556 -vt 0.395833 0.937500 -vt 0.395833 1.000000 -vt 0.395833 0.979167 -vt 0.395833 0.944444 -vt 0.386905 0.916667 -vt 0.395833 0.923611 -vt 0.395833 0.986111 -vt 0.395833 0.965278 -vt 0.491071 0.993056 -vt 0.491071 0.958333 -vt 0.491071 0.972222 -vt 0.491071 0.930556 -vt 0.491071 0.937500 -vt 0.491071 1.000000 -vt 0.491071 0.979167 -vt 0.491071 0.944444 -vt 0.395833 0.916667 -vt 0.491071 0.923611 -vt 0.491071 0.986111 -vt 0.491071 0.951389 -vt 0.491071 0.965278 -vt 0.500000 0.923611 -vt 0.500000 0.930556 -vt 0.500000 0.993056 -vt 0.500000 0.958333 -vt 0.500000 0.972222 -vt 0.500000 0.937500 -vt 0.500000 1.000000 -vt 0.500000 0.979167 -vt 0.500000 0.944444 -vt 0.491071 0.916667 -vt 0.500000 0.986111 -vt 0.500000 0.951389 -vt 0.500000 0.965278 -vt 0.508929 0.958333 -vt 0.508929 0.965278 -vt 0.508929 0.923611 -vt 0.508929 0.930556 -vt 0.508929 0.993056 -vt 0.508929 0.972222 -vt 0.508929 0.937500 -vt 0.508929 1.000000 -vt 0.508929 0.979167 -vt 0.508929 0.944444 -vt 0.500000 0.916667 -vt 0.508929 0.986111 -vt 0.508929 0.951389 -vt 0.517857 0.951389 -vt 0.517857 0.958333 -vt 0.517857 0.965278 -vt 0.517857 0.923611 -vt 0.517857 0.930556 -vt 0.517857 0.993056 -vt 0.517857 0.972222 -vt 0.517857 0.937500 -vt 0.517857 1.000000 -vt 0.517857 0.979167 -vt 0.517857 0.944444 -vt 0.508929 0.916667 -vt 0.517857 0.986111 -vt 0.377976 0.993056 -vt 0.369048 1.000000 -vt 0.369048 0.993056 -vt 0.377976 0.930556 -vt 0.369048 0.937500 -vt 0.369048 0.930556 -vt 0.369048 0.965278 -vt 0.377976 0.972222 -vt 0.369048 0.972222 -vt 0.369048 0.951389 -vt 0.377976 0.958333 -vt 0.369048 0.958333 -vt 0.377976 0.986111 -vt 0.369048 0.986111 -vt 0.377976 0.923611 -vt 0.369048 0.923611 -vt 0.377976 0.944444 -vt 0.369048 0.944444 -vt 0.369048 0.979167 -vt 0.369048 0.916667 -vt 0.377976 0.979167 -vt 0.386905 0.965278 -vt 0.377976 0.965278 -vt 0.386905 0.944444 -vt 0.377976 0.951389 -vt 0.386905 0.979167 -vt 0.377976 0.916667 -vt 0.386905 0.923611 -vt 0.377976 0.937500 -vt 0.386905 0.972222 -vt 0.386905 0.993056 -vt 0.377976 1.000000 -vt 0.386905 0.930556 -vt 0.386905 0.951389 -vt 0.395833 0.923611 -vt 0.395833 0.958333 -vt 0.386905 0.958333 -vt 0.395833 0.944444 -vt 0.395833 0.986111 -vt 0.386905 0.986111 -vt 0.386905 0.916667 -vt 0.395833 0.937500 -vt 0.386905 0.937500 -vt 0.395833 0.979167 -vt 0.395833 0.993056 -vt 0.386905 1.000000 -vt 0.395833 0.930556 -vt 0.395833 0.972222 -vt 0.491071 0.923611 -vt 0.491071 0.958333 -vt 0.395833 0.965278 -vt 0.491071 0.944444 -vt 0.395833 0.951389 -vt 0.491071 0.979167 -vt 0.395833 0.916667 -vt 0.491071 0.937500 -vt 0.491071 0.972222 -vt 0.491071 0.993056 -vt 0.395833 1.000000 -vt 0.491071 0.930556 -vt 0.491071 0.951389 -vt 0.491071 0.986111 -vt 0.500000 0.993056 -vt 0.500000 0.923611 -vt 0.500000 0.958333 -vt 0.491071 0.965278 -vt 0.500000 0.944444 -vt 0.500000 0.986111 -vt 0.491071 0.916667 -vt 0.500000 0.972222 -vt 0.491071 1.000000 -vt 0.500000 0.937500 -vt 0.500000 0.951389 -vt 0.508929 0.958333 -vt 0.508929 0.993056 -vt 0.508929 0.923611 -vt 0.500000 0.930556 -vt 0.500000 0.965278 -vt 0.508929 0.944444 -vt 0.508929 0.979167 -vt 0.500000 0.979167 -vt 0.508929 0.916667 -vt 0.500000 0.916667 -vt 0.500000 1.000000 -vt 0.508929 0.930556 -vt 0.508929 0.972222 -vt 0.517857 0.972222 -vt 0.508929 0.965278 -vt 0.517857 0.965278 -vt 0.517857 0.979167 -vt 0.508929 0.986111 -vt 0.517857 0.986111 -vt 0.517857 0.993056 -vt 0.517857 0.916667 -vt 0.517857 0.923611 -vt 0.517857 0.930556 -vt 0.508929 0.937500 -vt 0.517857 0.937500 -vt 0.517857 0.944444 -vt 0.508929 0.951389 -vt 0.517857 0.951389 -vt 0.000000 0.937500 -vt 0.000000 0.965278 -vt 0.000000 0.993056 -vt 0.000000 0.930556 -vt 0.000000 0.958333 -vt 0.000000 0.916667 -vt 0.000000 0.923611 -vt 0.000000 0.923611 -vt 0.000000 0.916667 -vt 0.000000 0.958333 -vt 0.000000 0.930556 -vt 0.000000 0.993056 -vt 0.000000 0.965278 -vt 0.000000 0.937500 -vt 0.000000 0.986111 -vt 0.000000 0.972222 -vt 0.000000 0.951389 -vt 0.000000 0.944444 -vt 0.000000 0.979167 -vt 0.000000 0.979167 -vt 0.000000 0.944444 -vt 0.000000 0.951389 -vt 0.000000 0.972222 -vt 0.000000 0.986111 -vt 0.636905 0.298611 -vt 0.660714 0.291667 -vt 0.660714 0.298611 -vt 0.636905 0.333333 -vt 0.660714 0.326389 -vt 0.660714 0.333333 -vt 0.636905 0.263889 -vt 0.660714 0.270833 -vt 0.636905 0.270833 -vt 0.636905 0.284722 -vt 0.636905 0.291667 -vt 0.636905 0.326389 -vt 0.660714 0.319444 -vt 0.636905 0.347222 -vt 0.660714 0.340278 -vt 0.660714 0.347222 -vt 0.636905 0.277778 -vt 0.660714 0.284722 -vt 0.636905 0.312500 -vt 0.636905 0.319444 -vt 0.636905 0.305556 -vt 0.660714 0.305556 -vt 0.636905 0.340278 -vt 0.660714 0.277778 -vt 0.660714 0.312500 -vt 0.669643 0.340278 -vt 0.669643 0.347222 -vt 0.669643 0.284722 -vt 0.669643 0.312500 -vt 0.669643 0.319444 -vt 0.669643 0.305556 -vt 0.669643 0.277778 -vt 0.669643 0.291667 -vt 0.669643 0.298611 -vt 0.669643 0.333333 -vt 0.660714 0.263889 -vt 0.669643 0.270833 -vt 0.669643 0.326389 -vt 0.675595 0.347222 -vt 0.675595 0.277778 -vt 0.675595 0.284722 -vt 0.675595 0.319444 -vt 0.675595 0.305556 -vt 0.675595 0.340278 -vt 0.675595 0.312500 -vt 0.675595 0.291667 -vt 0.675595 0.298611 -vt 0.675595 0.326389 -vt 0.675595 0.333333 -vt 0.675595 0.263889 -vt 0.675595 0.270833 -vt 0.676042 0.302196 -vt 0.681100 0.302196 -vt 0.678571 0.312365 vt 0.619048 0.416667 vt 0.616071 0.416667 vt 0.604167 0.416667 @@ -2631,60 +3612,32 @@ vt 0.038690 0.666667 vt 0.520833 0.291667 vt 0.425595 0.305556 vt 0.119048 0.555556 -vt 0.514881 0.486111 -vt 0.431548 0.597222 -vt 0.532738 0.513889 -vt 0.431548 0.513889 vt 0.077381 0.305556 vt 0.077381 0.347222 vt 0.077381 0.388889 vt 0.077381 0.555556 vt 0.077381 0.513889 vt 1.000000 0.097222 -vt 0.952381 0.368056 +vt 0.949405 0.368056 vt 0.875000 0.368056 vt 0.568452 0.763889 -vt 0.693452 0.666667 -vt 0.636905 0.666667 -vt 0.636905 0.750000 -vt 0.571429 0.750000 -vt 0.705357 0.750000 vt 0.693452 0.500000 vt 0.419643 0.763889 -vt 0.508929 1.000000 -vt 0.000000 1.000000 -vt 0.000000 1.000000 -vt 0.669643 0.263889 -vt 0.677132 0.311457 -vt 0.676042 0.308915 -vt 0.675653 0.305556 -vt 0.677132 0.299654 -vt 0.678571 0.298746 -vt 0.680011 0.299654 -vt 0.681490 0.305556 -vt 0.681100 0.308915 -vt 0.680011 0.311457 vt 0.726190 0.388889 vt 0.693452 0.500000 vt 0.419643 0.763889 vn 0.0000 0.0000 1.0000 vn 0.0000 0.0000 -1.0000 -vn -1.0000 0.0000 0.0000 vn 0.0000 -1.0000 0.0000 vn 1.0000 0.0000 0.0000 vn 0.7071 0.0000 0.7071 vn -0.7071 0.0000 0.7071 +vn -1.0000 0.0000 0.0000 vn -0.9808 -0.1951 0.0000 vn -0.0000 1.0000 0.0000 -vn -0.9239 -0.3827 0.0000 vn -0.9239 0.3827 0.0000 vn 0.0000 -0.8480 0.5300 vn 0.0000 -0.8000 -0.6000 -vn 0.0000 0.8192 -0.5736 -vn 0.0000 -0.8192 0.5736 -vn 0.0000 -0.3420 -0.9397 -vn 0.8944 0.4472 0.0000 -vn -0.8944 0.4472 0.0000 vn 0.9965 0.0830 0.0000 vn -0.9965 0.0830 0.0000 vn 0.0000 0.9363 0.3511 @@ -2708,6 +3661,7 @@ vn -0.3827 -0.9239 -0.0000 vn -0.6479 -0.6479 0.4006 vn -0.7071 -0.7071 -0.0000 vn -0.8465 -0.3506 0.4006 +vn -0.9239 -0.3827 -0.0000 vn -0.9163 -0.0000 0.4006 vn -0.8465 0.3506 0.4006 vn -0.6479 0.6479 0.4006 @@ -2823,10 +3777,6 @@ vn 0.3583 -0.8651 -0.3511 vn 0.6621 -0.6621 -0.3511 vn 0.8651 -0.3583 -0.3511 vn 0.9363 -0.0000 -0.3511 -vn 0.9808 -0.1951 0.0000 -vn -0.4430 0.8965 -0.0000 -vn 0.4430 -0.8965 0.0000 -vn 0.1951 -0.9808 0.0000 vn 0.1951 0.9808 0.0000 vn 0.4430 0.8965 -0.0000 vn -0.8765 0.3630 -0.3162 @@ -2881,18 +3831,6 @@ vn 0.0000 0.9285 0.3714 vn 0.0000 -0.9285 -0.3714 vn 0.0000 -0.1602 0.9871 vn 0.0000 -0.3162 0.9487 -vn 0.0000 0.9962 -0.0872 -vn 0.0000 0.9063 0.4226 -vn 0.0000 -0.9063 -0.4226 -vn 0.0000 -0.5736 -0.8192 -vn 0.0000 -0.0872 -0.9962 -vn 0.0000 0.4226 -0.9063 -vn 0.0000 -0.4226 0.9063 -vn 0.0000 0.5736 0.8192 -vn 0.0000 -0.9962 0.0872 -vn 0.0000 0.0872 0.9962 -vn 0.9886 0.0865 0.1236 -vn -0.9886 -0.0865 -0.1236 vn -0.5000 -0.8660 0.0000 vn -0.8660 -0.5000 0.0000 vn 0.5000 0.8660 0.0000 @@ -2901,182 +3839,10 @@ vn -0.5000 0.8660 0.0000 vn 0.8660 -0.5000 0.0000 vn 0.8660 0.5000 0.0000 vn 0.5000 -0.8660 0.0000 -vn -0.0000 -0.9911 0.1334 -vn 0.5194 -0.7400 0.4273 -vn 0.5065 -0.8546 0.1144 -vn -0.9998 0.0215 -0.0058 -vn -0.8846 -0.4039 0.2332 -vn -0.8738 -0.4822 0.0628 -vn 0.4883 0.8653 -0.1129 -vn 0.8474 0.4598 -0.2654 -vn 0.4823 0.7586 -0.4380 -vn -0.4883 0.8653 -0.1129 -vn 0.0000 0.8660 -0.5000 -vn -0.4823 0.7586 -0.4380 -vn 0.8738 -0.4822 0.0628 -vn 0.8846 -0.4039 0.2332 -vn -0.5065 -0.8546 0.1144 -vn -0.5194 -0.7400 0.4273 -vn 0.0000 0.9918 -0.1278 -vn -0.8549 0.5140 -0.0698 -vn -0.8474 0.4598 -0.2654 -vn 0.9991 0.0373 -0.0215 -vn 0.9998 0.0215 -0.0058 -vn -0.0000 -0.8660 0.5000 -vn -0.9991 0.0373 -0.0215 -vn 0.8549 0.5140 -0.0698 -vn -0.0000 0.5000 -0.8660 -vn -0.8474 0.2655 -0.4598 -vn 0.8846 -0.2332 0.4039 -vn 0.9991 0.0215 -0.0373 -vn 0.0000 -0.5000 0.8660 -vn -0.9991 0.0215 -0.0373 -vn 0.8474 0.2655 -0.4598 -vn 0.5195 -0.4273 0.7400 -vn -0.8846 -0.2332 0.4039 -vn 0.4823 0.4380 -0.7586 -vn -0.4823 0.4380 -0.7586 -vn -0.5194 -0.4273 0.7400 -vn -0.5065 -0.1144 0.8546 -vn 0.4883 0.1129 -0.8653 -vn -0.0000 0.1278 -0.9918 -vn -0.8549 0.0698 -0.5140 -vn 0.8738 -0.0628 0.4822 -vn 0.9998 0.0058 -0.0215 -vn -0.0000 -0.1334 0.9911 -vn -0.9998 0.0058 -0.0215 -vn 0.8549 0.0698 -0.5140 -vn 0.5065 -0.1144 0.8546 -vn -0.8738 -0.0628 0.4822 -vn -0.4883 0.1129 -0.8653 -vn -0.5140 -0.0698 0.8549 -vn -0.0215 -0.0058 -0.9998 -vn -0.8653 -0.1129 -0.4883 -vn 0.8546 0.1144 0.5065 -vn 0.9911 0.1334 0.0000 -vn -0.0215 -0.0058 0.9998 -vn -0.9918 -0.1278 0.0000 -vn 0.8546 0.1144 -0.5065 -vn 0.4822 0.0628 0.8738 -vn -0.8653 -0.1129 0.4883 -vn 0.4822 0.0628 -0.8738 -vn -0.5140 -0.0698 -0.8549 -vn 0.4039 0.2332 0.8846 -vn 0.7400 0.4273 0.5195 -vn -0.4598 -0.2655 0.8474 -vn -0.0373 -0.0215 -0.9991 -vn -0.7586 -0.4380 -0.4823 -vn -0.0373 -0.0215 0.9991 -vn 0.7400 0.4273 -0.5195 -vn -0.7586 -0.4380 0.4823 -vn 0.4039 0.2332 -0.8846 -vn -0.4598 -0.2655 -0.8474 -vn -0.0215 -0.0373 -0.9991 -vn -0.2655 -0.4598 -0.8474 -vn 0.2332 0.4039 0.8846 -vn 0.4273 0.7400 0.5195 -vn -0.2655 -0.4598 0.8474 -vn -0.4380 -0.7586 -0.4823 -vn -0.0215 -0.0373 0.9991 -vn 0.4273 0.7400 -0.5194 -vn -0.4380 -0.7586 0.4823 -vn 0.2332 0.4039 -0.8846 -vn 0.0000 0.4664 -0.8846 -vn 0.0000 -0.0431 -0.9991 -vn 0.0000 -0.5309 -0.8474 -vn 0.0000 0.4664 0.8846 -vn 0.0000 0.8545 0.5195 -vn -0.0000 -0.5309 0.8474 -vn 0.0000 -0.8760 -0.4823 -vn 0.0000 -0.0431 0.9991 -vn 0.0000 0.8545 -0.5194 -vn 0.0000 -0.8760 0.4823 -vn -0.5194 -0.7400 0.4272 -vn 0.5195 -0.7400 0.4272 -vn 0.5194 -0.4273 0.7400 -vn 0.5140 -0.0698 0.8549 -vn 0.0215 -0.0058 -0.9998 -vn 0.8653 -0.1129 -0.4883 -vn -0.9911 0.1334 0.0000 -vn 0.9918 -0.1278 0.0000 -vn -0.8546 0.1144 -0.5065 -vn -0.4822 0.0628 0.8738 -vn 0.8653 -0.1129 0.4883 -vn 0.5140 -0.0698 -0.8549 -vn -0.8546 0.1144 0.5065 -vn -0.4039 0.2332 0.8846 -vn 0.4598 -0.2654 0.8474 -vn 0.0373 -0.0215 -0.9991 -vn -0.4822 0.0628 -0.8738 -vn 0.7586 -0.4380 -0.4823 -vn -0.7400 0.4272 0.5194 -vn 0.0215 -0.0058 0.9998 -vn -0.7400 0.4273 -0.5195 -vn 0.4598 -0.2654 -0.8474 -vn 0.0215 -0.0373 -0.9991 -vn -0.2332 0.4039 0.8846 -vn 0.2655 -0.4598 0.8474 -vn 0.7586 -0.4380 0.4823 -vn -0.4039 0.2332 -0.8846 -vn 0.4380 -0.7586 -0.4823 -vn 0.0215 -0.0373 0.9991 -vn 0.0373 -0.0215 0.9991 -vn 0.4380 -0.7586 0.4823 -vn -0.4273 0.7400 -0.5194 -vn -0.2332 0.4039 -0.8846 -vn -0.4273 0.7400 0.5194 -vn 0.2654 -0.4598 -0.8474 -vn -0.5000 0.8138 -0.2962 -vn -0.8616 0.5019 -0.0754 -vn -0.4975 0.8441 -0.1999 -vn 0.8660 -0.4698 0.1710 -vn 0.9949 0.0345 0.0948 -vn 0.8616 -0.4330 0.2649 -vn -0.0000 -0.9397 0.3420 -vn -0.4974 -0.7752 0.3894 -vn -0.5000 -0.8138 0.2962 -vn -0.8660 0.4698 -0.1710 -vn 0.8616 0.5019 -0.0754 -vn 0.4975 -0.7752 0.3894 -vn -0.0000 -0.9004 0.4350 -vn -0.8660 -0.4698 0.1710 -vn -0.9949 0.0345 0.0948 -vn 0.5000 0.8138 -0.2962 -vn 0.8660 0.4698 -0.1710 -vn 0.0000 0.9397 -0.3420 -vn -0.0000 0.9694 -0.2455 -vn 0.5000 -0.8138 0.2962 -vn -0.8616 -0.4330 0.2649 -vn 0.4975 0.8441 -0.1999 -vn 0.4331 -0.5339 0.7262 -vn 0.0000 -0.6430 0.7659 -vn -0.8661 0.1709 0.4697 -vn 0.4331 0.8758 0.2131 -vn 0.7501 0.5779 0.3215 -vn -0.0000 0.9848 0.1734 -vn -0.7501 -0.2360 0.6178 -vn -0.7501 0.5779 0.3215 -vn -0.4331 0.8758 0.2131 -vn 0.7501 -0.2360 0.6178 -vn -0.4331 -0.5339 0.7262 -vn 0.8661 0.1709 0.4697 -vn 0.0000 -0.0388 0.9992 -vn -0.3276 0.1389 0.9346 -vn -0.3782 0.3166 0.8699 -vn 0.3276 0.4943 0.8052 -vn 0.0000 0.6720 0.7405 -vn 0.1891 0.0088 0.9819 -vn 0.1891 0.6244 0.7579 -vn -0.3276 0.4943 0.8052 -vn -0.1891 0.6244 0.7579 -vn 0.3782 0.3166 0.8699 -vn 0.3276 0.1389 0.9346 -vn -0.1891 0.0088 0.9819 +vn 0.1951 -0.9808 0.0000 vn 0.6621 0.6621 -0.3511 vn -0.6621 0.6621 -0.3511 vn -0.0000 -0.9363 -0.3511 -vn -0.5556 0.8315 0.0000 -vn 0.5556 -0.8315 0.0000 vn -0.9487 0.0000 -0.3162 vn -0.6708 0.6708 -0.3162 vn 0.0000 0.9487 -0.3162 @@ -3084,1892 +3850,1176 @@ vn 0.6708 -0.6708 -0.3162 vn -0.9811 -0.0133 -0.1928 vn 0.9732 0.0000 0.2298 s off -f 30/1/1 36/2/1 35/3/1 -f 30/1/1 34/4/1 32/5/1 -f 32/5/1 33/6/1 2/7/1 -f 2/7/1 48/8/1 4/9/1 -f 4/9/1 47/10/1 6/11/1 -f 6/11/1 46/12/1 8/13/1 -f 8/13/1 45/14/1 10/15/1 -f 10/15/1 44/16/1 12/17/1 -f 12/17/1 43/18/1 14/19/1 -f 16/20/1 43/18/1 42/21/1 -f 18/22/1 42/21/1 41/23/1 -f 20/24/1 41/25/1 40/26/1 -f 22/27/1 40/26/1 39/28/1 -f 24/29/1 39/28/1 38/30/1 -f 26/31/1 38/30/1 37/32/1 -f 28/33/1 37/32/1 36/2/1 -f 129/34/2 121/35/2 122/36/2 -f 137/37/2 118/38/2 136/39/2 -f 122/36/2 144/40/2 129/34/2 -f 136/39/2 115/41/2 135/42/2 -f 119/43/2 143/44/2 144/40/2 -f 135/42/2 116/45/2 134/46/2 -f 143/44/2 113/47/2 142/48/2 -f 142/48/2 114/49/2 141/50/2 -f 134/46/2 128/51/2 133/52/2 -f 141/50/2 127/53/2 140/54/2 -f 133/52/2 126/55/2 132/56/2 -f 140/54/2 125/57/2 139/58/2 -f 132/56/2 124/59/2 131/60/2 -f 139/58/2 123/61/2 138/62/2 -f 131/60/2 121/35/2 130/63/2 -f 137/64/2 123/61/2 120/65/2 -f 195/66/2 109/67/2 110/68/2 -f 196/69/2 108/70/2 109/67/2 -f 108/70/2 198/71/2 107/72/2 -f 198/71/2 106/73/2 107/72/2 -f 106/73/2 200/74/2 105/75/2 -f 105/75/2 201/76/2 104/77/2 -f 104/78/2 202/79/2 103/80/2 -f 103/80/2 203/81/2 102/82/2 -f 102/82/2 204/83/2 101/84/2 -f 101/84/2 205/85/2 100/86/2 -f 205/85/2 99/87/2 100/86/2 -f 206/88/2 98/89/2 99/87/2 -f 207/90/2 97/91/2 98/89/2 -f 97/91/2 193/92/2 112/93/2 -f 112/93/2 194/94/2 111/95/2 -f 194/94/2 110/68/2 111/95/2 -f 234/96/3 229/97/3 877/98/3 -f 243/99/4 244/100/4 242/101/4 -f 238/102/1 244/103/1 239/104/1 -f 226/105/2 231/106/2 225/107/2 -f 240/108/5 232/109/5 226/110/5 -f 235/111/1 229/97/1 234/96/1 -f 236/112/5 227/113/5 876/114/5 -f 233/115/4 235/116/4 234/96/4 -f 233/117/2 881/118/2 880/119/2 -f 244/103/6 240/108/6 239/104/6 -f 238/102/7 242/120/7 241/121/7 -f 225/107/3 242/120/3 237/122/3 -f 253/123/2 259/124/2 257/125/2 -f 249/126/1 251/127/1 245/128/1 -f 269/129/2 272/130/2 262/131/2 -f 272/130/2 263/132/2 262/131/2 -f 273/133/2 264/134/2 263/132/2 -f 274/135/2 212/136/2 264/134/2 -f 270/137/1 310/138/1 306/139/1 -f 267/140/1 310/138/1 266/141/1 -f 268/142/1 309/143/1 267/140/1 -f 268/142/1 307/144/1 308/145/1 -f 311/146/8 287/147/8 269/148/8 -f 275/149/9 289/150/9 305/151/9 -f 59/152/2 318/153/2 58/154/2 -f 343/155/9 328/156/9 336/157/9 -f 375/158/10 340/159/10 339/160/10 -f 373/161/3 379/162/3 377/163/3 -f 331/164/2 334/165/2 333/166/2 -f 345/167/2 351/168/2 346/169/2 -f 329/170/2 332/171/2 335/172/2 -f 330/173/2 335/172/2 334/165/2 -f 341/174/1 339/175/1 340/159/1 -f 343/155/1 337/176/1 342/177/1 -f 342/177/1 338/178/1 341/174/1 -f 345/167/2 353/179/2 352/180/2 -f 347/181/2 349/182/2 348/183/2 -f 346/169/2 350/184/2 347/181/2 -f 361/185/1 354/186/1 355/187/1 -f 354/186/1 363/188/1 358/189/1 -f 360/190/1 356/191/1 357/192/1 -f 359/193/1 355/187/1 356/191/1 -f 368/194/11 367/195/11 370/196/11 -f 344/197/4 363/198/4 353/199/4 -f 366/200/1 364/201/1 365/202/1 -f 368/194/2 371/203/2 369/204/2 -f 372/205/1 374/206/1 373/161/1 -f 377/163/2 378/207/2 376/208/2 -f 333/166/10 378/209/10 331/210/10 -f 381/211/2 382/212/2 380/213/2 -f 383/214/4 384/215/4 382/212/4 -f 385/216/12 386/217/12 384/215/12 -f 387/218/4 388/219/4 386/217/4 -f 384/215/3 386/220/3 390/221/3 -f 391/222/5 389/223/5 387/224/5 -f 404/225/2 400/226/2 396/227/2 -f 60/228/2 317/229/2 59/230/2 -f 61/231/2 316/232/2 60/233/2 -f 62/234/2 315/235/2 61/236/2 -f 63/237/2 314/238/2 62/239/2 -f 64/240/2 313/241/2 63/242/2 -f 49/243/2 312/244/2 64/245/2 -f 50/246/2 327/247/2 49/248/2 -f 51/249/2 326/250/2 50/251/2 -f 51/252/2 324/253/2 325/254/2 -f 53/255/2 324/256/2 52/257/2 -f 53/258/2 322/259/2 323/260/2 -f 54/261/2 321/262/2 322/263/2 -f 55/264/2 320/265/2 321/266/2 -f 56/267/2 319/268/2 320/269/2 -f 57/270/2 318/271/2 319/272/2 -f 442/273/13 441/274/13 440/275/13 -f 444/276/4 443/277/4 442/273/4 -f 443/278/5 449/279/5 447/280/5 -f 448/281/3 444/282/3 442/283/3 -f 453/284/5 456/285/5 451/286/5 -f 450/287/3 455/288/3 452/289/3 -f 457/290/3 461/291/3 455/288/3 -f 460/292/5 456/285/5 454/293/5 -f 459/294/3 465/295/3 461/291/3 -f 460/292/5 462/296/5 458/297/5 -f 463/298/3 469/299/3 465/295/3 -f 462/296/5 468/300/5 466/301/5 -f 472/302/4 471/303/4 470/304/4 -f 479/305/5 477/306/5 475/307/5 -f 474/308/3 476/309/3 478/310/3 -f 502/311/3 500/312/3 498/313/3 -f 524/314/3 522/315/3 518/316/3 -f 512/317/5 514/318/5 504/319/5 -f 539/320/14 540/321/14 536/322/14 -f 531/323/14 532/324/14 530/325/14 -f 528/326/15 534/327/15 529/328/15 -f 535/329/14 536/322/14 532/324/14 -f 534/327/15 537/330/15 538/331/15 -f 537/330/15 542/332/15 538/331/15 -f 562/333/3 560/334/3 558/335/3 -f 578/336/2 574/337/2 570/338/2 -f 590/339/1 581/340/1 584/341/1 -f 602/342/1 592/343/1 596/344/1 -f 614/345/2 610/346/2 606/347/2 -f 800/348/1 804/349/1 796/350/1 -f 818/351/1 814/352/1 810/353/1 -f 828/354/16 826/355/16 822/356/16 -f 870/357/9 868/358/9 874/359/9 -f 227/360/17 875/361/17 876/362/17 -f 873/363/9 872/364/9 869/365/9 -f 877/366/18 869/365/18 230/367/18 -f 880/368/2 868/358/2 227/369/2 -f 869/365/2 881/370/2 230/371/2 -f 228/372/9 878/373/9 879/374/9 -f 870/357/3 880/375/3 878/373/3 -f 881/376/5 871/377/5 879/374/5 -f 879/374/9 880/375/9 881/376/9 -f 873/363/1 879/378/1 871/377/1 -f 878/379/1 875/361/1 870/357/1 -f 884/380/9 883/381/9 882/382/9 -f 882/382/2 889/383/2 884/380/2 -f 883/381/19 887/384/19 882/382/19 -f 885/385/1 886/386/1 883/381/1 -f 884/380/20 888/387/20 885/385/20 -f 899/388/2 912/389/2 900/390/2 -f 912/389/2 901/391/2 900/390/2 -f 901/391/2 902/392/2 890/393/2 -f 902/392/2 891/394/2 890/393/2 -f 891/394/2 904/395/2 892/396/2 -f 904/395/2 893/397/2 892/396/2 -f 893/397/2 906/398/2 894/399/2 -f 906/398/2 895/400/2 894/399/2 -f 895/400/2 908/401/2 896/402/2 -f 908/403/2 897/404/2 896/405/2 -f 897/404/2 910/406/2 898/407/2 -f 910/406/2 899/388/2 898/407/2 -f 923/408/1 936/409/1 935/410/1 -f 925/411/1 936/409/1 924/412/1 -f 925/411/1 927/413/1 937/414/1 -f 914/415/1 927/413/1 915/416/1 -f 914/415/1 928/417/1 926/418/1 -f 917/419/1 928/417/1 916/420/1 -f 917/419/1 930/421/1 929/422/1 -f 919/423/1 930/421/1 918/424/1 -f 919/423/1 932/425/1 931/426/1 -f 921/427/1 932/428/1 920/429/1 -f 921/427/1 934/430/1 933/431/1 -f 923/408/1 934/430/1 922/432/1 -f 945/433/21 956/434/21 942/435/21 -f 958/436/1 956/434/1 957/437/1 -f 948/438/2 940/439/2 947/440/2 -f 944/441/3 957/437/3 945/442/3 -f 948/438/3 951/443/3 949/444/3 -f 940/445/22 949/444/22 938/446/22 -f 943/447/5 956/434/5 959/448/5 -f 946/449/1 949/450/1 951/451/1 -f 952/452/5 955/453/5 953/454/5 -f 939/455/23 953/454/23 941/456/23 -f 962/457/3 965/458/3 963/459/3 -f 966/460/1 964/461/1 965/458/1 -f 963/462/21 964/461/21 960/463/21 -f 961/464/5 964/461/5 967/465/5 -f 980/466/1 982/467/1 976/468/1 -f 990/469/5 988/470/5 989/471/5 -f 987/472/4 990/469/4 985/473/4 -f 984/474/9 988/470/9 986/475/9 -f 986/476/2 991/477/2 987/478/2 -f 985/479/1 989/471/1 984/480/1 -f 304/481/1 289/482/1 992/483/1 -f 992/483/1 303/484/1 304/481/1 -f 993/485/1 302/486/1 303/484/1 -f 994/487/1 311/488/1 302/486/1 -f 300/489/1 288/490/1 301/491/1 -f 1005/492/2 1001/493/2 997/494/2 -f 1017/495/1 1008/496/1 1011/497/1 -f 1029/498/1 1019/499/1 1023/500/1 -f 1041/501/2 1037/502/2 1033/503/2 -f 30/1/1 28/33/1 36/2/1 -f 30/1/1 35/3/1 34/4/1 -f 32/5/1 34/4/1 33/6/1 -f 2/7/1 33/6/1 48/8/1 -f 4/9/1 48/8/1 47/10/1 -f 6/11/1 47/10/1 46/12/1 -f 8/13/1 46/12/1 45/14/1 -f 10/15/1 45/14/1 44/16/1 -f 12/17/1 44/16/1 43/18/1 -f 16/20/1 14/19/1 43/18/1 -f 18/22/1 16/20/1 42/21/1 -f 20/24/1 18/504/1 41/25/1 -f 22/27/1 20/24/1 40/26/1 -f 24/29/1 22/27/1 39/28/1 -f 26/31/1 24/29/1 38/30/1 -f 28/33/1 26/31/1 37/32/1 -f 129/34/2 130/63/2 121/35/2 -f 137/37/2 120/505/2 118/38/2 -f 122/36/2 119/43/2 144/40/2 -f 136/39/2 118/38/2 115/41/2 -f 119/43/2 117/506/2 143/44/2 -f 135/42/2 115/41/2 116/45/2 -f 143/44/2 117/506/2 113/47/2 -f 142/48/2 113/47/2 114/49/2 -f 134/46/2 116/45/2 128/51/2 -f 141/50/2 114/49/2 127/53/2 -f 133/52/2 128/51/2 126/55/2 -f 140/54/2 127/53/2 125/57/2 -f 132/56/2 126/55/2 124/59/2 -f 139/58/2 125/57/2 123/61/2 -f 131/60/2 124/59/2 121/35/2 -f 137/64/2 138/62/2 123/61/2 -f 195/66/2 196/69/2 109/67/2 -f 196/69/2 197/507/2 108/70/2 -f 108/70/2 197/507/2 198/71/2 -f 198/71/2 199/508/2 106/73/2 -f 106/73/2 199/508/2 200/74/2 -f 105/75/2 200/74/2 201/76/2 -f 104/78/2 201/509/2 202/79/2 -f 103/80/2 202/79/2 203/81/2 -f 102/82/2 203/81/2 204/83/2 -f 101/84/2 204/83/2 205/85/2 -f 205/85/2 206/88/2 99/87/2 -f 206/88/2 207/90/2 98/89/2 -f 207/90/2 208/510/2 97/91/2 -f 97/91/2 208/510/2 193/92/2 -f 112/93/2 193/92/2 194/94/2 -f 194/94/2 195/66/2 110/68/2 -f 230/511/3 233/115/3 877/98/3 -f 233/115/3 234/96/3 877/98/3 -f 244/100/4 241/512/4 242/101/4 -f 242/101/4 231/513/4 232/109/4 -f 232/109/4 243/99/4 242/101/4 -f 238/102/1 241/121/1 244/103/1 -f 226/105/2 232/514/2 231/106/2 -f 240/108/5 243/99/5 232/109/5 -f 235/111/1 228/372/1 229/97/1 -f 228/372/5 235/111/5 876/114/5 -f 235/111/5 236/112/5 876/114/5 -f 233/115/4 236/515/4 235/116/4 -f 227/113/2 236/112/2 880/119/2 -f 236/112/2 233/117/2 880/119/2 -f 233/117/2 230/516/2 881/118/2 -f 244/103/6 243/99/6 240/108/6 -f 238/102/7 237/122/7 242/120/7 -f 225/107/3 231/106/3 242/120/3 -f 255/517/2 254/518/2 253/123/2 -f 253/123/2 260/519/2 259/124/2 -f 259/124/2 258/520/2 257/125/2 -f 257/125/2 256/521/2 255/517/2 -f 255/517/2 253/123/2 257/125/2 -f 245/128/1 246/522/1 247/523/1 -f 247/523/1 248/524/1 249/126/1 -f 249/126/1 250/525/1 251/127/1 -f 251/127/1 252/526/1 245/128/1 -f 245/128/1 247/523/1 249/126/1 -f 269/129/2 287/527/2 272/130/2 -f 272/130/2 273/133/2 263/132/2 -f 273/133/2 274/135/2 264/134/2 -f 274/135/2 275/528/2 212/136/2 -f 270/137/1 266/141/1 310/138/1 -f 267/140/1 309/143/1 310/138/1 -f 268/142/1 308/145/1 309/143/1 -f 268/142/1 211/529/1 307/144/1 -f 269/148/8 270/530/8 311/146/8 -f 270/530/8 306/531/8 311/146/8 -f 311/146/8 301/532/8 287/147/8 -f 307/533/9 211/534/9 305/151/9 -f 211/534/9 212/535/9 305/151/9 -f 212/535/9 275/149/9 305/151/9 -f 59/152/2 317/536/2 318/153/2 -f 343/155/9 332/171/9 328/156/9 -f 375/158/10 372/205/10 340/159/10 -f 373/161/3 374/537/3 379/162/3 -f 331/164/2 330/173/2 334/165/2 -f 345/167/2 352/180/2 351/168/2 -f 329/170/2 328/538/2 332/171/2 -f 330/173/2 329/170/2 335/172/2 -f 341/174/1 338/178/1 339/175/1 -f 343/155/1 336/539/1 337/176/1 -f 342/177/1 337/176/1 338/178/1 -f 345/167/2 344/197/2 353/179/2 -f 347/181/2 350/184/2 349/182/2 -f 346/169/2 351/168/2 350/184/2 -f 361/185/1 362/540/1 354/186/1 -f 354/186/1 362/540/1 363/188/1 -f 360/190/1 359/193/1 356/191/1 -f 359/193/1 361/185/1 355/187/1 -f 368/194/11 364/201/11 367/195/11 -f 344/197/4 358/189/4 363/198/4 -f 366/200/1 367/541/1 364/201/1 -f 368/194/2 370/542/2 371/203/2 -f 372/205/1 375/543/1 374/206/1 -f 377/163/2 379/544/2 378/207/2 -f 333/166/10 376/208/10 378/209/10 -f 381/211/2 383/214/2 382/212/2 -f 383/214/4 385/216/4 384/215/4 -f 385/216/12 387/218/12 386/217/12 -f 387/218/4 389/545/4 388/219/4 -f 380/546/3 382/212/3 384/215/3 -f 386/220/3 388/547/3 390/221/3 -f 380/546/3 384/215/3 390/221/3 -f 383/214/5 381/548/5 385/216/5 -f 381/548/5 391/222/5 385/216/5 -f 385/216/5 391/222/5 387/224/5 -f 396/227/2 395/549/2 394/550/2 -f 394/550/2 409/551/2 396/227/2 -f 409/551/2 408/552/2 396/227/2 -f 408/552/2 407/553/2 406/554/2 -f 406/554/2 405/555/2 404/225/2 -f 404/225/2 403/556/2 402/557/2 -f 402/557/2 401/558/2 400/226/2 -f 400/226/2 399/559/2 398/560/2 -f 398/560/2 397/561/2 396/227/2 -f 408/552/2 406/554/2 404/225/2 -f 404/225/2 402/557/2 400/226/2 -f 400/226/2 398/560/2 396/227/2 -f 396/227/2 408/552/2 404/225/2 -f 60/228/2 316/562/2 317/229/2 -f 61/231/2 315/563/2 316/232/2 -f 62/234/2 314/564/2 315/235/2 -f 63/237/2 313/565/2 314/238/2 -f 64/240/2 312/566/2 313/241/2 -f 49/243/2 327/567/2 312/244/2 -f 50/246/2 326/568/2 327/247/2 -f 51/249/2 325/569/2 326/250/2 -f 51/252/2 52/570/2 324/253/2 -f 53/255/2 323/571/2 324/256/2 -f 53/258/2 54/572/2 322/259/2 -f 54/261/2 55/573/2 321/262/2 -f 55/264/2 56/574/2 320/265/2 -f 56/267/2 57/575/2 319/268/2 -f 57/270/2 58/576/2 318/271/2 -f 442/273/13 443/277/13 441/274/13 -f 444/276/4 445/577/4 443/277/4 -f 447/280/5 441/274/5 443/278/5 -f 443/278/5 445/578/5 449/279/5 -f 442/283/3 440/275/3 446/579/3 -f 446/579/3 448/281/3 442/283/3 -f 453/284/5 454/293/5 456/285/5 -f 450/287/3 457/290/3 455/288/3 -f 457/290/3 459/294/3 461/291/3 -f 460/292/5 458/297/5 456/285/5 -f 459/294/3 463/298/3 465/295/3 -f 460/292/5 464/580/5 462/296/5 -f 463/298/3 467/581/3 469/299/3 -f 462/296/5 464/580/5 468/300/5 -f 472/302/4 473/582/4 471/303/4 -f 475/307/5 471/303/5 473/582/5 -f 473/582/5 479/305/5 475/307/5 -f 478/310/3 472/302/3 474/308/3 -f 472/302/3 470/304/3 474/308/3 -f 494/583/3 493/584/3 492/585/3 -f 492/585/3 503/586/3 502/311/3 -f 502/311/3 501/587/3 500/312/3 -f 500/312/3 499/588/3 498/313/3 -f 498/313/3 497/589/3 494/583/3 -f 497/589/3 496/590/3 494/583/3 -f 496/590/3 495/591/3 494/583/3 -f 494/583/3 492/585/3 498/313/3 -f 492/585/3 502/311/3 498/313/3 -f 518/316/3 517/592/3 516/593/3 -f 516/593/3 527/594/3 526/595/3 -f 526/595/3 525/596/3 524/314/3 -f 524/314/3 523/597/3 522/315/3 -f 522/315/3 521/598/3 518/316/3 -f 521/598/3 520/599/3 518/316/3 -f 520/599/3 519/600/3 518/316/3 -f 518/316/3 516/593/3 526/595/3 -f 526/595/3 524/314/3 518/316/3 -f 504/319/5 505/601/5 506/602/5 -f 506/602/5 507/603/5 508/604/5 -f 508/604/5 509/605/5 512/317/5 -f 509/605/5 510/606/5 512/317/5 -f 510/606/5 511/607/5 512/317/5 -f 512/317/5 513/608/5 514/318/5 -f 514/318/5 515/609/5 504/319/5 -f 504/319/5 506/602/5 512/317/5 -f 506/602/5 508/604/5 512/317/5 -f 539/320/14 543/610/14 540/321/14 -f 531/323/14 535/329/14 532/324/14 -f 528/326/15 533/611/15 534/327/15 -f 535/329/14 539/320/14 536/322/14 -f 534/327/15 533/611/15 537/330/15 -f 537/330/15 541/612/15 542/332/15 -f 558/335/3 557/613/3 556/614/3 -f 556/614/3 567/615/3 558/335/3 -f 567/615/3 566/616/3 558/335/3 -f 566/616/3 565/617/3 564/618/3 -f 564/618/3 563/619/3 562/333/3 -f 562/333/3 561/620/3 560/334/3 -f 560/334/3 559/621/3 558/335/3 -f 566/616/3 564/618/3 558/335/3 -f 564/618/3 562/333/3 558/335/3 -f 570/338/2 569/622/2 578/336/2 -f 569/622/2 568/623/2 578/336/2 -f 568/623/2 579/624/2 578/336/2 -f 578/336/2 577/625/2 576/626/2 -f 576/626/2 575/627/2 574/337/2 -f 574/337/2 573/628/2 572/629/2 -f 572/629/2 571/630/2 574/337/2 -f 571/630/2 570/338/2 574/337/2 -f 578/336/2 576/626/2 574/337/2 -f 581/340/1 580/631/1 582/632/1 -f 582/632/1 583/633/1 581/340/1 -f 583/633/1 584/341/1 581/340/1 -f 584/341/1 585/634/1 588/635/1 -f 585/634/1 586/636/1 588/635/1 -f 586/636/1 587/637/1 588/635/1 -f 588/635/1 589/638/1 590/339/1 -f 590/339/1 591/639/1 581/340/1 -f 588/635/1 590/339/1 584/341/1 -f 592/343/1 593/640/1 594/641/1 -f 594/641/1 595/642/1 592/343/1 -f 595/642/1 596/344/1 592/343/1 -f 596/344/1 597/643/1 600/644/1 -f 597/643/1 598/645/1 600/644/1 -f 598/645/1 599/646/1 600/644/1 -f 600/644/1 601/647/1 602/342/1 -f 602/342/1 603/648/1 592/343/1 -f 600/644/1 602/342/1 596/344/1 -f 606/347/2 604/649/2 614/345/2 -f 604/649/2 605/650/2 614/345/2 -f 605/650/2 615/651/2 614/345/2 -f 614/345/2 613/652/2 612/653/2 -f 612/653/2 611/654/2 610/346/2 -f 610/346/2 609/655/2 608/656/2 -f 608/656/2 607/657/2 610/346/2 -f 607/657/2 606/347/2 610/346/2 -f 614/345/2 612/653/2 610/346/2 -f 796/350/1 797/658/1 798/659/1 -f 798/659/1 799/660/1 796/350/1 -f 799/660/1 800/348/1 796/350/1 -f 800/348/1 801/661/1 804/349/1 -f 801/661/1 802/662/1 804/349/1 -f 802/662/1 803/663/1 804/349/1 -f 804/349/1 805/664/1 806/665/1 -f 806/665/1 807/666/1 804/349/1 -f 807/666/1 796/350/1 804/349/1 -f 810/353/1 809/667/1 808/668/1 -f 808/668/1 819/669/1 810/353/1 -f 819/669/1 818/351/1 810/353/1 -f 818/351/1 817/670/1 816/671/1 -f 816/671/1 815/672/1 818/351/1 -f 815/672/1 814/352/1 818/351/1 -f 814/352/1 813/673/1 810/353/1 -f 813/673/1 812/674/1 810/353/1 -f 812/674/1 811/675/1 810/353/1 -f 822/356/16 821/676/16 830/677/16 -f 821/676/16 820/678/16 830/677/16 -f 820/678/16 831/679/16 830/677/16 -f 830/677/16 829/680/16 828/354/16 -f 828/354/16 827/681/16 826/355/16 -f 826/355/16 825/682/16 824/683/16 -f 824/683/16 823/684/16 826/355/16 -f 823/684/16 822/356/16 826/355/16 -f 830/677/16 828/354/16 822/356/16 -f 870/357/9 875/361/9 868/358/9 -f 227/360/17 868/358/17 875/361/17 -f 873/363/9 871/377/9 872/364/9 -f 877/366/18 873/363/18 869/365/18 -f 880/368/2 874/359/2 868/358/2 -f 869/365/2 872/364/2 881/370/2 -f 877/685/9 229/97/9 879/374/9 -f 229/97/9 228/372/9 879/374/9 -f 228/372/9 876/686/9 878/373/9 -f 870/357/3 874/359/3 880/375/3 -f 881/376/5 872/364/5 871/377/5 -f 879/374/9 878/373/9 880/375/9 -f 873/363/1 877/687/1 879/378/1 -f 878/379/1 876/688/1 875/361/1 -f 884/380/9 885/385/9 883/381/9 -f 882/382/2 887/689/2 889/383/2 -f 883/381/19 886/690/19 887/384/19 -f 885/385/1 888/691/1 886/386/1 -f 884/380/20 889/692/20 888/387/20 -f 899/388/2 911/693/2 912/389/2 -f 912/389/2 913/694/2 901/391/2 -f 901/391/2 913/694/2 902/392/2 -f 902/392/2 903/695/2 891/394/2 -f 891/394/2 903/695/2 904/395/2 -f 904/395/2 905/696/2 893/397/2 -f 893/397/2 905/696/2 906/398/2 -f 906/398/2 907/697/2 895/400/2 -f 895/400/2 907/697/2 908/401/2 -f 908/403/2 909/698/2 897/404/2 -f 897/404/2 909/698/2 910/406/2 -f 910/406/2 911/693/2 899/388/2 -f 923/408/1 924/412/1 936/409/1 -f 925/411/1 937/414/1 936/409/1 -f 925/411/1 915/416/1 927/413/1 -f 914/415/1 926/418/1 927/413/1 -f 914/415/1 916/420/1 928/417/1 -f 917/419/1 929/422/1 928/417/1 -f 917/419/1 918/424/1 930/421/1 -f 919/423/1 931/426/1 930/421/1 -f 919/423/1 920/699/1 932/425/1 -f 921/427/1 933/431/1 932/428/1 -f 921/427/1 922/432/1 934/430/1 -f 923/408/1 935/410/1 934/430/1 -f 945/433/21 957/437/21 956/434/21 -f 958/436/1 959/448/1 956/434/1 -f 947/440/2 941/700/2 953/701/2 -f 953/701/2 955/702/2 947/440/2 -f 955/702/2 950/703/2 947/440/2 -f 950/703/2 948/438/2 947/440/2 -f 944/441/3 958/436/3 957/437/3 -f 948/438/3 950/703/3 951/443/3 -f 940/445/22 948/438/22 949/444/22 -f 943/447/5 942/704/5 956/434/5 -f 951/451/1 954/705/1 946/449/1 -f 954/705/1 952/452/1 946/449/1 -f 952/452/1 939/706/1 946/449/1 -f 946/449/1 938/707/1 949/450/1 -f 952/452/5 954/705/5 955/453/5 -f 939/455/23 952/452/23 953/454/23 -f 962/457/3 966/460/3 965/458/3 -f 966/460/1 967/465/1 964/461/1 -f 963/462/21 965/458/21 964/461/21 -f 961/464/5 960/708/5 964/461/5 -f 976/468/1 977/709/1 978/710/1 -f 978/710/1 979/711/1 980/466/1 -f 980/466/1 981/712/1 982/467/1 -f 982/467/1 983/713/1 976/468/1 -f 976/468/1 978/710/1 980/466/1 -f 990/469/5 991/477/5 988/470/5 -f 987/472/4 991/477/4 990/469/4 -f 984/474/9 989/471/9 988/470/9 -f 986/476/2 988/470/2 991/477/2 -f 985/479/1 990/469/1 989/471/1 -f 304/481/1 305/714/1 289/482/1 -f 992/483/1 993/485/1 303/484/1 -f 993/485/1 994/487/1 302/486/1 -f 994/487/1 301/715/1 311/488/1 -f 301/491/1 994/716/1 993/717/1 -f 993/717/1 992/718/1 301/491/1 -f 992/718/1 289/719/1 301/491/1 -f 289/719/1 290/720/1 301/491/1 -f 290/720/1 291/721/1 301/491/1 -f 291/721/1 292/722/1 301/491/1 -f 292/722/1 293/723/1 301/491/1 -f 293/723/1 294/724/1 301/491/1 -f 294/724/1 295/725/1 301/491/1 -f 295/725/1 296/726/1 301/491/1 -f 296/726/1 297/727/1 301/491/1 -f 297/727/1 298/728/1 301/491/1 -f 298/728/1 299/729/1 301/491/1 -f 299/729/1 300/489/1 301/491/1 -f 997/494/2 996/730/2 1005/492/2 -f 996/730/2 995/731/2 1005/492/2 -f 995/731/2 1006/732/2 1005/492/2 -f 1005/492/2 1004/733/2 1003/734/2 -f 1003/734/2 1002/735/2 1001/493/2 -f 1001/493/2 1000/736/2 999/737/2 -f 999/737/2 998/738/2 1001/493/2 -f 998/738/2 997/494/2 1001/493/2 -f 1005/492/2 1003/734/2 1001/493/2 -f 1008/496/1 1007/739/1 1009/740/1 -f 1009/740/1 1010/741/1 1008/496/1 -f 1010/741/1 1011/497/1 1008/496/1 -f 1011/497/1 1012/742/1 1015/743/1 -f 1012/742/1 1013/744/1 1015/743/1 -f 1013/744/1 1014/745/1 1015/743/1 -f 1015/743/1 1016/746/1 1017/495/1 -f 1017/495/1 1018/747/1 1008/496/1 -f 1015/743/1 1017/495/1 1011/497/1 -f 1019/499/1 1020/748/1 1021/749/1 -f 1021/749/1 1022/750/1 1019/499/1 -f 1022/750/1 1023/500/1 1019/499/1 -f 1023/500/1 1024/751/1 1027/752/1 -f 1024/751/1 1025/753/1 1027/752/1 -f 1025/753/1 1026/754/1 1027/752/1 -f 1027/752/1 1028/755/1 1029/498/1 -f 1029/498/1 1030/756/1 1019/499/1 -f 1027/752/1 1029/498/1 1023/500/1 -f 1033/503/2 1031/757/2 1041/501/2 -f 1031/757/2 1032/758/2 1041/501/2 -f 1032/758/2 1042/759/2 1041/501/2 -f 1041/501/2 1040/760/2 1039/761/2 -f 1039/761/2 1038/762/2 1037/502/2 -f 1037/502/2 1036/763/2 1035/764/2 -f 1035/764/2 1034/765/2 1037/502/2 -f 1034/765/2 1033/503/2 1037/502/2 -f 1041/501/2 1039/761/2 1037/502/2 +f 416/565/229 422/566/229 421/567/229 +f 416/565/229 420/568/229 418/569/229 +f 418/569/229 419/570/229 388/571/229 +f 388/571/229 434/572/229 390/573/229 +f 390/573/229 433/574/229 392/575/229 +f 392/575/229 432/576/229 394/577/229 +f 394/577/229 431/578/229 396/579/229 +f 396/579/229 430/580/229 398/581/229 +f 398/581/229 429/582/229 400/583/229 +f 402/584/229 429/582/229 428/585/229 +f 404/586/229 428/585/229 427/587/229 +f 406/588/229 427/589/229 426/590/229 +f 408/591/229 426/590/229 425/592/229 +f 410/593/229 425/592/229 424/594/229 +f 412/595/229 424/594/229 423/596/229 +f 414/597/229 423/596/229 422/566/229 +f 515/598/230 507/599/230 508/600/230 +f 523/601/230 504/602/230 522/603/230 +f 508/600/230 530/604/230 515/598/230 +f 522/603/230 501/605/230 521/606/230 +f 505/607/230 529/608/230 530/604/230 +f 521/606/230 502/609/230 520/610/230 +f 529/608/230 499/611/230 528/612/230 +f 528/612/230 500/613/230 527/614/230 +f 520/610/230 514/615/230 519/616/230 +f 527/614/230 513/617/230 526/618/230 +f 519/616/230 512/619/230 518/620/230 +f 526/618/230 511/621/230 525/622/230 +f 518/620/230 510/623/230 517/624/230 +f 525/622/230 509/625/230 524/626/230 +f 517/624/230 507/599/230 516/627/230 +f 523/628/230 509/625/230 506/629/230 +f 581/630/230 495/631/230 496/632/230 +f 582/633/230 494/634/230 495/631/230 +f 494/634/230 584/635/230 493/636/230 +f 584/635/230 492/637/230 493/636/230 +f 492/637/230 586/638/230 491/639/230 +f 491/639/230 587/640/230 490/641/230 +f 490/642/230 588/643/230 489/644/230 +f 489/644/230 589/645/230 488/646/230 +f 488/646/230 590/647/230 487/648/230 +f 487/648/230 591/649/230 486/650/230 +f 591/649/230 485/651/230 486/650/230 +f 592/652/230 484/653/230 485/651/230 +f 593/654/230 483/655/230 484/653/230 +f 483/655/230 579/656/230 498/657/230 +f 498/657/230 580/658/230 497/659/230 +f 580/658/230 496/632/230 497/659/230 +f 621/660/231 622/661/231 620/662/231 +f 616/663/229 622/664/229 617/665/229 +f 612/666/230 613/667/230 611/668/230 +f 618/669/232 614/670/232 612/671/232 +f 622/664/233 618/669/233 617/665/233 +f 616/663/234 620/672/234 619/673/234 +f 611/668/235 620/672/235 615/674/235 +f 631/675/230 637/676/230 635/677/230 +f 627/678/229 629/679/229 623/680/229 +f 647/681/230 650/682/230 640/683/230 +f 650/682/230 641/684/230 640/683/230 +f 651/685/230 642/686/230 641/684/230 +f 652/687/230 598/688/230 642/686/230 +f 648/689/229 688/690/229 684/691/229 +f 645/692/229 688/690/229 644/693/229 +f 646/694/229 687/695/229 645/692/229 +f 646/694/229 685/696/229 686/697/229 +f 689/698/236 665/699/236 647/700/236 +f 653/701/237 667/702/237 683/703/237 +f 445/704/230 696/705/230 444/706/230 +f 707/707/230 713/708/230 708/709/230 +f 707/707/230 715/710/230 714/711/230 +f 709/712/230 711/713/230 710/714/230 +f 708/709/230 712/715/230 709/712/230 +f 723/716/229 716/717/229 717/718/229 +f 716/717/229 725/719/229 720/720/229 +f 722/721/229 718/722/229 719/723/229 +f 721/724/229 717/718/229 718/722/229 +f 730/725/238 729/726/238 732/727/238 +f 706/728/231 725/729/231 715/730/231 +f 728/731/229 726/732/229 727/733/229 +f 730/725/230 733/734/230 731/735/230 +f 735/736/230 736/737/230 734/738/230 +f 737/739/231 738/740/231 736/737/231 +f 739/741/239 740/742/239 738/740/239 +f 741/743/231 742/744/231 740/742/231 +f 738/740/235 740/745/235 744/746/235 +f 745/747/232 743/748/232 741/749/232 +f 758/750/230 754/751/230 750/752/230 +f 446/753/230 695/754/230 445/755/230 +f 447/756/230 694/757/230 446/758/230 +f 448/759/230 693/760/230 447/761/230 +f 449/762/230 692/763/230 448/764/230 +f 450/765/230 691/766/230 449/767/230 +f 435/768/230 690/769/230 450/770/230 +f 436/771/230 705/772/230 435/773/230 +f 437/774/230 704/775/230 436/776/230 +f 437/777/230 702/778/230 703/779/230 +f 439/780/230 702/781/230 438/782/230 +f 439/783/230 700/784/230 701/785/230 +f 440/786/230 699/787/230 700/788/230 +f 441/789/230 698/790/230 699/791/230 +f 442/792/230 697/793/230 698/794/230 +f 443/795/230 696/796/230 697/797/230 +f 796/798/240 795/799/240 794/800/240 +f 798/801/231 797/802/231 796/798/231 +f 797/803/232 803/804/232 801/805/232 +f 802/806/235 798/807/235 796/808/235 +f 807/809/232 810/810/232 805/811/232 +f 804/812/235 809/813/235 806/814/235 +f 811/815/235 815/816/235 809/813/235 +f 814/817/232 810/810/232 808/818/232 +f 813/819/235 819/820/235 815/816/235 +f 814/817/232 816/821/232 812/822/232 +f 817/823/235 823/824/235 819/820/235 +f 816/821/232 822/825/232 820/826/232 +f 826/827/231 825/828/231 824/829/231 +f 833/830/232 831/831/232 829/832/232 +f 828/833/235 830/834/235 832/835/235 +f 844/836/230 840/837/230 836/838/230 +f 856/839/229 847/840/229 850/841/229 +f 868/842/229 858/843/229 862/844/229 +f 880/845/230 876/846/230 872/847/230 +f 884/848/237 883/849/237 882/850/237 +f 882/850/230 889/851/230 884/848/230 +f 883/849/241 887/852/241 882/850/241 +f 885/853/229 886/854/229 883/849/229 +f 884/848/242 888/855/242 885/853/242 +f 899/856/230 912/857/230 900/858/230 +f 912/857/230 901/859/230 900/858/230 +f 901/859/230 902/860/230 890/861/230 +f 902/860/230 891/862/230 890/861/230 +f 891/862/230 904/863/230 892/864/230 +f 904/863/230 893/865/230 892/864/230 +f 893/865/230 906/866/230 894/867/230 +f 906/866/230 895/868/230 894/867/230 +f 895/868/230 908/869/230 896/870/230 +f 908/871/230 897/872/230 896/873/230 +f 897/872/230 910/874/230 898/875/230 +f 910/874/230 899/856/230 898/875/230 +f 923/876/229 936/877/229 935/878/229 +f 925/879/229 936/877/229 924/880/229 +f 925/879/229 927/881/229 937/882/229 +f 914/883/229 927/881/229 915/884/229 +f 914/883/229 928/885/229 926/886/229 +f 917/887/229 928/885/229 916/888/229 +f 917/887/229 930/889/229 929/890/229 +f 919/891/229 930/889/229 918/892/229 +f 919/891/229 932/893/229 931/894/229 +f 921/895/229 932/896/229 920/897/229 +f 921/895/229 934/898/229 933/899/229 +f 923/876/229 934/898/229 922/900/229 +f 945/901/243 956/902/243 942/903/243 +f 958/904/229 956/902/229 957/905/229 +f 948/906/230 940/907/230 947/908/230 +f 944/909/235 957/905/235 945/910/235 +f 948/906/235 951/911/235 949/912/235 +f 940/913/244 949/912/244 938/914/244 +f 943/915/232 956/902/232 959/916/232 +f 946/917/229 949/918/229 951/919/229 +f 952/920/232 955/921/232 953/922/232 +f 939/923/245 953/922/245 941/924/245 +f 962/925/235 965/926/235 963/927/235 +f 966/928/229 964/929/229 965/926/229 +f 963/930/243 964/929/243 960/931/243 +f 961/932/232 964/929/232 967/933/232 +f 980/934/229 982/935/229 976/936/229 +f 990/937/232 988/938/232 989/939/232 +f 987/940/231 990/937/231 985/941/231 +f 984/942/237 988/938/237 986/943/237 +f 986/944/230 991/945/230 987/946/230 +f 985/947/229 989/939/229 984/948/229 +f 682/949/229 667/950/229 992/951/229 +f 992/951/229 681/952/229 682/949/229 +f 993/953/229 680/954/229 681/952/229 +f 994/955/229 689/956/229 680/954/229 +f 678/957/229 666/958/229 679/959/229 +f 1005/960/230 1001/961/230 997/962/230 +f 1017/963/229 1008/964/229 1011/965/229 +f 1029/966/229 1019/967/229 1023/968/229 +f 1041/969/230 1037/970/230 1033/971/230 +f 416/565/229 414/597/229 422/566/229 +f 416/565/229 421/567/229 420/568/229 +f 418/569/229 420/568/229 419/570/229 +f 388/571/229 419/570/229 434/572/229 +f 390/573/229 434/572/229 433/574/229 +f 392/575/229 433/574/229 432/576/229 +f 394/577/229 432/576/229 431/578/229 +f 396/579/229 431/578/229 430/580/229 +f 398/581/229 430/580/229 429/582/229 +f 402/584/229 400/583/229 429/582/229 +f 404/586/229 402/584/229 428/585/229 +f 406/588/229 404/972/229 427/589/229 +f 408/591/229 406/588/229 426/590/229 +f 410/593/229 408/591/229 425/592/229 +f 412/595/229 410/593/229 424/594/229 +f 414/597/229 412/595/229 423/596/229 +f 515/598/230 516/627/230 507/599/230 +f 523/601/230 506/973/230 504/602/230 +f 508/600/230 505/607/230 530/604/230 +f 522/603/230 504/602/230 501/605/230 +f 505/607/230 503/974/230 529/608/230 +f 521/606/230 501/605/230 502/609/230 +f 529/608/230 503/974/230 499/611/230 +f 528/612/230 499/611/230 500/613/230 +f 520/610/230 502/609/230 514/615/230 +f 527/614/230 500/613/230 513/617/230 +f 519/616/230 514/615/230 512/619/230 +f 526/618/230 513/617/230 511/621/230 +f 518/620/230 512/619/230 510/623/230 +f 525/622/230 511/621/230 509/625/230 +f 517/624/230 510/623/230 507/599/230 +f 523/628/230 524/626/230 509/625/230 +f 581/630/230 582/633/230 495/631/230 +f 582/633/230 583/975/230 494/634/230 +f 494/634/230 583/975/230 584/635/230 +f 584/635/230 585/976/230 492/637/230 +f 492/637/230 585/976/230 586/638/230 +f 491/639/230 586/638/230 587/640/230 +f 490/642/230 587/977/230 588/643/230 +f 489/644/230 588/643/230 589/645/230 +f 488/646/230 589/645/230 590/647/230 +f 487/648/230 590/647/230 591/649/230 +f 591/649/230 592/652/230 485/651/230 +f 592/652/230 593/654/230 484/653/230 +f 593/654/230 594/978/230 483/655/230 +f 483/655/230 594/978/230 579/656/230 +f 498/657/230 579/656/230 580/658/230 +f 580/658/230 581/630/230 496/632/230 +f 622/661/231 619/979/231 620/662/231 +f 620/662/231 613/980/231 614/670/231 +f 614/670/231 621/660/231 620/662/231 +f 616/663/229 619/673/229 622/664/229 +f 612/666/230 614/981/230 613/667/230 +f 618/669/232 621/660/232 614/670/232 +f 622/664/233 621/660/233 618/669/233 +f 616/663/234 615/674/234 620/672/234 +f 611/668/235 613/667/235 620/672/235 +f 633/982/230 632/983/230 631/675/230 +f 631/675/230 638/984/230 637/676/230 +f 637/676/230 636/985/230 635/677/230 +f 635/677/230 634/986/230 633/982/230 +f 633/982/230 631/675/230 635/677/230 +f 623/680/229 624/987/229 625/988/229 +f 625/988/229 626/989/229 627/678/229 +f 627/678/229 628/990/229 629/679/229 +f 629/679/229 630/991/229 623/680/229 +f 623/680/229 625/988/229 627/678/229 +f 647/681/230 665/992/230 650/682/230 +f 650/682/230 651/685/230 641/684/230 +f 651/685/230 652/687/230 642/686/230 +f 652/687/230 653/993/230 598/688/230 +f 648/689/229 644/693/229 688/690/229 +f 645/692/229 687/695/229 688/690/229 +f 646/694/229 686/697/229 687/695/229 +f 646/694/229 597/994/229 685/696/229 +f 647/700/236 648/995/236 689/698/236 +f 648/995/236 684/996/236 689/698/236 +f 689/698/236 679/997/236 665/699/236 +f 685/998/237 597/999/237 683/703/237 +f 597/999/237 598/1000/237 683/703/237 +f 598/1000/237 653/701/237 683/703/237 +f 445/704/230 695/1001/230 696/705/230 +f 707/707/230 714/711/230 713/708/230 +f 707/707/230 706/728/230 715/710/230 +f 709/712/230 712/715/230 711/713/230 +f 708/709/230 713/708/230 712/715/230 +f 723/716/229 724/1002/229 716/717/229 +f 716/717/229 724/1002/229 725/719/229 +f 722/721/229 721/724/229 718/722/229 +f 721/724/229 723/716/229 717/718/229 +f 730/725/238 726/732/238 729/726/238 +f 706/728/231 720/720/231 725/729/231 +f 728/731/229 729/1003/229 726/732/229 +f 730/725/230 732/1004/230 733/734/230 +f 735/736/230 737/739/230 736/737/230 +f 737/739/231 739/741/231 738/740/231 +f 739/741/239 741/743/239 740/742/239 +f 741/743/231 743/1005/231 742/744/231 +f 734/1006/235 736/737/235 738/740/235 +f 740/745/235 742/1007/235 744/746/235 +f 734/1006/235 738/740/235 744/746/235 +f 737/739/232 735/1008/232 739/741/232 +f 735/1008/232 745/747/232 739/741/232 +f 739/741/232 745/747/232 741/749/232 +f 750/752/230 749/1009/230 748/1010/230 +f 748/1010/230 763/1011/230 750/752/230 +f 763/1011/230 762/1012/230 750/752/230 +f 762/1012/230 761/1013/230 760/1014/230 +f 760/1014/230 759/1015/230 758/750/230 +f 758/750/230 757/1016/230 756/1017/230 +f 756/1017/230 755/1018/230 754/751/230 +f 754/751/230 753/1019/230 752/1020/230 +f 752/1020/230 751/1021/230 750/752/230 +f 762/1012/230 760/1014/230 758/750/230 +f 758/750/230 756/1017/230 754/751/230 +f 754/751/230 752/1020/230 750/752/230 +f 750/752/230 762/1012/230 758/750/230 +f 446/753/230 694/1022/230 695/754/230 +f 447/756/230 693/1023/230 694/757/230 +f 448/759/230 692/1024/230 693/760/230 +f 449/762/230 691/1025/230 692/763/230 +f 450/765/230 690/1026/230 691/766/230 +f 435/768/230 705/1027/230 690/769/230 +f 436/771/230 704/1028/230 705/772/230 +f 437/774/230 703/1029/230 704/775/230 +f 437/777/230 438/1030/230 702/778/230 +f 439/780/230 701/1031/230 702/781/230 +f 439/783/230 440/1032/230 700/784/230 +f 440/786/230 441/1033/230 699/787/230 +f 441/789/230 442/1034/230 698/790/230 +f 442/792/230 443/1035/230 697/793/230 +f 443/795/230 444/1036/230 696/796/230 +f 796/798/240 797/802/240 795/799/240 +f 798/801/231 799/1037/231 797/802/231 +f 801/805/232 795/799/232 797/803/232 +f 797/803/232 799/1038/232 803/804/232 +f 796/808/235 794/800/235 800/1039/235 +f 800/1039/235 802/806/235 796/808/235 +f 807/809/232 808/818/232 810/810/232 +f 804/812/235 811/815/235 809/813/235 +f 811/815/235 813/819/235 815/816/235 +f 814/817/232 812/822/232 810/810/232 +f 813/819/235 817/823/235 819/820/235 +f 814/817/232 818/1040/232 816/821/232 +f 817/823/235 821/1041/235 823/824/235 +f 816/821/232 818/1040/232 822/825/232 +f 826/827/231 827/1042/231 825/828/231 +f 829/832/232 825/828/232 827/1042/232 +f 827/1042/232 833/830/232 829/832/232 +f 832/835/235 826/827/235 828/833/235 +f 826/827/235 824/829/235 828/833/235 +f 836/838/230 835/1043/230 844/836/230 +f 835/1043/230 834/1044/230 844/836/230 +f 834/1044/230 845/1045/230 844/836/230 +f 844/836/230 843/1046/230 842/1047/230 +f 842/1047/230 841/1048/230 840/837/230 +f 840/837/230 839/1049/230 838/1050/230 +f 838/1050/230 837/1051/230 840/837/230 +f 837/1051/230 836/838/230 840/837/230 +f 844/836/230 842/1047/230 840/837/230 +f 847/840/229 846/1052/229 848/1053/229 +f 848/1053/229 849/1054/229 847/840/229 +f 849/1054/229 850/841/229 847/840/229 +f 850/841/229 851/1055/229 854/1056/229 +f 851/1055/229 852/1057/229 854/1056/229 +f 852/1057/229 853/1058/229 854/1056/229 +f 854/1056/229 855/1059/229 856/839/229 +f 856/839/229 857/1060/229 847/840/229 +f 854/1056/229 856/839/229 850/841/229 +f 858/843/229 859/1061/229 860/1062/229 +f 860/1062/229 861/1063/229 858/843/229 +f 861/1063/229 862/844/229 858/843/229 +f 862/844/229 863/1064/229 866/1065/229 +f 863/1064/229 864/1066/229 866/1065/229 +f 864/1066/229 865/1067/229 866/1065/229 +f 866/1065/229 867/1068/229 868/842/229 +f 868/842/229 869/1069/229 858/843/229 +f 866/1065/229 868/842/229 862/844/229 +f 872/847/230 870/1070/230 880/845/230 +f 870/1070/230 871/1071/230 880/845/230 +f 871/1071/230 881/1072/230 880/845/230 +f 880/845/230 879/1073/230 878/1074/230 +f 878/1074/230 877/1075/230 876/846/230 +f 876/846/230 875/1076/230 874/1077/230 +f 874/1077/230 873/1078/230 876/846/230 +f 873/1078/230 872/847/230 876/846/230 +f 880/845/230 878/1074/230 876/846/230 +f 884/848/237 885/853/237 883/849/237 +f 882/850/230 887/1079/230 889/851/230 +f 883/849/241 886/1080/241 887/852/241 +f 885/853/229 888/1081/229 886/854/229 +f 884/848/242 889/1082/242 888/855/242 +f 899/856/230 911/1083/230 912/857/230 +f 912/857/230 913/1084/230 901/859/230 +f 901/859/230 913/1084/230 902/860/230 +f 902/860/230 903/1085/230 891/862/230 +f 891/862/230 903/1085/230 904/863/230 +f 904/863/230 905/1086/230 893/865/230 +f 893/865/230 905/1086/230 906/866/230 +f 906/866/230 907/1087/230 895/868/230 +f 895/868/230 907/1087/230 908/869/230 +f 908/871/230 909/1088/230 897/872/230 +f 897/872/230 909/1088/230 910/874/230 +f 910/874/230 911/1083/230 899/856/230 +f 923/876/229 924/880/229 936/877/229 +f 925/879/229 937/882/229 936/877/229 +f 925/879/229 915/884/229 927/881/229 +f 914/883/229 926/886/229 927/881/229 +f 914/883/229 916/888/229 928/885/229 +f 917/887/229 929/890/229 928/885/229 +f 917/887/229 918/892/229 930/889/229 +f 919/891/229 931/894/229 930/889/229 +f 919/891/229 920/1089/229 932/893/229 +f 921/895/229 933/899/229 932/896/229 +f 921/895/229 922/900/229 934/898/229 +f 923/876/229 935/878/229 934/898/229 +f 945/901/243 957/905/243 956/902/243 +f 958/904/229 959/916/229 956/902/229 +f 947/908/230 941/1090/230 953/1091/230 +f 953/1091/230 955/1092/230 947/908/230 +f 955/1092/230 950/1093/230 947/908/230 +f 950/1093/230 948/906/230 947/908/230 +f 944/909/235 958/904/235 957/905/235 +f 948/906/235 950/1093/235 951/911/235 +f 940/913/244 948/906/244 949/912/244 +f 943/915/232 942/1094/232 956/902/232 +f 951/919/229 954/1095/229 946/917/229 +f 954/1095/229 952/920/229 946/917/229 +f 952/920/229 939/1096/229 946/917/229 +f 946/917/229 938/1097/229 949/918/229 +f 952/920/232 954/1095/232 955/921/232 +f 939/923/245 952/920/245 953/922/245 +f 962/925/235 966/928/235 965/926/235 +f 966/928/229 967/933/229 964/929/229 +f 963/930/243 965/926/243 964/929/243 +f 961/932/232 960/1098/232 964/929/232 +f 976/936/229 977/1099/229 978/1100/229 +f 978/1100/229 979/1101/229 980/934/229 +f 980/934/229 981/1102/229 982/935/229 +f 982/935/229 983/1103/229 976/936/229 +f 976/936/229 978/1100/229 980/934/229 +f 990/937/232 991/945/232 988/938/232 +f 987/940/231 991/945/231 990/937/231 +f 984/942/237 989/939/237 988/938/237 +f 986/944/230 988/938/230 991/945/230 +f 985/947/229 990/937/229 989/939/229 +f 682/949/229 683/1104/229 667/950/229 +f 992/951/229 993/953/229 681/952/229 +f 993/953/229 994/955/229 680/954/229 +f 994/955/229 679/1105/229 689/956/229 +f 679/959/229 994/1106/229 993/1107/229 +f 993/1107/229 992/1108/229 679/959/229 +f 992/1108/229 667/1109/229 679/959/229 +f 667/1109/229 668/1110/229 679/959/229 +f 668/1110/229 669/1111/229 679/959/229 +f 669/1111/229 670/1112/229 679/959/229 +f 670/1112/229 671/1113/229 679/959/229 +f 671/1113/229 672/1114/229 679/959/229 +f 672/1114/229 673/1115/229 679/959/229 +f 673/1115/229 674/1116/229 679/959/229 +f 674/1116/229 675/1117/229 679/959/229 +f 675/1117/229 676/1118/229 679/959/229 +f 676/1118/229 677/1119/229 679/959/229 +f 677/1119/229 678/957/229 679/959/229 +f 997/962/230 996/1120/230 1005/960/230 +f 996/1120/230 995/1121/230 1005/960/230 +f 995/1121/230 1006/1122/230 1005/960/230 +f 1005/960/230 1004/1123/230 1003/1124/230 +f 1003/1124/230 1002/1125/230 1001/961/230 +f 1001/961/230 1000/1126/230 999/1127/230 +f 999/1127/230 998/1128/230 1001/961/230 +f 998/1128/230 997/962/230 1001/961/230 +f 1005/960/230 1003/1124/230 1001/961/230 +f 1008/964/229 1007/1129/229 1009/1130/229 +f 1009/1130/229 1010/1131/229 1008/964/229 +f 1010/1131/229 1011/965/229 1008/964/229 +f 1011/965/229 1012/1132/229 1015/1133/229 +f 1012/1132/229 1013/1134/229 1015/1133/229 +f 1013/1134/229 1014/1135/229 1015/1133/229 +f 1015/1133/229 1016/1136/229 1017/963/229 +f 1017/963/229 1018/1137/229 1008/964/229 +f 1015/1133/229 1017/963/229 1011/965/229 +f 1019/967/229 1020/1138/229 1021/1139/229 +f 1021/1139/229 1022/1140/229 1019/967/229 +f 1022/1140/229 1023/968/229 1019/967/229 +f 1023/968/229 1024/1141/229 1027/1142/229 +f 1024/1141/229 1025/1143/229 1027/1142/229 +f 1025/1143/229 1026/1144/229 1027/1142/229 +f 1027/1142/229 1028/1145/229 1029/966/229 +f 1029/966/229 1030/1146/229 1019/967/229 +f 1027/1142/229 1029/966/229 1023/968/229 +f 1033/971/230 1031/1147/230 1041/969/230 +f 1031/1147/230 1032/1148/230 1041/969/230 +f 1032/1148/230 1042/1149/230 1041/969/230 +f 1041/969/230 1040/1150/230 1039/1151/230 +f 1039/1151/230 1038/1152/230 1037/970/230 +f 1037/970/230 1036/1153/230 1035/1154/230 +f 1035/1154/230 1034/1155/230 1037/970/230 +f 1034/1155/230 1033/971/230 1037/970/230 +f 1041/969/230 1039/1151/230 1037/970/230 s 1 -f 2/7/9 3/766/24 1/767/25 -f 4/9/26 5/768/27 3/766/24 -f 6/11/23 7/769/28 5/768/27 -f 8/13/29 9/770/30 7/769/28 -f 10/15/5 11/771/31 9/770/30 -f 12/17/32 13/772/33 11/771/31 -f 13/772/33 16/20/34 15/773/35 -f 16/20/34 17/774/36 15/773/35 -f 18/504/4 19/775/37 17/776/36 -f 20/24/38 21/777/39 19/775/37 -f 22/27/40 23/778/41 21/777/39 -f 24/29/10 25/779/42 23/778/41 -f 26/31/3 27/780/43 25/779/42 -f 28/33/11 29/781/44 27/780/43 -f 30/1/22 31/782/45 29/781/44 -f 31/782/45 2/7/9 1/767/25 -f 43/18/22 58/783/46 42/21/46 -f 36/2/32 51/784/47 35/3/47 -f 44/16/11 59/785/22 43/18/22 -f 37/32/5 52/786/32 36/2/32 -f 45/14/3 60/787/11 44/16/11 -f 38/30/29 53/788/5 37/32/5 -f 46/12/10 61/789/3 45/14/3 -f 39/28/23 54/790/29 38/30/29 -f 47/10/40 62/791/10 46/12/10 -f 40/26/26 55/792/23 39/28/23 -f 48/8/38 63/793/40 47/10/40 -f 41/25/9 56/794/26 40/26/26 -f 34/4/34 49/795/4 33/6/4 -f 33/6/4 64/796/38 48/8/38 -f 42/21/46 57/797/9 41/23/9 -f 35/3/47 50/798/34 34/4/34 -f 66/799/48 81/800/49 65/801/50 -f 81/800/49 31/802/45 1/803/25 -f 80/804/51 81/805/49 96/806/52 -f 80/804/51 95/807/53 79/808/54 -f 79/808/54 94/809/55 78/810/56 -f 77/811/57 94/812/55 93/813/58 -f 76/814/59 93/815/58 92/816/60 -f 75/817/61 92/818/60 91/819/62 -f 74/820/63 91/821/62 90/822/64 -f 74/820/63 89/823/65 73/824/66 -f 72/825/67 89/826/65 88/827/68 -f 72/825/67 87/828/69 71/829/70 -f 71/829/70 86/830/71 70/831/72 -f 70/831/72 85/832/73 69/833/74 -f 68/834/75 85/835/73 84/836/76 -f 67/837/77 84/838/76 83/839/78 -f 67/837/77 82/840/79 66/799/48 -f 3/841/24 81/805/49 1/842/25 -f 5/843/27 96/844/52 3/845/24 -f 94/809/55 5/846/27 7/847/28 -f 93/813/58 7/848/28 9/849/30 -f 11/850/31 93/815/58 9/851/30 -f 13/852/33 92/818/60 11/853/31 -f 90/822/64 13/854/33 15/855/35 -f 89/823/65 15/856/35 17/857/36 -f 19/858/37 89/826/65 17/859/36 -f 21/860/39 88/861/68 19/862/37 -f 23/863/41 87/864/69 21/865/39 -f 85/832/73 23/866/41 25/867/42 -f 84/836/76 25/868/42 27/869/43 -f 83/839/78 27/870/43 29/871/44 -f 82/840/79 29/872/44 31/873/45 -f 129/34/9 111/95/46 130/63/46 -f 144/40/26 112/93/9 129/34/9 -f 137/64/4 103/80/34 138/62/34 -f 130/63/46 110/68/22 131/60/22 -f 138/62/34 102/82/47 139/58/47 -f 131/60/22 109/67/11 132/56/11 -f 139/58/47 101/84/32 140/54/32 -f 132/56/11 108/70/3 133/52/3 -f 140/54/32 100/86/5 141/50/5 -f 133/52/3 107/72/10 134/46/10 -f 141/50/5 99/87/29 142/48/29 -f 134/46/10 106/73/40 135/42/40 -f 142/48/29 98/89/23 143/44/23 -f 135/42/40 105/75/38 136/39/38 -f 143/44/23 97/91/26 144/40/26 -f 136/39/38 104/77/4 137/37/4 -f 154/874/9 119/43/26 122/36/9 -f 153/875/46 122/36/9 121/35/46 -f 156/876/22 121/35/46 124/59/22 -f 158/877/11 124/59/22 126/55/11 -f 160/878/3 126/55/11 128/51/3 -f 148/879/10 128/51/3 116/45/10 -f 147/880/40 116/45/10 115/41/40 -f 150/881/38 115/41/40 118/38/38 -f 152/882/4 118/38/38 120/505/4 -f 155/883/34 120/65/4 123/61/34 -f 157/884/47 123/61/34 125/57/47 -f 159/885/32 125/57/47 127/53/32 -f 146/886/5 127/53/32 114/49/5 -f 145/887/29 114/49/5 113/47/29 -f 149/888/23 113/47/29 117/506/23 -f 151/889/26 117/506/23 119/43/26 -f 192/890/80 153/875/81 191/891/81 -f 177/892/82 154/874/80 192/890/80 -f 178/893/83 151/889/82 177/892/82 -f 178/893/83 145/887/84 149/888/83 -f 179/894/84 146/886/6 145/887/84 -f 180/895/6 159/885/85 146/886/6 -f 181/896/85 157/884/86 159/885/85 -f 182/897/86 155/883/87 157/884/86 -f 184/898/88 155/883/87 183/899/87 -f 184/900/88 150/881/89 152/882/88 -f 185/901/89 147/880/90 150/881/89 -f 186/902/90 148/879/91 147/880/90 -f 188/903/7 148/879/91 187/904/91 -f 188/903/7 158/877/92 160/878/7 -f 189/905/92 156/876/93 158/877/92 -f 190/906/93 153/875/81 156/876/93 -f 172/907/94 191/891/95 190/906/94 -f 169/908/95 192/890/96 191/891/95 -f 170/909/96 177/892/97 192/890/96 -f 167/910/97 178/893/98 177/892/97 -f 178/893/98 161/911/99 179/894/99 -f 179/894/99 162/912/100 180/895/100 -f 180/895/100 175/913/101 181/896/101 -f 181/896/101 173/914/102 182/897/102 -f 173/914/102 183/899/103 182/897/102 -f 171/915/103 184/898/104 183/899/103 -f 184/900/104 166/916/105 185/901/105 -f 185/901/105 163/917/106 186/902/106 -f 186/902/106 164/918/107 187/904/107 -f 164/918/107 188/903/108 187/904/107 -f 188/903/108 174/919/109 189/905/109 -f 189/905/109 172/907/94 190/906/94 -f 66/799/46 172/907/22 67/837/22 -f 65/801/9 169/908/46 66/799/46 -f 80/804/26 170/909/9 65/801/9 -f 79/808/23 167/910/26 80/804/26 -f 78/810/29 165/920/23 79/808/23 -f 77/811/5 161/911/29 78/810/29 -f 76/814/32 162/912/5 77/811/5 -f 75/817/47 175/913/32 76/814/32 -f 74/820/34 173/914/47 75/817/47 -f 73/824/4 171/915/34 74/820/34 -f 72/825/38 168/921/4 73/922/4 -f 71/829/40 166/916/38 72/825/38 -f 70/831/10 163/917/40 71/829/40 -f 69/833/3 164/918/10 70/831/10 -f 68/834/11 176/923/3 69/833/3 -f 67/837/22 174/919/11 68/834/11 -f 198/924/10 215/925/110 199/926/40 -f 206/927/29 223/928/111 207/929/23 -f 199/926/40 216/930/112 200/931/38 -f 207/929/23 224/932/113 208/933/26 -f 200/931/38 217/934/114 201/935/4 -f 208/933/26 209/936/115 193/937/9 -f 201/938/4 218/939/116 202/940/34 -f 202/940/34 219/941/117 203/942/47 -f 203/942/47 220/943/118 204/944/32 -f 204/944/32 221/945/119 205/946/5 -f 270/947/120 193/937/9 209/936/115 -f 205/946/5 222/948/121 206/927/29 -f 245/949/9 254/950/22 246/951/22 -f 252/952/23 253/953/9 245/949/9 -f 250/954/47 259/955/5 251/956/5 -f 248/957/40 257/958/4 249/959/4 -f 246/951/22 255/960/3 247/961/3 -f 251/956/5 260/962/23 252/952/23 -f 249/963/4 258/964/47 250/954/47 -f 247/961/3 256/965/40 248/957/40 -f 269/966/120 194/967/46 193/937/9 -f 211/968/122 213/969/123 214/970/124 -f 264/971/11 197/972/3 196/973/11 -f 263/974/22 196/973/11 195/975/22 -f 262/976/46 195/975/22 194/967/46 -f 261/977/125 211/968/122 268/978/11 -f 265/979/126 268/978/11 267/980/22 -f 210/981/127 267/980/22 266/982/46 -f 210/981/127 270/947/120 209/936/115 -f 280/983/128 293/984/9 279/985/129 -f 281/986/130 294/987/46 280/983/128 -f 282/988/131 295/989/22 281/986/130 -f 283/990/132 296/991/11 282/988/131 -f 276/992/133 289/150/134 275/149/135 -f 284/993/136 297/994/3 283/990/132 -f 277/995/137 290/996/29 276/992/133 -f 285/997/138 298/998/10 284/993/136 -f 278/999/139 291/1000/23 277/995/137 -f 286/1001/140 299/1002/40 285/997/138 -f 279/985/129 292/1003/26 278/999/139 -f 287/147/141 288/1004/4 271/1005/142 -f 271/1005/142 300/1006/38 286/1001/140 -f 309/1007/22 304/481/11 303/484/22 -f 306/1008/120 302/486/46 311/488/120 -f 308/1009/11 305/714/143 304/481/11 -f 310/1010/46 303/484/22 302/486/46 -f 322/263/144 277/995/137 276/992/133 -f 277/995/137 320/265/145 278/999/139 -f 278/999/139 319/268/146 279/985/129 -f 319/272/146 280/983/128 279/985/129 -f 318/153/147 281/986/130 280/983/128 -f 281/986/130 316/562/148 282/988/131 -f 316/232/148 283/990/132 282/988/131 -f 315/235/149 284/993/136 283/990/132 -f 314/238/150 285/997/138 284/993/136 -f 312/244/151 271/1005/142 286/1001/140 -f 313/241/152 286/1001/140 285/997/138 -f 326/568/153 272/1011/153 287/147/141 -f 326/250/153 273/1012/154 272/1011/153 -f 325/254/154 274/1013/155 273/1012/154 -f 274/1013/155 323/571/156 275/1014/135 -f 323/260/156 276/992/133 275/149/135 -f 337/1015/11 330/1016/22 338/1017/22 -f 342/177/32 332/171/157 343/155/157 -f 379/1018/120 375/1019/158 378/1020/158 -f 336/1021/143 329/1022/11 337/1015/11 -f 341/174/47 335/172/32 342/177/32 -f 372/205/159 377/163/160 376/208/159 -f 346/169/23 354/186/29 345/167/29 -f 345/167/29 358/189/134 344/197/134 -f 365/202/161 347/181/26 348/183/161 -f 356/191/26 369/204/161 357/192/161 -f 364/201/162 368/194/162 355/187/23 -f 375/1019/158 330/1016/22 378/1020/158 -f 376/208/159 334/165/47 341/174/47 -f 397/1023/163 213/969/123 261/977/125 -f 220/943/118 406/1024/164 221/945/119 -f 221/945/119 407/1025/165 222/948/121 -f 407/1025/165 223/928/111 222/948/121 -f 215/925/110 401/1026/166 216/930/112 -f 214/970/124 400/1027/167 215/925/110 -f 408/1028/168 224/932/113 223/928/111 -f 265/979/126 397/1023/163 261/977/125 -f 409/1029/169 209/936/115 224/932/113 -f 217/1030/114 403/1031/170 218/939/116 -f 213/969/123 399/1032/171 214/970/124 -f 209/936/115 395/1033/172 210/981/127 -f 403/1031/170 219/941/117 218/939/116 -f 216/930/112 402/1034/173 217/934/114 -f 395/1033/172 265/979/126 210/981/127 -f 219/941/117 405/1035/174 220/943/118 -f 392/1036/175 432/1037/176 393/1038/177 -f 433/1039/178 413/1040/179 412/1041/180 -f 435/1042/181 426/1043/182 433/1039/178 -f 437/1044/183 428/1045/184 435/1042/181 -f 438/1046/185 429/1047/186 437/1044/183 -f 424/1048/187 439/1049/188 432/1037/176 -f 439/1049/188 430/1050/189 438/1046/185 -f 423/1051/190 418/1052/191 416/1053/192 -f 425/1054/193 417/1055/194 422/1056/195 -f 410/1057/196 392/1058/175 425/1054/193 -f 415/1059/197 413/1060/179 426/1061/182 -f 415/1059/197 428/1062/184 417/1055/194 -f 419/1063/198 428/1062/184 429/1064/186 -f 421/1065/199 429/1064/186 430/1066/189 -f 410/1057/196 431/1067/200 424/1068/187 -f 421/1065/199 431/1067/200 422/1056/195 -f 411/1069/201 393/1070/177 432/1071/176 -f 414/1072/202 412/1073/180 436/1074/203 -f 414/1072/202 435/1075/181 433/1076/178 -f 418/1052/191 435/1075/181 416/1053/192 -f 420/1077/204 437/1078/183 418/1052/191 -f 411/1069/201 439/1079/188 423/1051/190 -f 420/1077/204 439/1079/188 438/1080/185 -f 452/289/1 454/293/205 453/284/1 -f 451/286/2 457/1081/206 450/1082/2 -f 456/285/206 459/1083/207 457/1081/206 -f 455/288/205 460/292/208 454/293/205 -f 458/297/207 463/1084/209 459/1083/207 -f 461/291/208 464/580/210 460/292/208 -f 462/296/209 467/1085/211 463/1084/209 -f 465/295/210 468/300/212 464/580/210 -f 475/1086/213 470/304/1 471/303/1 -f 477/1087/214 474/1088/213 475/1086/213 -f 484/1089/215 497/1090/216 485/1091/216 -f 491/1092/217 492/1093/218 480/1094/218 -f 481/1095/219 494/1096/220 482/1097/220 -f 488/1098/221 501/1099/15 489/1100/15 -f 485/1091/216 498/1101/222 486/1102/222 -f 482/1097/220 495/1103/14 483/1104/14 -f 489/1100/15 502/1105/223 490/1106/223 -f 486/1102/222 499/1107/224 487/1108/224 -f 483/1104/14 496/1109/215 484/1089/215 -f 490/1106/223 503/1110/217 491/1092/217 -f 480/1111/218 493/1112/219 481/1095/219 -f 487/1108/224 500/1113/221 488/1098/221 -f 518/1114/220 507/1115/14 506/1116/220 -f 525/1117/15 514/1118/223 513/1119/15 -f 522/1120/222 511/1121/224 510/1122/222 -f 519/1123/14 508/1124/215 507/1115/14 -f 526/1125/223 515/1126/217 514/1118/223 -f 516/1127/218 505/1128/219 504/1129/218 -f 523/1130/224 512/1131/221 511/1121/224 -f 520/1132/215 509/1133/216 508/1124/215 -f 527/1134/217 504/1135/218 515/1126/217 -f 517/1136/219 506/1116/220 505/1128/219 -f 524/1137/221 513/1119/15 512/1131/221 -f 521/1138/216 510/1122/222 509/1133/216 -f 535/329/225 538/1139/225 539/320/225 -f 531/323/5 534/1140/225 535/329/225 -f 530/325/3 533/611/226 528/326/3 -f 532/324/226 537/330/226 533/611/226 -f 562/1141/222 551/1142/224 550/1143/222 -f 538/1139/225 543/610/5 539/320/225 -f 536/322/226 541/612/3 537/330/226 -f 559/1144/14 548/1145/215 547/1146/14 -f 566/1147/223 555/1148/217 554/1149/223 -f 556/1150/218 545/1151/219 544/1152/218 -f 563/1153/224 552/1154/221 551/1142/224 -f 560/1155/215 549/1156/216 548/1145/215 -f 567/1157/217 544/1158/218 555/1148/217 -f 557/1159/219 546/1160/220 545/1151/219 -f 564/1161/221 553/1162/15 552/1154/221 -f 561/1163/216 550/1143/222 549/1156/216 -f 558/1164/220 547/1146/14 546/1160/220 -f 565/1165/15 554/1149/223 553/1162/15 -f 573/1166/227 584/1167/228 572/1168/228 -f 568/1169/9 591/1170/229 579/1171/229 -f 570/1172/230 580/1173/231 569/1174/231 -f 577/1175/5 588/1176/232 576/1177/232 -f 574/1178/4 585/1179/227 573/1166/227 -f 571/1180/3 582/1181/230 570/1172/230 -f 578/1182/233 589/1183/5 577/1175/5 -f 575/1184/234 586/1185/4 574/1186/4 -f 572/1168/228 583/1187/3 571/1180/3 -f 579/1171/229 590/1188/233 578/1182/233 -f 569/1174/231 581/1189/9 568/1169/9 -f 576/1177/232 587/1190/234 575/1184/234 -f 602/1191/233 615/1192/229 603/1193/229 -f 595/1194/3 608/1195/228 596/1196/228 -f 603/1193/229 605/1197/9 592/1198/9 -f 596/1196/228 609/1199/227 597/1200/227 -f 597/1200/227 610/1201/4 598/1202/4 -f 598/1203/4 611/1204/234 599/1205/234 -f 599/1205/234 612/1206/232 600/1207/232 -f 592/1198/9 604/1208/231 593/1209/231 -f 600/1207/232 613/1210/5 601/1211/5 -f 593/1209/231 606/1212/230 594/1213/230 -f 601/1211/5 614/1214/233 602/1191/233 -f 594/1213/230 607/1215/3 595/1194/3 -f 622/1216/235 636/1217/236 623/1218/237 -f 619/1219/238 633/1220/239 620/1221/240 -f 627/1222/241 639/1223/242 640/1224/243 -f 617/1225/244 629/1226/245 630/1227/246 -f 624/1228/247 636/1217/236 637/1229/248 -f 621/1230/249 633/1220/239 634/1231/250 -f 627/1222/241 629/1226/245 616/1232/251 -f 618/1233/252 630/1227/246 631/1234/253 -f 624/1228/247 638/1235/254 625/1236/255 -f 622/1237/235 634/1231/250 635/1238/256 -f 618/1233/252 632/1239/257 619/1219/238 -f 625/1236/255 639/1223/242 626/1240/258 -f 640/1224/243 641/1241/259 629/1226/245 -f 630/1227/246 643/1242/260 631/1234/253 -f 638/1235/254 649/1243/261 650/1244/262 -f 634/1231/250 647/1245/263 635/1238/256 -f 631/1234/253 644/1246/264 632/1239/257 -f 638/1235/254 651/1247/265 639/1223/242 -f 635/1248/256 648/1249/266 636/1217/236 -f 632/1239/257 645/1250/267 633/1220/239 -f 640/1224/243 651/1247/265 652/1251/268 -f 630/1227/246 641/1241/259 642/1252/269 -f 637/1229/248 648/1249/266 649/1243/261 -f 633/1220/239 646/1253/270 634/1231/250 -f 645/1250/267 658/1254/271 646/1253/270 -f 641/1241/259 664/1255/272 653/1256/273 -f 642/1252/269 655/1257/274 643/1242/260 -f 650/1244/262 661/1258/275 662/1259/276 -f 647/1245/263 658/1254/271 659/1260/277 -f 643/1242/260 656/1261/278 644/1246/264 -f 651/1247/265 662/1259/276 663/1262/279 -f 647/1263/263 660/1264/280 648/1249/266 -f 644/1246/264 657/1265/281 645/1250/267 -f 652/1251/268 663/1262/279 664/1255/272 -f 642/1252/269 653/1256/273 654/1266/282 -f 649/1243/261 660/1264/280 661/1258/275 -f 657/1265/281 669/1267/283 658/1254/271 -f 664/1255/272 628/1268/284 653/1256/273 -f 654/1266/282 666/1269/285 655/1257/274 -f 662/1259/276 672/1270/286 673/1271/287 -f 658/1254/271 670/1272/288 659/1260/277 -f 655/1257/274 667/1273/289 656/1261/278 -f 662/1259/276 674/1274/290 663/1262/279 -f 659/1275/277 671/1276/291 660/1264/280 -f 656/1261/278 668/1277/292 657/1265/281 -f 663/1262/279 675/1278/293 664/1255/272 -f 654/1266/282 628/1268/284 665/1279/294 -f 661/1258/275 671/1276/291 672/1270/286 -f 672/1270/286 684/1280/295 685/1281/296 -f 668/1277/292 682/1282/297 669/1267/283 -f 675/1278/293 677/1283/298 628/1268/284 -f 665/1279/294 679/1284/299 666/1269/285 -f 673/1271/287 685/1281/296 686/1285/233 -f 670/1272/288 682/1282/297 683/1286/300 -f 667/1273/289 679/1284/299 680/1287/228 -f 673/1271/287 687/1288/301 674/1274/290 -f 670/1289/288 684/1280/295 671/1276/291 -f 668/1277/292 680/1287/228 681/1290/302 -f 675/1278/293 687/1288/301 688/1291/303 -f 665/1279/294 677/1283/298 678/1292/304 -f 678/1292/304 689/1293/305 690/1294/306 -f 685/1281/296 696/1295/307 697/1296/308 -f 681/1290/302 694/1297/309 682/1282/297 -f 688/1291/303 689/1293/305 677/1283/298 -f 679/1284/299 690/1294/306 691/1298/310 -f 685/1281/296 698/1299/229 686/1285/233 -f 683/1286/300 694/1297/309 695/1300/311 -f 680/1287/228 691/1298/310 692/1301/227 -f 687/1288/301 698/1299/229 699/1302/312 -f 683/1303/300 696/1295/307 684/1280/295 -f 680/1287/228 693/1304/313 681/1290/302 -f 688/1291/303 699/1302/312 700/1305/314 -f 699/1302/312 712/1306/315 700/1305/314 -f 690/1294/306 701/1307/316 702/1308/317 -f 697/1296/308 708/1309/318 709/1310/319 -f 693/1304/313 706/1311/320 694/1297/309 -f 700/1305/314 701/1307/316 689/1293/305 -f 690/1294/306 703/1312/321 691/1298/310 -f 698/1299/229 709/1310/319 710/1313/9 -f 695/1300/311 706/1311/320 707/1314/322 -f 692/1301/227 703/1312/321 704/1315/4 -f 699/1302/312 710/1313/9 711/1316/323 -f 695/1317/311 708/1309/318 696/1295/307 -f 692/1301/227 705/1318/324 693/1304/313 -f 732/1319/325 718/1320/235 719/1321/249 -f 729/1322/248 715/1323/255 716/1324/247 -f 723/1325/244 735/1326/253 722/1327/252 -f 713/1328/241 725/1329/245 676/1330/251 -f 733/1331/239 719/1321/249 720/1332/240 -f 730/1333/326 716/1324/247 717/1334/237 -f 725/1329/245 723/1325/244 676/1330/251 -f 727/1335/242 713/1328/241 714/1336/258 -f 721/1337/238 733/1331/239 720/1332/240 -f 718/1338/235 730/1333/326 717/1334/237 -f 715/1323/255 727/1335/242 714/1336/258 -f 722/1327/252 734/1339/257 721/1337/238 -f 725/1329/245 748/1340/269 736/1341/246 -f 739/1342/265 726/1343/243 727/1335/242 -f 746/1344/264 733/1331/239 734/1339/257 -f 731/1345/256 742/1346/327 730/1333/326 -f 728/1347/254 739/1342/265 727/1335/242 -f 747/1348/260 734/1339/257 735/1326/253 -f 744/1349/270 731/1350/256 732/1319/325 -f 741/1351/261 728/1347/254 729/1322/248 -f 736/1341/246 747/1348/260 735/1326/253 -f 738/1352/268 725/1329/245 726/1343/243 -f 733/1331/239 744/1349/270 732/1319/325 -f 742/1346/327 729/1322/248 730/1333/326 -f 754/1353/280 741/1351/261 742/1346/327 -f 749/1354/273 748/1340/269 737/1355/259 -f 751/1356/279 738/1352/268 739/1342/265 -f 746/1344/264 757/1357/281 745/1358/267 -f 743/1359/263 754/1353/280 742/1346/327 -f 752/1360/276 739/1342/265 740/1361/262 -f 747/1348/260 758/1362/278 746/1344/264 -f 756/1363/271 743/1364/263 744/1349/270 -f 753/1365/275 740/1361/262 741/1351/261 -f 748/1340/269 759/1366/274 747/1348/260 -f 738/1352/268 749/1354/273 737/1355/259 -f 745/1358/267 756/1363/271 744/1349/270 -f 765/1367/328 753/1365/275 754/1353/280 -f 724/1368/329 760/1369/282 749/1354/273 -f 762/1370/330 750/1371/272 751/1356/279 -f 769/1372/331 757/1357/281 758/1362/278 -f 755/1373/277 765/1367/328 754/1353/280 -f 763/1374/332 751/1356/279 752/1360/276 -f 770/1375/333 758/1362/278 759/1366/274 -f 767/1376/334 755/1377/277 756/1363/271 -f 764/1378/335 752/1360/276 753/1365/275 -f 760/1369/282 770/1375/333 759/1366/274 -f 761/1379/336 749/1354/273 750/1371/272 -f 757/1357/281 767/1376/334 756/1363/271 -f 768/1380/337 779/1381/338 767/1376/334 -f 777/1382/339 764/1378/335 765/1367/328 -f 772/1383/340 771/1384/341 724/1368/329 -f 774/1385/342 761/1379/336 762/1370/330 -f 769/1372/331 780/1386/343 768/1380/337 -f 766/1387/344 777/1382/339 765/1367/328 -f 763/1374/332 774/1385/342 762/1370/330 -f 782/1388/345 769/1372/331 770/1375/333 -f 779/1381/338 766/1389/344 767/1376/334 -f 764/1378/335 775/1390/232 763/1374/332 -f 771/1384/341 782/1388/345 770/1375/333 -f 761/1379/336 772/1383/340 724/1368/329 -f 773/1391/346 784/1392/347 772/1383/340 -f 780/1386/343 791/1393/348 779/1381/338 -f 789/1394/349 776/1395/350 777/1382/339 -f 784/1392/347 783/1396/351 772/1383/340 -f 786/1397/352 773/1391/346 774/1385/342 -f 793/1398/231 780/1386/343 781/1399/230 -f 790/1400/353 777/1382/339 778/1401/354 -f 775/1390/232 786/1397/352 774/1385/342 -f 782/1388/345 793/1398/231 781/1399/230 -f 791/1393/348 778/1402/354 779/1381/338 -f 788/1403/355 775/1390/232 776/1395/350 -f 783/1396/351 794/1404/356 782/1388/345 -f 711/1405/323 795/1406/357 712/1407/315 -f 710/1408/9 794/1404/356 711/1405/323 -f 792/1409/358 710/1408/9 709/1410/319 -f 791/1393/348 709/1410/319 708/1411/318 -f 707/1314/322 791/1393/348 708/1411/318 -f 789/1394/349 707/1412/322 706/1413/320 -f 705/1414/324 789/1394/349 706/1413/320 -f 787/1415/234 705/1414/324 704/1416/4 -f 703/1417/321 787/1415/234 704/1416/4 -f 785/1418/359 703/1417/321 702/1419/317 -f 701/1307/316 785/1418/359 702/1419/317 -f 795/1406/357 701/1307/316 712/1407/315 -f 714/1336/258 811/1420/5 715/1323/255 -f 722/1327/252 819/1421/231 723/1325/244 -f 622/1237/235 801/1422/227 621/1230/249 -f 715/1323/255 812/1423/232 716/1324/247 -f 723/1325/244 808/1424/9 676/1330/251 -f 623/1218/237 802/1425/4 622/1216/235 -f 716/1324/247 813/1426/234 717/1334/237 -f 624/1228/247 803/1427/234 623/1218/237 -f 717/1334/237 814/1428/4 718/1338/235 -f 617/1225/244 796/1429/9 616/1232/251 -f 625/1236/255 804/1430/232 624/1228/247 -f 718/1320/235 815/1431/227 719/1321/249 -f 618/1233/252 797/1432/231 617/1225/244 -f 626/1240/258 805/1433/5 625/1236/255 -f 719/1321/249 816/1434/228 720/1332/240 -f 619/1219/238 798/1435/230 618/1233/252 -f 676/1330/251 809/1436/229 713/1328/241 -f 627/1222/241 806/1437/233 626/1240/258 -f 720/1332/240 817/1438/3 721/1337/238 -f 620/1221/240 799/1439/3 619/1219/238 -f 713/1328/241 810/1440/233 714/1336/258 -f 616/1232/251 807/1441/229 627/1222/241 -f 721/1337/238 818/1442/230 722/1327/252 -f 621/1230/249 800/1443/228 620/1221/240 -f 821/1444/360 834/1445/361 833/1446/362 -f 828/1447/363 841/1448/364 840/1449/365 -f 826/1450/366 837/1451/367 825/1452/368 -f 823/1453/3 834/1445/361 822/1454/369 -f 829/1455/5 842/1456/370 841/1448/364 -f 826/1457/366 839/1458/371 838/1459/372 -f 824/1460/373 835/1461/374 823/1453/3 -f 831/1462/375 842/1456/370 830/1463/376 -f 820/1464/377 833/1446/362 832/1465/378 -f 828/1447/363 839/1458/371 827/1466/379 -f 824/1460/373 837/1451/367 836/1467/380 -f 820/1464/377 843/1468/381 831/1462/375 -f 838/1459/372 851/1469/382 850/1470/383 -f 836/1467/380 847/1471/384 835/1461/374 -f 842/1456/370 855/1472/385 854/1473/386 -f 833/1446/362 844/1474/387 832/1465/378 -f 840/1449/365 851/1469/382 839/1458/371 -f 837/1451/367 848/1475/388 836/1467/380 -f 843/1468/381 844/1474/387 855/1472/385 -f 833/1446/362 846/1476/389 845/1477/390 -f 841/1448/364 852/1478/391 840/1449/365 -f 838/1479/372 849/1480/392 837/1451/367 -f 835/1461/374 846/1476/389 834/1445/361 -f 841/1448/364 854/1473/386 853/1481/393 -f 851/1469/382 862/1482/394 850/1470/383 -f 847/1471/384 860/1483/395 859/1484/396 -f 855/1472/385 866/1485/397 854/1473/386 -f 845/1477/390 856/1486/398 844/1474/387 -f 852/1478/391 863/1487/399 851/1469/382 -f 849/1480/392 860/1483/395 848/1475/388 -f 855/1472/385 856/1486/398 867/1488/400 -f 845/1477/390 858/1489/401 857/1490/402 -f 852/1478/391 865/1491/403 864/1492/404 -f 849/1480/392 862/1493/394 861/1494/405 -f 847/1471/384 858/1489/401 846/1476/389 -f 854/1473/386 865/1491/403 853/1481/393 -f 860/1495/395 864/1496/404 856/1497/398 -f 896/402/4 919/423/227 895/400/227 -f 910/1498/230 935/410/3 911/1499/3 -f 903/1500/234 928/417/232 904/1501/232 -f 897/404/234 920/429/4 896/405/4 -f 911/1499/3 936/409/228 912/1502/228 -f 904/1501/232 929/422/5 905/1503/5 -f 898/407/232 921/427/234 897/404/234 -f 912/1502/228 937/414/227 913/1504/227 -f 891/394/231 915/416/9 890/393/9 -f 905/1503/5 930/421/233 906/1505/233 -f 899/388/5 922/432/232 898/407/232 -f 913/1504/227 927/413/4 902/1506/4 -f 892/396/230 914/415/231 891/394/231 -f 906/1505/233 931/426/229 907/1507/229 -f 900/390/233 923/408/5 899/388/5 -f 893/397/3 916/420/230 892/396/230 -f 907/1507/229 932/425/9 908/1508/9 -f 901/391/229 924/412/233 900/390/233 -f 894/399/228 917/419/3 893/397/3 -f 908/1509/9 933/431/231 909/1510/231 -f 890/393/9 925/411/229 901/391/229 -f 895/400/227 918/424/228 894/399/228 -f 909/1510/231 934/430/230 910/1498/230 -f 902/1506/4 926/418/234 903/1500/234 -f 970/1511/3 977/1512/22 969/1513/22 -f 975/1514/23 982/1515/5 974/1516/5 -f 973/1517/47 980/1518/4 972/1519/4 -f 971/1520/40 978/1521/3 970/1511/3 -f 969/1513/22 976/1522/9 968/1523/9 -f 968/1523/9 983/1524/23 975/1514/23 -f 974/1516/5 981/1525/47 973/1517/47 -f 972/1526/4 979/1527/40 971/1520/40 -f 1000/1528/227 1011/1529/228 999/1530/228 -f 995/1531/9 1018/1532/229 1006/1533/229 -f 997/1534/230 1007/1535/231 996/1536/231 -f 1004/1537/5 1015/1538/232 1003/1539/232 -f 1001/1540/4 1012/1541/227 1000/1528/227 -f 998/1542/3 1009/1543/230 997/1534/230 -f 1005/1544/233 1016/1545/5 1004/1537/5 -f 1002/1546/234 1013/1547/4 1001/1548/4 -f 999/1530/228 1010/1549/3 998/1542/3 -f 1006/1533/229 1017/1550/233 1005/1544/233 -f 996/1536/231 1008/1551/9 995/1531/9 -f 1003/1539/232 1014/1552/234 1002/1546/234 -f 1029/1553/233 1042/1554/229 1030/1555/229 -f 1022/1556/3 1035/1557/228 1023/1558/228 -f 1030/1555/229 1032/1559/9 1019/1560/9 -f 1023/1558/228 1036/1561/227 1024/1562/227 -f 1024/1562/227 1037/1563/4 1025/1564/4 -f 1025/1565/4 1038/1566/234 1026/1567/234 -f 1026/1567/234 1039/1568/232 1027/1569/232 -f 1019/1560/9 1031/1570/231 1020/1571/231 -f 1027/1569/232 1040/1572/5 1028/1573/5 -f 1020/1571/231 1033/1574/230 1021/1575/230 -f 1028/1573/5 1041/1576/233 1029/1553/233 -f 1021/1575/230 1034/1577/3 1022/1556/3 -f 2/7/9 4/9/26 3/766/24 -f 4/9/26 6/11/23 5/768/27 -f 6/11/23 8/13/29 7/769/28 -f 8/13/29 10/15/5 9/770/30 -f 10/15/5 12/17/32 11/771/31 -f 12/17/32 14/19/47 13/772/33 -f 13/772/33 14/19/47 16/20/34 -f 16/20/34 18/22/4 17/774/36 -f 18/504/4 20/24/38 19/775/37 -f 20/24/38 22/27/40 21/777/39 -f 22/27/40 24/29/10 23/778/41 -f 24/29/10 26/31/3 25/779/42 -f 26/31/3 28/33/11 27/780/43 -f 28/33/11 30/1/22 29/781/44 -f 30/1/22 32/5/46 31/782/45 -f 31/782/45 32/5/46 2/7/9 -f 43/18/22 59/785/22 58/783/46 -f 36/2/32 52/786/32 51/784/47 -f 44/16/11 60/787/11 59/785/22 -f 37/32/5 53/788/5 52/786/32 -f 45/14/3 61/789/3 60/787/11 -f 38/30/29 54/790/29 53/788/5 -f 46/12/10 62/791/10 61/789/3 -f 39/28/23 55/792/23 54/790/29 -f 47/10/40 63/793/40 62/791/10 -f 40/26/26 56/794/26 55/792/23 -f 48/8/38 64/796/38 63/793/40 -f 41/25/9 57/1578/9 56/794/26 -f 34/4/34 50/798/34 49/795/4 -f 33/6/4 49/795/4 64/796/38 -f 42/21/46 58/783/46 57/797/9 -f 35/3/47 51/784/47 50/798/34 -f 66/799/48 82/1579/79 81/800/49 -f 81/800/49 82/1579/79 31/802/45 -f 80/804/51 65/801/50 81/805/49 -f 80/804/51 96/844/52 95/807/53 -f 79/808/54 95/1580/53 94/809/55 -f 77/811/57 78/810/56 94/812/55 -f 76/814/59 77/811/57 93/815/58 -f 75/817/61 76/814/59 92/818/60 -f 74/820/63 75/817/61 91/821/62 -f 74/820/63 90/1581/64 89/823/65 -f 72/825/67 73/922/66 89/826/65 -f 72/825/67 88/861/68 87/828/69 -f 71/829/70 87/864/69 86/830/71 -f 70/831/72 86/1582/71 85/832/73 -f 68/834/75 69/833/74 85/835/73 -f 67/837/77 68/834/75 84/838/76 -f 67/837/77 83/1583/78 82/840/79 -f 3/841/24 96/806/52 81/805/49 -f 5/843/27 95/807/53 96/844/52 -f 94/809/55 95/1580/53 5/846/27 -f 93/813/58 94/812/55 7/848/28 -f 11/850/31 92/816/60 93/815/58 -f 13/852/33 91/819/62 92/818/60 -f 90/822/64 91/821/62 13/854/33 -f 89/823/65 90/1581/64 15/856/35 -f 19/858/37 88/827/68 89/826/65 -f 21/860/39 87/828/69 88/861/68 -f 23/863/41 86/830/71 87/864/69 -f 85/832/73 86/1582/71 23/866/41 -f 84/836/76 85/835/73 25/868/42 -f 83/839/78 84/838/76 27/870/43 -f 82/840/79 83/1583/78 29/872/44 -f 129/34/9 112/93/9 111/95/46 -f 144/40/26 97/91/26 112/93/9 -f 137/64/4 104/78/4 103/80/34 -f 130/63/46 111/95/46 110/68/22 -f 138/62/34 103/80/34 102/82/47 -f 131/60/22 110/68/22 109/67/11 -f 139/58/47 102/82/47 101/84/32 -f 132/56/11 109/67/11 108/70/3 -f 140/54/32 101/84/32 100/86/5 -f 133/52/3 108/70/3 107/72/10 -f 141/50/5 100/86/5 99/87/29 -f 134/46/10 107/72/10 106/73/40 -f 142/48/29 99/87/29 98/89/23 -f 135/42/40 106/73/40 105/75/38 -f 143/44/23 98/89/23 97/91/26 -f 136/39/38 105/75/38 104/77/4 -f 154/874/9 151/889/26 119/43/26 -f 153/875/46 154/874/9 122/36/9 -f 156/876/22 153/875/46 121/35/46 -f 158/877/11 156/876/22 124/59/22 -f 160/878/3 158/877/11 126/55/11 -f 148/879/10 160/878/3 128/51/3 -f 147/880/40 148/879/10 116/45/10 -f 150/881/38 147/880/40 115/41/40 -f 152/882/4 150/881/38 118/38/38 -f 155/883/34 152/1584/4 120/65/4 -f 157/884/47 155/883/34 123/61/34 -f 159/885/32 157/884/47 125/57/47 -f 146/886/5 159/885/32 127/53/32 -f 145/887/29 146/886/5 114/49/5 -f 149/888/23 145/887/29 113/47/29 -f 151/889/26 149/888/23 117/506/23 -f 192/890/80 154/874/80 153/875/81 -f 177/892/82 151/889/82 154/874/80 -f 178/893/83 149/888/83 151/889/82 -f 178/893/83 179/894/84 145/887/84 -f 179/894/84 180/895/6 146/886/6 -f 180/895/6 181/896/85 159/885/85 -f 181/896/85 182/897/86 157/884/86 -f 182/897/86 183/899/87 155/883/87 -f 184/898/88 152/1584/88 155/883/87 -f 184/900/88 185/901/89 150/881/89 -f 185/901/89 186/902/90 147/880/90 -f 186/902/90 187/904/91 148/879/91 -f 188/903/7 160/878/7 148/879/91 -f 188/903/7 189/905/92 158/877/92 -f 189/905/92 190/906/93 156/876/93 -f 190/906/93 191/891/81 153/875/81 -f 172/907/94 169/908/95 191/891/95 -f 169/908/95 170/909/96 192/890/96 -f 170/909/96 167/910/97 177/892/97 -f 167/910/97 165/920/98 178/893/98 -f 178/893/98 165/920/98 161/911/99 -f 179/894/99 161/911/99 162/912/100 -f 180/895/100 162/912/100 175/913/101 -f 181/896/101 175/913/101 173/914/102 -f 173/914/102 171/915/103 183/899/103 -f 171/915/103 168/1585/104 184/898/104 -f 184/900/104 168/921/104 166/916/105 -f 185/901/105 166/916/105 163/917/106 -f 186/902/106 163/917/106 164/918/107 -f 164/918/107 176/923/108 188/903/108 -f 188/903/108 176/923/108 174/919/109 -f 189/905/109 174/919/109 172/907/94 -f 66/799/46 169/908/46 172/907/22 -f 65/801/9 170/909/9 169/908/46 -f 80/804/26 167/910/26 170/909/9 -f 79/808/23 165/920/23 167/910/26 -f 78/810/29 161/911/29 165/920/23 -f 77/811/5 162/912/5 161/911/29 -f 76/814/32 175/913/32 162/912/5 -f 75/817/47 173/914/47 175/913/32 -f 74/820/34 171/915/34 173/914/47 -f 73/824/4 168/1585/4 171/915/34 -f 72/825/38 166/916/38 168/921/4 -f 71/829/40 163/917/40 166/916/38 -f 70/831/10 164/918/10 163/917/40 -f 69/833/3 176/923/3 164/918/10 -f 68/834/11 174/919/11 176/923/3 -f 67/837/22 172/907/22 174/919/11 -f 198/924/10 214/970/124 215/925/110 -f 206/927/29 222/948/121 223/928/111 -f 199/926/40 215/925/110 216/930/112 -f 207/929/23 223/928/111 224/932/113 -f 200/931/38 216/930/112 217/934/114 -f 208/933/26 224/932/113 209/936/115 -f 201/938/4 217/1030/114 218/939/116 -f 202/940/34 218/939/116 219/941/117 -f 203/942/47 219/941/117 220/943/118 -f 204/944/32 220/943/118 221/945/119 -f 270/947/120 269/966/120 193/937/9 -f 205/946/5 221/945/119 222/948/121 -f 245/949/9 253/953/9 254/950/22 -f 252/952/23 260/962/23 253/953/9 -f 250/954/47 258/964/47 259/955/5 -f 248/957/40 256/965/40 257/958/4 -f 246/951/22 254/950/22 255/960/3 -f 251/956/5 259/955/5 260/962/23 -f 249/963/4 257/1586/4 258/964/47 -f 247/961/3 255/960/3 256/965/40 -f 269/966/120 262/976/46 194/967/46 -f 214/970/124 198/924/10 211/968/122 -f 198/924/10 197/972/3 212/1587/122 -f 212/1587/122 211/968/122 198/924/10 -f 264/971/11 212/1587/122 197/972/3 -f 263/974/22 264/971/11 196/973/11 -f 262/976/46 263/974/22 195/975/22 -f 261/977/125 213/969/123 211/968/122 -f 265/979/126 261/977/125 268/978/11 -f 210/981/127 265/979/126 267/980/22 -f 210/981/127 266/982/46 270/947/120 -f 280/983/128 294/987/46 293/984/9 -f 281/986/130 295/989/22 294/987/46 -f 282/988/131 296/991/11 295/989/22 -f 283/990/132 297/994/3 296/991/11 -f 276/992/133 290/996/29 289/150/134 -f 284/993/136 298/998/10 297/994/3 -f 277/995/137 291/1000/23 290/996/29 -f 285/997/138 299/1002/40 298/998/10 -f 278/999/139 292/1003/26 291/1000/23 -f 286/1001/140 300/1006/38 299/1002/40 -f 279/985/129 293/984/9 292/1003/26 -f 287/147/141 301/532/160 288/1004/4 -f 271/1005/142 288/1004/4 300/1006/38 -f 309/1007/22 308/1009/11 304/481/11 -f 306/1008/120 310/1010/46 302/486/46 -f 308/1009/11 307/1588/143 305/714/143 -f 310/1010/46 309/1007/22 303/484/22 -f 322/263/144 321/262/406 277/995/137 -f 277/995/137 321/266/406 320/265/145 -f 278/999/139 320/269/145 319/268/146 -f 319/272/146 318/271/147 280/983/128 -f 318/153/147 317/536/407 281/986/130 -f 281/986/130 317/229/407 316/562/148 -f 316/232/148 315/563/149 283/990/132 -f 315/235/149 314/564/150 284/993/136 -f 314/238/150 313/565/152 285/997/138 -f 312/244/151 327/567/408 271/1005/142 -f 313/241/152 312/566/151 286/1001/140 -f 287/147/141 271/1005/142 327/247/408 -f 327/247/408 326/568/153 287/147/141 -f 326/250/153 325/569/154 273/1012/154 -f 325/254/154 324/253/155 274/1013/155 -f 274/1013/155 324/256/155 323/571/156 -f 323/260/156 322/259/144 276/992/133 -f 337/1015/11 329/1022/11 330/1016/22 -f 342/177/32 335/172/32 332/171/157 -f 379/1018/120 374/1589/120 375/1019/158 -f 336/1021/143 328/1590/143 329/1022/11 -f 341/174/47 334/165/47 335/172/32 -f 372/205/159 373/161/160 377/163/160 -f 346/169/23 355/187/23 354/186/29 -f 345/167/29 354/186/29 358/189/134 -f 365/202/161 364/201/162 347/181/26 -f 356/191/26 368/194/162 369/204/161 -f 346/169/23 347/181/26 364/201/162 -f 368/194/162 356/191/26 355/187/23 -f 346/169/23 364/201/162 355/187/23 -f 375/1019/158 339/1591/409 338/1017/22 -f 338/1017/22 330/1016/22 375/1019/158 -f 330/1016/22 331/1592/409 378/1020/158 -f 341/174/47 340/159/410 372/205/159 -f 376/208/159 333/166/410 334/165/47 -f 341/174/47 372/205/159 376/208/159 -f 397/1023/163 398/1593/411 213/969/123 -f 220/943/118 405/1035/174 406/1024/164 -f 221/945/119 406/1024/164 407/1025/165 -f 407/1025/165 408/1028/168 223/928/111 -f 215/925/110 400/1027/167 401/1026/166 -f 214/970/124 399/1032/171 400/1027/167 -f 408/1028/168 409/1029/169 224/932/113 -f 265/979/126 396/1594/412 397/1023/163 -f 409/1029/169 394/1595/413 209/936/115 -f 217/1030/114 402/1596/173 403/1031/170 -f 213/969/123 398/1593/411 399/1032/171 -f 209/936/115 394/1595/413 395/1033/172 -f 403/1031/170 404/1597/414 219/941/117 -f 216/930/112 401/1026/166 402/1034/173 -f 395/1033/172 396/1594/412 265/979/126 -f 219/941/117 404/1597/414 405/1035/174 -f 392/1036/175 424/1048/187 432/1037/176 -f 433/1039/178 426/1043/182 413/1040/179 -f 435/1042/181 428/1045/184 426/1043/182 -f 437/1044/183 429/1047/186 428/1045/184 -f 438/1046/185 430/1050/189 429/1047/186 -f 424/1048/187 431/1598/200 439/1049/188 -f 439/1049/188 431/1598/200 430/1050/189 -f 436/1074/203 434/1599/415 416/1053/192 -f 434/1599/415 411/1069/201 423/1051/190 -f 423/1051/190 420/1077/204 418/1052/191 -f 434/1599/415 423/1051/190 416/1053/192 -f 416/1053/192 414/1072/202 436/1074/203 -f 422/1056/195 410/1057/196 425/1054/193 -f 425/1054/193 427/1600/416 417/1055/194 -f 427/1600/416 415/1059/197 417/1055/194 -f 417/1055/194 419/1063/198 422/1056/195 -f 419/1063/198 421/1065/199 422/1056/195 -f 410/1057/196 424/1068/187 392/1058/175 -f 415/1059/197 427/1600/416 413/1060/179 -f 415/1059/197 426/1061/182 428/1062/184 -f 419/1063/198 417/1055/194 428/1062/184 -f 421/1065/199 419/1063/198 429/1064/186 -f 410/1057/196 422/1056/195 431/1067/200 -f 421/1065/199 430/1066/189 431/1067/200 -f 411/1069/201 434/1599/415 393/1070/177 -f 414/1072/202 433/1076/178 412/1073/180 -f 414/1072/202 416/1053/192 435/1075/181 -f 418/1052/191 437/1078/183 435/1075/181 -f 420/1077/204 438/1080/185 437/1078/183 -f 411/1069/201 432/1071/176 439/1079/188 -f 420/1077/204 423/1051/190 439/1079/188 -f 452/289/1 455/288/205 454/293/205 -f 451/286/2 456/285/206 457/1081/206 -f 456/285/206 458/297/207 459/1083/207 -f 455/288/205 461/291/208 460/292/208 -f 458/297/207 462/296/209 463/1084/209 -f 461/291/208 465/295/210 464/580/210 -f 462/296/209 466/301/211 467/1085/211 -f 465/295/210 469/299/212 468/300/212 -f 475/1086/213 474/1088/213 470/304/1 -f 477/1087/214 476/1601/214 474/1088/213 -f 484/1089/215 496/1109/215 497/1090/216 -f 491/1092/217 503/1110/217 492/1093/218 -f 481/1095/219 493/1112/219 494/1096/220 -f 488/1098/221 500/1113/221 501/1099/15 -f 485/1091/216 497/1090/216 498/1101/222 -f 482/1097/220 494/1096/220 495/1103/14 -f 489/1100/15 501/1099/15 502/1105/223 -f 486/1102/222 498/1101/222 499/1107/224 -f 483/1104/14 495/1103/14 496/1109/215 -f 490/1106/223 502/1105/223 503/1110/217 -f 480/1111/218 492/1602/218 493/1112/219 -f 487/1108/224 499/1107/224 500/1113/221 -f 518/1114/220 519/1123/14 507/1115/14 -f 525/1117/15 526/1125/223 514/1118/223 -f 522/1120/222 523/1130/224 511/1121/224 -f 519/1123/14 520/1132/215 508/1124/215 -f 526/1125/223 527/1134/217 515/1126/217 -f 516/1127/218 517/1136/219 505/1128/219 -f 523/1130/224 524/1137/221 512/1131/221 -f 520/1132/215 521/1138/216 509/1133/216 -f 527/1134/217 516/1603/218 504/1135/218 -f 517/1136/219 518/1114/220 506/1116/220 -f 524/1137/221 525/1117/15 513/1119/15 -f 521/1138/216 522/1120/222 510/1122/222 -f 535/329/225 534/1140/225 538/1139/225 -f 531/323/5 529/1604/5 534/1140/225 -f 530/325/3 532/324/226 533/611/226 -f 532/324/226 536/322/226 537/330/226 -f 562/1141/222 563/1153/224 551/1142/224 -f 538/1139/225 542/1605/5 543/610/5 -f 536/322/226 540/321/3 541/612/3 -f 559/1144/14 560/1155/215 548/1145/215 -f 566/1147/223 567/1157/217 555/1148/217 -f 556/1150/218 557/1159/219 545/1151/219 -f 563/1153/224 564/1161/221 552/1154/221 -f 560/1155/215 561/1163/216 549/1156/216 -f 567/1157/217 556/1606/218 544/1158/218 -f 557/1159/219 558/1164/220 546/1160/220 -f 564/1161/221 565/1165/15 553/1162/15 -f 561/1163/216 562/1141/222 550/1143/222 -f 558/1164/220 559/1144/14 547/1146/14 -f 565/1165/15 566/1147/223 554/1149/223 -f 573/1166/227 585/1179/227 584/1167/228 -f 568/1169/9 581/1189/9 591/1170/229 -f 570/1172/230 582/1181/230 580/1173/231 -f 577/1175/5 589/1183/5 588/1176/232 -f 574/1178/4 586/1607/4 585/1179/227 -f 571/1180/3 583/1187/3 582/1181/230 -f 578/1182/233 590/1188/233 589/1183/5 -f 575/1184/234 587/1190/234 586/1185/4 -f 572/1168/228 584/1167/228 583/1187/3 -f 579/1171/229 591/1170/229 590/1188/233 -f 569/1174/231 580/1173/231 581/1189/9 -f 576/1177/232 588/1176/232 587/1190/234 -f 602/1191/233 614/1214/233 615/1192/229 -f 595/1194/3 607/1215/3 608/1195/228 -f 603/1193/229 615/1192/229 605/1197/9 -f 596/1196/228 608/1195/228 609/1199/227 -f 597/1200/227 609/1199/227 610/1201/4 -f 598/1203/4 610/1608/4 611/1204/234 -f 599/1205/234 611/1204/234 612/1206/232 -f 592/1198/9 605/1197/9 604/1208/231 -f 600/1207/232 612/1206/232 613/1210/5 -f 593/1209/231 604/1208/231 606/1212/230 -f 601/1211/5 613/1210/5 614/1214/233 -f 594/1213/230 606/1212/230 607/1215/3 -f 622/1216/235 635/1248/256 636/1217/236 -f 619/1219/238 632/1239/257 633/1220/239 -f 627/1222/241 626/1240/258 639/1223/242 -f 617/1225/244 616/1232/251 629/1226/245 -f 624/1228/247 623/1218/237 636/1217/236 -f 621/1230/249 620/1221/240 633/1220/239 -f 627/1222/241 640/1224/243 629/1226/245 -f 618/1233/252 617/1225/244 630/1227/246 -f 624/1228/247 637/1229/248 638/1235/254 -f 622/1237/235 621/1230/249 634/1231/250 -f 618/1233/252 631/1234/253 632/1239/257 -f 625/1236/255 638/1235/254 639/1223/242 -f 640/1224/243 652/1251/268 641/1241/259 -f 630/1227/246 642/1252/269 643/1242/260 -f 638/1235/254 637/1229/248 649/1243/261 -f 634/1231/250 646/1253/270 647/1245/263 -f 631/1234/253 643/1242/260 644/1246/264 -f 638/1235/254 650/1244/262 651/1247/265 -f 635/1248/256 647/1263/263 648/1249/266 -f 632/1239/257 644/1246/264 645/1250/267 -f 640/1224/243 639/1223/242 651/1247/265 -f 630/1227/246 629/1226/245 641/1241/259 -f 637/1229/248 636/1217/236 648/1249/266 -f 633/1220/239 645/1250/267 646/1253/270 -f 645/1250/267 657/1265/281 658/1254/271 -f 641/1241/259 652/1251/268 664/1255/272 -f 642/1252/269 654/1266/282 655/1257/274 -f 650/1244/262 649/1243/261 661/1258/275 -f 647/1245/263 646/1253/270 658/1254/271 -f 643/1242/260 655/1257/274 656/1261/278 -f 651/1247/265 650/1244/262 662/1259/276 -f 647/1263/263 659/1275/277 660/1264/280 -f 644/1246/264 656/1261/278 657/1265/281 -f 652/1251/268 651/1247/265 663/1262/279 -f 642/1252/269 641/1241/259 653/1256/273 -f 649/1243/261 648/1249/266 660/1264/280 -f 657/1265/281 668/1277/292 669/1267/283 -f 664/1255/272 675/1278/293 628/1268/284 -f 654/1266/282 665/1279/294 666/1269/285 -f 662/1259/276 661/1258/275 672/1270/286 -f 658/1254/271 669/1267/283 670/1272/288 -f 655/1257/274 666/1269/285 667/1273/289 -f 662/1259/276 673/1271/287 674/1274/290 -f 659/1275/277 670/1289/288 671/1276/291 -f 656/1261/278 667/1273/289 668/1277/292 -f 663/1262/279 674/1274/290 675/1278/293 -f 654/1266/282 653/1256/273 628/1268/284 -f 661/1258/275 660/1264/280 671/1276/291 -f 672/1270/286 671/1276/291 684/1280/295 -f 668/1277/292 681/1290/302 682/1282/297 -f 675/1278/293 688/1291/303 677/1283/298 -f 665/1279/294 678/1292/304 679/1284/299 -f 673/1271/287 672/1270/286 685/1281/296 -f 670/1272/288 669/1267/283 682/1282/297 -f 667/1273/289 666/1269/285 679/1284/299 -f 673/1271/287 686/1285/233 687/1288/301 -f 670/1289/288 683/1303/300 684/1280/295 -f 668/1277/292 667/1273/289 680/1287/228 -f 675/1278/293 674/1274/290 687/1288/301 -f 665/1279/294 628/1268/284 677/1283/298 -f 678/1292/304 677/1283/298 689/1293/305 -f 685/1281/296 684/1280/295 696/1295/307 -f 681/1290/302 693/1304/313 694/1297/309 -f 688/1291/303 700/1305/314 689/1293/305 -f 679/1284/299 678/1292/304 690/1294/306 -f 685/1281/296 697/1296/308 698/1299/229 -f 683/1286/300 682/1282/297 694/1297/309 -f 680/1287/228 679/1284/299 691/1298/310 -f 687/1288/301 686/1285/233 698/1299/229 -f 683/1303/300 695/1317/311 696/1295/307 -f 680/1287/228 692/1301/227 693/1304/313 -f 688/1291/303 687/1288/301 699/1302/312 -f 699/1302/312 711/1316/323 712/1306/315 -f 690/1294/306 689/1293/305 701/1307/316 -f 697/1296/308 696/1295/307 708/1309/318 -f 693/1304/313 705/1318/324 706/1311/320 -f 700/1305/314 712/1306/315 701/1307/316 -f 690/1294/306 702/1308/317 703/1312/321 -f 698/1299/229 697/1296/308 709/1310/319 -f 695/1300/311 694/1297/309 706/1311/320 -f 692/1301/227 691/1298/310 703/1312/321 -f 699/1302/312 698/1299/229 710/1313/9 -f 695/1317/311 707/1412/322 708/1309/318 -f 692/1301/227 704/1315/4 705/1318/324 -f 732/1319/325 731/1350/256 718/1320/235 -f 729/1322/248 728/1347/254 715/1323/255 -f 723/1325/244 736/1341/246 735/1326/253 -f 713/1328/241 726/1343/243 725/1329/245 -f 733/1331/239 732/1319/325 719/1321/249 -f 730/1333/326 729/1322/248 716/1324/247 -f 725/1329/245 736/1341/246 723/1325/244 -f 727/1335/242 726/1343/243 713/1328/241 -f 721/1337/238 734/1339/257 733/1331/239 -f 718/1338/235 731/1345/256 730/1333/326 -f 715/1323/255 728/1347/254 727/1335/242 -f 722/1327/252 735/1326/253 734/1339/257 -f 725/1329/245 737/1355/259 748/1340/269 -f 739/1342/265 738/1352/268 726/1343/243 -f 746/1344/264 745/1358/267 733/1331/239 -f 731/1345/256 743/1359/263 742/1346/327 -f 728/1347/254 740/1361/262 739/1342/265 -f 747/1348/260 746/1344/264 734/1339/257 -f 744/1349/270 743/1364/263 731/1350/256 -f 741/1351/261 740/1361/262 728/1347/254 -f 736/1341/246 748/1340/269 747/1348/260 -f 738/1352/268 737/1355/259 725/1329/245 -f 733/1331/239 745/1358/267 744/1349/270 -f 742/1346/327 741/1351/261 729/1322/248 -f 754/1353/280 753/1365/275 741/1351/261 -f 749/1354/273 760/1369/282 748/1340/269 -f 751/1356/279 750/1371/272 738/1352/268 -f 746/1344/264 758/1362/278 757/1357/281 -f 743/1359/263 755/1373/277 754/1353/280 -f 752/1360/276 751/1356/279 739/1342/265 -f 747/1348/260 759/1366/274 758/1362/278 -f 756/1363/271 755/1377/277 743/1364/263 -f 753/1365/275 752/1360/276 740/1361/262 -f 748/1340/269 760/1369/282 759/1366/274 -f 738/1352/268 750/1371/272 749/1354/273 -f 745/1358/267 757/1357/281 756/1363/271 -f 765/1367/328 764/1378/335 753/1365/275 -f 724/1368/329 771/1384/341 760/1369/282 -f 762/1370/330 761/1379/336 750/1371/272 -f 769/1372/331 768/1380/337 757/1357/281 -f 755/1373/277 766/1387/344 765/1367/328 -f 763/1374/332 762/1370/330 751/1356/279 -f 770/1375/333 769/1372/331 758/1362/278 -f 767/1376/334 766/1389/344 755/1377/277 -f 764/1378/335 763/1374/332 752/1360/276 -f 760/1369/282 771/1384/341 770/1375/333 -f 761/1379/336 724/1368/329 749/1354/273 -f 757/1357/281 768/1380/337 767/1376/334 -f 768/1380/337 780/1386/343 779/1381/338 -f 777/1382/339 776/1395/350 764/1378/335 -f 772/1383/340 783/1396/351 771/1384/341 -f 774/1385/342 773/1391/346 761/1379/336 -f 769/1372/331 781/1399/230 780/1386/343 -f 766/1387/344 778/1401/354 777/1382/339 -f 763/1374/332 775/1390/232 774/1385/342 -f 782/1388/345 781/1399/230 769/1372/331 -f 779/1381/338 778/1402/354 766/1389/344 -f 764/1378/335 776/1395/350 775/1390/232 -f 771/1384/341 783/1396/351 782/1388/345 -f 761/1379/336 773/1391/346 772/1383/340 -f 773/1391/346 785/1418/359 784/1392/347 -f 780/1386/343 792/1409/358 791/1393/348 -f 789/1394/349 788/1403/355 776/1395/350 -f 784/1392/347 795/1406/357 783/1396/351 -f 786/1397/352 785/1418/359 773/1391/346 -f 793/1398/231 792/1409/358 780/1386/343 -f 790/1400/353 789/1394/349 777/1382/339 -f 775/1390/232 787/1415/234 786/1397/352 -f 782/1388/345 794/1404/356 793/1398/231 -f 791/1393/348 790/1609/353 778/1402/354 -f 788/1403/355 787/1415/234 775/1390/232 -f 783/1396/351 795/1406/357 794/1404/356 -f 711/1405/323 794/1404/356 795/1406/357 -f 710/1408/9 793/1398/231 794/1404/356 -f 792/1409/358 793/1398/231 710/1408/9 -f 791/1393/348 792/1409/358 709/1410/319 -f 707/1314/322 790/1609/353 791/1393/348 -f 789/1394/349 790/1400/353 707/1412/322 -f 705/1414/324 788/1403/355 789/1394/349 -f 787/1415/234 788/1403/355 705/1414/324 -f 703/1417/321 786/1397/352 787/1415/234 -f 785/1418/359 786/1397/352 703/1417/321 -f 701/1307/316 784/1392/347 785/1418/359 -f 795/1406/357 784/1392/347 701/1307/316 -f 714/1336/258 810/1440/233 811/1420/5 -f 722/1327/252 818/1442/230 819/1421/231 -f 622/1237/235 802/1610/4 801/1422/227 -f 715/1323/255 811/1420/5 812/1423/232 -f 723/1325/244 819/1421/231 808/1424/9 -f 623/1218/237 803/1427/234 802/1425/4 -f 716/1324/247 812/1423/232 813/1426/234 -f 624/1228/247 804/1430/232 803/1427/234 -f 717/1334/237 813/1426/234 814/1428/4 -f 617/1225/244 797/1432/231 796/1429/9 -f 625/1236/255 805/1433/5 804/1430/232 -f 718/1320/235 814/1611/4 815/1431/227 -f 618/1233/252 798/1435/230 797/1432/231 -f 626/1240/258 806/1437/233 805/1433/5 -f 719/1321/249 815/1431/227 816/1434/228 -f 619/1219/238 799/1439/3 798/1435/230 -f 676/1330/251 808/1424/9 809/1436/229 -f 627/1222/241 807/1441/229 806/1437/233 -f 720/1332/240 816/1434/228 817/1438/3 -f 620/1221/240 800/1443/228 799/1439/3 -f 713/1328/241 809/1436/229 810/1440/233 -f 616/1232/251 796/1429/9 807/1441/229 -f 721/1337/238 817/1438/3 818/1442/230 -f 621/1230/249 801/1422/227 800/1443/228 -f 821/1444/360 822/1454/369 834/1445/361 -f 828/1447/363 829/1455/5 841/1448/364 -f 826/1450/366 838/1479/372 837/1451/367 -f 823/1453/3 835/1461/374 834/1445/361 -f 829/1455/5 830/1463/376 842/1456/370 -f 826/1457/366 827/1466/379 839/1458/371 -f 824/1460/373 836/1467/380 835/1461/374 -f 831/1462/375 843/1468/381 842/1456/370 -f 820/1464/377 821/1444/360 833/1446/362 -f 828/1447/363 840/1449/365 839/1458/371 -f 824/1460/373 825/1452/368 837/1451/367 -f 820/1464/377 832/1465/378 843/1468/381 -f 838/1459/372 839/1458/371 851/1469/382 -f 836/1467/380 848/1475/388 847/1471/384 -f 842/1456/370 843/1468/381 855/1472/385 -f 833/1446/362 845/1477/390 844/1474/387 -f 840/1449/365 852/1478/391 851/1469/382 -f 837/1451/367 849/1480/392 848/1475/388 -f 843/1468/381 832/1465/378 844/1474/387 -f 833/1446/362 834/1445/361 846/1476/389 -f 841/1448/364 853/1481/393 852/1478/391 -f 838/1479/372 850/1612/383 849/1480/392 -f 835/1461/374 847/1471/384 846/1476/389 -f 841/1448/364 842/1456/370 854/1473/386 -f 851/1469/382 863/1487/399 862/1482/394 -f 847/1471/384 848/1475/388 860/1483/395 -f 855/1472/385 867/1488/400 866/1485/397 -f 845/1477/390 857/1490/402 856/1486/398 -f 852/1478/391 864/1492/404 863/1487/399 -f 849/1480/392 861/1494/405 860/1483/395 -f 855/1472/385 844/1474/387 856/1486/398 -f 845/1477/390 846/1476/389 858/1489/401 -f 852/1478/391 853/1481/393 865/1491/403 -f 849/1480/392 850/1612/383 862/1493/394 -f 847/1471/384 859/1484/396 858/1489/401 -f 854/1473/386 866/1485/397 865/1491/403 -f 856/1497/398 857/1613/402 858/1614/401 -f 858/1614/401 859/1615/396 856/1497/398 -f 859/1615/396 860/1495/395 856/1497/398 -f 860/1495/395 861/1616/405 864/1496/404 -f 861/1616/405 862/1617/394 864/1496/404 -f 862/1617/394 863/1618/399 864/1496/404 -f 864/1496/404 865/1619/403 866/1620/397 -f 866/1620/397 867/1621/400 856/1497/398 -f 864/1496/404 866/1620/397 856/1497/398 -f 896/402/4 920/699/4 919/423/227 -f 910/1498/230 934/430/230 935/410/3 -f 903/1500/234 926/418/234 928/417/232 -f 897/404/234 921/427/234 920/429/4 -f 911/1499/3 935/410/3 936/409/228 -f 904/1501/232 928/417/232 929/422/5 -f 898/407/232 922/432/232 921/427/234 -f 912/1502/228 936/409/228 937/414/227 -f 891/394/231 914/415/231 915/416/9 -f 905/1503/5 929/422/5 930/421/233 -f 899/388/5 923/408/5 922/432/232 -f 913/1504/227 937/414/227 927/413/4 -f 892/396/230 916/420/230 914/415/231 -f 906/1505/233 930/421/233 931/426/229 -f 900/390/233 924/412/233 923/408/5 -f 893/397/3 917/419/3 916/420/230 -f 907/1507/229 931/426/229 932/425/9 -f 901/391/229 925/411/229 924/412/233 -f 894/399/228 918/424/228 917/419/3 -f 908/1509/9 932/428/9 933/431/231 -f 890/393/9 915/416/9 925/411/229 -f 895/400/227 919/423/227 918/424/228 -f 909/1510/231 933/431/231 934/430/230 -f 902/1506/4 927/413/4 926/418/234 -f 970/1511/3 978/1521/3 977/1512/22 -f 975/1514/23 983/1524/23 982/1515/5 -f 973/1517/47 981/1525/47 980/1518/4 -f 971/1520/40 979/1527/40 978/1521/3 -f 969/1513/22 977/1512/22 976/1522/9 -f 968/1523/9 976/1522/9 983/1524/23 -f 974/1516/5 982/1515/5 981/1525/47 -f 972/1526/4 980/1622/4 979/1527/40 -f 1000/1528/227 1012/1541/227 1011/1529/228 -f 995/1531/9 1008/1551/9 1018/1532/229 -f 997/1534/230 1009/1543/230 1007/1535/231 -f 1004/1537/5 1016/1545/5 1015/1538/232 -f 1001/1540/4 1013/1623/4 1012/1541/227 -f 998/1542/3 1010/1549/3 1009/1543/230 -f 1005/1544/233 1017/1550/233 1016/1545/5 -f 1002/1546/234 1014/1552/234 1013/1547/4 -f 999/1530/228 1011/1529/228 1010/1549/3 -f 1006/1533/229 1018/1532/229 1017/1550/233 -f 996/1536/231 1007/1535/231 1008/1551/9 -f 1003/1539/232 1015/1538/232 1014/1552/234 -f 1029/1553/233 1041/1576/233 1042/1554/229 -f 1022/1556/3 1034/1577/3 1035/1557/228 -f 1030/1555/229 1042/1554/229 1032/1559/9 -f 1023/1558/228 1035/1557/228 1036/1561/227 -f 1024/1562/227 1036/1561/227 1037/1563/4 -f 1025/1565/4 1037/1624/4 1038/1566/234 -f 1026/1567/234 1038/1566/234 1039/1568/232 -f 1019/1560/9 1032/1559/9 1031/1570/231 -f 1027/1569/232 1039/1568/232 1040/1572/5 -f 1020/1571/231 1031/1570/231 1033/1574/230 -f 1028/1573/5 1040/1572/5 1041/1576/233 -f 1021/1575/230 1033/1574/230 1034/1577/3 +f 388/571/237 389/1156/246 387/1157/247 +f 390/573/248 391/1158/249 389/1156/246 +f 392/575/245 393/1159/250 391/1158/249 +f 394/577/251 395/1160/252 393/1159/250 +f 396/579/232 397/1161/253 395/1160/252 +f 398/581/254 399/1162/255 397/1161/253 +f 399/1162/255 402/584/256 401/1163/257 +f 402/584/256 403/1164/258 401/1163/257 +f 404/972/231 405/1165/259 403/1166/258 +f 406/588/260 407/1167/261 405/1165/259 +f 408/591/262 409/1168/263 407/1167/261 +f 410/593/264 411/1169/265 409/1168/263 +f 412/595/235 413/1170/266 411/1169/265 +f 414/597/238 415/1171/267 413/1170/266 +f 416/565/244 417/1172/268 415/1171/267 +f 417/1172/268 388/571/237 387/1157/247 +f 429/582/244 444/1173/269 428/585/269 +f 422/566/254 437/1174/270 421/567/270 +f 430/580/238 445/1175/244 429/582/244 +f 423/596/232 438/1176/254 422/566/254 +f 431/578/235 446/1177/238 430/580/238 +f 424/594/251 439/1178/232 423/596/232 +f 432/576/264 447/1179/235 431/578/235 +f 425/592/245 440/1180/251 424/594/251 +f 433/574/262 448/1181/264 432/576/264 +f 426/590/248 441/1182/245 425/592/245 +f 434/572/260 449/1183/262 433/574/262 +f 427/589/237 442/1184/248 426/590/248 +f 420/568/256 435/1185/231 419/570/231 +f 419/570/231 450/1186/260 434/572/260 +f 428/585/269 443/1187/237 427/587/237 +f 421/567/270 436/1188/256 420/568/256 +f 452/1189/271 467/1190/272 451/1191/273 +f 467/1190/272 417/1192/268 387/1193/247 +f 466/1194/274 467/1195/272 482/1196/275 +f 466/1194/274 481/1197/276 465/1198/277 +f 465/1198/277 480/1199/278 464/1200/279 +f 463/1201/280 480/1202/278 479/1203/281 +f 462/1204/282 479/1205/281 478/1206/283 +f 461/1207/284 478/1208/283 477/1209/285 +f 460/1210/286 477/1211/285 476/1212/287 +f 460/1210/286 475/1213/288 459/1214/289 +f 458/1215/290 475/1216/288 474/1217/291 +f 458/1215/290 473/1218/292 457/1219/293 +f 457/1219/293 472/1220/294 456/1221/295 +f 456/1221/295 471/1222/296 455/1223/297 +f 454/1224/298 471/1225/296 470/1226/299 +f 453/1227/300 470/1228/299 469/1229/301 +f 453/1227/300 468/1230/302 452/1189/271 +f 389/1231/246 467/1195/272 387/1232/247 +f 391/1233/249 482/1234/275 389/1235/246 +f 480/1199/278 391/1236/249 393/1237/250 +f 479/1203/281 393/1238/250 395/1239/252 +f 397/1240/253 479/1205/281 395/1241/252 +f 399/1242/255 478/1208/283 397/1243/253 +f 476/1212/287 399/1244/255 401/1245/257 +f 475/1213/288 401/1246/257 403/1247/258 +f 405/1248/259 475/1216/288 403/1249/258 +f 407/1250/261 474/1251/291 405/1252/259 +f 409/1253/263 473/1254/292 407/1255/261 +f 471/1222/296 409/1256/263 411/1257/265 +f 470/1226/299 411/1258/265 413/1259/266 +f 469/1229/301 413/1260/266 415/1261/267 +f 468/1230/302 415/1262/267 417/1263/268 +f 515/598/237 497/659/269 516/627/269 +f 530/604/248 498/657/237 515/598/237 +f 523/628/231 489/644/256 524/626/256 +f 516/627/269 496/632/244 517/624/244 +f 524/626/256 488/646/270 525/622/270 +f 517/624/244 495/631/238 518/620/238 +f 525/622/270 487/648/254 526/618/254 +f 518/620/238 494/634/235 519/616/235 +f 526/618/254 486/650/232 527/614/232 +f 519/616/235 493/636/264 520/610/264 +f 527/614/232 485/651/251 528/612/251 +f 520/610/264 492/637/262 521/606/262 +f 528/612/251 484/653/245 529/608/245 +f 521/606/262 491/639/260 522/603/260 +f 529/608/245 483/655/248 530/604/248 +f 522/603/260 490/641/231 523/601/231 +f 540/1264/237 505/607/248 508/600/237 +f 539/1265/269 508/600/237 507/599/269 +f 542/1266/244 507/599/269 510/623/244 +f 544/1267/238 510/623/244 512/619/238 +f 546/1268/235 512/619/238 514/615/235 +f 534/1269/264 514/615/235 502/609/264 +f 533/1270/262 502/609/264 501/605/262 +f 536/1271/260 501/605/262 504/602/260 +f 538/1272/231 504/602/260 506/973/231 +f 541/1273/256 506/629/231 509/625/256 +f 543/1274/270 509/625/256 511/621/270 +f 545/1275/254 511/621/270 513/617/254 +f 532/1276/232 513/617/254 500/613/232 +f 531/1277/251 500/613/232 499/611/251 +f 535/1278/245 499/611/251 503/974/245 +f 537/1279/248 503/974/245 505/607/248 +f 578/1280/303 539/1265/304 577/1281/304 +f 563/1282/305 540/1264/303 578/1280/303 +f 564/1283/306 537/1279/305 563/1282/305 +f 564/1283/306 531/1277/307 535/1278/306 +f 565/1284/307 532/1276/233 531/1277/307 +f 566/1285/233 545/1275/308 532/1276/233 +f 567/1286/308 543/1274/309 545/1275/308 +f 568/1287/309 541/1273/310 543/1274/309 +f 570/1288/311 541/1273/310 569/1289/310 +f 570/1290/311 536/1271/312 538/1272/311 +f 571/1291/312 533/1270/313 536/1271/312 +f 572/1292/313 534/1269/314 533/1270/313 +f 574/1293/234 534/1269/314 573/1294/314 +f 574/1293/234 544/1267/315 546/1268/234 +f 575/1295/315 542/1266/316 544/1267/315 +f 576/1296/316 539/1265/304 542/1266/316 +f 558/1297/317 577/1281/318 576/1296/317 +f 555/1298/318 578/1280/319 577/1281/318 +f 556/1299/319 563/1282/320 578/1280/319 +f 553/1300/320 564/1283/321 563/1282/320 +f 564/1283/321 547/1301/322 565/1284/322 +f 565/1284/322 548/1302/323 566/1285/323 +f 566/1285/323 561/1303/324 567/1286/324 +f 567/1286/324 559/1304/325 568/1287/325 +f 559/1304/325 569/1289/326 568/1287/325 +f 557/1305/326 570/1288/327 569/1289/326 +f 570/1290/327 552/1306/328 571/1291/328 +f 571/1291/328 549/1307/329 572/1292/329 +f 572/1292/329 550/1308/330 573/1294/330 +f 550/1308/330 574/1293/331 573/1294/330 +f 574/1293/331 560/1309/332 575/1295/332 +f 575/1295/332 558/1297/317 576/1296/317 +f 452/1189/269 558/1297/244 453/1227/244 +f 451/1191/237 555/1298/269 452/1189/269 +f 466/1194/248 556/1299/237 451/1191/237 +f 465/1198/245 553/1300/248 466/1194/248 +f 464/1200/251 551/1310/245 465/1198/245 +f 463/1201/232 547/1301/251 464/1200/251 +f 462/1204/254 548/1302/232 463/1201/232 +f 461/1207/270 561/1303/254 462/1204/254 +f 460/1210/256 559/1304/270 461/1207/270 +f 459/1214/231 557/1305/256 460/1210/256 +f 458/1215/260 554/1311/231 459/1312/231 +f 457/1219/262 552/1306/260 458/1215/260 +f 456/1221/264 549/1307/262 457/1219/262 +f 455/1223/235 550/1308/264 456/1221/264 +f 454/1224/238 562/1313/235 455/1223/235 +f 453/1227/244 560/1309/238 454/1224/238 +f 584/1314/264 601/1315/333 585/1316/262 +f 592/1317/251 609/1318/334 593/1319/245 +f 585/1316/262 602/1320/335 586/1321/260 +f 593/1319/245 610/1322/336 594/1323/248 +f 586/1321/260 603/1324/337 587/1325/231 +f 594/1323/248 595/1326/338 579/1327/237 +f 587/1328/231 604/1329/339 588/1330/256 +f 588/1330/256 605/1331/340 589/1332/270 +f 589/1332/270 606/1333/341 590/1334/254 +f 590/1334/254 607/1335/342 591/1336/232 +f 648/1337/343 579/1327/237 595/1326/338 +f 591/1336/232 608/1338/344 592/1317/251 +f 623/1339/237 632/1340/244 624/1341/244 +f 630/1342/245 631/1343/237 623/1339/237 +f 628/1344/270 637/1345/232 629/1346/232 +f 626/1347/262 635/1348/231 627/1349/231 +f 624/1341/244 633/1350/235 625/1351/235 +f 629/1346/232 638/1352/245 630/1342/245 +f 627/1353/231 636/1354/270 628/1344/270 +f 625/1351/235 634/1355/262 626/1347/262 +f 647/1356/343 580/1357/269 579/1327/237 +f 597/1358/345 599/1359/346 600/1360/347 +f 642/1361/238 583/1362/235 582/1363/238 +f 641/1364/244 582/1363/238 581/1365/244 +f 640/1366/269 581/1365/244 580/1357/269 +f 639/1367/348 597/1358/345 646/1368/238 +f 643/1369/349 646/1368/238 645/1370/244 +f 596/1371/350 645/1370/244 644/1372/269 +f 596/1371/350 648/1337/343 595/1326/338 +f 658/1373/351 671/1374/237 657/1375/352 +f 659/1376/353 672/1377/269 658/1373/351 +f 660/1378/354 673/1379/244 659/1376/353 +f 661/1380/355 674/1381/238 660/1378/354 +f 654/1382/356 667/702/357 653/701/358 +f 662/1383/359 675/1384/235 661/1380/355 +f 655/1385/360 668/1386/251 654/1382/356 +f 663/1387/361 676/1388/264 662/1383/359 +f 656/1389/362 669/1390/245 655/1385/360 +f 664/1391/363 677/1392/262 663/1387/361 +f 657/1375/352 670/1393/248 656/1389/362 +f 665/699/364 666/1394/231 649/1395/365 +f 649/1395/365 678/1396/260 664/1391/363 +f 687/1397/244 682/949/238 681/952/244 +f 684/1398/343 680/954/269 689/956/343 +f 686/1399/238 683/1104/366 682/949/238 +f 688/1400/269 681/952/244 680/954/269 +f 700/788/367 655/1385/360 654/1382/356 +f 655/1385/360 698/790/368 656/1389/362 +f 656/1389/362 697/793/369 657/1375/352 +f 697/797/369 658/1373/351 657/1375/352 +f 696/705/370 659/1376/353 658/1373/351 +f 659/1376/353 694/1022/371 660/1378/354 +f 694/757/371 661/1380/355 660/1378/354 +f 693/760/372 662/1383/359 661/1380/355 +f 692/763/373 663/1387/361 662/1383/359 +f 690/769/374 649/1395/365 664/1391/363 +f 691/766/375 664/1391/363 663/1387/361 +f 704/1028/376 650/1401/376 665/699/364 +f 704/775/376 651/1402/377 650/1401/376 +f 703/779/377 652/1403/378 651/1402/377 +f 652/1403/378 701/1031/379 653/1404/358 +f 701/785/379 654/1382/356 653/701/358 +f 708/709/245 716/717/251 707/707/251 +f 707/707/251 720/720/357 706/728/357 +f 727/733/380 709/712/248 710/714/380 +f 718/722/248 731/735/380 719/723/380 +f 726/732/381 730/725/381 717/718/245 +f 751/1405/382 599/1359/346 639/1367/348 +f 606/1333/341 760/1406/383 607/1335/342 +f 607/1335/342 761/1407/384 608/1338/344 +f 761/1407/384 609/1318/334 608/1338/344 +f 601/1315/333 755/1408/385 602/1320/335 +f 600/1360/347 754/1409/386 601/1315/333 +f 762/1410/387 610/1322/336 609/1318/334 +f 643/1369/349 751/1405/382 639/1367/348 +f 763/1411/388 595/1326/338 610/1322/336 +f 603/1412/337 757/1413/389 604/1329/339 +f 599/1359/346 753/1414/390 600/1360/347 +f 595/1326/338 749/1415/391 596/1371/350 +f 757/1413/389 605/1331/340 604/1329/339 +f 602/1320/335 756/1416/392 603/1324/337 +f 749/1415/391 643/1369/349 596/1371/350 +f 605/1331/340 759/1417/393 606/1333/341 +f 746/1418/394 786/1419/395 747/1420/396 +f 787/1421/397 767/1422/398 766/1423/399 +f 789/1424/400 780/1425/401 787/1421/397 +f 791/1426/402 782/1427/403 789/1424/400 +f 792/1428/404 783/1429/405 791/1426/402 +f 778/1430/406 793/1431/407 786/1419/395 +f 793/1431/407 784/1432/408 792/1428/404 +f 777/1433/409 772/1434/410 770/1435/411 +f 779/1436/412 771/1437/413 776/1438/414 +f 764/1439/415 746/1440/394 779/1436/412 +f 769/1441/416 767/1442/398 780/1443/401 +f 769/1441/416 782/1444/403 771/1437/413 +f 773/1445/417 782/1444/403 783/1446/405 +f 775/1447/418 783/1446/405 784/1448/408 +f 764/1439/415 785/1449/419 778/1450/406 +f 775/1447/418 785/1449/419 776/1438/414 +f 765/1451/420 747/1452/396 786/1453/395 +f 768/1454/421 766/1455/399 790/1456/422 +f 768/1454/421 789/1457/400 787/1458/397 +f 772/1434/410 789/1457/400 770/1435/411 +f 774/1459/423 791/1460/402 772/1434/410 +f 765/1451/420 793/1461/407 777/1433/409 +f 774/1459/423 793/1461/407 792/1462/404 +f 806/814/229 808/818/424 807/809/229 +f 805/811/230 811/1463/425 804/1464/230 +f 810/810/425 813/1465/426 811/1463/425 +f 809/813/424 814/817/427 808/818/424 +f 812/822/426 817/1466/428 813/1465/426 +f 815/816/427 818/1040/429 814/817/427 +f 816/821/428 821/1467/430 817/1466/428 +f 819/820/429 822/825/431 818/1040/429 +f 829/1468/432 824/829/229 825/828/229 +f 831/1469/433 828/1470/432 829/1468/432 +f 839/1471/434 850/1472/435 838/1473/435 +f 834/1474/237 857/1475/436 845/1476/436 +f 836/1477/437 846/1478/438 835/1479/438 +f 843/1480/232 854/1481/439 842/1482/439 +f 840/1483/231 851/1484/434 839/1471/434 +f 837/1485/235 848/1486/437 836/1477/437 +f 844/1487/440 855/1488/232 843/1480/232 +f 841/1489/441 852/1490/231 840/1491/231 +f 838/1473/435 849/1492/235 837/1485/235 +f 845/1476/436 856/1493/440 844/1487/440 +f 835/1479/438 847/1494/237 834/1474/237 +f 842/1482/439 853/1495/441 841/1489/441 +f 868/1496/440 881/1497/436 869/1498/436 +f 861/1499/235 874/1500/435 862/1501/435 +f 869/1498/436 871/1502/237 858/1503/237 +f 862/1501/435 875/1504/434 863/1505/434 +f 863/1505/434 876/1506/231 864/1507/231 +f 864/1508/231 877/1509/441 865/1510/441 +f 865/1510/441 878/1511/439 866/1512/439 +f 858/1503/237 870/1513/438 859/1514/438 +f 866/1512/439 879/1515/232 867/1516/232 +f 859/1514/438 872/1517/437 860/1518/437 +f 867/1516/232 880/1519/440 868/1496/440 +f 860/1518/437 873/1520/235 861/1499/235 +f 896/870/231 919/891/434 895/868/434 +f 910/1521/437 935/878/235 911/1522/235 +f 903/1523/441 928/885/439 904/1524/439 +f 897/872/441 920/897/231 896/873/231 +f 911/1522/235 936/877/435 912/1525/435 +f 904/1524/439 929/890/232 905/1526/232 +f 898/875/439 921/895/441 897/872/441 +f 912/1525/435 937/882/434 913/1527/434 +f 891/862/438 915/884/237 890/861/237 +f 905/1526/232 930/889/440 906/1528/440 +f 899/856/232 922/900/439 898/875/439 +f 913/1527/434 927/881/231 902/1529/231 +f 892/864/437 914/883/438 891/862/438 +f 906/1528/440 931/894/436 907/1530/436 +f 900/858/440 923/876/232 899/856/232 +f 893/865/235 916/888/437 892/864/437 +f 907/1530/436 932/893/237 908/1531/237 +f 901/859/436 924/880/440 900/858/440 +f 894/867/435 917/887/235 893/865/235 +f 908/1532/237 933/899/438 909/1533/438 +f 890/861/237 925/879/436 901/859/436 +f 895/868/434 918/892/435 894/867/435 +f 909/1533/438 934/898/437 910/1521/437 +f 902/1529/231 926/886/441 903/1523/441 +f 970/1534/235 977/1535/244 969/1536/244 +f 975/1537/245 982/1538/232 974/1539/232 +f 973/1540/270 980/1541/231 972/1542/231 +f 971/1543/262 978/1544/235 970/1534/235 +f 969/1536/244 976/1545/237 968/1546/237 +f 968/1546/237 983/1547/245 975/1537/245 +f 974/1539/232 981/1548/270 973/1540/270 +f 972/1549/231 979/1550/262 971/1543/262 +f 1000/1551/434 1011/1552/435 999/1553/435 +f 995/1554/237 1018/1555/436 1006/1556/436 +f 997/1557/437 1007/1558/438 996/1559/438 +f 1004/1560/232 1015/1561/439 1003/1562/439 +f 1001/1563/231 1012/1564/434 1000/1551/434 +f 998/1565/235 1009/1566/437 997/1557/437 +f 1005/1567/440 1016/1568/232 1004/1560/232 +f 1002/1569/441 1013/1570/231 1001/1571/231 +f 999/1553/435 1010/1572/235 998/1565/235 +f 1006/1556/436 1017/1573/440 1005/1567/440 +f 996/1559/438 1008/1574/237 995/1554/237 +f 1003/1562/439 1014/1575/441 1002/1569/441 +f 1029/1576/440 1042/1577/436 1030/1578/436 +f 1022/1579/235 1035/1580/435 1023/1581/435 +f 1030/1578/436 1032/1582/237 1019/1583/237 +f 1023/1581/435 1036/1584/434 1024/1585/434 +f 1024/1585/434 1037/1586/231 1025/1587/231 +f 1025/1588/231 1038/1589/441 1026/1590/441 +f 1026/1590/441 1039/1591/439 1027/1592/439 +f 1019/1583/237 1031/1593/438 1020/1594/438 +f 1027/1592/439 1040/1595/232 1028/1596/232 +f 1020/1594/438 1033/1597/437 1021/1598/437 +f 1028/1596/232 1041/1599/440 1029/1576/440 +f 1021/1598/437 1034/1600/235 1022/1579/235 +f 388/571/237 390/573/248 389/1156/246 +f 390/573/248 392/575/245 391/1158/249 +f 392/575/245 394/577/251 393/1159/250 +f 394/577/251 396/579/232 395/1160/252 +f 396/579/232 398/581/254 397/1161/253 +f 398/581/254 400/583/270 399/1162/255 +f 399/1162/255 400/583/270 402/584/256 +f 402/584/256 404/586/231 403/1164/258 +f 404/972/231 406/588/260 405/1165/259 +f 406/588/260 408/591/262 407/1167/261 +f 408/591/262 410/593/264 409/1168/263 +f 410/593/264 412/595/235 411/1169/265 +f 412/595/235 414/597/238 413/1170/266 +f 414/597/238 416/565/244 415/1171/267 +f 416/565/244 418/569/269 417/1172/268 +f 417/1172/268 418/569/269 388/571/237 +f 429/582/244 445/1175/244 444/1173/269 +f 422/566/254 438/1176/254 437/1174/270 +f 430/580/238 446/1177/238 445/1175/244 +f 423/596/232 439/1178/232 438/1176/254 +f 431/578/235 447/1179/235 446/1177/238 +f 424/594/251 440/1180/251 439/1178/232 +f 432/576/264 448/1181/264 447/1179/235 +f 425/592/245 441/1182/245 440/1180/251 +f 433/574/262 449/1183/262 448/1181/264 +f 426/590/248 442/1184/248 441/1182/245 +f 434/572/260 450/1186/260 449/1183/262 +f 427/589/237 443/1601/237 442/1184/248 +f 420/568/256 436/1188/256 435/1185/231 +f 419/570/231 435/1185/231 450/1186/260 +f 428/585/269 444/1173/269 443/1187/237 +f 421/567/270 437/1174/270 436/1188/256 +f 452/1189/271 468/1602/302 467/1190/272 +f 467/1190/272 468/1602/302 417/1192/268 +f 466/1194/274 451/1191/273 467/1195/272 +f 466/1194/274 482/1234/275 481/1197/276 +f 465/1198/277 481/1603/276 480/1199/278 +f 463/1201/280 464/1200/279 480/1202/278 +f 462/1204/282 463/1201/280 479/1205/281 +f 461/1207/284 462/1204/282 478/1208/283 +f 460/1210/286 461/1207/284 477/1211/285 +f 460/1210/286 476/1604/287 475/1213/288 +f 458/1215/290 459/1312/289 475/1216/288 +f 458/1215/290 474/1251/291 473/1218/292 +f 457/1219/293 473/1254/292 472/1220/294 +f 456/1221/295 472/1605/294 471/1222/296 +f 454/1224/298 455/1223/297 471/1225/296 +f 453/1227/300 454/1224/298 470/1228/299 +f 453/1227/300 469/1606/301 468/1230/302 +f 389/1231/246 482/1196/275 467/1195/272 +f 391/1233/249 481/1197/276 482/1234/275 +f 480/1199/278 481/1603/276 391/1236/249 +f 479/1203/281 480/1202/278 393/1238/250 +f 397/1240/253 478/1206/283 479/1205/281 +f 399/1242/255 477/1209/285 478/1208/283 +f 476/1212/287 477/1211/285 399/1244/255 +f 475/1213/288 476/1604/287 401/1246/257 +f 405/1248/259 474/1217/291 475/1216/288 +f 407/1250/261 473/1218/292 474/1251/291 +f 409/1253/263 472/1220/294 473/1254/292 +f 471/1222/296 472/1605/294 409/1256/263 +f 470/1226/299 471/1225/296 411/1258/265 +f 469/1229/301 470/1228/299 413/1260/266 +f 468/1230/302 469/1606/301 415/1262/267 +f 515/598/237 498/657/237 497/659/269 +f 530/604/248 483/655/248 498/657/237 +f 523/628/231 490/642/231 489/644/256 +f 516/627/269 497/659/269 496/632/244 +f 524/626/256 489/644/256 488/646/270 +f 517/624/244 496/632/244 495/631/238 +f 525/622/270 488/646/270 487/648/254 +f 518/620/238 495/631/238 494/634/235 +f 526/618/254 487/648/254 486/650/232 +f 519/616/235 494/634/235 493/636/264 +f 527/614/232 486/650/232 485/651/251 +f 520/610/264 493/636/264 492/637/262 +f 528/612/251 485/651/251 484/653/245 +f 521/606/262 492/637/262 491/639/260 +f 529/608/245 484/653/245 483/655/248 +f 522/603/260 491/639/260 490/641/231 +f 540/1264/237 537/1279/248 505/607/248 +f 539/1265/269 540/1264/237 508/600/237 +f 542/1266/244 539/1265/269 507/599/269 +f 544/1267/238 542/1266/244 510/623/244 +f 546/1268/235 544/1267/238 512/619/238 +f 534/1269/264 546/1268/235 514/615/235 +f 533/1270/262 534/1269/264 502/609/264 +f 536/1271/260 533/1270/262 501/605/262 +f 538/1272/231 536/1271/260 504/602/260 +f 541/1273/256 538/1607/231 506/629/231 +f 543/1274/270 541/1273/256 509/625/256 +f 545/1275/254 543/1274/270 511/621/270 +f 532/1276/232 545/1275/254 513/617/254 +f 531/1277/251 532/1276/232 500/613/232 +f 535/1278/245 531/1277/251 499/611/251 +f 537/1279/248 535/1278/245 503/974/245 +f 578/1280/303 540/1264/303 539/1265/304 +f 563/1282/305 537/1279/305 540/1264/303 +f 564/1283/306 535/1278/306 537/1279/305 +f 564/1283/306 565/1284/307 531/1277/307 +f 565/1284/307 566/1285/233 532/1276/233 +f 566/1285/233 567/1286/308 545/1275/308 +f 567/1286/308 568/1287/309 543/1274/309 +f 568/1287/309 569/1289/310 541/1273/310 +f 570/1288/311 538/1607/311 541/1273/310 +f 570/1290/311 571/1291/312 536/1271/312 +f 571/1291/312 572/1292/313 533/1270/313 +f 572/1292/313 573/1294/314 534/1269/314 +f 574/1293/234 546/1268/234 534/1269/314 +f 574/1293/234 575/1295/315 544/1267/315 +f 575/1295/315 576/1296/316 542/1266/316 +f 576/1296/316 577/1281/304 539/1265/304 +f 558/1297/317 555/1298/318 577/1281/318 +f 555/1298/318 556/1299/319 578/1280/319 +f 556/1299/319 553/1300/320 563/1282/320 +f 553/1300/320 551/1310/321 564/1283/321 +f 564/1283/321 551/1310/321 547/1301/322 +f 565/1284/322 547/1301/322 548/1302/323 +f 566/1285/323 548/1302/323 561/1303/324 +f 567/1286/324 561/1303/324 559/1304/325 +f 559/1304/325 557/1305/326 569/1289/326 +f 557/1305/326 554/1608/327 570/1288/327 +f 570/1290/327 554/1311/327 552/1306/328 +f 571/1291/328 552/1306/328 549/1307/329 +f 572/1292/329 549/1307/329 550/1308/330 +f 550/1308/330 562/1313/331 574/1293/331 +f 574/1293/331 562/1313/331 560/1309/332 +f 575/1295/332 560/1309/332 558/1297/317 +f 452/1189/269 555/1298/269 558/1297/244 +f 451/1191/237 556/1299/237 555/1298/269 +f 466/1194/248 553/1300/248 556/1299/237 +f 465/1198/245 551/1310/245 553/1300/248 +f 464/1200/251 547/1301/251 551/1310/245 +f 463/1201/232 548/1302/232 547/1301/251 +f 462/1204/254 561/1303/254 548/1302/232 +f 461/1207/270 559/1304/270 561/1303/254 +f 460/1210/256 557/1305/256 559/1304/270 +f 459/1214/231 554/1608/231 557/1305/256 +f 458/1215/260 552/1306/260 554/1311/231 +f 457/1219/262 549/1307/262 552/1306/260 +f 456/1221/264 550/1308/264 549/1307/262 +f 455/1223/235 562/1313/235 550/1308/264 +f 454/1224/238 560/1309/238 562/1313/235 +f 453/1227/244 558/1297/244 560/1309/238 +f 584/1314/264 600/1360/347 601/1315/333 +f 592/1317/251 608/1338/344 609/1318/334 +f 585/1316/262 601/1315/333 602/1320/335 +f 593/1319/245 609/1318/334 610/1322/336 +f 586/1321/260 602/1320/335 603/1324/337 +f 594/1323/248 610/1322/336 595/1326/338 +f 587/1328/231 603/1412/337 604/1329/339 +f 588/1330/256 604/1329/339 605/1331/340 +f 589/1332/270 605/1331/340 606/1333/341 +f 590/1334/254 606/1333/341 607/1335/342 +f 648/1337/343 647/1356/343 579/1327/237 +f 591/1336/232 607/1335/342 608/1338/344 +f 623/1339/237 631/1343/237 632/1340/244 +f 630/1342/245 638/1352/245 631/1343/237 +f 628/1344/270 636/1354/270 637/1345/232 +f 626/1347/262 634/1355/262 635/1348/231 +f 624/1341/244 632/1340/244 633/1350/235 +f 629/1346/232 637/1345/232 638/1352/245 +f 627/1353/231 635/1609/231 636/1354/270 +f 625/1351/235 633/1350/235 634/1355/262 +f 647/1356/343 640/1366/269 580/1357/269 +f 600/1360/347 584/1314/264 597/1358/345 +f 584/1314/264 583/1362/235 598/1610/345 +f 598/1610/345 597/1358/345 584/1314/264 +f 642/1361/238 598/1610/345 583/1362/235 +f 641/1364/244 642/1361/238 582/1363/238 +f 640/1366/269 641/1364/244 581/1365/244 +f 639/1367/348 599/1359/346 597/1358/345 +f 643/1369/349 639/1367/348 646/1368/238 +f 596/1371/350 643/1369/349 645/1370/244 +f 596/1371/350 644/1372/269 648/1337/343 +f 658/1373/351 672/1377/269 671/1374/237 +f 659/1376/353 673/1379/244 672/1377/269 +f 660/1378/354 674/1381/238 673/1379/244 +f 661/1380/355 675/1384/235 674/1381/238 +f 654/1382/356 668/1386/251 667/702/357 +f 662/1383/359 676/1388/264 675/1384/235 +f 655/1385/360 669/1390/245 668/1386/251 +f 663/1387/361 677/1392/262 676/1388/264 +f 656/1389/362 670/1393/248 669/1390/245 +f 664/1391/363 678/1396/260 677/1392/262 +f 657/1375/352 671/1374/237 670/1393/248 +f 665/699/364 679/997/442 666/1394/231 +f 649/1395/365 666/1394/231 678/1396/260 +f 687/1397/244 686/1399/238 682/949/238 +f 684/1398/343 688/1400/269 680/954/269 +f 686/1399/238 685/1611/366 683/1104/366 +f 688/1400/269 687/1397/244 681/952/244 +f 700/788/367 699/787/443 655/1385/360 +f 655/1385/360 699/791/443 698/790/368 +f 656/1389/362 698/794/368 697/793/369 +f 697/797/369 696/796/370 658/1373/351 +f 696/705/370 695/1001/444 659/1376/353 +f 659/1376/353 695/754/444 694/1022/371 +f 694/757/371 693/1023/372 661/1380/355 +f 693/760/372 692/1024/373 662/1383/359 +f 692/763/373 691/1025/375 663/1387/361 +f 690/769/374 705/1027/445 649/1395/365 +f 691/766/375 690/1026/374 664/1391/363 +f 665/699/364 649/1395/365 705/772/445 +f 705/772/445 704/1028/376 665/699/364 +f 704/775/376 703/1029/377 651/1402/377 +f 703/779/377 702/778/378 652/1403/378 +f 652/1403/378 702/781/378 701/1031/379 +f 701/785/379 700/784/367 654/1382/356 +f 708/709/245 717/718/245 716/717/251 +f 707/707/251 716/717/251 720/720/357 +f 727/733/380 726/732/381 709/712/248 +f 718/722/248 730/725/381 731/735/380 +f 708/709/245 709/712/248 726/732/381 +f 730/725/381 718/722/248 717/718/245 +f 708/709/245 726/732/381 717/718/245 +f 751/1405/382 752/1612/446 599/1359/346 +f 606/1333/341 759/1417/393 760/1406/383 +f 607/1335/342 760/1406/383 761/1407/384 +f 761/1407/384 762/1410/387 609/1318/334 +f 601/1315/333 754/1409/386 755/1408/385 +f 600/1360/347 753/1414/390 754/1409/386 +f 762/1410/387 763/1411/388 610/1322/336 +f 643/1369/349 750/1613/447 751/1405/382 +f 763/1411/388 748/1614/448 595/1326/338 +f 603/1412/337 756/1615/392 757/1413/389 +f 599/1359/346 752/1612/446 753/1414/390 +f 595/1326/338 748/1614/448 749/1415/391 +f 757/1413/389 758/1616/449 605/1331/340 +f 602/1320/335 755/1408/385 756/1416/392 +f 749/1415/391 750/1613/447 643/1369/349 +f 605/1331/340 758/1616/449 759/1417/393 +f 746/1418/394 778/1430/406 786/1419/395 +f 787/1421/397 780/1425/401 767/1422/398 +f 789/1424/400 782/1427/403 780/1425/401 +f 791/1426/402 783/1429/405 782/1427/403 +f 792/1428/404 784/1432/408 783/1429/405 +f 778/1430/406 785/1617/419 793/1431/407 +f 793/1431/407 785/1617/419 784/1432/408 +f 790/1456/422 788/1618/450 770/1435/411 +f 788/1618/450 765/1451/420 777/1433/409 +f 777/1433/409 774/1459/423 772/1434/410 +f 788/1618/450 777/1433/409 770/1435/411 +f 770/1435/411 768/1454/421 790/1456/422 +f 776/1438/414 764/1439/415 779/1436/412 +f 779/1436/412 781/1619/451 771/1437/413 +f 781/1619/451 769/1441/416 771/1437/413 +f 771/1437/413 773/1445/417 776/1438/414 +f 773/1445/417 775/1447/418 776/1438/414 +f 764/1439/415 778/1450/406 746/1440/394 +f 769/1441/416 781/1619/451 767/1442/398 +f 769/1441/416 780/1443/401 782/1444/403 +f 773/1445/417 771/1437/413 782/1444/403 +f 775/1447/418 773/1445/417 783/1446/405 +f 764/1439/415 776/1438/414 785/1449/419 +f 775/1447/418 784/1448/408 785/1449/419 +f 765/1451/420 788/1618/450 747/1452/396 +f 768/1454/421 787/1458/397 766/1455/399 +f 768/1454/421 770/1435/411 789/1457/400 +f 772/1434/410 791/1460/402 789/1457/400 +f 774/1459/423 792/1462/404 791/1460/402 +f 765/1451/420 786/1453/395 793/1461/407 +f 774/1459/423 777/1433/409 793/1461/407 +f 806/814/229 809/813/424 808/818/424 +f 805/811/230 810/810/425 811/1463/425 +f 810/810/425 812/822/426 813/1465/426 +f 809/813/424 815/816/427 814/817/427 +f 812/822/426 816/821/428 817/1466/428 +f 815/816/427 819/820/429 818/1040/429 +f 816/821/428 820/826/430 821/1467/430 +f 819/820/429 823/824/431 822/825/431 +f 829/1468/432 828/1470/432 824/829/229 +f 831/1469/433 830/1620/433 828/1470/432 +f 839/1471/434 851/1484/434 850/1472/435 +f 834/1474/237 847/1494/237 857/1475/436 +f 836/1477/437 848/1486/437 846/1478/438 +f 843/1480/232 855/1488/232 854/1481/439 +f 840/1483/231 852/1621/231 851/1484/434 +f 837/1485/235 849/1492/235 848/1486/437 +f 844/1487/440 856/1493/440 855/1488/232 +f 841/1489/441 853/1495/441 852/1490/231 +f 838/1473/435 850/1472/435 849/1492/235 +f 845/1476/436 857/1475/436 856/1493/440 +f 835/1479/438 846/1478/438 847/1494/237 +f 842/1482/439 854/1481/439 853/1495/441 +f 868/1496/440 880/1519/440 881/1497/436 +f 861/1499/235 873/1520/235 874/1500/435 +f 869/1498/436 881/1497/436 871/1502/237 +f 862/1501/435 874/1500/435 875/1504/434 +f 863/1505/434 875/1504/434 876/1506/231 +f 864/1508/231 876/1622/231 877/1509/441 +f 865/1510/441 877/1509/441 878/1511/439 +f 858/1503/237 871/1502/237 870/1513/438 +f 866/1512/439 878/1511/439 879/1515/232 +f 859/1514/438 870/1513/438 872/1517/437 +f 867/1516/232 879/1515/232 880/1519/440 +f 860/1518/437 872/1517/437 873/1520/235 +f 896/870/231 920/1089/231 919/891/434 +f 910/1521/437 934/898/437 935/878/235 +f 903/1523/441 926/886/441 928/885/439 +f 897/872/441 921/895/441 920/897/231 +f 911/1522/235 935/878/235 936/877/435 +f 904/1524/439 928/885/439 929/890/232 +f 898/875/439 922/900/439 921/895/441 +f 912/1525/435 936/877/435 937/882/434 +f 891/862/438 914/883/438 915/884/237 +f 905/1526/232 929/890/232 930/889/440 +f 899/856/232 923/876/232 922/900/439 +f 913/1527/434 937/882/434 927/881/231 +f 892/864/437 916/888/437 914/883/438 +f 906/1528/440 930/889/440 931/894/436 +f 900/858/440 924/880/440 923/876/232 +f 893/865/235 917/887/235 916/888/437 +f 907/1530/436 931/894/436 932/893/237 +f 901/859/436 925/879/436 924/880/440 +f 894/867/435 918/892/435 917/887/235 +f 908/1532/237 932/896/237 933/899/438 +f 890/861/237 915/884/237 925/879/436 +f 895/868/434 919/891/434 918/892/435 +f 909/1533/438 933/899/438 934/898/437 +f 902/1529/231 927/881/231 926/886/441 +f 970/1534/235 978/1544/235 977/1535/244 +f 975/1537/245 983/1547/245 982/1538/232 +f 973/1540/270 981/1548/270 980/1541/231 +f 971/1543/262 979/1550/262 978/1544/235 +f 969/1536/244 977/1535/244 976/1545/237 +f 968/1546/237 976/1545/237 983/1547/245 +f 974/1539/232 982/1538/232 981/1548/270 +f 972/1549/231 980/1623/231 979/1550/262 +f 1000/1551/434 1012/1564/434 1011/1552/435 +f 995/1554/237 1008/1574/237 1018/1555/436 +f 997/1557/437 1009/1566/437 1007/1558/438 +f 1004/1560/232 1016/1568/232 1015/1561/439 +f 1001/1563/231 1013/1624/231 1012/1564/434 +f 998/1565/235 1010/1572/235 1009/1566/437 +f 1005/1567/440 1017/1573/440 1016/1568/232 +f 1002/1569/441 1014/1575/441 1013/1570/231 +f 999/1553/435 1011/1552/435 1010/1572/235 +f 1006/1556/436 1018/1555/436 1017/1573/440 +f 996/1559/438 1007/1558/438 1008/1574/237 +f 1003/1562/439 1015/1561/439 1014/1575/441 +f 1029/1576/440 1041/1599/440 1042/1577/436 +f 1022/1579/235 1034/1600/235 1035/1580/435 +f 1030/1578/436 1042/1577/436 1032/1582/237 +f 1023/1581/435 1035/1580/435 1036/1584/434 +f 1024/1585/434 1036/1584/434 1037/1586/231 +f 1025/1588/231 1037/1625/231 1038/1589/441 +f 1026/1590/441 1038/1589/441 1039/1591/439 +f 1019/1583/237 1032/1582/237 1031/1593/438 +f 1027/1592/439 1039/1591/439 1040/1595/232 +f 1020/1594/438 1031/1593/438 1033/1597/437 +f 1028/1596/232 1040/1595/232 1041/1599/440 +f 1021/1598/437 1033/1597/437 1034/1600/235 diff --git a/src/main/resources/assets/hbm/models/weapons/hangman.obj b/src/main/resources/assets/hbm/models/weapons/hangman.obj new file mode 100644 index 000000000..8ab6f66f8 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/hangman.obj @@ -0,0 +1,5413 @@ +# Blender v2.79 (sub 0) OBJ File: 'hangman.blend' +# www.blender.org +o Bullets +v 0.176776 0.176778 -2.231359 +v 0.000000 0.250001 -2.231359 +v 0.000000 -0.249999 -2.231359 +v 1.500000 -1.249999 -2.231359 +v 1.250000 -1.499999 -2.231359 +v 1.500000 -1.749999 -2.231359 +v 1.237437 -2.383882 -2.231359 +v 0.883884 -2.383882 -2.231359 +v 0.883884 -2.737436 -2.231360 +v 0.250000 -2.999999 -2.231360 +v 0.000000 -2.749999 -2.231360 +v -0.250000 -2.999999 -2.231360 +v -0.883883 -2.383882 -2.231359 +v -1.237436 -2.383883 -2.231359 +v -1.237437 -2.737436 -2.231360 +v -1.500000 -1.249999 -2.231359 +v -1.676777 -1.323223 -2.231359 +v -1.750000 -1.499999 -2.231359 +v 0.883884 -0.262562 -2.231359 +v 0.883884 -0.616115 -2.231359 +v 1.237437 -0.616115 -2.231359 +v -0.883884 -0.616116 -2.231359 +v -0.883884 -0.262562 -2.231359 +v -1.237437 -0.262562 -2.231359 +v -0.176777 0.176778 -2.231359 +v -0.250000 0.000001 -2.231359 +v -0.176777 -0.176776 -2.231359 +v 0.176776 -0.176776 -2.231359 +v 0.250000 0.000001 -2.231359 +v 1.750000 -1.499999 -2.231359 +v 1.676777 -1.323222 -2.231359 +v 1.323224 -1.323222 -2.231359 +v 1.323223 -1.676775 -2.231359 +v 1.676777 -1.676775 -2.231359 +v 1.237437 -2.737436 -2.231360 +v 1.310661 -2.560659 -2.231359 +v 1.060660 -2.310659 -2.231359 +v 0.810660 -2.560659 -2.231359 +v 1.060660 -2.810659 -2.231360 +v 0.000000 -3.249999 -2.231360 +v 0.176777 -3.176776 -2.231360 +v 0.176777 -2.823222 -2.231360 +v -0.176776 -2.823222 -2.231360 +v -0.176776 -3.176776 -2.231360 +v -1.060660 -2.810659 -2.231360 +v -0.883883 -2.737436 -2.231360 +v -0.810660 -2.560659 -2.231359 +v -1.060660 -2.310659 -2.231359 +v -1.310660 -2.560659 -2.231359 +v -1.676777 -1.676776 -2.231359 +v -1.500000 -1.749999 -2.231359 +v -1.323223 -1.676776 -2.231359 +v -1.250000 -1.499999 -2.231359 +v -1.323223 -1.323223 -2.231359 +v 1.237437 -0.262562 -2.231359 +v 1.060660 -0.189338 -2.231359 +v 0.810660 -0.439338 -2.231359 +v 1.060660 -0.689339 -2.231359 +v 1.310660 -0.439339 -2.231359 +v -1.310660 -0.439339 -2.231359 +v -1.237437 -0.616116 -2.231359 +v -1.060660 -0.689339 -2.231359 +v -0.810660 -0.439339 -2.231359 +v -1.060660 -0.189339 -2.231359 +v 1.435660 -0.439338 -2.668859 +v -0.265166 0.265166 -2.668859 +v 0.000000 0.375001 -2.668859 +v 0.265165 0.265166 -2.668859 +v 0.375000 0.000001 -2.668859 +v 0.265165 -0.265164 -2.668859 +v 0.000000 -0.374999 -2.668859 +v -0.265166 -0.265164 -2.668859 +v -0.375000 0.000001 -2.668859 +v 1.765166 -1.234834 -2.668859 +v 1.875001 -1.499999 -2.668859 +v 1.060660 -0.064338 -2.668859 +v 1.325826 -0.174173 -2.668859 +v 1.500000 -1.124999 -2.668859 +v 1.234835 -1.765164 -2.668859 +v 1.125000 -1.499999 -2.668859 +v 0.685660 -0.439339 -2.668859 +v 0.795495 -0.174173 -2.668859 +v 1.500000 -1.874999 -2.668859 +v 1.234835 -1.234834 -2.668859 +v 1.765165 -1.765164 -2.668859 +v 1.060660 -2.185659 -2.668859 +v 1.325826 -2.295494 -2.668859 +v 1.060661 -2.935659 -2.668860 +v 0.685660 -2.560659 -2.668859 +v 0.795496 -2.825824 -2.668860 +v 0.795495 -2.295494 -2.668859 +v 1.435661 -2.560659 -2.668859 +v 1.325826 -2.825825 -2.668860 +v 0.795495 -0.704504 -2.668859 +v 0.375000 -2.999999 -2.668860 +v 0.265165 -3.265164 -2.668860 +v 0.000000 -3.374999 -2.668860 +v -0.265165 -2.734834 -2.668860 +v 0.000000 -2.624999 -2.668859 +v -0.375000 -2.999999 -2.668860 +v 0.265165 -2.734834 -2.668860 +v -0.265165 -3.265164 -2.668860 +v 1.325825 -0.704504 -2.668859 +v -0.685660 -2.560659 -2.668859 +v -0.795495 -2.825825 -2.668860 +v 1.060660 -0.814339 -2.668859 +v -1.435660 -2.560660 -2.668859 +v -0.795495 -2.295494 -2.668859 +v -1.060660 -2.185659 -2.668859 +v -1.325825 -2.295495 -2.668859 +v -1.060660 -2.935660 -2.668860 +v -1.325825 -2.825825 -2.668860 +v -1.500000 -1.124999 -2.668859 +v -1.234835 -1.234834 -2.668859 +v -1.765165 -1.765164 -2.668859 +v -1.875000 -1.499999 -2.668859 +v -1.500000 -1.874999 -2.668859 +v -1.125000 -1.499999 -2.668859 +v -1.234835 -1.765164 -2.668859 +v -1.765165 -1.234834 -2.668859 +v -1.060661 -0.064339 -2.668859 +v -1.060660 -0.814339 -2.668859 +v -0.685660 -0.439339 -2.668859 +v -0.795495 -0.704504 -2.668859 +v -1.325826 -0.704504 -2.668859 +v -0.795496 -0.174174 -2.668859 +v -1.435661 -0.439339 -2.668859 +v -1.325826 -0.174174 -2.668859 +vt 0.840081 0.570632 +vt 0.834008 0.572491 +vt 0.834008 0.557621 +vt 0.827935 0.570632 +vt 0.827935 0.559480 +vt 0.840081 0.559480 +vt 0.825911 0.565056 +vt 0.834008 0.557621 +vt 0.842105 0.565056 +vt 0.825911 0.565056 +vt 0.834008 0.557621 +vt 0.842105 0.565056 +vt 0.834008 0.557621 +vt 0.842105 0.565056 +vt 0.834008 0.572491 +vt 0.842105 0.565056 +vt 0.840081 0.570632 +vt 0.834008 0.572491 +vt 0.825911 0.565056 +vt 0.834008 0.557621 +vt 0.842105 0.565056 +vt 0.834008 0.557621 +vt 0.842105 0.565056 +vt 0.834008 0.572491 +vt 0.827935 0.570632 +vt 0.825911 0.565056 +vt 0.827935 0.559480 +vt 0.840081 0.559480 +vt 0.842105 0.565056 +vt 0.840081 0.570632 +vt 0.834008 0.572491 +vt 0.825911 0.565056 +vt 0.834008 0.557621 +vt 0.842105 0.565056 +vt 0.834008 0.572491 +vt 0.827935 0.570632 +vt 0.827935 0.559480 +vt 0.840081 0.559480 +vt 0.840081 0.570632 +vt 0.834008 0.572491 +vt 0.827935 0.570632 +vt 0.827935 0.559480 +vt 0.840081 0.559480 +vt 0.840081 0.570632 +vt 0.827935 0.570632 +vt 0.825911 0.565056 +vt 0.827935 0.559480 +vt 0.840081 0.559480 +vt 0.840081 0.570632 +vt 0.827935 0.570632 +vt 0.825911 0.565056 +vt 0.827935 0.559480 +vt 0.834008 0.557621 +vt 0.840081 0.559480 +vt 0.834008 0.572491 +vt 0.827935 0.570632 +vt 0.827935 0.559480 +vt 0.840081 0.559480 +vt 0.840081 0.570632 +vt 0.827935 0.570632 +vt 0.825911 0.565056 +vt 0.827935 0.559480 +vt 0.840081 0.559480 +vt 0.840081 0.570632 +vt 0.809717 0.520446 +vt 0.825911 0.513011 +vt 0.825911 0.520446 +vt 0.809717 0.565056 +vt 0.825911 0.557621 +vt 0.825911 0.565056 +vt 0.825911 0.572491 +vt 0.809717 0.572491 +vt 0.809717 0.520446 +vt 0.825911 0.513011 +vt 0.825911 0.520446 +vt 0.825911 0.527881 +vt 0.809717 0.527881 +vt 0.825911 0.535316 +vt 0.809717 0.535316 +vt 0.825911 0.542751 +vt 0.809717 0.542751 +vt 0.809717 0.550186 +vt 0.825911 0.550186 +vt 0.809717 0.557621 +vt 0.809717 0.565056 +vt 0.825911 0.572491 +vt 0.809717 0.572491 +vt 0.809717 0.565056 +vt 0.825911 0.572491 +vt 0.809717 0.572491 +vt 0.809717 0.557621 +vt 0.825911 0.565056 +vt 0.809717 0.535316 +vt 0.825911 0.542751 +vt 0.809717 0.542751 +vt 0.809717 0.550186 +vt 0.825911 0.557621 +vt 0.809717 0.557621 +vt 0.809717 0.527881 +vt 0.825911 0.520446 +vt 0.825911 0.527881 +vt 0.825911 0.550186 +vt 0.809717 0.550186 +vt 0.825911 0.557621 +vt 0.809717 0.513011 +vt 0.809717 0.520446 +vt 0.825911 0.535316 +vt 0.809717 0.550186 +vt 0.825911 0.557621 +vt 0.809717 0.557621 +vt 0.809717 0.520446 +vt 0.825911 0.513011 +vt 0.825911 0.520446 +vt 0.809717 0.535316 +vt 0.825911 0.527881 +vt 0.825911 0.535316 +vt 0.809717 0.527881 +vt 0.825911 0.542751 +vt 0.809717 0.542751 +vt 0.825911 0.550186 +vt 0.825911 0.565056 +vt 0.809717 0.565056 +vt 0.825911 0.572491 +vt 0.809717 0.572491 +vt 0.809717 0.542751 +vt 0.825911 0.550186 +vt 0.809717 0.557621 +vt 0.825911 0.565056 +vt 0.809717 0.565056 +vt 0.825911 0.572491 +vt 0.809717 0.572491 +vt 0.809717 0.535316 +vt 0.825911 0.527881 +vt 0.825911 0.535316 +vt 0.825911 0.542751 +vt 0.809717 0.542751 +vt 0.809717 0.527881 +vt 0.825911 0.520446 +vt 0.825911 0.550186 +vt 0.809717 0.550186 +vt 0.809717 0.520446 +vt 0.825911 0.513011 +vt 0.825911 0.557621 +vt 0.809717 0.527881 +vt 0.825911 0.527881 +vt 0.809717 0.550186 +vt 0.825911 0.557621 +vt 0.809717 0.557621 +vt 0.809717 0.535316 +vt 0.825911 0.542751 +vt 0.809717 0.520446 +vt 0.825911 0.513011 +vt 0.825911 0.520446 +vt 0.809717 0.542751 +vt 0.825911 0.550186 +vt 0.809717 0.535316 +vt 0.825911 0.542751 +vt 0.825911 0.527881 +vt 0.825911 0.535316 +vt 0.809717 0.527881 +vt 0.825911 0.565056 +vt 0.809717 0.565056 +vt 0.825911 0.572491 +vt 0.809717 0.572491 +vt 0.825911 0.565056 +vt 0.809717 0.527881 +vt 0.825911 0.535316 +vt 0.809717 0.535316 +vt 0.809717 0.565056 +vt 0.825911 0.572491 +vt 0.809717 0.572491 +vt 0.809717 0.557621 +vt 0.825911 0.565056 +vt 0.825911 0.520446 +vt 0.825911 0.527881 +vt 0.825911 0.542751 +vt 0.809717 0.542751 +vt 0.809717 0.550186 +vt 0.825911 0.557621 +vt 0.809717 0.520446 +vt 0.825911 0.513011 +vt 0.825911 0.550186 +vt 0.809717 0.520446 +vt 0.825911 0.513011 +vt 0.825911 0.520446 +vt 0.809717 0.550186 +vt 0.825911 0.542751 +vt 0.825911 0.550186 +vt 0.809717 0.535316 +vt 0.809717 0.542751 +vt 0.825911 0.557621 +vt 0.809717 0.557621 +vt 0.809717 0.527881 +vt 0.825911 0.535316 +vt 0.825911 0.527881 +vt 0.825911 0.565056 +vt 0.809717 0.565056 +vt 0.825911 0.572491 +vt 0.809717 0.572491 +vt 0.825911 0.535316 +vt 0.809717 0.513011 +vt 0.809717 0.513011 +vt 0.825911 0.513011 +vt 0.809717 0.513011 +vt 0.809717 0.513011 +vt 0.809717 0.513011 +vt 0.809717 0.513011 +vt 0.809717 0.513011 +vn 0.0000 0.0000 1.0000 +vn 0.9615 -0.0000 0.2747 +vn 0.6799 0.6799 0.2747 +vn -0.6799 0.6799 0.2747 +vn -0.9615 0.0000 0.2747 +vn 0.0000 0.9615 0.2747 +vn 0.6799 -0.6799 0.2747 +vn 0.0000 -0.9615 0.2747 +vn -0.6799 -0.6799 0.2747 +s off +f 1/1/1 2/2/1 3/3/1 +f 4/4/1 5/5/1 6/6/1 +f 7/7/1 8/8/1 9/9/1 +f 10/10/1 11/11/1 12/12/1 +f 13/13/1 14/14/1 15/15/1 +f 16/16/1 17/17/1 18/18/1 +f 19/19/1 20/20/1 21/21/1 +f 22/22/1 23/23/1 24/24/1 +f 2/2/1 25/25/1 3/3/1 +f 25/25/1 26/26/1 3/3/1 +f 26/26/1 27/27/1 3/3/1 +f 3/3/1 28/28/1 29/29/1 +f 29/29/1 1/1/1 3/3/1 +f 30/30/1 31/31/1 4/4/1 +f 4/4/1 32/32/1 5/5/1 +f 5/5/1 33/33/1 6/6/1 +f 6/6/1 34/34/1 30/30/1 +f 30/30/1 4/4/1 6/6/1 +f 35/35/1 36/36/1 7/7/1 +f 7/7/1 37/37/1 8/8/1 +f 8/8/1 38/38/1 9/9/1 +f 9/9/1 39/39/1 35/35/1 +f 35/35/1 7/7/1 9/9/1 +f 40/40/1 41/41/1 10/10/1 +f 10/10/1 42/42/1 11/11/1 +f 11/11/1 43/43/1 12/12/1 +f 12/12/1 44/44/1 40/40/1 +f 40/40/1 10/10/1 12/12/1 +f 15/15/1 45/45/1 46/46/1 +f 46/46/1 47/47/1 15/15/1 +f 47/47/1 13/13/1 15/15/1 +f 13/13/1 48/48/1 14/14/1 +f 14/14/1 49/49/1 15/15/1 +f 18/18/1 50/50/1 51/51/1 +f 51/51/1 52/52/1 18/18/1 +f 52/52/1 53/53/1 18/18/1 +f 53/53/1 54/54/1 18/18/1 +f 54/54/1 16/16/1 18/18/1 +f 55/55/1 56/56/1 19/19/1 +f 19/19/1 57/57/1 20/20/1 +f 20/20/1 58/58/1 21/21/1 +f 21/21/1 59/59/1 55/55/1 +f 55/55/1 19/19/1 21/21/1 +f 24/24/1 60/60/1 61/61/1 +f 61/61/1 62/62/1 24/24/1 +f 62/62/1 22/22/1 24/24/1 +f 22/22/1 63/63/1 23/23/1 +f 23/23/1 64/64/1 24/24/1 +s 1 +f 65/65/2 55/66/3 59/67/2 +f 66/68/4 26/69/5 25/70/4 +f 66/68/4 2/71/6 67/72/6 +f 68/73/3 2/74/6 1/75/3 +f 68/73/3 29/76/2 69/77/2 +f 69/77/2 28/78/7 70/79/7 +f 70/79/7 3/80/8 71/81/8 +f 72/82/9 3/80/8 27/83/9 +f 72/82/9 26/69/5 73/84/5 +f 74/85/3 30/86/2 75/87/2 +f 76/88/6 55/89/3 77/90/3 +f 78/91/6 31/92/3 74/85/3 +f 79/93/9 5/94/5 80/95/5 +f 81/96/5 19/97/4 82/98/4 +f 83/99/8 34/100/7 6/101/8 +f 80/95/5 32/102/4 84/103/4 +f 84/103/4 4/104/6 78/91/6 +f 75/105/2 34/100/7 85/106/7 +f 83/99/8 33/107/9 79/93/9 +f 86/108/6 7/109/3 87/110/3 +f 88/111/8 35/112/7 39/113/8 +f 89/114/5 9/115/9 38/116/5 +f 90/117/9 39/113/8 9/115/9 +f 89/114/5 8/118/4 91/119/4 +f 91/119/4 37/120/6 86/108/6 +f 87/110/3 36/121/2 92/122/2 +f 92/122/2 35/123/7 93/124/7 +f 94/125/9 57/126/5 81/96/5 +f 95/127/2 41/128/7 96/129/7 +f 96/129/7 40/130/8 97/131/8 +f 98/132/4 12/133/5 43/134/4 +f 98/132/4 11/135/6 99/136/6 +f 100/137/5 44/138/9 12/133/5 +f 99/136/6 42/139/3 101/140/3 +f 102/141/9 40/142/8 44/138/9 +f 101/140/3 10/143/2 95/127/2 +f 103/144/7 59/67/2 21/145/7 +f 104/146/2 46/147/7 105/148/7 +f 106/149/8 20/150/9 94/125/9 +f 107/151/5 15/152/9 49/153/5 +f 108/154/3 47/155/2 104/146/2 +f 109/156/6 13/157/3 108/154/3 +f 109/156/6 14/158/4 48/159/6 +f 110/160/4 49/153/5 14/158/4 +f 105/148/7 45/161/8 111/162/8 +f 111/162/8 15/163/9 112/164/9 +f 82/98/4 56/165/6 76/88/6 +f 113/166/6 54/167/3 114/168/3 +f 115/169/9 18/170/5 116/171/5 +f 117/172/8 50/173/9 115/169/9 +f 113/166/6 17/174/4 16/175/6 +f 114/168/3 53/176/2 118/177/2 +f 119/178/7 51/179/8 117/172/8 +f 120/180/4 18/181/5 17/174/4 +f 118/177/2 52/182/7 119/178/7 +f 121/183/6 24/184/4 64/185/6 +f 122/186/8 22/187/7 62/188/8 +f 123/189/2 22/187/7 124/190/7 +f 122/186/8 61/191/9 125/192/9 +f 126/193/3 63/194/2 123/189/2 +f 121/183/6 23/195/3 126/193/3 +f 125/192/9 60/196/5 127/197/5 +f 127/197/5 24/198/4 128/199/4 +f 103/144/7 58/200/8 106/149/8 +f 65/65/2 77/201/3 55/66/3 +f 66/68/4 73/84/5 26/69/5 +f 66/68/4 25/70/4 2/71/6 +f 68/73/3 67/202/6 2/74/6 +f 68/73/3 1/75/3 29/76/2 +f 69/77/2 29/76/2 28/78/7 +f 70/79/7 28/78/7 3/80/8 +f 72/82/9 71/81/8 3/80/8 +f 72/82/9 27/83/9 26/69/5 +f 74/85/3 31/92/3 30/86/2 +f 76/88/6 56/165/6 55/89/3 +f 78/91/6 4/104/6 31/92/3 +f 79/93/9 33/107/9 5/94/5 +f 81/96/5 57/126/5 19/97/4 +f 83/99/8 85/106/7 34/100/7 +f 80/95/5 5/94/5 32/102/4 +f 84/103/4 32/102/4 4/104/6 +f 75/105/2 30/203/2 34/100/7 +f 83/99/8 6/101/8 33/107/9 +f 86/108/6 37/120/6 7/109/3 +f 88/111/8 93/204/7 35/112/7 +f 89/114/5 90/117/9 9/115/9 +f 90/117/9 88/111/8 39/113/8 +f 89/114/5 38/116/5 8/118/4 +f 91/119/4 8/118/4 37/120/6 +f 87/110/3 7/109/3 36/121/2 +f 92/122/2 36/121/2 35/123/7 +f 94/125/9 20/150/9 57/126/5 +f 95/127/2 10/143/2 41/128/7 +f 96/129/7 41/128/7 40/130/8 +f 98/132/4 100/137/5 12/133/5 +f 98/132/4 43/134/4 11/135/6 +f 100/137/5 102/141/9 44/138/9 +f 99/136/6 11/135/6 42/139/3 +f 102/141/9 97/205/8 40/142/8 +f 101/140/3 42/139/3 10/143/2 +f 103/144/7 65/65/2 59/67/2 +f 104/146/2 47/155/2 46/147/7 +f 106/149/8 58/200/8 20/150/9 +f 107/151/5 112/206/9 15/152/9 +f 108/154/3 13/157/3 47/155/2 +f 109/156/6 48/159/6 13/157/3 +f 109/156/6 110/160/4 14/158/4 +f 110/160/4 107/151/5 49/153/5 +f 105/148/7 46/147/7 45/161/8 +f 111/162/8 45/161/8 15/163/9 +f 82/98/4 19/97/4 56/165/6 +f 113/166/6 16/175/6 54/167/3 +f 115/169/9 50/173/9 18/170/5 +f 117/172/8 51/179/8 50/173/9 +f 113/166/6 120/180/4 17/174/4 +f 114/168/3 54/167/3 53/176/2 +f 119/178/7 52/182/7 51/179/8 +f 120/180/4 116/207/5 18/181/5 +f 118/177/2 53/176/2 52/182/7 +f 121/183/6 128/208/4 24/184/4 +f 122/186/8 124/190/7 22/187/7 +f 123/189/2 63/194/2 22/187/7 +f 122/186/8 62/188/8 61/191/9 +f 126/193/3 23/195/3 63/194/2 +f 121/183/6 64/185/6 23/195/3 +f 125/192/9 61/191/9 60/196/5 +f 127/197/5 60/196/5 24/198/4 +f 103/144/7 21/145/7 58/200/8 +o Internals +v 0.845185 -2.945537 -1.149113 +v -0.845185 -2.945537 -1.149113 +v -1.690370 -1.489653 -1.302134 +v 0.000000 -4.104991 -5.024233 +v 1.882162 -3.025072 -5.145136 +v 1.882162 -0.865233 -5.386944 +v 1.931852 -1.478220 -1.193358 +v 2.173334 -1.945152 -5.266041 +v 2.414815 -1.956912 -5.377924 +v -1.086666 -0.074677 -5.475451 +v 0.845186 -0.033769 -1.455153 +v -0.845185 -0.033769 -1.455153 +v -1.931851 -1.478220 -1.193358 +v -2.173333 -1.945153 -5.266041 +v -1.463903 -0.649098 -1.390478 +v 1.463904 -0.649098 -1.390478 +v 1.690370 -1.489653 -1.302134 +v 1.463904 -2.330208 -1.213787 +v 0.000000 -3.170763 -1.125441 +v -1.463903 -2.330208 -1.213787 +v 1.086667 -0.074677 -5.475451 +v -1.882161 -0.865233 -5.386944 +v -1.882161 -3.025072 -5.145136 +v -1.086666 -3.815628 -5.056629 +v 1.086667 -3.815628 -5.056629 +v -2.414814 -1.956912 -5.377924 +v 0.000000 -4.356733 -5.109249 +v 1.207407 -4.035218 -5.145245 +v -2.091290 -3.156821 -5.243586 +v 2.091291 -3.156821 -5.243586 +v -1.207407 -4.035218 -5.145245 +v -1.673032 -2.438855 -1.092390 +v 0.965926 -3.142087 -1.018477 +v 1.673033 -2.438854 -1.092390 +v -0.965925 -3.142087 -1.018477 +v 0.000000 -3.399489 -0.991423 +vt 0.331984 0.304833 +vt 0.384615 0.304833 +vt 0.412955 0.347584 +vt 0.224696 0.319703 +vt 0.295547 0.355019 +vt 0.295547 0.429368 +vt 0.008097 0.234201 +vt 0.141700 0.241636 +vt 0.145749 0.234201 +vt 0.008097 0.375465 +vt 0.137652 0.315985 +vt 0.137652 0.368030 +vt 0.145749 0.449814 +vt 0.012146 0.442379 +vt 0.141700 0.442379 +vt 0.404858 0.371747 +vt 0.384615 0.390335 +vt 0.331984 0.390335 +vt 0.311741 0.371747 +vt 0.303644 0.347584 +vt 0.311741 0.323420 +vt 0.358300 0.297398 +vt 0.404858 0.323420 +vt 0.265182 0.449814 +vt 0.184211 0.449814 +vt 0.153846 0.429368 +vt 0.145749 0.392193 +vt 0.153846 0.355019 +vt 0.184211 0.327138 +vt 0.265182 0.327138 +vt 0.303644 0.392193 +vt 0.012146 0.241636 +vt 0.008097 0.308550 +vt 0.008097 0.449814 +vt 0.008097 0.382900 +vt -0.000000 0.345725 +vt 0.000000 0.382900 +vt -0.000000 0.271375 +vt 0.008097 0.234201 +vt -0.000000 0.234201 +vt 0.008097 0.420074 +vt 0.000000 0.420074 +vt -0.000000 0.308550 +vt 0.008097 0.271375 +vt 0.008097 0.457249 +vt -0.000000 0.457249 +vt 0.008097 0.308550 +vt 0.137652 0.241636 +vt 0.145749 0.275093 +vt 0.145749 0.241636 +vt 0.145749 0.375465 +vt 0.137652 0.408922 +vt 0.145749 0.408922 +vt 0.137652 0.308550 +vt 0.145749 0.308550 +vt 0.137652 0.241636 +vt 0.008097 0.275093 +vt 0.008097 0.241636 +vt 0.137652 0.278810 +vt 0.145749 0.442379 +vt 0.145749 0.342007 +vt 0.137652 0.405204 +vt 0.008097 0.408922 +vt 0.137652 0.442379 +vt 0.008097 0.442379 +vt 0.137652 0.375465 +vt 0.008097 0.345725 +vt 0.137652 0.275093 +vt 0.137652 0.271375 +vt 0.137652 0.304833 +vt 0.137652 0.442379 +vt 0.137652 0.342007 +vt 0.137652 0.379182 +vt 0.137652 0.412639 +vn 0.0000 -0.1045 -0.9945 +vn -0.0000 0.1113 0.9938 +vn 0.0045 -0.9935 0.1142 +vn 0.0000 -0.9999 0.0102 +vn 0.0042 -0.9935 0.1137 +vn -0.0042 -0.9935 0.1137 +vn -0.0045 -0.9935 0.1142 +vn 0.2115 -0.2635 0.9412 +vn -0.0000 -0.3200 0.9474 +vn 0.2117 -0.2634 0.9412 +vn -0.3663 -0.1092 0.9241 +vn -0.4199 -0.0116 0.9075 +vn 0.3661 -0.1095 0.9241 +vn 0.3663 -0.1092 0.9241 +vn -0.2117 -0.2634 0.9412 +vn -0.3661 -0.1095 0.9241 +vn 0.4199 -0.0116 0.9075 +vn -0.2115 -0.2635 0.9412 +vn -0.4101 -0.2039 -0.8890 +vn -0.3573 -0.3004 -0.8844 +vn 0.2063 -0.4506 -0.8686 +vn 0.3573 -0.3004 -0.8844 +vn -0.2063 -0.4506 -0.8686 +vn -0.9597 -0.2677 -0.0860 +vn -0.8601 -0.5062 -0.0627 +vn -0.9595 -0.2683 -0.0861 +vn -0.8595 -0.5072 -0.0625 +vn -0.7026 -0.7108 -0.0351 +vn 0.4101 -0.2039 -0.8890 +vn -0.0000 -0.5055 -0.8628 +vn 0.7026 -0.7108 -0.0351 +vn 0.8595 -0.5072 -0.0625 +vn 0.8601 -0.5062 -0.0627 +vn 0.9597 -0.2677 -0.0860 +vn 0.9595 -0.2683 -0.0861 +vn -0.7029 -0.7104 -0.0350 +vn 0.7029 -0.7104 -0.0350 +s off +f 129/209/10 130/210/10 131/211/10 +f 132/212/11 133/213/11 134/214/11 +f 135/215/12 136/216/12 137/217/12 +f 138/218/13 139/219/13 140/220/13 +f 141/221/14 142/222/14 131/223/14 +f 143/224/10 140/225/10 139/226/10 +f 139/226/10 144/227/10 145/228/10 +f 145/228/10 146/229/10 129/209/10 +f 129/209/10 147/230/10 130/210/10 +f 130/210/10 148/231/10 131/211/10 +f 131/211/10 143/224/10 129/209/10 +f 143/224/10 139/226/10 129/209/10 +f 139/226/10 145/228/10 129/209/10 +f 149/232/11 138/233/11 150/234/11 +f 150/234/11 142/235/11 151/236/11 +f 151/236/11 152/237/11 150/234/11 +f 152/237/11 132/212/11 150/234/11 +f 132/212/11 153/238/11 133/213/11 +f 133/213/11 136/239/11 134/214/11 +f 134/214/11 149/232/11 132/212/11 +f 149/232/11 150/234/11 132/212/11 +f 135/215/15 145/240/15 136/216/15 +f 138/218/13 149/241/13 139/219/13 +f 141/221/16 154/242/16 142/222/16 +s 1 +f 153/243/17 155/244/18 156/245/19 +f 157/246/20 142/247/21 154/248/21 +f 133/249/22 156/245/19 158/250/23 +f 159/251/24 151/252/25 157/246/20 +f 136/253/26 158/250/23 137/254/26 +f 155/244/18 152/255/27 159/251/24 +f 131/256/28 160/257/29 141/258/28 +f 161/259/30 146/260/31 162/261/31 +f 160/257/29 130/262/32 163/263/32 +f 145/264/33 134/265/34 136/266/35 +f 144/267/36 149/241/37 134/265/34 +f 146/260/31 135/268/38 162/261/31 +f 130/262/32 164/269/39 163/263/32 +f 138/218/40 143/270/41 150/271/42 +f 150/271/42 131/272/43 142/273/44 +f 164/269/39 129/274/30 161/259/30 +f 153/243/17 132/275/18 155/244/18 +f 157/246/20 151/252/25 142/247/21 +f 133/249/22 153/243/17 156/245/19 +f 159/251/24 152/255/27 151/252/25 +f 136/253/26 133/249/22 158/250/23 +f 155/244/18 132/275/18 152/255/27 +f 131/256/28 148/276/29 160/257/29 +f 161/259/30 129/274/30 146/260/31 +f 160/257/29 148/276/29 130/262/32 +f 145/264/33 144/277/36 134/265/34 +f 144/267/36 139/278/45 149/241/37 +f 146/260/31 145/279/38 135/268/38 +f 130/262/32 147/280/39 164/269/39 +f 138/218/40 140/281/46 143/270/41 +f 150/271/42 143/282/41 131/272/43 +f 164/269/39 147/280/39 129/274/30 +o Magazine +v -0.437500 0.000001 -4.543859 +v 0.000000 -0.437499 -4.543859 +v 0.437500 0.000001 -4.543859 +v 1.498160 -0.439339 -4.543859 +v 1.370019 -0.129979 -4.543859 +v 0.751300 -0.748698 -4.543859 +v -0.751302 -0.129979 -4.606359 +v -0.751302 -0.748698 -4.606359 +v -1.370020 -0.748698 -4.606359 +v 0.437500 0.000001 -4.606359 +v 0.000000 -0.437499 -4.606359 +v -0.437500 0.000001 -4.606359 +v -1.500001 -1.062499 -4.606359 +v -1.062501 -1.499999 -4.606359 +v -1.500001 -1.937499 -4.606359 +v -1.937501 -1.500000 -4.543859 +v -1.500001 -1.937499 -4.543859 +v -1.062501 -1.499999 -4.543859 +v -1.370020 -2.251300 -4.606359 +v -0.751301 -2.251300 -4.606359 +v -0.751301 -2.870018 -4.606359 +v -1.498160 -2.560660 -4.543859 +v -1.370020 -2.870018 -4.543859 +v -0.751301 -2.251300 -4.543859 +v -0.309359 -3.309359 -4.543859 +v 0.000000 -3.437499 -4.543859 +v 0.000000 -2.562499 -4.543859 +v -0.437500 -2.999999 -4.606359 +v 0.000000 -2.562499 -4.606359 +v 0.437500 -2.999999 -4.606359 +v 1.060660 -2.998158 -4.543859 +v 1.370019 -2.870018 -4.543859 +v 0.751301 -2.251300 -4.543859 +v 0.751301 -2.870018 -4.606359 +v 0.751301 -2.251300 -4.606359 +v 1.370019 -2.251300 -4.606359 +v 1.500000 -1.937499 -4.606359 +v 1.062500 -1.499999 -4.606359 +v 1.500000 -1.062499 -4.606359 +v 1.370019 -0.748698 -4.606359 +v 0.751300 -0.748698 -4.606359 +v 0.751300 -0.129980 -4.606359 +v 1.809359 -1.809358 -4.543859 +v 1.937500 -1.499999 -4.543859 +v 1.062500 -1.499999 -4.543859 +v 0.000000 -2.249999 -1.981360 +v 0.750000 -1.499999 -1.981360 +v 0.000000 -0.749999 -1.981359 +v 0.000000 -1.687499 -1.731360 +v 0.187500 -1.499999 -1.731360 +v 0.000000 -1.312499 -1.731359 +v -1.370021 -0.129980 -4.543859 +v -1.370020 -0.748698 -4.543859 +v -0.751302 -0.748698 -4.543859 +v -1.060660 -2.185658 -4.543859 +v -1.325825 -2.295494 -4.543859 +v -1.234835 -1.765164 -4.543859 +v -0.265165 -2.734833 -4.543859 +v -0.375000 -2.999999 -4.543859 +v -0.685660 -2.560658 -4.543859 +v 0.685660 -2.560658 -4.543859 +v 0.795495 -2.825824 -4.543859 +v 0.265165 -2.734833 -4.543859 +v 1.060660 -2.185658 -4.543859 +v 1.125000 -1.499999 -4.543859 +v 1.234835 -1.765164 -4.543859 +v 1.234835 -1.234834 -4.543859 +v 0.795495 -0.704504 -4.543859 +v 1.060660 -0.814339 -4.543859 +v 0.265165 -0.265164 -4.543859 +v 0.375000 0.000001 -4.543859 +v 0.685660 -0.439339 -4.543859 +v -0.795495 -0.174174 -4.543859 +v -0.645778 0.059048 -4.543859 +v -0.375000 0.000001 -4.543859 +v -1.234835 -1.234834 -4.543859 +v -1.500000 -1.124999 -4.543859 +v -1.060660 -0.814339 -4.543859 +v 0.000000 -2.624999 -4.543859 +v -1.125000 -1.499999 -4.543859 +v -1.325825 -2.295494 -2.481359 +v -1.500000 -1.874999 -2.481359 +v -1.559047 -2.145777 -2.481359 +v -0.795495 -2.825824 -2.481360 +v -0.645778 -3.059046 -2.481360 +v -0.375000 -2.999999 -2.481360 +v 0.795495 -2.825824 -2.481360 +v 0.375000 -2.999999 -2.481360 +v 0.645778 -3.059046 -2.481360 +v 1.325825 -2.295494 -2.481359 +v 1.559047 -2.145778 -2.481359 +v 1.500000 -1.874999 -2.481359 +v 1.500000 -1.124999 -2.481359 +v 1.559047 -0.854220 -2.481359 +v 1.325825 -0.704504 -2.481359 +v 0.795495 -0.174173 -2.481359 +v 0.645778 0.059048 -2.481359 +v 0.375000 0.000001 -2.481359 +v -0.685660 -0.439339 -2.481359 +v 0.000000 -0.374999 -2.481359 +v -0.265166 -0.265164 -2.481359 +v -1.500000 -1.124999 -2.481359 +v -1.325825 -0.704504 -2.481359 +v -1.559047 -0.854221 -2.481359 +v -0.795495 -0.704504 -2.481359 +v -0.795495 -2.295494 -2.481359 +v 0.795495 -2.295494 -2.481359 +v 0.000000 0.437501 -4.543859 +v -0.309360 0.309360 -4.543859 +v -0.309360 -0.309358 -4.543859 +v 0.309359 -0.309358 -4.543859 +v 0.309359 0.309360 -4.543859 +v 1.060660 -0.001839 -4.543859 +v 0.751300 -0.129980 -4.543859 +v 0.623160 -0.439339 -4.543859 +v 1.060660 -0.876839 -4.543859 +v 1.370019 -0.748698 -4.543859 +v -1.498161 -0.439339 -4.606359 +v -1.370021 -0.129980 -4.606359 +v -1.060661 -0.001839 -4.606359 +v -0.623161 -0.439339 -4.606359 +v -1.060661 -0.876839 -4.606359 +v -0.309360 0.309360 -4.606359 +v 0.000000 0.437501 -4.606359 +v 0.309359 0.309360 -4.606359 +v 0.309359 -0.309358 -4.606359 +v -0.309360 -0.309358 -4.606359 +v -1.809360 -1.809359 -4.606359 +v -1.937501 -1.500000 -4.606359 +v -1.809360 -1.190640 -4.606359 +v -1.190641 -1.190640 -4.606359 +v -1.190641 -1.809359 -4.606359 +v -1.809360 -1.809359 -4.543859 +v -1.190641 -1.809359 -4.543859 +v -1.190641 -1.190640 -4.543859 +v -1.500001 -1.062499 -4.543859 +v -1.809360 -1.190640 -4.543859 +v -1.060660 -2.998160 -4.606359 +v -1.370020 -2.870018 -4.606359 +v -1.498160 -2.560660 -4.606359 +v -1.060660 -2.123158 -4.606359 +v -0.623160 -2.560658 -4.606359 +v -1.060660 -2.998160 -4.543859 +v -0.751301 -2.870018 -4.543859 +v -0.623160 -2.560658 -4.543859 +v -1.060660 -2.123158 -4.543859 +v -1.370020 -2.251300 -4.543859 +v 0.309359 -3.309358 -4.543859 +v 0.437500 -2.999999 -4.543859 +v 0.309359 -2.690639 -4.543859 +v -0.309360 -2.690639 -4.543859 +v -0.437500 -2.999999 -4.543859 +v 0.309359 -3.309358 -4.606359 +v 0.000000 -3.437499 -4.606359 +v -0.309359 -3.309359 -4.606359 +v -0.309360 -2.690639 -4.606359 +v 0.309359 -2.690639 -4.606359 +v 1.498160 -2.560658 -4.543859 +v 1.370019 -2.251300 -4.543859 +v 1.060660 -2.123158 -4.543859 +v 0.623160 -2.560658 -4.543859 +v 0.751301 -2.870018 -4.543859 +v 1.498160 -2.560658 -4.606359 +v 1.370019 -2.870018 -4.606359 +v 1.060660 -2.998158 -4.606359 +v 0.623160 -2.560658 -4.606359 +v 1.060660 -2.123158 -4.606359 +v 1.809359 -1.190639 -4.606359 +v 1.937500 -1.499999 -4.606359 +v 1.809359 -1.809358 -4.606359 +v 1.190640 -1.809358 -4.606359 +v 1.190640 -1.190639 -4.606359 +v 1.060660 -0.001839 -4.606359 +v 1.370019 -0.129979 -4.606359 +v 1.498160 -0.439339 -4.606359 +v 1.060660 -0.876839 -4.606359 +v 0.623160 -0.439339 -4.606359 +v 1.809359 -1.190639 -4.543859 +v 1.500000 -1.062499 -4.543859 +v 1.190640 -1.190639 -4.543859 +v 1.190640 -1.809358 -4.543859 +v 1.500000 -1.937499 -4.543859 +v -0.530331 -0.969669 -1.981359 +v -0.750000 -1.499999 -1.981360 +v -0.530331 -2.030329 -1.981360 +v 0.530330 -2.030329 -1.981360 +v 0.530330 -0.969669 -1.981359 +v -0.132583 -1.367416 -1.731360 +v -0.187500 -1.499999 -1.731360 +v -0.132583 -1.632581 -1.731360 +v 0.132582 -1.632581 -1.731360 +v 0.132582 -1.367416 -1.731360 +v -1.498161 -0.439339 -4.543859 +v -1.060661 -0.876839 -4.543859 +v -0.623161 -0.439339 -4.543859 +v -0.751302 -0.129979 -4.543859 +v -1.060661 -0.001839 -4.543859 +v -1.376792 -2.418540 -4.543859 +v -1.559047 -2.145777 -4.543859 +v -1.623046 -1.824032 -4.543859 +v -1.500000 -1.874999 -4.543859 +v -0.795495 -2.295494 -4.543859 +v -0.324033 -3.123044 -4.543859 +v -0.645778 -3.059046 -4.543859 +v -0.918541 -2.876791 -4.543859 +v -0.795495 -2.825824 -4.543859 +v 0.918541 -2.876791 -4.543859 +v 0.645778 -3.059046 -4.543859 +v 0.324033 -3.123044 -4.543859 +v 0.375000 -2.999999 -4.543859 +v 0.795495 -2.295494 -4.543859 +v 1.500000 -1.874999 -4.543859 +v 1.623046 -1.824032 -4.543859 +v 1.559047 -2.145777 -4.543859 +v 1.376793 -2.418540 -4.543859 +v 1.325825 -2.295494 -4.543859 +v 1.325825 -0.704504 -4.543859 +v 1.376793 -0.581458 -4.543859 +v 1.559047 -0.854220 -4.543859 +v 1.623046 -1.175966 -4.543859 +v 1.500000 -1.124999 -4.543859 +v 0.324032 0.123047 -4.543859 +v 0.645778 0.059048 -4.543859 +v 0.918541 -0.123206 -4.543859 +v 0.795495 -0.174173 -4.543859 +v 0.000000 -0.374999 -4.543859 +v -0.265166 -0.265164 -4.543859 +v -0.685660 -0.439339 -4.543859 +v -0.795495 -0.704504 -4.543859 +v -0.324033 0.123047 -4.543859 +v -0.918541 -0.123207 -4.543859 +v -1.623046 -1.175966 -4.543859 +v -1.559047 -0.854221 -4.543859 +v -1.376793 -0.581458 -4.543859 +v -1.325825 -0.704504 -4.543859 +v -1.060660 -2.185659 -2.481359 +v -1.125000 -1.499999 -2.481359 +v -1.234835 -1.765164 -2.481359 +v -1.376792 -2.418540 -2.481359 +v -1.623046 -1.824032 -2.481359 +v -0.265165 -2.734834 -2.481360 +v 0.000000 -2.624999 -2.481359 +v -0.685660 -2.560659 -2.481359 +v -0.324033 -3.123045 -2.481360 +v -0.918541 -2.876792 -2.481360 +v 0.685660 -2.560659 -2.481359 +v 0.265165 -2.734834 -2.481360 +v 0.918541 -2.876791 -2.481360 +v 0.324033 -3.123045 -2.481360 +v 1.234835 -1.765164 -2.481359 +v 1.125000 -1.499999 -2.481359 +v 1.060660 -2.185659 -2.481359 +v 1.623046 -1.824032 -2.481359 +v 1.376793 -2.418540 -2.481359 +v 1.060660 -0.814339 -2.481359 +v 0.795495 -0.704504 -2.481359 +v 1.234835 -1.234834 -2.481359 +v 1.376793 -0.581458 -2.481359 +v 1.623046 -1.175966 -2.481359 +v 0.265165 -0.265164 -2.481359 +v 0.685660 -0.439339 -2.481359 +v 0.324032 0.123047 -2.481359 +v 0.918541 -0.123206 -2.481359 +v -0.375000 0.000001 -2.481359 +v -0.324033 0.123047 -2.481359 +v -0.645778 0.059048 -2.481359 +v -0.918541 -0.123207 -2.481359 +v -0.795495 -0.174174 -2.481359 +v -1.234835 -1.234834 -2.481359 +v -1.060660 -0.814339 -2.481359 +v -1.623046 -1.175966 -2.481359 +v -1.376793 -0.581458 -2.481359 +v -0.265166 0.265166 -2.668859 +v 0.000000 0.375001 -4.543859 +v -0.265166 0.265166 -4.543859 +v 0.000000 0.375001 -2.668859 +v 0.265165 0.265166 -4.543859 +v 0.375000 0.000001 -4.543859 +v 0.265165 0.265166 -2.668859 +v 0.375000 0.000001 -2.668859 +v -0.375000 0.000001 -2.668859 +v -0.375000 0.000001 -4.543859 +v 0.000000 -0.499999 -2.481359 +v 0.707106 -0.792892 -2.481359 +v -0.707107 -0.792892 -2.481359 +v -1.000000 -1.499999 -2.481359 +v 0.000000 -2.499999 -2.481359 +v -0.707107 -2.207106 -2.481359 +v 0.707106 -2.207106 -2.481359 +v 1.000000 -1.499999 -2.481359 +v 0.187500 -1.499999 -1.981360 +v 0.132582 -1.367416 -1.981360 +v 0.000000 -1.687499 -1.981360 +v 0.132582 -1.632581 -1.981360 +v -0.187500 -1.499999 -1.981360 +v -0.132583 -1.632581 -1.981360 +v 0.000000 -1.312499 -1.981359 +v -0.132583 -1.367416 -1.981360 +v -0.265165 -0.265164 -2.668859 +v 0.265166 -0.265164 -2.668859 +v 1.060660 -0.064339 -2.668859 +v 1.325825 -0.174174 -4.543859 +v 1.060660 -0.064339 -4.543859 +v 1.325825 -0.174174 -2.668859 +v 1.435660 -0.439339 -4.543859 +v 1.325825 -0.704504 -4.543859 +v 1.435660 -0.439339 -2.668859 +v 1.325825 -0.704504 -2.668859 +v 0.795495 -0.174174 -4.543859 +v 0.795495 -0.174174 -2.668859 +v 0.685660 -0.439339 -2.668859 +v 1.060660 -0.814340 -2.668859 +v 1.765165 -1.234834 -2.668859 +v 1.875000 -1.499999 -4.543859 +v 1.765165 -1.234834 -4.543859 +v 1.875000 -1.499999 -2.668859 +v 1.765165 -1.765164 -4.543859 +v 1.500000 -1.874999 -4.543859 +v 1.765165 -1.765164 -2.668859 +v 1.500000 -1.874999 -2.668859 +v 1.500000 -1.124999 -4.543859 +v 1.500000 -1.124999 -2.668859 +v 1.234834 -1.234835 -2.668859 +v 1.234834 -1.765165 -2.668859 +v 1.435660 -2.560659 -2.668859 +v 1.325825 -2.825824 -4.543859 +v 1.435660 -2.560658 -4.543859 +v 1.325825 -2.825824 -2.668860 +v 1.060660 -2.935658 -4.543859 +v 0.795495 -2.825824 -4.543859 +v 1.060660 -2.935659 -2.668860 +v 0.795495 -2.825824 -2.668860 +v 1.325825 -2.295494 -4.543859 +v 1.325825 -2.295494 -2.668859 +v 1.060659 -2.185660 -2.668859 +v 0.685659 -2.560659 -2.668859 +v 0.265165 -3.265164 -2.668860 +v 0.000000 -3.374999 -4.543859 +v 0.265165 -3.265164 -4.543859 +v 0.000000 -3.374999 -2.668860 +v -0.265165 -3.265165 -4.543859 +v -0.375000 -2.999999 -4.543859 +v -0.265165 -3.265164 -2.668860 +v -0.375000 -2.999999 -2.668860 +v 0.375000 -2.999999 -4.543859 +v 0.375000 -2.999999 -2.668860 +v 0.265164 -2.734834 -2.668860 +v -0.265166 -2.734834 -2.668860 +v -1.060660 -2.935659 -2.668860 +v -1.325826 -2.825824 -4.543859 +v -1.060660 -2.935660 -4.543859 +v -1.325826 -2.825824 -2.668860 +v -1.435661 -2.560660 -4.543859 +v -1.325826 -2.295495 -4.543859 +v -1.435660 -2.560659 -2.668859 +v -1.325826 -2.295495 -2.668859 +v -0.795495 -2.825824 -4.543859 +v -0.795495 -2.825824 -2.668860 +v -0.685661 -2.560658 -2.668859 +v -1.060661 -2.185658 -2.668859 +v -1.765166 -1.765164 -2.668859 +v -1.875001 -1.499999 -4.543859 +v -1.765166 -1.765165 -4.543859 +v -1.875001 -1.499999 -2.668859 +v -1.765166 -1.234834 -4.543859 +v -1.500001 -1.124999 -4.543859 +v -1.765166 -1.234834 -2.668859 +v -1.500001 -1.124999 -2.668859 +v -1.500001 -1.874999 -4.543859 +v -1.500000 -1.874999 -2.668859 +v -1.234835 -1.765163 -2.668859 +v -1.234835 -1.234833 -2.668859 +v -1.435661 -0.439339 -2.668859 +v -1.325826 -0.174174 -4.543859 +v -1.435661 -0.439339 -4.543859 +v -1.060661 -0.064339 -2.668859 +v -1.060661 -0.064339 -4.543859 +v -0.795496 -0.174174 -4.543859 +v -0.795496 -0.174174 -2.668859 +v -1.325826 -0.704504 -4.543859 +v -1.325826 -0.704504 -2.668859 +v -1.060660 -0.814338 -2.668859 +v -0.685660 -0.439338 -2.668859 +v 0.000001 -0.374999 -2.668859 +v 0.795495 -0.704505 -2.668859 +v 1.124999 -1.500000 -2.668859 +v 0.795494 -2.295495 -2.668859 +v -0.000001 -2.624999 -2.668859 +v -0.795496 -2.295494 -2.668859 +v -1.125000 -1.499998 -2.668859 +v -1.325826 -0.174174 -2.668859 +v -0.795495 -0.704503 -2.668859 +vt 0.805668 0.585502 +vt 0.819838 0.572491 +vt 0.834008 0.585502 +vt 0.829960 0.594796 +vt 0.819838 0.598513 +vt 0.819838 0.572491 +vt 0.777328 0.585502 +vt 0.791498 0.572491 +vt 0.805668 0.585502 +vt 0.777328 0.585502 +vt 0.791498 0.572491 +vt 0.805668 0.585502 +vt 0.777328 0.585502 +vt 0.791498 0.572491 +vt 0.805668 0.585502 +vt 0.819838 0.598513 +vt 0.805668 0.585502 +vt 0.819838 0.572491 +vt 0.777328 0.585502 +vt 0.791498 0.572491 +vt 0.805668 0.585502 +vt 0.829960 0.594796 +vt 0.819838 0.598513 +vt 0.819838 0.572491 +vt 0.829960 0.594796 +vt 0.819838 0.598513 +vt 0.819838 0.572491 +vt 0.777328 0.585502 +vt 0.791498 0.572491 +vt 0.805668 0.585502 +vt 0.829960 0.594796 +vt 0.819838 0.598513 +vt 0.819838 0.572491 +vt 0.777328 0.585502 +vt 0.791498 0.572491 +vt 0.805668 0.585502 +vt 0.777328 0.585502 +vt 0.791498 0.572491 +vt 0.805668 0.585502 +vt 0.777328 0.585502 +vt 0.791498 0.572491 +vt 0.805668 0.585502 +vt 0.829960 0.594796 +vt 0.819838 0.598513 +vt 0.819838 0.572491 +vt 0.684211 0.442379 +vt 0.708502 0.464684 +vt 0.684211 0.486989 +vt 0.714575 0.475836 +vt 0.720648 0.481413 +vt 0.714575 0.486989 +vt 0.819838 0.598513 +vt 0.805668 0.585502 +vt 0.819838 0.572491 +vt 0.754950 0.529825 +vt 0.763525 0.526563 +vt 0.760583 0.542312 +vt 0.729223 0.513517 +vt 0.732775 0.505643 +vt 0.742822 0.518689 +vt 0.698473 0.518689 +vt 0.694921 0.510815 +vt 0.712072 0.513517 +vt 0.686346 0.529825 +vt 0.684265 0.550186 +vt 0.680713 0.542312 +vt 0.680713 0.558060 +vt 0.694921 0.573808 +vt 0.686346 0.570547 +vt 0.712072 0.586855 +vt 0.708520 0.594729 +vt 0.698473 0.581683 +vt 0.746374 0.589557 +vt 0.741532 0.596482 +vt 0.732775 0.594729 +vt 0.760583 0.558060 +vt 0.769158 0.561322 +vt 0.754950 0.570547 +vt 0.720648 0.516778 +vt 0.757031 0.550186 +vt 0.572507 0.526563 +vt 0.566874 0.539050 +vt 0.564964 0.531009 +vt 0.589658 0.510815 +vt 0.594500 0.503889 +vt 0.603257 0.505643 +vt 0.641111 0.510815 +vt 0.627512 0.505643 +vt 0.636269 0.503889 +vt 0.658262 0.526563 +vt 0.665805 0.531009 +vt 0.663895 0.539050 +vt 0.663895 0.561322 +vt 0.665805 0.569363 +vt 0.658262 0.573808 +vt 0.641111 0.589557 +vt 0.636269 0.596482 +vt 0.627512 0.594729 +vt 0.593210 0.581683 +vt 0.615385 0.583593 +vt 0.606809 0.586855 +vt 0.566874 0.561322 +vt 0.572507 0.573808 +vt 0.564964 0.569363 +vt 0.589658 0.573808 +vt 0.589658 0.526563 +vt 0.641111 0.526563 +vt 0.819838 0.598513 +vt 0.809717 0.594796 +vt 0.809717 0.576208 +vt 0.829960 0.576208 +vt 0.829960 0.594796 +vt 0.809717 0.594796 +vt 0.805668 0.585502 +vt 0.809717 0.576208 +vt 0.829960 0.576208 +vt 0.834008 0.585502 +vt 0.801619 0.594796 +vt 0.791498 0.598513 +vt 0.781377 0.594796 +vt 0.781377 0.576208 +vt 0.801619 0.576208 +vt 0.801619 0.594796 +vt 0.791498 0.598513 +vt 0.781377 0.594796 +vt 0.781377 0.576208 +vt 0.801619 0.576208 +vt 0.801619 0.594796 +vt 0.791498 0.598513 +vt 0.781377 0.594796 +vt 0.781377 0.576208 +vt 0.801619 0.576208 +vt 0.809717 0.594796 +vt 0.809717 0.576208 +vt 0.829960 0.576208 +vt 0.834008 0.585502 +vt 0.829960 0.594796 +vt 0.801619 0.594796 +vt 0.791498 0.598513 +vt 0.781377 0.594796 +vt 0.781377 0.576208 +vt 0.801619 0.576208 +vt 0.809717 0.594796 +vt 0.805668 0.585502 +vt 0.809717 0.576208 +vt 0.829960 0.576208 +vt 0.834008 0.585502 +vt 0.809717 0.594796 +vt 0.805668 0.585502 +vt 0.809717 0.576208 +vt 0.829960 0.576208 +vt 0.834008 0.585502 +vt 0.801619 0.594796 +vt 0.791498 0.598513 +vt 0.781377 0.594796 +vt 0.781377 0.576208 +vt 0.801619 0.576208 +vt 0.809717 0.594796 +vt 0.805668 0.585502 +vt 0.809717 0.576208 +vt 0.829960 0.576208 +vt 0.834008 0.585502 +vt 0.801619 0.594796 +vt 0.791498 0.598513 +vt 0.781377 0.594796 +vt 0.781377 0.576208 +vt 0.801619 0.576208 +vt 0.801619 0.594796 +vt 0.791498 0.598513 +vt 0.781377 0.594796 +vt 0.781377 0.576208 +vt 0.801619 0.576208 +vt 0.801619 0.594796 +vt 0.791498 0.598513 +vt 0.781377 0.594796 +vt 0.781377 0.576208 +vt 0.801619 0.576208 +vt 0.809717 0.594796 +vt 0.805668 0.585502 +vt 0.809717 0.576208 +vt 0.829960 0.576208 +vt 0.834008 0.585502 +vt 0.665992 0.481413 +vt 0.659919 0.464684 +vt 0.665992 0.447955 +vt 0.702429 0.447955 +vt 0.702429 0.481413 +vt 0.710526 0.485130 +vt 0.708502 0.481413 +vt 0.710526 0.477695 +vt 0.718623 0.477695 +vt 0.718623 0.485130 +vt 0.809717 0.594796 +vt 0.809717 0.576208 +vt 0.829960 0.576208 +vt 0.834008 0.585502 +vt 0.829960 0.594796 +vt 0.765174 0.522909 +vt 0.771068 0.531009 +vt 0.773138 0.540564 +vt 0.769158 0.539050 +vt 0.746374 0.526563 +vt 0.731127 0.501989 +vt 0.741532 0.503889 +vt 0.750354 0.509301 +vt 0.746374 0.510815 +vt 0.690942 0.509301 +vt 0.699763 0.503889 +vt 0.710168 0.501989 +vt 0.708520 0.505643 +vt 0.694921 0.526563 +vt 0.672137 0.539050 +vt 0.668158 0.540564 +vt 0.670228 0.531009 +vt 0.676122 0.522909 +vt 0.677770 0.526563 +vt 0.677770 0.573808 +vt 0.676122 0.577462 +vt 0.670228 0.569363 +vt 0.668158 0.559808 +vt 0.672137 0.561322 +vt 0.710168 0.598383 +vt 0.699763 0.596482 +vt 0.690942 0.591070 +vt 0.694921 0.589557 +vt 0.720648 0.583593 +vt 0.729223 0.586855 +vt 0.742822 0.581683 +vt 0.746374 0.573808 +vt 0.731127 0.598383 +vt 0.750354 0.591070 +vt 0.773138 0.559808 +vt 0.771068 0.569363 +vt 0.765174 0.577462 +vt 0.763525 0.573808 +vt 0.581082 0.529825 +vt 0.579002 0.550186 +vt 0.575450 0.542312 +vt 0.570859 0.522909 +vt 0.562895 0.540564 +vt 0.606809 0.513517 +vt 0.615385 0.516778 +vt 0.593210 0.518689 +vt 0.604905 0.501989 +vt 0.585679 0.509301 +vt 0.637559 0.518689 +vt 0.623960 0.513517 +vt 0.645091 0.509301 +vt 0.625864 0.501989 +vt 0.655320 0.542312 +vt 0.651767 0.550186 +vt 0.649687 0.529825 +vt 0.667875 0.540564 +vt 0.659911 0.522909 +vt 0.649687 0.570547 +vt 0.641111 0.573808 +vt 0.655320 0.558060 +vt 0.659911 0.577462 +vt 0.667875 0.559808 +vt 0.623960 0.586855 +vt 0.637559 0.581683 +vt 0.625864 0.598383 +vt 0.645091 0.591070 +vt 0.603257 0.594729 +vt 0.604905 0.598383 +vt 0.594500 0.596482 +vt 0.585679 0.591070 +vt 0.589658 0.589557 +vt 0.575450 0.558060 +vt 0.581082 0.570547 +vt 0.562895 0.559808 +vt 0.570859 0.577462 +vt 0.595142 0.501859 +vt 0.603239 0.442379 +vt 0.603239 0.501859 +vt 0.562753 0.501859 +vt 0.578947 0.442379 +vt 0.578947 0.501859 +vt 0.603239 0.501859 +vt 0.615385 0.442379 +vt 0.615385 0.501859 +vt 0.595142 0.501859 +vt 0.603239 0.442379 +vt 0.603239 0.501859 +vt 0.562753 0.501859 +vt 0.578947 0.442379 +vt 0.578947 0.501859 +vt 0.603239 0.501859 +vt 0.615385 0.442379 +vt 0.615385 0.501859 +vt 0.595142 0.501859 +vt 0.603239 0.442379 +vt 0.603239 0.501859 +vt 0.562753 0.501859 +vt 0.578947 0.442379 +vt 0.578947 0.501859 +vt 0.627530 0.442379 +vt 0.627530 0.501859 +vt 0.595142 0.501859 +vt 0.603239 0.442379 +vt 0.603239 0.501859 +vt 0.562753 0.501859 +vt 0.578947 0.442379 +vt 0.578947 0.501859 +vt 0.639676 0.442379 +vt 0.639676 0.501859 +vt 0.595142 0.501859 +vt 0.603239 0.442379 +vt 0.562753 0.501859 +vt 0.578947 0.442379 +vt 0.578947 0.501859 +vt 0.651822 0.442379 +vt 0.651822 0.501859 +vt 0.595142 0.501859 +vt 0.603239 0.442379 +vt 0.562753 0.501859 +vt 0.578947 0.442379 +vt 0.578947 0.501859 +vt 0.639676 0.501859 +vt 0.651822 0.442379 +vt 0.651822 0.501859 +vt 0.562753 0.501859 +vt 0.578947 0.442379 +vt 0.578947 0.501859 +vt 0.627530 0.501859 +vt 0.639676 0.442379 +vt 0.562753 0.501859 +vt 0.578947 0.442379 +vt 0.578947 0.501859 +vt 0.615385 0.501859 +vt 0.627530 0.442379 +vt 0.595142 0.442379 +vt 0.615385 0.501859 +vt 0.627530 0.442379 +vt 0.627530 0.501859 +vt 0.595142 0.442379 +vt 0.595142 0.501859 +vt 0.615385 0.442379 +vt 0.595142 0.501859 +vt 0.595142 0.442379 +vt 0.615385 0.442379 +vt 0.595142 0.442379 +vt 0.639676 0.442379 +vt 0.639676 0.501859 +vt 0.595142 0.442379 +vt 0.651822 0.501859 +vt 0.651822 0.442379 +vt 0.595142 0.442379 +vt 0.639676 0.501859 +vt 0.651822 0.442379 +vt 0.651822 0.501859 +vt 0.595142 0.442379 +vt 0.603239 0.501859 +vt 0.615385 0.442379 +vt 0.615385 0.501859 +vt 0.595142 0.442379 +vt 0.627530 0.501859 +vt 0.639676 0.442379 +vt 0.659919 0.442379 +vt 0.659919 0.501859 +vt 0.615385 0.501859 +vt 0.627530 0.442379 +vt 0.627530 0.501859 +vt 0.659919 0.442379 +vt 0.659919 0.501859 +vt 0.627530 0.442379 +vt 0.659919 0.442379 +vt 0.659919 0.501859 +vt 0.651822 0.501859 +vt 0.639676 0.442379 +vt 0.651822 0.442379 +vt 0.659919 0.442379 +vt 0.659919 0.501859 +vt 0.603239 0.501859 +vt 0.615385 0.442379 +vt 0.659919 0.501859 +vt 0.659919 0.442379 +vt 0.639676 0.501859 +vt 0.615385 0.442379 +vt 0.615385 0.501859 +vt 0.651822 0.501859 +vt 0.659919 0.442379 +vt 0.659919 0.501859 +vt 0.627530 0.501859 +vt 0.639676 0.442379 +vt 0.639676 0.501859 +vt 0.627530 0.442379 +vt 0.627530 0.501859 +vt 0.651822 0.501859 +vt 0.659919 0.442379 +vt 0.659919 0.501859 +vt 0.615385 0.442379 +vt 0.615385 0.501859 +vt 0.639676 0.442379 +vt 0.639676 0.501859 +vt 0.651822 0.501859 +vt 0.659919 0.442379 +vt 0.659919 0.501859 +vt 0.651822 0.442379 +vt 0.651822 0.442379 +vt 0.603239 0.442379 +vt 0.627530 0.442379 +vt 0.627530 0.501859 +vt 0.639676 0.442379 +vt 0.639676 0.501859 +vt 0.603239 0.442379 +vt 0.651822 0.442379 +vt 0.627530 0.442379 +vt 0.777328 0.565056 +vt 0.773279 0.576208 +vt 0.773279 0.565056 +vt 0.777328 0.542751 +vt 0.773279 0.553903 +vt 0.773279 0.542751 +vt 0.777328 0.553903 +vt 0.777328 0.531599 +vt 0.773279 0.531599 +vt 0.777328 0.509294 +vt 0.773279 0.520446 +vt 0.773279 0.509294 +vt 0.777328 0.587361 +vt 0.773279 0.598513 +vt 0.773279 0.587361 +vt 0.777328 0.587361 +vt 0.773279 0.598513 +vt 0.773279 0.587361 +vt 0.777328 0.531599 +vt 0.773279 0.542751 +vt 0.773279 0.531599 +vt 0.777328 0.565056 +vt 0.773279 0.576208 +vt 0.773279 0.565056 +vt 0.777328 0.520446 +vt 0.773279 0.520446 +vt 0.777328 0.509294 +vt 0.773279 0.520446 +vt 0.773279 0.509294 +vt 0.777328 0.553903 +vt 0.773279 0.565056 +vt 0.773279 0.553903 +vt 0.777328 0.520446 +vt 0.773279 0.576208 +vt 0.777328 0.587361 +vt 0.773279 0.587361 +vt 0.773279 0.598513 +vt 0.777328 0.520446 +vt 0.773279 0.531599 +vt 0.777328 0.531599 +vt 0.773279 0.542751 +vt 0.777328 0.565056 +vt 0.777328 0.509294 +vt 0.773279 0.509294 +vt 0.777328 0.542751 +vt 0.773279 0.553903 +vt 0.773279 0.542751 +vt 0.777328 0.531599 +vt 0.773279 0.531599 +vt 0.777328 0.553903 +vt 0.773279 0.565056 +vt 0.777328 0.565056 +vt 0.773279 0.576208 +vt 0.777328 0.542751 +vt 0.777328 0.587361 +vt 0.773279 0.598513 +vt 0.773279 0.587361 +vt 0.777328 0.520446 +vt 0.773279 0.520446 +vt 0.777328 0.509294 +vt 0.773279 0.520446 +vt 0.773279 0.509294 +vt 0.777328 0.565056 +vt 0.773279 0.576208 +vt 0.773279 0.565056 +vt 0.777328 0.542751 +vt 0.773279 0.553903 +vt 0.773279 0.542751 +vt 0.777328 0.587361 +vt 0.773279 0.598513 +vt 0.773279 0.587361 +vt 0.777328 0.531599 +vt 0.773279 0.531599 +vt 0.777328 0.509294 +vt 0.773279 0.509294 +vt 0.777328 0.520446 +vt 0.777328 0.553903 +vt 0.773279 0.565056 +vt 0.773279 0.553903 +vt 0.777328 0.531599 +vt 0.773279 0.542751 +vt 0.773279 0.531599 +vt 0.777328 0.587361 +vt 0.773279 0.598513 +vt 0.773279 0.587361 +vt 0.777328 0.553903 +vt 0.777328 0.520446 +vt 0.773279 0.520446 +vt 0.777328 0.509294 +vt 0.773279 0.509294 +vt 0.777328 0.542751 +vt 0.773279 0.576208 +vt 0.777328 0.565056 +vt 0.773279 0.576208 +vt 0.773279 0.565056 +vt 0.777328 0.520446 +vt 0.773279 0.531599 +vt 0.773279 0.520446 +vt 0.785425 0.516729 +vt 0.793522 0.572491 +vt 0.785425 0.572491 +vt 0.793522 0.516729 +vt 0.801619 0.572491 +vt 0.777328 0.553903 +vt 0.773279 0.553903 +vt 0.777328 0.509294 +vt 0.773279 0.509294 +vt 0.777328 0.587361 +vt 0.773279 0.598513 +vt 0.773279 0.587361 +vt 0.777328 0.531599 +vt 0.773279 0.542751 +vt 0.777328 0.542751 +vt 0.777328 0.565056 +vt 0.773279 0.576208 +vt 0.777328 0.587361 +vt 0.773279 0.587361 +vt 0.777328 0.553903 +vt 0.773279 0.565056 +vt 0.773279 0.553903 +vt 0.777328 0.542751 +vt 0.773279 0.542751 +vt 0.777328 0.520446 +vt 0.773279 0.531599 +vt 0.773279 0.520446 +vt 0.809717 0.572491 +vt 0.801619 0.516729 +vt 0.809717 0.516729 +vt 0.777328 0.531599 +vt 0.773279 0.598513 +vt 0.777328 0.516729 +vt 0.777328 0.572491 +vt 0.777328 0.509294 +vt 0.773279 0.509294 +vt 0.777328 0.565056 +vt 0.659919 0.501859 +vt 0.680162 0.486989 +vt 0.684211 0.501859 +vt 0.854251 0.501859 +vt 0.834008 0.486989 +vt 0.850202 0.486989 +vt 0.829960 0.501859 +vt 0.809717 0.486989 +vt 0.825911 0.486989 +vt 0.805668 0.501859 +vt 0.785425 0.486989 +vt 0.801619 0.486989 +vt 0.757085 0.501859 +vt 0.777328 0.486989 +vt 0.781377 0.501859 +vt 0.732794 0.501859 +vt 0.753036 0.486989 +vt 0.708502 0.501859 +vt 0.728745 0.486989 +vt 0.688259 0.486989 +vt 0.704453 0.486989 +vt 0.748988 0.486989 +vt 0.744939 0.479554 +vt 0.748988 0.479554 +vt 0.740891 0.486989 +vt 0.736842 0.479554 +vt 0.740891 0.479554 +vt 0.732794 0.486989 +vt 0.728745 0.479554 +vt 0.732794 0.479554 +vt 0.724696 0.486989 +vt 0.720648 0.479554 +vt 0.724696 0.479554 +vt 0.753036 0.486989 +vt 0.753036 0.479554 +vt 0.744939 0.486989 +vt 0.736842 0.486989 +vt 0.728745 0.486989 +vt 0.838057 0.579926 +vt 0.854251 0.579926 +vt 0.854251 0.594796 +vt 0.777328 0.542751 +vt 0.773279 0.553903 +vt 0.777328 0.553903 +vt 0.785425 0.516729 +vt 0.793522 0.572491 +vt 0.785425 0.572491 +vt 0.793522 0.516729 +vt 0.801619 0.572491 +vt 0.809717 0.572491 +vt 0.801619 0.516729 +vt 0.809717 0.516729 +vt 0.777328 0.572491 +vt 0.777328 0.516729 +vt 0.838057 0.579926 +vt 0.854251 0.579926 +vt 0.854251 0.594796 +vt 0.785425 0.516729 +vt 0.793522 0.572491 +vt 0.785425 0.572491 +vt 0.793522 0.516729 +vt 0.801619 0.572491 +vt 0.809717 0.572491 +vt 0.801619 0.516729 +vt 0.809717 0.516729 +vt 0.777328 0.572491 +vt 0.777328 0.516729 +vt 0.838057 0.579926 +vt 0.854251 0.579926 +vt 0.854251 0.594796 +vt 0.785425 0.516729 +vt 0.793522 0.572491 +vt 0.785425 0.572491 +vt 0.793522 0.516729 +vt 0.801619 0.572491 +vt 0.809717 0.572491 +vt 0.801619 0.516729 +vt 0.809717 0.516729 +vt 0.777328 0.572491 +vt 0.777328 0.516729 +vt 0.838057 0.579926 +vt 0.854251 0.579926 +vt 0.854251 0.594796 +vt 0.785425 0.516729 +vt 0.793522 0.572491 +vt 0.785425 0.572491 +vt 0.793522 0.516729 +vt 0.801619 0.572491 +vt 0.809717 0.572491 +vt 0.801619 0.516729 +vt 0.809717 0.516729 +vt 0.777328 0.572491 +vt 0.777328 0.516729 +vt 0.838057 0.579926 +vt 0.854251 0.579926 +vt 0.854251 0.594796 +vt 0.785425 0.516729 +vt 0.793522 0.572491 +vt 0.785425 0.572491 +vt 0.793522 0.516729 +vt 0.801619 0.572491 +vt 0.809717 0.572491 +vt 0.801619 0.516729 +vt 0.809717 0.516729 +vt 0.777328 0.572491 +vt 0.777328 0.516729 +vt 0.838057 0.579926 +vt 0.854251 0.579926 +vt 0.854251 0.594796 +vt 0.785425 0.516729 +vt 0.793522 0.572491 +vt 0.785425 0.572491 +vt 0.793522 0.516729 +vt 0.801619 0.572491 +vt 0.809717 0.572491 +vt 0.801619 0.516729 +vt 0.809717 0.516729 +vt 0.777328 0.572491 +vt 0.777328 0.516729 +vt 0.838057 0.579926 +vt 0.854251 0.579926 +vt 0.854251 0.594796 +vt 0.785425 0.516729 +vt 0.793522 0.572491 +vt 0.785425 0.572491 +vt 0.801619 0.516729 +vt 0.801619 0.572491 +vt 0.809717 0.572491 +vt 0.809717 0.516729 +vt 0.777328 0.572491 +vt 0.777328 0.516729 +vt 0.838057 0.579926 +vt 0.854251 0.579926 +vt 0.854251 0.594796 +vt 0.562753 0.442379 +vt 0.562753 0.442379 +vt 0.562753 0.442379 +vt 0.562753 0.442379 +vt 0.562753 0.442379 +vt 0.562753 0.442379 +vt 0.562753 0.442379 +vt 0.562753 0.442379 +vt 0.777328 0.576208 +vt 0.777328 0.598513 +vt 0.777328 0.598513 +vt 0.777328 0.576208 +vt 0.777328 0.576208 +vt 0.777328 0.598513 +vt 0.777328 0.576208 +vt 0.777328 0.598513 +vt 0.777328 0.576208 +vt 0.777328 0.598513 +vt 0.777328 0.598513 +vt 0.777328 0.576208 +vt 0.777328 0.576208 +vt 0.777328 0.598513 +vt 0.777328 0.576208 +vt 0.777328 0.598513 +vt 0.663968 0.486989 +vt 0.761134 0.486989 +vt 0.736842 0.486989 +vt 0.712551 0.486989 +vt 0.720648 0.486989 +vt 0.838057 0.594796 +vt 0.834008 0.587361 +vt 0.846154 0.576208 +vt 0.858300 0.587361 +vt 0.846154 0.598513 +vt 0.838057 0.594796 +vt 0.834008 0.587361 +vt 0.846154 0.576208 +vt 0.858300 0.587361 +vt 0.846154 0.598513 +vt 0.838057 0.594796 +vt 0.834008 0.587361 +vt 0.846154 0.576208 +vt 0.858300 0.587361 +vt 0.846154 0.598513 +vt 0.838057 0.594796 +vt 0.834008 0.587361 +vt 0.846154 0.576208 +vt 0.858300 0.587361 +vt 0.846154 0.598513 +vt 0.838057 0.594796 +vt 0.834008 0.587361 +vt 0.846154 0.576208 +vt 0.858300 0.587361 +vt 0.846154 0.598513 +vt 0.838057 0.594796 +vt 0.834008 0.587361 +vt 0.846154 0.576208 +vt 0.858300 0.587361 +vt 0.846154 0.598513 +vt 0.838057 0.594796 +vt 0.834008 0.587361 +vt 0.846154 0.576208 +vt 0.858300 0.587361 +vt 0.846154 0.598513 +vt 0.793522 0.516729 +vt 0.838057 0.594796 +vt 0.834008 0.587361 +vt 0.846154 0.576208 +vt 0.858300 0.587361 +vt 0.846154 0.598513 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.9239 0.3827 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.5556 0.8315 0.0000 +vn -0.3827 0.9239 -0.0000 +vn 0.0000 -1.0000 -0.0000 +vn 0.7071 -0.7071 -0.0000 +vn -0.9239 0.3827 0.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.9808 0.1951 0.0000 +vn -0.9239 0.3827 0.0001 +vn 1.0000 0.0000 0.0000 +vn 0.9239 -0.3827 -0.0000 +vn -0.8315 -0.5556 -0.0000 +vn -0.9239 -0.3827 -0.0001 +vn -0.9239 -0.3827 -0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.1951 -0.9808 -0.0000 +vn -0.3827 -0.9239 -0.0000 +vn 0.3827 -0.9239 -0.0000 +vn 0.5556 -0.8315 -0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.9808 -0.1951 -0.0000 +vn 0.8315 0.5556 0.0000 +vn 0.9239 0.3827 -0.0001 +vn 0.1951 0.9808 0.0000 +vn 0.3827 0.9239 -0.0000 +vn 0.9808 0.1951 0.0000 +vn -0.5556 -0.8315 -0.0000 +vn -0.9808 -0.1951 -0.0000 +vn -0.8315 0.5556 0.0000 +vn 0.1951 -0.9808 -0.0000 +vn -0.1951 0.9808 0.0000 +vn 0.8315 -0.5556 -0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.5556 0.8315 0.0000 +vn -0.7071 0.7071 0.0001 +vn 0.0000 0.8944 0.4472 +vn 0.6325 0.6325 0.4472 +vn -0.6325 0.6325 0.4472 +vn -0.8944 0.0000 0.4472 +vn -0.6325 -0.6325 0.4472 +vn 0.0000 -0.8944 0.4472 +vn 0.6325 -0.6325 0.4472 +vn 0.8944 -0.0000 0.4472 +s off +f 165/283/47 166/284/47 167/285/47 +f 168/286/47 169/287/47 170/288/47 +f 171/289/48 172/290/48 173/291/48 +f 174/292/48 175/293/48 176/294/48 +f 177/295/48 178/296/48 179/297/48 +f 180/298/47 181/299/47 182/300/47 +f 183/301/48 184/302/48 185/303/48 +f 186/304/47 187/305/47 188/306/47 +f 189/307/47 190/308/47 191/309/47 +f 192/310/48 193/311/48 194/312/48 +f 195/313/47 196/314/47 197/315/47 +f 198/316/48 199/317/48 200/318/48 +f 201/319/48 202/320/48 203/321/48 +f 204/322/48 205/323/48 206/324/48 +f 207/325/47 208/326/47 209/327/47 +f 210/328/47 211/329/47 212/330/47 +f 213/331/47 214/332/47 215/333/47 +f 216/334/47 217/335/47 218/336/47 +f 219/337/48 220/338/48 221/339/48 +f 222/340/48 223/341/48 224/342/48 +f 225/343/48 226/344/48 227/345/48 +f 228/346/48 229/347/48 230/348/48 +f 231/349/48 232/350/48 233/351/48 +f 234/352/48 235/353/48 236/354/48 +f 237/355/48 238/356/48 239/357/48 +f 240/358/48 241/359/48 242/360/48 +f 229/347/48 243/361/48 244/362/48 +f 245/363/47 246/364/47 247/365/47 +f 248/366/47 249/367/47 250/368/47 +f 251/369/47 252/370/47 253/371/47 +f 254/372/47 255/373/47 256/374/47 +f 257/375/47 258/376/47 259/377/47 +f 260/378/47 261/379/47 262/380/47 +f 263/381/47 264/382/47 265/383/47 +f 266/384/47 267/385/47 268/386/47 +f 269/387/47 270/388/47 271/389/47 +f 272/390/47 273/391/47 165/283/47 +f 165/283/47 274/392/47 166/284/47 +f 166/284/47 275/393/47 167/285/47 +f 167/285/47 276/394/47 272/390/47 +f 272/390/47 165/283/47 167/285/47 +f 169/287/47 277/395/47 170/288/47 +f 277/395/47 278/396/47 170/288/47 +f 278/396/47 279/397/47 170/288/47 +f 170/288/47 280/398/47 281/399/47 +f 281/399/47 168/286/47 170/288/47 +f 173/291/48 282/400/48 283/401/48 +f 283/401/48 284/402/48 173/291/48 +f 284/402/48 171/289/48 173/291/48 +f 171/289/48 285/403/48 172/290/48 +f 172/290/48 286/404/48 173/291/48 +f 176/294/48 287/405/48 288/406/48 +f 288/406/48 289/407/48 174/292/48 +f 174/292/48 290/408/48 175/293/48 +f 175/293/48 291/409/48 176/294/48 +f 176/294/48 288/406/48 174/292/48 +f 179/297/48 292/410/48 293/411/48 +f 293/411/48 294/412/48 179/297/48 +f 294/412/48 177/295/48 179/297/48 +f 177/295/48 295/413/48 178/296/48 +f 178/296/48 296/414/48 179/297/48 +f 180/298/47 297/415/47 181/299/47 +f 181/299/47 298/416/47 182/300/47 +f 182/300/47 299/417/47 300/418/47 +f 300/418/47 301/419/47 182/300/47 +f 301/419/47 180/298/47 182/300/47 +f 185/303/48 302/420/48 303/421/48 +f 303/421/48 304/422/48 185/303/48 +f 304/422/48 183/301/48 185/303/48 +f 183/301/48 305/423/48 184/302/48 +f 184/302/48 306/424/48 185/303/48 +f 187/305/47 307/425/47 188/306/47 +f 307/425/47 308/426/47 188/306/47 +f 308/426/47 309/427/47 188/306/47 +f 188/306/47 310/428/47 311/429/47 +f 311/429/47 186/304/47 188/306/47 +f 190/308/47 312/430/47 191/309/47 +f 312/430/47 313/431/47 191/309/47 +f 313/431/47 314/432/47 191/309/47 +f 191/309/47 315/433/47 316/434/47 +f 316/434/47 189/307/47 191/309/47 +f 194/312/48 317/435/48 318/436/48 +f 318/436/48 319/437/48 194/312/48 +f 319/437/48 192/310/48 194/312/48 +f 192/310/48 320/438/48 193/311/48 +f 193/311/48 321/439/48 194/312/48 +f 196/314/47 322/440/47 197/315/47 +f 322/440/47 323/441/47 197/315/47 +f 323/441/47 324/442/47 197/315/47 +f 197/315/47 325/443/47 326/444/47 +f 326/444/47 195/313/47 197/315/47 +f 200/318/48 327/445/48 328/446/48 +f 328/446/48 329/447/48 200/318/48 +f 329/447/48 198/316/48 200/318/48 +f 198/316/48 330/448/48 199/317/48 +f 199/317/48 331/449/48 200/318/48 +f 203/321/48 332/450/48 333/451/48 +f 333/451/48 334/452/48 203/321/48 +f 334/452/48 201/319/48 203/321/48 +f 201/319/48 335/453/48 202/320/48 +f 202/320/48 336/454/48 203/321/48 +f 206/324/48 337/455/48 338/456/48 +f 338/456/48 339/457/48 206/324/48 +f 339/457/48 204/322/48 206/324/48 +f 204/322/48 340/458/48 205/323/48 +f 205/323/48 341/459/48 206/324/48 +f 208/326/47 342/460/47 209/327/47 +f 342/460/47 343/461/47 209/327/47 +f 343/461/47 344/462/47 209/327/47 +f 209/327/47 345/463/47 346/464/47 +f 346/464/47 207/325/47 209/327/47 +f 212/330/47 347/465/47 210/328/47 +f 347/465/47 348/466/47 210/328/47 +f 348/466/47 349/467/47 210/328/47 +f 210/328/47 350/468/47 211/329/47 +f 211/329/47 351/469/47 212/330/47 +f 215/333/47 352/470/47 353/471/47 +f 353/471/47 354/472/47 213/331/47 +f 213/331/47 355/473/47 214/332/47 +f 214/332/47 356/474/47 215/333/47 +f 215/333/47 353/471/47 213/331/47 +f 216/334/47 357/475/47 217/335/47 +f 217/335/47 358/476/47 218/336/47 +f 218/336/47 359/477/47 360/478/47 +f 360/478/47 361/479/47 218/336/47 +f 361/479/47 216/334/47 218/336/47 +f 220/338/48 362/480/48 363/481/48 +f 363/481/48 364/482/48 365/483/48 +f 221/339/48 244/362/48 219/337/48 +f 244/362/48 366/484/48 219/337/48 +f 363/481/48 365/483/48 220/338/48 +f 365/483/48 221/339/48 220/338/48 +f 223/341/48 367/485/48 368/486/48 +f 368/486/48 369/487/48 370/488/48 +f 224/342/48 366/484/48 222/340/48 +f 366/484/48 243/361/48 222/340/48 +f 368/486/48 370/488/48 223/341/48 +f 370/488/48 224/342/48 223/341/48 +f 226/344/48 371/489/48 372/490/48 +f 372/490/48 373/491/48 374/492/48 +f 227/345/48 243/361/48 225/343/48 +f 243/361/48 375/493/48 225/343/48 +f 372/490/48 374/492/48 226/344/48 +f 374/492/48 227/345/48 226/344/48 +f 376/494/48 377/495/48 378/496/48 +f 378/496/48 379/497/48 380/498/48 +f 228/346/48 375/493/48 229/347/48 +f 378/496/48 380/498/48 376/494/48 +f 380/498/48 228/346/48 376/494/48 +f 230/348/48 376/494/48 228/346/48 +f 381/499/48 382/500/48 383/501/48 +f 383/501/48 384/502/48 385/503/48 +f 231/349/48 229/347/48 232/350/48 +f 383/501/48 385/503/48 381/499/48 +f 385/503/48 231/349/48 381/499/48 +f 233/351/48 381/499/48 231/349/48 +f 235/353/48 386/504/48 387/505/48 +f 387/505/48 388/506/48 389/507/48 +f 236/354/48 232/350/48 234/352/48 +f 232/350/48 390/508/48 234/352/48 +f 387/505/48 389/507/48 235/353/48 +f 389/507/48 236/354/48 235/353/48 +f 391/509/48 390/508/48 392/510/48 +f 390/508/48 393/511/48 392/510/48 +f 238/356/48 394/512/48 239/357/48 +f 239/357/48 391/509/48 237/355/48 +f 391/509/48 392/510/48 237/355/48 +f 237/355/48 395/513/48 238/356/48 +f 241/359/48 396/514/48 397/515/48 +f 397/515/48 398/516/48 399/517/48 +f 242/360/48 393/511/48 240/358/48 +f 393/511/48 244/362/48 240/358/48 +f 397/515/48 399/517/48 241/359/48 +f 399/517/48 242/360/48 241/359/48 +f 244/362/48 393/511/48 390/508/48 +f 390/508/48 232/350/48 229/347/48 +f 229/347/48 375/493/48 243/361/48 +f 243/361/48 366/484/48 244/362/48 +f 244/362/48 390/508/48 229/347/48 +f 400/518/47 270/388/47 401/519/47 +f 400/518/47 401/519/47 402/520/47 +f 247/365/47 403/521/47 245/363/47 +f 245/363/47 400/518/47 402/520/47 +f 246/364/47 404/522/47 247/365/47 +f 245/363/47 402/520/47 246/364/47 +f 405/523/47 406/524/47 270/388/47 +f 405/523/47 270/388/47 407/525/47 +f 249/367/47 408/526/47 250/368/47 +f 250/368/47 405/523/47 407/525/47 +f 248/366/47 409/527/47 249/367/47 +f 250/368/47 407/525/47 248/366/47 +f 410/528/47 271/389/47 406/524/47 +f 410/528/47 406/524/47 411/529/47 +f 253/371/47 412/530/47 251/369/47 +f 251/369/47 410/528/47 411/529/47 +f 252/370/47 413/531/47 253/371/47 +f 251/369/47 411/529/47 252/370/47 +f 414/532/47 415/533/47 271/389/47 +f 414/532/47 271/389/47 416/534/47 +f 255/373/47 417/535/47 256/374/47 +f 256/374/47 414/532/47 416/534/47 +f 254/372/47 418/536/47 255/373/47 +f 256/374/47 416/534/47 254/372/47 +f 419/537/47 420/538/47 415/533/47 +f 419/537/47 415/533/47 421/539/47 +f 258/376/47 422/540/47 259/377/47 +f 259/377/47 419/537/47 421/539/47 +f 257/375/47 423/541/47 258/376/47 +f 259/377/47 421/539/47 257/375/47 +f 424/542/47 264/382/47 420/538/47 +f 424/542/47 420/538/47 425/543/47 +f 261/379/47 426/544/47 262/380/47 +f 262/380/47 424/542/47 425/543/47 +f 260/378/47 427/545/47 261/379/47 +f 262/380/47 425/543/47 260/378/47 +f 428/546/47 429/547/47 430/548/47 +f 430/548/47 431/549/47 432/550/47 +f 263/381/47 269/387/47 264/382/47 +f 430/548/47 432/550/47 428/546/47 +f 432/550/47 263/381/47 265/383/47 +f 265/383/47 428/546/47 432/550/47 +f 433/551/47 401/519/47 269/387/47 +f 433/551/47 269/387/47 434/552/47 +f 268/386/47 435/553/47 266/384/47 +f 266/384/47 433/551/47 434/552/47 +f 267/385/47 436/554/47 268/386/47 +f 266/384/47 434/552/47 267/385/47 +f 269/387/47 401/519/47 270/388/47 +f 270/388/47 406/524/47 271/389/47 +f 271/389/47 415/533/47 420/538/47 +f 420/538/47 264/382/47 271/389/47 +f 264/382/47 269/387/47 271/389/47 +s 1 +f 398/555/49 267/556/50 399/557/50 +f 395/558/51 430/559/52 238/560/52 +f 385/561/53 421/562/54 231/563/54 +f 373/564/55 252/565/56 374/566/56 +f 396/567/57 268/568/55 397/569/58 +f 389/570/54 425/571/59 236/572/59 +f 394/573/60 428/574/59 239/575/59 +f 362/576/61 247/577/62 363/578/63 +f 231/563/54 415/579/59 229/580/59 +f 379/581/63 254/582/64 380/583/64 +f 367/584/65 249/585/66 368/586/66 +f 229/580/59 414/587/50 230/588/50 +f 388/589/67 260/590/54 389/570/54 +f 371/591/68 253/592/67 372/593/67 +f 230/588/50 256/594/69 376/595/69 +f 384/596/66 257/597/53 385/561/53 +f 377/598/70 255/599/60 378/600/60 +f 225/601/59 251/602/50 226/603/50 +f 382/604/71 258/605/72 383/606/49 +f 375/607/54 410/608/59 225/601/59 +f 386/609/73 261/610/74 387/611/74 +f 228/612/53 271/613/54 375/607/54 +f 384/596/75 258/605/72 423/614/75 +f 227/615/64 406/616/53 243/617/53 +f 368/586/66 409/618/76 369/619/76 +f 380/583/64 416/620/53 228/612/53 +f 364/621/77 247/577/62 404/622/77 +f 374/566/56 411/623/64 227/615/64 +f 397/569/55 436/624/78 398/555/78 +f 243/617/53 405/625/54 222/626/54 +f 372/593/67 413/627/79 373/564/79 +f 223/628/59 405/625/54 250/629/59 +f 238/560/52 429/630/80 394/573/80 +f 219/631/53 245/632/54 220/633/54 +f 378/600/60 418/634/81 379/581/81 +f 370/635/82 407/636/56 224/637/56 +f 387/611/74 427/638/83 388/589/83 +f 366/639/64 400/640/53 219/631/53 +f 376/595/69 417/641/52 377/642/52 +f 221/643/82 401/644/56 244/645/56 +f 226/603/50 412/646/74 371/647/74 +f 224/637/56 270/648/64 366/639/64 +f 223/628/59 408/649/49 367/650/49 +f 241/651/53 433/652/64 266/653/53 +f 220/633/54 403/654/60 362/655/60 +f 365/656/69 402/657/82 221/643/82 +f 396/658/67 266/653/53 435/659/67 +f 244/645/56 433/652/64 240/660/64 +f 239/575/59 265/661/50 391/662/50 +f 237/663/64 431/664/66 395/665/66 +f 393/666/82 263/667/56 392/668/56 +f 391/662/50 264/669/69 390/670/69 +f 235/671/56 426/672/63 386/673/63 +f 399/557/50 434/674/69 242/675/69 +f 390/670/69 424/676/82 234/677/82 +f 381/678/82 422/679/55 382/680/55 +f 392/668/56 432/681/64 237/663/64 +f 234/677/82 262/682/56 235/671/56 +f 370/635/82 409/618/52 248/683/82 +f 242/675/69 269/684/82 393/666/82 +f 232/685/50 419/686/69 233/687/69 +f 364/621/74 246/688/69 365/656/69 +f 233/687/69 259/689/82 381/678/82 +f 236/572/59 420/690/50 232/685/50 +f 290/691/54 167/692/59 275/693/54 +f 291/694/64 166/695/53 274/696/64 +f 175/697/53 275/693/54 166/695/53 +f 176/698/56 274/696/64 165/699/56 +f 288/700/69 273/701/82 272/702/69 +f 289/703/50 272/704/69 276/705/50 +f 284/706/69 216/707/82 361/708/69 +f 173/709/64 358/710/53 217/711/64 +f 285/712/59 360/713/50 359/714/59 +f 360/713/50 284/706/69 361/708/69 +f 282/715/56 217/711/64 357/716/56 +f 293/717/56 297/718/64 180/719/56 +f 178/720/59 299/721/50 182/722/59 +f 287/723/82 165/699/56 273/701/82 +f 167/692/59 289/703/50 276/705/50 +f 300/724/69 294/725/82 301/726/82 +f 294/725/82 180/727/56 301/726/82 +f 292/728/64 181/729/53 297/718/64 +f 179/730/53 298/731/54 181/729/53 +f 295/732/50 300/724/69 299/721/50 +f 283/733/82 357/716/56 216/734/82 +f 306/735/59 188/736/50 309/737/59 +f 185/738/54 309/737/59 308/739/54 +f 184/740/50 310/741/69 188/736/50 +f 305/742/69 311/743/82 310/741/69 +f 296/744/54 182/722/59 298/731/54 +f 304/745/56 187/746/64 186/747/56 +f 311/743/82 304/745/56 186/747/56 +f 302/748/53 308/739/54 307/749/53 +f 318/750/53 312/751/54 190/752/53 +f 320/753/82 316/754/56 315/755/82 +f 321/756/50 191/757/69 314/758/50 +f 319/759/64 190/760/53 189/761/64 +f 194/762/59 314/758/50 313/763/59 +f 303/764/64 307/749/53 187/765/64 +f 316/754/56 319/759/64 189/761/64 +f 317/766/54 313/763/59 312/751/54 +f 199/767/82 325/768/56 197/769/82 +f 200/770/50 324/771/69 323/772/50 +f 329/773/53 196/774/54 195/775/53 +f 193/776/69 315/755/82 191/757/69 +f 327/777/59 323/772/50 322/778/59 +f 328/779/54 322/778/59 196/780/54 +f 331/781/69 197/769/82 324/771/69 +f 326/782/64 329/773/53 195/775/53 +f 335/783/64 346/784/53 345/785/64 +f 332/786/50 343/787/69 342/788/50 +f 437/789/82 438/790/69 439/791/82 +f 440/792/69 441/793/50 438/790/69 +f 202/794/56 345/785/64 209/795/56 +f 333/796/59 342/788/50 208/797/59 +f 334/798/54 208/799/59 207/800/54 +f 346/784/53 334/798/54 207/800/54 +f 203/801/69 344/802/82 343/787/69 +f 336/803/82 209/795/56 344/802/82 +f 330/804/56 326/782/64 325/768/56 +f 281/805/54 339/806/59 168/807/59 +f 205/808/64 280/809/53 170/810/64 +f 341/811/56 170/810/64 279/812/56 +f 337/813/69 278/814/82 277/815/69 +f 442/816/49 443/817/50 444/818/49 +f 206/819/82 279/812/56 278/814/82 +f 339/806/59 169/820/50 168/807/59 +f 445/821/55 439/791/84 446/822/55 +f 338/823/50 277/815/69 169/824/50 +f 340/825/53 281/805/54 280/809/53 +f 447/826/85 351/827/86 448/828/86 +f 447/829/85 347/830/87 212/831/85 +f 449/832/87 348/833/88 347/834/87 +f 450/835/88 349/836/89 348/837/88 +f 451/838/90 349/839/89 452/840/89 +f 453/841/91 210/842/90 451/838/90 +f 454/843/92 350/844/91 453/841/91 +f 454/843/92 351/845/86 211/846/92 +f 356/847/50 455/848/59 456/849/50 +f 355/850/54 457/851/53 458/852/54 +f 354/853/64 459/854/56 460/855/64 +f 352/856/82 461/857/69 462/858/82 +f 215/859/69 456/849/50 461/860/69 +f 214/861/59 458/852/54 455/848/59 +f 213/862/53 460/855/64 457/851/53 +f 353/863/56 462/858/82 459/854/56 +f 463/864/47 464/865/47 443/866/47 +f 286/867/53 218/868/54 358/710/53 +f 172/869/54 359/714/59 218/868/54 +f 465/870/69 466/871/50 467/872/69 +f 468/873/50 469/874/59 466/871/50 +f 470/875/60 471/876/59 472/877/60 +f 465/870/69 473/878/52 474/879/52 +f 475/880/47 476/881/47 471/882/47 +f 477/883/50 478/884/59 479/885/50 +f 480/886/59 481/887/54 478/884/59 +f 482/888/67 483/889/54 484/890/67 +f 477/883/50 485/891/74 486/892/74 +f 487/893/47 488/894/47 483/895/47 +f 489/896/59 490/897/54 491/898/59 +f 492/899/54 493/900/53 490/897/54 +f 494/901/66 495/902/53 496/903/66 +f 489/896/59 497/904/49 498/905/49 +f 499/906/47 500/907/47 495/908/47 +f 501/909/54 502/910/53 503/911/54 +f 504/912/53 505/913/64 502/910/53 +f 506/914/63 507/915/64 508/916/63 +f 501/909/54 509/917/60 510/918/60 +f 511/919/47 512/920/47 507/921/47 +f 513/922/53 514/923/64 515/924/53 +f 516/925/64 517/926/56 514/923/64 +f 518/927/55 519/928/56 520/929/55 +f 513/922/53 521/930/67 522/931/67 +f 523/932/47 524/933/47 519/934/47 +f 525/935/64 526/936/56 527/937/64 +f 528/938/56 529/939/82 526/936/56 +f 530/940/52 531/941/82 532/942/52 +f 525/935/64 533/943/66 534/944/66 +f 535/945/47 536/946/47 531/947/47 +f 537/948/56 538/949/82 539/950/56 +f 538/949/82 540/951/69 541/952/69 +f 542/953/74 540/951/69 543/954/74 +f 537/948/56 544/955/63 545/956/63 +f 546/957/47 547/958/47 540/959/47 +f 398/555/49 436/624/49 267/556/50 +f 395/558/51 431/960/51 430/559/52 +f 385/561/53 257/597/53 421/562/54 +f 373/564/55 413/627/55 252/565/56 +f 396/567/57 435/961/57 268/568/55 +f 389/570/54 260/590/54 425/571/59 +f 394/573/60 429/630/60 428/574/59 +f 362/576/61 403/962/61 247/577/63 +f 231/563/54 421/562/54 415/579/59 +f 379/581/63 418/634/63 254/582/64 +f 367/584/65 408/963/65 249/585/66 +f 229/580/59 415/579/59 414/587/50 +f 388/589/67 427/638/67 260/590/54 +f 371/591/68 412/964/68 253/592/67 +f 230/588/50 414/587/50 256/594/69 +f 384/596/66 423/614/66 257/597/53 +f 377/598/70 417/965/70 255/599/60 +f 225/601/59 410/608/59 251/602/50 +f 382/604/71 422/966/71 258/605/49 +f 375/607/54 271/613/54 410/608/59 +f 386/609/73 426/967/73 261/610/74 +f 228/612/53 416/620/53 271/613/54 +f 384/596/75 383/606/49 258/605/72 +f 227/615/64 411/623/64 406/616/53 +f 368/586/66 249/585/66 409/618/76 +f 380/583/64 254/582/64 416/620/53 +f 364/621/77 363/578/63 247/577/62 +f 374/566/56 252/565/56 411/623/64 +f 397/569/58 268/568/55 436/624/78 +f 243/617/53 406/616/53 405/625/54 +f 372/593/67 253/592/67 413/627/79 +f 223/628/59 222/626/54 405/625/54 +f 238/560/52 430/559/52 429/630/80 +f 219/631/53 400/640/53 245/632/54 +f 378/600/60 255/599/60 418/634/81 +f 370/635/82 248/683/82 407/636/56 +f 387/611/74 261/610/74 427/638/83 +f 366/639/64 270/648/64 400/640/53 +f 376/595/69 256/594/69 417/641/52 +f 221/643/82 402/657/82 401/644/56 +f 226/603/50 251/602/50 412/646/74 +f 224/637/56 407/636/56 270/648/64 +f 223/628/59 250/629/59 408/649/49 +f 241/651/53 240/660/64 433/652/64 +f 220/633/54 245/632/54 403/654/60 +f 365/656/69 246/688/69 402/657/82 +f 396/658/67 241/651/53 266/653/53 +f 244/645/56 401/644/56 433/652/64 +f 239/575/59 428/574/59 265/661/50 +f 237/663/64 432/681/64 431/664/66 +f 393/666/82 269/684/82 263/667/56 +f 391/662/50 265/661/50 264/669/69 +f 235/671/56 262/682/56 426/672/63 +f 399/557/50 267/556/50 434/674/69 +f 390/670/69 264/669/69 424/676/82 +f 381/678/82 259/689/82 422/679/55 +f 392/668/56 263/667/56 432/681/64 +f 234/677/82 424/676/82 262/682/56 +f 370/635/82 369/619/52 409/618/52 +f 242/675/69 434/674/69 269/684/82 +f 232/685/50 420/690/50 419/686/69 +f 364/621/74 404/622/74 246/688/69 +f 233/687/69 419/686/69 259/689/82 +f 236/572/59 425/571/59 420/690/50 +f 290/691/54 174/968/59 167/692/59 +f 291/694/64 175/697/53 166/695/53 +f 175/697/53 290/691/54 275/693/54 +f 176/698/56 291/694/64 274/696/64 +f 288/700/69 287/723/82 273/701/82 +f 289/703/50 288/969/69 272/704/69 +f 284/706/69 283/970/82 216/707/82 +f 173/709/64 286/867/53 358/710/53 +f 285/712/59 171/971/50 360/713/50 +f 360/713/50 171/971/50 284/706/69 +f 282/715/56 173/709/64 217/711/64 +f 293/717/56 292/728/64 297/718/64 +f 178/720/59 295/732/50 299/721/50 +f 287/723/82 176/698/56 165/699/56 +f 167/692/59 174/968/59 289/703/50 +f 300/724/69 177/972/69 294/725/82 +f 294/725/82 293/973/56 180/727/56 +f 292/728/64 179/730/53 181/729/53 +f 179/730/53 296/744/54 298/731/54 +f 295/732/50 177/972/69 300/724/69 +f 283/733/82 282/715/56 357/716/56 +f 306/735/59 184/740/50 188/736/50 +f 185/738/54 306/735/59 309/737/59 +f 184/740/50 305/742/69 310/741/69 +f 305/742/69 183/974/82 311/743/82 +f 296/744/54 178/720/59 182/722/59 +f 304/745/56 303/975/64 187/746/64 +f 311/743/82 183/974/82 304/745/56 +f 302/748/53 185/738/54 308/739/54 +f 318/750/53 317/766/54 312/751/54 +f 320/753/82 192/976/56 316/754/56 +f 321/756/50 193/776/69 191/757/69 +f 319/759/64 318/977/53 190/760/53 +f 194/762/59 321/756/50 314/758/50 +f 303/764/64 302/748/53 307/749/53 +f 316/754/56 192/976/56 319/759/64 +f 317/766/54 194/762/59 313/763/59 +f 199/767/82 330/804/56 325/768/56 +f 200/770/50 331/781/69 324/771/69 +f 329/773/53 328/978/54 196/774/54 +f 193/776/69 320/753/82 315/755/82 +f 327/777/59 200/770/50 323/772/50 +f 328/779/54 327/777/59 322/778/59 +f 331/781/69 199/767/82 197/769/82 +f 326/782/64 198/979/64 329/773/53 +f 335/783/64 201/980/53 346/784/53 +f 332/786/50 203/801/69 343/787/69 +f 437/789/82 440/792/69 438/790/69 +f 440/792/69 443/817/50 441/793/50 +f 202/794/56 335/783/64 345/785/64 +f 333/796/59 332/786/50 342/788/50 +f 334/798/54 333/981/59 208/799/59 +f 346/784/53 201/980/53 334/798/54 +f 203/801/69 336/803/82 344/802/82 +f 336/803/82 202/794/56 209/795/56 +f 330/804/56 198/979/64 326/782/64 +f 281/805/54 204/982/54 339/806/59 +f 205/808/64 340/825/53 280/809/53 +f 341/811/56 205/808/64 170/810/64 +f 337/813/69 206/819/82 278/814/82 +f 442/816/49 441/793/50 443/817/50 +f 206/819/82 341/811/56 279/812/56 +f 339/806/59 338/983/50 169/820/50 +f 445/821/55 437/789/82 439/791/82 +f 338/823/50 337/813/69 277/815/69 +f 340/825/53 204/982/54 281/805/54 +f 447/826/85 212/984/85 351/827/86 +f 447/829/85 449/832/87 347/830/87 +f 449/832/87 450/835/88 348/833/88 +f 450/835/88 452/840/89 349/836/89 +f 451/838/90 210/985/90 349/839/89 +f 453/841/91 350/986/91 210/842/90 +f 454/843/92 211/987/92 350/844/91 +f 454/843/92 448/828/86 351/845/86 +f 356/847/50 214/861/59 455/848/59 +f 355/850/54 213/862/53 457/851/53 +f 354/853/64 353/863/56 459/854/56 +f 352/856/82 215/988/69 461/857/69 +f 215/859/69 356/847/50 456/849/50 +f 214/861/59 355/850/54 458/852/54 +f 213/862/53 354/853/64 460/855/64 +f 353/863/56 352/856/82 462/858/82 +f 437/989/47 445/990/47 463/864/47 +f 463/864/47 548/991/47 464/865/47 +f 464/865/47 444/992/47 443/866/47 +f 443/866/47 440/993/47 437/989/47 +f 437/989/47 463/864/47 443/866/47 +f 286/867/53 172/869/54 218/868/54 +f 172/869/54 285/712/59 359/714/59 +f 465/870/69 468/873/50 466/871/50 +f 468/873/50 471/876/59 469/874/59 +f 470/875/60 469/874/59 471/876/59 +f 465/870/69 467/872/69 473/878/52 +f 465/994/47 474/995/47 475/880/47 +f 475/880/47 549/996/47 476/881/47 +f 476/881/47 472/997/47 471/882/47 +f 471/882/47 468/998/47 465/994/47 +f 465/994/47 475/880/47 471/882/47 +f 477/883/50 480/886/59 478/884/59 +f 480/886/59 483/889/54 481/887/54 +f 482/888/67 481/887/54 483/889/54 +f 477/883/50 479/885/50 485/891/74 +f 477/999/47 486/1000/47 487/893/47 +f 487/893/47 550/1001/47 488/894/47 +f 488/894/47 484/1002/47 483/895/47 +f 483/895/47 480/1003/47 477/999/47 +f 477/999/47 487/893/47 483/895/47 +f 489/896/59 492/899/54 490/897/54 +f 492/899/54 495/902/53 493/900/53 +f 494/901/66 493/900/53 495/902/53 +f 489/896/59 491/898/59 497/904/49 +f 489/1004/47 498/1005/47 499/906/47 +f 499/906/47 551/1006/47 500/907/47 +f 500/907/47 496/1007/47 495/908/47 +f 495/908/47 492/1008/47 489/1004/47 +f 489/1004/47 499/906/47 495/908/47 +f 501/909/54 504/912/53 502/910/53 +f 504/912/53 507/915/64 505/913/64 +f 506/914/63 505/913/64 507/915/64 +f 501/909/54 503/911/54 509/917/60 +f 501/1009/47 510/1010/47 511/919/47 +f 511/919/47 552/1011/47 512/920/47 +f 512/920/47 508/1012/47 507/921/47 +f 507/921/47 504/1013/47 501/1009/47 +f 501/1009/47 511/919/47 507/921/47 +f 513/922/53 516/925/64 514/923/64 +f 516/925/64 519/928/56 517/926/56 +f 518/927/55 517/926/56 519/928/56 +f 513/922/53 515/924/53 521/930/67 +f 513/1014/47 522/1015/47 523/932/47 +f 523/932/47 553/1016/47 524/933/47 +f 524/933/47 520/1017/47 519/934/47 +f 519/934/47 516/1018/47 513/1014/47 +f 513/1014/47 523/932/47 519/934/47 +f 525/935/64 528/938/56 526/936/56 +f 528/938/56 531/941/82 529/939/82 +f 530/940/52 529/939/82 531/941/82 +f 525/935/64 527/937/64 533/943/66 +f 525/1019/47 534/1020/47 535/945/47 +f 535/945/47 554/1021/47 536/946/47 +f 536/946/47 532/1022/47 531/947/47 +f 531/947/47 528/1023/47 525/1019/47 +f 525/1019/47 535/945/47 531/947/47 +f 537/948/56 555/1024/82 538/949/82 +f 538/949/82 555/1024/82 540/951/69 +f 542/953/74 541/952/69 540/951/69 +f 537/948/56 539/950/56 544/955/63 +f 537/1025/47 545/1026/47 546/957/47 +f 546/957/47 556/1027/47 547/958/47 +f 547/958/47 543/1028/47 540/959/47 +f 540/959/47 555/1029/47 537/1025/47 +f 537/1025/47 546/957/47 540/959/47 +o Lid +v -1.931852 -1.478220 -1.193358 +v -2.173333 -1.945152 -5.266041 +v -2.414814 -1.956912 -5.377924 +v 1.931852 -1.478220 -1.193358 +v 2.173333 -1.945152 -5.266041 +v 1.690370 -1.489652 -1.302134 +v -1.690370 -1.489653 -1.302134 +v 2.414815 -1.956911 -5.377924 +v 1.673033 -2.438854 -1.092390 +v 2.091291 -3.156821 -5.243586 +v 0.965926 -3.142087 -1.018477 +v 1.207408 -4.035218 -5.145245 +v 0.000000 -3.399489 -0.991423 +v 0.000000 -4.356733 -5.109249 +v -1.207407 -4.035218 -5.145245 +v -0.965926 -3.142087 -1.018477 +v -2.091291 -3.156821 -5.243586 +v -1.673032 -2.438854 -1.092390 +v 1.882161 -3.025071 -5.145136 +v 1.086666 -3.815628 -5.056629 +v -1.086666 -3.815628 -5.056629 +v 0.000000 -4.104991 -5.024233 +v -1.882162 -3.025072 -5.145136 +v 1.463903 -2.330207 -1.213787 +v 0.845185 -2.945537 -1.149113 +v 0.000000 -3.170763 -1.125441 +v -0.845185 -2.945536 -1.149113 +v -1.463903 -2.330208 -1.213787 +vt 0.562753 0.382900 +vt 0.437247 0.390335 +vt 0.433198 0.382900 +vt 0.562753 0.598513 +vt 0.437247 0.591078 +vt 0.558704 0.591078 +vt 0.558704 0.390335 +vt 0.433198 0.598513 +vt 0.433198 0.732342 +vt 0.469636 0.605948 +vt 0.473684 0.732342 +vt 0.510121 0.605948 +vt 0.514170 0.732342 +vt 0.550607 0.605948 +vt 0.554656 0.732342 +vt 0.595142 0.732342 +vt 0.558704 0.605948 +vt 0.591093 0.605948 +vt 0.635628 0.732342 +vt 0.599190 0.605948 +vt 0.631579 0.605948 +vt 0.676113 0.732342 +vt 0.639676 0.605948 +vt 0.676113 0.605948 +vt 0.435223 0.739777 +vt 0.471660 0.739777 +vt 0.475708 0.739777 +vt 0.516194 0.739777 +vt 0.593117 0.739777 +vt 0.556680 0.739777 +vt 0.633603 0.739777 +vt 0.597166 0.739777 +vt 0.674089 0.739777 +vt 0.467611 0.598513 +vt 0.437247 0.605948 +vt 0.439271 0.598513 +vt 0.479757 0.598513 +vt 0.508097 0.598513 +vt 0.520243 0.598513 +vt 0.548583 0.598513 +vt 0.560729 0.598513 +vt 0.589069 0.598513 +vt 0.601215 0.598513 +vt 0.629555 0.598513 +vt 0.672065 0.605948 +vt 0.641700 0.598513 +vt 0.670040 0.598513 +vt 0.433198 0.390335 +vt 0.562753 0.420074 +vt 0.433198 0.423792 +vt 0.562753 0.453532 +vt 0.433198 0.457249 +vt 0.562753 0.486989 +vt 0.433198 0.490706 +vt 0.562753 0.494424 +vt 0.433198 0.524164 +vt 0.562753 0.527881 +vt 0.433198 0.557621 +vt 0.562753 0.561338 +vt 0.433198 0.591078 +vt 0.433198 0.605948 +vt 0.477733 0.605948 +vt 0.518219 0.605948 +vt 0.512146 0.739777 +vt 0.552631 0.739777 +vt 0.637652 0.739777 +vt 0.562753 0.394052 +vt 0.562753 0.427509 +vt 0.562753 0.460967 +vt 0.562753 0.520446 +vt 0.562753 0.553903 +vt 0.562753 0.587361 +vn 0.0045 0.9935 -0.1142 +vn 0.0042 0.9935 -0.1137 +vn -0.0042 0.9935 -0.1137 +vn -0.0045 0.9935 -0.1142 +vn 0.9599 -0.2434 0.1388 +vn 0.8606 -0.4802 0.1697 +vn 0.8601 -0.4811 0.1699 +vn 0.4970 -0.8417 0.2112 +vn 0.4964 -0.8420 0.2113 +vn -0.0000 -0.9740 0.2264 +vn -0.4964 -0.8420 0.2113 +vn -0.4970 -0.8417 0.2112 +vn -0.8601 -0.4811 0.1699 +vn -0.8606 -0.4802 0.1697 +vn -0.9599 -0.2436 0.1388 +vn -0.9598 -0.2440 0.1387 +vn -0.4199 0.0116 -0.9075 +vn -0.3663 0.1092 -0.9241 +vn -0.3661 0.1095 -0.9241 +vn -0.2117 0.2634 -0.9412 +vn 0.0000 0.3200 -0.9474 +vn -0.2115 0.2635 -0.9412 +vn 0.2115 0.2635 -0.9412 +vn 0.2117 0.2634 -0.9412 +vn 0.3661 0.1095 -0.9241 +vn 0.4199 0.0116 -0.9075 +vn 0.3662 0.1092 -0.9241 +vn -0.3573 0.3004 0.8844 +vn -0.4101 0.2039 0.8890 +vn -0.2063 0.4506 0.8686 +vn 0.0000 0.5055 0.8628 +vn 0.2063 0.4506 0.8686 +vn 0.3573 0.3004 0.8844 +vn 0.4101 0.2039 0.8890 +vn 0.9593 0.2425 -0.1449 +vn 0.8600 0.4790 -0.1761 +vn 0.8594 0.4800 -0.1763 +vn 0.4966 0.8402 -0.2177 +vn 0.4960 0.8406 -0.2178 +vn 0.0000 0.9725 -0.2330 +vn -0.4960 0.8406 -0.2178 +vn -0.4966 0.8402 -0.2177 +vn -0.8594 0.4800 -0.1763 +vn -0.8600 0.4790 -0.1761 +vn -0.9593 0.2424 -0.1449 +vn 0.9598 -0.2440 0.1387 +vn -0.9600 -0.2433 0.1388 +vn 0.9591 0.2432 -0.1448 +vn -0.9591 0.2432 -0.1448 +s off +f 557/1030/93 558/1031/93 559/1032/93 +f 560/1033/94 561/1034/94 562/1035/94 +f 557/1030/95 563/1036/95 558/1031/95 +f 560/1033/96 564/1037/96 561/1034/96 +s 1 +f 564/1038/97 565/1039/98 566/1040/99 +f 566/1040/99 567/1041/100 568/1042/101 +f 568/1042/101 569/1043/102 570/1044/102 +f 571/1045/103 569/1046/102 572/1047/104 +f 573/1048/105 572/1049/104 574/1050/106 +f 559/1051/107 574/1052/106 557/1053/108 +f 561/1054/109 566/1040/110 575/1055/111 +f 568/1042/112 575/1056/111 566/1040/110 +f 570/1044/113 576/1057/114 568/1042/112 +f 570/1044/113 577/1058/115 578/1059/113 +f 571/1045/116 579/1060/117 577/1061/115 +f 558/1062/118 573/1048/119 559/1051/118 +f 580/1063/120 560/1064/121 562/1065/121 +f 567/1041/122 580/1066/120 581/1067/122 +f 569/1043/123 581/1068/122 582/1069/123 +f 572/1047/124 582/1070/123 583/1071/124 +f 574/1050/125 583/1072/124 584/1073/125 +f 557/1074/126 584/1075/125 563/1076/126 +f 558/1077/127 584/1078/128 579/1079/129 +f 579/1079/129 583/1080/130 577/1081/131 +f 577/1081/131 582/1082/132 578/1083/132 +f 582/1084/132 576/1085/133 578/1083/132 +f 581/1086/134 575/1087/135 576/1085/133 +f 580/1088/136 561/1089/137 575/1087/135 +f 564/1038/97 560/1090/138 565/1039/98 +f 566/1040/99 565/1091/98 567/1041/100 +f 568/1042/101 567/1092/100 569/1043/102 +f 571/1045/103 570/1044/102 569/1046/102 +f 573/1048/105 571/1045/103 572/1049/104 +f 559/1051/139 573/1048/105 574/1052/106 +f 561/1054/109 564/1038/109 566/1040/110 +f 568/1042/112 576/1093/114 575/1056/111 +f 570/1044/113 578/1094/113 576/1057/114 +f 570/1044/113 571/1045/116 577/1058/115 +f 571/1045/116 573/1048/119 579/1060/117 +f 558/1062/118 579/1095/117 573/1048/119 +f 580/1063/120 565/1039/120 560/1064/121 +f 567/1041/122 565/1091/120 580/1066/120 +f 569/1043/123 567/1092/122 581/1068/122 +f 572/1047/124 569/1046/123 582/1070/123 +f 574/1050/125 572/1049/124 583/1072/124 +f 557/1074/126 574/1052/125 584/1075/125 +f 558/1077/127 563/1096/140 584/1078/128 +f 579/1079/129 584/1097/128 583/1080/130 +f 577/1081/131 583/1098/130 582/1082/132 +f 582/1084/132 581/1099/134 576/1085/133 +f 581/1086/134 580/1100/136 575/1087/135 +f 580/1088/136 562/1101/141 561/1089/137 +o Rifle +v -0.250000 0.603553 28.875000 +v 0.187500 0.452665 28.875000 +v 0.250000 0.603553 28.875000 +v -0.250000 -0.603553 28.875000 +v -0.452665 -0.187500 28.875000 +v -0.603553 -0.250000 28.875000 +v 0.250000 -0.603553 28.875000 +v -0.187500 -0.452665 28.875000 +v 0.603553 -0.250000 28.875000 +v 0.187500 -0.452665 28.875000 +v 0.452665 0.187500 28.875000 +v 0.452665 -0.187500 28.875000 +v 0.603553 0.250000 28.875000 +v -0.603553 0.250000 28.875000 +v -0.452665 0.187500 28.875000 +v -0.187500 0.452665 28.875000 +v -0.312500 1.254442 25.750000 +v -0.312500 1.254442 25.250000 +v -0.312500 1.129442 25.250000 +v 0.312500 1.254442 25.250000 +v 0.187500 1.254442 25.750000 +v 0.312500 1.254442 25.750000 +v -0.187500 1.254442 25.250000 +v 0.312500 0.754442 25.000000 +v 0.312500 -0.754442 25.000000 +v -0.312500 -0.754442 25.000000 +v 0.000000 1.129442 25.250000 +v 0.187500 1.254442 25.250000 +v -0.187500 1.254442 25.750000 +v 0.000000 1.129442 25.750000 +v -0.062500 1.129440 25.687500 +v -0.062500 1.254440 25.437500 +v -0.062500 1.129440 25.312500 +v 0.062500 1.254440 25.437500 +v 0.062500 1.129440 25.312500 +v 0.062500 1.129440 25.687500 +v 0.062500 1.254440 25.687500 +v 0.312500 1.129442 25.250000 +v 0.754441 -0.437500 16.250000 +v 0.312500 -1.256835 16.250000 +v -0.312500 -1.256835 16.250000 +v 0.312500 0.754441 16.625000 +v -0.312500 0.754441 16.625000 +v -0.754442 0.312500 16.625000 +v 0.312500 0.754442 25.750000 +v -0.312501 -1.728554 16.250000 +v 0.312500 -1.728554 16.500000 +v -0.312501 -1.728554 16.500000 +v 0.312500 -1.728554 16.250000 +v 0.312500 -1.256835 16.625000 +v 0.250120 -0.603553 1.375000 +v 0.603553 -0.791053 1.375000 +v 0.603553 -0.249999 1.375000 +v -0.250121 -0.603553 1.375000 +v -0.603554 -0.249999 1.375000 +v -0.603554 -0.791053 1.375000 +v 0.250000 0.603554 1.375000 +v 0.000000 0.853704 1.375000 +v -0.250000 0.603554 1.375000 +v 0.724444 0.250001 0.875000 +v 0.724444 -2.250000 -1.112240 +v 0.724444 0.250000 -1.375000 +v -0.724444 0.250001 0.875000 +v -0.724444 -2.250000 -1.112240 +v -0.724444 -2.249999 0.875000 +v -0.724444 0.250000 -5.625000 +v -0.724444 -2.250000 -7.375000 +v -0.724444 -2.250000 -5.345110 +v 0.724444 0.250000 -5.625000 +v 0.724444 -2.250000 -7.375000 +v 0.724444 0.250000 -7.375000 +v 2.091291 -0.757001 -5.512260 +v 2.091291 -3.156821 -5.243586 +v 0.000000 -4.356733 -5.109249 +v -1.673032 -2.438855 -1.092390 +v 1.673033 -2.438854 -1.092390 +v 0.000000 0.443049 -1.395290 +v 0.989610 -0.662817 -0.526995 +v 0.724445 -0.399105 -0.554712 +v 0.724445 -1.647005 -0.423552 +v -1.086666 -1.023055 -0.489132 +v -0.989609 -1.383293 -0.451269 +v -0.724444 -1.647005 -0.423552 +v 0.797917 -0.910582 -5.805677 +v 0.797917 -0.877917 -5.494890 +v 0.797917 -2.029418 -5.688082 +v -0.797916 -1.528797 -6.306297 +v -0.797916 -1.907145 -6.100872 +v -0.797916 -2.029418 -5.688082 +v 0.362222 0.877387 -7.375000 +v -0.627386 0.612222 -7.375000 +v -0.249999 2.500002 -11.843750 +v -0.124999 2.312502 -11.843750 +v -0.062499 2.375002 -11.843750 +v 0.250000 0.875002 -11.906250 +v 0.250002 2.500002 -11.843750 +v 0.250000 0.875002 -11.843750 +v -0.250000 0.875002 -11.843750 +v 0.250002 2.500002 -11.906250 +v 0.125001 2.312502 -11.906250 +v 0.062502 2.375002 -11.906250 +v -0.249999 2.500002 -11.906250 +v -0.250000 0.875002 -11.906250 +v 0.062502 2.375002 -11.843750 +v -0.124999 2.312502 -11.906250 +v -0.125000 0.875001 -11.843750 +v -0.125000 0.875001 -11.906250 +v -0.062499 2.375002 -11.906250 +v 0.125001 2.312502 -11.843750 +v 0.125000 0.875002 -11.843750 +v 0.125000 0.875002 -11.906250 +v -0.125000 1.250002 -11.968750 +v -0.187500 1.250002 -11.906250 +v -0.125000 1.250002 -11.906250 +v 0.125000 1.250002 -11.968750 +v 0.000000 1.125002 -11.906250 +v 0.125000 1.250002 -11.906250 +v 0.187500 1.250002 -11.906250 +v -0.375000 1.062502 -11.968750 +v 0.187500 1.062502 -11.906250 +v -0.187500 1.062502 -11.906250 +v -0.375000 1.250002 -11.781250 +v -0.375000 1.250002 -11.968750 +v 0.375000 1.250002 -11.968750 +v 0.375000 1.062502 -11.781250 +v 0.375000 1.062502 -11.968750 +v 0.187500 1.250001 -11.781250 +v 0.187500 1.062502 -11.781250 +v -0.375000 1.062502 -11.781250 +v -0.187500 1.250002 -11.781250 +v -0.187500 1.062501 -11.781250 +v 0.375000 1.250002 -11.781250 +v 0.000000 1.125002 -11.968750 +v 0.375000 0.000002 -12.125000 +v 0.250000 0.875002 -12.000000 +v 0.375000 0.875001 -12.000000 +v 0.375000 0.875001 -11.750000 +v 0.375000 0.000002 -10.250000 +v 0.250000 0.625002 -10.375000 +v 0.250000 0.000002 -10.250000 +v 0.250000 0.698225 -11.676777 +v 0.250000 0.000002 -12.125000 +v 0.250000 0.625002 -11.500000 +v 0.375000 0.625002 -10.375000 +v 0.375000 0.625002 -11.500000 +v 0.375000 0.698225 -11.676777 +v -0.375000 0.000002 -12.125000 +v -0.250000 0.875002 -12.000000 +v -0.250000 0.000002 -12.125000 +v -0.375000 0.875001 -12.000000 +v -0.250000 0.875002 -11.750000 +v -0.250000 0.000002 -10.250000 +v -0.375000 0.625002 -10.375000 +v -0.375000 0.000002 -10.250000 +v -0.375000 0.698225 -11.676777 +v -0.375000 0.625002 -11.500000 +v -0.250000 0.625002 -10.375000 +v -0.250000 0.625002 -11.500000 +v -0.250000 0.698225 -11.676777 +v 0.250001 -2.828398 -11.714233 +v 0.250001 -2.758817 -12.340927 +v 0.250000 -2.499998 -11.375000 +v 0.250000 -3.116043 -9.912266 +v 0.250000 -3.478265 -10.384323 +v 0.250000 -2.990160 -11.110531 +v 0.250000 -3.900858 -10.271091 +v 0.250000 -3.478265 -10.009323 +v 0.250000 -3.840487 -9.912266 +v 0.250000 -4.117364 -10.146091 +v 0.250000 -4.105652 -9.647102 +v 0.250001 -4.230652 -9.772102 +v 0.250001 -4.230652 -7.772102 +v 0.250000 -4.105652 -7.772102 +v 0.250000 -4.078906 -7.359745 +v 0.250000 -3.970653 -7.422245 +v 0.250000 -3.763735 -7.085442 +v 0.250000 -3.683386 -7.181198 +v 0.250000 -3.228038 -7.085442 +v 0.250000 -3.308386 -7.181198 +v 0.250000 -2.940555 -7.265007 +v 0.250000 -2.989361 -7.378296 +v 0.250000 -2.874999 -7.375000 +v 0.250001 -2.499999 -7.375000 +v 0.250000 -2.874999 -7.600048 +v 0.250000 -2.874998 -9.625000 +v 0.250001 -2.954977 -12.680687 +v 0.250001 -3.022512 -12.438679 +v -0.250000 -3.116043 -9.912266 +v -0.250000 -3.478265 -10.384300 +v -0.250000 -3.478265 -10.009323 +v -0.250000 -2.758817 -12.340927 +v -0.250000 -2.954977 -12.680687 +v -0.250000 -3.022512 -12.438679 +v -0.250000 -3.900858 -10.271091 +v -0.250000 -3.840487 -9.912266 +v -0.250000 -4.117364 -10.146091 +v -0.250000 -4.105652 -9.647102 +v -0.250000 -4.230652 -9.772102 +v -0.249999 -4.230652 -7.772102 +v -0.250000 -4.105652 -7.772102 +v -0.249999 -4.078906 -7.359745 +v -0.250000 -3.970653 -7.422245 +v -0.250000 -3.763735 -7.085442 +v -0.250000 -3.683386 -7.181198 +v -0.249999 -3.228038 -7.085442 +v -0.250000 -3.308386 -7.181198 +v -0.250000 -2.940555 -7.265007 +v -0.250000 -2.989361 -7.378296 +v -0.250000 -2.874999 -7.375000 +v -0.250000 -2.874999 -7.600048 +v -0.250000 -2.499999 -7.375000 +v -0.250000 -2.874998 -9.625000 +v -0.250000 -2.499998 -11.375000 +v 0.125000 -2.999998 -9.187500 +v 0.125000 -3.374998 -9.125000 +v 0.125000 -3.374998 -9.250000 +v 0.125000 -3.687498 -9.187500 +v 0.125000 -3.687498 -9.062500 +v 0.125000 -3.937498 -9.000000 +v -0.125000 -2.999998 -9.187500 +v -0.125000 -3.374998 -9.125000 +v -0.125000 -2.999998 -9.062500 +v -0.125000 -3.687498 -9.187500 +v -0.125000 -3.374998 -9.250000 +v -0.125000 -3.937498 -9.000000 +v -0.125000 -3.687498 -9.062500 +v 0.125000 -2.874998 -9.375000 +v -0.125000 -3.937498 -8.875000 +v 0.125000 -3.937498 -8.875000 +v -0.125000 -2.874998 -9.000000 +v -0.125000 -2.874998 -9.375000 +v 0.125000 -2.874998 -9.000000 +v 0.125000 -2.999998 -9.062500 +v -0.754442 -0.312500 25.750000 +v -0.312500 -0.754442 25.750000 +v 0.312500 -0.754442 25.750000 +v 0.362222 0.877387 0.875000 +v -0.362222 0.877387 0.875000 +v 0.627387 -2.612221 0.875000 +v 0.724444 -2.249999 0.875000 +v -0.362222 -2.877386 0.875000 +v -0.250000 -2.828398 -11.714233 +v -0.250000 -2.990160 -11.110531 +v -0.724444 0.250000 -7.375000 +v 0.000000 -2.974444 -7.375000 +v -0.627386 -2.612221 -7.375000 +v -0.312500 0.754442 25.000000 +v -0.312500 0.754442 25.750000 +v -0.754442 -0.312500 25.000000 +v -0.754442 0.312500 25.000000 +v 0.754442 0.312500 25.000000 +v 0.754442 -0.312500 25.000000 +v 0.408300 -0.930195 25.000000 +v 0.288712 -1.218907 25.000000 +v -0.288713 -1.218907 25.000000 +v -0.408301 -0.930195 25.000000 +v 0.000000 -1.338495 25.000000 +v -0.062500 1.254440 25.687500 +v -0.754442 -0.437500 16.250000 +v -0.754442 0.312500 16.250000 +v -0.312500 0.754441 16.250000 +v 0.312500 0.754441 16.250000 +v 0.754441 0.312500 16.250000 +v -0.754442 -0.437501 16.625000 +v 0.754441 -0.437500 16.625000 +v -0.312500 -1.256835 16.625000 +v 0.754441 0.312500 16.625000 +v 0.603553 0.250001 1.375000 +v 0.522822 0.551852 1.375000 +v 0.301852 0.772823 1.375000 +v -0.301852 0.772823 1.375000 +v -0.522823 0.551853 1.375000 +v -0.603554 0.250001 1.375000 +v -0.724444 0.250000 -1.375000 +v 0.724444 -2.250000 -5.345110 +v -2.091290 -0.757001 -5.512260 +v -1.207407 0.121395 -5.610601 +v 0.000000 0.442909 -5.646597 +v 1.207408 0.121394 -5.610601 +v 2.414815 -1.956912 -5.377924 +v 1.207407 -4.035218 -5.145245 +v -1.207407 -4.035218 -5.145245 +v -2.091290 -3.156821 -5.243586 +v -2.414814 -1.956912 -5.377924 +v -0.965925 0.185647 -1.368237 +v -1.673032 -0.517586 -1.294323 +v -1.931851 -1.478220 -1.193358 +v -0.965925 -3.142087 -1.018477 +v 0.000000 -3.399489 -0.991423 +v 0.965926 -3.142087 -1.018477 +v 1.931852 -1.478220 -1.193358 +v 1.673033 -0.517586 -1.294323 +v 0.965926 0.185647 -1.368237 +v 0.989610 -1.383293 -0.451269 +v 1.086667 -1.023055 -0.489132 +v -0.724444 -0.399105 -0.554712 +v -0.989609 -0.662817 -0.526995 +v 0.797917 -1.996754 -5.377295 +v 0.797917 -1.907145 -6.100872 +v 0.797917 -1.528797 -6.306297 +v 0.797917 -1.116008 -6.184023 +v -0.797916 -1.996753 -5.377295 +v -0.797916 -0.877916 -5.494890 +v -0.797916 -0.910581 -5.805677 +v -0.797916 -1.116007 -6.184023 +v -0.362222 0.877387 -7.375000 +v 0.000000 0.974444 -7.375000 +v 0.627387 0.612222 -7.375000 +v 0.250000 0.875002 -11.750000 +v -0.375000 0.875001 -11.750000 +v -0.408301 -0.930195 25.750000 +v -0.288713 -1.218907 25.750000 +v 0.000000 -1.338495 25.750000 +v 0.288712 -1.218907 25.750000 +v 0.408300 -0.930195 25.750000 +v 0.754442 -0.312500 25.750000 +v 0.754442 0.312500 25.750000 +v -0.754442 0.312500 25.750000 +v 0.000000 0.974445 0.875000 +v -0.627387 0.612222 0.875000 +v 0.627386 0.612222 0.875000 +v -0.627387 -2.612221 0.875000 +v 0.000000 -2.974443 0.875000 +v 0.362222 -2.877387 0.875000 +v -0.362222 -2.877387 -7.375000 +v 0.627387 -2.612221 -7.375000 +v 0.362222 -2.877387 -7.375000 +v 0.603553 0.250000 25.750000 +v 0.250000 0.603553 25.750000 +v 0.603553 -0.250000 25.750000 +v 0.250000 -0.603553 25.750000 +v -0.250000 -0.603553 25.750000 +v -0.603553 -0.250000 25.750000 +v -0.603553 0.250000 25.750000 +v -0.250000 0.603553 25.750000 +v -0.187500 -0.452665 25.750000 +v -0.452665 -0.187500 25.750000 +v -0.452665 0.187500 25.750000 +v -0.187500 0.452665 25.750000 +v 0.187500 0.452665 25.750000 +v 0.452665 0.187500 25.750000 +v 0.452665 -0.187500 25.750000 +v 0.187500 -0.452665 25.750000 +v 0.250000 -0.603553 25.000000 +v 0.603553 -0.250001 16.625000 +v 0.603553 -0.250000 25.000000 +v 0.603553 0.250000 25.000000 +v 0.250000 0.603553 16.625000 +v 0.250000 0.603553 25.000000 +v -0.250000 0.603553 25.000000 +v -0.603554 0.250000 16.625000 +v -0.603553 0.250000 25.000000 +v -0.250000 -0.603553 25.000000 +v -0.603554 -0.250000 16.625000 +v -0.250000 -0.603554 16.625000 +v 0.250000 -0.603554 16.625000 +v 0.603553 0.250000 16.625000 +v -0.250000 0.603553 16.625000 +v -0.603553 -0.250000 25.000000 +v -0.250241 -2.353553 0.875000 +v 0.250240 -2.353552 1.375000 +v -0.250243 -2.353552 1.375000 +v 0.250238 -0.603553 5.125000 +v 0.603551 -0.791053 5.125000 +v -0.603554 -2.166052 1.375000 +v -0.575003 -0.791053 5.125000 +v -0.250243 -0.603553 5.125000 +v 0.603551 -2.166052 5.125000 +v 0.603553 -2.166052 1.375000 +v -0.404007 -0.728554 16.125000 +v -0.187500 -0.603554 16.250000 +v 0.404006 -0.728554 16.125000 +v 0.187500 -0.603554 16.250000 +v -0.250243 -2.353552 5.125000 +v -0.187500 -1.728554 16.250000 +v -0.575003 -2.166052 5.125000 +v -0.404007 -1.603554 16.125000 +v 0.250238 -2.353552 5.125000 +v 0.187500 -1.728554 16.250000 +v 0.404006 -1.603554 16.125000 +v -0.250000 0.603553 16.250000 +v -0.603554 0.250000 16.250000 +v 0.603553 -0.250000 16.250000 +v 0.603553 0.250000 16.250000 +v -0.603554 -0.250000 16.250000 +v 0.250000 0.603553 16.250000 +v 0.000000 -0.603554 25.000000 +v 0.230969 -0.699225 16.625000 +v 0.000000 -0.603554 16.625000 +v 0.326640 -0.930195 25.000000 +v 0.230969 -1.161165 16.625000 +v 0.326640 -0.930195 16.625000 +v 0.000000 -1.256835 25.000000 +v -0.230970 -1.161165 16.625000 +v 0.000000 -1.256835 16.625000 +v -0.326641 -0.930195 25.000000 +v -0.230970 -0.699225 16.625000 +v -0.326641 -0.930195 16.625000 +v 0.230969 -0.699225 25.000000 +v 0.230969 -1.161165 25.000000 +v -0.230970 -1.161165 25.000000 +v -0.230970 -0.699225 25.000000 +v 0.250120 -0.603555 16.250000 +v -0.250121 -0.603554 16.250000 +v 0.301852 0.772823 0.875000 +v -0.603554 -2.166052 0.875000 +v 0.000000 0.853704 0.875000 +v -0.301852 0.772823 0.875000 +v 0.522822 0.551852 0.875000 +v -0.522823 0.551853 0.875000 +v -0.603554 0.250001 0.875000 +v 0.603553 0.250001 0.875000 +v 0.603553 -2.166052 0.875000 +v 0.000001 -2.974444 -1.036097 +v 0.362222 -2.877387 -1.046301 +v 0.627387 -2.612221 -1.074171 +v -0.627386 -2.612222 -1.074171 +v -0.362222 -2.877387 -1.046301 +v 0.362222 -2.877387 -5.274868 +v -0.627386 -2.612221 -5.304556 +v -0.362222 -2.877387 -5.274868 +v 0.627387 -2.612221 -5.304556 +v 0.000000 -2.974444 -5.264000 +v 0.989610 -0.741213 -1.272886 +v 1.086667 -1.101451 -1.235023 +v 0.989610 -1.461689 -1.197161 +v 0.724445 -1.725402 -1.169443 +v 0.724445 -0.477501 -1.300604 +v -0.989609 -0.741213 -1.272886 +v -0.724444 -0.477501 -1.300604 +v -0.989609 -1.461689 -1.197161 +v -0.724444 -1.725401 -1.169443 +v -1.086666 -1.101451 -1.235023 +v 0.724444 -0.810009 -5.816248 +v 0.724444 -0.777343 -5.505461 +v 0.724444 -2.097327 -5.366724 +v 0.724444 -2.129992 -5.677511 +v 0.724444 -1.985734 -6.164513 +v 0.724444 -1.052368 -6.262613 +v 0.724444 -1.539368 -6.406870 +v -0.724443 -2.097327 -5.366724 +v -0.724443 -2.129992 -5.677511 +v -0.724443 -0.810009 -5.816248 +v -0.724443 -1.052367 -6.262613 +v -0.724443 -1.985733 -6.164513 +v -0.724443 -1.539368 -6.406870 +v -0.375000 -2.499998 -11.375000 +v 0.375000 -2.499999 -7.375000 +v -0.375001 -2.499999 -7.375000 +v -0.375000 -1.792115 -27.624638 +v 0.375000 -0.733765 -17.555103 +v 0.375000 -1.792115 -27.624638 +v -0.375000 -5.103412 -16.649258 +v 0.375000 -5.588698 -14.838146 +v -0.375000 -5.588697 -14.838146 +v -0.375000 -7.594545 -26.979065 +v 0.375000 -7.219544 -27.628586 +v 0.375000 -7.594545 -26.979065 +v -0.375000 -5.103412 -17.682030 +v 0.375000 -5.103411 -16.649258 +v -0.375000 -7.219544 -27.628601 +v 0.375000 -5.140982 -28.070396 +v 0.375000 -5.103411 -17.682030 +v 0.375000 -3.368846 -28.017761 +v -0.375000 -3.368846 -28.017761 +v -0.375000 -5.140982 -28.070400 +v 0.375000 -0.513028 -14.034538 +v -0.375000 -1.588484 -15.570450 +v -0.375000 -0.513028 -14.034538 +v -0.375000 -3.446317 -13.531712 +v 0.375000 -2.758817 -12.340927 +v -0.375000 -2.758817 -12.340927 +v 0.375000 -1.588484 -15.570450 +v -0.375000 -1.588484 -15.820450 +v -0.375001 -4.418590 -14.503983 +v 0.374999 -3.446317 -13.531712 +v 0.375000 -2.499998 -11.375000 +v 0.374999 -4.418590 -14.503983 +v -0.375000 -0.733765 -17.555103 +v 0.375000 -1.588484 -15.820450 +v -0.375000 0.000002 -12.625000 +v 0.375000 0.000002 -12.625000 +v -0.375000 0.000001 -7.375000 +v -0.625000 -0.983720 -17.805099 +v -0.625000 -2.508772 -12.590923 +v -0.625000 -7.344500 -26.979061 +v -0.625000 -4.168545 -14.753979 +v -0.625000 -6.969501 -27.378582 +v -0.625000 -5.338654 -14.838142 +v -0.625000 -2.042071 -27.374634 +v -0.625000 -0.762984 -13.784534 +v -0.625000 -0.249954 -12.374996 +v -0.625000 -5.140938 -27.820393 +v -0.625000 -1.838439 -15.320446 +v -0.625000 -4.853367 -16.649254 +v -0.625000 -1.838439 -16.070446 +v -0.625000 -2.249954 -7.374996 +v -0.625000 -4.853367 -17.932026 +v -0.625000 -2.249953 -11.624996 +v 0.625000 -0.249955 -7.374996 +v 0.625000 -2.249953 -11.624996 +v 0.625000 -0.249954 -12.374996 +v 0.375000 0.000001 -7.375000 +v 0.625000 -0.762984 -13.784534 +v 0.625000 -1.838439 -15.320446 +v 0.625000 -1.838439 -16.070446 +v 0.625000 -0.983720 -17.805099 +v 0.625000 -2.042071 -27.374634 +v 0.625000 -3.368801 -27.767757 +v 0.625000 -5.140937 -27.820393 +v 0.625000 -6.969500 -27.378582 +v 0.625000 -7.344500 -26.979061 +v 0.625000 -4.853367 -17.932026 +v 0.625000 -4.853367 -16.649254 +v 0.625000 -5.338654 -14.838142 +v 0.625000 -4.168545 -14.753979 +v 0.625000 -2.508773 -12.590923 +v 0.625000 -2.249954 -7.374996 +v -0.625000 -0.249955 -7.374996 +v -0.625000 -3.196272 -13.781708 +v -0.625000 -3.368801 -27.767757 +v 0.625000 -3.196272 -13.781708 +v 0.250000 0.000002 -12.375000 +v 0.250000 0.500000 -7.375000 +v 0.250000 0.000000 -7.375000 +v -0.250000 0.500002 -12.375000 +v -0.250000 0.000000 -7.375000 +v -0.250000 0.500000 -7.375000 +v 0.173228 0.673228 -7.375000 +v 0.000000 0.744982 -12.375000 +v 0.000000 0.744981 -7.375000 +v -0.173227 0.673229 -12.375000 +v -0.173227 0.673228 -7.375000 +v 0.173228 0.673229 -12.375000 +v 0.250000 0.500001 -12.375000 +v 0.173227 0.500002 -12.548225 +v 0.122492 0.673229 -12.497490 +v 0.000000 0.673229 -12.548229 +v 0.000000 0.500002 -12.619980 +v -0.122491 0.673229 -12.497490 +v -0.173226 0.500002 -12.548225 +v -0.173226 0.000002 -12.548225 +v -0.250000 0.000002 -12.375000 +v 0.000000 0.000002 -12.619980 +v 0.173227 0.000002 -12.548225 +v 0.250000 0.856696 -11.830807 +v -0.250000 0.812502 -11.812500 +v 0.250000 0.812501 -11.812500 +v 0.250000 0.750001 -11.875000 +v -0.250000 0.768307 -11.919193 +v 0.250000 0.768307 -11.919193 +v -0.250000 0.768307 -11.830807 +v 0.250000 0.768307 -11.830807 +v 0.250000 0.856696 -11.919193 +v -0.250000 0.812502 -11.937500 +v -0.250000 0.856696 -11.919193 +v 0.250000 0.812501 -11.937500 +v -0.250000 0.750001 -11.875000 +v -0.250000 0.856696 -11.830807 +v 0.250240 -2.353552 0.875000 +v -0.724443 -0.777343 -5.505461 +vt 0.959514 0.921933 +vt 0.955466 0.910781 +vt 0.959514 0.910781 +vt 0.959514 0.955390 +vt 0.955466 0.944238 +vt 0.959514 0.944238 +vt 0.959514 0.966543 +vt 0.955466 0.955390 +vt 0.959514 0.977695 +vt 0.955466 0.966543 +vt 0.955466 0.988848 +vt 0.955466 0.977695 +vt 0.959514 0.988848 +vt 0.955466 1.000000 +vt 0.959514 0.933086 +vt 0.955466 0.933086 +vt 0.955466 0.921933 +vt 0.809717 0.802974 +vt 0.825911 0.802974 +vt 0.825911 0.806691 +vt 0.874494 0.828996 +vt 0.858300 0.832714 +vt 0.858300 0.828996 +vt 0.858300 0.851301 +vt 0.874494 0.847584 +vt 0.874494 0.851301 +vt 0.844130 0.881041 +vt 0.844130 0.836431 +vt 0.823887 0.836431 +vt 0.874494 0.840149 +vt 0.874494 0.832714 +vt 0.858300 0.847584 +vt 0.858300 0.840149 +vt 0.874494 0.825279 +vt 0.870445 0.814126 +vt 0.874494 0.814126 +vt 0.870445 0.810409 +vt 0.874494 0.810409 +vt 0.874494 0.799257 +vt 0.870445 0.828996 +vt 0.874494 0.828996 +vt 0.870445 0.817844 +vt 0.866397 0.825279 +vt 0.866397 0.817844 +vt 0.773279 0.806691 +vt 0.773279 0.802974 +vt 0.789474 0.802974 +vt 0.955466 0.875465 +vt 0.941296 0.851301 +vt 0.921053 0.851301 +vt 0.892712 0.910781 +vt 0.872470 0.910781 +vt 0.858300 0.897770 +vt 0.789474 0.817844 +vt 0.793522 0.802974 +vt 0.799595 0.806691 +vt 0.983806 0.881041 +vt 0.971660 0.899628 +vt 0.971660 0.881041 +vt 1.000000 0.881041 +vt 0.983806 0.899628 +vt 0.955466 0.899628 +vt 0.591093 0.795539 +vt 0.595142 0.806691 +vt 0.578947 0.806691 +vt 0.736842 0.795539 +vt 0.748988 0.806691 +vt 0.732794 0.806691 +vt 0.518153 0.799263 +vt 0.510121 0.806642 +vt 0.502090 0.799263 +vt 0.000000 0.672862 +vt 0.064777 0.598513 +vt 0.072874 0.672862 +vt 0.000000 0.457249 +vt 0.064777 0.531599 +vt 0.000000 0.531599 +vt 0.129555 0.672862 +vt 0.072874 0.598513 +vt 0.137652 0.598513 +vt 0.129555 0.457249 +vt 0.072874 0.531599 +vt 0.072874 0.457249 +vt 0.287111 0.613660 +vt 0.287111 0.542474 +vt 0.354251 0.506881 +vt 0.316093 0.419142 +vt 0.424798 0.419142 +vt 0.370445 0.505576 +vt 0.939852 0.768664 +vt 0.949169 0.776952 +vt 0.905082 0.776952 +vt 0.975708 0.765799 +vt 0.988435 0.768664 +vt 0.997752 0.776952 +vt 0.943320 0.756505 +vt 0.943320 0.765799 +vt 0.906883 0.756505 +vt 0.969636 0.739777 +vt 0.982516 0.744678 +vt 0.987854 0.756505 +vt 0.306899 0.661712 +vt 0.327935 0.650558 +vt 0.315789 0.692176 +vt 0.716599 0.743494 +vt 0.724696 0.732342 +vt 0.728745 0.736059 +vt 0.680162 0.646840 +vt 0.676113 0.743494 +vt 0.676113 0.646840 +vt 0.716599 0.646840 +vt 0.680162 0.743494 +vt 0.688259 0.732342 +vt 0.692308 0.736059 +vt 0.712551 0.743494 +vt 0.712551 0.646840 +vt 0.736842 0.736059 +vt 0.765182 0.747212 +vt 0.672065 0.750929 +vt 0.672065 0.747212 +vt 0.777328 0.750929 +vt 0.769231 0.747212 +vt 0.777328 0.747212 +vt 0.704453 0.732342 +vt 0.704453 0.646840 +vt 0.748988 0.646840 +vt 0.740891 0.732342 +vt 0.740891 0.646840 +vt 0.781377 0.747212 +vt 0.769231 0.750929 +vt 0.748988 0.743494 +vt 0.712551 0.747212 +vt 0.680162 0.747212 +vt 0.781377 0.750929 +vt 0.874494 0.747212 +vt 0.874494 0.750929 +vt 0.700405 0.736059 +vt 0.728745 0.635688 +vt 0.736842 0.639405 +vt 0.728745 0.639405 +vt 0.720648 0.635688 +vt 0.724696 0.639405 +vt 0.720648 0.639405 +vt 0.712551 0.639405 +vt 0.748988 0.624535 +vt 0.712551 0.620818 +vt 0.736842 0.620818 +vt 0.761134 0.635688 +vt 0.748988 0.635688 +vt 0.700405 0.635688 +vt 0.688259 0.624535 +vt 0.700405 0.624535 +vt 0.676113 0.635688 +vt 0.676113 0.624535 +vt 0.761134 0.624535 +vt 0.773279 0.635688 +vt 0.805668 0.624535 +vt 0.813765 0.635688 +vt 0.805668 0.635688 +vt 0.781377 0.635688 +vt 0.773279 0.624535 +vt 0.781377 0.624535 +vt 0.700405 0.646840 +vt 0.748988 0.646840 +vt 0.748988 0.613383 +vt 0.700405 0.613383 +vt 0.724696 0.628253 +vt 0.793522 0.628253 +vt 0.748988 0.721190 +vt 0.777328 0.717472 +vt 0.777328 0.721190 +vt 0.785425 0.721190 +vt 0.858300 0.721190 +vt 0.838057 0.717472 +vt 0.858300 0.717472 +vt 0.855926 0.726448 +vt 0.866397 0.721190 +vt 0.870445 0.747212 +vt 0.850201 0.728625 +vt 0.813769 0.728625 +vt 0.809717 0.747212 +vt 0.805664 0.728625 +vt 0.809717 0.747212 +vt 0.769232 0.728625 +vt 0.748988 0.747212 +vt 0.753036 0.721190 +vt 0.763507 0.726448 +vt 0.748988 0.717472 +vt 0.777328 0.721190 +vt 0.748988 0.721190 +vt 0.777328 0.717472 +vt 0.785425 0.721190 +vt 0.858300 0.721190 +vt 0.838057 0.717472 +vt 0.858300 0.717472 +vt 0.763507 0.726448 +vt 0.753036 0.721190 +vt 0.748988 0.747212 +vt 0.769232 0.728625 +vt 0.805664 0.728625 +vt 0.809717 0.747212 +vt 0.813769 0.728625 +vt 0.809717 0.747212 +vt 0.850201 0.728625 +vt 0.870445 0.747212 +vt 0.866397 0.721190 +vt 0.855926 0.726448 +vt 0.773279 0.654275 +vt 0.757085 0.650558 +vt 0.773279 0.650558 +vt 0.595142 0.420074 +vt 0.574899 0.431227 +vt 0.607287 0.434944 +vt 0.635628 0.438662 +vt 0.643725 0.420074 +vt 0.615385 0.420074 +vt 0.659919 0.420074 +vt 0.643725 0.431227 +vt 0.659919 0.431227 +vt 0.668016 0.420074 +vt 0.668016 0.434944 +vt 0.680162 0.420074 +vt 0.676113 0.427509 +vt 0.744939 0.420074 +vt 0.684211 0.423792 +vt 0.744939 0.423792 +vt 0.761134 0.420074 +vt 0.761134 0.423792 +vt 0.773279 0.420074 +vt 0.773279 0.423792 +vt 0.789474 0.420074 +vt 0.777328 0.423792 +vt 0.785425 0.423792 +vt 0.801619 0.420074 +vt 0.789474 0.423792 +vt 0.801619 0.423792 +vt 0.805668 0.420074 +vt 0.659919 0.379182 +vt 0.659919 0.364312 +vt 0.651822 0.364312 +vt 0.587045 0.364312 +vt 0.530364 0.379182 +vt 0.805668 0.364312 +vt 0.817814 0.420074 +vt 0.817814 0.364312 +vt 0.562753 0.420074 +vt 0.570850 0.431227 +vt 0.570850 0.420074 +vt 0.635628 0.382900 +vt 0.643725 0.401487 +vt 0.643725 0.390335 +vt 0.570850 0.390335 +vt 0.562753 0.401487 +vt 0.570850 0.401487 +vt 0.659919 0.401487 +vt 0.659919 0.390335 +vt 0.668016 0.401487 +vt 0.668016 0.386617 +vt 0.680162 0.401487 +vt 0.676113 0.394052 +vt 0.684211 0.397770 +vt 0.744939 0.401487 +vt 0.744939 0.397770 +vt 0.761134 0.401487 +vt 0.761134 0.397770 +vt 0.773279 0.401487 +vt 0.773279 0.397770 +vt 0.777328 0.397770 +vt 0.789474 0.401487 +vt 0.785425 0.397770 +vt 0.789474 0.397770 +vt 0.801619 0.401487 +vt 0.801619 0.397770 +vt 0.805668 0.401487 +vt 0.805668 0.397770 +vt 0.659919 0.334572 +vt 0.651822 0.349442 +vt 0.659919 0.349442 +vt 0.587045 0.349442 +vt 0.817814 0.297398 +vt 0.805668 0.349442 +vt 0.817814 0.349442 +vt 0.417004 0.375465 +vt 0.429150 0.371747 +vt 0.429150 0.375465 +vt 0.441296 0.375465 +vt 0.441296 0.371747 +vt 0.453441 0.375465 +vt 0.417004 0.356877 +vt 0.429150 0.360595 +vt 0.417004 0.360595 +vt 0.441296 0.356877 +vt 0.429150 0.356877 +vt 0.453441 0.356877 +vt 0.441296 0.360595 +vt 0.493927 0.360595 +vt 0.502024 0.371747 +vt 0.493927 0.371747 +vt 0.453441 0.360595 +vt 0.457490 0.371747 +vt 0.453441 0.371747 +vt 0.412955 0.360595 +vt 0.412955 0.349442 +vt 0.412955 0.371747 +vt 0.417004 0.371747 +vt 0.761134 0.849442 +vt 0.775304 0.836431 +vt 0.795547 0.836431 +vt 0.306899 0.728623 +vt 0.306899 0.706321 +vt 0.327935 0.695167 +vt 0.421053 0.736786 +vt 0.408907 0.739777 +vt 0.429943 0.706321 +vt 0.327935 0.739777 +vt 0.408907 0.695167 +vt 0.574899 0.390335 +vt 0.595142 0.401487 +vt 0.607287 0.386617 +vt 0.615385 0.401487 +vt 0.327935 0.695167 +vt 0.408907 0.650558 +vt 0.408907 0.695167 +vt 0.433198 0.672862 +vt 0.421053 0.692176 +vt 0.959514 1.000000 +vt 0.834008 0.817844 +vt 0.809717 0.817844 +vt 0.809717 0.849442 +vt 0.809717 0.868030 +vt 0.823887 0.881041 +vt 0.858300 0.868030 +vt 0.858300 0.849442 +vt 0.846154 0.828996 +vt 0.842105 0.821561 +vt 0.825911 0.821561 +vt 0.821862 0.828996 +vt 0.834008 0.817844 +vt 0.870445 0.825279 +vt 0.870445 0.799257 +vt 0.765182 0.817844 +vt 0.906883 0.875465 +vt 0.906883 0.897770 +vt 0.921053 0.910781 +vt 0.941296 0.910781 +vt 0.955466 0.897770 +vt 0.858300 0.875465 +vt 0.906883 0.875465 +vt 0.872470 0.851301 +vt 0.892712 0.851301 +vt 0.906883 0.897770 +vt 0.805668 0.802974 +vt 1.000000 0.899628 +vt 0.955466 0.881041 +vt 0.529511 0.788833 +vt 0.526918 0.797738 +vt 0.519819 0.804256 +vt 0.500424 0.804256 +vt 0.493325 0.797738 +vt 0.490732 0.788833 +vt 0.000000 0.598513 +vt 0.072874 0.457249 +vt 0.072874 0.672862 +vt 0.137652 0.531599 +vt 0.421390 0.613660 +vt 0.393014 0.639715 +vt 0.354251 0.649253 +vt 0.315488 0.639715 +vt 0.276725 0.578067 +vt 0.315488 0.516418 +vt 0.393014 0.516418 +vt 0.421390 0.542474 +vt 0.431777 0.578067 +vt 0.339065 0.497862 +vt 0.316093 0.476769 +vt 0.307692 0.447955 +vt 0.339065 0.398048 +vt 0.370445 0.390335 +vt 0.401826 0.398048 +vt 0.433198 0.447955 +vt 0.424798 0.476769 +vt 0.401826 0.497862 +vt 0.914399 0.768664 +vt 0.927126 0.765799 +vt 0.953665 0.776952 +vt 0.962982 0.768664 +vt 0.906883 0.765799 +vt 0.912221 0.744678 +vt 0.925101 0.739777 +vt 0.937982 0.744678 +vt 0.987854 0.765799 +vt 0.951417 0.765799 +vt 0.951417 0.756505 +vt 0.956756 0.744678 +vt 0.306899 0.684013 +vt 0.303644 0.672862 +vt 0.315789 0.653549 +vt 0.724696 0.646840 +vt 0.688259 0.646840 +vt 0.765182 0.750929 +vt 0.724696 0.635688 +vt 0.688259 0.635688 +vt 0.813765 0.624535 +vt 0.712551 0.646840 +vt 0.736842 0.646840 +vt 0.736842 0.613383 +vt 0.712551 0.613383 +vt 0.789474 0.635688 +vt 0.797571 0.635688 +vt 0.748988 0.717472 +vt 0.785425 0.717472 +vt 0.838057 0.721190 +vt 0.858300 0.721190 +vt 0.761134 0.721190 +vt 0.785425 0.717472 +vt 0.838057 0.721190 +vt 0.761134 0.721190 +vt 0.858300 0.721190 +vt 0.757085 0.654275 +vt 0.805668 0.423792 +vt 0.805668 0.405204 +vt 0.530364 0.334572 +vt 0.805668 0.315985 +vt 0.502024 0.360595 +vt 0.457490 0.360595 +vt 0.412955 0.382900 +vt 0.773279 0.828996 +vt 0.777328 0.821561 +vt 0.785425 0.817844 +vt 0.793522 0.821561 +vt 0.797571 0.828996 +vt 0.809717 0.849442 +vt 0.775304 0.881041 +vt 0.809717 0.868030 +vt 0.795547 0.881041 +vt 0.761134 0.868030 +vt 0.303644 0.717472 +vt 0.315789 0.698158 +vt 0.315789 0.736786 +vt 0.421053 0.698158 +vt 0.433198 0.717472 +vt 0.429943 0.728623 +vt 0.429943 0.684013 +vt 0.421053 0.653549 +vt 0.429943 0.661712 +vt -0.000000 1.000000 +vt 0.101215 0.985130 +vt 0.101215 1.000000 +vt -0.000000 0.985130 +vt 0.101215 0.970260 +vt 0.000000 0.970260 +vt 0.101215 0.955390 +vt 0.000000 0.955390 +vt 0.101215 0.940520 +vt 0.000000 0.940520 +vt 0.101215 0.925651 +vt 0.000000 0.925651 +vt 0.101215 0.910781 +vt 0.000000 0.910781 +vt 0.101215 0.895911 +vt 0.000000 0.895911 +vt 0.101215 0.881041 +vt 0.854251 0.955390 +vt 0.854251 0.944238 +vt 0.854251 0.933086 +vt 0.854251 0.921933 +vt 0.854251 1.000000 +vt 0.854251 0.988848 +vt 0.854251 0.977695 +vt 0.854251 0.966543 +vt 0.854251 0.910781 +vt 0.874494 0.814126 +vt 0.898785 0.832714 +vt 0.874494 0.832714 +vt 0.874494 0.713755 +vt 0.898785 0.732342 +vt 0.874494 0.732342 +vt 0.874494 0.795539 +vt 0.898785 0.814126 +vt 0.874494 0.851301 +vt 0.898785 0.851301 +vt 0.874494 0.695167 +vt 0.898785 0.713755 +vt 0.898785 0.750929 +vt 0.874494 0.750929 +vt 0.874494 0.788104 +vt 0.898785 0.780669 +vt 0.898785 0.788104 +vt 0.834008 0.806691 +vt 0.844130 0.806691 +vt 0.838057 0.802974 +vt 0.854251 0.806691 +vt 0.850202 0.802974 +vt 0.854251 0.802974 +vt 0.101215 0.955390 +vt 0.372470 0.970260 +vt 0.101215 0.970260 +vt 0.101215 0.985130 +vt 0.372470 1.000000 +vt 0.101215 1.000000 +vt 0.101215 0.895911 +vt 0.372470 0.910781 +vt 0.101215 0.910781 +vt 0.101215 0.940520 +vt 0.372470 0.925651 +vt 0.372470 0.940520 +vt 0.372470 0.955390 +vt 0.372470 0.985130 +vt 0.101215 0.881041 +vt 0.372470 0.895911 +vt 0.101215 0.925651 +vt 0.983806 0.914498 +vt 0.971660 0.940520 +vt 0.971660 0.914498 +vt 0.983806 0.962825 +vt 0.971660 0.981413 +vt 0.971660 0.962825 +vt 0.983806 0.799257 +vt 0.971660 0.817844 +vt 0.971660 0.799257 +vt 0.983806 0.840149 +vt 0.971660 0.866171 +vt 0.971660 0.840149 +vt 0.983806 0.940520 +vt 0.983806 0.981413 +vt 0.971660 1.000000 +vt 0.983806 0.817844 +vt 0.672065 0.821561 +vt 0.655870 0.806691 +vt 0.672065 0.806691 +vt 0.000000 0.750929 +vt 0.121457 0.739777 +vt 0.121457 0.750929 +vt 0.000000 0.828996 +vt 0.121457 0.869888 +vt 0.000000 0.869888 +vt 0.000000 0.881041 +vt 0.121457 0.881041 +vt 0.121457 0.791822 +vt -0.000000 0.791822 +vt 0.481781 0.869888 +vt 0.481781 0.881041 +vt 0.481781 0.750929 +vt 0.481781 0.739777 +vt 0.121457 0.817844 +vt 0.481781 0.815985 +vt 0.121457 0.828996 +vt 0.477733 0.825279 +vt 0.121457 0.802974 +vt 0.481781 0.804833 +vt 0.477733 0.795539 +vt 0.481781 0.776952 +vt 0.481781 0.843866 +vt 0.489879 0.780669 +vt 0.489879 0.747212 +vt 0.489879 0.840149 +vt 0.372470 0.895911 +vt 0.854251 0.910781 +vt 0.372470 0.910781 +vt 0.372470 0.970260 +vt 0.854251 0.985130 +vt 0.372470 0.985130 +vt 0.854251 0.925651 +vt 0.372470 0.925651 +vt 0.372470 0.881041 +vt 0.854251 0.895911 +vt 0.372470 1.000000 +vt 0.854251 1.000000 +vt 0.489879 0.881041 +vt 0.761134 0.873606 +vt 0.761134 0.881041 +vt 0.489879 0.866171 +vt 0.761134 0.858736 +vt 0.761134 0.866171 +vt 0.489879 0.851301 +vt 0.761134 0.843866 +vt 0.761134 0.851301 +vt 0.489879 0.836431 +vt 0.761134 0.828996 +vt 0.761134 0.836431 +vt 0.489879 0.873606 +vt 0.489879 0.858736 +vt 0.489879 0.843866 +vt 0.489879 0.828996 +vt 0.761134 0.821561 +vt 0.898785 0.795539 +vt 0.874494 0.765799 +vt 0.898785 0.758364 +vt 0.898785 0.765799 +vt 0.874494 0.773234 +vt 0.898785 0.773234 +vt 0.874494 0.780669 +vt 0.874494 0.758364 +vt 0.983806 0.866171 +vt 0.372470 0.955390 +vt 0.854251 0.970260 +vt 0.854251 0.940520 +vt 0.372470 0.940520 +vt 0.854251 0.955390 +vt 0.550607 0.806691 +vt 0.538462 0.821561 +vt 0.538462 0.806691 +vt 0.684211 0.821561 +vt 0.526316 0.821561 +vt 0.526316 0.806691 +vt 0.514170 0.821561 +vt 0.514170 0.806691 +vt 0.562753 0.806691 +vt 0.550607 0.821561 +vt 0.502024 0.821561 +vt 0.502024 0.806691 +vt 0.489879 0.821561 +vt 0.489879 0.806691 +vt 0.562753 0.821561 +vt 0.765182 0.821561 +vt 0.643725 0.821561 +vt 0.643725 0.806691 +vt 0.000000 0.802974 +vt 0.000000 0.817844 +vt 0.000000 0.576208 +vt 0.064777 0.565056 +vt 0.064777 0.576208 +vt 0.000000 0.587361 +vt 0.064777 0.587361 +vt 0.064777 0.542751 +vt 0.000000 0.542751 +vt 0.064777 0.553903 +vt 0.000000 0.553903 +vt 0.267206 0.684015 +vt -0.000000 0.695167 +vt -0.000000 0.684015 +vt 0.000000 0.565056 +vt 0.267206 0.706320 +vt 0.000000 0.717472 +vt -0.000000 0.706320 +vt 0.267206 0.717472 +vt -0.000000 0.728625 +vt 0.267206 0.695167 +vt 0.210526 0.672862 +vt 0.267206 0.672862 +vt 0.072874 0.739777 +vt 0.267206 0.728625 +vt 0.210526 0.739777 +vt 0.137652 0.553903 +vt 0.072874 0.565056 +vt 0.072874 0.553903 +vt 0.137652 0.587361 +vt 0.072874 0.576208 +vt 0.137652 0.576208 +vt 0.137652 0.542751 +vt 0.072874 0.542751 +vt 0.137652 0.565056 +vt 0.072874 0.587361 +vt 0.137652 0.598513 +vt 0.275304 0.631970 +vt 0.137652 0.635688 +vt 0.275304 0.672862 +vt 0.137652 0.672862 +vt 0.137652 0.486989 +vt 0.275304 0.449814 +vt 0.275304 0.483271 +vt 0.137652 0.524164 +vt 0.275304 0.490706 +vt 0.275304 0.520446 +vt 0.137652 0.561338 +vt 0.275304 0.527881 +vt 0.275304 0.557621 +vt 0.275304 0.594796 +vt 0.914980 0.799257 +vt 0.927126 0.776952 +vt 0.927126 0.799257 +vt 0.939271 0.799257 +vt 0.951417 0.776952 +vt 0.951417 0.799257 +vt 0.902834 0.776952 +vt 0.902834 0.799257 +vt 0.939271 0.776952 +vt 0.963563 0.776952 +vt 0.951417 0.799257 +vt 0.951417 0.776952 +vt 1.000000 0.799257 +vt 0.987854 0.776952 +vt 1.000000 0.776952 +vt 0.975708 0.776952 +vt 0.963563 0.799257 +vt 0.987854 0.799257 +vt 0.947368 0.754647 +vt 0.947368 0.765799 +vt 0.902834 0.765799 +vt 0.906883 0.754647 +vt 0.902834 0.754647 +vt 0.906883 0.739777 +vt 0.902834 0.739777 +vt 0.906883 0.724907 +vt 0.947368 0.739777 +vt 0.943320 0.724907 +vt 0.947368 0.724907 +vt 0.943320 0.754647 +vt 0.991903 0.765799 +vt 0.987854 0.754647 +vt 0.991903 0.754647 +vt 0.947368 0.754647 +vt 0.951417 0.754647 +vt 0.947368 0.739777 +vt 0.951417 0.739777 +vt 0.951417 0.724907 +vt 0.991903 0.739777 +vt 0.987854 0.724907 +vt 0.991903 0.724907 +vt 0.566802 0.037175 +vt 0.692308 0.014870 +vt 0.692308 0.037175 +vt 0.668016 0.089219 +vt 0.340081 0.066914 +vt 0.668016 0.066914 +vt 0.344130 0.037175 +vt 0.404858 0.014870 +vt 0.404858 0.037175 +vt 0.202429 0.141264 +vt 0.178138 0.118959 +vt 0.202429 0.118959 +vt 0.311741 0.037175 +vt 0.344130 0.014870 +vt 0.178138 0.141264 +vt 0.109312 0.118959 +vt -0.000000 0.037175 +vt 0.311741 0.014870 +vt 0.000000 0.141264 +vt 0.052632 0.118959 +vt 0.052632 0.141264 +vt 0.109312 0.141264 +vt 0.210526 0.066914 +vt 0.271255 0.089219 +vt 0.210526 0.089219 +vt 0.489879 0.037175 +vt 0.534413 0.014870 +vt 0.534413 0.037175 +vt 0.271255 0.066914 +vt 0.279352 0.089219 +vt 0.445344 0.037175 +vt 0.489879 0.014870 +vt 0.566802 0.014870 +vt 0.445344 0.014870 +vt 0.340081 0.089219 +vt 0.279352 0.066914 +vt 0.161943 0.089219 +vt 0.161943 0.066914 +vt -0.000000 0.089219 +vt 0.340081 0.104089 +vt 0.534413 0.052045 +vt 0.198381 0.152416 +vt 0.445344 0.052045 +vt 0.178138 0.156134 +vt 0.404858 0.048327 +vt 0.000000 0.156134 +vt 0.210526 0.104089 +vt 0.161943 0.104089 +vt 0.109312 0.152416 +vt 0.271255 0.104089 +vt 0.344130 0.048327 +vt 0.279352 0.104089 +vt 0.692308 0.048327 +vt 0.311741 0.052045 +vt 0.566802 0.052045 +vt 0.145749 0.297398 +vt 0.283401 0.237918 +vt 0.307692 0.297398 +vt -0.000000 0.066914 +vt 0.161943 0.052045 +vt 0.210526 0.052045 +vt 0.271255 0.052045 +vt 0.279352 0.052045 +vt 0.340081 0.052045 +vt 0.659919 0.052045 +vt 0.000000 0.104089 +vt 0.052632 0.107807 +vt 0.109312 0.107807 +vt 0.178138 0.104089 +vt 0.198381 0.107807 +vt -0.000000 0.014870 +vt 0.311741 0.000000 +vt 0.344130 0.003717 +vt 0.404858 0.003717 +vt 0.445344 0.000000 +vt 0.534413 0.000000 +vt 0.566802 0.000000 +vt 0.692308 0.003717 +vt 0.145749 0.297398 +vt 0.283401 0.237918 +vt 0.145749 0.237918 +vt 0.311741 0.230483 +vt 0.307692 0.297398 +vt 0.352227 0.282528 +vt 0.348178 0.211896 +vt 0.396761 0.252788 +vt 0.376518 0.185874 +vt 0.425101 0.252788 +vt 0.441296 0.159851 +vt 0.477733 0.159851 +vt 0.789474 0.245353 +vt 0.773279 0.089219 +vt 0.785425 0.100372 +vt 0.801619 0.152416 +vt 0.801619 0.204461 +vt 0.311741 0.230483 +vt 0.352227 0.282528 +vt 0.348178 0.211896 +vt 0.376518 0.182156 +vt 0.396761 0.252788 +vt 0.441296 0.159851 +vt 0.376518 0.144981 +vt 0.425101 0.252788 +vt 0.477733 0.159851 +vt 0.789474 0.245353 +vt 0.773279 0.089219 +vt 0.785425 0.100372 +vt 0.801619 0.152416 +vt 0.801619 0.204461 +vt 0.700405 0.788104 +vt 0.862348 0.773234 +vt 0.862348 0.788104 +vt 0.651822 0.773234 +vt 0.489879 0.788104 +vt 0.489879 0.773234 +vt 0.862348 0.762082 +vt 0.700405 0.750929 +vt 0.862348 0.750929 +vt 0.489879 0.750929 +vt 0.651822 0.762082 +vt 0.489879 0.762082 +vt 0.700405 0.762082 +vt 0.700405 0.773234 +vt 0.688259 0.773234 +vt 0.688259 0.762082 +vt 0.694332 0.750929 +vt 0.676113 0.762082 +vt 0.682186 0.750929 +vt 0.676113 0.773234 +vt 0.663968 0.762082 +vt 0.670040 0.750929 +vt 0.663968 0.773234 +vt 0.657895 0.750929 +vt 0.663968 0.788104 +vt 0.651822 0.788104 +vt 0.676113 0.788104 +vt 0.688259 0.788104 +vt 0.801619 0.717472 +vt 0.793522 0.721190 +vt 0.793522 0.717472 +vt 0.801619 0.721190 +vt 0.801619 0.717472 +vt 0.793522 0.721190 +vt 0.793522 0.717472 +vt 0.801619 0.721190 +vt 0.748988 0.657993 +vt 0.781377 0.661710 +vt 0.748988 0.661710 +vt 0.748988 0.669145 +vt 0.781377 0.672862 +vt 0.748988 0.672862 +vt 0.781377 0.665428 +vt 0.748988 0.665428 +vt 0.748988 0.680297 +vt 0.781377 0.676580 +vt 0.781377 0.680297 +vt 0.748988 0.676580 +vt 0.781377 0.669145 +vt 0.773279 0.684015 +vt 0.757085 0.684015 +vt 0.781377 0.657993 +vt 0.696356 0.364312 +vt 0.684211 0.349442 +vt 0.684211 0.364312 +vt 0.672065 0.364312 +vt 0.672065 0.349442 +vt 0.659919 0.364312 +vt 0.793522 0.349442 +vt 0.793522 0.364312 +vt 0.781377 0.349442 +vt 0.781377 0.364312 +vt 0.769231 0.364312 +vt 0.769231 0.349442 +vt 0.708502 0.364312 +vt 0.708502 0.349442 +vt 0.481781 0.360595 +vt 0.481781 0.371747 +vt 0.469636 0.371747 +vt 0.469636 0.360595 +vt 0.000000 0.881041 +vt 0.898785 0.695167 +vt 0.854251 0.817844 +vt 0.834008 0.802974 +vt 0.372470 0.881041 +vt 0.983806 1.000000 +vt 0.655870 0.821561 +vt 0.000000 0.739777 +vt 0.489879 0.873606 +vt 0.854251 0.881041 +vt 0.489879 0.821561 +vt 0.684211 0.806691 +vt 0.765182 0.806691 +vt -0.000000 0.739777 +vt 0.267206 0.739777 +vt 0.275304 0.602230 +vt 0.275304 0.639405 +vt 0.137652 0.449814 +vt 0.275304 0.565056 +vt 0.914980 0.776952 +vt 0.975708 0.799257 +vt 0.902834 0.724907 +vt 0.943320 0.739777 +vt 0.947368 0.765799 +vt 0.947368 0.724907 +vt 0.987854 0.739777 +vt 0.000000 0.118959 +vt 0.659919 0.104089 +vt 0.489879 0.052045 +vt 0.052632 0.152416 +vt -0.000000 0.100372 +vt 0.004049 0.048327 +vt 0.145749 0.237918 +vt -0.000000 0.055762 +vt 0.004049 0.003717 +vt 0.489879 0.000000 +vt 0.376518 0.144981 +vt 0.477733 0.275093 +vt 0.477733 0.275093 +vt 0.651822 0.750929 +vt 0.748988 0.684015 +vt 0.781377 0.684015 +vt 0.781377 0.654275 +vt 0.748988 0.654275 +vt 0.696356 0.349442 +vt 0.659919 0.349442 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.5547 0.8321 0.0000 +vn 0.5547 0.8321 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.2561 0.9666 +vn 0.0000 -0.1113 -0.9938 +vn -0.0000 0.1045 0.9945 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.0000 0.1414 -0.9899 +vn 0.0000 0.1961 0.9806 +vn 0.0000 -0.8321 -0.5547 +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.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.9898 -0.1427 -0.0000 +vn -0.9898 -0.1427 -0.0000 +vn 0.9986 0.0532 0.0000 +vn 0.0000 0.5547 -0.8321 +vn 0.0000 0.2898 -0.9571 +vn 0.0000 0.4178 -0.9086 +vn 0.9696 -0.2448 0.0000 +vn 0.9638 -0.2667 0.0000 +vn -0.9696 -0.2448 -0.0000 +vn -0.9638 -0.2667 -0.0000 +vn -0.2415 -0.9704 0.0000 +vn 0.2415 -0.9704 0.0000 +vn -0.2421 -0.9703 0.0009 +vn 0.8569 0.5154 -0.0000 +vn 0.4688 0.8833 0.0013 +vn 0.8582 0.5133 0.0061 +vn -0.8576 -0.5143 0.0065 +vn -0.8664 0.4993 0.0076 +vn -0.8576 0.5143 0.0066 +vn -0.4707 0.8823 0.0033 +vn -0.5000 0.8660 0.0014 +vn 0.8540 -0.5198 0.0206 +vn 0.8570 -0.5154 0.0000 +vn -0.8198 0.4030 0.4069 +vn -0.6324 0.5454 0.5501 +vn 0.8193 0.4028 0.4080 +vn 0.6319 0.5454 0.5507 +vn -0.2580 -0.9657 0.0277 +vn -0.3816 -0.8474 0.3692 +vn -0.8624 -0.5058 0.0217 +vn -0.8221 -0.3833 0.4210 +vn 0.2409 -0.9702 0.0278 +vn 0.3813 -0.8473 0.3697 +vn 0.8216 -0.3831 0.4221 +vn 0.9239 -0.3826 -0.0000 +vn -0.9239 -0.3826 -0.0000 +vn -0.3827 0.9239 -0.0001 +vn -0.9986 0.0532 0.0000 +vn 0.3828 -0.9238 0.0000 +vn -0.3828 -0.9238 -0.0000 +vn 0.8661 0.4998 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.8570 -0.5154 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.9915 0.1303 -0.0000 +vn -0.8661 0.4998 0.0000 +vn -0.9915 0.1303 0.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.5074 -0.8617 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 0.8733 -0.4871 0.0000 +vn 0.9659 -0.2588 0.0000 +vn -0.9659 -0.2588 -0.0000 +vn -0.8733 -0.4871 -0.0000 +vn -0.8660 -0.5000 -0.0000 +vn -0.5074 -0.8617 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.8660 0.5000 0.0000 +vn -0.8660 0.5000 -0.0000 +vn 0.9659 0.2588 0.0000 +vn -0.9659 0.2588 -0.0000 +vn 0.4919 -0.8707 0.0000 +vn -0.8579 -0.5139 0.0000 +vn -0.4919 -0.8707 0.0000 +vn 0.8579 -0.5139 0.0000 +vn 0.4971 0.8676 0.0152 +vn 0.8602 0.5069 0.0565 +vn 0.8607 0.5059 0.0567 +vn 0.9603 0.2673 0.0801 +vn 0.9601 0.2678 0.0802 +vn -0.8607 0.5059 0.0567 +vn -0.9603 0.2673 0.0801 +vn -0.8602 0.5069 0.0565 +vn -0.4971 0.8676 0.0152 +vn -0.4965 0.8679 0.0151 +vn 0.4965 0.8679 0.0151 +vn 0.8660 0.4973 -0.0523 +vn 0.8660 -0.4973 0.0523 +vn 0.7071 -0.7032 0.0739 +vn 0.7071 0.7032 -0.0739 +vn -0.8660 0.4973 -0.0523 +vn -0.7071 0.7032 -0.0739 +vn -0.7071 -0.7032 0.0739 +vn -0.8660 -0.4973 0.0523 +vn 0.8090 0.5846 -0.0614 +vn 0.8045 0.5702 -0.1664 +vn 0.8090 -0.5846 0.0614 +vn 0.8022 -0.5932 -0.0683 +vn 0.8045 -0.5923 -0.0442 +vn 0.8090 -0.4568 -0.3699 +vn 0.8090 -0.0614 -0.5846 +vn 0.8090 0.3699 -0.4568 +vn 0.8022 0.5660 -0.1902 +vn -0.8090 -0.5846 0.0614 +vn -0.8022 -0.5932 -0.0683 +vn -0.8045 -0.5923 -0.0442 +vn -0.8090 0.5846 -0.0614 +vn -0.8045 0.5702 -0.1664 +vn -0.8022 0.5660 -0.1902 +vn -0.8090 0.3699 -0.4568 +vn -0.8090 -0.0614 -0.5846 +vn -0.8090 -0.4568 -0.3699 +vn -0.4133 -0.9050 0.1009 +vn -0.4015 0.6881 -0.6044 +vn 0.4005 0.8976 0.1842 +vn 0.4015 0.6881 -0.6044 +vn -0.3921 -0.9116 -0.1234 +vn 0.3513 -0.9044 -0.2423 +vn -0.3513 -0.9044 -0.2423 +vn -0.3527 -0.9287 -0.1148 +vn 0.3977 -0.5316 -0.7479 +vn 0.3527 -0.9287 -0.1148 +vn 0.3921 -0.9116 -0.1234 +vn -0.3976 -0.5316 -0.7479 +vn 0.3745 -0.0856 -0.9233 +vn 0.4133 -0.9050 0.1009 +vn 0.3756 0.1302 -0.9176 +vn -0.3756 0.1302 -0.9176 +vn -0.3745 -0.0856 -0.9233 +vn 0.4365 0.7953 -0.4208 +vn -0.4568 0.8586 -0.2328 +vn -0.4365 0.7953 -0.4208 +vn -0.4739 -0.7007 0.5334 +vn 0.4553 -0.8264 0.3312 +vn -0.4553 -0.8264 0.3312 +vn 0.4568 0.8586 -0.2328 +vn -0.4373 0.8820 0.1754 +vn -0.4489 -0.3977 0.8002 +vn 0.4739 -0.7007 0.5334 +vn 0.4489 -0.3977 0.8002 +vn -0.0918 -0.2734 0.9575 +vn 0.0918 -0.2734 0.9575 +vn -0.4005 0.8976 0.1842 +vn 0.4373 0.8820 0.1754 +vn -0.4066 0.8968 -0.1747 +vn 0.4066 0.8968 -0.1747 +vn -0.3826 0.9239 0.0000 +vn -0.9067 0.4207 0.0298 +vn -0.7970 -0.5523 0.2445 +vn -0.8887 -0.4503 -0.0866 +vn -0.8033 -0.2749 0.5283 +vn -0.9298 -0.1635 -0.3296 +vn -0.3431 -0.2369 0.9089 +vn -0.9154 0.3131 -0.2530 +vn -0.9409 0.3038 -0.1495 +vn -0.9195 0.3905 -0.0445 +vn -0.9116 -0.0453 -0.4087 +vn -0.6948 -0.6947 -0.1861 +vn -0.9642 0.2475 -0.0950 +vn -0.7044 -0.7043 -0.0877 +vn -0.9575 0.2768 0.0809 +vn -0.7072 -0.7070 -0.0000 +vn -0.7551 -0.6460 0.1114 +vn -0.7561 -0.6449 0.1111 +vn 0.9195 0.3905 -0.0445 +vn 0.3826 0.9239 0.0000 +vn 0.9409 0.3038 -0.1495 +vn 0.9642 0.2475 -0.0950 +vn 0.9575 0.2768 0.0809 +vn 0.9067 0.4207 0.0298 +vn 0.9154 0.3131 -0.2530 +vn 0.9110 0.0693 -0.4065 +vn 0.9116 -0.0453 -0.4087 +vn 0.9298 -0.1635 -0.3296 +vn 0.8887 -0.4503 -0.0866 +vn 0.7551 -0.6460 0.1114 +vn 0.7044 -0.7043 -0.0877 +vn 0.6948 -0.6947 -0.1861 +vn 0.3431 -0.2369 0.9089 +vn 0.8033 -0.2749 0.5283 +vn 0.7970 -0.5523 0.2445 +vn 0.7561 -0.6449 0.1111 +vn 0.7072 -0.7070 -0.0000 +vn -0.9110 0.0693 -0.4065 +vn 0.9783 0.0000 -0.2071 +vn -0.9783 0.0000 -0.2071 +vn 0.6984 0.7157 0.0000 +vn -0.0000 0.9904 -0.1381 +vn -0.7124 0.6861 -0.1475 +vn -0.6984 0.7157 0.0000 +vn 0.7124 0.6861 -0.1475 +vn 0.9142 0.4052 0.0000 +vn 0.8992 0.3985 -0.1807 +vn -0.8992 0.3985 -0.1807 +vn -0.9142 0.4052 0.0000 +vn 0.6472 0.3875 -0.6565 +vn 0.5294 0.6630 -0.5293 +vn -0.0000 0.6630 -0.7486 +vn -0.0000 0.3827 -0.9239 +vn -0.5294 0.6630 -0.5293 +vn -0.6472 0.3875 -0.6565 +vn -0.6984 0.0000 -0.7157 +vn 0.6984 0.0000 -0.7157 +vn 0.0000 0.9808 0.1951 +vn -0.0000 0.7071 0.7071 +vn -0.0000 0.3827 0.9239 +vn -0.0000 0.4830 0.8756 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn -0.0000 0.4830 -0.8756 +vn 0.0000 0.5773 -0.8165 +vn 0.0000 0.5773 0.8165 +vn 0.0000 0.5774 0.8165 +vn 0.0000 0.8136 -0.5814 +vn 0.0000 0.3420 -0.9397 +vn 0.0000 -0.3505 0.9366 +vn 0.0000 -0.8233 0.5676 +vn 0.0000 -0.2732 -0.9620 +vn 0.0000 -0.7339 -0.6793 +vn 0.0000 0.2755 0.9613 +vn 0.0000 -0.9718 -0.2358 +vn 0.0000 -0.9397 0.3420 +vn 0.0000 0.7144 0.6997 +vn -0.0000 -0.3827 -0.9239 +vn -0.0000 -0.5814 -0.8136 +vn 0.0000 0.8590 0.5120 +vn 0.0000 -0.7834 -0.6215 +vn 0.0000 -0.5373 0.8434 +vn 0.0000 -0.9892 -0.1465 +vn -0.0000 -0.9103 -0.4139 +vn 0.0000 0.5000 0.8660 +vn 0.0000 -0.9845 0.1754 +vn 0.0000 0.9239 0.3827 +vn 0.0000 -1.0000 -0.0052 +vn 0.0000 0.9831 -0.1831 +vn 0.0000 -0.9632 -0.2688 +vn 0.0000 -0.3092 0.9510 +vn 0.0000 -0.4472 0.8944 +vn 0.0000 -0.0161 -0.9999 +vn 0.0000 0.1644 -0.9864 +vn 0.0000 0.4082 0.9129 +vn 0.0000 0.6000 0.8000 +vn 0.0000 0.0161 0.9999 +vn 0.0000 -0.6000 -0.8000 +vn 0.0000 -0.4082 -0.9129 +vn 0.4686 0.8834 -0.0000 +vn -0.8576 0.5143 0.0065 +vn -0.9601 0.2678 0.0802 +vn -0.8145 -0.4575 0.3569 +vn 0.8145 -0.4575 0.3569 +s off +f 585/1102/142 586/1103/142 587/1104/142 +f 588/1105/142 589/1106/142 590/1107/142 +f 591/1108/142 592/1109/142 588/1105/142 +f 593/1110/142 594/1111/142 591/1108/142 +f 593/1110/142 595/1112/142 596/1113/142 +f 597/1114/142 586/1115/142 595/1112/142 +f 598/1116/142 589/1106/142 599/1117/142 +f 585/1102/142 599/1117/142 600/1118/142 +f 601/1119/143 602/1120/143 603/1121/143 +f 604/1122/144 605/1123/144 606/1124/144 +f 601/1125/144 607/1126/144 602/1127/144 +f 608/1128/145 609/1129/145 610/1130/145 +f 611/1131/146 605/1123/146 612/1132/146 +f 611/1131/147 613/1133/147 614/1134/147 +f 615/1135/143 616/1136/143 617/1137/143 +f 617/1137/148 618/1138/148 619/1139/148 +f 618/1138/149 620/1140/149 619/1139/149 +f 621/1141/142 615/1135/142 620/1142/142 +f 616/1143/144 621/1144/144 618/1145/144 +f 622/1146/149 604/1147/149 606/1148/149 +f 623/1149/145 624/1150/145 625/1151/145 +f 626/1152/142 627/1153/142 628/1154/142 +f 629/1155/142 605/1156/142 614/1157/142 +f 630/1158/150 631/1159/150 632/1160/150 +f 625/1161/145 633/1162/145 630/1158/145 +f 634/1163/151 632/1160/151 631/1159/151 +f 635/1164/142 636/1165/142 637/1166/142 +f 638/1167/142 639/1168/142 640/1169/142 +f 641/1170/142 642/1171/142 643/1172/142 +f 644/1173/149 645/1174/149 646/1175/149 +f 647/1176/143 648/1177/143 649/1178/143 +f 650/1179/143 651/1180/143 652/1181/143 +f 653/1182/149 654/1183/149 655/1184/149 +f 656/1185/152 657/1186/152 658/1187/152 +f 659/1188/153 660/1189/153 661/1190/153 +f 662/1191/153 663/1192/153 664/1193/153 +f 665/1194/153 666/1195/153 667/1196/153 +f 668/1197/149 669/1198/149 670/1199/149 +f 671/1200/143 672/1201/143 673/1202/143 +f 674/1203/145 655/1204/145 675/1205/145 +f 676/1206/142 677/1207/142 678/1208/142 +f 679/1209/149 680/1210/149 681/1211/149 +f 682/1212/142 677/1207/142 676/1206/142 +f 683/1213/145 684/1214/145 685/1215/145 +f 679/1209/145 684/1214/145 683/1213/145 +f 682/1212/143 686/1216/143 687/1217/143 +f 688/1218/142 676/1206/142 678/1208/142 +f 689/1219/149 690/1220/149 691/1221/149 +f 688/1222/150 692/1223/150 685/1224/150 +f 685/1215/145 686/1216/145 683/1213/145 +f 687/1217/145 689/1225/145 691/1226/145 +f 681/1227/142 693/1228/142 694/1229/142 +f 684/1230/154 688/1222/154 685/1224/154 +f 678/1231/155 689/1219/155 692/1223/155 +f 693/1228/142 680/1232/142 688/1218/142 +f 683/1213/144 676/1233/144 680/1234/144 +f 693/1235/143 695/1236/143 694/1237/143 +f 689/1225/145 686/1216/145 692/1238/145 +f 696/1239/144 697/1240/144 698/1241/144 +f 699/1242/156 700/1243/156 701/1244/156 +f 702/1245/144 699/1242/144 701/1244/144 +f 703/1246/150 704/1247/150 705/1248/150 +f 700/1243/157 696/1239/157 698/1241/157 +f 703/1246/143 706/1249/143 707/1250/143 +f 708/1251/149 709/1252/149 710/1253/149 +f 709/1252/142 711/1254/142 712/1255/142 +f 713/1256/142 714/1257/142 706/1249/142 +f 704/1258/143 711/1259/143 702/1260/143 +f 697/1261/149 715/1262/149 705/1263/149 +f 702/1245/144 716/1264/144 708/1251/144 +f 706/1265/144 697/1240/144 707/1250/144 +f 705/1248/150 713/1266/150 703/1246/150 +f 709/1267/150 704/1247/150 710/1253/150 +f 717/1268/145 710/1253/145 703/1246/145 +f 705/1263/142 704/1258/142 700/1269/142 +f 718/1270/158 719/1271/158 720/1272/158 +f 719/1271/144 721/1273/144 720/1272/144 +f 722/1274/159 723/1275/159 724/1276/159 +f 725/1277/143 719/1278/143 726/1279/143 +f 726/1279/143 727/1280/143 725/1277/143 +f 723/1281/143 727/1280/143 724/1282/143 +f 728/1283/149 722/1284/149 729/1285/149 +f 718/1286/149 729/1285/149 722/1284/149 +f 720/1287/149 730/1288/149 718/1286/149 +f 731/1289/158 732/1290/158 733/1291/158 +f 734/1292/144 735/1293/144 732/1290/144 +f 736/1294/159 737/1295/159 738/1296/159 +f 739/1297/143 734/1298/143 731/1299/143 +f 731/1299/143 740/1300/143 739/1297/143 +f 737/1301/143 740/1300/143 738/1302/143 +f 741/1303/149 736/1304/149 742/1305/149 +f 733/1306/149 742/1305/149 736/1304/149 +f 732/1307/149 743/1308/149 733/1306/149 +f 690/1309/144 695/1310/144 691/1311/144 +f 744/1312/149 745/1313/149 746/1314/149 +f 747/1315/149 748/1316/149 749/1317/149 +f 744/1312/149 746/1314/149 749/1317/149 +f 750/1318/149 751/1319/149 752/1320/149 +f 753/1321/149 752/1320/149 754/1322/149 +f 755/1323/149 753/1321/149 754/1324/149 +f 756/1325/149 754/1326/149 757/1327/149 +f 758/1328/149 757/1327/149 759/1329/149 +f 760/1330/149 759/1329/149 761/1331/149 +f 762/1332/149 761/1333/149 763/1334/149 +f 764/1335/149 763/1336/149 765/1337/149 +f 765/1337/149 766/1338/149 764/1335/149 +f 767/1339/149 766/1340/149 768/1341/149 +f 767/1339/149 769/1342/149 746/1343/149 +f 747/1344/149 746/1345/149 769/1346/149 +f 770/1347/149 745/1348/149 771/1349/149 +f 772/1350/143 773/1351/143 774/1352/143 +f 775/1353/143 776/1354/143 777/1355/143 +f 774/1352/143 778/1356/143 779/1357/143 +f 779/1357/143 780/1358/143 781/1359/143 +f 782/1360/143 781/1361/143 780/1358/143 +f 781/1362/143 783/1363/143 784/1364/143 +f 784/1364/143 785/1365/143 786/1366/143 +f 786/1366/143 787/1367/143 788/1368/143 +f 788/1369/143 789/1370/143 790/1371/143 +f 790/1372/143 791/1373/143 792/1374/143 +f 792/1374/143 793/1375/143 794/1376/143 +f 795/1377/143 794/1378/143 793/1379/143 +f 795/1377/143 796/1380/143 794/1378/143 +f 797/1381/143 772/1382/143 796/1383/143 +f 798/1384/149 799/1385/149 800/1386/149 +f 799/1385/149 801/1387/149 800/1386/149 +f 802/1388/149 803/1389/149 801/1387/149 +f 804/1390/143 805/1391/143 806/1392/143 +f 807/1393/143 805/1391/143 808/1394/143 +f 809/1395/143 810/1396/143 807/1393/143 +f 804/1397/160 811/1398/160 798/1399/160 +f 812/1400/150 803/1401/150 813/1402/150 +f 804/1390/143 814/1403/143 815/1404/143 +f 798/1384/149 816/1405/149 817/1406/149 +f 818/1407/142 819/1408/142 820/1409/142 +f 821/1410/142 822/1411/142 647/1412/142 +f 823/1413/142 824/1414/142 825/1415/142 +f 644/1416/142 649/1417/142 824/1414/142 +f 775/1418/143 826/1419/143 797/1420/143 +f 826/1419/143 827/1421/143 797/1420/143 +f 828/1422/145 654/1423/145 651/1424/145 +f 829/1425/145 830/1426/145 654/1423/145 +f 585/1102/142 600/1118/142 586/1103/142 +f 588/1105/142 592/1109/142 589/1106/142 +f 591/1108/142 594/1111/142 592/1109/142 +f 593/1110/142 596/1113/142 594/1111/142 +f 593/1110/142 597/1114/142 595/1112/142 +f 597/1114/142 587/1427/142 586/1115/142 +f 598/1116/142 590/1107/142 589/1106/142 +f 585/1102/142 598/1116/142 599/1117/142 +f 831/1428/143 832/1429/143 603/1121/143 +f 832/1429/143 601/1119/143 603/1121/143 +f 604/1122/144 612/1132/144 605/1123/144 +f 601/1125/144 613/1133/144 607/1126/144 +f 610/1130/145 833/1430/145 834/1431/145 +f 834/1431/145 831/1432/145 608/1128/145 +f 608/1128/145 835/1433/145 836/1434/145 +f 609/1129/145 837/1435/145 838/1436/145 +f 608/1128/145 836/1434/145 609/1129/145 +f 610/1130/145 834/1431/145 608/1128/145 +f 839/1437/145 840/1438/145 610/1130/145 +f 838/1436/145 841/1439/145 609/1129/145 +f 841/1439/145 839/1437/145 610/1130/145 +f 609/1129/145 841/1439/145 610/1130/145 +f 611/1131/146 614/1134/146 605/1123/146 +f 611/1131/147 607/1126/147 613/1133/147 +f 615/1135/143 842/1440/143 616/1136/143 +f 617/1137/148 616/1136/148 618/1138/148 +f 618/1138/149 621/1441/149 620/1140/149 +f 621/1141/142 842/1440/142 615/1135/142 +f 616/1143/144 842/1440/144 621/1144/144 +f 606/1148/149 629/1155/149 622/1146/149 +f 629/1155/149 608/1442/149 622/1146/149 +f 625/1151/145 843/1443/145 623/1149/145 +f 843/1443/145 844/1444/145 623/1149/145 +f 844/1444/145 845/1445/145 846/1446/145 +f 846/1446/145 847/1447/145 844/1444/145 +f 847/1447/145 623/1149/145 844/1444/145 +f 628/1154/142 848/1448/142 849/1449/142 +f 848/1448/142 850/1450/142 849/1449/142 +f 850/1450/142 634/1451/142 849/1449/142 +f 849/1449/142 851/1452/142 628/1154/142 +f 851/1452/142 626/1152/142 628/1154/142 +f 601/1119/142 832/1429/142 613/1453/142 +f 832/1429/142 629/1155/142 614/1157/142 +f 629/1155/142 606/1148/142 605/1156/142 +f 614/1157/142 613/1453/142 832/1429/142 +f 630/1158/150 633/1162/150 631/1159/150 +f 625/1161/145 624/1454/145 633/1162/145 +f 634/1163/151 850/1455/151 632/1160/151 +f 641/1170/142 852/1456/142 853/1457/142 +f 853/1457/142 854/1458/142 641/1170/142 +f 854/1458/142 642/1171/142 641/1170/142 +f 642/1171/142 855/1459/142 643/1172/142 +f 855/1459/142 856/1460/142 643/1172/142 +f 856/1460/142 857/1461/142 643/1172/142 +f 644/1173/149 824/1462/149 645/1174/149 +f 647/1176/143 858/1463/143 648/1177/143 +f 650/1179/143 828/1464/143 651/1180/143 +f 653/1182/149 859/1465/149 654/1183/149 +f 860/1466/152 861/1467/152 862/1468/152 +f 862/1468/152 863/1469/152 656/1185/152 +f 656/1185/152 864/1470/152 657/1186/152 +f 657/1186/152 865/1471/152 658/1187/152 +f 658/1187/152 866/1472/152 867/1473/152 +f 867/1473/152 868/1474/152 658/1187/152 +f 868/1474/152 860/1466/152 658/1187/152 +f 860/1466/152 862/1468/152 658/1187/152 +f 862/1468/152 656/1185/152 658/1187/152 +f 661/1190/153 869/1475/153 870/1476/153 +f 870/1476/153 871/1477/153 659/1188/153 +f 659/1188/153 872/1478/153 660/1189/153 +f 872/1478/153 873/1479/153 660/1189/153 +f 873/1479/153 874/1480/153 660/1189/153 +f 660/1189/153 875/1481/153 661/1190/153 +f 875/1481/153 876/1482/153 661/1190/153 +f 876/1482/153 877/1483/153 661/1190/153 +f 661/1190/153 870/1476/153 659/1188/153 +f 664/1193/153 878/1484/153 879/1485/153 +f 879/1485/153 662/1191/153 664/1193/153 +f 880/1486/153 881/1487/153 667/1196/153 +f 881/1487/153 665/1194/153 667/1196/153 +f 669/1198/149 882/1488/149 670/1199/149 +f 670/1199/149 883/1489/149 884/1490/149 +f 884/1490/149 885/1491/149 670/1199/149 +f 885/1491/149 668/1197/149 670/1199/149 +f 886/1492/143 887/1493/143 673/1202/143 +f 887/1493/143 888/1494/143 673/1202/143 +f 888/1494/143 889/1495/143 673/1202/143 +f 889/1495/143 671/1200/143 673/1202/143 +f 890/1496/145 891/1497/145 674/1203/145 +f 674/1203/145 892/1498/145 655/1204/145 +f 655/1204/145 828/1422/145 675/1205/145 +f 675/1205/145 890/1496/145 674/1203/145 +f 679/1209/149 683/1213/149 680/1210/149 +f 682/1212/142 690/1499/142 677/1207/142 +f 679/1209/145 695/1500/145 684/1214/145 +f 682/1212/143 676/1206/143 686/1216/143 +f 688/1218/142 680/1232/142 676/1206/142 +f 689/1219/149 677/1501/149 690/1220/149 +f 688/1222/150 678/1231/150 692/1223/150 +f 685/1215/145 692/1238/145 686/1216/145 +f 687/1217/145 686/1216/145 689/1225/145 +f 681/1227/142 680/1232/142 693/1228/142 +f 684/1230/154 693/1235/154 688/1222/154 +f 678/1231/155 677/1501/155 689/1219/155 +f 683/1213/144 686/1216/144 676/1233/144 +f 693/1235/143 684/1230/143 695/1236/143 +f 696/1239/144 707/1250/144 697/1240/144 +f 699/1242/156 717/1502/156 700/1243/156 +f 702/1245/144 708/1251/144 699/1242/144 +f 703/1246/150 710/1253/150 704/1247/150 +f 700/1243/157 717/1502/157 696/1239/157 +f 703/1246/143 713/1256/143 706/1249/143 +f 708/1251/149 716/1503/149 709/1252/149 +f 709/1252/142 716/1503/142 711/1254/142 +f 713/1256/142 715/1262/142 714/1257/142 +f 704/1258/143 712/1504/143 711/1259/143 +f 697/1261/149 714/1257/149 715/1262/149 +f 702/1245/144 711/1505/144 716/1264/144 +f 706/1265/144 714/1506/144 697/1240/144 +f 705/1248/150 715/1507/150 713/1266/150 +f 709/1267/150 712/1508/150 704/1247/150 +f 703/1246/145 707/1250/145 696/1239/145 +f 717/1268/145 699/1242/145 710/1253/145 +f 699/1242/145 708/1251/145 710/1253/145 +f 703/1246/145 696/1239/145 717/1268/145 +f 698/1509/142 697/1261/142 705/1263/142 +f 704/1258/142 702/1260/142 701/1510/142 +f 700/1269/142 698/1509/142 705/1263/142 +f 704/1258/142 701/1510/142 700/1269/142 +f 718/1270/158 726/1511/158 719/1271/158 +f 719/1271/144 893/1512/144 721/1273/144 +f 722/1274/159 728/1513/159 723/1275/159 +f 725/1277/143 893/1514/143 719/1278/143 +f 726/1279/143 724/1282/143 727/1280/143 +f 718/1286/149 730/1288/149 729/1285/149 +f 720/1287/149 721/1515/149 730/1288/149 +f 731/1289/158 734/1292/158 732/1290/158 +f 734/1292/144 894/1516/144 735/1293/144 +f 736/1294/159 741/1517/159 737/1295/159 +f 739/1297/143 894/1518/143 734/1298/143 +f 731/1299/143 738/1302/143 740/1300/143 +f 733/1306/149 743/1308/149 742/1305/149 +f 732/1307/149 735/1519/149 743/1308/149 +f 690/1309/144 694/1520/144 695/1310/144 +f 744/1312/149 771/1349/149 745/1313/149 +f 747/1315/149 751/1319/149 748/1316/149 +f 750/1318/149 748/1316/149 751/1319/149 +f 753/1321/149 750/1318/149 752/1320/149 +f 756/1325/149 755/1323/149 754/1326/149 +f 758/1328/149 756/1325/149 757/1327/149 +f 760/1330/149 758/1328/149 759/1329/149 +f 762/1332/149 760/1330/149 761/1333/149 +f 764/1335/149 762/1332/149 763/1336/149 +f 765/1337/149 768/1521/149 766/1338/149 +f 767/1339/149 768/1341/149 769/1342/149 +f 747/1344/149 749/1522/149 746/1345/149 +f 772/1350/143 827/1421/143 773/1351/143 +f 774/1352/143 773/1351/143 778/1356/143 +f 779/1357/143 778/1356/143 780/1358/143 +f 781/1362/143 782/1360/143 783/1363/143 +f 784/1364/143 783/1363/143 785/1365/143 +f 786/1366/143 785/1365/143 787/1367/143 +f 788/1369/143 787/1367/143 789/1370/143 +f 790/1372/143 789/1370/143 791/1373/143 +f 792/1374/143 791/1373/143 793/1375/143 +f 795/1377/143 797/1523/143 796/1380/143 +f 797/1381/143 827/1524/143 772/1382/143 +f 798/1384/149 817/1406/149 799/1385/149 +f 799/1385/149 802/1388/149 801/1387/149 +f 802/1388/149 813/1402/149 803/1389/149 +f 804/1390/143 808/1394/143 805/1391/143 +f 807/1393/143 810/1396/143 805/1391/143 +f 809/1395/143 812/1400/143 810/1396/143 +f 804/1397/160 815/1525/160 811/1398/160 +f 812/1400/150 809/1526/150 803/1401/150 +f 804/1390/143 806/1392/143 814/1403/143 +f 798/1384/149 811/1527/149 816/1405/149 +f 819/1408/142 895/1528/142 896/1529/142 +f 896/1529/142 897/1530/142 819/1408/142 +f 897/1530/142 898/1531/142 820/1409/142 +f 819/1408/142 897/1530/142 820/1409/142 +f 898/1531/142 899/1532/142 820/1409/142 +f 820/1409/142 900/1533/142 832/1534/142 +f 900/1533/142 901/1535/142 832/1534/142 +f 901/1535/142 629/1536/142 832/1534/142 +f 832/1534/142 902/1537/142 818/1407/142 +f 832/1534/142 818/1407/142 820/1409/142 +f 821/1410/142 903/1538/142 822/1411/142 +f 822/1411/142 904/1539/142 647/1412/142 +f 647/1412/142 644/1416/142 905/1540/142 +f 905/1540/142 821/1410/142 647/1412/142 +f 649/1417/142 906/1541/142 824/1414/142 +f 906/1541/142 825/1415/142 824/1414/142 +f 825/1415/142 907/1542/142 908/1543/142 +f 908/1543/142 823/1413/142 825/1415/142 +f 644/1416/142 647/1412/142 649/1417/142 +f 775/1418/143 777/1355/143 826/1419/143 +f 828/1422/145 655/1204/145 654/1423/145 +f 829/1425/145 909/1544/145 830/1426/145 +f 830/1426/145 651/1424/145 654/1423/145 +f 654/1423/145 910/1545/145 911/1546/145 +f 911/1546/145 829/1425/145 654/1423/145 +s 1 +f 587/1547/161 912/1548/162 913/1549/161 +f 597/1550/162 914/1551/163 912/1548/162 +f 593/1552/163 915/1553/164 914/1551/163 +f 591/1554/164 916/1555/165 915/1553/164 +f 588/1556/165 917/1557/166 916/1555/165 +f 590/1558/166 918/1559/167 917/1557/166 +f 598/1560/167 919/1561/168 918/1559/167 +f 585/1562/168 913/1563/161 919/1561/168 +f 594/1111/168 920/1564/161 592/1109/161 +f 592/1109/161 921/1565/162 589/1106/162 +f 589/1106/162 922/1566/163 599/1117/163 +f 599/1117/163 923/1567/164 600/1118/164 +f 595/1112/166 924/1568/165 925/1569/166 +f 595/1112/166 926/1570/167 596/1113/167 +f 596/1113/167 927/1571/168 594/1111/168 +f 600/1118/164 924/1572/165 586/1103/165 +f 900/1573/163 835/1574/162 901/1575/162 +f 902/1576/167 833/1577/166 818/1578/166 +f 820/1579/169 836/1580/163 900/1573/163 +f 629/1581/157 835/1574/162 608/1582/157 +f 832/1583/156 834/1584/167 902/1576/167 +f 818/1578/166 610/1585/170 819/1586/170 +f 899/1587/171 838/1588/155 837/1589/171 +f 831/1428/172 603/1590/173 611/1591/174 +f 603/1590/173 607/1592/145 611/1591/174 +f 622/1593/173 612/1594/145 604/1595/145 +f 928/1596/164 929/1597/163 930/1598/163 +f 931/1599/162 932/1600/161 933/1601/161 +f 934/1602/168 935/1603/167 936/1604/167 +f 937/1605/165 938/1606/166 939/1607/165 +f 937/1605/165 940/1608/164 928/1596/164 +f 930/1598/163 941/1609/162 931/1599/162 +f 933/1610/161 942/1611/168 934/1602/168 +f 936/1604/167 938/1606/166 943/1612/166 +f 624/1613/175 849/1614/175 634/1615/176 +f 847/1616/162 626/1617/161 851/1618/162 +f 845/1619/168 628/1620/167 627/1621/168 +f 843/1622/177 850/1623/178 848/1624/177 +f 624/1613/175 631/1159/149 633/1162/149 +f 623/1625/175 851/1618/162 849/1614/175 +f 846/1626/161 627/1627/168 626/1617/161 +f 844/1628/167 848/1624/177 628/1620/167 +f 944/1629/179 945/1630/180 946/1631/181 +f 636/1632/182 947/1633/183 948/1634/184 +f 949/1635/185 950/1636/186 640/1637/187 +f 638/1638/188 950/1636/186 951/1639/189 +f 636/1632/182 952/1640/190 953/1641/191 +f 954/1642/192 955/1643/193 950/1636/186 +f 951/1639/189 950/1636/186 955/1643/193 +f 956/1644/194 948/1634/184 957/1645/195 +f 947/1633/183 957/1645/195 948/1634/184 +f 958/1646/196 959/1647/197 960/1648/198 +f 959/1647/197 961/1649/199 960/1648/198 +f 962/1650/200 952/1640/190 963/1651/201 +f 963/1651/201 952/1640/190 964/1652/202 +f 963/1651/201 958/1646/196 962/1650/200 +f 952/1640/190 948/1634/184 956/1644/194 +f 956/1644/194 964/1653/202 952/1640/190 +f 960/1648/198 954/1642/192 950/1636/186 +f 954/1642/192 960/1648/198 961/1654/199 +f 963/1655/201 956/1644/194 957/1656/195 +f 959/1657/197 954/1642/192 961/1654/199 +f 965/1658/168 857/1659/167 966/1660/167 +f 967/1661/203 852/1662/162 968/1663/162 +f 966/1660/167 639/1664/204 969/1665/204 +f 970/1666/161 643/1667/168 965/1658/205 +f 970/1668/161 852/1662/162 641/1669/161 +f 971/1670/144 972/1671/157 973/1672/144 +f 974/1673/149 975/1674/155 976/1675/149 +f 977/1676/150 978/1677/154 979/1678/150 +f 980/1679/143 981/1680/156 982/1681/143 +f 983/1682/157 976/1675/149 972/1671/157 +f 984/1683/155 979/1678/150 975/1674/155 +f 985/1684/154 982/1681/143 978/1677/154 +f 986/1685/156 973/1686/144 981/1680/156 +f 820/1579/169 837/1589/171 609/1687/169 +f 896/1688/154 840/1689/206 839/1690/154 +f 897/1691/150 839/1690/154 841/1692/150 +f 898/1693/155 841/1692/150 838/1588/155 +f 819/1586/170 840/1689/206 895/1694/206 +f 625/1695/177 632/1160/143 850/1623/178 +f 987/1696/207 637/1697/203 967/1661/203 +f 969/1665/204 638/1698/208 988/1699/208 +f 635/1700/207 988/1699/208 638/1698/208 +f 853/1701/209 989/1702/210 854/1703/210 +f 946/1631/181 990/1704/211 944/1629/179 +f 854/1703/210 991/1705/144 642/1706/144 +f 642/1706/144 992/1707/212 855/1708/212 +f 852/1709/213 993/1710/209 853/1701/209 +f 855/1708/212 994/1711/214 856/1712/214 +f 856/1712/214 995/1713/215 857/1714/215 +f 996/1715/213 852/1709/213 637/1166/149 +f 640/1169/143 639/1168/143 995/1716/215 +f 945/1630/180 997/1717/191 953/1718/191 +f 945/1719/180 952/1640/190 962/1650/200 +f 960/1648/198 946/1720/181 958/1646/196 +f 958/1646/196 945/1719/180 962/1650/200 +f 908/1721/216 998/1722/150 999/1723/217 +f 823/1724/218 999/1723/217 1000/1725/219 +f 824/1462/220 1000/1725/219 645/1174/220 +f 649/1178/221 1001/1726/222 906/1727/223 +f 906/1727/223 1002/1728/224 825/1729/225 +f 892/1730/226 821/1731/210 905/1732/226 +f 825/1729/225 998/1722/150 907/1733/150 +f 891/1734/144 822/1735/212 903/1736/144 +f 890/1737/212 904/1738/227 822/1735/212 +f 674/1739/210 903/1736/144 821/1731/210 +f 653/1740/228 655/1741/228 892/1730/226 +f 858/1742/229 675/1743/227 650/1744/229 +f 1003/1745/230 829/1746/150 911/1747/216 +f 1004/1748/231 909/1749/225 1005/1750/232 +f 1006/1751/233 911/1747/216 910/1752/218 +f 1005/1750/232 829/1746/150 1007/1753/150 +f 859/1465/220 910/1752/218 654/1183/220 +f 652/1181/221 830/1754/223 1004/1748/231 +f 863/1755/234 876/1756/235 656/1757/236 +f 656/1757/236 875/1758/237 864/1759/238 +f 860/1760/239 871/1761/240 870/1762/241 +f 861/1763/242 870/1764/241 869/1765/243 +f 862/1766/144 869/1767/243 661/1768/144 +f 862/1766/144 877/1769/244 863/1755/234 +f 1008/1770/245 879/1771/149 1009/1772/149 +f 1010/1773/246 664/1774/247 1011/1775/247 +f 663/1776/248 1008/1770/245 1012/1777/248 +f 1009/1772/149 878/1778/246 1010/1773/246 +f 1013/1779/249 880/1780/250 1014/1781/250 +f 667/1782/251 1015/1783/252 1016/1784/251 +f 1017/1785/143 881/1786/249 1013/1779/249 +f 666/1787/252 1017/1785/143 1015/1783/252 +f 669/1198/253 1018/1788/254 1019/1789/253 +f 1020/1790/255 670/1791/256 882/1488/255 +f 1021/1792/257 883/1793/258 670/1791/256 +f 1022/1794/258 884/1795/259 883/1793/258 +f 1023/1796/260 884/1797/259 1024/1798/259 +f 668/1799/261 1023/1796/260 1018/1788/254 +f 1025/1800/262 673/1801/263 1026/1802/264 +f 887/1493/265 1027/1803/266 888/1804/267 +f 888/1804/267 1028/1805/268 889/1806/268 +f 1028/1805/268 671/1807/269 889/1806/268 +f 1029/1808/270 671/1809/269 1030/1810/269 +f 673/1801/263 1029/1808/270 1026/1802/264 +f 1031/1811/271 1032/1812/164 1033/1813/165 +f 1034/1814/272 1035/1815/273 1036/1816/274 +f 1037/1817/275 1038/1818/276 1039/1819/277 +f 1040/1820/278 1041/1821/279 1042/1822/280 +f 1043/1823/271 1044/1824/281 1037/1817/275 +f 1045/1825/282 1046/1826/283 1041/1821/279 +f 1040/1827/278 1047/1828/284 1043/1823/271 +f 1034/1829/272 1048/1830/285 1049/1831/286 +f 1049/1831/286 1046/1826/283 1050/1832/287 +f 1051/1833/288 1052/1834/289 1053/1835/290 +f 1054/1836/291 1055/1837/292 1056/1838/293 +f 1057/1839/294 1058/1840/295 1052/1834/289 +f 1059/1841/296 1060/1842/297 1054/1836/291 +f 1056/1838/293 1061/1843/284 1031/1811/271 +f 1062/1844/298 1039/1819/299 1038/1818/300 +f 1063/1845/301 1064/1846/302 1035/1815/273 +f 1051/1833/288 1065/1847/303 1066/1848/304 +f 1067/1849/305 1066/1848/304 1065/1847/303 +f 1034/1814/272 1068/1850/306 1063/1845/301 +f 1069/1851/307 1054/1836/291 1056/1838/293 +f 1070/1852/308 1045/1825/282 1040/1820/278 +f 1054/1836/291 1071/1853/309 1059/1841/296 +f 1072/1854/310 1050/1832/287 1045/1825/282 +f 1059/1841/296 1073/1855/311 1039/1819/299 +f 1049/1831/286 1074/1856/312 1034/1829/272 +f 1075/1857/313 1065/1847/303 1053/1835/290 +f 1076/1858/314 1067/1849/305 1065/1847/303 +f 1077/1859/315 1049/1831/286 1050/1832/287 +f 1073/1855/316 1037/1817/275 1039/1819/277 +f 1078/1860/317 1053/1835/290 1052/1834/289 +f 1079/1861/318 1043/1823/271 1037/1817/275 +f 1080/1862/319 1052/1834/289 1058/1840/295 +f 1081/1863/320 1031/1811/271 1033/1813/165 +f 1082/1864/321 1040/1827/278 1043/1823/271 +f 1063/1845/301 1080/1862/319 1058/1840/295 +f 1083/1865/322 1056/1838/293 1031/1811/271 +f 1084/1866/162 1085/1867/149 1086/1868/323 +f 1087/1869/324 1086/1870/323 1066/1848/304 +f 1066/1848/304 1088/1871/325 1051/1833/288 +f 1051/1833/288 1089/1872/326 1057/1839/294 +f 1057/1839/294 1090/1873/327 1064/1846/302 +f 1090/1873/327 1035/1815/273 1064/1846/302 +f 1036/1816/274 1091/1874/328 1092/1875/329 +f 1048/1830/285 1092/1876/329 1093/1877/330 +f 1048/1830/285 1094/1878/331 1046/1826/283 +f 1046/1826/283 1095/1879/332 1041/1821/279 +f 1041/1821/279 1096/1880/333 1042/1822/280 +f 1042/1881/280 1097/1882/334 1047/1828/284 +f 1047/1828/284 1098/1883/335 1044/1824/281 +f 1044/1824/281 1099/1884/336 1038/1818/276 +f 1062/1844/298 1099/1884/337 1100/1885/338 +f 1100/1885/338 1060/1842/297 1062/1844/298 +f 1060/1842/297 1101/1886/339 1055/1837/292 +f 1055/1837/292 1085/1887/340 1061/1843/284 +f 1061/1843/284 1102/1888/341 1032/1812/164 +f 1103/1889/167 1083/1890/143 1081/1891/143 +f 1069/1892/143 1076/1893/314 1075/1894/313 +f 1104/1895/143 1075/1894/313 1078/1896/317 +f 1071/1897/143 1104/1895/143 1078/1896/317 +f 1080/1898/319 1079/1899/143 1078/1896/317 +f 1079/1899/143 1071/1897/143 1078/1896/317 +f 1080/1898/319 1082/1900/143 1079/1899/143 +f 1082/1900/143 1074/1901/312 1070/1902/308 +f 1072/1903/310 1070/1902/308 1077/1904/315 +f 1105/1905/342 1077/1904/315 1074/1901/312 +f 1074/1901/312 1077/1904/315 1070/1902/308 +f 1086/1868/323 1101/1906/149 1088/1907/325 +f 1106/1908/149 1088/1907/325 1101/1906/149 +f 1100/1909/149 1089/1910/326 1106/1908/149 +f 1098/1911/149 1100/1909/149 1099/1912/149 +f 1089/1910/326 1098/1911/149 1090/1913/327 +f 1097/1914/149 1090/1913/327 1098/1911/149 +f 1092/1915/329 1097/1914/149 1096/1916/333 +f 1095/1917/332 1094/1918/331 1096/1916/333 +f 1093/1919/330 1092/1915/329 1094/1918/331 +f 1092/1915/329 1096/1916/333 1094/1918/331 +f 1107/1920/343 1108/1921/149 1109/1922/149 +f 1110/1923/344 1111/1924/143 1112/1925/143 +f 1113/1926/345 1114/1927/346 1115/1928/144 +f 1115/1929/144 1116/1930/347 1117/1931/348 +f 1118/1932/349 1108/1921/350 1119/1933/351 +f 1117/1931/348 1110/1923/352 1112/1925/353 +f 1120/1934/354 1118/1932/349 1119/1933/351 +f 1118/1932/349 1121/1935/355 1114/1936/346 +f 1122/1937/356 1114/1938/346 1121/1935/355 +f 1122/1937/356 1120/1934/354 1123/1939/357 +f 1122/1937/356 1124/1940/358 1114/1941/346 +f 1125/1942/359 1122/1937/356 1123/1939/357 +f 1116/1930/347 1125/1942/359 1110/1923/352 +f 1114/1943/346 1124/1940/358 1116/1930/347 +f 1110/1923/344 1126/1944/360 1127/1945/344 +f 1126/1944/360 1123/1939/145 1128/1946/145 +f 1123/1939/145 1129/1947/361 1128/1946/145 +f 1129/1947/361 1119/1933/343 1107/1920/343 +f 728/1513/144 727/1948/362 723/1275/144 +f 730/1949/363 893/1512/364 725/1950/363 +f 729/1951/362 725/1950/363 727/1948/362 +f 741/1517/144 740/1952/362 737/1295/144 +f 743/1953/363 894/1516/364 739/1954/363 +f 743/1953/363 740/1952/362 742/1955/362 +f 1130/1956/365 1131/1957/142 1132/1958/142 +f 1133/1959/150 1134/1960/366 1135/1961/366 +f 1132/1958/142 1136/1962/367 1137/1963/367 +f 1138/1964/368 1139/1965/145 1140/1966/368 +f 1135/1961/366 1139/1965/145 1141/1967/145 +f 1137/1963/367 1142/1968/150 1133/1959/150 +f 691/1969/369 695/1970/369 1138/1964/368 +f 694/1520/370 690/1309/371 1143/1971/365 +f 759/1972/372 788/1973/373 761/1974/373 +f 760/1330/374 785/1365/375 758/1328/375 +f 788/1973/373 763/1975/376 761/1974/373 +f 790/1976/376 765/1977/377 763/1975/376 +f 789/1370/378 760/1330/374 762/1332/378 +f 765/1977/377 794/1378/379 768/1341/379 +f 794/1378/379 769/1342/380 768/1341/379 +f 764/1335/381 789/1370/378 762/1332/378 +f 750/1318/382 773/1351/383 748/1316/383 +f 793/1375/384 764/1335/381 766/1338/384 +f 780/1358/385 750/1318/382 753/1321/385 +f 769/1346/380 772/1382/386 747/1344/386 +f 782/1360/387 753/1321/385 755/1323/387 +f 747/1344/386 774/1978/142 751/1979/142 +f 748/1316/383 827/1421/388 749/1317/388 +f 751/1979/142 779/1980/389 752/1981/389 +f 749/1317/388 826/1419/150 744/1312/150 +f 783/1363/390 755/1323/387 756/1325/390 +f 779/1980/389 754/1982/391 752/1981/389 +f 744/1312/150 777/1355/392 771/1349/392 +f 781/1983/391 757/1984/393 754/1982/391 +f 777/1355/392 770/1347/394 771/1349/392 +f 758/1328/375 783/1363/390 756/1325/390 +f 784/1985/393 759/1972/372 757/1984/393 +f 806/1392/395 816/1405/396 814/1403/396 +f 808/1986/397 798/1399/398 800/1987/397 +f 810/1396/399 813/1402/400 802/1388/399 +f 799/1385/401 810/1396/399 802/1388/399 +f 806/1392/395 799/1385/401 817/1406/395 +f 809/1526/402 801/1988/403 803/1401/402 +f 807/1989/403 800/1987/397 801/1988/403 +f 587/1547/161 597/1550/162 912/1548/162 +f 597/1550/162 593/1552/163 914/1551/163 +f 593/1552/163 591/1554/164 915/1553/164 +f 591/1554/164 588/1556/165 916/1555/165 +f 588/1556/165 590/1558/166 917/1557/166 +f 590/1558/166 598/1560/167 918/1559/167 +f 598/1560/167 585/1562/168 919/1561/168 +f 585/1562/168 587/1990/161 913/1563/161 +f 594/1111/168 927/1571/168 920/1564/161 +f 592/1109/161 920/1564/161 921/1565/162 +f 589/1106/162 921/1565/162 922/1566/163 +f 599/1117/163 922/1566/163 923/1567/164 +f 595/1112/166 586/1115/165 924/1568/165 +f 595/1112/166 925/1569/166 926/1570/167 +f 596/1113/167 926/1570/167 927/1571/168 +f 600/1118/164 923/1567/164 924/1572/165 +f 900/1573/163 836/1580/163 835/1574/162 +f 902/1576/167 834/1584/167 833/1577/166 +f 820/1579/169 609/1687/169 836/1580/163 +f 629/1581/157 901/1575/162 835/1574/162 +f 832/1583/156 831/1991/156 834/1584/167 +f 818/1578/166 833/1577/166 610/1585/170 +f 899/1587/171 898/1693/155 838/1588/155 +f 622/1593/173 608/1992/172 611/1591/174 +f 608/1992/172 831/1428/172 611/1591/174 +f 603/1590/173 602/1993/145 607/1592/145 +f 622/1593/173 611/1591/174 612/1594/145 +f 928/1596/164 940/1608/164 929/1597/163 +f 931/1599/162 941/1609/162 932/1600/161 +f 934/1602/168 942/1611/168 935/1603/167 +f 937/1605/165 943/1612/166 938/1606/166 +f 937/1605/165 939/1607/165 940/1608/164 +f 930/1598/163 929/1597/163 941/1609/162 +f 933/1610/161 932/1994/161 942/1611/168 +f 936/1604/167 935/1603/167 938/1606/166 +f 624/1613/175 623/1625/175 849/1614/175 +f 847/1616/162 846/1626/161 626/1617/161 +f 845/1619/168 844/1628/167 628/1620/167 +f 843/1622/177 625/1695/177 850/1623/178 +f 624/1613/175 634/1615/176 631/1159/149 +f 623/1625/175 847/1616/162 851/1618/162 +f 846/1626/161 845/1995/168 627/1627/168 +f 844/1628/167 843/1622/177 848/1624/177 +f 944/1629/179 1144/1996/180 945/1630/180 +f 636/1632/182 635/1997/404 947/1633/183 +f 949/1635/185 960/1648/198 950/1636/186 +f 638/1638/188 640/1637/405 950/1636/186 +f 636/1632/182 948/1634/184 952/1640/190 +f 963/1651/201 959/1647/197 958/1646/196 +f 963/1655/201 964/1653/202 956/1644/194 +f 959/1657/197 955/1998/193 954/1642/192 +f 965/1658/205 643/1667/168 857/1659/167 +f 967/1661/203 637/1697/203 852/1662/162 +f 966/1660/167 857/1659/167 639/1664/204 +f 970/1666/161 641/1999/161 643/1667/168 +f 970/1668/161 968/1663/162 852/1662/162 +f 971/1670/144 983/1682/157 972/1671/157 +f 974/1673/149 984/1683/155 975/1674/155 +f 977/1676/150 985/1684/154 978/1677/154 +f 980/1679/143 986/1685/156 981/1680/156 +f 983/1682/157 974/1673/149 976/1675/149 +f 984/1683/155 977/1676/150 979/1678/150 +f 985/1684/154 980/1679/143 982/1681/143 +f 986/1685/156 971/2000/144 973/1686/144 +f 820/1579/169 899/1587/171 837/1589/171 +f 896/1688/154 895/1694/206 840/1689/206 +f 897/1691/150 896/1688/154 839/1690/154 +f 898/1693/155 897/1691/150 841/1692/150 +f 819/1586/170 610/1585/170 840/1689/206 +f 625/1695/177 630/1158/143 632/1160/143 +f 987/1696/207 635/1700/207 637/1697/203 +f 969/1665/204 639/1664/204 638/1698/208 +f 635/1700/207 987/1696/207 988/1699/208 +f 853/1701/209 993/1710/209 989/1702/210 +f 946/1631/181 949/2001/185 990/1704/211 +f 854/1703/210 989/1702/210 991/1705/144 +f 642/1706/144 991/1705/144 992/1707/212 +f 852/1709/213 996/1715/213 993/1710/209 +f 855/1708/212 992/1707/212 994/1711/214 +f 856/1712/214 994/1711/214 995/1713/215 +f 637/1166/149 636/1165/149 996/1715/213 +f 636/1165/149 953/1718/191 997/1717/191 +f 996/1715/213 636/1165/149 997/1717/191 +f 990/1704/211 949/2001/185 640/1169/143 +f 639/1168/143 857/2002/215 995/1716/215 +f 990/1704/211 640/1169/143 995/1716/215 +f 945/1630/180 1144/1996/180 997/1717/191 +f 945/1719/180 953/1641/191 952/1640/190 +f 960/1648/198 949/1635/185 946/1720/181 +f 958/1646/196 946/1720/181 945/1719/180 +f 908/1721/216 907/1733/150 998/1722/150 +f 823/1724/218 908/1721/216 999/1723/217 +f 824/1462/220 823/1724/218 1000/1725/219 +f 649/1178/221 648/1177/221 1001/1726/222 +f 906/1727/223 1001/1726/222 1002/1728/224 +f 892/1730/226 674/1739/210 821/1731/210 +f 825/1729/225 1002/1728/224 998/1722/150 +f 891/1734/144 890/1737/212 822/1735/212 +f 890/1737/212 675/1743/227 904/1738/227 +f 674/1739/210 891/1734/144 903/1736/144 +f 644/1173/228 646/1175/228 905/1732/226 +f 646/1175/228 653/1740/228 892/1730/226 +f 905/1732/226 646/1175/228 892/1730/226 +f 858/1742/229 647/2003/229 904/1738/227 +f 904/1738/227 675/1743/227 858/1742/229 +f 675/1743/227 828/2004/229 650/1744/229 +f 1003/1745/230 1007/1753/150 829/1746/150 +f 1004/1748/231 830/1754/223 909/1749/225 +f 1006/1751/233 1003/1745/230 911/1747/216 +f 1005/1750/232 909/1749/225 829/1746/150 +f 859/1465/220 1006/1751/233 910/1752/218 +f 652/1181/221 651/1180/221 830/1754/223 +f 863/1755/234 877/2005/244 876/1756/235 +f 656/1757/236 876/2006/235 875/1758/237 +f 860/1760/239 868/2007/406 871/1761/240 +f 861/1763/242 860/1760/239 870/1764/241 +f 862/1766/144 861/1763/242 869/1767/243 +f 862/1766/144 661/2008/144 877/1769/244 +f 1008/1770/245 662/2009/245 879/1771/149 +f 1010/1773/246 878/1778/246 664/1774/247 +f 663/1776/248 662/2009/245 1008/1770/245 +f 1009/1772/149 879/1771/149 878/1778/246 +f 1013/1779/249 881/1786/249 880/1780/250 +f 667/1782/251 666/1787/252 1015/1783/252 +f 1017/1785/143 665/2010/143 881/1786/249 +f 666/1787/252 665/2010/143 1017/1785/143 +f 669/1198/253 668/1799/261 1018/1788/254 +f 1020/1790/255 1021/1792/257 670/1791/256 +f 1021/1792/257 1022/1794/258 883/1793/258 +f 1022/1794/258 1024/2011/259 884/1795/259 +f 1023/1796/260 885/2012/260 884/1797/259 +f 668/1799/261 885/2012/260 1023/1796/260 +f 1025/1800/262 886/1492/262 673/1801/263 +f 887/1493/265 1145/2013/265 1027/1803/266 +f 888/1804/267 1027/1803/266 1028/1805/268 +f 1028/1805/268 1030/2014/269 671/1807/269 +f 1029/1808/270 672/2015/270 671/1809/269 +f 673/1801/263 672/2015/270 1029/1808/270 +f 1031/1811/271 1061/1843/284 1032/1812/164 +f 1034/1814/272 1063/1845/301 1035/1815/273 +f 1037/1817/275 1044/1824/281 1038/1818/276 +f 1040/1820/278 1045/1825/282 1041/1821/279 +f 1043/1823/271 1047/1828/284 1044/1824/281 +f 1045/1825/282 1050/1832/287 1046/1826/283 +f 1040/1827/278 1042/1881/280 1047/1828/284 +f 1034/1829/272 1036/2016/274 1048/1830/285 +f 1049/1831/286 1048/1830/285 1046/1826/283 +f 1051/1833/288 1057/1839/294 1052/1834/289 +f 1054/1836/291 1060/1842/297 1055/1837/292 +f 1057/1839/294 1064/1846/302 1058/1840/295 +f 1059/1841/296 1062/1844/298 1060/1842/297 +f 1056/1838/293 1055/1837/292 1061/1843/284 +f 1062/1844/298 1059/1841/296 1039/1819/299 +f 1063/1845/301 1058/1840/295 1064/1846/302 +f 1051/1833/288 1053/1835/290 1065/1847/303 +f 1067/1849/305 1087/1869/324 1066/1848/304 +f 1034/1814/272 1074/2017/312 1068/1850/306 +f 1069/1851/307 1104/2018/407 1054/1836/291 +f 1070/1852/308 1072/1854/310 1045/1825/282 +f 1054/1836/291 1104/2018/407 1071/1853/309 +f 1072/1854/310 1077/1859/315 1050/1832/287 +f 1059/1841/296 1071/1853/309 1073/1855/311 +f 1049/1831/286 1105/2019/342 1074/1856/312 +f 1075/1857/313 1076/1858/314 1065/1847/303 +f 1076/1858/314 1103/2020/167 1067/1849/305 +f 1077/1859/315 1105/2019/342 1049/1831/286 +f 1073/1855/316 1079/1861/318 1037/1817/275 +f 1078/1860/317 1075/1857/313 1053/1835/290 +f 1079/1861/318 1082/1864/321 1043/1823/271 +f 1080/1862/319 1078/1860/317 1052/1834/289 +f 1081/1863/320 1083/1865/322 1031/1811/271 +f 1082/1864/321 1070/2021/308 1040/1827/278 +f 1063/1845/301 1068/1850/306 1080/1862/319 +f 1083/1865/322 1069/1851/307 1056/1838/293 +f 1084/1866/162 1102/2022/149 1085/1867/149 +f 1087/1869/324 1084/2023/162 1086/1870/323 +f 1066/1848/304 1086/1870/323 1088/1871/325 +f 1051/1833/288 1088/1871/325 1089/1872/326 +f 1057/1839/294 1089/1872/326 1090/1873/327 +f 1090/1873/327 1091/1874/328 1035/1815/273 +f 1036/1816/274 1035/1815/273 1091/1874/328 +f 1048/1830/285 1036/2016/274 1092/1876/329 +f 1048/1830/285 1093/1877/330 1094/1878/331 +f 1046/1826/283 1094/1878/331 1095/1879/332 +f 1041/1821/279 1095/1879/332 1096/1880/333 +f 1042/1881/280 1096/2024/333 1097/1882/334 +f 1047/1828/284 1097/1882/334 1098/1883/335 +f 1044/1824/281 1098/1883/335 1099/1884/336 +f 1062/1844/298 1038/1818/300 1099/1884/337 +f 1100/1885/338 1106/2025/408 1060/1842/297 +f 1060/1842/297 1106/2025/408 1101/1886/339 +f 1055/1837/292 1101/1886/339 1085/1887/340 +f 1061/1843/284 1085/1887/340 1102/1888/341 +f 1103/1889/167 1076/1893/314 1083/1890/143 +f 1069/1892/143 1083/1890/143 1076/1893/314 +f 1104/1895/143 1069/1892/143 1075/1894/313 +f 1079/1899/143 1073/2026/143 1071/1897/143 +f 1080/1898/319 1068/2027/306 1082/1900/143 +f 1082/1900/143 1068/2027/306 1074/1901/312 +f 1086/1868/323 1085/1867/149 1101/1906/149 +f 1106/1908/149 1089/1910/326 1088/1907/325 +f 1098/1911/149 1089/1910/326 1100/1909/149 +f 1097/1914/149 1091/2028/328 1090/1913/327 +f 1092/1915/329 1091/2028/328 1097/1914/149 +f 1107/1920/343 1119/1933/343 1108/1921/149 +f 1110/1923/344 1127/1945/344 1111/1924/143 +f 1113/1926/345 1118/1932/349 1114/1927/346 +f 1115/1929/144 1114/2029/346 1116/1930/347 +f 1118/1932/349 1113/1926/345 1108/1921/350 +f 1117/1931/348 1116/1930/347 1110/1923/352 +f 1120/1934/354 1121/1935/355 1118/1932/349 +f 1122/1937/356 1121/1935/355 1120/1934/354 +f 1125/1942/359 1124/1940/358 1122/1937/356 +f 1116/1930/347 1124/1940/358 1125/1942/359 +f 1110/1923/344 1125/1942/360 1126/1944/360 +f 1126/1944/360 1125/1942/360 1123/1939/145 +f 1123/1939/145 1120/1934/361 1129/1947/361 +f 1129/1947/361 1120/1934/361 1119/1933/343 +f 728/1513/144 729/1951/362 727/1948/362 +f 730/1949/363 721/1273/364 893/1512/364 +f 729/1951/362 730/1949/363 725/1950/363 +f 741/1517/144 742/1955/362 740/1952/362 +f 743/1953/363 735/1293/364 894/1516/364 +f 743/1953/363 739/1954/363 740/1952/362 +f 1130/1956/365 1143/1971/365 1131/1957/142 +f 1133/1959/150 1142/1968/150 1134/1960/366 +f 1132/1958/142 1131/1957/142 1136/1962/367 +f 1138/1964/368 1141/1967/145 1139/1965/145 +f 1135/1961/366 1134/1960/366 1139/1965/145 +f 1137/1963/367 1136/1962/367 1142/1968/150 +f 695/1970/369 679/2030/369 1138/1964/368 +f 1138/1964/368 1140/1966/368 691/1969/369 +f 1140/1966/368 687/2031/369 691/1969/369 +f 690/1309/371 682/2032/370 1143/1971/365 +f 1143/1971/365 1130/1956/365 694/1520/370 +f 1130/1956/365 681/2033/370 694/1520/370 +f 759/1972/372 786/2034/372 788/1973/373 +f 760/1330/374 787/1367/374 785/1365/375 +f 788/1973/373 790/1976/376 763/1975/376 +f 790/1976/376 792/2035/377 765/1977/377 +f 789/1370/378 787/1367/374 760/1330/374 +f 765/1977/377 792/2035/377 794/1378/379 +f 794/1378/379 796/1380/380 769/1342/380 +f 764/1335/381 791/1373/381 789/1370/378 +f 750/1318/382 778/1356/382 773/1351/383 +f 793/1375/384 791/1373/381 764/1335/381 +f 780/1358/385 778/1356/382 750/1318/382 +f 769/1346/380 796/1383/380 772/1382/386 +f 782/1360/387 780/1358/385 753/1321/385 +f 747/1344/386 772/1382/386 774/1978/142 +f 748/1316/383 773/1351/383 827/1421/388 +f 751/1979/142 774/1978/142 779/1980/389 +f 749/1317/388 827/1421/388 826/1419/150 +f 783/1363/390 782/1360/387 755/1323/387 +f 779/1980/389 781/1983/391 754/1982/391 +f 744/1312/150 826/1419/150 777/1355/392 +f 781/1983/391 784/1985/393 757/1984/393 +f 777/1355/392 776/1354/394 770/1347/394 +f 758/1328/375 785/1365/375 783/1363/390 +f 784/1985/393 786/2034/372 759/1972/372 +f 806/1392/395 817/1406/395 816/1405/396 +f 808/1986/397 804/1397/398 798/1399/398 +f 810/1396/399 812/1400/400 813/1402/400 +f 799/1385/401 805/1391/401 810/1396/399 +f 806/1392/395 805/1391/401 799/1385/401 +f 809/1526/402 807/1989/403 801/1988/403 +f 807/1989/403 808/1986/397 800/1987/397 +l 1111 1109 diff --git a/src/main/resources/assets/hbm/models/weapons/henry.obj b/src/main/resources/assets/hbm/models/weapons/henry.obj new file mode 100644 index 000000000..03ba3df7f --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/henry.obj @@ -0,0 +1,1694 @@ +# Blender v2.79 (sub 0) OBJ File: 'henry.blend' +# www.blender.org +o Sight +v -0.125000 1.250000 -0.218750 +v 0.125000 1.250000 -0.218750 +v -0.125000 1.250000 -0.156250 +v 0.125000 1.250000 -0.156250 +v -0.125000 2.000000 -0.218750 +v 0.125000 2.000000 -0.218750 +v -0.125000 2.000000 -0.156250 +v 0.125000 2.000000 -0.156250 +v -0.062500 1.875000 -0.218750 +v 0.062500 1.875000 -0.218750 +v -0.062500 1.875000 -0.156250 +v 0.062500 1.875000 -0.156250 +v -0.062500 1.250000 -0.218750 +v 0.062500 1.250000 -0.218750 +v -0.062500 1.250000 -0.156250 +v 0.062500 1.250000 -0.156250 +vt 0.017857 0.456522 +vt -0.000000 0.478261 +vt 0.005952 0.456522 +vt 0.017857 0.445652 +vt 0.053571 0.489130 +vt 0.029762 0.478261 +vt 0.053571 0.478261 +vt 0.059524 0.478261 +vt 0.053571 0.347826 +vt 0.059524 0.347826 +vt 0.023810 0.347826 +vt 0.023810 0.478261 +vt 0.035714 0.456522 +vt 0.047619 0.456522 +vt 0.041667 0.456522 +vt 0.047619 0.347826 +vt 0.041667 0.347826 +vt 0.041667 0.456522 +vt 0.029762 0.347826 +vt -0.000000 0.347826 +vt 0.005952 0.445652 +vt 0.029762 0.489130 +vt 0.041667 0.347826 +vt 0.035714 0.347826 +vt 0.017857 0.347826 +vt 0.005952 0.347826 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s off +f 12/1/1 7/2/1 11/3/1 +f 11/3/2 10/4/2 12/1/2 +f 7/5/3 6/6/3 5/7/3 +f 7/8/4 1/9/4 3/10/4 +f 4/11/5 6/6/5 8/12/5 +f 5/7/6 10/13/6 9/14/6 +f 11/15/5 13/16/5 9/14/5 +f 10/13/4 16/17/4 12/18/4 +f 12/1/1 4/11/1 8/12/1 +f 2/19/6 10/13/6 6/6/6 +f 3/20/1 11/3/1 7/2/1 +f 9/14/6 1/9/6 5/7/6 +f 12/1/1 8/12/1 7/2/1 +f 11/3/2 9/21/2 10/4/2 +f 7/5/3 8/22/3 6/6/3 +f 7/8/4 5/7/4 1/9/4 +f 4/11/5 2/19/5 6/6/5 +f 5/7/6 6/6/6 10/13/6 +f 11/15/5 15/23/5 13/16/5 +f 10/13/4 14/24/4 16/17/4 +f 12/1/1 16/25/1 4/11/1 +f 2/19/6 14/24/6 10/13/6 +f 3/20/1 15/26/1 11/3/1 +f 9/14/6 13/16/6 1/9/6 +o Bullet +v -0.099437 0.786939 5.875000 +v 0.000000 0.828127 5.875000 +v -0.140625 0.687502 5.875000 +v -0.099437 0.588065 5.875000 +v 0.000000 0.546877 5.875000 +v 0.099437 0.588065 5.875000 +v 0.140625 0.687502 5.875000 +v 0.099437 0.786939 5.875000 +v -0.099437 0.786939 6.375000 +v 0.000000 0.828127 6.375000 +v -0.140625 0.687502 6.375000 +v -0.099437 0.588065 6.375000 +v 0.000000 0.546877 6.375000 +v 0.099437 0.588065 6.375000 +v 0.140625 0.687502 6.375000 +v 0.099437 0.786939 6.375000 +v -0.049718 0.737221 6.625000 +v 0.000000 0.757815 6.625000 +v -0.070312 0.687502 6.625000 +v -0.049718 0.637784 6.625000 +v 0.000000 0.617190 6.625000 +v 0.049718 0.637784 6.625000 +v 0.070312 0.687502 6.625000 +v 0.049718 0.737221 6.625000 +vt 0.023809 0.923983 +vt 0.015419 0.930330 +vt 0.011943 0.945652 +vt 0.015419 0.960974 +vt 0.023809 0.967321 +vt 0.032200 0.960974 +vt 0.035676 0.945652 +vt 0.032200 0.930330 +vt 0.023810 0.880435 +vt -0.000000 0.891304 +vt -0.000000 0.880435 +vt 0.071429 0.815217 +vt 0.023810 0.793478 +vt 0.071429 0.793478 +vt 0.071429 0.771739 +vt 0.023810 0.750000 +vt 0.071429 0.750000 +vt 0.071429 0.902174 +vt 0.071429 0.880435 +vt 0.071429 0.858696 +vt 0.023810 0.836957 +vt 0.071429 0.836957 +vt 0.023810 0.815217 +vt 0.023810 0.771739 +vt 0.071429 0.923913 +vt 0.023810 0.902174 +vt 0.023810 0.858696 +vt 0.011629 0.934783 +vt 0.009966 0.942113 +vt 0.005952 0.945149 +vt -0.000000 0.836957 +vt -0.000000 0.826087 +vt -0.000000 0.815217 +vt -0.000000 0.771739 +vt -0.000000 0.913043 +vt -0.000000 0.902174 +vt -0.000000 0.858696 +vt -0.000000 0.804348 +vt -0.000000 0.793478 +vt -0.000000 0.750000 +vt 0.023810 0.923913 +vt 0.001938 0.942113 +vt 0.000276 0.934783 +vt 0.001938 0.927453 +vt 0.005952 0.924417 +vt 0.009966 0.927453 +vt -0.000000 0.847826 +vt -0.000000 0.782609 +vt -0.000000 0.869565 +vt -0.000000 0.760870 +vn 0.0000 0.0000 -1.0000 +vn -0.9627 -0.0000 0.2707 +vn -0.4833 -0.4833 0.7300 +vn -0.6835 -0.0000 0.7300 +vn 0.7071 0.7071 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -1.0000 -0.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.6835 -0.0000 0.7300 +vn 0.4833 0.4833 0.7300 +vn 0.0000 0.6835 0.7300 +vn -0.6807 0.6807 0.2707 +vn 0.0000 0.9627 0.2707 +vn 0.6807 0.6807 0.2707 +vn 0.9627 0.0000 0.2707 +vn 0.4833 -0.4833 0.7300 +vn 0.6807 -0.6807 0.2707 +vn -0.6807 -0.6807 0.2707 +vn 0.0000 -0.6835 0.7300 +vn -0.4833 0.4833 0.7300 +vn 0.0000 -0.9627 0.2707 +s off +f 21/27/7 20/28/7 19/29/7 +f 19/29/7 17/30/7 18/31/7 +f 18/31/7 24/32/7 19/29/7 +f 24/32/7 23/33/7 19/29/7 +f 23/33/7 22/34/7 19/29/7 +f 22/34/7 21/27/7 19/29/7 +s 1 +f 27/35/8 36/36/9 35/37/10 +f 24/38/11 31/39/12 23/40/12 +f 22/41/13 29/42/14 21/43/14 +f 20/44/15 27/35/16 19/45/16 +f 17/46/17 26/47/18 18/48/18 +f 18/48/18 32/49/11 24/38/11 +f 23/40/12 30/50/13 22/41/13 +f 21/51/14 28/52/15 20/44/15 +f 19/45/16 25/53/17 17/46/17 +f 39/54/19 40/55/20 34/56/21 +f 25/53/22 34/57/21 26/47/23 +f 32/49/24 34/58/21 40/59/20 +f 31/39/25 38/60/26 30/50/27 +f 28/52/28 37/61/29 36/62/9 +f 27/35/8 33/63/30 25/53/22 +f 31/39/25 40/64/20 39/65/19 +f 30/50/27 37/66/29 29/42/31 +f 27/35/8 28/52/28 36/36/9 +f 24/38/11 32/49/11 31/39/12 +f 22/41/13 30/50/13 29/42/14 +f 20/44/15 28/52/15 27/35/16 +f 17/46/17 25/53/17 26/47/18 +f 18/48/18 26/47/18 32/49/11 +f 23/40/12 31/39/12 30/50/13 +f 21/51/14 29/67/14 28/52/15 +f 19/45/16 27/35/16 25/53/17 +f 34/56/21 33/68/30 35/69/10 +f 35/69/10 36/70/9 34/56/21 +f 36/70/9 37/71/29 34/56/21 +f 37/71/29 38/72/26 34/56/21 +f 38/72/26 39/54/19 34/56/21 +f 25/53/22 33/73/30 34/57/21 +f 32/49/24 26/47/23 34/58/21 +f 31/39/25 39/74/19 38/60/26 +f 28/52/28 29/67/31 37/61/29 +f 27/35/8 35/75/10 33/63/30 +f 31/39/25 32/49/24 40/64/20 +f 30/50/27 38/76/26 37/66/29 +o Front +v 0.062500 1.187500 6.000000 +v 0.187500 1.062500 6.000000 +v -0.187500 1.062500 6.000000 +v -0.062500 1.187500 6.000000 +v 0.187500 0.937500 6.000000 +v 0.062500 0.812500 6.000000 +v -0.062500 0.812500 6.000000 +v -0.187500 0.937500 6.000000 +v 0.062500 0.812499 8.000000 +v -0.062500 0.812499 8.000000 +v 0.187500 0.937499 8.000000 +v 0.187500 1.062499 8.000000 +v 0.062500 1.187499 8.000000 +v -0.062500 1.187499 8.000000 +v -0.187500 0.937499 8.000000 +v -0.187500 1.062499 8.000000 +v -0.125000 0.937499 8.000000 +v -0.125000 1.062499 8.000000 +v 0.062500 0.874999 8.000000 +v -0.062500 0.874999 8.000000 +v 0.062500 1.124999 8.000000 +v -0.062500 1.124999 8.000000 +v 0.125000 0.937499 8.000000 +v 0.125000 1.062499 8.000000 +v -0.125000 0.937499 7.000000 +v -0.125000 1.062499 7.000000 +v 0.062500 0.874999 7.000000 +v -0.062500 0.874999 7.000000 +v 0.062500 1.124999 7.000000 +v -0.062500 1.124999 7.000000 +v 0.125000 0.937499 7.000000 +v 0.125000 1.062499 7.000000 +v 0.000000 0.875000 5.937500 +v -0.132582 0.820082 5.937500 +v -0.187500 0.687500 5.937500 +v -0.132582 0.554917 5.937500 +v 0.000000 0.500000 5.937500 +v 0.132582 0.554917 5.937500 +v 0.187500 0.687500 5.937500 +v 0.132582 0.820082 5.937500 +v -0.132582 0.820085 7.875000 +v 0.000000 0.875002 7.875000 +v -0.187500 0.687502 7.875000 +v -0.132582 0.554920 7.875000 +v 0.000000 0.500002 7.875000 +v 0.132582 0.554920 7.875000 +v 0.187500 0.687502 7.875000 +v 0.132582 0.820085 7.875000 +v -0.125000 1.062499 7.937500 +v -0.125000 1.312499 7.937500 +v -0.125000 1.062499 7.687500 +v -0.125000 1.312499 7.687500 +v 0.125000 1.062499 7.937500 +v 0.125000 1.312499 7.937500 +v 0.125000 1.062499 7.687500 +v 0.125000 1.312499 7.687500 +v 0.062500 1.124999 7.687500 +v -0.062500 1.124999 7.687500 +v -0.062500 1.124999 7.937500 +v 0.062500 1.124999 7.937500 +vt 0.238095 0.108696 +vt 0.267857 0.076087 +vt 0.285714 0.130435 +vt 0.029762 0.163043 +vt 0.041667 0.130435 +vt 0.047619 0.130435 +vt 0.238095 0.054348 +vt 0.047619 0.021739 +vt 0.238095 0.021739 +vt 0.238095 0.130435 +vt 0.047619 0.108696 +vt 0.238095 0.163043 +vt 0.047619 0.000000 +vt 0.238095 -0.000000 +vt 0.238095 0.217391 +vt 0.047619 0.184783 +vt 0.238095 0.184783 +vt 0.047619 0.163043 +vt 0.238095 0.076087 +vt 0.047619 0.054348 +vt 0.047619 0.076087 +vt 0.000000 0.130435 +vt 0.017857 0.152174 +vt 0.017857 0.163043 +vt 0.041667 0.108696 +vt 0.029762 0.152174 +vt 0.029762 0.086957 +vt 0.029762 0.076087 +vt 0.017857 0.086957 +vt 0.017857 0.076087 +vt 0.005952 0.108696 +vt 0.000000 0.108696 +vt 0.005952 0.130435 +vt 0.113095 0.293478 +vt 0.095238 0.282609 +vt 0.101190 0.250000 +vt 0.149477 0.292260 +vt 0.154684 0.315217 +vt 0.119125 0.315217 +vt 0.154685 0.250000 +vt 0.149477 0.272958 +vt 0.136905 0.282467 +vt 0.851190 0.434783 +vt 0.827381 0.478261 +vt 0.827381 0.434783 +vt 0.851190 0.478261 +vt 0.875000 0.478261 +vt 0.869048 0.510870 +vt 0.898810 0.434783 +vt 0.898810 0.478261 +vt 0.875000 0.434783 +vt 0.857143 0.402174 +vt 0.267857 0.163043 +vt 0.255952 0.163043 +vt 0.255952 0.076087 +vt 0.285714 0.108696 +vt 0.047619 0.217391 +vt 0.113095 0.250000 +vt 0.119048 0.260870 +vt 0.119048 0.282609 +vt 0.101190 0.293478 +vt 0.095238 0.260870 +vt 0.149477 0.338175 +vt 0.136905 0.347684 +vt 0.124333 0.338175 +vt 0.124333 0.292260 +vt 0.136905 0.282750 +vt 0.124333 0.272958 +vt 0.119125 0.250000 +vt 0.124333 0.227043 +vt 0.136905 0.217533 +vt 0.149477 0.227043 +vt 0.857143 0.510870 +vt 0.851190 0.521739 +vt 0.875000 0.521739 +vt 0.869048 0.402174 +vt 0.875000 0.391304 +vt 0.851190 0.391304 +vt -0.000000 0.315217 +vt 0.095238 0.326087 +vt 0.000000 0.326087 +vt -0.000000 0.260870 +vt 0.000000 0.282609 +vt 0.000000 0.228261 +vt 0.095238 0.250000 +vt 0.000000 0.250000 +vt 0.000000 0.217391 +vt 0.095238 0.228261 +vt -0.000000 0.293478 +vt 0.095238 0.315217 +vt 0.095238 0.347826 +vt 0.000000 0.347826 +vt 0.095238 0.293478 +vt 0.339286 0.369565 +vt 0.154762 0.391304 +vt 0.154762 0.369565 +vt 0.339286 0.326087 +vt 0.154762 0.347826 +vt 0.154762 0.326087 +vt 0.339286 0.282609 +vt 0.154762 0.260870 +vt 0.339286 0.260870 +vt 0.339286 0.239130 +vt 0.154762 0.217391 +vt 0.339286 0.217391 +vt 0.339286 0.347826 +vt 0.339286 0.304348 +vt 0.154762 0.304348 +vt 0.154762 0.282609 +vt 0.154762 0.239130 +vt 0.095238 0.217391 +vt 0.339286 0.391304 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.7071 -0.7071 -0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 -1.0000 -0.0000 +vn -0.7071 -0.7071 -0.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7071 0.7071 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.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.9239 -0.3827 0.0000 +s off +f 41/77/32 45/78/32 47/79/32 +f 56/80/33 62/81/33 54/82/33 +f 45/83/34 49/84/34 46/85/34 +f 44/86/35 53/87/35 41/77/35 +f 43/88/36 54/82/36 44/86/36 +f 46/85/37 50/89/37 47/90/37 +f 47/91/38 55/92/38 48/93/38 +f 48/93/39 56/94/39 43/88/39 +f 42/95/40 51/96/40 45/83/40 +f 41/77/41 52/97/41 42/95/41 +f 50/98/33 57/99/33 55/100/33 +f 54/82/33 61/101/33 53/87/33 +f 55/100/33 58/102/33 56/80/33 +f 53/87/33 64/103/33 52/104/33 +f 52/104/33 63/105/33 51/106/33 +f 51/106/33 59/107/33 49/108/33 +f 49/108/33 60/109/33 50/98/33 +f 71/110/33 69/111/33 66/112/33 +f 76/113/32 75/114/32 79/115/32 +f 87/116/33 88/117/33 82/118/33 +f 90/119/39 91/120/39 89/121/39 +f 92/122/32 96/123/32 97/124/32 +f 96/123/40 93/125/40 95/126/40 +f 94/127/33 90/119/33 99/128/33 +f 92/122/35 94/127/35 96/123/35 +f 47/79/32 48/129/32 43/130/32 +f 43/130/32 44/86/32 41/77/32 +f 41/77/32 42/131/32 45/78/32 +f 45/78/32 46/132/32 47/79/32 +f 47/79/32 43/130/32 41/77/32 +f 56/80/33 58/102/33 62/81/33 +f 45/83/34 51/96/34 49/84/34 +f 44/86/35 54/82/35 53/87/35 +f 43/88/36 56/94/36 54/82/36 +f 46/85/37 49/84/37 50/89/37 +f 47/91/38 50/133/38 55/92/38 +f 48/93/39 55/92/39 56/94/39 +f 42/95/40 52/97/40 51/96/40 +f 41/77/41 53/87/41 52/97/41 +f 50/98/33 60/109/33 57/99/33 +f 54/82/33 62/81/33 61/101/33 +f 55/100/33 57/99/33 58/102/33 +f 53/87/33 61/101/33 64/103/33 +f 52/104/33 64/103/33 63/105/33 +f 51/106/33 63/105/33 59/107/33 +f 49/108/33 59/107/33 60/109/33 +f 66/112/33 65/134/33 68/135/33 +f 68/135/33 67/136/33 71/110/33 +f 71/110/33 72/137/33 69/111/33 +f 69/111/33 70/138/33 66/112/33 +f 66/112/33 68/135/33 71/110/33 +f 75/114/32 74/139/32 73/140/32 +f 73/140/32 80/141/32 75/114/32 +f 80/141/32 79/115/32 75/114/32 +f 79/115/32 78/142/32 77/143/32 +f 77/143/32 76/113/32 79/115/32 +f 82/118/33 81/144/33 83/145/33 +f 83/145/33 84/146/33 82/118/33 +f 84/146/33 85/147/33 82/118/33 +f 85/147/33 86/148/33 82/118/33 +f 86/148/33 87/116/33 82/118/33 +f 90/119/39 92/122/39 91/120/39 +f 98/149/32 91/150/32 92/122/32 +f 96/123/32 95/151/32 97/124/32 +f 97/124/32 98/149/32 92/122/32 +f 96/123/40 94/127/40 93/125/40 +f 100/152/33 93/153/33 94/127/33 +f 90/119/33 89/154/33 99/128/33 +f 99/128/33 100/152/33 94/127/33 +f 92/122/35 90/119/35 94/127/35 +s 1 +f 63/155/42 67/156/43 59/157/43 +f 62/158/44 69/111/45 61/159/45 +f 57/160/46 66/161/47 58/162/47 +f 58/162/47 70/138/44 62/158/44 +f 60/163/48 65/164/46 57/160/46 +f 64/165/49 71/166/42 63/155/42 +f 59/157/43 68/167/48 60/168/48 +f 61/159/45 72/169/49 64/165/49 +f 76/170/38 85/171/37 84/172/38 +f 74/173/36 83/174/39 81/175/36 +f 80/176/41 87/177/40 79/178/40 +f 78/179/34 85/180/37 77/181/37 +f 75/182/39 84/172/38 83/174/39 +f 73/183/35 81/175/36 82/184/35 +f 73/183/35 88/185/41 80/176/41 +f 79/178/40 86/186/34 78/179/34 +f 63/155/42 71/166/42 67/156/43 +f 62/158/44 70/138/44 69/111/45 +f 57/160/46 65/164/46 66/161/47 +f 58/162/47 66/161/47 70/138/44 +f 60/163/48 68/187/48 65/164/46 +f 64/165/49 72/169/49 71/166/42 +f 59/157/43 67/156/43 68/167/48 +f 61/159/45 69/111/45 72/169/49 +f 76/170/38 77/188/37 85/171/37 +f 74/173/36 75/182/39 83/174/39 +f 80/176/41 88/185/41 87/177/40 +f 78/179/34 86/186/34 85/180/37 +f 75/182/39 76/170/38 84/172/38 +f 73/183/35 74/173/36 81/175/36 +f 73/183/35 82/184/35 88/185/41 +f 79/178/40 87/177/40 86/186/34 +o Hammer +v 0.000000 1.250000 -2.625000 +v -0.044194 1.231694 -2.625000 +v -0.062500 1.187500 -2.625000 +v -0.044194 1.143306 -2.625000 +v 0.000000 1.125000 -2.625000 +v 0.044194 1.143306 -2.625000 +v 0.062500 1.187500 -2.625000 +v 0.044194 1.231694 -2.625000 +v -0.044194 1.231694 -2.875000 +v 0.000000 1.250000 -2.875000 +v -0.062500 1.187500 -2.875000 +v -0.044194 1.143306 -2.875000 +v 0.000000 1.125000 -2.875000 +v 0.044194 1.143306 -2.875000 +v 0.062500 1.187500 -2.875000 +v 0.044194 1.231694 -2.875000 +v -0.062500 0.750000 -2.875000 +v 0.062500 0.750000 -2.875000 +v -0.062500 1.375000 -2.875000 +v 0.062500 1.375000 -2.875000 +v -0.062500 1.500000 -3.000000 +v 0.062500 1.500000 -3.000000 +v -0.062500 1.375000 -2.937500 +v 0.062500 1.375000 -2.937500 +v -0.062500 1.250000 -2.937500 +v 0.062500 1.250000 -2.937500 +v -0.062500 1.125000 -3.062500 +v 0.062500 1.125000 -3.062500 +v -0.062500 1.062500 -3.187500 +v 0.062500 1.062500 -3.187500 +v -0.062500 0.937500 -3.312500 +v 0.062500 0.937500 -3.312500 +v -0.062500 0.812500 -3.375000 +v 0.062500 0.812500 -3.375000 +v -0.062500 0.750000 -3.375000 +v 0.062500 0.750000 -3.375000 +vt 0.928571 0.478234 +vt 0.934539 0.489131 +vt 0.928571 0.500027 +vt 0.845238 0.630435 +vt 0.857143 0.608696 +vt 0.839286 0.543478 +vt 0.839286 0.543478 +vt 0.845238 0.630435 +vt 0.839286 0.652174 +vt 0.924352 0.496836 +vt 0.922604 0.489131 +vt 0.924352 0.481426 +vt 0.932791 0.481426 +vt 0.932791 0.496836 +vt 0.839286 0.652174 +vt 0.845238 0.673913 +vt 0.845238 0.652174 +vt 0.886905 0.554348 +vt 0.886905 0.543478 +vt 0.880952 0.576087 +vt 0.869048 0.597826 +vt 0.886905 0.543478 +vt 0.880952 0.576087 +vt 0.886905 0.554348 +vt 0.869048 0.597826 +vt 0.857143 0.608696 +vt 0.845238 0.652174 +vt 0.845238 0.673913 +vt 0.827381 0.673913 +vt 0.827381 0.652174 +vt 0.898810 0.532609 +vt 0.922619 0.521739 +vt 0.922619 0.532609 +vt 0.898810 0.510870 +vt 0.898810 0.521739 +vt 0.898810 0.489130 +vt 0.922619 0.500000 +vt 0.898810 0.500000 +vt 0.898810 0.565217 +vt 0.922619 0.554348 +vt 0.922619 0.565217 +vt 0.922619 0.543478 +vt 0.898810 0.543478 +vt 0.922619 0.510870 +vt 0.898810 0.478261 +vt 0.922619 0.489130 +vt 0.898810 0.554348 +vt 0.827381 0.543478 +vt 0.886905 0.684783 +vt 0.898810 0.663043 +vt 0.898810 0.684783 +vt 0.886905 0.663043 +vt 0.898810 0.641304 +vt 0.886905 0.641304 +vt 0.898810 0.619565 +vt 0.886905 0.619565 +vt 0.898810 0.597826 +vt 0.886905 0.597826 +vt 0.898810 0.576087 +vt 0.886905 0.576087 +vt 0.898810 0.554348 +vt 0.898810 0.543478 +vt 0.839286 0.673913 +vt 0.922619 0.478261 +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.3827 0.9239 +vn 0.0000 0.7071 0.7071 +vn -0.7071 0.7071 -0.0000 +vn 0.0000 1.0000 -0.0000 +vn 0.7071 0.7071 -0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.0000 -0.4472 -0.8944 +vn 0.0000 -0.2298 -0.9732 +vn 0.0000 0.3827 -0.9239 +vn 0.0000 0.8112 -0.5847 +vn 0.0000 0.5847 -0.8112 +vn 0.0000 0.2298 -0.9732 +vn 0.0000 0.0000 -1.0000 +s off +f 105/189/50 107/190/50 101/191/50 +f 125/192/51 127/193/51 117/194/51 +f 118/195/52 126/196/52 120/197/52 +f 101/191/50 102/198/50 103/199/50 +f 103/199/50 104/200/50 105/189/50 +f 105/189/50 106/201/50 107/190/50 +f 107/190/50 108/202/50 101/191/50 +f 101/191/50 103/199/50 105/189/50 +f 119/203/51 121/204/51 123/205/51 +f 119/203/51 123/205/51 125/192/51 +f 133/206/51 135/207/51 131/208/51 +f 135/207/51 117/194/51 131/208/51 +f 129/209/51 131/208/51 117/194/51 +f 127/193/51 129/209/51 117/194/51 +f 117/194/51 119/203/51 125/192/51 +f 118/195/52 136/210/52 132/211/52 +f 136/210/52 134/212/52 132/211/52 +f 132/211/52 130/213/52 118/195/52 +f 130/213/52 128/214/52 118/195/52 +f 124/215/52 122/216/52 120/197/52 +f 128/214/52 126/196/52 118/195/52 +f 126/196/52 124/215/52 120/197/52 +s 1 +f 120/197/53 121/217/54 119/218/53 +f 102/219/55 110/220/56 109/221/55 +f 108/222/57 110/220/56 101/223/56 +f 106/224/58 115/225/52 107/226/52 +f 105/227/59 112/228/60 113/229/59 +f 102/219/55 111/230/51 103/231/51 +f 107/226/52 116/232/57 108/222/57 +f 105/233/59 114/234/58 106/224/58 +f 103/231/51 112/228/60 104/235/60 +f 118/195/50 119/218/53 117/236/50 +f 122/237/61 123/238/62 121/239/61 +f 124/240/62 125/241/63 123/238/62 +f 126/242/63 127/243/64 125/241/63 +f 128/244/64 129/245/64 127/243/64 +f 130/246/64 131/247/65 129/245/64 +f 132/248/65 133/249/66 131/247/65 +f 134/212/66 135/250/67 133/249/66 +f 120/197/53 122/251/54 121/217/54 +f 102/219/55 101/223/56 110/220/56 +f 108/222/57 116/232/57 110/220/56 +f 106/224/58 114/234/58 115/225/52 +f 105/227/59 104/235/60 112/228/60 +f 102/219/55 109/221/55 111/230/51 +f 107/226/52 115/225/52 116/232/57 +f 105/233/59 113/252/59 114/234/58 +f 103/231/51 111/230/51 112/228/60 +f 118/195/50 120/197/53 119/218/53 +f 122/237/61 124/240/62 123/238/62 +f 124/240/62 126/242/63 125/241/63 +f 126/242/63 128/244/64 127/243/64 +f 128/244/64 130/246/64 129/245/64 +f 130/246/64 132/248/65 131/247/65 +f 132/248/65 134/212/66 133/249/66 +f 134/212/66 136/210/67 135/250/67 +o Lever +v -0.125000 0.198188 -2.345635 +v 0.125000 0.198188 -2.345635 +v -0.125000 -0.036735 -2.260129 +v 0.125000 -0.036735 -2.260129 +v -0.125000 -0.426690 -2.783309 +v 0.125000 -0.426690 -2.783309 +v -0.125000 0.176812 -2.404365 +v 0.125000 0.176812 -2.404365 +v -0.125000 -0.058111 -2.318860 +v 0.125000 -0.058111 -2.318860 +v -0.125000 -0.485421 -2.761932 +v 0.125000 -0.485421 -2.761932 +v 0.125000 -0.357163 -2.409548 +v -0.125000 -0.357163 -2.409548 +v 0.125000 -0.298432 -2.430924 +v -0.125000 -0.298432 -2.430924 +v -0.125000 -0.437486 -3.178446 +v 0.125000 -0.437486 -3.178446 +v -0.125000 -0.496217 -3.157070 +v 0.125000 -0.496217 -3.157070 +v -0.125000 -0.736754 -4.000677 +v 0.125000 -0.736754 -4.000677 +v -0.125000 -0.795484 -3.979300 +v 0.125000 -0.795484 -3.979300 +v -0.125000 -0.720741 -4.139421 +v 0.125000 -0.720741 -4.139421 +v -0.125000 -0.699365 -4.080690 +v 0.125000 -0.699365 -4.080690 +v -0.125000 -0.485818 -4.224926 +v 0.125000 -0.485818 -4.224926 +v -0.125000 -0.464442 -4.166195 +v 0.125000 -0.464442 -4.166195 +v -0.125000 -0.325638 -4.150311 +v 0.125000 -0.325638 -4.150311 +v -0.125000 -0.384369 -4.128934 +v 0.125000 -0.384369 -4.128934 +v -0.125000 -0.026370 -3.328080 +v 0.125000 -0.026370 -3.328080 +v -0.125000 -0.085101 -3.306704 +v 0.125000 -0.085101 -3.306704 +v -0.125000 -0.101079 -3.167866 +v 0.125000 -0.101079 -3.167866 +v -0.125000 -0.122456 -3.226596 +v 0.125000 -0.122456 -3.226596 +v -0.125000 -0.336003 -3.082361 +v 0.125000 -0.336003 -3.082361 +v -0.125000 -0.357379 -3.141091 +v 0.125000 -0.357379 -3.141091 +v -0.125000 -0.277272 -3.103737 +v 0.125000 -0.277272 -3.103737 +v -0.125000 -0.336003 -3.082361 +v 0.125000 -0.336003 -3.082361 +vt 0.827381 0.804348 +vt 0.851190 0.793478 +vt 0.851190 0.804348 +vt 0.851190 0.847826 +vt 0.827381 0.858696 +vt 0.827381 0.847826 +vt 0.886905 0.804348 +vt 0.922619 0.793478 +vt 0.922619 0.804348 +vt 0.886905 0.847826 +vt 0.922619 0.858696 +vt 0.886905 0.858696 +vt 0.880952 0.858696 +vt 0.857143 0.858696 +vt 0.880952 0.793478 +vt 0.857143 0.793478 +vt 0.958333 0.728261 +vt 0.970238 0.739130 +vt 0.952381 0.739130 +vt 0.970238 0.782609 +vt 0.958333 0.793478 +vt 0.952381 0.782609 +vt 0.952381 0.728261 +vt 0.869048 0.739130 +vt 0.869048 0.728261 +vt 0.952381 0.793478 +vt 0.869048 0.782609 +vt 0.863095 0.793478 +vt 0.851190 0.782609 +vt 0.851190 0.739130 +vt 0.863095 0.728261 +vt 0.827381 0.793478 +vt 0.827381 0.782609 +vt 0.827381 0.728261 +vt 0.851190 0.728261 +vt 0.970238 0.782609 +vt 0.958333 0.793478 +vt 0.952381 0.782609 +vt 0.970238 0.739130 +vt 0.958333 0.728261 +vt 0.964286 0.728261 +vt 0.952381 0.739130 +vt 0.869048 0.728261 +vt 0.952381 0.728261 +vt 0.869048 0.793478 +vt 0.869048 0.782609 +vt 0.869048 0.739130 +vt 0.857143 0.728261 +vt 0.863095 0.728261 +vt 0.857143 0.793478 +vt 0.851190 0.782609 +vt 0.851190 0.728261 +vt 0.827381 0.739130 +vt 0.827381 0.728261 +vt 0.851190 0.793478 +vt 0.827381 0.782609 +vt 0.958333 0.804348 +vt 0.958333 0.847826 +vt 0.958333 0.858696 +vt 0.827381 0.793478 +vt 0.851190 0.858696 +vt 0.886905 0.793478 +vt 0.922619 0.847826 +vt 0.964286 0.728261 +vt 0.964286 0.793478 +vt 0.869048 0.793478 +vt 0.857143 0.793478 +vt 0.857143 0.728261 +vt 0.851190 0.793478 +vt 0.827381 0.739130 +vt 0.964286 0.793478 +vt 0.952381 0.793478 +vt 0.851190 0.739130 +vt 0.863095 0.793478 +vt 0.827381 0.793478 +vt 0.958333 0.793478 +vt 0.922619 0.902174 +vt 0.886905 0.902174 +vt 0.851190 0.902174 +vt 0.880952 0.902174 +vt 0.857143 0.902174 +vt 0.952381 0.684783 +vt 0.958333 0.728261 +vt 0.869048 0.684783 +vt 0.863095 0.728261 +vt 0.839286 0.684783 +vt 0.863095 0.684783 +vt 0.958333 0.728261 +vt 0.952381 0.684783 +vt 0.958333 0.684783 +vt 0.869048 0.684783 +vt 0.863095 0.684783 +vt 0.863095 0.728261 +vt 0.839286 0.684783 +vt 0.958333 0.902174 +vt 0.827381 0.902174 +vt 0.958333 0.684783 +vt 0.839286 0.728261 +vt 0.839286 0.728261 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.3420 0.9397 +vn 0.0000 -0.0436 0.9990 +vn 0.0000 -0.7373 0.6756 +vn 0.0000 -0.9990 -0.0436 +vn 0.0000 0.7373 -0.6756 +vn 0.0000 0.9990 0.0436 +vn 0.0000 0.0436 -0.9990 +vn 0.0000 -0.3420 -0.9397 +vn 0.0000 -0.9990 -0.0438 +vn 0.0000 0.9990 0.0440 +vn 0.0000 -0.6754 -0.7374 +vn 0.0000 0.0434 -0.9991 +vn 0.0000 0.6753 0.7375 +vn 0.0000 -0.0432 0.9991 +vn 0.0000 -0.7370 0.6759 +vn 0.0000 0.7371 -0.6757 +vn 0.0000 -0.6756 -0.7373 +vn 0.0000 0.6756 0.7373 +vn 0.0000 0.9063 0.4226 +vn 0.0000 -0.9063 -0.4226 +s off +f 137/253/68 145/254/68 139/255/68 +f 140/256/69 144/257/69 138/258/69 +f 150/259/68 141/260/68 147/261/68 +f 149/262/69 142/263/69 151/264/69 +f 140/256/69 151/265/69 146/266/69 +f 152/267/68 139/255/68 145/268/68 +f 154/269/69 182/270/69 156/271/69 +f 181/272/68 153/273/68 155/274/68 +f 154/275/69 160/276/69 158/277/69 +f 153/278/68 159/279/68 155/274/68 +f 157/280/68 161/281/68 159/279/68 +f 162/282/69 158/283/69 160/276/69 +f 161/281/68 167/284/68 165/285/68 +f 162/282/69 168/286/69 164/287/69 +f 165/288/68 171/289/68 169/290/68 +f 166/291/69 172/292/69 168/293/69 +f 170/294/69 176/295/69 172/296/69 +f 169/290/68 175/297/68 173/298/68 +f 174/299/69 180/300/69 176/301/69 +f 173/298/68 179/302/68 177/303/68 +f 180/304/69 182/305/69 184/306/69 +f 179/307/68 181/308/68 177/303/68 +f 141/260/68 187/309/68 147/261/68 +f 142/263/69 188/310/69 186/311/69 +f 137/253/68 143/312/68 145/254/68 +f 140/256/69 146/313/69 144/257/69 +f 150/259/68 152/314/68 141/260/68 +f 149/262/69 148/315/69 142/263/69 +f 140/256/69 149/262/69 151/265/69 +f 152/267/68 150/259/68 139/255/68 +f 154/269/69 184/316/69 182/270/69 +f 181/272/68 183/317/68 153/273/68 +f 154/275/69 156/271/69 160/276/69 +f 153/278/68 157/318/68 159/279/68 +f 157/280/68 163/319/68 161/281/68 +f 162/282/69 164/320/69 158/283/69 +f 161/281/68 163/321/68 167/284/68 +f 162/282/69 166/322/69 168/286/69 +f 165/288/68 167/323/68 171/289/68 +f 166/291/69 170/294/69 172/292/69 +f 170/294/69 174/299/69 176/295/69 +f 169/290/68 171/324/68 175/297/68 +f 174/299/69 178/325/69 180/300/69 +f 173/298/68 175/326/68 179/302/68 +f 180/304/69 178/325/69 182/305/69 +f 179/307/68 183/327/68 181/308/68 +f 141/260/68 185/328/68 187/309/68 +f 142/263/69 148/315/69 188/310/69 +s 1 +f 137/253/70 140/256/71 138/258/70 +f 150/259/72 148/315/73 149/262/72 +f 151/264/74 141/329/75 152/330/74 +f 145/331/76 144/257/77 146/313/76 +f 139/255/71 149/262/72 140/256/71 +f 146/266/76 152/332/74 145/333/76 +f 182/270/71 155/274/72 156/271/72 +f 153/334/74 184/335/76 154/275/74 +f 155/274/72 160/276/78 156/271/72 +f 154/275/74 157/336/79 153/334/74 +f 159/279/78 162/282/80 160/276/78 +f 161/281/80 166/322/81 162/282/80 +f 164/337/82 157/336/79 158/277/79 +f 164/337/82 167/338/83 163/339/82 +f 168/340/83 171/341/84 167/342/83 +f 165/288/81 170/294/85 166/291/81 +f 169/290/85 174/299/75 170/294/85 +f 172/296/84 175/343/73 171/341/84 +f 176/295/73 179/344/86 175/343/73 +f 173/298/75 178/325/87 174/299/75 +f 180/345/86 183/346/76 179/344/86 +f 177/303/87 182/305/71 178/325/87 +f 142/263/75 185/347/88 141/329/75 +f 147/261/73 188/310/89 148/315/73 +f 137/253/70 139/255/71 140/256/71 +f 150/259/72 147/261/73 148/315/73 +f 151/264/74 142/263/75 141/329/75 +f 145/331/76 143/348/77 144/257/77 +f 139/255/71 150/259/72 149/262/72 +f 146/266/76 151/265/74 152/332/74 +f 182/270/71 181/272/71 155/274/72 +f 153/334/74 183/349/76 184/335/76 +f 155/274/72 159/279/78 160/276/78 +f 154/275/74 158/277/79 157/336/79 +f 159/279/78 161/281/80 162/282/80 +f 161/281/80 165/285/81 166/322/81 +f 164/337/82 163/339/82 157/336/79 +f 164/337/82 168/350/83 167/338/83 +f 168/340/83 172/296/84 171/341/84 +f 165/288/81 169/290/85 170/294/85 +f 169/290/85 173/298/75 174/299/75 +f 172/296/84 176/295/73 175/343/73 +f 176/295/73 180/345/86 179/344/86 +f 173/298/75 177/303/87 178/325/87 +f 180/345/86 184/351/76 183/346/76 +f 177/303/87 181/308/71 182/305/71 +f 142/263/75 186/311/88 185/347/88 +f 147/261/73 187/309/89 188/310/89 +o Gun +v -0.187500 0.937500 6.000000 +v -0.062500 0.812500 6.000000 +v 0.062500 0.812500 6.000000 +v 0.187500 0.937500 6.000000 +v -0.062500 1.187500 6.000000 +v -0.187500 1.062500 6.000000 +v 0.187500 1.062500 6.000000 +v 0.062500 1.187500 6.000000 +v 0.062500 1.187500 -0.625000 +v 0.187500 1.062500 -0.625000 +v -0.187500 1.062500 -0.625000 +v -0.062500 1.187500 -0.625000 +v 0.187500 0.937500 -0.625000 +v 0.062500 0.812500 -0.625000 +v -0.062500 0.812500 -0.625000 +v -0.187500 0.937500 -0.625000 +v 0.000000 0.875000 -0.625000 +v -0.132582 0.820082 -0.625000 +v -0.187500 0.687500 -0.625000 +v -0.132582 0.554917 -0.625000 +v 0.000000 0.500000 -0.625000 +v 0.132582 0.554917 -0.625000 +v 0.187500 0.687500 -0.625000 +v 0.132582 0.820082 -0.625000 +v 0.000000 0.875000 5.937500 +v -0.132582 0.820082 5.937500 +v -0.187500 0.687500 5.937500 +v -0.132582 0.554917 5.937500 +v 0.000000 0.500000 5.937500 +v 0.132582 0.554917 5.937500 +v 0.187500 0.687500 5.937500 +v 0.132582 0.820082 5.937500 +v -0.250000 0.312500 -1.000000 +v -0.125000 0.187500 -1.000000 +v 0.125000 0.187500 -1.000000 +v 0.250000 0.312500 -1.000000 +v 0.250000 0.500000 -0.875000 +v 0.125000 0.375000 -0.875000 +v -0.125000 0.375000 -0.875000 +v -0.250000 0.500000 -0.875000 +v -0.250000 0.562500 -0.625000 +v -0.125000 0.437500 -0.625000 +v 0.125000 0.437500 -0.625000 +v 0.250000 0.562500 -0.625000 +v -0.125000 1.250000 -0.625000 +v -0.250000 1.125000 -0.625000 +v 0.250000 1.125000 -0.625000 +v 0.125000 1.250000 -0.625000 +v -0.250000 1.125000 -2.625000 +v -0.125000 1.250000 -2.625000 +v -0.250000 0.312500 -2.625000 +v 0.250000 0.312500 -2.625000 +v 0.125000 1.250000 -2.625000 +v 0.250000 1.125000 -2.625000 +v -0.250000 0.312500 -2.000000 +v -0.125000 0.187500 -2.000000 +v 0.125000 0.187500 -2.000000 +v 0.250000 0.312500 -2.000000 +v -0.250000 0.062500 -2.312500 +v -0.125000 -0.062500 -2.312500 +v 0.125000 -0.062500 -2.312500 +v 0.250000 0.062500 -2.312500 +v -0.125000 0.187500 -2.625000 +v 0.125000 0.187500 -2.625000 +v -0.250000 1.000000 -2.687500 +v -0.125000 1.125000 -2.687500 +v 0.125000 1.125000 -2.687500 +v 0.250000 1.000000 -2.687500 +v -0.250000 0.625000 -3.500000 +v -0.125000 0.750000 -3.500000 +v 0.125000 0.750000 -3.500000 +v 0.250000 0.625000 -3.500000 +v -0.250000 0.312500 -2.875000 +v 0.250000 0.312500 -2.875000 +v -0.125000 0.187500 -2.875000 +v 0.125000 0.187500 -2.875000 +v -0.250000 0.062500 -3.500000 +v 0.250000 0.062500 -3.500000 +v -0.125000 -0.062500 -3.500000 +v 0.125000 -0.062500 -3.500000 +v -0.250000 0.250000 -4.500000 +v -0.125000 0.375000 -4.500000 +v 0.125000 0.375000 -4.500000 +v 0.250000 0.250000 -4.500000 +v -0.250000 -1.625000 -8.000000 +v 0.250000 -1.625000 -8.000000 +v -0.125000 -1.750000 -8.000000 +v 0.125000 -1.750000 -8.000000 +v -0.125000 -0.250000 -8.000000 +v 0.125000 -0.250000 -8.000000 +v -0.250000 -0.375000 -8.000000 +v 0.250000 -0.375000 -8.000000 +v -0.125000 0.875000 -5.000000 +v 0.125000 0.875000 -5.000000 +v -0.250000 0.750000 -5.000000 +v 0.250000 0.750000 -5.000000 +v -0.250000 -1.375000 -7.875000 +v -0.250000 -0.625000 -7.875000 +v 0.250000 -1.375000 -7.875000 +v 0.250000 -0.625000 -7.875000 +v 0.062500 1.250000 -2.625000 +v -0.062500 1.125000 -2.625000 +v -0.062500 1.250000 -2.625000 +v 0.062500 1.125000 -2.687500 +v 0.062500 1.125000 -2.625000 +v -0.062500 1.125000 -2.687500 +v -0.062500 0.187500 -2.750000 +v 0.062500 0.187500 -2.750000 +v -0.062500 0.187500 -2.812500 +v 0.062500 0.187500 -2.812500 +v -0.062500 0.061500 -2.812500 +v 0.062500 0.061500 -2.812500 +v -0.062500 0.061500 -2.875000 +v 0.062500 0.061500 -2.875000 +v -0.062500 -0.063500 -2.812500 +v 0.062500 -0.063500 -2.812500 +v -0.062500 -0.063500 -2.875000 +v 0.062500 -0.063500 -2.875000 +v -0.062500 -0.188500 -2.750000 +v 0.062500 -0.188500 -2.750000 +v -0.125000 1.250000 -0.250000 +v 0.125000 1.250000 -0.250000 +v -0.125000 1.250000 -0.125000 +v 0.125000 1.250000 -0.125000 +v 0.125000 1.125000 -0.250000 +v -0.125000 1.125000 -0.250000 +v 0.125000 1.125000 -0.125000 +v -0.125000 1.125000 -0.125000 +v -0.187500 1.250000 -0.281250 +v 0.187500 1.250000 -0.281250 +v -0.187500 1.183709 -0.253791 +v 0.187500 1.183709 -0.253791 +v -0.187500 1.156250 -0.187500 +v 0.187500 1.156250 -0.187500 +v -0.187500 1.183709 -0.121209 +v 0.187500 1.183709 -0.121209 +v -0.187500 1.250000 -0.093750 +v 0.187500 1.250000 -0.093750 +v -0.187500 1.316291 -0.121209 +v 0.187500 1.316291 -0.121209 +v -0.187500 1.343750 -0.187500 +v 0.187500 1.343750 -0.187500 +v -0.187500 1.316291 -0.253791 +v 0.187500 1.316291 -0.253791 +vt 0.964286 0.130435 +vt 0.333333 0.108696 +vt 0.964286 0.108696 +vt 0.303571 0.076087 +vt 0.315476 0.163043 +vt 0.964286 0.184783 +vt 0.333333 0.163043 +vt 0.964286 0.163043 +vt 0.964286 0.076087 +vt 0.333333 0.054348 +vt 0.964286 0.054348 +vt 0.333333 0.076087 +vt 0.333333 0.217391 +vt 0.333333 0.184783 +vt 0.964286 0.021739 +vt 0.333333 0.000000 +vt 0.964286 0.000000 +vt 0.369715 0.272958 +vt 0.357143 0.282467 +vt 0.357143 0.217533 +vt 0.238095 0.478261 +vt 0.267857 0.521739 +vt 0.208333 0.521739 +vt 0.077381 0.684783 +vt 0.077381 0.728261 +vt 0.065476 0.750000 +vt 0.238095 0.934783 +vt 0.208333 0.891304 +vt 0.267857 0.891304 +vt 0.101190 0.858696 +vt 0.077381 0.750000 +vt 0.291667 0.521739 +vt 0.351190 0.576087 +vt 0.273810 0.641304 +vt 0.351190 0.836957 +vt 0.351190 0.934783 +vt 0.291667 0.891304 +vt 0.267857 0.663043 +vt 0.273810 0.771739 +vt 0.267857 0.750000 +vt 0.077381 0.663043 +vt 0.101190 0.554348 +vt 0.059524 0.663043 +vt 0.071429 0.641304 +vt 0.071429 0.663043 +vt 0.077381 0.641304 +vt 0.071429 0.630435 +vt 0.059524 0.641304 +vt 0.059524 0.630435 +vt 0.053571 0.641304 +vt 0.970238 0.413043 +vt 0.976190 0.413043 +vt 0.976190 0.434783 +vt 0.952381 0.413043 +vt 0.958333 0.413043 +vt 0.958333 0.434783 +vt 0.886905 0.543478 +vt 0.898810 0.521739 +vt 0.898810 0.543478 +vt 0.863095 0.543478 +vt 0.886905 0.521739 +vt 0.851190 0.543478 +vt 0.863095 0.521739 +vt 0.827381 0.543478 +vt 0.851190 0.521739 +vt 0.937166 0.396130 +vt 0.943452 0.391375 +vt 0.943452 0.423842 +vt 0.943453 0.456450 +vt 0.937166 0.451696 +vt 0.949738 0.428738 +vt 0.333333 0.130435 +vt 0.303571 0.163043 +vt 0.285714 0.130435 +vt 0.285714 0.108696 +vt 0.315476 0.076087 +vt 0.964286 0.217391 +vt 0.333333 0.021739 +vt 0.344571 0.272958 +vt 0.339363 0.250000 +vt 0.344571 0.227042 +vt 0.369715 0.227042 +vt 0.374922 0.250000 +vt 0.011905 0.750000 +vt 0.011905 0.663043 +vt -0.000000 0.728261 +vt 0.000000 0.684783 +vt 0.065476 0.663043 +vt 0.113095 0.891304 +vt 0.077381 0.847826 +vt 0.351190 0.478261 +vt 0.113095 0.521739 +vt 0.077381 0.565217 +vt 0.970238 0.456522 +vt 0.970238 0.434783 +vt 0.976190 0.391304 +vt 0.976190 0.456522 +vt 0.958333 0.456522 +vt 0.952381 0.434783 +vt 0.952381 0.456522 +vt 0.952381 0.391304 +vt 0.827381 0.521739 +vt 0.949738 0.396130 +vt 0.952342 0.407609 +vt 0.949738 0.419087 +vt 0.937166 0.419087 +vt 0.934563 0.407609 +vt 0.934563 0.440217 +vt 0.937166 0.428738 +vt 0.943453 0.423984 +vt 0.952342 0.440217 +vt 0.949738 0.451696 +vt 1.000000 0.260870 +vt 0.375000 0.239130 +vt 1.000000 0.239130 +vt 1.000000 0.391304 +vt 0.375000 0.369565 +vt 1.000000 0.369565 +vt 1.000000 0.347826 +vt 0.375000 0.326087 +vt 1.000000 0.326087 +vt 1.000000 0.282609 +vt 0.375000 0.260870 +vt 0.375000 0.217391 +vt 1.000000 0.217391 +vt 0.375000 0.347826 +vt 0.375000 0.304348 +vt 1.000000 0.304348 +vt 0.375000 0.282609 +vt 0.095238 0.413043 +vt 0.113095 0.456522 +vt 0.095238 0.456522 +vt 0.208333 0.391304 +vt 0.113095 0.413043 +vt 0.113095 0.391304 +vt 0.113095 0.478261 +vt 0.095238 0.478261 +vt 0.071429 0.413043 +vt 0.095238 0.391304 +vt 0.071429 0.456522 +vt 0.071429 0.478261 +vt 0.208333 0.456522 +vt 0.267857 0.717391 +vt 0.267857 0.728261 +vt 0.267857 0.413043 +vt 0.238095 0.391304 +vt 0.267857 0.391304 +vt 0.267857 0.684783 +vt 0.279762 0.695652 +vt 0.267857 0.695652 +vt 0.208333 0.413043 +vt 0.238095 0.456522 +vt 0.208333 0.478261 +vt 0.238095 0.413043 +vt 0.267857 0.456522 +vt 0.267857 0.478261 +vt 0.279762 0.728261 +vt 0.279762 0.750000 +vt 0.279762 0.684783 +vt 0.351190 0.684783 +vt 0.351190 0.728261 +vt 0.351190 0.750000 +vt 0.279762 0.663043 +vt 0.291667 0.456522 +vt 0.291667 0.413043 +vt 0.291667 0.478261 +vt 0.351190 0.456522 +vt 0.351190 0.391304 +vt 0.351190 0.413043 +vt 0.351190 0.913043 +vt 0.446429 0.956522 +vt 0.351190 0.956522 +vt 0.351190 0.978261 +vt 0.446429 0.978261 +vt 0.351190 0.891304 +vt 0.446429 0.913043 +vt 0.779762 0.456522 +vt 0.779762 0.391304 +vt 0.779762 0.413043 +vt 0.779762 0.478261 +vt 0.815476 0.456522 +vt 0.791667 0.456522 +vt 0.779762 0.695652 +vt 0.815476 0.717391 +vt 0.791667 0.717391 +vt 0.779762 0.913043 +vt 0.494048 0.891304 +vt 0.779762 0.891304 +vt 0.779762 0.956522 +vt 0.494048 0.978261 +vt 0.494048 0.956522 +vt 0.494048 0.913043 +vt 0.767857 0.652174 +vt 0.446429 0.804348 +vt 0.494048 0.891304 +vt 0.779762 0.478261 +vt 0.351190 0.771739 +vt 0.351190 0.869565 +vt 0.827381 0.521739 +vt 0.779762 0.652174 +vt 0.779762 0.521739 +vt 0.446429 0.804348 +vt 0.351190 0.771739 +vt 0.351190 0.869565 +vt 0.827381 0.478261 +vt 0.767857 0.521739 +vt 0.767857 0.652174 +vt 0.988095 0.434783 +vt 0.988095 0.456522 +vt 0.988095 0.413043 +vt 0.988095 0.391304 +vt 0.958333 0.391304 +vt 0.934524 0.456522 +vt 0.898810 0.467391 +vt 0.898810 0.456522 +vt 0.934524 0.467391 +vt 0.898810 0.478261 +vt 0.934524 0.391304 +vt 0.898810 0.402174 +vt 0.898810 0.391304 +vt 0.934524 0.402174 +vt 0.898810 0.413043 +vt 0.934524 0.413043 +vt 0.898810 0.423913 +vt 0.934524 0.423913 +vt 0.898810 0.434783 +vt 0.934524 0.434783 +vt 0.898810 0.445652 +vt 0.934524 0.445652 +vt 0.827381 0.652174 +vt 0.375000 0.391304 +vt 0.071429 0.391304 +vt 0.279762 0.717391 +vt 0.351190 0.663043 +vt 0.291667 0.391304 +vt 0.446429 0.891304 +vt 0.827381 0.695652 +vt 0.779762 0.978261 +vt 0.779762 0.695652 +vt 0.767857 0.521739 +vt 0.970238 0.391304 +vt 0.934524 0.478261 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.8174 0.5760 +vn 0.0000 -0.5547 0.8321 +vn -0.6912 -0.6912 0.2110 +vn 0.5959 -0.5959 0.5384 +vn 0.4851 -0.4851 0.7276 +vn 0.6523 -0.6523 0.3860 +vn -0.5959 -0.5959 0.5384 +vn -0.4851 -0.4851 0.7276 +vn -0.6963 -0.6963 0.1741 +vn -0.6523 -0.6523 0.3860 +vn 0.6963 -0.6963 0.1741 +vn 0.0000 -0.9701 0.2425 +vn 0.6774 -0.6774 0.2868 +vn 0.0000 -0.9436 0.3310 +vn 0.0000 0.9392 -0.3433 +vn 0.0000 0.8507 -0.5257 +vn -0.6679 0.6679 -0.3282 +vn -0.5953 0.5953 -0.5397 +vn 0.5953 0.5953 -0.5397 +vn -0.6774 -0.6774 -0.2868 +vn -0.6912 -0.6912 -0.2110 +vn 0.0000 0.7940 -0.6079 +vn 0.6912 -0.6912 0.2110 +vn -0.6774 -0.6774 0.2868 +vn 0.0000 -0.9436 -0.3310 +vn 0.6774 -0.6774 -0.2868 +vn 0.6912 -0.6912 -0.2110 +vn -0.5280 0.5280 -0.6652 +vn -0.6145 0.6145 -0.4947 +vn 0.6679 0.6679 -0.3282 +vn 0.5280 0.5280 -0.6652 +vn 0.0000 0.9080 -0.4191 +vn -0.6722 0.6722 -0.3103 +vn 0.6145 0.6145 -0.4947 +vn 0.6722 0.6722 -0.3103 +vn 0.0000 -0.9820 0.1891 +vn -0.6993 -0.6993 0.1481 +vn 0.7016 -0.7016 0.1247 +vn 0.0000 -0.9285 0.3714 +vn -0.6804 -0.6804 0.2722 +vn 0.6993 -0.6993 0.1481 +vn 0.6804 -0.6804 0.2722 +vn 0.3354 0.8821 -0.3308 +vn -0.3945 0.8604 -0.3227 +vn -0.3354 0.8821 -0.3308 +vn -0.8795 0.4457 -0.1671 +vn -0.9668 0.2515 0.0444 +vn 0.8795 0.4457 -0.1671 +vn 0.3945 0.8604 -0.3227 +vn -0.3945 -0.8604 0.3227 +vn 0.3354 -0.8821 0.3308 +vn 0.3945 -0.8604 0.3227 +vn -0.8319 -0.5196 0.1948 +vn -0.3354 -0.8821 0.3308 +vn 0.8319 -0.5196 0.1948 +vn 0.9467 -0.3016 0.1131 +vn 0.0000 0.3054 -0.9522 +vn 0.0000 -0.3054 -0.9522 +vn 0.8665 0.4777 0.1445 +vn 0.9263 0.3529 -0.1323 +vn -0.8665 0.4777 0.1445 +vn 0.3458 0.6635 0.6635 +vn 0.2418 0.6861 0.6861 +vn -0.3458 0.6635 0.6635 +vn -0.9467 -0.3016 0.1131 +vn 0.0000 0.2298 -0.9732 +vn 0.0000 -0.2298 -0.9732 +vn 0.9668 0.2515 0.0444 +vn 0.0000 0.7181 -0.6960 +vn 0.0000 0.2282 -0.9736 +vn 0.0000 0.4444 -0.8958 +vn 0.0000 -0.4444 0.8958 +vn 0.0000 -0.2282 0.9736 +vn 0.0000 -0.3827 -0.9239 +vn 0.0000 0.2298 0.9732 +vn 0.0000 0.4472 0.8944 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn -0.7016 -0.7016 0.1247 +vn -0.9263 0.3529 -0.1323 +vn -0.2418 0.6861 0.6861 +s off +f 200/352/90 196/353/90 197/354/90 +f 192/355/91 196/353/91 194/356/91 +f 204/357/92 194/358/92 199/359/92 +f 198/360/93 192/361/93 201/362/93 +f 198/360/94 196/353/94 195/363/94 +f 194/358/95 200/352/95 199/359/95 +f 204/357/96 190/364/96 189/365/96 +f 192/361/97 202/366/97 201/362/97 +f 202/366/98 190/367/98 203/368/98 +f 220/369/91 213/370/91 217/371/91 +f 250/372/93 240/373/93 246/374/93 +f 236/375/91 233/376/91 234/377/91 +f 247/378/92 243/379/92 239/380/92 +f 243/379/92 228/381/92 234/382/92 +f 262/383/93 260/384/93 256/385/93 +f 257/386/92 265/387/92 261/388/92 +f 256/385/93 242/389/93 240/373/93 +f 253/390/92 239/380/92 237/391/92 +f 246/374/93 235/392/93 225/393/93 +f 289/394/99 290/395/99 291/396/99 +f 294/397/93 291/396/93 290/395/93 +f 294/398/90 293/399/90 292/400/90 +f 293/399/92 289/394/92 292/401/92 +f 305/402/92 303/403/92 299/404/92 +f 304/405/93 306/406/93 302/407/93 +f 309/408/92 316/409/92 311/410/92 +f 310/411/99 314/412/99 309/408/99 +f 312/413/93 313/414/93 310/411/93 +f 311/415/91 315/416/91 312/413/91 +f 324/417/93 322/418/93 330/419/93 +f 329/420/92 331/421/92 323/422/92 +f 200/352/90 193/423/90 196/353/90 +f 194/356/91 189/424/91 190/425/91 +f 190/425/91 191/426/91 192/355/91 +f 192/355/91 195/427/91 196/353/91 +f 196/353/91 193/423/91 194/356/91 +f 194/356/91 190/425/91 192/355/91 +f 204/357/92 189/365/92 194/358/92 +f 198/360/93 195/363/93 192/361/93 +f 198/360/94 197/354/94 196/353/94 +f 194/358/95 193/423/95 200/352/95 +f 204/357/96 203/428/96 190/364/96 +f 192/361/97 191/429/97 202/366/97 +f 202/366/98 191/429/98 190/367/98 +f 213/370/91 214/430/91 215/431/91 +f 215/431/91 216/432/91 213/370/91 +f 216/432/91 217/371/91 213/370/91 +f 217/371/91 218/433/91 219/434/91 +f 219/434/91 220/369/91 217/371/91 +f 234/377/91 229/435/91 232/436/91 +f 229/435/91 230/437/91 232/436/91 +f 230/437/91 231/438/91 232/436/91 +f 232/436/91 235/439/91 234/377/91 +f 235/439/91 236/375/91 234/377/91 +f 243/379/92 221/440/92 228/381/92 +f 228/381/92 229/441/92 234/382/92 +f 234/382/92 237/391/92 243/379/92 +f 237/391/92 239/380/92 243/379/92 +f 256/385/93 240/373/93 262/383/93 +f 262/383/93 266/442/93 260/384/93 +f 261/388/92 239/380/92 253/390/92 +f 253/390/92 257/386/92 261/388/92 +f 225/393/93 224/443/93 246/374/93 +f 246/374/93 240/373/93 242/389/93 +f 242/389/93 235/392/93 246/374/93 +f 235/392/93 232/444/93 225/393/93 +f 289/394/99 293/399/99 290/395/99 +f 294/398/90 290/395/90 293/399/90 +f 297/445/92 301/446/92 299/404/92 +f 301/446/92 305/402/92 299/404/92 +f 305/402/92 307/447/92 303/403/92 +f 299/404/92 295/448/92 297/445/92 +f 302/407/93 298/449/93 300/450/93 +f 298/449/93 296/451/93 300/450/93 +f 304/405/93 308/452/93 306/406/93 +f 302/407/93 300/450/93 304/405/93 +f 309/408/92 314/412/92 316/409/92 +f 310/411/99 313/414/99 314/412/99 +f 312/413/93 315/416/93 313/414/93 +f 311/415/91 316/453/91 315/416/91 +f 322/418/93 320/454/93 330/419/93 +f 320/454/93 318/455/93 330/419/93 +f 318/455/93 332/456/93 330/419/93 +f 330/419/93 328/457/93 326/458/93 +f 326/458/93 324/417/93 330/419/93 +f 331/421/92 317/459/92 323/422/92 +f 317/459/92 319/460/92 323/422/92 +f 319/460/92 321/461/92 323/422/92 +f 323/422/92 325/462/92 327/463/92 +f 327/463/92 329/420/92 323/422/92 +s 1 +f 211/464/93 218/465/97 210/466/97 +f 209/467/98 216/468/96 208/469/96 +f 207/470/92 214/471/95 206/472/95 +f 212/473/94 219/474/93 211/464/93 +f 210/466/97 217/475/98 209/476/98 +f 208/469/96 215/477/92 207/470/92 +f 206/472/95 213/478/90 205/479/90 +f 205/479/90 220/480/94 212/473/94 +f 227/481/100 223/482/101 226/483/100 +f 243/484/102 222/485/96 221/486/96 +f 226/483/103 224/487/104 225/488/105 +f 227/481/106 221/486/107 222/485/107 +f 230/489/108 228/490/109 227/481/106 +f 231/491/110 225/488/105 232/492/110 +f 230/489/111 226/483/100 231/491/111 +f 245/493/112 224/487/97 223/482/97 +f 222/485/98 245/493/113 223/482/98 +f 233/376/90 291/494/114 238/495/115 +f 234/382/95 238/495/116 237/391/117 +f 242/389/118 236/375/94 235/392/94 +f 251/496/119 247/497/96 239/498/120 +f 241/499/115 292/500/121 289/501/114 +f 244/502/113 249/503/98 245/493/113 +f 245/493/112 250/372/97 246/504/122 +f 247/497/96 244/502/123 243/484/102 +f 248/505/98 252/506/124 249/503/98 +f 250/372/97 252/506/125 240/507/126 +f 237/391/117 254/508/127 253/509/128 +f 241/499/129 242/389/118 255/510/130 +f 292/500/121 259/511/131 258/512/131 +f 253/509/128 258/512/132 257/513/132 +f 256/514/133 259/511/134 255/510/130 +f 251/496/124 264/515/135 252/506/124 +f 239/498/120 263/516/136 251/496/119 +f 252/506/125 262/517/137 240/507/126 +f 263/516/135 268/518/138 264/515/135 +f 263/516/136 265/519/139 267/520/139 +f 264/515/140 266/442/141 262/517/137 +f 259/521/142 270/522/143 258/523/144 +f 257/524/145 270/522/143 269/525/146 +f 260/526/147 271/527/148 259/521/142 +f 267/520/149 276/528/150 268/518/151 +f 267/520/149 273/529/152 275/530/153 +f 268/518/151 274/531/154 266/442/155 +f 275/532/99 274/531/156 276/533/99 +f 280/534/157 277/535/99 278/536/99 +f 278/537/148 284/538/158 280/539/159 +f 277/540/143 283/541/160 281/542/144 +f 277/540/143 282/543/142 278/537/148 +f 271/527/161 284/538/158 282/543/162 +f 282/543/162 270/522/163 271/527/161 +f 270/522/163 283/541/160 269/525/146 +f 286/544/92 269/545/146 283/546/160 +f 269/545/146 273/547/152 265/548/164 +f 257/549/145 269/545/146 265/548/164 +f 285/550/165 288/551/166 287/552/165 +f 274/531/154 272/553/167 266/554/155 +f 272/553/167 260/555/147 266/554/155 +f 273/556/156 287/552/165 274/531/156 +f 272/553/167 287/557/93 288/558/93 +f 255/510/130 242/389/118 256/514/133 +f 254/508/127 237/391/117 238/495/116 +f 291/494/114 254/508/168 238/495/115 +f 302/407/169 297/445/170 298/449/170 +f 295/448/171 300/559/172 296/560/171 +f 306/406/173 301/446/169 302/407/169 +f 299/404/172 304/561/174 300/559/172 +f 303/403/174 308/562/175 304/561/174 +f 308/563/176 305/402/173 306/406/173 +f 289/501/114 236/375/90 241/499/115 +f 233/376/90 289/501/114 291/494/114 +f 318/564/99 319/565/176 317/566/99 +f 320/567/176 321/568/98 319/565/176 +f 322/569/98 323/570/177 321/571/98 +f 324/572/177 325/573/91 323/570/177 +f 326/574/91 327/575/178 325/573/91 +f 328/576/178 329/577/90 327/575/178 +f 330/578/90 331/579/179 329/577/90 +f 332/580/179 317/566/99 331/579/179 +f 236/375/94 242/389/118 241/499/129 +f 238/495/116 234/382/95 233/376/95 +f 286/581/166 280/534/157 288/551/166 +f 211/464/93 219/474/93 218/465/97 +f 209/467/98 217/582/98 216/468/96 +f 207/470/92 215/477/92 214/471/95 +f 212/473/94 220/480/94 219/474/93 +f 210/466/97 218/465/97 217/475/98 +f 208/469/96 216/468/96 215/477/92 +f 206/472/95 214/471/95 213/478/90 +f 205/479/90 213/478/90 220/480/94 +f 227/481/100 222/485/101 223/482/101 +f 243/484/102 244/502/123 222/485/96 +f 226/483/103 223/482/104 224/487/104 +f 227/481/106 228/490/109 221/486/107 +f 230/489/108 229/583/108 228/490/109 +f 231/491/110 226/483/103 225/488/105 +f 230/489/111 227/481/100 226/483/100 +f 245/493/112 246/504/122 224/487/97 +f 222/485/98 244/502/113 245/493/113 +f 251/496/119 248/505/96 247/497/96 +f 241/499/115 255/510/168 292/500/121 +f 244/502/113 248/505/98 249/503/98 +f 245/493/112 249/503/97 250/372/97 +f 247/497/96 248/505/96 244/502/123 +f 248/505/98 251/496/124 252/506/124 +f 250/372/97 249/503/97 252/506/125 +f 258/512/131 254/508/168 294/584/121 +f 292/500/121 255/510/168 259/511/131 +f 258/512/131 294/584/121 292/500/121 +f 253/509/128 254/508/127 258/512/132 +f 256/514/133 260/585/134 259/511/134 +f 251/496/124 263/516/135 264/515/135 +f 239/498/120 261/586/180 263/516/136 +f 252/506/125 264/515/140 262/517/137 +f 263/516/135 267/520/138 268/518/138 +f 263/516/136 261/586/180 265/519/139 +f 264/515/140 268/518/141 266/442/141 +f 259/521/142 271/527/148 270/522/143 +f 257/524/145 258/523/144 270/522/143 +f 260/526/147 272/587/167 271/527/148 +f 267/520/149 275/530/153 276/528/150 +f 267/520/149 265/519/164 273/529/152 +f 268/518/151 276/528/150 274/531/154 +f 275/532/99 273/556/156 274/531/156 +f 280/534/157 279/588/157 277/535/99 +f 278/537/148 282/543/142 284/538/158 +f 277/540/143 279/589/181 283/541/160 +f 277/540/143 281/542/144 282/543/142 +f 271/527/161 272/587/167 284/538/158 +f 282/543/162 281/542/182 270/522/163 +f 270/522/163 281/542/182 283/541/160 +f 283/546/160 279/590/181 286/544/92 +f 286/544/92 285/591/92 269/545/146 +f 269/545/146 285/591/92 273/547/152 +f 285/550/165 286/581/166 288/551/166 +f 274/531/154 287/557/93 272/553/167 +f 273/556/156 285/550/165 287/552/165 +f 288/558/93 280/534/159 284/538/158 +f 284/538/158 272/553/167 288/558/93 +f 291/494/114 294/584/121 254/508/168 +f 302/407/169 301/446/169 297/445/170 +f 295/448/171 299/404/172 300/559/172 +f 306/406/173 305/402/173 301/446/169 +f 299/404/172 303/403/174 304/561/174 +f 303/403/174 307/447/175 308/562/175 +f 308/563/176 307/592/176 305/402/173 +f 233/376/90 236/375/90 289/501/114 +f 318/564/99 320/567/176 319/565/176 +f 320/567/176 322/593/98 321/568/98 +f 322/569/98 324/572/177 323/570/177 +f 324/572/177 326/574/91 325/573/91 +f 326/574/91 328/576/178 327/575/178 +f 328/576/178 330/578/90 329/577/90 +f 330/578/90 332/580/179 331/579/179 +f 332/580/179 318/564/99 317/566/99 +f 286/581/166 279/588/157 280/534/157 diff --git a/src/main/resources/assets/hbm/models/weapons/lasrifle.obj b/src/main/resources/assets/hbm/models/weapons/lasrifle.obj index e6cf75634..5cb099694 100644 --- a/src/main/resources/assets/hbm/models/weapons/lasrifle.obj +++ b/src/main/resources/assets/hbm/models/weapons/lasrifle.obj @@ -1,416 +1,6 @@ # Blender v2.79 (sub 0) OBJ File: 'lasrifle.blend' # www.blender.org -o Plane -v -0.562500 -1.000000 3.000000 -v 0.562500 -1.000000 3.000000 -v -0.562500 -1.000000 -2.000000 -v 0.562500 -1.000000 -2.000000 -v -0.562500 2.000000 -2.000000 -v -0.562500 2.000000 2.000000 -v 0.562500 2.000000 2.000000 -v 0.562500 2.000000 -2.000000 -v 0.000000 1.875000 4.000000 -v -0.250000 1.808013 4.000000 -v -0.433012 1.625000 4.000000 -v -0.500000 1.375000 4.000000 -v -0.433012 1.125000 4.000000 -v -0.250000 0.941987 4.000000 -v 0.000000 0.875000 4.000000 -v 0.250000 0.941987 4.000000 -v 0.433012 1.125000 4.000000 -v 0.500000 1.375000 4.000000 -v 0.433013 1.625000 4.000000 -v 0.250000 1.808012 4.000000 -v 0.000000 1.875000 11.500000 -v -0.250000 1.808013 11.500000 -v -0.433012 1.625000 11.500000 -v -0.500000 1.375000 11.500000 -v -0.433012 1.125000 11.500000 -v -0.250000 0.941987 11.500000 -v 0.000000 0.875000 11.500000 -v 0.250000 0.941987 11.500000 -v 0.433012 1.125000 11.500000 -v 0.500000 1.375000 11.500000 -v 0.433013 1.625000 11.500000 -v 0.250000 1.808012 11.500000 -v 0.562500 0.750000 3.000000 -v -0.562500 0.750000 3.000000 -v 0.000000 1.812500 12.000000 -v -0.218750 1.753886 12.000000 -v -0.378886 1.593750 12.000000 -v -0.437500 1.375000 12.000000 -v -0.378886 1.156250 12.000000 -v -0.218750 0.996114 12.000000 -v 0.000000 0.937500 12.000000 -v 0.218750 0.996114 12.000000 -v 0.378886 1.156250 12.000000 -v 0.437500 1.375000 12.000000 -v 0.378886 1.593750 12.000000 -v 0.218750 1.753886 12.000000 -v -0.218750 1.753892 4.500000 -v 0.000000 1.812506 4.500000 -v -0.378886 1.593756 4.500000 -v -0.437500 1.375006 4.500000 -v -0.378886 1.156256 4.500000 -v -0.218750 0.996120 4.500000 -v 0.000000 0.937506 4.500000 -v 0.218750 0.996120 4.500000 -v 0.378886 1.156256 4.500000 -v 0.437500 1.375006 4.500000 -v 0.378886 1.593756 4.500000 -v 0.218750 1.753892 4.500000 -v -0.500000 0.187500 -2.000000 -v 0.500000 0.187500 -2.000000 -v -0.500000 1.937500 -2.000000 -v 0.500000 1.937500 -2.000000 -v -0.500000 1.937500 -4.000000 -v -0.250000 -0.062500 -2.500000 -v -0.250000 -0.062500 -2.000000 -v 0.500000 1.937500 -4.000000 -v -0.500000 1.437500 -4.750000 -v 0.500000 1.437500 -4.750000 -v -0.250000 -0.812500 -2.500000 -v 0.250000 -0.812500 -2.500000 -v 0.250000 -0.812500 -2.000000 -v -0.250000 -0.812500 -2.000000 -v 0.250000 -0.062500 -2.500000 -v 0.250000 -0.062500 -2.000000 -v -0.500000 0.437500 -4.750000 -v -0.500000 0.187500 -4.500000 -v 0.500000 0.187500 -4.500000 -v 0.500000 0.437500 -4.750000 -v -0.500000 1.187500 -9.750000 -v -0.250000 1.437500 -9.750000 -v -0.250000 1.437500 -4.750000 -v -0.500000 1.187500 -4.750000 -v 0.500000 1.187500 -4.750000 -v 0.250000 1.437500 -4.750000 -v 0.250000 1.437500 -9.750000 -v 0.500000 1.187500 -9.750000 -v -0.250000 -1.062500 -9.750000 -v -0.500000 -0.812500 -9.750000 -v 0.500000 0.687500 -4.750000 -v -0.250000 0.437500 -4.750000 -v 0.250000 0.437500 -4.750000 -v -0.500000 0.687500 -4.750000 -v 0.500000 -0.812500 -9.750000 -v 0.250000 -1.062500 -9.750000 -v -0.500000 -0.802500 -8.250000 -v -0.250000 -1.062500 -8.250000 -v 0.250000 -1.062500 -8.250000 -v 0.500000 -0.812500 -8.250000 -v -0.500000 0.687500 -9.500000 -v 0.125000 0.187500 -3.500000 -v -0.500000 -0.312500 -9.500000 -v 0.500000 0.687500 -9.500000 -v -0.125000 0.187500 -3.500000 -v 0.500000 -0.312500 -9.500000 -v 0.125000 -0.437500 -3.500000 -v -0.125000 -0.437500 -3.500000 -v 0.125000 -1.937500 -4.250000 -v -0.125000 -1.937500 -4.250000 -v 0.125000 -1.937500 -5.250000 -v -0.137500 -1.937500 -5.250000 -v 0.125000 -1.562500 -5.250000 -v -0.137500 -1.562500 -5.250000 -v 0.125000 0.187500 -4.500000 -v -0.137500 0.187500 -4.500000 -v 0.125000 -0.062500 -4.500000 -v -0.137500 -0.062500 -4.500000 -v 0.375000 -0.437500 -3.750000 -v 0.375000 0.187500 -3.750000 -v 0.375000 -1.937500 -4.500000 -v 0.375000 -1.937500 -5.000000 -v 0.375000 -1.562500 -5.000000 -v 0.375000 -0.062500 -4.250000 -v 0.375000 0.187500 -4.250000 -v -0.375000 0.187500 -3.750000 -v -0.375000 -0.437500 -3.750000 -v -0.375000 -1.937500 -4.500000 -v -0.375000 -1.937500 -5.000000 -v -0.375000 -1.562500 -5.000000 -v -0.375000 0.187500 -4.250000 -v -0.375000 -0.062500 -4.250000 -v -0.250000 -0.812500 -2.500000 -v 0.250000 -0.812500 -2.500000 -v -0.250000 -0.812500 -3.750000 -v 0.250000 -0.812500 -3.750000 -v -0.250000 -0.687500 -2.500000 -v 0.250000 -0.687500 -2.500000 -v -0.250000 -0.687500 -3.750000 -v 0.250000 -0.687500 -3.750000 -v -0.562500 -1.000000 -1.500000 -v 0.562500 -1.000000 -1.500000 -v -0.562500 -1.000000 2.000000 -v 0.562500 -1.000000 2.000000 -v -0.562500 -0.750000 -1.500000 -v 0.562500 -0.750000 -1.500000 -v -0.562500 -0.750000 2.000000 -v 0.562500 -0.750000 2.000000 -v -0.562500 -1.000000 -1.500000 -v 0.562500 -1.000000 -1.500000 -v -0.562500 -1.000000 2.000000 -v 0.562500 -1.000000 2.000000 -v 0.437500 -0.750000 -1.375000 -v -0.437500 -0.750000 -1.375000 -v -0.437500 -0.750000 1.875000 -v 0.437500 -0.750000 1.875000 -v 0.562500 -0.750000 -1.500000 -v -0.562500 -0.750000 -1.500000 -v -0.562500 -0.750000 2.000000 -v 0.562500 -0.750000 2.000000 -v 0.437500 0.750000 -1.375000 -v -0.437500 0.750000 -1.375000 -v -0.437500 0.750000 1.875000 -v 0.437500 0.750000 1.875000 -v 0.062500 0.750000 -1.000000 -v 0.312500 0.750000 -1.000000 -v 0.062500 0.750000 -1.250000 -v 0.312500 0.750000 -1.250000 -v -0.312500 0.750000 -1.000000 -v -0.062500 0.750000 -1.000000 -v -0.312500 0.750000 -1.250000 -v -0.062500 0.750000 -1.250000 -v 0.062500 0.875000 -1.250000 -v 0.062500 0.875000 -1.000000 -v 0.312500 0.875000 -1.000000 -v 0.312500 0.875000 -1.250000 -v -0.312500 0.875000 -1.250000 -v -0.312500 0.875000 -1.000000 -v -0.062500 0.875000 -1.000000 -v -0.062500 0.875000 -1.250000 -v 0.000000 1.875000 4.000000 -v -0.250000 1.808013 4.000000 -v -0.433012 1.625000 4.000000 -v -0.500000 1.375000 4.000000 -v -0.433012 1.125000 4.000000 -v -0.250000 0.941987 4.000000 -v 0.000000 0.875000 4.000000 -v 0.250000 0.941987 4.000000 -v 0.433012 1.125000 4.000000 -v 0.500000 1.375000 4.000000 -v 0.433013 1.625000 4.000000 -v 0.250000 1.808012 4.000000 -v -0.218750 1.753892 4.500000 -v 0.000000 1.812506 4.500000 -v -0.378886 1.593756 4.500000 -v -0.437500 1.375006 4.500000 -v -0.378886 1.156256 4.500000 -v -0.218750 0.996120 4.500000 -v 0.000000 0.937506 4.500000 -v 0.218750 0.996120 4.500000 -v 0.378886 1.156256 4.500000 -v 0.437500 1.375006 4.500000 -v 0.378886 1.593756 4.500000 -v 0.218750 1.753892 4.500000 -v 0.000000 1.875000 2.000000 -v -0.250000 1.808013 2.000000 -v -0.433012 1.625000 2.000000 -v -0.500000 1.375000 2.000000 -v -0.433012 1.125000 2.000000 -v -0.250000 0.941987 2.000000 -v 0.000000 0.875000 2.000000 -v 0.250000 0.941987 2.000000 -v 0.433012 1.125000 2.000000 -v 0.500000 1.375000 2.000000 -v 0.433013 1.625000 2.000000 -v 0.250000 1.808012 2.000000 -v -0.218750 1.753892 2.000000 -v 0.000000 1.812506 2.000000 -v -0.378886 1.593756 2.000000 -v -0.437500 1.375006 2.000000 -v -0.378886 1.156256 2.000000 -v -0.218750 0.996120 2.000000 -v 0.000000 0.937506 2.000000 -v 0.218750 0.996120 2.000000 -v 0.378886 1.156256 2.000000 -v 0.437500 1.375006 2.000000 -v 0.378886 1.593756 2.000000 -v 0.218750 1.753892 2.000000 -v 0.000000 0.562500 3.000000 -v -0.218750 0.503886 3.000000 -v -0.378886 0.343750 3.000000 -v -0.437500 0.125000 3.000000 -v -0.378886 -0.093750 3.000000 -v -0.218750 -0.253886 3.000000 -v 0.000000 -0.312500 3.000000 -v 0.218750 -0.253886 3.000000 -v 0.378886 -0.093750 3.000000 -v 0.437500 0.125000 3.000000 -v 0.378886 0.343750 3.000000 -v 0.218750 0.503886 3.000000 -v 0.000000 0.562500 3.250000 -v -0.218750 0.503886 3.250000 -v -0.378886 0.343750 3.250000 -v -0.437500 0.125000 3.250000 -v -0.378886 -0.093750 3.250000 -v -0.218750 -0.253886 3.250000 -v 0.000000 -0.312500 3.250000 -v 0.218750 -0.253886 3.250000 -v 0.378886 -0.093750 3.250000 -v 0.437500 0.125000 3.250000 -v 0.378886 0.343750 3.250000 -v 0.218750 0.503886 3.250000 -v 0.562500 -0.375000 2.000000 -v 0.562500 -0.109835 2.109835 -v 0.562500 0.000000 2.375000 -v 0.562500 -0.109835 2.640165 -v 0.562500 -0.375000 2.750000 -v 0.562500 -0.640165 2.640165 -v 0.562500 -0.750000 2.375000 -v 0.562500 -0.640165 2.109835 -v 1.062500 -0.375000 2.000000 -v 1.062500 -0.109835 2.109835 -v 1.062500 0.000000 2.375000 -v 1.062500 -0.109835 2.640165 -v 1.062500 -0.375000 2.750000 -v 1.062500 -0.640165 2.640165 -v 1.062500 -0.750000 2.375000 -v 1.062500 -0.640165 2.109835 -v 0.812500 -0.625000 2.250000 -v 0.724112 -0.625000 2.286612 -v 0.687500 -0.625000 2.375000 -v 0.724112 -0.625000 2.463388 -v 0.812500 -0.625000 2.500000 -v 0.900888 -0.625000 2.463388 -v 0.937500 -0.625000 2.375000 -v 0.900888 -0.625000 2.286612 -v 0.812500 -1.125000 2.250000 -v 0.724112 -1.125000 2.286612 -v 0.687500 -1.125000 2.375000 -v 0.724112 -1.125000 2.463388 -v 0.812500 -1.125000 2.500000 -v 0.900888 -1.125000 2.463388 -v 0.937500 -1.125000 2.375000 -v 0.900888 -1.125000 2.286612 -v 0.724112 -1.150888 2.275888 -v 0.687500 -1.213388 2.338388 -v 0.724112 -1.275888 2.400888 -v 0.812500 -1.301777 2.426777 -v 0.900888 -1.275888 2.400888 -v 0.937500 -1.213388 2.338388 -v 0.900888 -1.150888 2.275888 -v 0.724112 -1.161612 2.250000 -v 0.687500 -1.250000 2.250000 -v 0.724112 -1.338388 2.250000 -v 0.812500 -1.375000 2.250000 -v 0.900888 -1.338388 2.250000 -v 0.937500 -1.250000 2.250000 -v 0.900888 -1.161612 2.250000 -v 0.812500 -1.125000 -0.750000 -v 0.724112 -1.161612 -0.750000 -v 0.687500 -1.250000 -0.750000 -v 0.724112 -1.338388 -0.750000 -v 0.812500 -1.375000 -0.750000 -v 0.900888 -1.338388 -0.750000 -v 0.937500 -1.250000 -0.750000 -v 0.900888 -1.161612 -0.750000 -v -0.812500 -0.625000 2.250000 -v -0.900888 -0.625000 2.286612 -v -0.937500 -0.625000 2.375000 -v -0.900888 -0.625000 2.463388 -v -0.812500 -0.625000 2.500000 -v -0.724112 -0.625000 2.463388 -v -0.687500 -0.625000 2.375000 -v -0.724112 -0.625000 2.286612 -v -0.812500 -1.125000 2.250000 -v -0.900888 -1.125000 2.286612 -v -0.937500 -1.125000 2.375000 -v -0.900888 -1.125000 2.463388 -v -0.812500 -1.125000 2.500000 -v -0.724112 -1.125000 2.463388 -v -0.687500 -1.125000 2.375000 -v -0.724112 -1.125000 2.286612 -v -0.900888 -1.150888 2.275888 -v -0.937500 -1.213388 2.338388 -v -0.900888 -1.275888 2.400888 -v -0.812500 -1.301777 2.426777 -v -0.724112 -1.275888 2.400888 -v -0.687500 -1.213388 2.338388 -v -0.724112 -1.150888 2.275888 -v -0.900888 -1.161612 2.250000 -v -0.937500 -1.250000 2.250000 -v -0.900888 -1.338388 2.250000 -v -0.812500 -1.375000 2.250000 -v -0.724112 -1.338388 2.250000 -v -0.687500 -1.250000 2.250000 -v -0.724112 -1.161612 2.250000 -v -0.812500 -1.125000 -0.750000 -v -0.900888 -1.161612 -0.750000 -v -0.937500 -1.250000 -0.750000 -v -0.900888 -1.338388 -0.750000 -v -0.812500 -1.375000 -0.750000 -v -0.724112 -1.338388 -0.750000 -v -0.687500 -1.250000 -0.750000 -v -0.724112 -1.161612 -0.750000 -v 0.775888 -1.125000 -0.838388 -v 0.713388 -1.161612 -0.775888 -v 0.713388 -1.338388 -0.775888 -v 0.775888 -1.375000 -0.838388 -v 0.838388 -1.338388 -0.900888 -v 0.864277 -1.250000 -0.926777 -v 0.838388 -1.161612 -0.900888 -v 0.687500 -1.125000 -0.875000 -v 0.687500 -1.161612 -0.786612 -v 0.687500 -1.338388 -0.786612 -v 0.687500 -1.375000 -0.875000 -v 0.687500 -1.338388 -0.963388 -v 0.687500 -1.250000 -1.000000 -v 0.687500 -1.161612 -0.963388 -v -0.775888 -1.125000 -0.838388 -v -0.838388 -1.161612 -0.900888 -v -0.864277 -1.250000 -0.926777 -v -0.838388 -1.338388 -0.900888 -v -0.775888 -1.375000 -0.838388 -v -0.713388 -1.338388 -0.775888 -v -0.713388 -1.161612 -0.775888 -v -0.687500 -1.125000 -0.875000 -v -0.687500 -1.161612 -0.963388 -v -0.687500 -1.250000 -1.000000 -v -0.687500 -1.338388 -0.963388 -v -0.687500 -1.375000 -0.875000 -v -0.687500 -1.338388 -0.786612 -v -0.687500 -1.161612 -0.786612 -v -0.500000 0.187500 -2.500000 -v -0.500000 0.187500 -2.000000 -v 0.500000 0.187500 -2.500000 -v 0.500000 0.187500 -2.000000 -v 0.500000 0.500000 -2.750000 -v 0.500000 1.125000 -2.750000 -v 0.500000 1.125000 -2.625000 -v 0.500000 0.500000 -2.625000 -v 1.062500 0.687500 -2.750000 -v 0.875000 0.500000 -2.750000 -v 0.875000 1.125000 -2.750000 -v 1.062500 0.937500 -2.750000 -v 1.062500 0.937500 -2.625000 -v 0.875000 1.125000 -2.625000 -v 0.875000 0.500000 -2.625000 -v 1.062500 0.687500 -2.625000 -v -0.750000 1.062500 -3.250000 -v -0.750000 1.062500 -1.250000 -v -0.926777 0.989277 -3.250000 -v -0.926777 0.989277 -1.250000 -v -1.000000 0.812500 -3.250000 -v -1.000000 0.812500 -1.250000 -v -0.926777 0.635723 -3.250000 -v -0.926777 0.635723 -1.250000 -v -0.750000 0.562500 -3.250000 -v -0.750000 0.562500 -1.250000 -v -0.573223 0.635723 -3.250000 -v -0.573223 0.635723 -1.250000 -v -0.500000 0.812500 -3.250000 -v -0.500000 0.812500 -1.250000 -v -0.573223 0.989277 -3.250000 -v -0.573223 0.989277 -1.250000 -v 0.125000 0.187500 -3.250000 -v -0.125000 0.187500 -3.250000 -v 0.125000 -0.437500 -3.125000 -v -0.125000 -0.437500 -3.125000 -v 0.125000 0.187500 -3.500000 -v -0.125000 0.187500 -3.500000 -v 0.125000 -0.437500 -3.500000 -v -0.125000 -0.437500 -3.500000 +o Scope v -0.750000 2.437500 -1.500000 v 0.750000 2.437500 -1.500000 v -0.750000 2.437500 -4.500000 @@ -819,239 +409,6 @@ v -0.250000 2.312500 -3.750000 v -0.250000 2.312500 -3.000000 v -0.375000 2.312500 -3.750000 v -0.375000 2.312500 -3.000000 -v -0.500000 0.500000 -2.750000 -v -0.500000 1.125000 -2.750000 -v -0.500000 1.125000 -2.625000 -v -0.500000 0.500000 -2.625000 -v -1.062500 0.687500 -2.750000 -v -0.875000 0.500000 -2.750000 -v -0.875000 1.125000 -2.750000 -v -1.062500 0.937500 -2.750000 -v -1.062500 0.937500 -2.625000 -v -0.875000 1.125000 -2.625000 -v -0.875000 0.500000 -2.625000 -v -1.062500 0.687500 -2.625000 -v 0.500000 0.500000 -1.875000 -v 0.500000 1.125000 -1.875000 -v 0.500000 1.125000 -1.750000 -v 0.500000 0.500000 -1.750000 -v 1.062500 0.687500 -1.875000 -v 0.875000 0.500000 -1.875000 -v 0.875000 1.125000 -1.875000 -v 1.062500 0.937500 -1.875000 -v 1.062500 0.937500 -1.750000 -v 0.875000 1.125000 -1.750000 -v 0.875000 0.500000 -1.750000 -v 1.062500 0.687500 -1.750000 -v -0.500000 0.500000 -1.875000 -v -0.500000 1.125000 -1.875000 -v -0.500000 1.125000 -1.750000 -v -0.500000 0.500000 -1.750000 -v -1.062500 0.687500 -1.875000 -v -0.875000 0.500000 -1.875000 -v -0.875000 1.125000 -1.875000 -v -1.062500 0.937500 -1.875000 -v -1.062500 0.937500 -1.750000 -v -0.875000 1.125000 -1.750000 -v -0.875000 0.500000 -1.750000 -v -1.062500 0.687500 -1.750000 -v 0.750000 1.062500 -3.250000 -v 0.750000 1.062500 -1.250000 -v 0.573223 0.989277 -3.250000 -v 0.573223 0.989277 -1.250000 -v 0.500000 0.812500 -3.250000 -v 0.500000 0.812500 -1.250000 -v 0.573223 0.635723 -3.250000 -v 0.573223 0.635723 -1.250000 -v 0.750000 0.562500 -3.250000 -v 0.750000 0.562500 -1.250000 -v 0.926777 0.635723 -3.250000 -v 0.926777 0.635723 -1.250000 -v 1.000000 0.812500 -3.250000 -v 1.000000 0.812500 -1.250000 -v 0.926777 0.989277 -3.250000 -v 0.926777 0.989277 -1.250000 -v -0.562500 -0.375000 2.000000 -v -0.562500 -0.109835 2.109835 -v -0.562500 0.000000 2.375000 -v -0.562500 -0.109835 2.640165 -v -0.562500 -0.375000 2.750000 -v -0.562500 -0.640165 2.640165 -v -0.562500 -0.750000 2.375000 -v -0.562500 -0.640165 2.109835 -v -1.062500 -0.375000 2.000000 -v -1.062500 -0.109835 2.109835 -v -1.062500 0.000000 2.375000 -v -1.062500 -0.109835 2.640165 -v -1.062500 -0.375000 2.750000 -v -1.062500 -0.640165 2.640165 -v -1.062500 -0.750000 2.375000 -v -1.062500 -0.640165 2.109835 -vt 0.465385 -0.000000 -vt 0.496154 0.084906 -vt 0.465385 0.084906 -vt 0.496154 0.311321 -vt 0.619231 0.396226 -vt 0.496154 0.396226 -vt 0.653846 0.084906 -vt 0.619231 0.311321 -vt 0.619231 0.084906 -vt 0.465385 0.216981 -vt 0.430769 0.311321 -vt 0.430769 0.216981 -vt 0.603846 0.000000 -vt 0.619231 0.000000 -vt 0.496154 0.000000 -vt 0.503846 0.084906 -vt 0.002103 0.018927 -vt 0.015385 0.000117 -vt 0.028667 0.018927 -vt 0.430769 0.084906 -vt 0.017308 0.226425 -vt 0.028962 0.242929 -vt 0.017308 0.292443 -vt 0.346154 0.566038 -vt 0.369231 0.603774 -vt 0.346154 0.603774 -vt 0.330769 0.660377 -vt 0.330769 0.603774 -vt 0.738462 0.169811 -vt 0.715385 0.207547 -vt 0.730769 0.075472 -vt 0.653846 0.207547 -vt 0.715385 0.283019 -vt 0.653846 0.283019 -vt 0.307692 0.566038 -vt 0.330769 0.566038 -vt 0.738462 0.283019 -vt 0.730769 -0.000000 -vt 0.653846 0.075472 -vt 0.653846 -0.000000 -vt 0.769231 0.094340 -vt 0.769231 0.169811 -vt 0.738462 0.075472 -vt 0.738462 0.000000 -vt 0.730769 0.415094 -vt 0.653846 0.415094 -vt 0.796154 0.462264 -vt 0.811538 0.462264 -vt 0.811538 0.518868 -vt 0.411538 0.622642 -vt 0.419231 0.575472 -vt 0.419231 0.622642 -vt 0.415385 0.452830 -vt 0.453846 0.490566 -vt 0.415385 0.490566 -vt 0.415385 0.547170 -vt 0.453846 0.537736 -vt 0.453846 0.547170 -vt 0.415385 0.500000 -vt 0.453846 0.500000 -vt 0.603846 0.084906 -vt 0.596154 0.000000 -vt 0.388462 0.915094 -vt 0.496154 0.830189 -vt 0.496154 0.915094 -vt 0.465385 0.490566 -vt 0.496154 0.603774 -vt 0.603846 0.103774 -vt 0.115385 0.556604 -vt 0.007692 0.471698 -vt 0.115385 0.471698 -vt 0.376923 0.452830 -vt 0.276923 0.566038 -vt 0.276923 0.452830 -vt 0.007692 0.575472 -vt 0.007692 0.556604 -vt 0.123077 0.556604 -vt 0.115385 0.452830 -vt -0.000000 0.471698 -vt 0.111538 0.584906 -vt 0.115385 0.660377 -vt 0.111538 0.650943 -vt 0.011538 0.650943 -vt 0.011538 0.584906 -vt 0.115385 0.575472 -vt 0.007692 0.660377 -vt 0.150000 0.632075 -vt 0.250000 0.566038 -vt 0.250000 0.632075 -vt 0.150000 0.452830 -vt 0.123077 0.566038 -vt 0.123077 0.452830 -vt 0.250000 0.452830 -vt 0.150000 0.566038 -vt 0.138462 0.575472 -vt 0.146154 0.594340 -vt 0.138462 0.594340 -vt 0.123077 0.575472 -vt 0.130769 0.594340 -vt 0.123077 0.594340 -vt 0.146154 0.566038 -vt 0.138462 0.566038 -vt 0.138462 0.603774 -vt 0.146154 0.603774 -vt 0.134615 0.594340 -vt 0.130769 0.575472 -vt 0.134615 0.575472 -vt 0.119231 0.575472 -vt 0.119231 0.594340 -vt 0.150000 0.594340 -vt 0.146154 0.575472 -vt 0.150000 0.575472 -vt 0.134615 0.575472 -vt 0.134615 0.594340 -vt 0.130769 0.566038 -vt 0.123077 0.566038 -vt 0.123077 0.603774 -vt 0.130769 0.603774 -vt 0.017308 0.226425 -vt 0.028962 0.242929 -vt 0.017308 0.292443 -vt 0.002103 0.018927 -vt 0.015385 0.000117 -vt 0.028667 0.018927 -vt 0.028944 0.209875 -vt 0.017308 0.226354 -vt 0.005671 0.176917 -vt 0.392282 0.481132 -vt 0.403846 0.452768 -vt 0.415410 0.481132 -vt 0.369231 0.566038 -vt 0.376923 0.603774 -vt 0.307692 0.603774 -vt 0.300000 0.566038 -vt 0.346154 0.660377 -vt 0.323077 0.679245 -vt 0.721154 0.462264 -vt 0.709615 0.471698 -vt 0.709615 0.462264 -vt 0.721154 0.471698 -vt 0.709615 0.518868 -vt 0.703846 0.462264 -vt 0.696154 0.471698 -vt 0.696154 0.462264 -vt 0.709615 0.528302 -vt 0.721154 0.518868 -vt 0.721154 0.528302 -vt 0.703846 0.471698 -vt 0.703846 0.518868 -vt 0.703846 0.528302 -vt 0.703846 0.448113 -vt 0.703846 0.429245 -vt 0.709615 0.415094 -vt 0.688461 0.453302 -vt 0.695961 0.471698 -vt 0.688461 0.490094 -vt 0.695961 0.433962 -vt 0.693765 0.446970 -vt 0.683158 0.420954 -vt 0.392308 0.566038 -vt 0.411538 0.547170 -vt 0.411538 0.575472 -vt 0.438462 0.566038 -vt 0.419231 0.547170 -vt 0.438462 0.547170 vt 0.588462 0.886792 vt 0.496154 1.000000 vt 0.496154 0.886792 @@ -1241,157 +598,6 @@ vt 0.453846 0.650943 vt 0.465385 0.650943 vt 0.461538 0.688679 vt 0.453846 0.660377 -vt 0.709615 0.471698 -vt 0.721154 0.462264 -vt 0.709615 0.462264 -vt 0.703846 0.485849 -vt 0.703846 0.504717 -vt 0.709615 0.518868 -vt 0.696154 0.471698 -vt 0.703846 0.462264 -vt 0.696154 0.462264 -vt 0.721154 0.518868 -vt 0.709615 0.528302 -vt 0.721154 0.528302 -vt 0.703846 0.471698 -vt 0.703846 0.518868 -vt 0.703846 0.528302 -vt 0.709615 0.415094 -vt 0.721154 0.462264 -vt 0.709615 0.471698 -vt 0.709615 0.462264 -vt 0.721154 0.471698 -vt 0.709615 0.518868 -vt 0.703846 0.462264 -vt 0.696154 0.471698 -vt 0.696154 0.462264 -vt 0.709615 0.528302 -vt 0.721154 0.518868 -vt 0.721154 0.528302 -vt 0.703846 0.471698 -vt 0.703846 0.518868 -vt 0.703846 0.528302 -vt 0.703846 0.448113 -vt 0.703846 0.429245 -vt 0.709615 0.415094 -vt 0.709615 0.471698 -vt 0.721154 0.462264 -vt 0.709615 0.462264 -vt 0.703846 0.485849 -vt 0.703846 0.504717 -vt 0.709615 0.518868 -vt 0.696154 0.471698 -vt 0.703846 0.462264 -vt 0.696154 0.462264 -vt 0.721154 0.518868 -vt 0.709615 0.528302 -vt 0.721154 0.528302 -vt 0.703846 0.471698 -vt 0.703846 0.518868 -vt 0.703846 0.528302 -vt 0.709615 0.415094 -vt 0.688461 0.453302 -vt 0.695961 0.471698 -vt 0.688461 0.490094 -vt 0.695961 0.433962 -vt 0.693765 0.446970 -vt 0.683158 0.420954 -vt 0.403846 0.452768 -vt 0.392282 0.481132 -vt 0.403846 0.509497 -vt 0.653846 0.311321 -vt 0.465385 0.311321 -vt 0.503846 -0.000000 -vt 0.015385 0.075355 -vt 0.007716 0.070315 -vt 0.002103 0.056545 -vt 0.000048 0.037736 -vt 0.007716 0.005157 -vt 0.023053 0.005157 -vt 0.030721 0.037736 -vt 0.028667 0.056545 -vt 0.023053 0.070315 -vt 0.010579 0.288021 -vt 0.005653 0.275939 -vt 0.003850 0.259434 -vt 0.005653 0.242929 -vt 0.010579 0.230847 -vt 0.024036 0.230847 -vt 0.030765 0.259434 -vt 0.028962 0.275939 -vt 0.024036 0.288021 -vt 0.738462 0.094340 -vt 0.738462 0.207547 -vt 0.738462 0.320755 -vt 0.738462 0.396226 -vt 0.819231 0.481132 -vt 0.819231 0.500000 -vt 0.796154 0.518868 -vt 0.788462 0.500000 -vt 0.788462 0.481132 -vt 0.453846 0.452830 -vt 0.415385 0.537736 -vt 0.596154 0.084906 -vt 0.388462 0.830189 -vt 0.619231 0.622642 -vt 0.603846 0.622642 -vt 0.603846 0.603774 -vt 0.496154 0.622642 -vt 0.465385 0.622642 -vt 0.496154 0.103774 -vt 0.376923 0.566038 -vt 0.123077 0.471698 -vt 0.007692 0.452830 -vt -0.000000 0.556604 -vt 0.010579 0.288021 -vt 0.005653 0.275939 -vt 0.003850 0.259434 -vt 0.005653 0.242929 -vt 0.010579 0.230847 -vt 0.024036 0.230847 -vt 0.030765 0.259434 -vt 0.028962 0.275939 -vt 0.024036 0.288021 -vt 0.015385 0.075355 -vt 0.007716 0.070315 -vt 0.002103 0.056545 -vt 0.000048 0.037736 -vt 0.007716 0.005157 -vt 0.023053 0.005157 -vt 0.030721 0.037736 -vt 0.028667 0.056545 -vt 0.023053 0.070315 -vt 0.010589 0.221938 -vt 0.005671 0.209875 -vt 0.003871 0.193396 -vt 0.010589 0.164854 -vt 0.017308 0.160439 -vt 0.024026 0.164854 -vt 0.028944 0.176917 -vt 0.030744 0.193396 -vt 0.024026 0.221938 -vt 0.412023 0.501189 -vt 0.403846 0.509497 -vt 0.395669 0.501189 -vt 0.395669 0.461075 -vt 0.412023 0.461075 -vt 0.376923 0.566038 -vt 0.300000 0.603774 -vt 0.353846 0.679245 -vt 0.703846 0.504717 -vt 0.703846 0.485849 -vt 0.721154 0.415094 -vt 0.683158 0.484706 -vt 0.680962 0.471698 -vt 0.683158 0.458690 -vt 0.693765 0.458690 -vt 0.693765 0.484706 -vt 0.688461 0.452358 -vt 0.683158 0.446970 -vt 0.680962 0.433962 -vt 0.688462 0.415566 -vt 0.693765 0.420954 -vt 0.392308 0.547170 vt 0.588462 1.000000 vt 0.596154 0.830189 vt 0.588462 0.698113 @@ -1429,408 +635,6 @@ vt 0.142677 0.829236 vt 0.142677 0.783263 vt 0.152048 0.773742 vt 0.407692 0.688679 -vt 0.721154 0.471698 -vt 0.721154 0.415094 -vt 0.703846 0.429245 -vt 0.703846 0.448113 -vt 0.703846 0.504717 -vt 0.703846 0.485849 -vt 0.721154 0.415094 -vt 0.721154 0.471698 -vt 0.721154 0.415094 -vt 0.703846 0.429245 -vt 0.703846 0.448113 -vt 0.683158 0.484706 -vt 0.680962 0.471698 -vt 0.683158 0.458690 -vt 0.693765 0.458690 -vt 0.693765 0.484706 -vt 0.688461 0.452358 -vt 0.683158 0.446970 -vt 0.680962 0.433962 -vt 0.688462 0.415566 -vt 0.693765 0.420954 -vt 0.412023 0.501189 -vt 0.415410 0.481132 -vt 0.412023 0.461075 -vt 0.395669 0.461075 -vt 0.395669 0.501189 -vt 0.338462 0.169811 -vt 0.030769 0.150943 -vt 0.338462 0.150943 -vt 0.338462 0.075472 -vt 0.030769 0.056604 -vt 0.338462 0.056604 -vt 0.338462 0.018868 -vt 0.030769 -0.000000 -vt 0.338462 -0.000000 -vt 0.338462 0.188679 -vt 0.030769 0.169811 -vt 0.338462 0.094340 -vt 0.030769 0.075472 -vt 0.338462 0.132075 -vt 0.030769 0.113208 -vt 0.338462 0.113208 -vt 0.338462 0.037736 -vt 0.030769 0.018868 -vt 0.338462 0.207547 -vt 0.030769 0.188679 -vt 0.030769 0.094340 -vt 0.030769 0.132075 -vt 0.030769 0.037736 -vt 0.338462 0.226415 -vt 0.030769 0.207547 -vt 0.030769 0.415094 -vt 0.338462 0.433962 -vt 0.030769 0.433962 -vt 0.030769 0.320755 -vt 0.338462 0.339623 -vt 0.030769 0.339623 -vt 0.030769 0.358491 -vt 0.338462 0.377358 -vt 0.030769 0.377358 -vt 0.030769 0.264151 -vt 0.338462 0.283019 -vt 0.030769 0.283019 -vt 0.338462 0.452830 -vt 0.030769 0.452830 -vt 0.338462 0.396226 -vt 0.030769 0.396226 -vt 0.338462 0.301887 -vt 0.030769 0.301887 -vt 0.030769 0.226415 -vt 0.338462 0.245283 -vt 0.030769 0.245283 -vt 0.338462 0.415094 -vt 0.338462 0.320755 -vt 0.338462 0.358491 -vt 0.338462 0.264151 -vt 0.769231 0.018868 -vt 0.876923 0.056604 -vt 0.769231 0.056604 -vt 0.992308 0.301887 -vt 1.000000 0.245283 -vt 1.000000 0.283019 -vt 0.923077 0.000000 -vt 0.876923 0.018868 -vt 0.876923 0.000000 -vt 0.923077 0.283019 -vt 0.769231 0.301887 -vt 0.769231 0.283019 -vt 0.923077 0.226415 -vt 0.769231 0.245283 -vt 0.769231 0.226415 -vt 0.876923 0.075472 -vt 0.769231 0.075472 -vt 0.915385 0.113208 -vt 0.923077 0.075472 -vt 0.923077 0.056604 -vt 0.930769 0.301887 -vt 0.923077 0.245283 -vt 0.930769 0.226415 -vt 0.946154 0.301887 -vt 0.946154 0.226415 -vt 0.976923 0.226415 -vt 0.992308 0.226415 -vt 0.742308 0.481132 -vt 0.742308 0.500000 -vt 0.723077 0.481132 -vt 0.723077 0.500000 -vt 0.976923 0.301887 -vt 0.830769 0.500000 -vt 0.876923 0.500000 -vt 0.884615 0.481132 -vt 0.884615 0.500000 -vt 0.796154 0.660377 -vt 0.811538 0.547170 -vt 0.819231 0.547170 -vt 0.796154 0.679245 -vt 0.788462 0.660377 -vt 0.773077 0.679245 -vt 0.788462 0.679245 -vt 0.819231 0.518868 -vt 0.796154 0.660377 -vt 0.811538 0.547170 -vt 0.788462 0.660377 -vt 0.788462 0.518868 -vt 0.773077 0.632075 -vt 0.765385 0.632075 -vt 0.765385 0.679245 -vt 0.773077 0.632075 -vt 0.796154 0.518868 -vt 0.773077 0.679245 -vt 0.788462 0.679245 -vt 0.796154 0.679245 -vt 0.765385 0.679245 -vt 0.765385 0.632075 -vt 0.819231 0.518868 -vt 0.819231 0.547170 -vt 0.788462 0.518868 -vt 0.830769 0.481132 -vt 0.430769 0.339623 -vt 0.338462 0.358491 -vt 0.338462 0.339623 -vt 0.400000 0.207547 -vt 0.338462 0.226415 -vt 0.338462 0.207547 -vt 0.430769 0.264151 -vt 0.338462 0.283019 -vt 0.338462 0.264151 -vt 0.430769 0.358491 -vt 0.338462 0.377358 -vt 0.400000 0.000000 -vt 0.338462 0.018868 -vt 0.338462 0.000000 -vt 0.430769 0.283019 -vt 0.338462 0.301887 -vt 0.430769 0.377358 -vt 0.338462 0.396226 -vt 0.400000 0.018868 -vt 0.338462 0.037736 -vt 0.430769 0.301887 -vt 0.338462 0.320755 -vt 0.400000 0.113208 -vt 0.338462 0.132075 -vt 0.338462 0.113208 -vt 0.430769 0.396226 -vt 0.338462 0.415094 -vt 0.400000 0.037736 -vt 0.338462 0.056604 -vt 0.430769 0.320755 -vt 0.400000 0.132075 -vt 0.338462 0.150943 -vt 0.430769 0.415094 -vt 0.338462 0.433962 -vt 0.400000 0.056604 -vt 0.338462 0.075472 -vt 0.400000 0.150943 -vt 0.338462 0.169811 -vt 0.430769 0.433962 -vt 0.338462 0.452830 -vt 0.400000 0.075472 -vt 0.338462 0.094340 -vt 0.400000 0.169811 -vt 0.338462 0.188679 -vt 0.430769 0.226415 -vt 0.338462 0.245283 -vt 0.338462 0.226415 -vt 0.400000 0.094340 -vt 0.400000 0.188679 -vt 0.430769 0.245283 -vt 0.407692 0.226415 -vt 0.400000 0.207547 -vt 0.407692 0.207547 -vt 0.407692 0.169811 -vt 0.400000 0.150943 -vt 0.407692 0.150943 -vt 0.407692 0.075472 -vt 0.400000 0.056604 -vt 0.407692 0.056604 -vt 0.407692 0.018868 -vt 0.400000 -0.000000 -vt 0.407692 -0.000000 -vt 0.407692 0.188679 -vt 0.400000 0.169811 -vt 0.407692 0.094340 -vt 0.400000 0.075472 -vt 0.407692 0.132075 -vt 0.400000 0.113208 -vt 0.407692 0.113208 -vt 0.407692 0.037736 -vt 0.400000 0.018868 -vt 0.400000 0.188679 -vt 0.400000 0.094340 -vt 0.400000 0.132075 -vt 0.400000 0.037736 -vt 0.376923 0.509434 -vt 0.392308 0.528302 -vt 0.376923 0.528302 -vt 0.376923 0.547170 -vt 0.392308 0.566038 -vt 0.376923 0.566038 -vt 0.392308 0.584906 -vt 0.376923 0.584906 -vt 0.376923 0.452830 -vt 0.392308 0.471698 -vt 0.376923 0.471698 -vt 0.376923 0.490566 -vt 0.392308 0.509434 -vt 0.392308 0.547170 -vt 0.392308 0.603774 -vt 0.376923 0.603774 -vt 0.392308 0.490566 -vt 0.303846 0.688679 -vt 0.319231 0.679245 -vt 0.319231 0.688679 -vt 0.303846 0.707547 -vt 0.319231 0.698113 -vt 0.319231 0.707547 -vt 0.303846 0.726415 -vt 0.319231 0.716981 -vt 0.319231 0.726415 -vt 0.303846 0.669811 -vt 0.319231 0.660377 -vt 0.319231 0.669811 -vt 0.303846 0.698113 -vt 0.303846 0.716981 -vt 0.303846 0.735849 -vt 0.319231 0.735849 -vt 0.303846 0.679245 -vt 0.300000 0.660377 -vt 0.296154 0.669811 -vt 0.296154 0.660377 -vt 0.300000 0.688679 -vt 0.296154 0.698113 -vt 0.296154 0.688679 -vt 0.296154 0.707547 -vt 0.296154 0.735849 -vt 0.296154 0.726415 -vt 0.300000 0.698113 -vt 0.296154 0.716981 -vt 0.292308 0.698113 -vt 0.292308 0.688679 -vt 0.288462 0.707547 -vt 0.292308 0.735849 -vt 0.288462 0.726415 -vt 0.288462 0.716981 -vt 0.292308 0.669811 -vt 0.292308 0.660377 -vt 0.296154 0.679245 -vt 0.300000 0.669811 -vt 0.288462 0.688679 -vt 0.196154 0.679245 -vt 0.288462 0.679245 -vt 0.288462 0.698113 -vt 0.196154 0.688679 -vt 0.196154 0.669811 -vt 0.288462 0.669811 -vt 0.196154 0.707547 -vt 0.288462 0.735849 -vt 0.196154 0.726415 -vt 0.196154 0.698113 -vt 0.196154 0.716981 -vt 0.196154 0.660377 -vt 0.288462 0.660377 -vt 0.015385 0.669811 -vt -0.000000 0.679245 -vt 0.000000 0.669811 -vt 0.015385 0.726415 -vt 0.000000 0.735849 -vt -0.000000 0.726415 -vt 0.015385 0.707547 -vt 0.000000 0.716981 -vt -0.000000 0.707547 -vt 0.015385 0.688679 -vt -0.000000 0.698113 -vt -0.000000 0.688679 -vt 0.015385 0.660377 -vt 0.000000 0.660377 -vt 0.015385 0.716981 -vt 0.015385 0.698113 -vt 0.015385 0.679245 -vt 0.019231 0.698113 -vt 0.023077 0.688679 -vt 0.023077 0.698113 -vt 0.019231 0.669811 -vt 0.023077 0.660377 -vt 0.023077 0.669811 -vt 0.023077 0.716981 -vt 0.023077 0.726415 -vt 0.023077 0.707547 -vt 0.023077 0.735849 -vt 0.019231 0.735849 -vt 0.026923 0.660377 -vt 0.026923 0.669811 -vt 0.030769 0.716981 -vt 0.030769 0.726415 -vt 0.026923 0.698113 -vt 0.030769 0.707547 -vt 0.026923 0.735849 -vt 0.026923 0.688679 -vt 0.023077 0.679245 -vt 0.019231 0.688679 -vt 0.030769 0.669811 -vt 0.123077 0.679245 -vt 0.030769 0.679245 -vt 0.030769 0.660377 -vt 0.123077 0.669811 -vt 0.123077 0.688679 -vt 0.030769 0.688679 -vt 0.123077 0.726415 -vt 0.030769 0.698113 -vt 0.123077 0.707547 -vt 0.123077 0.735849 -vt 0.030769 0.735849 -vt 0.123077 0.716981 -vt 0.123077 0.698113 -vt 0.192308 0.679245 -vt 0.188462 0.669811 -vt 0.192308 0.669811 -vt 0.188462 0.707547 -vt 0.188462 0.698113 -vt 0.192308 0.716981 -vt 0.188462 0.726415 -vt 0.188462 0.716981 -vt 0.188462 0.679245 -vt 0.188462 0.688679 -vt 0.180769 0.707547 -vt 0.184615 0.679245 -vt 0.184615 0.669811 -vt 0.180769 0.698113 -vt 0.184615 0.716981 -vt 0.180769 0.688679 -vt 0.188462 0.660377 -vt 0.188462 0.735849 -vt 0.192308 0.726415 -vt 0.184615 0.726415 -vt 0.130769 0.679245 -vt 0.130769 0.688679 -vt 0.126923 0.716981 -vt 0.130769 0.707547 -vt 0.130769 0.716981 -vt 0.130769 0.698113 -vt 0.126923 0.679245 -vt 0.130769 0.669811 -vt 0.130769 0.726415 -vt 0.126923 0.726415 -vt 0.138462 0.688679 -vt 0.138462 0.707547 -vt 0.134615 0.716981 -vt 0.138462 0.698113 -vt 0.134615 0.679245 -vt 0.134615 0.726415 -vt 0.130769 0.660377 -vt 0.126923 0.669811 -vt 0.134615 0.669811 -vt 0.130769 0.735849 -vt 0.138462 0.679245 -vt 0.180769 0.669811 -vt 0.180769 0.679245 -vt 0.138462 0.660377 -vt 0.180769 0.660377 -vt 0.138462 0.735849 -vt 0.180769 0.726415 -vt 0.180769 0.735849 -vt 0.138462 0.716981 -vt 0.180769 0.716981 -vt 0.680769 0.509434 -vt 0.619231 0.490566 -vt 0.680769 0.490566 -vt 0.680769 0.528302 -vt 0.619231 0.509434 -vt 0.680769 0.547170 -vt 0.619231 0.528302 -vt 0.680769 0.566038 -vt 0.619231 0.547170 -vt 0.680769 0.433962 -vt 0.619231 0.415094 -vt 0.680769 0.415094 -vt 0.680769 0.452830 -vt 0.619231 0.433962 -vt 0.680769 0.471698 -vt 0.619231 0.452830 -vt 0.619231 0.471698 -vt 0.811538 0.518868 vt 0.100000 0.735849 vt 0.092308 0.735849 vt 0.084615 0.735849 @@ -2111,64 +915,6 @@ vt 0.365385 0.801887 vt 0.380769 0.792453 vt 0.380769 0.735849 vt 0.357692 0.811321 -vt 0.915385 0.339623 -vt 0.876923 0.452830 -vt 0.915385 0.188679 -vt 0.915385 0.415094 -vt 0.923077 0.452830 -vt 0.680769 0.509434 -vt 0.619231 0.490566 -vt 0.680769 0.490566 -vt 0.680769 0.528302 -vt 0.619231 0.509434 -vt 0.680769 0.547170 -vt 0.619231 0.528302 -vt 0.680769 0.566038 -vt 0.619231 0.547170 -vt 0.680769 0.433962 -vt 0.619231 0.415094 -vt 0.680769 0.415094 -vt 0.680769 0.452830 -vt 0.619231 0.433962 -vt 0.680769 0.471698 -vt 0.619231 0.452830 -vt 0.619231 0.471698 -vt 0.392308 0.528302 -vt 0.376923 0.509434 -vt 0.376923 0.528302 -vt 0.392308 0.566038 -vt 0.376923 0.547170 -vt 0.376923 0.566038 -vt 0.392308 0.584906 -vt 0.376923 0.584906 -vt 0.392308 0.471698 -vt 0.376923 0.452830 -vt 0.376923 0.471698 -vt 0.392308 0.509434 -vt 0.376923 0.490566 -vt 0.392308 0.547170 -vt 0.392308 0.603774 -vt 0.376923 0.603774 -vt 0.392308 0.490566 -vt 0.030769 0.226415 -vt 0.338462 0.226415 -vt 0.923077 0.018868 -vt 0.923077 0.301887 -vt 0.769231 0.000000 -vt 0.876923 0.481132 -vt 0.400000 0.226415 -vt 0.430769 0.452830 -vt 0.400000 0.226415 -vt 0.392308 0.452830 -vt 0.303846 0.660377 -vt 0.300000 0.735849 -vt 0.196154 0.735849 -vt 0.015385 0.735849 -vt 0.019231 0.660377 -vt 0.123077 0.660377 -vt 0.138462 0.669811 -vt 0.138462 0.726415 -vt 0.619231 0.566038 vt 0.138462 0.773585 vt 0.230769 0.773585 vt 0.380769 0.735849 @@ -2177,145 +923,19 @@ vt 0.238462 0.811321 vt 0.276923 0.811321 vt 0.307692 0.811321 vt 0.380769 0.811321 -vt 0.769231 0.339623 -vt 0.769231 0.188679 -vt 0.619231 0.566038 -vt 0.392308 0.452830 vn 0.0000 -1.0000 0.0000 -vn 0.0000 1.0000 0.0000 -vn 0.0000 0.0000 -1.0000 -vn 0.0000 0.6247 0.7809 -vn 0.0000 0.0000 1.0000 vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 vn 1.0000 0.0000 0.0000 -vn 0.0000 0.8321 -0.5547 -vn 0.0000 -0.7071 -0.7071 -vn 0.0000 0.1961 0.9806 -vn -0.7071 -0.7071 0.0000 -vn 0.7071 -0.7071 0.0000 vn 0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 0.0000 1.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.0000 1.0000 0.0000 vn -0.7071 0.7071 0.0000 vn 0.7190 0.6950 0.0000 vn 0.0000 0.8944 0.4472 vn 0.0000 0.5547 -0.8321 -vn -0.8660 0.5000 0.0000 -vn 0.8660 0.5000 0.0000 -vn 0.5000 -0.8660 0.0000 -vn -0.8660 -0.5000 0.0000 -vn 0.5000 0.8660 0.0000 -vn -0.5000 0.8660 0.0000 -vn 0.8660 -0.5000 0.0000 -vn -0.5000 -0.8660 0.0000 -vn -0.3936 -0.8453 0.3612 -vn 0.3627 -0.9141 0.1815 -vn 0.3929 -0.8452 0.3622 -vn 0.0000 0.3054 -0.9522 -vn -0.8941 -0.4478 0.0004 -vn -0.3703 -0.9109 0.1819 -vn -0.9078 -0.4085 0.0944 -vn -0.3827 0.9239 0.0000 -vn -0.9239 0.3827 0.0000 -vn 0.8941 0.4478 0.0000 -vn 0.3827 0.9239 0.0000 -vn 0.9239 0.3827 0.0000 -vn 0.9032 -0.4186 0.0951 -vn 0.9487 -0.2905 0.1245 -vn 0.8941 -0.4478 0.0000 -vn 0.3827 -0.9239 0.0000 -vn 0.0000 -0.3054 -0.9522 -vn 0.0000 -0.2298 -0.9732 -vn 0.0000 0.2298 -0.9732 -vn -0.3595 -0.2070 0.9099 -vn 0.3897 -0.4119 0.8237 -vn 0.3595 -0.2070 0.9099 -vn -0.3827 0.0000 0.9239 -vn 0.3827 0.0000 0.9239 -vn -0.3945 0.0000 -0.9189 -vn 0.3595 0.2070 -0.9099 -vn 0.3827 0.0000 -0.9239 -vn 0.3954 0.2222 -0.8912 -vn 0.8994 0.1123 -0.4225 -vn 0.9414 0.0706 -0.3297 -vn 0.9239 0.0000 0.3827 -vn 0.9239 0.0000 -0.3827 -vn -0.4084 0.2210 -0.8856 -vn -0.9054 0.1095 -0.4102 -vn -0.9452 0.0682 -0.3193 -vn 0.8994 -0.1123 0.4225 -vn -0.8994 -0.1123 0.4225 -vn -0.9511 -0.1381 0.2762 -vn -0.9239 0.0000 0.3827 -vn -0.9287 0.0000 -0.3708 -vn -0.3703 0.2060 -0.9058 -vn -0.3897 -0.4119 0.8237 -vn 0.0000 0.7071 0.7071 -vn 0.0000 0.7071 -0.7071 -vn 0.0000 -0.7071 0.7071 -vn 0.7263 0.1363 -0.6737 -vn 0.7071 0.0000 -0.7071 -vn 0.6794 -0.1448 0.7194 -vn 0.7071 0.0000 0.7071 -vn -0.6794 -0.1448 0.7194 -vn -0.7071 0.0000 0.7071 -vn -0.7263 0.1363 -0.6737 -vn -0.7071 0.0000 -0.7071 -vn 0.9987 -0.0196 0.0473 -vn -0.0000 -0.1866 0.9824 -vn -0.9987 -0.0196 0.0473 -vn -0.7574 0.4617 -0.4617 -vn -0.9955 -0.0671 0.0671 -vn 0.9955 -0.0671 0.0671 -vn 0.7574 0.4617 -0.4617 -vn 0.6630 -0.5294 0.5294 -vn -0.6630 -0.5294 0.5294 -vn 0.9987 -0.0473 0.0196 -vn 0.7263 0.6737 -0.1363 -vn 0.6794 -0.7194 0.1448 -vn -0.9987 -0.0473 0.0196 -vn -0.6794 -0.7194 0.1448 -vn -0.0000 -0.9824 0.1866 -vn -0.7263 0.6737 -0.1363 -vn 0.0473 0.9987 -0.0196 -vn 0.7194 0.6794 -0.1448 -vn -0.6737 0.7263 0.1363 -vn 0.7194 -0.6794 -0.1448 -vn -0.6737 -0.7263 0.1363 -vn 0.9824 -0.0000 -0.1866 -vn 0.0473 -0.9987 -0.0196 -vn -0.0473 0.9987 -0.0196 -vn 0.6737 0.7263 0.1363 -vn -0.7194 0.6794 -0.1448 -vn 0.6737 -0.7263 0.1363 -vn -0.7194 -0.6794 -0.1448 -vn -0.0473 -0.9987 -0.0196 -vn -0.9824 0.0000 -0.1866 -vn -0.4617 0.7574 0.4617 -vn 0.5294 -0.6630 -0.5294 -vn -0.4617 -0.7574 0.4617 -vn 0.0671 -0.9955 -0.0671 -vn 0.0671 0.9955 -0.0671 -vn 0.5294 0.6630 -0.5294 -vn 0.1448 -0.6794 -0.7194 -vn 0.0196 0.9987 -0.0473 -vn -0.1363 0.7263 0.6737 -vn 0.1866 -0.0000 -0.9824 -vn 0.0196 -0.9987 -0.0473 -vn 0.1448 0.6794 -0.7194 -vn -0.1363 -0.7263 0.6737 -vn -0.0671 0.9955 -0.0671 -vn -0.5294 0.6630 -0.5294 -vn -0.5294 -0.6630 -0.5294 -vn -0.0671 -0.9955 -0.0671 -vn 0.4617 0.7574 0.4617 -vn 0.4617 -0.7574 0.4617 -vn -0.1448 0.6794 -0.7194 -vn -0.1448 -0.6794 -0.7194 -vn -0.0196 -0.9987 -0.0473 -vn -0.1866 0.0000 -0.9824 -vn -0.0196 0.9987 -0.0473 -vn 0.1363 -0.7263 0.6737 -vn 0.1363 0.7263 0.6737 -vn 0.9511 -0.1381 0.2762 vn 0.0000 -0.9803 -0.1973 vn 0.7046 -0.7095 0.0098 vn 0.7345 -0.6651 -0.1347 @@ -2524,1432 +1144,2864 @@ vn 0.1302 0.4906 0.8616 vn 0.0363 0.9640 0.2636 vn 0.1468 -0.2381 0.9601 vn 0.0000 -0.9999 0.0154 +s off +f 3/1/1 2/2/1 1/3/1 +f 15/4/2 11/5/2 13/6/2 +f 3/7/3 13/8/3 5/9/3 +f 14/10/4 9/11/4 16/12/4 +f 10/13/5 8/14/5 9/11/5 +f 26/15/1 30/16/1 25/17/1 +f 4/18/6 16/12/6 2/19/6 +f 2/20/7 16/21/7 8/14/7 +f 1/3/8 13/6/8 3/1/8 +f 8/14/9 5/9/9 7/22/9 +f 12/23/10 5/9/10 11/5/10 +f 21/24/4 24/25/4 22/26/4 +f 18/27/1 22/26/1 17/28/1 +f 19/29/3 21/24/3 18/30/3 +f 20/31/9 23/32/9 19/33/9 +f 17/34/7 24/25/7 20/35/7 +f 27/36/3 29/37/3 26/15/3 +f 28/38/9 31/39/9 27/36/9 +f 25/17/7 32/40/7 28/38/7 +f 28/38/2 26/15/2 25/17/2 +f 43/41/3 38/42/3 37/43/3 +f 34/44/7 41/45/7 33/46/7 +f 38/47/3 48/48/3 39/49/3 +f 47/50/7 34/51/7 35/52/7 +f 40/53/3 43/41/3 37/54/3 +f 41/45/7 36/55/7 33/56/7 +f 50/57/3 46/58/3 40/59/3 +f 45/60/7 49/61/7 36/62/7 +f 56/63/3 39/64/3 48/48/3 +f 35/65/7 55/66/7 47/50/7 +f 47/50/4 56/63/4 48/48/4 +f 44/67/11 47/50/11 48/48/11 +f 42/68/9 43/41/9 41/45/9 +f 45/60/10 43/41/10 46/58/10 +f 51/69/2 46/58/2 52/70/2 +f 67/71/3 62/72/3 61/73/3 +f 58/74/7 65/75/7 57/76/7 +f 62/77/3 72/78/3 63/79/3 +f 71/80/7 58/81/7 59/82/7 +f 64/83/3 67/71/3 61/84/3 +f 65/75/7 60/85/7 57/86/7 +f 74/87/3 70/88/3 64/89/3 +f 69/90/7 73/91/7 60/92/7 +f 80/93/3 63/94/3 72/78/3 +f 59/95/7 79/96/7 71/80/7 +f 71/80/4 80/93/4 72/78/4 +f 68/97/11 71/80/11 72/78/11 +f 66/98/9 67/71/9 65/75/9 +f 69/90/10 67/71/10 70/88/10 +f 75/99/2 70/88/2 76/100/2 +f 87/101/3 86/102/3 83/103/3 +f 85/104/3 89/105/3 84/106/3 +f 82/107/3 91/108/3 81/109/3 +f 84/110/3 92/111/3 82/112/3 +f 91/108/3 83/113/3 81/114/3 +f 98/115/7 99/116/7 95/117/7 +f 101/118/7 97/119/7 96/120/7 +f 103/121/7 94/122/7 93/123/7 +f 104/124/7 96/125/7 94/126/7 +f 95/127/7 103/121/7 93/128/7 +f 92/111/1 103/121/1 91/108/1 +f 89/105/6 104/124/6 92/111/6 +f 90/129/4 101/118/4 89/105/4 +f 103/121/8 87/101/8 91/108/8 +f 99/116/2 88/130/2 87/101/2 +f 105/131/12 112/132/12 107/133/12 +f 106/134/4 110/135/4 105/136/4 +f 108/137/13 109/138/13 106/139/13 +f 108/140/2 112/132/2 111/141/2 +f 135/142/7 128/143/7 127/144/7 +f 136/145/7 121/146/7 128/143/7 +f 121/146/7 130/147/7 122/148/7 +f 122/148/7 131/149/7 123/150/7 +f 131/149/7 124/151/7 123/150/7 +f 132/152/7 125/153/7 124/151/7 +f 125/154/7 134/155/7 126/156/7 +f 126/156/7 135/142/7 127/144/7 +f 141/157/7 143/158/7 138/159/7 +f 158/160/3 167/161/3 159/162/3 +f 159/162/3 168/163/3 160/164/3 +f 160/164/3 161/165/3 153/166/3 +f 161/165/3 154/167/3 153/166/3 +f 162/168/3 155/169/3 154/167/3 +f 163/170/3 156/171/3 155/169/3 +f 164/172/3 157/173/3 156/171/3 +f 157/174/3 166/175/3 158/160/3 +f 172/176/3 171/177/3 175/178/3 +f 401/179/12 408/180/12 403/181/12 +f 402/182/4 406/183/4 401/184/4 +f 404/185/13 405/186/13 402/187/13 +f 404/188/2 408/180/2 407/189/2 +f 3/1/1 4/190/1 2/2/1 +f 15/4/2 12/23/2 11/5/2 +f 13/8/3 11/191/3 5/9/3 +f 5/9/3 6/192/3 4/193/3 +f 6/192/3 10/194/3 4/193/3 +f 10/194/3 14/195/3 4/193/3 +f 4/193/3 3/7/3 5/9/3 +f 14/10/4 10/13/4 9/11/4 +f 10/13/5 6/192/5 8/14/5 +f 26/15/1 29/196/1 30/16/1 +f 4/18/6 14/10/6 16/12/6 +f 16/21/7 9/197/7 8/14/7 +f 8/14/7 7/22/7 1/198/7 +f 7/22/7 12/199/7 1/198/7 +f 12/199/7 15/200/7 1/198/7 +f 1/198/7 2/20/7 8/14/7 +f 1/3/8 15/4/8 13/6/8 +f 8/14/9 6/192/9 5/9/9 +f 12/23/10 7/22/10 5/9/10 +f 21/24/4 23/32/4 24/25/4 +f 18/27/1 21/24/1 22/26/1 +f 19/29/3 23/32/3 21/24/3 +f 20/31/9 24/25/9 23/32/9 +f 17/34/7 22/26/7 24/25/7 +f 27/36/3 31/201/3 29/37/3 +f 28/38/9 32/202/9 31/39/9 +f 25/17/7 30/203/7 32/40/7 +f 28/38/2 27/36/2 26/15/2 +f 43/41/3 44/67/3 38/42/3 +f 34/44/7 42/68/7 41/45/7 +f 38/47/3 44/67/3 48/48/3 +f 47/50/7 42/68/7 34/51/7 +f 40/53/3 46/58/3 43/41/3 +f 41/45/7 45/60/7 36/55/7 +f 50/57/3 52/70/3 46/58/3 +f 45/60/7 51/69/7 49/61/7 +f 56/63/3 54/204/3 39/64/3 +f 35/65/7 53/205/7 55/66/7 +f 47/50/4 55/66/4 56/63/4 +f 44/67/11 42/68/11 47/50/11 +f 42/68/9 44/67/9 43/41/9 +f 45/60/10 41/45/10 43/41/10 +f 51/69/2 45/60/2 46/58/2 +f 67/71/3 68/97/3 62/72/3 +f 58/74/7 66/98/7 65/75/7 +f 62/77/3 68/97/3 72/78/3 +f 71/80/7 66/98/7 58/81/7 +f 64/83/3 70/88/3 67/71/3 +f 65/75/7 69/90/7 60/85/7 +f 74/87/3 76/100/3 70/88/3 +f 69/90/7 75/99/7 73/91/7 +f 80/93/3 78/206/3 63/94/3 +f 59/95/7 77/207/7 79/96/7 +f 71/80/4 79/96/4 80/93/4 +f 68/97/11 66/98/11 71/80/11 +f 66/98/9 68/97/9 67/71/9 +f 69/90/10 65/75/10 67/71/10 +f 75/99/2 69/90/2 70/88/2 +f 87/101/3 88/130/3 86/102/3 +f 85/104/3 90/129/3 89/105/3 +f 82/107/3 92/111/3 91/108/3 +f 84/110/3 89/105/3 92/111/3 +f 91/108/3 87/101/3 83/113/3 +f 98/115/7 100/208/7 99/116/7 +f 101/118/7 102/209/7 97/119/7 +f 103/121/7 104/124/7 94/122/7 +f 104/124/7 101/118/7 96/125/7 +f 95/127/7 99/116/7 103/121/7 +f 92/111/1 104/124/1 103/121/1 +f 89/105/6 101/118/6 104/124/6 +f 90/129/4 102/209/4 101/118/4 +f 103/121/8 99/116/8 87/101/8 +f 99/116/2 100/208/2 88/130/2 +f 105/131/12 110/135/12 112/132/12 +f 106/134/4 109/138/4 110/135/4 +f 108/137/13 111/141/13 109/138/13 +f 108/140/2 107/210/2 112/132/2 +f 135/142/7 136/145/7 128/143/7 +f 136/145/7 129/211/7 121/146/7 +f 121/146/7 129/211/7 130/147/7 +f 122/148/7 130/147/7 131/149/7 +f 131/149/7 132/152/7 124/151/7 +f 132/152/7 133/212/7 125/153/7 +f 125/154/7 133/213/7 134/155/7 +f 126/156/7 134/155/7 135/142/7 +f 138/159/7 137/214/7 139/215/7 +f 139/215/7 140/216/7 141/157/7 +f 141/157/7 142/217/7 143/158/7 +f 143/158/7 144/218/7 138/159/7 +f 138/159/7 139/215/7 141/157/7 +f 158/160/3 166/175/3 167/161/3 +f 159/162/3 167/161/3 168/163/3 +f 160/164/3 168/163/3 161/165/3 +f 161/165/3 162/168/3 154/167/3 +f 162/168/3 163/170/3 155/169/3 +f 163/170/3 164/172/3 156/171/3 +f 164/172/3 165/219/3 157/173/3 +f 157/174/3 165/220/3 166/175/3 +f 171/177/3 169/221/3 170/222/3 +f 170/222/3 176/223/3 171/177/3 +f 176/223/3 175/178/3 171/177/3 +f 175/178/3 174/224/3 173/225/3 +f 173/225/3 172/176/3 175/178/3 +f 401/179/12 406/183/12 408/180/12 +f 402/182/4 405/186/4 406/183/4 +f 404/185/13 407/189/13 405/186/13 +f 404/188/2 403/226/2 408/180/2 +s 1 +f 120/227/5 135/142/4 119/228/4 +f 118/229/6 133/213/1 117/230/1 +f 116/231/8 131/149/2 115/232/2 +f 114/233/10 129/211/9 113/234/9 +f 113/234/9 136/145/5 120/227/5 +f 119/228/4 134/155/6 118/229/6 +f 117/235/1 132/152/8 116/231/8 +f 115/232/2 130/147/10 114/233/10 +f 122/148/6 138/236/1 121/146/1 +f 121/146/1 144/237/8 128/143/8 +f 127/144/2 142/238/10 126/156/10 +f 125/153/9 140/239/5 124/151/5 +f 123/150/4 137/240/6 122/148/6 +f 128/143/8 143/241/2 127/144/2 +f 126/156/10 141/242/9 125/154/9 +f 124/151/5 139/243/4 123/150/4 +f 160/164/5 145/244/9 152/245/5 +f 158/160/6 151/246/4 150/247/6 +f 156/171/8 149/248/1 148/249/8 +f 154/167/10 147/250/2 146/251/10 +f 159/162/4 152/245/5 151/246/4 +f 157/174/1 150/247/6 149/252/1 +f 155/169/2 148/249/8 147/250/2 +f 153/166/9 146/251/10 145/244/9 +f 166/175/10 175/253/2 167/161/2 +f 164/172/5 173/254/9 165/219/9 +f 162/168/6 171/255/4 163/170/4 +f 167/161/2 176/256/8 168/163/8 +f 165/220/9 174/257/10 166/175/10 +f 163/170/4 172/258/5 164/172/5 +f 161/165/1 169/259/6 162/168/6 +f 168/163/8 170/260/1 161/165/1 +f 181/261/14 237/262/15 241/263/16 +f 246/264/17 181/265/14 185/266/18 +f 186/267/19 242/268/20 246/264/17 +f 178/269/21 242/268/20 182/270/22 +f 238/271/23 181/265/14 242/268/20 +f 247/272/24 182/270/22 186/267/19 +f 187/273/25 243/274/26 247/272/24 +f 179/275/27 243/274/26 183/276/28 +f 239/277/29 182/270/22 243/274/26 +f 187/273/25 244/278/30 183/276/28 +f 184/279/31 248/280/32 188/281/33 +f 184/279/31 240/282/34 244/278/30 +f 244/278/30 179/275/27 183/276/28 +f 188/281/33 241/263/16 184/279/31 +f 185/283/18 249/284/35 189/285/36 +f 181/261/14 245/286/37 185/283/18 +f 180/287/38 241/263/16 237/262/15 +f 189/288/36 246/264/17 185/266/18 +f 190/289/39 246/264/17 250/290/40 +f 251/291/41 186/267/19 190/289/39 +f 191/292/42 247/272/24 251/291/41 +f 252/293/43 187/273/25 191/292/42 +f 192/294/44 248/280/32 252/293/43 +f 192/294/44 245/286/37 188/281/33 +f 189/285/36 253/295/45 193/296/46 +f 193/297/46 250/290/40 189/288/36 +f 190/289/39 254/298/47 194/299/48 +f 194/299/48 251/291/41 190/289/39 +f 195/300/49 251/291/41 255/301/50 +f 256/302/51 191/292/42 195/300/49 +f 196/303/52 252/293/43 256/302/51 +f 253/295/45 192/294/44 196/303/52 +f 346/304/53 193/297/46 257/305/54 +f 258/306/55 254/298/47 346/304/53 +f 347/307/56 194/299/48 258/306/55 +f 195/300/49 347/307/56 259/308/57 +f 256/302/51 259/308/57 348/309/58 +f 196/303/52 348/309/58 260/310/59 +f 253/295/45 260/310/59 345/311/60 +f 257/312/54 253/295/45 345/311/60 +f 257/312/54 349/313/61 261/314/62 +f 262/315/63 346/304/53 350/316/64 +f 259/308/57 351/317/65 263/318/66 +f 350/316/64 257/305/54 261/319/62 +f 260/310/59 352/320/67 264/321/68 +f 351/317/65 258/306/55 262/315/63 +f 200/322/69 282/323/70 268/324/71 +f 348/309/58 263/318/66 352/320/67 +f 345/311/60 264/321/68 349/313/61 +f 356/325/72 199/326/73 371/327/74 +f 212/328/75 268/324/71 288/329/76 +f 353/330/77 197/331/78 209/332/79 +f 197/331/78 282/323/70 209/332/79 +f 210/333/80 265/334/81 197/331/78 +f 354/335/82 198/336/83 210/333/80 +f 200/322/69 353/330/77 209/332/79 +f 198/336/83 284/337/84 210/333/80 +f 211/338/85 266/339/86 198/336/83 +f 371/327/74 211/338/85 355/340/87 +f 369/341/88 210/333/80 197/331/78 +f 261/314/62 273/342/89 201/343/90 +f 199/326/73 288/344/76 267/345/91 +f 372/346/92 212/328/75 356/347/72 +f 370/348/93 211/338/85 198/336/83 +f 205/349/94 275/350/95 201/351/90 +f 202/352/96 283/353/97 206/354/98 +f 202/352/96 350/316/64 275/350/95 +f 350/316/64 201/351/90 275/350/95 +f 206/354/98 277/355/99 202/352/96 +f 203/356/100 285/357/101 207/358/102 +f 203/356/100 351/317/65 277/355/99 +f 277/355/99 262/315/63 202/352/96 +f 287/359/103 203/356/100 207/358/102 +f 208/360/104 279/361/105 287/359/103 +f 264/321/68 279/361/105 204/362/106 +f 352/320/67 203/356/100 279/361/105 +f 281/363/107 204/362/106 208/360/104 +f 295/364/108 271/365/109 375/366/110 +f 205/367/94 273/342/89 281/363/107 +f 349/313/61 204/362/106 273/342/89 +f 358/368/111 205/349/94 290/369/112 +f 292/370/113 283/353/97 358/368/111 +f 268/324/71 289/371/114 376/372/115 +f 288/329/76 376/372/115 295/373/108 +f 359/374/116 206/354/98 292/370/113 +f 294/375/117 285/357/101 359/374/116 +f 211/338/85 267/345/91 286/376/118 +f 284/337/84 373/377/119 265/334/81 +f 287/359/103 294/375/117 360/378/120 +f 208/360/104 360/378/120 296/379/121 +f 282/323/70 373/377/119 289/371/114 +f 286/376/118 374/380/122 266/339/86 +f 281/363/107 296/379/121 357/381/123 +f 358/368/111 298/382/124 386/383/125 +f 266/339/86 291/384/126 284/337/84 +f 267/345/91 295/364/108 375/366/110 +f 269/385/127 229/386/128 381/387/129 +f 272/388/130 232/389/131 384/390/132 +f 289/371/114 269/385/127 381/387/129 +f 267/345/91 293/391/133 286/376/118 +f 382/392/134 214/393/135 230/394/136 +f 216/395/137 381/387/129 229/386/128 +f 374/380/122 382/392/134 291/384/126 +f 376/372/115 381/387/129 272/388/130 +f 383/396/138 215/397/139 231/398/140 +f 382/392/134 213/399/141 269/385/127 +f 375/366/110 383/396/138 293/391/133 +f 373/377/119 382/392/134 269/385/127 +f 205/367/94 357/381/123 290/400/112 +f 270/401/142 231/398/140 214/393/135 +f 295/373/108 272/388/130 384/390/132 +f 293/391/133 270/401/142 374/380/122 +f 359/374/116 300/402/143 387/403/144 +f 298/404/124 357/381/123 385/405/145 +f 271/365/109 232/406/131 215/397/139 +f 380/407/146 321/408/147 217/409/148 +f 388/410/149 294/375/117 302/411/150 +f 292/370/113 386/383/125 300/402/143 +f 232/389/131 303/412/151 324/413/152 +f 321/408/147 216/395/137 229/386/128 +f 296/379/121 385/405/145 357/381/123 +f 294/375/117 387/403/144 302/411/150 +f 322/414/153 377/415/154 297/416/155 +f 297/416/155 217/409/148 321/408/147 +f 300/402/143 362/417/156 316/418/157 +f 304/419/158 360/378/120 388/410/149 +f 229/386/128 297/416/155 321/408/147 +f 322/414/153 213/399/141 230/394/136 +f 302/411/150 363/420/159 318/421/160 +f 362/417/156 298/382/124 314/422/161 +f 299/423/162 219/424/163 378/425/164 +f 322/414/153 378/425/164 218/426/165 +f 320/427/166 388/410/149 364/428/167 +f 387/403/144 316/418/157 363/420/159 +f 214/393/135 322/414/153 230/394/136 +f 231/398/140 299/423/162 214/393/135 +f 332/429/168 362/417/156 366/430/169 +f 388/410/149 318/421/160 364/428/167 +f 324/431/152 379/432/170 301/433/171 +f 323/434/172 379/432/170 219/424/163 +f 224/435/173 308/436/174 328/437/175 +f 304/419/158 361/438/176 385/405/145 +f 215/397/139 323/434/172 231/398/140 +f 232/406/131 301/433/171 215/397/139 +f 274/439/177 325/440/178 221/441/179 +f 380/407/146 224/435/173 220/442/180 +f 303/412/151 220/442/180 324/413/152 +f 280/443/181 217/409/148 221/441/179 +f 276/444/182 326/445/183 222/446/184 +f 308/436/174 221/441/179 325/440/178 +f 218/426/165 274/439/177 377/415/154 +f 378/425/164 223/447/185 276/444/182 +f 223/447/185 307/448/186 327/449/187 +f 222/446/184 305/450/188 274/439/177 +f 377/415/154 221/441/179 217/409/148 +f 379/432/170 224/451/173 278/452/189 +f 314/453/161 385/405/145 361/438/176 +f 276/444/182 327/449/187 306/454/190 +f 378/425/164 222/446/184 218/426/165 +f 219/424/163 278/452/189 223/447/185 +f 318/421/160 367/455/191 334/456/192 +f 366/430/169 314/422/161 330/457/193 +f 278/452/189 328/458/175 307/448/186 +f 329/459/194 308/436/174 325/440/178 +f 320/427/166 368/460/195 336/461/196 +f 363/420/159 332/429/168 367/455/191 +f 325/440/178 309/462/197 329/459/194 +f 331/463/198 305/450/188 326/445/183 +f 366/430/169 338/464/199 398/465/200 +f 364/428/167 334/456/192 368/460/195 +f 326/445/183 310/466/201 331/463/198 +f 327/449/187 310/466/201 306/454/190 +f 319/467/202 236/468/14 396/469/203 +f 320/427/166 365/470/204 361/438/176 +f 307/448/186 333/471/205 327/449/187 +f 328/458/175 311/472/206 307/448/186 +f 393/473/207 392/474/20 319/467/202 +f 392/474/20 337/475/21 228/476/23 +f 308/436/174 335/477/208 328/437/175 +f 329/459/194 319/467/202 312/478/209 +f 233/479/22 225/480/29 337/475/21 +f 312/478/209 396/469/203 335/477/208 +f 329/459/194 313/481/210 393/473/207 +f 394/482/211 309/462/197 331/463/198 +f 394/482/211 389/483/26 313/481/210 +f 389/483/26 339/484/27 225/480/29 +f 331/463/198 315/485/212 394/482/211 +f 395/486/213 310/466/201 333/471/205 +f 330/487/193 361/438/176 365/470/204 +f 313/481/210 233/479/22 393/473/207 +f 333/471/205 317/488/214 395/486/213 +f 335/489/208 317/488/214 311/472/206 +f 399/490/215 332/429/168 340/491/216 +f 330/487/193 397/492/217 338/493/199 +f 235/494/31 226/495/34 390/496/30 +f 390/496/30 339/484/27 234/497/28 +f 400/498/218 334/456/192 342/499/219 +f 332/429/168 398/465/200 340/491/216 +f 394/482/211 390/496/30 234/497/28 +f 235/494/31 315/485/212 395/486/213 +f 365/470/204 344/500/220 397/492/217 +f 342/499/219 367/455/191 399/490/215 +f 236/501/14 227/502/15 391/503/16 +f 391/503/16 341/504/38 235/494/31 +f 236/468/14 228/476/23 343/505/221 +f 344/500/220 368/460/195 400/498/218 +f 395/486/213 391/503/16 235/494/31 +f 236/501/14 317/488/214 396/506/203 +f 120/227/5 136/145/5 135/142/4 +f 118/229/6 134/155/6 133/213/1 +f 116/231/8 132/152/8 131/149/2 +f 114/233/10 130/147/10 129/211/9 +f 113/234/9 129/211/9 136/145/5 +f 119/228/4 135/142/4 134/155/6 +f 117/235/1 133/212/1 132/152/8 +f 115/232/2 131/149/2 130/147/10 +f 122/148/6 137/240/6 138/236/1 +f 121/146/1 138/236/1 144/237/8 +f 127/144/2 143/241/2 142/238/10 +f 125/153/9 141/507/9 140/239/5 +f 123/150/4 139/243/4 137/240/6 +f 128/143/8 144/237/8 143/241/2 +f 126/156/10 142/238/10 141/242/9 +f 124/151/5 140/239/5 139/243/4 +f 160/164/5 153/166/9 145/244/9 +f 158/160/6 159/162/4 151/246/4 +f 156/171/8 157/173/1 149/248/1 +f 154/167/10 155/169/2 147/250/2 +f 159/162/4 160/164/5 152/245/5 +f 157/174/1 158/160/6 150/247/6 +f 155/169/2 156/171/8 148/249/8 +f 153/166/9 154/167/10 146/251/10 +f 166/175/10 174/257/10 175/253/2 +f 164/172/5 172/258/5 173/254/9 +f 162/168/6 169/259/6 171/255/4 +f 167/161/2 175/253/2 176/256/8 +f 165/220/9 173/508/9 174/257/10 +f 163/170/4 171/255/4 172/258/5 +f 161/165/1 170/260/1 169/259/6 +f 168/163/8 176/256/8 170/260/1 +f 181/261/14 177/509/221 237/262/15 +f 246/264/17 242/268/20 181/265/14 +f 186/267/19 182/270/22 242/268/20 +f 178/269/21 238/271/23 242/268/20 +f 238/271/23 177/510/221 181/265/14 +f 247/272/24 243/274/26 182/270/22 +f 187/273/25 183/276/28 243/274/26 +f 179/275/27 239/277/29 243/274/26 +f 239/277/29 178/269/21 182/270/22 +f 187/273/25 248/280/32 244/278/30 +f 184/279/31 244/278/30 248/280/32 +f 184/279/31 180/287/38 240/282/34 +f 244/278/30 240/282/34 179/275/27 +f 188/281/33 245/286/37 241/263/16 +f 185/283/18 245/286/37 249/284/35 +f 181/261/14 241/263/16 245/286/37 +f 180/287/38 184/279/31 241/263/16 +f 189/288/36 250/290/40 246/264/17 +f 190/289/39 186/267/19 246/264/17 +f 251/291/41 247/272/24 186/267/19 +f 191/292/42 187/273/25 247/272/24 +f 252/293/43 248/280/32 187/273/25 +f 192/294/44 188/281/33 248/280/32 +f 192/294/44 249/284/35 245/286/37 +f 189/285/36 249/284/35 253/295/45 +f 193/297/46 254/298/47 250/290/40 +f 190/289/39 250/290/40 254/298/47 +f 194/299/48 255/301/50 251/291/41 +f 195/300/49 191/292/42 251/291/41 +f 256/302/51 252/293/43 191/292/42 +f 196/303/52 192/294/44 252/293/43 +f 253/295/45 249/284/35 192/294/44 +f 346/304/53 254/298/47 193/297/46 +f 258/306/55 194/299/48 254/298/47 +f 347/307/56 255/301/50 194/299/48 +f 195/300/49 255/301/50 347/307/56 +f 256/302/51 195/300/49 259/308/57 +f 196/303/52 256/302/51 348/309/58 +f 253/295/45 196/303/52 260/310/59 +f 257/312/54 193/296/46 253/295/45 +f 257/312/54 345/311/60 349/313/61 +f 262/315/63 258/306/55 346/304/53 +f 259/308/57 347/307/56 351/317/65 +f 350/316/64 346/304/53 257/305/54 +f 260/310/59 348/309/58 352/320/67 +f 351/317/65 347/307/56 258/306/55 +f 200/322/69 209/332/79 282/323/70 +f 348/309/58 259/308/57 263/318/66 +f 345/311/60 260/310/59 264/321/68 +f 356/325/72 212/511/75 199/326/73 +f 212/328/75 200/322/69 268/324/71 +f 353/330/77 369/341/88 197/331/78 +f 197/331/78 265/334/81 282/323/70 +f 210/333/80 284/337/84 265/334/81 +f 354/335/82 370/348/93 198/336/83 +f 200/322/69 372/346/92 353/330/77 +f 198/336/83 266/339/86 284/337/84 +f 211/338/85 286/376/118 266/339/86 +f 371/327/74 199/326/73 211/338/85 +f 369/341/88 354/335/82 210/333/80 +f 261/314/62 349/313/61 273/342/89 +f 199/326/73 212/511/75 288/344/76 +f 372/346/92 200/322/69 212/328/75 +f 370/348/93 355/340/87 211/338/85 +f 205/349/94 283/353/97 275/350/95 +f 202/352/96 275/350/95 283/353/97 +f 202/352/96 262/315/63 350/316/64 +f 350/316/64 261/319/62 201/351/90 +f 206/354/98 285/357/101 277/355/99 +f 203/356/100 277/355/99 285/357/101 +f 203/356/100 263/318/66 351/317/65 +f 277/355/99 351/317/65 262/315/63 +f 287/359/103 279/361/105 203/356/100 +f 208/360/104 204/362/106 279/361/105 +f 264/321/68 352/320/67 279/361/105 +f 352/320/67 263/318/66 203/356/100 +f 281/363/107 273/342/89 204/362/106 +f 295/364/108 384/512/132 271/365/109 +f 205/367/94 201/343/90 273/342/89 +f 349/313/61 264/321/68 204/362/106 +f 358/368/111 283/353/97 205/349/94 +f 292/370/113 206/354/98 283/353/97 +f 268/324/71 282/323/70 289/371/114 +f 288/329/76 268/324/71 376/372/115 +f 359/374/116 285/357/101 206/354/98 +f 294/375/117 207/358/102 285/357/101 +f 211/338/85 199/326/73 267/345/91 +f 284/337/84 291/384/126 373/377/119 +f 287/359/103 207/358/102 294/375/117 +f 208/360/104 287/359/103 360/378/120 +f 282/323/70 265/334/81 373/377/119 +f 286/376/118 293/391/133 374/380/122 +f 281/363/107 208/360/104 296/379/121 +f 358/368/111 290/369/112 298/382/124 +f 266/339/86 374/380/122 291/384/126 +f 267/345/91 288/344/76 295/364/108 +f 269/385/127 213/399/141 229/386/128 +f 272/388/130 216/395/137 232/389/131 +f 289/371/114 373/377/119 269/385/127 +f 267/345/91 375/366/110 293/391/133 +f 382/392/134 270/401/142 214/393/135 +f 216/395/137 272/388/130 381/387/129 +f 374/380/122 270/401/142 382/392/134 +f 376/372/115 289/371/114 381/387/129 +f 383/396/138 271/365/109 215/397/139 +f 382/392/134 230/394/136 213/399/141 +f 375/366/110 271/365/109 383/396/138 +f 373/377/119 291/384/126 382/392/134 +f 205/367/94 281/363/107 357/381/123 +f 270/401/142 383/396/138 231/398/140 +f 295/373/108 376/372/115 272/388/130 +f 293/391/133 383/396/138 270/401/142 +f 359/374/116 292/370/113 300/402/143 +f 298/404/124 290/400/112 357/381/123 +f 271/365/109 384/512/132 232/406/131 +f 380/407/146 303/412/151 321/408/147 +f 388/410/149 360/378/120 294/375/117 +f 292/370/113 358/368/111 386/383/125 +f 232/389/131 216/395/137 303/412/151 +f 321/408/147 303/412/151 216/395/137 +f 296/379/121 304/419/158 385/405/145 +f 294/375/117 359/374/116 387/403/144 +f 322/414/153 218/426/165 377/415/154 +f 297/416/155 377/415/154 217/409/148 +f 300/402/143 386/383/125 362/417/156 +f 304/419/158 296/379/121 360/378/120 +f 229/386/128 213/399/141 297/416/155 +f 322/414/153 297/416/155 213/399/141 +f 302/411/150 387/403/144 363/420/159 +f 362/417/156 386/383/125 298/382/124 +f 299/423/162 323/434/172 219/424/163 +f 322/414/153 299/423/162 378/425/164 +f 320/427/166 304/419/158 388/410/149 +f 387/403/144 300/402/143 316/418/157 +f 214/393/135 299/423/162 322/414/153 +f 231/398/140 323/434/172 299/423/162 +f 332/429/168 316/418/157 362/417/156 +f 388/410/149 302/411/150 318/421/160 +f 324/431/152 220/513/180 379/432/170 +f 323/434/172 301/433/171 379/432/170 +f 224/435/173 280/443/181 308/436/174 +f 304/419/158 320/427/166 361/438/176 +f 215/397/139 301/433/171 323/434/172 +f 232/406/131 324/431/152 301/433/171 +f 274/439/177 305/450/188 325/440/178 +f 380/407/146 280/443/181 224/435/173 +f 303/412/151 380/407/146 220/442/180 +f 280/443/181 380/407/146 217/409/148 +f 276/444/182 306/454/190 326/445/183 +f 308/436/174 280/443/181 221/441/179 +f 218/426/165 222/446/184 274/439/177 +f 378/425/164 219/424/163 223/447/185 +f 223/447/185 278/452/189 307/448/186 +f 222/446/184 326/445/183 305/450/188 +f 377/415/154 274/439/177 221/441/179 +f 379/432/170 220/513/180 224/451/173 +f 314/453/161 298/404/124 385/405/145 +f 276/444/182 223/447/185 327/449/187 +f 378/425/164 276/444/182 222/446/184 +f 219/424/163 379/432/170 278/452/189 +f 318/421/160 363/420/159 367/455/191 +f 366/430/169 362/417/156 314/422/161 +f 278/452/189 224/451/173 328/458/175 +f 329/459/194 312/478/209 308/436/174 +f 320/427/166 364/428/167 368/460/195 +f 363/420/159 316/418/157 332/429/168 +f 325/440/178 305/450/188 309/462/197 +f 331/463/198 309/462/197 305/450/188 +f 366/430/169 330/457/193 338/464/199 +f 364/428/167 318/421/160 334/456/192 +f 326/445/183 306/454/190 310/466/201 +f 327/449/187 333/471/205 310/466/201 +f 319/467/202 392/474/20 236/468/14 +f 320/427/166 336/461/196 365/470/204 +f 307/448/186 311/472/206 333/471/205 +f 328/458/175 335/489/208 311/472/206 +f 393/473/207 233/479/22 392/474/20 +f 392/474/20 233/479/22 337/475/21 +f 308/436/174 312/478/209 335/477/208 +f 329/459/194 393/473/207 319/467/202 +f 233/479/22 389/483/26 225/480/29 +f 312/478/209 319/467/202 396/469/203 +f 329/459/194 309/462/197 313/481/210 +f 394/482/211 313/481/210 309/462/197 +f 394/482/211 234/497/28 389/483/26 +f 389/483/26 234/497/28 339/484/27 +f 331/463/198 310/466/201 315/485/212 +f 395/486/213 315/485/212 310/466/201 +f 330/487/193 314/453/161 361/438/176 +f 313/481/210 389/483/26 233/479/22 +f 333/471/205 311/472/206 317/488/214 +f 335/489/208 396/506/203 317/488/214 +f 399/490/215 367/455/191 332/429/168 +f 330/487/193 365/470/204 397/492/217 +f 235/494/31 341/504/38 226/495/34 +f 390/496/30 226/495/34 339/484/27 +f 400/498/218 368/460/195 334/456/192 +f 332/429/168 366/430/169 398/465/200 +f 394/482/211 315/485/212 390/496/30 +f 235/494/31 390/496/30 315/485/212 +f 365/470/204 336/461/196 344/500/220 +f 342/499/219 334/456/192 367/455/191 +f 236/501/14 343/514/221 227/502/15 +f 391/503/16 227/502/15 341/504/38 +f 236/468/14 392/474/20 228/476/23 +f 344/500/220 336/461/196 368/460/195 +f 395/486/213 317/488/214 391/503/16 +f 236/501/14 391/503/16 317/488/214 +o Stock +v -0.500000 1.187500 -9.750000 +v -0.250000 1.437500 -9.750000 +v -0.250000 1.437500 -4.750000 +v -0.500000 1.187500 -4.750000 +v 0.500000 1.187500 -4.750000 +v 0.250000 1.437500 -4.750000 +v 0.250000 1.437500 -9.750000 +v 0.500000 1.187500 -9.750000 +v -0.250000 -1.062500 -9.750000 +v -0.500000 -0.812500 -9.750000 +v 0.500000 0.687500 -4.750000 +v -0.250000 0.437500 -4.750000 +v 0.250000 0.437500 -4.750000 +v -0.500000 0.687500 -4.750000 +v 0.500000 -0.812500 -9.750000 +v 0.250000 -1.062500 -9.750000 +v -0.500000 -0.802500 -8.250000 +v -0.250000 -1.062500 -8.250000 +v 0.250000 -1.062500 -8.250000 +v 0.500000 -0.812500 -8.250000 +v -0.500000 0.687500 -9.500000 +v -0.500000 -0.312500 -9.500000 +v 0.500000 0.687500 -9.500000 +v 0.500000 -0.312500 -9.500000 +vt 0.769231 0.018868 +vt 0.876923 0.056604 +vt 0.769231 0.056604 +vt 0.992308 0.301887 +vt 1.000000 0.245283 +vt 1.000000 0.283019 +vt 0.923077 0.000000 +vt 0.876923 0.018868 +vt 0.876923 0.000000 +vt 0.923077 0.283019 +vt 0.769231 0.301887 +vt 0.769231 0.283019 +vt 0.923077 0.226415 +vt 0.769231 0.245283 +vt 0.769231 0.226415 +vt 0.876923 0.075472 +vt 0.769231 0.075472 +vt 0.915385 0.113208 +vt 0.923077 0.075472 +vt 0.923077 0.056604 +vt 0.930769 0.301887 +vt 0.923077 0.245283 +vt 0.930769 0.226415 +vt 0.946154 0.301887 +vt 0.946154 0.226415 +vt 0.976923 0.226415 +vt 0.992308 0.226415 +vt 0.976923 0.301887 +vt 0.915385 0.339623 +vt 0.876923 0.452830 +vt 0.915385 0.188679 +vt 0.915385 0.415094 +vt 0.923077 0.452830 +vt 0.923077 0.018868 +vt 0.923077 0.301887 +vt 0.769231 0.000000 +vt 0.769231 0.339623 +vt 0.769231 0.188679 +vn -0.3936 -0.8453 0.3612 +vn 0.3627 -0.9141 0.1815 +vn 0.3929 -0.8452 0.3622 +vn 0.0000 0.3054 -0.9522 +vn 0.0000 0.0000 -1.0000 +vn -0.8941 -0.4478 0.0004 +vn -0.3703 -0.9109 0.1819 +vn -0.9078 -0.4085 0.0944 +vn -0.3827 0.9239 0.0000 +vn -0.9239 0.3827 0.0000 +vn 0.8941 0.4478 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.9032 -0.4186 0.0951 +vn 0.9487 -0.2905 0.1245 +vn 1.0000 0.0000 0.0000 +vn 0.8941 -0.4478 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.0000 -0.3054 -0.9522 +vn 0.0000 -0.2298 -0.9732 +vn 0.0000 0.2298 -0.9732 +vn -1.0000 0.0000 0.0000 vn -0.3827 -0.9239 0.0000 vn -0.8941 0.4478 0.0000 vn -0.9486 -0.2911 0.1239 -s off -f 1/1/1 142/2/1 2/3/1 -f 7/4/2 5/5/2 6/6/2 -f 3/7/3 8/8/3 4/9/3 -f 33/10/4 6/11/4 34/12/4 -f 4/9/1 139/13/1 3/14/1 -f 141/15/3 146/16/3 142/2/3 -f 25/17/5 27/18/5 29/19/5 -f 2/3/5 34/12/5 1/20/5 -f 41/21/5 43/22/5 35/23/5 -f 72/24/6 64/25/6 69/26/6 -f 69/26/3 73/27/3 70/28/3 -f 68/29/7 66/30/7 77/31/7 -f 62/32/2 63/33/2 61/34/2 -f 70/28/7 74/35/7 71/36/7 -f 66/30/8 67/37/8 63/33/8 -f 76/38/1 60/39/1 59/40/1 -f 68/29/3 75/41/3 67/42/3 -f 72/24/1 70/28/1 71/36/1 -f 78/43/9 76/38/9 75/44/9 -f 76/45/6 59/46/6 63/33/6 -f 126/47/1 127/48/1 120/49/1 -f 404/50/10 405/51/10 403/52/10 -f 131/53/1 134/54/1 132/55/1 -f 131/56/6 137/57/6 133/58/6 -f 134/54/7 136/59/7 132/55/7 -f 137/57/2 136/59/2 138/60/2 -f 140/61/5 143/62/5 139/13/5 -f 146/63/1 143/64/1 144/65/1 -f 34/66/6 6/6/6 145/67/6 -f 4/9/7 8/8/7 144/68/7 -f 148/69/1 149/70/1 147/71/1 -f 153/72/6 160/73/6 152/74/6 -f 148/69/7 158/75/7 150/76/7 -f 147/71/3 155/77/3 148/69/3 -f 149/70/6 156/78/6 147/71/6 -f 150/76/5 157/79/5 149/70/5 -f 151/80/2 156/81/2 152/82/2 -f 153/83/2 158/75/2 154/84/2 -f 154/84/2 155/85/2 151/80/2 -f 152/82/2 157/86/2 153/83/2 -f 161/87/2 159/88/2 160/89/2 -f 154/90/5 161/91/5 153/92/5 -f 151/93/7 162/94/7 154/90/7 -f 152/74/3 159/88/3 151/93/3 -f 173/95/2 171/96/2 172/97/2 -f 177/98/2 175/99/2 176/100/2 -f 166/101/7 173/95/7 164/102/7 -f 163/103/6 171/96/6 165/104/6 -f 169/105/3 178/106/3 170/107/3 -f 168/108/5 176/100/5 167/109/5 -f 165/110/3 174/111/3 166/112/3 -f 164/113/5 172/97/5 163/114/5 -f 170/115/7 177/98/7 168/116/7 -f 167/117/6 175/99/6 169/118/6 -f 197/119/5 199/120/5 192/121/5 -f 183/122/5 185/123/5 187/124/5 -f 249/125/5 239/126/5 243/127/5 -f 263/128/7 265/129/7 259/130/7 -f 65/131/11 371/132/11 64/25/11 -f 73/133/12 374/134/12 74/35/12 -f 64/135/3 373/136/3 73/27/3 -f 376/137/2 384/138/2 381/139/2 -f 384/138/5 377/140/5 385/141/5 -f 382/142/7 386/143/7 379/144/7 -f 380/145/1 378/146/1 375/147/1 -f 382/142/13 384/138/13 383/148/13 -f 386/149/12 380/145/12 379/150/12 -f 382/151/3 379/152/3 380/153/3 -f 396/154/5 400/155/5 388/156/5 -f 391/157/3 389/158/3 397/159/3 -f 404/160/6 410/161/6 406/162/6 -f 403/163/7 409/164/7 407/165/7 -f 406/162/1 409/164/1 405/51/1 -f 413/166/1 412/167/1 411/168/1 -f 425/169/6 421/170/6 423/171/6 -f 413/172/3 423/173/3 415/174/3 -f 424/175/7 419/176/7 426/177/7 -f 420/178/13 418/179/13 419/176/13 -f 436/180/1 440/181/1 435/182/1 -f 414/183/12 426/177/12 412/184/12 -f 412/185/5 426/186/5 418/179/5 -f 411/168/11 423/171/11 413/166/11 -f 418/179/2 415/174/2 417/187/2 -f 422/188/14 415/174/14 421/170/14 -f 431/189/7 434/190/7 432/191/7 -f 428/192/1 432/191/1 427/193/1 -f 429/194/3 431/189/3 428/195/3 -f 430/196/2 433/197/2 429/198/2 -f 427/199/5 434/190/5 430/200/5 -f 437/201/3 439/202/3 436/180/3 -f 438/203/2 441/204/2 437/201/2 -f 435/182/5 442/205/5 438/203/5 -f 438/203/6 436/180/6 435/182/6 -f 453/206/3 448/207/3 447/208/3 -f 444/209/5 451/210/5 443/211/5 -f 448/212/3 458/213/3 449/214/3 -f 457/215/5 444/216/5 445/217/5 -f 450/218/3 453/206/3 447/219/3 -f 451/210/5 446/220/5 443/221/5 -f 460/222/3 456/223/3 450/224/3 -f 455/225/5 459/226/5 446/227/5 -f 466/228/3 449/229/3 458/213/3 -f 445/230/5 465/231/5 457/215/5 -f 457/215/7 466/228/7 458/213/7 -f 454/232/15 457/215/15 458/213/15 -f 452/233/2 453/206/2 451/210/2 -f 455/225/14 453/206/14 456/223/14 -f 461/234/6 456/223/6 462/235/6 -f 477/236/3 472/237/3 471/238/3 -f 468/239/5 475/240/5 467/241/5 -f 472/242/3 482/243/3 473/244/3 -f 481/245/5 468/246/5 469/247/5 -f 474/248/3 477/236/3 471/249/3 -f 475/240/5 470/250/5 467/251/5 -f 484/252/3 480/253/3 474/254/3 -f 479/255/5 483/256/5 470/257/5 -f 490/258/3 473/259/3 482/243/3 -f 469/260/5 489/261/5 481/245/5 -f 481/245/7 490/258/7 482/243/7 -f 478/262/15 481/245/15 482/243/15 -f 476/263/2 477/236/2 475/240/2 -f 479/255/14 477/236/14 480/253/14 -f 485/264/6 480/253/6 486/265/6 -f 497/266/3 496/267/3 493/268/3 -f 495/269/3 499/270/3 494/271/3 -f 492/272/3 501/273/3 491/274/3 -f 494/275/3 502/276/3 492/277/3 -f 501/273/3 493/278/3 491/279/3 -f 508/280/5 509/281/5 505/282/5 -f 511/283/5 507/284/5 506/285/5 -f 513/286/5 504/287/5 503/288/5 -f 514/289/5 506/290/5 504/291/5 -f 505/292/5 513/286/5 503/293/5 -f 502/276/1 513/286/1 501/273/1 -f 499/270/12 514/289/12 502/276/12 -f 500/294/7 511/283/7 499/270/7 -f 513/286/11 497/266/11 501/273/11 -f 509/281/6 498/295/6 497/266/6 -f 515/296/16 522/297/16 517/298/16 -f 516/299/7 520/300/7 515/301/7 -f 518/302/17 519/303/17 516/304/17 -f 518/305/6 522/297/6 521/306/6 -f 545/307/5 538/308/5 537/309/5 -f 546/310/5 531/311/5 538/308/5 -f 531/311/5 540/312/5 532/313/5 -f 532/313/5 541/314/5 533/315/5 -f 541/314/5 534/316/5 533/315/5 -f 542/317/5 535/318/5 534/316/5 -f 535/319/5 544/320/5 536/321/5 -f 536/321/5 545/307/5 537/309/5 -f 551/322/5 553/323/5 548/324/5 -f 568/325/3 577/326/3 569/327/3 -f 569/327/3 578/328/3 570/329/3 -f 570/329/3 571/330/3 563/331/3 -f 571/330/3 564/332/3 563/331/3 -f 572/333/3 565/334/3 564/332/3 -f 573/335/3 566/336/3 565/334/3 -f 574/337/3 567/338/3 566/336/3 -f 567/339/3 576/340/3 568/325/3 -f 582/341/3 581/342/3 585/343/3 -f 811/344/16 818/345/16 813/346/16 -f 812/347/7 816/348/7 811/349/7 -f 814/350/17 815/351/17 812/352/17 -f 814/353/6 818/345/6 817/354/6 -f 828/355/2 820/356/2 825/357/2 -f 827/358/5 830/359/5 829/360/5 -f 830/361/6 826/362/6 823/363/6 -f 822/364/1 824/365/1 819/366/1 -f 828/355/14 826/362/14 827/367/14 -f 824/365/11 830/368/11 823/369/11 -f 825/357/3 820/356/3 824/370/3 -f 832/371/2 840/372/2 837/373/2 -f 840/372/5 833/374/5 841/375/5 -f 838/376/7 842/377/7 835/378/7 -f 836/379/1 834/380/1 831/381/1 -f 838/376/13 840/372/13 839/382/13 -f 842/383/12 836/379/12 835/384/12 -f 838/385/3 835/386/3 836/387/3 -f 852/388/2 844/389/2 849/390/2 -f 851/391/5 854/392/5 853/393/5 -f 854/394/6 850/395/6 847/396/6 -f 846/397/1 848/398/1 843/399/1 -f 852/388/14 850/395/14 851/400/14 -f 848/398/11 854/401/11 847/402/11 -f 849/390/3 844/389/3 848/403/3 -f 864/404/5 868/405/5 856/406/5 -f 859/407/3 857/408/3 865/409/3 -f 885/410/6 883/411/6 881/412/6 -f 1/1/1 141/15/1 142/2/1 -f 7/4/2 8/8/2 5/5/2 -f 3/7/3 5/413/3 8/8/3 -f 33/10/4 7/414/4 6/11/4 -f 4/9/1 140/61/1 139/13/1 -f 141/15/3 145/415/3 146/16/3 -f 21/416/5 22/417/5 23/418/5 -f 23/418/5 24/419/5 25/17/5 -f 25/17/5 26/420/5 27/18/5 -f 27/18/5 28/421/5 29/19/5 -f 29/19/5 30/422/5 31/423/5 -f 31/423/5 32/424/5 29/19/5 -f 32/424/5 21/416/5 29/19/5 -f 21/416/5 23/418/5 29/19/5 -f 23/418/5 25/17/5 29/19/5 -f 2/3/5 33/10/5 34/12/5 -f 35/23/5 36/425/5 37/426/5 -f 37/426/5 38/427/5 35/23/5 -f 38/427/5 39/428/5 35/23/5 -f 39/428/5 40/429/5 41/21/5 -f 41/21/5 42/430/5 43/22/5 -f 43/22/5 44/431/5 35/23/5 -f 44/431/5 45/432/5 35/23/5 -f 45/432/5 46/433/5 35/23/5 -f 39/428/5 41/21/5 35/23/5 -f 72/24/6 65/131/6 64/25/6 -f 69/26/3 64/135/3 73/27/3 -f 62/32/7 60/39/7 66/30/7 -f 60/39/7 77/31/7 66/30/7 -f 77/31/7 78/434/7 68/29/7 -f 62/32/2 66/30/2 63/33/2 -f 70/28/7 73/133/7 74/35/7 -f 66/30/8 68/435/8 67/37/8 -f 76/38/1 77/31/1 60/39/1 -f 68/29/3 78/434/3 75/41/3 -f 72/24/1 69/26/1 70/28/1 -f 78/43/9 77/31/9 76/38/9 -f 61/34/6 63/33/6 59/46/6 -f 63/33/6 67/436/6 76/45/6 -f 67/436/6 75/437/6 76/45/6 -f 110/438/1 109/439/1 127/48/1 -f 109/439/1 120/49/1 127/48/1 -f 120/49/1 119/440/1 126/47/1 -f 119/440/1 107/441/1 126/47/1 -f 107/441/1 108/442/1 126/47/1 -f 404/50/10 406/162/10 405/51/10 -f 131/53/1 133/443/1 134/54/1 -f 131/56/6 135/444/6 137/57/6 -f 134/54/7 138/60/7 136/59/7 -f 137/57/2 135/444/2 136/59/2 -f 140/61/5 144/445/5 143/62/5 -f 146/63/1 145/446/1 143/64/1 -f 3/447/6 139/448/6 143/449/6 -f 145/67/6 141/450/6 1/451/6 -f 5/5/6 3/447/6 143/449/6 -f 145/67/6 1/451/6 34/66/6 -f 5/5/6 143/449/6 6/6/6 -f 143/449/6 145/67/6 6/6/6 -f 8/8/7 7/4/7 144/68/7 -f 7/4/7 33/10/7 146/452/7 -f 144/68/7 7/4/7 146/452/7 -f 33/10/7 2/3/7 146/452/7 -f 2/3/7 142/2/7 146/452/7 -f 140/61/7 4/9/7 144/68/7 -f 148/69/1 150/76/1 149/70/1 -f 153/72/6 161/453/6 160/73/6 -f 148/69/7 155/85/7 158/75/7 -f 147/71/3 156/454/3 155/77/3 -f 149/70/6 157/455/6 156/78/6 -f 150/76/5 158/456/5 157/79/5 -f 151/80/2 155/85/2 156/81/2 -f 153/83/2 157/86/2 158/75/2 -f 154/84/2 158/75/2 155/85/2 -f 152/82/2 156/81/2 157/86/2 -f 161/87/2 162/94/2 159/88/2 -f 154/90/5 162/94/5 161/91/5 -f 151/93/7 159/88/7 162/94/7 -f 152/74/3 160/73/3 159/88/3 -f 173/95/2 174/111/2 171/96/2 -f 177/98/2 178/106/2 175/99/2 -f 166/101/7 174/111/7 173/95/7 -f 163/103/6 172/97/6 171/96/6 -f 169/105/3 175/99/3 178/106/3 -f 168/108/5 177/98/5 176/100/5 -f 165/110/3 171/96/3 174/111/3 -f 164/113/5 173/95/5 172/97/5 -f 170/115/7 178/106/7 177/98/7 -f 167/117/6 176/100/6 175/99/6 -f 192/121/5 191/457/5 193/458/5 -f 193/458/5 194/459/5 192/121/5 -f 194/459/5 195/460/5 192/121/5 -f 195/460/5 196/461/5 197/119/5 -f 197/119/5 198/462/5 199/120/5 -f 199/120/5 200/463/5 192/121/5 -f 200/463/5 201/464/5 192/121/5 -f 201/464/5 202/465/5 192/121/5 -f 195/460/5 197/119/5 192/121/5 -f 179/466/5 180/467/5 181/468/5 -f 181/468/5 182/469/5 183/122/5 -f 183/122/5 184/470/5 185/123/5 -f 185/123/5 186/471/5 187/124/5 -f 187/124/5 188/472/5 189/473/5 -f 189/473/5 190/474/5 187/124/5 -f 190/474/5 179/466/5 187/124/5 -f 179/466/5 181/468/5 187/124/5 -f 181/468/5 183/122/5 187/124/5 -f 239/126/5 240/475/5 241/476/5 -f 241/476/5 242/477/5 239/126/5 -f 242/477/5 243/127/5 239/126/5 -f 243/127/5 244/478/5 245/479/5 -f 245/479/5 246/480/5 247/481/5 -f 247/481/5 248/482/5 249/125/5 -f 249/125/5 250/483/5 239/126/5 -f 243/127/5 245/479/5 247/481/5 -f 247/481/5 249/125/5 243/127/5 -f 259/130/7 260/484/7 261/485/7 -f 261/485/7 262/486/7 263/128/7 -f 263/128/7 264/487/7 265/129/7 -f 265/129/7 266/488/7 259/130/7 -f 259/130/7 261/485/7 263/128/7 -f 65/131/11 372/489/11 371/132/11 -f 73/133/12 373/490/12 374/134/12 -f 64/135/3 371/491/3 373/136/3 -f 376/137/2 377/140/2 384/138/2 -f 377/140/5 378/146/5 385/141/5 -f 385/141/5 386/492/5 383/493/5 -f 383/493/5 384/138/5 385/141/5 -f 382/142/7 383/148/7 386/143/7 -f 380/145/1 385/141/1 378/146/1 -f 382/142/13 381/139/13 384/138/13 -f 386/149/12 385/141/12 380/145/12 -f 380/153/3 375/494/3 376/137/3 -f 376/137/3 381/139/3 380/153/3 -f 381/139/3 382/151/3 380/153/3 -f 388/156/5 390/495/5 392/496/5 -f 392/496/5 394/497/5 396/154/5 -f 396/154/5 398/498/5 400/155/5 -f 400/155/5 402/499/5 388/156/5 -f 388/156/5 392/496/5 396/154/5 -f 389/158/3 387/500/3 397/159/3 -f 387/500/3 401/501/3 397/159/3 -f 401/501/3 399/502/3 397/159/3 -f 397/159/3 395/503/3 393/504/3 -f 393/504/3 391/157/3 397/159/3 -f 404/160/6 408/505/6 410/161/6 -f 403/163/7 405/51/7 409/164/7 -f 406/162/1 410/161/1 409/164/1 -f 413/166/1 414/506/1 412/167/1 -f 425/169/6 422/188/6 421/170/6 -f 423/173/3 421/507/3 415/174/3 -f 415/174/3 416/508/3 414/509/3 -f 416/508/3 420/510/3 414/509/3 -f 420/510/3 424/511/3 414/509/3 -f 414/509/3 413/172/3 415/174/3 -f 424/175/7 420/178/7 419/176/7 -f 420/178/13 416/508/13 418/179/13 -f 436/180/1 439/512/1 440/181/1 -f 414/183/12 424/175/12 426/177/12 -f 426/186/5 419/513/5 418/179/5 -f 418/179/5 417/187/5 411/514/5 -f 417/187/5 422/515/5 411/514/5 -f 422/515/5 425/516/5 411/514/5 -f 411/514/5 412/185/5 418/179/5 -f 411/168/11 425/169/11 423/171/11 -f 418/179/2 416/508/2 415/174/2 -f 422/188/14 417/187/14 415/174/14 -f 431/189/7 433/197/7 434/190/7 -f 428/192/1 431/189/1 432/191/1 -f 429/194/3 433/197/3 431/189/3 -f 430/196/2 434/190/2 433/197/2 -f 427/199/5 432/191/5 434/190/5 -f 437/201/3 441/517/3 439/202/3 -f 438/203/2 442/518/2 441/204/2 -f 435/182/5 440/519/5 442/205/5 -f 438/203/6 437/201/6 436/180/6 -f 453/206/3 454/232/3 448/207/3 -f 444/209/5 452/233/5 451/210/5 -f 448/212/3 454/232/3 458/213/3 -f 457/215/5 452/233/5 444/216/5 -f 450/218/3 456/223/3 453/206/3 -f 451/210/5 455/225/5 446/220/5 -f 460/222/3 462/235/3 456/223/3 -f 455/225/5 461/234/5 459/226/5 -f 466/228/3 464/520/3 449/229/3 -f 445/230/5 463/521/5 465/231/5 -f 457/215/7 465/231/7 466/228/7 -f 454/232/15 452/233/15 457/215/15 -f 452/233/2 454/232/2 453/206/2 -f 455/225/14 451/210/14 453/206/14 -f 461/234/6 455/225/6 456/223/6 -f 477/236/3 478/262/3 472/237/3 -f 468/239/5 476/263/5 475/240/5 -f 472/242/3 478/262/3 482/243/3 -f 481/245/5 476/263/5 468/246/5 -f 474/248/3 480/253/3 477/236/3 -f 475/240/5 479/255/5 470/250/5 -f 484/252/3 486/265/3 480/253/3 -f 479/255/5 485/264/5 483/256/5 -f 490/258/3 488/522/3 473/259/3 -f 469/260/5 487/523/5 489/261/5 -f 481/245/7 489/261/7 490/258/7 -f 478/262/15 476/263/15 481/245/15 -f 476/263/2 478/262/2 477/236/2 -f 479/255/14 475/240/14 477/236/14 -f 485/264/6 479/255/6 480/253/6 -f 497/266/3 498/295/3 496/267/3 -f 495/269/3 500/294/3 499/270/3 -f 492/272/3 502/276/3 501/273/3 -f 494/275/3 499/270/3 502/276/3 -f 501/273/3 497/266/3 493/278/3 -f 508/280/5 510/524/5 509/281/5 -f 511/283/5 512/525/5 507/284/5 -f 513/286/5 514/289/5 504/287/5 -f 514/289/5 511/283/5 506/290/5 -f 505/292/5 509/281/5 513/286/5 -f 502/276/1 514/289/1 513/286/1 -f 499/270/12 511/283/12 514/289/12 -f 500/294/7 512/525/7 511/283/7 -f 513/286/11 509/281/11 497/266/11 -f 509/281/6 510/524/6 498/295/6 -f 515/296/16 520/300/16 522/297/16 -f 516/299/7 519/303/7 520/300/7 -f 518/302/17 521/306/17 519/303/17 -f 518/305/6 517/526/6 522/297/6 -f 545/307/5 546/310/5 538/308/5 -f 546/310/5 539/527/5 531/311/5 -f 531/311/5 539/527/5 540/312/5 -f 532/313/5 540/312/5 541/314/5 -f 541/314/5 542/317/5 534/316/5 -f 542/317/5 543/528/5 535/318/5 -f 535/319/5 543/529/5 544/320/5 -f 536/321/5 544/320/5 545/307/5 -f 548/324/5 547/530/5 549/531/5 -f 549/531/5 550/532/5 551/322/5 -f 551/322/5 552/533/5 553/323/5 -f 553/323/5 554/534/5 548/324/5 -f 548/324/5 549/531/5 551/322/5 -f 568/325/3 576/340/3 577/326/3 -f 569/327/3 577/326/3 578/328/3 -f 570/329/3 578/328/3 571/330/3 -f 571/330/3 572/333/3 564/332/3 -f 572/333/3 573/335/3 565/334/3 -f 573/335/3 574/337/3 566/336/3 -f 574/337/3 575/535/3 567/338/3 -f 567/339/3 575/536/3 576/340/3 -f 581/342/3 579/537/3 580/538/3 -f 580/538/3 586/539/3 581/342/3 -f 586/539/3 585/343/3 581/342/3 -f 585/343/3 584/540/3 583/541/3 -f 583/541/3 582/341/3 585/343/3 -f 811/344/16 816/348/16 818/345/16 -f 812/347/7 815/351/7 816/348/7 -f 814/350/17 817/354/17 815/351/17 -f 814/353/6 813/542/6 818/345/6 -f 828/355/2 821/543/2 820/356/2 -f 829/360/5 822/364/5 821/543/5 -f 821/543/5 828/355/5 829/360/5 -f 828/355/5 827/358/5 829/360/5 -f 830/361/6 827/367/6 826/362/6 -f 822/364/1 829/360/1 824/365/1 -f 828/355/14 825/357/14 826/362/14 -f 824/365/11 829/360/11 830/368/11 -f 820/356/3 819/544/3 824/370/3 -f 824/370/3 823/545/3 826/546/3 -f 826/546/3 825/357/3 824/370/3 -f 832/371/2 833/374/2 840/372/2 -f 833/374/5 834/380/5 841/375/5 -f 841/375/5 842/547/5 839/548/5 -f 839/548/5 840/372/5 841/375/5 -f 838/376/7 839/382/7 842/377/7 -f 836/379/1 841/375/1 834/380/1 -f 838/376/13 837/373/13 840/372/13 -f 842/383/12 841/375/12 836/379/12 -f 836/387/3 831/549/3 832/371/3 -f 832/371/3 837/373/3 836/387/3 -f 837/373/3 838/385/3 836/387/3 -f 852/388/2 845/550/2 844/389/2 -f 853/393/5 846/397/5 845/550/5 -f 845/550/5 852/388/5 853/393/5 -f 852/388/5 851/391/5 853/393/5 -f 854/394/6 851/400/6 850/395/6 -f 846/397/1 853/393/1 848/398/1 -f 852/388/14 849/390/14 850/395/14 -f 848/398/11 853/393/11 854/401/11 -f 844/389/3 843/551/3 848/403/3 -f 848/403/3 847/552/3 850/553/3 -f 850/553/3 849/390/3 848/403/3 -f 856/406/5 858/554/5 860/555/5 -f 860/555/5 862/556/5 864/404/5 -f 864/404/5 866/557/5 868/405/5 -f 868/405/5 870/558/5 856/406/5 -f 856/406/5 860/555/5 864/404/5 -f 857/408/3 855/559/3 865/409/3 -f 855/559/3 869/560/3 865/409/3 -f 869/560/3 867/561/3 865/409/3 -f 865/409/3 863/562/3 861/563/3 -f 861/563/3 859/407/3 865/409/3 -f 881/412/6 880/564/6 879/565/6 -f 879/565/6 886/566/6 885/410/6 -f 885/410/6 884/567/6 883/411/6 -f 883/411/6 882/568/6 881/412/6 -f 881/412/6 879/565/6 885/410/6 s 1 -f 12/569/6 23/570/18 11/571/18 -f 19/572/19 30/573/7 18/574/7 -f 16/575/20 27/576/1 15/577/1 -f 13/578/21 24/579/6 12/569/6 -f 20/580/22 31/581/19 19/572/19 -f 10/582/23 21/583/2 9/584/2 -f 17/585/24 28/586/20 16/575/20 -f 14/587/25 25/588/21 13/578/21 -f 9/584/2 32/589/22 20/580/22 -f 11/571/18 22/590/23 10/582/23 -f 18/574/7 29/591/24 17/585/24 -f 15/592/1 26/593/25 14/587/25 -f 39/594/21 52/595/25 40/596/25 -f 46/597/22 48/598/2 35/599/2 -f 36/600/23 49/601/18 37/602/18 -f 43/603/24 56/604/7 44/605/7 -f 40/596/25 53/606/1 41/607/1 -f 37/602/18 50/608/6 38/609/6 -f 44/605/7 57/610/19 45/611/19 -f 41/612/1 54/613/20 42/614/20 -f 38/609/6 51/615/21 39/594/21 -f 45/611/19 58/616/22 46/597/22 -f 35/599/2 47/617/23 36/600/23 -f 42/614/20 55/618/24 43/603/24 -f 90/619/26 97/620/27 91/621/28 -f 88/622/29 94/623/3 87/624/3 -f 88/625/30 96/626/31 95/627/32 -f 80/628/33 82/629/34 81/630/33 -f 86/631/35 84/632/36 83/633/37 -f 84/632/36 80/628/33 81/630/33 -f 91/621/28 98/634/38 89/635/39 -f 90/619/26 95/627/32 96/626/31 -f 104/636/7 98/634/38 93/637/40 -f 96/626/31 94/638/41 97/620/27 -f 79/639/42 85/640/3 86/641/42 -f 99/642/43 86/641/42 102/643/43 -f 88/622/29 104/644/44 93/645/29 -f 106/646/45 107/441/46 105/647/47 -f 103/648/48 105/647/47 100/649/49 -f 101/650/44 102/643/43 104/644/44 -f 110/438/50 111/651/51 109/439/52 -f 115/652/53 114/653/50 113/654/52 -f 115/655/53 121/656/54 111/657/51 -f 113/658/52 122/659/55 115/655/53 -f 118/660/56 122/659/55 123/661/57 -f 111/657/51 120/49/57 109/662/52 -f 116/663/58 128/664/59 130/665/60 -f 107/666/46 117/667/61 105/668/47 -f 105/668/47 118/660/56 100/669/49 -f 125/670/62 128/664/59 126/671/63 -f 124/672/64 130/665/60 125/670/62 -f 116/663/58 129/673/65 114/674/50 -f 103/675/48 125/670/62 106/676/45 -f 110/677/50 128/664/59 112/678/66 -f 108/679/67 125/670/62 126/671/63 -f 112/680/66 115/652/53 111/651/51 -f 216/681/2 191/682/23 192/683/2 -f 208/684/25 185/685/1 184/686/25 -f 223/687/24 200/688/7 199/689/24 -f 215/690/23 193/691/18 191/682/23 -f 209/692/1 186/693/20 185/694/1 -f 224/695/7 201/696/19 200/688/7 -f 217/697/18 194/698/6 193/691/18 -f 210/699/20 187/700/24 186/693/20 -f 225/701/19 202/702/22 201/696/19 -f 203/703/2 180/704/23 179/705/2 -f 218/706/6 195/707/21 194/698/6 -f 211/708/24 188/709/7 187/700/24 -f 226/710/22 192/683/2 202/702/22 -f 204/711/23 181/712/18 180/704/23 -f 219/713/21 196/714/25 195/707/21 -f 212/715/7 189/716/19 188/709/7 -f 205/717/18 182/718/6 181/712/18 -f 220/719/25 197/720/1 196/714/25 -f 213/721/19 190/722/22 189/716/19 -f 206/723/6 183/724/21 182/718/6 -f 221/725/1 198/726/20 197/727/1 -f 214/728/22 179/705/2 190/722/22 -f 207/729/21 184/686/25 183/724/21 -f 222/730/20 199/689/24 198/726/20 -f 233/731/1 244/732/25 232/733/25 -f 230/734/6 241/735/18 229/736/18 -f 237/737/19 248/738/7 236/739/7 -f 234/740/20 245/741/1 233/742/1 -f 231/743/21 242/744/6 230/734/6 -f 238/745/22 249/746/19 237/737/19 -f 228/747/23 239/748/2 227/749/2 -f 235/750/24 246/751/20 234/740/20 -f 232/733/25 243/752/21 231/743/21 -f 227/749/2 250/753/22 238/745/22 -f 229/736/18 240/754/23 228/747/23 -f 236/739/7 247/755/24 235/750/24 -f 254/756/68 261/757/2 253/758/2 -f 252/759/69 259/760/3 251/761/3 -f 251/761/3 266/762/9 258/763/9 -f 257/764/1 264/765/70 256/766/70 -f 255/767/5 262/768/68 254/756/68 -f 253/758/2 260/769/69 252/759/69 -f 258/763/9 265/770/1 257/771/1 -f 256/766/70 263/772/5 255/767/5 -f 282/773/71 267/774/3 274/775/72 -f 280/776/73 273/777/7 272/778/74 -f 278/779/75 271/780/5 270/781/76 -f 276/782/77 269/783/6 268/784/78 -f 281/785/79 274/775/72 273/777/7 -f 279/786/80 272/778/74 271/780/5 -f 277/787/81 270/781/76 269/788/6 -f 275/789/69 268/784/78 267/774/3 -f 277/790/81 283/791/82 284/792/83 -f 282/793/71 288/794/84 289/795/85 -f 279/786/80 287/796/86 280/776/73 -f 278/779/75 284/797/83 285/798/87 -f 280/776/73 288/794/84 281/799/79 -f 278/779/75 286/800/70 279/786/80 -f 289/795/85 295/801/88 296/802/89 -f 286/800/70 294/803/90 287/796/86 -f 285/798/87 291/804/91 292/805/92 -f 287/796/86 295/801/88 288/794/84 -f 285/798/87 293/806/93 286/800/70 -f 284/792/83 290/807/94 291/808/91 -f 275/809/69 283/791/82 276/810/77 -f 283/791/82 275/809/69 290/807/94 -f 282/793/71 289/795/85 275/809/69 -f 289/795/85 296/802/89 275/809/69 -f 296/811/89 297/812/95 275/813/69 -f 295/814/88 304/815/96 296/811/89 -f 275/813/69 298/816/97 290/817/94 -f 293/806/93 302/818/98 294/803/90 -f 291/819/91 300/820/99 292/805/92 -f 294/803/90 303/821/100 295/814/88 -f 292/805/92 301/822/101 293/806/93 -f 290/817/94 299/823/76 291/824/91 -f 320/825/71 305/826/3 312/827/72 -f 318/828/73 311/829/7 310/830/74 -f 316/831/75 309/832/5 308/833/76 -f 314/834/77 307/835/6 306/836/78 -f 319/837/79 312/827/72 311/838/7 -f 317/839/80 310/830/74 309/832/5 -f 315/840/81 308/833/76 307/835/6 -f 313/841/69 306/836/78 305/826/3 -f 315/842/81 321/843/82 322/844/83 -f 320/845/71 326/846/84 327/847/85 -f 318/828/73 324/848/70 325/849/86 -f 316/831/75 322/844/83 323/850/87 -f 318/828/73 326/851/84 319/852/79 -f 316/831/75 324/848/70 317/839/80 -f 327/847/85 333/853/88 334/854/89 -f 325/849/86 331/855/93 332/856/90 -f 323/850/87 329/857/91 330/858/92 -f 325/849/86 333/859/88 326/851/84 -f 323/850/87 331/855/93 324/848/70 -f 322/844/83 328/860/94 329/857/91 -f 313/861/69 321/843/82 314/862/77 -f 321/843/82 313/861/69 328/860/94 -f 320/845/71 327/847/85 313/861/69 -f 327/847/85 334/854/89 313/861/69 -f 334/863/89 335/864/102 313/865/69 -f 333/866/88 342/867/103 334/863/89 -f 313/865/69 336/868/104 328/869/94 -f 331/855/93 340/870/105 332/856/90 -f 329/871/91 338/872/106 330/858/92 -f 332/856/90 341/873/74 333/874/88 -f 330/858/92 339/875/107 331/855/93 -f 328/869/94 337/876/108 329/871/91 -f 297/877/95 344/878/109 298/879/97 -f 303/821/100 347/880/110 348/881/72 -f 301/882/101 345/883/111 346/884/112 -f 304/815/96 343/885/113 297/877/95 -f 304/815/96 348/881/72 349/886/114 -f 302/818/98 346/884/112 347/880/110 -f 346/884/112 354/887/115 347/880/110 -f 344/878/109 350/888/116 351/889/117 -f 347/880/110 355/890/118 348/881/72 -f 345/883/111 353/891/119 346/884/112 -f 343/885/113 356/892/120 350/888/116 -f 348/881/72 356/892/120 349/886/114 -f 298/879/97 344/878/109 299/893/76 -f 344/878/109 351/889/117 299/893/76 -f 299/894/76 345/883/111 300/895/99 -f 345/883/111 299/894/76 352/896/121 -f 336/868/104 357/897/122 358/898/123 -f 339/899/107 360/900/124 361/901/125 -f 337/876/108 358/898/123 359/902/78 -f 335/903/102 363/904/126 357/897/122 -f 339/899/107 362/905/127 340/906/105 -f 337/876/108 360/900/124 338/872/106 -f 357/897/122 365/907/128 358/898/123 -f 361/901/125 367/908/129 368/909/130 -f 358/898/123 366/910/131 359/902/78 -f 363/904/126 364/911/132 357/897/122 -f 362/905/127 368/909/130 369/912/133 -f 360/900/124 366/910/131 367/908/129 -f 341/913/74 363/904/126 342/914/103 -f 363/904/126 341/913/74 370/915/134 -f 340/906/105 362/905/127 341/916/74 -f 362/905/127 369/912/133 341/916/74 -f 364/917/132 351/918/117 350/919/116 -f 351/918/117 341/920/74 299/921/76 -f 341/922/74 352/923/121 299/924/76 -f 352/923/121 368/925/130 353/926/119 -f 353/926/119 367/908/129 354/887/115 -f 354/887/115 366/910/131 355/890/118 -f 355/890/118 365/907/128 356/892/120 -f 356/892/120 364/917/132 350/919/116 -f 389/927/14 388/928/2 387/929/2 -f 391/930/6 390/931/14 389/927/14 -f 393/932/11 392/933/6 391/930/6 -f 395/934/1 394/935/11 393/932/11 -f 397/936/12 396/937/1 395/938/1 -f 399/939/7 398/940/12 397/936/12 -f 401/941/13 400/942/7 399/939/7 -f 387/929/2 402/943/13 401/941/13 -f 117/667/61 121/656/54 122/659/55 -f 126/671/63 128/664/59 127/944/65 -f 121/656/54 119/440/135 120/49/57 -f 530/945/13 545/307/7 529/946/7 -f 528/947/12 543/529/1 527/948/1 -f 526/949/11 541/314/6 525/950/6 -f 524/951/14 539/527/2 523/952/2 -f 523/952/2 546/310/13 530/945/13 -f 529/946/7 544/320/12 528/947/12 -f 527/953/1 542/317/11 526/949/11 -f 525/950/6 540/312/14 524/951/14 -f 532/313/12 548/954/1 531/311/1 -f 531/311/1 554/955/11 538/308/11 -f 537/309/6 552/956/14 536/321/14 -f 535/318/2 550/957/13 534/316/13 -f 533/315/7 547/958/12 532/313/12 -f 538/308/11 553/959/6 537/309/6 -f 536/321/14 551/960/2 535/319/2 -f 534/316/13 549/961/7 533/315/7 -f 570/329/13 555/962/2 562/963/13 -f 568/325/12 561/964/7 560/965/12 -f 566/336/11 559/966/1 558/967/11 -f 564/332/14 557/968/6 556/969/14 -f 569/327/7 562/963/13 561/964/7 -f 567/339/1 560/965/12 559/970/1 -f 565/334/6 558/967/11 557/968/6 -f 563/331/2 556/969/14 555/962/2 -f 576/340/14 585/971/6 577/326/6 -f 574/337/13 583/972/2 575/535/2 -f 572/333/12 581/973/7 573/335/7 -f 577/326/6 586/974/11 578/328/11 -f 575/536/2 584/975/14 576/340/14 -f 573/335/7 582/976/13 574/337/13 -f 571/330/1 579/977/12 572/333/12 -f 578/328/11 580/978/1 571/330/1 -f 591/979/136 647/980/137 651/981/138 -f 656/982/139 591/983/136 595/984/140 -f 596/985/141 652/986/142 656/982/139 -f 588/987/143 652/986/142 592/988/144 -f 648/989/145 591/983/136 652/986/142 -f 657/990/146 592/988/144 596/985/141 -f 597/991/147 653/992/148 657/990/146 -f 589/993/149 653/992/148 593/994/150 -f 649/995/151 592/988/144 653/992/148 -f 597/991/147 654/996/152 593/994/150 -f 594/997/153 658/998/154 598/999/155 -f 594/997/153 650/1000/156 654/996/152 -f 654/996/152 589/993/149 593/994/150 -f 598/999/155 651/981/138 594/997/153 -f 595/1001/140 659/1002/157 599/1003/158 -f 591/979/136 655/1004/159 595/1001/140 -f 590/1005/160 651/981/138 647/980/137 -f 599/1006/158 656/982/139 595/984/140 -f 600/1007/161 656/982/139 660/1008/162 -f 661/1009/163 596/985/141 600/1007/161 -f 601/1010/164 657/990/146 661/1009/163 -f 662/1011/165 597/991/147 601/1010/164 -f 602/1012/166 658/998/154 662/1011/165 -f 602/1012/166 655/1004/159 598/999/155 -f 599/1003/158 663/1013/167 603/1014/168 -f 603/1015/168 660/1008/162 599/1006/158 -f 600/1007/161 664/1016/169 604/1017/170 -f 604/1017/170 661/1009/163 600/1007/161 -f 605/1018/171 661/1009/163 665/1019/172 -f 666/1020/173 601/1010/164 605/1018/171 -f 606/1021/174 662/1011/165 666/1020/173 -f 663/1013/167 602/1012/166 606/1021/174 -f 756/1022/175 603/1015/168 667/1023/176 -f 668/1024/177 664/1016/169 756/1022/175 -f 757/1025/178 604/1017/170 668/1024/177 -f 605/1018/171 757/1025/178 669/1026/179 -f 666/1020/173 669/1026/179 758/1027/180 -f 606/1021/174 758/1027/180 670/1028/181 -f 663/1013/167 670/1028/181 755/1029/182 -f 667/1030/176 663/1013/167 755/1029/182 -f 667/1030/176 759/1031/183 671/1032/184 -f 672/1033/185 756/1022/175 760/1034/186 -f 669/1026/179 761/1035/187 673/1036/188 -f 760/1034/186 667/1023/176 671/1037/184 -f 670/1028/181 762/1038/189 674/1039/190 -f 761/1035/187 668/1024/177 672/1033/185 -f 610/1040/191 692/1041/192 678/1042/193 -f 758/1027/180 673/1036/188 762/1038/189 -f 755/1029/182 674/1039/190 759/1031/183 -f 766/1043/194 609/1044/195 781/1045/196 -f 622/1046/197 678/1042/193 698/1047/198 -f 763/1048/199 607/1049/200 619/1050/201 -f 607/1049/200 692/1041/192 619/1050/201 -f 620/1051/202 675/1052/203 607/1049/200 -f 764/1053/204 608/1054/205 620/1051/202 -f 610/1040/191 763/1048/199 619/1050/201 -f 608/1054/205 694/1055/206 620/1051/202 -f 621/1056/207 676/1057/208 608/1054/205 -f 781/1045/196 621/1056/207 765/1058/209 -f 779/1059/210 620/1051/202 607/1049/200 -f 671/1032/184 683/1060/211 611/1061/212 -f 609/1044/195 698/1062/198 677/1063/213 -f 782/1064/214 622/1046/197 766/1065/194 -f 780/1066/215 621/1056/207 608/1054/205 -f 615/1067/216 685/1068/217 611/1069/212 -f 612/1070/218 693/1071/219 616/1072/220 -f 612/1070/218 760/1034/186 685/1068/217 -f 760/1034/186 611/1069/212 685/1068/217 -f 616/1072/220 687/1073/221 612/1070/218 -f 613/1074/222 695/1075/223 617/1076/224 -f 613/1074/222 761/1035/187 687/1073/221 -f 687/1073/221 672/1033/185 612/1070/218 -f 697/1077/225 613/1074/222 617/1076/224 -f 618/1078/226 689/1079/227 697/1077/225 -f 674/1039/190 689/1079/227 614/1080/228 -f 762/1038/189 613/1074/222 689/1079/227 -f 691/1081/229 614/1080/228 618/1078/226 -f 705/1082/230 681/1083/231 785/1084/232 -f 615/1085/216 683/1060/211 691/1081/229 -f 759/1031/183 614/1080/228 683/1060/211 -f 768/1086/233 615/1067/216 700/1087/234 -f 702/1088/235 693/1071/219 768/1086/233 -f 678/1042/193 699/1089/236 786/1090/237 -f 698/1047/198 786/1090/237 705/1091/230 -f 769/1092/238 616/1072/220 702/1088/235 -f 704/1093/239 695/1075/223 769/1092/238 -f 621/1056/207 677/1063/213 696/1094/240 -f 694/1055/206 783/1095/241 675/1052/203 -f 697/1077/225 704/1093/239 770/1096/242 -f 618/1078/226 770/1096/242 706/1097/243 -f 692/1041/192 783/1095/241 699/1089/236 -f 696/1094/240 784/1098/244 676/1057/208 -f 691/1081/229 706/1097/243 767/1099/245 -f 768/1086/233 708/1100/246 796/1101/247 -f 676/1057/208 701/1102/248 694/1055/206 -f 677/1063/213 705/1082/230 785/1084/232 -f 679/1103/249 639/1104/250 791/1105/251 -f 682/1106/252 642/1107/253 794/1108/254 -f 699/1089/236 679/1103/249 791/1105/251 -f 677/1063/213 703/1109/255 696/1094/240 -f 792/1110/256 624/1111/257 640/1112/258 -f 626/1113/259 791/1105/251 639/1104/250 -f 784/1098/244 792/1110/256 701/1102/248 -f 786/1090/237 791/1105/251 682/1106/252 -f 793/1114/260 625/1115/261 641/1116/262 -f 792/1110/256 623/1117/263 679/1103/249 -f 785/1084/232 793/1114/260 703/1109/255 -f 783/1095/241 792/1110/256 679/1103/249 -f 615/1085/216 767/1099/245 700/1118/234 -f 680/1119/264 641/1116/262 624/1111/257 -f 705/1091/230 682/1106/252 794/1108/254 -f 703/1109/255 680/1119/264 784/1098/244 -f 769/1092/238 710/1120/265 797/1121/266 -f 708/1122/246 767/1099/245 795/1123/267 -f 681/1083/231 642/1124/253 625/1115/261 -f 790/1125/268 731/1126/269 627/1127/270 -f 798/1128/271 704/1093/239 712/1129/272 -f 702/1088/235 796/1101/247 710/1120/265 -f 642/1107/253 713/1130/273 734/1131/274 -f 731/1126/269 626/1113/259 639/1104/250 -f 706/1097/243 795/1123/267 767/1099/245 -f 704/1093/239 797/1121/266 712/1129/272 -f 732/1132/275 787/1133/276 707/1134/277 -f 707/1134/277 627/1127/270 731/1126/269 -f 710/1120/265 772/1135/278 726/1136/279 -f 714/1137/280 770/1096/242 798/1128/271 -f 639/1104/250 707/1134/277 731/1126/269 -f 732/1132/275 623/1117/263 640/1112/258 -f 712/1129/272 773/1138/281 728/1139/282 -f 772/1135/278 708/1100/246 724/1140/283 -f 709/1141/284 629/1142/285 788/1143/286 -f 732/1132/275 788/1143/286 628/1144/287 -f 730/1145/288 798/1128/271 774/1146/289 -f 797/1121/266 726/1136/279 773/1138/281 -f 624/1111/257 732/1132/275 640/1112/258 -f 641/1116/262 709/1141/284 624/1111/257 -f 742/1147/290 772/1135/278 776/1148/291 -f 798/1128/271 728/1139/282 774/1146/289 -f 734/1149/274 789/1150/292 711/1151/293 -f 733/1152/294 789/1150/292 629/1142/285 -f 634/1153/295 718/1154/296 738/1155/297 -f 714/1137/280 771/1156/298 795/1123/267 -f 625/1115/261 733/1152/294 641/1116/262 -f 642/1124/253 711/1151/293 625/1115/261 -f 684/1157/299 735/1158/300 631/1159/301 -f 790/1125/268 634/1153/295 630/1160/302 -f 713/1130/273 630/1160/302 734/1131/274 -f 690/1161/303 627/1127/270 631/1159/301 -f 686/1162/304 736/1163/305 632/1164/306 -f 718/1154/296 631/1159/301 735/1158/300 -f 628/1144/287 684/1157/299 787/1133/276 -f 788/1143/286 633/1165/307 686/1162/304 -f 633/1165/307 717/1166/308 737/1167/309 -f 632/1164/306 715/1168/310 684/1157/299 -f 787/1133/276 631/1159/301 627/1127/270 -f 789/1150/292 634/1169/295 688/1170/311 -f 724/1171/283 795/1123/267 771/1156/298 -f 686/1162/304 737/1167/309 716/1172/312 -f 788/1143/286 632/1164/306 628/1144/287 -f 629/1142/285 688/1170/311 633/1165/307 -f 728/1139/282 777/1173/313 744/1174/314 -f 776/1148/291 724/1140/283 740/1175/315 -f 688/1170/311 738/1176/297 717/1166/308 -f 739/1177/316 718/1154/296 735/1158/300 -f 730/1145/288 778/1178/317 746/1179/318 -f 773/1138/281 742/1147/290 777/1173/313 -f 735/1158/300 719/1180/319 739/1177/316 -f 741/1181/320 715/1168/310 736/1163/305 -f 776/1148/291 748/1182/321 808/1183/322 -f 774/1146/289 744/1174/314 778/1178/317 -f 736/1163/305 720/1184/323 741/1181/320 -f 737/1167/309 720/1184/323 716/1172/312 -f 729/1185/324 646/1186/136 806/1187/325 -f 730/1145/288 775/1188/326 771/1156/298 -f 717/1166/308 743/1189/327 737/1167/309 -f 738/1176/297 721/1190/328 717/1166/308 -f 803/1191/329 802/1192/142 729/1185/324 -f 802/1192/142 747/1193/143 638/1194/145 -f 718/1154/296 745/1195/330 738/1155/297 -f 739/1177/316 729/1185/324 722/1196/331 -f 643/1197/144 635/1198/151 747/1193/143 -f 722/1196/331 806/1187/325 745/1195/330 -f 739/1177/316 723/1199/332 803/1191/329 -f 804/1200/333 719/1180/319 741/1181/320 -f 804/1200/333 799/1201/148 723/1199/332 -f 799/1201/148 749/1202/149 635/1198/151 -f 741/1181/320 725/1203/334 804/1200/333 -f 805/1204/335 720/1184/323 743/1189/327 -f 740/1205/315 771/1156/298 775/1188/326 -f 723/1199/332 643/1197/144 803/1191/329 -f 743/1189/327 727/1206/336 805/1204/335 -f 745/1207/330 727/1206/336 721/1190/328 -f 809/1208/337 742/1147/290 750/1209/338 -f 740/1205/315 807/1210/339 748/1211/321 -f 645/1212/153 636/1213/156 800/1214/152 -f 800/1214/152 749/1202/149 644/1215/150 -f 810/1216/340 744/1174/314 752/1217/341 -f 742/1147/290 808/1183/322 750/1209/338 -f 804/1200/333 800/1214/152 644/1215/150 -f 645/1212/153 725/1203/334 805/1204/335 -f 775/1188/326 754/1218/342 807/1210/339 -f 752/1217/341 777/1173/313 809/1208/337 -f 646/1219/136 637/1220/137 801/1221/138 -f 801/1221/138 751/1222/160 645/1212/153 -f 646/1186/136 638/1194/145 753/1223/343 -f 754/1218/342 778/1178/317 810/1216/340 -f 805/1204/335 801/1221/138 645/1212/153 -f 646/1219/136 727/1206/336 806/1224/325 -f 98/634/38 94/638/41 93/637/40 -f 82/629/34 99/1225/6 95/1226/32 -f 83/633/37 98/634/38 102/1227/7 -f 95/1226/32 101/1228/6 88/1229/30 -f 857/1230/14 856/1231/2 855/1232/2 -f 859/1233/6 858/1234/14 857/1230/14 -f 861/1235/11 860/1236/6 859/1233/6 -f 863/1237/1 862/1238/11 861/1235/11 -f 865/1239/12 864/1240/1 863/1241/1 -f 867/1242/7 866/1243/12 865/1239/12 -f 869/1244/13 868/1245/7 867/1242/7 -f 855/1232/2 870/1246/13 869/1244/13 -f 881/1247/2 874/1248/68 873/1249/2 -f 879/1250/3 872/1251/69 871/1252/3 -f 886/1253/9 871/1252/3 878/1254/9 -f 884/1255/70 877/1256/1 876/1257/70 -f 882/1258/68 875/1259/5 874/1248/68 -f 880/1260/69 873/1249/2 872/1251/69 -f 885/1261/1 878/1254/9 877/1262/1 -f 883/1263/5 876/1257/70 875/1259/5 -f 12/569/6 24/579/6 23/570/18 -f 19/572/19 31/581/19 30/573/7 -f 16/575/20 28/586/20 27/576/1 -f 13/578/21 25/588/21 24/579/6 -f 20/580/22 32/589/22 31/581/19 -f 10/582/23 22/590/23 21/583/2 -f 17/585/24 29/591/24 28/586/20 -f 14/587/25 26/593/25 25/588/21 -f 9/584/2 21/583/2 32/589/22 -f 11/571/18 23/570/18 22/590/23 -f 18/574/7 30/573/7 29/591/24 -f 15/592/1 27/1264/1 26/593/25 -f 39/594/21 51/615/21 52/595/25 -f 46/597/22 58/616/22 48/598/2 -f 36/600/23 47/617/23 49/601/18 -f 43/603/24 55/618/24 56/604/7 -f 40/596/25 52/595/25 53/606/1 -f 37/602/18 49/601/18 50/608/6 -f 44/605/7 56/604/7 57/610/19 -f 41/612/1 53/1265/1 54/613/20 -f 38/609/6 50/608/6 51/615/21 -f 45/611/19 57/610/19 58/616/22 -f 35/599/2 48/598/2 47/617/23 -f 42/614/20 54/613/20 55/618/24 -f 90/619/26 96/626/31 97/620/27 -f 88/622/29 93/645/29 94/623/3 -f 88/625/30 87/1266/344 96/626/31 -f 80/628/33 79/1267/345 82/629/34 -f 86/631/35 85/640/36 84/632/36 -f 84/632/36 85/640/36 80/628/33 -f 91/621/28 97/620/27 98/634/38 -f 90/619/26 92/1268/346 95/627/32 -f 96/626/31 87/1266/344 94/638/41 -f 79/639/42 80/628/3 85/640/3 -f 99/642/43 79/639/42 86/641/42 -f 88/622/29 101/650/44 104/644/44 -f 106/646/45 108/442/67 107/441/46 -f 103/648/48 106/646/45 105/647/47 -f 101/650/44 99/642/43 102/643/43 -f 110/438/50 112/680/66 111/651/51 -f 115/652/53 116/1269/58 114/653/50 -f 115/655/53 122/659/55 121/656/54 -f 113/658/52 123/661/57 122/659/55 -f 118/660/56 117/667/61 122/659/55 -f 111/657/51 121/656/54 120/49/57 -f 116/663/58 112/678/66 128/664/59 -f 107/666/46 119/440/135 117/667/61 -f 105/668/47 117/667/61 118/660/56 -f 125/670/62 130/665/60 128/664/59 -f 124/672/64 129/673/65 130/665/60 -f 116/663/58 130/665/60 129/673/65 -f 103/675/48 124/672/64 125/670/62 -f 110/677/50 127/944/65 128/664/59 -f 108/679/67 106/676/45 125/670/62 -f 112/680/66 116/1269/58 115/652/53 -f 216/681/2 215/690/23 191/682/23 -f 208/684/25 209/1270/1 185/685/1 -f 223/687/24 224/695/7 200/688/7 -f 215/690/23 217/697/18 193/691/18 -f 209/692/1 210/699/20 186/693/20 -f 224/695/7 225/701/19 201/696/19 -f 217/697/18 218/706/6 194/698/6 -f 210/699/20 211/708/24 187/700/24 -f 225/701/19 226/710/22 202/702/22 -f 203/703/2 204/711/23 180/704/23 -f 218/706/6 219/713/21 195/707/21 -f 211/708/24 212/715/7 188/709/7 -f 226/710/22 216/681/2 192/683/2 -f 204/711/23 205/717/18 181/712/18 -f 219/713/21 220/719/25 196/714/25 -f 212/715/7 213/721/19 189/716/19 -f 205/717/18 206/723/6 182/718/6 -f 220/719/25 221/1271/1 197/720/1 -f 213/721/19 214/728/22 190/722/22 -f 206/723/6 207/729/21 183/724/21 -f 221/725/1 222/730/20 198/726/20 -f 214/728/22 203/703/2 179/705/2 -f 207/729/21 208/684/25 184/686/25 -f 222/730/20 223/687/24 199/689/24 -f 233/731/1 245/1272/1 244/732/25 -f 230/734/6 242/744/6 241/735/18 -f 237/737/19 249/746/19 248/738/7 -f 234/740/20 246/751/20 245/741/1 -f 231/743/21 243/752/21 242/744/6 -f 238/745/22 250/753/22 249/746/19 -f 228/747/23 240/754/23 239/748/2 -f 235/750/24 247/755/24 246/751/20 -f 232/733/25 244/732/25 243/752/21 -f 227/749/2 239/748/2 250/753/22 -f 229/736/18 241/735/18 240/754/23 -f 236/739/7 248/738/7 247/755/24 -f 254/756/68 262/768/68 261/757/2 -f 252/759/69 260/769/69 259/760/3 -f 251/761/3 259/760/3 266/762/9 -f 257/764/1 265/1273/1 264/765/70 -f 255/767/5 263/772/5 262/768/68 -f 253/758/2 261/757/2 260/769/69 -f 258/763/9 266/762/9 265/770/1 -f 256/766/70 264/765/70 263/772/5 -f 282/773/71 275/789/69 267/774/3 -f 280/776/73 281/785/79 273/777/7 -f 278/779/75 279/786/80 271/780/5 -f 276/782/77 277/1274/81 269/783/6 -f 281/785/79 282/773/71 274/775/72 -f 279/786/80 280/776/73 272/778/74 -f 277/787/81 278/779/75 270/781/76 -f 275/789/69 276/782/77 268/784/78 -f 277/790/81 276/810/77 283/791/82 -f 282/793/71 281/799/79 288/794/84 -f 279/786/80 286/800/70 287/796/86 -f 278/779/75 277/1275/81 284/797/83 -f 280/776/73 287/796/86 288/794/84 -f 278/779/75 285/798/87 286/800/70 -f 289/795/85 288/794/84 295/801/88 -f 286/800/70 293/806/93 294/803/90 -f 285/798/87 284/797/83 291/804/91 -f 287/796/86 294/803/90 295/801/88 -f 285/798/87 292/805/92 293/806/93 -f 284/792/83 283/791/82 290/807/94 -f 296/811/89 304/815/96 297/812/95 -f 295/814/88 303/821/100 304/815/96 -f 275/813/69 297/812/95 298/816/97 -f 293/806/93 301/822/101 302/818/98 -f 291/819/91 299/1276/76 300/820/99 -f 294/803/90 302/818/98 303/821/100 -f 292/805/92 300/820/99 301/822/101 -f 290/817/94 298/816/97 299/823/76 -f 320/825/71 313/841/69 305/826/3 -f 318/828/73 319/1277/79 311/829/7 -f 316/831/75 317/839/80 309/832/5 -f 314/834/77 315/840/81 307/835/6 -f 319/837/79 320/825/71 312/827/72 -f 317/839/80 318/828/73 310/830/74 -f 315/840/81 316/831/75 308/833/76 -f 313/841/69 314/834/77 306/836/78 -f 315/842/81 314/862/77 321/843/82 -f 320/845/71 319/1278/79 326/846/84 -f 318/828/73 317/839/80 324/848/70 -f 316/831/75 315/842/81 322/844/83 -f 318/828/73 325/849/86 326/851/84 -f 316/831/75 323/850/87 324/848/70 -f 327/847/85 326/846/84 333/853/88 -f 325/849/86 324/848/70 331/855/93 -f 323/850/87 322/844/83 329/857/91 -f 325/849/86 332/856/90 333/859/88 -f 323/850/87 330/858/92 331/855/93 -f 322/844/83 321/843/82 328/860/94 -f 334/863/89 342/867/103 335/864/102 -f 333/866/88 341/1279/74 342/867/103 -f 313/865/69 335/864/102 336/868/104 -f 331/855/93 339/875/107 340/870/105 -f 329/871/91 337/876/108 338/872/106 -f 332/856/90 340/870/105 341/873/74 -f 330/858/92 338/872/106 339/875/107 -f 328/869/94 336/868/104 337/876/108 -f 297/877/95 343/885/113 344/878/109 -f 303/821/100 302/818/98 347/880/110 -f 301/882/101 300/895/99 345/883/111 -f 304/815/96 349/886/114 343/885/113 -f 304/815/96 303/821/100 348/881/72 -f 302/818/98 301/882/101 346/884/112 -f 346/884/112 353/891/119 354/887/115 -f 344/878/109 343/885/113 350/888/116 -f 347/880/110 354/887/115 355/890/118 -f 345/883/111 352/896/121 353/891/119 -f 343/885/113 349/886/114 356/892/120 -f 348/881/72 355/890/118 356/892/120 -f 336/868/104 335/903/102 357/897/122 -f 339/899/107 338/872/106 360/900/124 -f 337/876/108 336/868/104 358/898/123 -f 335/903/102 342/914/103 363/904/126 -f 339/899/107 361/901/125 362/905/127 -f 337/876/108 359/902/78 360/900/124 -f 357/897/122 364/911/132 365/907/128 -f 361/901/125 360/900/124 367/908/129 -f 358/898/123 365/907/128 366/910/131 -f 363/904/126 370/915/134 364/911/132 -f 362/905/127 361/901/125 368/909/130 -f 360/900/124 359/902/78 366/910/131 -f 364/917/132 370/1280/134 351/918/117 -f 351/918/117 370/1280/134 341/920/74 -f 341/922/74 369/1281/133 352/923/121 -f 352/923/121 369/1281/133 368/925/130 -f 353/926/119 368/925/130 367/908/129 -f 354/887/115 367/908/129 366/910/131 -f 355/890/118 366/910/131 365/907/128 -f 356/892/120 365/907/128 364/917/132 -f 389/927/14 390/931/14 388/928/2 -f 391/930/6 392/933/6 390/931/14 -f 393/932/11 394/935/11 392/933/6 -f 395/934/1 396/1282/1 394/935/11 -f 397/936/12 398/940/12 396/937/1 -f 399/939/7 400/942/7 398/940/12 -f 401/941/13 402/943/13 400/942/7 -f 387/929/2 388/928/2 402/943/13 -f 117/667/61 119/440/135 121/656/54 -f 530/945/13 546/310/13 545/307/7 -f 528/947/12 544/320/12 543/529/1 -f 526/949/11 542/317/11 541/314/6 -f 524/951/14 540/312/14 539/527/2 -f 523/952/2 539/527/2 546/310/13 -f 529/946/7 545/307/7 544/320/12 -f 527/953/1 543/528/1 542/317/11 -f 525/950/6 541/314/6 540/312/14 -f 532/313/12 547/958/12 548/954/1 -f 531/311/1 548/954/1 554/955/11 -f 537/309/6 553/959/6 552/956/14 -f 535/318/2 551/1283/2 550/957/13 -f 533/315/7 549/961/7 547/958/12 -f 538/308/11 554/955/11 553/959/6 -f 536/321/14 552/956/14 551/960/2 -f 534/316/13 550/957/13 549/961/7 -f 570/329/13 563/331/2 555/962/2 -f 568/325/12 569/327/7 561/964/7 -f 566/336/11 567/338/1 559/966/1 -f 564/332/14 565/334/6 557/968/6 -f 569/327/7 570/329/13 562/963/13 -f 567/339/1 568/325/12 560/965/12 -f 565/334/6 566/336/11 558/967/11 -f 563/331/2 564/332/14 556/969/14 -f 576/340/14 584/975/14 585/971/6 -f 574/337/13 582/976/13 583/972/2 -f 572/333/12 579/977/12 581/973/7 -f 577/326/6 585/971/6 586/974/11 -f 575/536/2 583/1284/2 584/975/14 -f 573/335/7 581/973/7 582/976/13 -f 571/330/1 580/978/1 579/977/12 -f 578/328/11 586/974/11 580/978/1 -f 591/979/136 587/1285/343 647/980/137 -f 656/982/139 652/986/142 591/983/136 -f 596/985/141 592/988/144 652/986/142 -f 588/987/143 648/989/145 652/986/142 -f 648/989/145 587/1286/343 591/983/136 -f 657/990/146 653/992/148 592/988/144 -f 597/991/147 593/994/150 653/992/148 -f 589/993/149 649/995/151 653/992/148 -f 649/995/151 588/987/143 592/988/144 -f 597/991/147 658/998/154 654/996/152 -f 594/997/153 654/996/152 658/998/154 -f 594/997/153 590/1005/160 650/1000/156 -f 654/996/152 650/1000/156 589/993/149 -f 598/999/155 655/1004/159 651/981/138 -f 595/1001/140 655/1004/159 659/1002/157 -f 591/979/136 651/981/138 655/1004/159 -f 590/1005/160 594/997/153 651/981/138 -f 599/1006/158 660/1008/162 656/982/139 -f 600/1007/161 596/985/141 656/982/139 -f 661/1009/163 657/990/146 596/985/141 -f 601/1010/164 597/991/147 657/990/146 -f 662/1011/165 658/998/154 597/991/147 -f 602/1012/166 598/999/155 658/998/154 -f 602/1012/166 659/1002/157 655/1004/159 -f 599/1003/158 659/1002/157 663/1013/167 -f 603/1015/168 664/1016/169 660/1008/162 -f 600/1007/161 660/1008/162 664/1016/169 -f 604/1017/170 665/1019/172 661/1009/163 -f 605/1018/171 601/1010/164 661/1009/163 -f 666/1020/173 662/1011/165 601/1010/164 -f 606/1021/174 602/1012/166 662/1011/165 -f 663/1013/167 659/1002/157 602/1012/166 -f 756/1022/175 664/1016/169 603/1015/168 -f 668/1024/177 604/1017/170 664/1016/169 -f 757/1025/178 665/1019/172 604/1017/170 -f 605/1018/171 665/1019/172 757/1025/178 -f 666/1020/173 605/1018/171 669/1026/179 -f 606/1021/174 666/1020/173 758/1027/180 -f 663/1013/167 606/1021/174 670/1028/181 -f 667/1030/176 603/1014/168 663/1013/167 -f 667/1030/176 755/1029/182 759/1031/183 -f 672/1033/185 668/1024/177 756/1022/175 -f 669/1026/179 757/1025/178 761/1035/187 -f 760/1034/186 756/1022/175 667/1023/176 -f 670/1028/181 758/1027/180 762/1038/189 -f 761/1035/187 757/1025/178 668/1024/177 -f 610/1040/191 619/1050/201 692/1041/192 -f 758/1027/180 669/1026/179 673/1036/188 -f 755/1029/182 670/1028/181 674/1039/190 -f 766/1043/194 622/1287/197 609/1044/195 -f 622/1046/197 610/1040/191 678/1042/193 -f 763/1048/199 779/1059/210 607/1049/200 -f 607/1049/200 675/1052/203 692/1041/192 -f 620/1051/202 694/1055/206 675/1052/203 -f 764/1053/204 780/1066/215 608/1054/205 -f 610/1040/191 782/1064/214 763/1048/199 -f 608/1054/205 676/1057/208 694/1055/206 -f 621/1056/207 696/1094/240 676/1057/208 -f 781/1045/196 609/1044/195 621/1056/207 -f 779/1059/210 764/1053/204 620/1051/202 -f 671/1032/184 759/1031/183 683/1060/211 -f 609/1044/195 622/1287/197 698/1062/198 -f 782/1064/214 610/1040/191 622/1046/197 -f 780/1066/215 765/1058/209 621/1056/207 -f 615/1067/216 693/1071/219 685/1068/217 -f 612/1070/218 685/1068/217 693/1071/219 -f 612/1070/218 672/1033/185 760/1034/186 -f 760/1034/186 671/1037/184 611/1069/212 -f 616/1072/220 695/1075/223 687/1073/221 -f 613/1074/222 687/1073/221 695/1075/223 -f 613/1074/222 673/1036/188 761/1035/187 -f 687/1073/221 761/1035/187 672/1033/185 -f 697/1077/225 689/1079/227 613/1074/222 -f 618/1078/226 614/1080/228 689/1079/227 -f 674/1039/190 762/1038/189 689/1079/227 -f 762/1038/189 673/1036/188 613/1074/222 -f 691/1081/229 683/1060/211 614/1080/228 -f 705/1082/230 794/1288/254 681/1083/231 -f 615/1085/216 611/1061/212 683/1060/211 -f 759/1031/183 674/1039/190 614/1080/228 -f 768/1086/233 693/1071/219 615/1067/216 -f 702/1088/235 616/1072/220 693/1071/219 -f 678/1042/193 692/1041/192 699/1089/236 -f 698/1047/198 678/1042/193 786/1090/237 -f 769/1092/238 695/1075/223 616/1072/220 -f 704/1093/239 617/1076/224 695/1075/223 -f 621/1056/207 609/1044/195 677/1063/213 -f 694/1055/206 701/1102/248 783/1095/241 -f 697/1077/225 617/1076/224 704/1093/239 -f 618/1078/226 697/1077/225 770/1096/242 -f 692/1041/192 675/1052/203 783/1095/241 -f 696/1094/240 703/1109/255 784/1098/244 -f 691/1081/229 618/1078/226 706/1097/243 -f 768/1086/233 700/1087/234 708/1100/246 -f 676/1057/208 784/1098/244 701/1102/248 -f 677/1063/213 698/1062/198 705/1082/230 -f 679/1103/249 623/1117/263 639/1104/250 -f 682/1106/252 626/1113/259 642/1107/253 -f 699/1089/236 783/1095/241 679/1103/249 -f 677/1063/213 785/1084/232 703/1109/255 -f 792/1110/256 680/1119/264 624/1111/257 -f 626/1113/259 682/1106/252 791/1105/251 -f 784/1098/244 680/1119/264 792/1110/256 -f 786/1090/237 699/1089/236 791/1105/251 -f 793/1114/260 681/1083/231 625/1115/261 -f 792/1110/256 640/1112/258 623/1117/263 -f 785/1084/232 681/1083/231 793/1114/260 -f 783/1095/241 701/1102/248 792/1110/256 -f 615/1085/216 691/1081/229 767/1099/245 -f 680/1119/264 793/1114/260 641/1116/262 -f 705/1091/230 786/1090/237 682/1106/252 -f 703/1109/255 793/1114/260 680/1119/264 -f 769/1092/238 702/1088/235 710/1120/265 -f 708/1122/246 700/1118/234 767/1099/245 -f 681/1083/231 794/1288/254 642/1124/253 -f 790/1125/268 713/1130/273 731/1126/269 -f 798/1128/271 770/1096/242 704/1093/239 -f 702/1088/235 768/1086/233 796/1101/247 -f 642/1107/253 626/1113/259 713/1130/273 -f 731/1126/269 713/1130/273 626/1113/259 -f 706/1097/243 714/1137/280 795/1123/267 -f 704/1093/239 769/1092/238 797/1121/266 -f 732/1132/275 628/1144/287 787/1133/276 -f 707/1134/277 787/1133/276 627/1127/270 -f 710/1120/265 796/1101/247 772/1135/278 -f 714/1137/280 706/1097/243 770/1096/242 -f 639/1104/250 623/1117/263 707/1134/277 -f 732/1132/275 707/1134/277 623/1117/263 -f 712/1129/272 797/1121/266 773/1138/281 -f 772/1135/278 796/1101/247 708/1100/246 -f 709/1141/284 733/1152/294 629/1142/285 -f 732/1132/275 709/1141/284 788/1143/286 -f 730/1145/288 714/1137/280 798/1128/271 -f 797/1121/266 710/1120/265 726/1136/279 -f 624/1111/257 709/1141/284 732/1132/275 -f 641/1116/262 733/1152/294 709/1141/284 -f 742/1147/290 726/1136/279 772/1135/278 -f 798/1128/271 712/1129/272 728/1139/282 -f 734/1149/274 630/1289/302 789/1150/292 -f 733/1152/294 711/1151/293 789/1150/292 -f 634/1153/295 690/1161/303 718/1154/296 -f 714/1137/280 730/1145/288 771/1156/298 -f 625/1115/261 711/1151/293 733/1152/294 -f 642/1124/253 734/1149/274 711/1151/293 -f 684/1157/299 715/1168/310 735/1158/300 -f 790/1125/268 690/1161/303 634/1153/295 -f 713/1130/273 790/1125/268 630/1160/302 -f 690/1161/303 790/1125/268 627/1127/270 -f 686/1162/304 716/1172/312 736/1163/305 -f 718/1154/296 690/1161/303 631/1159/301 -f 628/1144/287 632/1164/306 684/1157/299 -f 788/1143/286 629/1142/285 633/1165/307 -f 633/1165/307 688/1170/311 717/1166/308 -f 632/1164/306 736/1163/305 715/1168/310 -f 787/1133/276 684/1157/299 631/1159/301 -f 789/1150/292 630/1289/302 634/1169/295 -f 724/1171/283 708/1122/246 795/1123/267 -f 686/1162/304 633/1165/307 737/1167/309 -f 788/1143/286 686/1162/304 632/1164/306 -f 629/1142/285 789/1150/292 688/1170/311 -f 728/1139/282 773/1138/281 777/1173/313 -f 776/1148/291 772/1135/278 724/1140/283 -f 688/1170/311 634/1169/295 738/1176/297 -f 739/1177/316 722/1196/331 718/1154/296 -f 730/1145/288 774/1146/289 778/1178/317 -f 773/1138/281 726/1136/279 742/1147/290 -f 735/1158/300 715/1168/310 719/1180/319 -f 741/1181/320 719/1180/319 715/1168/310 -f 776/1148/291 740/1175/315 748/1182/321 -f 774/1146/289 728/1139/282 744/1174/314 -f 736/1163/305 716/1172/312 720/1184/323 -f 737/1167/309 743/1189/327 720/1184/323 -f 729/1185/324 802/1192/142 646/1186/136 -f 730/1145/288 746/1179/318 775/1188/326 -f 717/1166/308 721/1190/328 743/1189/327 -f 738/1176/297 745/1207/330 721/1190/328 -f 803/1191/329 643/1197/144 802/1192/142 -f 802/1192/142 643/1197/144 747/1193/143 -f 718/1154/296 722/1196/331 745/1195/330 -f 739/1177/316 803/1191/329 729/1185/324 -f 643/1197/144 799/1201/148 635/1198/151 -f 722/1196/331 729/1185/324 806/1187/325 -f 739/1177/316 719/1180/319 723/1199/332 -f 804/1200/333 723/1199/332 719/1180/319 -f 804/1200/333 644/1215/150 799/1201/148 -f 799/1201/148 644/1215/150 749/1202/149 -f 741/1181/320 720/1184/323 725/1203/334 -f 805/1204/335 725/1203/334 720/1184/323 -f 740/1205/315 724/1171/283 771/1156/298 -f 723/1199/332 799/1201/148 643/1197/144 -f 743/1189/327 721/1190/328 727/1206/336 -f 745/1207/330 806/1224/325 727/1206/336 -f 809/1208/337 777/1173/313 742/1147/290 -f 740/1205/315 775/1188/326 807/1210/339 -f 645/1212/153 751/1222/160 636/1213/156 -f 800/1214/152 636/1213/156 749/1202/149 -f 810/1216/340 778/1178/317 744/1174/314 -f 742/1147/290 776/1148/291 808/1183/322 -f 804/1200/333 725/1203/334 800/1214/152 -f 645/1212/153 800/1214/152 725/1203/334 -f 775/1188/326 746/1179/318 754/1218/342 -f 752/1217/341 744/1174/314 777/1173/313 -f 646/1219/136 753/1290/343 637/1220/137 -f 801/1221/138 637/1220/137 751/1222/160 -f 646/1186/136 802/1192/142 638/1194/145 -f 754/1218/342 746/1179/318 778/1178/317 -f 805/1204/335 727/1206/336 801/1221/138 -f 646/1219/136 801/1221/138 727/1206/336 -f 98/634/38 97/620/27 94/638/41 -f 92/1291/346 82/629/34 95/1226/32 -f 82/629/34 79/1267/345 99/1225/6 -f 99/1225/6 101/1228/6 95/1226/32 -f 102/1227/7 86/631/35 83/633/37 -f 83/633/37 89/1292/39 98/634/38 -f 98/634/38 104/636/7 102/1227/7 -f 857/1230/14 858/1234/14 856/1231/2 -f 859/1233/6 860/1236/6 858/1234/14 -f 861/1235/11 862/1238/11 860/1236/6 -f 863/1237/1 864/1293/1 862/1238/11 -f 865/1239/12 866/1243/12 864/1240/1 -f 867/1242/7 868/1245/7 866/1243/12 -f 869/1244/13 870/1246/13 868/1245/7 -f 855/1232/2 856/1231/2 870/1246/13 -f 881/1247/2 882/1258/68 874/1248/68 -f 879/1250/3 880/1260/69 872/1251/69 -f 886/1253/9 879/1250/3 871/1252/3 -f 884/1255/70 885/1294/1 877/1256/1 -f 882/1258/68 883/1263/5 875/1259/5 -f 880/1260/69 881/1247/2 873/1249/2 -f 885/1261/1 886/1253/9 878/1254/9 -f 883/1263/5 884/1255/70 876/1257/70 +f 420/515/222 427/516/223 421/517/224 +f 418/518/225 424/519/226 417/520/226 +f 418/521/227 426/522/228 425/523/229 +f 410/524/230 412/525/231 411/526/230 +f 416/527/232 414/528/233 413/529/234 +f 414/528/233 410/524/230 411/526/230 +f 421/517/224 428/530/235 419/531/236 +f 420/515/222 425/523/229 426/522/228 +f 432/532/237 428/530/235 423/533/238 +f 426/522/228 424/534/239 427/516/223 +f 409/535/240 415/536/226 416/537/240 +f 429/538/241 416/537/240 431/539/241 +f 418/518/225 432/540/242 423/541/225 +f 430/542/242 431/539/241 432/540/242 +f 428/530/235 424/534/239 423/533/238 +f 412/525/231 429/543/243 425/544/229 +f 413/529/234 428/530/235 431/545/237 +f 425/544/229 430/546/243 418/547/227 +f 420/515/222 426/522/228 427/516/223 +f 418/518/225 423/541/225 424/519/226 +f 418/521/227 417/548/244 426/522/228 +f 410/524/230 409/549/245 412/525/231 +f 416/527/232 415/536/233 414/528/233 +f 414/528/233 415/536/233 410/524/230 +f 421/517/224 427/516/223 428/530/235 +f 420/515/222 422/550/246 425/523/229 +f 426/522/228 417/548/244 424/534/239 +f 409/535/240 410/524/226 415/536/226 +f 429/538/241 409/535/240 416/537/240 +f 418/518/225 430/542/242 432/540/242 +f 430/542/242 429/538/241 431/539/241 +f 428/530/235 427/516/223 424/534/239 +f 422/551/246 412/525/231 425/544/229 +f 412/525/231 409/549/245 429/543/243 +f 429/543/243 430/546/243 425/544/229 +f 431/545/237 416/527/232 413/529/234 +f 413/529/234 419/552/236 428/530/235 +f 428/530/235 432/532/237 431/545/237 +o Barrel +v 0.000000 1.875000 4.000000 +v -0.250000 1.808013 4.000000 +v -0.433012 1.625000 4.000000 +v -0.500000 1.375000 4.000000 +v -0.433012 1.125000 4.000000 +v -0.250000 0.941987 4.000000 +v 0.000000 0.875000 4.000000 +v 0.250000 0.941987 4.000000 +v 0.433012 1.125000 4.000000 +v 0.500000 1.375000 4.000000 +v 0.433013 1.625000 4.000000 +v 0.250000 1.808012 4.000000 +v 0.000000 1.875000 11.500000 +v -0.250000 1.808013 11.500000 +v -0.433012 1.625000 11.500000 +v -0.500000 1.375000 11.500000 +v -0.433012 1.125000 11.500000 +v -0.250000 0.941987 11.500000 +v 0.000000 0.875000 11.500000 +v 0.250000 0.941987 11.500000 +v 0.433012 1.125000 11.500000 +v 0.500000 1.375000 11.500000 +v 0.433013 1.625000 11.500000 +v 0.250000 1.808012 11.500000 +v 0.000000 1.812500 12.000000 +v -0.218750 1.753886 12.000000 +v -0.378886 1.593750 12.000000 +v -0.437500 1.375000 12.000000 +v -0.378886 1.156250 12.000000 +v -0.218750 0.996114 12.000000 +v 0.000000 0.937500 12.000000 +v 0.218750 0.996114 12.000000 +v 0.378886 1.156250 12.000000 +v 0.437500 1.375000 12.000000 +v 0.378886 1.593750 12.000000 +v 0.218750 1.753886 12.000000 +v -0.218750 1.753892 4.500000 +v 0.000000 1.812506 4.500000 +v -0.378886 1.593756 4.500000 +v -0.437500 1.375006 4.500000 +v -0.378886 1.156256 4.500000 +v -0.218750 0.996120 4.500000 +v 0.000000 0.937506 4.500000 +v 0.218750 0.996120 4.500000 +v 0.378886 1.156256 4.500000 +v 0.437500 1.375006 4.500000 +v 0.378886 1.593756 4.500000 +v 0.218750 1.753892 4.500000 +vt 0.002103 0.018927 +vt 0.015385 0.000117 +vt 0.028667 0.018927 +vt 0.017308 0.226425 +vt 0.028962 0.242929 +vt 0.017308 0.292443 +vt 0.015385 0.075355 +vt 0.007716 0.070315 +vt 0.002103 0.056545 +vt 0.000048 0.037736 +vt 0.007716 0.005157 +vt 0.023053 0.005157 +vt 0.030721 0.037736 +vt 0.028667 0.056545 +vt 0.023053 0.070315 +vt 0.010579 0.288021 +vt 0.005653 0.275939 +vt 0.003850 0.259434 +vt 0.005653 0.242929 +vt 0.010579 0.230847 +vt 0.024036 0.230847 +vt 0.030765 0.259434 +vt 0.028962 0.275939 +vt 0.024036 0.288021 +vt 0.261538 0.169811 +vt 0.030769 0.150943 +vt 0.261538 0.150943 +vt 0.261538 0.075472 +vt 0.030769 0.056604 +vt 0.261538 0.056604 +vt 0.261538 0.018868 +vt 0.030769 -0.000000 +vt 0.261538 -0.000000 +vt 0.261538 0.188679 +vt 0.030769 0.169811 +vt 0.261538 0.094340 +vt 0.030769 0.075472 +vt 0.261538 0.132075 +vt 0.030769 0.113208 +vt 0.261538 0.113208 +vt 0.261538 0.037736 +vt 0.030769 0.018868 +vt 0.261538 0.207547 +vt 0.030769 0.188679 +vt 0.030769 0.094340 +vt 0.030769 0.132075 +vt 0.030769 0.037736 +vt 0.261538 0.226415 +vt 0.030769 0.207547 +vt 0.030769 0.415094 +vt 0.261538 0.433962 +vt 0.030769 0.433962 +vt 0.030769 0.320755 +vt 0.261538 0.339623 +vt 0.030769 0.339623 +vt 0.030769 0.358491 +vt 0.261538 0.377358 +vt 0.030769 0.377358 +vt 0.030769 0.264151 +vt 0.261538 0.283019 +vt 0.030769 0.283019 +vt 0.261538 0.452830 +vt 0.030769 0.452830 +vt 0.261538 0.396226 +vt 0.030769 0.396226 +vt 0.261538 0.301887 +vt 0.030769 0.301887 +vt 0.030769 0.226415 +vt 0.261538 0.245283 +vt 0.030769 0.245283 +vt 0.261538 0.415094 +vt 0.261538 0.320755 +vt 0.261538 0.358491 +vt 0.261538 0.264151 +vt 0.030769 0.226415 +vt 0.261538 0.226415 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.8660 0.5000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +s off +f 449/553/247 451/554/247 453/555/247 +f 463/556/247 465/557/247 457/558/247 +f 445/559/247 446/560/247 447/561/247 +f 447/561/247 448/562/247 449/553/247 +f 449/553/247 450/563/247 451/554/247 +f 451/554/247 452/564/247 453/555/247 +f 453/555/247 454/565/247 455/566/247 +f 455/566/247 456/567/247 453/555/247 +f 456/567/247 445/559/247 453/555/247 +f 445/559/247 447/561/247 453/555/247 +f 447/561/247 449/553/247 453/555/247 +f 457/558/247 458/568/247 459/569/247 +f 459/569/247 460/570/247 457/558/247 +f 460/570/247 461/571/247 457/558/247 +f 461/571/247 462/572/247 463/556/247 +f 463/556/247 464/573/247 465/557/247 +f 465/557/247 466/574/247 457/558/247 +f 466/574/247 467/575/247 457/558/247 +f 467/575/247 468/576/247 457/558/247 +f 461/571/247 463/556/247 457/558/247 +s 1 +f 436/577/248 447/578/249 435/579/249 +f 443/580/250 454/581/251 442/582/251 +f 440/583/252 451/584/253 439/585/253 +f 437/586/254 448/587/248 436/577/248 +f 444/588/255 455/589/250 443/580/250 +f 434/590/256 445/591/257 433/592/257 +f 441/593/258 452/594/252 440/583/252 +f 438/595/259 449/596/254 437/586/254 +f 433/592/257 456/597/255 444/588/255 +f 435/579/249 446/598/256 434/590/256 +f 442/582/251 453/599/258 441/593/258 +f 439/600/253 450/601/259 438/595/259 +f 461/602/254 474/603/259 462/604/259 +f 468/605/255 470/606/257 457/607/257 +f 458/608/256 471/609/249 459/610/249 +f 465/611/258 478/612/251 466/613/251 +f 462/604/259 475/614/253 463/615/253 +f 459/610/249 472/616/248 460/617/248 +f 466/613/251 479/618/250 467/619/250 +f 463/620/253 476/621/252 464/622/252 +f 460/617/248 473/623/254 461/602/254 +f 467/619/250 480/624/255 468/605/255 +f 457/607/257 469/625/256 458/608/256 +f 464/622/252 477/626/258 465/611/258 +f 436/577/248 448/587/248 447/578/249 +f 443/580/250 455/589/250 454/581/251 +f 440/583/252 452/594/252 451/584/253 +f 437/586/254 449/596/254 448/587/248 +f 444/588/255 456/597/255 455/589/250 +f 434/590/256 446/598/256 445/591/257 +f 441/593/258 453/599/258 452/594/252 +f 438/595/259 450/601/259 449/596/254 +f 433/592/257 445/591/257 456/597/255 +f 435/579/249 447/578/249 446/598/256 +f 442/582/251 454/581/251 453/599/258 +f 439/600/253 451/627/253 450/601/259 +f 461/602/254 473/623/254 474/603/259 +f 468/605/255 480/624/255 470/606/257 +f 458/608/256 469/625/256 471/609/249 +f 465/611/258 477/626/258 478/612/251 +f 462/604/259 474/603/259 475/614/253 +f 459/610/249 471/609/249 472/616/248 +f 466/613/251 478/612/251 479/618/250 +f 463/620/253 475/628/253 476/621/252 +f 460/617/248 472/616/248 473/623/254 +f 467/619/250 479/618/250 480/624/255 +f 457/607/257 470/606/257 469/625/256 +f 464/622/252 476/621/252 477/626/258 +o Battery +v -0.562500 -1.000000 -1.500000 +v 0.562500 -1.000000 -1.500000 +v -0.562500 -1.000000 2.000000 +v 0.562500 -1.000000 2.000000 +v 0.437500 -0.750000 -1.375000 +v -0.437500 -0.750000 -1.375000 +v -0.437500 -0.750000 1.875000 +v 0.437500 -0.750000 1.875000 +v 0.562500 -0.750000 -1.500000 +v -0.562500 -0.750000 -1.500000 +v -0.562500 -0.750000 2.000000 +v 0.562500 -0.750000 2.000000 +v 0.437500 0.750000 -1.375000 +v -0.437500 0.750000 -1.375000 +v -0.437500 0.750000 1.875000 +v 0.437500 0.750000 1.875000 +v 0.062500 0.750000 -1.000000 +v 0.312500 0.750000 -1.000000 +v 0.062500 0.750000 -1.250000 +v 0.312500 0.750000 -1.250000 +v -0.312500 0.750000 -1.000000 +v -0.062500 0.750000 -1.000000 +v -0.312500 0.750000 -1.250000 +v -0.062500 0.750000 -1.250000 +v 0.062500 0.875000 -1.250000 +v 0.062500 0.875000 -1.000000 +v 0.312500 0.875000 -1.000000 +v 0.312500 0.875000 -1.250000 +v -0.312500 0.875000 -1.250000 +v -0.312500 0.875000 -1.000000 +v -0.062500 0.875000 -1.000000 +v -0.062500 0.875000 -1.250000 +vt 0.115385 0.556604 +vt 0.007692 0.471698 +vt 0.115385 0.471698 +vt 0.376923 0.452830 +vt 0.276923 0.566038 +vt 0.276923 0.452830 +vt 0.007692 0.575472 +vt 0.007692 0.556604 +vt 0.123077 0.556604 +vt 0.115385 0.452830 +vt -0.000000 0.471698 +vt 0.111538 0.584906 +vt 0.115385 0.660377 +vt 0.111538 0.650943 +vt 0.011538 0.650943 +vt 0.011538 0.584906 +vt 0.115385 0.575472 +vt 0.007692 0.660377 +vt 0.150000 0.632075 +vt 0.250000 0.566038 +vt 0.250000 0.632075 +vt 0.150000 0.452830 +vt 0.123077 0.566038 +vt 0.123077 0.452830 +vt 0.250000 0.452830 +vt 0.150000 0.566038 +vt 0.138462 0.575472 +vt 0.146154 0.594340 +vt 0.138462 0.594340 +vt 0.123077 0.575472 +vt 0.130769 0.594340 +vt 0.123077 0.594340 +vt 0.146154 0.566038 +vt 0.138462 0.566038 +vt 0.138462 0.603774 +vt 0.146154 0.603774 +vt 0.134615 0.594340 +vt 0.130769 0.575472 +vt 0.134615 0.575472 +vt 0.119231 0.575472 +vt 0.119231 0.594340 +vt 0.150000 0.594340 +vt 0.146154 0.575472 +vt 0.150000 0.575472 +vt 0.134615 0.575472 +vt 0.134615 0.594340 +vt 0.130769 0.566038 +vt 0.123077 0.566038 +vt 0.123077 0.603774 +vt 0.130769 0.603774 +vt 0.376923 0.566038 +vt 0.123077 0.471698 +vt 0.007692 0.452830 +vt -0.000000 0.556604 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +s off +f 482/629/260 483/630/260 481/631/260 +f 487/632/261 494/633/261 486/634/261 +f 482/629/262 492/635/262 484/636/262 +f 481/631/263 489/637/263 482/629/263 +f 483/630/261 490/638/261 481/631/261 +f 484/636/264 491/639/264 483/630/264 +f 485/640/265 490/641/265 486/642/265 +f 487/643/265 492/635/265 488/644/265 +f 488/644/265 489/645/265 485/640/265 +f 486/642/265 491/646/265 487/643/265 +f 495/647/265 493/648/265 494/649/265 +f 488/650/264 495/651/264 487/652/264 +f 485/653/262 496/654/262 488/650/262 +f 486/634/263 493/648/263 485/653/263 +f 507/655/265 505/656/265 506/657/265 +f 511/658/265 509/659/265 510/660/265 +f 500/661/262 507/655/262 498/662/262 +f 497/663/261 505/656/261 499/664/261 +f 503/665/263 512/666/263 504/667/263 +f 502/668/264 510/660/264 501/669/264 +f 499/670/263 508/671/263 500/672/263 +f 498/673/264 506/657/264 497/674/264 +f 504/675/262 511/658/262 502/676/262 +f 501/677/261 509/659/261 503/678/261 +f 482/629/260 484/636/260 483/630/260 +f 487/632/261 495/679/261 494/633/261 +f 482/629/262 489/645/262 492/635/262 +f 481/631/263 490/680/263 489/637/263 +f 483/630/261 491/681/261 490/638/261 +f 484/636/264 492/682/264 491/639/264 +f 485/640/265 489/645/265 490/641/265 +f 487/643/265 491/646/265 492/635/265 +f 488/644/265 492/635/265 489/645/265 +f 486/642/265 490/641/265 491/646/265 +f 495/647/265 496/654/265 493/648/265 +f 488/650/264 496/654/264 495/651/264 +f 485/653/262 493/648/262 496/654/262 +f 486/634/263 494/633/263 493/648/263 +f 507/655/265 508/671/265 505/656/265 +f 511/658/265 512/666/265 509/659/265 +f 500/661/262 508/671/262 507/655/262 +f 497/663/261 506/657/261 505/656/261 +f 503/665/263 509/659/263 512/666/263 +f 502/668/264 511/658/264 510/660/264 +f 499/670/263 505/656/263 508/671/263 +f 498/673/264 507/655/264 506/657/264 +f 504/675/262 512/666/262 511/658/262 +f 501/677/261 510/660/261 509/659/261 +o Lever +v 0.562500 -0.375000 2.000000 +v 0.562500 -0.109835 2.109835 +v 0.562500 0.000000 2.375000 +v 0.562500 -0.109835 2.640165 +v 0.562500 -0.375000 2.750000 +v 0.562500 -0.640165 2.640165 +v 0.562500 -0.750000 2.375000 +v 0.562500 -0.640165 2.109835 +v 1.062500 -0.375000 2.000000 +v 1.062500 -0.109835 2.109835 +v 1.062500 0.000000 2.375000 +v 1.062500 -0.109835 2.640165 +v 1.062500 -0.375000 2.750000 +v 1.062500 -0.640165 2.640165 +v 1.062500 -0.750000 2.375000 +v 1.062500 -0.640165 2.109835 +v 0.812500 -0.625000 2.250000 +v 0.724112 -0.625000 2.286612 +v 0.687500 -0.625000 2.375000 +v 0.724112 -0.625000 2.463388 +v 0.812500 -0.625000 2.500000 +v 0.900888 -0.625000 2.463388 +v 0.937500 -0.625000 2.375000 +v 0.900888 -0.625000 2.286612 +v 0.812500 -1.125000 2.250000 +v 0.724112 -1.125000 2.286612 +v 0.687500 -1.125000 2.375000 +v 0.724112 -1.125000 2.463388 +v 0.812500 -1.125000 2.500000 +v 0.900888 -1.125000 2.463388 +v 0.937500 -1.125000 2.375000 +v 0.900888 -1.125000 2.286612 +v 0.724112 -1.150888 2.275888 +v 0.687500 -1.213388 2.338388 +v 0.724112 -1.275888 2.400888 +v 0.812500 -1.301777 2.426777 +v 0.900888 -1.275888 2.400888 +v 0.937500 -1.213388 2.338388 +v 0.900888 -1.150888 2.275888 +v 0.724112 -1.161612 2.250000 +v 0.687500 -1.250000 2.250000 +v 0.724112 -1.338388 2.250000 +v 0.812500 -1.375000 2.250000 +v 0.900888 -1.338388 2.250000 +v 0.937500 -1.250000 2.250000 +v 0.900888 -1.161612 2.250000 +v 0.812500 -1.125000 -0.750000 +v 0.724112 -1.161612 -0.750000 +v 0.687500 -1.250000 -0.750000 +v 0.724112 -1.338388 -0.750000 +v 0.812500 -1.375000 -0.750000 +v 0.900888 -1.338388 -0.750000 +v 0.937500 -1.250000 -0.750000 +v 0.900888 -1.161612 -0.750000 +v -0.812500 -0.625000 2.250000 +v -0.900888 -0.625000 2.286612 +v -0.937500 -0.625000 2.375000 +v -0.900888 -0.625000 2.463388 +v -0.812500 -0.625000 2.500000 +v -0.724112 -0.625000 2.463388 +v -0.687500 -0.625000 2.375000 +v -0.724112 -0.625000 2.286612 +v -0.812500 -1.125000 2.250000 +v -0.900888 -1.125000 2.286612 +v -0.937500 -1.125000 2.375000 +v -0.900888 -1.125000 2.463388 +v -0.812500 -1.125000 2.500000 +v -0.724112 -1.125000 2.463388 +v -0.687500 -1.125000 2.375000 +v -0.724112 -1.125000 2.286612 +v -0.900888 -1.150888 2.275888 +v -0.937500 -1.213388 2.338388 +v -0.900888 -1.275888 2.400888 +v -0.812500 -1.301777 2.426777 +v -0.724112 -1.275888 2.400888 +v -0.687500 -1.213388 2.338388 +v -0.724112 -1.150888 2.275888 +v -0.900888 -1.161612 2.250000 +v -0.937500 -1.250000 2.250000 +v -0.900888 -1.338388 2.250000 +v -0.812500 -1.375000 2.250000 +v -0.724112 -1.338388 2.250000 +v -0.687500 -1.250000 2.250000 +v -0.724112 -1.161612 2.250000 +v -0.812500 -1.125000 -0.750000 +v -0.900888 -1.161612 -0.750000 +v -0.937500 -1.250000 -0.750000 +v -0.900888 -1.338388 -0.750000 +v -0.812500 -1.375000 -0.750000 +v -0.724112 -1.338388 -0.750000 +v -0.687500 -1.250000 -0.750000 +v -0.724112 -1.161612 -0.750000 +v 0.775888 -1.125000 -0.838388 +v 0.713388 -1.161612 -0.775888 +v 0.713388 -1.338388 -0.775888 +v 0.775888 -1.375000 -0.838388 +v 0.838388 -1.338388 -0.900888 +v 0.864277 -1.250000 -0.926777 +v 0.838388 -1.161612 -0.900888 +v 0.687500 -1.125000 -0.875000 +v 0.687500 -1.161612 -0.786612 +v 0.687500 -1.338388 -0.786612 +v 0.687500 -1.375000 -0.875000 +v 0.687500 -1.338388 -0.963388 +v 0.687500 -1.250000 -1.000000 +v 0.687500 -1.161612 -0.963388 +v -0.775888 -1.125000 -0.838388 +v -0.838388 -1.161612 -0.900888 +v -0.864277 -1.250000 -0.926777 +v -0.838388 -1.338388 -0.900888 +v -0.775888 -1.375000 -0.838388 +v -0.713388 -1.338388 -0.775888 +v -0.713388 -1.161612 -0.775888 +v -0.687500 -1.125000 -0.875000 +v -0.687500 -1.161612 -0.963388 +v -0.687500 -1.250000 -1.000000 +v -0.687500 -1.338388 -0.963388 +v -0.687500 -1.375000 -0.875000 +v -0.687500 -1.338388 -0.786612 +v -0.687500 -1.161612 -0.786612 +v -0.562500 -0.375000 2.000000 +v -0.562500 -0.109835 2.109835 +v -0.562500 0.000000 2.375000 +v -0.562500 -0.109835 2.640165 +v -0.562500 -0.375000 2.750000 +v -0.562500 -0.640165 2.640165 +v -0.562500 -0.750000 2.375000 +v -0.562500 -0.640165 2.109835 +v -1.062500 -0.375000 2.000000 +v -1.062500 -0.109835 2.109835 +v -1.062500 0.000000 2.375000 +v -1.062500 -0.109835 2.640165 +v -1.062500 -0.375000 2.750000 +v -1.062500 -0.640165 2.640165 +v -1.062500 -0.750000 2.375000 +v -1.062500 -0.640165 2.109835 +vt 0.392282 0.481132 +vt 0.403846 0.452768 +vt 0.415410 0.481132 +vt 0.403846 0.452768 +vt 0.392282 0.481132 +vt 0.403846 0.509497 +vt 0.412023 0.501189 +vt 0.403846 0.509497 +vt 0.395669 0.501189 +vt 0.395669 0.461075 +vt 0.412023 0.461075 +vt 0.412023 0.501189 +vt 0.415410 0.481132 +vt 0.412023 0.461075 +vt 0.395669 0.461075 +vt 0.395669 0.501189 +vt 0.376923 0.509434 +vt 0.392308 0.528302 +vt 0.376923 0.528302 +vt 0.376923 0.547170 +vt 0.392308 0.566038 +vt 0.376923 0.566038 +vt 0.392308 0.584906 +vt 0.376923 0.584906 +vt 0.376923 0.452830 +vt 0.392308 0.471698 +vt 0.376923 0.471698 +vt 0.376923 0.490566 +vt 0.392308 0.509434 +vt 0.392308 0.547170 +vt 0.392308 0.603774 +vt 0.376923 0.603774 +vt 0.392308 0.490566 +vt 0.303846 0.688679 +vt 0.319231 0.679245 +vt 0.319231 0.688679 +vt 0.303846 0.707547 +vt 0.319231 0.698113 +vt 0.319231 0.707547 +vt 0.303846 0.726415 +vt 0.319231 0.716981 +vt 0.319231 0.726415 +vt 0.303846 0.669811 +vt 0.319231 0.660377 +vt 0.319231 0.669811 +vt 0.303846 0.698113 +vt 0.303846 0.716981 +vt 0.303846 0.735849 +vt 0.319231 0.735849 +vt 0.303846 0.679245 +vt 0.300000 0.660377 +vt 0.296154 0.669811 +vt 0.296154 0.660377 +vt 0.300000 0.688679 +vt 0.296154 0.698113 +vt 0.296154 0.688679 +vt 0.296154 0.707547 +vt 0.296154 0.735849 +vt 0.296154 0.726415 +vt 0.300000 0.698113 +vt 0.296154 0.716981 +vt 0.292308 0.698113 +vt 0.292308 0.688679 +vt 0.288462 0.707547 +vt 0.292308 0.735849 +vt 0.288462 0.726415 +vt 0.288462 0.716981 +vt 0.292308 0.669811 +vt 0.292308 0.660377 +vt 0.296154 0.679245 +vt 0.300000 0.669811 +vt 0.288462 0.688679 +vt 0.196154 0.679245 +vt 0.288462 0.679245 +vt 0.288462 0.698113 +vt 0.196154 0.688679 +vt 0.196154 0.669811 +vt 0.288462 0.669811 +vt 0.196154 0.707547 +vt 0.288462 0.735849 +vt 0.196154 0.726415 +vt 0.196154 0.698113 +vt 0.196154 0.716981 +vt 0.196154 0.660377 +vt 0.288462 0.660377 +vt 0.015385 0.669811 +vt -0.000000 0.679245 +vt 0.000000 0.669811 +vt 0.015385 0.726415 +vt 0.000000 0.735849 +vt -0.000000 0.726415 +vt 0.015385 0.707547 +vt 0.000000 0.716981 +vt -0.000000 0.707547 +vt 0.015385 0.688679 +vt -0.000000 0.698113 +vt -0.000000 0.688679 +vt 0.015385 0.660377 +vt 0.000000 0.660377 +vt 0.015385 0.716981 +vt 0.015385 0.698113 +vt 0.015385 0.679245 +vt 0.019231 0.698113 +vt 0.023077 0.688679 +vt 0.023077 0.698113 +vt 0.019231 0.669811 +vt 0.023077 0.660377 +vt 0.023077 0.669811 +vt 0.023077 0.716981 +vt 0.023077 0.726415 +vt 0.023077 0.707547 +vt 0.023077 0.735849 +vt 0.019231 0.735849 +vt 0.026923 0.660377 +vt 0.026923 0.669811 +vt 0.030769 0.716981 +vt 0.030769 0.726415 +vt 0.026923 0.698113 +vt 0.030769 0.707547 +vt 0.026923 0.735849 +vt 0.026923 0.688679 +vt 0.023077 0.679245 +vt 0.019231 0.688679 +vt 0.030769 0.669811 +vt 0.123077 0.679245 +vt 0.030769 0.679245 +vt 0.030769 0.660377 +vt 0.123077 0.669811 +vt 0.123077 0.688679 +vt 0.030769 0.688679 +vt 0.123077 0.726415 +vt 0.030769 0.698113 +vt 0.123077 0.707547 +vt 0.123077 0.735849 +vt 0.030769 0.735849 +vt 0.123077 0.716981 +vt 0.123077 0.698113 +vt 0.192308 0.679245 +vt 0.188462 0.669811 +vt 0.192308 0.669811 +vt 0.188462 0.707547 +vt 0.188462 0.698113 +vt 0.192308 0.716981 +vt 0.188462 0.726415 +vt 0.188462 0.716981 +vt 0.188462 0.679245 +vt 0.188462 0.688679 +vt 0.180769 0.707547 +vt 0.184615 0.679245 +vt 0.184615 0.669811 +vt 0.180769 0.698113 +vt 0.184615 0.716981 +vt 0.180769 0.688679 +vt 0.188462 0.660377 +vt 0.188462 0.735849 +vt 0.192308 0.726415 +vt 0.184615 0.726415 +vt 0.130769 0.679245 +vt 0.130769 0.688679 +vt 0.126923 0.716981 +vt 0.130769 0.707547 +vt 0.130769 0.716981 +vt 0.130769 0.698113 +vt 0.126923 0.679245 +vt 0.130769 0.669811 +vt 0.130769 0.726415 +vt 0.126923 0.726415 +vt 0.138462 0.688679 +vt 0.138462 0.707547 +vt 0.134615 0.716981 +vt 0.138462 0.698113 +vt 0.134615 0.679245 +vt 0.134615 0.726415 +vt 0.130769 0.660377 +vt 0.126923 0.669811 +vt 0.134615 0.669811 +vt 0.130769 0.735849 +vt 0.138462 0.679245 +vt 0.180769 0.669811 +vt 0.180769 0.679245 +vt 0.138462 0.660377 +vt 0.180769 0.660377 +vt 0.138462 0.735849 +vt 0.180769 0.726415 +vt 0.180769 0.735849 +vt 0.138462 0.716981 +vt 0.180769 0.716981 +vt 0.392308 0.528302 +vt 0.376923 0.509434 +vt 0.376923 0.528302 +vt 0.392308 0.566038 +vt 0.376923 0.547170 +vt 0.376923 0.566038 +vt 0.392308 0.584906 +vt 0.376923 0.584906 +vt 0.392308 0.471698 +vt 0.376923 0.452830 +vt 0.376923 0.471698 +vt 0.392308 0.509434 +vt 0.376923 0.490566 +vt 0.392308 0.547170 +vt 0.392308 0.603774 +vt 0.376923 0.603774 +vt 0.392308 0.490566 +vt 0.392308 0.452830 +vt 0.303846 0.660377 +vt 0.300000 0.735849 +vt 0.196154 0.735849 +vt 0.015385 0.735849 +vt 0.019231 0.660377 +vt 0.123077 0.660377 +vt 0.138462 0.669811 +vt 0.138462 0.726415 +vt 0.392308 0.452830 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 1.0000 -0.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.0000 1.0000 +vn 0.7263 0.1363 -0.6737 +vn 0.7071 0.0000 -0.7071 +vn 0.6794 -0.1448 0.7194 +vn 0.7071 0.0000 0.7071 +vn -0.6794 -0.1448 0.7194 +vn -0.7071 0.0000 0.7071 +vn -0.7263 0.1363 -0.6737 +vn -0.7071 0.0000 -0.7071 +vn 0.9987 -0.0196 0.0473 +vn -0.0000 -0.1866 0.9824 +vn -0.9987 -0.0196 0.0473 +vn -0.7574 0.4617 -0.4617 +vn -0.9955 -0.0671 0.0671 +vn 0.9955 -0.0671 0.0671 +vn 0.7574 0.4617 -0.4617 +vn 0.6630 -0.5294 0.5294 +vn -0.6630 -0.5294 0.5294 +vn 0.9987 -0.0473 0.0196 +vn 0.7263 0.6737 -0.1363 +vn 0.6794 -0.7194 0.1448 +vn -0.9987 -0.0473 0.0196 +vn -0.6794 -0.7194 0.1448 +vn -0.0000 -0.9824 0.1866 +vn -0.7263 0.6737 -0.1363 +vn 0.0473 0.9987 -0.0196 +vn 0.7194 0.6794 -0.1448 +vn -0.6737 0.7263 0.1363 +vn 0.7194 -0.6794 -0.1448 +vn -0.6737 -0.7263 0.1363 +vn 0.9824 -0.0000 -0.1866 +vn 0.0473 -0.9987 -0.0196 +vn -0.0473 0.9987 -0.0196 +vn 0.6737 0.7263 0.1363 +vn -0.7194 0.6794 -0.1448 +vn 0.6737 -0.7263 0.1363 +vn -0.7194 -0.6794 -0.1448 +vn -0.0473 -0.9987 -0.0196 +vn -0.9824 0.0000 -0.1866 +vn -0.4617 0.7574 0.4617 +vn 0.5294 -0.6630 -0.5294 +vn -0.4617 -0.7574 0.4617 +vn 0.0671 -0.9955 -0.0671 +vn 0.0671 0.9955 -0.0671 +vn 0.5294 0.6630 -0.5294 +vn 0.1448 -0.6794 -0.7194 +vn 0.0196 0.9987 -0.0473 +vn -0.1363 0.7263 0.6737 +vn 0.1866 -0.0000 -0.9824 +vn 0.0196 -0.9987 -0.0473 +vn 0.1448 0.6794 -0.7194 +vn -0.1363 -0.7263 0.6737 +vn -0.0671 0.9955 -0.0671 +vn -0.5294 0.6630 -0.5294 +vn -0.5294 -0.6630 -0.5294 +vn -0.0671 -0.9955 -0.0671 +vn 0.4617 0.7574 0.4617 +vn 0.4617 -0.7574 0.4617 +vn -0.1448 0.6794 -0.7194 +vn -0.1448 -0.6794 -0.7194 +vn -0.0196 -0.9987 -0.0473 +vn -0.1866 0.0000 -0.9824 +vn -0.0196 0.9987 -0.0473 +vn 0.1363 -0.7263 0.6737 +vn 0.1363 0.7263 0.6737 +s off +f 525/683/266 527/684/266 521/685/266 +f 647/686/267 645/687/267 643/688/267 +f 521/685/266 522/689/266 523/690/266 +f 523/690/266 524/691/266 525/683/266 +f 525/683/266 526/692/266 527/684/266 +f 527/684/266 528/693/266 521/685/266 +f 521/685/266 523/690/266 525/683/266 +f 643/688/267 642/694/267 641/695/267 +f 641/695/267 648/696/267 647/686/267 +f 647/686/267 646/697/267 645/687/267 +f 645/687/267 644/698/267 643/688/267 +f 643/688/267 641/695/267 647/686/267 +s 1 +f 516/699/268 523/700/269 515/701/269 +f 514/702/270 521/703/271 513/704/271 +f 513/704/271 528/705/272 520/706/272 +f 519/707/273 526/708/274 518/709/274 +f 517/710/275 524/711/268 516/699/268 +f 515/701/269 522/712/270 514/702/270 +f 520/706/272 527/713/273 519/714/273 +f 518/709/274 525/715/275 517/710/275 +f 544/716/276 529/717/271 536/718/277 +f 542/719/278 535/720/266 534/721/279 +f 540/722/280 533/723/275 532/724/281 +f 538/725/282 531/726/267 530/727/283 +f 543/728/284 536/718/277 535/720/266 +f 541/729/285 534/721/279 533/723/275 +f 539/730/286 532/724/281 531/731/267 +f 537/732/270 530/727/283 529/717/271 +f 539/733/286 545/734/287 546/735/288 +f 544/736/276 550/737/289 551/738/290 +f 541/729/285 549/739/291 542/719/278 +f 540/722/280 546/740/288 547/741/292 +f 542/719/278 550/737/289 543/742/284 +f 540/722/280 548/743/274 541/729/285 +f 551/738/290 557/744/293 558/745/294 +f 548/743/274 556/746/295 549/739/291 +f 547/741/292 553/747/296 554/748/297 +f 549/739/291 557/744/293 550/737/289 +f 547/741/292 555/749/298 548/743/274 +f 546/735/288 552/750/299 553/751/296 +f 537/752/270 545/734/287 538/753/282 +f 545/734/287 537/752/270 552/750/299 +f 544/736/276 551/738/290 537/752/270 +f 551/738/290 558/745/294 537/752/270 +f 558/754/294 559/755/300 537/756/270 +f 557/757/293 566/758/301 558/754/294 +f 537/756/270 560/759/302 552/760/299 +f 555/749/298 564/761/303 556/746/295 +f 553/762/296 562/763/304 554/748/297 +f 556/746/295 565/764/305 557/757/293 +f 554/748/297 563/765/306 555/749/298 +f 552/760/299 561/766/281 553/767/296 +f 582/768/276 567/769/271 574/770/277 +f 580/771/278 573/772/266 572/773/279 +f 578/774/280 571/775/275 570/776/281 +f 576/777/282 569/778/267 568/779/283 +f 581/780/284 574/770/277 573/781/266 +f 579/782/285 572/773/279 571/775/275 +f 577/783/286 570/776/281 569/778/267 +f 575/784/270 568/779/283 567/769/271 +f 577/785/286 583/786/287 584/787/288 +f 582/788/276 588/789/289 589/790/290 +f 580/771/278 586/791/274 587/792/291 +f 578/774/280 584/787/288 585/793/292 +f 580/771/278 588/794/289 581/795/284 +f 578/774/280 586/791/274 579/782/285 +f 589/790/290 595/796/293 596/797/294 +f 587/792/291 593/798/298 594/799/295 +f 585/793/292 591/800/296 592/801/297 +f 587/792/291 595/802/293 588/794/289 +f 585/793/292 593/798/298 586/791/274 +f 584/787/288 590/803/299 591/800/296 +f 575/804/270 583/786/287 576/805/282 +f 583/786/287 575/804/270 590/803/299 +f 582/788/276 589/790/290 575/804/270 +f 589/790/290 596/797/294 575/804/270 +f 596/806/294 597/807/307 575/808/270 +f 595/809/293 604/810/308 596/806/294 +f 575/808/270 598/811/309 590/812/299 +f 593/798/298 602/813/310 594/799/295 +f 591/814/296 600/815/311 592/801/297 +f 594/799/295 603/816/279 595/817/293 +f 592/801/297 601/818/312 593/798/298 +f 590/812/299 599/819/313 591/814/296 +f 559/820/300 606/821/314 560/822/302 +f 565/764/305 609/823/315 610/824/277 +f 563/825/306 607/826/316 608/827/317 +f 566/758/301 605/828/318 559/820/300 +f 566/758/301 610/824/277 611/829/319 +f 564/761/303 608/827/317 609/823/315 +f 608/827/317 616/830/320 609/823/315 +f 606/821/314 612/831/321 613/832/322 +f 609/823/315 617/833/323 610/824/277 +f 607/826/316 615/834/324 608/827/317 +f 605/828/318 618/835/325 612/831/321 +f 610/824/277 618/835/325 611/829/319 +f 560/822/302 606/821/314 561/836/281 +f 606/821/314 613/832/322 561/836/281 +f 561/837/281 607/826/316 562/838/304 +f 607/826/316 561/837/281 614/839/326 +f 598/811/309 619/840/327 620/841/328 +f 601/842/312 622/843/329 623/844/330 +f 599/819/313 620/841/328 621/845/283 +f 597/846/307 625/847/331 619/840/327 +f 601/842/312 624/848/332 602/849/310 +f 599/819/313 622/843/329 600/815/311 +f 619/840/327 627/850/333 620/841/328 +f 623/844/330 629/851/334 630/852/335 +f 620/841/328 628/853/336 621/845/283 +f 625/847/331 626/854/337 619/840/327 +f 624/848/332 630/852/335 631/855/338 +f 622/843/329 628/853/336 629/851/334 +f 603/856/279 625/847/331 604/857/308 +f 625/847/331 603/856/279 632/858/339 +f 602/849/310 624/848/332 603/859/279 +f 624/848/332 631/855/338 603/859/279 +f 626/860/337 613/861/322 612/862/321 +f 613/861/322 603/863/279 561/864/281 +f 603/865/279 614/866/326 561/867/281 +f 614/866/326 630/868/335 615/869/324 +f 615/869/324 629/851/334 616/830/320 +f 616/830/320 628/853/336 617/833/323 +f 617/833/323 627/850/333 618/835/325 +f 618/835/325 626/860/337 612/862/321 +f 643/870/269 636/871/268 635/872/269 +f 641/873/271 634/874/270 633/875/271 +f 648/876/272 633/875/271 640/877/272 +f 646/878/274 639/879/273 638/880/274 +f 644/881/268 637/882/275 636/871/268 +f 642/883/270 635/872/269 634/874/270 +f 647/884/273 640/877/272 639/885/273 +f 645/886/275 638/880/274 637/882/275 +f 516/699/268 524/711/268 523/700/269 +f 514/702/270 522/712/270 521/703/271 +f 513/704/271 521/703/271 528/705/272 +f 519/707/273 527/887/273 526/708/274 +f 517/710/275 525/715/275 524/711/268 +f 515/701/269 523/700/269 522/712/270 +f 520/706/272 528/705/272 527/713/273 +f 518/709/274 526/708/274 525/715/275 +f 544/716/276 537/732/270 529/717/271 +f 542/719/278 543/728/284 535/720/266 +f 540/722/280 541/729/285 533/723/275 +f 538/725/282 539/888/286 531/726/267 +f 543/728/284 544/716/276 536/718/277 +f 541/729/285 542/719/278 534/721/279 +f 539/730/286 540/722/280 532/724/281 +f 537/732/270 538/725/282 530/727/283 +f 539/733/286 538/753/282 545/734/287 +f 544/736/276 543/742/284 550/737/289 +f 541/729/285 548/743/274 549/739/291 +f 540/722/280 539/889/286 546/740/288 +f 542/719/278 549/739/291 550/737/289 +f 540/722/280 547/741/292 548/743/274 +f 551/738/290 550/737/289 557/744/293 +f 548/743/274 555/749/298 556/746/295 +f 547/741/292 546/740/288 553/747/296 +f 549/739/291 556/746/295 557/744/293 +f 547/741/292 554/748/297 555/749/298 +f 546/735/288 545/734/287 552/750/299 +f 558/754/294 566/758/301 559/755/300 +f 557/757/293 565/764/305 566/758/301 +f 537/756/270 559/755/300 560/759/302 +f 555/749/298 563/765/306 564/761/303 +f 553/762/296 561/890/281 562/763/304 +f 556/746/295 564/761/303 565/764/305 +f 554/748/297 562/763/304 563/765/306 +f 552/760/299 560/759/302 561/766/281 +f 582/768/276 575/784/270 567/769/271 +f 580/771/278 581/891/284 573/772/266 +f 578/774/280 579/782/285 571/775/275 +f 576/777/282 577/783/286 569/778/267 +f 581/780/284 582/768/276 574/770/277 +f 579/782/285 580/771/278 572/773/279 +f 577/783/286 578/774/280 570/776/281 +f 575/784/270 576/777/282 568/779/283 +f 577/785/286 576/805/282 583/786/287 +f 582/788/276 581/892/284 588/789/289 +f 580/771/278 579/782/285 586/791/274 +f 578/774/280 577/785/286 584/787/288 +f 580/771/278 587/792/291 588/794/289 +f 578/774/280 585/793/292 586/791/274 +f 589/790/290 588/789/289 595/796/293 +f 587/792/291 586/791/274 593/798/298 +f 585/793/292 584/787/288 591/800/296 +f 587/792/291 594/799/295 595/802/293 +f 585/793/292 592/801/297 593/798/298 +f 584/787/288 583/786/287 590/803/299 +f 596/806/294 604/810/308 597/807/307 +f 595/809/293 603/893/279 604/810/308 +f 575/808/270 597/807/307 598/811/309 +f 593/798/298 601/818/312 602/813/310 +f 591/814/296 599/819/313 600/815/311 +f 594/799/295 602/813/310 603/816/279 +f 592/801/297 600/815/311 601/818/312 +f 590/812/299 598/811/309 599/819/313 +f 559/820/300 605/828/318 606/821/314 +f 565/764/305 564/761/303 609/823/315 +f 563/825/306 562/838/304 607/826/316 +f 566/758/301 611/829/319 605/828/318 +f 566/758/301 565/764/305 610/824/277 +f 564/761/303 563/825/306 608/827/317 +f 608/827/317 615/834/324 616/830/320 +f 606/821/314 605/828/318 612/831/321 +f 609/823/315 616/830/320 617/833/323 +f 607/826/316 614/839/326 615/834/324 +f 605/828/318 611/829/319 618/835/325 +f 610/824/277 617/833/323 618/835/325 +f 598/811/309 597/846/307 619/840/327 +f 601/842/312 600/815/311 622/843/329 +f 599/819/313 598/811/309 620/841/328 +f 597/846/307 604/857/308 625/847/331 +f 601/842/312 623/844/330 624/848/332 +f 599/819/313 621/845/283 622/843/329 +f 619/840/327 626/854/337 627/850/333 +f 623/844/330 622/843/329 629/851/334 +f 620/841/328 627/850/333 628/853/336 +f 625/847/331 632/858/339 626/854/337 +f 624/848/332 623/844/330 630/852/335 +f 622/843/329 621/845/283 628/853/336 +f 626/860/337 632/894/339 613/861/322 +f 613/861/322 632/894/339 603/863/279 +f 603/865/279 631/895/338 614/866/326 +f 614/866/326 631/895/338 630/868/335 +f 615/869/324 630/868/335 629/851/334 +f 616/830/320 629/851/334 628/853/336 +f 617/833/323 628/853/336 627/850/333 +f 618/835/325 627/850/333 626/860/337 +f 643/870/269 644/881/268 636/871/268 +f 641/873/271 642/883/270 634/874/270 +f 648/876/272 641/873/271 633/875/271 +f 646/878/274 647/896/273 639/879/273 +f 644/881/268 645/886/275 637/882/275 +f 642/883/270 643/870/269 635/872/269 +f 647/884/273 648/876/272 640/877/272 +f 645/886/275 646/878/274 638/880/274 +o Gun +v -0.562500 -1.000000 3.000000 +v 0.562500 -1.000000 3.000000 +v -0.562500 -1.000000 -2.000000 +v 0.562500 -1.000000 -2.000000 +v -0.562500 2.000000 -2.000000 +v -0.562500 2.000000 2.000000 +v 0.562500 2.000000 2.000000 +v 0.562500 2.000000 -2.000000 +v 0.562500 0.750000 3.000000 +v -0.562500 0.750000 3.000000 +v -0.500000 0.187500 -2.000000 +v 0.500000 0.187500 -2.000000 +v -0.500000 1.937500 -2.000000 +v 0.500000 1.937500 -2.000000 +v -0.500000 1.937500 -4.000000 +v -0.250000 -0.062500 -2.500000 +v -0.250000 -0.062500 -2.000000 +v 0.500000 1.937500 -4.000000 +v -0.500000 1.437500 -4.750000 +v 0.500000 1.437500 -4.750000 +v -0.250000 -0.812500 -2.500000 +v 0.250000 -0.812500 -2.500000 +v 0.250000 -0.812500 -2.000000 +v -0.250000 -0.812500 -2.000000 +v 0.250000 -0.062500 -2.500000 +v 0.250000 -0.062500 -2.000000 +v -0.500000 0.437500 -4.750000 +v -0.500000 0.187500 -4.500000 +v 0.500000 0.187500 -4.500000 +v 0.500000 0.437500 -4.750000 +v 0.125000 0.187500 -3.500000 +v -0.125000 0.187500 -3.500000 +v 0.125000 -0.437500 -3.500000 +v -0.125000 -0.437500 -3.500000 +v 0.125000 -1.937500 -4.250000 +v -0.125000 -1.937500 -4.250000 +v 0.125000 -1.937500 -5.250000 +v -0.137500 -1.937500 -5.250000 +v 0.125000 -1.562500 -5.250000 +v -0.137500 -1.562500 -5.250000 +v 0.125000 0.187500 -4.500000 +v -0.137500 0.187500 -4.500000 +v 0.125000 -0.062500 -4.500000 +v -0.137500 -0.062500 -4.500000 +v 0.375000 -0.437500 -3.750000 +v 0.375000 0.187500 -3.750000 +v 0.375000 -1.937500 -4.500000 +v 0.375000 -1.937500 -5.000000 +v 0.375000 -1.562500 -5.000000 +v 0.375000 -0.062500 -4.250000 +v 0.375000 0.187500 -4.250000 +v -0.375000 0.187500 -3.750000 +v -0.375000 -0.437500 -3.750000 +v -0.375000 -1.937500 -4.500000 +v -0.375000 -1.937500 -5.000000 +v -0.375000 -1.562500 -5.000000 +v -0.375000 0.187500 -4.250000 +v -0.375000 -0.062500 -4.250000 +v -0.250000 -0.812500 -2.500000 +v 0.250000 -0.812500 -2.500000 +v -0.250000 -0.812500 -3.750000 +v 0.250000 -0.812500 -3.750000 +v -0.250000 -0.687500 -2.500000 +v 0.250000 -0.687500 -2.500000 +v -0.250000 -0.687500 -3.750000 +v 0.250000 -0.687500 -3.750000 +v -0.562500 -1.000000 -1.500000 +v 0.562500 -1.000000 -1.500000 +v -0.562500 -1.000000 2.000000 +v 0.562500 -1.000000 2.000000 +v -0.562500 -0.750000 -1.500000 +v 0.562500 -0.750000 -1.500000 +v -0.562500 -0.750000 2.000000 +v 0.562500 -0.750000 2.000000 +v 0.000000 1.875000 4.000000 +v -0.250000 1.808013 4.000000 +v -0.433012 1.625000 4.000000 +v -0.500000 1.375000 4.000000 +v -0.433012 1.125000 4.000000 +v -0.250000 0.941987 4.000000 +v 0.000000 0.875000 4.000000 +v 0.250000 0.941987 4.000000 +v 0.433012 1.125000 4.000000 +v 0.500000 1.375000 4.000000 +v 0.433013 1.625000 4.000000 +v 0.250000 1.808012 4.000000 +v -0.218750 1.753892 4.500000 +v 0.000000 1.812506 4.500000 +v -0.378886 1.593756 4.500000 +v -0.437500 1.375006 4.500000 +v -0.378886 1.156256 4.500000 +v -0.218750 0.996120 4.500000 +v 0.000000 0.937506 4.500000 +v 0.218750 0.996120 4.500000 +v 0.378886 1.156256 4.500000 +v 0.437500 1.375006 4.500000 +v 0.378886 1.593756 4.500000 +v 0.218750 1.753892 4.500000 +v 0.000000 1.875000 2.000000 +v -0.250000 1.808013 2.000000 +v -0.433012 1.625000 2.000000 +v -0.500000 1.375000 2.000000 +v -0.433012 1.125000 2.000000 +v -0.250000 0.941987 2.000000 +v 0.000000 0.875000 2.000000 +v 0.250000 0.941987 2.000000 +v 0.433012 1.125000 2.000000 +v 0.500000 1.375000 2.000000 +v 0.433013 1.625000 2.000000 +v 0.250000 1.808012 2.000000 +v -0.218750 1.753892 2.000000 +v 0.000000 1.812506 2.000000 +v -0.378886 1.593756 2.000000 +v -0.437500 1.375006 2.000000 +v -0.378886 1.156256 2.000000 +v -0.218750 0.996120 2.000000 +v 0.000000 0.937506 2.000000 +v 0.218750 0.996120 2.000000 +v 0.378886 1.156256 2.000000 +v 0.437500 1.375006 2.000000 +v 0.378886 1.593756 2.000000 +v 0.218750 1.753892 2.000000 +v 0.000000 0.562500 3.000000 +v -0.218750 0.503886 3.000000 +v -0.378886 0.343750 3.000000 +v -0.437500 0.125000 3.000000 +v -0.378886 -0.093750 3.000000 +v -0.218750 -0.253886 3.000000 +v 0.000000 -0.312500 3.000000 +v 0.218750 -0.253886 3.000000 +v 0.378886 -0.093750 3.000000 +v 0.437500 0.125000 3.000000 +v 0.378886 0.343750 3.000000 +v 0.218750 0.503886 3.000000 +v 0.000000 0.562500 3.250000 +v -0.218750 0.503886 3.250000 +v -0.378886 0.343750 3.250000 +v -0.437500 0.125000 3.250000 +v -0.378886 -0.093750 3.250000 +v -0.218750 -0.253886 3.250000 +v 0.000000 -0.312500 3.250000 +v 0.218750 -0.253886 3.250000 +v 0.378886 -0.093750 3.250000 +v 0.437500 0.125000 3.250000 +v 0.378886 0.343750 3.250000 +v 0.218750 0.503886 3.250000 +v -0.500000 0.187500 -2.500000 +v -0.500000 0.187500 -2.000000 +v 0.500000 0.187500 -2.500000 +v 0.500000 0.187500 -2.000000 +v 0.500000 0.500000 -2.750000 +v 0.500000 1.125000 -2.750000 +v 0.500000 1.125000 -2.625000 +v 0.500000 0.500000 -2.625000 +v 1.062500 0.687500 -2.750000 +v 0.875000 0.500000 -2.750000 +v 0.875000 1.125000 -2.750000 +v 1.062500 0.937500 -2.750000 +v 1.062500 0.937500 -2.625000 +v 0.875000 1.125000 -2.625000 +v 0.875000 0.500000 -2.625000 +v 1.062500 0.687500 -2.625000 +v -0.750000 1.062500 -3.250000 +v -0.750000 1.062500 -1.250000 +v -0.926777 0.989277 -3.250000 +v -0.926777 0.989277 -1.250000 +v -1.000000 0.812500 -3.250000 +v -1.000000 0.812500 -1.250000 +v -0.926777 0.635723 -3.250000 +v -0.926777 0.635723 -1.250000 +v -0.750000 0.562500 -3.250000 +v -0.750000 0.562500 -1.250000 +v -0.573223 0.635723 -3.250000 +v -0.573223 0.635723 -1.250000 +v -0.500000 0.812500 -3.250000 +v -0.500000 0.812500 -1.250000 +v -0.573223 0.989277 -3.250000 +v -0.573223 0.989277 -1.250000 +v 0.125000 0.187500 -3.250000 +v -0.125000 0.187500 -3.250000 +v 0.125000 -0.437500 -3.125000 +v -0.125000 -0.437500 -3.125000 +v 0.125000 0.187500 -3.500000 +v -0.125000 0.187500 -3.500000 +v 0.125000 -0.437500 -3.500000 +v -0.125000 -0.437500 -3.500000 +v -0.500000 0.500000 -2.750000 +v -0.500000 1.125000 -2.750000 +v -0.500000 1.125000 -2.625000 +v -0.500000 0.500000 -2.625000 +v -1.062500 0.687500 -2.750000 +v -0.875000 0.500000 -2.750000 +v -0.875000 1.125000 -2.750000 +v -1.062500 0.937500 -2.750000 +v -1.062500 0.937500 -2.625000 +v -0.875000 1.125000 -2.625000 +v -0.875000 0.500000 -2.625000 +v -1.062500 0.687500 -2.625000 +v 0.500000 0.500000 -1.875000 +v 0.500000 1.125000 -1.875000 +v 0.500000 1.125000 -1.750000 +v 0.500000 0.500000 -1.750000 +v 1.062500 0.687500 -1.875000 +v 0.875000 0.500000 -1.875000 +v 0.875000 1.125000 -1.875000 +v 1.062500 0.937500 -1.875000 +v 1.062500 0.937500 -1.750000 +v 0.875000 1.125000 -1.750000 +v 0.875000 0.500000 -1.750000 +v 1.062500 0.687500 -1.750000 +v -0.500000 0.500000 -1.875000 +v -0.500000 1.125000 -1.875000 +v -0.500000 1.125000 -1.750000 +v -0.500000 0.500000 -1.750000 +v -1.062500 0.687500 -1.875000 +v -0.875000 0.500000 -1.875000 +v -0.875000 1.125000 -1.875000 +v -1.062500 0.937500 -1.875000 +v -1.062500 0.937500 -1.750000 +v -0.875000 1.125000 -1.750000 +v -0.875000 0.500000 -1.750000 +v -1.062500 0.687500 -1.750000 +v 0.750000 1.062500 -3.250000 +v 0.750000 1.062500 -1.250000 +v 0.573223 0.989277 -3.250000 +v 0.573223 0.989277 -1.250000 +v 0.500000 0.812500 -3.250000 +v 0.500000 0.812500 -1.250000 +v 0.573223 0.635723 -3.250000 +v 0.573223 0.635723 -1.250000 +v 0.750000 0.562500 -3.250000 +v 0.750000 0.562500 -1.250000 +v 0.926777 0.635723 -3.250000 +v 0.926777 0.635723 -1.250000 +v 1.000000 0.812500 -3.250000 +v 1.000000 0.812500 -1.250000 +v 0.926777 0.989277 -3.250000 +v 0.926777 0.989277 -1.250000 +vt 0.465385 -0.000000 +vt 0.496154 0.084906 +vt 0.465385 0.084906 +vt 0.496154 0.311321 +vt 0.619231 0.396226 +vt 0.496154 0.396226 +vt 0.653846 0.084906 +vt 0.619231 0.311321 +vt 0.619231 0.084906 +vt 0.465385 0.216981 +vt 0.430769 0.311321 +vt 0.430769 0.216981 +vt 0.603846 0.000000 +vt 0.619231 0.000000 +vt 0.496154 0.000000 +vt 0.503846 0.084906 +vt 0.430769 0.084906 +vt 0.346154 0.566038 +vt 0.369231 0.603774 +vt 0.346154 0.603774 +vt 0.330769 0.660377 +vt 0.330769 0.603774 +vt 0.738462 0.169811 +vt 0.715385 0.207547 +vt 0.730769 0.075472 +vt 0.653846 0.207547 +vt 0.715385 0.283019 +vt 0.653846 0.283019 +vt 0.307692 0.566038 +vt 0.330769 0.566038 +vt 0.738462 0.283019 +vt 0.730769 -0.000000 +vt 0.653846 0.075472 +vt 0.653846 -0.000000 +vt 0.769231 0.094340 +vt 0.769231 0.169811 +vt 0.738462 0.075472 +vt 0.738462 0.000000 +vt 0.730769 0.415094 +vt 0.653846 0.415094 +vt 0.796154 0.462264 +vt 0.811538 0.462264 +vt 0.811538 0.518868 +vt 0.411538 0.622642 +vt 0.419231 0.575472 +vt 0.419231 0.622642 +vt 0.415385 0.452830 +vt 0.453846 0.490566 +vt 0.415385 0.490566 +vt 0.415385 0.547170 +vt 0.453846 0.537736 +vt 0.453846 0.547170 +vt 0.415385 0.500000 +vt 0.453846 0.500000 +vt 0.603846 0.084906 +vt 0.596154 0.000000 +vt 0.388462 0.915094 +vt 0.496154 0.830189 +vt 0.496154 0.915094 +vt 0.465385 0.490566 +vt 0.496154 0.603774 +vt 0.603846 0.103774 +vt 0.017308 0.226425 +vt 0.028962 0.242929 +vt 0.017308 0.292443 +vt 0.002103 0.018927 +vt 0.015385 0.000117 +vt 0.028667 0.018927 +vt 0.028944 0.209875 +vt 0.017308 0.226354 +vt 0.005671 0.176917 +vt 0.369231 0.566038 +vt 0.376923 0.603774 +vt 0.307692 0.603774 +vt 0.300000 0.566038 +vt 0.346154 0.660377 +vt 0.323077 0.679245 +vt 0.721154 0.462264 +vt 0.709615 0.471698 +vt 0.709615 0.462264 +vt 0.721154 0.471698 +vt 0.709615 0.518868 +vt 0.703846 0.462264 +vt 0.696154 0.471698 +vt 0.696154 0.462264 +vt 0.709615 0.528302 +vt 0.721154 0.518868 +vt 0.721154 0.528302 +vt 0.703846 0.471698 +vt 0.703846 0.518868 +vt 0.703846 0.528302 +vt 0.703846 0.448113 +vt 0.703846 0.429245 +vt 0.709615 0.415094 +vt 0.688461 0.453302 +vt 0.695961 0.471698 +vt 0.688461 0.490094 +vt 0.695961 0.433962 +vt 0.693765 0.446970 +vt 0.683158 0.420954 +vt 0.392308 0.566038 +vt 0.411538 0.547170 +vt 0.411538 0.575472 +vt 0.438462 0.566038 +vt 0.419231 0.547170 +vt 0.438462 0.547170 +vt 0.709615 0.471698 +vt 0.721154 0.462264 +vt 0.709615 0.462264 +vt 0.703846 0.485849 +vt 0.703846 0.504717 +vt 0.709615 0.518868 +vt 0.696154 0.471698 +vt 0.703846 0.462264 +vt 0.696154 0.462264 +vt 0.721154 0.518868 +vt 0.709615 0.528302 +vt 0.721154 0.528302 +vt 0.703846 0.471698 +vt 0.703846 0.518868 +vt 0.703846 0.528302 +vt 0.709615 0.415094 +vt 0.721154 0.462264 +vt 0.709615 0.471698 +vt 0.709615 0.462264 +vt 0.721154 0.471698 +vt 0.709615 0.518868 +vt 0.703846 0.462264 +vt 0.696154 0.471698 +vt 0.696154 0.462264 +vt 0.709615 0.528302 +vt 0.721154 0.518868 +vt 0.721154 0.528302 +vt 0.703846 0.471698 +vt 0.703846 0.518868 +vt 0.703846 0.528302 +vt 0.703846 0.448113 +vt 0.703846 0.429245 +vt 0.709615 0.415094 +vt 0.709615 0.471698 +vt 0.721154 0.462264 +vt 0.709615 0.462264 +vt 0.703846 0.485849 +vt 0.703846 0.504717 +vt 0.709615 0.518868 +vt 0.696154 0.471698 +vt 0.703846 0.462264 +vt 0.696154 0.462264 +vt 0.721154 0.518868 +vt 0.709615 0.528302 +vt 0.721154 0.528302 +vt 0.703846 0.471698 +vt 0.703846 0.518868 +vt 0.703846 0.528302 +vt 0.709615 0.415094 +vt 0.688461 0.453302 +vt 0.695961 0.471698 +vt 0.688461 0.490094 +vt 0.695961 0.433962 +vt 0.693765 0.446970 +vt 0.683158 0.420954 +vt 0.653846 0.311321 +vt 0.465385 0.311321 +vt 0.503846 -0.000000 +vt 0.738462 0.094340 +vt 0.738462 0.207547 +vt 0.738462 0.320755 +vt 0.738462 0.396226 +vt 0.819231 0.481132 +vt 0.819231 0.500000 +vt 0.796154 0.518868 +vt 0.788462 0.500000 +vt 0.788462 0.481132 +vt 0.453846 0.452830 +vt 0.415385 0.537736 +vt 0.596154 0.084906 +vt 0.388462 0.830189 +vt 0.619231 0.622642 +vt 0.603846 0.622642 +vt 0.603846 0.603774 +vt 0.496154 0.622642 +vt 0.465385 0.622642 +vt 0.496154 0.103774 +vt 0.010579 0.288021 +vt 0.005653 0.275939 +vt 0.003850 0.259434 +vt 0.005653 0.242929 +vt 0.010579 0.230847 +vt 0.024036 0.230847 +vt 0.030765 0.259434 +vt 0.028962 0.275939 +vt 0.024036 0.288021 +vt 0.015385 0.075355 +vt 0.007716 0.070315 +vt 0.002103 0.056545 +vt 0.000048 0.037736 +vt 0.007716 0.005157 +vt 0.023053 0.005157 +vt 0.030721 0.037736 +vt 0.028667 0.056545 +vt 0.023053 0.070315 +vt 0.010589 0.221938 +vt 0.005671 0.209875 +vt 0.003871 0.193396 +vt 0.010589 0.164854 +vt 0.017308 0.160439 +vt 0.024026 0.164854 +vt 0.028944 0.176917 +vt 0.030744 0.193396 +vt 0.024026 0.221938 +vt 0.376923 0.566038 +vt 0.300000 0.603774 +vt 0.353846 0.679245 +vt 0.703846 0.504717 +vt 0.703846 0.485849 +vt 0.721154 0.415094 +vt 0.683158 0.484706 +vt 0.680962 0.471698 +vt 0.683158 0.458690 +vt 0.693765 0.458690 +vt 0.693765 0.484706 +vt 0.688461 0.452358 +vt 0.683158 0.446970 +vt 0.680962 0.433962 +vt 0.688462 0.415566 +vt 0.693765 0.420954 +vt 0.392308 0.547170 +vt 0.721154 0.471698 +vt 0.721154 0.415094 +vt 0.703846 0.429245 +vt 0.703846 0.448113 +vt 0.703846 0.504717 +vt 0.703846 0.485849 +vt 0.721154 0.415094 +vt 0.721154 0.471698 +vt 0.721154 0.415094 +vt 0.703846 0.429245 +vt 0.703846 0.448113 +vt 0.683158 0.484706 +vt 0.680962 0.471698 +vt 0.683158 0.458690 +vt 0.693765 0.458690 +vt 0.693765 0.484706 +vt 0.688461 0.452358 +vt 0.683158 0.446970 +vt 0.680962 0.433962 +vt 0.688462 0.415566 +vt 0.693765 0.420954 +vt 0.742308 0.481132 +vt 0.742308 0.500000 +vt 0.723077 0.481132 +vt 0.723077 0.500000 +vt 0.830769 0.500000 +vt 0.876923 0.500000 +vt 0.884615 0.481132 +vt 0.884615 0.500000 +vt 0.796154 0.660377 +vt 0.811538 0.547170 +vt 0.819231 0.547170 +vt 0.796154 0.679245 +vt 0.788462 0.660377 +vt 0.773077 0.679245 +vt 0.788462 0.679245 +vt 0.819231 0.518868 +vt 0.796154 0.660377 +vt 0.811538 0.547170 +vt 0.788462 0.660377 +vt 0.788462 0.518868 +vt 0.773077 0.632075 +vt 0.765385 0.632075 +vt 0.765385 0.679245 +vt 0.773077 0.632075 +vt 0.796154 0.518868 +vt 0.773077 0.679245 +vt 0.788462 0.679245 +vt 0.796154 0.679245 +vt 0.765385 0.679245 +vt 0.765385 0.632075 +vt 0.819231 0.518868 +vt 0.819231 0.547170 +vt 0.788462 0.518868 +vt 0.830769 0.481132 +vt 0.430769 0.339623 +vt 0.338462 0.358491 +vt 0.338462 0.339623 +vt 0.400000 0.207547 +vt 0.338462 0.226415 +vt 0.338462 0.207547 +vt 0.430769 0.264151 +vt 0.338462 0.283019 +vt 0.338462 0.264151 +vt 0.430769 0.358491 +vt 0.338462 0.377358 +vt 0.400000 0.000000 +vt 0.338462 0.018868 +vt 0.338462 0.000000 +vt 0.430769 0.283019 +vt 0.338462 0.301887 +vt 0.430769 0.377358 +vt 0.338462 0.396226 +vt 0.400000 0.018868 +vt 0.338462 0.037736 +vt 0.430769 0.301887 +vt 0.338462 0.320755 +vt 0.400000 0.113208 +vt 0.338462 0.132075 +vt 0.338462 0.113208 +vt 0.430769 0.396226 +vt 0.338462 0.415094 +vt 0.400000 0.037736 +vt 0.338462 0.056604 +vt 0.430769 0.320755 +vt 0.400000 0.132075 +vt 0.338462 0.150943 +vt 0.430769 0.415094 +vt 0.338462 0.433962 +vt 0.400000 0.056604 +vt 0.338462 0.075472 +vt 0.400000 0.150943 +vt 0.338462 0.169811 +vt 0.430769 0.433962 +vt 0.338462 0.452830 +vt 0.400000 0.075472 +vt 0.338462 0.094340 +vt 0.400000 0.169811 +vt 0.338462 0.188679 +vt 0.430769 0.226415 +vt 0.338462 0.245283 +vt 0.338462 0.226415 +vt 0.400000 0.094340 +vt 0.400000 0.188679 +vt 0.430769 0.245283 +vt 0.407692 0.226415 +vt 0.400000 0.207547 +vt 0.407692 0.207547 +vt 0.407692 0.169811 +vt 0.400000 0.150943 +vt 0.407692 0.150943 +vt 0.407692 0.075472 +vt 0.400000 0.056604 +vt 0.407692 0.056604 +vt 0.407692 0.018868 +vt 0.400000 -0.000000 +vt 0.407692 -0.000000 +vt 0.407692 0.188679 +vt 0.400000 0.169811 +vt 0.407692 0.094340 +vt 0.400000 0.075472 +vt 0.407692 0.132075 +vt 0.400000 0.113208 +vt 0.407692 0.113208 +vt 0.407692 0.037736 +vt 0.400000 0.018868 +vt 0.400000 0.188679 +vt 0.400000 0.094340 +vt 0.400000 0.132075 +vt 0.400000 0.037736 +vt 0.680769 0.509434 +vt 0.619231 0.490566 +vt 0.680769 0.490566 +vt 0.680769 0.528302 +vt 0.619231 0.509434 +vt 0.680769 0.547170 +vt 0.619231 0.528302 +vt 0.680769 0.566038 +vt 0.619231 0.547170 +vt 0.680769 0.433962 +vt 0.619231 0.415094 +vt 0.680769 0.415094 +vt 0.680769 0.452830 +vt 0.619231 0.433962 +vt 0.680769 0.471698 +vt 0.619231 0.452830 +vt 0.619231 0.471698 +vt 0.811538 0.518868 +vt 0.680769 0.509434 +vt 0.619231 0.490566 +vt 0.680769 0.490566 +vt 0.680769 0.528302 +vt 0.619231 0.509434 +vt 0.680769 0.547170 +vt 0.619231 0.528302 +vt 0.680769 0.566038 +vt 0.619231 0.547170 +vt 0.680769 0.433962 +vt 0.619231 0.415094 +vt 0.680769 0.415094 +vt 0.680769 0.452830 +vt 0.619231 0.433962 +vt 0.680769 0.471698 +vt 0.619231 0.452830 +vt 0.619231 0.471698 +vt 0.876923 0.481132 +vt 0.400000 0.226415 +vt 0.430769 0.452830 +vt 0.400000 0.226415 +vt 0.619231 0.566038 +vt 0.619231 0.566038 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.6247 0.7809 +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.8321 -0.5547 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.1961 0.9806 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.3595 -0.2070 0.9099 +vn 0.3897 -0.4119 0.8237 +vn 0.3595 -0.2070 0.9099 +vn -0.3827 0.0000 0.9239 +vn 0.3827 0.0000 0.9239 +vn -0.3945 0.0000 -0.9189 +vn 0.3595 0.2070 -0.9099 +vn 0.3827 0.0000 -0.9239 +vn 0.3954 0.2222 -0.8912 +vn 0.8994 0.1123 -0.4225 +vn 0.9414 0.0706 -0.3297 +vn 0.9239 0.0000 0.3827 +vn 0.9239 0.0000 -0.3827 +vn -0.4084 0.2210 -0.8856 +vn -0.9054 0.1095 -0.4102 +vn -0.9452 0.0682 -0.3193 +vn 0.8994 -0.1123 0.4225 +vn -0.8994 -0.1123 0.4225 +vn -0.9511 -0.1381 0.2762 +vn -0.9239 0.0000 0.3827 +vn -0.9287 0.0000 -0.3708 +vn -0.3703 0.2060 -0.9058 +vn -0.3897 -0.4119 0.8237 +vn -0.5000 0.8660 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.9511 -0.1381 0.2762 +s off +f 649/897/340 718/898/340 650/899/340 +f 655/900/341 653/901/341 654/902/341 +f 651/903/342 656/904/342 652/905/342 +f 657/906/343 654/907/343 658/908/343 +f 652/905/340 715/909/340 651/910/340 +f 717/911/342 722/912/342 718/898/342 +f 650/899/344 658/908/344 649/913/344 +f 672/914/345 664/915/345 669/916/345 +f 669/916/342 673/917/342 670/918/342 +f 668/919/346 666/920/346 677/921/346 +f 662/922/341 663/923/341 661/924/341 +f 670/918/346 674/925/346 671/926/346 +f 666/920/347 667/927/347 663/923/347 +f 676/928/340 660/929/340 659/930/340 +f 668/919/342 675/931/342 667/932/342 +f 672/914/340 670/918/340 671/926/340 +f 678/933/348 676/928/348 675/934/348 +f 676/935/345 659/936/345 663/923/345 +f 702/937/340 703/938/340 696/939/340 +f 828/940/349 829/941/349 827/942/349 +f 707/943/340 710/944/340 708/945/340 +f 707/946/345 713/947/345 709/948/345 +f 710/944/346 712/949/346 708/945/346 +f 713/947/341 712/949/341 714/950/341 +f 716/951/344 719/952/344 715/909/344 +f 722/953/340 719/954/340 720/955/340 +f 658/956/345 654/902/345 721/957/345 +f 652/905/346 656/904/346 720/958/346 +f 741/959/344 743/960/344 736/961/344 +f 727/962/344 729/963/344 731/964/344 +f 793/965/344 783/966/344 787/967/344 +f 665/968/350 795/969/350 664/915/350 +f 673/970/351 798/971/351 674/925/351 +f 664/972/342 797/973/342 673/917/342 +f 800/974/341 808/975/341 805/976/341 +f 808/975/344 801/977/344 809/978/344 +f 806/979/346 810/980/346 803/981/346 +f 804/982/340 802/983/340 799/984/340 +f 806/979/352 808/975/352 807/985/352 +f 810/986/351 804/982/351 803/987/351 +f 806/988/342 803/989/342 804/990/342 +f 820/991/344 824/992/344 812/993/344 +f 815/994/342 813/995/342 821/996/342 +f 828/997/345 834/998/345 830/999/345 +f 827/1000/346 833/1001/346 831/1002/346 +f 830/999/340 833/1001/340 829/941/340 +f 844/1003/341 836/1004/341 841/1005/341 +f 843/1006/344 846/1007/344 845/1008/344 +f 846/1009/345 842/1010/345 839/1011/345 +f 838/1012/340 840/1013/340 835/1014/340 +f 844/1003/353 842/1010/353 843/1015/353 +f 840/1013/350 846/1016/350 839/1017/350 +f 841/1005/342 836/1004/342 840/1018/342 +f 848/1019/341 856/1020/341 853/1021/341 +f 856/1020/344 849/1022/344 857/1023/344 +f 854/1024/346 858/1025/346 851/1026/346 +f 852/1027/340 850/1028/340 847/1029/340 +f 854/1024/352 856/1020/352 855/1030/352 +f 858/1031/351 852/1027/351 851/1032/351 +f 854/1033/342 851/1034/342 852/1035/342 +f 868/1036/341 860/1037/341 865/1038/341 +f 867/1039/344 870/1040/344 869/1041/344 +f 870/1042/345 866/1043/345 863/1044/345 +f 862/1045/340 864/1046/340 859/1047/340 +f 868/1036/353 866/1043/353 867/1048/353 +f 864/1046/350 870/1049/350 863/1050/350 +f 865/1038/342 860/1037/342 864/1051/342 +f 880/1052/344 884/1053/344 872/1054/344 +f 875/1055/342 873/1056/342 881/1057/342 +f 649/897/340 717/911/340 718/898/340 +f 655/900/341 656/904/341 653/901/341 +f 651/903/342 653/1058/342 656/904/342 +f 657/906/343 655/1059/343 654/907/343 +f 652/905/340 716/951/340 715/909/340 +f 717/911/342 721/1060/342 722/912/342 +f 650/899/344 657/906/344 658/908/344 +f 672/914/345 665/968/345 664/915/345 +f 669/916/342 664/972/342 673/917/342 +f 662/922/346 660/929/346 666/920/346 +f 660/929/346 677/921/346 666/920/346 +f 677/921/346 678/1061/346 668/919/346 +f 662/922/341 666/920/341 663/923/341 +f 670/918/346 673/970/346 674/925/346 +f 666/920/347 668/1062/347 667/927/347 +f 676/928/340 677/921/340 660/929/340 +f 668/919/342 678/1061/342 675/931/342 +f 672/914/340 669/916/340 670/918/340 +f 678/933/348 677/921/348 676/928/348 +f 661/924/345 663/923/345 659/936/345 +f 663/923/345 667/1063/345 676/935/345 +f 667/1063/345 675/1064/345 676/935/345 +f 686/1065/340 685/1066/340 703/938/340 +f 685/1066/340 696/939/340 703/938/340 +f 696/939/340 695/1067/340 702/937/340 +f 695/1067/340 683/1068/340 702/937/340 +f 683/1068/340 684/1069/340 702/937/340 +f 828/940/349 830/999/349 829/941/349 +f 707/943/340 709/1070/340 710/944/340 +f 707/946/345 711/1071/345 713/947/345 +f 710/944/346 714/950/346 712/949/346 +f 713/947/341 711/1071/341 712/949/341 +f 716/951/344 720/1072/344 719/952/344 +f 722/953/340 721/1073/340 719/954/340 +f 651/1074/345 715/1075/345 719/1076/345 +f 721/957/345 717/1077/345 649/1078/345 +f 653/901/345 651/1074/345 719/1076/345 +f 721/957/345 649/1078/345 658/956/345 +f 653/901/345 719/1076/345 654/902/345 +f 719/1076/345 721/957/345 654/902/345 +f 656/904/346 655/900/346 720/958/346 +f 655/900/346 657/906/346 722/1079/346 +f 720/958/346 655/900/346 722/1079/346 +f 657/906/346 650/899/346 722/1079/346 +f 650/899/346 718/898/346 722/1079/346 +f 716/951/346 652/905/346 720/958/346 +f 736/961/344 735/1080/344 737/1081/344 +f 737/1081/344 738/1082/344 736/961/344 +f 738/1082/344 739/1083/344 736/961/344 +f 739/1083/344 740/1084/344 741/959/344 +f 741/959/344 742/1085/344 743/960/344 +f 743/960/344 744/1086/344 736/961/344 +f 744/1086/344 745/1087/344 736/961/344 +f 745/1087/344 746/1088/344 736/961/344 +f 739/1083/344 741/959/344 736/961/344 +f 723/1089/344 724/1090/344 725/1091/344 +f 725/1091/344 726/1092/344 727/962/344 +f 727/962/344 728/1093/344 729/963/344 +f 729/963/344 730/1094/344 731/964/344 +f 731/964/344 732/1095/344 733/1096/344 +f 733/1096/344 734/1097/344 731/964/344 +f 734/1097/344 723/1089/344 731/964/344 +f 723/1089/344 725/1091/344 731/964/344 +f 725/1091/344 727/962/344 731/964/344 +f 783/966/344 784/1098/344 785/1099/344 +f 785/1099/344 786/1100/344 783/966/344 +f 786/1100/344 787/967/344 783/966/344 +f 787/967/344 788/1101/344 789/1102/344 +f 789/1102/344 790/1103/344 791/1104/344 +f 791/1104/344 792/1105/344 793/965/344 +f 793/965/344 794/1106/344 783/966/344 +f 787/967/344 789/1102/344 791/1104/344 +f 791/1104/344 793/965/344 787/967/344 +f 665/968/350 796/1107/350 795/969/350 +f 673/970/351 797/1108/351 798/971/351 +f 664/972/342 795/1109/342 797/973/342 +f 800/974/341 801/977/341 808/975/341 +f 801/977/344 802/983/344 809/978/344 +f 809/978/344 810/1110/344 807/1111/344 +f 807/1111/344 808/975/344 809/978/344 +f 806/979/346 807/985/346 810/980/346 +f 804/982/340 809/978/340 802/983/340 +f 806/979/352 805/976/352 808/975/352 +f 810/986/351 809/978/351 804/982/351 +f 804/990/342 799/1112/342 800/974/342 +f 800/974/342 805/976/342 804/990/342 +f 805/976/342 806/988/342 804/990/342 +f 812/993/344 814/1113/344 816/1114/344 +f 816/1114/344 818/1115/344 820/991/344 +f 820/991/344 822/1116/344 824/992/344 +f 824/992/344 826/1117/344 812/993/344 +f 812/993/344 816/1114/344 820/991/344 +f 813/995/342 811/1118/342 821/996/342 +f 811/1118/342 825/1119/342 821/996/342 +f 825/1119/342 823/1120/342 821/996/342 +f 821/996/342 819/1121/342 817/1122/342 +f 817/1122/342 815/994/342 821/996/342 +f 828/997/345 832/1123/345 834/998/345 +f 827/1000/346 829/941/346 833/1001/346 +f 830/999/340 834/998/340 833/1001/340 +f 844/1003/341 837/1124/341 836/1004/341 +f 845/1008/344 838/1012/344 837/1124/344 +f 837/1124/344 844/1003/344 845/1008/344 +f 844/1003/344 843/1006/344 845/1008/344 +f 846/1009/345 843/1015/345 842/1010/345 +f 838/1012/340 845/1008/340 840/1013/340 +f 844/1003/353 841/1005/353 842/1010/353 +f 840/1013/350 845/1008/350 846/1016/350 +f 836/1004/342 835/1125/342 840/1018/342 +f 840/1018/342 839/1126/342 842/1127/342 +f 842/1127/342 841/1005/342 840/1018/342 +f 848/1019/341 849/1022/341 856/1020/341 +f 849/1022/344 850/1028/344 857/1023/344 +f 857/1023/344 858/1128/344 855/1129/344 +f 855/1129/344 856/1020/344 857/1023/344 +f 854/1024/346 855/1030/346 858/1025/346 +f 852/1027/340 857/1023/340 850/1028/340 +f 854/1024/352 853/1021/352 856/1020/352 +f 858/1031/351 857/1023/351 852/1027/351 +f 852/1035/342 847/1130/342 848/1019/342 +f 848/1019/342 853/1021/342 852/1035/342 +f 853/1021/342 854/1033/342 852/1035/342 +f 868/1036/341 861/1131/341 860/1037/341 +f 869/1041/344 862/1045/344 861/1131/344 +f 861/1131/344 868/1036/344 869/1041/344 +f 868/1036/344 867/1039/344 869/1041/344 +f 870/1042/345 867/1048/345 866/1043/345 +f 862/1045/340 869/1041/340 864/1046/340 +f 868/1036/353 865/1038/353 866/1043/353 +f 864/1046/350 869/1041/350 870/1049/350 +f 860/1037/342 859/1132/342 864/1051/342 +f 864/1051/342 863/1133/342 866/1134/342 +f 866/1134/342 865/1038/342 864/1051/342 +f 872/1054/344 874/1135/344 876/1136/344 +f 876/1136/344 878/1137/344 880/1052/344 +f 880/1052/344 882/1138/344 884/1053/344 +f 884/1053/344 886/1139/344 872/1054/344 +f 872/1054/344 876/1136/344 880/1052/344 +f 873/1056/342 871/1140/342 881/1057/342 +f 871/1140/342 885/1141/342 881/1057/342 +f 885/1141/342 883/1142/342 881/1057/342 +f 881/1057/342 879/1143/342 877/1144/342 +f 877/1144/342 875/1055/342 881/1057/342 +s 1 +f 682/1145/354 683/1068/355 681/1146/356 +f 680/1147/357 681/1146/356 679/1148/358 +f 686/1065/359 687/1149/360 685/1066/361 +f 691/1150/362 690/1151/359 689/1152/361 +f 691/1153/362 697/1154/363 687/1155/360 +f 689/1156/361 698/1157/364 691/1153/362 +f 694/1158/365 698/1157/364 699/1159/366 +f 687/1155/360 696/939/366 685/1160/361 +f 692/1161/367 704/1162/368 706/1163/369 +f 683/1164/355 693/1165/370 681/1166/356 +f 681/1166/356 694/1158/365 679/1167/358 +f 701/1168/371 704/1162/368 702/1169/372 +f 700/1170/373 706/1163/369 701/1168/371 +f 692/1161/367 705/1171/374 690/1172/359 +f 680/1173/357 701/1168/371 682/1174/354 +f 686/1175/359 704/1162/368 688/1176/375 +f 684/1177/376 701/1168/371 702/1169/372 +f 688/1178/375 691/1150/362 687/1149/360 +f 760/1179/341 735/1180/377 736/1181/341 +f 752/1182/378 729/1183/340 728/1184/378 +f 767/1185/379 744/1186/346 743/1187/379 +f 759/1188/377 737/1189/380 735/1180/377 +f 753/1190/340 730/1191/381 729/1192/340 +f 768/1193/346 745/1194/382 744/1186/346 +f 761/1195/380 738/1196/345 737/1189/380 +f 754/1197/381 731/1198/379 730/1191/381 +f 769/1199/382 746/1200/383 745/1194/382 +f 747/1201/341 724/1202/377 723/1203/341 +f 762/1204/345 739/1205/384 738/1196/345 +f 755/1206/379 732/1207/346 731/1198/379 +f 770/1208/383 736/1181/341 746/1200/383 +f 748/1209/377 725/1210/380 724/1202/377 +f 763/1211/384 740/1212/378 739/1205/384 +f 756/1213/346 733/1214/382 732/1207/346 +f 749/1215/380 726/1216/345 725/1210/380 +f 764/1217/378 741/1218/340 740/1212/378 +f 757/1219/382 734/1220/383 733/1214/382 +f 750/1221/345 727/1222/384 726/1216/345 +f 765/1223/340 742/1224/381 741/1225/340 +f 758/1226/383 723/1203/341 734/1220/383 +f 751/1227/384 728/1184/378 727/1222/384 +f 766/1228/381 743/1187/379 742/1224/381 +f 777/1229/340 788/1230/378 776/1231/378 +f 774/1232/345 785/1233/380 773/1234/380 +f 781/1235/382 792/1236/346 780/1237/346 +f 778/1238/381 789/1239/340 777/1240/340 +f 775/1241/384 786/1242/345 774/1232/345 +f 782/1243/383 793/1244/382 781/1235/382 +f 772/1245/377 783/1246/341 771/1247/341 +f 779/1248/379 790/1249/381 778/1238/381 +f 776/1231/378 787/1250/384 775/1241/384 +f 771/1247/341 794/1251/383 782/1243/383 +f 773/1234/380 784/1252/377 772/1245/377 +f 780/1237/346 791/1253/379 779/1248/379 +f 813/1254/353 812/1255/341 811/1256/341 +f 815/1257/345 814/1258/353 813/1254/353 +f 817/1259/350 816/1260/345 815/1257/345 +f 819/1261/340 818/1262/350 817/1259/350 +f 821/1263/351 820/1264/340 819/1265/340 +f 823/1266/346 822/1267/351 821/1263/351 +f 825/1268/352 824/1269/346 823/1266/346 +f 811/1256/341 826/1270/352 825/1268/352 +f 693/1165/370 697/1154/363 698/1157/364 +f 702/1169/372 704/1162/368 703/1271/374 +f 697/1154/363 695/1067/385 696/939/366 +f 873/1272/353 872/1273/341 871/1274/341 +f 875/1275/345 874/1276/353 873/1272/353 +f 877/1277/350 876/1278/345 875/1275/345 +f 879/1279/340 878/1280/350 877/1277/350 +f 881/1281/351 880/1282/340 879/1283/340 +f 883/1284/346 882/1285/351 881/1281/351 +f 885/1286/352 884/1287/346 883/1284/346 +f 871/1274/341 886/1288/352 885/1286/352 +f 682/1145/354 684/1069/376 683/1068/355 +f 680/1147/357 682/1145/354 681/1146/356 +f 686/1065/359 688/1178/375 687/1149/360 +f 691/1150/362 692/1289/367 690/1151/359 +f 691/1153/362 698/1157/364 697/1154/363 +f 689/1156/361 699/1159/366 698/1157/364 +f 694/1158/365 693/1165/370 698/1157/364 +f 687/1155/360 697/1154/363 696/939/366 +f 692/1161/367 688/1176/375 704/1162/368 +f 683/1164/355 695/1067/385 693/1165/370 +f 681/1166/356 693/1165/370 694/1158/365 +f 701/1168/371 706/1163/369 704/1162/368 +f 700/1170/373 705/1171/374 706/1163/369 +f 692/1161/367 706/1163/369 705/1171/374 +f 680/1173/357 700/1170/373 701/1168/371 +f 686/1175/359 703/1271/374 704/1162/368 +f 684/1177/376 682/1174/354 701/1168/371 +f 688/1178/375 692/1289/367 691/1150/362 +f 760/1179/341 759/1188/377 735/1180/377 +f 752/1182/378 753/1290/340 729/1183/340 +f 767/1185/379 768/1193/346 744/1186/346 +f 759/1188/377 761/1195/380 737/1189/380 +f 753/1190/340 754/1197/381 730/1191/381 +f 768/1193/346 769/1199/382 745/1194/382 +f 761/1195/380 762/1204/345 738/1196/345 +f 754/1197/381 755/1206/379 731/1198/379 +f 769/1199/382 770/1208/383 746/1200/383 +f 747/1201/341 748/1209/377 724/1202/377 +f 762/1204/345 763/1211/384 739/1205/384 +f 755/1206/379 756/1213/346 732/1207/346 +f 770/1208/383 760/1179/341 736/1181/341 +f 748/1209/377 749/1215/380 725/1210/380 +f 763/1211/384 764/1217/378 740/1212/378 +f 756/1213/346 757/1219/382 733/1214/382 +f 749/1215/380 750/1221/345 726/1216/345 +f 764/1217/378 765/1291/340 741/1218/340 +f 757/1219/382 758/1226/383 734/1220/383 +f 750/1221/345 751/1227/384 727/1222/384 +f 765/1223/340 766/1228/381 742/1224/381 +f 758/1226/383 747/1201/341 723/1203/341 +f 751/1227/384 752/1182/378 728/1184/378 +f 766/1228/381 767/1185/379 743/1187/379 +f 777/1229/340 789/1292/340 788/1230/378 +f 774/1232/345 786/1242/345 785/1233/380 +f 781/1235/382 793/1244/382 792/1236/346 +f 778/1238/381 790/1249/381 789/1239/340 +f 775/1241/384 787/1250/384 786/1242/345 +f 782/1243/383 794/1251/383 793/1244/382 +f 772/1245/377 784/1252/377 783/1246/341 +f 779/1248/379 791/1253/379 790/1249/381 +f 776/1231/378 788/1230/378 787/1250/384 +f 771/1247/341 783/1246/341 794/1251/383 +f 773/1234/380 785/1233/380 784/1252/377 +f 780/1237/346 792/1236/346 791/1253/379 +f 813/1254/353 814/1258/353 812/1255/341 +f 815/1257/345 816/1260/345 814/1258/353 +f 817/1259/350 818/1262/350 816/1260/345 +f 819/1261/340 820/1293/340 818/1262/350 +f 821/1263/351 822/1267/351 820/1264/340 +f 823/1266/346 824/1269/346 822/1267/351 +f 825/1268/352 826/1270/352 824/1269/346 +f 811/1256/341 812/1255/341 826/1270/352 +f 693/1165/370 695/1067/385 697/1154/363 +f 873/1272/353 874/1276/353 872/1273/341 +f 875/1275/345 876/1278/345 874/1276/353 +f 877/1277/350 878/1280/350 876/1278/345 +f 879/1279/340 880/1294/340 878/1280/350 +f 881/1281/351 882/1285/351 880/1282/340 +f 883/1284/346 884/1287/346 882/1285/351 +f 885/1286/352 886/1288/352 884/1287/346 +f 871/1274/341 872/1273/341 886/1288/352 diff --git a/src/main/resources/assets/hbm/models/weapons/liberator.obj b/src/main/resources/assets/hbm/models/weapons/liberator.obj index c78b00ba7..c98168d16 100644 --- a/src/main/resources/assets/hbm/models/weapons/liberator.obj +++ b/src/main/resources/assets/hbm/models/weapons/liberator.obj @@ -1,6 +1,938 @@ # Blender v2.79 (sub 0) OBJ File: 'liberator.blend' # www.blender.org -o Cube_Cube.001 +o Shell4 +v -0.250000 0.437500 0.000000 +v -0.343750 0.412380 0.000000 +v -0.412380 0.343750 0.000000 +v -0.437500 0.250000 0.000000 +v -0.412380 0.156250 0.000000 +v -0.343750 0.087620 0.000000 +v -0.250000 0.062500 0.000000 +v -0.156250 0.087620 0.000000 +v -0.087620 0.156250 0.000000 +v -0.062500 0.250000 0.000000 +v -0.087620 0.343750 0.000000 +v -0.156250 0.412380 0.000000 +v -0.250000 0.437500 1.000000 +v -0.343750 0.412380 1.000000 +v -0.412380 0.343750 1.000000 +v -0.437500 0.250000 1.000000 +v -0.412380 0.156250 1.000000 +v -0.343750 0.087620 1.000000 +v -0.250000 0.062500 1.000000 +v -0.156250 0.087620 1.000000 +v -0.087620 0.156250 1.000000 +v -0.062500 0.250000 1.000000 +v -0.087620 0.343750 1.000000 +v -0.156250 0.412380 1.000000 +v -0.250000 0.460938 0.000000 +v -0.355469 0.432677 0.000000 +v -0.432677 0.355469 0.000000 +v -0.460938 0.250000 0.000000 +v -0.432677 0.144531 0.000000 +v -0.355469 0.067323 0.000000 +v -0.250000 0.039062 0.000000 +v -0.144531 0.067322 0.000000 +v -0.067323 0.144531 0.000000 +v -0.039062 0.250000 0.000000 +v -0.067323 0.355469 0.000000 +v -0.144531 0.432677 0.000000 +v -0.250000 0.460938 -0.062500 +v -0.355469 0.432677 -0.062500 +v -0.432677 0.355469 -0.062500 +v -0.460938 0.250000 -0.062500 +v -0.432677 0.144531 -0.062500 +v -0.355469 0.067323 -0.062500 +v -0.250000 0.039062 -0.062500 +v -0.144531 0.067322 -0.062500 +v -0.067323 0.144531 -0.062500 +v -0.039062 0.250000 -0.062500 +v -0.067323 0.355469 -0.062500 +v -0.144531 0.432677 -0.062500 +vt 0.185185 0.500000 +vt 0.189815 0.488636 +vt 0.189815 0.500000 +vt 0.185185 0.431818 +vt 0.189815 0.443182 +vt 0.185185 0.443182 +vt 0.185185 0.409091 +vt 0.189815 0.397727 +vt 0.189815 0.409091 +vt 0.189815 0.511364 +vt 0.185185 0.511364 +vt 0.189815 0.454545 +vt 0.185185 0.454545 +vt 0.185185 0.465909 +vt 0.189815 0.477273 +vt 0.185185 0.477273 +vt 0.189815 0.420455 +vt 0.185185 0.420455 +vt 0.189815 0.522727 +vt 0.185185 0.522727 +vt 0.189815 0.465909 +vt 0.185185 0.488636 +vt 0.189815 0.431818 +vt 0.185185 0.534091 +vt 0.189815 0.534091 +vt 0.210648 0.437320 +vt 0.196742 0.427467 +vt 0.210648 0.397907 +vt 0.196303 0.446021 +vt 0.220365 0.446021 +vt 0.208334 0.471595 +vt 0.185185 0.397727 +vt 0.224554 0.427467 +vt 0.218677 0.434680 +vt 0.202619 0.434680 +vt 0.194591 0.417614 +vt 0.196742 0.407760 +vt 0.202619 0.400547 +vt 0.218677 0.400547 +vt 0.224554 0.407760 +vt 0.226705 0.417614 +vt 0.201388 0.469311 +vt 0.196303 0.463070 +vt 0.194441 0.454545 +vt 0.201388 0.439780 +vt 0.208334 0.437496 +vt 0.215280 0.439780 +vt 0.222226 0.454545 +vt 0.220365 0.463070 +vt 0.215280 0.469311 +vt 0.111111 0.488636 +vt 0.111111 0.431818 +vt 0.111111 0.397727 +vt 0.111111 0.500000 +vt 0.111111 0.443182 +vt 0.111111 0.465909 +vt 0.111111 0.409091 +vt 0.111111 0.511364 +vt 0.111111 0.454545 +vt 0.111111 0.477273 +vt 0.111111 0.420455 +vt 0.111111 0.522727 +vt 0.194444 0.454545 +vt 0.194444 0.477273 +vt 0.194444 0.420455 +vt 0.194444 0.522727 +vt 0.194444 0.465909 +vt 0.194444 0.488636 +vt 0.194444 0.431818 +vt 0.194444 0.534091 +vt 0.194444 0.500000 +vt 0.194444 0.443182 +vt 0.194444 0.409091 +vt 0.194444 0.511364 +vt 0.111111 0.534091 +vt 0.194444 0.397727 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 -0.0000 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.8660 0.5000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.0000 -1.0000 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +s off +f 4/1/1 27/2/1 28/3/1 +f 10/4/1 35/5/1 11/6/1 +f 8/7/1 31/8/1 32/9/1 +f 4/1/1 29/10/1 5/11/1 +f 11/6/1 36/12/1 12/13/1 +f 1/14/1 26/15/1 2/16/1 +f 8/7/1 33/17/1 9/18/1 +f 5/11/1 30/19/1 6/20/1 +f 1/14/1 36/12/1 25/21/1 +f 2/16/1 27/2/1 3/22/1 +f 10/4/1 33/17/1 34/23/1 +f 7/24/1 30/19/1 31/25/1 +f 37/26/2 47/27/2 43/28/2 +f 17/29/1 21/30/1 13/31/1 +f 4/1/1 3/22/1 27/2/1 +f 10/4/1 34/23/1 35/5/1 +f 8/7/1 7/32/1 31/8/1 +f 4/1/1 28/3/1 29/10/1 +f 11/6/1 35/5/1 36/12/1 +f 1/14/1 25/21/1 26/15/1 +f 8/7/1 32/9/1 33/17/1 +f 5/11/1 29/10/1 30/19/1 +f 1/14/1 12/13/1 36/12/1 +f 2/16/1 26/15/1 27/2/1 +f 10/4/1 9/18/1 33/17/1 +f 7/24/1 6/20/1 30/19/1 +f 39/33/2 38/34/2 37/26/2 +f 37/26/2 48/35/2 47/27/2 +f 47/27/2 46/36/2 43/28/2 +f 46/36/2 45/37/2 43/28/2 +f 45/37/2 44/38/2 43/28/2 +f 43/28/2 42/39/2 41/40/2 +f 41/40/2 40/41/2 43/28/2 +f 40/41/2 39/33/2 43/28/2 +f 39/33/2 37/26/2 43/28/2 +f 13/31/1 14/42/1 15/43/1 +f 15/43/1 16/44/1 17/29/1 +f 17/29/1 18/45/1 21/30/1 +f 18/45/1 19/46/1 21/30/1 +f 19/46/1 20/47/1 21/30/1 +f 21/30/1 22/48/1 23/49/1 +f 23/49/1 24/50/1 13/31/1 +f 13/31/1 15/43/1 17/29/1 +f 21/30/1 23/49/1 13/31/1 +s 1 +f 4/1/3 15/51/4 3/22/4 +f 11/6/5 22/52/6 10/4/6 +f 8/7/7 19/53/8 7/32/8 +f 5/11/9 16/54/3 4/1/3 +f 12/13/10 23/55/5 11/6/5 +f 2/16/11 13/56/12 1/14/12 +f 9/18/13 20/57/7 8/7/7 +f 6/20/14 17/58/9 5/11/9 +f 1/14/12 24/59/10 12/13/10 +f 3/22/4 14/60/11 2/16/11 +f 10/4/6 21/61/13 9/18/13 +f 7/24/8 18/62/14 6/20/14 +f 35/5/5 48/63/10 36/12/10 +f 25/21/12 38/64/11 26/15/11 +f 32/9/7 45/65/13 33/17/13 +f 29/10/9 42/66/14 30/19/14 +f 36/12/10 37/67/12 25/21/12 +f 26/15/11 39/68/4 27/2/4 +f 33/17/13 46/69/6 34/23/6 +f 30/19/14 43/70/8 31/25/8 +f 27/2/4 40/71/3 28/3/3 +f 34/23/6 47/72/5 35/5/5 +f 31/8/8 44/73/7 32/9/7 +f 28/3/3 41/74/9 29/10/9 +f 4/1/3 16/54/3 15/51/4 +f 11/6/5 23/55/5 22/52/6 +f 8/7/7 20/57/7 19/53/8 +f 5/11/9 17/58/9 16/54/3 +f 12/13/10 24/59/10 23/55/5 +f 2/16/11 14/60/11 13/56/12 +f 9/18/13 21/61/13 20/57/7 +f 6/20/14 18/62/14 17/58/9 +f 1/14/12 13/56/12 24/59/10 +f 3/22/4 15/51/4 14/60/11 +f 10/4/6 22/52/6 21/61/13 +f 7/24/8 19/75/8 18/62/14 +f 35/5/5 47/72/5 48/63/10 +f 25/21/12 37/67/12 38/64/11 +f 32/9/7 44/73/7 45/65/13 +f 29/10/9 41/74/9 42/66/14 +f 36/12/10 48/63/10 37/67/12 +f 26/15/11 38/64/11 39/68/4 +f 33/17/13 45/65/13 46/69/6 +f 30/19/14 42/66/14 43/70/8 +f 27/2/4 39/68/4 40/71/3 +f 34/23/6 46/69/6 47/72/5 +f 31/8/8 43/76/8 44/73/7 +f 28/3/3 40/71/3 41/74/9 +o Shell2 +v -0.250000 0.937500 0.000000 +v -0.343750 0.912380 0.000000 +v -0.412380 0.843750 0.000000 +v -0.437500 0.750000 0.000000 +v -0.412380 0.656250 0.000000 +v -0.343750 0.587620 0.000000 +v -0.250000 0.562500 0.000000 +v -0.156250 0.587620 0.000000 +v -0.087620 0.656250 0.000000 +v -0.062500 0.750000 0.000000 +v -0.087620 0.843750 0.000000 +v -0.156250 0.912380 0.000000 +v -0.250000 0.937500 1.000000 +v -0.343750 0.912380 1.000000 +v -0.412380 0.843750 1.000000 +v -0.437500 0.750000 1.000000 +v -0.412380 0.656250 1.000000 +v -0.343750 0.587620 1.000000 +v -0.250000 0.562500 1.000000 +v -0.156250 0.587620 1.000000 +v -0.087620 0.656250 1.000000 +v -0.062500 0.750000 1.000000 +v -0.087620 0.843750 1.000000 +v -0.156250 0.912380 1.000000 +v -0.250000 0.960938 0.000000 +v -0.355469 0.932677 0.000000 +v -0.432677 0.855469 0.000000 +v -0.460938 0.750000 0.000000 +v -0.432677 0.644531 0.000000 +v -0.355469 0.567323 0.000000 +v -0.250000 0.539062 0.000000 +v -0.144531 0.567322 0.000000 +v -0.067323 0.644531 0.000000 +v -0.039062 0.750000 0.000000 +v -0.067323 0.855469 0.000000 +v -0.144531 0.932677 0.000000 +v -0.250000 0.960938 -0.062500 +v -0.355469 0.932677 -0.062500 +v -0.432677 0.855469 -0.062500 +v -0.460938 0.750000 -0.062500 +v -0.432677 0.644531 -0.062500 +v -0.355469 0.567323 -0.062500 +v -0.250000 0.539062 -0.062500 +v -0.144531 0.567322 -0.062500 +v -0.067323 0.644531 -0.062500 +v -0.039062 0.750000 -0.062500 +v -0.067323 0.855469 -0.062500 +v -0.144531 0.932677 -0.062500 +vt 0.185185 0.500000 +vt 0.189815 0.488636 +vt 0.189815 0.500000 +vt 0.185185 0.431818 +vt 0.189815 0.443182 +vt 0.185185 0.443182 +vt 0.185185 0.409091 +vt 0.189815 0.397727 +vt 0.189815 0.409091 +vt 0.189815 0.511364 +vt 0.185185 0.511364 +vt 0.189815 0.454545 +vt 0.185185 0.454545 +vt 0.185185 0.465909 +vt 0.189815 0.477273 +vt 0.185185 0.477273 +vt 0.189815 0.420455 +vt 0.185185 0.420455 +vt 0.189815 0.522727 +vt 0.185185 0.522727 +vt 0.189815 0.465909 +vt 0.185185 0.488636 +vt 0.189815 0.431818 +vt 0.185185 0.534091 +vt 0.189815 0.534091 +vt 0.210648 0.437320 +vt 0.196742 0.427467 +vt 0.210648 0.397907 +vt 0.196303 0.446021 +vt 0.220365 0.446021 +vt 0.208334 0.471595 +vt 0.185185 0.397727 +vt 0.224554 0.427467 +vt 0.218677 0.434680 +vt 0.202619 0.434680 +vt 0.194591 0.417614 +vt 0.196742 0.407760 +vt 0.202619 0.400547 +vt 0.218677 0.400547 +vt 0.224554 0.407760 +vt 0.226705 0.417614 +vt 0.201388 0.469311 +vt 0.196303 0.463070 +vt 0.194441 0.454545 +vt 0.201388 0.439780 +vt 0.208334 0.437496 +vt 0.215280 0.439780 +vt 0.222226 0.454545 +vt 0.220365 0.463070 +vt 0.215280 0.469311 +vt 0.111111 0.488636 +vt 0.111111 0.431818 +vt 0.111111 0.397727 +vt 0.111111 0.500000 +vt 0.111111 0.443182 +vt 0.111111 0.465909 +vt 0.111111 0.409091 +vt 0.111111 0.511364 +vt 0.111111 0.454545 +vt 0.111111 0.477273 +vt 0.111111 0.420455 +vt 0.111111 0.522727 +vt 0.194444 0.454545 +vt 0.194444 0.477273 +vt 0.194444 0.420455 +vt 0.194444 0.522727 +vt 0.194444 0.465909 +vt 0.194444 0.488636 +vt 0.194444 0.431818 +vt 0.194444 0.534091 +vt 0.194444 0.500000 +vt 0.194444 0.443182 +vt 0.194444 0.409091 +vt 0.194444 0.511364 +vt 0.111111 0.534091 +vt 0.194444 0.397727 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 -0.0000 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.8660 0.5000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.0000 -1.0000 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +s off +f 52/77/15 75/78/15 76/79/15 +f 58/80/15 83/81/15 59/82/15 +f 56/83/15 79/84/15 80/85/15 +f 52/77/15 77/86/15 53/87/15 +f 59/82/15 84/88/15 60/89/15 +f 49/90/15 74/91/15 50/92/15 +f 56/83/15 81/93/15 57/94/15 +f 53/87/15 78/95/15 54/96/15 +f 49/90/15 84/88/15 73/97/15 +f 50/92/15 75/78/15 51/98/15 +f 58/80/15 81/93/15 82/99/15 +f 55/100/15 78/95/15 79/101/15 +f 85/102/16 95/103/16 91/104/16 +f 65/105/15 69/106/15 61/107/15 +f 52/77/15 51/98/15 75/78/15 +f 58/80/15 82/99/15 83/81/15 +f 56/83/15 55/108/15 79/84/15 +f 52/77/15 76/79/15 77/86/15 +f 59/82/15 83/81/15 84/88/15 +f 49/90/15 73/97/15 74/91/15 +f 56/83/15 80/85/15 81/93/15 +f 53/87/15 77/86/15 78/95/15 +f 49/90/15 60/89/15 84/88/15 +f 50/92/15 74/91/15 75/78/15 +f 58/80/15 57/94/15 81/93/15 +f 55/100/15 54/96/15 78/95/15 +f 87/109/16 86/110/16 85/102/16 +f 85/102/16 96/111/16 95/103/16 +f 95/103/16 94/112/16 91/104/16 +f 94/112/16 93/113/16 91/104/16 +f 93/113/16 92/114/16 91/104/16 +f 91/104/16 90/115/16 89/116/16 +f 89/116/16 88/117/16 91/104/16 +f 88/117/16 87/109/16 91/104/16 +f 87/109/16 85/102/16 91/104/16 +f 61/107/15 62/118/15 63/119/15 +f 63/119/15 64/120/15 65/105/15 +f 65/105/15 66/121/15 69/106/15 +f 66/121/15 67/122/15 69/106/15 +f 67/122/15 68/123/15 69/106/15 +f 69/106/15 70/124/15 71/125/15 +f 71/125/15 72/126/15 61/107/15 +f 61/107/15 63/119/15 65/105/15 +f 69/106/15 71/125/15 61/107/15 +s 1 +f 52/77/17 63/127/18 51/98/18 +f 59/82/19 70/128/20 58/80/20 +f 56/83/21 67/129/22 55/108/22 +f 53/87/23 64/130/17 52/77/17 +f 60/89/24 71/131/19 59/82/19 +f 50/92/25 61/132/26 49/90/26 +f 57/94/27 68/133/21 56/83/21 +f 54/96/28 65/134/23 53/87/23 +f 49/90/26 72/135/24 60/89/24 +f 51/98/18 62/136/25 50/92/25 +f 58/80/20 69/137/27 57/94/27 +f 55/100/22 66/138/28 54/96/28 +f 83/81/19 96/139/24 84/88/24 +f 73/97/26 86/140/25 74/91/25 +f 80/85/21 93/141/27 81/93/27 +f 77/86/23 90/142/28 78/95/28 +f 84/88/24 85/143/26 73/97/26 +f 74/91/25 87/144/18 75/78/18 +f 81/93/27 94/145/20 82/99/20 +f 78/95/28 91/146/22 79/101/22 +f 75/78/18 88/147/17 76/79/17 +f 82/99/20 95/148/19 83/81/19 +f 79/84/22 92/149/21 80/85/21 +f 76/79/17 89/150/23 77/86/23 +f 52/77/17 64/130/17 63/127/18 +f 59/82/19 71/131/19 70/128/20 +f 56/83/21 68/133/21 67/129/22 +f 53/87/23 65/134/23 64/130/17 +f 60/89/24 72/135/24 71/131/19 +f 50/92/25 62/136/25 61/132/26 +f 57/94/27 69/137/27 68/133/21 +f 54/96/28 66/138/28 65/134/23 +f 49/90/26 61/132/26 72/135/24 +f 51/98/18 63/127/18 62/136/25 +f 58/80/20 70/128/20 69/137/27 +f 55/100/22 67/151/22 66/138/28 +f 83/81/19 95/148/19 96/139/24 +f 73/97/26 85/143/26 86/140/25 +f 80/85/21 92/149/21 93/141/27 +f 77/86/23 89/150/23 90/142/28 +f 84/88/24 96/139/24 85/143/26 +f 74/91/25 86/140/25 87/144/18 +f 81/93/27 93/141/27 94/145/20 +f 78/95/28 90/142/28 91/146/22 +f 75/78/18 87/144/18 88/147/17 +f 82/99/20 94/145/20 95/148/19 +f 79/84/22 91/152/22 92/149/21 +f 76/79/17 88/147/17 89/150/23 +o Shell1 +v 0.250000 0.937500 0.000000 +v 0.156250 0.912380 0.000000 +v 0.087620 0.843750 0.000000 +v 0.062500 0.750000 0.000000 +v 0.087620 0.656250 0.000000 +v 0.156250 0.587620 0.000000 +v 0.250000 0.562500 0.000000 +v 0.343750 0.587620 0.000000 +v 0.412380 0.656250 0.000000 +v 0.437500 0.750000 0.000000 +v 0.412380 0.843750 0.000000 +v 0.343750 0.912380 0.000000 +v 0.250000 0.937500 1.000000 +v 0.156250 0.912380 1.000000 +v 0.087620 0.843750 1.000000 +v 0.062500 0.750000 1.000000 +v 0.087620 0.656250 1.000000 +v 0.156250 0.587620 1.000000 +v 0.250000 0.562500 1.000000 +v 0.343750 0.587620 1.000000 +v 0.412380 0.656250 1.000000 +v 0.437500 0.750000 1.000000 +v 0.412380 0.843750 1.000000 +v 0.343750 0.912380 1.000000 +v 0.250000 0.960938 0.000000 +v 0.144531 0.932677 0.000000 +v 0.067323 0.855469 0.000000 +v 0.039062 0.750000 0.000000 +v 0.067323 0.644531 0.000000 +v 0.144531 0.567323 0.000000 +v 0.250000 0.539062 0.000000 +v 0.355469 0.567322 0.000000 +v 0.432677 0.644531 0.000000 +v 0.460938 0.750000 0.000000 +v 0.432677 0.855469 0.000000 +v 0.355469 0.932677 0.000000 +v 0.250000 0.960938 -0.062500 +v 0.144531 0.932677 -0.062500 +v 0.067323 0.855469 -0.062500 +v 0.039062 0.750000 -0.062500 +v 0.067323 0.644531 -0.062500 +v 0.144531 0.567323 -0.062500 +v 0.250000 0.539062 -0.062500 +v 0.355469 0.567322 -0.062500 +v 0.432677 0.644531 -0.062500 +v 0.460938 0.750000 -0.062500 +v 0.432677 0.855469 -0.062500 +v 0.355469 0.932677 -0.062500 +vt 0.185185 0.500000 +vt 0.189815 0.488636 +vt 0.189815 0.500000 +vt 0.185185 0.431818 +vt 0.189815 0.443182 +vt 0.185185 0.443182 +vt 0.185185 0.409091 +vt 0.189815 0.397727 +vt 0.189815 0.409091 +vt 0.189815 0.511364 +vt 0.185185 0.511364 +vt 0.189815 0.454545 +vt 0.185185 0.454545 +vt 0.185185 0.465909 +vt 0.189815 0.477273 +vt 0.185185 0.477273 +vt 0.189815 0.420455 +vt 0.185185 0.420455 +vt 0.189815 0.522727 +vt 0.185185 0.522727 +vt 0.189815 0.465909 +vt 0.185185 0.488636 +vt 0.189815 0.431818 +vt 0.185185 0.534091 +vt 0.189815 0.534091 +vt 0.210648 0.437320 +vt 0.196742 0.427467 +vt 0.210648 0.397907 +vt 0.196303 0.446021 +vt 0.220365 0.446021 +vt 0.208334 0.471595 +vt 0.185185 0.397727 +vt 0.224554 0.427467 +vt 0.218677 0.434680 +vt 0.202619 0.434680 +vt 0.194591 0.417614 +vt 0.196742 0.407760 +vt 0.202619 0.400547 +vt 0.218677 0.400547 +vt 0.224554 0.407760 +vt 0.226705 0.417614 +vt 0.201388 0.469311 +vt 0.196303 0.463070 +vt 0.194441 0.454545 +vt 0.201388 0.439780 +vt 0.208334 0.437496 +vt 0.215280 0.439780 +vt 0.222226 0.454545 +vt 0.220365 0.463070 +vt 0.215280 0.469311 +vt 0.111111 0.488636 +vt 0.111111 0.431818 +vt 0.111111 0.397727 +vt 0.111111 0.500000 +vt 0.111111 0.443182 +vt 0.111111 0.465909 +vt 0.111111 0.409091 +vt 0.111111 0.511364 +vt 0.111111 0.454545 +vt 0.111111 0.477273 +vt 0.111111 0.420455 +vt 0.111111 0.522727 +vt 0.194444 0.454545 +vt 0.194444 0.477273 +vt 0.194444 0.420455 +vt 0.194444 0.522727 +vt 0.194444 0.465909 +vt 0.194444 0.488636 +vt 0.194444 0.431818 +vt 0.194444 0.534091 +vt 0.194444 0.500000 +vt 0.194444 0.443182 +vt 0.194444 0.409091 +vt 0.194444 0.511364 +vt 0.111111 0.534091 +vt 0.194444 0.397727 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 -0.0000 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.8660 0.5000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.0000 -1.0000 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +s off +f 100/153/29 123/154/29 124/155/29 +f 106/156/29 131/157/29 107/158/29 +f 104/159/29 127/160/29 128/161/29 +f 100/153/29 125/162/29 101/163/29 +f 107/158/29 132/164/29 108/165/29 +f 97/166/29 122/167/29 98/168/29 +f 104/159/29 129/169/29 105/170/29 +f 101/163/29 126/171/29 102/172/29 +f 97/166/29 132/164/29 121/173/29 +f 98/168/29 123/154/29 99/174/29 +f 106/156/29 129/169/29 130/175/29 +f 103/176/29 126/171/29 127/177/29 +f 133/178/30 143/179/30 139/180/30 +f 113/181/29 117/182/29 109/183/29 +f 100/153/29 99/174/29 123/154/29 +f 106/156/29 130/175/29 131/157/29 +f 104/159/29 103/184/29 127/160/29 +f 100/153/29 124/155/29 125/162/29 +f 107/158/29 131/157/29 132/164/29 +f 97/166/29 121/173/29 122/167/29 +f 104/159/29 128/161/29 129/169/29 +f 101/163/29 125/162/29 126/171/29 +f 97/166/29 108/165/29 132/164/29 +f 98/168/29 122/167/29 123/154/29 +f 106/156/29 105/170/29 129/169/29 +f 103/176/29 102/172/29 126/171/29 +f 135/185/30 134/186/30 133/178/30 +f 133/178/30 144/187/30 143/179/30 +f 143/179/30 142/188/30 139/180/30 +f 142/188/30 141/189/30 139/180/30 +f 141/189/30 140/190/30 139/180/30 +f 139/180/30 138/191/30 137/192/30 +f 137/192/30 136/193/30 139/180/30 +f 136/193/30 135/185/30 139/180/30 +f 135/185/30 133/178/30 139/180/30 +f 109/183/29 110/194/29 111/195/29 +f 111/195/29 112/196/29 113/181/29 +f 113/181/29 114/197/29 117/182/29 +f 114/197/29 115/198/29 117/182/29 +f 115/198/29 116/199/29 117/182/29 +f 117/182/29 118/200/29 119/201/29 +f 119/201/29 120/202/29 109/183/29 +f 109/183/29 111/195/29 113/181/29 +f 117/182/29 119/201/29 109/183/29 +s 1 +f 100/153/31 111/203/32 99/174/32 +f 107/158/33 118/204/34 106/156/34 +f 104/159/35 115/205/36 103/184/36 +f 101/163/37 112/206/31 100/153/31 +f 108/165/38 119/207/33 107/158/33 +f 98/168/39 109/208/40 97/166/40 +f 105/170/41 116/209/35 104/159/35 +f 102/172/42 113/210/37 101/163/37 +f 97/166/40 120/211/38 108/165/38 +f 99/174/32 110/212/39 98/168/39 +f 106/156/34 117/213/41 105/170/41 +f 103/176/36 114/214/42 102/172/42 +f 131/157/33 144/215/38 132/164/38 +f 121/173/40 134/216/39 122/167/39 +f 128/161/35 141/217/41 129/169/41 +f 125/162/37 138/218/42 126/171/42 +f 132/164/38 133/219/40 121/173/40 +f 122/167/39 135/220/32 123/154/32 +f 129/169/41 142/221/34 130/175/34 +f 126/171/42 139/222/36 127/177/36 +f 123/154/32 136/223/31 124/155/31 +f 130/175/34 143/224/33 131/157/33 +f 127/160/36 140/225/35 128/161/35 +f 124/155/31 137/226/37 125/162/37 +f 100/153/31 112/206/31 111/203/32 +f 107/158/33 119/207/33 118/204/34 +f 104/159/35 116/209/35 115/205/36 +f 101/163/37 113/210/37 112/206/31 +f 108/165/38 120/211/38 119/207/33 +f 98/168/39 110/212/39 109/208/40 +f 105/170/41 117/213/41 116/209/35 +f 102/172/42 114/214/42 113/210/37 +f 97/166/40 109/208/40 120/211/38 +f 99/174/32 111/203/32 110/212/39 +f 106/156/34 118/204/34 117/213/41 +f 103/176/36 115/227/36 114/214/42 +f 131/157/33 143/224/33 144/215/38 +f 121/173/40 133/219/40 134/216/39 +f 128/161/35 140/225/35 141/217/41 +f 125/162/37 137/226/37 138/218/42 +f 132/164/38 144/215/38 133/219/40 +f 122/167/39 134/216/39 135/220/32 +f 129/169/41 141/217/41 142/221/34 +f 126/171/42 138/218/42 139/222/36 +f 123/154/32 135/220/32 136/223/31 +f 130/175/34 142/221/34 143/224/33 +f 127/160/36 139/228/36 140/225/35 +f 124/155/31 136/223/31 137/226/37 +o Shell3 +v 0.250000 0.437500 0.000000 +v 0.156250 0.412380 0.000000 +v 0.087620 0.343750 0.000000 +v 0.062500 0.250000 0.000000 +v 0.087620 0.156250 0.000000 +v 0.156250 0.087620 0.000000 +v 0.250000 0.062500 0.000000 +v 0.343750 0.087620 0.000000 +v 0.412380 0.156250 0.000000 +v 0.437500 0.250000 0.000000 +v 0.412380 0.343750 0.000000 +v 0.343750 0.412380 0.000000 +v 0.250000 0.437500 1.000000 +v 0.156250 0.412380 1.000000 +v 0.087620 0.343750 1.000000 +v 0.062500 0.250000 1.000000 +v 0.087620 0.156250 1.000000 +v 0.156250 0.087620 1.000000 +v 0.250000 0.062500 1.000000 +v 0.343750 0.087620 1.000000 +v 0.412380 0.156250 1.000000 +v 0.437500 0.250000 1.000000 +v 0.412380 0.343750 1.000000 +v 0.343750 0.412380 1.000000 +v 0.250000 0.460938 0.000000 +v 0.144531 0.432677 0.000000 +v 0.067323 0.355469 0.000000 +v 0.039062 0.250000 0.000000 +v 0.067323 0.144531 0.000000 +v 0.144531 0.067323 0.000000 +v 0.250000 0.039062 0.000000 +v 0.355469 0.067322 0.000000 +v 0.432677 0.144531 0.000000 +v 0.460938 0.250000 0.000000 +v 0.432677 0.355469 0.000000 +v 0.355469 0.432677 0.000000 +v 0.250000 0.460938 -0.062500 +v 0.144531 0.432677 -0.062500 +v 0.067323 0.355469 -0.062500 +v 0.039062 0.250000 -0.062500 +v 0.067323 0.144531 -0.062500 +v 0.144531 0.067323 -0.062500 +v 0.250000 0.039062 -0.062500 +v 0.355469 0.067322 -0.062500 +v 0.432677 0.144531 -0.062500 +v 0.460938 0.250000 -0.062500 +v 0.432677 0.355469 -0.062500 +v 0.355469 0.432677 -0.062500 +vt 0.185185 0.500000 +vt 0.189815 0.488636 +vt 0.189815 0.500000 +vt 0.185185 0.431818 +vt 0.189815 0.443182 +vt 0.185185 0.443182 +vt 0.185185 0.409091 +vt 0.189815 0.397727 +vt 0.189815 0.409091 +vt 0.189815 0.511364 +vt 0.185185 0.511364 +vt 0.189815 0.454545 +vt 0.185185 0.454545 +vt 0.185185 0.465909 +vt 0.189815 0.477273 +vt 0.185185 0.477273 +vt 0.189815 0.420455 +vt 0.185185 0.420455 +vt 0.189815 0.522727 +vt 0.185185 0.522727 +vt 0.189815 0.465909 +vt 0.185185 0.488636 +vt 0.189815 0.431818 +vt 0.185185 0.534091 +vt 0.189815 0.534091 +vt 0.210648 0.437320 +vt 0.196742 0.427467 +vt 0.210648 0.397907 +vt 0.196303 0.446021 +vt 0.220365 0.446021 +vt 0.208334 0.471595 +vt 0.185185 0.397727 +vt 0.224554 0.427467 +vt 0.218677 0.434680 +vt 0.202619 0.434680 +vt 0.194591 0.417614 +vt 0.196742 0.407760 +vt 0.202619 0.400547 +vt 0.218677 0.400547 +vt 0.224554 0.407760 +vt 0.226705 0.417614 +vt 0.201388 0.469311 +vt 0.196303 0.463070 +vt 0.194441 0.454545 +vt 0.201388 0.439780 +vt 0.208334 0.437496 +vt 0.215280 0.439780 +vt 0.222226 0.454545 +vt 0.220365 0.463070 +vt 0.215280 0.469311 +vt 0.111111 0.488636 +vt 0.111111 0.431818 +vt 0.111111 0.397727 +vt 0.111111 0.500000 +vt 0.111111 0.443182 +vt 0.111111 0.465909 +vt 0.111111 0.409091 +vt 0.111111 0.511364 +vt 0.111111 0.454545 +vt 0.111111 0.477273 +vt 0.111111 0.420455 +vt 0.111111 0.522727 +vt 0.194444 0.454545 +vt 0.194444 0.477273 +vt 0.194444 0.420455 +vt 0.194444 0.522727 +vt 0.194444 0.465909 +vt 0.194444 0.488636 +vt 0.194444 0.431818 +vt 0.194444 0.534091 +vt 0.194444 0.500000 +vt 0.194444 0.443182 +vt 0.194444 0.409091 +vt 0.194444 0.511364 +vt 0.111111 0.534091 +vt 0.194444 0.397727 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 -0.0000 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.8660 0.5000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.0000 -1.0000 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +s off +f 148/229/43 171/230/43 172/231/43 +f 154/232/43 179/233/43 155/234/43 +f 152/235/43 175/236/43 176/237/43 +f 148/229/43 173/238/43 149/239/43 +f 155/234/43 180/240/43 156/241/43 +f 145/242/43 170/243/43 146/244/43 +f 152/235/43 177/245/43 153/246/43 +f 149/239/43 174/247/43 150/248/43 +f 145/242/43 180/240/43 169/249/43 +f 146/244/43 171/230/43 147/250/43 +f 154/232/43 177/245/43 178/251/43 +f 151/252/43 174/247/43 175/253/43 +f 181/254/44 191/255/44 187/256/44 +f 161/257/43 165/258/43 157/259/43 +f 148/229/43 147/250/43 171/230/43 +f 154/232/43 178/251/43 179/233/43 +f 152/235/43 151/260/43 175/236/43 +f 148/229/43 172/231/43 173/238/43 +f 155/234/43 179/233/43 180/240/43 +f 145/242/43 169/249/43 170/243/43 +f 152/235/43 176/237/43 177/245/43 +f 149/239/43 173/238/43 174/247/43 +f 145/242/43 156/241/43 180/240/43 +f 146/244/43 170/243/43 171/230/43 +f 154/232/43 153/246/43 177/245/43 +f 151/252/43 150/248/43 174/247/43 +f 183/261/44 182/262/44 181/254/44 +f 181/254/44 192/263/44 191/255/44 +f 191/255/44 190/264/44 187/256/44 +f 190/264/44 189/265/44 187/256/44 +f 189/265/44 188/266/44 187/256/44 +f 187/256/44 186/267/44 185/268/44 +f 185/268/44 184/269/44 187/256/44 +f 184/269/44 183/261/44 187/256/44 +f 183/261/44 181/254/44 187/256/44 +f 157/259/43 158/270/43 159/271/43 +f 159/271/43 160/272/43 161/257/43 +f 161/257/43 162/273/43 165/258/43 +f 162/273/43 163/274/43 165/258/43 +f 163/274/43 164/275/43 165/258/43 +f 165/258/43 166/276/43 167/277/43 +f 167/277/43 168/278/43 157/259/43 +f 157/259/43 159/271/43 161/257/43 +f 165/258/43 167/277/43 157/259/43 +s 1 +f 148/229/45 159/279/46 147/250/46 +f 155/234/47 166/280/48 154/232/48 +f 152/235/49 163/281/50 151/260/50 +f 149/239/51 160/282/45 148/229/45 +f 156/241/52 167/283/47 155/234/47 +f 146/244/53 157/284/54 145/242/54 +f 153/246/55 164/285/49 152/235/49 +f 150/248/56 161/286/51 149/239/51 +f 145/242/54 168/287/52 156/241/52 +f 147/250/46 158/288/53 146/244/53 +f 154/232/48 165/289/55 153/246/55 +f 151/252/50 162/290/56 150/248/56 +f 179/233/47 192/291/52 180/240/52 +f 169/249/54 182/292/53 170/243/53 +f 176/237/49 189/293/55 177/245/55 +f 173/238/51 186/294/56 174/247/56 +f 180/240/52 181/295/54 169/249/54 +f 170/243/53 183/296/46 171/230/46 +f 177/245/55 190/297/48 178/251/48 +f 174/247/56 187/298/50 175/253/50 +f 171/230/46 184/299/45 172/231/45 +f 178/251/48 191/300/47 179/233/47 +f 175/236/50 188/301/49 176/237/49 +f 172/231/45 185/302/51 173/238/51 +f 148/229/45 160/282/45 159/279/46 +f 155/234/47 167/283/47 166/280/48 +f 152/235/49 164/285/49 163/281/50 +f 149/239/51 161/286/51 160/282/45 +f 156/241/52 168/287/52 167/283/47 +f 146/244/53 158/288/53 157/284/54 +f 153/246/55 165/289/55 164/285/49 +f 150/248/56 162/290/56 161/286/51 +f 145/242/54 157/284/54 168/287/52 +f 147/250/46 159/279/46 158/288/53 +f 154/232/48 166/280/48 165/289/55 +f 151/252/50 163/303/50 162/290/56 +f 179/233/47 191/300/47 192/291/52 +f 169/249/54 181/295/54 182/292/53 +f 176/237/49 188/301/49 189/293/55 +f 173/238/51 185/302/51 186/294/56 +f 180/240/52 192/291/52 181/295/54 +f 170/243/53 182/292/53 183/296/46 +f 177/245/55 189/293/55 190/297/48 +f 174/247/56 186/294/56 187/298/50 +f 171/230/46 183/296/46 184/299/45 +f 178/251/48 190/297/48 191/300/47 +f 175/236/50 187/304/50 188/301/49 +f 172/231/45 184/299/45 185/302/51 +o Barrel v 0.466506 0.375000 0.000000 v 0.466506 0.375000 7.250000 v 0.500000 0.250000 0.000000 @@ -141,12 +1073,6 @@ v 0.375000 0.500000 0.000000 v 0.375000 0.500000 7.250000 v -0.375000 0.500000 0.000000 v -0.375000 0.500000 7.250000 -v -0.500000 0.000000 0.000000 -v 0.500000 0.000000 0.000000 -v -0.500000 1.000000 -0.750000 -v -0.500000 1.000000 0.000000 -v 0.500000 1.000000 0.000000 -v 0.500000 1.000000 -0.750000 v 0.187500 -0.750000 0.500000 v -0.187500 -0.750000 0.500000 v -0.625000 -0.500000 0.656250 @@ -173,32 +1099,6 @@ v 0.187500 -0.250000 1.375000 v -0.187500 -0.250000 1.375000 v 0.187500 0.000000 1.875000 v -0.187500 0.000000 1.875000 -v 0.500000 0.500000 0.000000 -v 0.500000 0.500000 -0.750000 -v 0.500000 0.000000 1.000000 -v -0.500000 0.000000 1.000000 -v -0.500000 0.500000 0.000000 -v -0.500000 0.500000 -0.750000 -v 0.625000 0.500000 0.000000 -v 0.625000 0.500000 -0.750000 -v 0.625000 0.000000 1.000000 -v -0.625000 0.000000 1.000000 -v -0.625000 0.500000 0.000000 -v -0.625000 0.500000 -0.750000 -v 0.500000 -0.125000 1.000000 -v -0.500000 -0.125000 1.000000 -v 0.625000 0.000000 -0.750000 -v -0.625000 0.000000 -0.750000 -v 0.500000 -0.125000 -0.750000 -v -0.500000 -0.125000 -0.750000 -v 0.500000 1.000000 0.000000 -v 0.125000 1.000000 0.000000 -v 0.500000 1.312500 -0.312500 -v 0.125000 1.312500 -0.312500 -v 0.500000 1.312500 -0.625000 -v 0.125000 1.312500 -0.625000 -v 0.500000 1.000000 -0.625000 -v 0.125000 1.000000 -0.625000 v -0.500000 1.000000 1.000000 v -0.500000 1.000000 0.000000 v -0.250000 1.000000 1.000000 @@ -227,50 +1127,6 @@ v 0.250000 1.000000 0.500000 v 0.250000 1.312500 0.500000 v 0.250000 1.000000 0.000000 v 0.250000 1.312500 0.000000 -v 0.125000 1.000000 1.000000 -v -0.125000 1.000000 1.000000 -v 0.125000 1.000000 -0.625000 -v -0.125000 1.000000 -0.625000 -v 0.125000 1.312500 1.000000 -v -0.125000 1.312500 1.000000 -v 0.125000 1.312500 -0.625000 -v -0.125000 1.312500 -0.625000 -v 0.500000 1.312500 -0.625000 -v 0.500000 1.000000 -0.625000 -v -0.500000 1.312500 -0.625000 -v -0.500000 1.000000 -0.625000 -v 0.500000 1.000000 -0.875000 -v 0.500000 1.312500 -0.875000 -v -0.500000 1.312500 -0.875000 -v -0.500000 1.000000 -0.875000 -v 0.500000 1.062500 -0.937500 -v 0.500000 1.250000 -0.937500 -v -0.500000 1.250000 -0.937500 -v -0.500000 1.062500 -0.937500 -v 0.187500 -0.750000 0.500000 -v 0.187500 -0.125000 0.250000 -v 0.187500 -0.750000 1.000000 -v 0.187500 -0.125000 1.000000 -v 0.437500 -0.750000 0.500000 -v 0.437500 -0.125000 0.250000 -v 0.437500 -0.750000 1.000000 -v 0.437500 -0.125000 1.000000 -v 0.437500 -0.500000 0.500000 -v 0.437500 -0.323223 0.573223 -v 0.437500 -0.250000 0.750000 -v 0.437500 -0.323223 0.926777 -v 0.437500 -0.500000 1.000000 -v 0.437500 -0.676777 0.926777 -v 0.437500 -0.750000 0.750000 -v 0.437500 -0.676777 0.573223 -v 0.559000 -0.323223 0.573223 -v 0.559000 -0.500000 0.500000 -v 0.559000 -0.250000 0.750000 -v 0.559000 -0.323223 0.926777 -v 0.559000 -0.500000 1.000000 -v 0.559000 -0.676777 0.926777 -v 0.559000 -0.750000 0.750000 -v 0.559000 -0.676777 0.573223 v 0.250000 1.000000 1.000000 v 0.250000 1.312500 1.000000 v 0.250000 1.000000 2.000000 @@ -333,38 +1189,6 @@ v -0.250000 0.000000 4.875000 v -0.250000 -0.250000 6.125000 v -0.250000 -0.250000 6.000000 v -0.250000 0.000000 6.000000 -v -0.500000 0.125000 -0.750000 -v -0.250000 -0.125000 -0.750000 -v 0.250000 -0.125000 -0.750000 -v 0.500000 0.125000 -0.750000 -v -0.250000 0.875000 -0.750000 -v -0.500000 0.625000 -0.750000 -v 0.500000 0.625000 -0.750000 -v 0.250000 0.875000 -0.750000 -v -0.250000 -0.125000 -2.500000 -v -0.500000 0.125000 -2.500000 -v 0.500000 0.125000 -2.500000 -v 0.250000 -0.125000 -2.500000 -v -0.500000 0.625000 -2.500000 -v -0.250000 0.875000 -2.500000 -v 0.250000 0.875000 -2.500000 -v 0.500000 0.625000 -2.500000 -v 0.695083 0.632582 -0.687500 -v 0.750000 0.500000 -0.687500 -v 0.695083 0.367418 -0.687500 -v 0.562500 0.312500 -0.687500 -v 0.429917 0.367417 -0.687500 -v 0.375000 0.500000 -0.687500 -v 0.429917 0.632583 -0.687500 -v 0.562500 0.687500 -0.687500 -v 0.695083 0.632582 -2.562500 -v 0.750000 0.500000 -2.562500 -v 0.562500 0.312500 -2.562500 -v 0.429917 0.367417 -2.562500 -v 0.375000 0.500000 -2.562500 -v 0.429917 0.632583 -2.562500 -v 0.562500 0.687500 -2.562500 -v 0.695083 0.367418 -2.562500 v -0.536612 1.062500 1.224112 v -0.500000 1.062500 1.312500 v -0.536612 1.062500 1.400888 @@ -397,58 +1221,6 @@ v -0.757583 0.187500 1.445082 v -0.812500 0.187500 1.312500 v -0.757583 0.187500 1.179918 v -0.625000 0.187500 1.125000 -v 0.125000 -0.125000 -0.500000 -v -0.125000 -0.125000 -0.500000 -v 0.125000 -2.125000 -1.250000 -v -0.125000 -2.125000 -1.250000 -v 0.125000 -2.125000 -2.000000 -v -0.125000 -2.125000 -2.000000 -v 0.125000 -1.875000 -2.250000 -v -0.125000 -1.875000 -2.250000 -v 0.125000 -0.500000 -1.625000 -v -0.125000 -0.500000 -1.625000 -v 0.125000 -0.250000 -1.625000 -v -0.125000 -0.250000 -1.625000 -v 0.125000 -0.250000 -2.500000 -v -0.125000 -0.250000 -2.500000 -v 0.125000 -0.125000 -2.500000 -v -0.125000 -0.125000 -2.500000 -v 0.125000 -0.125000 -1.500000 -v -0.125000 -0.125000 -1.500000 -v 0.250000 -0.125000 -0.625000 -v 0.250000 -2.125000 -1.375000 -v 0.250000 -2.125000 -1.875000 -v 0.250000 -1.875000 -2.125000 -v 0.250000 -0.500000 -1.500000 -v 0.250000 -0.250000 -1.500000 -v 0.250000 -0.125000 -1.375000 -v -0.250000 -2.125000 -1.375000 -v -0.250000 -0.125000 -0.625000 -v -0.250000 -2.125000 -1.875000 -v -0.250000 -1.875000 -2.125000 -v -0.250000 -0.500000 -1.500000 -v -0.250000 -0.250000 -1.500000 -v -0.250000 -0.125000 -1.375000 -v 0.062500 -2.125000 -1.250000 -v -0.062500 -2.125000 -1.250000 -v 0.062500 -0.375000 0.250000 -v -0.062500 -0.375000 0.250000 -v 0.062500 -0.125000 0.250000 -v -0.062500 -0.125000 0.250000 -v 0.062500 -0.125000 -0.500000 -v -0.062500 -0.125000 -0.500000 -v 0.093750 -0.750000 0.875000 -v -0.093750 -0.750000 0.875000 -v 0.093750 -0.750000 0.687500 -v -0.093750 -0.750000 0.687500 -v 0.093750 -1.750000 0.375000 -v -0.093750 -1.750000 0.375000 -v 0.093750 -1.625000 0.250000 -v -0.093750 -1.625000 0.250000 -v 0.093750 -2.125000 -1.250000 -v -0.093750 -2.125000 -1.250000 -v 0.093750 -2.000000 -1.250000 -v -0.093750 -2.000000 -1.250000 v 0.125000 0.000000 4.750000 v -0.125000 0.000000 4.750000 v 0.125000 -0.750000 3.500000 @@ -459,30 +1231,6 @@ v 0.125000 -0.375000 3.250000 v -0.125000 -0.375000 3.250000 v 0.125000 -0.375000 3.750000 v -0.125000 -0.375000 3.750000 -v 0.000000 0.687500 0.000000 -v -0.093750 0.662380 0.000000 -v -0.162380 0.593750 0.000000 -v -0.187500 0.500000 0.000000 -v -0.162380 0.406250 0.000000 -v -0.093750 0.337620 0.000000 -v 0.000000 0.312500 0.000000 -v 0.093750 0.337620 0.000000 -v 0.162380 0.406250 0.000000 -v 0.187500 0.500000 0.000000 -v 0.162380 0.593750 0.000000 -v 0.093750 0.662380 0.000000 -v 0.062500 0.608253 -0.062500 -v 0.108253 0.562500 -0.062500 -v 0.125000 0.500000 -0.062500 -v 0.108253 0.437500 -0.062500 -v 0.062500 0.391747 -0.062500 -v 0.000000 0.375000 -0.062500 -v -0.062500 0.391747 -0.062500 -v -0.108253 0.437500 -0.062500 -v -0.125000 0.500000 -0.062500 -v -0.108253 0.562500 -0.062500 -v -0.062500 0.608253 -0.062500 -v 0.000000 0.625000 -0.062500 v 0.625000 0.187500 1.125000 v 0.492417 0.187500 1.179918 v 0.437500 0.187500 1.312500 @@ -555,6 +1303,1919 @@ v 0.125000 1.187500 7.000000 v 0.125000 1.187500 6.500000 v -0.125000 1.187500 6.500000 v -0.125000 1.187500 7.000000 +v 0.510000 1.000000 1.000000 +v 0.510000 0.750000 0.000000 +v 0.510000 0.750000 1.000000 +v 0.510000 1.000000 0.000000 +v -0.510000 1.000000 1.000000 +v -0.510000 1.000000 0.000000 +v -0.510000 0.750000 1.000000 +v -0.510000 0.750000 0.000000 +v -0.125000 1.000000 1.000000 +v -0.125000 1.312500 1.000000 +v -0.125000 1.000000 2.000000 +v -0.125000 1.312500 1.250000 +v -0.250000 1.312500 1.000000 +v -0.250000 1.000000 2.000000 +v -0.250000 1.312500 1.250000 +v -0.250000 1.000000 1.000000 +v -0.125000 1.000000 1.000000 +v -0.500000 1.000000 1.000000 +v -0.125000 1.312500 1.000000 +v -0.500000 1.312500 1.000000 +v -0.125000 1.437500 0.875000 +v -0.500000 1.437500 0.875000 +v -0.125000 1.437500 0.625000 +v -0.500000 1.437500 0.625000 +v -0.125000 1.312500 0.500000 +v -0.500000 1.312500 0.500000 +v -0.125000 1.000000 0.500000 +v -0.500000 1.000000 0.500000 +v -0.187500 1.437500 0.875000 +v -0.187500 1.437500 0.625000 +v -0.187500 1.562500 0.875000 +v -0.187500 1.562500 0.625000 +v -0.125000 1.437500 0.625000 +v -0.125000 1.437500 0.875000 +v -0.125000 1.562500 0.625000 +v -0.125000 1.562500 0.875000 +v -0.250000 1.312500 0.500000 +v -0.250000 1.000000 0.500000 +v -0.250000 1.312500 0.000000 +v -0.250000 1.000000 0.000000 +v -0.125000 1.000000 0.500000 +v -0.125000 1.312500 0.500000 +v -0.125000 1.000000 0.000000 +v -0.125000 1.312500 0.000000 +v 0.000000 0.687500 0.000000 +v -0.093750 0.662380 0.000000 +v -0.162380 0.593750 0.000000 +v -0.187500 0.500000 0.000000 +v -0.162380 0.406250 0.000000 +v -0.093750 0.337620 0.000000 +v 0.000000 0.312500 0.000000 +v 0.093750 0.337620 0.000000 +v 0.162380 0.406250 0.000000 +v 0.187500 0.500000 0.000000 +v 0.162380 0.593750 0.000000 +v 0.093750 0.662380 0.000000 +v 0.062500 0.608253 -0.062500 +v 0.108253 0.562500 -0.062500 +v 0.125000 0.500000 -0.062500 +v 0.108253 0.437500 -0.062500 +v 0.062500 0.391747 -0.062500 +v 0.000000 0.375000 -0.062500 +v -0.062500 0.391747 -0.062500 +v -0.108253 0.437500 -0.062500 +v -0.125000 0.500000 -0.062500 +v -0.108253 0.562500 -0.062500 +v -0.062500 0.608253 -0.062500 +v 0.000000 0.625000 -0.062500 +vt 0.055443 0.000276 +vt 0.062346 0.008193 +vt 0.055443 0.005923 +vt 0.071383 0.011570 +vt 0.064646 0.003302 +vt 0.069248 0.022865 +vt 0.067398 0.014394 +vt 0.071383 0.034160 +vt 0.073849 0.022865 +vt 0.002691 0.102479 +vt 0.004826 0.113774 +vt 0.000225 0.113774 +vt 0.002691 0.125069 +vt 0.018631 0.091185 +vt 0.011729 0.099102 +vt 0.009428 0.094211 +vt 0.006676 0.105303 +vt 0.009428 0.003302 +vt 0.006676 0.014394 +vt 0.002691 0.011570 +vt 0.018631 0.005923 +vt 0.011729 0.008193 +vt 0.002691 0.034160 +vt 0.004826 0.022865 +vt 0.006676 0.031336 +vt 0.000225 0.022865 +vt 0.071383 0.125069 +vt 0.069248 0.113774 +vt 0.073849 0.113774 +vt 0.071383 0.102479 +vt 0.067398 0.105303 +vt 0.064646 0.094211 +vt 0.055443 0.096832 +vt 0.055443 0.091185 +vt 0.087963 0.329545 +vt 0.092593 0.340909 +vt 0.083333 0.335227 +vt 0.071383 0.056749 +vt 0.069248 0.068044 +vt 0.067398 0.059573 +vt 0.071383 0.079339 +vt 0.073849 0.068044 +vt 0.064646 0.087607 +vt 0.067398 0.076515 +vt 0.055443 0.084986 +vt 0.062346 0.082716 +vt 0.002691 0.147658 +vt 0.004826 0.158953 +vt 0.000225 0.158953 +vt 0.111111 0.431818 +vt 0.111111 0.340909 +vt 0.074074 0.340909 +vt 0.092593 0.431818 +vt 0.074074 0.431818 +vt 0.037037 0.431818 +vt 0.037037 0.340909 +vt 0.018631 0.181542 +vt 0.025533 0.173625 +vt 0.048541 0.173625 +vt 0.069248 0.158953 +vt 0.071383 0.147658 +vt 0.073849 0.158953 +vt 0.073849 0.181542 +vt 0.062346 0.173625 +vt 0.067398 0.167424 +vt 0.009428 0.087607 +vt 0.018631 0.084986 +vt 0.018631 0.090633 +vt 0.006676 0.076515 +vt 0.011729 0.082716 +vt 0.002691 0.079339 +vt 0.004826 0.068044 +vt 0.002691 0.056749 +vt 0.000225 0.068044 +vt 0.000225 0.181542 +vt 0.006676 0.167424 +vt 0.011729 0.173625 +vt 0.011729 0.053372 +vt 0.009428 0.045455 +vt 0.011729 0.037537 +vt 0.048541 0.037537 +vt 0.043488 0.059573 +vt 0.025533 0.053372 +vt 0.018631 0.039807 +vt 0.018631 0.051102 +vt 0.041639 0.068044 +vt 0.030586 0.059573 +vt 0.055443 0.039807 +vt 0.048541 0.053372 +vt 0.043488 0.031336 +vt 0.032436 0.022865 +vt 0.041639 0.022865 +vt 0.062346 0.053372 +vt 0.062346 0.037537 +vt 0.064646 0.045455 +vt 0.055443 0.051102 +vt 0.030586 0.014394 +vt 0.043488 0.014394 +vt 0.025533 0.008193 +vt 0.048541 0.008193 +vt 0.043488 0.076515 +vt 0.032436 0.068044 +vt 0.048541 0.082716 +vt 0.055443 0.090633 +vt 0.025533 0.082716 +vt 0.011729 0.128446 +vt 0.006676 0.122245 +vt 0.011729 0.144281 +vt 0.009428 0.136364 +vt 0.062346 0.144281 +vt 0.064646 0.136364 +vt 0.062346 0.128446 +vt 0.018631 0.142011 +vt 0.055443 0.142011 +vt 0.055443 0.130716 +vt 0.043488 0.105303 +vt 0.032435 0.113774 +vt 0.030586 0.105303 +vt 0.025533 0.099102 +vt 0.048541 0.099102 +vt 0.041639 0.158953 +vt 0.030586 0.167424 +vt 0.032435 0.158953 +vt 0.043488 0.150482 +vt 0.030586 0.150482 +vt 0.048541 0.144281 +vt 0.048541 0.128446 +vt 0.041639 0.113774 +vt 0.030586 0.122245 +vt 0.025533 0.144281 +vt 0.018631 0.130716 +vt 0.025533 0.128446 +vt 0.502268 0.673238 +vt 0.506944 0.670861 +vt 0.506944 0.687094 +vt 0.486111 0.670455 +vt 0.430556 0.704545 +vt 0.430556 0.670455 +vt 0.497732 0.673238 +vt 0.497732 0.684717 +vt 0.488379 0.684717 +vt 0.384259 0.704545 +vt 0.347222 0.704545 +vt 0.384259 0.670455 +vt 0.310185 0.704545 +vt 0.347222 0.670455 +vt 0.365741 0.625000 +vt 0.328704 0.602273 +vt 0.467593 0.602273 +vt 0.467593 0.772727 +vt 0.328704 0.772727 +vt 0.365741 0.750000 +vt 0.018519 0.340909 +vt 0.018519 0.431818 +vt 0.000000 0.340909 +vt 0.023148 0.329545 +vt 0.027778 0.335227 +vt -0.000000 0.607955 +vt 0.023148 0.642045 +vt -0.000000 0.642045 +vt 0.023148 0.607955 +vt 0.032407 0.642045 +vt 0.032407 0.607955 +vt 0.050926 0.642045 +vt 0.050926 0.607955 +vt 0.060185 0.642045 +vt 0.060185 0.607955 +vt 0.083333 0.642045 +vt 0.060185 0.653409 +vt 0.060185 0.681818 +vt 0.023148 0.681818 +vt 0.023148 0.596591 +vt 0.120370 0.642045 +vt 0.083333 0.670455 +vt 0.083333 0.642045 +vt 0.083333 0.602273 +vt 0.120370 0.630682 +vt 0.083333 0.630682 +vt 0.143519 0.630682 +vt 0.143519 0.642045 +vt 0.166667 0.562500 +vt 0.185185 0.534091 +vt 0.185185 0.562500 +vt 0.185185 0.573864 +vt 0.166667 0.573864 +vt 0.111111 0.562500 +vt 0.185185 0.602273 +vt 0.648148 0.329545 +vt 0.611111 0.352273 +vt 0.611111 0.329545 +vt 0.134259 0.369318 +vt 0.555556 0.346591 +vt 0.555556 0.369318 +vt 0.555556 0.318182 +vt 0.134259 0.346591 +vt 0.111111 0.318182 +vt 0.111111 0.346591 +vt 0.111111 0.369318 +vt 0.555556 0.397727 +vt 0.578704 0.369318 +vt 0.578704 0.346591 +vt 0.722222 0.375000 +vt 0.722222 0.397727 +vt 0.648148 0.397727 +vt 0.722222 0.306818 +vt 0.722222 0.329545 +vt 0.648148 0.352273 +vt 0.907407 0.034091 +vt 0.916667 0.000000 +vt 0.944444 0.011364 +vt 0.740741 0.284091 +vt 0.722222 0.284091 +vt 0.740741 0.375000 +vt 0.740741 0.397727 +vt 0.750000 0.397727 +vt 0.731481 0.363636 +vt 0.740741 0.363636 +vt 0.750000 0.306818 +vt 0.740741 0.306818 +vt 0.731481 0.318182 +vt 0.805556 0.601731 +vt 0.796738 0.590909 +vt 0.805556 0.580087 +vt 0.736111 0.669642 +vt 0.722884 0.653409 +vt 0.736111 0.637176 +vt 0.777277 0.653381 +vt 0.764050 0.669614 +vt 0.750823 0.653381 +vt 0.726852 0.534091 +vt 0.837963 0.568182 +vt 0.763889 0.534091 +vt 0.763889 0.534091 +vt 0.652778 0.568182 +vt 0.726852 0.534091 +vt 0.777277 0.653381 +vt 0.764050 0.669614 +vt 0.750823 0.653381 +vt 0.736111 0.669642 +vt 0.722884 0.653409 +vt 0.736111 0.637176 +vt 0.805556 0.601731 +vt 0.796738 0.590909 +vt 0.805556 0.580087 +vt 0.069444 0.585227 +vt 0.087963 0.596591 +vt 0.069444 0.596591 +vt 0.087963 0.568182 +vt 0.069444 0.579545 +vt 0.069444 0.568182 +vt 0.087963 0.585227 +vt 0.097222 0.579545 +vt 0.097222 0.585227 +vt 0.087963 0.579545 +vt 0.060185 0.585227 +vt 0.083333 0.477273 +vt 0.101852 0.488636 +vt 0.083333 0.488636 +vt 0.083333 0.443182 +vt 0.101852 0.454545 +vt 0.083333 0.454545 +vt 0.101852 0.477273 +vt 0.111111 0.488636 +vt 0.074074 0.477273 +vt 0.101852 0.465909 +vt 0.083333 0.500000 +vt 0.101852 0.443182 +vt 0.111111 0.454545 +vt 0.074074 0.443182 +vt 0.101852 0.431818 +vt 0.083333 0.465909 +vt 0.083333 0.443182 +vt 0.101852 0.454545 +vt 0.083333 0.454545 +vt 0.101852 0.443182 +vt 0.111111 0.454545 +vt 0.074074 0.443182 +vt 0.101852 0.431818 +vt 0.083333 0.465909 +vt 0.055556 0.562500 +vt 0.037037 0.505682 +vt 0.055556 0.505682 +vt 0.111111 0.522727 +vt 0.074074 0.545455 +vt 0.074074 0.522727 +vt 0.018519 0.545455 +vt 0.018519 0.522727 +vt 0.092593 0.500000 +vt 0.074074 0.500000 +vt 0.092593 0.568182 +vt 0.111111 0.545455 +vt 1.000000 0.863636 +vt 0.555556 1.000000 +vt 0.555556 0.863636 +vt 0.555556 1.000000 +vt 1.000000 0.863636 +vt 1.000000 1.000000 +vt 0.166667 0.562500 +vt 0.185185 0.534091 +vt 0.185185 0.562500 +vt 0.185185 0.573864 +vt 0.166667 0.573864 +vt 0.111111 0.562500 +vt 0.185185 0.602273 +vt -0.000000 0.607955 +vt 0.023148 0.642045 +vt -0.000000 0.642045 +vt 0.023148 0.607955 +vt 0.032407 0.642045 +vt 0.032407 0.607955 +vt 0.050926 0.642045 +vt 0.050926 0.607955 +vt 0.060185 0.642045 +vt 0.060185 0.607955 +vt 0.083333 0.642045 +vt 0.060185 0.653409 +vt 0.060185 0.681818 +vt 0.023148 0.681818 +vt 0.023148 0.596591 +vt 0.069444 0.585227 +vt 0.087963 0.596591 +vt 0.069444 0.596591 +vt 0.087963 0.568182 +vt 0.069444 0.579545 +vt 0.069444 0.568182 +vt 0.087963 0.585227 +vt 0.097222 0.579545 +vt 0.097222 0.585227 +vt 0.087963 0.579545 +vt 0.060185 0.585227 +vt 0.120370 0.642045 +vt 0.083333 0.670455 +vt 0.083333 0.642045 +vt 0.083333 0.602273 +vt 0.120370 0.630682 +vt 0.083333 0.630682 +vt 0.143519 0.630682 +vt 0.143519 0.642045 +vt 0.196368 0.480158 +vt 0.220299 0.480158 +vt 0.208333 0.505593 +vt 0.211665 0.522687 +vt 0.203704 0.528328 +vt 0.195742 0.511404 +vt 0.067398 0.031336 +vt 0.018631 0.096832 +vt 0.018631 0.000276 +vt 0.067398 0.122245 +vt 0.062346 0.099102 +vt 0.092593 0.318182 +vt 0.006676 0.150482 +vt 0.055443 0.175895 +vt 0.055443 0.181542 +vt 0.018631 0.175895 +vt 0.043488 0.167424 +vt 0.067398 0.150482 +vt 0.006676 0.059573 +vt 0.030586 0.031336 +vt 0.025533 0.037537 +vt 0.030586 0.076515 +vt 0.043488 0.122245 +vt 0.511621 0.673238 +vt 0.513558 0.678977 +vt 0.511621 0.684717 +vt 0.502268 0.684717 +vt 0.500331 0.678977 +vt 0.486111 0.704545 +vt 0.486442 0.678978 +vt 0.488379 0.673238 +vt 0.493056 0.670861 +vt 0.499669 0.678978 +vt 0.493056 0.687094 +vt 0.310185 0.670455 +vt 0.000000 0.431818 +vt 0.018519 0.318182 +vt 0.083333 0.607955 +vt 0.023148 0.653409 +vt 0.023148 0.568182 +vt 0.060185 0.568182 +vt 0.060185 0.596591 +vt 0.120370 0.670455 +vt 0.120370 0.602273 +vt 0.111111 0.534091 +vt 0.111111 0.573864 +vt 0.111111 0.602273 +vt 0.111111 0.397727 +vt 0.722222 0.352273 +vt 0.648148 0.284091 +vt 0.944444 0.034091 +vt 0.935185 0.045455 +vt 0.916667 0.045455 +vt 0.907407 0.011364 +vt 0.935185 0.000000 +vt 0.750000 0.375000 +vt 0.750000 0.284091 +vt 0.740741 0.318182 +vt 0.811791 0.583257 +vt 0.814373 0.590909 +vt 0.811791 0.598561 +vt 0.799320 0.598561 +vt 0.799320 0.583257 +vt 0.745464 0.641931 +vt 0.749338 0.653409 +vt 0.745464 0.664888 +vt 0.726758 0.664888 +vt 0.726758 0.641931 +vt 0.754698 0.641903 +vt 0.764050 0.637148 +vt 0.773403 0.641903 +vt 0.773403 0.664860 +vt 0.754698 0.664860 +vt 0.745370 0.500000 +vt 0.652778 0.568182 +vt 0.745370 0.500000 +vt 0.837963 0.568182 +vt 0.754698 0.641903 +vt 0.764050 0.637148 +vt 0.773403 0.641903 +vt 0.773403 0.664860 +vt 0.754698 0.664860 +vt 0.745464 0.641931 +vt 0.749338 0.653409 +vt 0.745464 0.664888 +vt 0.726758 0.664888 +vt 0.726758 0.641931 +vt 0.811791 0.583257 +vt 0.814373 0.590909 +vt 0.811791 0.598561 +vt 0.799320 0.598561 +vt 0.799320 0.583257 +vt 0.060185 0.579545 +vt 0.111111 0.477273 +vt 0.074074 0.488636 +vt 0.083333 0.465909 +vt 0.101852 0.500000 +vt 0.111111 0.443182 +vt 0.074074 0.454545 +vt 0.083333 0.431818 +vt 0.101852 0.465909 +vt 0.111111 0.443182 +vt 0.074074 0.454545 +vt 0.083333 0.431818 +vt 0.101852 0.465909 +vt 0.037037 0.562500 +vt 0.074074 0.568182 +vt 1.000000 1.000000 +vt 0.555556 0.863636 +vt 0.111111 0.534091 +vt 0.111111 0.573864 +vt 0.111111 0.602273 +vt 0.083333 0.607955 +vt 0.023148 0.653409 +vt 0.023148 0.568182 +vt 0.060185 0.568182 +vt 0.060185 0.596591 +vt 0.060185 0.579545 +vt 0.120370 0.670455 +vt 0.120370 0.602273 +vt 0.201425 0.503321 +vt 0.196368 0.497115 +vt 0.194517 0.488636 +vt 0.201425 0.473951 +vt 0.208333 0.471680 +vt 0.215242 0.473951 +vt 0.222150 0.488636 +vt 0.220299 0.497115 +vt 0.215242 0.503321 +vt 0.199107 0.526816 +vt 0.195742 0.522687 +vt 0.194510 0.517045 +vt 0.199107 0.507274 +vt 0.203704 0.505763 +vt 0.208300 0.507274 +vt 0.211665 0.511404 +vt 0.212897 0.517045 +vt 0.208300 0.526816 +vt 0.074074 0.090909 +vt 0.611111 0.079545 +vt 0.611111 0.090909 +vt 0.074074 0.079545 +vt 0.611111 0.068182 +vt 0.074074 0.068182 +vt 0.611111 0.056818 +vt 0.074074 0.056818 +vt 0.611111 0.045455 +vt -0.000000 0.863636 +vt 0.532407 0.869318 +vt -0.000000 0.869318 +vt -0.000000 0.880682 +vt 0.532407 0.886364 +vt -0.000000 0.886364 +vt -0.000000 0.909091 +vt 0.532407 0.914773 +vt -0.000000 0.914773 +vt -0.000000 0.926136 +vt 0.532407 0.931818 +vt -0.000000 0.931818 +vt -0.000000 0.875000 +vt 0.532407 0.880682 +vt -0.000000 0.903409 +vt 0.532407 0.909091 +vt -0.000000 0.892045 +vt 0.532407 0.897727 +vt -0.000000 0.897727 +vt -0.000000 0.920455 +vt 0.532407 0.926136 +vt 0.532407 0.875000 +vt 0.532407 0.903409 +vt 0.532407 0.892045 +vt 0.532407 0.920455 +vt 0.074074 0.318182 +vt 0.611111 0.306818 +vt 0.611111 0.318182 +vt 0.074074 0.306818 +vt 0.611111 0.295455 +vt 0.074074 0.295455 +vt 0.611111 0.284091 +vt 0.074074 0.284091 +vt 0.611111 0.272727 +vt -0.000000 0.863636 +vt 0.532407 0.869318 +vt -0.000000 0.869318 +vt -0.000000 0.880682 +vt 0.532407 0.886364 +vt -0.000000 0.886364 +vt -0.000000 0.909091 +vt 0.532407 0.914773 +vt -0.000000 0.914773 +vt -0.000000 0.926136 +vt 0.532407 0.931818 +vt -0.000000 0.931818 +vt -0.000000 0.875000 +vt 0.532407 0.880682 +vt -0.000000 0.903409 +vt 0.532407 0.909091 +vt -0.000000 0.892045 +vt 0.532407 0.897727 +vt -0.000000 0.897727 +vt -0.000000 0.920455 +vt 0.532407 0.926136 +vt 0.532407 0.875000 +vt 0.532407 0.903409 +vt 0.532407 0.892045 +vt 0.532407 0.920455 +vt 0.074074 0.136364 +vt 0.537037 0.147727 +vt 0.074074 0.147727 +vt 0.074074 0.159091 +vt 0.537037 0.159091 +vt 0.074074 0.204545 +vt 0.074074 0.113636 +vt 0.611111 0.102273 +vt 0.611111 0.113636 +vt 0.074074 0.045455 +vt 0.611111 0.000000 +vt -0.000000 0.863636 +vt 0.532407 0.869318 +vt -0.000000 0.869318 +vt -0.000000 0.880682 +vt 0.532407 0.886364 +vt -0.000000 0.886364 +vt -0.000000 0.909091 +vt 0.532407 0.914773 +vt -0.000000 0.914773 +vt -0.000000 0.926136 +vt 0.532407 0.931818 +vt -0.000000 0.931818 +vt -0.000000 0.875000 +vt 0.532407 0.880682 +vt -0.000000 0.903409 +vt 0.532407 0.909091 +vt -0.000000 0.892045 +vt 0.532407 0.897727 +vt -0.000000 0.897727 +vt -0.000000 0.920455 +vt 0.532407 0.926136 +vt 0.532407 0.875000 +vt 0.532407 0.903409 +vt 0.532407 0.892045 +vt 0.532407 0.920455 +vt 0.611111 0.261364 +vt 0.074074 0.250000 +vt 0.611111 0.250000 +vt 0.074074 0.272727 +vt -0.000000 0.863636 +vt 0.532407 0.869318 +vt -0.000000 0.869318 +vt -0.000000 0.880682 +vt 0.532407 0.886364 +vt -0.000000 0.886364 +vt -0.000000 0.909091 +vt 0.532407 0.914773 +vt -0.000000 0.914773 +vt -0.000000 0.926136 +vt 0.532407 0.931818 +vt -0.000000 0.931818 +vt -0.000000 0.875000 +vt 0.532407 0.880682 +vt -0.000000 0.903409 +vt 0.532407 0.909091 +vt -0.000000 0.892045 +vt 0.532407 0.897727 +vt -0.000000 0.897727 +vt -0.000000 0.920455 +vt 0.532407 0.926136 +vt 0.532407 0.875000 +vt 0.532407 0.903409 +vt 0.532407 0.892045 +vt 0.532407 0.920455 +vt 0.537037 0.125000 +vt 0.074074 0.125000 +vt 0.537037 0.215909 +vt 0.074074 0.215909 +vt 0.537037 0.227273 +vt 0.074074 0.227273 +vt 0.074074 0.238636 +vt 0.560185 0.659091 +vt 0.467593 0.664773 +vt 0.467593 0.659091 +vt 0.560185 0.664773 +vt 0.467593 0.670455 +vt 0.560185 0.625000 +vt 0.467593 0.630682 +vt 0.467593 0.625000 +vt 0.560185 0.630682 +vt 0.467593 0.636364 +vt 0.560185 0.636364 +vt 0.467593 0.642045 +vt 0.560185 0.642045 +vt 0.467593 0.647727 +vt 0.560185 0.647727 +vt 0.467593 0.653409 +vt 0.560185 0.653409 +vt 0.537037 0.238636 +vt 0.611111 0.238636 +vt 0.833333 0.204545 +vt 0.851852 0.045455 +vt 0.851852 0.204545 +vt 0.981481 0.045455 +vt 0.962963 0.068182 +vt 0.962963 0.045455 +vt 0.981481 0.068182 +vt 0.962963 0.181818 +vt 0.981481 0.181818 +vt 0.962963 0.204545 +vt 0.981481 0.204545 +vt 0.962963 0.250000 +vt 0.925926 0.181818 +vt 0.953704 0.068182 +vt 0.916667 0.181818 +vt 0.907407 0.045455 +vt 0.861111 0.204545 +vt 0.953704 0.068182 +vt 0.916667 0.181818 +vt 0.861111 0.227273 +vt 0.851852 0.227273 +vt 0.925926 0.204545 +vt 0.953704 0.250000 +vt 0.916667 0.204545 +vt 0.925926 0.181818 +vt 0.944444 0.045455 +vt 0.935185 0.045455 +vt 0.916667 0.045455 +vt 0.861111 0.204545 +vt 0.861111 0.227273 +vt 0.870370 0.227273 +vt 0.851852 0.227273 +vt 0.851852 0.204545 +vt 0.944444 0.045455 +vt 0.962963 0.068182 +vt 0.907407 0.045455 +vt 0.925926 0.204545 +vt 0.953704 0.250000 +vt 0.962963 0.250000 +vt 0.916667 0.204545 +vt 0.870370 0.250000 +vt 0.870370 0.227273 +vt 0.870370 0.250000 +vt 0.870370 0.568182 +vt 0.861111 0.579545 +vt 0.861111 0.568182 +vt 0.814815 0.568182 +vt 0.805556 0.579545 +vt 0.805556 0.568182 +vt 0.833333 0.568182 +vt 0.824074 0.579545 +vt 0.824074 0.568182 +vt 0.851852 0.568182 +vt 0.842593 0.579545 +vt 0.842593 0.568182 +vt 0.851852 0.579545 +vt 0.796296 0.579545 +vt 0.796296 0.568182 +vt 0.814815 0.579545 +vt 0.833333 0.579545 +vt 0.796296 0.568182 +vt 0.787037 0.636364 +vt 0.787037 0.568182 +vt 0.740741 0.568182 +vt 0.731481 0.636364 +vt 0.731481 0.568182 +vt 0.759259 0.568182 +vt 0.750000 0.636364 +vt 0.750000 0.568182 +vt 0.777778 0.568182 +vt 0.768519 0.636364 +vt 0.768519 0.568182 +vt 0.777778 0.636364 +vt 0.722222 0.636364 +vt 0.722222 0.568182 +vt 0.740741 0.636364 +vt 0.759259 0.636364 +vt 0.726852 0.477273 +vt 0.745370 0.477273 +vt 0.652778 0.500000 +vt 0.652778 0.477273 +vt 0.763889 0.477273 +vt 0.837963 0.500000 +vt 0.837963 0.477273 +vt 0.768519 0.568182 +vt 0.759259 0.636364 +vt 0.759259 0.568182 +vt 0.750000 0.568182 +vt 0.740741 0.636364 +vt 0.740741 0.568182 +vt 0.731481 0.568182 +vt 0.722222 0.636364 +vt 0.722222 0.568182 +vt 0.787037 0.568182 +vt 0.777778 0.636364 +vt 0.777778 0.568182 +vt 0.768519 0.636364 +vt 0.750000 0.636364 +vt 0.731481 0.636364 +vt 0.796296 0.568182 +vt 0.787037 0.636364 +vt 0.842593 0.568182 +vt 0.833333 0.579545 +vt 0.833333 0.568182 +vt 0.824074 0.568182 +vt 0.814815 0.579545 +vt 0.814815 0.568182 +vt 0.805556 0.568182 +vt 0.796296 0.579545 +vt 0.796296 0.568182 +vt 0.861111 0.568182 +vt 0.851852 0.579545 +vt 0.851852 0.568182 +vt 0.842593 0.579545 +vt 0.824074 0.579545 +vt 0.805556 0.579545 +vt 0.870370 0.568182 +vt 0.861111 0.579545 +vt 0.226852 0.488636 +vt 0.222222 0.494318 +vt 0.222222 0.488636 +vt 0.222222 0.448864 +vt 0.226852 0.454545 +vt 0.222222 0.454545 +vt 0.222222 0.500000 +vt 0.226852 0.505682 +vt 0.222222 0.505682 +vt 0.226852 0.500000 +vt 0.226852 0.471591 +vt 0.222222 0.477273 +vt 0.222222 0.471591 +vt 0.222222 0.460227 +vt 0.226852 0.437500 +vt 0.222222 0.443182 +vt 0.222222 0.437500 +vt 0.226852 0.477273 +vt 0.222222 0.482955 +vt 0.226852 0.465909 +vt 0.222222 0.465909 +vt 0.226852 0.443182 +vt 0.532407 0.863636 +vt 0.532407 0.863636 +vt 0.537037 0.136364 +vt 0.537037 0.204545 +vt 0.074074 0.102273 +vt 0.074074 0.000000 +vt 0.532407 0.863636 +vt 0.074074 0.261364 +vt 0.532407 0.863636 +vt 0.560185 0.670455 +vt 0.611111 0.125000 +vt 0.833333 0.045455 +vt 0.981481 0.250000 +vt 0.870370 0.579545 +vt 0.796296 0.636364 +vt 0.726852 0.500000 +vt 0.763889 0.500000 +vt 0.796296 0.636364 +vt 0.870370 0.579545 +vt 0.226852 0.494318 +vt 0.226852 0.448864 +vt 0.226852 0.460227 +vt 0.226852 0.482955 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -0.5547 -0.8321 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.4472 0.8944 +vn 0.0000 -0.8944 0.4472 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.9231 0.3846 +vn 0.0000 0.7085 0.7057 +vn 0.8000 -0.6000 0.0000 +vn -0.8000 -0.6000 0.0000 +vn 0.9018 0.4321 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 0.5000 -0.8660 -0.0000 +vn 0.1305 -0.9914 -0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.8660 0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.8660 0.5000 0.0000 +vn -0.1305 -0.9914 -0.0000 +vn -0.9018 0.4321 0.0000 +vn 0.1305 0.9914 0.0000 +vn -0.1305 0.9914 0.0000 +vn 0.9018 -0.4321 0.0000 +vn 0.8069 -0.5907 0.0000 +vn 0.8069 0.5907 0.0000 +vn -0.8069 -0.5907 0.0000 +vn -0.9018 -0.4321 0.0000 +vn -0.8069 0.5907 0.0000 +vn 0.9960 -0.0890 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn -0.0000 -0.7071 0.7071 +vn -0.9960 -0.0890 0.0000 +vn -0.9659 -0.2588 0.0000 +vn -0.4858 -0.2432 0.8396 +vn 0.3929 -0.3622 0.8452 +vn 0.4858 -0.2432 0.8396 +vn -0.3458 -0.6635 -0.6635 +vn 0.3395 -0.1767 -0.9239 +vn 0.3458 -0.6635 -0.6635 +vn -0.3395 -0.1767 -0.9239 +vn 0.3945 0.1811 -0.9009 +vn -0.3945 0.1811 -0.9009 +vn 0.3878 -0.3878 -0.8361 +vn -0.3878 -0.3878 -0.8361 +vn 0.2418 -0.6861 -0.6861 +vn -0.8661 -0.1385 -0.4802 +vn -0.9386 0.0604 -0.3398 +vn 0.9032 -0.0951 0.4186 +vn 0.9487 -0.1245 0.2905 +vn 0.8661 -0.1385 -0.4802 +vn 0.9386 0.0604 -0.3398 +vn 0.9239 0.0000 0.3827 +vn 0.7071 0.0000 0.7071 +vn 0.7592 -0.4602 -0.4602 +vn 0.9518 -0.1020 -0.2893 +vn 0.9607 -0.1962 -0.1962 +vn -0.9607 -0.1962 -0.1962 +vn -0.9487 -0.1245 0.2905 +vn -0.9032 -0.0951 0.4186 +vn -0.9239 0.0000 0.3827 +vn -0.7071 0.0000 0.7071 +vn -0.3929 -0.3622 0.8452 +vn -0.7592 -0.4602 -0.4602 +vn -0.2418 -0.6861 -0.6861 +vn -0.9518 -0.1020 -0.2893 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.0000 -0.5547 0.8321 +vn 0.0000 -0.7833 0.6216 +vn 0.0000 -0.9363 0.3511 +vn 0.0000 -0.7833 -0.6216 +vn 0.0000 -0.9363 -0.3511 +vn -0.6124 -0.3536 -0.7071 +vn 0.6124 -0.3536 -0.7071 +vn -0.3536 -0.6124 -0.7071 +vn -0.3536 0.6124 -0.7071 +vn 0.6124 0.3536 -0.7071 +vn 0.3536 -0.6124 -0.7071 +vn -0.6124 0.3536 -0.7071 +vn 0.3536 0.6124 -0.7071 +vn 0.9659 -0.2588 0.0000 +s off +f 202/305/57 210/306/57 209/307/57 +f 198/308/57 210/306/57 200/309/57 +f 198/308/57 212/310/57 211/311/57 +f 194/312/57 212/310/57 196/313/57 +f 197/314/58 224/315/58 195/316/58 +f 224/315/58 193/317/58 195/316/58 +f 201/318/58 222/319/58 199/320/58 +f 199/320/58 223/321/58 197/314/58 +f 230/322/57 241/323/57 232/324/57 +f 230/322/57 243/325/57 242/326/57 +f 236/327/57 240/328/57 239/329/57 +f 232/324/57 240/328/57 234/330/57 +f 235/331/58 252/332/58 233/333/58 +f 252/332/58 231/334/58 233/333/58 +f 253/335/58 229/336/58 231/334/58 +f 229/336/58 255/337/58 227/338/58 +f 295/339/57 261/340/57 299/341/57 +f 270/342/57 280/343/57 279/344/57 +f 266/345/57 280/343/57 268/346/57 +f 264/347/57 281/348/57 266/345/57 +f 264/347/57 271/349/57 282/350/57 +f 269/351/58 292/352/58 267/353/58 +f 267/354/59 261/340/59 301/355/59 +f 265/356/60 303/357/60 263/358/60 +f 265/356/60 362/359/60 361/360/60 +f 263/361/58 284/362/58 328/363/58 +f 320/364/58 297/365/58 364/366/58 +f 360/367/58 318/368/58 319/369/58 +f 304/370/57 305/371/57 296/372/57 +f 304/370/57 307/373/57 306/374/57 +f 302/375/57 308/376/57 307/373/57 +f 298/377/57 308/376/57 300/378/57 +f 303/379/58 293/380/58 294/381/58 +f 310/382/57 298/377/57 332/383/57 +f 238/384/57 236/327/57 239/329/57 +f 204/385/57 275/386/57 312/387/57 +f 237/388/57 312/387/57 311/389/57 +f 311/389/57 310/382/57 332/383/57 +f 274/390/57 313/391/57 275/386/57 +f 203/392/57 276/393/57 204/385/57 +f 205/394/57 246/395/57 206/396/57 +f 278/397/57 270/342/57 279/344/57 +f 214/398/57 194/312/57 330/399/57 +f 330/399/57 277/400/57 203/392/57 +f 206/396/57 245/401/57 207/402/57 +f 244/403/57 202/305/57 208/404/57 +f 273/405/57 314/406/57 274/390/57 +f 272/407/57 262/408/57 316/409/57 +f 226/410/58 193/317/58 225/411/58 +f 290/412/58 269/351/58 329/413/58 +f 297/365/58 322/414/58 331/415/58 +f 250/416/58 235/331/58 331/415/58 +f 289/417/58 290/412/58 329/413/58 +f 331/415/58 323/418/58 249/419/58 +f 257/420/58 218/421/58 219/422/58 +f 220/423/58 201/318/58 256/424/58 +f 326/425/58 285/426/58 286/427/58 +f 325/428/58 286/427/58 287/429/58 +f 249/419/58 324/430/58 260/431/58 +f 258/432/58 217/433/58 218/421/58 +f 288/434/58 215/435/58 216/436/58 +f 288/434/58 216/436/58 324/430/58 +f 342/437/59 340/438/59 348/439/59 +f 351/440/61 333/441/61 334/442/61 +f 341/443/62 345/444/62 349/445/62 +f 353/446/63 334/442/63 333/441/63 +f 355/447/64 354/448/64 353/446/64 +f 357/449/65 356/450/65 355/447/65 +f 356/451/62 358/452/62 351/453/62 +f 352/454/59 357/455/59 355/456/59 +f 359/457/60 362/359/60 360/458/60 +f 360/458/62 363/459/62 359/457/62 +f 366/460/57 365/461/57 359/457/57 +f 367/462/57 370/463/57 368/464/57 +f 369/465/66 372/466/66 370/463/66 +f 371/467/60 374/468/60 372/466/60 +f 373/469/67 376/470/67 374/468/67 +f 375/471/58 378/472/58 376/470/58 +f 376/473/62 378/474/62 368/475/62 +f 373/469/59 371/467/59 369/476/59 +f 381/477/62 380/478/62 379/479/62 +f 383/480/59 386/481/59 384/482/59 +f 381/477/58 385/483/58 382/484/58 +f 379/479/60 386/481/60 381/477/60 +f 390/485/59 387/486/59 388/487/59 +f 391/488/60 390/485/60 388/487/60 +f 393/489/68 389/490/68 390/485/68 +f 394/491/62 393/489/62 391/488/62 +f 406/492/57 403/493/57 404/494/57 +f 402/495/60 399/496/60 400/497/60 +f 395/498/59 401/499/59 397/500/59 +f 397/501/69 402/495/69 398/502/69 +f 396/503/62 402/495/62 400/497/62 +f 396/504/58 399/496/58 395/505/58 +f 424/506/59 407/507/59 403/508/59 +f 423/509/62 410/510/62 406/492/62 +f 410/510/63 405/511/63 406/492/63 +f 411/512/63 440/513/63 414/514/63 +f 427/515/62 423/509/62 408/516/62 +f 407/507/59 426/517/59 428/518/59 +f 426/517/57 438/519/57 428/518/57 +f 426/517/60 429/520/60 437/521/60 +f 427/515/57 447/522/57 425/523/57 +f 425/523/60 446/524/60 423/509/60 +f 452/525/60 450/526/60 456/527/60 +f 468/528/60 466/529/60 472/530/60 +f 474/531/63 476/532/63 478/533/63 +f 490/534/62 486/535/62 488/536/62 +f 487/537/59 481/538/59 489/539/59 +f 497/540/63 495/541/63 493/542/63 +f 503/543/60 505/544/60 499/545/60 +f 519/546/60 521/547/60 515/548/60 +f 525/549/62 524/550/62 523/551/62 +f 527/552/59 530/553/59 528/554/59 +f 526/555/58 527/556/58 524/557/58 +f 525/549/60 529/558/60 526/555/60 +f 523/559/57 530/553/57 525/549/57 +f 532/560/60 533/561/60 531/562/60 +f 540/563/60 541/564/60 539/565/60 +f 534/566/58 535/567/58 533/561/58 +f 531/562/57 537/568/57 532/560/57 +f 532/560/59 538/569/59 534/566/59 +f 533/561/62 536/570/62 531/562/62 +f 542/571/58 543/572/58 541/564/58 +f 539/565/57 545/573/57 540/563/57 +f 540/563/59 546/574/59 542/571/59 +f 541/564/62 544/575/62 539/565/62 +f 548/576/60 549/577/60 547/578/60 +f 550/579/58 551/580/58 549/577/58 +f 547/578/57 553/581/57 548/576/57 +f 548/576/59 554/582/59 550/579/59 +f 549/577/62 552/583/62 547/578/62 +f 557/584/60 555/585/60 556/586/60 +f 559/587/63 561/588/63 560/589/63 +f 555/585/66 562/590/66 559/591/66 +f 555/592/70 560/589/70 556/593/70 +f 556/586/58 561/588/58 557/584/58 +f 558/594/71 561/588/71 562/595/71 +f 564/596/59 563/597/59 565/598/59 +f 568/599/62 569/600/62 567/601/62 +f 574/602/59 571/603/59 572/604/59 +f 575/605/60 574/602/60 572/604/60 +f 577/606/68 573/607/68 574/602/68 +f 578/608/62 577/606/62 575/605/62 +f 579/609/57 582/610/57 580/611/57 +f 581/612/66 584/613/66 582/610/66 +f 583/614/60 586/615/60 584/613/60 +f 585/616/67 588/617/67 586/615/67 +f 587/618/58 590/619/58 588/617/58 +f 588/620/62 590/621/62 580/622/62 +f 585/616/59 583/614/59 581/623/59 +f 593/624/62 592/625/62 591/626/62 +f 595/627/59 598/628/59 596/629/59 +f 594/630/58 595/631/58 592/632/58 +f 593/624/60 597/633/60 594/630/60 +f 591/634/57 598/628/57 593/624/57 +f 601/635/62 600/636/62 599/637/62 +f 603/638/59 606/639/59 604/640/59 +f 601/635/58 605/641/58 602/642/58 +f 599/637/60 606/639/60 601/635/60 +f 611/643/57 615/644/57 607/645/57 +f 628/646/58 630/647/58 622/648/58 +f 202/305/57 200/309/57 210/306/57 +f 198/308/57 211/311/57 210/306/57 +f 198/308/57 196/313/57 212/310/57 +f 194/312/57 213/649/57 212/310/57 +f 197/314/58 223/321/58 224/315/58 +f 224/315/58 225/411/58 193/317/58 +f 201/318/58 221/650/58 222/319/58 +f 199/320/58 222/319/58 223/321/58 +f 230/322/57 242/326/57 241/323/57 +f 230/322/57 228/651/57 243/325/57 +f 236/327/57 234/330/57 240/328/57 +f 232/324/57 241/323/57 240/328/57 +f 235/331/58 251/652/58 252/332/58 +f 252/332/58 253/335/58 231/334/58 +f 253/335/58 254/653/58 229/336/58 +f 229/336/58 254/653/58 255/337/58 +f 295/339/57 301/654/57 261/340/57 +f 261/340/57 265/356/57 299/341/57 +f 270/342/57 268/346/57 280/343/57 +f 266/345/57 281/348/57 280/343/57 +f 264/347/57 282/350/57 281/348/57 +f 264/347/57 262/408/57 271/349/57 +f 269/351/58 291/655/58 292/352/58 +f 267/354/59 303/357/59 261/340/59 +f 265/356/60 261/340/60 303/357/60 +f 265/356/60 263/358/60 362/359/60 +f 317/656/58 362/657/58 328/363/58 +f 362/657/58 263/361/58 328/363/58 +f 263/361/58 283/658/58 284/362/58 +f 284/362/58 285/426/58 327/659/58 +f 284/362/58 327/659/58 328/363/58 +f 320/364/58 321/660/58 297/365/58 +f 320/364/58 364/366/58 319/369/58 +f 364/366/58 360/367/58 319/369/58 +f 360/367/58 362/657/58 318/368/58 +f 362/657/58 317/656/58 318/368/58 +f 304/370/57 306/374/57 305/371/57 +f 304/370/57 302/375/57 307/373/57 +f 302/375/57 300/378/57 308/376/57 +f 298/377/57 309/661/57 308/376/57 +f 303/379/58 267/353/58 293/380/58 +f 267/353/58 292/352/58 293/380/58 +f 283/658/58 263/361/58 294/381/58 +f 263/361/58 303/379/58 294/381/58 +f 310/382/57 309/661/57 298/377/57 +f 238/384/57 332/383/57 236/327/57 +f 247/662/57 205/394/57 204/385/57 +f 204/385/57 276/393/57 275/386/57 +f 275/386/57 313/391/57 312/387/57 +f 312/387/57 248/663/57 247/662/57 +f 247/662/57 204/385/57 312/387/57 +f 237/388/57 248/663/57 312/387/57 +f 332/383/57 238/384/57 237/388/57 +f 237/388/57 311/389/57 332/383/57 +f 274/390/57 314/406/57 313/391/57 +f 203/392/57 277/400/57 276/393/57 +f 205/394/57 247/662/57 246/395/57 +f 278/397/57 330/399/57 270/342/57 +f 214/398/57 213/649/57 194/312/57 +f 203/392/57 214/398/57 330/399/57 +f 330/399/57 278/397/57 277/400/57 +f 206/396/57 246/395/57 245/401/57 +f 208/404/57 207/402/57 244/403/57 +f 207/402/57 245/401/57 244/403/57 +f 244/403/57 243/325/57 228/651/57 +f 202/305/57 209/307/57 208/404/57 +f 244/403/57 228/651/57 202/305/57 +f 273/405/57 315/664/57 314/406/57 +f 272/407/57 271/349/57 262/408/57 +f 262/408/57 296/372/57 316/409/57 +f 296/372/57 305/371/57 316/409/57 +f 316/409/57 315/664/57 273/405/57 +f 316/409/57 273/405/57 272/407/57 +f 226/410/58 329/413/58 193/317/58 +f 290/412/58 291/655/58 269/351/58 +f 297/365/58 321/660/58 322/414/58 +f 250/416/58 251/652/58 235/331/58 +f 226/410/58 215/435/58 329/413/58 +f 215/435/58 289/417/58 329/413/58 +f 249/419/58 250/416/58 331/415/58 +f 331/415/58 322/414/58 323/418/58 +f 257/420/58 258/432/58 218/421/58 +f 257/420/58 219/422/58 256/424/58 +f 219/422/58 220/423/58 256/424/58 +f 220/423/58 221/650/58 201/318/58 +f 201/318/58 227/338/58 256/424/58 +f 227/338/58 255/337/58 256/424/58 +f 326/425/58 327/659/58 285/426/58 +f 325/428/58 326/425/58 286/427/58 +f 249/419/58 323/418/58 324/430/58 +f 258/432/58 259/665/58 217/433/58 +f 288/434/58 289/417/58 215/435/58 +f 216/436/58 217/433/58 324/430/58 +f 217/433/58 259/665/58 324/430/58 +f 259/665/58 260/431/58 324/430/58 +f 324/430/58 325/428/58 287/429/58 +f 287/429/58 288/434/58 324/430/58 +f 340/438/59 338/666/59 336/667/59 +f 336/667/59 350/668/59 340/438/59 +f 350/668/59 348/439/59 340/438/59 +f 348/439/59 346/669/59 344/670/59 +f 344/670/59 342/437/59 348/439/59 +f 351/440/61 352/671/61 333/441/61 +f 349/445/62 335/672/62 337/673/62 +f 337/673/62 339/674/62 349/445/62 +f 339/674/62 341/443/62 349/445/62 +f 341/443/62 343/675/62 345/444/62 +f 345/444/62 347/676/62 349/445/62 +f 353/446/63 354/448/63 334/442/63 +f 355/447/64 356/450/64 354/448/64 +f 357/449/65 358/677/65 356/450/65 +f 351/453/62 334/442/62 356/451/62 +f 334/442/62 354/448/62 356/451/62 +f 353/446/59 333/441/59 355/456/59 +f 333/441/59 352/454/59 355/456/59 +f 359/457/60 361/360/60 362/359/60 +f 360/458/62 364/678/62 363/459/62 +f 365/461/57 361/360/57 359/457/57 +f 359/457/57 363/679/57 366/460/57 +f 367/462/57 369/465/57 370/463/57 +f 369/465/66 371/467/66 372/466/66 +f 371/467/60 373/469/60 374/468/60 +f 373/469/67 375/471/67 376/470/67 +f 375/471/58 377/680/58 378/472/58 +f 368/475/62 370/681/62 376/473/62 +f 370/681/62 372/466/62 376/473/62 +f 372/466/62 374/468/62 376/473/62 +f 369/476/59 367/682/59 377/683/59 +f 377/683/59 375/684/59 369/476/59 +f 375/684/59 373/469/59 369/476/59 +f 381/477/62 382/685/62 380/478/62 +f 383/480/59 385/686/59 386/481/59 +f 381/477/58 386/481/58 385/483/58 +f 379/479/60 384/482/60 386/481/60 +f 390/485/59 389/687/59 387/486/59 +f 391/488/60 393/489/60 390/485/60 +f 393/489/68 392/688/68 389/490/68 +f 394/491/62 392/689/62 393/489/62 +f 406/492/57 405/511/57 403/493/57 +f 402/495/60 401/499/60 399/496/60 +f 395/498/59 399/496/59 401/499/59 +f 397/501/69 401/499/69 402/495/69 +f 396/503/62 398/690/62 402/495/62 +f 396/504/58 400/497/58 399/496/58 +f 403/508/59 405/511/59 424/506/59 +f 405/511/59 409/691/59 424/506/59 +f 406/492/62 404/692/62 423/509/62 +f 404/692/62 408/516/62 423/509/62 +f 410/510/63 409/691/63 405/511/63 +f 414/514/63 413/693/63 432/694/63 +f 432/694/63 431/695/63 411/512/63 +f 411/512/63 412/696/63 440/513/63 +f 440/513/63 441/697/63 414/514/63 +f 414/514/63 432/694/63 411/512/63 +f 427/515/62 425/523/62 423/509/62 +f 407/507/59 424/506/59 426/517/59 +f 426/517/57 437/698/57 438/519/57 +f 426/517/60 424/506/60 429/520/60 +f 427/515/57 448/699/57 447/522/57 +f 425/523/60 447/700/60 446/524/60 +f 456/527/60 455/701/60 454/702/60 +f 454/702/60 453/703/60 452/525/60 +f 452/525/60 451/704/60 450/526/60 +f 450/526/60 449/705/60 456/527/60 +f 456/527/60 454/702/60 452/525/60 +f 472/530/60 471/706/60 470/707/60 +f 470/707/60 469/708/60 468/528/60 +f 468/528/60 467/709/60 466/529/60 +f 466/529/60 465/710/60 472/530/60 +f 472/530/60 470/707/60 468/528/60 +f 478/533/63 479/711/63 480/712/63 +f 480/712/63 473/713/63 474/531/63 +f 474/531/63 475/714/63 476/532/63 +f 476/532/63 477/715/63 478/533/63 +f 478/533/63 480/712/63 474/531/63 +f 488/536/62 484/716/62 490/534/62 +f 490/534/62 482/717/62 486/535/62 +f 489/539/59 483/718/59 487/537/59 +f 487/537/59 485/719/59 481/538/59 +f 493/542/63 492/720/63 491/721/63 +f 491/721/63 498/722/63 497/540/63 +f 497/540/63 496/723/63 495/541/63 +f 495/541/63 494/724/63 493/542/63 +f 493/542/63 491/721/63 497/540/63 +f 499/545/60 500/725/60 501/726/60 +f 501/726/60 502/727/60 503/543/60 +f 503/543/60 504/728/60 505/544/60 +f 505/544/60 506/729/60 499/545/60 +f 499/545/60 501/726/60 503/543/60 +f 515/548/60 516/730/60 517/731/60 +f 517/731/60 518/732/60 519/546/60 +f 519/546/60 520/733/60 521/547/60 +f 521/547/60 522/734/60 515/548/60 +f 515/548/60 517/731/60 519/546/60 +f 525/549/62 526/555/62 524/550/62 +f 527/552/59 529/558/59 530/553/59 +f 526/555/58 529/558/58 527/556/58 +f 525/549/60 530/553/60 529/558/60 +f 523/559/57 528/735/57 530/553/57 +f 532/560/60 534/566/60 533/561/60 +f 540/563/60 542/571/60 541/564/60 +f 534/566/58 538/736/58 535/567/58 +f 531/562/57 536/737/57 537/568/57 +f 532/560/59 537/738/59 538/569/59 +f 533/561/62 535/739/62 536/570/62 +f 542/571/58 546/740/58 543/572/58 +f 539/565/57 544/741/57 545/573/57 +f 540/563/59 545/742/59 546/574/59 +f 541/564/62 543/743/62 544/575/62 +f 548/576/60 550/579/60 549/577/60 +f 550/579/58 554/744/58 551/580/58 +f 547/578/57 552/745/57 553/581/57 +f 548/576/59 553/746/59 554/582/59 +f 549/577/62 551/747/62 552/583/62 +f 557/584/60 558/748/60 555/585/60 +f 559/587/63 562/595/63 561/588/63 +f 555/585/66 558/748/66 562/590/66 +f 555/592/70 559/587/70 560/589/70 +f 556/586/58 560/589/58 561/588/58 +f 558/594/71 557/749/71 561/588/71 +f 564/596/59 566/750/59 563/597/59 +f 568/599/62 570/751/62 569/600/62 +f 574/602/59 573/752/59 571/603/59 +f 575/605/60 577/606/60 574/602/60 +f 577/606/68 576/753/68 573/607/68 +f 578/608/62 576/754/62 577/606/62 +f 579/609/57 581/612/57 582/610/57 +f 581/612/66 583/614/66 584/613/66 +f 583/614/60 585/616/60 586/615/60 +f 585/616/67 587/618/67 588/617/67 +f 587/618/58 589/755/58 590/619/58 +f 580/622/62 582/756/62 588/620/62 +f 582/756/62 584/613/62 588/620/62 +f 584/613/62 586/615/62 588/620/62 +f 581/623/59 579/757/59 589/758/59 +f 589/758/59 587/759/59 581/623/59 +f 587/759/59 585/616/59 581/623/59 +f 593/624/62 594/630/62 592/625/62 +f 595/627/59 597/633/59 598/628/59 +f 594/630/58 597/633/58 595/631/58 +f 593/624/60 598/628/60 597/633/60 +f 591/634/57 596/760/57 598/628/57 +f 601/635/62 602/761/62 600/636/62 +f 603/638/59 605/762/59 606/639/59 +f 601/635/58 606/639/58 605/641/58 +f 599/637/60 604/640/60 606/639/60 +f 607/645/57 608/763/57 609/764/57 +f 609/764/57 610/765/57 611/643/57 +f 611/643/57 612/766/57 613/767/57 +f 613/767/57 614/768/57 611/643/57 +f 614/768/57 615/644/57 611/643/57 +f 615/644/57 616/769/57 617/770/57 +f 617/770/57 618/771/57 607/645/57 +f 607/645/57 609/764/57 611/643/57 +f 615/644/57 617/770/57 607/645/57 +f 630/647/58 619/772/58 622/648/58 +f 619/772/58 620/773/58 622/648/58 +f 620/773/58 621/774/58 622/648/58 +f 622/648/58 623/775/58 624/776/58 +f 624/776/58 625/777/58 622/648/58 +f 625/777/58 626/778/58 622/648/58 +f 626/778/58 627/779/58 628/646/58 +f 628/646/58 629/780/58 630/647/58 +f 626/778/58 628/646/58 622/648/58 +s 1 +f 194/781/72 195/782/59 193/783/72 +f 196/784/59 197/785/73 195/782/59 +f 198/786/73 199/787/74 197/785/73 +f 200/788/74 201/789/75 199/787/74 +f 209/790/60 220/791/76 208/792/76 +f 206/793/59 217/794/73 205/795/73 +f 213/796/77 224/797/62 212/798/62 +f 210/799/78 221/800/60 209/801/60 +f 207/802/79 218/803/59 206/793/59 +f 214/804/80 225/805/77 213/796/77 +f 204/806/74 215/807/63 203/808/63 +f 211/809/81 222/810/78 210/799/78 +f 208/792/76 219/811/79 207/802/79 +f 203/808/63 226/812/80 214/804/80 +f 205/795/73 216/813/74 204/806/74 +f 212/798/62 223/814/81 211/809/81 +f 228/815/82 229/816/80 227/817/82 +f 230/818/80 231/819/77 229/816/80 +f 232/820/77 233/821/62 231/819/77 +f 234/822/62 235/823/83 233/821/62 +f 243/824/60 254/825/76 242/826/76 +f 240/827/59 251/828/73 239/829/73 +f 247/830/77 258/831/62 246/832/62 +f 244/833/78 255/834/60 243/835/60 +f 241/836/79 252/837/59 240/827/59 +f 248/838/80 259/839/77 247/830/77 +f 238/840/74 249/841/63 237/842/63 +f 245/843/81 256/844/78 244/833/78 +f 242/826/76 253/845/79 241/836/79 +f 237/842/63 260/846/80 248/838/80 +f 239/829/73 250/847/74 238/840/74 +f 246/832/62 257/848/81 245/843/81 +f 266/849/79 299/850/76 264/851/76 +f 299/850/76 262/852/84 264/851/76 +f 265/853/84 296/854/85 262/852/84 +f 270/855/86 329/856/87 269/857/86 +f 202/858/75 227/859/82 201/789/75 +f 329/856/88 194/781/72 193/783/72 +f 277/860/60 288/861/76 276/862/76 +f 274/863/59 285/864/73 273/865/73 +f 281/866/77 292/867/62 280/868/62 +f 278/869/78 289/870/60 277/871/60 +f 275/872/79 286/873/59 274/863/59 +f 282/874/80 293/875/77 281/866/77 +f 272/876/74 283/877/63 271/878/63 +f 279/879/81 290/880/78 278/869/78 +f 276/862/76 287/881/79 275/872/79 +f 271/878/63 294/882/80 282/874/80 +f 273/865/73 284/883/74 272/876/74 +f 280/868/62 291/884/81 279/879/81 +f 331/885/89 298/886/90 297/887/90 +f 236/888/83 331/885/91 235/823/83 +f 311/889/60 322/890/76 310/891/76 +f 308/892/59 319/893/73 307/894/73 +f 315/895/77 326/896/62 314/897/62 +f 312/898/78 323/899/60 311/900/60 +f 309/901/79 320/902/59 308/892/59 +f 316/903/80 327/904/77 315/895/77 +f 306/905/74 317/906/63 305/907/63 +f 313/908/81 324/909/78 312/898/78 +f 310/891/76 321/910/79 309/901/79 +f 305/907/63 328/911/80 316/903/80 +f 307/894/73 318/912/74 306/905/74 +f 314/897/62 325/913/81 313/908/81 +f 301/914/92 266/849/79 268/915/59 +f 296/854/85 365/916/78 304/917/78 +f 304/917/78 366/918/81 302/919/81 +f 366/918/81 300/920/62 302/919/81 +f 336/921/58 337/922/93 335/923/58 +f 338/924/93 339/925/63 337/922/93 +f 340/926/63 341/927/94 339/928/63 +f 342/929/94 343/930/57 341/927/94 +f 344/931/57 345/932/66 343/930/57 +f 346/933/66 347/934/60 345/932/66 +f 348/935/60 349/936/67 347/934/60 +f 350/937/67 335/923/58 349/936/67 +f 363/938/95 364/939/96 297/887/90 +f 301/914/92 270/855/86 269/857/86 +f 410/940/97 411/941/98 409/942/99 +f 414/943/100 415/944/101 413/945/102 +f 416/946/103 417/947/104 415/944/101 +f 418/948/105 419/949/106 417/947/104 +f 420/950/107 421/951/108 419/949/106 +f 418/952/105 442/953/109 443/954/110 +f 411/955/98 430/956/111 409/942/99 +f 431/695/112 433/957/113 434/958/114 +f 409/942/99 429/959/115 424/960/116 +f 419/961/106 436/962/117 435/963/118 +f 419/961/106 434/958/114 417/964/104 +f 417/964/104 433/957/113 415/944/101 +f 413/965/102 433/957/113 432/694/119 +f 442/953/109 441/966/120 440/967/121 +f 439/968/122 446/969/123 447/970/62 +f 423/971/124 439/968/122 410/972/97 +f 414/973/100 442/953/109 416/974/103 +f 412/975/125 439/968/122 440/967/121 +f 420/976/107 445/977/126 422/978/127 +f 418/952/105 444/979/128 420/976/107 +f 435/963/118 430/956/111 434/958/114 +f 448/980/62 444/979/128 447/970/62 +f 430/956/111 437/981/59 429/959/115 +f 435/963/118 438/982/59 437/981/59 +f 444/979/128 439/968/122 447/970/62 +f 462/983/62 455/984/129 463/985/129 +f 460/986/57 453/987/124 461/988/124 +f 458/989/59 451/990/116 459/991/116 +f 464/992/58 449/993/130 457/994/130 +f 463/985/129 456/995/58 464/992/58 +f 461/988/124 454/996/62 462/997/62 +f 459/991/116 452/998/57 460/986/57 +f 457/994/130 450/999/59 458/989/59 +f 478/1000/62 471/1001/129 479/1002/129 +f 476/1003/57 469/1004/124 477/1005/124 +f 474/1006/59 467/1007/116 475/1008/116 +f 480/1009/58 465/1010/130 473/1011/130 +f 479/1002/129 472/1012/58 480/1009/58 +f 477/1005/124 470/1013/62 478/1014/62 +f 475/1008/116 468/1015/57 476/1003/57 +f 473/1011/130 466/1016/59 474/1006/59 +f 483/718/131 490/1017/132 484/1018/131 +f 490/1017/132 481/1019/133 482/1020/133 +f 488/1021/134 483/718/61 484/1018/61 +f 485/1022/135 488/1021/134 486/1023/135 +f 498/1024/130 505/1025/59 497/1026/59 +f 496/1027/116 503/1028/57 495/1029/57 +f 494/1030/124 501/1031/62 493/1032/62 +f 492/1033/129 499/1034/58 491/1035/58 +f 491/1035/58 506/1036/130 498/1024/130 +f 497/1026/59 504/1037/116 496/1027/116 +f 495/1029/57 502/1038/124 494/1030/124 +f 493/1039/62 500/1040/129 492/1033/129 +f 514/1041/130 521/1042/59 513/1043/59 +f 512/1044/116 519/1045/57 511/1046/57 +f 510/1047/124 517/1048/62 509/1049/62 +f 508/1050/129 515/1051/58 507/1052/58 +f 507/1052/58 522/1053/130 514/1041/130 +f 513/1043/59 520/1054/116 512/1044/116 +f 511/1046/57 518/1055/124 510/1047/124 +f 509/1056/62 516/1057/129 508/1050/129 +f 627/1058/129 611/1059/136 610/1060/129 +f 615/1061/137 621/1062/130 616/1063/130 +f 612/1064/138 624/1065/93 613/1066/93 +f 611/1059/136 625/1067/138 612/1064/138 +f 630/1068/67 608/1069/139 607/1070/67 +f 621/1062/130 617/1071/140 616/1063/130 +f 624/1072/93 614/1073/141 613/1074/93 +f 629/1075/139 609/1076/142 608/1069/139 +f 617/1071/140 619/1077/143 618/1078/143 +f 623/1079/141 615/1061/137 614/1073/141 +f 609/1076/142 627/1058/129 610/1060/129 +f 618/1078/143 630/1068/67 607/1070/67 +f 194/781/72 196/784/59 195/782/59 +f 196/784/59 198/786/73 197/785/73 +f 198/786/73 200/788/74 199/787/74 +f 200/788/74 202/858/75 201/789/75 +f 209/790/60 221/1080/60 220/791/76 +f 206/793/59 218/803/59 217/794/73 +f 213/796/77 225/805/77 224/797/62 +f 210/799/78 222/810/78 221/800/60 +f 207/802/79 219/811/79 218/803/59 +f 214/804/80 226/812/80 225/805/77 +f 204/806/74 216/813/74 215/807/63 +f 211/809/81 223/814/81 222/810/78 +f 208/792/76 220/791/76 219/811/79 +f 203/808/63 215/807/63 226/812/80 +f 205/795/73 217/794/73 216/813/74 +f 212/798/62 224/797/62 223/814/81 +f 228/815/82 230/818/80 229/816/80 +f 230/818/80 232/820/77 231/819/77 +f 232/820/77 234/822/62 233/821/62 +f 234/822/62 236/888/83 235/823/83 +f 243/824/60 255/1081/60 254/825/76 +f 240/827/59 252/837/59 251/828/73 +f 247/830/77 259/839/77 258/831/62 +f 244/833/78 256/844/78 255/834/60 +f 241/836/79 253/845/79 252/837/59 +f 248/838/80 260/846/80 259/839/77 +f 238/840/74 250/847/74 249/841/63 +f 245/843/81 257/848/81 256/844/78 +f 242/826/76 254/825/76 253/845/79 +f 237/842/63 249/841/63 260/846/80 +f 239/829/73 251/828/73 250/847/74 +f 246/832/62 258/831/62 257/848/81 +f 266/849/79 295/1082/79 299/850/76 +f 299/850/76 265/853/84 262/852/84 +f 265/853/84 361/1083/85 296/854/85 +f 270/855/86 330/1084/87 329/856/87 +f 202/858/75 228/1085/82 227/859/82 +f 329/856/88 330/1084/88 194/781/72 +f 277/860/60 289/1086/60 288/861/76 +f 274/863/59 286/873/59 285/864/73 +f 281/866/77 293/875/77 292/867/62 +f 278/869/78 290/880/78 289/870/60 +f 275/872/79 287/881/79 286/873/59 +f 282/874/80 294/882/80 293/875/77 +f 272/876/74 284/883/74 283/877/63 +f 279/879/81 291/884/81 290/880/78 +f 276/862/76 288/861/76 287/881/79 +f 271/878/63 283/877/63 294/882/80 +f 273/865/73 285/864/73 284/883/74 +f 280/868/62 292/867/62 291/884/81 +f 331/885/89 332/1087/89 298/886/90 +f 236/888/83 332/1087/91 331/885/91 +f 311/889/60 323/1088/60 322/890/76 +f 308/892/59 320/902/59 319/893/73 +f 315/895/77 327/904/77 326/896/62 +f 312/898/78 324/909/78 323/899/60 +f 309/901/79 321/910/79 320/902/59 +f 316/903/80 328/911/80 327/904/77 +f 306/905/74 318/912/74 317/906/63 +f 313/908/81 325/913/81 324/909/78 +f 310/891/76 322/890/76 321/910/79 +f 305/907/63 317/906/63 328/911/80 +f 307/894/73 319/893/73 318/912/74 +f 314/897/62 326/896/62 325/913/81 +f 301/914/92 295/1082/79 266/849/79 +f 296/854/85 361/1083/85 365/916/78 +f 304/917/78 365/916/78 366/918/81 +f 366/918/81 363/938/95 300/920/62 +f 336/921/58 338/924/93 337/922/93 +f 338/924/93 340/1089/63 339/925/63 +f 340/926/63 342/929/94 341/927/94 +f 342/929/94 344/931/57 343/930/57 +f 344/931/57 346/933/66 345/932/66 +f 346/933/66 348/935/60 347/934/60 +f 348/935/60 350/937/67 349/936/67 +f 350/937/67 336/921/58 335/923/58 +f 297/887/90 298/886/90 363/938/95 +f 298/886/90 300/920/62 363/938/95 +f 269/857/86 267/1090/144 301/914/92 +f 301/914/92 268/915/59 270/855/86 +f 410/940/97 412/1091/125 411/941/98 +f 414/943/100 416/946/103 415/944/101 +f 416/946/103 418/948/105 417/947/104 +f 418/948/105 420/950/107 419/949/106 +f 420/950/107 422/1092/127 421/951/108 +f 418/952/105 416/974/103 442/953/109 +f 411/955/98 431/695/112 430/956/111 +f 434/958/114 430/956/111 431/695/112 +f 431/695/112 432/694/119 433/957/113 +f 409/942/99 430/956/111 429/959/115 +f 419/961/106 421/951/108 436/962/117 +f 419/961/106 435/963/118 434/958/114 +f 417/964/104 434/958/114 433/957/113 +f 413/965/102 415/944/101 433/957/113 +f 439/968/122 443/954/110 440/967/121 +f 443/954/110 442/953/109 440/967/121 +f 423/971/124 446/969/123 439/968/122 +f 414/973/100 441/966/120 442/953/109 +f 412/975/125 410/972/97 439/968/122 +f 420/976/107 444/979/128 445/977/126 +f 418/952/105 443/954/110 444/979/128 +f 435/963/118 437/981/59 430/956/111 +f 448/980/62 445/977/126 444/979/128 +f 435/963/118 436/962/117 438/982/59 +f 444/979/128 443/954/110 439/968/122 +f 462/983/62 454/1093/62 455/984/129 +f 460/986/57 452/998/57 453/987/124 +f 458/989/59 450/999/59 451/990/116 +f 464/992/58 456/995/58 449/993/130 +f 463/985/129 455/984/129 456/995/58 +f 461/988/124 453/987/124 454/996/62 +f 459/991/116 451/990/116 452/998/57 +f 457/994/130 449/993/130 450/999/59 +f 478/1000/62 470/1094/62 471/1001/129 +f 476/1003/57 468/1015/57 469/1004/124 +f 474/1006/59 466/1016/59 467/1007/116 +f 480/1009/58 472/1012/58 465/1010/130 +f 479/1002/129 471/1001/129 472/1012/58 +f 477/1005/124 469/1004/124 470/1013/62 +f 475/1008/116 467/1007/116 468/1015/57 +f 473/1011/130 465/1010/130 466/1016/59 +f 483/718/131 489/1095/132 490/1017/132 +f 490/1017/132 489/1095/132 481/1019/133 +f 488/1021/134 487/1096/134 483/718/61 +f 485/1022/135 487/1096/134 488/1021/134 +f 498/1024/130 506/1036/130 505/1025/59 +f 496/1027/116 504/1037/116 503/1028/57 +f 494/1030/124 502/1038/124 501/1031/62 +f 492/1033/129 500/1040/129 499/1034/58 +f 491/1035/58 499/1034/58 506/1036/130 +f 497/1026/59 505/1025/59 504/1037/116 +f 495/1029/57 503/1028/57 502/1038/124 +f 493/1039/62 501/1097/62 500/1040/129 +f 514/1041/130 522/1053/130 521/1042/59 +f 512/1044/116 520/1054/116 519/1045/57 +f 510/1047/124 518/1055/124 517/1048/62 +f 508/1050/129 516/1057/129 515/1051/58 +f 507/1052/58 515/1051/58 522/1053/130 +f 513/1043/59 521/1042/59 520/1054/116 +f 511/1046/57 519/1045/57 518/1055/124 +f 509/1056/62 517/1098/62 516/1057/129 +f 627/1058/129 626/1099/136 611/1059/136 +f 615/1061/137 622/1100/137 621/1062/130 +f 612/1064/138 625/1067/138 624/1065/93 +f 611/1059/136 626/1099/136 625/1067/138 +f 630/1068/67 629/1075/139 608/1069/139 +f 621/1062/130 620/1101/140 617/1071/140 +f 624/1072/93 623/1079/141 614/1073/141 +f 629/1075/139 628/1102/142 609/1076/142 +f 617/1071/140 620/1101/140 619/1077/143 +f 623/1079/141 622/1100/137 615/1061/137 +f 609/1076/142 628/1102/142 627/1058/129 +f 618/1078/143 619/1077/143 630/1068/67 +o Latch +v 0.125000 1.000000 1.000000 +v -0.125000 1.000000 1.000000 +v 0.125000 1.000000 -0.625000 +v -0.125000 1.000000 -0.625000 +v 0.125000 1.312500 1.000000 +v -0.125000 1.312500 1.000000 +v 0.125000 1.312500 -0.625000 +v -0.125000 1.312500 -0.625000 +v 0.500000 1.312500 -0.625000 +v 0.500000 1.000000 -0.625000 +v -0.500000 1.312500 -0.625000 +v -0.500000 1.000000 -0.625000 +v 0.500000 1.000000 -0.875000 +v 0.500000 1.312500 -0.875000 +v -0.500000 1.312500 -0.875000 +v -0.500000 1.000000 -0.875000 +v 0.500000 1.062500 -0.937500 +v 0.500000 1.250000 -0.937500 +v -0.500000 1.250000 -0.937500 +v -0.500000 1.062500 -0.937500 +vt 0.953704 0.522727 +vt 0.972222 0.522727 +vt 0.972222 0.551136 +vt 1.000000 0.323864 +vt 0.981481 0.471591 +vt 0.981481 0.323864 +vt 0.958333 0.471591 +vt 0.939815 0.323864 +vt 0.958333 0.323864 +vt 0.916667 0.323864 +vt 0.939815 0.471591 +vt 0.916667 0.471591 +vt 0.958333 0.295455 +vt 0.939815 0.295455 +vt 0.875000 0.500000 +vt 0.949074 0.471591 +vt 0.949074 0.500000 +vt 0.949074 0.522727 +vt 0.875000 0.528409 +vt 0.875000 0.522727 +vt 0.875000 0.573864 +vt 0.949074 0.551136 +vt 0.949074 0.573864 +vt 0.870370 0.551136 +vt 0.851852 0.551136 +vt 0.851852 0.522727 +vt 0.949074 0.545455 +vt 0.949074 0.528409 +vt 0.875000 0.551136 +vt 0.953704 0.551136 +vt 1.000000 0.471591 +vt 0.875000 0.471591 +vt 0.870370 0.522727 +vt 0.875000 0.545455 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.7071 -0.7071 +s off +f 644/1103/145 639/1104/145 640/1105/145 +f 632/1106/146 633/1107/146 631/1108/146 +f 637/1109/147 636/1110/147 635/1111/147 +f 632/1112/148 638/1113/148 634/1114/148 +f 631/1115/149 636/1110/149 632/1116/149 +f 633/1107/145 635/1111/145 631/1108/145 +f 641/1117/149 640/1118/149 639/1119/149 +f 644/1120/150 649/1121/150 645/1122/150 +f 639/1119/147 645/1122/147 641/1117/147 +f 642/1123/146 643/1124/146 640/1125/146 +f 646/1126/148 642/1127/148 641/1128/148 +f 647/1129/151 649/1121/151 648/1130/151 +f 646/1131/152 647/1129/152 643/1124/152 +f 640/1105/145 643/1132/145 644/1103/145 +f 643/1132/145 647/1129/145 644/1103/145 +f 647/1129/145 648/1130/145 644/1103/145 +f 632/1106/146 634/1133/146 633/1107/146 +f 637/1109/147 638/1113/147 636/1110/147 +f 632/1112/148 636/1110/148 638/1113/148 +f 631/1115/149 635/1111/149 636/1110/149 +f 633/1107/145 637/1109/145 635/1111/145 +f 641/1117/149 642/1134/149 640/1118/149 +f 644/1120/150 648/1130/150 649/1121/150 +f 639/1119/147 644/1120/147 645/1122/147 +f 642/1123/146 646/1131/146 643/1124/146 +f 641/1128/148 645/1135/148 646/1126/148 +f 645/1135/148 649/1121/148 646/1126/148 +f 649/1121/148 650/1136/148 646/1126/148 +f 647/1129/151 650/1136/151 649/1121/151 +f 646/1131/152 650/1136/152 647/1129/152 +o Gun +v -0.500000 0.000000 0.000000 +v 0.500000 0.000000 0.000000 +v -0.500000 1.000000 -0.750000 +v -0.500000 1.000000 0.000000 +v 0.500000 1.000000 0.000000 +v 0.500000 1.000000 -0.750000 +v 0.500000 0.500000 0.000000 +v 0.500000 0.500000 -0.750000 +v 0.500000 0.000000 1.000000 +v -0.500000 0.000000 1.000000 +v -0.500000 0.500000 0.000000 +v -0.500000 0.500000 -0.750000 +v 0.625000 0.500000 0.000000 +v 0.625000 0.500000 -0.750000 +v 0.625000 0.000000 1.000000 +v -0.625000 0.000000 1.000000 +v -0.625000 0.500000 0.000000 +v -0.625000 0.500000 -0.750000 +v 0.500000 -0.125000 1.000000 +v -0.500000 -0.125000 1.000000 +v 0.625000 0.000000 -0.750000 +v -0.625000 0.000000 -0.750000 +v 0.500000 -0.125000 -0.750000 +v -0.500000 -0.125000 -0.750000 +v 0.187500 -0.750000 0.500000 +v 0.187500 -0.125000 0.250000 +v 0.187500 -0.750000 1.000000 +v 0.187500 -0.125000 1.000000 +v 0.437500 -0.750000 0.500000 +v 0.437500 -0.125000 0.250000 +v 0.437500 -0.750000 1.000000 +v 0.437500 -0.125000 1.000000 +v 0.437500 -0.500000 0.500000 +v 0.437500 -0.323223 0.573223 +v 0.437500 -0.250000 0.750000 +v 0.437500 -0.323223 0.926777 +v 0.437500 -0.500000 1.000000 +v 0.437500 -0.676777 0.926777 +v 0.437500 -0.750000 0.750000 +v 0.437500 -0.676777 0.573223 +v 0.559000 -0.323223 0.573223 +v 0.559000 -0.500000 0.500000 +v 0.559000 -0.250000 0.750000 +v 0.559000 -0.323223 0.926777 +v 0.559000 -0.500000 1.000000 +v 0.559000 -0.676777 0.926777 +v 0.559000 -0.750000 0.750000 +v 0.559000 -0.676777 0.573223 +v -0.500000 0.125000 -0.750000 +v -0.250000 -0.125000 -0.750000 +v 0.250000 -0.125000 -0.750000 +v 0.500000 0.125000 -0.750000 +v -0.250000 0.875000 -0.750000 +v -0.500000 0.625000 -0.750000 +v 0.500000 0.625000 -0.750000 +v 0.250000 0.875000 -0.750000 +v -0.250000 -0.125000 -2.500000 +v -0.500000 0.125000 -2.500000 +v 0.500000 0.125000 -2.500000 +v 0.250000 -0.125000 -2.500000 +v -0.500000 0.625000 -2.500000 +v -0.250000 0.875000 -2.500000 +v 0.250000 0.875000 -2.500000 +v 0.500000 0.625000 -2.500000 +v 0.695083 0.632582 -0.687500 +v 0.750000 0.500000 -0.687500 +v 0.695083 0.367418 -0.687500 +v 0.562500 0.312500 -0.687500 +v 0.429917 0.367417 -0.687500 +v 0.375000 0.500000 -0.687500 +v 0.429917 0.632583 -0.687500 +v 0.562500 0.687500 -0.687500 +v 0.695083 0.632582 -2.562500 +v 0.750000 0.500000 -2.562500 +v 0.562500 0.312500 -2.562500 +v 0.429917 0.367417 -2.562500 +v 0.375000 0.500000 -2.562500 +v 0.429917 0.632583 -2.562500 +v 0.562500 0.687500 -2.562500 +v 0.695083 0.367418 -2.562500 +v 0.125000 -0.125000 -0.500000 +v -0.125000 -0.125000 -0.500000 +v 0.125000 -2.125000 -1.250000 +v -0.125000 -2.125000 -1.250000 +v 0.125000 -2.125000 -2.000000 +v -0.125000 -2.125000 -2.000000 +v 0.125000 -1.875000 -2.250000 +v -0.125000 -1.875000 -2.250000 +v 0.125000 -0.500000 -1.625000 +v -0.125000 -0.500000 -1.625000 +v 0.125000 -0.250000 -1.625000 +v -0.125000 -0.250000 -1.625000 +v 0.125000 -0.250000 -2.500000 +v -0.125000 -0.250000 -2.500000 +v 0.125000 -0.125000 -2.500000 +v -0.125000 -0.125000 -2.500000 +v 0.125000 -0.125000 -1.500000 +v -0.125000 -0.125000 -1.500000 +v 0.250000 -0.125000 -0.625000 +v 0.250000 -2.125000 -1.375000 +v 0.250000 -2.125000 -1.875000 +v 0.250000 -1.875000 -2.125000 +v 0.250000 -0.500000 -1.500000 +v 0.250000 -0.250000 -1.500000 +v 0.250000 -0.125000 -1.375000 +v -0.250000 -2.125000 -1.375000 +v -0.250000 -0.125000 -0.625000 +v -0.250000 -2.125000 -1.875000 +v -0.250000 -1.875000 -2.125000 +v -0.250000 -0.500000 -1.500000 +v -0.250000 -0.250000 -1.500000 +v -0.250000 -0.125000 -1.375000 +v 0.062500 -2.125000 -1.250000 +v -0.062500 -2.125000 -1.250000 +v 0.062500 -0.375000 0.250000 +v -0.062500 -0.375000 0.250000 +v 0.062500 -0.125000 0.250000 +v -0.062500 -0.125000 0.250000 +v 0.062500 -0.125000 -0.500000 +v -0.062500 -0.125000 -0.500000 +v 0.093750 -0.750000 0.875000 +v -0.093750 -0.750000 0.875000 +v 0.093750 -0.750000 0.687500 +v -0.093750 -0.750000 0.687500 +v 0.093750 -1.750000 0.375000 +v -0.093750 -1.750000 0.375000 +v 0.093750 -1.625000 0.250000 +v -0.093750 -1.625000 0.250000 +v 0.093750 -2.125000 -1.250000 +v -0.093750 -2.125000 -1.250000 +v 0.093750 -2.000000 -1.250000 +v -0.093750 -2.000000 -1.250000 v 0.562500 0.625000 -2.562500 v 0.474112 0.588388 -2.562500 v 0.437500 0.500000 -2.562500 @@ -672,106 +3333,6 @@ v 0.187500 -2.286612 -7.599112 v 0.187500 -2.463388 -7.599112 v 0.187500 -2.500000 -7.687500 v 0.187500 -2.463388 -7.775888 -v 0.250000 0.437500 0.000000 -v 0.156250 0.412380 0.000000 -v 0.087620 0.343750 0.000000 -v 0.062500 0.250000 0.000000 -v 0.087620 0.156250 0.000000 -v 0.156250 0.087620 0.000000 -v 0.250000 0.062500 0.000000 -v 0.343750 0.087620 0.000000 -v 0.412380 0.156250 0.000000 -v 0.437500 0.250000 0.000000 -v 0.412380 0.343750 0.000000 -v 0.343750 0.412380 0.000000 -v 0.250000 0.437500 1.000000 -v 0.156250 0.412380 1.000000 -v 0.087620 0.343750 1.000000 -v 0.062500 0.250000 1.000000 -v 0.087620 0.156250 1.000000 -v 0.156250 0.087620 1.000000 -v 0.250000 0.062500 1.000000 -v 0.343750 0.087620 1.000000 -v 0.412380 0.156250 1.000000 -v 0.437500 0.250000 1.000000 -v 0.412380 0.343750 1.000000 -v 0.343750 0.412380 1.000000 -v 0.250000 0.460938 0.000000 -v 0.144531 0.432677 0.000000 -v 0.067323 0.355469 0.000000 -v 0.039062 0.250000 0.000000 -v 0.067323 0.144531 0.000000 -v 0.144531 0.067323 0.000000 -v 0.250000 0.039062 0.000000 -v 0.355469 0.067322 0.000000 -v 0.432677 0.144531 0.000000 -v 0.460938 0.250000 0.000000 -v 0.432677 0.355469 0.000000 -v 0.355469 0.432677 0.000000 -v 0.250000 0.460938 -0.062500 -v 0.144531 0.432677 -0.062500 -v 0.067323 0.355469 -0.062500 -v 0.039062 0.250000 -0.062500 -v 0.067323 0.144531 -0.062500 -v 0.144531 0.067323 -0.062500 -v 0.250000 0.039062 -0.062500 -v 0.355469 0.067322 -0.062500 -v 0.432677 0.144531 -0.062500 -v 0.460938 0.250000 -0.062500 -v 0.432677 0.355469 -0.062500 -v 0.355469 0.432677 -0.062500 -v 0.510000 1.000000 1.000000 -v 0.510000 0.750000 0.000000 -v 0.510000 0.750000 1.000000 -v 0.510000 1.000000 0.000000 -v -0.510000 1.000000 1.000000 -v -0.510000 1.000000 0.000000 -v -0.510000 0.750000 1.000000 -v -0.510000 0.750000 0.000000 -v -0.125000 1.000000 1.000000 -v -0.125000 1.312500 1.000000 -v -0.125000 1.000000 2.000000 -v -0.125000 1.312500 1.250000 -v -0.250000 1.312500 1.000000 -v -0.250000 1.000000 2.000000 -v -0.250000 1.312500 1.250000 -v -0.250000 1.000000 1.000000 -v -0.125000 1.000000 1.000000 -v -0.500000 1.000000 1.000000 -v -0.125000 1.312500 1.000000 -v -0.500000 1.312500 1.000000 -v -0.125000 1.437500 0.875000 -v -0.500000 1.437500 0.875000 -v -0.125000 1.437500 0.625000 -v -0.500000 1.437500 0.625000 -v -0.125000 1.312500 0.500000 -v -0.500000 1.312500 0.500000 -v -0.125000 1.000000 0.500000 -v -0.500000 1.000000 0.500000 -v -0.187500 1.437500 0.875000 -v -0.187500 1.437500 0.625000 -v -0.187500 1.562500 0.875000 -v -0.187500 1.562500 0.625000 -v -0.125000 1.437500 0.625000 -v -0.125000 1.437500 0.875000 -v -0.125000 1.562500 0.625000 -v -0.125000 1.562500 0.875000 -v -0.125000 1.000000 0.000000 -v -0.500000 1.000000 0.000000 -v -0.125000 1.312500 -0.312500 -v -0.500000 1.312500 -0.312500 -v -0.125000 1.312500 -0.625000 -v -0.500000 1.312500 -0.625000 -v -0.125000 1.000000 -0.625000 -v -0.500000 1.000000 -0.625000 -v -0.250000 1.312500 0.500000 -v -0.250000 1.000000 0.500000 -v -0.250000 1.312500 0.000000 -v -0.250000 1.000000 0.000000 -v -0.125000 1.000000 0.500000 -v -0.125000 1.312500 0.500000 -v -0.125000 1.000000 0.000000 -v -0.125000 1.312500 0.000000 v -0.437500 -0.750000 0.500000 v -0.437500 -0.125000 0.250000 v -0.437500 -0.750000 1.000000 @@ -780,150 +3341,6 @@ v -0.187500 -0.750000 0.500000 v -0.187500 -0.125000 0.250000 v -0.187500 -0.750000 1.000000 v -0.187500 -0.125000 1.000000 -v -0.250000 0.437500 0.000000 -v -0.343750 0.412380 0.000000 -v -0.412380 0.343750 0.000000 -v -0.437500 0.250000 0.000000 -v -0.412380 0.156250 0.000000 -v -0.343750 0.087620 0.000000 -v -0.250000 0.062500 0.000000 -v -0.156250 0.087620 0.000000 -v -0.087620 0.156250 0.000000 -v -0.062500 0.250000 0.000000 -v -0.087620 0.343750 0.000000 -v -0.156250 0.412380 0.000000 -v -0.250000 0.437500 1.000000 -v -0.343750 0.412380 1.000000 -v -0.412380 0.343750 1.000000 -v -0.437500 0.250000 1.000000 -v -0.412380 0.156250 1.000000 -v -0.343750 0.087620 1.000000 -v -0.250000 0.062500 1.000000 -v -0.156250 0.087620 1.000000 -v -0.087620 0.156250 1.000000 -v -0.062500 0.250000 1.000000 -v -0.087620 0.343750 1.000000 -v -0.156250 0.412380 1.000000 -v -0.250000 0.460938 0.000000 -v -0.355469 0.432677 0.000000 -v -0.432677 0.355469 0.000000 -v -0.460938 0.250000 0.000000 -v -0.432677 0.144531 0.000000 -v -0.355469 0.067323 0.000000 -v -0.250000 0.039062 0.000000 -v -0.144531 0.067322 0.000000 -v -0.067323 0.144531 0.000000 -v -0.039062 0.250000 0.000000 -v -0.067323 0.355469 0.000000 -v -0.144531 0.432677 0.000000 -v -0.250000 0.460938 -0.062500 -v -0.355469 0.432677 -0.062500 -v -0.432677 0.355469 -0.062500 -v -0.460938 0.250000 -0.062500 -v -0.432677 0.144531 -0.062500 -v -0.355469 0.067323 -0.062500 -v -0.250000 0.039062 -0.062500 -v -0.144531 0.067322 -0.062500 -v -0.067323 0.144531 -0.062500 -v -0.039062 0.250000 -0.062500 -v -0.067323 0.355469 -0.062500 -v -0.144531 0.432677 -0.062500 -v 0.250000 0.937500 0.000000 -v 0.156250 0.912380 0.000000 -v 0.087620 0.843750 0.000000 -v 0.062500 0.750000 0.000000 -v 0.087620 0.656250 0.000000 -v 0.156250 0.587620 0.000000 -v 0.250000 0.562500 0.000000 -v 0.343750 0.587620 0.000000 -v 0.412380 0.656250 0.000000 -v 0.437500 0.750000 0.000000 -v 0.412380 0.843750 0.000000 -v 0.343750 0.912380 0.000000 -v 0.250000 0.937500 1.000000 -v 0.156250 0.912380 1.000000 -v 0.087620 0.843750 1.000000 -v 0.062500 0.750000 1.000000 -v 0.087620 0.656250 1.000000 -v 0.156250 0.587620 1.000000 -v 0.250000 0.562500 1.000000 -v 0.343750 0.587620 1.000000 -v 0.412380 0.656250 1.000000 -v 0.437500 0.750000 1.000000 -v 0.412380 0.843750 1.000000 -v 0.343750 0.912380 1.000000 -v 0.250000 0.960938 0.000000 -v 0.144531 0.932677 0.000000 -v 0.067323 0.855469 0.000000 -v 0.039062 0.750000 0.000000 -v 0.067323 0.644531 0.000000 -v 0.144531 0.567323 0.000000 -v 0.250000 0.539062 0.000000 -v 0.355469 0.567322 0.000000 -v 0.432677 0.644531 0.000000 -v 0.460938 0.750000 0.000000 -v 0.432677 0.855469 0.000000 -v 0.355469 0.932677 0.000000 -v 0.250000 0.960938 -0.062500 -v 0.144531 0.932677 -0.062500 -v 0.067323 0.855469 -0.062500 -v 0.039062 0.750000 -0.062500 -v 0.067323 0.644531 -0.062500 -v 0.144531 0.567323 -0.062500 -v 0.250000 0.539062 -0.062500 -v 0.355469 0.567322 -0.062500 -v 0.432677 0.644531 -0.062500 -v 0.460938 0.750000 -0.062500 -v 0.432677 0.855469 -0.062500 -v 0.355469 0.932677 -0.062500 -v -0.250000 0.937500 0.000000 -v -0.343750 0.912380 0.000000 -v -0.412380 0.843750 0.000000 -v -0.437500 0.750000 0.000000 -v -0.412380 0.656250 0.000000 -v -0.343750 0.587620 0.000000 -v -0.250000 0.562500 0.000000 -v -0.156250 0.587620 0.000000 -v -0.087620 0.656250 0.000000 -v -0.062500 0.750000 0.000000 -v -0.087620 0.843750 0.000000 -v -0.156250 0.912380 0.000000 -v -0.250000 0.937500 1.000000 -v -0.343750 0.912380 1.000000 -v -0.412380 0.843750 1.000000 -v -0.437500 0.750000 1.000000 -v -0.412380 0.656250 1.000000 -v -0.343750 0.587620 1.000000 -v -0.250000 0.562500 1.000000 -v -0.156250 0.587620 1.000000 -v -0.087620 0.656250 1.000000 -v -0.062500 0.750000 1.000000 -v -0.087620 0.843750 1.000000 -v -0.156250 0.912380 1.000000 -v -0.250000 0.960938 0.000000 -v -0.355469 0.932677 0.000000 -v -0.432677 0.855469 0.000000 -v -0.460938 0.750000 0.000000 -v -0.432677 0.644531 0.000000 -v -0.355469 0.567323 0.000000 -v -0.250000 0.539062 0.000000 -v -0.144531 0.567322 0.000000 -v -0.067323 0.644531 0.000000 -v -0.039062 0.750000 0.000000 -v -0.067323 0.855469 0.000000 -v -0.144531 0.932677 0.000000 -v -0.250000 0.960938 -0.062500 -v -0.355469 0.932677 -0.062500 -v -0.432677 0.855469 -0.062500 -v -0.460938 0.750000 -0.062500 -v -0.432677 0.644531 -0.062500 -v -0.355469 0.567323 -0.062500 -v -0.250000 0.539062 -0.062500 -v -0.144531 0.567322 -0.062500 -v -0.067323 0.644531 -0.062500 -v -0.039062 0.750000 -0.062500 -v -0.067323 0.855469 -0.062500 -v -0.144531 0.932677 -0.062500 v -0.437500 -0.500000 1.000000 v -0.437500 -0.323223 0.926777 v -0.437500 -0.250000 0.750000 @@ -1091,138 +3508,22 @@ v -0.474112 0.411612 -2.562500 v -0.437500 0.500000 -2.562500 v -0.474112 0.588388 -2.562500 v -0.562500 0.625000 -2.562500 -vt 0.055443 0.000276 -vt 0.062346 0.008193 -vt 0.055443 0.005923 -vt 0.071383 0.011570 -vt 0.064646 0.003302 -vt 0.069248 0.022865 -vt 0.067398 0.014394 -vt 0.071383 0.034160 -vt 0.073849 0.022865 -vt 0.002691 0.102479 -vt 0.004826 0.113774 -vt 0.000225 0.113774 -vt 0.002691 0.125069 -vt 0.018631 0.091185 -vt 0.011729 0.099102 -vt 0.009428 0.094211 -vt 0.006676 0.105303 -vt 0.009428 0.003302 -vt 0.006676 0.014394 -vt 0.002691 0.011570 -vt 0.018631 0.005923 -vt 0.011729 0.008193 -vt 0.002691 0.034160 -vt 0.004826 0.022865 -vt 0.006676 0.031336 -vt 0.000225 0.022865 -vt 0.071383 0.125069 -vt 0.069248 0.113774 -vt 0.073849 0.113774 -vt 0.071383 0.102479 -vt 0.067398 0.105303 -vt 0.064646 0.094211 -vt 0.055443 0.096832 -vt 0.055443 0.091185 -vt 0.087963 0.329545 -vt 0.092593 0.340909 -vt 0.083333 0.335227 -vt 0.071383 0.056749 -vt 0.069248 0.068044 -vt 0.067398 0.059573 -vt 0.071383 0.079339 -vt 0.073849 0.068044 -vt 0.064646 0.087607 -vt 0.067398 0.076515 -vt 0.055443 0.084986 -vt 0.062346 0.082716 -vt 0.002691 0.147658 -vt 0.004826 0.158953 -vt 0.000225 0.158953 -vt 0.111111 0.431818 -vt 0.111111 0.340909 -vt 0.074074 0.340909 -vt 0.092593 0.431818 -vt 0.074074 0.431818 -vt 0.037037 0.431818 -vt 0.037037 0.340909 -vt 0.018631 0.181542 -vt 0.025533 0.173625 -vt 0.048541 0.173625 -vt 0.069248 0.158953 -vt 0.071383 0.147658 -vt 0.073849 0.158953 -vt 0.073849 0.181542 -vt 0.062346 0.173625 -vt 0.067398 0.167424 -vt 0.009428 0.087607 -vt 0.018631 0.084986 -vt 0.018631 0.090633 -vt 0.006676 0.076515 -vt 0.011729 0.082716 -vt 0.002691 0.079339 -vt 0.004826 0.068044 -vt 0.002691 0.056749 -vt 0.000225 0.068044 -vt 0.000225 0.181542 -vt 0.006676 0.167424 -vt 0.011729 0.173625 -vt 0.011729 0.053372 -vt 0.009428 0.045455 -vt 0.011729 0.037537 -vt 0.048541 0.037537 -vt 0.043488 0.059573 -vt 0.025533 0.053372 -vt 0.018631 0.039807 -vt 0.018631 0.051102 -vt 0.041639 0.068044 -vt 0.030586 0.059573 -vt 0.055443 0.039807 -vt 0.048541 0.053372 -vt 0.043488 0.031336 -vt 0.032436 0.022865 -vt 0.041639 0.022865 -vt 0.062346 0.053372 -vt 0.062346 0.037537 -vt 0.064646 0.045455 -vt 0.055443 0.051102 -vt 0.030586 0.014394 -vt 0.043488 0.014394 -vt 0.025533 0.008193 -vt 0.048541 0.008193 -vt 0.043488 0.076515 -vt 0.032436 0.068044 -vt 0.048541 0.082716 -vt 0.055443 0.090633 -vt 0.025533 0.082716 -vt 0.011729 0.128446 -vt 0.006676 0.122245 -vt 0.011729 0.144281 -vt 0.009428 0.136364 -vt 0.062346 0.144281 -vt 0.064646 0.136364 -vt 0.062346 0.128446 -vt 0.018631 0.142011 -vt 0.055443 0.142011 -vt 0.055443 0.130716 -vt 0.043488 0.105303 -vt 0.032435 0.113774 -vt 0.030586 0.105303 -vt 0.025533 0.099102 -vt 0.048541 0.099102 -vt 0.041639 0.158953 -vt 0.030586 0.167424 -vt 0.032435 0.158953 -vt 0.043488 0.150482 -vt 0.030586 0.150482 -vt 0.048541 0.144281 -vt 0.048541 0.128446 -vt 0.041639 0.113774 -vt 0.030586 0.122245 -vt 0.025533 0.144281 -vt 0.018631 0.130716 -vt 0.025533 0.128446 +v 0.500000 1.000000 0.000000 +v 0.125000 1.000000 0.000000 +v 0.500000 1.312500 -0.312500 +v 0.125000 1.312500 -0.312500 +v 0.500000 1.312500 -0.625000 +v 0.125000 1.312500 -0.625000 +v 0.500000 1.000000 -0.625000 +v 0.125000 1.000000 -0.625000 +v -0.125000 1.000000 0.000000 +v -0.500000 1.000000 0.000000 +v -0.125000 1.312500 -0.312500 +v -0.500000 1.312500 -0.312500 +v -0.125000 1.312500 -0.625000 +v -0.500000 1.312500 -0.625000 +v -0.125000 1.000000 -0.625000 +v -0.500000 1.000000 -0.625000 vt 0.523148 0.568182 vt 0.578704 0.613636 vt 0.523148 0.613636 @@ -1238,26 +3539,6 @@ vt 0.439815 0.465909 vt 0.310185 0.420455 vt 0.310185 0.465909 vt 0.236111 0.465909 -vt 0.502268 0.673238 -vt 0.506944 0.670861 -vt 0.506944 0.687094 -vt 0.486111 0.670455 -vt 0.430556 0.704545 -vt 0.430556 0.670455 -vt 0.497732 0.673238 -vt 0.497732 0.684717 -vt 0.488379 0.684717 -vt 0.384259 0.704545 -vt 0.347222 0.704545 -vt 0.384259 0.670455 -vt 0.310185 0.704545 -vt 0.347222 0.670455 -vt 0.365741 0.625000 -vt 0.328704 0.602273 -vt 0.467593 0.602273 -vt 0.467593 0.772727 -vt 0.328704 0.772727 -vt 0.365741 0.750000 vt 0.652778 0.409091 vt 0.578704 0.397727 vt 0.652778 0.397727 @@ -1270,7 +3551,7 @@ vt 0.523148 0.625000 vt 0.226852 0.465909 vt 0.236111 0.568182 vt 0.226852 0.556818 -vt 0.237069 0.454560 +vt 0.236111 0.454545 vt 0.523148 0.465909 vt 0.652778 0.454545 vt 0.652778 0.465909 @@ -1283,73 +3564,6 @@ vt 0.347222 0.465909 vt 0.347222 0.556818 vt 0.476852 0.556818 vt 0.476852 0.465909 -vt 0.675926 0.596591 -vt 0.652778 0.630682 -vt 0.652778 0.596591 -vt 0.699074 0.596591 -vt 0.675926 0.630682 -vt 0.722222 0.596591 -vt 0.699074 0.630682 -vt 0.699074 0.659091 -vt 0.652778 0.659091 -vt 0.699074 0.568182 -vt 0.018519 0.340909 -vt 0.018519 0.431818 -vt 0.000000 0.340909 -vt 0.023148 0.329545 -vt 0.027778 0.335227 -vt -0.000000 0.607955 -vt 0.023148 0.642045 -vt -0.000000 0.642045 -vt 0.023148 0.607955 -vt 0.032407 0.642045 -vt 0.032407 0.607955 -vt 0.050926 0.642045 -vt 0.050926 0.607955 -vt 0.060185 0.642045 -vt 0.060185 0.607955 -vt 0.083333 0.642045 -vt 0.060185 0.653409 -vt 0.060185 0.681818 -vt 0.023148 0.681818 -vt 0.023148 0.596591 -vt 0.120370 0.642045 -vt 0.083333 0.670455 -vt 0.083333 0.642045 -vt 0.083333 0.602273 -vt 0.120370 0.630682 -vt 0.083333 0.630682 -vt 0.143519 0.630682 -vt 0.143519 0.642045 -vt 0.953704 0.522727 -vt 0.972222 0.522727 -vt 0.972222 0.551136 -vt 1.000000 0.323864 -vt 0.981481 0.471591 -vt 0.981481 0.323864 -vt 0.958333 0.471591 -vt 0.939815 0.323864 -vt 0.958333 0.323864 -vt 0.916667 0.323864 -vt 0.939815 0.471591 -vt 0.916667 0.471591 -vt 0.958333 0.295455 -vt 0.939815 0.295455 -vt 0.875000 0.500000 -vt 0.949074 0.471591 -vt 0.949074 0.500000 -vt 0.949074 0.522727 -vt 0.875000 0.528409 -vt 0.875000 0.522727 -vt 0.875000 0.573864 -vt 0.949074 0.551136 -vt 0.949074 0.573864 -vt 0.870370 0.551136 -vt 0.851852 0.551136 -vt 0.851852 0.522727 -vt 0.949074 0.545455 -vt 0.949074 0.528409 -vt 0.875000 0.551136 vt 0.263889 0.670455 vt 0.226852 0.613636 vt 0.282407 0.613636 @@ -1364,49 +3578,9 @@ vt 0.180556 0.670455 vt 0.162037 0.659195 vt 0.143434 0.636364 vt 0.162037 0.613532 -vt 0.166667 0.562500 -vt 0.185185 0.534091 -vt 0.185185 0.562500 -vt 0.185185 0.573864 -vt 0.166667 0.573864 -vt 0.111111 0.562500 -vt 0.185185 0.602273 -vt 0.648148 0.329545 -vt 0.611111 0.352273 -vt 0.611111 0.329545 -vt 0.134259 0.369318 -vt 0.555556 0.346591 -vt 0.555556 0.369318 -vt 0.555556 0.318182 -vt 0.134259 0.346591 -vt 0.111111 0.318182 -vt 0.111111 0.346591 -vt 0.111111 0.369318 -vt 0.555556 0.397727 -vt 0.578704 0.369318 -vt 0.578704 0.346591 -vt 0.722222 0.375000 -vt 0.722222 0.397727 -vt 0.648148 0.397727 -vt 0.722222 0.306818 -vt 0.722222 0.329545 -vt 0.648148 0.352273 -vt 0.907407 0.034091 -vt 0.916667 0.000000 -vt 0.944444 0.011364 -vt 0.740741 0.284091 -vt 0.722222 0.284091 -vt 0.740741 0.375000 -vt 0.740741 0.397727 -vt 0.750000 0.397727 -vt 0.731481 0.363636 -vt 0.740741 0.363636 -vt 0.750000 0.306818 -vt 0.740741 0.306818 vt 0.722222 -0.000000 vt 0.685185 0.159091 vt 0.685185 -0.000000 -vt 0.731481 0.318182 vt 0.666667 0.250000 vt 0.611111 0.227273 vt 0.629630 0.159091 @@ -1427,15 +3601,6 @@ vt 0.726852 0.283278 vt 0.685847 0.267046 vt 0.699074 0.250813 vt 0.712301 0.267045 -vt 0.805556 0.601731 -vt 0.796738 0.590909 -vt 0.805556 0.580087 -vt 0.736111 0.669642 -vt 0.722884 0.653409 -vt 0.736111 0.637176 -vt 0.777277 0.653381 -vt 0.764050 0.669614 -vt 0.750823 0.653381 vt 0.833333 0.295455 vt 0.824074 0.284091 vt 0.833333 0.250000 @@ -1469,162 +3634,6 @@ vt 0.699074 0.721591 vt 0.587963 0.738636 vt 0.587963 0.670455 vt 0.699074 0.687500 -vt 0.726852 0.534091 -vt 0.837963 0.568182 -vt 0.763889 0.534091 -vt 0.763889 0.534091 -vt 0.652778 0.568182 -vt 0.726852 0.534091 -vt 0.196368 0.480158 -vt 0.220299 0.480158 -vt 0.208333 0.505593 -vt 0.211665 0.522687 -vt 0.203704 0.528328 -vt 0.195742 0.511404 -vt 0.777277 0.653381 -vt 0.764050 0.669614 -vt 0.750823 0.653381 -vt 0.736111 0.669642 -vt 0.722884 0.653409 -vt 0.736111 0.637176 -vt 0.805556 0.601731 -vt 0.796738 0.590909 -vt 0.805556 0.580087 -vt 0.069444 0.585227 -vt 0.087963 0.596591 -vt 0.069444 0.596591 -vt 0.087963 0.568182 -vt 0.069444 0.579545 -vt 0.069444 0.568182 -vt 0.087963 0.585227 -vt 0.097222 0.579545 -vt 0.097222 0.585227 -vt 0.087963 0.579545 -vt 0.060185 0.585227 -vt 0.083333 0.477273 -vt 0.101852 0.488636 -vt 0.083333 0.488636 -vt 0.083333 0.443182 -vt 0.101852 0.454545 -vt 0.083333 0.454545 -vt 0.101852 0.477273 -vt 0.111111 0.488636 -vt 0.074074 0.477273 -vt 0.101852 0.465909 -vt 0.083333 0.500000 -vt 0.101852 0.443182 -vt 0.111111 0.454545 -vt 0.074074 0.443182 -vt 0.101852 0.431818 -vt 0.083333 0.465909 -vt 0.083333 0.443182 -vt 0.101852 0.454545 -vt 0.083333 0.454545 -vt 0.101852 0.443182 -vt 0.111111 0.454545 -vt 0.074074 0.443182 -vt 0.101852 0.431818 -vt 0.083333 0.465909 -vt 0.055556 0.562500 -vt 0.037037 0.505682 -vt 0.055556 0.505682 -vt 0.111111 0.522727 -vt 0.074074 0.545455 -vt 0.074074 0.522727 -vt 0.018519 0.545455 -vt 0.018519 0.522727 -vt 0.092593 0.500000 -vt 0.074074 0.500000 -vt 0.092593 0.568182 -vt 0.111111 0.545455 -vt 0.185185 0.500000 -vt 0.189815 0.488636 -vt 0.189815 0.500000 -vt 0.185185 0.431818 -vt 0.189815 0.443182 -vt 0.185185 0.443182 -vt 0.185185 0.409091 -vt 0.189815 0.397727 -vt 0.189815 0.409091 -vt 0.189815 0.511364 -vt 0.185185 0.511364 -vt 0.189815 0.454545 -vt 0.185185 0.454545 -vt 0.185185 0.465909 -vt 0.189815 0.477273 -vt 0.185185 0.477273 -vt 0.189815 0.420455 -vt 0.185185 0.420455 -vt 0.189815 0.522727 -vt 0.185185 0.522727 -vt 0.189815 0.465909 -vt 0.185185 0.488636 -vt 0.189815 0.431818 -vt 0.185185 0.534091 -vt 0.189815 0.534091 -vt 0.210648 0.437320 -vt 0.196742 0.427467 -vt 0.210648 0.397907 -vt 0.196303 0.446021 -vt 0.220365 0.446021 -vt 0.208334 0.471595 -vt 1.000000 0.863636 -vt 0.555556 1.000000 -vt 0.555556 0.863636 -vt 0.555556 1.000000 -vt 1.000000 0.863636 -vt 1.000000 1.000000 -vt 0.166667 0.562500 -vt 0.185185 0.534091 -vt 0.185185 0.562500 -vt 0.185185 0.573864 -vt 0.166667 0.573864 -vt 0.111111 0.562500 -vt 0.185185 0.602273 -vt -0.000000 0.607955 -vt 0.023148 0.642045 -vt -0.000000 0.642045 -vt 0.023148 0.607955 -vt 0.032407 0.642045 -vt 0.032407 0.607955 -vt 0.050926 0.642045 -vt 0.050926 0.607955 -vt 0.060185 0.642045 -vt 0.060185 0.607955 -vt 0.083333 0.642045 -vt 0.060185 0.653409 -vt 0.060185 0.681818 -vt 0.023148 0.681818 -vt 0.023148 0.596591 -vt 0.069444 0.585227 -vt 0.087963 0.596591 -vt 0.069444 0.596591 -vt 0.087963 0.568182 -vt 0.069444 0.579545 -vt 0.069444 0.568182 -vt 0.087963 0.585227 -vt 0.097222 0.579545 -vt 0.097222 0.585227 -vt 0.087963 0.579545 -vt 0.060185 0.585227 -vt 0.675926 0.596591 -vt 0.652778 0.630682 -vt 0.652778 0.596591 -vt 0.699074 0.596591 -vt 0.675926 0.630682 -vt 0.722222 0.596591 -vt 0.699074 0.630682 -vt 0.699074 0.659091 -vt 0.652778 0.659091 -vt 0.699074 0.568182 -vt 0.120370 0.642045 -vt 0.083333 0.670455 -vt 0.083333 0.642045 -vt 0.083333 0.602273 -vt 0.120370 0.630682 -vt 0.083333 0.630682 -vt 0.143519 0.630682 -vt 0.143519 0.642045 vt 0.263889 0.670455 vt 0.226852 0.613636 vt 0.282407 0.613636 @@ -1636,99 +3645,6 @@ vt 0.226852 0.693182 vt 0.226852 0.670455 vt 0.180556 0.693182 vt 0.180556 0.670455 -vt 0.185185 0.500000 -vt 0.189815 0.488636 -vt 0.189815 0.500000 -vt 0.185185 0.431818 -vt 0.189815 0.443182 -vt 0.185185 0.443182 -vt 0.185185 0.409091 -vt 0.189815 0.397727 -vt 0.189815 0.409091 -vt 0.189815 0.511364 -vt 0.185185 0.511364 -vt 0.189815 0.454545 -vt 0.185185 0.454545 -vt 0.185185 0.465909 -vt 0.189815 0.477273 -vt 0.185185 0.477273 -vt 0.189815 0.420455 -vt 0.185185 0.420455 -vt 0.189815 0.522727 -vt 0.185185 0.522727 -vt 0.189815 0.465909 -vt 0.185185 0.488636 -vt 0.189815 0.431818 -vt 0.185185 0.534091 -vt 0.189815 0.534091 -vt 0.210648 0.437320 -vt 0.196742 0.427467 -vt 0.210648 0.397907 -vt 0.196303 0.446021 -vt 0.220365 0.446021 -vt 0.208334 0.471595 -vt 0.185185 0.500000 -vt 0.189815 0.488636 -vt 0.189815 0.500000 -vt 0.185185 0.431818 -vt 0.189815 0.443182 -vt 0.185185 0.443182 -vt 0.185185 0.409091 -vt 0.189815 0.397727 -vt 0.189815 0.409091 -vt 0.189815 0.511364 -vt 0.185185 0.511364 -vt 0.189815 0.454545 -vt 0.185185 0.454545 -vt 0.185185 0.465909 -vt 0.189815 0.477273 -vt 0.185185 0.477273 -vt 0.189815 0.420455 -vt 0.185185 0.420455 -vt 0.189815 0.522727 -vt 0.185185 0.522727 -vt 0.189815 0.465909 -vt 0.185185 0.488636 -vt 0.189815 0.431818 -vt 0.185185 0.534091 -vt 0.189815 0.534091 -vt 0.210648 0.437320 -vt 0.196742 0.427467 -vt 0.210648 0.397907 -vt 0.196303 0.446021 -vt 0.220365 0.446021 -vt 0.208334 0.471595 -vt 0.185185 0.500000 -vt 0.189815 0.488636 -vt 0.189815 0.500000 -vt 0.185185 0.431818 -vt 0.189815 0.443182 -vt 0.185185 0.443182 -vt 0.185185 0.409091 -vt 0.189815 0.397727 -vt 0.189815 0.409091 -vt 0.189815 0.511364 -vt 0.185185 0.511364 -vt 0.189815 0.454545 -vt 0.185185 0.454545 -vt 0.185185 0.465909 -vt 0.189815 0.477273 -vt 0.185185 0.477273 -vt 0.189815 0.420455 -vt 0.185185 0.420455 -vt 0.189815 0.522727 -vt 0.185185 0.522727 -vt 0.189815 0.465909 -vt 0.185185 0.488636 -vt 0.189815 0.431818 -vt 0.185185 0.534091 -vt 0.189815 0.534091 -vt 0.210648 0.437320 -vt 0.196742 0.427467 -vt 0.210648 0.397907 -vt 0.196303 0.446021 -vt 0.220365 0.446021 -vt 0.208334 0.471595 vt 0.180640 0.636364 vt 0.162037 0.659195 vt 0.143434 0.636364 @@ -1747,77 +3663,38 @@ vt 0.726852 0.283278 vt 0.685847 0.267046 vt 0.699074 0.250813 vt 0.712301 0.267045 -vt 0.067398 0.031336 -vt 0.018631 0.096832 -vt 0.018631 0.000276 -vt 0.067398 0.122245 -vt 0.062346 0.099102 -vt 0.092593 0.318182 -vt 0.006676 0.150482 -vt 0.055443 0.175895 -vt 0.055443 0.181542 -vt 0.018631 0.175895 -vt 0.043488 0.167424 -vt 0.067398 0.150482 -vt 0.006676 0.059573 -vt 0.030586 0.031336 -vt 0.025533 0.037537 -vt 0.030586 0.076515 -vt 0.043488 0.122245 +vt 0.675926 0.596591 +vt 0.652778 0.630682 +vt 0.652778 0.596591 +vt 0.699074 0.596591 +vt 0.675926 0.630682 +vt 0.722222 0.596591 +vt 0.699074 0.630682 +vt 0.699074 0.659091 +vt 0.652778 0.659091 +vt 0.699074 0.568182 +vt 0.675926 0.596591 +vt 0.652778 0.630682 +vt 0.652778 0.596591 +vt 0.699074 0.596591 +vt 0.675926 0.630682 +vt 0.722222 0.596591 +vt 0.699074 0.630682 +vt 0.699074 0.659091 +vt 0.652778 0.659091 +vt 0.699074 0.568182 vt 0.384259 0.602273 vt 0.384259 0.420455 -vt 0.511621 0.673238 -vt 0.513558 0.678977 -vt 0.511621 0.684717 -vt 0.502268 0.684717 -vt 0.500331 0.678977 -vt 0.486111 0.704545 -vt 0.486442 0.678978 -vt 0.488379 0.673238 -vt 0.493056 0.670861 -vt 0.499669 0.678978 -vt 0.493056 0.687094 -vt 0.310185 0.670455 vt 0.476852 0.454545 vt 0.513889 0.454545 vt 0.513889 0.568182 vt 0.476852 0.568182 -vt 0.722222 0.630682 -vt 0.652778 0.568182 -vt 0.000000 0.431818 -vt 0.018519 0.318182 -vt 0.083333 0.607955 -vt 0.023148 0.653409 -vt 0.023148 0.568182 -vt 0.060185 0.568182 -vt 0.060185 0.596591 -vt 0.120370 0.670455 -vt 0.120370 0.602273 -vt 0.953704 0.551136 -vt 1.000000 0.471591 -vt 0.875000 0.471591 -vt 0.870370 0.522727 -vt 0.875000 0.545455 vt 0.310185 0.693182 vt 0.180640 0.636364 vt 0.175192 0.652508 vt 0.148882 0.652508 vt 0.148882 0.620219 vt 0.175192 0.620219 -vt 0.111111 0.534091 -vt 0.111111 0.573864 -vt 0.111111 0.602273 -vt 0.111111 0.397727 -vt 0.722222 0.352273 -vt 0.648148 0.284091 -vt 0.944444 0.034091 -vt 0.935185 0.045455 -vt 0.916667 0.045455 -vt 0.907407 0.011364 -vt 0.935185 0.000000 -vt 0.750000 0.375000 -vt 0.750000 0.284091 -vt 0.740741 0.318182 vt 0.685185 0.181818 vt 0.685185 0.227273 vt 0.629630 0.250000 @@ -1835,21 +3712,6 @@ vt 0.699074 0.283278 vt 0.689721 0.278524 vt 0.689721 0.255567 vt 0.708427 0.255567 -vt 0.811791 0.583257 -vt 0.814373 0.590909 -vt 0.811791 0.598561 -vt 0.799320 0.598561 -vt 0.799320 0.583257 -vt 0.745464 0.641931 -vt 0.749338 0.653409 -vt 0.745464 0.664888 -vt 0.726758 0.664888 -vt 0.726758 0.641931 -vt 0.754698 0.641903 -vt 0.764050 0.637148 -vt 0.773403 0.641903 -vt 0.773403 0.664860 -vt 0.754698 0.664860 vt 0.824074 0.261364 vt 0.870370 0.250000 vt 0.870370 0.295455 @@ -1861,150 +3723,7 @@ vt 0.009259 0.852273 vt 0.009259 0.852273 vt 0.699074 0.738636 vt 0.699074 0.670455 -vt 0.745370 0.500000 -vt 0.652778 0.568182 -vt 0.745370 0.500000 -vt 0.837963 0.568182 -vt 0.201425 0.503321 -vt 0.196368 0.497115 -vt 0.194517 0.488636 -vt 0.201425 0.473951 -vt 0.208333 0.471680 -vt 0.215242 0.473951 -vt 0.222150 0.488636 -vt 0.220299 0.497115 -vt 0.215242 0.503321 -vt 0.199107 0.526816 -vt 0.195742 0.522687 -vt 0.194510 0.517045 -vt 0.199107 0.507274 -vt 0.203704 0.505763 -vt 0.208300 0.507274 -vt 0.211665 0.511404 -vt 0.212897 0.517045 -vt 0.208300 0.526816 -vt 0.754698 0.641903 -vt 0.764050 0.637148 -vt 0.773403 0.641903 -vt 0.773403 0.664860 -vt 0.754698 0.664860 -vt 0.745464 0.641931 -vt 0.749338 0.653409 -vt 0.745464 0.664888 -vt 0.726758 0.664888 -vt 0.726758 0.641931 -vt 0.811791 0.583257 -vt 0.814373 0.590909 -vt 0.811791 0.598561 -vt 0.799320 0.598561 -vt 0.799320 0.583257 -vt 0.060185 0.579545 -vt 0.111111 0.477273 -vt 0.074074 0.488636 -vt 0.083333 0.465909 -vt 0.101852 0.500000 -vt 0.111111 0.443182 -vt 0.074074 0.454545 -vt 0.083333 0.431818 -vt 0.101852 0.465909 -vt 0.111111 0.443182 -vt 0.074074 0.454545 -vt 0.083333 0.431818 -vt 0.101852 0.465909 -vt 0.037037 0.562500 -vt 0.074074 0.568182 -vt 0.185185 0.397727 -vt 0.224554 0.427467 -vt 0.218677 0.434680 -vt 0.202619 0.434680 -vt 0.194591 0.417614 -vt 0.196742 0.407760 -vt 0.202619 0.400547 -vt 0.218677 0.400547 -vt 0.224554 0.407760 -vt 0.226705 0.417614 -vt 0.201388 0.469311 -vt 0.196303 0.463070 -vt 0.194441 0.454545 -vt 0.201388 0.439780 -vt 0.208334 0.437496 -vt 0.215280 0.439780 -vt 0.222226 0.454545 -vt 0.220365 0.463070 -vt 0.215280 0.469311 -vt 1.000000 1.000000 -vt 0.555556 0.863636 -vt 0.111111 0.534091 -vt 0.111111 0.573864 -vt 0.111111 0.602273 -vt 0.083333 0.607955 -vt 0.023148 0.653409 -vt 0.023148 0.568182 -vt 0.060185 0.568182 -vt 0.060185 0.596591 -vt 0.060185 0.579545 -vt 0.722222 0.630682 -vt 0.652778 0.568182 -vt 0.120370 0.670455 -vt 0.120370 0.602273 vt 0.310185 0.693182 -vt 0.185185 0.397727 -vt 0.224554 0.427467 -vt 0.218677 0.434680 -vt 0.202619 0.434680 -vt 0.194591 0.417614 -vt 0.196742 0.407760 -vt 0.202619 0.400547 -vt 0.218677 0.400547 -vt 0.224554 0.407760 -vt 0.226705 0.417614 -vt 0.201388 0.469311 -vt 0.196303 0.463070 -vt 0.194441 0.454545 -vt 0.201388 0.439780 -vt 0.208334 0.437496 -vt 0.215280 0.439780 -vt 0.222226 0.454545 -vt 0.220365 0.463070 -vt 0.215280 0.469311 -vt 0.185185 0.397727 -vt 0.224554 0.427467 -vt 0.218677 0.434680 -vt 0.202619 0.434680 -vt 0.194591 0.417614 -vt 0.196742 0.407760 -vt 0.202619 0.400547 -vt 0.218677 0.400547 -vt 0.224554 0.407760 -vt 0.226705 0.417614 -vt 0.201388 0.469311 -vt 0.196303 0.463070 -vt 0.194441 0.454545 -vt 0.201388 0.439780 -vt 0.208334 0.437496 -vt 0.215280 0.439780 -vt 0.222226 0.454545 -vt 0.220365 0.463070 -vt 0.215280 0.469311 -vt 0.185185 0.397727 -vt 0.224554 0.427467 -vt 0.218677 0.434680 -vt 0.202619 0.434680 -vt 0.194591 0.417614 -vt 0.196742 0.407760 -vt 0.202619 0.400547 -vt 0.218677 0.400547 -vt 0.224554 0.407760 -vt 0.226705 0.417614 -vt 0.201388 0.469311 -vt 0.196303 0.463070 -vt 0.194441 0.454545 -vt 0.201388 0.439780 -vt 0.208334 0.437496 -vt 0.215280 0.439780 -vt 0.222226 0.454545 -vt 0.220365 0.463070 -vt 0.215280 0.469311 vt 0.175192 0.652508 vt 0.148882 0.652508 vt 0.148882 0.620219 @@ -2035,165 +3754,10 @@ vt 0.699074 0.283278 vt 0.689721 0.278524 vt 0.689721 0.255567 vt 0.708427 0.255567 -vt 0.074074 0.090909 -vt 0.611111 0.079545 -vt 0.611111 0.090909 -vt 0.074074 0.079545 -vt 0.611111 0.068182 -vt 0.074074 0.068182 -vt 0.611111 0.056818 -vt 0.074074 0.056818 -vt 0.611111 0.045455 -vt -0.000000 0.863636 -vt 0.532407 0.869318 -vt -0.000000 0.869318 -vt -0.000000 0.880682 -vt 0.532407 0.886364 -vt -0.000000 0.886364 -vt -0.000000 0.909091 -vt 0.532407 0.914773 -vt -0.000000 0.914773 -vt -0.000000 0.926136 -vt 0.532407 0.931818 -vt -0.000000 0.931818 -vt -0.000000 0.875000 -vt 0.532407 0.880682 -vt -0.000000 0.903409 -vt 0.532407 0.909091 -vt -0.000000 0.892045 -vt 0.532407 0.897727 -vt -0.000000 0.897727 -vt -0.000000 0.920455 -vt 0.532407 0.926136 -vt 0.532407 0.875000 -vt 0.532407 0.903409 -vt 0.532407 0.892045 -vt 0.532407 0.920455 -vt 0.074074 0.318182 -vt 0.611111 0.306818 -vt 0.611111 0.318182 -vt 0.074074 0.306818 -vt 0.611111 0.295455 -vt 0.074074 0.295455 -vt 0.611111 0.284091 -vt 0.074074 0.284091 -vt 0.611111 0.272727 -vt -0.000000 0.863636 -vt 0.532407 0.869318 -vt -0.000000 0.869318 -vt -0.000000 0.880682 -vt 0.532407 0.886364 -vt -0.000000 0.886364 -vt -0.000000 0.909091 -vt 0.532407 0.914773 -vt -0.000000 0.914773 -vt -0.000000 0.926136 -vt 0.532407 0.931818 -vt -0.000000 0.931818 -vt -0.000000 0.875000 -vt 0.532407 0.880682 -vt -0.000000 0.903409 -vt 0.532407 0.909091 -vt -0.000000 0.892045 -vt 0.532407 0.897727 -vt -0.000000 0.897727 -vt -0.000000 0.920455 -vt 0.532407 0.926136 -vt 0.532407 0.875000 -vt 0.532407 0.903409 -vt 0.532407 0.892045 -vt 0.532407 0.920455 -vt 0.074074 0.136364 -vt 0.537037 0.147727 -vt 0.074074 0.147727 -vt 0.074074 0.159091 -vt 0.537037 0.159091 -vt 0.074074 0.204545 -vt 0.074074 0.113636 -vt 0.611111 0.102273 -vt 0.611111 0.113636 -vt 0.074074 0.045455 -vt 0.611111 0.000000 -vt -0.000000 0.863636 -vt 0.532407 0.869318 -vt -0.000000 0.869318 -vt -0.000000 0.880682 -vt 0.532407 0.886364 -vt -0.000000 0.886364 -vt -0.000000 0.909091 -vt 0.532407 0.914773 -vt -0.000000 0.914773 -vt -0.000000 0.926136 -vt 0.532407 0.931818 -vt -0.000000 0.931818 -vt -0.000000 0.875000 -vt 0.532407 0.880682 -vt -0.000000 0.903409 -vt 0.532407 0.909091 -vt -0.000000 0.892045 -vt 0.532407 0.897727 -vt -0.000000 0.897727 -vt -0.000000 0.920455 -vt 0.532407 0.926136 -vt 0.532407 0.875000 -vt 0.532407 0.903409 -vt 0.532407 0.892045 -vt 0.532407 0.920455 -vt 0.611111 0.261364 -vt 0.074074 0.250000 -vt 0.611111 0.250000 -vt 0.074074 0.272727 -vt -0.000000 0.863636 -vt 0.532407 0.869318 -vt -0.000000 0.869318 -vt -0.000000 0.880682 -vt 0.532407 0.886364 -vt -0.000000 0.886364 -vt -0.000000 0.909091 -vt 0.532407 0.914773 -vt -0.000000 0.914773 -vt -0.000000 0.926136 -vt 0.532407 0.931818 -vt -0.000000 0.931818 -vt -0.000000 0.875000 -vt 0.532407 0.880682 -vt -0.000000 0.903409 -vt 0.532407 0.909091 -vt -0.000000 0.892045 -vt 0.532407 0.897727 -vt -0.000000 0.897727 -vt -0.000000 0.920455 -vt 0.532407 0.926136 -vt 0.532407 0.875000 -vt 0.532407 0.903409 -vt 0.532407 0.892045 -vt 0.532407 0.920455 -vt 0.537037 0.125000 -vt 0.074074 0.125000 -vt 0.537037 0.215909 -vt 0.074074 0.215909 -vt 0.537037 0.227273 -vt 0.074074 0.227273 -vt 0.074074 0.238636 -vt 0.560185 0.659091 -vt 0.467593 0.664773 -vt 0.467593 0.659091 -vt 0.560185 0.664773 -vt 0.467593 0.670455 -vt 0.560185 0.625000 -vt 0.467593 0.630682 -vt 0.467593 0.625000 -vt 0.560185 0.630682 -vt 0.467593 0.636364 -vt 0.560185 0.636364 -vt 0.467593 0.642045 -vt 0.560185 0.642045 -vt 0.467593 0.647727 -vt 0.560185 0.647727 -vt 0.467593 0.653409 -vt 0.560185 0.653409 -vt 0.537037 0.238636 -vt 0.611111 0.238636 +vt 0.722222 0.630682 +vt 0.652778 0.568182 +vt 0.722222 0.630682 +vt 0.652778 0.568182 vt 0.226852 0.613636 vt 0.240741 0.602273 vt 0.240741 0.613636 @@ -2211,49 +3775,6 @@ vt 0.254630 0.613636 vt 0.171296 0.602273 vt 0.199074 0.602273 vt 0.226852 0.602273 -vt 0.833333 0.204545 -vt 0.851852 0.045455 -vt 0.851852 0.204545 -vt 0.981481 0.045455 -vt 0.962963 0.068182 -vt 0.962963 0.045455 -vt 0.981481 0.068182 -vt 0.962963 0.181818 -vt 0.981481 0.181818 -vt 0.962963 0.204545 -vt 0.981481 0.204545 -vt 0.962963 0.250000 -vt 0.925926 0.181818 -vt 0.953704 0.068182 -vt 0.916667 0.181818 -vt 0.907407 0.045455 -vt 0.861111 0.204545 -vt 0.953704 0.068182 -vt 0.916667 0.181818 -vt 0.861111 0.227273 -vt 0.851852 0.227273 -vt 0.925926 0.204545 -vt 0.953704 0.250000 -vt 0.916667 0.204545 -vt 0.925926 0.181818 -vt 0.944444 0.045455 -vt 0.935185 0.045455 -vt 0.916667 0.045455 -vt 0.861111 0.204545 -vt 0.861111 0.227273 -vt 0.870370 0.227273 -vt 0.851852 0.227273 -vt 0.851852 0.204545 -vt 0.944444 0.045455 -vt 0.962963 0.068182 -vt 0.907407 0.045455 -vt 0.925926 0.204545 -vt 0.953704 0.250000 -vt 0.962963 0.250000 -vt 0.916667 0.204545 -vt 0.870370 0.250000 -vt 0.870370 0.227273 -vt 0.870370 0.250000 vt 0.685185 0.181818 vt 0.824074 0.193182 vt 0.685185 0.193182 @@ -2271,40 +3792,6 @@ vt 0.685185 0.204545 vt 0.824074 0.181818 vt 0.824074 0.215909 vt 0.824074 0.238636 -vt 0.870370 0.568182 -vt 0.861111 0.579545 -vt 0.861111 0.568182 -vt 0.814815 0.568182 -vt 0.805556 0.579545 -vt 0.805556 0.568182 -vt 0.833333 0.568182 -vt 0.824074 0.579545 -vt 0.824074 0.568182 -vt 0.851852 0.568182 -vt 0.842593 0.579545 -vt 0.842593 0.568182 -vt 0.851852 0.579545 -vt 0.796296 0.579545 -vt 0.796296 0.568182 -vt 0.814815 0.579545 -vt 0.833333 0.579545 -vt 0.796296 0.568182 -vt 0.787037 0.636364 -vt 0.787037 0.568182 -vt 0.740741 0.568182 -vt 0.731481 0.636364 -vt 0.731481 0.568182 -vt 0.759259 0.568182 -vt 0.750000 0.636364 -vt 0.750000 0.568182 -vt 0.777778 0.568182 -vt 0.768519 0.636364 -vt 0.768519 0.568182 -vt 0.777778 0.636364 -vt 0.722222 0.636364 -vt 0.722222 0.568182 -vt 0.740741 0.636364 -vt 0.759259 0.636364 vt 0.750000 0.295455 vt 0.768519 0.477273 vt 0.750000 0.477273 @@ -2338,69 +3825,6 @@ vt 0.777778 0.477273 vt 0.851852 0.443182 vt 0.842593 0.443182 vt 0.833333 0.477273 -vt 0.726852 0.477273 -vt 0.745370 0.477273 -vt 0.652778 0.500000 -vt 0.652778 0.477273 -vt 0.763889 0.477273 -vt 0.837963 0.500000 -vt 0.837963 0.477273 -vt 0.226852 0.488636 -vt 0.222222 0.494318 -vt 0.222222 0.488636 -vt 0.222222 0.448864 -vt 0.226852 0.454545 -vt 0.222222 0.454545 -vt 0.222222 0.500000 -vt 0.226852 0.505682 -vt 0.222222 0.505682 -vt 0.226852 0.500000 -vt 0.226852 0.471591 -vt 0.222222 0.477273 -vt 0.222222 0.471591 -vt 0.222222 0.460227 -vt 0.226852 0.437500 -vt 0.222222 0.443182 -vt 0.222222 0.437500 -vt 0.226852 0.477273 -vt 0.222222 0.482955 -vt 0.226852 0.465909 -vt 0.222222 0.465909 -vt 0.226852 0.443182 -vt 0.768519 0.568182 -vt 0.759259 0.636364 -vt 0.759259 0.568182 -vt 0.750000 0.568182 -vt 0.740741 0.636364 -vt 0.740741 0.568182 -vt 0.731481 0.568182 -vt 0.722222 0.636364 -vt 0.722222 0.568182 -vt 0.787037 0.568182 -vt 0.777778 0.636364 -vt 0.777778 0.568182 -vt 0.768519 0.636364 -vt 0.750000 0.636364 -vt 0.731481 0.636364 -vt 0.796296 0.568182 -vt 0.787037 0.636364 -vt 0.842593 0.568182 -vt 0.833333 0.579545 -vt 0.833333 0.568182 -vt 0.824074 0.568182 -vt 0.814815 0.579545 -vt 0.814815 0.568182 -vt 0.805556 0.568182 -vt 0.796296 0.579545 -vt 0.796296 0.568182 -vt 0.861111 0.568182 -vt 0.851852 0.579545 -vt 0.851852 0.568182 -vt 0.842593 0.579545 -vt 0.824074 0.579545 -vt 0.805556 0.579545 -vt 0.870370 0.568182 -vt 0.861111 0.579545 vt 0.601852 0.852273 vt 0.305556 0.863636 vt 0.305556 0.852273 @@ -2572,102 +3996,6 @@ vt 0.958333 0.772727 vt 0.953704 0.784091 vt 0.962963 0.784091 vt 0.958333 0.863636 -vt 0.111111 0.488636 -vt 0.111111 0.431818 -vt 0.111111 0.397727 -vt 0.111111 0.500000 -vt 0.111111 0.443182 -vt 0.111111 0.465909 -vt 0.111111 0.409091 -vt 0.111111 0.511364 -vt 0.111111 0.454545 -vt 0.111111 0.477273 -vt 0.111111 0.420455 -vt 0.111111 0.522727 -vt 0.194444 0.454545 -vt 0.194444 0.477273 -vt 0.194444 0.420455 -vt 0.194444 0.522727 -vt 0.194444 0.465909 -vt 0.194444 0.488636 -vt 0.194444 0.431818 -vt 0.194444 0.534091 -vt 0.194444 0.500000 -vt 0.194444 0.443182 -vt 0.194444 0.409091 -vt 0.194444 0.511364 -vt 0.111111 0.488636 -vt 0.111111 0.431818 -vt 0.111111 0.397727 -vt 0.111111 0.500000 -vt 0.111111 0.443182 -vt 0.111111 0.465909 -vt 0.111111 0.409091 -vt 0.111111 0.511364 -vt 0.111111 0.454545 -vt 0.111111 0.477273 -vt 0.111111 0.420455 -vt 0.111111 0.522727 -vt 0.194444 0.454545 -vt 0.194444 0.477273 -vt 0.194444 0.420455 -vt 0.194444 0.522727 -vt 0.194444 0.465909 -vt 0.194444 0.488636 -vt 0.194444 0.431818 -vt 0.194444 0.534091 -vt 0.194444 0.500000 -vt 0.194444 0.443182 -vt 0.194444 0.409091 -vt 0.194444 0.511364 -vt 0.111111 0.488636 -vt 0.111111 0.431818 -vt 0.111111 0.397727 -vt 0.111111 0.500000 -vt 0.111111 0.443182 -vt 0.111111 0.465909 -vt 0.111111 0.409091 -vt 0.111111 0.511364 -vt 0.111111 0.454545 -vt 0.111111 0.477273 -vt 0.111111 0.420455 -vt 0.111111 0.522727 -vt 0.194444 0.454545 -vt 0.194444 0.477273 -vt 0.194444 0.420455 -vt 0.194444 0.522727 -vt 0.194444 0.465909 -vt 0.194444 0.488636 -vt 0.194444 0.431818 -vt 0.194444 0.534091 -vt 0.194444 0.500000 -vt 0.194444 0.443182 -vt 0.194444 0.409091 -vt 0.194444 0.511364 -vt 0.111111 0.488636 -vt 0.111111 0.431818 -vt 0.111111 0.397727 -vt 0.111111 0.500000 -vt 0.111111 0.443182 -vt 0.111111 0.465909 -vt 0.111111 0.409091 -vt 0.111111 0.511364 -vt 0.111111 0.454545 -vt 0.111111 0.477273 -vt 0.111111 0.420455 -vt 0.111111 0.522727 -vt 0.194444 0.454545 -vt 0.194444 0.477273 -vt 0.194444 0.420455 -vt 0.194444 0.522727 -vt 0.194444 0.465909 -vt 0.194444 0.488636 -vt 0.194444 0.431818 -vt 0.194444 0.534091 -vt 0.194444 0.500000 -vt 0.194444 0.443182 -vt 0.194444 0.409091 -vt 0.194444 0.511364 vt 0.226852 0.613636 vt 0.240741 0.602273 vt 0.240741 0.613636 @@ -2906,34 +4234,11 @@ vt 1.000000 0.772727 vt 0.972222 0.784091 vt 0.972222 0.772727 vt 1.000000 0.784091 -vt 0.532407 0.863636 -vt 0.532407 0.863636 -vt 0.537037 0.136364 -vt 0.537037 0.204545 -vt 0.074074 0.102273 -vt 0.074074 0.000000 -vt 0.532407 0.863636 -vt 0.074074 0.261364 -vt 0.532407 0.863636 -vt 0.560185 0.670455 -vt 0.611111 0.125000 vt 0.143519 0.602273 -vt 0.833333 0.045455 -vt 0.981481 0.250000 vt 0.824074 0.159091 -vt 0.870370 0.579545 -vt 0.796296 0.636364 vt 0.768519 0.295455 vt 0.898148 0.465909 vt 0.768519 0.477273 -vt 0.726852 0.500000 -vt 0.763889 0.500000 -vt 0.226852 0.494318 -vt 0.226852 0.448864 -vt 0.226852 0.460227 -vt 0.226852 0.482955 -vt 0.796296 0.636364 -vt 0.870370 0.579545 vt 0.601852 0.863636 vt 0.629630 0.772727 vt 0.787037 0.863636 @@ -2941,14 +4246,6 @@ vt 0.800926 0.772727 vt 0.944444 0.772727 vt 0.680556 0.772727 vt 0.703704 0.863636 -vt 0.111111 0.534091 -vt 0.194444 0.397727 -vt 0.111111 0.534091 -vt 0.194444 0.397727 -vt 0.111111 0.534091 -vt 0.194444 0.397727 -vt 0.111111 0.534091 -vt 0.194444 0.397727 vt 0.143519 0.602273 vt 0.888889 0.647727 vt 0.962963 0.590909 @@ -2963,94 +4260,33 @@ vt 0.675926 0.818182 vt 0.675926 0.772727 vt 0.601852 0.863636 vt 1.000000 0.863636 -vn 0.0000 0.0000 1.0000 -vn 0.0000 0.0000 -1.0000 -vn 1.0000 0.0000 0.0000 -vn 0.0000 1.0000 0.0000 vn -1.0000 0.0000 0.0000 -vn 0.0000 -0.5547 -0.8321 -vn 0.0000 -1.0000 0.0000 -vn 0.0000 -0.4472 0.8944 -vn 0.0000 -0.8944 0.4472 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 vn 0.0000 0.8944 0.4472 +vn 0.0000 0.0000 1.0000 vn 0.7071 -0.7071 0.0000 vn -0.7071 -0.7071 0.0000 -vn 0.0000 0.7071 0.7071 -vn 0.0000 0.7071 -0.7071 -vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 vn 0.0000 -0.3714 -0.9285 -vn 0.0000 0.9231 0.3846 -vn 0.0000 0.7085 0.7057 vn 0.7071 0.7071 0.0000 vn -0.7071 0.7071 0.0000 vn 0.0000 -0.6508 0.7593 +vn 0.0000 -0.4472 0.8944 vn 0.0000 0.4472 -0.8944 vn 0.0000 -0.9744 0.2249 vn 0.0000 0.9701 -0.2425 -vn 0.8000 -0.6000 0.0000 -vn -0.8000 -0.6000 0.0000 -vn 0.9018 0.4321 0.0000 -vn 0.8660 -0.5000 0.0000 -vn 0.5000 -0.8660 -0.0000 -vn 0.1305 -0.9914 -0.0000 -vn 0.5000 0.8660 0.0000 -vn -0.8660 -0.5000 0.0000 -vn -0.5000 0.8660 0.0000 -vn 0.8660 0.5000 0.0000 -vn -0.5000 -0.8660 0.0000 -vn -0.8660 0.5000 0.0000 -vn -0.1305 -0.9914 -0.0000 -vn -0.9018 0.4321 0.0000 -vn 0.1305 0.9914 0.0000 -vn -0.1305 0.9914 0.0000 -vn 0.9018 -0.4321 0.0000 -vn 0.8069 -0.5907 0.0000 -vn 0.8069 0.5907 0.0000 -vn -0.8069 -0.5907 0.0000 -vn -0.9018 -0.4321 0.0000 -vn -0.8069 0.5907 0.0000 -vn 0.9960 -0.0890 0.0000 -vn -0.0000 -0.7071 0.7071 -vn -0.9960 -0.0890 0.0000 -vn -0.9659 -0.2588 0.0000 -vn -0.4858 -0.2432 0.8396 -vn 0.3929 -0.3622 0.8452 -vn 0.4858 -0.2432 0.8396 -vn -0.3458 -0.6635 -0.6635 -vn 0.3395 -0.1767 -0.9239 -vn 0.3458 -0.6635 -0.6635 -vn -0.3395 -0.1767 -0.9239 -vn 0.3945 0.1811 -0.9009 -vn -0.3945 0.1811 -0.9009 -vn 0.3878 -0.3878 -0.8361 -vn -0.3878 -0.3878 -0.8361 -vn 0.2418 -0.6861 -0.6861 -vn -0.8661 -0.1385 -0.4802 -vn -0.9386 0.0604 -0.3398 -vn 0.9032 -0.0951 0.4186 -vn 0.9487 -0.1245 0.2905 -vn 0.8661 -0.1385 -0.4802 -vn 0.9386 0.0604 -0.3398 -vn 0.9239 0.0000 0.3827 -vn 0.7071 0.0000 0.7071 -vn 0.7592 -0.4602 -0.4602 -vn 0.9518 -0.1020 -0.2893 -vn 0.9607 -0.1962 -0.1962 -vn -0.9607 -0.1962 -0.1962 -vn -0.9487 -0.1245 0.2905 -vn -0.9032 -0.0951 0.4186 -vn -0.9239 0.0000 0.3827 -vn -0.7071 0.0000 0.7071 -vn -0.3929 -0.3622 0.8452 -vn -0.7592 -0.4602 -0.4602 -vn -0.2418 -0.6861 -0.6861 -vn -0.9518 -0.1020 -0.2893 -vn -0.7071 0.0000 -0.7071 -vn 0.7071 0.0000 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 vn -0.3945 -0.3227 0.8604 vn 0.3354 -0.3308 0.8821 vn -0.3354 -0.3308 0.8821 vn -0.3389 -0.1566 -0.9277 +vn 0.3458 -0.6635 -0.6635 +vn -0.3458 -0.6635 -0.6635 vn -0.3951 0.2038 -0.8957 vn 0.3389 -0.1566 -0.9277 vn -0.4567 0.1610 -0.8749 @@ -3065,25 +4301,14 @@ vn -0.8727 0.2257 -0.4330 vn -0.5774 0.5774 -0.5774 vn 0.4567 0.1610 -0.8749 vn 0.8652 -0.1255 -0.4854 +vn 0.9607 -0.1962 -0.1962 vn 0.3945 -0.3227 0.8604 vn -0.9467 -0.1131 0.3016 +vn -0.9607 -0.1962 -0.1962 vn -0.8795 -0.1671 0.4457 vn -0.9402 0.0662 -0.3342 vn 0.9467 -0.1131 0.3016 vn -0.9607 0.1962 -0.1962 -vn 0.0000 -0.5547 0.8321 -vn 0.0000 -0.7833 0.6216 -vn 0.0000 -0.9363 0.3511 -vn 0.0000 -0.7833 -0.6216 -vn 0.0000 -0.9363 -0.3511 -vn -0.6124 -0.3536 -0.7071 -vn 0.6124 -0.3536 -0.7071 -vn -0.3536 -0.6124 -0.7071 -vn -0.3536 0.6124 -0.7071 -vn 0.6124 0.3536 -0.7071 -vn 0.3536 -0.6124 -0.7071 -vn -0.6124 0.3536 -0.7071 -vn 0.3536 0.6124 -0.7071 vn -0.7263 -0.6737 0.1363 vn -0.6794 0.7194 -0.1448 vn 0.9987 0.0473 -0.0196 @@ -3139,6 +4364,7 @@ vn 0.4617 -0.7574 -0.4617 vn -0.0671 -0.9955 0.0671 vn 0.1673 -0.9846 0.0505 vn 0.2775 -0.7237 -0.6318 +vn -0.7071 0.0000 0.7071 vn -0.4617 0.4617 0.7574 vn -0.0671 0.9955 0.0671 vn 0.4617 0.7574 -0.4617 @@ -3151,6 +4377,9 @@ vn 0.1448 -0.7194 -0.6794 vn 0.0196 -0.0473 -0.9987 vn -0.1363 0.6737 -0.7263 vn -0.1363 0.6737 0.7263 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 vn -0.0671 -0.0671 -0.9955 vn -0.1448 -0.7194 -0.6794 vn -0.5293 -0.5294 -0.6630 @@ -3185,1888 +4414,759 @@ vn 0.0473 -0.9987 0.0196 vn 0.7194 -0.6794 0.1448 vn 0.0473 0.9987 0.0196 vn -0.1866 -0.9824 -0.0000 -vn 0.9659 -0.2588 0.0000 s off -f 10/1/1 18/2/1 17/3/1 -f 6/4/1 18/2/1 8/5/1 -f 6/4/1 20/6/1 19/7/1 -f 2/8/1 20/6/1 4/9/1 -f 5/10/2 32/11/2 3/12/2 -f 32/11/2 1/13/2 3/12/2 -f 9/14/2 30/15/2 7/16/2 -f 7/16/2 31/17/2 5/10/2 -f 38/18/1 49/19/1 40/20/1 -f 38/18/1 51/21/1 50/22/1 -f 44/23/1 48/24/1 47/25/1 -f 40/20/1 48/24/1 42/26/1 -f 43/27/2 60/28/2 41/29/2 -f 60/28/2 39/30/2 41/29/2 -f 61/31/2 37/32/2 39/30/2 -f 37/32/2 63/33/2 35/34/2 -f 103/35/1 69/36/1 107/37/1 -f 78/38/1 88/39/1 87/40/1 -f 74/41/1 88/39/1 76/42/1 -f 72/43/1 89/44/1 74/41/1 -f 72/43/1 79/45/1 90/46/1 -f 77/47/2 100/48/2 75/49/2 -f 75/50/3 69/36/3 109/51/3 -f 73/52/4 111/53/4 71/54/4 -f 73/52/4 202/55/4 201/56/4 -f 71/57/2 92/58/2 136/59/2 -f 128/60/2 105/61/2 204/62/2 -f 200/63/2 126/64/2 127/65/2 -f 112/66/1 113/67/1 104/68/1 -f 112/66/1 115/69/1 114/70/1 -f 110/71/1 116/72/1 115/69/1 -f 106/73/1 116/72/1 108/74/1 -f 111/75/2 101/76/2 102/77/2 -f 118/78/1 106/73/1 140/79/1 -f 46/80/1 44/23/1 47/25/1 -f 12/81/1 83/82/1 120/83/1 -f 45/84/1 120/83/1 119/85/1 -f 119/85/1 118/78/1 140/79/1 -f 82/86/1 121/87/1 83/82/1 -f 11/88/1 84/89/1 12/81/1 -f 13/90/1 54/91/1 14/92/1 -f 86/93/1 78/38/1 87/40/1 -f 22/94/1 2/8/1 138/95/1 -f 138/95/1 85/96/1 11/88/1 -f 14/92/1 53/97/1 15/98/1 -f 52/99/1 10/1/1 16/100/1 -f 81/101/1 122/102/1 82/86/1 -f 80/103/1 70/104/1 124/105/1 -f 34/106/2 1/13/2 33/107/2 -f 98/108/2 77/47/2 137/109/2 -f 105/61/2 130/110/2 139/111/2 -f 58/112/2 43/27/2 139/111/2 -f 97/113/2 98/108/2 137/109/2 -f 139/111/2 131/114/2 57/115/2 -f 65/116/2 26/117/2 27/118/2 -f 28/119/2 9/14/2 64/120/2 -f 134/121/2 93/122/2 94/123/2 -f 133/124/2 94/123/2 95/125/2 -f 57/115/2 132/126/2 68/127/2 -f 66/128/2 25/129/2 26/117/2 -f 96/130/2 23/131/2 24/132/2 -f 96/130/2 24/132/2 132/126/2 -f 188/133/5 183/134/5 184/135/5 -f 145/136/4 143/137/4 144/138/4 -f 178/139/5 144/138/5 143/137/5 -f 177/140/3 176/141/3 141/142/3 -f 145/136/3 174/143/3 146/144/3 -f 173/145/5 142/146/5 175/147/5 -f 156/148/3 154/149/3 162/150/3 -f 165/151/6 147/152/6 148/153/6 -f 155/154/5 159/155/5 163/156/5 -f 167/157/7 148/153/7 147/152/7 -f 169/158/8 168/159/8 167/157/8 -f 171/160/9 170/161/9 169/158/9 -f 170/162/5 172/163/5 165/164/5 -f 166/165/3 171/166/3 169/167/3 -f 181/168/10 173/169/10 175/170/10 -f 179/171/4 174/172/4 173/169/4 -f 177/173/10 182/174/10 176/175/10 -f 178/176/4 183/134/4 177/173/4 -f 141/142/4 175/147/4 142/146/4 -f 176/141/1 185/177/1 175/147/1 -f 176/141/1 182/178/1 186/179/1 -f 175/147/1 185/177/1 181/180/1 -f 189/181/11 181/182/11 185/183/11 -f 182/184/12 190/185/12 186/186/12 -f 186/186/7 189/181/7 185/183/7 -f 179/171/3 187/187/3 180/188/3 -f 173/189/1 144/138/1 177/190/1 -f 189/181/2 178/191/2 174/192/2 -f 193/193/13 192/194/13 191/195/13 -f 195/196/4 194/197/4 193/193/4 -f 197/198/2 196/199/2 195/196/2 -f 194/197/5 198/200/5 192/201/5 -f 193/193/3 197/202/3 195/196/3 -f 199/203/4 202/55/4 200/204/4 -f 200/204/5 203/205/5 199/203/5 -f 206/206/1 205/207/1 199/203/1 -f 207/208/1 210/209/1 208/210/1 -f 209/211/13 212/212/13 210/209/13 -f 211/213/4 214/214/4 212/212/4 -f 213/215/14 216/216/14 214/214/14 -f 215/217/2 218/218/2 216/216/2 -f 216/219/5 218/220/5 208/221/5 -f 213/215/3 211/213/3 209/222/3 -f 221/223/5 220/224/5 219/225/5 -f 223/226/3 226/227/3 224/228/3 -f 221/223/2 225/229/2 222/230/2 -f 219/225/4 226/227/4 221/223/4 -f 240/231/3 235/232/3 236/233/3 -f 228/234/7 229/235/7 227/236/7 -f 233/237/4 232/238/4 231/239/4 -f 228/240/5 234/241/5 230/242/5 -f 227/243/1 232/238/1 228/244/1 -f 229/235/3 231/239/3 227/236/3 -f 237/245/1 236/246/1 235/247/1 -f 240/248/14 245/249/14 241/250/14 -f 235/247/4 241/250/4 237/245/4 -f 238/251/7 239/252/7 236/253/7 -f 242/254/5 238/255/5 237/256/5 -f 243/257/2 245/249/2 244/258/2 -f 242/259/15 243/257/15 239/252/15 -f 247/260/5 250/261/5 248/262/5 -f 254/263/3 251/264/3 252/265/3 -f 248/266/16 251/264/16 247/260/16 -f 247/260/7 253/267/7 249/268/7 -f 249/268/1 254/269/1 250/270/1 -f 265/271/3 267/272/3 269/273/3 -f 274/274/3 271/275/3 272/276/3 -f 275/277/4 274/274/4 272/276/4 -f 277/278/17 273/279/17 274/274/17 -f 278/280/5 277/278/5 275/277/5 -f 290/281/1 287/282/1 288/283/1 -f 286/284/4 283/285/4 284/286/4 -f 279/287/3 285/288/3 281/289/3 -f 281/290/18 286/284/18 282/291/18 -f 280/292/5 286/284/5 284/286/5 -f 280/293/2 283/285/2 279/294/2 -f 308/295/3 291/296/3 287/297/3 -f 307/298/5 294/299/5 290/281/5 -f 294/299/7 289/300/7 290/281/7 -f 295/301/7 324/302/7 298/303/7 -f 311/304/5 307/298/5 292/305/5 -f 291/296/3 310/306/3 312/307/3 -f 310/306/1 322/308/1 312/307/1 -f 310/306/4 313/309/4 321/310/4 -f 311/304/1 331/311/1 309/312/1 -f 338/313/5 342/314/5 333/315/5 -f 309/312/4 330/316/4 307/298/4 -f 346/317/2 348/318/2 344/319/2 -f 336/320/3 348/321/3 339/322/3 -f 340/323/4 346/324/4 337/325/4 -f 348/321/19 340/323/19 339/322/19 -f 338/313/20 346/324/20 345/326/20 -f 334/327/12 342/314/12 341/328/12 -f 344/319/11 336/329/11 335/330/11 -f 334/327/7 344/319/7 335/330/7 -f 359/331/2 361/332/2 363/333/2 -f 354/334/1 352/335/1 350/336/1 -f 368/337/4 366/338/4 372/339/4 -f 384/340/4 382/341/4 388/342/4 -f 390/343/7 392/344/7 394/345/7 -f 416/346/7 399/347/7 422/348/7 -f 410/349/7 407/350/7 408/351/7 -f 412/352/2 409/353/2 410/349/2 -f 408/351/5 412/354/5 410/349/5 -f 407/350/3 411/355/3 413/356/3 -f 429/357/21 432/358/21 430/359/21 -f 432/360/5 436/361/5 430/362/5 -f 435/363/3 431/364/3 429/365/3 -f 441/366/3 439/367/3 437/368/3 -f 438/369/8 441/366/8 437/368/8 -f 440/370/5 442/371/5 438/369/5 -f 443/372/22 440/373/22 439/367/22 -f 442/371/23 445/374/23 441/366/23 -f 447/375/24 444/376/24 443/372/24 -f 444/377/5 446/378/5 442/371/5 -f 445/374/3 443/372/3 441/366/3 -f 458/379/5 454/380/5 456/381/5 -f 455/382/3 449/383/3 457/384/3 -f 463/385/1 467/386/1 459/387/1 -f 480/388/2 482/389/2 474/390/2 -f 489/391/7 487/392/7 485/393/7 -f 495/394/4 497/395/4 491/396/4 -f 511/397/4 513/398/4 507/399/4 -f 517/400/5 516/401/5 515/402/5 -f 519/403/3 522/404/3 520/405/3 -f 518/406/2 519/407/2 516/408/2 -f 517/400/4 521/409/4 518/406/4 -f 515/410/1 522/404/1 517/400/1 -f 524/411/4 525/412/4 523/413/4 -f 532/414/4 533/415/4 531/416/4 -f 526/417/2 527/418/2 525/412/2 -f 523/413/1 529/419/1 524/411/1 -f 524/411/3 530/420/3 526/417/3 -f 525/412/5 528/421/5 523/413/5 -f 534/422/2 535/423/2 533/415/2 -f 531/416/1 537/424/1 532/414/1 -f 532/414/3 538/425/3 534/422/3 -f 533/415/5 536/426/5 531/416/5 -f 540/427/4 541/428/4 539/429/4 -f 542/430/2 543/431/2 541/428/2 -f 539/429/1 545/432/1 540/427/1 -f 540/427/3 546/433/3 542/430/3 -f 541/428/5 544/434/5 539/429/5 -f 549/435/4 547/436/4 548/437/4 -f 551/438/7 553/439/7 552/440/7 -f 547/436/13 554/441/13 551/442/13 -f 547/443/25 552/440/25 548/444/25 -f 548/437/2 553/439/2 549/435/2 -f 550/445/26 553/439/26 554/446/26 -f 675/447/1 698/448/1 699/449/1 -f 681/450/1 706/451/1 682/452/1 -f 679/453/1 702/454/1 703/455/1 -f 675/447/1 700/456/1 676/457/1 -f 682/452/1 707/458/1 683/459/1 -f 672/460/1 697/461/1 673/462/1 -f 679/453/1 704/463/1 680/464/1 -f 676/457/1 701/465/1 677/466/1 -f 672/460/1 707/458/1 696/467/1 -f 673/462/1 698/448/1 674/468/1 -f 681/450/1 704/463/1 705/469/1 -f 678/470/1 701/465/1 702/471/1 -f 708/472/2 718/473/2 714/474/2 -f 688/475/1 692/476/1 684/477/1 -f 721/478/3 720/479/3 722/480/3 -f 725/481/5 726/482/5 724/483/5 -f 731/484/3 728/485/3 729/486/3 -f 732/487/4 731/484/4 729/486/4 -f 734/488/17 730/489/17 731/484/17 -f 735/490/5 734/488/5 732/487/5 -f 736/491/1 739/492/1 737/493/1 -f 738/494/13 741/495/13 739/492/13 -f 740/496/4 743/497/4 741/495/4 -f 742/498/14 745/499/14 743/497/14 -f 744/500/2 747/501/2 745/499/2 -f 745/502/5 747/503/5 737/504/5 -f 742/498/3 740/496/3 738/505/3 -f 750/506/5 749/507/5 748/508/5 -f 752/509/3 755/510/3 753/511/3 -f 751/512/2 752/513/2 749/514/2 -f 750/506/4 754/515/4 751/512/4 -f 748/516/1 755/510/1 750/506/1 -f 758/517/13 757/518/13 756/519/13 -f 760/520/4 759/521/4 758/517/4 -f 762/522/2 761/523/2 760/520/2 -f 759/521/5 763/524/5 757/525/5 -f 758/517/3 762/526/3 760/520/3 -f 766/527/5 765/528/5 764/529/5 -f 768/530/3 771/531/3 769/532/3 -f 766/527/2 770/533/2 767/534/2 -f 764/529/4 771/531/4 766/527/4 -f 772/535/5 775/536/5 773/537/5 -f 779/538/3 776/539/3 777/540/3 -f 773/541/16 776/539/16 772/535/16 -f 772/535/7 778/542/7 774/543/7 -f 774/543/1 779/544/1 775/545/1 -f 783/546/1 806/547/1 807/548/1 -f 789/549/1 814/550/1 790/551/1 -f 787/552/1 810/553/1 811/554/1 -f 783/546/1 808/555/1 784/556/1 -f 790/551/1 815/557/1 791/558/1 -f 780/559/1 805/560/1 781/561/1 -f 787/552/1 812/562/1 788/563/1 -f 784/556/1 809/564/1 785/565/1 -f 780/559/1 815/557/1 804/566/1 -f 781/561/1 806/547/1 782/567/1 -f 789/549/1 812/562/1 813/568/1 -f 786/569/1 809/564/1 810/570/1 -f 816/571/2 826/572/2 822/573/2 -f 796/574/1 800/575/1 792/576/1 -f 831/577/1 854/578/1 855/579/1 -f 837/580/1 862/581/1 838/582/1 -f 835/583/1 858/584/1 859/585/1 -f 831/577/1 856/586/1 832/587/1 -f 838/582/1 863/588/1 839/589/1 -f 828/590/1 853/591/1 829/592/1 -f 835/583/1 860/593/1 836/594/1 -f 832/587/1 857/595/1 833/596/1 -f 828/590/1 863/588/1 852/597/1 -f 829/592/1 854/578/1 830/598/1 -f 837/580/1 860/593/1 861/599/1 -f 834/600/1 857/595/1 858/601/1 -f 864/602/2 874/603/2 870/604/2 -f 844/605/1 848/606/1 840/607/1 -f 879/608/1 902/609/1 903/610/1 -f 885/611/1 910/612/1 886/613/1 -f 883/614/1 906/615/1 907/616/1 -f 879/608/1 904/617/1 880/618/1 -f 886/613/1 911/619/1 887/620/1 -f 876/621/1 901/622/1 877/623/1 -f 883/614/1 908/624/1 884/625/1 -f 880/618/1 905/626/1 881/627/1 -f 876/621/1 911/619/1 900/628/1 -f 877/623/1 902/609/1 878/629/1 -f 885/611/1 908/624/1 909/630/1 -f 882/631/1 905/626/1 906/632/1 -f 912/633/2 922/634/2 918/635/2 -f 892/636/1 896/637/1 888/638/1 -f 933/639/5 934/640/5 936/641/5 -f 946/642/7 944/643/7 942/644/7 -f 952/645/4 954/646/4 948/647/4 -f 968/648/4 970/649/4 964/650/4 -f 982/651/2 984/652/2 986/653/2 -f 977/654/1 975/655/1 973/656/1 -f 10/1/1 8/5/1 18/2/1 -f 6/4/1 19/7/1 18/2/1 -f 6/4/1 4/9/1 20/6/1 -f 2/8/1 21/657/1 20/6/1 -f 5/10/2 31/17/2 32/11/2 -f 32/11/2 33/107/2 1/13/2 -f 9/14/2 29/658/2 30/15/2 -f 7/16/2 30/15/2 31/17/2 -f 38/18/1 50/22/1 49/19/1 -f 38/18/1 36/659/1 51/21/1 -f 44/23/1 42/26/1 48/24/1 -f 40/20/1 49/19/1 48/24/1 -f 43/27/2 59/660/2 60/28/2 -f 60/28/2 61/31/2 39/30/2 -f 61/31/2 62/661/2 37/32/2 -f 37/32/2 62/661/2 63/33/2 -f 103/35/1 109/662/1 69/36/1 -f 69/36/1 73/52/1 107/37/1 -f 78/38/1 76/42/1 88/39/1 -f 74/41/1 89/44/1 88/39/1 -f 72/43/1 90/46/1 89/44/1 -f 72/43/1 70/104/1 79/45/1 -f 77/47/2 99/663/2 100/48/2 -f 75/50/3 111/53/3 69/36/3 -f 73/52/4 69/36/4 111/53/4 -f 73/52/4 71/54/4 202/55/4 -f 125/664/2 202/665/2 136/59/2 -f 202/665/2 71/57/2 136/59/2 -f 71/57/2 91/666/2 92/58/2 -f 92/58/2 93/122/2 135/667/2 -f 92/58/2 135/667/2 136/59/2 -f 128/60/2 129/668/2 105/61/2 -f 128/60/2 204/62/2 127/65/2 -f 204/62/2 200/63/2 127/65/2 -f 200/63/2 202/665/2 126/64/2 -f 202/665/2 125/664/2 126/64/2 -f 112/66/1 114/70/1 113/67/1 -f 112/66/1 110/71/1 115/69/1 -f 110/71/1 108/74/1 116/72/1 -f 106/73/1 117/669/1 116/72/1 -f 111/75/2 75/49/2 101/76/2 -f 75/49/2 100/48/2 101/76/2 -f 91/666/2 71/57/2 102/77/2 -f 71/57/2 111/75/2 102/77/2 -f 118/78/1 117/669/1 106/73/1 -f 46/80/1 140/79/1 44/23/1 -f 55/670/1 13/90/1 12/81/1 -f 12/81/1 84/89/1 83/82/1 -f 83/82/1 121/87/1 120/83/1 -f 120/83/1 56/671/1 55/670/1 -f 55/670/1 12/81/1 120/83/1 -f 45/84/1 56/671/1 120/83/1 -f 140/79/1 46/80/1 45/84/1 -f 45/84/1 119/85/1 140/79/1 -f 82/86/1 122/102/1 121/87/1 -f 11/88/1 85/96/1 84/89/1 -f 13/90/1 55/670/1 54/91/1 -f 86/93/1 138/95/1 78/38/1 -f 22/94/1 21/657/1 2/8/1 -f 11/88/1 22/94/1 138/95/1 -f 138/95/1 86/93/1 85/96/1 -f 14/92/1 54/91/1 53/97/1 -f 16/100/1 15/98/1 52/99/1 -f 15/98/1 53/97/1 52/99/1 -f 52/99/1 51/21/1 36/659/1 -f 10/1/1 17/3/1 16/100/1 -f 52/99/1 36/659/1 10/1/1 -f 81/101/1 123/672/1 122/102/1 -f 80/103/1 79/45/1 70/104/1 -f 70/104/1 104/68/1 124/105/1 -f 104/68/1 113/67/1 124/105/1 -f 124/105/1 123/672/1 81/101/1 -f 124/105/1 81/101/1 80/103/1 -f 34/106/2 137/109/2 1/13/2 -f 98/108/2 99/663/2 77/47/2 -f 105/61/2 129/668/2 130/110/2 -f 58/112/2 59/660/2 43/27/2 -f 34/106/2 23/131/2 137/109/2 -f 23/131/2 97/113/2 137/109/2 -f 57/115/2 58/112/2 139/111/2 -f 139/111/2 130/110/2 131/114/2 -f 65/116/2 66/128/2 26/117/2 -f 65/116/2 27/118/2 64/120/2 -f 27/118/2 28/119/2 64/120/2 -f 28/119/2 29/658/2 9/14/2 -f 9/14/2 35/34/2 64/120/2 -f 35/34/2 63/33/2 64/120/2 -f 134/121/2 135/667/2 93/122/2 -f 133/124/2 134/121/2 94/123/2 -f 57/115/2 131/114/2 132/126/2 -f 66/128/2 67/673/2 25/129/2 -f 96/130/2 97/113/2 23/131/2 -f 24/132/2 25/129/2 132/126/2 -f 25/129/2 67/673/2 132/126/2 -f 67/673/2 68/127/2 132/126/2 -f 132/126/2 133/124/2 95/125/2 -f 95/125/2 96/130/2 132/126/2 -f 188/133/5 182/184/5 183/134/5 -f 145/136/4 146/144/4 143/137/4 -f 178/139/5 177/674/5 144/138/5 -f 145/136/3 173/675/3 174/143/3 -f 154/149/3 152/676/3 150/677/3 -f 150/677/3 164/678/3 154/149/3 -f 164/678/3 162/150/3 154/149/3 -f 162/150/3 160/679/3 158/680/3 -f 158/680/3 156/148/3 162/150/3 -f 165/151/6 166/681/6 147/152/6 -f 163/156/5 149/682/5 151/683/5 -f 151/683/5 153/684/5 163/156/5 -f 153/684/5 155/154/5 163/156/5 -f 155/154/5 157/685/5 159/155/5 -f 159/155/5 161/686/5 163/156/5 -f 167/157/7 168/159/7 148/153/7 -f 169/158/8 170/161/8 168/159/8 -f 171/160/9 172/687/9 170/161/9 -f 165/164/5 148/153/5 170/162/5 -f 148/153/5 168/159/5 170/162/5 -f 167/157/3 147/152/3 169/167/3 -f 147/152/3 166/165/3 169/167/3 -f 181/168/10 179/171/10 173/169/10 -f 179/171/4 180/188/4 174/172/4 -f 177/173/10 183/134/10 182/174/10 -f 178/176/4 184/135/4 183/134/4 -f 141/142/4 176/141/4 175/147/4 -f 176/141/1 186/179/1 185/177/1 -f 189/181/11 187/187/11 181/182/11 -f 182/184/12 188/133/12 190/185/12 -f 186/186/7 190/185/7 189/181/7 -f 179/171/3 181/182/3 187/187/3 -f 141/142/1 142/146/1 173/189/1 -f 173/189/1 145/136/1 144/138/1 -f 177/190/1 141/142/1 173/189/1 -f 180/688/2 187/689/2 174/192/2 -f 187/689/2 189/181/2 174/192/2 -f 189/181/2 190/185/2 178/191/2 -f 190/185/2 188/690/2 178/191/2 -f 188/690/2 184/691/2 178/191/2 -f 178/191/2 143/137/2 146/144/2 -f 178/191/2 146/144/2 174/192/2 -f 193/193/13 194/197/13 192/194/13 -f 195/196/4 196/199/4 194/197/4 -f 197/198/2 198/692/2 196/199/2 -f 194/197/5 196/199/5 198/200/5 -f 193/193/3 191/693/3 197/202/3 -f 199/203/4 201/56/4 202/55/4 -f 200/204/5 204/694/5 203/205/5 -f 205/207/1 201/56/1 199/203/1 -f 199/203/1 203/695/1 206/206/1 -f 207/208/1 209/211/1 210/209/1 -f 209/211/13 211/213/13 212/212/13 -f 211/213/4 213/215/4 214/214/4 -f 213/215/14 215/217/14 216/216/14 -f 215/217/2 217/696/2 218/218/2 -f 208/221/5 210/697/5 216/219/5 -f 210/697/5 212/212/5 216/219/5 -f 212/212/5 214/214/5 216/219/5 -f 209/222/3 207/698/3 217/699/3 -f 217/699/3 215/700/3 209/222/3 -f 215/700/3 213/215/3 209/222/3 -f 221/223/5 222/701/5 220/224/5 -f 223/226/3 225/702/3 226/227/3 -f 221/223/2 226/227/2 225/229/2 -f 219/225/4 224/228/4 226/227/4 -f 236/233/3 239/703/3 240/231/3 -f 239/703/3 243/257/3 240/231/3 -f 243/257/3 244/258/3 240/231/3 -f 228/234/7 230/704/7 229/235/7 -f 233/237/4 234/241/4 232/238/4 -f 228/240/5 232/238/5 234/241/5 -f 227/243/1 231/239/1 232/238/1 -f 229/235/3 233/237/3 231/239/3 -f 237/245/1 238/705/1 236/246/1 -f 240/248/14 244/258/14 245/249/14 -f 235/247/4 240/248/4 241/250/4 -f 238/251/7 242/259/7 239/252/7 -f 237/256/5 241/706/5 242/254/5 -f 241/706/5 245/249/5 242/254/5 -f 245/249/5 246/707/5 242/254/5 -f 243/257/2 246/707/2 245/249/2 -f 242/259/15 246/707/15 243/257/15 -f 247/260/5 249/268/5 250/261/5 -f 254/263/3 253/267/3 251/264/3 -f 248/266/16 252/708/16 251/264/16 -f 247/260/7 251/264/7 253/267/7 -f 249/268/1 253/267/1 254/269/1 -f 264/709/3 263/710/3 265/271/3 -f 265/271/3 266/711/3 267/272/3 -f 267/272/3 268/712/3 269/273/3 -f 269/273/3 270/713/3 264/709/3 -f 264/709/3 265/271/3 269/273/3 -f 274/274/3 273/714/3 271/275/3 -f 275/277/4 277/278/4 274/274/4 -f 277/278/17 276/715/17 273/279/17 -f 278/280/5 276/716/5 277/278/5 -f 290/281/1 289/300/1 287/282/1 -f 286/284/4 285/288/4 283/285/4 -f 279/287/3 283/285/3 285/288/3 -f 281/290/18 285/288/18 286/284/18 -f 280/292/5 282/717/5 286/284/5 -f 280/293/2 284/286/2 283/285/2 -f 287/297/3 289/300/3 308/295/3 -f 289/300/3 293/718/3 308/295/3 -f 290/281/5 288/719/5 307/298/5 -f 288/719/5 292/305/5 307/298/5 -f 294/299/7 293/718/7 289/300/7 -f 298/303/7 297/720/7 316/721/7 -f 316/721/7 315/722/7 295/301/7 -f 295/301/7 296/723/7 324/302/7 -f 324/302/7 325/724/7 298/303/7 -f 298/303/7 316/721/7 295/301/7 -f 311/304/5 309/312/5 307/298/5 -f 291/296/3 308/295/3 310/306/3 -f 310/306/1 321/725/1 322/308/1 -f 310/306/4 308/295/4 313/309/4 -f 311/304/1 332/726/1 331/311/1 -f 338/313/5 345/326/5 342/314/5 -f 309/312/4 331/727/4 330/316/4 -f 344/319/2 341/328/2 342/728/2 -f 342/728/2 345/729/2 346/317/2 -f 346/317/2 347/730/2 348/318/2 -f 348/318/2 343/731/2 344/319/2 -f 344/319/2 342/728/2 346/317/2 -f 336/320/3 343/732/3 348/321/3 -f 340/323/4 347/733/4 346/324/4 -f 348/321/19 347/733/19 340/323/19 -f 338/313/20 337/325/20 346/324/20 -f 334/327/12 333/315/12 342/314/12 -f 344/319/11 343/734/11 336/329/11 -f 334/327/7 341/328/7 344/319/7 -f 363/333/2 357/735/2 358/736/2 -f 358/736/2 364/737/2 359/331/2 -f 359/331/2 360/738/2 361/332/2 -f 361/332/2 362/739/2 363/333/2 -f 363/333/2 358/736/2 359/331/2 -f 350/336/1 349/740/1 356/741/1 -f 356/741/1 355/742/1 354/334/1 -f 354/334/1 353/743/1 352/335/1 -f 352/335/1 351/744/1 350/336/1 -f 350/336/1 356/741/1 354/334/1 -f 372/339/4 371/745/4 370/746/4 -f 370/746/4 369/747/4 368/337/4 -f 368/337/4 367/748/4 366/338/4 -f 366/338/4 365/749/4 372/339/4 -f 372/339/4 370/746/4 368/337/4 -f 388/342/4 387/750/4 386/751/4 -f 386/751/4 385/752/4 384/340/4 -f 384/340/4 383/753/4 382/341/4 -f 382/341/4 381/754/4 388/342/4 -f 388/342/4 386/751/4 384/340/4 -f 394/345/7 395/755/7 396/756/7 -f 396/756/7 389/757/7 390/343/7 -f 390/343/7 391/758/7 392/344/7 -f 392/344/7 393/759/7 394/345/7 -f 394/345/7 396/756/7 390/343/7 -f 399/347/7 400/760/7 422/348/7 -f 422/348/7 424/761/7 417/762/7 -f 424/761/7 402/763/7 417/762/7 -f 402/763/7 401/764/7 417/762/7 -f 417/762/7 416/346/7 422/348/7 -f 410/349/7 409/353/7 407/350/7 -f 412/352/2 411/765/2 409/353/2 -f 408/351/5 414/766/5 412/354/5 -f 407/350/3 409/353/3 411/355/3 -f 429/357/21 431/364/21 432/358/21 -f 432/360/5 434/767/5 436/361/5 -f 435/363/3 433/768/3 431/364/3 -f 441/366/3 443/372/3 439/367/3 -f 438/369/8 442/371/8 441/366/8 -f 440/370/5 444/377/5 442/371/5 -f 443/372/22 444/376/22 440/373/22 -f 442/371/23 446/378/23 445/374/23 -f 447/375/24 448/769/24 444/376/24 -f 444/377/5 448/770/5 446/378/5 -f 445/374/3 447/375/3 443/372/3 -f 456/381/5 452/771/5 458/379/5 -f 458/379/5 450/772/5 454/380/5 -f 457/384/3 451/773/3 455/382/3 -f 455/382/3 453/774/3 449/383/3 -f 459/387/1 460/775/1 461/776/1 -f 461/776/1 462/777/1 463/385/1 -f 463/385/1 464/778/1 465/779/1 -f 465/779/1 466/780/1 463/385/1 -f 466/780/1 467/386/1 463/385/1 -f 467/386/1 468/781/1 469/782/1 -f 469/782/1 470/783/1 459/387/1 -f 459/387/1 461/776/1 463/385/1 -f 467/386/1 469/782/1 459/387/1 -f 482/389/2 471/784/2 474/390/2 -f 471/784/2 472/785/2 474/390/2 -f 472/785/2 473/786/2 474/390/2 -f 474/390/2 475/787/2 476/788/2 -f 476/788/2 477/789/2 474/390/2 -f 477/789/2 478/790/2 474/390/2 -f 478/790/2 479/791/2 480/388/2 -f 480/388/2 481/792/2 482/389/2 -f 478/790/2 480/388/2 474/390/2 -f 485/393/7 484/793/7 483/794/7 -f 483/794/7 490/795/7 489/391/7 -f 489/391/7 488/796/7 487/392/7 -f 487/392/7 486/797/7 485/393/7 -f 485/393/7 483/794/7 489/391/7 -f 491/396/4 492/798/4 493/799/4 -f 493/799/4 494/800/4 495/394/4 -f 495/394/4 496/801/4 497/395/4 -f 497/395/4 498/802/4 491/396/4 -f 491/396/4 493/799/4 495/394/4 -f 507/399/4 508/803/4 509/804/4 -f 509/804/4 510/805/4 511/397/4 -f 511/397/4 512/806/4 513/398/4 -f 513/398/4 514/807/4 507/399/4 -f 507/399/4 509/804/4 511/397/4 -f 517/400/5 518/406/5 516/401/5 -f 519/403/3 521/409/3 522/404/3 -f 518/406/2 521/409/2 519/407/2 -f 517/400/4 522/404/4 521/409/4 -f 515/410/1 520/808/1 522/404/1 -f 524/411/4 526/417/4 525/412/4 -f 532/414/4 534/422/4 533/415/4 -f 526/417/2 530/809/2 527/418/2 -f 523/413/1 528/810/1 529/419/1 -f 524/411/3 529/811/3 530/420/3 -f 525/412/5 527/812/5 528/421/5 -f 534/422/2 538/813/2 535/423/2 -f 531/416/1 536/814/1 537/424/1 -f 532/414/3 537/815/3 538/425/3 -f 533/415/5 535/816/5 536/426/5 -f 540/427/4 542/430/4 541/428/4 -f 542/430/2 546/817/2 543/431/2 -f 539/429/1 544/818/1 545/432/1 -f 540/427/3 545/819/3 546/433/3 -f 541/428/5 543/820/5 544/434/5 -f 549/435/4 550/821/4 547/436/4 -f 551/438/7 554/446/7 553/439/7 -f 547/436/13 550/821/13 554/441/13 -f 547/443/25 551/438/25 552/440/25 -f 548/437/2 552/440/2 553/439/2 -f 550/445/26 549/822/26 553/439/26 -f 675/447/1 674/468/1 698/448/1 -f 681/450/1 705/469/1 706/451/1 -f 679/453/1 678/823/1 702/454/1 -f 675/447/1 699/449/1 700/456/1 -f 682/452/1 706/451/1 707/458/1 -f 672/460/1 696/467/1 697/461/1 -f 679/453/1 703/455/1 704/463/1 -f 676/457/1 700/456/1 701/465/1 -f 672/460/1 683/459/1 707/458/1 -f 673/462/1 697/461/1 698/448/1 -f 681/450/1 680/464/1 704/463/1 -f 678/470/1 677/466/1 701/465/1 -f 710/824/2 709/825/2 708/472/2 -f 708/472/2 719/826/2 718/473/2 -f 718/473/2 717/827/2 714/474/2 -f 717/827/2 716/828/2 714/474/2 -f 716/828/2 715/829/2 714/474/2 -f 714/474/2 713/830/2 712/831/2 -f 712/831/2 711/832/2 714/474/2 -f 711/832/2 710/824/2 714/474/2 -f 710/824/2 708/472/2 714/474/2 -f 684/477/1 685/833/1 686/834/1 -f 686/834/1 687/835/1 688/475/1 -f 688/475/1 689/836/1 692/476/1 -f 689/836/1 690/837/1 692/476/1 -f 690/837/1 691/838/1 692/476/1 -f 692/476/1 693/839/1 694/840/1 -f 694/840/1 695/841/1 684/477/1 -f 684/477/1 686/834/1 688/475/1 -f 692/476/1 694/840/1 684/477/1 -f 721/478/3 723/842/3 720/479/3 -f 725/481/5 727/843/5 726/482/5 -f 731/484/3 730/844/3 728/485/3 -f 732/487/4 734/488/4 731/484/4 -f 734/488/17 733/845/17 730/489/17 -f 735/490/5 733/846/5 734/488/5 -f 736/491/1 738/494/1 739/492/1 -f 738/494/13 740/496/13 741/495/13 -f 740/496/4 742/498/4 743/497/4 -f 742/498/14 744/500/14 745/499/14 -f 744/500/2 746/847/2 747/501/2 -f 737/504/5 739/848/5 745/502/5 -f 739/848/5 741/495/5 745/502/5 -f 741/495/5 743/497/5 745/502/5 -f 738/505/3 736/849/3 746/850/3 -f 746/850/3 744/851/3 738/505/3 -f 744/851/3 742/498/3 738/505/3 -f 750/506/5 751/512/5 749/507/5 -f 752/509/3 754/515/3 755/510/3 -f 751/512/2 754/515/2 752/513/2 -f 750/506/4 755/510/4 754/515/4 -f 748/516/1 753/852/1 755/510/1 -f 758/517/13 759/521/13 757/518/13 -f 760/520/4 761/523/4 759/521/4 -f 762/522/2 763/853/2 761/523/2 -f 759/521/5 761/523/5 763/524/5 -f 758/517/3 756/854/3 762/526/3 -f 766/527/5 767/855/5 765/528/5 -f 768/530/3 770/856/3 771/531/3 -f 766/527/2 771/531/2 770/533/2 -f 764/529/4 769/532/4 771/531/4 -f 772/535/5 774/543/5 775/536/5 -f 779/538/3 778/542/3 776/539/3 -f 773/541/16 777/857/16 776/539/16 -f 772/535/7 776/539/7 778/542/7 -f 774/543/1 778/542/1 779/544/1 -f 783/546/1 782/567/1 806/547/1 -f 789/549/1 813/568/1 814/550/1 -f 787/552/1 786/858/1 810/553/1 -f 783/546/1 807/548/1 808/555/1 -f 790/551/1 814/550/1 815/557/1 -f 780/559/1 804/566/1 805/560/1 -f 787/552/1 811/554/1 812/562/1 -f 784/556/1 808/555/1 809/564/1 -f 780/559/1 791/558/1 815/557/1 -f 781/561/1 805/560/1 806/547/1 -f 789/549/1 788/563/1 812/562/1 -f 786/569/1 785/565/1 809/564/1 -f 818/859/2 817/860/2 816/571/2 -f 816/571/2 827/861/2 826/572/2 -f 826/572/2 825/862/2 822/573/2 -f 825/862/2 824/863/2 822/573/2 -f 824/863/2 823/864/2 822/573/2 -f 822/573/2 821/865/2 820/866/2 -f 820/866/2 819/867/2 822/573/2 -f 819/867/2 818/859/2 822/573/2 -f 818/859/2 816/571/2 822/573/2 -f 792/576/1 793/868/1 794/869/1 -f 794/869/1 795/870/1 796/574/1 -f 796/574/1 797/871/1 800/575/1 -f 797/871/1 798/872/1 800/575/1 -f 798/872/1 799/873/1 800/575/1 -f 800/575/1 801/874/1 802/875/1 -f 802/875/1 803/876/1 792/576/1 -f 792/576/1 794/869/1 796/574/1 -f 800/575/1 802/875/1 792/576/1 -f 831/577/1 830/598/1 854/578/1 -f 837/580/1 861/599/1 862/581/1 -f 835/583/1 834/877/1 858/584/1 -f 831/577/1 855/579/1 856/586/1 -f 838/582/1 862/581/1 863/588/1 -f 828/590/1 852/597/1 853/591/1 -f 835/583/1 859/585/1 860/593/1 -f 832/587/1 856/586/1 857/595/1 -f 828/590/1 839/589/1 863/588/1 -f 829/592/1 853/591/1 854/578/1 -f 837/580/1 836/594/1 860/593/1 -f 834/600/1 833/596/1 857/595/1 -f 866/878/2 865/879/2 864/602/2 -f 864/602/2 875/880/2 874/603/2 -f 874/603/2 873/881/2 870/604/2 -f 873/881/2 872/882/2 870/604/2 -f 872/882/2 871/883/2 870/604/2 -f 870/604/2 869/884/2 868/885/2 -f 868/885/2 867/886/2 870/604/2 -f 867/886/2 866/878/2 870/604/2 -f 866/878/2 864/602/2 870/604/2 -f 840/607/1 841/887/1 842/888/1 -f 842/888/1 843/889/1 844/605/1 -f 844/605/1 845/890/1 848/606/1 -f 845/890/1 846/891/1 848/606/1 -f 846/891/1 847/892/1 848/606/1 -f 848/606/1 849/893/1 850/894/1 -f 850/894/1 851/895/1 840/607/1 -f 840/607/1 842/888/1 844/605/1 -f 848/606/1 850/894/1 840/607/1 -f 879/608/1 878/629/1 902/609/1 -f 885/611/1 909/630/1 910/612/1 -f 883/614/1 882/896/1 906/615/1 -f 879/608/1 903/610/1 904/617/1 -f 886/613/1 910/612/1 911/619/1 -f 876/621/1 900/628/1 901/622/1 -f 883/614/1 907/616/1 908/624/1 -f 880/618/1 904/617/1 905/626/1 -f 876/621/1 887/620/1 911/619/1 -f 877/623/1 901/622/1 902/609/1 -f 885/611/1 884/625/1 908/624/1 -f 882/631/1 881/627/1 905/626/1 -f 914/897/2 913/898/2 912/633/2 -f 912/633/2 923/899/2 922/634/2 -f 922/634/2 921/900/2 918/635/2 -f 921/900/2 920/901/2 918/635/2 -f 920/901/2 919/902/2 918/635/2 -f 918/635/2 917/903/2 916/904/2 -f 916/904/2 915/905/2 918/635/2 -f 915/905/2 914/897/2 918/635/2 -f 914/897/2 912/633/2 918/635/2 -f 888/638/1 889/906/1 890/907/1 -f 890/907/1 891/908/1 892/636/1 -f 892/636/1 893/909/1 896/637/1 -f 893/909/1 894/910/1 896/637/1 -f 894/910/1 895/911/1 896/637/1 -f 896/637/1 897/912/1 898/913/1 -f 898/913/1 899/914/1 888/638/1 -f 888/638/1 890/907/1 892/636/1 -f 896/637/1 898/913/1 888/638/1 -f 933/639/5 932/915/5 934/640/5 -f 934/640/5 935/916/5 936/641/5 -f 936/641/5 937/917/5 933/639/5 -f 937/917/5 938/918/5 933/639/5 -f 938/918/5 939/919/5 933/639/5 -f 942/644/7 941/920/7 940/921/7 -f 940/921/7 947/922/7 946/642/7 -f 946/642/7 945/923/7 944/643/7 -f 944/643/7 943/924/7 942/644/7 -f 942/644/7 940/921/7 946/642/7 -f 948/647/4 949/925/4 950/926/4 -f 950/926/4 951/927/4 952/645/4 -f 952/645/4 953/928/4 954/646/4 -f 954/646/4 955/929/4 948/647/4 -f 948/647/4 950/926/4 952/645/4 -f 964/650/4 965/930/4 966/931/4 -f 966/931/4 967/932/4 968/648/4 -f 968/648/4 969/933/4 970/649/4 -f 970/649/4 971/934/4 964/650/4 -f 964/650/4 966/931/4 968/648/4 -f 986/653/2 980/935/2 981/936/2 -f 981/936/2 987/937/2 982/651/2 -f 982/651/2 983/938/2 984/652/2 -f 984/652/2 985/939/2 986/653/2 -f 986/653/2 981/936/2 982/651/2 -f 973/656/1 972/940/1 979/941/1 -f 979/941/1 978/942/1 977/654/1 -f 977/654/1 976/943/1 975/655/1 -f 975/655/1 974/944/1 973/656/1 -f 973/656/1 979/941/1 977/654/1 +f 672/1137/153 667/1138/153 668/1139/153 +f 655/1140/154 653/1141/154 654/1142/154 +f 662/1143/153 654/1142/153 653/1141/153 +f 661/1144/155 660/1145/155 651/1146/155 +f 655/1140/155 658/1147/155 656/1148/155 +f 657/1149/153 652/1150/153 659/1151/153 +f 665/1152/156 657/1153/156 659/1154/156 +f 663/1155/154 658/1156/154 657/1153/154 +f 661/1157/156 666/1158/156 660/1159/156 +f 662/1160/154 667/1138/154 661/1157/154 +f 651/1146/154 659/1151/154 652/1150/154 +f 660/1145/157 669/1161/157 659/1151/157 +f 660/1145/157 666/1162/157 670/1163/157 +f 659/1151/157 669/1161/157 665/1164/157 +f 673/1165/158 665/1166/158 669/1167/158 +f 666/1168/159 674/1169/159 670/1170/159 +f 670/1170/160 673/1165/160 669/1167/160 +f 663/1155/155 671/1171/155 664/1172/155 +f 657/1173/157 654/1142/157 661/1174/157 +f 673/1165/161 662/1175/161 658/1176/161 +f 675/1177/153 678/1178/153 676/1179/153 +f 682/1180/155 679/1181/155 680/1182/155 +f 676/1183/162 679/1181/162 675/1177/162 +f 675/1177/160 681/1184/160 677/1185/160 +f 677/1185/157 682/1186/157 678/1187/157 +f 693/1188/155 695/1189/155 697/1190/155 +f 704/1191/153 708/1192/153 699/1193/153 +f 712/1194/161 714/1195/161 710/1196/161 +f 702/1197/155 714/1198/155 705/1199/155 +f 706/1200/154 712/1201/154 703/1202/154 +f 714/1198/163 706/1200/163 705/1199/163 +f 704/1191/164 712/1201/164 711/1203/164 +f 700/1204/159 708/1192/159 707/1205/159 +f 710/1196/158 702/1206/158 701/1207/158 +f 700/1204/160 710/1196/160 701/1207/160 +f 725/1208/161 727/1209/161 729/1210/161 +f 720/1211/157 718/1212/157 716/1213/157 +f 750/1214/160 733/1215/160 756/1216/160 +f 744/1217/160 741/1218/160 742/1219/160 +f 746/1220/161 743/1221/161 744/1217/161 +f 742/1219/153 746/1222/153 744/1217/153 +f 741/1218/155 745/1223/155 747/1224/155 +f 763/1225/165 766/1226/165 764/1227/165 +f 766/1228/153 770/1229/153 764/1230/153 +f 769/1231/155 765/1232/155 763/1233/155 +f 775/1234/155 773/1235/155 771/1236/155 +f 772/1237/166 775/1234/166 771/1236/166 +f 774/1238/153 776/1239/153 772/1237/153 +f 777/1240/167 774/1241/167 773/1235/167 +f 776/1239/168 779/1242/168 775/1234/168 +f 781/1243/169 778/1244/169 777/1240/169 +f 778/1245/153 780/1246/153 776/1239/153 +f 779/1242/155 777/1240/155 775/1234/155 +f 900/1247/153 903/1248/153 901/1249/153 +f 907/1250/155 904/1251/155 905/1252/155 +f 901/1253/162 904/1251/162 900/1247/162 +f 900/1247/160 906/1254/160 902/1255/160 +f 902/1255/157 907/1256/157 903/1257/157 +f 917/1258/153 918/1259/153 920/1260/153 +f 930/1261/160 928/1262/160 926/1263/160 +f 936/1264/154 938/1265/154 932/1266/154 +f 952/1267/154 954/1268/154 948/1269/154 +f 966/1270/161 968/1271/161 970/1272/161 +f 961/1273/157 959/1274/157 957/1275/157 +f 1077/1276/170 1076/1277/170 1075/1278/170 +f 1079/1279/154 1078/1280/154 1077/1276/154 +f 1081/1281/161 1080/1282/161 1079/1279/161 +f 1078/1280/153 1082/1283/153 1076/1284/153 +f 1077/1276/155 1081/1285/155 1079/1279/155 +f 1085/1286/170 1084/1287/170 1083/1288/170 +f 1087/1289/154 1086/1290/154 1085/1286/154 +f 1089/1291/161 1088/1292/161 1087/1289/161 +f 1086/1290/153 1090/1293/153 1084/1294/153 +f 1085/1286/155 1089/1295/155 1087/1289/155 +f 672/1137/153 666/1168/153 667/1138/153 +f 655/1140/154 656/1148/154 653/1141/154 +f 662/1143/153 661/1296/153 654/1142/153 +f 655/1140/155 657/1297/155 658/1147/155 +f 665/1152/156 663/1155/156 657/1153/156 +f 663/1155/154 664/1172/154 658/1156/154 +f 661/1157/156 667/1138/156 666/1158/156 +f 662/1160/154 668/1139/154 667/1138/154 +f 651/1146/154 660/1145/154 659/1151/154 +f 660/1145/157 670/1163/157 669/1161/157 +f 673/1165/158 671/1171/158 665/1166/158 +f 666/1168/159 672/1137/159 674/1169/159 +f 670/1170/160 674/1169/160 673/1165/160 +f 663/1155/155 665/1166/155 671/1171/155 +f 651/1146/157 652/1150/157 657/1173/157 +f 657/1173/157 655/1140/157 654/1142/157 +f 661/1174/157 651/1146/157 657/1173/157 +f 664/1298/161 671/1299/161 658/1176/161 +f 671/1299/161 673/1165/161 658/1176/161 +f 673/1165/161 674/1169/161 662/1175/161 +f 674/1169/161 672/1300/161 662/1175/161 +f 672/1300/161 668/1301/161 662/1175/161 +f 662/1175/161 653/1141/161 656/1148/161 +f 662/1175/161 656/1148/161 658/1176/161 +f 675/1177/153 677/1185/153 678/1178/153 +f 682/1180/155 681/1184/155 679/1181/155 +f 676/1183/162 680/1302/162 679/1181/162 +f 675/1177/160 679/1181/160 681/1184/160 +f 677/1185/157 681/1184/157 682/1186/157 +f 692/1303/155 691/1304/155 693/1188/155 +f 693/1188/155 694/1305/155 695/1189/155 +f 695/1189/155 696/1306/155 697/1190/155 +f 697/1190/155 698/1307/155 692/1303/155 +f 692/1303/155 693/1188/155 697/1190/155 +f 704/1191/153 711/1203/153 708/1192/153 +f 710/1196/161 707/1205/161 708/1308/161 +f 708/1308/161 711/1309/161 712/1194/161 +f 712/1194/161 713/1310/161 714/1195/161 +f 714/1195/161 709/1311/161 710/1196/161 +f 710/1196/161 708/1308/161 712/1194/161 +f 702/1197/155 709/1312/155 714/1198/155 +f 706/1200/154 713/1313/154 712/1201/154 +f 714/1198/163 713/1313/163 706/1200/163 +f 704/1191/164 703/1202/164 712/1201/164 +f 700/1204/159 699/1193/159 708/1192/159 +f 710/1196/158 709/1314/158 702/1206/158 +f 700/1204/160 707/1205/160 710/1196/160 +f 729/1210/161 723/1315/161 724/1316/161 +f 724/1316/161 730/1317/161 725/1208/161 +f 725/1208/161 726/1318/161 727/1209/161 +f 727/1209/161 728/1319/161 729/1210/161 +f 729/1210/161 724/1316/161 725/1208/161 +f 716/1213/157 715/1320/157 722/1321/157 +f 722/1321/157 721/1322/157 720/1211/157 +f 720/1211/157 719/1323/157 718/1212/157 +f 718/1212/157 717/1324/157 716/1213/157 +f 716/1213/157 722/1321/157 720/1211/157 +f 733/1215/160 734/1325/160 756/1216/160 +f 756/1216/160 758/1326/160 751/1327/160 +f 758/1326/160 736/1328/160 751/1327/160 +f 736/1328/160 735/1329/160 751/1327/160 +f 751/1327/160 750/1214/160 756/1216/160 +f 744/1217/160 743/1221/160 741/1218/160 +f 746/1220/161 745/1330/161 743/1221/161 +f 742/1219/153 748/1331/153 746/1222/153 +f 741/1218/155 743/1221/155 745/1223/155 +f 763/1225/165 765/1232/165 766/1226/165 +f 766/1228/153 768/1332/153 770/1229/153 +f 769/1231/155 767/1333/155 765/1232/155 +f 775/1234/155 777/1240/155 773/1235/155 +f 772/1237/166 776/1239/166 775/1234/166 +f 774/1238/153 778/1245/153 776/1239/153 +f 777/1240/167 778/1244/167 774/1241/167 +f 776/1239/168 780/1246/168 779/1242/168 +f 781/1243/169 782/1334/169 778/1244/169 +f 778/1245/153 782/1335/153 780/1246/153 +f 779/1242/155 781/1243/155 777/1240/155 +f 900/1247/153 902/1255/153 903/1248/153 +f 907/1250/155 906/1254/155 904/1251/155 +f 901/1253/162 905/1336/162 904/1251/162 +f 900/1247/160 904/1251/160 906/1254/160 +f 902/1255/157 906/1254/157 907/1256/157 +f 917/1258/153 916/1337/153 918/1259/153 +f 918/1259/153 919/1338/153 920/1260/153 +f 920/1260/153 921/1339/153 917/1258/153 +f 921/1339/153 922/1340/153 917/1258/153 +f 922/1340/153 923/1341/153 917/1258/153 +f 926/1263/160 925/1342/160 924/1343/160 +f 924/1343/160 931/1344/160 930/1261/160 +f 930/1261/160 929/1345/160 928/1262/160 +f 928/1262/160 927/1346/160 926/1263/160 +f 926/1263/160 924/1343/160 930/1261/160 +f 932/1266/154 933/1347/154 934/1348/154 +f 934/1348/154 935/1349/154 936/1264/154 +f 936/1264/154 937/1350/154 938/1265/154 +f 938/1265/154 939/1351/154 932/1266/154 +f 932/1266/154 934/1348/154 936/1264/154 +f 948/1269/154 949/1352/154 950/1353/154 +f 950/1353/154 951/1354/154 952/1267/154 +f 952/1267/154 953/1355/154 954/1268/154 +f 954/1268/154 955/1356/154 948/1269/154 +f 948/1269/154 950/1353/154 952/1267/154 +f 970/1272/161 964/1357/161 965/1358/161 +f 965/1358/161 971/1359/161 966/1270/161 +f 966/1270/161 967/1360/161 968/1271/161 +f 968/1271/161 969/1361/161 970/1272/161 +f 970/1272/161 965/1358/161 966/1270/161 +f 957/1275/157 956/1362/157 963/1363/157 +f 963/1363/157 962/1364/157 961/1273/157 +f 961/1273/157 960/1365/157 959/1274/157 +f 959/1274/157 958/1366/157 957/1275/157 +f 957/1275/157 963/1363/157 961/1273/157 +f 1077/1276/170 1078/1280/170 1076/1277/170 +f 1079/1279/154 1080/1282/154 1078/1280/154 +f 1081/1281/161 1082/1367/161 1080/1282/161 +f 1078/1280/153 1080/1282/153 1082/1283/153 +f 1077/1276/155 1075/1368/155 1081/1285/155 +f 1085/1286/170 1086/1290/170 1084/1287/170 +f 1087/1289/154 1088/1292/154 1086/1290/154 +f 1089/1291/161 1090/1369/161 1088/1292/161 +f 1086/1290/153 1088/1292/153 1090/1293/153 +f 1085/1286/155 1083/1370/155 1089/1295/155 s 1 -f 2/945/27 3/946/3 1/947/27 -f 4/948/3 5/949/28 3/946/3 -f 6/950/28 7/951/29 5/949/28 -f 8/952/29 9/953/30 7/951/29 -f 17/954/4 28/955/31 16/956/31 -f 14/957/3 25/958/28 13/959/28 -f 21/960/32 32/961/5 20/962/5 -f 18/963/33 29/964/4 17/965/4 -f 15/966/34 26/967/3 14/957/3 -f 22/968/35 33/969/32 21/960/32 -f 12/970/29 23/971/7 11/972/7 -f 19/973/36 30/974/33 18/963/33 -f 16/956/31 27/975/34 15/966/34 -f 11/972/7 34/976/35 22/968/35 -f 13/959/28 24/977/29 12/970/29 -f 20/962/5 31/978/36 19/973/36 -f 36/979/37 37/980/35 35/981/37 -f 38/982/35 39/983/32 37/980/35 -f 40/984/32 41/985/5 39/983/32 -f 42/986/5 43/987/38 41/985/5 -f 51/988/4 62/989/31 50/990/31 -f 48/991/3 59/992/28 47/993/28 -f 55/994/32 66/995/5 54/996/5 -f 52/997/33 63/998/4 51/999/4 -f 49/1000/34 60/1001/3 48/991/3 -f 56/1002/35 67/1003/32 55/994/32 -f 46/1004/29 57/1005/7 45/1006/7 -f 53/1007/36 64/1008/33 52/997/33 -f 50/990/31 61/1009/34 49/1000/34 -f 45/1006/7 68/1010/35 56/1002/35 -f 47/993/28 58/1011/29 46/1004/29 -f 54/996/5 65/1012/36 53/1007/36 -f 74/1013/34 107/1014/31 72/1015/31 -f 107/1014/31 70/1016/39 72/1015/31 -f 73/1017/39 104/1018/40 70/1016/39 -f 78/1019/41 137/1020/42 77/1021/41 -f 10/1022/30 35/1023/37 9/953/30 -f 137/1020/43 2/945/27 1/947/27 -f 85/1024/4 96/1025/31 84/1026/31 -f 82/1027/3 93/1028/28 81/1029/28 -f 89/1030/32 100/1031/5 88/1032/5 -f 86/1033/33 97/1034/4 85/1035/4 -f 83/1036/34 94/1037/3 82/1027/3 -f 90/1038/35 101/1039/32 89/1030/32 -f 80/1040/29 91/1041/7 79/1042/7 -f 87/1043/36 98/1044/33 86/1033/33 -f 84/1026/31 95/1045/34 83/1036/34 -f 79/1042/7 102/1046/35 90/1038/35 -f 81/1029/28 92/1047/29 80/1040/29 -f 88/1032/5 99/1048/36 87/1043/36 -f 139/1049/44 106/1050/45 105/1051/45 -f 44/1052/38 139/1049/46 43/987/38 -f 119/1053/4 130/1054/31 118/1055/31 -f 116/1056/3 127/1057/28 115/1058/28 -f 123/1059/32 134/1060/5 122/1061/5 -f 120/1062/33 131/1063/4 119/1064/4 -f 117/1065/34 128/1066/3 116/1056/3 -f 124/1067/35 135/1068/32 123/1059/32 -f 114/1069/29 125/1070/7 113/1071/7 -f 121/1072/36 132/1073/33 120/1062/33 -f 118/1055/31 129/1074/34 117/1065/34 -f 113/1071/7 136/1075/35 124/1067/35 -f 115/1058/28 126/1076/29 114/1069/29 -f 122/1061/5 133/1077/36 121/1072/36 -f 109/1078/47 74/1013/34 76/1079/3 -f 104/1018/40 205/1080/33 112/1081/33 -f 112/1081/33 206/1082/36 110/1083/36 -f 206/1082/36 108/1084/5 110/1083/36 -f 150/1085/2 151/1086/15 149/1087/2 -f 152/1088/15 153/1089/7 151/1086/15 -f 154/1090/7 155/1091/48 153/1092/7 -f 156/1093/48 157/1094/1 155/1091/48 -f 158/1095/1 159/1096/13 157/1094/1 -f 160/1097/13 161/1098/4 159/1096/13 -f 162/1099/4 163/1100/14 161/1098/4 -f 164/1101/14 149/1087/2 163/1100/14 -f 203/1102/49 204/1103/50 105/1051/45 -f 109/1078/47 78/1019/41 77/1021/41 -f 255/1104/2 270/1105/15 262/1106/15 -f 261/1107/7 268/1108/48 260/1109/48 -f 259/1110/1 266/1111/13 258/1112/13 -f 257/1113/4 263/1114/14 256/1115/14 -f 262/1106/15 269/1116/7 261/1117/7 -f 260/1109/48 267/1118/1 259/1110/1 -f 258/1112/13 265/1119/4 257/1113/4 -f 256/1115/14 264/1120/2 255/1104/2 -f 294/1121/51 295/1122/52 293/1123/53 -f 298/1124/54 299/1125/55 297/1126/56 -f 300/1127/57 301/1128/58 299/1125/55 -f 302/1129/59 303/1130/60 301/1128/58 -f 304/1131/61 305/1132/62 303/1130/60 -f 302/1133/59 326/1134/63 327/1135/64 -f 295/1136/52 314/1137/65 293/1123/53 -f 315/722/66 317/1138/67 318/1139/68 -f 293/1123/53 313/1140/69 308/1141/70 -f 303/1142/60 320/1143/71 319/1144/72 -f 303/1142/60 318/1139/68 301/1145/58 -f 301/1145/58 317/1138/67 299/1125/55 -f 297/1146/56 317/1138/67 316/721/73 -f 326/1134/63 325/1147/74 324/1148/75 -f 323/1149/76 330/1150/77 331/1151/5 -f 307/1152/78 323/1149/76 294/1153/51 -f 298/1154/54 326/1134/63 300/1155/57 -f 296/1156/79 323/1149/76 324/1148/75 -f 304/1157/61 329/1158/80 306/1159/81 -f 302/1133/59 328/1160/82 304/1157/61 -f 319/1144/72 314/1137/65 318/1139/68 -f 332/1161/5 328/1160/82 331/1151/5 -f 314/1137/65 321/1162/3 313/1140/69 -f 319/1144/72 322/1163/3 321/1162/3 -f 328/1160/82 323/1149/76 331/1151/5 -f 350/1164/3 357/1165/19 349/1166/19 -f 352/1167/7 364/1168/11 351/1169/11 -f 355/1170/20 361/1171/5 354/1172/5 -f 353/1173/12 359/1174/7 352/1175/7 -f 349/1166/19 363/1176/4 356/1177/4 -f 351/1169/11 358/1178/3 350/1164/3 -f 356/1177/4 362/1179/20 355/1170/20 -f 354/1172/5 360/1180/12 353/1173/12 -f 378/1181/5 371/1182/83 379/1183/83 -f 376/1184/1 369/1185/78 377/1186/78 -f 374/1187/3 367/1188/70 375/1189/70 -f 380/1190/2 365/1191/84 373/1192/84 -f 379/1183/83 372/1193/2 380/1190/2 -f 377/1186/78 370/1194/5 378/1195/5 -f 375/1189/70 368/1196/1 376/1184/1 -f 373/1192/84 366/1197/3 374/1187/3 -f 394/1198/5 387/1199/83 395/1200/83 -f 392/1201/1 385/1202/78 393/1203/78 -f 390/1204/3 383/1205/70 391/1206/70 -f 396/1207/2 381/1208/84 389/1209/84 -f 395/1200/83 388/1210/2 396/1207/2 -f 393/1203/78 386/1211/5 394/1212/5 -f 391/1206/70 384/1213/1 392/1201/1 -f 389/1209/84 382/1214/3 390/1204/3 -f 400/1215/85 397/1216/86 398/1217/87 -f 404/1218/88 401/1219/56 402/1220/54 -f 406/1221/89 403/1222/90 404/1218/88 -f 408/1223/91 405/1224/92 406/1221/89 -f 402/1225/54 425/1226/93 404/1227/88 -f 420/1228/94 413/1229/95 421/1230/96 -f 419/1231/97 421/1230/96 415/1232/98 -f 427/1233/99 414/1234/100 408/1235/91 -f 407/1236/101 419/1231/97 405/1237/92 -f 407/1236/101 413/1229/95 420/1228/94 -f 401/1238/56 418/1239/102 417/762/73 -f 399/1240/103 415/1232/98 397/1216/86 -f 405/1237/92 418/1239/102 403/1222/90 -f 422/1241/104 425/1226/93 424/1242/74 -f 400/1243/85 423/1244/105 422/1241/104 -f 406/1245/89 425/1226/93 426/1246/106 -f 416/346/107 419/1231/97 415/1232/98 -f 406/1245/89 427/1233/99 408/1235/91 -f 414/1234/100 427/1233/99 428/1247/108 -f 416/346/107 418/1239/102 419/1231/97 -f 426/1246/106 422/1241/104 423/1244/105 -f 428/1247/108 426/1246/106 423/1244/105 -f 451/773/109 458/1248/110 452/1249/109 -f 458/1248/110 449/1250/111 450/1251/111 -f 456/1252/112 451/773/6 452/1249/6 -f 453/1253/113 456/1252/112 454/1254/113 -f 479/1255/83 463/1256/114 462/1257/83 -f 467/1258/115 473/1259/84 468/1260/84 -f 464/1261/116 476/1262/15 465/1263/15 -f 463/1256/114 477/1264/116 464/1261/116 -f 482/1265/14 460/1266/117 459/1267/14 -f 473/1259/84 469/1268/118 468/1260/84 -f 476/1269/15 466/1270/119 465/1271/15 -f 481/1272/117 461/1273/120 460/1266/117 -f 469/1268/118 471/1274/121 470/1275/121 -f 475/1276/119 467/1258/115 466/1270/119 -f 461/1273/120 479/1255/83 462/1257/83 -f 470/1275/121 482/1265/14 459/1267/14 -f 490/1277/84 497/1278/3 489/1279/3 -f 488/1280/70 495/1281/1 487/1282/1 -f 486/1283/78 493/1284/5 485/1285/5 -f 484/1286/83 491/1287/2 483/1288/2 -f 483/1288/2 498/1289/84 490/1277/84 -f 489/1279/3 496/1290/70 488/1280/70 -f 487/1282/1 494/1291/78 486/1283/78 -f 485/1292/5 492/1293/83 484/1286/83 -f 506/1294/84 513/1295/3 505/1296/3 -f 504/1297/70 511/1298/1 503/1299/1 -f 502/1300/78 509/1301/5 501/1302/5 -f 500/1303/83 507/1304/2 499/1305/2 -f 499/1305/2 514/1306/84 506/1294/84 -f 505/1296/3 512/1307/70 504/1297/70 -f 503/1299/1 510/1308/78 502/1300/78 -f 501/1309/5 508/1310/83 500/1303/83 -f 566/1311/122 559/1312/7 558/1313/12 -f 564/1314/123 557/1315/5 556/1316/20 -f 569/1317/124 562/1318/19 561/1319/3 -f 567/1320/48 560/1321/11 559/1322/7 -f 565/1323/125 558/1313/12 557/1315/5 -f 563/1324/126 556/1316/20 555/1325/4 -f 570/1326/127 555/1325/4 562/1318/19 -f 568/1327/128 561/1319/3 560/1321/11 -f 569/1328/124 577/1329/129 570/1326/127 -f 565/1330/125 574/1331/130 566/1332/122 -f 564/1314/123 571/1333/14 572/1334/131 -f 563/1324/126 577/1329/129 571/1333/14 -f 569/1328/124 575/1335/132 576/1336/133 -f 564/1314/123 573/1337/134 565/1330/125 -f 572/1334/131 580/1338/135 573/1337/134 -f 577/1329/129 583/1339/136 584/1340/137 -f 574/1331/130 580/1338/135 581/1341/138 -f 572/1334/131 578/1342/139 579/1343/140 -f 571/1333/14 584/1340/137 578/1342/139 -f 575/1335/132 583/1339/136 576/1336/133 -f 566/1332/122 574/1331/130 567/1344/48 -f 567/1345/48 575/1335/132 568/1346/128 -f 575/1335/132 567/1345/48 582/1347/141 -f 574/1331/130 581/1341/138 567/1344/48 -f 582/1348/141 585/1349/142 590/1350/143 -f 583/1351/136 592/1352/144 584/1340/137 -f 580/1353/135 589/1354/145 581/1355/138 -f 578/1342/139 587/1356/146 579/1343/140 -f 581/1355/138 585/1357/142 567/1358/48 -f 578/1342/139 592/1352/144 586/1359/147 -f 582/1348/141 591/1360/148 583/1351/136 -f 579/1343/140 588/1361/149 580/1353/135 -f 604/1362/122 597/1363/150 596/1364/151 -f 602/1365/123 595/1366/152 594/1367/153 -f 607/1368/124 600/1369/154 599/1370/155 -f 605/1371/48 598/1372/156 597/1363/150 -f 603/1373/125 596/1364/151 595/1374/152 -f 601/1375/126 594/1367/153 593/1376/157 -f 608/1377/127 593/1376/157 600/1369/154 -f 606/1378/128 599/1370/155 598/1372/156 -f 607/1379/124 615/1380/158 608/1377/127 -f 603/1381/125 612/1382/130 604/1383/122 -f 601/1375/126 610/1384/159 602/1365/123 -f 608/1377/127 609/1385/14 601/1375/126 -f 606/1386/128 614/1387/133 607/1379/124 -f 602/1365/123 611/1388/134 603/1389/125 -f 611/1388/134 617/1390/140 618/1391/135 -f 614/1387/133 622/1392/137 615/1380/158 -f 612/1382/130 618/1393/135 619/1394/138 -f 609/1385/14 617/1390/140 610/1384/159 -f 609/1385/14 622/1392/137 616/1395/139 -f 613/1396/132 621/1397/136 614/1387/133 -f 604/1383/122 612/1382/130 605/1398/48 -f 605/1398/48 613/1396/132 606/1386/128 -f 613/1396/132 605/1398/48 620/1399/141 -f 612/1382/130 619/1394/138 605/1398/48 -f 605/1400/48 628/1401/143 620/1402/141 -f 621/1403/136 630/1404/144 622/1392/137 -f 618/1405/135 627/1406/145 619/1407/138 -f 616/1395/139 625/1408/146 617/1390/140 -f 619/1407/138 623/1409/142 605/1400/48 -f 622/1392/137 624/1410/147 616/1395/139 -f 620/1402/141 629/1411/148 621/1403/136 -f 617/1390/140 626/1412/20 618/1413/135 -f 992/1414/160 1019/1415/19 635/1416/161 -f 1020/1417/162 1019/1415/19 992/1414/160 -f 991/1418/163 634/1419/164 1019/1420/19 -f 1019/1420/19 1018/1421/165 991/1418/163 -f 591/1360/148 644/1422/166 592/1352/144 -f 586/1423/147 640/1424/167 587/1425/146 -f 589/1426/145 638/1427/168 585/1428/142 -f 592/1352/144 639/1429/169 586/1423/147 -f 590/1350/143 643/1430/11 591/1360/148 -f 590/1350/143 638/1431/168 642/1432/170 -f 638/1427/168 648/1433/171 645/1434/172 -f 597/1435/150 656/1436/173 655/1437/174 -f 643/1430/11 649/1438/48 650/1439/175 -f 642/1432/170 645/1440/172 649/1438/48 -f 644/1422/166 650/1439/175 651/1441/176 -f 596/1364/151 653/1442/78 595/1374/152 -f 587/1425/146 640/1424/167 588/1443/149 -f 640/1424/167 647/1444/14 588/1443/149 -f 588/1443/149 641/1445/177 589/1426/145 -f 641/1445/177 588/1443/149 648/1433/171 -f 594/1367/153 646/1446/178 593/1447/157 -f 593/1447/157 657/1448/179 600/1449/154 -f 597/1435/150 654/1450/180 596/1364/151 -f 595/1366/152 652/1451/181 594/1367/153 -f 651/1441/176 639/1429/169 644/1422/166 -f 598/1452/156 599/1453/155 656/1436/173 -f 651/1454/176 656/1436/173 599/1453/155 -f 650/1455/175 656/1436/173 651/1454/176 -f 649/1438/48 655/1437/174 650/1455/175 -f 654/1450/180 645/1456/172 653/1442/78 -f 653/1457/78 648/1458/171 652/1451/181 -f 652/1451/181 588/1459/149 646/1446/178 -f 657/1448/179 588/1459/149 647/1460/14 -f 599/1461/155 640/1424/167 639/1429/169 -f 657/1448/179 647/1460/14 599/1453/155 -f 600/1449/154 657/1448/179 599/1453/155 -f 630/1404/144 663/1462/11 664/1463/166 -f 624/1464/147 660/1465/167 625/1466/146 -f 623/1467/142 661/1468/177 658/1469/168 -f 630/1404/144 659/1470/169 624/1464/147 -f 628/1401/143 663/1462/11 629/1411/148 -f 628/1401/143 658/1469/168 662/1471/170 -f 663/1462/11 669/1472/182 670/1473/183 -f 662/1471/170 665/1474/184 669/1472/182 -f 663/1462/11 671/1475/185 664/1463/166 -f 660/1465/167 666/1476/186 667/1477/187 -f 661/1468/177 665/1474/184 658/1469/168 -f 659/1470/169 671/1475/185 666/1476/186 -f 626/1478/20 661/1468/177 627/1479/145 -f 661/1468/177 626/1478/20 668/1480/188 -f 625/1466/146 660/1465/167 626/1481/20 -f 660/1465/167 667/1477/187 626/1481/20 -f 675/447/5 686/1482/36 674/468/36 -f 682/452/34 693/1483/3 681/450/3 -f 679/453/29 690/1484/7 678/823/7 -f 676/457/32 687/1485/5 675/447/5 -f 683/459/31 694/1486/34 682/452/34 -f 673/462/33 684/1487/4 672/460/4 -f 680/464/28 691/1488/29 679/453/29 -f 677/466/35 688/1489/32 676/457/32 -f 672/460/4 695/1490/31 683/459/31 -f 674/468/36 685/1491/33 673/462/33 -f 681/450/3 692/1492/28 680/464/28 -f 678/470/7 689/1493/35 677/466/35 -f 706/451/34 719/1494/31 707/458/31 -f 696/467/4 709/1495/33 697/461/33 -f 703/455/29 716/1496/28 704/463/28 -f 700/456/32 713/1497/35 701/465/35 -f 707/458/31 708/1498/4 696/467/4 -f 697/461/33 710/1499/36 698/448/36 -f 704/463/28 717/1500/3 705/469/3 -f 701/465/35 714/1501/7 702/471/7 -f 698/448/36 711/1502/5 699/449/5 -f 705/469/3 718/1503/34 706/451/34 -f 702/454/7 715/1504/29 703/455/29 -f 699/449/5 712/1505/32 700/456/32 -f 783/546/5 794/1506/36 782/567/36 -f 790/551/34 801/1507/3 789/549/3 -f 787/552/29 798/1508/7 786/858/7 -f 784/556/32 795/1509/5 783/546/5 -f 791/558/31 802/1510/34 790/551/34 -f 781/561/33 792/1511/4 780/559/4 -f 788/563/28 799/1512/29 787/552/29 -f 785/565/35 796/1513/32 784/556/32 -f 780/559/4 803/1514/31 791/558/31 -f 782/567/36 793/1515/33 781/561/33 -f 789/549/3 800/1516/28 788/563/28 -f 786/569/7 797/1517/35 785/565/35 -f 814/550/34 827/1518/31 815/557/31 -f 804/566/4 817/1519/33 805/560/33 -f 811/554/29 824/1520/28 812/562/28 -f 808/555/32 821/1521/35 809/564/35 -f 815/557/31 816/1522/4 804/566/4 -f 805/560/33 818/1523/36 806/547/36 -f 812/562/28 825/1524/3 813/568/3 -f 809/564/35 822/1525/7 810/570/7 -f 806/547/36 819/1526/5 807/548/5 -f 813/568/3 826/1527/34 814/550/34 -f 810/553/7 823/1528/29 811/554/29 -f 807/548/5 820/1529/32 808/555/32 -f 831/577/5 842/1530/36 830/598/36 -f 838/582/34 849/1531/3 837/580/3 -f 835/583/29 846/1532/7 834/877/7 -f 832/587/32 843/1533/5 831/577/5 -f 839/589/31 850/1534/34 838/582/34 -f 829/592/33 840/1535/4 828/590/4 -f 836/594/28 847/1536/29 835/583/29 -f 833/596/35 844/1537/32 832/587/32 -f 828/590/4 851/1538/31 839/589/31 -f 830/598/36 841/1539/33 829/592/33 -f 837/580/3 848/1540/28 836/594/28 -f 834/600/7 845/1541/35 833/596/35 -f 862/581/34 875/1542/31 863/588/31 -f 852/597/4 865/1543/33 853/591/33 -f 859/585/29 872/1544/28 860/593/28 -f 856/586/32 869/1545/35 857/595/35 -f 863/588/31 864/1546/4 852/597/4 -f 853/591/33 866/1547/36 854/578/36 -f 860/593/28 873/1548/3 861/599/3 -f 857/595/35 870/1549/7 858/601/7 -f 854/578/36 867/1550/5 855/579/5 -f 861/599/3 874/1551/34 862/581/34 -f 858/584/7 871/1552/29 859/585/29 -f 855/579/5 868/1553/32 856/586/32 -f 879/608/5 890/1554/36 878/629/36 -f 886/613/34 897/1555/3 885/611/3 -f 883/614/29 894/1556/7 882/896/7 -f 880/618/32 891/1557/5 879/608/5 -f 887/620/31 898/1558/34 886/613/34 -f 877/623/33 888/1559/4 876/621/4 -f 884/625/28 895/1560/29 883/614/29 -f 881/627/35 892/1561/32 880/618/32 -f 876/621/4 899/1562/31 887/620/31 -f 878/629/36 889/1563/33 877/623/33 -f 885/611/3 896/1564/28 884/625/28 -f 882/631/7 893/1565/35 881/627/35 -f 910/612/34 923/1566/31 911/619/31 -f 900/628/4 913/1567/33 901/622/33 -f 907/616/29 920/1568/28 908/624/28 -f 904/617/32 917/1569/35 905/626/35 -f 911/619/31 912/1570/4 900/628/4 -f 901/622/33 914/1571/36 902/609/36 -f 908/624/28 921/1572/3 909/630/3 -f 905/626/35 918/1573/7 906/632/7 -f 902/609/36 915/1574/5 903/610/5 -f 909/630/3 922/1575/34 910/612/34 -f 906/615/7 919/1576/29 907/616/29 -f 903/610/5 916/1577/32 904/617/32 -f 924/1578/1 939/1579/48 931/1580/48 -f 930/1581/7 937/1582/15 929/1583/15 -f 928/1584/2 935/1585/14 927/1586/14 -f 926/1587/4 932/1588/13 925/1589/13 -f 931/1580/48 938/1590/7 930/1591/7 -f 929/1583/15 936/1592/2 928/1584/2 -f 927/1586/14 934/1593/4 926/1587/4 -f 925/1589/13 933/1594/1 924/1578/1 -f 947/1595/84 954/1596/3 946/1597/3 -f 945/1598/70 952/1599/1 944/1600/1 -f 943/1601/78 950/1602/5 942/1603/5 -f 941/1604/83 948/1605/2 940/1606/2 -f 940/1606/2 955/1607/84 947/1595/84 -f 946/1597/3 953/1608/70 945/1598/70 -f 944/1600/1 951/1609/78 943/1601/78 -f 942/1610/5 949/1611/83 941/1604/83 -f 963/1612/84 970/1613/3 962/1614/3 -f 961/1615/70 968/1616/1 960/1617/1 -f 959/1618/78 966/1619/5 958/1620/5 -f 957/1621/83 964/1622/2 956/1623/2 -f 956/1623/2 971/1624/84 963/1612/84 -f 962/1614/3 969/1625/70 961/1615/70 -f 960/1617/1 967/1626/78 959/1618/78 -f 958/1627/5 965/1628/83 957/1621/83 -f 973/1629/3 980/1630/19 972/1631/19 -f 975/1632/7 987/1633/11 974/1634/11 -f 978/1635/20 984/1636/5 977/1637/5 -f 976/1638/12 982/1639/7 975/1640/7 -f 972/1631/19 986/1641/4 979/1642/4 -f 974/1634/11 981/1643/3 973/1629/3 -f 979/1642/4 985/1644/20 978/1635/20 -f 977/1637/5 983/1645/12 976/1638/12 -f 993/1646/189 631/1647/190 988/1648/191 -f 637/1649/192 991/1418/163 994/1650/193 -f 992/1414/160 636/1651/194 993/1646/189 -f 631/1647/190 989/1652/12 988/1648/191 -f 990/1653/195 637/1649/192 994/1650/193 -f 989/1652/12 633/1654/196 990/1653/195 -f 1017/1655/197 994/1650/193 1022/1656/198 -f 989/1652/12 1017/1655/197 1016/1657/199 -f 993/1646/189 1015/1658/200 1021/1659/201 -f 1022/1656/198 991/1418/163 1018/1421/165 -f 992/1414/160 1021/1659/201 1020/1417/162 -f 1015/1658/200 989/1652/12 1016/1657/199 -f 1045/1660/202 1046/1661/203 995/1662/204 -f 995/1662/204 1046/1661/203 1005/1663/14 -f 1013/1664/189 1005/1665/14 1046/1666/203 -f 1057/1667/205 995/1662/204 1005/1663/14 -f 1057/1667/205 1000/1668/206 1006/1669/207 -f 999/1670/70 1004/1671/208 1007/1672/209 -f 999/1673/70 1003/1674/48 998/1675/210 -f 1003/1674/48 997/1676/211 998/1675/210 -f 1002/1677/212 996/1678/213 997/1676/211 -f 1001/1679/214 1046/1661/203 996/1678/213 -f 1047/1680/215 996/1678/213 1046/1661/203 -f 1013/1664/189 1001/1681/214 1008/1682/216 -f 1000/1668/206 1050/1683/217 1051/1684/218 -f 998/1675/210 1048/1685/219 1049/1686/220 -f 995/1662/204 1052/1687/221 1045/1660/202 -f 1052/1687/221 1000/1668/206 1051/1684/218 -f 1011/1688/163 1004/1689/208 1057/1690/205 -f 1057/1690/205 1056/1691/165 1011/1688/163 -f 1012/1692/160 1057/1690/205 1005/1665/14 -f 1058/1693/162 1057/1690/205 1012/1692/160 -f 999/1673/70 1049/1686/220 1050/1694/217 -f 1008/1682/216 1002/1695/212 1009/1696/12 -f 1010/1697/195 1007/1698/209 1014/1699/193 -f 1009/1696/12 1003/1674/48 1010/1697/195 -f 1048/1685/219 996/1678/213 1047/1680/215 -f 1014/1700/193 1004/1689/208 1011/1688/163 -f 1010/1697/195 1060/1701/198 1055/1702/197 -f 1054/1703/199 1010/1697/195 1055/1702/197 -f 1059/1704/201 1008/1682/216 1053/1705/200 -f 1060/1706/198 1011/1688/163 1056/1691/165 -f 1012/1692/160 1059/1704/201 1058/1693/162 -f 1008/1682/216 1054/1703/199 1053/1705/200 -f 1019/1707/19 1028/1708/137 1027/1709/136 -f 1016/1657/199 1025/1710/138 1024/1711/135 -f 1021/1712/201 1023/1713/140 1029/1714/139 -f 1022/1715/198 1026/1716/141 1040/1717/48 -f 1020/1718/162 1029/1714/139 1028/1708/137 -f 1018/1719/165 1027/1720/136 1026/1716/141 -f 1015/1658/200 1024/1711/135 1023/1713/140 -f 1017/1655/197 1040/1717/48 1025/1710/138 -f 1033/1721/132 1040/1722/48 1026/1723/141 -f 1032/1724/130 1025/1725/138 1040/1722/48 -f 1040/1722/48 1039/1726/122 1032/1724/130 -f 1041/1727/128 1040/1722/48 1033/1721/132 -f 1024/1728/135 1032/1724/130 1031/1729/134 -f 1036/1730/14 1023/1713/140 1030/1731/159 -f 1028/1708/137 1036/1730/14 1035/1732/158 -f 1033/1721/132 1027/1733/136 1034/1734/133 -f 1023/1713/140 1031/1729/134 1030/1731/159 -f 1034/1735/133 1028/1708/137 1035/1732/158 -f 1042/1736/124 1035/1732/158 1043/1737/127 -f 1031/1729/134 1039/1726/122 1038/1738/125 -f 1036/1730/14 1037/1739/123 1044/1740/126 -f 1035/1732/158 1044/1740/126 1043/1737/127 -f 1033/1721/132 1042/1741/124 1041/1727/128 -f 1037/1739/123 1031/1729/134 1038/1738/125 -f 1046/1742/203 1039/1743/122 1047/1744/215 -f 1052/1745/221 1037/1739/123 1045/1746/202 -f 1051/1684/218 1044/1740/126 1052/1745/221 -f 1049/1686/220 1042/1747/124 1050/1694/217 -f 1047/1744/215 1040/1748/48 1048/1749/219 -f 1045/1746/202 1038/1750/125 1046/1742/203 -f 1050/1683/217 1043/1737/127 1051/1684/218 -f 1048/1749/219 1041/1751/128 1049/1686/220 -f 1057/1752/205 1066/1753/137 1065/1754/136 -f 1054/1703/199 1063/1755/138 1062/1756/135 -f 1067/1757/139 1053/1705/200 1061/1758/140 -f 1060/1759/198 1064/1760/141 1078/1761/48 -f 1058/1762/162 1067/1757/139 1066/1753/137 -f 1056/1763/165 1065/1754/136 1064/1760/141 -f 1053/1705/200 1062/1756/135 1061/1758/140 -f 1055/1702/197 1078/1764/48 1063/1755/138 -f 1071/1765/132 1078/1766/48 1064/1767/141 -f 1070/1768/130 1063/1769/138 1078/1770/48 -f 1078/1770/48 1077/1771/122 1070/1768/130 -f 1079/1772/128 1078/1766/48 1071/1765/132 -f 1062/1773/135 1070/1768/130 1069/1774/134 -f 1074/1775/14 1061/1758/140 1068/1776/159 -f 1073/1777/129 1067/1757/139 1074/1775/14 -f 1071/1765/132 1065/1778/136 1072/1779/133 -f 1068/1776/159 1062/1773/135 1069/1774/134 -f 1065/1778/136 1073/1777/129 1072/1779/133 -f 1072/1779/133 1081/1780/127 1080/1781/124 -f 1076/1782/125 1070/1768/130 1077/1771/122 -f 1074/1775/14 1075/1783/123 1082/1784/126 -f 1081/1780/127 1074/1775/14 1082/1784/126 -f 1071/1765/132 1080/1781/124 1079/1772/128 -f 1068/1776/159 1076/1782/125 1075/1783/123 -f 1084/1785/5 1077/1786/122 1085/1787/12 -f 1090/1788/4 1075/1783/123 1083/1789/20 -f 1089/1790/19 1082/1784/126 1090/1788/4 -f 1087/1791/11 1080/1792/124 1088/1793/3 -f 1085/1787/12 1078/1794/48 1086/1795/7 -f 1083/1789/20 1076/1796/125 1084/1785/5 -f 1088/1793/3 1081/1780/127 1089/1790/19 -f 1086/1797/7 1079/1798/128 1087/1791/11 -f 636/1799/194 667/1800/187 666/1801/186 -f 626/1802/20 635/1803/161 1019/1804/19 -f 634/1805/164 626/1802/20 1019/1804/19 -f 668/1806/188 637/1807/192 665/1808/184 -f 637/1807/192 669/1809/182 665/1808/184 -f 633/1810/196 670/1811/183 669/1809/182 -f 632/1812/222 671/1813/185 670/1814/183 -f 631/1815/190 666/1801/186 671/1813/185 -f 2/945/27 4/948/3 3/946/3 -f 4/948/3 6/950/28 5/949/28 -f 6/950/28 8/952/29 7/951/29 -f 8/952/29 10/1022/30 9/953/30 -f 17/954/4 29/1816/4 28/955/31 -f 14/957/3 26/967/3 25/958/28 -f 21/960/32 33/969/32 32/961/5 -f 18/963/33 30/974/33 29/964/4 -f 15/966/34 27/975/34 26/967/3 -f 22/968/35 34/976/35 33/969/32 -f 12/970/29 24/977/29 23/971/7 -f 19/973/36 31/978/36 30/974/33 -f 16/956/31 28/955/31 27/975/34 -f 11/972/7 23/971/7 34/976/35 -f 13/959/28 25/958/28 24/977/29 -f 20/962/5 32/961/5 31/978/36 -f 36/979/37 38/982/35 37/980/35 -f 38/982/35 40/984/32 39/983/32 -f 40/984/32 42/986/5 41/985/5 -f 42/986/5 44/1052/38 43/987/38 -f 51/988/4 63/1817/4 62/989/31 -f 48/991/3 60/1001/3 59/992/28 -f 55/994/32 67/1003/32 66/995/5 -f 52/997/33 64/1008/33 63/998/4 -f 49/1000/34 61/1009/34 60/1001/3 -f 56/1002/35 68/1010/35 67/1003/32 -f 46/1004/29 58/1011/29 57/1005/7 -f 53/1007/36 65/1012/36 64/1008/33 -f 50/990/31 62/989/31 61/1009/34 -f 45/1006/7 57/1005/7 68/1010/35 -f 47/993/28 59/992/28 58/1011/29 -f 54/996/5 66/995/5 65/1012/36 -f 74/1013/34 103/1818/34 107/1014/31 -f 107/1014/31 73/1017/39 70/1016/39 -f 73/1017/39 201/1819/40 104/1018/40 -f 78/1019/41 138/1820/42 137/1020/42 -f 10/1022/30 36/1821/37 35/1023/37 -f 137/1020/43 138/1820/43 2/945/27 -f 85/1024/4 97/1822/4 96/1025/31 -f 82/1027/3 94/1037/3 93/1028/28 -f 89/1030/32 101/1039/32 100/1031/5 -f 86/1033/33 98/1044/33 97/1034/4 -f 83/1036/34 95/1045/34 94/1037/3 -f 90/1038/35 102/1046/35 101/1039/32 -f 80/1040/29 92/1047/29 91/1041/7 -f 87/1043/36 99/1048/36 98/1044/33 -f 84/1026/31 96/1025/31 95/1045/34 -f 79/1042/7 91/1041/7 102/1046/35 -f 81/1029/28 93/1028/28 92/1047/29 -f 88/1032/5 100/1031/5 99/1048/36 -f 139/1049/44 140/1823/44 106/1050/45 -f 44/1052/38 140/1823/46 139/1049/46 -f 119/1053/4 131/1824/4 130/1054/31 -f 116/1056/3 128/1066/3 127/1057/28 -f 123/1059/32 135/1068/32 134/1060/5 -f 120/1062/33 132/1073/33 131/1063/4 -f 117/1065/34 129/1074/34 128/1066/3 -f 124/1067/35 136/1075/35 135/1068/32 -f 114/1069/29 126/1076/29 125/1070/7 -f 121/1072/36 133/1077/36 132/1073/33 -f 118/1055/31 130/1054/31 129/1074/34 -f 113/1071/7 125/1070/7 136/1075/35 -f 115/1058/28 127/1057/28 126/1076/29 -f 122/1061/5 134/1060/5 133/1077/36 -f 109/1078/47 103/1818/34 74/1013/34 -f 104/1018/40 201/1819/40 205/1080/33 -f 112/1081/33 205/1080/33 206/1082/36 -f 206/1082/36 203/1102/49 108/1084/5 -f 150/1085/2 152/1088/15 151/1086/15 -f 152/1088/15 154/1825/7 153/1089/7 -f 154/1090/7 156/1093/48 155/1091/48 -f 156/1093/48 158/1095/1 157/1094/1 -f 158/1095/1 160/1097/13 159/1096/13 -f 160/1097/13 162/1099/4 161/1098/4 -f 162/1099/4 164/1101/14 163/1100/14 -f 164/1101/14 150/1085/2 149/1087/2 -f 105/1051/45 106/1050/45 203/1102/49 -f 106/1050/45 108/1084/5 203/1102/49 -f 77/1021/41 75/1826/223 109/1078/47 -f 109/1078/47 76/1079/3 78/1019/41 -f 255/1104/2 264/1120/2 270/1105/15 -f 261/1107/7 269/1827/7 268/1108/48 -f 259/1110/1 267/1118/1 266/1111/13 -f 257/1113/4 265/1119/4 263/1114/14 -f 262/1106/15 270/1105/15 269/1116/7 -f 260/1109/48 268/1108/48 267/1118/1 -f 258/1112/13 266/1111/13 265/1119/4 -f 256/1115/14 263/1114/14 264/1120/2 -f 294/1121/51 296/1828/79 295/1122/52 -f 298/1124/54 300/1127/57 299/1125/55 -f 300/1127/57 302/1129/59 301/1128/58 -f 302/1129/59 304/1131/61 303/1130/60 -f 304/1131/61 306/1829/81 305/1132/62 -f 302/1133/59 300/1155/57 326/1134/63 -f 295/1136/52 315/722/66 314/1137/65 -f 318/1139/68 314/1137/65 315/722/66 -f 315/722/66 316/721/73 317/1138/67 -f 293/1123/53 314/1137/65 313/1140/69 -f 303/1142/60 305/1132/62 320/1143/71 -f 303/1142/60 319/1144/72 318/1139/68 -f 301/1145/58 318/1139/68 317/1138/67 -f 297/1146/56 299/1125/55 317/1138/67 -f 323/1149/76 327/1135/64 324/1148/75 -f 327/1135/64 326/1134/63 324/1148/75 -f 307/1152/78 330/1150/77 323/1149/76 -f 298/1154/54 325/1147/74 326/1134/63 -f 296/1156/79 294/1153/51 323/1149/76 -f 304/1157/61 328/1160/82 329/1158/80 -f 302/1133/59 327/1135/64 328/1160/82 -f 319/1144/72 321/1162/3 314/1137/65 -f 332/1161/5 329/1158/80 328/1160/82 -f 319/1144/72 320/1143/71 322/1163/3 -f 328/1160/82 327/1135/64 323/1149/76 -f 350/1164/3 358/1178/3 357/1165/19 -f 352/1167/7 359/1830/7 364/1168/11 -f 355/1170/20 362/1179/20 361/1171/5 -f 353/1173/12 360/1180/12 359/1174/7 -f 349/1166/19 357/1165/19 363/1176/4 -f 351/1169/11 364/1168/11 358/1178/3 -f 356/1177/4 363/1176/4 362/1179/20 -f 354/1172/5 361/1171/5 360/1180/12 -f 378/1181/5 370/1831/5 371/1182/83 -f 376/1184/1 368/1196/1 369/1185/78 -f 374/1187/3 366/1197/3 367/1188/70 -f 380/1190/2 372/1193/2 365/1191/84 -f 379/1183/83 371/1182/83 372/1193/2 -f 377/1186/78 369/1185/78 370/1194/5 -f 375/1189/70 367/1188/70 368/1196/1 -f 373/1192/84 365/1191/84 366/1197/3 -f 394/1198/5 386/1832/5 387/1199/83 -f 392/1201/1 384/1213/1 385/1202/78 -f 390/1204/3 382/1214/3 383/1205/70 -f 396/1207/2 388/1210/2 381/1208/84 -f 395/1200/83 387/1199/83 388/1210/2 -f 393/1203/78 385/1202/78 386/1211/5 -f 391/1206/70 383/1205/70 384/1213/1 -f 389/1209/84 381/1208/84 382/1214/3 -f 400/1215/85 399/1833/103 397/1216/86 -f 404/1218/88 403/1222/90 401/1219/56 -f 406/1221/89 405/1224/92 403/1222/90 -f 408/1223/91 407/1834/101 405/1224/92 -f 402/1225/54 424/1242/74 425/1226/93 -f 419/1231/97 420/1228/94 421/1230/96 -f 407/1236/101 420/1228/94 419/1231/97 -f 401/1238/56 403/1222/90 418/1239/102 -f 399/1240/103 416/346/107 415/1232/98 -f 405/1237/92 419/1231/97 418/1239/102 -f 422/1241/104 426/1246/106 425/1226/93 -f 400/1243/85 398/1835/87 423/1244/105 -f 406/1245/89 404/1227/88 425/1226/93 -f 406/1245/89 426/1246/106 427/1233/99 -f 416/346/107 417/762/73 418/1239/102 -f 428/1247/108 427/1233/99 426/1246/106 -f 451/773/109 457/1836/110 458/1248/110 -f 458/1248/110 457/1836/110 449/1250/111 -f 456/1252/112 455/1837/112 451/773/6 -f 453/1253/113 455/1837/112 456/1252/112 -f 479/1255/83 478/1838/114 463/1256/114 -f 467/1258/115 474/1839/115 473/1259/84 -f 464/1261/116 477/1264/116 476/1262/15 -f 463/1256/114 478/1838/114 477/1264/116 -f 482/1265/14 481/1272/117 460/1266/117 -f 473/1259/84 472/1840/118 469/1268/118 -f 476/1269/15 475/1276/119 466/1270/119 -f 481/1272/117 480/1841/120 461/1273/120 -f 469/1268/118 472/1840/118 471/1274/121 -f 475/1276/119 474/1839/115 467/1258/115 -f 461/1273/120 480/1841/120 479/1255/83 -f 470/1275/121 471/1274/121 482/1265/14 -f 490/1277/84 498/1289/84 497/1278/3 -f 488/1280/70 496/1290/70 495/1281/1 -f 486/1283/78 494/1291/78 493/1284/5 -f 484/1286/83 492/1293/83 491/1287/2 -f 483/1288/2 491/1287/2 498/1289/84 -f 489/1279/3 497/1278/3 496/1290/70 -f 487/1282/1 495/1281/1 494/1291/78 -f 485/1292/5 493/1842/5 492/1293/83 -f 506/1294/84 514/1306/84 513/1295/3 -f 504/1297/70 512/1307/70 511/1298/1 -f 502/1300/78 510/1308/78 509/1301/5 -f 500/1303/83 508/1310/83 507/1304/2 -f 499/1305/2 507/1304/2 514/1306/84 -f 505/1296/3 513/1295/3 512/1307/70 -f 503/1299/1 511/1298/1 510/1308/78 -f 501/1309/5 509/1843/5 508/1310/83 -f 566/1311/122 567/1844/48 559/1312/7 -f 564/1314/123 565/1323/125 557/1315/5 -f 569/1317/124 570/1326/127 562/1318/19 -f 567/1320/48 568/1327/128 560/1321/11 -f 565/1323/125 566/1311/122 558/1313/12 -f 563/1324/126 564/1314/123 556/1316/20 -f 570/1326/127 563/1324/126 555/1325/4 -f 568/1327/128 569/1317/124 561/1319/3 -f 569/1328/124 576/1336/133 577/1329/129 -f 565/1330/125 573/1337/134 574/1331/130 -f 564/1314/123 563/1324/126 571/1333/14 -f 563/1324/126 570/1326/127 577/1329/129 -f 569/1328/124 568/1346/128 575/1335/132 -f 564/1314/123 572/1334/131 573/1337/134 -f 572/1334/131 579/1343/140 580/1338/135 -f 577/1329/129 576/1336/133 583/1339/136 -f 574/1331/130 573/1337/134 580/1338/135 -f 572/1334/131 571/1333/14 578/1342/139 -f 571/1333/14 577/1329/129 584/1340/137 -f 575/1335/132 582/1347/141 583/1339/136 -f 582/1348/141 567/1845/48 585/1349/142 -f 583/1351/136 591/1360/148 592/1352/144 -f 580/1353/135 588/1361/149 589/1354/145 -f 578/1342/139 586/1359/147 587/1356/146 -f 581/1355/138 589/1354/145 585/1357/142 -f 578/1342/139 584/1340/137 592/1352/144 -f 582/1348/141 590/1350/143 591/1360/148 -f 579/1343/140 587/1356/146 588/1361/149 -f 604/1362/122 605/1371/48 597/1363/150 -f 602/1365/123 603/1846/125 595/1366/152 -f 607/1368/124 608/1377/127 600/1369/154 -f 605/1371/48 606/1378/128 598/1372/156 -f 603/1373/125 604/1362/122 596/1364/151 -f 601/1375/126 602/1365/123 594/1367/153 -f 608/1377/127 601/1375/126 593/1376/157 -f 606/1378/128 607/1368/124 599/1370/155 -f 607/1379/124 614/1387/133 615/1380/158 -f 603/1381/125 611/1847/134 612/1382/130 -f 601/1375/126 609/1385/14 610/1384/159 -f 608/1377/127 615/1380/158 609/1385/14 -f 606/1386/128 613/1396/132 614/1387/133 -f 602/1365/123 610/1384/159 611/1388/134 -f 611/1388/134 610/1384/159 617/1390/140 -f 614/1387/133 621/1397/136 622/1392/137 -f 612/1382/130 611/1847/134 618/1393/135 -f 609/1385/14 616/1395/139 617/1390/140 -f 609/1385/14 615/1380/158 622/1392/137 -f 613/1396/132 620/1399/141 621/1397/136 -f 605/1400/48 623/1409/142 628/1401/143 -f 621/1403/136 629/1411/148 630/1404/144 -f 618/1405/135 626/1848/20 627/1406/145 -f 616/1395/139 624/1410/147 625/1408/146 -f 619/1407/138 627/1406/145 623/1409/142 -f 622/1392/137 630/1404/144 624/1410/147 -f 620/1402/141 628/1401/143 629/1411/148 -f 617/1390/140 625/1408/146 626/1412/20 -f 591/1360/148 643/1430/11 644/1422/166 -f 586/1423/147 639/1429/169 640/1424/167 -f 589/1426/145 641/1445/177 638/1427/168 -f 592/1352/144 644/1422/166 639/1429/169 -f 590/1350/143 642/1432/170 643/1430/11 -f 590/1350/143 585/1849/142 638/1431/168 -f 638/1427/168 641/1445/177 648/1433/171 -f 597/1435/150 598/1452/156 656/1436/173 -f 643/1430/11 642/1432/170 649/1438/48 -f 642/1432/170 638/1431/168 645/1440/172 -f 644/1422/166 643/1430/11 650/1439/175 -f 596/1364/151 654/1450/180 653/1442/78 -f 594/1367/153 652/1451/181 646/1446/178 -f 593/1447/157 646/1446/178 657/1448/179 -f 597/1435/150 655/1437/174 654/1450/180 -f 595/1366/152 653/1457/78 652/1451/181 -f 651/1441/176 599/1461/155 639/1429/169 -f 650/1455/175 655/1437/174 656/1436/173 -f 649/1438/48 654/1450/180 655/1437/174 -f 654/1450/180 649/1438/48 645/1456/172 -f 653/1457/78 645/1850/172 648/1458/171 -f 652/1451/181 648/1458/171 588/1459/149 -f 657/1448/179 646/1446/178 588/1459/149 -f 599/1461/155 647/1444/14 640/1424/167 -f 630/1404/144 629/1411/148 663/1462/11 -f 624/1464/147 659/1470/169 660/1465/167 -f 623/1467/142 627/1479/145 661/1468/177 -f 630/1404/144 664/1463/166 659/1470/169 -f 628/1401/143 662/1471/170 663/1462/11 -f 628/1401/143 623/1467/142 658/1469/168 -f 663/1462/11 662/1471/170 669/1472/182 -f 662/1471/170 658/1469/168 665/1474/184 -f 663/1462/11 670/1473/183 671/1475/185 -f 660/1465/167 659/1470/169 666/1476/186 -f 661/1468/177 668/1480/188 665/1474/184 -f 659/1470/169 664/1463/166 671/1475/185 -f 675/447/5 687/1485/5 686/1482/36 -f 682/452/34 694/1486/34 693/1483/3 -f 679/453/29 691/1488/29 690/1484/7 -f 676/457/32 688/1489/32 687/1485/5 -f 683/459/31 695/1490/31 694/1486/34 -f 673/462/33 685/1491/33 684/1487/4 -f 680/464/28 692/1492/28 691/1488/29 -f 677/466/35 689/1493/35 688/1489/32 -f 672/460/4 684/1487/4 695/1490/31 -f 674/468/36 686/1482/36 685/1491/33 -f 681/450/3 693/1483/3 692/1492/28 -f 678/470/7 690/1851/7 689/1493/35 -f 706/451/34 718/1503/34 719/1494/31 -f 696/467/4 708/1498/4 709/1495/33 -f 703/455/29 715/1504/29 716/1496/28 -f 700/456/32 712/1505/32 713/1497/35 -f 707/458/31 719/1494/31 708/1498/4 -f 697/461/33 709/1495/33 710/1499/36 -f 704/463/28 716/1496/28 717/1500/3 -f 701/465/35 713/1497/35 714/1501/7 -f 698/448/36 710/1499/36 711/1502/5 -f 705/469/3 717/1500/3 718/1503/34 -f 702/454/7 714/1852/7 715/1504/29 -f 699/449/5 711/1502/5 712/1505/32 -f 783/546/5 795/1509/5 794/1506/36 -f 790/551/34 802/1510/34 801/1507/3 -f 787/552/29 799/1512/29 798/1508/7 -f 784/556/32 796/1513/32 795/1509/5 -f 791/558/31 803/1514/31 802/1510/34 -f 781/561/33 793/1515/33 792/1511/4 -f 788/563/28 800/1516/28 799/1512/29 -f 785/565/35 797/1517/35 796/1513/32 -f 780/559/4 792/1511/4 803/1514/31 -f 782/567/36 794/1506/36 793/1515/33 -f 789/549/3 801/1507/3 800/1516/28 -f 786/569/7 798/1853/7 797/1517/35 -f 814/550/34 826/1527/34 827/1518/31 -f 804/566/4 816/1522/4 817/1519/33 -f 811/554/29 823/1528/29 824/1520/28 -f 808/555/32 820/1529/32 821/1521/35 -f 815/557/31 827/1518/31 816/1522/4 -f 805/560/33 817/1519/33 818/1523/36 -f 812/562/28 824/1520/28 825/1524/3 -f 809/564/35 821/1521/35 822/1525/7 -f 806/547/36 818/1523/36 819/1526/5 -f 813/568/3 825/1524/3 826/1527/34 -f 810/553/7 822/1854/7 823/1528/29 -f 807/548/5 819/1526/5 820/1529/32 -f 831/577/5 843/1533/5 842/1530/36 -f 838/582/34 850/1534/34 849/1531/3 -f 835/583/29 847/1536/29 846/1532/7 -f 832/587/32 844/1537/32 843/1533/5 -f 839/589/31 851/1538/31 850/1534/34 -f 829/592/33 841/1539/33 840/1535/4 -f 836/594/28 848/1540/28 847/1536/29 -f 833/596/35 845/1541/35 844/1537/32 -f 828/590/4 840/1535/4 851/1538/31 -f 830/598/36 842/1530/36 841/1539/33 -f 837/580/3 849/1531/3 848/1540/28 -f 834/600/7 846/1855/7 845/1541/35 -f 862/581/34 874/1551/34 875/1542/31 -f 852/597/4 864/1546/4 865/1543/33 -f 859/585/29 871/1552/29 872/1544/28 -f 856/586/32 868/1553/32 869/1545/35 -f 863/588/31 875/1542/31 864/1546/4 -f 853/591/33 865/1543/33 866/1547/36 -f 860/593/28 872/1544/28 873/1548/3 -f 857/595/35 869/1545/35 870/1549/7 -f 854/578/36 866/1547/36 867/1550/5 -f 861/599/3 873/1548/3 874/1551/34 -f 858/584/7 870/1856/7 871/1552/29 -f 855/579/5 867/1550/5 868/1553/32 -f 879/608/5 891/1557/5 890/1554/36 -f 886/613/34 898/1558/34 897/1555/3 -f 883/614/29 895/1560/29 894/1556/7 -f 880/618/32 892/1561/32 891/1557/5 -f 887/620/31 899/1562/31 898/1558/34 -f 877/623/33 889/1563/33 888/1559/4 -f 884/625/28 896/1564/28 895/1560/29 -f 881/627/35 893/1565/35 892/1561/32 -f 876/621/4 888/1559/4 899/1562/31 -f 878/629/36 890/1554/36 889/1563/33 -f 885/611/3 897/1555/3 896/1564/28 -f 882/631/7 894/1857/7 893/1565/35 -f 910/612/34 922/1575/34 923/1566/31 -f 900/628/4 912/1570/4 913/1567/33 -f 907/616/29 919/1576/29 920/1568/28 -f 904/617/32 916/1577/32 917/1569/35 -f 911/619/31 923/1566/31 912/1570/4 -f 901/622/33 913/1567/33 914/1571/36 -f 908/624/28 920/1568/28 921/1572/3 -f 905/626/35 917/1569/35 918/1573/7 -f 902/609/36 914/1571/36 915/1574/5 -f 909/630/3 921/1572/3 922/1575/34 -f 906/615/7 918/1858/7 919/1576/29 -f 903/610/5 915/1574/5 916/1577/32 -f 924/1578/1 933/1594/1 939/1579/48 -f 930/1581/7 938/1859/7 937/1582/15 -f 928/1584/2 936/1592/2 935/1585/14 -f 926/1587/4 934/1593/4 932/1588/13 -f 931/1580/48 939/1579/48 938/1590/7 -f 929/1583/15 937/1582/15 936/1592/2 -f 927/1586/14 935/1585/14 934/1593/4 -f 925/1589/13 932/1588/13 933/1594/1 -f 947/1595/84 955/1607/84 954/1596/3 -f 945/1598/70 953/1608/70 952/1599/1 -f 943/1601/78 951/1609/78 950/1602/5 -f 941/1604/83 949/1611/83 948/1605/2 -f 940/1606/2 948/1605/2 955/1607/84 -f 946/1597/3 954/1596/3 953/1608/70 -f 944/1600/1 952/1599/1 951/1609/78 -f 942/1610/5 950/1860/5 949/1611/83 -f 963/1612/84 971/1624/84 970/1613/3 -f 961/1615/70 969/1625/70 968/1616/1 -f 959/1618/78 967/1626/78 966/1619/5 -f 957/1621/83 965/1628/83 964/1622/2 -f 956/1623/2 964/1622/2 971/1624/84 -f 962/1614/3 970/1613/3 969/1625/70 -f 960/1617/1 968/1616/1 967/1626/78 -f 958/1627/5 966/1861/5 965/1628/83 -f 973/1629/3 981/1643/3 980/1630/19 -f 975/1632/7 982/1862/7 987/1633/11 -f 978/1635/20 985/1644/20 984/1636/5 -f 976/1638/12 983/1645/12 982/1639/7 -f 972/1631/19 980/1630/19 986/1641/4 -f 974/1634/11 987/1633/11 981/1643/3 -f 979/1642/4 986/1641/4 985/1644/20 -f 977/1637/5 984/1636/5 983/1645/12 -f 993/1646/189 636/1651/194 631/1647/190 -f 637/1649/192 634/1419/164 991/1418/163 -f 992/1414/160 635/1416/161 636/1651/194 -f 631/1647/190 632/1863/222 989/1652/12 -f 990/1653/195 633/1654/196 637/1649/192 -f 989/1652/12 632/1863/222 633/1654/196 -f 1017/1655/197 990/1653/195 994/1650/193 -f 989/1652/12 990/1653/195 1017/1655/197 -f 993/1646/189 988/1648/191 1015/1658/200 -f 1022/1656/198 994/1650/193 991/1418/163 -f 992/1414/160 993/1646/189 1021/1659/201 -f 1015/1658/200 988/1648/191 989/1652/12 -f 1013/1664/189 1012/1692/160 1005/1665/14 -f 1057/1667/205 1006/1669/207 995/1662/204 -f 1057/1667/205 1004/1671/208 1000/1668/206 -f 999/1670/70 1000/1668/206 1004/1671/208 -f 999/1673/70 1007/1864/209 1003/1674/48 -f 1003/1674/48 1002/1677/212 997/1676/211 -f 1002/1677/212 1001/1679/214 996/1678/213 -f 1013/1664/189 1046/1666/203 1001/1681/214 -f 1000/1668/206 999/1670/70 1050/1683/217 -f 998/1675/210 997/1676/211 1048/1685/219 -f 995/1662/204 1006/1669/207 1052/1687/221 -f 1052/1687/221 1006/1669/207 1000/1668/206 -f 999/1673/70 998/1675/210 1049/1686/220 -f 1008/1682/216 1001/1681/214 1002/1695/212 -f 1010/1697/195 1003/1674/48 1007/1698/209 -f 1009/1696/12 1002/1695/212 1003/1674/48 -f 1048/1685/219 997/1676/211 996/1678/213 -f 1014/1700/193 1007/1865/209 1004/1689/208 -f 1010/1697/195 1014/1699/193 1060/1701/198 -f 1054/1703/199 1009/1696/12 1010/1697/195 -f 1059/1704/201 1013/1664/189 1008/1682/216 -f 1060/1706/198 1014/1700/193 1011/1688/163 -f 1012/1692/160 1013/1664/189 1059/1704/201 -f 1008/1682/216 1009/1696/12 1054/1703/199 -f 1019/1707/19 1020/1718/162 1028/1708/137 -f 1016/1657/199 1017/1655/197 1025/1710/138 -f 1021/1712/201 1015/1658/200 1023/1713/140 -f 1022/1715/198 1018/1719/165 1026/1716/141 -f 1020/1718/162 1021/1712/201 1029/1714/139 -f 1018/1719/165 1019/1866/19 1027/1720/136 -f 1015/1658/200 1016/1657/199 1024/1711/135 -f 1017/1655/197 1022/1715/198 1040/1717/48 -f 1024/1728/135 1025/1725/138 1032/1724/130 -f 1036/1730/14 1029/1714/139 1023/1713/140 -f 1028/1708/137 1029/1714/139 1036/1730/14 -f 1033/1721/132 1026/1723/141 1027/1733/136 -f 1023/1713/140 1024/1728/135 1031/1729/134 -f 1034/1735/133 1027/1867/136 1028/1708/137 -f 1042/1736/124 1034/1735/133 1035/1732/158 -f 1031/1729/134 1032/1724/130 1039/1726/122 -f 1036/1730/14 1030/1731/159 1037/1739/123 -f 1035/1732/158 1036/1730/14 1044/1740/126 -f 1033/1721/132 1034/1734/133 1042/1741/124 -f 1037/1739/123 1030/1731/159 1031/1729/134 -f 1046/1742/203 1038/1750/125 1039/1743/122 -f 1052/1745/221 1044/1740/126 1037/1739/123 -f 1051/1684/218 1043/1737/127 1044/1740/126 -f 1049/1686/220 1041/1751/128 1042/1747/124 -f 1047/1744/215 1039/1743/122 1040/1748/48 -f 1045/1746/202 1037/1739/123 1038/1750/125 -f 1050/1683/217 1042/1868/124 1043/1737/127 -f 1048/1749/219 1040/1748/48 1041/1751/128 -f 1057/1752/205 1058/1762/162 1066/1753/137 -f 1054/1703/199 1055/1702/197 1063/1755/138 -f 1067/1757/139 1059/1869/201 1053/1705/200 -f 1060/1759/198 1056/1763/165 1064/1760/141 -f 1058/1762/162 1059/1869/201 1067/1757/139 -f 1056/1763/165 1057/1752/205 1065/1754/136 -f 1053/1705/200 1054/1703/199 1062/1756/135 -f 1055/1702/197 1060/1870/198 1078/1764/48 -f 1062/1773/135 1063/1769/138 1070/1768/130 -f 1074/1775/14 1067/1757/139 1061/1758/140 -f 1073/1777/129 1066/1753/137 1067/1757/139 -f 1071/1765/132 1064/1767/141 1065/1778/136 -f 1068/1776/159 1061/1758/140 1062/1773/135 -f 1065/1778/136 1066/1753/137 1073/1777/129 -f 1072/1779/133 1073/1777/129 1081/1780/127 -f 1076/1782/125 1069/1774/134 1070/1768/130 -f 1074/1775/14 1068/1776/159 1075/1783/123 -f 1081/1780/127 1073/1777/129 1074/1775/14 -f 1071/1765/132 1072/1779/133 1080/1781/124 -f 1068/1776/159 1069/1774/134 1076/1782/125 -f 1084/1785/5 1076/1796/125 1077/1786/122 -f 1090/1788/4 1082/1784/126 1075/1783/123 -f 1089/1790/19 1081/1780/127 1082/1784/126 -f 1087/1791/11 1079/1798/128 1080/1792/124 -f 1085/1787/12 1077/1786/122 1078/1794/48 -f 1083/1789/20 1075/1783/123 1076/1796/125 -f 1088/1793/3 1080/1792/124 1081/1780/127 -f 1086/1797/7 1078/1871/48 1079/1798/128 -f 636/1799/194 635/1803/161 667/1800/187 -f 626/1802/20 667/1800/187 635/1803/161 -f 634/1805/164 668/1806/188 626/1802/20 -f 668/1806/188 634/1805/164 637/1807/192 -f 637/1807/192 633/1810/196 669/1809/182 -f 633/1810/196 632/1872/222 670/1811/183 -f 632/1812/222 631/1815/190 671/1813/185 -f 631/1815/190 636/1799/194 666/1801/186 +f 683/1371/161 698/1372/171 690/1373/171 +f 689/1374/160 696/1375/172 688/1376/172 +f 687/1377/157 694/1378/170 686/1379/170 +f 685/1380/154 691/1381/173 684/1382/173 +f 690/1373/171 697/1383/160 689/1384/160 +f 688/1376/172 695/1385/157 687/1377/157 +f 686/1379/170 693/1386/154 685/1380/154 +f 684/1382/173 692/1387/161 683/1371/161 +f 716/1388/155 723/1389/163 715/1390/163 +f 718/1391/160 730/1392/158 717/1393/158 +f 721/1394/164 727/1395/153 720/1396/153 +f 719/1397/159 725/1398/160 718/1399/160 +f 715/1390/163 729/1400/154 722/1401/154 +f 717/1393/158 724/1402/155 716/1388/155 +f 722/1401/154 728/1403/164 721/1394/164 +f 720/1396/153 726/1404/159 719/1397/159 +f 734/1405/174 731/1406/175 732/1407/176 +f 738/1408/177 735/1409/178 736/1410/179 +f 740/1411/180 737/1412/181 738/1408/177 +f 742/1413/182 739/1414/183 740/1411/180 +f 736/1415/179 759/1416/184 738/1417/177 +f 754/1418/185 747/1419/186 755/1420/187 +f 753/1421/188 755/1420/187 749/1422/189 +f 761/1423/190 748/1424/191 742/1425/182 +f 741/1426/192 753/1421/188 739/1427/183 +f 741/1426/192 747/1419/186 754/1418/185 +f 735/1428/178 752/1429/193 751/1327/194 +f 733/1430/195 749/1422/189 731/1406/175 +f 739/1427/183 752/1429/193 737/1412/181 +f 756/1431/196 759/1416/184 758/1432/197 +f 734/1433/174 757/1434/198 756/1431/196 +f 740/1435/180 759/1416/184 760/1436/199 +f 750/1214/200 753/1421/188 749/1422/189 +f 740/1435/180 761/1423/190 742/1425/182 +f 748/1424/191 761/1423/190 762/1437/201 +f 750/1214/200 752/1429/193 753/1421/188 +f 760/1436/199 756/1431/196 757/1434/198 +f 762/1437/201 760/1436/199 757/1434/198 +f 794/1438/202 787/1439/160 786/1440/159 +f 792/1441/203 785/1442/153 784/1443/164 +f 797/1444/204 790/1445/163 789/1446/155 +f 795/1447/172 788/1448/158 787/1449/160 +f 793/1450/205 786/1440/159 785/1442/153 +f 791/1451/206 784/1443/164 783/1452/154 +f 798/1453/207 783/1452/154 790/1445/163 +f 796/1454/208 789/1446/155 788/1448/158 +f 797/1455/204 805/1456/209 798/1453/207 +f 793/1457/205 802/1458/210 794/1459/202 +f 792/1441/203 799/1460/173 800/1461/211 +f 791/1451/206 805/1456/209 799/1460/173 +f 797/1455/204 803/1462/212 804/1463/213 +f 792/1441/203 801/1464/214 793/1457/205 +f 800/1461/211 808/1465/215 801/1464/214 +f 805/1456/209 811/1466/216 812/1467/217 +f 802/1458/210 808/1465/215 809/1468/218 +f 800/1461/211 806/1469/219 807/1470/220 +f 799/1460/173 812/1467/217 806/1469/219 +f 803/1462/212 811/1466/216 804/1463/213 +f 794/1459/202 802/1458/210 795/1471/172 +f 795/1472/172 803/1462/212 796/1473/208 +f 803/1462/212 795/1472/172 810/1474/221 +f 802/1458/210 809/1468/218 795/1471/172 +f 810/1475/221 813/1476/222 818/1477/223 +f 811/1478/216 820/1479/224 812/1467/217 +f 808/1480/215 817/1481/225 809/1482/218 +f 806/1469/219 815/1483/226 807/1470/220 +f 809/1482/218 813/1484/222 795/1485/172 +f 806/1469/219 820/1479/224 814/1486/227 +f 810/1475/221 819/1487/228 811/1478/216 +f 807/1470/220 816/1488/229 808/1480/215 +f 832/1489/202 825/1490/230 824/1491/231 +f 830/1492/203 823/1493/232 822/1494/233 +f 835/1495/204 828/1496/234 827/1497/235 +f 833/1498/172 826/1499/236 825/1490/230 +f 831/1500/205 824/1491/231 823/1501/232 +f 829/1502/206 822/1494/233 821/1503/237 +f 836/1504/207 821/1503/237 828/1496/234 +f 834/1505/208 827/1497/235 826/1499/236 +f 835/1506/204 843/1507/238 836/1504/207 +f 831/1508/205 840/1509/210 832/1510/202 +f 829/1502/206 838/1511/239 830/1492/203 +f 836/1504/207 837/1512/173 829/1502/206 +f 834/1513/208 842/1514/213 835/1506/204 +f 830/1492/203 839/1515/214 831/1516/205 +f 839/1515/214 845/1517/220 846/1518/215 +f 842/1514/213 850/1519/217 843/1507/238 +f 840/1509/210 846/1520/215 847/1521/218 +f 837/1512/173 845/1517/220 838/1511/239 +f 837/1512/173 850/1519/217 844/1522/219 +f 841/1523/212 849/1524/216 842/1514/213 +f 832/1510/202 840/1509/210 833/1525/172 +f 833/1525/172 841/1523/212 834/1513/208 +f 841/1523/212 833/1525/172 848/1526/221 +f 840/1509/210 847/1521/218 833/1525/172 +f 833/1527/172 856/1528/223 848/1529/221 +f 849/1530/216 858/1531/224 850/1519/217 +f 846/1532/215 855/1533/225 847/1534/218 +f 844/1522/219 853/1535/226 845/1517/220 +f 847/1534/218 851/1536/222 833/1527/172 +f 850/1519/217 852/1537/227 844/1522/219 +f 848/1529/221 857/1538/228 849/1530/216 +f 845/1517/220 854/1539/164 846/1540/215 +f 976/1541/240 1003/1542/163 863/1543/241 +f 1004/1544/242 1003/1542/163 976/1541/240 +f 975/1545/243 862/1546/244 1003/1547/163 +f 1003/1547/163 1002/1548/245 975/1545/243 +f 819/1487/228 872/1549/246 820/1479/224 +f 814/1550/227 868/1551/247 815/1552/226 +f 817/1553/225 866/1554/248 813/1555/222 +f 820/1479/224 867/1556/249 814/1550/227 +f 818/1477/223 871/1557/158 819/1487/228 +f 818/1477/223 866/1558/248 870/1559/250 +f 866/1554/248 876/1560/251 873/1561/252 +f 825/1562/230 884/1563/253 883/1564/254 +f 871/1557/158 877/1565/172 878/1566/255 +f 870/1559/250 873/1567/252 877/1565/172 +f 872/1549/246 878/1566/255 879/1568/256 +f 824/1491/231 881/1569/257 823/1501/232 +f 815/1552/226 868/1551/247 816/1570/229 +f 868/1551/247 875/1571/173 816/1570/229 +f 816/1570/229 869/1572/258 817/1553/225 +f 869/1572/258 816/1570/229 876/1560/251 +f 822/1494/233 874/1573/259 821/1574/237 +f 821/1574/237 885/1575/260 828/1576/234 +f 825/1562/230 882/1577/261 824/1491/231 +f 823/1493/232 880/1578/262 822/1494/233 +f 879/1568/256 867/1556/249 872/1549/246 +f 826/1579/236 827/1580/235 884/1563/253 +f 879/1581/256 884/1563/253 827/1580/235 +f 878/1582/255 884/1563/253 879/1581/256 +f 877/1565/172 883/1564/254 878/1582/255 +f 882/1577/261 873/1583/252 881/1569/257 +f 881/1584/257 876/1585/251 880/1578/262 +f 880/1578/262 816/1586/229 874/1573/259 +f 885/1575/260 816/1586/229 875/1587/173 +f 827/1588/235 868/1551/247 867/1556/249 +f 885/1575/260 875/1587/173 827/1580/235 +f 828/1576/234 885/1575/260 827/1580/235 +f 858/1531/224 891/1589/158 892/1590/246 +f 852/1591/227 888/1592/247 853/1593/226 +f 851/1594/222 889/1595/258 886/1596/248 +f 858/1531/224 887/1597/249 852/1591/227 +f 856/1528/223 891/1589/158 857/1538/228 +f 856/1528/223 886/1596/248 890/1598/250 +f 891/1589/158 897/1599/263 898/1600/264 +f 890/1598/250 893/1601/265 897/1599/263 +f 891/1589/158 899/1602/266 892/1590/246 +f 888/1592/247 894/1603/267 895/1604/268 +f 889/1595/258 893/1601/265 886/1596/248 +f 887/1597/249 899/1602/266 894/1603/267 +f 854/1605/164 889/1595/258 855/1606/225 +f 889/1595/258 854/1605/164 896/1607/269 +f 853/1593/226 888/1592/247 854/1608/164 +f 888/1592/247 895/1604/268 854/1608/164 +f 908/1609/157 923/1610/172 915/1611/172 +f 914/1612/160 921/1613/171 913/1614/171 +f 912/1615/161 919/1616/173 911/1617/173 +f 910/1618/154 916/1619/170 909/1620/170 +f 915/1611/172 922/1621/160 914/1622/160 +f 913/1614/171 920/1623/161 912/1615/161 +f 911/1617/173 918/1624/154 910/1618/154 +f 909/1620/170 917/1625/157 908/1609/157 +f 931/1626/270 938/1627/155 930/1628/155 +f 929/1629/271 936/1630/157 928/1631/157 +f 927/1632/257 934/1633/153 926/1634/153 +f 925/1635/272 932/1636/161 924/1637/161 +f 924/1637/161 939/1638/270 931/1626/270 +f 930/1628/155 937/1639/271 929/1629/271 +f 928/1631/157 935/1640/257 927/1632/257 +f 926/1641/153 933/1642/272 925/1635/272 +f 947/1643/270 954/1644/155 946/1645/155 +f 945/1646/271 952/1647/157 944/1648/157 +f 943/1649/257 950/1650/153 942/1651/153 +f 941/1652/272 948/1653/161 940/1654/161 +f 940/1654/161 955/1655/270 947/1643/270 +f 946/1645/155 953/1656/271 945/1646/271 +f 944/1648/157 951/1657/257 943/1649/257 +f 942/1658/153 949/1659/272 941/1652/272 +f 957/1660/155 964/1661/163 956/1662/163 +f 959/1663/160 971/1664/158 958/1665/158 +f 962/1666/164 968/1667/153 961/1668/153 +f 960/1669/159 966/1670/160 959/1671/160 +f 956/1662/163 970/1672/154 963/1673/154 +f 958/1665/158 965/1674/155 957/1660/155 +f 963/1673/154 969/1675/164 962/1666/164 +f 961/1668/153 967/1676/159 960/1669/159 +f 977/1677/273 859/1678/274 972/1679/275 +f 865/1680/276 975/1545/243 978/1681/277 +f 976/1541/240 864/1682/278 977/1677/273 +f 859/1678/274 973/1683/159 972/1679/275 +f 974/1684/279 865/1680/276 978/1681/277 +f 973/1683/159 861/1685/280 974/1684/279 +f 1001/1686/281 978/1681/277 1006/1687/282 +f 973/1683/159 1001/1686/281 1000/1688/283 +f 977/1677/273 999/1689/284 1005/1690/285 +f 1006/1687/282 975/1545/243 1002/1548/245 +f 976/1541/240 1005/1690/285 1004/1544/242 +f 999/1689/284 973/1683/159 1000/1688/283 +f 1029/1691/286 1030/1692/287 979/1693/288 +f 979/1693/288 1030/1692/287 989/1694/173 +f 997/1695/273 989/1696/173 1030/1697/287 +f 1041/1698/289 979/1693/288 989/1694/173 +f 1041/1698/289 984/1699/290 990/1700/291 +f 983/1701/271 988/1702/292 991/1703/293 +f 983/1704/271 987/1705/172 982/1706/294 +f 987/1705/172 981/1707/295 982/1706/294 +f 986/1708/296 980/1709/297 981/1707/295 +f 985/1710/298 1030/1692/287 980/1709/297 +f 1031/1711/299 980/1709/297 1030/1692/287 +f 997/1695/273 985/1712/298 992/1713/300 +f 984/1699/290 1034/1714/301 1035/1715/302 +f 982/1706/294 1032/1716/303 1033/1717/304 +f 979/1693/288 1036/1718/305 1029/1691/286 +f 1036/1718/305 984/1699/290 1035/1715/302 +f 995/1719/243 988/1720/292 1041/1721/289 +f 1041/1721/289 1040/1722/245 995/1719/243 +f 996/1723/240 1041/1721/289 989/1696/173 +f 1042/1724/242 1041/1721/289 996/1723/240 +f 983/1704/271 1033/1717/304 1034/1725/301 +f 992/1713/300 986/1726/296 993/1727/159 +f 994/1728/279 991/1729/293 998/1730/277 +f 993/1727/159 987/1705/172 994/1728/279 +f 1032/1716/303 980/1709/297 1031/1711/299 +f 998/1731/277 988/1720/292 995/1719/243 +f 994/1728/279 1044/1732/282 1039/1733/281 +f 1038/1734/283 994/1728/279 1039/1733/281 +f 1043/1735/285 992/1713/300 1037/1736/284 +f 1044/1737/282 995/1719/243 1040/1722/245 +f 996/1723/240 1043/1735/285 1042/1724/242 +f 992/1713/300 1038/1734/283 1037/1736/284 +f 1003/1738/163 1012/1739/217 1011/1740/216 +f 1000/1688/283 1009/1741/218 1008/1742/215 +f 1005/1743/285 1007/1744/220 1013/1745/219 +f 1006/1746/282 1010/1747/221 1024/1748/172 +f 1004/1749/242 1013/1745/219 1012/1739/217 +f 1002/1750/245 1011/1751/216 1010/1747/221 +f 999/1689/284 1008/1742/215 1007/1744/220 +f 1001/1686/281 1024/1748/172 1009/1741/218 +f 1017/1752/212 1024/1753/172 1010/1754/221 +f 1016/1755/210 1009/1756/218 1024/1753/172 +f 1024/1753/172 1023/1757/202 1016/1755/210 +f 1025/1758/208 1024/1753/172 1017/1752/212 +f 1008/1759/215 1016/1755/210 1015/1760/214 +f 1020/1761/173 1007/1744/220 1014/1762/239 +f 1012/1739/217 1020/1761/173 1019/1763/238 +f 1017/1752/212 1011/1764/216 1018/1765/213 +f 1007/1744/220 1015/1760/214 1014/1762/239 +f 1018/1766/213 1012/1739/217 1019/1763/238 +f 1026/1767/204 1019/1763/238 1027/1768/207 +f 1015/1760/214 1023/1757/202 1022/1769/205 +f 1020/1761/173 1021/1770/203 1028/1771/206 +f 1019/1763/238 1028/1771/206 1027/1768/207 +f 1017/1752/212 1026/1772/204 1025/1758/208 +f 1021/1770/203 1015/1760/214 1022/1769/205 +f 1030/1773/287 1023/1774/202 1031/1775/299 +f 1036/1776/305 1021/1770/203 1029/1777/286 +f 1035/1715/302 1028/1771/206 1036/1776/305 +f 1033/1717/304 1026/1778/204 1034/1725/301 +f 1031/1775/299 1024/1779/172 1032/1780/303 +f 1029/1777/286 1022/1781/205 1030/1773/287 +f 1034/1714/301 1027/1768/207 1035/1715/302 +f 1032/1780/303 1025/1782/208 1033/1717/304 +f 1041/1783/289 1050/1784/217 1049/1785/216 +f 1038/1734/283 1047/1786/218 1046/1787/215 +f 1051/1788/219 1037/1736/284 1045/1789/220 +f 1044/1790/282 1048/1791/221 1062/1792/172 +f 1042/1793/242 1051/1788/219 1050/1784/217 +f 1040/1794/245 1049/1785/216 1048/1791/221 +f 1037/1736/284 1046/1787/215 1045/1789/220 +f 1039/1733/281 1062/1795/172 1047/1786/218 +f 1055/1796/212 1062/1797/172 1048/1798/221 +f 1054/1799/210 1047/1800/218 1062/1801/172 +f 1062/1801/172 1061/1802/202 1054/1799/210 +f 1063/1803/208 1062/1797/172 1055/1796/212 +f 1046/1804/215 1054/1799/210 1053/1805/214 +f 1058/1806/173 1045/1789/220 1052/1807/239 +f 1057/1808/209 1051/1788/219 1058/1806/173 +f 1055/1796/212 1049/1809/216 1056/1810/213 +f 1052/1807/239 1046/1804/215 1053/1805/214 +f 1049/1809/216 1057/1808/209 1056/1810/213 +f 1056/1810/213 1065/1811/207 1064/1812/204 +f 1060/1813/205 1054/1799/210 1061/1802/202 +f 1058/1806/173 1059/1814/203 1066/1815/206 +f 1065/1811/207 1058/1806/173 1066/1815/206 +f 1055/1796/212 1064/1812/204 1063/1803/208 +f 1052/1807/239 1060/1813/205 1059/1814/203 +f 1068/1816/153 1061/1817/202 1069/1818/159 +f 1074/1819/154 1059/1814/203 1067/1820/164 +f 1073/1821/163 1066/1815/206 1074/1819/154 +f 1071/1822/158 1064/1823/204 1072/1824/155 +f 1069/1818/159 1062/1825/172 1070/1826/160 +f 1067/1820/164 1060/1827/205 1068/1816/153 +f 1072/1824/155 1065/1811/207 1073/1821/163 +f 1070/1828/160 1063/1829/208 1071/1822/158 +f 864/1830/278 895/1831/268 894/1832/267 +f 854/1833/164 863/1834/241 1003/1835/163 +f 862/1836/244 854/1833/164 1003/1835/163 +f 896/1837/269 865/1838/276 893/1839/265 +f 865/1838/276 897/1840/263 893/1839/265 +f 861/1841/280 898/1842/264 897/1840/263 +f 860/1843/306 899/1844/266 898/1845/264 +f 859/1846/274 894/1832/267 899/1844/266 +f 683/1371/161 692/1387/161 698/1372/171 +f 689/1374/160 697/1847/160 696/1375/172 +f 687/1377/157 695/1385/157 694/1378/170 +f 685/1380/154 693/1386/154 691/1381/173 +f 690/1373/171 698/1372/171 697/1383/160 +f 688/1376/172 696/1375/172 695/1385/157 +f 686/1379/170 694/1378/170 693/1386/154 +f 684/1382/173 691/1381/173 692/1387/161 +f 716/1388/155 724/1402/155 723/1389/163 +f 718/1391/160 725/1848/160 730/1392/158 +f 721/1394/164 728/1403/164 727/1395/153 +f 719/1397/159 726/1404/159 725/1398/160 +f 715/1390/163 723/1389/163 729/1400/154 +f 717/1393/158 730/1392/158 724/1402/155 +f 722/1401/154 729/1400/154 728/1403/164 +f 720/1396/153 727/1395/153 726/1404/159 +f 734/1405/174 733/1849/195 731/1406/175 +f 738/1408/177 737/1412/181 735/1409/178 +f 740/1411/180 739/1414/183 737/1412/181 +f 742/1413/182 741/1850/192 739/1414/183 +f 736/1415/179 758/1432/197 759/1416/184 +f 753/1421/188 754/1418/185 755/1420/187 +f 741/1426/192 754/1418/185 753/1421/188 +f 735/1428/178 737/1412/181 752/1429/193 +f 733/1430/195 750/1214/200 749/1422/189 +f 739/1427/183 753/1421/188 752/1429/193 +f 756/1431/196 760/1436/199 759/1416/184 +f 734/1433/174 732/1851/176 757/1434/198 +f 740/1435/180 738/1417/177 759/1416/184 +f 740/1435/180 760/1436/199 761/1423/190 +f 750/1214/200 751/1327/194 752/1429/193 +f 762/1437/201 761/1423/190 760/1436/199 +f 794/1438/202 795/1852/172 787/1439/160 +f 792/1441/203 793/1450/205 785/1442/153 +f 797/1444/204 798/1453/207 790/1445/163 +f 795/1447/172 796/1454/208 788/1448/158 +f 793/1450/205 794/1438/202 786/1440/159 +f 791/1451/206 792/1441/203 784/1443/164 +f 798/1453/207 791/1451/206 783/1452/154 +f 796/1454/208 797/1444/204 789/1446/155 +f 797/1455/204 804/1463/213 805/1456/209 +f 793/1457/205 801/1464/214 802/1458/210 +f 792/1441/203 791/1451/206 799/1460/173 +f 791/1451/206 798/1453/207 805/1456/209 +f 797/1455/204 796/1473/208 803/1462/212 +f 792/1441/203 800/1461/211 801/1464/214 +f 800/1461/211 807/1470/220 808/1465/215 +f 805/1456/209 804/1463/213 811/1466/216 +f 802/1458/210 801/1464/214 808/1465/215 +f 800/1461/211 799/1460/173 806/1469/219 +f 799/1460/173 805/1456/209 812/1467/217 +f 803/1462/212 810/1474/221 811/1466/216 +f 810/1475/221 795/1853/172 813/1476/222 +f 811/1478/216 819/1487/228 820/1479/224 +f 808/1480/215 816/1488/229 817/1481/225 +f 806/1469/219 814/1486/227 815/1483/226 +f 809/1482/218 817/1481/225 813/1484/222 +f 806/1469/219 812/1467/217 820/1479/224 +f 810/1475/221 818/1477/223 819/1487/228 +f 807/1470/220 815/1483/226 816/1488/229 +f 832/1489/202 833/1498/172 825/1490/230 +f 830/1492/203 831/1854/205 823/1493/232 +f 835/1495/204 836/1504/207 828/1496/234 +f 833/1498/172 834/1505/208 826/1499/236 +f 831/1500/205 832/1489/202 824/1491/231 +f 829/1502/206 830/1492/203 822/1494/233 +f 836/1504/207 829/1502/206 821/1503/237 +f 834/1505/208 835/1495/204 827/1497/235 +f 835/1506/204 842/1514/213 843/1507/238 +f 831/1508/205 839/1855/214 840/1509/210 +f 829/1502/206 837/1512/173 838/1511/239 +f 836/1504/207 843/1507/238 837/1512/173 +f 834/1513/208 841/1523/212 842/1514/213 +f 830/1492/203 838/1511/239 839/1515/214 +f 839/1515/214 838/1511/239 845/1517/220 +f 842/1514/213 849/1524/216 850/1519/217 +f 840/1509/210 839/1855/214 846/1520/215 +f 837/1512/173 844/1522/219 845/1517/220 +f 837/1512/173 843/1507/238 850/1519/217 +f 841/1523/212 848/1526/221 849/1524/216 +f 833/1527/172 851/1536/222 856/1528/223 +f 849/1530/216 857/1538/228 858/1531/224 +f 846/1532/215 854/1856/164 855/1533/225 +f 844/1522/219 852/1537/227 853/1535/226 +f 847/1534/218 855/1533/225 851/1536/222 +f 850/1519/217 858/1531/224 852/1537/227 +f 848/1529/221 856/1528/223 857/1538/228 +f 845/1517/220 853/1535/226 854/1539/164 +f 819/1487/228 871/1557/158 872/1549/246 +f 814/1550/227 867/1556/249 868/1551/247 +f 817/1553/225 869/1572/258 866/1554/248 +f 820/1479/224 872/1549/246 867/1556/249 +f 818/1477/223 870/1559/250 871/1557/158 +f 818/1477/223 813/1857/222 866/1558/248 +f 866/1554/248 869/1572/258 876/1560/251 +f 825/1562/230 826/1579/236 884/1563/253 +f 871/1557/158 870/1559/250 877/1565/172 +f 870/1559/250 866/1558/248 873/1567/252 +f 872/1549/246 871/1557/158 878/1566/255 +f 824/1491/231 882/1577/261 881/1569/257 +f 822/1494/233 880/1578/262 874/1573/259 +f 821/1574/237 874/1573/259 885/1575/260 +f 825/1562/230 883/1564/254 882/1577/261 +f 823/1493/232 881/1584/257 880/1578/262 +f 879/1568/256 827/1588/235 867/1556/249 +f 878/1582/255 883/1564/254 884/1563/253 +f 877/1565/172 882/1577/261 883/1564/254 +f 882/1577/261 877/1565/172 873/1583/252 +f 881/1584/257 873/1858/252 876/1585/251 +f 880/1578/262 876/1585/251 816/1586/229 +f 885/1575/260 874/1573/259 816/1586/229 +f 827/1588/235 875/1571/173 868/1551/247 +f 858/1531/224 857/1538/228 891/1589/158 +f 852/1591/227 887/1597/249 888/1592/247 +f 851/1594/222 855/1606/225 889/1595/258 +f 858/1531/224 892/1590/246 887/1597/249 +f 856/1528/223 890/1598/250 891/1589/158 +f 856/1528/223 851/1594/222 886/1596/248 +f 891/1589/158 890/1598/250 897/1599/263 +f 890/1598/250 886/1596/248 893/1601/265 +f 891/1589/158 898/1600/264 899/1602/266 +f 888/1592/247 887/1597/249 894/1603/267 +f 889/1595/258 896/1607/269 893/1601/265 +f 887/1597/249 892/1590/246 899/1602/266 +f 908/1609/157 917/1625/157 923/1610/172 +f 914/1612/160 922/1859/160 921/1613/171 +f 912/1615/161 920/1623/161 919/1616/173 +f 910/1618/154 918/1624/154 916/1619/170 +f 915/1611/172 923/1610/172 922/1621/160 +f 913/1614/171 921/1613/171 920/1623/161 +f 911/1617/173 919/1616/173 918/1624/154 +f 909/1620/170 916/1619/170 917/1625/157 +f 931/1626/270 939/1638/270 938/1627/155 +f 929/1629/271 937/1639/271 936/1630/157 +f 927/1632/257 935/1640/257 934/1633/153 +f 925/1635/272 933/1642/272 932/1636/161 +f 924/1637/161 932/1636/161 939/1638/270 +f 930/1628/155 938/1627/155 937/1639/271 +f 928/1631/157 936/1630/157 935/1640/257 +f 926/1641/153 934/1860/153 933/1642/272 +f 947/1643/270 955/1655/270 954/1644/155 +f 945/1646/271 953/1656/271 952/1647/157 +f 943/1649/257 951/1657/257 950/1650/153 +f 941/1652/272 949/1659/272 948/1653/161 +f 940/1654/161 948/1653/161 955/1655/270 +f 946/1645/155 954/1644/155 953/1656/271 +f 944/1648/157 952/1647/157 951/1657/257 +f 942/1658/153 950/1861/153 949/1659/272 +f 957/1660/155 965/1674/155 964/1661/163 +f 959/1663/160 966/1862/160 971/1664/158 +f 962/1666/164 969/1675/164 968/1667/153 +f 960/1669/159 967/1676/159 966/1670/160 +f 956/1662/163 964/1661/163 970/1672/154 +f 958/1665/158 971/1664/158 965/1674/155 +f 963/1673/154 970/1672/154 969/1675/164 +f 961/1668/153 968/1667/153 967/1676/159 +f 977/1677/273 864/1682/278 859/1678/274 +f 865/1680/276 862/1546/244 975/1545/243 +f 976/1541/240 863/1543/241 864/1682/278 +f 859/1678/274 860/1863/306 973/1683/159 +f 974/1684/279 861/1685/280 865/1680/276 +f 973/1683/159 860/1863/306 861/1685/280 +f 1001/1686/281 974/1684/279 978/1681/277 +f 973/1683/159 974/1684/279 1001/1686/281 +f 977/1677/273 972/1679/275 999/1689/284 +f 1006/1687/282 978/1681/277 975/1545/243 +f 976/1541/240 977/1677/273 1005/1690/285 +f 999/1689/284 972/1679/275 973/1683/159 +f 997/1695/273 996/1723/240 989/1696/173 +f 1041/1698/289 990/1700/291 979/1693/288 +f 1041/1698/289 988/1702/292 984/1699/290 +f 983/1701/271 984/1699/290 988/1702/292 +f 983/1704/271 991/1864/293 987/1705/172 +f 987/1705/172 986/1708/296 981/1707/295 +f 986/1708/296 985/1710/298 980/1709/297 +f 997/1695/273 1030/1697/287 985/1712/298 +f 984/1699/290 983/1701/271 1034/1714/301 +f 982/1706/294 981/1707/295 1032/1716/303 +f 979/1693/288 990/1700/291 1036/1718/305 +f 1036/1718/305 990/1700/291 984/1699/290 +f 983/1704/271 982/1706/294 1033/1717/304 +f 992/1713/300 985/1712/298 986/1726/296 +f 994/1728/279 987/1705/172 991/1729/293 +f 993/1727/159 986/1726/296 987/1705/172 +f 1032/1716/303 981/1707/295 980/1709/297 +f 998/1731/277 991/1865/293 988/1720/292 +f 994/1728/279 998/1730/277 1044/1732/282 +f 1038/1734/283 993/1727/159 994/1728/279 +f 1043/1735/285 997/1695/273 992/1713/300 +f 1044/1737/282 998/1731/277 995/1719/243 +f 996/1723/240 997/1695/273 1043/1735/285 +f 992/1713/300 993/1727/159 1038/1734/283 +f 1003/1738/163 1004/1749/242 1012/1739/217 +f 1000/1688/283 1001/1686/281 1009/1741/218 +f 1005/1743/285 999/1689/284 1007/1744/220 +f 1006/1746/282 1002/1750/245 1010/1747/221 +f 1004/1749/242 1005/1743/285 1013/1745/219 +f 1002/1750/245 1003/1866/163 1011/1751/216 +f 999/1689/284 1000/1688/283 1008/1742/215 +f 1001/1686/281 1006/1746/282 1024/1748/172 +f 1008/1759/215 1009/1756/218 1016/1755/210 +f 1020/1761/173 1013/1745/219 1007/1744/220 +f 1012/1739/217 1013/1745/219 1020/1761/173 +f 1017/1752/212 1010/1754/221 1011/1764/216 +f 1007/1744/220 1008/1759/215 1015/1760/214 +f 1018/1766/213 1011/1867/216 1012/1739/217 +f 1026/1767/204 1018/1766/213 1019/1763/238 +f 1015/1760/214 1016/1755/210 1023/1757/202 +f 1020/1761/173 1014/1762/239 1021/1770/203 +f 1019/1763/238 1020/1761/173 1028/1771/206 +f 1017/1752/212 1018/1765/213 1026/1772/204 +f 1021/1770/203 1014/1762/239 1015/1760/214 +f 1030/1773/287 1022/1781/205 1023/1774/202 +f 1036/1776/305 1028/1771/206 1021/1770/203 +f 1035/1715/302 1027/1768/207 1028/1771/206 +f 1033/1717/304 1025/1782/208 1026/1778/204 +f 1031/1775/299 1023/1774/202 1024/1779/172 +f 1029/1777/286 1021/1770/203 1022/1781/205 +f 1034/1714/301 1026/1868/204 1027/1768/207 +f 1032/1780/303 1024/1779/172 1025/1782/208 +f 1041/1783/289 1042/1793/242 1050/1784/217 +f 1038/1734/283 1039/1733/281 1047/1786/218 +f 1051/1788/219 1043/1869/285 1037/1736/284 +f 1044/1790/282 1040/1794/245 1048/1791/221 +f 1042/1793/242 1043/1869/285 1051/1788/219 +f 1040/1794/245 1041/1783/289 1049/1785/216 +f 1037/1736/284 1038/1734/283 1046/1787/215 +f 1039/1733/281 1044/1870/282 1062/1795/172 +f 1046/1804/215 1047/1800/218 1054/1799/210 +f 1058/1806/173 1051/1788/219 1045/1789/220 +f 1057/1808/209 1050/1784/217 1051/1788/219 +f 1055/1796/212 1048/1798/221 1049/1809/216 +f 1052/1807/239 1045/1789/220 1046/1804/215 +f 1049/1809/216 1050/1784/217 1057/1808/209 +f 1056/1810/213 1057/1808/209 1065/1811/207 +f 1060/1813/205 1053/1805/214 1054/1799/210 +f 1058/1806/173 1052/1807/239 1059/1814/203 +f 1065/1811/207 1057/1808/209 1058/1806/173 +f 1055/1796/212 1056/1810/213 1064/1812/204 +f 1052/1807/239 1053/1805/214 1060/1813/205 +f 1068/1816/153 1060/1827/205 1061/1817/202 +f 1074/1819/154 1066/1815/206 1059/1814/203 +f 1073/1821/163 1065/1811/207 1066/1815/206 +f 1071/1822/158 1063/1829/208 1064/1823/204 +f 1069/1818/159 1061/1817/202 1062/1825/172 +f 1067/1820/164 1059/1814/203 1060/1827/205 +f 1072/1824/155 1064/1823/204 1065/1811/207 +f 1070/1828/160 1062/1871/172 1063/1829/208 +f 864/1830/278 863/1834/241 895/1831/268 +f 854/1833/164 895/1831/268 863/1834/241 +f 862/1836/244 896/1837/269 854/1833/164 +f 896/1837/269 862/1836/244 865/1838/276 +f 865/1838/276 861/1841/280 897/1840/263 +f 861/1841/280 860/1872/306 898/1842/264 +f 860/1843/306 859/1846/274 899/1844/266 +f 859/1846/274 864/1830/278 894/1832/267 diff --git a/src/main/resources/assets/hbm/models/weapons/maresleg.obj b/src/main/resources/assets/hbm/models/weapons/maresleg.obj index 22d8e64fa..d6ae6b853 100644 --- a/src/main/resources/assets/hbm/models/weapons/maresleg.obj +++ b/src/main/resources/assets/hbm/models/weapons/maresleg.obj @@ -1,3783 +1,2369 @@ # Blender v2.79 (sub 0) OBJ File: 'maresleg.blend' # www.blender.org -o Grip -v 0.026200 -0.016789 0.733764 -v 0.026200 -0.103402 0.697888 -v 0.026200 0.060944 0.546101 -v 0.026200 -0.025670 0.510225 -v -0.036300 0.060944 0.546101 -v -0.036300 -0.025670 0.510225 -v -0.036300 -0.016789 0.733764 -v -0.036300 -0.103402 0.697888 -v 0.026219 -0.093905 0.743458 -v 0.026219 -0.187655 0.743458 -v 0.026219 -0.093905 0.680958 -v 0.026219 -0.187655 0.680958 -v -0.036281 -0.093905 0.680958 -v -0.036281 -0.187655 0.680958 -v -0.036281 -0.093905 0.743458 -v -0.036281 -0.187655 0.743458 -v 0.026225 -0.091559 0.708804 -v 0.026225 -0.163738 0.738701 -v 0.026225 -0.115477 0.651061 -v 0.026225 -0.187655 0.680958 -v -0.036275 -0.115477 0.651061 -v -0.036275 -0.187655 0.680958 -v -0.036275 -0.091559 0.708804 -v -0.036275 -0.163738 0.738701 -v 0.026231 0.002670 0.634943 -v 0.026231 -0.085718 0.723331 -v 0.026231 -0.052573 0.579700 -v 0.026231 -0.140961 0.668089 -v -0.036269 -0.052573 0.579700 -v -0.036269 -0.140961 0.668089 -v -0.036269 0.002670 0.634943 -v -0.036269 -0.085718 0.723331 -v 0.026187 -0.111974 0.762847 -v 0.026187 -0.169717 0.786765 -v 0.026187 -0.129913 0.719540 -v 0.026187 -0.187655 0.743458 -v -0.036312 -0.129913 0.719540 -v -0.036312 -0.187655 0.743458 -v -0.036312 -0.111974 0.762847 -v -0.036312 -0.169717 0.786765 -v 0.026214 -0.037134 0.720474 -v 0.026214 -0.136571 0.819911 -v 0.026214 -0.070280 0.687328 -v 0.026214 -0.169717 0.786765 -v -0.036286 -0.070280 0.687328 -v -0.036286 -0.169717 0.786765 -v -0.036286 -0.037134 0.720474 -v -0.036286 -0.136571 0.819911 -v 0.041839 0.117489 0.123705 -v 0.041839 0.039364 0.123705 -v 0.041839 0.117489 -0.380670 -v 0.041839 0.039364 -0.380670 -v -0.051911 0.117489 -0.380670 -v -0.051911 0.039364 -0.380670 -v -0.051911 0.117489 0.123705 -v -0.051911 0.039364 0.123705 -v 0.041839 0.039364 0.123705 -v 0.029880 0.010493 0.123705 -v 0.041839 0.039364 -0.380670 -v 0.029880 0.010493 -0.380670 -v 0.012967 0.051323 -0.380670 -v 0.001008 0.022452 -0.380670 -v 0.012967 0.051323 0.123705 -v 0.001008 0.022452 0.123705 -v 0.005962 0.068236 0.123705 -v 0.029880 0.010493 0.123705 -v 0.005962 0.068236 -0.380670 -v 0.029880 0.010493 -0.380670 -v -0.022909 0.056277 -0.380670 -v 0.001008 -0.001466 -0.380670 -v -0.022909 0.056277 0.123705 -v 0.001008 -0.001466 0.123705 -v -0.023040 0.051323 0.123705 -v -0.011081 0.022452 0.123705 -v -0.023040 0.051323 -0.380670 -v -0.011081 0.022452 -0.380670 -v -0.051911 0.039364 -0.380670 -v -0.039952 0.010493 -0.380670 -v -0.051911 0.039364 0.123705 -v -0.039952 0.010493 0.123705 -v 0.012836 0.056277 0.123705 -v -0.011081 -0.001466 0.123705 -v 0.012836 0.056277 -0.380670 -v -0.011081 -0.001466 -0.380670 -v -0.016035 0.068235 -0.380670 -v -0.039952 0.010493 -0.380670 -v -0.016035 0.068235 0.123705 -v -0.039952 0.010493 0.123705 -v 0.001419 0.061034 0.123705 -v 0.001419 -0.001466 0.123705 -v 0.001419 0.061034 -0.380670 -v 0.001419 -0.001466 -0.380670 -v -0.011081 0.061034 -0.380670 -v -0.011081 -0.001466 -0.380670 -v -0.011081 0.061034 0.123705 -v -0.011081 -0.001466 0.123705 -v 0.041839 0.117489 -0.380670 -v 0.041839 0.039364 -0.380670 -v 0.041839 0.117489 -0.416295 -v 0.041839 0.039364 -0.416295 -v -0.051911 0.117489 -0.416295 -v -0.051911 0.039364 -0.416295 -v -0.051911 0.117489 -0.380670 -v -0.051911 0.039364 -0.380670 -v -0.023040 0.051323 -0.380670 -v -0.011081 0.022452 -0.380670 -v -0.023040 0.051323 -0.416295 -v -0.011081 0.022452 -0.416295 -v -0.051911 0.039364 -0.416295 -v -0.039952 0.010493 -0.416295 -v -0.051911 0.039364 -0.380670 -v -0.039952 0.010493 -0.380670 -v 0.012836 0.056277 -0.380670 -v -0.011081 -0.001466 -0.380670 -v 0.012836 0.056277 -0.416295 -v -0.011081 -0.001466 -0.416295 -v -0.016035 0.068235 -0.416295 -v -0.039952 0.010493 -0.416295 -v -0.016035 0.068235 -0.380670 -v -0.039952 0.010493 -0.380670 -v 0.005962 0.068236 -0.380670 -v 0.029880 0.010493 -0.380670 -v 0.005962 0.068236 -0.416295 -v 0.029880 0.010493 -0.416295 -v -0.022909 0.056277 -0.416295 -v 0.001008 -0.001466 -0.416295 -v -0.022909 0.056277 -0.380670 -v 0.001008 -0.001466 -0.380670 -v 0.001419 0.045409 -0.380670 -v 0.001419 -0.001466 -0.380670 -v 0.001419 0.045409 -0.416295 -v 0.001419 -0.001466 -0.416295 -v -0.011081 0.045409 -0.416295 -v -0.011081 -0.001466 -0.416295 -v -0.011081 0.045409 -0.380670 -v -0.011081 -0.001466 -0.380670 -v 0.041839 0.039364 -0.380670 -v 0.029880 0.010493 -0.380670 -v 0.041839 0.039364 -0.416295 -v 0.029880 0.010493 -0.416295 -v 0.012967 0.051323 -0.416295 -v 0.001008 0.022452 -0.416295 -v 0.012967 0.051323 -0.380670 -v 0.001008 0.022452 -0.380670 -v 0.026206 -0.015446 0.733253 -v 0.026206 -0.119302 0.837110 -v 0.026206 -0.048591 0.700108 -v 0.026206 -0.152448 0.803964 -v -0.036294 -0.048591 0.700108 -v -0.036294 -0.152448 0.803964 -v -0.036294 -0.015446 0.733253 -v -0.036294 -0.119302 0.837110 -vt 0.875000 0.250000 -vt 0.875000 0.062500 -vt 0.468750 0.250000 -vt 0.468750 0.062500 -vt 0.906250 0.250000 -vt 0.906250 0.062500 -vt 0.468750 0.250000 -vt 0.468750 0.062500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.187500 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.468750 0.250000 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.187500 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.468750 0.250000 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.718750 0.250000 -vt 0.718750 0.125000 -vt 0.468750 0.250000 -vt 0.468750 0.125000 -vt 0.750000 0.250000 -vt 0.750000 0.125000 -vt 0.468750 0.250000 -vt 0.468750 0.125000 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.187500 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.468750 0.250000 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.187500 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.468750 0.250000 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 1.000000 0.250000 -vt 1.000000 0.000000 -vt 0.468750 0.250000 -vt 0.468750 0.000000 -vt 0.843750 0.250000 -vt 0.843750 0.093750 -vt 0.468750 0.250000 -vt 0.468750 0.093750 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.812500 0.250000 -vt 0.812500 0.125000 -vt 0.468750 0.250000 -vt 0.468750 0.125000 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.187500 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.187500 -vt 0.468750 0.187500 -vt 0.937500 0.250000 -vt 0.937500 0.062500 -vt 0.468750 0.250000 -vt 0.468750 0.062500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.843750 0.250000 -vt 0.843750 0.093750 -vt 0.468750 0.250000 -vt 0.468750 0.093750 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.187500 -vt 0.468750 0.187500 -vt 0.906250 0.250000 -vt 0.906250 0.093750 -vt 0.468750 0.250000 -vt 0.468750 0.093750 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.187500 -vt 0.468750 0.187500 -vt 0.875000 0.250000 -vt 0.875000 0.062500 -vt 0.468750 0.250000 -vt 0.468750 0.062500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.187500 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.468750 0.250000 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.468750 0.250000 -vt 0.468750 0.187500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vn 1.0000 0.0000 0.0000 -vn -1.0000 0.0000 0.0000 -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 1.0000 0.0000 +o Lever +v -0.187500 0.769607 -3.582107 +v -0.187500 0.445183 -3.798880 +v 0.187500 1.187500 -2.375000 +v -0.187500 1.187500 -2.375000 +v 0.187500 0.437500 -2.375000 +v -0.187500 0.437500 -2.375000 +v -0.187500 0.437500 -2.875000 +v 0.187500 0.437500 -2.875000 +v -0.187500 1.187500 -2.500000 +v 0.187500 1.187500 -2.500000 +v -0.187500 -0.062500 -2.875000 +v 0.187500 -0.062500 -2.875000 +v -0.187500 0.062500 -3.875000 +v 0.187500 0.062500 -3.875000 +v 0.187500 0.445183 -3.798880 +v 0.187500 0.769607 -3.582107 +v 0.187500 0.986380 -3.257684 +v 0.187500 1.062500 -2.875000 +v -0.187500 0.986380 -3.257684 +v -0.187500 1.062500 -2.875000 +v 0.187500 -0.062500 -3.875000 +v -0.187500 -0.062500 -3.875000 +v -0.187500 1.062500 -2.625000 +v 0.187500 1.062500 -2.625000 +v 0.125000 -0.062500 -3.750000 +v -0.125000 -0.062500 -3.750000 +v -0.125000 -0.062500 -3.625000 +v 0.125000 -0.062500 -3.625000 +v 0.125000 -0.812500 -4.875000 +v -0.125000 -0.812500 -4.875000 +v 0.125000 -1.062500 -4.875000 +v -0.125000 -1.062500 -4.875000 +v 0.125000 -1.187500 -4.750000 +v -0.125000 -1.187500 -4.750000 +v 0.125000 -1.187500 -4.500000 +v -0.125000 -1.187500 -4.500000 +v 0.125000 -0.687500 -3.750000 +v -0.125000 -0.687500 -3.750000 +v 0.125000 -0.437500 -3.750000 +v -0.125000 -0.437500 -3.750000 +v 0.125000 -0.437500 -3.250000 +v -0.125000 -0.437500 -3.250000 +v 0.125000 -0.187500 -3.000000 +v -0.125000 -0.187500 -3.000000 +v 0.125000 -0.062500 -3.000000 +v -0.125000 -0.062500 -3.000000 +v 0.125000 -0.187500 -3.062500 +v -0.125000 -0.187500 -3.062500 +v 0.125000 -0.062500 -3.062500 +v -0.125000 -0.062500 -3.062500 +v 0.125000 -0.375000 -3.625000 +v -0.125000 -0.375000 -3.625000 +v 0.125000 -0.375000 -3.250000 +v -0.125000 -0.375000 -3.250000 +v 0.125000 -0.250000 -3.812500 +v -0.125000 -0.250000 -3.812500 +v 0.125000 -1.125000 -4.750000 +v -0.125000 -1.125000 -4.750000 +v 0.125000 -1.125000 -4.500000 +v -0.125000 -1.125000 -4.500000 +v 0.125000 -0.812500 -4.812500 +v -0.125000 -0.812500 -4.812500 +v 0.125000 -1.062500 -4.812500 +v -0.125000 -1.062500 -4.812500 +v 0.125000 -0.750000 -3.937500 +v -0.125000 -0.750000 -3.937500 +v 0.125000 -0.500000 -3.937500 +v -0.125000 -0.500000 -3.937500 +v 0.125000 -0.437500 -4.250000 +v -0.125000 -0.437500 -4.250000 +v 0.125000 -0.437500 -4.000000 +v -0.125000 -0.437500 -4.000000 +vt 0.975410 0.317757 +vt 0.909836 0.261682 +vt 0.975410 0.261682 +vt 0.852459 0.504673 +vt 0.877049 0.392523 +vt 0.877049 0.504673 +vt 0.975410 0.635514 +vt 1.000000 0.616822 +vt 1.000000 0.635514 +vt 0.975410 0.598131 +vt 1.000000 0.598131 +vt 0.852459 0.392523 +vt 0.877049 0.317757 +vt 0.885246 0.392523 +vt 0.909836 0.317757 +vt 0.909836 0.392523 +vt 0.893443 0.485981 +vt 0.909836 0.392523 +vt 0.877049 0.392523 +vt 0.893443 0.485981 +vt 0.885246 0.504673 +vt 0.934942 0.474589 +vt 0.956208 0.442187 +vt 0.970412 0.393687 +vt 0.336066 0.878505 +vt 0.344262 0.887850 +vt 0.336066 0.887850 +vt 0.344262 0.934579 +vt 0.336066 0.925234 +vt 0.344262 0.925234 +vt 0.368852 0.887850 +vt 0.393443 0.878505 +vt 0.401639 0.887850 +vt 0.393443 0.934579 +vt 0.368852 0.925234 +vt 0.401639 0.925234 +vt 0.364754 0.878505 +vt 0.364754 0.934579 +vt 0.241803 0.738318 +vt 0.258197 0.728972 +vt 0.241803 0.728972 +vt 0.258197 0.738318 +vt 0.241803 0.728972 +vt 0.258197 0.728972 +vt 0.262295 0.747664 +vt 0.266393 0.785047 +vt 0.266393 0.747664 +vt 0.262295 0.785047 +vt 0.266393 0.747664 +vt 0.266393 0.785047 +vt 0.262295 0.747664 +vt 0.204918 0.794393 +vt 0.192623 0.803738 +vt 0.204918 0.831776 +vt 0.204918 0.794393 +vt 0.192623 0.803738 +vt 0.204918 0.831776 +vt 0.192623 0.841121 +vt 0.196721 0.869159 +vt 0.209016 0.841121 +vt 0.209016 0.841121 +vt 0.196721 0.869159 +vt 0.225410 0.841121 +vt 0.192623 0.897196 +vt 0.225410 0.841121 +vt 0.975410 0.616822 +vt 0.852459 0.317757 +vt 0.885246 0.317757 +vt 0.877049 0.504673 +vt 0.885246 0.504673 +vt 0.909836 0.485981 +vt 0.909836 0.485981 +vt 0.970417 0.393693 +vt 0.975410 0.336449 +vt 0.909836 0.317757 +vt 0.975410 0.317757 +vt 0.975410 0.336449 +vt 0.956204 0.442175 +vt 0.934941 0.474575 +vt 0.344262 0.878505 +vt 0.336066 0.934579 +vt 0.368852 0.878505 +vt 0.368852 0.934579 +vt 0.348361 0.878505 +vt 0.348361 0.934579 +vt 0.258197 0.738318 +vt 0.241803 0.738318 +vt 0.262295 0.785047 +vt 0.192623 0.841121 +vt 0.184426 0.850467 +vt 0.184426 0.850467 +vt 0.192623 0.897196 +vt 0.184426 0.897196 +vt 0.184426 0.897196 +vt 1.000000 0.504673 +vt 0.975410 0.560748 +vt 0.975410 0.504673 +vt 1.000000 0.336449 +vt 0.975410 0.392523 +vt 1.000000 0.317757 +vt 1.000000 0.392523 +vt 0.975410 0.448598 +vt 1.000000 0.560748 +vt 1.000000 0.448598 +vt 0.147541 0.897196 +vt 0.057377 0.934579 +vt 0.057377 0.897196 +vt 0.163934 0.897196 +vt 0.147541 0.934579 +vt 0.176230 0.897196 +vt 0.163934 0.934579 +vt 0.192623 0.897196 +vt 0.176230 0.934579 +vt 0.250000 0.897196 +vt 0.192623 0.934579 +vt 0.266393 0.897196 +vt 0.250000 0.934579 +vt 0.336066 0.971963 +vt 0.348361 0.971963 +vt 0.364754 0.971963 +vt 0.368852 0.971963 +vt 0.409836 0.934579 +vt 0.393443 0.971963 +vt 0.409836 0.971963 +vt 0.426230 0.934579 +vt 0.426230 0.971963 +vt 0.077869 0.728972 +vt 0.061475 0.766355 +vt 0.061475 0.728972 +vt 0.077869 0.766355 +vt 0.086066 0.728972 +vt 0.086066 0.766355 +vt 0.102459 0.728972 +vt 0.020492 0.766355 +vt 0.168033 0.766355 +vt 0.184426 0.728972 +vt 0.184426 0.766355 +vt 0.143443 0.728972 +vt 0.102459 0.766355 +vt 0.159836 0.728972 +vt 0.143443 0.766355 +vt 0.159836 0.766355 +vt 0.168033 0.728972 +vt 0.266393 0.934579 +vt 0.344262 0.971963 +vt 0.020492 0.728972 vn 0.0000 -1.0000 0.0000 vn 0.0000 0.0000 1.0000 -vn 0.0000 0.0000 -1.0000 -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.7071 -0.7071 -vn 0.0000 -0.7071 0.7071 -vn 0.0000 0.7071 0.7071 -vn 0.0000 -0.7071 -0.7071 -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.9239 -0.3827 -0.0000 -vn -0.3827 0.9239 0.0000 -vn 0.3827 -0.9239 -0.0000 -s off -f 1/1/1 2/2/1 3/3/1 -f 2/2/1 4/4/1 3/3/1 -f 5/5/2 6/6/2 7/7/2 -f 6/6/2 8/8/2 7/7/2 -f 5/9/3 7/10/3 3/3/3 -f 7/10/3 1/11/3 3/3/3 -f 8/12/4 6/13/4 2/14/4 -f 6/13/4 4/15/4 2/14/4 -f 7/16/5 8/17/5 1/18/5 -f 8/17/5 2/19/5 1/18/5 -f 3/20/6 4/21/6 5/22/6 -f 4/21/6 6/23/6 5/22/6 -f 9/24/1 10/25/1 11/26/1 -f 10/25/1 12/27/1 11/26/1 -f 13/28/2 14/29/2 15/30/2 -f 14/29/2 16/31/2 15/30/2 -f 13/28/7 15/32/7 11/26/7 -f 15/32/7 9/33/7 11/26/7 -f 16/34/8 14/29/8 10/35/8 -f 14/29/8 12/27/8 10/35/8 -f 15/36/9 16/37/9 9/38/9 -f 16/37/9 10/39/9 9/38/9 -f 11/40/10 12/41/10 13/42/10 -f 12/41/10 14/43/10 13/42/10 -f 17/44/1 18/45/1 19/46/1 -f 18/45/1 20/47/1 19/46/1 -f 21/48/2 22/49/2 23/50/2 -f 22/49/2 24/51/2 23/50/2 -f 21/48/11 23/52/11 19/46/11 -f 23/52/11 17/53/11 19/46/11 -f 24/54/12 22/49/12 18/55/12 -f 22/49/12 20/47/12 18/55/12 -f 23/56/13 24/57/13 17/58/13 -f 24/57/13 18/59/13 17/58/13 -f 19/60/14 20/61/14 21/62/14 -f 20/61/14 22/63/14 21/62/14 -f 25/64/1 26/65/1 27/66/1 -f 26/65/1 28/67/1 27/66/1 -f 29/68/2 30/69/2 31/70/2 -f 30/69/2 32/71/2 31/70/2 -f 29/72/15 31/73/15 27/66/15 -f 31/73/15 25/74/15 27/66/15 -f 32/75/16 30/76/16 26/77/16 -f 30/76/16 28/78/16 26/77/16 -f 31/79/17 32/80/17 25/81/17 -f 32/80/17 26/82/17 25/81/17 -f 27/83/18 28/84/18 29/85/18 -f 28/84/18 30/86/18 29/85/18 -f 33/87/1 34/88/1 35/89/1 -f 34/88/1 36/90/1 35/89/1 -f 37/91/2 38/92/2 39/93/2 -f 38/92/2 40/94/2 39/93/2 -f 37/91/11 39/95/11 35/89/11 -f 39/95/11 33/96/11 35/89/11 -f 40/97/12 38/92/12 34/98/12 -f 38/92/12 36/90/12 34/98/12 -f 39/99/13 40/100/13 33/101/13 -f 40/100/13 34/102/13 33/101/13 -f 35/103/14 36/104/14 37/105/14 -f 36/104/14 38/106/14 37/105/14 -f 41/107/1 42/108/1 43/109/1 -f 42/108/1 44/110/1 43/109/1 -f 45/111/2 46/112/2 47/113/2 -f 46/112/2 48/114/2 47/113/2 -f 45/111/15 47/115/15 43/109/15 -f 47/115/15 41/116/15 43/109/15 -f 48/117/16 46/112/16 42/118/16 -f 46/112/16 44/110/16 42/118/16 -f 47/119/17 48/120/17 41/121/17 -f 48/120/17 42/122/17 41/121/17 -f 43/123/18 44/124/18 45/125/18 -f 44/124/18 46/126/18 45/125/18 -f 49/127/1 50/128/1 51/129/1 -f 50/128/1 52/130/1 51/129/1 -f 53/131/2 54/132/2 55/133/2 -f 54/132/2 56/134/2 55/133/2 -f 53/135/7 55/136/7 51/129/7 -f 55/136/7 49/137/7 51/129/7 -f 56/138/8 54/139/8 50/140/8 -f 54/139/8 52/141/8 50/140/8 -f 55/142/9 56/143/9 49/144/9 -f 56/143/9 50/145/9 49/144/9 -f 51/146/10 52/147/10 53/148/10 -f 52/147/10 54/149/10 53/148/10 -f 57/150/19 58/151/19 59/152/19 -f 58/151/19 60/153/19 59/152/19 -f 61/154/20 62/155/20 63/156/20 -f 62/155/20 64/157/20 63/156/20 -f 61/154/21 63/158/21 59/152/21 -f 63/158/21 57/159/21 59/152/21 -f 64/160/22 62/155/22 58/161/22 -f 62/155/22 60/162/22 58/161/22 -f 63/163/9 64/164/9 57/165/9 -f 64/164/9 58/166/9 57/165/9 -f 59/167/10 60/168/10 61/169/10 -f 60/168/10 62/170/10 61/169/10 -f 65/171/23 66/172/23 67/173/23 -f 66/172/23 68/174/23 67/173/23 -f 69/175/24 70/176/24 71/177/24 -f 70/176/24 72/178/24 71/177/24 -f 69/175/25 71/179/25 67/173/25 -f 71/179/25 65/180/25 67/173/25 -f 72/181/26 70/182/26 66/183/26 -f 70/182/26 68/184/26 66/183/26 -f 71/185/9 72/186/9 65/187/9 -f 72/186/9 66/188/9 65/187/9 -f 67/189/10 68/190/10 69/191/10 -f 68/190/10 70/192/10 69/191/10 -f 73/193/23 74/194/23 75/195/23 -f 74/194/23 76/196/23 75/195/23 -f 77/197/24 78/198/24 79/199/24 -f 78/198/24 80/200/24 79/199/24 -f 77/201/25 79/202/25 75/195/25 -f 79/202/25 73/203/25 75/195/25 -f 80/204/26 78/205/26 74/206/26 -f 78/205/26 76/196/26 74/206/26 -f 79/207/9 80/208/9 73/209/9 -f 80/208/9 74/210/9 73/209/9 -f 75/211/10 76/212/10 77/213/10 -f 76/212/10 78/214/10 77/213/10 -f 81/215/19 82/216/19 83/217/19 -f 82/216/19 84/218/19 83/217/19 -f 85/219/20 86/220/20 87/221/20 -f 86/220/20 88/222/20 87/221/20 -f 85/219/21 87/223/21 83/217/21 -f 87/223/21 81/224/21 83/217/21 -f 88/225/22 86/226/22 82/227/22 -f 86/226/22 84/228/22 82/227/22 -f 87/229/9 88/230/9 81/231/9 -f 88/230/9 82/232/9 81/231/9 -f 83/233/10 84/234/10 85/235/10 -f 84/234/10 86/236/10 85/235/10 -f 89/237/1 90/238/1 91/239/1 -f 90/238/1 92/240/1 91/239/1 -f 93/241/2 94/242/2 95/243/2 -f 94/242/2 96/244/2 95/243/2 -f 93/241/7 95/245/7 91/239/7 -f 95/245/7 89/246/7 91/239/7 -f 96/247/8 94/248/8 90/249/8 -f 94/248/8 92/250/8 90/249/8 -f 95/251/9 96/252/9 89/253/9 -f 96/252/9 90/254/9 89/253/9 -f 91/255/10 92/256/10 93/257/10 -f 92/256/10 94/258/10 93/257/10 -f 145/259/1 146/260/1 147/261/1 -f 146/260/1 148/262/1 147/261/1 -f 149/263/2 150/264/2 151/265/2 -f 150/264/2 152/266/2 151/265/2 -f 149/263/15 151/267/15 147/261/15 -f 151/267/15 145/268/15 147/261/15 -f 152/269/16 150/264/16 146/270/16 -f 150/264/16 148/262/16 146/270/16 -f 151/271/17 152/272/17 145/273/17 -f 152/272/17 146/274/17 145/273/17 -f 147/275/18 148/276/18 149/277/18 -f 148/276/18 150/278/18 149/277/18 -f 97/279/1 98/280/1 99/281/1 -f 98/280/1 100/282/1 99/281/1 -f 101/283/2 102/284/2 103/285/2 -f 102/284/2 104/286/2 103/285/2 -f 101/283/7 103/287/7 99/281/7 -f 103/287/7 97/288/7 99/281/7 -f 104/289/8 102/284/8 98/290/8 -f 102/284/8 100/282/8 98/290/8 -f 103/291/9 104/292/9 97/293/9 -f 104/292/9 98/294/9 97/293/9 -f 99/295/10 100/296/10 101/297/10 -f 100/296/10 102/298/10 101/297/10 -f 105/299/23 106/300/23 107/301/23 -f 106/300/23 108/302/23 107/301/23 -f 109/303/24 110/304/24 111/305/24 -f 110/304/24 112/306/24 111/305/24 -f 109/303/25 111/307/25 107/301/25 -f 111/307/25 105/308/25 107/301/25 -f 112/309/26 110/304/26 106/310/26 -f 110/304/26 108/302/26 106/310/26 -f 111/311/9 112/312/9 105/313/9 -f 112/312/9 106/314/9 105/313/9 -f 107/315/10 108/316/10 109/317/10 -f 108/316/10 110/318/10 109/317/10 -f 113/319/19 114/320/19 115/321/19 -f 114/320/19 116/322/19 115/321/19 -f 117/323/20 118/324/20 119/325/20 -f 118/324/20 120/326/20 119/325/20 -f 117/323/21 119/327/21 115/321/21 -f 119/327/21 113/328/21 115/321/21 -f 120/329/22 118/324/22 114/330/22 -f 118/324/22 116/322/22 114/330/22 -f 119/331/9 120/332/9 113/333/9 -f 120/332/9 114/334/9 113/333/9 -f 115/335/10 116/336/10 117/337/10 -f 116/336/10 118/338/10 117/337/10 -f 121/339/23 122/340/23 123/341/23 -f 122/340/23 124/342/23 123/341/23 -f 125/343/24 126/344/24 127/345/24 -f 126/344/24 128/346/24 127/345/24 -f 125/343/25 127/347/25 123/341/25 -f 127/347/25 121/348/25 123/341/25 -f 128/349/26 126/344/26 122/350/26 -f 126/344/26 124/342/26 122/350/26 -f 127/351/9 128/352/9 121/353/9 -f 128/352/9 122/354/9 121/353/9 -f 123/355/10 124/356/10 125/357/10 -f 124/356/10 126/358/10 125/357/10 -f 129/359/1 130/360/1 131/361/1 -f 130/360/1 132/362/1 131/361/1 -f 133/363/2 134/364/2 135/365/2 -f 134/364/2 136/366/2 135/365/2 -f 133/363/7 135/367/7 131/361/7 -f 135/367/7 129/368/7 131/361/7 -f 136/369/8 134/364/8 130/370/8 -f 134/364/8 132/362/8 130/370/8 -f 135/371/9 136/372/9 129/373/9 -f 136/372/9 130/374/9 129/373/9 -f 131/375/10 132/376/10 133/377/10 -f 132/376/10 134/378/10 133/377/10 -f 137/379/19 138/380/19 139/381/19 -f 138/380/19 140/382/19 139/381/19 -f 141/383/20 142/384/20 143/385/20 -f 142/384/20 144/386/20 143/385/20 -f 141/383/21 143/387/21 139/381/21 -f 143/387/21 137/388/21 139/381/21 -f 144/389/22 142/384/22 138/390/22 -f 142/384/22 140/382/22 138/390/22 -f 143/391/9 144/392/9 137/393/9 -f 144/392/9 138/394/9 137/393/9 -f 139/395/10 140/396/10 141/397/10 -f 140/396/10 142/398/10 141/397/10 -o Lever -v 0.019964 0.080214 0.281241 -v 0.019964 0.024971 0.336484 -v 0.019964 0.024971 0.225999 -v 0.019964 -0.030272 0.281241 -v -0.030036 0.024971 0.225999 -v -0.030036 -0.030272 0.281241 -v -0.030036 0.080214 0.281241 -v -0.030036 0.024971 0.336484 -v 0.019964 0.008853 0.262532 -v 0.019964 -0.020018 0.274490 -v 0.019964 0.002874 0.248096 -v 0.019964 -0.025998 0.260055 -v -0.030036 0.002874 0.248096 -v -0.030036 -0.025998 0.260055 -v -0.030036 0.008853 0.262532 -v -0.030036 -0.020018 0.274490 -v 0.019964 -0.014949 0.271104 -v 0.019964 -0.037046 0.293201 -v 0.019964 -0.025997 0.260055 -v 0.019964 -0.048094 0.282152 -v -0.030036 -0.025997 0.260055 -v -0.030036 -0.048094 0.282152 -v -0.030036 -0.014949 0.271104 -v -0.030036 -0.037046 0.293201 -v 0.019964 -0.022610 0.299180 -v 0.019964 -0.037046 0.293200 -v 0.019964 -0.010651 0.270308 -v 0.019964 -0.025087 0.264329 -v -0.030036 -0.010651 0.270308 -v -0.030036 -0.025087 0.264329 -v -0.030036 -0.022610 0.299180 -v -0.030036 -0.037046 0.293200 -v 0.019964 0.038612 0.362084 -v 0.019964 -0.027679 0.295793 -v 0.019964 0.049660 0.351036 -v 0.019964 -0.016631 0.284744 -v -0.030036 0.049660 0.351036 -v -0.030036 -0.016631 0.284744 -v -0.030036 0.038612 0.362084 -v -0.030036 -0.027679 0.295793 -v 0.007464 0.015470 0.337208 -v 0.007464 -0.031405 0.337208 -v 0.007464 0.015470 0.274708 -v 0.007464 -0.031405 0.274708 -v -0.017536 0.015470 0.274708 -v -0.017536 -0.031405 0.274708 -v -0.017536 0.015470 0.337208 -v -0.017536 -0.031405 0.337208 -v 0.007464 0.011902 0.355146 -v 0.007464 -0.031405 0.337208 -v 0.007464 0.035819 0.297404 -v 0.007464 -0.007487 0.279466 -v -0.017536 0.035819 0.297404 -v -0.017536 -0.007487 0.279466 -v -0.017536 0.011902 0.355146 -v -0.017536 -0.031405 0.337208 -v 0.007464 -0.016969 0.331229 -v 0.007464 -0.074712 0.355146 -v 0.007464 -0.022949 0.316793 -v 0.007464 -0.080691 0.340711 -v -0.017536 -0.022949 0.316793 -v -0.017536 -0.080691 0.340711 -v -0.017536 -0.016969 0.331229 -v -0.017536 -0.074712 0.355146 -v 0.007464 -0.084194 0.389997 -v 0.007464 -0.098629 0.384018 -v 0.007464 -0.066255 0.346690 -v 0.007464 -0.080691 0.340711 -v -0.017536 -0.066255 0.346690 -v -0.017536 -0.080691 0.340711 -v -0.017536 -0.084194 0.389997 -v -0.017536 -0.098629 0.384018 -v 0.007464 -0.083004 0.430892 -v 0.007464 -0.098629 0.430892 -v 0.007464 -0.083004 0.384017 -v 0.007464 -0.098629 0.384017 -v -0.017536 -0.083004 0.384017 -v -0.017536 -0.098629 0.384017 -v -0.017536 -0.083004 0.430892 -v -0.017536 -0.098629 0.430892 -v 0.007464 -0.054436 0.452989 -v 0.007464 -0.065484 0.464038 -v 0.007464 -0.087581 0.419844 -v 0.007464 -0.098630 0.430892 -v -0.017536 -0.087581 0.419844 -v -0.017536 -0.098630 0.430892 -v -0.017536 -0.054436 0.452989 -v -0.017536 -0.065484 0.464038 -v 0.007464 -0.182975 0.584708 -v 0.007464 -0.197410 0.578729 -v 0.007464 -0.165036 0.541401 -v 0.007464 -0.179472 0.535422 -v -0.017536 -0.165036 0.541401 -v -0.017536 -0.179472 0.535422 -v -0.017536 -0.182975 0.584708 -v -0.017536 -0.197410 0.578729 -v 0.007464 -0.171016 0.601620 -v 0.007464 -0.185451 0.607599 -v 0.007464 -0.182975 0.572749 -v 0.007464 -0.197410 0.578728 -v -0.017536 -0.182975 0.572749 -v -0.017536 -0.197410 0.578728 -v -0.017536 -0.171016 0.601620 -v -0.017536 -0.185451 0.607599 -v 0.007464 -0.156580 0.619558 -v 0.007464 -0.185451 0.607599 -v 0.007464 -0.150601 0.605123 -v 0.007464 -0.179472 0.593164 -v -0.017536 -0.150601 0.605123 -v -0.017536 -0.179472 0.593164 -v -0.017536 -0.156580 0.619558 -v -0.017536 -0.185451 0.607599 -v 0.007464 -0.113273 0.601620 -v 0.007464 -0.156580 0.619558 -v 0.007464 -0.119253 0.587184 -v 0.007464 -0.162560 0.605123 -v -0.017536 -0.119253 0.587184 -v -0.017536 -0.162560 0.605123 -v -0.017536 -0.113273 0.601620 -v -0.017536 -0.156580 0.619558 -v 0.007464 -0.069079 0.557426 -v 0.007464 -0.113273 0.601620 -v 0.007464 -0.080128 0.546377 -v 0.007464 -0.124322 0.590572 -v -0.017536 -0.080128 0.546377 -v -0.017536 -0.124322 0.590572 -v -0.017536 -0.069079 0.557426 -v -0.017536 -0.113273 0.601620 -v 0.007464 -0.069079 0.557426 -v 0.007464 -0.083515 0.551446 -v 0.007464 -0.033203 0.470812 -v 0.007464 -0.047638 0.464833 -v -0.017536 -0.033203 0.470812 -v -0.017536 -0.047638 0.464833 -v -0.017536 -0.069079 0.557426 -v -0.017536 -0.083515 0.551446 -v 0.007464 -0.102132 0.480179 -v 0.007464 -0.116568 0.474199 -v 0.007464 -0.084194 0.436872 -v 0.007464 -0.098629 0.430892 -v -0.017536 -0.084194 0.436872 -v -0.017536 -0.098629 0.430892 -v -0.017536 -0.102132 0.480179 -v -0.017536 -0.116568 0.474199 -v 0.007464 -0.168423 0.546470 -v 0.007464 -0.179472 0.535422 -v 0.007464 -0.102132 0.480179 -v 0.007464 -0.113181 0.469131 -v -0.017536 -0.102132 0.480179 -v -0.017536 -0.113181 0.469131 -v -0.017536 -0.168423 0.546470 -v -0.017536 -0.179472 0.535422 -v 0.007464 -0.022177 0.481976 -v 0.007464 -0.065484 0.464038 -v 0.007464 -0.016197 0.467541 -v 0.007464 -0.059504 0.449602 -v -0.017536 -0.016197 0.467541 -v -0.017536 -0.059504 0.449602 -v -0.017536 -0.022177 0.481976 -v -0.017536 -0.065484 0.464038 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vn 1.0000 0.0000 0.0000 -vn -1.0000 0.0000 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.0000 -0.7071 -0.7071 -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.0000 0.3827 -0.9239 vn 0.0000 1.0000 0.0000 -vn 0.0000 -1.0000 -0.0000 +vn 0.0000 0.7071 -0.7071 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.9239 -0.3827 +vn 0.0000 0.9952 -0.0980 +vn 0.0000 0.0980 -0.9952 +vn 0.0000 0.3827 -0.9239 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.4719 -0.8817 +vn 0.0000 0.8321 -0.5547 +vn 0.0000 -0.3827 -0.9239 +vn 0.0000 -0.9239 -0.3827 +vn 0.0000 -0.9571 0.2898 +vn 0.0000 -0.4719 0.8817 +vn 0.0000 -0.9239 0.3827 +vn 0.0000 -0.3827 0.9239 +vn 0.0000 0.9571 0.2898 +vn 0.0000 0.0985 0.9951 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.9239 0.3827 +vn 0.0000 0.9571 -0.2898 +vn 0.0000 0.3827 0.9239 +s off +f 21/1/1 11/2/1 22/3/1 +f 4/4/2 5/5/2 3/6/2 +f 3/7/3 9/8/3 4/9/3 +f 9/8/4 24/10/4 23/11/4 +f 6/12/1 8/13/1 5/5/1 +f 7/14/2 12/15/2 8/16/2 +f 23/17/5 7/18/5 6/19/5 +f 24/20/6 10/21/6 3/6/6 +f 19/22/5 1/23/5 7/18/5 +f 8/16/6 12/15/6 15/24/6 +f 50/25/5 44/26/5 46/27/5 +f 47/28/6 45/29/6 43/30/6 +f 42/31/5 52/32/5 40/33/5 +f 51/34/6 41/35/6 39/36/6 +f 44/26/5 54/37/5 42/31/5 +f 53/38/6 43/30/6 41/35/6 +f 60/39/5 34/40/5 36/41/5 +f 57/42/6 35/43/6 33/44/6 +f 64/45/5 30/46/5 32/47/5 +f 61/48/6 31/49/6 29/50/6 +f 34/40/5 64/45/5 32/47/5 +f 63/51/6 33/44/6 31/49/6 +f 36/41/5 66/52/5 60/39/5 +f 38/53/5 68/54/5 66/52/5 +f 35/43/6 65/55/6 37/56/6 +f 37/56/6 67/57/6 39/58/6 +f 56/59/5 72/60/5 68/54/5 +f 39/58/6 71/61/6 55/62/6 +f 30/46/5 70/63/5 26/64/5 +f 29/50/6 69/65/6 61/48/6 +f 70/63/5 72/60/5 56/59/5 +f 55/62/6 71/61/6 69/65/6 +f 21/1/1 12/15/1 11/2/1 +f 4/4/2 6/12/2 5/5/2 +f 3/7/3 10/66/3 9/8/3 +f 9/8/4 10/66/4 24/10/4 +f 6/12/1 7/67/1 8/13/1 +f 7/14/2 11/68/2 12/15/2 +f 6/19/5 4/69/5 23/17/5 +f 4/69/5 9/70/5 23/17/5 +f 23/17/5 20/71/5 7/18/5 +f 3/6/6 5/5/6 24/20/6 +f 5/5/6 8/16/6 24/20/6 +f 8/16/6 18/72/6 24/20/6 +f 1/23/5 2/73/5 7/18/5 +f 2/73/5 13/74/5 11/75/5 +f 7/18/5 2/73/5 11/75/5 +f 13/74/5 22/76/5 11/75/5 +f 7/18/5 20/71/5 19/22/5 +f 12/15/6 21/1/6 14/77/6 +f 14/77/6 15/24/6 12/15/6 +f 15/24/6 16/78/6 8/16/6 +f 16/78/6 17/79/6 8/16/6 +f 17/79/6 18/72/6 8/16/6 +f 50/25/5 48/80/5 44/26/5 +f 47/28/6 49/81/6 45/29/6 +f 42/31/5 54/82/5 52/32/5 +f 51/34/6 53/83/6 41/35/6 +f 44/26/5 48/84/5 54/37/5 +f 53/38/6 47/85/6 43/30/6 +f 60/39/5 58/86/5 34/40/5 +f 57/42/6 59/87/6 35/43/6 +f 64/45/5 62/88/5 30/46/5 +f 61/48/6 63/51/6 31/49/6 +f 34/40/5 58/86/5 64/45/5 +f 63/51/6 57/42/6 33/44/6 +f 36/41/5 38/53/5 66/52/5 +f 38/53/5 40/89/5 68/54/5 +f 35/43/6 59/87/6 65/55/6 +f 37/56/6 65/55/6 67/57/6 +f 68/54/5 40/89/5 56/59/5 +f 40/89/5 52/90/5 56/59/5 +f 55/62/6 51/91/6 39/58/6 +f 39/58/6 67/57/6 71/61/6 +f 30/46/5 62/88/5 70/63/5 +f 29/50/6 25/92/6 69/65/6 +f 27/93/5 26/64/5 56/59/5 +f 26/64/5 70/63/5 56/59/5 +f 69/65/6 25/92/6 55/62/6 +f 25/92/6 28/94/6 55/62/6 +s 1 +f 19/95/7 18/96/8 17/97/7 +f 13/98/9 15/99/10 14/77/9 +f 14/77/9 22/100/11 13/98/9 +f 2/101/10 16/102/4 15/99/10 +f 20/103/8 24/10/3 18/96/8 +f 1/104/4 17/97/7 16/102/4 +f 29/105/12 26/106/13 25/107/13 +f 31/108/14 30/109/12 29/105/12 +f 33/110/15 32/111/14 31/108/14 +f 35/112/16 34/113/15 33/110/15 +f 37/114/17 36/115/16 35/112/16 +f 39/116/2 38/117/17 37/114/17 +f 41/35/18 40/33/1 39/36/1 +f 43/30/19 42/31/18 41/35/18 +f 45/29/2 44/26/19 43/30/19 +f 47/28/10 50/118/11 49/81/11 +f 48/119/10 53/38/7 54/120/7 +f 51/34/20 54/121/7 53/83/7 +f 55/122/21 52/123/20 51/34/20 +f 56/124/21 28/125/22 27/126/22 +f 57/127/23 60/128/24 59/129/24 +f 58/130/23 63/131/25 64/132/25 +f 61/133/17 64/132/25 63/131/25 +f 66/134/12 59/129/24 60/128/24 +f 68/135/14 65/136/12 66/137/12 +f 69/138/16 62/139/17 61/133/17 +f 71/140/15 70/141/16 69/138/16 +f 72/142/15 67/143/14 68/135/14 +f 19/95/7 20/103/8 18/96/8 +f 13/98/9 2/101/10 15/99/10 +f 14/77/9 21/1/11 22/100/11 +f 2/101/10 1/104/4 16/102/4 +f 20/103/8 23/11/3 24/10/3 +f 1/104/4 19/95/7 17/97/7 +f 29/105/12 30/109/12 26/106/13 +f 31/108/14 32/111/14 30/109/12 +f 33/110/15 34/113/15 32/111/14 +f 35/112/16 36/115/16 34/113/15 +f 37/114/17 38/117/17 36/115/16 +f 39/116/2 40/144/2 38/117/17 +f 41/35/18 42/31/18 40/33/1 +f 43/30/19 44/26/19 42/31/18 +f 45/29/2 46/27/2 44/26/19 +f 47/28/10 48/145/10 50/118/11 +f 48/119/10 47/85/10 53/38/7 +f 51/34/20 52/123/20 54/121/7 +f 55/122/21 56/124/21 52/123/20 +f 56/124/21 55/122/21 28/125/22 +f 57/127/23 58/130/23 60/128/24 +f 58/130/23 57/127/23 63/131/25 +f 61/133/17 62/139/17 64/132/25 +f 66/134/12 65/146/12 59/129/24 +f 68/135/14 67/143/14 65/136/12 +f 69/138/16 70/141/16 62/139/17 +f 71/140/15 72/142/15 70/141/16 +f 72/142/15 71/140/15 67/143/14 +o Stock +v -0.375000 -0.375000 -5.562500 +v -0.375000 -0.625000 -5.437500 +v -0.375000 -1.375000 -8.000000 +v -0.375000 0.000000 -5.562500 +v -0.375000 -0.125000 -8.000000 +v 0.375000 -0.375000 -5.562500 +v 0.375000 -0.625000 -5.437500 +v 0.375000 -1.375000 -8.000000 +v 0.375000 0.000000 -5.562500 +v 0.375000 -0.125000 -8.000000 +v 0.250000 0.000000 -8.000000 +v -0.250000 0.000000 -8.000000 +v -0.250000 -1.500000 -8.000000 +v 0.250000 -1.500000 -8.000000 +v 0.250000 -0.750000 -5.375000 +v -0.250000 -0.750000 -5.375000 +v 0.250000 0.125000 -5.562500 +v -0.250000 0.125000 -5.562500 +vt 0.803279 0.803738 +vt 0.721311 0.803738 +vt 0.803279 0.691589 +vt 0.520492 0.691589 +vt 0.520492 0.803738 +vt 0.495902 0.710280 +vt 0.545082 0.691589 +vt 0.553279 0.710280 +vt 0.713115 0.785047 +vt 0.713115 0.710280 +vt 0.721311 0.691589 +vt 0.811475 0.710280 +vt 0.811475 0.785047 +vt 0.504098 0.803738 +vt 0.495902 0.785047 +vt 0.504098 0.691589 +vt 0.553279 0.785047 +vt 0.545082 0.803738 +vt 0.553279 0.813084 +vt 0.536885 0.392523 +vt 0.713115 0.364486 +vt 0.713115 0.392523 +vt 0.553279 0.682243 +vt 0.713115 0.682243 +vt 0.536885 0.467290 +vt 0.713115 0.495327 +vt 0.536885 0.495327 +vt 0.713115 1.000000 +vt 0.553279 0.869159 +vt 0.713115 0.813084 +vt 0.553279 0.626168 +vt 0.545082 0.588785 +vt 0.536885 0.364486 +vt 0.713115 0.467290 +vt 0.545082 0.906542 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.4472 0.8944 +vn 0.0000 0.0000 1.0000 +vn -0.3867 0.9210 -0.0472 +vn -0.9193 0.3932 -0.0202 +vn -0.3779 0.9246 -0.0474 +vn -0.3846 -0.8870 0.2557 +vn -0.8923 -0.4340 0.1241 +vn -0.3487 -0.9012 0.2575 +vn 0.3867 0.9210 -0.0472 +vn 0.9193 0.3932 -0.0202 +vn 0.9281 0.3719 -0.0191 +vn 0.3846 -0.8870 0.2557 +vn 0.8923 -0.4340 0.1241 +vn 0.9180 -0.3806 0.1114 +vn 0.3779 0.9246 -0.0474 +vn -1.0000 0.0000 0.0000 +vn -0.9281 0.3719 -0.0191 +vn 1.0000 0.0000 0.0000 +vn -0.9180 -0.3806 0.1114 +vn 0.3487 -0.9012 0.2575 +s off +f 75/147/26 77/148/26 80/149/26 +f 78/150/27 73/151/27 87/152/27 +f 78/150/28 81/153/28 89/154/28 +f 77/148/26 84/155/26 83/156/26 +f 83/156/26 82/157/26 77/148/26 +f 82/157/26 80/149/26 77/148/26 +f 80/149/26 86/158/26 85/159/26 +f 85/159/26 75/147/26 80/149/26 +f 74/160/27 88/161/27 73/151/27 +f 88/161/27 87/152/27 73/151/27 +f 87/152/27 79/162/27 78/150/27 +f 89/154/28 90/163/28 73/151/28 +f 90/163/28 76/164/28 73/151/28 +f 73/151/28 78/150/28 89/154/28 +s 1 +f 84/155/29 76/165/30 90/163/31 +f 88/166/32 75/167/33 85/168/34 +f 83/156/35 81/169/36 82/170/37 +f 87/171/38 80/172/39 79/173/40 +f 89/154/41 84/155/29 90/163/31 +f 85/168/34 87/171/38 88/166/32 +f 75/174/33 73/175/42 77/176/43 +f 80/172/39 78/177/44 79/178/40 +f 78/177/44 82/170/37 81/169/36 +f 77/176/43 73/175/42 76/165/30 +f 84/155/29 77/176/43 76/165/30 +f 88/166/32 74/179/45 75/167/33 +f 83/156/35 89/154/41 81/169/36 +f 87/171/38 86/180/46 80/172/39 +f 89/154/41 83/156/35 84/155/29 +f 85/168/34 86/180/46 87/171/38 +f 75/174/33 74/181/45 73/175/42 +f 80/172/39 82/170/37 78/177/44 +o Shell +v 0.000000 1.625000 -2.375000 +v -0.062500 1.608253 -2.375000 +v -0.108253 1.562500 -2.375000 +v -0.125000 1.500000 -2.375000 +v -0.108253 1.437500 -2.375000 +v -0.062500 1.391747 -2.375000 +v 0.000000 1.375000 -2.375000 +v 0.062500 1.391747 -2.375000 +v 0.108253 1.437500 -2.375000 +v 0.125000 1.500000 -2.375000 +v 0.108253 1.562500 -2.375000 +v 0.062500 1.608253 -2.375000 +v 0.000000 1.625000 -1.625000 +v -0.062500 1.608253 -1.625000 +v -0.108253 1.562500 -1.625000 +v -0.125000 1.500000 -1.625000 +v -0.108253 1.437500 -1.625000 +v -0.062500 1.391747 -1.625000 +v 0.000000 1.375000 -1.625000 +v 0.062500 1.391747 -1.625000 +v 0.108253 1.437500 -1.625000 +v 0.125000 1.500000 -1.625000 +v 0.108253 1.562500 -1.625000 +v 0.062500 1.608253 -1.625000 +v 0.000000 1.640625 -2.375000 +v -0.070312 1.621785 -2.375000 +v -0.121785 1.570312 -2.375000 +v -0.140625 1.500000 -2.375000 +v -0.121785 1.429688 -2.375000 +v -0.070312 1.378215 -2.375000 +v 0.000000 1.359375 -2.375000 +v 0.070312 1.378215 -2.375000 +v 0.121785 1.429688 -2.375000 +v 0.140625 1.500000 -2.375000 +v 0.121785 1.570312 -2.375000 +v 0.070312 1.621785 -2.375000 +v 0.000000 1.640625 -2.437500 +v -0.070312 1.621785 -2.437500 +v -0.121785 1.570312 -2.437500 +v -0.140625 1.500000 -2.437500 +v -0.121785 1.429688 -2.437500 +v -0.070312 1.378215 -2.437500 +v 0.000000 1.359375 -2.437500 +v 0.070312 1.378215 -2.437500 +v 0.121785 1.429688 -2.437500 +v 0.140625 1.500000 -2.437500 +v 0.121785 1.570312 -2.437500 +v 0.070312 1.621785 -2.437500 +vt 0.778689 0.803764 +vt 0.785777 0.813097 +vt 0.778689 0.841096 +vt 0.762295 0.878505 +vt 0.766393 0.869159 +vt 0.766393 0.878505 +vt 0.762295 0.822430 +vt 0.766393 0.831776 +vt 0.762295 0.831776 +vt 0.762295 0.906542 +vt 0.766393 0.915888 +vt 0.762295 0.915888 +vt 0.766393 0.887850 +vt 0.762295 0.887850 +vt 0.762295 0.841121 +vt 0.766393 0.841121 +vt 0.762295 0.813084 +vt 0.766393 0.803738 +vt 0.766393 0.813084 +vt 0.762295 0.897196 +vt 0.766393 0.897196 +vt 0.766393 0.850467 +vt 0.762295 0.850467 +vt 0.762295 0.859813 +vt 0.762295 0.869159 +vt 0.766393 0.822430 +vt 0.766393 0.906542 +vt 0.766393 0.859813 +vt 0.787992 0.831765 +vt 0.795082 0.803760 +vt 0.802173 0.831765 +vt 0.774596 0.838595 +vt 0.771600 0.813097 +vt 0.771600 0.831763 +vt 0.770503 0.822430 +vt 0.774596 0.806265 +vt 0.782781 0.806265 +vt 0.786874 0.822430 +vt 0.785777 0.831763 +vt 0.782781 0.838595 +vt 0.762295 0.803738 +vt 0.799176 0.838599 +vt 0.795082 0.841100 +vt 0.790989 0.838599 +vt 0.786895 0.822430 +vt 0.787992 0.813095 +vt 0.790989 0.806261 +vt 0.799176 0.806261 +vt 0.802173 0.813095 +vt 0.803269 0.822430 +vt 0.713115 0.850467 +vt 0.713115 0.897196 +vt 0.713115 0.906542 +vt 0.713115 0.803738 +vt 0.713115 0.813084 +vt 0.713115 0.859813 +vt 0.713115 0.822430 +vt 0.713115 0.869159 +vt 0.713115 0.831776 +vt 0.713115 0.878505 +vt 0.713115 0.841121 +vt 0.713115 0.887850 +vt 0.770492 0.813084 +vt 0.770492 0.897196 +vt 0.770492 0.850467 +vt 0.770492 0.869159 +vt 0.770492 0.822430 +vt 0.770492 0.906542 +vt 0.770492 0.859813 +vt 0.770492 0.878505 +vt 0.770492 0.831776 +vt 0.770492 0.915888 +vt 0.770492 0.887850 +vt 0.770492 0.841121 +vt 0.713115 0.915888 +vt 0.770492 0.803738 vn 0.0000 0.0000 1.0000 vn 0.0000 0.0000 -1.0000 +vn -0.0000 1.0000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.5000 0.8660 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.8660 0.5000 0.0000 +vn -1.0000 -0.0000 0.0000 s off -f 153/399/27 154/400/27 155/401/27 -f 154/400/27 156/402/27 155/401/27 -f 157/403/28 158/404/28 159/405/28 -f 158/404/28 160/406/28 159/405/28 -f 157/403/29 159/407/29 155/401/29 -f 159/407/29 153/408/29 155/401/29 -f 160/409/30 158/404/30 154/410/30 -f 158/404/30 156/402/30 154/410/30 -f 159/411/31 160/412/31 153/413/31 -f 160/412/31 154/414/31 153/413/31 -f 155/415/32 156/416/32 157/417/32 -f 156/416/32 158/418/32 157/417/32 -f 161/419/27 162/420/27 163/421/27 -f 162/420/27 164/422/27 163/421/27 -f 165/423/28 166/424/28 167/425/28 -f 166/424/28 168/426/28 167/425/28 -f 165/423/33 167/427/33 163/421/33 -f 167/427/33 161/428/33 163/421/33 -f 168/429/34 166/424/34 162/430/34 -f 166/424/34 164/422/34 162/430/34 -f 167/431/35 168/432/35 161/433/35 -f 168/432/35 162/434/35 161/433/35 -f 163/435/36 164/436/36 165/437/36 -f 164/436/36 166/438/36 165/437/36 -f 169/439/27 170/440/27 171/441/27 -f 170/440/27 172/442/27 171/441/27 -f 173/443/28 174/444/28 175/445/28 -f 174/444/28 176/446/28 175/445/28 -f 173/443/29 175/447/29 171/441/29 -f 175/447/29 169/448/29 171/441/29 -f 176/449/30 174/444/30 170/450/30 -f 174/444/30 172/442/30 170/450/30 -f 175/451/31 176/452/31 169/453/31 -f 176/452/31 170/454/31 169/453/31 -f 171/455/32 172/456/32 173/457/32 -f 172/456/32 174/458/32 173/457/32 -f 177/459/27 178/460/27 179/461/27 -f 178/460/27 180/462/27 179/461/27 -f 181/463/28 182/464/28 183/465/28 -f 182/464/28 184/466/28 183/465/28 -f 181/463/37 183/467/37 179/461/37 -f 183/467/37 177/468/37 179/461/37 -f 184/469/38 182/464/38 178/470/38 -f 182/464/38 180/462/38 178/470/38 -f 183/471/39 184/472/39 177/473/39 -f 184/472/39 178/474/39 177/473/39 -f 179/475/40 180/476/40 181/477/40 -f 180/476/40 182/478/40 181/477/40 -f 185/479/27 186/480/27 187/481/27 -f 186/480/27 188/482/27 187/481/27 -f 189/483/28 190/484/28 191/485/28 -f 190/484/28 192/486/28 191/485/28 -f 189/483/31 191/487/31 187/481/31 -f 191/487/31 185/488/31 187/481/31 -f 192/489/32 190/484/32 186/490/32 -f 190/484/32 188/482/32 186/490/32 -f 191/491/30 192/492/30 185/493/30 -f 192/492/30 186/494/30 185/493/30 -f 187/495/29 188/496/29 189/497/29 -f 188/496/29 190/498/29 189/497/29 -f 193/499/27 194/500/27 195/501/27 -f 194/500/27 196/502/27 195/501/27 -f 197/503/28 198/504/28 199/505/28 -f 198/504/28 200/506/28 199/505/28 -f 197/503/41 199/507/41 195/501/41 -f 199/507/41 193/508/41 195/501/41 -f 200/509/42 198/504/42 194/510/42 -f 198/504/42 196/502/42 194/510/42 -f 199/511/43 200/512/43 193/513/43 -f 200/512/43 194/514/43 193/513/43 -f 195/515/44 196/516/44 197/517/44 -f 196/516/44 198/518/44 197/517/44 -f 201/519/27 202/520/27 203/521/27 -f 202/520/27 204/522/27 203/521/27 -f 205/523/28 206/524/28 207/525/28 -f 206/524/28 208/526/28 207/525/28 -f 205/523/37 207/527/37 203/521/37 -f 207/527/37 201/528/37 203/521/37 -f 208/529/38 206/524/38 202/530/38 -f 206/524/38 204/522/38 202/530/38 -f 207/531/39 208/532/39 201/533/39 -f 208/532/39 202/534/39 201/533/39 -f 203/535/40 204/536/40 205/537/40 -f 204/536/40 206/538/40 205/537/40 -f 209/539/27 210/540/27 211/541/27 -f 210/540/27 212/542/27 211/541/27 -f 213/543/28 214/544/28 215/545/28 -f 214/544/28 216/546/28 215/545/28 -f 213/543/33 215/547/33 211/541/33 -f 215/547/33 209/548/33 211/541/33 -f 216/549/34 214/544/34 210/550/34 -f 214/544/34 212/542/34 210/550/34 -f 215/551/35 216/552/35 209/553/35 -f 216/552/35 210/554/35 209/553/35 -f 211/555/36 212/556/36 213/557/36 -f 212/556/36 214/558/36 213/557/36 -f 217/559/27 218/560/27 219/561/27 -f 218/560/27 220/562/27 219/561/27 -f 221/563/28 222/564/28 223/565/28 -f 222/564/28 224/566/28 223/565/28 -f 221/563/37 223/567/37 219/561/37 -f 223/567/37 217/568/37 219/561/37 -f 224/569/38 222/564/38 218/570/38 -f 222/564/38 220/562/38 218/570/38 -f 223/571/39 224/572/39 217/573/39 -f 224/572/39 218/574/39 217/573/39 -f 219/575/40 220/576/40 221/577/40 -f 220/576/40 222/578/40 221/577/40 -f 225/579/27 226/580/27 227/581/27 -f 226/580/27 228/582/27 227/581/27 -f 229/583/28 230/584/28 231/585/28 -f 230/584/28 232/586/28 231/585/28 -f 229/583/41 231/587/41 227/581/41 -f 231/587/41 225/588/41 227/581/41 -f 232/589/42 230/584/42 226/590/42 -f 230/584/42 228/582/42 226/590/42 -f 231/591/43 232/592/43 225/593/43 -f 232/592/43 226/594/43 225/593/43 -f 227/595/44 228/596/44 229/597/44 -f 228/596/44 230/598/44 229/597/44 -f 233/599/27 234/600/27 235/601/27 -f 234/600/27 236/602/27 235/601/27 -f 237/603/28 238/604/28 239/605/28 -f 238/604/28 240/606/28 239/605/28 -f 237/603/29 239/607/29 235/601/29 -f 239/607/29 233/608/29 235/601/29 -f 240/609/30 238/604/30 234/610/30 -f 238/604/30 236/602/30 234/610/30 -f 239/611/31 240/612/31 233/613/31 -f 240/612/31 234/614/31 233/613/31 -f 235/615/32 236/616/32 237/617/32 -f 236/616/32 238/618/32 237/617/32 -f 241/619/27 242/620/27 243/621/27 -f 242/620/27 244/622/27 243/621/27 -f 245/623/28 246/624/28 247/625/28 -f 246/624/28 248/626/28 247/625/28 -f 245/623/37 247/627/37 243/621/37 -f 247/627/37 241/628/37 243/621/37 -f 248/629/38 246/624/38 242/630/38 -f 246/624/38 244/622/38 242/630/38 -f 247/631/39 248/632/39 241/633/39 -f 248/632/39 242/634/39 241/633/39 -f 243/635/40 244/636/40 245/637/40 -f 244/636/40 246/638/40 245/637/40 -f 249/639/27 250/640/27 251/641/27 -f 250/640/27 252/642/27 251/641/27 -f 253/643/28 254/644/28 255/645/28 -f 254/644/28 256/646/28 255/645/28 -f 253/643/33 255/647/33 251/641/33 -f 255/647/33 249/648/33 251/641/33 -f 256/649/34 254/644/34 250/650/34 -f 254/644/34 252/642/34 250/650/34 -f 255/651/35 256/652/35 249/653/35 -f 256/652/35 250/654/35 249/653/35 -f 251/655/36 252/656/36 253/657/36 -f 252/656/36 254/658/36 253/657/36 -f 257/659/27 258/660/27 259/661/27 -f 258/660/27 260/662/27 259/661/27 -f 261/663/28 262/664/28 263/665/28 -f 262/664/28 264/666/28 263/665/28 -f 261/663/37 263/667/37 259/661/37 -f 263/667/37 257/668/37 259/661/37 -f 264/669/38 262/664/38 258/670/38 -f 262/664/38 260/662/38 258/670/38 -f 263/671/39 264/672/39 257/673/39 -f 264/672/39 258/674/39 257/673/39 -f 259/675/40 260/676/40 261/677/40 -f 260/676/40 262/678/40 261/677/40 -f 265/679/27 266/680/27 267/681/27 -f 266/680/27 268/682/27 267/681/27 -f 269/683/28 270/684/28 271/685/28 -f 270/684/28 272/686/28 271/685/28 -f 269/683/33 271/687/33 267/681/33 -f 271/687/33 265/688/33 267/681/33 -f 272/689/34 270/684/34 266/690/34 -f 270/684/34 268/682/34 266/690/34 -f 271/691/35 272/692/35 265/693/35 -f 272/692/35 266/694/35 265/693/35 -f 267/695/36 268/696/36 269/697/36 -f 268/696/36 270/698/36 269/697/36 -f 273/699/27 274/700/27 275/701/27 -f 274/700/27 276/702/27 275/701/27 -f 277/703/28 278/704/28 279/705/28 -f 278/704/28 280/706/28 279/705/28 -f 277/703/29 279/707/29 275/701/29 -f 279/707/29 273/708/29 275/701/29 -f 280/709/30 278/704/30 274/710/30 -f 278/704/30 276/702/30 274/710/30 -f 279/711/31 280/712/31 273/713/31 -f 280/712/31 274/714/31 273/713/31 -f 275/715/32 276/716/32 277/717/32 -f 276/716/32 278/718/32 277/717/32 -f 281/719/27 282/720/27 283/721/27 -f 282/720/27 284/722/27 283/721/27 -f 285/723/28 286/724/28 287/725/28 -f 286/724/28 288/726/28 287/725/28 -f 285/723/37 287/727/37 283/721/37 -f 287/727/37 281/728/37 283/721/37 -f 288/729/38 286/724/38 282/730/38 -f 286/724/38 284/722/38 282/730/38 -f 287/731/39 288/732/39 281/733/39 -f 288/732/39 282/734/39 281/733/39 -f 283/735/40 284/736/40 285/737/40 -f 284/736/40 286/738/40 285/737/40 -f 289/739/27 290/740/27 291/741/27 -f 290/740/27 292/742/27 291/741/27 -f 293/743/28 294/744/28 295/745/28 -f 294/744/28 296/746/28 295/745/28 -f 293/743/37 295/747/37 291/741/37 -f 295/747/37 289/748/37 291/741/37 -f 296/749/38 294/744/38 290/750/38 -f 294/744/38 292/742/38 290/750/38 -f 295/751/39 296/752/39 289/753/39 -f 296/752/39 290/754/39 289/753/39 -f 291/755/40 292/756/40 293/757/40 -f 292/756/40 294/758/40 293/757/40 -f 297/759/27 298/760/27 299/761/27 -f 298/760/27 300/762/27 299/761/27 -f 301/763/28 302/764/28 303/765/28 -f 302/764/28 304/766/28 303/765/28 -f 301/763/31 303/767/31 299/761/31 -f 303/767/31 297/768/31 299/761/31 -f 304/769/32 302/764/32 298/770/32 -f 302/764/32 300/762/32 298/770/32 -f 303/771/30 304/772/30 297/773/30 -f 304/772/30 298/774/30 297/773/30 -f 299/775/29 300/776/29 301/777/29 -f 300/776/29 302/778/29 301/777/29 -f 305/779/27 306/780/27 307/781/27 -f 306/780/27 308/782/27 307/781/27 -f 309/783/28 310/784/28 311/785/28 -f 310/784/28 312/786/28 311/785/28 -f 309/783/37 311/787/37 307/781/37 -f 311/787/37 305/788/37 307/781/37 -f 312/789/38 310/784/38 306/790/38 -f 310/784/38 308/782/38 306/790/38 -f 311/791/39 312/792/39 305/793/39 -f 312/792/39 306/794/39 305/793/39 -f 307/795/40 308/796/40 309/797/40 -f 308/796/40 310/798/40 309/797/40 +f 109/182/47 111/183/47 103/184/47 +f 93/185/47 116/186/47 117/187/47 +f 99/188/47 124/189/47 100/190/47 +f 96/191/47 121/192/47 97/193/47 +f 93/185/47 118/194/47 94/195/47 +f 101/196/47 124/189/47 125/197/47 +f 98/198/47 121/199/47 122/200/47 +f 95/201/47 118/194/47 119/202/47 +f 101/196/47 126/203/47 102/204/47 +f 91/205/47 116/186/47 92/206/47 +f 98/198/47 123/207/47 99/188/47 +f 96/191/47 119/202/47 120/208/47 +f 91/205/47 126/203/47 115/209/47 +f 137/210/48 133/211/48 129/212/48 +f 103/184/47 104/213/47 107/214/47 +f 104/213/47 105/215/47 107/214/47 +f 105/215/47 106/216/47 107/214/47 +f 107/214/47 108/217/47 109/182/47 +f 109/182/47 110/218/47 111/183/47 +f 111/183/47 112/219/47 113/220/47 +f 113/220/47 114/221/47 111/183/47 +f 114/221/47 103/184/47 111/183/47 +f 107/214/47 109/182/47 103/184/47 +f 93/185/47 92/206/47 116/186/47 +f 99/188/47 123/207/47 124/189/47 +f 96/191/47 120/208/47 121/192/47 +f 93/185/47 117/187/47 118/194/47 +f 101/196/47 100/190/47 124/189/47 +f 98/198/47 97/222/47 121/199/47 +f 95/201/47 94/195/47 118/194/47 +f 101/196/47 125/197/47 126/203/47 +f 91/205/47 115/209/47 116/186/47 +f 98/198/47 122/200/47 123/207/47 +f 96/191/47 95/201/47 119/202/47 +f 91/205/47 102/204/47 126/203/47 +f 129/212/48 128/223/48 127/224/48 +f 127/224/48 138/225/48 129/212/48 +f 138/225/48 137/210/48 129/212/48 +f 137/210/48 136/226/48 133/211/48 +f 136/226/48 135/227/48 133/211/48 +f 135/227/48 134/228/48 133/211/48 +f 133/211/48 132/229/48 131/230/48 +f 131/230/48 130/231/48 133/211/48 +f 130/231/48 129/212/48 133/211/48 +s 1 +f 91/205/49 114/232/50 102/204/50 +f 96/191/51 107/233/52 95/201/52 +f 97/193/53 108/234/51 96/191/51 +f 98/198/54 109/235/53 97/222/53 +f 99/188/55 110/236/54 98/198/54 +f 92/206/56 103/237/49 91/205/49 +f 100/190/57 111/238/55 99/188/55 +f 93/185/58 104/239/56 92/206/56 +f 101/196/59 112/240/57 100/190/57 +f 94/195/60 105/241/58 93/185/58 +f 102/204/50 113/242/59 101/196/59 +f 95/201/52 106/243/60 94/195/60 +f 121/199/53 134/244/54 122/200/54 +f 118/194/60 131/245/52 119/202/52 +f 125/197/59 138/246/50 126/203/50 +f 115/209/49 128/247/56 116/186/56 +f 122/200/54 135/248/55 123/207/55 +f 119/202/52 132/249/51 120/208/51 +f 126/203/50 127/250/49 115/209/49 +f 116/186/56 129/251/58 117/187/58 +f 123/207/55 136/252/57 124/189/57 +f 120/208/51 133/253/53 121/192/53 +f 117/187/58 130/254/60 118/194/60 +f 124/189/57 137/255/59 125/197/59 +f 91/205/49 103/237/49 114/232/50 +f 96/191/51 108/234/51 107/233/52 +f 97/193/53 109/256/53 108/234/51 +f 98/198/54 110/236/54 109/235/53 +f 99/188/55 111/238/55 110/236/54 +f 92/206/56 104/239/56 103/237/49 +f 100/190/57 112/240/57 111/238/55 +f 93/185/58 105/241/58 104/239/56 +f 101/196/59 113/242/59 112/240/57 +f 94/195/60 106/243/60 105/241/58 +f 102/204/50 114/232/50 113/242/59 +f 95/201/52 107/233/52 106/243/60 +f 121/199/53 133/257/53 134/244/54 +f 118/194/60 130/254/60 131/245/52 +f 125/197/59 137/255/59 138/246/50 +f 115/209/49 127/250/49 128/247/56 +f 122/200/54 134/244/54 135/248/55 +f 119/202/52 131/245/52 132/249/51 +f 126/203/50 138/246/50 127/250/49 +f 116/186/56 128/247/56 129/251/58 +f 123/207/55 135/248/55 136/252/57 +f 120/208/51 132/249/51 133/253/53 +f 117/187/58 129/251/58 130/254/60 +f 124/189/57 136/252/57 137/255/59 +o Barrel +v 0.000000 1.187500 8.000000 +v -0.093750 1.162380 8.000000 +v -0.162380 1.093750 8.000000 +v -0.187500 1.000000 8.000000 +v -0.162380 0.906250 8.000000 +v -0.093750 0.837620 8.000000 +v 0.000000 0.812500 8.000000 +v 0.093750 0.837620 8.000000 +v 0.162380 0.906250 8.000000 +v 0.187500 1.000000 8.000000 +v 0.162380 1.093750 8.000000 +v 0.093750 1.162380 8.000000 +v 0.000000 1.187500 3.750000 +v -0.093750 1.162380 3.750000 +v -0.162380 1.093750 3.750000 +v -0.187500 1.000000 3.750000 +v -0.162380 0.906250 3.750000 +v -0.093750 0.837620 3.750000 +v 0.000000 0.812500 3.750000 +v 0.093750 0.837620 3.750000 +v 0.162380 0.906250 3.750000 +v 0.187500 1.000000 3.750000 +v 0.162380 1.093750 3.750000 +v 0.093750 1.162380 3.750000 +v 0.000000 1.125000 8.000000 +v -0.062500 1.108253 8.000000 +v -0.108253 1.062500 8.000000 +v -0.125000 1.000000 8.000000 +v -0.108253 0.937500 8.000000 +v -0.062500 0.891747 8.000000 +v 0.000000 0.875000 8.000000 +v 0.062500 0.891747 8.000000 +v 0.108253 0.937500 8.000000 +v 0.125000 1.000000 8.000000 +v 0.108253 1.062500 8.000000 +v 0.062500 1.108253 8.000000 +v 0.000000 1.125000 7.000000 +v -0.062500 1.108253 7.000000 +v -0.108253 1.062500 7.000000 +v -0.125000 1.000000 7.000000 +v -0.108253 0.937500 7.000000 +v -0.062500 0.891747 7.000000 +v 0.000000 0.875000 7.000000 +v 0.062500 0.891747 7.000000 +v 0.108253 0.937500 7.000000 +v 0.125000 1.000000 7.000000 +v 0.108253 1.062500 7.000000 +v 0.062500 1.108253 7.000000 +vt 0.004098 0.224299 +vt 0.000000 0.205607 +vt 0.004098 0.205607 +vt 0.004098 -0.000000 +vt 0.000000 0.009346 +vt 0.000000 -0.000000 +vt 0.004098 0.037383 +vt 0.000000 0.018692 +vt 0.004098 0.018692 +vt 0.004098 0.056075 +vt 0.000000 0.037383 +vt 0.000000 0.065421 +vt 0.000000 0.056075 +vt 0.004098 0.093458 +vt 0.000000 0.074766 +vt 0.004098 0.074766 +vt 0.000000 0.102804 +vt 0.000000 0.093458 +vt 0.004098 0.130841 +vt 0.000000 0.112150 +vt 0.004098 0.112150 +vt 0.000000 0.140187 +vt 0.000000 0.130841 +vt 0.004098 0.168224 +vt 0.000000 0.149533 +vt 0.004098 0.149533 +vt 0.000000 0.177570 +vt 0.000000 0.168224 +vt 0.004098 0.186916 +vt 0.000000 0.196262 +vt 0.000000 0.186916 +vt 0.073770 0.224346 +vt 0.080851 0.233668 +vt 0.073770 0.261635 +vt 0.000000 0.214953 +vt 0.000000 0.028037 +vt 0.000000 0.046729 +vt 0.000000 0.084112 +vt 0.000000 0.121495 +vt 0.000000 0.158879 +vt 0.069682 0.259137 +vt 0.066690 0.233668 +vt 0.066690 0.252313 +vt 0.065594 0.242991 +vt 0.069682 0.226844 +vt 0.077859 0.226844 +vt 0.081947 0.242991 +vt 0.080851 0.252313 +vt 0.077858 0.259137 +vt 0.282787 0.149533 +vt 0.282787 0.130841 +vt 0.282787 0.018692 +vt 0.282787 0.074766 +vt 0.282787 0.205607 +vt 0.282787 0.093458 +vt 0.282787 0.112150 +vt 0.282787 0.168224 +vt 0.282787 -0.000000 +vt 0.282787 0.056075 +vt 0.282787 0.037383 +vt 0.282787 0.186916 +vt -0.000000 0.252336 +vt 0.065574 0.261682 +vt -0.000000 0.261682 +vt -0.000000 0.299065 +vt 0.065574 0.308411 +vt -0.000000 0.308411 +vt -0.000000 0.327103 +vt 0.065574 0.336449 +vt -0.000000 0.336449 +vt -0.000000 0.242991 +vt 0.065574 0.252336 +vt -0.000000 0.289720 +vt 0.065574 0.299065 +vt -0.000000 0.271028 +vt 0.065574 0.280374 +vt -0.000000 0.280374 +vt -0.000000 0.317757 +vt 0.065574 0.327103 +vt -0.000000 0.233645 +vt 0.065574 0.242991 +vt 0.065574 0.289720 +vt 0.065574 0.271028 +vt 0.065574 0.317757 +vt -0.000000 0.224299 +vt 0.065574 0.233645 +vt 0.282787 0.224299 +vt 0.065574 0.224299 +vn 0.0000 0.0000 1.0000 +vn -0.8660 0.5000 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.8660 -0.5000 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.0000 1.0000 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 1.0000 -0.0000 0.0000 +s off +f 145/258/61 168/259/61 144/260/61 +f 145/261/61 170/262/61 169/263/61 +f 147/264/61 170/265/61 146/266/61 +f 148/267/61 171/268/61 147/264/61 +f 148/267/61 173/269/61 172/270/61 +f 150/271/61 173/272/61 149/273/61 +f 150/271/61 163/274/61 174/275/61 +f 140/276/61 163/277/61 139/278/61 +f 140/276/61 165/279/61 164/280/61 +f 142/281/61 165/282/61 141/283/61 +f 142/281/61 167/284/61 166/285/61 +f 143/286/61 168/287/61 167/288/61 +f 181/289/61 183/290/61 175/291/61 +f 145/258/61 169/292/61 168/259/61 +f 145/261/61 146/266/61 170/262/61 +f 147/264/61 171/293/61 170/265/61 +f 148/267/61 172/294/61 171/268/61 +f 148/267/61 149/273/61 173/269/61 +f 150/271/61 174/295/61 173/272/61 +f 150/271/61 139/278/61 163/274/61 +f 140/276/61 164/296/61 163/277/61 +f 140/276/61 141/283/61 165/279/61 +f 142/281/61 166/297/61 165/282/61 +f 142/281/61 143/286/61 167/284/61 +f 143/286/61 144/260/61 168/287/61 +f 175/291/61 176/298/61 179/299/61 +f 176/298/61 177/300/61 179/299/61 +f 177/300/61 178/301/61 179/299/61 +f 179/299/61 180/302/61 181/289/61 +f 181/289/61 182/303/61 183/290/61 +f 183/290/61 184/304/61 185/305/61 +f 185/305/61 186/306/61 183/290/61 +f 186/306/61 175/291/61 183/290/61 +f 179/299/61 181/289/61 175/291/61 +s 1 +f 153/307/62 142/281/63 141/283/62 +f 152/308/64 141/283/62 140/276/64 +f 158/309/65 147/264/66 146/266/65 +f 161/310/67 150/271/68 149/273/67 +f 156/311/69 145/258/70 144/260/69 +f 162/312/68 139/278/71 150/271/68 +f 151/313/71 140/276/64 139/278/71 +f 154/314/63 143/286/72 142/281/63 +f 157/315/70 146/266/65 145/261/70 +f 160/316/73 149/273/67 148/267/73 +f 159/317/66 148/267/73 147/264/66 +f 155/318/72 144/260/69 143/286/72 +f 166/319/73 177/320/66 165/321/66 +f 173/322/72 184/323/63 172/324/63 +f 170/325/64 181/326/71 169/327/71 +f 167/328/67 178/329/73 166/319/73 +f 174/330/69 185/331/72 173/322/72 +f 164/332/65 175/333/70 163/334/70 +f 171/335/62 182/336/64 170/325/64 +f 168/337/68 179/338/67 167/328/67 +f 163/334/70 186/339/69 174/330/69 +f 165/321/66 176/340/65 164/332/65 +f 172/324/63 183/341/62 171/335/62 +f 169/342/71 180/343/68 168/337/68 +f 153/307/62 154/314/63 142/281/63 +f 152/308/64 153/307/62 141/283/62 +f 158/309/65 159/317/66 147/264/66 +f 161/310/67 162/312/68 150/271/68 +f 156/311/69 157/344/70 145/258/70 +f 162/312/68 151/313/71 139/278/71 +f 151/313/71 152/308/64 140/276/64 +f 154/314/63 155/318/72 143/286/72 +f 157/315/70 158/309/65 146/266/65 +f 160/316/73 161/310/67 149/273/67 +f 159/317/66 160/316/73 148/267/73 +f 155/318/72 156/311/69 144/260/69 +f 166/319/73 178/329/73 177/320/66 +f 173/322/72 185/331/72 184/323/63 +f 170/325/64 182/336/64 181/326/71 +f 167/328/67 179/338/67 178/329/73 +f 174/330/69 186/339/69 185/331/72 +f 164/332/65 176/340/65 175/333/70 +f 171/335/62 183/341/62 182/336/64 +f 168/337/68 180/343/68 179/338/67 +f 163/334/70 175/333/70 186/339/69 +f 165/321/66 177/320/66 176/340/65 +f 172/324/63 184/323/63 183/341/62 +f 169/342/71 181/345/71 180/343/68 o Gun -v 0.032464 0.062345 0.555958 -v 0.032464 -0.000155 0.555958 -v 0.032464 0.062345 0.446583 -v 0.032464 -0.000155 0.446583 -v -0.042536 0.062345 0.446583 -v -0.042536 -0.000155 0.446583 -v -0.042536 0.062345 0.555958 -v -0.042536 -0.000155 0.555958 -v 0.032464 0.060031 0.568015 -v 0.032464 0.016725 0.550077 -v 0.032464 0.101887 0.466966 -v 0.032464 0.058581 0.449028 -v -0.042536 0.101887 0.466966 -v -0.042536 0.058581 0.449028 -v -0.042536 0.060031 0.568015 -v -0.042536 0.016725 0.550077 -v 0.032464 0.153125 0.468417 -v 0.032464 0.080947 0.498314 -v 0.032464 0.117248 0.381803 -v 0.032464 0.045070 0.411700 -v -0.042536 0.117248 0.381803 -v -0.042536 0.045070 0.411700 -v -0.042536 0.153125 0.468417 -v -0.042536 0.080947 0.498314 -v 0.032464 0.153125 0.468416 -v 0.032464 0.121875 0.468416 -v 0.032464 0.153125 0.359041 -v 0.032464 0.121875 0.359041 -v -0.042536 0.153125 0.359041 -v -0.042536 0.121875 0.359041 -v -0.042536 0.153125 0.468416 -v -0.042536 0.121875 0.468416 -v 0.032464 0.153125 0.171541 -v 0.032464 0.121875 0.171541 -v 0.032464 0.153125 0.124666 -v 0.032464 0.121875 0.124666 -v -0.042536 0.153125 0.124666 -v -0.042536 0.121875 0.124666 -v -0.042536 0.153125 0.171541 -v -0.042536 0.121875 0.171541 -v -0.015852 0.152219 0.468416 -v -0.019440 0.143558 0.468416 -v -0.015852 0.152219 0.124666 -v -0.019440 0.143558 0.124666 -v -0.038949 0.161786 0.124666 -v -0.042537 0.153125 0.124666 -v -0.038949 0.161786 0.468416 -v -0.042537 0.153125 0.468416 -v -0.014642 0.150738 0.468416 -v -0.021271 0.144109 0.468416 -v -0.014642 0.150738 0.124666 -v -0.021271 0.144109 0.124666 -v -0.032320 0.168416 0.124666 -v -0.038949 0.161786 0.124666 -v -0.032320 0.168416 0.468416 -v -0.038949 0.161786 0.468416 -v -0.023658 0.172003 0.468416 -v -0.014091 0.148906 0.468416 -v -0.023658 0.172003 0.124666 -v -0.014091 0.148906 0.124666 -v -0.032320 0.168415 0.124666 -v -0.022753 0.145318 0.124666 -v -0.032320 0.168415 0.468416 -v -0.022753 0.145318 0.468416 -v 0.001342 0.172003 0.468416 -v 0.001342 0.147003 0.468416 -v 0.001342 0.172003 0.124666 -v 0.001342 0.147003 0.124666 -v -0.023658 0.172003 0.124666 -v -0.023658 0.147003 0.124666 -v -0.023658 0.172003 0.468416 -v -0.023658 0.147003 0.468416 -v 0.013586 0.172003 0.468416 -v 0.013586 0.147003 0.468416 -v 0.013586 0.172003 0.124666 -v 0.013586 0.147003 0.124666 -v -0.011414 0.172003 0.124666 -v -0.011414 0.147003 0.124666 -v -0.011414 0.172003 0.468416 -v -0.011414 0.147003 0.468416 -v 0.028876 0.161786 0.468416 -v 0.032463 0.153125 0.468416 -v 0.028876 0.161786 0.124666 -v 0.032463 0.153125 0.124666 -v 0.005779 0.152219 0.124666 -v 0.009366 0.143558 0.124666 -v 0.005779 0.152219 0.468416 -v 0.009366 0.143558 0.468416 -v 0.022247 0.168416 0.468416 -v 0.028876 0.161786 0.468416 -v 0.022247 0.168416 0.124666 -v 0.028876 0.161786 0.124666 -v 0.004569 0.150738 0.124666 -v 0.011198 0.144109 0.124666 -v 0.004569 0.150738 0.468416 -v 0.011198 0.144109 0.468416 -v 0.022247 0.168415 0.468416 -v 0.012680 0.145318 0.468416 -v 0.022247 0.168415 0.124666 -v 0.012680 0.145318 0.124666 -v 0.013585 0.172003 0.124666 -v 0.004018 0.148906 0.124666 -v 0.013585 0.172003 0.468416 -v 0.004018 0.148906 0.468416 -v 0.032464 0.121211 0.171541 -v 0.032464 0.011836 0.171541 -v 0.032464 0.121211 0.124666 -v 0.032464 0.011836 0.124666 -v -0.042536 0.121211 0.124666 -v -0.042536 0.011836 0.124666 -v -0.042536 0.121211 0.171541 -v -0.042536 0.011836 0.171541 -v 0.001214 0.136836 0.359041 -v 0.001214 0.105586 0.359041 -v 0.001214 0.136836 0.171541 -v 0.001214 0.105586 0.171541 -v -0.042536 0.136836 0.171541 -v -0.042536 0.105586 0.171541 -v -0.042536 0.136836 0.359041 -v -0.042536 0.105586 0.359041 -v 0.032464 0.136836 0.437166 -v 0.032464 0.089961 0.437166 -v 0.032464 0.136836 0.359041 -v 0.032464 0.089961 0.359041 -v -0.042536 0.136836 0.359041 -v -0.042536 0.089961 0.359041 -v -0.042536 0.136836 0.437166 -v -0.042536 0.089961 0.437166 -v 0.032464 0.105586 0.390291 -v 0.032464 0.011836 0.390291 -v 0.032464 0.105586 0.171541 -v 0.032464 0.011836 0.171541 -v -0.042536 0.105586 0.171541 -v -0.042536 0.011836 0.171541 -v -0.042536 0.105586 0.390291 -v -0.042536 0.011836 0.390291 -v 0.032444 0.030200 0.550109 -v 0.032444 -0.041978 0.520212 -v 0.032444 0.101953 0.376882 -v 0.032444 0.029775 0.346985 -v -0.042556 0.101953 0.376882 -v -0.042556 0.029775 0.346985 -v -0.042556 0.030200 0.550109 -v -0.042556 -0.041978 0.520212 -v 0.032464 -0.000155 0.555958 -v 0.032464 -0.033301 0.522812 -v 0.032464 0.021942 0.533861 -v 0.032464 -0.011204 0.500715 -v -0.042536 0.021942 0.533861 -v -0.042536 -0.011204 0.500715 -v -0.042536 -0.000155 0.555958 -v -0.042536 -0.033301 0.522812 -v 0.000124 0.168316 0.364050 -v 0.000124 0.106638 0.364050 -v 0.000124 0.168316 -1.179536 -v 0.000124 0.106638 -1.179536 -v -0.012211 0.168316 -1.179536 -v -0.012211 0.106638 -1.179536 -v -0.012211 0.168316 0.364050 -v -0.012211 0.106638 0.364050 -v 0.011521 0.163595 0.364050 -v -0.012082 0.106613 0.364050 -v 0.011521 0.163595 -1.179536 -v -0.012082 0.106613 -1.179536 -v 0.000124 0.168315 -1.179536 -v -0.023479 0.111333 -1.179536 -v 0.000124 0.168315 0.364050 -v -0.023479 0.111333 0.364050 -v 0.020243 0.155210 0.364050 -v -0.023370 0.111597 0.364050 -v 0.020243 0.155210 -1.179536 -v -0.023370 0.111597 -1.179536 -v 0.011521 0.163932 -1.179536 -v -0.032092 0.120319 -1.179536 -v 0.011521 0.163932 0.364050 -v -0.032092 0.120319 0.364050 -v 0.020243 0.155210 0.364050 -v 0.024963 0.143813 0.364050 -v 0.020243 0.155210 -1.179536 -v 0.024963 0.143813 -1.179536 -v -0.036739 0.131607 -1.179536 -v -0.032019 0.120210 -1.179536 -v -0.036739 0.131607 0.364050 -v -0.032019 0.120210 0.364050 -v 0.024964 0.143813 0.364050 -v 0.024964 0.131477 0.364050 -v 0.024964 0.143813 -1.179536 -v 0.024964 0.131478 -1.179536 -v -0.036714 0.143813 -1.179536 -v -0.036714 0.131478 -1.179536 -v -0.036714 0.143813 0.364050 -v -0.036714 0.131477 0.364050 -v 0.024964 0.131478 0.364050 -v 0.020243 0.120081 0.364050 -v 0.024964 0.131478 -1.179536 -v 0.020243 0.120081 -1.179536 -v -0.032019 0.155081 -1.179536 -v -0.036739 0.143684 -1.179536 -v -0.032019 0.155081 0.364050 -v -0.036739 0.143684 0.364050 -v 0.020243 0.120081 0.364050 -v 0.011520 0.111359 0.364050 -v 0.020243 0.120082 -1.179536 -v 0.011520 0.111359 -1.179536 -v -0.023370 0.163694 -1.179536 -v -0.032092 0.154971 -1.179536 -v -0.023370 0.163694 0.364050 -v -0.032092 0.154971 0.364050 -v -0.012082 0.168341 0.364050 -v 0.011520 0.111359 0.364050 -v -0.012082 0.168341 -1.179536 -v 0.011520 0.111359 -1.179536 -v -0.023479 0.163621 -1.179536 -v 0.000124 0.106639 -1.179536 -v -0.023479 0.163620 0.364050 -v 0.000124 0.106638 0.364050 -v -0.012082 0.090216 0.285925 -v 0.011520 0.033234 0.285925 -v -0.012082 0.090216 -1.023286 -v 0.011520 0.033234 -1.023286 -v -0.023479 0.085496 -1.023286 -v 0.000124 0.028513 -1.023286 -v -0.023479 0.085495 0.285925 -v 0.000124 0.028513 0.285925 -v 0.020243 0.041956 0.285925 -v 0.011520 0.033234 0.285925 -v 0.020243 0.041957 -1.023286 -v 0.011520 0.033234 -1.023286 -v -0.023370 0.085569 -1.023286 -v -0.032092 0.076846 -1.023286 -v -0.023370 0.085569 0.285925 -v -0.032092 0.076846 0.285925 -v 0.024964 0.053353 0.285925 -v 0.020243 0.041956 0.285925 -v 0.024964 0.053353 -1.023286 -v 0.020243 0.041956 -1.023286 -v -0.032019 0.076956 -1.023286 -v -0.036739 0.065559 -1.023286 -v -0.032019 0.076956 0.285925 -v -0.036739 0.065559 0.285925 -v 0.024964 0.065688 0.285925 -v 0.024964 0.053352 0.285925 -v 0.024964 0.065688 -1.023286 -v 0.024964 0.053353 -1.023286 -v -0.036714 0.065688 -1.023286 -v -0.036714 0.053353 -1.023286 -v -0.036714 0.065688 0.285925 -v -0.036714 0.053352 0.285925 -v 0.020243 0.077085 0.285925 -v 0.024963 0.065688 0.285925 -v 0.020243 0.077085 -1.023286 -v 0.024963 0.065688 -1.023286 -v -0.036739 0.053482 -1.023286 -v -0.032019 0.042085 -1.023286 -v -0.036739 0.053482 0.285925 -v -0.032019 0.042085 0.285925 -v 0.020243 0.077085 0.285925 -v -0.023370 0.033472 0.285925 -v 0.020243 0.077085 -1.023286 -v -0.023370 0.033472 -1.023286 -v 0.011521 0.085807 -1.023286 -v -0.032092 0.042194 -1.023286 -v 0.011521 0.085807 0.285925 -v -0.032092 0.042194 0.285925 -v 0.011521 0.085470 0.285925 -v -0.012082 0.028488 0.285925 -v 0.011521 0.085470 -1.023286 -v -0.012082 0.028488 -1.023286 -v 0.000124 0.090190 -1.023286 -v -0.023479 0.033208 -1.023286 -v 0.000124 0.090190 0.285925 -v -0.023479 0.033208 0.285925 -v 0.000124 0.090191 0.285925 -v 0.000124 0.028513 0.285925 -v 0.000124 0.090191 -1.023286 -v 0.000124 0.028513 -1.023286 -v -0.012211 0.090191 -1.023286 -v -0.012211 0.028513 -1.023286 -v -0.012211 0.090191 0.285925 -v -0.012211 0.028513 0.285925 -v -0.012212 0.102587 -0.867036 -v 0.016112 0.034209 -0.867036 -v -0.012212 0.102587 -0.938088 -v 0.016112 0.034209 -0.938088 -v -0.025887 0.096923 -0.938088 -v 0.002436 0.028544 -0.938088 -v -0.025887 0.096923 -0.867036 -v 0.002436 0.028544 -0.867036 -v 0.026579 0.044675 -0.867036 -v 0.016112 0.034208 -0.867036 -v 0.026579 0.044675 -0.938088 -v 0.016112 0.034208 -0.938088 -v -0.025756 0.097010 -0.938088 -v -0.036223 0.086543 -0.938088 -v -0.025756 0.097010 -0.867036 -v -0.036223 0.086543 -0.867036 -v 0.016112 0.096892 -0.867036 -v -0.012211 0.028513 -0.867036 -v 0.016112 0.096892 -0.938088 -v -0.012211 0.028513 -0.938088 -v 0.002436 0.102556 -0.938088 -v -0.025887 0.034178 -0.938088 -v 0.002436 0.102556 -0.867036 -v -0.025887 0.034178 -0.867036 -v 0.026579 0.086830 -0.867036 -v -0.025756 0.034495 -0.867036 -v 0.026579 0.086830 -0.938088 -v -0.025756 0.034495 -0.938088 -v 0.016112 0.097297 -0.938088 -v -0.036223 0.044962 -0.938088 -v 0.016112 0.097297 -0.867036 -v -0.036223 0.044962 -0.867036 -v 0.026579 0.086830 -0.867036 -v 0.032243 0.073154 -0.867036 -v 0.026579 0.086830 -0.938088 -v 0.032243 0.073154 -0.938088 -v -0.041800 0.058507 -0.938088 -v -0.036135 0.044831 -0.938088 -v -0.041800 0.058507 -0.867036 -v -0.036135 0.044831 -0.867036 -v 0.032244 0.073154 -0.867036 -v 0.032244 0.058351 -0.867036 -v 0.032244 0.073154 -0.938088 -v 0.032244 0.058351 -0.938088 -v -0.041769 0.073154 -0.938088 -v -0.041769 0.058351 -0.938088 -v -0.041769 0.073154 -0.867036 -v -0.041769 0.058351 -0.867036 -v 0.032244 0.058351 -0.867036 -v 0.026579 0.044675 -0.867036 -v 0.032244 0.058351 -0.938088 -v 0.026579 0.044675 -0.938088 -v -0.036135 0.086674 -0.938088 -v -0.041800 0.072999 -0.938088 -v -0.036135 0.086674 -0.867036 -v -0.041800 0.072999 -0.867036 -v 0.002436 0.133807 -0.867036 -v 0.002436 0.028544 -0.867036 -v 0.002436 0.133807 -0.938088 -v 0.002436 0.028544 -0.938088 -v -0.012366 0.133807 -0.938088 -v -0.012366 0.028544 -0.938088 -v -0.012366 0.133807 -0.867036 -v -0.012366 0.028544 -0.867036 -v 0.004339 -0.006552 0.435101 -v 0.004339 -0.049859 0.417163 -v 0.004339 -0.002964 0.426440 -v 0.004339 -0.046271 0.408502 -v -0.008161 -0.002964 0.426440 -v -0.008161 -0.046271 0.408502 -v -0.008161 -0.006552 0.435101 -v -0.008161 -0.049859 0.417163 -v 0.004339 -0.049859 0.417163 -v 0.004339 -0.069746 0.397276 -v 0.004339 -0.043230 0.410534 -v 0.004339 -0.063117 0.390646 -v -0.008161 -0.043230 0.410534 -v -0.008161 -0.063117 0.390646 -v -0.008161 -0.049859 0.417163 -v -0.008161 -0.069746 0.397276 -v 0.000124 0.174566 0.145300 -v 0.000124 0.168316 0.145300 -v 0.000124 0.174566 0.054839 -v 0.000124 0.168316 0.054839 -v -0.012211 0.174566 0.054839 -v -0.012211 0.168316 0.054839 -v -0.012211 0.174566 0.145300 -v -0.012211 0.168316 0.145300 -v 0.000124 0.174566 -1.104700 -v 0.000124 0.168316 -1.104700 -v 0.000124 0.174566 -1.163911 -v 0.000124 0.168316 -1.163911 -v -0.012211 0.174566 -1.163911 -v -0.012211 0.168316 -1.163911 -v -0.012211 0.174566 -1.104700 -v -0.012211 0.168316 -1.104700 -v 0.000124 0.173511 -1.111308 -v 0.000124 0.153301 -1.119679 -v 0.000124 0.190190 -1.151576 -v 0.000124 0.169980 -1.159947 -v -0.012211 0.190190 -1.151576 -v -0.012211 0.169980 -1.159947 -v -0.012211 0.173511 -1.111308 -v -0.012211 0.153301 -1.119679 -v -0.009820 0.174090 0.082800 -v -0.012211 0.168316 0.082800 -v -0.009820 0.174090 0.054839 -v -0.012211 0.168316 0.054839 -v -0.021216 0.178810 0.054839 -v -0.023607 0.173036 0.054839 -v -0.021216 0.178810 0.082800 -v -0.023607 0.173036 0.082800 -v -0.022554 0.186824 0.082800 -v -0.017834 0.175428 0.082800 -v -0.022554 0.186824 0.054839 -v -0.017834 0.175428 0.054839 -v -0.028329 0.184432 0.054839 -v -0.023608 0.173036 0.054839 -v -0.028329 0.184432 0.082800 -v -0.023608 0.173036 0.082800 -v 0.009129 0.178810 0.082800 -v 0.011520 0.173036 0.082800 -v 0.009129 0.178810 0.054839 -v 0.011520 0.173036 0.054839 -v -0.002268 0.174089 0.054839 -v 0.000124 0.168315 0.054839 -v -0.002268 0.174089 0.082800 -v 0.000124 0.168315 0.082800 -v 0.016241 0.184432 0.082800 -v 0.011521 0.173036 0.082800 -v 0.016241 0.184432 0.054839 -v 0.011521 0.173036 0.054839 -v 0.010467 0.186824 0.054839 -v 0.005747 0.175428 0.054839 -v 0.010467 0.186824 0.082800 -v 0.005747 0.175428 0.082800 -v 0.000124 0.193316 -1.151575 -v 0.000124 0.168316 -1.151575 -v 0.000124 0.193316 -1.163911 -v 0.000124 0.168316 -1.163911 -v -0.012211 0.193316 -1.163911 -v -0.012211 0.168316 -1.163911 -v -0.012211 0.193316 -1.151575 -v -0.012211 0.168316 -1.151575 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.812500 -vt 0.187500 0.937500 -vt 0.187500 0.812500 -vt 0.187500 0.937500 -vt 0.187500 0.812500 -vt 0.000000 0.937500 -vt 0.000000 0.812500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.921875 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.000000 0.937500 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vt 0.015625 0.937500 -vt 0.015625 0.921875 -vt 0.000000 0.937500 -vt 0.000000 0.921875 -vn 1.0000 0.0000 0.0000 -vn -1.0000 0.0000 0.0000 -vn 0.0000 1.0000 0.0000 -vn 0.0000 -1.0000 -0.0000 +v 0.000000 1.187500 -2.000000 +v -0.093750 1.162380 -2.000000 +v -0.162380 1.093750 -2.000000 +v -0.187500 1.000000 -2.000000 +v -0.162380 0.906250 -2.000000 +v -0.093750 0.837620 -2.000000 +v 0.000000 0.812500 -2.000000 +v 0.093750 0.837620 -2.000000 +v 0.162380 0.906250 -2.000000 +v 0.187500 1.000000 -2.000000 +v 0.162380 1.093750 -2.000000 +v 0.093750 1.162380 -2.000000 +v 0.000000 1.187500 3.750000 +v -0.093750 1.162380 3.750000 +v -0.162380 1.093750 3.750000 +v -0.187500 1.000000 3.750000 +v -0.162380 0.906250 3.750000 +v -0.093750 0.837620 3.750000 +v 0.000000 0.812500 3.750000 +v 0.093750 0.837620 3.750000 +v 0.162380 0.906250 3.750000 +v 0.187500 1.000000 3.750000 +v 0.162380 1.093750 3.750000 +v 0.093750 1.162380 3.750000 +v 0.000000 1.125000 3.750000 +v -0.062500 1.108253 3.750000 +v -0.108253 1.062500 3.750000 +v -0.125000 1.000000 3.750000 +v -0.108253 0.937500 3.750000 +v -0.062500 0.891747 3.750000 +v 0.000000 0.875000 3.750000 +v 0.062500 0.891747 3.750000 +v 0.108253 0.937500 3.750000 +v 0.125000 1.000000 3.750000 +v 0.108253 1.062500 3.750000 +v 0.062500 1.108253 3.750000 +v 0.000000 1.125000 2.750000 +v -0.062500 1.108253 2.750000 +v -0.108253 1.062500 2.750000 +v -0.125000 1.000000 2.750000 +v -0.108253 0.937500 2.750000 +v -0.062500 0.891747 2.750000 +v 0.000000 0.875000 2.750000 +v 0.062500 0.891747 2.750000 +v 0.108253 0.937500 2.750000 +v 0.125000 1.000000 2.750000 +v 0.108253 1.062500 2.750000 +v 0.062500 1.108253 2.750000 +v 0.000000 1.187500 3.000000 +v -0.093750 1.162380 3.000000 +v -0.162380 1.093750 3.000000 +v -0.187500 1.000000 3.000000 +v -0.162380 0.906250 3.000000 +v -0.093750 0.837620 3.000000 +v 0.000000 0.812500 3.000000 +v 0.093750 0.837620 3.000000 +v 0.162380 0.906250 3.000000 +v 0.187500 1.000000 3.000000 +v 0.162380 1.093750 3.000000 +v 0.093750 1.162380 3.000000 +v 0.000000 1.250000 3.000000 +v -0.125000 1.216506 3.000000 +v -0.216506 1.125000 3.000000 +v -0.250000 1.000000 3.000000 +v 0.250000 1.000000 3.000000 +v 0.216506 1.125000 3.000000 +v 0.125000 1.216506 3.000000 +v 0.000000 1.250000 3.250000 +v -0.125000 1.216506 3.250000 +v -0.216506 1.125000 3.250000 +v -0.250000 1.000000 3.250000 +v 0.250000 1.000000 3.250000 +v 0.216506 1.125000 3.250000 +v 0.125000 1.216506 3.250000 +v 0.000000 1.187500 3.250000 +v -0.093750 1.162380 3.250000 +v -0.162380 1.093750 3.250000 +v -0.187500 1.000000 3.250000 +v -0.162380 0.906250 3.250000 +v -0.093750 0.837620 3.250000 +v 0.000000 0.812500 3.250000 +v 0.093750 0.837620 3.250000 +v 0.162380 0.906250 3.250000 +v 0.187500 1.000000 3.250000 +v 0.162380 1.093750 3.250000 +v 0.093750 1.162380 3.250000 +v 0.000000 0.750000 -2.000000 +v -0.093750 0.724880 -2.000000 +v -0.162380 0.656250 -2.000000 +v -0.187500 0.562500 -2.000000 +v -0.162380 0.468750 -2.000000 +v -0.093750 0.400120 -2.000000 +v 0.000000 0.375000 -2.000000 +v 0.093750 0.400120 -2.000000 +v 0.162380 0.468750 -2.000000 +v 0.187500 0.562500 -2.000000 +v 0.162380 0.656250 -2.000000 +v 0.093750 0.724880 -2.000000 +v 0.000000 0.750000 3.000000 +v -0.093750 0.724880 3.000000 +v -0.162380 0.656250 3.000000 +v -0.187500 0.562500 3.000000 +v -0.162380 0.468750 3.000000 +v -0.093750 0.400120 3.000000 +v 0.000000 0.375000 3.000000 +v 0.093750 0.400120 3.000000 +v 0.162380 0.468750 3.000000 +v 0.187500 0.562500 3.000000 +v 0.162380 0.656250 3.000000 +v 0.093750 0.724880 3.000000 +v -0.250000 0.562500 3.000000 +v -0.216506 0.437500 3.000000 +v -0.125000 0.345994 3.000000 +v 0.000000 0.312500 3.000000 +v 0.125000 0.345994 3.000000 +v 0.216506 0.437500 3.000000 +v 0.250000 0.562500 3.000000 +v -0.250000 0.562500 3.250000 +v -0.216506 0.437500 3.250000 +v -0.125000 0.345994 3.250000 +v 0.000000 0.312500 3.250000 +v 0.125000 0.345994 3.250000 +v 0.216506 0.437500 3.250000 +v 0.250000 0.562500 3.250000 +v 0.000000 1.250000 -2.000000 +v -0.125000 1.216506 -2.000000 +v -0.216506 1.125000 -2.000000 +v -0.250000 1.000000 -2.000000 +v 0.250000 1.000000 -2.000000 +v 0.216506 1.125000 -2.000000 +v 0.125000 1.216506 -2.000000 +v -0.250000 0.562500 -2.000000 +v -0.216506 0.437500 -2.000000 +v -0.125000 0.345994 -2.000000 +v 0.000000 0.312500 -2.000000 +v 0.125000 0.345994 -2.000000 +v 0.216506 0.437500 -2.000000 +v 0.250000 0.562500 -2.000000 +v -0.125000 1.216506 -2.375000 +v 0.000000 1.250000 -2.375000 +v -0.216506 1.125000 -2.375000 +v -0.250000 1.000000 -2.375000 +v 0.216506 1.125000 -2.375000 +v 0.250000 1.000000 -2.375000 +v 0.125000 1.216506 -2.375000 +v -0.250000 0.562500 -2.375000 +v 0.250000 0.562500 -2.375000 +v -0.216506 0.437500 -2.375000 +v -0.125000 0.345994 -2.375000 +v 0.000000 0.312500 -2.375000 +v 0.125000 0.345994 -2.375000 +v 0.216506 0.437500 -2.375000 +v 0.000000 1.125000 -2.375000 +v -0.062500 1.108253 -2.375000 +v -0.108253 1.062500 -2.375000 +v -0.125000 1.000000 -2.375000 +v -0.108253 0.937500 -2.375000 +v -0.062500 0.891747 -2.375000 +v 0.000000 0.875000 -2.375000 +v 0.062500 0.891747 -2.375000 +v 0.108253 0.937500 -2.375000 +v 0.125000 1.000000 -2.375000 +v 0.108253 1.062500 -2.375000 +v 0.062500 1.108253 -2.375000 +v 0.000000 0.687500 -2.375000 +v -0.062500 0.670753 -2.375000 +v -0.108253 0.625000 -2.375000 +v -0.125000 0.562500 -2.375000 +v -0.108253 0.500000 -2.375000 +v -0.062500 0.454247 -2.375000 +v 0.000000 0.437500 -2.375000 +v 0.062500 0.454247 -2.375000 +v 0.108253 0.500000 -2.375000 +v 0.125000 0.562500 -2.375000 +v 0.108253 0.625000 -2.375000 +v 0.062500 0.670753 -2.375000 +v 0.000000 1.125000 -1.375000 +v -0.062500 1.108253 -1.375000 +v -0.108253 1.062500 -1.375000 +v -0.125000 1.000000 -1.375000 +v -0.108253 0.937500 -1.375000 +v -0.062500 0.891747 -1.375000 +v 0.000000 0.875000 -1.375000 +v 0.062500 0.891747 -1.375000 +v 0.108253 0.937500 -1.375000 +v 0.125000 1.000000 -1.375000 +v 0.108253 1.062500 -1.375000 +v 0.062500 1.108253 -1.375000 +v 0.000000 0.687500 -1.375000 +v -0.062500 0.670753 -1.375000 +v -0.108253 0.625000 -1.375000 +v -0.125000 0.562500 -1.375000 +v -0.108253 0.500000 -1.375000 +v -0.062500 0.454247 -1.375000 +v 0.000000 0.437500 -1.375000 +v 0.062500 0.454247 -1.375000 +v 0.108253 0.500000 -1.375000 +v 0.125000 0.562500 -1.375000 +v 0.108253 0.625000 -1.375000 +v 0.062500 0.670753 -1.375000 +v 0.312500 1.125000 -2.125000 +v 0.312500 1.125000 -2.500000 +v 0.187500 1.125000 -2.125000 +v 0.187500 1.125000 -2.500000 +v 0.312500 0.437500 -2.125000 +v 0.187500 0.437500 -2.125000 +v 0.312500 0.187500 -2.375000 +v 0.312500 1.000000 -2.625000 +v 0.187500 1.000000 -2.625000 +v 0.312500 1.000000 -3.000000 +v 0.187500 1.000000 -3.000000 +v 0.312500 0.562500 -3.750000 +v 0.312500 0.875000 -3.375000 +v 0.187500 0.875000 -3.375000 +v 0.312500 -0.062500 -2.875000 +v 0.312500 -0.062500 -3.875000 +v -0.187500 1.125000 -2.125000 +v -0.187500 1.125000 -2.500000 +v -0.312500 1.125000 -2.125000 +v -0.312500 1.125000 -2.500000 +v -0.187500 0.437500 -2.125000 +v -0.312500 0.437500 -2.125000 +v -0.312500 0.187500 -2.375000 +v -0.187500 1.000000 -2.625000 +v -0.312500 1.000000 -2.625000 +v -0.187500 1.000000 -3.000000 +v -0.312500 1.000000 -3.000000 +v -0.312500 0.562500 -3.750000 +v -0.187500 0.875000 -3.375000 +v -0.312500 0.875000 -3.375000 +v -0.312500 -0.062500 -2.875000 +v -0.312500 -0.062500 -3.875000 +v 0.250000 0.562500 -2.000000 +v -0.250000 0.562500 -2.000000 +v 0.250000 1.000000 -2.000000 +v -0.250000 1.000000 -2.000000 +v 0.250000 0.562500 1.625000 +v -0.250000 0.562500 1.625000 +v 0.250000 1.000000 1.625000 +v -0.250000 1.000000 1.625000 +v 0.250000 0.687500 1.750000 +v -0.250000 0.687500 1.750000 +v 0.250000 0.874000 1.750000 +v -0.250000 0.874000 1.750000 +v 0.187500 0.562500 -2.000000 +v 0.187500 1.000000 -2.000000 +v -0.187500 0.562500 -2.000000 +v -0.187500 1.000000 -2.000000 +v 0.187500 0.562500 -1.375000 +v 0.187500 1.000000 -1.375000 +v -0.187500 0.562500 -1.375000 +v -0.187500 1.000000 -1.375000 +v 0.187500 -0.062500 -2.875000 +v -0.187500 -0.062500 -2.875000 +v 0.187500 -0.062500 -3.875000 +v -0.187500 -0.062500 -3.875000 +v -0.187500 0.562500 -3.750000 +v 0.187500 0.562500 -3.750000 +v 0.312500 0.437500 -4.125000 +v -0.312500 0.437500 -4.125000 +v 0.312500 -0.187500 -4.125000 +v -0.312500 -0.187500 -4.125000 +v -0.187500 0.437500 -3.500000 +v 0.187500 0.437500 -3.500000 +v -0.250000 -0.250000 -4.125000 +v 0.250000 -0.250000 -4.125000 +v -0.250000 0.500000 -4.125000 +v 0.250000 0.500000 -4.125000 +v -0.250000 -0.250000 -5.625000 +v -0.250000 -1.000000 -5.250000 +v 0.250000 -1.000000 -5.250000 +v 0.250000 -0.250000 -5.625000 +v 0.375000 -0.125000 -4.125000 +v 0.375000 0.375000 -4.125000 +v 0.375000 -0.875000 -5.312500 +v 0.375000 -0.375000 -5.562500 +v -0.375000 0.375000 -4.125000 +v -0.375000 -0.125000 -4.125000 +v -0.375000 -0.375000 -5.562500 +v -0.375000 -0.875000 -5.312500 +v -0.250000 -0.500000 -5.750000 +v -0.250000 -1.000000 -5.500000 +v 0.250000 -1.000000 -5.500000 +v 0.250000 -0.500000 -5.750000 +v 0.062500 -0.062500 -3.562500 +v -0.062500 -0.062500 -3.562500 +v 0.062500 -0.062500 -3.500000 +v -0.062500 -0.062500 -3.500000 +v 0.062500 -0.187500 -3.562500 +v -0.062500 -0.187500 -3.562500 +v 0.062500 -0.187500 -3.500000 +v -0.062500 -0.187500 -3.500000 +v 0.062500 -0.312500 -3.437500 +v -0.062500 -0.312500 -3.437500 +vt 0.073770 0.336468 +vt 0.080862 0.345804 +vt 0.073770 0.373812 +vt 0.286885 0.224299 +vt 0.282787 0.205607 +vt 0.286885 0.205607 +vt 0.286885 0.186916 +vt 0.282787 0.196262 +vt 0.282787 0.186916 +vt 0.286885 0.168224 +vt 0.282787 0.177570 +vt 0.282787 0.168224 +vt 0.282787 0.149533 +vt 0.286885 0.149533 +vt 0.286885 0.130841 +vt 0.282787 0.140187 +vt 0.282787 0.130841 +vt 0.282787 0.112150 +vt 0.286885 0.112150 +vt 0.286885 0.093458 +vt 0.282787 0.102804 +vt 0.282787 0.093458 +vt 0.282787 0.074766 +vt 0.286885 0.074766 +vt 0.286885 0.056075 +vt 0.282787 0.065421 +vt 0.282787 0.056075 +vt 0.282787 0.037383 +vt 0.286885 0.037383 +vt 0.282787 0.018692 +vt 0.286885 0.018692 +vt 0.286885 0.000000 +vt 0.282787 0.009346 +vt 0.282787 -0.000000 +vt 0.571329 0.341081 +vt 0.573778 0.359421 +vt 0.567782 0.345750 +vt 0.575825 0.351334 +vt 0.581967 0.364425 +vt 0.581967 0.355087 +vt 0.590157 0.359421 +vt 0.588109 0.351334 +vt 0.596152 0.345750 +vt 0.594252 0.327074 +vt 0.592606 0.341081 +vt 0.588109 0.302814 +vt 0.596152 0.243035 +vt 0.592606 0.313068 +vt 0.569683 0.327074 +vt 0.565588 0.327074 +vt 0.557370 0.359421 +vt 0.559819 0.341081 +vt 0.563365 0.345750 +vt 0.549180 0.364425 +vt 0.555323 0.351334 +vt 0.540991 0.359421 +vt 0.549180 0.355087 +vt 0.534996 0.345750 +vt 0.543038 0.351334 +vt 0.532801 0.327074 +vt 0.538542 0.341081 +vt 0.598346 0.327074 +vt 0.598346 0.261711 +vt 0.565588 0.261711 +vt 0.571329 0.313068 +vt 0.575825 0.302814 +vt 0.567782 0.243035 +vt 0.573778 0.229364 +vt 0.581967 0.299061 +vt 0.581967 0.224360 +vt 0.590157 0.229364 +vt 0.561465 0.327074 +vt 0.565560 0.327074 +vt 0.532801 0.261711 +vt 0.538542 0.313068 +vt 0.559819 0.313068 +vt 0.555323 0.302814 +vt 0.563365 0.243035 +vt 0.549180 0.299061 +vt 0.557370 0.229364 +vt 0.540991 0.229364 +vt 0.543038 0.302814 +vt 0.534996 0.243035 +vt 0.476516 0.252326 +vt 0.483607 0.224321 +vt 0.490697 0.252326 +vt 0.476543 0.364441 +vt 0.483607 0.336542 +vt 0.490670 0.364441 +vt 0.620900 0.302820 +vt 0.625399 0.275706 +vt 0.625399 0.313079 +vt 0.614754 0.299064 +vt 0.620900 0.285965 +vt 0.608608 0.302820 +vt 0.614754 0.289721 +vt 0.604109 0.313079 +vt 0.608608 0.285965 +vt 0.602462 0.327095 +vt 0.604109 0.275706 +vt 0.627046 0.261690 +vt 0.627046 0.327095 +vt 0.631143 0.327095 +vt 0.631143 0.261690 +vt 0.602462 0.261690 +vt 0.598365 0.327095 +vt 0.598365 0.261690 +vt 0.600561 0.345781 +vt 0.604109 0.341110 +vt 0.608608 0.351370 +vt 0.614754 0.355125 +vt 0.606559 0.359461 +vt 0.620900 0.351370 +vt 0.614754 0.364468 +vt 0.625399 0.341110 +vt 0.622949 0.359461 +vt 0.628948 0.345781 +vt 0.628948 0.243004 +vt 0.625399 0.247675 +vt 0.620900 0.237416 +vt 0.614754 0.233660 +vt 0.622949 0.229324 +vt 0.606559 0.229324 +vt 0.608608 0.237416 +vt 0.600561 0.243004 +vt 0.604109 0.247675 +vt 0.643444 0.310911 +vt 0.647541 0.280377 +vt 0.647541 0.308408 +vt 0.651638 0.310911 +vt 0.654638 0.271034 +vt 0.654638 0.317751 +vt 0.655736 0.327095 +vt 0.640444 0.271034 +vt 0.640444 0.317751 +vt 0.639346 0.261690 +vt 0.639346 0.327095 +vt 0.631152 0.327095 +vt 0.631152 0.261690 +vt 0.663930 0.327095 +vt 0.655736 0.261690 +vt 0.663930 0.261690 +vt 0.654638 0.336438 +vt 0.661735 0.345781 +vt 0.651638 0.343278 +vt 0.655736 0.359461 +vt 0.647541 0.345781 +vt 0.647541 0.364468 +vt 0.639346 0.359461 +vt 0.640444 0.336438 +vt 0.633347 0.345781 +vt 0.640444 0.252347 +vt 0.633347 0.243004 +vt 0.643444 0.245507 +vt 0.639346 0.229324 +vt 0.647541 0.224317 +vt 0.651638 0.245507 +vt 0.655736 0.229324 +vt 0.661735 0.243004 +vt 0.654638 0.252347 +vt 0.713115 0.186916 +vt 0.721311 0.289720 +vt 0.713115 0.289720 +vt 0.803279 0.252336 +vt 0.778689 0.271028 +vt 0.770492 0.112150 +vt 0.721311 0.485981 +vt 0.713115 0.383178 +vt 0.721311 0.383178 +vt 0.803279 0.420561 +vt 0.827869 0.467290 +vt 0.770492 0.560748 +vt 0.028689 0.728972 +vt 0.266393 0.663551 +vt 0.266393 0.728972 +vt 0.266393 0.588785 +vt 0.028689 0.523364 +vt 0.266393 0.523364 +vt 0.020492 0.570093 +vt 0.028689 0.588785 +vt 0.020492 0.682243 +vt 0.028689 0.663551 +vt 0.836066 0.112150 +vt 0.852459 0.186916 +vt 0.827869 0.205607 +vt 0.836066 0.560748 +vt 0.852459 0.485981 +vt 0.852459 0.579439 +vt 0.852459 0.102804 +vt 0.852459 0.000000 +vt 0.885246 0.018692 +vt 0.959016 0.158879 +vt 0.942623 0.102804 +vt 0.959016 0.102804 +vt 0.959016 0.084112 +vt 0.934426 0.037383 +vt 0.942623 0.158879 +vt 0.909836 0.242991 +vt 0.885246 0.242991 +vt 0.852459 0.158879 +vt 0.934426 0.224299 +vt 0.959016 0.177570 +vt 0.266393 0.738318 +vt 0.274590 0.644860 +vt 0.315574 0.663551 +vt 0.168033 0.785047 +vt 0.172131 0.766355 +vt 0.172131 0.785047 +vt 0.180328 0.803738 +vt 0.184426 0.785047 +vt 0.184426 0.803738 +vt 0.168033 0.803738 +vt 0.172131 0.803738 +vt 0.180328 0.785047 +vt 0.180328 0.766355 +vt 0.069676 0.371311 +vt 0.066679 0.345804 +vt 0.066679 0.364476 +vt 0.065582 0.355140 +vt 0.069676 0.338970 +vt 0.077865 0.338970 +vt 0.081959 0.355140 +vt 0.080862 0.364476 +vt 0.077865 0.371311 +vt 0.282787 0.214953 +vt 0.282787 0.158879 +vt 0.282787 0.121495 +vt 0.282787 0.084112 +vt 0.282787 0.046729 +vt 0.282787 0.028037 +vt 0.536896 0.327074 +vt 0.565560 0.261711 +vt 0.549180 0.224360 +vt 0.487700 0.259160 +vt 0.483607 0.261661 +vt 0.479513 0.259160 +vt 0.475419 0.242991 +vt 0.476516 0.233656 +vt 0.479513 0.226822 +vt 0.487700 0.226822 +vt 0.490697 0.233656 +vt 0.491794 0.242991 +vt 0.487685 0.371248 +vt 0.483607 0.373740 +vt 0.479529 0.371248 +vt 0.475451 0.355141 +vt 0.476543 0.345842 +vt 0.479529 0.339034 +vt 0.487685 0.339034 +vt 0.490670 0.345842 +vt 0.491763 0.355141 +vt 0.614754 0.224317 +vt 0.643444 0.277874 +vt 0.651638 0.277874 +vt 0.643444 0.343278 +vt 0.647541 0.243004 +vt 0.721311 0.186916 +vt 0.745902 0.289720 +vt 0.754098 0.271028 +vt 0.737705 0.149533 +vt 0.713115 0.485981 +vt 0.754098 0.401869 +vt 0.745902 0.383178 +vt 0.778689 0.401869 +vt 0.737705 0.523364 +vt 0.020492 0.542056 +vt 0.020492 0.710280 +vt 0.852459 0.093458 +vt 0.877049 0.000000 +vt 0.909836 0.018692 +vt 0.877049 0.261682 +vt 0.852459 0.261682 +vt 0.315574 0.738318 +vt 0.307377 0.757009 +vt 0.274590 0.757009 +vt 0.266393 0.663551 +vt 0.307377 0.644860 +vt 0.663934 0.224299 +vt 0.663934 0.205607 +vt 0.663934 0.186916 +vt 0.663934 0.168224 +vt 0.663934 0.149533 +vt 0.663934 0.130841 +vt 0.663934 0.112150 +vt 0.663934 0.093458 +vt 0.663934 0.074766 +vt 0.663934 0.056075 +vt 0.663934 0.037383 +vt 0.663934 0.018692 +vt 0.663934 0.000000 +vt -0.000000 0.364486 +vt 0.065574 0.373832 +vt -0.000000 0.373832 +vt -0.000000 0.411215 +vt 0.065574 0.420561 +vt -0.000000 0.420561 +vt -0.000000 0.439252 +vt 0.065574 0.448598 +vt -0.000000 0.448598 +vt -0.000000 0.355140 +vt 0.065574 0.364486 +vt -0.000000 0.401869 +vt 0.065574 0.411215 +vt -0.000000 0.383178 +vt 0.065574 0.392523 +vt -0.000000 0.392523 +vt -0.000000 0.429907 +vt 0.065574 0.439252 +vt -0.000000 0.345794 +vt 0.065574 0.355140 +vt 0.065574 0.401869 +vt 0.065574 0.383178 +vt 0.065574 0.429907 +vt -0.000000 0.336449 +vt 0.065574 0.345794 +vt 0.688525 0.196262 +vt 0.704918 0.214953 +vt 0.688525 0.214953 +vt 0.688525 0.158879 +vt 0.704918 0.177570 +vt 0.688525 0.177570 +vt 0.704918 0.196262 +vt 0.688525 0.140187 +vt 0.704918 0.158879 +vt 0.688525 0.121495 +vt 0.704918 0.140187 +vt 0.704918 0.233645 +vt 0.688525 0.233645 +vt 0.688525 0.299065 +vt 0.704918 0.299065 +vt 0.409836 0.448598 +vt 0.081967 0.429907 +vt 0.409836 0.429907 +vt 0.081967 0.411215 +vt 0.409836 0.411215 +vt 0.081967 0.392523 +vt 0.409836 0.392523 +vt 0.081967 0.373832 +vt 0.409836 0.373832 +vt 0.081967 0.355140 +vt 0.409836 0.355140 +vt 0.081967 0.336449 +vt 0.409836 0.336449 +vt 0.081967 0.317757 +vt 0.409836 0.317757 +vt 0.081967 0.299065 +vt 0.409836 0.299065 +vt 0.081967 0.280374 +vt 0.409836 0.280374 +vt 0.081967 0.261682 +vt 0.409836 0.261682 +vt 0.081967 0.242991 +vt 0.409836 0.242991 +vt 0.081967 0.224299 +vt 0.409836 0.224299 +vt 0.704918 0.056075 +vt 0.688525 0.056075 +vt 0.688525 0.336449 +vt 0.704918 0.355140 +vt 0.688525 0.355140 +vt 0.688525 0.037383 +vt 0.688525 0.317757 +vt 0.704918 0.336449 +vt 0.688525 0.018692 +vt 0.704918 0.037383 +vt 0.704918 0.317757 +vt 0.688525 -0.000000 +vt 0.704918 0.018692 +vt 0.663934 0.317757 +vt 0.688525 0.336449 +vt 0.663934 0.336449 +vt 0.663934 0.214953 +vt 0.688525 0.233645 +vt 0.663934 0.233645 +vt 0.688525 0.355140 +vt 0.663934 0.355140 +vt 0.663934 0.121495 +vt 0.688525 0.140187 +vt 0.663934 0.140187 +vt 0.663934 -0.000000 +vt 0.688525 0.018692 +vt 0.663934 0.018692 +vt 0.688525 0.158879 +vt 0.663934 0.158879 +vt 0.688525 0.037383 +vt 0.663934 0.037383 +vt 0.688525 0.177570 +vt 0.663934 0.177570 +vt 0.688525 0.056075 +vt 0.663934 0.056075 +vt 0.688525 0.299065 +vt 0.663934 0.299065 +vt 0.688525 0.121495 +vt 0.688525 0.196262 +vt 0.663934 0.196262 +vt 0.688525 0.317757 +vt 0.688525 0.214953 +vt 0.409836 0.401869 +vt 0.475410 0.392523 +vt 0.475410 0.401869 +vt 0.409836 0.355140 +vt 0.475410 0.345794 +vt 0.475410 0.355140 +vt 0.409836 0.327103 +vt 0.475410 0.317757 +vt 0.475410 0.327103 +vt 0.409836 0.280374 +vt 0.475410 0.271028 +vt 0.475410 0.280374 +vt 0.409836 0.345794 +vt 0.475410 0.336449 +vt 0.409836 0.317757 +vt 0.475410 0.308411 +vt 0.409836 0.271028 +vt 0.475410 0.261682 +vt 0.409836 0.448598 +vt 0.475410 0.439252 +vt 0.475410 0.448598 +vt 0.409836 0.308411 +vt 0.475410 0.299065 +vt 0.409836 0.261682 +vt 0.475410 0.252336 +vt 0.409836 0.439252 +vt 0.475410 0.429907 +vt 0.409836 0.299065 +vt 0.475410 0.289720 +vt 0.409836 0.392523 +vt 0.475410 0.383178 +vt 0.409836 0.252336 +vt 0.475410 0.242991 +vt 0.409836 0.429907 +vt 0.475410 0.420561 +vt 0.409836 0.289720 +vt 0.409836 0.383178 +vt 0.475410 0.373832 +vt 0.409836 0.242991 +vt 0.475410 0.233645 +vt 0.409836 0.420561 +vt 0.475410 0.411215 +vt 0.409836 0.373832 +vt 0.475410 0.364486 +vt 0.409836 0.233645 +vt 0.475410 0.224299 +vt 0.409836 0.411215 +vt 0.409836 0.364486 +vt 0.409836 0.336449 +vt 0.475410 0.336449 +vt 0.745902 0.308411 +vt 0.754098 0.289720 +vt 0.778689 0.289720 +vt 0.754098 0.308411 +vt 0.803279 0.289720 +vt 0.778689 0.308411 +vt 0.721311 0.018692 +vt 0.737705 0.093458 +vt 0.721311 0.074766 +vt 0.721311 0.364486 +vt 0.745902 0.364486 +vt 0.754098 0.364486 +vt 0.778689 0.364486 +vt 0.754098 0.383178 +vt 0.803279 0.364486 +vt 0.778689 0.383178 +vt 0.827869 0.383178 +vt 0.827869 0.364486 +vt 0.852459 0.383178 +vt 0.770492 0.093458 +vt 0.836066 0.074766 +vt 0.840164 0.093458 +vt 0.000000 0.588785 +vt 0.008197 0.663551 +vt 0.000000 0.663551 +vt 0.020492 0.588785 +vt 0.020492 0.663551 +vt 0.008197 0.588785 +vt 0.225410 0.514019 +vt 0.028689 0.448598 +vt 0.225410 0.654206 +vt 0.836066 0.018692 +vt 0.770492 0.000000 +vt 0.836066 0.000000 +vt 0.770492 0.074766 +vt 0.827869 0.308411 +vt 0.803279 0.308411 +vt 0.803279 0.383178 +vt 0.852459 0.289720 +vt 0.827869 0.289720 +vt 0.852459 -0.000000 +vt 0.426230 0.663551 +vt 0.442623 0.738318 +vt 0.426230 0.738318 +vt 0.336066 0.448598 +vt 0.426230 0.523364 +vt 0.336066 0.523364 +vt 0.319672 0.635514 +vt 0.426230 0.635514 +vt 0.319672 0.766355 +vt 0.331967 0.551402 +vt 0.426230 0.850467 +vt 0.442623 0.766355 +vt 0.442623 0.850467 +vt 0.426230 0.551402 +vt 0.331967 0.850467 +vt 0.426230 0.766355 +vt 0.336066 0.878505 +vt 0.426230 0.878505 +vt 0.475410 0.663551 +vt 0.475410 0.738318 +vt 0.491803 0.738318 +vt 0.491803 0.663551 +vt 0.442623 0.635514 +vt 0.442623 0.551402 +vt 0.159836 0.803738 +vt 0.159836 0.785047 +vt 0.168033 0.766355 +vt 0.770492 0.018692 +vt 0.737705 0.000000 +vt 0.721311 -0.000000 +vt 0.721311 0.093458 +vt 0.065574 0.336449 +vt 0.704918 0.121495 +vt 0.081967 0.448598 +vt 0.704918 0.000000 +vt 0.688525 -0.000000 +vt 0.409836 0.336449 +vt 0.409836 0.224299 +vt 0.721311 0.308411 +vt 0.266393 0.448598 +vt 0.225410 0.457944 +vt 0.266393 0.457944 +vt 0.266393 0.514019 +vt 0.225410 0.598131 +vt 0.266393 0.598131 +vt 0.266393 0.654206 +vt 0.442623 0.663551 +vt 0.426230 0.448598 +vt 0.159836 0.766355 vn 0.0000 0.0000 1.0000 vn 0.0000 0.0000 -1.0000 -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 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.8944 0.4472 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn -0.8660 0.5000 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.9914 0.1305 0.0000 +vn 0.9914 0.1305 0.0000 +vn 0.9914 -0.1305 0.0000 +vn -0.9914 -0.1305 0.0000 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.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.7071 -0.7071 0.0000 -vn -0.7071 0.7071 0.0000 -vn 0.7071 0.7071 0.0000 -vn -0.7071 -0.7071 -0.0000 -vn 0.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.0000 0.7071 0.7071 -vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.9871 -0.1602 +vn 0.0000 0.8736 -0.4866 vn 0.0000 -0.7071 0.7071 -vn 0.0000 0.7071 -0.7071 +vn 0.0000 -0.8112 0.5847 +vn 0.0000 0.9024 -0.4308 +vn 0.0000 0.9487 -0.3162 +vn 0.0000 -0.9732 0.2298 +vn 0.0000 -0.9522 0.3054 +vn 0.0000 -0.9239 0.3827 +vn 0.0000 -0.3827 0.9239 +vn 0.0000 0.9231 0.3845 +vn 0.0000 0.3808 0.9246 +vn 0.0000 -0.8944 0.4472 +vn 0.3702 0.6646 -0.6490 +vn -0.4346 -0.0292 -0.9002 +vn -0.3702 0.6646 -0.6490 +vn 0.3158 0.8487 -0.4243 +vn -0.3158 0.8487 -0.4243 +vn -0.3875 -0.7728 0.5027 +vn 0.3803 -0.8832 0.2744 +vn 0.3875 -0.7728 0.5027 +vn 0.8592 0.4574 -0.2292 +vn 0.9085 0.1932 -0.3706 +vn -0.8592 0.4574 -0.2292 +vn 0.9547 -0.2517 0.1590 +vn -0.9201 -0.3912 -0.0217 +vn -0.4362 -0.7533 -0.4922 +vn 0.9201 -0.3912 -0.0217 +vn -0.9547 -0.2517 0.1590 +vn -0.9085 0.1932 -0.3706 +vn -0.3803 -0.8832 0.2744 +vn 0.4362 -0.7533 -0.4922 +vn 0.4346 -0.0292 -0.9002 +vn 0.0000 0.2298 0.9732 +vn 0.0000 -0.3827 -0.9239 +vn 0.0000 0.4472 0.8944 +vn 0.0000 -0.7071 -0.7071 s off -f 313/799/45 314/800/45 315/801/45 -f 314/800/45 316/802/45 315/801/45 -f 317/803/46 318/804/46 319/805/46 -f 318/804/46 320/806/46 319/805/46 -f 317/803/47 319/807/47 315/801/47 -f 319/807/47 313/808/47 315/801/47 -f 320/809/48 318/804/48 314/810/48 -f 318/804/48 316/802/48 314/810/48 -f 319/811/49 320/812/49 313/813/49 -f 320/812/49 314/814/49 313/813/49 -f 315/815/50 316/816/50 317/817/50 -f 316/816/50 318/818/50 317/817/50 -f 321/819/45 322/820/45 323/821/45 -f 322/820/45 324/822/45 323/821/45 -f 325/823/46 326/824/46 327/825/46 -f 326/824/46 328/826/46 327/825/46 -f 325/823/51 327/827/51 323/821/51 -f 327/827/51 321/828/51 323/821/51 -f 328/829/52 326/824/52 322/830/52 -f 326/824/52 324/822/52 322/830/52 -f 327/831/53 328/832/53 321/833/53 -f 328/832/53 322/834/53 321/833/53 -f 323/835/54 324/836/54 325/837/54 -f 324/836/54 326/838/54 325/837/54 -f 329/839/45 330/840/45 331/841/45 -f 330/840/45 332/842/45 331/841/45 -f 333/843/46 334/844/46 335/845/46 -f 334/844/46 336/846/46 335/845/46 -f 333/843/55 335/847/55 331/841/55 -f 335/847/55 329/848/55 331/841/55 -f 336/849/56 334/844/56 330/850/56 -f 334/844/56 332/842/56 330/850/56 -f 335/851/57 336/852/57 329/853/57 -f 336/852/57 330/854/57 329/853/57 -f 331/855/58 332/856/58 333/857/58 -f 332/856/58 334/858/58 333/857/58 -f 337/859/45 338/860/45 339/861/45 -f 338/860/45 340/862/45 339/861/45 -f 341/863/46 342/864/46 343/865/46 -f 342/864/46 344/866/46 343/865/46 -f 341/863/47 343/867/47 339/861/47 -f 343/867/47 337/868/47 339/861/47 -f 344/869/48 342/864/48 338/870/48 -f 342/864/48 340/862/48 338/870/48 -f 343/871/49 344/872/49 337/873/49 -f 344/872/49 338/874/49 337/873/49 -f 339/875/50 340/876/50 341/877/50 -f 340/876/50 342/878/50 341/877/50 -f 345/879/45 346/880/45 347/881/45 -f 346/880/45 348/882/45 347/881/45 -f 349/883/46 350/884/46 351/885/46 -f 350/884/46 352/886/46 351/885/46 -f 349/883/47 351/887/47 347/881/47 -f 351/887/47 345/888/47 347/881/47 -f 352/889/48 350/884/48 346/890/48 -f 350/884/48 348/882/48 346/890/48 -f 351/891/49 352/892/49 345/893/49 -f 352/892/49 346/894/49 345/893/49 -f 347/895/50 348/896/50 349/897/50 -f 348/896/50 350/898/50 349/897/50 -f 353/899/59 354/900/59 355/901/59 -f 354/900/59 356/902/59 355/901/59 -f 357/903/60 358/904/60 359/905/60 -f 358/904/60 360/906/60 359/905/60 -f 357/903/61 359/907/61 355/901/61 -f 359/907/61 353/908/61 355/901/61 -f 360/909/62 358/904/62 354/910/62 -f 358/904/62 356/902/62 354/910/62 -f 359/911/49 360/912/49 353/913/49 -f 360/912/49 354/914/49 353/913/49 -f 355/915/50 356/916/50 357/917/50 -f 356/916/50 358/918/50 357/917/50 -f 361/919/63 362/920/63 363/921/63 -f 362/920/63 364/922/63 363/921/63 -f 365/923/64 366/924/64 367/925/64 -f 366/924/64 368/926/64 367/925/64 -f 365/923/65 367/927/65 363/921/65 -f 367/927/65 361/928/65 363/921/65 -f 368/929/66 366/924/66 362/930/66 -f 366/924/66 364/922/66 362/930/66 -f 367/931/49 368/932/49 361/933/49 -f 368/932/49 362/934/49 361/933/49 -f 363/935/50 364/936/50 365/937/50 -f 364/936/50 366/938/50 365/937/50 -f 369/939/67 370/940/67 371/941/67 -f 370/940/67 372/942/67 371/941/67 -f 373/943/68 374/944/68 375/945/68 -f 374/944/68 376/946/68 375/945/68 -f 373/943/69 375/947/69 371/941/69 -f 375/947/69 369/948/69 371/941/69 -f 376/949/70 374/944/70 370/950/70 -f 374/944/70 372/942/70 370/950/70 -f 375/951/49 376/952/49 369/953/49 -f 376/952/49 370/954/49 369/953/49 -f 371/955/50 372/956/50 373/957/50 -f 372/956/50 374/958/50 373/957/50 -f 377/959/45 378/960/45 379/961/45 -f 378/960/45 380/962/45 379/961/45 -f 381/963/46 382/964/46 383/965/46 -f 382/964/46 384/966/46 383/965/46 -f 381/963/47 383/967/47 379/961/47 -f 383/967/47 377/968/47 379/961/47 -f 384/969/48 382/964/48 378/970/48 -f 382/964/48 380/962/48 378/970/48 -f 383/971/49 384/972/49 377/973/49 -f 384/972/49 378/974/49 377/973/49 -f 379/975/50 380/976/50 381/977/50 -f 380/976/50 382/978/50 381/977/50 -f 385/979/45 386/980/45 387/981/45 -f 386/980/45 388/982/45 387/981/45 -f 389/983/46 390/984/46 391/985/46 -f 390/984/46 392/986/46 391/985/46 -f 389/983/47 391/987/47 387/981/47 -f 391/987/47 385/988/47 387/981/47 -f 392/989/48 390/984/48 386/990/48 -f 390/984/48 388/982/48 386/990/48 -f 391/991/49 392/992/49 385/993/49 -f 392/992/49 386/994/49 385/993/49 -f 387/995/50 388/996/50 389/997/50 -f 388/996/50 390/998/50 389/997/50 -f 393/999/67 394/1000/67 395/1001/67 -f 394/1000/67 396/1002/67 395/1001/67 -f 397/1003/68 398/1004/68 399/1005/68 -f 398/1004/68 400/1006/68 399/1005/68 -f 397/1003/69 399/1007/69 395/1001/69 -f 399/1007/69 393/1008/69 395/1001/69 -f 400/1009/70 398/1004/70 394/1010/70 -f 398/1004/70 396/1002/70 394/1010/70 -f 399/1011/49 400/1012/49 393/1013/49 -f 400/1012/49 394/1014/49 393/1013/49 -f 395/1015/50 396/1016/50 397/1017/50 -f 396/1016/50 398/1018/50 397/1017/50 -f 401/1019/65 402/1020/65 403/1021/65 -f 402/1020/65 404/1022/65 403/1021/65 -f 405/1023/66 406/1024/66 407/1025/66 -f 406/1024/66 408/1026/66 407/1025/66 -f 405/1023/64 407/1027/64 403/1021/64 -f 407/1027/64 401/1028/64 403/1021/64 -f 408/1029/63 406/1024/63 402/1030/63 -f 406/1024/63 404/1022/63 402/1030/63 -f 407/1031/49 408/1032/49 401/1033/49 -f 408/1032/49 402/1034/49 401/1033/49 -f 403/1035/50 404/1036/50 405/1037/50 -f 404/1036/50 406/1038/50 405/1037/50 -f 409/1039/59 410/1040/59 411/1041/59 -f 410/1040/59 412/1042/59 411/1041/59 -f 413/1043/60 414/1044/60 415/1045/60 -f 414/1044/60 416/1046/60 415/1045/60 -f 413/1043/61 415/1047/61 411/1041/61 -f 415/1047/61 409/1048/61 411/1041/61 -f 416/1049/62 414/1044/62 410/1050/62 -f 414/1044/62 412/1042/62 410/1050/62 -f 415/1051/49 416/1052/49 409/1053/49 -f 416/1052/49 410/1054/49 409/1053/49 -f 411/1055/50 412/1056/50 413/1057/50 -f 412/1056/50 414/1058/50 413/1057/50 -f 417/1059/45 418/1060/45 419/1061/45 -f 418/1060/45 420/1062/45 419/1061/45 -f 421/1063/46 422/1064/46 423/1065/46 -f 422/1064/46 424/1066/46 423/1065/46 -f 421/1063/47 423/1067/47 419/1061/47 -f 423/1067/47 417/1068/47 419/1061/47 -f 424/1069/48 422/1064/48 418/1070/48 -f 422/1064/48 420/1062/48 418/1070/48 -f 423/1071/49 424/1072/49 417/1073/49 -f 424/1072/49 418/1074/49 417/1073/49 -f 419/1075/50 420/1076/50 421/1077/50 -f 420/1076/50 422/1078/50 421/1077/50 -f 425/1079/45 426/1080/45 427/1081/45 -f 426/1080/45 428/1082/45 427/1081/45 -f 429/1083/46 430/1084/46 431/1085/46 -f 430/1084/46 432/1086/46 431/1085/46 -f 429/1083/47 431/1087/47 427/1081/47 -f 431/1087/47 425/1088/47 427/1081/47 -f 432/1089/48 430/1084/48 426/1090/48 -f 430/1084/48 428/1082/48 426/1090/48 -f 431/1091/49 432/1092/49 425/1093/49 -f 432/1092/49 426/1094/49 425/1093/49 -f 427/1095/50 428/1096/50 429/1097/50 -f 428/1096/50 430/1098/50 429/1097/50 -f 433/1099/45 434/1100/45 435/1101/45 -f 434/1100/45 436/1102/45 435/1101/45 -f 437/1103/46 438/1104/46 439/1105/46 -f 438/1104/46 440/1106/46 439/1105/46 -f 437/1103/47 439/1107/47 435/1101/47 -f 439/1107/47 433/1108/47 435/1101/47 -f 440/1109/48 438/1104/48 434/1110/48 -f 438/1104/48 436/1102/48 434/1110/48 -f 439/1111/49 440/1112/49 433/1113/49 -f 440/1112/49 434/1114/49 433/1113/49 -f 435/1115/50 436/1116/50 437/1117/50 -f 436/1116/50 438/1118/50 437/1117/50 -f 441/1119/45 442/1120/45 443/1121/45 -f 442/1120/45 444/1122/45 443/1121/45 -f 445/1123/46 446/1124/46 447/1125/46 -f 446/1124/46 448/1126/46 447/1125/46 -f 445/1127/47 447/1128/47 443/1129/47 -f 447/1128/47 441/1130/47 443/1129/47 -f 448/1131/48 446/1132/48 442/1133/48 -f 446/1132/48 444/1134/48 442/1133/48 -f 447/1135/49 448/1136/49 441/1119/49 -f 448/1136/49 442/1137/49 441/1119/49 -f 443/1138/50 444/1139/50 445/1140/50 -f 444/1139/50 446/1141/50 445/1140/50 -f 449/1142/45 450/1143/45 451/1144/45 -f 450/1143/45 452/1145/45 451/1144/45 -f 453/1146/46 454/1147/46 455/1148/46 -f 454/1147/46 456/1149/46 455/1148/46 -f 453/1146/51 455/1150/51 451/1144/51 -f 455/1150/51 449/1151/51 451/1144/51 -f 456/1152/52 454/1147/52 450/1153/52 -f 454/1147/52 452/1145/52 450/1153/52 -f 455/1154/53 456/1155/53 449/1156/53 -f 456/1155/53 450/1157/53 449/1156/53 -f 451/1158/54 452/1159/54 453/1160/54 -f 452/1159/54 454/1161/54 453/1160/54 -f 457/1162/45 458/1163/45 459/1164/45 -f 458/1163/45 460/1165/45 459/1164/45 -f 461/1166/46 462/1167/46 463/1168/46 -f 462/1167/46 464/1169/46 463/1168/46 -f 461/1166/71 463/1170/71 459/1164/71 -f 463/1170/71 457/1171/71 459/1164/71 -f 464/1172/72 462/1167/72 458/1173/72 -f 462/1167/72 460/1165/72 458/1173/72 -f 463/1174/73 464/1175/73 457/1176/73 -f 464/1175/73 458/1177/73 457/1176/73 -f 459/1178/74 460/1179/74 461/1180/74 -f 460/1179/74 462/1181/74 461/1180/74 -f 465/1182/45 466/1183/45 467/1184/45 -f 466/1183/45 468/1185/45 467/1184/45 -f 469/1186/46 470/1187/46 471/1188/46 -f 470/1187/46 472/1189/46 471/1188/46 -f 469/1186/47 471/1190/47 467/1184/47 -f 471/1190/47 465/1191/47 467/1184/47 -f 472/1192/48 470/1187/48 466/1193/48 -f 470/1187/48 468/1185/48 466/1193/48 -f 471/1194/49 472/1195/49 465/1196/49 -f 472/1195/49 466/1197/49 465/1196/49 -f 467/1198/50 468/1199/50 469/1200/50 -f 468/1199/50 470/1201/50 469/1200/50 -f 473/1202/59 474/1203/59 475/1204/59 -f 474/1203/59 476/1205/59 475/1204/59 -f 477/1206/60 478/1207/60 479/1208/60 -f 478/1207/60 480/1209/60 479/1208/60 -f 477/1206/61 479/1210/61 475/1204/61 -f 479/1210/61 473/1211/61 475/1204/61 -f 480/1212/62 478/1207/62 474/1213/62 -f 478/1207/62 476/1205/62 474/1213/62 -f 479/1214/49 480/1215/49 473/1216/49 -f 480/1215/49 474/1217/49 473/1216/49 -f 475/1218/50 476/1219/50 477/1220/50 -f 476/1219/50 478/1221/50 477/1220/50 -f 481/1222/63 482/1223/63 483/1224/63 -f 482/1223/63 484/1225/63 483/1224/63 -f 485/1226/64 486/1227/64 487/1228/64 -f 486/1227/64 488/1229/64 487/1228/64 -f 485/1226/65 487/1230/65 483/1224/65 -f 487/1230/65 481/1231/65 483/1224/65 -f 488/1232/66 486/1227/66 482/1233/66 -f 486/1227/66 484/1225/66 482/1233/66 -f 487/1234/49 488/1235/49 481/1236/49 -f 488/1235/49 482/1237/49 481/1236/49 -f 483/1238/50 484/1239/50 485/1240/50 -f 484/1239/50 486/1241/50 485/1240/50 -f 489/1242/67 490/1243/67 491/1244/67 -f 490/1243/67 492/1245/67 491/1244/67 -f 493/1246/68 494/1247/68 495/1248/68 -f 494/1247/68 496/1249/68 495/1248/68 -f 493/1246/69 495/1250/69 491/1244/69 -f 495/1250/69 489/1251/69 491/1244/69 -f 496/1252/70 494/1247/70 490/1253/70 -f 494/1247/70 492/1245/70 490/1253/70 -f 495/1254/49 496/1255/49 489/1256/49 -f 496/1255/49 490/1257/49 489/1256/49 -f 491/1258/50 492/1259/50 493/1260/50 -f 492/1259/50 494/1261/50 493/1260/50 -f 497/1262/45 498/1263/45 499/1264/45 -f 498/1263/45 500/1265/45 499/1264/45 -f 501/1266/46 502/1267/46 503/1268/46 -f 502/1267/46 504/1269/46 503/1268/46 -f 501/1266/47 503/1270/47 499/1264/47 -f 503/1270/47 497/1271/47 499/1264/47 -f 504/1272/48 502/1267/48 498/1273/48 -f 502/1267/48 500/1265/48 498/1273/48 -f 503/1274/49 504/1275/49 497/1276/49 -f 504/1275/49 498/1277/49 497/1276/49 -f 499/1278/50 500/1279/50 501/1280/50 -f 500/1279/50 502/1281/50 501/1280/50 -f 505/1282/59 506/1283/59 507/1284/59 -f 506/1283/59 508/1285/59 507/1284/59 -f 509/1286/60 510/1287/60 511/1288/60 -f 510/1287/60 512/1289/60 511/1288/60 -f 509/1286/61 511/1290/61 507/1284/61 -f 511/1290/61 505/1291/61 507/1284/61 -f 512/1292/62 510/1287/62 506/1293/62 -f 510/1287/62 508/1285/62 506/1293/62 -f 511/1294/49 512/1295/49 505/1296/49 -f 512/1295/49 506/1297/49 505/1296/49 -f 507/1298/50 508/1299/50 509/1300/50 -f 508/1299/50 510/1301/50 509/1300/50 -f 513/1302/63 514/1303/63 515/1304/63 -f 514/1303/63 516/1305/63 515/1304/63 -f 517/1306/64 518/1307/64 519/1308/64 -f 518/1307/64 520/1309/64 519/1308/64 -f 517/1306/65 519/1310/65 515/1304/65 -f 519/1310/65 513/1311/65 515/1304/65 -f 520/1312/66 518/1307/66 514/1313/66 -f 518/1307/66 516/1305/66 514/1313/66 -f 519/1314/49 520/1315/49 513/1316/49 -f 520/1315/49 514/1317/49 513/1316/49 -f 515/1318/50 516/1319/50 517/1320/50 -f 516/1319/50 518/1321/50 517/1320/50 -f 521/1322/67 522/1323/67 523/1324/67 -f 522/1323/67 524/1325/67 523/1324/67 -f 525/1326/68 526/1327/68 527/1328/68 -f 526/1327/68 528/1329/68 527/1328/68 -f 525/1326/69 527/1330/69 523/1324/69 -f 527/1330/69 521/1331/69 523/1324/69 -f 528/1332/70 526/1327/70 522/1333/70 -f 526/1327/70 524/1325/70 522/1333/70 -f 527/1334/49 528/1335/49 521/1336/49 -f 528/1335/49 522/1337/49 521/1336/49 -f 523/1338/50 524/1339/50 525/1340/50 -f 524/1339/50 526/1341/50 525/1340/50 -f 529/1342/67 530/1343/67 531/1344/67 -f 530/1343/67 532/1345/67 531/1344/67 -f 533/1346/68 534/1347/68 535/1348/68 -f 534/1347/68 536/1349/68 535/1348/68 -f 533/1346/69 535/1350/69 531/1344/69 -f 535/1350/69 529/1351/69 531/1344/69 -f 536/1352/70 534/1347/70 530/1353/70 -f 534/1347/70 532/1345/70 530/1353/70 -f 535/1354/49 536/1355/49 529/1356/49 -f 536/1355/49 530/1357/49 529/1356/49 -f 531/1358/50 532/1359/50 533/1360/50 -f 532/1359/50 534/1361/50 533/1360/50 -f 537/1362/63 538/1363/63 539/1364/63 -f 538/1363/63 540/1365/63 539/1364/63 -f 541/1366/64 542/1367/64 543/1368/64 -f 542/1367/64 544/1369/64 543/1368/64 -f 541/1366/65 543/1370/65 539/1364/65 -f 543/1370/65 537/1371/65 539/1364/65 -f 544/1372/66 542/1367/66 538/1373/66 -f 542/1367/66 540/1365/66 538/1373/66 -f 543/1374/49 544/1375/49 537/1376/49 -f 544/1375/49 538/1377/49 537/1376/49 -f 539/1378/50 540/1379/50 541/1380/50 -f 540/1379/50 542/1381/50 541/1380/50 -f 545/1382/59 546/1383/59 547/1384/59 -f 546/1383/59 548/1385/59 547/1384/59 -f 549/1386/60 550/1387/60 551/1388/60 -f 550/1387/60 552/1389/60 551/1388/60 -f 549/1386/61 551/1390/61 547/1384/61 -f 551/1390/61 545/1391/61 547/1384/61 -f 552/1392/62 550/1387/62 546/1393/62 -f 550/1387/62 548/1385/62 546/1393/62 -f 551/1394/49 552/1395/49 545/1396/49 -f 552/1395/49 546/1397/49 545/1396/49 -f 547/1398/50 548/1399/50 549/1400/50 -f 548/1399/50 550/1401/50 549/1400/50 -f 553/1402/45 554/1403/45 555/1404/45 -f 554/1403/45 556/1405/45 555/1404/45 -f 557/1406/46 558/1407/46 559/1408/46 -f 558/1407/46 560/1409/46 559/1408/46 -f 557/1406/47 559/1410/47 555/1404/47 -f 559/1410/47 553/1411/47 555/1404/47 -f 560/1412/48 558/1407/48 554/1413/48 -f 558/1407/48 556/1405/48 554/1413/48 -f 559/1414/49 560/1415/49 553/1416/49 -f 560/1415/49 554/1417/49 553/1416/49 -f 555/1418/50 556/1419/50 557/1420/50 -f 556/1419/50 558/1421/50 557/1420/50 -f 561/1422/67 562/1423/67 563/1424/67 -f 562/1423/67 564/1425/67 563/1424/67 -f 565/1426/68 566/1427/68 567/1428/68 -f 566/1427/68 568/1429/68 567/1428/68 -f 565/1426/69 567/1430/69 563/1424/69 -f 567/1430/69 561/1431/69 563/1424/69 -f 568/1432/70 566/1427/70 562/1433/70 -f 566/1427/70 564/1425/70 562/1433/70 -f 567/1434/49 568/1435/49 561/1436/49 -f 568/1435/49 562/1437/49 561/1436/49 -f 563/1438/50 564/1439/50 565/1440/50 -f 564/1439/50 566/1441/50 565/1440/50 -f 569/1442/63 570/1443/63 571/1444/63 -f 570/1443/63 572/1445/63 571/1444/63 -f 573/1446/64 574/1447/64 575/1448/64 -f 574/1447/64 576/1449/64 575/1448/64 -f 573/1446/65 575/1450/65 571/1444/65 -f 575/1450/65 569/1451/65 571/1444/65 -f 576/1452/66 574/1447/66 570/1453/66 -f 574/1447/66 572/1445/66 570/1453/66 -f 575/1454/49 576/1455/49 569/1456/49 -f 576/1455/49 570/1457/49 569/1456/49 -f 571/1458/50 572/1459/50 573/1460/50 -f 572/1459/50 574/1461/50 573/1460/50 -f 577/1462/59 578/1463/59 579/1464/59 -f 578/1463/59 580/1465/59 579/1464/59 -f 581/1466/60 582/1467/60 583/1468/60 -f 582/1467/60 584/1469/60 583/1468/60 -f 581/1466/61 583/1470/61 579/1464/61 -f 583/1470/61 577/1471/61 579/1464/61 -f 584/1472/62 582/1467/62 578/1473/62 -f 582/1467/62 580/1465/62 578/1473/62 -f 583/1474/49 584/1475/49 577/1476/49 -f 584/1475/49 578/1477/49 577/1476/49 -f 579/1478/50 580/1479/50 581/1480/50 -f 580/1479/50 582/1481/50 581/1480/50 -f 585/1482/45 586/1483/45 587/1484/45 -f 586/1483/45 588/1485/45 587/1484/45 -f 589/1486/46 590/1487/46 591/1488/46 -f 590/1487/46 592/1489/46 591/1488/46 -f 589/1486/47 591/1490/47 587/1484/47 -f 591/1490/47 585/1491/47 587/1484/47 -f 592/1492/48 590/1487/48 586/1493/48 -f 590/1487/48 588/1485/48 586/1493/48 -f 591/1494/49 592/1495/49 585/1496/49 -f 592/1495/49 586/1497/49 585/1496/49 -f 587/1498/50 588/1499/50 589/1500/50 -f 588/1499/50 590/1501/50 589/1500/50 -f 593/1502/67 594/1503/67 595/1504/67 -f 594/1503/67 596/1505/67 595/1504/67 -f 597/1506/68 598/1507/68 599/1508/68 -f 598/1507/68 600/1509/68 599/1508/68 -f 597/1506/69 599/1510/69 595/1504/69 -f 599/1510/69 593/1511/69 595/1504/69 -f 600/1512/70 598/1507/70 594/1513/70 -f 598/1507/70 596/1505/70 594/1513/70 -f 599/1514/49 600/1515/49 593/1516/49 -f 600/1515/49 594/1517/49 593/1516/49 -f 595/1518/50 596/1519/50 597/1520/50 -f 596/1519/50 598/1521/50 597/1520/50 -f 601/1522/63 602/1523/63 603/1524/63 -f 602/1523/63 604/1525/63 603/1524/63 -f 605/1526/64 606/1527/64 607/1528/64 -f 606/1527/64 608/1529/64 607/1528/64 -f 605/1526/65 607/1530/65 603/1524/65 -f 607/1530/65 601/1531/65 603/1524/65 -f 608/1532/66 606/1527/66 602/1533/66 -f 606/1527/66 604/1525/66 602/1533/66 -f 607/1534/49 608/1535/49 601/1536/49 -f 608/1535/49 602/1537/49 601/1536/49 -f 603/1538/50 604/1539/50 605/1540/50 -f 604/1539/50 606/1541/50 605/1540/50 -f 609/1542/59 610/1543/59 611/1544/59 -f 610/1543/59 612/1545/59 611/1544/59 -f 613/1546/60 614/1547/60 615/1548/60 -f 614/1547/60 616/1549/60 615/1548/60 -f 613/1546/61 615/1550/61 611/1544/61 -f 615/1550/61 609/1551/61 611/1544/61 -f 616/1552/62 614/1547/62 610/1553/62 -f 614/1547/62 612/1545/62 610/1553/62 -f 615/1554/49 616/1555/49 609/1556/49 -f 616/1555/49 610/1557/49 609/1556/49 -f 611/1558/50 612/1559/50 613/1560/50 -f 612/1559/50 614/1561/50 613/1560/50 -f 617/1562/63 618/1563/63 619/1564/63 -f 618/1563/63 620/1565/63 619/1564/63 -f 621/1566/64 622/1567/64 623/1568/64 -f 622/1567/64 624/1569/64 623/1568/64 -f 621/1566/65 623/1570/65 619/1564/65 -f 623/1570/65 617/1571/65 619/1564/65 -f 624/1572/66 622/1567/66 618/1573/66 -f 622/1567/66 620/1565/66 618/1573/66 -f 623/1574/49 624/1575/49 617/1576/49 -f 624/1575/49 618/1577/49 617/1576/49 -f 619/1578/50 620/1579/50 621/1580/50 -f 620/1579/50 622/1581/50 621/1580/50 -f 625/1582/67 626/1583/67 627/1584/67 -f 626/1583/67 628/1585/67 627/1584/67 -f 629/1586/68 630/1587/68 631/1588/68 -f 630/1587/68 632/1589/68 631/1588/68 -f 629/1586/69 631/1590/69 627/1584/69 -f 631/1590/69 625/1591/69 627/1584/69 -f 632/1592/70 630/1587/70 626/1593/70 -f 630/1587/70 628/1585/70 626/1593/70 -f 631/1594/49 632/1595/49 625/1596/49 -f 632/1595/49 626/1597/49 625/1596/49 -f 627/1598/50 628/1599/50 629/1600/50 -f 628/1599/50 630/1601/50 629/1600/50 -f 633/1602/45 634/1603/45 635/1604/45 -f 634/1603/45 636/1605/45 635/1604/45 -f 637/1606/46 638/1607/46 639/1608/46 -f 638/1607/46 640/1609/46 639/1608/46 -f 637/1606/47 639/1610/47 635/1604/47 -f 639/1610/47 633/1611/47 635/1604/47 -f 640/1612/48 638/1607/48 634/1613/48 -f 638/1607/48 636/1605/48 634/1613/48 -f 639/1614/49 640/1615/49 633/1616/49 -f 640/1615/49 634/1617/49 633/1616/49 -f 635/1618/50 636/1619/50 637/1620/50 -f 636/1619/50 638/1621/50 637/1620/50 -f 641/1622/59 642/1623/59 643/1624/59 -f 642/1623/59 644/1625/59 643/1624/59 -f 645/1626/60 646/1627/60 647/1628/60 -f 646/1627/60 648/1629/60 647/1628/60 -f 645/1626/61 647/1630/61 643/1624/61 -f 647/1630/61 641/1631/61 643/1624/61 -f 648/1632/62 646/1627/62 642/1633/62 -f 646/1627/62 644/1625/62 642/1633/62 -f 647/1634/49 648/1635/49 641/1636/49 -f 648/1635/49 642/1637/49 641/1636/49 -f 643/1638/50 644/1639/50 645/1640/50 -f 644/1639/50 646/1641/50 645/1640/50 -f 649/1642/45 650/1643/45 651/1644/45 -f 650/1643/45 652/1645/45 651/1644/45 -f 653/1646/46 654/1647/46 655/1648/46 -f 654/1647/46 656/1649/46 655/1648/46 -f 653/1646/47 655/1650/47 651/1644/47 -f 655/1650/47 649/1651/47 651/1644/47 -f 656/1652/48 654/1647/48 650/1653/48 -f 654/1647/48 652/1645/48 650/1653/48 -f 655/1654/49 656/1655/49 649/1656/49 -f 656/1655/49 650/1657/49 649/1656/49 -f 651/1658/50 652/1659/50 653/1660/50 -f 652/1659/50 654/1661/50 653/1660/50 -f 657/1662/45 658/1663/45 659/1664/45 -f 658/1663/45 660/1665/45 659/1664/45 -f 661/1666/46 662/1667/46 663/1668/46 -f 662/1667/46 664/1669/46 663/1668/46 -f 661/1666/51 663/1670/51 659/1664/51 -f 663/1670/51 657/1671/51 659/1664/51 -f 664/1672/52 662/1667/52 658/1673/52 -f 662/1667/52 660/1665/52 658/1673/52 -f 663/1674/53 664/1675/53 657/1676/53 -f 664/1675/53 658/1677/53 657/1676/53 -f 659/1678/54 660/1679/54 661/1680/54 -f 660/1679/54 662/1681/54 661/1680/54 -f 665/1682/45 666/1683/45 667/1684/45 -f 666/1683/45 668/1685/45 667/1684/45 -f 669/1686/46 670/1687/46 671/1688/46 -f 670/1687/46 672/1689/46 671/1688/46 -f 669/1686/71 671/1690/71 667/1684/71 -f 671/1690/71 665/1691/71 667/1684/71 -f 672/1692/72 670/1687/72 666/1693/72 -f 670/1687/72 668/1685/72 666/1693/72 -f 671/1694/73 672/1695/73 665/1696/73 -f 672/1695/73 666/1697/73 665/1696/73 -f 667/1698/74 668/1699/74 669/1700/74 -f 668/1699/74 670/1701/74 669/1700/74 -f 673/1702/45 674/1703/45 675/1704/45 -f 674/1703/45 676/1705/45 675/1704/45 -f 677/1706/46 678/1707/46 679/1708/46 -f 678/1707/46 680/1709/46 679/1708/46 -f 677/1706/47 679/1710/47 675/1704/47 -f 679/1710/47 673/1711/47 675/1704/47 -f 680/1712/48 678/1707/48 674/1713/48 -f 678/1707/48 676/1705/48 674/1713/48 -f 679/1714/49 680/1715/49 673/1716/49 -f 680/1715/49 674/1717/49 673/1716/49 -f 675/1718/50 676/1719/50 677/1720/50 -f 676/1719/50 678/1721/50 677/1720/50 -f 681/1722/45 682/1723/45 683/1724/45 -f 682/1723/45 684/1725/45 683/1724/45 -f 685/1726/46 686/1727/46 687/1728/46 -f 686/1727/46 688/1729/46 687/1728/46 -f 685/1726/47 687/1730/47 683/1724/47 -f 687/1730/47 681/1731/47 683/1724/47 -f 688/1732/48 686/1727/48 682/1733/48 -f 686/1727/48 684/1725/48 682/1733/48 -f 687/1734/49 688/1735/49 681/1736/49 -f 688/1735/49 682/1737/49 681/1736/49 -f 683/1738/50 684/1739/50 685/1740/50 -f 684/1739/50 686/1741/50 685/1740/50 -f 689/1742/45 690/1743/45 691/1744/45 -f 690/1743/45 692/1745/45 691/1744/45 -f 693/1746/46 694/1747/46 695/1748/46 -f 694/1747/46 696/1749/46 695/1748/46 -f 693/1746/51 695/1750/51 691/1744/51 -f 695/1750/51 689/1751/51 691/1744/51 -f 696/1752/52 694/1747/52 690/1753/52 -f 694/1747/52 692/1745/52 690/1753/52 -f 695/1754/53 696/1755/53 689/1756/53 -f 696/1755/53 690/1757/53 689/1756/53 -f 691/1758/54 692/1759/54 693/1760/54 -f 692/1759/54 694/1761/54 693/1760/54 -f 697/1762/59 698/1763/59 699/1764/59 -f 698/1763/59 700/1765/59 699/1764/59 -f 701/1766/60 702/1767/60 703/1768/60 -f 702/1767/60 704/1769/60 703/1768/60 -f 701/1766/61 703/1770/61 699/1764/61 -f 703/1770/61 697/1771/61 699/1764/61 -f 704/1772/62 702/1767/62 698/1773/62 -f 702/1767/62 700/1765/62 698/1773/62 -f 703/1774/49 704/1775/49 697/1776/49 -f 704/1775/49 698/1777/49 697/1776/49 -f 699/1778/50 700/1779/50 701/1780/50 -f 700/1779/50 702/1781/50 701/1780/50 -f 705/1782/67 706/1783/67 707/1784/67 -f 706/1783/67 708/1785/67 707/1784/67 -f 709/1786/68 710/1787/68 711/1788/68 -f 710/1787/68 712/1789/68 711/1788/68 -f 709/1786/69 711/1790/69 707/1784/69 -f 711/1790/69 705/1791/69 707/1784/69 -f 712/1792/70 710/1787/70 706/1793/70 -f 710/1787/70 708/1785/70 706/1793/70 -f 711/1794/49 712/1795/49 705/1796/49 -f 712/1795/49 706/1797/49 705/1796/49 -f 707/1798/50 708/1799/50 709/1800/50 -f 708/1799/50 710/1801/50 709/1800/50 -f 713/1802/67 714/1803/67 715/1804/67 -f 714/1803/67 716/1805/67 715/1804/67 -f 717/1806/68 718/1807/68 719/1808/68 -f 718/1807/68 720/1809/68 719/1808/68 -f 717/1806/69 719/1810/69 715/1804/69 -f 719/1810/69 713/1811/69 715/1804/69 -f 720/1812/70 718/1807/70 714/1813/70 -f 718/1807/70 716/1805/70 714/1813/70 -f 719/1814/49 720/1815/49 713/1816/49 -f 720/1815/49 714/1817/49 713/1816/49 -f 715/1818/50 716/1819/50 717/1820/50 -f 716/1819/50 718/1821/50 717/1820/50 -f 721/1822/59 722/1823/59 723/1824/59 -f 722/1823/59 724/1825/59 723/1824/59 -f 725/1826/60 726/1827/60 727/1828/60 -f 726/1827/60 728/1829/60 727/1828/60 -f 725/1826/61 727/1830/61 723/1824/61 -f 727/1830/61 721/1831/61 723/1824/61 -f 728/1832/62 726/1827/62 722/1833/62 -f 726/1827/62 724/1825/62 722/1833/62 -f 727/1834/49 728/1835/49 721/1836/49 -f 728/1835/49 722/1837/49 721/1836/49 -f 723/1838/50 724/1839/50 725/1840/50 -f 724/1839/50 726/1841/50 725/1840/50 -f 729/1842/45 730/1843/45 731/1844/45 -f 730/1843/45 732/1845/45 731/1844/45 -f 733/1846/46 734/1847/46 735/1848/46 -f 734/1847/46 736/1849/46 735/1848/46 -f 733/1846/47 735/1850/47 731/1844/47 -f 735/1850/47 729/1851/47 731/1844/47 -f 736/1852/48 734/1847/48 730/1853/48 -f 734/1847/48 732/1845/48 730/1853/48 -f 735/1854/49 736/1855/49 729/1856/49 -f 736/1855/49 730/1857/49 729/1856/49 -f 731/1858/50 732/1859/50 733/1860/50 -f 732/1859/50 734/1861/50 733/1860/50 +f 229/346/74 231/347/74 223/348/74 +f 205/349/74 216/350/74 204/351/74 +f 203/352/74 216/353/74 215/354/74 +f 202/355/74 215/356/74 214/357/74 +f 202/355/74 213/358/74 201/359/74 +f 200/360/74 213/361/74 212/362/74 +f 200/360/74 211/363/74 199/364/74 +f 210/365/74 211/366/74 222/367/74 +f 210/365/74 221/368/74 209/369/74 +f 208/370/74 221/371/74 220/372/74 +f 208/370/74 219/373/74 207/374/74 +f 207/374/74 218/375/74 206/376/74 +f 205/377/74 218/378/74 217/379/74 +f 245/380/75 253/381/75 252/382/75 +f 246/383/75 247/384/75 253/381/75 +f 235/385/75 248/386/75 247/384/75 +f 236/387/75 249/388/75 248/386/75 +f 238/389/75 249/388/75 237/390/75 +f 240/391/75 298/392/75 239/393/75 +f 244/394/75 252/382/75 251/395/75 +f 260/396/74 271/397/74 259/398/74 +f 254/399/74 272/400/74 260/396/74 +f 255/401/74 261/402/74 254/399/74 +f 256/403/74 262/404/74 255/401/74 +f 257/405/74 263/406/74 256/403/74 +f 250/407/75 239/393/75 297/408/75 +f 303/409/75 243/410/75 251/395/75 +f 242/411/75 302/412/75 301/413/75 +f 241/414/75 301/413/75 300/415/75 +f 241/414/75 299/416/75 240/391/75 +f 259/398/74 270/417/74 258/418/74 +f 304/419/74 265/420/74 257/405/74 +f 258/418/74 270/417/74 269/421/74 +f 268/422/74 309/423/74 269/421/74 +f 267/424/74 308/425/74 268/422/74 +f 306/426/74 267/424/74 266/427/74 +f 305/428/74 266/427/74 265/420/74 +f 385/429/75 381/430/75 377/431/75 +f 373/432/75 369/433/75 365/434/75 +f 194/435/74 283/436/74 195/437/74 +f 193/438/74 284/439/74 194/435/74 +f 192/440/74 273/441/74 193/438/74 +f 191/442/74 274/443/74 192/440/74 +f 190/444/74 275/445/74 191/442/74 +f 195/437/74 282/446/74 196/447/74 +f 315/448/74 282/446/74 324/449/74 +f 276/450/74 314/451/74 318/452/74 +f 313/453/74 190/444/74 189/454/74 +f 188/455/74 313/453/74 189/454/74 +f 187/456/74 312/457/74 188/455/74 +f 198/458/74 311/459/74 187/456/74 +f 197/460/74 317/461/74 198/458/74 +f 196/447/74 316/462/74 197/460/74 +f 323/463/74 282/446/74 281/464/74 +f 280/465/74 323/463/74 281/464/74 +f 279/466/74 322/467/74 280/465/74 +f 320/468/74 279/466/74 278/469/74 +f 319/470/74 278/469/74 277/471/74 +f 318/452/74 277/471/74 276/450/74 +f 346/472/75 351/473/75 345/474/75 +f 351/473/75 344/475/75 345/474/75 +f 344/475/75 353/476/75 343/477/75 +f 353/476/75 342/478/75 343/477/75 +f 361/479/75 346/472/75 347/480/75 +f 360/481/75 347/480/75 348/482/75 +f 360/481/75 330/483/75 333/484/75 +f 328/485/75 354/486/75 332/487/75 +f 341/488/75 328/485/75 327/489/75 +f 340/490/75 327/489/75 325/491/75 +f 339/492/75 325/491/75 326/493/75 +f 331/494/75 339/492/75 326/493/75 +f 349/495/75 331/494/75 329/496/75 +f 330/483/75 349/495/75 329/496/75 +f 359/497/75 333/484/75 338/498/75 +f 358/499/75 338/498/75 337/500/75 +f 336/501/75 358/499/75 337/500/75 +f 356/502/75 336/501/75 335/503/75 +f 334/504/75 356/502/75 335/503/75 +f 332/487/75 355/505/75 334/504/75 +f 392/506/74 387/507/74 389/508/74 +f 399/509/76 396/510/76 401/511/76 +f 408/512/74 403/513/74 405/514/74 +f 416/515/77 414/516/77 417/517/77 +f 424/518/77 422/519/77 420/520/77 +f 421/521/76 423/522/76 419/523/76 +f 429/524/76 423/522/76 425/525/76 +f 424/518/77 430/526/77 426/527/77 +f 402/528/76 445/529/76 398/530/76 +f 418/531/77 446/532/77 448/533/77 +f 392/534/77 389/535/77 395/536/77 +f 443/537/78 450/538/78 444/539/78 +f 444/540/77 450/538/77 400/541/77 +f 449/542/76 412/543/76 410/544/76 +f 392/534/79 449/542/79 407/545/79 +f 415/546/76 449/542/76 443/547/76 +f 451/548/74 459/549/74 454/550/74 +f 476/551/77 480/552/77 478/553/77 +f 473/554/76 475/555/76 471/556/76 +f 472/557/77 478/553/77 474/558/77 +f 477/559/76 479/560/76 475/555/76 +f 223/348/74 224/561/74 227/562/74 +f 224/561/74 225/563/74 227/562/74 +f 225/563/74 226/564/74 227/562/74 +f 227/562/74 228/565/74 229/346/74 +f 229/346/74 230/566/74 231/347/74 +f 231/347/74 232/567/74 233/568/74 +f 233/568/74 234/569/74 231/347/74 +f 234/569/74 223/348/74 231/347/74 +f 227/562/74 229/346/74 223/348/74 +f 205/349/74 217/570/74 216/350/74 +f 203/352/74 204/351/74 216/353/74 +f 202/355/74 203/352/74 215/356/74 +f 202/355/74 214/571/74 213/358/74 +f 200/360/74 201/359/74 213/361/74 +f 200/360/74 212/572/74 211/363/74 +f 210/365/74 199/364/74 211/366/74 +f 210/365/74 222/573/74 221/368/74 +f 208/370/74 209/369/74 221/371/74 +f 208/370/74 220/574/74 219/373/74 +f 207/374/74 219/575/74 218/375/74 +f 205/377/74 206/376/74 218/378/74 +f 245/380/75 246/383/75 253/381/75 +f 246/383/75 235/385/75 247/384/75 +f 235/385/75 236/387/75 248/386/75 +f 236/387/75 237/390/75 249/388/75 +f 238/389/75 250/407/75 249/388/75 +f 240/391/75 299/416/75 298/392/75 +f 244/394/75 245/380/75 252/382/75 +f 260/396/74 272/400/74 271/397/74 +f 254/399/74 261/402/74 272/400/74 +f 255/401/74 262/404/74 261/402/74 +f 256/403/74 263/406/74 262/404/74 +f 257/405/74 264/576/74 263/406/74 +f 238/389/75 239/393/75 250/407/75 +f 239/393/75 298/392/75 297/408/75 +f 302/412/75 243/410/75 303/409/75 +f 243/410/75 244/394/75 251/395/75 +f 242/411/75 243/410/75 302/412/75 +f 241/414/75 242/411/75 301/413/75 +f 241/414/75 300/415/75 299/416/75 +f 259/398/74 271/397/74 270/417/74 +f 305/428/74 265/420/74 304/419/74 +f 265/420/74 264/576/74 257/405/74 +f 309/423/74 310/577/74 269/421/74 +f 310/577/74 258/418/74 269/421/74 +f 268/422/74 308/425/74 309/423/74 +f 267/424/74 307/578/74 308/425/74 +f 306/426/74 307/578/74 267/424/74 +f 305/428/74 306/426/74 266/427/74 +f 377/431/75 376/579/75 375/580/75 +f 375/580/75 386/581/75 377/431/75 +f 386/581/75 385/429/75 377/431/75 +f 385/429/75 384/582/75 381/430/75 +f 384/582/75 383/583/75 381/430/75 +f 383/583/75 382/584/75 381/430/75 +f 381/430/75 380/585/75 379/586/75 +f 379/586/75 378/587/75 381/430/75 +f 378/587/75 377/431/75 381/430/75 +f 365/434/75 364/588/75 363/589/75 +f 363/589/75 374/590/75 365/434/75 +f 374/590/75 373/432/75 365/434/75 +f 373/432/75 372/591/75 369/433/75 +f 372/591/75 371/592/75 369/433/75 +f 371/592/75 370/593/75 369/433/75 +f 369/433/75 368/594/75 367/595/75 +f 367/595/75 366/596/75 369/433/75 +f 366/596/75 365/434/75 369/433/75 +f 194/435/74 284/439/74 283/436/74 +f 193/438/74 273/441/74 284/439/74 +f 192/440/74 274/443/74 273/441/74 +f 191/442/74 275/445/74 274/443/74 +f 190/444/74 276/450/74 275/445/74 +f 195/437/74 283/436/74 282/446/74 +f 315/448/74 196/447/74 282/446/74 +f 276/450/74 190/444/74 314/451/74 +f 313/453/74 314/451/74 190/444/74 +f 188/455/74 312/457/74 313/453/74 +f 187/456/74 311/459/74 312/457/74 +f 198/458/74 317/461/74 311/459/74 +f 197/460/74 316/462/74 317/461/74 +f 196/447/74 315/448/74 316/462/74 +f 323/463/74 324/449/74 282/446/74 +f 280/465/74 322/467/74 323/463/74 +f 279/466/74 321/597/74 322/467/74 +f 320/468/74 321/597/74 279/466/74 +f 319/470/74 320/468/74 278/469/74 +f 318/452/74 319/470/74 277/471/74 +f 346/472/75 362/598/75 351/473/75 +f 351/473/75 352/599/75 344/475/75 +f 344/475/75 352/599/75 353/476/75 +f 353/476/75 354/486/75 342/478/75 +f 361/479/75 362/598/75 346/472/75 +f 360/481/75 361/479/75 347/480/75 +f 360/481/75 348/482/75 330/483/75 +f 328/485/75 342/478/75 354/486/75 +f 341/488/75 342/478/75 328/485/75 +f 340/490/75 341/488/75 327/489/75 +f 339/492/75 340/490/75 325/491/75 +f 331/494/75 350/600/75 339/492/75 +f 349/495/75 350/600/75 331/494/75 +f 330/483/75 348/482/75 349/495/75 +f 359/497/75 360/481/75 333/484/75 +f 358/499/75 359/497/75 338/498/75 +f 336/501/75 357/601/75 358/499/75 +f 356/502/75 357/601/75 336/501/75 +f 334/504/75 355/505/75 356/502/75 +f 332/487/75 354/486/75 355/505/75 +f 392/506/74 391/602/74 387/507/74 +f 388/603/76 387/507/76 394/604/76 +f 387/507/76 391/602/76 394/604/76 +f 391/602/76 393/605/76 394/604/76 +f 393/605/76 401/511/76 396/510/76 +f 394/604/76 393/605/76 396/510/76 +f 401/511/76 402/528/76 398/530/76 +f 398/530/76 399/509/76 401/511/76 +f 408/512/74 407/606/74 403/513/74 +f 408/512/77 405/514/77 411/607/77 +f 405/514/77 406/608/77 411/607/77 +f 411/607/77 413/609/77 409/610/77 +f 413/609/77 416/515/77 417/517/77 +f 417/517/77 409/610/77 413/609/77 +f 409/610/77 408/512/77 411/607/77 +f 414/516/77 418/531/77 417/517/77 +f 424/518/77 426/527/77 422/519/77 +f 421/521/76 425/525/76 423/522/76 +f 429/524/76 427/611/76 423/522/76 +f 424/518/77 428/612/77 430/526/77 +f 402/528/76 447/613/76 445/529/76 +f 418/531/77 414/516/77 446/532/77 +f 389/535/77 390/614/77 395/536/77 +f 395/536/77 397/615/77 450/538/77 +f 397/615/77 400/541/77 450/538/77 +f 450/538/77 392/534/77 395/536/77 +f 443/537/78 449/542/78 450/538/78 +f 410/544/76 404/616/76 403/617/76 +f 403/617/76 407/545/76 410/544/76 +f 407/545/76 449/542/76 410/544/76 +f 449/542/76 415/546/76 412/543/76 +f 392/534/79 450/538/79 449/542/79 +f 454/550/74 453/618/74 463/619/74 +f 463/619/74 464/620/74 451/548/74 +f 451/548/74 452/621/74 459/549/74 +f 459/549/74 460/622/74 454/550/74 +f 454/550/74 463/619/74 451/548/74 +f 473/554/76 477/559/76 475/555/76 +f 472/557/77 476/551/77 478/553/77 +s 1 +f 193/623/80 204/351/81 192/624/81 +f 192/624/81 203/352/82 191/625/82 +f 191/625/82 202/355/77 190/626/77 +f 190/626/77 201/359/83 189/627/83 +f 189/627/83 200/360/84 188/628/84 +f 188/628/84 199/364/79 187/629/79 +f 187/629/79 210/365/85 198/630/85 +f 198/630/85 209/369/86 197/631/86 +f 197/631/86 208/370/76 196/632/76 +f 196/632/76 207/374/87 195/633/87 +f 195/633/87 206/376/88 194/634/88 +f 194/634/88 205/377/80 193/635/80 +f 214/636/76 225/637/87 213/638/87 +f 221/639/82 232/640/77 220/641/77 +f 218/642/84 229/643/79 217/644/79 +f 215/645/86 226/646/76 214/636/76 +f 222/647/81 233/648/82 221/639/82 +f 212/649/88 223/650/80 211/651/80 +f 219/652/83 230/653/84 218/642/84 +f 216/654/85 227/655/86 215/645/86 +f 211/651/80 234/656/81 222/647/81 +f 213/638/87 224/657/88 212/649/88 +f 220/641/77 231/658/83 219/652/83 +f 217/659/79 228/660/85 216/654/85 +f 253/661/85 259/662/86 252/663/86 +f 248/664/84 254/665/79 247/666/79 +f 247/666/79 260/667/85 253/661/85 +f 249/668/83 255/669/84 248/664/84 +f 250/670/89 256/671/83 249/668/83 +f 252/663/86 258/672/90 251/673/90 +f 303/674/91 258/672/90 310/675/91 +f 279/676/80 290/677/81 278/678/81 +f 278/678/81 289/679/82 277/680/82 +f 277/680/82 288/681/77 276/682/77 +f 276/682/77 287/683/83 275/684/83 +f 275/684/83 286/685/84 274/686/84 +f 274/686/84 285/687/79 273/688/79 +f 273/688/79 296/689/85 284/690/85 +f 284/690/85 295/691/86 283/692/86 +f 283/692/86 294/693/76 282/694/76 +f 282/694/76 293/695/87 281/696/87 +f 281/696/87 292/697/88 280/698/88 +f 280/698/88 291/699/80 279/700/80 +f 304/701/92 250/670/89 297/702/92 +f 301/703/88 307/704/80 300/705/80 +f 298/706/82 304/701/92 297/702/92 +f 302/707/87 308/708/88 301/703/88 +f 299/709/81 305/710/82 298/706/82 +f 303/674/91 309/711/87 302/707/87 +f 300/712/80 306/713/81 299/709/81 +f 319/714/82 335/715/81 320/716/81 +f 313/717/83 328/718/89 314/719/89 +f 320/716/81 336/720/80 321/721/80 +f 315/722/90 329/723/86 316/724/86 +f 321/725/80 337/726/88 322/727/88 +f 316/724/86 331/728/85 317/729/85 +f 322/727/88 338/730/87 323/731/87 +f 317/729/85 326/732/79 311/733/79 +f 323/731/87 333/734/91 324/735/91 +f 314/719/89 332/736/92 318/737/92 +f 324/735/91 330/738/90 315/722/90 +f 311/733/79 325/739/84 312/740/84 +f 318/737/92 334/741/82 319/714/82 +f 312/740/84 327/742/83 313/717/83 +f 374/743/81 339/744/80 350/745/81 +f 367/746/86 344/747/85 343/748/86 +f 382/749/84 359/750/83 358/751/84 +f 375/752/80 352/753/88 351/754/80 +f 368/755/85 345/756/79 344/747/85 +f 383/757/83 360/758/77 359/750/83 +f 376/759/88 353/760/87 352/753/88 +f 369/761/79 346/762/84 345/763/79 +f 384/764/77 361/765/82 360/758/77 +f 377/766/87 354/767/76 353/760/87 +f 370/768/84 347/769/83 346/762/84 +f 385/770/82 362/771/81 361/765/82 +f 363/772/80 340/773/88 339/744/80 +f 378/774/76 355/775/86 354/767/76 +f 371/776/83 348/777/77 347/769/83 +f 386/778/81 351/754/80 362/771/81 +f 364/779/88 341/780/87 340/773/88 +f 379/781/86 356/782/85 355/775/86 +f 372/783/77 349/784/82 348/777/77 +f 365/785/87 342/786/76 341/780/87 +f 380/787/85 357/788/79 356/782/85 +f 373/789/82 350/745/81 349/784/82 +f 366/790/76 343/748/86 342/786/76 +f 381/791/79 358/751/84 357/792/79 +f 390/793/93 387/507/79 388/603/93 +f 394/794/93 390/793/93 388/603/93 +f 396/795/94 395/796/93 394/794/93 +f 399/797/95 397/798/94 396/795/94 +f 407/799/96 393/800/97 392/801/96 +f 406/608/93 403/802/79 404/803/93 +f 410/804/93 406/608/93 404/803/93 +f 412/805/94 411/806/93 410/804/93 +f 415/807/95 413/808/94 412/805/94 +f 414/809/95 443/810/98 446/811/99 +f 401/812/100 441/813/101 402/814/100 +f 423/815/102 428/816/103 424/817/102 +f 426/527/104 429/818/105 425/525/104 +f 430/819/105 427/820/103 429/818/105 +f 435/821/80 423/522/102 424/822/102 +f 426/527/104 425/525/104 438/823/79 +f 442/824/101 417/825/100 418/826/100 +f 401/812/100 393/800/97 439/827/101 +f 399/797/95 444/828/98 400/829/95 +f 443/810/98 416/830/95 415/807/95 +f 443/810/98 445/831/99 446/811/99 +f 402/814/100 441/813/101 447/613/106 +f 445/831/99 444/828/98 398/832/95 +f 441/813/101 448/833/106 447/613/106 +f 448/833/106 442/824/101 418/826/100 +f 458/834/107 467/835/108 455/836/109 +f 454/550/110 455/836/109 453/618/111 +f 451/837/112 457/838/113 452/839/114 +f 458/834/107 460/840/115 462/841/116 +f 455/836/109 463/842/117 453/618/111 +f 459/843/118 462/841/116 460/840/115 +f 466/844/119 467/845/108 468/846/120 +f 452/839/114 461/847/121 459/843/118 +f 464/848/122 465/849/123 466/844/119 +f 451/850/112 466/844/119 456/851/124 +f 465/849/123 455/836/109 467/845/108 +f 467/835/108 469/852/125 468/853/120 +f 456/854/124 469/852/125 457/855/113 +f 468/846/120 456/851/124 466/844/119 +f 461/847/121 470/856/126 462/841/116 +f 458/834/107 462/841/116 470/856/126 +f 457/838/113 469/857/125 461/847/121 +f 474/558/74 477/559/127 473/554/74 +f 471/858/75 476/551/128 472/557/75 +f 478/553/127 479/560/129 477/559/127 +f 475/859/128 480/860/130 476/551/128 +f 440/861/101 409/862/97 417/825/100 +f 393/800/97 440/861/101 439/827/101 +f 409/862/97 407/799/96 408/863/96 +f 393/800/97 391/864/96 392/801/96 +f 193/623/80 205/349/80 204/351/81 +f 192/624/81 204/351/81 203/352/82 +f 191/625/82 203/352/82 202/355/77 +f 190/626/77 202/355/77 201/359/83 +f 189/627/83 201/359/83 200/360/84 +f 188/628/84 200/360/84 199/364/79 +f 187/629/79 199/364/79 210/365/85 +f 198/630/85 210/365/85 209/369/86 +f 197/631/86 209/369/86 208/370/76 +f 196/632/76 208/370/76 207/374/87 +f 195/633/87 207/374/87 206/376/88 +f 194/634/88 206/376/88 205/377/80 +f 214/636/76 226/646/76 225/637/87 +f 221/639/82 233/648/82 232/640/77 +f 218/642/84 230/653/84 229/643/79 +f 215/645/86 227/655/86 226/646/76 +f 222/647/81 234/656/81 233/648/82 +f 212/649/88 224/657/88 223/650/80 +f 219/652/83 231/658/83 230/653/84 +f 216/654/85 228/660/85 227/655/86 +f 211/651/80 223/650/80 234/656/81 +f 213/638/87 225/637/87 224/657/88 +f 220/641/77 232/640/77 231/658/83 +f 217/659/79 229/865/79 228/660/85 +f 253/661/85 260/667/85 259/662/86 +f 248/664/84 255/669/84 254/665/79 +f 247/666/79 254/665/79 260/667/85 +f 249/668/83 256/671/83 255/669/84 +f 250/670/89 257/866/89 256/671/83 +f 252/663/86 259/662/86 258/672/90 +f 303/674/91 251/673/90 258/672/90 +f 279/676/80 291/867/80 290/677/81 +f 278/678/81 290/677/81 289/679/82 +f 277/680/82 289/679/82 288/681/77 +f 276/682/77 288/681/77 287/683/83 +f 275/684/83 287/683/83 286/685/84 +f 274/686/84 286/685/84 285/687/79 +f 273/688/79 285/687/79 296/689/85 +f 284/690/85 296/689/85 295/691/86 +f 283/692/86 295/691/86 294/693/76 +f 282/694/76 294/693/76 293/695/87 +f 281/696/87 293/695/87 292/697/88 +f 280/698/88 292/697/88 291/699/80 +f 304/701/92 257/866/89 250/670/89 +f 301/703/88 308/708/88 307/704/80 +f 298/706/82 305/710/82 304/701/92 +f 302/707/87 309/711/87 308/708/88 +f 299/709/81 306/713/81 305/710/82 +f 303/674/91 310/675/91 309/711/87 +f 300/712/80 307/868/80 306/713/81 +f 319/714/82 334/741/82 335/715/81 +f 313/717/83 327/742/83 328/718/89 +f 320/716/81 335/715/81 336/720/80 +f 315/722/90 330/738/90 329/723/86 +f 321/725/80 336/869/80 337/726/88 +f 316/724/86 329/723/86 331/728/85 +f 322/727/88 337/726/88 338/730/87 +f 317/729/85 331/728/85 326/732/79 +f 323/731/87 338/730/87 333/734/91 +f 314/719/89 328/718/89 332/736/92 +f 324/735/91 333/734/91 330/738/90 +f 311/733/79 326/732/79 325/739/84 +f 318/737/92 332/736/92 334/741/82 +f 312/740/84 325/739/84 327/742/83 +f 374/743/81 363/772/80 339/744/80 +f 367/746/86 368/755/85 344/747/85 +f 382/749/84 383/757/83 359/750/83 +f 375/752/80 376/759/88 352/753/88 +f 368/755/85 369/870/79 345/756/79 +f 383/757/83 384/764/77 360/758/77 +f 376/759/88 377/766/87 353/760/87 +f 369/761/79 370/768/84 346/762/84 +f 384/764/77 385/770/82 361/765/82 +f 377/766/87 378/774/76 354/767/76 +f 370/768/84 371/776/83 347/769/83 +f 385/770/82 386/778/81 362/771/81 +f 363/772/80 364/779/88 340/773/88 +f 378/774/76 379/781/86 355/775/86 +f 371/776/83 372/783/77 348/777/77 +f 386/778/81 375/752/80 351/754/80 +f 364/779/88 365/785/87 341/780/87 +f 379/781/86 380/787/85 356/782/85 +f 372/783/77 373/789/82 349/784/82 +f 365/785/87 366/790/76 342/786/76 +f 380/787/85 381/871/79 357/788/79 +f 373/789/82 374/743/81 350/745/81 +f 366/790/76 367/746/86 343/748/86 +f 381/791/79 382/749/84 358/751/84 +f 390/793/93 389/872/79 387/507/79 +f 394/794/93 395/796/93 390/793/93 +f 396/795/94 397/798/94 395/796/93 +f 399/797/95 400/829/95 397/798/94 +f 407/799/96 409/862/97 393/800/97 +f 406/608/93 405/514/79 403/802/79 +f 410/804/93 411/806/93 406/608/93 +f 412/805/94 413/808/94 411/806/93 +f 415/807/95 416/830/95 413/808/94 +f 401/812/100 439/827/101 441/813/101 +f 423/815/102 427/820/103 428/816/103 +f 426/527/104 430/819/105 429/818/105 +f 430/819/105 428/816/103 427/820/103 +f 424/822/102 420/873/80 437/874/80 +f 420/873/80 433/875/80 437/874/80 +f 431/876/80 419/523/80 435/821/80 +f 419/523/80 423/522/102 435/821/80 +f 424/822/102 437/874/80 435/821/80 +f 425/525/104 421/521/79 436/877/79 +f 421/521/79 432/878/79 436/877/79 +f 434/879/79 422/519/79 438/823/79 +f 422/519/79 426/527/104 438/823/79 +f 425/525/104 436/877/79 438/823/79 +f 442/824/101 440/861/101 417/825/100 +f 399/797/95 398/832/95 444/828/98 +f 443/810/98 414/809/95 416/830/95 +f 443/810/98 444/828/98 445/831/99 +f 441/813/101 442/824/101 448/833/106 +f 458/834/107 470/880/126 467/835/108 +f 454/550/110 458/834/107 455/836/109 +f 451/837/112 456/881/124 457/838/113 +f 458/834/107 454/550/110 460/840/115 +f 455/836/109 465/849/123 463/842/117 +f 459/843/118 461/847/121 462/841/116 +f 466/844/119 465/849/123 467/845/108 +f 452/839/114 457/838/113 461/847/121 +f 464/848/122 463/842/117 465/849/123 +f 451/850/112 464/848/122 466/844/119 +f 467/835/108 470/880/126 469/852/125 +f 456/854/124 468/853/120 469/852/125 +f 461/847/121 469/857/125 470/856/126 +f 474/558/74 478/553/127 477/559/127 +f 471/858/75 475/859/128 476/551/128 +f 478/553/127 480/552/129 479/560/129 +f 475/859/128 479/882/130 480/860/130 +f 393/800/97 409/862/97 440/861/101 diff --git a/src/main/resources/assets/hbm/models/weapons/maresleg_mk2.obj b/src/main/resources/assets/hbm/models/weapons/maresleg_mk2.obj new file mode 100644 index 000000000..420992dda --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/maresleg_mk2.obj @@ -0,0 +1,2314 @@ +# Blender v2.79 (sub 0) OBJ File: 'maresleg.blend' +# www.blender.org +o Circle +v 0.000000 1.187500 8.000000 +v -0.093750 1.162380 8.000000 +v -0.162380 1.093750 8.000000 +v -0.187500 1.000000 8.000000 +v -0.162380 0.906250 8.000000 +v -0.093750 0.837620 8.000000 +v 0.000000 0.812500 8.000000 +v 0.093750 0.837620 8.000000 +v 0.162380 0.906250 8.000000 +v 0.187500 1.000000 8.000000 +v 0.162380 1.093750 8.000000 +v 0.093750 1.162380 8.000000 +v 0.000000 1.187500 -2.000000 +v -0.093750 1.162380 -2.000000 +v -0.162380 1.093750 -2.000000 +v -0.187500 1.000000 -2.000000 +v -0.162380 0.906250 -2.000000 +v -0.093750 0.837620 -2.000000 +v 0.000000 0.812500 -2.000000 +v 0.093750 0.837620 -2.000000 +v 0.162380 0.906250 -2.000000 +v 0.187500 1.000000 -2.000000 +v 0.162380 1.093750 -2.000000 +v 0.093750 1.162380 -2.000000 +v 0.000000 1.187500 3.750000 +v -0.093750 1.162380 3.750000 +v -0.162380 1.093750 3.750000 +v -0.187500 1.000000 3.750000 +v -0.162380 0.906250 3.750000 +v -0.093750 0.837620 3.750000 +v 0.000000 0.812500 3.750000 +v 0.093750 0.837620 3.750000 +v 0.162380 0.906250 3.750000 +v 0.187500 1.000000 3.750000 +v 0.162380 1.093750 3.750000 +v 0.093750 1.162380 3.750000 +v 0.000000 1.187500 3.750000 +v -0.093750 1.162380 3.750000 +v -0.162380 1.093750 3.750000 +v -0.187500 1.000000 3.750000 +v -0.162380 0.906250 3.750000 +v -0.093750 0.837620 3.750000 +v 0.000000 0.812500 3.750000 +v 0.093750 0.837620 3.750000 +v 0.162380 0.906250 3.750000 +v 0.187500 1.000000 3.750000 +v 0.162380 1.093750 3.750000 +v 0.093750 1.162380 3.750000 +v 0.000000 1.125000 8.000000 +v -0.062500 1.108253 8.000000 +v -0.108253 1.062500 8.000000 +v -0.125000 1.000000 8.000000 +v -0.108253 0.937500 8.000000 +v -0.062500 0.891747 8.000000 +v 0.000000 0.875000 8.000000 +v 0.062500 0.891747 8.000000 +v 0.108253 0.937500 8.000000 +v 0.125000 1.000000 8.000000 +v 0.108253 1.062500 8.000000 +v 0.062500 1.108253 8.000000 +v 0.000000 1.125000 7.000000 +v -0.062500 1.108253 7.000000 +v -0.108253 1.062500 7.000000 +v -0.125000 1.000000 7.000000 +v -0.108253 0.937500 7.000000 +v -0.062500 0.891747 7.000000 +v 0.000000 0.875000 7.000000 +v 0.062500 0.891747 7.000000 +v 0.108253 0.937500 7.000000 +v 0.125000 1.000000 7.000000 +v 0.108253 1.062500 7.000000 +v 0.062500 1.108253 7.000000 +v 0.000000 1.125000 3.750000 +v -0.062500 1.108253 3.750000 +v -0.108253 1.062500 3.750000 +v -0.125000 1.000000 3.750000 +v -0.108253 0.937500 3.750000 +v -0.062500 0.891747 3.750000 +v 0.000000 0.875000 3.750000 +v 0.062500 0.891747 3.750000 +v 0.108253 0.937500 3.750000 +v 0.125000 1.000000 3.750000 +v 0.108253 1.062500 3.750000 +v 0.062500 1.108253 3.750000 +v 0.000000 1.125000 2.750000 +v -0.062500 1.108253 2.750000 +v -0.108253 1.062500 2.750000 +v -0.125000 1.000000 2.750000 +v -0.108253 0.937500 2.750000 +v -0.062500 0.891747 2.750000 +v 0.000000 0.875000 2.750000 +v 0.062500 0.891747 2.750000 +v 0.108253 0.937500 2.750000 +v 0.125000 1.000000 2.750000 +v 0.108253 1.062500 2.750000 +v 0.062500 1.108253 2.750000 +v 0.000000 1.187500 3.000000 +v -0.093750 1.162380 3.000000 +v -0.162380 1.093750 3.000000 +v -0.187500 1.000000 3.000000 +v -0.162380 0.906250 3.000000 +v -0.093750 0.837620 3.000000 +v 0.000000 0.812500 3.000000 +v 0.093750 0.837620 3.000000 +v 0.162380 0.906250 3.000000 +v 0.187500 1.000000 3.000000 +v 0.162380 1.093750 3.000000 +v 0.093750 1.162380 3.000000 +v 0.000000 1.250000 3.000000 +v -0.125000 1.216506 3.000000 +v -0.216506 1.125000 3.000000 +v -0.250000 1.000000 3.000000 +v 0.250000 1.000000 3.000000 +v 0.216506 1.125000 3.000000 +v 0.125000 1.216506 3.000000 +v 0.000000 1.250000 3.250000 +v -0.125000 1.216506 3.250000 +v -0.216506 1.125000 3.250000 +v -0.250000 1.000000 3.250000 +v 0.250000 1.000000 3.250000 +v 0.216506 1.125000 3.250000 +v 0.125000 1.216506 3.250000 +v 0.000000 1.187500 3.250000 +v -0.093750 1.162380 3.250000 +v -0.162380 1.093750 3.250000 +v -0.187500 1.000000 3.250000 +v -0.162380 0.906250 3.250000 +v -0.093750 0.837620 3.250000 +v 0.000000 0.812500 3.250000 +v 0.093750 0.837620 3.250000 +v 0.162380 0.906250 3.250000 +v 0.187500 1.000000 3.250000 +v 0.162380 1.093750 3.250000 +v 0.093750 1.162380 3.250000 +v 0.000000 0.750000 -2.000000 +v -0.093750 0.724880 -2.000000 +v -0.162380 0.656250 -2.000000 +v -0.187500 0.562500 -2.000000 +v -0.162380 0.468750 -2.000000 +v -0.093750 0.400120 -2.000000 +v 0.000000 0.375000 -2.000000 +v 0.093750 0.400120 -2.000000 +v 0.162380 0.468750 -2.000000 +v 0.187500 0.562500 -2.000000 +v 0.162380 0.656250 -2.000000 +v 0.093750 0.724880 -2.000000 +v 0.000000 0.750000 3.000000 +v -0.093750 0.724880 3.000000 +v -0.162380 0.656250 3.000000 +v -0.187500 0.562500 3.000000 +v -0.162380 0.468750 3.000000 +v -0.093750 0.400120 3.000000 +v 0.000000 0.375000 3.000000 +v 0.093750 0.400120 3.000000 +v 0.162380 0.468750 3.000000 +v 0.187500 0.562500 3.000000 +v 0.162380 0.656250 3.000000 +v 0.093750 0.724880 3.000000 +v -0.250000 0.562500 3.000000 +v -0.216506 0.437500 3.000000 +v -0.125000 0.345994 3.000000 +v 0.000000 0.312500 3.000000 +v 0.125000 0.345994 3.000000 +v 0.216506 0.437500 3.000000 +v 0.250000 0.562500 3.000000 +v -0.250000 0.562500 3.250000 +v -0.216506 0.437500 3.250000 +v -0.125000 0.345994 3.250000 +v 0.000000 0.312500 3.250000 +v 0.125000 0.345994 3.250000 +v 0.216506 0.437500 3.250000 +v 0.250000 0.562500 3.250000 +v 0.000000 1.250000 -2.000000 +v -0.125000 1.216506 -2.000000 +v -0.216506 1.125000 -2.000000 +v -0.250000 1.000000 -2.000000 +v 0.250000 1.000000 -2.000000 +v 0.216506 1.125000 -2.000000 +v 0.125000 1.216506 -2.000000 +v -0.250000 0.562500 -2.000000 +v -0.216506 0.437500 -2.000000 +v -0.125000 0.345994 -2.000000 +v 0.000000 0.312500 -2.000000 +v 0.125000 0.345994 -2.000000 +v 0.216506 0.437500 -2.000000 +v 0.250000 0.562500 -2.000000 +v -0.125000 1.216506 -2.375000 +v 0.000000 1.250000 -2.375000 +v -0.216506 1.125000 -2.375000 +v -0.250000 1.000000 -2.375000 +v 0.216506 1.125000 -2.375000 +v 0.250000 1.000000 -2.375000 +v 0.125000 1.216506 -2.375000 +v -0.250000 0.562500 -2.375000 +v 0.250000 0.562500 -2.375000 +v -0.216506 0.437500 -2.375000 +v -0.125000 0.345994 -2.375000 +v 0.000000 0.312500 -2.375000 +v 0.125000 0.345994 -2.375000 +v 0.216506 0.437500 -2.375000 +v 0.000000 1.125000 -2.375000 +v -0.062500 1.108253 -2.375000 +v -0.108253 1.062500 -2.375000 +v -0.125000 1.000000 -2.375000 +v -0.108253 0.937500 -2.375000 +v -0.062500 0.891747 -2.375000 +v 0.000000 0.875000 -2.375000 +v 0.062500 0.891747 -2.375000 +v 0.108253 0.937500 -2.375000 +v 0.125000 1.000000 -2.375000 +v 0.108253 1.062500 -2.375000 +v 0.062500 1.108253 -2.375000 +v 0.000000 0.687500 -2.375000 +v -0.062500 0.670753 -2.375000 +v -0.108253 0.625000 -2.375000 +v -0.125000 0.562500 -2.375000 +v -0.108253 0.500000 -2.375000 +v -0.062500 0.454247 -2.375000 +v 0.000000 0.437500 -2.375000 +v 0.062500 0.454247 -2.375000 +v 0.108253 0.500000 -2.375000 +v 0.125000 0.562500 -2.375000 +v 0.108253 0.625000 -2.375000 +v 0.062500 0.670753 -2.375000 +v 0.000000 1.125000 -1.375000 +v -0.062500 1.108253 -1.375000 +v -0.108253 1.062500 -1.375000 +v -0.125000 1.000000 -1.375000 +v -0.108253 0.937500 -1.375000 +v -0.062500 0.891747 -1.375000 +v 0.000000 0.875000 -1.375000 +v 0.062500 0.891747 -1.375000 +v 0.108253 0.937500 -1.375000 +v 0.125000 1.000000 -1.375000 +v 0.108253 1.062500 -1.375000 +v 0.062500 1.108253 -1.375000 +v 0.000000 0.687500 -1.375000 +v -0.062500 0.670753 -1.375000 +v -0.108253 0.625000 -1.375000 +v -0.125000 0.562500 -1.375000 +v -0.108253 0.500000 -1.375000 +v -0.062500 0.454247 -1.375000 +v 0.000000 0.437500 -1.375000 +v 0.062500 0.454247 -1.375000 +v 0.108253 0.500000 -1.375000 +v 0.125000 0.562500 -1.375000 +v 0.108253 0.625000 -1.375000 +v 0.062500 0.670753 -1.375000 +v 0.312500 1.125000 -2.125000 +v 0.312500 1.125000 -2.500000 +v 0.187500 1.125000 -2.125000 +v 0.187500 1.125000 -2.500000 +v 0.312500 0.437500 -2.125000 +v 0.187500 0.437500 -2.125000 +v 0.312500 0.187500 -2.375000 +v 0.312500 1.000000 -2.625000 +v 0.187500 1.000000 -2.625000 +v 0.312500 1.000000 -3.000000 +v 0.187500 1.000000 -3.000000 +v 0.312500 0.562500 -3.750000 +v 0.312500 0.875000 -3.375000 +v 0.187500 0.875000 -3.375000 +v 0.312500 -0.062500 -2.875000 +v 0.312500 -0.062500 -3.875000 +v -0.187500 1.125000 -2.125000 +v -0.187500 1.125000 -2.500000 +v -0.312500 1.125000 -2.125000 +v -0.312500 1.125000 -2.500000 +v -0.187500 0.437500 -2.125000 +v -0.312500 0.437500 -2.125000 +v -0.312500 0.187500 -2.375000 +v -0.187500 1.000000 -2.625000 +v -0.312500 1.000000 -2.625000 +v -0.187500 1.000000 -3.000000 +v -0.312500 1.000000 -3.000000 +v -0.312500 0.562500 -3.750000 +v -0.187500 0.875000 -3.375000 +v -0.312500 0.875000 -3.375000 +v -0.312500 -0.062500 -2.875000 +v -0.312500 -0.062500 -3.875000 +v -0.187500 0.769607 -3.582107 +v -0.187500 0.445183 -3.798880 +v 0.250000 0.562500 -2.000000 +v -0.250000 0.562500 -2.000000 +v 0.250000 1.000000 -2.000000 +v -0.250000 1.000000 -2.000000 +v 0.250000 0.562500 1.625000 +v -0.250000 0.562500 1.625000 +v 0.250000 1.000000 1.625000 +v -0.250000 1.000000 1.625000 +v 0.250000 0.687500 1.750000 +v -0.250000 0.687500 1.750000 +v 0.250000 0.874000 1.750000 +v -0.250000 0.874000 1.750000 +v 0.187500 0.562500 -2.000000 +v 0.187500 1.000000 -2.000000 +v -0.187500 0.562500 -2.000000 +v -0.187500 1.000000 -2.000000 +v 0.187500 0.562500 -1.375000 +v 0.187500 1.000000 -1.375000 +v -0.187500 0.562500 -1.375000 +v -0.187500 1.000000 -1.375000 +v 0.187500 1.187500 -2.375000 +v -0.187500 1.187500 -2.375000 +v 0.187500 0.437500 -2.375000 +v -0.187500 0.437500 -2.375000 +v -0.187500 0.437500 -2.875000 +v 0.187500 0.437500 -2.875000 +v -0.187500 1.187500 -2.500000 +v 0.187500 1.187500 -2.500000 +v -0.187500 -0.062500 -2.875000 +v 0.187500 -0.062500 -2.875000 +v 0.187500 -0.062500 -2.875000 +v -0.187500 -0.062500 -2.875000 +v -0.187500 0.062500 -3.875000 +v 0.187500 -0.062500 -3.875000 +v -0.187500 -0.062500 -3.875000 +v -0.187500 0.562500 -3.750000 +v 0.187500 0.562500 -3.750000 +v 0.187500 0.062500 -3.875000 +v 0.187500 0.445183 -3.798880 +v 0.187500 0.769607 -3.582107 +v 0.187500 0.986380 -3.257684 +v 0.187500 1.062500 -2.875000 +v -0.187500 0.986380 -3.257684 +v -0.187500 1.062500 -2.875000 +v 0.187500 -0.062500 -3.875000 +v -0.187500 -0.062500 -3.875000 +v -0.187500 1.062500 -2.625000 +v 0.187500 1.062500 -2.625000 +v 0.312500 0.437500 -4.125000 +v -0.312500 0.437500 -4.125000 +v 0.312500 -0.187500 -4.125000 +v -0.312500 -0.187500 -4.125000 +v -0.187500 0.437500 -3.500000 +v 0.187500 0.437500 -3.500000 +v -0.250000 -0.250000 -4.125000 +v 0.250000 -0.250000 -4.125000 +v -0.250000 0.500000 -4.125000 +v 0.250000 0.500000 -4.125000 +v -0.250000 -0.250000 -5.625000 +v -0.250000 -1.000000 -5.250000 +v 0.250000 -1.000000 -5.250000 +v 0.250000 -0.250000 -5.625000 +v 0.375000 -0.125000 -4.125000 +v 0.375000 0.375000 -4.125000 +v 0.375000 -0.875000 -5.312500 +v 0.375000 -0.375000 -5.562500 +v -0.375000 0.375000 -4.125000 +v -0.375000 -0.125000 -4.125000 +v -0.375000 -0.375000 -5.562500 +v -0.375000 -0.875000 -5.312500 +v -0.250000 -0.500000 -5.750000 +v -0.250000 -1.000000 -5.500000 +v 0.250000 -1.000000 -5.500000 +v 0.250000 -0.500000 -5.750000 +v -0.375000 -0.375000 -5.562500 +v -0.375000 -0.625000 -5.437500 +v -0.375000 -1.375000 -8.000000 +v -0.375000 0.000000 -5.562500 +v -0.375000 -0.125000 -8.000000 +v 0.375000 -0.375000 -5.562500 +v 0.375000 -0.625000 -5.437500 +v 0.375000 -1.375000 -8.000000 +v 0.375000 0.000000 -5.562500 +v 0.375000 -0.125000 -8.000000 +v 0.250000 0.000000 -8.000000 +v -0.250000 0.000000 -8.000000 +v -0.250000 -1.500000 -8.000000 +v 0.250000 -1.500000 -8.000000 +v 0.250000 -0.750000 -5.375000 +v -0.250000 -0.750000 -5.375000 +v 0.250000 0.125000 -5.562500 +v -0.250000 0.125000 -5.562500 +v 0.125000 -0.062500 -3.750000 +v -0.125000 -0.062500 -3.750000 +v -0.125000 -0.062500 -3.625000 +v 0.125000 -0.062500 -3.625000 +v 0.125000 -0.812500 -4.875000 +v -0.125000 -0.812500 -4.875000 +v 0.125000 -1.062500 -4.875000 +v -0.125000 -1.062500 -4.875000 +v 0.125000 -1.187500 -4.750000 +v -0.125000 -1.187500 -4.750000 +v 0.125000 -1.187500 -4.500000 +v -0.125000 -1.187500 -4.500000 +v 0.125000 -0.687500 -3.750000 +v -0.125000 -0.687500 -3.750000 +v 0.125000 -0.437500 -3.750000 +v -0.125000 -0.437500 -3.750000 +v 0.125000 -0.437500 -3.250000 +v -0.125000 -0.437500 -3.250000 +v 0.125000 -0.187500 -3.000000 +v -0.125000 -0.187500 -3.000000 +v 0.125000 -0.062500 -3.000000 +v -0.125000 -0.062500 -3.000000 +v 0.125000 -0.187500 -3.062500 +v -0.125000 -0.187500 -3.062500 +v 0.125000 -0.062500 -3.062500 +v -0.125000 -0.062500 -3.062500 +v 0.125000 -0.375000 -3.625000 +v -0.125000 -0.375000 -3.625000 +v 0.125000 -0.375000 -3.250000 +v -0.125000 -0.375000 -3.250000 +v 0.125000 -0.250000 -3.812500 +v -0.125000 -0.250000 -3.812500 +v 0.125000 -1.125000 -4.750000 +v -0.125000 -1.125000 -4.750000 +v 0.125000 -1.125000 -4.500000 +v -0.125000 -1.125000 -4.500000 +v 0.125000 -0.812500 -4.812500 +v -0.125000 -0.812500 -4.812500 +v 0.125000 -1.062500 -4.812500 +v -0.125000 -1.062500 -4.812500 +v 0.125000 -0.750000 -3.937500 +v -0.125000 -0.750000 -3.937500 +v 0.125000 -0.500000 -3.937500 +v -0.125000 -0.500000 -3.937500 +v 0.125000 -0.437500 -4.250000 +v -0.125000 -0.437500 -4.250000 +v 0.125000 -0.437500 -4.000000 +v -0.125000 -0.437500 -4.000000 +v 0.062500 -0.062500 -3.562500 +v -0.062500 -0.062500 -3.562500 +v 0.062500 -0.062500 -3.500000 +v -0.062500 -0.062500 -3.500000 +v 0.062500 -0.187500 -3.562500 +v -0.062500 -0.187500 -3.562500 +v 0.062500 -0.187500 -3.500000 +v -0.062500 -0.187500 -3.500000 +v 0.062500 -0.312500 -3.437500 +v -0.062500 -0.312500 -3.437500 +v 0.000000 1.625000 -2.375000 +v -0.062500 1.608253 -2.375000 +v -0.108253 1.562500 -2.375000 +v -0.125000 1.500000 -2.375000 +v -0.108253 1.437500 -2.375000 +v -0.062500 1.391747 -2.375000 +v 0.000000 1.375000 -2.375000 +v 0.062500 1.391747 -2.375000 +v 0.108253 1.437500 -2.375000 +v 0.125000 1.500000 -2.375000 +v 0.108253 1.562500 -2.375000 +v 0.062500 1.608253 -2.375000 +v 0.000000 1.625000 -1.625000 +v -0.062500 1.608253 -1.625000 +v -0.108253 1.562500 -1.625000 +v -0.125000 1.500000 -1.625000 +v -0.108253 1.437500 -1.625000 +v -0.062500 1.391747 -1.625000 +v 0.000000 1.375000 -1.625000 +v 0.062500 1.391747 -1.625000 +v 0.108253 1.437500 -1.625000 +v 0.125000 1.500000 -1.625000 +v 0.108253 1.562500 -1.625000 +v 0.062500 1.608253 -1.625000 +v 0.000000 1.640625 -2.375000 +v -0.070312 1.621785 -2.375000 +v -0.121785 1.570312 -2.375000 +v -0.140625 1.500000 -2.375000 +v -0.121785 1.429688 -2.375000 +v -0.070312 1.378215 -2.375000 +v 0.000000 1.359375 -2.375000 +v 0.070312 1.378215 -2.375000 +v 0.121785 1.429688 -2.375000 +v 0.140625 1.500000 -2.375000 +v 0.121785 1.570312 -2.375000 +v 0.070312 1.621785 -2.375000 +v 0.000000 1.640625 -2.437500 +v -0.070312 1.621785 -2.437500 +v -0.121785 1.570312 -2.437500 +v -0.140625 1.500000 -2.437500 +v -0.121785 1.429688 -2.437500 +v -0.070312 1.378215 -2.437500 +v 0.000000 1.359375 -2.437500 +v 0.070312 1.378215 -2.437500 +v 0.121785 1.429688 -2.437500 +v 0.140625 1.500000 -2.437500 +v 0.121785 1.570312 -2.437500 +v 0.070312 1.621785 -2.437500 +vt 0.004098 0.224299 +vt 0.000000 0.205607 +vt 0.004098 0.205607 +vt 0.004098 -0.000000 +vt 0.000000 0.009346 +vt 0.000000 -0.000000 +vt 0.004098 0.037383 +vt 0.000000 0.018692 +vt 0.004098 0.018692 +vt 0.004098 0.056075 +vt 0.000000 0.037383 +vt 0.000000 0.065421 +vt 0.000000 0.056075 +vt 0.004098 0.093458 +vt 0.000000 0.074766 +vt 0.004098 0.074766 +vt 0.000000 0.102804 +vt 0.000000 0.093458 +vt 0.004098 0.130841 +vt 0.000000 0.112150 +vt 0.004098 0.112150 +vt 0.000000 0.140187 +vt 0.000000 0.130841 +vt 0.004098 0.168224 +vt 0.000000 0.149533 +vt 0.004098 0.149533 +vt 0.000000 0.177570 +vt 0.000000 0.168224 +vt 0.004098 0.186916 +vt 0.000000 0.196262 +vt 0.000000 0.186916 +vt 0.073770 0.224346 +vt 0.080851 0.233668 +vt 0.073770 0.261635 +vt 0.073770 0.336468 +vt 0.080862 0.345804 +vt 0.073770 0.373812 +vt 0.286885 0.224299 +vt 0.282787 0.205607 +vt 0.286885 0.205607 +vt 0.286885 0.186916 +vt 0.282787 0.196262 +vt 0.282787 0.186916 +vt 0.286885 0.168224 +vt 0.282787 0.177570 +vt 0.282787 0.168224 +vt 0.282787 0.149533 +vt 0.286885 0.149533 +vt 0.286885 0.130841 +vt 0.282787 0.140187 +vt 0.282787 0.130841 +vt 0.282787 0.112150 +vt 0.286885 0.112150 +vt 0.286885 0.093458 +vt 0.282787 0.102804 +vt 0.282787 0.093458 +vt 0.282787 0.074766 +vt 0.286885 0.074766 +vt 0.286885 0.056075 +vt 0.282787 0.065421 +vt 0.282787 0.056075 +vt 0.282787 0.037383 +vt 0.286885 0.037383 +vt 0.282787 0.018692 +vt 0.286885 0.018692 +vt 0.286885 0.000000 +vt 0.282787 0.009346 +vt 0.282787 -0.000000 +vt 0.571329 0.341081 +vt 0.573778 0.359421 +vt 0.567782 0.345750 +vt 0.575825 0.351334 +vt 0.581967 0.364425 +vt 0.581967 0.355087 +vt 0.590157 0.359421 +vt 0.588109 0.351334 +vt 0.596152 0.345750 +vt 0.594252 0.327074 +vt 0.592606 0.341081 +vt 0.588109 0.302814 +vt 0.596152 0.243035 +vt 0.592606 0.313068 +vt 0.569683 0.327074 +vt 0.565588 0.327074 +vt 0.557370 0.359421 +vt 0.559819 0.341081 +vt 0.563365 0.345750 +vt 0.549180 0.364425 +vt 0.555323 0.351334 +vt 0.540991 0.359421 +vt 0.549180 0.355087 +vt 0.534996 0.345750 +vt 0.543038 0.351334 +vt 0.532801 0.327074 +vt 0.538542 0.341081 +vt 0.598346 0.327074 +vt 0.598346 0.261711 +vt 0.565588 0.261711 +vt 0.571329 0.313068 +vt 0.575825 0.302814 +vt 0.567782 0.243035 +vt 0.573778 0.229364 +vt 0.581967 0.299061 +vt 0.581967 0.224360 +vt 0.590157 0.229364 +vt 0.561465 0.327074 +vt 0.565560 0.327074 +vt 0.532801 0.261711 +vt 0.538542 0.313068 +vt 0.559819 0.313068 +vt 0.555323 0.302814 +vt 0.563365 0.243035 +vt 0.549180 0.299061 +vt 0.557370 0.229364 +vt 0.540991 0.229364 +vt 0.543038 0.302814 +vt 0.534996 0.243035 +vt 0.476516 0.252326 +vt 0.483607 0.224321 +vt 0.490697 0.252326 +vt 0.476543 0.364441 +vt 0.483607 0.336542 +vt 0.490670 0.364441 +vt 0.620900 0.302820 +vt 0.625399 0.275706 +vt 0.625399 0.313079 +vt 0.614754 0.299064 +vt 0.620900 0.285965 +vt 0.608608 0.302820 +vt 0.614754 0.289721 +vt 0.604109 0.313079 +vt 0.608608 0.285965 +vt 0.602462 0.327095 +vt 0.604109 0.275706 +vt 0.627046 0.261690 +vt 0.627046 0.327095 +vt 0.631143 0.327095 +vt 0.631143 0.261690 +vt 0.602462 0.261690 +vt 0.598365 0.327095 +vt 0.598365 0.261690 +vt 0.600561 0.345781 +vt 0.604109 0.341110 +vt 0.608608 0.351370 +vt 0.614754 0.355125 +vt 0.606559 0.359461 +vt 0.620900 0.351370 +vt 0.614754 0.364468 +vt 0.625399 0.341110 +vt 0.622949 0.359461 +vt 0.628948 0.345781 +vt 0.628948 0.243004 +vt 0.625399 0.247675 +vt 0.620900 0.237416 +vt 0.614754 0.233660 +vt 0.622949 0.229324 +vt 0.606559 0.229324 +vt 0.608608 0.237416 +vt 0.600561 0.243004 +vt 0.604109 0.247675 +vt 0.643444 0.310911 +vt 0.647541 0.280377 +vt 0.647541 0.308408 +vt 0.651638 0.310911 +vt 0.654638 0.271034 +vt 0.654638 0.317751 +vt 0.655736 0.327095 +vt 0.640444 0.271034 +vt 0.640444 0.317751 +vt 0.639346 0.261690 +vt 0.639346 0.327095 +vt 0.631152 0.327095 +vt 0.631152 0.261690 +vt 0.663930 0.327095 +vt 0.655736 0.261690 +vt 0.663930 0.261690 +vt 0.654638 0.336438 +vt 0.661735 0.345781 +vt 0.651638 0.343278 +vt 0.655736 0.359461 +vt 0.647541 0.345781 +vt 0.647541 0.364468 +vt 0.639346 0.359461 +vt 0.640444 0.336438 +vt 0.633347 0.345781 +vt 0.640444 0.252347 +vt 0.633347 0.243004 +vt 0.643444 0.245507 +vt 0.639346 0.229324 +vt 0.647541 0.224317 +vt 0.651638 0.245507 +vt 0.655736 0.229324 +vt 0.661735 0.243004 +vt 0.654638 0.252347 +vt 0.713115 0.186916 +vt 0.721311 0.289720 +vt 0.713115 0.289720 +vt 0.803279 0.252336 +vt 0.778689 0.271028 +vt 0.770492 0.112150 +vt 0.721311 0.485981 +vt 0.713115 0.383178 +vt 0.721311 0.383178 +vt 0.803279 0.420561 +vt 0.827869 0.467290 +vt 0.770492 0.560748 +vt 0.975410 0.317757 +vt 0.909836 0.261682 +vt 0.975410 0.261682 +vt 0.028689 0.728972 +vt 0.266393 0.663551 +vt 0.266393 0.728972 +vt 0.266393 0.588785 +vt 0.028689 0.523364 +vt 0.266393 0.523364 +vt 0.020492 0.570093 +vt 0.028689 0.588785 +vt 0.020492 0.682243 +vt 0.028689 0.663551 +vt 0.852459 0.504673 +vt 0.877049 0.392523 +vt 0.877049 0.504673 +vt 0.975410 0.635514 +vt 1.000000 0.616822 +vt 1.000000 0.635514 +vt 0.975410 0.598131 +vt 1.000000 0.598131 +vt 0.852459 0.392523 +vt 0.877049 0.317757 +vt 0.836066 0.112150 +vt 0.852459 0.186916 +vt 0.827869 0.205607 +vt 0.836066 0.560748 +vt 0.852459 0.485981 +vt 0.852459 0.579439 +vt 0.852459 0.102804 +vt 0.852459 0.000000 +vt 0.885246 0.018692 +vt 0.959016 0.158879 +vt 0.942623 0.102804 +vt 0.959016 0.102804 +vt 0.959016 0.084112 +vt 0.934426 0.037383 +vt 0.942623 0.158879 +vt 0.909836 0.242991 +vt 0.885246 0.242991 +vt 0.852459 0.158879 +vt 0.885246 0.392523 +vt 0.909836 0.317757 +vt 0.909836 0.392523 +vt 0.934426 0.224299 +vt 0.959016 0.177570 +vt 0.893443 0.485981 +vt 0.909836 0.392523 +vt 0.877049 0.392523 +vt 0.893443 0.485981 +vt 0.885246 0.504673 +vt 0.934942 0.474589 +vt 0.956208 0.442187 +vt 0.970412 0.393687 +vt 0.266393 0.738318 +vt 0.274590 0.644860 +vt 0.315574 0.663551 +vt 0.803279 0.803738 +vt 0.721311 0.803738 +vt 0.803279 0.691589 +vt 0.520492 0.691589 +vt 0.520492 0.803738 +vt 0.495902 0.710280 +vt 0.545082 0.691589 +vt 0.553279 0.710280 +vt 0.336066 0.878505 +vt 0.344262 0.887850 +vt 0.336066 0.887850 +vt 0.344262 0.934579 +vt 0.336066 0.925234 +vt 0.344262 0.925234 +vt 0.368852 0.887850 +vt 0.393443 0.878505 +vt 0.401639 0.887850 +vt 0.393443 0.934579 +vt 0.368852 0.925234 +vt 0.401639 0.925234 +vt 0.364754 0.878505 +vt 0.364754 0.934579 +vt 0.241803 0.738318 +vt 0.258197 0.728972 +vt 0.241803 0.728972 +vt 0.258197 0.738318 +vt 0.241803 0.728972 +vt 0.258197 0.728972 +vt 0.262295 0.747664 +vt 0.266393 0.785047 +vt 0.266393 0.747664 +vt 0.262295 0.785047 +vt 0.266393 0.747664 +vt 0.266393 0.785047 +vt 0.262295 0.747664 +vt 0.204918 0.794393 +vt 0.192623 0.803738 +vt 0.204918 0.831776 +vt 0.204918 0.794393 +vt 0.192623 0.803738 +vt 0.204918 0.831776 +vt 0.192623 0.841121 +vt 0.196721 0.869159 +vt 0.209016 0.841121 +vt 0.209016 0.841121 +vt 0.196721 0.869159 +vt 0.225410 0.841121 +vt 0.192623 0.897196 +vt 0.225410 0.841121 +vt 0.168033 0.785047 +vt 0.172131 0.766355 +vt 0.172131 0.785047 +vt 0.180328 0.803738 +vt 0.184426 0.785047 +vt 0.184426 0.803738 +vt 0.168033 0.803738 +vt 0.172131 0.803738 +vt 0.180328 0.785047 +vt 0.180328 0.766355 +vt 0.778689 0.803764 +vt 0.785777 0.813097 +vt 0.778689 0.841096 +vt 0.762295 0.878505 +vt 0.766393 0.869159 +vt 0.766393 0.878505 +vt 0.762295 0.822430 +vt 0.766393 0.831776 +vt 0.762295 0.831776 +vt 0.762295 0.906542 +vt 0.766393 0.915888 +vt 0.762295 0.915888 +vt 0.766393 0.887850 +vt 0.762295 0.887850 +vt 0.762295 0.841121 +vt 0.766393 0.841121 +vt 0.762295 0.813084 +vt 0.766393 0.803738 +vt 0.766393 0.813084 +vt 0.762295 0.897196 +vt 0.766393 0.897196 +vt 0.766393 0.850467 +vt 0.762295 0.850467 +vt 0.762295 0.859813 +vt 0.762295 0.869159 +vt 0.766393 0.822430 +vt 0.766393 0.906542 +vt 0.766393 0.859813 +vt 0.787992 0.831765 +vt 0.795082 0.803760 +vt 0.802173 0.831765 +vt 0.000000 0.214953 +vt 0.000000 0.028037 +vt 0.000000 0.046729 +vt 0.000000 0.084112 +vt 0.000000 0.121495 +vt 0.000000 0.158879 +vt 0.069682 0.259137 +vt 0.066690 0.233668 +vt 0.066690 0.252313 +vt 0.065594 0.242991 +vt 0.069682 0.226844 +vt 0.077859 0.226844 +vt 0.081947 0.242991 +vt 0.080851 0.252313 +vt 0.077858 0.259137 +vt 0.069676 0.371311 +vt 0.066679 0.345804 +vt 0.066679 0.364476 +vt 0.065582 0.355140 +vt 0.069676 0.338970 +vt 0.077865 0.338970 +vt 0.081959 0.355140 +vt 0.080862 0.364476 +vt 0.077865 0.371311 +vt 0.282787 0.214953 +vt 0.282787 0.158879 +vt 0.282787 0.121495 +vt 0.282787 0.084112 +vt 0.282787 0.046729 +vt 0.282787 0.028037 +vt 0.536896 0.327074 +vt 0.565560 0.261711 +vt 0.549180 0.224360 +vt 0.487700 0.259160 +vt 0.483607 0.261661 +vt 0.479513 0.259160 +vt 0.475419 0.242991 +vt 0.476516 0.233656 +vt 0.479513 0.226822 +vt 0.487700 0.226822 +vt 0.490697 0.233656 +vt 0.491794 0.242991 +vt 0.487685 0.371248 +vt 0.483607 0.373740 +vt 0.479529 0.371248 +vt 0.475451 0.355141 +vt 0.476543 0.345842 +vt 0.479529 0.339034 +vt 0.487685 0.339034 +vt 0.490670 0.345842 +vt 0.491763 0.355141 +vt 0.614754 0.224317 +vt 0.643444 0.277874 +vt 0.651638 0.277874 +vt 0.643444 0.343278 +vt 0.647541 0.243004 +vt 0.721311 0.186916 +vt 0.745902 0.289720 +vt 0.754098 0.271028 +vt 0.737705 0.149533 +vt 0.713115 0.485981 +vt 0.754098 0.401869 +vt 0.745902 0.383178 +vt 0.778689 0.401869 +vt 0.737705 0.523364 +vt 0.020492 0.542056 +vt 0.020492 0.710280 +vt 0.975410 0.616822 +vt 0.852459 0.317757 +vt 0.852459 0.093458 +vt 0.877049 0.000000 +vt 0.909836 0.018692 +vt 0.877049 0.261682 +vt 0.852459 0.261682 +vt 0.885246 0.317757 +vt 0.877049 0.504673 +vt 0.885246 0.504673 +vt 0.909836 0.485981 +vt 0.909836 0.485981 +vt 0.970417 0.393693 +vt 0.975410 0.336449 +vt 0.909836 0.317757 +vt 0.975410 0.317757 +vt 0.975410 0.336449 +vt 0.956204 0.442175 +vt 0.934941 0.474575 +vt 0.315574 0.738318 +vt 0.307377 0.757009 +vt 0.274590 0.757009 +vt 0.266393 0.663551 +vt 0.307377 0.644860 +vt 0.713115 0.785047 +vt 0.713115 0.710280 +vt 0.721311 0.691589 +vt 0.811475 0.710280 +vt 0.811475 0.785047 +vt 0.504098 0.803738 +vt 0.495902 0.785047 +vt 0.504098 0.691589 +vt 0.553279 0.785047 +vt 0.545082 0.803738 +vt 0.344262 0.878505 +vt 0.336066 0.934579 +vt 0.368852 0.878505 +vt 0.368852 0.934579 +vt 0.348361 0.878505 +vt 0.348361 0.934579 +vt 0.258197 0.738318 +vt 0.241803 0.738318 +vt 0.262295 0.785047 +vt 0.192623 0.841121 +vt 0.184426 0.850467 +vt 0.184426 0.850467 +vt 0.192623 0.897196 +vt 0.184426 0.897196 +vt 0.184426 0.897196 +vt 0.774596 0.838595 +vt 0.771600 0.813097 +vt 0.771600 0.831763 +vt 0.770503 0.822430 +vt 0.774596 0.806265 +vt 0.782781 0.806265 +vt 0.786874 0.822430 +vt 0.785777 0.831763 +vt 0.782781 0.838595 +vt 0.762295 0.803738 +vt 0.799176 0.838599 +vt 0.795082 0.841100 +vt 0.790989 0.838599 +vt 0.786895 0.822430 +vt 0.787992 0.813095 +vt 0.790989 0.806261 +vt 0.799176 0.806261 +vt 0.802173 0.813095 +vt 0.803269 0.822430 +vt 0.282787 0.149533 +vt 0.282787 0.130841 +vt 0.282787 0.018692 +vt 0.282787 0.074766 +vt 0.282787 0.205607 +vt 0.282787 0.093458 +vt 0.282787 0.112150 +vt 0.282787 0.168224 +vt 0.282787 -0.000000 +vt 0.282787 0.056075 +vt 0.282787 0.037383 +vt 0.282787 0.186916 +vt 0.663934 0.224299 +vt 0.663934 0.205607 +vt 0.663934 0.186916 +vt 0.663934 0.168224 +vt 0.663934 0.149533 +vt 0.663934 0.130841 +vt 0.663934 0.112150 +vt 0.663934 0.093458 +vt 0.663934 0.074766 +vt 0.663934 0.056075 +vt 0.663934 0.037383 +vt 0.663934 0.018692 +vt 0.663934 0.000000 +vt -0.000000 0.252336 +vt 0.065574 0.261682 +vt -0.000000 0.261682 +vt -0.000000 0.299065 +vt 0.065574 0.308411 +vt -0.000000 0.308411 +vt -0.000000 0.327103 +vt 0.065574 0.336449 +vt -0.000000 0.336449 +vt -0.000000 0.242991 +vt 0.065574 0.252336 +vt -0.000000 0.289720 +vt 0.065574 0.299065 +vt -0.000000 0.271028 +vt 0.065574 0.280374 +vt -0.000000 0.280374 +vt -0.000000 0.317757 +vt 0.065574 0.327103 +vt -0.000000 0.233645 +vt 0.065574 0.242991 +vt 0.065574 0.289720 +vt 0.065574 0.271028 +vt 0.065574 0.317757 +vt -0.000000 0.224299 +vt 0.065574 0.233645 +vt -0.000000 0.364486 +vt 0.065574 0.373832 +vt -0.000000 0.373832 +vt -0.000000 0.411215 +vt 0.065574 0.420561 +vt -0.000000 0.420561 +vt -0.000000 0.439252 +vt 0.065574 0.448598 +vt -0.000000 0.448598 +vt -0.000000 0.355140 +vt 0.065574 0.364486 +vt -0.000000 0.401869 +vt 0.065574 0.411215 +vt -0.000000 0.383178 +vt 0.065574 0.392523 +vt -0.000000 0.392523 +vt -0.000000 0.429907 +vt 0.065574 0.439252 +vt -0.000000 0.345794 +vt 0.065574 0.355140 +vt 0.065574 0.401869 +vt 0.065574 0.383178 +vt 0.065574 0.429907 +vt -0.000000 0.336449 +vt 0.065574 0.345794 +vt 0.688525 0.196262 +vt 0.704918 0.214953 +vt 0.688525 0.214953 +vt 0.688525 0.158879 +vt 0.704918 0.177570 +vt 0.688525 0.177570 +vt 0.704918 0.196262 +vt 0.688525 0.140187 +vt 0.704918 0.158879 +vt 0.688525 0.121495 +vt 0.704918 0.140187 +vt 0.704918 0.233645 +vt 0.688525 0.233645 +vt 0.688525 0.299065 +vt 0.704918 0.299065 +vt 0.409836 0.448598 +vt 0.081967 0.429907 +vt 0.409836 0.429907 +vt 0.081967 0.411215 +vt 0.409836 0.411215 +vt 0.081967 0.392523 +vt 0.409836 0.392523 +vt 0.081967 0.373832 +vt 0.409836 0.373832 +vt 0.081967 0.355140 +vt 0.409836 0.355140 +vt 0.081967 0.336449 +vt 0.409836 0.336449 +vt 0.081967 0.317757 +vt 0.409836 0.317757 +vt 0.081967 0.299065 +vt 0.409836 0.299065 +vt 0.081967 0.280374 +vt 0.409836 0.280374 +vt 0.081967 0.261682 +vt 0.409836 0.261682 +vt 0.081967 0.242991 +vt 0.409836 0.242991 +vt 0.081967 0.224299 +vt 0.409836 0.224299 +vt 0.704918 0.056075 +vt 0.688525 0.056075 +vt 0.688525 0.336449 +vt 0.704918 0.355140 +vt 0.688525 0.355140 +vt 0.688525 0.037383 +vt 0.688525 0.317757 +vt 0.704918 0.336449 +vt 0.688525 0.018692 +vt 0.704918 0.037383 +vt 0.704918 0.317757 +vt 0.688525 -0.000000 +vt 0.704918 0.018692 +vt 0.663934 0.317757 +vt 0.688525 0.336449 +vt 0.663934 0.336449 +vt 0.663934 0.214953 +vt 0.688525 0.233645 +vt 0.663934 0.233645 +vt 0.688525 0.355140 +vt 0.663934 0.355140 +vt 0.663934 0.121495 +vt 0.688525 0.140187 +vt 0.663934 0.140187 +vt 0.663934 -0.000000 +vt 0.688525 0.018692 +vt 0.663934 0.018692 +vt 0.688525 0.158879 +vt 0.663934 0.158879 +vt 0.688525 0.037383 +vt 0.663934 0.037383 +vt 0.688525 0.177570 +vt 0.663934 0.177570 +vt 0.688525 0.056075 +vt 0.663934 0.056075 +vt 0.688525 0.299065 +vt 0.663934 0.299065 +vt 0.688525 0.121495 +vt 0.688525 0.196262 +vt 0.663934 0.196262 +vt 0.688525 0.317757 +vt 0.688525 0.214953 +vt 0.409836 0.401869 +vt 0.475410 0.392523 +vt 0.475410 0.401869 +vt 0.409836 0.355140 +vt 0.475410 0.345794 +vt 0.475410 0.355140 +vt 0.409836 0.327103 +vt 0.475410 0.317757 +vt 0.475410 0.327103 +vt 0.409836 0.280374 +vt 0.475410 0.271028 +vt 0.475410 0.280374 +vt 0.409836 0.345794 +vt 0.475410 0.336449 +vt 0.409836 0.317757 +vt 0.475410 0.308411 +vt 0.409836 0.271028 +vt 0.475410 0.261682 +vt 0.409836 0.448598 +vt 0.475410 0.439252 +vt 0.475410 0.448598 +vt 0.409836 0.308411 +vt 0.475410 0.299065 +vt 0.409836 0.261682 +vt 0.475410 0.252336 +vt 0.409836 0.439252 +vt 0.475410 0.429907 +vt 0.409836 0.299065 +vt 0.475410 0.289720 +vt 0.409836 0.392523 +vt 0.475410 0.383178 +vt 0.409836 0.252336 +vt 0.475410 0.242991 +vt 0.409836 0.429907 +vt 0.475410 0.420561 +vt 0.409836 0.289720 +vt 0.409836 0.383178 +vt 0.475410 0.373832 +vt 0.409836 0.242991 +vt 0.475410 0.233645 +vt 0.409836 0.420561 +vt 0.475410 0.411215 +vt 0.409836 0.373832 +vt 0.475410 0.364486 +vt 0.409836 0.233645 +vt 0.475410 0.224299 +vt 0.409836 0.411215 +vt 0.409836 0.364486 +vt 0.409836 0.336449 +vt 0.475410 0.336449 +vt 0.745902 0.308411 +vt 0.754098 0.289720 +vt 0.778689 0.289720 +vt 0.754098 0.308411 +vt 0.803279 0.289720 +vt 0.778689 0.308411 +vt 0.721311 0.018692 +vt 0.737705 0.093458 +vt 0.721311 0.074766 +vt 0.721311 0.364486 +vt 0.745902 0.364486 +vt 0.754098 0.364486 +vt 0.778689 0.364486 +vt 0.754098 0.383178 +vt 0.803279 0.364486 +vt 0.778689 0.383178 +vt 0.827869 0.383178 +vt 0.827869 0.364486 +vt 0.852459 0.383178 +vt 0.770492 0.093458 +vt 0.836066 0.074766 +vt 0.840164 0.093458 +vt 0.000000 0.588785 +vt 0.008197 0.663551 +vt 0.000000 0.663551 +vt 0.020492 0.588785 +vt 0.020492 0.663551 +vt 0.008197 0.588785 +vt 0.225410 0.514019 +vt 0.028689 0.448598 +vt 0.225410 0.654206 +vt 0.836066 0.018692 +vt 0.770492 0.000000 +vt 0.836066 0.000000 +vt 0.770492 0.074766 +vt 0.827869 0.308411 +vt 0.803279 0.308411 +vt 0.803279 0.383178 +vt 1.000000 0.504673 +vt 0.975410 0.560748 +vt 0.975410 0.504673 +vt 1.000000 0.336449 +vt 0.975410 0.392523 +vt 1.000000 0.317757 +vt 1.000000 0.392523 +vt 0.975410 0.448598 +vt 1.000000 0.560748 +vt 1.000000 0.448598 +vt 0.852459 0.289720 +vt 0.827869 0.289720 +vt 0.852459 -0.000000 +vt 0.426230 0.663551 +vt 0.442623 0.738318 +vt 0.426230 0.738318 +vt 0.336066 0.448598 +vt 0.426230 0.523364 +vt 0.336066 0.523364 +vt 0.319672 0.635514 +vt 0.426230 0.635514 +vt 0.319672 0.766355 +vt 0.331967 0.551402 +vt 0.426230 0.850467 +vt 0.442623 0.766355 +vt 0.442623 0.850467 +vt 0.426230 0.551402 +vt 0.331967 0.850467 +vt 0.426230 0.766355 +vt 0.336066 0.878505 +vt 0.426230 0.878505 +vt 0.475410 0.663551 +vt 0.475410 0.738318 +vt 0.491803 0.738318 +vt 0.491803 0.663551 +vt 0.442623 0.635514 +vt 0.442623 0.551402 +vt 0.553279 0.813084 +vt 0.536885 0.392523 +vt 0.713115 0.364486 +vt 0.713115 0.392523 +vt 0.553279 0.682243 +vt 0.713115 0.682243 +vt 0.536885 0.467290 +vt 0.713115 0.495327 +vt 0.536885 0.495327 +vt 0.713115 1.000000 +vt 0.553279 0.869159 +vt 0.713115 0.813084 +vt 0.553279 0.626168 +vt 0.545082 0.588785 +vt 0.147541 0.897196 +vt 0.057377 0.934579 +vt 0.057377 0.897196 +vt 0.163934 0.897196 +vt 0.147541 0.934579 +vt 0.176230 0.897196 +vt 0.163934 0.934579 +vt 0.192623 0.897196 +vt 0.176230 0.934579 +vt 0.250000 0.897196 +vt 0.192623 0.934579 +vt 0.266393 0.897196 +vt 0.250000 0.934579 +vt 0.336066 0.971963 +vt 0.348361 0.971963 +vt 0.364754 0.971963 +vt 0.368852 0.971963 +vt 0.409836 0.934579 +vt 0.393443 0.971963 +vt 0.409836 0.971963 +vt 0.426230 0.934579 +vt 0.426230 0.971963 +vt 0.077869 0.728972 +vt 0.061475 0.766355 +vt 0.061475 0.728972 +vt 0.077869 0.766355 +vt 0.086066 0.728972 +vt 0.086066 0.766355 +vt 0.102459 0.728972 +vt 0.020492 0.766355 +vt 0.168033 0.766355 +vt 0.184426 0.728972 +vt 0.184426 0.766355 +vt 0.143443 0.728972 +vt 0.102459 0.766355 +vt 0.159836 0.728972 +vt 0.143443 0.766355 +vt 0.159836 0.766355 +vt 0.168033 0.728972 +vt 0.159836 0.803738 +vt 0.159836 0.785047 +vt 0.168033 0.766355 +vt 0.770492 0.018692 +vt 0.737705 0.000000 +vt 0.721311 -0.000000 +vt 0.721311 0.093458 +vt 0.713115 0.850467 +vt 0.713115 0.897196 +vt 0.713115 0.906542 +vt 0.713115 0.803738 +vt 0.713115 0.813084 +vt 0.713115 0.859813 +vt 0.713115 0.822430 +vt 0.713115 0.869159 +vt 0.713115 0.831776 +vt 0.713115 0.878505 +vt 0.713115 0.841121 +vt 0.713115 0.887850 +vt 0.770492 0.813084 +vt 0.770492 0.897196 +vt 0.770492 0.850467 +vt 0.770492 0.869159 +vt 0.770492 0.822430 +vt 0.770492 0.906542 +vt 0.770492 0.859813 +vt 0.770492 0.878505 +vt 0.770492 0.831776 +vt 0.770492 0.915888 +vt 0.770492 0.887850 +vt 0.770492 0.841121 +vt 0.282787 0.224299 +vt 0.065574 0.224299 +vt 0.065574 0.336449 +vt 0.704918 0.121495 +vt 0.081967 0.448598 +vt 0.704918 0.000000 +vt 0.688525 -0.000000 +vt 0.409836 0.336449 +vt 0.409836 0.224299 +vt 0.721311 0.308411 +vt 0.266393 0.448598 +vt 0.225410 0.457944 +vt 0.266393 0.457944 +vt 0.266393 0.514019 +vt 0.225410 0.598131 +vt 0.266393 0.598131 +vt 0.266393 0.654206 +vt 0.442623 0.663551 +vt 0.426230 0.448598 +vt 0.536885 0.364486 +vt 0.713115 0.467290 +vt 0.545082 0.906542 +vt 0.266393 0.934579 +vt 0.344262 0.971963 +vt 0.020492 0.728972 +vt 0.159836 0.766355 +vt 0.713115 0.915888 +vt 0.770492 0.803738 +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 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.8944 0.4472 +vn 0.0000 0.4472 0.8944 +vn -0.8660 0.5000 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn -0.9914 0.1305 0.0000 +vn 0.9914 0.1305 0.0000 +vn 0.9914 -0.1305 0.0000 +vn -0.9914 -0.1305 0.0000 +vn 0.0000 0.9239 -0.3827 +vn 0.0000 0.9871 -0.1602 +vn 0.0000 0.8736 -0.4866 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.8112 0.5847 +vn 0.0000 0.9024 -0.4308 +vn 0.0000 0.9487 -0.3162 +vn 0.0000 -0.9732 0.2298 +vn 0.0000 -0.9522 0.3054 +vn 0.0000 -0.9239 0.3827 +vn 0.0000 -0.3827 0.9239 +vn 0.0000 0.9231 0.3845 +vn 0.0000 0.3808 0.9246 +vn 0.0000 0.9952 -0.0980 +vn 0.0000 0.0980 -0.9952 +vn 0.0000 0.3827 -0.9239 +vn 0.0000 -0.8944 0.4472 +vn 0.3702 0.6646 -0.6490 +vn -0.4346 -0.0292 -0.9002 +vn -0.3702 0.6646 -0.6490 +vn 0.3158 0.8487 -0.4243 +vn -0.3158 0.8487 -0.4243 +vn -0.3875 -0.7728 0.5027 +vn 0.3803 -0.8832 0.2744 +vn 0.3875 -0.7728 0.5027 +vn 0.8592 0.4574 -0.2292 +vn 0.9085 0.1932 -0.3706 +vn -0.8592 0.4574 -0.2292 +vn 0.9547 -0.2517 0.1590 +vn -0.9201 -0.3912 -0.0217 +vn -0.4362 -0.7533 -0.4922 +vn 0.9201 -0.3912 -0.0217 +vn -0.9547 -0.2517 0.1590 +vn -0.9085 0.1932 -0.3706 +vn -0.3803 -0.8832 0.2744 +vn 0.4362 -0.7533 -0.4922 +vn 0.4346 -0.0292 -0.9002 +vn -0.3867 0.9210 -0.0472 +vn -0.9193 0.3932 -0.0202 +vn -0.3779 0.9246 -0.0474 +vn -0.3846 -0.8870 0.2557 +vn -0.8923 -0.4340 0.1241 +vn -0.3487 -0.9012 0.2575 +vn 0.3867 0.9210 -0.0472 +vn 0.9193 0.3932 -0.0202 +vn 0.9281 0.3719 -0.0191 +vn 0.3846 -0.8870 0.2557 +vn 0.8923 -0.4340 0.1241 +vn 0.9180 -0.3806 0.1114 +vn 0.3779 0.9246 -0.0474 +vn -0.9281 0.3719 -0.0191 +vn 0.0000 0.4719 -0.8817 +vn 0.0000 0.8321 -0.5547 +vn 0.0000 -0.3827 -0.9239 +vn 0.0000 -0.9239 -0.3827 +vn 0.0000 -0.9571 0.2898 +vn 0.0000 -0.4719 0.8817 +vn 0.0000 0.9571 0.2898 +vn 0.0000 0.0985 0.9951 +vn 0.0000 0.9239 0.3827 +vn 0.0000 0.9571 -0.2898 +vn 0.0000 0.3827 0.9239 +vn 0.0000 0.2298 0.9732 +vn 0.0000 -0.7071 -0.7071 +vn -0.9180 -0.3806 0.1114 +vn 0.3487 -0.9012 0.2575 +s off +f 7/1/1 54/2/1 6/3/1 +f 7/4/1 56/5/1 55/6/1 +f 9/7/1 56/8/1 8/9/1 +f 10/10/1 57/11/1 9/7/1 +f 10/10/1 59/12/1 58/13/1 +f 12/14/1 59/15/1 11/16/1 +f 12/14/1 49/17/1 60/18/1 +f 2/19/1 49/20/1 1/21/1 +f 2/19/1 51/22/1 50/23/1 +f 4/24/1 51/25/1 3/26/1 +f 4/24/1 53/27/1 52/28/1 +f 5/29/1 54/30/1 53/31/1 +f 67/32/1 69/33/1 61/34/1 +f 91/35/1 93/36/1 85/37/1 +f 43/38/1 78/39/1 42/40/1 +f 41/41/1 78/42/1 77/43/1 +f 40/44/1 77/45/1 76/46/1 +f 40/44/1 75/47/1 39/48/1 +f 38/49/1 75/50/1 74/51/1 +f 38/49/1 73/52/1 37/53/1 +f 48/54/1 73/55/1 84/56/1 +f 48/54/1 83/57/1 47/58/1 +f 46/59/1 83/60/1 82/61/1 +f 46/59/1 81/62/1 45/63/1 +f 45/63/1 80/64/1 44/65/1 +f 43/66/1 80/67/1 79/68/1 +f 107/69/2 115/70/2 114/71/2 +f 108/72/2 109/73/2 115/70/2 +f 97/74/2 110/75/2 109/73/2 +f 98/76/2 111/77/2 110/75/2 +f 100/78/2 111/77/2 99/79/2 +f 102/80/2 160/81/2 101/82/2 +f 106/83/2 114/71/2 113/84/2 +f 122/85/1 133/86/1 121/87/1 +f 116/88/1 134/89/1 122/85/1 +f 117/90/1 123/91/1 116/88/1 +f 118/92/1 124/93/1 117/90/1 +f 119/94/1 125/95/1 118/92/1 +f 112/96/2 101/82/2 159/97/2 +f 165/98/2 105/99/2 113/84/2 +f 104/100/2 164/101/2 163/102/2 +f 103/103/2 163/102/2 162/104/2 +f 103/103/2 161/105/2 102/80/2 +f 121/87/1 132/106/1 120/107/1 +f 166/108/1 127/109/1 119/94/1 +f 120/107/1 132/106/1 131/110/1 +f 130/111/1 171/112/1 131/110/1 +f 129/113/1 170/114/1 130/111/1 +f 168/115/1 129/113/1 128/116/1 +f 167/117/1 128/116/1 127/109/1 +f 247/118/2 243/119/2 239/120/2 +f 235/121/2 231/122/2 227/123/2 +f 20/124/1 145/125/1 21/126/1 +f 19/127/1 146/128/1 20/124/1 +f 18/129/1 135/130/1 19/127/1 +f 17/131/1 136/132/1 18/129/1 +f 16/133/1 137/134/1 17/131/1 +f 21/126/1 144/135/1 22/136/1 +f 177/137/1 144/135/1 186/138/1 +f 138/139/1 176/140/1 180/141/1 +f 175/142/1 16/133/1 15/143/1 +f 14/144/1 175/142/1 15/143/1 +f 13/145/1 174/146/1 14/144/1 +f 24/147/1 173/148/1 13/145/1 +f 23/149/1 179/150/1 24/147/1 +f 22/136/1 178/151/1 23/149/1 +f 185/152/1 144/135/1 143/153/1 +f 142/154/1 185/152/1 143/153/1 +f 141/155/1 184/156/1 142/154/1 +f 182/157/1 141/155/1 140/158/1 +f 181/159/1 140/158/1 139/160/1 +f 180/141/1 139/160/1 138/139/1 +f 208/161/2 213/162/2 207/163/2 +f 213/162/2 206/164/2 207/163/2 +f 206/164/2 215/165/2 205/166/2 +f 215/165/2 204/167/2 205/166/2 +f 223/168/2 208/161/2 209/169/2 +f 222/170/2 209/169/2 210/171/2 +f 222/170/2 192/172/2 195/173/2 +f 190/174/2 216/175/2 194/176/2 +f 203/177/2 190/174/2 189/178/2 +f 202/179/2 189/178/2 187/180/2 +f 201/181/2 187/180/2 188/182/2 +f 193/183/2 201/181/2 188/182/2 +f 211/184/2 193/183/2 191/185/2 +f 192/172/2 211/184/2 191/185/2 +f 221/186/2 195/173/2 200/187/2 +f 220/188/2 200/187/2 199/189/2 +f 198/190/2 220/188/2 199/189/2 +f 218/191/2 198/190/2 197/192/2 +f 196/193/2 218/191/2 197/192/2 +f 194/176/2 217/194/2 196/193/2 +f 254/195/1 249/196/1 251/197/1 +f 261/198/3 258/199/3 263/200/3 +f 270/201/1 265/202/1 267/203/1 +f 278/204/4 276/205/4 279/206/4 +f 327/207/5 311/208/5 328/209/5 +f 288/210/4 286/211/4 284/212/4 +f 285/213/3 287/214/3 283/215/3 +f 293/216/3 287/214/3 289/217/3 +f 288/210/4 294/218/4 290/219/4 +f 304/220/1 305/221/1 303/222/1 +f 303/223/6 309/224/6 304/225/6 +f 309/224/7 330/226/7 329/227/7 +f 306/228/5 308/229/5 305/221/5 +f 264/230/3 331/231/3 260/232/3 +f 280/233/4 332/234/4 334/235/4 +f 254/236/4 251/237/4 257/238/4 +f 318/239/8 336/240/8 319/241/8 +f 319/242/4 336/240/4 262/243/4 +f 335/244/3 274/245/3 272/246/3 +f 254/236/6 335/244/6 269/247/6 +f 307/248/1 312/249/1 308/250/1 +f 277/251/3 335/244/3 318/252/3 +f 329/253/4 307/254/4 306/255/4 +f 330/256/3 310/257/3 303/222/3 +f 325/258/4 281/259/4 307/254/4 +f 308/250/3 312/249/3 321/260/3 +f 337/261/1 345/262/1 340/263/1 +f 359/264/2 361/265/2 364/266/2 +f 362/267/9 357/268/9 371/269/9 +f 362/267/1 365/270/1 373/271/1 +f 400/272/4 394/273/4 396/274/4 +f 397/275/3 395/276/3 393/277/3 +f 392/278/4 402/279/4 390/280/4 +f 401/281/3 391/282/3 389/283/3 +f 394/273/4 404/284/4 392/278/4 +f 403/285/3 393/277/3 391/282/3 +f 410/286/4 384/287/4 386/288/4 +f 407/289/3 385/290/3 383/291/3 +f 414/292/4 380/293/4 382/294/4 +f 411/295/3 381/296/3 379/297/3 +f 384/287/4 414/292/4 382/294/4 +f 413/298/3 383/291/3 381/296/3 +f 386/288/4 416/299/4 410/286/4 +f 388/300/4 418/301/4 416/299/4 +f 385/290/3 415/302/3 387/303/3 +f 387/303/3 417/304/3 389/305/3 +f 406/306/4 422/307/4 418/301/4 +f 389/305/3 421/308/3 405/309/3 +f 380/293/4 420/310/4 376/311/4 +f 379/297/3 419/312/3 411/295/3 +f 420/310/4 422/307/4 406/306/4 +f 405/309/3 421/308/3 419/312/3 +f 428/313/4 432/314/4 430/315/4 +f 425/316/3 427/317/3 423/318/3 +f 424/319/4 430/315/4 426/320/4 +f 429/321/3 431/322/3 427/317/3 +f 451/323/1 453/324/1 445/325/1 +f 435/326/1 458/327/1 459/328/1 +f 441/329/1 466/330/1 442/331/1 +f 438/332/1 463/333/1 439/334/1 +f 435/326/1 460/335/1 436/336/1 +f 443/337/1 466/330/1 467/338/1 +f 440/339/1 463/340/1 464/341/1 +f 437/342/1 460/335/1 461/343/1 +f 443/337/1 468/344/1 444/345/1 +f 433/346/1 458/327/1 434/347/1 +f 440/339/1 465/348/1 441/329/1 +f 438/332/1 461/343/1 462/349/1 +f 433/346/1 468/344/1 457/350/1 +f 479/351/2 475/352/2 471/353/2 +f 7/1/1 55/354/1 54/2/1 +f 7/4/1 8/9/1 56/5/1 +f 9/7/1 57/355/1 56/8/1 +f 10/10/1 58/356/1 57/11/1 +f 10/10/1 11/16/1 59/12/1 +f 12/14/1 60/357/1 59/15/1 +f 12/14/1 1/21/1 49/17/1 +f 2/19/1 50/358/1 49/20/1 +f 2/19/1 3/26/1 51/22/1 +f 4/24/1 52/359/1 51/25/1 +f 4/24/1 5/29/1 53/27/1 +f 5/29/1 6/3/1 54/30/1 +f 61/34/1 62/360/1 65/361/1 +f 62/360/1 63/362/1 65/361/1 +f 63/362/1 64/363/1 65/361/1 +f 65/361/1 66/364/1 67/32/1 +f 67/32/1 68/365/1 69/33/1 +f 69/33/1 70/366/1 71/367/1 +f 71/367/1 72/368/1 69/33/1 +f 72/368/1 61/34/1 69/33/1 +f 65/361/1 67/32/1 61/34/1 +f 85/37/1 86/369/1 89/370/1 +f 86/369/1 87/371/1 89/370/1 +f 87/371/1 88/372/1 89/370/1 +f 89/370/1 90/373/1 91/35/1 +f 91/35/1 92/374/1 93/36/1 +f 93/36/1 94/375/1 95/376/1 +f 95/376/1 96/377/1 93/36/1 +f 96/377/1 85/37/1 93/36/1 +f 89/370/1 91/35/1 85/37/1 +f 43/38/1 79/378/1 78/39/1 +f 41/41/1 42/40/1 78/42/1 +f 40/44/1 41/41/1 77/45/1 +f 40/44/1 76/379/1 75/47/1 +f 38/49/1 39/48/1 75/50/1 +f 38/49/1 74/380/1 73/52/1 +f 48/54/1 37/53/1 73/55/1 +f 48/54/1 84/381/1 83/57/1 +f 46/59/1 47/58/1 83/60/1 +f 46/59/1 82/382/1 81/62/1 +f 45/63/1 81/383/1 80/64/1 +f 43/66/1 44/65/1 80/67/1 +f 107/69/2 108/72/2 115/70/2 +f 108/72/2 97/74/2 109/73/2 +f 97/74/2 98/76/2 110/75/2 +f 98/76/2 99/79/2 111/77/2 +f 100/78/2 112/96/2 111/77/2 +f 102/80/2 161/105/2 160/81/2 +f 106/83/2 107/69/2 114/71/2 +f 122/85/1 134/89/1 133/86/1 +f 116/88/1 123/91/1 134/89/1 +f 117/90/1 124/93/1 123/91/1 +f 118/92/1 125/95/1 124/93/1 +f 119/94/1 126/384/1 125/95/1 +f 100/78/2 101/82/2 112/96/2 +f 101/82/2 160/81/2 159/97/2 +f 164/101/2 105/99/2 165/98/2 +f 105/99/2 106/83/2 113/84/2 +f 104/100/2 105/99/2 164/101/2 +f 103/103/2 104/100/2 163/102/2 +f 103/103/2 162/104/2 161/105/2 +f 121/87/1 133/86/1 132/106/1 +f 167/117/1 127/109/1 166/108/1 +f 127/109/1 126/384/1 119/94/1 +f 171/112/1 172/385/1 131/110/1 +f 172/385/1 120/107/1 131/110/1 +f 130/111/1 170/114/1 171/112/1 +f 129/113/1 169/386/1 170/114/1 +f 168/115/1 169/386/1 129/113/1 +f 167/117/1 168/115/1 128/116/1 +f 239/120/2 238/387/2 237/388/2 +f 237/388/2 248/389/2 239/120/2 +f 248/389/2 247/118/2 239/120/2 +f 247/118/2 246/390/2 243/119/2 +f 246/390/2 245/391/2 243/119/2 +f 245/391/2 244/392/2 243/119/2 +f 243/119/2 242/393/2 241/394/2 +f 241/394/2 240/395/2 243/119/2 +f 240/395/2 239/120/2 243/119/2 +f 227/123/2 226/396/2 225/397/2 +f 225/397/2 236/398/2 227/123/2 +f 236/398/2 235/121/2 227/123/2 +f 235/121/2 234/399/2 231/122/2 +f 234/399/2 233/400/2 231/122/2 +f 233/400/2 232/401/2 231/122/2 +f 231/122/2 230/402/2 229/403/2 +f 229/403/2 228/404/2 231/122/2 +f 228/404/2 227/123/2 231/122/2 +f 20/124/1 146/128/1 145/125/1 +f 19/127/1 135/130/1 146/128/1 +f 18/129/1 136/132/1 135/130/1 +f 17/131/1 137/134/1 136/132/1 +f 16/133/1 138/139/1 137/134/1 +f 21/126/1 145/125/1 144/135/1 +f 177/137/1 22/136/1 144/135/1 +f 138/139/1 16/133/1 176/140/1 +f 175/142/1 176/140/1 16/133/1 +f 14/144/1 174/146/1 175/142/1 +f 13/145/1 173/148/1 174/146/1 +f 24/147/1 179/150/1 173/148/1 +f 23/149/1 178/151/1 179/150/1 +f 22/136/1 177/137/1 178/151/1 +f 185/152/1 186/138/1 144/135/1 +f 142/154/1 184/156/1 185/152/1 +f 141/155/1 183/405/1 184/156/1 +f 182/157/1 183/405/1 141/155/1 +f 181/159/1 182/157/1 140/158/1 +f 180/141/1 181/159/1 139/160/1 +f 208/161/2 224/406/2 213/162/2 +f 213/162/2 214/407/2 206/164/2 +f 206/164/2 214/407/2 215/165/2 +f 215/165/2 216/175/2 204/167/2 +f 223/168/2 224/406/2 208/161/2 +f 222/170/2 223/168/2 209/169/2 +f 222/170/2 210/171/2 192/172/2 +f 190/174/2 204/167/2 216/175/2 +f 203/177/2 204/167/2 190/174/2 +f 202/179/2 203/177/2 189/178/2 +f 201/181/2 202/179/2 187/180/2 +f 193/183/2 212/408/2 201/181/2 +f 211/184/2 212/408/2 193/183/2 +f 192/172/2 210/171/2 211/184/2 +f 221/186/2 222/170/2 195/173/2 +f 220/188/2 221/186/2 200/187/2 +f 198/190/2 219/409/2 220/188/2 +f 218/191/2 219/409/2 198/190/2 +f 196/193/2 217/194/2 218/191/2 +f 194/176/2 216/175/2 217/194/2 +f 254/195/1 253/410/1 249/196/1 +f 250/411/3 249/196/3 256/412/3 +f 249/196/3 253/410/3 256/412/3 +f 253/410/3 255/413/3 256/412/3 +f 255/413/3 263/200/3 258/199/3 +f 256/412/3 255/413/3 258/199/3 +f 263/200/3 264/230/3 260/232/3 +f 260/232/3 261/198/3 263/200/3 +f 270/201/1 269/414/1 265/202/1 +f 270/201/4 267/203/4 273/415/4 +f 267/203/4 268/416/4 273/415/4 +f 273/415/4 275/417/4 271/418/4 +f 275/417/4 278/204/4 279/206/4 +f 279/206/4 271/418/4 275/417/4 +f 271/418/4 270/201/4 273/415/4 +f 276/205/4 280/233/4 279/206/4 +f 327/207/5 312/249/5 311/208/5 +f 288/210/4 290/219/4 286/211/4 +f 285/213/3 289/217/3 287/214/3 +f 293/216/3 291/419/3 287/214/3 +f 288/210/4 292/420/4 294/218/4 +f 304/220/1 306/228/1 305/221/1 +f 303/223/6 310/421/6 309/224/6 +f 309/224/7 310/421/7 330/226/7 +f 306/228/5 307/422/5 308/229/5 +f 264/230/3 333/423/3 331/231/3 +f 280/233/4 276/205/4 332/234/4 +f 251/237/4 252/424/4 257/238/4 +f 257/238/4 259/425/4 336/240/4 +f 259/425/4 262/243/4 336/240/4 +f 336/240/4 254/236/4 257/238/4 +f 318/239/8 335/244/8 336/240/8 +f 272/246/3 266/426/3 265/427/3 +f 265/427/3 269/247/3 272/246/3 +f 269/247/3 335/244/3 272/246/3 +f 335/244/3 277/251/3 274/245/3 +f 254/236/6 336/240/6 335/244/6 +f 307/248/1 311/428/1 312/249/1 +f 306/255/4 304/429/4 329/253/4 +f 304/429/4 309/430/4 329/253/4 +f 329/253/4 326/431/4 307/254/4 +f 303/222/3 305/221/3 330/256/3 +f 305/221/3 308/250/3 330/256/3 +f 308/250/3 324/432/3 330/256/3 +f 281/259/4 282/433/4 307/254/4 +f 282/433/4 315/434/4 311/435/4 +f 307/254/4 282/433/4 311/435/4 +f 315/434/4 328/436/4 311/435/4 +f 307/254/4 326/431/4 325/258/4 +f 312/249/3 327/207/3 320/437/3 +f 320/437/3 321/260/3 312/249/3 +f 321/260/3 322/438/3 308/250/3 +f 322/438/3 323/439/3 308/250/3 +f 323/439/3 324/432/3 308/250/3 +f 340/263/1 339/440/1 349/441/1 +f 349/441/1 350/442/1 337/261/1 +f 337/261/1 338/443/1 345/262/1 +f 345/262/1 346/444/1 340/263/1 +f 340/263/1 349/441/1 337/261/1 +f 361/265/2 368/445/2 367/446/2 +f 367/446/2 366/447/2 361/265/2 +f 366/447/2 364/266/2 361/265/2 +f 364/266/2 370/448/2 369/449/2 +f 369/449/2 359/264/2 364/266/2 +f 358/450/9 372/451/9 357/268/9 +f 372/451/9 371/269/9 357/268/9 +f 371/269/9 363/452/9 362/267/9 +f 373/271/1 374/453/1 357/268/1 +f 374/453/1 360/454/1 357/268/1 +f 357/268/1 362/267/1 373/271/1 +f 400/272/4 398/455/4 394/273/4 +f 397/275/3 399/456/3 395/276/3 +f 392/278/4 404/457/4 402/279/4 +f 401/281/3 403/458/3 391/282/3 +f 394/273/4 398/459/4 404/284/4 +f 403/285/3 397/460/3 393/277/3 +f 410/286/4 408/461/4 384/287/4 +f 407/289/3 409/462/3 385/290/3 +f 414/292/4 412/463/4 380/293/4 +f 411/295/3 413/298/3 381/296/3 +f 384/287/4 408/461/4 414/292/4 +f 413/298/3 407/289/3 383/291/3 +f 386/288/4 388/300/4 416/299/4 +f 388/300/4 390/464/4 418/301/4 +f 385/290/3 409/462/3 415/302/3 +f 387/303/3 415/302/3 417/304/3 +f 418/301/4 390/464/4 406/306/4 +f 390/464/4 402/465/4 406/306/4 +f 405/309/3 401/466/3 389/305/3 +f 389/305/3 417/304/3 421/308/3 +f 380/293/4 412/463/4 420/310/4 +f 379/297/3 375/467/3 419/312/3 +f 377/468/4 376/311/4 406/306/4 +f 376/311/4 420/310/4 406/306/4 +f 419/312/3 375/467/3 405/309/3 +f 375/467/3 378/469/3 405/309/3 +f 425/316/3 429/321/3 427/317/3 +f 424/319/4 428/313/4 430/315/4 +f 445/325/1 446/470/1 449/471/1 +f 446/470/1 447/472/1 449/471/1 +f 447/472/1 448/473/1 449/471/1 +f 449/471/1 450/474/1 451/323/1 +f 451/323/1 452/475/1 453/324/1 +f 453/324/1 454/476/1 455/477/1 +f 455/477/1 456/478/1 453/324/1 +f 456/478/1 445/325/1 453/324/1 +f 449/471/1 451/323/1 445/325/1 +f 435/326/1 434/347/1 458/327/1 +f 441/329/1 465/348/1 466/330/1 +f 438/332/1 462/349/1 463/333/1 +f 435/326/1 459/328/1 460/335/1 +f 443/337/1 442/331/1 466/330/1 +f 440/339/1 439/479/1 463/340/1 +f 437/342/1 436/336/1 460/335/1 +f 443/337/1 467/338/1 468/344/1 +f 433/346/1 457/350/1 458/327/1 +f 440/339/1 464/341/1 465/348/1 +f 438/332/1 437/342/1 461/343/1 +f 433/346/1 444/345/1 468/344/1 +f 471/353/2 470/480/2 469/481/2 +f 469/481/2 480/482/2 471/353/2 +f 480/482/2 479/351/2 471/353/2 +f 479/351/2 478/483/2 475/352/2 +f 478/483/2 477/484/2 475/352/2 +f 477/484/2 476/485/2 475/352/2 +f 475/352/2 474/486/2 473/487/2 +f 473/487/2 472/488/2 475/352/2 +f 472/488/2 471/353/2 475/352/2 +s 1 +f 27/489/10 4/24/4 3/26/10 +f 26/490/11 3/26/10 2/19/11 +f 32/491/12 9/7/13 8/9/12 +f 35/492/14 12/14/15 11/16/14 +f 30/493/16 7/1/5 6/3/16 +f 36/494/15 1/21/6 12/14/15 +f 25/495/6 2/19/11 1/21/6 +f 28/496/4 5/29/17 4/24/4 +f 31/497/5 8/9/12 7/4/5 +f 34/498/3 11/16/14 10/10/3 +f 33/499/13 10/10/3 9/7/13 +f 29/500/17 6/3/16 5/29/17 +f 19/501/5 42/40/16 18/502/16 +f 18/502/16 41/41/17 17/503/17 +f 17/503/17 40/44/4 16/504/4 +f 16/504/4 39/48/10 15/505/10 +f 15/505/10 38/49/11 14/506/11 +f 14/506/11 37/53/6 13/507/6 +f 13/507/6 48/54/15 24/508/15 +f 24/508/15 47/58/14 23/509/14 +f 23/509/14 46/59/3 22/510/3 +f 22/510/3 45/63/13 21/511/13 +f 21/511/13 44/65/12 20/512/12 +f 20/512/12 43/66/5 19/513/5 +f 52/514/3 63/515/13 51/516/13 +f 59/517/17 70/518/4 58/519/4 +f 56/520/11 67/521/6 55/522/6 +f 53/523/14 64/524/3 52/514/3 +f 60/525/16 71/526/17 59/517/17 +f 50/527/12 61/528/5 49/529/5 +f 57/530/10 68/531/11 56/520/11 +f 54/532/15 65/533/14 53/523/14 +f 49/529/5 72/534/16 60/525/16 +f 51/516/13 62/535/12 50/527/12 +f 58/519/4 69/536/10 57/530/10 +f 55/537/6 66/538/15 54/532/15 +f 76/539/3 87/540/13 75/541/13 +f 83/542/17 94/543/4 82/544/4 +f 80/545/11 91/546/6 79/547/6 +f 77/548/14 88/549/3 76/539/3 +f 84/550/16 95/551/17 83/542/17 +f 74/552/12 85/553/5 73/554/5 +f 81/555/10 92/556/11 80/545/11 +f 78/557/15 89/558/14 77/548/14 +f 73/554/5 96/559/16 84/550/16 +f 75/541/13 86/560/12 74/552/12 +f 82/544/4 93/561/10 81/555/10 +f 79/562/6 90/563/15 78/557/15 +f 115/564/15 121/565/14 114/566/14 +f 110/567/11 116/568/6 109/569/6 +f 109/569/6 122/570/15 115/564/15 +f 111/571/10 117/572/11 110/567/11 +f 112/573/18 118/574/10 111/571/10 +f 114/566/14 120/575/19 113/576/19 +f 165/577/20 120/575/19 172/578/20 +f 141/579/5 152/580/16 140/581/16 +f 140/581/16 151/582/17 139/583/17 +f 139/583/17 150/584/4 138/585/4 +f 138/585/4 149/586/10 137/587/10 +f 137/587/10 148/588/11 136/589/11 +f 136/589/11 147/590/6 135/591/6 +f 135/591/6 158/592/15 146/593/15 +f 146/593/15 157/594/14 145/595/14 +f 145/595/14 156/596/3 144/597/3 +f 144/597/3 155/598/13 143/599/13 +f 143/599/13 154/600/12 142/601/12 +f 142/601/12 153/602/5 141/603/5 +f 166/604/21 112/573/18 159/605/21 +f 163/606/12 169/607/5 162/608/5 +f 160/609/17 166/604/21 159/605/21 +f 164/610/13 170/611/12 163/606/12 +f 161/612/16 167/613/17 160/609/17 +f 165/577/20 171/614/13 164/610/13 +f 162/615/5 168/616/16 161/612/16 +f 181/617/17 197/618/16 182/619/16 +f 175/620/10 190/621/18 176/622/18 +f 182/619/16 198/623/5 183/624/5 +f 177/625/19 191/626/14 178/627/14 +f 183/628/5 199/629/12 184/630/12 +f 178/627/14 193/631/15 179/632/15 +f 184/630/12 200/633/13 185/634/13 +f 179/632/15 188/635/6 173/636/6 +f 185/634/13 195/637/20 186/638/20 +f 176/622/18 194/639/21 180/640/21 +f 186/638/20 192/641/19 177/625/19 +f 173/636/6 187/642/11 174/643/11 +f 180/640/21 196/644/17 181/617/17 +f 174/643/11 189/645/10 175/620/10 +f 236/646/16 201/647/5 212/648/16 +f 229/649/14 206/650/15 205/651/14 +f 244/652/11 221/653/10 220/654/11 +f 237/655/5 214/656/12 213/657/5 +f 230/658/15 207/659/6 206/650/15 +f 245/660/10 222/661/4 221/653/10 +f 238/662/12 215/663/13 214/656/12 +f 231/664/6 208/665/11 207/666/6 +f 246/667/4 223/668/17 222/661/4 +f 239/669/13 216/670/3 215/663/13 +f 232/671/11 209/672/10 208/665/11 +f 247/673/17 224/674/16 223/668/17 +f 225/675/5 202/676/12 201/647/5 +f 240/677/3 217/678/14 216/670/3 +f 233/679/10 210/680/4 209/672/10 +f 248/681/16 213/657/5 224/674/16 +f 226/682/12 203/683/13 202/676/12 +f 241/684/14 218/685/15 217/678/14 +f 234/686/4 211/687/17 210/680/4 +f 227/688/13 204/689/3 203/683/13 +f 242/690/15 219/691/6 218/685/15 +f 235/692/17 212/648/16 211/687/17 +f 228/693/3 205/651/14 204/689/3 +f 243/694/6 220/654/11 219/695/6 +f 252/696/22 249/196/6 250/411/22 +f 256/697/22 252/696/22 250/411/22 +f 258/698/23 257/699/22 256/697/22 +f 261/700/24 259/701/23 258/698/23 +f 269/702/25 255/703/26 254/704/25 +f 268/416/22 265/705/6 266/706/22 +f 272/707/22 268/416/22 266/706/22 +f 274/708/23 273/709/22 272/707/22 +f 277/710/24 275/711/23 274/708/23 +f 276/712/24 318/713/27 332/714/28 +f 263/715/29 316/716/30 264/717/29 +f 287/718/31 292/719/32 288/720/31 +f 290/219/33 293/721/34 289/217/33 +f 294/722/34 291/723/32 293/721/34 +f 299/724/5 287/214/31 288/725/31 +f 290/219/33 289/217/33 302/726/6 +f 317/727/30 279/728/29 280/729/29 +f 263/715/29 255/703/26 313/730/30 +f 261/700/24 319/731/27 262/732/24 +f 318/713/27 278/733/24 277/710/24 +f 325/734/22 324/735/35 323/736/22 +f 315/737/36 321/738/37 320/437/36 +f 320/437/36 328/739/2 315/737/36 +f 282/740/37 322/741/7 321/738/37 +f 326/742/35 330/226/6 324/735/35 +f 281/743/7 323/736/22 322/741/7 +f 318/713/27 331/744/28 332/714/28 +f 264/717/29 316/716/30 333/423/38 +f 331/744/28 319/731/27 260/745/24 +f 316/716/30 334/746/38 333/423/38 +f 334/746/38 317/727/30 280/729/29 +f 344/747/39 353/748/40 341/749/41 +f 340/263/42 341/749/41 339/440/43 +f 337/750/44 343/751/45 338/752/46 +f 344/747/39 346/753/47 348/754/48 +f 341/749/41 349/755/49 339/440/43 +f 345/756/50 348/754/48 346/753/47 +f 352/757/51 353/758/40 354/759/52 +f 338/752/46 347/760/53 345/756/50 +f 350/761/54 351/762/55 352/757/51 +f 337/763/44 352/757/51 342/764/56 +f 351/762/55 341/749/41 353/758/40 +f 353/748/40 355/765/57 354/766/52 +f 342/767/56 355/765/57 343/768/45 +f 354/759/52 342/764/56 352/757/51 +f 347/760/53 356/769/58 348/754/48 +f 344/747/39 348/754/48 356/769/58 +f 343/751/45 355/770/57 347/760/53 +f 368/445/59 360/771/60 374/453/61 +f 372/772/62 359/773/63 369/774/64 +f 367/446/65 365/775/66 366/776/67 +f 371/777/68 364/778/69 363/779/70 +f 373/271/71 368/445/59 374/453/61 +f 369/774/64 371/777/68 372/772/62 +f 359/780/63 357/781/4 361/782/72 +f 364/778/69 362/783/3 363/784/70 +f 362/783/3 366/776/67 365/775/66 +f 361/782/72 357/781/4 360/771/60 +f 379/785/73 376/786/74 375/787/74 +f 381/788/75 380/789/73 379/785/73 +f 383/790/76 382/791/75 381/788/75 +f 385/792/77 384/793/76 383/790/76 +f 387/794/78 386/795/77 385/792/77 +f 389/796/1 388/797/78 387/794/78 +f 391/282/31 390/280/5 389/283/5 +f 393/277/32 392/278/31 391/282/31 +f 395/276/1 394/273/32 393/277/32 +f 397/275/37 400/798/2 399/456/2 +f 398/799/37 403/285/22 404/800/22 +f 401/281/79 404/801/22 403/458/22 +f 405/802/80 402/803/79 401/281/79 +f 406/804/80 378/805/25 377/806/25 +f 407/807/81 410/808/82 409/809/82 +f 408/810/81 413/811/83 414/812/83 +f 411/813/78 414/812/83 413/811/83 +f 416/814/73 409/809/82 410/808/82 +f 418/815/75 415/816/73 416/817/73 +f 419/818/77 412/819/78 411/813/78 +f 421/820/76 420/821/77 419/818/77 +f 422/822/76 417/823/75 418/815/75 +f 426/320/1 429/321/84 425/316/1 +f 423/824/2 428/313/75 424/319/2 +f 430/315/84 431/322/9 429/321/84 +f 427/825/75 432/826/85 428/313/75 +f 314/827/30 271/828/26 279/728/29 +f 255/703/26 314/827/30 313/730/30 +f 271/828/26 269/702/25 270/829/25 +f 255/703/26 253/830/25 254/704/25 +f 433/346/6 456/831/15 444/345/15 +f 438/332/16 449/832/17 437/342/17 +f 439/334/5 450/833/16 438/332/16 +f 440/339/12 451/834/5 439/479/5 +f 441/329/13 452/835/12 440/339/12 +f 434/347/11 445/836/6 433/346/6 +f 442/331/3 453/837/13 441/329/13 +f 435/326/10 446/838/11 434/347/11 +f 443/337/14 454/839/3 442/331/3 +f 436/336/4 447/840/10 435/326/10 +f 444/345/15 455/841/14 443/337/14 +f 437/342/17 448/842/4 436/336/4 +f 463/340/5 476/843/12 464/341/12 +f 460/335/4 473/844/17 461/343/17 +f 467/338/14 480/845/15 468/344/15 +f 457/350/6 470/846/11 458/327/11 +f 464/341/12 477/847/13 465/348/13 +f 461/343/17 474/848/16 462/349/16 +f 468/344/15 469/849/6 457/350/6 +f 458/327/11 471/850/10 459/328/10 +f 465/348/13 478/851/3 466/330/3 +f 462/349/16 475/852/5 463/333/5 +f 459/328/10 472/853/4 460/335/4 +f 466/330/3 479/854/14 467/338/14 +f 27/489/10 28/496/4 4/24/4 +f 26/490/11 27/489/10 3/26/10 +f 32/491/12 33/499/13 9/7/13 +f 35/492/14 36/494/15 12/14/15 +f 30/493/16 31/855/5 7/1/5 +f 36/494/15 25/495/6 1/21/6 +f 25/495/6 26/490/11 2/19/11 +f 28/496/4 29/500/17 5/29/17 +f 31/497/5 32/491/12 8/9/12 +f 34/498/3 35/492/14 11/16/14 +f 33/499/13 34/498/3 10/10/3 +f 29/500/17 30/493/16 6/3/16 +f 19/501/5 43/38/5 42/40/16 +f 18/502/16 42/40/16 41/41/17 +f 17/503/17 41/41/17 40/44/4 +f 16/504/4 40/44/4 39/48/10 +f 15/505/10 39/48/10 38/49/11 +f 14/506/11 38/49/11 37/53/6 +f 13/507/6 37/53/6 48/54/15 +f 24/508/15 48/54/15 47/58/14 +f 23/509/14 47/58/14 46/59/3 +f 22/510/3 46/59/3 45/63/13 +f 21/511/13 45/63/13 44/65/12 +f 20/512/12 44/65/12 43/66/5 +f 52/514/3 64/524/3 63/515/13 +f 59/517/17 71/526/17 70/518/4 +f 56/520/11 68/531/11 67/521/6 +f 53/523/14 65/533/14 64/524/3 +f 60/525/16 72/534/16 71/526/17 +f 50/527/12 62/535/12 61/528/5 +f 57/530/10 69/536/10 68/531/11 +f 54/532/15 66/538/15 65/533/14 +f 49/529/5 61/528/5 72/534/16 +f 51/516/13 63/515/13 62/535/12 +f 58/519/4 70/518/4 69/536/10 +f 55/537/6 67/856/6 66/538/15 +f 76/539/3 88/549/3 87/540/13 +f 83/542/17 95/551/17 94/543/4 +f 80/545/11 92/556/11 91/546/6 +f 77/548/14 89/558/14 88/549/3 +f 84/550/16 96/559/16 95/551/17 +f 74/552/12 86/560/12 85/553/5 +f 81/555/10 93/561/10 92/556/11 +f 78/557/15 90/563/15 89/558/14 +f 73/554/5 85/553/5 96/559/16 +f 75/541/13 87/540/13 86/560/12 +f 82/544/4 94/543/4 93/561/10 +f 79/562/6 91/857/6 90/563/15 +f 115/564/15 122/570/15 121/565/14 +f 110/567/11 117/572/11 116/568/6 +f 109/569/6 116/568/6 122/570/15 +f 111/571/10 118/574/10 117/572/11 +f 112/573/18 119/858/18 118/574/10 +f 114/566/14 121/565/14 120/575/19 +f 165/577/20 113/576/19 120/575/19 +f 141/579/5 153/859/5 152/580/16 +f 140/581/16 152/580/16 151/582/17 +f 139/583/17 151/582/17 150/584/4 +f 138/585/4 150/584/4 149/586/10 +f 137/587/10 149/586/10 148/588/11 +f 136/589/11 148/588/11 147/590/6 +f 135/591/6 147/590/6 158/592/15 +f 146/593/15 158/592/15 157/594/14 +f 145/595/14 157/594/14 156/596/3 +f 144/597/3 156/596/3 155/598/13 +f 143/599/13 155/598/13 154/600/12 +f 142/601/12 154/600/12 153/602/5 +f 166/604/21 119/858/18 112/573/18 +f 163/606/12 170/611/12 169/607/5 +f 160/609/17 167/613/17 166/604/21 +f 164/610/13 171/614/13 170/611/12 +f 161/612/16 168/616/16 167/613/17 +f 165/577/20 172/578/20 171/614/13 +f 162/615/5 169/860/5 168/616/16 +f 181/617/17 196/644/17 197/618/16 +f 175/620/10 189/645/10 190/621/18 +f 182/619/16 197/618/16 198/623/5 +f 177/625/19 192/641/19 191/626/14 +f 183/628/5 198/861/5 199/629/12 +f 178/627/14 191/626/14 193/631/15 +f 184/630/12 199/629/12 200/633/13 +f 179/632/15 193/631/15 188/635/6 +f 185/634/13 200/633/13 195/637/20 +f 176/622/18 190/621/18 194/639/21 +f 186/638/20 195/637/20 192/641/19 +f 173/636/6 188/635/6 187/642/11 +f 180/640/21 194/639/21 196/644/17 +f 174/643/11 187/642/11 189/645/10 +f 236/646/16 225/675/5 201/647/5 +f 229/649/14 230/658/15 206/650/15 +f 244/652/11 245/660/10 221/653/10 +f 237/655/5 238/662/12 214/656/12 +f 230/658/15 231/862/6 207/659/6 +f 245/660/10 246/667/4 222/661/4 +f 238/662/12 239/669/13 215/663/13 +f 231/664/6 232/671/11 208/665/11 +f 246/667/4 247/673/17 223/668/17 +f 239/669/13 240/677/3 216/670/3 +f 232/671/11 233/679/10 209/672/10 +f 247/673/17 248/681/16 224/674/16 +f 225/675/5 226/682/12 202/676/12 +f 240/677/3 241/684/14 217/678/14 +f 233/679/10 234/686/4 210/680/4 +f 248/681/16 237/655/5 213/657/5 +f 226/682/12 227/688/13 203/683/13 +f 241/684/14 242/690/15 218/685/15 +f 234/686/4 235/692/17 211/687/17 +f 227/688/13 228/693/3 204/689/3 +f 242/690/15 243/863/6 219/691/6 +f 235/692/17 236/646/16 212/648/16 +f 228/693/3 229/649/14 205/651/14 +f 243/694/6 244/652/11 220/654/11 +f 252/696/22 251/864/6 249/196/6 +f 256/697/22 257/699/22 252/696/22 +f 258/698/23 259/701/23 257/699/22 +f 261/700/24 262/732/24 259/701/23 +f 269/702/25 271/828/26 255/703/26 +f 268/416/22 267/203/6 265/705/6 +f 272/707/22 273/709/22 268/416/22 +f 274/708/23 275/711/23 273/709/22 +f 277/710/24 278/733/24 275/711/23 +f 263/715/29 313/730/30 316/716/30 +f 287/718/31 291/723/32 292/719/32 +f 290/219/33 294/722/34 293/721/34 +f 294/722/34 292/719/32 291/723/32 +f 288/725/31 284/865/5 301/866/5 +f 284/865/5 297/867/5 301/866/5 +f 295/868/5 283/215/5 299/724/5 +f 283/215/5 287/214/31 299/724/5 +f 288/725/31 301/866/5 299/724/5 +f 289/217/33 285/213/6 300/869/6 +f 285/213/6 296/870/6 300/869/6 +f 298/871/6 286/211/6 302/726/6 +f 286/211/6 290/219/33 302/726/6 +f 289/217/33 300/869/6 302/726/6 +f 317/727/30 314/827/30 279/728/29 +f 261/700/24 260/745/24 319/731/27 +f 318/713/27 276/712/24 278/733/24 +f 325/734/22 326/742/35 324/735/35 +f 315/737/36 282/740/37 321/738/37 +f 320/437/36 327/207/2 328/739/2 +f 282/740/37 281/743/7 322/741/7 +f 326/742/35 329/227/6 330/226/6 +f 281/743/7 325/734/22 323/736/22 +f 318/713/27 319/731/27 331/744/28 +f 316/716/30 317/727/30 334/746/38 +f 344/747/39 356/872/58 353/748/40 +f 340/263/42 344/747/39 341/749/41 +f 337/750/44 342/873/56 343/751/45 +f 344/747/39 340/263/42 346/753/47 +f 341/749/41 351/762/55 349/755/49 +f 345/756/50 347/760/53 348/754/48 +f 352/757/51 351/762/55 353/758/40 +f 338/752/46 343/751/45 347/760/53 +f 350/761/54 349/755/49 351/762/55 +f 337/763/44 350/761/54 352/757/51 +f 353/748/40 356/872/58 355/765/57 +f 342/767/56 354/766/52 355/765/57 +f 347/760/53 355/770/57 356/769/58 +f 368/445/59 361/782/72 360/771/60 +f 372/772/62 358/874/86 359/773/63 +f 367/446/65 373/271/71 365/775/66 +f 371/777/68 370/875/87 364/778/69 +f 373/271/71 367/446/65 368/445/59 +f 369/774/64 370/875/87 371/777/68 +f 359/780/63 358/876/86 357/781/4 +f 364/778/69 366/776/67 362/783/3 +f 379/785/73 380/789/73 376/786/74 +f 381/788/75 382/791/75 380/789/73 +f 383/790/76 384/793/76 382/791/75 +f 385/792/77 386/795/77 384/793/76 +f 387/794/78 388/797/78 386/795/77 +f 389/796/1 390/877/1 388/797/78 +f 391/282/31 392/278/31 390/280/5 +f 393/277/32 394/273/32 392/278/31 +f 395/276/1 396/274/1 394/273/32 +f 397/275/37 398/878/37 400/798/2 +f 398/799/37 397/460/37 403/285/22 +f 401/281/79 402/803/79 404/801/22 +f 405/802/80 406/804/80 402/803/79 +f 406/804/80 405/802/80 378/805/25 +f 407/807/81 408/810/81 410/808/82 +f 408/810/81 407/807/81 413/811/83 +f 411/813/78 412/819/78 414/812/83 +f 416/814/73 415/879/73 409/809/82 +f 418/815/75 417/823/75 415/816/73 +f 419/818/77 420/821/77 412/819/78 +f 421/820/76 422/822/76 420/821/77 +f 422/822/76 421/820/76 417/823/75 +f 426/320/1 430/315/84 429/321/84 +f 423/824/2 427/825/75 428/313/75 +f 430/315/84 432/314/9 431/322/9 +f 427/825/75 431/880/85 432/826/85 +f 255/703/26 271/828/26 314/827/30 +f 433/346/6 445/836/6 456/831/15 +f 438/332/16 450/833/16 449/832/17 +f 439/334/5 451/881/5 450/833/16 +f 440/339/12 452/835/12 451/834/5 +f 441/329/13 453/837/13 452/835/12 +f 434/347/11 446/838/11 445/836/6 +f 442/331/3 454/839/3 453/837/13 +f 435/326/10 447/840/10 446/838/11 +f 443/337/14 455/841/14 454/839/3 +f 436/336/4 448/842/4 447/840/10 +f 444/345/15 456/831/15 455/841/14 +f 437/342/17 449/832/17 448/842/4 +f 463/340/5 475/882/5 476/843/12 +f 460/335/4 472/853/4 473/844/17 +f 467/338/14 479/854/14 480/845/15 +f 457/350/6 469/849/6 470/846/11 +f 464/341/12 476/843/12 477/847/13 +f 461/343/17 473/844/17 474/848/16 +f 468/344/15 480/845/15 469/849/6 +f 458/327/11 470/846/11 471/850/10 +f 465/348/13 477/847/13 478/851/3 +f 462/349/16 474/848/16 475/852/5 +f 459/328/10 471/850/10 472/853/4 +f 466/330/3 478/851/3 479/854/14 diff --git a/src/main/resources/assets/hbm/models/weapons/mike_hawk.obj b/src/main/resources/assets/hbm/models/weapons/mike_hawk.obj index fc5e21aa0..79fe254f9 100644 --- a/src/main/resources/assets/hbm/models/weapons/mike_hawk.obj +++ b/src/main/resources/assets/hbm/models/weapons/mike_hawk.obj @@ -1,153 +1,1217 @@ # Blender v2.79 (sub 0) OBJ File: 'mike_hawk.blend' # www.blender.org -o Cylinder -v 0.000000 1.000000 0.250000 -v -10.125000 1.000000 0.250001 -v 0.000000 0.875000 0.216506 -v -10.125000 0.875000 0.216507 -v 0.000000 0.783494 0.125000 -v -10.125000 0.783494 0.125001 -v -0.000000 0.750000 0.000000 -v -10.125000 0.750000 0.000001 -v -0.000000 0.783494 -0.125000 -v -10.125000 0.783494 -0.124999 -v -0.000000 0.875000 -0.216506 -v -10.125000 0.875000 -0.216506 -v -0.000000 1.000000 -0.250000 -v -10.125000 1.000000 -0.249999 -v -0.000000 1.125000 -0.216506 -v -10.125000 1.125000 -0.216506 -v -0.000000 1.216506 -0.125000 -v -10.125000 1.216506 -0.124999 -v -0.000000 1.250000 0.000000 -v -10.125000 1.250000 0.000001 -v 0.000000 1.216506 0.125000 -v -10.125000 1.216506 0.125001 -v 0.000000 1.125000 0.216506 -v -10.125000 1.125000 0.216507 -v -10.125000 0.906250 0.162381 -v -10.125000 1.000000 0.187501 -v -10.125000 0.837620 0.093751 -v -10.125000 0.812500 0.000001 -v -10.125000 0.837620 -0.093749 -v -10.125000 0.906250 -0.162379 -v -10.125000 1.000000 -0.187499 -v -10.125000 1.093750 -0.162379 -v -10.125000 1.162380 -0.093749 -v -10.125000 1.187500 0.000001 -v -10.125000 1.162380 0.093751 -v -10.125000 1.093750 0.162381 -v 0.000000 0.906250 0.162368 -v 0.000000 1.000000 0.187489 -v 0.000000 0.837620 0.093739 -v -0.000000 0.812500 -0.000011 -v -0.000000 0.837620 -0.093761 -v -0.000000 0.906250 -0.162391 -v -0.000000 1.000000 -0.187511 -v -0.000000 1.093750 -0.162391 -v -0.000000 1.162380 -0.093761 -v -0.000000 1.187500 -0.000011 -v 0.000000 1.162380 0.093739 -v 0.000000 1.093750 0.162368 -v -10.000000 0.000000 -0.374999 -v -10.000000 0.000000 0.375001 -v -3.500000 0.000000 -0.375000 -v -10.000000 1.000000 0.250001 -v -10.000000 0.875000 0.216507 -v -10.000000 0.783494 0.125001 -v -10.000000 0.750000 0.000001 -v -10.000000 0.783494 -0.124999 -v -10.000000 0.875000 -0.216506 -v -10.000000 1.000000 -0.249999 -v -10.000000 1.125000 -0.216506 -v -10.000000 1.216506 -0.124999 -v -10.000000 1.250000 0.000001 -v -10.000000 1.216506 0.125000 -v -10.000000 1.125000 0.216507 -v -10.000000 -0.250000 -0.124999 -v -10.000000 -0.250000 0.125001 -v -10.000000 1.500000 -0.249999 -v -10.000000 1.375000 -0.374999 -v -10.000000 1.375000 0.375001 -v -10.000000 1.500000 0.250001 -v -1.500000 1.500000 0.250000 -v -1.500000 1.375000 -0.375000 -v -1.500000 1.500000 -0.250000 -v -1.500000 1.500000 0.000000 -v -1.500000 1.000000 -0.375000 -v 0.000000 1.125000 0.216506 -v 0.000000 1.216506 0.125000 -v 0.000000 1.500000 0.250000 -v 0.000000 1.000000 0.250000 -v 0.000000 1.500000 0.000000 -v 0.000000 1.000000 -0.375000 -v -1.500000 1.000000 -0.250000 -v 0.000000 1.000000 -0.250000 -v -1.500000 1.375000 0.000000 -v 0.000000 1.375000 0.000000 -v -1.500000 1.375000 -0.250000 -v -1.500000 1.000000 -0.250000 -v -1.500000 1.375000 0.000000 -v -1.500000 1.375000 -0.250000 -v -0.000000 1.000000 -0.250000 -v 0.000000 1.375000 0.000000 -v -0.000000 1.375000 -0.250000 -v 0.000000 1.375000 0.250000 -v 0.000000 1.250000 0.000000 -v -0.000000 1.125000 -0.216506 -v -0.000000 1.216506 -0.125000 -v 0.000000 1.375000 -0.375000 -v 0.000000 1.500000 -0.250000 -v 0.000000 1.375000 -0.250000 -v -3.500000 -0.250000 0.125000 -v -3.500000 -0.250000 -0.125000 -v 3.000000 1.500000 0.250000 -v 3.062500 1.375000 0.375000 -v 3.062500 1.375000 -0.375000 -v 3.000000 1.500000 -0.250000 -v 1.500000 1.375000 -0.250000 -v 0.000000 0.875000 0.216506 -v 0.000000 0.783494 0.125000 -v -0.000000 0.750000 0.000000 -v -0.000000 0.783494 -0.125000 -v -0.000000 0.875000 -0.216506 -v 1.500000 1.000000 -0.250000 -v 1.500000 1.000000 0.250000 -v 1.500000 0.875000 0.216506 -v 1.500000 0.783494 0.125000 -v 1.500000 0.750000 0.000000 -v 1.500000 0.783494 -0.125000 -v 1.500000 0.875000 -0.216506 -v 1.500000 1.000000 -0.250000 -v 1.500000 1.375000 0.000000 -v 1.500000 1.375000 0.250000 -v 3.500000 0.500000 -0.375000 -v 3.500000 0.500000 0.375000 -v 3.500000 0.000000 -0.375000 -v 3.500000 0.000000 0.375000 +o SlideM +v -10.000000 0.000000 0.374999 +v -10.000000 0.000000 -0.375001 v -3.500000 0.000000 0.375000 -v -3.500000 -0.187500 0.125000 -v 3.500000 -0.187500 0.125000 +v -10.000000 1.000000 -0.250001 +v -10.000000 0.875000 -0.216507 +v -10.000000 0.783494 -0.125001 +v -10.000000 0.750000 -0.000001 +v -10.000000 0.783494 0.124999 +v -10.000000 0.875000 0.216506 +v -10.000000 1.000000 0.249999 +v -10.000000 1.125000 0.216506 +v -10.000000 1.216506 0.124999 +v -10.000000 1.250000 -0.000001 +v -10.000000 1.216506 -0.125000 +v -10.000000 1.125000 -0.216507 +v -10.000000 -0.250000 0.124999 +v -10.000000 -0.250000 -0.125001 +v -10.000000 1.500000 0.249999 +v -10.000000 1.375000 0.374999 +v -10.000000 1.375000 -0.375001 +v -10.000000 1.500000 -0.250001 +v -1.500000 1.500000 -0.250000 +v -1.500000 1.375000 0.375000 +v -1.500000 1.500000 0.250000 +v -1.500000 1.500000 0.000000 +v -1.500000 1.000000 0.375000 +v 0.000000 1.500000 -0.250000 +v 0.000000 1.500000 0.000000 +v 0.000000 1.000000 0.375000 +v -1.500000 1.000000 0.250000 +v 0.000000 1.000000 0.250000 +v -1.500000 1.375000 0.000000 +v 0.000000 1.375000 0.000000 +v -1.500000 1.375000 0.250000 +v 0.000000 1.375000 0.375000 +v 0.000000 1.500000 0.250000 +v 0.000000 1.375000 0.250000 +v -3.500000 -0.250000 -0.125000 +v -3.500000 -0.250000 0.125000 +v 3.000000 1.500000 -0.250000 +v 3.062500 1.375000 -0.375000 +v 3.062500 1.375000 0.375000 +v 3.000000 1.500000 0.250000 +v 3.500000 0.500000 0.375000 +v 3.500000 0.500000 -0.375000 +v 3.500000 0.000000 0.375000 +v 3.500000 0.000000 -0.375000 +v -3.500000 0.000000 -0.375000 +v 3.500000 0.500000 -0.125000 +v 3.500000 0.500000 0.125000 +v 3.125000 1.250000 -0.125000 +v 3.125000 1.250000 0.125000 +v 3.500000 0.000000 -0.125000 +v 3.500000 0.000000 0.125000 +v 1.500000 0.000000 -0.125000 +v 1.500000 0.000000 0.125000 +v 1.500000 1.250000 0.125000 +v 1.500000 1.250000 -0.125000 +v -9.812500 1.500000 -0.187501 +v -8.937500 1.500000 -0.187501 +v -9.812500 1.500000 0.187499 +v -8.937500 1.500000 0.187499 +v -9.812500 1.625000 0.187499 +v -9.812500 1.625000 -0.187501 +v -9.187500 1.625000 -0.187501 +v -9.187500 1.625000 0.187499 +v -9.750000 1.625000 -0.062501 +v -9.250000 1.625000 -0.062501 +v -9.750000 1.625000 0.062499 +v -9.250000 1.625000 0.062499 +v -9.750000 1.750000 0.062499 +v -9.750000 1.750000 -0.062501 +v -9.250000 1.750000 -0.062501 +v -9.250000 1.750000 0.062499 +v 1.812500 1.500000 -0.187500 +v 2.437500 1.500000 -0.187500 +v 1.812500 1.500000 0.187500 +v 2.437500 1.500000 0.187500 +v 2.062500 1.625000 0.187500 +v 2.062500 1.625000 -0.187500 +v 2.437500 1.625000 -0.062500 +v 2.437500 1.625000 0.062500 +v 2.437500 1.750000 -0.187500 +v 2.437500 1.750000 0.187500 +v 2.437500 1.750000 -0.062500 +v 2.437500 1.750000 0.062500 +v 2.187500 1.625000 -0.187500 +v 2.187500 1.625000 0.187500 +v 2.312500 1.750000 -0.187500 +v 2.312500 1.750000 0.187500 +v 2.312500 1.750000 -0.062500 +v 2.312500 1.750000 0.062500 +v 2.187500 1.625000 -0.062500 +v 2.187500 1.625000 0.062500 +vt 0.348718 0.713178 +vt 0.430769 0.542636 +vt 0.082051 0.542636 +vt 0.082051 0.186047 +vt 0.348718 0.217054 +vt 0.348718 0.186047 +vt 0.430769 0.527132 +vt 0.082051 0.527132 +vt 0.430769 0.496124 +vt 0.430769 0.465116 +vt 0.082051 0.465116 +vt 0.070258 0.480977 +vt 0.071623 0.496376 +vt 0.076923 0.449612 +vt 0.066529 0.469703 +vt 0.076923 0.542636 +vt 0.070258 0.511776 +vt 0.066529 0.523049 +vt 0.020513 0.542636 +vt 0.061435 0.527176 +vt 0.020513 0.449612 +vt 0.056341 0.469703 +vt 0.061435 0.465577 +vt 0.051248 0.496376 +vt 0.052612 0.480977 +vt 0.492308 0.496124 +vt 0.492308 0.573643 +vt 0.430769 0.589147 +vt 0.492308 0.589147 +vt 0.430769 0.511628 +vt 0.435897 0.527132 +vt 0.446154 0.511628 +vt 0.435897 0.511628 +vt 0.430769 0.573643 +vt 0.430769 0.527132 +vt 0.487179 0.527132 +vt 0.492308 0.527132 +vt 0.487179 0.511628 +vt 0.476923 0.511628 +vt 0.476923 0.527132 +vt 0.487179 0.573643 +vt 0.492308 0.573643 +vt 0.492308 0.542636 +vt 0.615385 0.527132 +vt 0.492308 0.527132 +vt 0.635897 0.713178 +vt 0.492308 0.465116 +vt 0.615385 0.465116 +vt 0.615385 0.449612 +vt 0.348718 0.248062 +vt 0.082051 0.279070 +vt 0.348718 0.279070 +vt 0.656410 0.449612 +vt 0.676923 0.480620 +vt 0.676923 0.449612 +vt 0.082051 0.217054 +vt 0.082051 0.248062 +vt 0.635897 0.279070 +vt 0.358974 0.279070 +vt 0.358974 0.186047 +vt 0.000000 0.883721 +vt 0.082051 0.883721 +vt 0.082051 0.821705 +vt 0.625641 0.480620 +vt 0.620513 0.449612 +vt 0.620513 0.542636 +vt 0.625641 0.511628 +vt 0.656410 0.542636 +vt 0.656410 0.480620 +vt 0.348718 0.806202 +vt 0.553846 0.775194 +vt 0.553846 0.744186 +vt 0.676923 0.542636 +vt 0.656410 0.511628 +vt 0.082051 0.604651 +vt 0.082051 0.542636 +vt 0.000000 0.542636 +vt 0.000000 0.697674 +vt 0.066667 0.728682 +vt 0.066667 0.697674 +vt 0.169231 0.775194 +vt 0.194872 0.728682 +vt 0.169231 0.728682 +vt 0.164103 0.728682 +vt 0.164103 0.775194 +vt 0.194872 0.775194 +vt 0.169231 0.790698 +vt 0.205128 0.790698 +vt 0.169231 0.713178 +vt 0.205128 0.713178 +vt 0.205128 0.775194 +vt 0.205128 0.728682 +vt 0.210256 0.744186 +vt 0.230769 0.728682 +vt 0.210256 0.728682 +vt 0.235897 0.744186 +vt 0.235897 0.728682 +vt 0.205128 0.728682 +vt 0.205128 0.744186 +vt 0.230769 0.744186 +vt 0.210256 0.759690 +vt 0.230769 0.759690 +vt 0.230769 0.713178 +vt 0.210256 0.713178 +vt 0.066667 0.217054 +vt 0.071795 0.232558 +vt 0.071795 0.217054 +vt 0.082051 0.310078 +vt 0.071795 0.325581 +vt 0.082051 0.325581 +vt 0.061538 0.279070 +vt 0.046154 0.294574 +vt 0.071795 0.294574 +vt 0.082051 0.263566 +vt 0.082051 0.217054 +vt 0.076923 0.248062 +vt 0.066667 0.341085 +vt 0.056410 0.294574 +vt 0.056410 0.341085 +vt 0.066667 0.248062 +vt 0.071795 0.263566 +vt 0.071795 0.248062 +vt 0.076923 0.341085 +vt 0.076923 0.294574 +vt 0.071795 0.310078 +vt 0.061538 0.232558 +vt 0.066667 0.232558 +vt 0.061538 0.263566 +vt 0.066667 0.263566 +vt 0.071795 0.294574 +vt 0.066667 0.294574 +vt 0.071795 0.186047 +vt 0.056410 0.201550 +vt 0.061538 0.201550 +vt 0.615385 0.542636 +vt 0.082051 0.713178 +vt 0.056341 0.523049 +vt 0.010256 0.511628 +vt 0.052612 0.511776 +vt 0.010256 0.480620 +vt 0.430769 0.573643 +vt 0.492308 0.511628 +vt 0.446154 0.527132 +vt 0.435897 0.573643 +vt 0.082051 0.449612 +vt 0.635897 0.341085 +vt 0.000000 0.728682 +vt 0.635897 0.806202 +vt 0.635897 0.775194 +vt 0.635897 0.744186 +vt 0.676923 0.511628 +vt 0.056410 0.279070 +vt 0.076923 0.232558 +vt 0.082051 0.341085 +vt 0.082051 0.294574 +vt 0.061538 0.217054 +vt 0.061538 0.248062 +vt 0.071795 0.341085 +vt 0.046154 0.186047 +vt 0.635897 0.651163 +vn -0.0000 0.0000 1.0000 +vn -0.0000 -0.7071 0.7071 +vn -0.0000 0.7071 0.7071 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.0000 -1.0000 +vn 0.8944 0.4472 0.0000 +vn 0.4472 0.8944 0.0000 +vn -0.4472 0.8944 0.0000 +vn -0.7071 0.7071 0.0000 +s off +f 3/1/1 23/2/1 19/3/1 +f 1/4/2 39/5/2 3/6/2 +f 19/3/3 24/7/3 18/8/3 +f 25/9/4 22/10/4 21/11/4 +f 21/11/5 14/12/5 13/13/5 +f 14/12/5 20/14/5 15/15/5 +f 19/16/5 12/17/5 11/18/5 +f 1/19/5 19/16/5 10/20/5 +f 2/21/5 5/22/5 4/23/5 +f 7/24/5 6/25/5 2/21/5 +f 28/26/4 22/10/4 25/9/4 +f 31/27/4 26/28/4 29/29/4 +f 32/30/1 28/26/1 25/9/1 +f 34/31/6 25/32/6 24/33/6 +f 26/34/6 34/31/6 23/35/6 +f 23/35/6 34/31/6 24/33/6 +f 37/36/5 35/37/5 36/38/5 +f 37/36/5 28/39/5 33/40/5 +f 35/37/5 31/41/5 29/42/5 +f 35/43/3 43/44/3 36/45/3 +f 29/29/1 3/1/1 46/46/1 +f 27/47/7 40/48/7 41/49/7 +f 28/26/4 43/44/4 40/48/4 +f 38/50/8 2/51/8 48/52/8 +f 45/53/6 53/54/6 47/55/6 +f 38/50/9 16/56/9 17/57/9 +f 48/52/10 41/49/10 47/58/10 +f 39/5/6 48/59/6 3/60/6 +f 55/61/1 53/62/1 49/63/1 +f 43/44/11 51/64/11 40/48/11 +f 40/48/11 51/64/11 41/65/11 +f 42/66/11 52/67/11 43/44/11 +f 44/68/11 52/67/11 42/66/11 +f 45/53/11 51/64/11 49/69/11 +f 48/70/9 55/71/9 56/72/9 +f 46/73/6 50/74/6 44/68/6 +f 50/75/10 54/76/10 56/77/10 +f 57/78/9 51/79/9 52/80/9 +f 63/81/4 65/82/4 64/83/4 +f 63/81/5 59/84/5 61/85/5 +f 66/86/1 61/87/1 62/88/1 +f 59/89/10 65/82/10 60/90/10 +f 65/82/12 62/91/12 60/92/12 +f 71/93/4 73/94/4 72/95/4 +f 73/94/6 70/96/6 68/97/6 +f 71/93/5 67/98/5 69/99/5 +f 74/100/1 69/101/1 70/102/1 +f 72/95/10 68/103/10 67/104/10 +f 89/105/4 85/106/4 83/107/4 +f 81/108/4 94/109/4 82/110/4 +f 88/111/1 77/112/1 78/113/1 +f 78/114/6 76/115/6 82/116/6 +f 79/117/13 75/118/13 77/119/13 +f 92/120/4 84/121/4 86/122/4 +f 92/123/10 82/110/10 94/109/10 +f 81/108/1 91/124/1 93/125/1 +f 89/105/14 93/126/14 91/127/14 +f 92/120/14 88/128/14 90/129/14 +f 93/125/4 87/130/4 80/131/4 +f 76/132/10 80/133/10 87/134/10 +f 46/46/1 42/135/1 29/29/1 +f 19/3/1 1/136/1 3/1/1 +f 3/1/1 26/28/1 23/2/1 +f 1/4/2 16/56/2 39/5/2 +f 19/3/3 23/2/3 24/7/3 +f 21/11/4 18/8/4 25/9/4 +f 18/8/4 24/7/4 25/9/4 +f 13/13/5 12/17/5 18/8/5 +f 18/8/5 21/11/5 13/13/5 +f 14/12/5 21/11/5 20/14/5 +f 19/16/5 18/8/5 12/17/5 +f 10/20/5 9/137/5 1/19/5 +f 19/16/5 11/18/5 10/20/5 +f 4/23/5 15/15/5 20/14/5 +f 20/14/5 2/21/5 4/23/5 +f 16/138/5 1/19/5 2/21/5 +f 1/19/5 9/137/5 8/139/5 +f 1/19/5 8/139/5 7/24/5 +f 2/21/5 17/140/5 16/138/5 +f 6/25/5 5/22/5 2/21/5 +f 1/19/5 7/24/5 2/21/5 +f 28/26/4 27/47/4 22/10/4 +f 31/27/4 30/141/4 26/28/4 +f 32/30/1 33/142/1 28/26/1 +f 34/31/6 32/143/6 25/32/6 +f 26/34/6 30/144/6 34/31/6 +f 37/36/5 36/38/5 28/39/5 +f 35/37/5 37/36/5 31/41/5 +f 35/43/3 42/135/3 43/44/3 +f 29/29/1 26/28/1 3/1/1 +f 41/49/7 20/145/7 22/10/7 +f 20/145/7 21/11/7 22/10/7 +f 41/49/7 22/10/7 27/47/7 +f 40/48/4 27/47/4 28/26/4 +f 28/26/4 36/45/4 43/44/4 +f 38/50/8 17/57/8 2/51/8 +f 45/53/6 49/69/6 53/54/6 +f 38/50/9 39/5/9 16/56/9 +f 48/52/10 2/51/10 20/145/10 +f 20/145/10 41/49/10 48/52/10 +f 41/49/10 45/146/10 47/58/10 +f 39/5/6 38/50/6 48/59/6 +f 49/63/1 51/79/1 55/61/1 +f 51/79/1 58/147/1 55/61/1 +f 43/44/11 52/67/11 51/64/11 +f 44/68/11 50/74/11 52/67/11 +f 45/53/11 41/65/11 51/64/11 +f 46/46/9 3/1/9 56/72/9 +f 3/1/9 48/70/9 56/72/9 +f 48/70/9 47/148/9 55/71/9 +f 47/148/9 53/149/9 55/71/9 +f 56/72/9 54/150/9 46/46/9 +f 46/73/6 54/151/6 50/74/6 +f 57/78/10 52/80/10 56/77/10 +f 52/80/10 50/75/10 56/77/10 +f 57/78/9 58/147/9 51/79/9 +f 63/81/4 66/86/4 65/82/4 +f 63/81/5 64/83/5 59/84/5 +f 66/86/1 63/81/1 61/87/1 +f 59/89/10 64/83/10 65/82/10 +f 65/82/12 66/86/12 62/91/12 +f 71/93/4 74/100/4 73/94/4 +f 73/94/6 74/100/6 70/96/6 +f 71/93/5 72/95/5 67/98/5 +f 74/100/1 71/93/1 69/101/1 +f 72/95/10 73/94/10 68/103/10 +f 89/105/4 91/127/4 85/106/4 +f 81/108/4 93/125/4 94/109/4 +f 78/113/1 84/121/1 90/129/1 +f 88/111/1 79/152/1 77/112/1 +f 78/113/1 90/129/1 88/111/1 +f 76/115/6 83/107/6 81/153/6 +f 83/107/6 85/106/6 81/153/6 +f 86/122/6 84/121/6 82/116/6 +f 84/121/6 78/114/6 82/116/6 +f 76/115/6 81/153/6 82/116/6 +f 79/117/13 80/131/13 75/118/13 +f 92/120/4 90/129/4 84/121/4 +f 92/123/10 86/154/10 82/110/10 +f 81/108/1 85/155/1 91/124/1 +f 89/105/14 87/156/14 93/126/14 +f 92/120/14 94/157/14 88/128/14 +f 80/131/4 79/117/4 94/109/4 +f 79/117/4 88/158/4 94/109/4 +f 94/109/4 93/125/4 80/131/4 +f 76/132/10 75/159/10 80/133/10 +f 87/134/10 89/105/10 76/132/10 +f 89/105/10 83/107/10 76/132/10 +f 44/160/1 42/135/1 46/46/1 +f 42/135/1 35/43/1 29/29/1 +o GripM +v 0.000000 1.000000 -0.250000 +v -10.125000 1.000000 -0.250001 +v 0.000000 0.875000 -0.216506 +v -10.125000 0.875000 -0.216507 +v 0.000000 0.783494 -0.125000 +v -10.125000 0.783494 -0.125001 +v -0.000000 0.750000 0.000000 +v -10.125000 0.750000 -0.000001 +v -0.000000 0.783494 0.125000 +v -10.125000 0.783494 0.124999 +v -0.000000 0.875000 0.216506 +v -10.125000 0.875000 0.216506 +v -0.000000 1.000000 0.250000 +v -10.125000 1.000000 0.249999 +v -0.000000 1.125000 0.216506 +v -10.125000 1.125000 0.216506 +v -0.000000 1.216506 0.125000 +v -10.125000 1.216506 0.124999 +v -0.000000 1.250000 0.000000 +v -10.125000 1.250000 -0.000001 +v 0.000000 1.216506 -0.125000 +v -10.125000 1.216506 -0.125001 +v 0.000000 1.125000 -0.216506 +v -10.125000 1.125000 -0.216507 +v -10.125000 0.906250 -0.162381 +v -10.125000 1.000000 -0.187501 +v -10.125000 0.837620 -0.093751 +v -10.125000 0.812500 -0.000001 +v -10.125000 0.837620 0.093749 +v -10.125000 0.906250 0.162379 +v -10.125000 1.000000 0.187499 +v -10.125000 1.093750 0.162379 +v -10.125000 1.162380 0.093749 +v -10.125000 1.187500 -0.000001 +v -10.125000 1.162380 -0.093751 +v -10.125000 1.093750 -0.162381 +v 0.000000 0.906250 -0.162368 +v 0.000000 1.000000 -0.187489 +v 0.000000 0.837620 -0.093739 +v -0.000000 0.812500 0.000011 +v -0.000000 0.837620 0.093761 +v -0.000000 0.906250 0.162391 +v -0.000000 1.000000 0.187511 +v -0.000000 1.093750 0.162391 +v -0.000000 1.162380 0.093761 +v -0.000000 1.187500 0.000011 +v 0.000000 1.162380 -0.093739 +v 0.000000 1.093750 -0.162368 +v 0.000000 1.125000 -0.216506 +v 0.000000 1.216506 -0.125000 +v 0.000000 1.000000 -0.250000 +v -1.500000 1.000000 0.250000 +v -1.500000 1.375000 0.000000 +v -1.500000 1.375000 0.250000 +v -0.000000 1.000000 0.250000 +v 0.000000 1.375000 0.000000 +v -0.000000 1.375000 0.250000 +v 0.000000 1.375000 -0.250000 +v 0.000000 1.250000 0.000000 +v -0.000000 1.125000 0.216506 +v -0.000000 1.216506 0.125000 +v 1.500000 1.375000 0.250000 +v 0.000000 0.875000 -0.216506 +v 0.000000 0.783494 -0.125000 +v -0.000000 0.750000 0.000000 +v -0.000000 0.783494 0.125000 +v -0.000000 0.875000 0.216506 +v 1.500000 1.000000 0.250000 +v 1.500000 1.000000 -0.250000 +v 1.500000 0.875000 -0.216506 +v 1.500000 0.783494 -0.125000 +v 1.500000 0.750000 0.000000 +v 1.500000 0.783494 0.125000 +v 1.500000 0.875000 0.216506 +v 1.500000 1.000000 0.250000 +v 1.500000 1.375000 0.000000 +v 1.500000 1.375000 -0.250000 v -3.500000 -0.187500 -0.125000 v 3.500000 -0.187500 -0.125000 -v -3.500000 0.000000 -0.312500 +v -3.500000 -0.187500 0.125000 +v 3.500000 -0.187500 0.125000 v -3.500000 0.000000 0.312500 -v 3.500000 0.000000 0.312500 +v -3.500000 0.000000 -0.312500 v 3.500000 0.000000 -0.312500 -v 3.500000 0.500000 0.125000 -v 3.500000 0.500000 -0.125000 -v 3.125000 1.250000 0.125000 -v 3.125000 1.250000 -0.125000 -v 3.500000 0.000000 0.125000 -v 3.500000 0.000000 -0.125000 -v 1.500000 0.000000 0.125000 -v 1.500000 0.000000 -0.125000 -v 3.000000 1.250000 0.125000 +v 3.500000 0.000000 0.312500 v 3.000000 1.250000 -0.125000 -v 3.000000 0.000000 -0.125000 +v 3.000000 1.250000 0.125000 v 3.000000 0.000000 0.125000 -v 1.500000 1.250000 -0.125000 -v 1.500000 1.250000 0.125000 +v 3.000000 0.000000 -0.125000 +v 1.250000 -1.687500 -0.125000 +v 1.250000 -1.687500 0.125000 +v 0.500000 -1.437500 -0.125000 +v 0.500000 -1.437500 0.125000 +v -1.000000 -1.437500 -0.125000 +v -1.000000 -1.437500 0.125000 +v -1.250000 -0.687500 -0.125000 +v -1.250000 -0.687500 0.125000 +v -1.750000 -0.187500 -0.125000 +v -1.750000 -0.187500 0.125000 +v -0.750000 -0.187500 -0.125000 +v -0.750000 -0.187500 0.125000 +v -1.000000 -0.687500 -0.125000 +v -1.000000 -0.687500 0.125000 +v -0.875000 -1.187500 -0.125000 +v -0.875000 -1.187500 0.125000 +v 0.500000 -1.187500 -0.125000 +v 0.500000 -1.187500 0.125000 +v 0.750000 -0.687500 -0.125000 +v 0.750000 -0.687500 0.125000 +v 0.625000 0.062500 -0.125000 +v 0.625000 0.062500 0.125000 +v 1.000000 0.187500 -0.125000 +v 0.750000 -0.187500 -0.125000 +v 1.750000 -3.187500 -0.250000 +v 2.625000 -0.187500 -0.250000 +v 2.750000 -0.937500 -0.250000 +v 3.112560 -1.437500 -0.250000 +v 3.500000 -2.437500 -0.250000 +v 1.500000 -3.437500 -0.250000 +v 3.500000 -3.437500 -0.250000 +v 1.000000 0.187500 0.125000 +v 0.750000 -0.187500 0.125000 +v 0.000000 -0.187500 -0.125000 +v 0.000000 -0.187500 0.125000 +v 0.125000 -0.562500 -0.125000 +v 0.125000 -0.562500 0.125000 +v 0.000000 -1.062500 -0.125000 +v 0.000000 -1.062500 0.125000 +v 0.375000 -0.562500 -0.125000 +v 0.375000 -0.562500 0.125000 +v 0.437500 -0.187500 -0.125000 +v 0.437500 -0.187500 0.125000 +v 3.500000 -3.437500 0.250000 +v 1.500000 -3.437500 0.250000 +v 3.500000 -2.437500 0.250000 +v 3.112560 -1.437500 0.250000 +v 2.750000 -0.937500 0.250000 +v 2.625000 -0.187500 0.250000 +v 1.750000 -3.187500 0.250000 +v 1.250000 -1.687500 0.250000 +v 1.750000 -3.437500 0.500000 +v 3.250000 -3.437500 0.500000 +v 3.250000 -2.437500 0.500000 +v 2.862560 -1.437500 0.500000 +v 2.500000 -0.937500 0.500000 +v 2.375000 -0.187500 0.500000 +v 2.000000 -3.187500 0.500000 +v 1.000000 -0.187500 0.500000 +v 2.375000 0.187500 0.250000 +v 1.000000 0.187500 0.250000 +v 0.750000 -0.187500 0.250000 +v 1.250000 -1.687500 -0.250000 +v 3.250000 -3.437500 -0.500000 +v 1.750000 -3.437500 -0.500000 +v 3.250000 -2.437500 -0.500000 +v 2.862560 -1.437500 -0.500000 +v 2.500000 -0.937500 -0.500000 +v 2.375000 -0.187500 -0.500000 +v 2.000000 -3.187500 -0.500000 +v 2.375000 0.187500 -0.250000 +v 1.000000 -0.187500 -0.500000 +v 1.000000 0.187500 -0.250000 +v 0.750000 -0.187500 -0.250000 +v 3.000000 -0.187500 -0.250000 +v 3.000000 -0.187500 0.250000 +v 3.250000 0.062500 -0.250000 +v 3.250000 0.062500 0.250000 +v 2.750000 -0.562500 -0.250000 +v 2.750000 -0.562500 0.250000 +vt 0.420513 0.046512 +vt 0.417949 0.031008 +vt 0.417949 0.046512 +vt -0.000000 0.170543 +vt 0.002564 0.186047 +vt 0.002564 0.170543 +vt 0.420513 0.031008 +vt 0.417949 0.015504 +vt 0.420513 0.015504 +vt 0.417949 0.000000 +vt 0.420513 0.139535 +vt 0.417949 0.124031 +vt 0.417949 0.139535 +vt 0.417949 0.155039 +vt 0.420513 0.186047 +vt 0.417949 0.170543 +vt 0.417949 0.186047 +vt 0.420513 0.108527 +vt 0.417949 0.108527 +vt 0.420513 0.155039 +vt 0.420513 0.093023 +vt 0.417949 0.093023 +vt 0.417949 0.077519 +vt 0.420513 0.062016 +vt 0.417949 0.062016 +vt 0.000000 -0.000000 +vt 0.002564 0.015504 +vt 0.002564 -0.000000 +vt 0.000000 0.015504 +vt 0.002564 0.031008 +vt 0.000000 0.031008 +vt 0.002564 0.046512 +vt 0.000000 0.062016 +vt 0.002564 0.062016 +vt -0.000000 0.077519 +vt 0.002564 0.077519 +vt -0.000000 0.093023 +vt 0.002564 0.093023 +vt 0.000000 0.108527 +vt 0.002564 0.108527 +vt 0.000000 0.124031 +vt 0.002564 0.124031 +vt 0.000000 0.139535 +vt 0.002564 0.139535 +vt 0.002564 0.155039 +vt 0.000000 0.155039 +vt 0.246154 0.806202 +vt 0.184615 0.852713 +vt 0.246154 0.852713 +vt 0.246154 0.883721 +vt 0.182051 0.821705 +vt 0.179487 0.829457 +vt 0.169231 0.829457 +vt 0.166667 0.821705 +vt 0.164103 0.852713 +vt 0.102564 0.852713 +vt 0.164103 0.883721 +vt 0.082051 0.806202 +vt 0.082051 0.852713 +vt 0.092308 0.852713 +vt 0.087179 0.782946 +vt 0.084615 0.790698 +vt 0.541026 0.860465 +vt 0.253846 0.829457 +vt 0.253846 0.860465 +vt 0.253846 0.961240 +vt 0.541026 0.883721 +vt 0.253846 0.883721 +vt 0.541026 0.806202 +vt 0.541026 0.829457 +vt 0.548718 0.883721 +vt 0.246154 0.806202 +vt 0.010256 0.186047 +vt 0.000000 0.341085 +vt 0.010256 0.341085 +vt 0.805128 0.759690 +vt 0.835897 0.790698 +vt 0.835897 0.759690 +vt 0.743590 0.759690 +vt 0.805128 0.790698 +vt 0.712821 0.759690 +vt 0.743590 0.790698 +vt 0.692308 0.759690 +vt 0.712821 0.790698 +vt 0.712821 0.821705 +vt 0.692308 0.790698 +vt 0.692308 0.821705 +vt 0.733333 0.821705 +vt 0.712821 0.790698 +vt 0.789744 0.821705 +vt 0.733333 0.790698 +vt 0.810256 0.821705 +vt 0.789744 0.790698 +vt 0.841026 0.821705 +vt 0.810256 0.790698 +vt 0.884615 0.868217 +vt 0.905128 0.930233 +vt 0.894872 0.868217 +vt 0.900000 0.806202 +vt 0.894872 0.775194 +vt 0.956410 0.775194 +vt 0.956410 0.806202 +vt 0.987179 0.744186 +vt 0.966667 0.868217 +vt 0.961538 0.961240 +vt 0.966667 0.930233 +vt 0.976923 0.976744 +vt 0.956410 0.775194 +vt 0.900000 0.806202 +vt 0.894872 0.775194 +vt 0.966667 0.930233 +vt 0.976923 0.976744 +vt 0.961538 0.961240 +vt 0.966667 0.868217 +vt 0.884615 0.868217 +vt 0.894872 0.868217 +vt 0.987179 0.744186 +vt 0.905128 0.930233 +vt 0.864103 0.930233 +vt 0.661538 0.651163 +vt 0.671795 0.697674 +vt 0.671795 0.651163 +vt 0.661538 0.697674 +vt 0.671795 0.759690 +vt 0.661538 0.759690 +vt 0.671795 0.821705 +vt 0.661538 0.821705 +vt 0.671795 0.868217 +vt 0.651282 0.759690 +vt 0.651282 0.821705 +vt 0.689744 0.868217 +vt 0.682051 0.821705 +vt 0.728205 0.217054 +vt 0.728205 0.279070 +vt 0.738462 0.310078 +vt 0.846154 0.713178 +vt 0.830769 0.620155 +vt 0.830769 0.666667 +vt 0.810256 0.620155 +vt 0.794872 0.713178 +vt 0.810256 0.666667 +vt 0.866667 0.759690 +vt 0.830769 0.713178 +vt 0.830769 0.759690 +vt 0.774359 0.759690 +vt 0.810256 0.713178 +vt -0.000000 0.186047 +vt 0.420513 0.000000 +vt 0.420513 0.124031 +vt 0.420513 0.170543 +vt 0.420513 0.077519 +vt 0.000000 0.046512 +vt 0.184615 0.806202 +vt 0.184615 0.883721 +vt 0.174359 0.837209 +vt 0.174359 0.852713 +vt 0.164103 0.806202 +vt 0.102564 0.883721 +vt 0.102564 0.806202 +vt 0.100000 0.790698 +vt 0.097436 0.782946 +vt 0.092308 0.775194 +vt 0.082051 0.806202 +vt 0.541026 0.961240 +vt 0.253846 0.806202 +vt 0.548718 0.806202 +vt 0.246154 0.883721 +vt 0.000000 0.186047 +vt 0.692308 0.790698 +vt 0.841026 0.790698 +vt 0.864103 0.930233 +vt 0.956410 0.806202 +vt 0.661538 0.868217 +vt 0.643590 0.868217 +vt 0.682051 0.759690 +vt 0.800000 0.310078 +vt 0.800000 0.186047 +vt 0.810256 0.279070 +vt 0.810256 0.217054 +vt 0.738462 0.186047 +vt 0.810256 0.759690 +vt 0.835897 0.046512 +vt 0.835897 0.186047 +vt 0.835897 0.108527 +vt 0.835897 0.062016 +vt 0.835897 0.015504 +vt 0.835897 0.124031 +vt 0.835897 0.155039 +vt 0.835897 0.077519 +vt 0.835897 0.031008 +vt 0.835897 0.139535 +vt 0.835897 0.170543 +vt 0.835897 0.093023 +vt 0.102564 0.744186 +vt 0.164103 0.759690 +vt 0.164103 0.744186 +vt 0.102564 0.775194 +vt 0.164103 0.790698 +vt 0.164103 0.775194 +vt 0.102564 0.728682 +vt 0.164103 0.728682 +vt 0.102564 0.759690 +vt 0.102564 0.790698 +vt 0.164103 0.713178 +vt 0.102564 0.713178 +vt 0.830769 0.310078 +vt 0.810256 0.434109 +vt 0.830769 0.434109 +vt 0.810256 0.558140 +vt 0.830769 0.558140 +vt 0.697436 0.341085 +vt 0.676923 0.310078 +vt 0.676923 0.341085 +vt 0.682051 0.527132 +vt 0.697436 0.713178 +vt 0.692308 0.759690 +vt 0.697436 0.759690 +vt 0.748718 0.341085 +vt 0.697436 0.527132 +vt 0.692308 0.713178 +vt 0.717949 0.527132 +vt 0.738462 0.341085 +vt 0.748718 0.341085 +vt 0.784615 0.558140 +vt 0.800000 0.434109 +vt 0.707692 0.713178 +vt 0.707692 0.759690 +vt 0.764103 0.759690 +vt 0.764103 0.713178 +vt 0.774359 0.713178 +vt 0.769231 0.620155 +vt 0.779487 0.620155 +vt 0.810256 0.310078 +vt 0.794872 0.558140 +vt 0.738462 0.341085 +vt 0.728205 0.310078 +vt 0.707692 0.713178 +vt 0.769231 0.620155 +vt 0.738462 0.310078 +vt 0.810256 0.434109 +vt 0.800000 0.310078 +vt 0.810256 0.310078 +vt 0.794872 0.558140 +vt 0.800000 0.434109 +vt 0.779487 0.620155 +vt 0.784615 0.558140 +vt 0.774359 0.713178 +vt 0.764103 0.759690 +vt 0.707692 0.759690 +vt 0.764103 0.713178 +vt 0.697436 0.713178 +vt 0.676923 0.713178 +vt 0.682051 0.759690 +vt 0.682051 0.713178 +vt 0.717949 0.527132 +vt 0.835897 0.000000 +vt 0.697436 0.310078 +vt 0.676923 0.527132 +vt 0.692308 0.527132 +vt 0.728205 0.310078 +vt 0.676923 0.759690 +vn -1.0000 0.0000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.7071 -0.7071 +vn -0.3162 -0.9487 0.0000 +vn -0.9487 -0.3162 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.8944 -0.4472 0.0000 +vn 0.9701 0.2425 0.0000 +vn -0.8944 0.4472 0.0000 +vn -0.9864 -0.1644 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.9701 0.2425 0.0000 +vn 0.8000 -0.6000 0.0000 +vn 0.9864 -0.1644 0.0000 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 -0.8660 -0.5000 +vn -0.0000 -0.8660 0.5000 +vn -0.0000 -0.5000 0.8660 +vn -0.0000 0.5000 0.8660 +vn -0.0000 0.8660 0.5000 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 0.5000 -0.8660 +vn -0.0000 0.1305 0.9914 +vn 0.0000 0.2588 -0.9659 +vn 0.9239 0.0000 0.3827 +vn 0.9162 0.1662 -0.3645 +vn 0.9162 0.1662 0.3645 +vn 0.8287 0.4395 -0.3465 +vn 0.8287 0.4395 0.3465 +vn 0.8603 0.3367 -0.3828 +vn 0.8603 0.3367 0.3828 +vn 0.7733 -0.6340 0.0000 +vn 0.9571 -0.2898 0.0000 +vn -0.8727 0.2440 -0.4229 +vn -0.6861 0.6861 0.2418 +vn -0.8727 0.2440 0.4229 +vn 0.7071 -0.7071 0.0000 +vn -0.9301 0.1173 -0.3481 +vn -0.8321 0.5547 0.0000 +vn -0.5496 0.6292 -0.5496 +vn -0.2557 0.0494 -0.9655 +vn 0.3827 0.0000 -0.9239 +vn -0.4602 0.4602 -0.7592 +vn -0.8812 -0.2937 -0.3705 +vn -0.9912 0.1327 0.0000 +vn -0.8812 -0.2937 0.3705 +vn -0.2557 0.0494 0.9655 +vn 0.3830 0.2240 -0.8962 +vn 0.4161 0.0853 -0.9053 +vn -0.3931 0.1897 -0.8997 +vn 0.2291 0.5399 -0.8099 +vn 0.3304 0.2876 -0.8989 +vn 0.6853 0.2467 -0.6853 +vn 0.3243 0.1224 -0.9380 +vn 0.9239 0.0000 -0.3827 +vn -0.6861 0.6861 -0.2418 +vn -0.3931 0.1897 0.8997 +vn 0.3243 0.1224 0.9380 +vn -0.4602 0.4602 0.7592 +vn 0.3827 0.0000 0.9239 +vn 0.4161 0.0853 0.9053 +vn 0.3830 0.2240 0.8962 +vn 0.6853 0.2467 0.6853 +vn 0.2291 0.5399 0.8099 +vn -0.5496 0.6292 0.5496 +vn 0.3304 0.2876 0.8989 +vn -0.9301 0.1173 0.3481 +s off +f 125/161/15 106/162/15 108/163/15 +f 133/164/16 101/165/16 99/166/16 +f 124/167/15 104/168/15 106/162/15 +f 123/169/15 102/170/15 104/168/15 +f 120/171/15 118/172/15 96/173/15 +f 98/174/15 120/171/15 96/173/15 +f 122/175/15 100/176/15 102/177/15 +f 118/172/15 129/178/15 116/179/15 +f 100/176/15 119/180/15 98/174/15 +f 116/179/15 128/181/15 114/182/15 +f 128/181/15 112/183/15 114/182/15 +f 112/183/15 126/184/15 110/185/15 +f 110/185/15 125/161/15 108/163/15 +f 134/186/16 103/187/16 101/188/16 +f 135/189/16 105/190/16 103/187/16 +f 136/191/16 107/192/16 105/190/16 +f 107/192/16 138/193/16 109/194/16 +f 109/194/16 139/195/16 111/196/16 +f 111/196/16 140/197/16 113/198/16 +f 113/198/16 141/199/16 115/200/16 +f 115/200/16 142/201/16 117/202/16 +f 117/202/16 132/203/16 95/204/16 +f 132/203/16 97/205/16 95/204/16 +f 131/206/16 99/166/16 97/205/16 +f 146/207/17 151/208/17 148/209/17 +f 151/208/18 147/210/18 148/209/18 +f 151/208/16 154/211/16 155/212/16 +f 144/213/16 143/214/16 152/215/16 +f 171/216/19 150/217/19 152/215/19 +f 162/218/15 156/219/15 170/220/15 +f 167/221/15 168/222/15 162/218/15 +f 173/223/19 174/224/19 172/225/19 +f 176/226/18 178/227/18 177/228/18 +f 179/229/20 174/224/20 175/230/20 +f 177/228/21 173/223/21 172/225/21 +f 178/231/16 175/230/16 173/223/16 +f 176/232/15 172/225/15 174/224/15 +f 182/233/16 180/234/16 181/235/16 +f 187/236/22 184/237/22 185/238/22 +f 189/239/19 186/240/19 187/236/19 +f 191/241/23 188/242/23 189/239/23 +f 193/243/24 190/244/24 191/241/24 +f 197/245/25 194/246/25 195/247/25 +f 199/248/26 196/249/26 197/245/26 +f 201/250/18 198/251/18 199/248/18 +f 203/252/27 200/253/27 201/250/27 +f 205/254/28 202/255/28 203/252/28 +f 190/256/29 194/257/29 196/258/29 +f 190/256/29 198/259/29 188/260/29 +f 186/261/29 198/259/29 200/262/29 +f 184/263/29 200/262/29 202/264/29 +f 204/265/29 207/266/29 202/264/29 +f 207/266/29 204/265/29 206/267/29 +f 187/268/17 199/269/17 189/270/17 +f 216/271/17 215/272/17 205/273/17 +f 205/273/17 203/274/17 216/271/17 +f 191/275/17 199/269/17 197/276/17 +f 185/277/17 216/271/17 203/274/17 +f 191/275/17 195/278/17 193/279/17 +f 217/280/23 220/281/23 218/282/23 +f 219/283/30 222/284/30 220/281/30 +f 221/285/31 224/286/31 222/284/31 +f 223/287/32 226/288/32 224/286/32 +f 223/287/29 221/289/29 219/290/29 +f 226/288/17 218/291/17 220/292/17 +f 228/293/19 213/294/19 248/295/19 +f 232/296/17 231/297/17 263/298/17 +f 210/299/29 209/300/29 262/301/29 +f 243/302/17 259/303/17 261/304/17 +f 254/305/29 258/306/29 209/300/29 +f 263/298/17 259/303/17 232/296/17 +f 258/306/29 262/301/29 209/300/29 +f 125/161/15 124/167/15 106/162/15 +f 133/164/16 134/307/16 101/165/16 +f 124/167/15 123/169/15 104/168/15 +f 123/169/15 122/308/15 102/170/15 +f 120/171/15 130/309/15 118/172/15 +f 98/174/15 119/180/15 120/171/15 +f 122/175/15 121/310/15 100/176/15 +f 118/172/15 130/309/15 129/178/15 +f 100/176/15 121/310/15 119/180/15 +f 116/179/15 129/178/15 128/181/15 +f 128/181/15 127/311/15 112/183/15 +f 112/183/15 127/311/15 126/184/15 +f 110/185/15 126/184/15 125/161/15 +f 134/186/16 135/189/16 103/187/16 +f 135/189/16 136/191/16 105/190/16 +f 136/191/16 137/312/16 107/192/16 +f 107/192/16 137/312/16 138/193/16 +f 109/194/16 138/193/16 139/195/16 +f 111/196/16 139/195/16 140/197/16 +f 113/198/16 140/197/16 141/199/16 +f 115/200/16 141/199/16 142/201/16 +f 117/202/16 142/201/16 132/203/16 +f 132/203/16 131/206/16 97/205/16 +f 131/206/16 133/164/16 99/166/16 +f 146/207/17 149/313/17 151/208/17 +f 151/208/18 150/314/18 147/210/18 +f 153/315/16 150/316/16 155/212/16 +f 150/316/16 151/208/16 155/212/16 +f 151/208/16 149/313/16 154/211/16 +f 143/214/16 145/317/16 152/215/16 +f 152/215/16 150/316/16 144/213/16 +f 150/316/16 153/315/16 144/213/16 +f 171/216/19 170/318/19 150/217/19 +f 170/220/15 171/216/15 163/319/15 +f 163/319/15 162/218/15 170/220/15 +f 163/319/15 164/320/15 162/218/15 +f 164/320/15 165/321/15 162/218/15 +f 165/321/15 166/322/15 167/221/15 +f 168/222/17 169/323/17 162/218/17 +f 165/321/15 167/221/15 162/218/15 +f 173/223/19 175/230/19 174/224/19 +f 176/226/18 179/324/18 178/227/18 +f 179/229/20 176/325/20 174/224/20 +f 177/228/21 178/227/21 173/223/21 +f 178/231/16 179/326/16 175/230/16 +f 176/232/15 177/327/15 172/225/15 +f 182/233/16 183/328/16 180/234/16 +f 187/236/22 186/240/22 184/237/22 +f 189/239/19 188/242/19 186/240/19 +f 191/241/23 190/244/23 188/242/23 +f 193/243/24 192/329/24 190/244/24 +f 197/245/25 196/249/25 194/246/25 +f 199/248/26 198/251/26 196/249/26 +f 201/250/18 200/253/18 198/251/18 +f 203/252/27 202/255/27 200/253/27 +f 205/254/28 204/330/28 202/255/28 +f 190/256/29 192/331/29 194/257/29 +f 190/256/29 196/258/29 198/259/29 +f 186/261/29 188/260/29 198/259/29 +f 184/263/29 186/261/29 200/262/29 +f 202/264/29 207/266/29 184/263/29 +f 187/268/17 201/332/17 199/269/17 +f 191/275/17 189/270/17 199/269/17 +f 203/274/17 201/332/17 185/277/17 +f 201/332/17 187/268/17 185/277/17 +f 191/275/17 197/276/17 195/278/17 +f 217/280/23 219/283/23 220/281/23 +f 219/283/30 221/285/30 222/284/30 +f 221/285/31 223/287/31 224/286/31 +f 223/287/32 225/333/32 226/288/32 +f 219/290/29 217/334/29 225/333/29 +f 225/333/29 223/287/29 219/290/29 +f 220/292/17 222/335/17 224/286/17 +f 224/286/17 226/288/17 220/292/17 +f 248/295/19 247/336/19 236/337/19 +f 247/336/19 214/338/19 236/337/19 +f 214/338/19 227/339/19 236/337/19 +f 236/337/19 235/340/19 248/295/19 +f 235/340/19 228/293/19 248/295/19 +f 243/302/17 232/296/17 259/303/17 +f 254/305/29 260/341/29 258/306/29 +s 1 +f 97/205/33 96/173/29 95/204/29 +f 99/166/34 98/174/33 97/205/33 +f 101/165/19 100/176/34 99/166/34 +f 103/187/35 102/170/19 101/188/19 +f 105/190/36 104/168/35 103/187/35 +f 107/192/17 106/162/36 105/190/36 +f 109/194/37 108/163/17 107/192/17 +f 111/196/38 110/185/37 109/194/37 +f 113/198/18 112/183/38 111/196/38 +f 115/200/39 114/182/18 113/198/18 +f 117/202/40 116/179/39 115/200/39 +f 95/204/29 118/172/40 117/202/40 +f 137/342/29 124/167/40 125/161/29 +f 134/343/18 121/310/38 122/175/18 +f 141/344/35 128/181/19 129/178/35 +f 138/345/33 125/161/29 126/184/33 +f 135/346/39 122/308/18 123/169/39 +f 142/347/36 129/178/35 130/309/36 +f 131/348/37 120/171/17 119/180/37 +f 139/349/34 126/184/33 127/311/34 +f 136/350/40 123/169/39 124/167/40 +f 132/351/17 130/309/36 120/171/17 +f 133/352/38 119/180/37 121/310/38 +f 140/353/19 127/311/34 128/181/19 +f 167/354/39 159/355/18 160/356/39 +f 165/357/38 157/358/37 158/359/38 +f 168/360/40 160/356/39 161/361/40 +f 166/362/18 158/359/38 159/355/18 +f 145/317/41 164/363/37 163/319/41 +f 168/360/40 149/364/42 169/365/42 +f 145/317/41 171/216/17 152/215/17 +f 227/366/43 212/367/44 229/368/45 +f 229/368/45 211/369/46 230/370/47 +f 230/370/47 210/299/48 231/297/49 +f 258/306/50 263/298/51 262/301/51 +f 208/371/52 228/372/53 233/373/54 +f 208/371/52 233/373/54 185/374/23 +f 260/341/55 259/303/50 258/306/50 +f 257/375/56 206/376/57 256/377/58 +f 253/378/59 247/336/60 248/295/61 +f 246/379/62 207/380/63 257/375/56 +f 234/381/64 233/382/54 241/383/65 +f 250/384/66 249/385/67 253/378/59 +f 255/386/68 257/375/56 256/387/58 +f 255/386/68 254/388/69 252/389/70 +f 252/389/70 254/388/69 209/390/71 +f 251/391/72 209/390/71 210/392/48 +f 247/336/60 212/367/44 214/393/73 +f 250/384/66 210/392/48 211/394/46 +f 249/385/67 211/394/46 212/367/44 +f 208/395/52 248/295/61 213/396/74 +f 242/397/75 241/383/65 239/398/76 +f 233/382/54 235/399/77 241/383/65 +f 229/400/45 236/401/78 227/402/43 +f 230/403/47 237/404/79 229/400/45 +f 231/405/49 238/406/80 230/403/47 +f 232/407/81 239/398/76 231/405/49 +f 242/397/75 243/408/82 244/409/83 +f 240/410/84 232/407/81 243/408/82 +f 244/409/83 245/411/85 242/397/75 +f 241/383/65 235/399/77 236/401/78 +f 245/412/85 215/413/57 216/414/63 +f 185/374/23 245/412/85 216/414/63 +f 262/301/51 231/297/49 210/299/48 +f 253/378/59 246/415/62 255/386/68 +f 97/205/33 98/174/33 96/173/29 +f 99/166/34 100/176/34 98/174/33 +f 101/165/19 102/177/19 100/176/34 +f 103/187/35 104/168/35 102/170/19 +f 105/190/36 106/162/36 104/168/35 +f 107/192/17 108/163/17 106/162/36 +f 109/194/37 110/185/37 108/163/17 +f 111/196/38 112/183/38 110/185/37 +f 113/198/18 114/182/18 112/183/38 +f 115/200/39 116/179/39 114/182/18 +f 117/202/40 118/172/40 116/179/39 +f 95/204/29 96/173/29 118/172/40 +f 137/342/29 136/350/40 124/167/40 +f 134/343/18 133/352/38 121/310/38 +f 141/344/35 140/353/19 128/181/19 +f 138/345/33 137/342/29 125/161/29 +f 135/346/39 134/416/18 122/308/18 +f 142/347/36 141/344/35 129/178/35 +f 131/348/37 132/351/17 120/171/17 +f 139/349/34 138/345/33 126/184/33 +f 136/350/40 135/346/39 123/169/39 +f 132/351/17 142/347/36 130/309/36 +f 133/352/38 131/348/37 119/180/37 +f 140/353/19 139/349/34 127/311/34 +f 167/354/39 166/362/18 159/355/18 +f 165/357/38 164/363/37 157/358/37 +f 168/360/40 167/354/39 160/356/39 +f 166/362/18 165/357/38 158/359/38 +f 145/317/41 157/358/37 164/363/37 +f 168/360/40 161/361/40 149/364/42 +f 145/317/41 163/319/41 171/216/17 +f 227/366/43 214/393/73 212/367/44 +f 229/368/45 212/367/44 211/369/46 +f 230/370/47 211/369/46 210/299/48 +f 258/306/50 259/303/50 263/298/51 +f 208/371/52 213/417/74 228/372/53 +f 234/418/64 185/374/23 233/373/54 +f 185/374/23 184/419/23 208/371/52 +f 184/419/23 246/379/62 208/371/52 +f 260/341/55 261/304/55 259/303/50 +f 257/375/56 207/380/63 206/376/57 +f 246/379/62 184/419/23 207/380/63 +f 241/383/65 242/397/75 234/381/64 +f 242/397/75 245/411/85 234/381/64 +f 249/385/67 247/336/60 253/378/59 +f 253/378/59 255/386/68 251/391/72 +f 255/386/68 252/389/70 251/391/72 +f 251/391/72 250/384/66 253/378/59 +f 255/386/68 256/387/58 254/388/69 +f 251/391/72 252/389/70 209/390/71 +f 247/336/60 249/385/67 212/367/44 +f 250/384/66 251/391/72 210/392/48 +f 249/385/67 250/384/66 211/394/46 +f 208/395/52 253/378/59 248/295/61 +f 241/383/65 236/401/78 237/404/79 +f 237/404/79 238/406/80 241/383/65 +f 238/406/80 239/398/76 241/383/65 +f 239/398/76 240/410/84 242/397/75 +f 233/382/54 228/420/53 235/399/77 +f 229/400/45 237/404/79 236/401/78 +f 230/403/47 238/406/80 237/404/79 +f 231/405/49 239/398/76 238/406/80 +f 232/407/81 240/410/84 239/398/76 +f 242/397/75 240/410/84 243/408/82 +f 245/412/85 244/421/83 215/413/57 +f 185/374/23 234/418/64 245/412/85 +f 262/301/51 263/298/51 231/297/49 +f 208/395/52 246/415/62 253/378/59 +f 246/415/62 257/375/56 255/386/68 +o Hammer v 3.125000 0.375000 -0.125000 v 3.125000 0.375000 0.125000 v 3.301777 0.301777 -0.125000 @@ -204,6 +1268,1013 @@ v 3.375000 0.750000 -0.125000 v 3.375000 0.750000 0.125000 v 3.286612 0.786612 -0.125000 v 3.286612 0.786612 0.125000 +vt 0.028205 0.279070 +vt 0.035897 0.310078 +vt 0.028205 0.310078 +vt 0.035897 0.186047 +vt 0.028205 0.186047 +vt 0.017949 0.186047 +vt 0.010256 0.294574 +vt 0.010256 0.186047 +vt 0.046154 0.186047 +vt 0.035897 0.279070 +vt 0.017949 0.294574 +vt 0.051282 0.418605 +vt 0.046154 0.403101 +vt 0.051282 0.403101 +vt 0.061538 0.418605 +vt 0.056410 0.403101 +vt 0.061538 0.403101 +vt 0.051282 0.372093 +vt 0.056410 0.387597 +vt 0.051282 0.387597 +vt 0.061538 0.372093 +vt 0.061538 0.387597 +vt 0.066667 0.372093 +vt 0.071795 0.387597 +vt 0.066667 0.387597 +vt 0.071795 0.372093 +vt 0.076923 0.387597 +vt 0.071795 0.418605 +vt 0.066667 0.403101 +vt 0.071795 0.403101 +vt 0.082051 0.372093 +vt 0.082051 0.387597 +vt 0.076923 0.403101 +vt 0.041026 0.372093 +vt 0.046154 0.387597 +vt 0.041026 0.387597 +vt 0.082051 0.418605 +vt 0.082051 0.403101 +vt 0.041026 0.418605 +vt 0.041026 0.403101 +vt 0.066667 0.418605 +vt 0.046154 0.294574 +vt 0.046154 0.418605 +vt 0.056410 0.418605 +vt 0.056410 0.372093 +vt 0.076923 0.372093 +vt 0.076923 0.418605 +vt 0.046154 0.372093 +vt 0.051282 0.418605 +vt 0.058974 0.449612 +vt 0.051282 0.449612 +vt 0.058974 0.418605 +vt 0.066667 0.449612 +vt 0.066667 0.418605 +vt 0.074359 0.449612 +vt 0.074359 0.418605 +vt 0.082051 0.449612 +vt 0.020513 0.418605 +vt 0.028205 0.449612 +vt 0.020513 0.449612 +vt 0.028205 0.418605 +vt 0.035897 0.449612 +vt 0.035897 0.418605 +vt 0.043590 0.449612 +vt 0.043590 0.418605 +vt 0.051282 0.356589 +vt 0.046154 0.356589 +vt 0.056410 0.356589 +vt 0.061538 0.356589 +vt 0.066667 0.356589 +vt 0.071795 0.356589 +vt 0.076923 0.356589 +vt 0.082051 0.356589 +vt 0.041026 0.356589 +vt 0.082051 0.418605 +vn 0.4472 0.8944 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +s off +f 286/422/86 284/423/86 285/424/86 +f 283/425/87 286/422/87 281/426/87 +f 280/427/88 284/428/88 282/429/88 +f 282/430/89 287/431/89 283/425/89 +f 280/427/90 286/422/90 285/432/90 +f 306/433/89 300/434/89 302/435/89 +f 310/436/89 288/437/89 290/438/89 +f 307/439/90 289/440/90 303/441/90 +f 289/440/90 311/442/90 291/443/90 +f 313/444/90 295/445/90 293/446/90 +f 311/442/90 293/446/90 291/443/90 +f 315/447/90 297/448/90 295/445/90 +f 314/449/89 292/450/89 294/451/89 +f 297/448/90 319/452/90 299/453/90 +f 296/454/89 314/449/89 294/451/89 +f 319/455/90 301/456/90 299/457/90 +f 318/458/89 296/454/89 298/459/89 +f 288/437/89 306/433/89 302/435/89 +f 300/434/89 318/460/89 298/461/89 +f 301/456/90 307/439/90 303/441/90 +f 312/462/89 290/438/89 292/450/89 +f 286/422/86 287/431/86 284/423/86 +f 283/425/87 287/431/87 286/422/87 +f 280/427/88 285/432/88 284/428/88 +f 282/430/89 284/463/89 287/431/89 +f 280/427/90 281/426/90 286/422/90 +f 306/433/89 304/464/89 300/434/89 +f 310/436/89 308/465/89 288/437/89 +f 307/439/90 309/466/90 289/440/90 +f 289/440/90 309/466/90 311/442/90 +f 313/444/90 315/447/90 295/445/90 +f 311/442/90 313/444/90 293/446/90 +f 315/447/90 317/467/90 297/448/90 +f 314/449/89 312/462/89 292/450/89 +f 297/448/90 317/467/90 319/452/90 +f 296/454/89 316/468/89 314/449/89 +f 319/455/90 305/469/90 301/456/90 +f 318/458/89 316/468/89 296/454/89 +f 288/437/89 308/465/89 306/433/89 +f 300/434/89 304/464/89 318/460/89 +f 301/456/90 305/469/90 307/439/90 +f 312/462/89 310/436/89 290/438/89 +s 1 +f 265/470/91 266/471/92 264/472/91 +f 267/473/92 268/474/87 266/471/92 +f 269/475/87 270/476/93 268/474/87 +f 271/477/93 272/478/94 270/476/93 +f 273/479/94 274/480/95 272/481/94 +f 275/482/95 276/483/88 274/480/95 +f 277/484/88 278/485/96 276/483/88 +f 279/486/96 264/472/91 278/485/96 +f 289/440/91 290/438/92 288/437/91 +f 291/443/92 292/450/87 290/438/92 +f 293/446/87 294/451/93 292/450/87 +f 295/445/93 296/454/94 294/451/93 +f 297/448/94 298/459/95 296/454/94 +f 299/457/95 300/434/88 298/461/95 +f 301/456/88 302/435/96 300/434/88 +f 303/441/96 288/437/91 302/435/96 +f 306/487/93 305/469/87 304/488/87 +f 308/489/94 307/439/93 306/487/93 +f 310/490/95 309/466/94 308/489/94 +f 312/491/88 311/442/95 310/490/95 +f 314/492/96 313/444/88 312/491/88 +f 316/493/91 315/447/96 314/492/96 +f 318/494/92 317/467/91 316/493/91 +f 304/488/87 319/455/92 318/495/92 +f 265/470/91 267/473/92 266/471/92 +f 267/473/92 269/475/87 268/474/87 +f 269/475/87 271/477/93 270/476/93 +f 271/477/93 273/496/94 272/478/94 +f 273/479/94 275/482/95 274/480/95 +f 275/482/95 277/484/88 276/483/88 +f 277/484/88 279/486/96 278/485/96 +f 279/486/96 265/470/91 264/472/91 +f 289/440/91 291/443/92 290/438/92 +f 291/443/92 293/446/87 292/450/87 +f 293/446/87 295/445/93 294/451/93 +f 295/445/93 297/448/94 296/454/94 +f 297/448/94 299/453/95 298/459/95 +f 299/457/95 301/456/88 300/434/88 +f 301/456/88 303/441/96 302/435/96 +f 303/441/96 289/440/91 288/437/91 +f 306/487/93 307/439/93 305/469/87 +f 308/489/94 309/466/94 307/439/93 +f 310/490/95 311/442/95 309/466/94 +f 312/491/88 313/444/88 311/442/95 +f 314/492/96 315/447/96 313/444/88 +f 316/493/91 317/467/91 315/447/96 +f 318/494/92 319/452/92 317/467/91 +f 304/488/87 305/469/87 319/455/92 +o Magazine +v 1.875000 -3.437500 0.437500 +v 3.250000 -3.437500 0.437500 +v 3.375000 -3.437500 0.312500 +v 3.375000 -3.437500 -0.312500 +v 1.750000 -3.437500 -0.312500 +v 1.750000 -3.437500 0.312500 +v 3.250000 -3.437500 -0.437500 +v 1.875000 -3.437500 -0.437500 +v 3.375000 -3.562500 0.312500 +v 3.375000 -3.562500 -0.312500 +v 1.750000 -3.562500 0.312500 +v 1.750000 -3.562500 -0.312500 +v 1.875000 -3.562500 0.437500 +v 3.250000 -3.562500 0.437500 +v 3.250000 -3.562500 -0.437500 +v 1.875000 -3.562500 -0.437500 +v 1.937500 -3.437500 -0.312500 +v 1.937500 -3.437500 0.312500 +v 3.312500 -3.437500 -0.312500 +v 3.312500 -3.437500 0.312500 +v 0.875000 0.562500 0.312500 +v 0.875000 0.562500 -0.312500 +v 2.250000 0.562500 0.312500 +v 2.250000 0.562500 -0.312500 +vt 0.928205 0.744186 +vt 0.923077 0.728682 +vt 0.928205 0.635659 +vt 0.984615 0.511628 +vt 0.989744 0.527132 +vt 0.984615 0.620155 +vt 0.861538 0.496124 +vt 0.917949 0.573643 +vt 0.861538 0.573643 +vt 1.000000 0.000000 +vt 0.943590 0.496124 +vt 0.943590 0.000000 +vt 0.861538 0.000000 +vt 0.835897 0.496124 +vt 0.835897 -0.000000 +vt 0.917949 0.496124 +vt 0.917949 -0.000000 +vt 0.923077 0.651163 +vt 0.984615 0.635659 +vt 0.984615 0.744186 +vt 0.989744 0.651163 +vt 0.989744 0.728682 +vt 0.989744 0.604651 +vt 0.928205 0.620155 +vt 0.928205 0.511628 +vt 0.923077 0.604651 +vt 0.923077 0.527132 +vt 1.000000 0.496124 +vt 0.917949 0.527132 +vt 0.917949 0.604651 +vt 0.989744 0.620155 +vt 0.989744 0.635659 +vt 0.928205 0.496124 +vt 0.923077 0.511628 +vt 0.923077 0.496124 +vt 0.994872 0.604651 +vt 0.994872 0.527132 +vt 0.923077 0.635659 +vt 0.989744 0.496124 +vt 0.984615 0.496124 +vt 0.923077 0.620155 +vt 0.989744 0.511628 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.9665 -0.2567 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.9665 0.2567 0.0000 +vn -0.9239 0.0000 -0.3827 +vn -0.9239 0.0000 0.3827 +vn 0.3827 0.0000 0.9239 +vn 0.9239 0.0000 0.3827 +vn -0.3827 0.0000 -0.9239 +vn -0.3827 0.0000 0.9239 +vn 0.9239 0.0000 -0.3827 +vn 0.3827 0.0000 -0.9239 +s off +f 327/497/97 324/498/97 320/499/97 +f 334/500/98 329/501/98 333/502/98 +f 340/503/97 343/504/97 341/505/97 +f 336/506/99 343/507/99 338/508/99 +f 337/509/100 341/510/100 336/511/100 +f 337/509/101 342/512/101 340/503/101 +f 338/508/102 342/512/102 339/513/102 +f 324/498/97 325/514/97 320/499/97 +f 320/499/97 321/515/97 326/516/97 +f 321/515/97 322/517/97 326/516/97 +f 322/517/97 323/518/97 326/516/97 +f 326/516/97 327/497/97 320/499/97 +f 329/501/98 328/519/98 333/502/98 +f 333/502/98 332/520/98 335/521/98 +f 332/520/98 330/522/98 335/521/98 +f 330/522/98 331/523/98 335/521/98 +f 335/521/98 334/500/98 333/502/98 +f 340/503/97 342/512/97 343/504/97 +f 336/506/99 341/524/99 343/507/99 +f 337/509/100 340/503/100 341/510/100 +f 337/509/101 339/513/101 342/512/101 +f 338/508/102 343/507/102 342/512/102 +s 1 +f 324/525/103 330/522/104 325/526/104 +f 321/515/105 328/527/106 322/528/106 +f 327/529/107 331/530/103 324/531/103 +f 320/499/108 333/502/105 321/515/105 +f 322/532/106 329/501/109 323/533/109 +f 325/534/104 332/520/108 320/499/108 +f 323/535/109 334/500/110 326/536/110 +f 326/536/110 335/521/107 327/529/107 +f 324/525/103 331/523/103 330/522/104 +f 321/515/105 333/502/105 328/527/106 +f 327/529/107 335/521/107 331/530/103 +f 320/499/108 332/520/108 333/502/105 +f 322/532/106 328/519/106 329/501/109 +f 325/534/104 330/537/104 332/520/108 +f 323/535/109 329/538/109 334/500/110 +f 326/536/110 334/500/110 335/521/107 +o Bullet +v 1.187500 0.562500 -0.187500 +v 2.187500 0.562500 -0.187500 +v 1.187500 0.429918 -0.132583 +v 2.187500 0.429918 -0.132583 +v 1.187500 0.375000 0.000000 +v 2.187500 0.375000 0.000000 +v 1.187500 0.429918 0.132583 +v 2.187500 0.429918 0.132583 +v 1.187500 0.562500 0.187500 +v 2.187500 0.562500 0.187500 +v 1.187500 0.695083 0.132583 +v 2.187500 0.695083 0.132583 +v 1.187500 0.750000 0.000000 +v 2.187500 0.750000 0.000000 +v 1.187500 0.695083 -0.132583 +v 2.187500 0.695083 -0.132583 +v 1.000000 0.562500 -0.093750 +v 1.000000 0.496209 -0.066291 +v 1.000000 0.468750 0.000000 +v 1.000000 0.496209 0.066291 +v 1.000000 0.562500 0.093750 +v 1.000000 0.628792 0.066291 +v 1.000000 0.656250 0.000000 +v 1.000000 0.628792 -0.066291 +vt 0.612821 0.852407 +vt 0.605230 0.829458 +vt 0.612821 0.806508 +vt 0.618188 0.813230 +vt 0.620412 0.829458 +vt 0.618188 0.845685 +vt 0.607453 0.845685 +vt 0.607453 0.813230 +vt 0.605128 0.899225 +vt 0.564103 0.914729 +vt 0.564103 0.899225 +vt 0.605128 0.914729 +vt 0.564103 0.930233 +vt 0.605128 0.806202 +vt 0.564103 0.821705 +vt 0.564103 0.806202 +vt 0.605128 0.821705 +vt 0.564103 0.837209 +vt 0.605128 0.837209 +vt 0.564103 0.852713 +vt 0.605128 0.852713 +vt 0.564103 0.868217 +vt 0.605128 0.868217 +vt 0.564103 0.883721 +vt 0.605128 0.883721 +vt 0.556410 0.844961 +vt 0.556410 0.837209 +vt 0.554054 0.807659 +vt 0.556123 0.813913 +vt 0.549060 0.822757 +vt 0.556410 0.883721 +vt 0.556410 0.906977 +vt 0.556410 0.899225 +vt 0.556410 0.813953 +vt 0.556410 0.806202 +vt 0.556410 0.852713 +vt 0.556410 0.821705 +vt 0.556410 0.868217 +vt 0.556410 0.914729 +vt 0.605128 0.930233 +vt 0.556123 0.822757 +vt 0.554054 0.829011 +vt 0.551129 0.829011 +vt 0.549060 0.813913 +vt 0.551129 0.807659 +vt 0.556410 0.891473 +vt 0.556410 0.860465 +vt 0.556410 0.829457 +vt 0.556410 0.875969 +vt 0.556410 0.922481 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 1.0000 -0.0000 +vn 0.0000 0.7071 -0.7071 +vn -0.4472 0.0000 0.8944 +vn -0.7940 0.4299 0.4299 +vn -0.7940 0.0000 0.6080 +vn -0.7940 0.6080 -0.0000 +vn -0.7940 0.4299 -0.4299 +vn -0.7940 -0.4299 0.4299 +vn -0.4472 0.0000 -0.8944 +vn -0.4472 0.6325 -0.6325 +vn -0.7940 -0.4299 -0.4299 +vn -0.7940 0.0000 -0.6080 +vn -0.4472 -0.8944 0.0000 +vn -0.7940 -0.6080 0.0000 +vn -0.4472 0.8944 0.0000 +vn -0.4472 0.6325 0.6325 +vn -0.4472 -0.6325 0.6325 +vn -0.4472 -0.6325 -0.6325 +s off +f 357/539/111 353/540/111 349/541/111 +f 349/541/111 347/542/111 345/543/111 +f 345/543/111 359/544/111 357/539/111 +f 357/539/111 355/545/111 353/540/111 +f 353/540/111 351/546/111 349/541/111 +f 349/541/111 345/543/111 357/539/111 +s 1 +f 345/547/112 346/548/113 344/549/112 +f 347/550/113 348/551/114 346/548/113 +f 349/552/114 350/553/115 348/554/114 +f 351/555/115 352/556/116 350/553/115 +f 353/557/116 354/558/117 352/556/116 +f 355/559/117 356/560/118 354/558/117 +f 357/561/118 358/562/119 356/560/118 +f 359/563/119 344/549/112 358/562/119 +f 352/556/120 365/564/121 364/565/122 +f 366/566/123 367/567/124 363/568/125 +f 344/549/126 367/569/124 358/562/127 +f 344/549/126 361/570/128 360/571/129 +f 348/554/130 363/572/125 362/573/131 +f 356/560/132 365/574/121 354/558/133 +f 352/556/120 363/575/125 350/553/134 +f 358/562/127 366/576/123 356/560/132 +f 348/551/130 361/577/128 346/548/135 +f 345/547/112 347/550/113 346/548/113 +f 347/550/113 349/578/114 348/551/114 +f 349/552/114 351/555/115 350/553/115 +f 351/555/115 353/557/116 352/556/116 +f 353/557/116 355/559/117 354/558/117 +f 355/559/117 357/561/118 356/560/118 +f 357/561/118 359/563/119 358/562/119 +f 359/563/119 345/547/112 344/549/112 +f 352/556/120 354/558/133 365/564/121 +f 367/567/124 360/579/129 361/580/128 +f 361/580/128 362/581/131 367/567/124 +f 362/581/131 363/568/125 367/567/124 +f 363/568/125 364/582/122 365/583/121 +f 365/583/121 366/566/123 363/568/125 +f 344/549/126 360/584/129 367/569/124 +f 344/549/126 346/548/135 361/570/128 +f 348/554/130 350/553/134 363/572/125 +f 356/560/132 366/585/123 365/574/121 +f 352/556/120 364/586/122 363/575/125 +f 358/562/127 367/587/124 366/576/123 +f 348/551/130 362/588/131 361/577/128 +o Slide +v -10.000000 0.000000 -0.374999 +v -10.000000 0.000000 0.375001 +v -3.500000 0.000000 -0.375000 +v -10.000000 1.000000 0.250001 +v -10.000000 0.875000 0.216507 +v -10.000000 0.783494 0.125001 +v -10.000000 0.750000 0.000001 +v -10.000000 0.783494 -0.124999 +v -10.000000 0.875000 -0.216506 +v -10.000000 1.000000 -0.249999 +v -10.000000 1.125000 -0.216506 +v -10.000000 1.216506 -0.124999 +v -10.000000 1.250000 0.000001 +v -10.000000 1.216506 0.125000 +v -10.000000 1.125000 0.216507 +v -10.000000 -0.250000 -0.124999 +v -10.000000 -0.250000 0.125001 +v -10.000000 1.500000 -0.249999 +v -10.000000 1.375000 -0.374999 +v -10.000000 1.375000 0.375001 +v -10.000000 1.500000 0.250001 +v -1.500000 1.500000 0.250000 +v -1.500000 1.375000 -0.375000 +v -1.500000 1.500000 -0.250000 +v -1.500000 1.500000 0.000000 +v -1.500000 1.000000 -0.375000 +v 0.000000 1.500000 0.250000 +v 0.000000 1.500000 0.000000 +v 0.000000 1.000000 -0.375000 +v -1.500000 1.000000 -0.250000 +v 0.000000 1.000000 -0.250000 +v -1.500000 1.375000 0.000000 +v 0.000000 1.375000 0.000000 +v -1.500000 1.375000 -0.250000 +v 0.000000 1.375000 -0.375000 +v 0.000000 1.500000 -0.250000 +v 0.000000 1.375000 -0.250000 +v -3.500000 -0.250000 0.125000 +v -3.500000 -0.250000 -0.125000 +v 3.000000 1.500000 0.250000 +v 3.062500 1.375000 0.375000 +v 3.062500 1.375000 -0.375000 +v 3.000000 1.500000 -0.250000 +v 3.500000 0.500000 -0.375000 +v 3.500000 0.500000 0.375000 +v 3.500000 0.000000 -0.375000 +v 3.500000 0.000000 0.375000 +v -3.500000 0.000000 0.375000 +v 3.500000 0.500000 0.125000 +v 3.500000 0.500000 -0.125000 +v 3.125000 1.250000 0.125000 +v 3.125000 1.250000 -0.125000 +v 3.500000 0.000000 0.125000 +v 3.500000 0.000000 -0.125000 +v 1.500000 0.000000 0.125000 +v 1.500000 0.000000 -0.125000 +v 1.500000 1.250000 -0.125000 +v 1.500000 1.250000 0.125000 +v -9.812500 1.500000 0.187501 +v -8.937500 1.500000 0.187501 +v -9.812500 1.500000 -0.187499 +v -8.937500 1.500000 -0.187499 +v -9.812500 1.625000 -0.187499 +v -9.812500 1.625000 0.187501 +v -9.187500 1.625000 0.187501 +v -9.187500 1.625000 -0.187499 +v -9.750000 1.625000 0.062501 +v -9.250000 1.625000 0.062501 +v -9.750000 1.625000 -0.062499 +v -9.250000 1.625000 -0.062499 +v -9.750000 1.750000 -0.062499 +v -9.750000 1.750000 0.062501 +v -9.250000 1.750000 0.062501 +v -9.250000 1.750000 -0.062499 +v 1.812500 1.500000 0.187500 +v 2.437500 1.500000 0.187500 +v 1.812500 1.500000 -0.187500 +v 2.437500 1.500000 -0.187500 +v 2.062500 1.625000 -0.187500 +v 2.062500 1.625000 0.187500 +v 2.437500 1.625000 0.062500 +v 2.437500 1.625000 -0.062500 +v 2.437500 1.750000 0.187500 +v 2.437500 1.750000 -0.187500 +v 2.437500 1.750000 0.062500 +v 2.437500 1.750000 -0.062500 +v 2.187500 1.625000 0.187500 +v 2.187500 1.625000 -0.187500 +v 2.312500 1.750000 0.187500 +v 2.312500 1.750000 -0.187500 +v 2.312500 1.750000 0.062500 +v 2.312500 1.750000 -0.062500 +v 2.187500 1.625000 0.062500 +v 2.187500 1.625000 -0.062500 +vt 0.430769 0.542636 +vt 0.430769 0.589147 +vt 0.348718 0.713178 +vt 0.348718 0.217054 +vt 0.082051 0.186047 +vt 0.348718 0.186047 +vt 0.430769 0.527132 +vt 0.082051 0.542636 +vt 0.082051 0.527132 +vt 0.082051 0.465116 +vt 0.430769 0.465116 +vt 0.430769 0.496124 +vt 0.070258 0.511776 +vt 0.071623 0.496376 +vt 0.070258 0.480977 +vt 0.076923 0.449612 +vt 0.076923 0.542636 +vt 0.066529 0.523049 +vt 0.061435 0.527176 +vt 0.020513 0.542636 +vt 0.061435 0.465577 +vt 0.020513 0.449612 +vt 0.052612 0.511776 +vt 0.051248 0.496376 +vt 0.492308 0.496124 +vt 0.492308 0.573643 +vt 0.492308 0.589147 +vt 0.430769 0.511628 +vt 0.446154 0.511628 +vt 0.435897 0.527132 +vt 0.435897 0.511628 +vt 0.430769 0.573643 +vt 0.430769 0.527132 +vt 0.487179 0.527132 +vt 0.487179 0.511628 +vt 0.492308 0.527132 +vt 0.476923 0.511628 +vt 0.476923 0.527132 +vt 0.487179 0.573643 +vt 0.492308 0.573643 +vt 0.492308 0.542636 +vt 0.615385 0.527132 +vt 0.615385 0.542636 +vt 0.615385 0.449612 +vt 0.615385 0.465116 +vt 0.492308 0.465116 +vt 0.492308 0.527132 +vt 0.082051 0.279070 +vt 0.348718 0.248062 +vt 0.348718 0.279070 +vt 0.676923 0.480620 +vt 0.656410 0.449612 +vt 0.676923 0.449612 +vt 0.082051 0.217054 +vt 0.082051 0.248062 +vt 0.082051 0.449612 +vt 0.358974 0.279070 +vt 0.358974 0.186047 +vt 0.082051 0.821705 +vt 0.082051 0.883721 +vt 0.000000 0.883721 +vt 0.625641 0.480620 +vt 0.625641 0.511628 +vt 0.620513 0.449612 +vt 0.620513 0.542636 +vt 0.656410 0.542636 +vt 0.553846 0.744186 +vt 0.553846 0.775194 +vt 0.348718 0.806202 +vt 0.656410 0.511628 +vt 0.676923 0.542636 +vt 0.000000 0.542636 +vt 0.082051 0.542636 +vt 0.082051 0.604651 +vt 0.066667 0.728682 +vt 0.000000 0.697674 +vt 0.066667 0.697674 +vt 0.194872 0.728682 +vt 0.169231 0.775194 +vt 0.169231 0.728682 +vt 0.164103 0.728682 +vt 0.164103 0.775194 +vt 0.169231 0.790698 +vt 0.194872 0.775194 +vt 0.205128 0.790698 +vt 0.169231 0.713178 +vt 0.205128 0.775194 +vt 0.205128 0.728682 +vt 0.230769 0.728682 +vt 0.210256 0.744186 +vt 0.210256 0.728682 +vt 0.235897 0.744186 +vt 0.235897 0.728682 +vt 0.205128 0.728682 +vt 0.205128 0.744186 +vt 0.210256 0.759690 +vt 0.230769 0.744186 +vt 0.230769 0.759690 +vt 0.230769 0.713178 +vt 0.210256 0.713178 +vt 0.071795 0.232558 +vt 0.066667 0.217054 +vt 0.071795 0.217054 +vt 0.071795 0.325581 +vt 0.082051 0.310078 +vt 0.082051 0.325581 +vt 0.071795 0.294574 +vt 0.056410 0.279070 +vt 0.061538 0.279070 +vt 0.082051 0.263566 +vt 0.076923 0.232558 +vt 0.082051 0.217054 +vt 0.056410 0.294574 +vt 0.066667 0.341085 +vt 0.056410 0.341085 +vt 0.071795 0.263566 +vt 0.066667 0.248062 +vt 0.071795 0.248062 +vt 0.076923 0.341085 +vt 0.082051 0.341085 +vt 0.076923 0.294574 +vt 0.082051 0.294574 +vt 0.061538 0.232558 +vt 0.066667 0.232558 +vt 0.061538 0.263566 +vt 0.066667 0.263566 +vt 0.066667 0.294574 +vt 0.071795 0.310078 +vt 0.071795 0.186047 +vt 0.061538 0.201550 +vt 0.046154 0.186047 +vt 0.635897 0.713178 +vt 0.082051 0.713178 +vt 0.066529 0.469703 +vt 0.056341 0.523049 +vt 0.056341 0.469703 +vt 0.010256 0.511628 +vt 0.010256 0.480620 +vt 0.052612 0.480977 +vt 0.430769 0.573643 +vt 0.492308 0.511628 +vt 0.446154 0.527132 +vt 0.435897 0.573643 +vt 0.656410 0.480620 +vt 0.635897 0.279070 +vt 0.635897 0.341085 +vt 0.000000 0.728682 +vt 0.635897 0.744186 +vt 0.635897 0.775194 +vt 0.635897 0.806202 +vt 0.676923 0.511628 +vt 0.205128 0.713178 +vt 0.046154 0.294574 +vt 0.076923 0.248062 +vt 0.061538 0.217054 +vt 0.061538 0.248062 +vt 0.071795 0.341085 +vt 0.071795 0.294574 +vt 0.056410 0.201550 +vt 0.635897 0.651163 +vn 0.0000 0.0000 -1.0000 +vn -0.0000 -0.7071 -0.7071 +vn -0.0000 0.7071 -0.7071 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.8944 0.4472 0.0000 +vn 0.4472 0.8944 0.0000 +vn -0.4472 0.8944 0.0000 +vn -0.7071 0.7071 0.0000 +s off +f 390/589/136 393/590/136 370/591/136 +f 406/592/137 368/593/137 370/594/137 +f 391/595/138 386/596/138 385/597/138 +f 388/598/139 389/599/139 392/600/139 +f 385/597/140 379/601/140 380/602/140 +f 381/603/140 387/604/140 388/598/140 +f 379/601/140 386/605/140 378/606/140 +f 377/607/140 386/605/140 368/608/140 +f 371/609/140 369/610/140 387/604/140 +f 375/611/140 368/608/140 374/612/140 +f 389/599/139 395/613/139 392/600/139 +f 393/590/139 398/614/139 396/615/139 +f 395/613/136 399/616/136 392/600/136 +f 392/617/141 401/618/141 391/619/141 +f 401/618/141 393/620/141 390/621/141 +f 390/621/141 391/619/141 401/618/141 +f 404/622/140 403/623/140 402/624/140 +f 395/625/140 404/622/140 400/626/140 +f 398/627/140 402/624/140 396/628/140 +f 402/629/138 410/630/138 409/631/138 +f 396/615/136 370/591/136 393/590/136 +f 408/632/142 407/633/142 394/634/142 +f 410/630/139 403/635/139 395/613/139 +f 369/636/143 405/637/143 415/638/143 +f 420/639/141 412/640/141 414/641/141 +f 383/642/144 405/637/144 384/643/144 +f 408/632/145 387/644/145 415/638/145 +f 415/645/141 406/592/141 370/646/141 +f 416/647/136 420/648/136 422/649/136 +f 410/630/146 418/650/146 419/651/146 +f 407/633/146 408/652/146 418/650/146 +f 409/653/146 410/630/146 419/651/146 +f 419/651/146 411/654/146 409/653/146 +f 412/640/146 418/650/146 408/652/146 +f 423/655/144 422/656/144 415/657/144 +f 417/658/141 413/659/141 411/654/141 +f 423/660/145 421/661/145 417/662/145 +f 418/663/144 424/664/144 419/665/144 +f 432/666/139 430/667/139 431/668/139 +f 426/669/140 430/667/140 428/670/140 +f 428/671/136 433/672/136 429/673/136 +f 426/674/145 432/666/145 431/668/145 +f 429/675/147 432/666/147 427/676/147 +f 440/677/139 438/678/139 439/679/139 +f 437/680/141 440/677/141 435/681/141 +f 434/682/140 438/678/140 436/683/140 +f 436/684/136 441/685/136 437/686/136 +f 435/687/145 439/679/145 434/688/145 +f 452/689/139 456/690/139 450/691/139 +f 461/692/139 448/693/139 449/694/139 +f 445/695/136 446/696/136 455/697/136 +f 445/698/141 448/699/141 443/700/141 +f 442/701/148 446/702/148 444/703/148 +f 451/704/139 459/705/139 453/706/139 +f 459/707/145 449/694/145 453/708/145 +f 448/693/136 458/709/136 452/710/136 +f 460/711/149 456/690/149 458/712/149 +f 455/713/149 459/705/149 457/714/149 +f 447/715/139 460/716/139 461/692/139 +f 443/717/145 454/718/145 442/719/145 +f 396/615/136 409/631/136 413/720/136 +f 370/591/136 368/721/136 386/596/136 +f 386/596/136 390/589/136 370/591/136 +f 406/592/137 383/642/137 368/593/137 +f 391/595/138 390/589/138 386/596/138 +f 391/595/139 385/597/139 392/600/139 +f 385/597/139 388/598/139 392/600/139 +f 380/602/140 381/603/140 388/598/140 +f 388/598/140 385/597/140 380/602/140 +f 381/603/140 382/722/140 387/604/140 +f 379/601/140 385/597/140 386/605/140 +f 368/608/140 376/723/140 377/607/140 +f 377/607/140 378/606/140 386/605/140 +f 371/609/140 372/724/140 369/610/140 +f 387/604/140 382/722/140 371/609/140 +f 376/723/140 368/608/140 375/611/140 +f 368/608/140 383/725/140 369/610/140 +f 383/725/140 384/726/140 369/610/140 +f 369/610/140 372/724/140 373/727/140 +f 369/610/140 373/727/140 374/612/140 +f 368/608/140 369/610/140 374/612/140 +f 389/599/139 394/634/139 395/613/139 +f 393/590/139 397/728/139 398/614/139 +f 395/613/136 400/729/136 399/616/136 +f 392/617/141 399/730/141 401/618/141 +f 401/618/141 397/731/141 393/620/141 +f 395/625/140 403/623/140 404/622/140 +f 398/627/140 404/622/140 402/624/140 +f 402/629/138 403/635/138 410/630/138 +f 396/615/136 413/720/136 370/591/136 +f 388/598/142 387/644/142 389/599/142 +f 387/644/142 408/632/142 389/599/142 +f 389/599/142 408/632/142 394/634/142 +f 395/613/139 394/634/139 407/633/139 +f 407/633/139 410/630/139 395/613/139 +f 369/636/143 384/643/143 405/637/143 +f 420/639/141 416/732/141 412/640/141 +f 383/642/144 406/592/144 405/637/144 +f 387/644/145 369/636/145 415/638/145 +f 415/638/145 414/733/145 408/632/145 +f 414/733/145 412/734/145 408/632/145 +f 415/645/141 405/637/141 406/592/141 +f 425/735/136 418/663/136 422/649/136 +f 418/663/136 416/647/136 422/649/136 +f 410/630/146 407/633/146 418/650/146 +f 419/651/146 417/658/146 411/654/146 +f 412/640/146 416/732/146 418/650/146 +f 415/657/144 370/591/144 423/655/144 +f 370/591/144 413/720/144 423/655/144 +f 413/720/144 421/736/144 423/655/144 +f 422/656/144 420/737/144 414/738/144 +f 422/656/144 414/738/144 415/657/144 +f 417/658/141 421/739/141 413/659/141 +f 417/662/145 419/665/145 423/660/145 +f 419/665/145 424/664/145 423/660/145 +f 418/663/144 425/735/144 424/664/144 +f 432/666/139 433/672/139 430/667/139 +f 426/669/140 431/668/140 430/667/140 +f 428/671/136 430/667/136 433/672/136 +f 426/674/145 427/740/145 432/666/145 +f 429/675/147 433/672/147 432/666/147 +f 440/677/139 441/685/139 438/678/139 +f 437/680/141 441/685/141 440/677/141 +f 434/682/140 439/679/140 438/678/140 +f 436/684/136 438/678/136 441/685/136 +f 435/687/145 440/677/145 439/679/145 +f 452/689/139 458/712/139 456/690/139 +f 461/692/139 460/716/139 448/693/139 +f 457/714/136 451/704/136 445/695/136 +f 445/695/136 444/741/136 446/696/136 +f 455/697/136 457/714/136 445/695/136 +f 445/698/141 451/704/141 449/742/141 +f 451/704/141 453/706/141 449/742/141 +f 452/689/141 450/691/141 448/699/141 +f 450/691/141 443/700/141 448/699/141 +f 445/698/141 449/742/141 448/699/141 +f 442/701/148 447/715/148 446/702/148 +f 451/704/139 457/714/139 459/705/139 +f 459/707/145 461/692/145 449/694/145 +f 448/693/136 460/716/136 458/709/136 +f 460/711/149 454/743/149 456/690/149 +f 455/713/149 461/744/149 459/705/149 +f 455/745/139 446/702/139 461/692/139 +f 446/702/139 447/715/139 461/692/139 +f 447/715/139 454/746/139 460/716/139 +f 443/717/145 450/691/145 456/690/145 +f 454/718/145 447/747/145 442/719/145 +f 443/717/145 456/690/145 454/718/145 +f 402/629/136 409/631/136 396/615/136 +f 409/631/136 411/748/136 413/720/136 +o Decal +v -3.000000 0.000000 0.385001 +v -3.000000 1.375000 0.385001 +v -1.625000 0.000000 0.385001 +v -1.625000 1.375000 0.385001 +vt -0.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 1.000000 -0.003906 +vn 0.0000 0.0000 1.0000 +s off +f 462/749/150 465/750/150 463/751/150 +f 462/749/150 464/752/150 465/750/150 +o DecalM +v -3.000000 0.000000 -0.384999 +v -3.000000 1.375000 -0.384999 +v -1.625000 0.000000 -0.384999 +v -1.625000 1.375000 -0.384999 +vt 0.000000 1.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 -0.003906 +vn 0.0000 0.0000 -1.0000 +s off +f 469/753/151 466/754/151 467/755/151 +f 469/753/151 468/756/151 466/754/151 +o TextM +v -9.000000 0.000000 -0.384999 +v -9.000000 1.375000 -0.384999 +v -3.500000 0.000000 -0.384999 +v -3.500000 1.375000 -0.384999 +vt 0.000000 1.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vn 0.0000 0.0000 -1.0000 +s off +f 473/757/152 470/758/152 471/759/152 +f 473/757/152 472/760/152 470/758/152 +o Text +v -9.000000 0.000000 0.385001 +v -9.000000 1.375000 0.385001 +v -3.500000 0.000000 0.385001 +v -3.500000 1.375000 0.385001 +vt 0.000050 0.000050 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.999950 0.000050 +vn 0.0000 0.0000 1.0000 +s off +f 474/761/153 477/762/153 475/763/153 +f 474/761/153 476/764/153 477/762/153 +o Grip +v 0.000000 1.000000 0.250000 +v -10.125000 1.000000 0.250001 +v 0.000000 0.875000 0.216506 +v -10.125000 0.875000 0.216507 +v 0.000000 0.783494 0.125000 +v -10.125000 0.783494 0.125001 +v -0.000000 0.750000 0.000000 +v -10.125000 0.750000 0.000001 +v -0.000000 0.783494 -0.125000 +v -10.125000 0.783494 -0.124999 +v -0.000000 0.875000 -0.216506 +v -10.125000 0.875000 -0.216506 +v -0.000000 1.000000 -0.250000 +v -10.125000 1.000000 -0.249999 +v -0.000000 1.125000 -0.216506 +v -10.125000 1.125000 -0.216506 +v -0.000000 1.216506 -0.125000 +v -10.125000 1.216506 -0.124999 +v -0.000000 1.250000 0.000000 +v -10.125000 1.250000 0.000001 +v 0.000000 1.216506 0.125000 +v -10.125000 1.216506 0.125001 +v 0.000000 1.125000 0.216506 +v -10.125000 1.125000 0.216507 +v -10.125000 0.906250 0.162381 +v -10.125000 1.000000 0.187501 +v -10.125000 0.837620 0.093751 +v -10.125000 0.812500 0.000001 +v -10.125000 0.837620 -0.093749 +v -10.125000 0.906250 -0.162379 +v -10.125000 1.000000 -0.187499 +v -10.125000 1.093750 -0.162379 +v -10.125000 1.162380 -0.093749 +v -10.125000 1.187500 0.000001 +v -10.125000 1.162380 0.093751 +v -10.125000 1.093750 0.162381 +v 0.000000 0.906250 0.162368 +v 0.000000 1.000000 0.187489 +v 0.000000 0.837620 0.093739 +v -0.000000 0.812500 -0.000011 +v -0.000000 0.837620 -0.093761 +v -0.000000 0.906250 -0.162391 +v -0.000000 1.000000 -0.187511 +v -0.000000 1.093750 -0.162391 +v -0.000000 1.162380 -0.093761 +v -0.000000 1.187500 -0.000011 +v 0.000000 1.162380 0.093739 +v 0.000000 1.093750 0.162368 +v 0.000000 1.125000 0.216506 +v 0.000000 1.216506 0.125000 +v 0.000000 1.000000 0.250000 +v -1.500000 1.000000 -0.250000 +v -1.500000 1.375000 0.000000 +v -1.500000 1.375000 -0.250000 +v -0.000000 1.000000 -0.250000 +v 0.000000 1.375000 0.000000 +v -0.000000 1.375000 -0.250000 +v 0.000000 1.375000 0.250000 +v 0.000000 1.250000 0.000000 +v -0.000000 1.125000 -0.216506 +v -0.000000 1.216506 -0.125000 +v 1.500000 1.375000 -0.250000 +v 0.000000 0.875000 0.216506 +v 0.000000 0.783494 0.125000 +v -0.000000 0.750000 0.000000 +v -0.000000 0.783494 -0.125000 +v -0.000000 0.875000 -0.216506 +v 1.500000 1.000000 -0.250000 +v 1.500000 1.000000 0.250000 +v 1.500000 0.875000 0.216506 +v 1.500000 0.783494 0.125000 +v 1.500000 0.750000 0.000000 +v 1.500000 0.783494 -0.125000 +v 1.500000 0.875000 -0.216506 +v 1.500000 1.000000 -0.250000 +v 1.500000 1.375000 0.000000 +v 1.500000 1.375000 0.250000 +v -3.500000 -0.187500 0.125000 +v 3.500000 -0.187500 0.125000 +v -3.500000 -0.187500 -0.125000 +v 3.500000 -0.187500 -0.125000 +v -3.500000 0.000000 -0.312500 +v -3.500000 0.000000 0.312500 +v 3.500000 0.000000 0.312500 +v 3.500000 0.000000 -0.312500 +v 3.000000 1.250000 0.125000 +v 3.000000 1.250000 -0.125000 +v 3.000000 0.000000 -0.125000 +v 3.000000 0.000000 0.125000 v 1.250000 -1.687500 0.125000 v 1.250000 -1.687500 -0.125000 v 0.500000 -1.437500 0.125000 @@ -247,66 +2318,6 @@ v 0.375000 -0.562500 0.125000 v 0.375000 -0.562500 -0.125000 v 0.437500 -0.187500 0.125000 v 0.437500 -0.187500 -0.125000 -v -9.812500 1.500000 0.187501 -v -8.937500 1.500000 0.187501 -v -9.812500 1.500000 -0.187499 -v -8.937500 1.500000 -0.187499 -v -9.812500 1.625000 -0.187499 -v -9.812500 1.625000 0.187501 -v -9.187500 1.625000 0.187501 -v -9.187500 1.625000 -0.187499 -v -9.750000 1.625000 0.062501 -v -9.250000 1.625000 0.062501 -v -9.750000 1.625000 -0.062499 -v -9.250000 1.625000 -0.062499 -v -9.750000 1.750000 -0.062499 -v -9.750000 1.750000 0.062501 -v -9.250000 1.750000 0.062501 -v -9.250000 1.750000 -0.062499 -v 1.812500 1.500000 0.187500 -v 2.437500 1.500000 0.187500 -v 1.812500 1.500000 -0.187500 -v 2.437500 1.500000 -0.187500 -v 2.062500 1.625000 -0.187500 -v 2.062500 1.625000 0.187500 -v 2.437500 1.625000 0.062500 -v 2.437500 1.625000 -0.062500 -v 2.437500 1.750000 0.187500 -v 2.437500 1.750000 -0.187500 -v 2.437500 1.750000 0.062500 -v 2.437500 1.750000 -0.062500 -v 2.187500 1.625000 0.187500 -v 2.187500 1.625000 -0.187500 -v 2.312500 1.750000 0.187500 -v 2.312500 1.750000 -0.187500 -v 2.312500 1.750000 0.062500 -v 2.312500 1.750000 -0.062500 -v 2.187500 1.625000 0.062500 -v 2.187500 1.625000 -0.062500 -v 1.875000 -3.437500 0.437500 -v 3.250000 -3.437500 0.437500 -v 3.375000 -3.437500 0.312500 -v 3.375000 -3.437500 -0.312500 -v 1.750000 -3.437500 -0.312500 -v 1.750000 -3.437500 0.312500 -v 3.250000 -3.437500 -0.437500 -v 1.875000 -3.437500 -0.437500 -v 3.375000 -3.562500 0.312500 -v 3.375000 -3.562500 -0.312500 -v 1.750000 -3.562500 0.312500 -v 1.750000 -3.562500 -0.312500 -v 1.875000 -3.562500 0.437500 -v 3.250000 -3.562500 0.437500 -v 3.250000 -3.562500 -0.437500 -v 1.875000 -3.562500 -0.437500 -v 1.937500 -3.437500 -0.312500 -v 1.937500 -3.437500 0.312500 -v 3.312500 -3.437500 -0.312500 -v 3.312500 -3.437500 0.312500 -v 0.875000 0.562500 0.312500 -v 0.875000 0.562500 -0.312500 -v 2.250000 0.562500 0.312500 -v 2.250000 0.562500 -0.312500 v 3.500000 -3.437500 -0.250000 v 1.500000 -3.437500 -0.250000 v 3.500000 -2.437500 -0.250000 @@ -344,46 +2355,6 @@ v 3.250000 0.062500 0.250000 v 3.250000 0.062500 -0.250000 v 2.750000 -0.562500 0.250000 v 2.750000 -0.562500 -0.250000 -v 1.187500 0.562500 -0.187500 -v 2.187500 0.562500 -0.187500 -v 1.187500 0.429918 -0.132583 -v 2.187500 0.429918 -0.132583 -v 1.187500 0.375000 0.000000 -v 2.187500 0.375000 0.000000 -v 1.187500 0.429918 0.132583 -v 2.187500 0.429918 0.132583 -v 1.187500 0.562500 0.187500 -v 2.187500 0.562500 0.187500 -v 1.187500 0.695083 0.132583 -v 2.187500 0.695083 0.132583 -v 1.187500 0.750000 0.000000 -v 2.187500 0.750000 0.000000 -v 1.187500 0.695083 -0.132583 -v 2.187500 0.695083 -0.132583 -v 1.000000 0.562500 -0.093750 -v 1.000000 0.496209 -0.066291 -v 1.000000 0.468750 0.000000 -v 1.000000 0.496209 0.066291 -v 1.000000 0.562500 0.093750 -v 1.000000 0.628792 0.066291 -v 1.000000 0.656250 0.000000 -v 1.000000 0.628792 -0.066291 -v -3.000000 0.000000 0.385001 -v -3.000000 1.375000 0.385001 -v -1.625000 0.000000 0.385001 -v -1.625000 1.375000 0.385001 -v -9.000000 0.000000 0.385001 -v -9.000000 1.375000 0.385001 -v -3.500000 0.000000 0.385001 -v -3.500000 1.375000 0.385001 -vt 0.000050 0.000050 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vt 0.999950 0.000050 -vt -0.000000 0.000000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vt 1.000000 -0.003906 vt 0.417949 0.031008 vt 0.420513 0.046512 vt 0.417949 0.046512 @@ -434,59 +2405,12 @@ vt 0.000000 0.139535 vt 0.002564 0.155039 vt 0.002564 0.139535 vt 0.000000 0.155039 -vt 0.430769 0.542636 -vt 0.430769 0.589147 -vt 0.348718 0.713178 -vt 0.348718 0.217054 -vt 0.082051 0.186047 -vt 0.348718 0.186047 -vt 0.430769 0.527132 -vt 0.082051 0.542636 -vt 0.082051 0.527132 -vt 0.082051 0.465116 -vt 0.430769 0.465116 -vt 0.430769 0.496124 -vt 0.069231 0.511628 -vt 0.071795 0.496124 -vt 0.069231 0.480620 -vt 0.076923 0.449612 -vt 0.076923 0.542636 -vt 0.066667 0.519380 -vt 0.061538 0.527132 -vt 0.020513 0.542636 -vt 0.061538 0.472868 -vt 0.020513 0.449612 -vt 0.053846 0.511628 -vt 0.053846 0.496124 -vt 0.492308 0.496124 -vt 0.492308 0.573643 -vt 0.492308 0.589147 -vt 0.430769 0.511628 -vt 0.116983 0.508758 -vt 0.131570 0.486708 -vt 0.131570 0.508758 -vt 0.138863 0.420561 -vt 0.138863 0.486708 vt 0.184615 0.852713 vt 0.246154 0.806202 vt 0.246154 0.852713 vt 0.246154 0.883721 vt 0.179487 0.829457 vt 0.182051 0.821705 -vt 0.146351 0.442610 -vt 0.139058 0.442610 -vt 0.146351 0.420561 -vt 0.139058 0.486708 -vt 0.146351 0.486708 -vt 0.168230 0.442610 -vt 0.168230 0.420561 -vt 0.492308 0.542636 -vt 0.615385 0.527132 -vt 0.615385 0.542636 -vt 0.615385 0.449612 -vt 0.615385 0.465116 -vt 0.492308 0.465116 -vt 0.492308 0.527132 vt 0.169231 0.829457 vt 0.174359 0.852713 vt 0.164103 0.852713 @@ -497,20 +2421,6 @@ vt 0.082051 0.806202 vt 0.102564 0.806202 vt 0.084615 0.790698 vt 0.087179 0.782946 -vt 0.082051 0.279070 -vt 0.348718 0.248062 -vt 0.348718 0.279070 -vt 0.676923 0.480620 -vt 0.656410 0.449612 -vt 0.676923 0.449612 -vt 0.082051 0.217054 -vt 0.082051 0.248062 -vt 0.082051 0.449612 -vt 0.358974 0.279070 -vt 0.358974 0.186047 -vt 0.082051 0.821705 -vt 0.082051 0.883721 -vt 0.000000 0.883721 vt 0.253846 0.829457 vt 0.541026 0.860465 vt 0.253846 0.860465 @@ -521,66 +2431,9 @@ vt 0.541026 0.806202 vt 0.541026 0.829457 vt 0.548718 0.883721 vt 0.246154 0.806202 -vt 0.625641 0.480620 -vt 0.625641 0.511628 -vt 0.620513 0.449612 -vt 0.620513 0.542636 -vt 0.656410 0.542636 -vt 0.553846 0.744186 -vt 0.553846 0.775194 -vt 0.348718 0.806202 -vt 0.656410 0.511628 -vt 0.676923 0.542636 vt 0.000000 0.341085 vt 0.010256 0.186047 vt 0.010256 0.341085 -vt 0.000000 0.542636 -vt 0.082051 0.542636 -vt 0.082051 0.604651 -vt 0.066667 0.728682 -vt 0.000000 0.697674 -vt 0.066667 0.697674 -vt 0.028205 0.279070 -vt 0.035897 0.310078 -vt 0.028205 0.310078 -vt 0.035897 0.186047 -vt 0.028205 0.186047 -vt 0.017949 0.186047 -vt 0.010256 0.294574 -vt 0.010256 0.186047 -vt 0.046154 0.186047 -vt 0.035897 0.279070 -vt 0.017949 0.294574 -vt 0.051282 0.418605 -vt 0.046154 0.403101 -vt 0.051282 0.403101 -vt 0.061538 0.418605 -vt 0.056410 0.403101 -vt 0.061538 0.403101 -vt 0.051282 0.372093 -vt 0.056410 0.387597 -vt 0.051282 0.387597 -vt 0.061538 0.372093 -vt 0.061538 0.387597 -vt 0.066667 0.372093 -vt 0.071795 0.387597 -vt 0.066667 0.387597 -vt 0.071795 0.372093 -vt 0.076923 0.387597 -vt 0.071795 0.418605 -vt 0.066667 0.403101 -vt 0.071795 0.403101 -vt 0.082051 0.372093 -vt 0.082051 0.387597 -vt 0.076923 0.403101 -vt 0.041026 0.372093 -vt 0.046154 0.387597 -vt 0.041026 0.387597 -vt 0.082051 0.418605 -vt 0.082051 0.403101 -vt 0.041026 0.418605 -vt 0.041026 0.403101 -vt 0.066667 0.418605 vt 0.835897 0.790698 vt 0.805128 0.759690 vt 0.835897 0.759690 @@ -601,9 +2454,6 @@ vt 0.789744 0.790698 vt 0.810256 0.821705 vt 0.810256 0.790698 vt 0.841026 0.821705 -vt 0.928205 0.744186 -vt 0.923077 0.728682 -vt 0.928205 0.635659 vt 0.884615 0.868217 vt 0.905128 0.930233 vt 0.864103 0.930233 @@ -641,74 +2491,6 @@ vt 0.651282 0.821705 vt 0.661538 0.868217 vt 0.682051 0.759690 vt 0.682051 0.821705 -vt 0.194872 0.728682 -vt 0.169231 0.775194 -vt 0.169231 0.728682 -vt 0.164103 0.728682 -vt 0.164103 0.775194 -vt 0.169231 0.790698 -vt 0.194872 0.775194 -vt 0.205128 0.790698 -vt 0.169231 0.713178 -vt 0.205128 0.775194 -vt 0.205128 0.728682 -vt 0.230769 0.728682 -vt 0.210256 0.744186 -vt 0.210256 0.728682 -vt 0.235897 0.744186 -vt 0.235897 0.728682 -vt 0.205128 0.728682 -vt 0.205128 0.744186 -vt 0.210256 0.759690 -vt 0.230769 0.744186 -vt 0.230769 0.759690 -vt 0.230769 0.713178 -vt 0.210256 0.713178 -vt 0.074359 0.232558 -vt 0.066667 0.217054 -vt 0.071795 0.217054 -vt 0.071795 0.325581 -vt 0.082051 0.310078 -vt 0.082051 0.325581 -vt 0.071795 0.294574 -vt 0.056410 0.279070 -vt 0.061538 0.279070 -vt 0.082051 0.263566 -vt 0.076923 0.232558 -vt 0.082051 0.217054 -vt 0.056410 0.294574 -vt 0.066667 0.341085 -vt 0.056410 0.341085 -vt 0.071795 0.263566 -vt 0.066667 0.248062 -vt 0.071795 0.248062 -vt 0.076923 0.341085 -vt 0.082051 0.341085 -vt 0.076923 0.294574 -vt 0.082051 0.294574 -vt 0.061538 0.232558 -vt 0.066667 0.232558 -vt 0.061538 0.263566 -vt 0.066667 0.263566 -vt 0.066667 0.294574 -vt 0.071795 0.310078 -vt 0.071795 0.186047 -vt 0.061538 0.201550 -vt 0.046154 0.186047 -vt 0.984615 0.511628 -vt 0.989744 0.527132 -vt 0.984615 0.620155 -vt 0.861538 0.496124 -vt 0.917949 0.573643 -vt 0.861538 0.573643 -vt 1.000000 0.000000 -vt 0.943590 0.496124 -vt 0.943590 0.000000 -vt 0.861538 0.000000 -vt 0.835897 0.496124 -vt 0.835897 -0.000000 -vt 0.917949 0.496124 -vt 0.917949 -0.000000 vt 0.800000 0.186047 vt 0.810256 0.217054 vt 0.810256 0.279070 @@ -722,23 +2504,8 @@ vt 0.866667 0.759690 vt 0.830769 0.713178 vt 0.810256 0.713178 vt 0.774359 0.759690 -vt 0.612821 0.852407 -vt 0.605230 0.829458 -vt 0.612821 0.806508 -vt 0.635897 0.713178 vt -0.000000 0.186047 vt 0.420513 0.000000 -vt 0.082051 0.713178 -vt 0.066667 0.472868 -vt 0.056410 0.519380 -vt 0.056410 0.472868 -vt 0.010256 0.511628 -vt 0.010256 0.480620 -vt 0.053846 0.488372 -vt 0.430769 0.573643 -vt 0.492308 0.511628 -vt 0.116983 0.486709 -vt 0.131570 0.420561 vt 0.184615 0.806202 vt 0.184615 0.883721 vt 0.174359 0.837209 @@ -750,52 +2517,18 @@ vt 0.100000 0.790698 vt 0.082051 0.806202 vt 0.097436 0.782946 vt 0.092308 0.775194 -vt 0.656410 0.480620 -vt 0.635897 0.279070 -vt 0.635897 0.341085 -vt 0.000000 0.728682 vt 0.541026 0.961240 vt 0.253846 0.806202 vt 0.548718 0.806202 vt 0.246154 0.883721 -vt 0.635897 0.744186 -vt 0.635897 0.775194 -vt 0.635897 0.806202 -vt 0.676923 0.511628 vt 0.000000 0.186047 -vt 0.046154 0.294574 -vt 0.046154 0.418605 -vt 0.056410 0.418605 -vt 0.056410 0.372093 -vt 0.076923 0.372093 -vt 0.076923 0.418605 -vt 0.046154 0.372093 vt 0.692308 0.790698 vt 0.841026 0.790698 -vt 0.923077 0.651163 -vt 0.984615 0.635659 -vt 0.984615 0.744186 -vt 0.989744 0.651163 -vt 0.989744 0.728682 vt 0.894872 0.868217 vt 0.894872 0.868217 vt 0.643590 0.868217 vt 0.651282 0.759690 vt 0.689744 0.868217 -vt 0.205128 0.713178 -vt 0.046154 0.294574 -vt 0.076923 0.248062 -vt 0.061538 0.217054 -vt 0.061538 0.248062 -vt 0.071795 0.341085 -vt 0.071795 0.294574 -vt 0.056410 0.201550 -vt 0.989744 0.604651 -vt 0.928205 0.620155 -vt 0.928205 0.511628 -vt 0.923077 0.604651 -vt 0.923077 0.527132 -vt 1.000000 0.496124 vt 0.800000 0.310078 vt 0.738462 0.310078 vt 0.728205 0.279070 @@ -803,12 +2536,6 @@ vt 0.728205 0.217054 vt 0.738462 0.186047 vt 0.830769 0.759690 vt 0.810256 0.759690 -vt 0.618188 0.813230 -vt 0.620412 0.829458 -vt 0.618188 0.845685 -vt 0.607453 0.845685 -vt 0.607453 0.813230 -vt 0.635897 0.651163 vt 0.835897 0.046512 vt 0.835897 0.186047 vt 0.835897 0.108527 @@ -833,32 +2560,6 @@ vt 0.102564 0.759690 vt 0.102564 0.790698 vt 0.164103 0.713178 vt 0.102564 0.713178 -vt 0.051282 0.418605 -vt 0.058974 0.449612 -vt 0.051282 0.449612 -vt 0.058974 0.418605 -vt 0.066667 0.449612 -vt 0.066667 0.418605 -vt 0.074359 0.449612 -vt 0.074359 0.418605 -vt 0.082051 0.449612 -vt 0.020513 0.418605 -vt 0.028205 0.449612 -vt 0.020513 0.449612 -vt 0.028205 0.418605 -vt 0.035897 0.449612 -vt 0.035897 0.418605 -vt 0.043590 0.449612 -vt 0.043590 0.418605 -vt 0.051282 0.356589 -vt 0.046154 0.356589 -vt 0.056410 0.356589 -vt 0.061538 0.356589 -vt 0.066667 0.356589 -vt 0.071795 0.356589 -vt 0.076923 0.356589 -vt 0.082051 0.356589 -vt 0.041026 0.356589 vt 0.810256 0.434109 vt 0.830769 0.310078 vt 0.830769 0.434109 @@ -889,18 +2590,6 @@ vt 0.784615 0.558140 vt 0.794872 0.558140 vt 0.800000 0.434109 vt 0.738462 0.341085 -vt 0.917949 0.527132 -vt 0.917949 0.604651 -vt 0.989744 0.620155 -vt 0.989744 0.635659 -vt 0.928205 0.496124 -vt 0.923077 0.511628 -vt 0.923077 0.496124 -vt 0.994872 0.604651 -vt 0.994872 0.527132 -vt 0.923077 0.635659 -vt 0.989744 0.496124 -vt 0.984615 0.496124 vt 0.784615 0.558140 vt 0.800000 0.434109 vt 0.738462 0.310078 @@ -921,69 +2610,19 @@ vt 0.682051 0.759690 vt 0.676923 0.713178 vt 0.682051 0.713178 vt 0.682051 0.527132 -vt 0.605128 0.899225 -vt 0.564103 0.914729 -vt 0.564103 0.899225 -vt 0.605128 0.914729 -vt 0.564103 0.930233 -vt 0.605128 0.806202 -vt 0.564103 0.821705 -vt 0.564103 0.806202 -vt 0.605128 0.821705 -vt 0.564103 0.837209 -vt 0.605128 0.837209 -vt 0.564103 0.852713 -vt 0.605128 0.852713 -vt 0.564103 0.868217 -vt 0.605128 0.868217 -vt 0.564103 0.883721 -vt 0.605128 0.883721 -vt 0.556410 0.844961 -vt 0.556410 0.837209 -vt 0.554054 0.807659 -vt 0.556123 0.813913 -vt 0.549060 0.822757 -vt 0.556410 0.883721 -vt 0.556410 0.906977 -vt 0.556410 0.899225 -vt 0.556410 0.813953 -vt 0.556410 0.806202 -vt 0.556410 0.852713 -vt 0.556410 0.821705 -vt 0.556410 0.868217 -vt 0.556410 0.914729 vt 0.717949 0.527132 vt 0.835897 0.000000 -vt 0.082051 0.418605 vt 0.697436 0.310078 vt 0.676923 0.527132 vt 0.728205 0.310078 -vt 0.923077 0.620155 -vt 0.989744 0.511628 vt 0.676923 0.759690 -vt 0.605128 0.930233 -vt 0.556123 0.822757 -vt 0.554054 0.829011 -vt 0.551129 0.829011 -vt 0.549060 0.813913 -vt 0.551129 0.807659 -vt 0.556410 0.891473 -vt 0.556410 0.860465 -vt 0.556410 0.829457 -vt 0.556410 0.875969 -vt 0.556410 0.922481 -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.0000 -1.0000 -vn -0.0000 -0.7071 -0.7071 -vn -0.0000 0.7071 -0.7071 vn 0.0000 1.0000 0.0000 -vn 0.0000 0.7071 0.7071 vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 vn 0.0000 -0.7071 0.7071 -vn 0.8944 0.4472 0.0000 -vn 0.4472 0.8944 0.0000 vn -0.3162 -0.9487 0.0000 vn -0.9487 -0.3162 0.0000 vn -0.7071 -0.7071 0.0000 @@ -991,13 +2630,10 @@ vn 0.8944 -0.4472 0.0000 vn 0.9701 0.2425 0.0000 vn -0.8944 0.4472 0.0000 vn -0.9864 -0.1644 0.0000 +vn 0.0000 0.0000 1.0000 vn -0.9701 0.2425 0.0000 vn 0.8000 -0.6000 0.0000 vn 0.9864 -0.1644 0.0000 -vn -0.4472 0.8944 0.0000 -vn -0.7071 0.7071 0.0000 -vn -0.9665 -0.2567 0.0000 -vn 0.9665 0.2567 0.0000 vn 0.0000 -0.5000 0.8660 vn 0.0000 -0.8660 0.5000 vn -0.0000 -0.8660 -0.5000 @@ -1008,8 +2644,6 @@ vn 0.0000 0.8660 0.5000 vn 0.0000 0.5000 0.8660 vn -0.0000 0.1305 -0.9914 vn 0.0000 0.2588 0.9659 -vn 0.7071 0.7071 0.0000 -vn 0.7071 -0.7071 0.0000 vn 0.9162 0.1662 0.3645 vn 0.9239 0.0000 -0.3827 vn 0.9162 0.1662 -0.3645 @@ -1023,6 +2657,7 @@ vn -0.6861 0.6861 -0.2418 vn -0.8727 0.2440 0.4229 vn -0.8727 0.2440 -0.4229 vn -0.8812 -0.2937 0.3705 +vn 0.7071 -0.7071 0.0000 vn -0.8321 0.5547 0.0000 vn -0.9301 0.1173 0.3481 vn -0.5496 0.6292 0.5496 @@ -1040,14 +2675,10 @@ vn 0.6853 0.2467 0.6853 vn 0.9239 0.0000 0.3827 vn 0.3830 0.2240 0.8962 vn 0.4161 0.0853 0.9053 -vn -0.9239 0.0000 -0.3827 -vn -0.9239 0.0000 0.3827 -vn -0.3827 0.0000 -0.9239 -vn -0.3827 0.0000 0.9239 -vn 0.3827 0.0000 -0.9239 vn 0.3830 0.2240 -0.8962 vn 0.4161 0.0853 -0.9053 vn -0.4602 0.4602 -0.7592 +vn 0.3827 0.0000 -0.9239 vn 0.3243 0.1224 -0.9380 vn 0.6853 0.2467 -0.6853 vn 0.2291 0.5399 -0.8099 @@ -1055,634 +2686,293 @@ vn -0.3931 0.1897 -0.8997 vn -0.5496 0.6292 -0.5496 vn 0.3304 0.2876 -0.8989 vn -0.9301 0.1173 -0.3481 -vn -0.4472 0.0000 0.8944 -vn -0.7940 0.4299 0.4299 -vn -0.7940 0.0000 0.6080 -vn -0.7940 0.6080 -0.0000 -vn -0.7940 0.4299 -0.4299 -vn -0.7940 -0.4299 0.4299 -vn -0.4472 0.0000 -0.8944 -vn -0.4472 0.6325 -0.6325 -vn -0.7940 -0.4299 -0.4299 -vn -0.7940 0.0000 -0.6080 -vn -0.4472 -0.8944 0.0000 -vn -0.7940 -0.6080 0.0000 -vn -0.4472 0.6325 0.6325 -vn -0.4472 -0.6325 0.6325 -vn -0.4472 -0.6325 -0.6325 vn -0.6861 0.6861 0.2418 s off -f 372/1/1 375/2/1 373/3/1 -f 372/1/1 374/4/1 375/2/1 -f 368/5/1 371/6/1 369/7/1 -f 368/5/1 370/8/1 371/6/1 -f 12/9/2 31/10/2 14/11/2 -f 7/12/3 39/13/3 5/14/3 -f 10/15/2 30/16/2 12/9/2 -f 8/17/2 29/18/2 10/15/2 -f 24/19/2 26/20/2 2/21/2 -f 4/22/2 26/20/2 25/23/2 -f 6/24/2 28/25/2 8/26/2 -f 24/19/2 35/27/2 36/28/2 -f 6/24/2 25/23/2 27/29/2 -f 22/30/2 34/31/2 35/27/2 -f 18/32/2 34/31/2 20/33/2 -f 18/32/2 32/34/2 33/35/2 -f 16/36/2 31/10/2 32/34/2 -f 9/37/3 40/38/3 7/39/3 -f 11/40/3 41/41/3 9/37/3 -f 13/42/3 42/43/3 11/40/3 -f 13/42/3 44/44/3 43/45/3 -f 15/46/3 45/47/3 44/44/3 -f 17/48/3 46/49/3 45/47/3 -f 19/50/3 47/51/3 46/49/3 -f 21/52/3 48/53/3 47/51/3 -f 23/54/3 38/55/3 48/53/3 -f 3/56/3 38/55/3 1/57/3 -f 5/14/3 37/58/3 3/56/3 -f 71/59/4 74/60/4 51/61/4 -f 100/62/5 49/63/5 51/64/5 -f 72/65/6 67/66/6 66/67/6 -f 69/68/7 70/69/7 73/70/7 -f 66/67/2 60/71/2 61/72/2 -f 62/73/2 68/74/2 69/68/2 -f 60/71/2 67/75/2 59/76/2 -f 58/77/2 67/75/2 49/78/2 -f 52/79/2 50/80/2 68/74/2 -f 56/81/2 49/78/2 55/82/2 -f 70/69/7 79/83/7 73/70/7 -f 74/60/7 82/84/7 80/85/7 -f 79/83/4 83/86/4 73/70/4 -f 73/87/3 85/88/3 72/89/3 -f 85/88/3 74/90/3 71/91/3 -f 71/91/3 72/89/3 85/88/3 -f 91/92/4 86/93/4 88/94/4 -f 87/95/7 91/92/7 88/94/7 -f 95/96/3 94/97/3 91/92/3 -f 98/98/2 97/99/2 96/100/2 -f 79/101/2 98/98/2 84/102/2 -f 82/103/2 96/100/2 80/104/2 -f 96/105/6 104/106/6 103/107/6 -f 80/85/4 51/61/4 74/60/4 -f 102/108/8 101/109/8 77/110/8 -f 104/106/7 97/111/7 79/83/7 -f 76/112/3 90/113/3 92/114/3 -f 90/115/9 120/116/9 92/114/9 -f 119/117/2 111/118/2 112/119/2 -f 111/118/2 117/120/2 116/121/2 -f 50/122/10 99/123/10 125/124/10 -f 138/125/3 122/126/3 124/127/3 -f 64/128/9 99/123/9 65/129/9 -f 102/108/1 68/130/1 125/124/1 -f 125/131/3 100/62/3 51/132/3 -f 134/133/4 138/134/4 140/135/4 -f 128/136/9 127/137/9 126/138/9 -f 132/139/7 130/140/7 131/141/7 -f 128/136/5 133/142/5 129/143/5 -f 127/137/10 131/141/10 126/138/10 -f 129/143/3 132/144/3 127/137/3 -f 126/138/2 130/145/2 128/136/2 -f 104/106/11 136/146/11 137/147/11 -f 101/109/11 102/148/11 136/146/11 -f 103/149/11 104/106/11 137/147/11 -f 137/147/11 121/150/11 103/149/11 -f 122/126/11 136/146/11 102/148/11 -f 141/151/9 140/152/9 125/153/9 -f 135/154/3 123/155/3 121/150/3 -f 142/156/3 144/157/3 143/158/3 -f 141/159/1 139/160/1 135/161/1 -f 136/162/9 146/163/9 137/164/9 -f 170/165/12 168/166/12 169/167/12 -f 167/168/3 170/165/3 165/169/3 -f 164/170/2 168/171/2 166/172/2 -f 166/173/4 171/174/4 167/168/4 -f 164/170/1 170/165/1 169/175/1 -f 190/176/4 184/177/4 186/178/4 -f 194/179/4 172/180/4 174/181/4 -f 191/182/1 173/183/1 187/184/1 -f 173/183/1 195/185/1 175/186/1 -f 197/187/1 179/188/1 177/189/1 -f 195/185/1 177/189/1 175/186/1 -f 199/190/1 181/191/1 179/188/1 -f 198/192/4 176/193/4 178/194/4 -f 181/191/1 203/195/1 183/196/1 -f 180/197/4 198/192/4 178/194/4 -f 203/198/1 185/199/1 183/200/1 -f 202/201/4 180/197/4 182/202/4 -f 172/180/4 190/176/4 186/178/4 -f 184/177/4 202/203/4 182/204/4 -f 185/199/1 191/182/1 187/184/1 -f 196/205/4 174/181/4 176/193/4 -f 204/206/13 207/207/13 205/208/13 -f 206/209/9 209/210/9 207/207/9 -f 208/211/14 211/212/14 209/210/14 -f 210/213/15 213/214/15 211/212/15 -f 214/215/16 217/216/16 215/217/16 -f 216/218/17 219/219/17 217/216/17 -f 218/220/7 221/221/7 219/219/7 -f 220/222/18 223/223/18 221/221/18 -f 222/224/19 225/225/19 223/223/19 -f 290/226/7 287/227/7 283/228/7 -f 210/229/1 214/230/1 212/231/1 -f 218/232/1 210/229/1 208/233/1 -f 206/234/1 218/232/1 208/233/1 -f 220/235/1 206/234/1 204/236/1 -f 224/237/1 222/238/1 227/239/1 -f 227/239/1 226/240/1 224/237/1 -f 219/241/4 207/242/4 209/243/4 -f 236/244/4 225/245/4 235/246/4 -f 225/245/4 236/244/4 223/247/4 -f 211/248/4 219/241/4 209/243/4 -f 223/247/4 205/249/4 221/250/4 -f 215/251/4 211/248/4 213/252/4 -f 240/253/14 237/254/14 238/255/14 -f 242/256/20 239/257/20 240/253/20 -f 244/258/21 241/259/21 242/256/21 -f 246/260/22 243/261/22 244/258/22 -f 239/262/1 243/261/1 245/263/1 -f 244/258/4 242/264/4 240/265/4 -f 253/266/7 251/267/7 252/268/7 -f 247/269/2 251/267/2 249/270/2 -f 249/271/4 254/272/4 250/273/4 -f 247/274/1 253/266/1 252/268/1 -f 250/275/12 253/266/12 248/276/12 -f 261/277/7 259/278/7 260/279/7 -f 258/280/3 261/277/3 256/281/3 -f 255/282/2 259/278/2 257/283/2 -f 257/284/4 262/285/4 258/286/4 -f 256/287/1 260/279/1 255/288/1 -f 273/289/7 277/290/7 271/291/7 -f 282/292/7 269/293/7 270/294/7 -f 266/295/4 267/296/4 276/297/4 -f 266/298/3 269/299/3 264/300/3 -f 263/301/23 267/302/23 265/303/23 -f 272/304/7 280/305/7 274/306/7 -f 280/307/1 270/294/1 274/308/1 -f 269/293/4 279/309/4 273/310/4 -f 281/311/24 277/290/24 279/312/24 -f 276/313/24 280/305/24 278/314/24 -f 268/315/7 281/316/7 282/292/7 -f 264/317/1 275/318/1 263/319/1 -f 297/320/9 292/321/9 296/322/9 -f 303/323/7 306/324/7 304/325/7 -f 299/326/4 306/327/4 301/328/4 -f 300/329/25 304/330/25 299/331/25 -f 300/329/1 305/332/1 303/323/1 -f 301/328/26 305/332/26 302/333/26 -f 316/334/9 307/335/9 234/336/9 -f 312/337/4 343/338/4 311/339/4 -f 230/340/1 342/341/1 229/342/1 -f 323/343/4 339/344/4 312/337/4 -f 338/345/1 334/346/1 229/342/1 -f 343/338/4 312/337/4 339/344/4 -f 338/345/1 229/342/1 342/341/1 -f 357/347/3 353/348/3 349/349/3 -f 80/85/4 103/107/4 123/350/4 -f 12/9/2 30/16/2 31/10/2 -f 7/12/3 40/351/3 39/13/3 -f 10/15/2 29/18/2 30/16/2 -f 8/17/2 28/352/2 29/18/2 -f 24/19/2 36/28/2 26/20/2 -f 4/22/2 2/21/2 26/20/2 -f 6/24/2 27/29/2 28/25/2 -f 24/19/2 22/30/2 35/27/2 -f 6/24/2 4/22/2 25/23/2 -f 22/30/2 20/33/2 34/31/2 -f 18/32/2 33/35/2 34/31/2 -f 18/32/2 16/36/2 32/34/2 -f 16/36/2 14/11/2 31/10/2 -f 9/37/3 41/41/3 40/38/3 -f 11/40/3 42/43/3 41/41/3 -f 13/42/3 43/45/3 42/43/3 -f 13/42/3 15/46/3 44/44/3 -f 15/46/3 17/48/3 45/47/3 -f 17/48/3 19/50/3 46/49/3 -f 19/50/3 21/52/3 47/51/3 -f 21/52/3 23/54/3 48/53/3 -f 23/54/3 1/57/3 38/55/3 -f 3/56/3 37/58/3 38/55/3 -f 5/14/3 39/13/3 37/58/3 -f 51/61/4 49/353/4 67/66/4 -f 67/66/4 71/59/4 51/61/4 -f 100/62/5 64/128/5 49/63/5 -f 72/65/6 71/59/6 67/66/6 -f 72/65/7 66/67/7 73/70/7 -f 66/67/7 69/68/7 73/70/7 -f 61/72/2 62/73/2 69/68/2 -f 69/68/2 66/67/2 61/72/2 -f 62/73/2 63/354/2 68/74/2 -f 60/71/2 66/67/2 67/75/2 -f 49/78/2 57/355/2 58/77/2 -f 58/77/2 59/76/2 67/75/2 -f 52/79/2 53/356/2 50/80/2 -f 68/74/2 63/354/2 52/79/2 -f 57/355/2 49/78/2 56/81/2 -f 49/78/2 64/357/2 50/80/2 -f 64/357/2 65/358/2 50/80/2 -f 50/80/2 53/356/2 54/359/2 -f 50/80/2 54/359/2 55/82/2 -f 49/78/2 50/80/2 55/82/2 -f 70/69/7 77/110/7 79/83/7 -f 74/60/7 81/360/7 82/84/7 -f 79/83/4 84/361/4 83/86/4 -f 73/87/3 83/362/3 85/88/3 -f 85/88/3 81/363/3 74/90/3 -f 91/92/4 89/364/4 86/93/4 -f 87/95/7 90/365/7 91/92/7 -f 91/92/3 90/113/3 95/96/3 -f 90/113/3 93/366/3 95/96/3 -f 94/97/3 89/364/3 91/92/3 -f 79/101/2 97/99/2 98/98/2 -f 82/103/2 98/98/2 96/100/2 -f 96/105/6 97/111/6 104/106/6 -f 80/85/4 123/350/4 51/61/4 -f 69/68/8 68/130/8 70/69/8 -f 68/130/8 102/108/8 70/69/8 -f 70/69/8 102/108/8 77/110/8 -f 79/83/7 77/110/7 101/109/7 -f 101/109/7 104/106/7 79/83/7 -f 76/112/3 93/366/3 90/113/3 -f 92/114/3 78/367/3 75/368/3 -f 75/368/3 76/112/3 92/114/3 -f 90/115/9 119/369/9 120/116/9 -f 112/119/2 120/116/2 119/117/2 -f 119/117/2 105/370/2 111/118/2 -f 113/371/2 112/119/2 111/118/2 -f 111/118/1 118/372/1 117/120/1 -f 114/373/2 113/371/2 116/121/2 -f 113/371/2 111/118/2 116/121/2 -f 116/121/2 115/374/2 114/373/2 -f 50/122/10 65/129/10 99/123/10 -f 138/125/3 134/375/3 122/126/3 -f 64/128/9 100/62/9 99/123/9 -f 68/130/1 50/122/1 125/124/1 -f 125/124/1 124/376/1 102/108/1 -f 124/376/1 122/377/1 102/108/1 -f 125/131/3 99/123/3 100/62/3 -f 147/378/4 136/162/4 140/135/4 -f 136/162/4 134/133/4 140/135/4 -f 128/136/9 129/143/9 127/137/9 -f 132/139/7 133/379/7 130/140/7 -f 128/136/5 130/380/5 133/142/5 -f 127/137/10 132/139/10 131/141/10 -f 129/143/3 133/381/3 132/144/3 -f 126/138/2 131/382/2 130/145/2 -f 104/106/11 101/109/11 136/146/11 -f 137/147/11 135/154/11 121/150/11 -f 122/126/11 134/375/11 136/146/11 -f 125/153/9 51/61/9 141/151/9 -f 51/61/9 123/350/9 141/151/9 -f 123/350/9 139/383/9 141/151/9 -f 140/152/9 138/384/9 124/385/9 -f 140/152/9 124/385/9 125/153/9 -f 135/154/3 139/386/3 123/155/3 -f 142/156/3 145/387/3 144/157/3 -f 135/161/1 137/164/1 141/159/1 -f 137/164/1 146/163/1 141/159/1 -f 136/162/9 147/378/9 146/163/9 -f 170/165/12 171/174/12 168/166/12 -f 167/168/3 171/174/3 170/165/3 -f 164/170/2 169/175/2 168/171/2 -f 166/173/4 168/388/4 171/174/4 -f 164/170/1 165/169/1 170/165/1 -f 190/176/4 188/389/4 184/177/4 -f 194/179/4 192/390/4 172/180/4 -f 191/182/1 193/391/1 173/183/1 -f 173/183/1 193/391/1 195/185/1 -f 197/187/1 199/190/1 179/188/1 -f 195/185/1 197/187/1 177/189/1 -f 199/190/1 201/392/1 181/191/1 -f 198/192/4 196/205/4 176/193/4 -f 181/191/1 201/392/1 203/195/1 -f 180/197/4 200/393/4 198/192/4 -f 203/198/1 189/394/1 185/199/1 -f 202/201/4 200/393/4 180/197/4 -f 172/180/4 192/390/4 190/176/4 -f 184/177/4 188/389/4 202/203/4 -f 185/199/1 189/394/1 191/182/1 -f 196/205/4 194/179/4 174/181/4 -f 204/206/13 206/209/13 207/207/13 -f 206/209/9 208/211/9 209/210/9 -f 208/211/14 210/213/14 211/212/14 -f 210/213/15 212/395/15 213/214/15 -f 214/215/16 216/218/16 217/216/16 -f 216/218/17 218/220/17 219/219/17 -f 218/220/7 220/222/7 221/221/7 -f 220/222/18 222/224/18 223/223/18 -f 222/224/19 224/396/19 225/225/19 -f 287/227/7 288/397/7 283/228/7 -f 283/228/7 284/398/7 289/399/7 -f 284/398/7 285/400/7 289/399/7 -f 285/400/7 286/401/7 289/399/7 -f 289/399/7 290/226/7 283/228/7 -f 210/229/1 216/402/1 214/230/1 -f 218/232/1 216/402/1 210/229/1 -f 206/234/1 220/235/1 218/232/1 -f 204/236/1 227/239/1 222/238/1 -f 222/238/1 220/235/1 204/236/1 -f 219/241/4 221/250/4 207/242/4 -f 211/248/4 217/403/4 219/241/4 -f 223/247/4 236/244/4 205/249/4 -f 205/249/4 207/242/4 221/250/4 -f 215/251/4 217/403/4 211/248/4 -f 240/253/14 239/257/14 237/254/14 -f 242/256/20 241/259/20 239/257/20 -f 244/258/21 243/261/21 241/259/21 -f 246/260/22 245/263/22 243/261/22 -f 245/263/1 237/404/1 239/262/1 -f 239/262/1 241/405/1 243/261/1 -f 240/265/4 238/406/4 246/260/4 -f 246/260/4 244/258/4 240/265/4 -f 253/266/7 254/272/7 251/267/7 -f 247/269/2 252/268/2 251/267/2 -f 249/271/4 251/267/4 254/272/4 -f 247/274/1 248/407/1 253/266/1 -f 250/275/12 254/272/12 253/266/12 -f 261/277/7 262/285/7 259/278/7 -f 258/280/3 262/285/3 261/277/3 -f 255/282/2 260/279/2 259/278/2 -f 257/284/4 259/278/4 262/285/4 -f 256/287/1 261/277/1 260/279/1 -f 273/289/7 279/312/7 277/290/7 -f 282/292/7 281/316/7 269/293/7 -f 278/314/4 272/304/4 266/295/4 -f 266/295/4 265/408/4 267/296/4 -f 276/297/4 278/314/4 266/295/4 -f 266/298/3 272/304/3 270/409/3 -f 272/304/3 274/306/3 270/409/3 -f 273/289/3 271/291/3 269/299/3 -f 271/291/3 264/300/3 269/299/3 -f 266/298/3 270/409/3 269/299/3 -f 263/301/23 268/315/23 267/302/23 -f 272/304/7 278/314/7 280/305/7 -f 280/307/1 282/292/1 270/294/1 -f 269/293/4 281/316/4 279/309/4 -f 281/311/24 275/410/24 277/290/24 -f 276/313/24 282/411/24 280/305/24 -f 276/412/7 267/302/7 282/292/7 -f 267/302/7 268/315/7 282/292/7 -f 268/315/7 275/413/7 281/316/7 -f 264/317/1 271/291/1 277/290/1 -f 275/318/1 268/414/1 263/319/1 -f 264/317/1 277/290/1 275/318/1 -f 292/321/9 291/415/9 296/322/9 -f 296/322/9 295/416/9 298/417/9 -f 295/416/9 293/418/9 298/417/9 -f 293/418/9 294/419/9 298/417/9 -f 298/417/9 297/320/9 296/322/9 -f 303/323/7 305/332/7 306/324/7 -f 299/326/4 304/420/4 306/327/4 -f 300/329/25 303/323/25 304/330/25 -f 300/329/1 302/333/1 305/332/1 -f 301/328/26 306/327/26 305/332/26 -f 234/336/9 327/421/9 316/334/9 -f 327/421/9 328/422/9 316/334/9 -f 328/422/9 233/423/9 308/424/9 -f 308/424/9 315/425/9 328/422/9 -f 315/425/9 316/334/9 328/422/9 -f 323/343/4 341/426/4 339/344/4 -f 338/345/1 340/427/1 334/346/1 -f 349/349/3 347/428/3 345/429/3 -f 345/429/3 359/430/3 357/347/3 -f 357/347/3 355/431/3 353/348/3 -f 353/348/3 351/432/3 349/349/3 -f 349/349/3 345/429/3 357/347/3 -f 96/105/4 103/107/4 80/85/4 -f 103/107/4 121/433/4 123/350/4 +f 489/765/154 508/766/154 491/767/154 +f 484/768/155 516/769/155 482/770/155 +f 487/771/154 507/772/154 489/765/154 +f 485/773/154 506/774/154 487/771/154 +f 501/775/154 503/776/154 479/777/154 +f 481/778/154 503/776/154 502/779/154 +f 483/780/154 505/781/154 485/782/154 +f 501/775/154 512/783/154 513/784/154 +f 483/780/154 502/779/154 504/785/154 +f 499/786/154 511/787/154 512/783/154 +f 495/788/154 511/787/154 497/789/154 +f 495/788/154 509/790/154 510/791/154 +f 493/792/154 508/766/154 509/790/154 +f 486/793/155 517/794/155 484/795/155 +f 488/796/155 518/797/155 486/793/155 +f 490/798/155 519/799/155 488/796/155 +f 490/798/155 521/800/155 520/801/155 +f 492/802/155 522/803/155 521/800/155 +f 494/804/155 523/805/155 522/803/155 +f 496/806/155 524/807/155 523/805/155 +f 498/808/155 525/809/155 524/807/155 +f 500/810/155 515/811/155 525/809/155 +f 480/812/155 515/811/155 478/813/155 +f 482/770/155 514/814/155 480/812/155 +f 534/815/156 529/816/156 531/817/156 +f 530/818/157 534/815/157 531/817/157 +f 538/819/155 537/820/155 534/815/155 +f 527/821/155 533/822/155 535/823/155 +f 533/824/158 554/825/158 535/823/158 +f 553/826/154 545/827/154 546/828/154 +f 545/827/154 551/829/154 550/830/154 +f 557/831/158 556/832/158 555/833/158 +f 561/834/157 559/835/157 560/836/157 +f 557/831/159 562/837/159 558/838/159 +f 556/832/160 560/836/160 555/833/160 +f 558/838/155 561/839/155 556/832/155 +f 555/833/154 559/840/154 557/831/154 +f 563/841/155 565/842/155 564/843/155 +f 567/844/161 570/845/161 568/846/161 +f 569/847/158 572/848/158 570/845/158 +f 571/849/162 574/850/162 572/848/162 +f 573/851/163 576/852/163 574/850/163 +f 577/853/164 580/854/164 578/855/164 +f 579/856/165 582/857/165 580/854/165 +f 581/858/157 584/859/157 582/857/157 +f 583/860/166 586/861/166 584/859/166 +f 585/862/167 588/863/167 586/861/167 +f 573/864/168 577/865/168 575/866/168 +f 581/867/168 573/864/168 571/868/168 +f 569/869/168 581/867/168 571/868/168 +f 583/870/168 569/869/168 567/871/168 +f 587/872/168 585/873/168 590/874/168 +f 590/874/168 589/875/168 587/872/168 +f 582/876/156 570/877/156 572/878/156 +f 599/879/156 588/880/156 598/881/156 +f 588/880/156 599/879/156 586/882/156 +f 574/883/156 582/876/156 572/878/156 +f 586/882/156 568/884/156 584/885/156 +f 578/886/156 574/883/156 576/887/156 +f 603/888/162 600/889/162 601/890/162 +f 605/891/169 602/892/169 603/888/169 +f 607/893/170 604/894/170 605/891/170 +f 609/895/171 606/896/171 607/893/171 +f 602/897/168 606/896/168 608/898/168 +f 607/893/156 605/899/156 603/900/156 +f 619/901/158 610/902/158 597/903/158 +f 615/904/156 646/905/156 614/906/156 +f 593/907/168 645/908/168 592/909/168 +f 626/910/156 642/911/156 615/904/156 +f 641/912/168 637/913/168 592/909/168 +f 646/905/156 615/904/156 642/911/156 +f 641/912/168 592/909/168 645/908/168 +f 489/765/154 507/772/154 508/766/154 +f 484/768/155 517/914/155 516/769/155 +f 487/771/154 506/774/154 507/772/154 +f 485/773/154 505/915/154 506/774/154 +f 501/775/154 513/784/154 503/776/154 +f 481/778/154 479/777/154 503/776/154 +f 483/780/154 504/785/154 505/781/154 +f 501/775/154 499/786/154 512/783/154 +f 483/780/154 481/778/154 502/779/154 +f 499/786/154 497/789/154 511/787/154 +f 495/788/154 510/791/154 511/787/154 +f 495/788/154 493/792/154 509/790/154 +f 493/792/154 491/767/154 508/766/154 +f 486/793/155 518/797/155 517/794/155 +f 488/796/155 519/799/155 518/797/155 +f 490/798/155 520/801/155 519/799/155 +f 490/798/155 492/802/155 521/800/155 +f 492/802/155 494/804/155 522/803/155 +f 494/804/155 496/806/155 523/805/155 +f 496/806/155 498/808/155 524/807/155 +f 498/808/155 500/810/155 525/809/155 +f 500/810/155 478/813/155 515/811/155 +f 480/812/155 514/814/155 515/811/155 +f 482/770/155 516/769/155 514/814/155 +f 534/815/156 532/916/156 529/816/156 +f 530/818/157 533/917/157 534/815/157 +f 534/815/155 533/822/155 538/819/155 +f 533/822/155 536/918/155 538/819/155 +f 537/820/155 532/916/155 534/815/155 +f 527/821/155 536/918/155 533/822/155 +f 535/823/155 528/919/155 526/920/155 +f 526/920/155 527/821/155 535/823/155 +f 533/824/158 553/921/158 554/825/158 +f 546/828/154 554/825/154 553/826/154 +f 553/826/154 539/922/154 545/827/154 +f 547/923/154 546/828/154 545/827/154 +f 545/827/168 552/924/168 551/829/168 +f 548/925/154 547/923/154 550/830/154 +f 547/923/154 545/827/154 550/830/154 +f 550/830/154 549/926/154 548/925/154 +f 557/831/158 558/838/158 556/832/158 +f 561/834/157 562/927/157 559/835/157 +f 557/831/159 559/928/159 562/837/159 +f 556/832/160 561/834/160 560/836/160 +f 558/838/155 562/929/155 561/839/155 +f 555/833/154 560/930/154 559/840/154 +f 563/841/155 566/931/155 565/842/155 +f 567/844/161 569/847/161 570/845/161 +f 569/847/158 571/849/158 572/848/158 +f 571/849/162 573/851/162 574/850/162 +f 573/851/163 575/932/163 576/852/163 +f 577/853/164 579/856/164 580/854/164 +f 579/856/165 581/858/165 582/857/165 +f 581/858/157 583/860/157 584/859/157 +f 583/860/166 585/862/166 586/861/166 +f 585/862/167 587/933/167 588/863/167 +f 573/864/168 579/934/168 577/865/168 +f 581/867/168 579/934/168 573/864/168 +f 569/869/168 583/870/168 581/867/168 +f 567/871/168 590/874/168 585/873/168 +f 585/873/168 583/870/168 567/871/168 +f 582/876/156 584/885/156 570/877/156 +f 574/883/156 580/935/156 582/876/156 +f 586/882/156 599/879/156 568/884/156 +f 568/884/156 570/877/156 584/885/156 +f 578/886/156 580/935/156 574/883/156 +f 603/888/162 602/892/162 600/889/162 +f 605/891/169 604/894/169 602/892/169 +f 607/893/170 606/896/170 604/894/170 +f 609/895/171 608/898/171 606/896/171 +f 608/898/168 600/936/168 602/897/168 +f 602/897/168 604/937/168 606/896/168 +f 603/900/156 601/938/156 609/895/156 +f 609/895/156 607/893/156 603/900/156 +f 597/903/158 630/939/158 619/901/158 +f 630/939/158 631/940/158 619/901/158 +f 631/940/158 596/941/158 611/942/158 +f 611/942/158 618/943/158 631/940/158 +f 618/943/158 619/901/158 631/940/158 +f 626/910/156 644/944/156 642/911/156 +f 641/912/168 643/945/168 637/913/168 s 1 -f 2/21/1 3/56/27 1/57/1 -f 4/22/27 5/14/28 3/56/27 -f 6/24/28 7/12/9 5/14/28 -f 8/17/9 9/37/29 7/39/9 -f 10/15/29 11/40/30 9/37/29 -f 12/9/30 13/42/4 11/40/30 -f 14/11/4 15/46/31 13/42/4 -f 16/36/31 17/48/32 15/46/31 -f 18/32/32 19/50/7 17/48/32 -f 20/33/7 21/52/33 19/50/7 -f 22/30/33 23/54/34 21/52/33 -f 24/19/34 1/57/1 23/54/34 -f 30/16/34 43/434/1 31/10/1 -f 27/29/32 40/435/7 28/25/7 -f 34/31/9 47/436/29 35/27/29 -f 31/10/1 44/437/27 32/34/27 -f 28/352/7 41/438/33 29/18/33 -f 35/27/29 48/439/30 36/28/30 -f 26/20/4 37/440/31 25/23/31 -f 32/34/27 45/441/28 33/35/28 -f 29/18/33 42/442/34 30/16/34 -f 36/28/30 38/443/4 26/20/4 -f 25/23/31 39/444/32 27/29/32 -f 33/35/28 46/445/9 34/31/9 -f 108/446/7 116/447/33 109/448/33 -f 106/449/31 114/450/32 107/451/32 -f 109/448/33 117/452/34 110/453/34 -f 107/451/32 115/454/7 108/446/7 -f 113/455/31 78/367/35 112/119/35 -f 89/456/36 117/452/34 118/457/36 -f 120/116/4 78/367/35 92/114/4 -f 149/458/7 150/459/37 148/460/7 -f 151/461/37 152/462/3 150/459/37 -f 153/463/3 154/464/38 152/462/3 -f 155/465/38 156/466/9 154/464/38 -f 157/467/9 158/468/15 156/469/9 -f 159/470/15 160/471/2 158/468/15 -f 161/472/2 162/473/24 160/471/2 -f 163/474/24 148/460/7 162/473/24 -f 173/183/7 174/181/37 172/180/7 -f 175/186/37 176/193/3 174/181/37 -f 177/189/3 178/194/38 176/193/3 -f 179/188/38 180/197/9 178/194/38 -f 181/191/9 182/202/15 180/197/9 -f 183/200/15 184/177/2 182/204/15 -f 185/199/2 186/178/24 184/177/2 -f 187/184/24 172/180/7 186/178/24 -f 190/475/38 189/394/3 188/476/3 -f 192/477/9 191/182/38 190/475/38 -f 194/478/15 193/391/9 192/477/9 -f 196/479/2 195/185/15 194/478/15 -f 198/480/24 197/187/2 196/479/2 -f 200/481/7 199/190/24 198/480/24 -f 202/482/37 201/392/7 200/481/7 -f 188/476/3 203/198/37 202/483/37 -f 232/484/39 307/485/40 309/486/41 -f 231/487/42 309/486/41 310/488/43 -f 230/340/44 310/488/43 311/339/45 -f 343/338/46 338/345/47 342/341/46 -f 308/489/48 228/490/49 313/491/50 -f 228/490/49 326/492/51 204/493/14 -f 339/344/47 340/427/38 338/345/47 -f 226/494/52 337/495/53 336/496/54 -f 333/497/55 328/422/56 327/421/57 -f 227/498/58 326/492/51 337/495/53 -f 321/499/59 313/500/50 314/501/60 -f 335/502/61 333/497/55 331/503/62 -f 335/502/61 336/504/54 337/495/53 -f 334/505/63 335/502/61 332/506/64 -f 332/506/64 229/507/65 334/505/63 -f 229/507/65 331/503/62 230/508/44 -f 232/484/39 327/421/57 234/509/66 -f 230/508/44 330/510/67 231/511/42 -f 231/511/42 329/512/68 232/484/39 -f 228/513/49 328/422/56 333/497/55 -f 287/514/69 293/418/70 288/515/70 -f 284/398/57 291/516/66 285/517/66 -f 290/518/71 294/519/69 287/520/69 -f 283/228/72 296/322/57 284/398/57 -f 285/521/66 292/321/40 286/522/40 -f 288/523/70 295/416/72 283/228/72 -f 286/524/40 297/320/73 289/525/73 -f 289/525/73 298/417/71 290/518/71 -f 318/526/74 317/527/75 321/499/59 -f 313/500/50 315/528/76 308/529/48 -f 316/530/73 309/531/41 307/532/40 -f 317/527/75 310/533/43 309/531/41 -f 318/526/74 311/534/45 310/533/43 -f 319/535/77 312/536/78 311/534/45 -f 323/537/79 322/538/80 324/539/81 -f 320/540/82 323/537/79 312/536/78 -f 324/539/81 322/538/80 325/541/83 -f 321/499/59 316/530/73 315/528/76 -f 235/542/52 325/543/83 236/544/58 -f 325/543/83 205/545/14 236/544/58 -f 311/339/45 342/341/46 230/340/44 -f 345/546/4 346/547/5 344/548/4 -f 347/549/5 348/550/9 346/547/5 -f 349/551/9 350/552/10 348/553/9 -f 351/554/10 352/555/1 350/552/10 -f 353/556/1 354/557/8 352/555/1 -f 355/558/8 356/559/7 354/557/8 -f 357/560/7 358/561/6 356/559/7 -f 359/562/6 344/548/4 358/561/6 -f 352/555/84 365/563/85 364/564/86 -f 366/565/87 367/566/88 363/567/89 -f 344/548/90 367/568/88 358/561/91 -f 344/548/90 361/569/92 360/570/93 -f 348/553/94 363/571/89 362/572/95 -f 356/559/23 365/573/85 354/557/96 -f 352/555/84 363/574/89 350/552/97 -f 358/561/91 366/575/87 356/559/23 -f 348/550/94 361/576/92 346/547/98 -f 335/502/61 326/577/51 333/497/55 -f 2/21/1 4/22/27 3/56/27 -f 4/22/27 6/24/28 5/14/28 -f 6/24/28 8/26/9 7/12/9 -f 8/17/9 10/15/29 9/37/29 -f 10/15/29 12/9/30 11/40/30 -f 12/9/30 14/11/4 13/42/4 -f 14/11/4 16/36/31 15/46/31 -f 16/36/31 18/32/32 17/48/32 -f 18/32/32 20/33/7 19/50/7 -f 20/33/7 22/30/33 21/52/33 -f 22/30/33 24/19/34 23/54/34 -f 24/19/34 2/21/1 1/57/1 -f 30/16/34 42/442/34 43/434/1 -f 27/29/32 39/444/32 40/435/7 -f 34/31/9 46/445/9 47/436/29 -f 31/10/1 43/434/1 44/437/27 -f 28/352/7 40/578/7 41/438/33 -f 35/27/29 47/436/29 48/439/30 -f 26/20/4 38/443/4 37/440/31 -f 32/34/27 44/437/27 45/441/28 -f 29/18/33 41/438/33 42/442/34 -f 36/28/30 48/439/30 38/443/4 -f 25/23/31 37/440/31 39/444/32 -f 33/35/28 45/441/28 46/445/9 -f 108/446/7 115/454/7 116/447/33 -f 106/449/31 113/455/31 114/450/32 -f 109/448/33 116/447/33 117/452/34 -f 107/451/32 114/450/32 115/454/7 -f 113/455/31 106/449/31 78/367/35 -f 89/456/36 110/453/34 117/452/34 -f 120/116/4 112/119/35 78/367/35 -f 149/458/7 151/461/37 150/459/37 -f 151/461/37 153/463/3 152/462/3 -f 153/463/3 155/465/38 154/464/38 -f 155/465/38 157/579/9 156/466/9 -f 157/467/9 159/470/15 158/468/15 -f 159/470/15 161/472/2 160/471/2 -f 161/472/2 163/474/24 162/473/24 -f 163/474/24 149/458/7 148/460/7 -f 173/183/7 175/186/37 174/181/37 -f 175/186/37 177/189/3 176/193/3 -f 177/189/3 179/188/38 178/194/38 -f 179/188/38 181/191/9 180/197/9 -f 181/191/9 183/196/15 182/202/15 -f 183/200/15 185/199/2 184/177/2 -f 185/199/2 187/184/24 186/178/24 -f 187/184/24 173/183/7 172/180/7 -f 190/475/38 191/182/38 189/394/3 -f 192/477/9 193/391/9 191/182/38 -f 194/478/15 195/185/15 193/391/9 -f 196/479/2 197/187/2 195/185/15 -f 198/480/24 199/190/24 197/187/2 -f 200/481/7 201/392/7 199/190/24 -f 202/482/37 203/195/37 201/392/7 -f 188/476/3 189/394/3 203/198/37 -f 232/484/39 234/509/66 307/485/40 -f 231/487/42 232/484/39 309/486/41 -f 230/340/44 231/487/42 310/488/43 -f 343/338/46 339/344/47 338/345/47 -f 308/489/48 233/580/99 228/490/49 -f 204/493/14 205/545/14 228/490/49 -f 205/545/14 314/581/60 313/491/50 -f 228/490/49 205/545/14 313/491/50 -f 339/344/47 341/426/38 340/427/38 -f 226/494/52 227/498/58 337/495/53 -f 227/498/58 204/493/14 326/492/51 -f 325/541/83 322/538/80 314/501/60 -f 322/538/80 321/499/59 314/501/60 -f 333/497/55 327/421/57 329/512/68 -f 329/512/68 330/510/67 333/497/55 -f 330/510/67 331/503/62 333/497/55 -f 331/503/62 332/506/64 335/502/61 -f 334/505/63 336/504/54 335/502/61 -f 229/507/65 332/506/64 331/503/62 -f 232/484/39 329/512/68 327/421/57 -f 230/508/44 331/503/62 330/510/67 -f 231/511/42 330/510/67 329/512/68 -f 228/513/49 233/582/99 328/422/56 -f 287/514/69 294/419/69 293/418/70 -f 284/398/57 296/322/57 291/516/66 -f 290/518/71 298/417/71 294/519/69 -f 283/228/72 295/416/72 296/322/57 -f 285/521/66 291/415/66 292/321/40 -f 288/523/70 293/583/70 295/416/72 -f 286/524/40 292/584/40 297/320/73 -f 289/525/73 297/320/73 298/417/71 -f 317/527/75 316/530/73 321/499/59 -f 321/499/59 322/538/80 319/535/77 -f 322/538/80 320/540/82 319/535/77 -f 319/535/77 318/526/74 321/499/59 -f 313/500/50 321/499/59 315/528/76 -f 316/530/73 317/527/75 309/531/41 -f 317/527/75 318/526/74 310/533/43 -f 318/526/74 319/535/77 311/534/45 -f 319/535/77 320/540/82 312/536/78 -f 323/537/79 320/540/82 322/538/80 -f 235/542/52 324/585/81 325/543/83 -f 325/543/83 314/581/60 205/545/14 -f 311/339/45 343/338/46 342/341/46 -f 345/546/4 347/549/5 346/547/5 -f 347/549/5 349/586/9 348/550/9 -f 349/551/9 351/554/10 350/552/10 -f 351/554/10 353/556/1 352/555/1 -f 353/556/1 355/558/8 354/557/8 -f 355/558/8 357/560/7 356/559/7 -f 357/560/7 359/562/6 358/561/6 -f 359/562/6 345/546/4 344/548/4 -f 352/555/84 354/557/96 365/563/85 -f 367/566/88 360/587/93 361/588/92 -f 361/588/92 362/589/95 367/566/88 -f 362/589/95 363/567/89 367/566/88 -f 363/567/89 364/590/86 365/591/85 -f 365/591/85 366/565/87 363/567/89 -f 344/548/90 360/592/93 367/568/88 -f 344/548/90 346/547/98 361/569/92 -f 348/553/94 350/552/97 363/571/89 -f 356/559/23 366/593/87 365/573/85 -f 352/555/84 364/594/86 363/574/89 -f 358/561/91 367/595/88 366/575/87 -f 348/550/94 362/596/95 361/576/92 -f 337/495/53 326/577/51 335/502/61 -f 326/577/51 228/513/49 333/497/55 +f 479/777/168 480/812/172 478/813/168 +f 481/778/172 482/770/173 480/812/172 +f 483/780/173 484/768/158 482/770/173 +f 485/773/158 486/793/174 484/795/158 +f 487/771/174 488/796/175 486/793/174 +f 489/765/175 490/798/156 488/796/175 +f 491/767/156 492/802/176 490/798/156 +f 493/792/176 494/804/177 492/802/176 +f 495/788/177 496/806/157 494/804/177 +f 497/789/157 498/808/178 496/806/157 +f 499/786/178 500/810/179 498/808/178 +f 501/775/179 478/813/168 500/810/179 +f 507/772/179 520/946/168 508/766/168 +f 504/785/177 517/947/157 505/781/157 +f 511/787/158 524/948/174 512/783/174 +f 508/766/168 521/949/172 509/790/172 +f 505/915/157 518/950/178 506/774/178 +f 512/783/174 525/951/175 513/784/175 +f 503/776/156 514/952/176 502/779/176 +f 509/790/172 522/953/173 510/791/173 +f 506/774/178 519/954/179 507/772/179 +f 513/784/175 515/955/156 503/776/156 +f 502/779/176 516/956/177 504/785/177 +f 510/791/173 523/957/158 511/787/158 +f 542/958/157 550/959/178 543/960/178 +f 540/961/176 548/962/177 541/963/177 +f 543/960/178 551/964/179 544/965/179 +f 541/963/177 549/966/157 542/958/157 +f 547/967/176 528/919/180 546/828/180 +f 532/968/181 551/964/179 552/969/181 +f 554/825/156 528/919/180 535/823/156 +f 595/970/182 610/971/183 612/972/184 +f 594/973/185 612/972/184 613/974/186 +f 593/907/187 613/974/186 614/906/188 +f 646/905/189 641/912/190 645/908/189 +f 611/975/191 591/976/192 616/977/193 +f 591/976/192 629/978/194 567/979/162 +f 642/911/190 643/945/195 641/912/190 +f 589/980/196 640/981/197 639/982/198 +f 636/983/199 631/940/200 630/939/201 +f 590/984/202 629/978/194 640/981/197 +f 624/985/203 616/986/193 617/987/204 +f 638/988/205 636/983/199 634/989/206 +f 638/988/205 639/990/198 640/981/197 +f 637/991/207 638/988/205 635/992/208 +f 635/992/208 592/993/209 637/991/207 +f 592/993/209 634/989/206 593/994/187 +f 595/970/182 630/939/201 597/995/210 +f 593/994/187 633/996/211 594/997/185 +f 594/997/185 632/998/212 595/970/182 +f 591/999/192 631/940/200 636/983/199 +f 621/1000/213 620/1001/214 624/985/203 +f 616/986/193 618/1002/215 611/1003/191 +f 619/1004/216 612/1005/184 610/1006/183 +f 620/1001/214 613/1007/186 612/1005/184 +f 621/1000/213 614/1008/188 613/1007/186 +f 622/1009/217 615/1010/218 614/1008/188 +f 626/1011/219 625/1012/220 627/1013/221 +f 623/1014/222 626/1011/219 615/1010/218 +f 627/1013/221 625/1012/220 628/1015/223 +f 624/985/203 619/1004/216 618/1002/215 +f 598/1016/196 628/1017/223 599/1018/202 +f 628/1017/223 568/1019/162 599/1018/202 +f 614/906/188 645/908/189 593/907/187 +f 638/988/205 629/1020/194 636/983/199 +f 479/777/168 481/778/172 480/812/172 +f 481/778/172 483/780/173 482/770/173 +f 483/780/173 485/782/158 484/768/158 +f 485/773/158 487/771/174 486/793/174 +f 487/771/174 489/765/175 488/796/175 +f 489/765/175 491/767/156 490/798/156 +f 491/767/156 493/792/176 492/802/176 +f 493/792/176 495/788/177 494/804/177 +f 495/788/177 497/789/157 496/806/157 +f 497/789/157 499/786/178 498/808/178 +f 499/786/178 501/775/179 500/810/179 +f 501/775/179 479/777/168 478/813/168 +f 507/772/179 519/954/179 520/946/168 +f 504/785/177 516/956/177 517/947/157 +f 511/787/158 523/957/158 524/948/174 +f 508/766/168 520/946/168 521/949/172 +f 505/915/157 517/1021/157 518/950/178 +f 512/783/174 524/948/174 525/951/175 +f 503/776/156 515/955/156 514/952/176 +f 509/790/172 521/949/172 522/953/173 +f 506/774/178 518/950/178 519/954/179 +f 513/784/175 525/951/175 515/955/156 +f 502/779/176 514/952/176 516/956/177 +f 510/791/173 522/953/173 523/957/158 +f 542/958/157 549/966/157 550/959/178 +f 540/961/176 547/967/176 548/962/177 +f 543/960/178 550/959/178 551/964/179 +f 541/963/177 548/962/177 549/966/157 +f 547/967/176 540/961/176 528/919/180 +f 532/968/181 544/965/179 551/964/179 +f 554/825/156 546/828/180 528/919/180 +f 595/970/182 597/995/210 610/971/183 +f 594/973/185 595/970/182 612/972/184 +f 593/907/187 594/973/185 613/974/186 +f 646/905/189 642/911/190 641/912/190 +f 611/975/191 596/1022/224 591/976/192 +f 567/979/162 568/1019/162 591/976/192 +f 568/1019/162 617/1023/204 616/977/193 +f 591/976/192 568/1019/162 616/977/193 +f 642/911/190 644/944/195 643/945/195 +f 589/980/196 590/984/202 640/981/197 +f 590/984/202 567/979/162 629/978/194 +f 628/1015/223 625/1012/220 617/987/204 +f 625/1012/220 624/985/203 617/987/204 +f 636/983/199 630/939/201 632/998/212 +f 632/998/212 633/996/211 636/983/199 +f 633/996/211 634/989/206 636/983/199 +f 634/989/206 635/992/208 638/988/205 +f 637/991/207 639/990/198 638/988/205 +f 592/993/209 635/992/208 634/989/206 +f 595/970/182 632/998/212 630/939/201 +f 593/994/187 634/989/206 633/996/211 +f 594/997/185 633/996/211 632/998/212 +f 591/999/192 596/1024/224 631/940/200 +f 620/1001/214 619/1004/216 624/985/203 +f 624/985/203 625/1012/220 622/1009/217 +f 625/1012/220 623/1014/222 622/1009/217 +f 622/1009/217 621/1000/213 624/985/203 +f 616/986/193 624/985/203 618/1002/215 +f 619/1004/216 620/1001/214 612/1005/184 +f 620/1001/214 621/1000/213 613/1007/186 +f 621/1000/213 622/1009/217 614/1008/188 +f 622/1009/217 623/1014/222 615/1010/218 +f 626/1011/219 623/1014/222 625/1012/220 +f 598/1016/196 627/1025/221 628/1017/223 +f 628/1017/223 617/1023/204 568/1019/162 +f 614/906/188 646/905/189 645/908/189 +f 640/981/197 629/1020/194 638/988/205 +f 629/1020/194 591/999/192 636/983/199 diff --git a/src/main/resources/assets/hbm/models/weapons/minigun.obj b/src/main/resources/assets/hbm/models/weapons/minigun.obj index 7cd89bcc0..04ed7488f 100644 --- a/src/main/resources/assets/hbm/models/weapons/minigun.obj +++ b/src/main/resources/assets/hbm/models/weapons/minigun.obj @@ -1,100 +1,6 @@ # Blender v2.79 (sub 0) OBJ File: 'minigun.blend' # www.blender.org -o Circle -v 0.000000 1.500000 -2.000000 -v -0.574025 1.385819 -2.000000 -v -1.060660 1.060660 -2.000000 -v -1.385819 0.574025 -2.000000 -v -1.500000 -0.000000 -2.000000 -v -1.385819 -0.574025 -2.000000 -v -1.060660 -1.060660 -2.000000 -v -0.574025 -1.385819 -2.000000 -v 0.000000 -1.500000 -2.000000 -v 0.574025 -1.385819 -2.000000 -v 1.060660 -1.060660 -2.000000 -v 1.385819 -0.574025 -2.000000 -v 1.500000 -0.000000 -2.000000 -v 1.385819 0.574025 -2.000000 -v 1.060660 1.060660 -2.000000 -v 0.574024 1.385820 -2.000000 -v 0.000000 1.500000 -5.000000 -v -0.574025 1.385819 -5.000000 -v -1.060660 1.060660 -5.000000 -v -1.385819 0.574025 -5.000000 -v -1.500000 -0.000000 -5.000000 -v -1.385819 -0.574025 -5.000000 -v -1.060660 -1.060660 -5.000000 -v -0.574025 -1.385819 -5.000000 -v 0.000000 -1.500000 -5.000000 -v 0.574025 -1.385819 -5.000000 -v 1.060660 -1.060660 -5.000000 -v 1.385819 -0.574025 -5.000000 -v 1.500000 -0.000000 -5.000000 -v 1.385819 0.574025 -5.000000 -v 1.060660 1.060660 -5.000000 -v 0.574024 1.385820 -5.000000 -v 0.000000 1.250000 -5.500000 -v -0.478354 1.154850 -5.500000 -v -0.883883 0.883883 -5.500000 -v -1.154849 0.478354 -5.500000 -v -1.250000 0.000000 -5.500000 -v -1.154849 -0.478354 -5.500000 -v -0.883883 -0.883883 -5.500000 -v -0.478354 -1.154850 -5.500000 -v 0.000000 -1.250000 -5.500000 -v 0.478354 -1.154850 -5.500000 -v 0.883883 -0.883884 -5.500000 -v 1.154849 -0.478354 -5.500000 -v 1.250000 0.000000 -5.500000 -v 1.154849 0.478354 -5.500000 -v 0.883883 0.883884 -5.500000 -v 0.478354 1.154850 -5.500000 -v 0.000000 1.250000 -9.000000 -v -0.478354 1.154850 -9.000000 -v -0.883883 0.883883 -9.000000 -v -1.154849 0.478354 -9.000000 -v -1.250000 0.000000 -9.000000 -v -1.154849 -0.478354 -9.000000 -v -0.883883 -0.883883 -9.000000 -v -0.478354 -1.154850 -9.000000 -v 0.000000 -1.250000 -9.000000 -v 0.478354 -1.154850 -9.000000 -v 0.883883 -0.883884 -9.000000 -v 1.154849 -0.478354 -9.000000 -v 1.250000 0.000000 -9.000000 -v 1.154849 0.478354 -9.000000 -v 0.883883 0.883884 -9.000000 -v 0.478354 1.154850 -9.000000 -v 0.000000 1.000000 -9.500000 -v -0.382684 0.923880 -9.500000 -v -0.707107 0.707107 -9.500000 -v -0.923880 0.382684 -9.500000 -v -1.000000 -0.000000 -9.500000 -v -0.923880 -0.382684 -9.500000 -v -0.707107 -0.707107 -9.500000 -v -0.382684 -0.923880 -9.500000 -v -0.000000 -1.000000 -9.500000 -v 0.382683 -0.923880 -9.500000 -v 0.707107 -0.707107 -9.500000 -v 0.923879 -0.382684 -9.500000 -v 1.000000 -0.000000 -9.500000 -v 0.923879 0.382684 -9.500000 -v 0.707107 0.707107 -9.500000 -v 0.382683 0.923880 -9.500000 -v -0.750000 0.000000 -6.000000 -v -0.750000 1.500000 -6.000000 -v -0.750000 0.000000 -10.500000 -v -0.750000 1.500000 -10.500000 -v 0.750000 0.000000 -6.000000 -v 0.750000 1.500000 -6.000000 -v 0.750000 0.000000 -10.500000 -v 0.750000 1.500000 -10.500000 -v -0.750000 2.000000 -8.250000 -v 0.750000 2.000000 -8.250000 -v -0.375000 -0.750000 -10.500000 -v -0.375000 -0.750000 -6.000000 -v 0.375000 -0.750000 -10.500000 -v 0.375000 -0.750000 -6.000000 +o Barrels v 0.000000 1.437500 -2.000000 v -0.218750 1.378886 -2.000000 v -0.378886 1.218750 -2.000000 @@ -263,296 +169,6 @@ v 1.407290 -0.812500 10.000000 v 1.625000 0.000000 10.000000 v 1.407291 0.812500 10.000000 v 0.812501 1.407292 10.000000 -v -0.375000 2.500000 -11.250000 -v 0.375000 2.500000 -11.250000 -v -0.375000 1.750000 -12.000000 -v 0.375000 1.750000 -12.000000 -v -0.375000 0.750000 -10.500000 -v 0.375000 0.750000 -10.500000 -v -0.375000 1.750000 -7.750000 -v 0.375000 1.750000 -7.750000 -v -0.375000 4.000000 -11.250000 -v 0.375000 4.000000 -11.250000 -v -0.375000 4.000000 -7.750000 -v 0.375000 4.000000 -7.750000 -v -0.375000 4.000000 -8.250000 -v 0.375000 4.000000 -8.250000 -v -0.375000 2.500000 -8.250000 -v 0.375000 2.500000 -8.250000 -v -0.375000 4.000000 -10.750000 -v 0.375000 4.000000 -10.750000 -v -0.375000 2.500000 -10.750000 -v 0.375000 2.500000 -10.750000 -v 0.000000 3.875000 -8.250000 -v -0.265165 3.765165 -8.250000 -v -0.375000 3.500000 -8.250000 -v -0.265165 3.234835 -8.250000 -v 0.000000 3.125000 -8.250000 -v 0.265165 3.234835 -8.250000 -v 0.375000 3.500000 -8.250000 -v 0.265165 3.765165 -8.250000 -v 0.000000 3.875000 -10.750000 -v -0.265165 3.765165 -10.750000 -v -0.375000 3.500000 -10.750000 -v -0.265165 3.234835 -10.750000 -v 0.000000 3.125000 -10.750000 -v 0.265165 3.234835 -10.750000 -v 0.375000 3.500000 -10.750000 -v 0.265165 3.765165 -10.750000 -v -1.500000 0.250000 -5.750000 -v -1.500000 -0.750000 -8.250000 -v -1.500000 0.250000 -8.250000 -v 1.500000 0.250000 -5.750000 -v 1.500000 -0.750000 -8.250000 -v 1.500000 0.250000 -8.250000 -v 2.000000 0.250000 -8.000000 -v 2.000000 -0.750000 -8.000000 -v 2.000000 0.250000 -6.250000 -v -2.000000 -0.750000 -8.000000 -v -2.000000 0.250000 -6.250000 -v -2.000000 0.250000 -8.000000 -v -1.500000 0.750000 -6.250000 -v -1.500000 0.750000 -8.000000 -v 1.500000 0.750000 -8.000000 -v 1.500000 0.750000 -6.250000 -v 2.000000 0.750000 -7.750000 -v 2.000000 0.750000 -6.750000 -v -2.000000 0.750000 -6.750000 -v -2.000000 0.750000 -7.750000 -v -1.500000 -1.500000 -7.500000 -v -1.500000 -1.500000 -5.750000 -v 1.500000 -1.500000 -7.500000 -v 1.500000 -1.500000 -5.750000 -v 2.000000 -1.500000 -6.250000 -v 2.000000 -1.500000 -7.250000 -v -2.000000 -1.500000 -7.250000 -v -2.000000 -1.500000 -6.250000 -v 1.125000 0.375000 -2.000000 -v 1.125000 -0.375000 -2.000000 -v 1.125000 0.375000 -5.750000 -v 1.125000 -0.375000 -5.750000 -v 1.875000 0.375000 -5.500000 -v 1.875000 0.375000 -2.250000 -v 1.875000 -0.375000 -2.250000 -v 1.875000 -0.375000 -5.500000 -v 2.375000 0.187500 -4.500000 -v 2.375000 0.187500 -3.250000 -v 2.375000 -0.187500 -3.250000 -v 2.375000 -0.187500 -4.500000 -v -1.125000 0.375000 -2.000000 -v -1.125000 -0.375000 -2.000000 -v -1.125000 0.375000 -5.750000 -v -1.125000 -0.375000 -5.750000 -v -1.875000 0.375000 -5.500000 -v -1.875000 0.375000 -2.250000 -v -1.875000 -0.375000 -2.250000 -v -1.875000 -0.375000 -5.500000 -v -2.375000 0.187500 -4.500000 -v -2.375000 0.187500 -3.250000 -v -2.375000 -0.187500 -3.250000 -v -2.375000 -0.187500 -4.500000 -v -1.223240 1.817343 -4.000000 -v -1.223240 1.817343 -3.000000 -v -0.840556 1.741222 -4.000000 -v -0.840556 1.741222 -3.000000 -v -0.516133 1.524449 -4.000000 -v -0.516133 1.524449 -3.000000 -v -0.299360 1.200026 -4.000000 -v -0.299360 1.200026 -3.000000 -v -0.223240 0.817343 -4.000000 -v -0.223240 0.817343 -3.000000 -v -0.299360 0.434659 -4.000000 -v -0.299360 0.434659 -3.000000 -v -0.516133 0.110236 -4.000000 -v -0.516133 0.110236 -3.000000 -v -0.840556 -0.106537 -4.000000 -v -0.840556 -0.106537 -3.000000 -v -1.223239 -0.182657 -4.000000 -v -1.223239 -0.182657 -3.000000 -v -1.605923 -0.106537 -4.000000 -v -1.605923 -0.106537 -3.000000 -v -1.930346 0.110236 -4.000000 -v -1.930346 0.110236 -3.000000 -v -2.147119 0.434659 -4.000000 -v -2.147119 0.434659 -3.000000 -v -2.223239 0.817343 -4.000000 -v -2.223239 0.817343 -3.000000 -v -2.147119 1.200026 -4.000000 -v -2.147119 1.200026 -3.000000 -v -1.930346 1.524450 -4.000000 -v -1.930346 1.524450 -3.000000 -v -1.605923 1.741222 -4.000000 -v -1.605923 1.741222 -3.000000 -v 1.223239 1.817343 -4.000000 -v 1.223239 1.817343 -3.000000 -v 1.605923 1.741222 -4.000000 -v 1.605923 1.741222 -3.000000 -v 1.930346 1.524450 -4.000000 -v 1.930346 1.524450 -3.000000 -v 2.147119 1.200026 -4.000000 -v 2.147119 1.200026 -3.000000 -v 2.223239 0.817343 -4.000000 -v 2.223239 0.817343 -3.000000 -v 2.147119 0.434659 -4.000000 -v 2.147119 0.434659 -3.000000 -v 1.930346 0.110236 -4.000000 -v 1.930346 0.110236 -3.000000 -v 1.605923 -0.106537 -4.000000 -v 1.605923 -0.106537 -3.000000 -v 1.223240 -0.182657 -4.000000 -v 1.223240 -0.182657 -3.000000 -v 0.840556 -0.106537 -4.000000 -v 0.840556 -0.106537 -3.000000 -v 0.516133 0.110236 -4.000000 -v 0.516133 0.110236 -3.000000 -v 0.299360 0.434659 -4.000000 -v 0.299360 0.434659 -3.000000 -v 0.223239 0.817343 -4.000000 -v 0.223239 0.817343 -3.000000 -v 0.299360 1.200027 -4.000000 -v 0.299360 1.200027 -3.000000 -v 0.516133 1.524450 -4.000000 -v 0.516133 1.524450 -3.000000 -v 0.840557 1.741223 -4.000000 -v 0.840557 1.741223 -3.000000 -v 1.500000 -0.500000 -0.750000 -v 1.500000 0.500000 -0.750000 -v 1.500000 -0.500000 -2.250000 -v 1.500000 0.500000 -2.250000 -v 2.000000 -0.500000 -0.750000 -v 2.000000 0.500000 -0.750000 -v 2.000000 -0.500000 -2.250000 -v 2.000000 0.500000 -2.250000 -v 2.000000 0.000000 -2.125000 -v 2.000000 0.265165 -2.015165 -v 2.000000 0.375000 -1.750000 -v 2.000000 0.265165 -1.484835 -v 2.000000 0.000000 -1.375000 -v 2.000000 -0.265165 -1.484835 -v 2.000000 -0.375000 -1.750000 -v 2.000000 -0.265165 -2.015165 -v 4.500000 0.000000 -2.125000 -v 4.500000 0.265165 -2.015165 -v 4.500000 0.375000 -1.750000 -v 4.500000 0.265165 -1.484835 -v 4.500000 0.000000 -1.375000 -v 4.500000 -0.265165 -1.484835 -v 4.500000 -0.375000 -1.750000 -v 4.500000 -0.265165 -2.015165 -v 2.000000 -0.250000 -0.250000 -v 2.000000 0.250000 -0.250000 -v 4.500000 0.500000 -0.750000 -v 4.500000 -0.500000 -0.750000 -v 4.500000 0.250000 -0.250000 -v 4.500000 -0.250000 -0.250000 -v 5.000000 0.500000 -0.750000 -v 5.000000 -0.500000 -0.750000 -v 4.500000 0.500000 -2.250000 -v 4.500000 -0.500000 -2.250000 -v 5.000000 0.500000 -1.750000 -v 5.000000 -0.500000 -1.750000 -v -0.500000 -1.000000 -2.500000 -v 0.500000 -1.000000 -2.500000 -v -0.500000 -1.000000 -6.500000 -v 0.500000 -1.000000 -6.500000 -v -0.500000 -2.000000 -5.500000 -v -0.500000 -2.000000 -2.500000 -v 0.500000 -2.000000 -2.500000 -v 0.500000 -2.000000 -5.500000 -v 1.250000 0.000000 -8.000000 -v 1.250000 0.500000 -8.000000 -v 1.250000 0.000000 -9.750000 -v 1.250000 0.500000 -9.750000 -v 1.750000 0.000000 -8.000000 -v 1.750000 0.500000 -8.000000 -v 1.750000 0.000000 -9.750000 -v 1.750000 0.500000 -9.750000 -v -1.000000 1.250000 -6.500000 -v 1.250000 0.000000 -10.250000 -v 1.750000 0.000000 -10.250000 -v 1.000000 1.250000 -6.500000 -v 1.750000 -1.000000 -9.750000 -v 1.250000 -1.000000 -9.750000 -v 1.750000 -1.000000 -10.250000 -v 1.250000 -1.000000 -10.250000 -v -1.750000 0.000000 -8.000000 -v -1.750000 0.500000 -8.000000 -v -1.750000 0.000000 -9.750000 -v -1.750000 0.500000 -9.750000 -v -1.250000 0.000000 -8.000000 -v -1.250000 0.500000 -8.000000 -v -1.250000 0.000000 -9.750000 -v -1.250000 0.500000 -9.750000 -v -1.000000 1.250000 -7.750000 -v -1.750000 0.000000 -10.250000 -v -1.250000 0.000000 -10.250000 -v 1.000000 1.250000 -7.750000 -v -1.250000 -1.000000 -9.750000 -v -1.750000 -1.000000 -9.750000 -v -1.250000 -1.000000 -10.250000 -v -1.750000 -1.000000 -10.250000 -v 1.000000 0.750000 -7.750000 -v 1.250000 -1.500000 -9.750000 -v -1.000000 0.750000 -7.750000 -v 1.250000 -1.500000 -10.250000 -v -1.250000 -1.500000 -9.750000 -v 1.000000 0.750000 -6.500000 -v -1.250000 -1.500000 -10.250000 -v -1.000000 0.750000 -6.500000 -v -1.500000 -2.000000 -2.750000 -v 1.500000 -2.000000 -2.750000 -v -1.500000 -2.000000 -5.250000 -v 1.500000 -2.000000 -5.250000 -v -1.500000 -4.000000 -5.250000 -v -1.500000 -4.000000 -2.750000 -v 1.500000 -4.000000 -2.750000 -v 1.500000 -4.000000 -5.250000 -v -1.500000 -1.970942 -3.082382 -v -1.500000 -2.345942 -3.082382 -v -1.500000 -1.970942 -3.957382 -v -1.500000 -2.345942 -3.957382 -v -2.000000 -1.970942 -3.082382 -v -2.000000 -2.345942 -3.082382 -v -2.000000 -1.970942 -3.957382 -v -2.000000 -2.345942 -3.957382 -v -2.500000 -1.470942 -3.082382 -v -2.875000 -1.470942 -3.082382 -v -2.500000 -1.470942 -3.957382 -v -2.875000 -1.470942 -3.957382 -v -2.500000 0.654058 -3.082382 -v -2.875000 0.654058 -3.082382 -v -2.500000 0.654058 -3.957382 -v -2.875000 0.654058 -3.957382 -v -2.000000 1.154058 -3.082382 -v -2.000000 1.154058 -3.957382 -v -2.000000 1.529058 -3.082382 -v -2.000000 1.529058 -3.957382 -v -0.750000 1.375000 -3.250000 -v 0.750000 1.375000 -3.250000 -v 1.750000 0.000000 -4.750000 -v 1.750000 0.000000 -3.000000 -v 1.616789 -0.669696 -4.750000 -v 1.616789 -0.669696 -3.000000 -v 1.237437 -1.237437 -4.750000 -v 1.237437 -1.237437 -3.000000 -v 0.669696 -1.616789 -4.750000 -v 0.669696 -1.616789 -3.000000 -v 0.000000 -1.750000 -4.750000 -v 0.000000 -1.750000 -3.000000 -v -0.669696 -1.616789 -4.750000 -v -0.669696 -1.616789 -3.000000 -v -1.237436 -1.237437 -4.750000 -v -1.237436 -1.237437 -3.000000 -v -1.616789 -0.669696 -4.750000 -v -1.616789 -0.669696 -3.000000 -v -1.750000 0.000000 -4.750000 -v -1.750000 0.000000 -3.000000 -v -0.750000 1.375000 -3.750000 -v 0.750000 1.375000 -3.750000 -v 0.750000 1.625000 -3.750000 -v -0.750000 1.625000 -3.750000 -v 0.750000 1.625000 -3.250000 -v -0.750000 1.625000 -3.250000 v -0.000000 -1.437500 -2.000000 v 0.218750 -1.378886 -2.000000 v 0.378886 -1.218750 -2.000000 @@ -1273,35 +889,6 @@ v -0.595393 0.656250 11.500000 v -0.709775 0.770633 11.500000 v -0.866025 0.812500 11.500000 v -1.022275 0.770633 11.500000 -vt 0.205104 0.294129 -vt 0.205104 0.205871 -vt 0.242265 0.205871 -vt 0.592105 0.390625 -vt 0.532895 0.359375 -vt 0.532895 0.265625 -vt 0.125000 0.781250 -vt 0.171053 0.812500 -vt 0.125000 0.812500 -vt 0.414474 0.148438 -vt 0.473684 0.242188 -vt 0.414474 0.242188 -vt 0.592105 -0.000000 -vt 0.651316 0.031250 -vt 0.651316 0.125000 -vt 0.710526 0.148438 -vt 0.769737 0.242188 -vt 0.710526 0.242188 -vt 0.651316 0.218750 -vt 0.532895 0.171875 -vt 0.651316 0.171875 -vt 0.651316 0.265625 -vt 0.184211 0.812500 -vt 0.171053 0.812500 -vt 0.184211 0.781250 -vt 0.532895 0.125000 -vt 0.264746 0.027479 -vt 0.276304 0.093750 -vt 0.236842 0.187471 vt 0.108553 0.593750 vt 0.105263 0.578125 vt 0.108553 0.578125 @@ -1339,6 +926,3301 @@ vt 0.764000 0.394520 vt 0.689948 0.496105 vt 0.726974 0.445335 vt 0.764000 0.496105 +vt 0.108553 0.593750 +vt 0.105263 0.578125 +vt 0.108553 0.578125 +vt 0.105263 0.562500 +vt 0.108553 0.562500 +vt 0.105263 0.546875 +vt 0.108553 0.546875 +vt 0.105263 0.531250 +vt 0.108553 0.531250 +vt 0.105263 0.515625 +vt 0.108553 0.515625 +vt 0.108553 0.500000 +vt 0.105263 0.511719 +vt 0.105263 0.500000 +vt 0.108553 0.687500 +vt 0.105263 0.671875 +vt 0.108553 0.671875 +vt 0.105263 0.656250 +vt 0.108553 0.656250 +vt 0.105263 0.640625 +vt 0.108553 0.640625 +vt 0.105263 0.625000 +vt 0.108553 0.625000 +vt 0.108553 0.609375 +vt 0.105263 0.621094 +vt 0.105263 0.609375 +vt 0.105263 0.605469 +vt 0.105263 0.593750 +vt 0.090991 0.591780 +vt 0.083882 0.601529 +vt 0.076772 0.572282 +vt 0.108553 0.593750 +vt 0.105263 0.578125 +vt 0.108553 0.578125 +vt 0.105263 0.562500 +vt 0.108553 0.562500 +vt 0.105263 0.546875 +vt 0.108553 0.546875 +vt 0.105263 0.531250 +vt 0.108553 0.531250 +vt 0.108553 0.515625 +vt 0.105263 0.527344 +vt 0.105263 0.515625 +vt 0.108553 0.500000 +vt 0.105263 0.511719 +vt 0.105263 0.500000 +vt 0.108553 0.687500 +vt 0.105263 0.671875 +vt 0.108553 0.671875 +vt 0.105263 0.656250 +vt 0.108553 0.656250 +vt 0.105263 0.640625 +vt 0.108553 0.640625 +vt 0.105263 0.625000 +vt 0.108553 0.625000 +vt 0.105263 0.609375 +vt 0.108553 0.609375 +vt 0.105263 0.605469 +vt 0.105263 0.593750 +vt 0.090991 0.591780 +vt 0.083882 0.601529 +vt 0.076772 0.572282 +vt 0.108553 0.593750 +vt 0.105263 0.578125 +vt 0.108553 0.578125 +vt 0.105263 0.562500 +vt 0.108553 0.562500 +vt 0.105263 0.546875 +vt 0.108553 0.546875 +vt 0.108553 0.531250 +vt 0.105263 0.542969 +vt 0.105263 0.531250 +vt 0.105263 0.515625 +vt 0.108553 0.515625 +vt 0.108553 0.500000 +vt 0.105263 0.511719 +vt 0.105263 0.500000 +vt 0.108553 0.687500 +vt 0.105263 0.671875 +vt 0.108553 0.671875 +vt 0.105263 0.656250 +vt 0.108553 0.656250 +vt 0.105263 0.640625 +vt 0.108553 0.640625 +vt 0.105263 0.625000 +vt 0.108553 0.625000 +vt 0.108553 0.609375 +vt 0.105263 0.621094 +vt 0.105263 0.609375 +vt 0.105263 0.605469 +vt 0.105263 0.593750 +vt 0.076772 0.572282 +vt 0.090991 0.572282 +vt 0.083882 0.601529 +vt 0.108553 0.593750 +vt 0.105263 0.578125 +vt 0.108553 0.578125 +vt 0.105263 0.562500 +vt 0.108553 0.562500 +vt 0.105263 0.546875 +vt 0.108553 0.546875 +vt 0.108553 0.531250 +vt 0.105263 0.542969 +vt 0.105263 0.531250 +vt 0.108553 0.515625 +vt 0.105263 0.527344 +vt 0.105263 0.515625 +vt 0.108553 0.500000 +vt 0.105263 0.511719 +vt 0.105263 0.500000 +vt 0.108553 0.687500 +vt 0.105263 0.671875 +vt 0.108553 0.671875 +vt 0.105263 0.656250 +vt 0.108553 0.656250 +vt 0.105263 0.640625 +vt 0.108553 0.640625 +vt 0.105263 0.625000 +vt 0.108553 0.625000 +vt 0.105263 0.609375 +vt 0.108553 0.609375 +vt 0.105263 0.605469 +vt 0.105263 0.593750 +vt 0.090991 0.591780 +vt 0.083882 0.601529 +vt 0.076772 0.572282 +vt 0.108553 0.593750 +vt 0.105263 0.578125 +vt 0.108553 0.578125 +vt 0.105263 0.562500 +vt 0.108553 0.562500 +vt 0.105263 0.546875 +vt 0.108553 0.546875 +vt 0.108553 0.531250 +vt 0.105263 0.542969 +vt 0.105263 0.531250 +vt 0.105263 0.515625 +vt 0.108553 0.515625 +vt 0.108553 0.500000 +vt 0.105263 0.511719 +vt 0.105263 0.500000 +vt 0.108553 0.687500 +vt 0.105263 0.671875 +vt 0.108553 0.671875 +vt 0.105263 0.656250 +vt 0.108553 0.656250 +vt 0.105263 0.640625 +vt 0.108553 0.640625 +vt 0.105263 0.625000 +vt 0.108553 0.625000 +vt 0.108553 0.609375 +vt 0.105263 0.621094 +vt 0.105263 0.609375 +vt 0.105263 0.593750 +vt 0.090991 0.591780 +vt 0.083882 0.601529 +vt 0.076772 0.572282 +vt 0.105263 0.589844 +vt 0.105263 0.574219 +vt 0.105263 0.558594 +vt 0.105263 0.542969 +vt 0.105263 0.527344 +vt 0.105263 0.683594 +vt 0.105263 0.667969 +vt 0.105263 0.652344 +vt 0.105263 0.636719 +vt 0.079777 0.598917 +vt 0.076772 0.591780 +vt 0.075672 0.582031 +vt 0.079777 0.565145 +vt 0.083882 0.562533 +vt 0.087986 0.565145 +vt 0.090991 0.572282 +vt 0.092091 0.582031 +vt 0.087986 0.598917 +vt 0.748351 0.431686 +vt 0.726974 0.445290 +vt 0.705597 0.431686 +vt 0.689948 0.394520 +vt 0.684220 0.343750 +vt 0.705597 0.255814 +vt 0.748351 0.255814 +vt 0.764000 0.292980 +vt 0.769728 0.343750 +vt 0.726974 0.648415 +vt 0.705597 0.634811 +vt 0.689948 0.597645 +vt 0.684220 0.546875 +vt 0.705597 0.458939 +vt 0.748351 0.458939 +vt 0.769728 0.546875 +vt 0.764000 0.597645 +vt 0.748351 0.634811 +vt 0.105263 0.589844 +vt 0.105263 0.574219 +vt 0.105263 0.558594 +vt 0.105263 0.542969 +vt 0.105263 0.527344 +vt 0.105263 0.683594 +vt 0.105263 0.667969 +vt 0.105263 0.652344 +vt 0.105263 0.636719 +vt 0.079777 0.598917 +vt 0.076772 0.591780 +vt 0.075672 0.582031 +vt 0.079777 0.565145 +vt 0.083882 0.562533 +vt 0.087986 0.565145 +vt 0.090991 0.572282 +vt 0.092091 0.582031 +vt 0.087986 0.598917 +vt 0.105263 0.589844 +vt 0.105263 0.574219 +vt 0.105263 0.558594 +vt 0.105263 0.542969 +vt 0.105263 0.683594 +vt 0.105263 0.667969 +vt 0.105263 0.652344 +vt 0.105263 0.636719 +vt 0.105263 0.621094 +vt 0.079777 0.598917 +vt 0.076772 0.591780 +vt 0.075672 0.582031 +vt 0.079777 0.565145 +vt 0.083882 0.562533 +vt 0.087986 0.565145 +vt 0.090991 0.572282 +vt 0.092091 0.582031 +vt 0.087986 0.598917 +vt 0.105263 0.589844 +vt 0.105263 0.574219 +vt 0.105263 0.558594 +vt 0.105263 0.527344 +vt 0.105263 0.683594 +vt 0.105263 0.667969 +vt 0.105263 0.652344 +vt 0.105263 0.636719 +vt 0.079777 0.598917 +vt 0.076772 0.591780 +vt 0.075672 0.582031 +vt 0.079777 0.565145 +vt 0.083882 0.562533 +vt 0.087986 0.565145 +vt 0.092091 0.582031 +vt 0.090991 0.591780 +vt 0.087986 0.598917 +vt 0.105263 0.589844 +vt 0.105263 0.574219 +vt 0.105263 0.558594 +vt 0.105263 0.683594 +vt 0.105263 0.667969 +vt 0.105263 0.652344 +vt 0.105263 0.636719 +vt 0.105263 0.621094 +vt 0.079777 0.598917 +vt 0.076772 0.591780 +vt 0.075672 0.582031 +vt 0.079777 0.565145 +vt 0.083882 0.562533 +vt 0.087986 0.565145 +vt 0.090991 0.572282 +vt 0.092091 0.582031 +vt 0.087986 0.598917 +vt 0.105263 0.589844 +vt 0.105263 0.574219 +vt 0.105263 0.558594 +vt 0.105263 0.527344 +vt 0.105263 0.683594 +vt 0.105263 0.667969 +vt 0.105263 0.652344 +vt 0.105263 0.636719 +vt 0.105263 0.605469 +vt 0.079777 0.598917 +vt 0.076772 0.591780 +vt 0.075672 0.582031 +vt 0.079777 0.565145 +vt 0.083882 0.562533 +vt 0.087986 0.565145 +vt 0.090991 0.572282 +vt 0.092091 0.582031 +vt 0.087986 0.598917 +vt 0.476974 0.609375 +vt 0.371711 0.593750 +vt 0.476974 0.593750 +vt 0.476974 0.625000 +vt 0.371711 0.609375 +vt 0.476974 0.640625 +vt 0.371711 0.625000 +vt 0.476974 0.656250 +vt 0.371711 0.640625 +vt 0.476974 0.671875 +vt 0.371711 0.656250 +vt 0.476974 0.687500 +vt 0.371711 0.671875 +vt 0.476974 0.515625 +vt 0.371711 0.500000 +vt 0.476974 0.500000 +vt 0.476974 0.531250 +vt 0.371711 0.515625 +vt 0.476974 0.546875 +vt 0.371711 0.531250 +vt 0.476974 0.562500 +vt 0.371711 0.546875 +vt 0.476974 0.578125 +vt 0.371711 0.562500 +vt 0.371711 0.578125 +vt 0.365132 0.625000 +vt 0.365132 0.609375 +vt 0.365132 0.593750 +vt 0.365132 0.578125 +vt 0.365132 0.562500 +vt 0.365132 0.546875 +vt 0.365132 0.531250 +vt 0.365132 0.515625 +vt 0.365132 0.500000 +vt 0.371711 0.687500 +vt 0.365132 0.671875 +vt 0.365132 0.656250 +vt 0.365132 0.640625 +vt 0.338816 0.593750 +vt 0.338816 0.609375 +vt 0.338816 0.625000 +vt 0.338816 0.640625 +vt 0.338816 0.656250 +vt 0.365132 0.687500 +vt 0.338816 0.671875 +vt 0.338816 0.500000 +vt 0.338816 0.515625 +vt 0.338816 0.531250 +vt 0.338816 0.546875 +vt 0.338816 0.562500 +vt 0.338816 0.578125 +vt 0.332237 0.609375 +vt 0.332237 0.593750 +vt 0.332237 0.578125 +vt 0.332237 0.562500 +vt 0.332237 0.546875 +vt 0.332237 0.531250 +vt 0.332237 0.515625 +vt 0.332237 0.500000 +vt 0.332237 0.687500 +vt 0.332237 0.671875 +vt 0.332237 0.656250 +vt 0.332237 0.640625 +vt 0.332237 0.625000 +vt 0.200658 0.593750 +vt 0.200658 0.609375 +vt 0.200658 0.625000 +vt 0.200658 0.640625 +vt 0.200658 0.656250 +vt 0.200658 0.671875 +vt 0.200658 0.500000 +vt 0.200658 0.515625 +vt 0.200658 0.531250 +vt 0.200658 0.546875 +vt 0.200658 0.562500 +vt 0.200658 0.578125 +vt 0.194079 0.562500 +vt 0.194079 0.546875 +vt 0.194079 0.578125 +vt 0.194079 0.593750 +vt 0.194079 0.609375 +vt 0.194079 0.625000 +vt 0.194079 0.656250 +vt 0.194079 0.640625 +vt 0.200658 0.687500 +vt 0.194079 0.671875 +vt 0.194079 0.500000 +vt 0.194079 0.531250 +vt 0.194079 0.515625 +vt 0.128289 0.593750 +vt 0.128289 0.609375 +vt 0.128289 0.625000 +vt 0.128289 0.640625 +vt 0.128289 0.656250 +vt 0.194079 0.687500 +vt 0.128289 0.671875 +vt 0.128289 0.500000 +vt 0.128289 0.515625 +vt 0.128289 0.531250 +vt 0.128289 0.546875 +vt 0.128289 0.562500 +vt 0.128289 0.578125 +vt 0.121711 0.593750 +vt 0.121711 0.578125 +vt 0.121711 0.609375 +vt 0.121711 0.640625 +vt 0.121711 0.625000 +vt 0.121711 0.671875 +vt 0.121711 0.656250 +vt 0.128289 0.687500 +vt 0.121711 0.515625 +vt 0.121711 0.500000 +vt 0.121711 0.531250 +vt 0.121711 0.546875 +vt 0.121711 0.562500 +vt 0.121711 0.687500 +vt 0.092105 0.593750 +vt 0.092105 0.609375 +vt 0.092105 0.625000 +vt 0.092105 0.640625 +vt 0.092105 0.656250 +vt 0.092105 0.671875 +vt 0.092105 0.500000 +vt 0.092105 0.515625 +vt 0.092105 0.531250 +vt 0.092105 0.546875 +vt 0.092105 0.562500 +vt 0.092105 0.578125 +vt 0.769737 0.218750 +vt 0.796053 0.164062 +vt 0.796053 0.218750 +vt 0.769737 0.492188 +vt 0.796053 0.437500 +vt 0.796053 0.492188 +vt 0.769737 0.656250 +vt 0.796053 0.601562 +vt 0.796053 0.656250 +vt 0.769737 0.164062 +vt 0.796053 0.109375 +vt 0.769737 0.437500 +vt 0.796053 0.382812 +vt 0.769737 0.328125 +vt 0.796053 0.273438 +vt 0.796053 0.328125 +vt 0.769737 0.601562 +vt 0.796053 0.546875 +vt 0.769737 0.109375 +vt 0.796053 0.054688 +vt 0.769737 0.382812 +vt 0.769737 0.273438 +vt 0.769737 0.546875 +vt 0.769737 0.054688 +vt 0.796053 -0.000000 +vt 0.476974 0.625000 +vt 0.371711 0.609375 +vt 0.476974 0.609375 +vt 0.371711 0.593750 +vt 0.476974 0.593750 +vt 0.476974 0.640625 +vt 0.371711 0.625000 +vt 0.476974 0.656250 +vt 0.371711 0.640625 +vt 0.476974 0.671875 +vt 0.371711 0.656250 +vt 0.476974 0.687500 +vt 0.371711 0.671875 +vt 0.476974 0.515625 +vt 0.371711 0.500000 +vt 0.476974 0.500000 +vt 0.476974 0.531250 +vt 0.371711 0.515625 +vt 0.476974 0.546875 +vt 0.371711 0.531250 +vt 0.476974 0.562500 +vt 0.371711 0.546875 +vt 0.476974 0.578125 +vt 0.371711 0.562500 +vt 0.371711 0.578125 +vt 0.365132 0.625000 +vt 0.365132 0.609375 +vt 0.365132 0.593750 +vt 0.365132 0.578125 +vt 0.365132 0.562500 +vt 0.365132 0.546875 +vt 0.365132 0.531250 +vt 0.365132 0.515625 +vt 0.365132 0.500000 +vt 0.371711 0.687500 +vt 0.365132 0.671875 +vt 0.365132 0.656250 +vt 0.365132 0.640625 +vt 0.338816 0.593750 +vt 0.338816 0.609375 +vt 0.338816 0.625000 +vt 0.338816 0.640625 +vt 0.338816 0.656250 +vt 0.365132 0.687500 +vt 0.338816 0.671875 +vt 0.338816 0.500000 +vt 0.338816 0.515625 +vt 0.338816 0.531250 +vt 0.338816 0.546875 +vt 0.338816 0.562500 +vt 0.338816 0.578125 +vt 0.332237 0.609375 +vt 0.332237 0.593750 +vt 0.332237 0.578125 +vt 0.332237 0.562500 +vt 0.332237 0.546875 +vt 0.332237 0.531250 +vt 0.332237 0.515625 +vt 0.332237 0.500000 +vt 0.332237 0.687500 +vt 0.332237 0.671875 +vt 0.332237 0.656250 +vt 0.332237 0.640625 +vt 0.332237 0.625000 +vt 0.200658 0.593750 +vt 0.200658 0.609375 +vt 0.200658 0.625000 +vt 0.200658 0.640625 +vt 0.200658 0.656250 +vt 0.200658 0.671875 +vt 0.200658 0.500000 +vt 0.200658 0.515625 +vt 0.200658 0.531250 +vt 0.200658 0.546875 +vt 0.200658 0.562500 +vt 0.200658 0.578125 +vt 0.194079 0.562500 +vt 0.194079 0.546875 +vt 0.194079 0.578125 +vt 0.194079 0.593750 +vt 0.194079 0.609375 +vt 0.194079 0.625000 +vt 0.194079 0.640625 +vt 0.194079 0.656250 +vt 0.200658 0.687500 +vt 0.194079 0.671875 +vt 0.194079 0.500000 +vt 0.194079 0.531250 +vt 0.194079 0.515625 +vt 0.128289 0.593750 +vt 0.128289 0.609375 +vt 0.128289 0.625000 +vt 0.128289 0.640625 +vt 0.128289 0.656250 +vt 0.194079 0.687500 +vt 0.128289 0.671875 +vt 0.128289 0.500000 +vt 0.128289 0.515625 +vt 0.128289 0.531250 +vt 0.128289 0.546875 +vt 0.128289 0.562500 +vt 0.128289 0.578125 +vt 0.121711 0.593750 +vt 0.121711 0.578125 +vt 0.121711 0.609375 +vt 0.121711 0.640625 +vt 0.121711 0.625000 +vt 0.121711 0.671875 +vt 0.121711 0.656250 +vt 0.128289 0.687500 +vt 0.121711 0.500000 +vt 0.121711 0.515625 +vt 0.121711 0.531250 +vt 0.121711 0.546875 +vt 0.121711 0.562500 +vt 0.121711 0.687500 +vt 0.092105 0.593750 +vt 0.092105 0.609375 +vt 0.092105 0.625000 +vt 0.092105 0.640625 +vt 0.092105 0.656250 +vt 0.092105 0.671875 +vt 0.092105 0.500000 +vt 0.092105 0.515625 +vt 0.092105 0.531250 +vt 0.092105 0.546875 +vt 0.092105 0.562500 +vt 0.092105 0.578125 +vt 0.476974 0.609375 +vt 0.371711 0.593750 +vt 0.476974 0.593750 +vt 0.476974 0.625000 +vt 0.371711 0.609375 +vt 0.476974 0.640625 +vt 0.371711 0.625000 +vt 0.476974 0.656250 +vt 0.371711 0.640625 +vt 0.476974 0.671875 +vt 0.371711 0.656250 +vt 0.476974 0.687500 +vt 0.371711 0.671875 +vt 0.476974 0.515625 +vt 0.371711 0.500000 +vt 0.476974 0.500000 +vt 0.476974 0.531250 +vt 0.371711 0.515625 +vt 0.476974 0.546875 +vt 0.371711 0.531250 +vt 0.476974 0.562500 +vt 0.371711 0.546875 +vt 0.476974 0.578125 +vt 0.371711 0.562500 +vt 0.371711 0.578125 +vt 0.365132 0.625000 +vt 0.365132 0.609375 +vt 0.365132 0.593750 +vt 0.365132 0.578125 +vt 0.365132 0.562500 +vt 0.365132 0.546875 +vt 0.365132 0.531250 +vt 0.365132 0.515625 +vt 0.365132 0.500000 +vt 0.371711 0.687500 +vt 0.365132 0.671875 +vt 0.365132 0.656250 +vt 0.365132 0.640625 +vt 0.338816 0.593750 +vt 0.338816 0.609375 +vt 0.338816 0.625000 +vt 0.338816 0.640625 +vt 0.338816 0.656250 +vt 0.365132 0.687500 +vt 0.338816 0.671875 +vt 0.338816 0.500000 +vt 0.338816 0.515625 +vt 0.338816 0.531250 +vt 0.338816 0.546875 +vt 0.338816 0.562500 +vt 0.338816 0.578125 +vt 0.332237 0.609375 +vt 0.332237 0.593750 +vt 0.332237 0.578125 +vt 0.332237 0.562500 +vt 0.332237 0.546875 +vt 0.332237 0.531250 +vt 0.332237 0.515625 +vt 0.332237 0.500000 +vt 0.332237 0.687500 +vt 0.332237 0.671875 +vt 0.332237 0.656250 +vt 0.332237 0.640625 +vt 0.332237 0.625000 +vt 0.200658 0.593750 +vt 0.200658 0.609375 +vt 0.200658 0.625000 +vt 0.200658 0.640625 +vt 0.200658 0.656250 +vt 0.200658 0.671875 +vt 0.200658 0.500000 +vt 0.200658 0.515625 +vt 0.200658 0.531250 +vt 0.200658 0.546875 +vt 0.200658 0.562500 +vt 0.200658 0.578125 +vt 0.194079 0.546875 +vt 0.194079 0.578125 +vt 0.194079 0.562500 +vt 0.194079 0.593750 +vt 0.194079 0.609375 +vt 0.194079 0.625000 +vt 0.194079 0.640625 +vt 0.194079 0.671875 +vt 0.194079 0.656250 +vt 0.200658 0.687500 +vt 0.194079 0.500000 +vt 0.194079 0.531250 +vt 0.194079 0.515625 +vt 0.128289 0.593750 +vt 0.128289 0.609375 +vt 0.128289 0.625000 +vt 0.128289 0.640625 +vt 0.128289 0.656250 +vt 0.194079 0.687500 +vt 0.128289 0.671875 +vt 0.128289 0.500000 +vt 0.128289 0.515625 +vt 0.128289 0.531250 +vt 0.128289 0.546875 +vt 0.128289 0.562500 +vt 0.128289 0.578125 +vt 0.121711 0.593750 +vt 0.121711 0.578125 +vt 0.121711 0.625000 +vt 0.121711 0.609375 +vt 0.121711 0.656250 +vt 0.121711 0.640625 +vt 0.121711 0.687500 +vt 0.121711 0.671875 +vt 0.121711 0.515625 +vt 0.121711 0.500000 +vt 0.121711 0.546875 +vt 0.121711 0.531250 +vt 0.121711 0.562500 +vt 0.092105 0.593750 +vt 0.092105 0.609375 +vt 0.092105 0.625000 +vt 0.092105 0.640625 +vt 0.092105 0.656250 +vt 0.092105 0.671875 +vt 0.092105 0.500000 +vt 0.092105 0.515625 +vt 0.092105 0.531250 +vt 0.092105 0.546875 +vt 0.092105 0.562500 +vt 0.092105 0.578125 +vt 0.476974 0.625000 +vt 0.371711 0.609375 +vt 0.476974 0.609375 +vt 0.371711 0.593750 +vt 0.476974 0.593750 +vt 0.476974 0.640625 +vt 0.371711 0.625000 +vt 0.476974 0.656250 +vt 0.371711 0.640625 +vt 0.476974 0.671875 +vt 0.371711 0.656250 +vt 0.476974 0.687500 +vt 0.371711 0.671875 +vt 0.476974 0.515625 +vt 0.371711 0.500000 +vt 0.476974 0.500000 +vt 0.476974 0.531250 +vt 0.371711 0.515625 +vt 0.476974 0.546875 +vt 0.371711 0.531250 +vt 0.476974 0.562500 +vt 0.371711 0.546875 +vt 0.476974 0.578125 +vt 0.371711 0.562500 +vt 0.371711 0.578125 +vt 0.365132 0.625000 +vt 0.365132 0.609375 +vt 0.365132 0.593750 +vt 0.365132 0.578125 +vt 0.365132 0.562500 +vt 0.365132 0.546875 +vt 0.365132 0.531250 +vt 0.365132 0.515625 +vt 0.365132 0.500000 +vt 0.371711 0.687500 +vt 0.365132 0.671875 +vt 0.365132 0.656250 +vt 0.365132 0.640625 +vt 0.338816 0.593750 +vt 0.338816 0.609375 +vt 0.338816 0.625000 +vt 0.338816 0.640625 +vt 0.338816 0.656250 +vt 0.365132 0.687500 +vt 0.338816 0.671875 +vt 0.338816 0.500000 +vt 0.338816 0.515625 +vt 0.338816 0.531250 +vt 0.338816 0.546875 +vt 0.338816 0.562500 +vt 0.338816 0.578125 +vt 0.332237 0.609375 +vt 0.332237 0.593750 +vt 0.332237 0.578125 +vt 0.332237 0.562500 +vt 0.332237 0.546875 +vt 0.332237 0.531250 +vt 0.332237 0.515625 +vt 0.332237 0.500000 +vt 0.338816 0.687500 +vt 0.332237 0.671875 +vt 0.332237 0.656250 +vt 0.332237 0.640625 +vt 0.332237 0.625000 +vt 0.200658 0.593750 +vt 0.200658 0.609375 +vt 0.200658 0.625000 +vt 0.200658 0.640625 +vt 0.200658 0.656250 +vt 0.332237 0.687500 +vt 0.200658 0.671875 +vt 0.200658 0.500000 +vt 0.200658 0.515625 +vt 0.200658 0.531250 +vt 0.200658 0.546875 +vt 0.200658 0.562500 +vt 0.200658 0.578125 +vt 0.194079 0.546875 +vt 0.194079 0.578125 +vt 0.194079 0.562500 +vt 0.194079 0.593750 +vt 0.194079 0.609375 +vt 0.194079 0.640625 +vt 0.194079 0.625000 +vt 0.194079 0.671875 +vt 0.194079 0.656250 +vt 0.200658 0.687500 +vt 0.194079 0.500000 +vt 0.194079 0.531250 +vt 0.194079 0.515625 +vt 0.128289 0.593750 +vt 0.128289 0.609375 +vt 0.128289 0.625000 +vt 0.128289 0.640625 +vt 0.128289 0.656250 +vt 0.194079 0.687500 +vt 0.128289 0.671875 +vt 0.128289 0.500000 +vt 0.128289 0.515625 +vt 0.128289 0.531250 +vt 0.128289 0.546875 +vt 0.128289 0.562500 +vt 0.128289 0.578125 +vt 0.121711 0.593750 +vt 0.121711 0.578125 +vt 0.121711 0.609375 +vt 0.121711 0.625000 +vt 0.121711 0.656250 +vt 0.121711 0.640625 +vt 0.121711 0.687500 +vt 0.121711 0.671875 +vt 0.121711 0.515625 +vt 0.121711 0.500000 +vt 0.121711 0.546875 +vt 0.121711 0.531250 +vt 0.121711 0.562500 +vt 0.092105 0.593750 +vt 0.092105 0.609375 +vt 0.092105 0.625000 +vt 0.092105 0.640625 +vt 0.092105 0.656250 +vt 0.092105 0.671875 +vt 0.092105 0.500000 +vt 0.092105 0.515625 +vt 0.092105 0.531250 +vt 0.092105 0.546875 +vt 0.092105 0.562500 +vt 0.092105 0.578125 +vt 0.476974 0.609375 +vt 0.371711 0.593750 +vt 0.476974 0.593750 +vt 0.476974 0.625000 +vt 0.371711 0.609375 +vt 0.476974 0.640625 +vt 0.371711 0.625000 +vt 0.476974 0.656250 +vt 0.371711 0.640625 +vt 0.476974 0.671875 +vt 0.371711 0.656250 +vt 0.476974 0.687500 +vt 0.371711 0.671875 +vt 0.476974 0.515625 +vt 0.371711 0.500000 +vt 0.476974 0.500000 +vt 0.476974 0.531250 +vt 0.371711 0.515625 +vt 0.476974 0.546875 +vt 0.371711 0.531250 +vt 0.476974 0.562500 +vt 0.371711 0.546875 +vt 0.476974 0.578125 +vt 0.371711 0.562500 +vt 0.371711 0.578125 +vt 0.365132 0.625000 +vt 0.365132 0.609375 +vt 0.365132 0.593750 +vt 0.365132 0.578125 +vt 0.365132 0.562500 +vt 0.365132 0.546875 +vt 0.365132 0.531250 +vt 0.365132 0.515625 +vt 0.365132 0.500000 +vt 0.365132 0.687500 +vt 0.365132 0.671875 +vt 0.365132 0.656250 +vt 0.365132 0.640625 +vt 0.338816 0.593750 +vt 0.338816 0.609375 +vt 0.338816 0.625000 +vt 0.338816 0.640625 +vt 0.338816 0.656250 +vt 0.338816 0.671875 +vt 0.338816 0.500000 +vt 0.338816 0.515625 +vt 0.338816 0.531250 +vt 0.338816 0.546875 +vt 0.338816 0.562500 +vt 0.338816 0.578125 +vt 0.332237 0.593750 +vt 0.332237 0.578125 +vt 0.332237 0.562500 +vt 0.332237 0.546875 +vt 0.332237 0.531250 +vt 0.332237 0.515625 +vt 0.332237 0.500000 +vt 0.338816 0.687500 +vt 0.332237 0.671875 +vt 0.332237 0.656250 +vt 0.332237 0.640625 +vt 0.332237 0.625000 +vt 0.332237 0.609375 +vt 0.200658 0.593750 +vt 0.200658 0.609375 +vt 0.200658 0.625000 +vt 0.200658 0.640625 +vt 0.200658 0.656250 +vt 0.332237 0.687500 +vt 0.200658 0.671875 +vt 0.200658 0.500000 +vt 0.200658 0.515625 +vt 0.200658 0.531250 +vt 0.200658 0.546875 +vt 0.200658 0.562500 +vt 0.200658 0.578125 +vt 0.194079 0.562500 +vt 0.194079 0.546875 +vt 0.194079 0.578125 +vt 0.194079 0.593750 +vt 0.194079 0.609375 +vt 0.194079 0.625000 +vt 0.194079 0.640625 +vt 0.194079 0.671875 +vt 0.194079 0.656250 +vt 0.200658 0.687500 +vt 0.194079 0.500000 +vt 0.194079 0.531250 +vt 0.194079 0.515625 +vt 0.128289 0.593750 +vt 0.128289 0.609375 +vt 0.128289 0.625000 +vt 0.128289 0.640625 +vt 0.128289 0.656250 +vt 0.194079 0.687500 +vt 0.128289 0.671875 +vt 0.128289 0.500000 +vt 0.128289 0.515625 +vt 0.128289 0.531250 +vt 0.128289 0.546875 +vt 0.128289 0.562500 +vt 0.128289 0.578125 +vt 0.121711 0.593750 +vt 0.121711 0.578125 +vt 0.121711 0.609375 +vt 0.121711 0.625000 +vt 0.121711 0.640625 +vt 0.121711 0.671875 +vt 0.121711 0.656250 +vt 0.121711 0.687500 +vt 0.121711 0.500000 +vt 0.121711 0.515625 +vt 0.121711 0.531250 +vt 0.121711 0.546875 +vt 0.121711 0.562500 +vt 0.092105 0.593750 +vt 0.092105 0.609375 +vt 0.092105 0.625000 +vt 0.092105 0.640625 +vt 0.092105 0.656250 +vt 0.092105 0.671875 +vt 0.092105 0.500000 +vt 0.092105 0.515625 +vt 0.092105 0.531250 +vt 0.092105 0.546875 +vt 0.092105 0.562500 +vt 0.092105 0.578125 +vt 0.476974 0.625000 +vt 0.371711 0.609375 +vt 0.476974 0.609375 +vt 0.371711 0.593750 +vt 0.476974 0.593750 +vt 0.476974 0.640625 +vt 0.371711 0.625000 +vt 0.476974 0.656250 +vt 0.371711 0.640625 +vt 0.476974 0.671875 +vt 0.371711 0.656250 +vt 0.476974 0.687500 +vt 0.371711 0.671875 +vt 0.476974 0.515625 +vt 0.371711 0.500000 +vt 0.476974 0.500000 +vt 0.476974 0.531250 +vt 0.371711 0.515625 +vt 0.476974 0.546875 +vt 0.371711 0.531250 +vt 0.476974 0.562500 +vt 0.371711 0.546875 +vt 0.476974 0.578125 +vt 0.371711 0.562500 +vt 0.371711 0.578125 +vt 0.365132 0.625000 +vt 0.365132 0.609375 +vt 0.365132 0.593750 +vt 0.365132 0.578125 +vt 0.365132 0.562500 +vt 0.365132 0.546875 +vt 0.365132 0.531250 +vt 0.365132 0.515625 +vt 0.365132 0.500000 +vt 0.371711 0.687500 +vt 0.365132 0.671875 +vt 0.365132 0.656250 +vt 0.365132 0.640625 +vt 0.338816 0.593750 +vt 0.338816 0.609375 +vt 0.338816 0.625000 +vt 0.338816 0.640625 +vt 0.338816 0.656250 +vt 0.365132 0.687500 +vt 0.338816 0.671875 +vt 0.338816 0.500000 +vt 0.338816 0.515625 +vt 0.338816 0.531250 +vt 0.338816 0.546875 +vt 0.338816 0.562500 +vt 0.338816 0.578125 +vt 0.332237 0.609375 +vt 0.332237 0.593750 +vt 0.332237 0.578125 +vt 0.332237 0.562500 +vt 0.332237 0.546875 +vt 0.332237 0.531250 +vt 0.332237 0.515625 +vt 0.332237 0.500000 +vt 0.338816 0.687500 +vt 0.332237 0.671875 +vt 0.332237 0.656250 +vt 0.332237 0.640625 +vt 0.332237 0.625000 +vt 0.200658 0.593750 +vt 0.200658 0.609375 +vt 0.200658 0.625000 +vt 0.200658 0.640625 +vt 0.200658 0.656250 +vt 0.332237 0.687500 +vt 0.200658 0.671875 +vt 0.200658 0.500000 +vt 0.200658 0.515625 +vt 0.200658 0.531250 +vt 0.200658 0.546875 +vt 0.200658 0.562500 +vt 0.200658 0.578125 +vt 0.194079 0.562500 +vt 0.194079 0.546875 +vt 0.194079 0.578125 +vt 0.194079 0.593750 +vt 0.194079 0.609375 +vt 0.194079 0.625000 +vt 0.194079 0.640625 +vt 0.194079 0.656250 +vt 0.200658 0.687500 +vt 0.194079 0.671875 +vt 0.194079 0.500000 +vt 0.194079 0.531250 +vt 0.194079 0.515625 +vt 0.128289 0.593750 +vt 0.128289 0.609375 +vt 0.128289 0.625000 +vt 0.128289 0.640625 +vt 0.128289 0.656250 +vt 0.194079 0.687500 +vt 0.128289 0.671875 +vt 0.128289 0.500000 +vt 0.128289 0.515625 +vt 0.128289 0.531250 +vt 0.128289 0.546875 +vt 0.128289 0.562500 +vt 0.128289 0.578125 +vt 0.121711 0.593750 +vt 0.121711 0.578125 +vt 0.121711 0.609375 +vt 0.121711 0.625000 +vt 0.121711 0.640625 +vt 0.121711 0.656250 +vt 0.128289 0.687500 +vt 0.121711 0.671875 +vt 0.121711 0.500000 +vt 0.121711 0.515625 +vt 0.121711 0.546875 +vt 0.121711 0.531250 +vt 0.121711 0.562500 +vt 0.121711 0.687500 +vt 0.092105 0.593750 +vt 0.092105 0.609375 +vt 0.092105 0.625000 +vt 0.092105 0.640625 +vt 0.092105 0.656250 +vt 0.092105 0.671875 +vt 0.092105 0.500000 +vt 0.092105 0.515625 +vt 0.092105 0.531250 +vt 0.092105 0.546875 +vt 0.092105 0.562500 +vt 0.092105 0.578125 +vt 0.338816 0.687500 +vt 0.092105 0.605469 +vt 0.092105 0.621094 +vt 0.092105 0.636719 +vt 0.092105 0.652344 +vt 0.092105 0.667969 +vt 0.092105 0.683594 +vt 0.092105 0.511719 +vt 0.092105 0.527344 +vt 0.092105 0.542969 +vt 0.092105 0.558594 +vt 0.092105 0.574219 +vt 0.092105 0.589844 +vt 0.769737 -0.000000 +vt 0.338816 0.687500 +vt 0.092105 0.605469 +vt 0.092105 0.621094 +vt 0.092105 0.636719 +vt 0.092105 0.652344 +vt 0.092105 0.667969 +vt 0.092105 0.683594 +vt 0.092105 0.511719 +vt 0.092105 0.527344 +vt 0.092105 0.542969 +vt 0.092105 0.558594 +vt 0.092105 0.574219 +vt 0.092105 0.589844 +vt 0.338816 0.687500 +vt 0.128289 0.687500 +vt 0.092105 0.605469 +vt 0.092105 0.621094 +vt 0.092105 0.636719 +vt 0.092105 0.652344 +vt 0.092105 0.667969 +vt 0.092105 0.683594 +vt 0.092105 0.511719 +vt 0.092105 0.527344 +vt 0.092105 0.542969 +vt 0.092105 0.558594 +vt 0.092105 0.574219 +vt 0.092105 0.589844 +vt 0.128289 0.687500 +vt 0.092105 0.605469 +vt 0.092105 0.621094 +vt 0.092105 0.636719 +vt 0.092105 0.652344 +vt 0.092105 0.667969 +vt 0.092105 0.683594 +vt 0.092105 0.511719 +vt 0.092105 0.527344 +vt 0.092105 0.542969 +vt 0.092105 0.558594 +vt 0.092105 0.574219 +vt 0.092105 0.589844 +vt 0.371711 0.687500 +vt 0.128289 0.687500 +vt 0.092105 0.605469 +vt 0.092105 0.621094 +vt 0.092105 0.636719 +vt 0.092105 0.652344 +vt 0.092105 0.667969 +vt 0.092105 0.683594 +vt 0.092105 0.511719 +vt 0.092105 0.527344 +vt 0.092105 0.542969 +vt 0.092105 0.558594 +vt 0.092105 0.574219 +vt 0.092105 0.589844 +vt 0.092105 0.605469 +vt 0.092105 0.621094 +vt 0.092105 0.636719 +vt 0.092105 0.652344 +vt 0.092105 0.667969 +vt 0.092105 0.683594 +vt 0.092105 0.511719 +vt 0.092105 0.527344 +vt 0.092105 0.542969 +vt 0.092105 0.558594 +vt 0.092105 0.574219 +vt 0.092105 0.589844 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.5000 0.8660 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.8660 0.5000 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.8660 -0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.0000 -1.0000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.9701 -0.0000 -0.2425 +vn -0.8402 0.4851 -0.2425 +vn -0.4851 0.8402 -0.2425 +vn 0.0000 0.9701 -0.2425 +vn 0.4851 0.8402 -0.2425 +vn 0.8402 0.4851 -0.2425 +vn 0.9701 0.0000 -0.2425 +vn 0.8402 -0.4851 -0.2425 +vn 0.4851 -0.8402 -0.2425 +vn -0.0000 -0.9701 -0.2425 +vn -0.4851 -0.8402 -0.2425 +vn -0.8402 -0.4851 -0.2425 +vn 0.0000 0.9701 0.2425 +vn -0.4851 0.8402 0.2425 +vn 0.4851 0.8402 0.2425 +vn 0.8402 0.4851 0.2425 +vn 0.9701 -0.0000 0.2425 +vn 0.8402 -0.4851 0.2425 +vn 0.4851 -0.8402 0.2425 +vn -0.0000 -0.9701 0.2425 +vn -0.4851 -0.8402 0.2425 +vn -0.8402 -0.4851 0.2425 +vn -0.9701 -0.0000 0.2425 +vn -0.8402 0.4851 0.2425 +s off +f 109/1/1 132/2/1 120/3/1 +f 120/3/1 131/4/1 119/5/1 +f 119/5/1 130/6/1 118/7/1 +f 118/7/1 129/8/1 117/9/1 +f 117/9/1 128/10/1 116/11/1 +f 115/12/1 128/13/1 127/14/1 +f 115/15/1 126/16/1 114/17/1 +f 114/17/1 125/18/1 113/19/1 +f 113/19/1 124/20/1 112/21/1 +f 112/21/1 123/22/1 111/23/1 +f 110/24/1 123/25/1 122/26/1 +f 109/1/1 122/27/1 121/28/1 +f 143/29/1 133/30/1 137/31/1 +f 165/32/2 163/33/2 159/34/2 +f 149/35/1 151/36/1 153/37/1 +f 277/38/1 300/39/1 288/40/1 +f 288/40/1 299/41/1 287/42/1 +f 287/42/1 298/43/1 286/44/1 +f 286/44/1 297/45/1 285/46/1 +f 285/46/1 296/47/1 284/48/1 +f 283/49/1 296/50/1 295/51/1 +f 283/52/1 294/53/1 282/54/1 +f 282/54/1 293/55/1 281/56/1 +f 281/56/1 292/57/1 280/58/1 +f 280/58/1 291/59/1 279/60/1 +f 278/61/1 291/62/1 290/63/1 +f 277/38/1 290/64/1 289/65/1 +f 311/66/1 301/67/1 305/68/1 +f 421/69/1 444/70/1 432/71/1 +f 432/71/1 443/72/1 431/73/1 +f 431/73/1 442/74/1 430/75/1 +f 430/75/1 441/76/1 429/77/1 +f 428/78/1 441/79/1 440/80/1 +f 427/81/1 440/82/1 439/83/1 +f 427/84/1 438/85/1 426/86/1 +f 426/86/1 437/87/1 425/88/1 +f 425/88/1 436/89/1 424/90/1 +f 424/90/1 435/91/1 423/92/1 +f 423/92/1 434/93/1 422/94/1 +f 421/69/1 434/95/1 433/96/1 +f 455/97/1 445/98/1 449/99/1 +f 565/100/1 588/101/1 576/102/1 +f 576/102/1 587/103/1 575/104/1 +f 575/104/1 586/105/1 574/106/1 +f 573/107/1 586/108/1 585/109/1 +f 573/107/1 584/110/1 572/111/1 +f 571/112/1 584/113/1 583/114/1 +f 571/115/1 582/116/1 570/117/1 +f 570/117/1 581/118/1 569/119/1 +f 569/119/1 580/120/1 568/121/1 +f 568/121/1 579/122/1 567/123/1 +f 566/124/1 579/125/1 578/126/1 +f 565/100/1 578/127/1 577/128/1 +f 593/129/1 597/130/1 589/131/1 +f 709/132/1 732/133/1 720/134/1 +f 720/134/1 731/135/1 719/136/1 +f 719/136/1 730/137/1 718/138/1 +f 717/139/1 730/140/1 729/141/1 +f 716/142/1 729/143/1 728/144/1 +f 715/145/1 728/146/1 727/147/1 +f 715/148/1 726/149/1 714/150/1 +f 714/150/1 725/151/1 713/152/1 +f 713/152/1 724/153/1 712/154/1 +f 712/154/1 723/155/1 711/156/1 +f 711/156/1 722/157/1 710/158/1 +f 709/132/1 722/159/1 721/160/1 +f 743/161/1 733/162/1 737/163/1 +f 853/164/1 876/165/1 864/166/1 +f 864/166/1 875/167/1 863/168/1 +f 863/168/1 874/169/1 862/170/1 +f 861/171/1 874/172/1 873/173/1 +f 861/171/1 872/174/1 860/175/1 +f 859/176/1 872/177/1 871/178/1 +f 859/179/1 870/180/1 858/181/1 +f 858/181/1 869/182/1 857/183/1 +f 857/183/1 868/184/1 856/185/1 +f 856/185/1 867/186/1 855/187/1 +f 854/188/1 867/189/1 866/190/1 +f 854/188/1 865/191/1 853/164/1 +f 887/192/1 877/193/1 881/194/1 +f 109/1/1 121/195/1 132/2/1 +f 120/3/1 132/196/1 131/4/1 +f 119/5/1 131/197/1 130/6/1 +f 118/7/1 130/198/1 129/8/1 +f 117/9/1 129/199/1 128/10/1 +f 115/12/1 116/11/1 128/13/1 +f 115/15/1 127/200/1 126/16/1 +f 114/17/1 126/201/1 125/18/1 +f 113/19/1 125/202/1 124/20/1 +f 112/21/1 124/203/1 123/22/1 +f 110/24/1 111/23/1 123/25/1 +f 109/1/1 110/24/1 122/27/1 +f 133/30/1 134/204/1 135/205/1 +f 135/205/1 136/206/1 133/30/1 +f 136/206/1 137/31/1 133/30/1 +f 137/31/1 138/207/1 139/208/1 +f 139/208/1 140/209/1 141/210/1 +f 141/210/1 142/211/1 143/29/1 +f 143/29/1 144/212/1 133/30/1 +f 137/31/1 139/208/1 141/210/1 +f 141/210/1 143/29/1 137/31/1 +f 159/34/2 158/213/2 157/214/2 +f 157/214/2 168/215/2 167/216/2 +f 167/216/2 166/217/2 165/32/2 +f 165/32/2 164/218/2 163/33/2 +f 163/33/2 162/219/2 161/220/2 +f 161/220/2 160/221/2 163/33/2 +f 160/221/2 159/34/2 163/33/2 +f 159/34/2 157/214/2 167/216/2 +f 167/216/2 165/32/2 159/34/2 +f 145/222/1 146/223/1 147/224/1 +f 147/224/1 148/225/1 149/35/1 +f 149/35/1 150/226/1 151/36/1 +f 151/36/1 152/227/1 153/37/1 +f 153/37/1 154/228/1 145/222/1 +f 154/228/1 155/229/1 145/222/1 +f 155/229/1 156/230/1 145/222/1 +f 145/222/1 147/224/1 153/37/1 +f 147/224/1 149/35/1 153/37/1 +f 277/38/1 289/231/1 300/39/1 +f 288/40/1 300/232/1 299/41/1 +f 287/42/1 299/233/1 298/43/1 +f 286/44/1 298/234/1 297/45/1 +f 285/46/1 297/235/1 296/47/1 +f 283/49/1 284/48/1 296/50/1 +f 283/52/1 295/236/1 294/53/1 +f 282/54/1 294/237/1 293/55/1 +f 281/56/1 293/238/1 292/57/1 +f 280/58/1 292/239/1 291/59/1 +f 278/61/1 279/60/1 291/62/1 +f 277/38/1 278/61/1 290/64/1 +f 301/67/1 302/240/1 303/241/1 +f 303/241/1 304/242/1 301/67/1 +f 304/242/1 305/68/1 301/67/1 +f 305/68/1 306/243/1 307/244/1 +f 307/244/1 308/245/1 309/246/1 +f 309/246/1 310/247/1 311/66/1 +f 311/66/1 312/248/1 301/67/1 +f 305/68/1 307/244/1 309/246/1 +f 309/246/1 311/66/1 305/68/1 +f 421/69/1 433/249/1 444/70/1 +f 432/71/1 444/250/1 443/72/1 +f 431/73/1 443/251/1 442/74/1 +f 430/75/1 442/252/1 441/76/1 +f 428/78/1 429/77/1 441/79/1 +f 427/81/1 428/78/1 440/82/1 +f 427/84/1 439/253/1 438/85/1 +f 426/86/1 438/254/1 437/87/1 +f 425/88/1 437/255/1 436/89/1 +f 424/90/1 436/256/1 435/91/1 +f 423/92/1 435/257/1 434/93/1 +f 421/69/1 422/94/1 434/95/1 +f 445/98/1 446/258/1 447/259/1 +f 447/259/1 448/260/1 445/98/1 +f 448/260/1 449/99/1 445/98/1 +f 449/99/1 450/261/1 451/262/1 +f 451/262/1 452/263/1 453/264/1 +f 453/264/1 454/265/1 455/97/1 +f 455/97/1 456/266/1 445/98/1 +f 449/99/1 451/262/1 453/264/1 +f 453/264/1 455/97/1 449/99/1 +f 565/100/1 577/267/1 588/101/1 +f 576/102/1 588/268/1 587/103/1 +f 575/104/1 587/269/1 586/105/1 +f 573/107/1 574/106/1 586/108/1 +f 573/107/1 585/270/1 584/110/1 +f 571/112/1 572/111/1 584/113/1 +f 571/115/1 583/271/1 582/116/1 +f 570/117/1 582/272/1 581/118/1 +f 569/119/1 581/273/1 580/120/1 +f 568/121/1 580/274/1 579/122/1 +f 566/124/1 567/123/1 579/125/1 +f 565/100/1 566/124/1 578/127/1 +f 589/131/1 590/275/1 593/129/1 +f 590/275/1 591/276/1 593/129/1 +f 591/276/1 592/277/1 593/129/1 +f 593/129/1 594/278/1 595/279/1 +f 595/279/1 596/280/1 597/130/1 +f 597/130/1 598/281/1 599/282/1 +f 599/282/1 600/283/1 589/131/1 +f 593/129/1 595/279/1 597/130/1 +f 597/130/1 599/282/1 589/131/1 +f 709/132/1 721/284/1 732/133/1 +f 720/134/1 732/285/1 731/135/1 +f 719/136/1 731/286/1 730/137/1 +f 717/139/1 718/138/1 730/140/1 +f 716/142/1 717/139/1 729/143/1 +f 715/145/1 716/142/1 728/146/1 +f 715/148/1 727/287/1 726/149/1 +f 714/150/1 726/288/1 725/151/1 +f 713/152/1 725/289/1 724/153/1 +f 712/154/1 724/290/1 723/155/1 +f 711/156/1 723/291/1 722/157/1 +f 709/132/1 710/158/1 722/159/1 +f 733/162/1 734/292/1 737/163/1 +f 734/292/1 735/293/1 737/163/1 +f 735/293/1 736/294/1 737/163/1 +f 737/163/1 738/295/1 739/296/1 +f 739/296/1 740/297/1 741/298/1 +f 741/298/1 742/299/1 743/161/1 +f 743/161/1 744/300/1 733/162/1 +f 737/163/1 739/296/1 741/298/1 +f 741/298/1 743/161/1 737/163/1 +f 853/164/1 865/301/1 876/165/1 +f 864/166/1 876/302/1 875/167/1 +f 863/168/1 875/303/1 874/169/1 +f 861/171/1 862/170/1 874/172/1 +f 861/171/1 873/304/1 872/174/1 +f 859/176/1 860/175/1 872/177/1 +f 859/179/1 871/305/1 870/180/1 +f 858/181/1 870/306/1 869/182/1 +f 857/183/1 869/307/1 868/184/1 +f 856/185/1 868/308/1 867/186/1 +f 854/188/1 855/187/1 867/189/1 +f 854/188/1 866/309/1 865/191/1 +f 877/193/1 878/310/1 881/194/1 +f 878/310/1 879/311/1 881/194/1 +f 879/311/1 880/312/1 881/194/1 +f 881/194/1 882/313/1 883/314/1 +f 883/314/1 884/315/1 885/316/1 +f 885/316/1 886/317/1 887/192/1 +f 887/192/1 888/318/1 877/193/1 +f 881/194/1 883/314/1 885/316/1 +f 885/316/1 887/192/1 881/194/1 +s 1 +f 2/319/3 13/320/4 1/321/4 +f 3/322/5 14/323/3 2/319/3 +f 4/324/6 15/325/5 3/322/5 +f 5/326/7 16/327/6 4/324/6 +f 6/328/8 17/329/7 5/326/7 +f 7/330/9 18/331/8 6/328/8 +f 8/332/10 19/333/9 7/334/9 +f 9/335/11 20/336/10 8/332/10 +f 10/337/12 21/338/11 9/335/11 +f 11/339/13 22/340/12 10/337/12 +f 12/341/14 23/342/13 11/339/13 +f 1/321/4 24/343/14 12/341/14 +f 16/327/15 27/344/16 15/325/16 +f 15/325/16 26/345/17 14/323/17 +f 14/323/17 25/346/18 13/320/18 +f 24/343/19 25/346/18 36/347/19 +f 23/342/20 36/347/19 35/348/20 +f 22/340/21 35/348/20 34/349/21 +f 21/338/22 34/349/21 33/350/22 +f 20/336/23 33/350/22 32/351/23 +f 19/333/24 32/351/23 31/352/24 +f 19/353/24 30/354/25 18/331/25 +f 17/329/26 30/354/25 29/355/26 +f 17/329/26 28/356/15 16/327/15 +f 26/345/3 37/357/4 25/346/4 +f 27/344/5 38/358/3 26/345/3 +f 28/356/6 39/359/5 27/344/5 +f 29/355/7 40/360/6 28/356/6 +f 30/354/8 41/361/7 29/355/7 +f 31/362/9 42/363/8 30/354/8 +f 32/351/10 43/364/9 31/352/9 +f 33/350/11 44/365/10 32/351/10 +f 34/349/12 45/366/11 33/350/11 +f 35/348/13 46/367/12 34/349/12 +f 36/347/14 47/368/13 35/348/13 +f 25/346/4 48/369/14 36/347/14 +f 37/357/27 50/370/28 49/371/27 +f 37/357/27 60/372/29 48/369/29 +f 48/369/29 59/373/30 47/368/30 +f 47/368/30 58/374/31 46/367/31 +f 46/367/31 57/375/32 45/366/32 +f 45/366/32 56/376/33 44/365/33 +f 44/365/33 55/377/34 43/364/34 +f 42/363/35 55/378/34 54/379/35 +f 42/363/35 53/380/36 41/361/36 +f 40/360/37 53/380/36 52/381/37 +f 39/359/38 52/381/37 51/382/38 +f 38/358/28 51/382/38 50/370/28 +f 50/370/3 61/383/4 49/371/4 +f 51/382/5 62/384/3 50/370/3 +f 52/381/6 63/385/5 51/382/5 +f 53/380/7 64/386/6 52/381/6 +f 54/379/8 65/387/7 53/380/7 +f 55/378/9 66/388/8 54/379/8 +f 56/376/10 67/389/9 55/377/9 +f 57/375/11 68/390/10 56/376/10 +f 58/374/12 69/391/11 57/375/11 +f 59/373/13 70/392/12 58/374/12 +f 60/372/14 71/393/13 59/373/13 +f 49/371/4 72/394/14 60/372/14 +f 70/392/21 83/395/20 82/396/21 +f 71/393/20 84/397/19 83/395/20 +f 61/383/18 84/397/19 72/394/19 +f 62/384/17 73/398/18 61/383/18 +f 63/385/16 74/399/17 62/384/17 +f 64/386/15 75/400/16 63/385/16 +f 64/386/15 77/401/26 76/402/15 +f 66/388/25 77/401/26 65/387/26 +f 67/403/24 78/404/25 66/388/25 +f 68/390/23 79/405/24 67/389/24 +f 68/390/23 81/406/22 80/407/23 +f 69/391/22 82/396/21 81/406/22 +f 74/399/3 85/408/4 73/398/4 +f 75/400/5 86/409/3 74/399/3 +f 76/402/6 87/410/5 75/400/5 +f 77/401/7 88/411/6 76/402/6 +f 78/404/8 89/412/7 77/401/7 +f 79/413/9 90/414/8 78/404/8 +f 80/407/10 91/415/9 79/405/9 +f 81/406/11 92/416/10 80/407/10 +f 82/396/12 93/417/11 81/406/11 +f 83/395/13 94/418/12 82/396/12 +f 84/397/14 95/419/13 83/395/13 +f 73/398/4 96/420/14 84/397/14 +f 96/420/29 97/421/27 108/422/29 +f 86/409/28 97/421/27 85/408/27 +f 87/410/38 98/423/28 86/409/28 +f 87/410/38 100/424/37 99/425/38 +f 89/412/36 100/424/37 88/411/37 +f 89/412/36 102/426/35 101/427/36 +f 91/428/34 102/426/35 90/414/35 +f 91/415/34 104/429/33 103/430/34 +f 93/417/32 104/429/33 92/416/33 +f 94/418/31 105/431/32 93/417/32 +f 95/419/30 106/432/31 94/418/31 +f 95/419/30 108/422/29 107/433/30 +f 98/423/3 109/1/4 97/421/4 +f 99/425/5 110/24/3 98/423/3 +f 100/424/6 111/23/5 99/425/5 +f 101/427/7 112/21/6 100/424/6 +f 102/426/8 113/19/7 101/427/7 +f 103/434/9 114/17/8 102/426/8 +f 104/429/10 115/12/9 103/430/9 +f 105/431/11 116/11/10 104/429/10 +f 106/432/12 117/9/11 105/431/11 +f 107/433/13 118/7/12 106/432/12 +f 108/422/14 119/5/13 107/433/13 +f 97/421/4 120/3/14 108/422/14 +f 122/27/10 133/435/9 121/28/9 +f 123/25/11 134/436/10 122/26/10 +f 124/203/12 135/437/11 123/22/11 +f 125/202/13 136/438/12 124/20/12 +f 126/201/14 137/439/13 125/18/13 +f 127/200/4 138/440/14 126/16/14 +f 128/13/3 139/441/4 127/14/4 +f 129/199/5 140/442/3 128/10/3 +f 130/198/6 141/443/5 129/8/5 +f 131/197/7 142/444/6 130/6/6 +f 132/196/8 143/445/7 131/4/7 +f 121/195/9 144/446/8 132/2/8 +f 159/447/5 148/448/6 147/449/5 +f 166/450/12 155/451/13 154/452/12 +f 163/453/9 152/454/10 151/455/9 +f 160/456/6 149/457/7 148/448/6 +f 167/458/13 156/459/14 155/451/13 +f 157/460/4 146/461/3 145/462/4 +f 164/463/10 153/464/11 152/454/10 +f 161/465/7 150/466/8 149/457/7 +f 168/467/14 145/462/4 156/459/14 +f 158/468/3 147/449/5 146/461/3 +f 165/469/11 154/452/12 153/464/11 +f 162/470/8 151/471/9 150/466/8 +f 171/472/11 182/473/10 170/474/10 +f 170/474/10 181/475/9 169/476/9 +f 172/477/12 183/478/11 171/472/11 +f 173/479/13 184/480/12 172/477/12 +f 174/481/14 185/482/13 173/479/13 +f 175/483/4 186/484/14 174/481/14 +f 176/485/3 187/486/4 175/487/4 +f 177/488/5 188/489/3 176/485/3 +f 178/490/6 189/491/5 177/488/5 +f 179/492/7 190/493/6 178/490/6 +f 180/494/8 191/495/7 179/492/7 +f 169/476/9 192/496/8 180/494/8 +f 184/480/21 195/497/22 183/478/22 +f 183/478/22 194/498/23 182/473/23 +f 182/473/23 193/499/24 181/475/24 +f 192/496/25 193/499/24 204/500/25 +f 191/495/26 204/500/25 203/501/26 +f 190/493/15 203/501/26 202/502/15 +f 190/493/15 201/503/16 189/491/16 +f 188/489/17 201/503/16 200/504/17 +f 187/486/18 200/504/17 199/505/18 +f 187/506/18 198/507/19 186/484/19 +f 185/482/20 198/507/19 197/508/20 +f 185/482/20 196/509/21 184/480/21 +f 194/498/10 205/510/9 193/499/9 +f 195/497/11 206/511/10 194/498/10 +f 196/509/12 207/512/11 195/497/11 +f 197/508/13 208/513/12 196/509/12 +f 198/507/14 209/514/13 197/508/13 +f 199/515/4 210/516/14 198/507/14 +f 200/504/3 211/517/4 199/505/4 +f 201/503/5 212/518/3 200/504/3 +f 202/502/6 213/519/5 201/503/5 +f 203/501/7 214/520/6 202/502/6 +f 204/500/8 215/521/7 203/501/7 +f 193/499/9 216/522/8 204/500/8 +f 205/510/34 218/523/33 217/524/34 +f 205/510/34 228/525/35 216/522/35 +f 216/522/35 227/526/36 215/521/36 +f 215/521/36 226/527/37 214/520/37 +f 214/520/37 225/528/38 213/519/38 +f 213/519/38 224/529/28 212/518/28 +f 212/518/28 223/530/27 211/517/27 +f 210/516/29 223/531/27 222/532/29 +f 210/516/29 221/533/30 209/514/30 +f 208/513/31 221/533/30 220/534/31 +f 207/512/32 220/534/31 219/535/32 +f 206/511/33 219/535/32 218/523/33 +f 218/523/10 229/536/9 217/524/9 +f 219/535/11 230/537/10 218/523/10 +f 220/534/12 231/538/11 219/535/11 +f 221/533/13 232/539/12 220/534/12 +f 222/532/14 233/540/13 221/533/13 +f 223/531/4 234/541/14 222/532/14 +f 224/529/3 235/542/4 223/530/4 +f 225/528/5 236/543/3 224/529/3 +f 226/527/6 237/544/5 225/528/5 +f 227/526/7 238/545/6 226/527/6 +f 228/525/8 239/546/7 227/526/7 +f 217/524/9 240/547/8 228/525/8 +f 238/545/15 251/548/26 250/549/15 +f 239/546/26 252/550/25 251/548/26 +f 240/547/25 241/551/24 252/550/25 +f 229/536/24 242/552/23 241/551/24 +f 230/537/23 243/553/22 242/552/23 +f 232/539/21 243/553/22 231/538/22 +f 233/540/20 244/554/21 232/539/21 +f 234/541/19 245/555/20 233/540/20 +f 235/556/18 246/557/19 234/541/19 +f 236/543/17 247/558/18 235/542/18 +f 236/543/17 249/559/16 248/560/17 +f 237/544/16 250/549/15 249/559/16 +f 242/552/10 253/561/9 241/551/9 +f 243/553/11 254/562/10 242/552/10 +f 244/554/12 255/563/11 243/553/11 +f 245/555/13 256/564/12 244/554/12 +f 246/557/14 257/565/13 245/555/13 +f 247/566/4 258/567/14 246/557/14 +f 248/560/3 259/568/4 247/558/4 +f 249/559/5 260/569/3 248/560/3 +f 250/549/6 261/570/5 249/559/5 +f 251/548/7 262/571/6 250/549/6 +f 252/550/8 263/572/7 251/548/7 +f 241/551/9 264/573/8 252/550/8 +f 264/573/35 265/574/34 276/575/35 +f 254/562/33 265/574/34 253/561/34 +f 255/563/32 266/576/33 254/562/33 +f 255/563/32 268/577/31 267/578/32 +f 257/565/30 268/577/31 256/564/31 +f 257/565/30 270/579/29 269/580/30 +f 259/581/27 270/579/29 258/567/29 +f 260/569/28 271/582/27 259/568/27 +f 261/570/38 272/583/28 260/569/28 +f 262/571/37 273/584/38 261/570/38 +f 263/572/36 274/585/37 262/571/37 +f 264/573/35 275/586/36 263/572/36 +f 266/576/10 277/38/9 265/574/9 +f 267/578/11 278/61/10 266/576/10 +f 268/577/12 279/60/11 267/578/11 +f 269/580/13 280/58/12 268/577/12 +f 270/579/14 281/56/13 269/580/13 +f 271/587/4 282/54/14 270/579/14 +f 272/583/3 283/49/4 271/582/4 +f 273/584/5 284/48/3 272/583/3 +f 274/585/6 285/46/5 273/584/5 +f 275/586/7 286/44/6 274/585/6 +f 276/575/8 287/42/7 275/586/7 +f 265/574/9 288/40/8 276/575/8 +f 290/64/3 301/588/4 289/65/4 +f 291/62/5 302/589/3 290/63/3 +f 292/239/6 303/590/5 291/59/5 +f 293/238/7 304/591/6 292/57/6 +f 294/237/8 305/592/7 293/55/7 +f 295/236/9 306/593/8 294/53/8 +f 296/50/10 307/594/9 295/51/9 +f 297/235/11 308/595/10 296/47/10 +f 298/234/12 309/596/11 297/45/11 +f 299/233/13 310/597/12 298/43/12 +f 300/232/14 311/598/13 299/41/13 +f 289/231/4 312/599/14 300/39/14 +f 314/600/14 325/601/13 313/602/13 +f 315/603/4 326/604/14 314/600/14 +f 316/605/3 327/606/4 315/603/4 +f 317/607/5 328/608/3 316/605/3 +f 318/609/6 329/610/5 317/607/5 +f 319/611/7 330/612/6 318/609/6 +f 320/613/8 331/614/7 319/615/7 +f 321/616/9 332/617/8 320/613/8 +f 322/618/10 333/619/9 321/616/9 +f 323/620/11 334/621/10 322/618/10 +f 324/622/12 335/623/11 323/620/11 +f 313/602/13 336/624/12 324/622/12 +f 328/608/17 339/625/18 327/606/18 +f 327/606/18 338/626/19 326/604/19 +f 326/604/19 337/627/20 325/601/20 +f 336/624/21 337/627/20 348/628/21 +f 335/623/22 348/628/21 347/629/22 +f 334/621/23 347/629/22 346/630/23 +f 333/619/24 346/630/23 345/631/24 +f 332/617/25 345/631/24 344/632/25 +f 331/614/26 344/632/25 343/633/26 +f 331/634/26 342/635/15 330/612/15 +f 330/612/15 341/636/16 329/610/16 +f 329/610/16 340/637/17 328/608/17 +f 338/626/14 349/638/13 337/627/13 +f 339/625/4 350/639/14 338/626/14 +f 340/637/3 351/640/4 339/625/4 +f 341/636/5 352/641/3 340/637/3 +f 342/635/6 353/642/5 341/636/5 +f 343/643/7 354/644/6 342/635/6 +f 344/632/8 355/645/7 343/633/7 +f 345/631/9 356/646/8 344/632/8 +f 346/630/10 357/647/9 345/631/9 +f 347/629/11 358/648/10 346/630/10 +f 348/628/12 359/649/11 347/629/11 +f 337/627/13 360/650/12 348/628/12 +f 349/638/30 362/651/29 361/652/30 +f 349/638/30 372/653/31 360/650/31 +f 360/650/31 371/654/32 359/649/32 +f 359/649/32 370/655/33 358/648/33 +f 358/648/33 369/656/34 357/647/34 +f 357/647/34 368/657/35 356/646/35 +f 356/646/35 367/658/36 355/645/36 +f 354/644/37 367/659/36 366/660/37 +f 354/644/37 365/661/38 353/642/38 +f 352/641/28 365/661/38 364/662/28 +f 351/640/27 364/662/28 363/663/27 +f 350/639/29 363/663/27 362/651/29 +f 362/651/14 373/664/13 361/652/13 +f 363/663/4 374/665/14 362/651/14 +f 364/662/3 375/666/4 363/663/4 +f 365/661/5 376/667/3 364/662/3 +f 366/660/6 377/668/5 365/661/5 +f 367/659/7 378/669/6 366/660/6 +f 368/657/8 379/670/7 367/658/7 +f 369/656/9 380/671/8 368/657/8 +f 370/655/10 381/672/9 369/656/9 +f 371/654/11 382/673/10 370/655/10 +f 372/653/12 383/674/11 371/654/11 +f 361/652/13 384/675/12 372/653/12 +f 383/674/22 394/676/23 382/673/23 +f 383/674/22 396/677/21 395/678/22 +f 373/664/20 396/677/21 384/675/21 +f 374/665/19 385/679/20 373/664/20 +f 375/666/18 386/680/19 374/665/19 +f 376/667/17 387/681/18 375/666/18 +f 377/668/16 388/682/17 376/667/17 +f 377/668/16 390/683/15 389/684/16 +f 379/685/26 390/683/15 378/669/15 +f 380/671/25 391/686/26 379/670/26 +f 380/671/25 393/687/24 392/688/25 +f 382/673/23 393/687/24 381/672/24 +f 386/680/14 397/689/13 385/679/13 +f 387/681/4 398/690/14 386/680/14 +f 388/682/3 399/691/4 387/681/4 +f 389/684/5 400/692/3 388/682/3 +f 390/683/6 401/693/5 389/684/5 +f 391/694/7 402/695/6 390/683/6 +f 392/688/8 403/696/7 391/686/7 +f 393/687/9 404/697/8 392/688/8 +f 394/676/10 405/698/9 393/687/9 +f 395/678/11 406/699/10 394/676/10 +f 396/677/12 407/700/11 395/678/11 +f 385/679/13 408/701/12 396/677/12 +f 408/701/31 409/702/30 420/703/31 +f 398/690/29 409/702/30 397/689/30 +f 398/690/29 411/704/27 410/705/29 +f 400/692/28 411/704/27 399/691/27 +f 400/692/28 413/706/38 412/707/28 +f 402/695/37 413/706/38 401/693/38 +f 402/695/37 415/708/36 414/709/37 +f 403/696/36 416/710/35 415/711/36 +f 405/698/34 416/710/35 404/697/35 +f 405/698/34 418/712/33 417/713/34 +f 406/699/33 419/714/32 418/712/33 +f 408/701/31 419/714/32 407/700/32 +f 410/705/14 421/69/13 409/702/13 +f 411/704/4 422/94/14 410/705/14 +f 412/707/3 423/92/4 411/704/4 +f 413/706/5 424/90/3 412/707/3 +f 414/709/6 425/88/5 413/706/5 +f 415/708/7 426/86/6 414/709/6 +f 416/710/8 427/81/7 415/711/7 +f 417/713/9 428/78/8 416/710/8 +f 418/712/10 429/77/9 417/713/9 +f 419/714/11 430/75/10 418/712/10 +f 420/703/12 431/73/11 419/714/11 +f 409/702/13 432/71/12 420/703/12 +f 434/95/8 445/715/7 433/96/7 +f 435/257/9 446/716/8 434/93/8 +f 436/256/10 447/717/9 435/91/9 +f 437/255/11 448/718/10 436/89/10 +f 438/254/12 449/719/11 437/87/11 +f 439/253/13 450/720/12 438/85/12 +f 440/82/14 451/721/13 439/83/13 +f 441/79/4 452/722/14 440/80/14 +f 442/252/3 453/723/4 441/76/4 +f 443/251/5 454/724/3 442/74/3 +f 444/250/6 455/725/5 443/72/5 +f 433/249/7 456/726/6 444/70/6 +f 459/727/9 470/728/8 458/729/8 +f 458/729/8 469/730/7 457/731/7 +f 460/732/10 471/733/9 459/727/9 +f 461/734/11 472/735/10 460/732/10 +f 462/736/12 473/737/11 461/734/11 +f 463/738/13 474/739/12 462/736/12 +f 464/740/14 475/741/13 463/742/13 +f 465/743/4 476/744/14 464/740/14 +f 466/745/3 477/746/4 465/743/4 +f 467/747/5 478/748/3 466/745/3 +f 468/749/6 479/750/5 467/747/5 +f 457/731/7 480/751/6 468/749/6 +f 472/735/23 483/752/24 471/733/24 +f 471/733/24 482/753/25 470/728/25 +f 470/728/25 481/754/26 469/730/26 +f 469/730/26 492/755/15 480/751/15 +f 479/750/16 492/755/15 491/756/16 +f 479/750/16 490/757/17 478/748/17 +f 478/748/17 489/758/18 477/746/18 +f 476/744/19 489/758/18 488/759/19 +f 476/744/19 487/760/20 475/741/20 +f 475/761/20 486/762/21 474/739/21 +f 473/737/22 486/762/21 485/763/22 +f 473/737/22 484/764/23 472/735/23 +f 482/753/8 493/765/7 481/754/7 +f 483/752/9 494/766/8 482/753/8 +f 484/764/10 495/767/9 483/752/9 +f 485/763/11 496/768/10 484/764/10 +f 486/762/12 497/769/11 485/763/11 +f 487/770/13 498/771/12 486/762/12 +f 488/759/14 499/772/13 487/760/13 +f 489/758/4 500/773/14 488/759/14 +f 490/757/3 501/774/4 489/758/4 +f 491/756/5 502/775/3 490/757/3 +f 492/755/6 503/776/5 491/756/5 +f 481/754/7 504/777/6 492/755/6 +f 493/765/36 506/778/35 505/779/36 +f 493/765/36 516/780/37 504/777/37 +f 504/777/37 515/781/38 503/776/38 +f 503/776/38 514/782/28 502/775/28 +f 502/775/28 513/783/27 501/774/27 +f 501/774/27 512/784/29 500/773/29 +f 500/773/29 511/785/30 499/772/30 +f 499/786/30 510/787/31 498/771/31 +f 498/771/31 509/788/32 497/769/32 +f 496/768/33 509/788/32 508/789/33 +f 495/767/34 508/789/33 507/790/34 +f 494/766/35 507/790/34 506/778/35 +f 506/778/8 517/791/7 505/779/7 +f 507/790/9 518/792/8 506/778/8 +f 508/789/10 519/793/9 507/790/9 +f 509/788/11 520/794/10 508/789/10 +f 510/787/12 521/795/11 509/788/11 +f 511/796/13 522/797/12 510/787/12 +f 512/784/14 523/798/13 511/785/13 +f 513/783/4 524/799/14 512/784/14 +f 514/782/3 525/800/4 513/783/4 +f 515/781/5 526/801/3 514/782/3 +f 516/780/6 527/802/5 515/781/5 +f 505/779/7 528/803/6 516/780/6 +f 527/802/16 538/804/17 526/801/17 +f 527/802/16 540/805/15 539/806/16 +f 517/791/26 540/805/15 528/803/15 +f 518/792/25 529/807/26 517/791/26 +f 519/793/24 530/808/25 518/792/25 +f 519/793/24 532/809/23 531/810/24 +f 521/795/22 532/809/23 520/794/23 +f 521/795/22 534/811/21 533/812/22 +f 523/813/20 534/811/21 522/797/21 +f 524/799/19 535/814/20 523/798/20 +f 524/799/19 537/815/18 536/816/19 +f 526/801/17 537/815/18 525/800/18 +f 530/808/8 541/817/7 529/807/7 +f 531/810/9 542/818/8 530/808/8 +f 532/809/10 543/819/9 531/810/9 +f 533/812/11 544/820/10 532/809/10 +f 534/811/12 545/821/11 533/812/11 +f 535/822/13 546/823/12 534/811/12 +f 536/816/14 547/824/13 535/814/13 +f 537/815/4 548/825/14 536/816/14 +f 538/804/3 549/826/4 537/815/4 +f 539/806/5 550/827/3 538/804/3 +f 540/805/6 551/828/5 539/806/5 +f 529/807/7 552/829/6 540/805/6 +f 552/829/37 553/830/36 564/831/37 +f 541/817/36 554/832/35 553/830/36 +f 542/818/35 555/833/34 554/832/35 +f 544/820/33 555/833/34 543/819/34 +f 544/820/33 557/834/32 556/835/33 +f 546/823/31 557/834/32 545/821/32 +f 546/823/31 559/836/30 558/837/31 +f 547/824/30 560/838/29 559/839/30 +f 549/826/27 560/838/29 548/825/29 +f 549/826/27 562/840/28 561/841/27 +f 551/828/38 562/840/28 550/827/28 +f 552/829/37 563/842/38 551/828/38 +f 554/832/8 565/100/7 553/830/7 +f 555/833/9 566/124/8 554/832/8 +f 556/835/10 567/123/9 555/833/9 +f 557/834/11 568/121/10 556/835/10 +f 558/837/12 569/119/11 557/834/11 +f 559/836/13 570/117/12 558/837/12 +f 560/838/14 571/112/13 559/839/13 +f 561/841/4 572/111/14 560/838/14 +f 562/840/3 573/107/4 561/841/4 +f 563/842/5 574/106/3 562/840/3 +f 564/831/6 575/104/5 563/842/5 +f 553/830/7 576/102/6 564/831/6 +f 578/127/14 589/843/13 577/128/13 +f 579/125/4 590/844/14 578/126/14 +f 580/274/3 591/845/4 579/122/4 +f 581/273/5 592/846/3 580/120/3 +f 582/272/6 593/847/5 581/118/5 +f 583/271/7 594/848/6 582/116/6 +f 584/113/8 595/849/7 583/114/7 +f 585/270/9 596/850/8 584/110/8 +f 586/108/10 597/851/9 585/109/9 +f 587/269/11 598/852/10 586/105/10 +f 588/268/12 599/853/11 587/103/11 +f 577/267/13 600/854/12 588/101/12 +f 602/855/12 613/856/11 601/857/11 +f 603/858/13 614/859/12 602/855/12 +f 604/860/14 615/861/13 603/858/13 +f 605/862/4 616/863/14 604/860/14 +f 606/864/3 617/865/4 605/862/4 +f 607/866/5 618/867/3 606/864/3 +f 608/868/6 619/869/5 607/870/5 +f 609/871/7 620/872/6 608/868/6 +f 610/873/8 621/874/7 609/871/7 +f 611/875/9 622/876/8 610/873/8 +f 612/877/10 623/878/9 611/875/9 +f 601/857/11 624/879/10 612/877/10 +f 616/863/19 627/880/20 615/861/20 +f 615/861/20 626/881/21 614/859/21 +f 613/856/22 626/881/21 625/882/22 +f 613/856/22 636/883/23 624/879/23 +f 623/878/24 636/883/23 635/884/24 +f 623/878/24 634/885/25 622/876/25 +f 622/876/25 633/886/26 621/874/26 +f 620/872/15 633/886/26 632/887/15 +f 619/869/16 632/887/15 631/888/16 +f 618/867/17 631/889/16 630/890/17 +f 618/867/17 629/891/18 617/865/18 +f 617/865/18 628/892/19 616/863/19 +f 626/881/12 637/893/11 625/882/11 +f 627/880/13 638/894/12 626/881/12 +f 628/892/14 639/895/13 627/880/13 +f 629/891/4 640/896/14 628/892/14 +f 630/890/3 641/897/4 629/891/4 +f 631/889/5 642/898/3 630/890/3 +f 632/887/6 643/899/5 631/888/5 +f 633/886/7 644/900/6 632/887/6 +f 634/885/8 645/901/7 633/886/7 +f 635/884/9 646/902/8 634/885/8 +f 636/883/10 647/903/9 635/884/9 +f 625/882/11 648/904/10 636/883/10 +f 638/894/31 649/905/32 637/893/32 +f 637/893/32 660/906/33 648/904/33 +f 648/904/33 659/907/34 647/903/34 +f 647/903/34 658/908/35 646/902/35 +f 646/902/35 657/909/36 645/901/36 +f 645/901/36 656/910/37 644/900/37 +f 644/900/37 655/911/38 643/899/38 +f 643/912/38 654/913/28 642/898/28 +f 641/897/27 654/913/28 653/914/27 +f 640/896/29 653/914/27 652/915/29 +f 639/895/30 652/915/29 651/916/30 +f 638/894/31 651/916/30 650/917/31 +f 650/917/12 661/918/11 649/905/11 +f 651/916/13 662/919/12 650/917/12 +f 652/915/14 663/920/13 651/916/13 +f 653/914/4 664/921/14 652/915/14 +f 654/913/3 665/922/4 653/914/4 +f 655/923/5 666/924/3 654/913/3 +f 656/910/6 667/925/5 655/911/5 +f 657/909/7 668/926/6 656/910/6 +f 658/908/8 669/927/7 657/909/7 +f 659/907/9 670/928/8 658/908/8 +f 660/906/10 671/929/9 659/907/9 +f 649/905/11 672/930/10 660/906/10 +f 670/928/25 683/931/24 682/932/25 +f 671/929/24 684/933/23 683/931/24 +f 661/918/22 684/933/23 672/930/23 +f 662/919/21 673/934/22 661/918/22 +f 663/920/20 674/935/21 662/919/21 +f 664/921/19 675/936/20 663/920/20 +f 665/922/18 676/937/19 664/921/19 +f 665/922/18 678/938/17 677/939/18 +f 667/940/16 678/938/17 666/924/17 +f 668/926/15 679/941/16 667/925/16 +f 668/926/15 681/942/26 680/943/15 +f 670/928/25 681/942/26 669/927/26 +f 674/935/12 685/944/11 673/934/11 +f 675/936/13 686/945/12 674/935/12 +f 676/937/14 687/946/13 675/936/13 +f 677/939/4 688/947/14 676/937/14 +f 678/938/3 689/948/4 677/939/4 +f 679/949/5 690/950/3 678/938/3 +f 680/943/6 691/951/5 679/941/5 +f 681/942/7 692/952/6 680/943/6 +f 682/932/8 693/953/7 681/942/7 +f 683/931/9 694/954/8 682/932/8 +f 684/933/10 695/955/9 683/931/9 +f 673/934/11 696/956/10 684/933/10 +f 696/956/33 697/957/32 708/958/33 +f 685/944/32 698/959/31 697/957/32 +f 686/945/31 699/960/30 698/959/31 +f 688/947/29 699/960/30 687/946/30 +f 689/948/27 700/961/29 688/947/29 +f 689/948/27 702/962/28 701/963/27 +f 690/950/28 703/964/38 702/962/28 +f 692/952/37 703/965/38 691/951/38 +f 693/953/36 704/966/37 692/952/37 +f 694/954/35 705/967/36 693/953/36 +f 695/955/34 706/968/35 694/954/35 +f 696/956/33 707/969/34 695/955/34 +f 698/959/12 709/132/11 697/957/11 +f 699/960/13 710/158/12 698/959/12 +f 700/961/14 711/156/13 699/960/13 +f 701/963/4 712/154/14 700/961/14 +f 702/962/3 713/152/4 701/963/4 +f 703/964/5 714/150/3 702/962/3 +f 704/966/6 715/145/5 703/965/5 +f 705/967/7 716/142/6 704/966/6 +f 706/968/8 717/139/7 705/967/7 +f 707/969/9 718/138/8 706/968/8 +f 708/958/10 719/136/9 707/969/9 +f 697/957/11 720/134/10 708/958/10 +f 722/159/6 733/970/5 721/160/5 +f 723/291/7 734/971/6 722/157/6 +f 724/290/8 735/972/7 723/155/7 +f 725/289/9 736/973/8 724/153/8 +f 726/288/10 737/974/9 725/151/9 +f 727/287/11 738/975/10 726/149/10 +f 728/146/12 739/976/11 727/147/11 +f 729/143/13 740/977/12 728/144/12 +f 730/140/14 741/978/13 729/141/13 +f 731/286/4 742/979/14 730/137/14 +f 732/285/3 743/980/4 731/135/4 +f 721/284/5 744/981/3 732/133/3 +f 747/982/7 758/983/6 746/984/6 +f 746/984/6 757/985/5 745/986/5 +f 748/987/8 759/988/7 747/982/7 +f 749/989/9 760/990/8 748/987/8 +f 750/991/10 761/992/9 749/989/9 +f 751/993/11 762/994/10 750/991/10 +f 752/995/12 763/996/11 751/997/11 +f 753/998/13 764/999/12 752/995/12 +f 754/1000/14 765/1001/13 753/998/13 +f 755/1002/4 766/1003/14 754/1000/14 +f 756/1004/3 767/1005/4 755/1002/4 +f 745/986/5 768/1006/3 756/1004/3 +f 760/990/25 771/1007/26 759/988/26 +f 759/988/26 770/1008/15 758/983/15 +f 758/983/15 769/1009/16 757/985/16 +f 768/1006/17 769/1009/16 780/1010/17 +f 767/1005/18 780/1010/17 779/1011/18 +f 767/1005/18 778/1012/19 766/1003/19 +f 766/1003/19 777/1013/20 765/1001/20 +f 764/999/21 777/1013/20 776/1014/21 +f 763/996/22 776/1014/21 775/1015/22 +f 763/1016/22 774/1017/23 762/994/23 +f 761/992/24 774/1017/23 773/1018/24 +f 761/992/24 772/1019/25 760/990/25 +f 770/1008/6 781/1020/5 769/1009/5 +f 771/1007/7 782/1021/6 770/1008/6 +f 772/1019/8 783/1022/7 771/1007/7 +f 773/1018/9 784/1023/8 772/1019/8 +f 774/1017/10 785/1024/9 773/1018/9 +f 775/1025/11 786/1026/10 774/1017/10 +f 776/1014/12 787/1027/11 775/1015/11 +f 777/1013/13 788/1028/12 776/1014/12 +f 778/1012/14 789/1029/13 777/1013/13 +f 779/1011/4 790/1030/14 778/1012/14 +f 780/1010/3 791/1031/4 779/1011/4 +f 769/1009/5 792/1032/3 780/1010/3 +f 781/1020/38 794/1033/37 793/1034/38 +f 781/1020/38 804/1035/28 792/1032/28 +f 792/1032/28 803/1036/27 791/1031/27 +f 791/1031/27 802/1037/29 790/1030/29 +f 790/1030/29 801/1038/30 789/1029/30 +f 789/1029/30 800/1039/31 788/1028/31 +f 788/1028/31 799/1040/32 787/1027/32 +f 787/1041/32 798/1042/33 786/1026/33 +f 785/1024/34 798/1042/33 797/1043/34 +f 784/1023/35 797/1043/34 796/1044/35 +f 783/1022/36 796/1044/35 795/1045/36 +f 782/1021/37 795/1045/36 794/1033/37 +f 794/1033/6 805/1046/5 793/1034/5 +f 795/1045/7 806/1047/6 794/1033/6 +f 796/1044/8 807/1048/7 795/1045/7 +f 797/1043/9 808/1049/8 796/1044/8 +f 798/1042/10 809/1050/9 797/1043/9 +f 799/1051/11 810/1052/10 798/1042/10 +f 800/1039/12 811/1053/11 799/1040/11 +f 801/1038/13 812/1054/12 800/1039/12 +f 802/1037/14 813/1055/13 801/1038/13 +f 803/1036/4 814/1056/14 802/1037/14 +f 804/1035/3 815/1057/4 803/1036/4 +f 793/1034/5 816/1058/3 804/1035/3 +f 814/1056/19 827/1059/18 826/1060/19 +f 815/1057/18 828/1061/17 827/1059/18 +f 805/1046/16 828/1061/17 816/1058/17 +f 806/1047/15 817/1062/16 805/1046/16 +f 807/1048/26 818/1063/15 806/1047/15 +f 808/1049/25 819/1064/26 807/1048/26 +f 809/1050/24 820/1065/25 808/1049/25 +f 810/1052/23 821/1066/24 809/1050/24 +f 811/1067/22 822/1068/23 810/1052/23 +f 812/1054/21 823/1069/22 811/1053/22 +f 812/1054/21 825/1070/20 824/1071/21 +f 814/1056/19 825/1070/20 813/1055/20 +f 818/1063/6 829/1072/5 817/1062/5 +f 819/1064/7 830/1073/6 818/1063/6 +f 820/1065/8 831/1074/7 819/1064/7 +f 821/1066/9 832/1075/8 820/1065/8 +f 822/1068/10 833/1076/9 821/1066/9 +f 823/1077/11 834/1078/10 822/1068/10 +f 824/1071/12 835/1079/11 823/1069/11 +f 825/1070/13 836/1080/12 824/1071/12 +f 826/1060/14 837/1081/13 825/1070/13 +f 827/1059/4 838/1082/14 826/1060/14 +f 828/1061/3 839/1083/4 827/1059/4 +f 817/1062/5 840/1084/3 828/1061/3 +f 840/1084/28 841/1085/38 852/1086/28 +f 829/1072/38 842/1087/37 841/1085/38 +f 830/1073/37 843/1088/36 842/1087/37 +f 831/1074/36 844/1089/35 843/1088/36 +f 832/1075/35 845/1090/34 844/1089/35 +f 834/1078/33 845/1090/34 833/1076/34 +f 835/1091/32 846/1092/33 834/1078/33 +f 836/1080/31 847/1093/32 835/1079/32 +f 837/1081/30 848/1094/31 836/1080/31 +f 837/1081/30 850/1095/29 849/1096/30 +f 839/1083/27 850/1095/29 838/1082/29 +f 839/1083/27 852/1086/28 851/1097/27 +f 842/1087/6 853/164/5 841/1085/5 +f 843/1088/7 854/188/6 842/1087/6 +f 844/1089/8 855/187/7 843/1088/7 +f 845/1090/9 856/185/8 844/1089/8 +f 846/1092/10 857/183/9 845/1090/9 +f 847/1098/11 858/181/10 846/1092/10 +f 848/1094/12 859/176/11 847/1093/11 +f 849/1096/13 860/175/12 848/1094/12 +f 850/1095/14 861/171/13 849/1096/13 +f 851/1097/4 862/170/14 850/1095/14 +f 852/1086/3 863/168/4 851/1097/4 +f 841/1085/5 864/166/3 852/1086/3 +f 866/309/12 877/1099/11 865/191/11 +f 867/189/13 878/1100/12 866/190/12 +f 868/308/14 879/1101/13 867/186/13 +f 869/307/4 880/1102/14 868/184/14 +f 870/306/3 881/1103/4 869/182/4 +f 871/305/5 882/1104/3 870/180/3 +f 872/177/6 883/1105/5 871/178/5 +f 873/304/7 884/1106/6 872/174/6 +f 874/172/8 885/1107/7 873/173/7 +f 875/303/9 886/1108/8 874/169/8 +f 876/302/10 887/1109/9 875/167/9 +f 865/301/11 888/1110/10 876/165/10 +f 2/319/3 14/323/3 13/320/4 +f 3/322/5 15/325/5 14/323/3 +f 4/324/6 16/327/6 15/325/5 +f 5/326/7 17/329/7 16/327/6 +f 6/328/8 18/331/8 17/329/7 +f 7/330/9 19/353/9 18/331/8 +f 8/332/10 20/336/10 19/333/9 +f 9/335/11 21/338/11 20/336/10 +f 10/337/12 22/340/12 21/338/11 +f 11/339/13 23/342/13 22/340/12 +f 12/341/14 24/343/14 23/342/13 +f 1/321/4 13/320/4 24/343/14 +f 16/327/15 28/356/15 27/344/16 +f 15/325/16 27/344/16 26/345/17 +f 14/323/17 26/345/17 25/346/18 +f 24/343/19 13/320/18 25/346/18 +f 23/342/20 24/343/19 36/347/19 +f 22/340/21 23/342/20 35/348/20 +f 21/338/22 22/340/21 34/349/21 +f 20/336/23 21/338/22 33/350/22 +f 19/333/24 20/336/23 32/351/23 +f 19/353/24 31/362/24 30/354/25 +f 17/329/26 18/331/25 30/354/25 +f 17/329/26 29/355/26 28/356/15 +f 26/345/3 38/358/3 37/357/4 +f 27/344/5 39/359/5 38/358/3 +f 28/356/6 40/360/6 39/359/5 +f 29/355/7 41/361/7 40/360/6 +f 30/354/8 42/363/8 41/361/7 +f 31/362/9 43/1111/9 42/363/8 +f 32/351/10 44/365/10 43/364/9 +f 33/350/11 45/366/11 44/365/10 +f 34/349/12 46/367/12 45/366/11 +f 35/348/13 47/368/13 46/367/12 +f 36/347/14 48/369/14 47/368/13 +f 25/346/4 37/357/4 48/369/14 +f 37/357/27 38/358/28 50/370/28 +f 37/357/27 49/371/27 60/372/29 +f 48/369/29 60/372/29 59/373/30 +f 47/368/30 59/373/30 58/374/31 +f 46/367/31 58/374/31 57/375/32 +f 45/366/32 57/375/32 56/376/33 +f 44/365/33 56/376/33 55/377/34 +f 42/363/35 43/1111/34 55/378/34 +f 42/363/35 54/379/35 53/380/36 +f 40/360/37 41/361/36 53/380/36 +f 39/359/38 40/360/37 52/381/37 +f 38/358/28 39/359/38 51/382/38 +f 50/370/3 62/384/3 61/383/4 +f 51/382/5 63/385/5 62/384/3 +f 52/381/6 64/386/6 63/385/5 +f 53/380/7 65/387/7 64/386/6 +f 54/379/8 66/388/8 65/387/7 +f 55/378/9 67/403/9 66/388/8 +f 56/376/10 68/390/10 67/389/9 +f 57/375/11 69/391/11 68/390/10 +f 58/374/12 70/392/12 69/391/11 +f 59/373/13 71/393/13 70/392/12 +f 60/372/14 72/394/14 71/393/13 +f 49/371/4 61/383/4 72/394/14 +f 70/392/21 71/393/20 83/395/20 +f 71/393/20 72/394/19 84/397/19 +f 61/383/18 73/398/18 84/397/19 +f 62/384/17 74/399/17 73/398/18 +f 63/385/16 75/400/16 74/399/17 +f 64/386/15 76/402/15 75/400/16 +f 64/386/15 65/387/26 77/401/26 +f 66/388/25 78/404/25 77/401/26 +f 67/403/24 79/413/24 78/404/25 +f 68/390/23 80/407/23 79/405/24 +f 68/390/23 69/391/22 81/406/22 +f 69/391/22 70/392/21 82/396/21 +f 74/399/3 86/409/3 85/408/4 +f 75/400/5 87/410/5 86/409/3 +f 76/402/6 88/411/6 87/410/5 +f 77/401/7 89/412/7 88/411/6 +f 78/404/8 90/414/8 89/412/7 +f 79/413/9 91/428/9 90/414/8 +f 80/407/10 92/416/10 91/415/9 +f 81/406/11 93/417/11 92/416/10 +f 82/396/12 94/418/12 93/417/11 +f 83/395/13 95/419/13 94/418/12 +f 84/397/14 96/420/14 95/419/13 +f 73/398/4 85/408/4 96/420/14 +f 96/420/29 85/408/27 97/421/27 +f 86/409/28 98/423/28 97/421/27 +f 87/410/38 99/425/38 98/423/28 +f 87/410/38 88/411/37 100/424/37 +f 89/412/36 101/427/36 100/424/37 +f 89/412/36 90/414/35 102/426/35 +f 91/428/34 103/434/34 102/426/35 +f 91/415/34 92/416/33 104/429/33 +f 93/417/32 105/431/32 104/429/33 +f 94/418/31 106/432/31 105/431/32 +f 95/419/30 107/433/30 106/432/31 +f 95/419/30 96/420/29 108/422/29 +f 98/423/3 110/24/3 109/1/4 +f 99/425/5 111/23/5 110/24/3 +f 100/424/6 112/21/6 111/23/5 +f 101/427/7 113/19/7 112/21/6 +f 102/426/8 114/17/8 113/19/7 +f 103/434/9 115/15/9 114/17/8 +f 104/429/10 116/11/10 115/12/9 +f 105/431/11 117/9/11 116/11/10 +f 106/432/12 118/7/12 117/9/11 +f 107/433/13 119/5/13 118/7/12 +f 108/422/14 120/3/14 119/5/13 +f 97/421/4 109/1/4 120/3/14 +f 122/27/10 134/1112/10 133/435/9 +f 123/25/11 135/1113/11 134/436/10 +f 124/203/12 136/1114/12 135/437/11 +f 125/202/13 137/1115/13 136/438/12 +f 126/201/14 138/1116/14 137/439/13 +f 127/200/4 139/1117/4 138/440/14 +f 128/13/3 140/1118/3 139/441/4 +f 129/199/5 141/1119/5 140/442/3 +f 130/198/6 142/1120/6 141/443/5 +f 131/197/7 143/1121/7 142/444/6 +f 132/196/8 144/1122/8 143/445/7 +f 121/195/9 133/1123/9 144/446/8 +f 159/447/5 160/456/6 148/448/6 +f 166/450/12 167/458/13 155/451/13 +f 163/453/9 164/463/10 152/454/10 +f 160/456/6 161/465/7 149/457/7 +f 167/458/13 168/467/14 156/459/14 +f 157/460/4 158/468/3 146/461/3 +f 164/463/10 165/469/11 153/464/11 +f 161/465/7 162/470/8 150/466/8 +f 168/467/14 157/460/4 145/462/4 +f 158/468/3 159/447/5 147/449/5 +f 165/469/11 166/450/12 154/452/12 +f 162/470/8 163/1124/9 151/471/9 +f 171/472/11 183/478/11 182/473/10 +f 170/474/10 182/473/10 181/475/9 +f 172/477/12 184/480/12 183/478/11 +f 173/479/13 185/482/13 184/480/12 +f 174/481/14 186/484/14 185/482/13 +f 175/483/4 187/506/4 186/484/14 +f 176/485/3 188/489/3 187/486/4 +f 177/488/5 189/491/5 188/489/3 +f 178/490/6 190/493/6 189/491/5 +f 179/492/7 191/495/7 190/493/6 +f 180/494/8 192/496/8 191/495/7 +f 169/476/9 181/475/9 192/496/8 +f 184/480/21 196/509/21 195/497/22 +f 183/478/22 195/497/22 194/498/23 +f 182/473/23 194/498/23 193/499/24 +f 192/496/25 181/475/24 193/499/24 +f 191/495/26 192/496/25 204/500/25 +f 190/493/15 191/495/26 203/501/26 +f 190/493/15 202/502/15 201/503/16 +f 188/489/17 189/491/16 201/503/16 +f 187/486/18 188/489/17 200/504/17 +f 187/506/18 199/515/18 198/507/19 +f 185/482/20 186/484/19 198/507/19 +f 185/482/20 197/508/20 196/509/21 +f 194/498/10 206/511/10 205/510/9 +f 195/497/11 207/512/11 206/511/10 +f 196/509/12 208/513/12 207/512/11 +f 197/508/13 209/514/13 208/513/12 +f 198/507/14 210/516/14 209/514/13 +f 199/515/4 211/1125/4 210/516/14 +f 200/504/3 212/518/3 211/517/4 +f 201/503/5 213/519/5 212/518/3 +f 202/502/6 214/520/6 213/519/5 +f 203/501/7 215/521/7 214/520/6 +f 204/500/8 216/522/8 215/521/7 +f 193/499/9 205/510/9 216/522/8 +f 205/510/34 206/511/33 218/523/33 +f 205/510/34 217/524/34 228/525/35 +f 216/522/35 228/525/35 227/526/36 +f 215/521/36 227/526/36 226/527/37 +f 214/520/37 226/527/37 225/528/38 +f 213/519/38 225/528/38 224/529/28 +f 212/518/28 224/529/28 223/530/27 +f 210/516/29 211/1125/27 223/531/27 +f 210/516/29 222/532/29 221/533/30 +f 208/513/31 209/514/30 221/533/30 +f 207/512/32 208/513/31 220/534/31 +f 206/511/33 207/512/32 219/535/32 +f 218/523/10 230/537/10 229/536/9 +f 219/535/11 231/538/11 230/537/10 +f 220/534/12 232/539/12 231/538/11 +f 221/533/13 233/540/13 232/539/12 +f 222/532/14 234/541/14 233/540/13 +f 223/531/4 235/556/4 234/541/14 +f 224/529/3 236/543/3 235/542/4 +f 225/528/5 237/544/5 236/543/3 +f 226/527/6 238/545/6 237/544/5 +f 227/526/7 239/546/7 238/545/6 +f 228/525/8 240/547/8 239/546/7 +f 217/524/9 229/536/9 240/547/8 +f 238/545/15 239/546/26 251/548/26 +f 239/546/26 240/547/25 252/550/25 +f 240/547/25 229/536/24 241/551/24 +f 229/536/24 230/537/23 242/552/23 +f 230/537/23 231/538/22 243/553/22 +f 232/539/21 244/554/21 243/553/22 +f 233/540/20 245/555/20 244/554/21 +f 234/541/19 246/557/19 245/555/20 +f 235/556/18 247/566/18 246/557/19 +f 236/543/17 248/560/17 247/558/18 +f 236/543/17 237/544/16 249/559/16 +f 237/544/16 238/545/15 250/549/15 +f 242/552/10 254/562/10 253/561/9 +f 243/553/11 255/563/11 254/562/10 +f 244/554/12 256/564/12 255/563/11 +f 245/555/13 257/565/13 256/564/12 +f 246/557/14 258/567/14 257/565/13 +f 247/566/4 259/581/4 258/567/14 +f 248/560/3 260/569/3 259/568/4 +f 249/559/5 261/570/5 260/569/3 +f 250/549/6 262/571/6 261/570/5 +f 251/548/7 263/572/7 262/571/6 +f 252/550/8 264/573/8 263/572/7 +f 241/551/9 253/561/9 264/573/8 +f 264/573/35 253/561/34 265/574/34 +f 254/562/33 266/576/33 265/574/34 +f 255/563/32 267/578/32 266/576/33 +f 255/563/32 256/564/31 268/577/31 +f 257/565/30 269/580/30 268/577/31 +f 257/565/30 258/567/29 270/579/29 +f 259/581/27 271/587/27 270/579/29 +f 260/569/28 272/583/28 271/582/27 +f 261/570/38 273/584/38 272/583/28 +f 262/571/37 274/585/37 273/584/38 +f 263/572/36 275/586/36 274/585/37 +f 264/573/35 276/575/35 275/586/36 +f 266/576/10 278/61/10 277/38/9 +f 267/578/11 279/60/11 278/61/10 +f 268/577/12 280/58/12 279/60/11 +f 269/580/13 281/56/13 280/58/12 +f 270/579/14 282/54/14 281/56/13 +f 271/587/4 283/52/4 282/54/14 +f 272/583/3 284/48/3 283/49/4 +f 273/584/5 285/46/5 284/48/3 +f 274/585/6 286/44/6 285/46/5 +f 275/586/7 287/42/7 286/44/6 +f 276/575/8 288/40/8 287/42/7 +f 265/574/9 277/38/9 288/40/8 +f 290/64/3 302/1126/3 301/588/4 +f 291/62/5 303/1127/5 302/589/3 +f 292/239/6 304/1128/6 303/590/5 +f 293/238/7 305/1129/7 304/591/6 +f 294/237/8 306/1130/8 305/592/7 +f 295/236/9 307/1131/9 306/593/8 +f 296/50/10 308/1132/10 307/594/9 +f 297/235/11 309/1133/11 308/595/10 +f 298/234/12 310/1134/12 309/596/11 +f 299/233/13 311/1135/13 310/597/12 +f 300/232/14 312/1136/14 311/598/13 +f 289/231/4 301/1137/4 312/599/14 +f 314/600/14 326/604/14 325/601/13 +f 315/603/4 327/606/4 326/604/14 +f 316/605/3 328/608/3 327/606/4 +f 317/607/5 329/610/5 328/608/3 +f 318/609/6 330/612/6 329/610/5 +f 319/611/7 331/634/7 330/612/6 +f 320/613/8 332/617/8 331/614/7 +f 321/616/9 333/619/9 332/617/8 +f 322/618/10 334/621/10 333/619/9 +f 323/620/11 335/623/11 334/621/10 +f 324/622/12 336/624/12 335/623/11 +f 313/602/13 325/601/13 336/624/12 +f 328/608/17 340/637/17 339/625/18 +f 327/606/18 339/625/18 338/626/19 +f 326/604/19 338/626/19 337/627/20 +f 336/624/21 325/601/20 337/627/20 +f 335/623/22 336/624/21 348/628/21 +f 334/621/23 335/623/22 347/629/22 +f 333/619/24 334/621/23 346/630/23 +f 332/617/25 333/619/24 345/631/24 +f 331/614/26 332/617/25 344/632/25 +f 331/634/26 343/643/26 342/635/15 +f 330/612/15 342/635/15 341/636/16 +f 329/610/16 341/636/16 340/637/17 +f 338/626/14 350/639/14 349/638/13 +f 339/625/4 351/640/4 350/639/14 +f 340/637/3 352/641/3 351/640/4 +f 341/636/5 353/642/5 352/641/3 +f 342/635/6 354/644/6 353/642/5 +f 343/643/7 355/1138/7 354/644/6 +f 344/632/8 356/646/8 355/645/7 +f 345/631/9 357/647/9 356/646/8 +f 346/630/10 358/648/10 357/647/9 +f 347/629/11 359/649/11 358/648/10 +f 348/628/12 360/650/12 359/649/11 +f 337/627/13 349/638/13 360/650/12 +f 349/638/30 350/639/29 362/651/29 +f 349/638/30 361/652/30 372/653/31 +f 360/650/31 372/653/31 371/654/32 +f 359/649/32 371/654/32 370/655/33 +f 358/648/33 370/655/33 369/656/34 +f 357/647/34 369/656/34 368/657/35 +f 356/646/35 368/657/35 367/658/36 +f 354/644/37 355/1138/36 367/659/36 +f 354/644/37 366/660/37 365/661/38 +f 352/641/28 353/642/38 365/661/38 +f 351/640/27 352/641/28 364/662/28 +f 350/639/29 351/640/27 363/663/27 +f 362/651/14 374/665/14 373/664/13 +f 363/663/4 375/666/4 374/665/14 +f 364/662/3 376/667/3 375/666/4 +f 365/661/5 377/668/5 376/667/3 +f 366/660/6 378/669/6 377/668/5 +f 367/659/7 379/685/7 378/669/6 +f 368/657/8 380/671/8 379/670/7 +f 369/656/9 381/672/9 380/671/8 +f 370/655/10 382/673/10 381/672/9 +f 371/654/11 383/674/11 382/673/10 +f 372/653/12 384/675/12 383/674/11 +f 361/652/13 373/664/13 384/675/12 +f 383/674/22 395/678/22 394/676/23 +f 383/674/22 384/675/21 396/677/21 +f 373/664/20 385/679/20 396/677/21 +f 374/665/19 386/680/19 385/679/20 +f 375/666/18 387/681/18 386/680/19 +f 376/667/17 388/682/17 387/681/18 +f 377/668/16 389/684/16 388/682/17 +f 377/668/16 378/669/15 390/683/15 +f 379/685/26 391/694/26 390/683/15 +f 380/671/25 392/688/25 391/686/26 +f 380/671/25 381/672/24 393/687/24 +f 382/673/23 394/676/23 393/687/24 +f 386/680/14 398/690/14 397/689/13 +f 387/681/4 399/691/4 398/690/14 +f 388/682/3 400/692/3 399/691/4 +f 389/684/5 401/693/5 400/692/3 +f 390/683/6 402/695/6 401/693/5 +f 391/694/7 403/1139/7 402/695/6 +f 392/688/8 404/697/8 403/696/7 +f 393/687/9 405/698/9 404/697/8 +f 394/676/10 406/699/10 405/698/9 +f 395/678/11 407/700/11 406/699/10 +f 396/677/12 408/701/12 407/700/11 +f 385/679/13 397/689/13 408/701/12 +f 408/701/31 397/689/30 409/702/30 +f 398/690/29 410/705/29 409/702/30 +f 398/690/29 399/691/27 411/704/27 +f 400/692/28 412/707/28 411/704/27 +f 400/692/28 401/693/38 413/706/38 +f 402/695/37 414/709/37 413/706/38 +f 402/695/37 403/1139/36 415/708/36 +f 403/696/36 404/697/35 416/710/35 +f 405/698/34 417/713/34 416/710/35 +f 405/698/34 406/699/33 418/712/33 +f 406/699/33 407/700/32 419/714/32 +f 408/701/31 420/703/31 419/714/32 +f 410/705/14 422/94/14 421/69/13 +f 411/704/4 423/92/4 422/94/14 +f 412/707/3 424/90/3 423/92/4 +f 413/706/5 425/88/5 424/90/3 +f 414/709/6 426/86/6 425/88/5 +f 415/708/7 427/84/7 426/86/6 +f 416/710/8 428/78/8 427/81/7 +f 417/713/9 429/77/9 428/78/8 +f 418/712/10 430/75/10 429/77/9 +f 419/714/11 431/73/11 430/75/10 +f 420/703/12 432/71/12 431/73/11 +f 409/702/13 421/69/13 432/71/12 +f 434/95/8 446/1140/8 445/715/7 +f 435/257/9 447/1141/9 446/716/8 +f 436/256/10 448/1142/10 447/717/9 +f 437/255/11 449/1143/11 448/718/10 +f 438/254/12 450/1144/12 449/719/11 +f 439/253/13 451/1145/13 450/720/12 +f 440/82/14 452/1146/14 451/721/13 +f 441/79/4 453/1147/4 452/722/14 +f 442/252/3 454/1148/3 453/723/4 +f 443/251/5 455/1149/5 454/724/3 +f 444/250/6 456/1150/6 455/725/5 +f 433/249/7 445/1151/7 456/726/6 +f 459/727/9 471/733/9 470/728/8 +f 458/729/8 470/728/8 469/730/7 +f 460/732/10 472/735/10 471/733/9 +f 461/734/11 473/737/11 472/735/10 +f 462/736/12 474/739/12 473/737/11 +f 463/738/13 475/761/13 474/739/12 +f 464/740/14 476/744/14 475/741/13 +f 465/743/4 477/746/4 476/744/14 +f 466/745/3 478/748/3 477/746/4 +f 467/747/5 479/750/5 478/748/3 +f 468/749/6 480/751/6 479/750/5 +f 457/731/7 469/730/7 480/751/6 +f 472/735/23 484/764/23 483/752/24 +f 471/733/24 483/752/24 482/753/25 +f 470/728/25 482/753/25 481/754/26 +f 469/730/26 481/754/26 492/755/15 +f 479/750/16 480/751/15 492/755/15 +f 479/750/16 491/756/16 490/757/17 +f 478/748/17 490/757/17 489/758/18 +f 476/744/19 477/746/18 489/758/18 +f 476/744/19 488/759/19 487/760/20 +f 475/761/20 487/770/20 486/762/21 +f 473/737/22 474/739/21 486/762/21 +f 473/737/22 485/763/22 484/764/23 +f 482/753/8 494/766/8 493/765/7 +f 483/752/9 495/767/9 494/766/8 +f 484/764/10 496/768/10 495/767/9 +f 485/763/11 497/769/11 496/768/10 +f 486/762/12 498/771/12 497/769/11 +f 487/770/13 499/786/13 498/771/12 +f 488/759/14 500/773/14 499/772/13 +f 489/758/4 501/774/4 500/773/14 +f 490/757/3 502/775/3 501/774/4 +f 491/756/5 503/776/5 502/775/3 +f 492/755/6 504/777/6 503/776/5 +f 481/754/7 493/765/7 504/777/6 +f 493/765/36 494/766/35 506/778/35 +f 493/765/36 505/779/36 516/780/37 +f 504/777/37 516/780/37 515/781/38 +f 503/776/38 515/781/38 514/782/28 +f 502/775/28 514/782/28 513/783/27 +f 501/774/27 513/783/27 512/784/29 +f 500/773/29 512/784/29 511/785/30 +f 499/786/30 511/796/30 510/787/31 +f 498/771/31 510/787/31 509/788/32 +f 496/768/33 497/769/32 509/788/32 +f 495/767/34 496/768/33 508/789/33 +f 494/766/35 495/767/34 507/790/34 +f 506/778/8 518/792/8 517/791/7 +f 507/790/9 519/793/9 518/792/8 +f 508/789/10 520/794/10 519/793/9 +f 509/788/11 521/795/11 520/794/10 +f 510/787/12 522/797/12 521/795/11 +f 511/796/13 523/813/13 522/797/12 +f 512/784/14 524/799/14 523/798/13 +f 513/783/4 525/800/4 524/799/14 +f 514/782/3 526/801/3 525/800/4 +f 515/781/5 527/802/5 526/801/3 +f 516/780/6 528/803/6 527/802/5 +f 505/779/7 517/791/7 528/803/6 +f 527/802/16 539/806/16 538/804/17 +f 527/802/16 528/803/15 540/805/15 +f 517/791/26 529/807/26 540/805/15 +f 518/792/25 530/808/25 529/807/26 +f 519/793/24 531/810/24 530/808/25 +f 519/793/24 520/794/23 532/809/23 +f 521/795/22 533/812/22 532/809/23 +f 521/795/22 522/797/21 534/811/21 +f 523/813/20 535/822/20 534/811/21 +f 524/799/19 536/816/19 535/814/20 +f 524/799/19 525/800/18 537/815/18 +f 526/801/17 538/804/17 537/815/18 +f 530/808/8 542/818/8 541/817/7 +f 531/810/9 543/819/9 542/818/8 +f 532/809/10 544/820/10 543/819/9 +f 533/812/11 545/821/11 544/820/10 +f 534/811/12 546/823/12 545/821/11 +f 535/822/13 547/1152/13 546/823/12 +f 536/816/14 548/825/14 547/824/13 +f 537/815/4 549/826/4 548/825/14 +f 538/804/3 550/827/3 549/826/4 +f 539/806/5 551/828/5 550/827/3 +f 540/805/6 552/829/6 551/828/5 +f 529/807/7 541/817/7 552/829/6 +f 552/829/37 541/817/36 553/830/36 +f 541/817/36 542/818/35 554/832/35 +f 542/818/35 543/819/34 555/833/34 +f 544/820/33 556/835/33 555/833/34 +f 544/820/33 545/821/32 557/834/32 +f 546/823/31 558/837/31 557/834/32 +f 546/823/31 547/1152/30 559/836/30 +f 547/824/30 548/825/29 560/838/29 +f 549/826/27 561/841/27 560/838/29 +f 549/826/27 550/827/28 562/840/28 +f 551/828/38 563/842/38 562/840/28 +f 552/829/37 564/831/37 563/842/38 +f 554/832/8 566/124/8 565/100/7 +f 555/833/9 567/123/9 566/124/8 +f 556/835/10 568/121/10 567/123/9 +f 557/834/11 569/119/11 568/121/10 +f 558/837/12 570/117/12 569/119/11 +f 559/836/13 571/115/13 570/117/12 +f 560/838/14 572/111/14 571/112/13 +f 561/841/4 573/107/4 572/111/14 +f 562/840/3 574/106/3 573/107/4 +f 563/842/5 575/104/5 574/106/3 +f 564/831/6 576/102/6 575/104/5 +f 553/830/7 565/100/7 576/102/6 +f 578/127/14 590/1153/14 589/843/13 +f 579/125/4 591/1154/4 590/844/14 +f 580/274/3 592/1155/3 591/845/4 +f 581/273/5 593/1156/5 592/846/3 +f 582/272/6 594/1157/6 593/847/5 +f 583/271/7 595/1158/7 594/848/6 +f 584/113/8 596/1159/8 595/849/7 +f 585/270/9 597/1160/9 596/850/8 +f 586/108/10 598/1161/10 597/851/9 +f 587/269/11 599/1162/11 598/852/10 +f 588/268/12 600/1163/12 599/853/11 +f 577/267/13 589/1164/13 600/854/12 +f 602/855/12 614/859/12 613/856/11 +f 603/858/13 615/861/13 614/859/12 +f 604/860/14 616/863/14 615/861/13 +f 605/862/4 617/865/4 616/863/14 +f 606/864/3 618/867/3 617/865/4 +f 607/866/5 619/1165/5 618/867/3 +f 608/868/6 620/872/6 619/869/5 +f 609/871/7 621/874/7 620/872/6 +f 610/873/8 622/876/8 621/874/7 +f 611/875/9 623/878/9 622/876/8 +f 612/877/10 624/879/10 623/878/9 +f 601/857/11 613/856/11 624/879/10 +f 616/863/19 628/892/19 627/880/20 +f 615/861/20 627/880/20 626/881/21 +f 613/856/22 614/859/21 626/881/21 +f 613/856/22 625/882/22 636/883/23 +f 623/878/24 624/879/23 636/883/23 +f 623/878/24 635/884/24 634/885/25 +f 622/876/25 634/885/25 633/886/26 +f 620/872/15 621/874/26 633/886/26 +f 619/869/16 620/872/15 632/887/15 +f 618/867/17 619/1165/16 631/889/16 +f 618/867/17 630/890/17 629/891/18 +f 617/865/18 629/891/18 628/892/19 +f 626/881/12 638/894/12 637/893/11 +f 627/880/13 639/895/13 638/894/12 +f 628/892/14 640/896/14 639/895/13 +f 629/891/4 641/897/4 640/896/14 +f 630/890/3 642/898/3 641/897/4 +f 631/889/5 643/912/5 642/898/3 +f 632/887/6 644/900/6 643/899/5 +f 633/886/7 645/901/7 644/900/6 +f 634/885/8 646/902/8 645/901/7 +f 635/884/9 647/903/9 646/902/8 +f 636/883/10 648/904/10 647/903/9 +f 625/882/11 637/893/11 648/904/10 +f 638/894/31 650/917/31 649/905/32 +f 637/893/32 649/905/32 660/906/33 +f 648/904/33 660/906/33 659/907/34 +f 647/903/34 659/907/34 658/908/35 +f 646/902/35 658/908/35 657/909/36 +f 645/901/36 657/909/36 656/910/37 +f 644/900/37 656/910/37 655/911/38 +f 643/912/38 655/923/38 654/913/28 +f 641/897/27 642/898/28 654/913/28 +f 640/896/29 641/897/27 653/914/27 +f 639/895/30 640/896/29 652/915/29 +f 638/894/31 639/895/30 651/916/30 +f 650/917/12 662/919/12 661/918/11 +f 651/916/13 663/920/13 662/919/12 +f 652/915/14 664/921/14 663/920/13 +f 653/914/4 665/922/4 664/921/14 +f 654/913/3 666/924/3 665/922/4 +f 655/923/5 667/940/5 666/924/3 +f 656/910/6 668/926/6 667/925/5 +f 657/909/7 669/927/7 668/926/6 +f 658/908/8 670/928/8 669/927/7 +f 659/907/9 671/929/9 670/928/8 +f 660/906/10 672/930/10 671/929/9 +f 649/905/11 661/918/11 672/930/10 +f 670/928/25 671/929/24 683/931/24 +f 671/929/24 672/930/23 684/933/23 +f 661/918/22 673/934/22 684/933/23 +f 662/919/21 674/935/21 673/934/22 +f 663/920/20 675/936/20 674/935/21 +f 664/921/19 676/937/19 675/936/20 +f 665/922/18 677/939/18 676/937/19 +f 665/922/18 666/924/17 678/938/17 +f 667/940/16 679/949/16 678/938/17 +f 668/926/15 680/943/15 679/941/16 +f 668/926/15 669/927/26 681/942/26 +f 670/928/25 682/932/25 681/942/26 +f 674/935/12 686/945/12 685/944/11 +f 675/936/13 687/946/13 686/945/12 +f 676/937/14 688/947/14 687/946/13 +f 677/939/4 689/948/4 688/947/14 +f 678/938/3 690/950/3 689/948/4 +f 679/949/5 691/1166/5 690/950/3 +f 680/943/6 692/952/6 691/951/5 +f 681/942/7 693/953/7 692/952/6 +f 682/932/8 694/954/8 693/953/7 +f 683/931/9 695/955/9 694/954/8 +f 684/933/10 696/956/10 695/955/9 +f 673/934/11 685/944/11 696/956/10 +f 696/956/33 685/944/32 697/957/32 +f 685/944/32 686/945/31 698/959/31 +f 686/945/31 687/946/30 699/960/30 +f 688/947/29 700/961/29 699/960/30 +f 689/948/27 701/963/27 700/961/29 +f 689/948/27 690/950/28 702/962/28 +f 690/950/28 691/1166/38 703/964/38 +f 692/952/37 704/966/37 703/965/38 +f 693/953/36 705/967/36 704/966/37 +f 694/954/35 706/968/35 705/967/36 +f 695/955/34 707/969/34 706/968/35 +f 696/956/33 708/958/33 707/969/34 +f 698/959/12 710/158/12 709/132/11 +f 699/960/13 711/156/13 710/158/12 +f 700/961/14 712/154/14 711/156/13 +f 701/963/4 713/152/4 712/154/14 +f 702/962/3 714/150/3 713/152/4 +f 703/964/5 715/148/5 714/150/3 +f 704/966/6 716/142/6 715/145/5 +f 705/967/7 717/139/7 716/142/6 +f 706/968/8 718/138/8 717/139/7 +f 707/969/9 719/136/9 718/138/8 +f 708/958/10 720/134/10 719/136/9 +f 697/957/11 709/132/11 720/134/10 +f 722/159/6 734/1167/6 733/970/5 +f 723/291/7 735/1168/7 734/971/6 +f 724/290/8 736/1169/8 735/972/7 +f 725/289/9 737/1170/9 736/973/8 +f 726/288/10 738/1171/10 737/974/9 +f 727/287/11 739/1172/11 738/975/10 +f 728/146/12 740/1173/12 739/976/11 +f 729/143/13 741/1174/13 740/977/12 +f 730/140/14 742/1175/14 741/978/13 +f 731/286/4 743/1176/4 742/979/14 +f 732/285/3 744/1177/3 743/980/4 +f 721/284/5 733/1178/5 744/981/3 +f 747/982/7 759/988/7 758/983/6 +f 746/984/6 758/983/6 757/985/5 +f 748/987/8 760/990/8 759/988/7 +f 749/989/9 761/992/9 760/990/8 +f 750/991/10 762/994/10 761/992/9 +f 751/993/11 763/1016/11 762/994/10 +f 752/995/12 764/999/12 763/996/11 +f 753/998/13 765/1001/13 764/999/12 +f 754/1000/14 766/1003/14 765/1001/13 +f 755/1002/4 767/1005/4 766/1003/14 +f 756/1004/3 768/1006/3 767/1005/4 +f 745/986/5 757/985/5 768/1006/3 +f 760/990/25 772/1019/25 771/1007/26 +f 759/988/26 771/1007/26 770/1008/15 +f 758/983/15 770/1008/15 769/1009/16 +f 768/1006/17 757/985/16 769/1009/16 +f 767/1005/18 768/1006/17 780/1010/17 +f 767/1005/18 779/1011/18 778/1012/19 +f 766/1003/19 778/1012/19 777/1013/20 +f 764/999/21 765/1001/20 777/1013/20 +f 763/996/22 764/999/21 776/1014/21 +f 763/1016/22 775/1025/22 774/1017/23 +f 761/992/24 762/994/23 774/1017/23 +f 761/992/24 773/1018/24 772/1019/25 +f 770/1008/6 782/1021/6 781/1020/5 +f 771/1007/7 783/1022/7 782/1021/6 +f 772/1019/8 784/1023/8 783/1022/7 +f 773/1018/9 785/1024/9 784/1023/8 +f 774/1017/10 786/1026/10 785/1024/9 +f 775/1025/11 787/1041/11 786/1026/10 +f 776/1014/12 788/1028/12 787/1027/11 +f 777/1013/13 789/1029/13 788/1028/12 +f 778/1012/14 790/1030/14 789/1029/13 +f 779/1011/4 791/1031/4 790/1030/14 +f 780/1010/3 792/1032/3 791/1031/4 +f 769/1009/5 781/1020/5 792/1032/3 +f 781/1020/38 782/1021/37 794/1033/37 +f 781/1020/38 793/1034/38 804/1035/28 +f 792/1032/28 804/1035/28 803/1036/27 +f 791/1031/27 803/1036/27 802/1037/29 +f 790/1030/29 802/1037/29 801/1038/30 +f 789/1029/30 801/1038/30 800/1039/31 +f 788/1028/31 800/1039/31 799/1040/32 +f 787/1041/32 799/1051/32 798/1042/33 +f 785/1024/34 786/1026/33 798/1042/33 +f 784/1023/35 785/1024/34 797/1043/34 +f 783/1022/36 784/1023/35 796/1044/35 +f 782/1021/37 783/1022/36 795/1045/36 +f 794/1033/6 806/1047/6 805/1046/5 +f 795/1045/7 807/1048/7 806/1047/6 +f 796/1044/8 808/1049/8 807/1048/7 +f 797/1043/9 809/1050/9 808/1049/8 +f 798/1042/10 810/1052/10 809/1050/9 +f 799/1051/11 811/1067/11 810/1052/10 +f 800/1039/12 812/1054/12 811/1053/11 +f 801/1038/13 813/1055/13 812/1054/12 +f 802/1037/14 814/1056/14 813/1055/13 +f 803/1036/4 815/1057/4 814/1056/14 +f 804/1035/3 816/1058/3 815/1057/4 +f 793/1034/5 805/1046/5 816/1058/3 +f 814/1056/19 815/1057/18 827/1059/18 +f 815/1057/18 816/1058/17 828/1061/17 +f 805/1046/16 817/1062/16 828/1061/17 +f 806/1047/15 818/1063/15 817/1062/16 +f 807/1048/26 819/1064/26 818/1063/15 +f 808/1049/25 820/1065/25 819/1064/26 +f 809/1050/24 821/1066/24 820/1065/25 +f 810/1052/23 822/1068/23 821/1066/24 +f 811/1067/22 823/1077/22 822/1068/23 +f 812/1054/21 824/1071/21 823/1069/22 +f 812/1054/21 813/1055/20 825/1070/20 +f 814/1056/19 826/1060/19 825/1070/20 +f 818/1063/6 830/1073/6 829/1072/5 +f 819/1064/7 831/1074/7 830/1073/6 +f 820/1065/8 832/1075/8 831/1074/7 +f 821/1066/9 833/1076/9 832/1075/8 +f 822/1068/10 834/1078/10 833/1076/9 +f 823/1077/11 835/1091/11 834/1078/10 +f 824/1071/12 836/1080/12 835/1079/11 +f 825/1070/13 837/1081/13 836/1080/12 +f 826/1060/14 838/1082/14 837/1081/13 +f 827/1059/4 839/1083/4 838/1082/14 +f 828/1061/3 840/1084/3 839/1083/4 +f 817/1062/5 829/1072/5 840/1084/3 +f 840/1084/28 829/1072/38 841/1085/38 +f 829/1072/38 830/1073/37 842/1087/37 +f 830/1073/37 831/1074/36 843/1088/36 +f 831/1074/36 832/1075/35 844/1089/35 +f 832/1075/35 833/1076/34 845/1090/34 +f 834/1078/33 846/1092/33 845/1090/34 +f 835/1091/32 847/1098/32 846/1092/33 +f 836/1080/31 848/1094/31 847/1093/32 +f 837/1081/30 849/1096/30 848/1094/31 +f 837/1081/30 838/1082/29 850/1095/29 +f 839/1083/27 851/1097/27 850/1095/29 +f 839/1083/27 840/1084/28 852/1086/28 +f 842/1087/6 854/188/6 853/164/5 +f 843/1088/7 855/187/7 854/188/6 +f 844/1089/8 856/185/8 855/187/7 +f 845/1090/9 857/183/9 856/185/8 +f 846/1092/10 858/181/10 857/183/9 +f 847/1098/11 859/179/11 858/181/10 +f 848/1094/12 860/175/12 859/176/11 +f 849/1096/13 861/171/13 860/175/12 +f 850/1095/14 862/170/14 861/171/13 +f 851/1097/4 863/168/4 862/170/14 +f 852/1086/3 864/166/3 863/168/4 +f 841/1085/5 853/164/5 864/166/3 +f 866/309/12 878/1179/12 877/1099/11 +f 867/189/13 879/1180/13 878/1100/12 +f 868/308/14 880/1181/14 879/1101/13 +f 869/307/4 881/1182/4 880/1102/14 +f 870/306/3 882/1183/3 881/1103/4 +f 871/305/5 883/1184/5 882/1104/3 +f 872/177/6 884/1185/6 883/1105/5 +f 873/304/7 885/1186/7 884/1106/6 +f 874/172/8 886/1187/8 885/1107/7 +f 875/303/9 887/1188/9 886/1108/8 +f 876/302/10 888/1189/10 887/1109/9 +f 865/301/11 877/1190/11 888/1110/10 +o Gun +v 0.000000 1.500000 -2.000000 +v -0.574025 1.385819 -2.000000 +v -1.060660 1.060660 -2.000000 +v -1.385819 0.574025 -2.000000 +v -1.500000 -0.000000 -2.000000 +v -1.385819 -0.574025 -2.000000 +v -1.060660 -1.060660 -2.000000 +v -0.574025 -1.385819 -2.000000 +v 0.000000 -1.500000 -2.000000 +v 0.574025 -1.385819 -2.000000 +v 1.060660 -1.060660 -2.000000 +v 1.385819 -0.574025 -2.000000 +v 1.500000 -0.000000 -2.000000 +v 1.385819 0.574025 -2.000000 +v 1.060660 1.060660 -2.000000 +v 0.574024 1.385820 -2.000000 +v 0.000000 1.500000 -5.000000 +v -0.574025 1.385819 -5.000000 +v -1.060660 1.060660 -5.000000 +v -1.385819 0.574025 -5.000000 +v -1.500000 -0.000000 -5.000000 +v -1.385819 -0.574025 -5.000000 +v -1.060660 -1.060660 -5.000000 +v -0.574025 -1.385819 -5.000000 +v 0.000000 -1.500000 -5.000000 +v 0.574025 -1.385819 -5.000000 +v 1.060660 -1.060660 -5.000000 +v 1.385819 -0.574025 -5.000000 +v 1.500000 -0.000000 -5.000000 +v 1.385819 0.574025 -5.000000 +v 1.060660 1.060660 -5.000000 +v 0.574024 1.385820 -5.000000 +v 0.000000 1.250000 -5.500000 +v -0.478354 1.154850 -5.500000 +v -0.883883 0.883883 -5.500000 +v -1.154849 0.478354 -5.500000 +v -1.250000 0.000000 -5.500000 +v -1.154849 -0.478354 -5.500000 +v -0.883883 -0.883883 -5.500000 +v -0.478354 -1.154850 -5.500000 +v 0.000000 -1.250000 -5.500000 +v 0.478354 -1.154850 -5.500000 +v 0.883883 -0.883884 -5.500000 +v 1.154849 -0.478354 -5.500000 +v 1.250000 0.000000 -5.500000 +v 1.154849 0.478354 -5.500000 +v 0.883883 0.883884 -5.500000 +v 0.478354 1.154850 -5.500000 +v 0.000000 1.250000 -9.000000 +v -0.478354 1.154850 -9.000000 +v -0.883883 0.883883 -9.000000 +v -1.154849 0.478354 -9.000000 +v -1.250000 0.000000 -9.000000 +v -1.154849 -0.478354 -9.000000 +v -0.883883 -0.883883 -9.000000 +v -0.478354 -1.154850 -9.000000 +v 0.000000 -1.250000 -9.000000 +v 0.478354 -1.154850 -9.000000 +v 0.883883 -0.883884 -9.000000 +v 1.154849 -0.478354 -9.000000 +v 1.250000 0.000000 -9.000000 +v 1.154849 0.478354 -9.000000 +v 0.883883 0.883884 -9.000000 +v 0.478354 1.154850 -9.000000 +v 0.000000 1.000000 -9.500000 +v -0.382684 0.923880 -9.500000 +v -0.707107 0.707107 -9.500000 +v -0.923880 0.382684 -9.500000 +v -1.000000 -0.000000 -9.500000 +v -0.923880 -0.382684 -9.500000 +v -0.707107 -0.707107 -9.500000 +v -0.382684 -0.923880 -9.500000 +v -0.000000 -1.000000 -9.500000 +v 0.382683 -0.923880 -9.500000 +v 0.707107 -0.707107 -9.500000 +v 0.923879 -0.382684 -9.500000 +v 1.000000 -0.000000 -9.500000 +v 0.923879 0.382684 -9.500000 +v 0.707107 0.707107 -9.500000 +v 0.382683 0.923880 -9.500000 +v -0.750000 0.000000 -6.000000 +v -0.750000 1.500000 -6.000000 +v -0.750000 0.000000 -10.500000 +v -0.750000 1.500000 -10.500000 +v 0.750000 0.000000 -6.000000 +v 0.750000 1.500000 -6.000000 +v 0.750000 0.000000 -10.500000 +v 0.750000 1.500000 -10.500000 +v -0.750000 2.000000 -8.250000 +v 0.750000 2.000000 -8.250000 +v -0.375000 -0.750000 -10.500000 +v -0.375000 -0.750000 -6.000000 +v 0.375000 -0.750000 -10.500000 +v 0.375000 -0.750000 -6.000000 +v -0.375000 2.500000 -11.250000 +v 0.375000 2.500000 -11.250000 +v -0.375000 1.750000 -12.000000 +v 0.375000 1.750000 -12.000000 +v -0.375000 0.750000 -10.500000 +v 0.375000 0.750000 -10.500000 +v -0.375000 1.750000 -7.750000 +v 0.375000 1.750000 -7.750000 +v -0.375000 4.000000 -11.250000 +v 0.375000 4.000000 -11.250000 +v -0.375000 4.000000 -7.750000 +v 0.375000 4.000000 -7.750000 +v -0.375000 4.000000 -8.250000 +v 0.375000 4.000000 -8.250000 +v -0.375000 2.500000 -8.250000 +v 0.375000 2.500000 -8.250000 +v -0.375000 4.000000 -10.750000 +v 0.375000 4.000000 -10.750000 +v -0.375000 2.500000 -10.750000 +v 0.375000 2.500000 -10.750000 +v 0.000000 3.875000 -8.250000 +v -0.265165 3.765165 -8.250000 +v -0.375000 3.500000 -8.250000 +v -0.265165 3.234835 -8.250000 +v 0.000000 3.125000 -8.250000 +v 0.265165 3.234835 -8.250000 +v 0.375000 3.500000 -8.250000 +v 0.265165 3.765165 -8.250000 +v 0.000000 3.875000 -10.750000 +v -0.265165 3.765165 -10.750000 +v -0.375000 3.500000 -10.750000 +v -0.265165 3.234835 -10.750000 +v 0.000000 3.125000 -10.750000 +v 0.265165 3.234835 -10.750000 +v 0.375000 3.500000 -10.750000 +v 0.265165 3.765165 -10.750000 +v -1.500000 0.250000 -5.750000 +v -1.500000 -0.750000 -8.250000 +v -1.500000 0.250000 -8.250000 +v 1.500000 0.250000 -5.750000 +v 1.500000 -0.750000 -8.250000 +v 1.500000 0.250000 -8.250000 +v 2.000000 0.250000 -8.000000 +v 2.000000 -0.750000 -8.000000 +v 2.000000 0.250000 -6.250000 +v -2.000000 -0.750000 -8.000000 +v -2.000000 0.250000 -6.250000 +v -2.000000 0.250000 -8.000000 +v -1.500000 0.750000 -6.250000 +v -1.500000 0.750000 -8.000000 +v 1.500000 0.750000 -8.000000 +v 1.500000 0.750000 -6.250000 +v 2.000000 0.750000 -7.750000 +v 2.000000 0.750000 -6.750000 +v -2.000000 0.750000 -6.750000 +v -2.000000 0.750000 -7.750000 +v -1.500000 -1.500000 -7.500000 +v -1.500000 -1.500000 -5.750000 +v 1.500000 -1.500000 -7.500000 +v 1.500000 -1.500000 -5.750000 +v 2.000000 -1.500000 -6.250000 +v 2.000000 -1.500000 -7.250000 +v -2.000000 -1.500000 -7.250000 +v -2.000000 -1.500000 -6.250000 +v 1.125000 0.375000 -2.000000 +v 1.125000 -0.375000 -2.000000 +v 1.125000 0.375000 -5.750000 +v 1.125000 -0.375000 -5.750000 +v 1.875000 0.375000 -5.500000 +v 1.875000 0.375000 -2.250000 +v 1.875000 -0.375000 -2.250000 +v 1.875000 -0.375000 -5.500000 +v 2.375000 0.187500 -4.500000 +v 2.375000 0.187500 -3.250000 +v 2.375000 -0.187500 -3.250000 +v 2.375000 -0.187500 -4.500000 +v -1.125000 0.375000 -2.000000 +v -1.125000 -0.375000 -2.000000 +v -1.125000 0.375000 -5.750000 +v -1.125000 -0.375000 -5.750000 +v -1.875000 0.375000 -5.500000 +v -1.875000 0.375000 -2.250000 +v -1.875000 -0.375000 -2.250000 +v -1.875000 -0.375000 -5.500000 +v -2.375000 0.187500 -4.500000 +v -2.375000 0.187500 -3.250000 +v -2.375000 -0.187500 -3.250000 +v -2.375000 -0.187500 -4.500000 +v -1.223240 1.817343 -4.000000 +v -1.223240 1.817343 -3.000000 +v -0.840556 1.741222 -4.000000 +v -0.840556 1.741222 -3.000000 +v -0.516133 1.524449 -4.000000 +v -0.516133 1.524449 -3.000000 +v -0.299360 1.200026 -4.000000 +v -0.299360 1.200026 -3.000000 +v -0.223240 0.817343 -4.000000 +v -0.223240 0.817343 -3.000000 +v -0.299360 0.434659 -4.000000 +v -0.299360 0.434659 -3.000000 +v -0.516133 0.110236 -4.000000 +v -0.516133 0.110236 -3.000000 +v -0.840556 -0.106537 -4.000000 +v -0.840556 -0.106537 -3.000000 +v -1.223239 -0.182657 -4.000000 +v -1.223239 -0.182657 -3.000000 +v -1.605923 -0.106537 -4.000000 +v -1.605923 -0.106537 -3.000000 +v -1.930346 0.110236 -4.000000 +v -1.930346 0.110236 -3.000000 +v -2.147119 0.434659 -4.000000 +v -2.147119 0.434659 -3.000000 +v -2.223239 0.817343 -4.000000 +v -2.223239 0.817343 -3.000000 +v -2.147119 1.200026 -4.000000 +v -2.147119 1.200026 -3.000000 +v -1.930346 1.524450 -4.000000 +v -1.930346 1.524450 -3.000000 +v -1.605923 1.741222 -4.000000 +v -1.605923 1.741222 -3.000000 +v 1.223239 1.817343 -4.000000 +v 1.223239 1.817343 -3.000000 +v 1.605923 1.741222 -4.000000 +v 1.605923 1.741222 -3.000000 +v 1.930346 1.524450 -4.000000 +v 1.930346 1.524450 -3.000000 +v 2.147119 1.200026 -4.000000 +v 2.147119 1.200026 -3.000000 +v 2.223239 0.817343 -4.000000 +v 2.223239 0.817343 -3.000000 +v 2.147119 0.434659 -4.000000 +v 2.147119 0.434659 -3.000000 +v 1.930346 0.110236 -4.000000 +v 1.930346 0.110236 -3.000000 +v 1.605923 -0.106537 -4.000000 +v 1.605923 -0.106537 -3.000000 +v 1.223240 -0.182657 -4.000000 +v 1.223240 -0.182657 -3.000000 +v 0.840556 -0.106537 -4.000000 +v 0.840556 -0.106537 -3.000000 +v 0.516133 0.110236 -4.000000 +v 0.516133 0.110236 -3.000000 +v 0.299360 0.434659 -4.000000 +v 0.299360 0.434659 -3.000000 +v 0.223239 0.817343 -4.000000 +v 0.223239 0.817343 -3.000000 +v 0.299360 1.200027 -4.000000 +v 0.299360 1.200027 -3.000000 +v 0.516133 1.524450 -4.000000 +v 0.516133 1.524450 -3.000000 +v 0.840557 1.741223 -4.000000 +v 0.840557 1.741223 -3.000000 +v 1.500000 -0.500000 -0.750000 +v 1.500000 0.500000 -0.750000 +v 1.500000 -0.500000 -2.250000 +v 1.500000 0.500000 -2.250000 +v 2.000000 -0.500000 -0.750000 +v 2.000000 0.500000 -0.750000 +v 2.000000 -0.500000 -2.250000 +v 2.000000 0.500000 -2.250000 +v 2.000000 0.000000 -2.125000 +v 2.000000 0.265165 -2.015165 +v 2.000000 0.375000 -1.750000 +v 2.000000 0.265165 -1.484835 +v 2.000000 0.000000 -1.375000 +v 2.000000 -0.265165 -1.484835 +v 2.000000 -0.375000 -1.750000 +v 2.000000 -0.265165 -2.015165 +v 4.500000 0.000000 -2.125000 +v 4.500000 0.265165 -2.015165 +v 4.500000 0.375000 -1.750000 +v 4.500000 0.265165 -1.484835 +v 4.500000 0.000000 -1.375000 +v 4.500000 -0.265165 -1.484835 +v 4.500000 -0.375000 -1.750000 +v 4.500000 -0.265165 -2.015165 +v 2.000000 -0.250000 -0.250000 +v 2.000000 0.250000 -0.250000 +v 4.500000 0.500000 -0.750000 +v 4.500000 -0.500000 -0.750000 +v 4.500000 0.250000 -0.250000 +v 4.500000 -0.250000 -0.250000 +v 5.000000 0.500000 -0.750000 +v 5.000000 -0.500000 -0.750000 +v 4.500000 0.500000 -2.250000 +v 4.500000 -0.500000 -2.250000 +v 5.000000 0.500000 -1.750000 +v 5.000000 -0.500000 -1.750000 +v -0.500000 -1.000000 -2.500000 +v 0.500000 -1.000000 -2.500000 +v -0.500000 -1.000000 -6.500000 +v 0.500000 -1.000000 -6.500000 +v -0.500000 -2.000000 -5.500000 +v -0.500000 -2.000000 -2.500000 +v 0.500000 -2.000000 -2.500000 +v 0.500000 -2.000000 -5.500000 +v 1.250000 0.000000 -8.000000 +v 1.250000 0.500000 -8.000000 +v 1.250000 0.000000 -9.750000 +v 1.250000 0.500000 -9.750000 +v 1.750000 0.000000 -8.000000 +v 1.750000 0.500000 -8.000000 +v 1.750000 0.000000 -9.750000 +v 1.750000 0.500000 -9.750000 +v -1.000000 1.250000 -6.500000 +v 1.250000 0.000000 -10.250000 +v 1.750000 0.000000 -10.250000 +v 1.000000 1.250000 -6.500000 +v 1.750000 -1.000000 -9.750000 +v 1.250000 -1.000000 -9.750000 +v 1.750000 -1.000000 -10.250000 +v 1.250000 -1.000000 -10.250000 +v -1.750000 0.000000 -8.000000 +v -1.750000 0.500000 -8.000000 +v -1.750000 0.000000 -9.750000 +v -1.750000 0.500000 -9.750000 +v -1.250000 0.000000 -8.000000 +v -1.250000 0.500000 -8.000000 +v -1.250000 0.000000 -9.750000 +v -1.250000 0.500000 -9.750000 +v -1.000000 1.250000 -7.750000 +v -1.750000 0.000000 -10.250000 +v -1.250000 0.000000 -10.250000 +v 1.000000 1.250000 -7.750000 +v -1.250000 -1.000000 -9.750000 +v -1.750000 -1.000000 -9.750000 +v -1.250000 -1.000000 -10.250000 +v -1.750000 -1.000000 -10.250000 +v 1.000000 0.750000 -7.750000 +v 1.250000 -1.500000 -9.750000 +v -1.000000 0.750000 -7.750000 +v 1.250000 -1.500000 -10.250000 +v -1.250000 -1.500000 -9.750000 +v 1.000000 0.750000 -6.500000 +v -1.250000 -1.500000 -10.250000 +v -1.000000 0.750000 -6.500000 +v -1.500000 -2.000000 -2.750000 +v 1.500000 -2.000000 -2.750000 +v -1.500000 -2.000000 -5.250000 +v 1.500000 -2.000000 -5.250000 +v -1.500000 -4.000000 -5.250000 +v -1.500000 -4.000000 -2.750000 +v 1.500000 -4.000000 -2.750000 +v 1.500000 -4.000000 -5.250000 +v 1.500000 -2.187501 -3.937498 +v 1.500000 -2.562501 -3.937498 +v 1.500000 -2.187501 -3.062498 +v 1.500000 -2.562501 -3.062498 +v 2.000000 -2.187501 -3.937498 +v 2.000000 -2.562501 -3.937498 +v 2.000000 -2.187501 -3.062498 +v 2.000000 -2.562501 -3.062498 +v 2.500000 -1.687501 -3.937498 +v 2.875000 -1.687501 -3.937498 +v 2.500000 -1.687501 -3.062498 +v 2.875000 -1.687501 -3.062498 +v 2.500000 0.437499 -3.937498 +v 2.875000 0.437499 -3.937498 +v 2.500000 0.437499 -3.062498 +v 2.875000 0.437499 -3.062498 +v 2.000000 0.937498 -3.937498 +v 2.000000 0.937498 -3.062498 +v 2.000000 1.312498 -3.937498 +v 2.000000 1.312498 -3.062498 +v -0.750000 1.375000 -3.250000 +v 0.750000 1.375000 -3.250000 +v 1.750000 0.000000 -4.750000 +v 1.750000 0.000000 -3.000000 +v 1.616789 -0.669696 -4.750000 +v 1.616789 -0.669696 -3.000000 +v 1.237437 -1.237437 -4.750000 +v 1.237437 -1.237437 -3.000000 +v 0.669696 -1.616789 -4.750000 +v 0.669696 -1.616789 -3.000000 +v 0.000000 -1.750000 -4.750000 +v 0.000000 -1.750000 -3.000000 +v -0.669696 -1.616789 -4.750000 +v -0.669696 -1.616789 -3.000000 +v -1.237436 -1.237437 -4.750000 +v -1.237436 -1.237437 -3.000000 +v -1.616789 -0.669696 -4.750000 +v -1.616789 -0.669696 -3.000000 +v -1.750000 0.000000 -4.750000 +v -1.750000 0.000000 -3.000000 +v -0.750000 1.375000 -3.750000 +v 0.750000 1.375000 -3.750000 +v 0.750000 1.625000 -3.750000 +v -0.750000 1.625000 -3.750000 +v 0.750000 1.625000 -3.250000 +v -0.750000 1.625000 -3.250000 +vt 0.205104 0.294129 +vt 0.205104 0.205871 +vt 0.242265 0.205871 +vt 0.592105 0.390625 +vt 0.532895 0.359375 +vt 0.532895 0.265625 +vt 0.125000 0.781250 +vt 0.171053 0.812500 +vt 0.125000 0.812500 +vt 0.414474 0.148438 +vt 0.473684 0.242188 +vt 0.414474 0.242188 +vt 0.592105 -0.000000 +vt 0.651316 0.031250 +vt 0.651316 0.125000 +vt 0.710526 0.148438 +vt 0.769737 0.242188 +vt 0.710526 0.242188 +vt 0.651316 0.218750 +vt 0.532895 0.171875 +vt 0.651316 0.171875 +vt 0.651316 0.265625 +vt 0.184211 0.812500 +vt 0.171053 0.812500 +vt 0.184211 0.781250 +vt 0.532895 0.125000 +vt 0.264746 0.027479 +vt 0.276304 0.093750 +vt 0.236842 0.187471 vt 0.496711 0.640625 vt 0.509868 0.546875 vt 0.496711 0.500000 @@ -1614,163 +4496,6 @@ vt 0.874696 0.453987 vt 0.888129 0.531009 vt 0.513158 0.242188 vt 0.473684 0.148438 -vt 0.108553 0.593750 -vt 0.105263 0.578125 -vt 0.108553 0.578125 -vt 0.105263 0.562500 -vt 0.108553 0.562500 -vt 0.105263 0.546875 -vt 0.108553 0.546875 -vt 0.105263 0.531250 -vt 0.108553 0.531250 -vt 0.105263 0.515625 -vt 0.108553 0.515625 -vt 0.108553 0.500000 -vt 0.105263 0.511719 -vt 0.105263 0.500000 -vt 0.108553 0.687500 -vt 0.105263 0.671875 -vt 0.108553 0.671875 -vt 0.105263 0.656250 -vt 0.108553 0.656250 -vt 0.105263 0.640625 -vt 0.108553 0.640625 -vt 0.105263 0.625000 -vt 0.108553 0.625000 -vt 0.108553 0.609375 -vt 0.105263 0.621094 -vt 0.105263 0.609375 -vt 0.105263 0.605469 -vt 0.105263 0.593750 -vt 0.090991 0.591780 -vt 0.083882 0.601529 -vt 0.076772 0.572282 -vt 0.108553 0.593750 -vt 0.105263 0.578125 -vt 0.108553 0.578125 -vt 0.105263 0.562500 -vt 0.108553 0.562500 -vt 0.105263 0.546875 -vt 0.108553 0.546875 -vt 0.105263 0.531250 -vt 0.108553 0.531250 -vt 0.108553 0.515625 -vt 0.105263 0.527344 -vt 0.105263 0.515625 -vt 0.108553 0.500000 -vt 0.105263 0.511719 -vt 0.105263 0.500000 -vt 0.108553 0.687500 -vt 0.105263 0.671875 -vt 0.108553 0.671875 -vt 0.105263 0.656250 -vt 0.108553 0.656250 -vt 0.105263 0.640625 -vt 0.108553 0.640625 -vt 0.105263 0.625000 -vt 0.108553 0.625000 -vt 0.105263 0.609375 -vt 0.108553 0.609375 -vt 0.105263 0.605469 -vt 0.105263 0.593750 -vt 0.090991 0.591780 -vt 0.083882 0.601529 -vt 0.076772 0.572282 -vt 0.108553 0.593750 -vt 0.105263 0.578125 -vt 0.108553 0.578125 -vt 0.105263 0.562500 -vt 0.108553 0.562500 -vt 0.105263 0.546875 -vt 0.108553 0.546875 -vt 0.108553 0.531250 -vt 0.105263 0.542969 -vt 0.105263 0.531250 -vt 0.105263 0.515625 -vt 0.108553 0.515625 -vt 0.108553 0.500000 -vt 0.105263 0.511719 -vt 0.105263 0.500000 -vt 0.108553 0.687500 -vt 0.105263 0.671875 -vt 0.108553 0.671875 -vt 0.105263 0.656250 -vt 0.108553 0.656250 -vt 0.105263 0.640625 -vt 0.108553 0.640625 -vt 0.105263 0.625000 -vt 0.108553 0.625000 -vt 0.108553 0.609375 -vt 0.105263 0.621094 -vt 0.105263 0.609375 -vt 0.105263 0.605469 -vt 0.105263 0.593750 -vt 0.076772 0.572282 -vt 0.090991 0.572282 -vt 0.083882 0.601529 -vt 0.108553 0.593750 -vt 0.105263 0.578125 -vt 0.108553 0.578125 -vt 0.105263 0.562500 -vt 0.108553 0.562500 -vt 0.105263 0.546875 -vt 0.108553 0.546875 -vt 0.108553 0.531250 -vt 0.105263 0.542969 -vt 0.105263 0.531250 -vt 0.108553 0.515625 -vt 0.105263 0.527344 -vt 0.105263 0.515625 -vt 0.108553 0.500000 -vt 0.105263 0.511719 -vt 0.105263 0.500000 -vt 0.108553 0.687500 -vt 0.105263 0.671875 -vt 0.108553 0.671875 -vt 0.105263 0.656250 -vt 0.108553 0.656250 -vt 0.105263 0.640625 -vt 0.108553 0.640625 -vt 0.105263 0.625000 -vt 0.108553 0.625000 -vt 0.105263 0.609375 -vt 0.108553 0.609375 -vt 0.105263 0.605469 -vt 0.105263 0.593750 -vt 0.090991 0.591780 -vt 0.083882 0.601529 -vt 0.076772 0.572282 -vt 0.108553 0.593750 -vt 0.105263 0.578125 -vt 0.108553 0.578125 -vt 0.105263 0.562500 -vt 0.108553 0.562500 -vt 0.105263 0.546875 -vt 0.108553 0.546875 -vt 0.108553 0.531250 -vt 0.105263 0.542969 -vt 0.105263 0.531250 -vt 0.105263 0.515625 -vt 0.108553 0.515625 -vt 0.108553 0.500000 -vt 0.105263 0.511719 -vt 0.105263 0.500000 -vt 0.108553 0.687500 -vt 0.105263 0.671875 -vt 0.108553 0.671875 -vt 0.105263 0.656250 -vt 0.108553 0.656250 -vt 0.105263 0.640625 -vt 0.108553 0.640625 -vt 0.105263 0.625000 -vt 0.108553 0.625000 -vt 0.108553 0.609375 -vt 0.105263 0.621094 -vt 0.105263 0.609375 -vt 0.105263 0.593750 -vt 0.090991 0.591780 -vt 0.083882 0.601529 -vt 0.076772 0.572282 vt 0.242265 0.294129 vt 0.233740 0.307657 vt 0.223684 0.312408 @@ -1801,42 +4526,6 @@ vt 0.273300 0.057885 vt 0.273300 0.129616 vt 0.264746 0.160021 vt 0.251943 0.180337 -vt 0.105263 0.589844 -vt 0.105263 0.574219 -vt 0.105263 0.558594 -vt 0.105263 0.542969 -vt 0.105263 0.527344 -vt 0.105263 0.683594 -vt 0.105263 0.667969 -vt 0.105263 0.652344 -vt 0.105263 0.636719 -vt 0.079777 0.598917 -vt 0.076772 0.591780 -vt 0.075672 0.582031 -vt 0.079777 0.565145 -vt 0.083882 0.562533 -vt 0.087986 0.565145 -vt 0.090991 0.572282 -vt 0.092091 0.582031 -vt 0.087986 0.598917 -vt 0.748351 0.431686 -vt 0.726974 0.445290 -vt 0.705597 0.431686 -vt 0.689948 0.394520 -vt 0.684220 0.343750 -vt 0.705597 0.255814 -vt 0.748351 0.255814 -vt 0.764000 0.292980 -vt 0.769728 0.343750 -vt 0.726974 0.648415 -vt 0.705597 0.634811 -vt 0.689948 0.597645 -vt 0.684220 0.546875 -vt 0.705597 0.458939 -vt 0.748351 0.458939 -vt 0.769728 0.546875 -vt 0.764000 0.597645 -vt 0.748351 0.634811 vt 0.509868 0.640625 vt 0.569079 0.390625 vt 0.608553 0.640625 @@ -1948,94 +4637,6 @@ vt 0.809836 0.453987 vt 0.824715 0.430375 vt 0.842266 0.422084 vt 0.513158 0.148438 -vt 0.105263 0.589844 -vt 0.105263 0.574219 -vt 0.105263 0.558594 -vt 0.105263 0.542969 -vt 0.105263 0.527344 -vt 0.105263 0.683594 -vt 0.105263 0.667969 -vt 0.105263 0.652344 -vt 0.105263 0.636719 -vt 0.079777 0.598917 -vt 0.076772 0.591780 -vt 0.075672 0.582031 -vt 0.079777 0.565145 -vt 0.083882 0.562533 -vt 0.087986 0.565145 -vt 0.090991 0.572282 -vt 0.092091 0.582031 -vt 0.087986 0.598917 -vt 0.105263 0.589844 -vt 0.105263 0.574219 -vt 0.105263 0.558594 -vt 0.105263 0.542969 -vt 0.105263 0.683594 -vt 0.105263 0.667969 -vt 0.105263 0.652344 -vt 0.105263 0.636719 -vt 0.105263 0.621094 -vt 0.079777 0.598917 -vt 0.076772 0.591780 -vt 0.075672 0.582031 -vt 0.079777 0.565145 -vt 0.083882 0.562533 -vt 0.087986 0.565145 -vt 0.090991 0.572282 -vt 0.092091 0.582031 -vt 0.087986 0.598917 -vt 0.105263 0.589844 -vt 0.105263 0.574219 -vt 0.105263 0.558594 -vt 0.105263 0.527344 -vt 0.105263 0.683594 -vt 0.105263 0.667969 -vt 0.105263 0.652344 -vt 0.105263 0.636719 -vt 0.079777 0.598917 -vt 0.076772 0.591780 -vt 0.075672 0.582031 -vt 0.079777 0.565145 -vt 0.083882 0.562533 -vt 0.087986 0.565145 -vt 0.092091 0.582031 -vt 0.090991 0.591780 -vt 0.087986 0.598917 -vt 0.105263 0.589844 -vt 0.105263 0.574219 -vt 0.105263 0.558594 -vt 0.105263 0.683594 -vt 0.105263 0.667969 -vt 0.105263 0.652344 -vt 0.105263 0.636719 -vt 0.105263 0.621094 -vt 0.079777 0.598917 -vt 0.076772 0.591780 -vt 0.075672 0.582031 -vt 0.079777 0.565145 -vt 0.083882 0.562533 -vt 0.087986 0.565145 -vt 0.090991 0.572282 -vt 0.092091 0.582031 -vt 0.087986 0.598917 -vt 0.105263 0.589844 -vt 0.105263 0.574219 -vt 0.105263 0.558594 -vt 0.105263 0.527344 -vt 0.105263 0.683594 -vt 0.105263 0.667969 -vt 0.105263 0.652344 -vt 0.105263 0.636719 -vt 0.105263 0.605469 -vt 0.079777 0.598917 -vt 0.076772 0.591780 -vt 0.075672 0.582031 -vt 0.079777 0.565145 -vt 0.083882 0.562533 -vt 0.087986 0.565145 -vt 0.090991 0.572282 -vt 0.092091 0.582031 -vt 0.087986 0.598917 vt 0.078947 0.175781 vt -0.000000 0.210938 vt -0.000000 0.175781 @@ -2135,159 +4736,6 @@ vt 0.197368 0.058594 vt 0.197368 0.066406 vt 0.197368 0.121094 vt 0.197368 0.128906 -vt 0.476974 0.609375 -vt 0.371711 0.593750 -vt 0.476974 0.593750 -vt 0.476974 0.625000 -vt 0.371711 0.609375 -vt 0.476974 0.640625 -vt 0.371711 0.625000 -vt 0.476974 0.656250 -vt 0.371711 0.640625 -vt 0.476974 0.671875 -vt 0.371711 0.656250 -vt 0.476974 0.687500 -vt 0.371711 0.671875 -vt 0.476974 0.515625 -vt 0.371711 0.500000 -vt 0.476974 0.500000 -vt 0.476974 0.531250 -vt 0.371711 0.515625 -vt 0.476974 0.546875 -vt 0.371711 0.531250 -vt 0.476974 0.562500 -vt 0.371711 0.546875 -vt 0.476974 0.578125 -vt 0.371711 0.562500 -vt 0.371711 0.578125 -vt 0.365132 0.625000 -vt 0.365132 0.609375 -vt 0.365132 0.593750 -vt 0.365132 0.578125 -vt 0.365132 0.562500 -vt 0.365132 0.546875 -vt 0.365132 0.531250 -vt 0.365132 0.515625 -vt 0.365132 0.500000 -vt 0.371711 0.687500 -vt 0.365132 0.671875 -vt 0.365132 0.656250 -vt 0.365132 0.640625 -vt 0.338816 0.593750 -vt 0.338816 0.609375 -vt 0.338816 0.625000 -vt 0.338816 0.640625 -vt 0.338816 0.656250 -vt 0.365132 0.687500 -vt 0.338816 0.671875 -vt 0.338816 0.500000 -vt 0.338816 0.515625 -vt 0.338816 0.531250 -vt 0.338816 0.546875 -vt 0.338816 0.562500 -vt 0.338816 0.578125 -vt 0.332237 0.609375 -vt 0.332237 0.593750 -vt 0.332237 0.578125 -vt 0.332237 0.562500 -vt 0.332237 0.546875 -vt 0.332237 0.531250 -vt 0.332237 0.515625 -vt 0.332237 0.500000 -vt 0.332237 0.687500 -vt 0.332237 0.671875 -vt 0.332237 0.656250 -vt 0.332237 0.640625 -vt 0.332237 0.625000 -vt 0.200658 0.593750 -vt 0.200658 0.609375 -vt 0.200658 0.625000 -vt 0.200658 0.640625 -vt 0.200658 0.656250 -vt 0.200658 0.671875 -vt 0.200658 0.500000 -vt 0.200658 0.515625 -vt 0.200658 0.531250 -vt 0.200658 0.546875 -vt 0.200658 0.562500 -vt 0.200658 0.578125 -vt 0.194079 0.562500 -vt 0.194079 0.546875 -vt 0.194079 0.578125 -vt 0.194079 0.593750 -vt 0.194079 0.609375 -vt 0.194079 0.625000 -vt 0.194079 0.656250 -vt 0.194079 0.640625 -vt 0.200658 0.687500 -vt 0.194079 0.671875 -vt 0.194079 0.500000 -vt 0.194079 0.531250 -vt 0.194079 0.515625 -vt 0.128289 0.593750 -vt 0.128289 0.609375 -vt 0.128289 0.625000 -vt 0.128289 0.640625 -vt 0.128289 0.656250 -vt 0.194079 0.687500 -vt 0.128289 0.671875 -vt 0.128289 0.500000 -vt 0.128289 0.515625 -vt 0.128289 0.531250 -vt 0.128289 0.546875 -vt 0.128289 0.562500 -vt 0.128289 0.578125 -vt 0.121711 0.593750 -vt 0.121711 0.578125 -vt 0.121711 0.609375 -vt 0.121711 0.640625 -vt 0.121711 0.625000 -vt 0.121711 0.671875 -vt 0.121711 0.656250 -vt 0.128289 0.687500 -vt 0.121711 0.515625 -vt 0.121711 0.500000 -vt 0.121711 0.531250 -vt 0.121711 0.546875 -vt 0.121711 0.562500 -vt 0.121711 0.687500 -vt 0.092105 0.593750 -vt 0.092105 0.609375 -vt 0.092105 0.625000 -vt 0.092105 0.640625 -vt 0.092105 0.656250 -vt 0.092105 0.671875 -vt 0.092105 0.500000 -vt 0.092105 0.515625 -vt 0.092105 0.531250 -vt 0.092105 0.546875 -vt 0.092105 0.562500 -vt 0.092105 0.578125 -vt 0.769737 0.218750 -vt 0.796053 0.164062 -vt 0.796053 0.218750 -vt 0.769737 0.492188 -vt 0.796053 0.437500 -vt 0.796053 0.492188 -vt 0.769737 0.656250 -vt 0.796053 0.601562 -vt 0.796053 0.656250 -vt 0.769737 0.164062 -vt 0.796053 0.109375 -vt 0.769737 0.437500 -vt 0.796053 0.382812 -vt 0.769737 0.328125 -vt 0.796053 0.273438 -vt 0.796053 0.328125 -vt 0.769737 0.601562 -vt 0.796053 0.546875 -vt 0.769737 0.109375 -vt 0.796053 0.054688 -vt 0.769737 0.382812 -vt 0.769737 0.273438 -vt 0.769737 0.546875 -vt 0.769737 0.054688 -vt 0.796053 -0.000000 vt 0.480263 0.406250 vt 0.414474 0.421875 vt 0.414474 0.406250 @@ -2387,11 +4835,6 @@ vt 0.375000 0.812500 vt 0.309211 0.906250 vt 0.309211 0.875000 vt 0.309211 0.843750 -vt 0.476974 0.625000 -vt 0.371711 0.609375 -vt 0.476974 0.609375 -vt 0.371711 0.593750 -vt 0.476974 0.593750 vt 0.842105 -0.000000 vt 0.796053 0.039062 vt 0.796053 0.000000 @@ -2409,640 +4852,6 @@ vt 0.842105 0.234375 vt 0.796053 0.273438 vt 0.842105 0.273438 vt 0.796053 0.312500 -vt 0.476974 0.640625 -vt 0.371711 0.625000 -vt 0.476974 0.656250 -vt 0.371711 0.640625 -vt 0.476974 0.671875 -vt 0.371711 0.656250 -vt 0.476974 0.687500 -vt 0.371711 0.671875 -vt 0.476974 0.515625 -vt 0.371711 0.500000 -vt 0.476974 0.500000 -vt 0.476974 0.531250 -vt 0.371711 0.515625 -vt 0.476974 0.546875 -vt 0.371711 0.531250 -vt 0.476974 0.562500 -vt 0.371711 0.546875 -vt 0.476974 0.578125 -vt 0.371711 0.562500 -vt 0.371711 0.578125 -vt 0.365132 0.625000 -vt 0.365132 0.609375 -vt 0.365132 0.593750 -vt 0.365132 0.578125 -vt 0.365132 0.562500 -vt 0.365132 0.546875 -vt 0.365132 0.531250 -vt 0.365132 0.515625 -vt 0.365132 0.500000 -vt 0.371711 0.687500 -vt 0.365132 0.671875 -vt 0.365132 0.656250 -vt 0.365132 0.640625 -vt 0.338816 0.593750 -vt 0.338816 0.609375 -vt 0.338816 0.625000 -vt 0.338816 0.640625 -vt 0.338816 0.656250 -vt 0.365132 0.687500 -vt 0.338816 0.671875 -vt 0.338816 0.500000 -vt 0.338816 0.515625 -vt 0.338816 0.531250 -vt 0.338816 0.546875 -vt 0.338816 0.562500 -vt 0.338816 0.578125 -vt 0.332237 0.609375 -vt 0.332237 0.593750 -vt 0.332237 0.578125 -vt 0.332237 0.562500 -vt 0.332237 0.546875 -vt 0.332237 0.531250 -vt 0.332237 0.515625 -vt 0.332237 0.500000 -vt 0.332237 0.687500 -vt 0.332237 0.671875 -vt 0.332237 0.656250 -vt 0.332237 0.640625 -vt 0.332237 0.625000 -vt 0.200658 0.593750 -vt 0.200658 0.609375 -vt 0.200658 0.625000 -vt 0.200658 0.640625 -vt 0.200658 0.656250 -vt 0.200658 0.671875 -vt 0.200658 0.500000 -vt 0.200658 0.515625 -vt 0.200658 0.531250 -vt 0.200658 0.546875 -vt 0.200658 0.562500 -vt 0.200658 0.578125 -vt 0.194079 0.562500 -vt 0.194079 0.546875 -vt 0.194079 0.578125 -vt 0.194079 0.593750 -vt 0.194079 0.609375 -vt 0.194079 0.625000 -vt 0.194079 0.640625 -vt 0.194079 0.656250 -vt 0.200658 0.687500 -vt 0.194079 0.671875 -vt 0.194079 0.500000 -vt 0.194079 0.531250 -vt 0.194079 0.515625 -vt 0.128289 0.593750 -vt 0.128289 0.609375 -vt 0.128289 0.625000 -vt 0.128289 0.640625 -vt 0.128289 0.656250 -vt 0.194079 0.687500 -vt 0.128289 0.671875 -vt 0.128289 0.500000 -vt 0.128289 0.515625 -vt 0.128289 0.531250 -vt 0.128289 0.546875 -vt 0.128289 0.562500 -vt 0.128289 0.578125 -vt 0.121711 0.593750 -vt 0.121711 0.578125 -vt 0.121711 0.609375 -vt 0.121711 0.640625 -vt 0.121711 0.625000 -vt 0.121711 0.671875 -vt 0.121711 0.656250 -vt 0.128289 0.687500 -vt 0.121711 0.500000 -vt 0.121711 0.515625 -vt 0.121711 0.531250 -vt 0.121711 0.546875 -vt 0.121711 0.562500 -vt 0.121711 0.687500 -vt 0.092105 0.593750 -vt 0.092105 0.609375 -vt 0.092105 0.625000 -vt 0.092105 0.640625 -vt 0.092105 0.656250 -vt 0.092105 0.671875 -vt 0.092105 0.500000 -vt 0.092105 0.515625 -vt 0.092105 0.531250 -vt 0.092105 0.546875 -vt 0.092105 0.562500 -vt 0.092105 0.578125 -vt 0.476974 0.609375 -vt 0.371711 0.593750 -vt 0.476974 0.593750 -vt 0.476974 0.625000 -vt 0.371711 0.609375 -vt 0.476974 0.640625 -vt 0.371711 0.625000 -vt 0.476974 0.656250 -vt 0.371711 0.640625 -vt 0.476974 0.671875 -vt 0.371711 0.656250 -vt 0.476974 0.687500 -vt 0.371711 0.671875 -vt 0.476974 0.515625 -vt 0.371711 0.500000 -vt 0.476974 0.500000 -vt 0.476974 0.531250 -vt 0.371711 0.515625 -vt 0.476974 0.546875 -vt 0.371711 0.531250 -vt 0.476974 0.562500 -vt 0.371711 0.546875 -vt 0.476974 0.578125 -vt 0.371711 0.562500 -vt 0.371711 0.578125 -vt 0.365132 0.625000 -vt 0.365132 0.609375 -vt 0.365132 0.593750 -vt 0.365132 0.578125 -vt 0.365132 0.562500 -vt 0.365132 0.546875 -vt 0.365132 0.531250 -vt 0.365132 0.515625 -vt 0.365132 0.500000 -vt 0.371711 0.687500 -vt 0.365132 0.671875 -vt 0.365132 0.656250 -vt 0.365132 0.640625 -vt 0.338816 0.593750 -vt 0.338816 0.609375 -vt 0.338816 0.625000 -vt 0.338816 0.640625 -vt 0.338816 0.656250 -vt 0.365132 0.687500 -vt 0.338816 0.671875 -vt 0.338816 0.500000 -vt 0.338816 0.515625 -vt 0.338816 0.531250 -vt 0.338816 0.546875 -vt 0.338816 0.562500 -vt 0.338816 0.578125 -vt 0.332237 0.609375 -vt 0.332237 0.593750 -vt 0.332237 0.578125 -vt 0.332237 0.562500 -vt 0.332237 0.546875 -vt 0.332237 0.531250 -vt 0.332237 0.515625 -vt 0.332237 0.500000 -vt 0.332237 0.687500 -vt 0.332237 0.671875 -vt 0.332237 0.656250 -vt 0.332237 0.640625 -vt 0.332237 0.625000 -vt 0.200658 0.593750 -vt 0.200658 0.609375 -vt 0.200658 0.625000 -vt 0.200658 0.640625 -vt 0.200658 0.656250 -vt 0.200658 0.671875 -vt 0.200658 0.500000 -vt 0.200658 0.515625 -vt 0.200658 0.531250 -vt 0.200658 0.546875 -vt 0.200658 0.562500 -vt 0.200658 0.578125 -vt 0.194079 0.546875 -vt 0.194079 0.578125 -vt 0.194079 0.562500 -vt 0.194079 0.593750 -vt 0.194079 0.609375 -vt 0.194079 0.625000 -vt 0.194079 0.640625 -vt 0.194079 0.671875 -vt 0.194079 0.656250 -vt 0.200658 0.687500 -vt 0.194079 0.500000 -vt 0.194079 0.531250 -vt 0.194079 0.515625 -vt 0.128289 0.593750 -vt 0.128289 0.609375 -vt 0.128289 0.625000 -vt 0.128289 0.640625 -vt 0.128289 0.656250 -vt 0.194079 0.687500 -vt 0.128289 0.671875 -vt 0.128289 0.500000 -vt 0.128289 0.515625 -vt 0.128289 0.531250 -vt 0.128289 0.546875 -vt 0.128289 0.562500 -vt 0.128289 0.578125 -vt 0.121711 0.593750 -vt 0.121711 0.578125 -vt 0.121711 0.625000 -vt 0.121711 0.609375 -vt 0.121711 0.656250 -vt 0.121711 0.640625 -vt 0.121711 0.687500 -vt 0.121711 0.671875 -vt 0.121711 0.515625 -vt 0.121711 0.500000 -vt 0.121711 0.546875 -vt 0.121711 0.531250 -vt 0.121711 0.562500 -vt 0.092105 0.593750 -vt 0.092105 0.609375 -vt 0.092105 0.625000 -vt 0.092105 0.640625 -vt 0.092105 0.656250 -vt 0.092105 0.671875 -vt 0.092105 0.500000 -vt 0.092105 0.515625 -vt 0.092105 0.531250 -vt 0.092105 0.546875 -vt 0.092105 0.562500 -vt 0.092105 0.578125 -vt 0.476974 0.625000 -vt 0.371711 0.609375 -vt 0.476974 0.609375 -vt 0.371711 0.593750 -vt 0.476974 0.593750 -vt 0.476974 0.640625 -vt 0.371711 0.625000 -vt 0.476974 0.656250 -vt 0.371711 0.640625 -vt 0.476974 0.671875 -vt 0.371711 0.656250 -vt 0.476974 0.687500 -vt 0.371711 0.671875 -vt 0.476974 0.515625 -vt 0.371711 0.500000 -vt 0.476974 0.500000 -vt 0.476974 0.531250 -vt 0.371711 0.515625 -vt 0.476974 0.546875 -vt 0.371711 0.531250 -vt 0.476974 0.562500 -vt 0.371711 0.546875 -vt 0.476974 0.578125 -vt 0.371711 0.562500 -vt 0.371711 0.578125 -vt 0.365132 0.625000 -vt 0.365132 0.609375 -vt 0.365132 0.593750 -vt 0.365132 0.578125 -vt 0.365132 0.562500 -vt 0.365132 0.546875 -vt 0.365132 0.531250 -vt 0.365132 0.515625 -vt 0.365132 0.500000 -vt 0.371711 0.687500 -vt 0.365132 0.671875 -vt 0.365132 0.656250 -vt 0.365132 0.640625 -vt 0.338816 0.593750 -vt 0.338816 0.609375 -vt 0.338816 0.625000 -vt 0.338816 0.640625 -vt 0.338816 0.656250 -vt 0.365132 0.687500 -vt 0.338816 0.671875 -vt 0.338816 0.500000 -vt 0.338816 0.515625 -vt 0.338816 0.531250 -vt 0.338816 0.546875 -vt 0.338816 0.562500 -vt 0.338816 0.578125 -vt 0.332237 0.609375 -vt 0.332237 0.593750 -vt 0.332237 0.578125 -vt 0.332237 0.562500 -vt 0.332237 0.546875 -vt 0.332237 0.531250 -vt 0.332237 0.515625 -vt 0.332237 0.500000 -vt 0.338816 0.687500 -vt 0.332237 0.671875 -vt 0.332237 0.656250 -vt 0.332237 0.640625 -vt 0.332237 0.625000 -vt 0.200658 0.593750 -vt 0.200658 0.609375 -vt 0.200658 0.625000 -vt 0.200658 0.640625 -vt 0.200658 0.656250 -vt 0.332237 0.687500 -vt 0.200658 0.671875 -vt 0.200658 0.500000 -vt 0.200658 0.515625 -vt 0.200658 0.531250 -vt 0.200658 0.546875 -vt 0.200658 0.562500 -vt 0.200658 0.578125 -vt 0.194079 0.546875 -vt 0.194079 0.578125 -vt 0.194079 0.562500 -vt 0.194079 0.593750 -vt 0.194079 0.609375 -vt 0.194079 0.640625 -vt 0.194079 0.625000 -vt 0.194079 0.671875 -vt 0.194079 0.656250 -vt 0.200658 0.687500 -vt 0.194079 0.500000 -vt 0.194079 0.531250 -vt 0.194079 0.515625 -vt 0.128289 0.593750 -vt 0.128289 0.609375 -vt 0.128289 0.625000 -vt 0.128289 0.640625 -vt 0.128289 0.656250 -vt 0.194079 0.687500 -vt 0.128289 0.671875 -vt 0.128289 0.500000 -vt 0.128289 0.515625 -vt 0.128289 0.531250 -vt 0.128289 0.546875 -vt 0.128289 0.562500 -vt 0.128289 0.578125 -vt 0.121711 0.593750 -vt 0.121711 0.578125 -vt 0.121711 0.609375 -vt 0.121711 0.625000 -vt 0.121711 0.656250 -vt 0.121711 0.640625 -vt 0.121711 0.687500 -vt 0.121711 0.671875 -vt 0.121711 0.515625 -vt 0.121711 0.500000 -vt 0.121711 0.546875 -vt 0.121711 0.531250 -vt 0.121711 0.562500 -vt 0.092105 0.593750 -vt 0.092105 0.609375 -vt 0.092105 0.625000 -vt 0.092105 0.640625 -vt 0.092105 0.656250 -vt 0.092105 0.671875 -vt 0.092105 0.500000 -vt 0.092105 0.515625 -vt 0.092105 0.531250 -vt 0.092105 0.546875 -vt 0.092105 0.562500 -vt 0.092105 0.578125 -vt 0.476974 0.609375 -vt 0.371711 0.593750 -vt 0.476974 0.593750 -vt 0.476974 0.625000 -vt 0.371711 0.609375 -vt 0.476974 0.640625 -vt 0.371711 0.625000 -vt 0.476974 0.656250 -vt 0.371711 0.640625 -vt 0.476974 0.671875 -vt 0.371711 0.656250 -vt 0.476974 0.687500 -vt 0.371711 0.671875 -vt 0.476974 0.515625 -vt 0.371711 0.500000 -vt 0.476974 0.500000 -vt 0.476974 0.531250 -vt 0.371711 0.515625 -vt 0.476974 0.546875 -vt 0.371711 0.531250 -vt 0.476974 0.562500 -vt 0.371711 0.546875 -vt 0.476974 0.578125 -vt 0.371711 0.562500 -vt 0.371711 0.578125 -vt 0.365132 0.625000 -vt 0.365132 0.609375 -vt 0.365132 0.593750 -vt 0.365132 0.578125 -vt 0.365132 0.562500 -vt 0.365132 0.546875 -vt 0.365132 0.531250 -vt 0.365132 0.515625 -vt 0.365132 0.500000 -vt 0.365132 0.687500 -vt 0.365132 0.671875 -vt 0.365132 0.656250 -vt 0.365132 0.640625 -vt 0.338816 0.593750 -vt 0.338816 0.609375 -vt 0.338816 0.625000 -vt 0.338816 0.640625 -vt 0.338816 0.656250 -vt 0.338816 0.671875 -vt 0.338816 0.500000 -vt 0.338816 0.515625 -vt 0.338816 0.531250 -vt 0.338816 0.546875 -vt 0.338816 0.562500 -vt 0.338816 0.578125 -vt 0.332237 0.593750 -vt 0.332237 0.578125 -vt 0.332237 0.562500 -vt 0.332237 0.546875 -vt 0.332237 0.531250 -vt 0.332237 0.515625 -vt 0.332237 0.500000 -vt 0.338816 0.687500 -vt 0.332237 0.671875 -vt 0.332237 0.656250 -vt 0.332237 0.640625 -vt 0.332237 0.625000 -vt 0.332237 0.609375 -vt 0.200658 0.593750 -vt 0.200658 0.609375 -vt 0.200658 0.625000 -vt 0.200658 0.640625 -vt 0.200658 0.656250 -vt 0.332237 0.687500 -vt 0.200658 0.671875 -vt 0.200658 0.500000 -vt 0.200658 0.515625 -vt 0.200658 0.531250 -vt 0.200658 0.546875 -vt 0.200658 0.562500 -vt 0.200658 0.578125 -vt 0.194079 0.562500 -vt 0.194079 0.546875 -vt 0.194079 0.578125 -vt 0.194079 0.593750 -vt 0.194079 0.609375 -vt 0.194079 0.625000 -vt 0.194079 0.640625 -vt 0.194079 0.671875 -vt 0.194079 0.656250 -vt 0.200658 0.687500 -vt 0.194079 0.500000 -vt 0.194079 0.531250 -vt 0.194079 0.515625 -vt 0.128289 0.593750 -vt 0.128289 0.609375 -vt 0.128289 0.625000 -vt 0.128289 0.640625 -vt 0.128289 0.656250 -vt 0.194079 0.687500 -vt 0.128289 0.671875 -vt 0.128289 0.500000 -vt 0.128289 0.515625 -vt 0.128289 0.531250 -vt 0.128289 0.546875 -vt 0.128289 0.562500 -vt 0.128289 0.578125 -vt 0.121711 0.593750 -vt 0.121711 0.578125 -vt 0.121711 0.609375 -vt 0.121711 0.625000 -vt 0.121711 0.640625 -vt 0.121711 0.671875 -vt 0.121711 0.656250 -vt 0.121711 0.687500 -vt 0.121711 0.500000 -vt 0.121711 0.515625 -vt 0.121711 0.531250 -vt 0.121711 0.546875 -vt 0.121711 0.562500 -vt 0.092105 0.593750 -vt 0.092105 0.609375 -vt 0.092105 0.625000 -vt 0.092105 0.640625 -vt 0.092105 0.656250 -vt 0.092105 0.671875 -vt 0.092105 0.500000 -vt 0.092105 0.515625 -vt 0.092105 0.531250 -vt 0.092105 0.546875 -vt 0.092105 0.562500 -vt 0.092105 0.578125 -vt 0.476974 0.625000 -vt 0.371711 0.609375 -vt 0.476974 0.609375 -vt 0.371711 0.593750 -vt 0.476974 0.593750 -vt 0.476974 0.640625 -vt 0.371711 0.625000 -vt 0.476974 0.656250 -vt 0.371711 0.640625 -vt 0.476974 0.671875 -vt 0.371711 0.656250 -vt 0.476974 0.687500 -vt 0.371711 0.671875 -vt 0.476974 0.515625 -vt 0.371711 0.500000 -vt 0.476974 0.500000 -vt 0.476974 0.531250 -vt 0.371711 0.515625 -vt 0.476974 0.546875 -vt 0.371711 0.531250 -vt 0.476974 0.562500 -vt 0.371711 0.546875 -vt 0.476974 0.578125 -vt 0.371711 0.562500 -vt 0.371711 0.578125 -vt 0.365132 0.625000 -vt 0.365132 0.609375 -vt 0.365132 0.593750 -vt 0.365132 0.578125 -vt 0.365132 0.562500 -vt 0.365132 0.546875 -vt 0.365132 0.531250 -vt 0.365132 0.515625 -vt 0.365132 0.500000 -vt 0.371711 0.687500 -vt 0.365132 0.671875 -vt 0.365132 0.656250 -vt 0.365132 0.640625 -vt 0.338816 0.593750 -vt 0.338816 0.609375 -vt 0.338816 0.625000 -vt 0.338816 0.640625 -vt 0.338816 0.656250 -vt 0.365132 0.687500 -vt 0.338816 0.671875 -vt 0.338816 0.500000 -vt 0.338816 0.515625 -vt 0.338816 0.531250 -vt 0.338816 0.546875 -vt 0.338816 0.562500 -vt 0.338816 0.578125 -vt 0.332237 0.609375 -vt 0.332237 0.593750 -vt 0.332237 0.578125 -vt 0.332237 0.562500 -vt 0.332237 0.546875 -vt 0.332237 0.531250 -vt 0.332237 0.515625 -vt 0.332237 0.500000 -vt 0.338816 0.687500 -vt 0.332237 0.671875 -vt 0.332237 0.656250 -vt 0.332237 0.640625 -vt 0.332237 0.625000 -vt 0.200658 0.593750 -vt 0.200658 0.609375 -vt 0.200658 0.625000 -vt 0.200658 0.640625 -vt 0.200658 0.656250 -vt 0.332237 0.687500 -vt 0.200658 0.671875 -vt 0.200658 0.500000 -vt 0.200658 0.515625 -vt 0.200658 0.531250 -vt 0.200658 0.546875 -vt 0.200658 0.562500 -vt 0.200658 0.578125 -vt 0.194079 0.562500 -vt 0.194079 0.546875 -vt 0.194079 0.578125 -vt 0.194079 0.593750 -vt 0.194079 0.609375 -vt 0.194079 0.625000 -vt 0.194079 0.640625 -vt 0.194079 0.656250 -vt 0.200658 0.687500 -vt 0.194079 0.671875 -vt 0.194079 0.500000 -vt 0.194079 0.531250 -vt 0.194079 0.515625 -vt 0.128289 0.593750 -vt 0.128289 0.609375 -vt 0.128289 0.625000 -vt 0.128289 0.640625 -vt 0.128289 0.656250 -vt 0.194079 0.687500 -vt 0.128289 0.671875 -vt 0.128289 0.500000 -vt 0.128289 0.515625 -vt 0.128289 0.531250 -vt 0.128289 0.546875 -vt 0.128289 0.562500 -vt 0.128289 0.578125 -vt 0.121711 0.593750 -vt 0.121711 0.578125 -vt 0.121711 0.609375 -vt 0.121711 0.625000 -vt 0.121711 0.640625 -vt 0.121711 0.656250 -vt 0.128289 0.687500 -vt 0.121711 0.671875 -vt 0.121711 0.500000 -vt 0.121711 0.515625 -vt 0.121711 0.546875 -vt 0.121711 0.531250 -vt 0.121711 0.562500 -vt 0.121711 0.687500 -vt 0.092105 0.593750 -vt 0.092105 0.609375 -vt 0.092105 0.625000 -vt 0.092105 0.640625 -vt 0.092105 0.656250 -vt 0.092105 0.671875 -vt 0.092105 0.500000 -vt 0.092105 0.515625 -vt 0.092105 0.531250 -vt 0.092105 0.546875 -vt 0.092105 0.562500 -vt 0.092105 0.578125 vt 0.092105 0.242188 vt 0.092105 0.277344 vt 0.092105 0.312500 @@ -3074,92 +4883,12 @@ vt 0.197368 0.035156 vt 0.197368 0.089844 vt 0.197368 0.097656 vt 0.197368 0.152344 -vt 0.338816 0.687500 -vt 0.092105 0.605469 -vt 0.092105 0.621094 -vt 0.092105 0.636719 -vt 0.092105 0.652344 -vt 0.092105 0.667969 -vt 0.092105 0.683594 -vt 0.092105 0.511719 -vt 0.092105 0.527344 -vt 0.092105 0.542969 -vt 0.092105 0.558594 -vt 0.092105 0.574219 -vt 0.092105 0.589844 -vt 0.769737 -0.000000 vt 0.480263 0.500000 vt 1.000000 0.375000 vt 0.973684 0.375000 vt 0.973684 0.046875 vt 0.309211 0.937500 vt 0.842105 0.312500 -vt 0.338816 0.687500 -vt 0.092105 0.605469 -vt 0.092105 0.621094 -vt 0.092105 0.636719 -vt 0.092105 0.652344 -vt 0.092105 0.667969 -vt 0.092105 0.683594 -vt 0.092105 0.511719 -vt 0.092105 0.527344 -vt 0.092105 0.542969 -vt 0.092105 0.558594 -vt 0.092105 0.574219 -vt 0.092105 0.589844 -vt 0.338816 0.687500 -vt 0.128289 0.687500 -vt 0.092105 0.605469 -vt 0.092105 0.621094 -vt 0.092105 0.636719 -vt 0.092105 0.652344 -vt 0.092105 0.667969 -vt 0.092105 0.683594 -vt 0.092105 0.511719 -vt 0.092105 0.527344 -vt 0.092105 0.542969 -vt 0.092105 0.558594 -vt 0.092105 0.574219 -vt 0.092105 0.589844 -vt 0.128289 0.687500 -vt 0.092105 0.605469 -vt 0.092105 0.621094 -vt 0.092105 0.636719 -vt 0.092105 0.652344 -vt 0.092105 0.667969 -vt 0.092105 0.683594 -vt 0.092105 0.511719 -vt 0.092105 0.527344 -vt 0.092105 0.542969 -vt 0.092105 0.558594 -vt 0.092105 0.574219 -vt 0.092105 0.589844 -vt 0.371711 0.687500 -vt 0.128289 0.687500 -vt 0.092105 0.605469 -vt 0.092105 0.621094 -vt 0.092105 0.636719 -vt 0.092105 0.652344 -vt 0.092105 0.667969 -vt 0.092105 0.683594 -vt 0.092105 0.511719 -vt 0.092105 0.527344 -vt 0.092105 0.542969 -vt 0.092105 0.558594 -vt 0.092105 0.574219 -vt 0.092105 0.589844 -vt 0.092105 0.605469 -vt 0.092105 0.621094 -vt 0.092105 0.636719 -vt 0.092105 0.652344 -vt 0.092105 0.667969 -vt 0.092105 0.683594 -vt 0.092105 0.511719 -vt 0.092105 0.527344 -vt 0.092105 0.542969 -vt 0.092105 0.558594 -vt 0.092105 0.574219 -vt 0.092105 0.589844 vn -0.0000 0.0000 -1.0000 vn 1.0000 0.0000 0.0000 vn -1.0000 0.0000 0.0000 @@ -3202,8 +4931,8 @@ vn 0.0000 0.8944 0.4472 vn 0.7071 0.0000 -0.7071 vn 0.7071 -0.7071 0.0000 vn -0.7071 -0.7071 0.0000 -vn 0.7071 0.7071 0.0000 vn -0.7071 0.7071 0.0000 +vn 0.7071 0.7071 0.0000 vn 0.9239 0.3827 0.0000 vn -0.3827 -0.9239 0.0000 vn 0.3827 0.9239 0.0000 @@ -3226,2374 +4955,654 @@ vn 0.3423 -0.8263 -0.4472 vn 0.6325 -0.6325 -0.4472 vn 0.8263 -0.3423 -0.4472 vn 0.8263 0.3423 -0.4472 -vn -0.5000 0.8660 0.0000 -vn -0.8660 0.5000 0.0000 -vn -0.8660 -0.5000 0.0000 -vn -0.5000 -0.8660 0.0000 -vn 0.5000 -0.8660 0.0000 -vn 0.8660 -0.5000 0.0000 -vn 0.8660 0.5000 0.0000 -vn 0.5000 0.8660 0.0000 -vn -0.9701 -0.0000 -0.2425 -vn -0.8402 0.4851 -0.2425 -vn -0.4851 0.8402 -0.2425 -vn 0.0000 0.9701 -0.2425 -vn 0.4851 0.8402 -0.2425 -vn 0.8402 0.4851 -0.2425 -vn 0.9701 0.0000 -0.2425 -vn 0.8402 -0.4851 -0.2425 -vn 0.4851 -0.8402 -0.2425 -vn -0.0000 -0.9701 -0.2425 -vn -0.4851 -0.8402 -0.2425 -vn -0.8402 -0.4851 -0.2425 -vn 0.0000 0.9701 0.2425 -vn -0.4851 0.8402 0.2425 -vn 0.4851 0.8402 0.2425 -vn 0.8402 0.4851 0.2425 -vn 0.9701 -0.0000 0.2425 -vn 0.8402 -0.4851 0.2425 -vn 0.4851 -0.8402 0.2425 -vn -0.0000 -0.9701 0.2425 -vn -0.4851 -0.8402 0.2425 -vn -0.8402 -0.4851 0.2425 -vn -0.9701 -0.0000 0.2425 -vn -0.8402 0.4851 0.2425 vn 0.0000 -0.7071 0.7071 vn 0.9808 -0.1951 0.0000 vn -0.9808 -0.1951 0.0000 s off -f 79/1/1 75/2/1 71/3/1 -f 90/4/2 86/5/2 85/6/2 -f 460/7/3 461/8/3 459/9/3 -f 89/10/4 86/11/4 90/12/4 -f 89/13/3 84/14/3 83/15/3 -f 84/16/5 90/17/5 88/18/5 -f 93/19/6 92/20/6 91/21/6 -f 85/6/7 93/19/7 87/22/7 -f 461/23/3 462/24/3 468/25/3 -f 83/15/8 92/20/8 81/26/8 -f 11/27/9 13/28/9 1/29/9 -f 203/30/9 226/31/9 214/32/9 -f 214/32/9 225/33/9 213/34/9 -f 213/34/9 224/35/9 212/36/9 -f 212/36/9 223/37/9 211/38/9 -f 211/38/9 222/39/9 210/40/9 -f 209/41/9 222/42/9 221/43/9 -f 209/44/9 220/45/9 208/46/9 -f 208/46/9 219/47/9 207/48/9 -f 207/48/9 218/49/9 206/50/9 -f 206/50/9 217/51/9 205/52/9 -f 204/53/9 217/54/9 216/55/9 -f 203/30/9 216/56/9 215/57/9 -f 237/58/9 227/59/9 231/60/9 -f 259/61/1 257/62/1 253/63/1 -f 243/64/9 245/65/9 247/66/9 -f 273/67/3 277/68/3 269/69/3 -f 266/70/10 263/71/10 264/72/10 -f 268/73/11 265/74/11 266/70/11 -f 278/75/2 274/76/2 270/77/2 -f 263/78/1 272/79/1 264/80/1 -f 274/76/12 275/81/12 273/82/12 -f 276/83/1 277/84/1 275/85/1 -f 271/86/12 280/87/12 272/79/12 -f 279/88/9 282/89/9 280/87/9 -f 282/90/12 277/91/12 278/92/12 -f 270/77/9 273/93/9 269/94/9 -f 279/95/3 263/96/3 281/97/3 -f 280/87/2 264/80/2 272/79/2 -f 267/98/3 269/69/3 277/68/3 -f 278/75/2 270/77/2 268/73/2 -f 301/99/1 303/100/1 300/101/1 -f 310/102/13 312/103/13 301/99/13 -f 305/104/2 315/105/2 316/106/2 -f 303/100/14 319/107/14 300/101/14 -f 305/108/15 313/109/15 315/110/15 -f 320/111/16 309/112/16 326/113/16 -f 304/114/17 306/115/17 303/100/17 -f 317/116/3 318/117/3 310/118/3 -f 306/115/18 321/119/18 303/100/18 -f 300/101/19 310/102/19 301/99/19 -f 314/120/12 316/106/12 313/109/12 -f 322/121/20 307/122/20 302/123/20 -f 302/123/21 311/124/21 299/125/21 -f 301/99/22 313/109/22 304/114/22 -f 307/122/23 314/120/23 302/123/23 -f 309/112/24 311/124/24 317/126/24 -f 322/127/6 321/119/6 323/128/6 -f 308/129/25 319/107/25 325/130/25 -f 320/111/9 302/123/9 299/125/9 -f 333/131/26 336/132/26 332/133/26 -f 329/134/27 334/135/27 330/136/27 -f 328/137/28 332/133/28 327/138/28 -f 330/139/6 333/140/6 328/141/6 -f 327/142/12 331/143/12 329/144/12 -f 337/145/2 335/146/2 336/132/2 -f 334/147/29 337/145/29 333/140/29 -f 332/148/30 335/146/30 331/143/30 -f 331/149/31 338/150/31 334/135/31 -f 348/151/32 345/152/32 344/153/32 -f 346/154/33 341/155/33 342/156/33 -f 344/153/34 340/157/34 339/158/34 -f 345/159/6 342/160/6 340/161/6 -f 343/162/12 339/163/12 341/164/12 -f 347/165/3 349/166/3 348/151/3 -f 345/159/35 350/167/35 346/168/35 -f 343/162/36 348/151/36 344/169/36 -f 346/154/37 347/165/37 343/170/37 -f 360/171/9 356/172/9 372/173/9 -f 365/174/1 373/175/1 381/176/1 -f 388/177/9 412/178/9 404/179/9 -f 397/180/1 405/181/1 413/182/1 -f 416/183/3 417/184/3 415/185/3 -f 418/186/1 421/187/1 417/184/1 -f 422/188/2 419/189/2 421/190/2 -f 421/191/6 415/185/6 417/184/6 -f 418/186/12 420/192/12 422/188/12 -f 439/193/16 416/183/16 415/185/16 -f 442/194/38 446/195/38 444/196/38 -f 441/197/3 448/198/3 442/199/3 -f 420/200/1 442/201/1 419/202/1 -f 439/193/9 443/203/9 440/204/9 -f 443/203/39 441/205/39 420/200/39 -f 446/206/20 443/203/20 444/196/20 -f 447/207/40 450/208/40 448/209/40 -f 442/210/6 450/208/6 446/206/6 -f 441/197/12 449/211/12 447/212/12 -f 446/206/2 449/211/2 445/213/2 -f 83/214/1 84/16/1 88/18/1 -f 455/215/6 457/216/6 456/217/6 -f 454/218/14 455/215/14 453/219/14 -f 451/220/9 457/216/9 452/221/9 -f 452/222/2 458/223/2 454/224/2 -f 451/225/3 455/215/3 456/217/3 -f 466/226/2 463/227/2 465/228/2 -f 465/228/6 459/229/6 461/230/6 -f 462/231/12 464/232/12 466/226/12 -f 482/233/10 484/234/10 478/235/10 -f 466/236/2 465/237/2 469/238/2 -f 468/25/3 472/239/3 461/23/3 -f 491/240/2 470/241/2 496/242/2 -f 474/243/1 473/244/1 494/245/1 -f 461/246/9 471/247/9 465/237/9 -f 469/238/1 474/248/1 468/25/1 -f 465/237/2 473/249/2 469/238/2 -f 476/250/3 477/251/3 475/252/3 -f 477/253/3 478/254/3 484/234/3 -f 482/233/2 479/255/2 481/256/2 -f 481/257/6 475/252/6 477/251/6 -f 478/235/12 480/258/12 482/233/12 -f 471/247/41 494/245/41 473/249/41 -f 482/259/2 481/260/2 485/261/2 -f 484/234/3 488/262/3 477/253/3 -f 498/263/3 483/264/3 493/265/3 -f 493/266/1 486/267/1 491/268/1 -f 477/253/9 487/269/9 481/270/9 -f 485/261/1 490/271/1 484/234/1 -f 481/260/2 489/272/2 485/261/2 -f 490/271/42 495/273/42 488/262/42 -f 470/241/12 483/264/12 467/274/12 -f 487/275/9 488/276/9 495/273/9 -f 489/277/12 472/278/12 474/243/12 -f 471/279/9 472/280/9 492/281/9 -f 495/273/9 472/280/9 487/275/9 -f 490/282/1 489/277/1 497/283/1 -f 494/245/1 489/277/1 474/243/1 -f 492/281/6 497/283/6 494/245/6 -f 466/226/10 468/25/10 462/231/10 -f 496/284/9 467/274/9 498/285/9 -f 500/286/12 501/287/12 499/288/12 -f 503/289/6 505/290/6 504/291/6 -f 500/286/2 506/292/2 502/293/2 -f 501/287/3 504/294/3 499/288/3 -f 502/293/1 503/289/1 501/287/1 -f 499/288/9 505/295/9 500/286/9 -f 510/296/1 513/297/1 509/298/1 -f 507/299/9 512/300/9 508/301/9 -f 508/301/6 514/302/6 510/296/6 -f 509/298/12 511/303/12 507/304/12 -f 512/300/42 518/305/42 514/302/42 -f 513/306/43 515/307/43 511/308/43 -f 516/309/3 522/310/3 518/305/3 -f 517/311/2 519/312/2 515/313/2 -f 521/314/41 523/315/41 519/316/41 -f 520/317/44 526/318/44 522/310/44 -f 515/319/9 512/300/9 511/320/9 -f 515/321/9 520/317/9 516/309/9 -f 525/322/9 519/323/9 523/324/9 -f 514/302/1 517/325/1 513/306/1 -f 521/326/1 518/305/1 522/310/1 -f 522/310/1 524/327/1 521/314/1 -f 549/328/1 547/329/1 550/330/1 -f 552/331/9 528/332/9 551/333/9 -f 551/333/12 550/330/12 552/331/12 -f 531/334/1 535/335/1 539/336/1 -f 536/337/9 534/338/9 530/339/9 -f 85/340/9 86/11/9 82/341/9 -f 661/342/9 684/343/9 672/344/9 -f 672/344/9 683/345/9 671/346/9 -f 671/346/9 682/347/9 670/348/9 -f 670/348/9 681/349/9 669/350/9 -f 669/350/9 680/351/9 668/352/9 -f 667/353/9 680/354/9 679/355/9 -f 667/356/9 678/357/9 666/358/9 -f 666/358/9 677/359/9 665/360/9 -f 665/360/9 676/361/9 664/362/9 -f 664/362/9 675/363/9 663/364/9 -f 662/365/9 675/366/9 674/367/9 -f 661/342/9 674/368/9 673/369/9 -f 695/370/9 685/371/9 689/372/9 -f 805/373/9 828/374/9 816/375/9 -f 816/375/9 827/376/9 815/377/9 -f 815/377/9 826/378/9 814/379/9 -f 814/379/9 825/380/9 813/381/9 -f 812/382/9 825/383/9 824/384/9 -f 811/385/9 824/386/9 823/387/9 -f 811/388/9 822/389/9 810/390/9 -f 810/390/9 821/391/9 809/392/9 -f 809/392/9 820/393/9 808/394/9 -f 808/394/9 819/395/9 807/396/9 -f 807/396/9 818/397/9 806/398/9 -f 805/373/9 818/399/9 817/400/9 -f 839/401/9 829/402/9 833/403/9 -f 949/404/9 972/405/9 960/406/9 -f 960/406/9 971/407/9 959/408/9 -f 959/408/9 970/409/9 958/410/9 -f 957/411/9 970/412/9 969/413/9 -f 957/411/9 968/414/9 956/415/9 -f 955/416/9 968/417/9 967/418/9 -f 955/419/9 966/420/9 954/421/9 -f 954/421/9 965/422/9 953/423/9 -f 953/423/9 964/424/9 952/425/9 -f 952/425/9 963/426/9 951/427/9 -f 950/428/9 963/429/9 962/430/9 -f 949/404/9 962/431/9 961/432/9 -f 977/433/9 981/434/9 973/435/9 -f 1093/436/9 1116/437/9 1104/438/9 -f 1104/438/9 1115/439/9 1103/440/9 -f 1103/440/9 1114/441/9 1102/442/9 -f 1101/443/9 1114/444/9 1113/445/9 -f 1100/446/9 1113/447/9 1112/448/9 -f 1099/449/9 1112/450/9 1111/451/9 -f 1099/452/9 1110/453/9 1098/454/9 -f 1098/454/9 1109/455/9 1097/456/9 -f 1097/456/9 1108/457/9 1096/458/9 -f 1096/458/9 1107/459/9 1095/460/9 -f 1095/460/9 1106/461/9 1094/462/9 -f 1093/436/9 1106/463/9 1105/464/9 -f 1127/465/9 1117/466/9 1121/467/9 -f 1237/468/9 1260/469/9 1248/470/9 -f 1248/470/9 1259/471/9 1247/472/9 -f 1247/472/9 1258/473/9 1246/474/9 -f 1245/475/9 1258/476/9 1257/477/9 -f 1245/475/9 1256/478/9 1244/479/9 -f 1243/480/9 1256/481/9 1255/482/9 -f 1243/483/9 1254/484/9 1242/485/9 -f 1242/485/9 1253/486/9 1241/487/9 -f 1241/487/9 1252/488/9 1240/489/9 -f 1240/489/9 1251/490/9 1239/491/9 -f 1238/492/9 1251/493/9 1250/494/9 -f 1238/492/9 1249/495/9 1237/468/9 -f 1271/496/9 1261/497/9 1265/498/9 -f 67/499/1 66/500/1 65/501/1 -f 65/501/1 80/502/1 67/499/1 -f 80/502/1 79/1/1 67/499/1 -f 79/1/1 78/503/1 77/504/1 -f 77/504/1 76/505/1 79/1/1 -f 76/505/1 75/2/1 79/1/1 -f 75/2/1 74/506/1 71/3/1 -f 74/506/1 73/507/1 71/3/1 -f 73/507/1 72/508/1 71/3/1 -f 71/3/1 70/509/1 69/510/1 -f 69/510/1 68/511/1 67/499/1 -f 71/3/1 69/510/1 67/499/1 -f 67/499/1 79/1/1 71/3/1 -f 85/6/2 87/22/2 90/4/2 -f 87/22/2 88/512/2 90/4/2 -f 460/7/3 462/231/3 461/8/3 -f 89/10/4 82/341/4 86/11/4 -f 83/15/3 81/26/3 89/13/3 -f 81/26/3 82/513/3 89/13/3 -f 84/16/5 89/514/5 90/17/5 -f 93/19/6 94/515/6 92/20/6 -f 85/6/7 94/515/7 93/19/7 -f 83/15/8 91/21/8 92/20/8 -f 1/29/9 2/516/9 3/517/9 -f 3/517/9 4/518/9 1/29/9 -f 4/518/9 5/519/9 1/29/9 -f 5/519/9 6/520/9 7/521/9 -f 7/521/9 8/522/9 9/523/9 -f 9/523/9 10/524/9 11/27/9 -f 11/27/9 12/525/9 13/28/9 -f 13/28/9 14/526/9 1/29/9 -f 14/526/9 15/527/9 1/29/9 -f 15/527/9 16/528/9 1/29/9 -f 5/519/9 7/521/9 1/29/9 -f 7/521/9 9/523/9 1/29/9 -f 9/523/9 11/27/9 1/29/9 -f 203/30/9 215/529/9 226/31/9 -f 214/32/9 226/530/9 225/33/9 -f 213/34/9 225/531/9 224/35/9 -f 212/36/9 224/532/9 223/37/9 -f 211/38/9 223/533/9 222/39/9 -f 209/41/9 210/40/9 222/42/9 -f 209/44/9 221/534/9 220/45/9 -f 208/46/9 220/535/9 219/47/9 -f 207/48/9 219/536/9 218/49/9 -f 206/50/9 218/537/9 217/51/9 -f 204/53/9 205/52/9 217/54/9 -f 203/30/9 204/53/9 216/56/9 -f 227/59/9 228/538/9 229/539/9 -f 229/539/9 230/540/9 227/59/9 -f 230/540/9 231/60/9 227/59/9 -f 231/60/9 232/541/9 233/542/9 -f 233/542/9 234/543/9 235/544/9 -f 235/544/9 236/545/9 237/58/9 -f 237/58/9 238/546/9 227/59/9 -f 231/60/9 233/542/9 235/544/9 -f 235/544/9 237/58/9 231/60/9 -f 253/63/1 252/547/1 251/548/1 -f 251/548/1 262/549/1 261/550/1 -f 261/550/1 260/551/1 259/61/1 -f 259/61/1 258/552/1 257/62/1 -f 257/62/1 256/553/1 255/554/1 -f 255/554/1 254/555/1 257/62/1 -f 254/555/1 253/63/1 257/62/1 -f 253/63/1 251/548/1 261/550/1 -f 261/550/1 259/61/1 253/63/1 -f 239/556/9 240/557/9 241/558/9 -f 241/558/9 242/559/9 243/64/9 -f 243/64/9 244/560/9 245/65/9 -f 245/65/9 246/561/9 247/66/9 -f 247/66/9 248/562/9 239/556/9 -f 248/562/9 249/563/9 239/556/9 -f 249/563/9 250/564/9 239/556/9 -f 239/556/9 241/558/9 247/66/9 -f 241/558/9 243/64/9 247/66/9 -f 273/67/3 275/565/3 277/68/3 -f 266/70/10 265/74/10 263/71/10 -f 268/73/11 267/566/11 265/74/11 -f 278/75/2 276/83/2 274/76/2 -f 263/78/1 271/567/1 272/79/1 -f 274/76/12 276/83/12 275/81/12 -f 276/83/1 278/75/1 277/84/1 -f 271/86/12 279/568/12 280/87/12 -f 279/88/9 281/569/9 282/89/9 -f 282/90/12 281/570/12 277/91/12 -f 270/77/9 274/76/9 273/93/9 -f 279/95/3 271/571/3 263/96/3 -f 280/87/2 282/89/2 264/80/2 -f 277/68/3 281/97/3 267/98/3 -f 281/97/3 263/96/3 267/98/3 -f 263/96/3 265/572/3 267/98/3 -f 266/573/2 264/80/2 268/73/2 -f 264/80/2 282/89/2 268/73/2 -f 282/89/2 278/75/2 268/73/2 -f 301/99/1 304/114/1 303/100/1 -f 310/102/13 318/574/13 312/103/13 -f 316/106/2 307/575/2 305/104/2 -f 307/575/2 323/576/2 324/577/2 -f 306/578/2 307/575/2 324/577/2 -f 306/578/2 305/104/2 307/575/2 -f 303/100/14 321/119/14 319/107/14 -f 305/108/15 304/114/15 313/109/15 -f 320/111/16 299/125/16 309/112/16 -f 304/114/17 305/108/17 306/115/17 -f 310/118/3 308/579/3 309/580/3 -f 308/579/3 325/581/3 309/580/3 -f 325/581/3 326/582/3 309/580/3 -f 309/580/3 317/116/3 310/118/3 -f 306/115/18 324/583/18 321/119/18 -f 300/101/19 308/129/19 310/102/19 -f 315/105/12 313/109/12 316/106/12 -f 313/109/12 312/103/12 314/120/12 -f 312/103/12 318/117/12 317/116/12 -f 317/116/12 311/124/12 312/103/12 -f 311/124/12 314/120/12 312/103/12 -f 322/121/20 323/584/20 307/122/20 -f 302/123/21 314/120/21 311/124/21 -f 301/99/22 312/103/22 313/109/22 -f 307/122/23 316/585/23 314/120/23 -f 309/112/24 299/125/24 311/124/24 -f 322/127/6 320/586/6 319/107/6 -f 320/586/6 326/587/6 319/107/6 -f 326/587/6 325/588/6 319/107/6 -f 319/107/6 321/119/6 322/127/6 -f 321/119/6 324/589/6 323/128/6 -f 308/129/25 300/101/25 319/107/25 -f 320/111/9 322/121/9 302/123/9 -f 333/131/26 337/145/26 336/132/26 -f 329/134/27 331/149/27 334/135/27 -f 328/137/28 333/131/28 332/133/28 -f 330/139/6 334/147/6 333/140/6 -f 327/142/12 332/148/12 331/143/12 -f 337/145/2 338/150/2 335/146/2 -f 334/147/29 338/150/29 337/145/29 -f 332/148/30 336/132/30 335/146/30 -f 331/149/31 335/146/31 338/150/31 -f 348/151/32 349/166/32 345/152/32 -f 346/154/33 343/170/33 341/155/33 -f 344/153/34 345/152/34 340/157/34 -f 345/159/6 346/168/6 342/160/6 -f 343/162/12 344/169/12 339/163/12 -f 347/165/3 350/167/3 349/166/3 -f 345/159/35 349/166/35 350/167/35 -f 343/162/36 347/165/36 348/151/36 -f 346/154/37 350/167/37 347/165/37 -f 356/172/9 354/590/9 352/591/9 -f 352/591/9 382/592/9 380/593/9 -f 380/593/9 378/594/9 376/595/9 -f 376/595/9 374/596/9 372/173/9 -f 372/173/9 370/597/9 368/598/9 -f 368/598/9 366/599/9 364/600/9 -f 364/600/9 362/601/9 360/171/9 -f 360/171/9 358/602/9 356/172/9 -f 356/172/9 352/591/9 372/173/9 -f 352/591/9 380/593/9 372/173/9 -f 380/593/9 376/595/9 372/173/9 -f 372/173/9 368/598/9 364/600/9 -f 364/600/9 360/171/9 372/173/9 -f 381/176/1 351/603/1 357/604/1 -f 351/603/1 353/605/1 357/604/1 -f 353/605/1 355/606/1 357/604/1 -f 357/604/1 359/607/1 365/174/1 -f 359/607/1 361/608/1 365/174/1 -f 361/608/1 363/609/1 365/174/1 -f 365/174/1 367/610/1 369/611/1 -f 369/611/1 371/612/1 365/174/1 -f 371/612/1 373/175/1 365/174/1 -f 373/175/1 375/613/1 381/176/1 -f 375/613/1 377/614/1 381/176/1 -f 377/614/1 379/615/1 381/176/1 -f 381/176/1 357/604/1 365/174/1 -f 388/177/9 386/616/9 412/178/9 -f 386/616/9 384/617/9 412/178/9 -f 384/617/9 414/618/9 412/178/9 -f 412/178/9 410/619/9 408/620/9 -f 408/620/9 406/621/9 412/178/9 -f 406/621/9 404/179/9 412/178/9 -f 404/179/9 402/622/9 400/623/9 -f 400/623/9 398/624/9 396/625/9 -f 396/625/9 394/626/9 392/627/9 -f 392/627/9 390/628/9 388/177/9 -f 404/179/9 400/623/9 396/625/9 -f 396/625/9 392/627/9 404/179/9 -f 392/627/9 388/177/9 404/179/9 -f 413/182/1 383/629/1 385/630/1 -f 385/630/1 387/631/1 389/632/1 -f 389/632/1 391/633/1 397/180/1 -f 391/633/1 393/634/1 397/180/1 -f 393/634/1 395/635/1 397/180/1 -f 397/180/1 399/636/1 405/181/1 -f 399/636/1 401/637/1 405/181/1 -f 401/637/1 403/638/1 405/181/1 -f 405/181/1 407/639/1 409/640/1 -f 409/640/1 411/641/1 413/182/1 -f 413/182/1 385/630/1 389/632/1 -f 405/181/1 409/640/1 413/182/1 -f 413/182/1 389/632/1 397/180/1 -f 416/183/3 418/186/3 417/184/3 -f 418/186/1 422/642/1 421/187/1 -f 422/188/2 420/192/2 419/189/2 -f 421/191/6 419/643/6 415/185/6 -f 418/186/12 416/183/12 420/192/12 -f 439/193/16 440/204/16 416/183/16 -f 444/196/38 439/193/38 419/644/38 -f 439/193/38 415/645/38 419/644/38 -f 419/644/38 442/194/38 444/196/38 -f 441/197/3 447/212/3 448/198/3 -f 420/200/1 441/205/1 442/201/1 -f 439/193/9 444/196/9 443/203/9 -f 416/646/39 440/204/39 420/200/39 -f 440/204/39 443/203/39 420/200/39 -f 443/203/39 445/647/39 441/205/39 -f 446/206/20 445/213/20 443/203/20 -f 447/207/40 449/211/40 450/208/40 -f 442/210/6 448/648/6 450/208/6 -f 441/197/12 445/213/12 449/211/12 -f 446/206/2 450/208/2 449/211/2 -f 88/18/1 87/649/1 83/214/1 -f 87/649/1 93/19/1 83/214/1 -f 93/19/1 91/21/1 83/214/1 -f 455/215/6 458/223/6 457/216/6 -f 454/218/14 458/223/14 455/215/14 -f 451/220/9 456/217/9 457/216/9 -f 452/222/2 457/216/2 458/223/2 -f 451/225/3 453/650/3 455/215/3 -f 466/226/2 464/232/2 463/227/2 -f 465/228/6 463/227/6 459/229/6 -f 462/231/12 460/7/12 464/232/12 -f 482/233/10 485/261/10 484/234/10 -f 468/25/3 474/248/3 472/239/3 -f 491/240/2 486/267/2 470/241/2 -f 461/246/9 472/651/9 471/247/9 -f 469/238/1 473/249/1 474/248/1 -f 465/237/2 471/247/2 473/249/2 -f 476/250/3 478/235/3 477/251/3 -f 482/233/2 480/258/2 479/255/2 -f 481/257/6 479/652/6 475/252/6 -f 478/235/12 476/250/12 480/258/12 -f 471/247/41 492/281/41 494/245/41 -f 484/234/3 490/271/3 488/262/3 -f 498/263/3 467/274/3 483/264/3 -f 493/266/1 483/264/1 486/267/1 -f 477/253/9 488/262/9 487/269/9 -f 485/261/1 489/272/1 490/271/1 -f 481/260/2 487/653/2 489/272/2 -f 490/271/42 497/283/42 495/273/42 -f 470/241/12 486/267/12 483/264/12 -f 489/277/12 487/654/12 472/278/12 -f 495/273/9 492/281/9 472/280/9 -f 494/245/1 497/283/1 489/277/1 -f 492/281/6 495/273/6 497/283/6 -f 466/226/10 469/238/10 468/25/10 -f 496/284/9 470/241/9 467/274/9 -f 500/286/12 502/293/12 501/287/12 -f 503/289/6 506/655/6 505/290/6 -f 500/286/2 505/656/2 506/292/2 -f 501/287/3 503/657/3 504/294/3 -f 502/293/1 506/655/1 503/289/1 -f 499/288/9 504/658/9 505/295/9 -f 510/296/1 514/302/1 513/297/1 -f 507/299/9 511/659/9 512/300/9 -f 508/301/6 512/300/6 514/302/6 -f 509/298/12 513/297/12 511/303/12 -f 512/300/42 516/309/42 518/305/42 -f 513/306/43 517/325/43 515/307/43 -f 516/309/3 520/317/3 522/310/3 -f 517/311/2 521/326/2 519/312/2 -f 521/314/41 524/327/41 523/315/41 -f 520/317/44 525/322/44 526/318/44 -f 515/319/9 516/309/9 512/300/9 -f 515/321/9 519/660/9 520/317/9 -f 525/322/9 520/317/9 519/323/9 -f 514/302/1 518/305/1 517/325/1 -f 521/326/1 517/311/1 518/305/1 -f 522/310/1 526/318/1 524/327/1 -f 549/328/1 548/661/1 547/329/1 -f 552/331/9 527/662/9 528/332/9 -f 551/333/12 549/328/12 550/330/12 -f 545/663/1 529/664/1 531/334/1 -f 531/334/1 533/665/1 535/335/1 -f 535/335/1 537/666/1 539/336/1 -f 539/336/1 541/667/1 531/334/1 -f 541/667/1 543/668/1 531/334/1 -f 543/668/1 545/663/1 531/334/1 -f 534/338/9 532/669/9 530/339/9 -f 530/339/9 546/670/9 544/671/9 -f 544/671/9 542/672/9 530/339/9 -f 542/672/9 540/673/9 530/339/9 -f 540/673/9 538/674/9 530/339/9 -f 538/674/9 536/337/9 530/339/9 -f 82/341/9 81/675/9 85/340/9 -f 81/675/9 92/20/9 85/340/9 -f 92/20/9 94/515/9 85/340/9 -f 661/342/9 673/676/9 684/343/9 -f 672/344/9 684/677/9 683/345/9 -f 671/346/9 683/678/9 682/347/9 -f 670/348/9 682/679/9 681/349/9 -f 669/350/9 681/680/9 680/351/9 -f 667/353/9 668/352/9 680/354/9 -f 667/356/9 679/681/9 678/357/9 -f 666/358/9 678/682/9 677/359/9 -f 665/360/9 677/683/9 676/361/9 -f 664/362/9 676/684/9 675/363/9 -f 662/365/9 663/364/9 675/366/9 -f 661/342/9 662/365/9 674/368/9 -f 685/371/9 686/685/9 687/686/9 -f 687/686/9 688/687/9 685/371/9 -f 688/687/9 689/372/9 685/371/9 -f 689/372/9 690/688/9 691/689/9 -f 691/689/9 692/690/9 693/691/9 -f 693/691/9 694/692/9 695/370/9 -f 695/370/9 696/693/9 685/371/9 -f 689/372/9 691/689/9 693/691/9 -f 693/691/9 695/370/9 689/372/9 -f 805/373/9 817/694/9 828/374/9 -f 816/375/9 828/695/9 827/376/9 -f 815/377/9 827/696/9 826/378/9 -f 814/379/9 826/697/9 825/380/9 -f 812/382/9 813/381/9 825/383/9 -f 811/385/9 812/382/9 824/386/9 -f 811/388/9 823/698/9 822/389/9 -f 810/390/9 822/699/9 821/391/9 -f 809/392/9 821/700/9 820/393/9 -f 808/394/9 820/701/9 819/395/9 -f 807/396/9 819/702/9 818/397/9 -f 805/373/9 806/398/9 818/399/9 -f 829/402/9 830/703/9 831/704/9 -f 831/704/9 832/705/9 829/402/9 -f 832/705/9 833/403/9 829/402/9 -f 833/403/9 834/706/9 835/707/9 -f 835/707/9 836/708/9 837/709/9 -f 837/709/9 838/710/9 839/401/9 -f 839/401/9 840/711/9 829/402/9 -f 833/403/9 835/707/9 837/709/9 -f 837/709/9 839/401/9 833/403/9 -f 949/404/9 961/712/9 972/405/9 -f 960/406/9 972/713/9 971/407/9 -f 959/408/9 971/714/9 970/409/9 -f 957/411/9 958/410/9 970/412/9 -f 957/411/9 969/715/9 968/414/9 -f 955/416/9 956/415/9 968/417/9 -f 955/419/9 967/716/9 966/420/9 -f 954/421/9 966/717/9 965/422/9 -f 953/423/9 965/718/9 964/424/9 -f 952/425/9 964/719/9 963/426/9 -f 950/428/9 951/427/9 963/429/9 -f 949/404/9 950/428/9 962/431/9 -f 973/435/9 974/720/9 977/433/9 -f 974/720/9 975/721/9 977/433/9 -f 975/721/9 976/722/9 977/433/9 -f 977/433/9 978/723/9 979/724/9 -f 979/724/9 980/725/9 981/434/9 -f 981/434/9 982/726/9 983/727/9 -f 983/727/9 984/728/9 973/435/9 -f 977/433/9 979/724/9 981/434/9 -f 981/434/9 983/727/9 973/435/9 -f 1093/436/9 1105/729/9 1116/437/9 -f 1104/438/9 1116/730/9 1115/439/9 -f 1103/440/9 1115/731/9 1114/441/9 -f 1101/443/9 1102/442/9 1114/444/9 -f 1100/446/9 1101/443/9 1113/447/9 -f 1099/449/9 1100/446/9 1112/450/9 -f 1099/452/9 1111/732/9 1110/453/9 -f 1098/454/9 1110/733/9 1109/455/9 -f 1097/456/9 1109/734/9 1108/457/9 -f 1096/458/9 1108/735/9 1107/459/9 -f 1095/460/9 1107/736/9 1106/461/9 -f 1093/436/9 1094/462/9 1106/463/9 -f 1117/466/9 1118/737/9 1121/467/9 -f 1118/737/9 1119/738/9 1121/467/9 -f 1119/738/9 1120/739/9 1121/467/9 -f 1121/467/9 1122/740/9 1123/741/9 -f 1123/741/9 1124/742/9 1125/743/9 -f 1125/743/9 1126/744/9 1127/465/9 -f 1127/465/9 1128/745/9 1117/466/9 -f 1121/467/9 1123/741/9 1125/743/9 -f 1125/743/9 1127/465/9 1121/467/9 -f 1237/468/9 1249/746/9 1260/469/9 -f 1248/470/9 1260/747/9 1259/471/9 -f 1247/472/9 1259/748/9 1258/473/9 -f 1245/475/9 1246/474/9 1258/476/9 -f 1245/475/9 1257/749/9 1256/478/9 -f 1243/480/9 1244/479/9 1256/481/9 -f 1243/483/9 1255/750/9 1254/484/9 -f 1242/485/9 1254/751/9 1253/486/9 -f 1241/487/9 1253/752/9 1252/488/9 -f 1240/489/9 1252/753/9 1251/490/9 -f 1238/492/9 1239/491/9 1251/493/9 -f 1238/492/9 1250/754/9 1249/495/9 -f 1261/497/9 1262/755/9 1265/498/9 -f 1262/755/9 1263/756/9 1265/498/9 -f 1263/756/9 1264/757/9 1265/498/9 -f 1265/498/9 1266/758/9 1267/759/9 -f 1267/759/9 1268/760/9 1269/761/9 -f 1269/761/9 1270/762/9 1271/496/9 -f 1271/496/9 1272/763/9 1261/497/9 -f 1265/498/9 1267/759/9 1269/761/9 -f 1269/761/9 1271/496/9 1265/498/9 +f 967/1191/39 963/1192/39 959/1193/39 +f 978/1194/40 974/1195/40 973/1196/40 +f 1180/1197/41 1181/1198/41 1179/1199/41 +f 977/1200/42 974/1201/42 978/1202/42 +f 977/1203/41 972/1204/41 971/1205/41 +f 972/1206/43 978/1207/43 976/1208/43 +f 981/1209/44 980/1210/44 979/1211/44 +f 973/1196/45 981/1209/45 975/1212/45 +f 1181/1213/41 1182/1214/41 1188/1215/41 +f 971/1205/46 980/1210/46 969/1216/46 +f 899/1217/47 901/1218/47 889/1219/47 +f 993/1220/41 997/1221/41 989/1222/41 +f 986/1223/48 983/1224/48 984/1225/48 +f 988/1226/49 985/1227/49 986/1223/49 +f 998/1228/40 994/1229/40 990/1230/40 +f 983/1231/39 992/1232/39 984/1233/39 +f 994/1229/50 995/1234/50 993/1235/50 +f 996/1236/39 997/1237/39 995/1238/39 +f 991/1239/50 1000/1240/50 992/1232/50 +f 999/1241/47 1002/1242/47 1000/1240/47 +f 1002/1243/50 997/1244/50 998/1245/50 +f 990/1230/47 993/1246/47 989/1247/47 +f 999/1248/41 983/1249/41 1001/1250/41 +f 1000/1240/40 984/1233/40 992/1232/40 +f 987/1251/41 989/1222/41 997/1221/41 +f 998/1228/40 990/1230/40 988/1226/40 +f 1021/1252/39 1023/1253/39 1020/1254/39 +f 1030/1255/51 1032/1256/51 1021/1252/51 +f 1025/1257/40 1035/1258/40 1036/1259/40 +f 1023/1253/52 1039/1260/52 1020/1254/52 +f 1025/1261/53 1033/1262/53 1035/1263/53 +f 1040/1264/54 1029/1265/54 1046/1266/54 +f 1024/1267/55 1026/1268/55 1023/1253/55 +f 1037/1269/41 1038/1270/41 1030/1271/41 +f 1026/1268/56 1041/1272/56 1023/1253/56 +f 1020/1254/57 1030/1255/57 1021/1252/57 +f 1034/1273/50 1036/1259/50 1033/1262/50 +f 1042/1274/58 1027/1275/58 1022/1276/58 +f 1022/1276/59 1031/1277/59 1019/1278/59 +f 1021/1252/60 1033/1262/60 1024/1267/60 +f 1027/1275/61 1034/1273/61 1022/1276/61 +f 1029/1265/62 1031/1277/62 1037/1279/62 +f 1042/1280/44 1041/1272/44 1043/1281/44 +f 1028/1282/63 1039/1260/63 1045/1283/63 +f 1040/1264/47 1022/1276/47 1019/1278/47 +f 1053/1284/64 1056/1285/64 1052/1286/64 +f 1049/1287/65 1054/1288/65 1050/1289/65 +f 1048/1290/66 1052/1286/66 1047/1291/66 +f 1050/1292/44 1053/1293/44 1048/1294/44 +f 1047/1295/50 1051/1296/50 1049/1297/50 +f 1057/1298/40 1055/1299/40 1056/1285/40 +f 1054/1300/67 1057/1298/67 1053/1293/67 +f 1052/1301/68 1055/1299/68 1051/1296/68 +f 1051/1302/69 1058/1303/69 1054/1288/69 +f 1068/1304/70 1065/1305/70 1064/1306/70 +f 1066/1307/71 1061/1308/71 1062/1309/71 +f 1064/1306/72 1060/1310/72 1059/1311/72 +f 1065/1312/44 1062/1313/44 1060/1314/44 +f 1063/1315/50 1059/1316/50 1061/1317/50 +f 1067/1318/41 1069/1319/41 1068/1304/41 +f 1065/1312/73 1070/1320/73 1066/1321/73 +f 1063/1315/74 1068/1304/74 1064/1322/74 +f 1066/1307/75 1067/1318/75 1063/1323/75 +f 1080/1324/47 1076/1325/47 1092/1326/47 +f 1085/1327/39 1093/1328/39 1101/1329/39 +f 1108/1330/47 1132/1331/47 1124/1332/47 +f 1117/1333/39 1125/1334/39 1133/1335/39 +f 1136/1336/41 1137/1337/41 1135/1338/41 +f 1138/1339/39 1141/1340/39 1137/1337/39 +f 1142/1341/40 1139/1342/40 1141/1343/40 +f 1141/1344/44 1135/1338/44 1137/1337/44 +f 1138/1339/50 1140/1345/50 1142/1341/50 +f 1159/1346/54 1136/1336/54 1135/1338/54 +f 1162/1347/76 1166/1348/76 1164/1349/76 +f 1161/1350/41 1168/1351/41 1162/1352/41 +f 1140/1353/39 1162/1354/39 1139/1355/39 +f 1159/1346/47 1163/1356/47 1160/1357/47 +f 1163/1356/77 1161/1358/77 1140/1353/77 +f 1166/1359/58 1163/1356/58 1164/1349/58 +f 1167/1360/78 1170/1361/78 1168/1362/78 +f 1162/1363/44 1170/1361/44 1166/1359/44 +f 1161/1350/50 1169/1364/50 1167/1365/50 +f 1166/1359/40 1169/1364/40 1165/1366/40 +f 971/1367/39 972/1206/39 976/1208/39 +f 1175/1368/44 1177/1369/44 1176/1370/44 +f 1174/1371/52 1175/1368/52 1173/1372/52 +f 1171/1373/47 1177/1369/47 1172/1374/47 +f 1172/1375/40 1178/1376/40 1174/1377/40 +f 1171/1378/41 1175/1368/41 1176/1370/41 +f 1186/1379/40 1183/1380/40 1185/1381/40 +f 1185/1381/44 1179/1382/44 1181/1383/44 +f 1182/1384/50 1184/1385/50 1186/1379/50 +f 1202/1386/48 1204/1387/48 1198/1388/48 +f 1186/1389/40 1185/1390/40 1189/1391/40 +f 1188/1215/41 1192/1392/41 1181/1213/41 +f 1211/1393/40 1190/1394/40 1216/1395/40 +f 1194/1396/39 1193/1397/39 1214/1398/39 +f 1181/1399/47 1191/1400/47 1185/1390/47 +f 1189/1391/39 1194/1401/39 1188/1215/39 +f 1185/1390/40 1193/1402/40 1189/1391/40 +f 1196/1403/41 1197/1404/41 1195/1405/41 +f 1197/1406/41 1198/1407/41 1204/1387/41 +f 1202/1386/40 1199/1408/40 1201/1409/40 +f 1201/1410/44 1195/1405/44 1197/1404/44 +f 1198/1388/50 1200/1411/50 1202/1386/50 +f 1191/1400/79 1214/1398/79 1193/1402/79 +f 1202/1412/40 1201/1413/40 1205/1414/40 +f 1204/1387/41 1208/1415/41 1197/1406/41 +f 1218/1416/41 1203/1417/41 1213/1418/41 +f 1213/1419/39 1206/1420/39 1211/1421/39 +f 1197/1406/47 1207/1422/47 1201/1423/47 +f 1205/1414/39 1210/1424/39 1204/1387/39 +f 1201/1413/40 1209/1425/40 1205/1414/40 +f 1210/1424/80 1215/1426/80 1208/1415/80 +f 1190/1394/50 1203/1417/50 1187/1427/50 +f 1207/1428/47 1208/1429/47 1215/1426/47 +f 1209/1430/50 1192/1431/50 1194/1396/50 +f 1191/1432/47 1192/1433/47 1212/1434/47 +f 1215/1426/47 1192/1433/47 1207/1428/47 +f 1210/1435/39 1209/1430/39 1217/1436/39 +f 1214/1398/39 1209/1430/39 1194/1396/39 +f 1212/1434/44 1217/1436/44 1214/1398/44 +f 1186/1379/48 1188/1215/48 1182/1384/48 +f 1216/1437/47 1187/1427/47 1218/1438/47 +f 1220/1439/50 1221/1440/50 1219/1441/50 +f 1223/1442/44 1225/1443/44 1224/1444/44 +f 1220/1439/40 1226/1445/40 1222/1446/40 +f 1221/1440/41 1224/1447/41 1219/1441/41 +f 1222/1446/39 1223/1442/39 1221/1440/39 +f 1219/1441/47 1225/1448/47 1220/1439/47 +f 1230/1449/47 1233/1450/47 1229/1451/47 +f 1227/1452/39 1232/1453/39 1228/1454/39 +f 1228/1454/44 1234/1455/44 1230/1449/44 +f 1229/1451/50 1231/1456/50 1227/1457/50 +f 1232/1453/79 1238/1458/79 1234/1455/79 +f 1233/1459/81 1235/1460/81 1231/1461/81 +f 1236/1462/40 1242/1463/40 1238/1458/40 +f 1237/1464/41 1239/1465/41 1235/1466/41 +f 1241/1467/80 1243/1468/80 1239/1469/80 +f 1240/1470/82 1246/1471/82 1242/1463/82 +f 1235/1472/39 1232/1453/39 1231/1473/39 +f 1235/1474/39 1240/1470/39 1236/1462/39 +f 1245/1475/39 1239/1476/39 1243/1477/39 +f 1234/1455/47 1237/1478/47 1233/1459/47 +f 1241/1479/47 1238/1458/47 1242/1463/47 +f 1242/1463/47 1244/1480/47 1241/1467/47 +f 1269/1481/39 1267/1482/39 1270/1483/39 +f 1272/1484/47 1248/1485/47 1271/1486/47 +f 1271/1486/50 1270/1483/50 1272/1484/50 +f 1251/1487/39 1255/1488/39 1259/1489/39 +f 1256/1490/47 1254/1491/47 1250/1492/47 +f 973/1493/47 974/1201/47 970/1494/47 +f 955/1495/39 954/1496/39 953/1497/39 +f 953/1497/39 968/1498/39 955/1495/39 +f 968/1498/39 967/1191/39 955/1495/39 +f 967/1191/39 966/1499/39 965/1500/39 +f 965/1500/39 964/1501/39 967/1191/39 +f 964/1501/39 963/1192/39 967/1191/39 +f 963/1192/39 962/1502/39 959/1193/39 +f 962/1502/39 961/1503/39 959/1193/39 +f 961/1503/39 960/1504/39 959/1193/39 +f 959/1193/39 958/1505/39 957/1506/39 +f 957/1506/39 956/1507/39 955/1495/39 +f 959/1193/39 957/1506/39 955/1495/39 +f 955/1495/39 967/1191/39 959/1193/39 +f 973/1196/40 975/1212/40 978/1194/40 +f 975/1212/40 976/1508/40 978/1194/40 +f 1180/1197/41 1182/1384/41 1181/1198/41 +f 977/1200/42 970/1494/42 974/1201/42 +f 971/1205/41 969/1216/41 977/1203/41 +f 969/1216/41 970/1509/41 977/1203/41 +f 972/1206/43 977/1510/43 978/1207/43 +f 981/1209/44 982/1511/44 980/1210/44 +f 973/1196/45 982/1511/45 981/1209/45 +f 971/1205/46 979/1211/46 980/1210/46 +f 889/1219/47 890/1512/47 891/1513/47 +f 891/1513/47 892/1514/47 889/1219/47 +f 892/1514/47 893/1515/47 889/1219/47 +f 893/1515/47 894/1516/47 895/1517/47 +f 895/1517/47 896/1518/47 897/1519/47 +f 897/1519/47 898/1520/47 899/1217/47 +f 899/1217/47 900/1521/47 901/1218/47 +f 901/1218/47 902/1522/47 889/1219/47 +f 902/1522/47 903/1523/47 889/1219/47 +f 903/1523/47 904/1524/47 889/1219/47 +f 893/1515/47 895/1517/47 889/1219/47 +f 895/1517/47 897/1519/47 889/1219/47 +f 897/1519/47 899/1217/47 889/1219/47 +f 993/1220/41 995/1525/41 997/1221/41 +f 986/1223/48 985/1227/48 983/1224/48 +f 988/1226/49 987/1526/49 985/1227/49 +f 998/1228/40 996/1236/40 994/1229/40 +f 983/1231/39 991/1527/39 992/1232/39 +f 994/1229/50 996/1236/50 995/1234/50 +f 996/1236/39 998/1228/39 997/1237/39 +f 991/1239/50 999/1528/50 1000/1240/50 +f 999/1241/47 1001/1529/47 1002/1242/47 +f 1002/1243/50 1001/1530/50 997/1244/50 +f 990/1230/47 994/1229/47 993/1246/47 +f 999/1248/41 991/1531/41 983/1249/41 +f 1000/1240/40 1002/1242/40 984/1233/40 +f 997/1221/41 1001/1250/41 987/1251/41 +f 1001/1250/41 983/1249/41 987/1251/41 +f 983/1249/41 985/1532/41 987/1251/41 +f 986/1533/40 984/1233/40 988/1226/40 +f 984/1233/40 1002/1242/40 988/1226/40 +f 1002/1242/40 998/1228/40 988/1226/40 +f 1021/1252/39 1024/1267/39 1023/1253/39 +f 1030/1255/51 1038/1534/51 1032/1256/51 +f 1036/1259/40 1027/1535/40 1025/1257/40 +f 1027/1535/40 1043/1536/40 1044/1537/40 +f 1026/1538/40 1027/1535/40 1044/1537/40 +f 1026/1538/40 1025/1257/40 1027/1535/40 +f 1023/1253/52 1041/1272/52 1039/1260/52 +f 1025/1261/53 1024/1267/53 1033/1262/53 +f 1040/1264/54 1019/1278/54 1029/1265/54 +f 1024/1267/55 1025/1261/55 1026/1268/55 +f 1030/1271/41 1028/1539/41 1029/1540/41 +f 1028/1539/41 1045/1541/41 1029/1540/41 +f 1045/1541/41 1046/1542/41 1029/1540/41 +f 1029/1540/41 1037/1269/41 1030/1271/41 +f 1026/1268/56 1044/1543/56 1041/1272/56 +f 1020/1254/57 1028/1282/57 1030/1255/57 +f 1035/1258/50 1033/1262/50 1036/1259/50 +f 1033/1262/50 1032/1256/50 1034/1273/50 +f 1032/1256/50 1038/1270/50 1037/1269/50 +f 1037/1269/50 1031/1277/50 1032/1256/50 +f 1031/1277/50 1034/1273/50 1032/1256/50 +f 1042/1274/58 1043/1544/58 1027/1275/58 +f 1022/1276/59 1034/1273/59 1031/1277/59 +f 1021/1252/60 1032/1256/60 1033/1262/60 +f 1027/1275/61 1036/1545/61 1034/1273/61 +f 1029/1265/62 1019/1278/62 1031/1277/62 +f 1042/1280/44 1040/1546/44 1039/1260/44 +f 1040/1546/44 1046/1547/44 1039/1260/44 +f 1046/1547/44 1045/1548/44 1039/1260/44 +f 1039/1260/44 1041/1272/44 1042/1280/44 +f 1041/1272/44 1044/1549/44 1043/1281/44 +f 1028/1282/63 1020/1254/63 1039/1260/63 +f 1040/1264/47 1042/1274/47 1022/1276/47 +f 1053/1284/64 1057/1298/64 1056/1285/64 +f 1049/1287/65 1051/1302/65 1054/1288/65 +f 1048/1290/66 1053/1284/66 1052/1286/66 +f 1050/1292/44 1054/1300/44 1053/1293/44 +f 1047/1295/50 1052/1301/50 1051/1296/50 +f 1057/1298/40 1058/1303/40 1055/1299/40 +f 1054/1300/67 1058/1303/67 1057/1298/67 +f 1052/1301/68 1056/1285/68 1055/1299/68 +f 1051/1302/69 1055/1299/69 1058/1303/69 +f 1068/1304/70 1069/1319/70 1065/1305/70 +f 1066/1307/71 1063/1323/71 1061/1308/71 +f 1064/1306/72 1065/1305/72 1060/1310/72 +f 1065/1312/44 1066/1321/44 1062/1313/44 +f 1063/1315/50 1064/1322/50 1059/1316/50 +f 1067/1318/41 1070/1320/41 1069/1319/41 +f 1065/1312/73 1069/1319/73 1070/1320/73 +f 1063/1315/74 1067/1318/74 1068/1304/74 +f 1066/1307/75 1070/1320/75 1067/1318/75 +f 1076/1325/47 1074/1550/47 1072/1551/47 +f 1072/1551/47 1102/1552/47 1100/1553/47 +f 1100/1553/47 1098/1554/47 1096/1555/47 +f 1096/1555/47 1094/1556/47 1092/1326/47 +f 1092/1326/47 1090/1557/47 1088/1558/47 +f 1088/1558/47 1086/1559/47 1084/1560/47 +f 1084/1560/47 1082/1561/47 1080/1324/47 +f 1080/1324/47 1078/1562/47 1076/1325/47 +f 1076/1325/47 1072/1551/47 1092/1326/47 +f 1072/1551/47 1100/1553/47 1092/1326/47 +f 1100/1553/47 1096/1555/47 1092/1326/47 +f 1092/1326/47 1088/1558/47 1084/1560/47 +f 1084/1560/47 1080/1324/47 1092/1326/47 +f 1101/1329/39 1071/1563/39 1077/1564/39 +f 1071/1563/39 1073/1565/39 1077/1564/39 +f 1073/1565/39 1075/1566/39 1077/1564/39 +f 1077/1564/39 1079/1567/39 1085/1327/39 +f 1079/1567/39 1081/1568/39 1085/1327/39 +f 1081/1568/39 1083/1569/39 1085/1327/39 +f 1085/1327/39 1087/1570/39 1089/1571/39 +f 1089/1571/39 1091/1572/39 1085/1327/39 +f 1091/1572/39 1093/1328/39 1085/1327/39 +f 1093/1328/39 1095/1573/39 1101/1329/39 +f 1095/1573/39 1097/1574/39 1101/1329/39 +f 1097/1574/39 1099/1575/39 1101/1329/39 +f 1101/1329/39 1077/1564/39 1085/1327/39 +f 1108/1330/47 1106/1576/47 1132/1331/47 +f 1106/1576/47 1104/1577/47 1132/1331/47 +f 1104/1577/47 1134/1578/47 1132/1331/47 +f 1132/1331/47 1130/1579/47 1128/1580/47 +f 1128/1580/47 1126/1581/47 1132/1331/47 +f 1126/1581/47 1124/1332/47 1132/1331/47 +f 1124/1332/47 1122/1582/47 1120/1583/47 +f 1120/1583/47 1118/1584/47 1116/1585/47 +f 1116/1585/47 1114/1586/47 1112/1587/47 +f 1112/1587/47 1110/1588/47 1108/1330/47 +f 1124/1332/47 1120/1583/47 1116/1585/47 +f 1116/1585/47 1112/1587/47 1124/1332/47 +f 1112/1587/47 1108/1330/47 1124/1332/47 +f 1133/1335/39 1103/1589/39 1105/1590/39 +f 1105/1590/39 1107/1591/39 1109/1592/39 +f 1109/1592/39 1111/1593/39 1117/1333/39 +f 1111/1593/39 1113/1594/39 1117/1333/39 +f 1113/1594/39 1115/1595/39 1117/1333/39 +f 1117/1333/39 1119/1596/39 1125/1334/39 +f 1119/1596/39 1121/1597/39 1125/1334/39 +f 1121/1597/39 1123/1598/39 1125/1334/39 +f 1125/1334/39 1127/1599/39 1129/1600/39 +f 1129/1600/39 1131/1601/39 1133/1335/39 +f 1133/1335/39 1105/1590/39 1109/1592/39 +f 1125/1334/39 1129/1600/39 1133/1335/39 +f 1133/1335/39 1109/1592/39 1117/1333/39 +f 1136/1336/41 1138/1339/41 1137/1337/41 +f 1138/1339/39 1142/1602/39 1141/1340/39 +f 1142/1341/40 1140/1345/40 1139/1342/40 +f 1141/1344/44 1139/1603/44 1135/1338/44 +f 1138/1339/50 1136/1336/50 1140/1345/50 +f 1159/1346/54 1160/1357/54 1136/1336/54 +f 1164/1349/76 1159/1346/76 1139/1604/76 +f 1159/1346/76 1135/1605/76 1139/1604/76 +f 1139/1604/76 1162/1347/76 1164/1349/76 +f 1161/1350/41 1167/1365/41 1168/1351/41 +f 1140/1353/39 1161/1358/39 1162/1354/39 +f 1159/1346/47 1164/1349/47 1163/1356/47 +f 1136/1606/77 1160/1357/77 1140/1353/77 +f 1160/1357/77 1163/1356/77 1140/1353/77 +f 1163/1356/77 1165/1607/77 1161/1358/77 +f 1166/1359/58 1165/1366/58 1163/1356/58 +f 1167/1360/78 1169/1364/78 1170/1361/78 +f 1162/1363/44 1168/1608/44 1170/1361/44 +f 1161/1350/50 1165/1366/50 1169/1364/50 +f 1166/1359/40 1170/1361/40 1169/1364/40 +f 976/1208/39 975/1609/39 971/1367/39 +f 975/1609/39 981/1209/39 971/1367/39 +f 981/1209/39 979/1211/39 971/1367/39 +f 1175/1368/44 1178/1376/44 1177/1369/44 +f 1174/1371/52 1178/1376/52 1175/1368/52 +f 1171/1373/47 1176/1370/47 1177/1369/47 +f 1172/1375/40 1177/1369/40 1178/1376/40 +f 1171/1378/41 1173/1610/41 1175/1368/41 +f 1186/1379/40 1184/1385/40 1183/1380/40 +f 1185/1381/44 1183/1380/44 1179/1382/44 +f 1182/1384/50 1180/1197/50 1184/1385/50 +f 1202/1386/48 1205/1414/48 1204/1387/48 +f 1188/1215/41 1194/1401/41 1192/1392/41 +f 1211/1393/40 1206/1420/40 1190/1394/40 +f 1181/1399/47 1192/1611/47 1191/1400/47 +f 1189/1391/39 1193/1402/39 1194/1401/39 +f 1185/1390/40 1191/1400/40 1193/1402/40 +f 1196/1403/41 1198/1388/41 1197/1404/41 +f 1202/1386/40 1200/1411/40 1199/1408/40 +f 1201/1410/44 1199/1612/44 1195/1405/44 +f 1198/1388/50 1196/1403/50 1200/1411/50 +f 1191/1400/79 1212/1434/79 1214/1398/79 +f 1204/1387/41 1210/1424/41 1208/1415/41 +f 1218/1416/41 1187/1427/41 1203/1417/41 +f 1213/1419/39 1203/1417/39 1206/1420/39 +f 1197/1406/47 1208/1415/47 1207/1422/47 +f 1205/1414/39 1209/1425/39 1210/1424/39 +f 1201/1413/40 1207/1613/40 1209/1425/40 +f 1210/1424/80 1217/1436/80 1215/1426/80 +f 1190/1394/50 1206/1420/50 1203/1417/50 +f 1209/1430/50 1207/1614/50 1192/1431/50 +f 1215/1426/47 1212/1434/47 1192/1433/47 +f 1214/1398/39 1217/1436/39 1209/1430/39 +f 1212/1434/44 1215/1426/44 1217/1436/44 +f 1186/1379/48 1189/1391/48 1188/1215/48 +f 1216/1437/47 1190/1394/47 1187/1427/47 +f 1220/1439/50 1222/1446/50 1221/1440/50 +f 1223/1442/44 1226/1615/44 1225/1443/44 +f 1220/1439/40 1225/1616/40 1226/1445/40 +f 1221/1440/41 1223/1617/41 1224/1447/41 +f 1222/1446/39 1226/1615/39 1223/1442/39 +f 1219/1441/47 1224/1618/47 1225/1448/47 +f 1230/1449/47 1234/1455/47 1233/1450/47 +f 1227/1452/39 1231/1619/39 1232/1453/39 +f 1228/1454/44 1232/1453/44 1234/1455/44 +f 1229/1451/50 1233/1450/50 1231/1456/50 +f 1232/1453/79 1236/1462/79 1238/1458/79 +f 1233/1459/81 1237/1478/81 1235/1460/81 +f 1236/1462/40 1240/1470/40 1242/1463/40 +f 1237/1464/41 1241/1479/41 1239/1465/41 +f 1241/1467/80 1244/1480/80 1243/1468/80 +f 1240/1470/82 1245/1475/82 1246/1471/82 +f 1235/1472/39 1236/1462/39 1232/1453/39 +f 1235/1474/39 1239/1620/39 1240/1470/39 +f 1245/1475/39 1240/1470/39 1239/1476/39 +f 1234/1455/47 1238/1458/47 1237/1478/47 +f 1241/1479/47 1237/1464/47 1238/1458/47 +f 1242/1463/47 1246/1471/47 1244/1480/47 +f 1269/1481/39 1268/1621/39 1267/1482/39 +f 1272/1484/47 1247/1622/47 1248/1485/47 +f 1271/1486/50 1269/1481/50 1270/1483/50 +f 1265/1623/39 1249/1624/39 1251/1487/39 +f 1251/1487/39 1253/1625/39 1255/1488/39 +f 1255/1488/39 1257/1626/39 1259/1489/39 +f 1259/1489/39 1261/1627/39 1251/1487/39 +f 1261/1627/39 1263/1628/39 1251/1487/39 +f 1263/1628/39 1265/1623/39 1251/1487/39 +f 1254/1491/47 1252/1629/47 1250/1492/47 +f 1250/1492/47 1266/1630/47 1264/1631/47 +f 1264/1631/47 1262/1632/47 1250/1492/47 +f 1262/1632/47 1260/1633/47 1250/1492/47 +f 1260/1633/47 1258/1634/47 1250/1492/47 +f 1258/1634/47 1256/1490/47 1250/1492/47 +f 970/1494/47 969/1635/47 973/1493/47 +f 969/1635/47 980/1210/47 973/1493/47 +f 980/1210/47 982/1511/47 973/1493/47 s 1 -f 30/764/45 15/765/43 14/766/45 -f 23/767/42 8/768/46 7/769/42 -f 31/770/43 16/771/47 15/765/43 -f 24/772/46 9/773/6 8/768/46 -f 17/774/12 2/775/48 1/776/12 -f 32/777/47 1/776/12 16/771/47 -f 25/778/6 10/779/49 9/780/6 -f 18/781/48 3/782/44 2/775/48 -f 26/783/49 11/784/41 10/779/49 -f 19/785/44 4/786/50 3/782/44 -f 27/787/41 12/788/51 11/784/41 -f 20/789/50 5/790/3 4/786/50 -f 28/791/51 13/792/2 12/788/51 -f 21/793/3 6/794/52 5/790/3 -f 29/795/2 14/766/45 13/792/2 -f 22/796/52 7/769/42 6/794/52 -f 47/797/53 32/777/54 31/770/53 -f 48/798/54 17/774/55 32/777/54 -f 33/799/55 18/781/56 17/774/55 -f 34/800/56 19/785/57 18/781/56 -f 35/801/57 20/789/58 19/785/57 -f 20/789/58 37/802/37 21/793/37 -f 37/803/37 22/796/59 21/793/37 -f 22/796/59 39/804/60 23/767/60 -f 39/805/60 24/772/61 23/767/60 -f 40/806/61 25/807/62 24/772/61 -f 41/808/62 26/783/63 25/778/62 -f 26/783/63 43/809/64 27/787/64 -f 27/787/64 44/810/65 28/791/65 -f 44/811/65 29/795/31 28/791/65 -f 45/812/31 30/764/66 29/795/31 -f 46/813/66 31/770/53 30/764/66 -f 35/814/44 52/815/50 36/816/50 -f 43/817/41 60/818/51 44/819/51 -f 36/816/50 53/820/3 37/821/3 -f 44/819/51 61/822/2 45/823/2 -f 37/821/3 54/824/52 38/825/52 -f 45/823/2 62/826/45 46/827/45 -f 38/825/52 55/828/42 39/829/42 -f 46/827/45 63/830/43 47/831/43 -f 39/829/42 56/832/46 40/833/46 -f 47/831/43 64/834/47 48/835/47 -f 40/833/46 57/836/6 41/837/6 -f 33/838/12 50/839/48 34/840/48 -f 48/835/47 49/841/12 33/838/12 -f 41/808/6 58/842/49 42/843/49 -f 34/840/48 51/844/44 35/814/44 -f 42/843/49 59/845/41 43/817/41 -f 62/826/66 79/846/53 63/830/53 -f 79/847/53 64/834/54 63/830/53 -f 80/848/54 49/841/55 64/834/54 -f 65/849/55 50/839/56 49/841/55 -f 66/850/56 51/844/57 50/839/56 -f 51/844/57 68/851/58 52/815/58 -f 52/815/58 69/852/37 53/820/37 -f 69/853/37 54/824/59 53/820/37 -f 70/854/59 55/828/60 54/824/59 -f 55/828/60 72/855/61 56/832/61 -f 56/832/61 73/856/62 57/836/62 -f 57/857/62 74/858/63 58/842/63 -f 58/842/63 75/859/64 59/845/64 -f 75/860/64 60/818/65 59/845/64 -f 60/818/65 77/861/31 61/822/31 -f 77/862/31 62/826/66 61/822/31 -f 96/863/67 107/864/12 95/865/12 -f 97/866/68 108/867/67 96/863/67 -f 98/868/3 109/869/68 97/866/68 -f 99/870/69 110/871/3 98/868/3 -f 100/872/70 111/873/69 99/870/69 -f 101/874/6 112/875/70 100/872/70 -f 102/876/71 113/877/6 101/878/6 -f 103/879/72 114/880/71 102/876/71 -f 104/881/2 115/882/72 103/879/72 -f 105/883/73 116/884/2 104/881/2 -f 106/885/74 117/886/73 105/883/73 -f 95/865/12 118/887/74 106/885/74 -f 110/871/75 121/888/76 109/869/76 -f 109/869/76 120/889/77 108/867/77 -f 108/867/77 119/890/78 107/864/78 -f 118/887/79 119/890/78 130/891/79 -f 117/886/80 130/891/79 129/892/80 -f 116/884/81 129/892/80 128/893/81 -f 115/882/82 128/893/81 127/894/82 -f 114/880/83 127/894/82 126/895/83 -f 113/877/84 126/895/83 125/896/84 -f 113/897/84 124/898/85 112/875/85 -f 111/873/86 124/898/85 123/899/86 -f 111/873/86 122/900/75 110/871/75 -f 120/889/67 131/901/12 119/890/12 -f 121/888/68 132/902/67 120/889/67 -f 122/900/3 133/903/68 121/888/68 -f 123/899/69 134/904/3 122/900/3 -f 124/898/70 135/905/69 123/899/69 -f 125/906/6 136/907/70 124/898/70 -f 126/895/71 137/908/6 125/896/6 -f 127/894/72 138/909/71 126/895/71 -f 128/893/2 139/910/72 127/894/72 -f 129/892/73 140/911/2 128/893/2 -f 130/891/74 141/912/73 129/892/73 -f 119/890/12 142/913/74 130/891/74 -f 131/901/87 144/914/88 143/915/87 -f 131/901/87 154/916/89 142/913/89 -f 142/913/89 153/917/90 141/912/90 -f 141/912/90 152/918/91 140/911/91 -f 140/911/91 151/919/92 139/910/92 -f 139/910/92 150/920/93 138/909/93 -f 138/909/93 149/921/94 137/908/94 -f 136/907/95 149/922/94 148/923/95 -f 136/907/95 147/924/96 135/905/96 -f 134/904/97 147/924/96 146/925/97 -f 133/903/98 146/925/97 145/926/98 -f 132/902/88 145/926/98 144/914/88 -f 144/914/67 155/927/12 143/915/12 -f 145/926/68 156/928/67 144/914/67 -f 146/925/3 157/929/68 145/926/68 -f 147/924/69 158/930/3 146/925/3 -f 148/923/70 159/931/69 147/924/69 -f 149/922/6 160/932/70 148/923/70 -f 150/920/71 161/933/6 149/921/6 -f 151/919/72 162/934/71 150/920/71 -f 152/918/2 163/935/72 151/919/72 -f 153/917/73 164/936/2 152/918/2 -f 154/916/74 165/937/73 153/917/73 -f 143/915/12 166/938/74 154/916/74 -f 164/936/81 177/939/80 176/940/81 -f 165/937/80 178/941/79 177/939/80 -f 155/927/78 178/941/79 166/938/79 -f 156/928/77 167/942/78 155/927/78 -f 157/929/76 168/943/77 156/928/77 -f 158/930/75 169/944/76 157/929/76 -f 158/930/75 171/945/86 170/946/75 -f 160/932/85 171/945/86 159/931/86 -f 161/947/84 172/948/85 160/932/85 -f 162/934/83 173/949/84 161/933/84 -f 162/934/83 175/950/82 174/951/83 -f 163/935/82 176/940/81 175/950/82 -f 168/943/67 179/952/12 167/942/12 -f 169/944/68 180/953/67 168/943/67 -f 170/946/3 181/954/68 169/944/68 -f 171/945/69 182/955/3 170/946/3 -f 172/948/70 183/956/69 171/945/69 -f 173/957/6 184/958/70 172/948/70 -f 174/951/71 185/959/6 173/949/6 -f 175/950/72 186/960/71 174/951/71 -f 176/940/2 187/961/72 175/950/72 -f 177/939/73 188/962/2 176/940/2 -f 178/941/74 189/963/73 177/939/73 -f 167/942/12 190/964/74 178/941/74 -f 190/964/89 191/965/87 202/966/89 -f 180/953/88 191/965/87 179/952/87 -f 181/954/98 192/967/88 180/953/88 -f 181/954/98 194/968/97 193/969/98 -f 183/956/96 194/968/97 182/955/97 -f 183/956/96 196/970/95 195/971/96 -f 185/972/94 196/970/95 184/958/95 -f 185/959/94 198/973/93 197/974/94 -f 187/961/92 198/973/93 186/960/93 -f 188/962/91 199/975/92 187/961/92 -f 189/963/90 200/976/91 188/962/91 -f 189/963/90 202/966/89 201/977/90 -f 192/967/67 203/30/12 191/965/12 -f 193/969/68 204/53/67 192/967/67 -f 194/968/3 205/52/68 193/969/68 -f 195/971/69 206/50/3 194/968/3 -f 196/970/70 207/48/69 195/971/69 -f 197/978/6 208/46/70 196/970/70 -f 198/973/71 209/41/6 197/974/6 -f 199/975/72 210/40/71 198/973/71 -f 200/976/2 211/38/72 199/975/72 -f 201/977/73 212/36/2 200/976/2 -f 202/966/74 213/34/73 201/977/73 -f 191/965/12 214/32/74 202/966/74 -f 216/56/71 227/979/6 215/57/6 -f 217/54/72 228/980/71 216/55/71 -f 218/537/2 229/981/72 217/51/72 -f 219/536/73 230/982/2 218/49/2 -f 220/535/74 231/983/73 219/47/73 -f 221/534/12 232/984/74 220/45/74 -f 222/42/67 233/985/12 221/43/12 -f 223/533/68 234/986/67 222/39/67 -f 224/532/3 235/987/68 223/37/68 -f 225/531/69 236/988/3 224/35/3 -f 226/530/70 237/989/69 225/33/69 -f 215/529/6 238/990/70 226/31/70 -f 253/991/68 242/992/3 241/993/68 -f 260/994/2 249/995/73 248/996/2 -f 257/997/6 246/998/71 245/999/6 -f 254/1000/3 243/1001/69 242/992/3 -f 261/1002/73 250/1003/74 249/995/73 -f 251/1004/12 240/1005/67 239/1006/12 -f 258/1007/71 247/1008/72 246/998/71 -f 255/1009/69 244/1010/70 243/1001/69 -f 262/1011/74 239/1006/12 250/1003/74 -f 252/1012/67 241/993/68 240/1005/67 -f 259/1013/72 248/996/2 247/1008/72 -f 256/1014/70 245/1015/6 244/1010/70 -f 297/1016/2 290/1017/43 289/1018/2 -f 295/1019/6 288/1020/41 287/1021/6 -f 293/1022/3 286/1023/42 285/1024/3 -f 291/1025/12 284/1026/44 283/1027/12 -f 298/1028/43 283/1027/12 290/1017/43 -f 296/1029/41 289/1018/2 288/1020/41 -f 294/1030/42 287/1031/6 286/1023/42 -f 292/1032/44 285/1024/3 284/1026/44 -f 352/1033/12 353/1034/47 351/1035/12 -f 354/1036/47 355/1037/43 353/1034/47 -f 356/1038/43 357/1039/45 355/1037/43 -f 358/1040/45 359/1041/2 357/1039/45 -f 360/1042/2 361/1043/51 359/1041/2 -f 362/1044/51 363/1045/41 361/1043/51 -f 364/1046/41 365/1047/49 363/1045/41 -f 366/1048/49 367/1049/6 365/1047/49 -f 368/1050/6 369/1051/46 367/1052/6 -f 370/1053/46 371/1054/42 369/1051/46 -f 372/1055/42 373/1056/52 371/1054/42 -f 374/1057/52 375/1058/3 373/1056/52 -f 376/1059/3 377/1060/50 375/1058/3 -f 378/1061/50 379/1062/44 377/1060/50 -f 380/1063/44 381/1064/48 379/1062/44 -f 382/1065/48 351/1035/12 381/1064/48 -f 384/1066/12 385/1067/47 383/1068/12 -f 386/1069/47 387/1070/43 385/1067/47 -f 388/1071/43 389/1072/45 387/1070/43 -f 390/1073/45 391/1074/2 389/1072/45 -f 392/1075/2 393/1076/51 391/1074/2 -f 394/1077/51 395/1078/41 393/1076/51 -f 396/1079/41 397/1080/49 395/1078/41 -f 398/1081/49 399/1082/6 397/1080/49 -f 400/1083/6 401/1084/46 399/1085/6 -f 402/1086/46 403/1087/42 401/1084/46 -f 403/1087/42 406/1088/52 405/1089/52 -f 406/1088/52 407/1090/3 405/1089/52 -f 408/1091/3 409/1092/50 407/1090/3 -f 410/1093/50 411/1094/44 409/1092/50 -f 412/1095/44 413/1096/48 411/1094/44 -f 414/1097/48 383/1068/12 413/1096/48 -f 423/1098/1 438/1099/14 430/1100/14 -f 429/1101/6 436/1102/99 428/1103/99 -f 427/1104/9 434/1105/21 426/1106/21 -f 425/1107/12 432/1108/10 424/1109/10 -f 430/1100/14 437/1110/6 429/1111/6 -f 428/1103/99 435/1112/9 427/1104/9 -f 426/1106/21 433/1113/12 425/1107/12 -f 424/1109/10 431/1114/1 423/1098/1 -f 555/1115/72 566/1116/71 554/1117/71 -f 554/1117/71 565/1118/6 553/1119/6 -f 530/1120/100 531/1121/51 529/1122/100 -f 532/1123/51 533/1124/41 531/1121/51 -f 534/1125/41 535/1126/49 533/1124/41 -f 536/1127/49 537/1128/6 535/1126/49 -f 538/1129/6 539/1130/46 537/1128/6 -f 540/1131/46 541/1132/42 539/1130/46 -f 542/1133/42 543/1134/52 541/1132/42 -f 544/1135/52 545/1136/101 543/1134/52 -f 556/1137/2 567/1138/72 555/1115/72 -f 557/1139/73 568/1140/2 556/1137/2 -f 558/1141/74 569/1142/73 557/1139/73 -f 559/1143/12 570/1144/74 558/1141/74 -f 560/1145/67 571/1146/12 559/1147/12 -f 561/1148/68 572/1149/67 560/1145/67 -f 562/1150/3 573/1151/68 561/1148/68 -f 563/1152/69 574/1153/3 562/1150/3 -f 564/1154/70 575/1155/69 563/1152/69 -f 553/1119/6 576/1156/70 564/1154/70 -f 568/1140/81 579/1157/82 567/1138/82 -f 567/1138/82 578/1158/83 566/1116/83 -f 566/1116/83 577/1159/84 565/1118/84 -f 576/1156/85 577/1159/84 588/1160/85 -f 575/1155/86 588/1160/85 587/1161/86 -f 574/1153/75 587/1161/86 586/1162/75 -f 574/1153/75 585/1163/76 573/1151/76 -f 572/1149/77 585/1163/76 584/1164/77 -f 571/1146/78 584/1164/77 583/1165/78 -f 571/1166/78 582/1167/79 570/1144/79 -f 569/1142/80 582/1167/79 581/1168/80 -f 569/1142/80 580/1169/81 568/1140/81 -f 578/1158/71 589/1170/6 577/1159/6 -f 579/1157/72 590/1171/71 578/1158/71 -f 580/1169/2 591/1172/72 579/1157/72 -f 581/1168/73 592/1173/2 580/1169/2 -f 582/1167/74 593/1174/73 581/1168/73 -f 583/1175/12 594/1176/74 582/1167/74 -f 584/1164/67 595/1177/12 583/1165/12 -f 585/1163/68 596/1178/67 584/1164/67 -f 586/1162/3 597/1179/68 585/1163/68 -f 587/1161/69 598/1180/3 586/1162/3 -f 588/1160/70 599/1181/69 587/1161/69 -f 577/1159/6 600/1182/70 588/1160/70 -f 589/1170/94 602/1183/93 601/1184/94 -f 589/1170/94 612/1185/95 600/1182/95 -f 600/1182/95 611/1186/96 599/1181/96 -f 599/1181/96 610/1187/97 598/1180/97 -f 598/1180/97 609/1188/98 597/1179/98 -f 597/1179/98 608/1189/88 596/1178/88 -f 596/1178/88 607/1190/87 595/1177/87 -f 594/1176/89 607/1191/87 606/1192/89 -f 594/1176/89 605/1193/90 593/1174/90 -f 592/1173/91 605/1193/90 604/1194/91 -f 591/1172/92 604/1194/91 603/1195/92 -f 590/1171/93 603/1195/92 602/1183/93 -f 602/1183/71 613/1196/6 601/1184/6 -f 603/1195/72 614/1197/71 602/1183/71 -f 604/1194/2 615/1198/72 603/1195/72 -f 605/1193/73 616/1199/2 604/1194/2 -f 606/1192/74 617/1200/73 605/1193/73 -f 607/1191/12 618/1201/74 606/1192/74 -f 608/1189/67 619/1202/12 607/1190/12 -f 609/1188/68 620/1203/67 608/1189/67 -f 610/1187/3 621/1204/68 609/1188/68 -f 611/1186/69 622/1205/3 610/1187/3 -f 612/1185/70 623/1206/69 611/1186/69 -f 601/1184/6 624/1207/70 612/1185/70 -f 622/1205/75 635/1208/86 634/1209/75 -f 623/1206/86 636/1210/85 635/1208/86 -f 624/1207/85 625/1211/84 636/1210/85 -f 613/1196/84 626/1212/83 625/1211/84 -f 614/1197/83 627/1213/82 626/1212/83 -f 616/1199/81 627/1213/82 615/1198/82 -f 617/1200/80 628/1214/81 616/1199/81 -f 618/1201/79 629/1215/80 617/1200/80 -f 619/1216/78 630/1217/79 618/1201/79 -f 620/1203/77 631/1218/78 619/1202/78 -f 620/1203/77 633/1219/76 632/1220/77 -f 621/1204/76 634/1209/75 633/1219/76 -f 626/1212/71 637/1221/6 625/1211/6 -f 627/1213/72 638/1222/71 626/1212/71 -f 628/1214/2 639/1223/72 627/1213/72 -f 629/1215/73 640/1224/2 628/1214/2 -f 630/1217/74 641/1225/73 629/1215/73 -f 631/1226/12 642/1227/74 630/1217/74 -f 632/1220/67 643/1228/12 631/1218/12 -f 633/1219/68 644/1229/67 632/1220/67 -f 634/1209/3 645/1230/68 633/1219/68 -f 635/1208/69 646/1231/3 634/1209/3 -f 636/1210/70 647/1232/69 635/1208/69 -f 625/1211/6 648/1233/70 636/1210/70 -f 648/1233/95 649/1234/94 660/1235/95 -f 638/1222/93 649/1234/94 637/1221/94 -f 639/1223/92 650/1236/93 638/1222/93 -f 639/1223/92 652/1237/91 651/1238/92 -f 641/1225/90 652/1237/91 640/1224/91 -f 641/1225/90 654/1239/89 653/1240/90 -f 643/1241/87 654/1239/89 642/1227/89 -f 644/1229/88 655/1242/87 643/1228/87 -f 645/1230/98 656/1243/88 644/1229/88 -f 646/1231/97 657/1244/98 645/1230/98 -f 647/1232/96 658/1245/97 646/1231/97 -f 648/1233/95 659/1246/96 647/1232/96 -f 650/1236/71 661/342/6 649/1234/6 -f 651/1238/72 662/365/71 650/1236/71 -f 652/1237/2 663/364/72 651/1238/72 -f 653/1240/73 664/362/2 652/1237/2 -f 654/1239/74 665/360/73 653/1240/73 -f 655/1247/12 666/358/74 654/1239/74 -f 656/1243/67 667/353/12 655/1242/12 -f 657/1244/68 668/352/67 656/1243/67 -f 658/1245/3 669/350/68 657/1244/68 -f 659/1246/69 670/348/3 658/1245/3 -f 660/1235/70 671/346/69 659/1246/69 -f 649/1234/6 672/344/70 660/1235/70 -f 674/368/67 685/1248/12 673/369/12 -f 675/366/68 686/1249/67 674/367/67 -f 676/684/3 687/1250/68 675/363/68 -f 677/683/69 688/1251/3 676/361/3 -f 678/682/70 689/1252/69 677/359/69 -f 679/681/6 690/1253/70 678/357/70 -f 680/354/71 691/1254/6 679/355/6 -f 681/680/72 692/1255/71 680/351/71 -f 682/679/2 693/1256/72 681/349/72 -f 683/678/73 694/1257/2 682/347/2 -f 684/677/74 695/1258/73 683/345/73 -f 673/676/12 696/1259/74 684/343/74 -f 698/1260/74 709/1261/73 697/1262/73 -f 699/1263/12 710/1264/74 698/1260/74 -f 700/1265/67 711/1266/12 699/1263/12 -f 701/1267/68 712/1268/67 700/1265/67 -f 702/1269/3 713/1270/68 701/1267/68 -f 703/1271/69 714/1272/3 702/1269/3 -f 704/1273/70 715/1274/69 703/1275/69 -f 705/1276/6 716/1277/70 704/1273/70 -f 706/1278/71 717/1279/6 705/1276/6 -f 707/1280/72 718/1281/71 706/1278/71 -f 708/1282/2 719/1283/72 707/1280/72 -f 697/1262/73 720/1284/2 708/1282/2 -f 712/1268/77 723/1285/78 711/1266/78 -f 711/1266/78 722/1286/79 710/1264/79 -f 710/1264/79 721/1287/80 709/1261/80 -f 720/1284/81 721/1287/80 732/1288/81 -f 719/1283/82 732/1288/81 731/1289/82 -f 718/1281/83 731/1289/82 730/1290/83 -f 717/1279/84 730/1290/83 729/1291/84 -f 716/1277/85 729/1291/84 728/1292/85 -f 715/1274/86 728/1292/85 727/1293/86 -f 715/1294/86 726/1295/75 714/1272/75 -f 714/1272/75 725/1296/76 713/1270/76 -f 713/1270/76 724/1297/77 712/1268/77 -f 722/1286/74 733/1298/73 721/1287/73 -f 723/1285/12 734/1299/74 722/1286/74 -f 724/1297/67 735/1300/12 723/1285/12 -f 725/1296/68 736/1301/67 724/1297/67 -f 726/1295/3 737/1302/68 725/1296/68 -f 727/1303/69 738/1304/3 726/1295/3 -f 728/1292/70 739/1305/69 727/1293/69 -f 729/1291/6 740/1306/70 728/1292/70 -f 730/1290/71 741/1307/6 729/1291/6 -f 731/1289/72 742/1308/71 730/1290/71 -f 732/1288/2 743/1309/72 731/1289/72 -f 721/1287/73 744/1310/2 732/1288/2 -f 733/1298/90 746/1311/89 745/1312/90 -f 733/1298/90 756/1313/91 744/1310/91 -f 744/1310/91 755/1314/92 743/1309/92 -f 743/1309/92 754/1315/93 742/1308/93 -f 742/1308/93 753/1316/94 741/1307/94 -f 741/1307/94 752/1317/95 740/1306/95 -f 740/1306/95 751/1318/96 739/1305/96 -f 738/1304/97 751/1319/96 750/1320/97 -f 738/1304/97 749/1321/98 737/1302/98 -f 736/1301/88 749/1321/98 748/1322/88 -f 735/1300/87 748/1322/88 747/1323/87 -f 734/1299/89 747/1323/87 746/1311/89 -f 746/1311/74 757/1324/73 745/1312/73 -f 747/1323/12 758/1325/74 746/1311/74 -f 748/1322/67 759/1326/12 747/1323/12 -f 749/1321/68 760/1327/67 748/1322/67 -f 750/1320/3 761/1328/68 749/1321/68 -f 751/1319/69 762/1329/3 750/1320/3 -f 752/1317/70 763/1330/69 751/1318/69 -f 753/1316/6 764/1331/70 752/1317/70 -f 754/1315/71 765/1332/6 753/1316/6 -f 755/1314/72 766/1333/71 754/1315/71 -f 756/1313/2 767/1334/72 755/1314/72 -f 745/1312/73 768/1335/2 756/1313/2 -f 767/1334/82 778/1336/83 766/1333/83 -f 767/1334/82 780/1337/81 779/1338/82 -f 757/1324/80 780/1337/81 768/1335/81 -f 758/1325/79 769/1339/80 757/1324/80 -f 759/1326/78 770/1340/79 758/1325/79 -f 760/1327/77 771/1341/78 759/1326/78 -f 761/1328/76 772/1342/77 760/1327/77 -f 761/1328/76 774/1343/75 773/1344/76 -f 763/1345/86 774/1343/75 762/1329/75 -f 764/1331/85 775/1346/86 763/1330/86 -f 764/1331/85 777/1347/84 776/1348/85 -f 766/1333/83 777/1347/84 765/1332/84 -f 770/1340/74 781/1349/73 769/1339/73 -f 771/1341/12 782/1350/74 770/1340/74 -f 772/1342/67 783/1351/12 771/1341/12 -f 773/1344/68 784/1352/67 772/1342/67 -f 774/1343/3 785/1353/68 773/1344/68 -f 775/1354/69 786/1355/3 774/1343/3 -f 776/1348/70 787/1356/69 775/1346/69 -f 777/1347/6 788/1357/70 776/1348/70 -f 778/1336/71 789/1358/6 777/1347/6 -f 779/1338/72 790/1359/71 778/1336/71 -f 780/1337/2 791/1360/72 779/1338/72 -f 769/1339/73 792/1361/2 780/1337/2 -f 792/1361/91 793/1362/90 804/1363/91 -f 782/1350/89 793/1362/90 781/1349/90 -f 782/1350/89 795/1364/87 794/1365/89 -f 784/1352/88 795/1364/87 783/1351/87 -f 784/1352/88 797/1366/98 796/1367/88 -f 786/1355/97 797/1366/98 785/1353/98 -f 786/1355/97 799/1368/96 798/1369/97 -f 787/1356/96 800/1370/95 799/1371/96 -f 789/1358/94 800/1370/95 788/1357/95 -f 789/1358/94 802/1372/93 801/1373/94 -f 790/1359/93 803/1374/92 802/1372/93 -f 792/1361/91 803/1374/92 791/1360/92 -f 794/1365/74 805/373/73 793/1362/73 -f 795/1364/12 806/398/74 794/1365/74 -f 796/1367/67 807/396/12 795/1364/12 -f 797/1366/68 808/394/67 796/1367/67 -f 798/1369/3 809/392/68 797/1366/68 -f 799/1368/69 810/390/3 798/1369/3 -f 800/1370/70 811/385/69 799/1371/69 -f 801/1373/6 812/382/70 800/1370/70 -f 802/1372/71 813/381/6 801/1373/6 -f 803/1374/72 814/379/71 802/1372/71 -f 804/1363/2 815/377/72 803/1374/72 -f 793/1362/73 816/375/2 804/1363/2 -f 818/399/70 829/1375/69 817/400/69 -f 819/702/6 830/1376/70 818/397/70 -f 820/701/71 831/1377/6 819/395/6 -f 821/700/72 832/1378/71 820/393/71 -f 822/699/2 833/1379/72 821/391/72 -f 823/698/73 834/1380/2 822/389/2 -f 824/386/74 835/1381/73 823/387/73 -f 825/383/12 836/1382/74 824/384/74 -f 826/697/67 837/1383/12 825/380/12 -f 827/696/68 838/1384/67 826/378/67 -f 828/695/3 839/1385/68 827/376/68 -f 817/694/69 840/1386/3 828/374/3 -f 843/1387/6 854/1388/70 842/1389/70 -f 842/1389/70 853/1390/69 841/1391/69 -f 844/1392/71 855/1393/6 843/1387/6 -f 845/1394/72 856/1395/71 844/1392/71 -f 846/1396/2 857/1397/72 845/1394/72 -f 847/1398/73 858/1399/2 846/1396/2 -f 848/1400/74 859/1401/73 847/1402/73 -f 849/1403/12 860/1404/74 848/1400/74 -f 850/1405/67 861/1406/12 849/1403/12 -f 851/1407/68 862/1408/67 850/1405/67 -f 852/1409/3 863/1410/68 851/1407/68 -f 841/1391/69 864/1411/3 852/1409/3 -f 856/1395/83 867/1412/84 855/1393/84 -f 855/1393/84 866/1413/85 854/1388/85 -f 854/1388/85 865/1414/86 853/1390/86 -f 853/1390/86 876/1415/75 864/1411/75 -f 863/1410/76 876/1415/75 875/1416/76 -f 863/1410/76 874/1417/77 862/1408/77 -f 862/1408/77 873/1418/78 861/1406/78 -f 860/1404/79 873/1418/78 872/1419/79 -f 860/1404/79 871/1420/80 859/1401/80 -f 859/1421/80 870/1422/81 858/1399/81 -f 857/1397/82 870/1422/81 869/1423/82 -f 857/1397/82 868/1424/83 856/1395/83 -f 866/1413/70 877/1425/69 865/1414/69 -f 867/1412/6 878/1426/70 866/1413/70 -f 868/1424/71 879/1427/6 867/1412/6 -f 869/1423/72 880/1428/71 868/1424/71 -f 870/1422/2 881/1429/72 869/1423/72 -f 871/1430/73 882/1431/2 870/1422/2 -f 872/1419/74 883/1432/73 871/1420/73 -f 873/1418/12 884/1433/74 872/1419/74 -f 874/1417/67 885/1434/12 873/1418/12 -f 875/1416/68 886/1435/67 874/1417/67 -f 876/1415/3 887/1436/68 875/1416/68 -f 865/1414/69 888/1437/3 876/1415/3 -f 877/1425/96 890/1438/95 889/1439/96 -f 877/1425/96 900/1440/97 888/1437/97 -f 888/1437/97 899/1441/98 887/1436/98 -f 887/1436/98 898/1442/88 886/1435/88 -f 886/1435/88 897/1443/87 885/1434/87 -f 885/1434/87 896/1444/89 884/1433/89 -f 884/1433/89 895/1445/90 883/1432/90 -f 883/1446/90 894/1447/91 882/1431/91 -f 882/1431/91 893/1448/92 881/1429/92 -f 880/1428/93 893/1448/92 892/1449/93 -f 879/1427/94 892/1449/93 891/1450/94 -f 878/1426/95 891/1450/94 890/1438/95 -f 890/1438/70 901/1451/69 889/1439/69 -f 891/1450/6 902/1452/70 890/1438/70 -f 892/1449/71 903/1453/6 891/1450/6 -f 893/1448/72 904/1454/71 892/1449/71 -f 894/1447/2 905/1455/72 893/1448/72 -f 895/1456/73 906/1457/2 894/1447/2 -f 896/1444/74 907/1458/73 895/1445/73 -f 897/1443/12 908/1459/74 896/1444/74 -f 898/1442/67 909/1460/12 897/1443/12 -f 899/1441/68 910/1461/67 898/1442/67 -f 900/1440/3 911/1462/68 899/1441/68 -f 889/1439/69 912/1463/3 900/1440/3 -f 911/1462/76 922/1464/77 910/1461/77 -f 911/1462/76 924/1465/75 923/1466/76 -f 901/1451/86 924/1465/75 912/1463/75 -f 902/1452/85 913/1467/86 901/1451/86 -f 903/1453/84 914/1468/85 902/1452/85 -f 903/1453/84 916/1469/83 915/1470/84 -f 905/1455/82 916/1469/83 904/1454/83 -f 905/1455/82 918/1471/81 917/1472/82 -f 907/1473/80 918/1471/81 906/1457/81 -f 908/1459/79 919/1474/80 907/1458/80 -f 908/1459/79 921/1475/78 920/1476/79 -f 910/1461/77 921/1475/78 909/1460/78 -f 914/1468/70 925/1477/69 913/1467/69 -f 915/1470/6 926/1478/70 914/1468/70 -f 916/1469/71 927/1479/6 915/1470/6 -f 917/1472/72 928/1480/71 916/1469/71 -f 918/1471/2 929/1481/72 917/1472/72 -f 919/1482/73 930/1483/2 918/1471/2 -f 920/1476/74 931/1484/73 919/1474/73 -f 921/1475/12 932/1485/74 920/1476/74 -f 922/1464/67 933/1486/12 921/1475/12 -f 923/1466/68 934/1487/67 922/1464/67 -f 924/1465/3 935/1488/68 923/1466/68 -f 913/1467/69 936/1489/3 924/1465/3 -f 936/1489/97 937/1490/96 948/1491/97 -f 925/1477/96 938/1492/95 937/1490/96 -f 926/1478/95 939/1493/94 938/1492/95 -f 928/1480/93 939/1493/94 927/1479/94 -f 928/1480/93 941/1494/92 940/1495/93 -f 930/1483/91 941/1494/92 929/1481/92 -f 930/1483/91 943/1496/90 942/1497/91 -f 931/1484/90 944/1498/89 943/1499/90 -f 933/1486/87 944/1498/89 932/1485/89 -f 933/1486/87 946/1500/88 945/1501/87 -f 935/1488/98 946/1500/88 934/1487/88 -f 936/1489/97 947/1502/98 935/1488/98 -f 938/1492/70 949/404/69 937/1490/69 -f 939/1493/6 950/428/70 938/1492/70 -f 940/1495/71 951/427/6 939/1493/6 -f 941/1494/72 952/425/71 940/1495/71 -f 942/1497/2 953/423/72 941/1494/72 -f 943/1496/73 954/421/2 942/1497/2 -f 944/1498/74 955/416/73 943/1499/73 -f 945/1501/12 956/415/74 944/1498/74 -f 946/1500/67 957/411/12 945/1501/12 -f 947/1502/68 958/410/67 946/1500/67 -f 948/1491/3 959/408/68 947/1502/68 -f 937/1490/69 960/406/3 948/1491/3 -f 962/431/74 973/1503/73 961/432/73 -f 963/429/12 974/1504/74 962/430/74 -f 964/719/67 975/1505/12 963/426/12 -f 965/718/68 976/1506/67 964/424/67 -f 966/717/3 977/1507/68 965/422/68 -f 967/716/69 978/1508/3 966/420/3 -f 968/417/70 979/1509/69 967/418/69 -f 969/715/6 980/1510/70 968/414/70 -f 970/412/71 981/1511/6 969/413/6 -f 971/714/72 982/1512/71 970/409/71 -f 972/713/2 983/1513/72 971/407/72 -f 961/712/73 984/1514/2 972/405/2 -f 986/1515/2 997/1516/72 985/1517/72 -f 987/1518/73 998/1519/2 986/1515/2 -f 988/1520/74 999/1521/73 987/1518/73 -f 989/1522/12 1000/1523/74 988/1520/74 -f 990/1524/67 1001/1525/12 989/1522/12 -f 991/1526/68 1002/1527/67 990/1524/67 -f 992/1528/3 1003/1529/68 991/1530/68 -f 993/1531/69 1004/1532/3 992/1528/3 -f 994/1533/70 1005/1534/69 993/1531/69 -f 995/1535/6 1006/1536/70 994/1533/70 -f 996/1537/71 1007/1538/6 995/1535/6 -f 985/1517/72 1008/1539/71 996/1537/71 -f 1000/1523/79 1011/1540/80 999/1521/80 -f 999/1521/80 1010/1541/81 998/1519/81 -f 997/1516/82 1010/1541/81 1009/1542/82 -f 997/1516/82 1020/1543/83 1008/1539/83 -f 1007/1538/84 1020/1543/83 1019/1544/84 -f 1007/1538/84 1018/1545/85 1006/1536/85 -f 1006/1536/85 1017/1546/86 1005/1534/86 -f 1004/1532/75 1017/1546/86 1016/1547/75 -f 1003/1529/76 1016/1547/75 1015/1548/76 -f 1002/1527/77 1015/1549/76 1014/1550/77 -f 1002/1527/77 1013/1551/78 1001/1525/78 -f 1001/1525/78 1012/1552/79 1000/1523/79 -f 1010/1541/2 1021/1553/72 1009/1542/72 -f 1011/1540/73 1022/1554/2 1010/1541/2 -f 1012/1552/74 1023/1555/73 1011/1540/73 -f 1013/1551/12 1024/1556/74 1012/1552/74 -f 1014/1550/67 1025/1557/12 1013/1551/12 -f 1015/1549/68 1026/1558/67 1014/1550/67 -f 1016/1547/3 1027/1559/68 1015/1548/68 -f 1017/1546/69 1028/1560/3 1016/1547/3 -f 1018/1545/70 1029/1561/69 1017/1546/69 -f 1019/1544/6 1030/1562/70 1018/1545/70 -f 1020/1543/71 1031/1563/6 1019/1544/6 -f 1009/1542/72 1032/1564/71 1020/1543/71 -f 1022/1554/91 1033/1565/92 1021/1553/92 -f 1021/1553/92 1044/1566/93 1032/1564/93 -f 1032/1564/93 1043/1567/94 1031/1563/94 -f 1031/1563/94 1042/1568/95 1030/1562/95 -f 1030/1562/95 1041/1569/96 1029/1561/96 -f 1029/1561/96 1040/1570/97 1028/1560/97 -f 1028/1560/97 1039/1571/98 1027/1559/98 -f 1027/1572/98 1038/1573/88 1026/1558/88 -f 1025/1557/87 1038/1573/88 1037/1574/87 -f 1024/1556/89 1037/1574/87 1036/1575/89 -f 1023/1555/90 1036/1575/89 1035/1576/90 -f 1022/1554/91 1035/1576/90 1034/1577/91 -f 1034/1577/2 1045/1578/72 1033/1565/72 -f 1035/1576/73 1046/1579/2 1034/1577/2 -f 1036/1575/74 1047/1580/73 1035/1576/73 -f 1037/1574/12 1048/1581/74 1036/1575/74 -f 1038/1573/67 1049/1582/12 1037/1574/12 -f 1039/1583/68 1050/1584/67 1038/1573/67 -f 1040/1570/3 1051/1585/68 1039/1571/68 -f 1041/1569/69 1052/1586/3 1040/1570/3 -f 1042/1568/70 1053/1587/69 1041/1569/69 -f 1043/1567/6 1054/1588/70 1042/1568/70 -f 1044/1566/71 1055/1589/6 1043/1567/6 -f 1033/1565/72 1056/1590/71 1044/1566/71 -f 1054/1588/85 1067/1591/84 1066/1592/85 -f 1055/1589/84 1068/1593/83 1067/1591/84 -f 1045/1578/82 1068/1593/83 1056/1590/83 -f 1046/1579/81 1057/1594/82 1045/1578/82 -f 1047/1580/80 1058/1595/81 1046/1579/81 -f 1048/1581/79 1059/1596/80 1047/1580/80 -f 1049/1582/78 1060/1597/79 1048/1581/79 -f 1049/1582/78 1062/1598/77 1061/1599/78 -f 1051/1600/76 1062/1598/77 1050/1584/77 -f 1052/1586/75 1063/1601/76 1051/1585/76 -f 1052/1586/75 1065/1602/86 1064/1603/75 -f 1054/1588/85 1065/1602/86 1053/1587/86 -f 1058/1595/2 1069/1604/72 1057/1594/72 -f 1059/1596/73 1070/1605/2 1058/1595/2 -f 1060/1597/74 1071/1606/73 1059/1596/73 -f 1061/1599/12 1072/1607/74 1060/1597/74 -f 1062/1598/67 1073/1608/12 1061/1599/12 -f 1063/1609/68 1074/1610/67 1062/1598/67 -f 1064/1603/3 1075/1611/68 1063/1601/68 -f 1065/1602/69 1076/1612/3 1064/1603/3 -f 1066/1592/70 1077/1613/69 1065/1602/69 -f 1067/1591/6 1078/1614/70 1066/1592/70 -f 1068/1593/71 1079/1615/6 1067/1591/6 -f 1057/1594/72 1080/1616/71 1068/1593/71 -f 1080/1616/93 1081/1617/92 1092/1618/93 -f 1069/1604/92 1082/1619/91 1081/1617/92 -f 1070/1605/91 1083/1620/90 1082/1619/91 -f 1072/1607/89 1083/1620/90 1071/1606/90 -f 1073/1608/87 1084/1621/89 1072/1607/89 -f 1073/1608/87 1086/1622/88 1085/1623/87 -f 1074/1610/88 1087/1624/98 1086/1622/88 -f 1076/1612/97 1087/1625/98 1075/1611/98 -f 1077/1613/96 1088/1626/97 1076/1612/97 -f 1078/1614/95 1089/1627/96 1077/1613/96 -f 1079/1615/94 1090/1628/95 1078/1614/95 -f 1080/1616/93 1091/1629/94 1079/1615/94 -f 1082/1619/2 1093/436/72 1081/1617/72 -f 1083/1620/73 1094/462/2 1082/1619/2 -f 1084/1621/74 1095/460/73 1083/1620/73 -f 1085/1623/12 1096/458/74 1084/1621/74 -f 1086/1622/67 1097/456/12 1085/1623/12 -f 1087/1624/68 1098/454/67 1086/1622/67 -f 1088/1626/3 1099/449/68 1087/1625/68 -f 1089/1627/69 1100/446/3 1088/1626/3 -f 1090/1628/70 1101/443/69 1089/1627/69 -f 1091/1629/6 1102/442/70 1090/1628/70 -f 1092/1618/71 1103/440/6 1091/1629/6 -f 1081/1617/72 1104/438/71 1092/1618/71 -f 1106/463/3 1117/1630/68 1105/464/68 -f 1107/736/69 1118/1631/3 1106/461/3 -f 1108/735/70 1119/1632/69 1107/459/69 -f 1109/734/6 1120/1633/70 1108/457/70 -f 1110/733/71 1121/1634/6 1109/455/6 -f 1111/732/72 1122/1635/71 1110/453/71 -f 1112/450/2 1123/1636/72 1111/451/72 -f 1113/447/73 1124/1637/2 1112/448/2 -f 1114/444/74 1125/1638/73 1113/445/73 -f 1115/731/12 1126/1639/74 1114/441/74 -f 1116/730/67 1127/1640/12 1115/439/12 -f 1105/729/68 1128/1641/67 1116/437/67 -f 1131/1642/69 1142/1643/3 1130/1644/3 -f 1130/1644/3 1141/1645/68 1129/1646/68 -f 1132/1647/70 1143/1648/69 1131/1642/69 -f 1133/1649/6 1144/1650/70 1132/1647/70 -f 1134/1651/71 1145/1652/6 1133/1649/6 -f 1135/1653/72 1146/1654/71 1134/1651/71 -f 1136/1655/2 1147/1656/72 1135/1657/72 -f 1137/1658/73 1148/1659/2 1136/1655/2 -f 1138/1660/74 1149/1661/73 1137/1658/73 -f 1139/1662/12 1150/1663/74 1138/1660/74 -f 1140/1664/67 1151/1665/12 1139/1662/12 -f 1129/1646/68 1152/1666/67 1140/1664/67 -f 1144/1650/85 1155/1667/86 1143/1648/86 -f 1143/1648/86 1154/1668/75 1142/1643/75 -f 1142/1643/75 1153/1669/76 1141/1645/76 -f 1152/1666/77 1153/1669/76 1164/1670/77 -f 1151/1665/78 1164/1670/77 1163/1671/78 -f 1151/1665/78 1162/1672/79 1150/1663/79 -f 1150/1663/79 1161/1673/80 1149/1661/80 -f 1148/1659/81 1161/1673/80 1160/1674/81 -f 1147/1656/82 1160/1674/81 1159/1675/82 -f 1147/1676/82 1158/1677/83 1146/1654/83 -f 1145/1652/84 1158/1677/83 1157/1678/84 -f 1145/1652/84 1156/1679/85 1144/1650/85 -f 1154/1668/3 1165/1680/68 1153/1669/68 -f 1155/1667/69 1166/1681/3 1154/1668/3 -f 1156/1679/70 1167/1682/69 1155/1667/69 -f 1157/1678/6 1168/1683/70 1156/1679/70 -f 1158/1677/71 1169/1684/6 1157/1678/6 -f 1159/1685/72 1170/1686/71 1158/1677/71 -f 1160/1674/2 1171/1687/72 1159/1675/72 -f 1161/1673/73 1172/1688/2 1160/1674/2 -f 1162/1672/74 1173/1689/73 1161/1673/73 -f 1163/1671/12 1174/1690/74 1162/1672/74 -f 1164/1670/67 1175/1691/12 1163/1671/12 -f 1153/1669/68 1176/1692/67 1164/1670/67 -f 1165/1680/98 1178/1693/97 1177/1694/98 -f 1165/1680/98 1188/1695/88 1176/1692/88 -f 1176/1692/88 1187/1696/87 1175/1691/87 -f 1175/1691/87 1186/1697/89 1174/1690/89 -f 1174/1690/89 1185/1698/90 1173/1689/90 -f 1173/1689/90 1184/1699/91 1172/1688/91 -f 1172/1688/91 1183/1700/92 1171/1687/92 -f 1171/1701/92 1182/1702/93 1170/1686/93 -f 1169/1684/94 1182/1702/93 1181/1703/94 -f 1168/1683/95 1181/1703/94 1180/1704/95 -f 1167/1682/96 1180/1704/95 1179/1705/96 -f 1166/1681/97 1179/1705/96 1178/1693/97 -f 1178/1693/3 1189/1706/68 1177/1694/68 -f 1179/1705/69 1190/1707/3 1178/1693/3 -f 1180/1704/70 1191/1708/69 1179/1705/69 -f 1181/1703/6 1192/1709/70 1180/1704/70 -f 1182/1702/71 1193/1710/6 1181/1703/6 -f 1183/1711/72 1194/1712/71 1182/1702/71 -f 1184/1699/2 1195/1713/72 1183/1700/72 -f 1185/1698/73 1196/1714/2 1184/1699/2 -f 1186/1697/74 1197/1715/73 1185/1698/73 -f 1187/1696/12 1198/1716/74 1186/1697/74 -f 1188/1695/67 1199/1717/12 1187/1696/12 -f 1177/1694/68 1200/1718/67 1188/1695/67 -f 1198/1716/79 1211/1719/78 1210/1720/79 -f 1199/1717/78 1212/1721/77 1211/1719/78 -f 1189/1706/76 1212/1721/77 1200/1718/77 -f 1190/1707/75 1201/1722/76 1189/1706/76 -f 1191/1708/86 1202/1723/75 1190/1707/75 -f 1192/1709/85 1203/1724/86 1191/1708/86 -f 1193/1710/84 1204/1725/85 1192/1709/85 -f 1194/1712/83 1205/1726/84 1193/1710/84 -f 1195/1727/82 1206/1728/83 1194/1712/83 -f 1196/1714/81 1207/1729/82 1195/1713/82 -f 1196/1714/81 1209/1730/80 1208/1731/81 -f 1198/1716/79 1209/1730/80 1197/1715/80 -f 1202/1723/3 1213/1732/68 1201/1722/68 -f 1203/1724/69 1214/1733/3 1202/1723/3 -f 1204/1725/70 1215/1734/69 1203/1724/69 -f 1205/1726/6 1216/1735/70 1204/1725/70 -f 1206/1728/71 1217/1736/6 1205/1726/6 -f 1207/1737/72 1218/1738/71 1206/1728/71 -f 1208/1731/2 1219/1739/72 1207/1729/72 -f 1209/1730/73 1220/1740/2 1208/1731/2 -f 1210/1720/74 1221/1741/73 1209/1730/73 -f 1211/1719/12 1222/1742/74 1210/1720/74 -f 1212/1721/67 1223/1743/12 1211/1719/12 -f 1201/1722/68 1224/1744/67 1212/1721/67 -f 1224/1744/88 1225/1745/98 1236/1746/88 -f 1213/1732/98 1226/1747/97 1225/1745/98 -f 1214/1733/97 1227/1748/96 1226/1747/97 -f 1215/1734/96 1228/1749/95 1227/1748/96 -f 1216/1735/95 1229/1750/94 1228/1749/95 -f 1218/1738/93 1229/1750/94 1217/1736/94 -f 1219/1751/92 1230/1752/93 1218/1738/93 -f 1220/1740/91 1231/1753/92 1219/1739/92 -f 1221/1741/90 1232/1754/91 1220/1740/91 -f 1221/1741/90 1234/1755/89 1233/1756/90 -f 1223/1743/87 1234/1755/89 1222/1742/89 -f 1223/1743/87 1236/1746/88 1235/1757/87 -f 1226/1747/3 1237/468/68 1225/1745/68 -f 1227/1748/69 1238/492/3 1226/1747/3 -f 1228/1749/70 1239/491/69 1227/1748/69 -f 1229/1750/6 1240/489/70 1228/1749/70 -f 1230/1752/71 1241/487/6 1229/1750/6 -f 1231/1758/72 1242/485/71 1230/1752/71 -f 1232/1754/2 1243/480/72 1231/1753/72 -f 1233/1756/73 1244/479/2 1232/1754/2 -f 1234/1755/74 1245/475/73 1233/1756/73 -f 1235/1757/12 1246/474/74 1234/1755/74 -f 1236/1746/67 1247/472/12 1235/1757/12 -f 1225/1745/68 1248/470/67 1236/1746/67 -f 1250/754/2 1261/1759/72 1249/495/72 -f 1251/493/73 1262/1760/2 1250/494/2 -f 1252/753/74 1263/1761/73 1251/490/73 -f 1253/752/12 1264/1762/74 1252/488/74 -f 1254/751/67 1265/1763/12 1253/486/12 -f 1255/750/68 1266/1764/67 1254/484/67 -f 1256/481/3 1267/1765/68 1255/482/68 -f 1257/749/69 1268/1766/3 1256/478/3 -f 1258/476/70 1269/1767/69 1257/477/69 -f 1259/748/6 1270/1768/70 1258/473/70 -f 1260/747/71 1271/1769/6 1259/471/6 -f 1249/746/72 1272/1770/71 1260/469/71 -f 30/764/45 31/770/43 15/765/43 -f 23/767/42 24/772/46 8/768/46 -f 31/770/43 32/777/47 16/771/47 -f 24/772/46 25/807/6 9/773/6 -f 17/774/12 18/781/48 2/775/48 -f 32/777/47 17/774/12 1/776/12 -f 25/778/6 26/783/49 10/779/49 -f 18/781/48 19/785/44 3/782/44 -f 26/783/49 27/787/41 11/784/41 -f 19/785/44 20/789/50 4/786/50 -f 27/787/41 28/791/51 12/788/51 -f 20/789/50 21/793/3 5/790/3 -f 28/791/51 29/795/2 13/792/2 -f 21/793/3 22/796/52 6/794/52 -f 29/795/2 30/764/45 14/766/45 -f 22/796/52 23/767/42 7/769/42 -f 47/797/53 48/1771/54 32/777/54 -f 48/798/54 33/1772/55 17/774/55 -f 33/799/55 34/1773/56 18/781/56 -f 34/800/56 35/1774/57 19/785/57 -f 35/801/57 36/1775/58 20/789/58 -f 20/789/58 36/1776/58 37/802/37 -f 37/803/37 38/1777/59 22/796/59 -f 22/796/59 38/1778/59 39/804/60 -f 39/805/60 40/1779/61 24/772/61 -f 40/806/61 41/1780/62 25/807/62 -f 41/808/62 42/843/63 26/783/63 -f 26/783/63 42/1781/63 43/809/64 -f 27/787/64 43/1782/64 44/810/65 -f 44/811/65 45/1783/31 29/795/31 -f 45/812/31 46/1784/66 30/764/66 -f 46/813/66 47/1785/53 31/770/53 -f 35/814/44 51/844/44 52/815/50 -f 43/817/41 59/845/41 60/818/51 -f 36/816/50 52/815/50 53/820/3 -f 44/819/51 60/818/51 61/822/2 -f 37/821/3 53/820/3 54/824/52 -f 45/823/2 61/822/2 62/826/45 -f 38/825/52 54/824/52 55/828/42 -f 46/827/45 62/826/45 63/830/43 -f 39/829/42 55/828/42 56/832/46 -f 47/831/43 63/830/43 64/834/47 -f 40/833/46 56/832/46 57/836/6 -f 33/838/12 49/841/12 50/839/48 -f 48/835/47 64/834/47 49/841/12 -f 41/808/6 57/857/6 58/842/49 -f 34/840/48 50/839/48 51/844/44 -f 42/843/49 58/842/49 59/845/41 -f 62/826/66 78/1786/66 79/846/53 -f 79/847/53 80/1787/54 64/834/54 -f 80/848/54 65/1788/55 49/841/55 -f 65/849/55 66/1789/56 50/839/56 -f 66/850/56 67/1790/57 51/844/57 -f 51/844/57 67/1791/57 68/851/58 -f 52/815/58 68/1792/58 69/852/37 -f 69/853/37 70/1793/59 54/824/59 -f 70/854/59 71/1794/60 55/828/60 -f 55/828/60 71/1795/60 72/855/61 -f 56/832/61 72/1796/61 73/856/62 -f 57/857/62 73/1797/62 74/858/63 -f 58/842/63 74/1798/63 75/859/64 -f 75/860/64 76/1799/65 60/818/65 -f 60/818/65 76/1800/65 77/861/31 -f 77/862/31 78/1801/66 62/826/66 -f 96/863/67 108/867/67 107/864/12 -f 97/866/68 109/869/68 108/867/67 -f 98/868/3 110/871/3 109/869/68 -f 99/870/69 111/873/69 110/871/3 -f 100/872/70 112/875/70 111/873/69 -f 101/874/6 113/897/6 112/875/70 -f 102/876/71 114/880/71 113/877/6 -f 103/879/72 115/882/72 114/880/71 -f 104/881/2 116/884/2 115/882/72 -f 105/883/73 117/886/73 116/884/2 -f 106/885/74 118/887/74 117/886/73 -f 95/865/12 107/864/12 118/887/74 -f 110/871/75 122/900/75 121/888/76 -f 109/869/76 121/888/76 120/889/77 -f 108/867/77 120/889/77 119/890/78 -f 118/887/79 107/864/78 119/890/78 -f 117/886/80 118/887/79 130/891/79 -f 116/884/81 117/886/80 129/892/80 -f 115/882/82 116/884/81 128/893/81 -f 114/880/83 115/882/82 127/894/82 -f 113/877/84 114/880/83 126/895/83 -f 113/897/84 125/906/84 124/898/85 -f 111/873/86 112/875/85 124/898/85 -f 111/873/86 123/899/86 122/900/75 -f 120/889/67 132/902/67 131/901/12 -f 121/888/68 133/903/68 132/902/67 -f 122/900/3 134/904/3 133/903/68 -f 123/899/69 135/905/69 134/904/3 -f 124/898/70 136/907/70 135/905/69 -f 125/906/6 137/1802/6 136/907/70 -f 126/895/71 138/909/71 137/908/6 -f 127/894/72 139/910/72 138/909/71 -f 128/893/2 140/911/2 139/910/72 -f 129/892/73 141/912/73 140/911/2 -f 130/891/74 142/913/74 141/912/73 -f 119/890/12 131/901/12 142/913/74 -f 131/901/87 132/902/88 144/914/88 -f 131/901/87 143/915/87 154/916/89 -f 142/913/89 154/916/89 153/917/90 -f 141/912/90 153/917/90 152/918/91 -f 140/911/91 152/918/91 151/919/92 -f 139/910/92 151/919/92 150/920/93 -f 138/909/93 150/920/93 149/921/94 -f 136/907/95 137/1802/94 149/922/94 -f 136/907/95 148/923/95 147/924/96 -f 134/904/97 135/905/96 147/924/96 -f 133/903/98 134/904/97 146/925/97 -f 132/902/88 133/903/98 145/926/98 -f 144/914/67 156/928/67 155/927/12 -f 145/926/68 157/929/68 156/928/67 -f 146/925/3 158/930/3 157/929/68 -f 147/924/69 159/931/69 158/930/3 -f 148/923/70 160/932/70 159/931/69 -f 149/922/6 161/947/6 160/932/70 -f 150/920/71 162/934/71 161/933/6 -f 151/919/72 163/935/72 162/934/71 -f 152/918/2 164/936/2 163/935/72 -f 153/917/73 165/937/73 164/936/2 -f 154/916/74 166/938/74 165/937/73 -f 143/915/12 155/927/12 166/938/74 -f 164/936/81 165/937/80 177/939/80 -f 165/937/80 166/938/79 178/941/79 -f 155/927/78 167/942/78 178/941/79 -f 156/928/77 168/943/77 167/942/78 -f 157/929/76 169/944/76 168/943/77 -f 158/930/75 170/946/75 169/944/76 -f 158/930/75 159/931/86 171/945/86 -f 160/932/85 172/948/85 171/945/86 -f 161/947/84 173/957/84 172/948/85 -f 162/934/83 174/951/83 173/949/84 -f 162/934/83 163/935/82 175/950/82 -f 163/935/82 164/936/81 176/940/81 -f 168/943/67 180/953/67 179/952/12 -f 169/944/68 181/954/68 180/953/67 -f 170/946/3 182/955/3 181/954/68 -f 171/945/69 183/956/69 182/955/3 -f 172/948/70 184/958/70 183/956/69 -f 173/957/6 185/972/6 184/958/70 -f 174/951/71 186/960/71 185/959/6 -f 175/950/72 187/961/72 186/960/71 -f 176/940/2 188/962/2 187/961/72 -f 177/939/73 189/963/73 188/962/2 -f 178/941/74 190/964/74 189/963/73 -f 167/942/12 179/952/12 190/964/74 -f 190/964/89 179/952/87 191/965/87 -f 180/953/88 192/967/88 191/965/87 -f 181/954/98 193/969/98 192/967/88 -f 181/954/98 182/955/97 194/968/97 -f 183/956/96 195/971/96 194/968/97 -f 183/956/96 184/958/95 196/970/95 -f 185/972/94 197/978/94 196/970/95 -f 185/959/94 186/960/93 198/973/93 -f 187/961/92 199/975/92 198/973/93 -f 188/962/91 200/976/91 199/975/92 -f 189/963/90 201/977/90 200/976/91 -f 189/963/90 190/964/89 202/966/89 -f 192/967/67 204/53/67 203/30/12 -f 193/969/68 205/52/68 204/53/67 -f 194/968/3 206/50/3 205/52/68 -f 195/971/69 207/48/69 206/50/3 -f 196/970/70 208/46/70 207/48/69 -f 197/978/6 209/44/6 208/46/70 -f 198/973/71 210/40/71 209/41/6 -f 199/975/72 211/38/72 210/40/71 -f 200/976/2 212/36/2 211/38/72 -f 201/977/73 213/34/73 212/36/2 -f 202/966/74 214/32/74 213/34/73 -f 191/965/12 203/30/12 214/32/74 -f 216/56/71 228/1803/71 227/979/6 -f 217/54/72 229/1804/72 228/980/71 -f 218/537/2 230/1805/2 229/981/72 -f 219/536/73 231/1806/73 230/982/2 -f 220/535/74 232/1807/74 231/983/73 -f 221/534/12 233/1808/12 232/984/74 -f 222/42/67 234/1809/67 233/985/12 -f 223/533/68 235/1810/68 234/986/67 -f 224/532/3 236/1811/3 235/987/68 -f 225/531/69 237/1812/69 236/988/3 -f 226/530/70 238/1813/70 237/989/69 -f 215/529/6 227/1814/6 238/990/70 -f 253/991/68 254/1000/3 242/992/3 -f 260/994/2 261/1002/73 249/995/73 -f 257/997/6 258/1007/71 246/998/71 -f 254/1000/3 255/1009/69 243/1001/69 -f 261/1002/73 262/1011/74 250/1003/74 -f 251/1004/12 252/1012/67 240/1005/67 -f 258/1007/71 259/1013/72 247/1008/72 -f 255/1009/69 256/1014/70 244/1010/70 -f 262/1011/74 251/1004/12 239/1006/12 -f 252/1012/67 253/991/68 241/993/68 -f 259/1013/72 260/994/2 248/996/2 -f 256/1014/70 257/1815/6 245/1015/6 -f 297/1016/2 298/1028/43 290/1017/43 -f 295/1019/6 296/1029/41 288/1020/41 -f 293/1022/3 294/1030/42 286/1023/42 -f 291/1025/12 292/1032/44 284/1026/44 -f 298/1028/43 291/1025/12 283/1027/12 -f 296/1029/41 297/1016/2 289/1018/2 -f 294/1030/42 295/1816/6 287/1031/6 -f 292/1032/44 293/1022/3 285/1024/3 -f 352/1033/12 354/1036/47 353/1034/47 -f 354/1036/47 356/1038/43 355/1037/43 -f 356/1038/43 358/1040/45 357/1039/45 -f 358/1040/45 360/1042/2 359/1041/2 -f 360/1042/2 362/1044/51 361/1043/51 -f 362/1044/51 364/1046/41 363/1045/41 -f 364/1046/41 366/1048/49 365/1047/49 -f 366/1048/49 368/1817/6 367/1049/6 -f 368/1050/6 370/1053/46 369/1051/46 -f 370/1053/46 372/1055/42 371/1054/42 -f 372/1055/42 374/1057/52 373/1056/52 -f 374/1057/52 376/1059/3 375/1058/3 -f 376/1059/3 378/1061/50 377/1060/50 -f 378/1061/50 380/1063/44 379/1062/44 -f 380/1063/44 382/1065/48 381/1064/48 -f 382/1065/48 352/1033/12 351/1035/12 -f 384/1066/12 386/1069/47 385/1067/47 -f 386/1069/47 388/1071/43 387/1070/43 -f 388/1071/43 390/1073/45 389/1072/45 -f 390/1073/45 392/1075/2 391/1074/2 -f 392/1075/2 394/1077/51 393/1076/51 -f 394/1077/51 396/1079/41 395/1078/41 -f 396/1079/41 398/1081/49 397/1080/49 -f 398/1081/49 400/1818/6 399/1082/6 -f 400/1083/6 402/1086/46 401/1084/46 -f 402/1086/46 404/1819/42 403/1087/42 -f 403/1087/42 404/1819/42 406/1088/52 -f 406/1088/52 408/1091/3 407/1090/3 -f 408/1091/3 410/1093/50 409/1092/50 -f 410/1093/50 412/1095/44 411/1094/44 -f 412/1095/44 414/1097/48 413/1096/48 -f 414/1097/48 384/1066/12 383/1068/12 -f 423/1098/1 431/1114/1 438/1099/14 -f 429/1101/6 437/1820/6 436/1102/99 -f 427/1104/9 435/1112/9 434/1105/21 -f 425/1107/12 433/1113/12 432/1108/10 -f 430/1100/14 438/1099/14 437/1110/6 -f 428/1103/99 436/1102/99 435/1112/9 -f 426/1106/21 434/1105/21 433/1113/12 -f 424/1109/10 432/1108/10 431/1114/1 -f 555/1115/72 567/1138/72 566/1116/71 -f 554/1117/71 566/1116/71 565/1118/6 -f 530/1120/100 532/1123/51 531/1121/51 -f 532/1123/51 534/1125/41 533/1124/41 -f 534/1125/41 536/1127/49 535/1126/49 -f 536/1127/49 538/1129/6 537/1128/6 -f 538/1129/6 540/1131/46 539/1130/46 -f 540/1131/46 542/1133/42 541/1132/42 -f 542/1133/42 544/1135/52 543/1134/52 -f 544/1135/52 546/1821/101 545/1136/101 -f 556/1137/2 568/1140/2 567/1138/72 -f 557/1139/73 569/1142/73 568/1140/2 -f 558/1141/74 570/1144/74 569/1142/73 -f 559/1143/12 571/1166/12 570/1144/74 -f 560/1145/67 572/1149/67 571/1146/12 -f 561/1148/68 573/1151/68 572/1149/67 -f 562/1150/3 574/1153/3 573/1151/68 -f 563/1152/69 575/1155/69 574/1153/3 -f 564/1154/70 576/1156/70 575/1155/69 -f 553/1119/6 565/1118/6 576/1156/70 -f 568/1140/81 580/1169/81 579/1157/82 -f 567/1138/82 579/1157/82 578/1158/83 -f 566/1116/83 578/1158/83 577/1159/84 -f 576/1156/85 565/1118/84 577/1159/84 -f 575/1155/86 576/1156/85 588/1160/85 -f 574/1153/75 575/1155/86 587/1161/86 -f 574/1153/75 586/1162/75 585/1163/76 -f 572/1149/77 573/1151/76 585/1163/76 -f 571/1146/78 572/1149/77 584/1164/77 -f 571/1166/78 583/1175/78 582/1167/79 -f 569/1142/80 570/1144/79 582/1167/79 -f 569/1142/80 581/1168/80 580/1169/81 -f 578/1158/71 590/1171/71 589/1170/6 -f 579/1157/72 591/1172/72 590/1171/71 -f 580/1169/2 592/1173/2 591/1172/72 -f 581/1168/73 593/1174/73 592/1173/2 -f 582/1167/74 594/1176/74 593/1174/73 -f 583/1175/12 595/1822/12 594/1176/74 -f 584/1164/67 596/1178/67 595/1177/12 -f 585/1163/68 597/1179/68 596/1178/67 -f 586/1162/3 598/1180/3 597/1179/68 -f 587/1161/69 599/1181/69 598/1180/3 -f 588/1160/70 600/1182/70 599/1181/69 -f 577/1159/6 589/1170/6 600/1182/70 -f 589/1170/94 590/1171/93 602/1183/93 -f 589/1170/94 601/1184/94 612/1185/95 -f 600/1182/95 612/1185/95 611/1186/96 -f 599/1181/96 611/1186/96 610/1187/97 -f 598/1180/97 610/1187/97 609/1188/98 -f 597/1179/98 609/1188/98 608/1189/88 -f 596/1178/88 608/1189/88 607/1190/87 -f 594/1176/89 595/1822/87 607/1191/87 -f 594/1176/89 606/1192/89 605/1193/90 -f 592/1173/91 593/1174/90 605/1193/90 -f 591/1172/92 592/1173/91 604/1194/91 -f 590/1171/93 591/1172/92 603/1195/92 -f 602/1183/71 614/1197/71 613/1196/6 -f 603/1195/72 615/1198/72 614/1197/71 -f 604/1194/2 616/1199/2 615/1198/72 -f 605/1193/73 617/1200/73 616/1199/2 -f 606/1192/74 618/1201/74 617/1200/73 -f 607/1191/12 619/1216/12 618/1201/74 -f 608/1189/67 620/1203/67 619/1202/12 -f 609/1188/68 621/1204/68 620/1203/67 -f 610/1187/3 622/1205/3 621/1204/68 -f 611/1186/69 623/1206/69 622/1205/3 -f 612/1185/70 624/1207/70 623/1206/69 -f 601/1184/6 613/1196/6 624/1207/70 -f 622/1205/75 623/1206/86 635/1208/86 -f 623/1206/86 624/1207/85 636/1210/85 -f 624/1207/85 613/1196/84 625/1211/84 -f 613/1196/84 614/1197/83 626/1212/83 -f 614/1197/83 615/1198/82 627/1213/82 -f 616/1199/81 628/1214/81 627/1213/82 -f 617/1200/80 629/1215/80 628/1214/81 -f 618/1201/79 630/1217/79 629/1215/80 -f 619/1216/78 631/1226/78 630/1217/79 -f 620/1203/77 632/1220/77 631/1218/78 -f 620/1203/77 621/1204/76 633/1219/76 -f 621/1204/76 622/1205/75 634/1209/75 -f 626/1212/71 638/1222/71 637/1221/6 -f 627/1213/72 639/1223/72 638/1222/71 -f 628/1214/2 640/1224/2 639/1223/72 -f 629/1215/73 641/1225/73 640/1224/2 -f 630/1217/74 642/1227/74 641/1225/73 -f 631/1226/12 643/1241/12 642/1227/74 -f 632/1220/67 644/1229/67 643/1228/12 -f 633/1219/68 645/1230/68 644/1229/67 -f 634/1209/3 646/1231/3 645/1230/68 -f 635/1208/69 647/1232/69 646/1231/3 -f 636/1210/70 648/1233/70 647/1232/69 -f 625/1211/6 637/1221/6 648/1233/70 -f 648/1233/95 637/1221/94 649/1234/94 -f 638/1222/93 650/1236/93 649/1234/94 -f 639/1223/92 651/1238/92 650/1236/93 -f 639/1223/92 640/1224/91 652/1237/91 -f 641/1225/90 653/1240/90 652/1237/91 -f 641/1225/90 642/1227/89 654/1239/89 -f 643/1241/87 655/1247/87 654/1239/89 -f 644/1229/88 656/1243/88 655/1242/87 -f 645/1230/98 657/1244/98 656/1243/88 -f 646/1231/97 658/1245/97 657/1244/98 -f 647/1232/96 659/1246/96 658/1245/97 -f 648/1233/95 660/1235/95 659/1246/96 -f 650/1236/71 662/365/71 661/342/6 -f 651/1238/72 663/364/72 662/365/71 -f 652/1237/2 664/362/2 663/364/72 -f 653/1240/73 665/360/73 664/362/2 -f 654/1239/74 666/358/74 665/360/73 -f 655/1247/12 667/356/12 666/358/74 -f 656/1243/67 668/352/67 667/353/12 -f 657/1244/68 669/350/68 668/352/67 -f 658/1245/3 670/348/3 669/350/68 -f 659/1246/69 671/346/69 670/348/3 -f 660/1235/70 672/344/70 671/346/69 -f 649/1234/6 661/342/6 672/344/70 -f 674/368/67 686/1823/67 685/1248/12 -f 675/366/68 687/1824/68 686/1249/67 -f 676/684/3 688/1825/3 687/1250/68 -f 677/683/69 689/1826/69 688/1251/3 -f 678/682/70 690/1827/70 689/1252/69 -f 679/681/6 691/1828/6 690/1253/70 -f 680/354/71 692/1829/71 691/1254/6 -f 681/680/72 693/1830/72 692/1255/71 -f 682/679/2 694/1831/2 693/1256/72 -f 683/678/73 695/1832/73 694/1257/2 -f 684/677/74 696/1833/74 695/1258/73 -f 673/676/12 685/1834/12 696/1259/74 -f 698/1260/74 710/1264/74 709/1261/73 -f 699/1263/12 711/1266/12 710/1264/74 -f 700/1265/67 712/1268/67 711/1266/12 -f 701/1267/68 713/1270/68 712/1268/67 -f 702/1269/3 714/1272/3 713/1270/68 -f 703/1271/69 715/1294/69 714/1272/3 -f 704/1273/70 716/1277/70 715/1274/69 -f 705/1276/6 717/1279/6 716/1277/70 -f 706/1278/71 718/1281/71 717/1279/6 -f 707/1280/72 719/1283/72 718/1281/71 -f 708/1282/2 720/1284/2 719/1283/72 -f 697/1262/73 709/1261/73 720/1284/2 -f 712/1268/77 724/1297/77 723/1285/78 -f 711/1266/78 723/1285/78 722/1286/79 -f 710/1264/79 722/1286/79 721/1287/80 -f 720/1284/81 709/1261/80 721/1287/80 -f 719/1283/82 720/1284/81 732/1288/81 -f 718/1281/83 719/1283/82 731/1289/82 -f 717/1279/84 718/1281/83 730/1290/83 -f 716/1277/85 717/1279/84 729/1291/84 -f 715/1274/86 716/1277/85 728/1292/85 -f 715/1294/86 727/1303/86 726/1295/75 -f 714/1272/75 726/1295/75 725/1296/76 -f 713/1270/76 725/1296/76 724/1297/77 -f 722/1286/74 734/1299/74 733/1298/73 -f 723/1285/12 735/1300/12 734/1299/74 -f 724/1297/67 736/1301/67 735/1300/12 -f 725/1296/68 737/1302/68 736/1301/67 -f 726/1295/3 738/1304/3 737/1302/68 -f 727/1303/69 739/1835/69 738/1304/3 -f 728/1292/70 740/1306/70 739/1305/69 -f 729/1291/6 741/1307/6 740/1306/70 -f 730/1290/71 742/1308/71 741/1307/6 -f 731/1289/72 743/1309/72 742/1308/71 -f 732/1288/2 744/1310/2 743/1309/72 -f 721/1287/73 733/1298/73 744/1310/2 -f 733/1298/90 734/1299/89 746/1311/89 -f 733/1298/90 745/1312/90 756/1313/91 -f 744/1310/91 756/1313/91 755/1314/92 -f 743/1309/92 755/1314/92 754/1315/93 -f 742/1308/93 754/1315/93 753/1316/94 -f 741/1307/94 753/1316/94 752/1317/95 -f 740/1306/95 752/1317/95 751/1318/96 -f 738/1304/97 739/1835/96 751/1319/96 -f 738/1304/97 750/1320/97 749/1321/98 -f 736/1301/88 737/1302/98 749/1321/98 -f 735/1300/87 736/1301/88 748/1322/88 -f 734/1299/89 735/1300/87 747/1323/87 -f 746/1311/74 758/1325/74 757/1324/73 -f 747/1323/12 759/1326/12 758/1325/74 -f 748/1322/67 760/1327/67 759/1326/12 -f 749/1321/68 761/1328/68 760/1327/67 -f 750/1320/3 762/1329/3 761/1328/68 -f 751/1319/69 763/1345/69 762/1329/3 -f 752/1317/70 764/1331/70 763/1330/69 -f 753/1316/6 765/1332/6 764/1331/70 -f 754/1315/71 766/1333/71 765/1332/6 -f 755/1314/72 767/1334/72 766/1333/71 -f 756/1313/2 768/1335/2 767/1334/72 -f 745/1312/73 757/1324/73 768/1335/2 -f 767/1334/82 779/1338/82 778/1336/83 -f 767/1334/82 768/1335/81 780/1337/81 -f 757/1324/80 769/1339/80 780/1337/81 -f 758/1325/79 770/1340/79 769/1339/80 -f 759/1326/78 771/1341/78 770/1340/79 -f 760/1327/77 772/1342/77 771/1341/78 -f 761/1328/76 773/1344/76 772/1342/77 -f 761/1328/76 762/1329/75 774/1343/75 -f 763/1345/86 775/1354/86 774/1343/75 -f 764/1331/85 776/1348/85 775/1346/86 -f 764/1331/85 765/1332/84 777/1347/84 -f 766/1333/83 778/1336/83 777/1347/84 -f 770/1340/74 782/1350/74 781/1349/73 -f 771/1341/12 783/1351/12 782/1350/74 -f 772/1342/67 784/1352/67 783/1351/12 -f 773/1344/68 785/1353/68 784/1352/67 -f 774/1343/3 786/1355/3 785/1353/68 -f 775/1354/69 787/1836/69 786/1355/3 -f 776/1348/70 788/1357/70 787/1356/69 -f 777/1347/6 789/1358/6 788/1357/70 -f 778/1336/71 790/1359/71 789/1358/6 -f 779/1338/72 791/1360/72 790/1359/71 -f 780/1337/2 792/1361/2 791/1360/72 -f 769/1339/73 781/1349/73 792/1361/2 -f 792/1361/91 781/1349/90 793/1362/90 -f 782/1350/89 794/1365/89 793/1362/90 -f 782/1350/89 783/1351/87 795/1364/87 -f 784/1352/88 796/1367/88 795/1364/87 -f 784/1352/88 785/1353/98 797/1366/98 -f 786/1355/97 798/1369/97 797/1366/98 -f 786/1355/97 787/1836/96 799/1368/96 -f 787/1356/96 788/1357/95 800/1370/95 -f 789/1358/94 801/1373/94 800/1370/95 -f 789/1358/94 790/1359/93 802/1372/93 -f 790/1359/93 791/1360/92 803/1374/92 -f 792/1361/91 804/1363/91 803/1374/92 -f 794/1365/74 806/398/74 805/373/73 -f 795/1364/12 807/396/12 806/398/74 -f 796/1367/67 808/394/67 807/396/12 -f 797/1366/68 809/392/68 808/394/67 -f 798/1369/3 810/390/3 809/392/68 -f 799/1368/69 811/388/69 810/390/3 -f 800/1370/70 812/382/70 811/385/69 -f 801/1373/6 813/381/6 812/382/70 -f 802/1372/71 814/379/71 813/381/6 -f 803/1374/72 815/377/72 814/379/71 -f 804/1363/2 816/375/2 815/377/72 -f 793/1362/73 805/373/73 816/375/2 -f 818/399/70 830/1837/70 829/1375/69 -f 819/702/6 831/1838/6 830/1376/70 -f 820/701/71 832/1839/71 831/1377/6 -f 821/700/72 833/1840/72 832/1378/71 -f 822/699/2 834/1841/2 833/1379/72 -f 823/698/73 835/1842/73 834/1380/2 -f 824/386/74 836/1843/74 835/1381/73 -f 825/383/12 837/1844/12 836/1382/74 -f 826/697/67 838/1845/67 837/1383/12 -f 827/696/68 839/1846/68 838/1384/67 -f 828/695/3 840/1847/3 839/1385/68 -f 817/694/69 829/1848/69 840/1386/3 -f 843/1387/6 855/1393/6 854/1388/70 -f 842/1389/70 854/1388/70 853/1390/69 -f 844/1392/71 856/1395/71 855/1393/6 -f 845/1394/72 857/1397/72 856/1395/71 -f 846/1396/2 858/1399/2 857/1397/72 -f 847/1398/73 859/1421/73 858/1399/2 -f 848/1400/74 860/1404/74 859/1401/73 -f 849/1403/12 861/1406/12 860/1404/74 -f 850/1405/67 862/1408/67 861/1406/12 -f 851/1407/68 863/1410/68 862/1408/67 -f 852/1409/3 864/1411/3 863/1410/68 -f 841/1391/69 853/1390/69 864/1411/3 -f 856/1395/83 868/1424/83 867/1412/84 -f 855/1393/84 867/1412/84 866/1413/85 -f 854/1388/85 866/1413/85 865/1414/86 -f 853/1390/86 865/1414/86 876/1415/75 -f 863/1410/76 864/1411/75 876/1415/75 -f 863/1410/76 875/1416/76 874/1417/77 -f 862/1408/77 874/1417/77 873/1418/78 -f 860/1404/79 861/1406/78 873/1418/78 -f 860/1404/79 872/1419/79 871/1420/80 -f 859/1421/80 871/1430/80 870/1422/81 -f 857/1397/82 858/1399/81 870/1422/81 -f 857/1397/82 869/1423/82 868/1424/83 -f 866/1413/70 878/1426/70 877/1425/69 -f 867/1412/6 879/1427/6 878/1426/70 -f 868/1424/71 880/1428/71 879/1427/6 -f 869/1423/72 881/1429/72 880/1428/71 -f 870/1422/2 882/1431/2 881/1429/72 -f 871/1430/73 883/1446/73 882/1431/2 -f 872/1419/74 884/1433/74 883/1432/73 -f 873/1418/12 885/1434/12 884/1433/74 -f 874/1417/67 886/1435/67 885/1434/12 -f 875/1416/68 887/1436/68 886/1435/67 -f 876/1415/3 888/1437/3 887/1436/68 -f 865/1414/69 877/1425/69 888/1437/3 -f 877/1425/96 878/1426/95 890/1438/95 -f 877/1425/96 889/1439/96 900/1440/97 -f 888/1437/97 900/1440/97 899/1441/98 -f 887/1436/98 899/1441/98 898/1442/88 -f 886/1435/88 898/1442/88 897/1443/87 -f 885/1434/87 897/1443/87 896/1444/89 -f 884/1433/89 896/1444/89 895/1445/90 -f 883/1446/90 895/1456/90 894/1447/91 -f 882/1431/91 894/1447/91 893/1448/92 -f 880/1428/93 881/1429/92 893/1448/92 -f 879/1427/94 880/1428/93 892/1449/93 -f 878/1426/95 879/1427/94 891/1450/94 -f 890/1438/70 902/1452/70 901/1451/69 -f 891/1450/6 903/1453/6 902/1452/70 -f 892/1449/71 904/1454/71 903/1453/6 -f 893/1448/72 905/1455/72 904/1454/71 -f 894/1447/2 906/1457/2 905/1455/72 -f 895/1456/73 907/1473/73 906/1457/2 -f 896/1444/74 908/1459/74 907/1458/73 -f 897/1443/12 909/1460/12 908/1459/74 -f 898/1442/67 910/1461/67 909/1460/12 -f 899/1441/68 911/1462/68 910/1461/67 -f 900/1440/3 912/1463/3 911/1462/68 -f 889/1439/69 901/1451/69 912/1463/3 -f 911/1462/76 923/1466/76 922/1464/77 -f 911/1462/76 912/1463/75 924/1465/75 -f 901/1451/86 913/1467/86 924/1465/75 -f 902/1452/85 914/1468/85 913/1467/86 -f 903/1453/84 915/1470/84 914/1468/85 -f 903/1453/84 904/1454/83 916/1469/83 -f 905/1455/82 917/1472/82 916/1469/83 -f 905/1455/82 906/1457/81 918/1471/81 -f 907/1473/80 919/1482/80 918/1471/81 -f 908/1459/79 920/1476/79 919/1474/80 -f 908/1459/79 909/1460/78 921/1475/78 -f 910/1461/77 922/1464/77 921/1475/78 -f 914/1468/70 926/1478/70 925/1477/69 -f 915/1470/6 927/1479/6 926/1478/70 -f 916/1469/71 928/1480/71 927/1479/6 -f 917/1472/72 929/1481/72 928/1480/71 -f 918/1471/2 930/1483/2 929/1481/72 -f 919/1482/73 931/1849/73 930/1483/2 -f 920/1476/74 932/1485/74 931/1484/73 -f 921/1475/12 933/1486/12 932/1485/74 -f 922/1464/67 934/1487/67 933/1486/12 -f 923/1466/68 935/1488/68 934/1487/67 -f 924/1465/3 936/1489/3 935/1488/68 -f 913/1467/69 925/1477/69 936/1489/3 -f 936/1489/97 925/1477/96 937/1490/96 -f 925/1477/96 926/1478/95 938/1492/95 -f 926/1478/95 927/1479/94 939/1493/94 -f 928/1480/93 940/1495/93 939/1493/94 -f 928/1480/93 929/1481/92 941/1494/92 -f 930/1483/91 942/1497/91 941/1494/92 -f 930/1483/91 931/1849/90 943/1496/90 -f 931/1484/90 932/1485/89 944/1498/89 -f 933/1486/87 945/1501/87 944/1498/89 -f 933/1486/87 934/1487/88 946/1500/88 -f 935/1488/98 947/1502/98 946/1500/88 -f 936/1489/97 948/1491/97 947/1502/98 -f 938/1492/70 950/428/70 949/404/69 -f 939/1493/6 951/427/6 950/428/70 -f 940/1495/71 952/425/71 951/427/6 -f 941/1494/72 953/423/72 952/425/71 -f 942/1497/2 954/421/2 953/423/72 -f 943/1496/73 955/419/73 954/421/2 -f 944/1498/74 956/415/74 955/416/73 -f 945/1501/12 957/411/12 956/415/74 -f 946/1500/67 958/410/67 957/411/12 -f 947/1502/68 959/408/68 958/410/67 -f 948/1491/3 960/406/3 959/408/68 -f 937/1490/69 949/404/69 960/406/3 -f 962/431/74 974/1850/74 973/1503/73 -f 963/429/12 975/1851/12 974/1504/74 -f 964/719/67 976/1852/67 975/1505/12 -f 965/718/68 977/1853/68 976/1506/67 -f 966/717/3 978/1854/3 977/1507/68 -f 967/716/69 979/1855/69 978/1508/3 -f 968/417/70 980/1856/70 979/1509/69 -f 969/715/6 981/1857/6 980/1510/70 -f 970/412/71 982/1858/71 981/1511/6 -f 971/714/72 983/1859/72 982/1512/71 -f 972/713/2 984/1860/2 983/1513/72 -f 961/712/73 973/1861/73 984/1514/2 -f 986/1515/2 998/1519/2 997/1516/72 -f 987/1518/73 999/1521/73 998/1519/2 -f 988/1520/74 1000/1523/74 999/1521/73 -f 989/1522/12 1001/1525/12 1000/1523/74 -f 990/1524/67 1002/1527/67 1001/1525/12 -f 991/1526/68 1003/1862/68 1002/1527/67 -f 992/1528/3 1004/1532/3 1003/1529/68 -f 993/1531/69 1005/1534/69 1004/1532/3 -f 994/1533/70 1006/1536/70 1005/1534/69 -f 995/1535/6 1007/1538/6 1006/1536/70 -f 996/1537/71 1008/1539/71 1007/1538/6 -f 985/1517/72 997/1516/72 1008/1539/71 -f 1000/1523/79 1012/1552/79 1011/1540/80 -f 999/1521/80 1011/1540/80 1010/1541/81 -f 997/1516/82 998/1519/81 1010/1541/81 -f 997/1516/82 1009/1542/82 1020/1543/83 -f 1007/1538/84 1008/1539/83 1020/1543/83 -f 1007/1538/84 1019/1544/84 1018/1545/85 -f 1006/1536/85 1018/1545/85 1017/1546/86 -f 1004/1532/75 1005/1534/86 1017/1546/86 -f 1003/1529/76 1004/1532/75 1016/1547/75 -f 1002/1527/77 1003/1862/76 1015/1549/76 -f 1002/1527/77 1014/1550/77 1013/1551/78 -f 1001/1525/78 1013/1551/78 1012/1552/79 -f 1010/1541/2 1022/1554/2 1021/1553/72 -f 1011/1540/73 1023/1555/73 1022/1554/2 -f 1012/1552/74 1024/1556/74 1023/1555/73 -f 1013/1551/12 1025/1557/12 1024/1556/74 -f 1014/1550/67 1026/1558/67 1025/1557/12 -f 1015/1549/68 1027/1572/68 1026/1558/67 -f 1016/1547/3 1028/1560/3 1027/1559/68 -f 1017/1546/69 1029/1561/69 1028/1560/3 -f 1018/1545/70 1030/1562/70 1029/1561/69 -f 1019/1544/6 1031/1563/6 1030/1562/70 -f 1020/1543/71 1032/1564/71 1031/1563/6 -f 1009/1542/72 1021/1553/72 1032/1564/71 -f 1022/1554/91 1034/1577/91 1033/1565/92 -f 1021/1553/92 1033/1565/92 1044/1566/93 -f 1032/1564/93 1044/1566/93 1043/1567/94 -f 1031/1563/94 1043/1567/94 1042/1568/95 -f 1030/1562/95 1042/1568/95 1041/1569/96 -f 1029/1561/96 1041/1569/96 1040/1570/97 -f 1028/1560/97 1040/1570/97 1039/1571/98 -f 1027/1572/98 1039/1583/98 1038/1573/88 -f 1025/1557/87 1026/1558/88 1038/1573/88 -f 1024/1556/89 1025/1557/87 1037/1574/87 -f 1023/1555/90 1024/1556/89 1036/1575/89 -f 1022/1554/91 1023/1555/90 1035/1576/90 -f 1034/1577/2 1046/1579/2 1045/1578/72 -f 1035/1576/73 1047/1580/73 1046/1579/2 -f 1036/1575/74 1048/1581/74 1047/1580/73 -f 1037/1574/12 1049/1582/12 1048/1581/74 -f 1038/1573/67 1050/1584/67 1049/1582/12 -f 1039/1583/68 1051/1600/68 1050/1584/67 -f 1040/1570/3 1052/1586/3 1051/1585/68 -f 1041/1569/69 1053/1587/69 1052/1586/3 -f 1042/1568/70 1054/1588/70 1053/1587/69 -f 1043/1567/6 1055/1589/6 1054/1588/70 -f 1044/1566/71 1056/1590/71 1055/1589/6 -f 1033/1565/72 1045/1578/72 1056/1590/71 -f 1054/1588/85 1055/1589/84 1067/1591/84 -f 1055/1589/84 1056/1590/83 1068/1593/83 -f 1045/1578/82 1057/1594/82 1068/1593/83 -f 1046/1579/81 1058/1595/81 1057/1594/82 -f 1047/1580/80 1059/1596/80 1058/1595/81 -f 1048/1581/79 1060/1597/79 1059/1596/80 -f 1049/1582/78 1061/1599/78 1060/1597/79 -f 1049/1582/78 1050/1584/77 1062/1598/77 -f 1051/1600/76 1063/1609/76 1062/1598/77 -f 1052/1586/75 1064/1603/75 1063/1601/76 -f 1052/1586/75 1053/1587/86 1065/1602/86 -f 1054/1588/85 1066/1592/85 1065/1602/86 -f 1058/1595/2 1070/1605/2 1069/1604/72 -f 1059/1596/73 1071/1606/73 1070/1605/2 -f 1060/1597/74 1072/1607/74 1071/1606/73 -f 1061/1599/12 1073/1608/12 1072/1607/74 -f 1062/1598/67 1074/1610/67 1073/1608/12 -f 1063/1609/68 1075/1863/68 1074/1610/67 -f 1064/1603/3 1076/1612/3 1075/1611/68 -f 1065/1602/69 1077/1613/69 1076/1612/3 -f 1066/1592/70 1078/1614/70 1077/1613/69 -f 1067/1591/6 1079/1615/6 1078/1614/70 -f 1068/1593/71 1080/1616/71 1079/1615/6 -f 1057/1594/72 1069/1604/72 1080/1616/71 -f 1080/1616/93 1069/1604/92 1081/1617/92 -f 1069/1604/92 1070/1605/91 1082/1619/91 -f 1070/1605/91 1071/1606/90 1083/1620/90 -f 1072/1607/89 1084/1621/89 1083/1620/90 -f 1073/1608/87 1085/1623/87 1084/1621/89 -f 1073/1608/87 1074/1610/88 1086/1622/88 -f 1074/1610/88 1075/1863/98 1087/1624/98 -f 1076/1612/97 1088/1626/97 1087/1625/98 -f 1077/1613/96 1089/1627/96 1088/1626/97 -f 1078/1614/95 1090/1628/95 1089/1627/96 -f 1079/1615/94 1091/1629/94 1090/1628/95 -f 1080/1616/93 1092/1618/93 1091/1629/94 -f 1082/1619/2 1094/462/2 1093/436/72 -f 1083/1620/73 1095/460/73 1094/462/2 -f 1084/1621/74 1096/458/74 1095/460/73 -f 1085/1623/12 1097/456/12 1096/458/74 -f 1086/1622/67 1098/454/67 1097/456/12 -f 1087/1624/68 1099/452/68 1098/454/67 -f 1088/1626/3 1100/446/3 1099/449/68 -f 1089/1627/69 1101/443/69 1100/446/3 -f 1090/1628/70 1102/442/70 1101/443/69 -f 1091/1629/6 1103/440/6 1102/442/70 -f 1092/1618/71 1104/438/71 1103/440/6 -f 1081/1617/72 1093/436/72 1104/438/71 -f 1106/463/3 1118/1864/3 1117/1630/68 -f 1107/736/69 1119/1865/69 1118/1631/3 -f 1108/735/70 1120/1866/70 1119/1632/69 -f 1109/734/6 1121/1867/6 1120/1633/70 -f 1110/733/71 1122/1868/71 1121/1634/6 -f 1111/732/72 1123/1869/72 1122/1635/71 -f 1112/450/2 1124/1870/2 1123/1636/72 -f 1113/447/73 1125/1871/73 1124/1637/2 -f 1114/444/74 1126/1872/74 1125/1638/73 -f 1115/731/12 1127/1873/12 1126/1639/74 -f 1116/730/67 1128/1874/67 1127/1640/12 -f 1105/729/68 1117/1875/68 1128/1641/67 -f 1131/1642/69 1143/1648/69 1142/1643/3 -f 1130/1644/3 1142/1643/3 1141/1645/68 -f 1132/1647/70 1144/1650/70 1143/1648/69 -f 1133/1649/6 1145/1652/6 1144/1650/70 -f 1134/1651/71 1146/1654/71 1145/1652/6 -f 1135/1653/72 1147/1676/72 1146/1654/71 -f 1136/1655/2 1148/1659/2 1147/1656/72 -f 1137/1658/73 1149/1661/73 1148/1659/2 -f 1138/1660/74 1150/1663/74 1149/1661/73 -f 1139/1662/12 1151/1665/12 1150/1663/74 -f 1140/1664/67 1152/1666/67 1151/1665/12 -f 1129/1646/68 1141/1645/68 1152/1666/67 -f 1144/1650/85 1156/1679/85 1155/1667/86 -f 1143/1648/86 1155/1667/86 1154/1668/75 -f 1142/1643/75 1154/1668/75 1153/1669/76 -f 1152/1666/77 1141/1645/76 1153/1669/76 -f 1151/1665/78 1152/1666/77 1164/1670/77 -f 1151/1665/78 1163/1671/78 1162/1672/79 -f 1150/1663/79 1162/1672/79 1161/1673/80 -f 1148/1659/81 1149/1661/80 1161/1673/80 -f 1147/1656/82 1148/1659/81 1160/1674/81 -f 1147/1676/82 1159/1685/82 1158/1677/83 -f 1145/1652/84 1146/1654/83 1158/1677/83 -f 1145/1652/84 1157/1678/84 1156/1679/85 -f 1154/1668/3 1166/1681/3 1165/1680/68 -f 1155/1667/69 1167/1682/69 1166/1681/3 -f 1156/1679/70 1168/1683/70 1167/1682/69 -f 1157/1678/6 1169/1684/6 1168/1683/70 -f 1158/1677/71 1170/1686/71 1169/1684/6 -f 1159/1685/72 1171/1701/72 1170/1686/71 -f 1160/1674/2 1172/1688/2 1171/1687/72 -f 1161/1673/73 1173/1689/73 1172/1688/2 -f 1162/1672/74 1174/1690/74 1173/1689/73 -f 1163/1671/12 1175/1691/12 1174/1690/74 -f 1164/1670/67 1176/1692/67 1175/1691/12 -f 1153/1669/68 1165/1680/68 1176/1692/67 -f 1165/1680/98 1166/1681/97 1178/1693/97 -f 1165/1680/98 1177/1694/98 1188/1695/88 -f 1176/1692/88 1188/1695/88 1187/1696/87 -f 1175/1691/87 1187/1696/87 1186/1697/89 -f 1174/1690/89 1186/1697/89 1185/1698/90 -f 1173/1689/90 1185/1698/90 1184/1699/91 -f 1172/1688/91 1184/1699/91 1183/1700/92 -f 1171/1701/92 1183/1711/92 1182/1702/93 -f 1169/1684/94 1170/1686/93 1182/1702/93 -f 1168/1683/95 1169/1684/94 1181/1703/94 -f 1167/1682/96 1168/1683/95 1180/1704/95 -f 1166/1681/97 1167/1682/96 1179/1705/96 -f 1178/1693/3 1190/1707/3 1189/1706/68 -f 1179/1705/69 1191/1708/69 1190/1707/3 -f 1180/1704/70 1192/1709/70 1191/1708/69 -f 1181/1703/6 1193/1710/6 1192/1709/70 -f 1182/1702/71 1194/1712/71 1193/1710/6 -f 1183/1711/72 1195/1727/72 1194/1712/71 -f 1184/1699/2 1196/1714/2 1195/1713/72 -f 1185/1698/73 1197/1715/73 1196/1714/2 -f 1186/1697/74 1198/1716/74 1197/1715/73 -f 1187/1696/12 1199/1717/12 1198/1716/74 -f 1188/1695/67 1200/1718/67 1199/1717/12 -f 1177/1694/68 1189/1706/68 1200/1718/67 -f 1198/1716/79 1199/1717/78 1211/1719/78 -f 1199/1717/78 1200/1718/77 1212/1721/77 -f 1189/1706/76 1201/1722/76 1212/1721/77 -f 1190/1707/75 1202/1723/75 1201/1722/76 -f 1191/1708/86 1203/1724/86 1202/1723/75 -f 1192/1709/85 1204/1725/85 1203/1724/86 -f 1193/1710/84 1205/1726/84 1204/1725/85 -f 1194/1712/83 1206/1728/83 1205/1726/84 -f 1195/1727/82 1207/1737/82 1206/1728/83 -f 1196/1714/81 1208/1731/81 1207/1729/82 -f 1196/1714/81 1197/1715/80 1209/1730/80 -f 1198/1716/79 1210/1720/79 1209/1730/80 -f 1202/1723/3 1214/1733/3 1213/1732/68 -f 1203/1724/69 1215/1734/69 1214/1733/3 -f 1204/1725/70 1216/1735/70 1215/1734/69 -f 1205/1726/6 1217/1736/6 1216/1735/70 -f 1206/1728/71 1218/1738/71 1217/1736/6 -f 1207/1737/72 1219/1751/72 1218/1738/71 -f 1208/1731/2 1220/1740/2 1219/1739/72 -f 1209/1730/73 1221/1741/73 1220/1740/2 -f 1210/1720/74 1222/1742/74 1221/1741/73 -f 1211/1719/12 1223/1743/12 1222/1742/74 -f 1212/1721/67 1224/1744/67 1223/1743/12 -f 1201/1722/68 1213/1732/68 1224/1744/67 -f 1224/1744/88 1213/1732/98 1225/1745/98 -f 1213/1732/98 1214/1733/97 1226/1747/97 -f 1214/1733/97 1215/1734/96 1227/1748/96 -f 1215/1734/96 1216/1735/95 1228/1749/95 -f 1216/1735/95 1217/1736/94 1229/1750/94 -f 1218/1738/93 1230/1752/93 1229/1750/94 -f 1219/1751/92 1231/1758/92 1230/1752/93 -f 1220/1740/91 1232/1754/91 1231/1753/92 -f 1221/1741/90 1233/1756/90 1232/1754/91 -f 1221/1741/90 1222/1742/89 1234/1755/89 -f 1223/1743/87 1235/1757/87 1234/1755/89 -f 1223/1743/87 1224/1744/88 1236/1746/88 -f 1226/1747/3 1238/492/3 1237/468/68 -f 1227/1748/69 1239/491/69 1238/492/3 -f 1228/1749/70 1240/489/70 1239/491/69 -f 1229/1750/6 1241/487/6 1240/489/70 -f 1230/1752/71 1242/485/71 1241/487/6 -f 1231/1758/72 1243/483/72 1242/485/71 -f 1232/1754/2 1244/479/2 1243/480/72 -f 1233/1756/73 1245/475/73 1244/479/2 -f 1234/1755/74 1246/474/74 1245/475/73 -f 1235/1757/12 1247/472/12 1246/474/74 -f 1236/1746/67 1248/470/67 1247/472/12 -f 1225/1745/68 1237/468/68 1248/470/67 -f 1250/754/2 1262/1876/2 1261/1759/72 -f 1251/493/73 1263/1877/73 1262/1760/2 -f 1252/753/74 1264/1878/74 1263/1761/73 -f 1253/752/12 1265/1879/12 1264/1762/74 -f 1254/751/67 1266/1880/67 1265/1763/12 -f 1255/750/68 1267/1881/68 1266/1764/67 -f 1256/481/3 1268/1882/3 1267/1765/68 -f 1257/749/69 1269/1883/69 1268/1766/3 -f 1258/476/70 1270/1884/70 1269/1767/69 -f 1259/748/6 1271/1885/6 1270/1768/70 -f 1260/747/71 1272/1886/71 1271/1769/6 -f 1249/746/72 1261/1887/72 1272/1770/71 +f 918/1636/83 903/1637/82 902/1638/83 +f 911/1639/80 896/1640/84 895/1641/80 +f 919/1642/82 904/1643/85 903/1637/82 +f 912/1644/84 897/1645/44 896/1640/84 +f 905/1646/50 890/1647/86 889/1648/50 +f 920/1649/85 889/1648/50 904/1643/85 +f 913/1650/44 898/1651/87 897/1652/44 +f 906/1653/86 891/1654/81 890/1647/86 +f 914/1655/87 899/1656/79 898/1651/87 +f 907/1657/81 892/1658/88 891/1654/81 +f 915/1659/79 900/1660/89 899/1656/79 +f 908/1661/88 893/1662/41 892/1658/88 +f 916/1663/89 901/1664/40 900/1660/89 +f 909/1665/41 894/1666/90 893/1662/41 +f 917/1667/40 902/1638/83 901/1664/40 +f 910/1668/90 895/1641/80 894/1666/90 +f 935/1669/91 920/1649/92 919/1642/91 +f 936/1670/92 905/1646/93 920/1649/92 +f 921/1671/93 906/1653/94 905/1646/93 +f 922/1672/94 907/1657/95 906/1653/94 +f 923/1673/95 908/1661/96 907/1657/95 +f 908/1661/96 925/1674/75 909/1665/75 +f 925/1675/75 910/1668/97 909/1665/75 +f 910/1668/97 927/1676/98 911/1639/98 +f 927/1677/98 912/1644/99 911/1639/98 +f 928/1678/99 913/1679/100 912/1644/99 +f 929/1680/100 914/1655/101 913/1650/100 +f 914/1655/101 931/1681/102 915/1659/102 +f 915/1659/102 932/1682/103 916/1663/103 +f 932/1683/103 917/1667/69 916/1663/103 +f 933/1684/69 918/1636/104 917/1667/69 +f 934/1685/104 919/1642/91 918/1636/104 +f 923/1686/81 940/1687/88 924/1688/88 +f 931/1689/79 948/1690/89 932/1691/89 +f 924/1688/88 941/1692/41 925/1693/41 +f 932/1691/89 949/1694/40 933/1695/40 +f 925/1693/41 942/1696/90 926/1697/90 +f 933/1695/40 950/1698/83 934/1699/83 +f 926/1697/90 943/1700/80 927/1701/80 +f 934/1699/83 951/1702/82 935/1703/82 +f 927/1701/80 944/1704/84 928/1705/84 +f 935/1703/82 952/1706/85 936/1707/85 +f 928/1705/84 945/1708/44 929/1709/44 +f 921/1710/50 938/1711/86 922/1712/86 +f 936/1707/85 937/1713/50 921/1710/50 +f 929/1680/44 946/1714/87 930/1715/87 +f 922/1712/86 939/1716/81 923/1686/81 +f 930/1715/87 947/1717/79 931/1689/79 +f 950/1698/104 967/1718/91 951/1702/91 +f 967/1719/91 952/1706/92 951/1702/91 +f 968/1720/92 937/1713/93 952/1706/92 +f 953/1721/93 938/1711/94 937/1713/93 +f 954/1722/94 939/1716/95 938/1711/94 +f 939/1716/95 956/1723/96 940/1687/96 +f 940/1687/96 957/1724/75 941/1692/75 +f 957/1725/75 942/1696/97 941/1692/75 +f 958/1726/97 943/1700/98 942/1696/97 +f 943/1700/98 960/1727/99 944/1704/99 +f 944/1704/99 961/1728/100 945/1708/100 +f 945/1729/100 962/1730/101 946/1714/101 +f 946/1714/101 963/1731/102 947/1717/102 +f 963/1732/102 948/1690/103 947/1717/102 +f 948/1690/103 965/1733/69 949/1694/69 +f 965/1734/69 950/1698/104 949/1694/69 +f 1017/1735/40 1010/1736/82 1009/1737/40 +f 1015/1738/44 1008/1739/79 1007/1740/44 +f 1013/1741/41 1006/1742/80 1005/1743/41 +f 1011/1744/50 1004/1745/81 1003/1746/50 +f 1018/1747/82 1003/1746/50 1010/1736/82 +f 1016/1748/79 1009/1737/40 1008/1739/79 +f 1014/1749/80 1007/1750/44 1006/1742/80 +f 1012/1751/81 1005/1743/41 1004/1745/81 +f 1072/1752/50 1073/1753/85 1071/1754/50 +f 1074/1755/85 1075/1756/82 1073/1753/85 +f 1076/1757/82 1077/1758/83 1075/1756/82 +f 1078/1759/83 1079/1760/40 1077/1758/83 +f 1080/1761/40 1081/1762/89 1079/1760/40 +f 1082/1763/89 1083/1764/79 1081/1762/89 +f 1084/1765/79 1085/1766/87 1083/1764/79 +f 1086/1767/87 1087/1768/44 1085/1766/87 +f 1088/1769/44 1089/1770/84 1087/1771/44 +f 1090/1772/84 1091/1773/80 1089/1770/84 +f 1092/1774/80 1093/1775/90 1091/1773/80 +f 1094/1776/90 1095/1777/41 1093/1775/90 +f 1096/1778/41 1097/1779/88 1095/1777/41 +f 1098/1780/88 1099/1781/81 1097/1779/88 +f 1100/1782/81 1101/1783/86 1099/1781/81 +f 1102/1784/86 1071/1754/50 1101/1783/86 +f 1104/1785/50 1105/1786/85 1103/1787/50 +f 1106/1788/85 1107/1789/82 1105/1786/85 +f 1108/1790/82 1109/1791/83 1107/1789/82 +f 1110/1792/83 1111/1793/40 1109/1791/83 +f 1112/1794/40 1113/1795/89 1111/1793/40 +f 1114/1796/89 1115/1797/79 1113/1795/89 +f 1116/1798/79 1117/1799/87 1115/1797/79 +f 1118/1800/87 1119/1801/44 1117/1799/87 +f 1120/1802/44 1121/1803/84 1119/1804/44 +f 1122/1805/84 1123/1806/80 1121/1803/84 +f 1123/1806/80 1126/1807/90 1125/1808/90 +f 1126/1807/90 1127/1809/41 1125/1808/90 +f 1128/1810/41 1129/1811/88 1127/1809/41 +f 1130/1812/88 1131/1813/81 1129/1811/88 +f 1132/1814/81 1133/1815/86 1131/1813/81 +f 1134/1816/86 1103/1787/50 1133/1815/86 +f 1143/1817/39 1158/1818/52 1150/1819/52 +f 1149/1820/44 1156/1821/105 1148/1822/105 +f 1147/1823/47 1154/1824/59 1146/1825/59 +f 1145/1826/50 1152/1827/48 1144/1828/48 +f 1150/1819/52 1157/1829/44 1149/1830/44 +f 1148/1822/105 1155/1831/47 1147/1823/47 +f 1146/1825/59 1153/1832/50 1145/1826/50 +f 1144/1828/48 1151/1833/39 1143/1817/39 +f 1250/1834/106 1251/1835/89 1249/1836/106 +f 1252/1837/89 1253/1838/79 1251/1835/89 +f 1254/1839/79 1255/1840/87 1253/1838/79 +f 1256/1841/87 1257/1842/44 1255/1840/87 +f 1258/1843/44 1259/1844/84 1257/1842/44 +f 1260/1845/84 1261/1846/80 1259/1844/84 +f 1262/1847/80 1263/1848/90 1261/1846/80 +f 1264/1849/90 1265/1850/107 1263/1848/90 +f 918/1636/83 919/1642/82 903/1637/82 +f 911/1639/80 912/1644/84 896/1640/84 +f 919/1642/82 920/1649/85 904/1643/85 +f 912/1644/84 913/1679/44 897/1645/44 +f 905/1646/50 906/1653/86 890/1647/86 +f 920/1649/85 905/1646/50 889/1648/50 +f 913/1650/44 914/1655/87 898/1651/87 +f 906/1653/86 907/1657/81 891/1654/81 +f 914/1655/87 915/1659/79 899/1656/79 +f 907/1657/81 908/1661/88 892/1658/88 +f 915/1659/79 916/1663/89 900/1660/89 +f 908/1661/88 909/1665/41 893/1662/41 +f 916/1663/89 917/1667/40 901/1664/40 +f 909/1665/41 910/1668/90 894/1666/90 +f 917/1667/40 918/1636/83 902/1638/83 +f 910/1668/90 911/1639/80 895/1641/80 +f 935/1669/91 936/1851/92 920/1649/92 +f 936/1670/92 921/1852/93 905/1646/93 +f 921/1671/93 922/1853/94 906/1653/94 +f 922/1672/94 923/1854/95 907/1657/95 +f 923/1673/95 924/1855/96 908/1661/96 +f 908/1661/96 924/1856/96 925/1674/75 +f 925/1675/75 926/1857/97 910/1668/97 +f 910/1668/97 926/1858/97 927/1676/98 +f 927/1677/98 928/1859/99 912/1644/99 +f 928/1678/99 929/1860/100 913/1679/100 +f 929/1680/100 930/1715/101 914/1655/101 +f 914/1655/101 930/1861/101 931/1681/102 +f 915/1659/102 931/1862/102 932/1682/103 +f 932/1683/103 933/1863/69 917/1667/69 +f 933/1684/69 934/1864/104 918/1636/104 +f 934/1685/104 935/1865/91 919/1642/91 +f 923/1686/81 939/1716/81 940/1687/88 +f 931/1689/79 947/1717/79 948/1690/89 +f 924/1688/88 940/1687/88 941/1692/41 +f 932/1691/89 948/1690/89 949/1694/40 +f 925/1693/41 941/1692/41 942/1696/90 +f 933/1695/40 949/1694/40 950/1698/83 +f 926/1697/90 942/1696/90 943/1700/80 +f 934/1699/83 950/1698/83 951/1702/82 +f 927/1701/80 943/1700/80 944/1704/84 +f 935/1703/82 951/1702/82 952/1706/85 +f 928/1705/84 944/1704/84 945/1708/44 +f 921/1710/50 937/1713/50 938/1711/86 +f 936/1707/85 952/1706/85 937/1713/50 +f 929/1680/44 945/1729/44 946/1714/87 +f 922/1712/86 938/1711/86 939/1716/81 +f 930/1715/87 946/1714/87 947/1717/79 +f 950/1698/104 966/1866/104 967/1718/91 +f 967/1719/91 968/1867/92 952/1706/92 +f 968/1720/92 953/1868/93 937/1713/93 +f 953/1721/93 954/1869/94 938/1711/94 +f 954/1722/94 955/1870/95 939/1716/95 +f 939/1716/95 955/1871/95 956/1723/96 +f 940/1687/96 956/1872/96 957/1724/75 +f 957/1725/75 958/1873/97 942/1696/97 +f 958/1726/97 959/1874/98 943/1700/98 +f 943/1700/98 959/1875/98 960/1727/99 +f 944/1704/99 960/1876/99 961/1728/100 +f 945/1729/100 961/1877/100 962/1730/101 +f 946/1714/101 962/1878/101 963/1731/102 +f 963/1732/102 964/1879/103 948/1690/103 +f 948/1690/103 964/1880/103 965/1733/69 +f 965/1734/69 966/1881/104 950/1698/104 +f 1017/1735/40 1018/1747/82 1010/1736/82 +f 1015/1738/44 1016/1748/79 1008/1739/79 +f 1013/1741/41 1014/1749/80 1006/1742/80 +f 1011/1744/50 1012/1751/81 1004/1745/81 +f 1018/1747/82 1011/1744/50 1003/1746/50 +f 1016/1748/79 1017/1735/40 1009/1737/40 +f 1014/1749/80 1015/1882/44 1007/1750/44 +f 1012/1751/81 1013/1741/41 1005/1743/41 +f 1072/1752/50 1074/1755/85 1073/1753/85 +f 1074/1755/85 1076/1757/82 1075/1756/82 +f 1076/1757/82 1078/1759/83 1077/1758/83 +f 1078/1759/83 1080/1761/40 1079/1760/40 +f 1080/1761/40 1082/1763/89 1081/1762/89 +f 1082/1763/89 1084/1765/79 1083/1764/79 +f 1084/1765/79 1086/1767/87 1085/1766/87 +f 1086/1767/87 1088/1883/44 1087/1768/44 +f 1088/1769/44 1090/1772/84 1089/1770/84 +f 1090/1772/84 1092/1774/80 1091/1773/80 +f 1092/1774/80 1094/1776/90 1093/1775/90 +f 1094/1776/90 1096/1778/41 1095/1777/41 +f 1096/1778/41 1098/1780/88 1097/1779/88 +f 1098/1780/88 1100/1782/81 1099/1781/81 +f 1100/1782/81 1102/1784/86 1101/1783/86 +f 1102/1784/86 1072/1752/50 1071/1754/50 +f 1104/1785/50 1106/1788/85 1105/1786/85 +f 1106/1788/85 1108/1790/82 1107/1789/82 +f 1108/1790/82 1110/1792/83 1109/1791/83 +f 1110/1792/83 1112/1794/40 1111/1793/40 +f 1112/1794/40 1114/1796/89 1113/1795/89 +f 1114/1796/89 1116/1798/79 1115/1797/79 +f 1116/1798/79 1118/1800/87 1117/1799/87 +f 1118/1800/87 1120/1884/44 1119/1801/44 +f 1120/1802/44 1122/1805/84 1121/1803/84 +f 1122/1805/84 1124/1885/80 1123/1806/80 +f 1123/1806/80 1124/1885/80 1126/1807/90 +f 1126/1807/90 1128/1810/41 1127/1809/41 +f 1128/1810/41 1130/1812/88 1129/1811/88 +f 1130/1812/88 1132/1814/81 1131/1813/81 +f 1132/1814/81 1134/1816/86 1133/1815/86 +f 1134/1816/86 1104/1785/50 1103/1787/50 +f 1143/1817/39 1151/1833/39 1158/1818/52 +f 1149/1820/44 1157/1886/44 1156/1821/105 +f 1147/1823/47 1155/1831/47 1154/1824/59 +f 1145/1826/50 1153/1832/50 1152/1827/48 +f 1150/1819/52 1158/1818/52 1157/1829/44 +f 1148/1822/105 1156/1821/105 1155/1831/47 +f 1146/1825/59 1154/1824/59 1153/1832/50 +f 1144/1828/48 1152/1827/48 1151/1833/39 +f 1250/1834/106 1252/1837/89 1251/1835/89 +f 1252/1837/89 1254/1839/79 1253/1838/79 +f 1254/1839/79 1256/1841/87 1255/1840/87 +f 1256/1841/87 1258/1843/44 1257/1842/44 +f 1258/1843/44 1260/1845/84 1259/1844/84 +f 1260/1845/84 1262/1847/80 1261/1846/80 +f 1262/1847/80 1264/1849/90 1263/1848/90 +f 1264/1849/90 1266/1887/107 1265/1850/107 diff --git a/src/main/resources/assets/hbm/models/weapons/missile_launcher.obj b/src/main/resources/assets/hbm/models/weapons/missile_launcher.obj index b8a259455..8818c225e 100644 --- a/src/main/resources/assets/hbm/models/weapons/missile_launcher.obj +++ b/src/main/resources/assets/hbm/models/weapons/missile_launcher.obj @@ -1,66 +1,6 @@ # Blender v2.79 (sub 0) OBJ File: 'missile_launcher.blend' # www.blender.org -o Cylinder -v -0.250000 1.433012 -1.437500 -v 0.000000 1.500000 6.687500 -v -0.433013 1.250000 -1.437500 -v 0.250000 1.433012 6.687500 -v -0.500000 1.000000 -1.437500 -v 0.433013 1.250000 6.687500 -v -0.433012 0.750000 -1.437500 -v 0.500000 1.000000 6.687500 -v -0.250000 0.566987 -1.437500 -v 0.433013 0.750000 6.687500 -v 0.000000 0.500000 -1.437500 -v 0.250000 0.566987 6.687500 -v 0.250000 0.566987 -1.437500 -v 0.000000 0.500000 6.687500 -v 0.433012 0.750000 -1.437500 -v -0.250000 0.566987 6.687500 -v 0.500000 1.000000 -1.437500 -v -0.433012 0.750000 6.687500 -v 0.433012 1.250000 -1.437500 -v -0.500000 1.000000 6.687500 -v 0.000000 1.500000 -1.437500 -v -0.433013 1.250000 6.687500 -v 0.250000 1.433012 -1.437500 -v -0.250000 1.433012 6.687500 -v 0.000000 1.500000 0.187500 -v 0.250000 1.433012 0.187500 -v 0.433013 1.250000 0.187500 -v 0.500000 1.000000 0.187500 -v 0.433013 0.750000 0.187500 -v 0.250000 0.566987 0.187500 -v 0.000000 0.500000 0.187500 -v -0.250000 0.566987 0.187500 -v -0.433012 0.750000 0.187500 -v -0.500000 1.000000 0.187500 -v -0.433013 1.250000 0.187500 -v -0.250000 1.433012 0.187500 -v 0.218750 1.378886 6.687500 -v 0.000000 1.437500 6.687500 -v 0.378886 1.218750 6.687500 -v 0.437500 1.000000 6.687500 -v 0.378886 0.781250 6.687500 -v 0.218750 0.621114 6.687500 -v 0.000000 0.562500 6.687500 -v -0.218750 0.621114 6.687500 -v -0.378886 0.781250 6.687500 -v -0.437500 1.000000 6.687500 -v -0.378886 1.218750 6.687500 -v -0.218750 1.378886 6.687500 -v 0.218750 1.378889 0.187500 -v 0.000000 1.437503 0.187500 -v 0.378886 1.218753 0.187500 -v 0.437500 1.000003 0.187500 -v 0.378886 0.781253 0.187500 -v 0.218750 0.621117 0.187500 -v 0.000000 0.562503 0.187500 -v -0.218750 0.621117 0.187500 -v -0.378886 0.781253 0.187500 -v -0.437500 1.000003 0.187500 -v -0.378886 1.218753 0.187500 -v -0.218750 1.378889 0.187500 +o Front v 0.000000 1.625000 1.687500 v 0.312500 1.541266 1.687500 v 0.541266 1.312500 1.687500 @@ -137,98 +77,6 @@ v 0.250000 0.566987 6.562500 v 0.000000 0.500000 6.562500 v -0.250000 0.566987 6.562500 v -0.433012 0.750000 6.562500 -v 0.000000 1.500000 -6.687500 -v 0.250000 1.433012 -6.687500 -v 0.433012 1.250000 -6.687500 -v 0.500000 1.000000 -6.687500 -v 0.433012 0.750000 -6.687500 -v 0.250000 0.566987 -6.687500 -v 0.000000 0.500000 -6.687500 -v -0.250000 0.566987 -6.687500 -v -0.433012 0.750000 -6.687500 -v -0.500000 1.000000 -6.687500 -v -0.433013 1.250000 -6.687500 -v -0.250000 1.433012 -6.687500 -v 0.218750 1.378889 -6.687500 -v 0.000000 1.437503 -6.687500 -v 0.378886 1.218753 -6.687500 -v 0.437500 1.000003 -6.687500 -v 0.378886 0.781253 -6.687500 -v 0.218750 0.621117 -6.687500 -v 0.000000 0.562503 -6.687500 -v -0.218750 0.621117 -6.687500 -v -0.378886 0.781253 -6.687500 -v -0.437500 1.000003 -6.687500 -v -0.378886 1.218753 -6.687500 -v -0.218750 1.378889 -6.687500 -v 0.218750 1.378889 -1.437500 -v 0.000000 1.437503 -1.437500 -v 0.378886 1.218753 -1.437500 -v 0.437500 1.000003 -1.437500 -v 0.378886 0.781253 -1.437500 -v 0.218750 0.621117 -1.437500 -v 0.000000 0.562503 -1.437500 -v -0.218750 0.621117 -1.437500 -v -0.378886 0.781253 -1.437500 -v -0.437500 1.000003 -1.437500 -v -0.378886 1.218753 -1.437500 -v -0.218750 1.378889 -1.437500 -v 0.000000 1.625000 1.687500 -v 0.312500 1.541266 1.687500 -v 0.541266 1.312500 1.687500 -v 0.625000 0.999999 1.687500 -v -0.625000 0.999999 1.687500 -v -0.541266 1.312500 1.687500 -v -0.312500 1.541266 1.687500 -v -0.250000 1.433012 1.687500 -v -0.433013 1.250000 1.687500 -v 0.000000 1.625000 0.687500 -v 0.312500 1.541266 0.687500 -v 0.541266 1.312500 0.687500 -v 0.625000 0.999999 0.687500 -v -0.625000 0.999999 0.687500 -v -0.541266 1.312500 0.687500 -v -0.312500 1.541266 0.687500 -v 0.000000 1.625000 -1.437500 -v 0.312500 1.541266 -1.437500 -v 0.541266 1.312500 -1.437500 -v 0.625000 0.999999 -1.437500 -v -0.625000 0.999999 -1.437500 -v -0.541266 1.312500 -1.437500 -v -0.312500 1.541266 -1.437500 -v 0.000000 1.625000 -1.937500 -v 0.312500 1.541266 -1.937500 -v 0.541266 1.312500 -1.937500 -v 0.625000 0.999999 -1.937500 -v -0.625000 0.999999 -1.937500 -v -0.541266 1.312500 -1.937500 -v -0.312500 1.541266 -1.937500 -v 0.541266 0.687500 -1.437500 -v 0.312500 0.458734 -1.437500 -v 0.000000 0.375000 -1.437500 -v -0.312500 0.458734 -1.437500 -v -0.541265 0.687499 -1.437500 -v 0.541266 0.687500 -5.687500 -v 0.312500 0.458734 -5.687500 -v 0.000000 0.375000 -5.687500 -v -0.312500 0.458734 -5.687500 -v -0.541265 0.687499 -5.687500 -v 0.433012 0.750000 -5.687500 -v 0.250000 0.566987 -5.687500 -v 0.000000 0.500000 -5.687500 -v -0.250000 0.566987 -5.687500 -v -0.433012 0.750000 -5.687500 -v 0.625000 0.999999 -5.687500 -v -0.625000 0.999999 -5.687500 -v 0.500000 1.000000 -5.687500 -v -0.500000 1.000000 -5.687500 -v -0.250000 1.433012 -1.937500 -v -0.433013 1.250000 -1.937500 -v -0.500000 1.000000 -1.937500 -v 0.500000 1.000000 -1.937500 -v 0.433012 1.250000 -1.937500 -v 0.000000 1.500000 -1.937500 -v 0.250000 1.433012 -1.937500 v 0.625000 1.000000 1.687500 v 0.750000 1.000000 1.687500 v 0.625000 1.000000 6.437500 @@ -237,7 +85,6 @@ v 0.500000 0.750000 1.812500 v 0.750000 0.750000 1.812500 v 0.500000 0.750000 6.437500 v 0.750000 0.250000 1.687500 -v 0.750000 0.250000 1.687500 v 0.750000 0.250000 3.125000 v 0.500000 0.437500 3.125000 v 0.750000 0.437500 3.125000 @@ -259,7 +106,6 @@ v -0.750000 1.000000 6.437500 v -0.500000 0.750000 1.812500 v -0.750000 0.750000 1.812500 v -0.500000 0.750000 6.437500 -v 0.750000 1.000000 1.687500 v -0.750000 0.250000 1.687500 v -0.750000 0.250000 3.125000 v -0.500000 0.437500 3.125000 @@ -318,91 +164,6 @@ v -0.410136 1.164623 5.500000 v -0.347636 1.272877 5.500000 v -0.410136 1.164623 6.500000 v -0.347636 1.272877 6.500000 -v -0.750000 1.000000 1.687500 -v -0.750000 0.250000 1.687500 -v -0.500000 1.000000 1.687500 -v -0.433012 0.750000 1.687500 -v -0.250000 0.566987 1.687500 -v 0.000000 0.500000 1.687500 -v 0.250000 0.566987 1.687500 -v 0.433013 0.750000 1.687500 -v 0.500000 1.000000 1.687500 -v 0.433013 1.250000 1.687500 -v 0.250000 1.433012 1.687500 -v 0.000000 1.500000 1.687500 -v 0.750000 0.250000 0.687500 -v -0.750000 0.250000 0.687500 -v 0.750000 0.750000 1.562500 -v -0.750000 0.750000 1.562500 -v 0.750000 0.750000 0.687500 -v -0.750000 0.750000 0.687500 -v 0.750000 1.000000 0.687500 -v -0.750000 1.000000 0.687500 -v 0.625000 1.000000 1.687500 -v 0.541266 0.687500 1.687500 -v 0.312500 0.458734 1.687500 -v -0.625000 1.000000 1.687500 -v -0.541265 0.687500 1.687500 -v -0.312500 0.458734 1.687500 -v 0.000000 0.375000 1.687500 -v 0.541266 0.687500 1.687500 -v 0.312500 0.458734 1.687500 -v -0.541265 0.687500 1.687500 -v -0.312500 0.458734 1.687500 -v 0.000000 0.375000 1.687500 -v 0.541266 0.687500 0.687500 -v 0.312500 0.458734 0.687500 -v -0.541265 0.687500 0.687500 -v -0.312500 0.458734 0.687500 -v 0.000000 0.375000 0.687500 -v -0.750000 0.437500 0.687500 -v 0.750000 0.437500 0.687500 -v 0.500000 0.750000 1.562500 -v -0.500000 0.750000 1.562500 -v 0.500000 0.750000 0.687500 -v 0.625000 1.000000 0.687500 -v -0.625000 0.999999 0.687500 -v -0.500000 0.750000 0.687500 -v 0.750000 0.125000 0.687500 -v -0.750000 0.125000 0.687500 -v -0.875000 0.250000 1.437500 -v 0.875000 0.249999 1.437500 -v -0.875000 0.125000 1.470994 -v 0.875000 0.124999 1.470994 -v -0.875000 0.033493 1.562500 -v 0.875000 0.033493 1.562500 -v -0.875000 -0.000000 1.687500 -v 0.875000 -0.000000 1.687500 -v -0.875000 0.033493 1.812500 -v 0.875000 0.033493 1.812500 -v -0.875000 0.125000 1.904006 -v 0.875000 0.124999 1.904006 -v -0.875000 0.250000 1.937500 -v 0.875000 0.249999 1.937500 -v -0.875000 0.375000 1.904006 -v 0.875000 0.374999 1.904006 -v -0.875000 0.466506 1.812500 -v 0.875000 0.466506 1.812500 -v -0.875000 0.500000 1.687500 -v 0.875000 0.499999 1.687500 -v -0.875000 0.466506 1.562500 -v 0.875000 0.466506 1.562500 -v -0.875000 0.375000 1.470994 -v 0.875000 0.375000 1.470994 -v -0.750000 0.125000 -1.437500 -v 0.750000 0.125000 -1.437500 -v 0.750000 1.750000 0.687500 -v -0.750000 1.750000 0.687500 -v -0.750000 1.750000 -1.437500 -v 0.750000 1.750000 -1.437500 -v -0.875000 1.750000 0.812500 -v 0.875000 1.750000 0.812500 -v -0.875000 1.750000 -1.562500 -v 0.875000 1.750000 -1.562500 -v -0.875000 2.500000 -1.562500 -v -0.875000 2.500000 0.812500 -v 0.875000 2.500000 0.812500 -v 0.875000 2.500000 -1.562500 v -0.750000 0.250000 5.687500 v 0.750000 0.250000 5.687500 v 0.750000 0.250000 6.437500 @@ -427,138 +188,6 @@ v -0.250000 0.500000 5.250000 v 0.250000 0.500000 5.250000 v -0.250000 0.500000 3.000000 v 0.250000 0.500000 3.000000 -v 0.000000 1.875000 -6.337500 -v 0.437500 1.757772 -6.337500 -v 0.757772 1.437500 -6.337500 -v 0.875000 0.999999 -6.337500 -v 0.757772 0.562500 -6.337500 -v 0.437500 0.242228 -6.337500 -v 0.000000 0.125000 -6.337500 -v -0.437500 0.242228 -6.337500 -v -0.757772 0.562499 -6.337500 -v -0.875000 0.999999 -6.337500 -v -0.757772 1.437499 -6.337500 -v -0.437500 1.757772 -6.337500 -v 0.000000 1.500000 -6.687500 -v 0.250000 1.433012 -6.687500 -v 0.433013 1.250000 -6.687500 -v 0.500000 1.000000 -6.687500 -v 0.433013 0.750000 -6.687500 -v 0.250000 0.566987 -6.687500 -v 0.000000 0.500000 -6.687500 -v -0.250000 0.566987 -6.687500 -v -0.433012 0.750000 -6.687500 -v -0.500000 1.000000 -6.687500 -v -0.433013 1.250000 -6.687500 -v -0.250000 1.433012 -6.687500 -v 0.000000 1.500000 -5.687500 -v 0.250000 1.433012 -5.687500 -v 0.433013 1.250000 -5.687500 -v 0.500000 1.000000 -5.687500 -v 0.433013 0.750000 -5.687500 -v 0.250000 0.566987 -5.687500 -v 0.000000 0.500000 -5.687500 -v -0.250000 0.566987 -5.687500 -v -0.433012 0.750000 -5.687500 -v -0.500000 1.000000 -5.687500 -v -0.433013 1.250000 -5.687500 -v -0.250000 1.433012 -5.687500 -v 0.062500 1.687500 -6.062500 -v -0.062500 1.687500 -6.062500 -v 0.062500 1.687500 -5.562500 -v -0.062500 1.687500 -5.562500 -v 0.062500 1.437500 -5.062500 -v -0.062500 1.437500 -5.062500 -v 0.062500 1.437500 -6.062500 -v -0.062500 1.437500 -6.062500 -v -0.564143 1.397877 -6.062500 -v -0.626643 1.289623 -6.062500 -v -0.564143 1.397877 -5.562500 -v -0.626643 1.289623 -5.562500 -v -0.347636 1.272877 -5.062500 -v -0.410136 1.164623 -5.062500 -v -0.347636 1.272877 -6.062500 -v -0.410136 1.164623 -6.062500 -v -0.289623 1.626642 -6.062500 -v -0.397877 1.564142 -6.062500 -v -0.289623 1.626642 -5.562500 -v -0.397877 1.564142 -5.562500 -v -0.164623 1.410136 -5.062500 -v -0.272877 1.347636 -5.062500 -v -0.164623 1.410136 -6.062500 -v -0.272877 1.347636 -6.062500 -v 0.397877 1.564142 -6.062500 -v 0.289623 1.626642 -6.062500 -v 0.397877 1.564142 -5.562500 -v 0.289623 1.626642 -5.562500 -v 0.272877 1.347636 -5.062500 -v 0.164624 1.410136 -5.062500 -v 0.272877 1.347636 -6.062500 -v 0.164623 1.410136 -6.062500 -v 0.626643 1.289623 -6.062500 -v 0.564143 1.397877 -6.062500 -v 0.626643 1.289623 -5.562500 -v 0.564143 1.397877 -5.562500 -v 0.410136 1.164623 -5.062500 -v 0.347636 1.272877 -5.062500 -v 0.410136 1.164623 -6.062500 -v 0.347636 1.272877 -6.062500 -v 0.000000 1.312500 1.687500 -v -0.156250 1.270633 1.687500 -v -0.270633 1.156250 1.687500 -v -0.312500 1.000000 1.687500 -v -0.270633 0.843750 1.687500 -v -0.156250 0.729367 1.687500 -v 0.000000 0.687500 1.687500 -v 0.156250 0.729367 1.687500 -v 0.270633 0.843750 1.687500 -v 0.312500 1.000000 1.687500 -v 0.270633 1.156250 1.687500 -v 0.156250 1.270633 1.687500 -v 0.000000 1.312500 6.437500 -v -0.156250 1.270633 6.437500 -v -0.270633 1.156250 6.437500 -v -0.312500 1.000000 6.437500 -v -0.270633 0.843750 6.437500 -v -0.156250 0.729367 6.437500 -v 0.000000 0.687500 6.437500 -v 0.156250 0.729367 6.437500 -v 0.270633 0.843750 6.437500 -v 0.312500 1.000000 6.437500 -v 0.270633 1.156250 6.437500 -v 0.156250 1.270633 6.437500 -v 0.000000 1.273438 7.062500 -v -0.136719 1.236804 7.062500 -v -0.236804 1.136719 7.062500 -v -0.273438 1.000000 7.062500 -v -0.236804 0.863281 7.062500 -v -0.136719 0.763196 7.062500 -v 0.000000 0.726562 7.062500 -v 0.136719 0.763196 7.062500 -v 0.236804 0.863281 7.062500 -v 0.273438 1.000000 7.062500 -v 0.236804 1.136718 7.062500 -v 0.136719 1.236804 7.062500 -v 0.000000 1.000000 7.687499 -v 0.245813 1.363261 1.812500 -v 0.206190 1.169631 1.687500 -v 0.245813 1.363261 3.562500 -v 0.206190 1.169631 3.687500 -v 0.191687 1.394511 1.812500 -v 0.043810 1.263381 1.687500 -v 0.191687 1.394511 3.562500 -v 0.043810 1.263381 3.687500 -v -0.750000 0.750000 -1.437500 -v -0.750000 1.000000 -1.437500 -v 0.750000 0.750000 -5.562500 -v -0.750000 0.750000 -5.562500 -v 0.750000 1.000000 -5.562500 -v -0.750000 1.000000 -5.562500 -v -0.625000 1.000000 -1.437500 -v -0.500000 0.750000 -5.562500 -v -0.625000 1.000000 -5.562500 -v 0.625000 1.000000 -5.562500 -v 0.500000 0.750000 -5.562500 v 0.408494 0.625000 4.187500 v 0.375000 0.499999 4.187500 v 0.408494 0.374999 4.187500 @@ -715,6 +344,2024 @@ v 0.406250 1.187499 5.187500 v 0.406250 1.231693 5.169194 v 0.406250 1.249999 5.125000 v 0.406250 1.231693 5.080806 +vt 0.185520 0.419753 +vt 0.180995 0.388889 +vt 0.185520 0.388889 +vt 0.180995 0.450617 +vt 0.185520 0.450617 +vt 0.185520 0.481481 +vt 0.180995 0.481481 +vt 0.185520 0.512346 +vt 0.180995 0.512346 +vt 0.185520 0.543210 +vt 0.180995 0.543210 +vt 0.180995 0.574074 +vt 0.185520 0.574074 +vt 0.158371 0.419753 +vt 0.162896 0.388889 +vt 0.162896 0.419753 +vt 0.162896 0.450617 +vt 0.158371 0.481481 +vt 0.162896 0.481481 +vt 0.158371 0.512346 +vt 0.162896 0.512346 +vt 0.158371 0.543210 +vt 0.162896 0.543210 +vt 0.162896 0.574074 +vt 0.158371 0.574074 +vt 0.009050 0.450617 +vt 0.013575 0.419753 +vt 0.013575 0.450617 +vt 0.009050 0.388889 +vt 0.013575 0.388889 +vt 0.013575 0.481481 +vt 0.009050 0.481481 +vt 0.013575 0.512346 +vt 0.013575 0.543210 +vt 0.009050 0.512346 +vt 0.009050 0.574074 +vt 0.013575 0.574074 +vt 0.004525 0.450617 +vt -0.000000 0.419753 +vt 0.004525 0.419753 +vt 0.004525 0.388889 +vt 0.000000 0.481481 +vt 0.004525 0.481481 +vt -0.000000 0.512346 +vt 0.004525 0.512346 +vt 0.000000 0.543210 +vt 0.004525 0.543210 +vt 0.004525 0.574074 +vt 0.000000 0.574074 +vt 0.162896 0.586420 +vt 0.162896 0.376543 +vt 0.185520 0.635802 +vt 0.180995 0.604938 +vt 0.185520 0.604938 +vt 0.180995 0.666667 +vt 0.185520 0.666667 +vt 0.185520 0.327161 +vt 0.180995 0.296296 +vt 0.185520 0.296296 +vt 0.180995 0.358025 +vt 0.180995 0.327161 +vt 0.185520 0.358025 +vt 0.004525 0.358025 +vt -0.000000 0.327161 +vt 0.004525 0.327161 +vt 0.004525 0.296296 +vt 0.004525 0.666667 +vt -0.000000 0.635802 +vt 0.004525 0.635802 +vt 0.004525 0.604938 +vt -0.000000 0.604938 +vt 0.000000 0.358025 +vt 0.000000 0.388889 +vt 0.212670 0.617284 +vt 0.384615 0.604938 +vt 0.384615 0.617284 +vt 0.296380 0.358025 +vt 0.248869 0.388889 +vt 0.248869 0.358025 +vt 0.248869 0.413580 +vt 0.296380 0.388889 +vt 0.296380 0.413580 +vt 0.384615 0.382716 +vt 0.389140 0.456790 +vt 0.384615 0.530864 +vt 0.332579 0.382716 +vt 0.332579 0.530864 +vt 0.248869 0.333333 +vt 0.305430 0.358025 +vt 0.305430 0.388889 +vt 0.380091 0.580247 +vt 0.380091 0.549383 +vt 0.239819 0.388889 +vt 0.106335 0.512346 +vt 0.124434 0.537037 +vt 0.106335 0.537037 +vt 0.124434 0.388889 +vt 0.128959 0.537037 +vt 0.138009 0.388889 +vt 0.142534 0.537037 +vt 0.138009 0.537037 +vt 0.314480 0.530864 +vt 0.319005 0.518519 +vt 0.332579 0.549383 +vt 0.128959 0.388889 +vt 0.212670 0.530864 +vt 0.239819 0.580247 +vt 0.212670 0.604938 +vt 0.040724 0.450617 +vt 0.031674 0.438272 +vt 0.040724 0.438272 +vt 0.384615 0.308642 +vt 0.212670 0.296296 +vt 0.384615 0.296296 +vt 0.296380 0.388889 +vt 0.248869 0.358025 +vt 0.296380 0.358025 +vt 0.248869 0.388889 +vt 0.296380 0.413580 +vt 0.248869 0.413580 +vt 0.296380 0.333333 +vt 0.239819 0.358025 +vt 0.239819 0.388889 +vt 0.380091 0.333333 +vt 0.380091 0.364198 +vt 0.305430 0.388889 +vt 0.319005 0.395062 +vt 0.314480 0.382716 +vt 0.332579 0.364198 +vt 0.239819 0.382716 +vt 0.212670 0.382716 +vt 0.058824 0.450617 +vt 0.411765 0.530864 +vt 0.400452 0.512346 +vt 0.058824 0.438272 +vt 0.076923 0.450617 +vt 0.400452 0.401235 +vt 0.411765 0.382716 +vt 0.040724 0.475309 +vt 0.040724 0.413580 +vt 0.040724 0.450617 +vt 0.031674 0.438272 +vt 0.040724 0.438272 +vt 0.058824 0.450617 +vt 0.058824 0.438272 +vt 0.076923 0.450617 +vt 0.040724 0.475309 +vt 0.040724 0.413580 +vt 0.040724 0.450617 +vt 0.031674 0.438272 +vt 0.040724 0.438272 +vt 0.058824 0.450617 +vt 0.058824 0.438272 +vt 0.076923 0.450617 +vt 0.040724 0.475309 +vt 0.040724 0.413580 +vt 0.040724 0.438272 +vt 0.031674 0.450617 +vt 0.031674 0.438272 +vt 0.058824 0.450617 +vt 0.040724 0.450617 +vt 0.058824 0.438272 +vt 0.076923 0.450617 +vt 0.040724 0.475309 +vt 0.040724 0.413580 +vt 0.040724 0.450617 +vt 0.031674 0.438272 +vt 0.040724 0.438272 +vt 0.058824 0.450617 +vt 0.076923 0.438272 +vt 0.076923 0.450617 +vt 0.040724 0.475309 +vt 0.040724 0.413580 +vt 0.058824 0.438272 +vt 0.203620 0.481481 +vt 0.203620 0.432099 +vt 0.031674 0.537037 +vt 0.031674 0.512346 +vt 0.031674 0.388889 +vt 0.106335 0.413580 +vt 0.031674 0.413580 +vt 0.194570 0.506173 +vt 0.185520 0.530864 +vt 0.185520 0.382716 +vt 0.194570 0.407407 +vt 0.314480 0.580247 +vt 0.332579 0.580247 +vt 0.332579 0.333333 +vt 0.314480 0.333333 +vt 0.013575 0.388889 +vt 0.108597 0.740741 +vt 0.027149 0.790123 +vt 0.027149 0.740741 +vt 0.108597 0.864198 +vt 0.108597 0.790123 +vt 0.027149 0.666667 +vt 0.126697 0.740741 +vt 0.009050 0.740741 +vt 0.678895 0.588520 +vt 0.674532 0.567901 +vt 0.687621 0.547283 +vt 0.687621 0.596665 +vt 0.687621 0.637903 +vt 0.674532 0.617284 +vt 0.934389 0.623457 +vt 0.843891 0.629630 +vt 0.843891 0.623457 +vt 0.843891 0.549383 +vt 0.934389 0.543210 +vt 0.934389 0.549383 +vt 0.843891 0.567901 +vt 0.841629 0.549383 +vt 0.841629 0.586420 +vt 0.841629 0.567901 +vt 0.843891 0.586420 +vt 0.841629 0.604938 +vt 0.843891 0.604938 +vt 0.936652 0.604938 +vt 0.934389 0.604938 +vt 0.936652 0.586420 +vt 0.934389 0.586420 +vt 0.936652 0.567901 +vt 0.934389 0.567901 +vt 0.936652 0.549383 +vt 0.846154 0.629542 +vt 0.849376 0.633184 +vt 0.842932 0.650765 +vt 0.013575 0.537037 +vt 0.022624 0.438272 +vt 0.106335 0.388889 +vt 0.239819 0.333333 +vt 0.212670 0.308642 +vt 0.115385 0.487654 +vt 0.180995 0.419753 +vt 0.158371 0.388889 +vt 0.158371 0.450617 +vt 0.009050 0.419753 +vt 0.009050 0.543210 +vt 0.000000 0.450617 +vt 0.009050 0.586420 +vt 0.009050 0.376543 +vt 0.180995 0.635802 +vt -0.000000 0.296296 +vt 0.000000 0.666667 +vt 0.391403 0.425926 +vt 0.391403 0.487654 +vt 0.296380 0.333333 +vt 0.239819 0.358025 +vt 0.142534 0.388889 +vt 0.328054 0.518519 +vt 0.239819 0.530864 +vt 0.031674 0.450617 +vt 0.248869 0.333333 +vt 0.305430 0.358025 +vt 0.328054 0.395062 +vt 0.411765 0.518519 +vt 0.076923 0.438272 +vt 0.411765 0.395062 +vt 0.076923 0.475309 +vt 0.076923 0.413580 +vt 0.031674 0.450617 +vt 0.076923 0.438272 +vt 0.076923 0.475309 +vt 0.076923 0.413580 +vt 0.031674 0.450617 +vt 0.076923 0.438272 +vt 0.076923 0.475309 +vt 0.076923 0.413580 +vt 0.076923 0.438272 +vt 0.076923 0.475309 +vt 0.076923 0.413580 +vt 0.031674 0.450617 +vt 0.076923 0.475309 +vt 0.076923 0.413580 +vt 0.185520 0.518519 +vt 0.185520 0.395062 +vt 0.027149 0.864198 +vt 0.108597 0.666667 +vt 0.126697 0.790123 +vt 0.135747 0.814815 +vt 0.135747 0.716049 +vt 0.000000 0.814815 +vt 0.009050 0.790123 +vt 0.000000 0.716049 +vt 0.690815 0.555997 +vt 0.691984 0.567902 +vt 0.690815 0.579806 +vt 0.687621 0.588520 +vt 0.683258 0.591710 +vt 0.675701 0.579806 +vt 0.675701 0.555997 +vt 0.678895 0.547283 +vt 0.683258 0.544093 +vt 0.675701 0.605380 +vt 0.678895 0.596665 +vt 0.683258 0.593476 +vt 0.690815 0.605380 +vt 0.691984 0.617284 +vt 0.690815 0.629188 +vt 0.683258 0.641092 +vt 0.678895 0.637903 +vt 0.675701 0.629188 +vt 0.934389 0.629630 +vt 0.843891 0.543210 +vt 0.841629 0.623457 +vt 0.936652 0.623457 +vt 0.850710 0.641974 +vt 0.849376 0.650765 +vt 0.846154 0.654407 +vt 0.841597 0.641974 +vt 0.842932 0.633184 +vt 0.022624 0.487654 +vt 0.115385 0.438272 +vt 0.746606 0.592593 +vt 0.692308 0.580247 +vt 0.746606 0.580247 +vt 0.746606 0.555556 +vt 0.692308 0.543210 +vt 0.746606 0.543210 +vt 0.746606 0.641975 +vt 0.692308 0.629630 +vt 0.746606 0.629630 +vt 0.746606 0.666667 +vt 0.692308 0.654321 +vt 0.746606 0.654321 +vt 0.746606 0.604938 +vt 0.692308 0.592593 +vt 0.746606 0.567901 +vt 0.692308 0.555556 +vt 0.692308 0.641975 +vt 0.746606 0.679012 +vt 0.692308 0.666667 +vt 0.746606 0.617284 +vt 0.692308 0.604938 +vt 0.692308 0.567901 +vt 0.746606 0.691358 +vt 0.692308 0.679012 +vt 0.692308 0.617284 +vt 0.692308 0.648148 +vt 0.671946 0.654321 +vt 0.671946 0.648148 +vt 0.692308 0.691358 +vt 0.671946 0.697531 +vt 0.671946 0.691358 +vt 0.692308 0.703704 +vt 0.671946 0.709877 +vt 0.671946 0.703704 +vt 0.692308 0.672840 +vt 0.671946 0.679012 +vt 0.671946 0.672840 +vt 0.692308 0.654321 +vt 0.671946 0.660494 +vt 0.692308 0.709877 +vt 0.671946 0.716049 +vt 0.692308 0.679012 +vt 0.671946 0.685185 +vt 0.692308 0.660494 +vt 0.671946 0.666667 +vt 0.692308 0.641975 +vt 0.671946 0.641975 +vt 0.692308 0.685185 +vt 0.692308 0.697531 +vt 0.692308 0.666667 +vt 0.886878 0.672840 +vt 0.923077 0.666667 +vt 0.923077 0.672840 +vt 0.843891 0.567901 +vt 0.934389 0.586420 +vt 0.934389 0.567901 +vt 0.843891 0.604938 +vt 0.934389 0.623457 +vt 0.934389 0.604938 +vt 0.843891 0.549383 +vt 0.934389 0.549383 +vt 0.850679 0.666667 +vt 0.886878 0.666667 +vt 0.886878 0.641975 +vt 0.850655 0.648888 +vt 0.850679 0.641975 +vt 0.886878 0.629630 +vt 0.850679 0.635802 +vt 0.850679 0.629630 +vt 0.850679 0.660494 +vt 0.886878 0.660494 +vt 0.886878 0.679012 +vt 0.850679 0.672840 +vt 0.886878 0.648148 +vt 0.850679 0.654321 +vt 0.886878 0.635802 +vt 0.886878 0.654321 +vt 0.923077 0.648148 +vt 0.923077 0.635802 +vt 0.923077 0.660494 +vt 0.923077 0.679012 +vt 0.923077 0.654321 +vt 0.923077 0.641975 +vt 0.954751 0.604938 +vt 0.952489 0.623457 +vt 0.952489 0.598765 +vt 0.947964 0.592593 +vt 0.945701 0.629630 +vt 0.945701 0.592593 +vt 0.943439 0.592593 +vt 0.941176 0.623457 +vt 0.941176 0.598765 +vt 0.938914 0.598765 +vt 0.936652 0.617284 +vt 0.936652 0.604938 +vt 0.950226 0.598765 +vt 0.950226 0.623457 +vt 0.947964 0.629630 +vt 0.943439 0.629630 +vt 0.938914 0.623457 +vt 0.952489 0.592593 +vt 0.954751 0.543210 +vt 0.954751 0.592593 +vt 0.947964 0.543210 +vt 0.941176 0.592593 +vt 0.943439 0.543210 +vt 0.936652 0.592593 +vt 0.938914 0.543210 +vt 0.938914 0.592593 +vt 0.950226 0.592593 +vt 0.952489 0.543210 +vt 0.950226 0.543210 +vt 0.945701 0.543210 +vt 0.941176 0.543210 +vt 0.941176 0.648148 +vt 0.941176 0.629630 +vt 0.938914 0.629630 +vt 0.936652 0.648148 +vt 0.936652 0.629630 +vt 0.952489 0.629630 +vt 0.950226 0.648148 +vt 0.950226 0.629630 +vt 0.947964 0.648148 +vt 0.943439 0.648148 +vt 0.938914 0.648148 +vt 0.954751 0.629630 +vt 0.952489 0.648148 +vt 0.945701 0.648148 +vt 0.952489 0.598765 +vt 0.954751 0.617284 +vt 0.952489 0.623457 +vt 0.945701 0.592593 +vt 0.947964 0.629630 +vt 0.945701 0.629630 +vt 0.943439 0.592593 +vt 0.941176 0.623457 +vt 0.941176 0.598765 +vt 0.936652 0.604938 +vt 0.938914 0.623457 +vt 0.936652 0.617284 +vt 0.950226 0.598765 +vt 0.950226 0.623457 +vt 0.947964 0.592593 +vt 0.943439 0.629630 +vt 0.938914 0.598765 +vt 0.952489 0.592593 +vt 0.954751 0.543210 +vt 0.954751 0.592593 +vt 0.947964 0.543210 +vt 0.941176 0.592593 +vt 0.943439 0.543210 +vt 0.936652 0.592593 +vt 0.938914 0.543210 +vt 0.938914 0.592593 +vt 0.950226 0.592593 +vt 0.952489 0.543210 +vt 0.950226 0.543210 +vt 0.945701 0.543210 +vt 0.941176 0.543210 +vt 0.941176 0.648148 +vt 0.941176 0.629630 +vt 0.938914 0.629630 +vt 0.936652 0.648148 +vt 0.936652 0.629630 +vt 0.952489 0.629630 +vt 0.950226 0.648148 +vt 0.950226 0.629630 +vt 0.947964 0.648148 +vt 0.943439 0.648148 +vt 0.938914 0.648148 +vt 0.954751 0.629630 +vt 0.952489 0.648148 +vt 0.945701 0.648148 +vt 0.692308 0.691358 +vt 0.692308 0.716049 +vt 0.843891 0.586420 +vt 0.843891 0.623457 +vt 0.850679 0.679012 +vt 0.923077 0.629630 +vt 0.954751 0.617284 +vt 0.936652 0.543210 +vt 0.954751 0.648148 +vt 0.954751 0.604938 +vt 0.936652 0.543210 +vt 0.954751 0.648148 +vn -0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn -0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.7071 -0.7071 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.8944 -0.4472 +vn 0.8660 0.5000 0.0000 +vn 0.7746 0.4472 -0.4472 +vn -0.5000 0.8660 0.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.4472 0.7746 -0.4472 +vn -0.8660 0.5000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.4472 0.7746 -0.4472 +vn -0.8660 -0.5000 0.0000 +vn -0.7746 0.4472 -0.4472 +vn -0.5000 -0.8660 0.0000 +vn 0.9487 -0.3162 0.0000 +vn -0.9487 -0.3162 0.0000 +vn -0.9960 -0.0890 0.0000 +vn 0.9960 -0.0890 0.0000 +vn -0.5079 -0.5470 0.6654 +vn -0.5119 -0.8570 0.0595 +vn -0.4901 -0.4877 0.7224 +vn 0.3536 0.6124 0.7071 +vn 0.4619 0.8001 0.3827 +vn -0.3536 -0.6124 0.7071 +vn -0.4619 -0.8001 0.3827 +vn 0.3536 0.6124 -0.7071 +vn -0.3536 -0.6124 -0.7071 +vn -0.4619 -0.8001 -0.3827 +vn 0.4619 0.8001 -0.3827 +vn -0.2198 -0.7134 0.6654 +vn -0.4862 -0.8718 0.0595 +vn -0.5119 -0.8570 -0.0595 +vn 0.4862 0.8718 -0.0595 +vn 0.2198 0.7134 -0.6654 +vn 0.5119 0.8570 0.0595 +vn 0.2100 -0.1213 0.9701 +vn 0.4901 0.4877 0.7224 +vn -0.5079 -0.5470 -0.6654 +vn -0.4901 -0.4877 -0.7224 +vn -0.1773 -0.6683 0.7224 +vn 0.1773 0.6683 -0.7224 +vn -0.2100 0.1213 -0.9701 +vn 0.5079 0.5470 0.6654 +vn 0.5119 0.8570 -0.0595 +vn 0.5079 0.5470 -0.6654 +vn 0.4901 0.4878 -0.7224 +vn -0.2100 0.1213 0.9701 +vn 0.1773 0.6683 0.7224 +vn 0.2198 0.7134 0.6654 +vn -0.4862 -0.8718 -0.0595 +vn -0.2198 -0.7134 -0.6654 +vn 0.2100 -0.1213 -0.9701 +vn 0.4862 0.8718 0.0595 +vn -0.1773 -0.6684 -0.7224 +vn -0.9074 -0.4202 0.0000 +vn -0.2820 -0.6233 -0.7294 +vn -0.6233 -0.2820 -0.7294 +vn 0.7023 0.3032 -0.6441 +vn 0.3532 0.9356 0.0000 +vn 0.9356 0.3532 -0.0000 +vn 0.7023 0.3032 0.6441 +vn 0.0899 0.0899 0.9919 +vn -0.6233 -0.2820 0.7294 +vn -0.4202 -0.9074 -0.0000 +vn 0.0899 0.0899 -0.9919 +vn 0.3032 0.7023 -0.6441 +vn 0.3032 0.7023 0.6441 +vn -0.2820 -0.6233 0.7294 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +s off +f 19/1/1 4/2/1 18/3/1 +f 2/4/1 19/1/1 20/5/1 +f 2/4/1 21/6/1 1/7/1 +f 1/7/1 8/8/1 12/9/1 +f 12/9/1 9/10/1 11/11/1 +f 10/12/1 9/10/1 17/13/1 +f 26/14/2 16/15/2 15/16/2 +f 14/17/2 26/14/2 15/16/2 +f 28/18/2 14/17/2 13/19/2 +f 7/20/2 13/19/2 24/21/2 +f 6/22/2 24/21/2 23/23/2 +f 6/22/2 22/24/2 5/25/2 +f 33/26/1 40/27/1 41/28/1 +f 40/27/1 35/29/1 39/30/1 +f 33/26/1 42/31/1 29/32/1 +f 30/33/1 29/32/1 42/31/1 +f 31/34/1 38/35/1 30/33/1 +f 36/36/1 31/34/1 32/37/1 +f 44/38/2 51/39/2 43/40/2 +f 51/39/2 52/41/2 43/40/2 +f 46/42/2 44/38/2 45/43/2 +f 47/44/2 45/43/2 55/45/2 +f 48/46/2 55/45/2 53/47/2 +f 48/46/2 54/48/2 49/49/2 +f 36/36/3 5/50/3 22/24/3 +f 25/51/3 35/29/3 16/15/3 +f 58/52/1 63/53/1 57/54/1 +f 61/55/1 58/52/1 64/56/1 +f 65/57/1 61/58/1 64/59/1 +f 65/57/1 59/60/1 60/61/1 +f 4/2/1 66/62/1 18/3/1 +f 17/13/1 63/53/1 10/12/1 +f 67/63/2 73/64/2 68/65/2 +f 73/64/2 69/66/2 68/65/2 +f 69/67/2 75/68/2 70/69/2 +f 75/68/2 71/70/2 70/69/2 +f 49/49/2 71/70/2 76/71/2 +f 72/72/2 52/41/2 50/73/2 +f 79/74/3 78/75/3 77/76/3 +f 88/77/4 90/78/4 86/79/4 +f 91/80/5 81/81/5 82/82/5 +f 106/83/1 121/84/1 84/85/1 +f 107/86/5 84/85/5 85/87/5 +f 87/88/3 88/77/3 86/79/3 +f 81/81/2 89/89/2 82/90/2 +f 82/91/4 84/85/4 78/75/4 +f 89/92/4 85/87/4 84/85/4 +f 91/93/1 86/79/1 90/78/1 +f 92/94/2 94/95/2 93/96/2 +f 116/97/6 96/98/6 94/95/6 +f 117/99/7 85/100/7 95/101/7 +f 94/102/4 96/103/4 87/104/4 +f 118/105/5 95/101/5 96/98/5 +f 166/106/4 168/107/4 80/108/4 +f 124/109/2 131/110/2 125/111/2 +f 100/112/3 101/113/3 99/114/3 +f 112/115/8 110/116/8 108/117/8 +f 103/118/5 113/119/5 104/120/5 +f 110/116/3 109/121/3 108/117/3 +f 111/122/2 103/118/2 104/123/2 +f 104/124/8 106/83/8 111/125/8 +f 107/86/8 111/125/8 106/83/8 +f 108/117/1 113/126/1 112/115/1 +f 118/127/8 116/128/8 109/129/8 +f 164/130/5 166/106/5 169/131/5 +f 125/111/3 126/132/3 124/109/3 +f 78/133/1 84/85/1 97/134/1 +f 127/135/9 128/136/9 126/132/9 +f 119/137/1 106/83/1 100/138/1 +f 126/132/8 130/139/8 124/109/8 +f 131/140/4 127/135/4 125/111/4 +f 132/141/2 139/142/2 133/143/2 +f 133/143/10 134/144/10 132/141/10 +f 135/145/11 136/146/11 134/144/11 +f 134/144/12 138/147/12 132/141/12 +f 139/148/13 135/145/13 133/143/13 +f 140/149/2 147/150/2 141/151/2 +f 141/151/14 142/152/14 140/149/14 +f 143/153/15 144/154/15 142/152/15 +f 142/152/16 146/155/16 140/149/16 +f 147/156/17 143/153/17 141/151/17 +f 149/157/2 154/158/2 155/159/2 +f 149/157/12 150/160/12 148/161/12 +f 151/162/18 152/163/18 150/160/18 +f 150/160/19 154/164/19 148/161/19 +f 155/165/10 151/162/10 149/157/10 +f 156/166/2 163/167/2 157/168/2 +f 157/168/16 158/169/16 156/166/16 +f 158/169/20 161/170/20 160/171/20 +f 158/169/21 162/172/21 156/166/21 +f 163/173/14 159/174/14 157/168/14 +f 169/131/2 171/175/2 170/176/2 +f 92/94/5 168/177/5 172/178/5 +f 167/179/5 114/180/5 173/181/5 +f 83/182/2 166/106/2 80/183/2 +f 102/184/2 169/131/2 105/185/2 +f 93/186/4 91/187/4 78/75/4 +f 113/188/8 115/189/8 100/112/8 +f 173/181/1 164/190/1 167/179/1 +f 178/191/5 177/192/5 176/193/5 +f 183/194/22 177/192/22 179/195/22 +f 180/196/23 178/191/23 176/193/23 +f 179/195/1 178/191/1 186/197/1 +f 184/198/2 176/193/2 177/192/2 +f 196/199/1 194/200/1 190/201/1 +f 204/202/2 208/203/2 201/204/2 +f 246/205/1 258/206/1 240/207/1 +f 236/208/1 254/209/1 242/210/1 +f 237/211/16 262/212/16 236/208/16 +f 237/211/16 256/213/16 263/214/16 +f 238/215/16 257/216/16 256/213/16 +f 240/207/16 257/216/16 239/217/16 +f 249/218/17 246/205/17 245/219/17 +f 248/220/17 245/219/17 244/221/17 +f 255/222/17 244/221/17 243/223/17 +f 254/224/17 243/223/17 242/210/17 +f 278/225/17 279/226/17 275/227/17 +f 165/228/1 172/178/1 168/177/1 +f 174/229/1 165/228/1 164/190/1 +f 116/97/2 114/180/2 115/230/2 +f 167/231/8 169/131/8 102/232/8 +f 123/233/2 116/97/2 94/95/2 +f 19/1/1 3/234/1 4/2/1 +f 2/4/1 3/234/1 19/1/1 +f 2/4/1 20/5/1 21/6/1 +f 1/7/1 21/6/1 8/8/1 +f 12/9/1 8/8/1 9/10/1 +f 10/12/1 11/11/1 9/10/1 +f 26/14/2 25/235/2 16/15/2 +f 14/17/2 27/236/2 26/14/2 +f 28/18/2 27/236/2 14/17/2 +f 7/20/2 28/18/2 13/19/2 +f 6/22/2 7/20/2 24/21/2 +f 6/22/2 23/23/2 22/24/2 +f 33/26/1 34/237/1 40/27/1 +f 40/27/1 34/237/1 35/29/1 +f 33/26/1 41/28/1 42/31/1 +f 30/33/1 38/35/1 29/32/1 +f 31/34/1 37/238/1 38/35/1 +f 36/36/1 37/238/1 31/34/1 +f 44/38/2 56/239/2 51/39/2 +f 51/39/2 50/73/2 52/41/2 +f 46/42/2 56/239/2 44/38/2 +f 47/44/2 46/42/2 45/43/2 +f 48/46/2 47/44/2 55/45/2 +f 48/46/2 53/47/2 54/48/2 +f 36/36/3 32/240/3 5/50/3 +f 25/51/3 39/241/3 35/29/3 +f 58/52/1 62/242/1 63/53/1 +f 61/55/1 62/242/1 58/52/1 +f 65/57/1 60/61/1 61/58/1 +f 65/57/1 66/62/1 59/60/1 +f 4/2/1 59/60/1 66/62/1 +f 17/13/1 57/54/1 63/53/1 +f 67/63/2 72/72/2 73/64/2 +f 73/64/2 74/243/2 69/66/2 +f 69/67/2 74/244/2 75/68/2 +f 75/68/2 76/71/2 71/70/2 +f 49/49/2 54/48/2 71/70/2 +f 72/72/2 67/63/2 52/41/2 +f 79/74/3 80/108/3 78/75/3 +f 88/77/4 81/81/4 90/78/4 +f 91/80/5 90/78/5 81/81/5 +f 106/83/1 120/245/1 121/84/1 +f 121/84/1 98/246/1 84/85/1 +f 107/86/5 106/83/5 84/85/5 +f 87/88/3 89/247/3 88/77/3 +f 81/81/2 88/77/2 89/89/2 +f 82/91/4 89/92/4 84/85/4 +f 89/92/4 87/104/4 85/87/4 +f 91/93/1 87/248/1 86/79/1 +f 92/94/2 123/233/2 94/95/2 +f 116/97/6 118/105/6 96/98/6 +f 117/99/7 107/249/7 85/100/7 +f 85/87/4 87/104/4 95/250/4 +f 87/104/4 91/187/4 93/186/4 +f 95/250/4 87/104/4 96/103/4 +f 93/186/4 94/102/4 87/104/4 +f 118/105/5 117/99/5 95/101/5 +f 166/106/4 165/251/4 168/107/4 +f 124/109/2 130/252/2 131/110/2 +f 100/112/3 102/232/3 101/113/3 +f 112/115/8 103/118/8 110/116/8 +f 103/118/5 112/115/5 113/119/5 +f 110/116/3 111/253/3 109/121/3 +f 111/122/2 110/116/2 103/118/2 +f 104/124/8 100/112/8 106/83/8 +f 107/86/8 109/129/8 111/125/8 +f 108/117/1 109/254/1 113/126/1 +f 113/188/8 109/129/8 115/189/8 +f 109/129/8 107/86/8 117/255/8 +f 115/189/8 109/129/8 116/128/8 +f 117/255/8 118/127/8 109/129/8 +f 164/130/5 165/251/5 166/106/5 +f 125/111/3 127/135/3 126/132/3 +f 97/134/1 77/256/1 78/133/1 +f 84/85/1 98/246/1 97/134/1 +f 127/135/9 129/257/9 128/136/9 +f 100/138/1 99/258/1 119/137/1 +f 119/137/1 120/245/1 106/83/1 +f 126/132/8 128/259/8 130/139/8 +f 131/140/4 129/260/4 127/135/4 +f 132/141/2 138/261/2 139/142/2 +f 133/143/10 135/145/10 134/144/10 +f 135/145/11 137/262/11 136/146/11 +f 134/144/12 136/263/12 138/147/12 +f 139/148/13 137/264/13 135/145/13 +f 140/149/2 146/265/2 147/150/2 +f 141/151/14 143/153/14 142/152/14 +f 143/153/15 145/266/15 144/154/15 +f 142/152/16 144/267/16 146/155/16 +f 147/156/17 145/268/17 143/153/17 +f 149/157/2 148/161/2 154/158/2 +f 149/157/12 151/162/12 150/160/12 +f 151/162/18 153/269/18 152/163/18 +f 150/160/19 152/270/19 154/164/19 +f 155/165/10 153/271/10 151/162/10 +f 156/166/2 162/272/2 163/167/2 +f 157/168/16 159/174/16 158/169/16 +f 158/169/20 159/174/20 161/170/20 +f 158/169/21 160/273/21 162/172/21 +f 163/173/14 161/274/14 159/174/14 +f 169/131/2 166/106/2 171/175/2 +f 92/94/5 93/96/5 168/177/5 +f 167/179/5 115/230/5 114/180/5 +f 80/183/2 79/275/2 83/182/2 +f 83/182/2 171/175/2 166/106/2 +f 105/185/2 101/276/2 102/184/2 +f 169/131/2 170/176/2 105/185/2 +f 80/108/4 168/107/4 93/186/4 +f 91/187/4 82/91/4 78/75/4 +f 80/108/4 93/186/4 78/75/4 +f 115/189/8 167/231/8 102/232/8 +f 102/232/8 100/112/8 115/189/8 +f 100/112/8 104/124/8 113/188/8 +f 173/181/1 174/229/1 164/190/1 +f 178/191/5 179/195/5 177/192/5 +f 183/194/22 181/277/22 177/192/22 +f 180/196/23 182/278/23 178/191/23 +f 187/279/1 183/280/1 179/195/1 +f 178/191/1 182/281/1 186/197/1 +f 186/197/1 187/279/1 179/195/1 +f 177/192/2 181/282/2 185/283/2 +f 184/198/2 180/284/2 176/193/2 +f 177/192/2 185/283/2 184/198/2 +f 190/201/1 189/285/1 188/286/1 +f 188/286/1 199/287/1 190/201/1 +f 199/287/1 198/288/1 190/201/1 +f 198/288/1 197/289/1 196/199/1 +f 196/199/1 195/290/1 194/200/1 +f 194/200/1 193/291/1 190/201/1 +f 193/291/1 192/292/1 190/201/1 +f 192/292/1 191/293/1 190/201/1 +f 198/288/1 196/199/1 190/201/1 +f 201/204/2 200/294/2 204/202/2 +f 200/294/2 202/295/2 204/202/2 +f 202/295/2 203/296/2 204/202/2 +f 204/202/2 205/297/2 208/203/2 +f 205/297/2 206/298/2 208/203/2 +f 206/298/2 207/299/2 208/203/2 +f 208/203/2 209/300/2 210/301/2 +f 210/301/2 211/302/2 208/203/2 +f 211/302/2 201/204/2 208/203/2 +f 246/205/1 250/303/1 258/206/1 +f 236/208/1 262/304/1 254/209/1 +f 237/211/16 263/214/16 262/212/16 +f 237/211/16 238/215/16 256/213/16 +f 238/215/16 239/217/16 257/216/16 +f 240/207/16 258/305/16 257/216/16 +f 249/218/17 250/306/17 246/205/17 +f 248/220/17 249/218/17 245/219/17 +f 255/222/17 248/220/17 244/221/17 +f 254/224/17 255/222/17 243/223/17 +f 279/226/17 272/307/17 273/308/17 +f 273/308/17 274/309/17 279/226/17 +f 274/309/17 275/227/17 279/226/17 +f 275/227/17 276/310/17 277/311/17 +f 277/311/17 278/225/17 275/227/17 +f 165/228/1 175/312/1 172/178/1 +f 174/229/1 175/312/1 165/228/1 +f 116/97/2 122/313/2 114/180/2 +f 167/231/8 164/130/8 169/131/8 +f 123/233/2 122/313/2 116/97/2 +s 1 +f 15/16/10 4/2/4 3/234/10 +f 22/24/24 11/11/16 10/12/8 +f 23/23/16 12/9/12 11/11/16 +f 13/19/3 2/4/14 1/7/3 +f 24/21/12 1/7/3 12/9/12 +f 14/17/14 3/234/10 2/4/14 +f 34/237/10 52/41/4 35/29/25 +f 36/36/24 53/47/16 37/238/16 +f 33/26/14 43/40/10 34/237/10 +f 37/238/16 55/45/12 38/35/12 +f 29/32/3 44/38/14 33/26/14 +f 38/35/12 45/43/3 29/32/3 +f 61/55/5 70/69/21 62/242/21 +f 59/60/17 68/65/13 60/61/13 +f 62/242/21 71/70/19 63/53/19 +f 60/61/13 69/66/5 61/58/5 +f 36/36/24 22/24/24 71/70/19 +f 16/15/25 35/29/25 67/63/17 +f 195/314/4 206/315/17 194/316/17 +f 192/317/5 203/318/21 191/319/21 +f 199/320/12 210/321/3 198/322/3 +f 189/323/8 201/324/16 188/325/16 +f 196/326/10 207/327/4 195/314/4 +f 193/328/13 204/329/5 192/317/5 +f 188/325/16 211/330/12 199/320/12 +f 190/331/19 200/332/8 189/323/8 +f 197/333/14 208/334/10 196/326/10 +f 194/316/17 205/335/13 193/328/13 +f 191/336/21 202/337/19 190/331/19 +f 197/333/14 210/321/3 209/338/14 +f 228/339/5 217/340/13 216/341/5 +f 235/342/12 212/343/16 223/344/12 +f 225/345/8 214/346/19 213/347/8 +f 232/348/10 221/349/14 220/350/10 +f 229/351/13 218/352/17 217/340/13 +f 226/353/19 215/354/21 214/346/19 +f 233/355/14 222/356/3 221/349/14 +f 230/357/17 219/358/4 218/352/17 +f 227/359/21 216/341/5 215/360/21 +f 234/361/3 223/344/12 222/356/3 +f 224/362/16 213/347/8 212/343/16 +f 231/363/4 220/350/10 219/358/4 +f 253/364/26 278/365/27 277/366/28 +f 245/219/29 240/207/30 239/217/29 +f 243/223/31 238/215/2 237/211/31 +f 244/221/2 239/217/29 238/215/2 +f 242/210/32 237/211/31 236/208/32 +f 263/367/33 248/368/1 255/369/33 +f 257/370/34 250/371/35 249/372/34 +f 262/373/36 255/369/33 254/374/36 +f 248/368/1 257/370/34 249/372/34 +f 253/364/37 269/375/38 259/376/39 +f 247/377/40 264/378/41 265/379/42 +f 252/380/43 266/381/44 267/382/43 +f 259/376/39 270/383/45 260/384/46 +f 252/385/43 268/386/47 253/364/37 +f 241/387/48 271/388/49 264/378/41 +f 251/389/50 265/379/42 266/381/44 +f 260/384/46 271/388/49 261/390/49 +f 247/377/51 273/391/52 241/387/53 +f 252/380/54 275/392/55 251/389/56 +f 259/376/57 279/393/58 278/365/27 +f 252/385/54 277/366/28 276/394/54 +f 241/387/53 272/395/59 261/390/59 +f 251/389/56 274/396/60 247/377/51 +f 260/384/61 272/395/59 279/393/58 +f 282/397/62 289/398/63 281/399/64 +f 287/400/65 294/401/66 286/402/67 +f 285/403/68 292/404/69 284/405/69 +f 283/406/70 290/407/71 282/408/62 +f 280/409/72 289/398/63 288/410/72 +f 287/400/65 288/410/72 295/411/73 +f 286/402/67 293/412/74 285/403/68 +f 284/405/69 291/413/75 283/406/70 +f 281/414/64 298/415/8 282/416/62 +f 286/402/67 303/417/76 287/400/65 +f 284/418/69 301/419/77 285/403/68 +f 282/420/62 299/421/78 283/422/70 +f 280/423/72 297/424/79 281/414/64 +f 287/400/65 296/425/1 280/423/72 +f 285/403/68 302/426/4 286/402/67 +f 283/422/70 300/427/2 284/418/69 +f 293/412/74 308/428/2 292/429/69 +f 291/430/75 306/431/5 290/432/71 +f 289/433/63 304/434/1 288/435/72 +f 288/435/72 311/436/80 295/411/73 +f 294/401/66 309/437/81 293/412/74 +f 292/429/69 307/438/6 291/430/75 +f 290/439/71 305/440/7 289/433/63 +f 295/411/73 310/441/3 294/401/66 +f 313/442/64 322/443/71 321/444/63 +f 318/445/67 327/446/73 326/447/66 +f 317/448/68 324/449/69 316/450/69 +f 314/451/62 323/452/75 322/453/71 +f 312/454/72 321/444/63 320/455/72 +f 319/456/65 320/455/72 327/446/73 +f 318/445/67 325/457/74 317/448/68 +f 316/450/69 323/452/75 315/458/70 +f 313/459/64 330/460/8 314/461/62 +f 318/445/67 335/462/76 319/456/65 +f 316/463/69 333/464/77 317/448/68 +f 314/465/62 331/466/78 315/467/70 +f 312/468/72 329/469/79 313/459/64 +f 319/456/65 328/470/1 312/468/72 +f 317/448/68 334/471/4 318/445/67 +f 315/467/70 332/472/2 316/463/69 +f 325/457/74 340/473/2 324/474/69 +f 323/475/75 338/476/5 322/477/71 +f 321/478/63 336/479/1 320/480/72 +f 320/480/72 343/481/80 327/446/73 +f 326/447/66 341/482/81 325/457/74 +f 324/474/69 339/483/6 323/475/75 +f 322/484/71 337/485/7 321/478/63 +f 327/446/73 342/486/3 326/447/66 +f 15/16/10 16/15/25 4/2/4 +f 22/24/24 23/23/16 11/11/16 +f 23/23/16 24/21/12 12/9/12 +f 13/19/3 14/17/14 2/4/14 +f 24/21/12 13/19/3 1/7/3 +f 14/17/14 15/16/10 3/234/10 +f 34/237/10 43/40/10 52/41/4 +f 36/36/24 54/48/8 53/47/16 +f 33/26/14 44/38/14 43/40/10 +f 37/238/16 53/47/16 55/45/12 +f 29/32/3 45/43/3 44/38/14 +f 38/35/12 55/45/12 45/43/3 +f 61/55/5 69/67/5 70/69/21 +f 59/60/17 67/63/17 68/65/13 +f 62/242/21 70/69/21 71/70/19 +f 60/61/13 68/65/13 69/66/5 +f 22/24/24 10/12/8 63/53/19 +f 63/53/19 71/70/19 22/24/24 +f 71/70/19 54/48/8 36/36/24 +f 59/60/17 4/2/4 16/15/25 +f 35/29/25 52/41/4 67/63/17 +f 59/60/17 16/15/25 67/63/17 +f 195/314/4 207/327/4 206/315/17 +f 192/317/5 204/329/5 203/318/21 +f 199/320/12 211/330/12 210/321/3 +f 189/323/8 200/332/8 201/324/16 +f 196/326/10 208/334/10 207/327/4 +f 193/328/13 205/335/13 204/329/5 +f 188/325/16 201/324/16 211/330/12 +f 190/331/19 202/337/19 200/332/8 +f 197/333/14 209/338/14 208/334/10 +f 194/316/17 206/315/17 205/335/13 +f 191/336/21 203/487/21 202/337/19 +f 197/333/14 198/322/3 210/321/3 +f 228/339/5 229/351/13 217/340/13 +f 235/342/12 224/362/16 212/343/16 +f 225/345/8 226/353/19 214/346/19 +f 232/348/10 233/355/14 221/349/14 +f 229/351/13 230/357/17 218/352/17 +f 226/353/19 227/488/21 215/354/21 +f 233/355/14 234/361/3 222/356/3 +f 230/357/17 231/363/4 219/358/4 +f 227/359/21 228/339/5 216/341/5 +f 234/361/3 235/342/12 223/344/12 +f 224/362/16 225/345/8 213/347/8 +f 231/363/4 232/348/10 220/350/10 +f 253/364/26 259/376/57 278/365/27 +f 245/219/29 246/205/30 240/207/30 +f 243/223/31 244/221/2 238/215/2 +f 244/221/2 245/219/29 239/217/29 +f 242/210/32 243/223/31 237/211/31 +f 263/367/33 256/489/1 248/368/1 +f 257/370/34 258/490/35 250/371/35 +f 262/373/36 263/367/33 255/369/33 +f 248/368/1 256/489/1 257/370/34 +f 253/364/37 268/386/47 269/375/38 +f 247/377/40 241/387/48 264/378/41 +f 252/380/43 251/389/50 266/381/44 +f 259/376/39 269/375/38 270/383/45 +f 252/385/43 267/491/43 268/386/47 +f 241/387/48 261/390/49 271/388/49 +f 251/389/50 247/377/40 265/379/42 +f 260/384/46 270/383/45 271/388/49 +f 247/377/51 274/396/60 273/391/52 +f 252/380/54 276/492/54 275/392/55 +f 259/376/57 260/384/61 279/393/58 +f 252/385/54 253/364/26 277/366/28 +f 241/387/53 273/391/52 272/395/59 +f 251/389/56 275/392/55 274/396/60 +f 260/384/61 261/390/59 272/395/59 +f 282/397/62 290/493/71 289/398/63 +f 287/400/65 295/411/73 294/401/66 +f 285/403/68 293/412/74 292/404/69 +f 283/406/70 291/413/75 290/407/71 +f 280/409/72 281/399/64 289/398/63 +f 287/400/65 280/409/72 288/410/72 +f 286/402/67 294/401/66 293/412/74 +f 284/405/69 292/404/69 291/413/75 +f 281/414/64 297/424/79 298/415/8 +f 286/402/67 302/426/4 303/417/76 +f 284/418/69 300/427/2 301/419/77 +f 282/420/62 298/494/8 299/421/78 +f 280/423/72 296/425/1 297/424/79 +f 287/400/65 303/417/76 296/425/1 +f 285/403/68 301/419/77 302/426/4 +f 283/422/70 299/421/78 300/427/2 +f 293/412/74 309/437/81 308/428/2 +f 291/430/75 307/438/6 306/431/5 +f 289/433/63 305/440/7 304/434/1 +f 288/435/72 304/434/1 311/436/80 +f 294/401/66 310/441/3 309/437/81 +f 292/429/69 308/428/2 307/438/6 +f 290/439/71 306/495/5 305/440/7 +f 295/411/73 311/436/80 310/441/3 +f 313/442/64 314/496/62 322/443/71 +f 318/445/67 319/456/65 327/446/73 +f 317/448/68 325/457/74 324/449/69 +f 314/451/62 315/458/70 323/452/75 +f 312/454/72 313/442/64 321/444/63 +f 319/456/65 312/454/72 320/455/72 +f 318/445/67 326/447/66 325/457/74 +f 316/450/69 324/449/69 323/452/75 +f 313/459/64 329/469/79 330/460/8 +f 318/445/67 334/471/4 335/462/76 +f 316/463/69 332/472/2 333/464/77 +f 314/465/62 330/497/8 331/466/78 +f 312/468/72 328/470/1 329/469/79 +f 319/456/65 335/462/76 328/470/1 +f 317/448/68 333/464/77 334/471/4 +f 315/467/70 331/466/78 332/472/2 +f 325/457/74 341/482/81 340/473/2 +f 323/475/75 339/483/6 338/476/5 +f 321/478/63 337/485/7 336/479/1 +f 320/480/72 336/479/1 343/481/80 +f 326/447/66 342/486/3 341/482/81 +f 324/474/69 340/473/2 339/483/6 +f 322/484/71 338/498/5 337/485/7 +f 327/446/73 343/481/80 342/486/3 +o Barrel +v 0.000000 1.500000 6.687500 +v 0.250000 1.433012 6.687500 +v 0.433013 1.250000 6.687500 +v 0.500000 1.000000 6.687500 +v 0.433013 0.750000 6.687500 +v 0.250000 0.566987 6.687500 +v 0.000000 0.500000 6.687500 +v -0.250000 0.566987 6.687500 +v -0.433012 0.750000 6.687500 +v -0.500000 1.000000 6.687500 +v -0.433013 1.250000 6.687500 +v -0.250000 1.433012 6.687500 +v 0.000000 1.500000 0.187500 +v 0.250000 1.433012 0.187500 +v 0.433013 1.250000 0.187500 +v 0.500000 1.000000 0.187500 +v 0.433013 0.750000 0.187500 +v 0.250000 0.566987 0.187500 +v 0.000000 0.500000 0.187500 +v -0.250000 0.566987 0.187500 +v -0.433012 0.750000 0.187500 +v -0.500000 1.000000 0.187500 +v -0.433013 1.250000 0.187500 +v -0.250000 1.433012 0.187500 +v 0.218750 1.378886 6.687500 +v 0.000000 1.437500 6.687500 +v 0.378886 1.218750 6.687500 +v 0.437500 1.000000 6.687500 +v 0.378886 0.781250 6.687500 +v 0.218750 0.621114 6.687500 +v 0.000000 0.562500 6.687500 +v -0.218750 0.621114 6.687500 +v -0.378886 0.781250 6.687500 +v -0.437500 1.000000 6.687500 +v -0.378886 1.218750 6.687500 +v -0.218750 1.378886 6.687500 +v 0.218750 1.378889 0.187500 +v 0.000000 1.437503 0.187500 +v 0.378886 1.218753 0.187500 +v 0.437500 1.000003 0.187500 +v 0.378886 0.781253 0.187500 +v 0.218750 0.621117 0.187500 +v 0.000000 0.562503 0.187500 +v -0.218750 0.621117 0.187500 +v -0.378886 0.781253 0.187500 +v -0.437500 1.000003 0.187500 +v -0.378886 1.218753 0.187500 +v -0.218750 1.378889 0.187500 +vt 0.237557 0.222222 +vt 0.235294 0.246914 +vt 0.235294 0.222222 +vt 0.472851 0.049383 +vt 0.475113 0.024691 +vt 0.475113 0.049383 +vt 0.237557 0.246914 +vt 0.235294 0.271605 +vt 0.237557 0.296296 +vt 0.237557 0.271605 +vt 0.237557 0.000000 +vt 0.235294 0.024691 +vt 0.235294 0.000000 +vt 0.237557 0.024691 +vt 0.235294 0.049383 +vt 0.237557 0.049383 +vt 0.235294 0.074074 +vt 0.237557 0.172840 +vt 0.235294 0.148148 +vt 0.237557 0.148148 +vt 0.237557 0.123457 +vt 0.235294 0.123457 +vt 0.237557 0.074074 +vt 0.235294 0.098765 +vt 0.235294 0.197531 +vt 0.235294 0.172840 +vt 0.237557 0.098765 +vt 0.237557 0.197531 +vt 0.472851 0.074074 +vt 0.475113 0.074074 +vt 0.472851 0.098765 +vt 0.475113 0.098765 +vt 0.472851 0.123457 +vt 0.475113 0.123457 +vt 0.472851 0.148148 +vt 0.475113 0.148148 +vt 0.475113 0.172840 +vt 0.472851 0.172840 +vt 0.475113 0.197531 +vt 0.472851 0.197531 +vt 0.475113 0.222222 +vt 0.472851 0.222222 +vt 0.475113 0.246914 +vt 0.472851 0.246914 +vt 0.475113 0.271605 +vt 0.472851 0.271605 +vt 0.475113 0.296296 +vt 0.472851 0.296296 +vt 0.472851 0.024691 +vt 0.475113 0.000000 +vt 0.235294 0.296296 +vt 0.472851 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.074074 +vt -0.000000 0.197531 +vt 0.000000 0.271605 +vt 0.000000 0.049383 +vt 0.000000 0.172840 +vt -0.000000 0.123457 +vt 0.000000 0.246914 +vt 0.000000 0.024691 +vt 0.000000 0.148148 +vt -0.000000 0.098765 +vt 0.000000 0.222222 +vt -0.000000 0.296296 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.5000 0.8660 0.0000 +vn -0.0000 1.0000 0.0000 +vn -0.5000 0.8660 0.0000 +vn -0.8660 0.5000 0.0000 +vn -1.0000 -0.0000 0.0000 +vn -0.8660 -0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.8660 0.5000 0.0000 +s off +f 353/499/82 376/500/82 377/501/82 +f 360/502/83 385/503/83 384/504/83 +f 352/505/82 375/506/82 376/500/82 +f 350/507/82 375/506/82 351/508/82 +f 350/509/82 373/510/82 374/511/82 +f 349/512/82 372/513/82 373/510/82 +f 348/514/82 371/515/82 372/513/82 +f 355/516/82 369/517/82 344/518/82 +f 345/519/82 369/517/82 368/520/82 +f 347/521/82 370/522/82 371/515/82 +f 355/516/82 378/523/82 379/524/82 +f 345/519/82 370/522/82 346/525/82 +f 353/499/82 378/523/82 354/526/82 +f 359/527/83 384/504/83 383/528/83 +f 358/529/83 383/528/83 382/530/83 +f 357/531/83 382/530/83 380/532/83 +f 356/533/83 380/532/83 381/534/83 +f 356/533/83 391/535/83 367/536/83 +f 367/536/83 390/537/83 366/538/83 +f 366/538/83 389/539/83 365/540/83 +f 365/540/83 388/541/83 364/542/83 +f 364/542/83 387/543/83 363/544/83 +f 363/544/83 386/545/83 362/546/83 +f 361/547/83 386/548/83 385/503/83 +f 353/499/82 352/505/82 376/500/82 +f 360/502/83 361/547/83 385/503/83 +f 352/505/82 351/508/82 375/506/82 +f 350/507/82 374/549/82 375/506/82 +f 350/509/82 349/512/82 373/510/82 +f 349/512/82 348/514/82 372/513/82 +f 348/514/82 347/521/82 371/515/82 +f 355/516/82 379/524/82 369/517/82 +f 345/519/82 344/518/82 369/517/82 +f 347/521/82 346/525/82 370/522/82 +f 355/516/82 354/526/82 378/523/82 +f 345/519/82 368/520/82 370/522/82 +f 353/499/82 377/501/82 378/523/82 +f 359/527/83 360/502/83 384/504/83 +f 358/529/83 359/527/83 383/528/83 +f 357/531/83 358/529/83 382/530/83 +f 356/533/83 357/531/83 380/532/83 +f 356/533/83 381/534/83 391/535/83 +f 367/536/83 391/535/83 390/537/83 +f 366/538/83 390/537/83 389/539/83 +f 365/540/83 389/539/83 388/541/83 +f 364/542/83 388/541/83 387/543/83 +f 363/544/83 387/543/83 386/545/83 +f 361/547/83 362/550/83 386/548/83 +s 1 +f 345/519/84 356/533/85 344/518/85 +f 367/536/86 344/518/85 356/533/85 +f 366/538/87 355/516/86 367/536/86 +f 365/540/88 354/526/87 366/538/87 +f 364/542/89 353/499/88 365/540/88 +f 363/544/90 352/505/89 364/542/89 +f 362/546/91 351/508/90 363/544/90 +f 350/509/91 361/547/92 349/512/92 +f 349/512/92 360/502/93 348/514/93 +f 348/514/93 359/527/94 347/521/94 +f 347/521/94 358/529/95 346/525/95 +f 346/525/95 357/531/84 345/519/84 +f 373/510/86 386/551/85 374/511/85 +f 370/522/89 383/552/88 371/515/88 +f 377/501/94 390/553/93 378/523/93 +f 374/549/85 387/554/84 375/506/84 +f 371/515/88 384/555/87 372/513/87 +f 378/523/93 391/556/92 379/524/92 +f 369/517/91 380/557/90 368/520/90 +f 375/506/84 388/558/95 376/500/95 +f 372/513/87 385/559/86 373/510/86 +f 379/524/92 381/560/91 369/517/91 +f 370/522/89 380/557/90 382/561/89 +f 377/501/94 388/558/95 389/562/94 +f 345/519/84 357/531/84 356/533/85 +f 367/536/86 355/516/86 344/518/85 +f 366/538/87 354/526/87 355/516/86 +f 365/540/88 353/499/88 354/526/87 +f 364/542/89 352/505/89 353/499/88 +f 363/544/90 351/508/90 352/505/89 +f 362/546/91 350/507/91 351/508/90 +f 350/509/91 362/550/91 361/547/92 +f 349/512/92 361/547/92 360/502/93 +f 348/514/93 360/502/93 359/527/94 +f 347/521/94 359/527/94 358/529/95 +f 346/525/95 358/529/95 357/531/84 +f 373/510/86 385/559/86 386/551/85 +f 370/522/89 382/561/89 383/552/88 +f 377/501/94 389/562/94 390/553/93 +f 374/549/85 386/563/85 387/554/84 +f 371/515/88 383/552/88 384/555/87 +f 378/523/93 390/553/93 391/556/92 +f 369/517/91 381/560/91 380/557/90 +f 375/506/84 387/554/84 388/558/95 +f 372/513/87 384/555/87 385/559/86 +f 379/524/92 391/556/92 381/560/91 +f 370/522/89 368/520/90 380/557/90 +f 377/501/94 376/500/95 388/558/95 +o Missile +v 0.000000 1.312500 1.687500 +v -0.156250 1.270633 1.687500 +v -0.270633 1.156250 1.687500 +v -0.312500 1.000000 1.687500 +v -0.270633 0.843750 1.687500 +v -0.156250 0.729367 1.687500 +v 0.000000 0.687500 1.687500 +v 0.156250 0.729367 1.687500 +v 0.270633 0.843750 1.687500 +v 0.312500 1.000000 1.687500 +v 0.270633 1.156250 1.687500 +v 0.156250 1.270633 1.687500 +v 0.000000 1.312500 6.437500 +v -0.156250 1.270633 6.437500 +v -0.270633 1.156250 6.437500 +v -0.312500 1.000000 6.437500 +v -0.270633 0.843750 6.437500 +v -0.156250 0.729367 6.437500 +v 0.000000 0.687500 6.437500 +v 0.156250 0.729367 6.437500 +v 0.270633 0.843750 6.437500 +v 0.312500 1.000000 6.437500 +v 0.270633 1.156250 6.437500 +v 0.156250 1.270633 6.437500 +v 0.000000 1.273438 7.062500 +v -0.136719 1.236804 7.062500 +v -0.236804 1.136719 7.062500 +v -0.273438 1.000000 7.062500 +v -0.236804 0.863281 7.062500 +v -0.136719 0.763196 7.062500 +v 0.000000 0.726562 7.062500 +v 0.136719 0.763196 7.062500 +v 0.236804 0.863281 7.062500 +v 0.273438 1.000000 7.062500 +v 0.236804 1.136718 7.062500 +v 0.136719 1.236804 7.062500 +v 0.000000 1.000000 7.687499 +v 0.245813 1.363261 1.812500 +v 0.206190 1.169631 1.687500 +v 0.245813 1.363261 3.562500 +v 0.206190 1.169631 3.687500 +v 0.191687 1.394511 1.812500 +v 0.043810 1.263381 1.687500 +v 0.191687 1.394511 3.562500 +v 0.043810 1.263381 3.687500 +v -0.245813 0.636739 1.812500 +v -0.206190 0.830369 1.687500 +v -0.245813 0.636739 3.562500 +v -0.206190 0.830369 3.687500 +v -0.191687 0.605489 1.812500 +v -0.043810 0.736619 1.687500 +v -0.191687 0.605489 3.562500 +v -0.043810 0.736619 3.687500 +v 0.437500 0.968750 1.812500 +v 0.250000 0.906250 1.687500 +v 0.437500 0.968750 3.562500 +v 0.250000 0.906250 3.687500 +v 0.437500 1.031250 1.812500 +v 0.250000 1.093750 1.687500 +v 0.437500 1.031250 3.562500 +v 0.250000 1.093750 3.687500 +v -0.437500 1.031250 1.812500 +v -0.250000 1.093750 1.687500 +v -0.437500 1.031250 3.562500 +v -0.250000 1.093750 3.687500 +v -0.437500 0.968750 1.812500 +v -0.250000 0.906250 1.687500 +v -0.437500 0.968750 3.562500 +v -0.250000 0.906250 3.687500 +v 0.191687 0.605489 1.812500 +v 0.043810 0.736619 1.687500 +v 0.191687 0.605489 3.562500 +v 0.043810 0.736619 3.687500 +v 0.245813 0.636739 1.812500 +v 0.206190 0.830369 1.687500 +v 0.245813 0.636739 3.562500 +v 0.206190 0.830369 3.687500 +v -0.191687 1.394511 1.812500 +v -0.043810 1.263381 1.687500 +v -0.191687 1.394511 3.562500 +v -0.043810 1.263381 3.687500 +v -0.245813 1.363261 1.812500 +v -0.206190 1.169631 1.687500 +v -0.245813 1.363261 3.562500 +v -0.206190 1.169631 3.687500 +vt 0.374030 0.768550 +vt 0.374030 0.799351 +vt 0.354477 0.799351 +vt 0.816742 0.734568 +vt 0.748869 0.716049 +vt 0.821267 0.716049 +vt 0.753394 0.734568 +vt 0.816742 0.740741 +vt 0.753394 0.740741 +vt 0.821267 0.759259 +vt 0.746606 0.728395 +vt 0.746606 0.740741 +vt 0.823529 0.740741 +vt 0.823529 0.728395 +vt 0.816742 0.734568 +vt 0.748869 0.716049 +vt 0.821267 0.716049 +vt 0.753394 0.734568 +vt 0.816742 0.740741 +vt 0.753394 0.740741 +vt 0.821267 0.759259 +vt 0.746606 0.728395 +vt 0.746606 0.740741 +vt 0.823529 0.728395 +vt 0.816742 0.734568 +vt 0.748869 0.716049 +vt 0.821267 0.716049 +vt 0.753394 0.734568 +vt 0.816742 0.740741 +vt 0.753394 0.740741 +vt 0.821267 0.759259 +vt 0.746606 0.728395 +vt 0.746606 0.740741 +vt 0.823529 0.740741 +vt 0.823529 0.728395 +vt 0.816742 0.734568 +vt 0.748869 0.716049 +vt 0.821267 0.716049 +vt 0.753394 0.734568 +vt 0.816742 0.740741 +vt 0.753394 0.740741 +vt 0.821267 0.759259 +vt 0.746606 0.728395 +vt 0.746606 0.740741 +vt 0.823529 0.740741 +vt 0.823529 0.728395 +vt 0.821267 0.716049 +vt 0.753394 0.734568 +vt 0.748869 0.716049 +vt 0.816742 0.740741 +vt 0.753394 0.740741 +vt 0.821267 0.759259 +vt 0.746606 0.728395 +vt 0.746606 0.740741 +vt 0.823529 0.740741 +vt 0.816742 0.734568 +vt 0.823529 0.728395 +vt 0.816742 0.734568 +vt 0.748869 0.716049 +vt 0.821267 0.716049 +vt 0.753394 0.734568 +vt 0.816742 0.740741 +vt 0.753394 0.740741 +vt 0.821267 0.759259 +vt 0.746606 0.728395 +vt 0.746606 0.740741 +vt 0.823529 0.728395 +vt 0.369898 0.810626 +vt 0.364253 0.814752 +vt 0.358609 0.810626 +vt 0.352964 0.783951 +vt 0.354477 0.768550 +vt 0.358609 0.757276 +vt 0.364253 0.753149 +vt 0.369898 0.757276 +vt 0.375543 0.783951 +vt 0.748869 0.759259 +vt 0.748869 0.759259 +vt 0.823529 0.740741 +vt 0.748869 0.759259 +vt 0.748869 0.759259 +vt 0.748869 0.759259 +vt 0.748869 0.759259 +vt 0.823529 0.740741 +vt 0.352941 0.888889 +vt 0.180995 0.876543 +vt 0.352941 0.876543 +vt 0.352941 0.827160 +vt 0.180995 0.814815 +vt 0.352941 0.814815 +vt 0.352941 0.851852 +vt 0.180995 0.839506 +vt 0.352941 0.839506 +vt 0.352941 0.790123 +vt 0.180995 0.777778 +vt 0.352941 0.777778 +vt 0.352941 0.901235 +vt 0.180995 0.888889 +vt 0.352941 0.864198 +vt 0.180995 0.851852 +vt 0.352941 0.802469 +vt 0.180995 0.790123 +vt 0.352941 0.765432 +vt 0.180995 0.753086 +vt 0.352941 0.753086 +vt 0.180995 0.864198 +vt 0.180995 0.802469 +vt 0.180995 0.827160 +vt 0.180995 0.765432 +vt 0.158371 0.790123 +vt 0.158371 0.753086 +vt 0.158371 0.864198 +vt 0.158371 0.814815 +vt 0.158371 0.802469 +vt 0.158371 0.827160 +vt 0.158371 0.765432 +vt 0.158371 0.888889 +vt 0.158371 0.876543 +vt 0.158371 0.839506 +vt 0.158371 0.777778 +vt 0.158371 0.901235 +vt 0.158371 0.851852 +vt 0.135747 0.845679 +vt 0.135747 0.858025 +vt 0.135747 0.870370 +vt 0.135747 0.882716 +vt 0.135747 0.895062 +vt 0.135747 0.759259 +vt 0.135747 0.771605 +vt 0.135747 0.783951 +vt 0.135747 0.796296 +vt 0.135747 0.808642 +vt 0.135747 0.820988 +vt 0.135747 0.833333 +vt 0.180995 0.901235 +vn -0.0000 0.0000 -1.0000 +vn 0.9797 -0.2005 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.6635 0.7482 0.0000 +vn 0.2773 0.4804 0.8321 +vn 0.2773 0.4804 -0.8321 +vn -0.9797 0.2005 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.6635 -0.7482 0.0000 +vn -0.2773 -0.4804 0.8321 +vn -0.2773 -0.4804 -0.8321 +vn 0.3162 -0.9487 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.3162 0.9487 0.0000 +vn 0.5547 0.0000 0.8320 +vn 0.5547 0.0000 -0.8321 +vn -0.3162 0.9487 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.3162 -0.9487 0.0000 +vn -0.5547 0.0000 0.8320 +vn -0.5547 0.0000 -0.8321 +vn -0.6635 -0.7482 0.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.9797 0.2005 0.0000 +vn 0.2773 -0.4804 0.8321 +vn 0.2773 -0.4804 -0.8321 +vn 0.6635 0.7482 0.0000 +vn -0.5000 0.8660 0.0000 +vn -0.9797 -0.2005 0.0000 +vn -0.2773 0.4804 0.8321 +vn -0.2773 0.4804 -0.8321 +vn 0.5547 0.0000 0.8321 +vn -0.5547 0.0000 0.8321 +vn -0.8656 -0.4998 0.0310 +vn -0.8660 -0.5000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.4998 0.8656 0.0310 +vn -0.8660 0.5000 0.0000 +vn -0.4998 0.8656 0.0310 +vn 0.8656 -0.4998 0.0310 +vn 0.8660 -0.5000 0.0000 +vn -0.0000 -1.0000 0.0000 +vn -0.4998 -0.8656 0.0310 +vn -0.8656 0.4998 0.0310 +vn 0.8660 0.5000 0.0000 +vn 0.9995 0.0000 0.0310 +vn -0.0000 -0.9995 0.0310 +vn -0.9995 -0.0000 0.0310 +vn 0.8656 0.4998 0.0310 +vn -0.0000 0.9995 0.0310 +vn 0.4998 -0.8656 0.0310 +vn 0.9735 0.0000 0.2289 +vn -0.0000 -0.9735 0.2289 +vn -0.9735 -0.0000 0.2289 +vn 0.4867 0.8430 0.2289 +vn 0.8430 0.4867 0.2289 +vn 0.0000 0.9735 0.2289 +vn 0.4867 -0.8430 0.2289 +vn -0.4867 -0.8430 0.2289 +vn -0.8430 -0.4867 0.2289 +vn -0.4867 0.8430 0.2289 +vn 0.8430 -0.4867 0.2289 +vn -0.8430 0.4867 0.2289 +vn -0.0000 0.0000 1.0000 +s off +f 396/564/96 394/565/96 402/566/96 +f 429/567/97 432/568/97 430/569/97 +f 431/570/98 433/571/98 435/572/98 +f 434/573/99 435/572/99 433/571/99 +f 432/574/100 435/572/100 436/575/100 +f 434/576/101 429/567/101 430/577/101 +f 437/578/102 440/579/102 438/580/102 +f 439/581/103 441/582/103 443/583/103 +f 442/584/104 443/583/104 441/582/104 +f 440/585/105 443/583/105 444/586/105 +f 438/587/106 441/582/106 437/578/106 +f 445/588/107 448/589/107 446/590/107 +f 447/591/108 449/592/108 451/593/108 +f 450/594/109 451/593/109 449/592/109 +f 448/595/110 451/593/110 452/596/110 +f 450/597/111 445/588/111 446/598/111 +f 453/599/112 456/600/112 454/601/112 +f 455/602/113 457/603/113 459/604/113 +f 458/605/114 459/604/114 457/603/114 +f 456/606/115 459/604/115 460/607/115 +f 458/608/116 453/599/116 454/609/116 +f 462/610/117 463/611/117 464/612/117 +f 463/611/118 465/613/118 467/614/118 +f 466/615/119 467/614/119 465/613/119 +f 464/616/120 467/614/120 468/617/120 +f 466/618/121 461/619/121 462/620/121 +f 469/621/122 472/622/122 470/623/122 +f 471/624/123 473/625/123 475/626/123 +f 474/627/124 475/626/124 473/625/124 +f 472/628/125 475/626/125 476/629/125 +f 470/630/126 473/625/126 469/621/126 +f 394/565/96 393/631/96 402/566/96 +f 393/631/96 392/632/96 402/566/96 +f 392/632/96 403/633/96 402/566/96 +f 402/566/96 401/634/96 400/635/96 +f 400/635/96 399/636/96 398/637/96 +f 398/637/96 397/638/96 396/564/96 +f 396/564/96 395/639/96 394/565/96 +f 402/566/96 400/635/96 398/637/96 +f 398/637/96 396/564/96 402/566/96 +f 429/567/97 431/570/97 432/568/97 +f 431/570/98 429/567/98 433/571/98 +f 434/573/99 436/640/99 435/572/99 +f 432/574/100 431/570/100 435/572/100 +f 434/576/101 433/571/101 429/567/101 +f 437/578/102 439/581/102 440/579/102 +f 439/581/103 437/578/103 441/582/103 +f 442/584/104 444/641/104 443/583/104 +f 440/585/105 439/581/105 443/583/105 +f 438/587/106 442/642/106 441/582/106 +f 445/588/107 447/591/107 448/589/107 +f 447/591/108 445/588/108 449/592/108 +f 450/594/109 452/643/109 451/593/109 +f 448/595/127 447/591/127 451/593/127 +f 450/597/111 449/592/111 445/588/111 +f 453/599/112 455/602/112 456/600/112 +f 455/602/113 453/599/113 457/603/113 +f 458/605/114 460/644/114 459/604/114 +f 456/606/128 455/602/128 459/604/128 +f 458/608/116 457/603/116 453/599/116 +f 462/610/117 461/619/117 463/611/117 +f 463/611/118 461/619/118 465/613/118 +f 466/615/119 468/645/119 467/614/119 +f 464/616/120 463/611/120 467/614/120 +f 466/618/121 465/613/121 461/619/121 +f 469/621/122 471/624/122 472/622/122 +f 471/624/123 469/621/123 473/625/123 +f 474/627/124 476/646/124 475/626/124 +f 472/628/125 471/624/125 475/626/125 +f 470/630/126 474/647/126 473/625/126 +s 1 +f 397/648/103 408/649/129 396/650/130 +f 392/651/131 415/652/132 403/653/98 +f 394/654/133 405/655/134 393/656/123 +f 401/657/108 412/658/135 400/659/136 +f 398/660/137 409/661/138 397/648/103 +f 395/662/113 406/663/139 394/654/133 +f 402/664/140 413/665/141 401/657/108 +f 399/666/118 410/667/142 398/668/137 +f 396/650/130 407/669/143 395/662/113 +f 403/653/98 414/670/144 402/664/140 +f 393/656/123 404/671/145 392/651/131 +f 400/659/136 411/672/146 399/666/118 +f 414/670/144 425/673/147 413/665/141 +f 411/672/146 422/674/148 410/667/142 +f 408/649/129 419/675/149 407/669/143 +f 414/670/144 427/676/150 426/677/151 +f 405/655/134 416/678/152 404/671/145 +f 412/658/135 423/679/153 411/672/146 +f 408/649/129 421/680/154 420/681/155 +f 404/671/145 427/676/150 415/652/132 +f 406/663/139 417/682/156 405/655/134 +f 413/665/141 424/683/157 412/658/135 +f 409/661/138 422/684/148 421/680/154 +f 407/669/143 418/685/158 406/663/139 +f 417/682/156 418/685/158 428/686/159 +f 418/685/158 419/675/149 428/687/159 +f 419/675/149 420/681/155 428/688/159 +f 420/681/155 421/680/154 428/689/159 +f 421/680/154 422/684/148 428/690/159 +f 422/674/148 423/679/153 428/691/159 +f 423/679/153 424/683/157 428/692/159 +f 424/683/157 425/673/147 428/693/159 +f 425/673/147 426/677/151 428/694/159 +f 426/677/151 427/676/150 428/695/159 +f 427/676/150 416/678/152 428/696/159 +f 416/678/152 417/682/156 428/697/159 +f 397/648/103 409/661/138 408/649/129 +f 392/651/131 404/671/145 415/652/132 +f 394/654/133 406/663/139 405/655/134 +f 401/657/108 413/665/141 412/658/135 +f 398/660/137 410/698/142 409/661/138 +f 395/662/113 407/669/143 406/663/139 +f 402/664/140 414/670/144 413/665/141 +f 399/666/118 411/672/146 410/667/142 +f 396/650/130 408/649/129 407/669/143 +f 403/653/98 415/652/132 414/670/144 +f 393/656/123 405/655/134 404/671/145 +f 400/659/136 412/658/135 411/672/146 +f 414/670/144 426/677/151 425/673/147 +f 411/672/146 423/679/153 422/674/148 +f 408/649/129 420/681/155 419/675/149 +f 414/670/144 415/652/132 427/676/150 +f 405/655/134 417/682/156 416/678/152 +f 412/658/135 424/683/157 423/679/153 +f 408/649/129 409/661/138 421/680/154 +f 404/671/145 416/678/152 427/676/150 +f 406/663/139 418/685/158 417/682/156 +f 413/665/141 425/673/147 424/683/157 +f 409/661/138 410/698/142 422/684/148 +f 407/669/143 419/675/149 418/685/158 +o Launcher +v -0.250000 1.433012 -1.437500 +v -0.433013 1.250000 -1.437500 +v -0.500000 1.000000 -1.437500 +v -0.433012 0.750000 -1.437500 +v -0.250000 0.566987 -1.437500 +v 0.000000 0.500000 -1.437500 +v 0.250000 0.566987 -1.437500 +v 0.433012 0.750000 -1.437500 +v 0.500000 1.000000 -1.437500 +v 0.433012 1.250000 -1.437500 +v 0.000000 1.500000 -1.437500 +v 0.250000 1.433012 -1.437500 +v 0.000000 1.500000 -6.687500 +v 0.250000 1.433012 -6.687500 +v 0.433012 1.250000 -6.687500 +v 0.500000 1.000000 -6.687500 +v 0.433012 0.750000 -6.687500 +v 0.250000 0.566987 -6.687500 +v 0.000000 0.500000 -6.687500 +v -0.250000 0.566987 -6.687500 +v -0.433012 0.750000 -6.687500 +v -0.500000 1.000000 -6.687500 +v -0.433013 1.250000 -6.687500 +v -0.250000 1.433012 -6.687500 +v 0.218750 1.378889 -6.687500 +v 0.000000 1.437503 -6.687500 +v 0.378886 1.218753 -6.687500 +v 0.437500 1.000003 -6.687500 +v 0.378886 0.781253 -6.687500 +v 0.218750 0.621117 -6.687500 +v 0.000000 0.562503 -6.687500 +v -0.218750 0.621117 -6.687500 +v -0.378886 0.781253 -6.687500 +v -0.437500 1.000003 -6.687500 +v -0.378886 1.218753 -6.687500 +v -0.218750 1.378889 -6.687500 +v 0.218750 1.378889 -1.437500 +v 0.000000 1.437503 -1.437500 +v 0.378886 1.218753 -1.437500 +v 0.437500 1.000003 -1.437500 +v 0.378886 0.781253 -1.437500 +v 0.218750 0.621117 -1.437500 +v 0.000000 0.562503 -1.437500 +v -0.218750 0.621117 -1.437500 +v -0.378886 0.781253 -1.437500 +v -0.437500 1.000003 -1.437500 +v -0.378886 1.218753 -1.437500 +v -0.218750 1.378889 -1.437500 +v 0.000000 1.625000 1.687500 +v 0.312500 1.541266 1.687500 +v 0.541266 1.312500 1.687500 +v 0.625000 0.999999 1.687500 +v -0.625000 0.999999 1.687500 +v -0.541266 1.312500 1.687500 +v -0.312500 1.541266 1.687500 +v -0.250000 1.433012 1.687500 +v -0.433013 1.250000 1.687500 +v 0.000000 1.625000 0.687500 +v 0.312500 1.541266 0.687500 +v 0.541266 1.312500 0.687500 +v 0.625000 0.999999 0.687500 +v -0.625000 0.999999 0.687500 +v -0.541266 1.312500 0.687500 +v -0.312500 1.541266 0.687500 +v 0.000000 1.625000 -1.437500 +v 0.312500 1.541266 -1.437500 +v 0.541266 1.312500 -1.437500 +v 0.625000 0.999999 -1.437500 +v -0.625000 0.999999 -1.437500 +v -0.541266 1.312500 -1.437500 +v -0.312500 1.541266 -1.437500 +v 0.000000 1.625000 -1.937500 +v 0.312500 1.541266 -1.937500 +v 0.541266 1.312500 -1.937500 +v 0.625000 0.999999 -1.937500 +v -0.625000 0.999999 -1.937500 +v -0.541266 1.312500 -1.937500 +v -0.312500 1.541266 -1.937500 +v 0.541266 0.687500 -1.437500 +v 0.312500 0.458734 -1.437500 +v 0.000000 0.375000 -1.437500 +v -0.312500 0.458734 -1.437500 +v -0.541265 0.687499 -1.437500 +v 0.541266 0.687500 -5.687500 +v 0.312500 0.458734 -5.687500 +v 0.000000 0.375000 -5.687500 +v -0.312500 0.458734 -5.687500 +v -0.541265 0.687499 -5.687500 +v 0.433012 0.750000 -5.687500 +v 0.250000 0.566987 -5.687500 +v 0.000000 0.500000 -5.687500 +v -0.250000 0.566987 -5.687500 +v -0.433012 0.750000 -5.687500 +v 0.625000 0.999999 -5.687500 +v -0.625000 0.999999 -5.687500 +v 0.500000 1.000000 -5.687500 +v -0.500000 1.000000 -5.687500 +v -0.250000 1.433012 -1.937500 +v -0.433013 1.250000 -1.937500 +v -0.500000 1.000000 -1.937500 +v 0.500000 1.000000 -1.937500 +v 0.433012 1.250000 -1.937500 +v 0.000000 1.500000 -1.937500 +v 0.250000 1.433012 -1.937500 +v 0.750000 0.250000 1.687500 +v 0.750000 1.000000 1.687500 +v -0.750000 1.000000 1.687500 +v -0.750000 0.250000 1.687500 +v -0.500000 1.000000 1.687500 +v -0.433012 0.750000 1.687500 +v -0.250000 0.566987 1.687500 +v 0.000000 0.500000 1.687500 +v 0.250000 0.566987 1.687500 +v 0.433013 0.750000 1.687500 +v 0.500000 1.000000 1.687500 +v 0.433013 1.250000 1.687500 +v 0.250000 1.433012 1.687500 +v 0.000000 1.500000 1.687500 +v 0.750000 0.250000 0.687500 +v -0.750000 0.250000 0.687500 +v 0.750000 0.750000 1.562500 +v -0.750000 0.750000 1.562500 +v 0.750000 0.750000 0.687500 +v -0.750000 0.750000 0.687500 +v 0.750000 1.000000 0.687500 +v -0.750000 1.000000 0.687500 +v 0.625000 1.000000 1.687500 +v 0.541266 0.687500 1.687500 +v 0.312500 0.458734 1.687500 +v -0.625000 1.000000 1.687500 +v -0.541265 0.687500 1.687500 +v -0.312500 0.458734 1.687500 +v 0.000000 0.375000 1.687500 +v 0.541266 0.687500 1.687500 +v 0.312500 0.458734 1.687500 +v -0.541265 0.687500 1.687500 +v -0.312500 0.458734 1.687500 +v 0.000000 0.375000 1.687500 +v 0.541266 0.687500 0.687500 +v 0.312500 0.458734 0.687500 +v -0.541265 0.687500 0.687500 +v -0.312500 0.458734 0.687500 +v 0.000000 0.375000 0.687500 +v -0.750000 0.437500 0.687500 +v 0.750000 0.437500 0.687500 +v 0.500000 0.750000 1.562500 +v -0.500000 0.750000 1.562500 +v 0.500000 0.750000 0.687500 +v 0.625000 1.000000 0.687500 +v -0.625000 0.999999 0.687500 +v -0.500000 0.750000 0.687500 +v 0.750000 0.125000 0.687500 +v -0.750000 0.125000 0.687500 +v -0.875000 0.250000 1.437500 +v 0.875000 0.249999 1.437500 +v -0.875000 0.125000 1.470994 +v 0.875000 0.124999 1.470994 +v -0.875000 0.033493 1.562500 +v 0.875000 0.033493 1.562500 +v -0.875000 -0.000000 1.687500 +v 0.875000 -0.000000 1.687500 +v -0.875000 0.033493 1.812500 +v 0.875000 0.033493 1.812500 +v -0.875000 0.125000 1.904006 +v 0.875000 0.124999 1.904006 +v -0.875000 0.250000 1.937500 +v 0.875000 0.249999 1.937500 +v -0.875000 0.375000 1.904006 +v 0.875000 0.374999 1.904006 +v -0.875000 0.466506 1.812500 +v 0.875000 0.466506 1.812500 +v -0.875000 0.500000 1.687500 +v 0.875000 0.499999 1.687500 +v -0.875000 0.466506 1.562500 +v 0.875000 0.466506 1.562500 +v -0.875000 0.375000 1.470994 +v 0.875000 0.375000 1.470994 +v -0.750000 0.125000 -1.437500 +v 0.750000 0.125000 -1.437500 +v 0.750000 1.750000 0.687500 +v -0.750000 1.750000 0.687500 +v -0.750000 1.750000 -1.437500 +v 0.750000 1.750000 -1.437500 +v -0.875000 1.750000 0.812500 +v 0.875000 1.750000 0.812500 +v -0.875000 1.750000 -1.562500 +v 0.875000 1.750000 -1.562500 +v -0.875000 2.500000 -1.562500 +v -0.875000 2.500000 0.812500 +v 0.875000 2.500000 0.812500 +v 0.875000 2.500000 -1.562500 +v 0.000000 1.875000 -6.337500 +v 0.437500 1.757772 -6.337500 +v 0.757772 1.437500 -6.337500 +v 0.875000 0.999999 -6.337500 +v 0.757772 0.562500 -6.337500 +v 0.437500 0.242228 -6.337500 +v 0.000000 0.125000 -6.337500 +v -0.437500 0.242228 -6.337500 +v -0.757772 0.562499 -6.337500 +v -0.875000 0.999999 -6.337500 +v -0.757772 1.437499 -6.337500 +v -0.437500 1.757772 -6.337500 +v 0.000000 1.500000 -6.687500 +v 0.250000 1.433012 -6.687500 +v 0.433013 1.250000 -6.687500 +v 0.500000 1.000000 -6.687500 +v 0.433013 0.750000 -6.687500 +v 0.250000 0.566987 -6.687500 +v 0.000000 0.500000 -6.687500 +v -0.250000 0.566987 -6.687500 +v -0.433012 0.750000 -6.687500 +v -0.500000 1.000000 -6.687500 +v -0.433013 1.250000 -6.687500 +v -0.250000 1.433012 -6.687500 +v 0.000000 1.500000 -5.687500 +v 0.250000 1.433012 -5.687500 +v 0.433013 1.250000 -5.687500 +v 0.500000 1.000000 -5.687500 +v 0.433013 0.750000 -5.687500 +v 0.250000 0.566987 -5.687500 +v 0.000000 0.500000 -5.687500 +v -0.250000 0.566987 -5.687500 +v -0.433012 0.750000 -5.687500 +v -0.500000 1.000000 -5.687500 +v -0.433013 1.250000 -5.687500 +v -0.250000 1.433012 -5.687500 +v 0.062500 1.687500 -6.062500 +v -0.062500 1.687500 -6.062500 +v 0.062500 1.687500 -5.562500 +v -0.062500 1.687500 -5.562500 +v 0.062500 1.437500 -5.062500 +v -0.062500 1.437500 -5.062500 +v 0.062500 1.437500 -6.062500 +v -0.062500 1.437500 -6.062500 +v -0.564143 1.397877 -6.062500 +v -0.626643 1.289623 -6.062500 +v -0.564143 1.397877 -5.562500 +v -0.626643 1.289623 -5.562500 +v -0.347636 1.272877 -5.062500 +v -0.410136 1.164623 -5.062500 +v -0.347636 1.272877 -6.062500 +v -0.410136 1.164623 -6.062500 +v -0.289623 1.626642 -6.062500 +v -0.397877 1.564142 -6.062500 +v -0.289623 1.626642 -5.562500 +v -0.397877 1.564142 -5.562500 +v -0.164623 1.410136 -5.062500 +v -0.272877 1.347636 -5.062500 +v -0.164623 1.410136 -6.062500 +v -0.272877 1.347636 -6.062500 +v 0.397877 1.564142 -6.062500 +v 0.289623 1.626642 -6.062500 +v 0.397877 1.564142 -5.562500 +v 0.289623 1.626642 -5.562500 +v 0.272877 1.347636 -5.062500 +v 0.164624 1.410136 -5.062500 +v 0.272877 1.347636 -6.062500 +v 0.164623 1.410136 -6.062500 +v 0.626643 1.289623 -6.062500 +v 0.564143 1.397877 -6.062500 +v 0.626643 1.289623 -5.562500 +v 0.564143 1.397877 -5.562500 +v 0.410136 1.164623 -5.062500 +v 0.347636 1.272877 -5.062500 +v 0.410136 1.164623 -6.062500 +v 0.347636 1.272877 -6.062500 +v -0.750000 0.750000 -1.437500 +v -0.750000 1.000000 -1.437500 +v 0.750000 0.750000 -5.562500 +v -0.750000 0.750000 -5.562500 +v 0.750000 1.000000 -5.562500 +v -0.750000 1.000000 -5.562500 +v -0.625000 1.000000 -1.437500 +v -0.500000 0.750000 -5.562500 +v -0.625000 1.000000 -5.562500 +v 0.625000 1.000000 -5.562500 +v 0.500000 0.750000 -5.562500 v 0.750000 0.625000 0.937500 v 0.661612 0.588388 0.937500 v 0.625000 0.500000 0.937500 @@ -985,169 +2632,6 @@ v -0.433012 0.750000 0.687500 v -0.500000 1.000000 0.687500 v -0.433013 1.250000 0.687500 v -0.250000 1.433012 0.687500 -v -0.245813 0.636739 1.812500 -v -0.206190 0.830369 1.687500 -v -0.245813 0.636739 3.562500 -v -0.206190 0.830369 3.687500 -v -0.191687 0.605489 1.812500 -v -0.043810 0.736619 1.687500 -v -0.191687 0.605489 3.562500 -v -0.043810 0.736619 3.687500 -v 0.437500 0.968750 1.812500 -v 0.250000 0.906250 1.687500 -v 0.437500 0.968750 3.562500 -v 0.250000 0.906250 3.687500 -v 0.437500 1.031250 1.812500 -v 0.250000 1.093750 1.687500 -v 0.437500 1.031250 3.562500 -v 0.250000 1.093750 3.687500 -v -0.437500 1.031250 1.812500 -v -0.250000 1.093750 1.687500 -v -0.437500 1.031250 3.562500 -v -0.250000 1.093750 3.687500 -v -0.437500 0.968750 1.812500 -v -0.250000 0.906250 1.687500 -v -0.437500 0.968750 3.562500 -v -0.250000 0.906250 3.687500 -v 0.191687 0.605489 1.812500 -v 0.043810 0.736619 1.687500 -v 0.191687 0.605489 3.562500 -v 0.043810 0.736619 3.687500 -v 0.245813 0.636739 1.812500 -v 0.206190 0.830369 1.687500 -v 0.245813 0.636739 3.562500 -v 0.206190 0.830369 3.687500 -v -0.191687 1.394511 1.812500 -v -0.043810 1.263381 1.687500 -v -0.191687 1.394511 3.562500 -v -0.043810 1.263381 3.687500 -v -0.245813 1.363261 1.812500 -v -0.206190 1.169631 1.687500 -v -0.245813 1.363261 3.562500 -v -0.206190 1.169631 3.687500 -vt 0.237557 0.222222 -vt 0.235294 0.246914 -vt 0.235294 0.222222 -vt 0.472851 0.049383 -vt 0.475113 0.024691 -vt 0.475113 0.049383 -vt 0.237557 0.246914 -vt 0.235294 0.271605 -vt 0.237557 0.296296 -vt 0.237557 0.271605 -vt 0.237557 0.000000 -vt 0.235294 0.024691 -vt 0.235294 0.000000 -vt 0.237557 0.024691 -vt 0.235294 0.049383 -vt 0.237557 0.049383 -vt 0.235294 0.074074 -vt 0.237557 0.172840 -vt 0.235294 0.148148 -vt 0.237557 0.148148 -vt 0.237557 0.123457 -vt 0.235294 0.123457 -vt 0.237557 0.074074 -vt 0.235294 0.098765 -vt 0.235294 0.197531 -vt 0.235294 0.172840 -vt 0.237557 0.098765 -vt 0.237557 0.197531 -vt 0.472851 0.074074 -vt 0.475113 0.074074 -vt 0.472851 0.098765 -vt 0.475113 0.098765 -vt 0.472851 0.123457 -vt 0.475113 0.123457 -vt 0.472851 0.148148 -vt 0.475113 0.148148 -vt 0.475113 0.172840 -vt 0.472851 0.172840 -vt 0.475113 0.197531 -vt 0.472851 0.197531 -vt 0.475113 0.222222 -vt 0.472851 0.222222 -vt 0.475113 0.246914 -vt 0.472851 0.246914 -vt 0.475113 0.271605 -vt 0.472851 0.271605 -vt 0.475113 0.296296 -vt 0.472851 0.296296 -vt 0.472851 0.024691 -vt 0.475113 0.000000 -vt 0.185520 0.419753 -vt 0.180995 0.388889 -vt 0.185520 0.388889 -vt 0.180995 0.450617 -vt 0.185520 0.450617 -vt 0.185520 0.481481 -vt 0.180995 0.481481 -vt 0.185520 0.512346 -vt 0.180995 0.512346 -vt 0.185520 0.543210 -vt 0.180995 0.543210 -vt 0.180995 0.574074 -vt 0.185520 0.574074 -vt 0.158371 0.419753 -vt 0.162896 0.388889 -vt 0.162896 0.419753 -vt 0.162896 0.450617 -vt 0.158371 0.481481 -vt 0.162896 0.481481 -vt 0.158371 0.512346 -vt 0.162896 0.512346 -vt 0.158371 0.543210 -vt 0.162896 0.543210 -vt 0.162896 0.574074 -vt 0.158371 0.574074 -vt 0.009050 0.450617 -vt 0.013575 0.419753 -vt 0.013575 0.450617 -vt 0.009050 0.388889 -vt 0.013575 0.388889 -vt 0.013575 0.481481 -vt 0.009050 0.481481 -vt 0.013575 0.512346 -vt 0.013575 0.543210 -vt 0.009050 0.512346 -vt 0.009050 0.574074 -vt 0.013575 0.574074 -vt 0.004525 0.450617 -vt -0.000000 0.419753 -vt 0.004525 0.419753 -vt 0.004525 0.388889 -vt 0.000000 0.481481 -vt 0.004525 0.481481 -vt -0.000000 0.512346 -vt 0.004525 0.512346 -vt 0.000000 0.543210 -vt 0.004525 0.543210 -vt 0.004525 0.574074 -vt 0.000000 0.574074 -vt 0.162896 0.586420 -vt 0.162896 0.376543 -vt 0.185520 0.635802 -vt 0.180995 0.604938 -vt 0.185520 0.604938 -vt 0.180995 0.666667 -vt 0.185520 0.666667 -vt 0.185520 0.327161 -vt 0.180995 0.296296 -vt 0.185520 0.296296 -vt 0.180995 0.358025 -vt 0.180995 0.327161 -vt 0.185520 0.358025 -vt 0.004525 0.358025 -vt -0.000000 0.327161 -vt 0.004525 0.327161 -vt 0.004525 0.296296 -vt 0.004525 0.666667 -vt -0.000000 0.635802 -vt 0.004525 0.635802 -vt 0.004525 0.604938 -vt -0.000000 0.604938 -vt 0.000000 0.358025 -vt 0.000000 0.388889 vt 0.744344 0.246914 vt 0.742081 0.271605 vt 0.742081 0.246914 @@ -1226,107 +2710,6 @@ vt 0.402715 0.666667 vt 0.402715 0.814815 vt 0.502262 0.827160 vt 0.502262 0.814815 -vt 0.212670 0.617284 -vt 0.384615 0.604938 -vt 0.384615 0.617284 -vt 0.296380 0.358025 -vt 0.248869 0.388889 -vt 0.248869 0.358025 -vt 0.248869 0.413580 -vt 0.296380 0.388889 -vt 0.296380 0.413580 -vt 0.384615 0.382716 -vt 0.389140 0.456790 -vt 0.384615 0.530864 -vt 0.332579 0.382716 -vt 0.332579 0.530864 -vt 0.248869 0.333333 -vt 0.305430 0.358025 -vt 0.305430 0.388889 -vt 0.380091 0.580247 -vt 0.380091 0.549383 -vt 0.239819 0.388889 -vt 0.106335 0.512346 -vt 0.124434 0.537037 -vt 0.106335 0.537037 -vt 0.124434 0.388889 -vt 0.128959 0.537037 -vt 0.138009 0.388889 -vt 0.142534 0.537037 -vt 0.138009 0.537037 -vt 0.314480 0.530864 -vt 0.319005 0.518519 -vt 0.332579 0.549383 -vt 0.128959 0.388889 -vt 0.212670 0.530864 -vt 0.239819 0.580247 -vt 0.212670 0.604938 -vt 0.040724 0.450617 -vt 0.031674 0.438272 -vt 0.040724 0.438272 -vt 0.384615 0.308642 -vt 0.212670 0.296296 -vt 0.384615 0.296296 -vt 0.296380 0.388889 -vt 0.248869 0.358025 -vt 0.296380 0.358025 -vt 0.248869 0.388889 -vt 0.296380 0.413580 -vt 0.248869 0.413580 -vt 0.296380 0.333333 -vt 0.239819 0.358025 -vt 0.239819 0.388889 -vt 0.380091 0.333333 -vt 0.380091 0.364198 -vt 0.305430 0.388889 -vt 0.319005 0.395062 -vt 0.314480 0.382716 -vt 0.332579 0.364198 -vt 0.239819 0.382716 -vt 0.212670 0.382716 -vt 0.058824 0.450617 -vt 0.411765 0.530864 -vt 0.400452 0.512346 -vt 0.058824 0.438272 -vt 0.076923 0.450617 -vt 0.400452 0.401235 -vt 0.411765 0.382716 -vt 0.040724 0.475309 -vt 0.040724 0.413580 -vt 0.040724 0.450617 -vt 0.031674 0.438272 -vt 0.040724 0.438272 -vt 0.058824 0.450617 -vt 0.058824 0.438272 -vt 0.076923 0.450617 -vt 0.040724 0.475309 -vt 0.040724 0.413580 -vt 0.040724 0.450617 -vt 0.031674 0.438272 -vt 0.040724 0.438272 -vt 0.058824 0.450617 -vt 0.058824 0.438272 -vt 0.076923 0.450617 -vt 0.040724 0.475309 -vt 0.040724 0.413580 -vt 0.040724 0.438272 -vt 0.031674 0.450617 -vt 0.031674 0.438272 -vt 0.058824 0.450617 -vt 0.040724 0.450617 -vt 0.058824 0.438272 -vt 0.076923 0.450617 -vt 0.040724 0.475309 -vt 0.040724 0.413580 -vt 0.040724 0.450617 -vt 0.031674 0.438272 -vt 0.040724 0.438272 -vt 0.058824 0.450617 -vt 0.076923 0.438272 -vt 0.076923 0.450617 -vt 0.040724 0.475309 -vt 0.040724 0.413580 -vt 0.058824 0.438272 vt 0.961538 0.086420 vt 0.997738 0.234568 vt 0.961538 0.234568 @@ -1379,30 +2762,6 @@ vt 0.683258 0.543210 vt 0.683258 0.469136 vt 1.000000 0.469136 vt 0.904977 0.543210 -vt 0.203620 0.481481 -vt 0.203620 0.432099 -vt 0.031674 0.537037 -vt 0.031674 0.512346 -vt 0.031674 0.388889 -vt 0.106335 0.413580 -vt 0.031674 0.413580 -vt 0.194570 0.506173 -vt 0.185520 0.530864 -vt 0.185520 0.382716 -vt 0.194570 0.407407 -vt 0.314480 0.580247 -vt 0.332579 0.580247 -vt 0.332579 0.333333 -vt 0.314480 0.333333 -vt 0.013575 0.388889 -vt 0.108597 0.740741 -vt 0.027149 0.790123 -vt 0.027149 0.740741 -vt 0.108597 0.864198 -vt 0.108597 0.790123 -vt 0.027149 0.666667 -vt 0.126697 0.740741 -vt 0.009050 0.740741 vt 0.040724 0.438272 vt 0.058824 0.450617 vt 0.040724 0.450617 @@ -1438,20 +2797,6 @@ vt 0.058824 0.438272 vt 0.076923 0.450617 vt 0.040724 0.475309 vt 0.040724 0.413580 -vt 0.374030 0.768550 -vt 0.374030 0.799351 -vt 0.354477 0.799351 -vt 0.816742 0.734568 -vt 0.748869 0.716049 -vt 0.821267 0.716049 -vt 0.753394 0.734568 -vt 0.816742 0.740741 -vt 0.753394 0.740741 -vt 0.821267 0.759259 -vt 0.746606 0.728395 -vt 0.746606 0.740741 -vt 0.823529 0.740741 -vt 0.823529 0.728395 vt 0.502262 0.395062 vt 0.497738 0.419753 vt 0.493213 0.395062 @@ -1463,35 +2808,6 @@ vt 0.488688 0.419753 vt 0.484163 0.419753 vt 0.656109 0.518519 vt 0.552036 0.370370 -vt 0.678895 0.588520 -vt 0.674532 0.567901 -vt 0.687621 0.547283 -vt 0.687621 0.596665 -vt 0.687621 0.637903 -vt 0.674532 0.617284 -vt 0.934389 0.623457 -vt 0.843891 0.629630 -vt 0.843891 0.623457 -vt 0.843891 0.549383 -vt 0.934389 0.543210 -vt 0.934389 0.549383 -vt 0.843891 0.567901 -vt 0.841629 0.549383 -vt 0.841629 0.586420 -vt 0.841629 0.567901 -vt 0.843891 0.586420 -vt 0.841629 0.604938 -vt 0.843891 0.604938 -vt 0.936652 0.604938 -vt 0.934389 0.604938 -vt 0.936652 0.586420 -vt 0.934389 0.586420 -vt 0.936652 0.567901 -vt 0.934389 0.567901 -vt 0.936652 0.549383 -vt 0.846154 0.629542 -vt 0.849376 0.633184 -vt 0.842932 0.650765 vt 0.239819 0.469136 vt 0.248869 0.438272 vt 0.280543 0.438272 @@ -1588,80 +2904,8 @@ vt 0.841629 0.320988 vt 0.886878 0.296296 vt 0.841629 0.296296 vt 0.886878 0.345679 -vt 0.013575 0.537037 -vt 0.022624 0.438272 -vt 0.106335 0.388889 -vt 0.239819 0.333333 -vt 0.212670 0.308642 -vt 0.115385 0.487654 -vt 0.816742 0.734568 -vt 0.748869 0.716049 -vt 0.821267 0.716049 -vt 0.753394 0.734568 -vt 0.816742 0.740741 -vt 0.753394 0.740741 -vt 0.821267 0.759259 -vt 0.746606 0.728395 -vt 0.746606 0.740741 -vt 0.823529 0.728395 -vt 0.816742 0.734568 -vt 0.748869 0.716049 -vt 0.821267 0.716049 -vt 0.753394 0.734568 -vt 0.816742 0.740741 -vt 0.753394 0.740741 -vt 0.821267 0.759259 -vt 0.746606 0.728395 -vt 0.746606 0.740741 -vt 0.823529 0.740741 -vt 0.823529 0.728395 -vt 0.816742 0.734568 -vt 0.748869 0.716049 -vt 0.821267 0.716049 -vt 0.753394 0.734568 -vt 0.816742 0.740741 -vt 0.753394 0.740741 -vt 0.821267 0.759259 -vt 0.746606 0.728395 -vt 0.746606 0.740741 -vt 0.823529 0.740741 -vt 0.823529 0.728395 -vt 0.821267 0.716049 -vt 0.753394 0.734568 -vt 0.748869 0.716049 -vt 0.816742 0.740741 -vt 0.753394 0.740741 -vt 0.821267 0.759259 -vt 0.746606 0.728395 -vt 0.746606 0.740741 -vt 0.823529 0.740741 -vt 0.816742 0.734568 -vt 0.823529 0.728395 -vt 0.816742 0.734568 -vt 0.748869 0.716049 -vt 0.821267 0.716049 -vt 0.753394 0.734568 -vt 0.816742 0.740741 -vt 0.753394 0.740741 -vt 0.821267 0.759259 -vt 0.746606 0.728395 -vt 0.746606 0.740741 -vt 0.823529 0.728395 vt 0.561086 0.672840 vt 0.647059 0.672840 -vt 0.235294 0.296296 -vt 0.472851 0.000000 -vt 0.180995 0.419753 -vt 0.158371 0.388889 -vt 0.158371 0.450617 -vt 0.009050 0.419753 -vt 0.009050 0.543210 -vt 0.000000 0.450617 -vt 0.009050 0.586420 -vt 0.009050 0.376543 -vt 0.180995 0.635802 -vt -0.000000 0.296296 -vt 0.000000 0.666667 vt 0.744344 0.296296 vt 0.511312 -0.000000 vt 0.511312 0.370370 @@ -1670,36 +2914,6 @@ vt 0.398190 0.888889 vt 0.402715 0.617284 vt 0.402715 0.654321 vt 0.402715 0.827160 -vt 0.391403 0.425926 -vt 0.391403 0.487654 -vt 0.296380 0.333333 -vt 0.239819 0.358025 -vt 0.142534 0.388889 -vt 0.328054 0.518519 -vt 0.239819 0.530864 -vt 0.031674 0.450617 -vt 0.248869 0.333333 -vt 0.305430 0.358025 -vt 0.328054 0.395062 -vt 0.411765 0.518519 -vt 0.076923 0.438272 -vt 0.411765 0.395062 -vt 0.076923 0.475309 -vt 0.076923 0.413580 -vt 0.031674 0.450617 -vt 0.076923 0.438272 -vt 0.076923 0.475309 -vt 0.076923 0.413580 -vt 0.031674 0.450617 -vt 0.076923 0.438272 -vt 0.076923 0.475309 -vt 0.076923 0.413580 -vt 0.076923 0.438272 -vt 0.076923 0.475309 -vt 0.076923 0.413580 -vt 0.031674 0.450617 -vt 0.076923 0.475309 -vt 0.076923 0.413580 vt 0.997738 0.283951 vt 0.997738 0.037037 vt 0.954751 0.191358 @@ -1729,16 +2943,6 @@ vt 0.678571 0.341606 vt 0.669845 0.341606 vt 1.000000 0.987654 vt 1.000000 0.543210 -vt 0.185520 0.518519 -vt 0.185520 0.395062 -vt 0.027149 0.864198 -vt 0.108597 0.666667 -vt 0.126697 0.790123 -vt 0.135747 0.814815 -vt 0.135747 0.716049 -vt 0.000000 0.814815 -vt 0.009050 0.790123 -vt 0.000000 0.716049 vt 0.076923 0.438272 vt 0.076923 0.475309 vt 0.076923 0.413580 @@ -1754,44 +2958,7 @@ vt 0.076923 0.413580 vt 0.076923 0.438272 vt 0.076923 0.475309 vt 0.076923 0.413580 -vt 0.369898 0.810626 -vt 0.364253 0.814752 -vt 0.358609 0.810626 -vt 0.352964 0.783951 -vt 0.354477 0.768550 -vt 0.358609 0.757276 -vt 0.364253 0.753149 -vt 0.369898 0.757276 -vt 0.375543 0.783951 -vt 0.748869 0.759259 vt 0.493213 0.395062 -vt 0.690815 0.555997 -vt 0.691984 0.567902 -vt 0.690815 0.579806 -vt 0.687621 0.588520 -vt 0.683258 0.591710 -vt 0.675701 0.579806 -vt 0.675701 0.555997 -vt 0.678895 0.547283 -vt 0.683258 0.544093 -vt 0.675701 0.605380 -vt 0.678895 0.596665 -vt 0.683258 0.593476 -vt 0.690815 0.605380 -vt 0.691984 0.617284 -vt 0.690815 0.629188 -vt 0.683258 0.641092 -vt 0.678895 0.637903 -vt 0.675701 0.629188 -vt 0.934389 0.629630 -vt 0.843891 0.543210 -vt 0.841629 0.623457 -vt 0.936652 0.623457 -vt 0.850710 0.641974 -vt 0.849376 0.650765 -vt 0.846154 0.654407 -vt 0.841597 0.641974 -vt 0.842932 0.633184 vt 0.239819 0.438272 vt 0.289593 0.438272 vt 0.997738 0.253086 @@ -1819,27 +2986,6 @@ vt 0.651584 0.734568 vt 0.520362 0.722222 vt 0.556561 0.672840 vt 0.886878 0.395062 -vt 0.022624 0.487654 -vt 0.115385 0.438272 -vt 0.748869 0.759259 -vt 0.823529 0.740741 -vt 0.748869 0.759259 -vt 0.748869 0.759259 -vt 0.748869 0.759259 -vt 0.748869 0.759259 -vt 0.823529 0.740741 -vt 0.000000 0.000000 -vt 0.000000 0.074074 -vt -0.000000 0.197531 -vt 0.000000 0.271605 -vt 0.000000 0.049383 -vt 0.000000 0.172840 -vt -0.000000 0.123457 -vt 0.000000 0.246914 -vt 0.000000 0.024691 -vt 0.000000 0.148148 -vt -0.000000 0.098765 -vt 0.000000 0.222222 vt 0.552036 0.024691 vt 0.552036 0.148148 vt 0.934389 0.296296 @@ -1981,229 +3127,6 @@ vt 0.909502 0.296296 vt 0.886878 0.333333 vt 0.909502 0.296296 vt 0.886878 0.333333 -vt 0.352941 0.888889 -vt 0.180995 0.876543 -vt 0.352941 0.876543 -vt 0.352941 0.827160 -vt 0.180995 0.814815 -vt 0.352941 0.814815 -vt 0.352941 0.851852 -vt 0.180995 0.839506 -vt 0.352941 0.839506 -vt 0.352941 0.790123 -vt 0.180995 0.777778 -vt 0.352941 0.777778 -vt 0.352941 0.901235 -vt 0.180995 0.888889 -vt 0.352941 0.864198 -vt 0.180995 0.851852 -vt 0.352941 0.802469 -vt 0.180995 0.790123 -vt 0.352941 0.765432 -vt 0.180995 0.753086 -vt 0.352941 0.753086 -vt 0.180995 0.864198 -vt 0.180995 0.802469 -vt 0.180995 0.827160 -vt 0.180995 0.765432 -vt 0.158371 0.790123 -vt 0.158371 0.753086 -vt 0.158371 0.864198 -vt 0.158371 0.814815 -vt 0.158371 0.802469 -vt 0.158371 0.827160 -vt 0.158371 0.765432 -vt 0.158371 0.888889 -vt 0.158371 0.876543 -vt 0.158371 0.839506 -vt 0.158371 0.777778 -vt 0.158371 0.901235 -vt 0.158371 0.851852 -vt 0.135747 0.845679 -vt 0.135747 0.858025 -vt 0.135747 0.870370 -vt 0.135747 0.882716 -vt 0.135747 0.895062 -vt 0.135747 0.759259 -vt 0.135747 0.771605 -vt 0.135747 0.783951 -vt 0.135747 0.796296 -vt 0.135747 0.808642 -vt 0.135747 0.820988 -vt 0.135747 0.833333 -vt 0.746606 0.592593 -vt 0.692308 0.580247 -vt 0.746606 0.580247 -vt 0.746606 0.555556 -vt 0.692308 0.543210 -vt 0.746606 0.543210 -vt 0.746606 0.641975 -vt 0.692308 0.629630 -vt 0.746606 0.629630 -vt 0.746606 0.666667 -vt 0.692308 0.654321 -vt 0.746606 0.654321 -vt 0.746606 0.604938 -vt 0.692308 0.592593 -vt 0.746606 0.567901 -vt 0.692308 0.555556 -vt 0.692308 0.641975 -vt 0.746606 0.679012 -vt 0.692308 0.666667 -vt 0.746606 0.617284 -vt 0.692308 0.604938 -vt 0.692308 0.567901 -vt 0.746606 0.691358 -vt 0.692308 0.679012 -vt 0.692308 0.617284 -vt 0.692308 0.648148 -vt 0.671946 0.654321 -vt 0.671946 0.648148 -vt 0.692308 0.691358 -vt 0.671946 0.697531 -vt 0.671946 0.691358 -vt 0.692308 0.703704 -vt 0.671946 0.709877 -vt 0.671946 0.703704 -vt 0.692308 0.672840 -vt 0.671946 0.679012 -vt 0.671946 0.672840 -vt 0.692308 0.654321 -vt 0.671946 0.660494 -vt 0.692308 0.709877 -vt 0.671946 0.716049 -vt 0.692308 0.679012 -vt 0.671946 0.685185 -vt 0.692308 0.660494 -vt 0.671946 0.666667 -vt 0.692308 0.641975 -vt 0.671946 0.641975 -vt 0.692308 0.685185 -vt 0.692308 0.697531 -vt 0.692308 0.666667 -vt 0.886878 0.672840 -vt 0.923077 0.666667 -vt 0.923077 0.672840 -vt 0.843891 0.567901 -vt 0.934389 0.586420 -vt 0.934389 0.567901 -vt 0.843891 0.604938 -vt 0.934389 0.623457 -vt 0.934389 0.604938 -vt 0.843891 0.549383 -vt 0.934389 0.549383 -vt 0.850679 0.666667 -vt 0.886878 0.666667 -vt 0.886878 0.641975 -vt 0.850655 0.648888 -vt 0.850679 0.641975 -vt 0.886878 0.629630 -vt 0.850679 0.635802 -vt 0.850679 0.629630 -vt 0.850679 0.660494 -vt 0.886878 0.660494 -vt 0.886878 0.679012 -vt 0.850679 0.672840 -vt 0.886878 0.648148 -vt 0.850679 0.654321 -vt 0.886878 0.635802 -vt 0.886878 0.654321 -vt 0.923077 0.648148 -vt 0.923077 0.635802 -vt 0.923077 0.660494 -vt 0.923077 0.679012 -vt 0.923077 0.654321 -vt 0.923077 0.641975 -vt 0.954751 0.604938 -vt 0.952489 0.623457 -vt 0.952489 0.598765 -vt 0.947964 0.592593 -vt 0.945701 0.629630 -vt 0.945701 0.592593 -vt 0.943439 0.592593 -vt 0.941176 0.623457 -vt 0.941176 0.598765 -vt 0.938914 0.598765 -vt 0.936652 0.617284 -vt 0.936652 0.604938 -vt 0.950226 0.598765 -vt 0.950226 0.623457 -vt 0.947964 0.629630 -vt 0.943439 0.629630 -vt 0.938914 0.623457 -vt 0.952489 0.592593 -vt 0.954751 0.543210 -vt 0.954751 0.592593 -vt 0.947964 0.543210 -vt 0.941176 0.592593 -vt 0.943439 0.543210 -vt 0.936652 0.592593 -vt 0.938914 0.543210 -vt 0.938914 0.592593 -vt 0.950226 0.592593 -vt 0.952489 0.543210 -vt 0.950226 0.543210 -vt 0.945701 0.543210 -vt 0.941176 0.543210 -vt 0.941176 0.648148 -vt 0.941176 0.629630 -vt 0.938914 0.629630 -vt 0.936652 0.648148 -vt 0.936652 0.629630 -vt 0.952489 0.629630 -vt 0.950226 0.648148 -vt 0.950226 0.629630 -vt 0.947964 0.648148 -vt 0.943439 0.648148 -vt 0.938914 0.648148 -vt 0.954751 0.629630 -vt 0.952489 0.648148 -vt 0.945701 0.648148 -vt 0.952489 0.598765 -vt 0.954751 0.617284 -vt 0.952489 0.623457 -vt 0.945701 0.592593 -vt 0.947964 0.629630 -vt 0.945701 0.629630 -vt 0.943439 0.592593 -vt 0.941176 0.623457 -vt 0.941176 0.598765 -vt 0.936652 0.604938 -vt 0.938914 0.623457 -vt 0.936652 0.617284 -vt 0.950226 0.598765 -vt 0.950226 0.623457 -vt 0.947964 0.592593 -vt 0.943439 0.629630 -vt 0.938914 0.598765 -vt 0.952489 0.592593 -vt 0.954751 0.543210 -vt 0.954751 0.592593 -vt 0.947964 0.543210 -vt 0.941176 0.592593 -vt 0.943439 0.543210 -vt 0.936652 0.592593 -vt 0.938914 0.543210 -vt 0.938914 0.592593 -vt 0.950226 0.592593 -vt 0.952489 0.543210 -vt 0.950226 0.543210 -vt 0.945701 0.543210 -vt 0.941176 0.543210 -vt 0.941176 0.648148 -vt 0.941176 0.629630 -vt 0.938914 0.629630 -vt 0.936652 0.648148 -vt 0.936652 0.629630 -vt 0.952489 0.629630 -vt 0.950226 0.648148 -vt 0.950226 0.629630 -vt 0.947964 0.648148 -vt 0.943439 0.648148 -vt 0.938914 0.648148 -vt 0.954751 0.629630 -vt 0.952489 0.648148 -vt 0.945701 0.648148 vt 0.484163 0.950617 vt 0.606335 0.962963 vt 0.484163 0.962963 @@ -2495,7 +3418,6 @@ vt 0.357466 0.987654 vt 0.357466 0.962963 vt 0.380091 0.975309 vt 0.361991 0.962963 -vt -0.000000 0.296296 vt 0.934389 0.000000 vt 0.552036 0.296296 vt 0.552036 0.000000 @@ -2518,19 +3440,6 @@ vt 0.886878 0.308642 vt 0.886878 0.308642 vt 0.886878 0.308642 vt 0.886878 0.308642 -vt 0.180995 0.901235 -vt 0.692308 0.691358 -vt 0.692308 0.716049 -vt 0.843891 0.586420 -vt 0.843891 0.623457 -vt 0.850679 0.679012 -vt 0.923077 0.629630 -vt 0.954751 0.617284 -vt 0.936652 0.543210 -vt 0.954751 0.648148 -vt 0.954751 0.604938 -vt 0.936652 0.543210 -vt 0.954751 0.648148 vt 0.613122 0.901235 vt 0.002262 0.901235 vt 0.013575 0.901235 @@ -2544,63 +3453,29 @@ vt 0.289593 0.901235 vt 0.361991 1.000000 vt 0.350679 0.901235 vt 0.361991 0.975309 -vn 0.0000 0.0000 1.0000 vn 0.0000 0.0000 -1.0000 +vn -0.0000 0.0000 1.0000 vn -0.0000 1.0000 0.0000 -vn 1.0000 0.0000 0.0000 vn 0.0000 -1.0000 0.0000 -vn 0.0000 -0.7071 0.7071 -vn 0.0000 -0.7071 -0.7071 +vn 1.0000 0.0000 0.0000 vn -1.0000 0.0000 0.0000 -vn 0.0000 0.8944 -0.4472 -vn 0.8660 0.5000 0.0000 -vn 0.7746 0.4472 -0.4472 -vn -0.5000 0.8660 0.0000 -vn 0.5000 -0.8660 0.0000 -vn 0.5000 0.8660 0.0000 -vn 0.4472 0.7746 -0.4472 -vn -0.8660 0.5000 0.0000 -vn 0.8660 -0.5000 0.0000 -vn -0.4472 0.7746 -0.4472 -vn -0.8660 -0.5000 0.0000 -vn -0.7746 0.4472 -0.4472 -vn -0.5000 -0.8660 0.0000 -vn 0.9487 -0.3162 0.0000 -vn -0.9487 -0.3162 0.0000 vn 0.0000 0.8944 0.4472 +vn -0.8660 0.5000 0.0000 vn -0.7746 0.4472 0.4472 +vn 0.5000 0.8660 0.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.5000 0.8660 0.0000 vn -0.4472 0.7746 0.4472 +vn 0.8660 0.5000 0.0000 +vn -0.8660 -0.5000 0.0000 vn 0.4472 0.7746 0.4472 +vn 0.8660 -0.5000 0.0000 vn 0.7746 0.4472 0.4472 -vn 0.9797 -0.2005 0.0000 -vn -0.6635 0.7482 0.0000 -vn 0.2773 0.4804 0.8321 -vn 0.2773 0.4804 -0.8321 -vn -0.9797 0.2005 0.0000 -vn 0.6635 -0.7482 0.0000 -vn -0.2773 -0.4804 0.8321 -vn -0.2773 -0.4804 -0.8321 -vn 0.3162 -0.9487 0.0000 -vn 0.3162 0.9487 0.0000 -vn 0.5547 0.0000 0.8320 -vn 0.5547 0.0000 -0.8321 -vn -0.3162 0.9487 0.0000 -vn -0.3162 -0.9487 0.0000 -vn -0.5547 0.0000 0.8320 -vn -0.5547 0.0000 -0.8321 -vn -0.6635 -0.7482 0.0000 -vn 0.9797 0.2005 0.0000 -vn 0.2773 -0.4804 0.8321 -vn 0.2773 -0.4804 -0.8321 -vn 0.6635 0.7482 0.0000 -vn -0.9797 -0.2005 0.0000 -vn -0.2773 0.4804 0.8321 -vn -0.2773 0.4804 -0.8321 -vn 0.5547 0.0000 0.8321 -vn -0.5547 0.0000 0.8321 +vn 0.5000 -0.8660 0.0000 +vn 0.0000 -0.7071 0.7071 vn -0.9960 -0.0890 0.0000 -vn 0.9960 -0.0890 0.0000 vn 0.9659 -0.2588 0.0000 +vn 0.9960 -0.0890 0.0000 vn 0.0000 -0.5000 -0.8660 vn -0.0000 -0.8660 -0.5000 vn -0.0000 -0.8660 0.5000 @@ -2633,86 +3508,6 @@ vn -0.0000 -0.8662 0.4997 vn 0.4331 -0.7501 0.4997 vn 0.7501 -0.4331 0.4997 vn 0.8662 -0.0000 0.4997 -vn -0.8656 -0.4998 0.0310 -vn 0.4998 0.8656 0.0310 -vn -0.4998 0.8656 0.0310 -vn 0.8656 -0.4998 0.0310 -vn -0.4998 -0.8656 0.0310 -vn -0.8656 0.4998 0.0310 -vn 0.9995 0.0000 0.0310 -vn -0.0000 -0.9995 0.0310 -vn -0.9995 -0.0000 0.0310 -vn 0.8656 0.4998 0.0310 -vn -0.0000 0.9995 0.0310 -vn 0.4998 -0.8656 0.0310 -vn 0.9735 0.0000 0.2289 -vn -0.0000 -0.9735 0.2289 -vn -0.9735 -0.0000 0.2289 -vn 0.4867 0.8430 0.2289 -vn 0.8430 0.4867 0.2289 -vn 0.0000 0.9735 0.2289 -vn 0.4867 -0.8430 0.2289 -vn -0.4867 -0.8430 0.2289 -vn -0.8430 -0.4867 0.2289 -vn -0.4867 0.8430 0.2289 -vn 0.8430 -0.4867 0.2289 -vn -0.8430 0.4867 0.2289 -vn -0.5079 -0.5470 0.6654 -vn -0.5119 -0.8570 0.0595 -vn -0.4901 -0.4877 0.7224 -vn 0.3536 0.6124 0.7071 -vn 0.4619 0.8001 0.3827 -vn -0.3536 -0.6124 0.7071 -vn -0.4619 -0.8001 0.3827 -vn 0.3536 0.6124 -0.7071 -vn -0.3536 -0.6124 -0.7071 -vn -0.4619 -0.8001 -0.3827 -vn 0.4619 0.8001 -0.3827 -vn -0.2198 -0.7134 0.6654 -vn -0.4862 -0.8718 0.0595 -vn -0.5119 -0.8570 -0.0595 -vn 0.4862 0.8718 -0.0595 -vn 0.2198 0.7134 -0.6654 -vn 0.5119 0.8570 0.0595 -vn 0.2100 -0.1213 0.9701 -vn 0.4901 0.4877 0.7224 -vn -0.5079 -0.5470 -0.6654 -vn -0.4901 -0.4877 -0.7224 -vn -0.1773 -0.6683 0.7224 -vn 0.1773 0.6683 -0.7224 -vn -0.2100 0.1213 -0.9701 -vn 0.5079 0.5470 0.6654 -vn 0.5119 0.8570 -0.0595 -vn 0.5079 0.5470 -0.6654 -vn 0.4901 0.4878 -0.7224 -vn -0.2100 0.1213 0.9701 -vn 0.1773 0.6683 0.7224 -vn 0.2198 0.7134 0.6654 -vn -0.4862 -0.8718 -0.0595 -vn -0.2198 -0.7134 -0.6654 -vn 0.2100 -0.1213 -0.9701 -vn 0.4862 0.8718 0.0595 -vn -0.1773 -0.6684 -0.7224 -vn -0.9074 -0.4202 0.0000 -vn -0.2820 -0.6233 -0.7294 -vn -0.6233 -0.2820 -0.7294 -vn 0.7023 0.3032 -0.6441 -vn 0.3532 0.9356 0.0000 -vn 0.9356 0.3532 -0.0000 -vn 0.7023 0.3032 0.6441 -vn 0.0899 0.0899 0.9919 -vn -0.6233 -0.2820 0.7294 -vn -0.4202 -0.9074 -0.0000 -vn 0.0899 0.0899 -0.9919 -vn 0.3032 0.7023 -0.6441 -vn 0.3032 0.7023 0.6441 -vn -0.2820 -0.6233 0.7294 -vn 0.7071 0.0000 -0.7071 -vn 0.7071 0.0000 0.7071 -vn -0.7071 0.0000 0.7071 -vn -0.7071 0.0000 -0.7071 -vn 0.0000 0.7071 -0.7071 -vn 0.0000 0.7071 0.7071 vn 0.9987 0.0473 0.0196 vn 0.6737 0.7263 0.1363 vn 0.6794 0.7194 0.1448 @@ -2734,12 +3529,15 @@ vn -0.0671 0.9955 -0.0671 vn -0.5294 0.6630 -0.5294 vn 0.4617 0.7574 0.4617 vn -0.0671 -0.9955 -0.0671 +vn -0.7071 0.0000 -0.7071 vn 0.4617 -0.7574 0.4617 vn 0.1673 -0.9846 -0.0505 vn 0.2775 -0.7237 0.6318 vn -0.1673 -0.0505 -0.9846 +vn -0.0000 -0.7071 -0.7071 vn -0.2775 0.6318 -0.7237 vn -0.7203 0.6916 -0.0527 +vn -0.0000 0.7071 0.7071 vn 0.5294 -0.5294 0.6630 vn 0.0671 -0.0671 0.9955 vn -0.4617 0.4617 0.7574 @@ -2777,6 +3575,7 @@ vn 0.1448 0.7194 -0.6794 vn -0.1363 -0.6737 0.7263 vn -0.1363 -0.6737 -0.7263 vn -0.1448 -0.6794 -0.7194 +vn 0.7071 -0.0000 0.7071 vn -0.0196 -0.9987 -0.0473 vn 0.1363 0.7263 0.6737 vn -0.1448 0.6794 -0.7194 @@ -2814,6 +3613,7 @@ vn 0.0000 -0.1866 0.9824 vn -0.9987 -0.0196 0.0473 vn -0.7263 0.1363 -0.6737 vn 0.7263 0.1363 -0.6737 +vn 0.0000 0.7071 -0.7071 vn 0.6794 -0.1448 0.7194 vn -0.7263 0.6737 -0.1363 vn -0.6794 -0.7194 0.1448 @@ -2830,1607 +3630,866 @@ vn -0.7574 0.4617 -0.4617 vn 0.7263 0.6737 -0.1363 vn -0.9659 -0.2588 0.0000 s off -f 20/1/1 45/2/1 46/3/1 -f 29/4/2 54/5/2 53/6/2 -f 18/7/1 44/8/1 45/2/1 -f 14/9/1 44/8/1 16/10/1 -f 14/11/1 42/12/1 43/13/1 -f 12/14/1 41/15/1 42/12/1 -f 10/16/1 40/17/1 41/15/1 -f 24/18/1 38/19/1 2/20/1 -f 4/21/1 38/19/1 37/22/1 -f 8/23/1 39/24/1 40/17/1 -f 24/18/1 47/25/1 48/26/1 -f 4/21/1 39/24/1 6/27/1 -f 20/1/1 47/25/1 22/28/1 -f 28/29/2 53/6/2 52/30/2 -f 27/31/2 52/30/2 51/32/2 -f 26/33/2 51/32/2 49/34/2 -f 25/35/2 49/34/2 50/36/2 -f 25/35/2 60/37/2 36/38/2 -f 36/38/2 59/39/2 35/40/2 -f 35/40/2 58/41/2 34/42/2 -f 34/42/2 57/43/2 33/44/2 -f 33/44/2 56/45/2 32/46/2 -f 32/46/2 55/47/2 31/48/2 -f 30/49/2 55/50/2 54/5/2 -f 79/51/2 64/52/2 78/53/2 -f 62/54/2 79/51/2 80/55/2 -f 62/54/2 81/56/2 61/57/2 -f 61/57/2 68/58/2 72/59/2 -f 72/59/2 69/60/2 71/61/2 -f 70/62/2 69/60/2 77/63/2 -f 86/64/1 76/65/1 75/66/1 -f 74/67/1 86/64/1 75/66/1 -f 88/68/1 74/67/1 73/69/1 -f 67/70/1 73/69/1 84/71/1 -f 66/72/1 84/71/1 83/73/1 -f 66/72/1 82/74/1 65/75/1 -f 93/76/2 100/77/2 101/78/2 -f 100/77/2 95/79/2 99/80/2 -f 93/76/2 102/81/2 89/82/2 -f 90/83/2 89/82/2 102/81/2 -f 91/84/2 98/85/2 90/83/2 -f 96/86/2 91/84/2 92/87/2 -f 104/88/1 111/89/1 103/90/1 -f 111/89/1 112/91/1 103/90/1 -f 106/92/1 104/88/1 105/93/1 -f 107/94/1 105/93/1 115/95/1 -f 108/96/1 115/95/1 113/97/1 -f 108/96/1 114/98/1 109/99/1 -f 96/86/3 65/100/3 82/74/3 -f 85/101/3 95/79/3 76/65/3 -f 118/102/2 123/103/2 117/104/2 -f 121/105/2 118/102/2 124/106/2 -f 125/107/2 121/108/2 124/109/2 -f 125/107/2 119/110/2 120/111/2 -f 64/52/2 126/112/2 78/53/2 -f 77/63/2 123/103/2 70/62/2 -f 127/113/1 133/114/1 128/115/1 -f 133/114/1 129/116/1 128/115/1 -f 129/117/1 135/118/1 130/119/1 -f 135/118/1 131/120/1 130/119/1 -f 109/99/1 131/120/1 136/121/1 -f 132/122/1 112/91/1 110/123/1 -f 141/124/2 154/125/2 153/126/2 -f 140/127/2 153/126/2 152/128/2 -f 139/129/2 152/128/2 151/130/2 -f 138/131/2 151/130/2 149/132/2 -f 137/133/2 149/132/2 150/134/2 -f 137/133/2 160/135/2 148/136/2 -f 148/136/2 159/137/2 147/138/2 -f 147/138/2 158/139/2 146/140/2 -f 146/140/2 157/141/2 145/142/2 -f 145/142/2 156/143/2 144/144/2 -f 144/144/2 155/145/2 143/146/2 -f 142/147/2 155/148/2 154/125/2 -f 325/149/1 176/150/1 326/151/1 -f 345/152/1 324/153/1 346/154/1 -f 324/153/1 349/155/1 346/154/1 -f 349/156/1 322/157/1 348/158/1 -f 322/157/1 347/159/1 348/158/1 -f 320/160/1 347/159/1 321/161/1 -f 177/162/1 181/163/1 178/164/1 -f 181/163/1 179/165/1 178/164/1 -f 180/166/1 173/167/1 179/165/1 -f 329/168/1 174/169/1 173/167/1 -f 174/169/1 327/170/1 175/171/1 -f 327/170/1 176/150/1 175/171/1 -f 209/172/2 213/173/2 208/174/2 -f 210/175/2 214/176/2 209/172/2 -f 210/177/2 216/178/2 215/179/2 -f 216/178/2 212/180/2 217/181/2 -f 212/180/2 221/182/2 217/181/2 -f 220/183/2 208/174/2 213/173/2 -f 198/184/2 225/185/2 226/186/2 -f 197/187/2 226/186/2 228/188/2 -f 197/187/2 227/189/2 196/190/2 -f 202/191/2 227/189/2 222/192/2 -f 201/193/2 222/192/2 223/194/2 -f 200/195/2 223/194/2 224/196/2 -f 224/197/3 219/198/3 200/195/3 -f 218/199/3 225/200/3 199/201/3 -f 231/202/3 230/203/3 229/204/3 -f 241/205/4 243/206/4 239/207/4 -f 244/208/5 233/209/5 234/210/5 -f 260/211/2 275/212/2 237/213/2 -f 261/214/5 237/213/5 238/215/5 -f 240/216/3 241/205/3 239/207/3 -f 233/209/1 242/217/1 234/218/1 -f 234/219/4 237/213/4 230/203/4 -f 242/220/4 238/215/4 237/213/4 -f 244/221/2 239/207/2 243/206/2 -f 245/222/1 247/223/1 246/224/1 -f 270/225/6 249/226/6 247/223/6 -f 271/227/7 238/228/7 248/229/7 -f 247/230/4 249/231/4 240/232/4 -f 272/233/5 248/229/5 249/226/5 -f 405/234/4 407/235/4 232/236/4 -f 278/237/1 285/238/1 279/239/1 -f 253/240/3 254/241/3 252/242/3 -f 266/243/8 264/244/8 262/245/8 -f 256/246/5 267/247/5 257/248/5 -f 264/244/3 263/249/3 262/245/3 -f 265/250/1 256/246/1 257/251/1 -f 257/252/8 260/211/8 265/253/8 -f 261/214/8 265/253/8 260/211/8 -f 262/245/2 267/254/2 266/243/2 -f 272/255/8 270/256/8 263/257/8 -f 403/258/5 405/234/5 408/259/5 -f 279/239/3 280/260/3 278/237/3 -f 230/261/2 237/213/2 250/262/2 -f 281/263/9 282/264/9 280/260/9 -f 273/265/2 260/211/2 253/266/2 -f 280/260/8 284/267/8 278/237/8 -f 285/268/4 281/263/4 279/239/4 -f 286/269/1 293/270/1 287/271/1 -f 287/271/10 288/272/10 286/269/10 -f 289/273/11 290/274/11 288/272/11 -f 288/272/12 292/275/12 286/269/12 -f 293/276/13 289/273/13 287/271/13 -f 294/277/1 301/278/1 295/279/1 -f 295/279/14 296/280/14 294/277/14 -f 297/281/15 298/282/15 296/280/15 -f 296/280/16 300/283/16 294/277/16 -f 301/284/17 297/281/17 295/279/17 -f 303/285/1 308/286/1 309/287/1 -f 303/285/12 304/288/12 302/289/12 -f 305/290/18 306/291/18 304/288/18 -f 304/288/19 308/292/19 302/289/19 -f 309/293/10 305/290/10 303/285/10 -f 310/294/1 317/295/1 311/296/1 -f 311/296/16 312/297/16 310/294/16 -f 312/297/20 315/298/20 314/299/20 -f 312/297/21 316/300/21 310/294/21 -f 317/301/14 313/302/14 311/296/14 -f 319/303/5 330/304/5 236/305/5 -f 332/306/4 336/307/4 259/308/4 -f 337/309/8 333/310/8 318/311/8 -f 319/303/1 236/305/1 344/312/1 -f 339/313/1 236/305/1 259/314/1 -f 318/315/1 319/303/1 342/316/1 -f 334/317/5 357/318/5 359/319/5 -f 360/320/3 259/308/3 336/307/3 -f 318/311/3 361/321/3 337/309/3 -f 362/322/5 333/323/5 335/324/5 -f 374/325/4 370/326/4 386/327/4 -f 389/328/5 363/329/5 364/330/5 -f 379/331/8 383/332/8 387/333/8 -f 397/334/5 396/335/5 395/336/5 -f 363/329/1 392/337/1 364/338/1 -f 390/339/4 391/340/4 363/329/4 -f 389/341/2 394/342/2 390/339/2 -f 364/338/8 393/343/8 389/344/8 -f 401/345/3 399/346/3 400/347/3 -f 397/348/2 402/349/2 398/350/2 -f 396/335/1 400/351/1 395/352/1 -f 398/350/4 401/345/4 396/335/4 -f 395/353/8 399/354/8 397/348/8 -f 408/259/1 410/355/1 409/356/1 -f 245/222/5 407/357/5 411/358/5 -f 406/359/5 268/360/5 412/361/5 -f 235/362/1 405/234/1 232/363/1 -f 255/364/1 408/259/1 258/365/1 -f 246/366/4 244/367/4 230/203/4 -f 267/368/8 269/369/8 253/240/8 -f 412/361/2 403/370/2 406/359/2 -f 417/371/5 416/372/5 415/373/5 -f 422/374/22 416/372/22 418/375/22 -f 419/376/23 417/371/23 415/373/23 -f 418/375/2 417/371/2 425/377/2 -f 423/378/1 415/373/1 416/372/1 -f 464/379/3 465/380/3 463/381/3 -f 466/382/24 467/383/24 465/380/24 -f 465/380/4 469/384/4 463/381/4 -f 470/385/8 466/382/8 464/379/8 -f 472/386/16 473/387/16 471/388/16 -f 474/389/25 475/390/25 473/387/25 -f 473/387/14 477/391/14 471/388/14 -f 478/392/21 474/389/21 472/386/21 -f 480/393/12 481/394/12 479/395/12 -f 482/396/26 483/397/26 481/394/26 -f 481/394/10 485/398/10 479/395/10 -f 486/399/19 482/396/19 480/393/19 -f 488/400/14 489/401/14 487/402/14 -f 490/403/27 491/404/27 489/401/27 -f 489/401/17 493/405/17 487/402/17 -f 494/406/16 490/403/16 488/400/16 -f 496/407/10 497/408/10 495/409/10 -f 498/410/28 499/411/28 497/408/28 -f 497/408/13 501/412/13 495/409/13 -f 502/413/12 498/410/12 496/407/12 -f 507/414/2 505/415/2 513/416/2 -f 540/417/29 543/418/29 541/419/29 -f 542/420/14 544/421/14 546/422/14 -f 545/423/30 546/422/30 544/421/30 -f 543/424/31 546/422/31 547/425/31 -f 545/426/32 540/417/32 541/427/32 -f 551/428/2 556/429/2 555/430/2 -f 910/431/8 925/432/8 909/433/8 -f 550/434/2 557/435/2 552/436/2 -f 905/437/5 915/438/5 910/431/5 -f 567/439/2 565/440/2 561/441/2 -f 575/442/1 579/443/1 572/444/1 -f 617/445/2 629/446/2 611/447/2 -f 607/448/2 625/449/2 613/450/2 -f 608/451/16 633/452/16 607/448/16 -f 608/451/16 627/453/16 634/454/16 -f 609/455/16 628/456/16 627/453/16 -f 611/447/16 628/456/16 610/457/16 -f 620/458/17 617/445/17 616/459/17 -f 619/460/17 616/459/17 615/461/17 -f 626/462/17 615/461/17 614/463/17 -f 625/464/17 614/463/17 613/450/17 -f 649/465/17 650/466/17 646/467/17 -f 236/305/4 332/306/4 259/308/4 -f 333/310/8 319/303/8 318/311/8 -f 332/468/2 899/469/2 357/318/2 -f 900/470/2 333/471/2 358/472/2 -f 901/473/3 898/474/3 356/475/3 -f 330/304/4 898/476/4 236/305/4 -f 357/318/4 901/473/4 359/319/4 -f 897/477/3 902/478/3 355/479/3 -f 897/480/8 331/481/8 319/303/8 -f 902/478/8 358/472/8 362/322/8 -f 910/431/2 913/482/2 905/437/2 -f 904/483/2 905/437/2 906/484/2 -f 911/485/2 910/431/2 909/486/2 -f 921/487/3 916/488/3 918/489/3 -f 922/490/3 919/491/3 917/492/3 -f 927/493/4 920/494/4 921/487/4 -f 919/495/1 929/496/1 925/497/1 -f 928/498/8 923/499/8 922/490/8 -f 924/500/1 921/487/1 918/501/1 -f 549/502/8 925/432/8 548/503/8 -f 931/504/4 924/505/4 904/506/4 -f 908/507/3 549/502/3 554/508/3 -f 915/438/8 919/509/8 910/431/8 -f 931/504/3 903/510/3 932/511/3 -f 927/493/5 930/512/5 926/513/5 -f 905/437/4 924/505/4 918/514/4 -f 918/514/4 914/515/4 905/437/4 -f 551/428/8 936/516/8 553/517/8 -f 550/434/5 940/518/5 558/519/5 -f 555/520/5 934/521/5 551/428/5 -f 557/522/3 935/523/3 552/436/3 -f 552/436/4 933/524/4 550/434/4 -f 553/517/3 938/525/3 556/526/3 -f 944/527/4 943/528/4 941/529/4 -f 950/530/8 952/531/8 947/532/8 -f 946/533/6 951/534/6 945/535/6 -f 944/536/6 949/537/6 943/528/6 -f 942/538/2 947/532/2 941/529/2 -f 956/539/4 955/540/4 953/541/4 -f 945/535/5 950/542/5 944/527/5 -f 943/528/5 948/543/5 942/538/5 -f 962/544/8 964/545/8 959/546/8 -f 958/547/6 963/548/6 957/549/6 -f 956/550/6 961/551/6 955/540/6 -f 954/552/2 959/546/2 953/541/2 -f 957/549/5 962/553/5 956/539/5 -f 955/540/5 960/554/5 954/552/5 -f 971/555/2 968/556/2 967/557/2 -f 970/558/1 965/559/1 966/560/1 -f 972/561/5 966/560/5 968/562/5 -f 969/563/3 967/557/3 965/559/3 -f 404/564/2 411/358/2 407/357/2 -f 413/565/2 404/564/2 403/370/2 -f 270/225/1 268/360/1 269/566/1 -f 406/567/8 408/259/8 255/568/8 -f 277/569/1 270/225/1 247/223/1 -f 985/570/33 988/571/33 986/572/33 -f 987/573/21 989/574/21 991/575/21 -f 990/576/34 991/575/34 989/574/34 -f 988/577/35 991/575/35 992/578/35 -f 986/579/36 989/574/36 985/570/36 -f 993/580/37 996/581/37 994/582/37 -f 995/583/4 997/584/4 999/585/4 -f 998/586/38 999/585/38 997/584/38 -f 996/587/39 999/585/39 1000/588/39 -f 998/589/40 993/580/40 994/590/40 -f 1001/591/41 1004/592/41 1002/593/41 -f 1003/594/8 1005/595/8 1007/596/8 -f 1006/597/42 1007/596/42 1005/595/42 -f 1004/598/43 1007/596/43 1008/599/43 -f 1006/600/44 1001/591/44 1002/601/44 -f 1010/602/45 1011/603/45 1012/604/45 -f 1011/603/13 1013/605/13 1015/606/13 -f 1014/607/46 1015/606/46 1013/605/46 -f 1012/608/47 1015/606/47 1016/609/47 -f 1014/610/48 1009/611/48 1010/612/48 -f 1017/613/49 1020/614/49 1018/615/49 -f 1019/616/12 1021/617/12 1023/618/12 -f 1022/619/50 1023/618/50 1021/617/50 -f 1020/620/51 1023/618/51 1024/621/51 -f 1018/622/52 1021/617/52 1017/613/52 -f 925/623/5 928/498/5 548/624/5 -f 20/1/1 18/7/1 45/2/1 -f 29/4/2 30/49/2 54/5/2 -f 18/7/1 16/10/1 44/8/1 -f 14/9/1 43/625/1 44/8/1 -f 14/11/1 12/14/1 42/12/1 -f 12/14/1 10/16/1 41/15/1 -f 10/16/1 8/23/1 40/17/1 -f 24/18/1 48/26/1 38/19/1 -f 4/21/1 2/20/1 38/19/1 -f 8/23/1 6/27/1 39/24/1 -f 24/18/1 22/28/1 47/25/1 -f 4/21/1 37/22/1 39/24/1 -f 20/1/1 46/3/1 47/25/1 -f 28/29/2 29/4/2 53/6/2 -f 27/31/2 28/29/2 52/30/2 -f 26/33/2 27/31/2 51/32/2 -f 25/35/2 26/33/2 49/34/2 -f 25/35/2 50/36/2 60/37/2 -f 36/38/2 60/37/2 59/39/2 -f 35/40/2 59/39/2 58/41/2 -f 34/42/2 58/41/2 57/43/2 -f 33/44/2 57/43/2 56/45/2 -f 32/46/2 56/45/2 55/47/2 -f 30/49/2 31/626/2 55/50/2 -f 79/51/2 63/627/2 64/52/2 -f 62/54/2 63/627/2 79/51/2 -f 62/54/2 80/55/2 81/56/2 -f 61/57/2 81/56/2 68/58/2 -f 72/59/2 68/58/2 69/60/2 -f 70/62/2 71/61/2 69/60/2 -f 86/64/1 85/628/1 76/65/1 -f 74/67/1 87/629/1 86/64/1 -f 88/68/1 87/629/1 74/67/1 -f 67/70/1 88/68/1 73/69/1 -f 66/72/1 67/70/1 84/71/1 -f 66/72/1 83/73/1 82/74/1 -f 93/76/2 94/630/2 100/77/2 -f 100/77/2 94/630/2 95/79/2 -f 93/76/2 101/78/2 102/81/2 -f 90/83/2 98/85/2 89/82/2 -f 91/84/2 97/631/2 98/85/2 -f 96/86/2 97/631/2 91/84/2 -f 104/88/1 116/632/1 111/89/1 -f 111/89/1 110/123/1 112/91/1 -f 106/92/1 116/632/1 104/88/1 -f 107/94/1 106/92/1 105/93/1 -f 108/96/1 107/94/1 115/95/1 -f 108/96/1 113/97/1 114/98/1 -f 96/86/3 92/633/3 65/100/3 -f 85/101/3 99/634/3 95/79/3 -f 118/102/2 122/635/2 123/103/2 -f 121/105/2 122/635/2 118/102/2 -f 125/107/2 120/111/2 121/108/2 -f 125/107/2 126/112/2 119/110/2 -f 64/52/2 119/110/2 126/112/2 -f 77/63/2 117/104/2 123/103/2 -f 127/113/1 132/122/1 133/114/1 -f 133/114/1 134/636/1 129/116/1 -f 129/117/1 134/637/1 135/118/1 -f 135/118/1 136/121/1 131/120/1 -f 109/99/1 114/98/1 131/120/1 -f 132/122/1 127/113/1 112/91/1 -f 141/124/2 142/147/2 154/125/2 -f 140/127/2 141/124/2 153/126/2 -f 139/129/2 140/127/2 152/128/2 -f 138/131/2 139/129/2 151/130/2 -f 137/133/2 138/131/2 149/132/2 -f 137/133/2 150/134/2 160/135/2 -f 148/136/2 160/135/2 159/137/2 -f 147/138/2 159/137/2 158/139/2 -f 146/140/2 158/139/2 157/141/2 -f 145/142/2 157/141/2 156/143/2 -f 144/144/2 156/143/2 155/145/2 -f 142/147/2 143/638/2 155/148/2 -f 325/149/1 345/152/1 176/150/1 -f 345/152/1 325/149/1 324/153/1 -f 324/153/1 323/639/1 349/155/1 -f 349/156/1 323/640/1 322/157/1 -f 322/157/1 321/161/1 347/159/1 -f 320/160/1 177/162/1 347/159/1 -f 177/162/1 320/160/1 181/163/1 -f 181/163/1 180/166/1 179/165/1 -f 180/166/1 329/168/1 173/167/1 -f 329/168/1 328/641/1 174/169/1 -f 174/169/1 328/641/1 327/170/1 -f 327/170/1 326/151/1 176/150/1 -f 209/172/2 214/176/2 213/173/2 -f 210/175/2 215/642/2 214/176/2 -f 210/177/2 211/643/2 216/178/2 -f 216/178/2 211/643/2 212/180/2 -f 212/180/2 219/198/2 221/182/2 -f 220/183/2 218/199/2 208/174/2 -f 198/184/2 199/201/2 225/185/2 -f 197/187/2 198/184/2 226/186/2 -f 197/187/2 228/188/2 227/189/2 -f 202/191/2 196/190/2 227/189/2 -f 201/193/2 202/191/2 222/192/2 -f 200/195/2 201/193/2 223/194/2 -f 224/197/3 221/644/3 219/198/3 -f 218/199/3 220/645/3 225/200/3 -f 231/202/3 232/236/3 230/203/3 -f 241/205/4 233/209/4 243/206/4 -f 244/208/5 243/206/5 233/209/5 -f 260/211/2 274/646/2 275/212/2 -f 275/212/2 251/647/2 237/213/2 -f 261/214/5 260/211/5 237/213/5 -f 240/216/3 242/648/3 241/205/3 -f 233/209/1 241/205/1 242/217/1 -f 234/219/4 242/220/4 237/213/4 -f 242/220/4 240/232/4 238/215/4 -f 244/221/2 240/649/2 239/207/2 -f 245/222/1 277/569/1 247/223/1 -f 270/225/6 272/233/6 249/226/6 -f 271/227/7 261/650/7 238/228/7 -f 238/215/4 240/232/4 248/651/4 -f 240/232/4 244/367/4 246/366/4 -f 248/651/4 240/232/4 249/231/4 -f 246/366/4 247/230/4 240/232/4 -f 272/233/5 271/227/5 248/229/5 -f 405/234/4 404/652/4 407/235/4 -f 278/237/1 284/653/1 285/238/1 -f 253/240/3 255/568/3 254/241/3 -f 266/243/8 256/246/8 264/244/8 -f 256/246/5 266/243/5 267/247/5 -f 264/244/3 265/654/3 263/249/3 -f 265/250/1 264/244/1 256/246/1 -f 257/252/8 253/240/8 260/211/8 -f 261/214/8 263/257/8 265/253/8 -f 262/245/2 263/655/2 267/254/2 -f 267/368/8 263/257/8 269/369/8 -f 263/257/8 261/214/8 271/656/8 -f 269/369/8 263/257/8 270/256/8 -f 271/656/8 272/255/8 263/257/8 -f 403/258/5 404/652/5 405/234/5 -f 279/239/3 281/263/3 280/260/3 -f 250/262/2 229/657/2 230/261/2 -f 237/213/2 251/647/2 250/262/2 -f 281/263/9 283/658/9 282/264/9 -f 253/266/2 252/659/2 273/265/2 -f 273/265/2 274/646/2 260/211/2 -f 280/260/8 282/660/8 284/267/8 -f 285/268/4 283/661/4 281/263/4 -f 286/269/1 292/662/1 293/270/1 -f 287/271/10 289/273/10 288/272/10 -f 289/273/11 291/663/11 290/274/11 -f 288/272/12 290/664/12 292/275/12 -f 293/276/13 291/665/13 289/273/13 -f 294/277/1 300/666/1 301/278/1 -f 295/279/14 297/281/14 296/280/14 -f 297/281/15 299/667/15 298/282/15 -f 296/280/16 298/668/16 300/283/16 -f 301/284/17 299/669/17 297/281/17 -f 303/285/1 302/289/1 308/286/1 -f 303/285/12 305/290/12 304/288/12 -f 305/290/18 307/670/18 306/291/18 -f 304/288/19 306/671/19 308/292/19 -f 309/293/10 307/672/10 305/290/10 -f 310/294/1 316/673/1 317/295/1 -f 311/296/16 313/302/16 312/297/16 -f 312/297/20 313/302/20 315/298/20 -f 312/297/21 314/674/21 316/300/21 -f 317/301/14 315/675/14 313/302/14 -f 319/303/5 331/481/5 330/304/5 -f 332/306/4 334/676/4 336/307/4 -f 337/309/8 335/677/8 333/310/8 -f 236/305/1 340/678/1 344/312/1 -f 344/312/1 343/679/1 319/303/1 -f 259/314/1 338/680/1 339/313/1 -f 339/313/1 340/678/1 236/305/1 -f 342/316/1 341/681/1 318/315/1 -f 319/303/1 343/679/1 342/316/1 -f 334/317/5 332/682/5 357/318/5 -f 360/320/3 338/683/3 259/308/3 -f 318/311/3 341/684/3 361/321/3 -f 362/322/5 358/472/5 333/323/5 -f 370/326/4 368/685/4 366/686/4 -f 366/686/4 388/687/4 370/326/4 -f 388/687/4 386/327/4 370/326/4 -f 386/327/4 384/688/4 378/689/4 -f 384/688/4 382/690/4 378/689/4 -f 382/690/4 380/691/4 378/689/4 -f 378/689/4 376/692/4 374/325/4 -f 374/325/4 372/693/4 370/326/4 -f 378/689/4 374/325/4 386/327/4 -f 389/328/5 390/339/5 363/329/5 -f 387/333/8 365/694/8 367/695/8 -f 367/695/8 369/696/8 371/697/8 -f 371/697/8 373/698/8 379/331/8 -f 373/698/8 375/699/8 379/331/8 -f 375/699/8 377/700/8 379/331/8 -f 379/331/8 381/701/8 383/332/8 -f 383/332/8 385/702/8 387/333/8 -f 387/333/8 367/695/8 379/331/8 -f 367/695/8 371/697/8 379/331/8 -f 397/334/5 398/350/5 396/335/5 -f 363/329/1 391/340/1 392/337/1 -f 390/339/4 394/342/4 391/340/4 -f 389/341/2 393/703/2 394/342/2 -f 364/338/8 392/337/8 393/343/8 -f 401/345/3 402/349/3 399/346/3 -f 397/348/2 399/354/2 402/349/2 -f 396/335/1 401/345/1 400/351/1 -f 398/350/4 402/349/4 401/345/4 -f 395/353/8 400/704/8 399/354/8 -f 408/259/1 405/234/1 410/355/1 -f 245/222/5 246/224/5 407/357/5 -f 406/359/5 269/566/5 268/360/5 -f 232/363/1 231/705/1 235/362/1 -f 235/362/1 410/355/1 405/234/1 -f 258/365/1 254/706/1 255/364/1 -f 408/259/1 409/356/1 258/365/1 -f 232/236/4 407/235/4 246/366/4 -f 244/367/4 234/219/4 230/203/4 -f 232/236/4 246/366/4 230/203/4 -f 269/369/8 406/567/8 255/568/8 -f 255/568/8 253/240/8 269/369/8 -f 253/240/8 257/252/8 267/368/8 -f 412/361/2 413/565/2 403/370/2 -f 417/371/5 418/375/5 416/372/5 -f 422/374/22 420/707/22 416/372/22 -f 419/376/23 421/708/23 417/371/23 -f 426/709/2 422/710/2 418/375/2 -f 417/371/2 421/711/2 425/377/2 -f 425/377/2 426/709/2 418/375/2 -f 416/372/1 420/712/1 424/713/1 -f 423/378/1 419/714/1 415/373/1 -f 416/372/1 424/713/1 423/378/1 -f 464/379/3 466/382/3 465/380/3 -f 466/382/24 468/715/24 467/383/24 -f 465/380/4 467/716/4 469/384/4 -f 470/385/8 468/717/8 466/382/8 -f 472/386/16 474/389/16 473/387/16 -f 474/389/25 476/718/25 475/390/25 -f 473/387/14 475/719/14 477/391/14 -f 478/392/21 476/720/21 474/389/21 -f 480/393/12 482/396/12 481/394/12 -f 482/396/26 484/721/26 483/397/26 -f 481/394/10 483/722/10 485/398/10 -f 486/399/19 484/723/19 482/396/19 -f 488/400/14 490/403/14 489/401/14 -f 490/403/27 492/724/27 491/404/27 -f 489/401/17 491/725/17 493/405/17 -f 494/406/16 492/726/16 490/403/16 -f 496/407/10 498/410/10 497/408/10 -f 498/410/28 500/727/28 499/411/28 -f 497/408/13 499/728/13 501/412/13 -f 502/413/12 500/729/12 498/410/12 -f 505/415/2 504/730/2 513/416/2 -f 504/730/2 503/731/2 513/416/2 -f 503/731/2 514/732/2 513/416/2 -f 513/416/2 512/733/2 511/734/2 -f 511/734/2 510/735/2 509/736/2 -f 509/736/2 508/737/2 507/414/2 -f 507/414/2 506/738/2 505/415/2 -f 513/416/2 511/734/2 509/736/2 -f 509/736/2 507/414/2 513/416/2 -f 540/417/29 542/420/29 543/418/29 -f 542/420/14 540/417/14 544/421/14 -f 545/423/30 547/739/30 546/422/30 -f 543/424/31 542/420/31 546/422/31 -f 545/426/32 544/421/32 540/417/32 -f 551/428/2 553/517/2 556/429/2 -f 910/431/8 919/509/8 925/432/8 -f 550/434/2 558/740/2 557/435/2 -f 905/437/5 914/515/5 915/438/5 -f 561/441/2 560/741/2 559/742/2 -f 559/742/2 570/743/2 561/441/2 -f 570/743/2 569/744/2 561/441/2 -f 569/744/2 568/745/2 567/439/2 -f 567/439/2 566/746/2 565/440/2 -f 565/440/2 564/747/2 561/441/2 -f 564/747/2 563/748/2 561/441/2 -f 563/748/2 562/749/2 561/441/2 -f 569/744/2 567/439/2 561/441/2 -f 572/444/1 571/750/1 575/442/1 -f 571/750/1 573/751/1 575/442/1 -f 573/751/1 574/752/1 575/442/1 -f 575/442/1 576/753/1 579/443/1 -f 576/753/1 577/754/1 579/443/1 -f 577/754/1 578/755/1 579/443/1 -f 579/443/1 580/756/1 581/757/1 -f 581/757/1 582/758/1 579/443/1 -f 582/758/1 572/444/1 579/443/1 -f 617/445/2 621/759/2 629/446/2 -f 607/448/2 633/760/2 625/449/2 -f 608/451/16 634/454/16 633/452/16 -f 608/451/16 609/455/16 627/453/16 -f 609/455/16 610/457/16 628/456/16 -f 611/447/16 629/761/16 628/456/16 -f 620/458/17 621/762/17 617/445/17 -f 619/460/17 620/458/17 616/459/17 -f 626/462/17 619/460/17 615/461/17 -f 625/464/17 626/462/17 614/463/17 -f 650/466/17 643/763/17 644/764/17 -f 644/764/17 645/765/17 650/466/17 -f 645/765/17 646/467/17 650/466/17 -f 646/467/17 647/766/17 648/767/17 -f 648/767/17 649/465/17 646/467/17 -f 236/305/4 898/476/4 332/306/4 -f 333/310/8 897/480/8 319/303/8 -f 332/468/2 898/768/2 899/469/2 -f 900/470/2 897/769/2 333/471/2 -f 901/473/3 899/469/3 898/474/3 -f 330/304/4 356/770/4 898/476/4 -f 357/318/4 899/469/4 901/473/4 -f 897/477/3 900/470/3 902/478/3 -f 897/480/8 355/771/8 331/481/8 -f 902/478/8 900/470/8 358/472/8 -f 910/431/2 912/772/2 913/482/2 -f 913/482/2 907/773/2 905/437/2 -f 906/484/2 903/774/2 904/483/2 -f 905/437/2 907/773/2 906/484/2 -f 909/486/2 908/775/2 911/485/2 -f 911/485/2 912/772/2 910/431/2 -f 921/487/3 920/494/3 916/488/3 -f 922/490/3 923/499/3 919/491/3 -f 927/493/4 926/513/4 920/494/4 -f 919/495/1 923/499/1 929/496/1 -f 928/498/8 929/496/8 923/499/8 -f 924/500/1 927/493/1 921/487/1 -f 549/502/8 909/433/8 925/432/8 -f 931/504/4 930/776/4 924/505/4 -f 908/507/3 909/433/3 549/502/3 -f 915/438/8 917/777/8 919/509/8 -f 931/504/3 904/506/3 903/510/3 -f 927/493/5 924/778/5 930/512/5 -f 905/437/4 904/506/4 924/505/4 -f 918/514/4 916/779/4 914/515/4 -f 551/428/8 934/521/8 936/516/8 -f 550/434/5 933/524/5 940/518/5 -f 555/520/5 937/780/5 934/521/5 -f 557/522/3 939/781/3 935/523/3 -f 552/436/4 935/523/4 933/524/4 -f 553/517/3 936/516/3 938/525/3 -f 943/528/4 942/538/4 941/529/4 -f 941/529/4 946/782/4 944/527/4 -f 946/782/4 945/535/4 944/527/4 -f 947/532/8 948/783/8 949/784/8 -f 950/530/8 951/785/8 952/531/8 -f 947/532/8 949/784/8 950/530/8 -f 946/533/6 952/786/6 951/534/6 -f 944/536/6 950/787/6 949/537/6 -f 942/538/2 948/783/2 947/532/2 -f 955/540/4 954/552/4 953/541/4 -f 953/541/4 958/788/4 956/539/4 -f 958/788/4 957/549/4 956/539/4 -f 945/535/5 951/534/5 950/542/5 -f 943/528/5 949/537/5 948/543/5 -f 959/546/8 960/789/8 961/790/8 -f 962/544/8 963/791/8 964/545/8 -f 959/546/8 961/790/8 962/544/8 -f 958/547/6 964/792/6 963/548/6 -f 956/550/6 962/793/6 961/551/6 -f 954/552/2 960/789/2 959/546/2 -f 957/549/5 963/548/5 962/553/5 -f 955/540/5 961/551/5 960/554/5 -f 971/555/2 972/794/2 968/556/2 -f 970/558/1 969/563/1 965/559/1 -f 972/561/5 970/558/5 966/560/5 -f 969/563/3 971/555/3 967/557/3 -f 404/564/2 414/795/2 411/358/2 -f 413/565/2 414/795/2 404/564/2 -f 270/225/1 276/796/1 268/360/1 -f 406/567/8 403/258/8 408/259/8 -f 277/569/1 276/796/1 270/225/1 -f 985/570/33 987/573/33 988/571/33 -f 987/573/21 985/570/21 989/574/21 -f 990/576/34 992/797/34 991/575/34 -f 988/577/35 987/573/35 991/575/35 -f 986/579/36 990/798/36 989/574/36 -f 993/580/37 995/583/37 996/581/37 -f 995/583/4 993/580/4 997/584/4 -f 998/586/38 1000/799/38 999/585/38 -f 996/587/53 995/583/53 999/585/53 -f 998/589/40 997/584/40 993/580/40 -f 1001/591/41 1003/594/41 1004/592/41 -f 1003/594/8 1001/591/8 1005/595/8 -f 1006/597/42 1008/800/42 1007/596/42 -f 1004/598/54 1003/594/54 1007/596/54 -f 1006/600/44 1005/595/44 1001/591/44 -f 1010/602/45 1009/611/45 1011/603/45 -f 1011/603/13 1009/611/13 1013/605/13 -f 1014/607/46 1016/801/46 1015/606/46 -f 1012/608/47 1011/603/47 1015/606/47 -f 1014/610/48 1013/605/48 1009/611/48 -f 1017/613/49 1019/616/49 1020/614/49 -f 1019/616/12 1017/613/12 1021/617/12 -f 1022/619/50 1024/802/50 1023/618/50 -f 1020/620/51 1019/616/51 1023/618/51 -f 1018/622/52 1022/803/52 1021/617/52 -f 925/623/5 929/496/5 928/498/5 +f 493/699/160 506/700/160 505/701/160 +f 492/702/160 505/701/160 504/703/160 +f 491/704/160 504/703/160 503/705/160 +f 490/706/160 503/705/160 501/707/160 +f 489/708/160 501/707/160 502/709/160 +f 489/708/160 512/710/160 500/711/160 +f 500/711/160 511/712/160 499/713/160 +f 499/713/160 510/714/160 498/715/160 +f 498/715/160 509/716/160 497/717/160 +f 497/717/160 508/718/160 496/719/160 +f 496/719/160 507/720/160 495/721/160 +f 494/722/160 507/723/160 506/700/160 +f 590/724/161 528/725/161 591/726/161 +f 610/727/161 589/728/161 611/729/161 +f 589/728/161 614/730/161 611/729/161 +f 614/731/161 587/732/161 613/733/161 +f 587/732/161 612/734/161 613/733/161 +f 585/735/161 612/734/161 586/736/161 +f 529/737/161 533/738/161 530/739/161 +f 533/738/161 531/740/161 530/739/161 +f 532/741/161 525/742/161 531/740/161 +f 594/743/161 526/744/161 525/742/161 +f 526/744/161 592/745/161 527/746/161 +f 592/745/161 528/725/161 527/746/161 +f 561/747/160 565/748/160 560/749/160 +f 562/750/160 566/751/160 561/747/160 +f 562/752/160 568/753/160 567/754/160 +f 568/753/160 564/755/160 569/756/160 +f 564/755/160 573/757/160 569/756/160 +f 572/758/160 560/749/160 565/748/160 +f 550/759/160 577/760/160 578/761/160 +f 549/762/160 578/761/160 580/763/160 +f 549/762/160 579/764/160 548/765/160 +f 554/766/160 579/764/160 574/767/160 +f 553/768/160 574/767/160 575/769/160 +f 552/770/160 575/769/160 576/771/160 +f 576/772/162 571/773/162 552/770/162 +f 570/774/162 577/775/162 551/776/162 +f 584/777/163 595/778/163 581/779/163 +f 597/780/164 601/781/164 582/782/164 +f 602/783/165 598/784/165 583/785/165 +f 584/777/161 581/779/161 609/786/161 +f 604/787/161 581/779/161 582/788/161 +f 583/789/161 584/777/161 607/790/161 +f 599/791/163 622/792/163 624/793/163 +f 625/794/162 582/782/162 601/781/162 +f 583/785/162 626/795/162 602/783/162 +f 627/796/163 598/797/163 600/798/163 +f 639/799/164 635/800/164 651/801/164 +f 654/802/163 628/803/163 629/804/163 +f 644/805/165 648/806/165 652/807/165 +f 662/808/163 661/809/163 660/810/163 +f 628/803/161 657/811/161 629/812/161 +f 655/813/164 656/814/164 628/803/164 +f 654/815/160 659/816/160 655/813/160 +f 629/812/165 658/817/165 654/818/165 +f 666/819/162 664/820/162 665/821/162 +f 662/822/160 667/823/160 663/824/160 +f 661/809/161 665/825/161 660/826/161 +f 663/824/164 666/819/164 661/809/164 +f 660/827/165 664/828/165 662/822/165 +f 705/829/162 706/830/162 704/831/162 +f 707/832/166 708/833/166 706/830/166 +f 706/830/164 710/834/164 704/831/164 +f 711/835/165 707/832/165 705/829/165 +f 713/836/167 714/837/167 712/838/167 +f 715/839/168 716/840/168 714/837/168 +f 714/837/169 718/841/169 712/838/169 +f 719/842/170 715/839/170 713/836/170 +f 721/843/171 722/844/171 720/845/171 +f 723/846/172 724/847/172 722/844/172 +f 722/844/173 726/848/173 720/845/173 +f 727/849/174 723/846/174 721/843/174 +f 729/850/169 730/851/169 728/852/169 +f 731/853/175 732/854/175 730/851/175 +f 730/851/176 734/855/176 728/852/176 +f 735/856/167 731/853/167 729/850/167 +f 737/857/173 738/858/173 736/859/173 +f 739/860/177 740/861/177 738/858/177 +f 738/858/178 742/862/178 736/859/178 +f 743/863/171 739/860/171 737/857/171 +f 747/864/160 752/865/160 751/866/160 +f 950/867/165 965/868/165 949/869/165 +f 746/870/160 753/871/160 748/872/160 +f 945/873/163 955/874/163 950/867/163 +f 581/779/164 597/780/164 582/782/164 +f 598/784/165 584/777/165 583/785/165 +f 597/875/160 939/876/160 622/792/160 +f 940/877/160 598/878/160 623/879/160 +f 941/880/162 938/881/162 621/882/162 +f 595/778/164 938/883/164 581/779/164 +f 622/792/164 941/880/164 624/793/164 +f 937/884/162 942/885/162 620/886/162 +f 937/887/165 596/888/165 584/777/165 +f 942/885/165 623/879/165 627/796/165 +f 950/867/160 953/889/160 945/873/160 +f 944/890/160 945/873/160 946/891/160 +f 951/892/160 950/867/160 949/893/160 +f 961/894/162 956/895/162 958/896/162 +f 962/897/162 959/898/162 957/899/162 +f 967/900/164 960/901/164 961/894/164 +f 959/902/161 969/903/161 965/904/161 +f 968/905/165 963/906/165 962/897/165 +f 964/907/161 961/894/161 958/908/161 +f 745/909/165 965/868/165 744/910/165 +f 971/911/164 964/912/164 944/913/164 +f 948/914/162 745/909/162 750/915/162 +f 955/874/165 959/916/165 950/867/165 +f 971/911/162 943/917/162 972/918/162 +f 967/900/163 970/919/163 966/920/163 +f 945/873/164 964/912/164 958/921/164 +f 958/921/164 954/922/164 945/873/164 +f 747/864/165 976/923/165 749/924/165 +f 746/870/163 980/925/163 754/926/163 +f 751/927/163 974/928/163 747/864/163 +f 753/929/162 975/930/162 748/872/162 +f 748/872/164 973/931/164 746/870/164 +f 749/924/162 978/932/162 752/933/162 +f 984/934/164 983/935/164 981/936/164 +f 990/937/165 992/938/165 987/939/165 +f 986/940/179 991/941/179 985/942/179 +f 984/943/179 989/944/179 983/935/179 +f 982/945/160 987/939/160 981/936/160 +f 996/946/164 995/947/164 993/948/164 +f 985/942/163 990/949/163 984/934/163 +f 983/935/163 988/950/163 982/945/163 +f 1002/951/165 1004/952/165 999/953/165 +f 998/954/179 1003/955/179 997/956/179 +f 996/957/179 1001/958/179 995/947/179 +f 994/959/160 999/953/160 993/948/160 +f 997/956/163 1002/960/163 996/946/163 +f 995/947/163 1000/961/163 994/959/163 +f 1011/962/160 1008/963/160 1007/964/160 +f 1010/965/161 1005/966/161 1006/967/161 +f 1012/968/163 1006/967/163 1008/969/163 +f 1009/970/162 1007/964/162 1005/966/162 +f 965/971/163 968/905/163 744/972/163 +f 493/699/160 494/722/160 506/700/160 +f 492/702/160 493/699/160 505/701/160 +f 491/704/160 492/702/160 504/703/160 +f 490/706/160 491/704/160 503/705/160 +f 489/708/160 490/706/160 501/707/160 +f 489/708/160 502/709/160 512/710/160 +f 500/711/160 512/710/160 511/712/160 +f 499/713/160 511/712/160 510/714/160 +f 498/715/160 510/714/160 509/716/160 +f 497/717/160 509/716/160 508/718/160 +f 496/719/160 508/718/160 507/720/160 +f 494/722/160 495/973/160 507/723/160 +f 590/724/161 610/727/161 528/725/161 +f 610/727/161 590/724/161 589/728/161 +f 589/728/161 588/974/161 614/730/161 +f 614/731/161 588/975/161 587/732/161 +f 587/732/161 586/736/161 612/734/161 +f 585/735/161 529/737/161 612/734/161 +f 529/737/161 585/735/161 533/738/161 +f 533/738/161 532/741/161 531/740/161 +f 532/741/161 594/743/161 525/742/161 +f 594/743/161 593/976/161 526/744/161 +f 526/744/161 593/976/161 592/745/161 +f 592/745/161 591/726/161 528/725/161 +f 561/747/160 566/751/160 565/748/160 +f 562/750/160 567/977/160 566/751/160 +f 562/752/160 563/978/160 568/753/160 +f 568/753/160 563/978/160 564/755/160 +f 564/755/160 571/773/160 573/757/160 +f 572/758/160 570/774/160 560/749/160 +f 550/759/160 551/776/160 577/760/160 +f 549/762/160 550/759/160 578/761/160 +f 549/762/160 580/763/160 579/764/160 +f 554/766/160 548/765/160 579/764/160 +f 553/768/160 554/766/160 574/767/160 +f 552/770/160 553/768/160 575/769/160 +f 576/772/162 573/979/162 571/773/162 +f 570/774/162 572/980/162 577/775/162 +f 584/777/163 596/888/163 595/778/163 +f 597/780/164 599/981/164 601/781/164 +f 602/783/165 600/982/165 598/784/165 +f 581/779/161 605/983/161 609/786/161 +f 609/786/161 608/984/161 584/777/161 +f 582/788/161 603/985/161 604/787/161 +f 604/787/161 605/983/161 581/779/161 +f 607/790/161 606/986/161 583/789/161 +f 584/777/161 608/984/161 607/790/161 +f 599/791/163 597/987/163 622/792/163 +f 625/794/162 603/988/162 582/782/162 +f 583/785/162 606/989/162 626/795/162 +f 627/796/163 623/879/163 598/797/163 +f 635/800/164 633/990/164 631/991/164 +f 631/991/164 653/992/164 635/800/164 +f 653/992/164 651/801/164 635/800/164 +f 651/801/164 649/993/164 643/994/164 +f 649/993/164 647/995/164 643/994/164 +f 647/995/164 645/996/164 643/994/164 +f 643/994/164 641/997/164 639/799/164 +f 639/799/164 637/998/164 635/800/164 +f 643/994/164 639/799/164 651/801/164 +f 654/802/163 655/813/163 628/803/163 +f 652/807/165 630/999/165 632/1000/165 +f 632/1000/165 634/1001/165 636/1002/165 +f 636/1002/165 638/1003/165 644/805/165 +f 638/1003/165 640/1004/165 644/805/165 +f 640/1004/165 642/1005/165 644/805/165 +f 644/805/165 646/1006/165 648/806/165 +f 648/806/165 650/1007/165 652/807/165 +f 652/807/165 632/1000/165 644/805/165 +f 632/1000/165 636/1002/165 644/805/165 +f 662/808/163 663/824/163 661/809/163 +f 628/803/161 656/814/161 657/811/161 +f 655/813/164 659/816/164 656/814/164 +f 654/815/160 658/1008/160 659/816/160 +f 629/812/165 657/811/165 658/817/165 +f 666/819/162 667/823/162 664/820/162 +f 662/822/160 664/828/160 667/823/160 +f 661/809/161 666/819/161 665/825/161 +f 663/824/164 667/823/164 666/819/164 +f 660/827/165 665/1009/165 664/828/165 +f 705/829/162 707/832/162 706/830/162 +f 707/832/166 709/1010/166 708/833/166 +f 706/830/164 708/1011/164 710/834/164 +f 711/835/165 709/1012/165 707/832/165 +f 713/836/167 715/839/167 714/837/167 +f 715/839/168 717/1013/168 716/840/168 +f 714/837/169 716/1014/169 718/841/169 +f 719/842/170 717/1015/170 715/839/170 +f 721/843/171 723/846/171 722/844/171 +f 723/846/172 725/1016/172 724/847/172 +f 722/844/173 724/1017/173 726/848/173 +f 727/849/174 725/1018/174 723/846/174 +f 729/850/169 731/853/169 730/851/169 +f 731/853/175 733/1019/175 732/854/175 +f 730/851/176 732/1020/176 734/855/176 +f 735/856/167 733/1021/167 731/853/167 +f 737/857/173 739/860/173 738/858/173 +f 739/860/177 741/1022/177 740/861/177 +f 738/858/178 740/1023/178 742/862/178 +f 743/863/171 741/1024/171 739/860/171 +f 747/864/160 749/924/160 752/865/160 +f 950/867/165 959/916/165 965/868/165 +f 746/870/160 754/1025/160 753/871/160 +f 945/873/163 954/922/163 955/874/163 +f 581/779/164 938/883/164 597/780/164 +f 598/784/165 937/887/165 584/777/165 +f 597/875/160 938/1026/160 939/876/160 +f 940/877/160 937/1027/160 598/878/160 +f 941/880/162 939/876/162 938/881/162 +f 595/778/164 621/1028/164 938/883/164 +f 622/792/164 939/876/164 941/880/164 +f 937/884/162 940/877/162 942/885/162 +f 937/887/165 620/1029/165 596/888/165 +f 942/885/165 940/877/165 623/879/165 +f 950/867/160 952/1030/160 953/889/160 +f 953/889/160 947/1031/160 945/873/160 +f 946/891/160 943/1032/160 944/890/160 +f 945/873/160 947/1031/160 946/891/160 +f 949/893/160 948/1033/160 951/892/160 +f 951/892/160 952/1030/160 950/867/160 +f 961/894/162 960/901/162 956/895/162 +f 962/897/162 963/906/162 959/898/162 +f 967/900/164 966/920/164 960/901/164 +f 959/902/161 963/906/161 969/903/161 +f 968/905/165 969/903/165 963/906/165 +f 964/907/161 967/900/161 961/894/161 +f 745/909/165 949/869/165 965/868/165 +f 971/911/164 970/1034/164 964/912/164 +f 948/914/162 949/869/162 745/909/162 +f 955/874/165 957/1035/165 959/916/165 +f 971/911/162 944/913/162 943/917/162 +f 967/900/163 964/1036/163 970/919/163 +f 945/873/164 944/913/164 964/912/164 +f 958/921/164 956/1037/164 954/922/164 +f 747/864/165 974/928/165 976/923/165 +f 746/870/163 973/931/163 980/925/163 +f 751/927/163 977/1038/163 974/928/163 +f 753/929/162 979/1039/162 975/930/162 +f 748/872/164 975/930/164 973/931/164 +f 749/924/162 976/923/162 978/932/162 +f 983/935/164 982/945/164 981/936/164 +f 981/936/164 986/1040/164 984/934/164 +f 986/1040/164 985/942/164 984/934/164 +f 987/939/165 988/1041/165 989/1042/165 +f 990/937/165 991/1043/165 992/938/165 +f 987/939/165 989/1042/165 990/937/165 +f 986/940/179 992/1044/179 991/941/179 +f 984/943/179 990/1045/179 989/944/179 +f 982/945/160 988/1041/160 987/939/160 +f 995/947/164 994/959/164 993/948/164 +f 993/948/164 998/1046/164 996/946/164 +f 998/1046/164 997/956/164 996/946/164 +f 985/942/163 991/941/163 990/949/163 +f 983/935/163 989/944/163 988/950/163 +f 999/953/165 1000/1047/165 1001/1048/165 +f 1002/951/165 1003/1049/165 1004/952/165 +f 999/953/165 1001/1048/165 1002/951/165 +f 998/954/179 1004/1050/179 1003/955/179 +f 996/957/179 1002/1051/179 1001/958/179 +f 994/959/160 1000/1047/160 999/953/160 +f 997/956/163 1003/955/163 1002/960/163 +f 995/947/163 1001/958/163 1000/961/163 +f 1011/962/160 1012/1052/160 1008/963/160 +f 1010/965/161 1009/970/161 1005/966/161 +f 1012/968/163 1010/965/163 1006/967/163 +f 1009/970/162 1011/962/162 1007/964/162 +f 965/971/163 969/903/163 968/905/163 s 1 -f 4/21/14 25/35/3 2/20/3 -f 36/38/12 2/20/3 25/35/3 -f 35/40/16 24/18/12 36/38/12 -f 34/42/8 22/28/16 35/40/16 -f 33/44/19 20/1/8 34/42/8 -f 32/46/21 18/7/19 33/44/19 -f 31/48/5 16/10/21 32/46/21 -f 14/11/5 30/49/13 12/14/13 -f 12/14/13 29/4/17 10/16/17 -f 10/16/17 28/29/4 8/23/4 -f 8/23/4 27/31/10 6/27/10 -f 6/27/10 26/33/14 4/21/14 -f 42/12/12 55/804/3 43/13/3 -f 39/24/19 52/805/8 40/17/8 -f 46/3/4 59/806/17 47/25/17 -f 43/625/3 56/807/14 44/8/14 -f 40/17/8 53/808/16 41/15/16 -f 47/25/17 60/809/13 48/26/13 -f 38/19/5 49/810/21 37/22/21 -f 44/8/14 57/811/10 45/2/10 -f 41/15/16 54/812/12 42/12/12 -f 48/26/13 50/813/5 38/19/5 -f 39/24/19 49/810/21 51/814/19 -f 46/3/4 57/811/10 58/815/4 -f 75/66/10 64/52/4 63/627/10 -f 82/74/55 71/61/16 70/62/8 -f 83/73/16 72/59/12 71/61/16 -f 73/69/3 62/54/14 61/57/3 -f 84/71/12 61/57/3 72/59/12 -f 74/67/14 63/627/10 62/54/14 -f 94/630/10 112/91/4 95/79/56 -f 96/86/55 113/97/16 97/631/16 -f 93/76/14 103/90/10 94/630/10 -f 97/631/16 115/95/12 98/85/12 -f 89/82/3 104/88/14 93/76/14 -f 98/85/12 105/93/3 89/82/3 -f 121/105/5 130/119/21 122/635/21 -f 119/110/17 128/115/13 120/111/13 -f 122/635/21 131/120/19 123/103/19 -f 120/111/13 129/116/5 121/108/5 -f 96/86/55 82/74/55 131/120/19 -f 76/65/56 95/79/56 127/113/17 -f 157/141/10 168/816/14 156/143/14 -f 149/132/21 162/817/5 150/134/5 -f 142/147/13 11/818/5 143/638/5 -f 158/139/4 169/819/10 157/141/10 -f 151/130/19 161/820/21 149/132/21 -f 143/146/5 9/821/21 144/144/21 -f 159/137/17 170/822/4 158/139/4 -f 152/128/8 163/823/19 151/130/19 -f 144/144/21 7/824/19 145/142/19 -f 160/135/13 171/825/17 159/137/17 -f 137/133/3 23/826/14 138/131/14 -f 153/126/16 164/827/8 152/128/8 -f 145/142/19 5/828/8 146/140/8 -f 150/134/5 172/829/13 160/135/13 -f 138/131/14 19/830/10 139/129/10 -f 154/125/12 165/831/16 153/126/16 -f 146/140/8 3/832/16 147/138/16 -f 139/129/10 17/833/4 140/127/4 -f 155/148/3 166/834/12 154/125/12 -f 147/138/16 1/835/12 148/136/12 -f 140/127/4 15/836/17 141/124/17 -f 156/143/14 167/837/3 155/145/3 -f 148/136/12 21/838/3 137/133/3 -f 141/124/17 13/839/13 142/147/13 -f 174/169/14 182/840/3 173/167/3 -f 179/165/12 187/841/16 178/164/16 -f 175/171/10 183/842/14 174/169/14 -f 173/167/3 188/843/12 179/165/12 -f 176/150/4 184/844/10 175/171/10 -f 178/164/16 186/845/8 177/162/8 -f 189/846/3 202/191/12 195/847/12 -f 194/848/16 200/195/55 193/849/8 -f 191/850/10 197/187/14 190/851/14 -f 195/847/12 201/193/16 194/848/16 -f 192/852/4 198/184/10 191/850/10 -f 190/851/14 196/190/3 189/846/3 -f 206/853/21 210/177/5 205/854/5 -f 204/855/13 208/174/17 203/856/17 -f 207/857/19 211/643/21 206/853/21 -f 205/858/5 209/172/13 204/855/13 -f 208/174/17 218/199/57 199/201/56 -f 207/857/19 200/195/55 212/180/19 -f 983/859/17 320/160/4 982/860/4 -f 976/861/8 327/170/19 975/862/19 -f 979/863/3 324/153/12 978/864/12 -f 982/860/4 321/161/10 981/865/10 -f 975/862/19 328/641/21 974/866/21 -f 973/867/5 180/166/13 984/868/13 -f 978/864/12 325/149/16 977/869/16 -f 981/865/10 322/157/14 980/870/14 -f 974/866/21 329/168/5 973/867/5 -f 984/868/13 181/163/17 983/859/17 -f 977/869/16 326/151/8 976/861/8 -f 980/870/14 323/640/3 979/871/3 -f 347/159/19 353/872/21 348/158/21 -f 349/155/5 351/873/13 346/154/13 -f 346/154/13 350/874/17 345/152/17 -f 348/158/21 354/875/5 349/156/5 -f 345/152/17 185/876/4 176/150/4 -f 352/877/19 177/162/8 186/845/8 -f 366/878/2 367/879/58 365/880/2 -f 368/881/58 369/882/59 367/879/58 -f 369/882/59 372/883/5 371/884/5 -f 372/885/5 373/886/60 371/887/5 -f 374/888/60 375/889/61 373/886/60 -f 376/890/61 377/891/1 375/889/61 -f 378/892/1 379/893/62 377/891/1 -f 380/894/62 381/895/63 379/893/62 -f 382/896/63 383/897/3 381/895/63 -f 384/898/3 385/899/64 383/897/3 -f 386/900/64 387/901/65 385/899/64 -f 388/902/65 365/880/2 387/901/65 -f 428/903/66 441/904/67 440/905/66 -f 428/906/66 439/907/68 427/908/68 -f 438/909/69 439/910/68 450/911/69 -f 438/912/69 449/913/70 437/914/70 -f 436/915/71 449/916/70 448/917/71 -f 436/918/71 447/919/72 435/920/72 -f 435/921/72 446/922/73 434/923/73 -f 433/924/74 446/925/73 445/926/74 -f 433/927/74 444/928/75 432/929/75 -f 431/930/76 444/931/75 443/932/76 -f 430/933/77 443/934/76 442/935/77 -f 430/936/77 441/937/67 429/938/67 -f 452/939/78 429/940/79 428/903/78 -f 451/941/80 428/906/78 427/908/80 -f 438/909/81 451/942/80 427/943/80 -f 461/944/82 438/912/81 437/914/82 -f 436/915/83 461/945/82 437/946/82 -f 459/947/84 436/918/83 435/920/84 -f 434/923/85 459/948/84 435/921/84 -f 433/924/86 458/949/85 434/950/85 -f 456/951/87 433/927/86 432/929/87 -f 455/952/88 432/953/87 431/930/88 -f 454/954/89 431/955/88 430/933/89 -f 453/956/79 430/936/89 429/938/79 -f 508/957/21 519/958/90 507/959/19 -f 503/960/3 526/961/91 514/962/14 -f 505/963/16 516/964/92 504/965/12 -f 512/966/4 523/967/93 511/968/17 -f 509/969/5 520/970/94 508/957/21 -f 506/971/8 517/972/95 505/963/16 -f 513/973/10 524/974/96 512/966/4 -f 510/975/13 521/976/97 509/977/5 -f 507/959/19 518/978/98 506/971/8 -f 514/962/14 525/979/99 513/973/10 -f 504/965/12 515/980/100 503/960/3 -f 511/968/17 522/981/101 510/975/13 -f 525/979/99 536/982/102 524/974/96 -f 522/981/101 533/983/103 521/976/97 -f 519/958/90 530/984/104 518/978/98 -f 525/979/99 538/985/105 537/986/106 -f 516/964/92 527/987/107 515/980/100 -f 523/967/93 534/988/108 522/981/101 -f 519/958/90 532/989/109 531/990/110 -f 515/980/100 538/985/105 526/961/91 -f 517/972/95 528/991/111 516/964/92 -f 524/974/96 535/992/112 523/967/93 -f 520/970/94 533/993/103 532/989/109 -f 518/978/98 529/994/113 517/972/95 -f 528/991/111 529/994/113 539/995/1 -f 529/994/113 530/984/104 539/996/1 -f 530/984/104 531/990/110 539/997/1 -f 531/990/110 532/989/109 539/998/1 -f 532/989/109 533/993/103 539/999/1 -f 533/983/103 534/988/108 539/1000/1 -f 534/988/108 535/992/112 539/1001/1 -f 535/992/112 536/982/102 539/1002/1 -f 536/982/102 537/986/106 539/1003/1 -f 537/986/106 538/985/105 539/1004/1 -f 538/985/105 527/987/107 539/1005/1 -f 527/987/107 528/991/111 539/1006/1 -f 566/1007/4 577/1008/17 565/1009/17 -f 563/1010/5 574/1011/21 562/1012/21 -f 570/1013/12 581/1014/3 569/1015/3 -f 560/1016/8 572/1017/16 559/1018/16 -f 567/1019/10 578/1020/4 566/1007/4 -f 564/1021/13 575/1022/5 563/1010/5 -f 559/1018/16 582/1023/12 570/1013/12 -f 561/1024/19 571/1025/8 560/1016/8 -f 568/1026/14 579/1027/10 567/1019/10 -f 565/1009/17 576/1028/13 564/1021/13 -f 562/1029/21 573/1030/19 561/1024/19 -f 568/1026/14 581/1014/3 580/1031/14 -f 599/1032/5 588/1033/13 587/1034/5 -f 606/1035/12 583/1036/16 594/1037/12 -f 596/1038/8 585/1039/19 584/1040/8 -f 603/1041/10 592/1042/14 591/1043/10 -f 600/1044/13 589/1045/17 588/1033/13 -f 597/1046/19 586/1047/21 585/1039/19 -f 604/1048/14 593/1049/3 592/1042/14 -f 601/1050/17 590/1051/4 589/1045/17 -f 598/1052/21 587/1034/5 586/1053/21 -f 605/1054/3 594/1037/12 593/1049/3 -f 595/1055/16 584/1040/8 583/1036/16 -f 602/1056/4 591/1043/10 590/1051/4 -f 624/1057/114 649/1058/115 648/1059/116 -f 616/459/117 611/447/118 610/457/117 -f 614/463/119 609/455/1 608/451/119 -f 615/461/1 610/457/117 609/455/1 -f 613/450/120 608/451/119 607/448/120 -f 634/1060/121 619/1061/2 626/1062/121 -f 628/1063/122 621/1064/123 620/1065/122 -f 633/1066/124 626/1062/121 625/1067/124 -f 619/1061/2 628/1063/122 620/1065/122 -f 624/1057/125 640/1068/126 630/1069/127 -f 618/1070/128 635/1071/129 636/1072/130 -f 623/1073/131 637/1074/132 638/1075/131 -f 630/1069/127 641/1076/133 631/1077/134 -f 623/1078/131 639/1079/135 624/1057/125 -f 612/1080/136 642/1081/137 635/1071/129 -f 622/1082/138 636/1072/130 637/1074/132 -f 631/1077/134 642/1081/137 632/1083/137 -f 618/1070/139 644/1084/140 612/1080/141 -f 623/1073/142 646/1085/143 622/1082/144 -f 630/1069/145 650/1086/146 649/1058/115 -f 623/1078/142 648/1059/116 647/1087/142 -f 612/1080/141 643/1088/147 632/1083/147 -f 622/1082/144 645/1089/148 618/1070/139 -f 631/1077/149 643/1088/147 650/1086/146 -f 653/1090/150 660/1091/151 652/1092/152 -f 658/1093/153 665/1094/154 657/1095/155 -f 656/1096/156 663/1097/157 655/1098/157 -f 654/1099/158 661/1100/159 653/1101/150 -f 651/1102/160 660/1091/151 659/1103/160 -f 658/1093/153 659/1103/160 666/1104/161 -f 657/1095/155 664/1105/162 656/1096/156 -f 655/1098/157 662/1106/163 654/1099/158 -f 652/1107/152 669/1108/8 653/1109/150 -f 657/1095/155 674/1110/164 658/1093/153 -f 655/1111/157 672/1112/165 656/1096/156 -f 653/1113/150 670/1114/166 654/1115/158 -f 651/1116/160 668/1117/167 652/1107/152 -f 658/1093/153 667/1118/2 651/1116/160 -f 656/1096/156 673/1119/4 657/1095/155 -f 654/1115/158 671/1120/1 655/1111/157 -f 664/1105/162 679/1121/1 663/1122/157 -f 662/1123/163 677/1124/5 661/1125/159 -f 660/1126/151 675/1127/2 659/1128/160 -f 659/1128/160 682/1129/168 666/1104/161 -f 665/1094/154 680/1130/169 664/1105/162 -f 663/1122/157 678/1131/6 662/1123/163 -f 661/1132/159 676/1133/7 660/1126/151 -f 666/1104/161 681/1134/3 665/1094/154 -f 684/1135/152 693/1136/159 692/1137/151 -f 689/1138/155 698/1139/161 697/1140/154 -f 688/1141/156 695/1142/157 687/1143/157 -f 685/1144/150 694/1145/163 693/1146/159 -f 683/1147/160 692/1137/151 691/1148/160 -f 690/1149/153 691/1148/160 698/1139/161 -f 689/1138/155 696/1150/162 688/1141/156 -f 687/1143/157 694/1145/163 686/1151/158 -f 684/1152/152 701/1153/8 685/1154/150 -f 689/1138/155 706/1155/164 690/1149/153 -f 687/1156/157 704/1157/165 688/1141/156 -f 685/1158/150 702/1159/166 686/1160/158 -f 683/1161/160 700/1162/167 684/1152/152 -f 690/1149/153 699/1163/2 683/1161/160 -f 688/1141/156 705/1164/4 689/1138/155 -f 686/1160/158 703/1165/1 687/1156/157 -f 696/1150/162 711/1166/1 695/1167/157 -f 694/1168/163 709/1169/5 693/1170/159 -f 692/1171/151 707/1172/2 691/1173/160 -f 691/1173/160 714/1174/168 698/1139/161 -f 697/1140/154 712/1175/169 696/1150/162 -f 695/1167/157 710/1176/6 694/1168/163 -f 693/1177/159 708/1178/7 692/1171/151 -f 698/1139/161 713/1179/3 697/1140/154 -f 721/1180/170 730/1181/171 722/1182/172 -f 719/1183/173 728/1184/174 720/1185/175 -f 717/1186/176 726/1187/177 718/1188/178 -f 715/1189/179 724/1190/180 716/1191/181 -f 722/1182/172 723/1192/182 715/1189/179 -f 720/1185/175 729/1193/183 721/1180/170 -f 718/1188/178 727/1194/184 719/1183/173 -f 716/1191/181 725/1195/185 717/1196/176 -f 725/1197/185 734/1198/186 726/1187/177 -f 724/1190/180 731/1199/187 732/1200/188 -f 723/1201/182 737/1202/189 731/1199/187 -f 726/1187/177 735/1203/190 727/1204/184 -f 724/1190/180 733/1205/167 725/1195/185 -f 727/1204/184 736/1206/191 728/1207/174 -f 729/1208/183 737/1202/189 730/1209/171 -f 728/1207/174 736/1206/191 729/1208/183 -f 736/1206/191 742/1210/192 743/1211/193 -f 734/1198/186 740/1212/194 741/1213/7 -f 731/1199/187 739/1214/195 732/1200/188 -f 737/1202/189 738/1215/196 731/1199/187 -f 735/1203/190 741/1213/7 742/1210/192 -f 732/1200/188 740/1216/194 733/1205/167 -f 737/1202/189 729/1208/183 744/1217/169 -f 736/1206/191 743/1211/193 729/1208/183 -f 742/1218/192 750/1219/197 743/1220/193 -f 744/1221/169 745/1222/198 751/1223/199 -f 741/1224/7 747/1225/200 748/1226/201 -f 743/1220/193 745/1222/198 729/1227/183 -f 741/1224/7 749/1228/202 742/1218/192 -f 740/1229/194 746/1230/203 747/1231/200 -f 746/1230/203 754/1232/204 747/1231/200 -f 750/1219/197 752/1233/205 745/1222/198 -f 750/1219/197 756/1234/206 757/1235/207 -f 748/1226/201 754/1236/204 755/1237/208 -f 751/1223/199 752/1233/205 758/1238/209 -f 749/1228/202 755/1237/208 756/1234/206 -f 744/1221/169 751/1223/199 738/1239/196 -f 751/1223/199 758/1238/209 738/1239/196 -f 738/1239/196 746/1230/203 739/1240/195 -f 746/1230/203 738/1239/196 753/1241/210 -f 738/1242/196 761/1243/211 753/1244/210 -f 757/1235/207 760/1245/212 752/1246/205 -f 758/1247/209 759/1248/213 738/1242/196 -f 756/1234/206 765/1249/214 757/1235/207 -f 755/1237/208 762/1250/215 763/1251/216 -f 752/1246/205 766/1252/217 758/1247/209 -f 755/1237/208 764/1253/218 756/1234/206 -f 753/1244/210 762/1254/215 754/1255/204 -f 765/1249/214 771/1256/219 772/1257/220 -f 763/1251/216 769/1258/221 770/1259/222 -f 760/1260/212 773/1261/223 766/1262/217 -f 763/1251/216 771/1256/219 764/1253/218 -f 762/1263/215 768/1264/224 769/1265/221 -f 765/1249/214 767/1266/225 760/1260/212 -f 772/1257/220 774/1267/226 767/1266/225 -f 772/1257/220 778/1268/227 779/1269/228 -f 770/1259/222 776/1270/229 777/1271/230 -f 767/1266/225 780/1272/231 773/1261/223 -f 770/1259/222 778/1268/227 771/1256/219 -f 769/1265/221 775/1273/232 776/1274/229 -f 766/1262/217 773/1261/223 759/1275/213 -f 773/1261/223 780/1272/231 759/1275/213 -f 759/1275/213 768/1264/224 761/1276/211 -f 768/1264/224 759/1275/213 775/1273/232 -f 759/1277/213 783/1278/233 775/1279/232 -f 779/1269/228 782/1280/165 774/1281/226 -f 780/1282/231 781/1283/234 759/1277/213 -f 778/1268/227 787/1284/235 779/1269/228 -f 776/1285/229 785/1286/236 777/1271/230 -f 774/1281/226 788/1287/237 780/1282/231 -f 777/1271/230 786/1288/238 778/1268/227 -f 775/1279/232 784/1289/239 776/1290/229 -f 785/1286/236 791/1291/167 792/1292/188 -f 781/1293/234 795/1294/191 789/1295/190 -f 786/1296/238 792/1292/188 793/1297/187 -f 783/1278/233 791/1298/167 784/1289/239 -f 781/1293/234 790/1299/186 783/1278/233 -f 786/1296/238 794/1300/189 787/1301/235 -f 789/1295/190 797/1302/177 790/1299/186 -f 793/1297/187 801/1303/171 794/1300/189 -f 792/1292/188 798/1304/185 799/1305/180 -f 789/1295/190 802/1306/174 796/1307/184 -f 793/1297/187 799/1305/180 800/1308/182 -f 790/1299/186 798/1309/185 791/1298/167 -f 787/1301/235 794/1300/189 782/1310/165 -f 794/1300/189 801/1303/171 782/1310/165 -f 788/1311/237 782/1310/165 795/1294/191 -f 795/1294/191 782/1310/165 802/1306/174 -f 782/1312/165 810/1313/175 802/1314/174 -f 796/1315/184 805/1316/178 797/1302/177 -f 801/1317/171 803/1318/170 782/1312/165 -f 800/1319/182 809/1320/172 801/1317/171 -f 799/1305/180 806/1321/176 807/1322/181 -f 802/1314/174 804/1323/7 796/1315/184 -f 799/1305/180 808/1324/179 800/1319/182 -f 797/1302/177 806/1325/176 798/1309/185 -f 721/1326/170 817/1327/240 816/1328/241 -f 718/1329/178 813/1330/242 717/1331/176 -f 716/1191/181 811/1332/169 715/1189/179 -f 722/1182/172 811/1332/169 817/1327/240 -f 720/1333/175 816/1328/241 815/1334/243 -f 717/1335/176 812/1336/244 716/1191/181 -f 811/1332/169 824/1337/165 817/1327/240 -f 816/1328/241 822/1338/245 815/1334/243 -f 812/1336/244 820/1339/246 819/1340/247 -f 817/1327/240 823/1341/248 816/1328/241 -f 814/1342/249 820/1343/246 813/1330/242 -f 812/1336/244 818/1344/250 811/1332/169 -f 718/1329/178 719/1345/173 814/1342/249 -f 814/1342/249 719/1345/173 821/1346/167 -f 720/1333/175 815/1334/243 719/1345/173 -f 815/1334/243 822/1338/245 719/1345/173 -f 719/1347/173 828/1348/203 821/1349/167 -f 822/1350/245 830/1351/202 829/1352/201 -f 823/1353/248 831/1354/197 830/1351/202 -f 818/1355/250 827/1356/199 826/1357/198 -f 822/1350/245 825/1358/200 719/1359/173 -f 824/1360/165 826/1357/198 831/1354/197 -f 828/1348/203 832/1361/251 835/1362/252 -f 831/1354/197 837/1363/253 830/1351/202 -f 827/1356/199 833/1364/254 826/1357/198 -f 825/1358/200 836/1365/255 832/1366/251 -f 826/1357/198 838/1367/256 831/1354/197 -f 829/1352/201 837/1363/253 836/1365/255 -f 821/1349/167 828/1348/203 820/1368/246 -f 828/1348/203 835/1362/252 820/1368/246 -f 819/1369/247 820/1368/246 827/1356/199 -f 827/1356/199 820/1368/246 834/1370/257 -f 832/1371/251 843/1372/236 835/1373/252 -f 838/1367/256 845/1374/234 837/1363/253 -f 834/1375/257 841/1376/165 833/1377/254 -f 820/1378/246 842/1379/235 834/1375/257 -f 836/1365/255 840/1380/239 832/1381/251 -f 835/1373/252 839/1382/238 820/1378/246 -f 833/1377/254 846/1383/237 838/1367/256 -f 837/1363/253 844/1384/233 836/1365/255 -f 809/1320/172 847/1385/241 803/1386/170 -f 808/1324/179 850/1387/244 851/1388/169 -f 805/1389/178 849/1390/242 806/1391/176 -f 803/1386/170 853/1392/243 810/1393/175 -f 808/1324/179 852/1394/240 809/1320/172 -f 807/1322/181 849/1395/242 850/1387/244 -f 852/1394/240 854/1396/258 847/1385/241 -f 851/1388/169 857/1397/259 858/1398/260 -f 849/1390/242 855/1399/261 856/1400/262 -f 847/1385/241 860/1401/263 853/1392/243 -f 851/1388/169 859/1402/264 852/1394/240 -f 850/1387/244 856/1403/262 857/1397/259 -f 810/1393/175 853/1392/243 804/1404/7 -f 853/1392/243 860/1401/263 804/1404/7 -f 804/1404/7 848/1405/249 805/1389/178 -f 848/1405/249 804/1404/7 855/1399/261 -f 859/1402/264 862/1406/265 854/1407/258 -f 858/1398/260 865/1408/266 866/1409/267 -f 855/1410/261 864/1411/268 856/1412/262 -f 804/1413/7 863/1414/269 855/1410/261 -f 854/1407/258 868/1415/270 860/1416/263 -f 804/1413/7 868/1415/270 861/1417/168 -f 858/1398/260 867/1418/271 859/1402/264 -f 857/1397/259 864/1419/268 865/1408/266 -f 839/1420/238 871/1421/189 842/1422/235 -f 844/1384/233 870/1423/167 840/1380/239 -f 845/1424/234 873/1425/186 844/1384/233 -f 843/1372/236 869/1426/187 839/1420/238 -f 843/1372/236 870/1427/167 872/1428/188 -f 846/1429/237 874/1430/190 845/1424/234 -f 869/1426/187 879/1431/180 876/1432/182 -f 872/1428/188 877/1433/185 879/1431/180 -f 873/1425/186 881/1434/184 880/1435/177 -f 871/1421/189 876/1432/182 878/1436/171 -f 873/1425/186 877/1437/185 870/1423/167 -f 875/1438/191 881/1434/184 874/1430/190 -f 842/1422/235 871/1421/189 841/1439/165 -f 871/1421/189 878/1436/171 841/1439/165 -f 846/1429/237 841/1439/165 875/1438/191 -f 875/1438/191 841/1439/165 882/1440/174 -f 877/1433/185 887/1441/272 879/1431/180 -f 881/1434/184 888/1442/273 880/1435/177 -f 841/1443/165 890/1444/274 882/1445/174 -f 862/1446/265 896/1447/275 868/1448/270 -f 878/1449/171 883/1450/276 841/1443/165 -f 880/1435/177 885/1451/277 877/1437/185 -f 882/1445/174 889/1452/278 881/1453/184 -f 866/1409/267 895/1454/279 867/1418/271 -f 865/1408/266 892/1455/280 893/1456/281 -f 867/1418/271 884/1457/282 862/1446/265 -f 866/1409/267 893/1456/281 894/1458/6 -f 864/1459/268 891/1460/283 892/1461/280 -f 861/1462/168 891/1460/283 863/1463/269 -f 868/1448/270 896/1447/275 861/1462/168 -f 888/1442/273 894/1458/6 893/1456/281 -f 889/1452/278 895/1454/279 894/1458/6 -f 884/1457/282 890/1444/274 883/1464/276 -f 883/1464/276 896/1447/275 884/1457/282 -f 885/1465/277 893/1456/281 892/1455/280 -f 885/1466/277 891/1460/283 887/1467/272 -f 891/1460/283 861/1462/168 887/1467/272 -f 896/1447/275 886/1468/284 861/1462/168 -f 876/1469/182 886/1470/284 878/1449/171 -f 887/1441/272 876/1469/182 879/1431/180 -f 4/21/14 26/33/14 25/35/3 -f 36/38/12 24/18/12 2/20/3 -f 35/40/16 22/28/16 24/18/12 -f 34/42/8 20/1/8 22/28/16 -f 33/44/19 18/7/19 20/1/8 -f 32/46/21 16/10/21 18/7/19 -f 31/48/5 14/9/5 16/10/21 -f 14/11/5 31/626/5 30/49/13 -f 12/14/13 30/49/13 29/4/17 -f 10/16/17 29/4/17 28/29/4 -f 8/23/4 28/29/4 27/31/10 -f 6/27/10 27/31/10 26/33/14 -f 42/12/12 54/812/12 55/804/3 -f 39/24/19 51/814/19 52/805/8 -f 46/3/4 58/815/4 59/806/17 -f 43/625/3 55/1471/3 56/807/14 -f 40/17/8 52/805/8 53/808/16 -f 47/25/17 59/806/17 60/809/13 -f 38/19/5 50/813/5 49/810/21 -f 44/8/14 56/807/14 57/811/10 -f 41/15/16 53/808/16 54/812/12 -f 48/26/13 60/809/13 50/813/5 -f 39/24/19 37/22/21 49/810/21 -f 46/3/4 45/2/10 57/811/10 -f 75/66/10 76/65/56 64/52/4 -f 82/74/55 83/73/16 71/61/16 -f 83/73/16 84/71/12 72/59/12 -f 73/69/3 74/67/14 62/54/14 -f 84/71/12 73/69/3 61/57/3 -f 74/67/14 75/66/10 63/627/10 -f 94/630/10 103/90/10 112/91/4 -f 96/86/55 114/98/8 113/97/16 -f 93/76/14 104/88/14 103/90/10 -f 97/631/16 113/97/16 115/95/12 -f 89/82/3 105/93/3 104/88/14 -f 98/85/12 115/95/12 105/93/3 -f 121/105/5 129/117/5 130/119/21 -f 119/110/17 127/113/17 128/115/13 -f 122/635/21 130/119/21 131/120/19 -f 120/111/13 128/115/13 129/116/5 -f 82/74/55 70/62/8 123/103/19 -f 123/103/19 131/120/19 82/74/55 -f 131/120/19 114/98/8 96/86/55 -f 119/110/17 64/52/4 76/65/56 -f 95/79/56 112/91/4 127/113/17 -f 119/110/17 76/65/56 127/113/17 -f 157/141/10 169/819/10 168/816/14 -f 149/132/21 161/820/21 162/817/5 -f 142/147/13 13/839/13 11/818/5 -f 158/139/4 170/822/4 169/819/10 -f 151/130/19 163/823/19 161/820/21 -f 143/146/5 11/1472/5 9/821/21 -f 159/137/17 171/825/17 170/822/4 -f 152/128/8 164/827/8 163/823/19 -f 144/144/21 9/821/21 7/824/19 -f 160/135/13 172/829/13 171/825/17 -f 137/133/3 21/838/3 23/826/14 -f 153/126/16 165/831/16 164/827/8 -f 145/142/19 7/824/19 5/828/8 -f 150/134/5 162/817/5 172/829/13 -f 138/131/14 23/826/14 19/830/10 -f 154/125/12 166/834/12 165/831/16 -f 146/140/8 5/828/8 3/832/16 -f 139/129/10 19/830/10 17/833/4 -f 155/148/3 167/1473/3 166/834/12 -f 147/138/16 3/832/16 1/835/12 -f 140/127/4 17/833/4 15/836/17 -f 156/143/14 168/816/14 167/837/3 -f 148/136/12 1/835/12 21/838/3 -f 141/124/17 15/836/17 13/839/13 -f 174/169/14 183/842/14 182/840/3 -f 179/165/12 188/843/12 187/841/16 -f 175/171/10 184/844/10 183/842/14 -f 173/167/3 182/840/3 188/843/12 -f 176/150/4 185/876/4 184/844/10 -f 178/164/16 187/841/16 186/845/8 -f 189/846/3 196/190/3 202/191/12 -f 194/848/16 201/193/16 200/195/55 -f 191/850/10 198/184/10 197/187/14 -f 195/847/12 202/191/12 201/193/16 -f 192/852/4 199/201/56 198/184/10 -f 190/851/14 197/187/14 196/190/3 -f 206/853/21 211/643/21 210/177/5 -f 204/855/13 209/172/13 208/174/17 -f 207/857/19 212/180/19 211/643/21 -f 205/858/5 210/175/5 209/172/13 -f 199/201/56 192/852/4 203/856/17 -f 203/856/17 208/174/17 199/201/56 -f 193/849/8 200/195/55 207/857/19 -f 200/195/55 219/198/285 212/180/19 -f 983/859/17 181/163/17 320/160/4 -f 976/861/8 326/151/8 327/170/19 -f 979/863/3 323/639/3 324/153/12 -f 982/860/4 320/160/4 321/161/10 -f 975/862/19 327/170/19 328/641/21 -f 973/867/5 329/168/5 180/166/13 -f 978/864/12 324/153/12 325/149/16 -f 981/865/10 321/161/10 322/157/14 -f 974/866/21 328/641/21 329/168/5 -f 984/868/13 180/166/13 181/163/17 -f 977/869/16 325/149/16 326/151/8 -f 980/870/14 322/157/14 323/640/3 -f 347/159/19 352/877/19 353/872/21 -f 349/155/5 354/1474/5 351/873/13 -f 346/154/13 351/873/13 350/874/17 -f 348/158/21 353/872/21 354/875/5 -f 345/152/17 350/874/17 185/876/4 -f 352/877/19 347/159/19 177/162/8 -f 366/878/2 368/881/58 367/879/58 -f 368/881/58 370/1475/59 369/882/59 -f 369/882/59 370/1475/59 372/883/5 -f 372/885/5 374/888/60 373/886/60 -f 374/888/60 376/890/61 375/889/61 -f 376/890/61 378/892/1 377/891/1 -f 378/892/1 380/894/62 379/893/62 -f 380/894/62 382/896/63 381/895/63 -f 382/896/63 384/898/3 383/897/3 -f 384/898/3 386/900/64 385/899/64 -f 386/900/64 388/902/65 387/901/65 -f 388/902/65 366/878/2 365/880/2 -f 428/903/66 429/940/67 441/904/67 -f 428/906/66 440/1476/66 439/907/68 -f 438/909/69 427/943/68 439/910/68 -f 438/912/69 450/1477/69 449/913/70 -f 436/915/71 437/946/70 449/916/70 -f 436/918/71 448/1478/71 447/919/72 -f 435/921/72 447/1479/72 446/922/73 -f 433/924/74 434/950/73 446/925/73 -f 433/927/74 445/1480/74 444/928/75 -f 431/930/76 432/953/75 444/931/75 -f 430/933/77 431/955/76 443/934/76 -f 430/936/77 442/1481/77 441/937/67 -f 452/939/78 453/1482/79 429/940/79 -f 451/941/80 452/1483/78 428/906/78 -f 438/909/81 462/1484/81 451/942/80 -f 461/944/82 462/1485/81 438/912/81 -f 436/915/83 460/1486/83 461/945/82 -f 459/947/84 460/1487/83 436/918/83 -f 434/923/85 458/1488/85 459/948/84 -f 433/924/86 457/1489/86 458/949/85 -f 456/951/87 457/1490/86 433/927/86 -f 455/952/88 456/1491/87 432/953/87 -f 454/954/89 455/1492/88 431/955/88 -f 453/956/79 454/1493/89 430/936/89 -f 508/957/21 520/970/94 519/958/90 -f 503/960/3 515/980/100 526/961/91 -f 505/963/16 517/972/95 516/964/92 -f 512/966/4 524/974/96 523/967/93 -f 509/969/5 521/1494/97 520/970/94 -f 506/971/8 518/978/98 517/972/95 -f 513/973/10 525/979/99 524/974/96 -f 510/975/13 522/981/101 521/976/97 -f 507/959/19 519/958/90 518/978/98 -f 514/962/14 526/961/91 525/979/99 -f 504/965/12 516/964/92 515/980/100 -f 511/968/17 523/967/93 522/981/101 -f 525/979/99 537/986/106 536/982/102 -f 522/981/101 534/988/108 533/983/103 -f 519/958/90 531/990/110 530/984/104 -f 525/979/99 526/961/91 538/985/105 -f 516/964/92 528/991/111 527/987/107 -f 523/967/93 535/992/112 534/988/108 -f 519/958/90 520/970/94 532/989/109 -f 515/980/100 527/987/107 538/985/105 -f 517/972/95 529/994/113 528/991/111 -f 524/974/96 536/982/102 535/992/112 -f 520/970/94 521/1494/97 533/993/103 -f 518/978/98 530/984/104 529/994/113 -f 566/1007/4 578/1020/4 577/1008/17 -f 563/1010/5 575/1022/5 574/1011/21 -f 570/1013/12 582/1023/12 581/1014/3 -f 560/1016/8 571/1025/8 572/1017/16 -f 567/1019/10 579/1027/10 578/1020/4 -f 564/1021/13 576/1028/13 575/1022/5 -f 559/1018/16 572/1017/16 582/1023/12 -f 561/1024/19 573/1030/19 571/1025/8 -f 568/1026/14 580/1031/14 579/1027/10 -f 565/1009/17 577/1008/17 576/1028/13 -f 562/1029/21 574/1495/21 573/1030/19 -f 568/1026/14 569/1015/3 581/1014/3 -f 599/1032/5 600/1044/13 588/1033/13 -f 606/1035/12 595/1055/16 583/1036/16 -f 596/1038/8 597/1046/19 585/1039/19 -f 603/1041/10 604/1048/14 592/1042/14 -f 600/1044/13 601/1050/17 589/1045/17 -f 597/1046/19 598/1496/21 586/1047/21 -f 604/1048/14 605/1054/3 593/1049/3 -f 601/1050/17 602/1056/4 590/1051/4 -f 598/1052/21 599/1032/5 587/1034/5 -f 605/1054/3 606/1035/12 594/1037/12 -f 595/1055/16 596/1038/8 584/1040/8 -f 602/1056/4 603/1041/10 591/1043/10 -f 624/1057/114 630/1069/145 649/1058/115 -f 616/459/117 617/445/118 611/447/118 -f 614/463/119 615/461/1 609/455/1 -f 615/461/1 616/459/117 610/457/117 -f 613/450/120 614/463/119 608/451/119 -f 634/1060/121 627/1497/2 619/1061/2 -f 628/1063/122 629/1498/123 621/1064/123 -f 633/1066/124 634/1060/121 626/1062/121 -f 619/1061/2 627/1497/2 628/1063/122 -f 624/1057/125 639/1079/135 640/1068/126 -f 618/1070/128 612/1080/136 635/1071/129 -f 623/1073/131 622/1082/138 637/1074/132 -f 630/1069/127 640/1068/126 641/1076/133 -f 623/1078/131 638/1499/131 639/1079/135 -f 612/1080/136 632/1083/137 642/1081/137 -f 622/1082/138 618/1070/128 636/1072/130 -f 631/1077/134 641/1076/133 642/1081/137 -f 618/1070/139 645/1089/148 644/1084/140 -f 623/1073/142 647/1500/142 646/1085/143 -f 630/1069/145 631/1077/149 650/1086/146 -f 623/1078/142 624/1057/114 648/1059/116 -f 612/1080/141 644/1084/140 643/1088/147 -f 622/1082/144 646/1085/143 645/1089/148 -f 631/1077/149 632/1083/147 643/1088/147 -f 653/1090/150 661/1501/159 660/1091/151 -f 658/1093/153 666/1104/161 665/1094/154 -f 656/1096/156 664/1105/162 663/1097/157 -f 654/1099/158 662/1106/163 661/1100/159 -f 651/1102/160 652/1092/152 660/1091/151 -f 658/1093/153 651/1102/160 659/1103/160 -f 657/1095/155 665/1094/154 664/1105/162 -f 655/1098/157 663/1097/157 662/1106/163 -f 652/1107/152 668/1117/167 669/1108/8 -f 657/1095/155 673/1119/4 674/1110/164 -f 655/1111/157 671/1120/1 672/1112/165 -f 653/1113/150 669/1502/8 670/1114/166 -f 651/1116/160 667/1118/2 668/1117/167 -f 658/1093/153 674/1110/164 667/1118/2 -f 656/1096/156 672/1112/165 673/1119/4 -f 654/1115/158 670/1114/166 671/1120/1 -f 664/1105/162 680/1130/169 679/1121/1 -f 662/1123/163 678/1131/6 677/1124/5 -f 660/1126/151 676/1133/7 675/1127/2 -f 659/1128/160 675/1127/2 682/1129/168 -f 665/1094/154 681/1134/3 680/1130/169 -f 663/1122/157 679/1121/1 678/1131/6 -f 661/1132/159 677/1503/5 676/1133/7 -f 666/1104/161 682/1129/168 681/1134/3 -f 684/1135/152 685/1504/150 693/1136/159 -f 689/1138/155 690/1149/153 698/1139/161 -f 688/1141/156 696/1150/162 695/1142/157 -f 685/1144/150 686/1151/158 694/1145/163 -f 683/1147/160 684/1135/152 692/1137/151 -f 690/1149/153 683/1147/160 691/1148/160 -f 689/1138/155 697/1140/154 696/1150/162 -f 687/1143/157 695/1142/157 694/1145/163 -f 684/1152/152 700/1162/167 701/1153/8 -f 689/1138/155 705/1164/4 706/1155/164 -f 687/1156/157 703/1165/1 704/1157/165 -f 685/1158/150 701/1505/8 702/1159/166 -f 683/1161/160 699/1163/2 700/1162/167 -f 690/1149/153 706/1155/164 699/1163/2 -f 688/1141/156 704/1157/165 705/1164/4 -f 686/1160/158 702/1159/166 703/1165/1 -f 696/1150/162 712/1175/169 711/1166/1 -f 694/1168/163 710/1176/6 709/1169/5 -f 692/1171/151 708/1178/7 707/1172/2 -f 691/1173/160 707/1172/2 714/1174/168 -f 697/1140/154 713/1179/3 712/1175/169 -f 695/1167/157 711/1166/1 710/1176/6 -f 693/1177/159 709/1506/5 708/1178/7 -f 698/1139/161 714/1174/168 713/1179/3 -f 721/1180/170 729/1193/183 730/1181/171 -f 719/1183/173 727/1194/184 728/1184/174 -f 717/1186/176 725/1197/185 726/1187/177 -f 715/1189/179 723/1192/182 724/1190/180 -f 722/1182/172 730/1181/171 723/1192/182 -f 720/1185/175 728/1184/174 729/1193/183 -f 718/1188/178 726/1187/177 727/1194/184 -f 716/1191/181 724/1190/180 725/1195/185 -f 725/1197/185 733/1507/167 734/1198/186 -f 724/1190/180 723/1201/182 731/1199/187 -f 723/1201/182 730/1209/171 737/1202/189 -f 726/1187/177 734/1198/186 735/1203/190 -f 724/1190/180 732/1200/188 733/1205/167 -f 727/1204/184 735/1203/190 736/1206/191 -f 736/1206/191 735/1203/190 742/1210/192 -f 734/1198/186 733/1507/167 740/1212/194 -f 731/1199/187 738/1215/196 739/1214/195 -f 737/1202/189 744/1217/169 738/1215/196 -f 735/1203/190 734/1198/186 741/1213/7 -f 732/1200/188 739/1214/195 740/1216/194 -f 742/1218/192 749/1228/202 750/1219/197 -f 744/1221/169 729/1227/183 745/1222/198 -f 741/1224/7 740/1508/194 747/1225/200 -f 743/1220/193 750/1219/197 745/1222/198 -f 741/1224/7 748/1226/201 749/1228/202 -f 740/1229/194 739/1240/195 746/1230/203 -f 746/1230/203 753/1241/210 754/1232/204 -f 750/1219/197 757/1235/207 752/1233/205 -f 750/1219/197 749/1228/202 756/1234/206 -f 748/1226/201 747/1225/200 754/1236/204 -f 751/1223/199 745/1222/198 752/1233/205 -f 749/1228/202 748/1226/201 755/1237/208 -f 738/1242/196 759/1248/213 761/1243/211 -f 757/1235/207 765/1249/214 760/1245/212 -f 758/1247/209 766/1252/217 759/1248/213 -f 756/1234/206 764/1253/218 765/1249/214 -f 755/1237/208 754/1509/204 762/1250/215 -f 752/1246/205 760/1245/212 766/1252/217 -f 755/1237/208 763/1251/216 764/1253/218 -f 753/1244/210 761/1243/211 762/1254/215 -f 765/1249/214 764/1253/218 771/1256/219 -f 763/1251/216 762/1510/215 769/1258/221 -f 760/1260/212 767/1266/225 773/1261/223 -f 763/1251/216 770/1259/222 771/1256/219 -f 762/1263/215 761/1276/211 768/1264/224 -f 765/1249/214 772/1257/220 767/1266/225 -f 772/1257/220 779/1269/228 774/1267/226 -f 772/1257/220 771/1256/219 778/1268/227 -f 770/1259/222 769/1258/221 776/1270/229 -f 767/1266/225 774/1267/226 780/1272/231 -f 770/1259/222 777/1271/230 778/1268/227 -f 769/1265/221 768/1264/224 775/1273/232 -f 759/1277/213 781/1283/234 783/1278/233 -f 779/1269/228 787/1284/235 782/1280/165 -f 780/1282/231 788/1287/237 781/1283/234 -f 778/1268/227 786/1288/238 787/1284/235 -f 776/1285/229 784/1511/239 785/1286/236 -f 774/1281/226 782/1280/165 788/1287/237 -f 777/1271/230 785/1286/236 786/1288/238 -f 775/1279/232 783/1278/233 784/1289/239 -f 785/1286/236 784/1511/239 791/1291/167 -f 781/1293/234 788/1311/237 795/1294/191 -f 786/1296/238 785/1286/236 792/1292/188 -f 783/1278/233 790/1299/186 791/1298/167 -f 781/1293/234 789/1295/190 790/1299/186 -f 786/1296/238 793/1297/187 794/1300/189 -f 789/1295/190 796/1307/184 797/1302/177 -f 793/1297/187 800/1308/182 801/1303/171 -f 792/1292/188 791/1291/167 798/1304/185 -f 789/1295/190 795/1294/191 802/1306/174 -f 793/1297/187 792/1292/188 799/1305/180 -f 790/1299/186 797/1302/177 798/1309/185 -f 782/1312/165 803/1318/170 810/1313/175 -f 796/1315/184 804/1323/7 805/1316/178 -f 801/1317/171 809/1320/172 803/1318/170 -f 800/1319/182 808/1324/179 809/1320/172 -f 799/1305/180 798/1304/185 806/1321/176 -f 802/1314/174 810/1313/175 804/1323/7 -f 799/1305/180 807/1322/181 808/1324/179 -f 797/1302/177 805/1316/178 806/1325/176 -f 721/1326/170 722/1182/172 817/1327/240 -f 718/1329/178 814/1342/249 813/1330/242 -f 716/1191/181 812/1336/244 811/1332/169 -f 722/1182/172 715/1189/179 811/1332/169 -f 720/1333/175 721/1326/170 816/1328/241 -f 717/1335/176 813/1512/242 812/1336/244 -f 811/1332/169 818/1344/250 824/1337/165 -f 816/1328/241 823/1341/248 822/1338/245 -f 812/1336/244 813/1512/242 820/1339/246 -f 817/1327/240 824/1337/165 823/1341/248 -f 814/1342/249 821/1346/167 820/1343/246 -f 812/1336/244 819/1340/247 818/1344/250 -f 719/1347/173 825/1513/200 828/1348/203 -f 822/1350/245 823/1353/248 830/1351/202 -f 823/1353/248 824/1360/165 831/1354/197 -f 818/1355/250 819/1369/247 827/1356/199 -f 822/1350/245 829/1352/201 825/1358/200 -f 824/1360/165 818/1355/250 826/1357/198 -f 828/1348/203 825/1513/200 832/1361/251 -f 831/1354/197 838/1367/256 837/1363/253 -f 827/1356/199 834/1370/257 833/1364/254 -f 825/1358/200 829/1352/201 836/1365/255 -f 826/1357/198 833/1364/254 838/1367/256 -f 829/1352/201 830/1351/202 837/1363/253 -f 832/1371/251 840/1514/239 843/1372/236 -f 838/1367/256 846/1383/237 845/1374/234 -f 834/1375/257 842/1379/235 841/1376/165 -f 820/1378/246 839/1382/238 842/1379/235 -f 836/1365/255 844/1384/233 840/1380/239 -f 835/1373/252 843/1372/236 839/1382/238 -f 833/1377/254 841/1376/165 846/1383/237 -f 837/1363/253 845/1374/234 844/1384/233 -f 809/1320/172 852/1394/240 847/1385/241 -f 808/1324/179 807/1322/181 850/1387/244 -f 805/1389/178 848/1405/249 849/1390/242 -f 803/1386/170 847/1385/241 853/1392/243 -f 808/1324/179 851/1388/169 852/1394/240 -f 807/1322/181 806/1515/176 849/1395/242 -f 852/1394/240 859/1402/264 854/1396/258 -f 851/1388/169 850/1387/244 857/1397/259 -f 849/1390/242 848/1405/249 855/1399/261 -f 847/1385/241 854/1396/258 860/1401/263 -f 851/1388/169 858/1398/260 859/1402/264 -f 850/1387/244 849/1395/242 856/1403/262 -f 859/1402/264 867/1418/271 862/1406/265 -f 858/1398/260 857/1397/259 865/1408/266 -f 855/1410/261 863/1414/269 864/1411/268 -f 804/1413/7 861/1417/168 863/1414/269 -f 854/1407/258 862/1406/265 868/1415/270 -f 804/1413/7 860/1416/263 868/1415/270 -f 858/1398/260 866/1409/267 867/1418/271 -f 857/1397/259 856/1516/262 864/1419/268 -f 839/1420/238 869/1426/187 871/1421/189 -f 844/1384/233 873/1425/186 870/1423/167 -f 845/1424/234 874/1430/190 873/1425/186 -f 843/1372/236 872/1428/188 869/1426/187 -f 843/1372/236 840/1514/239 870/1427/167 -f 846/1429/237 875/1438/191 874/1430/190 -f 869/1426/187 872/1428/188 879/1431/180 -f 872/1428/188 870/1427/167 877/1433/185 -f 873/1425/186 874/1430/190 881/1434/184 -f 871/1421/189 869/1426/187 876/1432/182 -f 873/1425/186 880/1435/177 877/1437/185 -f 875/1438/191 882/1440/174 881/1434/184 -f 877/1433/185 885/1517/277 887/1441/272 -f 881/1434/184 889/1452/278 888/1442/273 -f 841/1443/165 883/1450/276 890/1444/274 -f 862/1446/265 884/1457/282 896/1447/275 -f 878/1449/171 886/1470/284 883/1450/276 -f 880/1435/177 888/1442/273 885/1451/277 -f 882/1445/174 890/1444/274 889/1452/278 -f 866/1409/267 894/1458/6 895/1454/279 -f 865/1408/266 864/1518/268 892/1455/280 -f 867/1418/271 895/1454/279 884/1457/282 -f 866/1409/267 865/1408/266 893/1456/281 -f 864/1459/268 863/1463/269 891/1460/283 -f 888/1442/273 889/1452/278 894/1458/6 -f 889/1452/278 890/1444/274 895/1454/279 -f 884/1457/282 895/1454/279 890/1444/274 -f 883/1464/276 886/1468/284 896/1447/275 -f 885/1465/277 888/1442/273 893/1456/281 -f 885/1466/277 892/1461/280 891/1460/283 -f 876/1469/182 861/1519/168 886/1470/284 -f 887/1441/272 861/1519/168 876/1469/182 +f 509/716/173 520/1053/169 508/718/169 +f 501/707/170 514/1054/163 502/709/163 +f 494/722/178 482/1055/163 495/973/163 +f 510/714/164 521/1056/173 509/716/173 +f 503/705/174 513/1057/170 501/707/170 +f 495/721/163 481/1058/170 496/719/170 +f 511/712/176 522/1059/164 510/714/164 +f 504/703/165 515/1060/174 503/705/174 +f 496/719/170 480/1061/174 497/717/174 +f 512/710/178 523/1062/176 511/712/176 +f 489/708/162 488/1063/169 490/706/169 +f 505/701/167 516/1064/165 504/703/165 +f 497/717/174 479/1065/165 498/715/165 +f 502/709/163 524/1066/178 512/710/178 +f 490/706/169 486/1067/173 491/704/173 +f 506/700/171 517/1068/167 505/701/167 +f 498/715/165 478/1069/167 499/713/167 +f 491/704/173 485/1070/164 492/702/164 +f 507/723/162 518/1071/171 506/700/171 +f 499/713/167 477/1072/171 500/711/171 +f 492/702/164 484/1073/176 493/699/176 +f 508/718/169 519/1074/162 507/720/162 +f 500/711/171 487/1075/162 489/708/162 +f 493/699/176 483/1076/178 494/722/178 +f 526/744/169 534/1077/162 525/742/162 +f 531/740/171 539/1078/167 530/739/167 +f 527/746/173 535/1079/169 526/744/169 +f 525/742/162 540/1080/171 531/740/171 +f 528/725/164 536/1081/173 527/746/173 +f 530/739/167 538/1082/165 529/737/165 +f 541/1083/162 554/766/171 547/1084/171 +f 546/1085/167 552/770/180 545/1086/165 +f 543/1087/173 549/762/169 542/1088/169 +f 547/1084/171 553/768/167 546/1085/167 +f 544/1089/164 550/759/173 543/1087/173 +f 542/1088/169 548/765/162 541/1083/162 +f 558/1090/170 562/752/163 557/1091/163 +f 556/1092/178 560/749/176 555/1093/176 +f 559/1094/174 563/978/170 558/1090/170 +f 557/1095/163 561/747/178 556/1092/178 +f 560/749/176 570/774/181 551/776/182 +f 559/1094/174 552/770/180 564/755/174 +f 1023/1096/176 585/735/164 1022/1097/164 +f 1016/1098/165 592/745/174 1015/1099/174 +f 1019/1100/162 589/728/171 1018/1101/171 +f 1022/1097/164 586/736/173 1021/1102/173 +f 1015/1099/174 593/976/170 1014/1103/170 +f 1013/1104/163 532/741/178 1024/1105/178 +f 1018/1101/171 590/724/167 1017/1106/167 +f 1021/1102/173 587/732/169 1020/1107/169 +f 1014/1103/170 594/743/163 1013/1104/163 +f 1024/1105/178 533/738/176 1023/1096/176 +f 1017/1106/167 591/726/165 1016/1098/165 +f 1020/1107/169 588/975/162 1019/1108/162 +f 612/734/174 618/1109/170 613/733/170 +f 614/730/163 616/1110/178 611/729/178 +f 611/729/178 615/1111/176 610/727/176 +f 613/733/170 619/1112/163 614/731/163 +f 610/727/176 537/1113/164 528/725/164 +f 617/1114/174 529/737/165 538/1082/165 +f 631/1115/160 632/1116/183 630/1117/160 +f 633/1118/183 634/1119/184 632/1116/183 +f 634/1119/184 637/1120/163 636/1121/163 +f 637/1122/163 638/1123/185 636/1124/163 +f 639/1125/185 640/1126/186 638/1123/185 +f 641/1127/186 642/1128/161 640/1126/186 +f 643/1129/161 644/1130/187 642/1128/161 +f 645/1131/187 646/1132/188 644/1130/187 +f 647/1133/188 648/1134/162 646/1132/188 +f 649/1135/162 650/1136/189 648/1134/162 +f 651/1137/189 652/1138/190 650/1136/189 +f 653/1139/190 630/1117/160 652/1138/190 +f 669/1140/191 682/1141/192 681/1142/191 +f 669/1143/191 680/1144/193 668/1145/193 +f 679/1146/194 680/1147/193 691/1148/194 +f 679/1149/194 690/1150/195 678/1151/195 +f 677/1152/196 690/1153/195 689/1154/196 +f 677/1155/196 688/1156/197 676/1157/197 +f 676/1158/197 687/1159/198 675/1160/198 +f 674/1161/199 687/1162/198 686/1163/199 +f 674/1164/199 685/1165/200 673/1166/200 +f 672/1167/201 685/1168/200 684/1169/201 +f 671/1170/202 684/1171/201 683/1172/202 +f 671/1173/202 682/1174/192 670/1175/192 +f 693/1176/203 670/1177/204 669/1140/203 +f 692/1178/205 669/1143/203 668/1145/205 +f 679/1146/206 692/1179/205 668/1180/205 +f 702/1181/207 679/1149/206 678/1151/207 +f 677/1152/208 702/1182/207 678/1183/207 +f 700/1184/209 677/1155/208 676/1157/209 +f 675/1160/210 700/1185/209 676/1158/209 +f 674/1161/211 699/1186/210 675/1187/210 +f 697/1188/212 674/1164/211 673/1166/212 +f 696/1189/213 673/1190/212 672/1167/213 +f 695/1191/214 672/1192/213 671/1170/214 +f 694/1193/204 671/1173/214 670/1175/204 +f 761/1194/215 770/1195/216 762/1196/217 +f 759/1197/218 768/1198/219 760/1199/220 +f 757/1200/221 766/1201/222 758/1202/223 +f 755/1203/224 764/1204/225 756/1205/226 +f 762/1196/217 763/1206/227 755/1203/224 +f 760/1199/220 769/1207/228 761/1194/215 +f 758/1202/223 767/1208/229 759/1197/218 +f 756/1205/226 765/1209/230 757/1210/221 +f 765/1211/230 774/1212/231 766/1201/222 +f 764/1204/225 771/1213/232 772/1214/233 +f 763/1215/227 777/1216/234 771/1213/232 +f 766/1201/222 775/1217/235 767/1218/229 +f 764/1204/225 773/1219/236 765/1209/230 +f 767/1218/229 776/1220/237 768/1221/219 +f 769/1222/228 777/1216/234 770/1223/216 +f 768/1221/219 776/1220/237 769/1222/228 +f 776/1220/237 782/1224/238 783/1225/239 +f 774/1212/231 780/1226/240 781/1227/241 +f 771/1213/232 779/1228/242 772/1214/233 +f 777/1216/234 778/1229/243 771/1213/232 +f 775/1217/235 781/1227/241 782/1224/238 +f 772/1214/233 780/1230/240 773/1219/236 +f 777/1216/234 769/1222/228 784/1231/244 +f 776/1220/237 783/1225/239 769/1222/228 +f 782/1232/238 790/1233/245 783/1234/239 +f 784/1235/244 785/1236/246 791/1237/247 +f 781/1238/241 787/1239/248 788/1240/249 +f 783/1234/239 785/1236/246 769/1241/228 +f 781/1238/241 789/1242/250 782/1232/238 +f 780/1243/240 786/1244/251 787/1245/248 +f 786/1244/251 794/1246/252 787/1245/248 +f 790/1233/245 792/1247/253 785/1236/246 +f 790/1233/245 796/1248/254 797/1249/255 +f 788/1240/249 794/1250/252 795/1251/256 +f 791/1237/247 792/1247/253 798/1252/257 +f 789/1242/250 795/1251/256 796/1248/254 +f 784/1235/244 791/1237/247 778/1253/243 +f 791/1237/247 798/1252/257 778/1253/243 +f 778/1253/243 786/1244/251 779/1254/242 +f 786/1244/251 778/1253/243 793/1255/258 +f 778/1256/243 801/1257/259 793/1258/258 +f 797/1249/255 800/1259/260 792/1260/253 +f 798/1261/257 799/1262/261 778/1256/243 +f 796/1248/254 805/1263/262 797/1249/255 +f 795/1251/256 802/1264/263 803/1265/264 +f 792/1260/253 806/1266/265 798/1261/257 +f 795/1251/256 804/1267/266 796/1248/254 +f 793/1258/258 802/1268/263 794/1269/252 +f 805/1263/262 811/1270/267 812/1271/268 +f 803/1265/264 809/1272/269 810/1273/270 +f 800/1274/260 813/1275/271 806/1276/265 +f 803/1265/264 811/1270/267 804/1267/266 +f 802/1277/263 808/1278/272 809/1279/269 +f 805/1263/262 807/1280/273 800/1274/260 +f 812/1271/268 814/1281/274 807/1280/273 +f 812/1271/268 818/1282/275 819/1283/276 +f 810/1273/270 816/1284/277 817/1285/278 +f 807/1280/273 820/1286/279 813/1275/271 +f 810/1273/270 818/1282/275 811/1270/267 +f 809/1279/269 815/1287/280 816/1288/277 +f 806/1276/265 813/1275/271 799/1289/261 +f 813/1275/271 820/1286/279 799/1289/261 +f 799/1289/261 808/1278/272 801/1290/259 +f 808/1278/272 799/1289/261 815/1287/280 +f 799/1291/261 823/1292/281 815/1293/280 +f 819/1283/276 822/1294/282 814/1295/274 +f 820/1296/279 821/1297/283 799/1291/261 +f 818/1282/275 827/1298/284 819/1283/276 +f 816/1299/277 825/1300/285 817/1285/278 +f 814/1295/274 828/1301/286 820/1296/279 +f 817/1285/278 826/1302/287 818/1282/275 +f 815/1293/280 824/1303/288 816/1304/277 +f 825/1300/285 831/1305/236 832/1306/233 +f 821/1307/283 835/1308/237 829/1309/235 +f 826/1310/287 832/1306/233 833/1311/232 +f 823/1292/281 831/1312/236 824/1303/288 +f 821/1307/283 830/1313/231 823/1292/281 +f 826/1310/287 834/1314/234 827/1315/284 +f 829/1309/235 837/1316/222 830/1313/231 +f 833/1311/232 841/1317/216 834/1314/234 +f 832/1306/233 838/1318/230 839/1319/225 +f 829/1309/235 842/1320/219 836/1321/229 +f 833/1311/232 839/1319/225 840/1322/227 +f 830/1313/231 838/1323/230 831/1312/236 +f 827/1315/284 834/1314/234 822/1324/282 +f 834/1314/234 841/1317/216 822/1324/282 +f 828/1325/286 822/1324/282 835/1308/237 +f 835/1308/237 822/1324/282 842/1320/219 +f 822/1326/282 850/1327/220 842/1328/219 +f 836/1329/229 845/1330/223 837/1316/222 +f 841/1331/216 843/1332/215 822/1326/282 +f 840/1333/227 849/1334/217 841/1331/216 +f 839/1319/225 846/1335/221 847/1336/226 +f 842/1328/219 844/1337/241 836/1329/229 +f 839/1319/225 848/1338/224 840/1333/227 +f 837/1316/222 846/1339/221 838/1323/230 +f 761/1340/215 857/1341/289 856/1342/290 +f 758/1343/223 853/1344/291 757/1345/221 +f 756/1205/226 851/1346/244 755/1203/224 +f 762/1196/217 851/1346/244 857/1341/289 +f 760/1347/220 856/1342/290 855/1348/292 +f 757/1349/221 852/1350/293 756/1205/226 +f 851/1346/244 864/1351/282 857/1341/289 +f 856/1342/290 862/1352/294 855/1348/292 +f 852/1350/293 860/1353/295 859/1354/296 +f 857/1341/289 863/1355/297 856/1342/290 +f 854/1356/298 860/1357/295 853/1344/291 +f 852/1350/293 858/1358/299 851/1346/244 +f 758/1343/223 759/1359/218 854/1356/298 +f 854/1356/298 759/1359/218 861/1360/236 +f 760/1347/220 855/1348/292 759/1359/218 +f 855/1348/292 862/1352/294 759/1359/218 +f 759/1361/218 868/1362/251 861/1363/236 +f 862/1364/294 870/1365/250 869/1366/249 +f 863/1367/297 871/1368/245 870/1365/250 +f 858/1369/299 867/1370/247 866/1371/246 +f 862/1364/294 865/1372/248 759/1373/218 +f 864/1374/282 866/1371/246 871/1368/245 +f 868/1362/251 872/1375/300 875/1376/301 +f 871/1368/245 877/1377/302 870/1365/250 +f 867/1370/247 873/1378/303 866/1371/246 +f 865/1372/248 876/1379/304 872/1380/300 +f 866/1371/246 878/1381/305 871/1368/245 +f 869/1366/249 877/1377/302 876/1379/304 +f 861/1363/236 868/1362/251 860/1382/295 +f 868/1362/251 875/1376/301 860/1382/295 +f 859/1383/296 860/1382/295 867/1370/247 +f 867/1370/247 860/1382/295 874/1384/306 +f 872/1385/300 883/1386/285 875/1387/301 +f 878/1381/305 885/1388/283 877/1377/302 +f 874/1389/306 881/1390/282 873/1391/303 +f 860/1392/295 882/1393/284 874/1389/306 +f 876/1379/304 880/1394/288 872/1395/300 +f 875/1387/301 879/1396/287 860/1392/295 +f 873/1391/303 886/1397/286 878/1381/305 +f 877/1377/302 884/1398/281 876/1379/304 +f 849/1334/217 887/1399/290 843/1400/215 +f 848/1338/224 890/1401/293 891/1402/244 +f 845/1403/223 889/1404/291 846/1405/221 +f 843/1400/215 893/1406/292 850/1407/220 +f 848/1338/224 892/1408/289 849/1334/217 +f 847/1336/226 889/1409/291 890/1401/293 +f 892/1408/289 894/1410/307 887/1399/290 +f 891/1402/244 897/1411/308 898/1412/309 +f 889/1404/291 895/1413/310 896/1414/311 +f 887/1399/290 900/1415/312 893/1406/292 +f 891/1402/244 899/1416/313 892/1408/289 +f 890/1401/293 896/1417/311 897/1411/308 +f 850/1407/220 893/1406/292 844/1418/241 +f 893/1406/292 900/1415/312 844/1418/241 +f 844/1418/241 888/1419/298 845/1403/223 +f 888/1419/298 844/1418/241 895/1413/310 +f 899/1416/313 902/1420/314 894/1421/307 +f 898/1412/309 905/1422/315 906/1423/316 +f 895/1424/310 904/1425/317 896/1426/311 +f 844/1427/241 903/1428/318 895/1424/310 +f 894/1421/307 908/1429/319 900/1430/312 +f 844/1427/241 908/1429/319 901/1431/320 +f 898/1412/309 907/1432/321 899/1416/313 +f 897/1411/308 904/1433/317 905/1422/315 +f 879/1434/287 911/1435/234 882/1436/284 +f 884/1398/281 910/1437/236 880/1394/288 +f 885/1438/283 913/1439/231 884/1398/281 +f 883/1386/285 909/1440/232 879/1434/287 +f 883/1386/285 910/1441/236 912/1442/233 +f 886/1443/286 914/1444/235 885/1438/283 +f 909/1440/232 919/1445/225 916/1446/227 +f 912/1442/233 917/1447/230 919/1445/225 +f 913/1439/231 921/1448/229 920/1449/222 +f 911/1435/234 916/1446/227 918/1450/216 +f 913/1439/231 917/1451/230 910/1437/236 +f 915/1452/237 921/1448/229 914/1444/235 +f 882/1436/284 911/1435/234 881/1453/282 +f 911/1435/234 918/1450/216 881/1453/282 +f 886/1443/286 881/1453/282 915/1452/237 +f 915/1452/237 881/1453/282 922/1454/219 +f 917/1447/230 927/1455/322 919/1445/225 +f 921/1448/229 928/1456/323 920/1449/222 +f 881/1457/282 930/1458/324 922/1459/219 +f 902/1460/314 936/1461/325 908/1462/319 +f 918/1463/216 923/1464/326 881/1457/282 +f 920/1449/222 925/1465/327 917/1451/230 +f 922/1459/219 929/1466/328 921/1467/229 +f 906/1423/316 935/1468/329 907/1432/321 +f 905/1422/315 932/1469/330 933/1470/331 +f 907/1432/321 924/1471/332 902/1460/314 +f 906/1423/316 933/1470/331 934/1472/179 +f 904/1473/317 931/1474/333 932/1475/330 +f 901/1476/320 931/1474/333 903/1477/318 +f 908/1462/319 936/1461/325 901/1476/320 +f 928/1456/323 934/1472/179 933/1470/331 +f 929/1466/328 935/1468/329 934/1472/179 +f 924/1471/332 930/1458/324 923/1478/326 +f 923/1478/326 936/1461/325 924/1471/332 +f 925/1479/327 933/1470/331 932/1469/330 +f 925/1480/327 931/1474/333 927/1481/322 +f 931/1474/333 901/1476/320 927/1481/322 +f 936/1461/325 926/1482/334 901/1476/320 +f 916/1483/227 926/1484/334 918/1463/216 +f 927/1455/322 916/1483/227 919/1445/225 +f 509/716/173 521/1056/173 520/1053/169 +f 501/707/170 513/1057/170 514/1054/163 +f 494/722/178 483/1076/178 482/1055/163 +f 510/714/164 522/1059/164 521/1056/173 +f 503/705/174 515/1060/174 513/1057/170 +f 495/721/163 482/1485/163 481/1058/170 +f 511/712/176 523/1062/176 522/1059/164 +f 504/703/165 516/1064/165 515/1060/174 +f 496/719/170 481/1058/170 480/1061/174 +f 512/710/178 524/1066/178 523/1062/176 +f 489/708/162 487/1075/162 488/1063/169 +f 505/701/167 517/1068/167 516/1064/165 +f 497/717/174 480/1061/174 479/1065/165 +f 502/709/163 514/1054/163 524/1066/178 +f 490/706/169 488/1063/169 486/1067/173 +f 506/700/171 518/1071/171 517/1068/167 +f 498/715/165 479/1065/165 478/1069/167 +f 491/704/173 486/1067/173 485/1070/164 +f 507/723/162 519/1486/162 518/1071/171 +f 499/713/167 478/1069/167 477/1072/171 +f 492/702/164 485/1070/164 484/1073/176 +f 508/718/169 520/1053/169 519/1074/162 +f 500/711/171 477/1072/171 487/1075/162 +f 493/699/176 484/1073/176 483/1076/178 +f 526/744/169 535/1079/169 534/1077/162 +f 531/740/171 540/1080/171 539/1078/167 +f 527/746/173 536/1081/173 535/1079/169 +f 525/742/162 534/1077/162 540/1080/171 +f 528/725/164 537/1113/164 536/1081/173 +f 530/739/167 539/1078/167 538/1082/165 +f 541/1083/162 548/765/162 554/766/171 +f 546/1085/167 553/768/167 552/770/180 +f 543/1087/173 550/759/173 549/762/169 +f 547/1084/171 554/766/171 553/768/167 +f 544/1089/164 551/776/182 550/759/173 +f 542/1088/169 549/762/169 548/765/162 +f 558/1090/170 563/978/170 562/752/163 +f 556/1092/178 561/747/178 560/749/176 +f 559/1094/174 564/755/174 563/978/170 +f 557/1095/163 562/750/163 561/747/178 +f 551/776/182 544/1089/164 555/1093/176 +f 555/1093/176 560/749/176 551/776/182 +f 545/1086/165 552/770/180 559/1094/174 +f 552/770/180 571/773/335 564/755/174 +f 1023/1096/176 533/738/176 585/735/164 +f 1016/1098/165 591/726/165 592/745/174 +f 1019/1100/162 588/974/162 589/728/171 +f 1022/1097/164 585/735/164 586/736/173 +f 1015/1099/174 592/745/174 593/976/170 +f 1013/1104/163 594/743/163 532/741/178 +f 1018/1101/171 589/728/171 590/724/167 +f 1021/1102/173 586/736/173 587/732/169 +f 1014/1103/170 593/976/170 594/743/163 +f 1024/1105/178 532/741/178 533/738/176 +f 1017/1106/167 590/724/167 591/726/165 +f 1020/1107/169 587/732/169 588/975/162 +f 612/734/174 617/1114/174 618/1109/170 +f 614/730/163 619/1487/163 616/1110/178 +f 611/729/178 616/1110/178 615/1111/176 +f 613/733/170 618/1109/170 619/1112/163 +f 610/727/176 615/1111/176 537/1113/164 +f 617/1114/174 612/734/174 529/737/165 +f 631/1115/160 633/1118/183 632/1116/183 +f 633/1118/183 635/1488/184 634/1119/184 +f 634/1119/184 635/1488/184 637/1120/163 +f 637/1122/163 639/1125/185 638/1123/185 +f 639/1125/185 641/1127/186 640/1126/186 +f 641/1127/186 643/1129/161 642/1128/161 +f 643/1129/161 645/1131/187 644/1130/187 +f 645/1131/187 647/1133/188 646/1132/188 +f 647/1133/188 649/1135/162 648/1134/162 +f 649/1135/162 651/1137/189 650/1136/189 +f 651/1137/189 653/1139/190 652/1138/190 +f 653/1139/190 631/1115/160 630/1117/160 +f 669/1140/191 670/1177/192 682/1141/192 +f 669/1143/191 681/1489/191 680/1144/193 +f 679/1146/194 668/1180/193 680/1147/193 +f 679/1149/194 691/1490/194 690/1150/195 +f 677/1152/196 678/1183/195 690/1153/195 +f 677/1155/196 689/1491/196 688/1156/197 +f 676/1158/197 688/1492/197 687/1159/198 +f 674/1161/199 675/1187/198 687/1162/198 +f 674/1164/199 686/1493/199 685/1165/200 +f 672/1167/201 673/1190/200 685/1168/200 +f 671/1170/202 672/1192/201 684/1171/201 +f 671/1173/202 683/1494/202 682/1174/192 +f 693/1176/203 694/1495/204 670/1177/204 +f 692/1178/205 693/1496/203 669/1143/203 +f 679/1146/206 703/1497/206 692/1179/205 +f 702/1181/207 703/1498/206 679/1149/206 +f 677/1152/208 701/1499/208 702/1182/207 +f 700/1184/209 701/1500/208 677/1155/208 +f 675/1160/210 699/1501/210 700/1185/209 +f 674/1161/211 698/1502/211 699/1186/210 +f 697/1188/212 698/1503/211 674/1164/211 +f 696/1189/213 697/1504/212 673/1190/212 +f 695/1191/214 696/1505/213 672/1192/213 +f 694/1193/204 695/1506/214 671/1173/214 +f 761/1194/215 769/1207/228 770/1195/216 +f 759/1197/218 767/1208/229 768/1198/219 +f 757/1200/221 765/1211/230 766/1201/222 +f 755/1203/224 763/1206/227 764/1204/225 +f 762/1196/217 770/1195/216 763/1206/227 +f 760/1199/220 768/1198/219 769/1207/228 +f 758/1202/223 766/1201/222 767/1208/229 +f 756/1205/226 764/1204/225 765/1209/230 +f 765/1211/230 773/1507/236 774/1212/231 +f 764/1204/225 763/1215/227 771/1213/232 +f 763/1215/227 770/1223/216 777/1216/234 +f 766/1201/222 774/1212/231 775/1217/235 +f 764/1204/225 772/1214/233 773/1219/236 +f 767/1218/229 775/1217/235 776/1220/237 +f 776/1220/237 775/1217/235 782/1224/238 +f 774/1212/231 773/1507/236 780/1226/240 +f 771/1213/232 778/1229/243 779/1228/242 +f 777/1216/234 784/1231/244 778/1229/243 +f 775/1217/235 774/1212/231 781/1227/241 +f 772/1214/233 779/1228/242 780/1230/240 +f 782/1232/238 789/1242/250 790/1233/245 +f 784/1235/244 769/1241/228 785/1236/246 +f 781/1238/241 780/1508/240 787/1239/248 +f 783/1234/239 790/1233/245 785/1236/246 +f 781/1238/241 788/1240/249 789/1242/250 +f 780/1243/240 779/1254/242 786/1244/251 +f 786/1244/251 793/1255/258 794/1246/252 +f 790/1233/245 797/1249/255 792/1247/253 +f 790/1233/245 789/1242/250 796/1248/254 +f 788/1240/249 787/1239/248 794/1250/252 +f 791/1237/247 785/1236/246 792/1247/253 +f 789/1242/250 788/1240/249 795/1251/256 +f 778/1256/243 799/1262/261 801/1257/259 +f 797/1249/255 805/1263/262 800/1259/260 +f 798/1261/257 806/1266/265 799/1262/261 +f 796/1248/254 804/1267/266 805/1263/262 +f 795/1251/256 794/1509/252 802/1264/263 +f 792/1260/253 800/1259/260 806/1266/265 +f 795/1251/256 803/1265/264 804/1267/266 +f 793/1258/258 801/1257/259 802/1268/263 +f 805/1263/262 804/1267/266 811/1270/267 +f 803/1265/264 802/1510/263 809/1272/269 +f 800/1274/260 807/1280/273 813/1275/271 +f 803/1265/264 810/1273/270 811/1270/267 +f 802/1277/263 801/1290/259 808/1278/272 +f 805/1263/262 812/1271/268 807/1280/273 +f 812/1271/268 819/1283/276 814/1281/274 +f 812/1271/268 811/1270/267 818/1282/275 +f 810/1273/270 809/1272/269 816/1284/277 +f 807/1280/273 814/1281/274 820/1286/279 +f 810/1273/270 817/1285/278 818/1282/275 +f 809/1279/269 808/1278/272 815/1287/280 +f 799/1291/261 821/1297/283 823/1292/281 +f 819/1283/276 827/1298/284 822/1294/282 +f 820/1296/279 828/1301/286 821/1297/283 +f 818/1282/275 826/1302/287 827/1298/284 +f 816/1299/277 824/1511/288 825/1300/285 +f 814/1295/274 822/1294/282 828/1301/286 +f 817/1285/278 825/1300/285 826/1302/287 +f 815/1293/280 823/1292/281 824/1303/288 +f 825/1300/285 824/1511/288 831/1305/236 +f 821/1307/283 828/1325/286 835/1308/237 +f 826/1310/287 825/1300/285 832/1306/233 +f 823/1292/281 830/1313/231 831/1312/236 +f 821/1307/283 829/1309/235 830/1313/231 +f 826/1310/287 833/1311/232 834/1314/234 +f 829/1309/235 836/1321/229 837/1316/222 +f 833/1311/232 840/1322/227 841/1317/216 +f 832/1306/233 831/1305/236 838/1318/230 +f 829/1309/235 835/1308/237 842/1320/219 +f 833/1311/232 832/1306/233 839/1319/225 +f 830/1313/231 837/1316/222 838/1323/230 +f 822/1326/282 843/1332/215 850/1327/220 +f 836/1329/229 844/1337/241 845/1330/223 +f 841/1331/216 849/1334/217 843/1332/215 +f 840/1333/227 848/1338/224 849/1334/217 +f 839/1319/225 838/1318/230 846/1335/221 +f 842/1328/219 850/1327/220 844/1337/241 +f 839/1319/225 847/1336/226 848/1338/224 +f 837/1316/222 845/1330/223 846/1339/221 +f 761/1340/215 762/1196/217 857/1341/289 +f 758/1343/223 854/1356/298 853/1344/291 +f 756/1205/226 852/1350/293 851/1346/244 +f 762/1196/217 755/1203/224 851/1346/244 +f 760/1347/220 761/1340/215 856/1342/290 +f 757/1349/221 853/1512/291 852/1350/293 +f 851/1346/244 858/1358/299 864/1351/282 +f 856/1342/290 863/1355/297 862/1352/294 +f 852/1350/293 853/1512/291 860/1353/295 +f 857/1341/289 864/1351/282 863/1355/297 +f 854/1356/298 861/1360/236 860/1357/295 +f 852/1350/293 859/1354/296 858/1358/299 +f 759/1361/218 865/1513/248 868/1362/251 +f 862/1364/294 863/1367/297 870/1365/250 +f 863/1367/297 864/1374/282 871/1368/245 +f 858/1369/299 859/1383/296 867/1370/247 +f 862/1364/294 869/1366/249 865/1372/248 +f 864/1374/282 858/1369/299 866/1371/246 +f 868/1362/251 865/1513/248 872/1375/300 +f 871/1368/245 878/1381/305 877/1377/302 +f 867/1370/247 874/1384/306 873/1378/303 +f 865/1372/248 869/1366/249 876/1379/304 +f 866/1371/246 873/1378/303 878/1381/305 +f 869/1366/249 870/1365/250 877/1377/302 +f 872/1385/300 880/1514/288 883/1386/285 +f 878/1381/305 886/1397/286 885/1388/283 +f 874/1389/306 882/1393/284 881/1390/282 +f 860/1392/295 879/1396/287 882/1393/284 +f 876/1379/304 884/1398/281 880/1394/288 +f 875/1387/301 883/1386/285 879/1396/287 +f 873/1391/303 881/1390/282 886/1397/286 +f 877/1377/302 885/1388/283 884/1398/281 +f 849/1334/217 892/1408/289 887/1399/290 +f 848/1338/224 847/1336/226 890/1401/293 +f 845/1403/223 888/1419/298 889/1404/291 +f 843/1400/215 887/1399/290 893/1406/292 +f 848/1338/224 891/1402/244 892/1408/289 +f 847/1336/226 846/1515/221 889/1409/291 +f 892/1408/289 899/1416/313 894/1410/307 +f 891/1402/244 890/1401/293 897/1411/308 +f 889/1404/291 888/1419/298 895/1413/310 +f 887/1399/290 894/1410/307 900/1415/312 +f 891/1402/244 898/1412/309 899/1416/313 +f 890/1401/293 889/1409/291 896/1417/311 +f 899/1416/313 907/1432/321 902/1420/314 +f 898/1412/309 897/1411/308 905/1422/315 +f 895/1424/310 903/1428/318 904/1425/317 +f 844/1427/241 901/1431/320 903/1428/318 +f 894/1421/307 902/1420/314 908/1429/319 +f 844/1427/241 900/1430/312 908/1429/319 +f 898/1412/309 906/1423/316 907/1432/321 +f 897/1411/308 896/1516/311 904/1433/317 +f 879/1434/287 909/1440/232 911/1435/234 +f 884/1398/281 913/1439/231 910/1437/236 +f 885/1438/283 914/1444/235 913/1439/231 +f 883/1386/285 912/1442/233 909/1440/232 +f 883/1386/285 880/1514/288 910/1441/236 +f 886/1443/286 915/1452/237 914/1444/235 +f 909/1440/232 912/1442/233 919/1445/225 +f 912/1442/233 910/1441/236 917/1447/230 +f 913/1439/231 914/1444/235 921/1448/229 +f 911/1435/234 909/1440/232 916/1446/227 +f 913/1439/231 920/1449/222 917/1451/230 +f 915/1452/237 922/1454/219 921/1448/229 +f 917/1447/230 925/1517/327 927/1455/322 +f 921/1448/229 929/1466/328 928/1456/323 +f 881/1457/282 923/1464/326 930/1458/324 +f 902/1460/314 924/1471/332 936/1461/325 +f 918/1463/216 926/1484/334 923/1464/326 +f 920/1449/222 928/1456/323 925/1465/327 +f 922/1459/219 930/1458/324 929/1466/328 +f 906/1423/316 934/1472/179 935/1468/329 +f 905/1422/315 904/1518/317 932/1469/330 +f 907/1432/321 935/1468/329 924/1471/332 +f 906/1423/316 905/1422/315 933/1470/331 +f 904/1473/317 903/1477/318 931/1474/333 +f 928/1456/323 929/1466/328 934/1472/179 +f 929/1466/328 930/1458/324 935/1468/329 +f 924/1471/332 935/1468/329 930/1458/324 +f 923/1478/326 926/1482/334 936/1461/325 +f 925/1479/327 928/1456/323 933/1470/331 +f 925/1480/327 932/1475/330 931/1474/333 +f 916/1483/227 901/1519/320 926/1484/334 +f 927/1455/322 901/1519/320 916/1483/227 diff --git a/src/main/resources/assets/hbm/models/weapons/panzerschreck.obj b/src/main/resources/assets/hbm/models/weapons/panzerschreck.obj index 1686f3b41..150595f9b 100644 --- a/src/main/resources/assets/hbm/models/weapons/panzerschreck.obj +++ b/src/main/resources/assets/hbm/models/weapons/panzerschreck.obj @@ -1,6 +1,1521 @@ # Blender v2.79 (sub 0) OBJ File: 'panzerschreck.blend' # www.blender.org -o Cylinder +o Shield +v -0.500000 -1.500000 1.687500 +v 2.500000 -1.500000 1.687500 +v -0.500000 1.500000 1.687500 +v 2.500000 1.500000 1.687500 +v 0.500000 -2.000000 1.687500 +v 1.500000 -2.000000 1.687500 +v 1.500000 2.000000 1.687500 +v 0.500000 2.000000 1.687500 +v -0.500000 0.500000 1.687500 +v -0.500000 -0.500000 1.687500 +v 0.500000 0.500000 1.687500 +v 0.500000 -0.500000 1.687500 +v -0.500000 -0.500000 1.812500 +v -0.500000 -1.500000 1.812500 +v 1.500000 -2.000000 1.812500 +v 2.500000 -1.500000 1.812500 +v 2.500000 1.500000 1.812500 +v 0.500000 2.000000 1.812500 +v -0.500000 1.500000 1.812500 +v 0.500000 -2.000000 1.812500 +v 1.500000 2.000000 1.812500 +v -0.500000 0.500000 1.812500 +v 0.500000 0.500000 1.812500 +v 0.500000 -0.500000 1.812500 +v 0.375000 0.625000 1.687500 +v 1.125000 0.625000 1.687500 +v 0.375000 1.375000 1.687500 +v 1.125000 1.375000 1.687500 +v 0.375000 1.375000 1.812500 +v 0.375000 0.625000 1.812500 +v 1.125000 0.625000 1.812500 +v 1.125000 1.375000 1.812500 +vt 0.179612 0.909091 +vt 0.165049 0.984848 +vt 0.126214 0.924242 +vt 0.208738 0.818182 +vt 0.179612 0.833333 +vt 0.179612 0.818182 +vt 0.242718 0.681818 +vt 0.203883 0.696970 +vt 0.203883 0.681818 +vt -0.000000 0.560606 +vt 0.004854 0.681818 +vt -0.000000 0.681818 +vt 0.043689 1.000000 +vt 0.082524 0.984848 +vt 0.082524 1.000000 +vt 0.043689 0.484848 +vt 0.004854 0.500000 +vt 0.004854 0.484848 +vt 0.038835 0.681818 +vt 0.043689 0.803030 +vt 0.038835 0.803030 +vt 0.121359 0.484848 +vt 0.082524 0.500000 +vt 0.082524 0.484848 +vt -0.000000 0.803030 +vt 0.004854 0.924242 +vt 0.000000 0.924242 +vt 0.043689 0.500000 +vt 0.121359 0.560606 +vt 0.126214 0.560606 +vt 0.203883 0.803030 +vt 0.242718 0.787879 +vt 0.242718 0.803030 +vt 0.121359 0.984848 +vt 0.121359 1.000000 +vt 0.004854 1.000000 +vt 0.043689 0.984848 +vt 0.063107 0.818182 +vt 0.067961 0.909091 +vt 0.063107 0.909091 +vt 0.121359 0.924242 +vt 0.067961 0.818182 +vt 0.203883 0.984848 +vt 0.208738 0.909091 +vt 0.004854 0.803030 +vt 0.038835 0.818182 +vt 0.242718 0.924242 +vt 0.043689 0.681818 +vt 0.203883 0.500000 +vt 0.242718 0.560606 +vt 0.043689 0.909091 +vt 0.043689 0.818182 +vt 0.208738 0.893939 +vt 0.208738 0.833333 +vt 0.242718 0.696970 +vt 0.004854 0.560606 +vt 0.121359 0.500000 +vt 0.203883 0.787879 +vt 0.004854 0.984848 +vt 0.038835 0.909091 +vt 0.165049 0.500000 +vt 0.179612 0.893939 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.4472 -0.8944 0.0000 +vn 0.4472 -0.8944 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.4472 0.8944 0.0000 +vn -0.4472 0.8944 0.0000 +vn 0.0000 0.0000 1.0000 +s off +f 28/1/1 7/2/1 4/3/1 +f 25/4/2 31/5/2 26/6/2 +f 10/7/2 24/8/2 12/9/2 +f 1/10/3 13/11/3 10/12/3 +f 8/13/2 21/14/2 7/15/2 +f 5/16/4 14/17/4 1/18/4 +f 12/19/3 23/20/3 11/21/3 +f 2/22/5 15/23/5 6/24/5 +f 9/25/3 19/26/3 3/27/3 +f 6/24/6 20/28/6 5/16/6 +f 4/3/7 16/29/7 2/30/7 +f 11/31/6 22/32/6 9/33/6 +f 7/15/8 17/34/8 4/35/8 +f 3/36/9 18/37/9 8/13/9 +f 26/38/3 32/39/3 28/40/3 +f 17/41/10 32/39/10 31/42/10 +f 8/43/1 28/1/1 27/44/1 +f 18/37/10 32/39/10 21/14/10 +f 19/26/10 22/45/10 30/46/10 +f 25/4/1 9/33/1 3/47/1 +f 23/20/10 24/48/10 31/42/10 +f 11/31/1 25/4/1 26/6/1 +f 20/28/10 15/23/10 24/48/10 +f 12/9/1 5/49/1 1/50/1 +f 27/51/7 30/46/7 25/52/7 +f 28/1/6 29/53/6 27/44/6 +f 4/3/1 2/30/1 26/6/1 +f 26/6/1 28/1/1 4/3/1 +f 25/4/2 30/54/2 31/5/2 +f 10/7/2 13/55/2 24/8/2 +f 1/10/3 14/56/3 13/11/3 +f 8/13/2 18/37/2 21/14/2 +f 5/16/4 20/28/4 14/17/4 +f 12/19/3 24/48/3 23/20/3 +f 2/22/5 16/57/5 15/23/5 +f 9/25/3 22/45/3 19/26/3 +f 6/24/6 15/23/6 20/28/6 +f 4/3/7 17/41/7 16/29/7 +f 11/31/6 23/58/6 22/32/6 +f 7/15/8 21/14/8 17/34/8 +f 3/36/9 19/59/9 18/37/9 +f 26/38/3 31/42/3 32/39/3 +f 31/42/10 16/29/10 17/41/10 +f 17/41/10 21/14/10 32/39/10 +f 8/43/1 7/2/1 28/1/1 +f 18/37/10 29/60/10 32/39/10 +f 29/60/10 18/37/10 19/26/10 +f 22/45/10 23/20/10 30/46/10 +f 30/46/10 29/60/10 19/26/10 +f 3/47/1 8/43/1 27/44/1 +f 25/4/1 11/31/1 9/33/1 +f 3/47/1 27/44/1 25/4/1 +f 15/23/10 16/29/10 24/48/10 +f 16/29/10 31/42/10 24/48/10 +f 31/42/10 30/46/10 23/20/10 +f 26/6/1 2/30/1 12/9/1 +f 2/30/1 6/61/1 12/9/1 +f 12/9/1 11/31/1 26/6/1 +f 24/48/10 13/11/10 14/56/10 +f 14/56/10 20/28/10 24/48/10 +f 1/50/1 10/7/1 12/9/1 +f 12/9/1 6/61/1 5/49/1 +f 27/51/7 29/60/7 30/46/7 +f 28/1/6 32/62/6 29/53/6 +o Rocket +v 0.000000 0.437500 -6.375000 +v -0.167424 0.404197 -6.375000 +v -0.309359 0.309359 -6.375000 +v -0.404197 0.167424 -6.375000 +v -0.437500 -0.000000 -6.375000 +v -0.404197 -0.167424 -6.375000 +v -0.309359 -0.309359 -6.375000 +v -0.167424 -0.404197 -6.375000 +v 0.000000 -0.437500 -6.375000 +v 0.167424 -0.404197 -6.375000 +v 0.309359 -0.309360 -6.375000 +v 0.404197 -0.167424 -6.375000 +v 0.437500 -0.000000 -6.375000 +v 0.404197 0.167424 -6.375000 +v 0.309359 0.309359 -6.375000 +v 0.167424 0.404197 -6.375000 +v 0.000000 0.437500 -5.750000 +v -0.167424 0.404197 -5.750000 +v -0.309359 0.309359 -5.750000 +v -0.404197 0.167424 -5.750000 +v -0.437500 -0.000000 -5.750000 +v -0.404197 -0.167424 -5.750000 +v -0.309359 -0.309359 -5.750000 +v -0.167424 -0.404197 -5.750000 +v 0.000000 -0.437500 -5.750000 +v 0.167424 -0.404197 -5.750000 +v 0.309359 -0.309360 -5.750000 +v 0.404197 -0.167424 -5.750000 +v 0.437500 -0.000000 -5.750000 +v 0.404197 0.167424 -5.750000 +v 0.309359 0.309359 -5.750000 +v 0.167424 0.404197 -5.750000 +v 0.000000 0.375000 -6.375000 +v -0.143507 0.346455 -6.375000 +v -0.265165 0.265165 -6.375000 +v -0.346455 0.143506 -6.375000 +v -0.375000 0.000000 -6.375000 +v -0.346455 -0.143507 -6.375000 +v -0.265165 -0.265165 -6.375000 +v -0.143507 -0.346455 -6.375000 +v 0.000000 -0.375000 -6.375000 +v 0.143506 -0.346455 -6.375000 +v 0.265165 -0.265165 -6.375000 +v 0.346455 -0.143507 -6.375000 +v 0.375000 0.000000 -6.375000 +v 0.346455 0.143507 -6.375000 +v 0.265165 0.265165 -6.375000 +v 0.143506 0.346455 -6.375000 +v 0.000000 0.375000 -5.750000 +v -0.143507 0.346455 -5.750000 +v -0.265165 0.265165 -5.750000 +v -0.346455 0.143506 -5.750000 +v -0.375000 0.000000 -5.750000 +v -0.346455 -0.143507 -5.750000 +v -0.265165 -0.265165 -5.750000 +v -0.143507 -0.346455 -5.750000 +v 0.000000 -0.375000 -5.750000 +v 0.143506 -0.346455 -5.750000 +v 0.265165 -0.265165 -5.750000 +v 0.346455 -0.143507 -5.750000 +v 0.375000 0.000000 -5.750000 +v 0.346455 0.143507 -5.750000 +v 0.265165 0.265165 -5.750000 +v 0.143506 0.346455 -5.750000 +v 0.000000 0.250000 -6.375000 +v -0.095671 0.230970 -6.375000 +v -0.176777 0.176777 -6.375000 +v -0.230970 0.095671 -6.375000 +v -0.250000 -0.000000 -6.375000 +v -0.230970 -0.095671 -6.375000 +v -0.176777 -0.176777 -6.375000 +v -0.095671 -0.230970 -6.375000 +v 0.000000 -0.250000 -6.375000 +v 0.095671 -0.230970 -6.375000 +v 0.176776 -0.176777 -6.375000 +v 0.230970 -0.095671 -6.375000 +v 0.250000 -0.000000 -6.375000 +v 0.230970 0.095671 -6.375000 +v 0.176776 0.176777 -6.375000 +v 0.095671 0.230970 -6.375000 +v -0.095671 0.230972 -3.375000 +v 0.000000 0.250002 -3.375000 +v -0.176777 0.176779 -3.375000 +v -0.230970 0.095673 -3.375000 +v -0.250000 0.000002 -3.375000 +v -0.230970 -0.095669 -3.375000 +v -0.176777 -0.176775 -3.375000 +v -0.095671 -0.230968 -3.375000 +v 0.000000 -0.249998 -3.375000 +v 0.095671 -0.230968 -3.375000 +v 0.176776 -0.176775 -3.375000 +v 0.230970 -0.095669 -3.375000 +v 0.250000 0.000002 -3.375000 +v 0.230970 0.095673 -3.375000 +v 0.176776 0.176779 -3.375000 +v 0.095671 0.230972 -3.375000 +v -0.031250 0.406250 -5.750000 +v 0.031250 0.406250 -5.750000 +v -0.031250 0.406250 -6.250000 +v 0.031250 0.406250 -6.250000 +v -0.031250 0.218750 -5.250000 +v 0.031250 0.218750 -5.250000 +v -0.031250 0.218750 -6.250000 +v 0.031250 0.218750 -6.250000 +v 0.000000 0.437500 -2.250000 +v -0.167424 0.404197 -2.250000 +v -0.309359 0.309359 -2.250000 +v -0.404197 0.167424 -2.250000 +v -0.437500 -0.000000 -2.250000 +v -0.404197 -0.167424 -2.250000 +v -0.309359 -0.309359 -2.250000 +v -0.167424 -0.404197 -2.250000 +v 0.000000 -0.437500 -2.250000 +v 0.167424 -0.404197 -2.250000 +v 0.309359 -0.309360 -2.250000 +v 0.404197 -0.167424 -2.250000 +v 0.437500 -0.000000 -2.250000 +v 0.404197 0.167424 -2.250000 +v 0.309359 0.309359 -2.250000 +v 0.167424 0.404197 -2.250000 +v 0.000000 0.437500 -1.624000 +v -0.167424 0.404197 -1.624000 +v -0.309359 0.309359 -1.624000 +v -0.404197 0.167424 -1.624000 +v -0.437500 -0.000000 -1.624000 +v -0.404197 -0.167424 -1.624000 +v -0.309359 -0.309359 -1.624000 +v -0.167424 -0.404197 -1.624000 +v 0.000000 -0.437500 -1.624000 +v 0.167424 -0.404197 -1.624000 +v 0.309359 -0.309360 -1.624000 +v 0.404197 -0.167424 -1.624000 +v 0.437500 -0.000000 -1.624000 +v 0.404197 0.167424 -1.624000 +v 0.309359 0.309359 -1.624000 +v 0.167424 0.404197 -1.624000 +v 0.000000 0.375000 -1.624000 +v -0.143507 0.346455 -1.624000 +v -0.265165 0.265165 -1.624000 +v -0.346455 0.143506 -1.624000 +v -0.375000 0.000000 -1.624000 +v -0.346455 -0.143506 -1.624000 +v -0.265165 -0.265165 -1.624000 +v -0.143507 -0.346455 -1.624000 +v 0.000000 -0.375000 -1.624000 +v 0.143506 -0.346455 -1.624000 +v 0.265165 -0.265165 -1.624000 +v 0.346455 -0.143506 -1.624000 +v 0.375000 0.000000 -1.624000 +v 0.346455 0.143506 -1.624000 +v 0.265165 0.265165 -1.624000 +v 0.143506 0.346455 -1.624000 +v 0.000000 0.187500 -1.124000 +v -0.071754 0.173228 -1.124000 +v -0.132583 0.132583 -1.124000 +v -0.173227 0.071753 -1.124000 +v -0.187500 0.000000 -1.124000 +v -0.173227 -0.071753 -1.124000 +v -0.132583 -0.132582 -1.124000 +v -0.071754 -0.173227 -1.124000 +v 0.000000 -0.187500 -1.124000 +v 0.071753 -0.173227 -1.124000 +v 0.132582 -0.132582 -1.124000 +v 0.173227 -0.071753 -1.124000 +v 0.187500 0.000000 -1.124000 +v 0.173227 0.071753 -1.124000 +v 0.132582 0.132583 -1.124000 +v 0.071753 0.173228 -1.124000 +v 0.000000 0.187500 -0.624000 +v -0.071754 0.173228 -0.624000 +v -0.132583 0.132583 -0.624000 +v -0.173227 0.071753 -0.624000 +v -0.187500 0.000000 -0.624000 +v -0.173227 -0.071753 -0.624000 +v -0.132583 -0.132582 -0.624000 +v -0.071754 -0.173227 -0.624000 +v 0.000000 -0.187500 -0.624000 +v 0.071753 -0.173227 -0.624000 +v 0.132582 -0.132582 -0.624000 +v 0.173227 -0.071753 -0.624000 +v 0.187500 0.000000 -0.624000 +v 0.173227 0.071753 -0.624000 +v 0.132582 0.132583 -0.624000 +v 0.071753 0.173228 -0.624000 +v 0.000000 0.125000 -0.499000 +v -0.047836 0.115485 -0.499000 +v -0.088388 0.088389 -0.499000 +v -0.115485 0.047836 -0.499000 +v -0.125000 0.000000 -0.499000 +v -0.115485 -0.047835 -0.499000 +v -0.088388 -0.088388 -0.499000 +v -0.047836 -0.115485 -0.499000 +v 0.000000 -0.125000 -0.499000 +v 0.047835 -0.115485 -0.499000 +v 0.088388 -0.088388 -0.499000 +v 0.115485 -0.047835 -0.499000 +v 0.125000 0.000000 -0.499000 +v 0.115485 0.047836 -0.499000 +v 0.088388 0.088389 -0.499000 +v 0.047835 0.115485 -0.499000 +v -0.095671 0.230972 -2.875000 +v 0.000000 0.250002 -2.875000 +v -0.176777 0.176779 -2.875000 +v -0.230970 0.095673 -2.875000 +v -0.250000 0.000002 -2.875000 +v -0.230970 -0.095669 -2.875000 +v -0.176777 -0.176775 -2.875000 +v -0.095671 -0.230968 -2.875000 +v 0.000000 -0.249998 -2.875000 +v 0.095671 -0.230968 -2.875000 +v 0.176776 -0.176775 -2.875000 +v 0.230970 -0.095669 -2.875000 +v 0.250000 0.000002 -2.875000 +v 0.230970 0.095673 -2.875000 +v 0.176776 0.176779 -2.875000 +v 0.095671 0.230972 -2.875000 +v 0.000000 0.187500 -3.374000 +v -0.071754 0.173228 -3.374000 +v -0.132583 0.132583 -3.374000 +v -0.173227 0.071753 -3.374000 +v -0.187500 0.000000 -3.374000 +v -0.173227 -0.071753 -3.374000 +v -0.132583 -0.132582 -3.374000 +v -0.071754 -0.173227 -3.374000 +v 0.000000 -0.187500 -3.374000 +v 0.071753 -0.173227 -3.374000 +v 0.132582 -0.132582 -3.374000 +v 0.173227 -0.071753 -3.374000 +v 0.187500 0.000000 -3.374000 +v 0.173227 0.071753 -3.374000 +v 0.132582 0.132583 -3.374000 +v 0.071753 0.173228 -3.374000 +v 0.000000 0.187500 -2.874000 +v -0.071754 0.173228 -2.874000 +v -0.132583 0.132583 -2.874000 +v -0.173227 0.071753 -2.874000 +v -0.187500 0.000000 -2.874000 +v -0.173227 -0.071753 -2.874000 +v -0.132583 -0.132582 -2.874000 +v -0.071754 -0.173227 -2.874000 +v 0.000000 -0.187500 -2.874000 +v 0.071753 -0.173227 -2.874000 +v 0.132582 -0.132582 -2.874000 +v 0.173227 -0.071753 -2.874000 +v 0.187500 0.000000 -2.874000 +v 0.173227 0.071753 -2.874000 +v 0.132582 0.132583 -2.874000 +v 0.071753 0.173228 -2.874000 +v 0.031250 -0.406250 -5.750000 +v -0.031250 -0.406250 -5.750000 +v 0.031250 -0.406250 -6.250000 +v -0.031250 -0.406250 -6.250000 +v 0.031250 -0.218750 -5.250000 +v -0.031250 -0.218750 -5.250000 +v 0.031250 -0.218750 -6.250000 +v -0.031250 -0.218750 -6.250000 +v 0.406250 0.031250 -5.750000 +v 0.406250 -0.031250 -5.750000 +v 0.406250 0.031250 -6.250000 +v 0.406250 -0.031250 -6.250000 +v 0.218750 0.031250 -5.250000 +v 0.218750 -0.031250 -5.250000 +v 0.218750 0.031250 -6.250000 +v 0.218750 -0.031250 -6.250000 +v -0.406250 -0.031250 -5.750000 +v -0.406250 0.031250 -5.750000 +v -0.406250 -0.031250 -6.250000 +v -0.406250 0.031250 -6.250000 +v -0.218750 -0.031250 -5.250000 +v -0.218750 0.031250 -5.250000 +v -0.218750 -0.031250 -6.250000 +v -0.218750 0.031250 -6.250000 +v 0.265165 0.309359 -5.750000 +v 0.309359 0.265165 -5.750000 +v 0.265165 0.309359 -6.250000 +v 0.309359 0.265165 -6.250000 +v 0.132583 0.176777 -5.250000 +v 0.176777 0.132582 -5.250000 +v 0.132583 0.176777 -6.250000 +v 0.176777 0.132582 -6.250000 +v -0.265165 -0.309359 -5.750000 +v -0.309359 -0.265165 -5.750000 +v -0.265165 -0.309359 -6.250000 +v -0.309359 -0.265165 -6.250000 +v -0.132583 -0.176777 -5.250000 +v -0.176777 -0.132583 -5.250000 +v -0.132583 -0.176777 -6.250000 +v -0.176777 -0.132583 -6.250000 +v 0.309359 -0.265165 -5.750000 +v 0.265165 -0.309359 -5.750000 +v 0.309359 -0.265165 -6.250000 +v 0.265165 -0.309359 -6.250000 +v 0.176777 -0.132583 -5.250000 +v 0.132583 -0.176777 -5.250000 +v 0.176777 -0.132583 -6.250000 +v 0.132583 -0.176777 -6.250000 +v -0.309359 0.265165 -5.750000 +v -0.265165 0.309359 -5.750000 +v -0.309359 0.265165 -6.250000 +v -0.265165 0.309359 -6.250000 +v -0.176777 0.132582 -5.250000 +v -0.132583 0.176777 -5.250000 +v -0.176777 0.132582 -6.250000 +v -0.132583 0.176777 -6.250000 +vt 0.951456 0.818182 +vt 0.946602 0.833333 +vt 0.946602 0.818182 +vt 0.951456 0.833333 +vt 0.946602 0.848485 +vt 0.951456 0.848485 +vt 0.946602 0.863636 +vt 0.951456 0.878788 +vt 0.946602 0.878788 +vt 0.946602 0.893939 +vt 0.951456 0.893939 +vt 0.946602 0.909091 +vt 0.951456 0.924242 +vt 0.946602 0.924242 +vt 0.951456 0.939394 +vt 0.946602 0.939394 +vt 0.951456 0.954545 +vt 0.946602 0.954545 +vt 0.951456 0.969697 +vt 0.946602 0.969697 +vt 0.951456 0.984848 +vt 0.946602 0.984848 +vt 0.951456 1.000000 +vt 0.946602 1.000000 +vt 0.951456 0.757576 +vt 0.946602 0.772727 +vt 0.946602 0.757576 +vt 0.951456 0.772727 +vt 0.946602 0.787879 +vt 0.951456 0.787879 +vt 0.946602 0.803030 +vt 0.951456 0.803030 +vt 0.932039 0.848485 +vt 0.927184 0.833333 +vt 0.932039 0.833333 +vt 0.932039 0.863636 +vt 0.927184 0.848485 +vt 0.927184 0.878788 +vt 0.927184 0.863636 +vt 0.932039 0.893939 +vt 0.932039 0.878788 +vt 0.932039 0.909091 +vt 0.927184 0.893939 +vt 0.927184 0.924242 +vt 0.927184 0.909091 +vt 0.932039 0.924242 +vt 0.927184 0.939394 +vt 0.932039 0.939394 +vt 0.927184 0.954545 +vt 0.932039 0.954545 +vt 0.927184 0.969697 +vt 0.932039 0.969697 +vt 0.927184 0.984848 +vt 0.932039 0.984848 +vt 0.927184 1.000000 +vt 0.932039 0.772727 +vt 0.927184 0.757576 +vt 0.932039 0.757576 +vt 0.932039 0.787879 +vt 0.927184 0.772727 +vt 0.932039 0.803030 +vt 0.927184 0.787879 +vt 0.932039 0.818182 +vt 0.927184 0.803030 +vt 0.927184 0.818182 +vt 0.970863 0.924242 +vt 0.968023 0.945646 +vt 0.954307 0.902838 +vt 0.970874 0.863636 +vt 0.951456 0.848485 +vt 0.970874 0.848485 +vt 0.990291 0.848485 +vt 1.000000 0.863636 +vt 0.990291 0.863636 +vt 0.990291 0.818182 +vt 0.990291 0.893939 +vt 0.970874 0.863636 +vt 0.951456 0.848485 +vt 0.970874 0.848485 +vt 0.718447 0.833333 +vt 0.713592 0.818182 +vt 0.718447 0.818182 +vt 0.718447 0.848485 +vt 0.713592 0.833333 +vt 0.718447 0.863636 +vt 0.713592 0.848485 +vt 0.718447 0.878788 +vt 0.713592 0.863636 +vt 0.713592 0.893939 +vt 0.713592 0.878788 +vt 0.718447 0.893939 +vt 0.713592 0.909091 +vt 0.718447 0.909091 +vt 0.713592 0.924242 +vt 0.718447 0.924242 +vt 0.713592 0.939394 +vt 0.718447 0.939394 +vt 0.713592 0.954545 +vt 0.718447 0.954545 +vt 0.713592 0.969697 +vt 0.718447 0.969697 +vt 0.713592 0.984848 +vt 0.718447 0.984848 +vt 0.713592 1.000000 +vt 0.718447 0.772727 +vt 0.713592 0.757576 +vt 0.718447 0.757576 +vt 0.718447 0.787879 +vt 0.713592 0.772727 +vt 0.718447 0.803030 +vt 0.713592 0.787879 +vt 0.713592 0.803030 +vt 0.951467 0.969697 +vt 0.956311 0.954577 +vt 0.961155 0.969697 +vt 0.796117 0.818182 +vt 0.791262 0.833333 +vt 0.791262 0.818182 +vt 0.796117 0.833333 +vt 0.791262 0.848485 +vt 0.796117 0.848485 +vt 0.791262 0.863636 +vt 0.796117 0.863636 +vt 0.791262 0.878788 +vt 0.796117 0.893939 +vt 0.796117 0.878788 +vt 0.796117 0.909091 +vt 0.791262 0.893939 +vt 0.796117 0.924242 +vt 0.791262 0.909091 +vt 0.796117 0.939394 +vt 0.791262 0.924242 +vt 0.796117 0.954545 +vt 0.791262 0.939394 +vt 0.796117 0.969697 +vt 0.791262 0.954545 +vt 0.796117 0.984848 +vt 0.791262 0.969697 +vt 0.796117 1.000000 +vt 0.791262 0.984848 +vt 0.796117 0.757576 +vt 0.791262 0.772727 +vt 0.791262 0.757576 +vt 0.796117 0.772727 +vt 0.791262 0.787879 +vt 0.796117 0.787879 +vt 0.791262 0.803030 +vt 0.796117 0.803030 +vt 0.766990 0.833333 +vt 0.771845 0.848485 +vt 0.766990 0.848485 +vt 0.771845 0.863636 +vt 0.766990 0.863636 +vt 0.771845 0.878788 +vt 0.766990 0.878788 +vt 0.766990 0.893939 +vt 0.771845 0.893939 +vt 0.766990 0.909091 +vt 0.771845 0.909091 +vt 0.766990 0.924242 +vt 0.771845 0.924242 +vt 0.766990 0.939394 +vt 0.771845 0.939394 +vt 0.766990 0.954545 +vt 0.771845 0.954545 +vt 0.766990 0.969697 +vt 0.771845 0.969697 +vt 0.766990 0.984848 +vt 0.771845 0.984848 +vt 0.766990 1.000000 +vt 0.766990 0.757576 +vt 0.771845 0.772727 +vt 0.766990 0.772727 +vt 0.771845 0.787879 +vt 0.766990 0.787879 +vt 0.771845 0.803030 +vt 0.766990 0.803030 +vt 0.771845 0.818182 +vt 0.766990 0.818182 +vt 0.771845 0.833333 +vt 0.990291 0.848485 +vt 1.000000 0.863636 +vt 0.990291 0.863636 +vt 0.990291 0.818182 +vt 0.990291 0.893939 +vt 0.970874 0.863636 +vt 0.951456 0.848485 +vt 0.970874 0.848485 +vt 0.990291 0.848485 +vt 1.000000 0.863636 +vt 0.990291 0.863636 +vt 0.990291 0.818182 +vt 0.990291 0.893939 +vt 0.970874 0.863636 +vt 0.951456 0.848485 +vt 0.970874 0.848485 +vt 0.990291 0.848485 +vt 1.000000 0.863636 +vt 0.990291 0.863636 +vt 0.990291 0.818182 +vt 0.990291 0.893939 +vt 0.970874 0.863636 +vt 0.951456 0.848485 +vt 0.970874 0.848485 +vt 0.990291 0.863636 +vt 1.000000 0.848485 +vt 1.000000 0.863636 +vt 0.990291 0.818182 +vt 0.990291 0.848485 +vt 0.990291 0.893939 +vt 0.970874 0.863636 +vt 0.951456 0.848485 +vt 0.970874 0.848485 +vt 0.990291 0.848485 +vt 1.000000 0.863636 +vt 0.990291 0.863636 +vt 0.990291 0.818182 +vt 0.990291 0.893939 +vt 0.970874 0.848485 +vt 0.951456 0.863636 +vt 0.951456 0.848485 +vt 0.990291 0.848485 +vt 1.000000 0.863636 +vt 0.990291 0.863636 +vt 0.990291 0.818182 +vt 0.990291 0.893939 +vt 0.970874 0.863636 +vt 0.970874 0.848485 +vt 0.951456 0.863636 +vt 0.951456 0.848485 +vt 0.990291 0.848485 +vt 1.000000 0.863636 +vt 0.990291 0.863636 +vt 0.990291 0.818182 +vt 0.990291 0.893939 +vt 0.970874 0.863636 +vt 0.951456 0.863636 +vt 0.951456 0.909091 +vt 0.932039 1.000000 +vt 0.964876 0.952208 +vt 0.961165 0.954512 +vt 0.957454 0.952208 +vt 0.954307 0.945646 +vt 0.952205 0.935826 +vt 0.951467 0.924242 +vt 0.952205 0.912658 +vt 0.957454 0.896276 +vt 0.961165 0.893972 +vt 0.964876 0.896276 +vt 0.968023 0.902838 +vt 0.970125 0.912658 +vt 0.970125 0.935826 +vt 0.951456 0.863636 +vt 1.000000 0.848485 +vt 0.951456 0.818182 +vt 0.951456 0.893939 +vt 0.951456 0.863636 +vt 0.718447 1.000000 +vt 0.956311 0.984817 +vt 0.954457 0.983666 +vt 0.952885 0.980388 +vt 0.951835 0.975483 +vt 0.951835 0.963911 +vt 0.952885 0.959006 +vt 0.954457 0.955728 +vt 0.958164 0.955728 +vt 0.959736 0.959006 +vt 0.960786 0.963911 +vt 0.960786 0.975483 +vt 0.959736 0.980388 +vt 0.958164 0.983666 +vt 0.791262 1.000000 +vt 0.771845 1.000000 +vt 0.771845 0.757576 +vt 1.000000 0.848485 +vt 0.951456 0.818182 +vt 0.951456 0.893939 +vt 0.951456 0.863636 +vt 1.000000 0.848485 +vt 0.951456 0.818182 +vt 0.951456 0.893939 +vt 0.951456 0.863636 +vt 1.000000 0.848485 +vt 0.951456 0.818182 +vt 0.951456 0.893939 +vt 0.951456 0.863636 +vt 0.951456 0.818182 +vt 0.951456 0.893939 +vt 0.951456 0.863636 +vt 1.000000 0.848485 +vt 0.951456 0.818182 +vt 0.951456 0.893939 +vt 1.000000 0.848485 +vt 0.951456 0.818182 +vt 0.951456 0.893939 +vt 1.000000 0.848485 +vt 0.951456 0.818182 +vt 0.951456 0.893939 +vt 0.912621 0.803030 +vt 0.912621 0.818182 +vt 0.912621 0.939394 +vt 0.912621 0.954545 +vt 0.912621 0.833333 +vt 0.912621 0.969697 +vt 0.912621 0.848485 +vt 0.912621 0.984848 +vt 0.912621 0.863636 +vt 0.912621 1.000000 +vt 0.912621 0.878788 +vt 0.912621 0.893939 +vt 0.912621 0.757576 +vt 0.912621 0.772727 +vt 0.912621 0.909091 +vt 0.912621 0.787879 +vt 0.912621 0.924242 +vt 0.742718 0.833333 +vt 0.742718 0.818182 +vt 0.912621 0.969697 +vt 0.912621 0.954545 +vt 0.912621 0.848485 +vt 0.912621 0.833333 +vt 0.912621 0.863636 +vt 0.912621 0.984848 +vt 0.912621 0.893939 +vt 0.912621 0.878788 +vt 0.912621 0.757576 +vt 0.912621 0.909091 +vt 0.912621 0.787879 +vt 0.912621 0.772727 +vt 0.912621 0.803030 +vt 0.912621 0.939394 +vt 0.912621 0.924242 +vt 0.912621 0.818182 +vt 0.742718 0.803030 +vt 0.742718 0.787879 +vt 0.742718 0.772727 +vt 0.742718 0.757576 +vt 0.742718 0.984848 +vt 0.742718 1.000000 +vt 0.742718 0.969697 +vt 0.742718 0.954545 +vt 0.742718 0.939394 +vt 0.742718 0.924242 +vt 0.742718 0.909091 +vt 0.742718 0.893939 +vt 0.742718 0.878788 +vt 0.742718 0.863636 +vt 0.742718 0.848485 +vt 0.694175 0.893939 +vt 0.694175 0.878788 +vt 0.694175 0.863636 +vt 0.694175 0.848485 +vt 0.694175 0.833333 +vt 0.694175 0.818182 +vt 0.694175 0.803030 +vt 0.694175 0.787879 +vt 0.694175 0.772727 +vt 0.694175 0.757576 +vt 0.694175 0.984848 +vt 0.694175 0.969697 +vt 0.694175 0.954545 +vt 0.694175 0.939394 +vt 0.694175 0.924242 +vt 0.694175 0.909091 +vt 0.674757 0.772727 +vt 0.674757 0.909091 +vt 0.674757 0.787879 +vt 0.674757 0.924242 +vt 0.674757 0.803030 +vt 0.674757 0.939394 +vt 0.674757 0.818182 +vt 0.674757 0.954545 +vt 0.674757 0.833333 +vt 0.674757 0.969697 +vt 0.674757 0.848485 +vt 0.694175 1.000000 +vt 0.674757 0.984848 +vt 0.674757 0.878788 +vt 0.674757 0.863636 +vt 0.674757 0.757576 +vt 0.674757 0.893939 +vt 0.669903 0.848485 +vt 0.669903 0.833333 +vt 0.669903 0.818182 +vt 0.669903 0.803030 +vt 0.669903 0.787879 +vt 0.669903 0.772727 +vt 0.669903 0.757576 +vt 0.674757 1.000000 +vt 0.669903 0.984848 +vt 0.669903 0.969697 +vt 0.669903 0.954545 +vt 0.669903 0.939394 +vt 0.669903 0.924242 +vt 0.669903 0.909091 +vt 0.669903 0.893939 +vt 0.669903 0.878788 +vt 0.669903 0.863636 +vt 0.912621 1.000000 +vt 0.669903 1.000000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.9363 0.3511 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -0.9363 0.3511 +vn 0.0160 0.0032 0.9999 +vn 0.0136 0.0091 0.9999 +vn 0.0091 0.0136 0.9999 +vn 0.0032 0.0160 0.9999 +vn -0.0032 0.0160 0.9999 +vn -0.0091 0.0136 0.9999 +vn -0.0136 0.0091 0.9999 +vn -0.0160 0.0032 0.9999 +vn -0.0160 -0.0032 0.9999 +vn -0.0136 -0.0091 0.9999 +vn -0.0091 -0.0136 0.9999 +vn -0.0032 -0.0160 0.9999 +vn 0.0032 -0.0160 0.9999 +vn 0.0091 -0.0136 0.9999 +vn 0.0136 -0.0091 0.9999 +vn 0.0160 -0.0032 0.9999 +vn -0.0136 -0.0091 -0.9999 +vn -0.0091 -0.0136 -0.9999 +vn -0.0032 -0.0160 -0.9999 +vn 0.0032 -0.0160 -0.9999 +vn 0.0091 -0.0136 -0.9999 +vn 0.0136 -0.0091 -0.9999 +vn 0.0160 -0.0032 -0.9999 +vn 0.0160 0.0032 -0.9999 +vn 0.0136 0.0091 -0.9999 +vn 0.0091 0.0136 -0.9999 +vn 0.0032 0.0160 -0.9999 +vn -0.0032 0.0160 -0.9999 +vn -0.0091 0.0136 -0.9999 +vn -0.0136 0.0091 -0.9999 +vn -0.0160 0.0032 -0.9999 +vn -0.0160 -0.0032 -0.9999 +vn 0.9363 0.0000 0.3511 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.9363 0.0000 0.3511 +vn 0.6621 0.6621 0.3511 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.6621 -0.6621 0.3511 +vn 0.6621 -0.6621 0.3511 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.6621 0.6621 0.3511 +vn -0.3827 -0.9239 0.0000 +vn -0.3827 0.9239 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.9239 -0.3827 0.0000 +vn -0.9239 -0.3827 0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.9578 0.0000 -0.2873 +vn 0.8849 0.3665 -0.2873 +vn 0.8849 -0.3665 -0.2873 +vn 0.6773 -0.6773 -0.2874 +vn 0.3665 -0.8849 -0.2874 +vn 0.0000 -0.9578 -0.2874 +vn -0.3665 -0.8849 -0.2874 +vn -0.6773 -0.6773 -0.2873 +vn -0.8849 -0.3665 -0.2873 +vn -0.9578 -0.0000 -0.2873 +vn -0.8849 0.3665 -0.2873 +vn -0.6773 0.6773 -0.2873 +vn -0.3665 0.8849 -0.2873 +vn 0.0000 0.9578 -0.2873 +vn 0.3665 0.8849 -0.2873 +vn 0.6773 0.6773 -0.2873 +vn -0.3583 0.8651 0.3511 +vn 0.3583 0.8651 0.3511 +vn 0.8651 0.3583 0.3511 +vn 0.8651 -0.3583 0.3511 +vn 0.3583 -0.8651 0.3511 +vn -0.3583 -0.8651 0.3511 +vn -0.8651 -0.3583 0.3511 +vn -0.8651 0.3583 0.3511 +vn 0.3423 0.8263 0.4472 +vn 0.6325 0.6325 0.4472 +vn 0.8263 0.3423 0.4472 +vn 0.8944 0.0000 0.4472 +vn 0.8263 -0.3423 0.4472 +vn 0.6325 -0.6325 0.4472 +vn 0.3423 -0.8263 0.4472 +vn 0.0000 -0.8944 0.4472 +vn -0.3423 -0.8263 0.4472 +vn -0.6325 -0.6325 0.4472 +vn -0.8263 -0.3423 0.4472 +vn -0.8944 0.0000 0.4472 +vn -0.8263 0.3423 0.4472 +vn -0.6325 0.6325 0.4472 +vn -0.3423 0.8263 0.4472 +vn 0.0000 0.8944 0.4472 +s off +f 77/63/11 46/64/11 45/65/11 +f 78/66/11 47/67/11 46/64/11 +f 79/68/11 48/69/11 47/67/11 +f 48/69/11 65/70/11 33/71/11 +f 65/70/11 34/72/11 33/71/11 +f 66/73/11 35/74/11 34/72/11 +f 35/74/11 68/75/11 36/76/11 +f 36/76/11 69/77/11 37/78/11 +f 37/78/11 70/79/11 38/80/11 +f 38/80/11 71/81/11 39/82/11 +f 39/82/11 72/83/11 40/84/11 +f 40/84/11 73/85/11 41/86/11 +f 73/87/11 42/88/11 41/89/11 +f 74/90/11 43/91/11 42/88/11 +f 75/92/11 44/93/11 43/91/11 +f 76/94/11 45/65/11 44/93/11 +f 63/95/12 94/96/12 62/97/12 +f 64/98/12 95/99/12 63/95/12 +f 64/98/12 81/100/12 96/101/12 +f 50/102/12 81/100/12 49/103/12 +f 51/104/12 82/105/12 50/102/12 +f 51/104/12 84/106/12 83/107/12 +f 52/108/12 85/109/12 84/106/12 +f 53/110/12 86/111/12 85/109/12 +f 54/112/12 87/113/12 86/111/12 +f 55/114/12 88/115/12 87/113/12 +f 56/116/12 89/117/12 88/115/12 +f 58/118/12 89/119/12 57/120/12 +f 59/121/12 90/122/12 58/118/12 +f 60/123/12 91/124/12 59/121/12 +f 61/125/12 92/126/12 60/123/12 +f 62/97/12 93/127/12 61/125/12 +f 101/128/11 99/129/11 107/130/11 +f 129/131/13 134/132/13 130/133/13 +f 132/134/11 135/135/11 131/136/11 +f 130/133/14 136/137/14 132/134/14 +f 135/138/15 129/131/15 131/136/15 +f 281/139/16 286/140/16 282/141/16 +f 166/142/12 181/143/12 165/144/12 +f 167/145/12 182/146/12 166/142/12 +f 168/147/12 183/148/12 167/145/12 +f 153/149/12 184/150/12 168/147/12 +f 153/149/12 170/151/12 169/152/12 +f 154/153/12 171/154/12 170/151/12 +f 155/155/12 172/156/12 171/154/12 +f 156/157/12 173/158/12 172/156/12 +f 157/159/12 174/160/12 173/158/12 +f 158/161/12 175/162/12 174/160/12 +f 159/163/12 176/164/12 175/162/12 +f 160/165/12 177/166/12 176/164/12 +f 162/167/12 177/168/12 161/169/12 +f 163/170/12 178/171/12 162/167/12 +f 164/172/12 179/173/12 163/170/12 +f 165/144/12 180/174/12 164/172/12 +f 221/175/12 225/176/12 229/177/12 +f 125/178/17 262/179/17 261/180/17 +f 126/181/18 263/182/18 262/179/18 +f 127/183/19 264/184/19 263/182/19 +f 128/185/20 249/186/20 264/184/20 +f 113/187/21 249/186/21 114/188/21 +f 115/189/22 250/190/22 113/187/22 +f 116/191/23 251/192/23 115/189/23 +f 117/193/24 252/194/24 116/191/24 +f 118/195/25 253/196/25 117/193/25 +f 119/197/26 254/198/26 118/195/26 +f 120/199/27 255/200/27 119/197/27 +f 121/201/28 256/202/28 120/199/28 +f 121/203/29 258/204/29 257/205/29 +f 122/206/30 259/207/30 258/204/30 +f 123/208/31 260/209/31 259/207/31 +f 124/210/32 261/180/32 260/209/32 +f 246/211/33 279/212/33 247/213/33 +f 247/213/34 280/214/34 248/215/34 +f 248/215/35 265/216/35 234/217/35 +f 265/216/36 233/218/36 234/217/36 +f 266/219/37 235/220/37 233/218/37 +f 267/221/38 236/222/38 235/220/38 +f 268/223/39 237/224/39 236/222/39 +f 269/225/40 238/226/40 237/224/40 +f 270/227/41 239/228/41 238/226/41 +f 271/229/42 240/230/42 239/228/42 +f 272/231/43 241/232/43 240/230/43 +f 241/233/44 274/234/44 242/235/44 +f 242/235/45 275/236/45 243/237/45 +f 243/237/46 276/238/46 244/239/46 +f 244/239/47 277/240/47 245/241/47 +f 245/241/48 278/242/48 246/211/48 +f 284/243/11 287/244/11 283/245/11 +f 282/141/15 288/246/15 284/243/15 +f 287/247/14 281/139/14 283/245/14 +f 289/248/49 294/249/49 290/250/49 +f 292/251/11 295/252/11 291/253/11 +f 290/250/50 296/254/50 292/251/50 +f 295/255/51 289/248/51 291/253/51 +f 297/256/52 302/257/52 298/258/52 +f 300/259/11 303/260/11 299/261/11 +f 298/258/51 304/262/51 300/259/51 +f 303/263/50 297/256/50 299/261/50 +f 305/264/53 310/265/53 306/266/53 +f 307/267/11 312/268/11 311/269/11 +f 306/266/54 312/270/54 308/271/54 +f 311/272/55 305/264/55 307/267/55 +f 313/273/56 318/274/56 314/275/56 +f 316/276/11 319/277/11 315/278/11 +f 314/275/55 320/279/55 316/276/55 +f 319/280/54 313/273/54 315/278/54 +f 322/281/57 325/282/57 326/283/57 +f 324/284/11 327/285/11 323/286/11 +f 322/281/58 328/287/58 324/284/58 +f 327/288/59 321/289/59 323/286/59 +f 330/290/60 333/291/60 334/292/60 +f 332/293/11 335/294/11 331/295/11 +f 330/290/59 336/296/59 332/293/59 +f 335/297/58 329/298/58 331/295/58 +f 77/63/11 78/66/11 46/64/11 +f 78/66/11 79/68/11 47/67/11 +f 79/68/11 80/299/11 48/69/11 +f 48/69/11 80/299/11 65/70/11 +f 65/70/11 66/73/11 34/72/11 +f 66/73/11 67/300/11 35/74/11 +f 35/74/11 67/300/11 68/75/11 +f 36/76/11 68/75/11 69/77/11 +f 37/78/11 69/77/11 70/79/11 +f 38/80/11 70/79/11 71/81/11 +f 39/82/11 71/81/11 72/83/11 +f 40/84/11 72/83/11 73/85/11 +f 73/87/11 74/90/11 42/88/11 +f 74/90/11 75/92/11 43/91/11 +f 75/92/11 76/94/11 44/93/11 +f 76/94/11 77/63/11 45/65/11 +f 63/95/12 95/99/12 94/96/12 +f 64/98/12 96/101/12 95/99/12 +f 64/98/12 49/103/12 81/100/12 +f 50/102/12 82/105/12 81/100/12 +f 51/104/12 83/107/12 82/105/12 +f 51/104/12 52/108/12 84/106/12 +f 52/108/12 53/110/12 85/109/12 +f 53/110/12 54/112/12 86/111/12 +f 54/112/12 55/114/12 87/113/12 +f 55/114/12 56/116/12 88/115/12 +f 56/116/12 57/301/12 89/117/12 +f 58/118/12 90/122/12 89/119/12 +f 59/121/12 91/124/12 90/122/12 +f 60/123/12 92/126/12 91/124/12 +f 61/125/12 93/127/12 92/126/12 +f 62/97/12 94/96/12 93/127/12 +f 99/129/11 98/302/11 97/303/11 +f 97/303/11 112/304/11 111/305/11 +f 111/305/11 110/306/11 107/130/11 +f 110/306/11 109/307/11 107/130/11 +f 109/307/11 108/308/11 107/130/11 +f 107/130/11 106/309/11 105/310/11 +f 105/310/11 104/311/11 103/312/11 +f 103/312/11 102/313/11 101/128/11 +f 101/128/11 100/314/11 99/129/11 +f 99/129/11 97/303/11 107/130/11 +f 97/303/11 111/305/11 107/130/11 +f 107/130/11 105/310/11 103/312/11 +f 103/312/11 101/128/11 107/130/11 +f 129/131/13 133/315/13 134/132/13 +f 132/134/11 136/316/11 135/135/11 +f 130/133/14 134/317/14 136/137/14 +f 135/138/15 133/318/15 129/131/15 +f 281/139/16 285/319/16 286/140/16 +f 166/142/12 182/146/12 181/143/12 +f 167/145/12 183/148/12 182/146/12 +f 168/147/12 184/150/12 183/148/12 +f 153/149/12 169/152/12 184/150/12 +f 153/149/12 154/153/12 170/151/12 +f 154/153/12 155/155/12 171/154/12 +f 155/155/12 156/157/12 172/156/12 +f 156/157/12 157/159/12 173/158/12 +f 157/159/12 158/161/12 174/160/12 +f 158/161/12 159/163/12 175/162/12 +f 159/163/12 160/165/12 176/164/12 +f 160/165/12 161/320/12 177/166/12 +f 162/167/12 178/171/12 177/168/12 +f 163/170/12 179/173/12 178/171/12 +f 164/172/12 180/174/12 179/173/12 +f 165/144/12 181/143/12 180/174/12 +f 217/321/12 218/322/12 219/323/12 +f 219/323/12 220/324/12 221/175/12 +f 221/175/12 222/325/12 223/326/12 +f 223/326/12 224/327/12 225/176/12 +f 225/176/12 226/328/12 227/329/12 +f 227/329/12 228/330/12 229/177/12 +f 229/177/12 230/331/12 231/332/12 +f 231/332/12 232/333/12 217/321/12 +f 217/321/12 219/323/12 221/175/12 +f 221/175/12 223/326/12 225/176/12 +f 225/176/12 227/329/12 229/177/12 +f 229/177/12 231/332/12 217/321/12 +f 217/321/12 221/175/12 229/177/12 +f 125/178/17 126/181/17 262/179/17 +f 126/181/18 127/183/18 263/182/18 +f 127/183/19 128/185/19 264/184/19 +f 128/185/20 114/188/20 249/186/20 +f 113/187/21 250/190/21 249/186/21 +f 115/189/22 251/192/22 250/190/22 +f 116/191/23 252/194/23 251/192/23 +f 117/193/24 253/196/24 252/194/24 +f 118/195/25 254/198/25 253/196/25 +f 119/197/26 255/200/26 254/198/26 +f 120/199/27 256/202/27 255/200/27 +f 121/201/28 257/334/28 256/202/28 +f 121/203/29 122/206/29 258/204/29 +f 122/206/30 123/208/30 259/207/30 +f 123/208/31 124/210/31 260/209/31 +f 124/210/32 125/178/32 261/180/32 +f 246/211/33 278/242/33 279/212/33 +f 247/213/34 279/212/34 280/214/34 +f 248/215/35 280/214/35 265/216/35 +f 265/216/36 266/219/36 233/218/36 +f 266/219/37 267/221/37 235/220/37 +f 267/221/38 268/223/38 236/222/38 +f 268/223/39 269/225/39 237/224/39 +f 269/225/40 270/227/40 238/226/40 +f 270/227/41 271/229/41 239/228/41 +f 271/229/42 272/231/42 240/230/42 +f 272/231/43 273/335/43 241/232/43 +f 241/233/44 273/336/44 274/234/44 +f 242/235/45 274/234/45 275/236/45 +f 243/237/46 275/236/46 276/238/46 +f 244/239/47 276/238/47 277/240/47 +f 245/241/48 277/240/48 278/242/48 +f 284/243/11 288/337/11 287/244/11 +f 282/141/15 286/338/15 288/246/15 +f 287/247/14 285/339/14 281/139/14 +f 289/248/49 293/340/49 294/249/49 +f 292/251/11 296/341/11 295/252/11 +f 290/250/50 294/342/50 296/254/50 +f 295/255/51 293/343/51 289/248/51 +f 297/256/52 301/344/52 302/257/52 +f 300/259/11 304/345/11 303/260/11 +f 298/258/51 302/346/51 304/262/51 +f 303/263/50 301/347/50 297/256/50 +f 305/264/53 309/348/53 310/265/53 +f 307/267/11 308/271/11 312/268/11 +f 306/266/54 310/349/54 312/270/54 +f 311/272/55 309/350/55 305/264/55 +f 313/273/56 317/351/56 318/274/56 +f 316/276/11 320/352/11 319/277/11 +f 314/275/55 318/353/55 320/279/55 +f 319/280/54 317/354/54 313/273/54 +f 322/281/57 321/289/57 325/282/57 +f 324/284/11 328/355/11 327/285/11 +f 322/281/58 326/356/58 328/287/58 +f 327/288/59 325/357/59 321/289/59 +f 330/290/60 329/298/60 333/291/60 +f 332/293/11 336/358/11 335/294/11 +f 330/290/59 334/359/59 336/296/59 +f 335/297/58 333/360/58 329/298/58 +s 1 +f 41/86/50 56/116/61 40/84/61 +f 34/72/62 49/103/51 33/71/51 +f 33/71/51 64/98/63 48/69/63 +f 42/88/64 57/120/50 41/89/50 +f 35/74/55 50/102/62 34/72/62 +f 43/91/54 58/118/64 42/88/64 +f 36/76/65 51/104/55 35/74/55 +f 44/93/66 59/121/54 43/91/54 +f 37/78/15 52/108/65 36/76/65 +f 45/65/14 60/123/66 44/93/66 +f 38/80/67 53/110/15 37/78/15 +f 46/64/68 61/125/14 45/65/14 +f 39/82/58 54/112/67 38/80/67 +f 47/67/59 62/97/68 46/64/68 +f 40/84/61 55/114/58 39/82/58 +f 48/69/63 63/95/59 47/67/59 +f 76/361/65 93/127/15 77/362/15 +f 69/363/14 86/111/68 70/364/68 +f 77/362/15 94/96/67 78/365/67 +f 70/364/68 87/113/59 71/366/59 +f 78/365/67 95/99/58 79/367/58 +f 71/366/59 88/115/63 72/368/63 +f 79/367/58 96/101/61 80/369/61 +f 72/368/63 89/117/51 73/370/51 +f 65/371/50 82/105/64 66/372/64 +f 80/369/61 81/100/50 65/371/50 +f 73/373/51 90/122/62 74/374/62 +f 66/372/64 83/107/54 67/375/54 +f 74/374/62 91/124/55 75/376/55 +f 67/375/54 84/106/66 68/377/66 +f 75/376/55 92/126/65 76/361/65 +f 68/377/66 85/109/14 69/363/14 +f 245/241/69 150/378/70 149/379/69 +f 103/380/58 118/195/67 102/381/67 +f 111/382/59 126/181/68 110/383/68 +f 103/380/58 120/199/61 119/197/58 +f 112/384/63 127/183/59 111/382/59 +f 104/385/61 121/201/50 120/199/61 +f 98/386/62 114/188/51 97/387/51 +f 112/384/63 114/188/51 128/185/63 +f 105/388/50 122/206/64 121/203/50 +f 99/389/55 113/187/62 98/386/62 +f 107/390/54 122/206/64 106/391/64 +f 99/389/55 116/191/65 115/189/55 +f 108/392/66 123/208/54 107/390/54 +f 101/393/15 116/191/65 100/394/65 +f 109/395/14 124/210/66 108/392/66 +f 102/381/67 117/193/15 101/393/15 +f 110/383/68 125/178/14 109/395/14 +f 244/239/71 149/379/69 148/396/71 +f 243/237/72 148/396/71 147/397/72 +f 242/235/73 147/397/72 146/398/73 +f 241/233/74 146/398/73 145/399/74 +f 144/400/75 241/232/74 145/401/74 +f 143/402/76 240/230/75 144/400/75 +f 142/403/77 239/228/76 143/402/76 +f 141/404/78 238/226/77 142/403/77 +f 140/405/79 237/224/78 141/404/78 +f 139/406/80 236/222/79 140/405/79 +f 138/407/81 235/220/80 139/406/80 +f 137/408/82 233/218/81 138/407/81 +f 248/215/83 137/408/82 152/409/83 +f 247/213/84 152/409/83 151/410/84 +f 246/211/70 151/410/84 150/378/70 +f 147/397/54 162/167/64 146/398/64 +f 140/405/65 155/155/55 139/406/55 +f 148/396/66 163/170/54 147/397/54 +f 141/404/15 156/157/65 140/405/65 +f 149/379/14 164/172/66 148/396/66 +f 142/403/67 157/159/15 141/404/15 +f 150/378/68 165/144/14 149/379/14 +f 143/402/58 158/161/67 142/403/67 +f 151/410/59 166/142/68 150/378/68 +f 144/400/61 159/163/58 143/402/58 +f 152/409/63 167/145/59 151/410/59 +f 145/401/50 160/165/61 144/400/61 +f 138/407/62 153/149/51 137/408/51 +f 137/408/51 168/147/63 152/409/63 +f 146/398/64 161/169/50 145/399/50 +f 139/406/55 154/153/62 138/407/62 +f 169/152/13 186/411/85 185/412/13 +f 169/152/13 200/413/86 184/150/86 +f 184/150/86 199/414/53 183/148/53 +f 183/148/53 198/415/87 182/146/87 +f 182/146/87 197/416/49 181/143/49 +f 180/174/88 197/416/49 196/417/88 +f 179/173/57 196/417/88 195/418/57 +f 179/173/57 194/419/89 178/171/89 +f 178/171/89 193/420/16 177/168/16 +f 177/166/16 192/421/90 176/164/90 +f 175/162/56 192/421/90 191/422/56 +f 174/160/91 191/422/56 190/423/91 +f 174/160/91 189/424/52 173/158/52 +f 172/156/92 189/424/52 188/425/92 +f 172/156/92 187/426/60 171/154/60 +f 171/154/60 186/411/85 170/151/85 +f 195/418/54 210/427/64 194/419/64 +f 188/425/65 203/428/55 187/426/55 +f 196/417/66 211/429/54 195/418/54 +f 189/424/15 204/430/65 188/425/65 +f 197/416/14 212/431/66 196/417/66 +f 190/423/67 205/432/15 189/424/15 +f 198/415/68 213/433/14 197/416/14 +f 191/422/58 206/434/67 190/423/67 +f 199/414/59 214/435/68 198/415/68 +f 192/421/61 207/436/58 191/422/58 +f 200/413/63 215/437/59 199/414/59 +f 193/438/50 208/439/61 192/421/61 +f 186/411/62 201/440/51 185/412/51 +f 185/412/51 216/441/63 200/413/63 +f 194/419/64 209/442/50 193/420/50 +f 187/426/55 202/443/62 186/411/62 +f 216/441/93 231/444/94 215/437/94 +f 215/437/94 230/445/95 214/435/95 +f 214/435/95 229/446/96 213/433/96 +f 213/433/96 228/447/97 212/431/97 +f 211/429/98 228/447/97 227/448/98 +f 211/429/98 226/449/99 210/427/99 +f 210/427/99 225/450/100 209/442/100 +f 209/451/100 224/452/101 208/439/101 +f 207/436/102 224/452/101 223/453/102 +f 206/434/103 223/453/102 222/454/103 +f 205/432/104 222/454/103 221/455/104 +f 204/430/105 221/455/104 220/456/105 +f 203/428/106 220/456/105 219/457/106 +f 202/443/107 219/457/106 218/458/107 +f 201/440/108 218/458/107 217/459/108 +f 201/440/108 232/460/93 216/441/93 +f 258/204/64 273/336/50 257/205/50 +f 251/192/55 266/219/62 250/190/62 +f 259/207/54 274/234/64 258/204/64 +f 252/194/65 267/221/55 251/192/55 +f 260/209/66 275/236/54 259/207/54 +f 253/196/15 268/223/65 252/194/65 +f 261/180/14 276/238/66 260/209/66 +f 254/198/67 269/225/15 253/196/15 +f 262/179/68 277/240/14 261/180/14 +f 255/200/58 270/227/67 254/198/67 +f 263/182/59 278/242/68 262/179/68 +f 256/202/61 271/229/58 255/200/58 +f 264/184/63 279/212/59 263/182/59 +f 257/334/50 272/231/61 256/202/61 +f 250/190/62 265/216/51 249/186/51 +f 249/186/51 280/214/63 264/184/63 +f 41/86/50 57/301/50 56/116/61 +f 34/72/62 50/102/62 49/103/51 +f 33/71/51 49/103/51 64/98/63 +f 42/88/64 58/118/64 57/120/50 +f 35/74/55 51/104/55 50/102/62 +f 43/91/54 59/121/54 58/118/64 +f 36/76/65 52/108/65 51/104/55 +f 44/93/66 60/123/66 59/121/54 +f 37/78/15 53/110/15 52/108/65 +f 45/65/14 61/125/14 60/123/66 +f 38/80/67 54/112/67 53/110/15 +f 46/64/68 62/97/68 61/125/14 +f 39/82/58 55/114/58 54/112/67 +f 47/67/59 63/95/59 62/97/68 +f 40/84/61 56/116/61 55/114/58 +f 48/69/63 64/98/63 63/95/59 +f 76/361/65 92/126/65 93/127/15 +f 69/363/14 85/109/14 86/111/68 +f 77/362/15 93/127/15 94/96/67 +f 70/364/68 86/111/68 87/113/59 +f 78/365/67 94/96/67 95/99/58 +f 71/366/59 87/113/59 88/115/63 +f 79/367/58 95/99/58 96/101/61 +f 72/368/63 88/115/63 89/117/51 +f 65/371/50 81/100/50 82/105/64 +f 80/369/61 96/101/61 81/100/50 +f 73/373/51 89/119/51 90/122/62 +f 66/372/64 82/105/64 83/107/54 +f 74/374/62 90/122/62 91/124/55 +f 67/375/54 83/107/54 84/106/66 +f 75/376/55 91/124/55 92/126/65 +f 68/377/66 84/106/66 85/109/14 +f 245/241/69 246/211/70 150/378/70 +f 103/380/58 119/197/58 118/195/67 +f 111/382/59 127/183/59 126/181/68 +f 103/380/58 104/385/61 120/199/61 +f 112/384/63 128/185/63 127/183/59 +f 104/385/61 105/461/50 121/201/50 +f 98/386/62 113/187/62 114/188/51 +f 112/384/63 97/387/51 114/188/51 +f 105/388/50 106/391/64 122/206/64 +f 99/389/55 115/189/55 113/187/62 +f 107/390/54 123/208/54 122/206/64 +f 99/389/55 100/394/65 116/191/65 +f 108/392/66 124/210/66 123/208/54 +f 101/393/15 117/193/15 116/191/65 +f 109/395/14 125/178/14 124/210/66 +f 102/381/67 118/195/67 117/193/15 +f 110/383/68 126/181/68 125/178/14 +f 244/239/71 245/241/69 149/379/69 +f 243/237/72 244/239/71 148/396/71 +f 242/235/73 243/237/72 147/397/72 +f 241/233/74 242/235/73 146/398/73 +f 144/400/75 240/230/75 241/232/74 +f 143/402/76 239/228/76 240/230/75 +f 142/403/77 238/226/77 239/228/76 +f 141/404/78 237/224/78 238/226/77 +f 140/405/79 236/222/79 237/224/78 +f 139/406/80 235/220/80 236/222/79 +f 138/407/81 233/218/81 235/220/80 +f 137/408/82 234/217/82 233/218/81 +f 248/215/83 234/217/82 137/408/82 +f 247/213/84 248/215/83 152/409/83 +f 246/211/70 247/213/84 151/410/84 +f 147/397/54 163/170/54 162/167/64 +f 140/405/65 156/157/65 155/155/55 +f 148/396/66 164/172/66 163/170/54 +f 141/404/15 157/159/15 156/157/65 +f 149/379/14 165/144/14 164/172/66 +f 142/403/67 158/161/67 157/159/15 +f 150/378/68 166/142/68 165/144/14 +f 143/402/58 159/163/58 158/161/67 +f 151/410/59 167/145/59 166/142/68 +f 144/400/61 160/165/61 159/163/58 +f 152/409/63 168/147/63 167/145/59 +f 145/401/50 161/320/50 160/165/61 +f 138/407/62 154/153/62 153/149/51 +f 137/408/51 153/149/51 168/147/63 +f 146/398/64 162/167/64 161/169/50 +f 139/406/55 155/155/55 154/153/62 +f 169/152/13 170/151/85 186/411/85 +f 169/152/13 185/412/13 200/413/86 +f 184/150/86 200/413/86 199/414/53 +f 183/148/53 199/414/53 198/415/87 +f 182/146/87 198/415/87 197/416/49 +f 180/174/88 181/143/49 197/416/49 +f 179/173/57 180/174/88 196/417/88 +f 179/173/57 195/418/57 194/419/89 +f 178/171/89 194/419/89 193/420/16 +f 177/166/16 193/438/16 192/421/90 +f 175/162/56 176/164/90 192/421/90 +f 174/160/91 175/162/56 191/422/56 +f 174/160/91 190/423/91 189/424/52 +f 172/156/92 173/158/52 189/424/52 +f 172/156/92 188/425/92 187/426/60 +f 171/154/60 187/426/60 186/411/85 +f 195/418/54 211/429/54 210/427/64 +f 188/425/65 204/430/65 203/428/55 +f 196/417/66 212/431/66 211/429/54 +f 189/424/15 205/432/15 204/430/65 +f 197/416/14 213/433/14 212/431/66 +f 190/423/67 206/434/67 205/432/15 +f 198/415/68 214/435/68 213/433/14 +f 191/422/58 207/436/58 206/434/67 +f 199/414/59 215/437/59 214/435/68 +f 192/421/61 208/439/61 207/436/58 +f 200/413/63 216/441/63 215/437/59 +f 193/438/50 209/451/50 208/439/61 +f 186/411/62 202/443/62 201/440/51 +f 185/412/51 201/440/51 216/441/63 +f 194/419/64 210/427/64 209/442/50 +f 187/426/55 203/428/55 202/443/62 +f 216/441/93 232/460/93 231/444/94 +f 215/437/94 231/444/94 230/445/95 +f 214/435/95 230/445/95 229/446/96 +f 213/433/96 229/446/96 228/447/97 +f 211/429/98 212/431/97 228/447/97 +f 211/429/98 227/448/98 226/449/99 +f 210/427/99 226/449/99 225/450/100 +f 209/451/100 225/462/100 224/452/101 +f 207/436/102 208/439/101 224/452/101 +f 206/434/103 207/436/102 223/453/102 +f 205/432/104 206/434/103 222/454/103 +f 204/430/105 205/432/104 221/455/104 +f 203/428/106 204/430/105 220/456/105 +f 202/443/107 203/428/106 219/457/106 +f 201/440/108 202/443/107 218/458/107 +f 201/440/108 217/459/108 232/460/93 +f 258/204/64 274/234/64 273/336/50 +f 251/192/55 267/221/55 266/219/62 +f 259/207/54 275/236/54 274/234/64 +f 252/194/65 268/223/65 267/221/55 +f 260/209/66 276/238/66 275/236/54 +f 253/196/15 269/225/15 268/223/65 +f 261/180/14 277/240/14 276/238/66 +f 254/198/67 270/227/67 269/225/15 +f 262/179/68 278/242/68 277/240/14 +f 255/200/58 271/229/58 270/227/67 +f 263/182/59 279/212/59 278/242/68 +f 256/202/61 272/231/61 271/229/58 +f 264/184/63 280/214/63 279/212/59 +f 257/334/50 273/335/50 272/231/61 +f 250/190/62 266/219/62 265/216/51 +f 249/186/51 265/216/51 280/214/63 +o Tube v 0.000000 0.500000 -6.375000 v 0.000000 0.500000 6.375000 v 0.191342 0.461940 -6.375000 @@ -409,38 +1924,6 @@ v -0.500000 -0.125000 5.812500 v 0.500000 -0.125000 5.812500 v -0.500000 -0.125000 5.687500 v 0.500000 -0.125000 5.687500 -v -0.500000 -1.500000 1.687500 -v 2.500000 -1.500000 1.687500 -v -0.500000 1.500000 1.687500 -v 2.500000 1.500000 1.687500 -v 0.500000 -2.000000 1.687500 -v 1.500000 -2.000000 1.687500 -v 1.500000 2.000000 1.687500 -v 0.500000 2.000000 1.687500 -v -0.500000 0.500000 1.687500 -v -0.500000 -0.500000 1.687500 -v 0.500000 0.500000 1.687500 -v 0.500000 -0.500000 1.687500 -v -0.500000 -0.500000 1.812500 -v -0.500000 -1.500000 1.812500 -v 1.500000 -2.000000 1.812500 -v 2.500000 -1.500000 1.812500 -v 2.500000 1.500000 1.812500 -v 0.500000 2.000000 1.812500 -v -0.500000 1.500000 1.812500 -v 0.500000 -2.000000 1.812500 -v 1.500000 2.000000 1.812500 -v -0.500000 0.500000 1.812500 -v 0.500000 0.500000 1.812500 -v 0.500000 -0.500000 1.812500 -v 0.375000 0.625000 1.687500 -v 1.125000 0.625000 1.687500 -v 0.375000 1.375000 1.687500 -v 1.125000 1.375000 1.687500 -v 0.375000 1.375000 1.812500 -v 0.375000 0.625000 1.812500 -v 1.125000 0.625000 1.812500 -v 1.125000 1.375000 1.812500 v 0.000000 0.500000 1.875000 v 0.191342 0.461939 1.875000 v 0.353553 0.353553 1.875000 @@ -625,310 +2108,6 @@ v 0.266186 0.586047 -6.875000 v 0.172436 0.423668 -6.375000 v 0.280689 0.361168 -6.375000 v 0.374439 0.523547 -6.875000 -v 0.000000 2.437500 -6.375000 -v -0.167424 2.404197 -6.375000 -v -0.309359 2.309359 -6.375000 -v -0.404197 2.167424 -6.375000 -v -0.437500 2.000000 -6.375000 -v -0.404197 1.832576 -6.375000 -v -0.309359 1.690641 -6.375000 -v -0.167424 1.595803 -6.375000 -v 0.000000 1.562500 -6.375000 -v 0.167424 1.595803 -6.375000 -v 0.309359 1.690640 -6.375000 -v 0.404197 1.832576 -6.375000 -v 0.437500 2.000000 -6.375000 -v 0.404197 2.167424 -6.375000 -v 0.309359 2.309359 -6.375000 -v 0.167424 2.404197 -6.375000 -v 0.000000 2.437500 -5.750000 -v -0.167424 2.404197 -5.750000 -v -0.309359 2.309359 -5.750000 -v -0.404197 2.167424 -5.750000 -v -0.437500 2.000000 -5.750000 -v -0.404197 1.832576 -5.750000 -v -0.309359 1.690641 -5.750000 -v -0.167424 1.595803 -5.750000 -v 0.000000 1.562500 -5.750000 -v 0.167424 1.595803 -5.750000 -v 0.309359 1.690640 -5.750000 -v 0.404197 1.832576 -5.750000 -v 0.437500 2.000000 -5.750000 -v 0.404197 2.167424 -5.750000 -v 0.309359 2.309359 -5.750000 -v 0.167424 2.404197 -5.750000 -v 0.000000 2.375000 -6.375000 -v -0.143507 2.346455 -6.375000 -v -0.265165 2.265165 -6.375000 -v -0.346455 2.143506 -6.375000 -v -0.375000 2.000000 -6.375000 -v -0.346455 1.856493 -6.375000 -v -0.265165 1.734835 -6.375000 -v -0.143507 1.653545 -6.375000 -v 0.000000 1.625000 -6.375000 -v 0.143506 1.653545 -6.375000 -v 0.265165 1.734835 -6.375000 -v 0.346455 1.856493 -6.375000 -v 0.375000 2.000000 -6.375000 -v 0.346455 2.143507 -6.375000 -v 0.265165 2.265165 -6.375000 -v 0.143506 2.346455 -6.375000 -v 0.000000 2.375000 -5.750000 -v -0.143507 2.346455 -5.750000 -v -0.265165 2.265165 -5.750000 -v -0.346455 2.143506 -5.750000 -v -0.375000 2.000000 -5.750000 -v -0.346455 1.856493 -5.750000 -v -0.265165 1.734835 -5.750000 -v -0.143507 1.653545 -5.750000 -v 0.000000 1.625000 -5.750000 -v 0.143506 1.653545 -5.750000 -v 0.265165 1.734835 -5.750000 -v 0.346455 1.856493 -5.750000 -v 0.375000 2.000000 -5.750000 -v 0.346455 2.143507 -5.750000 -v 0.265165 2.265165 -5.750000 -v 0.143506 2.346455 -5.750000 -v 0.000000 2.250000 -6.375000 -v -0.095671 2.230970 -6.375000 -v -0.176777 2.176777 -6.375000 -v -0.230970 2.095671 -6.375000 -v -0.250000 2.000000 -6.375000 -v -0.230970 1.904329 -6.375000 -v -0.176777 1.823223 -6.375000 -v -0.095671 1.769030 -6.375000 -v 0.000000 1.750000 -6.375000 -v 0.095671 1.769030 -6.375000 -v 0.176776 1.823223 -6.375000 -v 0.230970 1.904329 -6.375000 -v 0.250000 2.000000 -6.375000 -v 0.230970 2.095671 -6.375000 -v 0.176776 2.176777 -6.375000 -v 0.095671 2.230970 -6.375000 -v -0.095671 2.230972 -3.375000 -v 0.000000 2.250002 -3.375000 -v -0.176777 2.176779 -3.375000 -v -0.230970 2.095673 -3.375000 -v -0.250000 2.000002 -3.375000 -v -0.230970 1.904331 -3.375000 -v -0.176777 1.823225 -3.375000 -v -0.095671 1.769032 -3.375000 -v 0.000000 1.750002 -3.375000 -v 0.095671 1.769032 -3.375000 -v 0.176776 1.823225 -3.375000 -v 0.230970 1.904331 -3.375000 -v 0.250000 2.000002 -3.375000 -v 0.230970 2.095673 -3.375000 -v 0.176776 2.176779 -3.375000 -v 0.095671 2.230972 -3.375000 -v -0.031250 2.406250 -5.750000 -v 0.031250 2.406250 -5.750000 -v -0.031250 2.406250 -6.250000 -v 0.031250 2.406250 -6.250000 -v -0.031250 2.218750 -5.250000 -v 0.031250 2.218750 -5.250000 -v -0.031250 2.218750 -6.250000 -v 0.031250 2.218750 -6.250000 -v 0.000000 2.437500 -2.250000 -v -0.167424 2.404197 -2.250000 -v -0.309359 2.309359 -2.250000 -v -0.404197 2.167424 -2.250000 -v -0.437500 2.000000 -2.250000 -v -0.404197 1.832576 -2.250000 -v -0.309359 1.690641 -2.250000 -v -0.167424 1.595803 -2.250000 -v 0.000000 1.562500 -2.250000 -v 0.167424 1.595803 -2.250000 -v 0.309359 1.690640 -2.250000 -v 0.404197 1.832576 -2.250000 -v 0.437500 2.000000 -2.250000 -v 0.404197 2.167424 -2.250000 -v 0.309359 2.309359 -2.250000 -v 0.167424 2.404197 -2.250000 -v 0.000000 2.437500 -1.624000 -v -0.167424 2.404197 -1.624000 -v -0.309359 2.309359 -1.624000 -v -0.404197 2.167424 -1.624000 -v -0.437500 2.000000 -1.624000 -v -0.404197 1.832576 -1.624000 -v -0.309359 1.690641 -1.624000 -v -0.167424 1.595803 -1.624000 -v 0.000000 1.562500 -1.624000 -v 0.167424 1.595803 -1.624000 -v 0.309359 1.690640 -1.624000 -v 0.404197 1.832576 -1.624000 -v 0.437500 2.000000 -1.624000 -v 0.404197 2.167424 -1.624000 -v 0.309359 2.309359 -1.624000 -v 0.167424 2.404197 -1.624000 -v 0.000000 2.375000 -1.624000 -v -0.143507 2.346455 -1.624000 -v -0.265165 2.265165 -1.624000 -v -0.346455 2.143506 -1.624000 -v -0.375000 2.000000 -1.624000 -v -0.346455 1.856494 -1.624000 -v -0.265165 1.734835 -1.624000 -v -0.143507 1.653545 -1.624000 -v 0.000000 1.625000 -1.624000 -v 0.143506 1.653545 -1.624000 -v 0.265165 1.734835 -1.624000 -v 0.346455 1.856494 -1.624000 -v 0.375000 2.000000 -1.624000 -v 0.346455 2.143506 -1.624000 -v 0.265165 2.265165 -1.624000 -v 0.143506 2.346455 -1.624000 -v 0.000000 2.187500 -1.124000 -v -0.071754 2.173228 -1.124000 -v -0.132583 2.132583 -1.124000 -v -0.173227 2.071753 -1.124000 -v -0.187500 2.000000 -1.124000 -v -0.173227 1.928247 -1.124000 -v -0.132583 1.867418 -1.124000 -v -0.071754 1.826773 -1.124000 -v 0.000000 1.812500 -1.124000 -v 0.071753 1.826773 -1.124000 -v 0.132582 1.867418 -1.124000 -v 0.173227 1.928247 -1.124000 -v 0.187500 2.000000 -1.124000 -v 0.173227 2.071753 -1.124000 -v 0.132582 2.132583 -1.124000 -v 0.071753 2.173228 -1.124000 -v 0.000000 2.187500 -0.624000 -v -0.071754 2.173228 -0.624000 -v -0.132583 2.132583 -0.624000 -v -0.173227 2.071753 -0.624000 -v -0.187500 2.000000 -0.624000 -v -0.173227 1.928247 -0.624000 -v -0.132583 1.867418 -0.624000 -v -0.071754 1.826773 -0.624000 -v 0.000000 1.812500 -0.624000 -v 0.071753 1.826773 -0.624000 -v 0.132582 1.867418 -0.624000 -v 0.173227 1.928247 -0.624000 -v 0.187500 2.000000 -0.624000 -v 0.173227 2.071753 -0.624000 -v 0.132582 2.132583 -0.624000 -v 0.071753 2.173228 -0.624000 -v 0.000000 2.125000 -0.499000 -v -0.047836 2.115485 -0.499000 -v -0.088388 2.088389 -0.499000 -v -0.115485 2.047836 -0.499000 -v -0.125000 2.000000 -0.499000 -v -0.115485 1.952165 -0.499000 -v -0.088388 1.911612 -0.499000 -v -0.047836 1.884515 -0.499000 -v 0.000000 1.875000 -0.499000 -v 0.047835 1.884515 -0.499000 -v 0.088388 1.911612 -0.499000 -v 0.115485 1.952165 -0.499000 -v 0.125000 2.000000 -0.499000 -v 0.115485 2.047836 -0.499000 -v 0.088388 2.088389 -0.499000 -v 0.047835 2.115485 -0.499000 -v -0.095671 2.230972 -2.875000 -v 0.000000 2.250002 -2.875000 -v -0.176777 2.176779 -2.875000 -v -0.230970 2.095673 -2.875000 -v -0.250000 2.000002 -2.875000 -v -0.230970 1.904331 -2.875000 -v -0.176777 1.823225 -2.875000 -v -0.095671 1.769032 -2.875000 -v 0.000000 1.750002 -2.875000 -v 0.095671 1.769032 -2.875000 -v 0.176776 1.823225 -2.875000 -v 0.230970 1.904331 -2.875000 -v 0.250000 2.000002 -2.875000 -v 0.230970 2.095673 -2.875000 -v 0.176776 2.176779 -2.875000 -v 0.095671 2.230972 -2.875000 -v 0.000000 2.187500 -3.374000 -v -0.071754 2.173228 -3.374000 -v -0.132583 2.132583 -3.374000 -v -0.173227 2.071753 -3.374000 -v -0.187500 2.000000 -3.374000 -v -0.173227 1.928247 -3.374000 -v -0.132583 1.867418 -3.374000 -v -0.071754 1.826773 -3.374000 -v 0.000000 1.812500 -3.374000 -v 0.071753 1.826773 -3.374000 -v 0.132582 1.867418 -3.374000 -v 0.173227 1.928247 -3.374000 -v 0.187500 2.000000 -3.374000 -v 0.173227 2.071753 -3.374000 -v 0.132582 2.132583 -3.374000 -v 0.071753 2.173228 -3.374000 -v 0.000000 2.187500 -2.874000 -v -0.071754 2.173228 -2.874000 -v -0.132583 2.132583 -2.874000 -v -0.173227 2.071753 -2.874000 -v -0.187500 2.000000 -2.874000 -v -0.173227 1.928247 -2.874000 -v -0.132583 1.867418 -2.874000 -v -0.071754 1.826773 -2.874000 -v 0.000000 1.812500 -2.874000 -v 0.071753 1.826773 -2.874000 -v 0.132582 1.867418 -2.874000 -v 0.173227 1.928247 -2.874000 -v 0.187500 2.000000 -2.874000 -v 0.173227 2.071753 -2.874000 -v 0.132582 2.132583 -2.874000 -v 0.071753 2.173228 -2.874000 -v 0.031250 1.593750 -5.750000 -v -0.031250 1.593750 -5.750000 -v 0.031250 1.593750 -6.250000 -v -0.031250 1.593750 -6.250000 -v 0.031250 1.781250 -5.250000 -v -0.031250 1.781250 -5.250000 -v 0.031250 1.781250 -6.250000 -v -0.031250 1.781250 -6.250000 -v 0.406250 2.031250 -5.750000 -v 0.406250 1.968750 -5.750000 -v 0.406250 2.031250 -6.250000 -v 0.406250 1.968750 -6.250000 -v 0.218750 2.031250 -5.250000 -v 0.218750 1.968750 -5.250000 -v 0.218750 2.031250 -6.250000 -v 0.218750 1.968750 -6.250000 -v -0.406250 1.968750 -5.750000 -v -0.406250 2.031250 -5.750000 -v -0.406250 1.968750 -6.250000 -v -0.406250 2.031250 -6.250000 -v -0.218750 1.968750 -5.250000 -v -0.218750 2.031250 -5.250000 -v -0.218750 1.968750 -6.250000 -v -0.218750 2.031250 -6.250000 -v 0.265165 2.309359 -5.750000 -v 0.309359 2.265165 -5.750000 -v 0.265165 2.309359 -6.250000 -v 0.309359 2.265165 -6.250000 -v 0.132583 2.176777 -5.250000 -v 0.176777 2.132582 -5.250000 -v 0.132583 2.176777 -6.250000 -v 0.176777 2.132582 -6.250000 -v -0.265165 1.690641 -5.750000 -v -0.309359 1.734835 -5.750000 -v -0.265165 1.690641 -6.250000 -v -0.309359 1.734835 -6.250000 -v -0.132583 1.823223 -5.250000 -v -0.176777 1.867417 -5.250000 -v -0.132583 1.823223 -6.250000 -v -0.176777 1.867417 -6.250000 -v 0.309359 1.734835 -5.750000 -v 0.265165 1.690641 -5.750000 -v 0.309359 1.734835 -6.250000 -v 0.265165 1.690641 -6.250000 -v 0.176777 1.867417 -5.250000 -v 0.132583 1.823223 -5.250000 -v 0.176777 1.867417 -6.250000 -v 0.132583 1.823223 -6.250000 -v -0.309359 2.265165 -5.750000 -v -0.265165 2.309359 -5.750000 -v -0.309359 2.265165 -6.250000 -v -0.265165 2.309359 -6.250000 -v -0.176777 2.132582 -5.250000 -v -0.132583 2.176777 -5.250000 -v -0.176777 2.132582 -6.250000 -v -0.132583 2.176777 -6.250000 vt 0.500000 0.393939 vt 0.495146 0.363636 vt 0.500000 0.363636 @@ -1306,59 +2485,6 @@ vt 0.349515 0.484848 vt 0.495146 0.575758 vt 0.495146 0.484848 vt 0.514563 0.515152 -vt 0.179612 0.909091 -vt 0.165049 0.984848 -vt 0.126214 0.924242 -vt 0.208738 0.818182 -vt 0.179612 0.833333 -vt 0.179612 0.818182 -vt 0.242718 0.681818 -vt 0.203883 0.696970 -vt 0.203883 0.681818 -vt -0.000000 0.560606 -vt 0.004854 0.681818 -vt -0.000000 0.681818 -vt 0.043689 1.000000 -vt 0.082524 0.984848 -vt 0.082524 1.000000 -vt 0.043689 0.484848 -vt 0.004854 0.500000 -vt 0.004854 0.484848 -vt 0.038835 0.681818 -vt 0.043689 0.803030 -vt 0.038835 0.803030 -vt 0.121359 0.484848 -vt 0.082524 0.500000 -vt 0.082524 0.484848 -vt -0.000000 0.803030 -vt 0.004854 0.924242 -vt 0.000000 0.924242 -vt 0.043689 0.500000 -vt 0.121359 0.560606 -vt 0.126214 0.560606 -vt 0.203883 0.803030 -vt 0.242718 0.787879 -vt 0.242718 0.803030 -vt 0.121359 0.984848 -vt 0.121359 1.000000 -vt 0.004854 1.000000 -vt 0.043689 0.984848 -vt 0.063107 0.818182 -vt 0.067961 0.909091 -vt 0.063107 0.909091 -vt 0.121359 0.924242 -vt 0.067961 0.818182 -vt 0.203883 0.984848 -vt 0.208738 0.909091 -vt 0.004854 0.803030 -vt 0.038835 0.818182 -vt 0.242718 0.924242 -vt 0.043689 0.681818 -vt 0.203883 0.500000 -vt 0.242718 0.560606 -vt 0.043689 0.909091 -vt 0.043689 0.818182 -vt 0.208738 0.893939 vt 0.266990 0.636364 vt 0.262136 0.666667 vt 0.262136 0.636364 @@ -1592,242 +2718,6 @@ vt 0.470874 0.818182 vt 0.490291 0.833333 vt 0.490291 0.863636 vt 0.470874 0.863636 -vt 0.951456 0.818182 -vt 0.946602 0.833333 -vt 0.946602 0.818182 -vt 0.951456 0.833333 -vt 0.946602 0.848485 -vt 0.951456 0.848485 -vt 0.946602 0.863636 -vt 0.951456 0.878788 -vt 0.946602 0.878788 -vt 0.946602 0.893939 -vt 0.951456 0.893939 -vt 0.946602 0.909091 -vt 0.951456 0.924242 -vt 0.946602 0.924242 -vt 0.951456 0.939394 -vt 0.946602 0.939394 -vt 0.951456 0.954545 -vt 0.946602 0.954545 -vt 0.951456 0.969697 -vt 0.946602 0.969697 -vt 0.951456 0.984848 -vt 0.946602 0.984848 -vt 0.951456 1.000000 -vt 0.946602 1.000000 -vt 0.951456 0.757576 -vt 0.946602 0.772727 -vt 0.946602 0.757576 -vt 0.951456 0.772727 -vt 0.946602 0.787879 -vt 0.951456 0.787879 -vt 0.946602 0.803030 -vt 0.951456 0.803030 -vt 0.932039 0.848485 -vt 0.927184 0.833333 -vt 0.932039 0.833333 -vt 0.932039 0.863636 -vt 0.927184 0.848485 -vt 0.927184 0.878788 -vt 0.927184 0.863636 -vt 0.932039 0.893939 -vt 0.932039 0.878788 -vt 0.932039 0.909091 -vt 0.927184 0.893939 -vt 0.927184 0.924242 -vt 0.927184 0.909091 -vt 0.932039 0.924242 -vt 0.927184 0.939394 -vt 0.932039 0.939394 -vt 0.927184 0.954545 -vt 0.932039 0.954545 -vt 0.927184 0.969697 -vt 0.932039 0.969697 -vt 0.927184 0.984848 -vt 0.932039 0.984848 -vt 0.927184 1.000000 -vt 0.932039 0.772727 -vt 0.927184 0.757576 -vt 0.932039 0.757576 -vt 0.932039 0.787879 -vt 0.927184 0.772727 -vt 0.932039 0.803030 -vt 0.927184 0.787879 -vt 0.932039 0.818182 -vt 0.927184 0.803030 -vt 0.927184 0.818182 -vt 0.970863 0.924242 -vt 0.968023 0.945646 -vt 0.954307 0.902838 -vt 0.970874 0.863636 -vt 0.951456 0.848485 -vt 0.970874 0.848485 -vt 0.990291 0.848485 -vt 1.000000 0.863636 -vt 0.990291 0.863636 -vt 0.990291 0.818182 -vt 0.990291 0.893939 -vt 0.970874 0.863636 -vt 0.951456 0.848485 -vt 0.970874 0.848485 -vt 0.718447 0.833333 -vt 0.713592 0.818182 -vt 0.718447 0.818182 -vt 0.718447 0.848485 -vt 0.713592 0.833333 -vt 0.718447 0.863636 -vt 0.713592 0.848485 -vt 0.718447 0.878788 -vt 0.713592 0.863636 -vt 0.713592 0.893939 -vt 0.713592 0.878788 -vt 0.718447 0.893939 -vt 0.713592 0.909091 -vt 0.718447 0.909091 -vt 0.713592 0.924242 -vt 0.718447 0.924242 -vt 0.713592 0.939394 -vt 0.718447 0.939394 -vt 0.713592 0.954545 -vt 0.718447 0.954545 -vt 0.713592 0.969697 -vt 0.718447 0.969697 -vt 0.713592 0.984848 -vt 0.718447 0.984848 -vt 0.713592 1.000000 -vt 0.718447 0.772727 -vt 0.713592 0.757576 -vt 0.718447 0.757576 -vt 0.718447 0.787879 -vt 0.713592 0.772727 -vt 0.718447 0.803030 -vt 0.713592 0.787879 -vt 0.713592 0.803030 -vt 0.951467 0.969697 -vt 0.956311 0.954577 -vt 0.961155 0.969697 -vt 0.796117 0.818182 -vt 0.791262 0.833333 -vt 0.791262 0.818182 -vt 0.796117 0.833333 -vt 0.791262 0.848485 -vt 0.796117 0.848485 -vt 0.791262 0.863636 -vt 0.796117 0.863636 -vt 0.791262 0.878788 -vt 0.796117 0.893939 -vt 0.796117 0.878788 -vt 0.796117 0.909091 -vt 0.791262 0.893939 -vt 0.796117 0.924242 -vt 0.791262 0.909091 -vt 0.796117 0.939394 -vt 0.791262 0.924242 -vt 0.796117 0.954545 -vt 0.791262 0.939394 -vt 0.796117 0.969697 -vt 0.791262 0.954545 -vt 0.796117 0.984848 -vt 0.791262 0.969697 -vt 0.796117 1.000000 -vt 0.791262 0.984848 -vt 0.796117 0.757576 -vt 0.791262 0.772727 -vt 0.791262 0.757576 -vt 0.796117 0.772727 -vt 0.791262 0.787879 -vt 0.796117 0.787879 -vt 0.791262 0.803030 -vt 0.796117 0.803030 -vt 0.766990 0.833333 -vt 0.771845 0.848485 -vt 0.766990 0.848485 -vt 0.771845 0.863636 -vt 0.766990 0.863636 -vt 0.771845 0.878788 -vt 0.766990 0.878788 -vt 0.766990 0.893939 -vt 0.771845 0.893939 -vt 0.766990 0.909091 -vt 0.771845 0.909091 -vt 0.766990 0.924242 -vt 0.771845 0.924242 -vt 0.766990 0.939394 -vt 0.771845 0.939394 -vt 0.766990 0.954545 -vt 0.771845 0.954545 -vt 0.766990 0.969697 -vt 0.771845 0.969697 -vt 0.766990 0.984848 -vt 0.771845 0.984848 -vt 0.766990 1.000000 -vt 0.766990 0.757576 -vt 0.771845 0.772727 -vt 0.766990 0.772727 -vt 0.771845 0.787879 -vt 0.766990 0.787879 -vt 0.771845 0.803030 -vt 0.766990 0.803030 -vt 0.771845 0.818182 -vt 0.766990 0.818182 -vt 0.771845 0.833333 -vt 0.990291 0.848485 -vt 1.000000 0.863636 -vt 0.990291 0.863636 -vt 0.990291 0.818182 -vt 0.990291 0.893939 -vt 0.970874 0.863636 -vt 0.951456 0.848485 -vt 0.970874 0.848485 -vt 0.990291 0.848485 -vt 1.000000 0.863636 -vt 0.990291 0.863636 -vt 0.990291 0.818182 -vt 0.990291 0.893939 -vt 0.970874 0.863636 -vt 0.951456 0.848485 -vt 0.970874 0.848485 -vt 0.990291 0.848485 -vt 1.000000 0.863636 -vt 0.990291 0.863636 -vt 0.990291 0.818182 -vt 0.990291 0.893939 -vt 0.970874 0.863636 -vt 0.951456 0.848485 -vt 0.970874 0.848485 -vt 0.990291 0.863636 -vt 1.000000 0.848485 -vt 1.000000 0.863636 -vt 0.990291 0.818182 -vt 0.990291 0.848485 -vt 0.990291 0.893939 -vt 0.970874 0.863636 -vt 0.951456 0.848485 -vt 0.970874 0.848485 -vt 0.990291 0.848485 -vt 1.000000 0.863636 -vt 0.990291 0.863636 -vt 0.990291 0.818182 -vt 0.990291 0.893939 -vt 0.970874 0.848485 -vt 0.951456 0.863636 -vt 0.951456 0.848485 -vt 0.990291 0.848485 -vt 1.000000 0.863636 -vt 0.990291 0.863636 -vt 0.990291 0.818182 -vt 0.990291 0.893939 -vt 0.970874 0.863636 -vt 0.970874 0.848485 -vt 0.951456 0.863636 -vt 0.951456 0.848485 -vt 0.990291 0.848485 -vt 1.000000 0.863636 -vt 0.990291 0.863636 -vt 0.990291 0.818182 -vt 0.990291 0.893939 -vt 0.970874 0.863636 vt 0.500000 0.484848 vt 1.000000 0.454545 vt 1.000000 0.000000 @@ -1881,15 +2771,6 @@ vt 0.262136 0.969697 vt 0.368932 0.484848 vt 0.300971 0.606061 vt 0.446602 0.484848 -vt 0.208738 0.833333 -vt 0.242718 0.696970 -vt 0.004854 0.560606 -vt 0.121359 0.500000 -vt 0.203883 0.787879 -vt 0.004854 0.984848 -vt 0.038835 0.909091 -vt 0.165049 0.500000 -vt 0.179612 0.893939 vt 0.266990 0.787879 vt 0.266990 0.909091 vt 0.266990 0.484848 @@ -1929,68 +2810,6 @@ vt 0.429612 0.787879 vt 0.490291 0.803030 vt 0.490291 0.803030 vt 0.490291 0.803030 -vt 0.951456 0.863636 -vt 0.951456 0.909091 -vt 0.932039 1.000000 -vt 0.964876 0.952208 -vt 0.961165 0.954512 -vt 0.957454 0.952208 -vt 0.954307 0.945646 -vt 0.952205 0.935826 -vt 0.951467 0.924242 -vt 0.952205 0.912658 -vt 0.957454 0.896276 -vt 0.961165 0.893972 -vt 0.964876 0.896276 -vt 0.968023 0.902838 -vt 0.970125 0.912658 -vt 0.970125 0.935826 -vt 0.951456 0.863636 -vt 1.000000 0.848485 -vt 0.951456 0.818182 -vt 0.951456 0.893939 -vt 0.951456 0.863636 -vt 0.718447 1.000000 -vt 0.956311 0.984817 -vt 0.954457 0.983666 -vt 0.952885 0.980388 -vt 0.951835 0.975483 -vt 0.951835 0.963911 -vt 0.952885 0.959006 -vt 0.954457 0.955728 -vt 0.958164 0.955728 -vt 0.959736 0.959006 -vt 0.960786 0.963911 -vt 0.960786 0.975483 -vt 0.959736 0.980388 -vt 0.958164 0.983666 -vt 0.791262 1.000000 -vt 0.771845 1.000000 -vt 0.771845 0.757576 -vt 1.000000 0.848485 -vt 0.951456 0.818182 -vt 0.951456 0.893939 -vt 0.951456 0.863636 -vt 1.000000 0.848485 -vt 0.951456 0.818182 -vt 0.951456 0.893939 -vt 0.951456 0.863636 -vt 1.000000 0.848485 -vt 0.951456 0.818182 -vt 0.951456 0.893939 -vt 0.951456 0.863636 -vt 0.951456 0.818182 -vt 0.951456 0.893939 -vt 0.951456 0.863636 -vt 1.000000 0.848485 -vt 0.951456 0.818182 -vt 0.951456 0.893939 -vt 1.000000 0.848485 -vt 0.951456 0.818182 -vt 0.951456 0.893939 -vt 1.000000 0.848485 -vt 0.951456 0.818182 -vt 0.951456 0.893939 vt 0.000000 0.181818 vt 0.000000 0.454545 vt 0.000000 0.242424 @@ -2101,113 +2920,11 @@ vt 0.577670 0.560606 vt 0.587379 0.560606 vt 0.577670 0.651515 vt 0.577670 0.621212 -vt 0.912621 0.803030 -vt 0.912621 0.818182 -vt 0.912621 0.939394 -vt 0.912621 0.954545 -vt 0.912621 0.833333 -vt 0.912621 0.969697 -vt 0.912621 0.848485 -vt 0.912621 0.984848 -vt 0.912621 0.863636 -vt 0.912621 1.000000 -vt 0.912621 0.878788 -vt 0.912621 0.893939 -vt 0.912621 0.757576 -vt 0.912621 0.772727 -vt 0.912621 0.909091 -vt 0.912621 0.787879 -vt 0.912621 0.924242 -vt 0.742718 0.833333 -vt 0.742718 0.818182 -vt 0.912621 0.969697 -vt 0.912621 0.954545 -vt 0.912621 0.848485 -vt 0.912621 0.833333 -vt 0.912621 0.863636 -vt 0.912621 0.984848 -vt 0.912621 0.893939 -vt 0.912621 0.878788 -vt 0.912621 0.757576 -vt 0.912621 0.909091 -vt 0.912621 0.787879 -vt 0.912621 0.772727 -vt 0.912621 0.924242 -vt 0.912621 0.803030 -vt 0.912621 0.939394 -vt 0.912621 0.818182 -vt 0.742718 0.803030 -vt 0.742718 0.787879 -vt 0.742718 0.772727 -vt 0.742718 0.757576 -vt 0.742718 1.000000 -vt 0.742718 0.984848 -vt 0.742718 0.969697 -vt 0.742718 0.954545 -vt 0.742718 0.939394 -vt 0.742718 0.924242 -vt 0.742718 0.909091 -vt 0.742718 0.893939 -vt 0.742718 0.878788 -vt 0.742718 0.863636 -vt 0.742718 0.848485 -vt 0.694175 0.893939 -vt 0.694175 0.878788 -vt 0.694175 0.863636 -vt 0.694175 0.848485 -vt 0.694175 0.833333 -vt 0.694175 0.818182 -vt 0.694175 0.803030 -vt 0.694175 0.787879 -vt 0.694175 0.772727 -vt 0.694175 0.757576 -vt 0.694175 0.984848 -vt 0.694175 0.969697 -vt 0.694175 0.954545 -vt 0.694175 0.939394 -vt 0.694175 0.924242 -vt 0.694175 0.909091 -vt 0.674757 0.772727 -vt 0.674757 0.909091 -vt 0.674757 0.787879 -vt 0.674757 0.924242 -vt 0.674757 0.803030 -vt 0.674757 0.939394 -vt 0.674757 0.818182 -vt 0.674757 0.954545 -vt 0.674757 0.833333 -vt 0.674757 0.969697 -vt 0.674757 0.848485 -vt 0.694175 1.000000 -vt 0.674757 0.984848 -vt 0.674757 0.878788 -vt 0.674757 0.863636 -vt 0.674757 0.757576 -vt 0.674757 0.893939 -vt 0.669903 0.848485 -vt 0.669903 0.833333 -vt 0.669903 0.818182 -vt 0.669903 0.803030 -vt 0.669903 0.787879 -vt 0.669903 0.772727 -vt 0.669903 0.757576 -vt 0.674757 1.000000 -vt 0.669903 0.984848 -vt 0.669903 0.969697 -vt 0.669903 0.954545 -vt 0.669903 0.939394 -vt 0.669903 0.924242 -vt 0.669903 0.909091 -vt 0.669903 0.893939 -vt 0.669903 0.878788 -vt 0.669903 0.863636 vt -0.000000 0.484848 vt 0.708738 0.606061 vt 0.679612 0.530303 vt 0.762136 0.484848 vt 0.577670 0.681818 -vt 0.912621 1.000000 -vt 0.669903 1.000000 vn -0.0000 0.0000 1.0000 vn 0.0000 0.0000 -1.0000 vn 0.9363 0.0000 0.3511 @@ -2227,10 +2944,6 @@ vn 0.0000 -0.3714 0.9285 vn 0.0000 0.1789 -0.9839 vn 0.0000 0.3881 -0.9216 vn 0.0000 0.7071 0.7071 -vn -0.4472 -0.8944 0.0000 -vn 0.4472 -0.8944 0.0000 -vn 0.4472 0.8944 0.0000 -vn -0.4472 0.8944 0.0000 vn 0.7071 -0.7071 0.0000 vn -0.7071 0.7071 0.0000 vn 0.5556 0.8315 0.0000 @@ -2252,51 +2965,13 @@ vn -0.8660 0.5000 -0.0000 vn 0.8660 -0.5000 0.0000 vn 0.4682 0.8109 0.3511 vn -0.4682 -0.8109 -0.3511 -vn 0.0000 0.9363 0.3511 -vn 0.0000 -0.9363 0.3511 -vn 0.0160 0.0032 0.9999 -vn 0.0136 0.0091 0.9999 -vn 0.0091 0.0136 0.9999 -vn 0.0032 0.0160 0.9999 -vn -0.0032 0.0160 0.9999 -vn -0.0091 0.0136 0.9999 -vn -0.0136 0.0091 0.9999 -vn -0.0160 0.0032 0.9999 -vn -0.0160 -0.0032 0.9999 -vn -0.0136 -0.0091 0.9999 -vn -0.0091 -0.0136 0.9999 -vn -0.0032 -0.0160 0.9999 -vn 0.0032 -0.0160 0.9999 -vn 0.0091 -0.0136 0.9999 -vn 0.0136 -0.0091 0.9999 -vn 0.0160 -0.0032 0.9999 -vn -0.0136 -0.0091 -0.9999 -vn -0.0091 -0.0136 -0.9999 -vn -0.0032 -0.0160 -0.9999 -vn 0.0032 -0.0160 -0.9999 -vn 0.0091 -0.0136 -0.9999 -vn 0.0136 -0.0091 -0.9999 -vn 0.0160 -0.0032 -0.9999 -vn 0.0160 0.0032 -0.9999 -vn 0.0136 0.0091 -0.9999 -vn 0.0091 0.0136 -0.9999 -vn 0.0032 0.0160 -0.9999 -vn -0.0032 0.0160 -0.9999 -vn -0.0091 0.0136 -0.9999 -vn -0.0136 0.0091 -0.9999 -vn -0.0160 0.0032 -0.9999 -vn -0.0160 -0.0032 -0.9999 -vn 0.6621 0.6621 0.3511 -vn -0.6621 -0.6621 0.3511 -vn 0.6621 -0.6621 0.3511 -vn -0.7071 -0.7071 0.0000 -vn 0.7071 0.7071 0.0000 -vn -0.6621 0.6621 0.3511 vn 0.3827 0.9239 0.0000 +vn 0.7071 0.7071 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.3827 -0.9239 -0.0000 +vn -0.7071 -0.7071 -0.0000 vn -0.9239 -0.3827 -0.0000 vn -0.9239 0.3827 0.0000 vn -0.3827 0.9239 0.0000 @@ -2316,1581 +2991,939 @@ vn -0.8048 0.5309 0.2654 vn 0.9539 -0.2684 -0.1342 vn 0.4741 -0.7875 -0.3938 vn -0.0000 -0.8944 -0.4472 -vn 0.9578 0.0000 -0.2873 -vn 0.8849 0.3665 -0.2873 -vn 0.8849 -0.3665 -0.2873 -vn 0.6773 -0.6773 -0.2874 -vn 0.3665 -0.8849 -0.2874 -vn 0.0000 -0.9578 -0.2874 -vn -0.3665 -0.8849 -0.2874 -vn -0.6773 -0.6773 -0.2873 -vn -0.8849 -0.3665 -0.2873 -vn -0.9578 -0.0000 -0.2873 -vn -0.8849 0.3665 -0.2873 -vn -0.6773 0.6773 -0.2873 -vn -0.3665 0.8849 -0.2873 -vn 0.0000 0.9578 -0.2873 -vn 0.3665 0.8849 -0.2873 -vn 0.6773 0.6773 -0.2873 -vn -0.3583 0.8651 0.3511 -vn 0.3583 0.8651 0.3511 -vn 0.8651 0.3583 0.3511 -vn 0.8651 -0.3583 0.3511 -vn 0.3583 -0.8651 0.3511 -vn -0.3583 -0.8651 0.3511 -vn -0.8651 -0.3583 0.3511 -vn -0.8651 0.3583 0.3511 -vn 0.3423 0.8263 0.4472 -vn 0.6325 0.6325 0.4472 -vn 0.8263 0.3423 0.4472 -vn 0.8944 0.0000 0.4472 -vn 0.8263 -0.3423 0.4472 -vn 0.6325 -0.6325 0.4472 -vn 0.3423 -0.8263 0.4472 -vn -0.3423 -0.8263 0.4472 -vn -0.6325 -0.6325 0.4472 -vn -0.8263 -0.3423 0.4472 -vn -0.8944 0.0000 0.4472 -vn -0.8263 0.3423 0.4472 -vn -0.6325 0.6325 0.4472 -vn -0.3423 0.8263 0.4472 s off -f 24/1/1 37/2/1 26/3/1 -f 22/4/1 38/5/1 24/1/1 -f 28/6/1 37/2/1 36/7/1 -f 30/8/1 36/7/1 35/9/1 -f 30/8/1 34/10/1 32/11/1 -f 32/11/1 33/12/1 2/13/1 -f 2/13/1 48/14/1 4/15/1 -f 4/15/1 47/16/1 6/17/1 -f 6/17/1 46/18/1 8/19/1 -f 8/19/1 45/20/1 10/21/1 -f 12/22/1 45/20/1 44/23/1 -f 14/24/1 44/23/1 43/25/1 -f 16/26/1 43/25/1 42/27/1 -f 18/28/1 42/27/1 41/29/1 -f 20/30/1 41/31/1 40/32/1 -f 22/4/1 40/32/1 39/33/1 -f 9/34/2 62/35/2 7/36/2 -f 7/36/2 63/37/2 5/38/2 -f 63/37/2 3/39/2 5/38/2 -f 64/40/2 1/41/2 3/39/2 -f 49/42/2 31/43/2 1/41/2 -f 50/44/2 29/45/2 31/43/2 -f 51/46/2 27/47/2 29/45/2 -f 52/48/2 25/49/2 27/47/2 -f 53/50/2 23/51/2 25/49/2 -f 54/52/2 21/53/2 23/51/2 -f 55/54/2 19/55/2 21/53/2 -f 19/55/2 57/56/2 17/57/2 -f 17/58/2 58/59/2 15/60/2 -f 15/60/2 59/61/2 13/62/2 -f 13/62/2 60/63/2 11/64/2 -f 11/64/2 61/65/2 9/34/2 -f 73/66/1 106/67/1 105/68/1 -f 72/69/1 105/70/1 104/71/1 -f 71/72/1 104/71/1 103/73/1 -f 71/72/1 102/74/1 70/75/1 -f 70/75/1 101/76/1 69/77/1 -f 68/78/1 101/76/1 100/79/1 -f 67/80/1 100/79/1 99/81/1 -f 67/80/1 98/82/1 66/83/1 -f 66/83/1 97/84/1 65/85/1 -f 65/85/1 112/86/1 80/87/1 -f 79/88/1 112/86/1 111/89/1 -f 78/90/1 111/89/1 110/91/1 -f 78/90/1 109/92/1 77/93/1 -f 76/94/1 109/92/1 108/95/1 -f 76/94/1 107/96/1 75/97/1 -f 75/97/1 106/67/1 74/98/1 -f 89/99/2 122/100/2 90/101/2 -f 88/102/2 121/103/2 89/104/2 -f 87/105/2 120/106/2 88/102/2 -f 118/107/2 87/105/2 86/108/2 -f 117/109/2 86/108/2 85/110/2 -f 84/111/2 117/109/2 85/110/2 -f 83/112/2 116/113/2 84/111/2 -f 114/114/2 83/112/2 82/115/2 -f 113/116/2 82/115/2 81/117/2 -f 128/118/2 81/117/2 96/119/2 -f 95/120/2 128/118/2 96/119/2 -f 94/121/2 127/122/2 95/120/2 -f 125/123/2 94/121/2 93/124/2 -f 92/125/2 125/123/2 93/124/2 -f 123/126/2 92/125/2 91/127/2 -f 122/100/2 91/127/2 90/101/2 -f 130/128/3 131/129/3 129/130/3 -f 134/131/4 135/132/4 133/133/4 -f 136/134/2 137/135/2 135/132/2 -f 138/136/5 139/137/5 137/138/5 -f 140/139/6 141/140/6 139/137/6 -f 141/141/1 134/131/1 133/133/1 -f 139/142/7 141/143/7 133/133/7 -f 140/139/8 138/136/8 136/134/8 -f 144/144/8 145/145/8 143/146/8 -f 159/147/2 162/148/2 160/149/2 -f 144/144/5 150/150/5 146/151/5 -f 145/145/4 148/152/4 143/146/4 -f 146/151/2 147/153/2 145/145/2 -f 143/146/1 149/154/1 144/144/1 -f 155/155/5 160/149/5 156/156/5 -f 151/157/1 156/156/1 152/158/1 -f 152/158/8 158/159/8 154/160/8 -f 151/157/7 157/161/7 155/162/7 -f 154/160/2 157/163/2 153/164/2 -f 162/165/4 157/161/4 158/166/4 -f 157/161/7 159/167/7 155/162/7 -f 160/149/8 158/159/8 156/156/8 -f 165/168/9 188/169/9 166/170/9 -f 171/171/4 174/172/4 172/173/4 -f 192/174/7 169/175/7 167/176/7 -f 166/177/1 169/175/1 165/178/1 -f 191/179/8 168/180/8 170/181/8 -f 163/182/2 168/180/2 164/183/2 -f 178/184/5 175/185/5 176/186/5 -f 172/173/8 178/184/8 176/186/8 -f 172/173/10 175/187/10 171/188/10 -f 171/189/7 177/190/7 173/191/7 -f 173/191/11 178/184/11 174/172/11 -f 179/192/1 182/193/1 180/194/1 -f 188/169/8 191/179/8 166/177/8 -f 181/195/5 186/196/5 182/193/5 -f 182/193/8 184/197/8 180/194/8 -f 187/198/5 190/199/5 188/169/5 -f 179/192/7 185/200/7 181/195/7 -f 192/174/7 187/201/7 165/178/7 -f 189/202/12 191/203/12 190/199/12 -f 191/203/5 163/204/5 164/205/5 -f 202/206/11 203/207/11 201/208/11 -f 197/209/13 199/210/13 198/211/13 -f 194/212/8 200/213/8 196/214/8 -f 195/215/7 198/211/7 193/216/7 -f 196/217/14 197/209/14 195/218/14 -f 193/219/15 199/210/15 194/220/15 -f 204/221/5 205/222/5 203/207/5 -f 210/223/1 207/224/1 208/225/1 -f 211/226/16 208/225/16 207/224/16 -f 213/227/5 212/228/5 211/226/5 -f 215/229/2 214/230/2 213/227/2 -f 217/231/12 216/232/12 215/229/12 -f 219/233/2 218/234/2 217/231/2 -f 206/235/7 222/236/7 224/237/7 -f 205/222/8 221/238/8 203/207/8 -f 222/236/7 202/206/7 226/239/7 -f 201/208/8 221/238/8 225/240/8 -f 224/241/4 221/238/4 223/242/4 -f 225/240/17 222/243/17 226/244/17 -f 230/245/8 212/228/8 214/230/8 -f 227/246/7 213/227/7 211/226/7 -f 215/229/7 233/247/7 217/231/7 -f 217/231/7 235/248/7 219/233/7 -f 216/232/8 234/249/8 232/250/8 -f 220/251/8 234/249/8 218/234/8 -f 215/229/7 229/252/7 231/253/7 -f 216/232/8 230/245/8 214/230/8 -f 208/225/8 240/254/8 210/223/8 -f 209/255/7 237/256/7 207/224/7 -f 207/224/7 227/257/7 211/226/7 -f 208/225/8 228/258/8 238/259/8 -f 240/254/2 237/260/2 239/261/2 -f 238/259/18 227/262/18 237/260/18 -f 227/263/4 230/245/4 229/264/4 -f 229/264/1 232/250/1 231/265/1 -f 231/265/19 234/249/19 233/266/19 -f 233/266/1 236/267/1 235/268/1 -f 253/269/1 255/270/1 249/271/1 -f 272/272/2 273/273/2 265/274/2 -f 271/275/2 278/276/2 279/277/2 -f 269/278/2 276/279/2 277/280/2 -f 266/281/2 275/282/2 267/283/2 -f 271/275/2 280/284/2 272/272/2 -f 270/285/2 277/286/2 278/276/2 -f 268/287/2 275/282/2 276/279/2 -f 265/274/2 274/288/2 266/281/2 -f 325/289/1 327/290/1 321/291/1 -f 358/292/1 331/293/1 332/294/1 -f 359/295/1 330/296/1 331/293/1 -f 360/297/1 329/298/1 330/296/1 -f 345/299/1 344/300/1 329/298/1 -f 346/301/1 343/302/1 344/300/1 -f 343/302/1 348/303/1 342/304/1 -f 342/304/1 349/305/1 341/306/1 -f 349/305/1 340/307/1 341/306/1 -f 350/308/1 339/309/1 340/307/1 -f 339/309/1 352/310/1 338/311/1 -f 338/311/1 353/312/1 337/313/1 -f 337/314/1 354/315/1 336/316/1 -f 336/316/1 355/317/1 335/318/1 -f 355/317/1 334/319/1 335/318/1 -f 334/319/1 357/320/1 333/321/1 -f 357/320/1 332/294/1 333/321/1 -f 363/322/2 390/323/2 364/324/2 -f 362/325/2 391/326/2 363/322/2 -f 361/327/2 392/328/2 362/325/2 -f 376/329/2 377/330/2 361/327/2 -f 375/331/2 378/332/2 376/329/2 -f 375/331/2 380/333/2 379/334/2 -f 374/335/2 381/336/2 380/333/2 -f 372/337/2 381/336/2 373/338/2 -f 371/339/2 382/340/2 372/337/2 -f 371/339/2 384/341/2 383/342/2 -f 370/343/2 385/344/2 384/341/2 -f 369/345/2 386/346/2 385/347/2 -f 368/348/2 387/349/2 386/346/2 -f 366/350/2 387/349/2 367/351/2 -f 366/350/2 389/352/2 388/353/2 -f 364/324/2 389/352/2 365/354/2 -f 395/355/5 394/356/5 393/357/5 -f 399/358/4 397/359/4 398/360/4 -f 395/355/2 400/361/2 396/362/2 -f 394/356/1 398/363/1 393/357/1 -f 397/364/8 402/365/8 398/366/8 -f 399/367/7 404/368/7 400/369/7 -f 396/362/8 406/370/8 394/356/8 -f 393/357/7 407/371/7 395/355/7 -f 396/362/2 404/368/2 408/372/2 -f 394/356/1 403/373/1 399/374/1 -f 395/355/2 401/375/2 397/364/2 -f 393/357/1 402/376/1 405/377/1 -f 436/378/2 415/379/2 412/380/2 -f 433/381/4 439/382/4 434/383/4 -f 418/384/4 432/385/4 420/386/4 -f 409/387/7 421/388/7 418/389/7 -f 416/390/4 429/391/4 415/392/4 -f 413/393/20 422/394/20 409/395/20 -f 420/396/7 431/397/7 419/398/7 -f 410/399/21 423/400/21 414/401/21 -f 417/402/7 427/403/7 411/404/7 -f 414/401/5 428/405/5 413/393/5 -f 412/380/8 424/406/8 410/407/8 -f 419/408/5 430/409/5 417/410/5 -f 415/392/22 425/411/22 412/412/22 -f 411/413/23 426/414/23 416/390/23 -f 434/415/7 440/416/7 436/417/7 -f 425/418/1 440/416/1 439/419/1 -f 416/420/2 436/378/2 435/421/2 -f 426/414/1 440/416/1 429/391/1 -f 427/403/1 430/422/1 438/423/1 -f 433/381/2 417/410/2 411/424/2 -f 431/397/1 432/425/1 439/419/1 -f 419/408/2 433/381/2 434/383/2 -f 428/405/1 423/400/1 432/425/1 -f 420/386/2 413/426/2 409/427/2 -f 435/428/8 438/423/8 433/429/8 -f 436/378/5 437/430/5 435/421/5 -f 470/431/1 443/432/1 444/433/1 -f 471/434/1 442/435/1 443/432/1 -f 472/436/1 441/437/1 442/435/1 -f 457/438/1 456/439/1 441/437/1 -f 458/440/1 455/441/1 456/439/1 -f 455/441/1 460/442/1 454/443/1 -f 454/443/1 461/444/1 453/445/1 -f 461/444/1 452/446/1 453/445/1 -f 462/447/1 451/448/1 452/446/1 -f 451/448/1 464/449/1 450/450/1 -f 450/450/1 465/451/1 449/452/1 -f 449/453/1 466/454/1 448/455/1 -f 448/455/1 467/456/1 447/457/1 -f 467/456/1 446/458/1 447/457/1 -f 446/458/1 469/459/1 445/460/1 -f 469/459/1 444/433/1 445/460/1 -f 475/461/2 502/462/2 476/463/2 -f 474/464/2 503/465/2 475/461/2 -f 473/466/2 504/467/2 474/464/2 -f 488/468/2 489/469/2 473/466/2 -f 487/470/2 490/471/2 488/468/2 -f 487/470/2 492/472/2 491/473/2 -f 486/474/2 493/475/2 492/472/2 -f 484/476/2 493/475/2 485/477/2 -f 483/478/2 494/479/2 484/476/2 -f 483/478/2 496/480/2 495/481/2 -f 482/482/2 497/483/2 496/480/2 -f 481/484/2 498/485/2 497/486/2 -f 480/487/2 499/488/2 498/485/2 -f 478/489/2 499/488/2 479/490/2 -f 478/489/2 501/491/2 500/492/2 -f 476/463/2 501/491/2 477/493/2 -f 510/494/8 507/495/8 505/496/8 -f 511/497/4 505/498/4 506/499/4 -f 528/500/8 532/501/8 529/502/8 -f 529/502/4 530/503/4 527/504/4 -f 513/505/7 526/506/7 514/507/7 -f 528/500/24 516/508/24 531/509/24 -f 515/510/5 518/511/5 516/508/5 -f 530/503/25 525/512/25 527/504/25 -f 523/513/2 522/514/2 510/515/2 -f 506/516/1 529/517/1 508/518/1 -f 508/518/1 527/519/1 507/520/1 -f 520/521/1 521/522/1 528/523/1 -f 511/524/2 532/525/2 531/526/2 -f 509/527/2 532/525/2 512/528/2 -f 509/529/5 508/530/5 507/531/5 -f 512/532/7 506/533/7 508/534/7 -f 539/535/4 537/536/4 538/537/4 -f 534/538/1 538/537/1 533/539/1 -f 536/540/8 539/535/8 534/541/8 -f 533/542/7 537/536/7 535/543/7 -f 535/544/2 540/545/2 536/546/2 -f 541/547/25 542/548/25 548/549/25 -f 546/550/4 554/551/4 547/552/4 -f 544/553/8 553/554/8 546/550/8 -f 545/555/4 550/556/4 543/557/4 -f 547/552/7 551/558/7 545/559/7 -f 541/547/4 552/560/4 544/561/4 -f 562/562/7 542/563/7 549/564/7 -f 559/565/1 567/566/1 558/567/1 -f 570/568/2 564/569/2 563/570/2 -f 568/571/26 570/568/26 567/566/26 -f 567/566/1 557/572/1 558/567/1 -f 562/573/2 570/568/2 563/570/2 -f 559/565/1 569/574/1 568/571/1 -f 572/575/2 564/569/2 571/576/2 -f 569/574/27 571/576/27 568/571/27 -f 574/577/5 561/578/5 566/579/5 -f 556/580/28 570/581/28 555/582/28 -f 542/548/1 556/583/1 548/549/1 -f 549/584/2 555/585/2 570/586/2 -f 578/587/4 575/588/4 576/589/4 -f 569/574/29 578/590/29 572/575/29 -f 579/591/7 576/592/7 575/593/7 -f 580/594/5 556/595/5 555/596/5 -f 573/597/1 579/591/1 575/593/1 -f 550/556/8 574/577/8 543/598/8 -f 574/577/2 580/594/2 543/598/2 -f 566/579/2 576/599/2 574/577/2 -f 565/600/2 578/590/2 566/601/2 -f 573/597/1 577/602/1 561/578/1 -f 577/603/1 560/604/1 561/605/1 -f 553/606/1 556/607/1 579/591/1 -f 580/594/2 546/608/2 547/609/2 -f 581/610/30 583/611/30 582/612/30 -f 130/128/5 584/613/5 132/614/5 -f 129/130/4 581/615/4 582/616/4 -f 586/617/31 587/618/31 585/619/31 -f 589/620/32 591/621/32 590/622/32 -f 586/617/4 592/623/4 588/624/4 -f 585/619/5 589/625/5 590/626/5 -f 594/627/33 595/628/33 593/629/33 -f 598/630/34 600/631/34 599/632/34 -f 594/627/35 600/631/35 596/633/35 -f 593/629/36 597/634/36 598/635/36 -f 602/636/37 603/637/37 601/638/37 -f 605/639/38 607/640/38 606/641/38 -f 602/636/36 608/642/36 604/643/36 -f 601/638/35 605/644/35 606/645/35 -f 609/646/39 612/647/39 611/648/39 -f 614/649/40 616/650/40 615/651/40 -f 610/652/41 616/650/41 612/647/41 -f 609/646/42 613/653/42 614/654/42 -f 618/655/43 619/656/43 617/657/43 -f 622/658/44 624/659/44 623/660/44 -f 618/655/42 624/659/42 620/661/42 -f 617/657/41 621/662/41 622/663/41 -f 669/664/2 638/665/2 637/666/2 -f 670/667/2 639/668/2 638/665/2 -f 671/669/2 640/670/2 639/668/2 -f 640/670/2 657/671/2 625/672/2 -f 657/671/2 626/673/2 625/672/2 -f 658/674/2 627/675/2 626/673/2 -f 627/675/2 660/676/2 628/677/2 -f 628/677/2 661/678/2 629/679/2 -f 629/679/2 662/680/2 630/681/2 -f 630/681/2 663/682/2 631/683/2 -f 631/683/2 664/684/2 632/685/2 -f 632/685/2 665/686/2 633/687/2 -f 665/688/2 634/689/2 633/690/2 -f 666/691/2 635/692/2 634/689/2 -f 667/693/2 636/694/2 635/692/2 -f 668/695/2 637/666/2 636/694/2 -f 655/696/1 686/697/1 654/698/1 -f 656/699/1 687/700/1 655/696/1 -f 656/699/1 673/701/1 688/702/1 -f 642/703/1 673/701/1 641/704/1 -f 643/705/1 674/706/1 642/703/1 -f 643/705/1 676/707/1 675/708/1 -f 644/709/1 677/710/1 676/707/1 -f 645/711/1 678/712/1 677/710/1 -f 646/713/1 679/714/1 678/712/1 -f 647/715/1 680/716/1 679/714/1 -f 648/717/1 681/718/1 680/716/1 -f 650/719/1 681/720/1 649/721/1 -f 651/722/1 682/723/1 650/719/1 -f 652/724/1 683/725/1 651/722/1 -f 653/726/1 684/727/1 652/724/1 -f 654/698/1 685/728/1 653/726/1 -f 693/729/2 691/730/2 699/731/2 -f 721/732/45 726/733/45 722/734/45 -f 724/735/2 727/736/2 723/737/2 -f 722/734/8 728/738/8 724/735/8 -f 727/739/7 721/732/7 723/737/7 -f 873/740/46 878/741/46 874/742/46 -f 758/743/1 773/744/1 757/745/1 -f 759/746/1 774/747/1 758/743/1 -f 760/748/1 775/749/1 759/746/1 -f 745/750/1 776/751/1 760/748/1 -f 745/750/1 762/752/1 761/753/1 -f 746/754/1 763/755/1 762/752/1 -f 747/756/1 764/757/1 763/755/1 -f 748/758/1 765/759/1 764/757/1 -f 749/760/1 766/761/1 765/759/1 -f 750/762/1 767/763/1 766/761/1 -f 751/764/1 768/765/1 767/763/1 -f 752/766/1 769/767/1 768/765/1 -f 754/768/1 769/769/1 753/770/1 -f 755/771/1 770/772/1 754/768/1 -f 756/773/1 771/774/1 755/771/1 -f 757/745/1 772/775/1 756/773/1 -f 813/776/1 817/777/1 821/778/1 -f 717/779/47 854/780/47 853/781/47 -f 718/782/48 855/783/48 854/780/48 -f 719/784/49 856/785/49 855/783/49 -f 720/786/50 841/787/50 856/785/50 -f 705/788/51 841/787/51 706/789/51 -f 707/790/52 842/791/52 705/788/52 -f 708/792/53 843/793/53 707/790/53 -f 709/794/54 844/795/54 708/792/54 -f 710/796/55 845/797/55 709/794/55 -f 711/798/56 846/799/56 710/796/56 -f 712/800/57 847/801/57 711/798/57 -f 713/802/58 848/803/58 712/800/58 -f 713/804/59 850/805/59 849/806/59 -f 714/807/60 851/808/60 850/805/60 -f 715/809/61 852/810/61 851/808/61 -f 716/811/62 853/781/62 852/810/62 -f 838/812/63 871/813/63 839/814/63 -f 839/814/64 872/815/64 840/816/64 -f 840/816/65 857/817/65 826/818/65 -f 857/817/66 825/819/66 826/818/66 -f 858/820/67 827/821/67 825/819/67 -f 859/822/68 828/823/68 827/821/68 -f 860/824/69 829/825/69 828/823/69 -f 861/826/70 830/827/70 829/825/70 -f 862/828/71 831/829/71 830/827/71 -f 863/830/72 832/831/72 831/829/72 -f 864/832/73 833/833/73 832/831/73 -f 833/834/74 866/835/74 834/836/74 -f 834/836/75 867/837/75 835/838/75 -f 835/838/76 868/839/76 836/840/76 -f 836/840/77 869/841/77 837/842/77 -f 837/842/78 870/843/78 838/812/78 -f 876/844/2 879/845/2 875/846/2 -f 874/742/7 880/847/7 876/844/7 -f 879/848/8 873/740/8 875/846/8 -f 881/849/3 886/850/3 882/851/3 -f 884/852/2 887/853/2 883/854/2 -f 882/851/5 888/855/5 884/852/5 -f 887/856/4 881/849/4 883/854/4 -f 889/857/31 894/858/31 890/859/31 -f 892/860/2 895/861/2 891/862/2 -f 890/859/4 896/863/4 892/860/4 -f 895/864/5 889/857/5 891/862/5 -f 897/865/79 902/866/79 898/867/79 -f 899/868/2 904/869/2 903/870/2 -f 898/867/24 904/871/24 900/872/24 -f 903/873/25 897/865/25 899/868/25 -f 905/874/80 910/875/80 906/876/80 -f 908/877/2 911/878/2 907/879/2 -f 906/876/25 912/880/25 908/877/25 -f 911/881/24 905/874/24 907/879/24 -f 914/882/81 917/883/81 918/884/81 -f 916/885/2 919/886/2 915/887/2 -f 914/882/82 920/888/82 916/885/82 -f 919/889/83 913/890/83 915/887/83 -f 922/891/84 925/892/84 926/893/84 -f 924/894/2 927/895/2 923/896/2 -f 922/891/83 928/897/83 924/894/83 -f 927/898/82 921/899/82 923/896/82 -f 24/1/1 38/5/1 37/2/1 -f 22/4/1 39/33/1 38/5/1 -f 28/6/1 26/3/1 37/2/1 -f 30/8/1 28/6/1 36/7/1 -f 30/8/1 35/9/1 34/10/1 -f 32/11/1 34/10/1 33/12/1 -f 2/13/1 33/12/1 48/14/1 -f 4/15/1 48/14/1 47/16/1 -f 6/17/1 47/16/1 46/18/1 -f 8/19/1 46/18/1 45/20/1 -f 12/22/1 10/21/1 45/20/1 -f 14/24/1 12/22/1 44/23/1 -f 16/26/1 14/24/1 43/25/1 -f 18/28/1 16/26/1 42/27/1 -f 20/30/1 18/900/1 41/31/1 -f 22/4/1 20/30/1 40/32/1 -f 9/34/2 61/65/2 62/35/2 -f 7/36/2 62/35/2 63/37/2 -f 63/37/2 64/40/2 3/39/2 -f 64/40/2 49/42/2 1/41/2 -f 49/42/2 50/44/2 31/43/2 -f 50/44/2 51/46/2 29/45/2 -f 51/46/2 52/48/2 27/47/2 -f 52/48/2 53/50/2 25/49/2 -f 53/50/2 54/52/2 23/51/2 -f 54/52/2 55/54/2 21/53/2 -f 55/54/2 56/901/2 19/55/2 -f 19/55/2 56/901/2 57/56/2 -f 17/58/2 57/902/2 58/59/2 -f 15/60/2 58/59/2 59/61/2 -f 13/62/2 59/61/2 60/63/2 -f 11/64/2 60/63/2 61/65/2 -f 73/66/1 74/98/1 106/67/1 -f 72/69/1 73/903/1 105/70/1 -f 71/72/1 72/69/1 104/71/1 -f 71/72/1 103/73/1 102/74/1 -f 70/75/1 102/74/1 101/76/1 -f 68/78/1 69/77/1 101/76/1 -f 67/80/1 68/78/1 100/79/1 -f 67/80/1 99/81/1 98/82/1 -f 66/83/1 98/82/1 97/84/1 -f 65/85/1 97/84/1 112/86/1 -f 79/88/1 80/87/1 112/86/1 -f 78/90/1 79/88/1 111/89/1 -f 78/90/1 110/91/1 109/92/1 -f 76/94/1 77/93/1 109/92/1 -f 76/94/1 108/95/1 107/96/1 -f 75/97/1 107/96/1 106/67/1 -f 89/99/2 121/904/2 122/100/2 -f 88/102/2 120/106/2 121/103/2 -f 87/105/2 119/905/2 120/106/2 -f 118/107/2 119/905/2 87/105/2 -f 117/109/2 118/107/2 86/108/2 -f 84/111/2 116/113/2 117/109/2 -f 83/112/2 115/906/2 116/113/2 -f 114/114/2 115/906/2 83/112/2 -f 113/116/2 114/114/2 82/115/2 -f 128/118/2 113/116/2 81/117/2 -f 95/120/2 127/122/2 128/118/2 -f 94/121/2 126/907/2 127/122/2 -f 125/123/2 126/907/2 94/121/2 -f 92/125/2 124/908/2 125/123/2 -f 123/126/2 124/908/2 92/125/2 -f 122/100/2 123/126/2 91/127/2 -f 130/128/3 132/614/3 131/129/3 -f 134/131/4 136/134/4 135/132/4 -f 136/134/2 138/909/2 137/135/2 -f 138/136/5 140/139/5 139/137/5 -f 140/139/6 142/910/6 141/140/6 -f 141/141/1 142/911/1 134/131/1 -f 133/133/7 135/132/7 139/142/7 -f 135/132/7 137/912/7 139/142/7 -f 136/134/8 134/131/8 140/139/8 -f 134/131/8 142/913/8 140/139/8 -f 144/144/8 146/151/8 145/145/8 -f 159/147/2 161/914/2 162/148/2 -f 144/144/5 149/915/5 150/150/5 -f 145/145/4 147/916/4 148/152/4 -f 146/151/2 150/917/2 147/153/2 -f 143/146/1 148/918/1 149/154/1 -f 155/155/5 159/919/5 160/149/5 -f 151/157/1 155/162/1 156/156/1 -f 152/158/8 156/156/8 158/159/8 -f 151/157/7 153/920/7 157/161/7 -f 154/160/2 158/159/2 157/163/2 -f 162/165/4 161/921/4 157/161/4 -f 157/161/7 161/921/7 159/167/7 -f 160/149/8 162/148/8 158/159/8 -f 165/168/9 187/198/9 188/169/9 -f 171/171/4 173/922/4 174/172/4 -f 167/176/7 163/923/7 192/174/7 -f 192/174/7 165/178/7 169/175/7 -f 166/177/1 170/181/1 169/175/1 -f 170/181/8 166/177/8 191/179/8 -f 191/179/8 164/183/8 168/180/8 -f 163/182/2 167/924/2 168/180/2 -f 178/184/5 177/925/5 175/185/5 -f 172/173/8 174/172/8 178/184/8 -f 172/173/10 176/186/10 175/187/10 -f 171/189/7 175/926/7 177/190/7 -f 173/191/11 177/190/11 178/184/11 -f 179/192/1 181/195/1 182/193/1 -f 188/169/8 190/199/8 191/179/8 -f 181/195/5 185/927/5 186/196/5 -f 182/193/8 186/928/8 184/197/8 -f 187/198/5 189/202/5 190/199/5 -f 179/192/7 183/929/7 185/200/7 -f 192/174/7 189/930/7 187/201/7 -f 189/202/12 192/931/12 191/203/12 -f 191/203/5 192/931/5 163/204/5 -f 202/206/11 204/221/11 203/207/11 -f 197/209/13 200/213/13 199/210/13 -f 194/212/8 199/210/8 200/213/8 -f 195/215/7 197/209/7 198/211/7 -f 196/217/14 200/213/14 197/209/14 -f 193/219/15 198/211/15 199/210/15 -f 204/221/5 206/235/5 205/222/5 -f 210/223/1 209/255/1 207/224/1 -f 211/226/16 212/228/16 208/225/16 -f 213/227/5 214/230/5 212/228/5 -f 215/229/2 216/232/2 214/230/2 -f 217/231/12 218/234/12 216/232/12 -f 219/233/2 220/251/2 218/234/2 -f 206/235/7 204/221/7 222/236/7 -f 205/222/8 223/242/8 221/238/8 -f 222/236/7 204/221/7 202/206/7 -f 201/208/8 203/207/8 221/238/8 -f 224/241/4 222/243/4 221/238/4 -f 225/240/17 221/238/17 222/243/17 -f 230/245/8 228/932/8 212/228/8 -f 227/246/7 229/252/7 213/227/7 -f 215/229/7 231/253/7 233/247/7 -f 217/231/7 233/247/7 235/248/7 -f 216/232/8 218/234/8 234/249/8 -f 220/251/8 236/267/8 234/249/8 -f 215/229/7 213/227/7 229/252/7 -f 216/232/8 232/250/8 230/245/8 -f 208/225/8 238/259/8 240/254/8 -f 209/255/7 239/933/7 237/256/7 -f 207/224/7 237/256/7 227/257/7 -f 208/225/8 212/228/8 228/258/8 -f 240/254/2 238/259/2 237/260/2 -f 238/259/18 228/258/18 227/262/18 -f 227/263/4 228/932/4 230/245/4 -f 229/264/1 230/245/1 232/250/1 -f 231/265/19 232/250/19 234/249/19 -f 233/266/1 234/249/1 236/267/1 -f 249/271/1 250/934/1 251/935/1 -f 251/935/1 252/936/1 253/269/1 -f 253/269/1 254/937/1 255/270/1 -f 255/270/1 256/938/1 249/271/1 -f 249/271/1 251/935/1 253/269/1 -f 272/272/2 280/284/2 273/273/2 -f 271/275/2 270/285/2 278/276/2 -f 269/278/2 268/287/2 276/279/2 -f 266/281/2 274/288/2 275/282/2 -f 271/275/2 279/277/2 280/284/2 -f 270/285/2 269/939/2 277/286/2 -f 268/287/2 267/283/2 275/282/2 -f 265/274/2 273/273/2 274/288/2 -f 321/291/1 322/940/1 323/941/1 -f 323/941/1 324/942/1 325/289/1 -f 325/289/1 326/943/1 327/290/1 -f 327/290/1 328/944/1 321/291/1 -f 321/291/1 323/941/1 325/289/1 -f 358/292/1 359/295/1 331/293/1 -f 359/295/1 360/297/1 330/296/1 -f 360/297/1 345/299/1 329/298/1 -f 345/299/1 346/301/1 344/300/1 -f 346/301/1 347/945/1 343/302/1 -f 343/302/1 347/945/1 348/303/1 -f 342/304/1 348/303/1 349/305/1 -f 349/305/1 350/308/1 340/307/1 -f 350/308/1 351/946/1 339/309/1 -f 339/309/1 351/946/1 352/310/1 -f 338/311/1 352/310/1 353/312/1 -f 337/314/1 353/947/1 354/315/1 -f 336/316/1 354/315/1 355/317/1 -f 355/317/1 356/948/1 334/319/1 -f 334/319/1 356/948/1 357/320/1 -f 357/320/1 358/292/1 332/294/1 -f 363/322/2 391/326/2 390/323/2 -f 362/325/2 392/328/2 391/326/2 -f 361/327/2 377/330/2 392/328/2 -f 376/329/2 378/332/2 377/330/2 -f 375/331/2 379/334/2 378/332/2 -f 375/331/2 374/335/2 380/333/2 -f 374/335/2 373/338/2 381/336/2 -f 372/337/2 382/340/2 381/336/2 -f 371/339/2 383/342/2 382/340/2 -f 371/339/2 370/343/2 384/341/2 -f 370/343/2 369/949/2 385/344/2 -f 369/345/2 368/348/2 386/346/2 -f 368/348/2 367/351/2 387/349/2 -f 366/350/2 388/353/2 387/349/2 -f 366/350/2 365/354/2 389/352/2 -f 364/324/2 390/323/2 389/352/2 -f 395/355/5 396/362/5 394/356/5 -f 399/358/4 400/361/4 397/359/4 -f 395/355/2 397/359/2 400/361/2 -f 394/356/1 399/950/1 398/363/1 -f 397/364/8 401/375/8 402/365/8 -f 399/367/7 403/951/7 404/368/7 -f 396/362/8 408/372/8 406/370/8 -f 393/357/7 405/377/7 407/371/7 -f 396/362/2 400/369/2 404/368/2 -f 394/356/1 406/370/1 403/373/1 -f 395/355/2 407/371/2 401/375/2 -f 393/357/1 398/952/1 402/376/1 -f 412/380/2 410/407/2 434/383/2 -f 434/383/2 436/378/2 412/380/2 -f 433/381/4 438/953/4 439/382/4 -f 418/384/4 421/954/4 432/385/4 -f 409/387/7 422/955/7 421/388/7 -f 416/390/4 426/414/4 429/391/4 -f 413/393/20 428/405/20 422/394/20 -f 420/396/7 432/425/7 431/397/7 -f 410/399/21 424/956/21 423/400/21 -f 417/402/7 430/422/7 427/403/7 -f 414/401/5 423/400/5 428/405/5 -f 412/380/8 425/418/8 424/406/8 -f 419/408/5 431/957/5 430/409/5 -f 415/392/22 429/391/22 425/411/22 -f 411/413/23 427/958/23 426/414/23 -f 434/415/7 439/419/7 440/416/7 -f 439/419/1 424/406/1 425/418/1 -f 425/418/1 429/391/1 440/416/1 -f 416/420/2 415/379/2 436/378/2 -f 426/414/1 437/959/1 440/416/1 -f 437/959/1 426/414/1 427/403/1 -f 430/422/1 431/397/1 438/423/1 -f 438/423/1 437/959/1 427/403/1 -f 411/424/2 416/420/2 435/421/2 -f 433/381/2 419/408/2 417/410/2 -f 411/424/2 435/421/2 433/381/2 -f 423/400/1 424/406/1 432/425/1 -f 424/406/1 439/419/1 432/425/1 -f 439/419/1 438/423/1 431/397/1 -f 434/383/2 410/407/2 420/386/2 -f 410/407/2 414/960/2 420/386/2 -f 420/386/2 419/408/2 434/383/2 -f 432/425/1 421/388/1 422/955/1 -f 422/955/1 428/405/1 432/425/1 -f 409/427/2 418/384/2 420/386/2 -f 420/386/2 414/960/2 413/426/2 -f 435/428/8 437/959/8 438/423/8 -f 436/378/5 440/961/5 437/430/5 -f 470/431/1 471/434/1 443/432/1 -f 471/434/1 472/436/1 442/435/1 -f 472/436/1 457/438/1 441/437/1 -f 457/438/1 458/440/1 456/439/1 -f 458/440/1 459/962/1 455/441/1 -f 455/441/1 459/962/1 460/442/1 -f 454/443/1 460/442/1 461/444/1 -f 461/444/1 462/447/1 452/446/1 -f 462/447/1 463/963/1 451/448/1 -f 451/448/1 463/963/1 464/449/1 -f 450/450/1 464/449/1 465/451/1 -f 449/453/1 465/964/1 466/454/1 -f 448/455/1 466/454/1 467/456/1 -f 467/456/1 468/965/1 446/458/1 -f 446/458/1 468/965/1 469/459/1 -f 469/459/1 470/431/1 444/433/1 -f 475/461/2 503/465/2 502/462/2 -f 474/464/2 504/467/2 503/465/2 -f 473/466/2 489/469/2 504/467/2 -f 488/468/2 490/471/2 489/469/2 -f 487/470/2 491/473/2 490/471/2 -f 487/470/2 486/474/2 492/472/2 -f 486/474/2 485/477/2 493/475/2 -f 484/476/2 494/479/2 493/475/2 -f 483/478/2 495/481/2 494/479/2 -f 483/478/2 482/482/2 496/480/2 -f 482/482/2 481/966/2 497/483/2 -f 481/484/2 480/487/2 498/485/2 -f 480/487/2 479/490/2 499/488/2 -f 478/489/2 500/492/2 499/488/2 -f 478/489/2 477/493/2 501/491/2 -f 476/463/2 502/462/2 501/491/2 -f 510/494/8 509/967/8 507/495/8 -f 511/497/4 510/968/4 505/498/4 -f 528/500/8 531/509/8 532/501/8 -f 529/502/4 532/969/4 530/503/4 -f 513/505/7 525/512/7 526/506/7 -f 528/500/24 515/510/24 516/508/24 -f 515/510/5 517/970/5 518/511/5 -f 530/503/25 526/506/25 525/512/25 -f 511/524/2 531/526/2 510/515/2 -f 531/526/2 516/971/2 524/972/2 -f 510/515/2 531/526/2 523/513/2 -f 516/971/2 518/973/2 524/972/2 -f 524/972/2 523/513/2 531/526/2 -f 530/974/2 509/527/2 510/515/2 -f 514/975/2 526/976/2 522/514/2 -f 526/976/2 530/974/2 510/515/2 -f 522/514/2 526/976/2 510/515/2 -f 506/516/1 528/523/1 529/517/1 -f 508/518/1 529/517/1 527/519/1 -f 507/520/1 527/519/1 505/977/1 -f 527/519/1 525/978/1 505/977/1 -f 525/978/1 513/979/1 519/980/1 -f 525/978/1 519/980/1 505/977/1 -f 519/980/1 520/521/1 505/977/1 -f 528/523/1 506/516/1 505/977/1 -f 517/981/1 515/982/1 521/522/1 -f 515/982/1 528/523/1 521/522/1 -f 528/523/1 505/977/1 520/521/1 -f 511/524/2 512/528/2 532/525/2 -f 509/527/2 530/974/2 532/525/2 -f 509/529/5 512/983/5 508/530/5 -f 512/532/7 511/984/7 506/533/7 -f 539/535/4 540/545/4 537/536/4 -f 534/538/1 539/535/1 538/537/1 -f 536/540/8 540/545/8 539/535/8 -f 533/542/7 538/537/7 537/536/7 -f 535/544/2 537/536/2 540/545/2 -f 541/547/25 549/584/25 542/548/25 -f 546/550/4 553/554/4 554/551/4 -f 544/553/8 552/985/8 553/554/8 -f 545/555/4 551/986/4 550/556/4 -f 547/552/7 554/551/7 551/558/7 -f 541/547/4 548/549/4 552/560/4 -f 562/562/7 557/572/7 542/563/7 -f 559/565/1 568/571/1 567/566/1 -f 570/568/2 571/576/2 564/569/2 -f 568/571/26 571/576/26 570/568/26 -f 567/566/1 542/563/1 557/572/1 -f 562/573/2 549/987/2 570/568/2 -f 559/565/1 560/604/1 569/574/1 -f 572/575/2 565/600/2 564/569/2 -f 569/574/27 572/575/27 571/576/27 -f 574/577/5 573/597/5 561/578/5 -f 556/580/28 567/988/28 570/581/28 -f 542/548/1 567/989/1 556/583/1 -f 549/584/2 541/547/2 555/585/2 -f 578/587/4 577/602/4 575/588/4 -f 569/574/29 577/603/29 578/590/29 -f 579/591/7 580/990/7 576/592/7 -f 580/594/5 579/991/5 556/595/5 -f 573/597/1 550/556/1 579/591/1 -f 550/556/8 573/597/8 574/577/8 -f 574/577/2 576/992/2 580/594/2 -f 566/579/2 578/993/2 576/599/2 -f 565/600/2 572/575/2 578/590/2 -f 573/597/1 575/588/1 577/602/1 -f 577/603/1 569/574/1 560/604/1 -f 550/556/1 551/986/1 554/994/1 -f 553/606/1 552/560/1 548/549/1 -f 579/591/1 550/556/1 554/994/1 -f 553/606/1 548/549/1 556/607/1 -f 579/591/1 554/994/1 553/606/1 -f 547/609/2 545/995/2 543/598/2 -f 580/594/2 555/596/2 546/608/2 -f 555/596/2 541/996/2 546/608/2 -f 541/996/2 544/997/2 546/608/2 -f 547/609/2 543/598/2 580/594/2 -f 581/610/30 584/613/30 583/611/30 -f 130/128/5 583/611/5 584/613/5 -f 129/130/4 131/129/4 581/615/4 -f 586/617/31 588/624/31 587/618/31 -f 589/620/32 592/623/32 591/621/32 -f 586/617/4 591/621/4 592/623/4 -f 585/619/5 587/618/5 589/625/5 -f 594/627/33 596/633/33 595/628/33 -f 598/630/34 597/998/34 600/631/34 -f 594/627/35 599/632/35 600/631/35 -f 593/629/36 595/628/36 597/634/36 -f 602/636/37 604/643/37 603/637/37 -f 605/639/38 608/642/38 607/640/38 -f 602/636/36 607/640/36 608/642/36 -f 601/638/35 603/637/35 605/644/35 -f 609/646/39 610/652/39 612/647/39 -f 614/649/40 613/999/40 616/650/40 -f 610/652/41 615/651/41 616/650/41 -f 609/646/42 611/648/42 613/653/42 -f 618/655/43 620/661/43 619/656/43 -f 622/658/44 621/1000/44 624/659/44 -f 618/655/42 623/660/42 624/659/42 -f 617/657/41 619/656/41 621/662/41 -f 669/664/2 670/667/2 638/665/2 -f 670/667/2 671/669/2 639/668/2 -f 671/669/2 672/1001/2 640/670/2 -f 640/670/2 672/1001/2 657/671/2 -f 657/671/2 658/674/2 626/673/2 -f 658/674/2 659/1002/2 627/675/2 -f 627/675/2 659/1002/2 660/676/2 -f 628/677/2 660/676/2 661/678/2 -f 629/679/2 661/678/2 662/680/2 -f 630/681/2 662/680/2 663/682/2 -f 631/683/2 663/682/2 664/684/2 -f 632/685/2 664/684/2 665/686/2 -f 665/688/2 666/691/2 634/689/2 -f 666/691/2 667/693/2 635/692/2 -f 667/693/2 668/695/2 636/694/2 -f 668/695/2 669/664/2 637/666/2 -f 655/696/1 687/700/1 686/697/1 -f 656/699/1 688/702/1 687/700/1 -f 656/699/1 641/704/1 673/701/1 -f 642/703/1 674/706/1 673/701/1 -f 643/705/1 675/708/1 674/706/1 -f 643/705/1 644/709/1 676/707/1 -f 644/709/1 645/711/1 677/710/1 -f 645/711/1 646/713/1 678/712/1 -f 646/713/1 647/715/1 679/714/1 -f 647/715/1 648/717/1 680/716/1 -f 648/717/1 649/1003/1 681/718/1 -f 650/719/1 682/723/1 681/720/1 -f 651/722/1 683/725/1 682/723/1 -f 652/724/1 684/727/1 683/725/1 -f 653/726/1 685/728/1 684/727/1 -f 654/698/1 686/697/1 685/728/1 -f 691/730/2 690/1004/2 689/1005/2 -f 689/1005/2 704/1006/2 703/1007/2 -f 703/1007/2 702/1008/2 699/731/2 -f 702/1008/2 701/1009/2 699/731/2 -f 701/1009/2 700/1010/2 699/731/2 -f 699/731/2 698/1011/2 697/1012/2 -f 697/1012/2 696/1013/2 695/1014/2 -f 695/1014/2 694/1015/2 693/729/2 -f 693/729/2 692/1016/2 691/730/2 -f 691/730/2 689/1005/2 699/731/2 -f 689/1005/2 703/1007/2 699/731/2 -f 699/731/2 697/1012/2 695/1014/2 -f 695/1014/2 693/729/2 699/731/2 -f 721/732/45 725/1017/45 726/733/45 -f 724/735/2 728/1018/2 727/736/2 -f 722/734/8 726/1019/8 728/738/8 -f 727/739/7 725/1020/7 721/732/7 -f 873/740/46 877/1021/46 878/741/46 -f 758/743/1 774/747/1 773/744/1 -f 759/746/1 775/749/1 774/747/1 -f 760/748/1 776/751/1 775/749/1 -f 745/750/1 761/753/1 776/751/1 -f 745/750/1 746/754/1 762/752/1 -f 746/754/1 747/756/1 763/755/1 -f 747/756/1 748/758/1 764/757/1 -f 748/758/1 749/760/1 765/759/1 -f 749/760/1 750/762/1 766/761/1 -f 750/762/1 751/764/1 767/763/1 -f 751/764/1 752/766/1 768/765/1 -f 752/766/1 753/1022/1 769/767/1 -f 754/768/1 770/772/1 769/769/1 -f 755/771/1 771/774/1 770/772/1 -f 756/773/1 772/775/1 771/774/1 -f 757/745/1 773/744/1 772/775/1 -f 809/1023/1 810/1024/1 811/1025/1 -f 811/1025/1 812/1026/1 813/776/1 -f 813/776/1 814/1027/1 815/1028/1 -f 815/1028/1 816/1029/1 817/777/1 -f 817/777/1 818/1030/1 819/1031/1 -f 819/1031/1 820/1032/1 821/778/1 -f 821/778/1 822/1033/1 823/1034/1 -f 823/1034/1 824/1035/1 809/1023/1 -f 809/1023/1 811/1025/1 813/776/1 -f 813/776/1 815/1028/1 817/777/1 -f 817/777/1 819/1031/1 821/778/1 -f 821/778/1 823/1034/1 809/1023/1 -f 809/1023/1 813/776/1 821/778/1 -f 717/779/47 718/782/47 854/780/47 -f 718/782/48 719/784/48 855/783/48 -f 719/784/49 720/786/49 856/785/49 -f 720/786/50 706/789/50 841/787/50 -f 705/788/51 842/791/51 841/787/51 -f 707/790/52 843/793/52 842/791/52 -f 708/792/53 844/795/53 843/793/53 -f 709/794/54 845/797/54 844/795/54 -f 710/796/55 846/799/55 845/797/55 -f 711/798/56 847/801/56 846/799/56 -f 712/800/57 848/803/57 847/801/57 -f 713/802/58 849/1036/58 848/803/58 -f 713/804/59 714/807/59 850/805/59 -f 714/807/60 715/809/60 851/808/60 -f 715/809/61 716/811/61 852/810/61 -f 716/811/62 717/779/62 853/781/62 -f 838/812/63 870/843/63 871/813/63 -f 839/814/64 871/813/64 872/815/64 -f 840/816/65 872/815/65 857/817/65 -f 857/817/66 858/820/66 825/819/66 -f 858/820/67 859/822/67 827/821/67 -f 859/822/68 860/824/68 828/823/68 -f 860/824/69 861/826/69 829/825/69 -f 861/826/70 862/828/70 830/827/70 -f 862/828/71 863/830/71 831/829/71 -f 863/830/72 864/832/72 832/831/72 -f 864/832/73 865/1037/73 833/833/73 -f 833/834/74 865/1038/74 866/835/74 -f 834/836/75 866/835/75 867/837/75 -f 835/838/76 867/837/76 868/839/76 -f 836/840/77 868/839/77 869/841/77 -f 837/842/78 869/841/78 870/843/78 -f 876/844/2 880/1039/2 879/845/2 -f 874/742/7 878/1040/7 880/847/7 -f 879/848/8 877/1041/8 873/740/8 -f 881/849/3 885/1042/3 886/850/3 -f 884/852/2 888/1043/2 887/853/2 -f 882/851/5 886/1044/5 888/855/5 -f 887/856/4 885/1045/4 881/849/4 -f 889/857/31 893/1046/31 894/858/31 -f 892/860/2 896/1047/2 895/861/2 -f 890/859/4 894/1048/4 896/863/4 -f 895/864/5 893/1049/5 889/857/5 -f 897/865/79 901/1050/79 902/866/79 -f 899/868/2 900/872/2 904/869/2 -f 898/867/24 902/1051/24 904/871/24 -f 903/873/25 901/1052/25 897/865/25 -f 905/874/80 909/1053/80 910/875/80 -f 908/877/2 912/1054/2 911/878/2 -f 906/876/25 910/1055/25 912/880/25 -f 911/881/24 909/1056/24 905/874/24 -f 914/882/81 913/890/81 917/883/81 -f 916/885/2 920/1057/2 919/886/2 -f 914/882/82 918/1058/82 920/888/82 -f 919/889/83 917/1059/83 913/890/83 -f 922/891/84 921/899/84 925/892/84 -f 924/894/2 928/1060/2 927/895/2 -f 922/891/83 926/1061/83 928/897/83 -f 927/898/82 925/1062/82 921/899/82 +f 360/463/109 373/464/109 362/465/109 +f 358/466/109 374/467/109 360/463/109 +f 364/468/109 373/464/109 372/469/109 +f 366/470/109 372/469/109 371/471/109 +f 366/470/109 370/472/109 368/473/109 +f 368/473/109 369/474/109 338/475/109 +f 338/475/109 384/476/109 340/477/109 +f 340/477/109 383/478/109 342/479/109 +f 342/479/109 382/480/109 344/481/109 +f 344/481/109 381/482/109 346/483/109 +f 348/484/109 381/482/109 380/485/109 +f 350/486/109 380/485/109 379/487/109 +f 352/488/109 379/487/109 378/489/109 +f 354/490/109 378/489/109 377/491/109 +f 356/492/109 377/493/109 376/494/109 +f 358/466/109 376/494/109 375/495/109 +f 345/496/110 398/497/110 343/498/110 +f 343/498/110 399/499/110 341/500/110 +f 399/499/110 339/501/110 341/500/110 +f 400/502/110 337/503/110 339/501/110 +f 385/504/110 367/505/110 337/503/110 +f 386/506/110 365/507/110 367/505/110 +f 387/508/110 363/509/110 365/507/110 +f 388/510/110 361/511/110 363/509/110 +f 389/512/110 359/513/110 361/511/110 +f 390/514/110 357/515/110 359/513/110 +f 391/516/110 355/517/110 357/515/110 +f 355/517/110 393/518/110 353/519/110 +f 353/520/110 394/521/110 351/522/110 +f 351/522/110 395/523/110 349/524/110 +f 349/524/110 396/525/110 347/526/110 +f 347/526/110 397/527/110 345/496/110 +f 409/528/109 442/529/109 441/530/109 +f 408/531/109 441/532/109 440/533/109 +f 407/534/109 440/533/109 439/535/109 +f 407/534/109 438/536/109 406/537/109 +f 406/537/109 437/538/109 405/539/109 +f 404/540/109 437/538/109 436/541/109 +f 403/542/109 436/541/109 435/543/109 +f 403/542/109 434/544/109 402/545/109 +f 402/545/109 433/546/109 401/547/109 +f 401/547/109 448/548/109 416/549/109 +f 415/550/109 448/548/109 447/551/109 +f 414/552/109 447/551/109 446/553/109 +f 414/552/109 445/554/109 413/555/109 +f 412/556/109 445/554/109 444/557/109 +f 412/556/109 443/558/109 411/559/109 +f 411/559/109 442/529/109 410/560/109 +f 425/561/110 458/562/110 426/563/110 +f 424/564/110 457/565/110 425/566/110 +f 423/567/110 456/568/110 424/564/110 +f 454/569/110 423/567/110 422/570/110 +f 453/571/110 422/570/110 421/572/110 +f 420/573/110 453/571/110 421/572/110 +f 419/574/110 452/575/110 420/573/110 +f 450/576/110 419/574/110 418/577/110 +f 449/578/110 418/577/110 417/579/110 +f 464/580/110 417/579/110 432/581/110 +f 431/582/110 464/580/110 432/581/110 +f 430/583/110 463/584/110 431/582/110 +f 461/585/110 430/583/110 429/586/110 +f 428/587/110 461/585/110 429/586/110 +f 459/588/110 428/587/110 427/589/110 +f 458/562/110 427/589/110 426/563/110 +f 466/590/111 467/591/111 465/592/111 +f 470/593/112 471/594/112 469/595/112 +f 472/596/110 473/597/110 471/594/110 +f 474/598/113 475/599/113 473/600/113 +f 476/601/114 477/602/114 475/599/114 +f 477/603/109 470/593/109 469/595/109 +f 475/604/115 477/605/115 469/595/115 +f 476/601/116 474/598/116 472/596/116 +f 480/606/116 481/607/116 479/608/116 +f 495/609/110 498/610/110 496/611/110 +f 480/606/113 486/612/113 482/613/113 +f 481/607/112 484/614/112 479/608/112 +f 482/613/110 483/615/110 481/607/110 +f 479/608/109 485/616/109 480/606/109 +f 491/617/113 496/611/113 492/618/113 +f 487/619/109 492/618/109 488/620/109 +f 488/620/116 494/621/116 490/622/116 +f 487/619/115 493/623/115 491/624/115 +f 490/622/110 493/625/110 489/626/110 +f 498/627/112 493/623/112 494/628/112 +f 493/623/115 495/629/115 491/624/115 +f 496/611/116 494/621/116 492/618/116 +f 501/630/117 524/631/117 502/632/117 +f 507/633/112 510/634/112 508/635/112 +f 528/636/115 505/637/115 503/638/115 +f 502/639/109 505/637/109 501/640/109 +f 527/641/116 504/642/116 506/643/116 +f 499/644/110 504/642/110 500/645/110 +f 514/646/113 511/647/113 512/648/113 +f 508/635/116 514/646/116 512/648/116 +f 508/635/118 511/649/118 507/650/118 +f 507/651/115 513/652/115 509/653/115 +f 509/653/119 514/646/119 510/634/119 +f 515/654/109 518/655/109 516/656/109 +f 524/631/116 527/641/116 502/639/116 +f 517/657/113 522/658/113 518/655/113 +f 518/655/116 520/659/116 516/656/116 +f 523/660/113 526/661/113 524/631/113 +f 515/654/115 521/662/115 517/657/115 +f 528/636/115 523/663/115 501/640/115 +f 525/664/120 527/665/120 526/661/120 +f 527/665/113 499/666/113 500/667/113 +f 538/668/119 539/669/119 537/670/119 +f 533/671/121 535/672/121 534/673/121 +f 530/674/116 536/675/116 532/676/116 +f 531/677/115 534/673/115 529/678/115 +f 532/679/122 533/671/122 531/680/122 +f 529/681/123 535/672/123 530/682/123 +f 540/683/113 541/684/113 539/669/113 +f 546/685/109 543/686/109 544/687/109 +f 547/688/124 544/687/124 543/686/124 +f 549/689/113 548/690/113 547/688/113 +f 551/691/110 550/692/110 549/689/110 +f 553/693/120 552/694/120 551/691/120 +f 555/695/110 554/696/110 553/693/110 +f 542/697/115 558/698/115 560/699/115 +f 541/684/116 557/700/116 539/669/116 +f 558/698/115 538/668/115 562/701/115 +f 537/670/116 557/700/116 561/702/116 +f 560/703/112 557/700/112 559/704/112 +f 561/702/125 558/705/125 562/706/125 +f 566/707/116 548/690/116 550/692/116 +f 563/708/115 549/689/115 547/688/115 +f 551/691/115 569/709/115 553/693/115 +f 553/693/115 571/710/115 555/695/115 +f 552/694/116 570/711/116 568/712/116 +f 556/713/116 570/711/116 554/696/116 +f 551/691/115 565/714/115 567/715/115 +f 552/694/116 566/707/116 550/692/116 +f 544/687/116 576/716/116 546/685/116 +f 545/717/115 573/718/115 543/686/115 +f 543/686/115 563/719/115 547/688/115 +f 544/687/116 564/720/116 574/721/116 +f 576/716/110 573/722/110 575/723/110 +f 574/721/126 563/724/126 573/722/126 +f 563/725/112 566/707/112 565/726/112 +f 565/726/109 568/712/109 567/727/109 +f 567/727/127 570/711/127 569/728/127 +f 569/728/109 572/729/109 571/730/109 +f 589/731/109 591/732/109 585/733/109 +f 608/734/110 609/735/110 601/736/110 +f 607/737/110 614/738/110 615/739/110 +f 605/740/110 612/741/110 613/742/110 +f 602/743/110 611/744/110 603/745/110 +f 607/737/110 616/746/110 608/734/110 +f 606/747/110 613/748/110 614/738/110 +f 604/749/110 611/744/110 612/741/110 +f 601/736/110 610/750/110 602/743/110 +f 661/751/109 663/752/109 657/753/109 +f 694/754/109 667/755/109 668/756/109 +f 695/757/109 666/758/109 667/755/109 +f 696/759/109 665/760/109 666/758/109 +f 681/761/109 680/762/109 665/760/109 +f 682/763/109 679/764/109 680/762/109 +f 679/764/109 684/765/109 678/766/109 +f 678/766/109 685/767/109 677/768/109 +f 685/767/109 676/769/109 677/768/109 +f 686/770/109 675/771/109 676/769/109 +f 675/771/109 688/772/109 674/773/109 +f 674/773/109 689/774/109 673/775/109 +f 673/776/109 690/777/109 672/778/109 +f 672/778/109 691/779/109 671/780/109 +f 691/779/109 670/781/109 671/780/109 +f 670/781/109 693/782/109 669/783/109 +f 693/782/109 668/756/109 669/783/109 +f 699/784/110 726/785/110 700/786/110 +f 698/787/110 727/788/110 699/784/110 +f 697/789/110 728/790/110 698/787/110 +f 712/791/110 713/792/110 697/789/110 +f 711/793/110 714/794/110 712/791/110 +f 711/793/110 716/795/110 715/796/110 +f 710/797/110 717/798/110 716/795/110 +f 708/799/110 717/798/110 709/800/110 +f 707/801/110 718/802/110 708/799/110 +f 707/801/110 720/803/110 719/804/110 +f 706/805/110 721/806/110 720/803/110 +f 705/807/110 722/808/110 721/809/110 +f 704/810/110 723/811/110 722/808/110 +f 702/812/110 723/811/110 703/813/110 +f 702/812/110 725/814/110 724/815/110 +f 700/786/110 725/814/110 701/816/110 +f 731/817/113 730/818/113 729/819/113 +f 735/820/112 733/821/112 734/822/112 +f 731/817/110 736/823/110 732/824/110 +f 730/818/109 734/825/109 729/819/109 +f 733/826/116 738/827/116 734/828/116 +f 735/829/115 740/830/115 736/831/115 +f 732/824/116 742/832/116 730/818/116 +f 729/819/115 743/833/115 731/817/115 +f 732/824/110 740/830/110 744/834/110 +f 730/818/109 739/835/109 735/836/109 +f 731/817/110 737/837/110 733/826/110 +f 729/819/109 738/838/109 741/839/109 +f 774/840/109 747/841/109 748/842/109 +f 775/843/109 746/844/109 747/841/109 +f 776/845/109 745/846/109 746/844/109 +f 761/847/109 760/848/109 745/846/109 +f 762/849/109 759/850/109 760/848/109 +f 759/850/109 764/851/109 758/852/109 +f 758/852/109 765/853/109 757/854/109 +f 765/853/109 756/855/109 757/854/109 +f 766/856/109 755/857/109 756/855/109 +f 755/857/109 768/858/109 754/859/109 +f 754/859/109 769/860/109 753/861/109 +f 753/862/109 770/863/109 752/864/109 +f 752/864/109 771/865/109 751/866/109 +f 771/865/109 750/867/109 751/866/109 +f 750/867/109 773/868/109 749/869/109 +f 773/868/109 748/842/109 749/869/109 +f 779/870/110 806/871/110 780/872/110 +f 778/873/110 807/874/110 779/870/110 +f 777/875/110 808/876/110 778/873/110 +f 792/877/110 793/878/110 777/875/110 +f 791/879/110 794/880/110 792/877/110 +f 791/879/110 796/881/110 795/882/110 +f 790/883/110 797/884/110 796/881/110 +f 788/885/110 797/884/110 789/886/110 +f 787/887/110 798/888/110 788/885/110 +f 787/887/110 800/889/110 799/890/110 +f 786/891/110 801/892/110 800/889/110 +f 785/893/110 802/894/110 801/895/110 +f 784/896/110 803/897/110 802/894/110 +f 782/898/110 803/897/110 783/899/110 +f 782/898/110 805/900/110 804/901/110 +f 780/872/110 805/900/110 781/902/110 +f 814/903/116 811/904/116 809/905/116 +f 815/906/112 809/907/112 810/908/112 +f 832/909/116 836/910/116 833/911/116 +f 833/911/112 834/912/112 831/913/112 +f 817/914/115 830/915/115 818/916/115 +f 832/909/128 820/917/128 835/918/128 +f 819/919/113 822/920/113 820/917/113 +f 834/912/129 829/921/129 831/913/129 +f 827/922/110 826/923/110 814/924/110 +f 810/925/109 833/926/109 812/927/109 +f 812/927/109 831/928/109 811/929/109 +f 824/930/109 825/931/109 832/932/109 +f 815/933/110 836/934/110 835/935/110 +f 813/936/110 836/934/110 816/937/110 +f 813/938/113 812/939/113 811/940/113 +f 816/941/115 810/942/115 812/943/115 +f 843/944/112 841/945/112 842/946/112 +f 838/947/109 842/946/109 837/948/109 +f 840/949/116 843/944/116 838/950/116 +f 837/951/115 841/945/115 839/952/115 +f 839/953/110 844/954/110 840/955/110 +f 845/956/129 846/957/129 852/958/129 +f 850/959/112 858/960/112 851/961/112 +f 848/962/116 857/963/116 850/959/116 +f 849/964/112 854/965/112 847/966/112 +f 851/961/115 855/967/115 849/968/115 +f 845/956/112 856/969/112 848/970/112 +f 866/971/115 846/972/115 853/973/115 +f 863/974/109 871/975/109 862/976/109 +f 874/977/110 868/978/110 867/979/110 +f 872/980/130 874/977/130 871/975/130 +f 871/975/109 861/981/109 862/976/109 +f 866/982/110 874/977/110 867/979/110 +f 863/974/109 873/983/109 872/980/109 +f 876/984/110 868/978/110 875/985/110 +f 873/983/131 875/985/131 872/980/131 +f 878/986/113 865/987/113 870/988/113 +f 860/989/132 874/990/132 859/991/132 +f 846/957/109 860/992/109 852/958/109 +f 853/993/110 859/994/110 874/995/110 +f 882/996/112 879/997/112 880/998/112 +f 873/983/133 882/999/133 876/984/133 +f 883/1000/115 880/1001/115 879/1002/115 +f 884/1003/113 860/1004/113 859/1005/113 +f 877/1006/109 883/1000/109 879/1002/109 +f 854/965/116 878/986/116 847/1007/116 +f 878/986/110 884/1003/110 847/1007/110 +f 870/988/110 880/1008/110 878/986/110 +f 869/1009/110 882/999/110 870/1010/110 +f 877/1006/109 881/1011/109 865/987/109 +f 881/1012/109 864/1013/109 865/1014/109 +f 857/1015/109 860/1016/109 883/1000/109 +f 884/1003/110 850/1017/110 851/1018/110 +f 885/1019/134 887/1020/134 886/1021/134 +f 466/590/113 888/1022/113 468/1023/113 +f 465/592/112 885/1024/112 886/1025/112 +f 890/1026/135 891/1027/135 889/1028/135 +f 893/1029/136 895/1030/136 894/1031/136 +f 890/1026/112 896/1032/112 892/1033/112 +f 889/1028/113 893/1034/113 894/1035/113 +f 898/1036/137 899/1037/137 897/1038/137 +f 902/1039/138 904/1040/138 903/1041/138 +f 898/1036/139 904/1040/139 900/1042/139 +f 897/1038/140 901/1043/140 902/1044/140 +f 906/1045/141 907/1046/141 905/1047/141 +f 909/1048/142 911/1049/142 910/1050/142 +f 906/1045/140 912/1051/140 908/1052/140 +f 905/1047/139 909/1053/139 910/1054/139 +f 913/1055/143 916/1056/143 915/1057/143 +f 918/1058/144 920/1059/144 919/1060/144 +f 914/1061/145 920/1059/145 916/1056/145 +f 913/1055/146 917/1062/146 918/1063/146 +f 922/1064/147 923/1065/147 921/1066/147 +f 926/1067/148 928/1068/148 927/1069/148 +f 922/1064/146 928/1068/146 924/1070/146 +f 921/1066/145 925/1071/145 926/1072/145 +f 360/463/109 374/467/109 373/464/109 +f 358/466/109 375/495/109 374/467/109 +f 364/468/109 362/465/109 373/464/109 +f 366/470/109 364/468/109 372/469/109 +f 366/470/109 371/471/109 370/472/109 +f 368/473/109 370/472/109 369/474/109 +f 338/475/109 369/474/109 384/476/109 +f 340/477/109 384/476/109 383/478/109 +f 342/479/109 383/478/109 382/480/109 +f 344/481/109 382/480/109 381/482/109 +f 348/484/109 346/483/109 381/482/109 +f 350/486/109 348/484/109 380/485/109 +f 352/488/109 350/486/109 379/487/109 +f 354/490/109 352/488/109 378/489/109 +f 356/492/109 354/1073/109 377/493/109 +f 358/466/109 356/492/109 376/494/109 +f 345/496/110 397/527/110 398/497/110 +f 343/498/110 398/497/110 399/499/110 +f 399/499/110 400/502/110 339/501/110 +f 400/502/110 385/504/110 337/503/110 +f 385/504/110 386/506/110 367/505/110 +f 386/506/110 387/508/110 365/507/110 +f 387/508/110 388/510/110 363/509/110 +f 388/510/110 389/512/110 361/511/110 +f 389/512/110 390/514/110 359/513/110 +f 390/514/110 391/516/110 357/515/110 +f 391/516/110 392/1074/110 355/517/110 +f 355/517/110 392/1074/110 393/518/110 +f 353/520/110 393/1075/110 394/521/110 +f 351/522/110 394/521/110 395/523/110 +f 349/524/110 395/523/110 396/525/110 +f 347/526/110 396/525/110 397/527/110 +f 409/528/109 410/560/109 442/529/109 +f 408/531/109 409/1076/109 441/532/109 +f 407/534/109 408/531/109 440/533/109 +f 407/534/109 439/535/109 438/536/109 +f 406/537/109 438/536/109 437/538/109 +f 404/540/109 405/539/109 437/538/109 +f 403/542/109 404/540/109 436/541/109 +f 403/542/109 435/543/109 434/544/109 +f 402/545/109 434/544/109 433/546/109 +f 401/547/109 433/546/109 448/548/109 +f 415/550/109 416/549/109 448/548/109 +f 414/552/109 415/550/109 447/551/109 +f 414/552/109 446/553/109 445/554/109 +f 412/556/109 413/555/109 445/554/109 +f 412/556/109 444/557/109 443/558/109 +f 411/559/109 443/558/109 442/529/109 +f 425/561/110 457/1077/110 458/562/110 +f 424/564/110 456/568/110 457/565/110 +f 423/567/110 455/1078/110 456/568/110 +f 454/569/110 455/1078/110 423/567/110 +f 453/571/110 454/569/110 422/570/110 +f 420/573/110 452/575/110 453/571/110 +f 419/574/110 451/1079/110 452/575/110 +f 450/576/110 451/1079/110 419/574/110 +f 449/578/110 450/576/110 418/577/110 +f 464/580/110 449/578/110 417/579/110 +f 431/582/110 463/584/110 464/580/110 +f 430/583/110 462/1080/110 463/584/110 +f 461/585/110 462/1080/110 430/583/110 +f 428/587/110 460/1081/110 461/585/110 +f 459/588/110 460/1081/110 428/587/110 +f 458/562/110 459/588/110 427/589/110 +f 466/590/111 468/1023/111 467/591/111 +f 470/593/112 472/596/112 471/594/112 +f 472/596/110 474/1082/110 473/597/110 +f 474/598/113 476/601/113 475/599/113 +f 476/601/114 478/1083/114 477/602/114 +f 477/603/109 478/1084/109 470/593/109 +f 469/595/115 471/594/115 475/604/115 +f 471/594/115 473/1085/115 475/604/115 +f 472/596/116 470/593/116 476/601/116 +f 470/593/116 478/1086/116 476/601/116 +f 480/606/116 482/613/116 481/607/116 +f 495/609/110 497/1087/110 498/610/110 +f 480/606/113 485/1088/113 486/612/113 +f 481/607/112 483/1089/112 484/614/112 +f 482/613/110 486/1090/110 483/615/110 +f 479/608/109 484/1091/109 485/616/109 +f 491/617/113 495/1092/113 496/611/113 +f 487/619/109 491/624/109 492/618/109 +f 488/620/116 492/618/116 494/621/116 +f 487/619/115 489/1093/115 493/623/115 +f 490/622/110 494/621/110 493/625/110 +f 498/627/112 497/1094/112 493/623/112 +f 493/623/115 497/1094/115 495/629/115 +f 496/611/116 498/610/116 494/621/116 +f 501/630/117 523/660/117 524/631/117 +f 507/633/112 509/1095/112 510/634/112 +f 503/638/115 499/1096/115 528/636/115 +f 528/636/115 501/640/115 505/637/115 +f 502/639/109 506/643/109 505/637/109 +f 506/643/116 502/639/116 527/641/116 +f 527/641/116 500/645/116 504/642/116 +f 499/644/110 503/1097/110 504/642/110 +f 514/646/113 513/1098/113 511/647/113 +f 508/635/116 510/634/116 514/646/116 +f 508/635/118 512/648/118 511/649/118 +f 507/651/115 511/1099/115 513/652/115 +f 509/653/119 513/652/119 514/646/119 +f 515/654/109 517/657/109 518/655/109 +f 524/631/116 526/661/116 527/641/116 +f 517/657/113 521/1100/113 522/658/113 +f 518/655/116 522/1101/116 520/659/116 +f 523/660/113 525/664/113 526/661/113 +f 515/654/115 519/1102/115 521/662/115 +f 528/636/115 525/1103/115 523/663/115 +f 525/664/120 528/1104/120 527/665/120 +f 527/665/113 528/1104/113 499/666/113 +f 538/668/119 540/683/119 539/669/119 +f 533/671/121 536/675/121 535/672/121 +f 530/674/116 535/672/116 536/675/116 +f 531/677/115 533/671/115 534/673/115 +f 532/679/122 536/675/122 533/671/122 +f 529/681/123 534/673/123 535/672/123 +f 540/683/113 542/697/113 541/684/113 +f 546/685/109 545/717/109 543/686/109 +f 547/688/124 548/690/124 544/687/124 +f 549/689/113 550/692/113 548/690/113 +f 551/691/110 552/694/110 550/692/110 +f 553/693/120 554/696/120 552/694/120 +f 555/695/110 556/713/110 554/696/110 +f 542/697/115 540/683/115 558/698/115 +f 541/684/116 559/704/116 557/700/116 +f 558/698/115 540/683/115 538/668/115 +f 537/670/116 539/669/116 557/700/116 +f 560/703/112 558/705/112 557/700/112 +f 561/702/125 557/700/125 558/705/125 +f 566/707/116 564/1105/116 548/690/116 +f 563/708/115 565/714/115 549/689/115 +f 551/691/115 567/715/115 569/709/115 +f 553/693/115 569/709/115 571/710/115 +f 552/694/116 554/696/116 570/711/116 +f 556/713/116 572/729/116 570/711/116 +f 551/691/115 549/689/115 565/714/115 +f 552/694/116 568/712/116 566/707/116 +f 544/687/116 574/721/116 576/716/116 +f 545/717/115 575/1106/115 573/718/115 +f 543/686/115 573/718/115 563/719/115 +f 544/687/116 548/690/116 564/720/116 +f 576/716/110 574/721/110 573/722/110 +f 574/721/126 564/720/126 563/724/126 +f 563/725/112 564/1105/112 566/707/112 +f 565/726/109 566/707/109 568/712/109 +f 567/727/127 568/712/127 570/711/127 +f 569/728/109 570/711/109 572/729/109 +f 585/733/109 586/1107/109 587/1108/109 +f 587/1108/109 588/1109/109 589/731/109 +f 589/731/109 590/1110/109 591/732/109 +f 591/732/109 592/1111/109 585/733/109 +f 585/733/109 587/1108/109 589/731/109 +f 608/734/110 616/746/110 609/735/110 +f 607/737/110 606/747/110 614/738/110 +f 605/740/110 604/749/110 612/741/110 +f 602/743/110 610/750/110 611/744/110 +f 607/737/110 615/739/110 616/746/110 +f 606/747/110 605/1112/110 613/748/110 +f 604/749/110 603/745/110 611/744/110 +f 601/736/110 609/735/110 610/750/110 +f 657/753/109 658/1113/109 659/1114/109 +f 659/1114/109 660/1115/109 661/751/109 +f 661/751/109 662/1116/109 663/752/109 +f 663/752/109 664/1117/109 657/753/109 +f 657/753/109 659/1114/109 661/751/109 +f 694/754/109 695/757/109 667/755/109 +f 695/757/109 696/759/109 666/758/109 +f 696/759/109 681/761/109 665/760/109 +f 681/761/109 682/763/109 680/762/109 +f 682/763/109 683/1118/109 679/764/109 +f 679/764/109 683/1118/109 684/765/109 +f 678/766/109 684/765/109 685/767/109 +f 685/767/109 686/770/109 676/769/109 +f 686/770/109 687/1119/109 675/771/109 +f 675/771/109 687/1119/109 688/772/109 +f 674/773/109 688/772/109 689/774/109 +f 673/776/109 689/1120/109 690/777/109 +f 672/778/109 690/777/109 691/779/109 +f 691/779/109 692/1121/109 670/781/109 +f 670/781/109 692/1121/109 693/782/109 +f 693/782/109 694/754/109 668/756/109 +f 699/784/110 727/788/110 726/785/110 +f 698/787/110 728/790/110 727/788/110 +f 697/789/110 713/792/110 728/790/110 +f 712/791/110 714/794/110 713/792/110 +f 711/793/110 715/796/110 714/794/110 +f 711/793/110 710/797/110 716/795/110 +f 710/797/110 709/800/110 717/798/110 +f 708/799/110 718/802/110 717/798/110 +f 707/801/110 719/804/110 718/802/110 +f 707/801/110 706/805/110 720/803/110 +f 706/805/110 705/1122/110 721/806/110 +f 705/807/110 704/810/110 722/808/110 +f 704/810/110 703/813/110 723/811/110 +f 702/812/110 724/815/110 723/811/110 +f 702/812/110 701/816/110 725/814/110 +f 700/786/110 726/785/110 725/814/110 +f 731/817/113 732/824/113 730/818/113 +f 735/820/112 736/823/112 733/821/112 +f 731/817/110 733/821/110 736/823/110 +f 730/818/109 735/1123/109 734/825/109 +f 733/826/116 737/837/116 738/827/116 +f 735/829/115 739/1124/115 740/830/115 +f 732/824/116 744/834/116 742/832/116 +f 729/819/115 741/839/115 743/833/115 +f 732/824/110 736/831/110 740/830/110 +f 730/818/109 742/832/109 739/835/109 +f 731/817/110 743/833/110 737/837/110 +f 729/819/109 734/1125/109 738/838/109 +f 774/840/109 775/843/109 747/841/109 +f 775/843/109 776/845/109 746/844/109 +f 776/845/109 761/847/109 745/846/109 +f 761/847/109 762/849/109 760/848/109 +f 762/849/109 763/1126/109 759/850/109 +f 759/850/109 763/1126/109 764/851/109 +f 758/852/109 764/851/109 765/853/109 +f 765/853/109 766/856/109 756/855/109 +f 766/856/109 767/1127/109 755/857/109 +f 755/857/109 767/1127/109 768/858/109 +f 754/859/109 768/858/109 769/860/109 +f 753/862/109 769/1128/109 770/863/109 +f 752/864/109 770/863/109 771/865/109 +f 771/865/109 772/1129/109 750/867/109 +f 750/867/109 772/1129/109 773/868/109 +f 773/868/109 774/840/109 748/842/109 +f 779/870/110 807/874/110 806/871/110 +f 778/873/110 808/876/110 807/874/110 +f 777/875/110 793/878/110 808/876/110 +f 792/877/110 794/880/110 793/878/110 +f 791/879/110 795/882/110 794/880/110 +f 791/879/110 790/883/110 796/881/110 +f 790/883/110 789/886/110 797/884/110 +f 788/885/110 798/888/110 797/884/110 +f 787/887/110 799/890/110 798/888/110 +f 787/887/110 786/891/110 800/889/110 +f 786/891/110 785/1130/110 801/892/110 +f 785/893/110 784/896/110 802/894/110 +f 784/896/110 783/899/110 803/897/110 +f 782/898/110 804/901/110 803/897/110 +f 782/898/110 781/902/110 805/900/110 +f 780/872/110 806/871/110 805/900/110 +f 814/903/116 813/1131/116 811/904/116 +f 815/906/112 814/1132/112 809/907/112 +f 832/909/116 835/918/116 836/910/116 +f 833/911/112 836/1133/112 834/912/112 +f 817/914/115 829/921/115 830/915/115 +f 832/909/128 819/919/128 820/917/128 +f 819/919/113 821/1134/113 822/920/113 +f 834/912/129 830/915/129 829/921/129 +f 815/933/110 835/935/110 814/924/110 +f 835/935/110 820/1135/110 828/1136/110 +f 814/924/110 835/935/110 827/922/110 +f 820/1135/110 822/1137/110 828/1136/110 +f 828/1136/110 827/922/110 835/935/110 +f 834/1138/110 813/936/110 814/924/110 +f 818/1139/110 830/1140/110 826/923/110 +f 830/1140/110 834/1138/110 814/924/110 +f 826/923/110 830/1140/110 814/924/110 +f 810/925/109 832/932/109 833/926/109 +f 812/927/109 833/926/109 831/928/109 +f 811/929/109 831/928/109 809/1141/109 +f 831/928/109 829/1142/109 809/1141/109 +f 829/1142/109 817/1143/109 823/1144/109 +f 829/1142/109 823/1144/109 809/1141/109 +f 823/1144/109 824/930/109 809/1141/109 +f 832/932/109 810/925/109 809/1141/109 +f 821/1145/109 819/1146/109 825/931/109 +f 819/1146/109 832/932/109 825/931/109 +f 832/932/109 809/1141/109 824/930/109 +f 815/933/110 816/937/110 836/934/110 +f 813/936/110 834/1138/110 836/934/110 +f 813/938/113 816/1147/113 812/939/113 +f 816/941/115 815/1148/115 810/942/115 +f 843/944/112 844/954/112 841/945/112 +f 838/947/109 843/944/109 842/946/109 +f 840/949/116 844/954/116 843/944/116 +f 837/951/115 842/946/115 841/945/115 +f 839/953/110 841/945/110 844/954/110 +f 845/956/129 853/993/129 846/957/129 +f 850/959/112 857/963/112 858/960/112 +f 848/962/116 856/1149/116 857/963/116 +f 849/964/112 855/1150/112 854/965/112 +f 851/961/115 858/960/115 855/967/115 +f 845/956/112 852/958/112 856/969/112 +f 866/971/115 861/981/115 846/972/115 +f 863/974/109 872/980/109 871/975/109 +f 874/977/110 875/985/110 868/978/110 +f 872/980/130 875/985/130 874/977/130 +f 871/975/109 846/972/109 861/981/109 +f 866/982/110 853/1151/110 874/977/110 +f 863/974/109 864/1013/109 873/983/109 +f 876/984/110 869/1009/110 868/978/110 +f 873/983/131 876/984/131 875/985/131 +f 878/986/113 877/1006/113 865/987/113 +f 860/989/132 871/1152/132 874/990/132 +f 846/957/109 871/1153/109 860/992/109 +f 853/993/110 845/956/110 859/994/110 +f 882/996/112 881/1011/112 879/997/112 +f 873/983/133 881/1012/133 882/999/133 +f 883/1000/115 884/1154/115 880/1001/115 +f 884/1003/113 883/1155/113 860/1004/113 +f 877/1006/109 854/965/109 883/1000/109 +f 854/965/116 877/1006/116 878/986/116 +f 878/986/110 880/1156/110 884/1003/110 +f 870/988/110 882/1157/110 880/1008/110 +f 869/1009/110 876/984/110 882/999/110 +f 877/1006/109 879/997/109 881/1011/109 +f 881/1012/109 873/983/109 864/1013/109 +f 854/965/109 855/1150/109 858/1158/109 +f 857/1015/109 856/969/109 852/958/109 +f 883/1000/109 854/965/109 858/1158/109 +f 857/1015/109 852/958/109 860/1016/109 +f 883/1000/109 858/1158/109 857/1015/109 +f 851/1018/110 849/1159/110 847/1007/110 +f 884/1003/110 859/1005/110 850/1017/110 +f 859/1005/110 845/1160/110 850/1017/110 +f 845/1160/110 848/1161/110 850/1017/110 +f 851/1018/110 847/1007/110 884/1003/110 +f 885/1019/134 888/1022/134 887/1020/134 +f 466/590/113 887/1020/113 888/1022/113 +f 465/592/112 467/591/112 885/1024/112 +f 890/1026/135 892/1033/135 891/1027/135 +f 893/1029/136 896/1032/136 895/1030/136 +f 890/1026/112 895/1030/112 896/1032/112 +f 889/1028/113 891/1027/113 893/1034/113 +f 898/1036/137 900/1042/137 899/1037/137 +f 902/1039/138 901/1162/138 904/1040/138 +f 898/1036/139 903/1041/139 904/1040/139 +f 897/1038/140 899/1037/140 901/1043/140 +f 906/1045/141 908/1052/141 907/1046/141 +f 909/1048/142 912/1051/142 911/1049/142 +f 906/1045/140 911/1049/140 912/1051/140 +f 905/1047/139 907/1046/139 909/1053/139 +f 913/1055/143 914/1061/143 916/1056/143 +f 918/1058/144 917/1163/144 920/1059/144 +f 914/1061/145 919/1060/145 920/1059/145 +f 913/1055/146 915/1057/146 917/1062/146 +f 922/1064/147 924/1070/147 923/1065/147 +f 926/1067/148 925/1164/148 928/1068/148 +f 922/1064/146 927/1069/146 928/1068/146 +f 921/1066/145 923/1065/145 925/1071/145 s 1 -f 1/41/4 4/15/85 3/39/85 -f 4/15/85 5/38/83 3/39/85 -f 6/17/83 7/36/86 5/38/83 -f 8/19/86 9/34/8 7/36/86 -f 10/21/8 11/64/87 9/34/8 -f 12/22/87 13/62/24 11/64/87 -f 14/24/24 15/60/88 13/62/24 -f 16/26/88 17/58/5 15/60/88 -f 18/900/5 19/55/89 17/57/5 -f 20/30/89 21/53/82 19/55/89 -f 22/4/82 23/51/90 21/53/82 -f 24/1/90 25/49/7 23/51/90 -f 25/49/7 28/6/91 27/47/91 -f 28/6/91 29/45/25 27/47/91 -f 30/8/25 31/43/92 29/45/25 -f 32/11/92 1/41/4 31/43/92 -f 48/14/89 63/1063/82 47/16/82 -f 41/31/4 56/1064/85 40/32/85 -f 34/10/88 49/1065/5 33/12/5 -f 33/12/5 64/1066/89 48/14/89 -f 42/27/92 57/1067/4 41/29/4 -f 35/9/24 50/1068/88 34/10/88 -f 43/25/25 58/1069/92 42/27/92 -f 36/7/87 51/1070/24 35/9/24 -f 44/23/91 59/1071/25 43/25/25 -f 37/2/8 52/1072/87 36/7/87 -f 45/20/7 60/1073/91 44/23/91 -f 38/5/86 53/1074/8 37/2/8 -f 46/18/90 61/1075/7 45/20/7 -f 39/33/83 54/1076/86 38/5/86 -f 47/16/82 62/1077/90 46/18/90 -f 40/32/85 55/1078/83 39/33/83 -f 89/99/5 74/98/88 73/66/5 -f 82/115/92 67/80/25 66/83/92 -f 90/101/88 75/97/24 74/98/88 -f 83/112/25 68/78/91 67/80/25 -f 91/127/24 76/94/87 75/97/24 -f 84/111/91 69/77/7 68/78/91 -f 92/125/87 77/93/8 76/94/87 -f 85/110/7 70/75/90 69/77/7 -f 93/124/8 78/90/86 77/93/8 -f 86/108/90 71/72/82 70/75/90 -f 94/121/86 79/88/83 78/90/86 -f 87/105/82 72/69/89 71/72/82 -f 95/120/83 80/87/85 79/88/83 -f 88/102/89 73/903/5 72/69/89 -f 81/117/4 66/83/92 65/85/4 -f 96/119/85 65/85/4 80/87/85 -f 110/1079/90 125/123/7 109/1080/7 -f 103/1081/83 118/107/86 102/1082/86 -f 111/1083/82 126/907/90 110/1079/90 -f 104/1084/85 119/905/83 103/1081/83 -f 112/1085/89 127/122/82 111/1083/82 -f 105/1086/4 120/106/85 104/1084/85 -f 98/1087/88 113/116/5 97/1088/5 -f 97/1088/5 128/118/89 112/1085/89 -f 106/1089/92 121/904/4 105/1090/4 -f 99/1091/24 114/114/88 98/1087/88 -f 107/1092/25 122/100/92 106/1089/92 -f 100/1093/87 115/906/24 99/1091/24 -f 108/1094/91 123/126/25 107/1092/25 -f 101/1095/8 116/113/87 100/1093/87 -f 109/1080/7 124/908/91 108/1094/91 -f 102/1082/86 117/109/8 101/1095/8 -f 248/1096/83 255/1097/8 247/1098/8 -f 246/1099/24 253/1100/5 245/1101/5 -f 244/1102/82 251/1103/7 243/1104/7 -f 242/1105/25 249/1106/4 241/1107/4 -f 241/1107/4 256/1108/83 248/1096/83 -f 247/1098/8 254/1109/24 246/1099/24 -f 245/1110/5 252/1111/82 244/1102/82 -f 243/1104/7 250/1112/25 242/1105/25 -f 269/939/5 262/1113/24 261/1114/5 -f 267/283/7 260/1115/82 259/1116/7 -f 265/274/4 258/1117/25 257/1118/4 -f 272/272/83 257/1118/4 264/1119/83 -f 270/285/24 263/1120/8 262/1113/24 -f 268/287/82 261/1121/5 260/1115/82 -f 266/281/25 259/1116/7 258/1117/25 -f 271/275/8 264/1119/83 263/1120/8 -f 275/282/7 284/1122/82 276/279/82 -f 273/273/4 282/1123/25 274/288/25 -f 280/284/83 281/1124/4 273/273/4 -f 278/276/24 287/1125/8 279/277/8 -f 276/279/82 285/1126/5 277/280/5 -f 274/288/25 283/1127/7 275/282/7 -f 279/277/8 288/1128/83 280/284/83 -f 277/286/5 286/1129/24 278/276/24 -f 291/1130/7 300/1131/93 292/1132/82 -f 289/1133/4 298/1134/94 290/1135/25 -f 296/1136/83 297/1137/95 289/1133/4 -f 294/1138/24 303/1139/96 295/1140/8 -f 292/1132/82 301/1141/97 293/1142/5 -f 290/1135/25 299/1143/98 291/1130/7 -f 295/1140/8 304/1144/99 296/1136/83 -f 293/1145/5 302/1146/100 294/1138/24 -f 303/1139/96 306/1147/101 304/1144/99 -f 300/1131/93 307/1148/102 310/1149/103 -f 298/1134/94 308/1150/104 311/1151/105 -f 304/1144/99 308/1150/104 297/1137/95 -f 302/1146/100 309/1152/106 303/1139/96 -f 299/1143/98 311/1151/105 307/1148/102 -f 301/1153/97 312/1154/107 302/1146/100 -f 301/1141/97 310/1149/103 305/1155/108 -f 313/1156/4 328/1157/83 320/1158/83 -f 319/1159/8 326/1160/24 318/1161/24 -f 317/1162/5 324/1163/82 316/1164/82 -f 315/1165/7 322/1166/25 314/1167/25 -f 320/1158/83 327/1168/8 319/1159/8 -f 318/1161/24 325/1169/5 317/1170/5 -f 316/1164/82 323/1171/7 315/1165/7 -f 314/1167/25 321/1172/4 313/1156/4 -f 354/315/88 387/349/24 355/317/24 -f 347/945/25 380/333/91 348/303/91 -f 355/317/24 388/353/87 356/948/87 -f 348/303/91 381/336/7 349/305/7 -f 356/948/87 389/352/8 357/320/8 -f 349/305/7 382/340/90 350/308/90 -f 357/320/8 390/323/86 358/292/86 -f 350/308/90 383/342/82 351/946/82 -f 358/292/86 391/326/83 359/295/83 -f 351/946/82 384/341/89 352/310/89 -f 359/295/83 392/328/85 360/297/85 -f 352/310/89 385/344/5 353/312/5 -f 345/299/4 378/332/92 346/301/92 -f 360/297/85 377/330/4 345/299/4 -f 353/947/5 386/346/88 354/315/88 -f 346/301/92 379/334/25 347/945/25 -f 466/454/88 499/488/24 467/456/24 -f 459/962/25 492/472/91 460/442/91 -f 467/456/24 500/492/87 468/965/87 -f 460/442/91 493/475/7 461/444/7 -f 468/965/87 501/491/8 469/459/8 -f 461/444/7 494/479/90 462/447/90 -f 469/459/8 502/462/86 470/431/86 -f 462/447/90 495/481/82 463/963/82 -f 470/431/86 503/465/83 471/434/83 -f 463/963/82 496/480/89 464/449/89 -f 471/434/83 504/467/85 472/436/85 -f 464/449/89 497/483/5 465/451/5 -f 457/438/4 490/471/92 458/440/92 -f 472/436/85 489/469/4 457/438/4 -f 465/964/5 498/485/88 466/454/88 -f 458/440/92 491/473/25 459/962/25 -f 633/687/5 648/717/89 632/685/89 -f 626/673/92 641/704/4 625/672/4 -f 625/672/4 656/699/85 640/670/85 -f 634/689/88 649/721/5 633/690/5 -f 627/675/25 642/703/92 626/673/92 -f 635/692/24 650/719/88 634/689/88 -f 628/677/91 643/705/25 627/675/25 -f 636/694/87 651/722/24 635/692/24 -f 629/679/7 644/709/91 628/677/91 -f 637/666/8 652/724/87 636/694/87 -f 630/681/90 645/711/7 629/679/7 -f 638/665/86 653/726/8 637/666/8 -f 631/683/82 646/713/90 630/681/90 -f 639/668/83 654/698/86 638/665/86 -f 632/685/89 647/715/82 631/683/82 -f 640/670/85 655/696/83 639/668/83 -f 668/1173/91 685/728/7 669/1174/7 -f 661/1175/8 678/712/86 662/1176/86 -f 669/1174/7 686/697/90 670/1177/90 -f 662/1176/86 679/714/83 663/1178/83 -f 670/1177/90 687/700/82 671/1179/82 -f 663/1178/83 680/716/85 664/1180/85 -f 671/1179/82 688/702/89 672/1181/89 -f 664/1180/85 681/718/4 665/1182/4 -f 657/1183/5 674/706/88 658/1184/88 -f 672/1181/89 673/701/5 657/1183/5 -f 665/1185/4 682/723/92 666/1186/92 -f 658/1184/88 675/708/24 659/1187/24 -f 666/1186/92 683/725/25 667/1188/25 -f 659/1187/24 676/707/87 660/1189/87 -f 667/1188/25 684/727/91 668/1173/91 -f 660/1189/87 677/710/8 661/1175/8 -f 837/842/109 742/1190/110 741/1191/109 -f 695/1192/82 710/796/90 694/1193/90 -f 703/1194/83 718/782/86 702/1195/86 -f 695/1192/82 712/800/89 711/798/82 -f 704/1196/85 719/784/83 703/1194/83 -f 696/1197/89 713/802/5 712/800/89 -f 690/1198/92 706/789/4 689/1199/4 -f 704/1196/85 706/789/4 720/786/85 -f 697/1200/5 714/807/88 713/804/5 -f 691/1201/25 705/788/92 690/1198/92 -f 699/1202/24 714/807/88 698/1203/88 -f 692/1204/91 707/790/25 691/1201/25 -f 700/1205/87 715/809/24 699/1202/24 -f 693/1206/7 708/792/91 692/1204/91 -f 701/1207/8 716/811/87 700/1205/87 -f 693/1206/7 710/796/90 709/794/7 -f 702/1195/86 717/779/8 701/1207/8 -f 836/840/111 741/1191/109 740/1208/111 -f 835/838/112 740/1208/111 739/1209/112 -f 834/836/113 739/1209/112 738/1210/113 -f 833/834/114 738/1210/113 737/1211/114 -f 832/831/115 737/1212/114 736/1213/115 -f 735/1214/116 832/831/115 736/1213/115 -f 734/1215/117 831/829/116 735/1214/116 -f 733/1216/118 830/827/117 734/1215/117 -f 732/1217/119 829/825/118 733/1216/118 -f 731/1218/120 828/823/119 732/1217/119 -f 730/1219/121 827/821/120 731/1218/120 -f 729/1220/122 825/819/121 730/1219/121 -f 840/816/123 729/1220/122 744/1221/123 -f 839/814/124 744/1221/123 743/1222/124 -f 838/812/110 743/1222/124 742/1190/110 -f 739/1209/24 754/768/88 738/1210/88 -f 732/1217/91 747/756/25 731/1218/25 -f 740/1208/87 755/771/24 739/1209/24 -f 733/1216/7 748/758/91 732/1217/91 -f 741/1191/8 756/773/87 740/1208/87 -f 734/1215/90 749/760/7 733/1216/7 -f 742/1190/86 757/745/8 741/1191/8 -f 735/1214/82 750/762/90 734/1215/90 -f 743/1222/83 758/743/86 742/1190/86 -f 736/1213/89 751/764/82 735/1214/82 -f 744/1221/85 759/746/83 743/1222/83 -f 737/1212/5 752/766/89 736/1213/89 -f 730/1219/92 745/750/4 729/1220/4 -f 729/1220/4 760/748/85 744/1221/85 -f 738/1210/88 753/770/5 737/1211/5 -f 731/1218/25 746/754/92 730/1219/92 -f 761/753/45 778/1223/125 777/1224/45 -f 761/753/45 792/1225/126 776/751/126 -f 775/749/79 792/1225/126 791/1226/79 -f 774/747/127 791/1226/79 790/1227/127 -f 774/747/127 789/1228/3 773/744/3 -f 772/775/128 789/1228/3 788/1229/128 -f 771/774/81 788/1229/128 787/1230/81 -f 771/774/81 786/1231/129 770/772/129 -f 770/772/129 785/1232/46 769/769/46 -f 769/767/46 784/1233/130 768/765/130 -f 767/763/80 784/1233/130 783/1234/80 -f 766/761/131 783/1234/80 782/1235/131 -f 766/761/131 781/1236/31 765/759/31 -f 764/757/132 781/1236/31 780/1237/132 -f 764/757/132 779/1238/84 763/755/84 -f 763/755/84 778/1223/125 762/752/125 -f 787/1230/24 802/1239/88 786/1231/88 -f 780/1237/91 795/1240/25 779/1238/25 -f 788/1229/87 803/1241/24 787/1230/24 -f 781/1236/7 796/1242/91 780/1237/91 -f 789/1228/8 804/1243/87 788/1229/87 -f 782/1235/90 797/1244/7 781/1236/7 -f 790/1227/86 805/1245/8 789/1228/8 -f 783/1234/82 798/1246/90 782/1235/90 -f 791/1226/83 806/1247/86 790/1227/86 -f 784/1233/89 799/1248/82 783/1234/82 -f 792/1225/85 807/1249/83 791/1226/83 -f 785/1250/5 800/1251/89 784/1233/89 -f 778/1223/92 793/1252/4 777/1224/4 -f 777/1224/4 808/1253/85 792/1225/85 -f 786/1231/88 801/1254/5 785/1232/5 -f 779/1238/25 794/1255/92 778/1223/92 -f 808/1253/133 823/1256/134 807/1249/134 -f 807/1249/134 822/1257/135 806/1247/135 -f 806/1247/135 821/1258/136 805/1245/136 -f 805/1245/136 820/1259/137 804/1243/137 -f 803/1241/138 820/1259/137 819/1260/138 -f 803/1241/138 818/1261/139 802/1239/139 -f 802/1239/139 817/1262/9 801/1254/9 -f 801/1263/9 816/1264/140 800/1251/140 -f 799/1248/141 816/1264/140 815/1265/141 -f 798/1246/142 815/1265/141 814/1266/142 -f 797/1244/143 814/1266/142 813/1267/143 -f 796/1242/144 813/1267/143 812/1268/144 -f 795/1240/145 812/1268/144 811/1269/145 -f 794/1255/146 811/1269/145 810/1270/146 -f 793/1252/104 810/1270/146 809/1271/104 -f 793/1252/104 824/1272/133 808/1253/133 -f 850/805/88 865/1038/5 849/806/5 -f 843/793/25 858/820/92 842/791/92 -f 851/808/24 866/835/88 850/805/88 -f 844/795/91 859/822/25 843/793/25 -f 852/810/87 867/837/24 851/808/24 -f 845/797/7 860/824/91 844/795/91 -f 853/781/8 868/839/87 852/810/87 -f 846/799/90 861/826/7 845/797/7 -f 854/780/86 869/841/8 853/781/8 -f 847/801/82 862/828/90 846/799/90 -f 855/783/83 870/843/86 854/780/86 -f 848/803/89 863/830/82 847/801/82 -f 856/785/85 871/813/83 855/783/83 -f 849/1036/5 864/832/89 848/803/89 -f 842/791/92 857/817/4 841/787/4 -f 841/787/4 872/815/85 856/785/85 -f 1/41/4 2/13/4 4/15/85 -f 4/15/85 6/17/83 5/38/83 -f 6/17/83 8/19/86 7/36/86 -f 8/19/86 10/21/8 9/34/8 -f 10/21/8 12/22/87 11/64/87 -f 12/22/87 14/24/24 13/62/24 -f 14/24/24 16/26/88 15/60/88 -f 16/26/88 18/28/5 17/58/5 -f 18/900/5 20/30/89 19/55/89 -f 20/30/89 22/4/82 21/53/82 -f 22/4/82 24/1/90 23/51/90 -f 24/1/90 26/3/7 25/49/7 -f 25/49/7 26/3/7 28/6/91 -f 28/6/91 30/8/25 29/45/25 -f 30/8/25 32/11/92 31/43/92 -f 32/11/92 2/13/4 1/41/4 -f 48/14/89 64/1066/89 63/1063/82 -f 41/31/4 57/1273/4 56/1064/85 -f 34/10/88 50/1068/88 49/1065/5 -f 33/12/5 49/1065/5 64/1066/89 -f 42/27/92 58/1069/92 57/1067/4 -f 35/9/24 51/1070/24 50/1068/88 -f 43/25/25 59/1071/25 58/1069/92 -f 36/7/87 52/1072/87 51/1070/24 -f 44/23/91 60/1073/91 59/1071/25 -f 37/2/8 53/1074/8 52/1072/87 -f 45/20/7 61/1075/7 60/1073/91 -f 38/5/86 54/1076/86 53/1074/8 -f 46/18/90 62/1077/90 61/1075/7 -f 39/33/83 55/1078/83 54/1076/86 -f 47/16/82 63/1063/82 62/1077/90 -f 40/32/85 56/1064/85 55/1078/83 -f 89/99/5 90/101/88 74/98/88 -f 82/115/92 83/112/25 67/80/25 -f 90/101/88 91/127/24 75/97/24 -f 83/112/25 84/111/91 68/78/91 -f 91/127/24 92/125/87 76/94/87 -f 84/111/91 85/110/7 69/77/7 -f 92/125/87 93/124/8 77/93/8 -f 85/110/7 86/108/90 70/75/90 -f 93/124/8 94/121/86 78/90/86 -f 86/108/90 87/105/82 71/72/82 -f 94/121/86 95/120/83 79/88/83 -f 87/105/82 88/102/89 72/69/89 -f 95/120/83 96/119/85 80/87/85 -f 88/102/89 89/104/5 73/903/5 -f 81/117/4 82/115/92 66/83/92 -f 96/119/85 81/117/4 65/85/4 -f 110/1079/90 126/907/90 125/123/7 -f 103/1081/83 119/905/83 118/107/86 -f 111/1083/82 127/122/82 126/907/90 -f 104/1084/85 120/106/85 119/905/83 -f 112/1085/89 128/118/89 127/122/82 -f 105/1086/4 121/103/4 120/106/85 -f 98/1087/88 114/114/88 113/116/5 -f 97/1088/5 113/116/5 128/118/89 -f 106/1089/92 122/100/92 121/904/4 -f 99/1091/24 115/906/24 114/114/88 -f 107/1092/25 123/126/25 122/100/92 -f 100/1093/87 116/113/87 115/906/24 -f 108/1094/91 124/908/91 123/126/25 -f 101/1095/8 117/109/8 116/113/87 -f 109/1080/7 125/123/7 124/908/91 -f 102/1082/86 118/107/86 117/109/8 -f 248/1096/83 256/1108/83 255/1097/8 -f 246/1099/24 254/1109/24 253/1100/5 -f 244/1102/82 252/1111/82 251/1103/7 -f 242/1105/25 250/1112/25 249/1106/4 -f 241/1107/4 249/1106/4 256/1108/83 -f 247/1098/8 255/1097/8 254/1109/24 -f 245/1110/5 253/1274/5 252/1111/82 -f 243/1104/7 251/1103/7 250/1112/25 -f 269/939/5 270/285/24 262/1113/24 -f 267/283/7 268/287/82 260/1115/82 -f 265/274/4 266/281/25 258/1117/25 -f 272/272/83 265/274/4 257/1118/4 -f 270/285/24 271/275/8 263/1120/8 -f 268/287/82 269/278/5 261/1121/5 -f 266/281/25 267/283/7 259/1116/7 -f 271/275/8 272/272/83 264/1119/83 -f 275/282/7 283/1127/7 284/1122/82 -f 273/273/4 281/1124/4 282/1123/25 -f 280/284/83 288/1128/83 281/1124/4 -f 278/276/24 286/1129/24 287/1125/8 -f 276/279/82 284/1122/82 285/1126/5 -f 274/288/25 282/1123/25 283/1127/7 -f 279/277/8 287/1125/8 288/1128/83 -f 277/286/5 285/1275/5 286/1129/24 -f 291/1130/7 299/1143/98 300/1131/93 -f 289/1133/4 297/1137/95 298/1134/94 -f 296/1136/83 304/1144/99 297/1137/95 -f 294/1138/24 302/1146/100 303/1139/96 -f 292/1132/82 300/1131/93 301/1141/97 -f 290/1135/25 298/1134/94 299/1143/98 -f 295/1140/8 303/1139/96 304/1144/99 -f 293/1145/5 301/1153/97 302/1146/100 -f 303/1139/96 309/1152/106 306/1147/101 -f 300/1131/93 299/1143/98 307/1148/102 -f 298/1134/94 297/1137/95 308/1150/104 -f 304/1144/99 306/1147/101 308/1150/104 -f 302/1146/100 312/1154/107 309/1152/106 -f 299/1143/98 298/1134/94 311/1151/105 -f 301/1153/97 305/1276/108 312/1154/107 -f 301/1141/97 300/1131/93 310/1149/103 -f 313/1156/4 321/1172/4 328/1157/83 -f 319/1159/8 327/1168/8 326/1160/24 -f 317/1162/5 325/1277/5 324/1163/82 -f 315/1165/7 323/1171/7 322/1166/25 -f 320/1158/83 328/1157/83 327/1168/8 -f 318/1161/24 326/1160/24 325/1169/5 -f 316/1164/82 324/1163/82 323/1171/7 -f 314/1167/25 322/1166/25 321/1172/4 -f 354/315/88 386/346/88 387/349/24 -f 347/945/25 379/334/25 380/333/91 -f 355/317/24 387/349/24 388/353/87 -f 348/303/91 380/333/91 381/336/7 -f 356/948/87 388/353/87 389/352/8 -f 349/305/7 381/336/7 382/340/90 -f 357/320/8 389/352/8 390/323/86 -f 350/308/90 382/340/90 383/342/82 -f 358/292/86 390/323/86 391/326/83 -f 351/946/82 383/342/82 384/341/89 -f 359/295/83 391/326/83 392/328/85 -f 352/310/89 384/341/89 385/344/5 -f 345/299/4 377/330/4 378/332/92 -f 360/297/85 392/328/85 377/330/4 -f 353/947/5 385/347/5 386/346/88 -f 346/301/92 378/332/92 379/334/25 -f 466/454/88 498/485/88 499/488/24 -f 459/962/25 491/473/25 492/472/91 -f 467/456/24 499/488/24 500/492/87 -f 460/442/91 492/472/91 493/475/7 -f 468/965/87 500/492/87 501/491/8 -f 461/444/7 493/475/7 494/479/90 -f 469/459/8 501/491/8 502/462/86 -f 462/447/90 494/479/90 495/481/82 -f 470/431/86 502/462/86 503/465/83 -f 463/963/82 495/481/82 496/480/89 -f 471/434/83 503/465/83 504/467/85 -f 464/449/89 496/480/89 497/483/5 -f 457/438/4 489/469/4 490/471/92 -f 472/436/85 504/467/85 489/469/4 -f 465/964/5 497/486/5 498/485/88 -f 458/440/92 490/471/92 491/473/25 -f 633/687/5 649/1003/5 648/717/89 -f 626/673/92 642/703/92 641/704/4 -f 625/672/4 641/704/4 656/699/85 -f 634/689/88 650/719/88 649/721/5 -f 627/675/25 643/705/25 642/703/92 -f 635/692/24 651/722/24 650/719/88 -f 628/677/91 644/709/91 643/705/25 -f 636/694/87 652/724/87 651/722/24 -f 629/679/7 645/711/7 644/709/91 -f 637/666/8 653/726/8 652/724/87 -f 630/681/90 646/713/90 645/711/7 -f 638/665/86 654/698/86 653/726/8 -f 631/683/82 647/715/82 646/713/90 -f 639/668/83 655/696/83 654/698/86 -f 632/685/89 648/717/89 647/715/82 -f 640/670/85 656/699/85 655/696/83 -f 668/1173/91 684/727/91 685/728/7 -f 661/1175/8 677/710/8 678/712/86 -f 669/1174/7 685/728/7 686/697/90 -f 662/1176/86 678/712/86 679/714/83 -f 670/1177/90 686/697/90 687/700/82 -f 663/1178/83 679/714/83 680/716/85 -f 671/1179/82 687/700/82 688/702/89 -f 664/1180/85 680/716/85 681/718/4 -f 657/1183/5 673/701/5 674/706/88 -f 672/1181/89 688/702/89 673/701/5 -f 665/1185/4 681/720/4 682/723/92 -f 658/1184/88 674/706/88 675/708/24 -f 666/1186/92 682/723/92 683/725/25 -f 659/1187/24 675/708/24 676/707/87 -f 667/1188/25 683/725/25 684/727/91 -f 660/1189/87 676/707/87 677/710/8 -f 837/842/109 838/812/110 742/1190/110 -f 695/1192/82 711/798/82 710/796/90 -f 703/1194/83 719/784/83 718/782/86 -f 695/1192/82 696/1197/89 712/800/89 -f 704/1196/85 720/786/85 719/784/83 -f 696/1197/89 697/1278/5 713/802/5 -f 690/1198/92 705/788/92 706/789/4 -f 704/1196/85 689/1199/4 706/789/4 -f 697/1200/5 698/1203/88 714/807/88 -f 691/1201/25 707/790/25 705/788/92 -f 699/1202/24 715/809/24 714/807/88 -f 692/1204/91 708/792/91 707/790/25 -f 700/1205/87 716/811/87 715/809/24 -f 693/1206/7 709/794/7 708/792/91 -f 701/1207/8 717/779/8 716/811/87 -f 693/1206/7 694/1193/90 710/796/90 -f 702/1195/86 718/782/86 717/779/8 -f 836/840/111 837/842/109 741/1191/109 -f 835/838/112 836/840/111 740/1208/111 -f 834/836/113 835/838/112 739/1209/112 -f 833/834/114 834/836/113 738/1210/113 -f 832/831/115 833/833/114 737/1212/114 -f 735/1214/116 831/829/116 832/831/115 -f 734/1215/117 830/827/117 831/829/116 -f 733/1216/118 829/825/118 830/827/117 -f 732/1217/119 828/823/119 829/825/118 -f 731/1218/120 827/821/120 828/823/119 -f 730/1219/121 825/819/121 827/821/120 -f 729/1220/122 826/818/122 825/819/121 -f 840/816/123 826/818/122 729/1220/122 -f 839/814/124 840/816/123 744/1221/123 -f 838/812/110 839/814/124 743/1222/124 -f 739/1209/24 755/771/24 754/768/88 -f 732/1217/91 748/758/91 747/756/25 -f 740/1208/87 756/773/87 755/771/24 -f 733/1216/7 749/760/7 748/758/91 -f 741/1191/8 757/745/8 756/773/87 -f 734/1215/90 750/762/90 749/760/7 -f 742/1190/86 758/743/86 757/745/8 -f 735/1214/82 751/764/82 750/762/90 -f 743/1222/83 759/746/83 758/743/86 -f 736/1213/89 752/766/89 751/764/82 -f 744/1221/85 760/748/85 759/746/83 -f 737/1212/5 753/1022/5 752/766/89 -f 730/1219/92 746/754/92 745/750/4 -f 729/1220/4 745/750/4 760/748/85 -f 738/1210/88 754/768/88 753/770/5 -f 731/1218/25 747/756/25 746/754/92 -f 761/753/45 762/752/125 778/1223/125 -f 761/753/45 777/1224/45 792/1225/126 -f 775/749/79 776/751/126 792/1225/126 -f 774/747/127 775/749/79 791/1226/79 -f 774/747/127 790/1227/127 789/1228/3 -f 772/775/128 773/744/3 789/1228/3 -f 771/774/81 772/775/128 788/1229/128 -f 771/774/81 787/1230/81 786/1231/129 -f 770/772/129 786/1231/129 785/1232/46 -f 769/767/46 785/1250/46 784/1233/130 -f 767/763/80 768/765/130 784/1233/130 -f 766/761/131 767/763/80 783/1234/80 -f 766/761/131 782/1235/131 781/1236/31 -f 764/757/132 765/759/31 781/1236/31 -f 764/757/132 780/1237/132 779/1238/84 -f 763/755/84 779/1238/84 778/1223/125 -f 787/1230/24 803/1241/24 802/1239/88 -f 780/1237/91 796/1242/91 795/1240/25 -f 788/1229/87 804/1243/87 803/1241/24 -f 781/1236/7 797/1244/7 796/1242/91 -f 789/1228/8 805/1245/8 804/1243/87 -f 782/1235/90 798/1246/90 797/1244/7 -f 790/1227/86 806/1247/86 805/1245/8 -f 783/1234/82 799/1248/82 798/1246/90 -f 791/1226/83 807/1249/83 806/1247/86 -f 784/1233/89 800/1251/89 799/1248/82 -f 792/1225/85 808/1253/85 807/1249/83 -f 785/1250/5 801/1263/5 800/1251/89 -f 778/1223/92 794/1255/92 793/1252/4 -f 777/1224/4 793/1252/4 808/1253/85 -f 786/1231/88 802/1239/88 801/1254/5 -f 779/1238/25 795/1240/25 794/1255/92 -f 808/1253/133 824/1272/133 823/1256/134 -f 807/1249/134 823/1256/134 822/1257/135 -f 806/1247/135 822/1257/135 821/1258/136 -f 805/1245/136 821/1258/136 820/1259/137 -f 803/1241/138 804/1243/137 820/1259/137 -f 803/1241/138 819/1260/138 818/1261/139 -f 802/1239/139 818/1261/139 817/1262/9 -f 801/1263/9 817/1279/9 816/1264/140 -f 799/1248/141 800/1251/140 816/1264/140 -f 798/1246/142 799/1248/141 815/1265/141 -f 797/1244/143 798/1246/142 814/1266/142 -f 796/1242/144 797/1244/143 813/1267/143 -f 795/1240/145 796/1242/144 812/1268/144 -f 794/1255/146 795/1240/145 811/1269/145 -f 793/1252/104 794/1255/146 810/1270/146 -f 793/1252/104 809/1271/104 824/1272/133 -f 850/805/88 866/835/88 865/1038/5 -f 843/793/25 859/822/25 858/820/92 -f 851/808/24 867/837/24 866/835/88 -f 844/795/91 860/824/91 859/822/25 -f 852/810/87 868/839/87 867/837/24 -f 845/797/7 861/826/7 860/824/91 -f 853/781/8 869/841/8 868/839/87 -f 846/799/90 862/828/90 861/826/7 -f 854/780/86 870/843/86 869/841/8 -f 847/801/82 863/830/82 862/828/90 -f 855/783/83 871/813/83 870/843/86 -f 848/803/89 864/832/89 863/830/82 -f 856/785/85 872/815/85 871/813/83 -f 849/1036/5 865/1037/5 864/832/89 -f 842/791/92 858/820/92 857/817/4 -f 841/787/4 857/817/4 872/815/85 +f 337/503/112 340/477/149 339/501/149 +f 340/477/149 341/500/150 339/501/149 +f 342/479/150 343/498/151 341/500/150 +f 344/481/151 345/496/116 343/498/151 +f 346/483/116 347/526/152 345/496/116 +f 348/484/152 349/524/128 347/526/152 +f 350/486/128 351/522/153 349/524/128 +f 352/488/153 353/520/113 351/522/153 +f 354/1073/113 355/517/154 353/519/113 +f 356/492/154 357/515/155 355/517/154 +f 358/466/155 359/513/156 357/515/155 +f 360/463/156 361/511/115 359/513/156 +f 361/511/115 364/468/157 363/509/157 +f 364/468/157 365/507/129 363/509/157 +f 366/470/129 367/505/158 365/507/129 +f 368/473/158 337/503/112 367/505/158 +f 384/476/154 399/1165/155 383/478/155 +f 377/493/112 392/1166/149 376/494/149 +f 370/472/153 385/1167/113 369/474/113 +f 369/474/113 400/1168/154 384/476/154 +f 378/489/158 393/1169/112 377/491/112 +f 371/471/128 386/1170/153 370/472/153 +f 379/487/129 394/1171/158 378/489/158 +f 372/469/152 387/1172/128 371/471/128 +f 380/485/157 395/1173/129 379/487/129 +f 373/464/116 388/1174/152 372/469/152 +f 381/482/115 396/1175/157 380/485/157 +f 374/467/151 389/1176/116 373/464/116 +f 382/480/156 397/1177/115 381/482/115 +f 375/495/150 390/1178/151 374/467/151 +f 383/478/155 398/1179/156 382/480/156 +f 376/494/149 391/1180/150 375/495/150 +f 425/561/113 410/560/153 409/528/113 +f 418/577/158 403/542/129 402/545/158 +f 426/563/153 411/559/128 410/560/153 +f 419/574/129 404/540/157 403/542/129 +f 427/589/128 412/556/152 411/559/128 +f 420/573/157 405/539/115 404/540/157 +f 428/587/152 413/555/116 412/556/152 +f 421/572/115 406/537/156 405/539/115 +f 429/586/116 414/552/151 413/555/116 +f 422/570/156 407/534/155 406/537/156 +f 430/583/151 415/550/150 414/552/151 +f 423/567/155 408/531/154 407/534/155 +f 431/582/150 416/549/149 415/550/150 +f 424/564/154 409/1076/113 408/531/154 +f 417/579/112 402/545/158 401/547/112 +f 432/581/149 401/547/112 416/549/149 +f 446/1181/156 461/585/115 445/1182/115 +f 439/1183/150 454/569/151 438/1184/151 +f 447/1185/155 462/1080/156 446/1181/156 +f 440/1186/149 455/1078/150 439/1183/150 +f 448/1187/154 463/584/155 447/1185/155 +f 441/1188/112 456/568/149 440/1186/149 +f 434/1189/153 449/578/113 433/1190/113 +f 433/1190/113 464/580/154 448/1187/154 +f 442/1191/158 457/1077/112 441/1192/112 +f 435/1193/128 450/576/153 434/1189/153 +f 443/1194/129 458/562/158 442/1191/158 +f 436/1195/152 451/1079/128 435/1193/128 +f 444/1196/157 459/588/129 443/1194/129 +f 437/1197/116 452/575/152 436/1195/152 +f 445/1182/115 460/1081/157 444/1196/157 +f 438/1184/151 453/571/116 437/1197/116 +f 584/1198/150 591/1199/116 583/1200/116 +f 582/1201/128 589/1202/113 581/1203/113 +f 580/1204/155 587/1205/115 579/1206/115 +f 578/1207/129 585/1208/112 577/1209/112 +f 577/1209/112 592/1210/150 584/1198/150 +f 583/1200/116 590/1211/128 582/1201/128 +f 581/1212/113 588/1213/155 580/1204/155 +f 579/1206/115 586/1214/129 578/1207/129 +f 605/1112/113 598/1215/128 597/1216/113 +f 603/745/115 596/1217/155 595/1218/115 +f 601/736/112 594/1219/129 593/1220/112 +f 608/734/150 593/1220/112 600/1221/150 +f 606/747/128 599/1222/116 598/1215/128 +f 604/749/155 597/1223/113 596/1217/155 +f 602/743/129 595/1218/115 594/1219/129 +f 607/737/116 600/1221/150 599/1222/116 +f 611/744/115 620/1224/155 612/741/155 +f 609/735/112 618/1225/129 610/750/129 +f 616/746/150 617/1226/112 609/735/112 +f 614/738/128 623/1227/116 615/739/116 +f 612/741/155 621/1228/113 613/742/113 +f 610/750/129 619/1229/115 611/744/115 +f 615/739/116 624/1230/150 616/746/150 +f 613/748/113 622/1231/128 614/738/128 +f 627/1232/115 636/1233/159 628/1234/155 +f 625/1235/112 634/1236/160 626/1237/129 +f 632/1238/150 633/1239/161 625/1235/112 +f 630/1240/128 639/1241/162 631/1242/116 +f 628/1234/155 637/1243/163 629/1244/113 +f 626/1237/129 635/1245/164 627/1232/115 +f 631/1242/116 640/1246/165 632/1238/150 +f 629/1247/113 638/1248/166 630/1240/128 +f 639/1241/162 642/1249/167 640/1246/165 +f 636/1233/159 643/1250/168 646/1251/169 +f 634/1236/160 644/1252/170 647/1253/171 +f 640/1246/165 644/1252/170 633/1239/161 +f 638/1248/166 645/1254/172 639/1241/162 +f 635/1245/164 647/1253/171 643/1250/168 +f 637/1255/163 648/1256/173 638/1248/166 +f 637/1243/163 646/1251/169 641/1257/174 +f 649/1258/112 664/1259/150 656/1260/150 +f 655/1261/116 662/1262/128 654/1263/128 +f 653/1264/113 660/1265/155 652/1266/155 +f 651/1267/115 658/1268/129 650/1269/129 +f 656/1260/150 663/1270/116 655/1261/116 +f 654/1263/128 661/1271/113 653/1272/113 +f 652/1266/155 659/1273/115 651/1267/115 +f 650/1269/129 657/1274/112 649/1258/112 +f 690/777/153 723/811/128 691/779/128 +f 683/1118/129 716/795/157 684/765/157 +f 691/779/128 724/815/152 692/1121/152 +f 684/765/157 717/798/115 685/767/115 +f 692/1121/152 725/814/116 693/782/116 +f 685/767/115 718/802/156 686/770/156 +f 693/782/116 726/785/151 694/754/151 +f 686/770/156 719/804/155 687/1119/155 +f 694/754/151 727/788/150 695/757/150 +f 687/1119/155 720/803/154 688/772/154 +f 695/757/150 728/790/149 696/759/149 +f 688/772/154 721/806/113 689/774/113 +f 681/761/112 714/794/158 682/763/158 +f 696/759/149 713/792/112 681/761/112 +f 689/1120/113 722/808/153 690/777/153 +f 682/763/158 715/796/129 683/1118/129 +f 770/863/153 803/897/128 771/865/128 +f 763/1126/129 796/881/157 764/851/157 +f 771/865/128 804/901/152 772/1129/152 +f 764/851/157 797/884/115 765/853/115 +f 772/1129/152 805/900/116 773/868/116 +f 765/853/115 798/888/156 766/856/156 +f 773/868/116 806/871/151 774/840/151 +f 766/856/156 799/890/155 767/1127/155 +f 774/840/151 807/874/150 775/843/150 +f 767/1127/155 800/889/154 768/858/154 +f 775/843/150 808/876/149 776/845/149 +f 768/858/154 801/892/113 769/860/113 +f 761/847/112 794/880/158 762/849/158 +f 776/845/149 793/878/112 761/847/112 +f 769/1128/113 802/894/153 770/863/153 +f 762/849/158 795/882/129 763/1126/129 +f 337/503/112 338/475/112 340/477/149 +f 340/477/149 342/479/150 341/500/150 +f 342/479/150 344/481/151 343/498/151 +f 344/481/151 346/483/116 345/496/116 +f 346/483/116 348/484/152 347/526/152 +f 348/484/152 350/486/128 349/524/128 +f 350/486/128 352/488/153 351/522/153 +f 352/488/153 354/490/113 353/520/113 +f 354/1073/113 356/492/154 355/517/154 +f 356/492/154 358/466/155 357/515/155 +f 358/466/155 360/463/156 359/513/156 +f 360/463/156 362/465/115 361/511/115 +f 361/511/115 362/465/115 364/468/157 +f 364/468/157 366/470/129 365/507/129 +f 366/470/129 368/473/158 367/505/158 +f 368/473/158 338/475/112 337/503/112 +f 384/476/154 400/1168/154 399/1165/155 +f 377/493/112 393/1275/112 392/1166/149 +f 370/472/153 386/1170/153 385/1167/113 +f 369/474/113 385/1167/113 400/1168/154 +f 378/489/158 394/1171/158 393/1169/112 +f 371/471/128 387/1172/128 386/1170/153 +f 379/487/129 395/1173/129 394/1171/158 +f 372/469/152 388/1174/152 387/1172/128 +f 380/485/157 396/1175/157 395/1173/129 +f 373/464/116 389/1176/116 388/1174/152 +f 381/482/115 397/1177/115 396/1175/157 +f 374/467/151 390/1178/151 389/1176/116 +f 382/480/156 398/1179/156 397/1177/115 +f 375/495/150 391/1180/150 390/1178/151 +f 383/478/155 399/1165/155 398/1179/156 +f 376/494/149 392/1166/149 391/1180/150 +f 425/561/113 426/563/153 410/560/153 +f 418/577/158 419/574/129 403/542/129 +f 426/563/153 427/589/128 411/559/128 +f 419/574/129 420/573/157 404/540/157 +f 427/589/128 428/587/152 412/556/152 +f 420/573/157 421/572/115 405/539/115 +f 428/587/152 429/586/116 413/555/116 +f 421/572/115 422/570/156 406/537/156 +f 429/586/116 430/583/151 414/552/151 +f 422/570/156 423/567/155 407/534/155 +f 430/583/151 431/582/150 415/550/150 +f 423/567/155 424/564/154 408/531/154 +f 431/582/150 432/581/149 416/549/149 +f 424/564/154 425/566/113 409/1076/113 +f 417/579/112 418/577/158 402/545/158 +f 432/581/149 417/579/112 401/547/112 +f 446/1181/156 462/1080/156 461/585/115 +f 439/1183/150 455/1078/150 454/569/151 +f 447/1185/155 463/584/155 462/1080/156 +f 440/1186/149 456/568/149 455/1078/150 +f 448/1187/154 464/580/154 463/584/155 +f 441/1188/112 457/565/112 456/568/149 +f 434/1189/153 450/576/153 449/578/113 +f 433/1190/113 449/578/113 464/580/154 +f 442/1191/158 458/562/158 457/1077/112 +f 435/1193/128 451/1079/128 450/576/153 +f 443/1194/129 459/588/129 458/562/158 +f 436/1195/152 452/575/152 451/1079/128 +f 444/1196/157 460/1081/157 459/588/129 +f 437/1197/116 453/571/116 452/575/152 +f 445/1182/115 461/585/115 460/1081/157 +f 438/1184/151 454/569/151 453/571/116 +f 584/1198/150 592/1210/150 591/1199/116 +f 582/1201/128 590/1211/128 589/1202/113 +f 580/1204/155 588/1213/155 587/1205/115 +f 578/1207/129 586/1214/129 585/1208/112 +f 577/1209/112 585/1208/112 592/1210/150 +f 583/1200/116 591/1199/116 590/1211/128 +f 581/1212/113 589/1276/113 588/1213/155 +f 579/1206/115 587/1205/115 586/1214/129 +f 605/1112/113 606/747/128 598/1215/128 +f 603/745/115 604/749/155 596/1217/155 +f 601/736/112 602/743/129 594/1219/129 +f 608/734/150 601/736/112 593/1220/112 +f 606/747/128 607/737/116 599/1222/116 +f 604/749/155 605/740/113 597/1223/113 +f 602/743/129 603/745/115 595/1218/115 +f 607/737/116 608/734/150 600/1221/150 +f 611/744/115 619/1229/115 620/1224/155 +f 609/735/112 617/1226/112 618/1225/129 +f 616/746/150 624/1230/150 617/1226/112 +f 614/738/128 622/1231/128 623/1227/116 +f 612/741/155 620/1224/155 621/1228/113 +f 610/750/129 618/1225/129 619/1229/115 +f 615/739/116 623/1227/116 624/1230/150 +f 613/748/113 621/1277/113 622/1231/128 +f 627/1232/115 635/1245/164 636/1233/159 +f 625/1235/112 633/1239/161 634/1236/160 +f 632/1238/150 640/1246/165 633/1239/161 +f 630/1240/128 638/1248/166 639/1241/162 +f 628/1234/155 636/1233/159 637/1243/163 +f 626/1237/129 634/1236/160 635/1245/164 +f 631/1242/116 639/1241/162 640/1246/165 +f 629/1247/113 637/1255/163 638/1248/166 +f 639/1241/162 645/1254/172 642/1249/167 +f 636/1233/159 635/1245/164 643/1250/168 +f 634/1236/160 633/1239/161 644/1252/170 +f 640/1246/165 642/1249/167 644/1252/170 +f 638/1248/166 648/1256/173 645/1254/172 +f 635/1245/164 634/1236/160 647/1253/171 +f 637/1255/163 641/1278/174 648/1256/173 +f 637/1243/163 636/1233/159 646/1251/169 +f 649/1258/112 657/1274/112 664/1259/150 +f 655/1261/116 663/1270/116 662/1262/128 +f 653/1264/113 661/1279/113 660/1265/155 +f 651/1267/115 659/1273/115 658/1268/129 +f 656/1260/150 664/1259/150 663/1270/116 +f 654/1263/128 662/1262/128 661/1271/113 +f 652/1266/155 660/1265/155 659/1273/115 +f 650/1269/129 658/1268/129 657/1274/112 +f 690/777/153 722/808/153 723/811/128 +f 683/1118/129 715/796/129 716/795/157 +f 691/779/128 723/811/128 724/815/152 +f 684/765/157 716/795/157 717/798/115 +f 692/1121/152 724/815/152 725/814/116 +f 685/767/115 717/798/115 718/802/156 +f 693/782/116 725/814/116 726/785/151 +f 686/770/156 718/802/156 719/804/155 +f 694/754/151 726/785/151 727/788/150 +f 687/1119/155 719/804/155 720/803/154 +f 695/757/150 727/788/150 728/790/149 +f 688/772/154 720/803/154 721/806/113 +f 681/761/112 713/792/112 714/794/158 +f 696/759/149 728/790/149 713/792/112 +f 689/1120/113 721/809/113 722/808/153 +f 682/763/158 714/794/158 715/796/129 +f 770/863/153 802/894/153 803/897/128 +f 763/1126/129 795/882/129 796/881/157 +f 771/865/128 803/897/128 804/901/152 +f 764/851/157 796/881/157 797/884/115 +f 772/1129/152 804/901/152 805/900/116 +f 765/853/115 797/884/115 798/888/156 +f 773/868/116 805/900/116 806/871/151 +f 766/856/156 798/888/156 799/890/155 +f 774/840/151 806/871/151 807/874/150 +f 767/1127/155 799/890/155 800/889/154 +f 775/843/150 807/874/150 808/876/149 +f 768/858/154 800/889/154 801/892/113 +f 761/847/112 793/878/112 794/880/158 +f 776/845/149 808/876/149 793/878/112 +f 769/1128/113 801/895/113 802/894/153 +f 762/849/158 794/880/158 795/882/129 diff --git a/src/main/resources/assets/hbm/models/weapons/pepperbox.obj b/src/main/resources/assets/hbm/models/weapons/pepperbox.obj new file mode 100644 index 000000000..5682c46c4 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/pepperbox.obj @@ -0,0 +1,3740 @@ +# Blender v2.79 (sub 0) OBJ File: 'pepperbox.blend' +# www.blender.org +o Cylinder +v 0.000000 0.125000 7.000000 +v -0.088388 0.088388 7.000000 +v -0.125000 -0.000000 7.000000 +v -0.088388 -0.088388 7.000000 +v 0.000000 -0.125000 7.000000 +v 0.088388 -0.088388 7.000000 +v 0.125000 0.000000 7.000000 +v 0.088388 0.088388 7.000000 +v 0.000000 0.687500 7.000000 +v -0.132583 0.632583 7.000000 +v -0.187500 0.500000 7.000000 +v -0.132583 0.367417 7.000000 +v 0.000000 0.312500 7.000000 +v 0.132583 0.367418 7.000000 +v 0.187500 0.500000 7.000000 +v 0.132583 0.632582 7.000000 +v 0.000000 -0.687500 7.000000 +v 0.132583 -0.632583 7.000000 +v 0.187500 -0.500000 7.000000 +v 0.132583 -0.367417 7.000000 +v 0.000000 -0.312500 7.000000 +v -0.132583 -0.367418 7.000000 +v -0.187500 -0.500000 7.000000 +v -0.132583 -0.632582 7.000000 +v 0.595392 0.343750 7.000000 +v 0.481541 0.431111 7.000000 +v 0.339263 0.412380 7.000000 +v 0.251902 0.298529 7.000000 +v 0.270633 0.156250 7.000000 +v 0.384484 0.068889 7.000000 +v 0.526763 0.087620 7.000000 +v 0.614124 0.201471 7.000000 +v -0.595392 -0.343750 7.000000 +v -0.481541 -0.431111 7.000000 +v -0.339263 -0.412380 7.000000 +v -0.251902 -0.298529 7.000000 +v -0.270633 -0.156250 7.000000 +v -0.384484 -0.068889 7.000000 +v -0.526763 -0.087620 7.000000 +v -0.614124 -0.201471 7.000000 +v 0.595392 -0.343750 7.000000 +v 0.614124 -0.201472 7.000000 +v 0.526763 -0.087620 7.000000 +v 0.384484 -0.068889 7.000000 +v 0.270633 -0.156250 7.000000 +v 0.251902 -0.298529 7.000000 +v 0.339263 -0.412380 7.000000 +v 0.481541 -0.431111 7.000000 +v -0.595392 0.343750 7.000000 +v -0.614124 0.201472 7.000000 +v -0.526763 0.087620 7.000000 +v -0.384484 0.068889 7.000000 +v -0.270633 0.156250 7.000000 +v -0.251902 0.298529 7.000000 +v -0.339262 0.412380 7.000000 +v -0.481541 0.431111 7.000000 +v -0.088388 0.088388 7.062500 +v 0.000000 0.125000 7.062500 +v -0.125000 -0.000000 7.062500 +v -0.088388 -0.088388 7.062500 +v 0.000000 -0.125000 7.062500 +v 0.088388 -0.088388 7.062500 +v 0.125000 -0.000000 7.062500 +v 0.088388 0.088388 7.062500 +v -0.187500 -0.812500 7.000000 +v 0.187500 -0.812500 7.000000 +v -0.187500 0.812500 7.000000 +v 0.187500 0.812500 7.000000 +v -0.797396 -0.243870 7.000000 +v -0.609896 -0.568630 7.000000 +v 0.609896 0.568630 7.000000 +v 0.797396 0.243870 7.000000 +v -0.609896 0.568630 7.000000 +v -0.797396 0.243870 7.000000 +v 0.797396 -0.243870 7.000000 +v 0.609896 -0.568630 7.000000 +v -0.452003 -0.532892 7.000000 +v -0.235497 -0.657892 7.000000 +v 0.235497 0.657892 7.000000 +v 0.452003 0.532892 7.000000 +v -0.687500 0.125000 7.000000 +v -0.687500 -0.125000 7.000000 +v 0.687500 0.125000 7.000000 +v 0.687500 -0.125000 7.000000 +v -0.235497 0.657892 7.000000 +v -0.452003 0.532892 7.000000 +v 0.452003 -0.532892 7.000000 +v 0.235497 -0.657892 7.000000 +v -0.187500 -0.812500 0.000000 +v 0.187500 -0.812500 0.000000 +v -0.187500 0.812500 0.000000 +v 0.187500 0.812500 0.000000 +v -0.797396 -0.243870 0.000000 +v -0.609896 -0.568630 0.000000 +v 0.609896 0.568630 0.000000 +v 0.797396 0.243870 0.000000 +v -0.609896 0.568630 0.000000 +v -0.797396 0.243870 0.000000 +v 0.797396 -0.243870 0.000000 +v 0.609896 -0.568630 0.000000 +v -0.452003 -0.532892 0.000000 +v -0.235497 -0.657892 0.000000 +v 0.235497 0.657892 0.000000 +v 0.452003 0.532892 0.000000 +v -0.687500 0.125000 0.000000 +v -0.687500 -0.125000 0.000000 +v 0.687500 0.125000 0.000000 +v 0.687500 -0.125000 0.000000 +v -0.235497 0.657892 0.000000 +v -0.452003 0.532892 0.000000 +v 0.452003 -0.532892 0.000000 +v 0.235497 -0.657892 0.000000 +v 0.000000 0.687500 6.000000 +v -0.132583 0.632583 6.000000 +v -0.187500 0.500000 6.000000 +v -0.132583 0.367417 6.000000 +v 0.000000 0.312500 6.000000 +v 0.132583 0.367418 6.000000 +v 0.187500 0.500000 6.000000 +v 0.132583 0.632582 6.000000 +v 0.000000 -0.687500 6.000000 +v 0.132583 -0.632583 6.000000 +v 0.187500 -0.500000 6.000000 +v 0.132583 -0.367417 6.000000 +v 0.000000 -0.312500 6.000000 +v -0.132583 -0.367418 6.000000 +v -0.187500 -0.500000 6.000000 +v -0.132583 -0.632582 6.000000 +v 0.595392 0.343750 6.000000 +v 0.481541 0.431111 6.000000 +v 0.339263 0.412380 6.000000 +v 0.251902 0.298529 6.000000 +v 0.270633 0.156250 6.000000 +v 0.384484 0.068889 6.000000 +v 0.526763 0.087620 6.000000 +v 0.614124 0.201471 6.000000 +v -0.595392 -0.343750 6.000000 +v -0.481541 -0.431111 6.000000 +v -0.339263 -0.412380 6.000000 +v -0.251902 -0.298529 6.000000 +v -0.270633 -0.156250 6.000000 +v -0.384484 -0.068889 6.000000 +v -0.526763 -0.087620 6.000000 +v -0.614124 -0.201471 6.000000 +v 0.595392 -0.343750 6.000000 +v 0.614124 -0.201472 6.000000 +v 0.526763 -0.087620 6.000000 +v 0.384484 -0.068889 6.000000 +v 0.270633 -0.156250 6.000000 +v 0.251902 -0.298529 6.000000 +v 0.339263 -0.412380 6.000000 +v 0.481541 -0.431111 6.000000 +v -0.595392 0.343750 6.000000 +v -0.614124 0.201472 6.000000 +v -0.526763 0.087620 6.000000 +v -0.384484 0.068889 6.000000 +v -0.270633 0.156250 6.000000 +v -0.251902 0.298529 6.000000 +v -0.339262 0.412380 6.000000 +v -0.481541 0.431111 6.000000 +vt 0.241282 0.246079 +vt 0.233209 0.265596 +vt 0.225136 0.246079 +vt 0.660448 0.437693 +vt 0.664133 0.453126 +vt 0.660448 0.468558 +vt 0.215016 0.297589 +vt 0.209423 0.257024 +vt 0.215449 0.269500 +vt 0.238802 0.328051 +vt 0.227616 0.328051 +vt 0.233209 0.312437 +vt 0.256994 0.257024 +vt 0.251401 0.297589 +vt 0.250969 0.269500 +vt 0.251401 0.155536 +vt 0.256994 0.196101 +vt 0.250969 0.183625 +vt 0.227616 0.125074 +vt 0.238802 0.125074 +vt 0.233209 0.140688 +vt 0.209423 0.196101 +vt 0.215016 0.155536 +vt 0.215449 0.183625 +vt 0.212702 0.242176 +vt 0.212702 0.210949 +vt 0.217496 0.215618 +vt 0.227616 0.289017 +vt 0.219726 0.293125 +vt 0.223089 0.278072 +vt 0.246692 0.293125 +vt 0.240234 0.308739 +vt 0.238802 0.289017 +vt 0.253716 0.210949 +vt 0.253716 0.242176 +vt 0.248922 0.237507 +vt 0.238802 0.164108 +vt 0.246692 0.160000 +vt 0.243329 0.175053 +vt 0.219726 0.160000 +vt 0.226184 0.144386 +vt 0.227616 0.164108 +vt 0.221740 0.235167 +vt 0.217496 0.237507 +vt 0.225136 0.207046 +vt 0.221740 0.217958 +vt 0.229254 0.272456 +vt 0.225695 0.263851 +vt 0.237164 0.272456 +vt 0.243329 0.278072 +vt 0.240723 0.263851 +vt 0.244678 0.235167 +vt 0.248922 0.215618 +vt 0.244678 0.217958 +vt 0.240723 0.189274 +vt 0.237164 0.180669 +vt 0.241282 0.207046 +vt 0.233209 0.187529 +vt 0.225695 0.189274 +vt 0.223089 0.175053 +vt 0.229254 0.180669 +vt 0.000000 0.625000 +vt 0.208955 0.671875 +vt 0.000000 0.671875 +vt 0.000000 0.406250 +vt 0.208955 0.453125 +vt 0.000000 0.453125 +vt 0.000000 0.187500 +vt 0.208955 0.234375 +vt 0.000000 0.234375 +vt 0.000000 0.515625 +vt 0.208955 0.562500 +vt 0.000000 0.562500 +vt 0.000000 0.296875 +vt 0.208955 0.343750 +vt 0.000000 0.343750 +vt 0.000000 0.734375 +vt 0.208955 0.781250 +vt 0.000000 0.781250 +vt 0.249994 0.351563 +vt 0.248356 0.368116 +vt 0.244403 0.374973 +vt 0.249994 0.351562 +vt 0.248356 0.368116 +vt 0.244403 0.374973 +vt 0.244403 0.328152 +vt 0.249994 0.351562 +vt 0.244403 0.374973 +vt 0.249994 0.351563 +vt 0.248356 0.368116 +vt 0.244403 0.374973 +vt 0.249994 0.351562 +vt 0.248356 0.368116 +vt 0.244403 0.374973 +vt 0.244403 0.328152 +vt 0.249994 0.351562 +vt 0.244403 0.374973 +vt 0.657842 0.464038 +vt 0.656762 0.453126 +vt 0.657842 0.442213 +vt 0.663054 0.442213 +vt 0.663054 0.464038 +vt 0.214890 0.251728 +vt 0.218845 0.280412 +vt 0.226184 0.308739 +vt 0.229254 0.305577 +vt 0.237164 0.305577 +vt 0.247573 0.280412 +vt 0.251528 0.251728 +vt 0.251528 0.201397 +vt 0.247573 0.172713 +vt 0.240234 0.144386 +vt 0.237164 0.147548 +vt 0.229254 0.147548 +vt 0.218845 0.172713 +vt 0.214890 0.201397 +vt 0.208955 0.625000 +vt 0.208955 0.406250 +vt 0.208955 0.187500 +vt 0.208955 0.515625 +vt 0.208955 0.296875 +vt 0.208955 0.734375 +vt 0.240450 0.368116 +vt 0.238812 0.351563 +vt 0.240450 0.335009 +vt 0.244403 0.328152 +vt 0.248356 0.335009 +vt 0.240450 0.368116 +vt 0.238812 0.351563 +vt 0.240450 0.335009 +vt 0.244403 0.328152 +vt 0.248356 0.335009 +vt 0.240450 0.368116 +vt 0.238812 0.351562 +vt 0.240450 0.335009 +vt 0.248356 0.335009 +vt 0.248356 0.368116 +vt 0.240450 0.368116 +vt 0.238812 0.351562 +vt 0.240450 0.335009 +vt 0.244403 0.328152 +vt 0.248356 0.335009 +vt 0.240450 0.368116 +vt 0.238812 0.351563 +vt 0.240450 0.335009 +vt 0.244403 0.328152 +vt 0.248356 0.335009 +vt 0.240450 0.368116 +vt 0.238812 0.351562 +vt 0.240450 0.335009 +vt 0.248356 0.335009 +vt 0.248356 0.368116 +vt 0.656716 0.531250 +vt 0.652985 0.515625 +vt 0.656716 0.515625 +vt 0.656716 0.484375 +vt 0.652985 0.468750 +vt 0.656716 0.468750 +vt 0.656716 0.453125 +vt 0.652985 0.437500 +vt 0.656716 0.437500 +vt 0.652985 0.546875 +vt 0.652985 0.531250 +vt 0.652985 0.500000 +vt 0.656716 0.500000 +vt 0.652985 0.484375 +vt 0.652985 0.453125 +vt 0.656716 0.562500 +vt 0.656716 0.546875 +vt 0.000000 0.359375 +vt 0.208955 0.390625 +vt 0.000000 0.390625 +vt 0.000000 0.171875 +vt 0.000000 0.140625 +vt 0.208955 0.171875 +vt 0.000000 0.125000 +vt 0.208955 0.140625 +vt 0.000000 0.468750 +vt 0.208955 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.718750 +vt 0.208955 0.468750 +vt 0.208955 0.687500 +vt 0.000000 0.687500 +vt 0.000000 0.250000 +vt 0.208955 0.281250 +vt 0.000000 0.281250 +vt 0.000000 0.609375 +vt 0.208955 0.359375 +vt 0.208955 0.718750 +vt 0.208955 0.578125 +vt 0.000000 0.578125 +vt 0.208955 0.609375 +vt 0.208955 0.250000 +vt 0.208955 0.328125 +vt 0.238806 0.343750 +vt 0.208955 0.343750 +vt 0.208955 0.406250 +vt 0.238806 0.421875 +vt 0.208955 0.421875 +vt 0.208955 0.406250 +vt 0.238806 0.421875 +vt 0.208955 0.421875 +vt 0.208955 0.359375 +vt 0.238806 0.375000 +vt 0.208955 0.375000 +vt 0.208955 0.437500 +vt 0.238806 0.453125 +vt 0.208955 0.453125 +vt 0.208955 0.390625 +vt 0.238806 0.406250 +vt 0.208955 0.390625 +vt 0.238806 0.406250 +vt 0.208955 0.343750 +vt 0.238806 0.359375 +vt 0.208955 0.421875 +vt 0.238806 0.437500 +vt 0.208955 0.375000 +vt 0.238806 0.390625 +vt 0.208955 0.390625 +vt 0.208955 0.328125 +vt 0.238806 0.343750 +vt 0.208955 0.406250 +vt 0.238806 0.421875 +vt 0.208955 0.359375 +vt 0.238806 0.375000 +vt 0.208955 0.437500 +vt 0.238806 0.453125 +vt 0.208955 0.453125 +vt 0.208955 0.390625 +vt 0.238806 0.406250 +vt 0.208955 0.343750 +vt 0.238806 0.359375 +vt 0.208955 0.421875 +vt 0.238806 0.437500 +vt 0.208955 0.375000 +vt 0.238806 0.390625 +vt 0.208955 0.390625 +vt 0.208955 0.328125 +vt 0.238806 0.343750 +vt 0.208955 0.406250 +vt 0.238806 0.421875 +vt 0.208955 0.359375 +vt 0.238806 0.375000 +vt 0.208955 0.437500 +vt 0.238806 0.453125 +vt 0.208955 0.453125 +vt 0.208955 0.390625 +vt 0.238806 0.406250 +vt 0.208955 0.343750 +vt 0.238806 0.359375 +vt 0.208955 0.421875 +vt 0.238806 0.437500 +vt 0.208955 0.375000 +vt 0.238806 0.390625 +vt 0.208955 0.375000 +vt 0.238806 0.390625 +vt 0.208955 0.328125 +vt 0.238806 0.343750 +vt 0.208955 0.406250 +vt 0.238806 0.421875 +vt 0.208955 0.359375 +vt 0.238806 0.375000 +vt 0.208955 0.359375 +vt 0.238806 0.375000 +vt 0.208955 0.437500 +vt 0.238806 0.453125 +vt 0.208955 0.453125 +vt 0.238806 0.406250 +vt 0.208955 0.343750 +vt 0.238806 0.359375 +vt 0.208955 0.343750 +vt 0.238806 0.359375 +vt 0.208955 0.421875 +vt 0.238806 0.437500 +vt 0.208955 0.375000 +vt 0.238806 0.390625 +vt 0.208955 0.328125 +vt 0.238806 0.343750 +vt 0.208955 0.328125 +vt 0.238806 0.343750 +vt 0.208955 0.406250 +vt 0.238806 0.421875 +vt 0.208955 0.359375 +vt 0.238806 0.375000 +vt 0.208955 0.437500 +vt 0.238806 0.453125 +vt 0.208955 0.453125 +vt 0.208955 0.437500 +vt 0.238806 0.453125 +vt 0.208955 0.453125 +vt 0.238806 0.406250 +vt 0.238806 0.359375 +vt 0.238806 0.437500 +vt 0.238806 0.437500 +vt 0.238806 0.390625 +vt 0.652985 0.562500 +vt 0.208955 0.125000 +vt 0.238806 0.328125 +vt 0.238806 0.328125 +vt 0.238806 0.328125 +vt 0.238806 0.328125 +vt 0.238806 0.328125 +vt 0.238806 0.328125 +vn 0.0000 0.0000 1.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.1499 0.9887 0.0000 +vn 0.7813 0.6242 0.0000 +vn 0.1499 -0.9887 0.0000 +vn -0.2208 -0.9753 0.0000 +vn 0.7813 -0.6242 0.0000 +vn 0.9550 -0.2965 0.0000 +vn -0.7813 0.6242 0.0000 +vn -0.1499 0.9887 0.0000 +vn -0.7813 -0.6242 0.0000 +vn -0.9550 -0.2965 0.0000 +vn -0.9550 0.2965 0.0000 +vn 0.2208 -0.9753 0.0000 +vn -0.1499 -0.9887 0.0000 +vn 0.9550 0.2965 0.0000 +vn 0.9312 0.3645 0.0000 +vn 0.9312 -0.3645 0.0000 +vn -0.9312 0.3645 0.0000 +vn -0.7343 0.6788 0.0000 +vn -0.2208 0.9753 0.0000 +vn -0.7343 -0.6788 0.0000 +vn -0.9312 -0.3645 0.0000 +vn 0.7343 -0.6788 0.0000 +vn 0.2208 0.9753 0.0000 +vn 0.7343 0.6788 0.0000 +vn 0.9659 -0.2588 0.0000 +vn 0.2588 -0.9659 0.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.9659 -0.2588 0.0000 +vn 0.2588 0.9659 0.0000 +vn -0.5000 0.8660 0.0000 +vn -0.9659 0.2588 0.0000 +vn 0.9659 0.2588 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.2588 0.9659 0.0000 +vn -0.2588 -0.9659 0.0000 +vn 0.5000 -0.8660 0.0000 +s off +f 29/1/1 13/2/1 53/3/1 +f 61/4/1 63/5/1 58/6/1 +f 73/7/1 74/8/1 49/9/1 +f 68/10/1 67/11/1 9/12/1 +f 72/13/1 71/14/1 25/15/1 +f 76/16/1 75/17/1 41/18/1 +f 65/19/1 66/20/1 17/21/1 +f 69/22/1 70/23/1 33/24/1 +f 81/25/1 82/26/1 39/27/1 +f 11/28/1 86/29/1 55/30/1 +f 80/31/1 79/32/1 15/33/1 +f 84/34/1 83/35/1 31/36/1 +f 19/37/1 87/38/1 47/39/1 +f 77/40/1 78/41/1 23/42/1 +f 39/27/1 52/43/1 51/44/1 +f 37/45/1 52/43/1 38/46/1 +f 12/47/1 55/30/1 54/48/1 +f 12/47/1 53/3/1 13/2/1 +f 14/49/1 27/50/1 15/33/1 +f 14/49/1 29/1/1 28/51/1 +f 30/52/1 43/53/1 31/36/1 +f 29/1/1 44/54/1 30/52/1 +f 19/37/1 46/55/1 20/56/1 +f 20/56/1 45/57/1 21/58/1 +f 23/42/1 36/59/1 35/60/1 +f 21/58/1 36/59/1 22/61/1 +f 69/62/2 94/63/2 70/64/2 +f 68/65/3 91/66/3 67/67/3 +f 76/68/4 99/69/4 75/70/4 +f 73/71/5 98/72/5 74/73/5 +f 72/74/6 95/75/6 71/76/6 +f 65/77/7 90/78/7 66/79/7 +f 135/80/1 136/81/1 129/82/1 +f 151/83/1 152/84/1 145/85/1 +f 125/86/1 127/87/1 121/88/1 +f 143/89/1 144/90/1 137/91/1 +f 159/92/1 160/93/1 153/94/1 +f 117/95/1 119/96/1 113/97/1 +f 53/3/1 37/45/1 29/1/1 +f 37/45/1 21/58/1 29/1/1 +f 21/58/1 45/57/1 29/1/1 +f 58/6/1 57/98/1 59/99/1 +f 59/99/1 60/100/1 61/4/1 +f 61/4/1 62/101/1 63/5/1 +f 63/5/1 64/102/1 58/6/1 +f 58/6/1 59/99/1 61/4/1 +f 81/25/1 50/103/1 74/8/1 +f 50/103/1 49/9/1 74/8/1 +f 49/9/1 56/104/1 73/7/1 +f 56/104/1 86/29/1 73/7/1 +f 85/105/1 10/106/1 67/11/1 +f 10/106/1 9/12/1 67/11/1 +f 9/12/1 16/107/1 68/10/1 +f 16/107/1 79/32/1 68/10/1 +f 80/31/1 26/108/1 71/14/1 +f 26/108/1 25/15/1 71/14/1 +f 25/15/1 32/109/1 72/13/1 +f 32/109/1 83/35/1 72/13/1 +f 84/34/1 42/110/1 75/17/1 +f 42/110/1 41/18/1 75/17/1 +f 41/18/1 48/111/1 76/16/1 +f 48/111/1 87/38/1 76/16/1 +f 88/112/1 18/113/1 66/20/1 +f 18/113/1 17/21/1 66/20/1 +f 17/21/1 24/114/1 65/19/1 +f 24/114/1 78/41/1 65/19/1 +f 77/40/1 34/115/1 70/23/1 +f 34/115/1 33/24/1 70/23/1 +f 33/24/1 40/116/1 69/22/1 +f 40/116/1 82/26/1 69/22/1 +f 82/26/1 40/116/1 39/27/1 +f 39/27/1 51/44/1 81/25/1 +f 51/44/1 50/103/1 81/25/1 +f 11/28/1 10/106/1 85/105/1 +f 85/105/1 86/29/1 11/28/1 +f 86/29/1 56/104/1 55/30/1 +f 79/32/1 16/107/1 15/33/1 +f 15/33/1 27/50/1 80/31/1 +f 27/50/1 26/108/1 80/31/1 +f 83/35/1 32/109/1 31/36/1 +f 31/36/1 43/53/1 84/34/1 +f 43/53/1 42/110/1 84/34/1 +f 19/37/1 18/113/1 88/112/1 +f 88/112/1 87/38/1 19/37/1 +f 87/38/1 48/111/1 47/39/1 +f 78/41/1 24/114/1 23/42/1 +f 23/42/1 35/60/1 77/40/1 +f 35/60/1 34/115/1 77/40/1 +f 39/27/1 38/46/1 52/43/1 +f 37/45/1 53/3/1 52/43/1 +f 12/47/1 11/28/1 55/30/1 +f 12/47/1 54/48/1 53/3/1 +f 14/49/1 28/51/1 27/50/1 +f 14/49/1 13/2/1 29/1/1 +f 30/52/1 44/54/1 43/53/1 +f 29/1/1 45/57/1 44/54/1 +f 19/37/1 47/39/1 46/55/1 +f 20/56/1 46/55/1 45/57/1 +f 23/42/1 22/61/1 36/59/1 +f 21/58/1 37/45/1 36/59/1 +f 69/62/2 93/117/2 94/63/2 +f 68/65/3 92/118/3 91/66/3 +f 76/68/4 100/119/4 99/69/4 +f 73/71/5 97/120/5 98/72/5 +f 72/74/6 96/121/6 95/75/6 +f 65/77/7 89/122/7 90/78/7 +f 129/82/1 130/123/1 131/124/1 +f 131/124/1 132/125/1 129/82/1 +f 132/125/1 133/126/1 129/82/1 +f 133/126/1 134/127/1 129/82/1 +f 134/127/1 135/80/1 129/82/1 +f 145/85/1 146/128/1 147/129/1 +f 147/129/1 148/130/1 145/85/1 +f 148/130/1 149/131/1 145/85/1 +f 149/131/1 150/132/1 145/85/1 +f 150/132/1 151/83/1 145/85/1 +f 121/88/1 122/133/1 123/134/1 +f 123/134/1 124/135/1 125/86/1 +f 125/86/1 126/136/1 127/87/1 +f 127/87/1 128/137/1 121/88/1 +f 121/88/1 123/134/1 125/86/1 +f 137/91/1 138/138/1 139/139/1 +f 139/139/1 140/140/1 137/91/1 +f 140/140/1 141/141/1 137/91/1 +f 141/141/1 142/142/1 137/91/1 +f 142/142/1 143/89/1 137/91/1 +f 153/94/1 154/143/1 155/144/1 +f 155/144/1 156/145/1 153/94/1 +f 156/145/1 157/146/1 153/94/1 +f 157/146/1 158/147/1 153/94/1 +f 158/147/1 159/92/1 153/94/1 +f 113/97/1 114/148/1 115/149/1 +f 115/149/1 116/150/1 117/95/1 +f 117/95/1 118/151/1 119/96/1 +f 119/96/1 120/152/1 113/97/1 +f 113/97/1 115/149/1 117/95/1 +s 1 +f 3/153/8 57/154/9 2/155/9 +f 8/156/10 63/157/11 7/158/11 +f 6/159/12 61/160/7 5/161/7 +f 3/153/8 60/162/13 59/163/8 +f 2/155/9 58/164/3 1/165/3 +f 1/165/3 64/166/10 8/156/10 +f 7/158/11 62/167/12 6/159/12 +f 5/168/7 60/162/13 4/169/13 +f 80/170/14 103/171/15 79/172/15 +f 87/173/16 100/119/17 76/68/17 +f 88/174/18 111/175/16 87/173/16 +f 66/176/19 112/177/18 88/174/18 +f 85/178/20 110/179/21 86/180/21 +f 78/181/22 89/122/23 65/77/23 +f 67/67/24 109/182/20 85/178/20 +f 70/64/25 101/183/26 77/184/26 +f 79/172/15 92/118/27 68/65/27 +f 84/185/28 107/186/29 83/187/29 +f 82/188/30 93/117/31 69/62/31 +f 71/76/32 104/189/14 80/170/14 +f 77/184/26 102/190/22 78/181/22 +f 74/73/33 105/191/34 81/192/34 +f 83/187/29 96/121/35 72/74/35 +f 81/192/34 106/193/30 82/188/30 +f 86/180/21 97/120/36 73/71/36 +f 75/70/37 108/194/28 84/185/28 +f 29/195/6 132/196/38 28/197/38 +f 56/198/39 159/199/40 55/200/40 +f 16/201/13 119/202/8 15/203/8 +f 43/204/40 146/205/41 42/206/41 +f 30/207/42 133/208/6 29/209/6 +f 49/210/4 160/211/39 56/198/39 +f 9/212/7 120/213/13 16/201/13 +f 44/214/39 147/215/40 43/204/40 +f 31/216/43 134/217/42 30/207/42 +f 18/218/9 121/219/3 17/220/3 +f 45/221/4 148/222/39 44/214/39 +f 32/223/44 135/224/43 31/216/43 +f 19/225/8 122/226/9 18/218/9 +f 46/227/45 149/228/4 45/229/4 +f 25/230/2 136/231/44 32/223/44 +f 20/232/13 123/233/8 19/225/8 +f 47/234/46 150/235/45 46/227/45 +f 34/236/42 137/237/6 33/238/6 +f 21/239/7 124/240/13 20/232/13 +f 48/241/47 151/242/46 47/234/46 +f 35/243/43 138/244/42 34/236/42 +f 22/245/12 125/246/7 21/247/7 +f 41/248/5 152/249/47 48/241/47 +f 36/250/44 139/251/43 35/243/43 +f 23/252/11 126/253/12 22/245/12 +f 50/254/45 153/255/4 49/210/4 +f 10/256/12 113/257/7 9/212/7 +f 37/258/2 140/259/44 36/250/44 +f 24/260/10 127/261/11 23/252/11 +f 51/262/46 154/263/45 50/254/45 +f 11/264/11 114/265/12 10/256/12 +f 38/266/48 141/267/2 37/268/2 +f 17/220/3 128/269/10 24/260/10 +f 52/270/47 155/271/46 51/262/46 +f 12/272/10 115/273/11 11/264/11 +f 39/274/49 142/275/48 38/266/48 +f 26/276/48 129/277/2 25/230/2 +f 53/278/5 156/279/47 52/270/47 +f 13/280/3 116/281/10 12/272/10 +f 40/282/38 143/283/49 39/274/49 +f 27/284/49 130/285/48 26/276/48 +f 54/286/41 157/287/5 53/288/5 +f 14/289/9 117/290/3 13/291/3 +f 33/238/6 144/292/38 40/282/38 +f 28/197/38 131/293/49 27/284/49 +f 55/200/40 158/294/41 54/286/41 +f 15/203/8 118/295/9 14/289/9 +f 42/206/41 145/296/5 41/248/5 +f 3/153/8 59/163/8 57/154/9 +f 8/156/10 64/166/10 63/157/11 +f 6/159/12 62/167/12 61/160/7 +f 3/153/8 4/169/13 60/162/13 +f 2/155/9 57/154/9 58/164/3 +f 1/165/3 58/164/3 64/166/10 +f 7/158/11 63/157/11 62/167/12 +f 5/168/7 61/297/7 60/162/13 +f 80/170/14 104/189/14 103/171/15 +f 87/173/16 111/175/16 100/119/17 +f 88/174/18 112/177/18 111/175/16 +f 66/176/19 90/298/19 112/177/18 +f 85/178/20 109/182/20 110/179/21 +f 78/181/22 102/190/22 89/122/23 +f 67/67/24 91/66/24 109/182/20 +f 70/64/25 94/63/25 101/183/26 +f 79/172/15 103/171/15 92/118/27 +f 84/185/28 108/194/28 107/186/29 +f 82/188/30 106/193/30 93/117/31 +f 71/76/32 95/75/32 104/189/14 +f 77/184/26 101/183/26 102/190/22 +f 74/73/33 98/72/33 105/191/34 +f 83/187/29 107/186/29 96/121/35 +f 81/192/34 105/191/34 106/193/30 +f 86/180/21 110/179/21 97/120/36 +f 75/70/37 99/69/37 108/194/28 +f 29/195/6 133/299/6 132/196/38 +f 56/198/39 160/211/39 159/199/40 +f 16/201/13 120/213/13 119/202/8 +f 43/204/40 147/215/40 146/205/41 +f 30/207/42 134/217/42 133/208/6 +f 49/210/4 153/255/4 160/211/39 +f 9/212/7 113/257/7 120/213/13 +f 44/214/39 148/222/39 147/215/40 +f 31/216/43 135/224/43 134/217/42 +f 18/218/9 122/226/9 121/219/3 +f 45/221/4 149/300/4 148/222/39 +f 32/223/44 136/231/44 135/224/43 +f 19/225/8 123/233/8 122/226/9 +f 46/227/45 150/235/45 149/228/4 +f 25/230/2 129/277/2 136/231/44 +f 20/232/13 124/240/13 123/233/8 +f 47/234/46 151/242/46 150/235/45 +f 34/236/42 138/244/42 137/237/6 +f 21/239/7 125/301/7 124/240/13 +f 48/241/47 152/249/47 151/242/46 +f 35/243/43 139/251/43 138/244/42 +f 22/245/12 126/253/12 125/246/7 +f 41/248/5 145/296/5 152/249/47 +f 36/250/44 140/259/44 139/251/43 +f 23/252/11 127/261/11 126/253/12 +f 50/254/45 154/263/45 153/255/4 +f 10/256/12 114/265/12 113/257/7 +f 37/258/2 141/302/2 140/259/44 +f 24/260/10 128/269/10 127/261/11 +f 51/262/46 155/271/46 154/263/45 +f 11/264/11 115/273/11 114/265/12 +f 38/266/48 142/275/48 141/267/2 +f 17/220/3 121/219/3 128/269/10 +f 52/270/47 156/279/47 155/271/46 +f 12/272/10 116/281/10 115/273/11 +f 39/274/49 143/283/49 142/275/48 +f 26/276/48 130/285/48 129/277/2 +f 53/278/5 157/303/5 156/279/47 +f 13/280/3 117/304/3 116/281/10 +f 40/282/38 144/292/38 143/283/49 +f 27/284/49 131/293/49 130/285/48 +f 54/286/41 158/294/41 157/287/5 +f 14/289/9 118/295/9 117/290/3 +f 33/238/6 137/237/6 144/292/38 +f 28/197/38 132/196/38 131/293/49 +f 55/200/40 159/199/40 158/294/41 +f 15/203/8 119/202/8 118/295/9 +f 42/206/41 146/205/41 145/296/5 +o Speedloader +v 0.000000 0.875000 8.062500 +v -0.437500 0.757773 8.062500 +v -0.757772 0.437500 8.062500 +v -0.875000 -0.000000 8.062500 +v -0.757772 -0.437500 8.062500 +v -0.437500 -0.757773 8.062500 +v 0.000000 -0.875000 8.062500 +v 0.437500 -0.757773 8.062500 +v 0.757772 -0.437500 8.062500 +v 0.875000 -0.000000 8.062500 +v 0.757772 0.437500 8.062500 +v 0.437500 0.757773 8.062500 +v 0.000000 0.875000 8.312500 +v -0.437500 0.757773 8.312500 +v -0.757772 0.437500 8.312500 +v -0.875000 -0.000000 8.312500 +v -0.757772 -0.437500 8.312500 +v -0.437500 -0.757773 8.312500 +v 0.000000 -0.875000 8.312500 +v 0.437500 -0.757773 8.312500 +v 0.757772 -0.437500 8.312500 +v 0.875000 -0.000000 8.312500 +v 0.757772 0.437500 8.312500 +v 0.437500 0.757773 8.312500 +v 0.187500 -0.500000 8.000000 +v -0.187500 -0.500000 8.000000 +v 0.000000 -0.312500 8.000000 +v 0.000000 -0.687500 8.000000 +v -0.132583 -0.367418 8.000000 +v 0.132583 -0.632583 8.000000 +v -0.132583 -0.632583 8.000000 +v 0.132583 -0.367418 8.000000 +v 0.000000 -0.750000 8.000000 +v 0.176776 -0.676777 8.000000 +v 0.250000 -0.500000 8.000000 +v 0.176777 -0.323224 8.000000 +v 0.000000 -0.250000 8.000000 +v -0.176777 -0.323224 8.000000 +v -0.250000 -0.500000 8.000000 +v -0.176777 -0.676777 8.000000 +v 0.000000 -0.312500 8.062500 +v -0.132583 -0.367418 8.062500 +v 0.132583 -0.367418 8.062500 +v 0.187500 -0.500000 8.062500 +v 0.132583 -0.632583 8.062500 +v 0.000000 -0.687500 8.062500 +v -0.132583 -0.632583 8.062500 +v -0.187500 -0.500000 8.062500 +v 0.176776 -0.676777 8.062500 +v 0.000000 -0.750000 8.062500 +v 0.250000 -0.500000 8.062500 +v 0.176777 -0.323224 8.062500 +v 0.000000 -0.250000 8.062500 +v -0.176777 -0.323224 8.062500 +v -0.250000 -0.500000 8.062500 +v -0.176777 -0.676777 8.062500 +v 0.000000 0.250000 8.312500 +v -0.125000 0.216506 8.312500 +v -0.216506 0.125000 8.312500 +v -0.250000 0.000000 8.312500 +v -0.216506 -0.125000 8.312500 +v -0.125000 -0.216506 8.312500 +v 0.000000 -0.250000 8.312500 +v 0.125000 -0.216506 8.312500 +v 0.216506 -0.125000 8.312500 +v 0.250000 0.000000 8.312500 +v 0.216506 0.125000 8.312500 +v 0.125000 0.216506 8.312500 +v 0.000000 0.250000 8.812500 +v -0.125000 0.216506 8.812500 +v -0.216506 0.125000 8.812500 +v -0.250000 0.000000 8.812500 +v -0.216506 -0.125000 8.812500 +v -0.125000 -0.216506 8.812500 +v 0.000000 -0.250000 8.812500 +v 0.125000 -0.216506 8.812500 +v 0.216506 -0.125000 8.812500 +v 0.250000 0.000000 8.812500 +v 0.216506 0.125000 8.812500 +v 0.125000 0.216506 8.812500 +v 0.000000 0.625000 8.812500 +v -0.312500 0.541265 8.812500 +v -0.541266 0.312500 8.812500 +v -0.625000 0.000000 8.812500 +v -0.541266 -0.312500 8.812500 +v -0.312500 -0.541265 8.812500 +v 0.000000 -0.625000 8.812500 +v 0.312500 -0.541265 8.812500 +v 0.541265 -0.312500 8.812500 +v 0.625000 0.000000 8.812500 +v 0.541266 0.312500 8.812500 +v 0.312500 0.541265 8.812500 +v 0.000000 0.625000 9.062500 +v -0.312500 0.541265 9.062500 +v -0.541266 0.312500 9.062500 +v -0.625000 0.000000 9.062500 +v -0.541266 -0.312500 9.062500 +v -0.312500 -0.541265 9.062500 +v 0.000000 -0.625000 9.062500 +v 0.312500 -0.541265 9.062500 +v 0.541265 -0.312500 9.062500 +v 0.625000 0.000000 9.062500 +v 0.541266 0.312500 9.062500 +v 0.312500 0.541265 9.062500 +v -0.187500 0.500000 8.000000 +v 0.187500 0.500000 8.000000 +v 0.000000 0.312500 8.000000 +v 0.000000 0.687500 8.000000 +v 0.132583 0.367418 8.000000 +v -0.132583 0.632583 8.000000 +v 0.132583 0.632583 8.000000 +v -0.132583 0.367418 8.000000 +v 0.000000 0.750000 8.000000 +v -0.176776 0.676777 8.000000 +v -0.250000 0.500000 8.000000 +v -0.176777 0.323224 8.000000 +v 0.000000 0.250000 8.000000 +v 0.176777 0.323224 8.000000 +v 0.250000 0.500000 8.000000 +v 0.176777 0.676777 8.000000 +v 0.000000 0.312500 8.062500 +v 0.132583 0.367418 8.062500 +v -0.132583 0.367418 8.062500 +v -0.187500 0.500000 8.062500 +v -0.132583 0.632583 8.062500 +v 0.000000 0.687500 8.062500 +v 0.132583 0.632583 8.062500 +v 0.187500 0.500000 8.062500 +v -0.176776 0.676777 8.062500 +v 0.000000 0.750000 8.062500 +v -0.250000 0.500000 8.062500 +v -0.176777 0.323224 8.062500 +v 0.000000 0.250000 8.062500 +v 0.176777 0.323224 8.062500 +v 0.250000 0.500000 8.062500 +v 0.176777 0.676777 8.062500 +v -0.339263 -0.412380 8.000000 +v -0.526763 -0.087620 8.000000 +v -0.270633 -0.156250 8.000000 +v -0.595393 -0.343750 8.000000 +v -0.384484 -0.068889 8.000000 +v -0.481542 -0.431112 8.000000 +v -0.614124 -0.201472 8.000000 +v -0.251902 -0.298529 8.000000 +v -0.649519 -0.375000 8.000000 +v -0.497718 -0.491482 8.000000 +v -0.308013 -0.466507 8.000000 +v -0.191531 -0.314705 8.000000 +v -0.216507 -0.125000 8.000000 +v -0.368308 -0.008519 8.000000 +v -0.558013 -0.033494 8.000000 +v -0.674495 -0.185295 8.000000 +v -0.270633 -0.156250 8.062500 +v -0.384484 -0.068889 8.062500 +v -0.251902 -0.298529 8.062500 +v -0.339263 -0.412380 8.062500 +v -0.481542 -0.431112 8.062500 +v -0.595393 -0.343750 8.062500 +v -0.614124 -0.201472 8.062500 +v -0.526763 -0.087620 8.062500 +v -0.497718 -0.491482 8.062500 +v -0.649519 -0.375000 8.062500 +v -0.308013 -0.466507 8.062500 +v -0.191531 -0.314705 8.062500 +v -0.216507 -0.125000 8.062500 +v -0.368308 -0.008519 8.062500 +v -0.558013 -0.033494 8.062500 +v -0.674495 -0.185295 8.062500 +v 0.339263 0.412380 8.000000 +v 0.526763 0.087620 8.000000 +v 0.270633 0.156250 8.000000 +v 0.595393 0.343750 8.000000 +v 0.384484 0.068889 8.000000 +v 0.481542 0.431112 8.000000 +v 0.614124 0.201472 8.000000 +v 0.251902 0.298529 8.000000 +v 0.649519 0.375000 8.000000 +v 0.497718 0.491482 8.000000 +v 0.308013 0.466507 8.000000 +v 0.191531 0.314705 8.000000 +v 0.216507 0.125000 8.000000 +v 0.368308 0.008519 8.000000 +v 0.558013 0.033494 8.000000 +v 0.674495 0.185295 8.000000 +v 0.270633 0.156250 8.062500 +v 0.384484 0.068889 8.062500 +v 0.251902 0.298529 8.062500 +v 0.339263 0.412380 8.062500 +v 0.481542 0.431112 8.062500 +v 0.595393 0.343750 8.062500 +v 0.614124 0.201472 8.062500 +v 0.526763 0.087620 8.062500 +v 0.497718 0.491482 8.062500 +v 0.649519 0.375000 8.062500 +v 0.308013 0.466507 8.062500 +v 0.191531 0.314705 8.062500 +v 0.216507 0.125000 8.062500 +v 0.368308 0.008519 8.062500 +v 0.558013 0.033494 8.062500 +v 0.674495 0.185295 8.062500 +v -0.526763 0.087620 8.000000 +v -0.339263 0.412380 8.000000 +v -0.270633 0.156250 8.000000 +v -0.595393 0.343750 8.000000 +v -0.251902 0.298529 8.000000 +v -0.614124 0.201472 8.000000 +v -0.481542 0.431112 8.000000 +v -0.384484 0.068889 8.000000 +v -0.649519 0.375000 8.000000 +v -0.674495 0.185296 8.000000 +v -0.558013 0.033494 8.000000 +v -0.368308 0.008518 8.000000 +v -0.216507 0.125000 8.000000 +v -0.191531 0.314705 8.000000 +v -0.308013 0.466507 8.000000 +v -0.497718 0.491482 8.000000 +v -0.270633 0.156250 8.062500 +v -0.251902 0.298529 8.062500 +v -0.384484 0.068889 8.062500 +v -0.526763 0.087620 8.062500 +v -0.614124 0.201472 8.062500 +v -0.595393 0.343750 8.062500 +v -0.481542 0.431112 8.062500 +v -0.339263 0.412380 8.062500 +v -0.674495 0.185296 8.062500 +v -0.649519 0.375000 8.062500 +v -0.558013 0.033494 8.062500 +v -0.368308 0.008518 8.062500 +v -0.216507 0.125000 8.062500 +v -0.191531 0.314705 8.062500 +v -0.308013 0.466507 8.062500 +v -0.497718 0.491482 8.062500 +v 0.526763 -0.087620 8.000000 +v 0.339263 -0.412380 8.000000 +v 0.270633 -0.156250 8.000000 +v 0.595393 -0.343750 8.000000 +v 0.251902 -0.298529 8.000000 +v 0.614124 -0.201472 8.000000 +v 0.481542 -0.431112 8.000000 +v 0.384484 -0.068889 8.000000 +v 0.649519 -0.375000 8.000000 +v 0.674495 -0.185296 8.000000 +v 0.558013 -0.033494 8.000000 +v 0.368308 -0.008518 8.000000 +v 0.216507 -0.125000 8.000000 +v 0.191531 -0.314705 8.000000 +v 0.308013 -0.466507 8.000000 +v 0.497718 -0.491482 8.000000 +v 0.270633 -0.156250 8.062500 +v 0.251902 -0.298529 8.062500 +v 0.384484 -0.068889 8.062500 +v 0.526763 -0.087620 8.062500 +v 0.614124 -0.201472 8.062500 +v 0.595393 -0.343750 8.062500 +v 0.481542 -0.431112 8.062500 +v 0.339263 -0.412380 8.062500 +v 0.674495 -0.185296 8.062500 +v 0.649519 -0.375000 8.062500 +v 0.558013 -0.033494 8.062500 +v 0.368308 -0.008518 8.062500 +v 0.216507 -0.125000 8.062500 +v 0.191531 -0.314705 8.062500 +v 0.308013 -0.466507 8.062500 +v 0.497718 -0.491482 8.062500 +vt 0.574405 0.179713 +vt 0.619624 0.179713 +vt 0.597015 0.343699 +vt 0.574406 0.507787 +vt 0.574406 0.398463 +vt 0.597015 0.343801 +vt 0.671642 0.484375 +vt 0.667910 0.468750 +vt 0.671642 0.468750 +vt 0.667910 0.500000 +vt 0.667910 0.484375 +vt 0.671642 0.500000 +vt 0.667910 0.515625 +vt 0.671642 0.515625 +vt 0.667910 0.531250 +vt 0.671642 0.546875 +vt 0.671642 0.531250 +vt 0.667910 0.562500 +vt 0.667910 0.546875 +vt 0.671642 0.453125 +vt 0.667910 0.437500 +vt 0.671642 0.437500 +vt 0.667910 0.453125 +vt 0.640568 0.398416 +vt 0.656716 0.281294 +vt 0.672865 0.398416 +vt 0.640568 0.164085 +vt 0.672864 0.164085 +vt 0.656716 0.281206 +vt 0.671642 0.484375 +vt 0.667910 0.468750 +vt 0.671642 0.468750 +vt 0.667910 0.500000 +vt 0.667910 0.484375 +vt 0.671642 0.500000 +vt 0.667910 0.515625 +vt 0.671642 0.515625 +vt 0.667910 0.531250 +vt 0.671642 0.546875 +vt 0.671642 0.531250 +vt 0.667910 0.562500 +vt 0.667910 0.546875 +vt 0.671642 0.453125 +vt 0.667910 0.437500 +vt 0.671642 0.437500 +vt 0.667910 0.453125 +vt 0.671642 0.484375 +vt 0.667910 0.468750 +vt 0.671642 0.468750 +vt 0.667910 0.500000 +vt 0.667910 0.484375 +vt 0.671642 0.500000 +vt 0.667910 0.515625 +vt 0.671642 0.515625 +vt 0.667910 0.531250 +vt 0.671642 0.546875 +vt 0.671642 0.531250 +vt 0.667910 0.562500 +vt 0.667910 0.546875 +vt 0.671642 0.453125 +vt 0.667910 0.437500 +vt 0.671642 0.437500 +vt 0.667910 0.453125 +vt 0.671642 0.484375 +vt 0.667910 0.468750 +vt 0.671642 0.468750 +vt 0.667910 0.500000 +vt 0.667910 0.484375 +vt 0.671642 0.500000 +vt 0.667910 0.515625 +vt 0.671642 0.515625 +vt 0.667910 0.531250 +vt 0.671642 0.546875 +vt 0.671642 0.531250 +vt 0.667910 0.562500 +vt 0.667910 0.546875 +vt 0.671642 0.453125 +vt 0.667910 0.437500 +vt 0.671642 0.437500 +vt 0.667910 0.453125 +vt 0.671642 0.484375 +vt 0.667910 0.468750 +vt 0.671642 0.468750 +vt 0.667910 0.500000 +vt 0.667910 0.484375 +vt 0.671642 0.500000 +vt 0.667910 0.515625 +vt 0.671642 0.515625 +vt 0.667910 0.531250 +vt 0.671642 0.546875 +vt 0.671642 0.531250 +vt 0.667910 0.562500 +vt 0.667910 0.546875 +vt 0.671642 0.453125 +vt 0.667910 0.437500 +vt 0.671642 0.437500 +vt 0.667910 0.453125 +vt 0.671642 0.484375 +vt 0.667910 0.468750 +vt 0.671642 0.468750 +vt 0.667910 0.500000 +vt 0.667910 0.484375 +vt 0.671642 0.500000 +vt 0.667910 0.515625 +vt 0.671642 0.515625 +vt 0.667910 0.531250 +vt 0.671642 0.546875 +vt 0.671642 0.531250 +vt 0.667910 0.562500 +vt 0.667910 0.546875 +vt 0.671642 0.453125 +vt 0.667910 0.437500 +vt 0.671642 0.437500 +vt 0.667910 0.453125 +vt 0.583961 0.329052 +vt 0.574405 0.289037 +vt 0.570908 0.234375 +vt 0.583961 0.139698 +vt 0.597015 0.125051 +vt 0.610068 0.139698 +vt 0.623122 0.234375 +vt 0.619624 0.289037 +vt 0.610068 0.329052 +vt 0.619624 0.507787 +vt 0.610068 0.547802 +vt 0.597015 0.562449 +vt 0.583961 0.547802 +vt 0.570908 0.453125 +vt 0.583961 0.358448 +vt 0.610068 0.358448 +vt 0.619624 0.398463 +vt 0.623122 0.453125 +vt 0.671642 0.562500 +vt 0.666040 0.426995 +vt 0.656716 0.437456 +vt 0.647393 0.426995 +vt 0.638070 0.359375 +vt 0.640568 0.320335 +vt 0.647393 0.291755 +vt 0.666040 0.291755 +vt 0.672865 0.320335 +vt 0.675363 0.359375 +vt 0.647393 0.270745 +vt 0.640568 0.242166 +vt 0.638070 0.203125 +vt 0.647393 0.135505 +vt 0.656716 0.125044 +vt 0.666039 0.135505 +vt 0.675363 0.203125 +vt 0.672864 0.242166 +vt 0.666039 0.270745 +vt 0.671642 0.562500 +vt 0.671642 0.562500 +vt 0.671642 0.562500 +vt 0.671642 0.562500 +vt 0.671642 0.562500 +vt 0.630597 0.187500 +vt 0.623134 0.125000 +vt 0.630597 0.125000 +vt 0.630597 0.750000 +vt 0.623134 0.687500 +vt 0.630597 0.687500 +vt 0.630597 0.437500 +vt 0.623134 0.375000 +vt 0.630597 0.375000 +vt 0.630597 0.562500 +vt 0.623134 0.500000 +vt 0.630597 0.500000 +vt 0.630597 0.250000 +vt 0.623134 0.187500 +vt 0.630597 0.812500 +vt 0.623134 0.750000 +vt 0.623134 0.437500 +vt 0.630597 0.625000 +vt 0.623134 0.562500 +vt 0.630597 0.312500 +vt 0.623134 0.250000 +vt 0.630597 0.875000 +vt 0.623134 0.812500 +vt 0.623134 0.625000 +vt 0.623134 0.312500 +vt 0.664179 0.468750 +vt 0.675373 0.484375 +vt 0.675373 0.453125 +vt 0.664179 0.484375 +vt 0.664179 0.500000 +vt 0.675373 0.562500 +vt 0.664179 0.515625 +vt 0.675373 0.546875 +vt 0.664179 0.531250 +vt 0.675373 0.531250 +vt 0.664179 0.546875 +vt 0.675373 0.515625 +vt 0.664179 0.437500 +vt 0.675373 0.500000 +vt 0.664179 0.453125 +vt 0.675373 0.468750 +vt 0.570895 0.265625 +vt 0.555970 0.250000 +vt 0.570895 0.250000 +vt 0.570895 0.187500 +vt 0.555970 0.171875 +vt 0.570895 0.171875 +vt 0.570895 0.140625 +vt 0.555970 0.125000 +vt 0.570895 0.125000 +vt 0.570895 0.281250 +vt 0.555970 0.265625 +vt 0.570895 0.203125 +vt 0.555970 0.187500 +vt 0.570895 0.234375 +vt 0.555970 0.218750 +vt 0.570895 0.218750 +vt 0.570895 0.156250 +vt 0.555970 0.140625 +vt 0.570895 0.296875 +vt 0.555970 0.281250 +vt 0.555970 0.203125 +vt 0.555970 0.234375 +vt 0.555970 0.156250 +vt 0.570895 0.312500 +vt 0.555970 0.296875 +vt 0.638060 0.359375 +vt 0.630597 0.312500 +vt 0.638060 0.312500 +vt 0.638060 0.453125 +vt 0.630597 0.406250 +vt 0.638060 0.406250 +vt 0.638060 0.218750 +vt 0.630597 0.171875 +vt 0.638060 0.171875 +vt 0.638060 0.640625 +vt 0.630597 0.593750 +vt 0.638060 0.593750 +vt 0.630597 0.359375 +vt 0.638060 0.500000 +vt 0.630597 0.453125 +vt 0.638060 0.265625 +vt 0.630597 0.218750 +vt 0.638060 0.687500 +vt 0.630597 0.640625 +vt 0.638060 0.546875 +vt 0.630597 0.500000 +vt 0.630597 0.265625 +vt 0.630597 0.125000 +vt 0.638060 0.125000 +vt 0.630597 0.546875 +vt 0.664179 0.468750 +vt 0.675373 0.484375 +vt 0.675373 0.453125 +vt 0.664179 0.484375 +vt 0.664179 0.500000 +vt 0.675373 0.562500 +vt 0.664179 0.515625 +vt 0.675373 0.546875 +vt 0.664179 0.531250 +vt 0.675373 0.531250 +vt 0.664179 0.546875 +vt 0.675373 0.515625 +vt 0.664179 0.437500 +vt 0.675373 0.500000 +vt 0.664179 0.453125 +vt 0.675373 0.468750 +vt 0.664179 0.468750 +vt 0.675373 0.484375 +vt 0.675373 0.453125 +vt 0.664179 0.484375 +vt 0.664179 0.500000 +vt 0.675373 0.562500 +vt 0.664179 0.515625 +vt 0.675373 0.546875 +vt 0.664179 0.531250 +vt 0.675373 0.531250 +vt 0.664179 0.546875 +vt 0.675373 0.515625 +vt 0.664179 0.437500 +vt 0.675373 0.500000 +vt 0.664179 0.453125 +vt 0.675373 0.468750 +vt 0.664179 0.468750 +vt 0.675373 0.484375 +vt 0.675373 0.453125 +vt 0.664179 0.484375 +vt 0.664179 0.500000 +vt 0.675373 0.562500 +vt 0.664179 0.515625 +vt 0.675373 0.546875 +vt 0.664179 0.531250 +vt 0.675373 0.531250 +vt 0.664179 0.546875 +vt 0.675373 0.515625 +vt 0.664179 0.437500 +vt 0.675373 0.500000 +vt 0.664179 0.453125 +vt 0.675373 0.468750 +vt 0.664179 0.468750 +vt 0.675373 0.484375 +vt 0.675373 0.453125 +vt 0.664179 0.484375 +vt 0.664179 0.500000 +vt 0.675373 0.562500 +vt 0.664179 0.515625 +vt 0.675373 0.546875 +vt 0.664179 0.531250 +vt 0.675373 0.531250 +vt 0.664179 0.546875 +vt 0.675373 0.515625 +vt 0.664179 0.437500 +vt 0.675373 0.500000 +vt 0.664179 0.453125 +vt 0.675373 0.468750 +vt 0.664179 0.468750 +vt 0.675373 0.484375 +vt 0.675373 0.453125 +vt 0.664179 0.484375 +vt 0.664179 0.500000 +vt 0.675373 0.562500 +vt 0.664179 0.515625 +vt 0.675373 0.546875 +vt 0.664179 0.531250 +vt 0.675373 0.531250 +vt 0.664179 0.546875 +vt 0.675373 0.515625 +vt 0.664179 0.437500 +vt 0.675373 0.500000 +vt 0.664179 0.453125 +vt 0.675373 0.468750 +vt 0.623134 0.875000 +vt 0.675373 0.437500 +vt 0.664179 0.562500 +vt 0.555970 0.312500 +vt 0.630597 0.687500 +vt 0.675373 0.437500 +vt 0.664179 0.562500 +vt 0.675373 0.437500 +vt 0.664179 0.562500 +vt 0.675373 0.437500 +vt 0.664179 0.562500 +vt 0.675373 0.437500 +vt 0.664179 0.562500 +vt 0.675373 0.437500 +vt 0.664179 0.562500 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.0000 -1.0000 0.0000 +vn -0.8660 -0.5000 0.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.8660 0.5000 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.8660 0.5000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.9659 0.2588 0.0000 +vn 0.9659 -0.2588 0.0000 +vn -0.2588 -0.9659 0.0000 +vn 0.2588 0.9659 0.0000 +vn -0.2588 0.9659 0.0000 +vn 0.2588 -0.9659 0.0000 +vn -0.9659 -0.2588 0.0000 +vn 0.9659 0.2588 0.0000 +s off +f 177/305/50 181/306/50 173/307/50 +f 171/308/51 169/309/51 167/310/51 +f 191/311/51 199/312/51 186/313/51 +f 191/311/51 193/314/51 200/315/51 +f 188/316/51 194/317/51 193/314/51 +f 190/318/51 195/319/51 194/317/51 +f 192/320/51 195/319/51 185/321/51 +f 192/320/51 197/322/51 196/323/51 +f 189/324/51 197/325/51 187/326/51 +f 189/324/51 199/312/51 198/327/51 +f 251/328/51 247/329/51 243/330/51 +f 257/331/50 261/332/50 253/333/50 +f 271/334/51 279/335/51 266/336/51 +f 271/334/51 273/337/51 280/338/51 +f 268/339/51 274/340/51 273/337/51 +f 270/341/51 275/342/51 274/340/51 +f 272/343/51 275/342/51 265/344/51 +f 272/343/51 277/345/51 276/346/51 +f 269/347/51 277/348/51 267/349/51 +f 269/347/51 279/335/51 278/350/51 +f 303/351/51 311/352/51 298/353/51 +f 303/351/51 305/354/51 312/355/51 +f 300/356/51 306/357/51 305/354/51 +f 302/358/51 307/359/51 306/357/51 +f 304/360/51 307/359/51 297/361/51 +f 304/360/51 309/362/51 308/363/51 +f 301/364/51 309/365/51 299/366/51 +f 301/364/51 311/352/51 310/367/51 +f 335/368/51 343/369/51 330/370/51 +f 335/368/51 337/371/51 344/372/51 +f 332/373/51 338/374/51 337/371/51 +f 334/375/51 339/376/51 338/374/51 +f 336/377/51 339/376/51 329/378/51 +f 336/377/51 341/379/51 340/380/51 +f 333/381/51 341/382/51 331/383/51 +f 333/381/51 343/369/51 342/384/51 +f 367/385/51 375/386/51 362/387/51 +f 367/385/51 369/388/51 376/389/51 +f 364/390/51 370/391/51 369/388/51 +f 366/392/51 371/393/51 370/391/51 +f 368/394/51 371/393/51 361/395/51 +f 368/394/51 373/396/51 372/397/51 +f 365/398/51 373/399/51 363/400/51 +f 365/398/51 375/386/51 374/401/51 +f 399/402/51 407/403/51 394/404/51 +f 399/402/51 401/405/51 408/406/51 +f 396/407/51 402/408/51 401/405/51 +f 398/409/51 403/410/51 402/408/51 +f 400/411/51 403/410/51 393/412/51 +f 400/411/51 405/413/51 404/414/51 +f 397/415/51 405/416/51 395/417/51 +f 397/415/51 407/403/51 406/418/51 +f 173/307/50 174/419/50 175/420/50 +f 175/420/50 176/421/50 173/307/50 +f 176/421/50 177/305/50 173/307/50 +f 177/305/50 178/422/50 179/423/50 +f 179/423/50 180/424/50 181/306/50 +f 181/306/50 182/425/50 183/426/50 +f 183/426/50 184/427/50 173/307/50 +f 177/305/50 179/423/50 181/306/50 +f 181/306/50 183/426/50 173/307/50 +f 163/428/51 162/429/51 161/430/51 +f 161/430/51 172/431/51 171/308/51 +f 171/308/51 170/432/51 169/309/51 +f 169/309/51 168/433/51 167/310/51 +f 167/310/51 166/434/51 165/435/51 +f 165/435/51 164/436/51 167/310/51 +f 164/436/51 163/428/51 167/310/51 +f 163/428/51 161/430/51 167/310/51 +f 161/430/51 171/308/51 167/310/51 +f 191/311/51 200/315/51 199/312/51 +f 191/311/51 188/316/51 193/314/51 +f 188/316/51 190/318/51 194/317/51 +f 190/318/51 185/321/51 195/319/51 +f 192/320/51 196/323/51 195/319/51 +f 192/320/51 187/437/51 197/322/51 +f 189/324/51 198/327/51 197/325/51 +f 189/324/51 186/313/51 199/312/51 +f 243/330/51 242/438/51 251/328/51 +f 242/438/51 241/439/51 251/328/51 +f 241/439/51 252/440/51 251/328/51 +f 251/328/51 250/441/51 249/442/51 +f 249/442/51 248/443/51 251/328/51 +f 248/443/51 247/329/51 251/328/51 +f 247/329/51 246/444/51 243/330/51 +f 246/444/51 245/445/51 243/330/51 +f 245/445/51 244/446/51 243/330/51 +f 253/333/50 254/447/50 257/331/50 +f 254/447/50 255/448/50 257/331/50 +f 255/448/50 256/449/50 257/331/50 +f 257/331/50 258/450/50 261/332/50 +f 258/450/50 259/451/50 261/332/50 +f 259/451/50 260/452/50 261/332/50 +f 261/332/50 262/453/50 263/454/50 +f 263/454/50 264/455/50 261/332/50 +f 264/455/50 253/333/50 261/332/50 +f 271/334/51 280/338/51 279/335/51 +f 271/334/51 268/339/51 273/337/51 +f 268/339/51 270/341/51 274/340/51 +f 270/341/51 265/344/51 275/342/51 +f 272/343/51 276/346/51 275/342/51 +f 272/343/51 267/456/51 277/345/51 +f 269/347/51 278/350/51 277/348/51 +f 269/347/51 266/336/51 279/335/51 +f 303/351/51 312/355/51 311/352/51 +f 303/351/51 300/356/51 305/354/51 +f 300/356/51 302/358/51 306/357/51 +f 302/358/51 297/361/51 307/359/51 +f 304/360/51 308/363/51 307/359/51 +f 304/360/51 299/457/51 309/362/51 +f 301/364/51 310/367/51 309/365/51 +f 301/364/51 298/353/51 311/352/51 +f 335/368/51 344/372/51 343/369/51 +f 335/368/51 332/373/51 337/371/51 +f 332/373/51 334/375/51 338/374/51 +f 334/375/51 329/378/51 339/376/51 +f 336/377/51 340/380/51 339/376/51 +f 336/377/51 331/458/51 341/379/51 +f 333/381/51 342/384/51 341/382/51 +f 333/381/51 330/370/51 343/369/51 +f 367/385/51 376/389/51 375/386/51 +f 367/385/51 364/390/51 369/388/51 +f 364/390/51 366/392/51 370/391/51 +f 366/392/51 361/395/51 371/393/51 +f 368/394/51 372/397/51 371/393/51 +f 368/394/51 363/459/51 373/396/51 +f 365/398/51 374/401/51 373/399/51 +f 365/398/51 362/387/51 375/386/51 +f 399/402/51 408/406/51 407/403/51 +f 399/402/51 396/407/51 401/405/51 +f 396/407/51 398/409/51 402/408/51 +f 398/409/51 393/412/51 403/410/51 +f 400/411/51 404/414/51 403/410/51 +f 400/411/51 395/460/51 405/413/51 +f 397/415/51 406/418/51 405/416/51 +f 397/415/51 394/404/51 407/403/51 +s 1 +f 168/461/52 179/462/53 167/463/53 +f 165/464/54 176/465/55 164/466/55 +f 172/467/56 183/468/57 171/469/57 +f 162/470/58 173/471/59 161/472/59 +f 169/473/60 180/474/52 168/461/52 +f 166/475/61 177/476/54 165/464/54 +f 161/472/59 184/477/56 172/467/56 +f 163/478/62 174/479/58 162/470/58 +f 170/480/63 181/481/60 169/473/60 +f 167/482/53 178/483/61 166/475/61 +f 164/466/55 175/484/62 163/478/62 +f 171/469/57 182/485/63 170/480/63 +f 200/315/64 215/486/55 199/312/55 +f 186/313/63 207/487/65 191/311/65 +f 187/326/53 202/488/66 189/324/66 +f 193/314/53 216/489/64 200/315/64 +f 194/317/66 210/490/53 193/314/53 +f 192/320/64 201/491/53 187/437/53 +f 195/319/63 209/492/66 194/317/66 +f 185/321/55 203/493/64 192/320/64 +f 196/323/65 211/494/63 195/319/63 +f 190/318/67 204/495/55 185/321/55 +f 197/322/59 212/496/65 196/323/65 +f 188/316/59 205/497/67 190/318/67 +f 198/327/67 213/498/59 197/325/59 +f 191/311/65 206/499/59 188/316/59 +f 199/312/55 214/500/67 198/327/67 +f 189/324/66 208/501/63 186/313/63 +f 220/502/55 231/503/62 219/504/62 +f 227/505/57 238/506/63 226/507/63 +f 224/508/52 235/509/53 223/510/53 +f 221/511/54 232/512/55 220/502/55 +f 228/513/56 239/514/57 227/505/57 +f 218/515/58 229/516/59 217/517/59 +f 225/518/60 236/519/52 224/508/52 +f 222/520/61 233/521/54 221/511/54 +f 217/517/59 240/522/56 228/513/56 +f 219/504/62 230/523/58 218/515/58 +f 226/507/63 237/524/60 225/518/60 +f 223/525/53 234/526/61 222/520/61 +f 252/527/56 263/528/57 251/529/57 +f 242/530/58 253/531/59 241/532/59 +f 249/533/60 260/534/52 248/535/52 +f 246/536/61 257/537/54 245/538/54 +f 241/532/59 264/539/56 252/527/56 +f 243/540/62 254/541/58 242/530/58 +f 250/542/63 261/543/60 249/533/60 +f 247/544/53 258/545/61 246/536/61 +f 244/546/55 255/547/62 243/540/62 +f 251/529/57 262/548/63 250/542/63 +f 248/535/52 259/549/53 247/550/53 +f 245/538/54 256/551/55 244/546/55 +f 280/338/65 295/552/63 279/335/63 +f 266/336/55 287/553/64 271/334/64 +f 267/349/59 282/554/67 269/347/67 +f 273/337/59 296/555/65 280/338/65 +f 274/340/67 290/556/59 273/337/59 +f 272/343/65 281/557/59 267/456/59 +f 275/342/55 289/558/67 274/340/67 +f 265/344/63 283/559/65 272/343/65 +f 276/346/64 291/560/55 275/342/55 +f 270/341/66 284/561/63 265/344/63 +f 277/345/53 292/562/64 276/346/64 +f 268/339/53 285/563/66 270/341/66 +f 278/350/66 293/564/53 277/348/53 +f 271/334/64 286/565/53 268/339/53 +f 279/335/63 294/566/66 278/350/66 +f 269/347/67 288/567/55 266/336/55 +f 312/355/68 327/568/58 311/352/58 +f 298/353/52 319/569/69 303/351/69 +f 299/366/54 314/570/70 301/364/70 +f 305/354/54 328/571/68 312/355/68 +f 306/357/70 322/572/54 305/354/54 +f 304/360/68 313/573/54 299/457/54 +f 307/359/52 321/574/70 306/357/70 +f 297/361/58 315/575/68 304/360/68 +f 308/363/69 323/576/52 307/359/52 +f 302/358/71 316/577/58 297/361/58 +f 309/362/57 324/578/69 308/363/69 +f 300/356/57 317/579/71 302/358/71 +f 310/367/71 325/580/57 309/365/57 +f 303/351/69 318/581/57 300/356/57 +f 311/352/58 326/582/71 310/367/71 +f 301/364/70 320/583/52 298/353/52 +f 344/372/69 359/584/52 343/369/52 +f 330/370/58 351/585/68 335/368/68 +f 331/383/57 346/586/71 333/381/71 +f 337/371/57 360/587/69 344/372/69 +f 338/374/71 354/588/57 337/371/57 +f 336/377/69 345/589/57 331/458/57 +f 339/376/58 353/590/71 338/374/71 +f 329/378/52 347/591/69 336/377/69 +f 340/380/68 355/592/58 339/376/58 +f 334/375/70 348/593/52 329/378/52 +f 341/379/54 356/594/68 340/380/68 +f 332/373/54 349/595/70 334/375/70 +f 342/384/70 357/596/54 341/382/54 +f 335/368/68 350/597/54 332/373/54 +f 343/369/52 358/598/70 342/384/70 +f 333/381/71 352/599/58 330/370/58 +f 376/389/72 391/600/56 375/386/56 +f 362/387/61 383/601/73 367/385/73 +f 363/400/62 378/602/74 365/398/74 +f 369/388/62 392/603/72 376/389/72 +f 370/391/74 386/604/62 369/388/62 +f 368/394/72 377/605/62 363/459/62 +f 371/393/61 385/606/74 370/391/74 +f 361/395/56 379/607/72 368/394/72 +f 372/397/73 387/608/61 371/393/61 +f 366/392/75 380/609/56 361/395/56 +f 373/396/60 388/610/73 372/397/73 +f 364/390/60 381/611/75 366/392/75 +f 374/401/75 389/612/60 373/399/60 +f 367/385/73 382/613/60 364/390/60 +f 375/386/56 390/614/75 374/401/75 +f 365/398/74 384/615/61 362/387/61 +f 408/406/73 423/616/61 407/403/61 +f 394/404/56 415/617/72 399/402/72 +f 395/417/60 410/618/75 397/415/75 +f 401/405/60 424/619/73 408/406/73 +f 402/408/75 418/620/60 401/405/60 +f 400/411/73 409/621/60 395/460/60 +f 403/410/56 417/622/75 402/408/75 +f 393/412/61 411/623/73 400/411/73 +f 404/414/72 419/624/56 403/410/56 +f 398/409/74 412/625/61 393/412/61 +f 405/413/62 420/626/72 404/414/72 +f 396/407/62 413/627/74 398/409/74 +f 406/418/74 421/628/62 405/416/62 +f 399/402/72 414/629/62 396/407/62 +f 407/403/61 422/630/74 406/418/74 +f 397/415/75 416/631/56 394/404/56 +f 168/461/52 180/474/52 179/462/53 +f 165/464/54 177/476/54 176/465/55 +f 172/467/56 184/477/56 183/468/57 +f 162/470/58 174/479/58 173/471/59 +f 169/473/60 181/481/60 180/474/52 +f 166/475/61 178/483/61 177/476/54 +f 161/472/59 173/471/59 184/477/56 +f 163/478/62 175/484/62 174/479/58 +f 170/480/63 182/485/63 181/481/60 +f 167/482/53 179/632/53 178/483/61 +f 164/466/55 176/465/55 175/484/62 +f 171/469/57 183/468/57 182/485/63 +f 200/315/64 216/489/64 215/486/55 +f 186/313/63 208/501/63 207/487/65 +f 187/326/53 201/633/53 202/488/66 +f 193/314/53 210/490/53 216/489/64 +f 194/317/66 209/492/66 210/490/53 +f 192/320/64 203/493/64 201/491/53 +f 195/319/63 211/494/63 209/492/66 +f 185/321/55 204/495/55 203/493/64 +f 196/323/65 212/496/65 211/494/63 +f 190/318/67 205/497/67 204/495/55 +f 197/322/59 213/634/59 212/496/65 +f 188/316/59 206/499/59 205/497/67 +f 198/327/67 214/500/67 213/498/59 +f 191/311/65 207/487/65 206/499/59 +f 199/312/55 215/486/55 214/500/67 +f 189/324/66 202/488/66 208/501/63 +f 220/502/55 232/512/55 231/503/62 +f 227/505/57 239/514/57 238/506/63 +f 224/508/52 236/519/52 235/509/53 +f 221/511/54 233/521/54 232/512/55 +f 228/513/56 240/522/56 239/514/57 +f 218/515/58 230/523/58 229/516/59 +f 225/518/60 237/524/60 236/519/52 +f 222/520/61 234/526/61 233/521/54 +f 217/517/59 229/516/59 240/522/56 +f 219/504/62 231/503/62 230/523/58 +f 226/507/63 238/506/63 237/524/60 +f 223/525/53 235/635/53 234/526/61 +f 252/527/56 264/539/56 263/528/57 +f 242/530/58 254/541/58 253/531/59 +f 249/533/60 261/543/60 260/534/52 +f 246/536/61 258/545/61 257/537/54 +f 241/532/59 253/531/59 264/539/56 +f 243/540/62 255/547/62 254/541/58 +f 250/542/63 262/548/63 261/543/60 +f 247/544/53 259/636/53 258/545/61 +f 244/546/55 256/551/55 255/547/62 +f 251/529/57 263/528/57 262/548/63 +f 248/535/52 260/534/52 259/549/53 +f 245/538/54 257/537/54 256/551/55 +f 280/338/65 296/555/65 295/552/63 +f 266/336/55 288/567/55 287/553/64 +f 267/349/59 281/637/59 282/554/67 +f 273/337/59 290/556/59 296/555/65 +f 274/340/67 289/558/67 290/556/59 +f 272/343/65 283/559/65 281/557/59 +f 275/342/55 291/560/55 289/558/67 +f 265/344/63 284/561/63 283/559/65 +f 276/346/64 292/562/64 291/560/55 +f 270/341/66 285/563/66 284/561/63 +f 277/345/53 293/638/53 292/562/64 +f 268/339/53 286/565/53 285/563/66 +f 278/350/66 294/566/66 293/564/53 +f 271/334/64 287/553/64 286/565/53 +f 279/335/63 295/552/63 294/566/66 +f 269/347/67 282/554/67 288/567/55 +f 312/355/68 328/571/68 327/568/58 +f 298/353/52 320/583/52 319/569/69 +f 299/366/54 313/639/54 314/570/70 +f 305/354/54 322/572/54 328/571/68 +f 306/357/70 321/574/70 322/572/54 +f 304/360/68 315/575/68 313/573/54 +f 307/359/52 323/576/52 321/574/70 +f 297/361/58 316/577/58 315/575/68 +f 308/363/69 324/578/69 323/576/52 +f 302/358/71 317/579/71 316/577/58 +f 309/362/57 325/640/57 324/578/69 +f 300/356/57 318/581/57 317/579/71 +f 310/367/71 326/582/71 325/580/57 +f 303/351/69 319/569/69 318/581/57 +f 311/352/58 327/568/58 326/582/71 +f 301/364/70 314/570/70 320/583/52 +f 344/372/69 360/587/69 359/584/52 +f 330/370/58 352/599/58 351/585/68 +f 331/383/57 345/641/57 346/586/71 +f 337/371/57 354/588/57 360/587/69 +f 338/374/71 353/590/71 354/588/57 +f 336/377/69 347/591/69 345/589/57 +f 339/376/58 355/592/58 353/590/71 +f 329/378/52 348/593/52 347/591/69 +f 340/380/68 356/594/68 355/592/58 +f 334/375/70 349/595/70 348/593/52 +f 341/379/54 357/642/54 356/594/68 +f 332/373/54 350/597/54 349/595/70 +f 342/384/70 358/598/70 357/596/54 +f 335/368/68 351/585/68 350/597/54 +f 343/369/52 359/584/52 358/598/70 +f 333/381/71 346/586/71 352/599/58 +f 376/389/72 392/603/72 391/600/56 +f 362/387/61 384/615/61 383/601/73 +f 363/400/62 377/643/62 378/602/74 +f 369/388/62 386/604/62 392/603/72 +f 370/391/74 385/606/74 386/604/62 +f 368/394/72 379/607/72 377/605/62 +f 371/393/61 387/608/61 385/606/74 +f 361/395/56 380/609/56 379/607/72 +f 372/397/73 388/610/73 387/608/61 +f 366/392/75 381/611/75 380/609/56 +f 373/396/60 389/644/60 388/610/73 +f 364/390/60 382/613/60 381/611/75 +f 374/401/75 390/614/75 389/612/60 +f 367/385/73 383/601/73 382/613/60 +f 375/386/56 391/600/56 390/614/75 +f 365/398/74 378/602/74 384/615/61 +f 408/406/73 424/619/73 423/616/61 +f 394/404/56 416/631/56 415/617/72 +f 395/417/60 409/645/60 410/618/75 +f 401/405/60 418/620/60 424/619/73 +f 402/408/75 417/622/75 418/620/60 +f 400/411/73 411/623/73 409/621/60 +f 403/410/56 419/624/56 417/622/75 +f 393/412/61 412/625/61 411/623/73 +f 404/414/72 420/626/72 419/624/56 +f 398/409/74 413/627/74 412/625/61 +f 405/413/62 421/646/62 420/626/72 +f 396/407/62 414/629/62 413/627/74 +f 406/418/74 422/630/74 421/628/62 +f 399/402/72 415/617/72 414/629/62 +f 407/403/61 423/616/61 422/630/74 +f 397/415/75 410/618/75 416/631/56 +o Shot +v 0.000000 0.500000 8.187500 +v -0.132583 0.500000 8.132584 +v -0.187500 0.500000 8.000000 +v -0.132583 0.500000 7.867418 +v 0.000000 0.500000 7.812500 +v 0.132583 0.500000 7.867418 +v 0.187500 0.500000 8.000000 +v 0.132583 0.500000 8.132584 +v 0.000000 0.367418 8.132584 +v 0.000000 0.312500 8.000000 +v 0.000000 0.367418 7.867418 +v 0.000000 0.632583 7.867418 +v 0.000000 0.687500 8.000000 +v 0.000000 0.632583 8.132584 +v 0.093750 0.406250 8.132584 +v 0.132583 0.367418 8.000000 +v 0.093750 0.406250 7.867418 +v -0.093750 0.593750 7.867418 +v -0.132583 0.632583 8.000000 +v -0.093750 0.593750 8.132584 +v 0.093750 0.593750 8.132584 +v 0.132583 0.632583 8.000000 +v 0.093750 0.593750 7.867418 +v -0.093750 0.406250 7.867418 +v -0.132583 0.367418 8.000000 +v -0.093750 0.406250 8.132584 +v 0.000000 -0.500000 8.187500 +v 0.132583 -0.500000 8.132584 +v 0.187500 -0.500000 8.000000 +v 0.132583 -0.500000 7.867418 +v 0.000000 -0.500000 7.812500 +v -0.132583 -0.500000 7.867418 +v -0.187500 -0.500000 8.000000 +v -0.132583 -0.500000 8.132584 +v 0.000000 -0.367418 8.132584 +v 0.000000 -0.312500 8.000000 +v 0.000000 -0.367418 7.867418 +v 0.000000 -0.632583 7.867418 +v 0.000000 -0.687500 8.000000 +v 0.000000 -0.632583 8.132584 +v -0.093750 -0.406250 8.132584 +v -0.132583 -0.367418 8.000000 +v -0.093750 -0.406250 7.867418 +v 0.093750 -0.593750 7.867418 +v 0.132583 -0.632583 8.000000 +v 0.093750 -0.593750 8.132584 +v -0.093750 -0.593750 8.132584 +v -0.132583 -0.632583 8.000000 +v -0.093750 -0.593750 7.867418 +v 0.093750 -0.406250 7.867418 +v 0.132583 -0.367418 8.000000 +v 0.093750 -0.406250 8.132584 +v 0.433013 0.250000 8.187500 +v 0.366722 0.364820 8.132584 +v 0.339263 0.412380 8.000000 +v 0.366722 0.364820 7.867418 +v 0.433013 0.250000 7.812500 +v 0.499304 0.135180 7.867418 +v 0.526763 0.087620 8.000000 +v 0.499304 0.135180 8.132584 +v 0.318193 0.183709 8.132584 +v 0.270633 0.156250 8.000000 +v 0.318193 0.183709 7.867418 +v 0.547833 0.316292 7.867418 +v 0.595393 0.343750 8.000000 +v 0.547833 0.316292 8.132584 +v 0.398698 0.121935 8.132584 +v 0.384484 0.068889 8.000000 +v 0.398698 0.121935 7.867418 +v 0.467328 0.378065 7.867418 +v 0.481542 0.431112 8.000000 +v 0.467328 0.378065 8.132584 +v 0.561078 0.215685 8.132584 +v 0.614124 0.201472 8.000000 +v 0.561078 0.215685 7.867418 +v 0.304948 0.284315 7.867418 +v 0.251902 0.298529 8.000000 +v 0.304948 0.284315 8.132584 +v -0.433013 -0.250000 8.187500 +v -0.366722 -0.364820 8.132584 +v -0.339263 -0.412380 8.000000 +v -0.366722 -0.364820 7.867418 +v -0.433013 -0.250000 7.812500 +v -0.499304 -0.135180 7.867418 +v -0.526763 -0.087620 8.000000 +v -0.499304 -0.135180 8.132584 +v -0.318193 -0.183709 8.132584 +v -0.270633 -0.156250 8.000000 +v -0.318193 -0.183709 7.867418 +v -0.547833 -0.316292 7.867418 +v -0.595393 -0.343750 8.000000 +v -0.547833 -0.316292 8.132584 +v -0.398698 -0.121935 8.132584 +v -0.384484 -0.068889 8.000000 +v -0.398698 -0.121935 7.867418 +v -0.467328 -0.378065 7.867418 +v -0.481542 -0.431112 8.000000 +v -0.467328 -0.378065 8.132584 +v -0.561078 -0.215685 8.132584 +v -0.614124 -0.201472 8.000000 +v -0.561078 -0.215685 7.867418 +v -0.304948 -0.284315 7.867418 +v -0.251902 -0.298529 8.000000 +v -0.304948 -0.284315 8.132584 +v 0.433013 -0.250000 8.187500 +v 0.499304 -0.135180 8.132584 +v 0.526763 -0.087620 8.000000 +v 0.499304 -0.135180 7.867418 +v 0.433013 -0.250000 7.812500 +v 0.366722 -0.364820 7.867418 +v 0.339263 -0.412380 8.000000 +v 0.366722 -0.364820 8.132584 +v 0.318193 -0.183709 8.132584 +v 0.270633 -0.156250 8.000000 +v 0.318193 -0.183709 7.867418 +v 0.547833 -0.316292 7.867418 +v 0.595393 -0.343750 8.000000 +v 0.547833 -0.316292 8.132584 +v 0.304948 -0.284315 8.132584 +v 0.251902 -0.298529 8.000000 +v 0.304948 -0.284315 7.867418 +v 0.561078 -0.215685 7.867418 +v 0.614124 -0.201472 8.000000 +v 0.561078 -0.215685 8.132584 +v 0.467328 -0.378065 8.132584 +v 0.481542 -0.431112 8.000000 +v 0.467328 -0.378065 7.867418 +v 0.398698 -0.121935 7.867418 +v 0.384484 -0.068889 8.000000 +v 0.398698 -0.121935 8.132584 +v -0.433013 0.250000 8.187500 +v -0.499304 0.135180 8.132584 +v -0.526763 0.087620 8.000000 +v -0.499304 0.135180 7.867418 +v -0.433013 0.250000 7.812500 +v -0.366722 0.364820 7.867418 +v -0.339263 0.412380 8.000000 +v -0.366722 0.364820 8.132584 +v -0.318193 0.183709 8.132584 +v -0.270633 0.156250 8.000000 +v -0.318193 0.183709 7.867418 +v -0.547833 0.316292 7.867418 +v -0.595393 0.343750 8.000000 +v -0.547833 0.316292 8.132584 +v -0.304948 0.284315 8.132584 +v -0.251902 0.298529 8.000000 +v -0.304948 0.284315 7.867418 +v -0.561078 0.215685 7.867418 +v -0.614124 0.201472 8.000000 +v -0.561078 0.215685 8.132584 +v -0.467328 0.378065 8.132584 +v -0.481542 0.431112 8.000000 +v -0.467328 0.378065 7.867418 +v -0.398698 0.121935 7.867418 +v -0.384484 0.068889 8.000000 +v -0.398698 0.121935 8.132584 +vt 0.641791 0.437500 +vt 0.645522 0.453125 +vt 0.641791 0.453125 +vt 0.645965 0.438018 +vt 0.649254 0.453125 +vt 0.645522 0.546875 +vt 0.641791 0.562500 +vt 0.641791 0.546875 +vt 0.649254 0.546875 +vt 0.645522 0.562500 +vt 0.645522 0.531250 +vt 0.641791 0.531250 +vt 0.649254 0.531250 +vt 0.641791 0.515625 +vt 0.645522 0.515625 +vt 0.641791 0.500000 +vt 0.645522 0.500000 +vt 0.645522 0.484375 +vt 0.641791 0.484375 +vt 0.645522 0.468750 +vt 0.641791 0.468750 +vt 0.638060 0.468750 +vt 0.638060 0.484375 +vt 0.638060 0.500000 +vt 0.638060 0.515625 +vt 0.638060 0.531250 +vt 0.638060 0.546875 +vt 0.638060 0.437500 +vt 0.638060 0.453125 +vt 0.649254 0.468750 +vt 0.649254 0.484375 +vt 0.649254 0.500000 +vt 0.652985 0.468750 +vt 0.652985 0.484375 +vt 0.649254 0.515625 +vt 0.652985 0.500000 +vt 0.652985 0.515625 +vt 0.652985 0.531250 +vt 0.652985 0.546875 +vt 0.649254 0.562500 +vt 0.649254 0.437500 +vt 0.652985 0.437500 +vt 0.652985 0.453125 +vt 0.641791 0.437500 +vt 0.645522 0.453125 +vt 0.641791 0.453125 +vt 0.645965 0.438018 +vt 0.649254 0.453125 +vt 0.645522 0.546875 +vt 0.641791 0.562500 +vt 0.641791 0.546875 +vt 0.649254 0.546875 +vt 0.645522 0.562500 +vt 0.645522 0.531250 +vt 0.641791 0.531250 +vt 0.649254 0.531250 +vt 0.641791 0.515625 +vt 0.645522 0.515625 +vt 0.641791 0.500000 +vt 0.645522 0.500000 +vt 0.645522 0.484375 +vt 0.641791 0.484375 +vt 0.645522 0.468750 +vt 0.641791 0.468750 +vt 0.638060 0.468750 +vt 0.638060 0.484375 +vt 0.638060 0.500000 +vt 0.638060 0.515625 +vt 0.638060 0.531250 +vt 0.638060 0.546875 +vt 0.638060 0.437500 +vt 0.638060 0.453125 +vt 0.649254 0.468750 +vt 0.649254 0.484375 +vt 0.649254 0.500000 +vt 0.652985 0.468750 +vt 0.652985 0.484375 +vt 0.649254 0.515625 +vt 0.652985 0.500000 +vt 0.652985 0.515625 +vt 0.652985 0.531250 +vt 0.652985 0.546875 +vt 0.649254 0.562500 +vt 0.649254 0.437500 +vt 0.652985 0.437500 +vt 0.652985 0.453125 +vt 0.641791 0.437500 +vt 0.645522 0.453125 +vt 0.641791 0.453125 +vt 0.649254 0.437500 +vt 0.645965 0.438018 +vt 0.641791 0.546875 +vt 0.645522 0.562500 +vt 0.641791 0.562500 +vt 0.649254 0.546875 +vt 0.645522 0.546875 +vt 0.645522 0.531250 +vt 0.641791 0.531250 +vt 0.649254 0.531250 +vt 0.645522 0.515625 +vt 0.641791 0.515625 +vt 0.645522 0.500000 +vt 0.641791 0.500000 +vt 0.645522 0.484375 +vt 0.641791 0.484375 +vt 0.645522 0.468750 +vt 0.641791 0.468750 +vt 0.638060 0.468750 +vt 0.638060 0.484375 +vt 0.638060 0.500000 +vt 0.638060 0.515625 +vt 0.638060 0.531250 +vt 0.638060 0.546875 +vt 0.638060 0.437500 +vt 0.638060 0.453125 +vt 0.649254 0.453125 +vt 0.649254 0.468750 +vt 0.649254 0.484375 +vt 0.649254 0.500000 +vt 0.652985 0.468750 +vt 0.652985 0.484375 +vt 0.649254 0.515625 +vt 0.652985 0.500000 +vt 0.652985 0.515625 +vt 0.652985 0.531250 +vt 0.652985 0.546875 +vt 0.649254 0.562500 +vt 0.652985 0.437500 +vt 0.652985 0.453125 +vt 0.641791 0.437500 +vt 0.645522 0.453125 +vt 0.641791 0.453125 +vt 0.649254 0.437500 +vt 0.645965 0.438018 +vt 0.641791 0.546875 +vt 0.645522 0.562500 +vt 0.641791 0.562500 +vt 0.649254 0.546875 +vt 0.645522 0.546875 +vt 0.645522 0.531250 +vt 0.641791 0.531250 +vt 0.649254 0.531250 +vt 0.645522 0.515625 +vt 0.641791 0.515625 +vt 0.645522 0.500000 +vt 0.641791 0.500000 +vt 0.645522 0.484375 +vt 0.641791 0.484375 +vt 0.645522 0.468750 +vt 0.641791 0.468750 +vt 0.638060 0.468750 +vt 0.638060 0.484375 +vt 0.638060 0.500000 +vt 0.638060 0.515625 +vt 0.638060 0.531250 +vt 0.638060 0.546875 +vt 0.638060 0.437500 +vt 0.638060 0.453125 +vt 0.649254 0.453125 +vt 0.649254 0.468750 +vt 0.649254 0.484375 +vt 0.649254 0.500000 +vt 0.652985 0.468750 +vt 0.652985 0.484375 +vt 0.649254 0.515625 +vt 0.652985 0.500000 +vt 0.652985 0.515625 +vt 0.652985 0.531250 +vt 0.652985 0.546875 +vt 0.649254 0.562500 +vt 0.652985 0.437500 +vt 0.652985 0.453125 +vt 0.645965 0.438018 +vt 0.641791 0.453125 +vt 0.641791 0.437500 +vt 0.649254 0.437500 +vt 0.645522 0.453125 +vt 0.645522 0.546875 +vt 0.641791 0.562500 +vt 0.641791 0.546875 +vt 0.649254 0.562500 +vt 0.649254 0.546875 +vt 0.645522 0.531250 +vt 0.641791 0.531250 +vt 0.649254 0.531250 +vt 0.645522 0.515625 +vt 0.641791 0.515625 +vt 0.645522 0.500000 +vt 0.641791 0.500000 +vt 0.641791 0.484375 +vt 0.645522 0.468750 +vt 0.641791 0.468750 +vt 0.645522 0.484375 +vt 0.638060 0.468750 +vt 0.638060 0.484375 +vt 0.638060 0.500000 +vt 0.638060 0.515625 +vt 0.638060 0.531250 +vt 0.638060 0.546875 +vt 0.638060 0.437500 +vt 0.638060 0.453125 +vt 0.649254 0.453125 +vt 0.649254 0.468750 +vt 0.649254 0.484375 +vt 0.649254 0.500000 +vt 0.652985 0.468750 +vt 0.652985 0.484375 +vt 0.649254 0.515625 +vt 0.652985 0.500000 +vt 0.652985 0.515625 +vt 0.652985 0.531250 +vt 0.652985 0.546875 +vt 0.652985 0.437500 +vt 0.652985 0.453125 +vt 0.645965 0.438018 +vt 0.641791 0.453125 +vt 0.641791 0.437500 +vt 0.649254 0.437500 +vt 0.645522 0.453125 +vt 0.645522 0.546875 +vt 0.641791 0.562500 +vt 0.641791 0.546875 +vt 0.649254 0.562500 +vt 0.649254 0.546875 +vt 0.645522 0.531250 +vt 0.641791 0.531250 +vt 0.649254 0.531250 +vt 0.645522 0.515625 +vt 0.641791 0.515625 +vt 0.645522 0.500000 +vt 0.641791 0.500000 +vt 0.641791 0.484375 +vt 0.645522 0.468750 +vt 0.641791 0.468750 +vt 0.645522 0.484375 +vt 0.638060 0.468750 +vt 0.638060 0.484375 +vt 0.638060 0.500000 +vt 0.638060 0.515625 +vt 0.638060 0.531250 +vt 0.638060 0.546875 +vt 0.638060 0.437500 +vt 0.638060 0.453125 +vt 0.649254 0.453125 +vt 0.649254 0.468750 +vt 0.649254 0.484375 +vt 0.649254 0.500000 +vt 0.652985 0.468750 +vt 0.652985 0.484375 +vt 0.649254 0.515625 +vt 0.652985 0.500000 +vt 0.652985 0.515625 +vt 0.652985 0.531250 +vt 0.652985 0.546875 +vt 0.652985 0.437500 +vt 0.652985 0.453125 +vt 0.645522 0.562500 +vt 0.645522 0.562500 +vn 0.0000 -0.7486 0.6630 +vn 0.7071 -0.7071 -0.0000 +vn 0.5293 -0.5294 0.6630 +vn -0.0000 -1.0000 -0.0000 +vn 0.5294 -0.5294 -0.6630 +vn -0.7071 -0.7071 -0.0000 +vn -0.5293 -0.5294 0.6630 +vn -0.5294 -0.5294 -0.6630 +vn -1.0000 0.0000 -0.0000 +vn -0.7486 -0.0000 0.6630 +vn -0.7486 -0.0000 -0.6630 +vn -0.5293 0.5294 0.6630 +vn -0.7071 0.7071 -0.0000 +vn 0.0000 0.7486 0.6630 +vn 0.0000 1.0000 -0.0000 +vn 0.7071 0.7071 -0.0000 +vn 0.5293 0.5294 0.6630 +vn 1.0000 0.0000 -0.0000 +vn 0.7486 -0.0000 0.6630 +vn 0.0000 -0.0000 1.0000 +vn 0.7486 -0.0000 -0.6630 +vn 0.5294 0.5294 -0.6630 +vn 0.0000 0.7486 -0.6630 +vn -0.0000 -0.0000 -1.0000 +vn -0.5294 0.5294 -0.6630 +vn 0.0000 -0.7486 -0.6630 +vn -0.6483 -0.3743 0.6630 +vn -0.2588 -0.9659 -0.0000 +vn -0.1938 -0.7231 0.6630 +vn -0.6483 -0.3743 -0.6630 +vn -0.8660 -0.5000 -0.0000 +vn -0.7231 0.1938 0.6630 +vn -0.7231 0.1938 -0.6630 +vn -0.9659 0.2588 -0.0000 +vn -0.5000 0.8660 -0.0000 +vn -0.3743 0.6483 0.6630 +vn -0.3743 0.6483 -0.6630 +vn 0.2588 0.9659 -0.0000 +vn 0.1938 0.7231 0.6630 +vn 0.8660 0.5000 -0.0000 +vn 0.6483 0.3743 0.6630 +vn 0.9659 -0.2588 -0.0000 +vn 0.7231 -0.1938 0.6630 +vn 0.5000 -0.8660 -0.0000 +vn 0.3743 -0.6483 0.6630 +vn -0.1938 -0.7231 -0.6630 +vn 0.3743 -0.6483 -0.6630 +vn 0.7231 -0.1938 -0.6630 +vn 0.6483 0.3743 -0.6630 +vn 0.1938 0.7231 -0.6630 +vn -0.8660 0.5000 -0.0000 +vn -0.7231 -0.1938 0.6630 +vn -0.6483 0.3743 0.6630 +vn -0.6483 0.3743 -0.6630 +vn -0.9659 -0.2588 -0.0000 +vn -0.2588 0.9659 -0.0000 +vn -0.1938 0.7231 0.6630 +vn -0.1938 0.7231 -0.6630 +vn 0.5000 0.8660 -0.0000 +vn 0.3743 0.6483 0.6630 +vn 0.3743 0.6483 -0.6630 +vn 0.9659 0.2588 -0.0000 +vn 0.7231 0.1938 0.6630 +vn 0.8660 -0.5000 -0.0000 +vn 0.6483 -0.3743 0.6630 +vn 0.1938 -0.7231 0.6630 +vn -0.5000 -0.8660 -0.0000 +vn -0.3743 -0.6483 0.6630 +vn 0.2588 -0.9659 -0.0000 +vn -0.7231 -0.1938 -0.6630 +vn -0.3743 -0.6483 -0.6630 +vn 0.1938 -0.7231 -0.6630 +vn 0.6483 -0.3743 -0.6630 +vn 0.7231 0.1938 -0.6630 +s 1 +f 433/647/76 440/648/77 439/649/78 +f 434/650/79 441/651/80 440/648/77 +f 449/652/81 433/653/76 450/654/82 +f 448/655/83 434/656/79 449/652/81 +f 427/657/84 450/654/82 426/658/85 +f 448/655/83 427/657/84 428/659/86 +f 444/660/87 427/657/84 426/658/85 +f 443/661/88 438/662/89 437/663/90 +f 446/664/91 438/662/89 445/665/92 +f 439/649/78 431/666/93 432/667/94 +f 431/666/93 445/665/92 432/667/94 +f 432/667/94 445/665/92 425/668/95 +f 445/665/92 438/662/89 425/669/95 +f 444/660/87 425/670/95 438/662/89 +f 425/671/95 444/660/87 426/658/85 +f 425/672/95 426/658/85 450/654/82 +f 450/654/82 433/653/76 425/673/95 +f 439/649/78 425/674/95 433/647/76 +f 425/675/95 439/649/78 432/667/94 +f 440/648/77 430/676/96 431/666/93 +f 446/664/91 430/676/96 447/677/97 +f 437/663/90 447/677/97 436/678/98 +f 429/679/99 447/677/97 430/676/96 +f 447/677/97 429/680/99 436/678/98 +f 442/681/100 437/663/90 436/678/98 +f 427/657/84 442/681/100 428/659/86 +f 429/682/99 442/681/100 436/678/98 +f 428/659/86 442/681/100 429/683/99 +f 428/659/86 429/684/99 448/655/83 +f 448/655/83 429/685/99 435/686/101 +f 441/651/80 435/687/101 429/688/99 +f 429/689/99 430/676/96 441/651/80 +f 459/690/89 466/691/88 465/692/87 +f 460/693/90 467/694/100 466/691/88 +f 475/695/91 459/696/89 476/697/92 +f 474/698/97 460/699/90 475/695/91 +f 453/700/93 476/697/92 452/701/94 +f 474/698/97 453/700/93 454/702/96 +f 470/703/78 453/700/93 452/701/94 +f 469/704/77 464/705/76 463/706/79 +f 472/707/81 464/705/76 471/708/82 +f 465/692/87 457/709/84 458/710/85 +f 457/709/84 471/708/82 458/710/85 +f 458/710/85 471/708/82 451/711/95 +f 471/708/82 464/705/76 451/712/95 +f 470/703/78 451/713/95 464/705/76 +f 451/714/95 470/703/78 452/701/94 +f 451/715/95 452/701/94 476/697/92 +f 476/697/92 459/696/89 451/716/95 +f 465/692/87 451/717/95 459/690/89 +f 451/718/95 465/692/87 458/710/85 +f 466/691/88 456/719/86 457/709/84 +f 472/707/81 456/719/86 473/720/83 +f 463/706/79 473/720/83 462/721/101 +f 455/722/99 473/720/83 456/719/86 +f 473/720/83 455/723/99 462/721/101 +f 468/724/80 463/706/79 462/721/101 +f 453/700/93 468/724/80 454/702/96 +f 455/725/99 468/724/80 462/721/101 +f 454/702/96 468/724/80 455/726/99 +f 454/702/96 455/727/99 474/698/97 +f 474/698/97 455/728/99 461/729/98 +f 467/694/100 461/730/98 455/731/99 +f 455/732/99 456/719/86 467/694/100 +f 485/733/102 492/734/103 491/735/104 +f 487/736/105 492/734/103 486/737/106 +f 502/738/107 486/739/106 485/740/102 +f 500/741/108 486/739/106 501/742/109 +f 479/743/110 502/738/107 478/744/111 +f 500/741/108 479/743/110 480/745/112 +f 495/746/113 478/744/111 496/747/114 +f 489/748/115 496/747/114 490/749/116 +f 498/750/117 490/749/116 497/751/118 +f 491/735/104 483/752/119 484/753/120 +f 484/753/120 498/750/117 497/751/118 +f 484/753/120 497/751/118 477/754/95 +f 497/751/118 490/749/116 477/755/95 +f 496/747/114 477/756/95 490/749/116 +f 477/757/95 496/747/114 478/744/111 +f 477/758/95 478/744/111 502/738/107 +f 502/738/107 485/740/102 477/759/95 +f 491/735/104 477/760/95 485/733/102 +f 477/761/95 491/735/104 484/753/120 +f 483/752/119 493/762/121 482/763/122 +f 499/764/123 483/752/119 482/763/122 +f 489/748/115 499/764/123 488/765/124 +f 481/766/99 499/764/123 482/763/122 +f 499/764/123 481/767/99 488/765/124 +f 494/768/125 489/748/115 488/765/124 +f 480/745/112 495/746/113 494/768/125 +f 481/769/99 494/768/125 488/765/124 +f 480/745/112 494/768/125 481/770/99 +f 480/745/112 481/771/99 500/741/108 +f 500/741/108 481/772/99 487/773/105 +f 493/762/121 487/736/105 481/774/99 +f 481/775/99 482/763/122 493/762/121 +f 511/776/116 518/777/113 517/778/114 +f 513/779/124 518/777/113 512/780/115 +f 528/781/118 512/782/115 511/783/116 +f 526/784/123 512/782/115 527/785/117 +f 505/786/119 528/781/118 504/787/120 +f 526/784/123 505/786/119 506/788/122 +f 521/789/103 504/787/120 522/790/104 +f 515/791/106 522/790/104 516/792/102 +f 524/793/109 516/792/102 523/794/107 +f 517/778/114 509/795/110 510/796/111 +f 510/796/111 524/793/109 523/794/107 +f 510/796/111 523/794/107 503/797/95 +f 523/794/107 516/792/102 503/798/95 +f 522/790/104 503/799/95 516/792/102 +f 503/800/95 522/790/104 504/787/120 +f 503/801/95 504/787/120 528/781/118 +f 528/781/118 511/783/116 503/802/95 +f 517/778/114 503/803/95 511/776/116 +f 503/804/95 517/778/114 510/796/111 +f 509/795/110 519/805/125 508/806/112 +f 525/807/108 509/795/110 508/806/112 +f 515/791/106 525/807/108 514/808/105 +f 507/809/99 525/807/108 508/806/112 +f 525/807/108 507/810/99 514/808/105 +f 520/811/121 515/791/106 514/808/105 +f 506/788/122 521/789/103 520/811/121 +f 507/812/99 520/811/121 514/808/105 +f 506/788/122 520/811/121 507/813/99 +f 506/788/122 507/814/99 526/784/123 +f 526/784/123 507/815/99 513/816/124 +f 519/805/125 513/779/124 507/817/99 +f 507/818/99 508/806/112 519/805/125 +f 538/819/126 543/820/127 537/821/128 +f 539/822/129 544/823/130 538/819/126 +f 553/824/131 537/825/128 554/826/132 +f 539/827/129 553/824/131 552/828/133 +f 531/829/134 554/826/132 530/830/135 +f 532/831/136 553/824/131 531/829/134 +f 547/832/137 530/830/135 548/833/138 +f 541/834/139 548/833/138 542/835/140 +f 549/836/141 541/834/139 542/835/140 +f 543/820/127 535/837/142 536/838/143 +f 536/838/143 550/839/144 549/836/141 +f 536/838/143 549/836/141 529/840/95 +f 549/836/141 542/835/140 529/841/95 +f 548/833/138 529/842/95 542/835/140 +f 529/843/95 548/833/138 530/830/135 +f 529/844/95 530/830/135 554/826/132 +f 554/826/132 537/825/128 529/845/95 +f 543/820/127 529/846/95 537/821/128 +f 529/847/95 543/820/127 536/838/143 +f 535/837/142 545/848/145 534/849/146 +f 551/850/147 535/837/142 534/849/146 +f 541/834/139 551/850/147 540/851/148 +f 533/852/99 551/850/147 534/849/146 +f 551/850/147 533/853/99 540/851/148 +f 546/854/149 541/834/139 540/851/148 +f 531/829/134 546/854/149 532/831/136 +f 533/855/99 546/854/149 540/851/148 +f 532/831/136 546/854/149 533/856/99 +f 532/831/136 533/857/99 552/828/133 +f 552/828/133 533/858/99 539/827/129 +f 545/848/145 539/822/129 533/859/99 +f 533/860/99 534/849/146 545/848/145 +f 564/861/139 569/862/138 563/863/140 +f 565/864/148 570/865/137 564/861/139 +f 579/866/144 563/867/140 580/868/141 +f 565/869/148 579/866/144 578/870/147 +f 557/871/142 580/868/141 556/872/143 +f 558/873/146 579/866/144 557/871/142 +f 573/874/130 556/872/143 574/875/127 +f 567/876/126 574/875/127 568/877/128 +f 575/878/132 567/876/126 568/877/128 +f 569/862/138 561/879/134 562/880/135 +f 562/880/135 576/881/131 575/878/132 +f 562/880/135 575/878/132 555/882/95 +f 575/878/132 568/877/128 555/883/95 +f 574/875/127 555/884/95 568/877/128 +f 555/885/95 574/875/127 556/872/143 +f 555/886/95 556/872/143 580/868/141 +f 580/868/141 563/867/140 555/887/95 +f 569/862/138 555/888/95 563/863/140 +f 555/889/95 569/862/138 562/880/135 +f 561/879/134 571/890/149 560/891/136 +f 577/892/133 561/879/134 560/891/136 +f 567/876/126 577/892/133 566/893/129 +f 559/894/99 577/892/133 560/891/136 +f 577/892/133 559/895/99 566/893/129 +f 572/896/145 567/876/126 566/893/129 +f 557/871/142 572/896/145 558/873/146 +f 559/897/99 572/896/145 566/893/129 +f 558/873/146 572/896/145 559/898/99 +f 558/873/146 559/899/99 578/870/147 +f 578/870/147 559/900/99 565/869/148 +f 571/890/149 565/864/148 559/901/99 +f 559/902/99 560/891/136 571/890/149 +f 433/647/76 434/650/79 440/648/77 +f 434/650/79 435/687/101 441/651/80 +f 449/652/81 434/656/79 433/653/76 +f 448/655/83 435/686/101 434/656/79 +f 427/657/84 449/652/81 450/654/82 +f 448/655/83 449/652/81 427/657/84 +f 444/660/87 443/661/88 427/657/84 +f 443/661/88 444/660/87 438/662/89 +f 446/664/91 437/663/90 438/662/89 +f 439/649/78 440/648/77 431/666/93 +f 431/666/93 446/664/91 445/665/92 +f 440/648/77 441/651/80 430/676/96 +f 446/664/91 431/666/93 430/676/96 +f 437/663/90 446/664/91 447/677/97 +f 442/681/100 443/661/88 437/663/90 +f 427/657/84 443/661/88 442/681/100 +f 459/690/89 460/693/90 466/691/88 +f 460/693/90 461/730/98 467/694/100 +f 475/695/91 460/699/90 459/696/89 +f 474/698/97 461/729/98 460/699/90 +f 453/700/93 475/695/91 476/697/92 +f 474/698/97 475/695/91 453/700/93 +f 470/703/78 469/704/77 453/700/93 +f 469/704/77 470/703/78 464/705/76 +f 472/707/81 463/706/79 464/705/76 +f 465/692/87 466/691/88 457/709/84 +f 457/709/84 472/707/81 471/708/82 +f 466/691/88 467/694/100 456/719/86 +f 472/707/81 457/709/84 456/719/86 +f 463/706/79 472/707/81 473/720/83 +f 468/724/80 469/704/77 463/706/79 +f 453/700/93 469/704/77 468/724/80 +f 485/733/102 486/737/106 492/734/103 +f 487/736/105 493/762/121 492/734/103 +f 502/738/107 501/742/109 486/739/106 +f 500/741/108 487/773/105 486/739/106 +f 479/743/110 501/742/109 502/738/107 +f 500/741/108 501/742/109 479/743/110 +f 495/746/113 479/743/110 478/744/111 +f 489/748/115 495/746/113 496/747/114 +f 498/750/117 489/748/115 490/749/116 +f 491/735/104 492/734/103 483/752/119 +f 484/753/120 483/752/119 498/750/117 +f 483/752/119 492/734/103 493/762/121 +f 499/764/123 498/750/117 483/752/119 +f 489/748/115 498/750/117 499/764/123 +f 494/768/125 495/746/113 489/748/115 +f 480/745/112 479/743/110 495/746/113 +f 511/776/116 512/780/115 518/777/113 +f 513/779/124 519/805/125 518/777/113 +f 528/781/118 527/785/117 512/782/115 +f 526/784/123 513/816/124 512/782/115 +f 505/786/119 527/785/117 528/781/118 +f 526/784/123 527/785/117 505/786/119 +f 521/789/103 505/786/119 504/787/120 +f 515/791/106 521/789/103 522/790/104 +f 524/793/109 515/791/106 516/792/102 +f 517/778/114 518/777/113 509/795/110 +f 510/796/111 509/795/110 524/793/109 +f 509/795/110 518/777/113 519/805/125 +f 525/807/108 524/793/109 509/795/110 +f 515/791/106 524/793/109 525/807/108 +f 520/811/121 521/789/103 515/791/106 +f 506/788/122 505/786/119 521/789/103 +f 538/819/126 544/823/130 543/820/127 +f 539/822/129 545/848/145 544/823/130 +f 553/824/131 538/903/126 537/825/128 +f 539/827/129 538/903/126 553/824/131 +f 531/829/134 553/824/131 554/826/132 +f 532/831/136 552/828/133 553/824/131 +f 547/832/137 531/829/134 530/830/135 +f 541/834/139 547/832/137 548/833/138 +f 549/836/141 550/839/144 541/834/139 +f 543/820/127 544/823/130 535/837/142 +f 536/838/143 535/837/142 550/839/144 +f 535/837/142 544/823/130 545/848/145 +f 551/850/147 550/839/144 535/837/142 +f 541/834/139 550/839/144 551/850/147 +f 546/854/149 547/832/137 541/834/139 +f 531/829/134 547/832/137 546/854/149 +f 564/861/139 570/865/137 569/862/138 +f 565/864/148 571/890/149 570/865/137 +f 579/866/144 564/904/139 563/867/140 +f 565/869/148 564/904/139 579/866/144 +f 557/871/142 579/866/144 580/868/141 +f 558/873/146 578/870/147 579/866/144 +f 573/874/130 557/871/142 556/872/143 +f 567/876/126 573/874/130 574/875/127 +f 575/878/132 576/881/131 567/876/126 +f 569/862/138 570/865/137 561/879/134 +f 562/880/135 561/879/134 576/881/131 +f 561/879/134 570/865/137 571/890/149 +f 577/892/133 576/881/131 561/879/134 +f 567/876/126 576/881/131 577/892/133 +f 572/896/145 573/874/130 567/876/126 +f 557/871/142 573/874/130 572/896/145 +o Hammer +v 0.625000 0.375000 -2.125000 +v 0.625000 0.551777 -2.051777 +v 0.625000 0.625000 -1.875000 +v 0.625000 0.551777 -1.698223 +v 0.625000 0.375000 -1.625000 +v 0.625000 0.198223 -1.698223 +v 0.625000 0.125000 -1.875000 +v 0.625000 0.198223 -2.051777 +v 1.000000 0.375000 -2.125000 +v 1.000000 0.551777 -2.051777 +v 1.000000 0.625000 -1.875000 +v 1.000000 0.551777 -1.698223 +v 1.000000 0.375000 -1.625000 +v 1.000000 0.198223 -1.698223 +v 1.000000 0.125000 -1.875000 +v 1.000000 0.198223 -2.051777 +v 0.906250 0.500000 -1.750000 +v 0.968750 0.500000 -1.750000 +v 0.906250 0.500000 -2.000000 +v 0.968750 0.500000 -2.000000 +v 0.906250 1.375000 -1.750000 +v 0.968750 1.375000 -1.750000 +v 0.906250 1.375000 -2.000000 +v 0.968750 1.375000 -2.000000 +v 0.906250 1.500000 -2.000000 +v 0.906250 1.500000 -1.625000 +v 0.968750 1.500000 -1.625000 +v 0.968750 1.500000 -2.000000 +v -0.625000 0.375000 -2.125000 +v -0.625000 0.551777 -2.051777 +v -0.625000 0.625000 -1.875000 +v -0.625000 0.551777 -1.698223 +v -0.625000 0.375000 -1.625000 +v -0.625000 0.198223 -1.698223 +v -0.625000 0.125000 -1.875000 +v -0.625000 0.198223 -2.051777 +v -1.000000 0.375000 -2.125000 +v -1.000000 0.551777 -2.051777 +v -1.000000 0.625000 -1.875000 +v -1.000000 0.551777 -1.698223 +v -1.000000 0.375000 -1.625000 +v -1.000000 0.198223 -1.698223 +v -1.000000 0.125000 -1.875000 +v -1.000000 0.198223 -2.051777 +v -0.906250 0.500000 -1.750000 +v -0.968750 0.500000 -1.750000 +v -0.906250 0.500000 -2.000000 +v -0.968750 0.500000 -2.000000 +v -0.906250 1.375000 -1.750000 +v -0.968750 1.375000 -1.750000 +v -0.906250 1.375000 -2.000000 +v -0.968750 1.375000 -2.000000 +v -0.906250 1.500000 -2.000000 +v -0.906250 1.500000 -1.625000 +v -0.968750 1.500000 -1.625000 +v -0.968750 1.500000 -2.000000 +vt 0.735075 0.187432 +vt 0.727628 0.156250 +vt 0.735075 0.125068 +vt 0.679105 0.421875 +vt 0.690298 0.437500 +vt 0.679105 0.437500 +vt 0.682836 0.406250 +vt 0.690298 0.421875 +vt 0.690298 0.296875 +vt 0.682836 0.296875 +vt 0.701493 0.296875 +vt 0.694030 0.406250 +vt 0.694030 0.296875 +vt 0.690298 0.406250 +vt 0.679105 0.406250 +vt 0.679105 0.296875 +vt 0.701493 0.406250 +vt 0.694030 0.421875 +vt 0.675373 0.421875 +vt 0.675373 0.437500 +vt 0.729809 0.178299 +vt 0.735075 0.187432 +vt 0.735075 0.125068 +vt 0.690298 0.437500 +vt 0.679105 0.421875 +vt 0.679105 0.437500 +vt 0.682836 0.406250 +vt 0.690298 0.421875 +vt 0.690298 0.406250 +vt 0.690298 0.296875 +vt 0.682836 0.296875 +vt 0.694030 0.406250 +vt 0.701493 0.296875 +vt 0.694030 0.296875 +vt 0.679105 0.406250 +vt 0.679105 0.296875 +vt 0.694030 0.421875 +vt 0.701493 0.406250 +vt 0.675373 0.421875 +vt 0.675373 0.437500 +vt 0.742521 0.156250 +vt 0.740340 0.178299 +vt 0.729809 0.178299 +vt 0.729809 0.134201 +vt 0.740340 0.134201 +vt 0.705224 0.421875 +vt 0.740340 0.178299 +vt 0.742521 0.156250 +vt 0.740340 0.134201 +vt 0.729809 0.134201 +vt 0.727628 0.156250 +vt 0.705224 0.421875 +vt 0.727612 0.140625 +vt 0.716418 0.125000 +vt 0.727612 0.125000 +vt 0.727612 0.234375 +vt 0.716418 0.218750 +vt 0.727612 0.218750 +vt 0.727612 0.203125 +vt 0.716418 0.187500 +vt 0.727612 0.187500 +vt 0.727612 0.171875 +vt 0.716418 0.156250 +vt 0.727612 0.156250 +vt 0.716418 0.140625 +vt 0.727612 0.250000 +vt 0.716418 0.234375 +vt 0.716418 0.203125 +vt 0.716418 0.171875 +vt 0.716418 0.125000 +vt 0.727612 0.140625 +vt 0.727612 0.125000 +vt 0.716418 0.218750 +vt 0.727612 0.234375 +vt 0.727612 0.218750 +vt 0.716418 0.187500 +vt 0.727612 0.203125 +vt 0.727612 0.187500 +vt 0.716418 0.156250 +vt 0.727612 0.171875 +vt 0.727612 0.156250 +vt 0.716418 0.140625 +vt 0.716418 0.234375 +vt 0.727612 0.250000 +vt 0.716418 0.203125 +vt 0.716418 0.171875 +vt 0.716418 0.250000 +vt 0.716418 0.250000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +s off +f 591/905/150 593/906/150 595/907/150 +f 607/908/151 605/909/151 606/910/151 +f 602/911/150 608/912/150 607/908/150 +f 600/913/150 602/911/150 598/914/150 +f 597/915/152 603/916/152 599/917/152 +f 599/917/153 604/918/153 600/913/153 +f 598/914/154 601/919/154 597/920/154 +f 601/921/152 605/922/152 603/916/152 +f 603/916/153 608/912/153 604/918/153 +f 602/923/155 606/910/155 601/924/155 +f 620/925/152 619/926/152 623/927/152 +f 633/928/151 635/929/151 634/930/151 +f 630/931/152 636/932/152 632/933/152 +f 630/931/152 628/934/152 626/935/152 +f 631/936/150 625/937/150 627/938/150 +f 632/933/153 627/938/153 628/934/153 +f 629/939/154 626/935/154 625/940/154 +f 633/941/150 629/942/150 631/936/150 +f 636/932/153 631/936/153 632/933/153 +f 634/930/155 630/943/155 629/944/155 +f 589/945/150 590/946/150 591/905/150 +f 591/905/150 592/947/150 593/906/150 +f 593/906/150 594/948/150 595/907/150 +f 595/907/150 596/949/150 589/945/150 +f 589/945/150 591/905/150 595/907/150 +f 607/908/151 608/912/151 605/909/151 +f 602/911/150 604/918/150 608/912/150 +f 600/913/150 604/918/150 602/911/150 +f 597/915/152 601/921/152 603/916/152 +f 599/917/153 603/916/153 604/918/153 +f 598/914/154 602/911/154 601/919/154 +f 601/921/152 606/950/152 605/922/152 +f 603/916/153 605/922/153 608/912/153 +f 602/923/155 607/908/155 606/910/155 +f 619/926/152 618/951/152 623/927/152 +f 618/951/152 617/952/152 623/927/152 +f 617/952/152 624/953/152 623/927/152 +f 623/927/152 622/954/152 621/955/152 +f 621/955/152 620/925/152 623/927/152 +f 633/928/151 636/932/151 635/929/151 +f 630/931/152 635/929/152 636/932/152 +f 630/931/152 632/933/152 628/934/152 +f 631/936/150 629/942/150 625/937/150 +f 632/933/153 631/936/153 627/938/153 +f 629/939/154 630/931/154 626/935/154 +f 633/941/150 634/956/150 629/942/150 +f 636/932/153 633/941/153 631/936/153 +f 634/930/155 635/929/155 630/943/155 +s 1 +f 588/957/156 595/958/157 587/959/157 +f 586/960/155 593/961/154 585/962/154 +f 584/963/158 591/964/151 583/965/151 +f 582/966/159 589/967/153 581/968/153 +f 581/968/153 596/969/156 588/957/156 +f 587/970/157 594/971/155 586/960/155 +f 585/962/154 592/972/158 584/963/158 +f 583/965/151 590/973/159 582/966/159 +f 623/974/157 616/975/156 615/976/157 +f 621/977/154 614/978/155 613/979/154 +f 619/980/151 612/981/158 611/982/151 +f 617/983/153 610/984/159 609/985/153 +f 624/986/156 609/985/153 616/975/156 +f 622/987/155 615/988/157 614/978/155 +f 620/989/158 613/979/154 612/981/158 +f 618/990/159 611/982/151 610/984/159 +f 588/957/156 596/969/156 595/958/157 +f 586/960/155 594/971/155 593/961/154 +f 584/963/158 592/972/158 591/964/151 +f 582/966/159 590/973/159 589/967/153 +f 581/968/153 589/967/153 596/969/156 +f 587/970/157 595/991/157 594/971/155 +f 585/962/154 593/961/154 592/972/158 +f 583/965/151 591/964/151 590/973/159 +f 623/974/157 624/986/156 616/975/156 +f 621/977/154 622/987/155 614/978/155 +f 619/980/151 620/989/158 612/981/158 +f 617/983/153 618/990/159 610/984/159 +f 624/986/156 617/983/153 609/985/153 +f 622/987/155 623/992/157 615/988/157 +f 620/989/158 621/977/154 613/979/154 +f 618/990/159 619/980/151 611/982/151 +o Trigger +v -0.125000 -0.875000 -1.250000 +v 0.125000 -0.875000 -1.250000 +v -0.125000 -0.875000 -1.500000 +v 0.125000 -0.875000 -1.500000 +v -0.125000 -1.250000 -1.250000 +v 0.125000 -1.250000 -1.250000 +v -0.125000 -1.250000 -1.500000 +v 0.125000 -1.250000 -1.500000 +v -0.125000 -2.000000 -1.750000 +v 0.125000 -2.000000 -1.750000 +v 0.125000 -1.500000 -1.750000 +v -0.125000 -1.500000 -1.750000 +v 0.125000 -2.000000 -1.000000 +v -0.125000 -2.000000 -1.000000 +v 0.125000 -1.500000 -1.000000 +v -0.125000 -1.500000 -1.000000 +v -0.125000 -1.500000 -0.875000 +v -0.125000 -1.250000 -1.125000 +v 0.125000 -1.250000 -1.125000 +v 0.125000 -1.500000 -0.875000 +v -0.125000 -1.250000 -1.625000 +v -0.125000 -1.500000 -1.875000 +v 0.125000 -1.500000 -1.875000 +v 0.125000 -1.250000 -1.625000 +v -0.125000 -2.250000 -1.125000 +v -0.125000 -2.000000 -0.875000 +v 0.125000 -2.000000 -0.875000 +v 0.125000 -2.250000 -1.125000 +v 0.125000 -2.250000 -1.625000 +v 0.125000 -2.000000 -1.875000 +v -0.125000 -2.000000 -1.875000 +v -0.125000 -2.250000 -1.625000 +v -0.125000 -1.375000 -1.125000 +v 0.125000 -1.375000 -1.125000 +v -0.125000 -1.375000 -1.625000 +v 0.125000 -1.375000 -1.625000 +v -0.125000 -2.125000 -1.125000 +v 0.125000 -2.125000 -1.125000 +v 0.125000 -2.125000 -1.625000 +v -0.125000 -2.125000 -1.625000 +vt 0.119403 0.828125 +vt 0.126866 0.781250 +vt 0.126866 0.828125 +vt 0.104478 0.828125 +vt 0.111940 0.781250 +vt 0.111940 0.828125 +vt 0.119403 0.781250 +vt 0.134328 0.781250 +vt 0.134328 0.828125 +vt 0.041045 0.859375 +vt 0.026119 0.875000 +vt 0.026119 0.859375 +vt 0.078358 0.828125 +vt 0.093284 0.812500 +vt 0.093284 0.828125 +vt 0.026119 0.828125 +vt 0.041045 0.812500 +vt 0.041045 0.828125 +vt 0.093284 0.859375 +vt 0.078358 0.875000 +vt 0.078358 0.859375 +vt 0.067164 0.859375 +vt 0.052239 0.875000 +vt 0.052239 0.859375 +vt 0.052239 0.828125 +vt 0.067164 0.812500 +vt 0.067164 0.828125 +vt 0.000000 0.828125 +vt 0.014925 0.812500 +vt 0.014925 0.828125 +vt 0.014925 0.859375 +vt 0.000000 0.875000 +vt 0.000000 0.859375 +vt 0.018657 0.875000 +vt 0.022388 0.875000 +vt 0.022388 0.812500 +vt 0.044776 0.875000 +vt 0.048507 0.812500 +vt 0.044776 0.812500 +vt 0.070896 0.875000 +vt 0.074627 0.875000 +vt 0.074627 0.812500 +vt 0.104478 0.859375 +vt 0.097015 0.875000 +vt 0.100746 0.812500 +vt 0.097015 0.812500 +vt 0.104478 0.781250 +vt 0.041045 0.875000 +vt 0.078358 0.812500 +vt 0.026119 0.812500 +vt 0.093284 0.875000 +vt 0.067164 0.875000 +vt 0.052239 0.812500 +vt 0.000000 0.812500 +vt 0.014925 0.875000 +vt 0.018657 0.812500 +vt 0.048507 0.875000 +vt 0.070896 0.812500 +vt 0.100746 0.875000 +vt 0.104478 0.828125 +vt 0.014925 0.781250 +vt 0.000000 0.781250 +vt 0.022388 0.781250 +vt 0.018657 0.781250 +vt 0.026119 0.781250 +vt 0.044776 0.781250 +vt 0.052239 0.781250 +vt 0.070896 0.781250 +vt 0.093284 0.781250 +vt 0.078358 0.781250 +vt 0.100746 0.781250 +vt 0.041045 0.781250 +vt 0.048507 0.781250 +vt 0.067164 0.781250 +vt 0.074627 0.781250 +vt 0.097015 0.781250 +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.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.0000 -0.3827 0.9239 +s off +f 640/993/160 643/994/160 639/995/160 +f 637/996/161 642/997/161 638/998/161 +f 638/998/162 644/999/162 640/993/162 +f 639/995/163 641/1000/163 637/1001/163 +f 653/1002/163 650/1003/163 662/1004/163 +f 659/1005/162 646/1006/162 666/1007/162 +f 663/1008/162 651/1009/162 656/1010/162 +f 667/1011/163 648/1012/163 658/1013/163 +f 657/1014/163 669/1015/163 654/1016/163 +f 655/1017/162 672/1018/162 660/1019/162 +f 665/1020/162 674/1021/162 664/1022/162 +f 661/1023/163 676/1024/163 668/1025/163 +f 673/1026/163 662/1004/163 650/1027/163 +f 664/1022/162 649/1028/162 663/1008/162 +f 654/1016/163 652/1029/163 653/1002/163 +f 670/1030/162 656/1010/162 651/1031/162 +f 671/1032/163 658/1013/163 648/1033/163 +f 660/1019/162 647/1034/162 659/1005/162 +f 668/1035/163 645/1036/163 667/1011/163 +f 675/1037/162 666/1007/162 646/1038/162 +f 640/993/160 644/999/160 643/994/160 +f 637/996/161 641/1039/161 642/997/161 +f 638/998/162 642/997/162 644/999/162 +f 639/995/163 643/994/163 641/1000/163 +f 653/1002/163 652/1040/163 650/1003/163 +f 659/1005/162 647/1041/162 646/1006/162 +f 663/1008/162 649/1042/162 651/1009/162 +f 667/1011/163 645/1043/163 648/1012/163 +f 657/1014/163 671/1044/163 669/1015/163 +f 655/1017/162 670/1045/162 672/1018/162 +f 665/1020/162 675/1046/162 674/1021/162 +f 661/1023/163 673/1047/163 676/1024/163 +f 673/1026/163 661/1023/163 662/1004/163 +f 664/1022/162 674/1048/162 649/1028/162 +f 654/1016/163 669/1049/163 652/1029/163 +f 670/1030/162 655/1017/162 656/1010/162 +f 671/1032/163 657/1014/163 658/1013/163 +f 660/1019/162 672/1050/162 647/1034/162 +f 668/1035/163 676/1051/163 645/1036/163 +f 675/1037/162 665/1052/162 666/1007/162 +s 1 +f 660/1019/164 654/1016/165 655/1017/165 +f 659/1005/166 667/1011/167 658/1013/166 +f 661/1023/168 665/1020/169 664/1022/168 +f 656/1010/170 654/1016/165 653/1002/170 +f 658/1013/166 660/1019/164 659/1005/166 +f 664/1022/168 662/1004/171 661/1023/168 +f 668/1035/169 666/1007/167 665/1052/169 +f 653/1002/170 663/1008/171 656/1010/170 +f 673/1053/164 675/1046/165 676/1054/165 +f 650/1055/166 674/1048/164 673/1056/164 +f 650/1057/166 651/1009/167 649/1042/166 +f 652/1058/167 670/1030/169 651/1031/167 +f 669/1059/169 672/1018/168 670/1045/169 +f 671/1060/168 647/1034/171 672/1050/168 +f 645/1061/170 647/1041/171 648/1062/171 +f 646/1038/170 676/1063/165 675/1037/165 +f 660/1019/164 657/1014/164 654/1016/165 +f 659/1005/166 666/1007/167 667/1011/167 +f 661/1023/168 668/1025/169 665/1020/169 +f 656/1010/170 655/1017/165 654/1016/165 +f 658/1013/166 657/1014/164 660/1019/164 +f 664/1022/168 663/1008/171 662/1004/171 +f 668/1035/169 667/1011/167 666/1007/167 +f 653/1002/170 662/1004/171 663/1008/171 +f 673/1053/164 674/1021/164 675/1046/165 +f 650/1055/166 649/1028/166 674/1048/164 +f 650/1057/166 652/1064/167 651/1009/167 +f 652/1058/167 669/1065/169 670/1030/169 +f 669/1059/169 671/1066/168 672/1018/168 +f 671/1060/168 648/1067/171 647/1034/171 +f 645/1061/170 646/1006/170 647/1041/171 +f 646/1038/170 645/1068/170 676/1063/165 +o Grip +v 0.000000 1.000000 0.000000 +v -0.500000 0.866025 0.000000 +v -0.866025 0.500000 0.000000 +v -1.000000 -0.000000 -0.000000 +v -0.866025 -0.500000 -0.000000 +v -0.500000 -0.866025 -0.000000 +v 0.000000 -1.000000 -0.000000 +v 0.500000 -0.866026 -0.000000 +v 0.866025 -0.500000 -0.000000 +v 1.000000 -0.000000 -0.000000 +v 0.866026 0.499999 0.000000 +v 0.500000 0.866025 0.000000 +v -0.500000 0.866025 -0.500000 +v 0.000000 1.000000 -0.500000 +v -0.866025 0.500000 -0.500000 +v -1.000000 -0.000000 -0.500000 +v -0.866025 -0.500000 -0.500000 +v -0.500000 -0.866025 -0.500000 +v 0.000000 -1.000000 -0.500000 +v 0.500000 -0.866026 -0.500000 +v 0.866025 -0.500000 -0.500000 +v 1.000000 -0.000000 -0.500000 +v 0.866026 0.500000 -0.500000 +v 0.500000 0.866025 -0.500000 +v 0.875000 -0.875000 -0.125000 +v 0.875000 0.125000 -0.125000 +v 0.875000 -0.875000 -0.375000 +v 0.875000 0.125000 -0.375000 +v 1.125000 -0.875000 -0.125000 +v 1.125000 -0.125000 -0.125000 +v 1.125000 -0.875000 -0.375000 +v 1.125000 -0.125000 -0.375000 +v -1.125000 -0.125000 -0.125000 +v 0.875000 -1.125000 -0.125000 +v -1.125000 -0.875000 -0.125000 +v 1.125000 -1.125000 -0.125000 +v 0.875000 -0.875000 6.125000 +v 1.125000 -0.875000 6.125000 +v 0.875000 -1.125000 6.125000 +v 1.125000 -1.125000 6.125000 +v 0.875000 -0.875000 6.375000 +v 1.125000 -0.875000 6.375000 +v -1.125000 -0.125000 -0.375000 +v -1.125000 -0.875000 -0.375000 +v 0.875000 0.625000 6.125000 +v 1.125000 0.625000 6.125000 +v 0.875000 0.625000 6.375000 +v 1.125000 0.625000 6.375000 +v 0.625000 0.875000 6.125000 +v 0.625000 0.875000 6.375000 +v -0.625000 0.875000 6.125000 +v -0.625000 0.875000 6.375000 +v 0.625000 1.125000 6.125000 +v 0.625000 1.125000 6.375000 +v -0.625000 1.125000 6.125000 +v -0.625000 1.125000 6.375000 +v -0.875000 -0.875000 -0.125000 +v -0.875000 0.125000 -0.125000 +v -0.875000 -0.875000 -0.375000 +v -0.875000 0.125000 -0.375000 +v -1.125000 -1.125000 -0.125000 +v -0.875000 -1.125000 -0.125000 +v -1.125000 -0.875000 6.125000 +v -0.875000 -0.875000 6.125000 +v -1.125000 -1.125000 6.125000 +v -0.875000 -1.125000 6.125000 +v -1.125000 -0.875000 6.375000 +v -0.875000 -0.875000 6.375000 +v -1.125000 0.625000 6.125000 +v -0.875000 0.625000 6.125000 +v -1.125000 0.625000 6.375000 +v -0.875000 0.625000 6.375000 +v -0.875000 -0.375000 -0.500000 +v 0.875000 -0.375000 -0.500000 +v -0.875000 0.375000 -0.500000 +v 0.875000 0.375000 -0.500000 +v -0.375000 0.875000 -0.500000 +v -0.375000 -0.875000 -0.500000 +v 0.375000 0.875000 -0.500000 +v 0.375000 -0.875000 -0.500000 +v -0.875000 -0.375000 -3.000000 +v 0.875000 -0.375000 -3.000000 +v -0.875000 0.375000 -3.000000 +v 0.875000 0.375000 -3.000000 +v -0.375000 0.875000 -3.000000 +v -0.375000 -0.875000 -3.000000 +v 0.375000 0.875000 -3.000000 +v 0.375000 -0.875000 -3.000000 +v -0.875000 -1.625000 -4.875000 +v 0.875000 -1.625000 -4.875000 +v -0.875000 -0.875000 -5.250000 +v 0.875000 -0.875000 -5.250000 +v -0.375000 -0.375000 -5.500000 +v -0.375000 -2.125000 -4.625000 +v 0.375000 -0.375000 -5.500000 +v 0.375000 -2.125000 -4.625000 +v -0.875000 -2.875000 -5.750000 +v 0.875000 -2.875000 -5.750000 +v -0.875000 -2.125000 -6.500000 +v 0.875000 -2.125000 -6.500000 +v -0.375000 -1.625000 -7.000000 +v -0.375000 -3.375000 -5.250000 +v 0.375000 -1.625000 -7.000000 +v 0.375000 -3.375000 -5.250000 +v 0.875000 0.250000 -0.500000 +v 1.000000 0.250000 -0.500000 +v 0.875000 0.250000 -1.000000 +v 1.000000 0.250000 -1.000000 +v 0.875000 0.375000 -1.000000 +v 0.875000 0.375000 -0.500000 +v 1.000000 0.375000 -0.500000 +v 1.000000 0.375000 -1.000000 +v -0.875000 0.250000 -0.500000 +v -1.000000 0.250000 -0.500000 +v -0.875000 0.250000 -1.000000 +v -1.000000 0.250000 -1.000000 +v -0.875000 0.375000 -1.000000 +v -0.875000 0.375000 -0.500000 +v -1.000000 0.375000 -0.500000 +v -1.000000 0.375000 -1.000000 +v -0.187500 0.875000 -0.562500 +v 0.187500 0.875000 -0.562500 +v -0.187500 0.875000 -0.937500 +v 0.187500 0.875000 -0.937500 +v -0.187500 1.375000 -0.812500 +v -0.187500 1.375000 -0.687500 +v 0.187500 1.375000 -0.687500 +v 0.187500 1.375000 -0.812500 +v -0.062500 1.375000 -0.687500 +v 0.062500 1.375000 -0.687500 +v 0.062500 1.375000 -0.812500 +v -0.062500 1.375000 -0.812500 +v -0.062500 1.125000 -0.625000 +v 0.062500 1.125000 -0.625000 +v 0.062500 1.125000 -0.875000 +v -0.062500 1.125000 -0.875000 +vt 0.276412 0.187560 +vt 0.328065 0.187560 +vt 0.302239 0.374880 +vt 0.276412 0.437560 +vt 0.302239 0.375120 +vt 0.328065 0.562440 +vt -0.000000 0.125000 +vt 0.029851 0.093750 +vt 0.029851 0.125000 +vt 0.007463 0.062500 +vt 0.029851 0.062500 +vt 0.029851 0.031250 +vt 0.007463 0.031250 +vt 0.029851 0.000000 +vt 0.037313 0.031250 +vt -0.000000 0.062500 +vt 0.619403 0.031250 +vt 0.597015 0.062500 +vt 0.597015 0.031250 +vt 0.037313 0.093750 +vt 0.223881 0.125000 +vt 0.037313 0.125000 +vt 0.619403 0.062500 +vt 0.597015 0.093750 +vt 0.037313 0.125000 +vt 0.231343 0.000000 +vt 0.276119 0.031250 +vt 0.231343 0.031250 +vt 0.037313 0.031250 +vt 0.223881 0.062500 +vt 0.037313 0.062500 +vt 0.037313 -0.000000 +vt 0.223881 0.031250 +vt 0.223881 0.093750 +vt 0.231343 0.125000 +vt 0.223881 0.125000 +vt 0.231343 0.093750 +vt 0.626866 0.093750 +vt 0.597015 0.125000 +vt 0.223881 0.031250 +vt 0.231343 0.062500 +vt 0.279851 0.093750 +vt 0.291045 0.125000 +vt 0.279851 0.125000 +vt 0.276119 0.125000 +vt 0.276119 0.093750 +vt 0.276119 0.062500 +vt 0.294776 0.093750 +vt 0.332090 0.125000 +vt 0.294776 0.125000 +vt 0.332090 0.062500 +vt 0.332090 0.093750 +vt 0.332090 0.000000 +vt 0.294776 0.031250 +vt 0.294776 0.000000 +vt 0.332090 0.031250 +vt 0.291045 0.000000 +vt 0.279851 0.000000 +vt 0.294776 0.062500 +vt 0.597015 0.000000 +vt 0.589552 0.125000 +vt 0.626866 0.031250 +vt 0.626866 0.062500 +vt 0.589552 0.062500 +vt 0.402985 0.031250 +vt 0.589552 0.031250 +vt 0.589552 0.031250 +vt 0.395522 0.031250 +vt 0.350746 0.000000 +vt 0.395522 0.000000 +vt 0.589552 0.125000 +vt 0.402985 0.093750 +vt 0.589552 0.093750 +vt 0.402985 0.000000 +vt 0.589552 0.000000 +vt 0.402985 0.062500 +vt 0.402985 0.031250 +vt 0.395522 0.062500 +vt 0.402985 0.125000 +vt 0.395522 0.125000 +vt 0.395522 0.093750 +vt 0.350746 0.031250 +vt 0.350746 0.062500 +vt 0.350746 0.093750 +vt 0.335821 0.093750 +vt 0.347015 0.125000 +vt 0.335821 0.125000 +vt 0.347015 0.000000 +vt 0.335821 0.000000 +vt 0.347015 0.093750 +vt 0.570895 0.828125 +vt 0.548507 0.671875 +vt 0.570895 0.609375 +vt 0.656716 0.562500 +vt 0.641791 0.578125 +vt 0.641791 0.562500 +vt 0.641791 0.593750 +vt 0.656716 0.609375 +vt 0.641791 0.609375 +vt 0.660448 0.578125 +vt 0.656716 0.593750 +vt 0.656716 0.578125 +vt 0.638060 0.593750 +vt 0.638060 0.578125 +vt 0.641791 0.593750 +vt 0.656716 0.609375 +vt 0.641791 0.609375 +vt 0.656716 0.562500 +vt 0.641791 0.578125 +vt 0.641791 0.562500 +vt 0.656716 0.578125 +vt 0.660448 0.593750 +vt 0.656716 0.593750 +vt 0.638060 0.578125 +vt 0.638060 0.593750 +vt 0.690298 0.203125 +vt 0.694030 0.187500 +vt 0.694030 0.203125 +vt 0.675373 0.171875 +vt 0.675373 0.218750 +vt 0.716418 0.218750 +vt 0.701493 0.187500 +vt 0.716418 0.171875 +vt 0.697761 0.203125 +vt 0.701493 0.203125 +vt 0.686567 0.281250 +vt 0.694030 0.296875 +vt 0.686567 0.296875 +vt 0.705224 0.296875 +vt 0.697761 0.265625 +vt 0.705224 0.281250 +vt 0.694030 0.234375 +vt 0.697761 0.234375 +vt 0.701493 0.265625 +vt 0.697761 0.156250 +vt 0.697761 0.187500 +vt 0.694030 0.156250 +vt 0.690298 0.187500 +vt 0.690298 0.125000 +vt 0.701493 0.125000 +vt 0.697761 0.296875 +vt 0.694030 0.265625 +vt 0.600746 0.609375 +vt 0.623134 0.765625 +vt 0.600746 0.828125 +vt 0.287328 0.358149 +vt 0.276412 0.312440 +vt 0.272417 0.250000 +vt 0.287328 0.141851 +vt 0.302239 0.125120 +vt 0.317150 0.141851 +vt 0.332061 0.250000 +vt 0.328065 0.312440 +vt 0.317150 0.358149 +vt 0.317150 0.608149 +vt 0.302239 0.624880 +vt 0.287328 0.608149 +vt 0.276412 0.562440 +vt 0.272417 0.500000 +vt 0.287328 0.391851 +vt 0.317150 0.391851 +vt 0.328065 0.437560 +vt 0.332061 0.500000 +vt -0.000000 0.093750 +vt -0.000000 0.000000 +vt -0.000000 0.031250 +vt 0.276119 0.000000 +vt 0.223881 0.000000 +vt 0.626866 0.125000 +vt 0.291045 0.093750 +vt 0.626866 0.000000 +vt 0.402985 0.125000 +vt 0.350746 0.125000 +vt 0.548507 0.765625 +vt 0.660448 0.593750 +vt 0.660448 0.578125 +vt 0.690298 0.265625 +vt 0.623134 0.671875 +vt 0.257463 0.625000 +vt 0.272388 0.687500 +vt 0.257463 0.687500 +vt 0.257463 0.312500 +vt 0.272388 0.375000 +vt 0.257463 0.375000 +vt 0.257463 0.125000 +vt 0.272388 0.187500 +vt 0.257463 0.187500 +vt 0.272388 0.750000 +vt 0.257463 0.750000 +vt 0.272388 0.437500 +vt 0.257463 0.437500 +vt 0.257463 0.500000 +vt 0.272388 0.562500 +vt 0.257463 0.562500 +vt 0.272388 0.250000 +vt 0.257463 0.250000 +vt 0.272388 0.812500 +vt 0.257463 0.812500 +vt 0.272388 0.500000 +vt 0.272388 0.625000 +vt 0.272388 0.312500 +vt 0.272388 0.875000 +vt 0.257463 0.875000 +vt 0.406716 0.406250 +vt 0.332090 0.500000 +vt 0.332090 0.406250 +vt 0.406716 0.125000 +vt 0.332090 0.218750 +vt 0.332090 0.125000 +vt 0.406716 0.500000 +vt 0.332090 0.593750 +vt 0.406716 0.593750 +vt 0.332090 0.687500 +vt 0.406716 0.781250 +vt 0.332090 0.875000 +vt 0.332090 0.781250 +vt 0.332090 0.312500 +vt 0.406716 0.218750 +vt 0.406716 0.609375 +vt 0.414179 0.515625 +vt 0.488806 0.609375 +vt 0.406716 0.703125 +vt 0.488806 0.703125 +vt 0.421642 0.906250 +vt 0.488806 0.796875 +vt 0.488806 0.906250 +vt 0.421642 0.406250 +vt 0.488806 0.312500 +vt 0.488806 0.406250 +vt 0.414179 0.796875 +vt 0.429104 0.312500 +vt 0.488806 0.218750 +vt 0.488806 0.515625 +vt 0.429104 0.218750 +vt 0.421642 0.125000 +vt 0.488806 0.671875 +vt 0.488806 0.765625 +vt 0.496269 0.562500 +vt 0.503731 0.437500 +vt 0.548507 0.578125 +vt 0.507463 0.328125 +vt 0.548507 0.328125 +vt 0.507463 0.234375 +vt 0.503731 0.125000 +vt 0.548507 0.234375 +vt 0.503731 1.000000 +vt 0.548507 0.875000 +vt 0.548507 1.000000 +vt 0.496269 0.875000 +vt 0.488806 0.125000 +vt 0.548507 0.437500 +vt 0.548507 0.125000 +vt 0.272388 0.125000 +vt 0.406716 0.687500 +vt 0.406716 0.875000 +vt 0.406716 0.312500 +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.7071 0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.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.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 0.2425 0.9701 +vn 0.0000 0.2425 -0.9701 +vn -0.8660 0.5000 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.8660 -0.5000 -0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.9474 -0.3073 0.0890 +vn 0.9239 0.3827 0.0000 +vn 0.9239 -0.3827 0.0000 +vn -0.9474 -0.3073 0.0890 +vn -0.3827 -0.9239 0.0000 +vn -0.9239 -0.3827 0.0000 +vn 0.8995 0.4220 -0.1137 +vn 0.3827 0.9239 0.0000 +vn 0.3595 0.9099 -0.2070 +vn -0.3827 0.9239 0.0000 +vn -0.8995 0.4220 -0.1137 +vn -0.9239 0.3827 0.0000 +vn 0.3827 -0.9239 0.0000 +vn -0.3933 -0.8620 0.3198 +vn 0.3916 0.7677 -0.5072 +vn -0.3595 0.9099 -0.2070 +vn -0.3916 0.7677 -0.5072 +vn -0.9259 0.3078 -0.2189 +vn -0.9481 -0.2244 0.2254 +vn 0.3988 -0.5746 0.7147 +vn 0.9481 -0.2244 0.2254 +vn 0.3933 -0.8620 0.3198 +vn -0.3988 -0.5746 0.7147 +vn 0.9259 0.3078 -0.2189 +vn -0.4348 0.6780 -0.5927 +vn 0.4348 0.6780 -0.5927 +vn 0.9530 0.2142 -0.2142 +vn 0.3909 -0.4393 0.8089 +vn -0.3909 -0.4393 0.8089 +vn -0.9530 0.2142 -0.2142 +vn -0.9414 -0.1935 0.2764 +vn 0.9414 -0.1935 0.2764 +s off +f 681/1069/172 685/1070/172 677/1071/172 +f 697/1072/173 695/1073/173 691/1074/173 +f 702/1075/174 703/1076/174 701/1077/174 +f 703/1076/173 708/1078/173 707/1079/173 +f 708/1078/175 705/1080/175 707/1079/175 +f 706/1081/172 701/1082/172 705/1080/172 +f 707/1079/175 705/1080/175 712/1083/175 +f 704/1084/176 706/1081/176 708/1078/176 +f 709/1085/174 720/1086/174 711/1087/174 +f 710/1088/174 713/1089/174 701/1090/174 +f 719/1091/173 735/1092/173 720/1086/173 +f 701/1077/174 703/1076/174 710/1093/174 +f 713/1094/173 722/1095/173 714/1096/173 +f 705/1097/175 716/1098/175 712/1099/175 +f 701/1100/177 714/1101/177 705/1097/177 +f 712/1099/178 715/1102/178 710/1088/178 +f 707/1079/179 710/1088/179 703/1076/179 +f 713/1103/174 715/1104/174 717/1105/174 +f 736/1106/175 733/1107/175 735/1092/175 +f 716/1108/175 714/1096/175 718/1109/175 +f 723/1110/180 725/1111/180 721/1112/180 +f 717/1105/174 721/1113/174 713/1103/174 +f 718/1109/172 723/1114/172 717/1105/172 +f 714/1096/175 724/1115/175 718/1109/175 +f 726/1116/178 727/1117/178 725/1118/178 +f 726/1116/172 732/1119/172 728/1120/172 +f 727/1121/173 729/1122/173 725/1123/173 +f 732/1119/177 729/1122/177 731/1124/177 +f 725/1125/173 722/1095/173 721/1126/173 +f 730/1127/172 723/1110/172 724/1115/172 +f 722/1095/176 730/1127/176 724/1115/176 +f 716/1098/181 717/1105/181 715/1102/181 +f 733/1128/172 709/1085/172 711/1087/172 +f 735/1092/175 733/1107/175 738/1129/175 +f 719/1091/182 734/1130/182 736/1131/182 +f 737/1132/174 739/1133/174 711/1134/174 +f 711/1087/174 720/1086/174 737/1135/174 +f 739/1136/173 746/1137/173 740/1138/173 +f 733/1139/175 742/1140/175 738/1141/175 +f 711/1134/177 740/1142/177 733/1143/177 +f 738/1141/178 741/1144/178 737/1132/178 +f 735/1092/179 737/1132/179 720/1086/179 +f 739/1136/174 741/1145/174 743/1146/174 +f 742/1147/175 740/1148/175 744/1149/175 +f 743/1146/174 745/1150/174 739/1136/174 +f 744/1149/172 747/1151/172 743/1146/172 +f 740/1148/175 748/1152/175 744/1149/175 +f 742/1140/181 743/1146/181 741/1144/181 +f 728/1153/183 746/1154/183 727/1155/183 +f 746/1156/173 731/1124/173 727/1157/173 +f 731/1124/182 747/1151/182 732/1119/182 +f 732/1119/172 748/1158/172 728/1153/172 +f 775/1159/179 779/1160/179 776/1161/179 +f 783/1162/178 782/1163/178 781/1164/178 +f 787/1165/177 785/1166/177 786/1167/177 +f 783/1168/173 788/1169/173 784/1170/173 +f 782/1163/172 786/1171/172 781/1172/172 +f 784/1170/175 787/1165/175 782/1163/175 +f 790/1173/178 791/1174/178 789/1175/178 +f 793/1176/177 795/1177/177 794/1178/177 +f 796/1179/173 791/1180/173 792/1181/173 +f 794/1182/172 790/1173/172 789/1183/172 +f 795/1177/174 792/1181/174 790/1173/174 +f 803/1184/177 807/1185/177 806/1186/177 +f 800/1187/175 803/1184/175 798/1188/175 +f 797/1189/174 801/1190/174 799/1191/174 +f 805/1192/177 801/1190/177 802/1193/177 +f 807/1194/174 810/1195/174 806/1196/174 +f 805/1197/175 812/1198/175 808/1199/175 +f 810/1200/184 803/1184/184 806/1186/184 +f 809/1201/184 802/1193/184 797/1202/184 +f 812/1203/185 801/1190/185 808/1204/185 +f 811/1205/185 804/1206/185 800/1207/185 +f 797/1202/184 810/1200/184 809/1201/184 +f 799/1208/185 811/1205/185 800/1207/185 +f 809/1209/177 811/1210/177 812/1198/177 +f 774/1211/179 775/1159/179 776/1161/179 +f 774/1211/179 778/1212/179 773/1213/179 +f 677/1071/172 678/1214/172 679/1215/172 +f 679/1215/172 680/1216/172 677/1071/172 +f 680/1216/172 681/1069/172 677/1071/172 +f 681/1069/172 682/1217/172 685/1070/172 +f 682/1217/172 683/1218/172 685/1070/172 +f 683/1218/172 684/1219/172 685/1070/172 +f 685/1070/172 686/1220/172 687/1221/172 +f 687/1221/172 688/1222/172 685/1070/172 +f 688/1222/172 677/1071/172 685/1070/172 +f 691/1074/173 689/1223/173 690/1224/173 +f 690/1224/173 700/1225/173 691/1074/173 +f 700/1225/173 699/1226/173 691/1074/173 +f 699/1226/173 698/1227/173 697/1072/173 +f 697/1072/173 696/1228/173 695/1073/173 +f 695/1073/173 694/1229/173 691/1074/173 +f 694/1229/173 693/1230/173 691/1074/173 +f 693/1230/173 692/1231/173 691/1074/173 +f 699/1226/173 697/1072/173 691/1074/173 +f 702/1075/174 704/1232/174 703/1076/174 +f 703/1076/173 704/1232/173 708/1078/173 +f 708/1078/175 706/1081/175 705/1080/175 +f 706/1081/172 702/1233/172 701/1082/172 +f 704/1084/176 702/1234/176 706/1081/176 +f 709/1085/174 719/1091/174 720/1086/174 +f 710/1088/174 715/1102/174 713/1089/174 +f 719/1091/173 736/1106/173 735/1092/173 +f 713/1094/173 721/1235/173 722/1095/173 +f 705/1097/175 714/1101/175 716/1098/175 +f 701/1100/177 713/1236/177 714/1101/177 +f 712/1099/178 716/1098/178 715/1102/178 +f 707/1079/179 712/1099/179 710/1088/179 +f 736/1106/175 734/1237/175 733/1107/175 +f 723/1110/180 726/1238/180 725/1111/180 +f 717/1105/174 723/1114/174 721/1113/174 +f 718/1109/172 724/1115/172 723/1114/172 +f 714/1096/175 722/1095/175 724/1115/175 +f 726/1116/178 728/1120/178 727/1117/178 +f 726/1116/172 730/1127/172 732/1119/172 +f 727/1121/173 731/1124/173 729/1122/173 +f 732/1119/177 730/1127/177 729/1122/177 +f 725/1125/173 729/1122/173 722/1095/173 +f 730/1127/172 726/1238/172 723/1110/172 +f 722/1095/176 729/1122/176 730/1127/176 +f 716/1098/181 718/1109/181 717/1105/181 +f 733/1128/172 734/1239/172 709/1085/172 +f 719/1091/182 709/1085/182 734/1130/182 +f 737/1132/174 741/1144/174 739/1133/174 +f 739/1136/173 745/1150/173 746/1137/173 +f 733/1139/175 740/1240/175 742/1140/175 +f 711/1134/177 739/1133/177 740/1142/177 +f 738/1141/178 742/1140/178 741/1144/178 +f 735/1092/179 738/1141/179 737/1132/179 +f 743/1146/174 747/1151/174 745/1150/174 +f 744/1149/172 748/1152/172 747/1151/172 +f 740/1148/175 746/1241/175 748/1152/175 +f 742/1140/181 744/1149/181 743/1146/181 +f 728/1153/183 748/1158/183 746/1154/183 +f 746/1156/173 745/1150/173 731/1124/173 +f 731/1124/182 745/1150/182 747/1151/182 +f 732/1119/172 747/1151/172 748/1158/172 +f 775/1159/179 777/1242/179 779/1160/179 +f 783/1162/178 784/1170/178 782/1163/178 +f 787/1165/177 788/1169/177 785/1166/177 +f 783/1168/173 785/1243/173 788/1169/173 +f 782/1163/172 787/1165/172 786/1171/172 +f 784/1170/175 788/1169/175 787/1165/175 +f 790/1173/178 792/1181/178 791/1174/178 +f 793/1176/177 796/1179/177 795/1177/177 +f 796/1179/173 793/1244/173 791/1180/173 +f 794/1182/172 795/1177/172 790/1173/172 +f 795/1177/174 796/1179/174 792/1181/174 +f 803/1184/177 804/1206/177 807/1185/177 +f 800/1187/175 804/1206/175 803/1184/175 +f 797/1189/174 802/1193/174 801/1190/174 +f 805/1192/177 808/1204/177 801/1190/177 +f 807/1194/174 811/1210/174 810/1195/174 +f 805/1197/175 809/1209/175 812/1198/175 +f 810/1200/184 798/1245/184 803/1184/184 +f 809/1201/184 805/1192/184 802/1193/184 +f 812/1203/185 799/1208/185 801/1190/185 +f 811/1205/185 807/1185/185 804/1206/185 +f 797/1202/184 798/1245/184 810/1200/184 +f 799/1208/185 812/1203/185 811/1205/185 +f 809/1209/177 810/1195/177 811/1210/177 +f 774/1211/179 773/1213/179 775/1159/179 +f 774/1211/179 780/1246/179 778/1212/179 +s 1 +f 679/1247/186 692/1248/174 680/1249/174 +f 686/1250/175 699/1251/187 687/1252/187 +f 683/1253/178 696/1254/188 684/1255/188 +f 680/1249/174 693/1256/189 681/1257/189 +f 687/1252/187 700/1258/190 688/1259/190 +f 677/1260/177 689/1261/191 678/1262/191 +f 684/1255/188 697/1263/192 685/1264/192 +f 681/1257/189 694/1265/193 682/1266/193 +f 688/1259/190 690/1267/177 677/1260/177 +f 678/1262/191 691/1268/186 679/1247/186 +f 685/1264/192 698/1269/175 686/1250/175 +f 682/1266/193 695/1270/178 683/1271/178 +f 758/1272/194 752/1273/195 750/1274/196 +f 757/1275/197 754/1276/198 749/1277/199 +f 760/1278/200 755/1279/201 752/1273/195 +f 763/1280/202 753/1281/203 755/1279/201 +f 759/1282/204 749/1283/199 751/1284/205 +f 756/1285/206 758/1272/194 750/1274/196 +f 753/1281/203 759/1282/204 751/1284/205 +f 762/1286/207 756/1285/206 754/1276/198 +f 763/1287/202 760/1288/200 771/1289/208 +f 761/1290/209 771/1289/208 769/1291/210 +f 757/1292/197 767/1293/211 765/1294/212 +f 758/1295/194 772/1296/213 766/1297/214 +f 759/1298/204 769/1291/210 767/1293/211 +f 764/1299/215 770/1300/216 772/1296/213 +f 758/1295/194 768/1301/217 760/1288/200 +f 762/1302/207 757/1303/197 770/1300/216 +f 771/1304/208 777/1242/218 769/1305/210 +f 771/1304/208 768/1306/217 779/1160/219 +f 766/1307/214 776/1308/220 768/1306/217 +f 772/1309/213 780/1310/221 766/1307/214 +f 770/1311/216 780/1310/221 772/1309/213 +f 770/1311/216 765/1312/212 778/1313/222 +f 765/1314/212 775/1315/223 773/1316/224 +f 769/1305/210 777/1242/218 767/1317/211 +f 771/1289/208 760/1288/200 768/1301/217 +f 769/1291/210 759/1298/204 761/1290/209 +f 779/1160/219 768/1306/217 776/1308/220 +f 767/1317/211 777/1242/218 775/1315/223 +f 770/1300/216 757/1303/197 765/1318/212 +f 772/1296/213 758/1295/194 764/1299/215 +f 766/1307/214 780/1310/221 774/1319/225 +f 778/1313/222 765/1312/212 773/1320/224 +f 679/1247/186 691/1268/186 692/1248/174 +f 686/1250/175 698/1269/175 699/1251/187 +f 683/1253/178 695/1321/178 696/1254/188 +f 680/1249/174 692/1248/174 693/1256/189 +f 687/1252/187 699/1251/187 700/1258/190 +f 677/1260/177 690/1267/177 689/1261/191 +f 684/1255/188 696/1254/188 697/1263/192 +f 681/1257/189 693/1256/189 694/1265/193 +f 688/1259/190 700/1258/190 690/1267/177 +f 678/1262/191 689/1261/191 691/1268/186 +f 685/1264/192 697/1263/192 698/1269/175 +f 682/1266/193 694/1265/193 695/1270/178 +f 758/1272/194 760/1278/200 752/1273/195 +f 757/1275/197 762/1286/207 754/1276/198 +f 760/1278/200 763/1280/202 755/1279/201 +f 763/1280/202 761/1322/209 753/1281/203 +f 759/1282/204 757/1323/197 749/1283/199 +f 756/1285/206 764/1324/215 758/1272/194 +f 753/1281/203 761/1322/209 759/1282/204 +f 762/1286/207 764/1324/215 756/1285/206 +f 761/1290/209 763/1287/202 771/1289/208 +f 757/1292/197 759/1298/204 767/1293/211 +f 764/1299/215 762/1302/207 770/1300/216 +f 758/1295/194 766/1297/214 768/1301/217 +f 771/1304/208 779/1160/219 777/1242/218 +f 766/1307/214 774/1319/225 776/1308/220 +f 770/1311/216 778/1313/222 780/1310/221 +f 765/1314/212 767/1317/211 775/1315/223 diff --git a/src/main/resources/assets/hbm/models/weapons/sacred_dragon.obj b/src/main/resources/assets/hbm/models/weapons/sacred_dragon.obj new file mode 100644 index 000000000..6c55eb6ad --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/sacred_dragon.obj @@ -0,0 +1,4105 @@ +# Blender v2.79 (sub 0) OBJ File: 'sacred_dragon.blend' +# www.blender.org +o Shells +v 0.312500 0.250000 -1.750000 +v 0.187500 0.216506 -1.750000 +v 0.095994 0.125000 -1.750000 +v 0.062500 0.000000 -1.750000 +v 0.095994 -0.125000 -1.750000 +v 0.187500 -0.216506 -1.750000 +v 0.312500 -0.250000 -1.750000 +v 0.437500 -0.216506 -1.750000 +v 0.529006 -0.125000 -1.750000 +v 0.562500 0.000000 -1.750000 +v 0.529006 0.125000 -1.750000 +v 0.437500 0.216506 -1.750000 +v 0.187500 0.216506 -1.687500 +v 0.312500 0.250000 -1.687500 +v 0.095994 0.125000 -1.687500 +v 0.062500 0.000000 -1.687500 +v 0.095994 -0.125000 -1.687500 +v 0.187500 -0.216506 -1.687500 +v 0.312500 -0.250000 -1.687500 +v 0.437500 -0.216506 -1.687500 +v 0.529006 -0.125000 -1.687500 +v 0.562500 0.000000 -1.687500 +v 0.529006 0.125000 -1.687500 +v 0.437500 0.216506 -1.687500 +v 0.200000 0.194856 -1.687500 +v 0.312500 0.225000 -1.687500 +v 0.117644 0.112500 -1.687500 +v 0.087500 0.000000 -1.687500 +v 0.117644 -0.112500 -1.687500 +v 0.200000 -0.194855 -1.687500 +v 0.312500 -0.225000 -1.687500 +v 0.425000 -0.194855 -1.687500 +v 0.507356 -0.112500 -1.687500 +v 0.537500 0.000000 -1.687500 +v 0.507356 0.112500 -1.687500 +v 0.425000 0.194856 -1.687500 +v 0.200000 0.194856 -0.500000 +v 0.312500 0.225000 -0.500000 +v 0.117644 0.112500 -0.500000 +v 0.087500 0.000000 -0.500000 +v 0.117644 -0.112500 -0.500000 +v 0.200000 -0.194855 -0.500000 +v 0.312500 -0.225000 -0.500000 +v 0.425000 -0.194855 -0.500000 +v 0.507356 -0.112500 -0.500000 +v 0.537500 0.000000 -0.500000 +v 0.507356 0.112500 -0.500000 +v 0.425000 0.194856 -0.500000 +v -0.312500 0.250000 -1.750000 +v -0.437500 0.216506 -1.750000 +v -0.529006 0.125000 -1.750000 +v -0.562500 0.000000 -1.750000 +v -0.529006 -0.125000 -1.750000 +v -0.437500 -0.216506 -1.750000 +v -0.312500 -0.250000 -1.750000 +v -0.187500 -0.216506 -1.750000 +v -0.095994 -0.125000 -1.750000 +v -0.062500 0.000000 -1.750000 +v -0.095994 0.125000 -1.750000 +v -0.187500 0.216506 -1.750000 +v -0.437500 0.216506 -1.687500 +v -0.312500 0.250000 -1.687500 +v -0.529006 0.125000 -1.687500 +v -0.562500 0.000000 -1.687500 +v -0.529006 -0.125000 -1.687500 +v -0.437500 -0.216506 -1.687500 +v -0.312500 -0.250000 -1.687500 +v -0.187500 -0.216506 -1.687500 +v -0.095994 -0.125000 -1.687500 +v -0.062500 0.000000 -1.687500 +v -0.095994 0.125000 -1.687500 +v -0.187500 0.216506 -1.687500 +v -0.425000 0.194856 -1.687500 +v -0.312500 0.225000 -1.687500 +v -0.507356 0.112500 -1.687500 +v -0.537500 0.000000 -1.687500 +v -0.507356 -0.112500 -1.687500 +v -0.425000 -0.194855 -1.687500 +v -0.312500 -0.225000 -1.687500 +v -0.200000 -0.194855 -1.687500 +v -0.117644 -0.112500 -1.687500 +v -0.087500 0.000000 -1.687500 +v -0.117644 0.112500 -1.687500 +v -0.200000 0.194856 -1.687500 +v -0.425000 0.194856 -0.500000 +v -0.312500 0.225000 -0.500000 +v -0.507356 0.112500 -0.500000 +v -0.537500 0.000000 -0.500000 +v -0.507356 -0.112500 -0.500000 +v -0.425000 -0.194855 -0.500000 +v -0.312500 -0.225000 -0.500000 +v -0.200000 -0.194855 -0.500000 +v -0.117644 -0.112500 -0.500000 +v -0.087500 0.000000 -0.500000 +v -0.117644 0.112500 -0.500000 +v -0.200000 0.194856 -0.500000 +vt 0.828402 0.741079 +vt 0.787445 0.720793 +vt 0.828402 0.659936 +vt 0.674556 0.751269 +vt 0.650888 0.756345 +vt 0.650888 0.751269 +vt 0.863905 0.751269 +vt 0.887574 0.756345 +vt 0.863905 0.756345 +vt 0.769231 0.751269 +vt 0.745562 0.756345 +vt 0.745562 0.751269 +vt 0.792899 0.751269 +vt 0.816568 0.756345 +vt 0.792899 0.756345 +vt 0.698225 0.756345 +vt 0.674556 0.756345 +vt 0.911243 0.751269 +vt 0.887574 0.751269 +vt 0.769231 0.756345 +vt 0.816568 0.751269 +vt 0.840237 0.756345 +vt 0.721893 0.751269 +vt 0.698225 0.751269 +vt 0.934911 0.756345 +vt 0.911243 0.756345 +vt 0.840237 0.751269 +vt 0.721893 0.756345 +vt 0.703759 0.687810 +vt 0.775531 0.687810 +vt 0.739645 0.741132 +vt 0.828402 0.741079 +vt 0.787445 0.720793 +vt 0.828402 0.659936 +vt 0.674556 0.751269 +vt 0.650888 0.756345 +vt 0.650888 0.751269 +vt 0.863905 0.751269 +vt 0.887574 0.756345 +vt 0.863905 0.756345 +vt 0.769231 0.751269 +vt 0.745562 0.756345 +vt 0.745562 0.751269 +vt 0.792899 0.751269 +vt 0.816568 0.756345 +vt 0.792899 0.756345 +vt 0.698225 0.756345 +vt 0.674556 0.756345 +vt 0.911243 0.751269 +vt 0.887574 0.751269 +vt 0.769231 0.756345 +vt 0.816568 0.751269 +vt 0.840237 0.756345 +vt 0.721893 0.751269 +vt 0.698225 0.751269 +vt 0.934911 0.756345 +vt 0.911243 0.756345 +vt 0.840237 0.751269 +vt 0.721893 0.756345 +vt 0.703759 0.687810 +vt 0.775531 0.687810 +vt 0.739645 0.741132 +vt 0.869360 0.720794 +vt 0.852049 0.735644 +vt 0.804755 0.735644 +vt 0.781109 0.700508 +vt 0.787445 0.680222 +vt 0.804755 0.665371 +vt 0.852049 0.665371 +vt 0.869360 0.680222 +vt 0.875696 0.700508 +vt 0.934911 0.751269 +vt 0.718926 0.736369 +vt 0.703759 0.723358 +vt 0.698207 0.705584 +vt 0.718926 0.674798 +vt 0.739645 0.670035 +vt 0.760364 0.674798 +vt 0.781083 0.705584 +vt 0.775531 0.723358 +vt 0.760364 0.736369 +vt 0.869360 0.720794 +vt 0.852049 0.735644 +vt 0.804755 0.735644 +vt 0.781109 0.700508 +vt 0.787445 0.680222 +vt 0.804755 0.665371 +vt 0.852049 0.665371 +vt 0.869360 0.680222 +vt 0.875696 0.700508 +vt 0.934911 0.751269 +vt 0.718926 0.736369 +vt 0.703759 0.723358 +vt 0.698207 0.705584 +vt 0.718926 0.674798 +vt 0.739645 0.670035 +vt 0.760364 0.674798 +vt 0.781083 0.705584 +vt 0.775531 0.723358 +vt 0.760364 0.736369 +vt 0.887574 0.741117 +vt 0.863905 0.741117 +vt 0.769231 0.741117 +vt 0.745562 0.741117 +vt 0.816568 0.741117 +vt 0.792899 0.741117 +vt 0.698225 0.741117 +vt 0.674556 0.741117 +vt 0.911243 0.741117 +vt 0.840237 0.741117 +vt 0.721893 0.741117 +vt 0.934911 0.741117 +vt 0.650888 0.741117 +vt 0.650888 0.949239 +vt 0.863905 0.949239 +vt 0.745562 0.949239 +vt 0.816568 0.949239 +vt 0.792899 0.949239 +vt 0.674556 0.949239 +vt 0.887574 0.949239 +vt 0.769231 0.949239 +vt 0.698225 0.949239 +vt 0.934911 0.949239 +vt 0.911243 0.949239 +vt 0.840237 0.949239 +vt 0.721893 0.949239 +vt 0.887574 0.741117 +vt 0.863905 0.741117 +vt 0.769231 0.741117 +vt 0.745562 0.741117 +vt 0.816568 0.741117 +vt 0.792899 0.741117 +vt 0.698225 0.741117 +vt 0.674556 0.741117 +vt 0.911243 0.741117 +vt 0.840237 0.741117 +vt 0.721893 0.741117 +vt 0.934911 0.741117 +vt 0.650888 0.741117 +vt 0.650888 0.949239 +vt 0.863905 0.949239 +vt 0.745562 0.949239 +vt 0.816568 0.949239 +vt 0.792899 0.949239 +vt 0.698225 0.949239 +vt 0.674556 0.949239 +vt 0.887574 0.949239 +vt 0.769231 0.949239 +vt 0.934911 0.949239 +vt 0.911243 0.949239 +vt 0.840237 0.949239 +vt 0.721893 0.949239 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn -0.8660 -0.5000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.8660 0.5000 0.0000 +vn -0.5000 0.8660 0.0000 +vn -0.0000 1.0000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.8660 0.5000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +s off +f 1/1/1 11/2/1 7/3/1 +f 20/4/2 31/5/2 19/6/2 +f 16/7/2 29/8/2 28/9/2 +f 24/10/2 35/11/2 23/12/2 +f 14/13/2 25/14/2 26/15/2 +f 20/4/2 33/16/2 32/17/2 +f 18/18/2 29/8/2 17/19/2 +f 14/13/2 36/20/2 24/10/2 +f 13/21/2 27/22/2 25/14/2 +f 22/23/2 33/16/2 21/24/2 +f 18/18/2 31/25/2 30/26/2 +f 16/7/2 27/22/2 15/27/2 +f 23/12/2 34/28/2 22/23/2 +f 41/29/2 45/30/2 38/31/2 +f 49/32/1 59/33/1 55/34/1 +f 68/35/2 79/36/2 67/37/2 +f 64/38/2 77/39/2 76/40/2 +f 72/41/2 83/42/2 71/43/2 +f 62/44/2 73/45/2 74/46/2 +f 68/35/2 81/47/2 80/48/2 +f 66/49/2 77/39/2 65/50/2 +f 62/44/2 84/51/2 72/41/2 +f 61/52/2 75/53/2 73/45/2 +f 70/54/2 81/47/2 69/55/2 +f 66/49/2 79/56/2 78/57/2 +f 64/38/2 75/53/2 63/58/2 +f 71/43/2 82/59/2 70/54/2 +f 89/60/2 93/61/2 86/62/2 +f 3/63/1 2/64/1 1/1/1 +f 1/1/1 12/65/1 11/2/1 +f 11/2/1 10/66/1 9/67/1 +f 9/67/1 8/68/1 11/2/1 +f 8/68/1 7/3/1 11/2/1 +f 7/3/1 6/69/1 3/63/1 +f 6/69/1 5/70/1 3/63/1 +f 5/70/1 4/71/1 3/63/1 +f 3/63/1 1/1/1 7/3/1 +f 20/4/2 32/17/2 31/5/2 +f 16/7/2 17/19/2 29/8/2 +f 24/10/2 36/20/2 35/11/2 +f 14/13/2 13/21/2 25/14/2 +f 20/4/2 21/24/2 33/16/2 +f 18/18/2 30/26/2 29/8/2 +f 14/13/2 26/15/2 36/20/2 +f 13/21/2 15/27/2 27/22/2 +f 22/23/2 34/28/2 33/16/2 +f 18/18/2 19/72/2 31/25/2 +f 16/7/2 28/9/2 27/22/2 +f 23/12/2 35/11/2 34/28/2 +f 38/31/2 37/73/2 39/74/2 +f 39/74/2 40/75/2 38/31/2 +f 40/75/2 41/29/2 38/31/2 +f 41/29/2 42/76/2 43/77/2 +f 43/77/2 44/78/2 41/29/2 +f 44/78/2 45/30/2 41/29/2 +f 45/30/2 46/79/2 38/31/2 +f 46/79/2 47/80/2 38/31/2 +f 47/80/2 48/81/2 38/31/2 +f 51/82/1 50/83/1 49/32/1 +f 49/32/1 60/84/1 59/33/1 +f 59/33/1 58/85/1 57/86/1 +f 57/86/1 56/87/1 59/33/1 +f 56/87/1 55/34/1 59/33/1 +f 55/34/1 54/88/1 51/82/1 +f 54/88/1 53/89/1 51/82/1 +f 53/89/1 52/90/1 51/82/1 +f 51/82/1 49/32/1 55/34/1 +f 68/35/2 80/48/2 79/36/2 +f 64/38/2 65/50/2 77/39/2 +f 72/41/2 84/51/2 83/42/2 +f 62/44/2 61/52/2 73/45/2 +f 68/35/2 69/55/2 81/47/2 +f 66/49/2 78/57/2 77/39/2 +f 62/44/2 74/46/2 84/51/2 +f 61/52/2 63/58/2 75/53/2 +f 70/54/2 82/59/2 81/47/2 +f 66/49/2 67/91/2 79/56/2 +f 64/38/2 76/40/2 75/53/2 +f 71/43/2 83/42/2 82/59/2 +f 86/62/2 85/92/2 87/93/2 +f 87/93/2 88/94/2 86/62/2 +f 88/94/2 89/60/2 86/62/2 +f 89/60/2 90/95/2 91/96/2 +f 91/96/2 92/97/2 89/60/2 +f 92/97/2 93/61/2 89/60/2 +f 93/61/2 94/98/2 86/62/2 +f 94/98/2 95/99/2 86/62/2 +f 95/99/2 96/100/2 86/62/2 +s 1 +f 5/101/3 16/7/4 4/102/4 +f 12/103/5 23/12/6 11/104/6 +f 2/105/7 14/13/8 1/106/8 +f 9/107/9 20/4/10 8/108/10 +f 6/109/11 17/19/3 5/101/3 +f 1/106/8 24/10/5 12/103/5 +f 3/110/12 13/21/7 2/105/7 +f 10/111/13 21/24/9 9/107/9 +f 7/112/14 18/18/11 6/109/11 +f 4/102/4 15/27/12 3/110/12 +f 11/104/6 22/23/13 10/111/13 +f 8/108/10 19/6/14 7/113/14 +f 32/17/10 43/114/14 31/5/14 +f 29/8/3 40/115/4 28/9/4 +f 36/20/5 47/116/6 35/11/6 +f 26/15/8 37/117/7 38/118/8 +f 33/16/9 44/119/10 32/17/10 +f 30/26/11 41/120/3 29/8/3 +f 26/15/8 48/121/5 36/20/5 +f 27/22/12 37/117/7 25/14/7 +f 34/28/13 45/122/9 33/16/9 +f 30/26/11 43/123/14 42/124/11 +f 28/9/4 39/125/12 27/22/12 +f 35/11/6 46/126/13 34/28/13 +f 53/127/3 64/38/4 52/128/4 +f 60/129/5 71/43/6 59/130/6 +f 50/131/7 62/44/8 49/132/8 +f 57/133/9 68/35/10 56/134/10 +f 54/135/11 65/50/3 53/127/3 +f 49/132/8 72/41/5 60/129/5 +f 51/136/12 61/52/7 50/131/7 +f 58/137/13 69/55/9 57/133/9 +f 55/138/14 66/49/11 54/135/11 +f 52/128/4 63/58/12 51/136/12 +f 59/130/6 70/54/13 58/137/13 +f 56/134/10 67/37/14 55/139/14 +f 80/48/10 91/140/14 79/36/14 +f 77/39/3 88/141/4 76/40/4 +f 84/51/5 95/142/6 83/42/6 +f 74/46/8 85/143/7 86/144/8 +f 80/48/10 93/145/9 92/146/10 +f 78/57/11 89/147/3 77/39/3 +f 74/46/8 96/148/5 84/51/5 +f 75/53/12 85/143/7 73/45/7 +f 82/59/13 93/145/9 81/47/9 +f 78/57/11 91/149/14 90/150/11 +f 76/40/4 87/151/12 75/53/12 +f 83/42/6 94/152/13 82/59/13 +f 5/101/3 17/19/3 16/7/4 +f 12/103/5 24/10/5 23/12/6 +f 2/105/7 13/21/7 14/13/8 +f 9/107/9 21/24/9 20/4/10 +f 6/109/11 18/18/11 17/19/3 +f 1/106/8 14/13/8 24/10/5 +f 3/110/12 15/27/12 13/21/7 +f 10/111/13 22/23/13 21/24/9 +f 7/112/14 19/72/14 18/18/11 +f 4/102/4 16/7/4 15/27/12 +f 11/104/6 23/12/6 22/23/13 +f 8/108/10 20/4/10 19/6/14 +f 32/17/10 44/119/10 43/114/14 +f 29/8/3 41/120/3 40/115/4 +f 36/20/5 48/121/5 47/116/6 +f 26/15/8 25/14/7 37/117/7 +f 33/16/9 45/122/9 44/119/10 +f 30/26/11 42/124/11 41/120/3 +f 26/15/8 38/118/8 48/121/5 +f 27/22/12 39/125/12 37/117/7 +f 34/28/13 46/126/13 45/122/9 +f 30/26/11 31/25/14 43/123/14 +f 28/9/4 40/115/4 39/125/12 +f 35/11/6 47/116/6 46/126/13 +f 53/127/3 65/50/3 64/38/4 +f 60/129/5 72/41/5 71/43/6 +f 50/131/7 61/52/7 62/44/8 +f 57/133/9 69/55/9 68/35/10 +f 54/135/11 66/49/11 65/50/3 +f 49/132/8 62/44/8 72/41/5 +f 51/136/12 63/58/12 61/52/7 +f 58/137/13 70/54/13 69/55/9 +f 55/138/14 67/91/14 66/49/11 +f 52/128/4 64/38/4 63/58/12 +f 59/130/6 71/43/6 70/54/13 +f 56/134/10 68/35/10 67/37/14 +f 80/48/10 92/146/10 91/140/14 +f 77/39/3 89/147/3 88/141/4 +f 84/51/5 96/148/5 95/142/6 +f 74/46/8 73/45/7 85/143/7 +f 80/48/10 81/47/9 93/145/9 +f 78/57/11 90/150/11 89/147/3 +f 74/46/8 86/144/8 96/148/5 +f 75/53/12 87/151/12 85/143/7 +f 82/59/13 94/152/13 93/145/9 +f 78/57/11 79/56/14 91/149/14 +f 76/40/4 88/141/4 87/151/12 +f 83/42/6 95/142/6 94/152/13 +o Stock +v 0.312500 0.312500 -1.750000 +v 0.312500 -0.312500 -1.750000 +v 0.468750 -0.270633 -1.750000 +v 0.583133 -0.156250 -1.750000 +v 0.625000 -0.000000 -1.750000 +v 0.583133 0.156250 -1.750000 +v 0.468750 0.270633 -1.750000 +v -0.312500 0.312500 -1.750000 +v -0.468750 0.270633 -1.750000 +v -0.583133 0.156250 -1.750000 +v -0.625000 0.000000 -1.750000 +v -0.583133 -0.156250 -1.750000 +v -0.468750 -0.270633 -1.750000 +v -0.312500 -0.312500 -1.750000 +v 0.468750 -0.270633 -2.125000 +v 0.312500 -0.312500 -2.125000 +v 0.583133 -0.156250 -2.125000 +v 0.625000 -0.000000 -2.125000 +v 0.583133 0.156250 -2.125000 +v 0.468750 0.270633 -2.125000 +v 0.312500 0.312500 -2.125000 +v -0.468750 0.270633 -2.125000 +v -0.312500 0.312500 -2.125000 +v -0.583133 0.156250 -2.125000 +v -0.625000 -0.000000 -2.125000 +v -0.583133 -0.156250 -2.125000 +v -0.468750 -0.270633 -2.125000 +v -0.312500 -0.312500 -2.125000 +v 0.312500 0.250000 -2.250000 +v 0.312500 -0.250000 -2.250000 +v 0.437500 -0.216506 -2.250000 +v 0.529006 -0.125000 -2.250000 +v 0.562500 0.000000 -2.250000 +v 0.529006 0.125000 -2.250000 +v 0.437500 0.216506 -2.250000 +v -0.312500 0.250000 -2.250000 +v -0.437500 0.216506 -2.250000 +v -0.529006 0.125000 -2.250000 +v -0.562500 0.000000 -2.250000 +v -0.529006 -0.125000 -2.250000 +v -0.437500 -0.216506 -2.250000 +v -0.312500 -0.250000 -2.250000 +v -0.437500 -0.437500 -0.750000 +v -0.437500 -0.349112 -0.786612 +v 0.437500 -0.312500 -0.875000 +v 0.437500 -0.349112 -0.786612 +v 0.437500 -0.437500 -0.750000 +v 0.437500 -0.525888 -0.786612 +v 0.437500 -0.562500 -0.875000 +v -0.437500 -0.312500 -0.875000 +v -0.437500 -0.525888 -0.786612 +v -0.437500 -0.562500 -0.875000 +v 0.437500 -0.312500 -2.250000 +v -0.437500 -0.312500 -2.250000 +v 0.437500 0.062500 -2.250000 +v -0.437500 0.062500 -2.250000 +v 0.437500 -0.562500 -2.500000 +v -0.437500 -0.562500 -2.500000 +v 0.437500 0.062500 -2.500000 +v -0.437500 0.062500 -2.500000 +v 0.187500 0.187500 -2.250000 +v 0.187500 0.187500 -2.500000 +v -0.187500 0.187500 -2.250000 +v -0.187500 0.187500 -2.500000 +v 0.437500 -0.312500 -2.500000 +v -0.525888 -0.349112 -1.500000 +v 0.437500 -0.312500 -1.500000 +v 0.437500 -0.562500 -1.500000 +v 0.437500 -0.562500 -2.500000 +v 0.525888 -0.525888 -2.500000 +v 0.562500 -0.437500 -2.500000 +v 0.525888 -0.349112 -2.500000 +v -0.562500 -0.437500 -1.500000 +v -0.525888 -0.525888 -1.500000 +v -0.525888 -0.349112 -2.500000 +v -0.562500 -0.437500 -2.500000 +v -0.525888 -0.525888 -2.500000 +v -0.437500 -0.562500 -2.500000 +v 0.525888 -0.525888 -1.500000 +v 0.562500 -0.437500 -1.500000 +v 0.525888 -0.349112 -1.500000 +v -0.437500 -0.562500 -1.500000 +v -0.437500 -0.312500 -1.500000 +v -0.437500 -0.312500 -2.500000 +v 0.187500 0.125000 -2.500000 +v -0.187500 0.125000 -2.500000 +v 0.187500 -0.625000 -4.250000 +v -0.187500 -0.625000 -4.250000 +v 0.187500 -0.562500 -2.500000 +v -0.187500 -0.562500 -2.500000 +v 0.312500 0.000000 -2.500000 +v 0.312500 -0.437500 -2.500000 +v -0.312500 0.000000 -2.500000 +v -0.312500 -0.437500 -2.500000 +v 0.187500 -1.312500 -4.250000 +v -0.187500 -1.312500 -4.250000 +v 0.312500 -0.750000 -4.250000 +v 0.312500 -1.187500 -4.250000 +v -0.312500 -0.750000 -4.250000 +v -0.312500 -1.187500 -4.250000 +v 0.187500 0.000000 -3.000000 +v -0.187500 0.000000 -3.000000 +v 0.187500 -0.687500 -3.000000 +v -0.187500 -0.687500 -3.000000 +v 0.312500 -0.125000 -3.000000 +v 0.312500 -0.562500 -3.000000 +v -0.312500 -0.125000 -3.000000 +v -0.312500 -0.562500 -3.000000 +v 0.437500 -0.343750 -2.500000 +v 0.371209 -0.371209 -2.500000 +v 0.343750 -0.437500 -2.500000 +v 0.371209 -0.503791 -2.500000 +v 0.437500 -0.531250 -2.500000 +v 0.503791 -0.503791 -2.500000 +v 0.531250 -0.437500 -2.500000 +v 0.503791 -0.371209 -2.500000 +v 0.437500 -0.343750 -2.562500 +v 0.371209 -0.371209 -2.562500 +v 0.343750 -0.437500 -2.562500 +v 0.371209 -0.503791 -2.562500 +v 0.437500 -0.531250 -2.562500 +v 0.503791 -0.503791 -2.562500 +v 0.531250 -0.437500 -2.562500 +v 0.503791 -0.371209 -2.562500 +v 0.343750 -0.312500 -2.500000 +v 0.406250 -0.312500 -2.500000 +v 0.343750 0.000000 -2.500000 +v 0.406250 0.000000 -2.500000 +v 0.343750 0.000000 -2.562500 +v 0.343750 -0.312500 -2.562500 +v 0.406250 -0.312500 -2.562500 +v 0.406250 0.000000 -2.562500 +v -0.125000 0.187500 -2.500000 +v 0.125000 0.187500 -2.500000 +v -0.031250 0.187500 -2.875000 +v 0.031250 0.187500 -2.875000 +v -0.031250 0.062500 -2.875000 +v -0.125000 0.062500 -2.500000 +v 0.125000 0.062500 -2.500000 +v 0.031250 0.062500 -2.875000 +v 0.000000 0.187500 -2.625000 +v -0.088388 0.187500 -2.588388 +v -0.125000 0.187500 -2.500000 +v -0.088388 0.187500 -2.411612 +v 0.000000 0.187500 -2.375000 +v 0.088388 0.187500 -2.411612 +v 0.125000 0.187500 -2.500000 +v 0.088388 0.187500 -2.588388 +v 0.000000 0.250000 -2.625000 +v -0.088388 0.250000 -2.588388 +v -0.125000 0.250000 -2.500000 +v -0.088388 0.250000 -2.411612 +v 0.000000 0.250000 -2.375000 +v 0.088388 0.250000 -2.411612 +v 0.125000 0.250000 -2.500000 +v 0.088388 0.250000 -2.588388 +v 0.187500 -0.500000 -4.750000 +v -0.187500 -0.500000 -4.750000 +v 0.187500 -1.125000 -8.000000 +v -0.187500 -1.125000 -8.000000 +v 0.312500 -0.625000 -4.750000 +v -0.312500 -0.625000 -4.750000 +v 0.312500 -1.250000 -8.000000 +v -0.312500 -1.250000 -8.000000 +v 0.187500 -1.312500 -4.750000 +v -0.187500 -1.312500 -4.750000 +v 0.312500 -1.187500 -4.750000 +v -0.312500 -1.187500 -4.750000 +v 0.187500 -2.562500 -7.250000 +v -0.187500 -2.562500 -7.250000 +v 0.312500 -2.437500 -7.250000 +v -0.312500 -2.437500 -7.250000 +v 0.187500 -2.562500 -7.750000 +v -0.187500 -2.562500 -7.750000 +v 0.312500 -2.437500 -7.750000 +v -0.312500 -2.437500 -7.750000 +v -0.125000 -1.187500 -2.000000 +v -0.125000 -0.562500 -2.500000 +v 0.125000 -0.562500 -2.500000 +v -0.125000 -0.625000 -2.500000 +v 0.125000 -0.654029 -1.779029 +v 0.125000 -0.562500 -2.000000 +v 0.125000 -0.625000 -2.500000 +v -0.125000 -1.095971 -1.779029 +v -0.125000 -0.875000 -1.687500 +v 0.125000 -0.625000 -2.000000 +v 0.125000 -0.698223 -1.823223 +v 0.125000 -0.875000 -1.750000 +v 0.125000 -1.051777 -1.823223 +v 0.125000 -1.125000 -2.000000 +v -0.125000 -0.562500 -2.000000 +v 0.125000 -0.875000 -1.687500 +v 0.125000 -1.095971 -1.779029 +v 0.125000 -1.187500 -2.000000 +v -0.125000 -0.654029 -1.779029 +v -0.125000 -0.625000 -2.000000 +v -0.125000 -0.698223 -1.823223 +v -0.125000 -0.875000 -1.750000 +v -0.125000 -1.051777 -1.823223 +v -0.125000 -1.125000 -2.000000 +v -0.125000 -1.187500 -2.750000 +v 0.125000 -1.125000 -2.750000 +v 0.125000 -1.187500 -2.750000 +v -0.125000 -1.125000 -2.750000 +v -0.125000 -0.812500 -3.250000 +v 0.125000 -0.750000 -3.250000 +v 0.125000 -0.812500 -3.250000 +v -0.125000 -0.750000 -3.250000 +v -0.062500 -0.562500 -2.500000 +v 0.062500 -0.562500 -2.500000 +v -0.062500 -0.562500 -2.625000 +v 0.062500 -0.562500 -2.625000 +v -0.062500 -1.062500 -2.500000 +v 0.062500 -1.062500 -2.500000 +v 0.062500 -0.812500 -2.625000 +v -0.062500 -0.812500 -2.625000 +v -0.062500 -0.812500 -2.562500 +v 0.062500 -0.812500 -2.562500 +v 0.312500 0.062500 -2.437500 +v 0.268306 0.062500 -2.419194 +v 0.250000 0.062500 -2.375000 +v 0.268306 0.062500 -2.330806 +v 0.312500 0.062500 -2.312500 +v 0.356694 0.062500 -2.330806 +v 0.375000 0.062500 -2.375000 +v 0.356694 0.062500 -2.419194 +v 0.268306 0.187500 -2.419194 +v 0.312500 0.187500 -2.437500 +v 0.250000 0.187500 -2.375000 +v 0.268306 0.187500 -2.330806 +v 0.312500 0.187500 -2.312500 +v 0.356694 0.187500 -2.330806 +v 0.375000 0.187500 -2.375000 +v 0.356694 0.187500 -2.419194 +v -0.406250 -0.312500 -2.500000 +v -0.343750 -0.312500 -2.500000 +v -0.406250 0.000000 -2.500000 +v -0.343750 0.000000 -2.500000 +v -0.406250 0.000000 -2.562500 +v -0.406250 -0.312500 -2.562500 +v -0.343750 -0.312500 -2.562500 +v -0.343750 0.000000 -2.562500 +v -0.437500 -0.343750 -2.500000 +v -0.503791 -0.371209 -2.500000 +v -0.531250 -0.437500 -2.500000 +v -0.503791 -0.503791 -2.500000 +v -0.437500 -0.531250 -2.500000 +v -0.371209 -0.503791 -2.500000 +v -0.343750 -0.437500 -2.500000 +v -0.371209 -0.371209 -2.500000 +v -0.437500 -0.343750 -2.562500 +v -0.503791 -0.371209 -2.562500 +v -0.531250 -0.437500 -2.562500 +v -0.503791 -0.503791 -2.562500 +v -0.437500 -0.531250 -2.562500 +v -0.371209 -0.503791 -2.562500 +v -0.343750 -0.437500 -2.562500 +v -0.371209 -0.371209 -2.562500 +v -0.312500 0.062500 -2.437500 +v -0.356694 0.062500 -2.419194 +v -0.375000 0.062500 -2.375000 +v -0.356694 0.062500 -2.330806 +v -0.312500 0.062500 -2.312500 +v -0.268306 0.062500 -2.330806 +v -0.250000 0.062500 -2.375000 +v -0.268306 0.062500 -2.419194 +v -0.356694 0.187500 -2.419194 +v -0.312500 0.187500 -2.437500 +v -0.375000 0.187500 -2.375000 +v -0.356694 0.187500 -2.330806 +v -0.312500 0.187500 -2.312500 +v -0.268306 0.187500 -2.330806 +v -0.250000 0.187500 -2.375000 +v -0.268306 0.187500 -2.419194 +vt 0.777093 0.464465 +vt 0.751475 0.477153 +vt 0.751475 0.426400 +vt 0.003702 0.982978 +vt 0.011825 0.980091 +vt 0.011825 0.999801 +vt 0.142012 0.847716 +vt 0.165680 0.878173 +vt 0.142012 0.878173 +vt 0.142012 0.979695 +vt 0.165680 0.949239 +vt 0.165680 1.000000 +vt 0.165680 0.898477 +vt 0.177515 0.878173 +vt 0.236686 0.878173 +vt 0.142012 0.898477 +vt 0.142012 0.928934 +vt 0.094675 0.949239 +vt 0.003702 0.830496 +vt 0.011825 0.827610 +vt 0.011825 0.847320 +vt 0.272080 0.837472 +vt 0.280523 0.840473 +vt 0.284021 0.847716 +vt 0.165684 0.847716 +vt 0.169181 0.840473 +vt 0.177624 0.837473 +vt 0.177624 0.837473 +vt 0.169181 0.840473 +vt 0.165684 0.847716 +vt 0.284021 0.847716 +vt 0.280523 0.840473 +vt 0.272080 0.837472 +vt 0.792928 0.500000 +vt 0.801775 0.492410 +vt 0.810622 0.500000 +vt 0.875740 0.487310 +vt 0.869823 0.461929 +vt 0.875740 0.461929 +vt 0.869823 0.492386 +vt 0.875740 0.492386 +vt 0.875740 0.456853 +vt 0.869823 0.456853 +vt 0.863905 0.461929 +vt 0.869823 0.487310 +vt 0.863905 0.487310 +vt 0.881657 0.487310 +vt 0.881657 0.461929 +vt 0.603550 0.893401 +vt 0.618343 0.862944 +vt 0.627219 0.893401 +vt 0.618343 0.852792 +vt 0.603550 0.822335 +vt 0.627219 0.822335 +vt 0.573964 0.862944 +vt 0.609467 0.852792 +vt 0.609467 0.862944 +vt 0.615385 0.862944 +vt 0.650888 0.852792 +vt 0.650888 0.862944 +vt 0.615385 0.852792 +vt 0.781065 0.507443 +vt 0.769430 0.497462 +vt 0.781065 0.487481 +vt 0.905325 0.680203 +vt 0.911243 0.659898 +vt 0.911243 0.680203 +vt 0.905325 0.619289 +vt 0.911243 0.639594 +vt 0.905325 0.639594 +vt 0.905325 0.700508 +vt 0.911243 0.700508 +vt 0.911243 0.736041 +vt 0.934911 0.741117 +vt 0.934911 0.736041 +vt 0.905325 0.659898 +vt 0.905325 0.741117 +vt 0.911243 0.741117 +vt 0.881657 0.700508 +vt 0.875740 0.680203 +vt 0.881657 0.680203 +vt 0.875740 0.659898 +vt 0.881657 0.659898 +vt 0.881657 0.639594 +vt 0.875740 0.639594 +vt 0.881657 0.619289 +vt 0.875740 0.700508 +vt 0.881657 0.741117 +vt 0.875740 0.741117 +vt 0.875740 0.619289 +vt 0.881657 0.558376 +vt 0.911243 0.558376 +vt 0.911243 0.619289 +vt 0.905325 0.507614 +vt 0.911243 0.507614 +vt 0.875740 0.558376 +vt 0.881657 0.507614 +vt 0.798817 0.568528 +vt 0.792899 0.568528 +vt 0.792899 0.548223 +vt 0.781065 0.568528 +vt 0.775148 0.568528 +vt 0.781065 0.548223 +vt 0.769231 0.588832 +vt 0.781065 0.588832 +vt 0.804734 0.588832 +vt 0.644970 0.832411 +vt 0.639143 0.827411 +vt 0.644970 0.822412 +vt 0.875740 0.487310 +vt 0.869823 0.461929 +vt 0.875740 0.461929 +vt 0.869823 0.492386 +vt 0.875740 0.492386 +vt 0.875740 0.456853 +vt 0.869823 0.456853 +vt 0.863905 0.461929 +vt 0.869823 0.487310 +vt 0.863905 0.487310 +vt 0.881657 0.487310 +vt 0.881657 0.461929 +vt 0.792928 0.500000 +vt 0.801775 0.492410 +vt 0.810622 0.500000 +vt 0.644970 0.832411 +vt 0.639143 0.827411 +vt 0.644970 0.822412 +vt 0.766265 0.429800 +vt 0.777093 0.439088 +vt 0.781056 0.451777 +vt 0.766265 0.473754 +vt 0.692312 0.477153 +vt 0.692312 0.426400 +vt 0.677522 0.473754 +vt 0.677522 0.429800 +vt 0.666694 0.464465 +vt 0.662731 0.451777 +vt 0.666694 0.439088 +vt 0.003702 0.996915 +vt 0.000337 0.989946 +vt 0.165680 0.827411 +vt 0.142012 0.949239 +vt 0.236686 0.949239 +vt 0.177515 0.949239 +vt 0.165680 0.928934 +vt 0.130178 0.949239 +vt 0.094675 0.878173 +vt 0.130178 0.878173 +vt 0.003702 0.844433 +vt 0.000337 0.837465 +vt 0.280523 0.854959 +vt 0.272080 0.857959 +vt 0.177624 0.857959 +vt 0.169181 0.854959 +vt 0.169181 0.854959 +vt 0.177624 0.857959 +vt 0.272080 0.857959 +vt 0.280523 0.854959 +vt 0.808031 0.505367 +vt 0.801775 0.507590 +vt 0.795519 0.505367 +vt 0.795519 0.494633 +vt 0.808031 0.494633 +vt 0.612426 0.862944 +vt 0.612426 0.852792 +vt 0.573964 0.852792 +vt 0.789292 0.490404 +vt 0.792700 0.497462 +vt 0.789292 0.504520 +vt 0.772838 0.504520 +vt 0.772838 0.490404 +vt 0.905325 0.558376 +vt 0.875740 0.507614 +vt 0.792899 0.588832 +vt 0.649091 0.823876 +vt 0.650798 0.827411 +vt 0.649091 0.830946 +vt 0.640849 0.830946 +vt 0.640849 0.823876 +vt 0.808031 0.505367 +vt 0.801775 0.507590 +vt 0.795519 0.505367 +vt 0.795519 0.494633 +vt 0.808031 0.494633 +vt 0.649091 0.823876 +vt 0.650798 0.827411 +vt 0.649091 0.830946 +vt 0.640849 0.830946 +vt 0.640849 0.823876 +vt 0.650888 0.659898 +vt 0.639053 0.670051 +vt 0.639053 0.654822 +vt 0.603550 0.781726 +vt 0.639053 0.796954 +vt 0.603550 0.796954 +vt 0.603550 0.624366 +vt 0.639053 0.639594 +vt 0.603550 0.639594 +vt 0.603550 0.812183 +vt 0.639053 0.812183 +vt 0.603550 0.654822 +vt 0.603550 0.670051 +vt 0.639053 0.720812 +vt 0.603550 0.720812 +vt 0.603550 0.527919 +vt 0.639053 0.578680 +vt 0.603550 0.578680 +vt 0.639053 0.736041 +vt 0.603550 0.736041 +vt 0.603550 0.751269 +vt 0.639053 0.751269 +vt 0.639053 0.593909 +vt 0.603550 0.593909 +vt 0.603550 0.766497 +vt 0.639053 0.766497 +vt 0.639053 0.609137 +vt 0.603550 0.609137 +vt 0.639053 0.781726 +vt 0.639053 0.624366 +vt 0.650888 0.644670 +vt 0.650888 0.629442 +vt 0.650888 0.609137 +vt 0.650888 0.593909 +vt 0.650888 0.578680 +vt 0.650888 0.720812 +vt 0.650888 0.746193 +vt 0.650888 0.761421 +vt 0.650888 0.781726 +vt 0.650888 0.796954 +vt 0.650888 0.812183 +vt 0.650888 0.802030 +vt 0.650888 0.527919 +vt 0.639053 0.527919 +vt 0.766050 0.487312 +vt 0.745556 0.517762 +vt 0.745556 0.477162 +vt 0.402367 0.949239 +vt 0.390533 0.878173 +vt 0.402367 0.878173 +vt 0.426035 0.949239 +vt 0.414201 0.878173 +vt 0.426035 0.878173 +vt 0.414201 0.949239 +vt 0.437870 0.949239 +vt 0.437870 0.878173 +vt 0.568047 0.949239 +vt 0.390533 0.949239 +vt 0.177515 0.837563 +vt 0.272189 0.847716 +vt 0.272189 0.837563 +vt 0.177515 0.827411 +vt 0.272189 0.827411 +vt 0.177515 0.857868 +vt 0.272189 0.868020 +vt 0.272189 0.857868 +vt 0.272189 0.857868 +vt 0.177515 0.847716 +vt 0.272189 0.847716 +vt 0.177515 0.847716 +vt 0.272189 0.868020 +vt 0.177515 0.857868 +vt 0.272189 0.837563 +vt 0.177515 0.827411 +vt 0.272189 0.827411 +vt 0.177515 0.837563 +vt 0.047337 0.730964 +vt 0.165680 0.690355 +vt 0.047337 0.741117 +vt 0.047337 0.776650 +vt 0.165680 0.736041 +vt 0.165680 0.725888 +vt 0.047337 0.741117 +vt 0.165680 0.690355 +vt 0.047337 0.730964 +vt 0.165680 0.680203 +vt 0.047337 0.827411 +vt 0.165680 0.796954 +vt 0.165680 0.827411 +vt 0.047337 0.776650 +vt 0.165680 0.736041 +vt 0.047337 0.786802 +vt 0.047337 0.548223 +vt 0.165680 0.578680 +vt 0.047337 0.578680 +vt 0.000000 0.751269 +vt -0.000000 0.786802 +vt 0.213018 0.827411 +vt 0.165680 0.725888 +vt 0.000000 0.796954 +vt -0.000000 0.827411 +vt 0.000000 0.786802 +vt 0.047337 0.786802 +vt 0.000000 0.751269 +vt -0.000000 0.741117 +vt 0.000000 0.578680 +vt 0.000000 0.548223 +vt 0.000000 0.741117 +vt 0.822485 0.487310 +vt 0.816568 0.492386 +vt 0.816568 0.487310 +vt 0.834320 0.487310 +vt 0.828402 0.492386 +vt 0.828402 0.487310 +vt 0.798817 0.487310 +vt 0.792899 0.492386 +vt 0.792899 0.487310 +vt 0.810651 0.487310 +vt 0.804734 0.492386 +vt 0.804734 0.487310 +vt 0.822485 0.492386 +vt 0.840237 0.487310 +vt 0.834320 0.492386 +vt 0.798817 0.492386 +vt 0.810651 0.492386 +vt 0.804734 0.487310 +vt 0.816568 0.482233 +vt 0.816568 0.487310 +vt 0.828402 0.482233 +vt 0.828402 0.487310 +vt 0.840237 0.487310 +vt 0.852071 0.482233 +vt 0.852071 0.487310 +vt 0.769231 0.487310 +vt 0.781065 0.482233 +vt 0.781065 0.487310 +vt 0.792899 0.487310 +vt 0.804734 0.482233 +vt 0.840237 0.482233 +vt 0.863905 0.482233 +vt 0.863905 0.487310 +vt 0.792899 0.482233 +vt 0.213018 0.796954 +vt 0.520710 0.827411 +vt 0.213018 0.736041 +vt 0.520710 0.695431 +vt 0.520710 0.685279 +vt 0.213018 0.736041 +vt 0.520710 0.695431 +vt 0.520710 0.685279 +vt 0.213018 0.680203 +vt 0.165680 0.680203 +vt 0.213018 0.690355 +vt 0.165680 0.548223 +vt 0.213018 0.578680 +vt 0.449704 0.588832 +vt 0.449704 0.578680 +vt 0.213018 0.680203 +vt 0.449704 0.588832 +vt 0.213018 0.548223 +vt 0.449704 0.578680 +vt 0.497041 0.578680 +vt 0.497041 0.588832 +vt 0.449704 0.548223 +vt 0.497041 0.578680 +vt 0.579882 0.588832 +vt 0.532544 0.578680 +vt 0.568047 0.578680 +vt 0.520710 0.690355 +vt 0.568047 0.700508 +vt 0.532544 0.700508 +vt 0.520710 0.588832 +vt 0.213018 0.690355 +vt 0.497041 0.588832 +vt 0.934911 0.639594 +vt 0.934911 0.680203 +vt 0.934911 0.659898 +vt 0.934911 0.700508 +vt 0.934911 0.558376 +vt 0.934911 0.619289 +vt 0.934911 0.507614 +vt 0.792899 0.507614 +vt 0.781065 0.527919 +vt 0.781065 0.507614 +vt 0.792899 0.527919 +vt 0.633136 0.822335 +vt 0.639053 0.812183 +vt 0.639053 0.822335 +vt 0.644970 0.822335 +vt 0.650888 0.812183 +vt 0.650888 0.822335 +vt 0.609467 0.822335 +vt 0.615385 0.812183 +vt 0.615385 0.822335 +vt 0.621302 0.822335 +vt 0.627219 0.812183 +vt 0.627219 0.822335 +vt 0.633136 0.812183 +vt 0.644970 0.812183 +vt 0.603550 0.822335 +vt 0.609467 0.812183 +vt 0.621302 0.812183 +vt 0.822485 0.487310 +vt 0.816568 0.492386 +vt 0.816568 0.487310 +vt 0.834320 0.487310 +vt 0.828402 0.492386 +vt 0.828402 0.487310 +vt 0.798817 0.487310 +vt 0.792899 0.492386 +vt 0.792899 0.487310 +vt 0.810651 0.487310 +vt 0.804734 0.492386 +vt 0.804734 0.487310 +vt 0.822485 0.492386 +vt 0.840237 0.487310 +vt 0.834320 0.492386 +vt 0.798817 0.492386 +vt 0.810651 0.492386 +vt 0.633136 0.822335 +vt 0.639053 0.812183 +vt 0.639053 0.822335 +vt 0.644970 0.822335 +vt 0.650888 0.812183 +vt 0.650888 0.822335 +vt 0.609467 0.822335 +vt 0.615385 0.812183 +vt 0.615385 0.822335 +vt 0.621302 0.822335 +vt 0.627219 0.812183 +vt 0.627219 0.822335 +vt 0.633136 0.812183 +vt 0.644970 0.812183 +vt 0.603550 0.822335 +vt 0.609467 0.812183 +vt 0.621302 0.812183 +vt 0.650888 0.670051 +vt 0.650888 0.654822 +vt 0.650888 0.639594 +vt 0.650888 0.619289 +vt 0.650888 0.604061 +vt 0.650888 0.588832 +vt 0.650888 0.730964 +vt 0.650888 0.736041 +vt 0.650888 0.751269 +vt 0.650888 0.771574 +vt 0.650888 0.786802 +vt 0.766050 0.507612 +vt 0.757388 0.515043 +vt 0.686397 0.517762 +vt 0.674565 0.515043 +vt 0.686397 0.477162 +vt 0.665903 0.507612 +vt 0.662733 0.497462 +vt 0.665903 0.487312 +vt 0.674565 0.479881 +vt 0.757388 0.479881 +vt 0.769220 0.497462 +vt 0.568047 0.878173 +vt 0.177515 0.868020 +vt 0.177515 0.868020 +vt 0.047337 0.796954 +vt 0.000000 0.796954 +vt 0.840237 0.492386 +vt 0.769231 0.482233 +vt 0.520710 0.796954 +vt 0.213018 0.746193 +vt 0.213018 0.746193 +vt 0.497041 0.548223 +vt 0.579882 0.690355 +vt 0.603550 0.812183 +vt 0.840237 0.492386 +vt 0.603550 0.812183 +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.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.9701 0.0000 -0.2425 +vn -0.9701 0.0000 -0.2425 +vn 0.2917 0.5052 -0.8122 +vn 0.1251 0.9665 -0.2241 +vn 0.4876 0.8445 -0.2217 +vn -0.8660 -0.5000 0.0000 +vn -0.4876 -0.8445 -0.2217 +vn -0.5000 -0.8660 0.0000 +vn 0.8445 0.4876 -0.2217 +vn 0.8660 0.5000 -0.0000 +vn -0.1305 -0.9914 0.0000 +vn -0.1251 -0.9665 -0.2241 +vn 0.5000 0.8660 -0.0000 +vn 0.1305 0.9914 0.0000 +vn -0.1251 0.9665 -0.2241 +vn -0.1305 0.9914 -0.0000 +vn 0.1251 -0.9665 -0.2241 +vn 0.1305 -0.9914 0.0000 +vn -0.4876 0.8445 -0.2217 +vn -0.5000 0.8660 -0.0000 +vn -0.8660 0.5000 -0.0000 +vn -0.8445 0.4876 -0.2217 +vn 0.4876 -0.8445 -0.2217 +vn 0.5000 -0.8660 0.0000 +vn -0.9751 -0.0000 -0.2217 +vn 0.8445 -0.4876 -0.2217 +vn 0.8660 -0.5000 0.0000 +vn -0.8445 -0.4876 -0.2217 +vn 0.9751 -0.0000 -0.2217 +vn 0.5052 0.2917 -0.8122 +vn 0.5834 0.0000 -0.8122 +vn 0.5052 -0.2917 -0.8122 +vn 0.2917 -0.5052 -0.8122 +vn 0.0756 -0.5524 -0.8301 +vn -0.0756 0.5524 -0.8301 +vn -0.5052 0.2917 -0.8122 +vn -0.5834 -0.0000 -0.8122 +vn -0.5052 -0.2917 -0.8122 +vn -0.2917 -0.5052 -0.8122 +vn -0.0756 -0.5524 -0.8301 +vn 0.0756 0.5524 -0.8301 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.9808 0.1951 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.9808 0.1951 +vn 0.2298 0.9732 0.0000 +vn -0.2298 0.9732 0.0000 +vn 0.4472 0.8944 0.0000 +vn -0.4472 0.8944 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.3827 -0.9239 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.3752 -0.8668 0.3286 +vn 0.8994 -0.4225 0.1123 +vn 0.9281 -0.3513 0.1236 +vn -0.9066 0.3929 -0.1537 +vn -0.4140 0.9038 -0.1085 +vn -0.9522 0.3041 -0.0291 +vn -0.9281 -0.3513 0.1236 +vn -0.8994 -0.4225 0.1123 +vn -0.3752 -0.8668 0.3286 +vn -0.3595 -0.9099 0.2070 +vn -0.3607 0.8769 -0.3178 +vn 0.4140 0.9038 -0.1085 +vn 0.9066 0.3929 -0.1537 +vn 0.3607 0.8769 -0.3178 +vn 0.3595 -0.9099 0.2070 +vn 0.9409 -0.3285 0.0821 +vn 0.8970 0.4287 -0.1072 +vn -0.3652 0.9306 0.0247 +vn 0.9522 0.3041 -0.0291 +vn 0.3538 0.9074 -0.2269 +vn -0.3538 0.9074 -0.2269 +vn -0.8970 0.4287 -0.1072 +vn -0.9409 -0.3285 0.0821 +vn -0.3951 -0.8912 0.2228 +vn 0.3951 -0.8912 0.2228 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.3652 0.9306 0.0247 +vn -0.3939 0.9026 -0.1736 +vn -0.9047 0.4259 0.0130 +vn -0.9283 0.3651 -0.0702 +vn 0.9047 0.4259 0.0130 +vn 0.3939 0.9026 -0.1736 +vn 0.9283 0.3651 -0.0702 +vn -0.3954 -0.8912 0.2222 +vn 0.9414 -0.3297 0.0706 +vn 0.3954 -0.8912 0.2222 +vn 0.9334 -0.3589 0.0000 +vn 0.0000 -0.1380 -0.9904 +vn -0.9414 -0.3297 0.0706 +vn -0.9334 -0.3589 0.0000 +vn 0.0000 0.9239 0.3827 +vn 0.0000 0.9808 -0.1951 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.9808 -0.1951 +vn 0.0000 0.9487 0.3162 +vn 0.0000 -0.9487 -0.3162 +vn 0.0000 0.8000 0.6000 +vn 0.0000 -0.8000 -0.6000 +vn 0.0000 0.2425 0.9701 +vn 0.0000 -0.2425 0.9701 +vn 0.0000 -0.2298 -0.9732 +vn 0.0000 -0.4472 -0.8944 +vn -0.2917 0.5052 -0.8122 +s off +f 102/153/15 97/154/15 98/155/15 +f 140/156/16 146/157/16 148/158/16 +f 149/159/17 155/160/17 151/161/17 +f 150/162/16 156/163/16 154/164/16 +f 158/165/18 155/166/18 153/167/18 +f 157/168/15 159/169/15 150/170/15 +f 144/171/17 145/172/17 141/173/17 +f 161/174/18 168/175/18 167/176/18 +f 176/177/15 177/178/15 163/179/15 +f 179/180/15 162/181/15 169/182/15 +f 172/183/18 171/184/18 180/185/18 +f 219/186/18 217/187/18 215/188/18 +f 225/189/18 227/190/18 226/191/18 +f 224/192/19 225/189/19 223/193/19 +f 221/194/20 227/190/20 222/195/20 +f 222/196/17 228/197/17 224/198/17 +f 223/199/16 226/191/16 221/200/16 +f 230/201/19 231/202/19 229/203/19 +f 233/204/20 235/205/20 234/206/20 +f 230/207/21 236/208/21 232/209/21 +f 231/210/22 234/211/22 229/212/22 +f 232/209/18 233/213/18 231/210/18 +f 249/214/19 251/215/19 245/216/19 +f 277/217/17 284/218/17 283/219/17 +f 290/220/17 285/221/17 289/222/17 +f 278/223/17 283/219/17 282/224/17 +f 275/225/18 276/226/18 274/227/18 +f 289/222/17 284/218/17 288/228/17 +f 275/229/17 282/224/17 279/230/17 +f 287/231/16 293/232/16 291/233/16 +f 291/233/16 294/234/16 281/235/16 +f 294/234/16 280/236/16 281/235/16 +f 295/237/16 273/238/16 280/236/16 +f 292/239/16 274/240/16 276/241/16 +f 296/242/16 297/243/16 273/238/16 +f 290/220/17 298/244/17 286/245/17 +f 298/244/17 303/246/17 302/247/17 +f 300/248/16 301/249/16 297/243/16 +f 311/250/17 314/251/17 310/252/17 +f 313/253/16 312/254/16 309/255/16 +f 307/256/16 313/253/16 305/257/16 +f 308/258/17 314/251/17 311/250/17 +f 327/259/19 329/260/19 324/261/19 +f 335/262/18 337/263/18 336/264/18 +f 334/265/19 335/262/19 333/266/19 +f 331/267/20 337/263/20 332/268/20 +f 332/269/17 338/270/17 334/271/17 +f 333/272/16 336/264/16 331/273/16 +f 353/274/18 351/275/18 349/276/18 +f 367/277/19 369/278/19 364/279/19 +f 98/155/15 99/280/15 100/281/15 +f 100/281/15 101/282/15 102/153/15 +f 102/153/15 103/283/15 97/154/15 +f 97/154/15 104/284/15 110/285/15 +f 104/284/15 105/286/15 109/287/15 +f 105/286/15 106/288/15 107/289/15 +f 107/289/15 108/290/15 105/286/15 +f 108/290/15 109/287/15 105/286/15 +f 109/287/15 110/285/15 104/284/15 +f 110/285/15 98/155/15 97/154/15 +f 98/155/15 100/281/15 102/153/15 +f 146/157/16 150/162/16 148/158/16 +f 150/162/16 154/164/16 148/158/16 +f 148/158/16 147/291/16 140/156/16 +f 147/291/16 139/292/16 140/156/16 +f 149/159/17 153/293/17 155/160/17 +f 150/162/16 152/294/16 156/163/16 +f 153/167/18 154/295/18 158/165/18 +f 154/295/18 156/296/18 160/297/18 +f 158/165/18 154/295/18 160/297/18 +f 152/298/15 150/170/15 159/169/15 +f 150/170/15 149/299/15 157/168/15 +f 149/299/15 151/300/15 157/168/15 +f 145/172/17 153/293/17 149/159/17 +f 149/159/17 141/173/17 145/172/17 +f 141/173/17 142/301/17 144/171/17 +f 142/301/17 143/302/17 144/171/17 +f 166/303/18 165/304/18 167/176/18 +f 165/304/18 161/174/18 167/176/18 +f 163/179/15 164/305/15 175/306/15 +f 175/306/15 176/177/15 163/179/15 +f 170/307/15 178/308/15 169/182/15 +f 178/308/15 179/180/15 169/182/15 +f 180/185/18 174/309/18 173/310/18 +f 173/310/18 172/183/18 180/185/18 +f 215/188/18 214/311/18 213/312/18 +f 213/312/18 220/313/18 219/186/18 +f 219/186/18 218/314/18 217/187/18 +f 217/187/18 216/315/18 215/188/18 +f 215/188/18 213/312/18 219/186/18 +f 225/189/18 228/197/18 227/190/18 +f 224/192/19 228/197/19 225/189/19 +f 221/194/20 226/191/20 227/190/20 +f 222/196/17 227/190/17 228/197/17 +f 223/199/16 225/189/16 226/191/16 +f 230/201/19 232/316/19 231/202/19 +f 233/204/20 236/317/20 235/205/20 +f 230/207/21 235/318/21 236/208/21 +f 231/210/22 233/213/22 234/211/22 +f 232/209/18 236/208/18 233/213/18 +f 245/216/19 246/319/19 247/320/19 +f 247/320/19 248/321/19 249/214/19 +f 249/214/19 250/322/19 251/215/19 +f 251/215/19 252/323/19 245/216/19 +f 245/216/19 247/320/19 249/214/19 +f 277/217/17 288/228/17 284/218/17 +f 290/220/17 286/245/17 285/221/17 +f 278/223/17 277/217/17 283/219/17 +f 275/225/18 279/230/18 276/226/18 +f 289/222/17 285/221/17 284/218/17 +f 275/229/17 278/223/17 282/224/17 +f 287/231/16 292/239/16 293/232/16 +f 291/233/16 293/232/16 294/234/16 +f 294/234/16 295/237/16 280/236/16 +f 295/237/16 296/242/16 273/238/16 +f 292/239/16 287/231/16 274/240/16 +f 296/242/16 300/248/16 297/243/16 +f 290/220/17 299/324/17 298/244/17 +f 298/244/17 299/324/17 303/246/17 +f 300/248/16 304/325/16 301/249/16 +f 307/256/16 312/254/16 313/253/16 +f 308/258/17 306/326/17 314/251/17 +f 324/261/19 323/327/19 325/328/19 +f 325/328/19 326/329/19 327/259/19 +f 327/259/19 328/330/19 329/260/19 +f 329/260/19 330/331/19 324/261/19 +f 324/261/19 325/328/19 327/259/19 +f 335/262/18 338/270/18 337/263/18 +f 334/265/19 338/270/19 335/262/19 +f 331/267/20 336/264/20 337/263/20 +f 332/269/17 337/263/17 338/270/17 +f 333/272/16 335/262/16 336/264/16 +f 349/276/18 348/332/18 347/333/18 +f 347/333/18 354/334/18 353/274/18 +f 353/274/18 352/335/18 351/275/18 +f 351/275/18 350/336/18 349/276/18 +f 349/276/18 347/333/18 353/274/18 +f 364/279/19 363/337/19 365/338/19 +f 365/338/19 366/339/19 367/277/19 +f 367/277/19 368/340/19 369/278/19 +f 369/278/19 370/341/19 364/279/19 +f 364/279/19 365/338/19 367/277/19 +s 1 +f 131/342/23 117/343/24 116/344/25 +f 108/345/26 123/346/27 109/347/28 +f 101/348/17 115/349/29 102/350/30 +f 110/351/31 123/346/27 124/352/32 +f 102/350/30 116/344/25 103/353/33 +f 97/354/34 119/355/35 104/356/36 +f 103/353/33 117/343/24 97/354/34 +f 110/357/31 112/358/37 98/359/38 +f 104/356/36 118/360/39 105/361/40 +f 106/362/41 118/360/39 120/363/42 +f 98/359/38 111/364/43 99/365/44 +f 107/366/16 120/363/42 121/367/45 +f 99/365/44 113/368/46 100/369/47 +f 108/345/26 121/367/45 122/370/48 +f 100/369/47 114/371/49 101/348/17 +f 130/372/50 116/344/25 115/349/29 +f 129/373/51 115/349/29 114/371/49 +f 128/374/52 114/371/49 113/368/46 +f 127/375/53 113/368/46 111/364/43 +f 126/376/54 111/364/43 112/358/37 +f 132/377/55 118/360/39 119/355/35 +f 118/360/39 134/378/56 120/363/42 +f 120/363/42 135/379/57 121/367/45 +f 121/367/45 136/380/58 122/370/48 +f 122/370/48 137/381/59 123/346/27 +f 138/382/60 123/346/27 137/383/59 +f 138/384/60 112/358/37 124/385/32 +f 117/343/24 132/377/55 119/355/35 +f 130/386/50 126/387/54 125/388/61 +f 147/389/62 145/390/63 144/391/62 +f 140/392/64 143/393/15 142/394/64 +f 139/395/15 144/391/62 143/393/15 +f 146/396/65 142/394/64 141/397/65 +f 141/397/65 150/398/19 146/396/65 +f 158/165/66 159/169/67 157/168/66 +f 154/295/20 145/390/63 148/399/63 +f 155/160/68 157/168/66 151/161/68 +f 159/169/67 156/163/69 152/294/69 +f 170/400/70 172/401/16 173/402/70 +f 178/403/71 173/402/70 174/404/71 +f 162/405/72 180/406/73 171/407/72 +f 168/408/74 176/409/17 167/410/17 +f 169/411/16 171/407/72 172/401/16 +f 161/412/75 177/413/74 168/408/74 +f 166/414/76 164/415/77 165/416/77 +f 167/410/17 175/417/76 166/414/76 +f 199/418/78 194/419/79 202/420/80 +f 203/421/81 184/422/82 195/423/83 +f 204/424/84 195/423/83 196/425/85 +f 200/426/86 196/425/85 192/427/87 +f 198/428/88 183/429/89 184/430/82 +f 201/431/90 183/432/89 197/433/91 +f 200/434/86 191/435/92 199/436/78 +f 188/437/93 201/431/90 187/438/94 +f 183/429/89 254/439/95 184/430/82 +f 193/440/96 202/420/80 194/419/79 +f 187/438/94 197/433/91 181/441/97 +f 181/441/97 198/428/88 182/442/98 +f 189/443/99 198/444/88 203/421/81 +f 190/445/100 203/421/81 204/424/84 +f 186/446/101 204/424/84 200/426/86 +f 200/434/86 185/447/102 186/448/101 +f 185/449/102 202/420/80 188/437/93 +f 212/450/74 213/451/19 205/452/19 +f 210/453/76 219/454/17 211/455/17 +f 208/456/70 217/457/20 209/458/20 +f 206/459/72 215/460/16 207/461/16 +f 211/455/17 220/462/74 212/450/74 +f 209/463/20 218/464/76 210/453/76 +f 207/461/16 216/465/70 208/456/70 +f 205/452/19 214/466/72 206/459/72 +f 238/467/103 245/468/18 237/469/18 +f 237/469/18 252/470/104 244/471/104 +f 243/472/17 250/473/105 242/474/105 +f 241/475/15 248/476/106 240/477/106 +f 239/478/16 246/479/103 238/467/103 +f 244/471/104 251/480/17 243/472/17 +f 242/474/105 249/481/15 241/482/15 +f 240/477/106 247/483/16 239/478/16 +f 253/484/107 256/485/108 254/439/95 +f 184/422/82 258/486/109 195/423/83 +f 258/486/109 256/487/108 260/488/110 +f 257/489/111 183/432/89 193/440/96 +f 255/490/112 257/489/111 259/491/113 +f 196/425/85 262/492/114 192/427/87 +f 191/493/92 263/494/115 194/419/79 +f 192/495/87 261/496/116 191/435/92 +f 262/492/114 268/497/85 266/498/87 +f 261/499/116 267/500/79 263/494/115 +f 262/501/114 265/502/92 261/496/116 +f 268/497/85 270/503/71 266/498/87 +f 265/502/92 271/504/117 267/500/79 +f 266/505/87 269/506/77 265/502/92 +f 272/507/118 269/508/18 270/509/18 +f 259/510/118 256/511/18 255/512/18 +f 272/507/118 259/510/118 271/513/118 +f 195/423/83 264/514/119 196/425/85 +f 260/488/110 264/514/119 258/486/109 +f 263/494/115 193/440/96 194/419/79 +f 263/494/115 259/491/113 257/489/111 +f 267/500/79 271/504/117 259/491/113 +f 268/497/85 260/488/110 272/515/120 +f 277/217/64 281/235/15 288/228/15 +f 288/228/15 280/236/62 289/222/62 +f 278/223/121 291/233/64 277/217/64 +f 289/222/62 273/238/63 290/220/63 +f 286/245/122 295/516/123 285/221/123 +f 284/218/18 293/517/124 283/219/124 +f 285/221/123 294/518/18 284/218/18 +f 283/219/124 292/519/125 282/224/125 +f 282/224/125 276/226/20 279/230/20 +f 286/245/122 300/520/126 296/521/122 +f 273/238/63 299/324/127 290/220/63 +f 298/244/126 304/522/128 300/520/126 +f 297/243/127 303/246/129 299/324/127 +f 313/253/15 310/252/130 314/251/15 +f 305/257/131 314/251/15 306/326/131 +f 308/523/18 312/524/132 307/525/18 +f 311/526/132 309/255/133 312/524/132 +f 322/527/104 329/528/17 321/529/17 +f 320/530/105 327/531/15 319/532/15 +f 318/533/106 325/534/16 317/535/16 +f 316/536/103 324/537/18 315/538/18 +f 315/538/18 330/539/104 322/527/104 +f 321/529/17 328/540/105 320/530/105 +f 319/541/15 326/542/106 318/533/106 +f 317/535/16 323/543/103 316/536/103 +f 346/544/74 347/545/19 339/546/19 +f 344/547/76 353/548/17 345/549/17 +f 342/550/70 351/551/20 343/552/20 +f 340/553/72 349/554/16 341/555/16 +f 345/549/17 354/556/74 346/544/74 +f 343/557/20 352/558/76 344/547/76 +f 341/555/16 350/559/70 342/550/70 +f 339/546/19 348/560/72 340/553/72 +f 362/561/104 369/562/17 361/563/17 +f 360/564/105 367/565/15 359/566/15 +f 358/567/106 365/568/16 357/569/16 +f 356/570/103 364/571/18 355/572/18 +f 355/572/18 370/573/104 362/561/104 +f 361/563/17 368/574/105 360/564/105 +f 359/575/15 366/576/106 358/567/106 +f 357/569/16 363/577/103 356/570/103 +f 131/342/23 125/578/61 117/343/24 +f 108/345/26 122/370/48 123/346/27 +f 101/348/17 114/371/49 115/349/29 +f 110/351/31 109/347/28 123/346/27 +f 102/350/30 115/349/29 116/344/25 +f 97/354/34 117/343/24 119/355/35 +f 103/353/33 116/344/25 117/343/24 +f 110/357/31 124/385/32 112/358/37 +f 104/356/36 119/355/35 118/360/39 +f 106/362/41 105/361/40 118/360/39 +f 98/359/38 112/358/37 111/364/43 +f 107/366/16 106/362/41 120/363/42 +f 99/365/44 111/364/43 113/368/46 +f 108/345/26 107/366/16 121/367/45 +f 100/369/47 113/368/46 114/371/49 +f 130/372/50 131/579/23 116/344/25 +f 129/373/51 130/580/50 115/349/29 +f 128/374/52 129/581/51 114/371/49 +f 127/375/53 128/582/52 113/368/46 +f 126/376/54 127/583/53 111/364/43 +f 132/377/55 133/584/134 118/360/39 +f 118/360/39 133/585/134 134/378/56 +f 120/363/42 134/586/56 135/379/57 +f 121/367/45 135/587/57 136/380/58 +f 122/370/48 136/588/58 137/381/59 +f 138/382/60 124/352/32 123/346/27 +f 138/384/60 126/376/54 112/358/37 +f 117/343/24 125/578/61 132/377/55 +f 128/589/52 127/590/53 126/387/54 +f 126/387/54 138/591/60 125/388/61 +f 138/591/60 137/592/59 132/593/55 +f 125/388/61 138/591/60 132/593/55 +f 137/592/59 136/594/58 135/595/57 +f 135/595/57 134/596/56 137/592/59 +f 134/596/56 133/597/134 137/592/59 +f 133/597/134 132/593/55 137/592/59 +f 125/388/61 131/598/23 130/386/50 +f 130/386/50 129/599/51 128/589/52 +f 128/589/52 126/387/54 130/386/50 +f 147/389/62 148/399/63 145/390/63 +f 140/392/64 139/395/15 143/393/15 +f 139/395/15 147/389/62 144/391/62 +f 146/396/65 140/392/64 142/394/64 +f 141/397/65 149/600/19 150/398/19 +f 158/165/66 160/297/67 159/169/67 +f 154/295/20 153/167/20 145/390/63 +f 155/160/68 158/165/66 157/168/66 +f 159/169/67 160/297/67 156/163/69 +f 170/400/70 169/411/16 172/401/16 +f 178/403/71 170/400/70 173/402/70 +f 162/405/72 179/601/73 180/406/73 +f 168/408/74 177/413/74 176/409/17 +f 169/411/16 162/405/72 171/407/72 +f 161/412/75 163/602/75 177/413/74 +f 166/414/76 175/417/76 164/415/77 +f 167/410/17 176/409/17 175/417/76 +f 199/418/78 191/493/92 194/419/79 +f 203/421/81 198/444/88 184/422/82 +f 204/424/84 203/421/81 195/423/83 +f 200/426/86 204/424/84 196/425/85 +f 198/428/88 197/603/91 183/429/89 +f 201/431/90 193/440/96 183/432/89 +f 200/434/86 192/495/87 191/435/92 +f 188/437/93 202/420/80 201/431/90 +f 183/429/89 253/484/107 254/439/95 +f 193/440/96 201/431/90 202/420/80 +f 187/438/94 201/431/90 197/433/91 +f 181/441/97 197/603/91 198/428/88 +f 189/443/99 182/604/98 198/444/88 +f 190/445/100 189/443/99 203/421/81 +f 186/446/101 190/445/100 204/424/84 +f 200/434/86 199/436/78 185/447/102 +f 185/449/102 199/418/78 202/420/80 +f 212/450/74 220/462/74 213/451/19 +f 210/453/76 218/464/76 219/454/17 +f 208/456/70 216/465/70 217/457/20 +f 206/459/72 214/466/72 215/460/16 +f 211/455/17 219/454/17 220/462/74 +f 209/463/20 217/605/20 218/464/76 +f 207/461/16 215/460/16 216/465/70 +f 205/452/19 213/451/19 214/466/72 +f 238/467/103 246/479/103 245/468/18 +f 237/469/18 245/468/18 252/470/104 +f 243/472/17 251/480/17 250/473/105 +f 241/475/15 249/606/15 248/476/106 +f 239/478/16 247/483/16 246/479/103 +f 244/471/104 252/470/104 251/480/17 +f 242/474/105 250/473/105 249/481/15 +f 240/477/106 248/476/106 247/483/16 +f 253/484/107 255/607/112 256/485/108 +f 184/422/82 254/608/95 258/486/109 +f 258/486/109 254/608/95 256/487/108 +f 257/489/111 253/609/107 183/432/89 +f 255/490/112 253/609/107 257/489/111 +f 196/425/85 264/514/119 262/492/114 +f 191/493/92 261/499/116 263/494/115 +f 192/495/87 262/501/114 261/496/116 +f 262/492/114 264/514/119 268/497/85 +f 261/499/116 265/502/92 267/500/79 +f 262/501/114 266/505/87 265/502/92 +f 268/497/85 272/515/120 270/503/71 +f 265/502/92 269/506/77 271/504/117 +f 266/505/87 270/610/71 269/506/77 +f 272/507/118 271/513/118 269/508/18 +f 259/510/118 260/611/118 256/511/18 +f 272/507/118 260/611/118 259/510/118 +f 195/423/83 258/486/109 264/514/119 +f 260/488/110 268/497/85 264/514/119 +f 263/494/115 257/489/111 193/440/96 +f 263/494/115 267/500/79 259/491/113 +f 277/217/64 291/233/64 281/235/15 +f 288/228/15 281/235/15 280/236/62 +f 278/223/121 287/231/121 291/233/64 +f 289/222/62 280/236/62 273/238/63 +f 286/245/122 296/521/122 295/516/123 +f 284/218/18 294/518/18 293/517/124 +f 285/221/123 295/516/123 294/518/18 +f 283/219/124 293/517/124 292/519/125 +f 282/224/125 292/519/125 276/226/20 +f 286/245/122 298/244/126 300/520/126 +f 273/238/63 297/243/127 299/324/127 +f 298/244/126 302/247/128 304/522/128 +f 297/243/127 301/249/129 303/246/129 +f 313/253/15 309/255/130 310/252/130 +f 305/257/131 313/253/15 314/251/15 +f 308/523/18 311/526/132 312/524/132 +f 311/526/132 310/252/133 309/255/133 +f 322/527/104 330/539/104 329/528/17 +f 320/530/105 328/540/105 327/531/15 +f 318/533/106 326/542/106 325/534/16 +f 316/536/103 323/543/103 324/537/18 +f 315/538/18 324/537/18 330/539/104 +f 321/529/17 329/528/17 328/540/105 +f 319/541/15 327/612/15 326/542/106 +f 317/535/16 325/534/16 323/543/103 +f 346/544/74 354/556/74 347/545/19 +f 344/547/76 352/558/76 353/548/17 +f 342/550/70 350/559/70 351/551/20 +f 340/553/72 348/560/72 349/554/16 +f 345/549/17 353/548/17 354/556/74 +f 343/557/20 351/613/20 352/558/76 +f 341/555/16 349/554/16 350/559/70 +f 339/546/19 347/545/19 348/560/72 +f 362/561/104 370/573/104 369/562/17 +f 360/564/105 368/574/105 367/565/15 +f 358/567/106 366/576/106 365/568/16 +f 356/570/103 363/577/103 364/571/18 +f 355/572/18 364/571/18 370/573/104 +f 361/563/17 369/562/17 368/574/105 +f 359/575/15 367/614/15 366/576/106 +f 357/569/16 365/568/16 363/577/103 +o Lever +v -0.312500 0.375000 -1.625000 +v -0.356694 0.356694 -1.625000 +v -0.375000 0.312500 -1.625000 +v -0.356694 0.268306 -1.625000 +v -0.312500 0.250000 -1.625000 +v -0.268306 0.268306 -1.625000 +v -0.250000 0.312500 -1.625000 +v -0.268306 0.356694 -1.625000 +v -0.312500 0.375000 -1.500000 +v -0.356694 0.356694 -1.500000 +v -0.375000 0.312500 -1.500000 +v -0.356694 0.268306 -1.500000 +v -0.312500 0.250000 -1.500000 +v -0.268306 0.268306 -1.500000 +v -0.250000 0.312500 -1.500000 +v -0.268306 0.356694 -1.500000 +v -0.312500 0.343750 -1.500000 +v -0.312500 0.281250 -1.500000 +v -0.312500 0.343750 -1.625000 +v -0.312500 0.281250 -1.625000 +v -0.625000 0.343750 -1.625000 +v -0.625000 0.343750 -1.500000 +v -0.625000 0.281250 -1.500000 +v -0.625000 0.281250 -1.625000 +v -0.750000 0.156250 -1.500000 +v -0.750000 0.156250 -1.625000 +v -0.812500 0.156250 -1.625000 +v -0.812500 0.156250 -1.500000 +v -0.750000 0.093750 -1.500000 +v -0.750000 0.093750 -1.625000 +v -0.812500 0.093750 -1.625000 +v -0.812500 0.093750 -1.500000 +v -0.875000 -0.093750 -1.468750 +v -0.875000 0.093750 -1.468750 +v -0.875000 -0.093750 -1.656250 +v -0.875000 0.093750 -1.656250 +v -0.687500 -0.093750 -1.468750 +v -0.687500 0.093750 -1.468750 +v -0.687500 -0.093750 -1.656250 +v -0.687500 0.093750 -1.656250 +vt 0.781065 0.436548 +vt 0.810651 0.441624 +vt 0.781065 0.441624 +vt 0.781065 0.451777 +vt 0.810651 0.456853 +vt 0.781065 0.456853 +vt 0.834320 0.451777 +vt 0.816568 0.456853 +vt 0.810651 0.451777 +vt 0.816568 0.436548 +vt 0.834320 0.441624 +vt 0.840237 0.456853 +vt 0.834320 0.456853 +vt 0.834320 0.436548 +vt 0.840237 0.441624 +vt 0.893491 0.456853 +vt 0.875740 0.441624 +vt 0.893491 0.441624 +vt 0.875740 0.456853 +vt 0.857988 0.441624 +vt 0.857988 0.456853 +vt 0.840237 0.441624 +vt 0.911243 0.456853 +vt 0.911243 0.441624 +vt 0.911243 0.426396 +vt 0.893491 0.426396 +vt 0.893491 0.472081 +vt 0.911243 0.472081 +vt 0.810651 0.436548 +vt 0.840237 0.451777 +vt 0.840237 0.436548 +vt 0.840237 0.456853 +vt 0.745562 0.532995 +vt 0.757396 0.527919 +vt 0.757396 0.532995 +vt 0.745562 0.522843 +vt 0.757396 0.517766 +vt 0.757396 0.522843 +vt 0.745562 0.553299 +vt 0.757396 0.548223 +vt 0.757396 0.553299 +vt 0.745562 0.543147 +vt 0.757396 0.538071 +vt 0.757396 0.543147 +vt 0.745562 0.538071 +vt 0.745562 0.527919 +vt 0.745562 0.558376 +vt 0.757396 0.558376 +vt 0.745562 0.548223 +vt 0.816568 0.426396 +vt 0.781065 0.426396 +vt 0.834320 0.426396 +vt 0.745562 0.517766 +vt 0.810651 0.426396 +vt 0.840237 0.426396 +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 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 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.9239 -0.3827 0.0000 +s off +f 390/615/135 391/616/135 389/617/135 +f 387/618/136 393/619/136 388/620/136 +f 398/621/136 393/622/136 392/623/136 +f 394/624/135 397/625/135 391/616/135 +f 398/621/136 399/626/136 395/627/136 +f 396/628/135 401/629/135 397/625/135 +f 404/630/137 405/631/137 403/632/137 +f 406/633/135 409/634/135 405/631/135 +f 410/635/138 407/636/138 409/634/138 +f 408/637/136 403/632/136 407/638/136 +f 409/639/139 403/632/139 405/640/139 +f 406/641/140 408/637/140 410/642/140 +f 390/615/135 394/643/135 391/616/135 +f 387/618/136 392/623/136 393/619/136 +f 398/621/136 395/627/136 393/622/136 +f 394/624/135 396/628/135 397/625/135 +f 398/621/136 402/644/136 399/626/136 +f 396/628/135 400/645/135 401/629/135 +f 404/630/137 406/633/137 405/631/137 +f 406/633/135 410/635/135 409/634/135 +f 410/635/138 408/646/138 407/636/138 +f 408/637/136 404/630/136 403/632/136 +f 409/639/139 407/638/139 403/632/139 +f 406/641/140 404/630/140 408/637/140 +s 1 +f 386/647/141 377/648/138 378/649/141 +f 384/650/142 375/651/139 376/652/142 +f 382/653/143 373/654/137 374/655/143 +f 380/656/144 371/657/140 372/658/144 +f 379/659/140 378/649/141 371/657/140 +f 385/660/138 376/652/142 377/648/138 +f 383/661/139 374/655/143 375/662/139 +f 381/663/137 372/658/144 373/654/137 +f 391/616/145 398/621/146 392/623/145 +f 393/664/147 396/628/148 394/624/147 +f 388/665/139 394/643/147 390/615/139 +f 389/617/140 392/623/145 387/618/140 +f 395/666/148 400/645/138 396/628/148 +f 397/625/146 402/644/137 398/621/146 +f 386/647/141 385/660/138 377/648/138 +f 384/650/142 383/667/139 375/651/139 +f 382/653/143 381/663/137 373/654/137 +f 380/656/144 379/659/140 371/657/140 +f 379/659/140 386/647/141 378/649/141 +f 385/660/138 384/650/142 376/652/142 +f 383/661/139 382/653/143 374/655/143 +f 381/663/137 380/656/144 372/658/144 +f 391/616/145 397/625/146 398/621/146 +f 393/664/147 395/666/148 396/628/148 +f 388/665/139 393/668/147 394/643/147 +f 389/617/140 391/616/145 392/623/145 +f 395/666/148 399/669/138 400/645/138 +f 397/625/146 401/629/137 402/644/137 +o Buckle +v 0.750000 0.250000 -0.968750 +v 0.750000 -0.250000 -0.968750 +v 0.750000 -0.250000 -0.718750 +v 0.750000 0.250000 -0.718750 +v 0.772097 -0.250000 -0.709597 +v 0.772097 0.250000 -0.709597 +v 0.781250 -0.250000 -0.687500 +v 0.781250 0.250000 -0.687500 +v 0.772097 -0.250000 -0.665403 +v 0.772097 0.250000 -0.665403 +v 0.750000 -0.250000 -0.656250 +v 0.750000 0.250000 -0.656250 +v 0.727903 -0.250000 -0.665403 +v 0.727903 0.250000 -0.665403 +v 0.718750 -0.250000 -0.687500 +v 0.718750 0.250000 -0.687500 +v 0.727903 -0.250000 -0.709597 +v 0.727903 0.250000 -0.709597 +v 0.772097 -0.250000 -0.959597 +v 0.772097 0.250000 -0.959597 +v 0.781250 -0.250000 -0.937500 +v 0.781250 0.250000 -0.937500 +v 0.772097 -0.250000 -0.915403 +v 0.772097 0.250000 -0.915403 +v 0.750000 -0.250000 -0.906250 +v 0.750000 0.250000 -0.906250 +v 0.727903 -0.250000 -0.915403 +v 0.727903 0.250000 -0.915403 +v 0.718750 -0.250000 -0.937500 +v 0.718750 0.250000 -0.937500 +v 0.727903 -0.250000 -0.959597 +v 0.727903 0.250000 -0.959597 +v 0.772097 0.259153 -0.718750 +v 0.781250 0.281250 -0.718750 +v 0.772097 0.303347 -0.718750 +v 0.750000 0.312500 -0.718750 +v 0.727903 0.303347 -0.718750 +v 0.718750 0.281250 -0.718750 +v 0.727903 0.259153 -0.718750 +v 0.772097 0.259153 -0.906250 +v 0.781250 0.281250 -0.906250 +v 0.772097 0.303347 -0.906250 +v 0.750000 0.312500 -0.906250 +v 0.727903 0.303347 -0.906250 +v 0.718750 0.281250 -0.906250 +v 0.727903 0.259153 -0.906250 +v 0.772097 -0.259153 -0.718750 +v 0.781250 -0.281250 -0.718750 +v 0.772097 -0.303347 -0.718750 +v 0.750000 -0.312500 -0.718750 +v 0.727903 -0.303347 -0.718750 +v 0.718750 -0.281250 -0.718750 +v 0.727903 -0.259153 -0.718750 +v 0.772097 -0.259153 -0.906250 +v 0.781250 -0.281250 -0.906250 +v 0.772097 -0.303347 -0.906250 +v 0.750000 -0.312500 -0.906250 +v 0.727903 -0.303347 -0.906250 +v 0.718750 -0.281250 -0.906250 +v 0.727903 -0.259153 -0.906250 +vt 0.656805 0.654822 +vt 0.656805 0.659898 +vt 0.650888 0.659898 +vt 0.680473 0.654822 +vt 0.674556 0.659898 +vt 0.674556 0.654822 +vt 0.698225 0.654822 +vt 0.692308 0.614213 +vt 0.698225 0.614213 +vt 0.662722 0.659898 +vt 0.656805 0.675127 +vt 0.656805 0.680203 +vt 0.662722 0.720812 +vt 0.656805 0.720812 +vt 0.692308 0.654822 +vt 0.686391 0.614213 +vt 0.686391 0.654822 +vt 0.692308 0.659898 +vt 0.686391 0.659898 +vt 0.650888 0.680203 +vt 0.650888 0.720812 +vt 0.680473 0.614213 +vt 0.668639 0.654822 +vt 0.668639 0.659898 +vt 0.692308 0.680203 +vt 0.698225 0.720812 +vt 0.692308 0.720812 +vt 0.674556 0.614213 +vt 0.686391 0.680203 +vt 0.686391 0.720812 +vt 0.668639 0.614213 +vt 0.668639 0.680203 +vt 0.674556 0.720812 +vt 0.668639 0.720812 +vt 0.680473 0.680203 +vt 0.680473 0.720812 +vt 0.662722 0.614213 +vt 0.680473 0.659898 +vt 0.674556 0.680203 +vt 0.662722 0.654822 +vt 0.656805 0.614213 +vt 0.698225 0.659898 +vt 0.662722 0.680203 +vt 0.650888 0.614213 +vt 0.668639 0.675127 +vt 0.680473 0.675127 +vt 0.662722 0.675127 +vt 0.674556 0.675127 +vt 0.686391 0.675127 +vt 0.692308 0.675127 +vt 0.698225 0.680203 +vt 0.650888 0.675127 +vt 0.674556 0.609137 +vt 0.686391 0.609137 +vt 0.692308 0.609137 +vt 0.668639 0.609137 +vt 0.680473 0.609137 +vt 0.662722 0.609137 +vt 0.656805 0.609137 +vt 0.686391 0.725888 +vt 0.692308 0.725888 +vt 0.680473 0.725888 +vt 0.674556 0.725888 +vt 0.668639 0.725888 +vt 0.662722 0.725888 +vt 0.656805 0.725888 +vt 0.650888 0.725888 +vt 0.698225 0.725888 +vt 0.674556 0.741117 +vt 0.668639 0.741117 +vt 0.662722 0.741117 +vt 0.656805 0.741117 +vt 0.650888 0.741117 +vt 0.698225 0.741117 +vt 0.692308 0.741117 +vt 0.686391 0.741117 +vt 0.680473 0.741117 +vt 0.650888 0.654822 +vt 0.698225 0.675127 +vn -0.7294 -0.2820 -0.6233 +vn -0.7294 -0.6233 -0.2820 +vn 0.0000 -0.7071 -0.7071 +vn 0.6441 0.3032 0.7023 +vn -0.0000 0.9356 0.3532 +vn 0.0000 0.3532 0.9356 +vn 0.7294 0.2820 -0.6233 +vn 0.0000 0.7071 -0.7071 +vn -0.9919 0.0899 0.0899 +vn -0.7294 -0.6233 0.2820 +vn -0.7294 -0.2820 0.6233 +vn -0.9919 -0.0899 -0.0899 +vn -0.7294 0.2820 0.6233 +vn 0.7294 -0.2820 -0.6233 +vn 0.9919 -0.0899 0.0899 +vn 0.9919 0.0899 0.0899 +vn 0.7294 -0.6233 -0.2820 +vn -0.0000 -0.7071 0.7071 +vn -0.0000 0.7071 0.7071 +vn 0.6441 -0.3032 0.7023 +vn -0.6441 0.3032 0.7023 +vn -0.6441 0.7023 0.3032 +vn 0.7294 -0.2820 0.6233 +vn 0.7294 0.2820 0.6233 +vn 0.0000 -0.3532 0.9356 +vn 0.9919 0.0899 -0.0899 +vn 0.9919 -0.0899 -0.0899 +vn -0.6441 -0.3032 0.7023 +vn -0.6441 0.3032 -0.7023 +vn 0.0000 -0.3532 -0.9356 +vn -0.6441 -0.3032 -0.7023 +vn 0.6441 0.3032 -0.7023 +vn 0.6441 -0.3032 -0.7023 +vn -0.9919 -0.0899 0.0899 +vn 0.6441 0.7023 0.3032 +vn -0.0000 0.3532 -0.9356 +vn -0.7294 0.2820 -0.6233 +vn -0.9919 0.0899 -0.0899 +vn -0.6441 0.7023 -0.3032 +vn 0.6441 0.7023 -0.3032 +vn 0.0000 0.9356 -0.3532 +vn 0.7294 -0.6233 0.2820 +vn -0.0000 -0.9356 0.3532 +vn 0.7294 0.6233 -0.2820 +vn -0.6441 -0.7023 0.3032 +vn 0.6441 -0.7023 0.3032 +vn -0.7294 0.6233 -0.2820 +vn 0.7294 0.6233 0.2820 +vn 0.6441 -0.7023 -0.3032 +vn 0.0000 -0.9356 -0.3532 +vn -0.6441 -0.7023 -0.3032 +vn -0.7294 0.6233 0.2820 +s 1 +f 428/670/149 449/671/150 414/672/151 +f 420/673/152 446/674/153 422/675/154 +f 414/676/151 415/677/155 413/678/156 +f 448/679/157 456/680/158 449/671/150 +f 438/681/159 439/682/160 437/683/161 +f 416/684/162 417/685/163 415/677/155 +f 418/686/164 443/687/165 444/688/164 +f 436/689/166 437/683/161 435/690/167 +f 418/686/164 419/691/168 417/685/163 +f 424/692/169 446/674/153 447/693/170 +f 434/694/171 435/695/167 433/696/172 +f 420/673/152 421/697/173 419/691/168 +f 428/670/149 448/679/157 449/671/150 +f 432/698/174 433/696/172 431/699/175 +f 422/675/154 423/700/176 421/697/173 +f 442/701/177 412/702/178 441/703/179 +f 430/704/180 431/699/175 429/705/181 +f 424/692/169 425/706/182 423/700/176 +f 418/686/164 445/707/183 420/673/152 +f 411/708/184 429/705/181 412/702/178 +f 426/709/157 427/710/185 425/706/182 +f 414/711/151 443/687/165 416/684/162 +f 440/712/186 441/703/179 439/682/160 +f 428/670/149 413/713/156 427/710/185 +f 426/709/157 447/693/170 448/679/157 +f 446/674/153 454/714/187 447/693/170 +f 444/688/164 452/715/188 445/707/183 +f 447/693/170 455/716/186 448/679/157 +f 445/707/183 453/717/189 446/674/153 +f 443/687/165 451/718/174 444/688/164 +f 411/708/184 452/715/188 430/704/180 +f 430/704/180 451/718/174 432/698/174 +f 434/694/171 451/718/174 450/719/190 +f 434/694/171 450/719/190 436/720/166 +f 414/711/151 450/719/190 443/687/165 +f 449/671/150 436/721/166 414/672/151 +f 436/689/166 456/680/158 438/681/159 +f 438/681/159 455/716/186 440/712/186 +f 440/712/186 454/714/187 442/701/177 +f 411/708/184 454/714/187 453/717/189 +f 423/700/176 460/722/191 421/697/173 +f 415/677/155 458/723/163 457/724/192 +f 425/706/182 461/725/193 423/700/176 +f 417/685/163 459/726/194 458/723/163 +f 427/710/185 462/727/182 425/706/182 +f 421/697/173 459/726/194 419/691/168 +f 415/677/155 457/724/192 413/678/156 +f 413/713/156 463/728/195 427/710/185 +f 465/729/175 433/696/172 464/730/196 +f 429/705/181 465/729/175 466/731/197 +f 412/702/178 466/731/197 467/732/198 +f 412/702/178 468/733/199 441/703/179 +f 439/682/160 468/733/199 469/734/160 +f 437/683/161 469/734/160 470/735/200 +f 437/683/161 470/735/200 435/736/167 +f 435/737/167 464/730/196 433/696/172 +f 468/733/199 460/738/191 461/739/193 +f 469/734/160 461/739/193 462/740/182 +f 470/735/200 462/740/182 463/741/195 +f 413/742/156 470/735/200 463/741/195 +f 464/730/196 413/743/156 457/744/192 +f 465/729/175 457/744/192 458/745/163 +f 466/731/197 458/745/163 459/746/194 +f 467/732/198 459/746/194 460/738/191 +f 420/673/152 445/707/183 446/674/153 +f 414/676/151 416/684/162 415/677/155 +f 448/679/157 455/716/186 456/680/158 +f 438/681/159 440/712/186 439/682/160 +f 416/684/162 418/686/164 417/685/163 +f 418/686/164 416/684/162 443/687/165 +f 436/689/166 438/681/159 437/683/161 +f 418/686/164 420/673/152 419/691/168 +f 424/692/169 422/675/154 446/674/153 +f 434/694/171 436/720/166 435/695/167 +f 420/673/152 422/675/154 421/697/173 +f 428/670/149 426/709/157 448/679/157 +f 432/698/174 434/694/171 433/696/172 +f 422/675/154 424/692/169 423/700/176 +f 442/701/177 411/708/184 412/702/178 +f 430/704/180 432/698/174 431/699/175 +f 424/692/169 426/709/157 425/706/182 +f 418/686/164 444/688/164 445/707/183 +f 411/708/184 430/704/180 429/705/181 +f 426/709/157 428/670/149 427/710/185 +f 440/712/186 442/701/177 441/703/179 +f 428/670/149 414/747/151 413/713/156 +f 426/709/157 424/692/169 447/693/170 +f 446/674/153 453/717/189 454/714/187 +f 444/688/164 451/718/174 452/715/188 +f 447/693/170 454/714/187 455/716/186 +f 445/707/183 452/715/188 453/717/189 +f 443/687/165 450/719/190 451/718/174 +f 411/708/184 453/717/189 452/715/188 +f 430/704/180 452/715/188 451/718/174 +f 434/694/171 432/698/174 451/718/174 +f 414/711/151 436/748/166 450/719/190 +f 449/671/150 456/680/158 436/721/166 +f 438/681/159 456/680/158 455/716/186 +f 440/712/186 455/716/186 454/714/187 +f 411/708/184 442/701/177 454/714/187 +f 423/700/176 461/725/193 460/722/191 +f 415/677/155 417/685/163 458/723/163 +f 425/706/182 462/727/182 461/725/193 +f 417/685/163 419/691/168 459/726/194 +f 427/710/185 463/728/195 462/727/182 +f 421/697/173 460/722/191 459/726/194 +f 465/729/175 431/699/175 433/696/172 +f 429/705/181 431/699/175 465/729/175 +f 412/702/178 429/705/181 466/731/197 +f 412/702/178 467/732/198 468/733/199 +f 439/682/160 441/703/179 468/733/199 +f 437/683/161 439/682/160 469/734/160 +f 468/733/199 467/732/198 460/738/191 +f 469/734/160 468/733/199 461/739/193 +f 470/735/200 469/734/160 462/740/182 +f 413/742/156 435/736/167 470/735/200 +f 464/730/196 435/737/167 413/743/156 +f 465/729/175 464/730/196 457/744/192 +f 466/731/197 465/729/175 458/745/163 +f 467/732/198 466/731/197 459/746/194 +o Barrel +v -0.125000 0.312500 4.375000 +v 0.125000 0.312500 4.375000 +v 0.125000 -0.312500 4.375000 +v -0.125000 -0.312500 4.375000 +v 0.312500 0.312500 4.375000 +v 0.312500 -0.312500 4.375000 +v 0.468750 -0.270633 4.375000 +v 0.583133 -0.156250 4.375000 +v 0.625000 0.000000 4.375000 +v 0.583133 0.156250 4.375000 +v 0.468750 0.270633 4.375000 +v -0.312500 0.312500 4.375000 +v -0.468750 0.270633 4.375000 +v -0.583133 0.156250 4.375000 +v -0.625000 0.000000 4.375000 +v -0.583133 -0.156250 4.375000 +v -0.468750 -0.270633 4.375000 +v -0.312500 -0.312500 4.375000 +v 0.125000 -0.250000 4.375000 +v -0.125000 -0.250000 4.375000 +v -0.125000 0.250000 4.375000 +v 0.125000 0.250000 4.375000 +v -0.125000 0.312500 4.250000 +v 0.125000 0.312500 4.250000 +v 0.125000 -0.312500 4.250000 +v -0.125000 -0.312500 4.250000 +v -0.312500 -0.375000 4.250000 +v -0.500000 -0.324759 4.250000 +v -0.637259 -0.187500 4.250000 +v -0.687500 0.000000 4.250000 +v -0.637259 0.187500 4.250000 +v -0.500000 0.324759 4.250000 +v -0.637259 0.187500 4.750000 +v -0.500000 0.324759 4.750000 +v 0.312500 0.375000 4.750000 +v 0.312500 -0.375000 4.750000 +v 0.500000 -0.324759 4.750000 +v 0.637259 -0.187500 4.750000 +v 0.687500 0.000000 4.750000 +v 0.637260 0.187500 4.750000 +v 0.500000 0.324759 4.750000 +v -0.312500 0.375000 4.750000 +v 0.312500 0.312500 4.625000 +v 0.312500 -0.312500 4.625000 +v 0.468750 -0.270633 4.625000 +v 0.583133 -0.156250 4.625000 +v 0.625000 0.000000 4.625000 +v 0.583133 0.156250 4.625000 +v 0.468750 0.270633 4.625000 +v -0.312500 0.312500 4.625000 +v -0.468750 0.270633 4.625000 +v -0.583133 0.156250 4.625000 +v 0.312500 0.375000 4.250000 +v 0.312500 -0.375000 4.250000 +v 0.500000 -0.324759 4.250000 +v 0.637259 -0.187500 4.250000 +v -0.625000 0.000000 4.625000 +v -0.583133 -0.156250 4.625000 +v -0.468750 -0.270633 4.625000 +v 0.687500 0.000000 4.250000 +v 0.637260 0.187500 4.250000 +v 0.500000 0.324759 4.250000 +v -0.312500 0.375000 4.250000 +v -0.312500 -0.375000 4.375000 +v -0.500000 -0.324759 4.375000 +v -0.637259 -0.187500 4.375000 +v 0.312500 0.312500 3.500000 +v 0.312500 -0.312500 3.500000 +v 0.468750 -0.270633 3.500000 +v 0.583133 -0.156250 3.500000 +v 0.625000 0.000000 3.500000 +v 0.583133 0.156250 3.500000 +v 0.468750 0.270633 3.500000 +v -0.312500 0.312500 3.500000 +v -0.468750 0.270633 3.500000 +v -0.583133 0.156250 3.500000 +v -0.625000 0.000000 3.500000 +v -0.583133 -0.156250 3.500000 +v -0.468750 -0.270633 3.500000 +v -0.312500 -0.312500 3.500000 +v 0.312500 0.250000 3.500000 +v 0.187500 0.216506 3.500000 +v 0.095994 0.125000 3.500000 +v 0.062500 0.000000 3.500000 +v 0.095994 -0.125000 3.500000 +v 0.187500 -0.216506 3.500000 +v 0.312500 -0.250000 3.500000 +v 0.437500 -0.216506 3.500000 +v 0.529006 -0.125000 3.500000 +v 0.562500 0.000000 3.500000 +v 0.529006 0.125000 3.500000 +v 0.437500 0.216506 3.500000 +v -0.312500 0.250000 3.500000 +v -0.437500 0.216506 3.500000 +v -0.529006 0.125000 3.500000 +v -0.562500 0.000000 3.500000 +v -0.529006 -0.125000 3.500000 +v -0.437500 -0.216506 3.500000 +v -0.312500 -0.250000 3.500000 +v -0.187500 -0.216506 3.500000 +v -0.095994 -0.125000 3.500000 +v -0.062500 0.000000 3.500000 +v -0.095994 0.125000 3.500000 +v -0.187500 0.216506 3.500000 +v 0.468750 -0.270633 8.000000 +v 0.312500 -0.312500 8.000000 +v 0.583133 -0.156250 8.000000 +v 0.625000 0.000000 8.000000 +v 0.583133 0.156250 8.000000 +v 0.468750 0.270633 8.000000 +v 0.312500 0.312500 8.000000 +v -0.468750 0.270633 8.000000 +v -0.312500 0.312500 8.000000 +v -0.583133 0.156250 8.000000 +v -0.625000 0.000000 8.000000 +v -0.583133 -0.156250 8.000000 +v -0.468750 -0.270633 8.000000 +v -0.312500 -0.312500 8.000000 +v -0.095994 0.125000 8.000000 +v -0.095994 -0.125000 8.000000 +v 0.095994 -0.125000 8.000000 +v 0.062500 0.000000 8.000000 +v -0.062500 0.000000 8.000000 +v 0.095994 0.125000 8.000000 +v 0.187500 0.216506 8.000000 +v 0.312500 0.250000 8.000000 +v 0.187500 -0.216506 8.000000 +v 0.312500 -0.250000 8.000000 +v 0.437500 -0.216506 8.000000 +v 0.529006 -0.125000 8.000000 +v 0.562500 0.000000 8.000000 +v 0.529006 0.125000 8.000000 +v 0.437500 0.216506 8.000000 +v -0.437500 0.216506 8.000000 +v -0.312500 0.250000 8.000000 +v -0.529006 0.125000 8.000000 +v -0.562500 0.000000 8.000000 +v -0.529006 -0.125000 8.000000 +v -0.437500 -0.216506 8.000000 +v -0.312500 -0.250000 8.000000 +v -0.187500 -0.216506 8.000000 +v -0.187500 0.216506 8.000000 +v -0.125000 0.375000 6.187500 +v 0.125000 0.375000 6.187500 +v -0.125000 0.375000 5.812500 +v 0.125000 0.375000 5.812500 +v 0.125000 0.500000 5.812500 +v -0.125000 0.500000 5.812500 +v 0.125000 0.500000 6.187500 +v -0.125000 0.500000 6.187500 +v -0.687500 0.000000 4.375000 +v 0.125000 0.250000 4.250000 +v -0.125000 0.250000 4.250000 +v -0.312500 -0.312500 4.625000 +v 0.125000 -0.250000 3.500000 +v -0.125000 -0.250000 3.500000 +v 0.125000 -0.250000 8.000000 +v -0.125000 -0.250000 8.000000 +v 0.000000 0.650888 5.911612 +v 0.000000 0.562500 5.875000 +v 0.000000 0.474112 5.911612 +v 0.062500 0.650888 5.937500 +v 0.088388 0.562500 5.911612 +v 0.062500 0.474112 5.937500 +v 0.088388 0.650888 6.000000 +v 0.125000 0.562500 6.000000 +v 0.088388 0.474112 6.000000 +v 0.062500 0.650888 6.062500 +v 0.088388 0.562500 6.088388 +v 0.062500 0.474112 6.062500 +v 0.125000 -0.250000 4.625000 +v 0.000000 0.650888 6.088388 +v 0.000000 0.562500 6.125000 +v 0.000000 0.474112 6.088388 +v 0.000000 0.687500 6.000000 +v -0.062500 0.650888 6.062500 +v -0.088388 0.562500 6.088388 +v -0.062500 0.474112 6.062500 +v -0.088388 0.650888 6.000000 +v -0.125000 0.562500 6.000000 +v -0.088388 0.474112 6.000000 +v -0.062500 0.650888 5.937500 +v -0.088388 0.562500 5.911612 +v -0.062500 0.474112 5.937500 +v -0.125000 -0.250000 4.625000 +v -0.125000 0.250000 4.625000 +v 0.125000 0.250000 4.625000 +v 0.437500 -0.562500 3.437500 +v -0.437500 -0.562500 3.437500 +v 0.437500 -0.250000 3.437500 +v -0.437500 -0.250000 3.437500 +v 0.437500 -0.437500 4.500000 +v -0.437500 -0.437500 4.500000 +v 0.437500 -0.250000 4.500000 +v -0.437500 -0.250000 4.500000 +v -0.125000 0.250000 8.000000 +v 0.125000 0.250000 8.000000 +v -0.125000 0.250000 3.500000 +v 0.125000 0.250000 3.500000 +v -0.125000 0.375000 3.500000 +v -0.125000 0.375000 8.000000 +v 0.125000 0.375000 8.000000 +v 0.125000 0.375000 3.500000 +v -0.125000 -0.250000 4.250000 +v 0.125000 -0.250000 4.250000 +v -0.312500 -0.312500 4.250000 +v -0.468750 -0.270633 4.250000 +v -0.583133 -0.156250 4.250000 +v -0.625000 0.000000 4.250000 +v -0.583133 0.156250 4.250000 +v -0.468750 0.270633 4.250000 +v -0.312500 0.312500 4.250000 +v 0.468750 0.270633 4.250000 +v 0.583133 0.156250 4.250000 +v 0.625000 0.000000 4.250000 +v 0.583133 -0.156250 4.250000 +v 0.468750 -0.270633 4.250000 +v 0.312500 -0.312500 4.250000 +v 0.312500 0.312500 4.250000 +v -0.312500 0.375000 4.375000 +v 0.500000 0.324759 4.375000 +v 0.637260 0.187500 4.375000 +v 0.687500 0.000000 4.375000 +v 0.637259 -0.187500 4.375000 +v 0.500000 -0.324759 4.375000 +v 0.312500 -0.375000 4.375000 +v 0.312500 0.375000 4.375000 +v -0.500000 0.324759 4.375000 +v -0.637259 0.187500 4.375000 +v -0.687500 0.000000 4.750000 +v -0.637259 -0.187500 4.750000 +v -0.500000 -0.324759 4.750000 +v -0.312500 -0.375000 4.750000 +v -0.312500 0.375000 4.625000 +v 0.500000 0.324759 4.625000 +v 0.637260 0.187500 4.625000 +v 0.687500 0.000000 4.625000 +v 0.637259 -0.187500 4.625000 +v 0.500000 -0.324759 4.625000 +v 0.312500 -0.375000 4.625000 +v 0.312500 0.375000 4.625000 +v -0.500000 0.324759 4.625000 +v -0.637259 0.187500 4.625000 +v -0.687500 0.000000 4.625000 +v -0.637259 -0.187500 4.625000 +v -0.500000 -0.324759 4.625000 +v -0.312500 -0.375000 4.625000 +v -0.125000 -0.312500 4.625000 +v 0.125000 -0.312500 4.625000 +v 0.125000 0.312500 4.625000 +v -0.125000 0.312500 4.625000 +v 0.125000 0.250000 4.750000 +v -0.125000 0.250000 4.750000 +v -0.125000 -0.250000 4.750000 +v 0.125000 -0.250000 4.750000 +v -0.312500 -0.312500 4.750000 +v -0.468750 -0.270633 4.750000 +v -0.583133 -0.156250 4.750000 +v -0.625000 0.000000 4.750000 +v -0.583133 0.156250 4.750000 +v -0.468750 0.270633 4.750000 +v -0.312500 0.312500 4.750000 +v 0.468750 0.270633 4.750000 +v 0.583133 0.156250 4.750000 +v 0.625000 0.000000 4.750000 +v 0.583133 -0.156250 4.750000 +v 0.468750 -0.270633 4.750000 +v 0.312500 -0.312500 4.750000 +v 0.312500 0.312500 4.750000 +v -0.125000 -0.312500 4.750000 +v 0.125000 -0.312500 4.750000 +v 0.125000 0.312500 4.750000 +v -0.125000 0.312500 4.750000 +vt 0.579882 0.543147 +vt 0.585799 0.527919 +vt 0.585799 0.543147 +vt 0.579882 0.776650 +vt 0.585799 0.791878 +vt 0.579882 0.791878 +vt 0.579882 0.558376 +vt 0.585799 0.573604 +vt 0.585799 0.558376 +vt 0.585799 0.588832 +vt 0.579882 0.573604 +vt 0.585799 0.604061 +vt 0.579882 0.588832 +vt 0.585799 0.619289 +vt 0.579882 0.604061 +vt 0.597633 0.700508 +vt 0.603550 0.715736 +vt 0.597633 0.715736 +vt 0.603550 0.761421 +vt 0.597633 0.776650 +vt 0.597633 0.761421 +vt 0.603550 0.730964 +vt 0.597633 0.730964 +vt 0.579882 0.634518 +vt 0.585799 0.649746 +vt 0.579882 0.649746 +vt 0.579882 0.619289 +vt 0.585802 0.434195 +vt 0.591718 0.431475 +vt 0.594464 0.441626 +vt 0.609467 0.451777 +vt 0.597634 0.451777 +vt 0.594464 0.461927 +vt 0.615383 0.431475 +vt 0.621299 0.434195 +vt 0.612637 0.441626 +vt 0.591718 0.472078 +vt 0.585802 0.469358 +vt 0.621299 0.469358 +vt 0.633131 0.477153 +vt 0.615383 0.472078 +vt 0.559179 0.429800 +vt 0.573969 0.431475 +vt 0.562137 0.434195 +vt 0.548351 0.439088 +vt 0.553475 0.441626 +vt 0.550304 0.451777 +vt 0.544388 0.451777 +vt 0.548351 0.464465 +vt 0.553475 0.461927 +vt 0.559179 0.473754 +vt 0.562137 0.469358 +vt 0.573969 0.477153 +vt 0.573969 0.472078 +vt 0.647922 0.429800 +vt 0.633131 0.431475 +vt 0.633131 0.426400 +vt 0.658749 0.439088 +vt 0.644964 0.434195 +vt 0.662713 0.451777 +vt 0.653626 0.441626 +vt 0.653626 0.461927 +vt 0.656796 0.451777 +vt 0.658749 0.464465 +vt 0.644964 0.469358 +vt 0.647922 0.473754 +vt 0.612637 0.461927 +vt 0.573969 0.426400 +vt 0.532544 0.538071 +vt 0.568047 0.527919 +vt 0.568047 0.538071 +vt 0.568047 0.558376 +vt 0.532544 0.568528 +vt 0.532544 0.558376 +vt 0.579882 0.558376 +vt 0.520710 0.538071 +vt 0.585799 0.670051 +vt 0.579882 0.685279 +vt 0.579882 0.670051 +vt 0.597633 0.746193 +vt 0.118343 0.548223 +vt 0.017751 0.532995 +vt 0.118343 0.522843 +vt 0.118343 0.426396 +vt 0.017751 0.441624 +vt 0.017751 0.426396 +vt 0.017751 0.451777 +vt 0.118343 0.451777 +vt 0.000000 0.522843 +vt 0.017751 0.522843 +vt 0.585799 0.685279 +vt 0.579882 0.700508 +vt 0.011834 0.274112 +vt 0.437870 0.294416 +vt 0.011834 0.294416 +vt 0.437870 0.263959 +vt 0.011834 0.263959 +vt 0.011834 0.304569 +vt 0.437870 0.304569 +vt 0.000000 0.274112 +vt 0.000000 0.294416 +vt 0.585799 0.700508 +vt 0.579882 0.715736 +vt 0.585799 0.715736 +vt 0.579882 0.730964 +vt 0.585799 0.746193 +vt 0.585799 0.730964 +vt 0.585799 0.761421 +vt 0.579882 0.746193 +vt 0.585799 0.776650 +vt 0.579882 0.761421 +vt 0.603550 0.776650 +vt 0.597633 0.791878 +vt 0.597633 0.776650 +vt 0.603550 0.543147 +vt 0.597633 0.527919 +vt 0.603550 0.527919 +vt 0.603550 0.558376 +vt 0.597633 0.543147 +vt 0.603550 0.573604 +vt 0.597633 0.558376 +vt 0.597633 0.588832 +vt 0.597633 0.573604 +vt 0.603550 0.588832 +vt 0.597633 0.604061 +vt 0.603550 0.619289 +vt 0.603550 0.604061 +vt 0.603550 0.634518 +vt 0.597633 0.649746 +vt 0.597633 0.634518 +vt 0.597633 0.619289 +vt 0.603550 0.685279 +vt 0.597633 0.670051 +vt 0.603550 0.670051 +vt 0.603550 0.649746 +vt 0.597633 0.685279 +vt 0.603550 0.700508 +vt 0.597633 0.700508 +vt 0.603550 0.746193 +vt 0.597633 0.761421 +vt 0.597633 0.746193 +vt 0.603550 0.730964 +vt 0.597633 0.730964 +vt 0.597633 0.715736 +vt 0.603550 0.761421 +vt 0.603550 0.715736 +vt 0.603550 0.746193 +vt 0.597633 0.685279 +vt 0.603550 0.700508 +vt 0.597633 0.670051 +vt 0.603550 0.649746 +vt 0.603550 0.670051 +vt 0.603550 0.685279 +vt 0.603550 0.634518 +vt 0.597633 0.619289 +vt 0.603550 0.619289 +vt 0.597633 0.649746 +vt 0.597633 0.634518 +vt 0.597633 0.604061 +vt 0.603550 0.604061 +vt 0.603550 0.588832 +vt 0.597633 0.588832 +vt 0.603550 0.573604 +vt 0.597633 0.573604 +vt 0.597633 0.558376 +vt 0.603550 0.558376 +vt 0.597633 0.543147 +vt 0.603550 0.543147 +vt 0.597633 0.527919 +vt 0.603550 0.527919 +vt 0.603550 0.776650 +vt 0.597633 0.791878 +vt 0.585799 0.776650 +vt 0.579882 0.761421 +vt 0.585799 0.761421 +vt 0.579882 0.746193 +vt 0.585799 0.746193 +vt 0.579882 0.730964 +vt 0.585799 0.730964 +vt 0.585799 0.715736 +vt 0.579882 0.715736 +vt 0.585799 0.700508 +vt 0.579882 0.700508 +vt 0.585799 0.685279 +vt 0.579882 0.685279 +vt 0.579882 0.649746 +vt 0.585799 0.670051 +vt 0.579882 0.670051 +vt 0.585799 0.619289 +vt 0.579882 0.634518 +vt 0.579882 0.619289 +vt 0.585799 0.649746 +vt 0.579882 0.604061 +vt 0.585799 0.604061 +vt 0.579882 0.588832 +vt 0.585799 0.588832 +vt 0.579882 0.573604 +vt 0.585799 0.573604 +vt 0.579882 0.558376 +vt 0.585799 0.558376 +vt 0.585799 0.543147 +vt 0.579882 0.543147 +vt 0.579882 0.776650 +vt 0.585799 0.791878 +vt 0.579882 0.791878 +vt 0.585799 0.527919 +vt 0.579882 0.527919 +vt 0.585799 0.634518 +vt 0.633131 0.472078 +vt 0.532544 0.527919 +vt 0.568047 0.568528 +vt 0.579882 0.538071 +vt 0.520710 0.558376 +vt 0.017751 0.548223 +vt -0.000000 0.451777 +vt 0.437870 0.274112 +vt 0.603550 0.791878 +vt 0.603550 0.791878 +vt 0.585799 0.634518 +vt 0.579882 0.527919 +vt 0.437870 0.121827 +vt 0.011834 0.142132 +vt 0.011834 0.121827 +vt 0.011834 0.411168 +vt 0.437870 0.426396 +vt 0.011834 0.426396 +vt 0.437870 0.319797 +vt 0.437870 0.091371 +vt 0.011834 0.081218 +vt 0.437870 0.081218 +vt 0.437870 0.335025 +vt 0.011834 0.319797 +vt 0.437870 0.101523 +vt 0.011834 0.091371 +vt 0.437870 0.091371 +vt 0.011834 0.071066 +vt 0.437870 0.071066 +vt 0.437870 0.350254 +vt 0.011834 0.335025 +vt 0.011834 0.081218 +vt 0.437870 0.081218 +vt 0.011834 0.060914 +vt 0.437870 0.060914 +vt 0.437870 0.365482 +vt 0.011834 0.350254 +vt 0.011834 0.071066 +vt 0.437870 0.071066 +vt 0.437870 0.380711 +vt 0.011834 0.365482 +vt 0.011834 0.060914 +vt 0.437870 0.060914 +vt 0.437870 0.395939 +vt 0.011834 0.380711 +vt 0.011834 0.050761 +vt 0.437870 0.050761 +vt 0.437870 0.411168 +vt 0.011834 0.395939 +vt 0.011834 0.040609 +vt 0.437870 0.040609 +vt 0.011834 0.050761 +vt 0.437870 0.050761 +vt 0.011834 0.030457 +vt 0.437870 0.030457 +vt 0.011834 0.040609 +vt 0.437870 0.040609 +vt 0.011834 0.020305 +vt 0.437870 0.020305 +vt 0.437870 0.172589 +vt 0.011834 0.157360 +vt 0.437870 0.157360 +vt 0.011834 0.030457 +vt 0.437870 0.030457 +vt 0.011834 0.010152 +vt 0.437870 0.010152 +vt 0.437870 0.187817 +vt 0.011834 0.172589 +vt 0.011834 0.020305 +vt 0.437870 0.020305 +vt 0.011834 0.000000 +vt 0.437870 0.000000 +vt 0.437870 0.203046 +vt 0.011834 0.187817 +vt 0.011834 0.010152 +vt 0.437870 0.010152 +vt 0.437870 0.121827 +vt 0.011834 0.111675 +vt 0.437870 0.111675 +vt 0.437870 0.218274 +vt 0.011834 0.203046 +vt 0.011834 0.000000 +vt 0.437870 0.000000 +vt 0.011834 0.101523 +vt 0.437870 0.101523 +vt 0.437870 0.233503 +vt 0.011834 0.218274 +vt 0.437870 0.121827 +vt 0.011834 0.111675 +vt 0.437870 0.111675 +vt 0.011834 0.091371 +vt 0.437870 0.248731 +vt 0.011834 0.233503 +vt 0.011834 0.101523 +vt 0.437870 0.142132 +vt 0.556213 0.710660 +vt 0.556213 0.715736 +vt 0.550296 0.710660 +vt 0.556213 0.705584 +vt 0.550296 0.705584 +vt 0.550296 0.700508 +vt 0.556213 0.700508 +vt 0.544379 0.705584 +vt 0.544379 0.700508 +vt 0.550296 0.715736 +vt 0.544379 0.710660 +vt 0.538462 0.705584 +vt 0.538462 0.700508 +vt 0.544379 0.715736 +vt 0.538462 0.710660 +vt 0.538462 0.715736 +vt 0.532544 0.710660 +vt 0.532544 0.705584 +vt 0.532544 0.700508 +vt 0.579882 0.705584 +vt 0.573964 0.700508 +vt 0.579882 0.700508 +vt 0.579882 0.710660 +vt 0.579882 0.715736 +vt 0.573964 0.710660 +vt 0.573964 0.705584 +vt 0.568047 0.700508 +vt 0.573964 0.715736 +vt 0.568047 0.710660 +vt 0.568047 0.705584 +vt 0.562130 0.705584 +vt 0.562130 0.700508 +vt 0.568047 0.715736 +vt 0.562130 0.710660 +vt 0.562130 0.715736 +vt 0.011834 0.248731 +vt 0.011834 0.121827 +vt 0.011834 0.121827 +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 1.0000 0.0000 +vn 0.0000 -0.9932 0.1168 +vn 0.3162 0.9487 0.0000 +vn 0.0300 0.9996 0.0000 +vn -0.0300 0.9996 0.0000 +vn -0.3162 0.9487 0.0000 +vn -0.5000 0.8660 0.0000 +vn -0.8660 0.5000 0.0000 +vn -0.1602 -0.9871 0.0000 +vn -0.0300 -0.9996 0.0000 +vn -0.8660 -0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.1602 -0.9871 0.0000 +vn 0.0300 -0.9996 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.0000 0.6630 -0.7486 +vn 0.5294 0.6630 -0.5294 +vn 0.7071 0.0000 -0.7071 +vn 0.6533 -0.3827 -0.6533 +vn -0.0000 -0.3827 -0.9239 +vn 0.9239 -0.3827 0.0000 +vn 0.7486 0.6630 -0.0000 +vn 0.7071 0.0000 0.7071 +vn 0.6533 -0.3827 0.6533 +vn 0.5294 0.6630 0.5294 +vn 0.0000 0.6630 0.7486 +vn 0.0000 -0.3827 0.9239 +vn -0.6533 -0.3827 0.6533 +vn -0.5294 0.6630 0.5294 +vn -0.7071 0.0000 0.7071 +vn -0.9239 -0.3827 -0.0000 +vn -0.7486 0.6630 0.0000 +vn -0.7071 0.0000 -0.7071 +vn -0.6533 -0.3827 -0.6533 +vn -0.5294 0.6630 -0.5294 +s off +f 482/749/201 471/750/201 690/751/201 +f 475/752/201 472/753/201 492/754/201 +f 690/751/201 483/755/201 482/749/201 +f 699/756/201 483/755/201 698/757/201 +f 621/758/201 484/759/201 699/756/201 +f 536/760/201 485/761/201 621/758/201 +f 535/762/201 486/763/201 536/760/201 +f 709/764/202 516/765/202 708/766/202 +f 519/767/202 711/768/202 705/769/202 +f 708/766/202 517/770/202 707/771/202 +f 488/772/201 474/773/201 490/774/201 +f 535/762/201 488/772/201 487/775/201 +f 611/776/201 628/777/201 590/778/201 +f 590/778/201 592/779/201 593/780/201 +f 592/779/201 589/781/201 593/780/201 +f 627/782/201 597/783/201 591/784/201 +f 589/781/201 666/785/201 612/786/201 +f 595/787/201 581/788/201 667/789/201 +f 587/790/201 610/791/201 609/792/201 +f 586/793/201 609/792/201 608/794/201 +f 586/793/201 607/795/201 585/796/201 +f 584/797/201 607/795/201 606/798/201 +f 582/799/201 606/798/201 604/800/201 +f 583/801/201 604/800/201 605/802/201 +f 590/778/201 627/782/201 591/784/201 +f 612/786/201 583/801/201 605/802/201 +f 575/803/201 598/804/201 576/805/201 +f 577/806/201 599/807/201 575/803/201 +f 578/808/201 600/809/201 577/806/201 +f 578/808/201 602/810/201 601/811/201 +f 579/812/201 603/813/201 602/810/201 +f 581/788/201 603/813/201 580/814/201 +f 595/787/201 667/789/201 594/815/201 +f 611/776/201 588/816/201 628/777/201 +f 576/805/201 597/783/201 627/782/201 +f 619/817/203 616/818/203 617/819/203 +f 618/820/204 613/821/204 620/822/204 +f 617/819/202 615/823/202 618/820/202 +f 620/822/201 614/824/201 619/817/201 +f 619/817/205 618/820/205 620/822/205 +f 667/789/201 589/781/201 594/815/201 +f 473/825/201 476/826/201 489/827/201 +f 490/774/201 473/825/201 489/827/201 +f 517/770/202 706/828/202 707/771/202 +f 660/829/203 662/830/203 658/831/203 +f 661/832/204 663/833/204 665/834/204 +f 658/831/206 663/835/206 659/836/206 +f 664/837/201 663/835/201 662/838/201 +f 696/839/201 477/840/201 476/826/201 +f 672/841/205 670/842/205 671/843/205 +f 669/844/203 672/841/203 667/845/203 +f 666/846/204 670/842/204 668/847/204 +f 667/848/201 671/843/201 666/849/201 +f 695/850/201 478/851/201 477/840/201 +f 694/852/201 479/853/201 478/851/201 +f 692/854/201 479/853/201 693/855/201 +f 691/856/201 480/857/201 692/854/201 +f 697/858/201 481/859/201 691/856/201 +f 689/860/202 494/861/202 523/862/202 +f 682/863/202 493/864/202 623/865/202 +f 681/866/202 533/867/202 682/863/202 +f 680/868/202 502/869/202 681/866/202 +f 680/868/202 500/870/202 501/871/202 +f 679/872/202 499/873/202 500/870/202 +f 677/874/202 499/873/202 678/875/202 +f 676/876/202 496/877/202 497/878/202 +f 676/876/202 498/879/202 677/874/202 +f 688/880/202 495/881/202 675/882/202 +f 495/881/202 674/883/202 675/882/202 +f 524/884/202 687/885/202 525/886/202 +f 684/887/202 532/888/202 531/889/202 +f 685/890/202 531/889/202 530/891/202 +f 526/892/202 685/890/202 530/891/202 +f 683/893/202 523/862/202 532/888/202 +f 525/886/202 686/894/202 526/892/202 +f 518/895/202 705/769/202 706/828/202 +f 710/896/202 515/897/202 709/764/202 +f 719/898/202 655/899/202 641/900/202 +f 514/901/202 719/898/202 641/900/202 +f 624/902/202 716/903/202 529/904/202 +f 624/902/202 718/905/202 717/906/202 +f 529/904/202 715/907/202 528/908/202 +f 527/909/202 715/907/202 714/910/202 +f 522/911/202 714/910/202 713/912/202 +f 522/911/202 712/913/202 521/914/202 +f 521/914/202 704/915/202 520/916/202 +f 520/916/202 721/917/202 656/918/202 +f 513/919/202 720/920/202 711/768/202 +f 505/921/201 733/922/201 511/923/201 +f 511/923/201 734/924/201 510/925/201 +f 510/925/201 735/926/201 509/927/201 +f 508/928/201 735/926/201 736/929/201 +f 507/930/201 736/929/201 737/931/201 +f 506/932/201 737/931/201 738/933/201 +f 724/934/201 741/935/201 725/936/201 +f 741/935/201 738/933/201 725/936/201 +f 702/937/201 726/938/201 727/939/201 +f 726/938/201 740/940/201 724/934/201 +f 702/937/201 728/941/201 701/942/201 +f 701/942/201 729/943/201 700/944/201 +f 700/944/201 730/945/201 503/946/201 +f 503/946/201 731/947/201 504/948/201 +f 512/949/201 731/947/201 732/950/201 +f 739/951/201 742/952/201 722/953/201 +f 732/950/201 743/954/201 512/949/201 +f 482/749/201 491/955/201 471/750/201 +f 475/752/201 697/858/201 472/753/201 +f 690/751/201 698/757/201 483/755/201 +f 699/756/201 484/759/201 483/755/201 +f 621/758/201 485/761/201 484/759/201 +f 536/760/201 486/763/201 485/761/201 +f 535/762/201 487/775/201 486/763/201 +f 709/764/202 515/897/202 516/765/202 +f 519/767/202 513/919/202 711/768/202 +f 708/766/202 516/765/202 517/770/202 +f 488/772/201 534/956/201 474/773/201 +f 535/762/201 534/956/201 488/772/201 +f 590/778/201 591/784/201 592/779/201 +f 592/779/201 594/815/201 589/781/201 +f 595/787/201 596/957/201 581/788/201 +f 587/790/201 588/816/201 610/791/201 +f 586/793/201 587/790/201 609/792/201 +f 586/793/201 608/794/201 607/795/201 +f 584/797/201 585/796/201 607/795/201 +f 582/799/201 584/797/201 606/798/201 +f 583/801/201 582/799/201 604/800/201 +f 590/778/201 628/777/201 627/782/201 +f 612/786/201 666/785/201 583/801/201 +f 575/803/201 599/807/201 598/804/201 +f 577/806/201 600/809/201 599/807/201 +f 578/808/201 601/811/201 600/809/201 +f 578/808/201 579/812/201 602/810/201 +f 579/812/201 580/814/201 603/813/201 +f 581/788/201 596/957/201 603/813/201 +f 611/776/201 610/791/201 588/816/201 +f 576/805/201 598/804/201 597/783/201 +f 619/817/203 614/958/203 616/818/203 +f 618/820/204 615/959/204 613/821/204 +f 617/819/202 616/960/202 615/823/202 +f 620/822/201 613/961/201 614/824/201 +f 619/817/205 617/819/205 618/820/205 +f 667/789/201 666/785/201 589/781/201 +f 473/825/201 696/839/201 476/826/201 +f 490/774/201 474/773/201 473/825/201 +f 517/770/202 518/895/202 706/828/202 +f 660/829/203 664/962/203 662/830/203 +f 661/832/204 659/836/204 663/833/204 +f 658/831/206 662/838/206 663/835/206 +f 664/837/201 665/963/201 663/835/201 +f 696/839/201 695/850/201 477/840/201 +f 672/841/205 673/964/205 670/842/205 +f 669/844/203 673/964/203 672/841/203 +f 666/846/204 671/843/204 670/842/204 +f 667/848/201 672/841/201 671/843/201 +f 695/850/201 694/852/201 478/851/201 +f 694/852/201 693/855/201 479/853/201 +f 692/854/201 480/857/201 479/853/201 +f 691/856/201 481/859/201 480/857/201 +f 697/858/201 475/752/201 481/859/201 +f 689/860/202 622/965/202 494/861/202 +f 682/863/202 533/867/202 493/864/202 +f 681/866/202 502/869/202 533/867/202 +f 680/868/202 501/871/202 502/869/202 +f 680/868/202 679/872/202 500/870/202 +f 679/872/202 678/875/202 499/873/202 +f 677/874/202 498/879/202 499/873/202 +f 676/876/202 674/883/202 496/877/202 +f 676/876/202 497/878/202 498/879/202 +f 688/880/202 524/884/202 495/881/202 +f 495/881/202 496/877/202 674/883/202 +f 524/884/202 688/880/202 687/885/202 +f 684/887/202 683/893/202 532/888/202 +f 685/890/202 684/887/202 531/889/202 +f 526/892/202 686/894/202 685/890/202 +f 683/893/202 689/860/202 523/862/202 +f 525/886/202 687/885/202 686/894/202 +f 518/895/202 519/767/202 705/769/202 +f 710/896/202 514/901/202 515/897/202 +f 719/898/202 718/905/202 655/899/202 +f 514/901/202 710/896/202 719/898/202 +f 624/902/202 717/906/202 716/903/202 +f 624/902/202 655/899/202 718/905/202 +f 529/904/202 716/903/202 715/907/202 +f 527/909/202 528/908/202 715/907/202 +f 522/911/202 527/909/202 714/910/202 +f 522/911/202 713/912/202 712/913/202 +f 521/914/202 712/913/202 704/915/202 +f 520/916/202 704/915/202 721/917/202 +f 513/919/202 657/966/202 720/920/202 +f 505/921/201 739/951/201 733/922/201 +f 511/923/201 733/922/201 734/924/201 +f 510/925/201 734/924/201 735/926/201 +f 508/928/201 509/927/201 735/926/201 +f 507/930/201 508/928/201 736/929/201 +f 506/932/201 507/930/201 737/931/201 +f 724/934/201 740/940/201 741/935/201 +f 741/935/201 506/932/201 738/933/201 +f 702/937/201 703/967/201 726/938/201 +f 726/938/201 703/967/201 740/940/201 +f 702/937/201 727/939/201 728/941/201 +f 701/942/201 728/941/201 729/943/201 +f 700/944/201 729/943/201 730/945/201 +f 503/946/201 730/945/201 731/947/201 +f 512/949/201 504/948/201 731/947/201 +f 739/951/201 505/921/201 742/952/201 +f 732/950/201 723/968/201 743/954/201 +s 1 +f 471/750/207 533/867/208 690/751/208 +f 523/862/209 472/753/210 697/858/209 +f 504/948/211 713/912/212 503/946/212 +f 473/825/213 524/884/214 696/839/214 +f 700/944/204 715/907/215 701/942/215 +f 701/942/215 716/903/216 702/937/216 +f 512/949/208 712/913/211 504/948/211 +f 473/825/213 496/877/217 495/881/213 +f 497/878/218 474/773/217 534/956/218 +f 626/969/217 627/970/213 628/971/217 +f 588/972/218 626/973/217 628/974/217 +f 544/975/208 666/846/207 668/847/207 +f 572/976/204 589/977/215 573/978/215 +f 545/979/211 583/980/208 544/975/208 +f 559/981/212 601/982/204 560/983/204 +f 573/978/215 612/984/216 574/985/216 +f 546/986/212 582/987/211 545/979/211 +f 560/983/204 602/988/215 561/989/215 +f 574/985/216 605/990/219 563/991/219 +f 547/992/204 584/993/212 546/986/212 +f 561/989/215 603/994/216 562/995/216 +f 548/996/215 585/997/204 547/992/204 +f 562/995/216 596/998/219 551/999/219 +f 549/1000/216 586/1001/215 548/996/215 +f 563/991/219 604/1002/220 564/1003/220 +f 550/1004/218 587/1005/216 549/1000/216 +f 564/1003/220 606/1006/221 565/1007/221 +f 551/999/219 595/1008/220 552/1009/220 +f 565/1007/221 607/1010/203 566/1011/203 +f 552/1009/220 594/1012/221 553/1013/221 +f 566/1011/203 608/1014/222 567/1015/222 +f 539/1016/220 576/1017/214 538/1018/214 +f 553/1013/221 592/1019/203 554/1020/203 +f 567/1015/222 609/1021/223 568/1022/223 +f 540/1023/221 575/1024/220 539/1016/220 +f 554/1020/203 591/1025/222 555/1026/222 +f 568/1022/223 610/1027/205 569/1028/205 +f 541/1029/203 577/1030/221 540/1023/221 +f 555/1026/222 597/1031/223 556/1032/223 +f 569/1033/205 611/1034/211 570/1035/211 +f 542/1036/222 578/1037/203 541/1029/203 +f 556/1032/223 598/1038/205 557/1039/205 +f 570/1035/211 590/1040/212 571/1041/212 +f 543/1042/223 579/1043/222 542/1036/222 +f 557/1044/205 599/1045/211 558/1046/211 +f 571/1041/212 593/1047/204 572/976/204 +f 537/1048/209 580/1049/223 543/1042/223 +f 558/1046/211 600/1050/212 559/981/212 +f 510/925/222 705/769/223 511/923/223 +f 511/923/223 711/768/209 505/921/209 +f 576/1017/214 625/1051/213 538/1018/214 +f 629/1052/224 645/1053/205 632/1054/225 +f 630/1055/202 632/1054/225 633/1056/226 +f 630/1055/202 634/1057/227 631/1058/228 +f 632/1054/225 636/1059/203 633/1056/226 +f 633/1056/226 637/1060/229 634/1057/227 +f 632/1054/225 645/1061/205 635/1062/230 +f 635/1062/230 639/1063/231 636/1059/203 +f 637/1060/229 639/1063/231 640/1064/232 +f 635/1062/230 645/1065/205 638/1066/233 +f 638/1066/233 645/1067/205 642/1068/234 +f 638/1066/233 643/1069/201 639/1063/231 +f 640/1064/232 643/1069/201 644/1070/235 +f 643/1071/201 648/1072/236 644/1073/235 +f 642/1074/234 645/1075/205 646/1076/237 +f 507/930/220 708/766/221 508/928/221 +f 643/1071/201 646/1076/237 647/1077/238 +f 647/1077/238 651/1078/239 648/1072/236 +f 646/1076/237 645/1079/205 649/1080/240 +f 503/946/212 714/910/204 700/944/204 +f 647/1077/238 649/1080/240 650/1081/204 +f 651/1078/239 653/1082/241 654/1083/242 +f 649/1080/240 645/1084/205 652/1085/243 +f 649/1080/240 653/1082/241 650/1081/204 +f 653/1082/241 631/1058/228 654/1083/242 +f 652/1085/243 645/1086/205 629/1052/224 +f 652/1085/243 630/1055/202 653/1082/241 +f 669/844/210 581/1087/209 537/1048/209 +f 696/839/214 525/886/220 695/850/220 +f 694/852/221 530/891/203 693/855/203 +f 693/855/203 531/889/222 692/854/222 +f 535/762/216 497/878/218 534/956/218 +f 699/756/212 500/870/204 621/758/204 +f 695/850/220 526/892/221 694/852/221 +f 691/856/223 523/862/209 697/858/209 +f 692/854/222 532/888/223 691/856/223 +f 690/751/208 502/869/211 698/757/211 +f 536/760/215 498/879/216 535/762/216 +f 621/758/204 499/873/215 536/760/215 +f 698/757/211 501/871/212 699/756/212 +f 702/937/216 717/906/218 703/967/218 +f 509/927/203 706/828/222 510/925/222 +f 508/928/221 707/771/203 509/927/203 +f 506/932/214 709/764/220 507/930/220 +f 717/906/218 740/940/217 703/967/218 +f 741/935/213 718/905/217 719/898/213 +f 741/935/213 710/896/214 506/932/214 +f 711/768/209 742/952/210 505/921/209 +f 743/954/207 704/915/208 512/949/208 +f 471/750/207 493/864/207 533/867/208 +f 523/862/209 494/861/210 472/753/210 +f 504/948/211 712/913/211 713/912/212 +f 473/825/213 495/881/213 524/884/214 +f 700/944/204 714/910/204 715/907/215 +f 701/942/215 715/907/215 716/903/216 +f 512/949/208 704/915/208 712/913/211 +f 473/825/213 474/773/217 496/877/217 +f 497/878/218 496/877/217 474/773/217 +f 626/969/217 625/1051/213 627/970/213 +f 588/972/218 550/1004/218 626/973/217 +f 544/975/208 583/980/208 666/846/207 +f 572/976/204 593/1047/204 589/977/215 +f 545/979/211 582/987/211 583/980/208 +f 559/981/212 600/1050/212 601/982/204 +f 573/978/215 589/977/215 612/984/216 +f 546/986/212 584/993/212 582/987/211 +f 560/983/204 601/982/204 602/988/215 +f 574/985/216 612/984/216 605/990/219 +f 547/992/204 585/997/204 584/993/212 +f 561/989/215 602/988/215 603/994/216 +f 548/996/215 586/1001/215 585/997/204 +f 562/995/216 603/994/216 596/998/219 +f 549/1000/216 587/1005/216 586/1001/215 +f 563/991/219 605/990/219 604/1002/220 +f 550/1004/218 588/972/218 587/1005/216 +f 564/1003/220 604/1002/220 606/1006/221 +f 551/999/219 596/998/219 595/1008/220 +f 565/1007/221 606/1006/221 607/1010/203 +f 552/1009/220 595/1008/220 594/1012/221 +f 566/1011/203 607/1010/203 608/1014/222 +f 539/1016/220 575/1024/220 576/1017/214 +f 553/1013/221 594/1012/221 592/1019/203 +f 567/1015/222 608/1014/222 609/1021/223 +f 540/1023/221 577/1030/221 575/1024/220 +f 554/1020/203 592/1019/203 591/1025/222 +f 568/1022/223 609/1021/223 610/1027/205 +f 541/1029/203 578/1037/203 577/1030/221 +f 555/1026/222 591/1025/222 597/1031/223 +f 569/1033/205 610/1088/205 611/1034/211 +f 542/1036/222 579/1043/222 578/1037/203 +f 556/1032/223 597/1031/223 598/1038/205 +f 570/1035/211 611/1034/211 590/1040/212 +f 543/1042/223 580/1049/223 579/1043/222 +f 557/1044/205 598/1089/205 599/1045/211 +f 571/1041/212 590/1040/212 593/1047/204 +f 537/1048/209 581/1087/209 580/1049/223 +f 558/1046/211 599/1045/211 600/1050/212 +f 510/925/222 706/828/222 705/769/223 +f 511/923/223 705/769/223 711/768/209 +f 576/1017/214 627/970/213 625/1051/213 +f 630/1055/202 629/1052/224 632/1054/225 +f 630/1055/202 633/1056/226 634/1057/227 +f 632/1054/225 635/1062/230 636/1059/203 +f 633/1056/226 636/1059/203 637/1060/229 +f 635/1062/230 638/1066/233 639/1063/231 +f 637/1060/229 636/1059/203 639/1063/231 +f 638/1066/233 642/1068/234 643/1069/201 +f 640/1064/232 639/1063/231 643/1069/201 +f 643/1071/201 647/1077/238 648/1072/236 +f 507/930/220 709/764/220 708/766/221 +f 643/1071/201 642/1074/234 646/1076/237 +f 647/1077/238 650/1081/204 651/1078/239 +f 503/946/212 713/912/212 714/910/204 +f 647/1077/238 646/1076/237 649/1080/240 +f 651/1078/239 650/1081/204 653/1082/241 +f 649/1080/240 652/1085/243 653/1082/241 +f 653/1082/241 630/1055/202 631/1058/228 +f 652/1085/243 629/1052/224 630/1055/202 +f 669/844/210 667/845/210 581/1087/209 +f 696/839/214 524/884/214 525/886/220 +f 694/852/221 526/892/221 530/891/203 +f 693/855/203 530/891/203 531/889/222 +f 535/762/216 498/879/216 497/878/218 +f 699/756/212 501/871/212 500/870/204 +f 695/850/220 525/886/220 526/892/221 +f 691/856/223 532/888/223 523/862/209 +f 692/854/222 531/889/222 532/888/223 +f 690/751/208 533/867/208 502/869/211 +f 536/760/215 499/873/215 498/879/216 +f 621/758/204 500/870/204 499/873/215 +f 698/757/211 502/869/211 501/871/212 +f 702/937/216 716/903/216 717/906/218 +f 509/927/203 707/771/203 706/828/222 +f 508/928/221 708/766/221 707/771/203 +f 506/932/214 710/896/214 709/764/220 +f 717/906/218 718/905/217 740/940/217 +f 741/935/213 740/940/217 718/905/217 +f 741/935/213 719/898/213 710/896/214 +f 711/768/209 720/920/210 742/952/210 +f 743/954/207 721/917/207 704/915/208 +o BarrelShort +v -0.250000 0.375000 -1.625000 +v -0.375000 0.375000 -1.625000 +v -0.187500 0.250000 -1.625000 +v -0.437500 0.250000 -1.625000 +v -0.250000 0.375000 -1.687500 +v -0.375000 0.375000 -1.687500 +v -0.187500 0.250000 -1.687500 +v -0.437500 0.250000 -1.687500 +v -0.250000 0.375000 -1.063500 +v -0.375000 0.375000 -1.063500 +v -0.187500 0.250000 -1.063500 +v -0.437500 0.250000 -1.063500 +v -0.250000 0.375000 -1.501000 +v -0.375000 0.375000 -1.501000 +v -0.187500 0.250000 -1.501000 +v -0.437500 0.250000 -1.501000 +v 0.437500 -0.562500 -0.750000 +v -0.437500 -0.562500 -0.750000 +v 0.437500 -0.250000 -0.750000 +v -0.437500 -0.250000 -0.750000 +v 0.437500 -0.562500 3.437500 +v -0.437500 -0.562500 3.437500 +v 0.437500 -0.250000 3.437500 +v -0.437500 -0.250000 3.437500 +v 0.125000 -0.437500 -1.062500 +v 0.125000 -0.304917 -1.007583 +v 0.125000 -0.250000 -0.875000 +v 0.125000 -0.304917 -0.742417 +v 0.125000 -0.437500 -0.687500 +v 0.125000 -0.570082 -0.742418 +v 0.125000 -0.625000 -0.875000 +v 0.125000 -0.570082 -1.007583 +v -0.125000 -0.437500 -1.062500 +v -0.125000 -0.304917 -1.007583 +v -0.125000 -0.250000 -0.875000 +v -0.125000 -0.304917 -0.742417 +v -0.125000 -0.437500 -0.687500 +v -0.125000 -0.570082 -0.742418 +v -0.125000 -0.625000 -0.875000 +v -0.125000 -0.570082 -1.007583 +v -0.500000 0.375000 -1.218750 +v -0.375000 0.375000 -1.218750 +v -0.500000 0.375000 -1.343750 +v -0.375000 0.375000 -1.343750 +v -0.500000 0.187500 -1.343750 +v -0.500000 0.187500 -1.218750 +v -0.375000 0.250000 -1.218750 +v -0.375000 0.250000 -1.343750 +v -0.437500 0.375000 -1.343750 +v -0.481694 0.375000 -1.325444 +v -0.500000 0.375000 -1.281250 +v -0.481694 0.375000 -1.237056 +v -0.437500 0.375000 -1.218750 +v -0.393306 0.375000 -1.237056 +v -0.375000 0.375000 -1.281250 +v -0.393306 0.375000 -1.325444 +v -0.437500 0.437500 -1.343750 +v -0.481694 0.437500 -1.325444 +v -0.500000 0.437500 -1.281250 +v -0.481694 0.437500 -1.237056 +v -0.437500 0.437500 -1.218750 +v -0.393306 0.437500 -1.237056 +v -0.375000 0.437500 -1.281250 +v -0.393306 0.437500 -1.325444 +v 0.687500 0.125000 0.000000 +v 0.687500 -0.125000 0.000000 +v 0.687500 0.125000 -0.750000 +v 0.687500 -0.125000 -0.750000 +v 0.562500 0.125000 0.000000 +v 0.562500 -0.125000 0.000000 +v 0.562500 0.125000 -0.750000 +v 0.562500 -0.125000 -0.750000 +v 0.687500 0.125000 -0.750000 +v 0.687500 -0.125000 -0.750000 +v 0.687500 0.125000 -0.625000 +v 0.687500 -0.125000 -0.625000 +v 0.812500 -0.125000 -0.750000 +v 0.812500 0.125000 -0.750000 +v 0.812500 -0.125000 -0.625000 +v 0.812500 0.125000 -0.625000 +v 0.312500 0.312500 3.500000 +v 0.312500 -0.312500 3.500000 +v 0.468750 -0.270633 3.500000 +v 0.583133 -0.156250 3.500000 +v 0.625000 0.000000 3.500000 +v 0.583133 0.156250 3.500000 +v 0.468750 0.270633 3.500000 +v -0.312500 0.312500 3.500000 +v -0.468750 0.270633 3.500000 +v -0.583133 0.156250 3.500000 +v -0.625000 0.000000 3.500000 +v -0.583133 -0.156250 3.500000 +v -0.468750 -0.270633 3.500000 +v -0.312500 -0.312500 3.500000 +v 0.125000 -0.250000 3.500000 +v -0.125000 -0.250000 3.500000 +v -0.125000 0.250000 3.500000 +v 0.125000 0.250000 3.500000 +v -0.125000 0.375000 3.500000 +v 0.125000 0.375000 3.500000 +v 0.312500 0.250000 3.500000 +v 0.187500 0.216506 3.500000 +v 0.095994 0.125000 3.500000 +v 0.062500 0.000000 3.500000 +v 0.095994 -0.125000 3.500000 +v 0.187500 -0.216506 3.500000 +v 0.312500 -0.250000 3.500000 +v 0.437500 -0.216506 3.500000 +v 0.529006 -0.125000 3.500000 +v 0.562500 0.000000 3.500000 +v 0.529006 0.125000 3.500000 +v 0.437500 0.216506 3.500000 +v -0.312500 0.250000 3.500000 +v -0.437500 0.216506 3.500000 +v -0.529006 0.125000 3.500000 +v -0.562500 0.000000 3.500000 +v -0.529006 -0.125000 3.500000 +v -0.437500 -0.216506 3.500000 +v -0.312500 -0.250000 3.500000 +v -0.187500 -0.216506 3.500000 +v -0.095994 -0.125000 3.500000 +v -0.062500 0.000000 3.500000 +v -0.095994 0.125000 3.500000 +v -0.187500 0.216506 3.500000 +v 0.312500 0.250000 -1.750000 +v 0.187500 0.216506 -1.750000 +v 0.095994 0.125000 -1.750000 +v 0.062500 0.000000 -1.750000 +v 0.095994 -0.125000 -1.750000 +v 0.187500 -0.216506 -1.750000 +v 0.312500 -0.250000 -1.750000 +v 0.437500 -0.216506 -1.750000 +v 0.529006 -0.125000 -1.750000 +v 0.562500 0.000000 -1.750000 +v 0.529006 0.125000 -1.750000 +v 0.437500 0.216506 -1.750000 +v -0.312500 0.250000 -1.750000 +v -0.437500 0.216506 -1.750000 +v -0.529006 0.125000 -1.750000 +v -0.562500 0.000000 -1.750000 +v -0.529006 -0.125000 -1.750000 +v -0.437500 -0.216506 -1.750000 +v -0.312500 -0.250000 -1.750000 +v -0.187500 -0.216506 -1.750000 +v -0.095994 -0.125000 -1.750000 +v -0.062500 0.000000 -1.750000 +v -0.095994 0.125000 -1.750000 +v -0.187500 0.216506 -1.750000 +v 0.312500 0.312500 -1.750000 +v 0.312500 -0.312500 -1.750000 +v 0.468750 -0.270633 -1.750000 +v 0.583133 -0.156250 -1.750000 +v 0.625000 0.000000 -1.750000 +v 0.583133 0.156250 -1.750000 +v 0.468750 0.270633 -1.750000 +v -0.312500 0.312500 -1.750000 +v -0.468750 0.270633 -1.750000 +v -0.583133 0.156250 -1.750000 +v -0.625000 0.000000 -1.750000 +v -0.583133 -0.156250 -1.750000 +v -0.468750 -0.270633 -1.750000 +v -0.312500 -0.312500 -1.750000 +v 0.125000 -0.250000 -1.750000 +v -0.125000 -0.250000 -1.750000 +v -0.125000 0.250000 -1.750000 +v 0.125000 0.250000 -1.750000 +v -0.125000 0.375000 -1.875000 +v 0.125000 0.375000 -1.875000 +v -0.125000 0.312500 -2.000000 +v -0.125000 0.250000 -2.000000 +v 0.125000 0.250000 -2.000000 +v 0.125000 0.312500 -2.000000 +vt 0.594464 0.461927 +vt 0.615383 0.472078 +vt 0.591718 0.472078 +vt 0.437870 0.294416 +vt 0.449704 0.274112 +vt 0.449704 0.294416 +vt 0.609467 0.451777 +vt 0.594464 0.441626 +vt 0.612637 0.441626 +vt 0.597634 0.451777 +vt 0.946746 0.304569 +vt 0.449704 0.304569 +vt 0.946746 0.263959 +vt 0.958580 0.274112 +vt 0.958580 0.294416 +vt 0.733728 0.588832 +vt 0.715976 0.598985 +vt 0.721893 0.588832 +vt 0.733728 0.532995 +vt 0.715976 0.543147 +vt 0.721893 0.532995 +vt 0.715976 0.517766 +vt 0.733728 0.527919 +vt 0.721893 0.527919 +vt 0.715976 0.543147 +vt 0.733728 0.553299 +vt 0.721893 0.553299 +vt 0.514793 0.451777 +vt 0.544379 0.522843 +vt 0.514793 0.522843 +vt 0.514793 0.548223 +vt 0.118343 0.522843 +vt 0.118343 0.426396 +vt 0.514793 0.426396 +vt 0.118343 0.451777 +vt 0.088757 0.522843 +vt 0.710030 0.532995 +vt 0.692308 0.548199 +vt 0.674585 0.532995 +vt 0.692308 0.548248 +vt 0.710030 0.563452 +vt 0.692308 0.578655 +vt 0.804734 0.482233 +vt 0.792899 0.472081 +vt 0.804734 0.472081 +vt 0.804734 0.456853 +vt 0.781065 0.461929 +vt 0.792899 0.456853 +vt 0.816568 0.461929 +vt 0.816568 0.472081 +vt 0.822485 0.472043 +vt 0.816612 0.467005 +vt 0.822485 0.461967 +vt 0.011834 0.588832 +vt 0.082840 0.609137 +vt 0.011834 0.609137 +vt 0.082840 0.578680 +vt 0.082840 0.588832 +vt 0.011834 0.619289 +vt 0.094675 0.609137 +vt 0.000000 0.588832 +vt 0.106509 0.609137 +vt 0.118343 0.588832 +vt 0.118343 0.609137 +vt 0.094675 0.588832 +vt 0.094675 0.609137 +vt 0.106509 0.619289 +vt 0.118343 0.619289 +vt 0.130178 0.609137 +vt 0.130178 0.588832 +vt 0.118343 0.578680 +vt 0.106509 0.588832 +vt 0.106509 0.578680 +vt 0.585802 0.469358 +vt 0.621299 0.469358 +vt 0.612637 0.461927 +vt 0.615383 0.431475 +vt 0.591718 0.431475 +vt 0.621299 0.434195 +vt 0.585802 0.434195 +vt 0.633132 0.426400 +vt 0.647922 0.429800 +vt 0.633132 0.431475 +vt 0.658749 0.439088 +vt 0.644964 0.434195 +vt 0.662713 0.451777 +vt 0.653626 0.441626 +vt 0.653626 0.461927 +vt 0.656796 0.451777 +vt 0.658749 0.464465 +vt 0.644964 0.469358 +vt 0.633131 0.477153 +vt 0.647922 0.473754 +vt 0.633131 0.472078 +vt 0.573969 0.426400 +vt 0.573969 0.431475 +vt 0.559179 0.429800 +vt 0.562137 0.434195 +vt 0.548351 0.439088 +vt 0.553475 0.441626 +vt 0.550304 0.451777 +vt 0.544388 0.451777 +vt 0.548351 0.464465 +vt 0.553475 0.461927 +vt 0.559179 0.473754 +vt 0.562137 0.469358 +vt 0.573969 0.477153 +vt 0.573969 0.472078 +vt 1.000000 0.294416 +vt 0.976331 0.274112 +vt 1.000000 0.274112 +vt 0.609467 0.502538 +vt 0.594464 0.492387 +vt 0.612637 0.492387 +vt 0.594464 0.512689 +vt 0.612637 0.512689 +vt 0.615383 0.482237 +vt 0.591718 0.482237 +vt 0.615383 0.522839 +vt 0.591718 0.522839 +vt 0.621299 0.520119 +vt 0.585802 0.520119 +vt 0.573969 0.527915 +vt 0.559179 0.524515 +vt 0.573969 0.522839 +vt 0.548351 0.515226 +vt 0.562137 0.520119 +vt 0.550304 0.502538 +vt 0.544388 0.502538 +vt 0.548351 0.489850 +vt 0.562137 0.484957 +vt 0.559179 0.480561 +vt 0.573969 0.477161 +vt 0.585802 0.484957 +vt 0.633132 0.527915 +vt 0.633132 0.522839 +vt 0.647922 0.524515 +vt 0.644964 0.520119 +vt 0.658749 0.515226 +vt 0.653626 0.512689 +vt 0.662713 0.502538 +vt 0.653626 0.492387 +vt 0.658749 0.489850 +vt 0.644964 0.484957 +vt 0.647922 0.480561 +vt 0.633132 0.477161 +vt 0.621299 0.484957 +vt 0.970414 0.274112 +vt 0.976331 0.294416 +vt 0.970414 0.294416 +vt 0.970414 0.263959 +vt 0.970414 0.269036 +vt 0.970414 0.304569 +vt 0.437870 0.274112 +vt 0.449704 0.263959 +vt 0.739645 0.598985 +vt 0.739645 0.543147 +vt 0.739645 0.517766 +vt 0.739645 0.543147 +vt 0.544379 0.451777 +vt 0.118343 0.548223 +vt 0.088757 0.451777 +vt 0.704839 0.543746 +vt 0.679776 0.543746 +vt 0.679776 0.522244 +vt 0.692308 0.517791 +vt 0.704839 0.522244 +vt 0.679776 0.574202 +vt 0.674585 0.563452 +vt 0.679776 0.552701 +vt 0.704839 0.552701 +vt 0.704839 0.574202 +vt 0.792899 0.482233 +vt 0.781065 0.472081 +vt 0.826638 0.463443 +vt 0.828358 0.467005 +vt 0.826638 0.470568 +vt 0.818333 0.470568 +vt 0.818333 0.463443 +vt 0.011834 0.578680 +vt 0.082840 0.619289 +vt 0.094675 0.588832 +vt -0.000000 0.609137 +vt 0.597634 0.502538 +vt 0.553475 0.512689 +vt 0.553475 0.492387 +vt 0.573969 0.482237 +vt 0.656796 0.502538 +vt 0.633132 0.482237 +vt 0.970414 0.299492 +vt 0.449704 0.142132 +vt 0.946746 0.157360 +vt 0.449704 0.157360 +vt 0.946746 0.218274 +vt 0.449704 0.233503 +vt 0.449704 0.218274 +vt 0.946746 0.395939 +vt 0.449704 0.411168 +vt 0.449704 0.395939 +vt 0.946746 0.203046 +vt 0.449704 0.203046 +vt 0.946746 0.380711 +vt 0.449704 0.380711 +vt 0.946746 0.187817 +vt 0.449704 0.187817 +vt 0.946746 0.365482 +vt 0.449704 0.365482 +vt 0.449704 0.248731 +vt 0.946746 0.172589 +vt 0.449704 0.172589 +vt 0.946746 0.350254 +vt 0.449704 0.350254 +vt 0.946746 0.411168 +vt 0.449704 0.426396 +vt 0.946746 0.335025 +vt 0.449704 0.335025 +vt 0.449704 0.121827 +vt 0.946746 0.142132 +vt 0.946746 0.319797 +vt 0.449704 0.319797 +vt 0.946746 0.233503 +vt 0.710059 0.588832 +vt 0.710059 0.532995 +vt 0.745562 0.527919 +vt 0.745562 0.532995 +vt 0.745562 0.553299 +vt 0.745562 0.588832 +vt 0.650888 0.527919 +vt 0.674556 0.538071 +vt 0.650888 0.538071 +vt 0.650888 0.588832 +vt 0.674556 0.598985 +vt 0.650888 0.598985 +vt 0.650888 0.568528 +vt 0.674556 0.578680 +vt 0.650888 0.578680 +vt 0.650888 0.548223 +vt 0.674556 0.558376 +vt 0.650888 0.558376 +vt 0.674556 0.548223 +vt 0.674556 0.609137 +vt 0.650888 0.609137 +vt 0.674556 0.588832 +vt 0.674556 0.568528 +vt 0.857988 0.461929 +vt 0.863905 0.456853 +vt 0.863905 0.461929 +vt 0.822485 0.461929 +vt 0.828402 0.456853 +vt 0.828402 0.461929 +vt 0.834320 0.461929 +vt 0.840237 0.456853 +vt 0.840237 0.461929 +vt 0.846154 0.456853 +vt 0.846154 0.461929 +vt 0.852071 0.461929 +vt 0.857988 0.456853 +vt 0.816568 0.461929 +vt 0.822485 0.456853 +vt 0.834320 0.456853 +vt 0.852071 0.456853 +vt 0.449704 -0.000000 +vt 0.946746 0.010152 +vt 0.449704 0.010152 +vt 0.449704 0.091371 +vt 0.946746 0.101523 +vt 0.449704 0.101523 +vt 0.449704 0.040609 +vt 0.946746 0.050761 +vt 0.449704 0.050761 +vt 0.449704 0.111675 +vt 0.946746 0.121827 +vt 0.449704 0.121827 +vt 0.449704 0.081218 +vt 0.946746 0.091371 +vt 0.449704 0.030457 +vt 0.946746 0.040609 +vt 0.449704 0.101523 +vt 0.946746 0.111675 +vt 0.449704 0.071066 +vt 0.946746 0.081218 +vt 0.449704 0.050761 +vt 0.946746 0.060914 +vt 0.449704 0.060914 +vt 0.449704 0.020305 +vt 0.946746 0.030457 +vt 0.449704 0.091371 +vt 0.946746 0.101523 +vt 0.449704 0.060914 +vt 0.946746 0.071066 +vt 0.449704 0.040609 +vt 0.946746 0.050761 +vt 0.449704 0.010152 +vt 0.946746 0.020305 +vt 0.449704 0.081218 +vt 0.946746 0.091371 +vt 0.449704 0.030457 +vt 0.946746 0.040609 +vt 0.449704 -0.000000 +vt 0.946746 0.010152 +vt 0.449704 0.071066 +vt 0.946746 0.081218 +vt 0.449704 0.020305 +vt 0.946746 0.030457 +vt 0.449704 0.111675 +vt 0.946746 0.121827 +vt 0.449704 0.121827 +vt 0.946746 0.071066 +vt 0.946746 0.020305 +vt 0.946746 0.111675 +vt 0.946746 0.060914 +vt 0.946746 0.248731 +vt 0.946746 0.426396 +vt 0.946746 0.121827 +vt 0.710059 0.553299 +vt 0.710059 0.527919 +vt 0.674556 0.527919 +vt 0.816568 0.456853 +vt 0.946746 -0.000000 +vt 0.946746 -0.000000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.8944 -0.4472 +vn -0.1602 -0.9871 0.0000 +vn -0.0300 -0.9996 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.0300 -0.9996 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.0300 0.9996 0.0000 +vn -0.3162 0.9487 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.1602 -0.9871 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.0300 0.9996 0.0000 +vn 0.3162 0.9487 0.0000 +vn 0.8944 0.4472 0.0000 +vn 0.5257 0.8507 0.0000 +vn -0.5257 0.8507 0.0000 +vn -0.8944 0.4472 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.0000 0.7071 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 -0.7071 +s off +f 866/1090/244 841/1091/244 840/1092/244 +f 840/1093/244 843/1094/244 842/1095/244 +f 847/1096/244 864/1097/244 848/1098/244 +f 847/1096/244 866/1090/244 865/1099/244 +f 842/1095/245 908/1100/245 840/1101/245 +f 843/1094/246 909/1102/246 911/1103/246 +f 843/1094/247 910/1104/247 842/1095/247 +f 753/1105/244 754/1106/244 752/1107/244 +f 745/1108/244 746/1109/244 744/1110/244 +f 750/1111/248 749/1112/248 748/1113/248 +f 758/1114/248 757/1115/248 756/1116/248 +f 761/1117/248 762/1118/248 760/1119/248 +f 762/1120/246 764/1121/246 760/1119/246 +f 761/1117/245 767/1122/245 763/1123/245 +f 760/1119/249 765/1124/249 761/1117/249 +f 766/1125/244 765/1124/244 764/1121/244 +f 768/1126/246 770/1127/246 772/1128/246 +f 782/1129/245 780/1130/245 778/1131/245 +f 785/1132/247 786/1133/247 784/1134/247 +f 786/1133/245 789/1135/245 784/1134/245 +f 786/1133/248 791/1136/248 788/1137/248 +f 784/1134/244 790/1138/244 785/1139/244 +f 804/1140/247 806/1141/247 800/1142/247 +f 809/1143/246 810/1144/246 808/1145/246 +f 809/1143/249 815/1146/249 811/1147/249 +f 810/1144/247 812/1148/247 808/1145/247 +f 811/1147/248 814/1149/248 810/1144/248 +f 808/1145/244 813/1150/244 809/1143/244 +f 823/1151/246 820/1152/246 821/1153/246 +f 819/1154/244 823/1151/244 818/1155/244 +f 818/1156/247 821/1153/247 816/1157/247 +f 816/1158/248 820/1152/248 817/1159/248 +f 817/1160/249 822/1161/249 819/1162/249 +f 866/1090/244 840/1092/244 867/1163/244 +f 845/1164/244 841/1091/244 846/1165/244 +f 838/1166/244 864/1097/244 839/1167/244 +f 848/1098/244 838/1166/244 849/1168/244 +f 864/1097/244 863/1169/244 839/1167/244 +f 825/1170/244 849/1168/244 838/1166/244 +f 826/1171/244 850/1172/244 825/1170/244 +f 827/1173/244 851/1174/244 826/1171/244 +f 828/1175/244 852/1176/244 827/1173/244 +f 828/1175/244 854/1177/244 853/1178/244 +f 829/1179/244 855/1180/244 854/1177/244 +f 824/1181/244 855/1180/244 830/1182/244 +f 824/1181/244 845/1164/244 844/1183/244 +f 837/1184/244 863/1169/244 862/1185/244 +f 836/1186/244 862/1185/244 861/1187/244 +f 835/1188/244 861/1187/244 860/1189/244 +f 835/1188/244 859/1190/244 834/1191/244 +f 833/1192/244 859/1190/244 858/1193/244 +f 832/1194/244 858/1193/244 857/1195/244 +f 831/1196/244 857/1195/244 856/1197/244 +f 831/1196/244 867/1163/244 840/1092/244 +f 908/1198/249 914/1199/249 909/1200/249 +f 871/1201/248 890/1202/248 870/1203/248 +f 888/1204/248 871/1201/248 872/1205/248 +f 909/1206/248 890/1202/248 908/1207/248 +f 888/1204/248 906/1208/248 907/1209/248 +f 872/1205/248 873/1210/248 906/1208/248 +f 888/1204/248 907/1209/248 887/1211/248 +f 905/1212/248 887/1211/248 907/1209/248 +f 904/1213/248 886/1214/248 905/1212/248 +f 903/1215/248 885/1216/248 904/1213/248 +f 883/1217/248 903/1215/248 902/1218/248 +f 901/1219/248 883/1217/248 902/1218/248 +f 881/1220/248 901/1219/248 900/1221/248 +f 899/1222/248 881/1220/248 900/1221/248 +f 891/1223/248 899/1222/248 908/1207/248 +f 891/1223/248 908/1207/248 890/1202/248 +f 873/1210/248 893/1224/248 906/1208/248 +f 874/1225/248 894/1226/248 893/1224/248 +f 875/1227/248 895/1228/248 894/1226/248 +f 876/1229/248 896/1230/248 895/1228/248 +f 896/1230/248 878/1231/248 897/1232/248 +f 897/1232/248 879/1233/248 898/1234/248 +f 879/1233/248 892/1235/248 898/1234/248 +f 892/1235/248 869/1236/248 909/1206/248 +f 870/1203/248 909/1206/248 869/1236/248 +f 915/1237/248 913/1238/248 912/1239/248 +f 911/1103/246 914/1240/246 915/1241/246 +f 911/1103/250 912/1239/250 910/1104/250 +f 910/1104/245 913/1242/245 908/1100/245 +f 866/1090/244 846/1165/244 841/1091/244 +f 840/1093/244 841/1243/244 843/1094/244 +f 847/1096/244 865/1099/244 864/1097/244 +f 847/1096/244 846/1165/244 866/1090/244 +f 842/1095/245 910/1104/245 908/1100/245 +f 843/1094/246 841/1244/246 909/1102/246 +f 843/1094/247 911/1103/247 910/1104/247 +f 753/1105/244 755/1245/244 754/1106/244 +f 745/1108/244 747/1246/244 746/1109/244 +f 750/1111/248 751/1247/248 749/1112/248 +f 758/1114/248 759/1248/248 757/1115/248 +f 761/1117/248 763/1249/248 762/1118/248 +f 762/1120/246 766/1250/246 764/1121/246 +f 761/1117/245 765/1124/245 767/1122/245 +f 760/1119/249 764/1121/249 765/1124/249 +f 766/1125/244 767/1251/244 765/1124/244 +f 768/1126/246 769/1252/246 770/1127/246 +f 770/1127/246 771/1253/246 772/1128/246 +f 772/1128/246 773/1254/246 768/1126/246 +f 773/1254/246 774/1255/246 768/1126/246 +f 774/1255/246 775/1256/246 768/1126/246 +f 778/1131/245 777/1257/245 776/1258/245 +f 776/1258/245 783/1259/245 782/1129/245 +f 782/1129/245 781/1260/245 780/1130/245 +f 780/1130/245 779/1261/245 778/1131/245 +f 778/1131/245 776/1258/245 782/1129/245 +f 785/1132/247 787/1262/247 786/1133/247 +f 786/1133/245 788/1137/245 789/1135/245 +f 786/1133/248 787/1263/248 791/1136/248 +f 784/1134/244 789/1135/244 790/1138/244 +f 800/1142/247 801/1264/247 802/1265/247 +f 802/1265/247 803/1266/247 804/1140/247 +f 804/1140/247 805/1267/247 806/1141/247 +f 806/1141/247 807/1268/247 800/1142/247 +f 800/1142/247 802/1265/247 804/1140/247 +f 809/1143/246 811/1147/246 810/1144/246 +f 809/1143/249 813/1269/249 815/1146/249 +f 810/1144/247 814/1270/247 812/1148/247 +f 811/1147/248 815/1271/248 814/1149/248 +f 808/1145/244 812/1272/244 813/1150/244 +f 823/1151/246 822/1161/246 820/1152/246 +f 819/1154/244 822/1161/244 823/1151/244 +f 818/1156/247 823/1151/247 821/1153/247 +f 816/1158/248 821/1153/248 820/1152/248 +f 817/1160/249 820/1152/249 822/1161/249 +f 838/1166/244 848/1098/244 864/1097/244 +f 825/1170/244 850/1172/244 849/1168/244 +f 826/1171/244 851/1174/244 850/1172/244 +f 827/1173/244 852/1176/244 851/1174/244 +f 828/1175/244 853/1178/244 852/1176/244 +f 828/1175/244 829/1179/244 854/1177/244 +f 829/1179/244 830/1182/244 855/1180/244 +f 824/1181/244 844/1183/244 855/1180/244 +f 824/1181/244 841/1091/244 845/1164/244 +f 837/1184/244 839/1167/244 863/1169/244 +f 836/1186/244 837/1184/244 862/1185/244 +f 835/1188/244 836/1186/244 861/1187/244 +f 835/1188/244 860/1189/244 859/1190/244 +f 833/1192/244 834/1191/244 859/1190/244 +f 832/1194/244 833/1192/244 858/1193/244 +f 831/1196/244 832/1194/244 857/1195/244 +f 831/1196/244 856/1197/244 867/1163/244 +f 908/1198/249 913/1238/249 914/1199/249 +f 871/1201/248 889/1273/248 890/1202/248 +f 888/1204/248 889/1273/248 871/1201/248 +f 909/1206/248 870/1203/248 890/1202/248 +f 888/1204/248 872/1205/248 906/1208/248 +f 905/1212/248 886/1214/248 887/1211/248 +f 904/1213/248 885/1216/248 886/1214/248 +f 903/1215/248 884/1274/248 885/1216/248 +f 883/1217/248 884/1274/248 903/1215/248 +f 901/1219/248 882/1275/248 883/1217/248 +f 881/1220/248 882/1275/248 901/1219/248 +f 899/1222/248 880/1276/248 881/1220/248 +f 891/1223/248 880/1276/248 899/1222/248 +f 873/1210/248 874/1225/248 893/1224/248 +f 874/1225/248 875/1227/248 894/1226/248 +f 875/1227/248 876/1229/248 895/1228/248 +f 876/1229/248 877/1277/248 896/1230/248 +f 896/1230/248 877/1277/248 878/1231/248 +f 897/1232/248 878/1231/248 879/1233/248 +f 879/1233/248 868/1278/248 892/1235/248 +f 892/1235/248 868/1278/248 869/1236/248 +f 915/1237/248 914/1199/248 913/1238/248 +f 911/1103/246 909/1102/246 914/1240/246 +f 911/1103/250 915/1237/250 912/1239/250 +f 910/1104/245 912/1279/245 913/1242/245 +s 1 +f 838/1280/251 893/1281/252 825/1282/252 +f 897/1283/253 830/1284/254 829/1285/253 +f 904/1286/255 837/1287/256 836/1288/255 +f 896/1289/246 829/1285/253 828/1290/246 +f 903/1291/257 836/1288/255 835/1292/257 +f 895/1293/258 828/1290/246 827/1294/258 +f 902/1295/245 835/1292/257 834/1296/245 +f 824/1297/259 909/1102/260 841/1244/260 +f 894/1298/261 827/1294/258 826/1299/261 +f 901/1300/262 834/1296/245 833/1301/262 +f 905/1302/256 839/1303/263 837/1287/256 +f 893/1281/252 826/1299/261 825/1282/252 +f 900/1304/264 833/1301/262 832/1305/264 +f 839/1306/263 906/1307/251 838/1280/251 +f 899/1308/265 832/1305/264 831/1309/265 +f 908/1100/266 831/1309/265 840/1101/266 +f 898/1310/254 824/1297/259 830/1284/254 +f 754/1311/267 756/1116/268 752/1107/268 +f 746/1312/267 748/1113/268 744/1110/268 +f 745/1108/269 751/1313/270 747/1314/270 +f 744/1110/268 749/1112/269 745/1108/269 +f 753/1105/269 759/1315/270 755/1316/270 +f 752/1107/268 757/1115/269 753/1105/269 +f 774/1317/249 783/1318/271 775/1319/271 +f 772/1320/244 781/1321/272 773/1322/272 +f 770/1323/247 779/1324/273 771/1325/273 +f 768/1326/248 777/1327/274 769/1328/274 +f 775/1319/271 776/1329/248 768/1326/248 +f 773/1322/272 782/1330/249 774/1331/249 +f 771/1325/273 780/1332/244 772/1320/244 +f 769/1328/274 778/1333/247 770/1323/247 +f 797/1334/275 804/1335/244 796/1336/244 +f 795/1337/276 802/1338/245 794/1339/245 +f 793/1340/277 800/1341/248 792/1342/248 +f 792/1342/248 807/1343/278 799/1344/278 +f 798/1345/246 805/1346/275 797/1334/275 +f 796/1347/244 803/1348/276 795/1337/276 +f 794/1339/245 801/1349/277 793/1340/277 +f 799/1344/278 806/1350/246 798/1345/246 +f 850/1351/247 873/1352/254 849/1353/254 +f 865/1354/245 888/1355/262 864/1356/262 +f 858/1357/258 881/1358/261 857/1359/261 +f 851/1360/264 874/1361/247 850/1362/247 +f 866/1363/257 889/1364/245 865/1354/245 +f 859/1365/246 882/1366/258 858/1357/258 +f 852/1367/262 875/1368/264 851/1360/264 +f 867/1369/255 890/1370/257 866/1363/257 +f 845/1371/261 868/1372/249 844/1373/249 +f 860/1374/253 883/1375/246 859/1365/246 +f 853/1376/245 876/1377/262 852/1367/262 +f 856/1378/249 891/1379/255 867/1369/255 +f 846/1380/258 869/1381/261 845/1371/261 +f 861/1382/254 884/1383/253 860/1374/253 +f 854/1384/257 877/1385/245 853/1376/245 +f 847/1386/246 870/1387/258 846/1380/258 +f 862/1388/247 885/1389/254 861/1382/254 +f 855/1390/255 878/1391/257 854/1384/257 +f 848/1392/253 871/1393/246 847/1386/246 +f 863/1394/264 886/1395/247 862/1396/247 +f 844/1373/249 879/1397/255 855/1390/255 +f 849/1353/254 872/1398/253 848/1392/253 +f 864/1356/262 887/1399/264 863/1394/264 +f 857/1359/261 880/1400/249 856/1378/249 +f 838/1280/251 906/1307/251 893/1281/252 +f 897/1283/253 898/1310/254 830/1284/254 +f 904/1286/255 905/1302/256 837/1287/256 +f 896/1289/246 897/1283/253 829/1285/253 +f 903/1291/257 904/1286/255 836/1288/255 +f 895/1293/258 896/1289/246 828/1290/246 +f 902/1295/245 903/1291/257 835/1292/257 +f 824/1297/259 892/1401/259 909/1102/260 +f 894/1298/261 895/1293/258 827/1294/258 +f 901/1300/262 902/1295/245 834/1296/245 +f 905/1302/256 907/1402/263 839/1303/263 +f 893/1281/252 894/1298/261 826/1299/261 +f 900/1304/264 901/1300/262 833/1301/262 +f 839/1306/263 907/1403/263 906/1307/251 +f 899/1308/265 900/1304/264 832/1305/264 +f 908/1100/266 899/1308/265 831/1309/265 +f 898/1310/254 892/1401/259 824/1297/259 +f 754/1311/267 758/1404/267 756/1116/268 +f 746/1312/267 750/1405/267 748/1113/268 +f 745/1108/269 749/1112/269 751/1313/270 +f 744/1110/268 748/1113/268 749/1112/269 +f 753/1105/269 757/1115/269 759/1315/270 +f 752/1107/268 756/1116/268 757/1115/269 +f 774/1317/249 782/1406/249 783/1318/271 +f 772/1320/244 780/1332/244 781/1321/272 +f 770/1323/247 778/1333/247 779/1324/273 +f 768/1326/248 776/1329/248 777/1327/274 +f 775/1319/271 783/1318/271 776/1329/248 +f 773/1322/272 781/1321/272 782/1330/249 +f 771/1325/273 779/1324/273 780/1332/244 +f 769/1328/274 777/1327/274 778/1333/247 +f 797/1334/275 805/1346/275 804/1335/244 +f 795/1337/276 803/1348/276 802/1338/245 +f 793/1340/277 801/1349/277 800/1341/248 +f 792/1342/248 800/1341/248 807/1343/278 +f 798/1345/246 806/1350/246 805/1346/275 +f 796/1347/244 804/1407/244 803/1348/276 +f 794/1339/245 802/1338/245 801/1349/277 +f 799/1344/278 807/1343/278 806/1350/246 +f 850/1351/247 874/1408/247 873/1352/254 +f 865/1354/245 889/1364/245 888/1355/262 +f 858/1357/258 882/1366/258 881/1358/261 +f 851/1360/264 875/1368/264 874/1361/247 +f 866/1363/257 890/1370/257 889/1364/245 +f 859/1365/246 883/1375/246 882/1366/258 +f 852/1367/262 876/1377/262 875/1368/264 +f 867/1369/255 891/1379/255 890/1370/257 +f 845/1371/261 869/1381/261 868/1372/249 +f 860/1374/253 884/1383/253 883/1375/246 +f 853/1376/245 877/1385/245 876/1377/262 +f 856/1378/249 880/1400/249 891/1379/255 +f 846/1380/258 870/1387/258 869/1381/261 +f 861/1382/254 885/1389/254 884/1383/253 +f 854/1384/257 878/1391/257 877/1385/245 +f 847/1386/246 871/1393/246 870/1387/258 +f 862/1388/247 886/1409/247 885/1389/254 +f 855/1390/255 879/1397/255 878/1391/257 +f 848/1392/253 872/1398/253 871/1393/246 +f 863/1394/264 887/1399/264 886/1395/247 +f 844/1373/249 868/1372/249 879/1397/255 +f 849/1353/254 873/1352/254 872/1398/253 +f 864/1356/262 888/1355/262 887/1399/264 +f 857/1359/261 881/1358/261 880/1400/249 diff --git a/src/main/resources/assets/hbm/models/weapons/shredder.obj b/src/main/resources/assets/hbm/models/weapons/shredder.obj index 8bb5d0cd7..0017e8cfa 100644 --- a/src/main/resources/assets/hbm/models/weapons/shredder.obj +++ b/src/main/resources/assets/hbm/models/weapons/shredder.obj @@ -1,106 +1,6 @@ # Blender v2.79 (sub 0) OBJ File: 'shredder.blend' # www.blender.org -o Cube_Cube.001 -v 1.000000 0.562500 2.000000 -v 1.000000 1.437500 2.000000 -v 1.000000 0.562500 6.000000 -v 1.000000 1.437500 6.000000 -v -1.000000 0.562500 2.000000 -v -1.000000 1.437500 2.000000 -v -1.000000 0.562500 6.000000 -v -1.000000 1.437500 6.000000 -v 0.437500 2.000000 2.000000 -v -0.437500 2.000000 2.000000 -v 0.437500 2.000000 6.000000 -v -0.437500 2.000000 6.000000 -v 0.437500 0.000000 2.000000 -v -0.437500 0.000000 2.000000 -v 0.437500 0.000000 6.000000 -v -0.437500 0.000000 6.000000 -v 0.250000 2.750000 2.000000 -v -0.250000 2.750000 2.000000 -v 0.250000 2.750000 6.000000 -v -0.250000 2.750000 6.000000 -v 0.000000 1.500000 6.000000 -v 0.250000 1.433012 6.000000 -v 0.433013 1.250000 6.000000 -v 0.500000 1.000000 6.000000 -v 0.433013 0.750000 6.000000 -v 0.250000 0.566988 6.000000 -v 0.000000 0.500000 6.000000 -v -0.250000 0.566987 6.000000 -v -0.433012 0.750000 6.000000 -v -0.500000 1.000000 6.000000 -v -0.433012 1.250000 6.000000 -v -0.250000 1.433012 6.000000 -v 0.000000 1.500000 7.500000 -v 0.250000 1.433012 7.500000 -v 0.433013 1.250000 7.500000 -v 0.500000 1.000000 7.500000 -v 0.433013 0.750000 7.500000 -v 0.250000 0.566988 7.500000 -v 0.000001 0.500000 7.500000 -v -0.249999 0.566987 7.500000 -v -0.433012 0.750000 7.500000 -v -0.500000 1.000000 7.500000 -v -0.433012 1.250000 7.500000 -v -0.250000 1.433012 7.500000 -v 0.000000 1.375000 7.500000 -v 0.187500 1.324759 7.500000 -v 0.324760 1.187500 7.500000 -v 0.375000 1.000000 7.500000 -v 0.324760 0.812500 7.500000 -v 0.187500 0.675241 7.500000 -v 0.000000 0.625000 7.500000 -v -0.187499 0.675240 7.500000 -v -0.324759 0.812500 7.500000 -v -0.375000 1.000000 7.500000 -v -0.324759 1.187500 7.500000 -v -0.187500 1.324759 7.500000 -v 0.000000 1.375000 6.500000 -v 0.187500 1.324759 6.500000 -v 0.324760 1.187500 6.500000 -v 0.375000 1.000000 6.500000 -v 0.324760 0.812500 6.500000 -v 0.187500 0.675241 6.500000 -v 0.000000 0.625000 6.500000 -v -0.187500 0.675240 6.500000 -v -0.324759 0.812500 6.500000 -v -0.375000 1.000000 6.500000 -v -0.324759 1.187500 6.500000 -v -0.187500 1.324759 6.500000 -v 0.000000 1.500000 2.000000 -v 0.250000 1.433012 2.000000 -v 0.433013 1.250000 2.000000 -v 0.500000 1.000000 2.000000 -v 0.433013 0.750000 2.000000 -v 0.250000 0.566988 2.000000 -v 0.000000 0.500000 2.000000 -v -0.250000 0.566987 2.000000 -v -0.433012 0.750000 2.000000 -v -0.500000 1.000000 2.000000 -v -0.433012 1.250000 2.000000 -v -0.250000 1.433012 2.000000 -v 0.000000 1.500000 1.000000 -v 0.250000 1.433012 1.000000 -v 0.433013 1.250000 1.000000 -v 0.500000 1.000000 1.000000 -v 0.433013 0.750000 1.000000 -v 0.250000 0.566988 1.000000 -v 0.000000 0.500000 1.000000 -v -0.250000 0.566987 1.000000 -v -0.433012 0.750000 1.000000 -v -0.500000 1.000000 1.000000 -v -0.433013 1.250000 1.000000 -v -0.250000 1.433012 1.000000 -v 0.500000 0.250000 0.500000 -v -0.500000 0.250000 0.500000 -v 0.500000 0.250000 1.000000 -v -0.500000 0.250000 1.000000 -v 0.500000 1.750000 1.000000 -v 0.500000 1.250000 0.500000 -v -0.500000 1.250000 0.500000 -v -0.500000 1.750000 1.000000 +o Magazine v 0.000000 1.500000 0.500000 v 0.956709 1.309699 0.500000 v 1.767767 0.767767 0.500000 @@ -117,10 +17,6 @@ v -2.500000 -1.000000 0.500000 v -2.309699 -0.043291 0.500000 v -1.767766 0.767767 0.500000 v -0.956707 1.309699 0.500000 -v -0.312500 0.000000 6.000000 -v 0.312500 0.000000 6.000000 -v -0.312500 0.000000 2.000000 -v 0.312500 0.000000 2.000000 v 2.136471 -0.115044 -1.250000 v 1.635184 0.635185 -1.250000 v 0.884955 1.136472 -1.250000 @@ -153,38 +49,6 @@ v 0.884955 -3.136472 -0.875000 v 1.635184 -2.635185 -0.875000 v 2.312500 -1.000000 -0.875000 v 2.136471 -1.884956 -0.875000 -v 0.000000 1.250000 0.375000 -v -0.176777 1.176777 0.375000 -v -0.250000 1.000000 0.375000 -v -0.176777 0.823223 0.375000 -v 0.000000 0.750000 0.375000 -v 0.176777 0.823223 0.375000 -v 0.250000 1.000000 0.375000 -v 0.176777 1.176777 0.375000 -v 0.000000 1.250000 -1.125000 -v -0.176777 1.176777 -1.125000 -v -0.250000 1.000000 -1.125000 -v -0.176777 0.823223 -1.125000 -v 0.000000 0.750000 -1.125000 -v 0.176777 0.823223 -1.125000 -v 0.250000 1.000000 -1.125000 -v 0.176777 1.176777 -1.125000 -v 0.000000 1.312500 -1.125000 -v -0.220971 1.220971 -1.125000 -v -0.312500 1.000000 -1.125000 -v -0.220971 0.779029 -1.125000 -v 0.000000 0.687500 -1.125000 -v 0.220971 0.779029 -1.125000 -v 0.312500 1.000000 -1.125000 -v 0.220971 1.220971 -1.125000 -v 0.000000 1.312500 -1.250000 -v -0.220971 1.220971 -1.250000 -v -0.312500 1.000000 -1.250000 -v -0.220971 0.779029 -1.250000 -v 0.000000 0.687500 -1.250000 -v 0.220971 0.779029 -1.250000 -v 0.312500 1.000000 -1.250000 -v 0.220971 1.220971 -1.250000 v 0.000000 1.125000 0.500000 v -0.813202 0.963244 0.500000 v -1.502602 0.502602 0.500000 @@ -297,38 +161,6 @@ v 1.875000 -1.000000 0.500000 v 1.732274 -0.282468 0.500000 v 1.325825 0.325826 0.500000 v 0.717530 0.732274 0.500000 -v 0.000000 0.750000 0.375000 -v -0.669696 0.616789 0.375000 -v -1.237437 0.237437 0.375000 -v -1.616789 -0.330304 0.375000 -v -1.750000 -1.000000 0.375000 -v -1.616789 -1.669696 0.375000 -v -1.237437 -2.237437 0.375000 -v -0.669696 -2.616789 0.375000 -v -0.000000 -2.750000 0.375000 -v 0.669696 -2.616789 0.375000 -v 1.237436 -2.237437 0.375000 -v 1.616789 -1.669696 0.375000 -v 1.750000 -1.000000 0.375000 -v 1.616789 -0.330304 0.375000 -v 1.237436 0.237437 0.375000 -v 0.669695 0.616789 0.375000 -v 0.000000 0.750000 -1.250000 -v -0.669696 0.616789 -1.250000 -v -1.237437 0.237437 -1.250000 -v -1.616789 -0.330304 -1.250000 -v -1.750000 -1.000000 -1.250000 -v -1.616789 -1.669696 -1.250000 -v -1.237437 -2.237437 -1.250000 -v -0.669696 -2.616789 -1.250000 -v -0.000000 -2.750000 -1.250000 -v 0.669696 -2.616789 -1.250000 -v 1.237436 -2.237437 -1.250000 -v 1.616789 -1.669696 -1.250000 -v 1.750000 -1.000000 -1.250000 -v 1.616789 -0.330304 -1.250000 -v 1.237436 0.237437 -1.250000 -v 0.669695 0.616789 -1.250000 v 0.000000 0.875000 -1.375000 v -0.717532 0.732274 -1.375000 v -1.325825 0.325825 -1.375000 @@ -425,170 +257,1115 @@ v 2.125000 -1.000000 -1.375000 v 1.963244 -0.186797 -1.375000 v 1.502602 0.502602 -1.375000 v 0.813201 0.963244 -1.375000 -v -0.562500 -0.500000 6.000000 -v 0.562500 -0.500000 6.000000 -v -0.562500 -0.500000 2.000000 -v 0.562500 -0.500000 2.000000 -v -0.312500 -1.000000 6.000000 -v 0.312500 -1.000000 6.000000 -v -0.312500 -1.000000 2.000000 -v 0.312500 -1.000000 2.000000 -v 0.750000 0.250000 -1.875000 -v -0.750000 0.250000 -1.875000 -v 0.750000 0.250000 -1.375000 -v -0.750000 0.250000 -1.375000 -v 0.750000 2.750000 -1.375000 -v 0.312500 2.125000 2.000000 -v -0.312500 2.125000 2.000000 -v -0.750000 2.750000 -1.375000 -v 0.750000 0.500000 -2.375000 -v -0.750000 0.500000 -2.375000 -v 0.750000 2.750000 -2.375000 -v -0.750000 2.750000 -2.375000 -v -0.187500 2.625000 2.000000 -v 0.187500 2.625000 2.000000 -v 0.312500 2.125000 -1.375000 -v -0.312500 2.125000 -1.375000 -v -0.187500 2.625000 -1.375000 -v 0.187500 2.625000 -1.375000 -v 0.500000 1.250000 -1.375000 -v -0.500000 1.250000 -1.375000 -v 0.500000 2.000000 0.750000 -v -0.500000 2.000000 0.750000 -v 0.500000 2.000000 -1.375000 -v -0.500000 2.000000 -1.375000 -v -0.625000 2.000000 -2.375000 -v -1.000000 1.625000 -2.375000 -v 1.000000 1.625000 -2.375000 -v 0.625000 2.000000 -2.375000 -v -1.000000 1.625000 -4.875000 -v -0.625000 2.000000 -4.875000 -v 0.625000 2.000000 -4.875000 -v 1.000000 1.625000 -4.875000 -v 0.750000 1.375000 -4.875000 -v 0.375000 1.750000 -4.875000 -v -0.375000 1.750000 -4.875000 -v -0.750000 1.375000 -4.875000 -v 0.375000 0.250000 -4.875000 -v 0.750000 0.625000 -4.875000 -v -0.750000 0.625000 -4.875000 -v -0.375000 0.250000 -4.875000 -v 0.750000 0.625000 -6.875000 -v 0.375000 0.250000 -6.875000 -v 0.375000 1.750000 -6.875000 -v 0.750000 1.375000 -6.875000 -v -0.750000 1.375000 -6.875000 -v -0.375000 1.750000 -6.875000 -v -0.375000 0.250000 -6.875000 -v -0.750000 0.625000 -6.875000 -v 0.125000 2.750000 -2.375000 -v 0.500000 2.750000 -2.375000 -v 0.125000 2.000000 -3.375000 -v 0.500000 2.000000 -3.375000 -v 0.125000 2.000000 -2.375000 -v 0.500000 2.000000 -2.375000 -v -0.125000 2.000000 -2.375000 -v -0.500000 2.000000 -2.375000 -v -0.125000 2.000000 -3.375000 -v -0.500000 2.000000 -3.375000 -v -0.125000 2.750000 -2.375000 -v -0.500000 2.750000 -2.375000 -v -0.250000 0.000000 -3.250000 -v 0.250000 0.000000 -3.250000 -v -0.250000 0.000000 -4.625000 -v 0.250000 0.000000 -4.625000 -v -0.250000 -2.500000 -5.125000 -v -0.250000 -2.500000 -3.750000 -v 0.250000 -2.500000 -3.750000 -v 0.250000 -2.500000 -5.125000 -v 0.500000 0.000000 -3.500000 -v 0.500000 0.000000 -4.375000 -v 0.500000 -2.500000 -4.000000 -v 0.500000 -2.500000 -4.875000 -v -0.500000 0.000000 -4.375000 -v -0.500000 0.000000 -3.500000 -v -0.500000 -2.500000 -4.875000 -v -0.500000 -2.500000 -4.000000 -v -0.250000 0.000000 -2.875000 -v 0.250000 0.000000 -2.875000 -v -0.250000 -1.000000 -2.750000 -v 0.250000 -1.000000 -2.750000 -v -0.250000 0.000000 -3.250000 -v 0.250000 0.000000 -3.250000 -v -0.250000 -1.000000 -3.500000 -v 0.250000 -1.000000 -3.500000 -v 0.750000 0.875000 -4.875000 -v 1.000000 0.875000 -4.875000 -v 0.750000 1.125000 -4.875000 -v 1.000000 1.125000 -4.875000 -v 0.750000 0.875000 -8.875000 -v 1.000000 0.875000 -8.875000 -v 0.750000 1.125000 -8.875000 -v 1.000000 1.125000 -8.875000 -v -1.000000 0.875000 -4.875000 -v -0.750000 0.875000 -4.875000 -v -1.000000 1.125000 -4.875000 -v -0.750000 1.125000 -4.875000 -v -1.000000 0.875000 -8.875000 -v -0.750000 0.875000 -8.875000 -v -1.000000 1.125000 -8.875000 -v -0.750000 1.125000 -8.875000 -v 0.750000 0.875000 -9.125000 -v 1.000000 0.875000 -9.125000 -v -1.000000 0.875000 -9.125000 -v -0.750000 0.875000 -9.125000 -v 0.750000 -2.125000 -8.875000 -v 1.000000 -2.125000 -8.875000 -v -1.000000 -2.125000 -8.875000 -v -0.750000 -2.125000 -8.875000 -v 0.750000 -2.125000 -9.125000 -v 1.000000 -2.125000 -9.125000 -v -1.000000 -2.125000 -9.125000 -v -0.750000 -2.125000 -9.125000 -v 0.750000 -2.375000 -8.875000 -v -0.750000 -2.375000 -8.875000 -v 0.750000 -2.375000 -9.125000 -v -0.750000 -2.375000 -9.125000 -v 0.500000 1.500000 2.000000 -v 0.500000 1.250000 2.000000 -v 0.500000 1.500000 0.625000 -v 0.500000 1.250000 0.625000 -v 0.750000 1.500000 2.000000 -v 0.750000 1.250000 2.000000 -v 0.750000 1.500000 0.875000 -v 0.750000 1.250000 0.875000 -v 0.500000 0.750000 2.000000 -v 0.500000 0.500000 2.000000 -v 0.500000 0.750000 0.625000 -v 0.500000 0.500000 0.625000 -v 0.750000 0.750000 2.000000 -v 0.750000 0.500000 2.000000 -v 0.750000 0.750000 0.875000 -v 0.750000 0.500000 0.875000 -v -0.500000 1.500000 2.000000 -v -0.500000 1.250000 2.000000 -v -0.500000 1.500000 0.625000 -v -0.500000 1.250000 0.625000 -v -0.750000 1.500000 2.000000 -v -0.750000 1.250000 2.000000 -v -0.750000 1.500000 0.875000 -v -0.750000 1.250000 0.875000 -v -0.500000 0.750000 2.000000 -v -0.500000 0.500000 2.000000 -v -0.500000 0.750000 0.625000 -v -0.500000 0.500000 0.625000 -v -0.750000 0.750000 2.000000 -v -0.750000 0.500000 2.000000 -v -0.750000 0.750000 0.875000 -v -0.750000 0.500000 0.875000 -v -1.000000 0.375000 -2.375000 -v -0.625000 0.000000 -2.375000 -v 0.625000 0.000000 -2.375000 -v 1.000000 0.375000 -2.375000 -v -0.625000 0.000000 -4.875000 -v -1.000000 0.375000 -4.875000 -v 1.000000 0.375000 -4.875000 -v 0.625000 0.000000 -4.875000 +vt 0.904382 0.187500 +vt 0.892430 0.246094 +vt 0.892430 0.191406 +vt 0.950199 0.875000 +vt 0.944223 0.933594 +vt 0.944223 0.878906 +vt 0.944223 0.816406 +vt 0.950199 0.871094 +vt 0.944223 0.871094 +vt 0.944223 0.753906 +vt 0.950199 0.808594 +vt 0.944223 0.808594 +vt 0.944223 0.691406 +vt 0.950199 0.746094 +vt 0.944223 0.746094 +vt 0.944223 0.628906 +vt 0.950199 0.683594 +vt 0.944223 0.683594 +vt 0.944223 0.566406 +vt 0.950199 0.621094 +vt 0.944223 0.621094 +vt 0.944223 0.503906 +vt 0.950199 0.558594 +vt 0.944223 0.558594 +vt 0.944223 0.441406 +vt 0.950199 0.496094 +vt 0.944223 0.496094 +vt 0.944223 0.378906 +vt 0.950199 0.433594 +vt 0.944223 0.433594 +vt 0.944223 0.316406 +vt 0.950199 0.371094 +vt 0.944223 0.371094 +vt 0.944223 0.253906 +vt 0.950199 0.308594 +vt 0.944223 0.308594 +vt 0.944223 0.191406 +vt 0.950199 0.246094 +vt 0.944223 0.246094 +vt 0.944223 0.183594 +vt 0.950199 0.125000 +vt 0.950199 0.183594 +vt 0.944223 0.121094 +vt 0.950199 0.062500 +vt 0.950199 0.121094 +vt 0.944223 0.058594 +vt 0.950199 0.000000 +vt 0.950199 0.058594 +vt 0.944223 0.996094 +vt 0.950199 0.937500 +vt 0.950199 0.996094 +vt 0.968127 0.937500 +vt 0.962151 0.996094 +vt 0.962151 0.937500 +vt 0.962151 0.933594 +vt 0.968127 0.875000 +vt 0.962151 0.812500 +vt 0.968127 0.812500 +vt 0.962151 0.808594 +vt 0.968127 0.750000 +vt 0.962151 0.687500 +vt 0.968127 0.687500 +vt 0.962151 0.625000 +vt 0.968127 0.625000 +vt 0.962151 0.562500 +vt 0.968127 0.562500 +vt 0.962151 0.500000 +vt 0.968127 0.500000 +vt 0.962151 0.437500 +vt 0.968127 0.437500 +vt 0.962151 0.375000 +vt 0.968127 0.375000 +vt 0.962151 0.312500 +vt 0.968127 0.312500 +vt 0.962151 0.250000 +vt 0.968127 0.250000 +vt 0.962151 0.246094 +vt 0.968127 0.187500 +vt 0.962151 0.183594 +vt 0.968127 0.125000 +vt 0.962151 0.121094 +vt 0.968127 0.062500 +vt 0.962151 0.058594 +vt 0.968127 -0.000000 +vt 0.904382 0.125000 +vt 0.892430 0.183594 +vt 0.892430 0.128906 +vt 0.904382 0.062500 +vt 0.892430 0.121094 +vt 0.892430 0.066406 +vt 0.904382 -0.000000 +vt 0.892430 0.058594 +vt 0.892430 0.003906 +vt 0.904382 0.937500 +vt 0.892430 0.996094 +vt 0.892430 0.941406 +vt 0.904382 0.875000 +vt 0.892430 0.933594 +vt 0.892430 0.878906 +vt 0.904382 0.812500 +vt 0.892430 0.871094 +vt 0.892430 0.816406 +vt 0.892430 0.753906 +vt 0.904382 0.750000 +vt 0.892430 0.691406 +vt 0.904382 0.687500 +vt 0.892430 0.628906 +vt 0.904382 0.625000 +vt 0.892430 0.566406 +vt 0.904382 0.562500 +vt 0.892430 0.503906 +vt 0.904382 0.500000 +vt 0.892430 0.441406 +vt 0.904382 0.437500 +vt 0.892430 0.378906 +vt 0.904382 0.375000 +vt 0.892430 0.316406 +vt 0.904382 0.312500 +vt 0.892430 0.253906 +vt 0.904382 0.250000 +vt 0.944223 0.191406 +vt 0.938247 0.246094 +vt 0.938247 0.187500 +vt 0.938247 0.125000 +vt 0.944223 0.183594 +vt 0.938247 0.183594 +vt 0.938295 0.062694 +vt 0.944223 0.121094 +vt 0.938247 0.121094 +vt 0.938247 0.000000 +vt 0.944223 0.058594 +vt 0.938295 0.058027 +vt 0.938247 0.937500 +vt 0.944223 0.996094 +vt 0.938247 0.996094 +vt 0.938247 0.875000 +vt 0.944223 0.933594 +vt 0.938247 0.933594 +vt 0.938247 0.812500 +vt 0.944223 0.871094 +vt 0.938247 0.871094 +vt 0.944223 0.753906 +vt 0.938247 0.808594 +vt 0.938247 0.750000 +vt 0.944223 0.691406 +vt 0.938247 0.746094 +vt 0.938247 0.687500 +vt 0.944223 0.628906 +vt 0.938247 0.683594 +vt 0.938247 0.625000 +vt 0.944223 0.566406 +vt 0.938247 0.621094 +vt 0.938247 0.562500 +vt 0.944223 0.503906 +vt 0.938247 0.558594 +vt 0.938247 0.500000 +vt 0.944223 0.441406 +vt 0.938247 0.496094 +vt 0.938247 0.437500 +vt 0.944223 0.378906 +vt 0.938247 0.433594 +vt 0.938247 0.375000 +vt 0.944223 0.316406 +vt 0.938247 0.371094 +vt 0.938247 0.312500 +vt 0.944223 0.253906 +vt 0.938247 0.308594 +vt 0.938247 0.250000 +vt 0.920319 0.187500 +vt 0.926295 0.246094 +vt 0.920319 0.250000 +vt 0.920319 0.312500 +vt 0.926295 0.250000 +vt 0.926295 0.308594 +vt 0.920319 0.375000 +vt 0.926295 0.312500 +vt 0.926295 0.371094 +vt 0.920319 0.437500 +vt 0.926295 0.375000 +vt 0.926295 0.433594 +vt 0.920319 0.500000 +vt 0.926295 0.437500 +vt 0.926295 0.496094 +vt 0.920319 0.562500 +vt 0.926295 0.500000 +vt 0.926295 0.558594 +vt 0.920319 0.625000 +vt 0.926295 0.562500 +vt 0.926295 0.621094 +vt 0.920319 0.687500 +vt 0.926295 0.625000 +vt 0.926295 0.683594 +vt 0.926295 0.746094 +vt 0.920319 0.750000 +vt 0.926295 0.808594 +vt 0.920319 0.812500 +vt 0.926295 0.871094 +vt 0.920319 0.875000 +vt 0.926295 0.933594 +vt 0.920319 0.937500 +vt 0.926295 0.996094 +vt 0.920319 1.000000 +vt 0.920319 -0.000000 +vt 0.926295 0.058594 +vt 0.920319 0.062500 +vt 0.926295 0.121094 +vt 0.920319 0.125000 +vt 0.926295 0.183594 +vt 0.730756 0.268904 +vt 0.815061 0.268904 +vt 0.815061 0.434221 +vt 0.772909 0.000291 +vt 0.832521 0.117188 +vt 0.772909 0.234084 +vt 0.730756 0.034529 +vt 0.815061 0.034529 +vt 0.815061 0.199846 +vt 0.772909 0.234666 +vt 0.832521 0.351562 +vt 0.772908 0.468459 +vt 0.996016 0.378906 +vt 0.984064 0.437500 +vt 0.984064 0.375000 +vt 0.996016 0.441406 +vt 0.984064 0.500000 +vt 0.996016 0.503906 +vt 0.984064 0.562500 +vt 0.996016 0.566406 +vt 0.984064 0.625000 +vt 0.996016 0.628906 +vt 0.984064 0.687500 +vt 0.996016 0.691406 +vt 0.984064 0.750000 +vt 0.996016 0.753906 +vt 0.984064 0.812500 +vt 0.996016 0.871094 +vt 0.984064 0.875000 +vt 0.996016 0.933594 +vt 0.984064 0.937500 +vt 0.996016 0.996094 +vt 0.984064 1.000000 +vt 0.984064 -0.000000 +vt 0.996016 0.058594 +vt 0.984064 0.062500 +vt 0.996016 0.121094 +vt 0.984064 0.125000 +vt 0.996016 0.183594 +vt 0.984064 0.187500 +vt 0.996016 0.191406 +vt 0.984064 0.250000 +vt 0.996016 0.253906 +vt 0.984064 0.312500 +vt 0.996016 0.316406 +vt 0.950199 0.933594 +vt 0.950199 0.812500 +vt 0.950199 0.750000 +vt 0.950199 0.687500 +vt 0.950199 0.625000 +vt 0.950199 0.562500 +vt 0.950199 0.500000 +vt 0.950199 0.437500 +vt 0.950199 0.375000 +vt 0.950199 0.312500 +vt 0.950199 0.250000 +vt 0.950199 0.187500 +vt 0.944223 0.128906 +vt 0.944223 0.066406 +vt 0.944223 0.003906 +vt 0.944223 0.941406 +vt 0.968127 1.000000 +vt 0.962151 0.875000 +vt 0.962151 0.871094 +vt 0.962151 0.750000 +vt 0.962151 0.746094 +vt 0.962151 0.683594 +vt 0.962151 0.621094 +vt 0.962151 0.558594 +vt 0.962151 0.496094 +vt 0.962151 0.433594 +vt 0.962151 0.371094 +vt 0.962151 0.308594 +vt 0.962151 0.187500 +vt 0.962151 0.125000 +vt 0.962151 0.062500 +vt 0.962151 0.000000 +vt 0.904382 1.000000 +vt 0.892430 0.808594 +vt 0.892430 0.746094 +vt 0.892430 0.683594 +vt 0.892430 0.621094 +vt 0.892430 0.558594 +vt 0.892430 0.496094 +vt 0.892430 0.433594 +vt 0.892430 0.371094 +vt 0.892430 0.308594 +vt 0.944223 0.246094 +vt 0.944223 0.128906 +vt 0.944223 0.066406 +vt 0.944223 0.003906 +vt 0.944223 0.941406 +vt 0.944223 0.878906 +vt 0.944223 0.816406 +vt 0.944223 0.808594 +vt 0.944223 0.746094 +vt 0.944223 0.683594 +vt 0.944223 0.621094 +vt 0.944223 0.558594 +vt 0.944223 0.496094 +vt 0.944223 0.433594 +vt 0.944223 0.371094 +vt 0.944223 0.308594 +vt 0.926295 0.187500 +vt 0.926295 0.687500 +vt 0.926295 0.750000 +vt 0.926295 0.812500 +vt 0.926295 0.875000 +vt 0.926295 0.937500 +vt 0.926295 0.000000 +vt 0.926295 0.062500 +vt 0.926295 0.125000 +vt 0.795721 0.459561 +vt 0.772908 0.468459 +vt 0.750096 0.459561 +vt 0.730756 0.434221 +vt 0.717834 0.396297 +vt 0.713296 0.351562 +vt 0.717834 0.306828 +vt 0.750096 0.243564 +vt 0.772908 0.234666 +vt 0.795721 0.243564 +vt 0.827983 0.306828 +vt 0.832521 0.351563 +vt 0.827983 0.396297 +vt 0.750096 0.225186 +vt 0.730756 0.199846 +vt 0.717834 0.161922 +vt 0.713296 0.117187 +vt 0.717834 0.072453 +vt 0.730756 0.034529 +vt 0.750096 0.009189 +vt 0.795721 0.009189 +vt 0.815061 0.034529 +vt 0.827984 0.072453 +vt 0.827983 0.161922 +vt 0.815061 0.199846 +vt 0.795721 0.225186 +vt 0.795721 0.225186 +vt 0.772909 0.234084 +vt 0.750096 0.225186 +vt 0.730756 0.199846 +vt 0.717834 0.161922 +vt 0.713296 0.117188 +vt 0.717834 0.072453 +vt 0.750096 0.009189 +vt 0.772909 0.000291 +vt 0.795721 0.009189 +vt 0.827984 0.072453 +vt 0.832521 0.117188 +vt 0.827983 0.161922 +vt 0.750096 0.459561 +vt 0.730756 0.434221 +vt 0.717834 0.396297 +vt 0.713296 0.351562 +vt 0.717834 0.306828 +vt 0.730756 0.268904 +vt 0.750096 0.243564 +vt 0.795721 0.243564 +vt 0.815061 0.268904 +vt 0.827983 0.306828 +vt 0.827983 0.396297 +vt 0.815061 0.434221 +vt 0.795721 0.459561 +vt 0.996016 0.433594 +vt 0.996016 0.496094 +vt 0.996016 0.558594 +vt 0.996016 0.621094 +vt 0.996016 0.683594 +vt 0.996016 0.746094 +vt 0.996016 0.808594 +vt 0.996016 0.816406 +vt 0.996016 0.878906 +vt 0.996016 0.941406 +vt 0.996016 0.003906 +vt 0.996016 0.066406 +vt 0.996016 0.128906 +vt 0.996016 0.246094 +vt 0.996016 0.308594 +vt 0.996016 0.371094 +vt 0.888446 0.566406 +vt 0.888446 0.441406 +vt 0.888446 0.628906 +vt 0.888446 0.691406 +vt 0.888446 0.753906 +vt 0.888446 0.816406 +vt 0.888446 0.878906 +vt 0.888446 0.941406 +vt 0.888446 0.003906 +vt 0.888446 0.066406 +vt 0.888446 0.128906 +vt 0.888446 0.191406 +vt 0.888446 0.253906 +vt 0.888446 0.371094 +vt 0.888446 0.316406 +vt 0.888446 0.503906 +vt 0.888446 0.378906 +vt 0.836653 0.609375 +vt 0.832669 0.562500 +vt 0.836653 0.562500 +vt 0.836653 0.234375 +vt 0.832669 0.187500 +vt 0.836653 0.187500 +vt 0.836653 0.656250 +vt 0.832669 0.609375 +vt 0.836653 0.281250 +vt 0.832669 0.234375 +vt 0.832669 0.703125 +vt 0.832669 0.656250 +vt 0.836653 0.328125 +vt 0.832669 0.281250 +vt 0.836653 0.750000 +vt 0.836653 0.703125 +vt 0.836653 0.421875 +vt 0.832669 0.375000 +vt 0.836653 0.375000 +vt 0.832669 0.328125 +vt 0.836653 0.046875 +vt 0.832669 0.000000 +vt 0.836653 0.000000 +vt 0.836653 0.468750 +vt 0.832669 0.421875 +vt 0.836653 0.093750 +vt 0.832669 0.046875 +vt 0.836653 0.515625 +vt 0.832669 0.468750 +vt 0.836653 0.140625 +vt 0.832669 0.093750 +vt 0.832669 0.515625 +vt 0.832669 0.140625 +vt 0.832669 0.140625 +vt 0.836653 0.187500 +vt 0.832669 0.187500 +vt 0.832669 0.515625 +vt 0.836653 0.562500 +vt 0.832669 0.562500 +vt 0.832669 0.093750 +vt 0.836653 0.140625 +vt 0.832669 0.468750 +vt 0.836653 0.515625 +vt 0.836653 0.046875 +vt 0.836653 0.093750 +vt 0.832669 0.421875 +vt 0.836653 0.468750 +vt 0.832669 0.000000 +vt 0.832669 0.046875 +vt 0.832669 0.328125 +vt 0.836653 0.375000 +vt 0.832669 0.375000 +vt 0.836653 0.421875 +vt 0.832669 0.703125 +vt 0.836653 0.750000 +vt 0.832669 0.750000 +vt 0.832669 0.281250 +vt 0.836653 0.328125 +vt 0.832669 0.656250 +vt 0.836653 0.703125 +vt 0.832669 0.234375 +vt 0.836653 0.281250 +vt 0.832669 0.609375 +vt 0.836653 0.656250 +vt 0.836653 0.234375 +vt 0.836653 0.609375 +vt 1.000000 0.621094 +vt 1.000000 0.566406 +vt 1.000000 0.441406 +vt 1.000000 0.683594 +vt 1.000000 0.628906 +vt 1.000000 0.746094 +vt 1.000000 0.691406 +vt 1.000000 0.808594 +vt 1.000000 0.753906 +vt 1.000000 0.871094 +vt 1.000000 0.816406 +vt 1.000000 0.933594 +vt 1.000000 0.878906 +vt 1.000000 0.996094 +vt 1.000000 0.941406 +vt 1.000000 0.058594 +vt 1.000000 0.003906 +vt 1.000000 0.121094 +vt 1.000000 0.066406 +vt 1.000000 0.183594 +vt 1.000000 0.128906 +vt 1.000000 0.246094 +vt 1.000000 0.191406 +vt 1.000000 0.308594 +vt 1.000000 0.253906 +vt 1.000000 0.316406 +vt 1.000000 0.558594 +vt 1.000000 0.503906 +vt 1.000000 0.378906 +vt 0.888446 0.621094 +vt 0.888446 0.496094 +vt 0.888446 0.683594 +vt 0.888446 0.746094 +vt 0.888446 0.808594 +vt 0.888446 0.871094 +vt 0.888446 0.933594 +vt 0.888446 0.996094 +vt 0.888446 0.058594 +vt 0.888446 0.121094 +vt 0.888446 0.183594 +vt 0.888446 0.246094 +vt 0.888446 0.308594 +vt 0.888446 0.558594 +vt 0.888446 0.433594 +vt 0.832669 0.750000 +vt 0.836653 0.000000 +vt 1.000000 0.496094 +vt 1.000000 0.371094 +vt 1.000000 0.433594 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.9239 -0.3827 0.0000 +vn -1.0000 -0.0000 0.0000 +vn -0.9239 0.3827 0.0000 +vn 0.9239 0.3827 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.0000 -1.0000 0.0000 +vn -0.0000 1.0000 0.0000 +vn 0.3827 -0.9239 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.9239 -0.3827 0.0000 +s off +f 6/1/1 61/2/1 60/3/1 +f 26/4/1 232/5/1 231/6/1 +f 230/7/1 26/8/1 231/9/1 +f 229/10/1 25/11/1 230/12/1 +f 228/13/1 24/14/1 229/15/1 +f 227/16/1 23/17/1 228/18/1 +f 226/19/1 22/20/1 227/21/1 +f 225/22/1 21/23/1 226/24/1 +f 240/25/1 20/26/1 225/27/1 +f 239/28/1 19/29/1 240/30/1 +f 238/31/1 18/32/1 239/33/1 +f 237/34/1 17/35/1 238/36/1 +f 236/37/1 31/38/1 237/39/1 +f 236/40/1 30/41/1 32/42/1 +f 235/43/1 29/44/1 30/45/1 +f 234/46/1 28/47/1 29/48/1 +f 233/49/1 27/50/1 28/51/1 +f 202/52/1 44/53/1 43/54/1 +f 43/55/1 203/56/1 202/52/1 +f 203/56/1 41/57/1 204/58/1 +f 41/59/1 205/60/1 204/58/1 +f 205/60/1 39/61/1 206/62/1 +f 206/62/1 38/63/1 207/64/1 +f 207/64/1 37/65/1 208/66/1 +f 208/66/1 36/67/1 193/68/1 +f 193/68/1 35/69/1 194/70/1 +f 194/70/1 34/71/1 195/72/1 +f 195/72/1 33/73/1 196/74/1 +f 196/74/1 47/75/1 197/76/1 +f 47/77/1 198/78/1 197/76/1 +f 48/79/1 199/80/1 198/78/1 +f 46/81/1 200/82/1 199/80/1 +f 45/83/1 201/84/1 200/82/1 +f 7/85/1 60/86/1 59/87/1 +f 8/88/1 59/89/1 58/90/1 +f 9/91/1 58/92/1 57/93/1 +f 10/94/1 57/95/1 56/96/1 +f 11/97/1 56/98/1 55/99/1 +f 12/100/1 55/101/1 54/102/1 +f 12/100/1 53/103/1 13/104/1 +f 13/104/1 52/105/1 14/106/1 +f 14/106/1 51/107/1 15/108/1 +f 15/108/1 50/109/1 16/110/1 +f 16/110/1 49/111/1 1/112/1 +f 1/112/1 64/113/1 2/114/1 +f 2/114/1 63/115/1 3/116/1 +f 3/116/1 62/117/1 4/118/1 +f 4/118/1 61/119/1 5/120/1 +f 92/121/2 98/122/2 97/123/2 +f 99/124/2 92/125/2 97/126/2 +f 100/127/2 91/128/2 99/129/2 +f 101/130/2 90/131/2 100/132/2 +f 102/133/2 89/134/2 101/135/2 +f 103/136/2 88/137/2 102/138/2 +f 104/139/2 87/140/2 103/141/2 +f 85/142/2 104/143/2 105/144/2 +f 84/145/2 105/146/2 106/147/2 +f 83/148/2 106/149/2 107/150/2 +f 81/151/2 107/152/2 108/153/2 +f 82/154/2 108/155/2 109/156/2 +f 96/157/2 109/158/2 110/159/2 +f 95/160/2 110/161/2 111/162/2 +f 94/163/2 111/164/2 112/165/2 +f 93/166/2 112/167/2 98/168/2 +f 70/169/2 114/170/2 69/171/2 +f 68/172/2 114/173/2 128/174/2 +f 67/175/2 128/176/2 127/177/2 +f 65/178/2 127/179/2 126/180/2 +f 66/181/2 126/182/2 125/183/2 +f 80/184/2 125/185/2 124/186/2 +f 79/187/2 124/188/2 123/189/2 +f 78/190/2 123/191/2 122/192/2 +f 78/190/2 121/193/2 77/194/2 +f 77/194/2 120/195/2 76/196/2 +f 76/196/2 119/197/2 75/198/2 +f 75/198/2 118/199/2 74/200/2 +f 74/200/2 117/201/2 73/202/2 +f 73/203/2 116/204/2 72/205/2 +f 72/205/2 115/206/2 71/207/2 +f 71/207/2 113/208/2 70/169/2 +f 139/209/2 135/210/2 131/211/2 +f 153/212/1 157/213/1 146/214/1 +f 171/215/2 167/216/2 163/217/2 +f 185/218/1 189/219/1 178/220/1 +f 255/221/2 209/222/2 211/223/2 +f 256/224/2 210/225/2 209/222/2 +f 242/226/2 224/227/2 210/225/2 +f 241/228/2 223/229/2 224/227/2 +f 243/230/2 222/231/2 223/229/2 +f 244/232/2 221/233/2 222/231/2 +f 245/234/2 220/235/2 221/233/2 +f 220/235/2 247/236/2 219/237/2 +f 219/237/2 248/238/2 218/239/2 +f 218/239/2 249/240/2 217/241/2 +f 217/242/2 250/243/2 216/244/2 +f 216/244/2 251/245/2 215/246/2 +f 215/246/2 252/247/2 214/248/2 +f 252/249/2 213/250/2 214/248/2 +f 253/251/2 212/252/2 213/250/2 +f 254/253/2 211/223/2 212/252/2 +f 6/1/1 5/120/1 61/2/1 +f 26/4/1 27/254/1 232/5/1 +f 230/7/1 25/255/1 26/8/1 +f 229/10/1 24/256/1 25/11/1 +f 228/13/1 23/257/1 24/14/1 +f 227/16/1 22/258/1 23/17/1 +f 226/19/1 21/259/1 22/20/1 +f 225/22/1 20/260/1 21/23/1 +f 240/25/1 19/261/1 20/26/1 +f 239/28/1 18/262/1 19/29/1 +f 238/31/1 17/263/1 18/32/1 +f 237/34/1 31/264/1 17/35/1 +f 236/37/1 32/265/1 31/38/1 +f 236/40/1 235/266/1 30/41/1 +f 235/43/1 234/267/1 29/44/1 +f 234/46/1 233/268/1 28/47/1 +f 233/49/1 232/269/1 27/50/1 +f 202/52/1 201/270/1 44/53/1 +f 43/55/1 42/271/1 203/56/1 +f 203/56/1 42/272/1 41/57/1 +f 41/59/1 40/273/1 205/60/1 +f 205/60/1 40/274/1 39/61/1 +f 206/62/1 39/275/1 38/63/1 +f 207/64/1 38/276/1 37/65/1 +f 208/66/1 37/277/1 36/67/1 +f 193/68/1 36/278/1 35/69/1 +f 194/70/1 35/279/1 34/71/1 +f 195/72/1 34/280/1 33/73/1 +f 196/74/1 33/281/1 47/75/1 +f 47/77/1 48/282/1 198/78/1 +f 48/79/1 46/283/1 199/80/1 +f 46/81/1 45/284/1 200/82/1 +f 45/83/1 44/285/1 201/84/1 +f 7/85/1 6/1/1 60/86/1 +f 8/88/1 7/85/1 59/89/1 +f 9/91/1 8/88/1 58/92/1 +f 10/94/1 9/286/1 57/95/1 +f 11/97/1 10/94/1 56/98/1 +f 12/100/1 11/97/1 55/101/1 +f 12/100/1 54/287/1 53/103/1 +f 13/104/1 53/288/1 52/105/1 +f 14/106/1 52/289/1 51/107/1 +f 15/108/1 51/290/1 50/109/1 +f 16/110/1 50/291/1 49/111/1 +f 1/112/1 49/292/1 64/113/1 +f 2/114/1 64/293/1 63/115/1 +f 3/116/1 63/294/1 62/117/1 +f 4/118/1 62/295/1 61/119/1 +f 92/121/2 93/296/2 98/122/2 +f 99/124/2 91/297/2 92/125/2 +f 100/127/2 90/298/2 91/128/2 +f 101/130/2 89/299/2 90/131/2 +f 102/133/2 88/300/2 89/134/2 +f 103/136/2 87/301/2 88/137/2 +f 104/139/2 86/302/2 87/140/2 +f 85/142/2 86/303/2 104/143/2 +f 84/145/2 85/304/2 105/146/2 +f 83/148/2 84/305/2 106/149/2 +f 81/151/2 83/306/2 107/152/2 +f 82/154/2 81/307/2 108/155/2 +f 96/157/2 82/308/2 109/158/2 +f 95/160/2 96/309/2 110/161/2 +f 94/163/2 95/310/2 111/164/2 +f 93/166/2 94/311/2 112/167/2 +f 70/169/2 113/312/2 114/170/2 +f 68/172/2 69/171/2 114/173/2 +f 67/175/2 68/172/2 128/176/2 +f 65/178/2 67/175/2 127/179/2 +f 66/181/2 65/178/2 126/182/2 +f 80/184/2 66/181/2 125/185/2 +f 79/187/2 80/184/2 124/188/2 +f 78/190/2 79/187/2 123/191/2 +f 78/190/2 122/313/2 121/193/2 +f 77/194/2 121/314/2 120/195/2 +f 76/196/2 120/315/2 119/197/2 +f 75/198/2 119/316/2 118/199/2 +f 74/200/2 118/317/2 117/201/2 +f 73/203/2 117/318/2 116/204/2 +f 72/205/2 116/319/2 115/206/2 +f 71/207/2 115/320/2 113/208/2 +f 131/211/2 130/321/2 129/322/2 +f 129/322/2 144/323/2 131/211/2 +f 144/323/2 143/324/2 131/211/2 +f 143/324/2 142/325/2 139/209/2 +f 142/325/2 141/326/2 139/209/2 +f 141/326/2 140/327/2 139/209/2 +f 139/209/2 138/328/2 135/210/2 +f 138/328/2 137/329/2 135/210/2 +f 137/329/2 136/330/2 135/210/2 +f 135/210/2 134/331/2 131/211/2 +f 134/331/2 133/332/2 131/211/2 +f 133/332/2 132/333/2 131/211/2 +f 131/211/2 143/324/2 139/209/2 +f 146/214/1 145/334/1 147/335/1 +f 147/335/1 148/336/1 149/337/1 +f 149/337/1 150/338/1 151/339/1 +f 151/339/1 152/340/1 153/212/1 +f 153/212/1 154/341/1 157/213/1 +f 154/341/1 155/342/1 157/213/1 +f 155/342/1 156/343/1 157/213/1 +f 157/213/1 158/344/1 159/345/1 +f 159/345/1 160/346/1 157/213/1 +f 160/346/1 146/214/1 157/213/1 +f 146/214/1 147/335/1 149/337/1 +f 149/337/1 151/339/1 146/214/1 +f 151/339/1 153/212/1 146/214/1 +f 163/217/2 162/347/2 161/348/2 +f 161/348/2 176/349/2 163/217/2 +f 176/349/2 175/350/2 163/217/2 +f 175/350/2 174/351/2 171/215/2 +f 174/351/2 173/352/2 171/215/2 +f 173/352/2 172/353/2 171/215/2 +f 171/215/2 170/354/2 167/216/2 +f 170/354/2 169/355/2 167/216/2 +f 169/355/2 168/356/2 167/216/2 +f 167/216/2 166/357/2 163/217/2 +f 166/357/2 165/358/2 163/217/2 +f 165/358/2 164/359/2 163/217/2 +f 163/217/2 175/350/2 171/215/2 +f 178/220/1 177/360/1 179/361/1 +f 179/361/1 180/362/1 181/363/1 +f 181/363/1 182/364/1 183/365/1 +f 183/365/1 184/366/1 185/218/1 +f 185/218/1 186/367/1 187/368/1 +f 187/368/1 188/369/1 189/219/1 +f 189/219/1 190/370/1 191/371/1 +f 191/371/1 192/372/1 189/219/1 +f 192/372/1 178/220/1 189/219/1 +f 178/220/1 179/361/1 181/363/1 +f 181/363/1 183/365/1 178/220/1 +f 183/365/1 185/218/1 178/220/1 +f 185/218/1 187/368/1 189/219/1 +f 255/221/2 256/373/2 209/222/2 +f 256/224/2 242/374/2 210/225/2 +f 242/226/2 241/375/2 224/227/2 +f 241/228/2 243/376/2 223/229/2 +f 243/230/2 244/377/2 222/231/2 +f 244/232/2 245/378/2 221/233/2 +f 245/234/2 246/379/2 220/235/2 +f 220/235/2 246/380/2 247/236/2 +f 219/237/2 247/381/2 248/238/2 +f 218/239/2 248/382/2 249/240/2 +f 217/242/2 249/383/2 250/243/2 +f 216/244/2 250/384/2 251/245/2 +f 215/246/2 251/385/2 252/247/2 +f 252/249/2 253/386/2 213/250/2 +f 253/251/2 254/387/2 212/252/2 +f 254/253/2 255/388/2 211/223/2 +s 1 +f 33/281/3 31/264/4 47/75/4 +f 47/77/4 32/265/5 48/282/5 +f 41/59/6 24/256/7 40/273/7 +f 34/280/8 17/263/3 33/73/3 +f 42/272/9 25/255/6 41/57/6 +f 35/279/10 18/262/8 34/71/8 +f 43/55/11 26/4/9 42/271/9 +f 36/278/12 19/261/10 35/69/10 +f 44/53/13 27/50/11 43/54/11 +f 37/277/14 20/260/12 36/67/12 +f 45/83/15 28/47/13 44/285/13 +f 38/276/16 21/259/14 37/65/14 +f 46/81/17 29/44/15 45/284/15 +f 39/275/18 22/258/16 38/63/16 +f 48/79/5 30/41/17 46/283/17 +f 40/274/7 23/257/18 39/61/18 +f 6/1/18 71/207/16 70/169/18 +f 51/290/16 81/389/14 50/109/14 +f 49/292/12 96/390/10 64/113/10 +f 8/88/14 71/207/16 7/85/16 +f 52/289/18 83/391/16 51/107/16 +f 9/91/12 72/205/14 8/88/14 +f 53/288/7 84/392/18 52/105/18 +f 10/94/10 73/202/12 9/286/12 +f 54/287/6 85/393/7 53/103/7 +f 11/97/8 74/200/10 10/94/10 +f 55/101/9 86/394/6 54/102/6 +f 12/100/3 75/198/8 11/97/8 +f 56/98/11 87/395/9 55/99/9 +f 13/104/4 76/196/3 12/100/3 +f 57/95/13 88/396/11 56/96/11 +f 14/106/5 77/194/4 13/104/4 +f 58/92/15 89/397/13 57/93/13 +f 14/106/5 79/187/17 78/190/5 +f 59/89/17 90/398/15 58/90/15 +f 1/112/13 65/178/11 66/181/13 +f 16/110/15 79/187/17 15/108/17 +f 60/86/5 91/399/17 59/87/17 +f 2/114/11 67/175/9 65/178/11 +f 1/112/13 80/184/15 16/110/15 +f 61/2/4 92/400/5 60/3/5 +f 4/118/6 67/175/9 3/116/9 +f 62/295/3 93/401/4 61/119/4 +f 5/120/7 68/172/6 4/118/6 +f 62/117/3 95/402/8 94/403/3 +f 6/1/18 69/171/7 5/120/7 +f 50/291/14 82/404/12 49/111/12 +f 64/293/10 95/405/8 63/115/8 +f 105/146/7 122/313/18 106/147/18 +f 97/126/5 115/320/17 99/124/17 +f 106/149/18 123/191/16 107/150/16 +f 99/129/17 116/319/15 100/127/15 +f 107/152/16 124/188/14 108/153/14 +f 100/132/15 117/318/13 101/130/13 +f 108/155/14 125/185/12 109/156/12 +f 101/135/13 118/317/11 102/133/11 +f 109/158/12 126/182/10 110/159/10 +f 102/138/11 119/316/9 103/136/9 +f 110/161/10 127/179/8 111/162/8 +f 103/141/9 120/315/6 104/139/6 +f 111/164/8 128/176/3 112/165/3 +f 104/143/6 121/314/7 105/144/7 +f 98/122/4 113/312/5 97/123/5 +f 112/167/3 114/173/4 98/168/4 +f 134/406/3 149/407/4 133/408/4 +f 142/409/6 157/410/7 141/411/7 +f 135/412/8 150/413/3 134/406/3 +f 143/414/9 158/415/6 142/409/6 +f 135/412/8 152/416/10 151/417/8 +f 144/418/11 159/419/9 143/414/9 +f 137/420/12 152/416/10 136/421/10 +f 130/422/15 146/423/13 129/424/13 +f 129/424/13 160/425/11 144/418/11 +f 138/426/14 153/427/12 137/428/12 +f 131/429/17 145/430/15 130/422/15 +f 139/431/16 154/432/14 138/426/14 +f 132/433/5 147/434/17 131/429/17 +f 140/435/18 155/436/16 139/431/16 +f 133/408/4 148/437/5 132/433/5 +f 141/411/7 156/438/18 140/435/18 +f 166/439/3 181/440/4 165/441/4 +f 174/442/6 189/443/7 173/444/7 +f 167/445/8 182/446/3 166/439/3 +f 175/447/9 190/448/6 174/442/6 +f 167/445/8 184/449/10 183/450/8 +f 176/451/11 191/452/9 175/447/9 +f 169/453/12 184/449/10 168/454/10 +f 162/455/15 178/456/13 161/457/13 +f 161/457/13 192/458/11 176/451/11 +f 170/459/14 185/460/12 169/461/12 +f 163/462/17 177/463/15 162/455/15 +f 171/464/16 186/465/14 170/459/14 +f 164/466/5 179/467/17 163/462/17 +f 172/468/18 187/469/16 171/464/16 +f 165/441/4 180/470/5 164/466/5 +f 173/444/7 188/471/18 172/468/18 +f 198/78/18 215/246/16 214/248/18 +f 200/82/14 215/246/16 199/80/16 +f 201/84/12 216/244/14 200/82/14 +f 202/52/10 217/241/12 201/270/12 +f 203/56/8 218/239/10 202/52/10 +f 204/58/3 219/237/8 203/56/8 +f 205/60/4 220/235/3 204/58/3 +f 206/62/5 221/233/4 205/60/4 +f 206/62/5 223/229/17 222/231/5 +f 194/70/11 210/225/13 193/68/13 +f 208/66/15 223/229/17 207/64/17 +f 194/70/11 211/223/9 209/222/11 +f 193/68/13 224/227/15 208/66/15 +f 196/74/6 211/223/9 195/72/9 +f 197/76/7 212/252/6 196/74/6 +f 198/78/18 213/250/7 197/76/7 +f 227/472/16 241/228/14 226/473/14 +f 240/474/10 242/374/12 256/224/10 +f 228/475/18 243/230/16 227/476/16 +f 229/477/7 244/232/18 228/478/18 +f 230/479/6 245/234/7 229/480/7 +f 231/481/9 246/380/6 230/482/6 +f 232/483/11 247/381/9 231/484/9 +f 233/485/13 248/382/11 232/486/11 +f 234/487/15 249/383/13 233/488/13 +f 235/489/17 250/384/15 234/490/15 +f 236/491/5 251/385/17 235/492/17 +f 237/493/4 252/249/5 236/494/5 +f 238/495/3 253/251/4 237/496/4 +f 238/497/3 255/388/8 254/253/3 +f 226/498/14 242/226/12 225/499/12 +f 239/500/8 256/373/10 255/221/8 +f 33/281/3 17/35/3 31/264/4 +f 47/77/4 31/38/4 32/265/5 +f 41/59/6 25/11/6 24/256/7 +f 34/280/8 18/32/8 17/263/3 +f 42/272/9 26/8/9 25/255/6 +f 35/279/10 19/29/10 18/262/8 +f 43/55/11 27/254/11 26/4/9 +f 36/278/12 20/26/12 19/261/10 +f 44/53/13 28/51/13 27/50/11 +f 37/277/14 21/23/14 20/260/12 +f 45/83/15 29/48/15 28/47/13 +f 38/276/16 22/20/16 21/259/14 +f 46/81/17 30/45/17 29/44/15 +f 39/275/18 23/17/18 22/258/16 +f 48/79/5 32/42/5 30/41/17 +f 40/274/7 24/14/7 23/257/18 +f 6/1/18 7/85/16 71/207/16 +f 51/290/16 83/501/16 81/389/14 +f 49/292/12 82/502/12 96/390/10 +f 8/88/14 72/205/14 71/207/16 +f 52/289/18 84/503/18 83/391/16 +f 9/91/12 73/203/12 72/205/14 +f 53/288/7 85/504/7 84/392/18 +f 10/94/10 74/200/10 73/202/12 +f 54/287/6 86/505/6 85/393/7 +f 11/97/8 75/198/8 74/200/10 +f 55/101/9 87/506/9 86/394/6 +f 12/100/3 76/196/3 75/198/8 +f 56/98/11 88/507/11 87/395/9 +f 13/104/4 77/194/4 76/196/3 +f 57/95/13 89/508/13 88/396/11 +f 14/106/5 78/190/5 77/194/4 +f 58/92/15 90/509/15 89/397/13 +f 14/106/5 15/108/17 79/187/17 +f 59/89/17 91/510/17 90/398/15 +f 1/112/13 2/114/11 65/178/11 +f 16/110/15 80/184/15 79/187/17 +f 60/86/5 92/511/5 91/399/17 +f 2/114/11 3/116/9 67/175/9 +f 1/112/13 66/181/13 80/184/15 +f 61/2/4 93/512/4 92/400/5 +f 4/118/6 68/172/6 67/175/9 +f 62/295/3 94/513/3 93/401/4 +f 5/120/7 69/171/7 68/172/6 +f 62/117/3 63/294/8 95/402/8 +f 6/1/18 70/169/18 69/171/7 +f 50/291/14 81/514/14 82/404/12 +f 64/293/10 96/515/10 95/405/8 +f 105/146/7 121/193/7 122/313/18 +f 97/126/5 113/208/5 115/320/17 +f 106/149/18 122/192/18 123/191/16 +f 99/129/17 115/206/17 116/319/15 +f 107/152/16 123/189/16 124/188/14 +f 100/132/15 116/204/15 117/318/13 +f 108/155/14 124/186/14 125/185/12 +f 101/135/13 117/201/13 118/317/11 +f 109/158/12 125/183/12 126/182/10 +f 102/138/11 118/199/11 119/316/9 +f 110/161/10 126/180/10 127/179/8 +f 103/141/9 119/197/9 120/315/6 +f 111/164/8 127/177/8 128/176/3 +f 104/143/6 120/195/6 121/314/7 +f 98/122/4 114/170/4 113/312/5 +f 112/167/3 128/174/3 114/173/4 +f 134/406/3 150/413/3 149/407/4 +f 142/409/6 158/415/6 157/410/7 +f 135/412/8 151/417/8 150/413/3 +f 143/414/9 159/419/9 158/415/6 +f 135/412/8 136/421/10 152/416/10 +f 144/418/11 160/425/11 159/419/9 +f 137/420/12 153/516/12 152/416/10 +f 130/422/15 145/430/15 146/423/13 +f 129/424/13 146/423/13 160/425/11 +f 138/426/14 154/432/14 153/427/12 +f 131/429/17 147/434/17 145/430/15 +f 139/431/16 155/436/16 154/432/14 +f 132/433/5 148/437/5 147/434/17 +f 140/435/18 156/438/18 155/436/16 +f 133/408/4 149/407/4 148/437/5 +f 141/411/7 157/410/7 156/438/18 +f 166/439/3 182/446/3 181/440/4 +f 174/442/6 190/448/6 189/443/7 +f 167/445/8 183/450/8 182/446/3 +f 175/447/9 191/452/9 190/448/6 +f 167/445/8 168/454/10 184/449/10 +f 176/451/11 192/458/11 191/452/9 +f 169/453/12 185/517/12 184/449/10 +f 162/455/15 177/463/15 178/456/13 +f 161/457/13 178/456/13 192/458/11 +f 170/459/14 186/465/14 185/460/12 +f 163/462/17 179/467/17 177/463/15 +f 171/464/16 187/469/16 186/465/14 +f 164/466/5 180/470/5 179/467/17 +f 172/468/18 188/471/18 187/469/16 +f 165/441/4 181/440/4 180/470/5 +f 173/444/7 189/443/7 188/471/18 +f 198/78/18 199/80/16 215/246/16 +f 200/82/14 216/244/14 215/246/16 +f 201/84/12 217/242/12 216/244/14 +f 202/52/10 218/239/10 217/241/12 +f 203/56/8 219/237/8 218/239/10 +f 204/58/3 220/235/3 219/237/8 +f 205/60/4 221/233/4 220/235/3 +f 206/62/5 222/231/5 221/233/4 +f 206/62/5 207/64/17 223/229/17 +f 194/70/11 209/222/11 210/225/13 +f 208/66/15 224/227/15 223/229/17 +f 194/70/11 195/72/9 211/223/9 +f 193/68/13 210/225/13 224/227/15 +f 196/74/6 212/252/6 211/223/9 +f 197/76/7 213/250/7 212/252/6 +f 198/78/18 214/248/18 213/250/7 +f 227/472/16 243/376/16 241/228/14 +f 240/474/10 225/518/12 242/374/12 +f 228/475/18 244/377/18 243/230/16 +f 229/477/7 245/378/7 244/232/18 +f 230/479/6 246/379/6 245/234/7 +f 231/481/9 247/236/9 246/380/6 +f 232/483/11 248/238/11 247/381/9 +f 233/485/13 249/240/13 248/382/11 +f 234/487/15 250/243/15 249/383/13 +f 235/489/17 251/245/17 250/384/15 +f 236/491/5 252/247/5 251/385/17 +f 237/493/4 253/386/4 252/249/5 +f 238/495/3 254/387/3 253/251/4 +f 238/497/3 239/519/8 255/388/8 +f 226/498/14 241/375/14 242/226/12 +f 239/500/8 240/520/10 256/373/10 +o Shells +v 0.000000 1.250000 0.375000 +v -0.176777 1.176777 0.375000 +v -0.250000 1.000000 0.375000 +v -0.176777 0.823223 0.375000 +v 0.000000 0.750000 0.375000 +v 0.176777 0.823223 0.375000 +v 0.250000 1.000000 0.375000 +v 0.176777 1.176777 0.375000 +v 0.000000 1.250000 -1.125000 +v -0.176777 1.176777 -1.125000 +v -0.250000 1.000000 -1.125000 +v -0.176777 0.823223 -1.125000 +v 0.000000 0.750000 -1.125000 +v 0.176777 0.823223 -1.125000 +v 0.250000 1.000000 -1.125000 +v 0.176777 1.176777 -1.125000 +v 0.000000 1.312500 -1.125000 +v -0.220971 1.220971 -1.125000 +v -0.312500 1.000000 -1.125000 +v -0.220971 0.779029 -1.125000 +v 0.000000 0.687500 -1.125000 +v 0.220971 0.779029 -1.125000 +v 0.312500 1.000000 -1.125000 +v 0.220971 1.220971 -1.125000 +v 0.000000 1.312500 -1.250000 +v -0.220971 1.220971 -1.250000 +v -0.312500 1.000000 -1.250000 +v -0.220971 0.779029 -1.250000 +v 0.000000 0.687500 -1.250000 +v 0.220971 0.779029 -1.250000 +v 0.312500 1.000000 -1.250000 +v 0.220971 1.220971 -1.250000 +v 0.000000 0.750000 0.375000 +v -0.669696 0.616789 0.375000 +v -1.237437 0.237437 0.375000 +v -1.616789 -0.330304 0.375000 +v -1.750000 -1.000000 0.375000 +v -1.616789 -1.669696 0.375000 +v -1.237437 -2.237437 0.375000 +v -0.669696 -2.616789 0.375000 +v -0.000000 -2.750000 0.375000 +v 0.669696 -2.616789 0.375000 +v 1.237436 -2.237437 0.375000 +v 1.616789 -1.669696 0.375000 +v 1.750000 -1.000000 0.375000 +v 1.616789 -0.330304 0.375000 +v 1.237436 0.237437 0.375000 +v 0.669695 0.616789 0.375000 +v 0.000000 0.750000 -1.250000 +v -0.669696 0.616789 -1.250000 +v -1.237437 0.237437 -1.250000 +v -1.616789 -0.330304 -1.250000 +v -1.750000 -1.000000 -1.250000 +v -1.616789 -1.669696 -1.250000 +v -1.237437 -2.237437 -1.250000 +v -0.669696 -2.616789 -1.250000 +v -0.000000 -2.750000 -1.250000 +v 0.669696 -2.616789 -1.250000 +v 1.237436 -2.237437 -1.250000 +v 1.616789 -1.669696 -1.250000 +v 1.750000 -1.000000 -1.250000 +v 1.616789 -0.330304 -1.250000 +v 1.237436 0.237437 -1.250000 +v 0.669695 0.616789 -1.250000 v 0.695288 1.139877 0.375000 v 0.504536 1.124865 0.375000 v 0.380270 0.979367 0.375000 @@ -1197,6 +1974,2641 @@ v -0.521466 0.604908 -1.250000 v -0.339594 0.760242 -1.250000 v -0.320828 0.998681 -1.250000 v -0.476162 1.180553 -1.250000 +vt 0.770916 0.468772 +vt 0.778873 0.484375 +vt 0.770916 0.499978 +vt 0.828685 0.492188 +vt 0.826693 0.503906 +vt 0.826693 0.492188 +vt 0.828685 0.515625 +vt 0.826693 0.515625 +vt 0.828685 0.527344 +vt 0.826693 0.527344 +vt 0.828685 0.539062 +vt 0.826693 0.539062 +vt 0.826693 0.550781 +vt 0.828685 0.550781 +vt 0.826693 0.562500 +vt 0.828685 0.468750 +vt 0.826693 0.480469 +vt 0.826693 0.468750 +vt 0.775907 0.505839 +vt 0.778799 0.519531 +vt 0.759050 0.519531 +vt 0.888446 0.273438 +vt 0.836653 0.312500 +vt 0.836653 0.273438 +vt 0.888446 0.000000 +vt 0.836653 0.039062 +vt 0.836653 0.000000 +vt 0.888446 0.351562 +vt 0.836653 0.390625 +vt 0.836653 0.351562 +vt 0.888446 0.039062 +vt 0.836653 0.078125 +vt 0.888446 0.390625 +vt 0.836653 0.429688 +vt 0.888446 0.117188 +vt 0.836653 0.117188 +vt 0.888446 0.429688 +vt 0.836653 0.468750 +vt 0.836653 0.156250 +vt 0.888446 0.468750 +vt 0.836653 0.507812 +vt 0.888446 0.156250 +vt 0.836653 0.195312 +vt 0.888446 0.507812 +vt 0.836653 0.546875 +vt 0.888446 0.234375 +vt 0.836653 0.234375 +vt 0.888446 0.546875 +vt 0.836653 0.585938 +vt 0.888446 0.585938 +vt 0.836653 0.625000 +vt 0.888446 0.312500 +vt 0.770916 0.468772 +vt 0.778873 0.484375 +vt 0.770916 0.499978 +vt 0.828685 0.492188 +vt 0.826693 0.503906 +vt 0.826693 0.492188 +vt 0.828685 0.515625 +vt 0.826693 0.515625 +vt 0.828685 0.527344 +vt 0.826693 0.527344 +vt 0.828685 0.539062 +vt 0.826693 0.539062 +vt 0.826693 0.550781 +vt 0.828685 0.550781 +vt 0.826693 0.562500 +vt 0.828685 0.468750 +vt 0.826693 0.480469 +vt 0.826693 0.468750 +vt 0.768925 0.538894 +vt 0.759050 0.519531 +vt 0.768925 0.500168 +vt 0.770916 0.468772 +vt 0.778873 0.484375 +vt 0.770916 0.499978 +vt 0.828685 0.492188 +vt 0.826693 0.503906 +vt 0.826693 0.492188 +vt 0.828685 0.515625 +vt 0.826693 0.515625 +vt 0.828685 0.527344 +vt 0.826693 0.527344 +vt 0.828685 0.539062 +vt 0.826693 0.539062 +vt 0.826693 0.550781 +vt 0.828685 0.550781 +vt 0.826693 0.562500 +vt 0.828685 0.468750 +vt 0.826693 0.480469 +vt 0.826693 0.468750 +vt 0.828685 0.480469 +vt 0.775907 0.505839 +vt 0.778799 0.519531 +vt 0.759050 0.519531 +vt 0.762959 0.484375 +vt 0.770916 0.468772 +vt 0.778873 0.484375 +vt 0.828685 0.492188 +vt 0.826693 0.503906 +vt 0.826693 0.492188 +vt 0.828685 0.515625 +vt 0.826693 0.515625 +vt 0.828685 0.527344 +vt 0.826693 0.527344 +vt 0.828685 0.539062 +vt 0.826693 0.539062 +vt 0.826693 0.550781 +vt 0.828685 0.550781 +vt 0.826693 0.562500 +vt 0.828685 0.468750 +vt 0.826693 0.480469 +vt 0.826693 0.468750 +vt 0.828685 0.480469 +vt 0.775907 0.505839 +vt 0.778799 0.519531 +vt 0.759050 0.519531 +vt 0.762959 0.484375 +vt 0.770916 0.468772 +vt 0.778873 0.484375 +vt 0.828685 0.492188 +vt 0.826693 0.503906 +vt 0.826693 0.492188 +vt 0.828685 0.515625 +vt 0.826693 0.515625 +vt 0.828685 0.527344 +vt 0.826693 0.527344 +vt 0.828685 0.539062 +vt 0.826693 0.539062 +vt 0.826693 0.550781 +vt 0.828685 0.550781 +vt 0.826693 0.562500 +vt 0.826693 0.468750 +vt 0.828685 0.480469 +vt 0.826693 0.480469 +vt 0.775907 0.505839 +vt 0.778799 0.519531 +vt 0.759050 0.519531 +vt 0.762959 0.484375 +vt 0.770916 0.468772 +vt 0.778873 0.484375 +vt 0.828685 0.492188 +vt 0.826693 0.503906 +vt 0.826693 0.492188 +vt 0.828685 0.515625 +vt 0.826693 0.515625 +vt 0.828685 0.527344 +vt 0.826693 0.527344 +vt 0.828685 0.539062 +vt 0.826693 0.539062 +vt 0.826693 0.550781 +vt 0.828685 0.550781 +vt 0.826693 0.562500 +vt 0.826693 0.468750 +vt 0.828685 0.480469 +vt 0.826693 0.480469 +vt 0.778799 0.519531 +vt 0.768925 0.538894 +vt 0.759050 0.519531 +vt 0.770916 0.468772 +vt 0.778873 0.484375 +vt 0.770916 0.499978 +vt 0.828685 0.492188 +vt 0.826693 0.503906 +vt 0.826693 0.492188 +vt 0.828685 0.515625 +vt 0.826693 0.515625 +vt 0.828685 0.527344 +vt 0.826693 0.527344 +vt 0.828685 0.539062 +vt 0.826693 0.539062 +vt 0.826693 0.550781 +vt 0.828685 0.550781 +vt 0.826693 0.562500 +vt 0.828685 0.468750 +vt 0.826693 0.480469 +vt 0.826693 0.468750 +vt 0.778799 0.519531 +vt 0.768925 0.538894 +vt 0.759050 0.519531 +vt 0.770916 0.499978 +vt 0.762959 0.484375 +vt 0.770916 0.468772 +vt 0.828685 0.492188 +vt 0.826693 0.503906 +vt 0.826693 0.492188 +vt 0.828685 0.515625 +vt 0.826693 0.515625 +vt 0.828685 0.527344 +vt 0.826693 0.527344 +vt 0.828685 0.539062 +vt 0.826693 0.539062 +vt 0.826693 0.550781 +vt 0.828685 0.550781 +vt 0.826693 0.562500 +vt 0.826693 0.468750 +vt 0.828685 0.480469 +vt 0.826693 0.480469 +vt 0.775907 0.505839 +vt 0.778799 0.519531 +vt 0.759050 0.519531 +vt 0.762959 0.484375 +vt 0.770916 0.468772 +vt 0.778873 0.484375 +vt 0.828685 0.492188 +vt 0.826693 0.503906 +vt 0.826693 0.492188 +vt 0.828685 0.515625 +vt 0.826693 0.515625 +vt 0.828685 0.527344 +vt 0.826693 0.527344 +vt 0.828685 0.539062 +vt 0.826693 0.539062 +vt 0.826693 0.550781 +vt 0.828685 0.550781 +vt 0.826693 0.562500 +vt 0.828685 0.468750 +vt 0.826693 0.480469 +vt 0.826693 0.468750 +vt 0.828685 0.480469 +vt 0.778799 0.519531 +vt 0.768925 0.538894 +vt 0.759050 0.519531 +vt 0.762959 0.484375 +vt 0.770916 0.468772 +vt 0.778873 0.484375 +vt 0.828685 0.492188 +vt 0.826693 0.503906 +vt 0.826693 0.492188 +vt 0.828685 0.515625 +vt 0.826693 0.515625 +vt 0.828685 0.527344 +vt 0.826693 0.527344 +vt 0.828685 0.539062 +vt 0.826693 0.539062 +vt 0.826693 0.550781 +vt 0.828685 0.550781 +vt 0.826693 0.562500 +vt 0.828685 0.468750 +vt 0.826693 0.480469 +vt 0.826693 0.468750 +vt 0.775907 0.505839 +vt 0.778799 0.519531 +vt 0.759050 0.519531 +vt 0.778873 0.484375 +vt 0.776543 0.495408 +vt 0.770916 0.499978 +vt 0.828685 0.492188 +vt 0.826693 0.503906 +vt 0.826693 0.492188 +vt 0.828685 0.515625 +vt 0.826693 0.515625 +vt 0.828685 0.527344 +vt 0.826693 0.527344 +vt 0.828685 0.539062 +vt 0.826693 0.539062 +vt 0.826693 0.550781 +vt 0.828685 0.550781 +vt 0.826693 0.562500 +vt 0.826693 0.468750 +vt 0.828685 0.480469 +vt 0.826693 0.480469 +vt 0.778799 0.519531 +vt 0.768925 0.538894 +vt 0.759050 0.519531 +vt 0.770916 0.468772 +vt 0.778873 0.484375 +vt 0.770916 0.499978 +vt 0.828685 0.492188 +vt 0.826693 0.503906 +vt 0.826693 0.492188 +vt 0.828685 0.515625 +vt 0.826693 0.515625 +vt 0.828685 0.527344 +vt 0.826693 0.527344 +vt 0.828685 0.539062 +vt 0.826693 0.539062 +vt 0.826693 0.550781 +vt 0.828685 0.550781 +vt 0.826693 0.562500 +vt 0.826693 0.468750 +vt 0.828685 0.480469 +vt 0.826693 0.480469 +vt 0.778799 0.519531 +vt 0.768925 0.538894 +vt 0.759050 0.519531 +vt 0.770916 0.499978 +vt 0.762959 0.484375 +vt 0.770916 0.468772 +vt 0.828685 0.492188 +vt 0.826693 0.503906 +vt 0.826693 0.492188 +vt 0.828685 0.515625 +vt 0.826693 0.515625 +vt 0.828685 0.527344 +vt 0.826693 0.527344 +vt 0.828685 0.539062 +vt 0.826693 0.539062 +vt 0.826693 0.550781 +vt 0.828685 0.550781 +vt 0.826693 0.562500 +vt 0.826693 0.468750 +vt 0.828685 0.480469 +vt 0.826693 0.480469 +vt 0.775907 0.505839 +vt 0.778799 0.519531 +vt 0.759050 0.519531 +vt 0.770916 0.499978 +vt 0.762959 0.484375 +vt 0.770916 0.468772 +vt 0.828685 0.492188 +vt 0.826693 0.503906 +vt 0.826693 0.492188 +vt 0.828685 0.515625 +vt 0.826693 0.515625 +vt 0.828685 0.527344 +vt 0.826693 0.527344 +vt 0.828685 0.539062 +vt 0.826693 0.539062 +vt 0.826693 0.550781 +vt 0.828685 0.550781 +vt 0.826693 0.562500 +vt 0.828685 0.468750 +vt 0.826693 0.480469 +vt 0.826693 0.468750 +vt 0.828685 0.480469 +vt 0.778799 0.519531 +vt 0.768925 0.538894 +vt 0.759050 0.519531 +vt 0.762959 0.484375 +vt 0.770916 0.468772 +vt 0.778873 0.484375 +vt 0.828685 0.492188 +vt 0.826693 0.503906 +vt 0.826693 0.492188 +vt 0.828685 0.515625 +vt 0.826693 0.515625 +vt 0.828685 0.527344 +vt 0.826693 0.527344 +vt 0.828685 0.539062 +vt 0.826693 0.539062 +vt 0.826693 0.550781 +vt 0.828685 0.550781 +vt 0.826693 0.562500 +vt 0.828685 0.468750 +vt 0.826693 0.480469 +vt 0.826693 0.468750 +vt 0.775907 0.505839 +vt 0.778799 0.519531 +vt 0.759050 0.519531 +vt 0.762959 0.484375 +vt 0.770916 0.468772 +vt 0.778873 0.484375 +vt 0.828685 0.492188 +vt 0.826693 0.503906 +vt 0.826693 0.492188 +vt 0.828685 0.515625 +vt 0.826693 0.515625 +vt 0.828685 0.527344 +vt 0.826693 0.527344 +vt 0.828685 0.539062 +vt 0.826693 0.539062 +vt 0.826693 0.550781 +vt 0.828685 0.550781 +vt 0.826693 0.562500 +vt 0.826693 0.468750 +vt 0.828685 0.480469 +vt 0.826693 0.480469 +vt 0.778799 0.519531 +vt 0.768925 0.538894 +vt 0.759050 0.519531 +vt 0.770916 0.468772 +vt 0.778873 0.484375 +vt 0.770916 0.499978 +vt 0.828685 0.492188 +vt 0.826693 0.503906 +vt 0.826693 0.492188 +vt 0.828685 0.515625 +vt 0.826693 0.515625 +vt 0.828685 0.527344 +vt 0.826693 0.527344 +vt 0.828685 0.539062 +vt 0.826693 0.539062 +vt 0.826693 0.550781 +vt 0.828685 0.550781 +vt 0.826693 0.562500 +vt 0.826693 0.468750 +vt 0.828685 0.480469 +vt 0.826693 0.480469 +vt 0.778799 0.519531 +vt 0.768925 0.538894 +vt 0.759050 0.519531 +vt 0.770916 0.499978 +vt 0.762959 0.484375 +vt 0.770916 0.468772 +vt 0.828685 0.492188 +vt 0.826693 0.503906 +vt 0.826693 0.492188 +vt 0.828685 0.515625 +vt 0.826693 0.515625 +vt 0.828685 0.527344 +vt 0.826693 0.527344 +vt 0.828685 0.539062 +vt 0.826693 0.539062 +vt 0.826693 0.550781 +vt 0.828685 0.550781 +vt 0.826693 0.562500 +vt 0.826693 0.468750 +vt 0.828685 0.480469 +vt 0.826693 0.480469 +vt 0.768925 0.500168 +vt 0.775907 0.505839 +vt 0.778799 0.519531 +vt 0.762959 0.484375 +vt 0.770916 0.468772 +vt 0.778873 0.484375 +vt 0.828685 0.492188 +vt 0.826693 0.503906 +vt 0.826693 0.492188 +vt 0.828685 0.515625 +vt 0.826693 0.515625 +vt 0.828685 0.527344 +vt 0.826693 0.527344 +vt 0.828685 0.539062 +vt 0.826693 0.539062 +vt 0.826693 0.550781 +vt 0.828685 0.550781 +vt 0.826693 0.562500 +vt 0.828685 0.468750 +vt 0.826693 0.480469 +vt 0.826693 0.468750 +vt 0.828685 0.480469 +vt 0.778799 0.519531 +vt 0.768925 0.538894 +vt 0.759050 0.519531 +vt 0.762959 0.484375 +vt 0.770916 0.468772 +vt 0.778873 0.484375 +vt 0.828685 0.492188 +vt 0.826693 0.503906 +vt 0.826693 0.492188 +vt 0.828685 0.503906 +vt 0.826693 0.515625 +vt 0.828685 0.527344 +vt 0.826693 0.527344 +vt 0.828685 0.539062 +vt 0.826693 0.539062 +vt 0.826693 0.550781 +vt 0.828685 0.550781 +vt 0.826693 0.562500 +vt 0.828685 0.468750 +vt 0.826693 0.480469 +vt 0.826693 0.468750 +vt 0.775907 0.505839 +vt 0.778799 0.519531 +vt 0.759050 0.519531 +vt 0.765290 0.495408 +vt 0.762959 0.484375 +vt 0.765290 0.473342 +vt 0.776543 0.473342 +vt 0.776543 0.495408 +vt 0.828685 0.503906 +vt 0.828685 0.562500 +vt 0.828685 0.480469 +vt 0.775907 0.533223 +vt 0.768925 0.538894 +vt 0.761942 0.533223 +vt 0.761942 0.505839 +vt 0.768925 0.500168 +vt 0.888446 0.078125 +vt 0.888446 0.195312 +vt 0.888446 0.625000 +vt 0.765290 0.495408 +vt 0.762959 0.484375 +vt 0.765290 0.473342 +vt 0.776543 0.473342 +vt 0.776543 0.495408 +vt 0.828685 0.503906 +vt 0.828685 0.562500 +vt 0.828685 0.480469 +vt 0.778799 0.519531 +vt 0.775907 0.533223 +vt 0.761942 0.533223 +vt 0.761942 0.505839 +vt 0.775907 0.505839 +vt 0.765290 0.495408 +vt 0.762959 0.484375 +vt 0.765290 0.473342 +vt 0.776543 0.473342 +vt 0.776543 0.495408 +vt 0.828685 0.503906 +vt 0.828685 0.562500 +vt 0.775907 0.533223 +vt 0.768925 0.538894 +vt 0.761942 0.533223 +vt 0.761942 0.505839 +vt 0.768925 0.500168 +vt 0.770916 0.499978 +vt 0.765290 0.495408 +vt 0.765290 0.473342 +vt 0.776543 0.473342 +vt 0.776543 0.495408 +vt 0.828685 0.503906 +vt 0.828685 0.562500 +vt 0.775907 0.533223 +vt 0.768925 0.538894 +vt 0.761942 0.533223 +vt 0.761942 0.505839 +vt 0.768925 0.500168 +vt 0.770916 0.499978 +vt 0.765290 0.495408 +vt 0.765290 0.473342 +vt 0.776543 0.473342 +vt 0.776543 0.495408 +vt 0.828685 0.503906 +vt 0.828685 0.562500 +vt 0.828685 0.468750 +vt 0.775907 0.533223 +vt 0.768925 0.538894 +vt 0.761942 0.533223 +vt 0.761942 0.505839 +vt 0.768925 0.500168 +vt 0.770916 0.499978 +vt 0.765290 0.495408 +vt 0.765290 0.473342 +vt 0.776543 0.473342 +vt 0.776543 0.495408 +vt 0.828685 0.503906 +vt 0.828685 0.562500 +vt 0.828685 0.468750 +vt 0.775907 0.533223 +vt 0.761942 0.533223 +vt 0.761942 0.505839 +vt 0.768925 0.500168 +vt 0.775907 0.505839 +vt 0.765290 0.495408 +vt 0.762959 0.484375 +vt 0.765290 0.473342 +vt 0.776543 0.473342 +vt 0.776543 0.495408 +vt 0.828685 0.503906 +vt 0.828685 0.562500 +vt 0.828685 0.480469 +vt 0.775907 0.533223 +vt 0.761942 0.533223 +vt 0.761942 0.505839 +vt 0.768925 0.500168 +vt 0.775907 0.505839 +vt 0.765290 0.495408 +vt 0.765290 0.473342 +vt 0.776543 0.473342 +vt 0.778873 0.484375 +vt 0.776543 0.495408 +vt 0.828685 0.503906 +vt 0.828685 0.562500 +vt 0.828685 0.468750 +vt 0.775907 0.533223 +vt 0.768925 0.538894 +vt 0.761942 0.533223 +vt 0.761942 0.505839 +vt 0.768925 0.500168 +vt 0.770916 0.499978 +vt 0.765290 0.495408 +vt 0.765290 0.473342 +vt 0.776543 0.473342 +vt 0.776543 0.495408 +vt 0.828685 0.503906 +vt 0.828685 0.562500 +vt 0.775907 0.533223 +vt 0.761942 0.533223 +vt 0.761942 0.505839 +vt 0.768925 0.500168 +vt 0.775907 0.505839 +vt 0.770916 0.499978 +vt 0.765290 0.495408 +vt 0.765290 0.473342 +vt 0.776543 0.473342 +vt 0.776543 0.495408 +vt 0.828685 0.503906 +vt 0.828685 0.562500 +vt 0.828685 0.480469 +vt 0.775907 0.533223 +vt 0.768925 0.538894 +vt 0.761942 0.533223 +vt 0.761942 0.505839 +vt 0.768925 0.500168 +vt 0.765290 0.495408 +vt 0.762959 0.484375 +vt 0.765290 0.473342 +vt 0.770916 0.468772 +vt 0.776543 0.473342 +vt 0.828685 0.503906 +vt 0.828685 0.562500 +vt 0.828685 0.468750 +vt 0.775907 0.533223 +vt 0.761942 0.533223 +vt 0.761942 0.505839 +vt 0.768925 0.500168 +vt 0.775907 0.505839 +vt 0.765290 0.495408 +vt 0.762959 0.484375 +vt 0.765290 0.473342 +vt 0.776543 0.473342 +vt 0.776543 0.495408 +vt 0.828685 0.503906 +vt 0.828685 0.562500 +vt 0.828685 0.468750 +vt 0.775907 0.533223 +vt 0.761942 0.533223 +vt 0.761942 0.505839 +vt 0.768925 0.500168 +vt 0.775907 0.505839 +vt 0.765290 0.495408 +vt 0.765290 0.473342 +vt 0.776543 0.473342 +vt 0.778873 0.484375 +vt 0.776543 0.495408 +vt 0.828685 0.503906 +vt 0.828685 0.562500 +vt 0.828685 0.468750 +vt 0.775907 0.533223 +vt 0.768925 0.538894 +vt 0.761942 0.533223 +vt 0.761942 0.505839 +vt 0.768925 0.500168 +vt 0.765290 0.495408 +vt 0.765290 0.473342 +vt 0.776543 0.473342 +vt 0.778873 0.484375 +vt 0.776543 0.495408 +vt 0.828685 0.503906 +vt 0.828685 0.562500 +vt 0.775907 0.533223 +vt 0.761942 0.533223 +vt 0.761942 0.505839 +vt 0.768925 0.500168 +vt 0.775907 0.505839 +vt 0.770916 0.499978 +vt 0.765290 0.495408 +vt 0.765290 0.473342 +vt 0.776543 0.473342 +vt 0.776543 0.495408 +vt 0.828685 0.503906 +vt 0.828685 0.562500 +vt 0.828685 0.480469 +vt 0.775907 0.533223 +vt 0.768925 0.538894 +vt 0.761942 0.533223 +vt 0.761942 0.505839 +vt 0.768925 0.500168 +vt 0.770916 0.499978 +vt 0.765290 0.495408 +vt 0.765290 0.473342 +vt 0.776543 0.473342 +vt 0.776543 0.495408 +vt 0.828685 0.503906 +vt 0.828685 0.562500 +vt 0.828685 0.468750 +vt 0.775907 0.533223 +vt 0.761942 0.533223 +vt 0.761942 0.505839 +vt 0.768925 0.500168 +vt 0.775907 0.505839 +vt 0.765290 0.495408 +vt 0.762959 0.484375 +vt 0.765290 0.473342 +vt 0.776543 0.473342 +vt 0.776543 0.495408 +vt 0.828685 0.503906 +vt 0.828685 0.562500 +vt 0.828685 0.468750 +vt 0.775907 0.533223 +vt 0.761942 0.533223 +vt 0.761942 0.505839 +vt 0.768925 0.500168 +vt 0.775907 0.505839 +vt 0.765290 0.495408 +vt 0.765290 0.473342 +vt 0.776543 0.473342 +vt 0.778873 0.484375 +vt 0.776543 0.495408 +vt 0.828685 0.503906 +vt 0.828685 0.562500 +vt 0.828685 0.468750 +vt 0.775907 0.533223 +vt 0.768925 0.538894 +vt 0.761942 0.533223 +vt 0.759050 0.519531 +vt 0.761942 0.505839 +vt 0.770916 0.499978 +vt 0.765290 0.495408 +vt 0.765290 0.473342 +vt 0.776543 0.473342 +vt 0.776543 0.495408 +vt 0.828685 0.503906 +vt 0.828685 0.562500 +vt 0.775907 0.533223 +vt 0.761942 0.533223 +vt 0.761942 0.505839 +vt 0.768925 0.500168 +vt 0.775907 0.505839 +vt 0.770916 0.499978 +vt 0.765290 0.495408 +vt 0.765290 0.473342 +vt 0.776543 0.473342 +vt 0.776543 0.495408 +vt 0.828685 0.515625 +vt 0.828685 0.562500 +vt 0.828685 0.480469 +vt 0.775907 0.533223 +vt 0.768925 0.538894 +vt 0.761942 0.533223 +vt 0.761942 0.505839 +vt 0.768925 0.500168 +vt 0.778884 0.503906 +vt 0.778884 0.492188 +vt 0.778884 0.480469 +vt 0.778884 0.468750 +vt 0.778884 0.550781 +vt 0.778884 0.539062 +vt 0.778884 0.527344 +vt 0.778884 0.515625 +vt 0.778884 0.562500 +vt 0.832669 0.550781 +vt 0.832669 0.527344 +vt 0.832669 0.515625 +vt 0.832669 0.492188 +vt 0.832669 0.562500 +vt 0.832669 0.539062 +vt 0.832669 0.503906 +vt 0.832669 0.480469 +vt 0.778884 0.503906 +vt 0.778884 0.492188 +vt 0.778884 0.480469 +vt 0.778884 0.468750 +vt 0.778884 0.550781 +vt 0.778884 0.539062 +vt 0.778884 0.527344 +vt 0.778884 0.515625 +vt 0.778884 0.562500 +vt 0.832669 0.550781 +vt 0.832669 0.527344 +vt 0.832669 0.515625 +vt 0.832669 0.492188 +vt 0.832669 0.562500 +vt 0.832669 0.539062 +vt 0.832669 0.503906 +vt 0.832669 0.480469 +vt 0.778884 0.503906 +vt 0.778884 0.492188 +vt 0.778884 0.480469 +vt 0.778884 0.468750 +vt 0.778884 0.550781 +vt 0.778884 0.539062 +vt 0.778884 0.527344 +vt 0.778884 0.515625 +vt 0.778884 0.562500 +vt 0.832669 0.550781 +vt 0.832669 0.527344 +vt 0.832669 0.515625 +vt 0.832669 0.492188 +vt 0.832669 0.562500 +vt 0.832669 0.539062 +vt 0.832669 0.503906 +vt 0.832669 0.480469 +vt 0.778884 0.503906 +vt 0.778884 0.492188 +vt 0.778884 0.480469 +vt 0.778884 0.468750 +vt 0.778884 0.550781 +vt 0.778884 0.539062 +vt 0.778884 0.527344 +vt 0.778884 0.515625 +vt 0.778884 0.562500 +vt 0.832669 0.550781 +vt 0.832669 0.527344 +vt 0.832669 0.515625 +vt 0.832669 0.492188 +vt 0.832669 0.562500 +vt 0.832669 0.539062 +vt 0.832669 0.503906 +vt 0.832669 0.480469 +vt 0.778884 0.503906 +vt 0.778884 0.492188 +vt 0.778884 0.480469 +vt 0.778884 0.468750 +vt 0.778884 0.550781 +vt 0.778884 0.539062 +vt 0.778884 0.527344 +vt 0.778884 0.515625 +vt 0.778884 0.562500 +vt 0.832669 0.550781 +vt 0.832669 0.527344 +vt 0.832669 0.515625 +vt 0.832669 0.492188 +vt 0.832669 0.562500 +vt 0.832669 0.539062 +vt 0.832669 0.503906 +vt 0.832669 0.480469 +vt 0.778884 0.503906 +vt 0.778884 0.492188 +vt 0.778884 0.480469 +vt 0.778884 0.468750 +vt 0.778884 0.550781 +vt 0.778884 0.539062 +vt 0.778884 0.527344 +vt 0.778884 0.515625 +vt 0.778884 0.562500 +vt 0.832669 0.550781 +vt 0.832669 0.527344 +vt 0.832669 0.515625 +vt 0.832669 0.492188 +vt 0.832669 0.562500 +vt 0.832669 0.539062 +vt 0.832669 0.503906 +vt 0.832669 0.480469 +vt 0.778884 0.503906 +vt 0.778884 0.492188 +vt 0.778884 0.480469 +vt 0.778884 0.468750 +vt 0.778884 0.550781 +vt 0.778884 0.539062 +vt 0.778884 0.527344 +vt 0.778884 0.515625 +vt 0.778884 0.562500 +vt 0.832669 0.550781 +vt 0.832669 0.527344 +vt 0.832669 0.515625 +vt 0.832669 0.492188 +vt 0.832669 0.562500 +vt 0.832669 0.539062 +vt 0.832669 0.503906 +vt 0.832669 0.480469 +vt 0.778884 0.503906 +vt 0.778884 0.492188 +vt 0.778884 0.480469 +vt 0.778884 0.468750 +vt 0.778884 0.550781 +vt 0.778884 0.539062 +vt 0.778884 0.527344 +vt 0.778884 0.515625 +vt 0.778884 0.562500 +vt 0.832669 0.550781 +vt 0.832669 0.527344 +vt 0.832669 0.515625 +vt 0.832669 0.492188 +vt 0.832669 0.562500 +vt 0.832669 0.539062 +vt 0.832669 0.503906 +vt 0.832669 0.480469 +vt 0.778884 0.503906 +vt 0.778884 0.492188 +vt 0.778884 0.480469 +vt 0.778884 0.468750 +vt 0.778884 0.550781 +vt 0.778884 0.539062 +vt 0.778884 0.527344 +vt 0.778884 0.515625 +vt 0.778884 0.562500 +vt 0.832669 0.550781 +vt 0.832669 0.527344 +vt 0.832669 0.515625 +vt 0.832669 0.492188 +vt 0.832669 0.562500 +vt 0.832669 0.539062 +vt 0.832669 0.503906 +vt 0.832669 0.480469 +vt 0.778884 0.503906 +vt 0.778884 0.492188 +vt 0.778884 0.480469 +vt 0.778884 0.468750 +vt 0.778884 0.550781 +vt 0.778884 0.539062 +vt 0.778884 0.527344 +vt 0.778884 0.515625 +vt 0.778884 0.562500 +vt 0.832669 0.550781 +vt 0.832669 0.527344 +vt 0.832669 0.515625 +vt 0.832669 0.492188 +vt 0.832669 0.562500 +vt 0.832669 0.539062 +vt 0.832669 0.503906 +vt 0.832669 0.480469 +vt 0.778884 0.503906 +vt 0.778884 0.492188 +vt 0.778884 0.480469 +vt 0.778884 0.468750 +vt 0.778884 0.550781 +vt 0.778884 0.539062 +vt 0.778884 0.527344 +vt 0.778884 0.515625 +vt 0.778884 0.562500 +vt 0.832669 0.550781 +vt 0.832669 0.527344 +vt 0.832669 0.515625 +vt 0.832669 0.492188 +vt 0.832669 0.562500 +vt 0.832669 0.539062 +vt 0.832669 0.503906 +vt 0.832669 0.480469 +vt 0.778884 0.503906 +vt 0.778884 0.492188 +vt 0.778884 0.480469 +vt 0.778884 0.468750 +vt 0.778884 0.550781 +vt 0.778884 0.539062 +vt 0.778884 0.527344 +vt 0.778884 0.515625 +vt 0.778884 0.562500 +vt 0.832669 0.550781 +vt 0.832669 0.527344 +vt 0.832669 0.515625 +vt 0.832669 0.492188 +vt 0.832669 0.562500 +vt 0.832669 0.539062 +vt 0.832669 0.503906 +vt 0.832669 0.480469 +vt 0.778884 0.503906 +vt 0.778884 0.492188 +vt 0.778884 0.480469 +vt 0.778884 0.468750 +vt 0.778884 0.550781 +vt 0.778884 0.539062 +vt 0.778884 0.527344 +vt 0.778884 0.515625 +vt 0.778884 0.562500 +vt 0.832669 0.550781 +vt 0.832669 0.527344 +vt 0.832669 0.515625 +vt 0.832669 0.492188 +vt 0.832669 0.562500 +vt 0.832669 0.539062 +vt 0.832669 0.503906 +vt 0.832669 0.480469 +vt 0.778884 0.503906 +vt 0.778884 0.492188 +vt 0.778884 0.480469 +vt 0.778884 0.468750 +vt 0.778884 0.550781 +vt 0.778884 0.539062 +vt 0.778884 0.527344 +vt 0.778884 0.515625 +vt 0.778884 0.562500 +vt 0.832669 0.550781 +vt 0.832669 0.527344 +vt 0.832669 0.515625 +vt 0.832669 0.492188 +vt 0.832669 0.562500 +vt 0.832669 0.539062 +vt 0.832669 0.503906 +vt 0.832669 0.480469 +vt 0.778884 0.503906 +vt 0.778884 0.492188 +vt 0.778884 0.480469 +vt 0.778884 0.468750 +vt 0.778884 0.550781 +vt 0.778884 0.539062 +vt 0.778884 0.527344 +vt 0.778884 0.515625 +vt 0.778884 0.562500 +vt 0.832669 0.550781 +vt 0.832669 0.527344 +vt 0.832669 0.515625 +vt 0.832669 0.492188 +vt 0.832669 0.562500 +vt 0.832669 0.539062 +vt 0.832669 0.503906 +vt 0.832669 0.480469 +vt 0.778884 0.503906 +vt 0.778884 0.492188 +vt 0.778884 0.480469 +vt 0.778884 0.468750 +vt 0.778884 0.550781 +vt 0.778884 0.539062 +vt 0.778884 0.527344 +vt 0.778884 0.515625 +vt 0.778884 0.562500 +vt 0.832669 0.550781 +vt 0.832669 0.527344 +vt 0.832669 0.515625 +vt 0.832669 0.492188 +vt 0.832669 0.562500 +vt 0.832669 0.539062 +vt 0.832669 0.503906 +vt 0.832669 0.480469 +vt 0.778884 0.503906 +vt 0.778884 0.492188 +vt 0.778884 0.480469 +vt 0.778884 0.468750 +vt 0.778884 0.550781 +vt 0.778884 0.539062 +vt 0.778884 0.527344 +vt 0.778884 0.515625 +vt 0.778884 0.562500 +vt 0.832669 0.550781 +vt 0.832669 0.527344 +vt 0.832669 0.515625 +vt 0.832669 0.492188 +vt 0.832669 0.562500 +vt 0.832669 0.539062 +vt 0.832669 0.503906 +vt 0.832669 0.480469 +vt 0.778884 0.503906 +vt 0.778884 0.492188 +vt 0.778884 0.480469 +vt 0.778884 0.468750 +vt 0.778884 0.550781 +vt 0.778884 0.539062 +vt 0.778884 0.527344 +vt 0.778884 0.515625 +vt 0.778884 0.562500 +vt 0.832669 0.550781 +vt 0.832669 0.527344 +vt 0.832669 0.515625 +vt 0.832669 0.492188 +vt 0.832669 0.562500 +vt 0.832669 0.539062 +vt 0.832669 0.503906 +vt 0.832669 0.480469 +vt 0.778884 0.503906 +vt 0.778884 0.492188 +vt 0.778884 0.480469 +vt 0.778884 0.468750 +vt 0.778884 0.550781 +vt 0.778884 0.539062 +vt 0.778884 0.527344 +vt 0.778884 0.515625 +vt 0.778884 0.562500 +vt 0.832669 0.550781 +vt 0.832669 0.527344 +vt 0.832669 0.515625 +vt 0.832669 0.492188 +vt 0.832669 0.562500 +vt 0.832669 0.539062 +vt 0.832669 0.503906 +vt 0.832669 0.480469 +vt 0.778884 0.503906 +vt 0.778884 0.492188 +vt 0.778884 0.480469 +vt 0.778884 0.468750 +vt 0.778884 0.550781 +vt 0.778884 0.539062 +vt 0.778884 0.527344 +vt 0.778884 0.515625 +vt 0.778884 0.562500 +vt 0.832669 0.550781 +vt 0.832669 0.527344 +vt 0.832669 0.515625 +vt 0.832669 0.492188 +vt 0.832669 0.562500 +vt 0.832669 0.539062 +vt 0.832669 0.503906 +vt 0.832669 0.480469 +vt 0.832669 0.468750 +vt 0.832669 0.468750 +vt 0.832669 0.468750 +vt 0.832669 0.468750 +vt 0.832669 0.468750 +vt 0.832669 0.468750 +vt 0.832669 0.468750 +vt 0.832669 0.468750 +vt 0.832669 0.468750 +vt 0.832669 0.468750 +vt 0.832669 0.468750 +vt 0.832669 0.468750 +vt 0.832669 0.468750 +vt 0.832669 0.468750 +vt 0.832669 0.468750 +vt 0.832669 0.468750 +vt 0.832669 0.468750 +vt 0.832669 0.468750 +vt 0.832669 0.468750 +vt 0.832669 0.468750 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.1951 0.9808 0.0000 +vn 0.1951 -0.9808 0.0000 +vn -0.5556 0.8315 0.0000 +vn 0.5556 -0.8315 0.0000 +vn -0.8315 0.5556 0.0000 +vn 0.8315 -0.5556 0.0000 +vn -0.9808 0.1951 0.0000 +vn 0.9808 -0.1951 0.0000 +vn -0.9808 -0.1951 0.0000 +vn 0.9808 0.1951 0.0000 +vn -0.8315 -0.5556 0.0000 +vn 0.8315 0.5556 0.0000 +vn -0.5556 -0.8315 0.0000 +vn 0.5556 0.8315 0.0000 +vn -0.1951 -0.9808 0.0000 +vn -0.1951 0.9808 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.0000 1.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.9511 -0.3090 0.0000 +vn 0.8910 0.4540 0.0000 +vn -0.3090 -0.9511 0.0000 +vn 0.4540 -0.8910 0.0000 +vn -0.9511 0.3090 0.0000 +vn -0.8910 -0.4540 0.0000 +vn 0.3090 0.9511 0.0000 +vn -0.4540 0.8910 0.0000 +vn 0.8090 -0.5878 0.0000 +vn 0.9877 0.1564 0.0000 +vn -0.5878 -0.8090 0.0000 +vn 0.1564 -0.9877 0.0000 +vn -0.8090 0.5878 0.0000 +vn -0.9877 -0.1564 0.0000 +vn 0.5878 0.8090 0.0000 +vn -0.1564 0.9877 0.0000 +vn 0.5878 -0.8090 0.0000 +vn 0.9877 -0.1564 0.0000 +vn -0.8090 -0.5878 0.0000 +vn -0.1564 -0.9877 0.0000 +vn -0.5878 0.8090 0.0000 +vn -0.9877 0.1564 0.0000 +vn 0.8090 0.5878 0.0000 +vn 0.1564 0.9877 0.0000 +vn 0.3090 -0.9511 0.0000 +vn 0.8910 -0.4540 0.0000 +vn -0.9511 -0.3090 0.0000 +vn -0.4540 -0.8910 0.0000 +vn -0.3090 0.9511 0.0000 +vn -0.8910 0.4540 0.0000 +vn 0.9511 0.3090 0.0000 +vn 0.4540 0.8910 0.0000 +s off +f 261/521/19 263/522/19 257/523/19 +f 279/524/19 272/525/19 271/526/19 +f 272/525/19 273/527/19 265/528/19 +f 265/528/19 274/529/19 266/530/19 +f 266/530/19 275/531/19 267/532/19 +f 275/531/19 268/533/19 267/532/19 +f 276/534/19 269/535/19 268/533/19 +f 277/536/19 270/537/19 269/538/19 +f 270/537/19 279/524/19 271/526/19 +f 284/539/20 283/540/20 287/541/20 +f 320/542/21 289/543/21 304/544/21 +f 313/545/22 298/546/22 297/547/22 +f 306/548/23 291/549/23 290/550/23 +f 314/551/24 299/552/24 298/546/24 +f 307/553/25 292/554/25 291/549/25 +f 299/552/26 316/555/26 300/556/26 +f 308/557/27 293/558/27 292/554/27 +f 316/555/28 301/559/28 300/556/28 +f 309/560/29 294/561/29 293/558/29 +f 317/562/30 302/563/30 301/559/30 +f 310/564/31 295/565/31 294/561/31 +f 302/563/32 319/566/32 303/567/32 +f 311/568/33 296/569/33 295/565/33 +f 319/566/34 304/544/34 303/567/34 +f 312/570/35 297/571/35 296/569/35 +f 305/572/36 290/550/36 289/543/36 +f 325/573/19 327/574/19 321/575/19 +f 343/576/19 336/577/19 335/578/19 +f 336/577/19 337/579/19 329/580/19 +f 329/580/19 338/581/19 330/582/19 +f 330/582/19 339/583/19 331/584/19 +f 339/583/19 332/585/19 331/584/19 +f 340/586/19 333/587/19 332/585/19 +f 341/588/19 334/589/19 333/590/19 +f 334/589/19 343/576/19 335/578/19 +f 345/591/20 351/592/20 349/593/20 +f 357/594/19 359/595/19 353/596/19 +f 375/597/19 368/598/19 367/599/19 +f 368/598/19 369/600/19 361/601/19 +f 361/601/19 370/602/19 362/603/19 +f 362/603/19 371/604/19 363/605/19 +f 371/604/19 364/606/19 363/605/19 +f 372/607/19 365/608/19 364/606/19 +f 373/609/19 366/610/19 365/611/19 +f 374/612/19 367/599/19 366/610/19 +f 380/613/20 379/614/20 383/615/20 +f 387/616/19 389/617/19 391/618/19 +f 407/619/19 400/620/19 399/621/19 +f 400/620/19 401/622/19 393/623/19 +f 393/623/19 402/624/19 394/625/19 +f 394/625/19 403/626/19 395/627/19 +f 403/626/19 396/628/19 395/627/19 +f 404/629/19 397/630/19 396/628/19 +f 405/631/19 398/632/19 397/633/19 +f 406/634/19 399/621/19 398/632/19 +f 412/635/20 411/636/20 415/637/20 +f 419/638/19 421/639/19 423/640/19 +f 439/641/19 432/642/19 431/643/19 +f 432/642/19 433/644/19 425/645/19 +f 425/645/19 434/646/19 426/647/19 +f 426/647/19 435/648/19 427/649/19 +f 435/648/19 428/650/19 427/649/19 +f 436/651/19 429/652/19 428/650/19 +f 429/653/19 438/654/19 430/655/19 +f 430/655/19 439/641/19 431/643/19 +f 444/656/20 443/657/20 447/658/20 +f 451/659/19 453/660/19 455/661/19 +f 471/662/19 464/663/19 463/664/19 +f 464/663/19 465/665/19 457/666/19 +f 457/666/19 466/667/19 458/668/19 +f 458/668/19 467/669/19 459/670/19 +f 467/669/19 460/671/19 459/670/19 +f 468/672/19 461/673/19 460/671/19 +f 461/674/19 470/675/19 462/676/19 +f 462/676/19 471/662/19 463/664/19 +f 475/677/20 473/678/20 479/679/20 +f 485/680/19 487/681/19 481/682/19 +f 503/683/19 496/684/19 495/685/19 +f 496/684/19 497/686/19 489/687/19 +f 489/687/19 498/688/19 490/689/19 +f 490/689/19 499/690/19 491/691/19 +f 499/690/19 492/692/19 491/691/19 +f 500/693/19 493/694/19 492/692/19 +f 501/695/19 494/696/19 493/697/19 +f 494/696/19 503/683/19 495/685/19 +f 507/698/20 505/699/20 511/700/20 +f 513/701/19 515/702/19 517/703/19 +f 535/704/19 528/705/19 527/706/19 +f 528/705/19 529/707/19 521/708/19 +f 521/708/19 530/709/19 522/710/19 +f 522/710/19 531/711/19 523/712/19 +f 531/711/19 524/713/19 523/712/19 +f 532/714/19 525/715/19 524/713/19 +f 525/716/19 534/717/19 526/718/19 +f 526/718/19 535/704/19 527/706/19 +f 540/719/20 539/720/20 543/721/20 +f 547/722/19 549/723/19 551/724/19 +f 567/725/19 560/726/19 559/727/19 +f 560/726/19 561/728/19 553/729/19 +f 553/729/19 562/730/19 554/731/19 +f 554/731/19 563/732/19 555/733/19 +f 563/732/19 556/734/19 555/733/19 +f 564/735/19 557/736/19 556/734/19 +f 565/737/19 558/738/19 557/739/19 +f 566/740/19 559/727/19 558/738/19 +f 571/741/20 569/742/20 575/743/20 +f 579/744/19 581/745/19 583/746/19 +f 599/747/19 592/748/19 591/749/19 +f 592/748/19 593/750/19 585/751/19 +f 585/751/19 594/752/19 586/753/19 +f 586/753/19 595/754/19 587/755/19 +f 595/754/19 588/756/19 587/755/19 +f 596/757/19 589/758/19 588/756/19 +f 597/759/19 590/760/19 589/761/19 +f 590/760/19 599/747/19 591/749/19 +f 604/762/20 603/763/20 607/764/20 +f 615/765/19 616/766/19 609/767/19 +f 631/768/19 624/769/19 623/770/19 +f 624/769/19 625/771/19 617/772/19 +f 617/772/19 626/773/19 618/774/19 +f 618/774/19 627/775/19 619/776/19 +f 627/775/19 620/777/19 619/776/19 +f 628/778/19 621/779/19 620/777/19 +f 621/780/19 630/781/19 622/782/19 +f 622/782/19 631/768/19 623/770/19 +f 635/783/20 633/784/20 639/785/20 +f 645/786/19 647/787/19 641/788/19 +f 663/789/19 656/790/19 655/791/19 +f 656/790/19 657/792/19 649/793/19 +f 649/793/19 658/794/19 650/795/19 +f 650/795/19 659/796/19 651/797/19 +f 659/796/19 652/798/19 651/797/19 +f 660/799/19 653/800/19 652/798/19 +f 653/801/19 662/802/19 654/803/19 +f 654/803/19 663/789/19 655/791/19 +f 667/804/20 665/805/20 671/806/20 +f 673/807/19 675/808/19 677/809/19 +f 695/810/19 688/811/19 687/812/19 +f 688/811/19 689/813/19 681/814/19 +f 681/814/19 690/815/19 682/816/19 +f 682/816/19 691/817/19 683/818/19 +f 691/817/19 684/819/19 683/818/19 +f 692/820/19 685/821/19 684/819/19 +f 685/822/19 694/823/19 686/824/19 +f 686/824/19 695/810/19 687/812/19 +f 700/825/20 699/826/20 703/827/20 +f 705/828/19 707/829/19 709/830/19 +f 727/831/19 720/832/19 719/833/19 +f 720/832/19 721/834/19 713/835/19 +f 713/835/19 722/836/19 714/837/19 +f 714/837/19 723/838/19 715/839/19 +f 723/838/19 716/840/19 715/839/19 +f 724/841/19 717/842/19 716/840/19 +f 725/843/19 718/844/19 717/845/19 +f 726/846/19 719/833/19 718/844/19 +f 731/847/20 729/848/20 735/849/20 +f 739/850/19 741/851/19 743/852/19 +f 759/853/19 752/854/19 751/855/19 +f 752/854/19 753/856/19 745/857/19 +f 745/857/19 754/858/19 746/859/19 +f 746/859/19 755/860/19 747/861/19 +f 755/860/19 748/862/19 747/861/19 +f 756/863/19 749/864/19 748/862/19 +f 757/865/19 750/866/19 749/867/19 +f 750/866/19 759/853/19 751/855/19 +f 764/868/20 763/869/20 767/870/20 +f 771/871/19 773/872/19 775/873/19 +f 791/874/19 784/875/19 783/876/19 +f 784/875/19 785/877/19 777/878/19 +f 777/878/19 786/879/19 778/880/19 +f 778/880/19 787/881/19 779/882/19 +f 787/881/19 780/883/19 779/882/19 +f 788/884/19 781/885/19 780/883/19 +f 781/886/19 790/887/19 782/888/19 +f 782/888/19 791/874/19 783/876/19 +f 795/889/20 793/890/20 799/891/20 +f 805/892/19 807/893/19 801/894/19 +f 823/895/19 816/896/19 815/897/19 +f 816/896/19 817/898/19 809/899/19 +f 809/899/19 818/900/19 810/901/19 +f 810/901/19 819/902/19 811/903/19 +f 819/902/19 812/904/19 811/903/19 +f 820/905/19 813/906/19 812/904/19 +f 813/907/19 822/908/19 814/909/19 +f 814/909/19 823/895/19 815/897/19 +f 827/910/20 825/911/20 831/912/20 +f 833/913/19 835/914/19 837/915/19 +f 855/916/19 848/917/19 847/918/19 +f 848/917/19 849/919/19 841/920/19 +f 841/920/19 850/921/19 842/922/19 +f 842/922/19 851/923/19 843/924/19 +f 851/923/19 844/925/19 843/924/19 +f 852/926/19 845/927/19 844/925/19 +f 845/928/19 854/929/19 846/930/19 +f 854/929/19 847/918/19 846/930/19 +f 861/931/20 860/932/20 859/933/20 +f 867/934/19 869/935/19 871/936/19 +f 887/937/19 880/938/19 879/939/19 +f 880/938/19 881/940/19 873/941/19 +f 873/941/19 882/942/19 874/943/19 +f 874/943/19 883/944/19 875/945/19 +f 883/944/19 876/946/19 875/945/19 +f 884/947/19 877/948/19 876/946/19 +f 885/949/19 878/950/19 877/951/19 +f 886/952/19 879/939/19 878/950/19 +f 891/953/20 889/954/20 895/955/20 +f 899/956/19 901/957/19 903/958/19 +f 919/959/19 912/960/19 911/961/19 +f 920/962/19 905/963/19 912/960/19 +f 905/963/19 914/964/19 906/965/19 +f 906/965/19 915/966/19 907/967/19 +f 915/966/19 908/968/19 907/967/19 +f 916/969/19 909/970/19 908/968/19 +f 917/971/19 910/972/19 909/973/19 +f 910/972/19 919/959/19 911/961/19 +f 924/974/20 923/975/20 927/976/20 +f 257/523/19 258/977/19 259/978/19 +f 259/978/19 260/979/19 261/521/19 +f 261/521/19 262/980/19 263/522/19 +f 263/522/19 264/981/19 257/523/19 +f 257/523/19 259/978/19 261/521/19 +f 279/524/19 280/982/19 272/525/19 +f 272/525/19 280/982/19 273/527/19 +f 265/528/19 273/527/19 274/529/19 +f 266/530/19 274/529/19 275/531/19 +f 275/531/19 276/534/19 268/533/19 +f 276/534/19 277/983/19 269/535/19 +f 277/536/19 278/984/19 270/537/19 +f 270/537/19 278/984/19 279/524/19 +f 283/540/20 282/985/20 287/541/20 +f 282/985/20 281/986/20 287/541/20 +f 281/986/20 288/987/20 287/541/20 +f 287/541/20 286/988/20 285/989/20 +f 285/989/20 284/539/20 287/541/20 +f 320/542/21 305/572/21 289/543/21 +f 313/545/22 314/551/22 298/546/22 +f 306/548/23 307/553/23 291/549/23 +f 314/551/24 315/990/24 299/552/24 +f 307/553/25 308/557/25 292/554/25 +f 299/552/26 315/990/26 316/555/26 +f 308/557/27 309/560/27 293/558/27 +f 316/555/28 317/562/28 301/559/28 +f 309/560/29 310/564/29 294/561/29 +f 317/562/30 318/991/30 302/563/30 +f 310/564/31 311/568/31 295/565/31 +f 302/563/32 318/991/32 319/566/32 +f 311/568/33 312/570/33 296/569/33 +f 319/566/34 320/542/34 304/544/34 +f 312/570/35 313/992/35 297/571/35 +f 305/572/36 306/548/36 290/550/36 +f 321/575/19 322/993/19 323/994/19 +f 323/994/19 324/995/19 325/573/19 +f 325/573/19 326/996/19 327/574/19 +f 327/574/19 328/997/19 321/575/19 +f 321/575/19 323/994/19 325/573/19 +f 343/576/19 344/998/19 336/577/19 +f 336/577/19 344/998/19 337/579/19 +f 329/580/19 337/579/19 338/581/19 +f 330/582/19 338/581/19 339/583/19 +f 339/583/19 340/586/19 332/585/19 +f 340/586/19 341/999/19 333/587/19 +f 341/588/19 342/1000/19 334/589/19 +f 334/589/19 342/1000/19 343/576/19 +f 347/1001/20 346/1002/20 345/591/20 +f 345/591/20 352/1003/20 351/592/20 +f 351/592/20 350/1004/20 349/593/20 +f 349/593/20 348/1005/20 347/1001/20 +f 347/1001/20 345/591/20 349/593/20 +f 353/596/19 354/1006/19 355/1007/19 +f 355/1007/19 356/1008/19 353/596/19 +f 356/1008/19 357/594/19 353/596/19 +f 357/594/19 358/1009/19 359/595/19 +f 359/595/19 360/1010/19 353/596/19 +f 375/597/19 376/1011/19 368/598/19 +f 368/598/19 376/1011/19 369/600/19 +f 361/601/19 369/600/19 370/602/19 +f 362/603/19 370/602/19 371/604/19 +f 371/604/19 372/607/19 364/606/19 +f 372/607/19 373/1012/19 365/608/19 +f 373/609/19 374/612/19 366/610/19 +f 374/612/19 375/597/19 367/599/19 +f 379/614/20 378/1013/20 377/1014/20 +f 377/1014/20 384/1015/20 379/614/20 +f 384/1015/20 383/615/20 379/614/20 +f 383/615/20 382/1016/20 381/1017/20 +f 381/1017/20 380/613/20 383/615/20 +f 385/1018/19 386/1019/19 387/616/19 +f 387/616/19 388/1020/19 389/617/19 +f 389/617/19 390/1021/19 391/618/19 +f 391/618/19 392/1022/19 385/1018/19 +f 385/1018/19 387/616/19 391/618/19 +f 407/619/19 408/1023/19 400/620/19 +f 400/620/19 408/1023/19 401/622/19 +f 393/623/19 401/622/19 402/624/19 +f 394/625/19 402/624/19 403/626/19 +f 403/626/19 404/629/19 396/628/19 +f 404/629/19 405/1024/19 397/630/19 +f 405/631/19 406/634/19 398/632/19 +f 406/634/19 407/619/19 399/621/19 +f 411/636/20 410/1025/20 415/637/20 +f 410/1025/20 409/1026/20 415/637/20 +f 409/1026/20 416/1027/20 415/637/20 +f 415/637/20 414/1028/20 413/1029/20 +f 413/1029/20 412/635/20 415/637/20 +f 417/1030/19 418/1031/19 419/638/19 +f 419/638/19 420/1032/19 421/639/19 +f 421/639/19 422/1033/19 423/640/19 +f 423/640/19 424/1034/19 417/1030/19 +f 417/1030/19 419/638/19 423/640/19 +f 439/641/19 440/1035/19 432/642/19 +f 432/642/19 440/1035/19 433/644/19 +f 425/645/19 433/644/19 434/646/19 +f 426/647/19 434/646/19 435/648/19 +f 435/648/19 436/651/19 428/650/19 +f 436/651/19 437/1036/19 429/652/19 +f 429/653/19 437/1037/19 438/654/19 +f 430/655/19 438/654/19 439/641/19 +f 443/657/20 442/1038/20 447/658/20 +f 442/1038/20 441/1039/20 447/658/20 +f 441/1039/20 448/1040/20 447/658/20 +f 447/658/20 446/1041/20 445/1042/20 +f 445/1042/20 444/656/20 447/658/20 +f 449/1043/19 450/1044/19 451/659/19 +f 451/659/19 452/1045/19 453/660/19 +f 453/660/19 454/1046/19 455/661/19 +f 455/661/19 456/1047/19 449/1043/19 +f 449/1043/19 451/659/19 455/661/19 +f 471/662/19 472/1048/19 464/663/19 +f 464/663/19 472/1048/19 465/665/19 +f 457/666/19 465/665/19 466/667/19 +f 458/668/19 466/667/19 467/669/19 +f 467/669/19 468/672/19 460/671/19 +f 468/672/19 469/1049/19 461/673/19 +f 461/674/19 469/1050/19 470/675/19 +f 462/676/19 470/675/19 471/662/19 +f 475/677/20 474/1051/20 473/678/20 +f 473/678/20 480/1052/20 479/679/20 +f 479/679/20 478/1053/20 477/1054/20 +f 477/1054/20 476/1055/20 479/679/20 +f 476/1055/20 475/677/20 479/679/20 +f 481/682/19 482/1056/19 483/1057/19 +f 483/1057/19 484/1058/19 485/680/19 +f 485/680/19 486/1059/19 487/681/19 +f 487/681/19 488/1060/19 481/682/19 +f 481/682/19 483/1057/19 485/680/19 +f 503/683/19 504/1061/19 496/684/19 +f 496/684/19 504/1061/19 497/686/19 +f 489/687/19 497/686/19 498/688/19 +f 490/689/19 498/688/19 499/690/19 +f 499/690/19 500/693/19 492/692/19 +f 500/693/19 501/1062/19 493/694/19 +f 501/695/19 502/1063/19 494/696/19 +f 494/696/19 502/1063/19 503/683/19 +f 507/698/20 506/1064/20 505/699/20 +f 505/699/20 512/1065/20 511/700/20 +f 511/700/20 510/1066/20 509/1067/20 +f 509/1067/20 508/1068/20 511/700/20 +f 508/1068/20 507/698/20 511/700/20 +f 513/701/19 514/1069/19 515/702/19 +f 515/702/19 516/1070/19 517/703/19 +f 517/703/19 518/1071/19 519/1072/19 +f 519/1072/19 520/1073/19 517/703/19 +f 520/1073/19 513/701/19 517/703/19 +f 535/704/19 536/1074/19 528/705/19 +f 528/705/19 536/1074/19 529/707/19 +f 521/708/19 529/707/19 530/709/19 +f 522/710/19 530/709/19 531/711/19 +f 531/711/19 532/714/19 524/713/19 +f 532/714/19 533/1075/19 525/715/19 +f 525/716/19 533/1076/19 534/717/19 +f 526/718/19 534/717/19 535/704/19 +f 539/720/20 538/1077/20 537/1078/20 +f 537/1078/20 544/1079/20 539/720/20 +f 544/1079/20 543/721/20 539/720/20 +f 543/721/20 542/1080/20 541/1081/20 +f 541/1081/20 540/719/20 543/721/20 +f 545/1082/19 546/1083/19 547/722/19 +f 547/722/19 548/1084/19 549/723/19 +f 549/723/19 550/1085/19 551/724/19 +f 551/724/19 552/1086/19 545/1082/19 +f 545/1082/19 547/722/19 551/724/19 +f 567/725/19 568/1087/19 560/726/19 +f 560/726/19 568/1087/19 561/728/19 +f 553/729/19 561/728/19 562/730/19 +f 554/731/19 562/730/19 563/732/19 +f 563/732/19 564/735/19 556/734/19 +f 564/735/19 565/1088/19 557/736/19 +f 565/737/19 566/740/19 558/738/19 +f 566/740/19 567/725/19 559/727/19 +f 571/741/20 570/1089/20 569/742/20 +f 569/742/20 576/1090/20 575/743/20 +f 575/743/20 574/1091/20 573/1092/20 +f 573/1092/20 572/1093/20 575/743/20 +f 572/1093/20 571/741/20 575/743/20 +f 577/1094/19 578/1095/19 579/744/19 +f 579/744/19 580/1096/19 581/745/19 +f 581/745/19 582/1097/19 583/746/19 +f 583/746/19 584/1098/19 577/1094/19 +f 577/1094/19 579/744/19 583/746/19 +f 599/747/19 600/1099/19 592/748/19 +f 592/748/19 600/1099/19 593/750/19 +f 585/751/19 593/750/19 594/752/19 +f 586/753/19 594/752/19 595/754/19 +f 595/754/19 596/757/19 588/756/19 +f 596/757/19 597/1100/19 589/758/19 +f 597/759/19 598/1101/19 590/760/19 +f 590/760/19 598/1101/19 599/747/19 +f 603/763/20 602/1102/20 607/764/20 +f 602/1102/20 601/1103/20 607/764/20 +f 601/1103/20 608/1104/20 607/764/20 +f 607/764/20 606/1105/20 605/1106/20 +f 605/1106/20 604/762/20 607/764/20 +f 609/767/19 610/1107/19 611/1108/19 +f 611/1108/19 612/1109/19 609/767/19 +f 612/1109/19 613/1110/19 609/767/19 +f 613/1110/19 614/1111/19 609/767/19 +f 614/1111/19 615/765/19 609/767/19 +f 631/768/19 632/1112/19 624/769/19 +f 624/769/19 632/1112/19 625/771/19 +f 617/772/19 625/771/19 626/773/19 +f 618/774/19 626/773/19 627/775/19 +f 627/775/19 628/778/19 620/777/19 +f 628/778/19 629/1113/19 621/779/19 +f 621/780/19 629/1114/19 630/781/19 +f 622/782/19 630/781/19 631/768/19 +f 635/783/20 634/1115/20 633/784/20 +f 633/784/20 640/1116/20 639/785/20 +f 639/785/20 638/1117/20 637/1118/20 +f 637/1118/20 636/1119/20 639/785/20 +f 636/1119/20 635/783/20 639/785/20 +f 641/788/19 642/1120/19 643/1121/19 +f 643/1121/19 644/1122/19 645/786/19 +f 645/786/19 646/1123/19 647/787/19 +f 647/787/19 648/1124/19 641/788/19 +f 641/788/19 643/1121/19 645/786/19 +f 663/789/19 664/1125/19 656/790/19 +f 656/790/19 664/1125/19 657/792/19 +f 649/793/19 657/792/19 658/794/19 +f 650/795/19 658/794/19 659/796/19 +f 659/796/19 660/799/19 652/798/19 +f 660/799/19 661/1126/19 653/800/19 +f 653/801/19 661/1127/19 662/802/19 +f 654/803/19 662/802/19 663/789/19 +f 667/804/20 666/1128/20 665/805/20 +f 665/805/20 672/1129/20 671/806/20 +f 671/806/20 670/1130/20 669/1131/20 +f 669/1131/20 668/1132/20 671/806/20 +f 668/1132/20 667/804/20 671/806/20 +f 673/807/19 674/1133/19 675/808/19 +f 675/808/19 676/1134/19 677/809/19 +f 677/809/19 678/1135/19 679/1136/19 +f 679/1136/19 680/1137/19 677/809/19 +f 680/1137/19 673/807/19 677/809/19 +f 695/810/19 696/1138/19 688/811/19 +f 688/811/19 696/1138/19 689/813/19 +f 681/814/19 689/813/19 690/815/19 +f 682/816/19 690/815/19 691/817/19 +f 691/817/19 692/820/19 684/819/19 +f 692/820/19 693/1139/19 685/821/19 +f 685/822/19 693/1140/19 694/823/19 +f 686/824/19 694/823/19 695/810/19 +f 699/826/20 698/1141/20 697/1142/20 +f 697/1142/20 704/1143/20 699/826/20 +f 704/1143/20 703/827/20 699/826/20 +f 703/827/20 702/1144/20 701/1145/20 +f 701/1145/20 700/825/20 703/827/20 +f 705/828/19 706/1146/19 707/829/19 +f 707/829/19 708/1147/19 709/830/19 +f 709/830/19 710/1148/19 705/828/19 +f 710/1148/19 711/1149/19 705/828/19 +f 711/1149/19 712/1150/19 705/828/19 +f 727/831/19 728/1151/19 720/832/19 +f 720/832/19 728/1151/19 721/834/19 +f 713/835/19 721/834/19 722/836/19 +f 714/837/19 722/836/19 723/838/19 +f 723/838/19 724/841/19 716/840/19 +f 724/841/19 725/1152/19 717/842/19 +f 725/843/19 726/846/19 718/844/19 +f 726/846/19 727/831/19 719/833/19 +f 731/847/20 730/1153/20 729/848/20 +f 729/848/20 736/1154/20 735/849/20 +f 735/849/20 734/1155/20 733/1156/20 +f 733/1156/20 732/1157/20 735/849/20 +f 732/1157/20 731/847/20 735/849/20 +f 737/1158/19 738/1159/19 739/850/19 +f 739/850/19 740/1160/19 741/851/19 +f 741/851/19 742/1161/19 743/852/19 +f 743/852/19 744/1162/19 737/1158/19 +f 737/1158/19 739/850/19 743/852/19 +f 759/853/19 760/1163/19 752/854/19 +f 752/854/19 760/1163/19 753/856/19 +f 745/857/19 753/856/19 754/858/19 +f 746/859/19 754/858/19 755/860/19 +f 755/860/19 756/863/19 748/862/19 +f 756/863/19 757/1164/19 749/864/19 +f 757/865/19 758/1165/19 750/866/19 +f 750/866/19 758/1165/19 759/853/19 +f 763/869/20 762/1166/20 767/870/20 +f 762/1166/20 761/1167/20 767/870/20 +f 761/1167/20 768/1168/20 767/870/20 +f 767/870/20 766/1169/20 765/1170/20 +f 765/1170/20 764/868/20 767/870/20 +f 769/1171/19 770/1172/19 771/871/19 +f 771/871/19 772/1173/19 773/872/19 +f 773/872/19 774/1174/19 775/873/19 +f 775/873/19 776/1175/19 769/1171/19 +f 769/1171/19 771/871/19 775/873/19 +f 791/874/19 792/1176/19 784/875/19 +f 784/875/19 792/1176/19 785/877/19 +f 777/878/19 785/877/19 786/879/19 +f 778/880/19 786/879/19 787/881/19 +f 787/881/19 788/884/19 780/883/19 +f 788/884/19 789/1177/19 781/885/19 +f 781/886/19 789/1178/19 790/887/19 +f 782/888/19 790/887/19 791/874/19 +f 795/889/20 794/1179/20 793/890/20 +f 793/890/20 800/1180/20 799/891/20 +f 799/891/20 798/1181/20 797/1182/20 +f 797/1182/20 796/1183/20 799/891/20 +f 796/1183/20 795/889/20 799/891/20 +f 801/894/19 802/1184/19 803/1185/19 +f 803/1185/19 804/1186/19 805/892/19 +f 805/892/19 806/1187/19 807/893/19 +f 807/893/19 808/1188/19 801/894/19 +f 801/894/19 803/1185/19 805/892/19 +f 823/895/19 824/1189/19 816/896/19 +f 816/896/19 824/1189/19 817/898/19 +f 809/899/19 817/898/19 818/900/19 +f 810/901/19 818/900/19 819/902/19 +f 819/902/19 820/905/19 812/904/19 +f 820/905/19 821/1190/19 813/906/19 +f 813/907/19 821/1191/19 822/908/19 +f 814/909/19 822/908/19 823/895/19 +f 827/910/20 826/1192/20 825/911/20 +f 825/911/20 832/1193/20 831/912/20 +f 831/912/20 830/1194/20 829/1195/20 +f 829/1195/20 828/1196/20 831/912/20 +f 828/1196/20 827/910/20 831/912/20 +f 833/913/19 834/1197/19 835/914/19 +f 835/914/19 836/1198/19 837/915/19 +f 837/915/19 838/1199/19 839/1200/19 +f 839/1200/19 840/1201/19 837/915/19 +f 840/1201/19 833/913/19 837/915/19 +f 855/916/19 856/1202/19 848/917/19 +f 848/917/19 856/1202/19 849/919/19 +f 841/920/19 849/919/19 850/921/19 +f 842/922/19 850/921/19 851/923/19 +f 851/923/19 852/926/19 844/925/19 +f 852/926/19 853/1203/19 845/927/19 +f 845/928/19 853/1204/19 854/929/19 +f 854/929/19 855/916/19 847/918/19 +f 859/933/20 858/1205/20 857/1206/20 +f 857/1206/20 864/1207/20 859/933/20 +f 864/1207/20 863/1208/20 859/933/20 +f 863/1208/20 862/1209/20 859/933/20 +f 862/1209/20 861/931/20 859/933/20 +f 865/1210/19 866/1211/19 867/934/19 +f 867/934/19 868/1212/19 869/935/19 +f 869/935/19 870/1213/19 871/936/19 +f 871/936/19 872/1214/19 865/1210/19 +f 865/1210/19 867/934/19 871/936/19 +f 887/937/19 888/1215/19 880/938/19 +f 880/938/19 888/1215/19 881/940/19 +f 873/941/19 881/940/19 882/942/19 +f 874/943/19 882/942/19 883/944/19 +f 883/944/19 884/947/19 876/946/19 +f 884/947/19 885/1216/19 877/948/19 +f 885/949/19 886/952/19 878/950/19 +f 886/952/19 887/937/19 879/939/19 +f 891/953/20 890/1217/20 889/954/20 +f 889/954/20 896/1218/20 895/955/20 +f 895/955/20 894/1219/20 893/1220/20 +f 893/1220/20 892/1221/20 895/955/20 +f 892/1221/20 891/953/20 895/955/20 +f 897/1222/19 898/1223/19 899/956/19 +f 899/956/19 900/1224/19 901/957/19 +f 901/957/19 902/1225/19 903/958/19 +f 903/958/19 904/1226/19 897/1222/19 +f 897/1222/19 899/956/19 903/958/19 +f 919/959/19 920/962/19 912/960/19 +f 920/962/19 913/1227/19 905/963/19 +f 905/963/19 913/1227/19 914/964/19 +f 906/965/19 914/964/19 915/966/19 +f 915/966/19 916/969/19 908/968/19 +f 916/969/19 917/1228/19 909/970/19 +f 917/971/19 918/1229/19 910/972/19 +f 910/972/19 918/1229/19 919/959/19 +f 923/975/20 922/1230/20 927/976/20 +f 922/1230/20 921/1231/20 927/976/20 +f 921/1231/20 928/1232/20 927/976/20 +f 927/976/20 926/1233/20 925/1234/20 +f 925/1234/20 924/974/20 927/976/20 +s 1 +f 271/526/37 264/1235/38 263/1236/37 +f 269/538/39 262/1237/40 261/1238/39 +f 267/532/41 260/1239/42 259/1240/41 +f 265/528/43 258/1241/44 257/1242/43 +f 272/525/38 257/1242/43 264/1235/38 +f 270/537/40 263/1236/37 262/1237/40 +f 268/533/42 261/1243/39 260/1239/42 +f 266/530/44 259/1240/41 258/1241/44 +f 275/531/41 284/1244/42 276/534/42 +f 273/527/43 282/1245/44 274/529/44 +f 280/982/38 281/1246/43 273/527/43 +f 278/984/40 287/1247/37 279/524/37 +f 276/534/42 285/1248/39 277/983/39 +f 274/529/44 283/1249/41 275/531/41 +f 279/524/37 288/1250/38 280/982/38 +f 277/536/39 286/1251/40 278/984/40 +f 335/578/45 328/1252/46 327/1253/45 +f 333/590/47 326/1254/48 325/1255/47 +f 331/584/49 324/1256/50 323/1257/49 +f 329/580/51 322/1258/52 321/1259/51 +f 336/577/46 321/1259/51 328/1252/46 +f 334/589/48 327/1253/45 326/1254/48 +f 332/585/50 325/1260/47 324/1256/50 +f 330/582/52 323/1257/49 322/1258/52 +f 339/583/49 348/1261/50 340/586/50 +f 337/579/51 346/1262/52 338/581/52 +f 344/998/46 345/1263/51 337/579/51 +f 342/1000/48 351/1264/45 343/576/45 +f 340/586/50 349/1265/47 341/999/47 +f 338/581/52 347/1266/49 339/583/49 +f 343/576/45 352/1267/46 344/998/46 +f 341/588/47 350/1268/48 342/1000/48 +f 367/599/53 360/1269/54 359/1270/53 +f 365/611/55 358/1271/56 357/1272/55 +f 363/605/57 356/1273/58 355/1274/57 +f 361/601/59 354/1275/60 353/1276/59 +f 368/598/54 353/1276/59 360/1269/54 +f 366/610/56 359/1270/53 358/1271/56 +f 364/606/58 357/1277/55 356/1273/58 +f 362/603/60 355/1274/57 354/1275/60 +f 371/604/57 380/1278/58 372/607/58 +f 369/600/59 378/1279/60 370/602/60 +f 376/1011/54 377/1280/59 369/600/59 +f 374/612/56 383/1281/53 375/597/53 +f 372/607/58 381/1282/55 373/1012/55 +f 370/602/60 379/1283/57 371/604/57 +f 375/597/53 384/1284/54 376/1011/54 +f 373/609/55 382/1285/56 374/612/56 +f 399/621/61 392/1286/62 391/1287/61 +f 397/633/63 390/1288/64 389/1289/63 +f 395/627/65 388/1290/66 387/1291/65 +f 393/623/67 386/1292/68 385/1293/67 +f 400/620/62 385/1293/67 392/1286/62 +f 398/632/64 391/1287/61 390/1288/64 +f 396/628/66 389/1294/63 388/1290/66 +f 394/625/68 387/1291/65 386/1292/68 +f 403/626/65 412/1295/66 404/629/66 +f 401/622/67 410/1296/68 402/624/68 +f 408/1023/62 409/1297/67 401/622/67 +f 406/634/64 415/1298/61 407/619/61 +f 404/629/66 413/1299/63 405/1024/63 +f 402/624/68 411/1300/65 403/626/65 +f 407/619/61 416/1301/62 408/1023/62 +f 405/631/63 414/1302/64 406/634/64 +f 431/643/69 424/1303/70 423/1304/69 +f 429/653/71 422/1305/72 421/1306/71 +f 427/649/73 420/1307/74 419/1308/73 +f 425/645/75 418/1309/76 417/1310/75 +f 432/642/70 417/1310/75 424/1303/70 +f 430/655/72 423/1304/69 422/1305/72 +f 428/650/74 421/1311/71 420/1307/74 +f 426/647/76 419/1308/73 418/1309/76 +f 435/648/73 444/1312/74 436/651/74 +f 433/644/75 442/1313/76 434/646/76 +f 440/1035/70 441/1314/75 433/644/75 +f 438/654/72 447/1315/69 439/641/69 +f 436/651/74 445/1316/71 437/1036/71 +f 434/646/76 443/1317/73 435/648/73 +f 439/641/69 448/1318/70 440/1035/70 +f 437/1037/71 446/1319/72 438/654/72 +f 463/664/39 456/1320/40 455/1321/39 +f 461/674/41 454/1322/42 453/1323/41 +f 459/670/43 452/1324/44 451/1325/43 +f 457/666/37 450/1326/38 449/1327/37 +f 464/663/40 449/1327/37 456/1320/40 +f 462/676/42 455/1321/39 454/1322/42 +f 460/671/44 453/1328/41 452/1324/44 +f 458/668/38 451/1325/43 450/1326/38 +f 467/669/43 476/1329/44 468/672/44 +f 465/665/37 474/1330/38 466/667/38 +f 472/1048/40 473/1331/37 465/665/37 +f 470/675/42 479/1332/39 471/662/39 +f 468/672/44 477/1333/41 469/1049/41 +f 466/667/38 475/1334/43 467/669/43 +f 471/662/39 480/1335/40 472/1048/40 +f 469/1050/41 478/1336/42 470/675/42 +f 495/685/47 488/1337/48 487/1338/47 +f 493/697/49 486/1339/50 485/1340/49 +f 491/691/51 484/1341/52 483/1342/51 +f 489/687/45 482/1343/46 481/1344/45 +f 496/684/48 481/1344/45 488/1337/48 +f 494/696/50 487/1338/47 486/1339/50 +f 492/692/52 485/1345/49 484/1341/52 +f 490/689/46 483/1342/51 482/1343/46 +f 499/690/51 508/1346/52 500/693/52 +f 497/686/45 506/1347/46 498/688/46 +f 504/1061/48 505/1348/45 497/686/45 +f 502/1063/50 511/1349/47 503/683/47 +f 500/693/52 509/1350/49 501/1062/49 +f 498/688/46 507/1351/51 499/690/51 +f 503/683/47 512/1352/48 504/1061/48 +f 501/695/49 510/1353/50 502/1063/50 +f 527/706/55 520/1354/56 519/1355/55 +f 525/716/57 518/1356/58 517/1357/57 +f 523/712/59 516/1358/60 515/1359/59 +f 521/708/53 514/1360/54 513/1361/53 +f 528/705/56 513/1361/53 520/1354/56 +f 526/718/58 519/1355/55 518/1356/58 +f 524/713/60 517/1362/57 516/1358/60 +f 522/710/54 515/1359/59 514/1360/54 +f 531/711/59 540/1363/60 532/714/60 +f 529/707/53 538/1364/54 530/709/54 +f 536/1074/56 537/1365/53 529/707/53 +f 534/717/58 543/1366/55 535/704/55 +f 532/714/60 541/1367/57 533/1075/57 +f 530/709/54 539/1368/59 531/711/59 +f 535/704/55 544/1369/56 536/1074/56 +f 533/1076/57 542/1370/58 534/717/58 +f 559/727/63 552/1371/64 551/1372/63 +f 557/739/65 550/1373/66 549/1374/65 +f 555/733/67 548/1375/68 547/1376/67 +f 553/729/61 546/1377/62 545/1378/61 +f 560/726/64 545/1378/61 552/1371/64 +f 558/738/66 551/1372/63 550/1373/66 +f 556/734/68 549/1379/65 548/1375/68 +f 554/731/62 547/1376/67 546/1377/62 +f 563/732/67 572/1380/68 564/735/68 +f 561/728/61 570/1381/62 562/730/62 +f 568/1087/64 569/1382/61 561/728/61 +f 566/740/66 575/1383/63 567/725/63 +f 564/735/68 573/1384/65 565/1088/65 +f 562/730/62 571/1385/67 563/732/67 +f 567/725/63 576/1386/64 568/1087/64 +f 565/737/65 574/1387/66 566/740/66 +f 591/749/71 584/1388/72 583/1389/71 +f 589/761/73 582/1390/74 581/1391/73 +f 587/755/75 580/1392/76 579/1393/75 +f 585/751/69 578/1394/70 577/1395/69 +f 592/748/72 577/1395/69 584/1388/72 +f 590/760/74 583/1389/71 582/1390/74 +f 588/756/76 581/1396/73 580/1392/76 +f 586/753/70 579/1393/75 578/1394/70 +f 595/754/75 604/1397/76 596/757/76 +f 593/750/69 602/1398/70 594/752/70 +f 600/1099/72 601/1399/69 593/750/69 +f 598/1101/74 607/1400/71 599/747/71 +f 596/757/76 605/1401/73 597/1100/73 +f 594/752/70 603/1402/75 595/754/75 +f 599/747/71 608/1403/72 600/1099/72 +f 597/759/73 606/1404/74 598/1101/74 +f 623/770/41 616/1405/42 615/1406/41 +f 621/780/43 614/1407/44 613/1408/43 +f 619/776/37 612/1409/38 611/1410/37 +f 617/772/39 610/1411/40 609/1412/39 +f 624/769/42 609/1412/39 616/1405/42 +f 622/782/44 615/1406/41 614/1407/44 +f 620/777/38 613/1413/43 612/1409/38 +f 618/774/40 611/1410/37 610/1411/40 +f 627/775/37 636/1414/38 628/778/38 +f 625/771/39 634/1415/40 626/773/40 +f 632/1112/42 633/1416/39 625/771/39 +f 630/781/44 639/1417/41 631/768/41 +f 628/778/38 637/1418/43 629/1113/43 +f 626/773/40 635/1419/37 627/775/37 +f 631/768/41 640/1420/42 632/1112/42 +f 629/1114/43 638/1421/44 630/781/44 +f 655/791/49 648/1422/50 647/1423/49 +f 653/801/51 646/1424/52 645/1425/51 +f 651/797/45 644/1426/46 643/1427/45 +f 649/793/47 642/1428/48 641/1429/47 +f 656/790/50 641/1429/47 648/1422/50 +f 654/803/52 647/1423/49 646/1424/52 +f 652/798/46 645/1430/51 644/1426/46 +f 650/795/48 643/1427/45 642/1428/48 +f 659/796/45 668/1431/46 660/799/46 +f 657/792/47 666/1432/48 658/794/48 +f 664/1125/50 665/1433/47 657/792/47 +f 662/802/52 671/1434/49 663/789/49 +f 660/799/46 669/1435/51 661/1126/51 +f 658/794/48 667/1436/45 659/796/45 +f 663/789/49 672/1437/50 664/1125/50 +f 661/1127/51 670/1438/52 662/802/52 +f 687/812/57 680/1439/58 679/1440/57 +f 685/822/59 678/1441/60 677/1442/59 +f 683/818/53 676/1443/54 675/1444/53 +f 681/814/55 674/1445/56 673/1446/55 +f 688/811/58 673/1446/55 680/1439/58 +f 686/824/60 679/1440/57 678/1441/60 +f 684/819/54 677/1447/59 676/1443/54 +f 682/816/56 675/1444/53 674/1445/56 +f 691/817/53 700/1448/54 692/820/54 +f 689/813/55 698/1449/56 690/815/56 +f 696/1138/58 697/1450/55 689/813/55 +f 694/823/60 703/1451/57 695/810/57 +f 692/820/54 701/1452/59 693/1139/59 +f 690/815/56 699/1453/53 691/817/53 +f 695/810/57 704/1454/58 696/1138/58 +f 693/1140/59 702/1455/60 694/823/60 +f 719/833/65 712/1456/66 711/1457/65 +f 717/845/67 710/1458/68 709/1459/67 +f 715/839/61 708/1460/62 707/1461/61 +f 713/835/63 706/1462/64 705/1463/63 +f 720/832/66 705/1463/63 712/1456/66 +f 718/844/68 711/1457/65 710/1458/68 +f 716/840/62 709/1464/67 708/1460/62 +f 714/837/64 707/1461/61 706/1462/64 +f 723/838/61 732/1465/62 724/841/62 +f 721/834/63 730/1466/64 722/836/64 +f 728/1151/66 729/1467/63 721/834/63 +f 726/846/68 735/1468/65 727/831/65 +f 724/841/62 733/1469/67 725/1152/67 +f 722/836/64 731/1470/61 723/838/61 +f 727/831/65 736/1471/66 728/1151/66 +f 725/843/67 734/1472/68 726/846/68 +f 751/855/73 744/1473/74 743/1474/73 +f 749/867/75 742/1475/76 741/1476/75 +f 747/861/69 740/1477/70 739/1478/69 +f 745/857/71 738/1479/72 737/1480/71 +f 752/854/74 737/1480/71 744/1473/74 +f 750/866/76 743/1474/73 742/1475/76 +f 748/862/70 741/1481/75 740/1477/70 +f 746/859/72 739/1478/69 738/1479/72 +f 755/860/69 764/1482/70 756/863/70 +f 753/856/71 762/1483/72 754/858/72 +f 760/1163/74 761/1484/71 753/856/71 +f 758/1165/76 767/1485/73 759/853/73 +f 756/863/70 765/1486/75 757/1164/75 +f 754/858/72 763/1487/69 755/860/69 +f 759/853/73 768/1488/74 760/1163/74 +f 757/865/75 766/1489/76 758/1165/76 +f 783/876/43 776/1490/44 775/1491/43 +f 781/886/37 774/1492/38 773/1493/37 +f 779/882/39 772/1494/40 771/1495/39 +f 777/878/41 770/1496/42 769/1497/41 +f 784/875/44 769/1497/41 776/1490/44 +f 782/888/38 775/1491/43 774/1492/38 +f 780/883/40 773/1498/37 772/1494/40 +f 778/880/42 771/1495/39 770/1496/42 +f 787/881/39 796/1499/40 788/884/40 +f 785/877/41 794/1500/42 786/879/42 +f 792/1176/44 793/1501/41 785/877/41 +f 790/887/38 799/1502/43 791/874/43 +f 788/884/40 797/1503/37 789/1177/37 +f 786/879/42 795/1504/39 787/881/39 +f 791/874/43 800/1505/44 792/1176/44 +f 789/1178/37 798/1506/38 790/887/38 +f 815/897/51 808/1507/52 807/1508/51 +f 813/907/45 806/1509/46 805/1510/45 +f 811/903/47 804/1511/48 803/1512/47 +f 809/899/49 802/1513/50 801/1514/49 +f 816/896/52 801/1514/49 808/1507/52 +f 814/909/46 807/1508/51 806/1509/46 +f 812/904/48 805/1515/45 804/1511/48 +f 810/901/50 803/1512/47 802/1513/50 +f 819/902/47 828/1516/48 820/905/48 +f 817/898/49 826/1517/50 818/900/50 +f 824/1189/52 825/1518/49 817/898/49 +f 822/908/46 831/1519/51 823/895/51 +f 820/905/48 829/1520/45 821/1190/45 +f 818/900/50 827/1521/47 819/902/47 +f 823/895/51 832/1522/52 824/1189/52 +f 821/1191/45 830/1523/46 822/908/46 +f 847/918/59 840/1524/60 839/1525/59 +f 845/928/53 838/1526/54 837/1527/53 +f 843/924/55 836/1528/56 835/1529/55 +f 841/920/57 834/1530/58 833/1531/57 +f 848/917/60 833/1531/57 840/1524/60 +f 846/930/54 839/1525/59 838/1526/54 +f 844/925/56 837/1532/53 836/1528/56 +f 842/922/58 835/1529/55 834/1530/58 +f 851/923/55 860/1533/56 852/926/56 +f 849/919/57 858/1534/58 850/921/58 +f 856/1202/60 857/1535/57 849/919/57 +f 854/929/54 863/1536/59 855/916/59 +f 852/926/56 861/1537/53 853/1203/53 +f 850/921/58 859/1538/55 851/923/55 +f 855/916/59 864/1539/60 856/1202/60 +f 853/1204/53 862/1540/54 854/929/54 +f 879/939/67 872/1541/68 871/1542/67 +f 877/951/61 870/1543/62 869/1544/61 +f 875/945/63 868/1545/64 867/1546/63 +f 873/941/65 866/1547/66 865/1548/65 +f 880/938/68 865/1548/65 872/1541/68 +f 878/950/62 871/1542/67 870/1543/62 +f 876/946/64 869/1549/61 868/1545/64 +f 874/943/66 867/1546/63 866/1547/66 +f 883/944/63 892/1550/64 884/947/64 +f 881/940/65 890/1551/66 882/942/66 +f 888/1215/68 889/1552/65 881/940/65 +f 886/952/62 895/1553/67 887/937/67 +f 884/947/64 893/1554/61 885/1216/61 +f 882/942/66 891/1555/63 883/944/63 +f 887/937/67 896/1556/68 888/1215/68 +f 885/949/61 894/1557/62 886/952/62 +f 911/961/75 904/1558/76 903/1559/75 +f 909/973/69 902/1560/70 901/1561/69 +f 907/967/71 900/1562/72 899/1563/71 +f 905/963/73 898/1564/74 897/1565/73 +f 912/960/76 897/1565/73 904/1558/76 +f 910/972/70 903/1559/75 902/1560/70 +f 908/968/72 901/1566/69 900/1562/72 +f 906/965/74 899/1563/71 898/1564/74 +f 915/966/71 924/1567/72 916/969/72 +f 913/1227/73 922/1568/74 914/964/74 +f 920/962/76 921/1569/73 913/1227/73 +f 918/1229/70 927/1570/75 919/959/75 +f 916/969/72 925/1571/69 917/1228/69 +f 914/964/74 923/1572/71 915/966/71 +f 919/959/75 928/1573/76 920/962/76 +f 917/971/69 926/1574/70 918/1229/70 +f 271/526/37 272/525/38 264/1235/38 +f 269/538/39 270/537/40 262/1237/40 +f 267/532/41 268/533/42 260/1239/42 +f 265/528/43 266/530/44 258/1241/44 +f 272/525/38 265/528/43 257/1242/43 +f 270/537/40 271/526/37 263/1236/37 +f 268/533/42 269/535/39 261/1243/39 +f 266/530/44 267/532/41 259/1240/41 +f 275/531/41 283/1249/41 284/1244/42 +f 273/527/43 281/1246/43 282/1245/44 +f 280/982/38 288/1250/38 281/1246/43 +f 278/984/40 286/1251/40 287/1247/37 +f 276/534/42 284/1244/42 285/1248/39 +f 274/529/44 282/1245/44 283/1249/41 +f 279/524/37 287/1247/37 288/1250/38 +f 277/536/39 285/1575/39 286/1251/40 +f 335/578/45 336/577/46 328/1252/46 +f 333/590/47 334/589/48 326/1254/48 +f 331/584/49 332/585/50 324/1256/50 +f 329/580/51 330/582/52 322/1258/52 +f 336/577/46 329/580/51 321/1259/51 +f 334/589/48 335/578/45 327/1253/45 +f 332/585/50 333/587/47 325/1260/47 +f 330/582/52 331/584/49 323/1257/49 +f 339/583/49 347/1266/49 348/1261/50 +f 337/579/51 345/1263/51 346/1262/52 +f 344/998/46 352/1267/46 345/1263/51 +f 342/1000/48 350/1268/48 351/1264/45 +f 340/586/50 348/1261/50 349/1265/47 +f 338/581/52 346/1262/52 347/1266/49 +f 343/576/45 351/1264/45 352/1267/46 +f 341/588/47 349/1576/47 350/1268/48 +f 367/599/53 368/598/54 360/1269/54 +f 365/611/55 366/610/56 358/1271/56 +f 363/605/57 364/606/58 356/1273/58 +f 361/601/59 362/603/60 354/1275/60 +f 368/598/54 361/601/59 353/1276/59 +f 366/610/56 367/599/53 359/1270/53 +f 364/606/58 365/608/55 357/1277/55 +f 362/603/60 363/605/57 355/1274/57 +f 371/604/57 379/1283/57 380/1278/58 +f 369/600/59 377/1280/59 378/1279/60 +f 376/1011/54 384/1284/54 377/1280/59 +f 374/612/56 382/1285/56 383/1281/53 +f 372/607/58 380/1278/58 381/1282/55 +f 370/602/60 378/1279/60 379/1283/57 +f 375/597/53 383/1281/53 384/1284/54 +f 373/609/55 381/1577/55 382/1285/56 +f 399/621/61 400/620/62 392/1286/62 +f 397/633/63 398/632/64 390/1288/64 +f 395/627/65 396/628/66 388/1290/66 +f 393/623/67 394/625/68 386/1292/68 +f 400/620/62 393/623/67 385/1293/67 +f 398/632/64 399/621/61 391/1287/61 +f 396/628/66 397/630/63 389/1294/63 +f 394/625/68 395/627/65 387/1291/65 +f 403/626/65 411/1300/65 412/1295/66 +f 401/622/67 409/1297/67 410/1296/68 +f 408/1023/62 416/1301/62 409/1297/67 +f 406/634/64 414/1302/64 415/1298/61 +f 404/629/66 412/1295/66 413/1299/63 +f 402/624/68 410/1296/68 411/1300/65 +f 407/619/61 415/1298/61 416/1301/62 +f 405/631/63 413/1578/63 414/1302/64 +f 431/643/69 432/642/70 424/1303/70 +f 429/653/71 430/655/72 422/1305/72 +f 427/649/73 428/650/74 420/1307/74 +f 425/645/75 426/647/76 418/1309/76 +f 432/642/70 425/645/75 417/1310/75 +f 430/655/72 431/643/69 423/1304/69 +f 428/650/74 429/652/71 421/1311/71 +f 426/647/76 427/649/73 419/1308/73 +f 435/648/73 443/1317/73 444/1312/74 +f 433/644/75 441/1314/75 442/1313/76 +f 440/1035/70 448/1318/70 441/1314/75 +f 438/654/72 446/1319/72 447/1315/69 +f 436/651/74 444/1312/74 445/1316/71 +f 434/646/76 442/1313/76 443/1317/73 +f 439/641/69 447/1315/69 448/1318/70 +f 437/1037/71 445/1579/71 446/1319/72 +f 463/664/39 464/663/40 456/1320/40 +f 461/674/41 462/676/42 454/1322/42 +f 459/670/43 460/671/44 452/1324/44 +f 457/666/37 458/668/38 450/1326/38 +f 464/663/40 457/666/37 449/1327/37 +f 462/676/42 463/664/39 455/1321/39 +f 460/671/44 461/673/41 453/1328/41 +f 458/668/38 459/670/43 451/1325/43 +f 467/669/43 475/1334/43 476/1329/44 +f 465/665/37 473/1331/37 474/1330/38 +f 472/1048/40 480/1335/40 473/1331/37 +f 470/675/42 478/1336/42 479/1332/39 +f 468/672/44 476/1329/44 477/1333/41 +f 466/667/38 474/1330/38 475/1334/43 +f 471/662/39 479/1332/39 480/1335/40 +f 469/1050/41 477/1580/41 478/1336/42 +f 495/685/47 496/684/48 488/1337/48 +f 493/697/49 494/696/50 486/1339/50 +f 491/691/51 492/692/52 484/1341/52 +f 489/687/45 490/689/46 482/1343/46 +f 496/684/48 489/687/45 481/1344/45 +f 494/696/50 495/685/47 487/1338/47 +f 492/692/52 493/694/49 485/1345/49 +f 490/689/46 491/691/51 483/1342/51 +f 499/690/51 507/1351/51 508/1346/52 +f 497/686/45 505/1348/45 506/1347/46 +f 504/1061/48 512/1352/48 505/1348/45 +f 502/1063/50 510/1353/50 511/1349/47 +f 500/693/52 508/1346/52 509/1350/49 +f 498/688/46 506/1347/46 507/1351/51 +f 503/683/47 511/1349/47 512/1352/48 +f 501/695/49 509/1581/49 510/1353/50 +f 527/706/55 528/705/56 520/1354/56 +f 525/716/57 526/718/58 518/1356/58 +f 523/712/59 524/713/60 516/1358/60 +f 521/708/53 522/710/54 514/1360/54 +f 528/705/56 521/708/53 513/1361/53 +f 526/718/58 527/706/55 519/1355/55 +f 524/713/60 525/715/57 517/1362/57 +f 522/710/54 523/712/59 515/1359/59 +f 531/711/59 539/1368/59 540/1363/60 +f 529/707/53 537/1365/53 538/1364/54 +f 536/1074/56 544/1369/56 537/1365/53 +f 534/717/58 542/1370/58 543/1366/55 +f 532/714/60 540/1363/60 541/1367/57 +f 530/709/54 538/1364/54 539/1368/59 +f 535/704/55 543/1366/55 544/1369/56 +f 533/1076/57 541/1582/57 542/1370/58 +f 559/727/63 560/726/64 552/1371/64 +f 557/739/65 558/738/66 550/1373/66 +f 555/733/67 556/734/68 548/1375/68 +f 553/729/61 554/731/62 546/1377/62 +f 560/726/64 553/729/61 545/1378/61 +f 558/738/66 559/727/63 551/1372/63 +f 556/734/68 557/736/65 549/1379/65 +f 554/731/62 555/733/67 547/1376/67 +f 563/732/67 571/1385/67 572/1380/68 +f 561/728/61 569/1382/61 570/1381/62 +f 568/1087/64 576/1386/64 569/1382/61 +f 566/740/66 574/1387/66 575/1383/63 +f 564/735/68 572/1380/68 573/1384/65 +f 562/730/62 570/1381/62 571/1385/67 +f 567/725/63 575/1383/63 576/1386/64 +f 565/737/65 573/1583/65 574/1387/66 +f 591/749/71 592/748/72 584/1388/72 +f 589/761/73 590/760/74 582/1390/74 +f 587/755/75 588/756/76 580/1392/76 +f 585/751/69 586/753/70 578/1394/70 +f 592/748/72 585/751/69 577/1395/69 +f 590/760/74 591/749/71 583/1389/71 +f 588/756/76 589/758/73 581/1396/73 +f 586/753/70 587/755/75 579/1393/75 +f 595/754/75 603/1402/75 604/1397/76 +f 593/750/69 601/1399/69 602/1398/70 +f 600/1099/72 608/1403/72 601/1399/69 +f 598/1101/74 606/1404/74 607/1400/71 +f 596/757/76 604/1397/76 605/1401/73 +f 594/752/70 602/1398/70 603/1402/75 +f 599/747/71 607/1400/71 608/1403/72 +f 597/759/73 605/1584/73 606/1404/74 +f 623/770/41 624/769/42 616/1405/42 +f 621/780/43 622/782/44 614/1407/44 +f 619/776/37 620/777/38 612/1409/38 +f 617/772/39 618/774/40 610/1411/40 +f 624/769/42 617/772/39 609/1412/39 +f 622/782/44 623/770/41 615/1406/41 +f 620/777/38 621/779/43 613/1413/43 +f 618/774/40 619/776/37 611/1410/37 +f 627/775/37 635/1419/37 636/1414/38 +f 625/771/39 633/1416/39 634/1415/40 +f 632/1112/42 640/1420/42 633/1416/39 +f 630/781/44 638/1421/44 639/1417/41 +f 628/778/38 636/1414/38 637/1418/43 +f 626/773/40 634/1415/40 635/1419/37 +f 631/768/41 639/1417/41 640/1420/42 +f 629/1114/43 637/1585/43 638/1421/44 +f 655/791/49 656/790/50 648/1422/50 +f 653/801/51 654/803/52 646/1424/52 +f 651/797/45 652/798/46 644/1426/46 +f 649/793/47 650/795/48 642/1428/48 +f 656/790/50 649/793/47 641/1429/47 +f 654/803/52 655/791/49 647/1423/49 +f 652/798/46 653/800/51 645/1430/51 +f 650/795/48 651/797/45 643/1427/45 +f 659/796/45 667/1436/45 668/1431/46 +f 657/792/47 665/1433/47 666/1432/48 +f 664/1125/50 672/1437/50 665/1433/47 +f 662/802/52 670/1438/52 671/1434/49 +f 660/799/46 668/1431/46 669/1435/51 +f 658/794/48 666/1432/48 667/1436/45 +f 663/789/49 671/1434/49 672/1437/50 +f 661/1127/51 669/1586/51 670/1438/52 +f 687/812/57 688/811/58 680/1439/58 +f 685/822/59 686/824/60 678/1441/60 +f 683/818/53 684/819/54 676/1443/54 +f 681/814/55 682/816/56 674/1445/56 +f 688/811/58 681/814/55 673/1446/55 +f 686/824/60 687/812/57 679/1440/57 +f 684/819/54 685/821/59 677/1447/59 +f 682/816/56 683/818/53 675/1444/53 +f 691/817/53 699/1453/53 700/1448/54 +f 689/813/55 697/1450/55 698/1449/56 +f 696/1138/58 704/1454/58 697/1450/55 +f 694/823/60 702/1455/60 703/1451/57 +f 692/820/54 700/1448/54 701/1452/59 +f 690/815/56 698/1449/56 699/1453/53 +f 695/810/57 703/1451/57 704/1454/58 +f 693/1140/59 701/1587/59 702/1455/60 +f 719/833/65 720/832/66 712/1456/66 +f 717/845/67 718/844/68 710/1458/68 +f 715/839/61 716/840/62 708/1460/62 +f 713/835/63 714/837/64 706/1462/64 +f 720/832/66 713/835/63 705/1463/63 +f 718/844/68 719/833/65 711/1457/65 +f 716/840/62 717/842/67 709/1464/67 +f 714/837/64 715/839/61 707/1461/61 +f 723/838/61 731/1470/61 732/1465/62 +f 721/834/63 729/1467/63 730/1466/64 +f 728/1151/66 736/1471/66 729/1467/63 +f 726/846/68 734/1472/68 735/1468/65 +f 724/841/62 732/1465/62 733/1469/67 +f 722/836/64 730/1466/64 731/1470/61 +f 727/831/65 735/1468/65 736/1471/66 +f 725/843/67 733/1588/67 734/1472/68 +f 751/855/73 752/854/74 744/1473/74 +f 749/867/75 750/866/76 742/1475/76 +f 747/861/69 748/862/70 740/1477/70 +f 745/857/71 746/859/72 738/1479/72 +f 752/854/74 745/857/71 737/1480/71 +f 750/866/76 751/855/73 743/1474/73 +f 748/862/70 749/864/75 741/1481/75 +f 746/859/72 747/861/69 739/1478/69 +f 755/860/69 763/1487/69 764/1482/70 +f 753/856/71 761/1484/71 762/1483/72 +f 760/1163/74 768/1488/74 761/1484/71 +f 758/1165/76 766/1489/76 767/1485/73 +f 756/863/70 764/1482/70 765/1486/75 +f 754/858/72 762/1483/72 763/1487/69 +f 759/853/73 767/1485/73 768/1488/74 +f 757/865/75 765/1589/75 766/1489/76 +f 783/876/43 784/875/44 776/1490/44 +f 781/886/37 782/888/38 774/1492/38 +f 779/882/39 780/883/40 772/1494/40 +f 777/878/41 778/880/42 770/1496/42 +f 784/875/44 777/878/41 769/1497/41 +f 782/888/38 783/876/43 775/1491/43 +f 780/883/40 781/885/37 773/1498/37 +f 778/880/42 779/882/39 771/1495/39 +f 787/881/39 795/1504/39 796/1499/40 +f 785/877/41 793/1501/41 794/1500/42 +f 792/1176/44 800/1505/44 793/1501/41 +f 790/887/38 798/1506/38 799/1502/43 +f 788/884/40 796/1499/40 797/1503/37 +f 786/879/42 794/1500/42 795/1504/39 +f 791/874/43 799/1502/43 800/1505/44 +f 789/1178/37 797/1590/37 798/1506/38 +f 815/897/51 816/896/52 808/1507/52 +f 813/907/45 814/909/46 806/1509/46 +f 811/903/47 812/904/48 804/1511/48 +f 809/899/49 810/901/50 802/1513/50 +f 816/896/52 809/899/49 801/1514/49 +f 814/909/46 815/897/51 807/1508/51 +f 812/904/48 813/906/45 805/1515/45 +f 810/901/50 811/903/47 803/1512/47 +f 819/902/47 827/1521/47 828/1516/48 +f 817/898/49 825/1518/49 826/1517/50 +f 824/1189/52 832/1522/52 825/1518/49 +f 822/908/46 830/1523/46 831/1519/51 +f 820/905/48 828/1516/48 829/1520/45 +f 818/900/50 826/1517/50 827/1521/47 +f 823/895/51 831/1519/51 832/1522/52 +f 821/1191/45 829/1591/45 830/1523/46 +f 847/918/59 848/917/60 840/1524/60 +f 845/928/53 846/930/54 838/1526/54 +f 843/924/55 844/925/56 836/1528/56 +f 841/920/57 842/922/58 834/1530/58 +f 848/917/60 841/920/57 833/1531/57 +f 846/930/54 847/918/59 839/1525/59 +f 844/925/56 845/927/53 837/1532/53 +f 842/922/58 843/924/55 835/1529/55 +f 851/923/55 859/1538/55 860/1533/56 +f 849/919/57 857/1535/57 858/1534/58 +f 856/1202/60 864/1539/60 857/1535/57 +f 854/929/54 862/1540/54 863/1536/59 +f 852/926/56 860/1533/56 861/1537/53 +f 850/921/58 858/1534/58 859/1538/55 +f 855/916/59 863/1536/59 864/1539/60 +f 853/1204/53 861/1592/53 862/1540/54 +f 879/939/67 880/938/68 872/1541/68 +f 877/951/61 878/950/62 870/1543/62 +f 875/945/63 876/946/64 868/1545/64 +f 873/941/65 874/943/66 866/1547/66 +f 880/938/68 873/941/65 865/1548/65 +f 878/950/62 879/939/67 871/1542/67 +f 876/946/64 877/948/61 869/1549/61 +f 874/943/66 875/945/63 867/1546/63 +f 883/944/63 891/1555/63 892/1550/64 +f 881/940/65 889/1552/65 890/1551/66 +f 888/1215/68 896/1556/68 889/1552/65 +f 886/952/62 894/1557/62 895/1553/67 +f 884/947/64 892/1550/64 893/1554/61 +f 882/942/66 890/1551/66 891/1555/63 +f 887/937/67 895/1553/67 896/1556/68 +f 885/949/61 893/1593/61 894/1557/62 +f 911/961/75 912/960/76 904/1558/76 +f 909/973/69 910/972/70 902/1560/70 +f 907/967/71 908/968/72 900/1562/72 +f 905/963/73 906/965/74 898/1564/74 +f 912/960/76 905/963/73 897/1565/73 +f 910/972/70 911/961/75 903/1559/75 +f 908/968/72 909/970/69 901/1566/69 +f 906/965/74 907/967/71 899/1563/71 +f 915/966/71 923/1572/71 924/1567/72 +f 913/1227/73 921/1569/73 922/1568/74 +f 920/962/76 928/1573/76 921/1569/73 +f 918/1229/70 926/1574/70 927/1570/75 +f 916/969/72 924/1567/72 925/1571/69 +f 914/964/74 922/1568/74 923/1572/71 +f 919/959/75 927/1570/75 928/1573/76 +f 917/971/69 925/1594/69 926/1574/70 +o Gun +v 1.000000 0.562500 2.000000 +v 1.000000 1.437500 2.000000 +v 1.000000 0.562500 6.000000 +v 1.000000 1.437500 6.000000 +v -1.000000 0.562500 2.000000 +v -1.000000 1.437500 2.000000 +v -1.000000 0.562500 6.000000 +v -1.000000 1.437500 6.000000 +v 0.437500 2.000000 2.000000 +v -0.437500 2.000000 2.000000 +v 0.437500 2.000000 6.000000 +v -0.437500 2.000000 6.000000 +v 0.437500 0.000000 2.000000 +v -0.437500 0.000000 2.000000 +v 0.437500 0.000000 6.000000 +v -0.437500 0.000000 6.000000 +v 0.250000 2.750000 2.000000 +v -0.250000 2.750000 2.000000 +v 0.250000 2.750000 6.000000 +v -0.250000 2.750000 6.000000 +v 0.000000 1.500000 6.000000 +v 0.250000 1.433012 6.000000 +v 0.433013 1.250000 6.000000 +v 0.500000 1.000000 6.000000 +v 0.433013 0.750000 6.000000 +v 0.250000 0.566988 6.000000 +v 0.000000 0.500000 6.000000 +v -0.250000 0.566987 6.000000 +v -0.433012 0.750000 6.000000 +v -0.500000 1.000000 6.000000 +v -0.433012 1.250000 6.000000 +v -0.250000 1.433012 6.000000 +v 0.000000 1.500000 7.500000 +v 0.250000 1.433012 7.500000 +v 0.433013 1.250000 7.500000 +v 0.500000 1.000000 7.500000 +v 0.433013 0.750000 7.500000 +v 0.250000 0.566988 7.500000 +v 0.000001 0.500000 7.500000 +v -0.249999 0.566987 7.500000 +v -0.433012 0.750000 7.500000 +v -0.500000 1.000000 7.500000 +v -0.433012 1.250000 7.500000 +v -0.250000 1.433012 7.500000 +v 0.000000 1.375000 7.500000 +v 0.187500 1.324759 7.500000 +v 0.324760 1.187500 7.500000 +v 0.375000 1.000000 7.500000 +v 0.324760 0.812500 7.500000 +v 0.187500 0.675241 7.500000 +v 0.000000 0.625000 7.500000 +v -0.187499 0.675240 7.500000 +v -0.324759 0.812500 7.500000 +v -0.375000 1.000000 7.500000 +v -0.324759 1.187500 7.500000 +v -0.187500 1.324759 7.500000 +v 0.000000 1.375000 6.500000 +v 0.187500 1.324759 6.500000 +v 0.324760 1.187500 6.500000 +v 0.375000 1.000000 6.500000 +v 0.324760 0.812500 6.500000 +v 0.187500 0.675241 6.500000 +v 0.000000 0.625000 6.500000 +v -0.187500 0.675240 6.500000 +v -0.324759 0.812500 6.500000 +v -0.375000 1.000000 6.500000 +v -0.324759 1.187500 6.500000 +v -0.187500 1.324759 6.500000 +v 0.000000 1.500000 2.000000 +v 0.250000 1.433012 2.000000 +v 0.433013 1.250000 2.000000 +v 0.500000 1.000000 2.000000 +v 0.433013 0.750000 2.000000 +v 0.250000 0.566988 2.000000 +v 0.000000 0.500000 2.000000 +v -0.250000 0.566987 2.000000 +v -0.433012 0.750000 2.000000 +v -0.500000 1.000000 2.000000 +v -0.433012 1.250000 2.000000 +v -0.250000 1.433012 2.000000 +v 0.000000 1.500000 1.000000 +v 0.250000 1.433012 1.000000 +v 0.433013 1.250000 1.000000 +v 0.500000 1.000000 1.000000 +v 0.433013 0.750000 1.000000 +v 0.250000 0.566988 1.000000 +v 0.000000 0.500000 1.000000 +v -0.250000 0.566987 1.000000 +v -0.433012 0.750000 1.000000 +v -0.500000 1.000000 1.000000 +v -0.433013 1.250000 1.000000 +v -0.250000 1.433012 1.000000 +v 0.500000 0.250000 0.500000 +v -0.500000 0.250000 0.500000 +v 0.500000 0.250000 1.000000 +v -0.500000 0.250000 1.000000 +v 0.500000 1.750000 1.000000 +v 0.500000 1.250000 0.500000 +v -0.500000 1.250000 0.500000 +v -0.500000 1.750000 1.000000 +v -0.312500 0.000000 6.000000 +v 0.312500 0.000000 6.000000 +v -0.312500 0.000000 2.000000 +v 0.312500 0.000000 2.000000 +v -0.562500 -0.500000 6.000000 +v 0.562500 -0.500000 6.000000 +v -0.562500 -0.500000 2.000000 +v 0.562500 -0.500000 2.000000 +v -0.312500 -1.000000 6.000000 +v 0.312500 -1.000000 6.000000 +v -0.312500 -1.000000 2.000000 +v 0.312500 -1.000000 2.000000 +v 0.750000 0.250000 -1.875000 +v -0.750000 0.250000 -1.875000 +v 0.750000 0.250000 -1.375000 +v -0.750000 0.250000 -1.375000 +v 0.750000 2.750000 -1.375000 +v 0.312500 2.125000 2.000000 +v -0.312500 2.125000 2.000000 +v -0.750000 2.750000 -1.375000 +v 0.750000 0.500000 -2.375000 +v -0.750000 0.500000 -2.375000 +v 0.750000 2.750000 -2.375000 +v -0.750000 2.750000 -2.375000 +v -0.187500 2.625000 2.000000 +v 0.187500 2.625000 2.000000 +v 0.312500 2.125000 -1.375000 +v -0.312500 2.125000 -1.375000 +v -0.187500 2.625000 -1.375000 +v 0.187500 2.625000 -1.375000 +v 0.500000 1.250000 -1.375000 +v -0.500000 1.250000 -1.375000 +v 0.500000 2.000000 0.750000 +v -0.500000 2.000000 0.750000 +v 0.500000 2.000000 -1.375000 +v -0.500000 2.000000 -1.375000 +v -0.625000 2.000000 -2.375000 +v -1.000000 1.625000 -2.375000 +v 1.000000 1.625000 -2.375000 +v 0.625000 2.000000 -2.375000 +v -1.000000 1.625000 -4.875000 +v -0.625000 2.000000 -4.875000 +v 0.625000 2.000000 -4.875000 +v 1.000000 1.625000 -4.875000 +v 0.750000 1.375000 -4.875000 +v 0.375000 1.750000 -4.875000 +v -0.375000 1.750000 -4.875000 +v -0.750000 1.375000 -4.875000 +v 0.375000 0.250000 -4.875000 +v 0.750000 0.625000 -4.875000 +v -0.750000 0.625000 -4.875000 +v -0.375000 0.250000 -4.875000 +v 0.750000 0.625000 -6.875000 +v 0.375000 0.250000 -6.875000 +v 0.375000 1.750000 -6.875000 +v 0.750000 1.375000 -6.875000 +v -0.750000 1.375000 -6.875000 +v -0.375000 1.750000 -6.875000 +v -0.375000 0.250000 -6.875000 +v -0.750000 0.625000 -6.875000 +v 0.125000 2.750000 -2.375000 +v 0.500000 2.750000 -2.375000 +v 0.125000 2.000000 -3.375000 +v 0.500000 2.000000 -3.375000 +v 0.125000 2.000000 -2.375000 +v 0.500000 2.000000 -2.375000 +v -0.125000 2.000000 -2.375000 +v -0.500000 2.000000 -2.375000 +v -0.125000 2.000000 -3.375000 +v -0.500000 2.000000 -3.375000 +v -0.125000 2.750000 -2.375000 +v -0.500000 2.750000 -2.375000 +v -0.250000 0.000000 -3.250000 +v 0.250000 0.000000 -3.250000 +v -0.250000 0.000000 -4.625000 +v 0.250000 0.000000 -4.625000 +v -0.250000 -2.500000 -5.125000 +v -0.250000 -2.500000 -3.750000 +v 0.250000 -2.500000 -3.750000 +v 0.250000 -2.500000 -5.125000 +v 0.500000 0.000000 -3.500000 +v 0.500000 0.000000 -4.375000 +v 0.500000 -2.500000 -4.000000 +v 0.500000 -2.500000 -4.875000 +v -0.500000 0.000000 -4.375000 +v -0.500000 0.000000 -3.500000 +v -0.500000 -2.500000 -4.875000 +v -0.500000 -2.500000 -4.000000 +v -0.250000 0.000000 -2.875000 +v 0.250000 0.000000 -2.875000 +v -0.250000 -1.000000 -2.750000 +v 0.250000 -1.000000 -2.750000 +v -0.250000 0.000000 -3.250000 +v 0.250000 0.000000 -3.250000 +v -0.250000 -1.000000 -3.500000 +v 0.250000 -1.000000 -3.500000 +v 0.750000 0.875000 -4.875000 +v 1.000000 0.875000 -4.875000 +v 0.750000 1.125000 -4.875000 +v 1.000000 1.125000 -4.875000 +v 0.750000 0.875000 -8.875000 +v 1.000000 0.875000 -8.875000 +v 0.750000 1.125000 -8.875000 +v 1.000000 1.125000 -8.875000 +v -1.000000 0.875000 -4.875000 +v -0.750000 0.875000 -4.875000 +v -1.000000 1.125000 -4.875000 +v -0.750000 1.125000 -4.875000 +v -1.000000 0.875000 -8.875000 +v -0.750000 0.875000 -8.875000 +v -1.000000 1.125000 -8.875000 +v -0.750000 1.125000 -8.875000 +v 0.750000 0.875000 -9.125000 +v 1.000000 0.875000 -9.125000 +v -1.000000 0.875000 -9.125000 +v -0.750000 0.875000 -9.125000 +v 0.750000 -2.125000 -8.875000 +v 1.000000 -2.125000 -8.875000 +v -1.000000 -2.125000 -8.875000 +v -0.750000 -2.125000 -8.875000 +v 0.750000 -2.125000 -9.125000 +v 1.000000 -2.125000 -9.125000 +v -1.000000 -2.125000 -9.125000 +v -0.750000 -2.125000 -9.125000 +v 0.750000 -2.375000 -8.875000 +v -0.750000 -2.375000 -8.875000 +v 0.750000 -2.375000 -9.125000 +v -0.750000 -2.375000 -9.125000 +v 0.500000 1.500000 2.000000 +v 0.500000 1.250000 2.000000 +v 0.500000 1.500000 0.625000 +v 0.500000 1.250000 0.625000 +v 0.750000 1.500000 2.000000 +v 0.750000 1.250000 2.000000 +v 0.750000 1.500000 0.875000 +v 0.750000 1.250000 0.875000 +v 0.500000 0.750000 2.000000 +v 0.500000 0.500000 2.000000 +v 0.500000 0.750000 0.625000 +v 0.500000 0.500000 0.625000 +v 0.750000 0.750000 2.000000 +v 0.750000 0.500000 2.000000 +v 0.750000 0.750000 0.875000 +v 0.750000 0.500000 0.875000 +v -0.500000 1.500000 2.000000 +v -0.500000 1.250000 2.000000 +v -0.500000 1.500000 0.625000 +v -0.500000 1.250000 0.625000 +v -0.750000 1.500000 2.000000 +v -0.750000 1.250000 2.000000 +v -0.750000 1.500000 0.875000 +v -0.750000 1.250000 0.875000 +v -0.500000 0.750000 2.000000 +v -0.500000 0.500000 2.000000 +v -0.500000 0.750000 0.625000 +v -0.500000 0.500000 0.625000 +v -0.750000 0.750000 2.000000 +v -0.750000 0.500000 2.000000 +v -0.750000 0.750000 0.875000 +v -0.750000 0.500000 0.875000 +v -1.000000 0.375000 -2.375000 +v -0.625000 0.000000 -2.375000 +v 0.625000 0.000000 -2.375000 +v 1.000000 0.375000 -2.375000 +v -0.625000 0.000000 -4.875000 +v -1.000000 0.375000 -4.875000 +v 1.000000 0.375000 -4.875000 +v 0.625000 0.000000 -4.875000 vt 0.191235 0.199219 vt 0.063745 0.144531 vt 0.191235 0.144531 @@ -1260,314 +4672,9 @@ vt 0.346614 0.210938 vt 0.410359 0.273438 vt 0.394422 0.304688 vt 0.362550 0.304688 -vt 0.904382 0.187500 -vt 0.892430 0.246094 -vt 0.892430 0.191406 -vt 0.950199 0.875000 -vt 0.944223 0.933594 -vt 0.944223 0.878906 -vt 0.944223 0.816406 -vt 0.950199 0.871094 -vt 0.944223 0.871094 -vt 0.944223 0.753906 -vt 0.950199 0.808594 -vt 0.944223 0.808594 -vt 0.944223 0.691406 -vt 0.950199 0.746094 -vt 0.944223 0.746094 -vt 0.944223 0.628906 -vt 0.950199 0.683594 -vt 0.944223 0.683594 -vt 0.944223 0.566406 -vt 0.950199 0.621094 -vt 0.944223 0.621094 -vt 0.944223 0.503906 -vt 0.950199 0.558594 -vt 0.944223 0.558594 -vt 0.944223 0.441406 -vt 0.950199 0.496094 -vt 0.944223 0.496094 -vt 0.944223 0.378906 -vt 0.950199 0.433594 -vt 0.944223 0.433594 -vt 0.944223 0.316406 -vt 0.950199 0.371094 -vt 0.944223 0.371094 -vt 0.944223 0.253906 -vt 0.950199 0.308594 -vt 0.944223 0.308594 -vt 0.944223 0.191406 -vt 0.950199 0.246094 -vt 0.944223 0.246094 -vt 0.944223 0.183594 -vt 0.950199 0.125000 -vt 0.950199 0.183594 -vt 0.944223 0.121094 -vt 0.950199 0.062500 -vt 0.950199 0.121094 -vt 0.944223 0.058594 -vt 0.950199 0.000000 -vt 0.950199 0.058594 -vt 0.944223 0.996094 -vt 0.950199 0.937500 -vt 0.950199 0.996094 -vt 0.968127 0.937500 -vt 0.962151 0.996094 -vt 0.962151 0.937500 -vt 0.962151 0.933594 -vt 0.968127 0.875000 -vt 0.962151 0.812500 -vt 0.968127 0.812500 -vt 0.962151 0.808594 -vt 0.968127 0.750000 -vt 0.962151 0.687500 -vt 0.968127 0.687500 -vt 0.962151 0.625000 -vt 0.968127 0.625000 -vt 0.962151 0.562500 -vt 0.968127 0.562500 -vt 0.962151 0.500000 -vt 0.968127 0.500000 -vt 0.962151 0.437500 -vt 0.968127 0.437500 -vt 0.962151 0.375000 -vt 0.968127 0.375000 -vt 0.962151 0.312500 -vt 0.968127 0.312500 -vt 0.962151 0.250000 -vt 0.968127 0.250000 -vt 0.962151 0.246094 -vt 0.968127 0.187500 -vt 0.962151 0.183594 -vt 0.968127 0.125000 -vt 0.962151 0.121094 -vt 0.968127 0.062500 -vt 0.962151 0.058594 -vt 0.968127 -0.000000 -vt 0.770916 0.468772 -vt 0.778873 0.484375 -vt 0.770916 0.499978 -vt 0.828685 0.492188 -vt 0.826693 0.503906 -vt 0.826693 0.492188 -vt 0.828685 0.515625 -vt 0.826693 0.515625 -vt 0.828685 0.527344 -vt 0.826693 0.527344 -vt 0.828685 0.539062 -vt 0.826693 0.539062 -vt 0.826693 0.550781 -vt 0.828685 0.550781 -vt 0.826693 0.562500 -vt 0.828685 0.468750 -vt 0.826693 0.480469 -vt 0.826693 0.468750 -vt 0.775907 0.505839 -vt 0.778799 0.519531 -vt 0.759050 0.519531 -vt 0.904382 0.125000 -vt 0.892430 0.183594 -vt 0.892430 0.128906 -vt 0.904382 0.062500 -vt 0.892430 0.121094 -vt 0.892430 0.066406 -vt 0.904382 -0.000000 -vt 0.892430 0.058594 -vt 0.892430 0.003906 -vt 0.904382 0.937500 -vt 0.892430 0.996094 -vt 0.892430 0.941406 -vt 0.904382 0.875000 -vt 0.892430 0.933594 -vt 0.892430 0.878906 -vt 0.904382 0.812500 -vt 0.892430 0.871094 -vt 0.892430 0.816406 -vt 0.892430 0.753906 -vt 0.904382 0.750000 -vt 0.892430 0.691406 -vt 0.904382 0.687500 -vt 0.892430 0.628906 -vt 0.904382 0.625000 -vt 0.892430 0.566406 -vt 0.904382 0.562500 -vt 0.892430 0.503906 -vt 0.904382 0.500000 -vt 0.892430 0.441406 -vt 0.904382 0.437500 -vt 0.892430 0.378906 -vt 0.904382 0.375000 -vt 0.892430 0.316406 -vt 0.904382 0.312500 -vt 0.892430 0.253906 -vt 0.904382 0.250000 -vt 0.944223 0.191406 -vt 0.938247 0.246094 -vt 0.938247 0.187500 -vt 0.938247 0.125000 -vt 0.944223 0.183594 -vt 0.938247 0.183594 -vt 0.938295 0.062694 -vt 0.944223 0.121094 -vt 0.938247 0.121094 -vt 0.938247 0.000000 -vt 0.944223 0.058594 -vt 0.938295 0.058027 -vt 0.938247 0.937500 -vt 0.944223 0.996094 -vt 0.938247 0.996094 -vt 0.938247 0.875000 -vt 0.944223 0.933594 -vt 0.938247 0.933594 -vt 0.938247 0.812500 -vt 0.944223 0.871094 -vt 0.938247 0.871094 -vt 0.944223 0.753906 -vt 0.938247 0.808594 -vt 0.938247 0.750000 -vt 0.944223 0.691406 -vt 0.938247 0.746094 -vt 0.938247 0.687500 -vt 0.944223 0.628906 -vt 0.938247 0.683594 -vt 0.938247 0.625000 -vt 0.944223 0.566406 -vt 0.938247 0.621094 -vt 0.938247 0.562500 -vt 0.944223 0.503906 -vt 0.938247 0.558594 -vt 0.938247 0.500000 -vt 0.944223 0.441406 -vt 0.938247 0.496094 -vt 0.938247 0.437500 -vt 0.944223 0.378906 -vt 0.938247 0.433594 -vt 0.938247 0.375000 -vt 0.944223 0.316406 -vt 0.938247 0.371094 -vt 0.938247 0.312500 -vt 0.944223 0.253906 -vt 0.938247 0.308594 -vt 0.938247 0.250000 -vt 0.920319 0.187500 -vt 0.926295 0.246094 -vt 0.920319 0.250000 -vt 0.920319 0.312500 -vt 0.926295 0.250000 -vt 0.926295 0.308594 -vt 0.920319 0.375000 -vt 0.926295 0.312500 -vt 0.926295 0.371094 -vt 0.920319 0.437500 -vt 0.926295 0.375000 -vt 0.926295 0.433594 -vt 0.920319 0.500000 -vt 0.926295 0.437500 -vt 0.926295 0.496094 -vt 0.920319 0.562500 -vt 0.926295 0.500000 -vt 0.926295 0.558594 -vt 0.920319 0.625000 -vt 0.926295 0.562500 -vt 0.926295 0.621094 -vt 0.920319 0.687500 -vt 0.926295 0.625000 -vt 0.926295 0.683594 -vt 0.926295 0.746094 -vt 0.920319 0.750000 -vt 0.926295 0.808594 -vt 0.920319 0.812500 -vt 0.926295 0.871094 -vt 0.920319 0.875000 -vt 0.926295 0.933594 -vt 0.920319 0.937500 -vt 0.926295 0.996094 -vt 0.920319 1.000000 -vt 0.920319 -0.000000 -vt 0.926295 0.058594 -vt 0.920319 0.062500 -vt 0.926295 0.121094 -vt 0.920319 0.125000 -vt 0.926295 0.183594 -vt 0.730756 0.268904 -vt 0.815061 0.268904 -vt 0.815061 0.434221 -vt 0.772909 0.000291 -vt 0.832521 0.117188 -vt 0.772909 0.234084 -vt 0.888446 0.273438 -vt 0.836653 0.312500 -vt 0.836653 0.273438 -vt 0.888446 0.000000 -vt 0.836653 0.039062 -vt 0.836653 0.000000 -vt 0.888446 0.351562 -vt 0.836653 0.390625 -vt 0.836653 0.351562 -vt 0.888446 0.039062 -vt 0.836653 0.078125 -vt 0.888446 0.390625 -vt 0.836653 0.429688 -vt 0.888446 0.117188 -vt 0.836653 0.117188 -vt 0.888446 0.429688 -vt 0.836653 0.468750 -vt 0.836653 0.156250 -vt 0.888446 0.468750 -vt 0.836653 0.507812 -vt 0.888446 0.156250 -vt 0.836653 0.195312 -vt 0.888446 0.507812 -vt 0.836653 0.546875 -vt 0.888446 0.234375 -vt 0.836653 0.234375 -vt 0.888446 0.546875 -vt 0.836653 0.585938 -vt 0.888446 0.585938 -vt 0.836653 0.625000 -vt 0.888446 0.312500 -vt 0.730756 0.034529 -vt 0.815061 0.034529 -vt 0.815061 0.199846 -vt 0.772909 0.234666 -vt 0.832521 0.351562 -vt 0.772908 0.468459 -vt 0.996016 0.378906 -vt 0.984064 0.437500 -vt 0.984064 0.375000 -vt 0.996016 0.441406 -vt 0.984064 0.500000 -vt 0.996016 0.503906 -vt 0.984064 0.562500 -vt 0.996016 0.566406 -vt 0.984064 0.625000 -vt 0.996016 0.628906 -vt 0.984064 0.687500 -vt 0.996016 0.691406 -vt 0.984064 0.750000 -vt 0.996016 0.753906 -vt 0.984064 0.812500 -vt 0.996016 0.871094 -vt 0.984064 0.875000 -vt 0.996016 0.933594 -vt 0.984064 0.937500 -vt 0.996016 0.996094 -vt 0.984064 1.000000 -vt 0.984064 -0.000000 -vt 0.996016 0.058594 -vt 0.984064 0.062500 -vt 0.996016 0.121094 -vt 0.984064 0.125000 -vt 0.996016 0.183594 -vt 0.984064 0.187500 -vt 0.996016 0.191406 -vt 0.984064 0.250000 -vt 0.996016 0.253906 -vt 0.984064 0.312500 -vt 0.996016 0.316406 -vt 0.237696 0.108441 -vt 0.237699 0.233606 -vt 0.209955 0.233606 +vt 0.233068 0.109375 +vt 0.237052 0.234375 +vt 0.209163 0.234375 vt 0.041833 0.109375 vt 0.045817 0.234375 vt 0.021912 0.109375 @@ -1761,410 +4868,6 @@ vt 0.557769 0.304688 vt 0.256642 0.222588 vt 0.266932 0.187637 vt 0.277223 0.222588 -vt 0.770916 0.468772 -vt 0.778873 0.484375 -vt 0.770916 0.499978 -vt 0.828685 0.492188 -vt 0.826693 0.503906 -vt 0.826693 0.492188 -vt 0.828685 0.515625 -vt 0.826693 0.515625 -vt 0.828685 0.527344 -vt 0.826693 0.527344 -vt 0.828685 0.539062 -vt 0.826693 0.539062 -vt 0.826693 0.550781 -vt 0.828685 0.550781 -vt 0.826693 0.562500 -vt 0.828685 0.468750 -vt 0.826693 0.480469 -vt 0.826693 0.468750 -vt 0.768925 0.538894 -vt 0.759050 0.519531 -vt 0.768925 0.500168 -vt 0.770916 0.468772 -vt 0.778873 0.484375 -vt 0.770916 0.499978 -vt 0.828685 0.492188 -vt 0.826693 0.503906 -vt 0.826693 0.492188 -vt 0.828685 0.515625 -vt 0.826693 0.515625 -vt 0.828685 0.527344 -vt 0.826693 0.527344 -vt 0.828685 0.539062 -vt 0.826693 0.539062 -vt 0.826693 0.550781 -vt 0.828685 0.550781 -vt 0.826693 0.562500 -vt 0.828685 0.468750 -vt 0.826693 0.480469 -vt 0.826693 0.468750 -vt 0.828685 0.480469 -vt 0.775907 0.505839 -vt 0.778799 0.519531 -vt 0.759050 0.519531 -vt 0.762959 0.484375 -vt 0.770916 0.468772 -vt 0.778873 0.484375 -vt 0.828685 0.492188 -vt 0.826693 0.503906 -vt 0.826693 0.492188 -vt 0.828685 0.515625 -vt 0.826693 0.515625 -vt 0.828685 0.527344 -vt 0.826693 0.527344 -vt 0.828685 0.539062 -vt 0.826693 0.539062 -vt 0.826693 0.550781 -vt 0.828685 0.550781 -vt 0.826693 0.562500 -vt 0.828685 0.468750 -vt 0.826693 0.480469 -vt 0.826693 0.468750 -vt 0.828685 0.480469 -vt 0.775907 0.505839 -vt 0.778799 0.519531 -vt 0.759050 0.519531 -vt 0.762959 0.484375 -vt 0.770916 0.468772 -vt 0.778873 0.484375 -vt 0.828685 0.492188 -vt 0.826693 0.503906 -vt 0.826693 0.492188 -vt 0.828685 0.515625 -vt 0.826693 0.515625 -vt 0.828685 0.527344 -vt 0.826693 0.527344 -vt 0.828685 0.539062 -vt 0.826693 0.539062 -vt 0.826693 0.550781 -vt 0.828685 0.550781 -vt 0.826693 0.562500 -vt 0.826693 0.468750 -vt 0.828685 0.480469 -vt 0.826693 0.480469 -vt 0.775907 0.505839 -vt 0.778799 0.519531 -vt 0.759050 0.519531 -vt 0.762959 0.484375 -vt 0.770916 0.468772 -vt 0.778873 0.484375 -vt 0.828685 0.492188 -vt 0.826693 0.503906 -vt 0.826693 0.492188 -vt 0.828685 0.515625 -vt 0.826693 0.515625 -vt 0.828685 0.527344 -vt 0.826693 0.527344 -vt 0.828685 0.539062 -vt 0.826693 0.539062 -vt 0.826693 0.550781 -vt 0.828685 0.550781 -vt 0.826693 0.562500 -vt 0.826693 0.468750 -vt 0.828685 0.480469 -vt 0.826693 0.480469 -vt 0.778799 0.519531 -vt 0.768925 0.538894 -vt 0.759050 0.519531 -vt 0.770916 0.468772 -vt 0.778873 0.484375 -vt 0.770916 0.499978 -vt 0.828685 0.492188 -vt 0.826693 0.503906 -vt 0.826693 0.492188 -vt 0.828685 0.515625 -vt 0.826693 0.515625 -vt 0.828685 0.527344 -vt 0.826693 0.527344 -vt 0.828685 0.539062 -vt 0.826693 0.539062 -vt 0.826693 0.550781 -vt 0.828685 0.550781 -vt 0.826693 0.562500 -vt 0.828685 0.468750 -vt 0.826693 0.480469 -vt 0.826693 0.468750 -vt 0.778799 0.519531 -vt 0.768925 0.538894 -vt 0.759050 0.519531 -vt 0.770916 0.499978 -vt 0.762959 0.484375 -vt 0.770916 0.468772 -vt 0.828685 0.492188 -vt 0.826693 0.503906 -vt 0.826693 0.492188 -vt 0.828685 0.515625 -vt 0.826693 0.515625 -vt 0.828685 0.527344 -vt 0.826693 0.527344 -vt 0.828685 0.539062 -vt 0.826693 0.539062 -vt 0.826693 0.550781 -vt 0.828685 0.550781 -vt 0.826693 0.562500 -vt 0.826693 0.468750 -vt 0.828685 0.480469 -vt 0.826693 0.480469 -vt 0.775907 0.505839 -vt 0.778799 0.519531 -vt 0.759050 0.519531 -vt 0.762959 0.484375 -vt 0.770916 0.468772 -vt 0.778873 0.484375 -vt 0.828685 0.492188 -vt 0.826693 0.503906 -vt 0.826693 0.492188 -vt 0.828685 0.515625 -vt 0.826693 0.515625 -vt 0.828685 0.527344 -vt 0.826693 0.527344 -vt 0.828685 0.539062 -vt 0.826693 0.539062 -vt 0.826693 0.550781 -vt 0.828685 0.550781 -vt 0.826693 0.562500 -vt 0.828685 0.468750 -vt 0.826693 0.480469 -vt 0.826693 0.468750 -vt 0.828685 0.480469 -vt 0.778799 0.519531 -vt 0.768925 0.538894 -vt 0.759050 0.519531 -vt 0.762959 0.484375 -vt 0.770916 0.468772 -vt 0.778873 0.484375 -vt 0.828685 0.492188 -vt 0.826693 0.503906 -vt 0.826693 0.492188 -vt 0.828685 0.515625 -vt 0.826693 0.515625 -vt 0.828685 0.527344 -vt 0.826693 0.527344 -vt 0.828685 0.539062 -vt 0.826693 0.539062 -vt 0.826693 0.550781 -vt 0.828685 0.550781 -vt 0.826693 0.562500 -vt 0.828685 0.468750 -vt 0.826693 0.480469 -vt 0.826693 0.468750 -vt 0.775907 0.505839 -vt 0.778799 0.519531 -vt 0.759050 0.519531 -vt 0.778873 0.484375 -vt 0.776543 0.495408 -vt 0.770916 0.499978 -vt 0.828685 0.492188 -vt 0.826693 0.503906 -vt 0.826693 0.492188 -vt 0.828685 0.515625 -vt 0.826693 0.515625 -vt 0.828685 0.527344 -vt 0.826693 0.527344 -vt 0.828685 0.539062 -vt 0.826693 0.539062 -vt 0.826693 0.550781 -vt 0.828685 0.550781 -vt 0.826693 0.562500 -vt 0.826693 0.468750 -vt 0.828685 0.480469 -vt 0.826693 0.480469 -vt 0.778799 0.519531 -vt 0.768925 0.538894 -vt 0.759050 0.519531 -vt 0.770916 0.468772 -vt 0.778873 0.484375 -vt 0.770916 0.499978 -vt 0.828685 0.492188 -vt 0.826693 0.503906 -vt 0.826693 0.492188 -vt 0.828685 0.515625 -vt 0.826693 0.515625 -vt 0.828685 0.527344 -vt 0.826693 0.527344 -vt 0.828685 0.539062 -vt 0.826693 0.539062 -vt 0.826693 0.550781 -vt 0.828685 0.550781 -vt 0.826693 0.562500 -vt 0.826693 0.468750 -vt 0.828685 0.480469 -vt 0.826693 0.480469 -vt 0.778799 0.519531 -vt 0.768925 0.538894 -vt 0.759050 0.519531 -vt 0.770916 0.499978 -vt 0.762959 0.484375 -vt 0.770916 0.468772 -vt 0.828685 0.492188 -vt 0.826693 0.503906 -vt 0.826693 0.492188 -vt 0.828685 0.515625 -vt 0.826693 0.515625 -vt 0.828685 0.527344 -vt 0.826693 0.527344 -vt 0.828685 0.539062 -vt 0.826693 0.539062 -vt 0.826693 0.550781 -vt 0.828685 0.550781 -vt 0.826693 0.562500 -vt 0.826693 0.468750 -vt 0.828685 0.480469 -vt 0.826693 0.480469 -vt 0.775907 0.505839 -vt 0.778799 0.519531 -vt 0.759050 0.519531 -vt 0.770916 0.499978 -vt 0.762959 0.484375 -vt 0.770916 0.468772 -vt 0.828685 0.492188 -vt 0.826693 0.503906 -vt 0.826693 0.492188 -vt 0.828685 0.515625 -vt 0.826693 0.515625 -vt 0.828685 0.527344 -vt 0.826693 0.527344 -vt 0.828685 0.539062 -vt 0.826693 0.539062 -vt 0.826693 0.550781 -vt 0.828685 0.550781 -vt 0.826693 0.562500 -vt 0.828685 0.468750 -vt 0.826693 0.480469 -vt 0.826693 0.468750 -vt 0.828685 0.480469 -vt 0.778799 0.519531 -vt 0.768925 0.538894 -vt 0.759050 0.519531 -vt 0.762959 0.484375 -vt 0.770916 0.468772 -vt 0.778873 0.484375 -vt 0.828685 0.492188 -vt 0.826693 0.503906 -vt 0.826693 0.492188 -vt 0.828685 0.515625 -vt 0.826693 0.515625 -vt 0.828685 0.527344 -vt 0.826693 0.527344 -vt 0.828685 0.539062 -vt 0.826693 0.539062 -vt 0.826693 0.550781 -vt 0.828685 0.550781 -vt 0.826693 0.562500 -vt 0.828685 0.468750 -vt 0.826693 0.480469 -vt 0.826693 0.468750 -vt 0.775907 0.505839 -vt 0.778799 0.519531 -vt 0.759050 0.519531 -vt 0.762959 0.484375 -vt 0.770916 0.468772 -vt 0.778873 0.484375 -vt 0.828685 0.492188 -vt 0.826693 0.503906 -vt 0.826693 0.492188 -vt 0.828685 0.515625 -vt 0.826693 0.515625 -vt 0.828685 0.527344 -vt 0.826693 0.527344 -vt 0.828685 0.539062 -vt 0.826693 0.539062 -vt 0.826693 0.550781 -vt 0.828685 0.550781 -vt 0.826693 0.562500 -vt 0.826693 0.468750 -vt 0.828685 0.480469 -vt 0.826693 0.480469 -vt 0.778799 0.519531 -vt 0.768925 0.538894 -vt 0.759050 0.519531 -vt 0.770916 0.468772 -vt 0.778873 0.484375 -vt 0.770916 0.499978 -vt 0.828685 0.492188 -vt 0.826693 0.503906 -vt 0.826693 0.492188 -vt 0.828685 0.515625 -vt 0.826693 0.515625 -vt 0.828685 0.527344 -vt 0.826693 0.527344 -vt 0.828685 0.539062 -vt 0.826693 0.539062 -vt 0.826693 0.550781 -vt 0.828685 0.550781 -vt 0.826693 0.562500 -vt 0.826693 0.468750 -vt 0.828685 0.480469 -vt 0.826693 0.480469 -vt 0.778799 0.519531 -vt 0.768925 0.538894 -vt 0.759050 0.519531 -vt 0.770916 0.499978 -vt 0.762959 0.484375 -vt 0.770916 0.468772 -vt 0.828685 0.492188 -vt 0.826693 0.503906 -vt 0.826693 0.492188 -vt 0.828685 0.515625 -vt 0.826693 0.515625 -vt 0.828685 0.527344 -vt 0.826693 0.527344 -vt 0.828685 0.539062 -vt 0.826693 0.539062 -vt 0.826693 0.550781 -vt 0.828685 0.550781 -vt 0.826693 0.562500 -vt 0.826693 0.468750 -vt 0.828685 0.480469 -vt 0.826693 0.480469 -vt 0.768925 0.500168 -vt 0.775907 0.505839 -vt 0.778799 0.519531 -vt 0.762959 0.484375 -vt 0.770916 0.468772 -vt 0.778873 0.484375 -vt 0.828685 0.492188 -vt 0.826693 0.503906 -vt 0.826693 0.492188 -vt 0.828685 0.515625 -vt 0.826693 0.515625 -vt 0.828685 0.527344 -vt 0.826693 0.527344 -vt 0.828685 0.539062 -vt 0.826693 0.539062 -vt 0.826693 0.550781 -vt 0.828685 0.550781 -vt 0.826693 0.562500 -vt 0.828685 0.468750 -vt 0.826693 0.480469 -vt 0.826693 0.468750 -vt 0.828685 0.480469 -vt 0.778799 0.519531 -vt 0.768925 0.538894 -vt 0.759050 0.519531 -vt 0.762959 0.484375 -vt 0.770916 0.468772 -vt 0.778873 0.484375 -vt 0.828685 0.492188 -vt 0.826693 0.503906 -vt 0.826693 0.492188 -vt 0.828685 0.503906 -vt 0.826693 0.515625 -vt 0.828685 0.527344 -vt 0.826693 0.527344 -vt 0.828685 0.539062 -vt 0.826693 0.539062 -vt 0.826693 0.550781 -vt 0.828685 0.550781 -vt 0.826693 0.562500 -vt 0.828685 0.468750 -vt 0.826693 0.480469 -vt 0.826693 0.468750 -vt 0.775907 0.505839 -vt 0.778799 0.519531 -vt 0.759050 0.519531 vt 0.063745 0.234375 vt 0.191235 0.492188 vt 0.063745 0.101562 @@ -2177,168 +4880,17 @@ vt 0.286853 0.167969 vt 0.286853 0.105469 vt 0.362550 0.000000 vt 0.410359 0.210938 -vt 0.950199 0.933594 -vt 0.950199 0.812500 -vt 0.950199 0.750000 -vt 0.950199 0.687500 -vt 0.950199 0.625000 -vt 0.950199 0.562500 -vt 0.950199 0.500000 -vt 0.950199 0.437500 -vt 0.950199 0.375000 -vt 0.950199 0.312500 -vt 0.950199 0.250000 -vt 0.950199 0.187500 -vt 0.944223 0.128906 -vt 0.944223 0.066406 -vt 0.944223 0.003906 -vt 0.944223 0.941406 -vt 0.968127 1.000000 -vt 0.962151 0.875000 -vt 0.962151 0.871094 -vt 0.962151 0.750000 -vt 0.962151 0.746094 -vt 0.962151 0.683594 -vt 0.962151 0.621094 -vt 0.962151 0.558594 -vt 0.962151 0.496094 -vt 0.962151 0.433594 -vt 0.962151 0.371094 -vt 0.962151 0.308594 -vt 0.962151 0.187500 -vt 0.962151 0.125000 -vt 0.962151 0.062500 -vt 0.962151 0.000000 -vt 0.765290 0.495408 -vt 0.762959 0.484375 -vt 0.765290 0.473342 -vt 0.776543 0.473342 -vt 0.776543 0.495408 -vt 0.828685 0.503906 -vt 0.828685 0.562500 -vt 0.828685 0.480469 -vt 0.775907 0.533223 -vt 0.768925 0.538894 -vt 0.761942 0.533223 -vt 0.761942 0.505839 -vt 0.768925 0.500168 -vt 0.904382 1.000000 -vt 0.892430 0.808594 -vt 0.892430 0.746094 -vt 0.892430 0.683594 -vt 0.892430 0.621094 -vt 0.892430 0.558594 -vt 0.892430 0.496094 -vt 0.892430 0.433594 -vt 0.892430 0.371094 -vt 0.892430 0.308594 -vt 0.944223 0.246094 -vt 0.944223 0.128906 -vt 0.944223 0.066406 -vt 0.944223 0.003906 -vt 0.944223 0.941406 -vt 0.944223 0.878906 -vt 0.944223 0.816406 -vt 0.944223 0.808594 -vt 0.944223 0.746094 -vt 0.944223 0.683594 -vt 0.944223 0.621094 -vt 0.944223 0.558594 -vt 0.944223 0.496094 -vt 0.944223 0.433594 -vt 0.944223 0.371094 -vt 0.944223 0.308594 -vt 0.926295 0.187500 -vt 0.926295 0.687500 -vt 0.926295 0.750000 -vt 0.926295 0.812500 -vt 0.926295 0.875000 -vt 0.926295 0.937500 -vt 0.926295 0.000000 -vt 0.926295 0.062500 -vt 0.926295 0.125000 -vt 0.795721 0.459561 -vt 0.772908 0.468459 -vt 0.750096 0.459561 -vt 0.730756 0.434221 -vt 0.717834 0.396297 -vt 0.713296 0.351562 -vt 0.717834 0.306828 -vt 0.750096 0.243564 -vt 0.772908 0.234666 -vt 0.795721 0.243564 -vt 0.827983 0.306828 -vt 0.832521 0.351563 -vt 0.827983 0.396297 -vt 0.750096 0.225186 -vt 0.730756 0.199846 -vt 0.717834 0.161922 -vt 0.713296 0.117187 -vt 0.717834 0.072453 -vt 0.730756 0.034529 -vt 0.750096 0.009189 -vt 0.795721 0.009189 -vt 0.815061 0.034529 -vt 0.827984 0.072453 -vt 0.827983 0.161922 -vt 0.815061 0.199846 -vt 0.795721 0.225186 -vt 0.888446 0.078125 -vt 0.888446 0.195312 -vt 0.888446 0.625000 -vt 0.795721 0.225186 -vt 0.772909 0.234084 -vt 0.750096 0.225186 -vt 0.730756 0.199846 -vt 0.717834 0.161922 -vt 0.713296 0.117188 -vt 0.717834 0.072453 -vt 0.750096 0.009189 -vt 0.772909 0.000291 -vt 0.795721 0.009189 -vt 0.827984 0.072453 -vt 0.832521 0.117188 -vt 0.827983 0.161922 -vt 0.750096 0.459561 -vt 0.730756 0.434221 -vt 0.717834 0.396297 -vt 0.713296 0.351562 -vt 0.717834 0.306828 -vt 0.730756 0.268904 -vt 0.750096 0.243564 -vt 0.795721 0.243564 -vt 0.815061 0.268904 -vt 0.827983 0.306828 -vt 0.827983 0.396297 -vt 0.815061 0.434221 -vt 0.795721 0.459561 -vt 0.996016 0.433594 -vt 0.996016 0.496094 -vt 0.996016 0.558594 -vt 0.996016 0.621094 -vt 0.996016 0.683594 -vt 0.996016 0.746094 -vt 0.996016 0.808594 -vt 0.996016 0.816406 -vt 0.996016 0.878906 -vt 0.996016 0.941406 -vt 0.996016 0.003906 -vt 0.996016 0.066406 -vt 0.996016 0.128906 -vt 0.996016 0.246094 -vt 0.996016 0.308594 -vt 0.996016 0.371094 -vt 0.213919 0.109255 -vt 0.209955 0.109255 -vt 0.204076 0.072280 -vt 0.246875 0.070815 -vt 0.213255 0.034654 -vt 0.237032 0.033840 -vt 0.231754 0.280238 -vt 0.215901 0.280238 -vt 0.237699 0.109255 -vt 0.255534 0.144228 -vt 0.255534 0.198632 +vt 0.213147 0.109375 +vt 0.209163 0.109375 +vt 0.205179 0.078125 +vt 0.241036 0.078125 +vt 0.213147 0.046875 +vt 0.233068 0.046875 +vt 0.231076 0.281250 +vt 0.215139 0.281250 +vt 0.237052 0.109375 +vt 0.254980 0.144531 +vt 0.254980 0.199219 vt 0.039841 0.281250 vt 0.023904 0.281250 vt 0.017928 0.234375 @@ -2404,248 +4956,6 @@ vt 0.260991 0.190759 vt 0.272874 0.190759 vt 0.277223 0.199287 vt 0.278815 0.210938 -vt 0.765290 0.495408 -vt 0.762959 0.484375 -vt 0.765290 0.473342 -vt 0.776543 0.473342 -vt 0.776543 0.495408 -vt 0.828685 0.503906 -vt 0.828685 0.562500 -vt 0.828685 0.480469 -vt 0.778799 0.519531 -vt 0.775907 0.533223 -vt 0.761942 0.533223 -vt 0.761942 0.505839 -vt 0.775907 0.505839 -vt 0.765290 0.495408 -vt 0.762959 0.484375 -vt 0.765290 0.473342 -vt 0.776543 0.473342 -vt 0.776543 0.495408 -vt 0.828685 0.503906 -vt 0.828685 0.562500 -vt 0.775907 0.533223 -vt 0.768925 0.538894 -vt 0.761942 0.533223 -vt 0.761942 0.505839 -vt 0.768925 0.500168 -vt 0.770916 0.499978 -vt 0.765290 0.495408 -vt 0.765290 0.473342 -vt 0.776543 0.473342 -vt 0.776543 0.495408 -vt 0.828685 0.503906 -vt 0.828685 0.562500 -vt 0.775907 0.533223 -vt 0.768925 0.538894 -vt 0.761942 0.533223 -vt 0.761942 0.505839 -vt 0.768925 0.500168 -vt 0.770916 0.499978 -vt 0.765290 0.495408 -vt 0.765290 0.473342 -vt 0.776543 0.473342 -vt 0.776543 0.495408 -vt 0.828685 0.503906 -vt 0.828685 0.562500 -vt 0.828685 0.468750 -vt 0.775907 0.533223 -vt 0.768925 0.538894 -vt 0.761942 0.533223 -vt 0.761942 0.505839 -vt 0.768925 0.500168 -vt 0.770916 0.499978 -vt 0.765290 0.495408 -vt 0.765290 0.473342 -vt 0.776543 0.473342 -vt 0.776543 0.495408 -vt 0.828685 0.503906 -vt 0.828685 0.562500 -vt 0.828685 0.468750 -vt 0.775907 0.533223 -vt 0.761942 0.533223 -vt 0.761942 0.505839 -vt 0.768925 0.500168 -vt 0.775907 0.505839 -vt 0.765290 0.495408 -vt 0.762959 0.484375 -vt 0.765290 0.473342 -vt 0.776543 0.473342 -vt 0.776543 0.495408 -vt 0.828685 0.503906 -vt 0.828685 0.562500 -vt 0.828685 0.480469 -vt 0.775907 0.533223 -vt 0.761942 0.533223 -vt 0.761942 0.505839 -vt 0.768925 0.500168 -vt 0.775907 0.505839 -vt 0.765290 0.495408 -vt 0.765290 0.473342 -vt 0.776543 0.473342 -vt 0.778873 0.484375 -vt 0.776543 0.495408 -vt 0.828685 0.503906 -vt 0.828685 0.562500 -vt 0.828685 0.468750 -vt 0.775907 0.533223 -vt 0.768925 0.538894 -vt 0.761942 0.533223 -vt 0.761942 0.505839 -vt 0.768925 0.500168 -vt 0.770916 0.499978 -vt 0.765290 0.495408 -vt 0.765290 0.473342 -vt 0.776543 0.473342 -vt 0.776543 0.495408 -vt 0.828685 0.503906 -vt 0.828685 0.562500 -vt 0.775907 0.533223 -vt 0.761942 0.533223 -vt 0.761942 0.505839 -vt 0.768925 0.500168 -vt 0.775907 0.505839 -vt 0.770916 0.499978 -vt 0.765290 0.495408 -vt 0.765290 0.473342 -vt 0.776543 0.473342 -vt 0.776543 0.495408 -vt 0.828685 0.503906 -vt 0.828685 0.562500 -vt 0.828685 0.480469 -vt 0.775907 0.533223 -vt 0.768925 0.538894 -vt 0.761942 0.533223 -vt 0.761942 0.505839 -vt 0.768925 0.500168 -vt 0.765290 0.495408 -vt 0.762959 0.484375 -vt 0.765290 0.473342 -vt 0.770916 0.468772 -vt 0.776543 0.473342 -vt 0.828685 0.503906 -vt 0.828685 0.562500 -vt 0.828685 0.468750 -vt 0.775907 0.533223 -vt 0.761942 0.533223 -vt 0.761942 0.505839 -vt 0.768925 0.500168 -vt 0.775907 0.505839 -vt 0.765290 0.495408 -vt 0.762959 0.484375 -vt 0.765290 0.473342 -vt 0.776543 0.473342 -vt 0.776543 0.495408 -vt 0.828685 0.503906 -vt 0.828685 0.562500 -vt 0.828685 0.468750 -vt 0.775907 0.533223 -vt 0.761942 0.533223 -vt 0.761942 0.505839 -vt 0.768925 0.500168 -vt 0.775907 0.505839 -vt 0.765290 0.495408 -vt 0.765290 0.473342 -vt 0.776543 0.473342 -vt 0.778873 0.484375 -vt 0.776543 0.495408 -vt 0.828685 0.503906 -vt 0.828685 0.562500 -vt 0.828685 0.468750 -vt 0.775907 0.533223 -vt 0.768925 0.538894 -vt 0.761942 0.533223 -vt 0.761942 0.505839 -vt 0.768925 0.500168 -vt 0.765290 0.495408 -vt 0.765290 0.473342 -vt 0.776543 0.473342 -vt 0.778873 0.484375 -vt 0.776543 0.495408 -vt 0.828685 0.503906 -vt 0.828685 0.562500 -vt 0.775907 0.533223 -vt 0.761942 0.533223 -vt 0.761942 0.505839 -vt 0.768925 0.500168 -vt 0.775907 0.505839 -vt 0.770916 0.499978 -vt 0.765290 0.495408 -vt 0.765290 0.473342 -vt 0.776543 0.473342 -vt 0.776543 0.495408 -vt 0.828685 0.503906 -vt 0.828685 0.562500 -vt 0.828685 0.480469 -vt 0.775907 0.533223 -vt 0.768925 0.538894 -vt 0.761942 0.533223 -vt 0.761942 0.505839 -vt 0.768925 0.500168 -vt 0.770916 0.499978 -vt 0.765290 0.495408 -vt 0.765290 0.473342 -vt 0.776543 0.473342 -vt 0.776543 0.495408 -vt 0.828685 0.503906 -vt 0.828685 0.562500 -vt 0.828685 0.468750 -vt 0.775907 0.533223 -vt 0.761942 0.533223 -vt 0.761942 0.505839 -vt 0.768925 0.500168 -vt 0.775907 0.505839 -vt 0.765290 0.495408 -vt 0.762959 0.484375 -vt 0.765290 0.473342 -vt 0.776543 0.473342 -vt 0.776543 0.495408 -vt 0.828685 0.503906 -vt 0.828685 0.562500 -vt 0.828685 0.468750 -vt 0.775907 0.533223 -vt 0.761942 0.533223 -vt 0.761942 0.505839 -vt 0.768925 0.500168 -vt 0.775907 0.505839 -vt 0.765290 0.495408 -vt 0.765290 0.473342 -vt 0.776543 0.473342 -vt 0.778873 0.484375 -vt 0.776543 0.495408 -vt 0.828685 0.503906 -vt 0.828685 0.562500 -vt 0.828685 0.468750 -vt 0.775907 0.533223 -vt 0.768925 0.538894 -vt 0.761942 0.533223 -vt 0.759050 0.519531 -vt 0.761942 0.505839 -vt 0.770916 0.499978 -vt 0.765290 0.495408 -vt 0.765290 0.473342 -vt 0.776543 0.473342 -vt 0.776543 0.495408 -vt 0.828685 0.503906 -vt 0.828685 0.562500 -vt 0.775907 0.533223 -vt 0.761942 0.533223 -vt 0.761942 0.505839 -vt 0.768925 0.500168 -vt 0.775907 0.505839 -vt 0.770916 0.499978 -vt 0.765290 0.495408 -vt 0.765290 0.473342 -vt 0.776543 0.473342 -vt 0.776543 0.495408 -vt 0.828685 0.515625 -vt 0.828685 0.562500 -vt 0.828685 0.480469 -vt 0.775907 0.533223 -vt 0.768925 0.538894 -vt 0.761942 0.533223 -vt 0.761942 0.505839 -vt 0.768925 0.500168 vt 0.338645 0.031250 vt 0.338645 0.046875 vt 0.338645 0.109375 @@ -2696,135 +5006,6 @@ vt 0.286853 0.281250 vt 0.286853 0.359375 vt 0.286853 0.328125 vt 0.286853 0.406250 -vt 0.778884 0.503906 -vt 0.778884 0.492188 -vt 0.778884 0.480469 -vt 0.778884 0.468750 -vt 0.778884 0.550781 -vt 0.778884 0.539062 -vt 0.778884 0.527344 -vt 0.778884 0.515625 -vt 0.778884 0.562500 -vt 0.832669 0.550781 -vt 0.832669 0.527344 -vt 0.832669 0.515625 -vt 0.832669 0.492188 -vt 0.832669 0.562500 -vt 0.832669 0.539062 -vt 0.832669 0.503906 -vt 0.832669 0.480469 -vt 0.888446 0.566406 -vt 0.888446 0.441406 -vt 0.888446 0.628906 -vt 0.888446 0.691406 -vt 0.888446 0.753906 -vt 0.888446 0.816406 -vt 0.888446 0.878906 -vt 0.888446 0.941406 -vt 0.888446 0.003906 -vt 0.888446 0.066406 -vt 0.888446 0.128906 -vt 0.888446 0.191406 -vt 0.888446 0.253906 -vt 0.888446 0.371094 -vt 0.888446 0.316406 -vt 0.888446 0.503906 -vt 0.888446 0.378906 -vt 0.836653 0.609375 -vt 0.832669 0.562500 -vt 0.836653 0.562500 -vt 0.836653 0.234375 -vt 0.832669 0.187500 -vt 0.836653 0.187500 -vt 0.836653 0.656250 -vt 0.832669 0.609375 -vt 0.836653 0.281250 -vt 0.832669 0.234375 -vt 0.832669 0.703125 -vt 0.832669 0.656250 -vt 0.836653 0.328125 -vt 0.832669 0.281250 -vt 0.836653 0.750000 -vt 0.836653 0.703125 -vt 0.836653 0.421875 -vt 0.832669 0.375000 -vt 0.836653 0.375000 -vt 0.832669 0.328125 -vt 0.836653 0.046875 -vt 0.832669 0.000000 -vt 0.836653 0.000000 -vt 0.836653 0.468750 -vt 0.832669 0.421875 -vt 0.836653 0.093750 -vt 0.832669 0.046875 -vt 0.836653 0.515625 -vt 0.832669 0.468750 -vt 0.836653 0.140625 -vt 0.832669 0.093750 -vt 0.832669 0.515625 -vt 0.832669 0.140625 -vt 0.832669 0.140625 -vt 0.836653 0.187500 -vt 0.832669 0.187500 -vt 0.832669 0.515625 -vt 0.836653 0.562500 -vt 0.832669 0.562500 -vt 0.832669 0.093750 -vt 0.836653 0.140625 -vt 0.832669 0.468750 -vt 0.836653 0.515625 -vt 0.836653 0.046875 -vt 0.836653 0.093750 -vt 0.832669 0.421875 -vt 0.836653 0.468750 -vt 0.832669 0.000000 -vt 0.832669 0.046875 -vt 0.832669 0.328125 -vt 0.836653 0.375000 -vt 0.832669 0.375000 -vt 0.836653 0.421875 -vt 0.832669 0.703125 -vt 0.836653 0.750000 -vt 0.832669 0.750000 -vt 0.832669 0.281250 -vt 0.836653 0.328125 -vt 0.832669 0.656250 -vt 0.836653 0.703125 -vt 0.832669 0.234375 -vt 0.836653 0.281250 -vt 0.832669 0.609375 -vt 0.836653 0.656250 -vt 0.836653 0.234375 -vt 0.836653 0.609375 -vt 1.000000 0.621094 -vt 1.000000 0.566406 -vt 1.000000 0.441406 -vt 1.000000 0.683594 -vt 1.000000 0.628906 -vt 1.000000 0.746094 -vt 1.000000 0.691406 -vt 1.000000 0.808594 -vt 1.000000 0.753906 -vt 1.000000 0.871094 -vt 1.000000 0.816406 -vt 1.000000 0.933594 -vt 1.000000 0.878906 -vt 1.000000 0.996094 -vt 1.000000 0.941406 -vt 1.000000 0.058594 -vt 1.000000 0.003906 -vt 1.000000 0.121094 -vt 1.000000 0.066406 -vt 1.000000 0.183594 -vt 1.000000 0.128906 -vt 1.000000 0.246094 -vt 1.000000 0.191406 -vt 1.000000 0.308594 -vt 1.000000 0.253906 -vt 1.000000 0.316406 -vt 1.000000 0.558594 -vt 1.000000 0.503906 -vt 1.000000 0.378906 vt 0.191235 0.070312 vt 0.063745 0.523438 vt 0.063745 0.070312 @@ -2833,7 +5014,7 @@ vt 0.191235 0.523438 vt 0.063745 0.554688 vt 0.191235 0.000000 vt 0.063745 0.039062 -vt 0.063745 -0.000000 +vt 0.063745 0.000000 vt 0.545817 0.523438 vt 0.561753 0.367188 vt 0.561753 0.523438 @@ -2849,329 +5030,6 @@ vt 0.478088 0.523438 vt 0.486056 0.367188 vt 0.569721 0.367188 vt 0.569721 0.523438 -vt 0.778884 0.503906 -vt 0.778884 0.492188 -vt 0.778884 0.480469 -vt 0.778884 0.468750 -vt 0.778884 0.550781 -vt 0.778884 0.539062 -vt 0.778884 0.527344 -vt 0.778884 0.515625 -vt 0.778884 0.562500 -vt 0.832669 0.550781 -vt 0.832669 0.527344 -vt 0.832669 0.515625 -vt 0.832669 0.492188 -vt 0.832669 0.562500 -vt 0.832669 0.539062 -vt 0.832669 0.503906 -vt 0.832669 0.480469 -vt 0.778884 0.503906 -vt 0.778884 0.492188 -vt 0.778884 0.480469 -vt 0.778884 0.468750 -vt 0.778884 0.550781 -vt 0.778884 0.539062 -vt 0.778884 0.527344 -vt 0.778884 0.515625 -vt 0.778884 0.562500 -vt 0.832669 0.550781 -vt 0.832669 0.527344 -vt 0.832669 0.515625 -vt 0.832669 0.492188 -vt 0.832669 0.562500 -vt 0.832669 0.539062 -vt 0.832669 0.503906 -vt 0.832669 0.480469 -vt 0.778884 0.503906 -vt 0.778884 0.492188 -vt 0.778884 0.480469 -vt 0.778884 0.468750 -vt 0.778884 0.550781 -vt 0.778884 0.539062 -vt 0.778884 0.527344 -vt 0.778884 0.515625 -vt 0.778884 0.562500 -vt 0.832669 0.550781 -vt 0.832669 0.527344 -vt 0.832669 0.515625 -vt 0.832669 0.492188 -vt 0.832669 0.562500 -vt 0.832669 0.539062 -vt 0.832669 0.503906 -vt 0.832669 0.480469 -vt 0.778884 0.503906 -vt 0.778884 0.492188 -vt 0.778884 0.480469 -vt 0.778884 0.468750 -vt 0.778884 0.550781 -vt 0.778884 0.539062 -vt 0.778884 0.527344 -vt 0.778884 0.515625 -vt 0.778884 0.562500 -vt 0.832669 0.550781 -vt 0.832669 0.527344 -vt 0.832669 0.515625 -vt 0.832669 0.492188 -vt 0.832669 0.562500 -vt 0.832669 0.539062 -vt 0.832669 0.503906 -vt 0.832669 0.480469 -vt 0.778884 0.503906 -vt 0.778884 0.492188 -vt 0.778884 0.480469 -vt 0.778884 0.468750 -vt 0.778884 0.550781 -vt 0.778884 0.539062 -vt 0.778884 0.527344 -vt 0.778884 0.515625 -vt 0.778884 0.562500 -vt 0.832669 0.550781 -vt 0.832669 0.527344 -vt 0.832669 0.515625 -vt 0.832669 0.492188 -vt 0.832669 0.562500 -vt 0.832669 0.539062 -vt 0.832669 0.503906 -vt 0.832669 0.480469 -vt 0.778884 0.503906 -vt 0.778884 0.492188 -vt 0.778884 0.480469 -vt 0.778884 0.468750 -vt 0.778884 0.550781 -vt 0.778884 0.539062 -vt 0.778884 0.527344 -vt 0.778884 0.515625 -vt 0.778884 0.562500 -vt 0.832669 0.550781 -vt 0.832669 0.527344 -vt 0.832669 0.515625 -vt 0.832669 0.492188 -vt 0.832669 0.562500 -vt 0.832669 0.539062 -vt 0.832669 0.503906 -vt 0.832669 0.480469 -vt 0.778884 0.503906 -vt 0.778884 0.492188 -vt 0.778884 0.480469 -vt 0.778884 0.468750 -vt 0.778884 0.550781 -vt 0.778884 0.539062 -vt 0.778884 0.527344 -vt 0.778884 0.515625 -vt 0.778884 0.562500 -vt 0.832669 0.550781 -vt 0.832669 0.527344 -vt 0.832669 0.515625 -vt 0.832669 0.492188 -vt 0.832669 0.562500 -vt 0.832669 0.539062 -vt 0.832669 0.503906 -vt 0.832669 0.480469 -vt 0.778884 0.503906 -vt 0.778884 0.492188 -vt 0.778884 0.480469 -vt 0.778884 0.468750 -vt 0.778884 0.550781 -vt 0.778884 0.539062 -vt 0.778884 0.527344 -vt 0.778884 0.515625 -vt 0.778884 0.562500 -vt 0.832669 0.550781 -vt 0.832669 0.527344 -vt 0.832669 0.515625 -vt 0.832669 0.492188 -vt 0.832669 0.562500 -vt 0.832669 0.539062 -vt 0.832669 0.503906 -vt 0.832669 0.480469 -vt 0.778884 0.503906 -vt 0.778884 0.492188 -vt 0.778884 0.480469 -vt 0.778884 0.468750 -vt 0.778884 0.550781 -vt 0.778884 0.539062 -vt 0.778884 0.527344 -vt 0.778884 0.515625 -vt 0.778884 0.562500 -vt 0.832669 0.550781 -vt 0.832669 0.527344 -vt 0.832669 0.515625 -vt 0.832669 0.492188 -vt 0.832669 0.562500 -vt 0.832669 0.539062 -vt 0.832669 0.503906 -vt 0.832669 0.480469 -vt 0.778884 0.503906 -vt 0.778884 0.492188 -vt 0.778884 0.480469 -vt 0.778884 0.468750 -vt 0.778884 0.550781 -vt 0.778884 0.539062 -vt 0.778884 0.527344 -vt 0.778884 0.515625 -vt 0.778884 0.562500 -vt 0.832669 0.550781 -vt 0.832669 0.527344 -vt 0.832669 0.515625 -vt 0.832669 0.492188 -vt 0.832669 0.562500 -vt 0.832669 0.539062 -vt 0.832669 0.503906 -vt 0.832669 0.480469 -vt 0.778884 0.503906 -vt 0.778884 0.492188 -vt 0.778884 0.480469 -vt 0.778884 0.468750 -vt 0.778884 0.550781 -vt 0.778884 0.539062 -vt 0.778884 0.527344 -vt 0.778884 0.515625 -vt 0.778884 0.562500 -vt 0.832669 0.550781 -vt 0.832669 0.527344 -vt 0.832669 0.515625 -vt 0.832669 0.492188 -vt 0.832669 0.562500 -vt 0.832669 0.539062 -vt 0.832669 0.503906 -vt 0.832669 0.480469 -vt 0.778884 0.503906 -vt 0.778884 0.492188 -vt 0.778884 0.480469 -vt 0.778884 0.468750 -vt 0.778884 0.550781 -vt 0.778884 0.539062 -vt 0.778884 0.527344 -vt 0.778884 0.515625 -vt 0.778884 0.562500 -vt 0.832669 0.550781 -vt 0.832669 0.527344 -vt 0.832669 0.515625 -vt 0.832669 0.492188 -vt 0.832669 0.562500 -vt 0.832669 0.539062 -vt 0.832669 0.503906 -vt 0.832669 0.480469 -vt 0.778884 0.503906 -vt 0.778884 0.492188 -vt 0.778884 0.480469 -vt 0.778884 0.468750 -vt 0.778884 0.550781 -vt 0.778884 0.539062 -vt 0.778884 0.527344 -vt 0.778884 0.515625 -vt 0.778884 0.562500 -vt 0.832669 0.550781 -vt 0.832669 0.527344 -vt 0.832669 0.515625 -vt 0.832669 0.492188 -vt 0.832669 0.562500 -vt 0.832669 0.539062 -vt 0.832669 0.503906 -vt 0.832669 0.480469 -vt 0.778884 0.503906 -vt 0.778884 0.492188 -vt 0.778884 0.480469 -vt 0.778884 0.468750 -vt 0.778884 0.550781 -vt 0.778884 0.539062 -vt 0.778884 0.527344 -vt 0.778884 0.515625 -vt 0.778884 0.562500 -vt 0.832669 0.550781 -vt 0.832669 0.527344 -vt 0.832669 0.515625 -vt 0.832669 0.492188 -vt 0.832669 0.562500 -vt 0.832669 0.539062 -vt 0.832669 0.503906 -vt 0.832669 0.480469 -vt 0.778884 0.503906 -vt 0.778884 0.492188 -vt 0.778884 0.480469 -vt 0.778884 0.468750 -vt 0.778884 0.550781 -vt 0.778884 0.539062 -vt 0.778884 0.527344 -vt 0.778884 0.515625 -vt 0.778884 0.562500 -vt 0.832669 0.550781 -vt 0.832669 0.527344 -vt 0.832669 0.515625 -vt 0.832669 0.492188 -vt 0.832669 0.562500 -vt 0.832669 0.539062 -vt 0.832669 0.503906 -vt 0.832669 0.480469 -vt 0.778884 0.503906 -vt 0.778884 0.492188 -vt 0.778884 0.480469 -vt 0.778884 0.468750 -vt 0.778884 0.550781 -vt 0.778884 0.539062 -vt 0.778884 0.527344 -vt 0.778884 0.515625 -vt 0.778884 0.562500 -vt 0.832669 0.550781 -vt 0.832669 0.527344 -vt 0.832669 0.515625 -vt 0.832669 0.492188 -vt 0.832669 0.562500 -vt 0.832669 0.539062 -vt 0.832669 0.503906 -vt 0.832669 0.480469 -vt 0.778884 0.503906 -vt 0.778884 0.492188 -vt 0.778884 0.480469 -vt 0.778884 0.468750 -vt 0.778884 0.550781 -vt 0.778884 0.539062 -vt 0.778884 0.527344 -vt 0.778884 0.515625 -vt 0.778884 0.562500 -vt 0.832669 0.550781 -vt 0.832669 0.527344 -vt 0.832669 0.515625 -vt 0.832669 0.492188 -vt 0.832669 0.562500 -vt 0.832669 0.539062 -vt 0.832669 0.503906 -vt 0.832669 0.480469 -vt 0.778884 0.503906 -vt 0.778884 0.492188 -vt 0.778884 0.480469 -vt 0.778884 0.468750 -vt 0.778884 0.550781 -vt 0.778884 0.539062 -vt 0.778884 0.527344 -vt 0.778884 0.515625 -vt 0.778884 0.562500 -vt 0.832669 0.550781 -vt 0.832669 0.527344 -vt 0.832669 0.515625 -vt 0.832669 0.492188 -vt 0.832669 0.562500 -vt 0.832669 0.539062 -vt 0.832669 0.503906 -vt 0.832669 0.480469 -vt 0.778884 0.503906 -vt 0.778884 0.492188 -vt 0.778884 0.480469 -vt 0.778884 0.468750 -vt 0.778884 0.550781 -vt 0.778884 0.539062 -vt 0.778884 0.527344 -vt 0.778884 0.515625 -vt 0.778884 0.562500 -vt 0.832669 0.550781 -vt 0.832669 0.527344 -vt 0.832669 0.515625 -vt 0.832669 0.492188 -vt 0.832669 0.562500 -vt 0.832669 0.539062 -vt 0.832669 0.503906 -vt 0.832669 0.480469 vt 0.254980 0.105469 vt 0.254980 0.074219 vt 0.254980 0.152344 @@ -3185,48 +5043,8 @@ vt 0.254980 0.089844 vt 0.254980 0.167969 vt 0.254980 0.027344 vt 0.286853 0.234375 -vt 0.832669 0.468750 -vt 0.888446 0.621094 -vt 0.888446 0.496094 -vt 0.888446 0.683594 -vt 0.888446 0.746094 -vt 0.888446 0.808594 -vt 0.888446 0.871094 -vt 0.888446 0.933594 -vt 0.888446 0.996094 -vt 0.888446 0.058594 -vt 0.888446 0.121094 -vt 0.888446 0.183594 -vt 0.888446 0.246094 -vt 0.888446 0.308594 -vt 0.888446 0.558594 -vt 0.888446 0.433594 -vt 0.832669 0.750000 -vt 0.836653 0.000000 -vt 1.000000 0.496094 -vt 1.000000 0.371094 -vt 1.000000 0.433594 vt 0.191235 0.554688 vt 0.450199 0.367188 -vt 0.832669 0.468750 -vt 0.832669 0.468750 -vt 0.832669 0.468750 -vt 0.832669 0.468750 -vt 0.832669 0.468750 -vt 0.832669 0.468750 -vt 0.832669 0.468750 -vt 0.832669 0.468750 -vt 0.832669 0.468750 -vt 0.832669 0.468750 -vt 0.832669 0.468750 -vt 0.832669 0.468750 -vt 0.832669 0.468750 -vt 0.832669 0.468750 -vt 0.832669 0.468750 -vt 0.832669 0.468750 -vt 0.832669 0.468750 -vt 0.832669 0.468750 -vt 0.832669 0.468750 vn 1.0000 0.0000 -0.0000 vn -0.7071 0.7071 0.0000 vn -1.0000 0.0000 0.0000 @@ -3239,22 +5057,6 @@ vn -0.9701 0.2425 0.0000 vn 0.0000 -1.0000 0.0000 vn 0.0000 0.0000 1.0000 vn 0.0000 0.0000 -1.0000 -vn 0.1951 0.9808 0.0000 -vn 0.1951 -0.9808 0.0000 -vn -0.5556 0.8315 0.0000 -vn 0.5556 -0.8315 0.0000 -vn -0.8315 0.5556 0.0000 -vn 0.8315 -0.5556 0.0000 -vn -0.9808 0.1951 0.0000 -vn 0.9808 -0.1951 0.0000 -vn -0.9808 -0.1951 0.0000 -vn 0.9808 0.1951 0.0000 -vn -0.8315 -0.5556 0.0000 -vn 0.8315 0.5556 0.0000 -vn -0.5556 -0.8315 0.0000 -vn 0.5556 0.8315 0.0000 -vn -0.1951 -0.9808 0.0000 -vn -0.1951 0.9808 0.0000 vn 0.0000 -0.8944 -0.4472 vn 0.0000 0.7071 0.7071 vn 0.0000 0.8000 -0.6000 @@ -3270,14 +5072,6 @@ vn -0.5000 -0.8660 0.0000 vn -0.8660 -0.5000 0.0000 vn 0.5000 -0.8660 -0.0000 vn 0.8660 0.5000 0.0000 -vn -0.9239 -0.3827 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.3827 0.9239 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.8944 0.4472 -0.0000 vn -0.8944 0.4472 0.0000 vn 0.5257 -0.8507 -0.0000 @@ -3298,2169 +5092,401 @@ vn -0.9382 -0.0679 0.3394 vn -0.9033 -0.0841 0.4207 vn -0.3941 -0.1802 0.9012 vn -0.9033 0.0841 -0.4207 -vn 0.9511 -0.3090 0.0000 -vn 0.8910 0.4540 0.0000 -vn -0.3090 -0.9511 0.0000 -vn 0.4540 -0.8910 0.0000 -vn -0.9511 0.3090 0.0000 -vn -0.8910 -0.4540 0.0000 -vn 0.3090 0.9511 0.0000 -vn -0.4540 0.8910 0.0000 -vn 0.8090 -0.5878 0.0000 -vn 0.9877 0.1564 0.0000 -vn -0.5878 -0.8090 0.0000 -vn 0.1564 -0.9877 0.0000 -vn -0.8090 0.5878 0.0000 -vn -0.9877 -0.1564 0.0000 -vn 0.5878 0.8090 0.0000 -vn -0.1564 0.9877 0.0000 -vn 0.5878 -0.8090 0.0000 -vn 0.9877 -0.1564 0.0000 -vn -0.8090 -0.5878 0.0000 -vn -0.1564 -0.9877 0.0000 -vn -0.5878 0.8090 0.0000 -vn -0.9877 0.1564 0.0000 -vn 0.8090 0.5878 0.0000 -vn 0.1564 0.9877 0.0000 -vn 0.3090 -0.9511 0.0000 -vn 0.8910 -0.4540 0.0000 -vn -0.9511 -0.3090 0.0000 -vn -0.4540 -0.8910 0.0000 -vn -0.3090 0.9511 0.0000 -vn -0.8910 0.4540 0.0000 -vn 0.9511 0.3090 0.0000 -vn 0.4540 0.8910 0.0000 s off -f 2/1/1 3/2/1 1/3/1 -f 6/4/2 12/5/2 10/6/2 -f 8/7/3 5/8/3 7/9/3 -f 9/10/4 4/11/4 2/1/4 -f 19/12/5 9/10/5 17/13/5 -f 14/14/6 7/9/6 5/8/6 -f 15/15/7 1/3/7 3/2/7 -f 18/16/8 19/12/8 17/13/8 -f 20/17/9 10/6/9 12/5/9 -f 14/14/10 117/18/10 16/19/10 -f 15/15/10 120/20/10 13/21/10 -f 34/22/11 47/23/11 35/24/11 -f 41/25/11 54/26/11 42/27/11 -f 39/28/11 50/29/11 51/30/11 -f 35/24/11 48/31/11 36/32/11 -f 43/33/11 54/34/11 55/35/11 -f 40/36/11 51/37/11 52/38/11 -f 37/39/11 48/40/11 49/41/11 -f 43/33/11 56/42/11 44/43/11 -f 34/22/11 45/44/11 46/45/11 -f 40/36/11 53/46/11 41/25/11 -f 38/47/11 49/48/11 50/49/11 -f 44/43/11 45/50/11 33/51/11 -f 95/52/10 94/53/10 93/54/10 -f 99/55/10 451/56/10 98/57/10 -f 96/58/3 99/59/3 94/60/3 -f 95/52/1 98/61/1 97/62/1 -f 95/52/11 100/63/11 96/58/11 -f 94/53/12 98/57/12 93/54/12 -f 106/64/11 197/65/11 196/66/11 -f 130/67/11 400/68/11 399/69/11 -f 398/70/11 130/71/11 399/72/11 -f 397/73/11 129/74/11 398/75/11 -f 396/76/11 128/77/11 397/78/11 -f 395/79/11 127/80/11 396/81/11 -f 394/82/11 126/83/11 395/84/11 -f 393/85/11 125/86/11 394/87/11 -f 408/88/11 124/89/11 393/90/11 -f 407/91/11 123/92/11 408/93/11 -f 406/94/11 122/95/11 407/96/11 -f 405/97/11 121/98/11 406/99/11 -f 404/100/11 135/101/11 405/102/11 -f 404/103/11 134/104/11 136/105/11 -f 403/106/11 133/107/11 134/108/11 -f 402/109/11 132/110/11 133/111/11 -f 401/112/11 131/113/11 132/114/11 -f 370/115/11 148/116/11 147/117/11 -f 147/118/11 371/119/11 370/115/11 -f 371/119/11 145/120/11 372/121/11 -f 145/122/11 373/123/11 372/121/11 -f 373/123/11 143/124/11 374/125/11 -f 374/125/11 142/126/11 375/127/11 -f 375/127/11 141/128/11 376/129/11 -f 376/129/11 140/130/11 361/131/11 -f 361/131/11 139/132/11 362/133/11 -f 362/133/11 138/134/11 363/135/11 -f 363/135/11 137/136/11 364/137/11 -f 364/137/11 151/138/11 365/139/11 -f 151/140/11 366/141/11 365/139/11 -f 152/142/11 367/143/11 366/141/11 -f 150/144/11 368/145/11 367/143/11 -f 149/146/11 369/147/11 368/145/11 -f 157/148/11 159/149/11 153/150/11 -f 175/151/11 168/152/11 167/153/11 -f 168/152/11 169/154/11 161/155/11 -f 161/155/11 170/156/11 162/157/11 -f 162/157/11 171/158/11 163/159/11 -f 171/158/11 164/160/11 163/159/11 -f 172/161/11 165/162/11 164/160/11 -f 173/163/11 166/164/11 165/165/11 -f 166/164/11 175/151/11 167/153/11 -f 180/166/12 179/167/12 183/168/12 -f 107/169/11 196/170/11 195/171/11 -f 108/172/11 195/173/11 194/174/11 -f 109/175/11 194/176/11 193/177/11 -f 110/178/11 193/179/11 192/180/11 -f 111/181/11 192/182/11 191/183/11 -f 112/184/11 191/185/11 190/186/11 -f 112/184/11 189/187/11 113/188/11 -f 113/188/11 188/189/11 114/190/11 -f 114/190/11 187/191/11 115/192/11 -f 115/192/11 186/193/11 116/194/11 -f 116/194/11 185/195/11 101/196/11 -f 101/196/11 200/197/11 102/198/11 -f 102/198/11 199/199/11 103/200/11 -f 103/200/11 198/201/11 104/202/11 -f 104/202/11 197/203/11 105/204/11 -f 228/205/12 234/206/12 233/207/12 -f 235/208/12 228/209/12 233/210/12 -f 236/211/12 227/212/12 235/213/12 -f 237/214/12 226/215/12 236/216/12 -f 238/217/12 225/218/12 237/219/12 -f 239/220/12 224/221/12 238/222/12 -f 240/223/12 223/224/12 239/225/12 -f 221/226/12 240/227/12 241/228/12 -f 220/229/12 241/230/12 242/231/12 -f 219/232/12 242/233/12 243/234/12 -f 217/235/12 243/236/12 244/237/12 -f 218/238/12 244/239/12 245/240/12 -f 232/241/12 245/242/12 246/243/12 -f 231/244/12 246/245/12 247/246/12 -f 230/247/12 247/248/12 248/249/12 -f 229/250/12 248/251/12 234/252/12 -f 206/253/12 250/254/12 205/255/12 -f 204/256/12 250/257/12 264/258/12 -f 203/259/12 264/260/12 263/261/12 -f 201/262/12 263/263/12 262/264/12 -f 202/265/12 262/266/12 261/267/12 -f 216/268/12 261/269/12 260/270/12 -f 215/271/12 260/272/12 259/273/12 -f 214/274/12 259/275/12 258/276/12 -f 214/274/12 257/277/12 213/278/12 -f 213/278/12 256/279/12 212/280/12 -f 212/280/12 255/281/12 211/282/12 -f 211/282/12 254/283/12 210/284/12 -f 210/284/12 253/285/12 209/286/12 -f 209/287/12 252/288/12 208/289/12 -f 208/289/12 251/290/12 207/291/12 -f 207/291/12 249/292/12 206/253/12 -f 275/293/12 271/294/12 267/295/12 -f 289/296/11 293/297/11 282/298/11 -f 328/299/13 297/300/13 312/301/13 -f 321/302/14 306/303/14 305/304/14 -f 314/305/15 299/306/15 298/307/15 -f 322/308/16 307/309/16 306/303/16 -f 315/310/17 300/311/17 299/306/17 -f 307/309/18 324/312/18 308/313/18 -f 316/314/19 301/315/19 300/311/19 -f 324/312/20 309/316/20 308/313/20 -f 317/317/21 302/318/21 301/315/21 -f 325/319/22 310/320/22 309/316/22 -f 318/321/23 303/322/23 302/318/23 -f 310/320/24 327/323/24 311/324/24 -f 319/325/25 304/326/25 303/322/25 -f 327/323/26 312/301/26 311/324/26 -f 320/327/27 305/328/27 304/326/27 -f 313/329/28 298/307/28 297/300/28 -f 339/330/12 335/331/12 331/332/12 -f 353/333/11 357/334/11 346/335/11 -f 423/336/12 377/337/12 379/338/12 -f 424/339/12 378/340/12 377/337/12 -f 410/341/12 392/342/12 378/340/12 -f 409/343/12 391/344/12 392/342/12 -f 411/345/12 390/346/12 391/344/12 -f 412/347/12 389/348/12 390/346/12 -f 413/349/12 388/350/12 389/348/12 -f 388/350/12 415/351/12 387/352/12 -f 387/352/12 416/353/12 386/354/12 -f 386/354/12 417/355/12 385/356/12 -f 385/357/12 418/358/12 384/359/12 -f 384/359/12 419/360/12 383/361/12 -f 383/361/12 420/362/12 382/363/12 -f 420/364/12 381/365/12 382/363/12 -f 421/366/12 380/367/12 381/365/12 -f 422/368/12 379/338/12 380/367/12 -f 119/369/12 10/370/12 9/371/12 -f 118/372/11 11/373/11 117/374/11 -f 435/375/10 434/376/10 433/377/10 -f 436/378/3 442/379/3 434/380/3 -f 441/381/1 437/382/1 435/383/1 -f 446/384/8 449/385/8 445/386/8 -f 435/383/11 440/387/11 436/388/11 -f 442/379/12 443/389/12 441/381/12 -f 434/376/29 441/381/29 433/377/29 -f 443/389/8 440/390/8 437/391/8 -f 439/392/10 447/393/10 438/394/10 -f 438/394/5 450/395/5 446/384/5 -f 445/386/9 448/396/9 439/397/9 -f 97/62/30 454/398/30 100/63/30 -f 453/399/8 456/400/8 454/398/8 -f 98/61/1 455/401/1 453/402/1 -f 456/403/3 452/404/3 99/59/3 -f 460/405/8 462/406/8 457/407/8 -f 466/408/8 478/409/8 467/410/8 -f 462/406/12 464/411/12 588/412/12 -f 458/413/3 586/414/3 581/415/3 -f 582/416/10 588/417/10 583/418/10 -f 464/419/4 460/405/4 459/420/4 -f 458/413/2 462/406/2 461/421/2 -f 584/422/1 464/419/1 459/420/1 -f 478/409/12 476/423/12 474/424/12 -f 468/425/3 480/426/3 471/427/3 -f 472/428/10 474/429/10 469/430/10 -f 480/426/6 472/431/6 471/427/6 -f 470/432/7 474/429/7 473/433/7 -f 476/434/4 466/408/4 465/435/4 -f 468/425/2 478/409/2 477/436/2 -f 470/432/1 476/434/1 465/435/1 -f 482/437/31 483/438/31 481/439/31 -f 491/440/1 487/441/1 489/442/1 -f 481/439/3 483/443/3 485/444/3 -f 482/437/1 486/445/1 484/446/1 -f 492/447/3 490/448/3 488/449/3 -f 491/440/31 490/450/31 492/447/31 -f 503/451/10 499/452/10 508/453/10 -f 509/454/32 512/455/32 510/456/32 -f 511/457/3 513/458/3 515/459/3 -f 512/455/1 514/460/1 510/461/1 -f 511/457/10 516/462/10 512/455/10 -f 520/463/8 523/464/8 519/465/8 -f 517/466/10 522/467/10 518/468/10 -f 518/468/1 524/469/1 520/463/1 -f 519/465/3 521/470/3 517/471/3 -f 528/472/8 531/473/8 527/474/8 -f 525/475/10 530/476/10 526/477/10 -f 526/478/1 532/479/1 528/472/1 -f 527/474/3 529/480/3 525/475/3 -f 521/481/11 538/482/11 522/483/11 -f 535/484/3 539/485/3 529/486/3 -f 522/483/1 534/487/1 524/488/1 -f 521/489/3 523/490/3 533/491/3 -f 530/492/1 536/493/1 532/494/1 -f 529/486/3 531/495/3 535/484/3 -f 536/493/33 531/473/33 532/479/33 -f 534/487/33 523/464/33 524/469/33 -f 540/496/8 541/497/8 544/498/8 -f 537/499/11 546/500/11 545/501/11 -f 536/493/12 543/502/12 535/484/12 -f 522/483/1 542/503/1 534/487/1 -f 529/486/11 540/504/11 530/505/11 -f 530/492/1 544/506/1 536/493/1 -f 534/487/12 541/507/12 533/491/12 -f 533/491/3 537/508/3 521/489/3 -f 537/499/11 545/501/11 538/509/11 -f 542/510/12 547/511/12 541/497/12 -f 538/482/7 547/511/7 542/503/7 -f 540/512/11 539/513/11 546/500/11 -f 544/498/12 548/514/12 543/515/12 -f 543/502/6 546/500/6 539/485/6 -f 547/511/12 544/498/12 541/497/12 -f 547/511/10 546/500/10 548/514/10 -f 551/516/3 550/517/3 549/518/3 -f 555/519/34 552/520/34 551/521/34 -f 556/522/10 550/517/10 552/523/10 -f 549/524/8 555/519/8 551/525/8 -f 553/526/1 556/522/1 555/519/1 -f 559/527/3 558/528/3 557/529/3 -f 563/530/34 560/531/34 559/532/34 -f 564/533/10 558/528/10 560/534/10 -f 557/535/8 563/530/8 559/536/8 -f 561/537/1 564/533/1 563/530/1 -f 566/538/1 567/539/1 565/540/1 -f 568/541/35 571/542/35 567/543/35 -f 566/544/10 572/545/10 568/546/10 -f 565/540/8 571/542/8 569/547/8 -f 572/545/3 569/547/3 571/542/3 -f 574/548/1 575/549/1 573/550/1 -f 576/551/35 579/552/35 575/553/35 -f 574/554/10 580/555/10 576/556/10 -f 573/550/8 579/552/8 577/557/8 -f 580/555/3 577/557/3 579/552/3 -f 586/414/6 582/558/6 581/415/6 -f 584/422/7 588/417/7 587/559/7 -f 584/560/11 460/405/11 458/561/11 -f 67/562/11 63/563/11 59/564/11 -f 593/565/11 595/566/11 589/567/11 -f 611/568/11 604/569/11 603/570/11 -f 604/569/11 605/571/11 597/572/11 -f 597/572/11 606/573/11 598/574/11 -f 598/574/11 607/575/11 599/576/11 -f 607/575/11 600/577/11 599/576/11 -f 608/578/11 601/579/11 600/577/11 -f 609/580/11 602/581/11 601/582/11 -f 602/581/11 611/568/11 603/570/11 -f 613/583/12 619/584/12 617/585/12 -f 625/586/11 627/587/11 621/588/11 -f 643/589/11 636/590/11 635/591/11 -f 636/590/11 637/592/11 629/593/11 -f 629/593/11 638/594/11 630/595/11 -f 630/595/11 639/596/11 631/597/11 -f 639/596/11 632/598/11 631/597/11 -f 640/599/11 633/600/11 632/598/11 -f 641/601/11 634/602/11 633/603/11 -f 642/604/11 635/591/11 634/602/11 -f 648/605/12 647/606/12 651/607/12 -f 655/608/11 657/609/11 659/610/11 -f 675/611/11 668/612/11 667/613/11 -f 668/612/11 669/614/11 661/615/11 -f 661/615/11 670/616/11 662/617/11 -f 662/617/11 671/618/11 663/619/11 -f 671/618/11 664/620/11 663/619/11 -f 672/621/11 665/622/11 664/620/11 -f 673/623/11 666/624/11 665/625/11 -f 674/626/11 667/613/11 666/624/11 -f 680/627/12 679/628/12 683/629/12 -f 687/630/11 689/631/11 691/632/11 -f 707/633/11 700/634/11 699/635/11 -f 700/634/11 701/636/11 693/637/11 -f 693/637/11 702/638/11 694/639/11 -f 694/639/11 703/640/11 695/641/11 -f 703/640/11 696/642/11 695/641/11 -f 704/643/11 697/644/11 696/642/11 -f 697/645/11 706/646/11 698/647/11 -f 698/647/11 707/633/11 699/635/11 -f 712/648/12 711/649/12 715/650/12 -f 719/651/11 721/652/11 723/653/11 -f 739/654/11 732/655/11 731/656/11 -f 732/655/11 733/657/11 725/658/11 -f 725/658/11 734/659/11 726/660/11 -f 726/660/11 735/661/11 727/662/11 -f 735/661/11 728/663/11 727/662/11 -f 736/664/11 729/665/11 728/663/11 -f 729/666/11 738/667/11 730/668/11 -f 730/668/11 739/654/11 731/656/11 -f 743/669/12 741/670/12 747/671/12 -f 753/672/11 755/673/11 749/674/11 -f 771/675/11 764/676/11 763/677/11 -f 764/676/11 765/678/11 757/679/11 -f 757/679/11 766/680/11 758/681/11 -f 758/681/11 767/682/11 759/683/11 -f 767/682/11 760/684/11 759/683/11 -f 768/685/11 761/686/11 760/684/11 -f 769/687/11 762/688/11 761/689/11 -f 762/688/11 771/675/11 763/677/11 -f 775/690/12 773/691/12 779/692/12 -f 781/693/11 783/694/11 785/695/11 -f 803/696/11 796/697/11 795/698/11 -f 796/697/11 797/699/11 789/700/11 -f 789/700/11 798/701/11 790/702/11 -f 790/702/11 799/703/11 791/704/11 -f 799/703/11 792/705/11 791/704/11 -f 800/706/11 793/707/11 792/705/11 -f 793/708/11 802/709/11 794/710/11 -f 794/710/11 803/696/11 795/698/11 -f 808/711/12 807/712/12 811/713/12 -f 815/714/11 817/715/11 819/716/11 -f 835/717/11 828/718/11 827/719/11 -f 828/718/11 829/720/11 821/721/11 -f 821/721/11 830/722/11 822/723/11 -f 822/723/11 831/724/11 823/725/11 -f 831/724/11 824/726/11 823/725/11 -f 832/727/11 825/728/11 824/726/11 -f 833/729/11 826/730/11 825/731/11 -f 834/732/11 827/719/11 826/730/11 -f 839/733/12 837/734/12 843/735/12 -f 847/736/11 849/737/11 851/738/11 -f 867/739/11 860/740/11 859/741/11 -f 860/740/11 861/742/11 853/743/11 -f 853/743/11 862/744/11 854/745/11 -f 854/745/11 863/746/11 855/747/11 -f 863/746/11 856/748/11 855/747/11 -f 864/749/11 857/750/11 856/748/11 -f 865/751/11 858/752/11 857/753/11 -f 858/752/11 867/739/11 859/741/11 -f 872/754/12 871/755/12 875/756/12 -f 883/757/11 884/758/11 877/759/11 -f 899/760/11 892/761/11 891/762/11 -f 892/761/11 893/763/11 885/764/11 -f 885/764/11 894/765/11 886/766/11 -f 886/766/11 895/767/11 887/768/11 -f 895/767/11 888/769/11 887/768/11 -f 896/770/11 889/771/11 888/769/11 -f 889/772/11 898/773/11 890/774/11 -f 890/774/11 899/760/11 891/762/11 -f 903/775/12 901/776/12 907/777/12 -f 913/778/11 915/779/11 909/780/11 -f 931/781/11 924/782/11 923/783/11 -f 924/782/11 925/784/11 917/785/11 -f 917/785/11 926/786/11 918/787/11 -f 918/787/11 927/788/11 919/789/11 -f 927/788/11 920/790/11 919/789/11 -f 928/791/11 921/792/11 920/790/11 -f 921/793/11 930/794/11 922/795/11 -f 922/795/11 931/781/11 923/783/11 -f 935/796/12 933/797/12 939/798/12 -f 941/799/11 943/800/11 945/801/11 -f 963/802/11 956/803/11 955/804/11 -f 956/803/11 957/805/11 949/806/11 -f 949/806/11 958/807/11 950/808/11 -f 950/808/11 959/809/11 951/810/11 -f 959/809/11 952/811/11 951/810/11 -f 960/812/11 953/813/11 952/811/11 -f 953/814/11 962/815/11 954/816/11 -f 954/816/11 963/802/11 955/804/11 -f 968/817/12 967/818/12 971/819/12 -f 973/820/11 975/821/11 977/822/11 -f 995/823/11 988/824/11 987/825/11 -f 988/824/11 989/826/11 981/827/11 -f 981/827/11 990/828/11 982/829/11 -f 982/829/11 991/830/11 983/831/11 -f 991/830/11 984/832/11 983/831/11 -f 992/833/11 985/834/11 984/832/11 -f 993/835/11 986/836/11 985/837/11 -f 994/838/11 987/825/11 986/836/11 -f 999/839/12 997/840/12 1003/841/12 -f 1007/842/11 1009/843/11 1011/844/11 -f 1027/845/11 1020/846/11 1019/847/11 -f 1020/846/11 1021/848/11 1013/849/11 -f 1013/849/11 1022/850/11 1014/851/11 -f 1014/851/11 1023/852/11 1015/853/11 -f 1023/852/11 1016/854/11 1015/853/11 -f 1024/855/11 1017/856/11 1016/854/11 -f 1025/857/11 1018/858/11 1017/859/11 -f 1018/858/11 1027/845/11 1019/847/11 -f 1032/860/12 1031/861/12 1035/862/12 -f 1039/863/11 1041/864/11 1043/865/11 -f 1059/866/11 1052/867/11 1051/868/11 -f 1052/867/11 1053/869/11 1045/870/11 -f 1045/870/11 1054/871/11 1046/872/11 -f 1046/872/11 1055/873/11 1047/874/11 -f 1055/873/11 1048/875/11 1047/874/11 -f 1056/876/11 1049/877/11 1048/875/11 -f 1049/878/11 1058/879/11 1050/880/11 -f 1050/880/11 1059/866/11 1051/868/11 -f 1063/881/12 1061/882/12 1067/883/12 -f 1073/884/11 1075/885/11 1069/886/11 -f 1091/887/11 1084/888/11 1083/889/11 -f 1084/888/11 1085/890/11 1077/891/11 -f 1077/891/11 1086/892/11 1078/893/11 -f 1078/893/11 1087/894/11 1079/895/11 -f 1087/894/11 1080/896/11 1079/895/11 -f 1088/897/11 1081/898/11 1080/896/11 -f 1081/899/11 1090/900/11 1082/901/11 -f 1082/901/11 1091/887/11 1083/889/11 -f 1095/902/12 1093/903/12 1099/904/12 -f 1101/905/11 1103/906/11 1105/907/11 -f 1123/908/11 1116/909/11 1115/910/11 -f 1116/909/11 1117/911/11 1109/912/11 -f 1109/912/11 1118/913/11 1110/914/11 -f 1110/914/11 1119/915/11 1111/916/11 -f 1119/915/11 1112/917/11 1111/916/11 -f 1120/918/11 1113/919/11 1112/917/11 -f 1113/920/11 1122/921/11 1114/922/11 -f 1122/921/11 1115/910/11 1114/922/11 -f 1129/923/12 1128/924/12 1127/925/12 -f 1135/926/11 1137/927/11 1139/928/11 -f 1155/929/11 1148/930/11 1147/931/11 -f 1148/930/11 1149/932/11 1141/933/11 -f 1141/933/11 1150/934/11 1142/935/11 -f 1142/935/11 1151/936/11 1143/937/11 -f 1151/936/11 1144/938/11 1143/937/11 -f 1152/939/11 1145/940/11 1144/938/11 -f 1153/941/11 1146/942/11 1145/943/11 -f 1154/944/11 1147/931/11 1146/942/11 -f 1159/945/12 1157/946/12 1163/947/12 -f 1167/948/11 1169/949/11 1171/950/11 -f 1187/951/11 1180/952/11 1179/953/11 -f 1188/954/11 1173/955/11 1180/952/11 -f 1173/955/11 1182/956/11 1174/957/11 -f 1174/957/11 1183/958/11 1175/959/11 -f 1183/958/11 1176/960/11 1175/959/11 -f 1184/961/11 1177/962/11 1176/960/11 -f 1185/963/11 1178/964/11 1177/965/11 -f 1178/964/11 1187/951/11 1179/953/11 -f 1192/966/12 1191/967/12 1195/968/12 -f 2/1/1 4/11/1 3/2/1 -f 6/4/2 8/7/2 12/5/2 -f 8/7/3 6/4/3 5/8/3 -f 9/10/4 11/969/4 4/11/4 -f 19/12/5 11/969/5 9/10/5 -f 14/14/6 16/19/6 7/9/6 -f 15/15/7 13/21/7 1/3/7 -f 18/16/8 20/17/8 19/12/8 -f 20/17/9 18/16/9 10/6/9 -f 14/14/10 119/970/10 117/18/10 -f 15/15/10 118/971/10 120/20/10 -f 34/22/11 46/972/11 47/23/11 -f 41/25/11 53/973/11 54/26/11 -f 39/28/11 38/47/11 50/29/11 -f 35/24/11 47/974/11 48/31/11 -f 43/33/11 42/27/11 54/34/11 -f 40/36/11 39/975/11 51/37/11 -f 37/39/11 36/32/11 48/40/11 -f 43/33/11 55/976/11 56/42/11 -f 34/22/11 33/51/11 45/44/11 -f 40/36/11 52/977/11 53/46/11 -f 38/47/11 37/39/11 49/48/11 -f 44/43/11 56/978/11 45/50/11 -f 95/52/10 96/58/10 94/53/10 -f 99/55/10 452/979/10 451/56/10 -f 96/58/3 100/63/3 99/59/3 -f 95/52/1 93/980/1 98/61/1 -f 95/52/11 97/62/11 100/63/11 -f 94/53/12 99/55/12 98/57/12 -f 106/64/11 105/204/11 197/65/11 -f 130/67/11 131/981/11 400/68/11 -f 398/70/11 129/982/11 130/71/11 -f 397/73/11 128/983/11 129/74/11 -f 396/76/11 127/984/11 128/77/11 -f 395/79/11 126/985/11 127/80/11 -f 394/82/11 125/986/11 126/83/11 -f 393/85/11 124/987/11 125/86/11 -f 408/88/11 123/988/11 124/89/11 -f 407/91/11 122/989/11 123/92/11 -f 406/94/11 121/990/11 122/95/11 -f 405/97/11 135/991/11 121/98/11 -f 404/100/11 136/992/11 135/101/11 -f 404/103/11 403/993/11 134/104/11 -f 403/106/11 402/994/11 133/107/11 -f 402/109/11 401/995/11 132/110/11 -f 401/112/11 400/996/11 131/113/11 -f 370/115/11 369/997/11 148/116/11 -f 147/118/11 146/998/11 371/119/11 -f 371/119/11 146/999/11 145/120/11 -f 145/122/11 144/1000/11 373/123/11 -f 373/123/11 144/1001/11 143/124/11 -f 374/125/11 143/1002/11 142/126/11 -f 375/127/11 142/1003/11 141/128/11 -f 376/129/11 141/1004/11 140/130/11 -f 361/131/11 140/1005/11 139/132/11 -f 362/133/11 139/1006/11 138/134/11 -f 363/135/11 138/1007/11 137/136/11 -f 364/137/11 137/1008/11 151/138/11 -f 151/140/11 152/1009/11 366/141/11 -f 152/142/11 150/1010/11 367/143/11 -f 150/144/11 149/1011/11 368/145/11 -f 149/146/11 148/1012/11 369/147/11 -f 153/150/11 154/1013/11 155/1014/11 -f 155/1014/11 156/1015/11 157/148/11 -f 157/148/11 158/1016/11 159/149/11 -f 159/149/11 160/1017/11 153/150/11 -f 153/150/11 155/1014/11 157/148/11 -f 175/151/11 176/1018/11 168/152/11 -f 168/152/11 176/1018/11 169/154/11 -f 161/155/11 169/154/11 170/156/11 -f 162/157/11 170/156/11 171/158/11 -f 171/158/11 172/161/11 164/160/11 -f 172/161/11 173/1019/11 165/162/11 -f 173/163/11 174/1020/11 166/164/11 -f 166/164/11 174/1020/11 175/151/11 -f 179/167/12 178/1021/12 183/168/12 -f 178/1021/12 177/1022/12 183/168/12 -f 177/1022/12 184/1023/12 183/168/12 -f 183/168/12 182/1024/12 181/1025/12 -f 181/1025/12 180/166/12 183/168/12 -f 107/169/11 106/64/11 196/170/11 -f 108/172/11 107/169/11 195/173/11 -f 109/175/11 108/172/11 194/176/11 -f 110/178/11 109/1026/11 193/179/11 -f 111/181/11 110/178/11 192/182/11 -f 112/184/11 111/181/11 191/185/11 -f 112/184/11 190/1027/11 189/187/11 -f 113/188/11 189/1028/11 188/189/11 -f 114/190/11 188/1029/11 187/191/11 -f 115/192/11 187/1030/11 186/193/11 -f 116/194/11 186/1031/11 185/195/11 -f 101/196/11 185/1032/11 200/197/11 -f 102/198/11 200/1033/11 199/199/11 -f 103/200/11 199/1034/11 198/201/11 -f 104/202/11 198/1035/11 197/203/11 -f 228/205/12 229/1036/12 234/206/12 -f 235/208/12 227/1037/12 228/209/12 -f 236/211/12 226/1038/12 227/212/12 -f 237/214/12 225/1039/12 226/215/12 -f 238/217/12 224/1040/12 225/218/12 -f 239/220/12 223/1041/12 224/221/12 -f 240/223/12 222/1042/12 223/224/12 -f 221/226/12 222/1043/12 240/227/12 -f 220/229/12 221/1044/12 241/230/12 -f 219/232/12 220/1045/12 242/233/12 -f 217/235/12 219/1046/12 243/236/12 -f 218/238/12 217/1047/12 244/239/12 -f 232/241/12 218/1048/12 245/242/12 -f 231/244/12 232/1049/12 246/245/12 -f 230/247/12 231/1050/12 247/248/12 -f 229/250/12 230/1051/12 248/251/12 -f 206/253/12 249/1052/12 250/254/12 -f 204/256/12 205/255/12 250/257/12 -f 203/259/12 204/256/12 264/260/12 -f 201/262/12 203/259/12 263/263/12 -f 202/265/12 201/262/12 262/266/12 -f 216/268/12 202/265/12 261/269/12 -f 215/271/12 216/268/12 260/272/12 -f 214/274/12 215/271/12 259/275/12 -f 214/274/12 258/1053/12 257/277/12 -f 213/278/12 257/1054/12 256/279/12 -f 212/280/12 256/1055/12 255/281/12 -f 211/282/12 255/1056/12 254/283/12 -f 210/284/12 254/1057/12 253/285/12 -f 209/287/12 253/1058/12 252/288/12 -f 208/289/12 252/1059/12 251/290/12 -f 207/291/12 251/1060/12 249/292/12 -f 267/295/12 266/1061/12 265/1062/12 -f 265/1062/12 280/1063/12 267/295/12 -f 280/1063/12 279/1064/12 267/295/12 -f 279/1064/12 278/1065/12 275/293/12 -f 278/1065/12 277/1066/12 275/293/12 -f 277/1066/12 276/1067/12 275/293/12 -f 275/293/12 274/1068/12 271/294/12 -f 274/1068/12 273/1069/12 271/294/12 -f 273/1069/12 272/1070/12 271/294/12 -f 271/294/12 270/1071/12 267/295/12 -f 270/1071/12 269/1072/12 267/295/12 -f 269/1072/12 268/1073/12 267/295/12 -f 267/295/12 279/1064/12 275/293/12 -f 282/298/11 281/1074/11 283/1075/11 -f 283/1075/11 284/1076/11 285/1077/11 -f 285/1077/11 286/1078/11 287/1079/11 -f 287/1079/11 288/1080/11 289/296/11 -f 289/296/11 290/1081/11 293/297/11 -f 290/1081/11 291/1082/11 293/297/11 -f 291/1082/11 292/1083/11 293/297/11 -f 293/297/11 294/1084/11 295/1085/11 -f 295/1085/11 296/1086/11 293/297/11 -f 296/1086/11 282/298/11 293/297/11 -f 282/298/11 283/1075/11 285/1077/11 -f 285/1077/11 287/1079/11 282/298/11 -f 287/1079/11 289/296/11 282/298/11 -f 328/299/13 313/329/13 297/300/13 -f 321/302/14 322/308/14 306/303/14 -f 314/305/15 315/310/15 299/306/15 -f 322/308/16 323/1087/16 307/309/16 -f 315/310/17 316/314/17 300/311/17 -f 307/309/18 323/1087/18 324/312/18 -f 316/314/19 317/317/19 301/315/19 -f 324/312/20 325/319/20 309/316/20 -f 317/317/21 318/321/21 302/318/21 -f 325/319/22 326/1088/22 310/320/22 -f 318/321/23 319/325/23 303/322/23 -f 310/320/24 326/1088/24 327/323/24 -f 319/325/25 320/327/25 304/326/25 -f 327/323/26 328/299/26 312/301/26 -f 320/327/27 321/1089/27 305/328/27 -f 313/329/28 314/305/28 298/307/28 -f 331/332/12 330/1090/12 329/1091/12 -f 329/1091/12 344/1092/12 331/332/12 -f 344/1092/12 343/1093/12 331/332/12 -f 343/1093/12 342/1094/12 339/330/12 -f 342/1094/12 341/1095/12 339/330/12 -f 341/1095/12 340/1096/12 339/330/12 -f 339/330/12 338/1097/12 335/331/12 -f 338/1097/12 337/1098/12 335/331/12 -f 337/1098/12 336/1099/12 335/331/12 -f 335/331/12 334/1100/12 331/332/12 -f 334/1100/12 333/1101/12 331/332/12 -f 333/1101/12 332/1102/12 331/332/12 -f 331/332/12 343/1093/12 339/330/12 -f 346/335/11 345/1103/11 347/1104/11 -f 347/1104/11 348/1105/11 349/1106/11 -f 349/1106/11 350/1107/11 351/1108/11 -f 351/1108/11 352/1109/11 353/333/11 -f 353/333/11 354/1110/11 355/1111/11 -f 355/1111/11 356/1112/11 357/334/11 -f 357/334/11 358/1113/11 359/1114/11 -f 359/1114/11 360/1115/11 357/334/11 -f 360/1115/11 346/335/11 357/334/11 -f 346/335/11 347/1104/11 349/1106/11 -f 349/1106/11 351/1108/11 346/335/11 -f 351/1108/11 353/333/11 346/335/11 -f 353/333/11 355/1111/11 357/334/11 -f 423/336/12 424/1116/12 377/337/12 -f 424/339/12 410/1117/12 378/340/12 -f 410/341/12 409/1118/12 392/342/12 -f 409/343/12 411/1119/12 391/344/12 -f 411/345/12 412/1120/12 390/346/12 -f 412/347/12 413/1121/12 389/348/12 -f 413/349/12 414/1122/12 388/350/12 -f 388/350/12 414/1123/12 415/351/12 -f 387/352/12 415/1124/12 416/353/12 -f 386/354/12 416/1125/12 417/355/12 -f 385/357/12 417/1126/12 418/358/12 -f 384/359/12 418/1127/12 419/360/12 -f 383/361/12 419/1128/12 420/362/12 -f 420/364/12 421/1129/12 381/365/12 -f 421/366/12 422/1130/12 380/367/12 -f 422/368/12 423/1131/12 379/338/12 -f 2/1/12 1/3/12 120/1132/12 -f 1/3/12 13/1133/12 120/1132/12 -f 120/1132/12 428/1134/12 427/1135/12 -f 428/1134/12 432/1136/12 431/1137/12 -f 18/1138/12 17/1139/12 9/371/12 -f 9/371/12 2/1/12 120/1132/12 -f 428/1134/12 431/1137/12 427/1135/12 -f 427/1135/12 119/369/12 120/1132/12 -f 119/369/12 14/1140/12 5/1141/12 -f 5/1141/12 6/1142/12 119/369/12 -f 6/1142/12 10/370/12 119/369/12 -f 10/370/12 18/1138/12 9/371/12 -f 9/371/12 120/1132/12 119/369/12 -f 3/2/11 4/11/11 118/372/11 -f 4/11/11 11/373/11 118/372/11 -f 11/373/11 19/1143/11 20/1144/11 -f 12/1145/11 8/1146/11 117/374/11 -f 8/1146/11 7/1147/11 117/374/11 -f 11/373/11 20/1144/11 12/1145/11 -f 15/1148/11 3/2/11 118/372/11 -f 430/1149/11 426/1150/11 429/1151/11 -f 426/1150/11 118/372/11 425/1152/11 -f 429/1151/11 426/1150/11 425/1152/11 -f 11/373/11 12/1145/11 117/374/11 -f 7/1147/11 16/1153/11 117/374/11 -f 117/374/11 425/1152/11 118/372/11 -f 435/375/10 436/1154/10 434/376/10 -f 436/378/3 440/1155/3 442/379/3 -f 440/1155/3 444/1156/3 442/379/3 -f 435/383/1 433/1157/1 441/381/1 -f 441/381/1 443/389/1 437/382/1 -f 446/384/8 450/395/8 449/385/8 -f 435/383/11 437/382/11 440/387/11 -f 442/379/12 444/1156/12 443/389/12 -f 434/376/29 442/379/29 441/381/29 -f 443/389/8 444/1156/8 440/390/8 -f 439/392/10 448/1158/10 447/393/10 -f 438/394/5 447/393/5 450/395/5 -f 445/386/9 449/385/9 448/396/9 -f 97/62/30 453/399/30 454/398/30 -f 453/399/8 455/1159/8 456/400/8 -f 453/402/1 97/62/1 98/61/1 -f 98/61/1 451/1160/1 455/401/1 -f 99/59/3 100/63/3 454/1161/3 -f 454/1161/3 456/403/3 99/59/3 -f 460/405/8 463/1162/8 462/406/8 -f 466/408/8 475/1163/8 478/409/8 -f 588/412/12 585/1164/12 586/1165/12 -f 586/1165/12 461/1166/12 462/406/12 -f 462/406/12 463/1162/12 464/411/12 -f 464/411/12 587/1167/12 588/412/12 -f 588/412/12 586/1165/12 462/406/12 -f 458/413/3 461/421/3 586/414/3 -f 582/416/10 585/1168/10 588/417/10 -f 464/419/4 463/1162/4 460/405/4 -f 458/413/2 457/407/2 462/406/2 -f 584/422/1 587/559/1 464/419/1 -f 474/424/12 479/1169/12 480/1170/12 -f 480/1170/12 477/1171/12 478/409/12 -f 478/409/12 475/1163/12 476/423/12 -f 476/423/12 473/1172/12 474/424/12 -f 474/424/12 480/1170/12 478/409/12 -f 468/425/3 477/436/3 480/426/3 -f 472/428/10 479/1173/10 474/429/10 -f 480/426/6 479/1174/6 472/431/6 -f 470/432/7 469/430/7 474/429/7 -f 476/434/4 475/1163/4 466/408/4 -f 468/425/2 467/410/2 478/409/2 -f 470/432/1 473/433/1 476/434/1 -f 482/437/31 484/1175/31 483/438/31 -f 491/440/31 489/1176/31 490/450/31 -f 499/452/10 498/1177/10 508/453/10 -f 508/453/10 507/1178/10 504/1179/10 -f 507/1178/10 497/1180/10 504/1179/10 -f 497/1180/10 500/1181/10 504/1179/10 -f 504/1179/10 503/451/10 508/453/10 -f 509/454/32 511/457/32 512/455/32 -f 511/457/3 509/1182/3 513/458/3 -f 512/455/1 516/462/1 514/460/1 -f 511/457/10 515/459/10 516/462/10 -f 520/463/8 524/469/8 523/464/8 -f 517/466/10 521/1183/10 522/467/10 -f 518/468/1 522/467/1 524/469/1 -f 519/465/3 523/464/3 521/470/3 -f 528/472/8 532/479/8 531/473/8 -f 525/475/10 529/480/10 530/476/10 -f 526/478/1 530/1184/1 532/479/1 -f 527/474/3 531/473/3 529/480/3 -f 521/481/11 537/1185/11 538/482/11 -f 535/484/3 543/502/3 539/485/3 -f 536/493/33 535/484/33 531/473/33 -f 534/487/33 533/491/33 523/464/33 -f 540/496/8 537/1186/8 541/497/8 -f 537/499/11 540/512/11 546/500/11 -f 536/493/12 544/506/12 543/502/12 -f 522/483/1 538/482/1 542/503/1 -f 529/486/11 539/485/11 540/504/11 -f 530/492/1 540/1187/1 544/506/1 -f 534/487/12 542/503/12 541/507/12 -f 533/491/3 541/507/3 537/508/3 -f 538/482/7 545/501/7 547/511/7 -f 543/502/6 548/514/6 546/500/6 -f 547/511/12 548/514/12 544/498/12 -f 547/511/10 545/501/10 546/500/10 -f 551/516/3 552/523/3 550/517/3 -f 555/519/34 556/522/34 552/520/34 -f 556/522/10 554/1188/10 550/517/10 -f 549/524/8 553/526/8 555/519/8 -f 553/526/1 554/1188/1 556/522/1 -f 559/527/3 560/534/3 558/528/3 -f 563/530/34 564/533/34 560/531/34 -f 564/533/10 562/1189/10 558/528/10 -f 557/535/8 561/537/8 563/530/8 -f 561/537/1 562/1189/1 564/533/1 -f 566/538/1 568/1190/1 567/539/1 -f 568/541/35 572/545/35 571/542/35 -f 566/544/10 570/1191/10 572/545/10 -f 565/540/8 567/539/8 571/542/8 -f 572/545/3 570/1191/3 569/547/3 -f 574/548/1 576/1192/1 575/549/1 -f 576/551/35 580/555/35 579/552/35 -f 574/554/10 578/1193/10 580/555/10 -f 573/550/8 575/549/8 579/552/8 -f 580/555/3 578/1193/3 577/557/3 -f 586/414/6 585/1194/6 582/558/6 -f 584/422/7 583/418/7 588/417/7 -f 458/561/11 581/1195/11 582/1196/11 -f 582/1196/11 583/1197/11 584/560/11 -f 584/560/11 459/1198/11 460/405/11 -f 460/405/11 457/407/11 458/561/11 -f 458/561/11 582/1196/11 584/560/11 -f 59/564/11 58/1199/11 67/562/11 -f 58/1199/11 57/1200/11 67/562/11 -f 57/1200/11 68/1201/11 67/562/11 -f 67/562/11 66/1202/11 65/1203/11 -f 65/1203/11 64/1204/11 63/563/11 -f 63/563/11 62/1205/11 59/564/11 -f 62/1205/11 61/1206/11 59/564/11 -f 61/1206/11 60/1207/11 59/564/11 -f 67/562/11 65/1203/11 63/563/11 -f 589/567/11 590/1208/11 591/1209/11 -f 591/1209/11 592/1210/11 593/565/11 -f 593/565/11 594/1211/11 595/566/11 -f 595/566/11 596/1212/11 589/567/11 -f 589/567/11 591/1209/11 593/565/11 -f 611/568/11 612/1213/11 604/569/11 -f 604/569/11 612/1213/11 605/571/11 -f 597/572/11 605/571/11 606/573/11 -f 598/574/11 606/573/11 607/575/11 -f 607/575/11 608/578/11 600/577/11 -f 608/578/11 609/1214/11 601/579/11 -f 609/580/11 610/1215/11 602/581/11 -f 602/581/11 610/1215/11 611/568/11 -f 615/1216/12 614/1217/12 613/583/12 -f 613/583/12 620/1218/12 619/584/12 -f 619/584/12 618/1219/12 617/585/12 -f 617/585/12 616/1220/12 615/1216/12 -f 615/1216/12 613/583/12 617/585/12 -f 621/588/11 622/1221/11 623/1222/11 -f 623/1222/11 624/1223/11 621/588/11 -f 624/1223/11 625/586/11 621/588/11 -f 625/586/11 626/1224/11 627/587/11 -f 627/587/11 628/1225/11 621/588/11 -f 643/589/11 644/1226/11 636/590/11 -f 636/590/11 644/1226/11 637/592/11 -f 629/593/11 637/592/11 638/594/11 -f 630/595/11 638/594/11 639/596/11 -f 639/596/11 640/599/11 632/598/11 -f 640/599/11 641/1227/11 633/600/11 -f 641/601/11 642/604/11 634/602/11 -f 642/604/11 643/589/11 635/591/11 -f 647/606/12 646/1228/12 645/1229/12 -f 645/1229/12 652/1230/12 647/606/12 -f 652/1230/12 651/607/12 647/606/12 -f 651/607/12 650/1231/12 649/1232/12 -f 649/1232/12 648/605/12 651/607/12 -f 653/1233/11 654/1234/11 655/608/11 -f 655/608/11 656/1235/11 657/609/11 -f 657/609/11 658/1236/11 659/610/11 -f 659/610/11 660/1237/11 653/1233/11 -f 653/1233/11 655/608/11 659/610/11 -f 675/611/11 676/1238/11 668/612/11 -f 668/612/11 676/1238/11 669/614/11 -f 661/615/11 669/614/11 670/616/11 -f 662/617/11 670/616/11 671/618/11 -f 671/618/11 672/621/11 664/620/11 -f 672/621/11 673/1239/11 665/622/11 -f 673/623/11 674/626/11 666/624/11 -f 674/626/11 675/611/11 667/613/11 -f 679/628/12 678/1240/12 683/629/12 -f 678/1240/12 677/1241/12 683/629/12 -f 677/1241/12 684/1242/12 683/629/12 -f 683/629/12 682/1243/12 681/1244/12 -f 681/1244/12 680/627/12 683/629/12 -f 685/1245/11 686/1246/11 687/630/11 -f 687/630/11 688/1247/11 689/631/11 -f 689/631/11 690/1248/11 691/632/11 -f 691/632/11 692/1249/11 685/1245/11 -f 685/1245/11 687/630/11 691/632/11 -f 707/633/11 708/1250/11 700/634/11 -f 700/634/11 708/1250/11 701/636/11 -f 693/637/11 701/636/11 702/638/11 -f 694/639/11 702/638/11 703/640/11 -f 703/640/11 704/643/11 696/642/11 -f 704/643/11 705/1251/11 697/644/11 -f 697/645/11 705/1252/11 706/646/11 -f 698/647/11 706/646/11 707/633/11 -f 711/649/12 710/1253/12 715/650/12 -f 710/1253/12 709/1254/12 715/650/12 -f 709/1254/12 716/1255/12 715/650/12 -f 715/650/12 714/1256/12 713/1257/12 -f 713/1257/12 712/648/12 715/650/12 -f 717/1258/11 718/1259/11 719/651/11 -f 719/651/11 720/1260/11 721/652/11 -f 721/652/11 722/1261/11 723/653/11 -f 723/653/11 724/1262/11 717/1258/11 -f 717/1258/11 719/651/11 723/653/11 -f 739/654/11 740/1263/11 732/655/11 -f 732/655/11 740/1263/11 733/657/11 -f 725/658/11 733/657/11 734/659/11 -f 726/660/11 734/659/11 735/661/11 -f 735/661/11 736/664/11 728/663/11 -f 736/664/11 737/1264/11 729/665/11 -f 729/666/11 737/1265/11 738/667/11 -f 730/668/11 738/667/11 739/654/11 -f 743/669/12 742/1266/12 741/670/12 -f 741/670/12 748/1267/12 747/671/12 -f 747/671/12 746/1268/12 745/1269/12 -f 745/1269/12 744/1270/12 747/671/12 -f 744/1270/12 743/669/12 747/671/12 -f 749/674/11 750/1271/11 751/1272/11 -f 751/1272/11 752/1273/11 753/672/11 -f 753/672/11 754/1274/11 755/673/11 -f 755/673/11 756/1275/11 749/674/11 -f 749/674/11 751/1272/11 753/672/11 -f 771/675/11 772/1276/11 764/676/11 -f 764/676/11 772/1276/11 765/678/11 -f 757/679/11 765/678/11 766/680/11 -f 758/681/11 766/680/11 767/682/11 -f 767/682/11 768/685/11 760/684/11 -f 768/685/11 769/1277/11 761/686/11 -f 769/687/11 770/1278/11 762/688/11 -f 762/688/11 770/1278/11 771/675/11 -f 775/690/12 774/1279/12 773/691/12 -f 773/691/12 780/1280/12 779/692/12 -f 779/692/12 778/1281/12 777/1282/12 -f 777/1282/12 776/1283/12 779/692/12 -f 776/1283/12 775/690/12 779/692/12 -f 781/693/11 782/1284/11 783/694/11 -f 783/694/11 784/1285/11 785/695/11 -f 785/695/11 786/1286/11 787/1287/11 -f 787/1287/11 788/1288/11 785/695/11 -f 788/1288/11 781/693/11 785/695/11 -f 803/696/11 804/1289/11 796/697/11 -f 796/697/11 804/1289/11 797/699/11 -f 789/700/11 797/699/11 798/701/11 -f 790/702/11 798/701/11 799/703/11 -f 799/703/11 800/706/11 792/705/11 -f 800/706/11 801/1290/11 793/707/11 -f 793/708/11 801/1291/11 802/709/11 -f 794/710/11 802/709/11 803/696/11 -f 807/712/12 806/1292/12 805/1293/12 -f 805/1293/12 812/1294/12 807/712/12 -f 812/1294/12 811/713/12 807/712/12 -f 811/713/12 810/1295/12 809/1296/12 -f 809/1296/12 808/711/12 811/713/12 -f 813/1297/11 814/1298/11 815/714/11 -f 815/714/11 816/1299/11 817/715/11 -f 817/715/11 818/1300/11 819/716/11 -f 819/716/11 820/1301/11 813/1297/11 -f 813/1297/11 815/714/11 819/716/11 -f 835/717/11 836/1302/11 828/718/11 -f 828/718/11 836/1302/11 829/720/11 -f 821/721/11 829/720/11 830/722/11 -f 822/723/11 830/722/11 831/724/11 -f 831/724/11 832/727/11 824/726/11 -f 832/727/11 833/1303/11 825/728/11 -f 833/729/11 834/732/11 826/730/11 -f 834/732/11 835/717/11 827/719/11 -f 839/733/12 838/1304/12 837/734/12 -f 837/734/12 844/1305/12 843/735/12 -f 843/735/12 842/1306/12 841/1307/12 -f 841/1307/12 840/1308/12 843/735/12 -f 840/1308/12 839/733/12 843/735/12 -f 845/1309/11 846/1310/11 847/736/11 -f 847/736/11 848/1311/11 849/737/11 -f 849/737/11 850/1312/11 851/738/11 -f 851/738/11 852/1313/11 845/1309/11 -f 845/1309/11 847/736/11 851/738/11 -f 867/739/11 868/1314/11 860/740/11 -f 860/740/11 868/1314/11 861/742/11 -f 853/743/11 861/742/11 862/744/11 -f 854/745/11 862/744/11 863/746/11 -f 863/746/11 864/749/11 856/748/11 -f 864/749/11 865/1315/11 857/750/11 -f 865/751/11 866/1316/11 858/752/11 -f 858/752/11 866/1316/11 867/739/11 -f 871/755/12 870/1317/12 875/756/12 -f 870/1317/12 869/1318/12 875/756/12 -f 869/1318/12 876/1319/12 875/756/12 -f 875/756/12 874/1320/12 873/1321/12 -f 873/1321/12 872/754/12 875/756/12 -f 877/759/11 878/1322/11 879/1323/11 -f 879/1323/11 880/1324/11 877/759/11 -f 880/1324/11 881/1325/11 877/759/11 -f 881/1325/11 882/1326/11 877/759/11 -f 882/1326/11 883/757/11 877/759/11 -f 899/760/11 900/1327/11 892/761/11 -f 892/761/11 900/1327/11 893/763/11 -f 885/764/11 893/763/11 894/765/11 -f 886/766/11 894/765/11 895/767/11 -f 895/767/11 896/770/11 888/769/11 -f 896/770/11 897/1328/11 889/771/11 -f 889/772/11 897/1329/11 898/773/11 -f 890/774/11 898/773/11 899/760/11 -f 903/775/12 902/1330/12 901/776/12 -f 901/776/12 908/1331/12 907/777/12 -f 907/777/12 906/1332/12 905/1333/12 -f 905/1333/12 904/1334/12 907/777/12 -f 904/1334/12 903/775/12 907/777/12 -f 909/780/11 910/1335/11 911/1336/11 -f 911/1336/11 912/1337/11 913/778/11 -f 913/778/11 914/1338/11 915/779/11 -f 915/779/11 916/1339/11 909/780/11 -f 909/780/11 911/1336/11 913/778/11 -f 931/781/11 932/1340/11 924/782/11 -f 924/782/11 932/1340/11 925/784/11 -f 917/785/11 925/784/11 926/786/11 -f 918/787/11 926/786/11 927/788/11 -f 927/788/11 928/791/11 920/790/11 -f 928/791/11 929/1341/11 921/792/11 -f 921/793/11 929/1342/11 930/794/11 -f 922/795/11 930/794/11 931/781/11 -f 935/796/12 934/1343/12 933/797/12 -f 933/797/12 940/1344/12 939/798/12 -f 939/798/12 938/1345/12 937/1346/12 -f 937/1346/12 936/1347/12 939/798/12 -f 936/1347/12 935/796/12 939/798/12 -f 941/799/11 942/1348/11 943/800/11 -f 943/800/11 944/1349/11 945/801/11 -f 945/801/11 946/1350/11 947/1351/11 -f 947/1351/11 948/1352/11 945/801/11 -f 948/1352/11 941/799/11 945/801/11 -f 963/802/11 964/1353/11 956/803/11 -f 956/803/11 964/1353/11 957/805/11 -f 949/806/11 957/805/11 958/807/11 -f 950/808/11 958/807/11 959/809/11 -f 959/809/11 960/812/11 952/811/11 -f 960/812/11 961/1354/11 953/813/11 -f 953/814/11 961/1355/11 962/815/11 -f 954/816/11 962/815/11 963/802/11 -f 967/818/12 966/1356/12 965/1357/12 -f 965/1357/12 972/1358/12 967/818/12 -f 972/1358/12 971/819/12 967/818/12 -f 971/819/12 970/1359/12 969/1360/12 -f 969/1360/12 968/817/12 971/819/12 -f 973/820/11 974/1361/11 975/821/11 -f 975/821/11 976/1362/11 977/822/11 -f 977/822/11 978/1363/11 973/820/11 -f 978/1363/11 979/1364/11 973/820/11 -f 979/1364/11 980/1365/11 973/820/11 -f 995/823/11 996/1366/11 988/824/11 -f 988/824/11 996/1366/11 989/826/11 -f 981/827/11 989/826/11 990/828/11 -f 982/829/11 990/828/11 991/830/11 -f 991/830/11 992/833/11 984/832/11 -f 992/833/11 993/1367/11 985/834/11 -f 993/835/11 994/838/11 986/836/11 -f 994/838/11 995/823/11 987/825/11 -f 999/839/12 998/1368/12 997/840/12 -f 997/840/12 1004/1369/12 1003/841/12 -f 1003/841/12 1002/1370/12 1001/1371/12 -f 1001/1371/12 1000/1372/12 1003/841/12 -f 1000/1372/12 999/839/12 1003/841/12 -f 1005/1373/11 1006/1374/11 1007/842/11 -f 1007/842/11 1008/1375/11 1009/843/11 -f 1009/843/11 1010/1376/11 1011/844/11 -f 1011/844/11 1012/1377/11 1005/1373/11 -f 1005/1373/11 1007/842/11 1011/844/11 -f 1027/845/11 1028/1378/11 1020/846/11 -f 1020/846/11 1028/1378/11 1021/848/11 -f 1013/849/11 1021/848/11 1022/850/11 -f 1014/851/11 1022/850/11 1023/852/11 -f 1023/852/11 1024/855/11 1016/854/11 -f 1024/855/11 1025/1379/11 1017/856/11 -f 1025/857/11 1026/1380/11 1018/858/11 -f 1018/858/11 1026/1380/11 1027/845/11 -f 1031/861/12 1030/1381/12 1035/862/12 -f 1030/1381/12 1029/1382/12 1035/862/12 -f 1029/1382/12 1036/1383/12 1035/862/12 -f 1035/862/12 1034/1384/12 1033/1385/12 -f 1033/1385/12 1032/860/12 1035/862/12 -f 1037/1386/11 1038/1387/11 1039/863/11 -f 1039/863/11 1040/1388/11 1041/864/11 -f 1041/864/11 1042/1389/11 1043/865/11 -f 1043/865/11 1044/1390/11 1037/1386/11 -f 1037/1386/11 1039/863/11 1043/865/11 -f 1059/866/11 1060/1391/11 1052/867/11 -f 1052/867/11 1060/1391/11 1053/869/11 -f 1045/870/11 1053/869/11 1054/871/11 -f 1046/872/11 1054/871/11 1055/873/11 -f 1055/873/11 1056/876/11 1048/875/11 -f 1056/876/11 1057/1392/11 1049/877/11 -f 1049/878/11 1057/1393/11 1058/879/11 -f 1050/880/11 1058/879/11 1059/866/11 -f 1063/881/12 1062/1394/12 1061/882/12 -f 1061/882/12 1068/1395/12 1067/883/12 -f 1067/883/12 1066/1396/12 1065/1397/12 -f 1065/1397/12 1064/1398/12 1067/883/12 -f 1064/1398/12 1063/881/12 1067/883/12 -f 1069/886/11 1070/1399/11 1071/1400/11 -f 1071/1400/11 1072/1401/11 1073/884/11 -f 1073/884/11 1074/1402/11 1075/885/11 -f 1075/885/11 1076/1403/11 1069/886/11 -f 1069/886/11 1071/1400/11 1073/884/11 -f 1091/887/11 1092/1404/11 1084/888/11 -f 1084/888/11 1092/1404/11 1085/890/11 -f 1077/891/11 1085/890/11 1086/892/11 -f 1078/893/11 1086/892/11 1087/894/11 -f 1087/894/11 1088/897/11 1080/896/11 -f 1088/897/11 1089/1405/11 1081/898/11 -f 1081/899/11 1089/1406/11 1090/900/11 -f 1082/901/11 1090/900/11 1091/887/11 -f 1095/902/12 1094/1407/12 1093/903/12 -f 1093/903/12 1100/1408/12 1099/904/12 -f 1099/904/12 1098/1409/12 1097/1410/12 -f 1097/1410/12 1096/1411/12 1099/904/12 -f 1096/1411/12 1095/902/12 1099/904/12 -f 1101/905/11 1102/1412/11 1103/906/11 -f 1103/906/11 1104/1413/11 1105/907/11 -f 1105/907/11 1106/1414/11 1107/1415/11 -f 1107/1415/11 1108/1416/11 1105/907/11 -f 1108/1416/11 1101/905/11 1105/907/11 -f 1123/908/11 1124/1417/11 1116/909/11 -f 1116/909/11 1124/1417/11 1117/911/11 -f 1109/912/11 1117/911/11 1118/913/11 -f 1110/914/11 1118/913/11 1119/915/11 -f 1119/915/11 1120/918/11 1112/917/11 -f 1120/918/11 1121/1418/11 1113/919/11 -f 1113/920/11 1121/1419/11 1122/921/11 -f 1122/921/11 1123/908/11 1115/910/11 -f 1127/925/12 1126/1420/12 1125/1421/12 -f 1125/1421/12 1132/1422/12 1127/925/12 -f 1132/1422/12 1131/1423/12 1127/925/12 -f 1131/1423/12 1130/1424/12 1127/925/12 -f 1130/1424/12 1129/923/12 1127/925/12 -f 1133/1425/11 1134/1426/11 1135/926/11 -f 1135/926/11 1136/1427/11 1137/927/11 -f 1137/927/11 1138/1428/11 1139/928/11 -f 1139/928/11 1140/1429/11 1133/1425/11 -f 1133/1425/11 1135/926/11 1139/928/11 -f 1155/929/11 1156/1430/11 1148/930/11 -f 1148/930/11 1156/1430/11 1149/932/11 -f 1141/933/11 1149/932/11 1150/934/11 -f 1142/935/11 1150/934/11 1151/936/11 -f 1151/936/11 1152/939/11 1144/938/11 -f 1152/939/11 1153/1431/11 1145/940/11 -f 1153/941/11 1154/944/11 1146/942/11 -f 1154/944/11 1155/929/11 1147/931/11 -f 1159/945/12 1158/1432/12 1157/946/12 -f 1157/946/12 1164/1433/12 1163/947/12 -f 1163/947/12 1162/1434/12 1161/1435/12 -f 1161/1435/12 1160/1436/12 1163/947/12 -f 1160/1436/12 1159/945/12 1163/947/12 -f 1165/1437/11 1166/1438/11 1167/948/11 -f 1167/948/11 1168/1439/11 1169/949/11 -f 1169/949/11 1170/1440/11 1171/950/11 -f 1171/950/11 1172/1441/11 1165/1437/11 -f 1165/1437/11 1167/948/11 1171/950/11 -f 1187/951/11 1188/954/11 1180/952/11 -f 1188/954/11 1181/1442/11 1173/955/11 -f 1173/955/11 1181/1442/11 1182/956/11 -f 1174/957/11 1182/956/11 1183/958/11 -f 1183/958/11 1184/961/11 1176/960/11 -f 1184/961/11 1185/1443/11 1177/962/11 -f 1185/963/11 1186/1444/11 1178/964/11 -f 1178/964/11 1186/1444/11 1187/951/11 -f 1191/967/12 1190/1445/12 1195/968/12 -f 1190/1445/12 1189/1446/12 1195/968/12 -f 1189/1446/12 1196/1447/12 1195/968/12 -f 1195/968/12 1194/1448/12 1193/1449/12 -f 1193/1449/12 1192/966/12 1195/968/12 +f 930/1595/77 931/1596/77 929/1597/77 +f 934/1598/78 940/1599/78 938/1600/78 +f 936/1601/79 933/1602/79 935/1603/79 +f 937/1604/80 932/1605/80 930/1595/80 +f 947/1606/81 937/1604/81 945/1607/81 +f 942/1608/82 935/1603/82 933/1602/82 +f 943/1609/83 929/1597/83 931/1596/83 +f 946/1610/84 947/1606/84 945/1607/84 +f 948/1611/85 938/1600/85 940/1599/85 +f 942/1608/86 1029/1612/86 944/1613/86 +f 943/1609/86 1032/1614/86 941/1615/86 +f 962/1616/87 975/1617/87 963/1618/87 +f 969/1619/87 982/1620/87 970/1621/87 +f 967/1622/87 978/1623/87 979/1624/87 +f 963/1618/87 976/1625/87 964/1626/87 +f 971/1627/87 982/1628/87 983/1629/87 +f 968/1630/87 979/1631/87 980/1632/87 +f 965/1633/87 976/1634/87 977/1635/87 +f 971/1627/87 984/1636/87 972/1637/87 +f 962/1616/87 973/1638/87 974/1639/87 +f 968/1630/87 981/1640/87 969/1619/87 +f 966/1641/87 977/1642/87 978/1643/87 +f 972/1637/87 973/1644/87 961/1645/87 +f 1023/1646/86 1022/1647/86 1021/1648/86 +f 1027/1649/86 1059/1650/86 1026/1651/86 +f 1024/1652/79 1027/1653/79 1022/1654/79 +f 1023/1646/77 1026/1655/77 1025/1656/77 +f 1023/1646/87 1028/1657/87 1024/1652/87 +f 1022/1647/88 1026/1651/88 1021/1648/88 +f 1031/1658/88 938/1659/88 937/1660/88 +f 1030/1661/87 939/1662/87 1029/1663/87 +f 1043/1664/86 1042/1665/86 1041/1666/86 +f 1044/1667/79 1050/1668/79 1042/1669/79 +f 1049/1670/77 1045/1671/77 1043/1672/77 +f 1054/1673/84 1057/1674/84 1053/1675/84 +f 1043/1672/87 1048/1676/87 1044/1677/87 +f 1050/1668/88 1051/1678/88 1049/1670/88 +f 1042/1665/89 1049/1670/89 1041/1666/89 +f 1051/1678/84 1048/1679/84 1045/1680/84 +f 1047/1681/86 1055/1682/86 1046/1683/86 +f 1046/1683/81 1058/1684/81 1054/1673/81 +f 1053/1675/85 1056/1685/85 1047/1686/85 +f 1025/1656/90 1062/1687/90 1028/1657/90 +f 1061/1688/84 1064/1689/84 1062/1687/84 +f 1026/1655/77 1063/1690/77 1061/1691/77 +f 1064/1692/79 1060/1693/79 1027/1653/79 +f 1068/1694/84 1070/1695/84 1065/1696/84 +f 1074/1697/84 1086/1698/84 1075/1699/84 +f 1070/1695/88 1072/1700/88 1196/1701/88 +f 1066/1702/79 1194/1703/79 1189/1704/79 +f 1190/1705/86 1196/1706/86 1191/1707/86 +f 1072/1708/80 1068/1694/80 1067/1709/80 +f 1066/1702/78 1070/1695/78 1069/1710/78 +f 1192/1711/77 1072/1708/77 1067/1709/77 +f 1086/1698/88 1084/1712/88 1082/1713/88 +f 1076/1714/79 1088/1715/79 1079/1716/79 +f 1080/1717/86 1082/1718/86 1077/1719/86 +f 1088/1715/82 1080/1720/82 1079/1716/82 +f 1078/1721/83 1082/1718/83 1081/1722/83 +f 1084/1723/80 1074/1697/80 1073/1724/80 +f 1076/1714/78 1086/1698/78 1085/1725/78 +f 1078/1721/77 1084/1723/77 1073/1724/77 +f 1090/1726/91 1091/1727/91 1089/1728/91 +f 1099/1729/77 1095/1730/77 1097/1731/77 +f 1089/1728/79 1091/1732/79 1093/1733/79 +f 1090/1726/77 1094/1734/77 1092/1735/77 +f 1100/1736/79 1098/1737/79 1096/1738/79 +f 1099/1729/91 1098/1739/91 1100/1736/91 +f 1111/1740/86 1107/1741/86 1116/1742/86 +f 1117/1743/92 1120/1744/92 1118/1745/92 +f 1119/1746/79 1121/1747/79 1123/1748/79 +f 1120/1744/77 1122/1749/77 1118/1750/77 +f 1119/1746/86 1124/1751/86 1120/1744/86 +f 1128/1752/84 1131/1753/84 1127/1754/84 +f 1125/1755/86 1130/1756/86 1126/1757/86 +f 1126/1757/77 1132/1758/77 1128/1752/77 +f 1127/1754/79 1129/1759/79 1125/1760/79 +f 1136/1761/84 1139/1762/84 1135/1763/84 +f 1133/1764/86 1138/1765/86 1134/1766/86 +f 1134/1767/77 1140/1768/77 1136/1761/77 +f 1135/1763/79 1137/1769/79 1133/1764/79 +f 1129/1770/87 1146/1771/87 1130/1772/87 +f 1143/1773/79 1147/1774/79 1137/1775/79 +f 1130/1772/77 1142/1776/77 1132/1777/77 +f 1129/1778/79 1131/1779/79 1141/1780/79 +f 1138/1781/77 1144/1782/77 1140/1783/77 +f 1137/1775/79 1139/1784/79 1143/1773/79 +f 1144/1782/93 1139/1762/93 1140/1768/93 +f 1142/1776/93 1131/1753/93 1132/1758/93 +f 1148/1785/84 1149/1786/84 1152/1787/84 +f 1145/1788/87 1154/1789/87 1153/1790/87 +f 1144/1782/88 1151/1791/88 1143/1773/88 +f 1130/1772/77 1150/1792/77 1142/1776/77 +f 1137/1775/87 1148/1793/87 1138/1794/87 +f 1138/1781/77 1152/1795/77 1144/1782/77 +f 1142/1776/88 1149/1796/88 1141/1780/88 +f 1141/1780/79 1145/1797/79 1129/1778/79 +f 1145/1788/87 1153/1790/87 1146/1798/87 +f 1150/1799/88 1155/1800/88 1149/1786/88 +f 1146/1771/83 1155/1800/83 1150/1792/83 +f 1148/1801/87 1147/1802/87 1154/1789/87 +f 1152/1787/88 1156/1803/88 1151/1804/88 +f 1151/1791/82 1154/1789/82 1147/1774/82 +f 1155/1800/88 1152/1787/88 1149/1786/88 +f 1155/1800/86 1154/1789/86 1156/1803/86 +f 1159/1805/79 1158/1806/79 1157/1807/79 +f 1163/1808/94 1160/1809/94 1159/1810/94 +f 1164/1811/86 1158/1806/86 1160/1812/86 +f 1157/1813/84 1163/1808/84 1159/1814/84 +f 1161/1815/77 1164/1811/77 1163/1808/77 +f 1167/1816/79 1166/1817/79 1165/1818/79 +f 1171/1819/94 1168/1820/94 1167/1821/94 +f 1172/1822/86 1166/1817/86 1168/1823/86 +f 1165/1824/84 1171/1819/84 1167/1825/84 +f 1169/1826/77 1172/1822/77 1171/1819/77 +f 1174/1827/77 1175/1828/77 1173/1829/77 +f 1176/1830/95 1179/1831/95 1175/1832/95 +f 1174/1833/86 1180/1834/86 1176/1835/86 +f 1173/1829/84 1179/1831/84 1177/1836/84 +f 1180/1834/79 1177/1836/79 1179/1831/79 +f 1182/1837/77 1183/1838/77 1181/1839/77 +f 1184/1840/95 1187/1841/95 1183/1842/95 +f 1182/1843/86 1188/1844/86 1184/1845/86 +f 1181/1839/84 1187/1841/84 1185/1846/84 +f 1188/1844/79 1185/1846/79 1187/1841/79 +f 1194/1703/82 1190/1847/82 1189/1704/82 +f 1192/1711/83 1196/1706/83 1195/1848/83 +f 1192/1849/87 1068/1694/87 1066/1850/87 +f 995/1851/87 991/1852/87 987/1853/87 +f 930/1595/77 932/1605/77 931/1596/77 +f 934/1598/78 936/1601/78 940/1599/78 +f 936/1601/79 934/1598/79 933/1602/79 +f 937/1604/80 939/1854/80 932/1605/80 +f 947/1606/81 939/1854/81 937/1604/81 +f 942/1608/82 944/1613/82 935/1603/82 +f 943/1609/83 941/1615/83 929/1597/83 +f 946/1610/84 948/1611/84 947/1606/84 +f 948/1611/85 946/1610/85 938/1600/85 +f 942/1608/86 1031/1855/86 1029/1612/86 +f 943/1609/86 1030/1856/86 1032/1614/86 +f 962/1616/87 974/1857/87 975/1617/87 +f 969/1619/87 981/1858/87 982/1620/87 +f 967/1622/87 966/1641/87 978/1623/87 +f 963/1618/87 975/1859/87 976/1625/87 +f 971/1627/87 970/1621/87 982/1628/87 +f 968/1630/87 967/1860/87 979/1631/87 +f 965/1633/87 964/1626/87 976/1634/87 +f 971/1627/87 983/1861/87 984/1636/87 +f 962/1616/87 961/1645/87 973/1638/87 +f 968/1630/87 980/1862/87 981/1640/87 +f 966/1641/87 965/1633/87 977/1642/87 +f 972/1637/87 984/1863/87 973/1644/87 +f 1023/1646/86 1024/1652/86 1022/1647/86 +f 1027/1649/86 1060/1864/86 1059/1650/86 +f 1024/1652/79 1028/1657/79 1027/1653/79 +f 1023/1646/77 1021/1865/77 1026/1655/77 +f 1023/1646/87 1025/1656/87 1028/1657/87 +f 1022/1647/88 1027/1649/88 1026/1651/88 +f 930/1595/88 929/1597/88 1032/1866/88 +f 929/1597/88 941/1867/88 1032/1866/88 +f 1032/1866/88 1036/1868/88 1035/1869/88 +f 1036/1868/88 1040/1870/88 1039/1871/88 +f 946/1872/88 945/1873/88 937/1660/88 +f 937/1660/88 930/1595/88 1032/1866/88 +f 1036/1868/88 1039/1871/88 1035/1869/88 +f 1035/1869/88 1031/1658/88 1032/1866/88 +f 1031/1658/88 942/1874/88 933/1875/88 +f 933/1875/88 934/1876/88 1031/1658/88 +f 934/1876/88 938/1659/88 1031/1658/88 +f 938/1659/88 946/1872/88 937/1660/88 +f 937/1660/88 1032/1866/88 1031/1658/88 +f 931/1596/87 932/1605/87 1030/1661/87 +f 932/1605/87 939/1662/87 1030/1661/87 +f 939/1662/87 947/1877/87 948/1878/87 +f 940/1879/87 936/1880/87 1029/1663/87 +f 936/1880/87 935/1881/87 1029/1663/87 +f 939/1662/87 948/1878/87 940/1879/87 +f 943/1882/87 931/1596/87 1030/1661/87 +f 1038/1883/87 1034/1884/87 1037/1885/87 +f 1034/1884/87 1030/1661/87 1033/1886/87 +f 1037/1885/87 1034/1884/87 1033/1886/87 +f 939/1662/87 940/1879/87 1029/1663/87 +f 935/1881/87 944/1887/87 1029/1663/87 +f 1029/1663/87 1033/1886/87 1030/1661/87 +f 1043/1664/86 1044/1888/86 1042/1665/86 +f 1044/1667/79 1048/1889/79 1050/1668/79 +f 1048/1889/79 1052/1890/79 1050/1668/79 +f 1043/1672/77 1041/1891/77 1049/1670/77 +f 1049/1670/77 1051/1678/77 1045/1671/77 +f 1054/1673/84 1058/1684/84 1057/1674/84 +f 1043/1672/87 1045/1671/87 1048/1676/87 +f 1050/1668/88 1052/1890/88 1051/1678/88 +f 1042/1665/89 1050/1668/89 1049/1670/89 +f 1051/1678/84 1052/1890/84 1048/1679/84 +f 1047/1681/86 1056/1892/86 1055/1682/86 +f 1046/1683/81 1055/1682/81 1058/1684/81 +f 1053/1675/85 1057/1674/85 1056/1685/85 +f 1025/1656/90 1061/1688/90 1062/1687/90 +f 1061/1688/84 1063/1893/84 1064/1689/84 +f 1061/1691/77 1025/1656/77 1026/1655/77 +f 1026/1655/77 1059/1894/77 1063/1690/77 +f 1027/1653/79 1028/1657/79 1062/1895/79 +f 1062/1895/79 1064/1692/79 1027/1653/79 +f 1068/1694/84 1071/1896/84 1070/1695/84 +f 1074/1697/84 1083/1897/84 1086/1698/84 +f 1196/1701/88 1193/1898/88 1194/1899/88 +f 1194/1899/88 1069/1900/88 1070/1695/88 +f 1070/1695/88 1071/1896/88 1072/1700/88 +f 1072/1700/88 1195/1901/88 1196/1701/88 +f 1196/1701/88 1194/1899/88 1070/1695/88 +f 1066/1702/79 1069/1710/79 1194/1703/79 +f 1190/1705/86 1193/1902/86 1196/1706/86 +f 1072/1708/80 1071/1896/80 1068/1694/80 +f 1066/1702/78 1065/1696/78 1070/1695/78 +f 1192/1711/77 1195/1848/77 1072/1708/77 +f 1082/1713/88 1087/1903/88 1088/1904/88 +f 1088/1904/88 1085/1905/88 1086/1698/88 +f 1086/1698/88 1083/1897/88 1084/1712/88 +f 1084/1712/88 1081/1906/88 1082/1713/88 +f 1082/1713/88 1088/1904/88 1086/1698/88 +f 1076/1714/79 1085/1725/79 1088/1715/79 +f 1080/1717/86 1087/1907/86 1082/1718/86 +f 1088/1715/82 1087/1908/82 1080/1720/82 +f 1078/1721/83 1077/1719/83 1082/1718/83 +f 1084/1723/80 1083/1897/80 1074/1697/80 +f 1076/1714/78 1075/1699/78 1086/1698/78 +f 1078/1721/77 1081/1722/77 1084/1723/77 +f 1090/1726/91 1092/1909/91 1091/1727/91 +f 1099/1729/91 1097/1910/91 1098/1739/91 +f 1107/1741/86 1106/1911/86 1116/1742/86 +f 1116/1742/86 1115/1912/86 1112/1913/86 +f 1115/1912/86 1105/1914/86 1112/1913/86 +f 1105/1914/86 1108/1915/86 1112/1913/86 +f 1112/1913/86 1111/1740/86 1116/1742/86 +f 1117/1743/92 1119/1746/92 1120/1744/92 +f 1119/1746/79 1117/1916/79 1121/1747/79 +f 1120/1744/77 1124/1751/77 1122/1749/77 +f 1119/1746/86 1123/1748/86 1124/1751/86 +f 1128/1752/84 1132/1758/84 1131/1753/84 +f 1125/1755/86 1129/1917/86 1130/1756/86 +f 1126/1757/77 1130/1756/77 1132/1758/77 +f 1127/1754/79 1131/1753/79 1129/1759/79 +f 1136/1761/84 1140/1768/84 1139/1762/84 +f 1133/1764/86 1137/1769/86 1138/1765/86 +f 1134/1767/77 1138/1918/77 1140/1768/77 +f 1135/1763/79 1139/1762/79 1137/1769/79 +f 1129/1770/87 1145/1919/87 1146/1771/87 +f 1143/1773/79 1151/1791/79 1147/1774/79 +f 1144/1782/93 1143/1773/93 1139/1762/93 +f 1142/1776/93 1141/1780/93 1131/1753/93 +f 1148/1785/84 1145/1920/84 1149/1786/84 +f 1145/1788/87 1148/1801/87 1154/1789/87 +f 1144/1782/88 1152/1795/88 1151/1791/88 +f 1130/1772/77 1146/1771/77 1150/1792/77 +f 1137/1775/87 1147/1774/87 1148/1793/87 +f 1138/1781/77 1148/1921/77 1152/1795/77 +f 1142/1776/88 1150/1792/88 1149/1796/88 +f 1141/1780/79 1149/1796/79 1145/1797/79 +f 1146/1771/83 1153/1790/83 1155/1800/83 +f 1151/1791/82 1156/1803/82 1154/1789/82 +f 1155/1800/88 1156/1803/88 1152/1787/88 +f 1155/1800/86 1153/1790/86 1154/1789/86 +f 1159/1805/79 1160/1812/79 1158/1806/79 +f 1163/1808/94 1164/1811/94 1160/1809/94 +f 1164/1811/86 1162/1922/86 1158/1806/86 +f 1157/1813/84 1161/1815/84 1163/1808/84 +f 1161/1815/77 1162/1922/77 1164/1811/77 +f 1167/1816/79 1168/1823/79 1166/1817/79 +f 1171/1819/94 1172/1822/94 1168/1820/94 +f 1172/1822/86 1170/1923/86 1166/1817/86 +f 1165/1824/84 1169/1826/84 1171/1819/84 +f 1169/1826/77 1170/1923/77 1172/1822/77 +f 1174/1827/77 1176/1924/77 1175/1828/77 +f 1176/1830/95 1180/1834/95 1179/1831/95 +f 1174/1833/86 1178/1925/86 1180/1834/86 +f 1173/1829/84 1175/1828/84 1179/1831/84 +f 1180/1834/79 1178/1925/79 1177/1836/79 +f 1182/1837/77 1184/1926/77 1183/1838/77 +f 1184/1840/95 1188/1844/95 1187/1841/95 +f 1182/1843/86 1186/1927/86 1188/1844/86 +f 1181/1839/84 1183/1838/84 1187/1841/84 +f 1188/1844/79 1186/1927/79 1185/1846/79 +f 1194/1703/82 1193/1928/82 1190/1847/82 +f 1192/1711/83 1191/1707/83 1196/1706/83 +f 1066/1850/87 1189/1929/87 1190/1930/87 +f 1190/1930/87 1191/1931/87 1192/1849/87 +f 1192/1849/87 1067/1932/87 1068/1694/87 +f 1068/1694/87 1065/1696/87 1066/1850/87 +f 1066/1850/87 1190/1930/87 1192/1849/87 +f 987/1853/87 986/1933/87 995/1851/87 +f 986/1933/87 985/1934/87 995/1851/87 +f 985/1934/87 996/1935/87 995/1851/87 +f 995/1851/87 994/1936/87 993/1937/87 +f 993/1937/87 992/1938/87 991/1852/87 +f 991/1852/87 990/1939/87 987/1853/87 +f 990/1939/87 989/1940/87 987/1853/87 +f 989/1940/87 988/1941/87 987/1853/87 +f 995/1851/87 993/1937/87 991/1852/87 s 1 -f 36/32/1 25/1450/36 24/1451/1 -f 43/33/37 32/1452/38 31/1453/37 -f 33/51/8 22/1454/39 21/1455/8 -f 28/1456/40 41/25/41 29/1457/41 -f 37/39/36 26/1458/42 25/1450/36 -f 44/43/38 21/1455/8 32/1452/38 -f 34/22/39 23/1459/43 22/1454/39 -f 41/25/41 30/1460/3 29/1457/41 -f 26/1458/42 39/28/10 27/1461/10 -f 35/24/43 24/1451/1 23/1459/43 -f 42/27/3 31/1453/37 30/1460/3 -f 39/975/10 28/1456/40 27/1462/10 -f 56/978/42 57/1463/10 45/50/10 -f 46/972/40 59/1464/41 47/23/41 -f 53/973/43 66/1465/1 54/26/1 -f 50/29/38 63/1466/8 51/30/8 -f 47/974/41 60/1467/3 48/31/3 -f 54/34/1 67/1468/36 55/35/36 -f 51/37/8 64/1469/39 52/38/39 -f 48/40/3 61/1470/37 49/41/37 -f 55/976/36 68/1471/42 56/42/42 -f 45/44/10 58/1472/40 46/45/40 -f 52/977/39 65/1473/43 53/46/43 -f 49/48/37 62/1474/38 50/49/38 -f 74/1475/42 85/1476/36 73/1477/36 -f 69/1478/8 92/1479/38 80/1480/38 -f 71/1481/43 82/1482/39 70/1483/39 -f 78/1484/3 89/1485/41 77/1486/41 -f 75/1487/10 86/1488/42 74/1475/42 -f 72/1489/1 83/1490/43 71/1481/43 -f 79/1491/37 90/1492/3 78/1484/3 -f 76/1493/40 87/1494/10 75/1495/10 -f 73/1477/36 84/1496/1 72/1489/1 -f 79/1491/37 92/1479/38 91/1497/37 -f 70/1483/39 81/1498/8 69/1478/8 -f 77/1486/41 88/1499/40 76/1493/40 -f 137/1008/44 135/991/3 151/138/3 -f 151/140/3 136/992/45 152/1009/45 -f 145/122/46 128/983/1 144/1000/1 -f 138/1007/6 121/990/44 137/136/44 -f 167/153/1 160/1500/4 159/1501/1 -f 165/165/10 158/1502/7 157/1503/10 -f 163/159/3 156/1504/6 155/1505/3 -f 161/155/8 154/1506/2 153/1507/8 -f 168/152/4 153/1507/8 160/1500/4 -f 166/164/7 159/1501/1 158/1502/7 -f 164/160/6 157/1508/10 156/1504/6 -f 162/157/2 155/1505/3 154/1506/2 -f 146/999/4 129/982/46 145/120/46 -f 139/1006/47 122/989/6 138/134/6 -f 147/118/48 130/67/4 146/998/4 -f 140/1005/10 123/988/47 139/132/47 -f 148/116/8 131/113/48 147/117/48 -f 141/1004/49 124/987/10 140/130/10 -f 149/146/50 132/110/8 148/1012/8 -f 142/1003/7 125/986/49 141/128/49 -f 150/144/2 133/107/50 149/1011/50 -f 143/1002/51 126/985/7 142/126/7 -f 152/142/45 134/104/2 150/1010/2 -f 144/1001/1 127/984/51 143/124/51 -f 171/158/3 180/1509/6 172/161/6 -f 169/154/8 178/1510/2 170/156/2 -f 176/1018/4 177/1511/8 169/154/8 -f 174/1020/7 183/1512/1 175/151/1 -f 172/161/6 181/1513/10 173/1019/10 -f 170/156/2 179/1514/3 171/158/3 -f 175/151/1 184/1515/4 176/1018/4 -f 173/163/10 182/1516/7 174/1020/7 -f 106/64/51 207/291/7 206/253/51 -f 187/1030/7 217/1517/49 186/193/49 -f 185/1032/10 232/1518/47 200/197/47 -f 108/172/49 207/291/7 107/169/7 -f 188/1029/51 219/1519/7 187/191/7 -f 109/175/10 208/289/49 108/172/49 -f 189/1028/1 220/1520/51 188/189/51 -f 110/178/47 209/286/10 109/1026/10 -f 190/1027/46 221/1521/1 189/187/1 -f 111/181/6 210/284/47 110/178/47 -f 191/185/4 222/1522/46 190/186/46 -f 112/184/44 211/282/6 111/181/6 -f 192/182/48 223/1523/4 191/183/4 -f 113/188/3 212/280/44 112/184/44 -f 193/179/8 224/1524/48 192/180/48 -f 114/190/45 213/278/3 113/188/3 -f 194/176/50 225/1525/8 193/177/8 -f 114/190/45 215/271/2 214/274/45 -f 195/173/2 226/1526/50 194/174/50 -f 101/196/8 201/262/48 202/265/8 -f 116/194/50 215/271/2 115/192/2 -f 196/170/45 227/1527/2 195/171/2 -f 102/198/48 203/259/4 201/262/48 -f 101/196/8 216/268/50 116/194/50 -f 197/65/3 228/1528/45 196/66/45 -f 104/202/46 203/259/4 103/200/4 -f 198/1035/44 229/1529/3 197/203/3 -f 105/204/1 204/256/46 104/202/46 -f 198/201/44 231/1530/6 230/1531/44 -f 106/64/51 205/255/1 105/204/1 -f 186/1031/49 218/1532/10 185/195/10 -f 200/1033/47 231/1533/6 199/199/6 -f 241/230/1 258/1053/51 242/231/51 -f 233/210/45 251/1060/2 235/208/2 -f 242/233/51 259/275/7 243/234/7 -f 235/213/2 252/1059/50 236/211/50 -f 243/236/7 260/272/49 244/237/49 -f 236/216/50 253/1058/8 237/214/8 -f 244/239/49 261/269/10 245/240/10 -f 237/219/8 254/1057/48 238/217/48 -f 245/242/10 262/266/47 246/243/47 -f 238/222/48 255/1056/4 239/220/4 -f 246/245/47 263/263/6 247/246/6 -f 239/225/4 256/1055/46 240/223/46 -f 247/248/6 264/260/44 248/249/44 -f 240/227/46 257/1054/1 241/228/1 -f 234/206/3 249/1052/45 233/207/45 -f 248/251/44 250/257/3 234/252/3 -f 270/1534/44 285/1535/3 269/1536/3 -f 278/1537/46 293/1538/1 277/1539/1 -f 271/1540/6 286/1541/44 270/1534/44 -f 279/1542/4 294/1543/46 278/1537/46 -f 271/1540/6 288/1544/47 287/1545/6 -f 280/1546/48 295/1547/4 279/1542/4 -f 273/1548/10 288/1544/47 272/1549/47 -f 266/1550/50 282/1551/8 265/1552/8 -f 265/1552/8 296/1553/48 280/1546/48 -f 274/1554/49 289/1555/10 273/1556/10 -f 267/1557/2 281/1558/50 266/1550/50 -f 275/1559/7 290/1560/49 274/1554/49 -f 268/1561/45 283/1562/2 267/1557/2 -f 276/1563/51 291/1564/7 275/1559/7 -f 269/1536/3 284/1565/45 268/1561/45 -f 277/1539/1 292/1566/51 276/1563/51 -f 334/1567/44 349/1568/3 333/1569/3 -f 342/1570/46 357/1571/1 341/1572/1 -f 335/1573/6 350/1574/44 334/1567/44 -f 343/1575/4 358/1576/46 342/1570/46 -f 335/1573/6 352/1577/47 351/1578/6 -f 344/1579/48 359/1580/4 343/1575/4 -f 337/1581/10 352/1577/47 336/1582/47 -f 330/1583/50 346/1584/8 329/1585/8 -f 329/1585/8 360/1586/48 344/1579/48 -f 338/1587/49 353/1588/10 337/1589/10 -f 331/1590/2 345/1591/50 330/1583/50 -f 339/1592/7 354/1593/49 338/1587/49 -f 332/1594/45 347/1595/2 331/1590/2 -f 340/1596/51 355/1597/7 339/1592/7 -f 333/1569/3 348/1598/45 332/1594/45 -f 341/1572/1 356/1599/51 340/1596/51 -f 366/141/51 383/361/7 382/363/51 -f 368/145/49 383/361/7 367/143/7 -f 369/147/10 384/359/49 368/145/49 -f 370/115/47 385/356/10 369/997/10 -f 371/119/6 386/354/47 370/115/47 -f 372/121/44 387/352/6 371/119/6 -f 373/123/3 388/350/44 372/121/44 -f 374/125/45 389/348/3 373/123/3 -f 374/125/45 391/344/2 390/346/45 -f 362/133/48 378/340/8 361/131/8 -f 376/129/50 391/344/2 375/127/2 -f 362/133/48 379/338/4 377/337/48 -f 361/131/8 392/342/50 376/129/50 -f 364/137/46 379/338/4 363/135/4 -f 365/139/1 380/367/46 364/137/46 -f 366/141/51 381/365/1 365/139/1 -f 395/1600/7 409/343/49 394/1601/49 -f 408/1602/47 410/1117/10 424/339/47 -f 396/1603/51 411/345/7 395/1604/7 -f 397/1605/1 412/347/51 396/1606/51 -f 398/1607/46 413/349/1 397/1608/1 -f 399/1609/4 414/1123/46 398/1610/46 -f 400/1611/48 415/1124/4 399/1612/4 -f 401/1613/8 416/1125/48 400/1614/48 -f 402/1615/50 417/1126/8 401/1616/8 -f 403/1617/2 418/1127/50 402/1618/50 -f 404/1619/45 419/1128/2 403/1620/2 -f 405/1621/3 420/364/45 404/1622/45 -f 406/1623/44 421/366/3 405/1624/3 -f 406/1625/44 423/1131/6 422/368/44 -f 394/1626/49 410/341/10 393/1627/10 -f 407/1628/6 424/1116/47 423/336/6 -f 118/971/52 428/1629/1 120/20/52 -f 119/970/53 425/1630/3 117/18/53 -f 426/1631/1 432/1632/54 428/1629/1 -f 427/1633/3 429/1634/55 425/1630/3 -f 431/1635/55 430/1636/54 429/1637/55 -f 496/1638/56 497/1639/57 495/1640/58 -f 493/1641/59 499/1642/60 494/1643/61 -f 502/1644/62 503/451/63 504/1179/64 -f 496/1638/56 504/1179/64 500/1645/65 -f 499/1642/60 501/1646/66 494/1643/61 -f 505/1647/67 508/1648/68 506/1649/69 -f 498/1650/70 506/1649/69 508/1648/68 -f 495/1640/58 507/1651/71 505/1652/67 -f 603/570/72 596/1653/73 595/1654/72 -f 601/582/74 594/1655/75 593/1656/74 -f 599/576/76 592/1657/77 591/1658/76 -f 597/572/78 590/1659/79 589/1660/78 -f 604/569/73 589/1660/78 596/1653/73 -f 602/581/75 595/1654/72 594/1655/75 -f 600/577/77 593/1661/74 592/1657/77 -f 598/574/79 591/1658/76 590/1659/79 -f 607/575/76 616/1662/77 608/578/77 -f 605/571/78 614/1663/79 606/573/79 -f 612/1213/73 613/1664/78 605/571/78 -f 610/1215/75 619/1665/72 611/568/72 -f 608/578/77 617/1666/74 609/1214/74 -f 606/573/79 615/1667/76 607/575/76 -f 611/568/72 620/1668/73 612/1213/73 -f 609/580/74 618/1669/75 610/1215/75 -f 635/591/80 628/1670/81 627/1671/80 -f 633/603/82 626/1672/83 625/1673/82 -f 631/597/84 624/1674/85 623/1675/84 -f 629/593/86 622/1676/87 621/1677/86 -f 636/590/81 621/1677/86 628/1670/81 -f 634/602/83 627/1671/80 626/1672/83 -f 632/598/85 625/1678/82 624/1674/85 -f 630/595/87 623/1675/84 622/1676/87 -f 639/596/84 648/1679/85 640/599/85 -f 637/592/86 646/1680/87 638/594/87 -f 644/1226/81 645/1681/86 637/592/86 -f 642/604/83 651/1682/80 643/589/80 -f 640/599/85 649/1683/82 641/1227/82 -f 638/594/87 647/1684/84 639/596/84 -f 643/589/80 652/1685/81 644/1226/81 -f 641/601/82 650/1686/83 642/604/83 -f 667/613/88 660/1687/89 659/1688/88 -f 665/625/90 658/1689/91 657/1690/90 -f 663/619/92 656/1691/93 655/1692/92 -f 661/615/94 654/1693/95 653/1694/94 -f 668/612/89 653/1694/94 660/1687/89 -f 666/624/91 659/1688/88 658/1689/91 -f 664/620/93 657/1695/90 656/1691/93 -f 662/617/95 655/1692/92 654/1693/95 -f 671/618/92 680/1696/93 672/621/93 -f 669/614/94 678/1697/95 670/616/95 -f 676/1238/89 677/1698/94 669/614/94 -f 674/626/91 683/1699/88 675/611/88 -f 672/621/93 681/1700/90 673/1239/90 -f 670/616/95 679/1701/92 671/618/92 -f 675/611/88 684/1702/89 676/1238/89 -f 673/623/90 682/1703/91 674/626/91 -f 699/635/96 692/1704/97 691/1705/96 -f 697/645/98 690/1706/99 689/1707/98 -f 695/641/100 688/1708/101 687/1709/100 -f 693/637/102 686/1710/103 685/1711/102 -f 700/634/97 685/1711/102 692/1704/97 -f 698/647/99 691/1705/96 690/1706/99 -f 696/642/101 689/1712/98 688/1708/101 -f 694/639/103 687/1709/100 686/1710/103 -f 703/640/100 712/1713/101 704/643/101 -f 701/636/102 710/1714/103 702/638/103 -f 708/1250/97 709/1715/102 701/636/102 -f 706/646/99 715/1716/96 707/633/96 -f 704/643/101 713/1717/98 705/1251/98 -f 702/638/103 711/1718/100 703/640/100 -f 707/633/96 716/1719/97 708/1250/97 -f 705/1252/98 714/1720/99 706/646/99 -f 731/656/10 724/1721/7 723/1722/10 -f 729/666/3 722/1723/6 721/1724/3 -f 727/662/8 720/1725/2 719/1726/8 -f 725/658/1 718/1727/4 717/1728/1 -f 732/655/7 717/1728/1 724/1721/7 -f 730/668/6 723/1722/10 722/1723/6 -f 728/663/2 721/1729/3 720/1725/2 -f 726/660/4 719/1726/8 718/1727/4 -f 735/661/8 744/1730/2 736/664/2 -f 733/657/1 742/1731/4 734/659/4 -f 740/1263/7 741/1732/1 733/657/1 -f 738/667/6 747/1733/10 739/654/10 -f 736/664/2 745/1734/3 737/1264/3 -f 734/659/4 743/1735/8 735/661/8 -f 739/654/10 748/1736/7 740/1263/7 -f 737/1265/3 746/1737/6 738/667/6 -f 763/677/74 756/1738/75 755/1739/74 -f 761/689/76 754/1740/77 753/1741/76 -f 759/683/78 752/1742/79 751/1743/78 -f 757/679/72 750/1744/73 749/1745/72 -f 764/676/75 749/1745/72 756/1738/75 -f 762/688/77 755/1739/74 754/1740/77 -f 760/684/79 753/1746/76 752/1742/79 -f 758/681/73 751/1743/78 750/1744/73 -f 767/682/78 776/1747/79 768/685/79 -f 765/678/72 774/1748/73 766/680/73 -f 772/1276/75 773/1749/72 765/678/72 -f 770/1278/77 779/1750/74 771/675/74 -f 768/685/79 777/1751/76 769/1277/76 -f 766/680/73 775/1752/78 767/682/78 -f 771/675/74 780/1753/75 772/1276/75 -f 769/687/76 778/1754/77 770/1278/77 -f 795/698/82 788/1755/83 787/1756/82 -f 793/708/84 786/1757/85 785/1758/84 -f 791/704/86 784/1759/87 783/1760/86 -f 789/700/80 782/1761/81 781/1762/80 -f 796/697/83 781/1762/80 788/1755/83 -f 794/710/85 787/1756/82 786/1757/85 -f 792/705/87 785/1763/84 784/1759/87 -f 790/702/81 783/1760/86 782/1761/81 -f 799/703/86 808/1764/87 800/706/87 -f 797/699/80 806/1765/81 798/701/81 -f 804/1289/83 805/1766/80 797/699/80 -f 802/709/85 811/1767/82 803/696/82 -f 800/706/87 809/1768/84 801/1290/84 -f 798/701/81 807/1769/86 799/703/86 -f 803/696/82 812/1770/83 804/1289/83 -f 801/1291/84 810/1771/85 802/709/85 -f 827/719/90 820/1772/91 819/1773/90 -f 825/731/92 818/1774/93 817/1775/92 -f 823/725/94 816/1776/95 815/1777/94 -f 821/721/88 814/1778/89 813/1779/88 -f 828/718/91 813/1779/88 820/1772/91 -f 826/730/93 819/1773/90 818/1774/93 -f 824/726/95 817/1780/92 816/1776/95 -f 822/723/89 815/1777/94 814/1778/89 -f 831/724/94 840/1781/95 832/727/95 -f 829/720/88 838/1782/89 830/722/89 -f 836/1302/91 837/1783/88 829/720/88 -f 834/732/93 843/1784/90 835/717/90 -f 832/727/95 841/1785/92 833/1303/92 -f 830/722/89 839/1786/94 831/724/94 -f 835/717/90 844/1787/91 836/1302/91 -f 833/729/92 842/1788/93 834/732/93 -f 859/741/98 852/1789/99 851/1790/98 -f 857/753/100 850/1791/101 849/1792/100 -f 855/747/102 848/1793/103 847/1794/102 -f 853/743/96 846/1795/97 845/1796/96 -f 860/740/99 845/1796/96 852/1789/99 -f 858/752/101 851/1790/98 850/1791/101 -f 856/748/103 849/1797/100 848/1793/103 -f 854/745/97 847/1794/102 846/1795/97 -f 863/746/102 872/1798/103 864/749/103 -f 861/742/96 870/1799/97 862/744/97 -f 868/1314/99 869/1800/96 861/742/96 -f 866/1316/101 875/1801/98 867/739/98 -f 864/749/103 873/1802/100 865/1315/100 -f 862/744/97 871/1803/102 863/746/102 -f 867/739/98 876/1804/99 868/1314/99 -f 865/751/100 874/1805/101 866/1316/101 -f 891/762/3 884/1806/6 883/1807/3 -f 889/772/8 882/1808/2 881/1809/8 -f 887/768/1 880/1810/4 879/1811/1 -f 885/764/10 878/1812/7 877/1813/10 -f 892/761/6 877/1813/10 884/1806/6 -f 890/774/2 883/1807/3 882/1808/2 -f 888/769/4 881/1814/8 880/1810/4 -f 886/766/7 879/1811/1 878/1812/7 -f 895/767/1 904/1815/4 896/770/4 -f 893/763/10 902/1816/7 894/765/7 -f 900/1327/6 901/1817/10 893/763/10 -f 898/773/2 907/1818/3 899/760/3 -f 896/770/4 905/1819/8 897/1328/8 -f 894/765/7 903/1820/1 895/767/1 -f 899/760/3 908/1821/6 900/1327/6 -f 897/1329/8 906/1822/2 898/773/2 -f 923/783/76 916/1823/77 915/1824/76 -f 921/793/78 914/1825/79 913/1826/78 -f 919/789/72 912/1827/73 911/1828/72 -f 917/785/74 910/1829/75 909/1830/74 -f 924/782/77 909/1830/74 916/1823/77 -f 922/795/79 915/1824/76 914/1825/79 -f 920/790/73 913/1831/78 912/1827/73 -f 918/787/75 911/1828/72 910/1829/75 -f 927/788/72 936/1832/73 928/791/73 -f 925/784/74 934/1833/75 926/786/75 -f 932/1340/77 933/1834/74 925/784/74 -f 930/794/79 939/1835/76 931/781/76 -f 928/791/73 937/1836/78 929/1341/78 -f 926/786/75 935/1837/72 927/788/72 -f 931/781/76 940/1838/77 932/1340/77 -f 929/1342/78 938/1839/79 930/794/79 -f 955/804/84 948/1840/85 947/1841/84 -f 953/814/86 946/1842/87 945/1843/86 -f 951/810/80 944/1844/81 943/1845/80 -f 949/806/82 942/1846/83 941/1847/82 -f 956/803/85 941/1847/82 948/1840/85 -f 954/816/87 947/1841/84 946/1842/87 -f 952/811/81 945/1848/86 944/1844/81 -f 950/808/83 943/1845/80 942/1846/83 -f 959/809/80 968/1849/81 960/812/81 -f 957/805/82 966/1850/83 958/807/83 -f 964/1353/85 965/1851/82 957/805/82 -f 962/815/87 971/1852/84 963/802/84 -f 960/812/81 969/1853/86 961/1354/86 -f 958/807/83 967/1854/80 959/809/80 -f 963/802/84 972/1855/85 964/1353/85 -f 961/1355/86 970/1856/87 962/815/87 -f 987/825/92 980/1857/93 979/1858/92 -f 985/837/94 978/1859/95 977/1860/94 -f 983/831/88 976/1861/89 975/1862/88 -f 981/827/90 974/1863/91 973/1864/90 -f 988/824/93 973/1864/90 980/1857/93 -f 986/836/95 979/1858/92 978/1859/95 -f 984/832/89 977/1865/94 976/1861/89 -f 982/829/91 975/1862/88 974/1863/91 -f 991/830/88 1000/1866/89 992/833/89 -f 989/826/90 998/1867/91 990/828/91 -f 996/1366/93 997/1868/90 989/826/90 -f 994/838/95 1003/1869/92 995/823/92 -f 992/833/89 1001/1870/94 993/1367/94 -f 990/828/91 999/1871/88 991/830/88 -f 995/823/92 1004/1872/93 996/1366/93 -f 993/835/94 1002/1873/95 994/838/95 -f 1019/847/100 1012/1874/101 1011/1875/100 -f 1017/859/102 1010/1876/103 1009/1877/102 -f 1015/853/96 1008/1878/97 1007/1879/96 -f 1013/849/98 1006/1880/99 1005/1881/98 -f 1020/846/101 1005/1881/98 1012/1874/101 -f 1018/858/103 1011/1875/100 1010/1876/103 -f 1016/854/97 1009/1882/102 1008/1878/97 -f 1014/851/99 1007/1879/96 1006/1880/99 -f 1023/852/96 1032/1883/97 1024/855/97 -f 1021/848/98 1030/1884/99 1022/850/99 -f 1028/1378/101 1029/1885/98 1021/848/98 -f 1026/1380/103 1035/1886/100 1027/845/100 -f 1024/855/97 1033/1887/102 1025/1379/102 -f 1022/850/99 1031/1888/96 1023/852/96 -f 1027/845/100 1036/1889/101 1028/1378/101 -f 1025/857/102 1034/1890/103 1026/1380/103 -f 1051/868/8 1044/1891/2 1043/1892/8 -f 1049/878/1 1042/1893/4 1041/1894/1 -f 1047/874/10 1040/1895/7 1039/1896/10 -f 1045/870/3 1038/1897/6 1037/1898/3 -f 1052/867/2 1037/1898/3 1044/1891/2 -f 1050/880/4 1043/1892/8 1042/1893/4 -f 1048/875/7 1041/1899/1 1040/1895/7 -f 1046/872/6 1039/1896/10 1038/1897/6 -f 1055/873/10 1064/1900/7 1056/876/7 -f 1053/869/3 1062/1901/6 1054/871/6 -f 1060/1391/2 1061/1902/3 1053/869/3 -f 1058/879/4 1067/1903/8 1059/866/8 -f 1056/876/7 1065/1904/1 1057/1392/1 -f 1054/871/6 1063/1905/10 1055/873/10 -f 1059/866/8 1068/1906/2 1060/1391/2 -f 1057/1393/1 1066/1907/4 1058/879/4 -f 1083/889/78 1076/1908/79 1075/1909/78 -f 1081/899/72 1074/1910/73 1073/1911/72 -f 1079/895/74 1072/1912/75 1071/1913/74 -f 1077/891/76 1070/1914/77 1069/1915/76 -f 1084/888/79 1069/1915/76 1076/1908/79 -f 1082/901/73 1075/1909/78 1074/1910/73 -f 1080/896/75 1073/1916/72 1072/1912/75 -f 1078/893/77 1071/1913/74 1070/1914/77 -f 1087/894/74 1096/1917/75 1088/897/75 -f 1085/890/76 1094/1918/77 1086/892/77 -f 1092/1404/79 1093/1919/76 1085/890/76 -f 1090/900/73 1099/1920/78 1091/887/78 -f 1088/897/75 1097/1921/72 1089/1405/72 -f 1086/892/77 1095/1922/74 1087/894/74 -f 1091/887/78 1100/1923/79 1092/1404/79 -f 1089/1406/72 1098/1924/73 1090/900/73 -f 1115/910/86 1108/1925/87 1107/1926/86 -f 1113/920/80 1106/1927/81 1105/1928/80 -f 1111/916/82 1104/1929/83 1103/1930/82 -f 1109/912/84 1102/1931/85 1101/1932/84 -f 1116/909/87 1101/1932/84 1108/1925/87 -f 1114/922/81 1107/1926/86 1106/1927/81 -f 1112/917/83 1105/1933/80 1104/1929/83 -f 1110/914/85 1103/1930/82 1102/1931/85 -f 1119/915/82 1128/1934/83 1120/918/83 -f 1117/911/84 1126/1935/85 1118/913/85 -f 1124/1417/87 1125/1936/84 1117/911/84 -f 1122/921/81 1131/1937/86 1123/908/86 -f 1120/918/83 1129/1938/80 1121/1418/80 -f 1118/913/85 1127/1939/82 1119/915/82 -f 1123/908/86 1132/1940/87 1124/1417/87 -f 1121/1419/80 1130/1941/81 1122/921/81 -f 1147/931/94 1140/1942/95 1139/1943/94 -f 1145/943/88 1138/1944/89 1137/1945/88 -f 1143/937/90 1136/1946/91 1135/1947/90 -f 1141/933/92 1134/1948/93 1133/1949/92 -f 1148/930/95 1133/1949/92 1140/1942/95 -f 1146/942/89 1139/1943/94 1138/1944/89 -f 1144/938/91 1137/1950/88 1136/1946/91 -f 1142/935/93 1135/1947/90 1134/1948/93 -f 1151/936/90 1160/1951/91 1152/939/91 -f 1149/932/92 1158/1952/93 1150/934/93 -f 1156/1430/95 1157/1953/92 1149/932/92 -f 1154/944/89 1163/1954/94 1155/929/94 -f 1152/939/91 1161/1955/88 1153/1431/88 -f 1150/934/93 1159/1956/90 1151/936/90 -f 1155/929/94 1164/1957/95 1156/1430/95 -f 1153/941/88 1162/1958/89 1154/944/89 -f 1179/953/102 1172/1959/103 1171/1960/102 -f 1177/965/96 1170/1961/97 1169/1962/96 -f 1175/959/98 1168/1963/99 1167/1964/98 -f 1173/955/100 1166/1965/101 1165/1966/100 -f 1180/952/103 1165/1966/100 1172/1959/103 -f 1178/964/97 1171/1960/102 1170/1961/97 -f 1176/960/99 1169/1967/96 1168/1963/99 -f 1174/957/101 1167/1964/98 1166/1965/101 -f 1183/958/98 1192/1968/99 1184/961/99 -f 1181/1442/100 1190/1969/101 1182/956/101 -f 1188/954/103 1189/1970/100 1181/1442/100 -f 1186/1444/97 1195/1971/102 1187/951/102 -f 1184/961/99 1193/1972/96 1185/1443/96 -f 1182/956/101 1191/1973/98 1183/958/98 -f 1187/951/102 1196/1974/103 1188/954/103 -f 1185/963/96 1194/1975/97 1186/1444/97 -f 36/32/1 37/39/36 25/1450/36 -f 43/33/37 44/43/38 32/1452/38 -f 33/51/8 34/22/39 22/1454/39 -f 28/1456/40 40/36/40 41/25/41 -f 37/39/36 38/47/42 26/1458/42 -f 44/43/38 33/51/8 21/1455/8 -f 34/22/39 35/24/43 23/1459/43 -f 41/25/41 42/27/3 30/1460/3 -f 26/1458/42 38/47/42 39/28/10 -f 35/24/43 36/32/1 24/1451/1 -f 42/27/3 43/33/37 31/1453/37 -f 39/975/10 40/36/40 28/1456/40 -f 56/978/42 68/1976/42 57/1463/10 -f 46/972/40 58/1977/40 59/1464/41 -f 53/973/43 65/1978/43 66/1465/1 -f 50/29/38 62/1979/38 63/1466/8 -f 47/974/41 59/1980/41 60/1467/3 -f 54/34/1 66/1981/1 67/1468/36 -f 51/37/8 63/1982/8 64/1469/39 -f 48/40/3 60/1983/3 61/1470/37 -f 55/976/36 67/1984/36 68/1471/42 -f 45/44/10 57/1985/10 58/1472/40 -f 52/977/39 64/1986/39 65/1473/43 -f 49/48/37 61/1987/37 62/1474/38 -f 74/1475/42 86/1488/42 85/1476/36 -f 69/1478/8 81/1498/8 92/1479/38 -f 71/1481/43 83/1490/43 82/1482/39 -f 78/1484/3 90/1492/3 89/1485/41 -f 75/1487/10 87/1988/10 86/1488/42 -f 72/1489/1 84/1496/1 83/1490/43 -f 79/1491/37 91/1497/37 90/1492/3 -f 76/1493/40 88/1499/40 87/1494/10 -f 73/1477/36 85/1476/36 84/1496/1 -f 79/1491/37 80/1480/38 92/1479/38 -f 70/1483/39 82/1482/39 81/1498/8 -f 77/1486/41 89/1485/41 88/1499/40 -f 137/1008/44 121/98/44 135/991/3 -f 151/140/3 135/101/3 136/992/45 -f 145/122/46 129/74/46 128/983/1 -f 138/1007/6 122/95/6 121/990/44 -f 167/153/1 168/152/4 160/1500/4 -f 165/165/10 166/164/7 158/1502/7 -f 163/159/3 164/160/6 156/1504/6 -f 161/155/8 162/157/2 154/1506/2 -f 168/152/4 161/155/8 153/1507/8 -f 166/164/7 167/153/1 159/1501/1 -f 164/160/6 165/162/10 157/1508/10 -f 162/157/2 163/159/3 155/1505/3 -f 146/999/4 130/71/4 129/982/46 -f 139/1006/47 123/92/47 122/989/6 -f 147/118/48 131/981/48 130/67/4 -f 140/1005/10 124/89/10 123/988/47 -f 148/116/8 132/114/8 131/113/48 -f 141/1004/49 125/86/49 124/987/10 -f 149/146/50 133/111/50 132/110/8 -f 142/1003/7 126/83/7 125/986/49 -f 150/144/2 134/108/2 133/107/50 -f 143/1002/51 127/80/51 126/985/7 -f 152/142/45 136/105/45 134/104/2 -f 144/1001/1 128/77/1 127/984/51 -f 171/158/3 179/1514/3 180/1509/6 -f 169/154/8 177/1511/8 178/1510/2 -f 176/1018/4 184/1515/4 177/1511/8 -f 174/1020/7 182/1516/7 183/1512/1 -f 172/161/6 180/1509/6 181/1513/10 -f 170/156/2 178/1510/2 179/1514/3 -f 175/151/1 183/1512/1 184/1515/4 -f 173/163/10 181/1989/10 182/1516/7 -f 106/64/51 107/169/7 207/291/7 -f 187/1030/7 219/1990/7 217/1517/49 -f 185/1032/10 218/1991/10 232/1518/47 -f 108/172/49 208/289/49 207/291/7 -f 188/1029/51 220/1992/51 219/1519/7 -f 109/175/10 209/287/10 208/289/49 -f 189/1028/1 221/1993/1 220/1520/51 -f 110/178/47 210/284/47 209/286/10 -f 190/1027/46 222/1994/46 221/1521/1 -f 111/181/6 211/282/6 210/284/47 -f 191/185/4 223/1995/4 222/1522/46 -f 112/184/44 212/280/44 211/282/6 -f 192/182/48 224/1996/48 223/1523/4 -f 113/188/3 213/278/3 212/280/44 -f 193/179/8 225/1997/8 224/1524/48 -f 114/190/45 214/274/45 213/278/3 -f 194/176/50 226/1998/50 225/1525/8 -f 114/190/45 115/192/2 215/271/2 -f 195/173/2 227/1999/2 226/1526/50 -f 101/196/8 102/198/48 201/262/48 -f 116/194/50 216/268/50 215/271/2 -f 196/170/45 228/2000/45 227/1527/2 -f 102/198/48 103/200/4 203/259/4 -f 101/196/8 202/265/8 216/268/50 -f 197/65/3 229/2001/3 228/1528/45 -f 104/202/46 204/256/46 203/259/4 -f 198/1035/44 230/2002/44 229/1529/3 -f 105/204/1 205/255/1 204/256/46 -f 198/201/44 199/1034/6 231/1530/6 -f 106/64/51 206/253/51 205/255/1 -f 186/1031/49 217/2003/49 218/1532/10 -f 200/1033/47 232/2004/47 231/1533/6 -f 241/230/1 257/277/1 258/1053/51 -f 233/210/45 249/292/45 251/1060/2 -f 242/233/51 258/276/51 259/275/7 -f 235/213/2 251/290/2 252/1059/50 -f 243/236/7 259/273/7 260/272/49 -f 236/216/50 252/288/50 253/1058/8 -f 244/239/49 260/270/49 261/269/10 -f 237/219/8 253/285/8 254/1057/48 -f 245/242/10 261/267/10 262/266/47 -f 238/222/48 254/283/48 255/1056/4 -f 246/245/47 262/264/47 263/263/6 -f 239/225/4 255/281/4 256/1055/46 -f 247/248/6 263/261/6 264/260/44 -f 240/227/46 256/279/46 257/1054/1 -f 234/206/3 250/254/3 249/1052/45 -f 248/251/44 264/258/44 250/257/3 -f 270/1534/44 286/1541/44 285/1535/3 -f 278/1537/46 294/1543/46 293/1538/1 -f 271/1540/6 287/1545/6 286/1541/44 -f 279/1542/4 295/1547/4 294/1543/46 -f 271/1540/6 272/1549/47 288/1544/47 -f 280/1546/48 296/1553/48 295/1547/4 -f 273/1548/10 289/2005/10 288/1544/47 -f 266/1550/50 281/1558/50 282/1551/8 -f 265/1552/8 282/1551/8 296/1553/48 -f 274/1554/49 290/1560/49 289/1555/10 -f 267/1557/2 283/1562/2 281/1558/50 -f 275/1559/7 291/1564/7 290/1560/49 -f 268/1561/45 284/1565/45 283/1562/2 -f 276/1563/51 292/1566/51 291/1564/7 -f 269/1536/3 285/1535/3 284/1565/45 -f 277/1539/1 293/1538/1 292/1566/51 -f 334/1567/44 350/1574/44 349/1568/3 -f 342/1570/46 358/1576/46 357/1571/1 -f 335/1573/6 351/1578/6 350/1574/44 -f 343/1575/4 359/1580/4 358/1576/46 -f 335/1573/6 336/1582/47 352/1577/47 -f 344/1579/48 360/1586/48 359/1580/4 -f 337/1581/10 353/2006/10 352/1577/47 -f 330/1583/50 345/1591/50 346/1584/8 -f 329/1585/8 346/1584/8 360/1586/48 -f 338/1587/49 354/1593/49 353/1588/10 -f 331/1590/2 347/1595/2 345/1591/50 -f 339/1592/7 355/1597/7 354/1593/49 -f 332/1594/45 348/1598/45 347/1595/2 -f 340/1596/51 356/1599/51 355/1597/7 -f 333/1569/3 349/1568/3 348/1598/45 -f 341/1572/1 357/1571/1 356/1599/51 -f 366/141/51 367/143/7 383/361/7 -f 368/145/49 384/359/49 383/361/7 -f 369/147/10 385/357/10 384/359/49 -f 370/115/47 386/354/47 385/356/10 -f 371/119/6 387/352/6 386/354/47 -f 372/121/44 388/350/44 387/352/6 -f 373/123/3 389/348/3 388/350/44 -f 374/125/45 390/346/45 389/348/3 -f 374/125/45 375/127/2 391/344/2 -f 362/133/48 377/337/48 378/340/8 -f 376/129/50 392/342/50 391/344/2 -f 362/133/48 363/135/4 379/338/4 -f 361/131/8 378/340/8 392/342/50 -f 364/137/46 380/367/46 379/338/4 -f 365/139/1 381/365/1 380/367/46 -f 366/141/51 382/363/51 381/365/1 -f 395/1600/7 411/1119/7 409/343/49 -f 408/1602/47 393/2007/10 410/1117/10 -f 396/1603/51 412/1120/51 411/345/7 -f 397/1605/1 413/1121/1 412/347/51 -f 398/1607/46 414/1122/46 413/349/1 -f 399/1609/4 415/351/4 414/1123/46 -f 400/1611/48 416/353/48 415/1124/4 -f 401/1613/8 417/355/8 416/1125/48 -f 402/1615/50 418/358/50 417/1126/8 -f 403/1617/2 419/360/2 418/1127/50 -f 404/1619/45 420/362/45 419/1128/2 -f 405/1621/3 421/1129/3 420/364/45 -f 406/1623/44 422/1130/44 421/366/3 -f 406/1625/44 407/2008/6 423/1131/6 -f 394/1626/49 409/1118/49 410/341/10 -f 407/1628/6 408/2009/47 424/1116/47 -f 118/971/52 426/1631/1 428/1629/1 -f 119/970/53 427/1633/3 425/1630/3 -f 426/1631/1 430/1636/54 432/1632/54 -f 427/1633/3 431/2010/55 429/1634/55 -f 431/1635/55 432/1632/54 430/1636/54 -f 496/1638/56 500/1645/65 497/1639/57 -f 493/1641/59 498/1650/70 499/1642/60 -f 502/1644/62 501/1646/66 503/451/63 -f 496/1638/56 502/1644/62 504/1179/64 -f 499/1642/60 503/451/63 501/1646/66 -f 505/1647/67 507/2011/71 508/1648/68 -f 498/1650/70 493/1641/59 506/1649/69 -f 495/1640/58 497/1639/57 507/1651/71 -f 603/570/72 604/569/73 596/1653/73 -f 601/582/74 602/581/75 594/1655/75 -f 599/576/76 600/577/77 592/1657/77 -f 597/572/78 598/574/79 590/1659/79 -f 604/569/73 597/572/78 589/1660/78 -f 602/581/75 603/570/72 595/1654/72 -f 600/577/77 601/579/74 593/1661/74 -f 598/574/79 599/576/76 591/1658/76 -f 607/575/76 615/1667/76 616/1662/77 -f 605/571/78 613/1664/78 614/1663/79 -f 612/1213/73 620/1668/73 613/1664/78 -f 610/1215/75 618/1669/75 619/1665/72 -f 608/578/77 616/1662/77 617/1666/74 -f 606/573/79 614/1663/79 615/1667/76 -f 611/568/72 619/1665/72 620/1668/73 -f 609/580/74 617/2012/74 618/1669/75 -f 635/591/80 636/590/81 628/1670/81 -f 633/603/82 634/602/83 626/1672/83 -f 631/597/84 632/598/85 624/1674/85 -f 629/593/86 630/595/87 622/1676/87 -f 636/590/81 629/593/86 621/1677/86 -f 634/602/83 635/591/80 627/1671/80 -f 632/598/85 633/600/82 625/1678/82 -f 630/595/87 631/597/84 623/1675/84 -f 639/596/84 647/1684/84 648/1679/85 -f 637/592/86 645/1681/86 646/1680/87 -f 644/1226/81 652/1685/81 645/1681/86 -f 642/604/83 650/1686/83 651/1682/80 -f 640/599/85 648/1679/85 649/1683/82 -f 638/594/87 646/1680/87 647/1684/84 -f 643/589/80 651/1682/80 652/1685/81 -f 641/601/82 649/2013/82 650/1686/83 -f 667/613/88 668/612/89 660/1687/89 -f 665/625/90 666/624/91 658/1689/91 -f 663/619/92 664/620/93 656/1691/93 -f 661/615/94 662/617/95 654/1693/95 -f 668/612/89 661/615/94 653/1694/94 -f 666/624/91 667/613/88 659/1688/88 -f 664/620/93 665/622/90 657/1695/90 -f 662/617/95 663/619/92 655/1692/92 -f 671/618/92 679/1701/92 680/1696/93 -f 669/614/94 677/1698/94 678/1697/95 -f 676/1238/89 684/1702/89 677/1698/94 -f 674/626/91 682/1703/91 683/1699/88 -f 672/621/93 680/1696/93 681/1700/90 -f 670/616/95 678/1697/95 679/1701/92 -f 675/611/88 683/1699/88 684/1702/89 -f 673/623/90 681/2014/90 682/1703/91 -f 699/635/96 700/634/97 692/1704/97 -f 697/645/98 698/647/99 690/1706/99 -f 695/641/100 696/642/101 688/1708/101 -f 693/637/102 694/639/103 686/1710/103 -f 700/634/97 693/637/102 685/1711/102 -f 698/647/99 699/635/96 691/1705/96 -f 696/642/101 697/644/98 689/1712/98 -f 694/639/103 695/641/100 687/1709/100 -f 703/640/100 711/1718/100 712/1713/101 -f 701/636/102 709/1715/102 710/1714/103 -f 708/1250/97 716/1719/97 709/1715/102 -f 706/646/99 714/1720/99 715/1716/96 -f 704/643/101 712/1713/101 713/1717/98 -f 702/638/103 710/1714/103 711/1718/100 -f 707/633/96 715/1716/96 716/1719/97 -f 705/1252/98 713/2015/98 714/1720/99 -f 731/656/10 732/655/7 724/1721/7 -f 729/666/3 730/668/6 722/1723/6 -f 727/662/8 728/663/2 720/1725/2 -f 725/658/1 726/660/4 718/1727/4 -f 732/655/7 725/658/1 717/1728/1 -f 730/668/6 731/656/10 723/1722/10 -f 728/663/2 729/665/3 721/1729/3 -f 726/660/4 727/662/8 719/1726/8 -f 735/661/8 743/1735/8 744/1730/2 -f 733/657/1 741/1732/1 742/1731/4 -f 740/1263/7 748/1736/7 741/1732/1 -f 738/667/6 746/1737/6 747/1733/10 -f 736/664/2 744/1730/2 745/1734/3 -f 734/659/4 742/1731/4 743/1735/8 -f 739/654/10 747/1733/10 748/1736/7 -f 737/1265/3 745/2016/3 746/1737/6 -f 763/677/74 764/676/75 756/1738/75 -f 761/689/76 762/688/77 754/1740/77 -f 759/683/78 760/684/79 752/1742/79 -f 757/679/72 758/681/73 750/1744/73 -f 764/676/75 757/679/72 749/1745/72 -f 762/688/77 763/677/74 755/1739/74 -f 760/684/79 761/686/76 753/1746/76 -f 758/681/73 759/683/78 751/1743/78 -f 767/682/78 775/1752/78 776/1747/79 -f 765/678/72 773/1749/72 774/1748/73 -f 772/1276/75 780/1753/75 773/1749/72 -f 770/1278/77 778/1754/77 779/1750/74 -f 768/685/79 776/1747/79 777/1751/76 -f 766/680/73 774/1748/73 775/1752/78 -f 771/675/74 779/1750/74 780/1753/75 -f 769/687/76 777/2017/76 778/1754/77 -f 795/698/82 796/697/83 788/1755/83 -f 793/708/84 794/710/85 786/1757/85 -f 791/704/86 792/705/87 784/1759/87 -f 789/700/80 790/702/81 782/1761/81 -f 796/697/83 789/700/80 781/1762/80 -f 794/710/85 795/698/82 787/1756/82 -f 792/705/87 793/707/84 785/1763/84 -f 790/702/81 791/704/86 783/1760/86 -f 799/703/86 807/1769/86 808/1764/87 -f 797/699/80 805/1766/80 806/1765/81 -f 804/1289/83 812/1770/83 805/1766/80 -f 802/709/85 810/1771/85 811/1767/82 -f 800/706/87 808/1764/87 809/1768/84 -f 798/701/81 806/1765/81 807/1769/86 -f 803/696/82 811/1767/82 812/1770/83 -f 801/1291/84 809/2018/84 810/1771/85 -f 827/719/90 828/718/91 820/1772/91 -f 825/731/92 826/730/93 818/1774/93 -f 823/725/94 824/726/95 816/1776/95 -f 821/721/88 822/723/89 814/1778/89 -f 828/718/91 821/721/88 813/1779/88 -f 826/730/93 827/719/90 819/1773/90 -f 824/726/95 825/728/92 817/1780/92 -f 822/723/89 823/725/94 815/1777/94 -f 831/724/94 839/1786/94 840/1781/95 -f 829/720/88 837/1783/88 838/1782/89 -f 836/1302/91 844/1787/91 837/1783/88 -f 834/732/93 842/1788/93 843/1784/90 -f 832/727/95 840/1781/95 841/1785/92 -f 830/722/89 838/1782/89 839/1786/94 -f 835/717/90 843/1784/90 844/1787/91 -f 833/729/92 841/2019/92 842/1788/93 -f 859/741/98 860/740/99 852/1789/99 -f 857/753/100 858/752/101 850/1791/101 -f 855/747/102 856/748/103 848/1793/103 -f 853/743/96 854/745/97 846/1795/97 -f 860/740/99 853/743/96 845/1796/96 -f 858/752/101 859/741/98 851/1790/98 -f 856/748/103 857/750/100 849/1797/100 -f 854/745/97 855/747/102 847/1794/102 -f 863/746/102 871/1803/102 872/1798/103 -f 861/742/96 869/1800/96 870/1799/97 -f 868/1314/99 876/1804/99 869/1800/96 -f 866/1316/101 874/1805/101 875/1801/98 -f 864/749/103 872/1798/103 873/1802/100 -f 862/744/97 870/1799/97 871/1803/102 -f 867/739/98 875/1801/98 876/1804/99 -f 865/751/100 873/2020/100 874/1805/101 -f 891/762/3 892/761/6 884/1806/6 -f 889/772/8 890/774/2 882/1808/2 -f 887/768/1 888/769/4 880/1810/4 -f 885/764/10 886/766/7 878/1812/7 -f 892/761/6 885/764/10 877/1813/10 -f 890/774/2 891/762/3 883/1807/3 -f 888/769/4 889/771/8 881/1814/8 -f 886/766/7 887/768/1 879/1811/1 -f 895/767/1 903/1820/1 904/1815/4 -f 893/763/10 901/1817/10 902/1816/7 -f 900/1327/6 908/1821/6 901/1817/10 -f 898/773/2 906/1822/2 907/1818/3 -f 896/770/4 904/1815/4 905/1819/8 -f 894/765/7 902/1816/7 903/1820/1 -f 899/760/3 907/1818/3 908/1821/6 -f 897/1329/8 905/2021/8 906/1822/2 -f 923/783/76 924/782/77 916/1823/77 -f 921/793/78 922/795/79 914/1825/79 -f 919/789/72 920/790/73 912/1827/73 -f 917/785/74 918/787/75 910/1829/75 -f 924/782/77 917/785/74 909/1830/74 -f 922/795/79 923/783/76 915/1824/76 -f 920/790/73 921/792/78 913/1831/78 -f 918/787/75 919/789/72 911/1828/72 -f 927/788/72 935/1837/72 936/1832/73 -f 925/784/74 933/1834/74 934/1833/75 -f 932/1340/77 940/1838/77 933/1834/74 -f 930/794/79 938/1839/79 939/1835/76 -f 928/791/73 936/1832/73 937/1836/78 -f 926/786/75 934/1833/75 935/1837/72 -f 931/781/76 939/1835/76 940/1838/77 -f 929/1342/78 937/2022/78 938/1839/79 -f 955/804/84 956/803/85 948/1840/85 -f 953/814/86 954/816/87 946/1842/87 -f 951/810/80 952/811/81 944/1844/81 -f 949/806/82 950/808/83 942/1846/83 -f 956/803/85 949/806/82 941/1847/82 -f 954/816/87 955/804/84 947/1841/84 -f 952/811/81 953/813/86 945/1848/86 -f 950/808/83 951/810/80 943/1845/80 -f 959/809/80 967/1854/80 968/1849/81 -f 957/805/82 965/1851/82 966/1850/83 -f 964/1353/85 972/1855/85 965/1851/82 -f 962/815/87 970/1856/87 971/1852/84 -f 960/812/81 968/1849/81 969/1853/86 -f 958/807/83 966/1850/83 967/1854/80 -f 963/802/84 971/1852/84 972/1855/85 -f 961/1355/86 969/2023/86 970/1856/87 -f 987/825/92 988/824/93 980/1857/93 -f 985/837/94 986/836/95 978/1859/95 -f 983/831/88 984/832/89 976/1861/89 -f 981/827/90 982/829/91 974/1863/91 -f 988/824/93 981/827/90 973/1864/90 -f 986/836/95 987/825/92 979/1858/92 -f 984/832/89 985/834/94 977/1865/94 -f 982/829/91 983/831/88 975/1862/88 -f 991/830/88 999/1871/88 1000/1866/89 -f 989/826/90 997/1868/90 998/1867/91 -f 996/1366/93 1004/1872/93 997/1868/90 -f 994/838/95 1002/1873/95 1003/1869/92 -f 992/833/89 1000/1866/89 1001/1870/94 -f 990/828/91 998/1867/91 999/1871/88 -f 995/823/92 1003/1869/92 1004/1872/93 -f 993/835/94 1001/2024/94 1002/1873/95 -f 1019/847/100 1020/846/101 1012/1874/101 -f 1017/859/102 1018/858/103 1010/1876/103 -f 1015/853/96 1016/854/97 1008/1878/97 -f 1013/849/98 1014/851/99 1006/1880/99 -f 1020/846/101 1013/849/98 1005/1881/98 -f 1018/858/103 1019/847/100 1011/1875/100 -f 1016/854/97 1017/856/102 1009/1882/102 -f 1014/851/99 1015/853/96 1007/1879/96 -f 1023/852/96 1031/1888/96 1032/1883/97 -f 1021/848/98 1029/1885/98 1030/1884/99 -f 1028/1378/101 1036/1889/101 1029/1885/98 -f 1026/1380/103 1034/1890/103 1035/1886/100 -f 1024/855/97 1032/1883/97 1033/1887/102 -f 1022/850/99 1030/1884/99 1031/1888/96 -f 1027/845/100 1035/1886/100 1036/1889/101 -f 1025/857/102 1033/2025/102 1034/1890/103 -f 1051/868/8 1052/867/2 1044/1891/2 -f 1049/878/1 1050/880/4 1042/1893/4 -f 1047/874/10 1048/875/7 1040/1895/7 -f 1045/870/3 1046/872/6 1038/1897/6 -f 1052/867/2 1045/870/3 1037/1898/3 -f 1050/880/4 1051/868/8 1043/1892/8 -f 1048/875/7 1049/877/1 1041/1899/1 -f 1046/872/6 1047/874/10 1039/1896/10 -f 1055/873/10 1063/1905/10 1064/1900/7 -f 1053/869/3 1061/1902/3 1062/1901/6 -f 1060/1391/2 1068/1906/2 1061/1902/3 -f 1058/879/4 1066/1907/4 1067/1903/8 -f 1056/876/7 1064/1900/7 1065/1904/1 -f 1054/871/6 1062/1901/6 1063/1905/10 -f 1059/866/8 1067/1903/8 1068/1906/2 -f 1057/1393/1 1065/2026/1 1066/1907/4 -f 1083/889/78 1084/888/79 1076/1908/79 -f 1081/899/72 1082/901/73 1074/1910/73 -f 1079/895/74 1080/896/75 1072/1912/75 -f 1077/891/76 1078/893/77 1070/1914/77 -f 1084/888/79 1077/891/76 1069/1915/76 -f 1082/901/73 1083/889/78 1075/1909/78 -f 1080/896/75 1081/898/72 1073/1916/72 -f 1078/893/77 1079/895/74 1071/1913/74 -f 1087/894/74 1095/1922/74 1096/1917/75 -f 1085/890/76 1093/1919/76 1094/1918/77 -f 1092/1404/79 1100/1923/79 1093/1919/76 -f 1090/900/73 1098/1924/73 1099/1920/78 -f 1088/897/75 1096/1917/75 1097/1921/72 -f 1086/892/77 1094/1918/77 1095/1922/74 -f 1091/887/78 1099/1920/78 1100/1923/79 -f 1089/1406/72 1097/2027/72 1098/1924/73 -f 1115/910/86 1116/909/87 1108/1925/87 -f 1113/920/80 1114/922/81 1106/1927/81 -f 1111/916/82 1112/917/83 1104/1929/83 -f 1109/912/84 1110/914/85 1102/1931/85 -f 1116/909/87 1109/912/84 1101/1932/84 -f 1114/922/81 1115/910/86 1107/1926/86 -f 1112/917/83 1113/919/80 1105/1933/80 -f 1110/914/85 1111/916/82 1103/1930/82 -f 1119/915/82 1127/1939/82 1128/1934/83 -f 1117/911/84 1125/1936/84 1126/1935/85 -f 1124/1417/87 1132/1940/87 1125/1936/84 -f 1122/921/81 1130/1941/81 1131/1937/86 -f 1120/918/83 1128/1934/83 1129/1938/80 -f 1118/913/85 1126/1935/85 1127/1939/82 -f 1123/908/86 1131/1937/86 1132/1940/87 -f 1121/1419/80 1129/2028/80 1130/1941/81 -f 1147/931/94 1148/930/95 1140/1942/95 -f 1145/943/88 1146/942/89 1138/1944/89 -f 1143/937/90 1144/938/91 1136/1946/91 -f 1141/933/92 1142/935/93 1134/1948/93 -f 1148/930/95 1141/933/92 1133/1949/92 -f 1146/942/89 1147/931/94 1139/1943/94 -f 1144/938/91 1145/940/88 1137/1950/88 -f 1142/935/93 1143/937/90 1135/1947/90 -f 1151/936/90 1159/1956/90 1160/1951/91 -f 1149/932/92 1157/1953/92 1158/1952/93 -f 1156/1430/95 1164/1957/95 1157/1953/92 -f 1154/944/89 1162/1958/89 1163/1954/94 -f 1152/939/91 1160/1951/91 1161/1955/88 -f 1150/934/93 1158/1952/93 1159/1956/90 -f 1155/929/94 1163/1954/94 1164/1957/95 -f 1153/941/88 1161/2029/88 1162/1958/89 -f 1179/953/102 1180/952/103 1172/1959/103 -f 1177/965/96 1178/964/97 1170/1961/97 -f 1175/959/98 1176/960/99 1168/1963/99 -f 1173/955/100 1174/957/101 1166/1965/101 -f 1180/952/103 1173/955/100 1165/1966/100 -f 1178/964/97 1179/953/102 1171/1960/102 -f 1176/960/99 1177/962/96 1169/1967/96 -f 1174/957/101 1175/959/98 1167/1964/98 -f 1183/958/98 1191/1973/98 1192/1968/99 -f 1181/1442/100 1189/1970/100 1190/1969/101 -f 1188/954/103 1196/1974/103 1189/1970/100 -f 1186/1444/97 1194/1975/97 1195/1971/102 -f 1184/961/99 1192/1968/99 1193/1972/96 -f 1182/956/101 1190/1969/101 1191/1973/98 -f 1187/951/102 1195/1971/102 1196/1974/103 -f 1185/963/96 1193/2030/96 1194/1975/97 +f 964/1626/77 953/1942/96 952/1943/77 +f 971/1627/97 960/1944/98 959/1945/97 +f 961/1645/84 950/1946/99 949/1947/84 +f 956/1948/100 969/1619/101 957/1949/101 +f 965/1633/96 954/1950/102 953/1942/96 +f 972/1637/98 949/1947/84 960/1944/98 +f 962/1616/99 951/1951/103 950/1946/99 +f 969/1619/101 958/1952/79 957/1949/101 +f 954/1950/102 967/1622/86 955/1953/86 +f 963/1618/103 952/1943/77 951/1951/103 +f 970/1621/79 959/1945/97 958/1952/79 +f 967/1860/86 956/1948/100 955/1954/86 +f 984/1863/102 985/1955/86 973/1644/86 +f 974/1857/100 987/1956/101 975/1617/101 +f 981/1858/103 994/1957/77 982/1620/77 +f 978/1623/98 991/1958/84 979/1624/84 +f 975/1859/101 988/1959/79 976/1625/79 +f 982/1628/77 995/1960/96 983/1629/96 +f 979/1631/84 992/1961/99 980/1632/99 +f 976/1634/79 989/1962/97 977/1635/97 +f 983/1861/96 996/1963/102 984/1636/102 +f 973/1638/86 986/1964/100 974/1639/100 +f 980/1862/99 993/1965/103 981/1640/103 +f 977/1642/97 990/1966/98 978/1643/98 +f 1002/1967/102 1013/1968/96 1001/1969/96 +f 997/1970/84 1020/1971/98 1008/1972/98 +f 999/1973/103 1010/1974/99 998/1975/99 +f 1006/1976/79 1017/1977/101 1005/1978/101 +f 1003/1979/86 1014/1980/102 1002/1967/102 +f 1000/1981/77 1011/1982/103 999/1973/103 +f 1007/1983/97 1018/1984/79 1006/1976/79 +f 1004/1985/100 1015/1986/86 1003/1987/86 +f 1001/1969/96 1012/1988/77 1000/1981/77 +f 1007/1983/97 1020/1971/98 1019/1989/97 +f 998/1975/99 1009/1990/84 997/1970/84 +f 1005/1978/101 1016/1991/100 1004/1985/100 +f 1030/1856/104 1036/1992/77 1032/1614/104 +f 1031/1855/105 1033/1993/79 1029/1612/105 +f 1034/1994/77 1040/1995/106 1036/1992/77 +f 1035/1996/79 1037/1997/107 1033/1993/79 +f 1039/1998/107 1038/1999/106 1037/2000/107 +f 1104/2001/108 1105/2002/109 1103/2003/110 +f 1101/2004/111 1107/2005/112 1102/2006/113 +f 1110/2007/114 1111/1740/115 1112/1913/116 +f 1104/2001/108 1112/1913/116 1108/2008/117 +f 1107/2005/112 1109/2009/118 1102/2006/113 +f 1113/2010/119 1116/2011/120 1114/2012/121 +f 1106/2013/122 1114/2012/121 1116/2011/120 +f 1103/2003/110 1115/2014/123 1113/2015/119 +f 964/1626/77 965/1633/96 953/1942/96 +f 971/1627/97 972/1637/98 960/1944/98 +f 961/1645/84 962/1616/99 950/1946/99 +f 956/1948/100 968/1630/100 969/1619/101 +f 965/1633/96 966/1641/102 954/1950/102 +f 972/1637/98 961/1645/84 949/1947/84 +f 962/1616/99 963/1618/103 951/1951/103 +f 969/1619/101 970/1621/79 958/1952/79 +f 954/1950/102 966/1641/102 967/1622/86 +f 963/1618/103 964/1626/77 952/1943/77 +f 970/1621/79 971/1627/97 959/1945/97 +f 967/1860/86 968/1630/100 956/1948/100 +f 984/1863/102 996/2016/102 985/1955/86 +f 974/1857/100 986/2017/100 987/1956/101 +f 981/1858/103 993/2018/103 994/1957/77 +f 978/1623/98 990/2019/98 991/1958/84 +f 975/1859/101 987/2020/101 988/1959/79 +f 982/1628/77 994/2021/77 995/1960/96 +f 979/1631/84 991/2022/84 992/1961/99 +f 976/1634/79 988/2023/79 989/1962/97 +f 983/1861/96 995/2024/96 996/1963/102 +f 973/1638/86 985/2025/86 986/1964/100 +f 980/1862/99 992/2026/99 993/1965/103 +f 977/1642/97 989/2027/97 990/1966/98 +f 1002/1967/102 1014/1980/102 1013/1968/96 +f 997/1970/84 1009/1990/84 1020/1971/98 +f 999/1973/103 1011/1982/103 1010/1974/99 +f 1006/1976/79 1018/1984/79 1017/1977/101 +f 1003/1979/86 1015/2028/86 1014/1980/102 +f 1000/1981/77 1012/1988/77 1011/1982/103 +f 1007/1983/97 1019/1989/97 1018/1984/79 +f 1004/1985/100 1016/1991/100 1015/1986/86 +f 1001/1969/96 1013/1968/96 1012/1988/77 +f 1007/1983/97 1008/1972/98 1020/1971/98 +f 998/1975/99 1010/1974/99 1009/1990/84 +f 1005/1978/101 1017/1977/101 1016/1991/100 +f 1030/1856/104 1034/1994/77 1036/1992/77 +f 1031/1855/105 1035/1996/79 1033/1993/79 +f 1034/1994/77 1038/1999/106 1040/1995/106 +f 1035/1996/79 1039/2029/107 1037/1997/107 +f 1039/1998/107 1040/1995/106 1038/1999/106 +f 1104/2001/108 1108/2008/117 1105/2002/109 +f 1101/2004/111 1106/2013/122 1107/2005/112 +f 1110/2007/114 1109/2009/118 1111/1740/115 +f 1104/2001/108 1110/2007/114 1112/1913/116 +f 1107/2005/112 1111/1740/115 1109/2009/118 +f 1113/2010/119 1115/2030/123 1116/2011/120 +f 1106/2013/122 1101/2004/111 1114/2012/121 +f 1103/2003/110 1105/2002/109 1115/2014/123 diff --git a/src/main/resources/assets/hbm/models/weapons/stg77.obj b/src/main/resources/assets/hbm/models/weapons/stg77.obj new file mode 100644 index 000000000..decc89649 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/stg77.obj @@ -0,0 +1,4762 @@ +# Blender v2.79 (sub 0) OBJ File: 'stg77.blend' +# www.blender.org +o Breech +v -0.156250 0.281250 -3.250000 +v -0.343750 -0.031250 -3.250000 +v -0.156250 0.281250 -4.750000 +v -0.343750 -0.031250 -4.750000 +v -0.093750 0.281250 -4.750000 +v -0.281250 -0.031250 -4.750000 +v -0.093750 0.281250 -3.250000 +v -0.281250 -0.031250 -3.250000 +vt 0.196970 0.198795 +vt 0.287879 0.228916 +vt 0.196970 0.228916 +vt 0.193182 0.198795 +vt 0.193182 0.228916 +vt 0.196970 0.198795 +vt 0.196970 0.228916 +vt 0.287879 0.198795 +vt 0.193182 0.228916 +vt 0.193182 0.198795 +vn -0.8575 0.5145 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +s off +f 4/1/1 1/2/1 3/3/1 +f 3/3/2 6/4/2 4/1/2 +f 1/5/3 8/6/3 7/7/3 +f 4/1/1 2/8/1 1/2/1 +f 3/3/2 5/9/2 6/4/2 +f 1/5/3 2/10/3 8/6/3 +o Barrel +v 0.000000 0.187500 -3.000000 +v 0.000000 0.187500 6.500000 +v 0.093750 0.162380 -3.000000 +v 0.093750 0.162380 6.500000 +v 0.162380 0.093750 -3.000000 +v 0.162380 0.093750 6.500000 +v 0.187500 0.000000 -3.000000 +v 0.187500 -0.000000 6.500000 +v 0.162380 -0.093750 -3.000000 +v 0.162380 -0.093750 6.500000 +v 0.093750 -0.162380 -3.000000 +v 0.093750 -0.162380 6.500000 +v 0.000000 -0.187500 -3.000000 +v 0.000000 -0.187500 6.500000 +v -0.093750 -0.162380 -3.000000 +v -0.093750 -0.162380 6.500000 +v -0.162380 -0.093750 -3.000000 +v -0.162380 -0.093750 6.500000 +v -0.187500 -0.000000 -3.000000 +v -0.187500 -0.000000 6.500000 +v -0.162380 0.093750 -3.000000 +v -0.162380 0.093750 6.500000 +v -0.093750 0.162380 -3.000000 +v -0.093750 0.162380 6.500000 +v 0.000000 0.250000 6.500000 +v -0.125000 0.216506 6.500000 +v -0.216506 0.125000 6.500000 +v -0.250000 -0.000000 6.500000 +v -0.216506 -0.125000 6.500000 +v -0.125000 -0.216506 6.500000 +v 0.000000 -0.250000 6.500000 +v 0.125000 -0.216507 6.500000 +v 0.216506 -0.125000 6.500000 +v 0.250000 -0.000000 6.500000 +v 0.216506 0.125000 6.500000 +v 0.125000 0.216506 6.500000 +v 0.000000 0.250000 6.625000 +v -0.125000 0.216506 6.625000 +v -0.216506 0.125000 6.625000 +v -0.250000 -0.000000 6.625000 +v -0.216506 -0.125000 6.625000 +v -0.125000 -0.216506 6.625000 +v 0.000000 -0.250000 6.625000 +v 0.125000 -0.216507 6.625000 +v 0.216506 -0.125000 6.625000 +v 0.250000 -0.000000 6.625000 +v 0.216506 0.125000 6.625000 +v 0.125000 0.216506 6.625000 +v 0.000000 0.187500 6.625000 +v 0.093750 0.162380 6.625000 +v 0.162380 0.093750 6.625000 +v 0.187500 -0.000000 6.625000 +v 0.162380 -0.093750 6.625000 +v 0.093750 -0.162380 6.625000 +v 0.000000 -0.187500 6.625000 +v -0.093750 -0.162380 6.625000 +v -0.162380 -0.093750 6.625000 +v -0.187500 -0.000000 6.625000 +v -0.162380 0.093750 6.625000 +v -0.093750 0.162380 6.625000 +v 0.000000 0.250000 6.750000 +v -0.125000 0.216506 6.750000 +v -0.216506 0.125000 6.750000 +v -0.250000 -0.000000 6.750000 +v -0.216506 -0.125000 6.750000 +v -0.125000 -0.216506 6.750000 +v 0.000000 -0.250000 6.750000 +v 0.125000 -0.216507 6.750000 +v 0.216506 -0.125000 6.750000 +v 0.250000 -0.000000 6.750000 +v 0.216506 0.125000 6.750000 +v 0.125000 0.216506 6.750000 +v 0.000000 0.250000 7.000000 +v -0.125000 0.216506 7.000000 +v -0.216506 0.125000 7.000000 +v -0.250000 -0.000000 7.000000 +v -0.216506 -0.125000 7.000000 +v -0.125000 -0.216506 7.000000 +v 0.000000 -0.250000 7.000000 +v 0.125000 -0.216507 7.000000 +v 0.216506 -0.125000 7.000000 +v 0.250000 -0.000000 7.000000 +v 0.216506 0.125000 7.000000 +v 0.125000 0.216506 7.000000 +v 0.000000 0.187500 7.125000 +v 0.093750 0.162380 7.125000 +v 0.162380 0.093750 7.125000 +v 0.187500 -0.000000 7.125000 +v 0.162380 -0.093750 7.125000 +v 0.093750 -0.162380 7.125000 +v 0.000000 -0.187500 7.125000 +v -0.093750 -0.162380 7.125000 +v -0.162380 -0.093750 7.125000 +v -0.187500 -0.000000 7.125000 +v -0.162380 0.093750 7.125000 +v -0.093750 0.162380 7.125000 +v 0.000000 0.250000 7.125000 +v -0.125000 0.216506 7.125000 +v -0.216506 0.125000 7.125000 +v -0.250000 -0.000000 7.125000 +v -0.216506 -0.125000 7.125000 +v -0.125000 -0.216506 7.125000 +v 0.000000 -0.250000 7.125000 +v 0.125000 -0.216507 7.125000 +v 0.216506 -0.125000 7.125000 +v 0.250000 -0.000000 7.125000 +v 0.216506 0.125000 7.125000 +v 0.125000 0.216506 7.125000 +v 0.000000 0.250000 7.250000 +v -0.125000 0.216506 7.250000 +v -0.216506 0.125000 7.250000 +v -0.250000 -0.000000 7.250000 +v -0.216506 -0.125000 7.250000 +v -0.125000 -0.216506 7.250000 +v 0.000000 -0.250000 7.250000 +v 0.125000 -0.216507 7.250000 +v 0.216506 -0.125000 7.250000 +v 0.250000 -0.000000 7.250000 +v 0.216506 0.125000 7.250000 +v 0.125000 0.216506 7.250000 +v 0.000000 0.187500 7.875000 +v 0.093750 0.162380 7.875000 +v 0.162380 0.093750 7.875000 +v 0.125000 0.000000 6.750000 +v 0.162380 -0.093750 7.875000 +v 0.093750 -0.162380 7.875000 +v 0.000000 -0.187500 7.875000 +v -0.093750 -0.162380 7.875000 +v -0.162380 -0.093750 7.875000 +v 0.108253 -0.062500 6.750000 +v -0.162380 0.093750 7.875000 +v -0.093750 0.162380 7.875000 +v 0.000000 0.250000 7.875000 +v -0.125000 0.216506 7.875000 +v -0.216506 0.125000 7.875000 +v 0.062500 -0.108253 6.750000 +v -0.216506 -0.125000 7.875000 +v -0.125000 -0.216506 7.875000 +v 0.000000 -0.250000 7.875000 +v 0.125000 -0.216507 7.875000 +v 0.216506 -0.125000 7.875000 +v 0.000000 -0.125000 6.750000 +v 0.216506 0.125000 7.875000 +v 0.125000 0.216506 7.875000 +v 0.000000 0.250000 8.000000 +v -0.125000 0.216506 8.000000 +v -0.216506 0.125000 8.000000 +v -0.062500 -0.108253 6.750000 +v -0.216506 -0.125000 8.000000 +v -0.125000 -0.216506 8.000000 +v 0.000000 -0.250000 8.000000 +v 0.125000 -0.216507 8.000000 +v 0.216506 -0.125000 8.000000 +v -0.108253 -0.062500 6.750000 +v 0.216506 0.125000 8.000000 +v 0.125000 0.216506 8.000000 +v 0.000000 0.125000 7.875000 +v -0.062500 0.108253 7.875000 +v -0.108253 0.062500 7.875000 +v -0.125000 0.000000 6.750000 +v -0.108253 -0.062500 7.875000 +v -0.062500 -0.108254 7.875000 +v 0.000000 -0.125000 7.875000 +v 0.062500 -0.108254 7.875000 +v 0.108253 -0.062500 7.875000 +v -0.108253 0.062500 6.750000 +v 0.108253 0.062500 7.875000 +v 0.062500 0.108253 7.875000 +v 0.000000 0.125000 7.250000 +v -0.062500 0.108253 7.250000 +v -0.108253 0.062500 7.250000 +v -0.125000 -0.000000 7.250000 +v -0.108253 -0.062500 7.250000 +v -0.062500 -0.108254 7.250000 +v 0.000000 -0.125000 7.250000 +v 0.062500 -0.108254 7.250000 +v 0.108253 -0.062500 7.250000 +v 0.125000 -0.000000 7.250000 +v 0.108253 0.062500 7.250000 +v 0.062500 0.108253 7.250000 +v 0.000000 0.187500 8.000000 +v 0.093750 0.162380 8.000000 +v 0.162380 0.093750 8.000000 +v 0.000000 0.125000 6.750000 +v 0.162380 -0.093750 8.000000 +v 0.093750 -0.162380 8.000000 +v 0.000000 -0.187500 8.000000 +v -0.093750 -0.162380 8.000000 +v -0.162380 -0.093750 8.000000 +v -0.062500 0.108253 6.750000 +v -0.162380 0.093750 8.000000 +v -0.093750 0.162380 8.000000 +v 0.108253 0.062500 6.750000 +v 0.062500 0.108253 6.750000 +v 0.000000 0.250000 2.812500 +v -0.125000 0.216506 2.812500 +v -0.216506 0.125000 2.812500 +v -0.250000 -0.000000 2.812500 +v -0.216506 -0.125000 2.812500 +v -0.125000 -0.216506 2.812500 +v 0.000000 -0.250000 2.812500 +v 0.125000 -0.216507 2.812500 +v 0.216506 -0.125000 2.812500 +v 0.250000 -0.000000 2.812500 +v 0.216506 0.125000 2.812500 +v 0.125000 0.216506 2.812500 +v 0.000000 0.250000 3.750000 +v -0.125000 0.216506 3.750000 +v -0.216506 0.125000 3.750000 +v -0.250000 -0.000000 3.750000 +v -0.216506 -0.125000 3.750000 +v -0.125000 -0.216506 3.750000 +v 0.000000 -0.250000 3.750000 +v 0.125000 -0.216507 3.750000 +v 0.216506 -0.125000 3.750000 +v 0.250000 -0.000000 3.750000 +v 0.216506 0.125000 3.750000 +v 0.125000 0.216506 3.750000 +v 0.125000 0.312500 2.750000 +v -0.125000 0.312500 2.750000 +v 0.500000 -0.187500 2.750000 +v -0.500000 -0.187500 2.750000 +v 0.500000 -0.437500 2.750000 +v -0.500000 -0.437500 2.750000 +v 0.250000 -0.687500 2.750000 +v -0.250000 -0.687500 2.750000 +v -0.125000 0.312500 2.875000 +v 0.125000 0.312500 2.875000 +v 0.500000 -0.437500 2.875000 +v 0.500000 -0.187500 2.875000 +v -0.500000 -0.187500 2.875000 +v -0.500000 -0.437500 2.875000 +v 0.250000 -0.687500 2.875000 +v -0.250000 -0.687500 2.875000 +v -0.187500 -0.125000 3.250000 +v -0.125000 -0.125000 3.250000 +v -0.187500 -0.125000 2.875000 +v -0.125000 -0.125000 2.875000 +v -0.187500 -0.687500 2.875000 +v -0.187500 -0.687500 3.125000 +v -0.125000 -0.687500 3.125000 +v -0.125000 -0.687500 2.875000 +v 0.000000 -0.750000 2.937500 +v 0.000000 -0.500000 2.937500 +v 0.088388 -0.750000 2.974112 +v 0.088388 -0.500000 2.974112 +v 0.125000 -0.750000 3.062500 +v 0.125000 -0.500000 3.062500 +v 0.088388 -0.750000 3.150888 +v 0.088388 -0.500000 3.150888 +v 0.000000 -0.750000 3.187500 +v 0.000000 -0.500000 3.187500 +v -0.088388 -0.750000 3.150888 +v -0.088388 -0.500000 3.150888 +v -0.125000 -0.750000 3.062500 +v -0.125000 -0.500000 3.062500 +v -0.088388 -0.750000 2.974112 +v -0.088388 -0.500000 2.974112 +v 0.125000 -0.125000 3.250000 +v 0.187500 -0.125000 3.250000 +v 0.125000 -0.125000 2.875000 +v 0.187500 -0.125000 2.875000 +v 0.125000 -0.687500 2.875000 +v 0.125000 -0.687500 3.125000 +v 0.187500 -0.687500 3.125000 +v 0.187500 -0.687500 2.875000 +v -0.125000 -0.437500 3.125000 +v -0.125000 -0.437500 2.875000 +v 0.125000 -0.437500 2.875000 +v 0.125000 -0.437500 3.125000 +v -0.125000 -0.187500 3.125000 +v 0.125000 -0.187500 3.125000 +v -0.125000 -0.750000 3.250000 +v 0.125000 -0.750000 3.250000 +v -0.125000 -0.750000 2.625000 +v 0.125000 -0.750000 2.625000 +v -0.125000 -1.250000 2.750000 +v -0.125000 -1.250000 3.250000 +v 0.125000 -1.250000 3.250000 +v 0.125000 -1.250000 2.750000 +v -0.125000 -1.625000 2.750000 +v -0.125000 -1.500000 3.312500 +v 0.125000 -1.500000 3.312500 +v 0.125000 -1.625000 2.750000 +v -0.125000 -2.750000 3.375000 +v 0.125000 -2.750000 3.375000 +v -0.125000 -2.750000 2.750000 +v 0.125000 -2.750000 2.750000 +v -0.125000 -2.125000 2.625000 +v -0.125000 -2.125000 3.312500 +v 0.125000 -2.125000 3.312500 +v 0.125000 -2.125000 2.625000 +v -0.125000 -2.625000 2.625000 +v -0.125000 -2.500000 3.250000 +v 0.125000 -2.500000 3.250000 +v 0.125000 -2.625000 2.625000 +v 0.250000 -0.750000 3.125000 +v 0.250000 -0.750000 2.750000 +v 0.250000 -1.250000 3.125000 +v 0.250000 -1.250000 2.875000 +v 0.250000 -1.500000 3.187500 +v 0.250000 -1.625000 2.875000 +v 0.250000 -2.750000 3.250000 +v 0.250000 -2.750000 2.875000 +v 0.250000 -2.125000 3.187500 +v 0.250000 -2.125000 2.750000 +v 0.250000 -2.500000 3.125000 +v 0.250000 -2.625000 2.750000 +v -0.250000 -0.750000 2.750000 +v -0.250000 -0.750000 3.125000 +v -0.250000 -1.250000 2.875000 +v -0.250000 -1.250000 3.125000 +v -0.250000 -1.625000 2.875000 +v -0.250000 -1.500000 3.187500 +v -0.250000 -2.750000 2.875000 +v -0.250000 -2.750000 3.250000 +v -0.250000 -2.125000 2.750000 +v -0.250000 -2.125000 3.187500 +v -0.250000 -2.625000 2.750000 +v -0.250000 -2.500000 3.125000 +v 0.000000 0.125000 -3.000000 +v -0.062500 0.108253 -3.000000 +v -0.108253 0.062500 -3.000000 +v -0.125000 -0.000000 -3.000000 +v -0.108253 -0.062500 -3.000000 +v -0.062500 -0.108253 -3.000000 +v 0.000000 -0.125000 -3.000000 +v 0.062500 -0.108253 -3.000000 +v 0.108253 -0.062500 -3.000000 +v 0.125000 -0.000000 -3.000000 +v 0.108253 0.062500 -3.000000 +v 0.062500 0.108253 -3.000000 +v 0.000000 0.125000 -2.000000 +v -0.062500 0.108253 -2.000000 +v -0.108253 0.062500 -2.000000 +v -0.125000 -0.000000 -2.000000 +v -0.108253 -0.062500 -2.000000 +v -0.062500 -0.108253 -2.000000 +v 0.000000 -0.125000 -2.000000 +v 0.062500 -0.108253 -2.000000 +v 0.108253 -0.062500 -2.000000 +v 0.125000 -0.000000 -2.000000 +v 0.108253 0.062500 -2.000000 +v 0.062500 0.108253 -2.000000 +v -0.250000 -0.062500 3.875000 +v -0.156250 -0.087620 3.875000 +v -0.087620 -0.156250 3.875000 +v -0.062500 -0.250000 3.875000 +v -0.087620 -0.343750 3.875000 +v -0.156250 -0.412380 3.875000 +v -0.250000 -0.437500 3.875000 +v -0.343750 -0.412380 3.875000 +v -0.412380 -0.343750 3.875000 +v -0.437500 -0.250000 3.875000 +v -0.412380 -0.156250 3.875000 +v -0.343750 -0.087620 3.875000 +v -0.250000 -0.062500 2.875000 +v -0.156250 -0.087620 2.875000 +v -0.087620 -0.156250 2.875000 +v -0.062500 -0.250000 2.875000 +v -0.087620 -0.343750 2.875000 +v -0.156250 -0.412380 2.875000 +v -0.250000 -0.437500 2.875000 +v -0.343750 -0.412380 2.875000 +v -0.412380 -0.343750 2.875000 +v -0.437500 -0.250000 2.875000 +v -0.412380 -0.156250 2.875000 +v -0.343750 -0.087620 2.875000 +v -0.437500 -0.281250 3.875000 +v -0.312500 -0.281250 3.875000 +v -0.437500 -0.218750 3.875000 +v -0.312500 -0.218750 3.875000 +v -0.437500 -0.218750 3.937500 +v -0.437500 -0.281250 3.937500 +v -0.312500 -0.281250 4.000000 +v -0.312500 -0.218750 4.000000 +v -0.187500 -0.281250 3.875000 +v -0.062500 -0.281250 3.875000 +v -0.187500 -0.218750 3.875000 +v -0.062500 -0.218750 3.875000 +v -0.187500 -0.218750 4.000000 +v -0.187500 -0.281250 4.000000 +v -0.062500 -0.281250 3.937500 +v -0.062500 -0.218750 3.937500 +vt 0.696970 0.132530 +vt 0.693182 0.144578 +vt 0.693182 0.132530 +vt 0.117424 0.048193 +vt 0.113636 0.060241 +vt 0.113636 0.048193 +vt 0.117424 0.060241 +vt 0.113636 0.072289 +vt 0.117424 0.084337 +vt 0.117424 0.072289 +vt 0.117424 0.096386 +vt 0.113636 0.084337 +vt 0.117424 0.108434 +vt 0.113636 0.096386 +vt 0.113636 0.120482 +vt 0.113636 0.108434 +vt 0.117424 0.120482 +vt 0.113636 0.132530 +vt 0.117424 0.144578 +vt 0.117424 0.132530 +vt 0.117424 0.012048 +vt 0.113636 -0.000000 +vt 0.117424 0.000000 +vt 0.113636 0.024096 +vt 0.113636 0.012048 +vt 0.117424 0.024096 +vt 0.113636 0.036145 +vt 0.117424 0.036145 +vt 0.106061 0.072289 +vt 0.102273 0.060241 +vt 0.106061 0.060241 +vt 0.102273 0.048193 +vt 0.106061 0.048193 +vt 0.102273 0.036145 +vt 0.106061 0.036145 +vt 0.102273 0.024096 +vt 0.106061 0.024096 +vt 0.102273 0.012048 +vt 0.106061 0.012048 +vt 0.106061 -0.000000 +vt 0.102273 0.144578 +vt 0.106061 0.132530 +vt 0.106061 0.144578 +vt 0.102273 0.120482 +vt 0.106061 0.120482 +vt 0.102273 0.108434 +vt 0.106061 0.108434 +vt 0.106061 0.096386 +vt 0.102273 0.096386 +vt 0.106061 0.084337 +vt 0.102273 0.084337 +vt 0.071970 0.048193 +vt 0.068182 0.060241 +vt 0.068182 0.048193 +vt 0.071970 0.060241 +vt 0.068182 0.072289 +vt 0.071970 0.084337 +vt 0.071970 0.072289 +vt 0.071970 0.096386 +vt 0.068182 0.084337 +vt 0.071970 0.108434 +vt 0.068182 0.096386 +vt 0.068182 0.120482 +vt 0.068182 0.108434 +vt 0.071970 0.120482 +vt 0.068182 0.132530 +vt 0.071970 0.144578 +vt 0.071970 0.132530 +vt 0.071970 0.012048 +vt 0.068182 -0.000000 +vt 0.071970 -0.000000 +vt 0.068182 0.024096 +vt 0.068182 0.012048 +vt 0.071970 0.024096 +vt 0.068182 0.036145 +vt 0.071970 0.036145 +vt 0.022727 0.048193 +vt 0.018939 0.060241 +vt 0.018939 0.048193 +vt 0.022727 0.060241 +vt 0.018939 0.072289 +vt 0.022727 0.084337 +vt 0.022727 0.072289 +vt 0.022727 0.096386 +vt 0.018939 0.084337 +vt 0.022727 0.120482 +vt 0.018939 0.132530 +vt 0.018939 0.120482 +vt 0.022727 0.144578 +vt 0.022727 0.132530 +vt 0.022727 0.012048 +vt 0.018939 -0.000000 +vt 0.022727 -0.000000 +vt 0.018939 0.024096 +vt 0.018939 0.012048 +vt 0.105008 0.234905 +vt 0.098485 0.240894 +vt 0.091962 0.222926 +vt 0.060606 0.024096 +vt 0.053030 0.036145 +vt 0.053030 0.030120 +vt 0.060606 0.048193 +vt 0.060606 0.036145 +vt 0.060606 0.120482 +vt 0.053030 0.108434 +vt 0.060606 0.108434 +vt 0.060606 0.096386 +vt 0.053030 0.102410 +vt 0.045455 0.204819 +vt 0.007576 0.198795 +vt 0.045455 0.192771 +vt 0.007576 0.186747 +vt 0.045455 0.180723 +vt 0.045455 0.192771 +vt 0.007576 0.150602 +vt 0.045455 0.156627 +vt 0.007576 0.156627 +vt 0.007576 0.234940 +vt 0.045455 0.228916 +vt 0.045455 0.240964 +vt 0.011364 0.072289 +vt 0.007576 0.060241 +vt 0.011364 0.060241 +vt 0.007576 0.048193 +vt 0.011364 0.048193 +vt 0.000000 0.234940 +vt 0.007576 0.240964 +vt 0.007576 0.192771 +vt 0.000000 0.198795 +vt 0.011364 0.024096 +vt 0.007576 0.012048 +vt 0.011364 0.012048 +vt 0.011364 -0.000000 +vt 0.007576 0.144578 +vt 0.011364 0.132530 +vt 0.011364 0.144578 +vt 0.007576 0.120482 +vt 0.011364 0.120482 +vt 0.000000 0.186747 +vt 0.007576 0.180723 +vt 0.007576 0.144578 +vt 0.000000 0.150602 +vt 0.007576 0.096386 +vt 0.011364 0.084337 +vt 0.011364 0.096386 +vt 0.007576 0.084337 +vt 0.992424 0.487952 +vt 0.931818 0.463855 +vt 0.992424 0.463855 +vt 0.969697 0.536145 +vt 0.931818 0.487952 +vt 0.931818 0.656627 +vt 0.924242 0.632530 +vt 0.931818 0.632530 +vt 0.946970 0.439759 +vt 0.924242 0.439759 +vt 0.931818 0.439759 +vt 0.931818 0.548193 +vt 0.924242 0.487952 +vt 0.863636 0.463855 +vt 0.909091 0.439759 +vt 0.924242 0.463855 +vt 0.886364 0.536145 +vt 0.863636 0.487952 +vt 0.931818 0.572289 +vt 0.924242 0.548193 +vt 0.924242 0.391566 +vt 0.931818 0.391566 +vt 0.924242 0.572289 +vt 0.931818 0.680723 +vt 0.924242 0.656627 +vt 0.071970 0.759009 +vt 0.085106 0.771071 +vt 0.071970 0.807256 +vt 0.196970 0.813253 +vt 0.181818 0.819277 +vt 0.181818 0.813253 +vt 0.147727 0.813253 +vt 0.147727 0.819277 +vt 0.196970 0.873494 +vt 0.196970 0.819277 +vt 0.196970 0.759036 +vt 0.174242 0.759036 +vt 0.212180 0.795180 +vt 0.219696 0.783226 +vt 0.227213 0.795180 +vt 0.196970 0.813253 +vt 0.181818 0.819277 +vt 0.181818 0.813253 +vt 0.147727 0.813253 +vt 0.147727 0.819277 +vt 0.196970 0.873494 +vt 0.196970 0.819277 +vt 0.196970 0.759036 +vt 0.174242 0.759036 +vt 0.212121 0.759036 +vt 0.196970 0.783133 +vt 0.196970 0.759036 +vt 0.212121 0.783133 +vt 0.196970 0.807229 +vt 0.594697 0.951807 +vt 0.602273 0.963855 +vt 0.594697 1.000000 +vt 0.564394 0.759036 +vt 0.556818 0.746988 +vt 0.564394 0.710843 +vt 0.693182 0.120482 +vt 0.696970 0.126506 +vt 0.696970 0.108434 +vt 0.693182 0.108434 +vt 0.693182 0.096386 +vt 0.696970 0.102410 +vt 0.696970 0.084337 +vt 0.693182 0.084337 +vt 0.693182 0.072289 +vt 0.696970 0.078313 +vt 0.696970 0.060241 +vt 0.693182 0.060241 +vt 0.693182 0.048193 +vt 0.696970 0.054217 +vt 0.696970 0.036145 +vt 0.693182 0.036145 +vt 0.693182 0.024096 +vt 0.696970 0.030120 +vt 0.696970 0.012048 +vt 0.693182 0.012048 +vt 0.693182 -0.000000 +vt 0.696970 0.006024 +vt 0.089865 0.222918 +vt 0.089865 0.234913 +vt 0.076801 0.234913 +vt 0.065955 0.834302 +vt 0.075758 0.807301 +vt 0.085560 0.834302 +vt 0.087121 0.867470 +vt 0.083333 0.855422 +vt 0.087121 0.855422 +vt 0.071970 0.849398 +vt 0.064394 0.855422 +vt 0.064394 0.849398 +vt 0.087121 0.849398 +vt 0.083333 0.849398 +vt 0.075758 0.849398 +vt 0.071970 0.861446 +vt 0.075758 0.861446 +vt 0.083333 0.855422 +vt 0.087121 0.867470 +vt 0.083333 0.867470 +vt 0.075758 0.849398 +vt 0.075758 0.861446 +vt 0.071970 0.861446 +vt 0.071970 0.849398 +vt 0.087121 0.849398 +vt 0.083333 0.849398 +vt 0.064394 0.855422 +vt 0.064394 0.849398 +vt 0.071970 0.843373 +vt 0.064394 0.843373 +vt 0.071970 0.843373 +vt 0.696970 0.138554 +vt 0.113636 0.144578 +vt 0.102273 0.072289 +vt 0.102273 0.000000 +vt 0.102273 0.132530 +vt 0.068182 0.144578 +vt 0.018939 0.096386 +vt 0.018939 0.144578 +vt 0.022727 0.024096 +vt 0.094719 0.239289 +vt 0.091962 0.234905 +vt 0.090953 0.228916 +vt 0.094719 0.218542 +vt 0.098485 0.216937 +vt 0.102251 0.218542 +vt 0.105008 0.222926 +vt 0.106017 0.228916 +vt 0.102251 0.239289 +vt 0.053030 0.042169 +vt 0.053030 0.114458 +vt 0.007576 0.204819 +vt 0.045455 0.144578 +vt 0.007576 0.228916 +vt 0.007576 0.072289 +vt 0.000000 0.240964 +vt 0.000000 0.192771 +vt 0.007576 0.024096 +vt 0.007576 -0.000000 +vt 0.007576 0.132530 +vt 0.007576 0.192771 +vt 0.000000 0.192771 +vt 0.000000 0.144578 +vt 0.954545 0.536145 +vt 0.977273 0.439759 +vt 0.878788 0.439759 +vt 0.901515 0.536145 +vt 0.924242 0.680723 +vt 0.064385 0.804024 +vt 0.058833 0.771071 +vt 0.058833 0.795195 +vt 0.056801 0.783133 +vt 0.064385 0.762241 +vt 0.079554 0.762241 +vt 0.087138 0.783133 +vt 0.085106 0.795195 +vt 0.079554 0.804025 +vt 0.174242 0.873494 +vt 0.225011 0.803633 +vt 0.219696 0.807134 +vt 0.214381 0.803633 +vt 0.214381 0.786728 +vt 0.225011 0.786728 +vt 0.174242 0.873494 +vt 0.212121 0.807229 +vt 0.602273 0.987952 +vt 0.571970 1.000000 +vt 0.571970 0.951807 +vt 0.564394 0.987952 +vt 0.564394 0.963855 +vt 0.556818 0.722892 +vt 0.587121 0.710843 +vt 0.587121 0.759036 +vt 0.594697 0.722892 +vt 0.594697 0.746988 +vt 0.696970 0.120482 +vt 0.696970 0.114458 +vt 0.696970 0.096386 +vt 0.696970 0.090361 +vt 0.696970 0.072289 +vt 0.696970 0.066265 +vt 0.696970 0.048193 +vt 0.696970 0.042169 +vt 0.696970 0.024096 +vt 0.696970 0.018072 +vt 0.696970 -0.000000 +vt 0.087105 0.239304 +vt 0.083333 0.240911 +vt 0.079562 0.239304 +vt 0.075791 0.228916 +vt 0.076801 0.222918 +vt 0.079562 0.218527 +vt 0.083333 0.216920 +vt 0.087105 0.218527 +vt 0.090876 0.228916 +vt 0.081417 0.840890 +vt 0.075758 0.843302 +vt 0.070098 0.840890 +vt 0.064439 0.825301 +vt 0.065955 0.816301 +vt 0.070098 0.809712 +vt 0.081417 0.809712 +vt 0.085560 0.816301 +vt 0.087076 0.825301 +vt 0.083333 0.867470 +vt 0.087121 0.855422 +vt 0.064394 0.843373 +vt 0.094697 0.060241 +vt 0.094697 0.048193 +vt 0.094697 0.084337 +vt 0.094697 0.072289 +vt 0.094697 0.096386 +vt 0.094697 0.120482 +vt 0.094697 0.108434 +vt 0.094697 0.144578 +vt 0.094697 0.132530 +vt 0.094697 -0.000000 +vt 0.094697 0.024096 +vt 0.094697 0.012048 +vt 0.094697 0.036145 +vt 0.079545 0.096386 +vt 0.079545 0.036145 +vt 0.079545 -0.000000 +vt 0.079545 0.108434 +vt 0.079545 0.048193 +vt 0.079545 0.072289 +vt 0.079545 0.012048 +vt 0.079545 0.120482 +vt 0.079545 0.060241 +vt 0.079545 0.084337 +vt 0.079545 0.024096 +vt 0.079545 0.132530 +vt 0.060606 -0.000000 +vt 0.060606 0.072289 +vt 0.060606 0.012048 +vt 0.060606 0.060241 +vt 0.060606 0.084337 +vt 0.060606 0.132530 +vt 0.045455 0.174699 +vt 0.075758 0.168675 +vt 0.075758 0.174699 +vt 0.045455 0.150602 +vt 0.075758 0.156627 +vt 0.060606 0.144578 +vt 0.045455 0.210843 +vt 0.075758 0.204819 +vt 0.075758 0.210843 +vt 0.045455 0.216867 +vt 0.075758 0.222892 +vt 0.045455 0.222892 +vt 0.079545 0.144578 +vt 0.075758 0.180723 +vt 0.075758 0.162651 +vt 0.045455 0.162651 +vt 0.075758 0.216867 +vt 0.075758 0.228916 +vt 0.075758 0.186747 +vt 0.045455 0.186747 +vt 0.045455 0.168675 +vt 0.075758 0.234940 +vt 0.045455 0.234940 +vt 0.007576 0.174699 +vt 0.007576 0.216867 +vt 0.007576 0.222892 +vt 0.007576 0.210843 +vt 0.007576 0.168675 +vt 0.007576 0.162651 +vt 0.045455 0.198795 +vt -0.000000 0.060241 +vt -0.000000 0.066265 +vt 0.000000 0.054217 +vt 0.000000 0.012048 +vt 0.000000 0.018072 +vt 0.000000 0.132530 +vt 0.000000 0.138554 +vt 0.000000 0.084337 +vt -0.000000 0.090361 +vt 0.056818 0.795181 +vt -0.000000 0.783133 +vt 0.056818 0.783133 +vt 0.056818 0.903614 +vt -0.000000 0.891566 +vt 0.056818 0.891566 +vt 0.056818 0.867470 +vt -0.000000 0.855422 +vt 0.056818 0.855422 +vt 0.056818 0.807229 +vt -0.000000 0.795181 +vt 0.056818 0.771084 +vt -0.000000 0.759036 +vt 0.056818 0.759036 +vt 0.056818 0.879518 +vt -0.000000 0.867470 +vt 0.056818 0.819277 +vt -0.000000 0.807229 +vt 0.056818 0.843373 +vt -0.000000 0.831325 +vt 0.056818 0.831325 +vt -0.000000 0.771084 +vt -0.000000 0.879518 +vt -0.000000 0.819277 +vt -0.000000 0.843373 +vt 0.272727 0.783133 +vt 0.265152 0.759036 +vt 0.272727 0.759036 +vt 0.265152 0.783133 +vt 0.257576 0.759036 +vt 0.257576 0.783133 +vt 0.250000 0.759036 +vt 0.250000 0.783133 +vt 0.242424 0.759036 +vt 0.242424 0.783133 +vt 0.234848 0.759036 +vt 0.234848 0.783133 +vt 0.227273 0.759036 +vt 0.227273 0.783133 +vt 0.219697 0.759036 +vt 0.219697 0.783133 +vt 0.212121 0.759036 +vt 0.602273 0.903614 +vt 0.617424 0.867470 +vt 0.617424 0.903614 +vt 0.602273 0.951807 +vt 0.617424 0.951807 +vt 0.541667 0.951807 +vt 0.556818 0.903614 +vt 0.556818 0.951807 +vt 0.560606 0.879518 +vt 0.568182 0.819277 +vt 0.560606 0.819277 +vt 0.564394 0.783133 +vt 0.568182 0.819277 +vt 0.560606 0.819277 +vt 0.541667 0.903614 +vt 0.556818 0.879518 +vt 0.594697 0.903614 +vt 0.587121 0.903614 +vt 0.594697 0.759036 +vt 0.594697 0.771084 +vt 0.602273 0.771084 +vt 0.602273 0.819277 +vt 0.617424 0.771084 +vt 0.617424 0.819277 +vt 0.594697 0.867470 +vt 0.587121 0.903614 +vt 0.594697 0.903614 +vt 0.602273 0.867470 +vt 0.541667 0.879518 +vt 0.556818 0.819277 +vt 0.602273 0.759036 +vt 0.617424 0.759036 +vt 0.541667 0.819277 +vt 0.556818 0.783133 +vt 0.568182 0.879518 +vt 0.560606 0.879518 +vt 0.541667 0.759036 +vt 0.556818 0.759036 +vt 0.564394 0.951807 +vt 0.571970 0.903614 +vt 0.564394 0.903614 +vt 0.564394 0.903614 +vt 0.564394 0.951807 +vt 0.587121 0.867470 +vt 0.594697 0.819277 +vt 0.571970 0.783133 +vt 0.594697 0.771084 +vt 0.594697 0.867470 +vt 0.602273 0.771084 +vt 0.571970 0.903614 +vt 0.595599 0.759478 +vt 0.571970 0.951807 +vt 0.568182 0.879518 +vt 0.587121 0.867470 +vt 0.594697 0.819277 +vt 0.571970 0.783133 +vt 0.587121 0.759036 +vt 0.564394 0.759036 +vt 0.564394 0.783133 +vt 0.556818 0.759036 +vt 0.594697 0.951807 +vt 0.602273 0.951807 +vt 0.602273 0.819277 +vt 0.136364 0.174699 +vt 0.075758 0.168675 +vt 0.136364 0.168675 +vt 0.136364 0.204819 +vt 0.075758 0.198795 +vt 0.136364 0.198795 +vt 0.136364 0.150602 +vt 0.075758 0.144578 +vt 0.136364 0.144578 +vt 0.075758 0.162651 +vt 0.136364 0.162651 +vt 0.075758 0.192771 +vt 0.136364 0.192771 +vt 0.136364 0.216867 +vt 0.075758 0.210843 +vt 0.136364 0.210843 +vt 0.075758 0.156627 +vt 0.136364 0.156627 +vt 0.075758 0.186747 +vt 0.136364 0.186747 +vt 0.136364 0.180723 +vt 0.075758 0.174699 +vt 0.075758 0.204819 +vt 0.075758 0.150602 +vt 0.075758 0.180723 +vt 0.087121 0.783133 +vt 0.147727 0.795181 +vt 0.087121 0.795181 +vt 0.087121 0.843373 +vt 0.147727 0.855422 +vt 0.087121 0.855422 +vt 0.087121 0.819277 +vt 0.147727 0.831325 +vt 0.087121 0.831325 +vt 0.087121 0.879518 +vt 0.147727 0.891566 +vt 0.087121 0.891566 +vt 0.087121 0.771084 +vt 0.147727 0.783133 +vt 0.147727 0.843373 +vt 0.087121 0.807229 +vt 0.147727 0.819277 +vt 0.087121 0.867470 +vt 0.147727 0.879518 +vt 0.087121 0.759036 +vt 0.147727 0.771084 +vt 0.147727 0.807229 +vt 0.147727 0.867470 +vt 0.147727 0.903614 +vt 0.087121 0.903614 +vt 0.075758 0.150602 +vt 0.075758 0.198795 +vt 0.000000 0.006024 +vt -0.000000 0.126506 +vt -0.000000 0.078313 +vt -0.000000 0.903614 +vt 0.212121 0.783133 +vt 0.541667 0.783133 +vt 0.075758 0.216867 +vt 0.147727 0.759036 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn -0.5000 -0.8660 -0.0000 +vn -0.5000 0.8660 -0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.8000 0.6000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.8000 0.6000 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.0000 -0.2169 0.9762 +vn -0.4472 0.0000 0.8944 +vn 0.4472 0.0000 0.8944 +vn 0.8660 0.5000 0.0000 +vn 0.8660 -0.5000 -0.0000 +vn -0.8660 -0.5000 -0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.7746 0.4472 -0.4472 +vn 0.4472 0.7746 -0.4472 +vn 0.0000 0.8944 -0.4472 +vn -0.4472 0.7746 -0.4472 +vn -0.7746 0.4472 -0.4472 +vn -0.8944 -0.0000 -0.4472 +vn -0.7746 -0.4472 -0.4472 +vn -0.4472 -0.7746 -0.4472 +vn -0.0000 -0.8944 -0.4472 +vn 0.4472 -0.7746 -0.4472 +vn 0.7746 -0.4472 -0.4472 +vn 0.8944 0.0000 -0.4472 +vn -0.0000 -0.9988 0.0494 +vn 0.8184 0.5737 0.0327 +vn 0.0000 0.9988 0.0494 +vn 0.4994 -0.8650 0.0494 +vn -0.8184 -0.5737 0.0327 +vn 0.4994 0.8650 0.0494 +vn -0.4994 0.8650 0.0494 +vn 0.8184 -0.5737 0.0327 +vn -0.4994 -0.8650 0.0494 +vn -0.8184 0.5737 0.0327 +vn -0.0000 0.9950 0.0995 +vn 0.4975 0.8617 0.0995 +vn -0.8181 0.5751 0.0000 +vn 0.4975 -0.8617 0.0995 +vn -0.4975 -0.8617 0.0995 +vn -0.7038 0.7038 0.0961 +vn 0.4472 0.7746 0.4472 +vn 0.7746 0.4472 0.4472 +vn 0.0000 0.8944 0.4472 +vn -0.4472 0.7746 0.4472 +vn -0.7746 0.4472 0.4472 +vn -0.8944 0.0000 0.4472 +vn -0.7746 -0.4472 0.4472 +vn -0.4472 -0.7746 0.4472 +vn -0.0000 -0.8944 0.4472 +vn 0.4472 -0.7746 0.4472 +vn 0.7746 -0.4472 0.4472 +vn 0.8944 0.0000 0.4472 +vn 0.8181 0.5751 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.8181 -0.5751 -0.0000 +vn 0.8181 -0.5751 -0.0000 +vn -0.6367 -0.6367 0.4349 +vn -0.6367 0.6367 0.4349 +vn 0.6367 0.6367 0.4349 +vn 0.6367 -0.6367 0.4349 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.3916 -0.1153 -0.9129 +vn -0.3916 0.1153 -0.9129 +vn -0.3916 -0.1153 -0.9129 +vn 0.3538 -0.2269 -0.9074 +vn -0.3538 -0.2269 -0.9074 +vn -0.3827 0.0000 0.9239 +vn 0.3916 0.1153 0.9129 +vn 0.3827 0.0000 0.9239 +vn -0.3711 0.1112 0.9219 +vn -0.9163 -0.0343 0.3990 +vn -0.3750 -0.0754 0.9239 +vn 0.4082 0.1464 0.9011 +vn 0.9163 -0.0343 0.3990 +vn 0.3750 -0.0754 0.9239 +vn -0.3916 0.1153 0.9129 +vn 0.3711 0.1112 0.9219 +vn 0.8970 -0.1072 -0.4287 +vn 0.9337 -0.0415 -0.3557 +vn -0.3458 -0.6635 -0.6635 +vn -0.8727 -0.2257 -0.4330 +vn -0.3416 -0.3416 -0.8756 +vn 0.3711 0.1112 -0.9219 +vn -0.3711 0.1112 -0.9219 +vn -0.9337 -0.0415 -0.3557 +vn 0.3916 0.1153 -0.9129 +vn 0.3458 -0.6635 -0.6635 +vn 0.9123 0.0530 0.4062 +vn -0.3158 0.4243 0.8487 +vn 0.3158 0.4243 0.8487 +vn -0.9337 0.0415 0.3557 +vn 0.9239 0.0000 0.3827 +vn 0.9337 0.0415 -0.3557 +vn 0.9123 0.0530 -0.4062 +vn 0.9489 0.0415 0.3128 +vn 0.8727 -0.2257 -0.4330 +vn 0.9607 -0.1962 -0.1962 +vn 0.8592 0.2288 0.4576 +vn 0.3416 -0.3416 -0.8756 +vn 0.9337 0.0415 0.3557 +vn -0.9239 0.0000 0.3827 +vn -0.9123 0.0530 0.4062 +vn -0.9337 0.0415 -0.3557 +vn -0.9123 0.0530 -0.4062 +vn -0.9489 0.0415 0.3128 +vn -0.9607 -0.1962 -0.1962 +vn -0.8592 0.2288 0.4576 +vn -0.4082 0.1464 0.9011 +vn -0.8970 -0.1072 -0.4287 +vn 0.7038 0.7038 0.0961 +vn 0.7038 -0.7038 0.0961 +vn 0.0000 -0.9950 0.0995 +vn -0.7038 -0.7038 0.0961 +vn -0.4975 0.8617 0.0995 +s off +f 334/11/4 21/12/4 23/13/4 +f 14/14/4 44/15/4 43/16/4 +f 12/17/4 33/18/4 44/15/4 +f 32/19/4 33/18/4 10/20/4 +f 30/21/4 34/22/4 32/19/4 +f 28/23/4 35/24/4 30/21/4 +f 28/23/4 37/25/4 36/26/4 +f 26/27/4 38/28/4 37/25/4 +f 22/29/4 38/28/4 24/30/4 +f 20/31/4 39/32/4 22/33/4 +f 20/31/4 41/34/4 40/35/4 +f 18/36/4 42/37/4 41/34/4 +f 16/38/4 43/16/4 42/37/4 +f 45/39/5 58/40/5 56/41/5 +f 56/41/5 59/42/5 55/43/5 +f 55/43/5 60/44/5 54/45/5 +f 54/45/5 61/46/5 53/47/5 +f 53/47/5 62/48/5 52/49/5 +f 62/48/5 51/50/5 52/49/5 +f 63/51/5 50/52/5 51/53/5 +f 50/52/5 65/54/5 49/55/5 +f 49/55/5 66/56/5 48/57/5 +f 66/56/5 47/58/5 48/57/5 +f 67/59/5 46/60/5 47/58/5 +f 68/61/5 45/39/5 46/60/5 +f 95/62/4 116/63/4 115/64/4 +f 94/65/4 105/66/4 116/63/4 +f 104/67/4 105/66/4 93/68/4 +f 103/69/4 106/70/4 104/67/4 +f 102/71/4 107/72/4 103/69/4 +f 102/71/4 109/73/4 108/74/4 +f 101/75/4 110/76/4 109/73/4 +f 99/77/4 110/76/4 100/78/4 +f 98/79/4 111/80/4 99/81/4 +f 98/79/4 113/82/4 112/83/4 +f 97/84/4 114/85/4 113/82/4 +f 96/86/4 115/64/4 114/85/4 +f 131/87/4 152/88/4 151/89/4 +f 130/90/4 141/91/4 152/88/4 +f 140/92/4 141/91/4 129/93/4 +f 139/94/4 142/95/4 140/92/4 +f 137/96/4 146/97/4 145/98/4 +f 135/99/4 146/97/4 136/100/4 +f 134/101/4 147/102/4 135/103/4 +f 134/101/4 149/104/4 148/105/4 +f 201/106/5 192/107/5 162/108/5 +f 125/109/5 186/110/5 185/111/5 +f 127/112/5 186/110/5 126/113/5 +f 121/114/5 180/115/5 120/116/5 +f 119/117/5 180/115/5 179/118/5 +f 179/119/6 139/120/6 119/121/6 +f 137/122/7 181/123/7 121/124/7 +f 133/125/8 185/126/8 173/127/8 +f 131/128/9 187/129/9 127/130/9 +f 153/131/5 190/132/5 164/133/5 +f 164/133/5 191/134/5 163/135/5 +f 191/136/9 131/128/9 151/137/9 +f 143/138/6 139/120/6 199/139/6 +f 161/140/5 194/141/5 160/142/5 +f 194/141/5 159/143/5 160/142/5 +f 195/144/5 158/145/5 159/146/5 +f 158/145/5 197/147/5 157/148/5 +f 197/149/7 169/150/7 137/122/7 +f 149/151/8 133/125/8 193/152/8 +f 199/153/5 154/154/5 155/155/5 +f 200/156/5 153/131/5 154/154/5 +f 230/157/4 231/158/4 232/159/4 +f 228/160/4 229/161/4 230/157/4 +f 232/162/10 239/163/10 230/164/10 +f 233/165/4 232/159/4 231/158/4 +f 231/158/11 241/166/11 233/167/11 +f 227/168/12 238/169/12 229/161/12 +f 240/170/5 241/171/5 237/172/5 +f 238/169/5 235/173/5 239/174/5 +f 237/172/5 239/174/5 240/170/5 +f 229/161/13 237/172/13 231/158/13 +f 228/175/14 236/176/14 227/168/14 +f 233/167/15 242/177/15 234/178/15 +f 230/164/16 235/179/16 228/175/16 +f 234/180/17 240/181/17 232/162/17 +f 221/182/5 223/183/5 215/184/5 +f 247/185/15 249/186/15 248/187/15 +f 243/188/18 249/186/18 244/189/18 +f 246/190/13 249/186/13 250/191/13 +f 245/192/10 248/187/10 243/193/10 +f 264/194/14 260/195/14 256/196/14 +f 271/197/15 273/198/15 272/199/15 +f 267/200/18 273/198/18 268/201/18 +f 270/202/13 273/198/13 274/203/13 +f 269/204/10 272/199/10 267/205/10 +f 277/206/15 275/207/15 276/208/15 +f 278/209/5 279/210/5 275/207/5 +f 306/211/14 284/212/14 317/213/14 +f 311/214/15 294/215/15 324/216/15 +f 25/217/4 334/218/4 23/13/4 +f 332/219/4 25/217/4 27/220/4 +f 29/221/4 332/222/4 27/220/4 +f 330/223/4 29/221/4 31/224/4 +f 9/225/4 330/226/4 31/224/4 +f 340/227/4 9/225/4 11/228/4 +f 13/229/4 340/230/4 11/228/4 +f 338/231/4 13/229/4 15/232/4 +f 17/233/4 338/234/4 15/232/4 +f 336/235/4 17/233/4 19/236/4 +f 21/237/4 336/238/4 19/236/4 +f 345/239/4 343/240/4 351/241/4 +f 363/242/5 359/243/5 355/244/5 +f 383/245/19 381/246/19 382/247/19 +f 378/248/15 382/249/15 377/250/15 +f 377/251/10 381/246/10 379/252/10 +f 380/253/13 383/254/13 378/248/13 +f 380/253/14 381/246/14 384/255/14 +f 391/256/20 389/257/20 390/258/20 +f 385/259/15 391/256/15 390/260/15 +f 385/259/10 389/261/10 387/262/10 +f 388/263/13 391/256/13 386/264/13 +f 387/262/14 392/265/14 388/266/14 +f 380/267/4 377/250/4 379/268/4 +f 388/266/4 385/269/4 387/262/4 +f 334/11/4 335/270/4 21/12/4 +f 14/14/4 12/17/4 44/15/4 +f 12/17/4 10/20/4 33/18/4 +f 32/19/4 34/22/4 33/18/4 +f 30/21/4 35/24/4 34/22/4 +f 28/23/4 36/26/4 35/24/4 +f 28/23/4 26/27/4 37/25/4 +f 26/27/4 24/30/4 38/28/4 +f 22/29/4 39/271/4 38/28/4 +f 20/31/4 40/35/4 39/32/4 +f 20/31/4 18/36/4 41/34/4 +f 18/36/4 16/38/4 42/37/4 +f 16/38/4 14/14/4 43/16/4 +f 45/39/5 57/272/5 58/40/5 +f 56/41/5 58/40/5 59/42/5 +f 55/43/5 59/42/5 60/44/5 +f 54/45/5 60/44/5 61/46/5 +f 53/47/5 61/46/5 62/48/5 +f 62/48/5 63/273/5 51/50/5 +f 63/51/5 64/274/5 50/52/5 +f 50/52/5 64/274/5 65/54/5 +f 49/55/5 65/54/5 66/56/5 +f 66/56/5 67/59/5 47/58/5 +f 67/59/5 68/61/5 46/60/5 +f 68/61/5 57/272/5 45/39/5 +f 95/62/4 94/65/4 116/63/4 +f 94/65/4 93/68/4 105/66/4 +f 104/67/4 106/70/4 105/66/4 +f 103/69/4 107/72/4 106/70/4 +f 102/71/4 108/74/4 107/72/4 +f 102/71/4 101/75/4 109/73/4 +f 101/75/4 100/78/4 110/76/4 +f 99/77/4 111/275/4 110/76/4 +f 98/79/4 112/83/4 111/80/4 +f 98/79/4 97/84/4 113/82/4 +f 97/84/4 96/86/4 114/85/4 +f 96/86/4 95/62/4 115/64/4 +f 131/87/4 130/90/4 152/88/4 +f 130/90/4 129/93/4 141/91/4 +f 140/92/4 142/95/4 141/91/4 +f 139/94/4 143/276/4 142/95/4 +f 137/96/4 136/100/4 146/97/4 +f 135/99/4 147/277/4 146/97/4 +f 134/101/4 148/105/4 147/102/4 +f 134/101/4 133/278/4 149/104/4 +f 192/107/5 198/279/5 162/108/5 +f 198/279/5 174/280/5 162/108/5 +f 174/280/5 168/281/5 162/108/5 +f 162/108/5 156/282/5 150/283/5 +f 150/283/5 144/284/5 138/285/5 +f 138/285/5 132/286/5 201/106/5 +f 201/106/5 202/287/5 192/107/5 +f 162/108/5 150/283/5 138/285/5 +f 138/285/5 201/106/5 162/108/5 +f 125/109/5 126/113/5 186/110/5 +f 127/112/5 187/288/5 186/110/5 +f 121/114/5 181/289/5 180/115/5 +f 119/117/5 120/116/5 180/115/5 +f 179/119/6 167/290/6 139/120/6 +f 137/122/7 169/150/7 181/123/7 +f 133/125/8 125/291/8 185/126/8 +f 131/128/9 175/292/9 187/129/9 +f 153/131/5 189/293/5 190/132/5 +f 164/133/5 190/132/5 191/134/5 +f 151/137/9 163/294/9 191/136/9 +f 191/136/9 175/292/9 131/128/9 +f 199/139/6 155/295/6 143/138/6 +f 139/120/6 167/290/6 199/139/6 +f 161/140/5 193/296/5 194/141/5 +f 194/141/5 195/297/5 159/143/5 +f 195/144/5 196/298/5 158/145/5 +f 158/145/5 196/298/5 197/147/5 +f 145/299/7 157/300/7 137/122/7 +f 157/300/7 197/149/7 137/122/7 +f 193/152/8 161/301/8 149/151/8 +f 133/125/8 173/127/8 193/152/8 +f 199/153/5 200/156/5 154/154/5 +f 200/156/5 189/293/5 153/131/5 +f 230/157/4 229/161/4 231/158/4 +f 228/160/4 227/302/4 229/161/4 +f 232/162/10 240/181/10 239/163/10 +f 233/165/4 234/303/4 232/159/4 +f 231/158/11 237/172/11 241/166/11 +f 227/168/12 236/176/12 238/169/12 +f 240/170/5 242/304/5 241/171/5 +f 238/169/5 236/305/5 235/173/5 +f 237/172/5 238/169/5 239/174/5 +f 229/161/13 238/169/13 237/172/13 +f 228/175/14 235/179/14 236/176/14 +f 233/167/15 241/166/15 242/177/15 +f 230/164/16 239/163/16 235/179/16 +f 234/180/17 242/306/17 240/181/17 +f 215/184/5 216/307/5 219/308/5 +f 216/307/5 217/309/5 219/308/5 +f 217/309/5 218/310/5 219/308/5 +f 219/308/5 220/311/5 221/182/5 +f 221/182/5 222/312/5 223/183/5 +f 223/183/5 224/313/5 225/314/5 +f 225/314/5 226/315/5 223/183/5 +f 226/315/5 215/184/5 223/183/5 +f 219/308/5 221/182/5 215/184/5 +f 247/185/15 250/191/15 249/186/15 +f 243/188/18 248/187/18 249/186/18 +f 246/190/13 244/316/13 249/186/13 +f 245/192/10 247/185/10 248/187/10 +f 256/196/14 254/317/14 252/318/14 +f 252/318/14 266/319/14 264/194/14 +f 264/194/14 262/320/14 260/195/14 +f 260/195/14 258/321/14 256/196/14 +f 256/196/14 252/318/14 264/194/14 +f 271/197/15 274/203/15 273/198/15 +f 267/200/18 272/199/18 273/198/18 +f 270/202/13 268/322/13 273/198/13 +f 269/204/10 271/197/10 272/199/10 +f 277/206/15 278/209/15 275/207/15 +f 278/209/5 280/323/5 279/210/5 +f 284/212/14 283/324/14 317/213/14 +f 317/213/14 318/325/14 305/326/14 +f 318/325/14 281/327/14 305/326/14 +f 281/327/14 282/328/14 305/326/14 +f 305/326/14 306/211/14 317/213/14 +f 294/215/15 293/329/15 324/216/15 +f 324/216/15 323/330/15 312/331/15 +f 323/330/15 295/332/15 312/331/15 +f 295/332/15 296/333/15 312/331/15 +f 312/331/15 311/214/15 324/216/15 +f 25/217/4 333/334/4 334/218/4 +f 332/219/4 333/335/4 25/217/4 +f 29/221/4 331/336/4 332/222/4 +f 330/223/4 331/337/4 29/221/4 +f 9/225/4 329/338/4 330/226/4 +f 340/227/4 329/339/4 9/225/4 +f 13/229/4 339/340/4 340/230/4 +f 338/231/4 339/341/4 13/229/4 +f 17/233/4 337/342/4 338/234/4 +f 336/235/4 337/343/4 17/233/4 +f 21/237/4 335/344/4 336/238/4 +f 343/240/4 342/345/4 341/346/4 +f 341/346/4 352/347/4 351/241/4 +f 351/241/4 350/348/4 349/349/4 +f 349/349/4 348/350/4 347/351/4 +f 347/351/4 346/352/4 345/239/4 +f 345/239/4 344/353/4 343/240/4 +f 343/240/4 341/346/4 351/241/4 +f 351/241/4 349/349/4 347/351/4 +f 347/351/4 345/239/4 351/241/4 +f 355/244/5 354/354/5 363/242/5 +f 354/354/5 353/355/5 363/242/5 +f 353/355/5 364/356/5 363/242/5 +f 363/242/5 362/357/5 361/358/5 +f 361/358/5 360/359/5 359/243/5 +f 359/243/5 358/360/5 355/244/5 +f 358/360/5 357/361/5 355/244/5 +f 357/361/5 356/362/5 355/244/5 +f 363/242/5 361/358/5 359/243/5 +f 383/245/19 384/363/19 381/246/19 +f 378/248/15 383/254/15 382/249/15 +f 377/251/10 382/247/10 381/246/10 +f 380/253/13 384/255/13 383/254/13 +f 380/253/14 379/252/14 381/246/14 +f 391/256/20 392/364/20 389/257/20 +f 385/259/15 386/264/15 391/256/15 +f 385/259/10 390/260/10 389/261/10 +f 388/263/13 392/364/13 391/256/13 +f 387/262/14 389/261/14 392/265/14 +f 380/267/4 378/248/4 377/250/4 +f 388/266/4 386/365/4 385/269/4 +s 1 +f 10/20/14 11/228/8 9/225/14 +f 12/17/8 13/229/21 11/228/8 +f 14/14/21 15/232/13 13/229/21 +f 16/38/13 17/233/22 15/232/13 +f 18/36/22 19/236/9 17/233/22 +f 20/31/9 21/237/15 19/236/9 +f 22/29/15 23/13/6 21/12/15 +f 24/30/6 25/217/23 23/13/6 +f 26/27/23 27/220/10 25/217/23 +f 28/23/10 29/221/24 27/220/10 +f 30/21/24 31/224/7 29/221/24 +f 32/19/7 9/225/14 31/224/7 +f 40/35/9 51/50/15 39/32/15 +f 37/25/23 48/57/10 36/26/10 +f 44/15/8 55/43/21 43/16/21 +f 34/22/7 45/39/14 33/18/14 +f 41/34/22 52/49/9 40/35/9 +f 38/28/6 49/55/23 37/25/23 +f 33/18/14 56/41/8 44/15/8 +f 35/24/24 46/60/7 34/22/7 +f 42/37/13 53/47/22 41/34/22 +f 39/271/15 50/52/6 38/28/6 +f 36/26/10 47/58/24 35/24/24 +f 43/16/21 54/45/13 42/37/13 +f 59/42/25 80/366/26 79/367/25 +f 57/272/27 80/366/26 58/40/26 +f 57/272/27 70/368/28 69/369/27 +f 68/61/28 71/370/29 70/368/28 +f 66/56/30 71/370/29 67/59/29 +f 66/56/30 73/371/31 72/372/30 +f 64/274/32 73/371/31 65/54/31 +f 64/274/32 75/373/33 74/374/32 +f 62/48/34 75/375/33 63/273/33 +f 62/48/34 77/376/35 76/377/34 +f 60/44/36 77/376/35 61/46/35 +f 60/44/36 79/367/25 78/378/36 +f 72/372/10 83/379/24 71/370/24 +f 79/367/21 90/380/13 78/378/13 +f 76/377/9 87/381/15 75/375/15 +f 73/371/23 84/382/10 72/372/10 +f 80/366/8 91/383/21 79/367/21 +f 70/368/7 81/384/14 69/369/14 +f 77/376/22 88/385/9 76/377/9 +f 74/374/6 85/386/23 73/371/23 +f 69/369/14 92/387/8 80/366/8 +f 71/370/24 82/388/7 70/368/7 +f 78/378/13 89/389/22 77/376/22 +f 75/373/15 86/390/6 74/374/6 +f 112/83/9 123/391/37 111/80/15 +f 109/73/23 120/116/10 108/74/10 +f 116/63/8 127/112/38 115/64/21 +f 106/70/7 117/392/39 105/66/14 +f 113/82/22 124/393/40 112/83/9 +f 110/76/6 121/114/41 109/73/23 +f 105/66/14 128/394/42 116/63/8 +f 107/72/24 118/395/43 106/70/7 +f 114/85/13 125/109/44 113/82/22 +f 111/275/15 122/396/45 110/76/6 +f 108/74/10 119/117/46 107/72/24 +f 115/64/21 126/113/13 114/85/13 +f 129/93/47 128/394/42 117/392/39 +f 130/90/48 127/112/38 128/394/42 +f 182/397/8 150/398/14 156/399/8 +f 186/400/10 138/401/24 185/126/49 +f 125/109/44 134/101/50 124/393/40 +f 134/101/50 123/391/37 124/393/40 +f 123/402/37 136/100/51 122/396/45 +f 136/100/51 121/114/41 122/396/45 +f 178/403/9 174/404/22 198/405/9 +f 177/406/15 202/407/6 188/408/6 +f 139/94/52 118/395/43 119/117/46 +f 118/395/43 129/93/47 117/392/39 +f 92/387/53 95/62/54 91/383/54 +f 93/68/55 92/387/53 81/384/55 +f 82/388/56 93/68/55 81/384/55 +f 83/379/57 104/67/56 82/388/56 +f 102/71/58 83/379/57 84/382/58 +f 85/386/59 102/71/58 84/382/58 +f 100/78/60 85/386/59 86/390/60 +f 99/77/61 86/390/60 87/409/61 +f 88/385/62 99/81/61 87/381/61 +f 89/389/63 98/79/62 88/385/62 +f 96/86/64 89/389/63 90/380/64 +f 91/383/54 96/86/64 90/380/64 +f 148/105/9 159/143/15 147/102/15 +f 182/397/8 162/410/21 181/123/65 +f 152/88/8 163/135/66 151/89/66 +f 142/95/7 153/131/14 141/91/14 +f 149/104/11 160/142/9 148/105/9 +f 146/97/6 157/148/17 145/98/17 +f 141/91/14 164/133/8 152/88/8 +f 143/276/67 154/154/7 142/95/7 +f 185/126/49 144/411/7 184/412/7 +f 147/277/15 158/145/6 146/97/6 +f 178/403/9 192/413/15 177/406/15 +f 188/408/6 201/414/23 187/129/68 +f 181/123/65 168/415/13 180/416/13 +f 184/412/7 150/398/14 183/417/14 +f 187/129/68 132/418/10 186/419/10 +f 170/420/8 181/123/65 169/150/66 +f 165/421/15 188/408/6 176/422/6 +f 167/290/11 178/403/9 166/423/9 +f 171/424/14 182/397/8 170/420/8 +f 172/425/7 183/417/14 171/424/14 +f 176/422/6 187/129/68 175/292/17 +f 166/423/9 177/406/15 165/421/15 +f 173/127/67 184/412/7 172/425/7 +f 180/426/13 174/404/22 179/119/69 +f 176/427/60 189/293/61 165/428/61 +f 175/429/70 190/132/60 176/427/60 +f 172/430/56 193/296/71 173/431/71 +f 172/430/56 195/297/55 194/141/56 +f 170/432/53 195/144/55 171/433/55 +f 170/432/53 197/147/72 196/298/53 +f 166/434/62 199/153/73 167/435/73 +f 166/434/62 189/293/61 200/156/62 +f 212/436/13 223/437/22 211/438/22 +f 209/439/15 220/440/6 208/441/6 +f 206/442/10 217/443/24 205/444/24 +f 213/445/21 224/446/13 212/436/13 +f 210/447/9 221/448/15 209/449/15 +f 207/450/23 218/451/10 206/442/10 +f 214/452/8 225/453/21 213/445/21 +f 204/454/7 215/455/14 203/456/14 +f 211/438/22 222/457/9 210/447/9 +f 208/441/6 219/458/23 207/450/23 +f 203/456/14 226/459/8 214/452/8 +f 205/444/24 216/460/7 204/454/7 +f 252/461/4 253/462/74 251/463/4 +f 254/464/74 255/465/13 253/462/74 +f 256/466/13 257/467/75 255/465/13 +f 258/468/75 259/469/5 257/467/75 +f 260/470/5 261/471/76 259/469/5 +f 262/472/76 263/473/10 261/471/76 +f 264/474/10 265/475/77 263/473/10 +f 266/476/77 251/477/4 265/475/77 +f 288/478/78 289/479/79 285/480/80 +f 284/481/81 285/480/80 283/482/82 +f 281/483/83 287/484/84 282/485/85 +f 290/486/86 326/487/87 298/488/88 +f 303/489/89 313/490/90 299/491/91 +f 286/492/92 291/493/93 287/484/84 +f 288/494/78 306/211/94 308/495/95 +f 295/496/96 327/497/97 301/498/98 +f 300/499/99 301/500/98 297/501/100 +f 289/502/79 319/503/101 285/504/80 +f 292/505/102 297/501/100 289/479/79 +f 290/506/86 299/507/91 291/493/93 +f 301/500/98 296/508/103 295/509/96 +f 298/510/88 303/511/89 299/507/91 +f 299/491/91 309/512/104 291/513/93 +f 303/511/89 293/514/105 294/515/106 +f 281/516/83 320/517/107 286/518/92 +f 287/519/84 305/326/108 282/520/85 +f 305/326/108 308/495/95 306/211/94 +f 310/521/109 313/490/90 314/522/110 +f 308/495/95 309/512/104 310/521/109 +f 314/522/110 315/523/111 316/524/112 +f 312/331/113 315/523/111 311/214/114 +f 292/525/102 314/522/110 300/499/99 +f 300/499/99 316/524/112 304/526/115 +f 287/519/84 309/512/104 307/527/116 +f 303/489/89 311/214/114 315/523/111 +f 288/494/78 310/521/109 292/525/102 +f 296/528/103 316/524/112 312/331/113 +f 318/529/117 319/503/101 320/517/107 +f 319/503/101 322/530/118 320/517/107 +f 321/531/119 326/487/87 322/530/118 +f 325/532/120 328/533/121 326/487/87 +f 328/533/121 323/534/122 324/535/123 +f 302/536/124 326/487/87 328/533/121 +f 286/518/92 322/530/118 290/486/86 +f 302/536/124 324/535/123 293/537/105 +f 285/504/80 317/538/125 283/539/82 +f 289/502/79 325/532/120 321/531/119 +f 301/498/98 325/532/120 297/540/100 +f 330/541/9 343/542/22 331/543/22 +f 337/544/24 350/545/10 338/546/10 +f 334/547/8 347/548/14 335/549/14 +f 331/543/22 344/550/13 332/551/13 +f 338/546/10 351/552/23 339/553/23 +f 335/554/14 348/555/7 336/556/7 +f 332/551/13 345/557/21 333/558/21 +f 339/553/23 352/559/6 340/560/6 +f 329/561/15 342/562/9 330/541/9 +f 336/556/7 349/563/24 337/544/24 +f 333/558/21 346/564/8 334/547/8 +f 340/560/6 341/565/15 329/561/15 +f 357/566/22 368/567/13 356/568/13 +f 364/569/7 375/570/24 363/571/24 +f 354/572/8 365/573/14 353/574/14 +f 361/575/23 372/576/6 360/577/6 +f 358/578/9 369/579/22 357/566/22 +f 353/574/14 376/580/7 364/569/7 +f 355/581/21 366/582/8 354/572/8 +f 362/583/10 373/584/23 361/575/23 +f 359/585/15 370/586/9 358/578/9 +f 356/568/13 367/587/21 355/581/21 +f 363/571/24 374/588/10 362/583/10 +f 360/577/6 371/589/15 359/590/15 +f 10/20/14 12/17/8 11/228/8 +f 12/17/8 14/14/21 13/229/21 +f 14/14/21 16/38/13 15/232/13 +f 16/38/13 18/36/22 17/233/22 +f 18/36/22 20/31/9 19/236/9 +f 20/31/9 22/33/15 21/237/15 +f 22/29/15 24/30/6 23/13/6 +f 24/30/6 26/27/23 25/217/23 +f 26/27/23 28/23/10 27/220/10 +f 28/23/10 30/21/24 29/221/24 +f 30/21/24 32/19/7 31/224/7 +f 32/19/7 10/20/14 9/225/14 +f 40/35/9 52/49/9 51/50/15 +f 37/25/23 49/55/23 48/57/10 +f 44/15/8 56/41/8 55/43/21 +f 34/22/7 46/60/7 45/39/14 +f 41/34/22 53/47/22 52/49/9 +f 38/28/6 50/52/6 49/55/23 +f 33/18/14 45/39/14 56/41/8 +f 35/24/24 47/58/24 46/60/7 +f 42/37/13 54/45/13 53/47/22 +f 39/271/15 51/53/15 50/52/6 +f 36/26/10 48/57/10 47/58/24 +f 43/16/21 55/43/21 54/45/13 +f 59/42/25 58/40/26 80/366/26 +f 57/272/27 69/369/27 80/366/26 +f 57/272/27 68/61/28 70/368/28 +f 68/61/28 67/59/29 71/370/29 +f 66/56/30 72/372/30 71/370/29 +f 66/56/30 65/54/31 73/371/31 +f 64/274/32 74/374/32 73/371/31 +f 64/274/32 63/51/33 75/373/33 +f 62/48/34 76/377/34 75/375/33 +f 62/48/34 61/46/35 77/376/35 +f 60/44/36 78/378/36 77/376/35 +f 60/44/36 59/42/25 79/367/25 +f 72/372/10 84/382/10 83/379/24 +f 79/367/21 91/383/21 90/380/13 +f 76/377/9 88/385/9 87/381/15 +f 73/371/23 85/386/23 84/382/10 +f 80/366/8 92/387/8 91/383/21 +f 70/368/7 82/388/7 81/384/14 +f 77/376/22 89/389/22 88/385/9 +f 74/374/6 86/390/6 85/386/23 +f 69/369/14 81/384/14 92/387/8 +f 71/370/24 83/379/24 82/388/7 +f 78/378/13 90/380/13 89/389/22 +f 75/373/15 87/409/15 86/390/6 +f 112/83/9 124/393/40 123/391/37 +f 109/73/23 121/114/41 120/116/10 +f 116/63/8 128/394/42 127/112/38 +f 106/70/7 118/395/43 117/392/39 +f 113/82/22 125/109/44 124/393/40 +f 110/76/6 122/396/45 121/114/41 +f 105/66/14 117/392/39 128/394/42 +f 107/72/24 119/117/46 118/395/43 +f 114/85/13 126/113/13 125/109/44 +f 111/275/15 123/402/37 122/396/45 +f 108/74/10 120/116/10 119/117/46 +f 115/64/21 127/112/38 126/113/13 +f 129/93/47 130/90/48 128/394/42 +f 130/90/48 131/87/126 127/112/38 +f 182/397/8 183/417/14 150/398/14 +f 186/400/10 132/591/10 138/401/24 +f 125/109/44 133/278/127 134/101/50 +f 134/101/50 135/103/128 123/391/37 +f 123/402/37 135/99/128 136/100/51 +f 136/100/51 137/96/129 121/114/41 +f 178/403/9 179/119/69 174/404/22 +f 177/406/15 192/413/15 202/407/6 +f 139/94/52 140/92/130 118/395/43 +f 118/395/43 140/92/130 129/93/47 +f 92/387/53 94/65/53 95/62/54 +f 93/68/55 94/65/53 92/387/53 +f 82/388/56 104/67/56 93/68/55 +f 83/379/57 103/69/57 104/67/56 +f 102/71/58 103/69/57 83/379/57 +f 85/386/59 101/75/59 102/71/58 +f 100/78/60 101/75/59 85/386/59 +f 99/77/61 100/78/60 86/390/60 +f 88/385/62 98/79/62 99/81/61 +f 89/389/63 97/84/63 98/79/62 +f 96/86/64 97/84/63 89/389/63 +f 91/383/54 95/62/54 96/86/64 +f 148/105/9 160/142/9 159/143/15 +f 182/397/8 156/399/8 162/410/21 +f 152/88/8 164/133/8 163/135/66 +f 142/95/7 154/154/7 153/131/14 +f 149/104/11 161/140/11 160/142/9 +f 146/97/6 158/145/6 157/148/17 +f 141/91/14 153/131/14 164/133/8 +f 143/276/67 155/155/67 154/154/7 +f 185/126/49 138/401/24 144/411/7 +f 147/277/15 159/146/15 158/145/6 +f 178/403/9 198/405/9 192/413/15 +f 188/408/6 202/407/6 201/414/23 +f 181/123/65 162/410/21 168/415/13 +f 184/412/7 144/411/7 150/398/14 +f 187/129/68 201/414/23 132/418/10 +f 170/420/8 182/397/8 181/123/65 +f 165/421/15 177/406/15 188/408/6 +f 167/290/11 179/119/69 178/403/9 +f 171/424/14 183/417/14 182/397/8 +f 172/425/7 184/412/7 183/417/14 +f 176/422/6 188/408/6 187/129/68 +f 166/423/9 178/403/9 177/406/15 +f 173/127/67 185/126/49 184/412/7 +f 180/426/13 168/592/13 174/404/22 +f 176/427/60 190/132/60 189/293/61 +f 175/429/70 191/134/70 190/132/60 +f 172/430/56 194/141/56 193/296/71 +f 172/430/56 171/593/55 195/297/55 +f 170/432/53 196/298/53 195/144/55 +f 170/432/53 169/594/72 197/147/72 +f 166/434/62 200/156/62 199/153/73 +f 166/434/62 165/595/61 189/293/61 +f 212/436/13 224/446/13 223/437/22 +f 209/439/15 221/596/15 220/440/6 +f 206/442/10 218/451/10 217/443/24 +f 213/445/21 225/453/21 224/446/13 +f 210/447/9 222/457/9 221/448/15 +f 207/450/23 219/458/23 218/451/10 +f 214/452/8 226/459/8 225/453/21 +f 204/454/7 216/460/7 215/455/14 +f 211/438/22 223/437/22 222/457/9 +f 208/441/6 220/440/6 219/458/23 +f 203/456/14 215/455/14 226/459/8 +f 205/444/24 217/443/24 216/460/7 +f 252/461/4 254/464/74 253/462/74 +f 254/464/74 256/466/13 255/465/13 +f 256/466/13 258/468/75 257/467/75 +f 258/468/75 260/470/5 259/469/5 +f 260/470/5 262/472/76 261/471/76 +f 262/472/76 264/474/10 263/473/10 +f 264/474/10 266/476/77 265/475/77 +f 266/476/77 252/597/4 251/477/4 +f 288/478/78 292/505/102 289/479/79 +f 284/481/81 288/478/78 285/480/80 +f 281/483/83 286/492/92 287/484/84 +f 290/486/86 322/530/118 326/487/87 +f 303/489/89 315/523/111 313/490/90 +f 286/492/92 290/506/86 291/493/93 +f 288/494/78 284/481/81 306/211/94 +f 295/496/96 323/534/122 327/497/97 +f 300/499/99 304/526/115 301/500/98 +f 289/502/79 321/531/119 319/503/101 +f 292/505/102 300/499/99 297/501/100 +f 290/506/86 298/510/88 299/507/91 +f 301/500/98 304/526/115 296/508/103 +f 298/510/88 302/598/124 303/511/89 +f 299/491/91 313/490/90 309/512/104 +f 303/511/89 302/598/124 293/514/105 +f 281/516/83 318/529/117 320/517/107 +f 287/519/84 307/527/116 305/326/108 +f 305/326/108 307/527/116 308/495/95 +f 310/521/109 309/512/104 313/490/90 +f 308/495/95 307/527/116 309/512/104 +f 314/522/110 313/490/90 315/523/111 +f 312/331/113 316/524/112 315/523/111 +f 292/525/102 310/521/109 314/522/110 +f 300/499/99 314/522/110 316/524/112 +f 287/519/84 291/513/93 309/512/104 +f 303/489/89 294/515/106 311/214/114 +f 288/494/78 308/495/95 310/521/109 +f 296/528/103 304/526/115 316/524/112 +f 318/529/117 317/538/125 319/503/101 +f 319/503/101 321/531/119 322/530/118 +f 321/531/119 325/532/120 326/487/87 +f 325/532/120 327/497/97 328/533/121 +f 328/533/121 327/497/97 323/534/122 +f 302/536/124 298/488/88 326/487/87 +f 286/518/92 320/517/107 322/530/118 +f 302/536/124 328/533/121 324/535/123 +f 285/504/80 319/503/101 317/538/125 +f 289/502/79 297/540/100 325/532/120 +f 301/498/98 327/497/97 325/532/120 +f 330/541/9 342/562/9 343/542/22 +f 337/544/24 349/563/24 350/545/10 +f 334/547/8 346/564/8 347/548/14 +f 331/543/22 343/542/22 344/550/13 +f 338/546/10 350/545/10 351/552/23 +f 335/554/14 347/599/14 348/555/7 +f 332/551/13 344/550/13 345/557/21 +f 339/553/23 351/552/23 352/559/6 +f 329/561/15 341/565/15 342/562/9 +f 336/556/7 348/555/7 349/563/24 +f 333/558/21 345/557/21 346/564/8 +f 340/560/6 352/559/6 341/565/15 +f 357/566/22 369/579/22 368/567/13 +f 364/569/7 376/580/7 375/570/24 +f 354/572/8 366/582/8 365/573/14 +f 361/575/23 373/584/23 372/576/6 +f 358/578/9 370/586/9 369/579/22 +f 353/574/14 365/573/14 376/580/7 +f 355/581/21 367/587/21 366/582/8 +f 362/583/10 374/588/10 373/584/23 +f 359/585/15 371/600/15 370/586/9 +f 356/568/13 368/567/13 367/587/21 +f 363/571/24 375/570/24 374/588/10 +f 360/577/6 372/576/6 371/589/15 +o Lever +v 0.312500 -0.625000 2.500000 +v 0.250000 -0.687500 2.536612 +v 0.224112 -0.713388 2.625000 +v 0.250000 -0.687500 2.713388 +v 0.312500 -0.625000 2.750000 +v 0.375000 -0.562500 2.713388 +v 0.400888 -0.536612 2.625000 +v 0.375000 -0.562500 2.536612 +v 0.294194 -0.731694 2.536612 +v 0.356694 -0.669194 2.500000 +v 0.268306 -0.757582 2.625000 +v 0.294194 -0.731694 2.713388 +v 0.356694 -0.669194 2.750000 +v 0.419194 -0.606694 2.713388 +v 0.445083 -0.580806 2.625000 +v 0.419194 -0.606694 2.536612 +v 0.369638 -0.744638 2.580806 +v 0.400888 -0.713388 2.562500 +v 0.356694 -0.757583 2.625000 +v 0.369638 -0.744638 2.669194 +v 0.400888 -0.713388 2.687500 +v 0.432138 -0.682138 2.669194 +v 0.445083 -0.669194 2.625000 +v 0.432138 -0.682138 2.580806 +vt 0.242193 0.795181 +vt 0.234848 0.806862 +vt 0.227503 0.795181 +vt 0.229654 0.786921 +vt 0.234848 0.783500 +vt 0.240042 0.786921 +vt 0.240042 0.803441 +vt 0.229654 0.803441 +vt 0.257576 0.789157 +vt 0.253788 0.795181 +vt 0.253788 0.789157 +vt 0.257576 0.783133 +vt 0.261364 0.789157 +vt 0.265152 0.783133 +vt 0.268939 0.789157 +vt 0.265152 0.789157 +vt 0.246212 0.783133 +vt 0.242424 0.789157 +vt 0.242424 0.783133 +vt 0.253788 0.783133 +vt 0.261364 0.783133 +vt 0.268939 0.783133 +vt 0.272727 0.789157 +vt 0.250000 0.783133 +vt 0.246212 0.789157 +vt 0.250000 0.789157 +vt 0.243588 0.797031 +vt 0.246212 0.795303 +vt 0.246212 0.807105 +vt 0.261364 0.795181 +vt 0.272727 0.795181 +vt 0.268939 0.795181 +vt 0.246212 0.795181 +vt 0.250000 0.795181 +vt 0.257576 0.795181 +vt 0.265152 0.795181 +vt 0.242424 0.795181 +vt 0.272727 0.783133 +vt 0.248835 0.797031 +vt 0.249922 0.801204 +vt 0.248835 0.805376 +vt 0.243588 0.805376 +vt 0.242501 0.801204 +vn -0.7071 0.7071 0.0000 +vn 0.9113 0.4118 0.0000 +vn 0.8576 -0.3996 -0.3238 +vn 0.7175 0.2181 -0.6615 +vn 0.7071 0.7071 0.0000 +vn 0.7175 0.2181 0.6615 +vn -0.0000 -0.0000 1.0000 +vn -0.2181 -0.7175 0.6615 +vn 0.2497 -0.2497 0.9356 +vn -0.5000 -0.5000 -0.7071 +vn -0.4118 -0.9113 -0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.5000 0.5000 -0.7071 +vn 0.5000 0.5000 0.7071 +vn -0.5000 -0.5000 0.7071 +vn 0.0000 -0.0000 -1.0000 +vn -0.2181 -0.7175 -0.6615 +vn 0.2497 -0.2497 -0.9356 +vn 0.3996 -0.8576 0.3238 +vn 0.3048 -0.9524 -0.0000 +vn 0.9524 -0.3048 0.0000 +vn 0.8576 -0.3996 0.3238 +vn 0.3996 -0.8576 -0.3238 +vn 0.6286 -0.6286 -0.4580 +vn 0.6286 -0.6286 0.4580 +s off +f 397/601/131 399/602/131 393/603/131 +f 393/603/131 394/604/131 395/605/131 +f 395/605/131 396/606/131 397/601/131 +f 397/601/131 398/607/131 399/602/131 +f 399/602/131 400/608/131 393/603/131 +f 393/603/131 395/605/131 397/601/131 +s 1 +f 407/609/132 416/610/133 408/611/134 +f 399/612/135 406/613/136 407/609/132 +f 397/614/137 404/615/138 405/616/139 +f 394/617/140 403/618/141 395/619/142 +f 399/612/135 408/611/134 400/620/143 +f 398/621/144 405/616/139 406/613/136 +f 396/622/145 403/623/141 404/615/138 +f 393/624/146 401/625/147 394/617/140 +f 400/620/143 402/626/148 393/624/146 +f 412/627/149 411/628/150 415/629/151 +f 405/616/139 414/630/152 406/613/136 +f 404/615/138 411/631/150 412/632/149 +f 402/626/148 409/633/153 401/625/147 +f 408/611/134 410/634/154 402/626/148 +f 407/609/132 414/630/152 415/635/151 +f 405/616/139 412/632/149 413/636/155 +f 401/625/147 411/637/150 403/618/141 +f 407/609/132 415/635/151 416/610/133 +f 399/612/135 398/621/144 406/613/136 +f 397/614/137 396/622/145 404/615/138 +f 394/617/140 401/625/147 403/618/141 +f 399/612/135 407/609/132 408/611/134 +f 398/621/144 397/614/137 405/616/139 +f 396/622/145 395/638/142 403/623/141 +f 393/624/146 402/626/148 401/625/147 +f 400/620/143 408/611/134 402/626/148 +f 411/628/150 409/639/153 415/629/151 +f 409/639/153 410/640/154 415/629/151 +f 410/640/154 416/641/133 415/629/151 +f 415/629/151 414/642/152 413/643/155 +f 413/643/155 412/627/149 415/629/151 +f 405/616/139 413/636/155 414/630/152 +f 404/615/138 403/623/141 411/631/150 +f 402/626/148 410/634/154 409/633/153 +f 408/611/134 416/610/133 410/634/154 +f 407/609/132 406/613/136 414/630/152 +f 405/616/139 404/615/138 412/632/149 +f 401/625/147 409/633/153 411/637/150 +o Safety +v -0.625000 -0.812500 -0.625000 +v -0.625000 -0.562500 -0.625000 +v -0.625000 -0.812500 -0.875000 +v -0.625000 -0.562500 -0.875000 +v 0.375000 -0.812500 -0.625000 +v 0.375000 -0.562500 -0.625000 +v 0.375000 -0.812500 -0.875000 +v 0.375000 -0.562500 -0.875000 +vt 0.840909 0.572289 +vt 0.856061 0.548193 +vt 0.856061 0.572289 +vt 0.840909 0.548193 +vt 0.780303 0.524096 +vt 0.840909 0.524096 +vt 0.780303 0.548193 +vt 0.765152 0.572289 +vt 0.765152 0.548193 +vt 0.780303 0.572289 +vt 0.840909 0.596386 +vt 0.780303 0.596386 +vt 0.840909 0.500000 +vt 0.780303 0.500000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 418/644/156 419/645/156 417/646/156 +f 420/647/157 423/648/157 419/649/157 +f 424/650/158 421/651/158 423/652/158 +f 422/653/159 417/654/159 421/655/159 +f 423/648/160 417/656/160 419/649/160 +f 420/647/161 422/653/161 424/650/161 +f 418/644/156 420/647/156 419/645/156 +f 420/647/157 424/650/157 423/648/157 +f 424/650/158 422/653/158 421/651/158 +f 422/653/159 418/644/159 417/654/159 +f 423/648/160 421/657/160 417/656/160 +f 420/647/161 418/644/161 422/653/161 +o Handle +v 0.343750 -0.008373 2.687500 +v 0.406250 -0.116627 2.687500 +v 0.343750 -0.008373 2.062500 +v 0.406250 -0.116627 2.062500 +v 0.452003 0.054127 2.687500 +v 0.514503 -0.054127 2.687500 +v 0.560256 0.116627 2.437500 +v 0.622756 0.008373 2.437500 +v 0.885016 0.304127 2.437500 +v 0.947516 0.195873 2.437500 +v 0.993269 0.366626 2.062500 +v 0.993269 0.366626 2.500000 +v 1.055769 0.258373 2.500000 +v 1.055769 0.258373 2.062500 +vt 0.662879 0.849398 +vt 0.625000 0.861446 +vt 0.625000 0.849398 +vt 0.617424 0.861446 +vt 0.625000 0.873494 +vt 0.617424 0.873494 +vt 0.693182 0.885542 +vt 0.670455 0.933735 +vt 0.670455 0.861446 +vt 0.617424 0.897590 +vt 0.662879 0.933735 +vt 0.662879 0.861446 +vt 0.625000 0.897590 +vt 0.617424 0.933735 +vt 0.636364 0.933735 +vt 0.662879 0.945783 +vt 0.636364 0.945783 +vt 0.640152 0.885542 +vt 0.625000 0.945783 +vt 0.617424 0.945783 +vt 0.708333 0.861446 +vt 0.708333 0.873494 +vt 0.693182 0.921687 +vt 0.696970 0.933735 +vt 0.625000 0.933735 +vt 0.640152 0.921687 +vn -0.8660 -0.5000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -0.5000 0.8660 0.0000 +vn 0.7746 0.4472 0.4472 +vn 0.0000 0.0000 -1.0000 +vn 0.8660 0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.3873 -0.2236 0.8944 +s off +f 427/658/162 426/659/162 425/660/162 +f 425/661/163 430/662/163 429/663/163 +f 431/664/164 435/665/164 427/666/164 +f 430/662/165 431/667/165 429/663/165 +f 427/666/166 438/668/166 428/669/166 +f 432/670/163 433/671/163 431/667/163 +f 437/672/167 435/673/167 436/674/167 +f 426/659/168 428/669/168 432/675/168 +f 433/671/169 437/676/169 436/677/169 +f 427/658/162 428/669/162 426/659/162 +f 425/661/163 426/659/163 430/662/163 +f 425/678/164 429/679/164 431/664/164 +f 433/680/164 436/681/164 435/665/164 +f 427/666/164 425/678/164 431/664/164 +f 431/664/164 433/680/164 435/665/164 +f 430/662/165 432/670/165 431/667/165 +f 427/666/166 435/665/166 438/668/166 +f 432/670/163 434/682/163 433/671/163 +f 437/672/167 438/668/167 435/673/167 +f 428/669/168 438/668/168 432/675/168 +f 438/668/168 437/672/168 434/683/168 +f 438/668/168 434/683/168 432/675/168 +f 430/662/168 426/659/168 432/675/168 +f 433/671/169 434/682/169 437/676/169 +o Bullets +v -0.062500 -0.250000 -4.375000 +v -0.125000 -0.266747 -4.375000 +v -0.170753 -0.312500 -4.375000 +v -0.187500 -0.375000 -4.375000 +v -0.170753 -0.437500 -4.375000 +v -0.125000 -0.483253 -4.375000 +v -0.062500 -0.500000 -4.375000 +v 0.000000 -0.483253 -4.375000 +v 0.045753 -0.437500 -4.375000 +v 0.062500 -0.375000 -4.375000 +v 0.045753 -0.312500 -4.375000 +v 0.000000 -0.266747 -4.375000 +v -0.062500 -0.250000 -3.625000 +v -0.125000 -0.266747 -3.625000 +v -0.170753 -0.312500 -3.625000 +v -0.187500 -0.375000 -3.625000 +v -0.170753 -0.437500 -3.625000 +v -0.125000 -0.483253 -3.625000 +v -0.062500 -0.500000 -3.625000 +v 0.000000 -0.483253 -3.625000 +v 0.045753 -0.437500 -3.625000 +v 0.062500 -0.375000 -3.625000 +v 0.045753 -0.312500 -3.625000 +v 0.000000 -0.266747 -3.625000 +v -0.062500 -0.281250 -3.500000 +v -0.109375 -0.293810 -3.500000 +v -0.143690 -0.328125 -3.500000 +v -0.156250 -0.375000 -3.500000 +v -0.143690 -0.421875 -3.500000 +v -0.109375 -0.456190 -3.500000 +v -0.062500 -0.468750 -3.500000 +v -0.015625 -0.456190 -3.500000 +v 0.018690 -0.421875 -3.500000 +v 0.031250 -0.375000 -3.500000 +v 0.018690 -0.328125 -3.500000 +v -0.015625 -0.293810 -3.500000 +v -0.062500 -0.281250 -3.375000 +v -0.109375 -0.293810 -3.375000 +v -0.143690 -0.328125 -3.375000 +v -0.156250 -0.375000 -3.375000 +v -0.143690 -0.421875 -3.375000 +v -0.109375 -0.456190 -3.375000 +v -0.062500 -0.468750 -3.375000 +v -0.015625 -0.456190 -3.375000 +v 0.018690 -0.421875 -3.375000 +v 0.031250 -0.375000 -3.375000 +v 0.018690 -0.328125 -3.375000 +v -0.015625 -0.293810 -3.375000 +v -0.062500 -0.375000 -3.125000 +v 0.062500 -0.467817 -4.375000 +v 0.000000 -0.484564 -4.375000 +v -0.045753 -0.530317 -4.375000 +v -0.062500 -0.592817 -4.375000 +v -0.045753 -0.655317 -4.375000 +v 0.000000 -0.701071 -4.375000 +v 0.062500 -0.717817 -4.375000 +v 0.125000 -0.701071 -4.375000 +v 0.170753 -0.655317 -4.375000 +v 0.187500 -0.592817 -4.375000 +v 0.170753 -0.530317 -4.375000 +v 0.125000 -0.484564 -4.375000 +v 0.062500 -0.467817 -3.625000 +v 0.000000 -0.484564 -3.625000 +v -0.045753 -0.530317 -3.625000 +v -0.062500 -0.592817 -3.625000 +v -0.045753 -0.655317 -3.625000 +v 0.000000 -0.701071 -3.625000 +v 0.062500 -0.717817 -3.625000 +v 0.125000 -0.701071 -3.625000 +v 0.170753 -0.655317 -3.625000 +v 0.187500 -0.592817 -3.625000 +v 0.170753 -0.530317 -3.625000 +v 0.125000 -0.484564 -3.625000 +v 0.062500 -0.499067 -3.500000 +v 0.015625 -0.511627 -3.500000 +v -0.018690 -0.545942 -3.500000 +v -0.031250 -0.592817 -3.500000 +v -0.018690 -0.639692 -3.500000 +v 0.015625 -0.674007 -3.500000 +v 0.062500 -0.686567 -3.500000 +v 0.109375 -0.674007 -3.500000 +v 0.143690 -0.639692 -3.500000 +v 0.156250 -0.592817 -3.500000 +v 0.143690 -0.545942 -3.500000 +v 0.109375 -0.511627 -3.500000 +v 0.062500 -0.499067 -3.375000 +v 0.015625 -0.511627 -3.375000 +v -0.018690 -0.545942 -3.375000 +v -0.031250 -0.592817 -3.375000 +v -0.018690 -0.639692 -3.375000 +v 0.015625 -0.674007 -3.375000 +v 0.062500 -0.686567 -3.375000 +v 0.109375 -0.674007 -3.375000 +v 0.143690 -0.639692 -3.375000 +v 0.156250 -0.592817 -3.375000 +v 0.143690 -0.545942 -3.375000 +v 0.109375 -0.511627 -3.375000 +v 0.062500 -0.592817 -3.125000 +vt 0.809524 0.602471 +vt 0.809524 0.614396 +vt 0.796536 0.614396 +vt 0.809524 0.602471 +vt 0.809524 0.614396 +vt 0.796536 0.614396 +vt 0.806780 0.618761 +vt 0.803030 0.620359 +vt 0.799281 0.618761 +vt 0.795532 0.608434 +vt 0.796536 0.602471 +vt 0.799281 0.598106 +vt 0.803030 0.596508 +vt 0.806780 0.598106 +vt 0.810529 0.608434 +vt 0.806780 0.618761 +vt 0.803030 0.620359 +vt 0.799281 0.618761 +vt 0.795532 0.608434 +vt 0.796536 0.602471 +vt 0.799281 0.598106 +vt 0.803030 0.596508 +vt 0.806780 0.598106 +vt 0.810529 0.608434 +vt 0.799242 0.632530 +vt 0.795455 0.704819 +vt 0.795455 0.632530 +vt 0.780303 0.632530 +vt 0.776515 0.704819 +vt 0.776515 0.632530 +vt 0.768939 0.632530 +vt 0.765152 0.704819 +vt 0.765152 0.632530 +vt 0.803030 0.632530 +vt 0.799242 0.704819 +vt 0.784091 0.632530 +vt 0.780303 0.704819 +vt 0.791667 0.632530 +vt 0.787879 0.704819 +vt 0.787879 0.632530 +vt 0.772727 0.632530 +vt 0.768939 0.704819 +vt 0.806818 0.632530 +vt 0.803030 0.704819 +vt 0.784091 0.704819 +vt 0.791667 0.704819 +vt 0.772727 0.704819 +vt 0.810606 0.632530 +vt 0.806818 0.704819 +vt 0.768939 0.716867 +vt 0.803030 0.716867 +vt 0.784091 0.716867 +vt 0.795455 0.716867 +vt 0.791667 0.716867 +vt 0.776515 0.716867 +vt 0.772727 0.716867 +vt 0.810606 0.704819 +vt 0.806818 0.716867 +vt 0.780303 0.716867 +vt 0.765152 0.716867 +vt 0.799242 0.716867 +vt 0.787879 0.716867 +vt 0.787879 0.728916 +vt 0.768939 0.728916 +vt 0.803030 0.728916 +vt 0.784091 0.728916 +vt 0.791667 0.728916 +vt 0.772727 0.728916 +vt 0.810606 0.716867 +vt 0.806818 0.728916 +vt 0.795455 0.728916 +vt 0.776515 0.728916 +vt 0.765152 0.728916 +vt 0.799242 0.728916 +vt 0.780303 0.728916 +vt 0.787879 0.753012 +vt 0.795455 0.753012 +vt 0.776515 0.753012 +vt 0.810606 0.728916 +vt 0.810606 0.753012 +vt 0.799242 0.753012 +vt 0.780303 0.753012 +vt 0.768939 0.753012 +vt 0.803030 0.753012 +vt 0.784091 0.753012 +vt 0.772727 0.753012 +vt 0.806818 0.753012 +vt 0.791667 0.753012 +vt 0.799242 0.632530 +vt 0.795455 0.704819 +vt 0.795455 0.632530 +vt 0.780303 0.632530 +vt 0.776515 0.704819 +vt 0.776515 0.632530 +vt 0.768939 0.632530 +vt 0.765152 0.704819 +vt 0.765152 0.632530 +vt 0.803030 0.632530 +vt 0.799242 0.704819 +vt 0.784091 0.632530 +vt 0.780303 0.704819 +vt 0.791667 0.632530 +vt 0.787879 0.704819 +vt 0.787879 0.632530 +vt 0.772727 0.632530 +vt 0.768939 0.704819 +vt 0.806818 0.632530 +vt 0.803030 0.704819 +vt 0.784091 0.704819 +vt 0.791667 0.704819 +vt 0.772727 0.704819 +vt 0.810606 0.632530 +vt 0.806818 0.704819 +vt 0.772727 0.716867 +vt 0.768939 0.716867 +vt 0.806818 0.716867 +vt 0.803030 0.716867 +vt 0.784091 0.716867 +vt 0.795455 0.716867 +vt 0.791667 0.716867 +vt 0.810606 0.704819 +vt 0.780303 0.716867 +vt 0.776515 0.716867 +vt 0.765152 0.716867 +vt 0.799242 0.716867 +vt 0.787879 0.716867 +vt 0.787879 0.728916 +vt 0.768939 0.728916 +vt 0.803030 0.728916 +vt 0.784091 0.728916 +vt 0.791667 0.728916 +vt 0.772727 0.728916 +vt 0.810606 0.716867 +vt 0.806818 0.728916 +vt 0.795455 0.728916 +vt 0.776515 0.728916 +vt 0.765152 0.728916 +vt 0.799242 0.728916 +vt 0.780303 0.728916 +vt 0.787879 0.753012 +vt 0.795455 0.753012 +vt 0.776515 0.753012 +vt 0.810606 0.728916 +vt 0.810606 0.753012 +vt 0.799242 0.753012 +vt 0.780303 0.753012 +vt 0.768939 0.753012 +vt 0.803030 0.753012 +vt 0.784091 0.753012 +vt 0.772727 0.753012 +vt 0.806818 0.753012 +vt 0.791667 0.753012 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 -0.0000 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.8660 0.5000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.0000 -1.0000 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.8402 -0.4851 0.2425 +vn 0.4851 -0.8402 0.2425 +vn -0.4851 -0.8402 0.2425 +vn -0.8402 -0.4851 0.2425 +vn 0.0000 0.9701 0.2425 +vn 0.4851 0.8402 0.2425 +vn -0.4851 0.8402 0.2425 +vn -0.8402 0.4851 0.2425 +vn 0.9701 -0.0000 0.2425 +vn 0.0000 -0.9701 0.2425 +vn -0.9701 -0.0000 0.2425 +vn 0.8402 0.4851 0.2425 +vn 0.0000 0.9848 0.1735 +vn 0.4924 -0.8529 0.1735 +vn -0.8529 -0.4924 0.1735 +vn 0.4924 0.8529 0.1735 +vn -0.4924 0.8529 0.1735 +vn 0.8529 -0.4924 0.1735 +vn -0.4924 -0.8529 0.1735 +vn -0.8529 0.4924 0.1735 +vn 0.9848 -0.0000 0.1735 +vn 0.0000 -0.9848 0.1735 +vn -0.9848 0.0000 0.1735 +vn 0.8529 0.4924 0.1735 +vn -0.0000 0.0000 1.0000 +s off +f 443/684/170 441/685/170 449/686/170 +f 492/687/170 490/688/170 498/689/170 +f 441/685/170 440/690/170 439/691/170 +f 439/691/170 450/692/170 449/686/170 +f 449/686/170 448/693/170 447/694/170 +f 447/694/170 446/695/170 445/696/170 +f 445/696/170 444/697/170 443/684/170 +f 443/684/170 442/698/170 441/685/170 +f 441/685/170 439/691/170 449/686/170 +f 449/686/170 447/694/170 445/696/170 +f 445/696/170 443/684/170 449/686/170 +f 490/688/170 489/699/170 488/700/170 +f 488/700/170 499/701/170 498/689/170 +f 498/689/170 497/702/170 496/703/170 +f 496/703/170 495/704/170 494/705/170 +f 494/705/170 493/706/170 492/687/170 +f 492/687/170 491/707/170 490/688/170 +f 490/688/170 488/700/170 498/689/170 +f 498/689/170 496/703/170 494/705/170 +f 494/705/170 492/687/170 498/689/170 +s 1 +f 442/708/171 453/709/172 441/710/172 +f 449/711/173 460/712/174 448/713/174 +f 446/714/175 457/715/176 445/716/176 +f 443/717/177 454/718/171 442/708/171 +f 450/719/178 461/720/173 449/711/173 +f 440/721/179 451/722/180 439/723/180 +f 447/724/181 458/725/175 446/714/175 +f 444/726/182 455/727/177 443/717/177 +f 439/723/180 462/728/178 450/719/178 +f 441/710/172 452/729/179 440/721/179 +f 448/713/174 459/730/181 447/724/181 +f 445/731/176 456/732/182 444/726/182 +f 459/730/183 470/733/184 458/725/184 +f 456/732/185 467/734/186 455/727/186 +f 451/722/187 474/735/188 462/728/188 +f 452/729/189 465/736/190 464/737/189 +f 459/730/183 472/738/191 471/739/183 +f 457/740/192 468/741/185 456/732/185 +f 454/718/193 465/736/190 453/709/190 +f 460/712/191 473/742/194 472/738/191 +f 457/715/192 470/733/184 469/743/192 +f 455/727/186 466/744/193 454/718/193 +f 462/728/188 473/742/194 461/720/194 +f 451/722/187 464/737/189 463/745/187 +f 464/737/179 475/746/195 463/745/180 +f 471/739/181 482/747/196 470/733/175 +f 468/741/182 479/748/197 467/734/177 +f 463/745/180 486/749/198 474/735/178 +f 465/736/172 476/750/199 464/737/179 +f 472/738/174 483/751/200 471/739/181 +f 469/752/176 480/753/201 468/741/182 +f 466/744/171 477/754/202 465/736/172 +f 473/742/173 484/755/203 472/738/174 +f 470/733/175 481/756/204 469/743/176 +f 467/734/177 478/757/205 466/744/171 +f 474/735/178 485/758/206 473/742/173 +f 475/746/195 487/759/207 486/749/198 +f 477/754/202 487/760/207 476/750/199 +f 484/755/203 487/761/207 483/751/200 +f 481/762/204 487/763/207 480/753/201 +f 478/757/205 487/764/207 477/754/202 +f 485/758/206 487/765/207 484/755/203 +f 482/747/196 487/766/207 481/756/204 +f 479/748/197 487/767/207 478/757/205 +f 486/749/198 487/768/207 485/758/206 +f 483/751/200 487/769/207 482/747/196 +f 480/753/201 487/770/207 479/748/197 +f 476/750/199 487/771/207 475/746/195 +f 491/772/171 502/773/172 490/774/172 +f 498/775/173 509/776/174 497/777/174 +f 495/778/175 506/779/176 494/780/176 +f 492/781/177 503/782/171 491/772/171 +f 499/783/178 510/784/173 498/775/173 +f 489/785/179 500/786/180 488/787/180 +f 496/788/181 507/789/175 495/778/175 +f 493/790/182 504/791/177 492/781/177 +f 488/787/180 511/792/178 499/783/178 +f 490/774/172 501/793/179 489/785/179 +f 497/777/174 508/794/181 496/788/181 +f 494/795/176 505/796/182 493/790/182 +f 507/789/184 520/797/183 519/798/184 +f 504/791/186 517/799/185 516/800/186 +f 500/786/187 523/801/188 511/792/188 +f 501/793/189 514/802/190 513/803/189 +f 509/776/191 520/797/183 508/794/183 +f 506/804/192 517/799/185 505/796/185 +f 503/782/193 514/802/190 502/773/190 +f 509/776/191 522/805/194 521/806/191 +f 506/779/192 519/798/184 518/807/192 +f 503/782/193 516/800/186 515/808/193 +f 511/792/188 522/805/194 510/784/194 +f 500/786/187 513/803/189 512/809/187 +f 513/803/179 524/810/195 512/809/180 +f 520/797/181 531/811/196 519/798/175 +f 517/799/182 528/812/197 516/800/177 +f 512/809/180 535/813/198 523/801/178 +f 514/802/172 525/814/199 513/803/179 +f 521/806/174 532/815/200 520/797/181 +f 518/816/176 529/817/201 517/799/182 +f 515/808/171 526/818/202 514/802/172 +f 522/805/173 533/819/203 521/806/174 +f 519/798/175 530/820/204 518/807/176 +f 516/800/177 527/821/205 515/808/171 +f 523/801/178 534/822/206 522/805/173 +f 524/810/195 536/823/207 535/813/198 +f 526/818/202 536/824/207 525/814/199 +f 533/819/203 536/825/207 532/815/200 +f 530/826/204 536/827/207 529/817/201 +f 527/821/205 536/828/207 526/818/202 +f 534/822/206 536/829/207 533/819/203 +f 531/811/196 536/830/207 530/820/204 +f 528/812/197 536/831/207 527/821/205 +f 535/813/198 536/832/207 534/822/206 +f 532/815/200 536/833/207 531/811/196 +f 529/817/201 536/834/207 528/812/197 +f 525/814/199 536/835/207 524/810/195 +f 442/708/171 454/718/171 453/709/172 +f 449/711/173 461/720/173 460/712/174 +f 446/714/175 458/725/175 457/715/176 +f 443/717/177 455/727/177 454/718/171 +f 450/719/178 462/728/178 461/720/173 +f 440/721/179 452/729/179 451/722/180 +f 447/724/181 459/730/181 458/725/175 +f 444/726/182 456/732/182 455/727/177 +f 439/723/180 451/722/180 462/728/178 +f 441/710/172 453/709/172 452/729/179 +f 448/713/174 460/712/174 459/730/181 +f 445/731/176 457/740/176 456/732/182 +f 459/730/183 471/739/183 470/733/184 +f 456/732/185 468/741/185 467/734/186 +f 451/722/187 463/745/187 474/735/188 +f 452/729/189 453/709/190 465/736/190 +f 459/730/183 460/712/191 472/738/191 +f 457/740/192 469/752/192 468/741/185 +f 454/718/193 466/744/193 465/736/190 +f 460/712/191 461/720/194 473/742/194 +f 457/715/192 458/725/184 470/733/184 +f 455/727/186 467/734/186 466/744/193 +f 462/728/188 474/735/188 473/742/194 +f 451/722/187 452/729/189 464/737/189 +f 464/737/179 476/750/199 475/746/195 +f 471/739/181 483/751/200 482/747/196 +f 468/741/182 480/753/201 479/748/197 +f 463/745/180 475/746/195 486/749/198 +f 465/736/172 477/754/202 476/750/199 +f 472/738/174 484/755/203 483/751/200 +f 469/752/176 481/762/204 480/753/201 +f 466/744/171 478/757/205 477/754/202 +f 473/742/173 485/758/206 484/755/203 +f 470/733/175 482/747/196 481/756/204 +f 467/734/177 479/748/197 478/757/205 +f 474/735/178 486/749/198 485/758/206 +f 491/772/171 503/782/171 502/773/172 +f 498/775/173 510/784/173 509/776/174 +f 495/778/175 507/789/175 506/779/176 +f 492/781/177 504/791/177 503/782/171 +f 499/783/178 511/792/178 510/784/173 +f 489/785/179 501/793/179 500/786/180 +f 496/788/181 508/794/181 507/789/175 +f 493/790/182 505/796/182 504/791/177 +f 488/787/180 500/786/180 511/792/178 +f 490/774/172 502/773/172 501/793/179 +f 497/777/174 509/776/174 508/794/181 +f 494/795/176 506/804/176 505/796/182 +f 507/789/184 508/794/183 520/797/183 +f 504/791/186 505/796/185 517/799/185 +f 500/786/187 512/809/187 523/801/188 +f 501/793/189 502/773/190 514/802/190 +f 509/776/191 521/806/191 520/797/183 +f 506/804/192 518/816/192 517/799/185 +f 503/782/193 515/808/193 514/802/190 +f 509/776/191 510/784/194 522/805/194 +f 506/779/192 507/789/184 519/798/184 +f 503/782/193 504/791/186 516/800/186 +f 511/792/188 523/801/188 522/805/194 +f 500/786/187 501/793/189 513/803/189 +f 513/803/179 525/814/199 524/810/195 +f 520/797/181 532/815/200 531/811/196 +f 517/799/182 529/817/201 528/812/197 +f 512/809/180 524/810/195 535/813/198 +f 514/802/172 526/818/202 525/814/199 +f 521/806/174 533/819/203 532/815/200 +f 518/816/176 530/826/204 529/817/201 +f 515/808/171 527/821/205 526/818/202 +f 522/805/173 534/822/206 533/819/203 +f 519/798/175 531/811/196 530/820/204 +f 516/800/177 528/812/197 527/821/205 +f 523/801/178 535/813/198 534/822/206 +o Magazine +v -0.250000 -0.625000 -3.062500 +v 0.250000 -0.625000 -3.062500 +v -0.250000 -0.250000 -4.437500 +v 0.250000 -0.250000 -4.437500 +v -0.250000 -1.625000 -4.437500 +v -0.250000 -1.250000 -3.062500 +v 0.250000 -1.250000 -3.062500 +v 0.250000 -1.625000 -4.437500 +v -0.250000 -3.625000 -3.937500 +v 0.250000 -3.625000 -3.937500 +v -0.250000 -3.250000 -2.562500 +v 0.250000 -3.250000 -2.562500 +v -0.250000 -0.375000 -3.312500 +v 0.250000 -0.375000 -3.312500 +v -0.250000 -0.375000 -3.562500 +v 0.250000 -0.375000 -3.562500 +v -0.250000 -0.250000 -3.812500 +v 0.250000 -0.250000 -3.812500 +v -0.125000 -0.250000 -4.437500 +v -0.125000 -0.375000 -3.312500 +v -0.125000 -0.375000 -3.562500 +v -0.125000 -0.250000 -3.812500 +v 0.125000 -0.250000 -4.437500 +v 0.125000 -0.375000 -3.312500 +v 0.125000 -0.375000 -3.562500 +v 0.125000 -0.250000 -3.812500 +v -0.125000 -0.562500 -3.125000 +v 0.125000 -0.562500 -3.125000 +v -0.125000 -0.687500 -3.125000 +v 0.125000 -0.687500 -3.125000 +v -0.125000 -0.687500 -4.375000 +v 0.125000 -0.687500 -4.375000 +v -0.125000 -0.437500 -4.437500 +v 0.125000 -0.437500 -4.437500 +v -0.125000 -0.437500 -4.375000 +v 0.125000 -0.437500 -4.375000 +vt 0.878788 0.132530 +vt 0.840909 0.144578 +vt 0.840909 0.132530 +vt 0.893939 0.132530 +vt 0.878788 0.144578 +vt 0.909091 0.132530 +vt 0.893939 0.144578 +vt 0.810606 0.132530 +vt 0.772727 0.144578 +vt 0.772727 0.132530 +vt 0.912879 0.391566 +vt 1.000000 0.192771 +vt 1.000000 0.391566 +vt 0.795455 0.192771 +vt 0.882576 0.391566 +vt 0.795455 0.391566 +vt 0.882576 0.144578 +vt 0.882576 0.192771 +vt 0.757576 0.144578 +vt 0.757576 0.132530 +vt 0.810606 -0.000000 +vt 0.757576 0.120482 +vt 0.840909 -0.000000 +vt 0.924242 0.036145 +vt 0.893939 0.120482 +vt 0.742424 0.144578 +vt 0.742424 0.132530 +vt 0.704545 0.102410 +vt 0.696970 0.120482 +vt 0.696970 0.096386 +vt 0.719697 0.102410 +vt 0.727273 0.096386 +vt 0.727273 0.120482 +vt 0.765152 0.433735 +vt 0.772727 0.457831 +vt 0.765152 0.457831 +vt 0.772727 0.433735 +vt 0.848485 0.457831 +vt 0.833333 0.114458 +vt 0.818182 0.120482 +vt 0.818182 0.114458 +vt 0.863636 0.433735 +vt 0.848485 0.433735 +vt 0.772727 0.469880 +vt 0.848485 0.481928 +vt 0.772727 0.421687 +vt 0.784091 0.403614 +vt 0.799242 0.403614 +vt 0.799242 0.487952 +vt 0.909091 0.144578 +vt 0.810606 0.144578 +vt 0.912879 0.192771 +vt 0.795455 0.144578 +vt 0.742424 0.120482 +vt 0.727273 0.036145 +vt 0.924242 0.096386 +vt 0.909091 0.120482 +vt 0.704545 0.120482 +vt 0.719697 0.120482 +vt 0.833333 0.120482 +vt 0.863636 0.457831 +vt 0.848485 0.409639 +vt 0.814394 0.391566 +vt 0.852273 0.391566 +vt 0.852273 0.409639 +vt 0.852273 0.481928 +vt 0.852273 0.500000 +vt 0.814394 0.500000 +vt 0.784091 0.487952 +vt 0.765152 0.391566 +vt 0.833333 0.132530 +vt 0.696970 0.036145 +vt 0.765152 0.192771 +vt 0.818182 0.132530 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.8944 0.4472 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.9648 0.2631 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.1222 -0.9925 +vn 0.0000 -0.2425 -0.9701 +vn 0.0000 0.1222 0.9925 +vn 0.0000 0.2425 0.9701 +s off +f 553/836/208 555/837/208 539/838/208 +f 551/839/209 558/840/209 553/836/209 +f 549/841/208 557/842/208 551/839/208 +f 540/843/208 562/844/208 554/845/208 +f 541/846/210 547/847/210 542/848/210 +f 548/849/211 544/850/211 543/851/211 +f 548/849/212 545/852/212 546/853/212 +f 554/845/209 561/854/209 552/855/209 +f 544/856/211 554/845/211 552/857/211 +f 541/858/210 542/859/210 551/860/210 +f 552/855/208 560/861/208 550/862/208 +f 563/863/213 549/864/213 537/865/213 +f 564/866/213 537/865/213 538/867/213 +f 550/868/213 564/866/213 538/867/213 +f 564/869/214 565/870/214 563/871/214 +f 566/872/208 567/873/208 565/870/208 +f 569/874/208 572/875/208 570/876/208 +f 572/877/215 567/873/215 568/878/215 +f 563/879/211 567/873/211 571/880/211 +f 564/881/210 568/878/210 566/872/210 +f 564/881/210 560/882/210 561/883/210 +f 557/884/211 563/879/211 571/880/211 +f 553/836/208 558/840/208 555/837/208 +f 551/839/209 557/842/209 558/840/209 +f 549/841/208 556/885/208 557/842/208 +f 540/843/208 559/886/208 562/844/208 +f 541/846/210 545/887/210 547/847/210 +f 548/849/211 546/853/211 544/850/211 +f 548/849/212 547/888/212 545/852/212 +f 554/845/209 562/844/209 561/854/209 +f 552/857/211 550/889/211 538/867/211 +f 538/867/211 543/890/211 552/857/211 +f 543/890/211 544/856/211 552/857/211 +f 544/856/211 540/843/211 554/845/211 +f 542/859/210 537/891/210 551/860/210 +f 537/891/210 549/892/210 551/860/210 +f 551/860/210 553/836/210 541/858/210 +f 553/836/210 539/838/210 541/858/210 +f 552/855/208 561/854/208 560/861/208 +f 563/863/213 556/893/213 549/864/213 +f 564/866/213 563/863/213 537/865/213 +f 550/868/213 560/894/213 564/866/213 +f 564/869/214 566/872/214 565/870/214 +f 566/872/208 568/878/208 567/873/208 +f 569/874/208 571/895/208 572/875/208 +f 572/877/215 571/896/215 567/873/215 +f 563/879/211 565/870/211 567/873/211 +f 564/881/210 572/897/210 568/878/210 +f 561/883/210 562/898/210 572/897/210 +f 562/898/210 559/899/210 572/897/210 +f 559/899/210 570/900/210 572/897/210 +f 572/897/210 564/881/210 561/883/210 +f 569/901/211 555/902/211 571/880/211 +f 555/902/211 558/903/211 571/880/211 +f 557/884/211 556/904/211 563/879/211 +f 558/903/211 557/884/211 571/880/211 +s 1 +f 544/850/216 545/887/217 541/846/216 +f 537/865/215 543/890/218 538/867/215 +f 542/905/218 548/849/219 543/851/218 +f 570/876/214 540/843/214 544/856/216 +f 541/858/216 570/876/214 544/856/216 +f 569/874/214 539/838/214 555/906/214 +f 544/850/216 546/853/217 545/887/217 +f 537/865/215 542/907/218 543/890/218 +f 542/905/218 547/908/219 548/849/219 +f 570/876/214 559/909/214 540/843/214 +f 541/858/216 569/874/214 570/876/214 +f 569/874/214 541/858/216 539/838/214 +o Gun +v -0.125000 0.437500 -7.500000 +v 0.125000 0.437500 -7.500000 +v -0.500000 -0.187500 -7.750000 +v 0.500000 -0.187500 -7.750000 +v -0.500000 -0.437500 -1.500000 +v 0.500000 -0.437500 -1.500000 +v -0.250000 -0.687500 -1.500000 +v 0.250000 -0.687500 -1.500000 +v -0.250000 -0.687500 2.750000 +v 0.250000 -0.687500 2.750000 +v -0.500000 -0.437500 2.750000 +v 0.500000 -0.437500 2.750000 +v -0.500000 -0.187500 2.750000 +v 0.500000 -0.187500 2.750000 +v -0.125000 0.312500 2.750000 +v 0.125000 0.312500 2.750000 +v -0.500000 -0.187500 -0.250000 +v 0.500000 -0.187500 -0.250000 +v -0.125000 0.312500 -0.250000 +v 0.125000 0.312500 -0.250000 +v -0.125000 0.437500 -0.250000 +v 0.125000 0.437500 -0.250000 +v 0.000000 1.687500 1.500000 +v -0.125000 1.654006 1.500000 +v -0.216506 1.562500 1.500000 +v -0.250000 1.437500 1.500000 +v -0.216506 1.312500 1.500000 +v -0.125000 1.220994 1.500000 +v 0.000000 1.187500 1.500000 +v 0.125000 1.220994 1.500000 +v 0.216506 1.312500 1.500000 +v 0.250000 1.437500 1.500000 +v 0.216506 1.562500 1.500000 +v 0.125000 1.654006 1.500000 +v 0.000000 1.687500 -0.750000 +v -0.125000 1.654006 -0.750000 +v -0.216506 1.562500 -0.750000 +v -0.250000 1.437500 -0.750000 +v -0.216506 1.312500 -0.750000 +v -0.125000 1.220994 -0.750000 +v 0.000000 1.187500 -0.750000 +v 0.125000 1.220994 -0.750000 +v 0.216506 1.312500 -0.750000 +v 0.250000 1.437500 -0.750000 +v 0.216506 1.562500 -0.750000 +v 0.125000 1.654006 -0.750000 +v 0.000000 1.750000 -1.250000 +v -0.156250 1.708133 -1.250000 +v -0.270633 1.593750 -1.250000 +v -0.312500 1.437500 -1.250000 +v -0.270633 1.281250 -1.250000 +v -0.156250 1.166867 -1.250000 +v 0.000000 1.125000 -1.250000 +v 0.156250 1.166867 -1.250000 +v 0.270633 1.281250 -1.250000 +v 0.312500 1.437500 -1.250000 +v 0.270633 1.593750 -1.250000 +v 0.156250 1.708133 -1.250000 +v 0.000000 1.750000 -2.750000 +v -0.156250 1.708133 -2.750000 +v -0.270633 1.593750 -2.750000 +v -0.312500 1.437500 -2.750000 +v -0.270633 1.281250 -2.750000 +v -0.156250 1.166867 -2.750000 +v 0.000000 1.125000 -2.750000 +v 0.156250 1.166867 -2.750000 +v 0.270633 1.281250 -2.750000 +v 0.312500 1.437500 -2.750000 +v 0.270633 1.593750 -2.750000 +v 0.156250 1.708133 -2.750000 +v 0.000000 1.687500 -2.750000 +v -0.125000 1.654006 -2.750000 +v -0.216506 1.562500 -2.750000 +v -0.250000 1.437500 -2.750000 +v -0.216506 1.312500 -2.750000 +v -0.125000 1.220994 -2.750000 +v 0.000000 1.187500 -2.750000 +v 0.125000 1.220994 -2.750000 +v 0.216506 1.312500 -2.750000 +v 0.250000 1.437500 -2.750000 +v 0.216506 1.562500 -2.750000 +v 0.125000 1.654006 -2.750000 +v 0.000000 1.625000 1.500000 +v -0.093750 1.599880 1.500000 +v -0.162380 1.531250 1.500000 +v -0.187500 1.437500 1.500000 +v -0.162380 1.343750 1.500000 +v -0.093750 1.275120 1.500000 +v 0.000000 1.250000 1.500000 +v 0.093750 1.275120 1.500000 +v 0.162380 1.343750 1.500000 +v 0.187500 1.437500 1.500000 +v 0.162380 1.531250 1.500000 +v 0.093750 1.599880 1.500000 +v 0.500000 -0.437500 -7.750000 +v -0.500000 -0.437500 -7.750000 +v 0.125000 -2.812500 -7.250000 +v -0.125000 -2.812500 -7.250000 +v -0.125000 -0.562500 -8.000000 +v 0.125000 -0.562500 -8.000000 +v 0.125000 0.062500 -8.000000 +v -0.125000 0.062500 -8.000000 +v 0.125000 -2.812500 -5.750000 +v -0.125000 -2.812500 -5.750000 +v 0.125000 -2.562500 -5.500000 +v -0.125000 -2.562500 -5.500000 +v 0.125000 -2.312500 -5.750000 +v -0.125000 -2.312500 -5.750000 +v -0.250000 -1.312500 -4.500000 +v 0.250000 -1.312500 -4.500000 +v -0.375000 -1.437500 -4.500000 +v 0.375000 -1.437500 -4.500000 +v -0.375000 -1.062500 -3.000000 +v 0.375000 -1.062500 -3.000000 +v -0.125000 0.312500 2.750000 +v 0.125000 0.312500 2.750000 +v -0.125000 0.312500 2.625000 +v 0.125000 0.312500 2.625000 +v -0.125000 0.687500 2.000000 +v 0.125000 0.687500 2.000000 +v -0.125000 0.687500 1.875000 +v 0.125000 0.687500 1.875000 +v -0.125000 1.250000 1.500000 +v 0.125000 1.250000 1.500000 +v -0.125000 1.250000 1.375000 +v 0.125000 1.250000 1.375000 +v -0.062500 0.312500 2.625000 +v 0.062500 0.312500 2.625000 +v -0.062500 0.687500 1.875000 +v 0.062500 0.687500 1.875000 +v -0.062500 1.250000 1.375000 +v 0.062500 1.250000 1.375000 +v -0.062500 0.437500 2.125000 +v 0.062500 0.437500 2.125000 +v -0.062500 0.687500 1.625000 +v 0.062500 0.687500 1.625000 +v -0.062500 1.250000 1.125000 +v 0.062500 1.250000 1.125000 +v -0.187500 1.437500 -0.750000 +v -0.162380 1.531250 -0.750000 +v -0.093750 1.599880 -0.750000 +v 0.000000 1.625000 -0.750000 +v -0.162380 1.343750 -0.750000 +v -0.093750 1.275120 -0.750000 +v 0.000000 1.250000 -0.750000 +v 0.093750 1.275120 -0.750000 +v 0.162380 1.343750 -0.750000 +v 0.187500 1.437500 -0.750000 +v 0.162380 1.531250 -0.750000 +v 0.093750 1.599880 -0.750000 +v 0.000000 1.687500 -1.250000 +v -0.125000 1.654006 -1.250000 +v -0.216506 1.562500 -1.250000 +v -0.250000 1.437500 -1.250000 +v -0.216506 1.312500 -1.250000 +v -0.125000 1.220994 -1.250000 +v 0.000000 1.187500 -1.250000 +v 0.125000 1.220994 -1.250000 +v 0.216506 1.312500 -1.250000 +v 0.250000 1.437500 -1.250000 +v 0.216506 1.562500 -1.250000 +v 0.125000 1.654006 -1.250000 +v -0.125000 0.312500 -0.125000 +v 0.125000 0.312500 -0.125000 +v -0.125000 0.312500 -0.250000 +v 0.125000 0.312500 -0.250000 +v 0.125000 0.562500 -0.125000 +v -0.125000 0.562500 -0.125000 +v -0.125000 0.562500 -0.250000 +v 0.125000 0.562500 -0.250000 +v 0.125000 0.812500 -0.375000 +v -0.125000 0.812500 -0.375000 +v -0.125000 0.812500 -0.500000 +v 0.125000 0.812500 -0.500000 +v 0.125000 1.187500 -1.250000 +v -0.125000 1.187500 -1.250000 +v -0.125000 1.187500 -1.375000 +v 0.125000 1.187500 -1.375000 +v -0.062500 0.312500 -0.125000 +v 0.062500 0.312500 -0.125000 +v -0.062500 0.312500 0.125000 +v 0.062500 0.312500 0.125000 +v -0.062500 0.562500 -0.125000 +v 0.062500 0.562500 -0.125000 +v -0.062500 0.562500 0.125000 +v 0.062500 0.562500 0.125000 +v -0.062500 0.812500 -0.375000 +v 0.062500 0.812500 -0.375000 +v -0.062500 0.812500 0.000000 +v 0.062500 0.812500 0.000000 +v -0.062500 1.187500 -1.250000 +v 0.062500 1.187500 -1.250000 +v -0.062500 1.250000 -0.500000 +v 0.062500 1.250000 -0.500000 +v 0.375000 -0.562500 -4.500000 +v -0.375000 -0.562500 -4.500000 +v 0.375000 -0.562500 -3.000000 +v -0.375000 -0.562500 -3.000000 +v -0.250000 -0.687500 1.750000 +v 0.250000 -0.687500 1.750000 +v -0.250000 -0.687500 0.750000 +v 0.250000 -0.687500 0.750000 +v -0.250000 -0.937500 1.250000 +v 0.250000 -0.937500 1.250000 +v -0.250000 -0.937500 0.875000 +v 0.250000 -0.937500 0.875000 +v -0.250000 -2.187500 0.000000 +v 0.250000 -2.187500 0.000000 +v -0.250000 -2.187500 0.375000 +v 0.250000 -2.187500 0.375000 +v -0.250000 -2.562500 -0.500000 +v 0.250000 -2.562500 -0.500000 +v -0.250000 -2.562500 -0.875000 +v 0.250000 -2.562500 -0.875000 +v -0.250000 -2.312500 -1.125000 +v 0.250000 -2.312500 -1.125000 +v -0.250000 -1.312500 -0.625000 +v 0.250000 -1.312500 -0.625000 +v -0.250000 -1.312500 -0.375000 +v 0.250000 -1.312500 -0.375000 +v -0.250000 -1.000000 -0.500000 +v 0.250000 -1.000000 -0.500000 +v -0.250000 -0.687500 -0.375000 +v 0.250000 -0.687500 -0.375000 +v -0.250000 -2.812500 -0.250000 +v 0.250000 -2.812500 -0.250000 +v -0.250000 -2.812500 -1.750000 +v 0.250000 -2.812500 -1.750000 +v -0.250000 -2.062500 -1.750000 +v 0.250000 -2.062500 -1.750000 +v -0.250000 -0.937500 -1.250000 +v 0.250000 -0.937500 -1.250000 +v -0.250000 -0.687500 -1.500000 +v 0.250000 -0.687500 -1.500000 +v 0.375000 -0.812500 -0.625000 +v 0.375000 -0.562500 -0.625000 +v 0.375000 -0.812500 -0.875000 +v 0.375000 -0.562500 -0.875000 +v 0.250000 -0.937500 -0.625000 +v 0.250000 -0.937500 -0.875000 +v 0.250000 -0.812500 -0.500000 +v 0.250000 -0.562500 -0.500000 +v 0.250000 -0.812500 -1.000000 +v 0.250000 -0.562500 -1.000000 +v -0.250000 -0.937500 -0.625000 +v -0.250000 -0.937500 -0.875000 +v -0.250000 -0.812500 -0.500000 +v -0.250000 -0.562500 -0.500000 +v -0.250000 -0.812500 -1.000000 +v -0.250000 -0.562500 -1.000000 +v -0.375000 -0.812500 -0.625000 +v -0.375000 -0.562500 -0.625000 +v -0.375000 -0.812500 -0.875000 +v -0.375000 -0.562500 -0.875000 +v -0.125000 -1.187500 -0.125000 +v 0.125000 -1.187500 -0.125000 +v -0.125000 -0.937500 -0.187500 +v 0.125000 -0.937500 -0.187500 +v -0.125000 -0.687500 -0.125000 +v 0.125000 -0.687500 -0.125000 +v -0.125000 -1.187500 -0.500000 +v 0.125000 -1.187500 -0.500000 +v -0.125000 -0.937500 -0.500000 +v 0.125000 -0.937500 -0.500000 +v -0.125000 -0.687500 -0.375000 +v 0.125000 -0.687500 -0.375000 +v 0.250000 -0.953125 -3.062500 +v -0.250000 -0.953125 -3.062500 +v -0.250000 -1.421875 -4.437500 +v -0.250000 -1.078125 -3.062500 +v 0.250000 -1.296875 -4.437500 +v -0.250000 -1.296875 -4.437500 +v 0.250000 -1.421875 -4.437500 +v 0.250000 -1.078125 -3.062500 +v -0.281250 -0.031250 -3.250000 +v -0.093750 0.281250 -3.250000 +v -0.093750 0.281250 -4.750000 +v -0.281250 -0.031250 -4.750000 +v -0.406250 -0.031250 -4.750000 +v -0.218750 0.281250 -4.750000 +v -0.218750 0.281250 -3.250000 +v -0.406250 -0.031250 -3.250000 +v -0.125000 -1.375000 -4.500000 +v 0.125000 -1.375000 -4.500000 +v -0.125000 -1.750000 -4.875000 +v 0.125000 -1.750000 -4.875000 +v -0.125000 -1.312500 -4.500000 +v 0.125000 -1.312500 -4.500000 +v -0.125000 -1.687500 -5.000000 +v 0.125000 -1.687500 -5.000000 +v 0.000000 1.687500 -2.250000 +v -0.125000 1.654006 -2.250000 +v -0.216506 1.562500 -2.250000 +v -0.250000 1.437500 -2.250000 +v -0.216506 1.312500 -2.250000 +v -0.125000 1.220994 -2.250000 +v 0.000000 1.187500 -2.250000 +v 0.125000 1.220994 -2.250000 +v 0.216506 1.312500 -2.250000 +v 0.250000 1.437500 -2.250000 +v 0.216506 1.562500 -2.250000 +v 0.125000 1.654006 -2.250000 +v -0.062500 0.312500 2.000000 +v 0.062500 0.312500 2.000000 +v 0.437500 -1.031250 -6.625000 +v 0.437500 -0.781250 -6.625000 +v -0.562500 -0.812500 -7.187500 +v 0.562500 -0.812500 -7.187500 +v -0.562500 -0.856694 -7.169194 +v 0.562500 -0.856694 -7.169194 +v -0.562500 -0.875000 -7.125000 +v 0.562500 -0.875000 -7.125000 +v -0.562500 -0.856694 -7.080806 +v 0.562500 -0.856694 -7.080806 +v -0.562500 -0.812500 -7.062500 +v 0.562500 -0.812500 -7.062500 +v -0.562500 -0.768306 -7.080806 +v 0.562500 -0.768306 -7.080806 +v -0.562500 -0.750000 -7.125000 +v 0.562500 -0.750000 -7.125000 +v -0.562500 -0.768306 -7.169194 +v 0.562500 -0.768306 -7.169194 +v 0.437500 -0.781250 -7.625000 +v 0.437500 -1.031250 -7.625000 +v 0.437500 -0.968750 -7.562500 +v 0.437500 -0.843750 -7.562500 +v 0.437500 -0.968750 -6.687500 +v 0.437500 -0.843750 -6.687500 +v 0.500000 -0.968750 -7.562500 +v 0.500000 -0.843750 -7.562500 +v 0.500000 -0.968750 -6.687500 +v 0.500000 -0.843750 -6.687500 +v 0.500000 -1.031250 -7.625000 +v 0.500000 -0.781250 -7.625000 +v 0.500000 -1.031250 -6.625000 +v 0.500000 -0.781250 -6.625000 +v 0.417387 0.411639 2.581886 +v 0.292387 0.320139 2.778107 +v -0.573638 0.531448 2.324953 +v -0.448637 0.622948 2.128732 +v -0.425761 0.586866 2.206109 +v -0.488261 0.541116 2.304220 +v 0.332011 0.401971 2.602619 +v 0.269511 0.356221 2.700729 +v -0.425761 0.643510 2.232523 +v -0.488261 0.597761 2.330633 +v 0.332011 0.458615 2.629033 +v 0.269511 0.412865 2.727143 +v -0.448637 0.679592 2.155145 +v -0.573638 0.588092 2.351367 +v 0.417387 0.468283 2.608299 +v 0.292387 0.376783 2.804521 +v -0.250000 -0.687500 -0.250000 +v 0.250000 -0.687500 -0.250000 +v -0.500000 -0.437500 -0.250000 +v 0.500000 -0.437500 -0.250000 +v -0.125000 1.687500 -2.615000 +v 0.125000 1.687500 -2.615000 +v 0.062500 1.875000 -2.615000 +v 0.062500 1.812500 -2.615000 +v -0.062500 1.812500 -2.615000 +v -0.062500 1.875000 -2.615000 +v -0.125000 1.875000 -2.615000 +v 0.125000 1.875000 -2.615000 +v 0.250000 1.625000 -2.615000 +v 0.250000 1.562500 -2.615000 +v -0.187500 1.625000 -2.615000 +v 0.125000 1.687500 -2.740000 +v -0.125000 1.687500 -2.740000 +v -0.187500 1.625000 -2.740000 +v 0.250000 1.562500 -2.740000 +v 0.250000 1.625000 -2.740000 +v 0.125000 1.875000 -2.740000 +v -0.125000 1.875000 -2.740000 +v -0.062500 1.875000 -2.740000 +v -0.062500 1.812500 -2.740000 +v 0.062500 1.812500 -2.740000 +v 0.062500 1.875000 -2.740000 +v -0.062500 1.875000 1.490000 +v 0.062500 1.875000 1.490000 +v 0.062500 1.750000 1.490000 +v -0.062500 1.750000 1.490000 +v 0.125000 1.687500 1.490000 +v 0.125000 1.625000 1.490000 +v -0.125000 1.687500 1.490000 +v -0.125000 1.625000 1.490000 +v -0.125000 1.625000 1.365000 +v -0.125000 1.687500 1.365000 +v 0.125000 1.625000 1.365000 +v 0.125000 1.687500 1.365000 +v -0.062500 1.750000 1.365000 +v 0.062500 1.750000 1.365000 +v 0.062500 1.875000 1.365000 +v -0.062500 1.875000 1.365000 +v -0.250000 1.625000 -2.615000 +v -0.250000 1.625000 -2.740000 +v -0.250000 1.562500 -2.615000 +v -0.250000 1.562500 -2.740000 +v -0.000000 1.125000 0.250000 +v 0.088388 1.125000 0.286612 +v 0.125000 1.125000 0.375000 +v 0.088388 1.125000 0.463388 +v -0.000000 1.125000 0.500000 +v -0.088388 1.125000 0.463388 +v -0.125000 1.125000 0.375000 +v -0.088388 1.125000 0.286612 +v 0.088388 1.250000 0.286612 +v -0.000000 1.250000 0.250000 +v 0.125000 1.250000 0.375000 +v 0.088388 1.250000 0.463388 +v -0.000000 1.250000 0.500000 +v -0.088388 1.250000 0.463388 +v -0.125000 1.250000 0.375000 +v -0.088388 1.250000 0.286612 +v -0.312500 1.437500 0.250000 +v -0.312500 1.349112 0.286612 +v -0.312500 1.312500 0.375000 +v -0.312500 1.349112 0.463388 +v -0.312500 1.437500 0.500000 +v -0.312500 1.525888 0.463388 +v -0.312500 1.562500 0.375000 +v -0.312500 1.525888 0.286612 +v -0.187500 1.349112 0.286612 +v -0.187500 1.437500 0.250000 +v -0.187500 1.312500 0.375000 +v -0.187500 1.349112 0.463388 +v -0.187500 1.437500 0.500000 +v -0.187500 1.525888 0.463388 +v -0.187500 1.562500 0.375000 +v -0.187500 1.525888 0.286612 +v 0.220971 1.658471 0.250000 +v 0.158471 1.720971 0.286612 +v 0.132583 1.746859 0.375000 +v 0.158471 1.720971 0.463388 +v 0.220971 1.658471 0.500000 +v 0.283471 1.595971 0.463388 +v 0.309359 1.570082 0.375000 +v 0.283471 1.595971 0.286612 +v 0.070083 1.632582 0.286612 +v 0.132583 1.570082 0.250000 +v 0.044194 1.658471 0.375000 +v 0.070083 1.632582 0.463388 +v 0.132583 1.570082 0.500000 +v 0.195083 1.507582 0.463388 +v 0.220971 1.481694 0.375000 +v 0.195083 1.507582 0.286612 +vt 0.060606 0.240964 +vt 0.242424 0.289157 +vt 0.060606 0.289157 +vt 0.060606 0.530120 +vt 0.242424 0.506024 +vt 0.242424 0.530120 +vt 0.250000 0.433735 +vt 0.522727 0.448795 +vt 0.704545 0.433735 +vt 0.060606 0.481928 +vt 0.060606 0.506024 +vt 0.242424 0.337349 +vt 0.060606 0.313253 +vt 0.242424 0.313253 +vt 0.000000 0.337349 +vt 0.000000 0.313253 +vt 0.689394 0.493976 +vt 0.250000 0.433735 +vt 0.704545 0.433735 +vt 0.045455 0.289157 +vt 0.060606 0.337349 +vt 0.022727 0.385542 +vt 0.242424 0.397590 +vt 0.060606 0.397590 +vt 0.060606 0.421687 +vt 0.242424 0.481928 +vt 0.242424 0.421687 +vt 0.250000 0.493976 +vt 0.242424 0.518072 +vt 0.242424 0.493976 +vt 0.242424 0.493976 +vt 0.250000 0.493976 +vt 0.250000 0.518072 +vt 0.689394 0.518072 +vt 0.643939 0.566265 +vt 0.640152 0.578313 +vt 0.640152 0.566265 +vt 0.643939 0.590361 +vt 0.640152 0.590361 +vt 0.640152 0.602410 +vt 0.643939 0.602410 +vt 0.640152 0.614458 +vt 0.643939 0.614458 +vt 0.640152 0.626506 +vt 0.643939 0.638554 +vt 0.640152 0.638554 +vt 0.643939 0.650602 +vt 0.640152 0.650602 +vt 0.640152 0.662651 +vt 0.643939 0.518072 +vt 0.640152 0.530120 +vt 0.640152 0.518072 +vt 0.643939 0.530120 +vt 0.640152 0.542169 +vt 0.643939 0.542169 +vt 0.640152 0.554217 +vt 0.382576 0.578313 +vt 0.378788 0.566265 +vt 0.382576 0.566265 +vt 0.378788 0.554217 +vt 0.382576 0.554217 +vt 0.382576 0.542169 +vt 0.378788 0.542169 +vt 0.382576 0.530120 +vt 0.378788 0.530120 +vt 0.378788 0.518072 +vt 0.382576 0.518072 +vt 0.382576 0.662651 +vt 0.378788 0.650602 +vt 0.382576 0.650602 +vt 0.378788 0.638554 +vt 0.382576 0.638554 +vt 0.378788 0.626506 +vt 0.382576 0.626506 +vt 0.382576 0.614458 +vt 0.378788 0.614458 +vt 0.382576 0.602410 +vt 0.378788 0.602410 +vt 0.378788 0.590361 +vt 0.382576 0.590361 +vt 0.378788 0.578313 +vt 0.136364 0.530120 +vt 0.143939 0.668675 +vt 0.136364 0.674699 +vt 0.712121 0.662651 +vt 0.704545 0.698795 +vt 0.704545 0.662651 +vt 0.681818 0.662651 +vt 0.689394 0.698795 +vt 0.681818 0.698795 +vt 0.689394 0.753012 +vt 0.681818 0.753012 +vt 0.712121 0.698795 +vt 0.704545 0.753012 +vt 0.715909 0.753012 +vt 0.731061 0.698795 +vt 0.731061 0.753012 +vt 0.715909 0.698795 +vt 0.731061 0.674699 +vt 0.689394 0.753012 +vt 0.681818 0.777108 +vt 0.681818 0.753012 +vt 0.678030 0.753012 +vt 0.662879 0.698795 +vt 0.678030 0.698795 +vt 0.662879 0.674699 +vt 0.678030 0.662651 +vt 0.712121 0.753012 +vt 0.704545 0.777108 +vt 0.704545 0.753012 +vt 0.678030 0.777108 +vt 0.662879 0.753012 +vt 0.678030 0.753012 +vt 0.689394 0.777108 +vt 0.681818 0.801205 +vt 0.712121 0.801205 +vt 0.704545 0.801205 +vt 0.731061 0.777108 +vt 0.715909 0.753012 +vt 0.731061 0.753012 +vt 0.712121 0.843373 +vt 0.704545 0.843373 +vt 0.689394 0.801205 +vt 0.681818 0.843373 +vt 0.655303 0.801205 +vt 0.662879 0.777108 +vt 0.738636 0.801205 +vt 0.715909 0.777108 +vt 0.678030 0.801205 +vt 0.632576 0.849398 +vt 0.761364 0.849398 +vt 0.715909 0.801205 +vt 0.325758 0.385542 +vt 0.704545 0.409639 +vt 0.325758 0.409639 +vt 0.704545 0.409639 +vt 0.325758 0.385542 +vt 0.325758 0.409639 +vt 0.136364 0.759036 +vt 0.045455 0.710843 +vt 0.045455 0.759036 +vt -0.000000 0.710843 +vt 0.272727 0.710843 +vt 0.181818 0.759036 +vt 0.181818 0.674699 +vt 0.359848 0.915663 +vt 0.329545 0.891566 +vt 0.299242 0.915663 +vt 0.359848 0.915663 +vt 0.329545 0.891566 +vt 0.352273 0.891566 +vt 0.352273 0.891566 +vt 0.382576 0.771084 +vt 0.382576 0.771084 +vt 0.405303 0.771084 +vt 0.420455 0.710843 +vt 0.420455 0.710843 +vt 0.405303 0.771084 +vt 0.458333 0.734940 +vt 0.511364 0.710843 +vt 0.511364 0.710843 +vt 0.458333 0.734940 +vt 0.428030 0.855422 +vt 0.435606 0.885542 +vt 0.443182 0.855422 +vt 0.428030 0.855422 +vt 0.443182 0.855422 +vt 0.435606 0.885542 +vt 0.428030 0.915663 +vt 0.481061 0.891566 +vt 0.481061 0.891566 +vt 0.428030 0.915663 +vt 0.511364 0.783133 +vt 0.473485 0.759036 +vt 0.295455 0.777108 +vt 0.272727 0.746988 +vt 0.295455 0.746988 +vt 0.280303 0.807229 +vt 0.276515 0.777108 +vt 0.310606 0.777108 +vt 0.333333 0.746988 +vt 0.329545 0.777108 +vt 0.325758 0.807229 +vt 0.310606 0.807229 +vt 0.310606 0.710843 +vt 0.310606 0.746988 +vt 0.174242 0.536145 +vt 0.166667 0.668675 +vt 0.166667 0.536145 +vt 0.143939 0.548193 +vt 0.143939 0.536145 +vt 0.174242 0.656627 +vt 0.174242 0.668675 +vt 0.151515 0.668675 +vt 0.181818 0.530120 +vt 0.295455 0.186747 +vt 0.287879 0.156627 +vt 0.295455 0.156627 +vt 0.196970 0.156627 +vt 0.287879 0.186747 +vt 0.196970 0.186747 +vt 0.196970 0.198795 +vt 0.287879 0.198795 +vt 0.287879 0.144578 +vt 0.196970 0.144578 +vt 0.431818 0.448795 +vt 0.189394 0.186747 +vt 0.689394 0.493976 +vt 0.431818 0.478916 +vt 0.522727 0.478916 +vt 0.170455 0.156627 +vt 0.140152 0.180723 +vt 0.140152 0.156627 +vt 0.178030 0.156627 +vt 0.170455 0.180723 +vt 0.174242 0.144578 +vt 0.136364 0.150602 +vt 0.174242 0.192771 +vt 0.830355 0.927716 +vt 0.909091 0.710833 +vt 0.987826 0.927716 +vt 0.640152 0.662651 +vt 0.715909 0.662651 +vt 0.753788 0.662651 +vt 0.071968 0.951608 +vt 0.068305 0.945782 +vt 0.071968 0.939956 +vt 0.087121 0.909639 +vt 0.075758 0.915663 +vt 0.079545 0.909639 +vt 0.071969 0.939389 +vt 0.069456 0.937733 +vt 0.074483 0.929738 +vt 0.075758 0.921687 +vt 0.087121 0.927711 +vt 0.079545 0.927711 +vt 0.090909 0.921687 +vt 0.147727 0.927711 +vt 0.094697 0.927711 +vt -0.000000 0.921687 +vt 0.011364 0.927711 +vt 0.003788 0.927711 +vt 0.015152 0.921687 +vt 0.071970 0.927711 +vt 0.018939 0.927711 +vt 0.147727 0.909639 +vt 0.090909 0.915663 +vt 0.094697 0.909639 +vt 0.011364 0.909639 +vt -0.000000 0.915663 +vt 0.003788 0.909639 +vt 0.071970 0.909639 +vt 0.015152 0.915663 +vt 0.018939 0.909639 +vt 0.071970 0.903614 +vt 0.018939 0.903614 +vt 0.011364 0.903614 +vt 0.003788 0.903614 +vt 0.147727 0.903614 +vt 0.094697 0.903614 +vt 0.087121 0.903614 +vt 0.079545 0.903614 +vt 0.151515 0.915663 +vt 0.151515 0.921687 +vt 0.011364 0.909639 +vt -0.000000 0.915663 +vt 0.003788 0.909639 +vt -0.000000 0.921687 +vt 0.011364 0.927711 +vt 0.003788 0.927711 +vt 0.018939 0.927711 +vt 0.075758 0.921687 +vt 0.071970 0.927711 +vt 0.087121 0.927711 +vt 0.079545 0.927711 +vt 0.090909 0.921687 +vt 0.147727 0.927711 +vt 0.094697 0.927711 +vt 0.018939 0.909639 +vt 0.075758 0.915663 +vt 0.015152 0.915663 +vt 0.079545 0.909639 +vt 0.090909 0.915663 +vt 0.147727 0.909639 +vt 0.094697 0.909639 +vt 0.147727 0.903614 +vt 0.094697 0.903614 +vt 0.087121 0.903614 +vt 0.079545 0.903614 +vt 0.015152 0.921687 +vt 0.018939 0.903614 +vt 0.071970 0.909639 +vt 0.011364 0.903614 +vt 0.003788 0.903614 +vt 0.151515 0.921687 +vt 0.151515 0.915663 +vt 0.250000 0.409639 +vt 0.250000 0.385542 +vt 0.250000 0.409639 +vt 0.776515 0.885542 +vt 0.784091 0.891566 +vt 0.776515 0.891566 +vt 0.776515 0.879518 +vt 0.784091 0.885542 +vt 0.746212 0.891566 +vt 0.738636 0.885542 +vt 0.746212 0.885542 +vt 0.738636 0.879518 +vt 0.746212 0.879518 +vt 0.746212 0.903614 +vt 0.738636 0.891566 +vt 0.746212 0.855422 +vt 0.738636 0.849398 +vt 0.746212 0.849398 +vt 0.738636 0.855422 +vt 0.791667 0.777108 +vt 0.784091 0.765060 +vt 0.791667 0.765060 +vt 0.806818 0.759036 +vt 0.814394 0.765060 +vt 0.806818 0.765060 +vt 0.814394 0.777108 +vt 0.806818 0.777108 +vt 0.784091 0.789157 +vt 0.791667 0.789157 +vt 0.806818 0.753012 +vt 0.814394 0.759036 +vt 0.784091 0.759036 +vt 0.791667 0.759036 +vt 0.803030 0.765060 +vt 0.795455 0.765060 +vt 0.784091 0.753012 +vt 0.791667 0.753012 +vt 0.780303 0.765060 +vt 0.772727 0.765060 +vt 0.784091 0.855422 +vt 0.784091 0.879518 +vt 0.776515 0.855422 +vt 0.784091 0.849398 +vt 0.715909 0.861446 +vt 0.731061 0.861446 +vt 0.719697 0.873494 +vt 0.765152 0.873494 +vt 0.757576 0.873494 +vt 0.753788 0.861446 +vt 0.776515 0.789274 +vt 0.784017 0.801205 +vt 0.776515 0.813136 +vt 0.771210 0.792768 +vt 0.776515 0.789274 +vt 0.776515 0.813136 +vt 0.769013 0.801205 +vt 0.771210 0.792768 +vt 0.776515 0.789274 +vt 0.242424 0.240964 +vt 0.015152 0.289157 +vt 0.037879 0.385542 +vt 0.643939 0.578313 +vt 0.643939 0.626506 +vt 0.643939 0.662651 +vt 0.643939 0.554217 +vt 0.378788 0.662651 +vt 0.689394 0.662651 +vt 0.712121 0.753012 +vt 0.662879 0.753012 +vt 0.712121 0.777108 +vt 0.689394 0.843373 +vt 0.678030 0.843373 +vt 0.715909 0.843373 +vt -0.000000 0.759036 +vt 0.272727 0.759036 +vt 0.299242 0.915663 +vt 0.435606 0.734940 +vt 0.435606 0.734940 +vt 0.473485 0.759036 +vt 0.496212 0.915663 +vt 0.496212 0.915663 +vt 0.511364 0.783133 +vt 0.295455 0.807229 +vt 0.295455 0.710843 +vt 0.174242 0.548193 +vt 0.143939 0.656627 +vt 0.151515 0.536145 +vt 0.189394 0.156627 +vt 0.178030 0.180723 +vt 0.136364 0.186747 +vt 0.954549 0.980639 +vt 0.909091 1.000011 +vt 0.863633 0.980639 +vt 0.818175 0.855421 +vt 0.830355 0.783127 +vt 0.863633 0.730204 +vt 0.954549 0.730204 +vt 0.987826 0.783127 +vt 1.000007 0.855422 +vt 0.074559 0.941663 +vt 0.075631 0.945782 +vt 0.074559 0.949902 +vt 0.069378 0.949902 +vt 0.069378 0.941663 +vt 0.068414 0.933736 +vt 0.069456 0.929738 +vt 0.071969 0.928082 +vt 0.075524 0.933736 +vt 0.074483 0.937733 +vt 0.087121 0.909639 +vt 0.071970 0.903614 +vt 0.250000 0.385542 +vt 0.738636 0.903614 +vt 0.784091 0.777108 +vt 0.814394 0.753012 +vt 0.803030 0.777108 +vt 0.795455 0.777108 +vt 0.780303 0.777108 +vt 0.772727 0.777108 +vt 0.768939 0.759036 +vt 0.768939 0.753012 +vt 0.776515 0.849398 +vt 0.708333 0.849398 +vt 0.712121 0.855422 +vt 0.708333 0.855422 +vt 0.731061 0.879518 +vt 0.715909 0.879518 +vt 0.727273 0.873494 +vt 0.727273 0.879518 +vt 0.719697 0.879518 +vt 0.768939 0.861446 +vt 0.772727 0.855422 +vt 0.768939 0.879518 +vt 0.765152 0.879518 +vt 0.757576 0.879518 +vt 0.753788 0.879518 +vt 0.781820 0.792768 +vt 0.781820 0.809641 +vt 0.771210 0.809641 +vt 0.769013 0.801205 +vt 0.771210 0.792768 +vt 0.781820 0.792768 +vt 0.784017 0.801205 +vt 0.781820 0.809641 +vt 0.771210 0.809641 +vt 0.769013 0.801205 +vt 0.781820 0.792768 +vt 0.784017 0.801205 +vt 0.781820 0.809641 +vt 0.776515 0.813136 +vt 0.771210 0.809641 +vt 0.295455 0.192771 +vt 0.477273 0.144578 +vt 0.477273 0.192771 +vt 0.518939 0.614458 +vt 0.518939 0.554217 +vt 0.518939 0.518072 +vt 0.518939 0.626506 +vt 0.518939 0.566265 +vt 0.518939 0.590361 +vt 0.518939 0.530120 +vt 0.518939 0.638554 +vt 0.518939 0.578313 +vt 0.518939 0.602410 +vt 0.518939 0.542169 +vt 0.518939 0.650602 +vt 0.549242 0.554217 +vt 0.549242 0.578313 +vt 0.549242 0.590361 +vt 0.549242 0.614458 +vt 0.549242 0.626506 +vt 0.549242 0.638554 +vt 0.549242 0.650602 +vt 0.518939 0.662651 +vt 0.549242 0.518072 +vt 0.549242 0.530120 +vt 0.549242 0.542169 +vt 0.549242 0.566265 +vt 0.549242 0.602410 +vt 0.549242 0.662651 +vt 0.742424 0.493976 +vt 0.742424 0.457831 +vt 0.765152 0.433735 +vt 0.742424 0.180723 +vt 0.765152 0.409639 +vt 0.742424 0.397590 +vt 0.727273 0.457831 +vt 0.727273 0.397590 +vt 0.727273 0.180723 +vt 0.242424 0.554217 +vt 0.727273 0.493976 +vt 0.242424 0.614458 +vt 0.242424 0.650602 +vt 0.242424 0.542169 +vt 0.242424 0.602410 +vt 0.242424 0.578313 +vt 0.242424 0.638554 +vt 0.242424 0.530120 +vt 0.242424 0.590361 +vt 0.242424 0.566265 +vt 0.242424 0.626506 +vt 0.242424 0.518072 +vt 0.674242 0.180723 +vt 0.583333 0.156627 +vt 0.674242 0.156627 +vt 0.583333 0.180723 +vt 0.568182 0.156627 +vt 0.568182 0.180723 +vt 0.553030 0.156627 +vt 0.553030 0.180723 +vt 0.761364 0.674699 +vt 0.753788 0.698795 +vt 0.753788 0.674699 +vt 0.761364 0.698795 +vt 0.753788 0.753012 +vt 0.734848 0.638554 +vt 0.734848 0.578313 +vt 0.734848 0.602410 +vt 0.734848 0.542169 +vt 0.734848 0.650602 +vt 0.734848 0.590361 +vt 0.734848 0.614458 +vt 0.734848 0.554217 +vt 0.734848 0.662651 +vt 0.734848 0.626506 +vt 0.734848 0.566265 +vt 0.734848 0.530120 +vt 0.765152 0.662651 +vt 0.765152 0.650602 +vt 0.765152 0.638554 +vt 0.765152 0.626506 +vt 0.765152 0.614458 +vt 0.765152 0.602410 +vt 0.765152 0.590361 +vt 0.765152 0.578313 +vt 0.765152 0.566265 +vt 0.765152 0.554217 +vt 0.765152 0.542169 +vt 0.765152 0.530120 +vt 0.734848 0.518072 +vt 0.765152 0.518072 +vt 0.768939 0.777108 +vt 0.761364 0.753012 +vt 0.768939 0.753012 +vt 0.768939 0.801205 +vt 0.761364 0.777108 +vt 0.768939 0.849398 +vt 0.761364 0.801205 +vt 0.583333 0.180723 +vt 0.583333 0.228916 +vt 0.674242 0.180723 +vt 0.583333 0.228916 +vt 0.507576 0.325301 +vt 0.507576 0.325301 +vt 0.276515 0.915663 +vt 0.291667 0.963855 +vt 0.276515 0.963855 +vt 0.306818 0.662651 +vt 0.276515 0.710843 +vt 0.276515 0.662651 +vt 0.291667 0.915663 +vt 0.367424 0.963855 +vt 0.412879 0.915663 +vt 0.397727 0.963855 +vt 0.397727 0.915663 +vt 0.382576 0.662651 +vt 0.306818 0.710843 +vt 0.367424 0.915663 +vt 0.428030 0.963855 +vt 0.412879 0.963855 +vt 0.428030 0.915663 +vt 0.488636 0.963855 +vt 0.488636 0.915663 +vt 0.503788 0.963855 +vt 0.503788 0.915663 +vt 0.522727 0.963855 +vt 0.522727 0.915663 +vt 0.541667 0.963855 +vt 0.420455 0.662651 +vt 0.382576 0.710843 +vt 0.511364 0.662651 +vt 0.556818 0.710843 +vt 0.556818 0.662651 +vt 0.625000 0.710843 +vt 0.625000 0.662651 +vt 0.640152 0.710843 +vt 0.772727 0.608434 +vt 0.787879 0.596386 +vt 0.787879 0.608434 +vt 0.772727 0.632530 +vt 0.765152 0.608434 +vt 0.795455 0.608434 +vt 0.787879 0.632530 +vt 0.772727 0.596386 +vt 0.795455 0.632530 +vt 0.787879 0.608434 +vt 0.795455 0.608434 +vt 0.772727 0.608434 +vt 0.765152 0.632530 +vt 0.765152 0.608434 +vt 0.787879 0.596386 +vt 0.772727 0.596386 +vt 0.761364 0.662651 +vt 0.000000 0.939759 +vt 0.068182 0.933735 +vt 0.068182 0.939759 +vt 0.000000 0.933735 +vt 0.068182 0.927711 +vt 0.000000 0.975904 +vt 0.068182 0.969880 +vt 0.068182 0.975904 +vt 0.000000 0.969880 +vt 0.068182 0.963855 +vt 0.000000 0.963855 +vt 0.068182 0.957831 +vt 0.000000 0.957831 +vt 0.068182 0.951807 +vt 0.000000 0.951807 +vt 0.068182 0.945783 +vt 0.000000 0.945783 +vt 0.325758 0.337349 +vt 0.784091 0.801205 +vt 0.791667 0.813253 +vt 0.784091 0.813253 +vt 0.784091 0.873494 +vt 0.791667 0.885542 +vt 0.784091 0.885542 +vt 0.784091 0.849398 +vt 0.791667 0.861446 +vt 0.784091 0.861446 +vt 0.784091 0.825301 +vt 0.791667 0.837349 +vt 0.784091 0.837349 +vt 0.784091 0.789157 +vt 0.791667 0.801205 +vt 0.791667 0.873494 +vt 0.791667 0.849398 +vt 0.791667 0.825301 +vt 0.784091 0.801205 +vt 0.791667 0.813253 +vt 0.784091 0.813253 +vt 0.784091 0.873494 +vt 0.791667 0.885542 +vt 0.784091 0.885542 +vt 0.784091 0.849398 +vt 0.791667 0.861446 +vt 0.784091 0.861446 +vt 0.784091 0.825301 +vt 0.791667 0.837349 +vt 0.784091 0.837349 +vt 0.784091 0.789157 +vt 0.791667 0.801205 +vt 0.791667 0.873494 +vt 0.791667 0.849398 +vt 0.791667 0.825301 +vt 0.784091 0.813253 +vt 0.791667 0.801205 +vt 0.791667 0.813253 +vt 0.784091 0.885542 +vt 0.791667 0.873494 +vt 0.791667 0.885542 +vt 0.784091 0.849398 +vt 0.791667 0.861446 +vt 0.784091 0.861446 +vt 0.784091 0.837349 +vt 0.791667 0.825301 +vt 0.791667 0.837349 +vt 0.784091 0.801205 +vt 0.791667 0.789157 +vt 0.784091 0.873494 +vt 0.791667 0.849398 +vt 0.784091 0.825301 +vt 0.295455 0.144578 +vt 0.242424 0.662651 +vt 0.761364 0.753012 +vt 0.568182 0.204819 +vt 0.568182 0.204819 +vt 0.541667 0.915663 +vt 0.640152 0.662651 +vt 0.765152 0.632530 +vt 0.795455 0.632530 +vt 0.787879 0.632530 +vt 0.772727 0.632530 +vt 0.000000 0.927711 +vt 0.250000 0.337349 +vt 0.791667 0.789157 +vt 0.791667 0.789157 +vt 0.784091 0.789157 +vn 0.0000 -1.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.8575 0.5145 0.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.8575 0.5145 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.8000 0.6000 0.0000 +vn -0.8000 0.6000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.9701 0.2425 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.8944 -0.4472 +vn 0.0000 0.9063 0.4226 +vn 0.0000 -0.9063 -0.4226 +vn 0.5000 0.3660 -0.7849 +vn 0.8660 -0.2113 0.4532 +vn -0.8660 0.2113 -0.4532 +vn -0.5000 -0.3660 0.7849 +vn 0.8944 0.4472 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.8944 0.4472 0.0000 +vn 0.0000 -0.9947 0.1025 +vn 0.0000 -0.9073 0.4205 +vn -0.8660 0.5000 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.9923 -0.0000 0.1240 +vn 0.8593 0.4961 0.1240 +vn 0.4961 0.8593 0.1240 +vn 0.0000 0.9923 0.1240 +vn -0.4961 0.8593 0.1240 +vn -0.8593 0.4961 0.1240 +vn -0.9923 0.0000 0.1240 +vn -0.8593 -0.4961 0.1240 +vn -0.4961 -0.8593 0.1240 +vn 0.0000 -0.9923 0.1240 +vn 0.4961 -0.8593 0.1240 +vn 0.8593 -0.4961 0.1240 +vn -0.2300 0.7786 -0.5839 +vn -0.3299 0.4380 -0.8363 +vn -0.6301 0.1931 -0.7521 +vn -0.0656 -0.3155 -0.9466 +vn -0.5758 -0.1060 -0.8107 +vn -0.2968 -0.1599 -0.9415 +vn 0.3299 0.4380 -0.8363 +vn 0.2968 -0.1599 -0.9415 +vn 0.5758 -0.1060 -0.8107 +vn 0.0656 -0.3155 -0.9466 +vn -0.9980 -0.0000 -0.0628 +vn 0.6301 0.1931 -0.7521 +vn 0.2300 0.7786 -0.5839 +vn 0.8643 -0.4990 -0.0628 +vn 0.4990 0.8643 -0.0628 +vn -0.8643 0.4990 -0.0628 +vn 0.4990 -0.8643 -0.0628 +vn -0.4990 -0.8643 -0.0628 +vn 0.8643 0.4990 -0.0628 +vn -0.4990 0.8643 -0.0628 +vn -0.0000 -0.9980 -0.0628 +vn -0.8643 -0.4990 -0.0628 +vn 0.9980 0.0000 -0.0628 +vn 0.0000 0.9980 -0.0628 +vn 0.0000 -0.9239 0.3827 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.7809 0.6247 +vn 0.0000 0.7937 0.6083 +vn 0.0000 0.8944 0.4472 +vn 0.0000 -0.6644 -0.7474 +vn 0.0000 -0.7937 -0.6083 +vn 0.0000 0.6644 0.7474 +vn 0.0000 -0.1602 -0.9871 +vn 0.0000 -0.3827 -0.9239 +vn 0.8644 0.4991 -0.0615 +vn -0.4991 -0.8644 -0.0615 +vn 0.4991 -0.8644 -0.0615 +vn -0.8644 0.4991 -0.0615 +vn 0.4991 0.8644 -0.0615 +vn -0.0000 -0.9981 -0.0615 +vn 0.8644 -0.4991 -0.0615 +vn -0.9981 -0.0000 -0.0615 +vn -0.0000 0.9981 -0.0615 +vn 0.9981 0.0000 -0.0615 +vn -0.8644 -0.4991 -0.0615 +vn -0.4991 0.8644 -0.0615 +vn 0.0000 0.2298 0.9732 +vn 0.0000 -0.8281 -0.5606 +vn 0.0000 -0.9191 -0.3939 +vn 0.0000 0.6114 0.7913 +vn 0.0000 0.7526 0.6585 +vn 0.0000 0.9191 0.3939 +vn 0.0000 0.8281 0.5606 +vn 0.0000 0.3827 0.9239 +vn -0.9956 -0.0906 0.0222 +vn -0.9920 -0.1196 0.0399 +vn 0.9956 -0.0906 0.0222 +vn 0.9920 -0.1196 0.0399 +vn -0.9872 -0.1545 0.0398 +vn -0.9866 -0.1600 0.0328 +vn 0.9872 -0.1545 0.0398 +vn 0.9866 -0.1600 0.0328 +vn 0.9867 -0.1589 0.0331 +vn -0.9867 -0.1589 0.0331 +vn 0.0000 -0.4472 -0.8944 +vn 0.0000 0.0735 -0.9973 +vn 0.0000 -0.7571 0.6532 +vn 0.0000 -0.8944 0.4472 +vn 0.0000 0.6954 -0.7186 +vn 0.0000 0.9239 0.3827 +vn 0.0000 0.9487 -0.3162 +vn 0.0000 -0.6427 0.7661 +vn 0.0000 0.1602 0.9871 +vn 0.0000 -0.8507 0.5257 +vn 0.0000 0.3714 0.9285 +vn 0.0000 -0.3714 0.9285 +vn 0.0000 0.2076 -0.9782 +vn 0.0000 -0.1826 -0.9832 +vn 0.0000 -0.7071 -0.7071 +vn 0.7588 -0.4606 0.4606 +vn 0.6861 -0.6861 -0.2418 +vn 0.7588 -0.4606 -0.4606 +vn 0.7071 0.0000 0.7071 +vn 0.6861 -0.2418 0.6861 +vn 0.6861 -0.2418 -0.6861 +vn 0.7071 0.0000 -0.7071 +vn 0.6861 -0.6861 0.2418 +vn -0.7071 0.0000 0.7071 +vn -0.7588 -0.4606 0.4606 +vn -0.6861 -0.2418 0.6861 +vn -0.7588 -0.4606 -0.4606 +vn -0.7071 0.0000 -0.7071 +vn -0.6861 -0.2418 -0.6861 +vn -0.6861 -0.6861 0.2418 +vn -0.6861 -0.6861 -0.2418 +vn 0.0000 0.2425 0.9701 +vn 0.0000 -0.2425 0.9701 +vn 0.0000 0.7071 -0.7071 +vn 0.5000 -0.5000 -0.7071 +vn 0.5000 -0.5000 0.7071 +vn -0.5000 0.5000 0.7071 +vn -0.5000 0.5000 -0.7071 +s off +f 581/910/220 926/911/220 582/912/220 +f 581/913/221 927/914/221 925/915/221 +f 589/916/222 851/917/222 575/918/222 +f 585/919/223 927/914/223 583/920/223 +f 590/921/224 584/922/224 928/923/224 +f 584/922/225 585/924/225 583/925/225 +f 574/926/226 590/927/226 576/928/226 +f 582/912/227 928/923/227 584/922/227 +f 583/925/225 582/929/225 584/922/225 +f 586/930/225 587/931/225 585/924/225 +f 586/930/228 592/932/228 588/933/228 +f 587/934/229 589/935/229 585/919/229 +f 588/933/230 591/936/230 587/934/230 +f 594/937/225 591/938/225 592/939/225 +f 592/939/225 590/927/225 594/937/225 +f 589/916/225 591/940/225 593/941/225 +f 593/942/230 574/926/230 573/943/230 +f 653/944/231 642/945/231 641/946/231 +f 642/945/231 643/947/231 631/948/231 +f 643/947/231 632/949/231 631/948/231 +f 644/950/231 633/951/231 632/949/231 +f 645/952/231 634/953/231 633/951/231 +f 634/953/231 647/954/231 635/955/231 +f 635/955/231 648/956/231 636/957/231 +f 648/956/231 637/958/231 636/957/231 +f 649/959/231 638/960/231 637/961/231 +f 650/962/231 639/963/231 638/960/231 +f 651/964/231 640/965/231 639/963/231 +f 640/965/231 653/944/231 641/946/231 +f 606/966/225 665/967/225 605/968/225 +f 605/968/225 664/969/225 604/970/225 +f 603/971/225 664/969/225 663/972/225 +f 602/973/225 663/972/225 662/974/225 +f 602/973/225 661/975/225 601/976/225 +f 601/977/225 660/978/225 600/979/225 +f 600/979/225 659/980/225 599/981/225 +f 599/981/225 658/982/225 598/983/225 +f 597/984/225 658/982/225 657/985/225 +f 596/986/225 657/985/225 656/987/225 +f 596/986/225 655/988/225 595/989/225 +f 595/989/225 666/990/225 606/966/225 +f 686/991/232 845/992/232 684/993/232 +f 690/994/224 692/995/224 688/996/224 +f 689/997/223 691/998/223 693/999/223 +f 693/999/223 695/1000/223 697/1001/223 +f 694/1002/224 696/1003/224 692/995/224 +f 704/1004/224 708/1005/224 710/1006/224 +f 702/1007/224 706/1008/224 708/1005/224 +f 738/1009/224 739/1010/224 736/1011/224 +f 703/1012/223 707/1013/223 701/1014/223 +f 701/1014/223 705/1015/223 699/1016/223 +f 735/1017/223 741/1018/223 737/1019/223 +f 756/1020/224 754/1021/224 752/1022/224 +f 742/1023/224 743/1024/224 739/1010/224 +f 741/1018/223 744/1025/223 745/1026/223 +f 757/1027/223 751/1028/223 753/1029/223 +f 745/1026/223 748/1030/223 749/1031/223 +f 746/1032/224 747/1033/224 743/1024/224 +f 756/1020/224 762/1034/224 758/1035/224 +f 761/1036/223 755/1037/223 757/1027/223 +f 760/1038/224 766/1039/224 762/1034/224 +f 765/1040/223 759/1041/223 761/1036/223 +f 580/1042/227 667/1043/227 578/1044/227 +f 668/1045/221 579/1046/221 577/1047/221 +f 767/1048/224 686/1049/224 684/993/224 +f 769/1050/225 685/1051/225 686/1049/225 +f 685/1052/223 768/1053/223 683/1054/223 +f 768/1053/231 684/993/231 683/1054/231 +f 773/1055/223 775/1056/223 771/1057/223 +f 774/1058/224 776/1059/224 778/1060/224 +f 777/1061/223 781/1062/223 775/1056/223 +f 782/1063/224 778/1060/224 776/1059/224 +f 779/1064/223 797/1065/223 781/1062/223 +f 798/1066/224 780/1067/224 782/1063/224 +f 785/1068/223 799/1069/223 797/1065/223 +f 798/1066/224 800/1070/224 786/1071/224 +f 791/1072/223 793/1073/223 789/1074/223 +f 792/1075/224 790/1076/224 794/1077/224 +f 795/1078/223 803/1079/223 793/1073/223 +f 804/1080/224 796/1081/224 794/1077/224 +f 801/1082/223 799/1069/223 787/1083/223 +f 804/1080/224 794/1077/224 790/1076/224 +f 829/1084/223 833/1085/223 827/1086/223 +f 829/1084/223 837/1087/223 835/1088/223 +f 830/1089/224 834/1090/224 836/1091/224 +f 830/1089/224 838/1092/224 832/1093/224 +f 827/1086/220 834/1094/220 828/1095/220 +f 842/1096/224 844/1097/224 840/1098/224 +f 842/1096/231 839/1099/231 846/1100/231 +f 845/992/225 844/1101/225 841/1102/225 +f 845/992/232 683/1054/232 684/993/232 +f 846/1100/223 843/1103/223 845/992/223 +f 841/1102/232 685/1104/232 683/1054/232 +f 842/1096/232 686/991/232 685/1104/232 +f 853/1105/231 847/1106/231 854/1107/231 +f 850/1108/222 848/1109/222 849/1110/222 +f 852/1111/220 848/1109/220 853/1112/220 +f 854/1113/230 850/1108/230 851/1114/230 +f 593/941/222 854/1115/222 589/916/222 +f 852/1116/225 850/1108/225 849/1110/225 +f 573/1117/222 853/1118/222 593/941/222 +f 573/1117/222 851/917/222 852/1119/222 +f 857/1120/233 856/1121/233 855/1122/233 +f 861/1123/234 858/1124/234 857/1120/234 +f 861/1125/223 855/1122/223 859/1126/223 +f 862/1127/224 856/1121/224 858/1124/224 +f 873/1128/231 869/1129/231 865/1130/231 +f 705/1015/223 875/1131/223 699/1016/223 +f 706/1008/224 700/1132/224 876/1133/224 +f 892/1134/224 888/1135/224 884/1136/224 +f 901/1137/224 906/1138/224 902/1139/224 +f 891/1140/223 893/1141/223 885/1142/223 +f 895/1143/223 897/1144/223 898/1145/223 +f 896/1146/223 899/1147/223 897/1148/223 +f 877/1149/223 900/1150/223 899/1151/223 +f 878/1152/223 898/1153/223 900/1154/223 +f 903/1155/224 905/1156/224 901/1157/224 +f 904/1158/224 907/1159/224 903/1160/224 +f 902/1161/224 908/1162/224 904/1163/224 +f 898/1164/220 904/1163/220 900/1165/220 +f 877/1149/225 908/1162/225 878/1152/225 +f 900/1166/231 903/1160/231 899/1167/231 +f 895/1143/231 905/1156/231 896/1146/231 +f 899/1168/230 901/1157/230 897/1169/230 +f 897/1170/225 902/1139/225 898/1171/225 +f 878/1152/230 906/1138/230 895/1143/230 +f 896/1146/220 907/1172/220 877/1173/220 +f 917/1174/235 922/1175/235 918/1176/235 +f 911/1177/236 913/1178/236 914/1179/236 +f 913/1180/236 909/1181/236 915/1182/236 +f 909/1181/236 916/1183/236 915/1184/236 +f 910/1185/236 914/1186/236 916/1187/236 +f 917/1188/235 923/1189/235 921/1190/235 +f 919/1191/235 924/1192/235 923/1189/235 +f 918/1193/235 924/1192/235 920/1194/235 +f 914/1195/237 920/1194/237 916/1196/237 +f 909/1181/238 924/1192/238 910/1185/238 +f 916/1197/239 919/1191/239 915/1198/239 +f 911/1177/239 921/1190/239 912/1199/239 +f 913/1200/240 919/1201/240 917/1188/240 +f 913/1202/238 918/1176/238 914/1203/238 +f 911/1204/240 924/1192/240 922/1205/240 +f 912/1199/237 923/1189/237 909/1181/237 +f 928/1206/227 580/1042/227 578/1044/227 +f 925/1207/221 577/1047/221 579/1046/221 +f 590/927/224 928/1206/224 578/1044/224 +f 577/1047/223 927/1208/223 589/916/223 +f 947/1209/224 933/1210/224 948/1211/224 +f 946/1212/230 934/1213/230 947/1209/230 +f 949/1214/223 931/1215/223 950/1216/223 +f 950/1216/230 936/1217/230 945/1218/230 +f 948/1219/230 932/1220/230 949/1214/230 +f 944/1221/224 938/1222/224 943/1223/224 +f 945/1218/241 937/1224/241 944/1221/241 +f 965/1225/224 953/1226/224 964/1227/224 +f 960/1228/242 954/1229/242 963/1230/242 +f 963/1230/223 951/1231/223 966/1232/223 +f 951/1233/230 965/1225/230 966/1234/230 +f 959/1235/223 957/1236/223 960/1228/223 +f 964/1227/243 955/1237/243 962/1238/243 +f 959/1235/231 963/1239/231 964/1240/231 +f 962/1238/224 956/1241/224 961/1242/224 +f 953/1243/225 954/1244/225 956/1241/225 +f 946/1212/244 967/1245/244 935/1246/244 +f 968/1247/223 969/1248/223 967/1245/223 +f 929/1249/225 930/1250/225 933/1251/225 +f 948/1252/231 949/1253/231 940/1254/231 +f 971/1255/220 973/1256/220 975/1257/220 +f 994/1258/223 987/1259/223 991/1260/223 +f 1009/1261/243 1010/1262/243 1003/1263/243 +f 581/910/220 925/1264/220 926/911/220 +f 581/913/221 583/920/221 927/914/221 +f 589/916/222 854/1115/222 851/917/222 +f 585/919/223 589/935/223 927/914/223 +f 590/921/224 586/930/224 584/922/224 +f 584/922/225 586/930/225 585/924/225 +f 574/926/226 594/937/226 590/927/226 +f 582/912/227 926/911/227 928/923/227 +f 583/925/225 581/1265/225 582/929/225 +f 586/930/225 588/1266/225 587/931/225 +f 586/930/228 590/921/228 592/932/228 +f 587/934/229 591/936/229 589/935/229 +f 588/933/230 592/932/230 591/936/230 +f 594/937/225 593/942/225 591/938/225 +f 593/942/230 594/937/230 574/926/230 +f 653/944/231 654/1267/231 642/945/231 +f 642/945/231 654/1267/231 643/947/231 +f 643/947/231 644/950/231 632/949/231 +f 644/950/231 645/952/231 633/951/231 +f 645/952/231 646/1268/231 634/953/231 +f 634/953/231 646/1268/231 647/954/231 +f 635/955/231 647/954/231 648/956/231 +f 648/956/231 649/1269/231 637/958/231 +f 649/959/231 650/962/231 638/960/231 +f 650/962/231 651/964/231 639/963/231 +f 651/964/231 652/1270/231 640/965/231 +f 640/965/231 652/1270/231 653/944/231 +f 606/966/225 666/990/225 665/967/225 +f 605/968/225 665/967/225 664/969/225 +f 603/971/225 604/970/225 664/969/225 +f 602/973/225 603/971/225 663/972/225 +f 602/973/225 662/974/225 661/975/225 +f 601/977/225 661/1271/225 660/978/225 +f 600/979/225 660/978/225 659/980/225 +f 599/981/225 659/980/225 658/982/225 +f 597/984/225 598/983/225 658/982/225 +f 596/986/225 597/984/225 657/985/225 +f 596/986/225 656/987/225 655/988/225 +f 595/989/225 655/988/225 666/990/225 +f 686/991/232 846/1100/232 845/992/232 +f 690/994/224 694/1002/224 692/995/224 +f 689/997/223 687/1272/223 691/998/223 +f 693/999/223 691/998/223 695/1000/223 +f 694/1002/224 698/1273/224 696/1003/224 +f 704/1004/224 702/1007/224 708/1005/224 +f 702/1007/224 700/1132/224 706/1008/224 +f 738/1009/224 742/1023/224 739/1010/224 +f 703/1012/223 709/1274/223 707/1013/223 +f 701/1014/223 707/1013/223 705/1015/223 +f 735/1017/223 740/1275/223 741/1018/223 +f 756/1020/224 758/1035/224 754/1021/224 +f 742/1023/224 746/1032/224 743/1024/224 +f 741/1018/223 740/1275/223 744/1025/223 +f 757/1027/223 755/1037/223 751/1028/223 +f 745/1026/223 744/1025/223 748/1030/223 +f 746/1032/224 750/1276/224 747/1033/224 +f 756/1020/224 760/1038/224 762/1034/224 +f 761/1036/223 759/1041/223 755/1037/223 +f 760/1038/224 764/1277/224 766/1039/224 +f 765/1040/223 763/1278/223 759/1041/223 +f 767/1048/224 769/1050/224 686/1049/224 +f 769/1050/225 770/1279/225 685/1051/225 +f 685/1052/223 770/1280/223 768/1053/223 +f 768/1053/231 767/1048/231 684/993/231 +f 773/1055/223 777/1061/223 775/1056/223 +f 774/1058/224 772/1281/224 776/1059/224 +f 777/1061/223 779/1064/223 781/1062/223 +f 782/1063/224 780/1067/224 778/1060/224 +f 779/1064/223 783/1282/223 797/1065/223 +f 798/1066/224 784/1283/224 780/1067/224 +f 797/1065/223 783/1282/223 785/1068/223 +f 785/1068/223 787/1083/223 799/1069/223 +f 786/1071/224 784/1283/224 798/1066/224 +f 800/1070/224 788/1284/224 786/1071/224 +f 795/1078/223 805/1285/223 803/1079/223 +f 804/1080/224 806/1286/224 796/1081/224 +f 787/1083/223 789/1074/223 801/1082/223 +f 789/1074/223 793/1073/223 803/1079/223 +f 801/1082/223 789/1074/223 803/1079/223 +f 790/1076/224 788/1284/224 802/1287/224 +f 788/1284/224 800/1070/224 802/1287/224 +f 802/1287/224 804/1080/224 790/1076/224 +f 829/1084/223 835/1088/223 833/1085/223 +f 829/1084/223 831/1288/223 837/1087/223 +f 830/1089/224 828/1095/224 834/1090/224 +f 830/1089/224 836/1091/224 838/1092/224 +f 827/1086/220 833/1289/220 834/1094/220 +f 842/1096/224 841/1102/224 844/1097/224 +f 842/1096/231 840/1290/231 839/1099/231 +f 845/992/225 843/1291/225 844/1101/225 +f 845/992/232 841/1102/232 683/1054/232 +f 846/1100/223 839/1292/223 843/1103/223 +f 841/1102/232 842/1096/232 685/1104/232 +f 842/1096/232 846/1100/232 686/991/232 +f 853/1105/231 848/1109/231 847/1106/231 +f 850/1108/222 847/1106/222 848/1109/222 +f 852/1111/220 849/1110/220 848/1109/220 +f 854/1113/230 847/1106/230 850/1108/230 +f 593/941/222 853/1118/222 854/1115/222 +f 852/1116/225 851/1293/225 850/1108/225 +f 573/1117/222 852/1119/222 853/1118/222 +f 573/1117/222 575/918/222 851/917/222 +f 857/1120/233 858/1124/233 856/1121/233 +f 861/1123/234 862/1294/234 858/1124/234 +f 861/1125/223 857/1120/223 855/1122/223 +f 862/1127/224 860/1295/224 856/1121/224 +f 865/1130/231 864/1296/231 863/1297/231 +f 863/1297/231 874/1298/231 865/1130/231 +f 874/1298/231 873/1128/231 865/1130/231 +f 873/1128/231 872/1299/231 869/1129/231 +f 872/1299/231 871/1300/231 869/1129/231 +f 871/1300/231 870/1301/231 869/1129/231 +f 869/1129/231 868/1302/231 867/1303/231 +f 867/1303/231 866/1304/231 869/1129/231 +f 866/1304/231 865/1130/231 869/1129/231 +f 884/1136/224 882/1305/224 880/1306/224 +f 880/1306/224 894/1307/224 892/1134/224 +f 892/1134/224 890/1308/224 888/1135/224 +f 888/1135/224 886/1309/224 884/1136/224 +f 884/1136/224 880/1306/224 892/1134/224 +f 901/1137/224 905/1156/224 906/1138/224 +f 893/1141/223 879/1310/223 881/1311/223 +f 881/1311/223 883/1312/223 893/1141/223 +f 883/1312/223 885/1142/223 893/1141/223 +f 885/1142/223 887/1313/223 889/1314/223 +f 889/1314/223 891/1140/223 885/1142/223 +f 895/1143/223 896/1146/223 897/1144/223 +f 896/1146/223 877/1173/223 899/1147/223 +f 877/1149/223 878/1152/223 900/1150/223 +f 878/1152/223 895/1143/223 898/1153/223 +f 903/1155/224 907/1172/224 905/1156/224 +f 904/1158/224 908/1162/224 907/1159/224 +f 902/1161/224 906/1138/224 908/1162/224 +f 898/1164/220 902/1161/220 904/1163/220 +f 877/1149/225 907/1159/225 908/1162/225 +f 900/1166/231 904/1158/231 903/1160/231 +f 895/1143/231 906/1138/231 905/1156/231 +f 899/1168/230 903/1155/230 901/1157/230 +f 897/1170/225 901/1137/225 902/1139/225 +f 878/1152/230 908/1162/230 906/1138/230 +f 896/1146/220 905/1156/220 907/1172/220 +f 917/1174/235 921/1190/235 922/1175/235 +f 911/1177/236 912/1199/236 913/1178/236 +f 913/1180/236 912/1199/236 909/1181/236 +f 909/1181/236 910/1185/236 916/1183/236 +f 910/1185/236 911/1204/236 914/1186/236 +f 917/1188/235 919/1201/235 923/1189/235 +f 919/1191/235 920/1315/235 924/1192/235 +f 918/1193/235 922/1205/235 924/1192/235 +f 914/1195/237 918/1193/237 920/1194/237 +f 909/1181/238 923/1189/238 924/1192/238 +f 916/1197/239 920/1315/239 919/1191/239 +f 911/1177/239 922/1175/239 921/1190/239 +f 913/1200/240 915/1316/240 919/1201/240 +f 913/1202/238 917/1174/238 918/1176/238 +f 911/1204/240 910/1185/240 924/1192/240 +f 912/1199/237 921/1190/237 923/1189/237 +f 928/1206/227 926/1317/227 580/1042/227 +f 925/1207/221 927/1208/221 577/1047/221 +f 667/1043/224 576/928/224 578/1044/224 +f 576/928/224 590/927/224 578/1044/224 +f 589/916/223 575/918/223 577/1047/223 +f 575/918/223 668/1045/223 577/1047/223 +f 947/1209/224 934/1213/224 933/1210/224 +f 946/1212/230 935/1246/230 934/1213/230 +f 949/1214/223 932/1220/223 931/1215/223 +f 950/1216/230 931/1215/230 936/1217/230 +f 948/1219/230 933/1318/230 932/1220/230 +f 944/1221/224 937/1224/224 938/1222/224 +f 945/1218/241 936/1217/241 937/1224/241 +f 965/1225/224 952/1319/224 953/1226/224 +f 960/1228/242 957/1236/242 954/1229/242 +f 963/1230/223 954/1229/223 951/1231/223 +f 951/1233/230 952/1319/230 965/1225/230 +f 959/1235/223 958/1320/223 957/1236/223 +f 964/1227/243 953/1226/243 955/1237/243 +f 962/1238/231 961/1242/231 964/1240/231 +f 961/1242/231 959/1235/231 964/1240/231 +f 959/1235/231 960/1228/231 963/1239/231 +f 963/1239/231 966/1321/231 965/1322/231 +f 963/1239/231 965/1322/231 964/1240/231 +f 962/1238/224 955/1237/224 956/1241/224 +f 953/1243/225 952/1323/225 951/1324/225 +f 954/1244/225 957/1325/225 958/1326/225 +f 953/1243/225 951/1324/225 954/1244/225 +f 956/1241/225 955/1237/225 953/1243/225 +f 954/1244/225 958/1326/225 956/1241/225 +f 946/1212/244 968/1247/244 967/1245/244 +f 968/1247/223 970/1327/223 969/1248/223 +f 969/1328/225 939/1329/225 967/1330/225 +f 939/1329/225 929/1249/225 967/1330/225 +f 930/1250/225 938/1222/225 937/1224/225 +f 930/1250/225 937/1224/225 936/1331/225 +f 935/1332/225 967/1330/225 929/1249/225 +f 930/1250/225 936/1331/225 932/1333/225 +f 936/1331/225 931/1334/225 932/1333/225 +f 934/1335/225 935/1332/225 933/1251/225 +f 935/1332/225 929/1249/225 933/1251/225 +f 930/1250/225 932/1333/225 933/1251/225 +f 941/1336/231 942/1337/231 968/1247/231 +f 942/1337/231 970/1327/231 968/1247/231 +f 941/1336/231 946/1338/231 948/1252/231 +f 968/1247/231 946/1338/231 941/1336/231 +f 946/1338/231 947/1339/231 948/1252/231 +f 949/1253/231 950/1340/231 945/1341/231 +f 949/1253/231 945/1341/231 940/1254/231 +f 945/1341/231 944/1221/231 940/1254/231 +f 944/1221/231 943/1223/231 940/1254/231 +f 940/1254/231 941/1336/231 948/1252/231 +f 971/1255/220 972/1342/220 973/1256/220 +f 973/1256/220 974/1343/220 975/1257/220 +f 975/1257/220 976/1344/220 977/1345/220 +f 977/1345/220 978/1346/220 975/1257/220 +f 978/1346/220 971/1255/220 975/1257/220 +f 987/1259/223 988/1347/223 989/1348/223 +f 989/1348/223 990/1349/223 987/1259/223 +f 990/1349/223 991/1260/223 987/1259/223 +f 991/1260/223 992/1350/223 993/1351/223 +f 993/1351/223 994/1258/223 991/1260/223 +f 1003/1263/243 1004/1352/243 1005/1353/243 +f 1005/1353/243 1006/1354/243 1003/1263/243 +f 1006/1354/243 1007/1355/243 1003/1263/243 +f 1007/1355/243 1008/1356/243 1003/1263/243 +f 1008/1356/243 1009/1261/243 1003/1263/243 +s 1 +f 580/1357/245 681/1358/246 682/1359/246 +f 609/1360/247 598/983/223 597/984/247 +f 616/1361/224 605/968/248 604/970/224 +f 613/1362/220 602/973/249 601/976/220 +f 610/1363/223 599/981/250 598/983/223 +f 617/1364/248 606/966/251 605/968/248 +f 607/1365/230 596/986/252 595/989/230 +f 614/1366/249 603/971/253 602/973/249 +f 611/1367/250 600/979/254 599/981/250 +f 618/1368/251 595/989/230 606/966/251 +f 608/1369/252 597/984/247 596/986/252 +f 615/1370/253 604/970/224 603/971/253 +f 612/1371/254 601/977/220 600/979/254 +f 628/1372/255 617/1364/256 616/1361/255 +f 617/1364/256 630/1373/257 618/1368/257 +f 630/1373/257 607/1365/258 618/1368/257 +f 619/1374/258 608/1369/259 607/1365/258 +f 608/1369/259 621/1375/260 609/1360/260 +f 609/1360/260 622/1376/261 610/1363/261 +f 622/1376/261 611/1367/262 610/1363/261 +f 623/1377/262 612/1371/263 611/1367/262 +f 624/1378/263 613/1379/264 612/1371/263 +f 625/1380/264 614/1366/265 613/1362/264 +f 626/1381/265 615/1370/266 614/1366/265 +f 627/1382/266 616/1361/255 615/1370/266 +f 629/1383/248 642/945/251 630/1373/251 +f 619/1374/230 632/949/252 620/1384/252 +f 626/1381/249 639/963/253 627/1382/253 +f 623/1377/250 636/957/254 624/1378/254 +f 630/1373/251 631/948/230 619/1374/230 +f 620/1384/252 633/951/247 621/1375/247 +f 627/1382/253 640/965/224 628/1372/224 +f 624/1378/254 637/958/220 625/1385/220 +f 621/1375/247 634/953/223 622/1376/223 +f 628/1372/224 641/946/248 629/1383/248 +f 625/1380/220 638/960/249 626/1381/249 +f 622/1376/223 635/955/250 623/1377/250 +f 573/1386/267 674/1387/268 575/1388/269 +f 670/1389/270 668/1390/271 671/1391/272 +f 673/1392/273 671/1391/272 674/1387/268 +f 575/1388/269 671/1391/272 668/1390/271 +f 672/1393/274 667/1043/275 669/1394/276 +f 665/967/250 720/1395/277 664/969/223 +f 672/1393/274 576/928/278 667/1043/275 +f 576/928/278 673/1392/273 574/1396/279 +f 670/1389/270 672/1393/274 669/1394/276 +f 658/982/224 712/1397/280 657/985/253 +f 661/1271/230 716/1398/281 660/978/251 +f 664/969/223 719/1399/282 663/972/247 +f 657/985/253 713/1400/283 656/987/249 +f 655/988/220 722/1401/284 666/990/254 +f 574/1396/279 674/1387/268 573/1386/267 +f 660/978/251 715/1402/285 659/980/248 +f 663/972/247 718/1403/286 662/974/252 +f 656/987/249 714/1404/287 655/988/220 +f 666/990/254 721/1405/288 665/967/250 +f 659/980/248 711/1406/289 658/982/224 +f 662/974/252 717/1407/290 661/975/230 +f 669/1408/220 676/1409/291 670/1410/220 +f 675/1411/291 678/1412/225 676/1409/291 +f 677/1413/225 680/1414/292 678/1412/225 +f 679/1415/293 681/1358/246 680/1414/293 +f 692/995/294 687/1272/295 688/996/295 +f 698/1273/296 702/1007/297 704/1004/296 +f 696/1003/298 691/998/294 692/995/294 +f 694/1002/297 700/1132/234 702/1007/297 +f 689/997/234 701/1014/297 699/1016/234 +f 701/1014/297 697/1001/296 703/1012/296 +f 705/1416/299 708/1417/297 706/1418/299 +f 707/1419/297 710/1420/296 708/1417/297 +f 737/1019/231 742/1023/300 738/1009/231 +f 646/1268/224 727/1421/301 647/954/248 +f 653/944/250 734/1422/302 654/1267/254 +f 643/947/220 724/1423/303 644/950/249 +f 650/962/252 731/1424/304 651/964/247 +f 647/954/248 728/1425/305 648/956/251 +f 654/1267/254 723/1426/306 643/947/220 +f 644/950/249 725/1427/307 645/952/253 +f 651/964/247 732/1428/308 652/1270/223 +f 648/956/251 729/1429/309 649/1269/230 +f 645/952/253 726/1430/310 646/1268/224 +f 652/1270/223 733/1431/311 653/944/250 +f 649/959/230 730/1432/312 650/962/252 +f 717/1433/290 728/1425/305 716/1434/281 +f 716/1434/281 727/1421/301 715/1435/285 +f 715/1435/285 726/1430/310 711/1436/289 +f 711/1436/289 725/1427/307 712/1437/280 +f 712/1437/280 724/1423/303 713/1438/283 +f 714/1439/287 724/1423/303 723/1426/306 +f 714/1439/287 734/1422/302 722/1440/284 +f 721/1441/288 734/1422/302 733/1431/311 +f 721/1441/288 732/1428/308 720/1442/277 +f 720/1442/277 731/1424/304 719/1443/282 +f 719/1443/282 730/1432/312 718/1444/286 +f 718/1444/286 729/1445/309 717/1446/290 +f 758/1447/313 753/1448/225 754/1449/225 +f 741/1018/300 746/1032/314 742/1023/300 +f 745/1026/314 750/1276/315 746/1032/314 +f 762/1450/316 757/1451/313 758/1447/313 +f 766/1452/317 761/1453/316 762/1450/316 +f 747/1033/318 760/1038/319 743/1024/319 +f 743/1024/319 756/1020/320 739/1010/320 +f 739/1010/320 752/1022/225 736/1011/225 +f 735/1017/225 755/1037/320 740/1275/320 +f 740/1275/320 759/1041/319 744/1025/319 +f 744/1025/319 763/1278/318 748/1030/318 +f 676/1454/223 680/1455/321 670/1456/322 +f 679/1457/323 675/1411/224 669/1408/324 +f 668/1045/325 680/1455/321 681/1458/326 +f 667/1043/327 682/1459/328 679/1457/323 +f 682/1459/328 667/1043/327 580/1042/329 +f 579/1046/330 668/1045/325 681/1458/326 +f 774/1460/331 777/1461/332 773/1462/331 +f 679/1457/323 669/1408/324 667/1043/327 +f 680/1455/321 668/1045/325 670/1456/322 +f 775/1463/333 772/1464/334 771/1465/334 +f 778/1466/332 779/1467/335 777/1461/332 +f 786/1468/336 783/1469/337 784/1470/337 +f 781/1471/338 776/1472/333 775/1463/333 +f 784/1470/337 779/1467/335 780/1473/335 +f 786/1468/336 787/1474/339 785/1475/336 +f 788/1476/339 789/1477/340 787/1474/339 +f 790/1478/340 791/1479/220 789/1477/340 +f 792/1480/341 793/1481/225 791/1479/341 +f 794/1482/225 795/1483/342 793/1481/225 +f 797/1484/291 782/1485/338 781/1471/338 +f 797/1484/291 800/1070/220 798/1066/291 +f 799/1486/231 802/1487/343 800/1070/231 +f 801/1488/343 804/1489/344 802/1487/343 +f 803/1490/344 806/1491/345 804/1489/344 +f 807/1492/346 812/1493/347 809/1494/348 +f 808/1495/349 813/1496/350 807/1492/346 +f 815/1497/351 810/1498/352 809/1494/348 +f 807/1492/346 813/1496/350 811/1499/353 +f 809/1494/348 812/1493/347 815/1497/351 +f 820/1500/354 823/1501/355 819/1502/356 +f 825/1503/357 822/1504/358 821/1505/359 +f 817/1506/360 825/1503/357 818/1507/361 +f 821/1505/359 818/1507/361 825/1503/357 +f 819/1502/356 823/1501/355 817/1506/360 +f 828/1095/362 829/1084/225 827/1086/362 +f 830/1089/225 831/1288/363 829/1084/225 +f 706/1418/299 875/1508/364 705/1416/299 +f 880/1509/231 881/1510/345 879/1511/231 +f 882/1512/345 883/1513/220 881/1510/345 +f 884/1514/220 885/1515/233 883/1516/220 +f 886/1517/233 887/1518/225 885/1515/233 +f 888/1519/225 889/1520/292 887/1518/225 +f 890/1521/292 891/1522/230 889/1520/292 +f 892/1523/230 893/1524/364 891/1522/230 +f 894/1525/364 879/1511/231 893/1524/364 +f 926/1317/220 579/1526/245 580/1042/245 +f 978/1527/358 980/1528/231 971/1529/231 +f 976/1530/354 985/1531/223 977/1532/223 +f 974/1533/349 983/1534/225 975/1535/225 +f 972/1536/352 981/1537/224 973/1538/224 +f 977/1539/223 986/1540/358 978/1527/358 +f 975/1535/225 984/1541/354 976/1530/354 +f 973/1538/224 982/1542/349 974/1533/349 +f 971/1529/231 979/1543/352 972/1536/352 +f 994/1544/364 996/1545/231 987/1546/231 +f 992/1547/292 1001/1548/230 993/1549/230 +f 990/1550/233 999/1551/225 991/1552/225 +f 988/1553/345 997/1554/220 989/1555/220 +f 993/1556/230 1002/1557/364 994/1544/364 +f 991/1552/225 1000/1558/292 992/1547/292 +f 989/1555/220 998/1559/233 990/1550/233 +f 987/1546/231 995/1560/345 988/1553/345 +f 1003/1561/231 1018/1562/365 1012/1563/231 +f 1009/1564/227 1016/1565/366 1017/1566/227 +f 1006/1567/367 1015/1568/225 1007/1569/225 +f 1005/1570/242 1011/1571/368 1013/1572/242 +f 1010/1573/365 1017/1574/227 1018/1562/365 +f 1007/1569/225 1016/1565/366 1008/1575/366 +f 1005/1570/242 1014/1576/367 1006/1567/367 +f 1004/1577/368 1012/1563/231 1011/1571/368 +f 580/1357/245 579/1578/245 681/1358/246 +f 609/1360/247 610/1363/223 598/983/223 +f 616/1361/224 617/1364/248 605/968/248 +f 613/1362/220 614/1366/249 602/973/249 +f 610/1363/223 611/1367/250 599/981/250 +f 617/1364/248 618/1368/251 606/966/251 +f 607/1365/230 608/1369/252 596/986/252 +f 614/1366/249 615/1370/253 603/971/253 +f 611/1367/250 612/1371/254 600/979/254 +f 618/1368/251 607/1365/230 595/989/230 +f 608/1369/252 609/1360/247 597/984/247 +f 615/1370/253 616/1361/224 604/970/224 +f 612/1371/254 613/1379/220 601/977/220 +f 628/1372/255 629/1383/256 617/1364/256 +f 617/1364/256 629/1383/256 630/1373/257 +f 630/1373/257 619/1374/258 607/1365/258 +f 619/1374/258 620/1384/259 608/1369/259 +f 608/1369/259 620/1384/259 621/1375/260 +f 609/1360/260 621/1375/260 622/1376/261 +f 622/1376/261 623/1377/262 611/1367/262 +f 623/1377/262 624/1378/263 612/1371/263 +f 624/1378/263 625/1385/264 613/1379/264 +f 625/1380/264 626/1381/265 614/1366/265 +f 626/1381/265 627/1382/266 615/1370/266 +f 627/1382/266 628/1372/255 616/1361/255 +f 629/1383/248 641/946/248 642/945/251 +f 619/1374/230 631/948/230 632/949/252 +f 626/1381/249 638/960/249 639/963/253 +f 623/1377/250 635/955/250 636/957/254 +f 630/1373/251 642/945/251 631/948/230 +f 620/1384/252 632/949/252 633/951/247 +f 627/1382/253 639/963/253 640/965/224 +f 624/1378/254 636/957/254 637/958/220 +f 621/1375/247 633/951/247 634/953/223 +f 628/1372/224 640/965/224 641/946/248 +f 625/1380/220 637/961/220 638/960/249 +f 622/1376/223 634/953/223 635/955/250 +f 673/1392/273 672/1393/274 671/1391/272 +f 575/1388/269 674/1387/268 671/1391/272 +f 665/967/250 721/1405/288 720/1395/277 +f 672/1393/274 673/1392/273 576/928/278 +f 670/1389/270 671/1391/272 672/1393/274 +f 658/982/224 711/1406/289 712/1397/280 +f 661/1271/230 717/1579/290 716/1398/281 +f 664/969/223 720/1395/277 719/1399/282 +f 657/985/253 712/1397/280 713/1400/283 +f 655/988/220 714/1404/287 722/1401/284 +f 574/1396/279 673/1392/273 674/1387/268 +f 660/978/251 716/1398/281 715/1402/285 +f 663/972/247 719/1399/282 718/1403/286 +f 656/987/249 713/1400/283 714/1404/287 +f 666/990/254 722/1401/284 721/1405/288 +f 659/980/248 715/1402/285 711/1406/289 +f 662/974/252 718/1403/286 717/1407/290 +f 669/1408/220 675/1411/291 676/1409/291 +f 675/1411/291 677/1413/225 678/1412/225 +f 677/1413/225 679/1415/292 680/1414/292 +f 679/1415/293 682/1359/246 681/1358/246 +f 692/995/294 691/998/294 687/1272/295 +f 698/1273/296 694/1002/297 702/1007/297 +f 696/1003/298 695/1000/298 691/998/294 +f 694/1002/297 690/994/234 700/1132/234 +f 689/997/234 693/999/297 701/1014/297 +f 701/1014/297 693/999/297 697/1001/296 +f 705/1416/299 707/1419/297 708/1417/297 +f 707/1419/297 709/1580/296 710/1420/296 +f 737/1019/231 741/1018/300 742/1023/300 +f 646/1268/224 726/1430/310 727/1421/301 +f 653/944/250 733/1431/311 734/1422/302 +f 643/947/220 723/1426/306 724/1423/303 +f 650/962/252 730/1432/312 731/1424/304 +f 647/954/248 727/1421/301 728/1425/305 +f 654/1267/254 734/1422/302 723/1426/306 +f 644/950/249 724/1423/303 725/1427/307 +f 651/964/247 731/1424/304 732/1428/308 +f 648/956/251 728/1425/305 729/1429/309 +f 645/952/253 725/1427/307 726/1430/310 +f 652/1270/223 732/1428/308 733/1431/311 +f 649/959/230 729/1445/309 730/1432/312 +f 717/1433/290 729/1429/309 728/1425/305 +f 716/1434/281 728/1425/305 727/1421/301 +f 715/1435/285 727/1421/301 726/1430/310 +f 711/1436/289 726/1430/310 725/1427/307 +f 712/1437/280 725/1427/307 724/1423/303 +f 714/1439/287 713/1438/283 724/1423/303 +f 714/1439/287 723/1426/306 734/1422/302 +f 721/1441/288 722/1440/284 734/1422/302 +f 721/1441/288 733/1431/311 732/1428/308 +f 720/1442/277 732/1428/308 731/1424/304 +f 719/1443/282 731/1424/304 730/1432/312 +f 718/1444/286 730/1432/312 729/1445/309 +f 758/1447/313 757/1451/313 753/1448/225 +f 741/1018/300 745/1026/314 746/1032/314 +f 745/1026/314 749/1031/315 750/1276/315 +f 762/1450/316 761/1453/316 757/1451/313 +f 766/1452/317 765/1040/317 761/1453/316 +f 747/1033/318 764/1277/318 760/1038/319 +f 743/1024/319 760/1038/319 756/1020/320 +f 739/1010/320 756/1020/320 752/1022/225 +f 735/1017/225 751/1028/225 755/1037/320 +f 740/1275/320 755/1037/320 759/1041/319 +f 744/1025/319 759/1041/319 763/1278/318 +f 676/1454/223 678/1581/223 680/1455/321 +f 679/1457/323 677/1582/224 675/1411/224 +f 774/1460/331 778/1466/332 777/1461/332 +f 775/1463/333 776/1472/333 772/1464/334 +f 778/1466/332 780/1473/335 779/1467/335 +f 786/1468/336 785/1475/336 783/1469/337 +f 781/1471/338 782/1485/338 776/1472/333 +f 784/1470/337 783/1469/337 779/1467/335 +f 786/1468/336 788/1476/339 787/1474/339 +f 788/1476/339 790/1478/340 789/1477/340 +f 790/1478/340 792/1480/220 791/1479/220 +f 792/1480/341 794/1482/225 793/1481/225 +f 794/1482/225 796/1583/342 795/1483/342 +f 797/1484/291 798/1066/291 782/1485/338 +f 797/1484/291 799/1486/220 800/1070/220 +f 799/1486/231 801/1488/343 802/1487/343 +f 801/1488/343 803/1490/344 804/1489/344 +f 803/1490/344 805/1584/345 806/1491/345 +f 807/1492/346 811/1499/353 812/1493/347 +f 808/1495/349 814/1585/349 813/1496/350 +f 815/1497/351 816/1586/352 810/1498/352 +f 820/1500/354 824/1587/354 823/1501/355 +f 825/1503/357 826/1588/358 822/1504/358 +f 817/1506/360 823/1501/355 825/1503/357 +f 828/1095/362 830/1089/225 829/1084/225 +f 830/1089/225 832/1093/363 831/1288/363 +f 706/1418/299 876/1133/364 875/1508/364 +f 880/1509/231 882/1512/345 881/1510/345 +f 882/1512/345 884/1589/220 883/1513/220 +f 884/1514/220 886/1517/233 885/1515/233 +f 886/1517/233 888/1519/225 887/1518/225 +f 888/1519/225 890/1521/292 889/1520/292 +f 890/1521/292 892/1523/230 891/1522/230 +f 892/1523/230 894/1525/364 893/1524/364 +f 894/1525/364 880/1509/231 879/1511/231 +f 926/1317/220 925/1590/220 579/1526/245 +f 978/1527/358 986/1540/358 980/1528/231 +f 976/1530/354 984/1541/354 985/1531/223 +f 974/1533/349 982/1542/349 983/1534/225 +f 972/1536/352 979/1543/352 981/1537/224 +f 977/1539/223 985/1591/223 986/1540/358 +f 975/1535/225 983/1534/225 984/1541/354 +f 973/1538/224 981/1537/224 982/1542/349 +f 971/1529/231 980/1528/231 979/1543/352 +f 994/1544/364 1002/1557/364 996/1545/231 +f 992/1547/292 1000/1558/292 1001/1548/230 +f 990/1550/233 998/1559/233 999/1551/225 +f 988/1553/345 995/1560/345 997/1554/220 +f 993/1556/230 1001/1592/230 1002/1557/364 +f 991/1552/225 999/1551/225 1000/1558/292 +f 989/1555/220 997/1554/220 998/1559/233 +f 987/1546/231 996/1545/231 995/1560/345 +f 1003/1561/231 1010/1573/365 1018/1562/365 +f 1009/1564/227 1008/1575/366 1016/1565/366 +f 1006/1567/367 1014/1576/367 1015/1568/225 +f 1005/1570/242 1004/1577/368 1011/1571/368 +f 1010/1573/365 1009/1593/227 1017/1574/227 +f 1007/1569/225 1015/1568/225 1016/1565/366 +f 1005/1570/242 1013/1572/242 1014/1576/367 +f 1004/1577/368 1003/1561/231 1012/1563/231 diff --git a/src/main/resources/assets/hbm/models/weapons/stinger.obj b/src/main/resources/assets/hbm/models/weapons/stinger.obj index 06422b0b2..5f99e4edd 100644 --- a/src/main/resources/assets/hbm/models/weapons/stinger.obj +++ b/src/main/resources/assets/hbm/models/weapons/stinger.obj @@ -1,733 +1,5 @@ -# Blender v2.79 (sub 0) OBJ File: '' +# Blender v2.79 (sub 0) OBJ File: 'stinger.blend' # www.blender.org -mtllib stinger.(1obj.mtl -o Cube.001_Cube.002 -v 0.393889 3.128783 -9.337228 -v 0.393890 1.846543 -5.892444 -v 0.393889 1.846542 -9.337228 -v -0.393894 3.128783 -5.892444 -v -0.393895 1.846542 -9.337228 -v -0.393894 1.846543 -5.892444 -v -0.393895 3.128783 -9.337228 -v -0.000002 3.303435 -5.049528 -v -0.382998 1.728983 -5.208168 -v -0.000002 1.728983 -5.049528 -v -0.382998 3.303435 -5.208168 -v -0.541638 1.728983 -5.591164 -v -0.541638 3.303435 -5.591164 -v -0.382998 1.728983 -5.974160 -v -0.382998 3.303435 -5.974160 -v -0.000002 1.728983 -6.132800 -v -0.000002 3.303435 -6.132800 -v 0.382994 1.728983 -5.974160 -v 0.382994 3.303435 -5.974160 -v 0.541634 1.728983 -5.591164 -v 0.541634 3.303435 -5.591164 -v 0.382994 1.728983 -5.208168 -v 0.382994 3.303435 -5.208168 -v -1.403786 4.699999 -5.797567 -v -1.686627 4.582843 -7.948311 -v -1.686626 4.582843 -5.797567 -v -1.803787 4.299999 -7.948311 -v -1.803786 4.299999 -5.797567 -v -1.686626 4.017155 -5.797567 -v -1.686627 4.017155 -7.948311 -v -1.403786 3.899999 -5.797567 -v -1.403787 3.899999 -7.948311 -v -1.120942 4.017155 -5.797567 -v -1.003787 4.299999 -7.948312 -v -1.003786 4.299999 -5.797568 -v -1.883787 4.299999 -7.982080 -v -1.743199 3.960587 -7.982080 -v -1.120943 4.582843 -7.948312 -v -1.120942 4.582843 -5.797568 -v -0.923786 4.299999 -5.755472 -v -0.923787 4.299999 -7.982080 -v -1.064375 4.639411 -8.277956 -v -1.064375 4.639411 -7.982080 -v -1.120943 4.017155 -7.948311 -v -1.403787 3.819999 -7.982080 -v -1.064375 3.960587 -7.982080 -v -1.403787 4.699999 -7.948311 -v -1.403787 4.779999 -7.982080 -v -1.743199 4.639411 -7.982080 -v -0.923787 4.299999 -8.277956 -v -1.743199 3.960587 -8.277955 -v -1.883787 4.299999 -8.277955 -v -1.403787 3.819999 -8.277956 -v -1.064375 3.960587 -8.277956 -v -1.743199 4.639411 -8.277956 -v -1.403787 4.779999 -8.277956 -v -1.403786 4.779999 -5.755472 -v -1.064374 4.639411 -5.489088 -v -1.064374 4.639411 -5.755472 -v -1.883786 4.299999 -5.755472 -v -1.743198 4.639411 -5.755472 -v -1.064374 3.960587 -5.755472 -v -1.403786 3.819999 -5.755472 -v -1.743198 3.960587 -5.755472 -v -1.743198 3.960587 -5.489088 -v -0.923786 4.299999 -5.489088 -v -1.883786 4.299999 -5.489088 -v -1.064374 3.960587 -5.489088 -v -1.743198 4.639411 -5.489088 -v -1.403786 3.819999 -5.489088 -v -1.403786 4.779999 -5.489088 -v -1.473919 4.208779 -7.811895 -v -0.447114 3.729971 -5.941060 -v -0.447115 3.729971 -7.811896 -v 0.128767 2.756387 -3.983544 -v 0.128767 1.614719 -3.555136 -v 0.128767 1.614719 -3.983544 -v 0.128767 2.756387 -3.555136 -v -0.128769 1.614719 -3.555136 -v -0.128769 2.756387 -3.555136 -v -0.128769 1.614719 -3.983544 -v -0.128769 2.756387 -3.983544 -v 0.190951 3.077327 -3.167776 -v -0.208109 2.727468 -3.531600 -v 0.197875 2.727295 -3.523528 -v -0.198185 2.731559 -4.030576 -v 0.207799 2.731387 -4.022504 -v -0.191081 3.087375 -4.380480 -v 0.214907 3.087207 -4.372408 -v -0.207801 3.932427 -3.521620 -v -0.190953 3.586487 -4.376348 -v -0.214909 3.576612 -3.171716 -v 0.215035 3.586319 -4.368276 -v 0.198183 3.932260 -3.513548 -v 0.191079 3.576439 -3.163644 -v 0.771273 5.530663 -9.417193 -v 0.771274 4.098263 -6.669316 -v 0.771273 4.098262 -9.417192 -v 0.771274 5.530663 -6.669316 -v -0.771278 4.098263 -6.669316 -v -0.771278 5.530663 -6.669316 -v -0.771279 4.098262 -9.417192 -v -0.000003 4.089742 -9.779048 -v -0.346641 3.977118 9.779048 -v 0.000003 4.089750 9.779048 -v -0.346647 3.977114 -9.779048 -v -0.560881 3.682245 9.779048 -v -0.560887 3.682238 -9.779048 -v -0.560881 3.317762 9.779048 -v -0.560887 3.317755 -9.779048 -v -0.346641 3.022886 9.779048 -v -0.346647 3.022882 -9.779048 -v 0.000003 2.910254 9.779048 -v -0.000003 2.910250 -9.779048 -v 0.346647 3.022886 9.779048 -v 0.346641 3.022882 -9.779048 -v 0.560887 3.317762 9.779048 -v 0.560881 3.317755 -9.779048 -v 0.560887 3.682245 9.779048 -v -0.381311 4.024827 -9.822908 -v 0.560881 3.682238 -9.779048 -v 0.346647 3.977118 9.779048 -v 0.346641 3.977114 -9.779048 -v 0.519971 4.215673 9.897908 -v -0.841321 3.226638 9.897908 -v 0.841327 3.773365 9.897908 -v -0.841321 3.773365 9.897908 -v 0.841327 3.226638 9.897908 -v 0.519971 2.784330 9.897908 -v 0.000003 2.615382 9.897908 -v -0.519965 2.784330 9.897908 -v -0.519965 4.215673 9.897908 -v 0.000003 4.384622 9.897908 -v -0.616975 3.299531 -9.822908 -v -0.616975 3.700462 -10.379472 -v -0.616975 3.299530 -10.379472 -v -0.616975 3.700462 -9.822908 -v 0.381305 4.024827 -9.822908 -v -0.000003 4.148718 -9.822908 -v 0.616969 3.700462 -9.822908 -v 0.616969 3.299531 -9.822908 -v 0.381305 2.975170 -9.822908 -v -0.381311 2.975170 -9.822908 -v -0.000003 2.851278 -9.822908 -v 0.616969 3.700462 -10.379472 -v -0.000003 4.148718 -10.379472 -v 0.381305 2.975170 -10.379472 -v 0.616969 3.299530 -10.379472 -v -0.381311 2.975170 -10.379472 -v -0.381311 4.024827 -10.379472 -v -0.000003 2.851278 -10.379472 -v 0.381305 4.024827 -10.379472 -v 0.393890 3.128783 -5.892444 -v -1.473918 4.208779 -5.941060 -v -0.215037 3.077499 -3.175848 -v -0.197877 3.936519 -4.020596 -v 0.208107 3.936351 -4.012524 -v -0.771279 5.530663 -9.417192 -vt 0.527579 0.843077 -vt 0.818514 0.903517 -vt 0.527579 0.904025 -vt 0.818514 0.999529 -vt 0.527579 0.938195 -vt 0.818514 0.938957 -vt 0.451532 0.938195 -vt 0.601607 0.751835 -vt 0.564045 0.842170 -vt 0.601607 0.842170 -vt 0.564045 0.751835 -vt 0.526858 0.842170 -vt 0.526858 0.751835 -vt 0.490047 0.842170 -vt 0.490047 0.751835 -vt 0.452109 0.842170 -vt 0.751857 0.751835 -vt 0.714295 0.842170 -vt 0.751857 0.842170 -vt 0.714295 0.751835 -vt 0.676356 0.842170 -vt 0.676356 0.751835 -vt 0.639545 0.842170 -vt 0.639545 0.751835 -vt 0.525741 0.869077 -vt 0.515026 0.885956 -vt 0.463759 0.885334 -vt 0.601692 0.396030 -vt 0.639188 0.583813 -vt 0.639188 0.396030 -vt 0.676683 0.583813 -vt 0.676683 0.396030 -vt 0.714179 0.396030 -vt 0.714179 0.583813 -vt 0.751674 0.396030 -vt 0.451711 0.583813 -vt 0.489206 0.396030 -vt 0.451711 0.396030 -vt 0.526701 0.583813 -vt 0.526701 0.396030 -vt 0.676683 0.593980 -vt 0.714179 0.593980 -vt 0.564197 0.583813 -vt 0.564197 0.396030 -vt 0.526701 0.385823 -vt 0.526701 0.593980 -vt 0.564197 0.619244 -vt 0.564197 0.593980 -vt 0.489206 0.583813 -vt 0.751674 0.583813 -vt 0.751674 0.593980 -vt 0.489206 0.593980 -vt 0.601692 0.583813 -vt 0.601692 0.593980 -vt 0.639188 0.593980 -vt 0.451827 0.314796 -vt 0.579610 0.279064 -vt 0.601536 0.314798 -vt 0.451711 0.619244 -vt 0.489206 0.619244 -vt 0.714179 0.619244 -vt 0.639188 0.619244 -vt 0.601692 0.619244 -vt 0.526701 0.619244 -vt 0.751674 0.619244 -vt 0.676683 0.619244 -vt 0.601692 0.385823 -vt 0.564197 0.365688 -vt 0.564197 0.385823 -vt 0.676683 0.385823 -vt 0.639188 0.385823 -vt 0.489206 0.385823 -vt 0.451711 0.385823 -vt 0.714179 0.385823 -vt 0.624771 0.279664 -vt 0.751320 0.315075 -vt 0.603068 0.315060 -vt 0.526701 0.365688 -vt 0.489206 0.365688 -vt 0.751674 0.385823 -vt 0.714179 0.365688 -vt 0.639188 0.365688 -vt 0.451711 0.365688 -vt 0.676683 0.365688 -vt 0.601692 0.365688 -vt 0.751346 0.193282 -vt 0.452761 0.263765 -vt 0.751346 0.263765 -vt 0.647089 0.751158 -vt 0.571440 0.645292 -vt 0.647089 0.645292 -vt 0.571440 0.751158 -vt 0.526386 0.644688 -vt 0.526386 0.751158 -vt 0.451379 0.644688 -vt 0.691237 0.751158 -vt 0.691237 0.645292 -vt 0.451379 0.619409 -vt 0.526386 0.619409 -vt 0.820207 0.914045 -vt 0.865118 0.939246 -vt 0.865118 0.914045 -vt 0.954494 0.939246 -vt 0.954494 0.914045 -vt 1.000067 0.939246 -vt 1.000067 0.914045 -vt 0.948519 0.999611 -vt 0.821154 0.982062 -vt 0.999562 0.982062 -vt 0.997335 0.982124 -vt 0.872418 0.999486 -vt 0.821195 0.982124 -vt 0.998746 0.842514 -vt 0.916847 0.720802 -vt 0.916847 0.842514 -vt 0.916847 0.665046 -vt 0.834948 0.720802 -vt 0.753049 0.720802 -vt 0.834948 0.842514 -vt 0.225330 0.955040 -vt 0.262812 0.116603 -vt 0.225330 0.116603 -vt 0.262812 0.955040 -vt 0.300293 0.116603 -vt 0.300293 0.955040 -vt 0.337775 0.116603 -vt 0.337775 0.955040 -vt 0.375256 0.116603 -vt 0.375256 0.955040 -vt 0.412738 0.116603 -vt 0.037923 0.955040 -vt 0.075404 0.116603 -vt 0.037923 0.116603 -vt 0.075404 0.955040 -vt 0.112886 0.116603 -vt 0.112886 0.955040 -vt 0.150367 0.116603 -vt 0.262812 0.959827 -vt 0.150367 0.955040 -vt 0.187849 0.116603 -vt 0.187849 0.955040 -vt 0.187849 0.101602 -vt 0.144918 0.065072 -vt 0.006436 0.036153 -vt 0.145032 0.034460 -vt 0.150367 0.101602 -vt 0.112886 0.101602 -vt 0.075404 0.101602 -vt 0.037923 0.101602 -vt 0.375256 0.101602 -vt 0.337775 0.101602 -vt 0.262812 0.101602 -vt 0.225330 0.101602 -vt 0.300293 0.101602 -vt 0.337775 0.959827 -vt 0.300293 0.999948 -vt 0.337775 0.999948 -vt 0.300293 0.959827 -vt 0.187849 0.959827 -vt 0.225330 0.959827 -vt 0.150367 0.959827 -vt 0.112886 0.959827 -vt 0.075404 0.959827 -vt 0.412738 0.955040 -vt 0.375256 0.959827 -vt 0.412738 0.959827 -vt 0.153921 0.065967 -vt 0.296232 0.034750 -vt 0.295940 0.065362 -vt 0.225330 0.999948 -vt 0.075404 0.999948 -vt 0.112886 0.999948 -vt 0.375256 0.999948 -vt 0.262812 0.999948 -vt 0.150367 0.999948 -vt 0.412738 0.999948 -vt 0.187849 0.999948 -vt 0.037923 0.999948 -vt 0.818514 0.843077 -vt 0.527579 0.999529 -vt 0.451532 0.904025 -vt 0.452109 0.751835 -vt 0.453239 0.868198 -vt 0.463954 0.851318 -vt 0.489628 0.844584 -vt 0.515221 0.851940 -vt 0.489352 0.892690 -vt 0.451711 0.593980 -vt 0.579613 0.350531 -vt 0.473752 0.350529 -vt 0.526683 0.365331 -vt 0.473750 0.279063 -vt 0.526680 0.264262 -vt 0.729617 0.350470 -vt 0.677205 0.365127 -vt 0.624787 0.350459 -vt 0.677183 0.265008 -vt 0.729601 0.279675 -vt 0.751674 0.365688 -vt 0.452761 0.193282 -vt 0.451379 0.751158 -vt 0.820207 0.939246 -vt 0.872853 0.939693 -vt 0.947243 0.939693 -vt 0.999034 0.957243 -vt 0.820625 0.957243 -vt 0.874129 0.999611 -vt 0.821713 0.957571 -vt 0.997853 0.957571 -vt 0.873670 0.940209 -vt 0.946630 0.940209 -vt 0.945378 0.999486 -vt 0.998746 0.720802 -vt 0.834948 0.665046 -vt 0.753049 0.842514 -vt 0.032998 0.011064 -vt 0.075862 0.001081 -vt 0.118655 0.010018 -vt 0.118356 0.090161 -vt 0.032699 0.091207 -vt 0.075492 0.100143 -vt 0.006322 0.066764 -vt 0.412738 0.101602 -vt 0.037923 0.959827 -vt 0.268581 0.090244 -vt 0.224605 0.099890 -vt 0.180808 0.090618 -vt 0.154212 0.035355 -vt 0.181571 0.010473 -vt 0.225547 0.000826 -vt 0.269344 0.010099 -vn 1.0000 0.0000 -0.0000 -vn -1.0000 -0.0000 0.0000 -vn 0.0000 0.0000 -1.0000 -vn 0.0000 -1.0000 0.0000 -vn -0.3827 0.0000 0.9239 -vn -0.9239 0.0000 0.3827 -vn -0.9239 -0.0000 -0.3827 -vn -0.3827 -0.0000 -0.9239 -vn 0.3827 -0.0000 -0.9239 -vn 0.9239 0.0000 -0.3827 -vn 0.9239 0.0000 0.3827 -vn 0.3827 0.0000 0.9239 -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.3827 -0.9239 0.0000 -vn 0.9239 -0.3827 -0.0000 -vn -0.3839 -0.1590 0.9096 -vn 0.9239 0.3827 -0.0000 -vn 0.3827 0.9239 -0.0000 -vn 0.4572 0.1894 -0.8689 -vn 0.3839 -0.1590 0.9096 -vn -0.1590 -0.3839 0.9096 -vn 0.3839 0.1590 0.9096 -vn -0.3839 0.1590 0.9096 -vn 0.1590 -0.3839 0.9096 -vn 0.1590 0.3839 0.9096 -vn -0.1590 0.3839 0.9096 -vn -0.4572 0.1894 -0.8689 -vn 0.1894 -0.4572 -0.8689 -vn 0.1894 0.4572 -0.8689 -vn -0.1894 0.4572 -0.8689 -vn -0.4572 -0.1894 -0.8690 -vn -0.4572 -0.1894 -0.8689 -vn 0.4572 -0.1894 -0.8689 -vn -0.1894 -0.4572 -0.8689 -vn 0.0000 0.0000 1.0000 -vn 0.4226 0.9063 -0.0000 -vn -0.0142 -0.7129 0.7011 -vn -0.0003 -1.0000 -0.0082 -vn 0.0139 -0.7012 -0.7128 -vn -0.9998 0.0004 -0.0199 -vn 0.9998 -0.0004 0.0199 -vn -0.3090 0.9511 -0.0000 -vn -0.8090 0.5878 0.0000 -vn -0.8090 -0.5878 0.0000 -vn -0.3090 -0.9511 0.0000 -vn 0.3090 -0.9511 0.0000 -vn 0.8090 -0.5878 -0.0000 -vn -0.1904 0.5858 0.7877 -vn -0.1903 0.5859 0.7877 -vn 0.8090 0.5878 -0.0000 -vn 0.3090 0.9511 -0.0000 -vn 0.1206 0.3711 -0.9207 -vn 0.3157 0.2294 -0.9207 -vn 0.3902 0.0000 -0.9207 -vn 0.3157 -0.2294 -0.9207 -vn 0.1206 -0.3711 -0.9207 -vn -0.1206 -0.3711 -0.9207 -vn -0.3157 -0.2294 -0.9207 -vn -0.1206 0.3711 -0.9207 -vn -0.3902 0.0000 -0.9207 -vn -0.3157 0.2294 -0.9207 -vn -0.6160 0.0000 0.7877 -vn -0.4984 0.3621 0.7877 -vn -0.4983 0.3621 0.7877 -vn -0.4983 0.3621 0.7878 -vn 0.1904 0.5858 0.7877 -vn 0.1903 0.5859 0.7877 -vn 0.4984 0.3621 0.7877 -vn 0.4983 0.3621 0.7877 -vn 0.6160 0.0000 0.7877 -vn 0.4984 -0.3621 0.7877 -vn 0.1904 -0.5859 0.7877 -vn -0.1904 -0.5859 0.7877 -vn -0.4984 -0.3621 0.7877 -vn -0.4572 0.1894 -0.8690 -vn -0.4983 -0.3621 0.7877 -usemtl None -s 1 -f 1/1/1 2/2/1 3/3/1 -f 4/4/2 5/5/2 6/6/2 -f 7/7/3 3/3/3 5/5/3 -f 6/6/4 3/3/4 2/2/4 -f 8/8/5 9/9/5 10/10/5 -f 11/11/6 12/12/6 9/9/6 -f 13/13/7 14/14/7 12/12/7 -f 15/15/8 16/16/8 14/14/8 -f 17/17/9 18/18/9 16/19/9 -f 19/20/10 20/21/10 18/18/10 -f 21/22/11 22/23/11 20/21/11 -f 23/24/12 10/10/12 22/23/12 -f 16/25/4 18/26/4 22/27/4 -f 24/28/13 25/29/13 26/30/13 -f 26/30/14 27/31/14 28/32/14 -f 27/31/15 29/33/15 28/32/15 -f 30/34/16 31/35/16 29/33/16 -f 32/36/17 33/37/17 31/38/17 -f 33/37/18 34/39/18 35/40/18 -f 30/34/19 36/41/19 37/42/19 -f 35/40/20 38/43/20 39/44/20 -f 38/43/21 24/28/21 39/44/21 -f 39/44/22 40/45/22 35/40/22 -f 41/46/20 42/47/20 43/48/20 -f 44/49/23 41/46/23 34/39/23 -f 32/50/24 37/42/24 45/51/24 -f 38/43/25 41/46/25 43/48/25 -f 25/29/26 36/41/26 27/31/26 -f 32/36/27 46/52/27 44/49/27 -f 47/53/28 43/48/28 48/54/28 -f 47/53/29 49/55/29 25/29/29 -f 50/56/3 51/57/3 52/58/3 -f 46/52/17 53/59/17 54/60/17 -f 36/41/15 51/61/15 37/42/15 -f 48/54/13 55/62/13 49/55/13 -f 43/48/21 56/63/21 48/54/21 -f 46/52/18 50/64/18 41/46/18 -f 37/42/16 53/65/16 45/51/16 -f 49/55/14 52/66/14 36/41/14 -f 57/67/21 58/68/21 59/69/21 -f 26/30/30 60/70/30 61/71/30 -f 31/38/31 62/72/31 63/73/31 -f 24/28/32 59/69/32 39/44/32 -f 24/28/33 61/71/33 57/67/33 -f 29/33/34 60/70/35 28/32/35 -f 33/37/36 40/45/36 62/72/36 -f 31/35/37 64/74/37 29/33/37 -f 65/75/38 66/76/38 67/77/38 -f 62/72/18 66/78/18 68/79/18 -f 63/80/16 65/81/16 64/74/16 -f 60/70/14 69/82/14 61/71/14 -f 40/45/20 58/68/20 66/78/20 -f 62/72/17 70/83/17 63/73/17 -f 64/74/15 67/84/15 60/70/15 -f 61/71/13 71/85/13 57/67/13 -f 72/86/39 73/87/39 74/88/39 -f 75/89/1 76/90/1 77/91/1 -f 78/92/38 79/93/38 76/90/38 -f 80/94/2 81/95/2 79/93/2 -f 82/96/3 77/91/3 81/97/3 -f 79/93/4 77/98/4 76/99/4 -f 83/100/40 84/101/40 85/102/40 -f 85/102/41 86/103/41 87/104/41 -f 87/104/42 88/105/42 89/106/42 -f 90/107/43 91/108/43 92/109/43 -f 93/110/44 94/111/44 95/112/44 -f 96/113/1 97/114/1 98/115/1 -f 99/116/38 100/117/38 97/114/38 -f 101/118/2 102/119/2 100/117/2 -f 100/117/4 98/115/4 97/114/4 -f 103/120/45 104/121/45 105/122/45 -f 106/123/46 107/124/46 104/121/46 -f 108/125/2 109/126/2 107/124/2 -f 110/127/47 111/128/47 109/126/47 -f 112/129/48 113/130/48 111/128/48 -f 114/131/49 115/132/49 113/133/49 -f 116/134/50 117/135/50 115/132/50 -f 118/136/1 119/137/1 117/135/1 -f 103/120/51 120/138/52 106/123/52 -f 121/139/53 122/140/53 119/137/53 -f 123/141/54 105/122/54 122/140/54 -f 105/122/55 124/142/55 122/140/55 -f 125/143/38 126/144/38 127/145/38 -f 122/140/56 126/146/56 119/137/56 -f 117/135/57 126/146/57 128/147/57 -f 115/132/58 128/147/58 129/148/58 -f 113/133/59 129/148/59 130/149/59 -f 113/130/60 131/150/60 111/128/60 -f 111/128/61 125/151/61 109/126/61 -f 105/122/62 132/152/62 133/153/62 -f 109/126/63 127/154/63 107/124/63 -f 104/121/64 127/154/64 132/152/64 -f 134/155/2 135/156/2 136/157/2 -f 108/125/65 134/155/65 110/127/65 -f 106/123/66 137/158/67 108/125/68 -f 103/120/69 138/159/70 139/160/69 -f 123/141/71 140/161/72 138/159/71 -f 118/136/73 140/161/73 121/139/73 -f 116/134/74 141/162/74 118/136/74 -f 114/131/75 142/163/75 116/134/75 -f 114/164/76 143/165/76 144/166/76 -f 112/129/77 134/155/77 143/165/77 -f 145/167/3 136/168/3 135/169/3 -f 138/159/54 146/170/54 139/160/54 -f 141/162/50 147/171/50 148/172/50 -f 143/165/47 136/157/47 149/173/47 -f 139/160/45 150/174/45 120/138/45 -f 141/162/1 145/175/1 140/161/1 -f 144/166/48 149/173/48 151/176/48 -f 120/138/46 135/156/46 137/158/46 -f 140/161/53 152/177/53 138/159/53 -f 142/163/49 151/178/49 147/171/49 -f 1/1/1 153/179/1 2/2/1 -f 4/4/2 7/180/2 5/5/2 -f 7/7/3 1/181/3 3/3/3 -f 6/6/4 5/5/4 3/3/4 -f 8/8/5 11/11/5 9/9/5 -f 11/11/6 13/13/6 12/12/6 -f 13/13/7 15/15/7 14/14/7 -f 15/15/8 17/182/8 16/16/8 -f 17/17/9 19/20/9 18/18/9 -f 19/20/10 21/22/10 20/21/10 -f 21/22/11 23/24/11 22/23/11 -f 23/24/12 8/8/12 10/10/12 -f 22/27/4 10/183/4 16/25/4 -f 9/184/4 12/185/4 14/186/4 -f 14/186/4 16/25/4 10/183/4 -f 18/26/4 20/187/4 22/27/4 -f 10/183/4 9/184/4 14/186/4 -f 24/28/13 47/53/13 25/29/13 -f 26/30/14 25/29/14 27/31/14 -f 27/31/15 30/34/15 29/33/15 -f 30/34/16 32/50/16 31/35/16 -f 32/36/17 44/49/17 33/37/17 -f 33/37/18 44/49/18 34/39/18 -f 30/34/19 27/31/19 36/41/19 -f 35/40/20 34/39/20 38/43/20 -f 38/43/21 47/53/21 24/28/21 -f 39/44/22 59/69/22 40/45/22 -f 41/46/20 50/64/20 42/47/20 -f 44/49/23 46/52/23 41/46/23 -f 32/50/24 30/34/24 37/42/24 -f 38/43/25 34/39/25 41/46/25 -f 25/29/26 49/55/26 36/41/26 -f 32/36/27 45/188/27 46/52/27 -f 47/53/28 38/43/28 43/48/28 -f 47/53/29 48/54/29 49/55/29 -f 52/58/3 55/189/3 42/190/3 -f 56/191/3 42/190/3 55/189/3 -f 50/56/3 54/192/3 51/57/3 -f 53/193/3 51/57/3 54/192/3 -f 52/58/3 42/190/3 50/56/3 -f 46/52/17 45/188/17 53/59/17 -f 36/41/15 52/66/15 51/61/15 -f 48/54/13 56/63/13 55/62/13 -f 43/48/21 42/47/21 56/63/21 -f 46/52/18 54/60/18 50/64/18 -f 37/42/16 51/61/16 53/65/16 -f 49/55/14 55/62/14 52/66/14 -f 57/67/21 71/85/21 58/68/21 -f 26/30/30 28/32/78 60/70/30 -f 31/38/31 33/37/31 62/72/31 -f 24/28/32 57/67/32 59/69/32 -f 24/28/33 26/30/33 61/71/33 -f 29/33/34 64/74/34 60/70/35 -f 33/37/36 35/40/36 40/45/36 -f 31/35/37 63/80/37 64/74/37 -f 58/194/38 71/195/38 69/196/38 -f 69/196/38 67/77/38 58/194/38 -f 65/75/38 70/197/38 68/198/38 -f 68/198/38 66/76/38 65/75/38 -f 58/194/38 67/77/38 66/76/38 -f 62/72/18 40/45/18 66/78/18 -f 63/80/16 70/199/16 65/81/16 -f 60/70/14 67/84/14 69/82/14 -f 40/45/20 59/69/20 58/68/20 -f 62/72/17 68/79/17 70/83/17 -f 64/74/15 65/81/15 67/84/15 -f 61/71/13 69/82/13 71/85/13 -f 72/86/39 154/200/39 73/87/39 -f 75/89/1 78/92/1 76/90/1 -f 78/92/38 80/94/38 79/93/38 -f 80/94/2 82/201/2 81/95/2 -f 82/96/3 75/89/3 77/91/3 -f 79/93/4 81/95/4 77/98/4 -f 83/100/40 155/202/40 84/101/40 -f 85/102/41 84/101/41 86/103/41 -f 87/104/42 86/103/42 88/105/42 -f 86/203/43 84/204/43 155/205/43 -f 155/205/43 92/109/43 88/206/43 -f 90/107/43 156/207/43 91/108/43 -f 91/108/43 88/206/43 92/109/43 -f 86/203/43 155/205/43 88/206/43 -f 95/112/44 83/208/44 89/209/44 -f 85/210/44 87/211/44 83/208/44 -f 89/209/44 93/110/44 95/112/44 -f 157/212/44 94/111/44 93/110/44 -f 83/208/44 87/211/44 89/209/44 -f 96/113/1 99/213/1 97/114/1 -f 99/116/38 101/214/38 100/117/38 -f 101/118/2 158/215/2 102/119/2 -f 100/117/4 102/119/4 98/115/4 -f 103/120/45 106/123/45 104/121/45 -f 106/123/46 108/125/46 107/124/46 -f 108/125/2 110/127/2 109/126/2 -f 110/127/47 112/129/47 111/128/47 -f 112/129/48 114/164/48 113/130/48 -f 114/131/49 116/134/49 115/132/49 -f 116/134/50 118/136/50 117/135/50 -f 118/136/1 121/139/1 119/137/1 -f 103/120/51 139/160/51 120/138/52 -f 121/139/53 123/141/53 122/140/53 -f 123/141/54 103/120/54 105/122/54 -f 105/122/55 133/153/55 124/142/55 -f 124/216/38 133/217/38 132/218/38 -f 132/218/38 127/145/38 124/216/38 -f 125/143/38 131/219/38 129/220/38 -f 130/221/38 129/220/38 131/219/38 -f 128/222/38 126/144/38 125/143/38 -f 124/216/38 127/145/38 126/144/38 -f 125/143/38 129/220/38 128/222/38 -f 122/140/56 124/142/56 126/146/56 -f 117/135/57 119/137/57 126/146/57 -f 115/132/58 117/135/58 128/147/58 -f 113/133/59 115/132/59 129/148/59 -f 113/130/60 130/223/60 131/150/60 -f 111/128/61 131/150/61 125/151/61 -f 105/122/62 104/121/62 132/152/62 -f 109/126/63 125/151/63 127/154/63 -f 104/121/64 107/124/64 127/154/64 -f 134/155/2 137/158/2 135/156/2 -f 108/125/65 137/158/65 134/155/65 -f 106/123/66 120/138/66 137/158/67 -f 103/120/69 123/141/70 138/159/70 -f 123/141/71 121/139/72 140/161/72 -f 118/136/73 141/162/73 140/161/73 -f 116/134/74 142/163/74 141/162/74 -f 114/131/75 144/224/75 142/163/75 -f 114/164/76 112/129/76 143/165/76 -f 112/129/77 110/127/79 134/155/77 -f 135/169/3 150/225/3 145/167/3 -f 146/226/3 152/227/3 150/225/3 -f 145/167/3 148/228/3 136/168/3 -f 147/229/3 151/230/3 149/231/3 -f 149/231/3 136/168/3 148/228/3 -f 150/225/3 152/227/3 145/167/3 -f 148/228/3 147/229/3 149/231/3 -f 138/159/54 152/177/54 146/170/54 -f 141/162/50 142/163/50 147/171/50 -f 143/165/47 134/155/47 136/157/47 -f 139/160/45 146/170/45 150/174/45 -f 141/162/1 148/172/1 145/175/1 -f 144/166/48 143/165/48 149/173/48 -f 120/138/46 150/174/46 135/156/46 -f 140/161/53 145/175/53 152/177/53 -f 142/163/49 144/224/49 151/178/49 o Mag_Cube.002 v -0.089029 2.933951 -0.760703 v -0.089029 1.301304 -1.115814 @@ -809,7 +81,7 @@ vt 0.847847 0.234129 vt 0.870079 0.477673 vt 0.832728 0.477252 vt 0.845893 0.232242 -vn -1.0000 0.0000 0.0000 +vn -1.0000 -0.0000 0.0000 vn 0.0000 -0.0279 -0.9996 vn 0.9599 0.0013 0.2804 vn 0.9594 0.0014 0.2820 @@ -833,50 +105,789 @@ vn 0.9591 0.0015 0.2831 vn 0.9632 -0.0258 0.2676 vn -0.9993 0.0350 0.0119 vn -0.9602 0.0012 0.2793 -usemtl None_NONE s 1 -f 159/232/80 160/233/80 161/234/80 -f 162/235/81 160/236/81 163/237/81 -f 164/238/82 165/239/83 166/240/84 -f 167/241/85 165/242/85 168/243/85 -f 160/244/86 166/245/86 161/246/86 -f 169/247/87 170/248/87 171/249/88 -f 172/250/89 168/251/89 173/252/89 -f 174/253/90 168/254/90 164/238/90 -f 175/255/91 163/237/91 176/256/92 -f 177/257/80 163/258/80 159/232/80 -f 170/259/80 176/260/80 177/257/80 -f 169/261/92 176/256/92 178/262/92 -f 171/263/93 173/264/93 174/253/93 -f 179/265/94 173/266/94 180/267/94 -f 171/263/93 175/268/93 169/269/93 -f 170/259/80 172/270/80 179/271/80 -f 177/257/95 167/272/95 172/270/95 -f 174/253/93 162/273/93 175/268/93 -f 171/249/88 179/274/88 180/275/88 -f 161/246/96 165/276/96 181/277/96 -f 164/238/93 182/278/93 162/273/93 -f 159/232/97 181/279/98 167/272/99 -f 159/232/80 163/258/80 160/233/80 -f 162/235/81 182/280/81 160/236/81 -f 164/238/82 168/254/100 165/239/83 -f 167/241/85 181/281/85 165/242/85 -f 160/244/86 182/282/86 166/245/86 -f 169/247/87 178/283/87 170/248/87 -f 172/250/89 167/284/89 168/251/89 -f 174/253/101 173/264/101 168/254/101 -f 175/255/91 162/235/91 163/237/91 -f 177/257/80 176/260/80 163/258/80 -f 170/259/80 178/285/80 176/260/80 -f 169/261/92 175/255/91 176/256/92 -f 171/263/93 180/286/93 173/264/93 -f 179/265/94 172/287/94 173/266/94 -f 171/263/93 174/253/93 175/268/93 -f 170/259/80 177/257/80 172/270/80 -f 177/257/102 159/232/102 167/272/102 -f 174/253/93 164/238/93 162/273/93 -f 171/249/88 170/248/87 179/274/88 -f 161/246/96 166/245/96 165/276/96 -f 164/238/93 166/240/93 182/278/93 -f 159/232/97 161/234/103 181/279/98 - +f 1/1/1 2/2/1 3/3/1 +f 4/4/2 2/5/2 5/6/2 +f 6/7/3 7/8/4 8/9/5 +f 9/10/6 7/11/6 10/12/6 +f 2/13/7 8/14/7 3/15/7 +f 11/16/8 12/17/8 13/18/9 +f 14/19/10 10/20/10 15/21/10 +f 16/22/11 10/23/11 6/7/11 +f 17/24/12 5/6/12 18/25/13 +f 19/26/1 5/27/1 1/1/1 +f 12/28/1 18/29/1 19/26/1 +f 11/30/13 18/25/13 20/31/13 +f 13/32/14 15/33/14 16/22/14 +f 21/34/15 15/35/15 22/36/15 +f 13/32/14 17/37/14 11/38/14 +f 12/28/1 14/39/1 21/40/1 +f 19/26/16 9/41/16 14/39/16 +f 16/22/14 4/42/14 17/37/14 +f 13/18/9 21/43/9 22/44/9 +f 3/15/17 7/45/17 23/46/17 +f 6/7/14 24/47/14 4/42/14 +f 1/1/18 23/48/19 9/41/20 +f 1/1/1 5/27/1 2/2/1 +f 4/4/2 24/49/2 2/5/2 +f 6/7/3 10/23/21 7/8/4 +f 9/10/6 23/50/6 7/11/6 +f 2/13/7 24/51/7 8/14/7 +f 11/16/8 20/52/8 12/17/8 +f 14/19/10 9/53/10 10/20/10 +f 16/22/22 15/33/22 10/23/22 +f 17/24/12 4/4/12 5/6/12 +f 19/26/1 18/29/1 5/27/1 +f 12/28/1 20/54/1 18/29/1 +f 11/30/13 17/24/12 18/25/13 +f 13/32/14 22/55/14 15/33/14 +f 21/34/15 14/56/15 15/35/15 +f 13/32/14 16/22/14 17/37/14 +f 12/28/1 19/26/1 14/39/1 +f 19/26/23 1/1/23 9/41/23 +f 16/22/14 6/7/14 4/42/14 +f 13/18/9 12/17/8 21/43/9 +f 3/15/17 8/14/17 7/45/17 +f 6/7/14 8/9/14 24/47/14 +f 1/1/18 3/3/24 23/48/19 +o Cube.001_Cube.002 +v 0.393889 3.128783 -9.337228 +v 0.393890 1.846543 -5.892444 +v 0.393889 1.846542 -9.337228 +v -0.393894 3.128783 -5.892444 +v -0.393895 1.846542 -9.337228 +v -0.393894 1.846543 -5.892444 +v -0.393895 3.128783 -9.337228 +v -0.000002 3.303435 -5.049528 +v -0.382998 1.728983 -5.208168 +v -0.000002 1.728983 -5.049528 +v -0.382998 3.303435 -5.208168 +v -0.541638 1.728983 -5.591164 +v -0.541638 3.303435 -5.591164 +v -0.382998 1.728983 -5.974160 +v -0.382998 3.303435 -5.974160 +v -0.000002 1.728983 -6.132800 +v -0.000002 3.303435 -6.132800 +v 0.382994 1.728983 -5.974160 +v 0.382994 3.303435 -5.974160 +v 0.541634 1.728983 -5.591164 +v 0.541634 3.303435 -5.591164 +v 0.382994 1.728983 -5.208168 +v 0.382994 3.303435 -5.208168 +v -1.403786 4.699999 -5.797567 +v -1.686627 4.582843 -7.948311 +v -1.686626 4.582843 -5.797567 +v -1.803787 4.300000 -7.948311 +v -1.803786 4.300000 -5.797567 +v -1.686626 4.017156 -5.797567 +v -1.686627 4.017156 -7.948311 +v -1.403786 3.899999 -5.797567 +v -1.403787 3.899999 -7.948311 +v -1.120942 4.017156 -5.797567 +v -1.003787 4.300000 -7.948312 +v -1.003786 4.300000 -5.797568 +v -1.883787 4.300000 -7.982080 +v -1.743199 3.960587 -7.982080 +v -1.120943 4.582843 -7.948312 +v -1.120942 4.582843 -5.797568 +v -0.923786 4.300000 -5.755472 +v -0.923787 4.300000 -7.982080 +v -1.064375 4.639411 -8.277956 +v -1.064375 4.639411 -7.982080 +v -1.120943 4.017156 -7.948311 +v -1.403787 3.819999 -7.982080 +v -1.064375 3.960587 -7.982080 +v -1.403787 4.699999 -7.948311 +v -1.403787 4.779999 -7.982080 +v -1.743199 4.639411 -7.982080 +v -0.923787 4.300000 -8.277956 +v -1.743199 3.960588 -8.277955 +v -1.883787 4.300000 -8.277955 +v -1.403787 3.819999 -8.277956 +v -1.064375 3.960588 -8.277956 +v -1.743199 4.639411 -8.277956 +v -1.403787 4.779999 -8.277956 +v -1.403786 4.779999 -5.755472 +v -1.064374 4.639411 -5.489088 +v -1.064374 4.639411 -5.755472 +v -1.883786 4.300000 -5.755472 +v -1.743198 4.639411 -5.755472 +v -1.064374 3.960587 -5.755472 +v -1.403786 3.819999 -5.755472 +v -1.743198 3.960587 -5.755472 +v -1.743198 3.960587 -5.489088 +v -0.923786 4.300000 -5.489088 +v -1.883786 4.300000 -5.489088 +v -1.064374 3.960587 -5.489088 +v -1.743198 4.639411 -5.489088 +v -1.403786 3.819999 -5.489088 +v -1.403786 4.779999 -5.489088 +v -1.473919 4.208779 -7.811895 +v -0.447114 3.729971 -5.941060 +v -0.447115 3.729971 -7.811896 +v 0.128767 2.756387 -3.983544 +v 0.128767 1.614719 -3.555136 +v 0.128767 1.614719 -3.983544 +v 0.128767 2.756387 -3.555136 +v -0.128769 1.614719 -3.555136 +v -0.128769 2.756387 -3.555136 +v -0.128769 1.614719 -3.983544 +v -0.128769 2.756387 -3.983544 +v 0.190951 3.077327 -3.167776 +v -0.208109 2.727468 -3.531600 +v 0.197875 2.727295 -3.523528 +v -0.198185 2.731559 -4.030576 +v 0.207799 2.731387 -4.022504 +v -0.191081 3.087375 -4.380480 +v 0.214907 3.087207 -4.372408 +v -0.207801 3.932427 -3.521620 +v -0.190953 3.586487 -4.376348 +v -0.214909 3.576612 -3.171716 +v 0.215035 3.586319 -4.368276 +v 0.198183 3.932260 -3.513548 +v 0.191079 3.576439 -3.163644 +v 0.771273 5.530663 -9.417193 +v 0.771274 4.098263 -6.669316 +v 0.771273 4.098262 -9.417192 +v 0.771274 5.530663 -6.669315 +v -0.771278 4.098263 -6.669316 +v -0.771278 5.530663 -6.669315 +v -0.771279 4.098262 -9.417192 +v -0.000003 4.089743 -9.779048 +v -0.346641 3.977118 9.779048 +v 0.000003 4.089749 9.779048 +v -0.346647 3.977114 -9.779048 +v -0.560881 3.682245 9.779048 +v -0.560887 3.682239 -9.779048 +v -0.560881 3.317761 9.779048 +v -0.560887 3.317755 -9.779048 +v -0.346641 3.022886 9.779048 +v -0.346647 3.022882 -9.779048 +v 0.000003 2.910254 9.779048 +v -0.000003 2.910250 -9.779048 +v 0.346647 3.022886 9.779048 +v 0.346641 3.022882 -9.779048 +v 0.560887 3.317761 9.779048 +v 0.560881 3.317755 -9.779048 +v 0.560887 3.682245 9.779048 +v -0.381311 4.024827 -9.822908 +v 0.560881 3.682239 -9.779048 +v 0.346647 3.977118 9.779048 +v 0.346641 3.977114 -9.779048 +v 0.519971 4.215672 9.897908 +v -0.841321 3.226638 9.897908 +v 0.841327 3.773365 9.897908 +v -0.841321 3.773365 9.897908 +v 0.841327 3.226638 9.897908 +v 0.519971 2.784329 9.897908 +v 0.000003 2.615381 9.897908 +v -0.519965 2.784329 9.897908 +v -0.519965 4.215672 9.897908 +v 0.000003 4.384622 9.897908 +v -0.616975 3.299531 -9.822908 +v -0.616975 3.700463 -10.379472 +v -0.616975 3.299531 -10.379472 +v -0.616975 3.700463 -9.822908 +v 0.381305 4.024827 -9.822908 +v -0.000003 4.148718 -9.822908 +v 0.616969 3.700463 -9.822908 +v 0.616969 3.299531 -9.822908 +v 0.381305 2.975170 -9.822908 +v -0.381311 2.975170 -9.822908 +v -0.000003 2.851279 -9.822908 +v 0.616969 3.700463 -10.379472 +v -0.000003 4.148718 -10.379472 +v 0.381305 2.975170 -10.379472 +v 0.616969 3.299531 -10.379472 +v -0.381311 2.975170 -10.379472 +v -0.381311 4.024827 -10.379472 +v -0.000003 2.851279 -10.379472 +v 0.381305 4.024827 -10.379472 +v 0.393890 3.128783 -5.892444 +v -1.473918 4.208779 -5.941060 +v -0.215037 3.077499 -3.175848 +v -0.197877 3.936519 -4.020596 +v 0.208107 3.936351 -4.012524 +v -0.771279 5.530663 -9.417192 +v 0.771273 5.530663 -9.417193 +v 0.771274 4.098263 -6.669316 +v 0.771273 4.098262 -9.417192 +v 0.771274 5.530663 -6.669315 +v -0.771278 4.098263 -6.669316 +v -0.771278 5.530663 -6.669315 +v -0.771279 4.098262 -9.417192 +v -0.771279 5.530663 -9.417192 +vt 0.753049 0.842514 +vt 0.834948 0.720802 +vt 0.753049 0.720802 +vt 0.451379 0.751158 +vt 0.526386 0.644688 +vt 0.526386 0.751158 +vt 0.647089 0.751158 +vt 0.691237 0.645292 +vt 0.691237 0.751158 +vt 0.571440 0.645292 +vt 0.571440 0.751158 +vt 0.834948 0.720802 +vt 0.753049 0.842514 +vt 0.753049 0.720802 +vt 0.865118 0.914045 +vt 0.954494 0.939246 +vt 0.954494 0.914045 +vt 0.677183 0.265008 +vt 0.751320 0.315075 +vt 0.677205 0.365127 +vt 0.647089 0.645292 +vt 0.451379 0.644688 +vt 0.526386 0.619409 +vt 0.916847 0.720802 +vt 0.834948 0.842514 +vt 0.998746 0.720802 +vt 0.916847 0.842514 +vt 0.998746 0.842514 +vt 0.451532 0.904025 +vt 0.527579 0.938195 +vt 0.451532 0.938195 +vt 1.000067 0.939246 +vt 1.000067 0.914045 +vt 0.997335 0.982124 +vt 0.821713 0.957571 +vt 0.997853 0.957571 +vt 0.948519 0.999611 +vt 0.821154 0.982062 +vt 0.999562 0.982062 +vt 0.872418 0.999486 +vt 0.821195 0.982124 +vt 0.916847 0.720802 +vt 0.527579 0.999529 +vt 0.818514 0.938957 +vt 0.818514 0.999529 +vt 0.751346 0.193282 +vt 0.452761 0.263765 +vt 0.751346 0.263765 +vt 0.834948 0.665046 +vt 0.916847 0.665046 +vt 0.527579 0.843077 +vt 0.818514 0.903517 +vt 0.527579 0.904025 +vt 0.820207 0.914045 +vt 0.865118 0.939246 +vt 0.916847 0.842514 +vt 0.998746 0.720802 +vt 0.998746 0.842514 +vt 0.489352 0.892690 +vt 0.453239 0.868198 +vt 0.489628 0.844584 +vt 0.834948 0.665046 +vt 0.916847 0.665046 +vt 0.118655 0.010018 +vt 0.144918 0.065072 +vt 0.075492 0.100143 +vt 0.872853 0.939693 +vt 0.947243 0.939693 +vt 0.999034 0.957243 +vt 0.874129 0.999611 +vt 0.820625 0.957243 +vt 0.873670 0.940209 +vt 0.946630 0.940209 +vt 0.945378 0.999486 +vt 0.526680 0.264262 +vt 0.601536 0.314798 +vt 0.526683 0.365331 +vt 0.181571 0.010473 +vt 0.295940 0.065362 +vt 0.224605 0.099890 +vt 0.834948 0.842514 +vt 0.624787 0.350459 +vt 0.603068 0.315060 +vt 0.624771 0.279664 +vt 0.729601 0.279675 +vt 0.729617 0.350470 +vt 0.451379 0.619409 +vt 0.452761 0.193282 +vt 0.818514 0.843077 +vt 0.820207 0.939246 +vt 0.515221 0.851940 +vt 0.525741 0.869077 +vt 0.515026 0.885956 +vt 0.463759 0.885334 +vt 0.463954 0.851318 +vt 0.006322 0.066764 +vt 0.006436 0.036153 +vt 0.032998 0.011064 +vt 0.075862 0.001081 +vt 0.145032 0.034460 +vt 0.118356 0.090161 +vt 0.032699 0.091207 +vt 0.473752 0.350529 +vt 0.451827 0.314796 +vt 0.473750 0.279063 +vt 0.579610 0.279064 +vt 0.579613 0.350531 +vt 0.180808 0.090618 +vt 0.153921 0.065967 +vt 0.154212 0.035355 +vt 0.225547 0.000826 +vt 0.269344 0.010099 +vt 0.296232 0.034750 +vt 0.268581 0.090244 +vt 0.150367 0.999948 +vt 0.187849 0.959827 +vt 0.150367 0.959827 +vt 0.564045 0.751835 +vt 0.601607 0.842170 +vt 0.601607 0.751835 +vt 0.337775 0.955040 +vt 0.300293 0.116603 +vt 0.300293 0.955040 +vt 0.639188 0.365688 +vt 0.601692 0.385823 +vt 0.639188 0.385823 +vt 0.676683 0.619244 +vt 0.714179 0.593980 +vt 0.676683 0.593980 +vt 0.489206 0.365688 +vt 0.451711 0.385823 +vt 0.489206 0.385823 +vt 0.526858 0.751835 +vt 0.564045 0.842170 +vt 0.526701 0.385823 +vt 0.112886 0.959827 +vt 0.714179 0.583813 +vt 0.676683 0.396030 +vt 0.676683 0.583813 +vt 0.075404 0.955040 +vt 0.037923 0.116603 +vt 0.037923 0.955040 +vt 0.526701 0.583813 +vt 0.564197 0.396030 +vt 0.526701 0.396030 +vt 0.601692 0.583813 +vt 0.639188 0.396030 +vt 0.601692 0.396030 +vt 0.639188 0.593980 +vt 0.639188 0.583813 +vt 0.112886 0.955040 +vt 0.075404 0.116603 +vt 0.489206 0.396030 +vt 0.451711 0.396030 +vt 0.601692 0.365688 +vt 0.564197 0.385823 +vt 0.601692 0.593980 +vt 0.489206 0.583813 +vt 0.526701 0.593980 +vt 0.451711 0.593980 +vt 0.451711 0.583813 +vt 0.564197 0.583813 +vt 0.564197 0.593980 +vt 0.751674 0.593980 +vt 0.751674 0.583813 +vt 0.714295 0.751835 +vt 0.751857 0.842170 +vt 0.751857 0.751835 +vt 0.639545 0.842170 +vt 0.639545 0.751835 +vt 0.452109 0.751835 +vt 0.490047 0.842170 +vt 0.490047 0.751835 +vt 0.714179 0.365688 +vt 0.676683 0.385823 +vt 0.714179 0.385823 +vt 0.751674 0.365688 +vt 0.751674 0.385823 +vt 0.375256 0.959827 +vt 0.337775 0.999948 +vt 0.375256 0.999948 +vt 0.714179 0.619244 +vt 0.676356 0.751835 +vt 0.714295 0.842170 +vt 0.714179 0.396030 +vt 0.751674 0.396030 +vt 0.526858 0.842170 +vt 0.676356 0.842170 +vt 0.564197 0.619244 +vt 0.262812 0.999948 +vt 0.300293 0.959827 +vt 0.262812 0.959827 +vt 0.225330 0.999948 +vt 0.225330 0.959827 +vt 0.526701 0.365688 +vt 0.037923 0.959827 +vt 0.075404 0.999948 +vt 0.075404 0.959827 +vt 0.412738 0.999948 +vt 0.412738 0.959827 +vt 0.225330 0.955040 +vt 0.187849 0.116603 +vt 0.187849 0.955040 +vt 0.187849 0.999948 +vt 0.412738 0.955040 +vt 0.375256 0.116603 +vt 0.375256 0.955040 +vt 0.150367 0.955040 +vt 0.112886 0.116603 +vt 0.262812 0.955040 +vt 0.262812 0.116603 +vt 0.337775 0.116603 +vt 0.225330 0.116603 +vt 0.601692 0.619244 +vt 0.262812 0.101602 +vt 0.225330 0.101602 +vt 0.337775 0.101602 +vt 0.300293 0.101602 +vt 0.037923 0.101602 +vt 0.187849 0.101602 +vt 0.150367 0.116603 +vt 0.150367 0.101602 +vt 0.112886 0.101602 +vt 0.412738 0.101602 +vt 0.412738 0.116603 +vt 0.075404 0.101602 +vt 0.489206 0.619244 +vt 0.489206 0.593980 +vt 0.112886 0.999948 +vt 0.526701 0.619244 +vt 0.337775 0.959827 +vt 0.300293 0.999948 +vt 0.676683 0.365688 +vt 0.451711 0.365688 +vt 0.564197 0.365688 +vt 0.452109 0.842170 +vt 0.751674 0.619244 +vt 0.037923 0.999948 +vt 0.639188 0.619244 +vt 0.375256 0.101602 +vt 0.451711 0.619244 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.0000 1.0000 +vn 1.0000 0.0000 -0.0000 +vn -0.0003 -1.0000 -0.0082 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 -0.0000 +vn 0.0139 -0.7012 -0.7128 +vn 0.9998 -0.0004 0.0199 +vn -0.9998 0.0004 -0.0199 +vn 0.4226 0.9063 -0.0000 +vn -0.0142 -0.7129 0.7011 +vn 0.9511 0.3090 0.0000 +vn 0.5878 0.8090 0.0000 +vn -0.7071 0.0000 0.7071 +vn -0.9511 -0.3090 0.0000 +vn -0.9511 0.3090 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.7071 -0.7071 -0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.9511 -0.3090 0.0000 +vn 0.5878 -0.8090 -0.0000 +vn 0.7071 0.7071 -0.0000 +vn -0.2750 0.2750 0.9213 +vn -0.3889 0.0000 0.9213 +vn 0.3293 -0.3293 -0.8850 +vn -0.0000 -0.4657 -0.8850 +vn -0.0000 0.3889 0.9213 +vn 0.2750 -0.2750 0.9213 +vn 0.3889 0.0000 0.9213 +vn -0.0000 -0.3889 0.9213 +vn 0.2750 0.2750 0.9213 +vn -0.2750 -0.2750 0.9213 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn -0.5878 -0.8090 0.0000 +vn 0.3293 0.3293 -0.8850 +vn 0.4657 -0.0000 -0.8850 +vn -0.3293 0.3293 -0.8850 +vn 0.0000 0.4657 -0.8850 +vn -0.3292 -0.3293 -0.8850 +vn -0.4657 0.0000 -0.8850 +vn -0.5878 0.8090 0.0000 +vn -0.5676 0.1844 0.8024 +vn -0.5676 -0.1844 0.8024 +vn -0.5675 0.1844 0.8024 +vn -0.3293 -0.3293 -0.8850 +vn -0.3556 0.1155 -0.9275 +vn -0.2198 0.3025 -0.9275 +vn -0.2197 0.3025 -0.9275 +vn 0.0000 0.3739 -0.9275 +vn -0.2197 -0.3025 -0.9275 +vn -0.3556 -0.1155 -0.9275 +vn 0.2197 -0.3025 -0.9275 +vn -0.0000 -0.3739 -0.9275 +vn 0.2198 0.3025 -0.9275 +vn 0.3556 0.1155 -0.9275 +vn 0.3556 -0.1155 -0.9275 +vn 0.5676 -0.1844 0.8024 +vn 0.5676 0.1844 0.8024 +vn 0.3508 0.4828 0.8024 +vn -0.0000 0.5968 0.8024 +vn -0.3508 0.4828 0.8024 +vn -0.0000 -0.5968 0.8024 +vn 0.3508 -0.4828 0.8024 +vn -0.3508 -0.4828 0.8024 +s off +f 182/57/25 124/58/25 125/59/25 +f 106/60/25 103/61/25 104/62/25 +f 99/63/26 105/64/26 106/65/26 +f 104/62/27 100/66/27 102/67/27 +f 187/68/28 190/69/28 188/70/28 +f 109/71/29 110/72/29 111/73/29 +f 94/74/27 90/75/27 95/76/27 +f 102/67/28 101/77/28 99/63/28 +f 105/78/30 100/79/30 103/61/30 +f 184/80/31 189/81/31 187/68/31 +f 123/82/28 122/83/28 120/84/28 +f 25/85/26 29/86/26 31/87/26 +f 111/73/32 112/88/32 113/89/32 +f 117/90/33 107/91/33 113/92/33 +f 114/93/34 115/94/34 116/95/34 +f 117/90/33 118/96/33 119/97/33 +f 124/58/30 122/83/30 121/98/30 +f 31/99/25 30/100/25 28/101/25 +f 96/102/35 97/103/35 98/104/35 +f 125/105/27 121/98/27 123/106/27 +f 25/107/28 26/108/28 27/109/28 +f 30/100/30 27/109/30 26/108/30 +f 107/110/36 108/111/36 109/71/36 +f 185/112/25 186/113/25 183/114/25 +f 44/115/30 34/116/30 36/117/30 +f 184/80/26 188/118/26 186/119/26 +f 156/120/27 149/121/27 154/122/27 +f 110/123/34 108/124/34 179/125/34 +f 114/93/34 180/126/34 115/94/34 +f 110/123/34 179/125/34 112/127/34 +f 115/94/34 179/125/34 116/95/34 +f 109/128/33 111/129/33 107/91/33 +f 181/130/33 118/96/33 117/90/33 +f 107/91/33 111/129/33 113/92/33 +f 77/131/26 76/132/26 80/133/26 +f 171/134/26 159/135/26 170/136/26 +f 182/57/25 126/137/25 124/58/25 +f 106/60/25 105/78/25 103/61/25 +f 99/63/26 101/77/26 105/64/26 +f 104/62/27 103/61/27 100/66/27 +f 187/68/28 189/81/28 190/69/28 +f 109/71/29 108/111/29 110/72/29 +f 95/76/27 93/138/27 91/139/27 +f 91/139/27 89/140/27 94/74/27 +f 94/74/27 92/141/27 90/75/27 +f 90/75/27 82/142/27 95/76/27 +f 95/76/27 91/139/27 94/74/27 +f 102/67/28 100/66/28 101/77/28 +f 105/78/30 101/143/30 100/79/30 +f 184/80/31 185/112/31 189/81/31 +f 123/82/28 121/98/28 122/83/28 +f 25/85/26 27/109/26 29/86/26 +f 111/73/32 110/72/32 112/88/32 +f 117/90/33 119/97/33 107/91/33 +f 124/58/30 126/137/30 122/83/30 +f 31/99/25 29/86/25 30/100/25 +f 96/102/35 178/144/35 97/103/35 +f 125/105/27 124/58/27 121/98/27 +f 25/107/28 177/145/28 26/108/28 +f 30/100/30 29/86/30 27/109/30 +f 107/110/36 179/146/36 108/111/36 +f 185/112/25 184/80/25 186/113/25 +f 36/117/30 38/147/30 40/148/30 +f 40/148/30 42/149/30 44/115/30 +f 44/115/30 46/150/30 34/116/30 +f 34/116/30 33/151/30 36/117/30 +f 36/117/30 40/148/30 44/115/30 +f 184/80/26 187/68/26 188/118/26 +f 152/152/27 150/153/27 148/154/27 +f 148/154/27 157/155/27 156/120/27 +f 156/120/27 151/156/27 149/121/27 +f 149/121/27 155/157/27 154/122/27 +f 154/122/27 153/158/27 152/152/27 +f 152/152/27 148/154/27 154/122/27 +f 148/154/27 156/120/27 154/122/27 +f 115/94/34 112/127/34 179/125/34 +f 80/133/26 66/159/26 74/160/26 +f 74/160/26 78/161/26 77/131/26 +f 77/131/26 75/162/26 76/132/26 +f 76/132/26 79/163/26 80/133/26 +f 80/133/26 74/160/26 77/131/26 +f 170/136/26 176/164/26 169/165/26 +f 169/165/26 172/166/26 171/134/26 +f 171/134/26 175/167/26 159/135/26 +f 175/167/26 173/168/26 159/135/26 +f 173/168/26 160/169/26 159/135/26 +f 159/135/26 174/170/26 170/136/26 +f 170/136/26 169/165/26 171/134/26 +s 1 +f 169/171/37 162/172/38 164/173/37 +f 35/174/39 34/175/27 32/176/27 +f 134/177/40 131/178/41 132/179/41 +f 93/180/42 81/181/31 85/182/42 +f 76/183/25 61/184/43 60/185/25 +f 92/186/44 87/187/30 86/188/44 +f 37/189/25 33/190/39 35/174/39 +f 64/191/28 92/186/44 86/188/44 +f 165/192/45 169/171/37 164/173/37 +f 54/193/43 52/194/25 51/195/25 +f 140/196/46 137/197/30 138/198/30 +f 58/199/28 63/200/47 59/201/28 +f 71/202/31 50/203/42 48/204/31 +f 73/205/48 51/195/49 49/206/48 +f 49/206/42 52/194/25 50/203/42 +f 142/207/45 139/208/46 140/196/46 +f 57/209/50 87/187/51 55/210/51 +f 95/211/31 83/212/47 81/181/31 +f 72/213/52 49/206/48 71/202/52 +f 68/214/53 65/215/54 58/199/54 +f 69/216/55 68/214/53 56/217/55 +f 62/218/56 72/213/52 71/202/52 +f 62/218/56 65/215/54 67/219/56 +f 54/193/57 69/220/55 56/221/55 +f 43/222/58 40/223/26 41/224/26 +f 32/176/27 46/225/59 47/226/59 +f 41/227/26 38/228/60 39/229/60 +f 89/230/43 84/231/25 88/232/43 +f 94/233/30 88/232/43 87/234/30 +f 167/235/61 160/236/40 173/237/61 +f 75/238/43 69/220/30 61/184/43 +f 45/239/28 42/240/58 43/222/58 +f 63/200/62 64/191/63 59/201/63 +f 57/209/50 64/191/63 86/188/50 +f 50/203/64 81/181/65 48/204/65 +f 87/234/51 53/241/66 55/242/51 +f 52/194/67 85/182/64 50/203/64 +f 81/181/65 63/200/62 48/204/65 +f 51/195/49 61/184/57 54/193/57 +f 68/214/44 59/201/28 57/209/44 +f 39/229/60 36/243/25 37/189/25 +f 47/226/59 44/244/28 45/239/28 +f 66/245/47 72/213/31 67/219/47 +f 174/246/68 161/247/41 144/248/68 +f 170/249/31 144/248/68 163/250/31 +f 83/212/47 90/251/28 64/191/28 +f 168/252/30 171/253/46 166/254/46 +f 167/235/61 175/255/30 168/256/30 +f 127/257/31 146/258/38 147/259/38 +f 68/214/44 55/210/30 56/217/30 +f 176/260/38 163/250/31 162/172/38 +f 138/261/30 135/262/61 136/263/61 +f 145/264/37 141/265/45 142/207/45 +f 71/202/31 63/200/47 62/218/47 +f 130/266/68 131/178/41 128/267/68 +f 56/221/30 53/241/43 54/193/43 +f 161/247/69 134/177/70 132/179/71 +f 136/263/61 133/268/40 134/177/40 +f 130/266/68 129/269/31 127/257/31 +f 88/232/72 52/194/67 53/241/66 +f 80/270/31 73/205/42 72/213/31 +f 131/178/73 156/271/74 128/267/75 +f 128/267/75 157/272/76 129/269/76 +f 135/262/77 149/273/78 133/268/78 +f 133/268/78 151/274/73 131/178/73 +f 139/208/79 154/275/80 137/197/80 +f 148/276/81 143/277/82 146/258/81 +f 157/272/76 146/258/81 129/269/76 +f 141/265/83 150/278/82 152/279/83 +f 154/280/80 135/262/77 137/281/80 +f 73/205/42 76/183/25 60/185/25 +f 165/192/84 145/264/85 142/207/84 +f 147/259/86 164/173/85 162/172/86 +f 127/257/87 144/248/88 130/266/88 +f 139/208/79 152/279/83 153/282/79 +f 168/252/89 140/196/90 138/198/89 +f 130/266/88 161/247/69 132/179/71 +f 136/263/91 168/256/89 138/261/89 +f 134/177/70 167/235/91 136/263/91 +f 166/254/90 142/207/84 140/196/90 +f 69/216/30 78/283/44 70/284/44 +f 147/259/38 143/277/37 145/264/37 +f 166/254/46 172/285/45 165/192/45 +f 74/286/28 67/219/47 65/215/28 +f 158/287/40 159/288/41 160/236/40 +f 78/283/44 65/215/28 70/284/44 +f 91/289/25 85/182/42 84/231/25 +f 127/257/87 162/172/86 163/250/87 +f 169/171/37 176/260/38 162/172/38 +f 35/174/39 33/190/39 34/175/27 +f 134/177/40 133/268/40 131/178/41 +f 93/180/42 95/211/31 81/181/31 +f 76/183/25 75/238/43 61/184/43 +f 92/186/44 94/290/30 87/187/30 +f 37/189/25 36/243/25 33/190/39 +f 64/191/28 90/251/28 92/186/44 +f 165/192/45 172/285/45 169/171/37 +f 54/193/43 53/241/43 52/194/25 +f 140/196/46 139/208/46 137/197/30 +f 58/199/28 62/218/47 63/200/47 +f 71/202/31 49/206/42 50/203/42 +f 73/205/48 60/185/49 51/195/49 +f 49/206/42 51/195/25 52/194/25 +f 142/207/45 141/265/45 139/208/46 +f 57/209/50 86/188/50 87/187/51 +f 95/211/31 82/291/47 83/212/47 +f 72/213/52 73/205/48 49/206/48 +f 68/214/53 70/284/53 65/215/54 +f 69/216/55 70/284/53 68/214/53 +f 62/218/56 67/219/56 72/213/52 +f 62/218/56 58/199/54 65/215/54 +f 54/193/57 61/184/57 69/220/55 +f 43/222/58 42/240/58 40/223/26 +f 32/176/27 34/175/27 46/225/59 +f 41/227/26 40/292/26 38/228/60 +f 89/230/43 91/289/25 84/231/25 +f 94/233/30 89/230/43 88/232/43 +f 167/235/61 158/287/40 160/236/40 +f 75/238/43 77/293/30 69/220/30 +f 45/239/28 44/244/28 42/240/58 +f 63/200/62 83/212/62 64/191/63 +f 57/209/50 59/201/63 64/191/63 +f 50/203/64 85/182/64 81/181/65 +f 87/234/51 88/232/72 53/241/66 +f 52/194/67 84/231/67 85/182/64 +f 81/181/65 83/212/62 63/200/62 +f 51/195/49 60/185/49 61/184/57 +f 68/214/44 58/199/28 59/201/28 +f 39/229/60 38/228/60 36/243/25 +f 47/226/59 46/225/59 44/244/28 +f 66/245/47 80/270/31 72/213/31 +f 174/246/68 159/288/41 161/247/41 +f 170/249/31 174/246/68 144/248/68 +f 83/212/47 82/291/47 90/251/28 +f 168/252/30 175/294/30 171/253/46 +f 167/235/61 173/237/61 175/255/30 +f 127/257/31 129/269/31 146/258/38 +f 68/214/44 57/209/44 55/210/30 +f 176/260/38 170/249/31 163/250/31 +f 138/261/30 137/281/30 135/262/61 +f 145/264/37 143/277/37 141/265/45 +f 71/202/31 48/204/31 63/200/47 +f 130/266/68 132/179/41 131/178/41 +f 56/221/30 55/242/30 53/241/43 +f 161/247/69 158/287/70 134/177/70 +f 136/263/61 135/262/61 133/268/40 +f 130/266/68 128/267/68 129/269/31 +f 88/232/72 84/231/67 52/194/67 +f 80/270/31 79/295/42 73/205/42 +f 131/178/73 151/274/73 156/271/74 +f 128/267/75 156/271/74 157/272/76 +f 135/262/77 155/296/77 149/273/78 +f 133/268/78 149/273/78 151/274/73 +f 139/208/79 153/282/79 154/275/80 +f 148/276/81 150/278/82 143/277/82 +f 157/272/76 148/276/81 146/258/81 +f 141/265/83 143/277/82 150/278/82 +f 154/280/80 155/296/77 135/262/77 +f 73/205/42 79/295/42 76/183/25 +f 165/192/84 164/173/85 145/264/85 +f 147/259/86 145/264/85 164/173/85 +f 127/257/87 163/250/87 144/248/88 +f 139/208/79 141/265/83 152/279/83 +f 168/252/89 166/254/90 140/196/90 +f 130/266/88 144/248/88 161/247/69 +f 136/263/91 167/235/91 168/256/89 +f 134/177/70 158/287/70 167/235/91 +f 166/254/90 165/192/84 142/207/84 +f 69/216/30 77/297/30 78/283/44 +f 147/259/38 146/258/38 143/277/37 +f 166/254/46 171/253/46 172/285/45 +f 74/286/28 66/245/47 67/219/47 +f 158/287/40 161/247/41 159/288/41 +f 78/283/44 74/286/28 65/215/28 +f 91/289/25 93/180/42 85/182/42 +f 127/257/87 147/259/86 162/172/86 diff --git a/src/main/resources/assets/hbm/models/weapons/tau.obj b/src/main/resources/assets/hbm/models/weapons/tau.obj index f0f981346..3c4f8c5fe 100644 --- a/src/main/resources/assets/hbm/models/weapons/tau.obj +++ b/src/main/resources/assets/hbm/models/weapons/tau.obj @@ -1,5143 +1,36 @@ # Blender v2.79 (sub 0) OBJ File: 'tau.blend' # www.blender.org -o Body -v 0.551005 -0.364964 2.574621 -v 0.525250 -0.409266 2.523377 -v 0.515690 -0.425405 2.453378 -v 0.524887 -0.409056 2.383378 -v 0.550376 -0.364602 2.332135 -v 0.585327 -0.303952 2.313378 -v 0.620376 -0.243358 2.332134 -v 0.646131 -0.199057 2.383378 -v 0.655690 -0.182918 2.453377 -v 0.646494 -0.199266 2.523377 -v 0.621005 -0.243721 2.574621 -v 0.586053 -0.304371 2.593377 -v 0.876733 -0.551959 2.548175 -v 0.843024 -0.591668 2.497790 -v 0.822599 -0.601533 2.428962 -v 0.820930 -0.578912 2.360134 -v 0.838465 -0.529865 2.309748 -v 0.870505 -0.467534 2.291306 -v 0.908465 -0.408621 2.309748 -v 0.942174 -0.368912 2.360134 -v 0.962599 -0.359046 2.428962 -v 0.964268 -0.381668 2.497789 -v 0.946733 -0.430715 2.548175 -v 0.914693 -0.493046 2.566617 -v 1.101227 -0.681570 2.469018 -v 1.055429 -0.714300 2.423376 -v 1.018491 -0.714631 2.361029 -v 1.000308 -0.682476 2.298681 -v 1.005754 -0.626449 2.253039 -v 1.033369 -0.561564 2.236333 -v 1.075754 -0.505206 2.253039 -v 1.121552 -0.472476 2.298681 -v 1.158491 -0.472144 2.361028 -v 1.176673 -0.504300 2.423376 -v 1.171227 -0.560327 2.469018 -v 1.143612 -0.625212 2.485724 -v 1.256243 -0.771069 2.330546 -v 1.196166 -0.795555 2.298250 -v 1.139721 -0.784624 2.254134 -v 1.102032 -0.741206 2.210018 -v 1.093198 -0.676935 2.177722 -v 1.115587 -0.609032 2.165901 -v 1.163198 -0.555691 2.177722 -v 1.223275 -0.531206 2.210018 -v 1.279721 -0.542137 2.254134 -v 1.317410 -0.585554 2.298250 -v 1.326243 -0.649825 2.330546 -v 1.303855 -0.717729 2.342367 -v 1.334899 -0.816481 2.142498 -v 1.266247 -0.836016 2.129960 -v 1.198090 -0.818323 2.112834 -v 1.148689 -0.768143 2.095708 -v 1.131281 -0.698922 2.083170 -v 1.150531 -0.629207 2.078581 -v 1.201281 -0.577679 2.083170 -v 1.269932 -0.558143 2.095708 -v 1.338090 -0.575836 2.112834 -v 1.387491 -0.626016 2.129960 -v 1.404899 -0.695237 2.142498 -v 1.385649 -0.764952 2.147086 -v 1.345154 -0.822402 1.933423 -v 1.275257 -0.841218 1.936914 -v 1.205398 -0.822543 1.941684 -v 1.154295 -0.771381 1.946454 -v 1.135642 -0.701440 1.949945 -v 1.154436 -0.631462 1.951223 -v 1.205642 -0.580197 1.949945 -v 1.275539 -0.561381 1.946454 -v 1.345398 -0.580056 1.941684 -v 1.396501 -0.631218 1.936914 -v 1.415154 -0.701158 1.933423 -v 1.396360 -0.771136 1.932145 -v 1.310290 -0.802273 1.715737 -v 1.241624 -0.821800 1.728206 -v 1.173446 -0.804095 1.745240 -v 1.124025 -0.753904 1.762273 -v 1.106602 -0.684674 1.774743 -v 1.125847 -0.614956 1.779307 -v 1.176602 -0.563430 1.774743 -v 1.245268 -0.543904 1.762273 -v 1.313446 -0.561608 1.745240 -v 1.362868 -0.611800 1.728206 -v 1.380290 -0.681030 1.715737 -v 1.361046 -0.750748 1.711173 -v 1.248342 -0.766507 1.488676 -v 1.180748 -0.786653 1.505321 -v 1.114035 -0.769794 1.528057 -v 1.066078 -0.720448 1.550794 -v 1.049728 -0.651837 1.567438 -v 1.069365 -0.582346 1.573530 -v 1.119728 -0.530594 1.567438 -v 1.187322 -0.510448 1.550794 -v 1.254035 -0.527307 1.528057 -v 1.301991 -0.576653 1.505321 -v 1.318342 -0.645263 1.488676 -v 1.298705 -0.714755 1.482584 -v 1.172383 -0.722653 1.252446 -v 1.105165 -0.743015 1.270301 -v 1.038964 -0.726452 1.294692 -v 0.991519 -0.677402 1.319082 -v 0.975544 -0.609007 1.336938 -v 0.995318 -0.539595 1.343473 -v 1.045544 -0.487764 1.336938 -v 1.112763 -0.467401 1.319082 -v 1.178964 -0.483964 1.294692 -v 1.226408 -0.533015 1.270301 -v 1.242383 -0.601409 1.252446 -v 1.222609 -0.670821 1.245910 -v 1.094187 -0.677506 1.009806 -v 1.026658 -0.697689 1.026667 -v 0.960034 -0.680881 1.049699 -v 0.912166 -0.631587 1.072732 -v 0.895880 -0.563013 1.089593 -v 0.915541 -0.493536 1.095764 -v 0.965880 -0.441770 1.089593 -v 1.033409 -0.421587 1.072732 -v 1.100034 -0.438394 1.049699 -v 1.147902 -0.487689 1.026667 -v 1.164187 -0.556262 1.009806 -v 1.144526 -0.625740 1.003635 -v 1.025202 -0.637677 0.765133 -v 0.956826 -0.657371 0.778870 -v 0.889045 -0.639896 0.797636 -v 0.840020 -0.589934 0.816401 -v 0.822888 -0.520871 0.830139 -v 0.842239 -0.451215 0.835167 -v 0.892888 -0.399628 0.830139 -v 0.961264 -0.379933 0.816401 -v 1.029045 -0.397409 0.797636 -v 1.078070 -0.447371 0.778870 -v 1.095202 -0.516433 0.765133 -v 1.075851 -0.586090 0.760105 -v 0.976472 -0.609543 0.523846 -v 0.907032 -0.628623 0.531965 -v 0.837798 -0.610309 0.543057 -v 0.787320 -0.559507 0.554148 -v 0.769125 -0.489831 0.562268 -v 0.788086 -0.419949 0.565239 -v 0.839124 -0.368587 0.562268 -v 0.908564 -0.349507 0.554148 -v 0.977798 -0.367821 0.543057 -v 1.028276 -0.418623 0.531965 -v 1.046472 -0.488299 0.523846 -v 1.027510 -0.558181 0.520874 -v 0.958094 -0.598932 0.290518 -v 0.888094 -0.617689 0.290518 -v 0.818094 -0.598932 0.290518 -v 0.766850 -0.547689 0.290518 -v 0.748094 -0.477689 0.290518 -v 0.766850 -0.407689 0.290518 -v 0.818094 -0.356445 0.290518 -v 0.888094 -0.337689 0.290518 -v 0.958094 -0.356445 0.290518 -v 1.009338 -0.407689 0.290518 -v 1.028094 -0.477689 0.290518 -v 1.009338 -0.547689 0.290518 -v 0.000000 0.244981 -0.368932 -v 0.000000 0.244981 0.368932 -v 0.173227 0.173227 -0.368932 -v 0.173227 0.173227 0.368932 -v 0.244981 -0.000000 -0.368932 -v 0.244981 -0.000000 0.368932 -v 0.173227 -0.173227 -0.368932 -v 0.173227 -0.173227 0.368932 -v 0.000000 -0.244981 -0.368932 -v 0.000000 -0.244981 0.368932 -v -0.173227 -0.173227 -0.368932 -v -0.173227 -0.173228 0.368932 -v -0.244981 0.000000 -0.368932 -v -0.244981 0.000000 0.368932 -v -0.173227 0.173227 -0.368932 -v -0.173227 0.173227 0.368932 -v 0.825075 0.000002 0.000002 -v 0.722677 0.000002 0.247212 -v 0.475467 0.000002 0.349610 -v 0.228257 0.000002 0.247212 -v 0.125859 0.000002 0.000002 -v 0.228257 0.000002 -0.247208 -v 0.475467 0.000002 -0.349606 -v 0.722678 0.000002 -0.247208 -v 0.714536 0.412539 0.000002 -v 0.625857 0.361341 0.247212 -v 0.411767 0.237735 0.349610 -v 0.197676 0.114130 0.247212 -v 0.108997 0.062931 0.000002 -v 0.197676 0.114130 -0.247208 -v 0.411767 0.237735 -0.349606 -v 0.625857 0.361341 -0.247208 -v 0.412538 0.714538 0.000002 -v 0.361339 0.625859 0.247212 -v 0.237734 0.411769 0.349610 -v 0.114128 0.197678 0.247212 -v 0.062930 0.108999 0.000002 -v 0.114129 0.197678 -0.247208 -v 0.237734 0.411769 -0.349606 -v 0.361339 0.625859 -0.247208 -v 0.000000 0.825077 0.000002 -v 0.000000 0.722679 0.247212 -v 0.000000 0.475469 0.349610 -v 0.000000 0.228258 0.247212 -v 0.000000 0.125861 0.000002 -v 0.000000 0.228259 -0.247208 -v 0.000000 0.475469 -0.349606 -v 0.000000 0.722679 -0.247208 -v -0.412537 0.714538 0.000002 -v -0.361338 0.625859 0.247212 -v -0.237733 0.411769 0.349610 -v -0.114128 0.197678 0.247212 -v -0.062929 0.108999 0.000002 -v -0.114128 0.197678 -0.247208 -v -0.237733 0.411769 -0.349606 -v -0.361338 0.625859 -0.247208 -v -0.714536 0.412540 0.000002 -v -0.625857 0.361341 0.247212 -v -0.411766 0.237735 0.349610 -v -0.197676 0.114130 0.247212 -v -0.108997 0.062932 0.000002 -v -0.197676 0.114130 -0.247208 -v -0.411766 0.237735 -0.349606 -v -0.625857 0.361341 -0.247208 -v -0.825075 0.000002 0.000002 -v -0.722677 0.000002 0.247212 -v -0.475467 0.000002 0.349610 -v -0.228257 0.000002 0.247212 -v -0.125859 0.000002 0.000002 -v -0.228257 0.000002 -0.247208 -v -0.475467 0.000002 -0.349606 -v -0.722677 0.000002 -0.247208 -v -0.714536 -0.412536 0.000002 -v -0.625857 -0.361336 0.247212 -v -0.411766 -0.237732 0.349610 -v -0.197676 -0.114127 0.247212 -v -0.108997 -0.062928 0.000002 -v -0.197676 -0.114127 -0.247208 -v -0.411767 -0.237732 -0.349606 -v -0.625857 -0.361336 -0.247208 -v -0.412537 -0.714534 0.000002 -v -0.361338 -0.625855 0.247212 -v -0.237733 -0.411765 0.349610 -v -0.114128 -0.197675 0.247212 -v -0.062929 -0.108995 0.000002 -v -0.114128 -0.197674 -0.247208 -v -0.237733 -0.411765 -0.349606 -v -0.361338 -0.625855 -0.247208 -v 0.000000 -0.825073 0.000002 -v 0.000000 -0.722675 0.247212 -v 0.000000 -0.475466 0.349610 -v 0.000000 -0.228255 0.247212 -v 0.000000 -0.125858 0.000002 -v 0.000000 -0.228255 -0.247208 -v 0.000000 -0.475465 -0.349606 -v 0.000000 -0.722675 -0.247208 -v 0.412538 -0.714534 0.000002 -v 0.361339 -0.625855 0.247212 -v 0.237734 -0.411765 0.349610 -v 0.114128 -0.197675 0.247212 -v 0.062930 -0.108995 0.000002 -v 0.114129 -0.197675 -0.247208 -v 0.237734 -0.411765 -0.349606 -v 0.361339 -0.625855 -0.247208 -v 0.714536 -0.412536 0.000002 -v 0.625857 -0.361337 0.247212 -v 0.411767 -0.237732 0.349610 -v 0.197676 -0.114126 0.247212 -v 0.108997 -0.062928 0.000002 -v 0.197676 -0.114127 -0.247208 -v 0.411767 -0.237732 -0.349606 -v 0.625857 -0.361337 -0.247208 -v -0.375000 -1.363814 -2.375000 -v -0.375000 -0.863814 -2.375000 -v -0.375000 -1.363814 -3.124999 -v -0.375000 -0.863814 -3.124999 -v 0.375000 -1.363814 -2.375000 -v 0.375000 -0.863814 -2.375000 -v 0.375000 -1.363814 -3.124999 -v 0.375000 -0.863814 -3.124999 -v -0.375000 -0.496790 -5.624999 -v -0.375000 -1.746790 -5.624999 -v 0.375000 -1.746790 -5.624999 -v 0.375000 -0.496790 -5.624999 -v -0.249981 1.031888 -2.749502 -v 0.249981 1.031888 -2.749502 -v -0.249981 0.945274 -2.713625 -v 0.249981 0.945274 -2.713625 -v -0.249981 0.909398 -2.627011 -v 0.249981 0.909398 -2.627011 -v -0.249981 0.945275 -2.540398 -v 0.249981 0.945274 -2.540397 -v -0.249981 1.031888 -2.504521 -v 0.249981 1.031888 -2.504521 -v -0.249981 1.118502 -2.540398 -v 0.249981 1.118502 -2.540397 -v -0.249981 1.154378 -2.627011 -v 0.249981 1.154378 -2.627011 -v -0.249980 1.118502 -2.713625 -v 0.249981 1.118502 -2.713625 -v -0.249981 1.031888 -2.994483 -v 0.249981 1.031888 -2.994483 -v -0.249981 0.945274 -2.958606 -v 0.249981 0.945274 -2.958606 -v -0.249981 0.909398 -2.871992 -v 0.249981 0.909398 -2.871992 -v -0.249981 0.945274 -2.785378 -v 0.249981 0.945274 -2.785378 -v -0.249981 1.031888 -2.749502 -v 0.249981 1.031888 -2.749502 -v -0.249980 1.118502 -2.785378 -v 0.249981 1.118502 -2.785378 -v -0.249980 1.154378 -2.871992 -v 0.249981 1.154378 -2.871992 -v -0.249980 1.118502 -2.958606 -v 0.249981 1.118502 -2.958606 -v -0.250000 0.863920 -2.500000 -v -0.250000 0.926420 -2.500000 -v -0.250000 0.863920 -2.999999 -v -0.250000 0.926420 -2.999999 -v 0.250000 0.863920 -2.500000 -v 0.250000 0.926420 -2.500000 -v 0.312500 0.863920 -2.999999 -v 0.312500 0.926420 -2.999999 -v -0.312500 0.863920 -2.999999 -v -0.312500 0.863920 -2.500000 -v -0.312500 0.926420 -2.500000 -v -0.312500 0.926420 -2.999999 -v 0.250000 0.926420 -2.999999 -v 0.250000 0.863920 -2.999999 -v 0.312500 0.863920 -2.500000 -v 0.312500 0.926420 -2.500000 -v -0.312500 1.051420 -2.500000 -v -0.312500 1.051420 -2.999999 -v 0.312500 1.051420 -2.999999 -v 0.312500 1.051420 -2.500000 -v -0.250000 1.051420 -2.500000 -v -0.250000 1.051420 -2.999999 -v 0.250000 1.051420 -2.999999 -v 0.250000 1.051420 -2.500000 -v 0.207317 0.989929 -0.750546 -v 0.269079 0.989930 -0.750546 -v 0.207317 0.966012 -0.808289 -v 0.269079 0.966012 -0.808289 -v 0.207317 0.908269 -0.832206 -v 0.269079 0.908269 -0.832206 -v 0.207317 0.850527 -0.808289 -v 0.269079 0.850527 -0.808289 -v 0.207317 0.826609 -0.750546 -v 0.269079 0.826609 -0.750546 -v 0.207317 0.850527 -0.692804 -v 0.269079 0.850527 -0.692804 -v 0.207317 0.908269 -0.668886 -v 0.269079 0.908269 -0.668886 -v 0.207317 0.966012 -0.692804 -v 0.269079 0.966012 -0.692804 -v 0.295772 0.955105 -0.797381 -v 0.295772 0.974504 -0.750546 -v 0.295772 0.908269 -0.816781 -v 0.295772 0.861434 -0.797381 -v 0.295772 0.842034 -0.750546 -v 0.295772 0.861434 -0.703711 -v 0.295772 0.908269 -0.684311 -v 0.295772 0.955105 -0.703711 -v 0.207317 0.989929 -1.158847 -v 0.269080 0.989930 -1.158847 -v 0.207317 0.966012 -1.216590 -v 0.269079 0.966012 -1.216590 -v 0.207317 0.908269 -1.240508 -v 0.269080 0.908269 -1.240508 -v 0.207317 0.850527 -1.216590 -v 0.269080 0.850527 -1.216590 -v 0.207317 0.826609 -1.158848 -v 0.269080 0.826609 -1.158848 -v 0.207317 0.850527 -1.101105 -v 0.269080 0.850527 -1.101105 -v 0.207317 0.908269 -1.077187 -v 0.269079 0.908269 -1.077187 -v 0.207317 0.966012 -1.101105 -v 0.269080 0.966012 -1.101105 -v 0.295772 0.955105 -1.205683 -v 0.295772 0.974504 -1.158847 -v 0.295772 0.908269 -1.225083 -v 0.295772 0.861434 -1.205683 -v 0.295772 0.842034 -1.158848 -v 0.295772 0.861434 -1.112013 -v 0.295772 0.908269 -1.092613 -v 0.295772 0.955104 -1.112013 -v 0.207317 0.989929 -1.567149 -v 0.269079 0.989929 -1.567149 -v 0.207317 0.966012 -1.624892 -v 0.269079 0.966012 -1.624892 -v 0.207317 0.908269 -1.648810 -v 0.269080 0.908269 -1.648810 -v 0.207317 0.850527 -1.624892 -v 0.269080 0.850527 -1.624892 -v 0.207317 0.826609 -1.567149 -v 0.269079 0.826609 -1.567149 -v 0.207317 0.850527 -1.509407 -v 0.269079 0.850527 -1.509407 -v 0.207317 0.908269 -1.485489 -v 0.269080 0.908269 -1.485489 -v 0.207317 0.966012 -1.509406 -v 0.269079 0.966012 -1.509407 -v 0.295772 0.955105 -1.613984 -v 0.295772 0.974504 -1.567149 -v 0.295772 0.908269 -1.633384 -v 0.295772 0.861434 -1.613984 -v 0.295772 0.842034 -1.567149 -v 0.295772 0.861434 -1.520314 -v 0.295772 0.908269 -1.500914 -v 0.295772 0.955105 -1.520314 -v 0.207317 0.989929 -1.975451 -v 0.269079 0.989930 -1.975451 -v 0.207317 0.966012 -2.033194 -v 0.269079 0.966012 -2.033194 -v 0.207317 0.908269 -2.057111 -v 0.269079 0.908269 -2.057111 -v 0.207317 0.850527 -2.033194 -v 0.269079 0.850527 -2.033194 -v 0.207317 0.826609 -1.975451 -v 0.269079 0.826609 -1.975451 -v 0.207317 0.850527 -1.917708 -v 0.269079 0.850527 -1.917708 -v 0.207317 0.908269 -1.893791 -v 0.269079 0.908269 -1.893791 -v 0.207317 0.966012 -1.917708 -v 0.269079 0.966012 -1.917708 -v 0.295772 0.955105 -2.022286 -v 0.295772 0.974504 -1.975451 -v 0.295772 0.908269 -2.041686 -v 0.295772 0.861434 -2.022286 -v 0.295772 0.842034 -1.975451 -v 0.295772 0.861434 -1.928616 -v 0.295772 0.908269 -1.909216 -v 0.295772 0.955105 -1.928616 -v 0.567829 -0.284546 2.199322 -v 0.784319 -0.409536 2.199322 -v 0.481215 -0.434565 2.271075 -v 0.697705 -0.559556 2.271075 -v 0.445338 -0.496705 2.444303 -v 0.661828 -0.621696 2.444303 -v 0.481215 -0.434565 2.617530 -v 0.697705 -0.559556 2.617530 -v 0.567829 -0.284546 2.689283 -v 0.784319 -0.409536 2.689283 -v 0.654443 -0.134526 2.617530 -v 0.870933 -0.259516 2.617530 -v 0.690319 -0.072386 2.444303 -v 0.906809 -0.197376 2.444303 -v 0.654443 -0.134526 2.271075 -v 0.870933 -0.259517 2.271075 -v 0.872283 -0.218575 -0.312500 -v 0.872283 -0.218575 0.312500 -v 1.088790 -0.343575 -0.312500 -v 1.088789 -0.343575 0.312500 -v 1.088790 -0.593575 -0.312500 -v 1.088790 -0.593575 0.312500 -v 0.872283 -0.718575 -0.312500 -v 0.872283 -0.718575 0.312500 -v 0.655777 -0.593575 -0.312500 -v 0.655777 -0.593575 0.312500 -v 0.655777 -0.343575 -0.312500 -v 0.655777 -0.343575 0.312500 -v -0.475030 0.750921 1.869728 -v -0.475030 0.813421 1.869728 -v -0.475030 0.750921 0.369728 -v -0.475030 0.813420 0.369728 -v -0.412530 0.750921 1.869728 -v -0.412530 0.813421 1.869728 -v -0.412530 0.750921 0.369728 -v -0.412530 0.813420 0.369728 -v -0.475030 0.750921 1.932228 -v -0.412530 0.250921 1.869728 -v -0.412530 0.750921 1.932228 -v -0.475030 0.250921 1.869728 -v -0.475030 0.250921 1.932228 -v -0.412530 0.250921 1.932228 -v 0.475030 0.750921 1.869728 -v 0.475030 0.813421 1.869728 -v 0.475030 0.750921 0.369728 -v 0.475030 0.813420 0.369728 -v 0.412530 0.750921 1.869728 -v 0.412530 0.813420 1.869728 -v 0.412530 0.750920 0.369728 -v 0.412530 0.813420 0.369728 -v 0.475030 0.750921 1.932228 -v 0.412530 0.250921 1.869728 -v 0.412530 0.750921 1.932228 -v 0.475030 0.250921 1.869728 -v 0.475030 0.250921 1.932228 -v 0.412530 0.250921 1.932228 -v -0.475030 -0.750921 1.869728 -v -0.475030 -0.813421 1.869728 -v -0.475030 -0.750921 0.369728 -v -0.475030 -0.813421 0.369728 -v -0.412530 -0.750921 1.869728 -v -0.412530 -0.813421 1.869728 -v -0.412530 -0.750921 0.369728 -v -0.412530 -0.813421 0.369728 -v -0.475030 -0.750921 1.932228 -v -0.412530 -0.250921 1.869728 -v -0.412530 -0.750921 1.932228 -v -0.475030 -0.250921 1.869728 -v -0.475030 -0.250921 1.932228 -v -0.412530 -0.250921 1.932228 -v 0.475030 -0.750921 1.869728 -v 0.475030 -0.813421 1.869728 -v 0.475030 -0.750921 0.369728 -v 0.475030 -0.813421 0.369728 -v 0.412530 -0.750921 1.869728 -v 0.412530 -0.813421 1.869728 -v 0.412530 -0.750921 0.369728 -v 0.412530 -0.813421 0.369728 -v 0.475030 -0.750921 1.932228 -v 0.412530 -0.250921 1.869728 -v 0.412530 -0.750921 1.932228 -v 0.475030 -0.250921 1.869728 -v 0.475030 -0.250921 1.932228 -v 0.412530 -0.250921 1.932228 -v 0.536184 0.986795 -0.674615 -v 0.536184 0.611795 -0.674615 -v 0.531041 0.986795 -0.612327 -v 0.531041 0.611795 -0.612327 -v 0.473896 0.986795 -0.679757 -v 0.473896 0.611795 -0.679757 -v 0.468753 0.986795 -0.617469 -v 0.468753 0.611795 -0.617469 -v 0.531041 1.049295 -0.612327 -v 0.468753 1.049295 -0.617469 -v 0.304755 0.986795 2.128347 -v 0.242467 0.986795 2.123204 -v 0.304755 1.049295 2.128347 -v 0.242467 1.049295 2.123204 -v 0.299613 0.986795 2.190635 -v 0.237324 0.986795 2.185492 -v 0.242467 0.611795 2.123204 -v 0.304755 0.611795 2.128347 -v 0.299613 0.611795 2.190635 -v 0.237325 0.611795 2.185492 -v 0.500000 -0.500000 -0.889991 -v 0.500000 0.500000 -0.889991 -v 0.673228 -0.500000 -0.818238 -v 0.673228 0.500000 -0.818238 -v 0.744981 -0.500000 -0.645011 -v 0.744981 0.500000 -0.645011 -v 0.673228 -0.500000 -0.471783 -v 0.673228 0.500000 -0.471783 -v 0.500000 -0.500000 -0.400030 -v 0.500000 0.500000 -0.400030 -v 0.326772 -0.500000 -0.471783 -v 0.326772 0.500000 -0.471783 -v 0.255019 -0.500000 -0.645011 -v 0.255019 0.500000 -0.645011 -v 0.326772 -0.500000 -0.818238 -v 0.326773 0.500000 -0.818238 -v 0.586614 0.625000 -0.731624 -v 0.500000 0.625000 -0.767501 -v 0.622490 0.625000 -0.645011 -v 0.586614 0.625000 -0.558397 -v 0.500000 0.625000 -0.522520 -v 0.413386 0.625000 -0.558397 -v 0.377510 0.625000 -0.645011 -v 0.413386 0.625000 -0.731624 -v -0.250000 -0.750000 -0.375000 -v -0.250000 0.687500 -1.375000 -v -0.250000 -0.750000 -2.375000 -v -0.250000 0.750000 -2.375000 -v 0.250000 -0.750000 -0.375000 -v 0.250000 0.750000 -0.375000 -v 0.250000 -0.750000 -2.125000 -v 0.250000 0.687500 -2.125000 -v -0.250000 0.687500 -2.125000 -v -0.250000 -0.750000 -2.125000 -v 0.250000 -0.750000 -2.375000 -v 0.250000 0.687500 -2.375000 -v -0.250000 -0.750000 -1.375000 -v -0.250000 0.750000 -0.375000 -v 0.250000 0.687500 -1.375000 -v 0.250000 -0.750000 -1.375000 -v -0.250000 0.750000 -1.375000 -v -0.250000 0.750000 -2.125000 -v -0.250000 0.687500 -2.375000 -v 0.250000 0.750000 -2.375000 -v 0.250000 0.750000 -2.125000 -v 0.250000 0.750000 -1.375000 -v 0.250000 0.687500 -0.375000 -v -0.250000 0.687500 -0.375000 -v -0.250000 1.062500 -1.375000 -v -0.250000 1.062500 -1.937500 -v -0.250000 1.062500 -2.125000 -v 0.250000 1.062500 -2.125000 -v 0.250000 1.062500 -1.937499 -v 0.250000 1.062500 -1.375000 -v 0.250000 1.062500 -0.625000 -v -0.250000 1.062500 -0.625000 -v 0.000000 0.724446 2.000000 -v 0.000000 0.599488 3.000000 -v 0.362223 0.627389 2.000000 -v 0.299744 0.519172 3.000000 -v 0.627389 0.362223 2.000000 -v 0.519172 0.299744 3.000000 -v 0.724446 0.000000 2.000000 -v 0.599488 0.000000 3.000000 -v 0.627388 -0.362223 2.000000 -v 0.519172 -0.299744 3.000000 -v 0.362223 -0.627388 2.000000 -v 0.299744 -0.519172 3.000000 -v 0.000000 -0.724446 2.000000 -v 0.000000 -0.599488 3.000000 -v -0.362223 -0.627389 2.000000 -v -0.299744 -0.519172 3.000000 -v -0.627389 -0.362223 2.000000 -v -0.519172 -0.299744 3.000000 -v -0.724446 -0.000000 2.000000 -v -0.599488 -0.000000 3.000000 -v -0.627389 0.362223 2.000000 -v -0.519172 0.299744 3.000000 -v -0.362223 0.627388 2.000000 -v -0.299745 0.519172 3.000000 -v 0.000000 0.650771 1.803562 -v 0.325386 0.563584 1.803562 -v 0.563584 0.325386 1.803562 -v 0.650771 0.000000 1.803562 -v 0.563584 -0.325386 1.803562 -v 0.325386 -0.563584 1.803562 -v 0.000000 -0.650771 1.803562 -v -0.325385 -0.563585 1.803562 -v -0.563584 -0.325386 1.803562 -v -0.650771 -0.000000 1.803562 -v -0.563585 0.325385 1.803562 -v -0.325386 0.563584 1.803562 -v 0.000000 0.484842 1.637495 -v 0.242421 0.419886 1.637495 -v 0.419886 0.242421 1.637495 -v 0.484842 0.000000 1.637495 -v 0.419886 -0.242421 1.637495 -v 0.242421 -0.419886 1.637495 -v 0.000000 -0.484842 1.637495 -v -0.242421 -0.419886 1.637495 -v -0.419886 -0.242421 1.637495 -v -0.484842 -0.000000 1.637495 -v -0.419886 0.242421 1.637495 -v -0.242421 0.419886 1.637495 -v 0.000000 0.089117 1.515425 -v 0.044558 0.077177 1.515425 -v 0.077177 0.044558 1.515425 -v 0.089117 -0.000000 1.515425 -v 0.077177 -0.044558 1.515425 -v 0.044558 -0.077177 1.515425 -v 0.000000 -0.089117 1.515425 -v -0.044558 -0.077177 1.515425 -v -0.077177 -0.044558 1.515425 -v -0.089117 -0.000000 1.515425 -v -0.077177 0.044558 1.515425 -v -0.044558 0.077177 1.515425 -v 0.000000 0.170159 1.515425 -v 0.085079 0.147362 1.515425 -v 0.147362 0.085079 1.515425 -v 0.170159 -0.000000 1.515425 -v 0.147362 -0.085079 1.515425 -v 0.085079 -0.147362 1.515425 -v 0.000000 -0.170159 1.515425 -v -0.085079 -0.147362 1.515425 -v -0.147362 -0.085079 1.515425 -v -0.170159 -0.000000 1.515425 -v -0.147362 0.085079 1.515425 -v -0.085079 0.147362 1.515425 -v 0.000000 0.089118 0.220095 -v 0.044559 0.077178 0.220095 -v 0.077177 0.044559 0.220095 -v 0.089117 0.000001 0.220095 -v 0.077177 -0.044557 0.220095 -v 0.044558 -0.077176 0.220095 -v 0.000000 -0.089116 0.220095 -v -0.044558 -0.077177 0.220095 -v -0.077177 -0.044558 0.220095 -v -0.089117 0.000001 0.220095 -v -0.077177 0.044559 0.220095 -v -0.044559 0.077178 0.220095 -v 0.362223 0.627389 3.000000 -v 0.000000 0.724446 3.000000 -v 0.627388 0.362223 3.000000 -v 0.724446 0.000000 3.000000 -v 0.627389 -0.362223 3.000000 -v 0.362223 -0.627389 3.000000 -v 0.000000 -0.724446 3.000000 -v -0.362223 -0.627389 3.000000 -v -0.627389 -0.362223 3.000000 -v -0.724446 -0.000000 3.000000 -v -0.627389 0.362223 3.000000 -v -0.362223 0.627388 3.000000 -v 0.050433 0.087352 2.000000 -v 0.000000 0.100865 2.000000 -v 0.087351 0.050433 2.000000 -v 0.100865 0.000001 2.000000 -v 0.087351 -0.050432 2.000000 -v 0.050432 -0.087351 2.000000 -v 0.000000 -0.100864 2.000000 -v -0.050432 -0.087351 2.000000 -v -0.087352 -0.050432 2.000000 -v -0.100865 0.000001 2.000000 -v -0.087352 0.050433 2.000000 -v -0.050433 0.087352 2.000000 -v 0.362223 0.627389 4.000000 -v 0.000000 0.724446 4.000000 -v 0.627388 0.362223 4.000000 -v 0.724446 0.000000 4.000000 -v 0.627388 -0.362223 4.000000 -v 0.362223 -0.627389 4.000000 -v 0.000000 -0.724446 4.000000 -v -0.362223 -0.627389 4.000000 -v -0.627389 -0.362223 4.000000 -v -0.724446 -0.000000 4.000000 -v -0.627389 0.362223 4.000000 -v -0.362223 0.627388 4.000000 -v 0.299744 0.519172 4.000000 -v 0.000000 0.599488 4.000000 -v 0.519172 0.299744 4.000000 -v 0.599488 0.000000 4.000000 -v 0.519172 -0.299744 4.000000 -v 0.299744 -0.519172 4.000000 -v 0.000000 -0.599488 4.000000 -v -0.299744 -0.519172 4.000000 -v -0.519172 -0.299744 4.000000 -v -0.599488 -0.000000 4.000000 -v -0.519172 0.299744 4.000000 -v -0.299745 0.519172 4.000000 -v 0.299744 0.519173 2.000000 -v 0.000000 0.599489 2.000000 -v 0.519172 0.299745 2.000000 -v 0.599488 0.000001 2.000000 -v 0.519172 -0.299744 2.000000 -v 0.299744 -0.519171 2.000000 -v 0.000000 -0.599488 2.000000 -v -0.299744 -0.519171 2.000000 -v -0.519172 -0.299744 2.000000 -v -0.599488 0.000000 2.000000 -v -0.519172 0.299744 2.000000 -v -0.299744 0.519172 2.000000 -v 0.050432 0.087353 5.611448 -v 0.000000 0.100866 5.611448 -v 0.087351 0.050434 5.611448 -v 0.100865 0.000002 5.611448 -v 0.087351 -0.050431 5.611448 -v 0.050432 -0.087350 5.611448 -v 0.000000 -0.100863 5.611448 -v -0.050432 -0.087350 5.611448 -v -0.087352 -0.050431 5.611448 -v -0.100865 0.000002 5.611448 -v -0.087352 0.050434 5.611448 -v -0.050433 0.087353 5.611448 -v 0.500000 0.866025 -0.375000 -v 0.500000 0.866025 0.375000 -v 1.000000 -0.000000 -0.375000 -v 1.000000 -0.000000 0.375000 -v 0.500000 -0.866025 -0.375000 -v 0.500000 -0.866025 0.375000 -v -0.500000 -0.866025 -0.375000 -v -0.500000 -0.866025 0.375000 -v -1.000000 0.000000 -0.375000 -v -1.000000 -0.000000 0.375000 -v -0.500000 0.866025 -0.375000 -v -0.500000 0.866025 0.375000 -v 0.500000 0.866025 -3.125000 -v 0.500000 0.866025 -2.375000 -v 1.000000 -0.000000 -3.125000 -v 1.000000 -0.000000 -2.375000 -v 0.500000 -0.866026 -3.125000 -v 0.500000 -0.866025 -2.375000 -v -0.500000 -0.866025 -3.125000 -v -0.500000 -0.866025 -2.375000 -v -1.000000 -0.000000 -3.125000 -v -1.000000 -0.000000 -2.375000 -v -0.500000 0.866025 -3.125000 -v -0.500000 0.866025 -2.375000 -v -0.479958 0.986795 -0.679582 -v -0.479958 0.611795 -0.679582 -v -0.474815 0.986795 -0.617294 -v -0.474815 0.611795 -0.617294 -v -0.542246 0.986795 -0.674439 -v -0.542247 0.611795 -0.674439 -v -0.537103 0.986795 -0.612151 -v -0.537104 0.611795 -0.612151 -v -0.474816 1.049295 -0.617294 -v -0.537104 1.049295 -0.612151 -v -0.248530 0.986795 2.123379 -v -0.310818 0.986795 2.128522 -v -0.248530 1.049295 2.123379 -v -0.310818 1.049295 2.128522 -v -0.243387 0.986795 2.185668 -v -0.305675 0.986795 2.190811 -v -0.310818 0.611795 2.128522 -v -0.248530 0.611795 2.123379 -v -0.243387 0.611795 2.185668 -v -0.305675 0.611795 2.190811 -v -0.500000 -0.500000 -0.400030 -v -0.500000 0.500000 -0.400030 -v -0.673227 -0.500000 -0.471783 -v -0.673227 0.500000 -0.471783 -v -0.744981 -0.500000 -0.645011 -v -0.744981 0.500000 -0.645011 -v -0.673228 -0.500000 -0.818238 -v -0.673227 0.500000 -0.818238 -v -0.500000 -0.500000 -0.889992 -v -0.500000 0.500000 -0.889992 -v -0.326772 -0.500000 -0.818238 -v -0.326772 0.500000 -0.818238 -v -0.255019 -0.500000 -0.645011 -v -0.255019 0.500000 -0.645011 -v -0.326772 -0.500000 -0.471783 -v -0.326772 0.500000 -0.471783 -v -0.586614 0.625000 -0.558397 -v -0.500000 0.625000 -0.522520 -v -0.622490 0.625000 -0.645011 -v -0.586614 0.625000 -0.731624 -v -0.500000 0.625000 -0.767501 -v -0.413386 0.625000 -0.731625 -v -0.377510 0.625000 -0.645011 -v -0.413386 0.625000 -0.558397 -v -0.207317 0.989930 -0.750546 -v -0.269079 0.989930 -0.750546 -v -0.207317 0.966012 -0.808289 -v -0.269079 0.966012 -0.808289 -v -0.207317 0.908269 -0.832207 -v -0.269079 0.908269 -0.832207 -v -0.207317 0.850527 -0.808289 -v -0.269079 0.850527 -0.808289 -v -0.207317 0.826609 -0.750546 -v -0.269079 0.826609 -0.750546 -v -0.207317 0.850527 -0.692804 -v -0.269079 0.850527 -0.692804 -v -0.207317 0.908269 -0.668886 -v -0.269079 0.908269 -0.668886 -v -0.207317 0.966012 -0.692804 -v -0.269079 0.966012 -0.692804 -v -0.295772 0.955105 -0.797381 -v -0.295772 0.974504 -0.750546 -v -0.295772 0.908269 -0.816781 -v -0.295772 0.861434 -0.797381 -v -0.295772 0.842034 -0.750546 -v -0.295772 0.861434 -0.703711 -v -0.295772 0.908269 -0.684311 -v -0.295772 0.955105 -0.703711 -v -0.207317 0.989929 -1.158848 -v -0.269079 0.989929 -1.158848 -v -0.207317 0.966012 -1.216590 -v -0.269079 0.966012 -1.216590 -v -0.207317 0.908269 -1.240508 -v -0.269079 0.908269 -1.240508 -v -0.207317 0.850527 -1.216591 -v -0.269079 0.850527 -1.216591 -v -0.207317 0.826609 -1.158848 -v -0.269079 0.826609 -1.158848 -v -0.207317 0.850527 -1.101105 -v -0.269079 0.850527 -1.101106 -v -0.207317 0.908269 -1.077188 -v -0.269079 0.908269 -1.077188 -v -0.207317 0.966012 -1.101105 -v -0.269079 0.966012 -1.101105 -v -0.295772 0.955104 -1.205683 -v -0.295772 0.974504 -1.158848 -v -0.295772 0.908269 -1.225083 -v -0.295772 0.861434 -1.205683 -v -0.295772 0.842034 -1.158848 -v -0.295772 0.861434 -1.112013 -v -0.295772 0.908269 -1.092613 -v -0.295772 0.955104 -1.112013 -v -0.207317 0.989929 -1.567149 -v -0.269079 0.989929 -1.567149 -v -0.207317 0.966012 -1.624892 -v -0.269079 0.966012 -1.624892 -v -0.207317 0.908269 -1.648810 -v -0.269079 0.908269 -1.648810 -v -0.207317 0.850527 -1.624892 -v -0.269079 0.850527 -1.624892 -v -0.207317 0.826609 -1.567150 -v -0.269079 0.826609 -1.567150 -v -0.207317 0.850527 -1.509407 -v -0.269079 0.850527 -1.509407 -v -0.207317 0.908269 -1.485489 -v -0.269079 0.908269 -1.485489 -v -0.207317 0.966012 -1.509407 -v -0.269079 0.966012 -1.509407 -v -0.295772 0.955104 -1.613984 -v -0.295772 0.974504 -1.567149 -v -0.295772 0.908269 -1.633385 -v -0.295772 0.861434 -1.613985 -v -0.295772 0.842034 -1.567150 -v -0.295772 0.861434 -1.520314 -v -0.295772 0.908269 -1.500914 -v -0.295772 0.955104 -1.520314 -v -0.207317 0.989930 -1.975451 -v -0.269079 0.989930 -1.975451 -v -0.207317 0.966012 -2.033194 -v -0.269079 0.966012 -2.033194 -v -0.207317 0.908269 -2.057111 -v -0.269079 0.908269 -2.057111 -v -0.207317 0.850527 -2.033194 -v -0.269079 0.850527 -2.033194 -v -0.207317 0.826609 -1.975451 -v -0.269079 0.826609 -1.975451 -v -0.207317 0.850527 -1.917709 -v -0.269079 0.850527 -1.917709 -v -0.207317 0.908269 -1.893791 -v -0.269079 0.908269 -1.893791 -v -0.207317 0.966012 -1.917708 -v -0.269079 0.966012 -1.917708 -v -0.295772 0.955105 -2.022286 -v -0.295772 0.974504 -1.975451 -v -0.295772 0.908269 -2.041686 -v -0.295772 0.861434 -2.022286 -v -0.295772 0.842034 -1.975451 -v -0.295772 0.861434 -1.928616 -v -0.295772 0.908269 -1.909216 -v -0.295772 0.955105 -1.928616 -v 0.825075 0.000002 -2.749997 -v 0.722677 0.000002 -2.502787 -v 0.475467 0.000002 -2.400389 -v 0.228257 0.000002 -2.502787 -v 0.125859 0.000002 -2.749997 -v 0.228257 0.000002 -2.997207 -v 0.475467 0.000002 -3.099605 -v 0.722678 0.000002 -2.997207 -v 0.714536 0.412540 -2.749997 -v 0.625857 0.361341 -2.502787 -v 0.411767 0.237735 -2.400389 -v 0.197676 0.114130 -2.502787 -v 0.108997 0.062932 -2.749997 -v 0.197676 0.114130 -2.997207 -v 0.411767 0.237735 -3.099605 -v 0.625857 0.361341 -2.997207 -v 0.412538 0.714538 -2.749997 -v 0.361339 0.625859 -2.502787 -v 0.237734 0.411769 -2.400389 -v 0.114128 0.197678 -2.502787 -v 0.062930 0.108999 -2.749997 -v 0.114128 0.197678 -2.997207 -v 0.237734 0.411769 -3.099605 -v 0.361339 0.625859 -2.997207 -v 0.000000 0.825077 -2.749997 -v 0.000000 0.722679 -2.502787 -v 0.000000 0.475469 -2.400389 -v 0.000000 0.228259 -2.502787 -v 0.000000 0.125861 -2.749997 -v 0.000000 0.228259 -2.997207 -v 0.000000 0.475469 -3.099605 -v 0.000000 0.722679 -2.997207 -v -0.412537 0.714538 -2.749997 -v -0.361338 0.625859 -2.502788 -v -0.237733 0.411769 -2.400390 -v -0.114128 0.197678 -2.502787 -v -0.062929 0.108999 -2.749997 -v -0.114128 0.197678 -2.997207 -v -0.237733 0.411769 -3.099605 -v -0.361338 0.625859 -2.997207 -v -0.714536 0.412540 -2.749997 -v -0.625857 0.361341 -2.502788 -v -0.411767 0.237735 -2.400390 -v -0.197676 0.114130 -2.502787 -v -0.108997 0.062932 -2.749997 -v -0.197676 0.114130 -2.997207 -v -0.411766 0.237735 -3.099605 -v -0.625857 0.361341 -2.997207 -v -0.825075 0.000002 -2.749997 -v -0.722677 0.000002 -2.502788 -v -0.475467 0.000002 -2.400390 -v -0.228257 0.000002 -2.502787 -v -0.125859 0.000002 -2.749997 -v -0.228257 0.000002 -2.997207 -v -0.475467 0.000002 -3.099605 -v -0.722677 0.000002 -2.997207 -v -0.714536 -0.412536 -2.749997 -v -0.625857 -0.361336 -2.502787 -v -0.411767 -0.237732 -2.400389 -v -0.197676 -0.114126 -2.502787 -v -0.108997 -0.062928 -2.749997 -v -0.197676 -0.114127 -2.997207 -v -0.411767 -0.237732 -3.099605 -v -0.625857 -0.361336 -2.997207 -v -0.412537 -0.714534 -2.749997 -v -0.361338 -0.625855 -2.502787 -v -0.237733 -0.411765 -2.400389 -v -0.114128 -0.197674 -2.502787 -v -0.062929 -0.108995 -2.749997 -v -0.114128 -0.197675 -2.997207 -v -0.237733 -0.411765 -3.099605 -v -0.361338 -0.625855 -2.997207 -v 0.000000 -0.825073 -2.749997 -v 0.000000 -0.722675 -2.502787 -v 0.000000 -0.475466 -2.400389 -v 0.000000 -0.228255 -2.502787 -v 0.000000 -0.125858 -2.749997 -v 0.000000 -0.228255 -2.997207 -v 0.000000 -0.475465 -3.099605 -v 0.000000 -0.722675 -2.997207 -v 0.412538 -0.714534 -2.749997 -v 0.361339 -0.625855 -2.502787 -v 0.237734 -0.411765 -2.400389 -v 0.114129 -0.197675 -2.502787 -v 0.062930 -0.108995 -2.749997 -v 0.114128 -0.197674 -2.997207 -v 0.237734 -0.411765 -3.099605 -v 0.361339 -0.625855 -2.997207 -v 0.714536 -0.412536 -2.749997 -v 0.625857 -0.361337 -2.502787 -v 0.411767 -0.237732 -2.400389 -v 0.197676 -0.114126 -2.502787 -v 0.108997 -0.062928 -2.749997 -v 0.197676 -0.114126 -2.997207 -v 0.411767 -0.237732 -3.099605 -v 0.625857 -0.361337 -2.997207 -v 0.000000 0.244981 -2.381067 -v 0.000000 0.244981 -3.118932 -v -0.173227 0.173227 -2.381067 -v -0.173227 0.173227 -3.118932 -v -0.244980 -0.000000 -2.381067 -v -0.244981 -0.000000 -3.118932 -v -0.173227 -0.173228 -2.381067 -v -0.173227 -0.173228 -3.118932 -v 0.000000 -0.244981 -2.381067 -v 0.000000 -0.244981 -3.118932 -v 0.173228 -0.173228 -2.381067 -v 0.173228 -0.173228 -3.118932 -v 0.244981 -0.000000 -2.381067 -v 0.244981 -0.000000 -3.118932 -v 0.173228 0.173227 -2.381067 -v 0.173228 0.173227 -3.118932 -vt 0.246892 0.529648 -vt 0.264843 0.500743 -vt 0.282793 0.529648 -vt 0.456621 0.176471 -vt 0.511416 0.235294 -vt 0.456621 0.235294 -vt 0.817352 0.000000 -vt 1.000000 0.088235 -vt 0.817352 0.088235 -vt 0.511416 0.235294 -vt 0.456621 0.176471 -vt 0.511416 0.176471 -vt 0.762557 0.000000 -vt 0.726027 0.088235 -vt 0.726027 0.000000 -vt 0.452055 0.088235 -vt 0.397260 0.000000 -vt 0.452055 0.000000 -vt 0.726027 0.000000 -vt 0.634703 0.088235 -vt 0.634703 0.000000 -vt 0.694064 0.132353 -vt 0.694064 0.279412 -vt 0.694064 0.279412 -vt 0.118683 0.139406 -vt 0.109709 0.124955 -vt 0.118683 0.110505 -vt 0.125030 0.144208 -vt 0.118661 0.168966 -vt 0.112292 0.164718 -vt 0.118683 0.139406 -vt 0.109709 0.124955 -vt 0.118683 0.110505 -vt 0.125030 0.144208 -vt 0.118661 0.168966 -vt 0.112292 0.164718 -vt 0.063927 0.110294 -vt 0.059361 0.169118 -vt 0.059361 0.110294 -vt 0.004566 0.022059 -vt 0.041096 0.029412 -vt 0.004566 0.029412 -vt 0.009132 0.169118 -vt 0.013699 0.110294 -vt 0.013699 0.169118 -vt 0.041096 0.036765 -vt 0.004566 0.029412 -vt 0.041096 0.029412 -vt 0.018265 0.169118 -vt 0.054795 0.110294 -vt 0.054795 0.169118 -vt 0.013699 0.110294 -vt 0.050228 0.051471 -vt 0.050228 0.110294 -vt 0.000000 0.036765 -vt 0.000000 0.029412 -vt 0.041096 0.022059 -vt 0.045662 0.007353 -vt 0.045662 0.022059 -vt -0.000000 0.022059 -vt 0.045662 0.029412 -vt 0.018265 0.110294 -vt 0.045662 0.051471 -vt 0.041096 0.051471 -vt 0.045662 0.036765 -vt 0.004566 0.110294 -vt -0.000000 0.051471 -vt 0.004566 0.051471 -vt 0.059361 0.051471 -vt 0.063927 0.110294 -vt 0.059361 0.110294 -vt 0.013699 0.051471 -vt 0.004566 0.007353 -vt 0.000000 0.110294 -vt 0.009132 0.110294 -vt 0.073059 0.169118 -vt 0.063927 0.169118 -vt 0.004566 0.036765 -vt 0.223744 0.441176 -vt 0.219178 0.448529 -vt 0.219178 0.441176 -vt 0.223744 0.448529 -vt 0.219178 0.455882 -vt 0.223744 0.463235 -vt 0.219178 0.463235 -vt 0.219178 0.470588 -vt 0.219178 0.411765 -vt 0.223744 0.419118 -vt 0.219178 0.419118 -vt 0.223744 0.426471 -vt 0.219178 0.426471 -vt 0.219178 0.433824 -vt 0.223744 0.433824 -vt 0.228371 0.463247 -vt 0.232881 0.455984 -vt 0.237391 0.463247 -vt 0.223744 0.441176 -vt 0.219178 0.448529 -vt 0.219178 0.441176 -vt 0.223744 0.448529 -vt 0.219178 0.455882 -vt 0.223744 0.455882 -vt 0.219178 0.463235 -vt 0.223744 0.463235 -vt 0.219178 0.470588 -vt 0.219178 0.411765 -vt 0.223744 0.419118 -vt 0.219178 0.419118 -vt 0.223744 0.426471 -vt 0.219178 0.426471 -vt 0.223744 0.433824 -vt 0.219178 0.433824 -vt 0.228371 0.463247 -vt 0.236070 0.458111 -vt 0.237391 0.463247 -vt 0.223744 0.441176 -vt 0.219178 0.448529 -vt 0.219178 0.441176 -vt 0.223744 0.448529 -vt 0.219178 0.455882 -vt 0.223744 0.455882 -vt 0.219178 0.463235 -vt 0.223744 0.463235 -vt 0.219178 0.470588 -vt 0.223744 0.411765 -vt 0.219178 0.419118 -vt 0.219178 0.411765 -vt 0.223744 0.419118 -vt 0.219178 0.426471 -vt 0.223744 0.433824 -vt 0.219178 0.433824 -vt 0.228371 0.463247 -vt 0.236070 0.458111 -vt 0.237391 0.463247 -vt 0.219178 0.441176 -vt 0.223744 0.448529 -vt 0.219178 0.448529 -vt 0.223744 0.455882 -vt 0.219178 0.455882 -vt 0.219178 0.463235 -vt 0.223744 0.463235 -vt 0.219178 0.470588 -vt 0.219178 0.411765 -vt 0.223744 0.419118 -vt 0.219178 0.419118 -vt 0.219178 0.426471 -vt 0.223744 0.426471 -vt 0.219178 0.433824 -vt 0.223744 0.433824 -vt 0.228371 0.463247 -vt 0.236070 0.458111 -vt 0.237391 0.463247 -vt 0.365020 0.831345 -vt 0.346991 0.860377 -vt 0.346991 0.802313 -vt 0.347070 0.860426 -vt 0.328954 0.831254 -vt 0.365186 0.831254 -vt 0.397260 0.573529 -vt 0.415525 0.500000 -vt 0.415525 0.573529 -vt 0.433790 0.573529 -vt 0.452055 0.500000 -vt 0.452055 0.573529 -vt 0.342466 0.500000 -vt 0.360731 0.573529 -vt 0.342466 0.573529 -vt 0.360782 0.632318 -vt 0.360782 0.573830 -vt 0.376509 0.588452 -vt 0.360731 0.500000 -vt 0.378995 0.573529 -vt 0.378995 0.500000 -vt 0.345129 0.617702 -vt 0.360810 0.573965 -vt 0.360810 0.632280 -vt 0.301370 0.617647 -vt 0.296804 0.794118 -vt 0.296804 0.617647 -vt 0.305936 0.794118 -vt 0.310502 0.617647 -vt 0.310502 0.794118 -vt 0.296804 0.801471 -vt 0.293547 0.797798 -vt 0.296804 0.794118 -vt 0.292237 0.794118 -vt 0.301370 0.794118 -vt 0.305936 0.617647 -vt 0.296804 0.860294 -vt 0.301370 0.801471 -vt 0.301370 0.860294 -vt 0.301370 0.794118 -vt 0.301370 0.801471 -vt 0.304551 0.797798 -vt 0.292237 0.801471 -vt 0.296804 0.801471 -vt 0.305936 0.860294 -vt 0.310502 0.801471 -vt 0.310502 0.860294 -vt 0.305936 0.801471 -vt 0.296804 0.617647 -vt 0.301370 0.794118 -vt 0.296804 0.794118 -vt 0.310502 0.794118 -vt 0.305936 0.617647 -vt 0.310502 0.617647 -vt 0.301370 0.801471 -vt 0.301370 0.794118 -vt 0.304551 0.797798 -vt 0.292237 0.617647 -vt 0.305936 0.794118 -vt 0.301370 0.617647 -vt 0.301370 0.860294 -vt 0.296804 0.801471 -vt 0.301370 0.801471 -vt 0.296804 0.794118 -vt 0.296804 0.801471 -vt 0.293547 0.797798 -vt 0.296804 0.860294 -vt 0.292237 0.801471 -vt 0.310502 0.860294 -vt 0.305936 0.801471 -vt 0.310502 0.801471 -vt 0.305936 0.860294 -vt 0.296804 0.617647 -vt 0.301370 0.794118 -vt 0.296804 0.794118 -vt 0.310502 0.794118 -vt 0.305936 0.617647 -vt 0.310502 0.617647 -vt 0.296804 0.794118 -vt 0.296804 0.801471 -vt 0.296804 0.801471 -vt 0.292237 0.617647 -vt 0.305936 0.794118 -vt 0.301370 0.617647 -vt 0.301370 0.860294 -vt 0.301370 0.801471 -vt 0.301370 0.794118 -vt 0.304566 0.797886 -vt 0.301370 0.801471 -vt 0.296804 0.860294 -vt 0.292237 0.801471 -vt 0.310502 0.860294 -vt 0.305936 0.801471 -vt 0.310502 0.801471 -vt 0.305936 0.860294 -vt 0.301370 0.617647 -vt 0.296804 0.794118 -vt 0.296804 0.617647 -vt 0.305936 0.794118 -vt 0.310502 0.617647 -vt 0.310502 0.794118 -vt 0.296804 0.801471 -vt 0.293547 0.797798 -vt 0.296804 0.794118 -vt 0.292237 0.794118 -vt 0.301370 0.794118 -vt 0.305936 0.617647 -vt 0.296804 0.860294 -vt 0.301370 0.801471 -vt 0.301370 0.860294 -vt 0.301370 0.794118 -vt 0.301370 0.801471 -vt 0.304551 0.797798 -vt 0.292237 0.860294 -vt 0.296804 0.801471 -vt 0.305936 0.860294 -vt 0.310502 0.801471 -vt 0.310502 0.860294 -vt 0.305936 0.801471 -vt 0.438356 0.617647 -vt 0.442922 0.573529 -vt 0.442922 0.617647 -vt 0.433790 0.573529 -vt 0.433790 0.617647 -vt 0.447489 0.573529 -vt 0.452055 0.617647 -vt 0.447489 0.617647 -vt 0.442922 0.955882 -vt 0.447489 0.948529 -vt 0.447489 0.955882 -vt 0.449793 0.952194 -vt 0.447489 0.948529 -vt 0.442922 0.625000 -vt 0.447489 0.625000 -vt 0.440661 0.952194 -vt 0.442922 0.948529 -vt 0.449728 0.621287 -vt 0.447489 0.625000 -vt 0.447489 0.617647 -vt 0.452055 0.948529 -vt 0.452055 0.625000 -vt 0.438356 0.948529 -vt 0.433790 0.625000 -vt 0.438356 0.625000 -vt 0.442922 0.948529 -vt 0.447489 1.000000 -vt 0.442922 0.955882 -vt 0.447489 0.955882 -vt 0.442922 0.625000 -vt 0.440640 0.621287 -vt 0.442922 0.617647 -vt 0.452055 0.955882 -vt 0.452055 1.000000 -vt 0.438356 1.000000 -vt 0.433790 0.955882 -vt 0.438356 0.955882 -vt 0.442922 1.000000 -vt 0.311363 0.491158 -vt 0.311363 0.449920 -vt 0.336973 0.449920 -vt 0.461174 0.389597 -vt 0.454794 0.364793 -vt 0.461174 0.360537 -vt 0.397260 0.183824 -vt 0.292237 0.242647 -vt 0.292237 0.183824 -vt 0.397260 0.301471 -vt 0.452055 0.242647 -vt 0.452055 0.301471 -vt 0.292237 0.301471 -vt 0.397260 0.242647 -vt 0.164384 0.345588 -vt 0.164384 0.382353 -vt 0.146119 0.345588 -vt 0.164384 0.338235 -vt 0.146119 0.169118 -vt 0.164384 0.169118 -vt 0.456621 0.183824 -vt 0.438356 0.125000 -vt 0.456621 0.125000 -vt 0.073059 0.345588 -vt 0.114155 0.382353 -vt 0.073059 0.382353 -vt 0.127854 0.169118 -vt 0.146119 0.338235 -vt 0.127854 0.338235 -vt 0.219178 0.169118 -vt 0.292237 0.338235 -vt 0.219178 0.338235 -vt 0.073059 0.338235 -vt 0.000000 0.169118 -vt 0.073059 0.169118 -vt 0.365297 0.183824 -vt 0.292237 0.125000 -vt 0.365297 0.125000 -vt 0.127854 0.345588 -vt 0.127854 0.382353 -vt 0.146119 0.338235 -vt 0.219178 0.345588 -vt 0.000000 0.345588 -vt 0.000000 0.338235 -vt 0.415525 0.360294 -vt 0.374429 0.301471 -vt 0.415525 0.301471 -vt 0.429224 0.360294 -vt 0.374429 0.360294 -vt 0.319635 0.301471 -vt 0.273973 0.382353 -vt 0.219178 0.382353 -vt 0.178082 0.382353 -vt 0.292237 0.301471 -vt 0.319635 0.360294 -vt 0.292237 0.360294 -vt 0.018265 0.382353 -vt 0.456621 0.360294 -vt 0.429224 0.301471 -vt 0.456621 0.301471 -vt 0.136986 0.709860 -vt 0.132428 0.718583 -vt 0.132428 0.708120 -vt 0.136986 0.671709 -vt 0.132428 0.663573 -vt 0.136986 0.665350 -vt 0.136986 0.620841 -vt 0.132428 0.629490 -vt 0.132428 0.619027 -vt 0.136986 0.576331 -vt 0.132428 0.584943 -vt 0.132428 0.574480 -vt 0.136986 0.538180 -vt 0.132428 0.529933 -vt 0.136986 0.531821 -vt 0.136986 0.493670 -vt 0.132428 0.485387 -vt 0.136986 0.487312 -vt 0.136986 0.983277 -vt 0.132428 0.975400 -vt 0.136986 0.976918 -vt 0.136986 0.938767 -vt 0.132428 0.930853 -vt 0.136986 0.932409 -vt 0.136986 0.894257 -vt 0.132428 0.886307 -vt 0.136986 0.887899 -vt 0.136986 0.843389 -vt 0.132428 0.852223 -vt 0.132428 0.841760 -vt 0.136986 0.798879 -vt 0.132428 0.807676 -vt 0.132428 0.797213 -vt 0.136986 0.760728 -vt 0.132428 0.752667 -vt 0.136986 0.754370 -vt 0.283105 1.000000 -vt 0.292237 0.963235 -vt 0.292237 1.000000 -vt 0.283105 0.889706 -vt 0.292237 0.926471 -vt 0.283105 0.926471 -vt 0.292237 0.852941 -vt 0.292237 0.889706 -vt 0.283105 0.816176 -vt 0.292237 0.779412 -vt 0.292237 0.816176 -vt 0.283105 0.742647 -vt 0.283105 0.779412 -vt 0.283105 0.705882 -vt 0.292237 0.669118 -vt 0.292237 0.705882 -vt 0.283105 0.669118 -vt 0.292237 0.632353 -vt 0.283105 0.558824 -vt 0.292237 0.595588 -vt 0.283105 0.595588 -vt 0.333333 0.750000 -vt 0.356164 0.764706 -vt 0.333333 0.764706 -vt 0.333333 0.764706 -vt 0.356164 0.779412 -vt 0.333333 0.779412 -vt 0.333333 0.779412 -vt 0.356164 0.794118 -vt 0.333333 0.794118 -vt 0.333333 0.735294 -vt 0.356164 0.750000 -vt 0.333333 0.750000 -vt 0.339272 0.940257 -vt 0.335669 0.999174 -vt 0.335669 0.941811 -vt 0.341909 0.936009 -vt 0.357083 0.989934 -vt 0.342874 0.930207 -vt 0.372759 0.964691 -vt 0.372759 0.895724 -vt 0.378497 0.930207 -vt 0.339272 0.920158 -vt 0.341909 0.924405 -vt 0.335669 0.861240 -vt 0.357083 0.870480 -vt 0.332065 0.920158 -vt 0.335669 0.918603 -vt 0.329428 0.924405 -vt 0.314254 0.870480 -vt 0.292840 0.930207 -vt 0.298578 0.895724 -vt 0.329428 0.936009 -vt 0.328463 0.930207 -vt 0.314254 0.989934 -vt 0.298578 0.964691 -vt 0.332065 0.940257 -vt 0.366313 0.854637 -vt 0.377921 0.843846 -vt 0.377921 0.854637 -vt 0.598173 0.647059 -vt 0.652968 0.529412 -vt 0.652968 0.647059 -vt 0.598173 0.411765 -vt 0.652968 0.411765 -vt 0.652968 0.294118 -vt 0.652968 1.000000 -vt 0.598173 0.882353 -vt 0.652968 0.882353 -vt 0.689694 0.984059 -vt 0.653239 0.882380 -vt 0.762606 0.780702 -vt 0.598173 0.764706 -vt 0.652968 0.764706 -vt 0.653606 0.647052 -vt 0.799654 0.647052 -vt 0.763142 0.748889 -vt 0.799087 0.647059 -vt 0.853881 0.529412 -vt 0.853881 0.647059 -vt 0.799087 0.529412 -vt 0.853881 0.411765 -vt 0.799087 0.411765 -vt 0.853881 0.294118 -vt 0.799087 1.000000 -vt 0.853881 0.882353 -vt 0.853881 1.000000 -vt 0.890927 0.983706 -vt 0.854535 0.882203 -vt 0.963713 0.780700 -vt 0.799087 0.764706 -vt 0.853881 0.764706 -vt 0.999895 0.647212 -vt 0.853771 0.647212 -vt 0.890302 0.545323 -vt 0.447489 0.955882 -vt 0.442922 1.000000 -vt 0.442922 0.955882 -vt 0.438356 1.000000 -vt 0.438356 0.955882 -vt 0.433790 1.000000 -vt 0.433790 0.955882 -vt 0.447489 0.948529 -vt 0.442922 0.955882 -vt 0.442922 0.948529 -vt 0.452055 1.000000 -vt 0.447489 1.000000 -vt 0.449775 0.952245 -vt 0.447489 0.955882 -vt 0.433790 0.625000 -vt 0.438356 0.948529 -vt 0.433790 0.948529 -vt 0.440634 0.952245 -vt 0.449814 0.621500 -vt 0.447489 0.625000 -vt 0.447489 0.617647 -vt 0.447489 0.625000 -vt 0.452055 0.948529 -vt 0.447489 0.948529 -vt 0.442922 0.625000 -vt 0.442922 0.948529 -vt 0.438356 0.625000 -vt 0.433790 0.573529 -vt 0.438356 0.617647 -vt 0.433790 0.617647 -vt 0.442922 0.617647 -vt 0.442922 0.625000 -vt 0.440812 0.621442 -vt 0.447489 0.617647 -vt 0.452055 0.573529 -vt 0.452055 0.617647 -vt 0.442922 0.573529 -vt 0.442922 0.617647 -vt 0.311363 0.491158 -vt 0.324168 0.441379 -vt 0.336973 0.449920 -vt 0.461174 0.389597 -vt 0.454794 0.364793 -vt 0.461174 0.360537 -vt 0.219178 0.441176 -vt 0.223744 0.448529 -vt 0.219178 0.448529 -vt 0.223744 0.455882 -vt 0.219178 0.455882 -vt 0.223744 0.463235 -vt 0.219178 0.463235 -vt 0.219178 0.470588 -vt 0.223744 0.411765 -vt 0.219178 0.419118 -vt 0.219178 0.411765 -vt 0.223744 0.419118 -vt 0.219178 0.426471 -vt 0.223744 0.433824 -vt 0.219178 0.433824 -vt 0.228371 0.463247 -vt 0.236070 0.458111 -vt 0.237391 0.463247 -vt 0.223744 0.441176 -vt 0.219178 0.448529 -vt 0.219178 0.441176 -vt 0.223744 0.455882 -vt 0.219178 0.455882 -vt 0.223744 0.463235 -vt 0.219178 0.463235 -vt 0.223744 0.470588 -vt 0.219178 0.470588 -vt 0.219178 0.411765 -vt 0.223744 0.419118 -vt 0.219178 0.419118 -vt 0.223744 0.426471 -vt 0.219178 0.426471 -vt 0.219178 0.433824 -vt 0.228371 0.463247 -vt 0.236070 0.458111 -vt 0.237391 0.463247 -vt 0.219178 0.441176 -vt 0.223744 0.448529 -vt 0.219178 0.448529 -vt 0.223744 0.455882 -vt 0.219178 0.455882 -vt 0.219178 0.463235 -vt 0.223744 0.470588 -vt 0.219178 0.470588 -vt 0.223744 0.411765 -vt 0.219178 0.419118 -vt 0.219178 0.411765 -vt 0.223744 0.426471 -vt 0.219178 0.426471 -vt 0.219178 0.433824 -vt 0.223744 0.433824 -vt 0.228371 0.463247 -vt 0.236070 0.458111 -vt 0.237391 0.463247 -vt 0.219178 0.441176 -vt 0.223744 0.448529 -vt 0.219178 0.448529 -vt 0.219178 0.455882 -vt 0.223744 0.455882 -vt 0.219178 0.463235 -vt 0.223744 0.470588 -vt 0.219178 0.470588 -vt 0.223744 0.411765 -vt 0.219178 0.419118 -vt 0.219178 0.411765 -vt 0.223744 0.419118 -vt 0.219178 0.426471 -vt 0.223744 0.426471 -vt 0.219178 0.433824 -vt 0.223744 0.433824 -vt 0.228371 0.463247 -vt 0.232881 0.455984 -vt 0.232881 0.470509 -vt 0.252150 0.509209 -vt 0.264843 0.500743 -vt 0.282793 0.529648 -vt 0.277535 0.550087 -vt 0.264843 0.558553 -vt 0.252150 0.550087 -vt 0.252150 0.509209 -vt 0.277535 0.509209 -vt 0.511416 0.176471 -vt 1.000000 0.000000 -vt 0.456621 0.235294 -vt 0.762557 0.088235 -vt 0.397260 0.088235 -vt 0.726027 0.088235 -vt 0.694064 0.132353 -vt 0.125028 0.114737 -vt 0.127657 0.124955 -vt 0.125028 0.135173 -vt 0.112337 0.135173 -vt 0.112337 0.114737 -vt 0.041096 0.007353 -vt -0.000000 0.029412 -vt 0.045662 0.029412 -vt -0.000000 0.110294 -vt 0.063927 0.051471 -vt 0.000000 0.007353 -vt 0.000000 0.169118 -vt 0.073059 0.110294 -vt 0.223744 0.455882 -vt 0.223744 0.470588 -vt 0.223744 0.411765 -vt 0.236070 0.468382 -vt 0.232881 0.470509 -vt 0.229692 0.468382 -vt 0.229692 0.458111 -vt 0.236070 0.458111 -vt 0.223744 0.470588 -vt 0.223744 0.411765 -vt 0.236070 0.468382 -vt 0.232881 0.470509 -vt 0.229692 0.468382 -vt 0.229692 0.458111 -vt 0.232881 0.455984 -vt 0.223744 0.470588 -vt 0.223744 0.426471 -vt 0.236070 0.468382 -vt 0.232881 0.470509 -vt 0.229692 0.468382 -vt 0.229692 0.458111 -vt 0.232881 0.455984 -vt 0.223744 0.441176 -vt 0.223744 0.470588 -vt 0.223744 0.411765 -vt 0.236070 0.468382 -vt 0.232881 0.470509 -vt 0.229692 0.468382 -vt 0.229692 0.458111 -vt 0.232881 0.455984 -vt 0.328962 0.831345 -vt 0.334242 0.810816 -vt 0.359739 0.810816 -vt 0.359739 0.851874 -vt 0.334242 0.851874 -vt 0.347070 0.802082 -vt 0.359880 0.810626 -vt 0.359880 0.851882 -vt 0.334260 0.851882 -vt 0.334260 0.810626 -vt 0.397260 0.500000 -vt 0.433790 0.500000 -vt 0.376509 0.617696 -vt 0.345054 0.617696 -vt 0.345054 0.588452 -vt 0.376492 0.617702 -vt 0.345129 0.588544 -vt 0.376492 0.588544 -vt 0.438356 0.573529 -vt 0.452055 0.573529 -vt 0.433790 0.948529 -vt 0.433790 1.000000 -vt 0.342277 0.470539 -vt 0.336973 0.491158 -vt 0.324168 0.499699 -vt 0.306060 0.470539 -vt 0.324168 0.441379 -vt 0.467554 0.364793 -vt 0.470197 0.375067 -vt 0.467554 0.385341 -vt 0.454794 0.385341 -vt 0.452151 0.375067 -vt 0.397260 0.242647 -vt 0.292237 0.242647 -vt 0.438356 0.183824 -vt 0.146119 0.169118 -vt 0.292237 0.169118 -vt 0.292237 0.183824 -vt 0.146119 0.345588 -vt 0.292237 0.345588 -vt 0.136986 0.716219 -vt 0.132428 0.674036 -vt 0.136986 0.627199 -vt 0.136986 0.582690 -vt 0.132428 0.540397 -vt 0.132428 0.495850 -vt 0.132428 0.985863 -vt 0.132428 0.941316 -vt 0.132428 0.896770 -vt 0.136986 0.849748 -vt 0.136986 0.805238 -vt 0.132428 0.763130 -vt 0.283105 0.963235 -vt 0.283105 0.852941 -vt 0.292237 0.742647 -vt 0.283105 0.632353 -vt 0.292237 0.558824 -vt 0.356164 0.750000 -vt 0.356164 0.764706 -vt 0.356164 0.779412 -vt 0.356164 0.735294 -vt 0.375468 0.858587 -vt 0.372117 0.860033 -vt 0.368766 0.858587 -vt 0.365415 0.849241 -vt 0.372117 0.838450 -vt 0.366313 0.843846 -vt 0.368766 0.839896 -vt 0.375468 0.839895 -vt 0.378819 0.849241 -vt 0.598173 0.529412 -vt 0.598173 0.294118 -vt 0.598173 1.000000 -vt 0.799061 0.882380 -vt 0.762606 0.984059 -vt 0.689694 0.780702 -vt 0.690118 0.748889 -vt 0.690118 0.545216 -vt 0.763142 0.545216 -vt 0.799087 0.294118 -vt 0.799087 0.882353 -vt 1.000105 0.882203 -vt 0.963713 0.983706 -vt 0.890927 0.780700 -vt 0.963364 0.545323 -vt 0.963364 0.749101 -vt 0.890302 0.749101 -vt 0.452055 0.955882 -vt 0.452055 0.625000 -vt 0.438356 0.573529 -vt 0.447489 0.573529 -vt 0.342277 0.470539 -vt 0.336973 0.491158 -vt 0.324168 0.499699 -vt 0.306060 0.470539 -vt 0.311363 0.449920 -vt 0.467554 0.364793 -vt 0.470197 0.375067 -vt 0.467554 0.385341 -vt 0.454794 0.385341 -vt 0.452151 0.375067 -vt 0.223744 0.441176 -vt 0.223744 0.470588 -vt 0.223744 0.426471 -vt 0.236070 0.468382 -vt 0.232881 0.470509 -vt 0.229692 0.468382 -vt 0.229692 0.458111 -vt 0.232881 0.455984 -vt 0.223744 0.448529 -vt 0.223744 0.411765 -vt 0.223744 0.433824 -vt 0.236070 0.468382 -vt 0.232881 0.470509 -vt 0.229692 0.468382 -vt 0.229692 0.458111 -vt 0.232881 0.455984 -vt 0.223744 0.441176 -vt 0.223744 0.463235 -vt 0.223744 0.419118 -vt 0.236070 0.468382 -vt 0.232881 0.470509 -vt 0.229692 0.468382 -vt 0.229692 0.458111 -vt 0.232881 0.455984 -vt 0.223744 0.441176 -vt 0.223744 0.463235 -vt 0.237391 0.463247 -vt 0.236070 0.468382 -vt 0.229692 0.468382 -vt 0.229692 0.458111 -vt 0.236070 0.458111 -vt 0.277535 0.550087 -vt 0.264843 0.558553 -vt 0.252150 0.550087 -vt 0.246892 0.529648 -vt 0.277535 0.509209 -vt 0.125028 0.114737 -vt 0.127657 0.124955 -vt 0.125028 0.135173 -vt 0.112337 0.135173 -vt 0.112337 0.114737 -vt 0.109654 0.154463 -vt 0.112292 0.144208 -vt 0.118661 0.139960 -vt 0.127667 0.154463 -vt 0.125030 0.164718 -vt 0.109654 0.154463 -vt 0.112292 0.144208 -vt 0.118661 0.139960 -vt 0.127667 0.154463 -vt 0.125030 0.164718 -vt 0.292237 0.617647 -vt 0.292237 0.860294 -vt 0.292237 0.794118 -vt 0.292237 0.860294 -vt 0.292237 0.794118 -vt 0.292237 0.860294 -vt 0.292237 0.617647 -vt 0.292237 0.801471 -vt 0.027397 0.419118 -vt -0.000000 0.426471 -vt -0.000000 0.419118 -vt 0.027397 0.411765 -vt -0.000000 0.411765 -vt 0.027397 0.404412 -vt -0.000000 0.404412 -vt 0.027397 0.397059 -vt -0.000000 0.397059 -vt 0.027397 0.389706 -vt -0.000000 0.389706 -vt 0.027397 0.382353 -vt -0.000000 0.382353 -vt -0.000000 0.463235 -vt 0.027397 0.470588 -vt -0.000000 0.470588 -vt -0.000000 0.455882 -vt 0.027397 0.463235 -vt -0.000000 0.448529 -vt 0.027397 0.455882 -vt -0.000000 0.441176 -vt 0.027397 0.448529 -vt -0.000000 0.433824 -vt 0.027397 0.441176 -vt 0.027397 0.433824 -vt 0.045662 0.419118 -vt 0.027397 0.426471 -vt 0.045662 0.411765 -vt 0.045662 0.404412 -vt 0.045662 0.397059 -vt 0.045662 0.389706 -vt 0.045662 0.382353 -vt 0.045662 0.470588 -vt 0.045662 0.463235 -vt 0.045662 0.455882 -vt 0.045662 0.448529 -vt 0.045662 0.441176 -vt 0.045662 0.433824 -vt 0.059361 0.419118 -vt 0.045662 0.426471 -vt 0.059361 0.411765 -vt 0.059361 0.404412 -vt 0.059361 0.397059 -vt 0.059361 0.389706 -vt 0.059361 0.382353 -vt 0.059361 0.470588 -vt 0.059361 0.463235 -vt 0.059361 0.455882 -vt 0.059361 0.448529 -vt 0.059361 0.441176 -vt 0.059361 0.433824 -vt 0.068493 0.426471 -vt 0.059361 0.426471 -vt 0.068493 0.419118 -vt 0.068493 0.411765 -vt 0.068493 0.404412 -vt 0.068493 0.397059 -vt 0.068493 0.389706 -vt 0.068493 0.463235 -vt 0.068493 0.455882 -vt 0.068493 0.448529 -vt 0.068493 0.441176 -vt 0.068493 0.433824 -vt 0.082192 0.426471 -vt 0.082192 0.419118 -vt 0.082192 0.411765 -vt 0.082192 0.404412 -vt 0.082192 0.397059 -vt 0.068493 0.382353 -vt 0.082192 0.389706 -vt 0.082192 0.463235 -vt 0.068493 0.470588 -vt 0.082192 0.455882 -vt 0.082192 0.448529 -vt 0.082192 0.441176 -vt 0.082192 0.433824 -vt 0.100457 0.426471 -vt 0.100457 0.419118 -vt 0.100457 0.411765 -vt 0.100457 0.404412 -vt 0.100457 0.397059 -vt 0.082192 0.382353 -vt 0.100457 0.389706 -vt 0.100457 0.463235 -vt 0.082192 0.470588 -vt 0.100457 0.455882 -vt 0.100457 0.448529 -vt 0.100457 0.441176 -vt 0.100457 0.433824 -vt 0.118721 0.426471 -vt 0.118721 0.419118 -vt 0.118721 0.411765 -vt 0.118721 0.404412 -vt 0.118721 0.397059 -vt 0.100457 0.382353 -vt 0.118721 0.389706 -vt 0.118721 0.463235 -vt 0.100457 0.470588 -vt 0.118721 0.455882 -vt 0.118721 0.448529 -vt 0.118721 0.441176 -vt 0.118721 0.433824 -vt 0.136986 0.426471 -vt 0.136986 0.419118 -vt 0.136986 0.411765 -vt 0.136986 0.404412 -vt 0.136986 0.397059 -vt 0.118721 0.382353 -vt 0.136986 0.389706 -vt 0.136986 0.463235 -vt 0.118721 0.470588 -vt 0.136986 0.455882 -vt 0.136986 0.448529 -vt 0.136986 0.441176 -vt 0.136986 0.433824 -vt 0.159817 0.426471 -vt 0.159817 0.419118 -vt 0.159817 0.411765 -vt 0.159817 0.404412 -vt 0.159817 0.397059 -vt 0.136986 0.382353 -vt 0.159817 0.389706 -vt 0.159817 0.463235 -vt 0.136986 0.470588 -vt 0.159817 0.455882 -vt 0.159817 0.448529 -vt 0.159817 0.441176 -vt 0.159817 0.433824 -vt 0.178082 0.426471 -vt 0.178082 0.419118 -vt 0.178082 0.411765 -vt 0.178082 0.404412 -vt 0.178082 0.397059 -vt 0.159817 0.382353 -vt 0.178082 0.389706 -vt 0.178082 0.463235 -vt 0.159817 0.470588 -vt 0.178082 0.455882 -vt 0.178082 0.448529 -vt 0.178082 0.441176 -vt 0.178082 0.433824 -vt 0.200913 0.426471 -vt 0.200913 0.419118 -vt 0.200913 0.411765 -vt 0.200913 0.404412 -vt 0.200913 0.397059 -vt 0.178082 0.382353 -vt 0.200913 0.389706 -vt 0.200913 0.463235 -vt 0.178082 0.470588 -vt 0.200913 0.455882 -vt 0.200913 0.448529 -vt 0.200913 0.441176 -vt 0.200913 0.433824 -vt 0.219178 0.426471 -vt 0.219178 0.419118 -vt 0.219178 0.411765 -vt 0.219178 0.404412 -vt 0.219178 0.397059 -vt 0.200913 0.382353 -vt 0.219178 0.389706 -vt 0.219178 0.463235 -vt 0.200913 0.470588 -vt 0.219178 0.455882 -vt 0.219178 0.448529 -vt 0.219178 0.441176 -vt 0.219178 0.433824 -vt 0.191781 0.470588 -vt 0.178082 0.558824 -vt 0.178082 0.470588 -vt 0.164384 0.470588 -vt 0.164384 0.558824 -vt 0.150685 0.470588 -vt 0.150685 0.558824 -vt 0.136986 0.470588 -vt 0.246575 0.558824 -vt 0.232877 0.470588 -vt 0.246575 0.470588 -vt 0.232877 0.558824 -vt 0.219178 0.470588 -vt 0.219178 0.558824 -vt 0.205479 0.470588 -vt 0.205479 0.558824 -vt 0.525114 0.588235 -vt 0.506849 0.536765 -vt 0.525114 0.536765 -vt 0.488584 0.580882 -vt 0.488584 0.544118 -vt 0.470320 0.551471 -vt 0.470320 0.573529 -vt 0.452055 0.558824 -vt 0.598173 0.558824 -vt 0.579909 0.573529 -vt 0.579909 0.551471 -vt 0.561644 0.580882 -vt 0.561644 0.544118 -vt 0.543379 0.536765 -vt 0.525114 0.639706 -vt 0.506849 0.588235 -vt 0.488584 0.632353 -vt 0.488584 0.595588 -vt 0.470320 0.625000 -vt 0.470320 0.602941 -vt 0.452055 0.610294 -vt 0.598173 0.617647 -vt 0.579909 0.602941 -vt 0.598173 0.610294 -vt 0.579909 0.625000 -vt 0.561644 0.595588 -vt 0.561644 0.632353 -vt 0.543379 0.588235 -vt 0.506849 0.691176 -vt 0.506849 0.639706 -vt 0.488584 0.647059 -vt 0.488584 0.683824 -vt 0.470320 0.654412 -vt 0.470320 0.676471 -vt 0.452055 0.661765 -vt 0.598173 0.661765 -vt 0.579909 0.676471 -vt 0.579909 0.654412 -vt 0.561644 0.683824 -vt 0.561644 0.647059 -vt 0.543379 0.691176 -vt 0.543379 0.639706 -vt 0.525114 0.691176 -vt 0.525114 0.742647 -vt 0.488584 0.735294 -vt 0.488584 0.698529 -vt 0.470320 0.727941 -vt 0.470320 0.705882 -vt 0.452055 0.713235 -vt 0.598173 0.713235 -vt 0.579909 0.727941 -vt 0.579909 0.705882 -vt 0.561644 0.698529 -vt 0.561644 0.735294 -vt 0.506849 0.794118 -vt 0.506849 0.742647 -vt 0.488584 0.750000 -vt 0.488584 0.786765 -vt 0.470320 0.757353 -vt 0.452055 0.772059 -vt 0.452055 0.764706 -vt 0.598173 0.772059 -vt 0.579909 0.757353 -vt 0.598173 0.764706 -vt 0.561644 0.786765 -vt 0.561644 0.750000 -vt 0.543379 0.794118 -vt 0.543379 0.742647 -vt 0.525114 0.845588 -vt 0.525114 0.794118 -vt 0.506849 0.845588 -vt 0.488584 0.801471 -vt 0.470320 0.830882 -vt 0.470320 0.808824 -vt 0.452055 0.816176 -vt 0.598173 0.823529 -vt 0.579909 0.808824 -vt 0.598173 0.816176 -vt 0.579909 0.830882 -vt 0.561644 0.801471 -vt 0.543379 0.845588 -vt 0.506849 0.897059 -vt 0.488584 0.852941 -vt 0.470320 0.882353 -vt 0.470320 0.860294 -vt 0.452055 0.867647 -vt 0.598173 0.875000 -vt 0.579909 0.860294 -vt 0.598173 0.867647 -vt 0.579909 0.882353 -vt 0.561644 0.852941 -vt 0.543379 0.897059 -vt 0.525114 0.897059 -vt 0.506849 0.948529 -vt 0.488584 0.904412 -vt 0.470320 0.933824 -vt 0.470320 0.911765 -vt 0.452055 0.919118 -vt 0.598173 0.919118 -vt 0.579909 0.933824 -vt 0.579909 0.911765 -vt 0.561644 0.904412 -vt 0.543379 0.948529 -vt 0.525114 0.948529 -vt 0.506849 1.000000 -vt 0.488584 0.955882 -vt 0.488584 0.992647 -vt 0.470320 0.963235 -vt 0.470320 0.985294 -vt 0.452055 0.970588 -vt 0.598173 0.970588 -vt 0.579909 0.985294 -vt 0.579909 0.963235 -vt 0.561644 0.955882 -vt 0.543379 1.000000 -vt 0.525114 0.433824 -vt 0.506849 0.382353 -vt 0.525114 0.382353 -vt 0.488584 0.426471 -vt 0.488584 0.389706 -vt 0.470320 0.419118 -vt 0.470320 0.397059 -vt 0.452055 0.404412 -vt 0.598173 0.411765 -vt 0.579909 0.397059 -vt 0.598173 0.404412 -vt 0.579909 0.419118 -vt 0.561644 0.389706 -vt 0.561644 0.426471 -vt 0.543379 0.382353 -vt 0.506849 0.485294 -vt 0.506849 0.433824 -vt 0.488584 0.441176 -vt 0.488584 0.477941 -vt 0.470320 0.448529 -vt 0.470320 0.470588 -vt 0.452055 0.455882 -vt 0.598173 0.463235 -vt 0.579909 0.448529 -vt 0.598173 0.455882 -vt 0.561644 0.477941 -vt 0.561644 0.441176 -vt 0.543379 0.485294 -vt 0.543379 0.433824 -vt 0.525114 0.485294 -vt 0.488584 0.492647 -vt 0.470320 0.522059 -vt 0.470320 0.500000 -vt 0.452055 0.507353 -vt 0.598173 0.514706 -vt 0.579909 0.500000 -vt 0.598173 0.507353 -vt 0.579909 0.522059 -vt 0.561644 0.492647 -vt 0.109589 0.154412 -vt 0.073059 0.161765 -vt 0.073059 0.154412 -vt 0.109589 0.161765 -vt 0.073059 0.169118 -vt 0.109589 0.110294 -vt 0.073059 0.117647 -vt 0.073059 0.110294 -vt 0.109589 0.117647 -vt 0.073059 0.125000 -vt 0.109589 0.132353 -vt 0.073059 0.132353 -vt 0.109589 0.139706 -vt 0.073059 0.139706 -vt 0.109589 0.147059 -vt 0.073059 0.147059 -vt 0.073059 0.154412 -vt 0.109589 0.161765 -vt 0.073059 0.161765 -vt 0.073059 0.169118 -vt 0.073059 0.110294 -vt 0.109589 0.117647 -vt 0.073059 0.117647 -vt 0.073059 0.125000 -vt 0.109589 0.125000 -vt 0.073059 0.132353 -vt 0.109589 0.139706 -vt 0.073059 0.139706 -vt 0.109589 0.147059 -vt 0.073059 0.147059 -vt 0.109589 0.154412 -vt 0.228310 0.441176 -vt 0.228310 0.448529 -vt 0.228310 0.463235 -vt 0.228310 0.419118 -vt 0.228310 0.426471 -vt 0.228310 0.470588 -vt 0.228310 0.433824 -vt 0.228310 0.455882 -vt 0.228310 0.433824 -vt 0.228310 0.441176 -vt 0.228310 0.448529 -vt 0.228310 0.463235 -vt 0.228310 0.419118 -vt 0.228310 0.426471 -vt 0.228310 0.470588 -vt 0.228310 0.455882 -vt 0.228310 0.411765 -vt 0.228310 0.433824 -vt 0.228310 0.441176 -vt 0.228310 0.448529 -vt 0.228310 0.463235 -vt 0.228310 0.419118 -vt 0.228310 0.426471 -vt 0.228310 0.470588 -vt 0.228310 0.455882 -vt 0.228310 0.433824 -vt 0.228310 0.441176 -vt 0.228310 0.448529 -vt 0.228310 0.463235 -vt 0.228310 0.426471 -vt 0.228310 0.470588 -vt 0.228310 0.455882 -vt 0.228310 0.419118 -vt 0.310502 0.816176 -vt 0.328767 0.838235 -vt 0.310502 0.838235 -vt 0.310502 0.860294 -vt 0.328767 0.683824 -vt 0.310502 0.705882 -vt 0.310502 0.683824 -vt 0.328767 0.727941 -vt 0.310502 0.727941 -vt 0.310502 0.750000 -vt 0.328767 0.750000 -vt 0.310502 0.772059 -vt 0.328767 0.772059 -vt 0.310502 0.794118 -vt 0.328767 0.816176 -vt 0.369863 0.382353 -vt 0.383562 0.500000 -vt 0.369863 0.500000 -vt 0.383562 0.382353 -vt 0.397260 0.500000 -vt 0.410959 0.382353 -vt 0.410959 0.500000 -vt 0.424658 0.500000 -vt 0.424658 0.382353 -vt 0.438356 0.500000 -vt 0.438356 0.382353 -vt 0.452055 0.500000 -vt 0.415525 0.360294 -vt 0.420091 0.360294 -vt 0.342466 0.382353 -vt 0.356164 0.500000 -vt 0.342466 0.500000 -vt 0.356164 0.382353 -vt 0.351598 0.360294 -vt 0.397260 0.382353 -vt 0.388128 0.360294 -vt 0.392694 0.360294 -vt 0.433790 0.360294 -vt 0.360731 0.360294 -vt 0.365297 0.360294 -vt 0.378995 0.360294 -vt 0.401826 0.360294 -vt 0.406393 0.360294 -vt 0.447489 0.360294 -vt 0.452055 0.382353 -vt -0.000000 0.735294 -vt 0.073059 0.691176 -vt 0.073059 0.735294 -vt -0.000000 0.691176 -vt 0.073059 0.647059 -vt -0.000000 0.647059 -vt 0.073059 0.602941 -vt -0.000000 0.602941 -vt 0.073059 0.558824 -vt -0.000000 0.558824 -vt 0.073059 0.514706 -vt -0.000000 0.514706 -vt 0.073059 0.470588 -vt -0.000000 1.000000 -vt 0.073059 0.955882 -vt 0.073059 1.000000 -vt -0.000000 0.955882 -vt 0.073059 0.911765 -vt -0.000000 0.911765 -vt 0.073059 0.867647 -vt -0.000000 0.867647 -vt 0.073059 0.823529 -vt 0.210046 0.926471 -vt 0.136986 0.889706 -vt 0.210046 0.889706 -vt -0.000000 0.823529 -vt 0.073059 0.779412 -vt -0.000000 0.779412 -vt 0.091317 0.954077 -vt 0.091317 0.560601 -vt 0.109598 0.595434 -vt 0.091317 0.600323 -vt 0.091317 0.998296 -vt 0.091317 0.511885 -vt 0.091317 0.516382 -vt 0.091317 0.556104 -vt 0.091317 0.777200 -vt 0.091317 0.693259 -vt 0.091317 0.732981 -vt 0.091317 0.644543 -vt 0.091317 0.821420 -vt 0.091317 0.688762 -vt 0.091317 0.825917 -vt 0.091317 0.865639 -vt 0.091317 0.909858 -vt 0.109598 0.991683 -vt 0.109598 0.786106 -vt 0.109599 0.815572 -vt 0.109598 0.698051 -vt 0.109598 0.727517 -vt 0.109598 0.918189 -vt 0.109599 0.947655 -vt 0.109598 0.551406 -vt 0.091317 0.737478 -vt 0.109598 0.771545 -vt 0.091317 0.649040 -vt 0.109598 0.683489 -vt 0.091317 0.870136 -vt 0.109599 0.903628 -vt 0.091317 0.472163 -vt 0.109598 0.507378 -vt 0.091317 0.604820 -vt 0.109598 0.639461 -vt 0.109599 0.859600 -vt 0.109599 0.962217 -vt 0.420091 0.779412 -vt 0.415525 0.573529 -vt 0.420091 0.573529 -vt 0.109598 0.565968 -vt 0.109598 0.521940 -vt 0.109598 0.742078 -vt 0.109598 0.654023 -vt 0.109599 0.874162 -vt 0.109598 0.477913 -vt 0.109598 0.609995 -vt 0.429224 0.779412 -vt 0.433790 0.573529 -vt 0.433790 0.779412 -vt 0.392694 0.779412 -vt 0.388128 0.573529 -vt 0.392694 0.573529 -vt 0.410959 0.779412 -vt 0.415525 0.779412 -vt 0.401826 0.779412 -vt 0.406393 0.573529 -vt 0.406393 0.779412 -vt 0.424658 0.779412 -vt 0.429224 0.573529 -vt 0.388128 0.779412 -vt 0.383562 0.573529 -vt 0.410959 0.573529 -vt 0.397260 0.573529 -vt 0.401826 0.573529 -vt 0.424658 0.573529 -vt 0.383562 0.779412 -vt 0.378995 0.573529 -vt 0.397260 0.779412 -vt 0.392694 0.573529 -vt 0.388128 1.000000 -vt 0.388128 0.573529 -vt 0.210046 0.632353 -vt 0.136986 0.669118 -vt 0.136986 0.632353 -vt 0.210046 0.742647 -vt 0.136986 0.779412 -vt 0.136986 0.742647 -vt 0.136986 0.852941 -vt 0.210046 0.852941 -vt 0.210046 0.595588 -vt 0.136986 0.595588 -vt 0.210046 1.000000 -vt 0.136986 0.963235 -vt 0.210046 0.963235 -vt 0.210046 0.705882 -vt 0.136986 0.705882 -vt 0.136986 0.816176 -vt 0.210046 0.816176 -vt 0.136986 0.558824 -vt 0.210046 0.558824 -vt 0.136986 0.926471 -vt 0.210046 0.669118 -vt 0.210046 0.779412 -vt 0.283105 0.742647 -vt 0.210046 0.779412 -vt 0.210046 0.742647 -vt 0.283105 0.705882 -vt 0.210046 0.669118 -vt 0.283105 0.669118 -vt 0.210046 0.632353 -vt 0.283105 0.632353 -vt 0.210046 0.595588 -vt 0.283105 0.558824 -vt 0.210046 0.558824 -vt 0.210046 1.000000 -vt 0.283105 0.963235 -vt 0.210046 0.963235 -vt 0.283105 0.926471 -vt 0.210046 0.889706 -vt 0.283105 0.889706 -vt 0.210046 0.852941 -vt 0.283105 0.852941 -vt 0.283105 0.816176 -vt 0.283105 0.779412 -vt 0.283105 0.617647 -vt 0.283105 0.610294 -vt 0.283105 0.948529 -vt 0.283105 0.941176 -vt 0.283105 0.838235 -vt 0.283105 0.830882 -vt 0.283105 0.720588 -vt 0.283105 0.727941 -vt 0.415525 0.573529 -vt 0.410959 1.000000 -vt 0.410959 0.573529 -vt 0.406393 0.573529 -vt 0.401826 1.000000 -vt 0.401826 0.573529 -vt 0.429224 0.573529 -vt 0.424658 1.000000 -vt 0.424658 0.573529 -vt 0.383562 1.000000 -vt 0.383562 0.573529 -vt 0.406393 1.000000 -vt 0.397260 0.573529 -vt 0.397260 1.000000 -vt 0.420091 1.000000 -vt 0.420091 0.573529 -vt 0.378995 1.000000 -vt 0.378995 0.573529 -vt 0.392694 1.000000 -vt 0.415525 1.000000 -vt 0.433790 0.573529 -vt 0.429224 1.000000 -vt 0.369863 0.382353 -vt 0.383562 0.500000 -vt 0.369863 0.500000 -vt 0.397260 0.382353 -vt 0.397260 0.500000 -vt 0.410959 0.500000 -vt 0.424658 0.382353 -vt 0.424658 0.500000 -vt 0.438356 0.500000 -vt 0.452055 0.382353 -vt 0.452055 0.500000 -vt 0.410959 0.382353 -vt 0.420091 0.360294 -vt 0.342466 0.382353 -vt 0.356164 0.500000 -vt 0.342466 0.500000 -vt 0.351598 0.360294 -vt 0.356164 0.382353 -vt 0.383562 0.382353 -vt 0.392694 0.360294 -vt 0.433790 0.360294 -vt 0.438356 0.382353 -vt 0.360731 0.360294 -vt 0.365297 0.360294 -vt 0.378995 0.360294 -vt 0.406393 0.360294 -vt 0.442922 0.360294 -vt 0.447489 0.360294 -vt 0.228310 0.433824 -vt 0.228310 0.441176 -vt 0.228310 0.448529 -vt 0.228310 0.463235 -vt 0.228310 0.426471 -vt 0.228310 0.470588 -vt 0.228310 0.455882 -vt 0.228310 0.411765 -vt 0.228310 0.419118 -vt 0.228310 0.441176 -vt 0.228310 0.448529 -vt 0.228310 0.455882 -vt 0.228310 0.463235 -vt 0.228310 0.426471 -vt 0.228310 0.470588 -vt 0.228310 0.433824 -vt 0.228310 0.419118 -vt 0.228310 0.441176 -vt 0.228310 0.448529 -vt 0.228310 0.455882 -vt 0.228310 0.463235 -vt 0.228310 0.426471 -vt 0.228310 0.470588 -vt 0.228310 0.433824 -vt 0.228310 0.419118 -vt 0.228310 0.441176 -vt 0.228310 0.448529 -vt 0.228310 0.455882 -vt 0.228310 0.463235 -vt 0.228310 0.426471 -vt 0.228310 0.470588 -vt 0.228310 0.433824 -vt 0.228310 0.419118 -vt 0.525114 0.588235 -vt 0.506849 0.536765 -vt 0.525114 0.536765 -vt 0.488584 0.580882 -vt 0.488584 0.544118 -vt 0.470320 0.551471 -vt 0.470320 0.573529 -vt 0.452055 0.558824 -vt 0.598173 0.558824 -vt 0.579909 0.573529 -vt 0.579909 0.551471 -vt 0.561644 0.580882 -vt 0.561644 0.544118 -vt 0.543379 0.536765 -vt 0.525114 0.639706 -vt 0.506849 0.588235 -vt 0.488584 0.632353 -vt 0.488584 0.595588 -vt 0.470320 0.625000 -vt 0.470320 0.602941 -vt 0.452055 0.617647 -vt 0.452055 0.610294 -vt 0.598173 0.617647 -vt 0.579909 0.602941 -vt 0.598173 0.610294 -vt 0.579909 0.625000 -vt 0.561644 0.595588 -vt 0.561644 0.632353 -vt 0.543379 0.588235 -vt 0.525114 0.691176 -vt 0.506849 0.639706 -vt 0.506849 0.691176 -vt 0.488584 0.647059 -vt 0.488584 0.683824 -vt 0.470320 0.654412 -vt 0.470320 0.676471 -vt 0.452055 0.661765 -vt 0.598173 0.661765 -vt 0.579909 0.676471 -vt 0.579909 0.654412 -vt 0.561644 0.683824 -vt 0.561644 0.647059 -vt 0.543379 0.691176 -vt 0.543379 0.639706 -vt 0.506849 0.742647 -vt 0.488584 0.735294 -vt 0.488584 0.698529 -vt 0.470320 0.727941 -vt 0.470320 0.705882 -vt 0.452055 0.713235 -vt 0.598173 0.713235 -vt 0.579909 0.727941 -vt 0.579909 0.705882 -vt 0.561644 0.698529 -vt 0.561644 0.735294 -vt 0.543379 0.742647 -vt 0.525114 0.742647 -vt 0.506849 0.794118 -vt 0.488584 0.750000 -vt 0.488584 0.786765 -vt 0.470320 0.757353 -vt 0.470320 0.779412 -vt 0.452055 0.764706 -vt 0.598173 0.772059 -vt 0.579909 0.757353 -vt 0.598173 0.764706 -vt 0.561644 0.786765 -vt 0.561644 0.750000 -vt 0.543379 0.794118 -vt 0.525114 0.845588 -vt 0.525114 0.794118 -vt 0.506849 0.845588 -vt 0.488584 0.801471 -vt 0.470320 0.830882 -vt 0.470320 0.808824 -vt 0.452055 0.823529 -vt 0.452055 0.816176 -vt 0.598173 0.823529 -vt 0.579909 0.808824 -vt 0.598173 0.816176 -vt 0.579909 0.830882 -vt 0.561644 0.801471 -vt 0.543379 0.845588 -vt 0.506849 0.897059 -vt 0.488584 0.852941 -vt 0.470320 0.882353 -vt 0.470320 0.860294 -vt 0.452055 0.867647 -vt 0.598173 0.867647 -vt 0.579909 0.882353 -vt 0.579909 0.860294 -vt 0.561644 0.852941 -vt 0.543379 0.897059 -vt 0.525114 0.897059 -vt 0.506849 0.948529 -vt 0.488584 0.904412 -vt 0.470320 0.933824 -vt 0.470320 0.911765 -vt 0.452055 0.926471 -vt 0.452055 0.919118 -vt 0.598173 0.919118 -vt 0.579909 0.933824 -vt 0.579909 0.911765 -vt 0.561644 0.904412 -vt 0.543379 0.948529 -vt 0.525114 0.948529 -vt 0.506849 1.000000 -vt 0.488584 0.955882 -vt 0.488584 0.992647 -vt 0.470320 0.963235 -vt 0.470320 0.985294 -vt 0.452055 0.970588 -vt 0.598173 0.977941 -vt 0.579909 0.963235 -vt 0.598173 0.970588 -vt 0.561644 0.992647 -vt 0.561644 0.955882 -vt 0.543379 1.000000 -vt 0.525114 0.433824 -vt 0.506849 0.382353 -vt 0.525114 0.382353 -vt 0.488584 0.426471 -vt 0.488584 0.389706 -vt 0.470320 0.419118 -vt 0.470320 0.397059 -vt 0.452055 0.404412 -vt 0.598173 0.404412 -vt 0.579909 0.419118 -vt 0.579909 0.397059 -vt 0.561644 0.389706 -vt 0.561644 0.426471 -vt 0.543379 0.382353 -vt 0.506849 0.485294 -vt 0.506849 0.433824 -vt 0.488584 0.441176 -vt 0.488584 0.477941 -vt 0.470320 0.448529 -vt 0.452055 0.463235 -vt 0.452055 0.455882 -vt 0.598173 0.463235 -vt 0.579909 0.448529 -vt 0.598173 0.455882 -vt 0.561644 0.477941 -vt 0.561644 0.441176 -vt 0.543379 0.485294 -vt 0.543379 0.433824 -vt 0.525114 0.485294 -vt 0.488584 0.492647 -vt 0.470320 0.522059 -vt 0.470320 0.500000 -vt 0.452055 0.507353 -vt 0.598173 0.514706 -vt 0.579909 0.500000 -vt 0.598173 0.507353 -vt 0.579909 0.522059 -vt 0.561644 0.492647 -vt 0.191781 0.470588 -vt 0.178082 0.558824 -vt 0.178082 0.470588 -vt 0.164384 0.470588 -vt 0.150685 0.558824 -vt 0.150685 0.470588 -vt 0.136986 0.470588 -vt 0.246575 0.558824 -vt 0.232877 0.470588 -vt 0.246575 0.470588 -vt 0.232877 0.558824 -vt 0.219178 0.470588 -vt 0.219178 0.558824 -vt 0.205479 0.470588 -vt 0.191781 0.558824 -vt 0.219178 0.382353 -vt 0.219178 0.470588 -vt 0.191781 0.558824 -vt 0.136986 0.558824 -vt 0.452055 0.566176 -vt 0.598173 0.566176 -vt 0.452055 0.617647 -vt 0.452055 0.669118 -vt 0.598173 0.669118 -vt 0.452055 0.720588 -vt 0.598173 0.720588 -vt 0.470320 0.779412 -vt 0.579909 0.779412 -vt 0.488584 0.838235 -vt 0.452055 0.823529 -vt 0.561644 0.838235 -vt 0.488584 0.889706 -vt 0.452055 0.875000 -vt 0.561644 0.889706 -vt 0.488584 0.941176 -vt 0.452055 0.926471 -vt 0.598173 0.926471 -vt 0.561644 0.941176 -vt 0.525114 1.000000 -vt 0.452055 0.977941 -vt 0.598173 0.977941 -vt 0.561644 0.992647 -vt 0.452055 0.411765 -vt 0.452055 0.463235 -vt 0.579909 0.470588 -vt 0.488584 0.529412 -vt 0.452055 0.514706 -vt 0.561644 0.529412 -vt 0.228310 0.411765 -vt 0.228310 0.411765 -vt 0.228310 0.411765 -vt 0.328767 0.860294 -vt 0.328767 0.705882 -vt 0.328767 0.794118 -vt 0.347032 0.360294 -vt 0.429224 0.360294 -vt 0.374429 0.360294 -vt 0.442922 0.360294 -vt -0.000000 0.470588 -vt 0.091317 0.914355 -vt 0.091317 0.958574 -vt 0.091317 0.781697 -vt 0.109599 0.830134 -vt 0.378995 0.779412 -vt 0.136986 1.000000 -vt 0.210046 0.705882 -vt 0.283105 0.595588 -vt 0.283105 1.000000 -vt 0.210046 0.926471 -vt 0.210046 0.816176 -vt 0.210046 0.617647 -vt 0.210046 0.610294 -vt 0.210046 0.948529 -vt 0.210046 0.941176 -vt 0.210046 0.838235 -vt 0.210046 0.830882 -vt 0.210046 0.720588 -vt 0.210046 0.727941 -vt 0.433790 1.000000 -vt 0.415525 0.360294 -vt 0.347032 0.360294 -vt 0.388128 0.360294 -vt 0.429224 0.360294 -vt 0.374429 0.360294 -vt 0.401826 0.360294 -vt 0.228310 0.411765 -vt 0.228310 0.411765 -vt 0.228310 0.411765 -vt 0.452055 0.566176 -vt 0.598173 0.566176 -vt 0.452055 0.669118 -vt 0.598173 0.669118 -vt 0.452055 0.720588 -vt 0.598173 0.720588 -vt 0.452055 0.772059 -vt 0.579909 0.779412 -vt 0.488584 0.838235 -vt 0.561644 0.838235 -vt 0.488584 0.889706 -vt 0.452055 0.875000 -vt 0.598173 0.875000 -vt 0.561644 0.889706 -vt 0.488584 0.941176 -vt 0.598173 0.926471 -vt 0.561644 0.941176 -vt 0.525114 1.000000 -vt 0.452055 0.977941 -vt 0.579909 0.985294 -vt 0.452055 0.411765 -vt 0.598173 0.411765 -vt 0.470320 0.470588 -vt 0.579909 0.470588 -vt 0.488584 0.529412 -vt 0.452055 0.514706 -vt 0.561644 0.529412 -vt 0.164384 0.558824 -vt 0.136986 0.558824 -vt 0.205479 0.558824 -vt 0.109589 0.169118 -vt 0.109589 0.125000 -vt 0.109589 0.169118 -vt 0.109589 0.110294 -vt 0.109589 0.132353 -vn 0.0000 -0.0000 1.0000 -vn -1.0000 -0.0000 0.0000 -vn 0.0000 0.9894 0.1453 -vn 1.0000 0.0000 0.0000 -vn 0.0000 -1.0000 0.0000 -vn 0.0000 1.0000 -0.0000 -vn 0.0000 0.0000 -1.0000 -vn 0.0000 -0.9885 0.1514 -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.0000 0.3827 0.9239 -vn 0.0000 0.9239 0.3827 -vn 0.8660 -0.5000 0.0000 -vn -0.8660 0.5000 -0.0000 -vn 0.5000 0.8660 0.0000 -vn 0.5000 -0.8660 -0.0000 -vn -0.5000 -0.8660 0.0000 -vn -0.5000 0.8660 0.0000 -vn 0.0000 0.7071 0.7071 -vn 0.0000 -0.7071 0.7071 -vn 0.0823 0.0000 -0.9966 -vn -0.9966 0.0000 -0.0823 -vn -0.0823 0.0000 0.9966 -vn 0.0582 0.7071 -0.7047 -vn 0.9966 0.0000 0.0823 -vn -0.0582 0.7071 0.7047 -vn 0.0000 0.6247 0.7809 -vn 0.0000 0.6247 -0.7809 -vn 0.8660 0.5000 0.0000 -vn -0.8660 -0.5000 0.0000 -vn 0.0823 -0.0000 0.9966 -vn 0.9966 -0.0000 -0.0823 -vn -0.0823 0.0000 -0.9966 -vn 0.0582 -0.7071 0.7047 -vn -0.9966 0.0000 0.0823 -vn -0.0582 -0.7071 -0.7047 -vn -0.1081 -0.5055 0.8560 -vn 0.0606 -0.0355 0.9975 -vn -0.1935 -0.4594 0.8669 -vn -0.3475 -0.7900 0.5051 -vn -0.3979 -0.7642 0.5076 -vn -0.4958 -0.8682 0.0176 -vn -0.4969 -0.8677 0.0107 -vn -0.5103 -0.7142 -0.4790 -vn -0.4619 -0.7382 -0.4915 -vn -0.3840 -0.3645 -0.8483 -vn -0.3011 -0.4083 -0.8617 -vn -0.1512 0.0876 -0.9846 -vn -0.0582 0.0331 -0.9977 -vn 0.2003 0.4657 -0.8620 -vn 0.4041 0.7712 -0.4918 -vn 0.1226 0.5158 -0.8479 -vn 0.4984 0.8668 0.0108 -vn 0.3615 0.8003 -0.4784 -vn 0.4591 0.7288 0.5080 -vn 0.5018 0.8648 0.0181 -vn 0.2987 0.3980 0.8674 -vn 0.5087 0.6971 0.5053 -vn 0.3828 0.3472 0.8561 -vn 0.1036 -0.6226 0.7756 -vn 0.1581 -0.0910 0.9832 -vn -0.2196 -0.8583 0.4636 -vn -0.4879 -0.8725 0.0259 -vn -0.6254 -0.6534 -0.4265 -vn -0.5886 -0.2525 -0.7679 -vn -0.3856 0.2226 -0.8954 -vn -0.0756 0.6360 -0.7679 -vn 0.2531 0.8683 -0.4265 -vn 0.5116 0.8588 0.0259 -vn 0.6335 0.6194 0.4636 -vn 0.5910 0.2216 0.7756 -vn 0.3463 -0.7594 0.5508 -vn 0.3981 -0.2298 0.8881 -vn -0.0701 -0.9406 0.3320 -vn -0.4736 -0.8804 0.0243 -vn -0.7567 -0.5832 -0.2954 -vn -0.8340 -0.1183 -0.5389 -vn -0.6720 0.3880 -0.6308 -vn -0.3146 0.7814 -0.5389 -vn 0.1267 0.9469 -0.2954 -vn 0.5257 0.8503 0.0243 -vn 0.7796 0.5310 0.3320 -vn 0.8308 0.0797 0.5508 -vn 0.8383 -0.4840 0.2508 -vn 0.6728 -0.3884 0.6296 -vn 0.4892 -0.8442 0.2188 -vn 0.0129 -0.9914 0.1305 -vn -0.4728 -0.8811 0.0083 -vn -0.8393 -0.5316 -0.1137 -vn -0.9791 -0.0293 -0.2012 -vn -0.4642 0.8625 -0.2012 -vn 0.0407 0.9927 -0.1137 -vn 0.5267 0.8500 0.0083 -vn 0.8650 0.4845 0.1305 -vn 0.9757 -0.0016 0.2188 -vn 0.8643 -0.4990 -0.0629 -vn 0.5070 -0.8602 -0.0552 -vn 0.0158 -0.9993 -0.0334 -vn -0.4834 -0.8754 -0.0009 -vn -0.8567 -0.5146 0.0355 -vn -0.8423 0.4863 -0.2324 -vn -0.9978 -0.0106 0.0653 -vn -0.4897 0.8694 0.0653 -vn 0.0173 0.9992 0.0355 -vn 0.5164 0.8563 -0.0009 -vn 0.8733 0.4859 -0.0334 -vn 0.9984 -0.0089 -0.0552 -vn 0.8404 -0.4852 -0.2415 -vn 0.4821 -0.8506 -0.2100 -vn -0.0045 -0.9924 -0.1230 -vn -0.4917 -0.8708 -0.0023 -vn -0.8488 -0.5147 0.1206 -vn -0.8634 0.4985 0.0770 -vn -0.9771 -0.0181 0.2120 -vn -0.4729 0.8552 0.2120 -vn 0.0214 0.9925 0.1206 -vn 0.5082 0.8612 -0.0023 -vn 0.8572 0.5000 -0.1230 -vn 0.9777 0.0078 -0.2100 -vn 0.8192 -0.4729 -0.3244 -vn 0.4612 -0.8415 -0.2813 -vn -0.0200 -0.9864 -0.1633 -vn -0.4966 -0.8679 -0.0013 -vn -0.8409 -0.5165 0.1616 -vn -0.8394 0.4847 0.2457 -vn -0.9592 -0.0255 0.2814 -vn -0.4575 0.8435 0.2814 -vn 0.0269 0.9865 0.1616 -vn 0.5033 0.8641 -0.0013 -vn 0.8442 0.5105 -0.1633 -vn 0.9594 0.0213 -0.2813 -vn 0.8117 -0.4686 -0.3484 -vn 0.4530 -0.8389 -0.3017 -vn -0.0271 -0.9843 -0.1742 -vn -0.8389 -0.5157 0.1742 -vn -0.8189 0.4728 0.3253 -vn -0.9530 -0.0271 0.3018 -vn -0.4530 0.8389 0.3018 -vn 0.0271 0.9843 0.1742 -vn 0.8389 0.5156 -0.1742 -vn 0.9530 0.0271 -0.3017 -vn 0.8177 -0.4721 -0.3293 -vn 0.4567 -0.8427 -0.2848 -vn -0.0269 -0.9861 -0.1637 -vn -0.5028 -0.8644 0.0011 -vn -0.8433 -0.5114 0.1653 -vn -0.8117 0.4686 0.3485 -vn -0.9582 -0.0224 0.2851 -vn -0.4597 0.8410 0.2851 -vn 0.0212 0.9860 0.1653 -vn 0.4972 0.8676 0.0011 -vn 0.8405 0.5164 -0.1637 -vn 0.9582 0.0258 -0.2848 -vn 0.8342 -0.4816 -0.2686 -vn 0.4694 -0.8519 -0.2321 -vn -0.0218 -0.9909 -0.1328 -vn -0.5059 -0.8626 0.0019 -vn -0.8531 -0.5039 0.1353 -vn -0.8179 0.4722 0.3288 -vn -0.9726 -0.0123 0.2322 -vn -0.4756 0.8484 0.2322 -vn 0.0099 0.9908 0.1353 -vn 0.4941 0.8694 0.0019 -vn 0.8472 0.5144 -0.1328 -vn 0.9725 0.0194 -0.2321 -vn 0.8549 -0.4936 -0.1593 -vn 0.4854 -0.8634 -0.1374 -vn -0.0153 -0.9968 -0.0781 -vn -0.5097 -0.8603 0.0017 -vn -0.8653 -0.4947 0.0803 -vn -0.8344 0.4818 0.2676 -vn -0.9905 0.0002 0.1371 -vn -0.4954 0.8577 0.1371 -vn -0.0042 0.9967 0.0803 -vn 0.4902 0.8716 0.0017 -vn 0.8556 0.5117 -0.0781 -vn 0.9904 0.0113 -0.1374 -vn 0.8625 -0.4979 -0.0906 -vn 0.4918 -0.8672 -0.0780 -vn -0.0130 -0.9989 -0.0441 -vn -0.5127 -0.8585 0.0013 -vn -0.8713 -0.4886 0.0457 -vn -0.8552 0.4937 0.1577 -vn -0.9969 0.0071 0.0774 -vn -0.5047 0.8598 0.0774 -vn -0.0125 0.9989 0.0457 -vn 0.4871 0.8733 0.0013 -vn 0.8586 0.5108 -0.0441 -vn 0.9969 0.0077 -0.0780 -vn 0.5490 0.5490 0.6302 -vn 0.7071 0.7071 0.0000 -vn 0.7764 0.0000 0.6302 -vn 0.7071 -0.7071 0.0000 -vn 0.5490 -0.5490 0.6302 -vn 0.0000 -0.7764 0.6302 -vn -0.7071 -0.7071 0.0000 -vn -0.5490 -0.5490 0.6302 -vn -0.7764 0.0000 0.6302 -vn -0.7071 0.7071 0.0000 -vn -0.5490 0.5490 0.6302 -vn 0.7362 0.0000 0.6768 -vn 0.0550 0.0318 0.9980 -vn 0.0635 0.0000 0.9980 -vn -0.6724 0.0000 0.7402 -vn -0.5823 -0.3362 0.7402 -vn -0.5823 -0.3362 -0.7402 -vn -0.6724 0.0000 -0.7402 -vn 0.0550 0.0318 -0.9980 -vn 0.0635 0.0000 -0.9980 -vn 0.7362 0.0000 -0.6768 -vn 0.6375 0.3681 0.6768 -vn 0.0318 0.0550 0.9980 -vn -0.3362 -0.5823 0.7402 -vn -0.3362 -0.5823 -0.7402 -vn 0.0318 0.0550 -0.9980 -vn 0.6375 0.3681 -0.6768 -vn 0.0000 0.7362 0.6768 -vn 0.3681 0.6375 0.6768 -vn 0.0000 0.0635 0.9980 -vn 0.0000 -0.6724 0.7402 -vn 0.0000 -0.6724 -0.7402 -vn 0.0000 0.0635 -0.9980 -vn 0.0000 0.7362 -0.6768 -vn 0.3681 0.6375 -0.6768 -vn -0.0318 0.0550 0.9980 -vn 0.3362 -0.5823 0.7402 -vn 0.3362 -0.5823 -0.7402 -vn -0.0318 0.0550 -0.9980 -vn -0.6375 0.3681 0.6768 -vn -0.3681 0.6375 0.6768 -vn -0.0550 0.0318 0.9980 -vn -0.0550 0.0318 -0.9980 -vn -0.6375 0.3681 -0.6768 -vn -0.3681 0.6375 -0.6768 -vn -0.7362 0.0000 0.6768 -vn 0.6724 0.0000 0.7402 -vn 0.5823 -0.3362 0.7402 -vn 0.5823 -0.3362 -0.7402 -vn 0.6724 0.0000 -0.7402 -vn -0.7362 0.0000 -0.6768 -vn -0.6375 -0.3681 0.6768 -vn -0.0635 0.0000 0.9980 -vn 0.5823 0.3362 0.7402 -vn 0.5823 0.3362 -0.7402 -vn -0.0635 0.0000 -0.9980 -vn -0.6375 -0.3681 -0.6768 -vn -0.3681 -0.6375 0.6768 -vn -0.0550 -0.0318 0.9980 -vn 0.3362 0.5823 0.7402 -vn 0.3362 0.5823 -0.7402 -vn -0.0550 -0.0318 -0.9980 -vn -0.3681 -0.6375 -0.6768 -vn 0.0000 -0.7362 0.6768 -vn -0.0318 -0.0550 0.9980 -vn 0.0000 -0.0635 0.9980 -vn 0.0000 0.6724 0.7402 -vn 0.0000 0.6724 -0.7402 -vn -0.0318 -0.0550 -0.9980 -vn 0.0000 -0.7362 -0.6768 -vn 0.0318 -0.0550 0.9980 -vn -0.3362 0.5823 0.7402 -vn -0.3362 0.5823 -0.7402 -vn 0.0000 -0.0635 -0.9980 -vn 0.0318 -0.0550 -0.9980 -vn 0.6375 -0.3681 0.6768 -vn 0.3681 -0.6375 0.6768 -vn 0.0550 -0.0318 0.9980 -vn -0.5823 0.3362 0.7402 -vn 0.0550 -0.0318 -0.9980 -vn 0.6375 -0.3681 -0.6768 -vn 0.3681 -0.6375 -0.6768 -vn -0.5823 0.3362 -0.7402 -vn 0.6302 0.0000 -0.7764 -vn -0.6302 -0.5490 -0.5490 -vn -0.6302 0.0000 -0.7764 -vn 0.6302 -0.5490 -0.5490 -vn -0.6302 -0.7764 0.0000 -vn 0.6302 -0.7764 0.0000 -vn -0.6302 -0.5490 0.5490 -vn 0.6302 -0.5490 0.5490 -vn -0.6302 0.0000 0.7764 -vn 0.6302 0.5490 0.5490 -vn -0.6302 0.5490 0.5490 -vn 0.6302 0.7764 0.0000 -vn -0.6302 0.7764 0.0000 -vn 0.6302 0.5490 -0.5490 -vn -0.6302 0.5490 -0.5490 -vn 0.6302 0.0000 0.7764 -vn 0.2445 0.6856 0.6856 -vn 0.8133 0.5819 0.0000 -vn 0.2445 0.9696 0.0000 -vn 0.2445 0.6856 -0.6856 -vn 0.8133 0.4115 -0.4115 -vn 0.2445 0.0000 -0.9696 -vn 0.8133 -0.4115 -0.4115 -vn 0.2445 -0.6856 -0.6856 -vn 0.2445 0.0000 0.9696 -vn 0.8133 -0.4115 0.4115 -vn 0.8133 0.0000 0.5819 -vn 0.2445 -0.9696 0.0000 -vn 0.8133 -0.5819 0.0000 -vn 0.8133 0.4115 0.4115 -vn 0.8133 0.0000 -0.5819 -vn 0.2445 -0.6856 0.6856 -vn -0.5458 0.3151 -0.7764 -vn 0.2713 -0.7906 -0.5490 -vn -0.8203 -0.1603 -0.5490 -vn -0.9340 -0.3572 0.0000 -vn 0.1576 -0.9875 0.0000 -vn -0.8203 -0.1603 0.5490 -vn 0.5458 -0.3151 0.7764 -vn -0.5458 0.3151 0.7764 -vn -0.2713 0.7906 0.5490 -vn 0.8203 0.1603 0.5490 -vn -0.1576 0.9875 0.0000 -vn 0.9340 0.3572 0.0000 -vn -0.2713 0.7906 -0.5490 -vn 0.5458 -0.3151 -0.7764 -vn 0.0000 0.3491 -0.9371 -vn 0.5490 -0.6302 -0.5490 -vn 0.0000 -0.6302 -0.7764 -vn 0.6626 0.3491 -0.6626 -vn 0.7764 -0.6302 0.0000 -vn 0.6626 0.3491 0.6626 -vn 0.5490 -0.6302 0.5490 -vn 0.0000 -0.6302 0.7764 -vn 0.0000 0.3491 0.9371 -vn -0.5490 -0.6302 0.5490 -vn -0.6626 0.3491 0.6626 -vn -0.7764 -0.6302 0.0000 -vn 0.3275 0.8863 0.3275 -vn 0.0000 0.8863 0.4631 -vn -0.9371 0.3491 0.0000 -vn -0.5490 -0.6302 -0.5490 -vn -0.6626 0.3491 -0.6626 -vn -0.3275 0.8863 -0.3275 -vn 0.9371 0.3491 0.0000 -vn 0.3275 0.8863 -0.3275 -vn 0.4631 0.8863 0.0000 -vn -0.3275 0.8863 0.3275 -vn 0.0000 0.8863 -0.4631 -vn -0.4631 0.8863 0.0000 -vn 0.4924 0.8529 -0.1735 -vn 0.0000 0.9848 -0.1735 -vn 0.6733 0.6889 0.2684 -vn 0.8529 0.4924 -0.1735 -vn 0.6889 0.6733 0.2684 -vn 0.9848 0.0000 -0.1735 -vn 0.8529 -0.4924 -0.1735 -vn 0.6889 -0.6733 0.2684 -vn 0.4924 -0.8529 -0.1735 -vn 0.6733 -0.6889 0.2684 -vn 0.0000 -0.9848 -0.1735 -vn -0.4924 -0.8529 -0.1735 -vn -0.6733 -0.6889 0.2684 -vn -0.8529 -0.4924 -0.1735 -vn -0.6889 -0.6733 0.2684 -vn -0.9848 0.0000 -0.1735 -vn -0.8529 0.4924 -0.1735 -vn -0.9320 -0.1065 0.3464 -vn -0.7571 0.0000 0.6532 -vn -0.6889 0.6733 0.2684 -vn -0.4924 0.8529 -0.1735 -vn -0.6733 0.6889 0.2684 -vn -0.4252 -0.7366 -0.5259 -vn 0.7366 -0.4252 -0.5259 -vn 0.5694 0.0000 -0.8220 -vn 0.8505 0.0000 -0.5259 -vn 0.0000 -0.8505 -0.5259 -vn 0.4252 -0.7366 -0.5259 -vn -0.4252 0.7366 -0.5259 -vn 0.4252 0.7366 -0.5259 -vn 0.0000 0.8505 -0.5259 -vn 0.7366 0.4252 -0.5259 -vn -0.7366 0.4252 -0.5259 -vn -0.8505 0.0000 -0.5259 -vn -0.7366 -0.4252 -0.5259 -vn 0.0000 -0.5694 -0.8220 -vn -0.1066 -0.1846 -0.9770 -vn 0.0000 -0.2132 -0.9770 -vn -0.2847 0.4931 -0.8220 -vn -0.4931 0.2847 -0.8220 -vn 0.2847 0.4931 -0.8220 -vn 0.0000 0.5694 -0.8220 -vn -0.4931 -0.2847 -0.8220 -vn -0.2847 -0.4931 -0.8220 -vn 0.4931 -0.2847 -0.8220 -vn 0.2847 -0.4931 -0.8220 -vn 0.4931 0.2847 -0.8220 -vn -0.5694 0.0000 -0.8220 -vn -0.6377 0.0000 -0.7703 -vn 0.2132 0.0000 -0.9770 -vn -0.1846 0.1066 -0.9770 -vn 0.1066 0.1846 -0.9770 -vn 0.0000 0.2132 -0.9770 -vn 0.1846 -0.1066 -0.9770 -vn -0.1066 0.1846 -0.9770 -vn -0.1846 -0.1066 -0.9770 -vn 0.1066 -0.1846 -0.9770 -vn 0.1846 0.1066 -0.9770 -vn -0.2132 0.0000 -0.9770 -vn -0.3189 -0.5523 -0.7703 -vn 0.0000 -0.6377 -0.7703 -vn 0.6377 0.0000 -0.7703 -vn -0.3189 0.5523 -0.7703 -vn -0.5523 0.3189 -0.7703 -vn 0.3189 0.5523 -0.7703 -vn 0.0000 0.6377 -0.7703 -vn -0.5523 -0.3189 -0.7703 -vn 0.5523 -0.3189 -0.7703 -vn 0.3189 -0.5523 -0.7703 -vn 0.5523 0.3189 -0.7703 -vn 0.6377 0.0000 0.7703 -vn 0.6557 -0.3786 0.6532 -vn 0.5523 -0.3189 0.7703 -vn 0.9320 -0.1065 0.3464 -vn 0.7571 0.0000 0.6532 -vn 0.1065 0.9320 0.3464 -vn 0.0000 0.7571 0.6532 -vn 0.3786 0.6557 0.6532 -vn -0.6557 0.3786 0.6532 -vn -0.9320 0.1065 0.3464 -vn 0.1065 -0.9320 0.3464 -vn 0.3786 -0.6557 0.6532 -vn -0.3786 -0.6557 0.6532 -vn -0.1065 -0.9320 0.3464 -vn 0.9320 0.1065 0.3464 -vn 0.6557 0.3786 0.6532 -vn -0.3786 0.6557 0.6532 -vn -0.1065 0.9320 0.3464 -vn 0.0000 -0.7571 0.6532 -vn -0.6557 -0.3786 0.6532 -vn 0.7624 0.3158 0.5648 -vn 0.3158 -0.7624 0.5648 -vn -0.7624 -0.3158 0.5648 -vn -0.3158 0.7624 0.5648 -vn 0.3083 -0.7443 0.5924 -vn 0.0000 -0.6377 0.7703 -vn -0.7443 0.3083 0.5924 -vn -0.6377 0.0000 0.7703 -vn 0.3083 0.7443 0.5924 -vn -0.3083 0.7443 0.5924 -vn 0.0000 0.6377 0.7703 -vn 0.7443 -0.3083 0.5924 -vn -0.3083 -0.7443 0.5924 -vn 0.7443 0.3083 0.5924 -vn -0.7624 0.3158 0.5648 -vn 0.3158 0.7624 0.5648 -vn -0.7443 -0.3083 0.5924 -vn 0.7624 -0.3158 0.5648 -vn -0.3158 -0.7624 0.5648 -vn -0.5523 0.3189 0.7703 -vn -0.3189 0.5523 0.7703 -vn 0.3189 0.5523 0.7703 -vn -0.3189 -0.5523 0.7703 -vn -0.5523 -0.3189 0.7703 -vn 0.3189 -0.5523 0.7703 -vn 0.5523 0.3189 0.7703 -vn -0.7572 0.0000 0.6532 -vn -0.5490 0.5490 -0.6302 -vn -0.5490 -0.5490 -0.6302 -vn 0.0000 -0.7764 -0.6302 -vn 0.5490 -0.5490 -0.6302 -vn 0.7764 0.0000 -0.6302 -vn 0.0000 0.7764 -0.6302 -vn -0.8626 0.4980 0.0889 -vn 0.0000 0.7764 0.6302 -vn 0.2713 -0.7906 0.5490 -vn 0.8203 0.1603 -0.5490 -vn -0.7764 0.0000 -0.6302 -vn 0.5490 0.5490 -0.6302 -usemtl None -s off -f 170/1/1 166/2/1 162/3/1 -f 270/4/2 271/5/2 269/6/2 -f 276/7/3 277/8/3 272/9/3 -f 276/10/4 273/11/4 275/12/4 -f 274/13/1 269/14/1 273/15/1 -f 275/16/5 269/17/5 271/18/5 -f 272/9/6 274/13/6 276/7/6 -f 277/19/7 279/20/7 278/21/7 -f 271/5/2 277/22/2 278/23/2 -f 275/12/4 280/24/4 276/10/4 -f 271/18/8 279/20/8 275/16/8 -f 294/25/4 290/26/4 286/27/4 -f 287/28/2 293/29/2 295/30/2 -f 310/31/4 306/32/4 302/33/4 -f 303/34/2 309/35/2 311/36/2 -f 323/37/2 321/38/2 322/39/2 -f 316/40/7 326/41/7 315/42/7 -f 320/43/4 327/44/4 319/45/4 -f 318/46/1 313/47/1 317/48/1 -f 326/49/5 313/50/5 315/51/5 -f 316/52/6 318/53/6 325/54/6 -f 313/50/5 321/38/5 315/51/5 -f 313/47/1 323/55/1 322/56/1 -f 325/57/7 331/58/7 320/59/7 -f 315/42/7 324/60/7 316/40/7 -f 325/57/7 319/61/7 326/41/7 -f 326/49/5 327/44/5 317/62/5 -f 318/46/1 332/63/1 336/64/1 -f 317/48/1 328/65/1 318/46/1 -f 334/66/6 329/67/6 333/68/6 -f 336/69/6 331/70/6 335/71/6 -f 316/52/4 333/68/4 314/72/4 -f 324/60/7 334/73/7 316/40/7 -f 320/43/4 332/74/4 328/75/4 -f 323/37/2 330/76/2 324/77/2 -f 314/78/1 329/67/1 323/55/1 -f 318/53/2 335/71/2 325/54/2 -f 338/79/9 339/80/9 337/81/9 -f 340/82/10 341/83/10 339/80/10 -f 341/83/11 344/84/11 343/85/11 -f 344/84/12 345/86/12 343/85/12 -f 345/87/13 348/88/13 347/89/13 -f 347/89/14 350/90/14 349/91/14 -f 350/90/15 351/92/15 349/91/15 -f 352/93/16 337/81/16 351/92/16 -f 359/94/4 357/95/4 355/96/4 -f 362/97/9 363/98/9 361/99/9 -f 364/100/10 365/101/10 363/98/10 -f 366/102/11 367/103/11 365/101/11 -f 368/104/12 369/105/12 367/103/12 -f 369/106/13 372/107/13 371/108/13 -f 371/108/14 374/109/14 373/110/14 -f 373/110/15 376/111/15 375/112/15 -f 375/112/16 362/97/16 361/99/16 -f 383/113/4 380/114/4 379/115/4 -f 386/116/9 387/117/9 385/118/9 -f 388/119/10 389/120/10 387/117/10 -f 390/121/11 391/122/11 389/120/11 -f 392/123/12 393/124/12 391/122/12 -f 394/125/13 395/126/13 393/127/13 -f 396/128/14 397/129/14 395/126/14 -f 397/129/15 400/130/15 399/131/15 -f 400/130/16 385/118/16 399/131/16 -f 407/132/4 404/133/4 403/134/4 -f 409/135/9 412/136/9 411/137/9 -f 411/137/10 414/138/10 413/139/10 -f 414/138/11 415/140/11 413/139/11 -f 416/141/12 417/142/12 415/140/12 -f 417/143/13 420/144/13 419/145/13 -f 420/144/14 421/146/14 419/145/14 -f 422/147/15 423/148/15 421/146/15 -f 424/149/16 409/135/16 423/148/16 -f 431/150/4 428/151/4 427/152/4 -f 446/153/17 442/154/17 434/155/17 -f 439/156/18 443/157/18 435/158/18 -f 449/159/19 452/160/19 451/161/19 -f 452/160/4 453/162/4 451/161/4 -f 453/162/20 456/163/20 455/164/20 -f 456/165/21 457/166/21 455/167/21 -f 450/168/1 456/169/1 454/170/1 -f 458/171/2 459/172/2 457/166/2 -f 460/173/22 449/159/22 459/172/22 -f 451/174/7 455/175/7 449/176/7 -f 462/177/2 463/178/2 461/179/2 -f 468/180/4 465/181/4 467/182/4 -f 462/183/2 461/184/2 469/185/2 -f 467/186/5 461/179/5 463/178/5 -f 464/187/6 466/188/6 468/180/6 -f 461/189/2 473/190/2 469/191/2 -f 462/183/23 471/192/23 466/193/23 -f 465/194/4 466/193/4 471/192/4 -f 461/189/7 470/195/7 472/196/7 -f 471/197/4 470/198/4 465/199/4 -f 469/191/1 474/200/1 471/197/1 -f 477/201/4 476/202/4 475/203/4 -f 479/204/2 482/205/2 481/206/2 -f 476/207/4 483/208/4 475/209/4 -f 475/203/5 481/210/5 477/201/5 -f 480/211/6 478/212/6 482/205/6 -f 487/213/4 475/214/4 483/215/4 -f 485/216/23 476/207/23 480/217/23 -f 479/218/2 485/216/2 480/217/2 -f 486/219/7 479/220/7 475/214/7 -f 484/221/2 485/222/2 479/223/2 -f 488/224/1 483/215/1 485/222/1 -f 491/225/2 490/226/2 489/227/2 -f 493/228/4 496/229/4 495/230/4 -f 490/231/2 497/232/2 489/233/2 -f 489/227/6 495/234/6 491/225/6 -f 494/235/5 492/236/5 496/229/5 -f 501/237/2 489/233/2 497/238/2 -f 494/239/24 497/232/24 490/231/24 -f 493/240/4 499/241/4 494/239/4 -f 500/242/7 493/243/7 489/233/7 -f 498/244/4 499/245/4 493/246/4 -f 502/247/1 497/238/1 499/245/1 -f 504/248/4 505/249/4 503/250/4 -f 510/251/2 507/252/2 509/253/2 -f 504/254/4 503/255/4 511/256/4 -f 509/257/6 503/250/6 505/249/6 -f 506/258/5 508/259/5 510/251/5 -f 503/260/4 515/261/4 511/262/4 -f 504/254/24 513/263/24 508/264/24 -f 507/265/2 508/264/2 513/263/2 -f 507/266/7 514/267/7 503/260/7 -f 513/268/2 512/269/2 507/270/2 -f 511/262/1 516/271/1 513/268/1 -f 522/272/25 517/273/25 518/274/25 -f 523/275/26 522/272/26 524/276/26 -f 519/277/27 524/278/27 520/279/27 -f 521/280/28 525/281/28 517/282/28 -f 518/274/29 519/277/29 520/279/29 -f 519/283/29 517/282/29 525/281/29 -f 519/284/29 529/285/29 527/286/29 -f 521/280/26 523/287/26 526/288/26 -f 527/289/29 529/290/29 531/291/29 -f 523/292/5 527/286/5 528/293/5 -f 526/294/26 528/295/26 530/296/26 -f 526/294/6 529/285/6 525/297/6 -f 527/298/29 535/299/29 534/300/29 -f 530/301/26 528/302/26 532/303/26 -f 530/301/30 531/291/30 529/290/30 -f 527/298/25 533/304/25 528/305/25 -f 532/306/26 533/307/26 536/308/26 -f 532/306/27 535/299/27 531/309/27 -f 543/310/5 547/311/5 551/312/5 -f 559/313/6 556/314/6 555/315/6 -f 570/316/1 568/317/1 569/318/1 -f 575/319/5 569/320/5 568/321/5 -f 576/322/7 562/323/7 575/319/7 -f 578/324/2 587/325/2 564/326/2 -f 569/327/2 563/328/2 570/329/2 -f 570/330/5 571/331/5 567/332/5 -f 582/333/4 589/334/4 590/335/4 -f 567/336/4 572/337/4 568/338/4 -f 573/339/2 584/340/2 562/341/2 -f 575/342/4 565/343/4 576/344/4 -f 576/345/5 561/346/5 573/347/5 -f 581/348/4 588/349/4 589/334/4 -f 562/341/2 578/324/2 569/327/2 -f 568/338/4 582/333/4 575/342/4 -f 569/327/2 564/326/2 579/350/2 -f 572/337/4 581/348/4 568/338/4 -f 584/340/2 577/351/2 562/341/2 -f 575/342/4 566/352/4 583/353/4 -f 586/354/6 590/355/6 589/356/6 -f 589/356/6 587/357/6 586/354/6 -f 585/358/6 591/359/6 590/355/6 -f 577/351/2 592/360/2 585/361/2 -f 577/351/2 586/362/2 578/324/2 -f 566/363/31 592/364/31 574/365/31 -f 582/333/4 591/366/4 566/352/4 -f 564/367/32 588/368/32 580/369/32 -f 642/370/7 653/371/7 654/372/7 -f 642/373/7 655/374/7 643/375/7 -f 644/376/7 655/377/7 656/378/7 -f 645/379/7 656/380/7 657/381/7 -f 645/382/7 658/383/7 646/384/7 -f 646/385/7 659/386/7 647/387/7 -f 647/388/7 660/389/7 648/390/7 -f 648/391/7 661/392/7 649/393/7 -f 649/394/7 662/395/7 650/396/7 -f 651/397/7 662/398/7 663/399/7 -f 652/400/7 663/401/7 664/402/7 -f 652/403/7 653/404/7 641/405/7 -f 714/406/1 701/407/1 702/408/1 -f 716/409/1 703/410/1 715/411/1 -f 716/409/1 705/412/1 704/413/1 -f 718/414/1 707/415/1 706/416/1 -f 720/417/1 707/415/1 719/418/1 -f 721/419/1 710/420/1 709/421/1 -f 722/422/1 711/423/1 710/420/1 -f 714/424/1 712/425/1 724/426/1 -f 614/427/1 688/428/1 687/429/1 -f 596/430/1 679/431/1 677/432/1 -f 602/433/1 682/434/1 681/435/1 -f 608/436/1 685/437/1 684/438/1 -f 689/439/1 726/440/1 690/441/1 -f 691/442/1 725/443/1 689/439/1 -f 692/444/1 727/445/1 691/442/1 -f 692/444/1 729/446/1 728/447/1 -f 694/448/1 729/446/1 693/449/1 -f 694/448/1 731/450/1 730/451/1 -f 696/452/1 731/450/1 695/453/1 -f 697/454/1 732/455/1 696/452/1 -f 697/454/1 734/456/1 733/457/1 -f 699/458/1 734/456/1 698/459/1 -f 699/458/1 736/460/1 735/461/1 -f 700/462/1 726/440/1 736/460/1 -f 747/463/1 741/464/1 739/465/1 -f 750/466/33 751/467/33 749/468/33 -f 751/467/17 754/469/17 753/470/17 -f 754/469/5 755/471/5 753/470/5 -f 755/472/34 758/473/34 757/474/34 -f 760/475/1 758/476/1 754/477/1 -f 757/474/18 760/478/18 759/479/18 -f 759/479/6 750/466/6 749/468/6 -f 751/480/7 757/481/7 759/482/7 -f 762/483/33 763/484/33 761/485/33 -f 764/486/17 765/487/17 763/484/17 -f 766/488/5 767/489/5 765/487/5 -f 768/490/34 769/491/34 767/492/34 -f 772/493/1 770/494/1 766/495/1 -f 769/491/18 772/496/18 771/497/18 -f 772/496/6 761/485/6 771/497/6 -f 763/498/7 769/499/7 771/500/7 -f 774/501/35 777/502/35 778/503/35 -f 778/503/36 779/504/36 780/505/36 -f 780/505/37 775/506/37 776/507/37 -f 773/508/38 782/509/38 777/510/38 -f 774/501/39 775/511/39 773/512/39 -f 775/513/39 781/514/39 773/508/39 -f 783/515/39 781/516/39 775/517/39 -f 777/510/36 782/509/36 779/518/36 -f 783/519/39 787/520/39 785/521/39 -f 784/522/6 775/523/6 779/524/6 -f 786/525/36 779/524/36 782/526/36 -f 785/527/5 782/526/5 781/516/5 -f 790/528/39 787/529/39 783/530/39 -f 786/531/36 788/532/36 784/533/36 -f 787/520/40 786/531/40 785/521/40 -f 784/534/35 790/535/35 783/536/35 -f 792/537/36 784/534/36 788/538/36 -f 787/529/37 792/537/37 788/538/37 -f 799/539/5 805/540/5 807/541/5 -f 815/542/6 812/543/6 811/544/6 -f 817/545/13 820/546/13 819/547/13 -f 819/547/14 822/548/14 821/549/14 -f 821/549/15 824/550/15 823/551/15 -f 824/550/16 825/552/16 823/551/16 -f 826/553/9 827/554/9 825/555/9 -f 828/556/10 829/557/10 827/554/10 -f 829/557/11 832/558/11 831/559/11 -f 832/558/12 817/545/12 831/559/12 -f 839/560/4 836/561/4 835/562/4 -f 842/563/13 843/564/13 841/565/13 -f 843/564/14 846/566/14 845/567/14 -f 845/567/15 848/568/15 847/569/15 -f 847/569/16 850/570/16 849/571/16 -f 849/572/9 852/573/9 851/574/9 -f 851/574/10 854/575/10 853/576/10 -f 854/575/11 855/577/11 853/576/11 -f 855/577/12 842/563/12 841/565/12 -f 863/578/4 860/579/4 859/580/4 -f 865/581/13 868/582/13 867/583/13 -f 867/583/14 870/584/14 869/585/14 -f 870/584/15 871/586/15 869/585/15 -f 871/586/16 874/587/16 873/588/16 -f 874/589/9 875/590/9 873/591/9 -f 875/590/10 878/592/10 877/593/10 -f 878/592/11 879/594/11 877/593/11 -f 880/595/12 865/581/12 879/594/12 -f 887/596/4 884/597/4 883/598/4 -f 889/599/13 892/600/13 891/601/13 -f 892/600/14 893/602/14 891/601/14 -f 894/603/15 895/604/15 893/602/15 -f 895/604/16 898/605/16 897/606/16 -f 898/607/9 899/608/9 897/609/9 -f 900/610/10 901/611/10 899/608/10 -f 902/612/11 903/613/11 901/611/11 -f 904/614/12 889/599/12 903/613/12 -f 911/615/4 909/616/4 906/617/4 -f 1020/618/7 1018/619/7 1014/620/7 -f 162/3/1 160/621/1 158/622/1 -f 158/622/1 172/623/1 162/3/1 -f 170/1/1 168/624/1 166/2/1 -f 166/2/1 164/625/1 162/3/1 -f 162/3/1 172/623/1 170/1/1 -f 270/4/2 272/626/2 271/5/2 -f 276/7/3 280/627/3 277/8/3 -f 276/10/4 274/628/4 273/11/4 -f 274/13/1 270/629/1 269/14/1 -f 275/16/5 273/630/5 269/17/5 -f 272/9/6 270/629/6 274/13/6 -f 277/19/7 280/631/7 279/20/7 -f 271/5/2 272/626/2 277/22/2 -f 275/12/4 279/632/4 280/24/4 -f 271/18/8 278/21/8 279/20/8 -f 302/33/4 300/633/4 310/31/4 -f 298/634/4 312/635/4 310/31/4 -f 310/31/4 308/636/4 306/32/4 -f 306/32/4 304/637/4 302/33/4 -f 300/633/4 298/634/4 310/31/4 -f 323/37/2 324/77/2 321/38/2 -f 316/40/7 325/57/7 326/41/7 -f 320/43/4 328/75/4 327/44/4 -f 318/46/1 314/78/1 313/47/1 -f 326/49/5 317/62/5 313/50/5 -f 316/52/6 314/72/6 318/53/6 -f 313/50/5 322/39/5 321/38/5 -f 313/47/1 314/78/1 323/55/1 -f 325/57/7 335/638/7 331/58/7 -f 315/42/7 321/639/7 324/60/7 -f 325/57/7 320/59/7 319/61/7 -f 326/49/5 319/45/5 327/44/5 -f 318/46/1 328/65/1 332/63/1 -f 317/48/1 327/640/1 328/65/1 -f 334/66/6 330/641/6 329/67/6 -f 336/69/6 332/642/6 331/70/6 -f 316/52/4 334/66/4 333/68/4 -f 324/60/7 330/643/7 334/73/7 -f 320/43/4 331/644/4 332/74/4 -f 323/37/2 329/645/2 330/76/2 -f 314/78/1 333/68/1 329/67/1 -f 318/53/2 336/69/2 335/71/2 -f 338/79/9 340/82/9 339/80/9 -f 340/82/10 342/646/10 341/83/10 -f 341/83/11 342/646/11 344/84/11 -f 344/84/12 346/647/12 345/86/12 -f 345/87/13 346/648/13 348/88/13 -f 347/89/14 348/88/14 350/90/14 -f 350/90/15 352/93/15 351/92/15 -f 352/93/16 338/79/16 337/81/16 -f 355/96/4 353/649/4 359/94/4 -f 354/650/4 360/651/4 359/94/4 -f 359/94/4 358/652/4 357/95/4 -f 357/95/4 356/653/4 355/96/4 -f 353/649/4 354/650/4 359/94/4 -f 362/97/9 364/100/9 363/98/9 -f 364/100/10 366/102/10 365/101/10 -f 366/102/11 368/104/11 367/103/11 -f 368/104/12 370/654/12 369/105/12 -f 369/106/13 370/655/13 372/107/13 -f 371/108/14 372/107/14 374/109/14 -f 373/110/15 374/109/15 376/111/15 -f 375/112/16 376/111/16 362/97/16 -f 379/115/4 377/656/4 383/113/4 -f 378/657/4 384/658/4 383/113/4 -f 383/113/4 382/659/4 381/660/4 -f 381/660/4 380/114/4 383/113/4 -f 377/656/4 378/657/4 383/113/4 -f 386/116/9 388/119/9 387/117/9 -f 388/119/10 390/121/10 389/120/10 -f 390/121/11 392/123/11 391/122/11 -f 392/123/12 394/661/12 393/124/12 -f 394/125/13 396/128/13 395/126/13 -f 396/128/14 398/662/14 397/129/14 -f 397/129/15 398/662/15 400/130/15 -f 400/130/16 386/116/16 385/118/16 -f 403/134/4 401/663/4 407/132/4 -f 402/664/4 408/665/4 407/132/4 -f 407/132/4 406/666/4 405/667/4 -f 405/667/4 404/133/4 407/132/4 -f 401/663/4 402/664/4 407/132/4 -f 409/135/9 410/668/9 412/136/9 -f 411/137/10 412/136/10 414/138/10 -f 414/138/11 416/141/11 415/140/11 -f 416/141/12 418/669/12 417/142/12 -f 417/143/13 418/670/13 420/144/13 -f 420/144/14 422/147/14 421/146/14 -f 422/147/15 424/149/15 423/148/15 -f 424/149/16 410/668/16 409/135/16 -f 427/152/4 425/671/4 426/672/4 -f 426/672/4 432/673/4 427/152/4 -f 431/150/4 430/674/4 429/675/4 -f 429/675/4 428/151/4 431/150/4 -f 427/152/4 432/673/4 431/150/4 -f 438/676/17 436/677/17 434/155/17 -f 434/155/17 448/678/17 446/153/17 -f 446/153/17 444/679/17 442/154/17 -f 442/154/17 440/680/17 438/676/17 -f 438/676/17 434/155/17 442/154/17 -f 447/681/18 433/682/18 435/158/18 -f 435/158/18 437/683/18 439/156/18 -f 439/156/18 441/684/18 443/157/18 -f 443/157/18 445/685/18 447/681/18 -f 447/681/18 435/158/18 443/157/18 -f 449/159/19 450/686/19 452/160/19 -f 452/160/4 454/687/4 453/162/4 -f 453/162/20 454/687/20 456/163/20 -f 456/165/21 458/171/21 457/166/21 -f 454/170/1 452/688/1 450/168/1 -f 450/168/1 460/689/1 458/690/1 -f 458/690/1 456/169/1 450/168/1 -f 458/171/2 460/173/2 459/172/2 -f 460/173/22 450/686/22 449/159/22 -f 459/691/7 449/176/7 455/175/7 -f 451/174/7 453/692/7 455/175/7 -f 455/175/7 457/693/7 459/691/7 -f 522/272/25 521/694/25 517/273/25 -f 523/275/26 521/694/26 522/272/26 -f 519/277/27 523/695/27 524/278/27 -f 521/280/28 526/288/28 525/281/28 -f 518/274/29 517/273/29 519/277/29 -f 519/284/29 525/297/29 529/285/29 -f 523/292/5 519/284/5 527/286/5 -f 526/294/26 523/696/26 528/295/26 -f 526/294/6 530/296/6 529/285/6 -f 527/298/29 531/309/29 535/299/29 -f 530/301/30 532/303/30 531/291/30 -f 527/298/25 534/300/25 533/304/25 -f 532/306/26 528/697/26 533/307/26 -f 532/306/27 536/308/27 535/299/27 -f 551/312/5 537/698/5 543/310/5 -f 539/699/5 541/700/5 543/310/5 -f 543/310/5 545/701/5 547/311/5 -f 547/311/5 549/702/5 551/312/5 -f 537/698/5 539/699/5 543/310/5 -f 555/315/6 553/703/6 554/704/6 -f 554/704/6 560/705/6 559/313/6 -f 559/313/6 558/706/6 557/707/6 -f 557/707/6 556/314/6 559/313/6 -f 555/315/6 554/704/6 559/313/6 -f 570/316/1 567/708/1 568/317/1 -f 575/319/5 562/323/5 569/320/5 -f 576/322/7 573/709/7 562/323/7 -f 578/324/2 586/362/2 587/325/2 -f 569/327/2 579/350/2 563/328/2 -f 570/330/5 563/710/5 571/331/5 -f 582/333/4 581/348/4 589/334/4 -f 567/336/4 571/711/4 572/337/4 -f 573/339/2 561/712/2 584/340/2 -f 575/342/4 583/353/4 565/343/4 -f 576/345/5 565/713/5 561/346/5 -f 581/348/4 580/714/4 588/349/4 -f 562/341/2 577/351/2 578/324/2 -f 568/338/4 581/348/4 582/333/4 -f 569/327/2 578/324/2 564/326/2 -f 572/337/4 580/714/4 581/348/4 -f 584/340/2 574/715/2 577/351/2 -f 575/342/4 582/333/4 566/352/4 -f 586/354/6 585/358/6 590/355/6 -f 589/356/6 588/368/6 587/357/6 -f 585/358/6 592/364/6 591/359/6 -f 577/351/2 574/715/2 592/360/2 -f 577/351/2 585/361/2 586/362/2 -f 566/363/31 591/359/31 592/364/31 -f 582/333/4 590/335/4 591/366/4 -f 564/367/32 587/357/32 588/368/32 -f 642/370/7 641/716/7 653/371/7 -f 642/373/7 654/717/7 655/374/7 -f 644/376/7 643/718/7 655/377/7 -f 645/379/7 644/719/7 656/380/7 -f 645/382/7 657/720/7 658/383/7 -f 646/385/7 658/721/7 659/386/7 -f 647/388/7 659/722/7 660/389/7 -f 648/391/7 660/723/7 661/392/7 -f 649/394/7 661/724/7 662/395/7 -f 651/397/7 650/725/7 662/398/7 -f 652/400/7 651/726/7 663/401/7 -f 652/403/7 664/727/7 653/404/7 -f 714/406/1 713/728/1 701/407/1 -f 716/409/1 704/413/1 703/410/1 -f 716/409/1 717/729/1 705/412/1 -f 718/414/1 719/418/1 707/415/1 -f 720/417/1 708/730/1 707/415/1 -f 721/419/1 722/422/1 710/420/1 -f 722/422/1 723/731/1 711/423/1 -f 714/424/1 702/732/1 712/425/1 -f 614/427/1 616/733/1 688/428/1 -f 596/430/1 598/734/1 679/431/1 -f 602/433/1 604/735/1 682/434/1 -f 608/436/1 610/736/1 685/437/1 -f 689/439/1 725/443/1 726/440/1 -f 691/442/1 727/445/1 725/443/1 -f 692/444/1 728/447/1 727/445/1 -f 692/444/1 693/449/1 729/446/1 -f 694/448/1 730/451/1 729/446/1 -f 694/448/1 695/453/1 731/450/1 -f 696/452/1 732/455/1 731/450/1 -f 697/454/1 733/457/1 732/455/1 -f 697/454/1 698/459/1 734/456/1 -f 699/458/1 735/461/1 734/456/1 -f 699/458/1 700/462/1 736/460/1 -f 700/462/1 690/441/1 726/440/1 -f 739/465/1 737/737/1 738/738/1 -f 738/738/1 748/739/1 739/465/1 -f 747/463/1 746/740/1 743/741/1 -f 745/742/1 744/743/1 743/741/1 -f 743/741/1 742/744/1 741/464/1 -f 741/464/1 740/745/1 739/465/1 -f 739/465/1 748/739/1 747/463/1 -f 746/740/1 745/742/1 743/741/1 -f 743/741/1 741/464/1 747/463/1 -f 750/466/33 752/746/33 751/467/33 -f 751/467/17 752/746/17 754/469/17 -f 754/469/5 756/747/5 755/471/5 -f 755/472/34 756/748/34 758/473/34 -f 754/477/1 752/749/1 750/750/1 -f 750/750/1 760/475/1 754/477/1 -f 758/476/1 756/751/1 754/477/1 -f 757/474/18 758/473/18 760/478/18 -f 759/479/6 760/478/6 750/466/6 -f 759/482/7 749/752/7 751/480/7 -f 751/480/7 753/753/7 755/754/7 -f 755/754/7 757/481/7 751/480/7 -f 762/483/33 764/486/33 763/484/33 -f 764/486/17 766/488/17 765/487/17 -f 766/488/5 768/755/5 767/489/5 -f 768/490/34 770/756/34 769/491/34 -f 766/495/1 764/757/1 762/758/1 -f 762/758/1 772/493/1 766/495/1 -f 770/494/1 768/759/1 766/495/1 -f 769/491/18 770/756/18 772/496/18 -f 772/496/6 762/483/6 761/485/6 -f 771/500/7 761/760/7 763/498/7 -f 763/498/7 765/761/7 767/762/7 -f 767/762/7 769/499/7 763/498/7 -f 774/501/35 773/512/35 777/502/35 -f 778/503/36 777/502/36 779/504/36 -f 780/505/37 779/504/37 775/506/37 -f 773/508/38 781/514/38 782/509/38 -f 774/501/39 776/763/39 775/511/39 -f 783/515/39 785/527/39 781/516/39 -f 784/522/6 783/764/6 775/523/6 -f 786/525/36 784/522/36 779/524/36 -f 785/527/5 786/525/5 782/526/5 -f 790/528/39 791/765/39 787/529/39 -f 787/520/40 788/532/40 786/531/40 -f 784/534/35 789/766/35 790/535/35 -f 792/537/36 789/766/36 784/534/36 -f 787/529/37 791/765/37 792/537/37 -f 807/541/5 793/767/5 799/539/5 -f 795/768/5 797/769/5 799/539/5 -f 799/539/5 801/770/5 803/771/5 -f 803/771/5 805/540/5 799/539/5 -f 793/767/5 795/768/5 799/539/5 -f 811/544/6 809/772/6 810/773/6 -f 810/773/6 816/774/6 815/542/6 -f 815/542/6 814/775/6 813/776/6 -f 813/776/6 812/543/6 815/542/6 -f 811/544/6 810/773/6 815/542/6 -f 817/545/13 818/777/13 820/546/13 -f 819/547/14 820/546/14 822/548/14 -f 821/549/15 822/548/15 824/550/15 -f 824/550/16 826/778/16 825/552/16 -f 826/553/9 828/556/9 827/554/9 -f 828/556/10 830/779/10 829/557/10 -f 829/557/11 830/779/11 832/558/11 -f 832/558/12 818/777/12 817/545/12 -f 835/562/4 833/780/4 839/560/4 -f 834/781/4 840/782/4 839/560/4 -f 839/560/4 838/783/4 837/784/4 -f 837/784/4 836/561/4 839/560/4 -f 833/780/4 834/781/4 839/560/4 -f 842/563/13 844/785/13 843/564/13 -f 843/564/14 844/785/14 846/566/14 -f 845/567/15 846/566/15 848/568/15 -f 847/569/16 848/568/16 850/570/16 -f 849/572/9 850/786/9 852/573/9 -f 851/574/10 852/573/10 854/575/10 -f 854/575/11 856/787/11 855/577/11 -f 855/577/12 856/787/12 842/563/12 -f 859/580/4 857/788/4 863/578/4 -f 858/789/4 864/790/4 863/578/4 -f 863/578/4 862/791/4 861/792/4 -f 861/792/4 860/579/4 863/578/4 -f 857/788/4 858/789/4 863/578/4 -f 865/581/13 866/793/13 868/582/13 -f 867/583/14 868/582/14 870/584/14 -f 870/584/15 872/794/15 871/586/15 -f 871/586/16 872/794/16 874/587/16 -f 874/589/9 876/795/9 875/590/9 -f 875/590/10 876/795/10 878/592/10 -f 878/592/11 880/595/11 879/594/11 -f 880/595/12 866/793/12 865/581/12 -f 883/598/4 881/796/4 887/596/4 -f 882/797/4 888/798/4 887/596/4 -f 887/596/4 886/799/4 885/800/4 -f 885/800/4 884/597/4 887/596/4 -f 881/796/4 882/797/4 887/596/4 -f 889/599/13 890/801/13 892/600/13 -f 892/600/14 894/603/14 893/602/14 -f 894/603/15 896/802/15 895/604/15 -f 895/604/16 896/802/16 898/605/16 -f 898/607/9 900/610/9 899/608/9 -f 900/610/10 902/612/10 901/611/10 -f 902/612/11 904/614/11 903/613/11 -f 904/614/12 890/801/12 889/599/12 -f 907/803/4 905/804/4 906/617/4 -f 906/617/4 912/805/4 911/615/4 -f 911/615/4 910/806/4 909/616/4 -f 909/616/4 908/807/4 907/803/4 -f 907/803/4 906/617/4 909/616/4 -f 1014/620/7 1012/808/7 1010/809/7 -f 1010/809/7 1024/810/7 1014/620/7 -f 1022/811/7 1020/618/7 1014/620/7 -f 1018/619/7 1016/812/7 1014/620/7 -f 1014/620/7 1024/810/7 1022/811/7 -f 286/27/4 284/813/4 294/25/4 -f 282/814/4 296/815/4 294/25/4 -f 294/25/4 292/816/4 290/26/4 -f 290/26/4 288/817/4 286/27/4 -f 284/813/4 282/814/4 294/25/4 -f 295/30/2 281/818/2 283/819/2 -f 283/819/2 285/820/2 295/30/2 -f 287/28/2 289/821/2 291/822/2 -f 291/822/2 293/29/2 287/28/2 -f 295/30/2 285/820/2 287/28/2 -f 311/36/2 297/823/2 299/824/2 -f 299/824/2 301/825/2 311/36/2 -f 303/34/2 305/826/2 307/827/2 -f 307/827/2 309/35/2 303/34/2 -f 311/36/2 301/825/2 303/34/2 -f 462/177/2 464/187/2 463/178/2 -f 468/180/4 466/188/4 465/181/4 -f 467/186/5 465/828/5 461/179/5 -f 464/187/6 462/177/6 466/188/6 -f 461/189/2 472/196/2 473/190/2 -f 462/183/23 469/185/23 471/192/23 -f 461/189/7 465/829/7 470/195/7 -f 471/197/4 474/200/4 470/198/4 -f 469/191/1 473/190/1 474/200/1 -f 477/201/4 478/212/4 476/202/4 -f 479/204/2 480/211/2 482/205/2 -f 475/203/5 479/830/5 481/210/5 -f 480/211/6 476/202/6 478/212/6 -f 487/213/4 486/219/4 475/214/4 -f 485/216/23 483/208/23 476/207/23 -f 486/219/7 484/831/7 479/220/7 -f 484/221/2 488/224/2 485/222/2 -f 488/224/1 487/213/1 483/215/1 -f 491/225/2 492/236/2 490/226/2 -f 493/228/4 494/235/4 496/229/4 -f 489/227/6 493/832/6 495/234/6 -f 494/235/5 490/226/5 492/236/5 -f 501/237/2 500/242/2 489/233/2 -f 494/239/24 499/241/24 497/232/24 -f 500/242/7 498/833/7 493/243/7 -f 498/244/4 502/247/4 499/245/4 -f 502/247/1 501/237/1 497/238/1 -f 504/248/4 506/258/4 505/249/4 -f 510/251/2 508/259/2 507/252/2 -f 509/257/6 507/834/6 503/250/6 -f 506/258/5 504/248/5 508/259/5 -f 503/260/4 514/267/4 515/261/4 -f 504/254/24 511/256/24 513/263/24 -f 507/266/7 512/835/7 514/267/7 -f 513/268/2 516/271/2 512/269/2 -f 511/262/1 515/261/1 516/271/1 -s 1 -f 13/836/41 12/837/42 1/838/43 -f 14/839/44 1/838/43 2/840/45 -f 15/841/46 2/840/45 3/842/47 -f 16/843/48 3/842/47 4/844/49 -f 17/845/50 4/844/49 5/846/51 -f 18/847/52 5/846/51 6/848/53 -f 7/849/54 18/850/52 6/851/53 -f 8/852/55 19/853/56 7/849/54 -f 9/854/57 20/855/58 8/852/55 -f 10/856/59 21/857/60 9/854/57 -f 11/858/61 22/859/62 10/856/59 -f 12/837/42 23/860/63 11/858/61 -f 25/861/64 24/862/65 13/836/41 -f 26/863/66 13/836/41 14/839/44 -f 27/864/67 14/839/44 15/841/46 -f 28/865/68 15/841/46 16/843/48 -f 29/866/69 16/843/48 17/845/50 -f 30/867/70 17/845/50 18/847/52 -f 19/853/56 30/868/70 18/850/52 -f 20/855/58 31/869/71 19/853/56 -f 21/857/60 32/870/72 20/855/58 -f 22/859/62 33/871/73 21/857/60 -f 23/860/63 34/872/74 22/859/62 -f 24/862/65 35/873/75 23/860/63 -f 37/874/76 36/875/77 25/861/64 -f 38/876/78 25/861/64 26/863/66 -f 39/877/79 26/863/66 27/864/67 -f 40/878/80 27/864/67 28/865/68 -f 41/879/81 28/865/68 29/866/69 -f 42/880/82 29/866/69 30/867/70 -f 31/869/71 42/881/82 30/868/70 -f 32/870/72 43/882/83 31/869/71 -f 33/871/73 44/883/84 32/870/72 -f 34/872/74 45/884/85 33/871/73 -f 35/873/75 46/885/86 34/872/74 -f 36/875/77 47/886/87 35/873/75 -f 37/874/76 60/887/88 48/888/89 -f 38/876/78 49/889/90 37/874/76 -f 39/877/79 50/890/91 38/876/78 -f 40/878/80 51/891/92 39/877/79 -f 41/879/81 52/892/93 40/878/80 -f 42/880/82 53/893/94 41/879/81 -f 55/894/95 42/881/82 43/882/83 -f 56/895/96 43/882/83 44/883/84 -f 57/896/97 44/883/84 45/884/85 -f 58/897/98 45/884/85 46/885/86 -f 59/898/99 46/885/86 47/886/87 -f 60/887/88 47/886/87 48/888/89 -f 49/889/90 72/899/100 60/887/88 -f 50/890/91 61/900/101 49/889/90 -f 51/891/92 62/901/102 50/890/91 -f 52/892/93 63/902/103 51/891/92 -f 53/893/94 64/903/104 52/892/93 -f 54/904/105 65/905/106 53/893/94 -f 67/906/107 54/907/105 55/894/95 -f 68/908/108 55/894/95 56/895/96 -f 69/909/109 56/895/96 57/896/97 -f 70/910/110 57/896/97 58/897/98 -f 71/911/111 58/897/98 59/898/99 -f 72/899/100 59/898/99 60/887/88 -f 61/900/101 84/912/112 72/899/100 -f 62/901/102 73/913/113 61/900/101 -f 63/902/103 74/914/114 62/901/102 -f 64/903/104 75/915/115 63/902/103 -f 65/905/106 76/916/116 64/903/104 -f 66/917/117 77/918/118 65/905/106 -f 79/919/119 66/920/117 67/906/107 -f 80/921/120 67/906/107 68/908/108 -f 81/922/121 68/908/108 69/909/109 -f 82/923/122 69/909/109 70/910/110 -f 83/924/123 70/910/110 71/911/111 -f 84/912/112 71/911/111 72/899/100 -f 73/913/113 96/925/124 84/912/112 -f 74/914/114 85/926/125 73/913/113 -f 75/915/115 86/927/126 74/914/114 -f 76/916/116 87/928/127 75/915/115 -f 77/918/118 88/929/128 76/916/116 -f 78/930/129 89/931/130 77/918/118 -f 91/932/131 78/933/129 79/919/119 -f 92/934/132 79/919/119 80/921/120 -f 93/935/133 80/921/120 81/922/121 -f 94/936/134 81/922/121 82/923/122 -f 95/937/135 82/923/122 83/924/123 -f 96/925/124 83/924/123 84/912/112 -f 85/926/125 108/938/136 96/925/124 -f 86/927/126 97/939/137 85/926/125 -f 87/928/127 98/940/138 86/927/126 -f 88/929/128 99/941/21 87/928/127 -f 89/931/130 100/942/139 88/929/128 -f 90/943/140 101/944/141 89/931/130 -f 103/945/142 90/946/140 91/932/131 -f 104/947/143 91/932/131 92/934/132 -f 105/948/19 92/934/132 93/935/133 -f 106/949/144 93/935/133 94/936/134 -f 107/950/145 94/936/134 95/937/135 -f 108/938/136 95/937/135 96/925/124 -f 97/939/137 120/951/146 108/938/136 -f 98/940/138 109/952/147 97/939/137 -f 99/941/21 110/953/148 98/940/138 -f 100/942/139 111/954/149 99/941/21 -f 101/944/141 112/955/150 100/942/139 -f 102/956/151 113/957/152 101/944/141 -f 115/958/153 102/959/151 103/945/142 -f 116/960/154 103/945/142 104/947/143 -f 117/961/155 104/947/143 105/948/19 -f 118/962/156 105/948/19 106/949/144 -f 119/963/157 106/949/144 107/950/145 -f 120/951/146 107/950/145 108/938/136 -f 109/952/147 132/964/158 120/951/146 -f 110/953/148 121/965/159 109/952/147 -f 111/954/149 122/966/160 110/953/148 -f 112/955/150 123/967/161 111/954/149 -f 113/957/152 124/968/162 112/955/150 -f 114/969/163 125/970/164 113/957/152 -f 127/971/165 114/972/163 115/958/153 -f 128/973/166 115/958/153 116/960/154 -f 129/974/167 116/960/154 117/961/155 -f 130/975/168 117/961/155 118/962/156 -f 131/976/169 118/962/156 119/963/157 -f 132/964/158 119/963/157 120/951/146 -f 121/965/159 144/977/170 132/964/158 -f 122/966/160 133/978/171 121/965/159 -f 123/967/161 134/979/172 122/966/160 -f 124/968/162 135/980/173 123/967/161 -f 125/970/164 136/981/174 124/968/162 -f 126/982/175 137/983/176 125/970/164 -f 139/984/177 126/985/175 127/971/165 -f 140/986/178 127/971/165 128/973/166 -f 141/987/179 128/973/166 129/974/167 -f 142/988/180 129/974/167 130/975/168 -f 143/989/181 130/975/168 131/976/169 -f 144/977/170 131/976/169 132/964/158 -f 133/978/171 156/990/182 144/977/170 -f 134/979/172 145/991/183 133/978/171 -f 135/980/173 146/992/184 134/979/172 -f 136/981/174 147/993/185 135/980/173 -f 137/983/176 148/994/186 136/981/174 -f 138/995/187 149/996/188 137/983/176 -f 151/997/189 138/998/187 139/984/177 -f 152/999/190 139/984/177 140/986/178 -f 153/1000/191 140/986/178 141/987/179 -f 154/1001/192 141/987/179 142/988/180 -f 155/1002/193 142/988/180 143/989/181 -f 156/990/182 143/989/181 144/977/170 -f 157/1003/6 160/1004/194 159/1005/195 -f 160/1004/194 161/1006/4 159/1005/195 -f 162/1007/196 163/1008/197 161/1006/4 -f 164/1009/198 165/1010/5 163/1008/197 -f 166/1011/199 167/1012/200 165/1013/5 -f 168/1014/201 169/1015/2 167/1012/200 -f 170/1016/202 171/1017/203 169/1015/2 -f 172/1018/204 157/1003/6 171/1017/203 -f 181/1019/33 174/1020/205 173/1021/4 -f 174/1020/205 183/1022/206 175/1023/207 -f 183/1022/206 176/1024/208 175/1023/207 -f 184/1025/209 177/1026/2 176/1024/208 -f 177/1027/2 186/1028/210 178/1029/211 -f 178/1029/211 187/1030/212 179/1031/213 -f 187/1030/212 180/1032/214 179/1031/213 -f 180/1032/214 181/1019/33 173/1021/4 -f 189/1033/19 182/1034/215 181/1019/33 -f 182/1034/215 191/1035/216 183/1036/206 -f 183/1036/206 192/1037/217 184/1038/209 -f 192/1037/217 185/1039/34 184/1038/209 -f 193/1040/21 186/1041/210 185/1042/34 -f 194/1043/218 187/1044/212 186/1041/210 -f 195/1045/219 188/1046/220 187/1044/212 -f 188/1046/220 189/1033/19 181/1019/33 -f 189/1033/19 198/1047/221 190/1048/222 -f 198/1047/221 191/1049/216 190/1048/222 -f 199/1050/223 192/1051/217 191/1049/216 -f 200/1052/224 193/1053/21 192/1051/217 -f 193/1054/21 202/1055/225 194/1056/218 -f 194/1056/218 203/1057/226 195/1058/219 -f 195/1058/219 204/1059/227 196/1060/228 -f 196/1060/228 197/1061/6 189/1033/19 -f 205/1062/22 198/1047/221 197/1061/6 -f 198/1047/221 207/1063/229 199/1064/223 -f 199/1064/223 208/1065/230 200/1066/224 -f 208/1065/230 201/1067/5 200/1066/224 -f 201/1068/5 210/1069/231 202/1070/225 -f 210/1069/231 203/1071/226 202/1070/225 -f 211/1072/232 204/1059/227 203/1071/226 -f 204/1059/227 205/1062/22 197/1061/6 -f 205/1062/22 214/1073/233 206/1074/234 -f 214/1073/233 207/1075/229 206/1074/234 -f 215/1076/235 208/1077/230 207/1075/229 -f 208/1077/230 217/1078/17 209/1079/20 -f 217/1080/17 210/1081/231 209/1082/20 -f 210/1081/231 219/1083/236 211/1084/232 -f 211/1084/232 220/1085/237 212/1086/238 -f 220/1085/237 205/1062/22 212/1086/238 -f 221/1087/2 214/1073/233 213/1088/18 -f 222/1089/239 215/1090/235 214/1073/233 -f 215/1090/235 224/1091/240 216/1092/241 -f 224/1091/240 217/1093/17 216/1092/241 -f 225/1094/4 218/1095/242 217/1096/17 -f 226/1097/243 219/1098/236 218/1095/242 -f 219/1098/236 228/1099/244 220/1085/237 -f 228/1099/244 213/1088/18 220/1085/237 -f 221/1087/2 230/1100/245 222/1089/239 -f 230/1100/245 223/1101/246 222/1089/239 -f 223/1101/246 232/1102/247 224/1103/240 -f 232/1102/247 225/1104/4 224/1103/240 -f 233/1105/33 226/1106/243 225/1107/4 -f 234/1108/248 227/1109/249 226/1106/243 -f 227/1109/249 236/1110/250 228/1099/244 -f 236/1110/250 221/1087/2 228/1099/244 -f 229/1111/34 238/1112/251 230/1100/245 -f 238/1112/251 231/1113/252 230/1100/245 -f 231/1113/252 240/1114/253 232/1115/247 -f 240/1114/253 233/1116/33 232/1115/247 -f 233/1117/33 242/1118/254 234/1119/248 -f 242/1118/254 235/1120/255 234/1119/248 -f 235/1120/255 244/1121/256 236/1110/250 -f 244/1121/256 229/1111/34 236/1110/250 -f 237/1122/21 246/1123/257 238/1112/251 -f 246/1123/257 239/1124/258 238/1112/251 -f 247/1125/259 240/1126/253 239/1124/258 -f 248/1127/260 241/1128/19 240/1126/253 -f 241/1129/19 250/1130/261 242/1131/254 -f 250/1130/261 243/1132/262 242/1131/254 -f 243/1132/262 252/1133/263 244/1121/256 -f 252/1133/263 237/1122/21 244/1121/256 -f 253/1134/20 246/1135/257 245/1136/5 -f 246/1135/257 255/1137/264 247/1138/259 -f 247/1138/259 256/1139/265 248/1140/260 -f 256/1139/265 249/1141/6 248/1140/260 -f 257/1142/22 250/1143/261 249/1144/6 -f 258/1145/266 251/1146/267 250/1143/261 -f 259/1147/268 252/1148/263 251/1146/267 -f 252/1148/263 253/1134/20 245/1136/5 -f 253/1134/20 262/1149/269 254/1150/270 -f 262/1149/269 255/1151/264 254/1150/270 -f 263/1152/271 256/1153/265 255/1151/264 -f 264/1154/272 257/1155/22 256/1153/265 -f 265/1156/18 258/1157/266 257/1158/22 -f 258/1157/266 267/1159/273 259/1160/268 -f 259/1160/268 268/1161/274 260/1162/275 -f 268/1161/274 253/1134/20 260/1162/275 -f 261/1163/17 174/1020/205 262/1149/269 -f 174/1020/205 263/1164/271 262/1149/269 -f 263/1164/271 176/1165/208 264/1166/272 -f 176/1165/208 265/1167/18 264/1166/272 -f 177/1168/2 266/1169/276 265/1170/18 -f 178/1171/211 267/1172/273 266/1169/276 -f 267/1172/273 180/1032/214 268/1161/274 -f 180/1032/214 261/1163/17 268/1161/274 -f 282/1173/277 283/1174/278 281/1175/279 -f 284/1176/280 285/1177/281 283/1174/278 -f 286/1178/282 287/1179/283 285/1180/281 -f 288/1181/284 289/1182/285 287/1179/283 -f 289/1182/285 292/1183/286 291/1184/287 -f 291/1184/287 294/1185/288 293/1186/289 -f 293/1186/289 296/1187/290 295/1188/291 -f 295/1188/291 282/1173/277 281/1175/279 -f 297/1189/279 300/1190/280 299/1191/278 -f 300/1190/280 301/1192/281 299/1191/278 -f 301/1193/281 304/1194/284 303/1195/283 -f 304/1194/284 305/1196/285 303/1195/283 -f 306/1197/292 307/1198/287 305/1196/285 -f 307/1198/287 310/1199/288 309/1200/289 -f 309/1200/289 312/1201/290 311/1202/291 -f 311/1202/291 298/1203/277 297/1189/279 -f 352/93/293 354/1204/294 338/79/295 -f 340/82/296 354/1204/294 353/1205/297 -f 342/646/298 356/1206/299 344/84/300 -f 350/90/301 358/1207/302 359/1208/303 -f 346/647/304 356/1206/299 357/1209/305 -f 350/90/301 360/1210/306 352/93/293 -f 340/82/296 355/1211/307 342/646/298 -f 346/648/304 358/1207/302 348/88/308 -f 362/97/295 384/1212/306 378/1213/294 -f 364/100/296 378/1213/294 377/1214/297 -f 366/102/298 380/1215/299 368/104/300 -f 374/109/301 382/1216/302 383/1217/303 -f 370/654/304 380/1215/299 381/1218/305 -f 374/109/301 384/1212/306 376/111/293 -f 364/100/296 379/1219/307 366/102/298 -f 372/107/308 381/1220/305 382/1216/302 -f 386/116/295 408/1221/306 402/1222/294 -f 386/116/295 401/1223/297 388/119/296 -f 390/121/298 404/1224/299 392/123/300 -f 398/662/301 406/1225/302 407/1226/303 -f 394/661/304 404/1224/299 405/1227/305 -f 400/130/293 407/1226/303 408/1221/306 -f 388/119/296 403/1228/307 390/121/298 -f 394/125/304 406/1225/302 396/128/308 -f 410/668/295 432/1229/306 426/1230/294 -f 412/136/296 426/1230/294 425/1231/297 -f 414/138/298 428/1232/299 416/141/300 -f 420/144/308 431/1233/303 422/147/301 -f 418/669/304 428/1232/299 429/1234/305 -f 424/149/293 431/1233/303 432/1229/306 -f 412/136/296 427/1235/307 414/138/298 -f 418/670/304 430/1236/302 420/144/308 -f 433/1237/309 436/1238/310 435/1239/311 -f 436/1238/310 437/1240/312 435/1239/311 -f 438/1241/313 439/1242/314 437/1243/312 -f 439/1242/314 442/1244/315 441/1245/316 -f 442/1244/315 443/1246/317 441/1245/316 -f 444/1247/318 445/1248/319 443/1246/317 -f 446/1249/320 447/1250/321 445/1248/319 -f 447/1250/321 434/1251/322 433/1237/309 -f 538/1252/323 539/1253/324 537/1254/325 -f 540/1255/326 541/1256/327 539/1253/324 -f 541/1256/327 544/1257/328 543/1258/329 -f 544/1257/328 545/1259/330 543/1258/329 -f 546/1260/331 547/1261/332 545/1259/330 -f 548/1262/333 549/1263/334 547/1261/332 -f 546/1260/331 556/1264/335 557/1265/336 -f 550/1266/337 551/1267/338 549/1268/334 -f 552/1269/339 537/1254/325 551/1267/338 -f 550/1266/337 560/1270/340 552/1269/339 -f 542/1271/341 553/1272/342 555/1273/343 -f 546/1260/331 558/1274/344 548/1262/333 -f 538/1252/323 560/1275/340 554/1276/345 -f 538/1252/323 553/1277/342 540/1255/326 -f 544/1257/328 555/1278/343 556/1279/335 -f 548/1262/333 559/1280/346 550/1281/337 -f 678/1282/6 595/1283/347 593/1284/348 -f 677/1285/349 597/1286/350 595/1283/347 -f 679/1287/351 599/1288/352 597/1286/350 -f 680/1289/4 601/1290/353 599/1288/352 -f 681/1291/354 603/1292/355 601/1290/353 -f 682/1293/356 605/1294/357 603/1292/355 -f 683/1295/5 607/1296/358 605/1297/357 -f 684/1298/359 609/1299/360 607/1296/358 -f 685/1300/361 611/1301/362 609/1299/360 -f 686/1302/2 613/1303/363 611/1301/362 -f 598/1304/364 728/1305/365 600/1306/2 -f 687/1307/366 615/1308/367 613/1303/363 -f 688/1309/368 593/1284/348 615/1308/367 -f 609/1299/360 624/1310/369 607/1296/358 -f 621/1311/370 632/1312/371 620/1313/372 -f 607/1296/358 623/1314/373 605/1297/357 -f 605/1294/357 622/1315/374 603/1292/355 -f 601/1290/353 622/1316/374 621/1317/370 -f 601/1290/353 620/1313/372 599/1288/352 -f 593/1284/348 628/1318/375 615/1308/367 -f 593/1284/348 618/1319/376 617/1320/377 -f 599/1288/352 619/1321/378 597/1286/350 -f 615/1308/367 627/1322/379 613/1303/363 -f 597/1286/350 618/1323/376 595/1283/347 -f 611/1301/362 627/1324/379 626/1325/380 -f 611/1301/362 625/1326/381 609/1299/360 -f 635/1327/382 660/389/383 659/722/384 -f 627/1322/379 640/1328/385 639/1329/386 -f 617/1320/377 630/1330/387 629/1331/388 -f 624/1310/369 637/1332/389 636/1333/390 -f 622/1316/374 633/1334/391 621/1317/370 -f 617/1335/377 640/1336/385 628/1318/375 -f 619/1337/378 630/1338/387 618/1323/376 -f 626/1339/380 637/1340/389 625/1326/381 -f 623/1341/373 634/1342/392 622/1315/374 -f 620/1343/372 631/1344/393 619/1321/378 -f 627/1324/379 638/1345/394 626/1325/380 -f 623/1314/373 636/1346/390 635/1327/382 -f 650/1347/395 675/1348/18 674/1349/2 -f 633/1350/391 656/380/396 632/1312/371 -f 640/1328/385 663/401/397 639/1329/386 -f 629/1331/388 654/372/398 653/371/399 -f 637/1332/389 660/723/383 636/1333/390 -f 634/1351/392 657/720/400 633/1334/391 -f 629/1352/388 664/727/401 640/1336/385 -f 631/1353/393 654/717/398 630/1338/387 -f 638/1354/394 661/724/402 637/1340/389 -f 635/1355/382 658/721/403 634/1342/392 -f 632/1356/371 655/377/404 631/1344/393 -f 638/1345/394 663/399/397 662/398/405 -f 648/1357/406 671/1358/5 647/1359/407 -f 644/1360/408 669/1361/17 668/1362/4 -f 652/1363/409 675/1348/18 651/1364/410 -f 642/1365/411 665/1366/6 641/1367/412 -f 649/1368/413 672/1369/21 648/1357/406 -f 645/1370/414 670/1371/20 669/1361/17 -f 641/1367/412 676/1372/22 652/1363/409 -f 642/1365/411 667/1373/33 666/1374/19 -f 650/1347/395 673/1375/34 649/1368/413 -f 646/1376/415 671/1377/5 670/1371/20 -f 643/1378/416 668/1362/4 667/1373/33 -f 692/1379/417 741/1380/418 693/1381/419 -f 614/1382/420 734/1383/421 735/1384/418 -f 608/1385/422 731/1386/423 732/1387/424 -f 600/1306/2 729/1388/425 602/1389/426 -f 616/1390/427 735/1384/418 736/1391/428 -f 594/1392/5 725/1393/429 596/1394/430 -f 610/1395/431 732/1387/424 733/1396/432 -f 602/1389/426 730/1397/433 604/1398/434 -f 616/1390/427 726/1399/435 594/1400/5 -f 596/1394/430 727/1401/436 598/1304/364 -f 612/1402/4 733/1396/432 734/1383/421 -f 604/1398/434 731/1386/423 606/1403/6 -f 677/1404/349 702/1405/423 701/1406/437 -f 679/1407/351 704/1408/421 680/1409/4 -f 680/1409/4 705/1410/438 681/1411/354 -f 682/1412/356 707/1413/435 683/1414/5 -f 683/1415/5 708/1416/439 684/1417/359 -f 685/1418/361 710/1419/365 686/1420/2 -f 686/1420/2 711/1421/440 687/1422/366 -f 688/1423/368 702/1405/423 678/1424/6 -f 594/1392/5 713/728/441 714/406/442 -f 600/1306/2 715/411/443 598/1304/364 -f 602/1389/426 716/409/444 600/1306/2 -f 606/1403/6 718/414/445 604/1398/434 -f 606/1403/6 720/417/446 719/418/447 -f 610/1395/431 722/422/417 721/419/448 -f 614/1382/420 722/422/417 612/1402/4 -f 594/1400/5 724/426/449 616/1390/427 -f 614/1382/420 711/1425/440 723/731/450 -f 712/1426/451 616/1390/427 724/426/449 -f 596/1394/430 701/1427/437 713/728/441 -f 703/1428/452 598/1304/364 715/411/443 -f 602/1389/426 705/1429/438 717/729/453 -f 706/1430/454 604/1398/434 718/414/445 -f 709/1431/455 610/1395/431 721/419/448 -f 608/1385/422 708/1432/439 720/417/446 -f 699/1433/456 748/1434/433 700/1435/457 -f 690/1436/447 737/1437/424 689/1438/458 -f 696/1439/459 745/1440/436 697/1441/460 -f 693/1381/419 742/1442/428 694/1443/461 -f 700/1435/457 738/1444/423 690/1436/447 -f 691/1445/462 737/1437/424 739/1446/432 -f 697/1441/460 746/1447/463 698/1448/444 -f 694/1443/461 743/1449/435 695/1450/442 -f 691/1445/462 740/1451/421 692/1379/417 -f 698/1448/444 747/1452/425 699/1433/456 -f 695/1453/442 744/1454/429 696/1439/459 -f 794/1455/331 795/1456/332 793/1457/330 -f 795/1456/332 798/1458/337 797/1459/334 -f 798/1458/337 799/1460/338 797/1459/334 -f 799/1460/338 802/1461/323 801/1462/325 -f 802/1461/323 803/1463/324 801/1462/325 -f 803/1463/324 806/1464/341 805/1465/327 -f 800/1466/339 813/1467/345 802/1461/323 -f 806/1468/341 807/1469/329 805/1470/327 -f 807/1469/329 794/1455/331 793/1457/330 -f 806/1468/341 816/1471/335 808/1472/328 -f 796/1473/333 811/1474/346 798/1458/337 -f 802/1461/323 814/1475/342 804/1476/326 -f 794/1455/331 816/1477/335 810/1478/336 -f 794/1455/331 809/1479/344 796/1473/333 -f 798/1458/337 812/1480/340 800/1466/339 -f 806/1464/341 814/1481/342 815/1482/343 -f 818/777/304 840/1483/299 834/1484/305 -f 818/777/304 833/1485/302 820/546/308 -f 822/548/301 836/1486/306 824/550/293 -f 828/556/296 839/1487/307 830/779/298 -f 826/778/295 836/1486/306 837/1488/294 -f 832/558/300 839/1487/307 840/1483/299 -f 820/546/308 835/1489/303 822/548/301 -f 828/556/296 837/1490/294 838/1491/297 -f 856/787/300 858/1492/305 842/563/304 -f 844/785/308 858/1492/305 857/1493/302 -f 848/568/293 859/1494/303 860/1495/306 -f 852/573/296 863/1496/307 854/575/298 -f 848/568/293 861/1497/294 850/570/295 -f 854/575/298 864/1498/299 856/787/300 -f 844/785/308 859/1494/303 846/566/301 -f 850/786/295 862/1499/297 852/573/296 -f 880/595/300 882/1500/305 866/793/304 -f 866/793/304 881/1501/302 868/582/308 -f 872/794/293 883/1502/303 884/1503/306 -f 876/795/296 887/1504/307 878/592/298 -f 872/794/293 885/1505/294 874/587/295 -f 878/592/298 888/1506/299 880/595/300 -f 870/584/301 881/1501/302 883/1502/303 -f 874/589/295 886/1507/297 876/795/296 -f 904/614/300 906/1508/305 890/801/304 -f 890/801/304 905/1509/302 892/600/308 -f 896/802/293 907/1510/303 908/1511/306 -f 900/610/296 911/1512/307 902/612/298 -f 898/605/295 908/1511/306 909/1513/294 -f 904/614/300 911/1512/307 912/1514/299 -f 892/600/308 907/1510/303 894/603/301 -f 898/607/295 910/1515/297 900/610/296 -f 921/1516/33 914/1517/205 913/1518/4 -f 914/1517/205 923/1519/206 915/1520/207 -f 923/1519/206 916/1521/208 915/1520/207 -f 924/1522/209 917/1523/2 916/1521/208 -f 917/1524/2 926/1525/210 918/1526/211 -f 918/1526/211 927/1527/212 919/1528/213 -f 927/1527/212 920/1529/214 919/1528/213 -f 920/1529/214 921/1516/33 913/1518/4 -f 929/1530/19 922/1531/215 921/1516/33 -f 922/1531/215 931/1532/216 923/1533/206 -f 923/1533/206 932/1534/217 924/1535/209 -f 924/1535/209 933/1536/21 925/1537/34 -f 933/1538/21 926/1539/210 925/1540/34 -f 934/1541/218 927/1542/212 926/1539/210 -f 935/1543/219 928/1544/220 927/1542/212 -f 928/1544/220 929/1530/19 921/1516/33 -f 937/1545/6 930/1546/222 929/1530/19 -f 938/1547/221 931/1548/216 930/1546/222 -f 939/1549/223 932/1550/217 931/1548/216 -f 940/1551/224 933/1552/21 932/1550/217 -f 933/1553/21 942/1554/225 934/1555/218 -f 934/1555/218 943/1556/226 935/1557/219 -f 935/1557/219 944/1558/227 936/1559/228 -f 944/1558/227 929/1530/19 936/1559/228 -f 937/1545/6 946/1560/234 938/1547/221 -f 938/1547/221 947/1561/229 939/1562/223 -f 939/1562/223 948/1563/230 940/1564/224 -f 948/1563/230 941/1565/5 940/1564/224 -f 941/1566/5 950/1567/231 942/1568/225 -f 950/1567/231 943/1569/226 942/1568/225 -f 951/1570/232 944/1558/227 943/1569/226 -f 952/1571/238 937/1545/6 944/1558/227 -f 945/1572/22 954/1573/233 946/1560/234 -f 954/1573/233 947/1574/229 946/1560/234 -f 955/1575/235 948/1576/230 947/1574/229 -f 956/1577/241 949/1578/20 948/1576/230 -f 957/1579/17 950/1580/231 949/1581/20 -f 950/1580/231 959/1582/236 951/1583/232 -f 951/1583/232 960/1584/237 952/1571/238 -f 960/1584/237 945/1572/22 952/1571/238 -f 961/1585/2 954/1573/233 953/1586/18 -f 962/1587/239 955/1588/235 954/1573/233 -f 955/1588/235 964/1589/240 956/1590/241 -f 956/1590/241 965/1591/4 957/1592/17 -f 965/1593/4 958/1594/242 957/1595/17 -f 966/1596/243 959/1597/236 958/1594/242 -f 959/1597/236 968/1598/244 960/1584/237 -f 968/1598/244 953/1586/18 960/1584/237 -f 961/1585/2 970/1599/245 962/1587/239 -f 970/1599/245 963/1600/246 962/1587/239 -f 963/1600/246 972/1601/247 964/1602/240 -f 972/1601/247 965/1603/4 964/1602/240 -f 965/1604/4 974/1605/248 966/1606/243 -f 974/1605/248 967/1607/249 966/1606/243 -f 967/1607/249 976/1608/250 968/1598/244 -f 976/1608/250 961/1585/2 968/1598/244 -f 969/1609/34 978/1610/251 970/1599/245 -f 978/1610/251 971/1611/252 970/1599/245 -f 971/1611/252 980/1612/253 972/1613/247 -f 972/1613/247 981/1614/19 973/1615/33 -f 973/1616/33 982/1617/254 974/1618/248 -f 982/1617/254 975/1619/255 974/1618/248 -f 975/1619/255 984/1620/256 976/1608/250 -f 984/1620/256 969/1609/34 976/1608/250 -f 977/1621/21 986/1622/257 978/1610/251 -f 986/1622/257 979/1623/258 978/1610/251 -f 987/1624/259 980/1625/253 979/1623/258 -f 988/1626/260 981/1627/19 980/1625/253 -f 989/1628/6 982/1629/254 981/1630/19 -f 982/1629/254 991/1631/267 983/1632/262 -f 983/1632/262 992/1633/263 984/1620/256 -f 992/1633/263 977/1621/21 984/1620/256 -f 993/1634/20 986/1635/257 985/1636/5 -f 986/1635/257 995/1637/264 987/1638/259 -f 987/1638/259 996/1639/265 988/1640/260 -f 996/1639/265 989/1641/6 988/1640/260 -f 989/1642/6 998/1643/266 990/1644/261 -f 998/1643/266 991/1645/267 990/1644/261 -f 999/1646/268 992/1647/263 991/1645/267 -f 992/1647/263 993/1634/20 985/1636/5 -f 993/1634/20 1002/1648/269 994/1649/270 -f 1002/1648/269 995/1650/264 994/1649/270 -f 1003/1651/271 996/1652/265 995/1650/264 -f 996/1652/265 1005/1653/18 997/1654/22 -f 1005/1655/18 998/1656/266 997/1657/22 -f 998/1656/266 1007/1658/273 999/1659/268 -f 999/1659/268 1008/1660/274 1000/1661/275 -f 1008/1660/274 993/1634/20 1000/1661/275 -f 1001/1662/17 914/1517/205 1002/1648/269 -f 914/1517/205 1003/1663/271 1002/1648/269 -f 1003/1663/271 916/1664/208 1004/1665/272 -f 916/1664/208 1005/1666/18 1004/1665/272 -f 917/1667/2 1006/1668/276 1005/1669/18 -f 918/1670/211 1007/1671/273 1006/1668/276 -f 1007/1671/273 920/1529/214 1008/1660/274 -f 920/1529/214 1001/1662/17 1008/1660/274 -f 1009/1672/6 1012/1673/464 1011/1674/203 -f 1012/1673/464 1013/1675/2 1011/1674/203 -f 1013/1675/2 1016/1676/465 1015/1677/200 -f 1016/1676/465 1017/1678/5 1015/1677/200 -f 1018/1679/466 1019/1680/197 1017/1681/5 -f 1020/1682/467 1021/1683/4 1019/1680/197 -f 1022/1684/468 1023/1685/195 1021/1683/4 -f 1023/1685/195 1010/1686/469 1009/1672/6 -f 13/836/41 24/862/65 12/837/42 -f 14/839/44 13/836/41 1/838/43 -f 15/841/46 14/839/44 2/840/45 -f 16/843/48 15/841/46 3/842/47 -f 17/845/50 16/843/48 4/844/49 -f 18/847/52 17/845/50 5/846/51 -f 7/849/54 19/853/56 18/850/52 -f 8/852/55 20/855/58 19/853/56 -f 9/854/57 21/857/60 20/855/58 -f 10/856/59 22/859/62 21/857/60 -f 11/858/61 23/860/63 22/859/62 -f 12/837/42 24/862/65 23/860/63 -f 25/861/64 36/875/77 24/862/65 -f 26/863/66 25/861/64 13/836/41 -f 27/864/67 26/863/66 14/839/44 -f 28/865/68 27/864/67 15/841/46 -f 29/866/69 28/865/68 16/843/48 -f 30/867/70 29/866/69 17/845/50 -f 19/853/56 31/869/71 30/868/70 -f 20/855/58 32/870/72 31/869/71 -f 21/857/60 33/871/73 32/870/72 -f 22/859/62 34/872/74 33/871/73 -f 23/860/63 35/873/75 34/872/74 -f 24/862/65 36/875/77 35/873/75 -f 37/874/76 48/888/89 36/875/77 -f 38/876/78 37/874/76 25/861/64 -f 39/877/79 38/876/78 26/863/66 -f 40/878/80 39/877/79 27/864/67 -f 41/879/81 40/878/80 28/865/68 -f 42/880/82 41/879/81 29/866/69 -f 31/869/71 43/882/83 42/881/82 -f 32/870/72 44/883/84 43/882/83 -f 33/871/73 45/884/85 44/883/84 -f 34/872/74 46/885/86 45/884/85 -f 35/873/75 47/886/87 46/885/86 -f 36/875/77 48/888/89 47/886/87 -f 37/874/76 49/889/90 60/887/88 -f 38/876/78 50/890/91 49/889/90 -f 39/877/79 51/891/92 50/890/91 -f 40/878/80 52/892/93 51/891/92 -f 41/879/81 53/893/94 52/892/93 -f 42/880/82 54/904/105 53/893/94 -f 55/894/95 54/907/105 42/881/82 -f 56/895/96 55/894/95 43/882/83 -f 57/896/97 56/895/96 44/883/84 -f 58/897/98 57/896/97 45/884/85 -f 59/898/99 58/897/98 46/885/86 -f 60/887/88 59/898/99 47/886/87 -f 49/889/90 61/900/101 72/899/100 -f 50/890/91 62/901/102 61/900/101 -f 51/891/92 63/902/103 62/901/102 -f 52/892/93 64/903/104 63/902/103 -f 53/893/94 65/905/106 64/903/104 -f 54/904/105 66/917/117 65/905/106 -f 67/906/107 66/920/117 54/907/105 -f 68/908/108 67/906/107 55/894/95 -f 69/909/109 68/908/108 56/895/96 -f 70/910/110 69/909/109 57/896/97 -f 71/911/111 70/910/110 58/897/98 -f 72/899/100 71/911/111 59/898/99 -f 61/900/101 73/913/113 84/912/112 -f 62/901/102 74/914/114 73/913/113 -f 63/902/103 75/915/115 74/914/114 -f 64/903/104 76/916/116 75/915/115 -f 65/905/106 77/918/118 76/916/116 -f 66/917/117 78/930/129 77/918/118 -f 79/919/119 78/933/129 66/920/117 -f 80/921/120 79/919/119 67/906/107 -f 81/922/121 80/921/120 68/908/108 -f 82/923/122 81/922/121 69/909/109 -f 83/924/123 82/923/122 70/910/110 -f 84/912/112 83/924/123 71/911/111 -f 73/913/113 85/926/125 96/925/124 -f 74/914/114 86/927/126 85/926/125 -f 75/915/115 87/928/127 86/927/126 -f 76/916/116 88/929/128 87/928/127 -f 77/918/118 89/931/130 88/929/128 -f 78/930/129 90/943/140 89/931/130 -f 91/932/131 90/946/140 78/933/129 -f 92/934/132 91/932/131 79/919/119 -f 93/935/133 92/934/132 80/921/120 -f 94/936/134 93/935/133 81/922/121 -f 95/937/135 94/936/134 82/923/122 -f 96/925/124 95/937/135 83/924/123 -f 85/926/125 97/939/137 108/938/136 -f 86/927/126 98/940/138 97/939/137 -f 87/928/127 99/941/21 98/940/138 -f 88/929/128 100/942/139 99/941/21 -f 89/931/130 101/944/141 100/942/139 -f 90/943/140 102/956/151 101/944/141 -f 103/945/142 102/959/151 90/946/140 -f 104/947/143 103/945/142 91/932/131 -f 105/948/19 104/947/143 92/934/132 -f 106/949/144 105/948/19 93/935/133 -f 107/950/145 106/949/144 94/936/134 -f 108/938/136 107/950/145 95/937/135 -f 97/939/137 109/952/147 120/951/146 -f 98/940/138 110/953/148 109/952/147 -f 99/941/21 111/954/149 110/953/148 -f 100/942/139 112/955/150 111/954/149 -f 101/944/141 113/957/152 112/955/150 -f 102/956/151 114/969/163 113/957/152 -f 115/958/153 114/972/163 102/959/151 -f 116/960/154 115/958/153 103/945/142 -f 117/961/155 116/960/154 104/947/143 -f 118/962/156 117/961/155 105/948/19 -f 119/963/157 118/962/156 106/949/144 -f 120/951/146 119/963/157 107/950/145 -f 109/952/147 121/965/159 132/964/158 -f 110/953/148 122/966/160 121/965/159 -f 111/954/149 123/967/161 122/966/160 -f 112/955/150 124/968/162 123/967/161 -f 113/957/152 125/970/164 124/968/162 -f 114/969/163 126/982/175 125/970/164 -f 127/971/165 126/985/175 114/972/163 -f 128/973/166 127/971/165 115/958/153 -f 129/974/167 128/973/166 116/960/154 -f 130/975/168 129/974/167 117/961/155 -f 131/976/169 130/975/168 118/962/156 -f 132/964/158 131/976/169 119/963/157 -f 121/965/159 133/978/171 144/977/170 -f 122/966/160 134/979/172 133/978/171 -f 123/967/161 135/980/173 134/979/172 -f 124/968/162 136/981/174 135/980/173 -f 125/970/164 137/983/176 136/981/174 -f 126/982/175 138/995/187 137/983/176 -f 139/984/177 138/998/187 126/985/175 -f 140/986/178 139/984/177 127/971/165 -f 141/987/179 140/986/178 128/973/166 -f 142/988/180 141/987/179 129/974/167 -f 143/989/181 142/988/180 130/975/168 -f 144/977/170 143/989/181 131/976/169 -f 133/978/171 145/991/183 156/990/182 -f 134/979/172 146/992/184 145/991/183 -f 135/980/173 147/993/185 146/992/184 -f 136/981/174 148/994/186 147/993/185 -f 137/983/176 149/996/188 148/994/186 -f 138/995/187 150/1687/470 149/996/188 -f 151/997/189 150/1688/470 138/998/187 -f 152/999/190 151/997/189 139/984/177 -f 153/1000/191 152/999/190 140/986/178 -f 154/1001/192 153/1000/191 141/987/179 -f 155/1002/193 154/1001/192 142/988/180 -f 156/990/182 155/1002/193 143/989/181 -f 157/1003/6 158/1689/471 160/1004/194 -f 160/1004/194 162/1007/196 161/1006/4 -f 162/1007/196 164/1009/198 163/1008/197 -f 164/1009/198 166/1690/199 165/1010/5 -f 166/1011/199 168/1014/201 167/1012/200 -f 168/1014/201 170/1016/202 169/1015/2 -f 170/1016/202 172/1018/204 171/1017/203 -f 172/1018/204 158/1689/471 157/1003/6 -f 181/1019/33 182/1034/215 174/1020/205 -f 174/1020/205 182/1034/215 183/1022/206 -f 183/1022/206 184/1025/209 176/1024/208 -f 184/1025/209 185/1691/34 177/1026/2 -f 177/1027/2 185/1692/34 186/1028/210 -f 178/1029/211 186/1028/210 187/1030/212 -f 187/1030/212 188/1046/220 180/1032/214 -f 180/1032/214 188/1046/220 181/1019/33 -f 189/1033/19 190/1048/222 182/1034/215 -f 182/1034/215 190/1048/222 191/1035/216 -f 183/1036/206 191/1035/216 192/1037/217 -f 192/1037/217 193/1693/21 185/1039/34 -f 193/1040/21 194/1043/218 186/1041/210 -f 194/1043/218 195/1045/219 187/1044/212 -f 195/1045/219 196/1060/228 188/1046/220 -f 188/1046/220 196/1060/228 189/1033/19 -f 189/1033/19 197/1061/6 198/1047/221 -f 198/1047/221 199/1050/223 191/1049/216 -f 199/1050/223 200/1052/224 192/1051/217 -f 200/1052/224 201/1694/5 193/1053/21 -f 193/1054/21 201/1695/5 202/1055/225 -f 194/1056/218 202/1055/225 203/1057/226 -f 195/1058/219 203/1057/226 204/1059/227 -f 196/1060/228 204/1059/227 197/1061/6 -f 205/1062/22 206/1074/234 198/1047/221 -f 198/1047/221 206/1074/234 207/1063/229 -f 199/1064/223 207/1063/229 208/1065/230 -f 208/1065/230 209/1696/20 201/1067/5 -f 201/1068/5 209/1697/20 210/1069/231 -f 210/1069/231 211/1072/232 203/1071/226 -f 211/1072/232 212/1086/238 204/1059/227 -f 204/1059/227 212/1086/238 205/1062/22 -f 205/1062/22 213/1088/18 214/1073/233 -f 214/1073/233 215/1076/235 207/1075/229 -f 215/1076/235 216/1698/241 208/1077/230 -f 208/1077/230 216/1698/241 217/1078/17 -f 217/1080/17 218/1699/242 210/1081/231 -f 210/1081/231 218/1699/242 219/1083/236 -f 211/1084/232 219/1083/236 220/1085/237 -f 220/1085/237 213/1088/18 205/1062/22 -f 221/1087/2 222/1089/239 214/1073/233 -f 222/1089/239 223/1700/246 215/1090/235 -f 215/1090/235 223/1700/246 224/1091/240 -f 224/1091/240 225/1701/4 217/1093/17 -f 225/1094/4 226/1097/243 218/1095/242 -f 226/1097/243 227/1702/249 219/1098/236 -f 219/1098/236 227/1702/249 228/1099/244 -f 228/1099/244 221/1087/2 213/1088/18 -f 221/1087/2 229/1111/34 230/1100/245 -f 230/1100/245 231/1703/252 223/1101/246 -f 223/1101/246 231/1703/252 232/1102/247 -f 232/1102/247 233/1704/33 225/1104/4 -f 233/1105/33 234/1108/248 226/1106/243 -f 234/1108/248 235/1705/255 227/1109/249 -f 227/1109/249 235/1705/255 236/1110/250 -f 236/1110/250 229/1111/34 221/1087/2 -f 229/1111/34 237/1122/21 238/1112/251 -f 238/1112/251 239/1706/258 231/1113/252 -f 231/1113/252 239/1706/258 240/1114/253 -f 240/1114/253 241/1707/19 233/1116/33 -f 233/1117/33 241/1708/19 242/1118/254 -f 242/1118/254 243/1709/262 235/1120/255 -f 235/1120/255 243/1709/262 244/1121/256 -f 244/1121/256 237/1122/21 229/1111/34 -f 237/1122/21 245/1710/5 246/1123/257 -f 246/1123/257 247/1125/259 239/1124/258 -f 247/1125/259 248/1127/260 240/1126/253 -f 248/1127/260 249/1711/6 241/1128/19 -f 241/1129/19 249/1712/6 250/1130/261 -f 250/1130/261 251/1713/267 243/1132/262 -f 243/1132/262 251/1713/267 252/1133/263 -f 252/1133/263 245/1710/5 237/1122/21 -f 253/1134/20 254/1150/270 246/1135/257 -f 246/1135/257 254/1150/270 255/1137/264 -f 247/1138/259 255/1137/264 256/1139/265 -f 256/1139/265 257/1714/22 249/1141/6 -f 257/1142/22 258/1145/266 250/1143/261 -f 258/1145/266 259/1147/268 251/1146/267 -f 259/1147/268 260/1162/275 252/1148/263 -f 252/1148/263 260/1162/275 253/1134/20 -f 253/1134/20 261/1163/17 262/1149/269 -f 262/1149/269 263/1152/271 255/1151/264 -f 263/1152/271 264/1154/272 256/1153/265 -f 264/1154/272 265/1715/18 257/1155/22 -f 265/1156/18 266/1716/276 258/1157/266 -f 258/1157/266 266/1716/276 267/1159/273 -f 259/1160/268 267/1159/273 268/1161/274 -f 268/1161/274 261/1163/17 253/1134/20 -f 261/1163/17 173/1021/4 174/1020/205 -f 174/1020/205 175/1717/207 263/1164/271 -f 263/1164/271 175/1717/207 176/1165/208 -f 176/1165/208 177/1718/2 265/1167/18 -f 177/1168/2 178/1171/211 266/1169/276 -f 178/1171/211 179/1719/213 267/1172/273 -f 267/1172/273 179/1719/213 180/1032/214 -f 180/1032/214 173/1021/4 261/1163/17 -f 352/93/293 360/1210/306 354/1204/294 -f 340/82/296 338/79/295 354/1204/294 -f 342/646/298 355/1211/307 356/1206/299 -f 350/90/301 348/88/308 358/1207/302 -f 346/647/304 344/84/300 356/1206/299 -f 350/90/301 359/1208/303 360/1210/306 -f 340/82/296 353/1205/297 355/1211/307 -f 346/648/304 357/1720/305 358/1207/302 -f 362/97/295 376/111/293 384/1212/306 -f 364/100/296 362/97/295 378/1213/294 -f 366/102/298 379/1219/307 380/1215/299 -f 374/109/301 372/107/308 382/1216/302 -f 370/654/304 368/104/300 380/1215/299 -f 374/109/301 383/1217/303 384/1212/306 -f 364/100/296 377/1214/297 379/1219/307 -f 372/107/308 370/655/304 381/1220/305 -f 386/116/295 400/130/293 408/1221/306 -f 386/116/295 402/1222/294 401/1223/297 -f 390/121/298 403/1228/307 404/1224/299 -f 398/662/301 396/128/308 406/1225/302 -f 394/661/304 392/123/300 404/1224/299 -f 400/130/293 398/662/301 407/1226/303 -f 388/119/296 401/1223/297 403/1228/307 -f 394/125/304 405/1721/305 406/1225/302 -f 410/668/295 424/149/293 432/1229/306 -f 412/136/296 410/668/295 426/1230/294 -f 414/138/298 427/1235/307 428/1232/299 -f 420/144/308 430/1236/302 431/1233/303 -f 418/669/304 416/141/300 428/1232/299 -f 424/149/293 422/147/301 431/1233/303 -f 412/136/296 425/1231/297 427/1235/307 -f 418/670/304 429/1722/305 430/1236/302 -f 433/1237/309 434/1251/322 436/1238/310 -f 436/1238/310 438/1723/313 437/1240/312 -f 438/1241/313 440/1724/472 439/1242/314 -f 439/1242/314 440/1724/472 442/1244/315 -f 442/1244/315 444/1247/318 443/1246/317 -f 444/1247/318 446/1249/320 445/1248/319 -f 446/1249/320 448/1725/473 447/1250/321 -f 447/1250/321 448/1725/473 434/1251/322 -f 538/1252/323 540/1255/326 539/1253/324 -f 540/1255/326 542/1271/341 541/1256/327 -f 541/1256/327 542/1271/341 544/1257/328 -f 544/1257/328 546/1260/331 545/1259/330 -f 546/1260/331 548/1262/333 547/1261/332 -f 548/1262/333 550/1281/337 549/1263/334 -f 546/1260/331 544/1257/328 556/1264/335 -f 550/1266/337 552/1269/339 551/1267/338 -f 552/1269/339 538/1252/323 537/1254/325 -f 550/1266/337 559/1726/346 560/1270/340 -f 542/1271/341 540/1255/326 553/1272/342 -f 546/1260/331 557/1727/336 558/1274/344 -f 538/1252/323 552/1269/339 560/1275/340 -f 538/1252/323 554/1728/345 553/1277/342 -f 544/1257/328 542/1271/341 555/1278/343 -f 548/1262/333 558/1729/344 559/1280/346 -f 678/1282/6 677/1285/349 595/1283/347 -f 677/1285/349 679/1287/351 597/1286/350 -f 679/1287/351 680/1289/4 599/1288/352 -f 680/1289/4 681/1291/354 601/1290/353 -f 681/1291/354 682/1293/356 603/1292/355 -f 682/1293/356 683/1730/5 605/1294/357 -f 683/1295/5 684/1298/359 607/1296/358 -f 684/1298/359 685/1300/361 609/1299/360 -f 685/1300/361 686/1302/2 611/1301/362 -f 686/1302/2 687/1307/366 613/1303/363 -f 598/1304/364 727/1401/436 728/1305/365 -f 687/1307/366 688/1309/368 615/1308/367 -f 688/1309/368 678/1282/6 593/1284/348 -f 609/1299/360 625/1731/381 624/1310/369 -f 621/1311/370 633/1350/391 632/1312/371 -f 607/1296/358 624/1732/369 623/1314/373 -f 605/1294/357 623/1341/373 622/1315/374 -f 601/1290/353 603/1292/355 622/1316/374 -f 601/1290/353 621/1311/370 620/1313/372 -f 593/1284/348 617/1335/377 628/1318/375 -f 593/1284/348 595/1283/347 618/1319/376 -f 599/1288/352 620/1343/372 619/1321/378 -f 615/1308/367 628/1733/375 627/1322/379 -f 597/1286/350 619/1337/378 618/1323/376 -f 611/1301/362 613/1303/363 627/1324/379 -f 611/1301/362 626/1339/380 625/1326/381 -f 635/1327/382 636/1346/390 660/389/383 -f 627/1322/379 628/1733/375 640/1328/385 -f 617/1320/377 618/1319/376 630/1330/387 -f 624/1310/369 625/1731/381 637/1332/389 -f 622/1316/374 634/1351/392 633/1334/391 -f 617/1335/377 629/1352/388 640/1336/385 -f 619/1337/378 631/1353/393 630/1338/387 -f 626/1339/380 638/1354/394 637/1340/389 -f 623/1341/373 635/1355/382 634/1342/392 -f 620/1343/372 632/1356/371 631/1344/393 -f 627/1324/379 639/1734/386 638/1345/394 -f 623/1314/373 624/1732/369 636/1346/390 -f 650/1347/395 651/1364/410 675/1348/18 -f 633/1350/391 657/381/400 656/380/396 -f 640/1328/385 664/402/401 663/401/397 -f 629/1331/388 630/1330/387 654/372/398 -f 637/1332/389 661/392/402 660/723/383 -f 634/1351/392 658/383/403 657/720/400 -f 629/1352/388 653/404/399 664/727/401 -f 631/1353/393 655/374/404 654/717/398 -f 638/1354/394 662/395/405 661/724/402 -f 635/1355/382 659/386/384 658/721/403 -f 632/1356/371 656/378/396 655/377/404 -f 638/1345/394 639/1734/386 663/399/397 -f 648/1357/406 672/1369/21 671/1358/5 -f 644/1360/408 645/1370/414 669/1361/17 -f 652/1363/409 676/1372/22 675/1348/18 -f 642/1365/411 666/1374/19 665/1366/6 -f 649/1368/413 673/1375/34 672/1369/21 -f 645/1370/414 646/1376/415 670/1371/20 -f 641/1367/412 665/1366/6 676/1372/22 -f 642/1365/411 643/1378/416 667/1373/33 -f 650/1347/395 674/1349/2 673/1375/34 -f 646/1376/415 647/1735/407 671/1377/5 -f 643/1378/416 644/1360/408 668/1362/4 -f 692/1379/417 740/1451/421 741/1380/418 -f 614/1382/420 612/1402/4 734/1383/421 -f 608/1385/422 606/1403/6 731/1386/423 -f 600/1306/2 728/1305/365 729/1388/425 -f 616/1390/427 614/1382/420 735/1384/418 -f 594/1392/5 726/1736/435 725/1393/429 -f 610/1395/431 608/1385/422 732/1387/424 -f 602/1389/426 729/1388/425 730/1397/433 -f 616/1390/427 736/1391/428 726/1399/435 -f 596/1394/430 725/1393/429 727/1401/436 -f 612/1402/4 610/1395/431 733/1396/432 -f 604/1398/434 730/1397/433 731/1386/423 -f 677/1404/349 678/1424/6 702/1405/423 -f 679/1407/351 703/1737/452 704/1408/421 -f 680/1409/4 704/1408/421 705/1410/438 -f 682/1412/356 706/1738/454 707/1413/435 -f 683/1415/5 707/1739/435 708/1416/439 -f 685/1418/361 709/1740/455 710/1419/365 -f 686/1420/2 710/1419/365 711/1421/440 -f 688/1423/368 712/1741/451 702/1405/423 -f 594/1392/5 596/1394/430 713/728/441 -f 600/1306/2 716/409/444 715/411/443 -f 602/1389/426 717/729/453 716/409/444 -f 606/1403/6 719/418/447 718/414/445 -f 606/1403/6 608/1385/422 720/417/446 -f 610/1395/431 612/1402/4 722/422/417 -f 614/1382/420 723/731/450 722/422/417 -f 594/1400/5 714/424/442 724/426/449 -f 614/1382/420 687/1742/366 711/1425/440 -f 712/1426/451 688/1743/368 616/1390/427 -f 596/1394/430 677/1744/349 701/1427/437 -f 703/1428/452 679/1745/351 598/1304/364 -f 602/1389/426 681/1746/354 705/1429/438 -f 706/1430/454 682/1747/356 604/1398/434 -f 709/1431/455 685/1748/361 610/1395/431 -f 608/1385/422 684/1749/359 708/1432/439 -f 699/1433/456 747/1452/425 748/1434/433 -f 690/1436/447 738/1444/423 737/1437/424 -f 696/1439/459 744/1454/429 745/1440/436 -f 693/1381/419 741/1380/418 742/1442/428 -f 700/1435/457 748/1434/433 738/1444/423 -f 691/1445/462 689/1438/458 737/1437/424 -f 697/1441/460 745/1440/436 746/1447/463 -f 694/1443/461 742/1442/428 743/1449/435 -f 691/1445/462 739/1446/432 740/1451/421 -f 698/1448/444 746/1447/463 747/1452/425 -f 695/1453/442 743/1750/435 744/1454/429 -f 794/1455/331 796/1473/333 795/1456/332 -f 795/1456/332 796/1473/333 798/1458/337 -f 798/1458/337 800/1466/339 799/1460/338 -f 799/1460/338 800/1466/339 802/1461/323 -f 802/1461/323 804/1476/326 803/1463/324 -f 803/1463/324 804/1476/326 806/1464/341 -f 800/1466/339 812/1751/340 813/1467/345 -f 806/1468/341 808/1472/328 807/1469/329 -f 807/1469/329 808/1472/328 794/1455/331 -f 806/1468/341 815/1752/343 816/1471/335 -f 796/1473/333 809/1753/344 811/1474/346 -f 802/1461/323 813/1754/345 814/1475/342 -f 794/1455/331 808/1472/328 816/1477/335 -f 794/1455/331 810/1755/336 809/1479/344 -f 798/1458/337 811/1756/346 812/1480/340 -f 806/1464/341 804/1476/326 814/1481/342 -f 818/777/304 832/558/300 840/1483/299 -f 818/777/304 834/1484/305 833/1485/302 -f 822/548/301 835/1489/303 836/1486/306 -f 828/556/296 838/1491/297 839/1487/307 -f 826/778/295 824/550/293 836/1486/306 -f 832/558/300 830/779/298 839/1487/307 -f 820/546/308 833/1485/302 835/1489/303 -f 828/556/296 826/553/295 837/1490/294 -f 856/787/300 864/1498/299 858/1492/305 -f 844/785/308 842/563/304 858/1492/305 -f 848/568/293 846/566/301 859/1494/303 -f 852/573/296 862/1499/297 863/1496/307 -f 848/568/293 860/1495/306 861/1497/294 -f 854/575/298 863/1496/307 864/1498/299 -f 844/785/308 857/1493/302 859/1494/303 -f 850/786/295 861/1757/294 862/1499/297 -f 880/595/300 888/1506/299 882/1500/305 -f 866/793/304 882/1500/305 881/1501/302 -f 872/794/293 870/584/301 883/1502/303 -f 876/795/296 886/1507/297 887/1504/307 -f 872/794/293 884/1503/306 885/1505/294 -f 878/592/298 887/1504/307 888/1506/299 -f 870/584/301 868/582/308 881/1501/302 -f 874/589/295 885/1758/294 886/1507/297 -f 904/614/300 912/1514/299 906/1508/305 -f 890/801/304 906/1508/305 905/1509/302 -f 896/802/293 894/603/301 907/1510/303 -f 900/610/296 910/1515/297 911/1512/307 -f 898/605/295 896/802/293 908/1511/306 -f 904/614/300 902/612/298 911/1512/307 -f 892/600/308 905/1509/302 907/1510/303 -f 898/607/295 909/1759/294 910/1515/297 -f 921/1516/33 922/1531/215 914/1517/205 -f 914/1517/205 922/1531/215 923/1519/206 -f 923/1519/206 924/1522/209 916/1521/208 -f 924/1522/209 925/1760/34 917/1523/2 -f 917/1524/2 925/1761/34 926/1525/210 -f 918/1526/211 926/1525/210 927/1527/212 -f 927/1527/212 928/1544/220 920/1529/214 -f 920/1529/214 928/1544/220 921/1516/33 -f 929/1530/19 930/1546/222 922/1531/215 -f 922/1531/215 930/1546/222 931/1532/216 -f 923/1533/206 931/1532/216 932/1534/217 -f 924/1535/209 932/1534/217 933/1536/21 -f 933/1538/21 934/1541/218 926/1539/210 -f 934/1541/218 935/1543/219 927/1542/212 -f 935/1543/219 936/1559/228 928/1544/220 -f 928/1544/220 936/1559/228 929/1530/19 -f 937/1545/6 938/1547/221 930/1546/222 -f 938/1547/221 939/1549/223 931/1548/216 -f 939/1549/223 940/1551/224 932/1550/217 -f 940/1551/224 941/1762/5 933/1552/21 -f 933/1553/21 941/1763/5 942/1554/225 -f 934/1555/218 942/1554/225 943/1556/226 -f 935/1557/219 943/1556/226 944/1558/227 -f 944/1558/227 937/1545/6 929/1530/19 -f 937/1545/6 945/1572/22 946/1560/234 -f 938/1547/221 946/1560/234 947/1561/229 -f 939/1562/223 947/1561/229 948/1563/230 -f 948/1563/230 949/1764/20 941/1565/5 -f 941/1566/5 949/1765/20 950/1567/231 -f 950/1567/231 951/1570/232 943/1569/226 -f 951/1570/232 952/1571/238 944/1558/227 -f 952/1571/238 945/1572/22 937/1545/6 -f 945/1572/22 953/1586/18 954/1573/233 -f 954/1573/233 955/1575/235 947/1574/229 -f 955/1575/235 956/1577/241 948/1576/230 -f 956/1577/241 957/1766/17 949/1578/20 -f 957/1579/17 958/1767/242 950/1580/231 -f 950/1580/231 958/1767/242 959/1582/236 -f 951/1583/232 959/1582/236 960/1584/237 -f 960/1584/237 953/1586/18 945/1572/22 -f 961/1585/2 962/1587/239 954/1573/233 -f 962/1587/239 963/1768/246 955/1588/235 -f 955/1588/235 963/1768/246 964/1589/240 -f 956/1590/241 964/1589/240 965/1591/4 -f 965/1593/4 966/1596/243 958/1594/242 -f 966/1596/243 967/1769/249 959/1597/236 -f 959/1597/236 967/1769/249 968/1598/244 -f 968/1598/244 961/1585/2 953/1586/18 -f 961/1585/2 969/1609/34 970/1599/245 -f 970/1599/245 971/1770/252 963/1600/246 -f 963/1600/246 971/1770/252 972/1601/247 -f 972/1601/247 973/1771/33 965/1603/4 -f 965/1604/4 973/1772/33 974/1605/248 -f 974/1605/248 975/1773/255 967/1607/249 -f 967/1607/249 975/1773/255 976/1608/250 -f 976/1608/250 969/1609/34 961/1585/2 -f 969/1609/34 977/1621/21 978/1610/251 -f 978/1610/251 979/1774/258 971/1611/252 -f 971/1611/252 979/1774/258 980/1612/253 -f 972/1613/247 980/1612/253 981/1614/19 -f 973/1616/33 981/1775/19 982/1617/254 -f 982/1617/254 983/1776/262 975/1619/255 -f 975/1619/255 983/1776/262 984/1620/256 -f 984/1620/256 977/1621/21 969/1609/34 -f 977/1621/21 985/1777/5 986/1622/257 -f 986/1622/257 987/1624/259 979/1623/258 -f 987/1624/259 988/1626/260 980/1625/253 -f 988/1626/260 989/1778/6 981/1627/19 -f 989/1628/6 990/1779/261 982/1629/254 -f 982/1629/254 990/1779/261 991/1631/267 -f 983/1632/262 991/1631/267 992/1633/263 -f 992/1633/263 985/1777/5 977/1621/21 -f 993/1634/20 994/1649/270 986/1635/257 -f 986/1635/257 994/1649/270 995/1637/264 -f 987/1638/259 995/1637/264 996/1639/265 -f 996/1639/265 997/1780/22 989/1641/6 -f 989/1642/6 997/1781/22 998/1643/266 -f 998/1643/266 999/1646/268 991/1645/267 -f 999/1646/268 1000/1661/275 992/1647/263 -f 992/1647/263 1000/1661/275 993/1634/20 -f 993/1634/20 1001/1662/17 1002/1648/269 -f 1002/1648/269 1003/1651/271 995/1650/264 -f 1003/1651/271 1004/1782/272 996/1652/265 -f 996/1652/265 1004/1782/272 1005/1653/18 -f 1005/1655/18 1006/1783/276 998/1656/266 -f 998/1656/266 1006/1783/276 1007/1658/273 -f 999/1659/268 1007/1658/273 1008/1660/274 -f 1008/1660/274 1001/1662/17 993/1634/20 -f 1001/1662/17 913/1518/4 914/1517/205 -f 914/1517/205 915/1784/207 1003/1663/271 -f 1003/1663/271 915/1784/207 916/1664/208 -f 916/1664/208 917/1785/2 1005/1666/18 -f 917/1667/2 918/1670/211 1006/1668/276 -f 918/1670/211 919/1786/213 1007/1671/273 -f 1007/1671/273 919/1786/213 920/1529/214 -f 920/1529/214 913/1518/4 1001/1662/17 -f 1009/1672/6 1010/1686/469 1012/1673/464 -f 1012/1673/464 1014/1787/474 1013/1675/2 -f 1013/1675/2 1014/1787/474 1016/1676/465 -f 1016/1676/465 1018/1788/466 1017/1678/5 -f 1018/1679/466 1020/1682/467 1019/1680/197 -f 1020/1682/467 1022/1684/468 1021/1683/4 -f 1022/1684/468 1024/1789/475 1023/1685/195 -f 1023/1685/195 1024/1789/475 1010/1686/469 -f 282/1173/277 284/1176/280 283/1174/278 -f 284/1176/280 286/1790/282 285/1177/281 -f 286/1178/282 288/1181/284 287/1179/283 -f 288/1181/284 290/1791/292 289/1182/285 -f 289/1182/285 290/1791/292 292/1183/286 -f 291/1184/287 292/1183/286 294/1185/288 -f 293/1186/289 294/1185/288 296/1187/290 -f 295/1188/291 296/1187/290 282/1173/277 -f 297/1189/279 298/1203/277 300/1190/280 -f 300/1190/280 302/1792/282 301/1192/281 -f 301/1193/281 302/1793/282 304/1194/284 -f 304/1194/284 306/1197/292 305/1196/285 -f 306/1197/292 308/1794/286 307/1198/287 -f 307/1198/287 308/1794/286 310/1199/288 -f 309/1200/289 310/1199/288 312/1201/290 -f 311/1202/291 312/1201/290 298/1203/277 o Rotor -v -0.250000 -0.105662 -2.125000 -v -0.250000 -0.105662 -1.375000 -v 0.250000 -0.105663 -2.125000 -v 0.250000 -0.105663 -1.375000 -v -0.000000 -0.538675 -2.125000 -v -0.000000 -0.538675 -1.375000 -v -0.375000 0.144338 -2.125000 +v 0.187500 0.644337 -1.375000 v -0.375000 0.144338 -1.375000 v 0.375000 0.144337 -1.375000 +v -0.187500 0.644338 -1.375000 +v -0.375000 0.144338 -2.125000 +v 0.250000 -0.105663 -1.375000 +v -0.250000 -0.105662 -1.375000 +v 0.000000 -0.538675 -1.375000 +v 0.187500 0.644337 -2.125000 +v -0.187500 0.644338 -2.125000 +v -0.250000 -0.105662 -2.125000 +v 0.250000 -0.105663 -2.125000 +v 0.000000 -0.538675 -2.125000 v 0.375000 0.144337 -2.125000 -v 0.529006 -0.122410 -2.125000 v 0.529006 -0.122410 -1.375000 v 0.154006 -0.771928 -1.375000 v 0.154006 -0.771928 -2.125000 -v -0.154007 -0.771928 -2.125000 +v 0.529006 -0.122410 -2.125000 v -0.154007 -0.771928 -1.375000 v -0.529006 -0.122409 -1.375000 v -0.529006 -0.122409 -2.125000 -v -0.187500 0.644338 -2.125000 -v -0.187500 0.644338 -1.375000 -v 0.187500 0.644337 -1.375000 -v 0.187500 0.644337 -2.125000 -v 0.868269 -0.534790 -2.125000 +v -0.154007 -0.771928 -2.125000 v 0.868269 -0.534790 -1.375000 -v 0.680769 -0.859549 -1.375000 v 0.680769 -0.859549 -2.125000 -v -0.680769 -0.859548 -2.125000 +v 0.868269 -0.534790 -2.125000 v -0.680769 -0.859548 -1.375000 -v -0.868269 -0.534789 -1.375000 v -0.868269 -0.534789 -2.125000 +v -0.680769 -0.859548 -2.125000 +v -0.868269 -0.534789 -1.375000 +v 0.680769 -0.859549 -1.375000 vt 0.168950 0.125000 vt 0.127854 0.066176 vt 0.182648 0.066176 @@ -5220,74 +113,5354 @@ vn -0.0000 0.0000 1.0000 vn -0.9363 0.3511 0.0000 vn 0.0000 1.0000 0.0000 vn -0.0000 0.0000 -1.0000 -vn -0.8944 -0.4472 0.0000 +vn -0.8944 -0.4472 -0.0000 vn 0.8944 -0.4472 -0.0000 vn 0.0599 0.9982 0.0000 -vn -0.8345 -0.5510 0.0000 -vn 0.8345 -0.5510 -0.0000 +vn -0.8345 -0.5510 -0.0000 +vn 0.8345 -0.5510 0.0000 vn -0.0599 0.9982 0.0000 vn 0.9363 0.3511 0.0000 -vn 0.8660 -0.5000 0.0000 +vn 0.8660 -0.5000 -0.0000 vn 0.7722 0.6353 0.0000 -vn -0.1641 -0.9864 0.0000 -vn -0.8660 -0.5000 0.0000 -vn 0.1641 -0.9864 0.0000 +vn -0.1641 -0.9864 -0.0000 +vn -0.8660 -0.5000 -0.0000 +vn 0.1641 -0.9864 -0.0000 vn -0.7722 0.6353 0.0000 -usemtl None s off -f 1045/1795/476 1032/1796/476 1033/1797/476 -f 1044/1798/477 1031/1799/477 1032/1800/477 -f 1028/1801/476 1026/1802/476 1030/1803/476 -f 1044/1798/478 1046/1804/478 1043/1805/478 -f 1025/1806/479 1027/1807/479 1029/1808/479 -f 1032/1800/480 1025/1809/480 1026/1810/480 -f 1028/1811/476 1032/1796/476 1026/1812/476 -f 1034/1813/481 1028/1814/481 1027/1815/481 -f 1031/1816/479 1027/1817/479 1025/1818/479 -f 1036/1819/482 1027/1820/482 1028/1821/482 -f 1037/1822/476 1028/1823/476 1030/1824/476 -f 1038/1825/483 1030/1826/483 1029/1827/483 -f 1035/1828/479 1029/1829/479 1027/1830/479 -f 1040/1831/484 1029/1832/484 1030/1833/484 -f 1041/1834/476 1030/1835/476 1026/1836/476 -f 1042/1837/485 1026/1838/485 1025/1839/485 -f 1039/1840/479 1025/1841/479 1029/1842/479 -f 1046/1804/486 1033/1843/486 1034/1813/486 -f 1031/1816/479 1046/1844/479 1034/1845/479 -f 1048/1846/487 1050/1847/487 1047/1848/487 -f 1048/1846/488 1035/1849/488 1036/1819/488 -f 1037/1822/476 1048/1850/476 1036/1851/476 -f 1050/1847/489 1037/1852/489 1038/1825/489 -f 1047/1853/479 1038/1854/479 1035/1828/479 -f 1052/1855/490 1054/1856/490 1051/1857/490 -f 1052/1855/491 1039/1858/491 1040/1831/491 -f 1053/1859/476 1040/1860/476 1041/1834/476 -f 1054/1856/492 1041/1861/492 1042/1837/492 -f 1051/1862/479 1042/1863/479 1039/1840/479 -f 1045/1795/476 1044/1864/476 1032/1796/476 -f 1044/1798/477 1043/1805/477 1031/1799/477 -f 1044/1798/478 1045/1865/478 1046/1804/478 -f 1032/1800/480 1031/1799/480 1025/1809/480 -f 1028/1811/476 1033/1797/476 1032/1796/476 -f 1034/1813/481 1033/1843/481 1028/1814/481 -f 1031/1816/479 1034/1845/479 1027/1817/479 -f 1036/1819/482 1035/1849/482 1027/1820/482 -f 1037/1822/476 1036/1851/476 1028/1823/476 -f 1038/1825/483 1037/1852/483 1030/1826/483 -f 1035/1828/479 1038/1854/479 1029/1829/479 -f 1040/1831/484 1039/1858/484 1029/1832/484 -f 1041/1834/476 1040/1860/476 1030/1835/476 -f 1042/1837/485 1041/1861/485 1026/1838/485 -f 1039/1840/479 1042/1863/479 1025/1841/479 -f 1046/1804/486 1045/1865/486 1033/1843/486 -f 1031/1816/479 1043/1866/479 1046/1844/479 -f 1048/1846/487 1049/1867/487 1050/1847/487 -f 1048/1846/488 1047/1848/488 1035/1849/488 -f 1037/1822/476 1049/1868/476 1048/1850/476 -f 1050/1847/489 1049/1867/489 1037/1852/489 -f 1047/1853/479 1050/1869/479 1038/1854/479 -f 1052/1855/490 1053/1870/490 1054/1856/490 -f 1052/1855/491 1051/1857/491 1039/1858/491 -f 1053/1859/476 1052/1871/476 1040/1860/476 -f 1054/1856/492 1053/1870/492 1041/1861/492 -f 1051/1862/479 1054/1872/479 1042/1863/479 +f 1/1/1 2/2/1 3/3/1 +f 4/4/2 5/5/2 2/6/2 +f 6/7/1 7/8/1 8/9/1 +f 4/4/3 9/10/3 10/11/3 +f 11/12/4 12/13/4 13/14/4 +f 2/6/5 11/15/5 7/16/5 +f 6/17/1 2/2/1 7/18/1 +f 14/19/6 6/20/6 12/21/6 +f 5/22/4 12/23/4 11/24/4 +f 15/25/7 12/26/7 6/27/7 +f 16/28/1 6/29/1 8/30/1 +f 17/31/8 8/32/8 13/33/8 +f 18/34/4 13/35/4 12/36/4 +f 19/37/9 13/38/9 8/39/9 +f 20/40/1 8/41/1 7/42/1 +f 21/43/10 7/44/10 11/45/10 +f 22/46/4 11/47/4 13/48/4 +f 9/10/11 3/49/11 14/19/11 +f 5/22/4 9/50/4 14/51/4 +f 23/52/12 24/53/12 25/54/12 +f 23/52/13 18/55/13 15/25/13 +f 16/28/1 23/56/1 15/57/1 +f 24/53/14 16/58/14 17/31/14 +f 25/59/4 17/60/4 18/34/4 +f 26/61/15 27/62/15 28/63/15 +f 26/61/16 22/64/16 19/37/16 +f 29/65/1 19/66/1 20/40/1 +f 27/62/17 20/67/17 21/43/17 +f 28/68/4 21/69/4 22/46/4 +f 1/1/1 4/70/1 2/2/1 +f 4/4/2 10/11/2 5/5/2 +f 4/4/3 1/71/3 9/10/3 +f 2/6/5 5/5/5 11/15/5 +f 6/17/1 3/3/1 2/2/1 +f 14/19/6 3/49/6 6/20/6 +f 5/22/4 14/51/4 12/23/4 +f 15/25/7 18/55/7 12/26/7 +f 16/28/1 15/57/1 6/29/1 +f 17/31/8 16/58/8 8/32/8 +f 18/34/4 17/60/4 13/35/4 +f 19/37/9 22/64/9 13/38/9 +f 20/40/1 19/66/1 8/41/1 +f 21/43/10 20/67/10 7/44/10 +f 22/46/4 21/69/4 11/47/4 +f 9/10/11 1/71/11 3/49/11 +f 5/22/4 10/72/4 9/50/4 +f 23/52/12 30/73/12 24/53/12 +f 23/52/13 25/54/13 18/55/13 +f 16/28/1 30/74/1 23/56/1 +f 24/53/14 30/73/14 16/58/14 +f 25/59/4 24/75/4 17/60/4 +f 26/61/15 29/76/15 27/62/15 +f 26/61/16 28/63/16 22/64/16 +f 29/65/1 26/77/1 19/66/1 +f 27/62/17 29/76/17 20/67/17 +f 28/68/4 27/78/4 21/69/4 +o Body +v -0.244981 -0.000000 0.368932 +v 0.000000 -0.244981 0.368932 +v 0.244981 -0.000000 0.368932 +v -0.375000 -0.863814 -2.375000 +v -0.375000 -1.363814 -3.124999 +v -0.375000 -1.363814 -2.375000 +v 0.375000 -0.863814 -3.124999 +v -0.375000 -0.496790 -5.624999 +v -0.375000 -0.863814 -3.124999 +v 0.375000 -1.363814 -2.375000 +v 0.375000 -1.363814 -3.124999 +v 0.375000 -0.863814 -2.375000 +v 0.375000 -1.746790 -5.624999 +v -0.375000 -1.746790 -5.624999 +v 0.375000 -0.496790 -5.624999 +v 0.249981 1.154378 -2.627011 +v 0.249981 1.031888 -2.504521 +v 0.249981 0.909398 -2.627011 +v -0.249981 0.945275 -2.540398 +v -0.249981 1.154378 -2.627011 +v -0.249980 1.118502 -2.713625 +v 0.249981 1.154378 -2.871992 +v 0.249981 1.031888 -2.749502 +v 0.249981 0.909398 -2.871992 +v -0.249981 0.945274 -2.785378 +v -0.249980 1.154378 -2.871992 +v -0.249980 1.118502 -2.958606 +v -0.312500 0.926420 -2.500000 +v -0.312500 0.863920 -2.999999 +v -0.312500 0.863920 -2.500000 +v -0.250000 0.926420 -2.999999 +v 0.250000 0.863920 -2.999999 +v -0.250000 0.863920 -2.999999 +v 0.312500 0.926420 -2.999999 +v 0.312500 0.863920 -2.500000 +v 0.312500 0.863920 -2.999999 +v 0.250000 0.926420 -2.500000 +v -0.250000 0.863920 -2.500000 +v 0.250000 0.863920 -2.500000 +v 0.250000 0.926420 -2.999999 +v 0.312500 1.051420 -2.999999 +v -0.312500 0.926420 -2.999999 +v 0.312500 1.051420 -2.500000 +v 0.250000 1.051420 -2.500000 +v 0.312500 0.926420 -2.500000 +v -0.250000 1.051420 -2.999999 +v -0.312500 1.051420 -2.500000 +v -0.250000 1.051420 -2.500000 +v 0.250000 1.051420 -2.999999 +v -0.250000 0.926420 -2.500000 +v -0.312500 1.051420 -2.999999 +v 0.269079 0.989930 -0.750546 +v 0.207317 0.966012 -0.808289 +v 0.207317 0.989929 -0.750546 +v 0.269079 0.966012 -0.808289 +v 0.207317 0.908269 -0.832206 +v 0.269079 0.850527 -0.808289 +v 0.207317 0.850527 -0.808289 +v 0.207317 0.826609 -0.750546 +v 0.269079 0.850527 -0.692804 +v 0.207317 0.850527 -0.692804 +v 0.269079 0.908269 -0.668886 +v 0.207317 0.908269 -0.668886 +v 0.207317 0.966012 -0.692804 +v 0.269079 0.966012 -0.692804 +v 0.295772 0.908269 -0.684311 +v 0.295772 0.842034 -0.750546 +v 0.295772 0.908269 -0.816781 +v 0.269080 0.989930 -1.158847 +v 0.207317 0.966012 -1.216590 +v 0.207317 0.989929 -1.158847 +v 0.269079 0.966012 -1.216590 +v 0.207317 0.908269 -1.240508 +v 0.269080 0.908269 -1.240508 +v 0.207317 0.850527 -1.216590 +v 0.269080 0.850527 -1.216590 +v 0.207317 0.826609 -1.158848 +v 0.269080 0.850527 -1.101105 +v 0.207317 0.850527 -1.101105 +v 0.269079 0.908269 -1.077187 +v 0.207317 0.908269 -1.077187 +v 0.269080 0.966012 -1.101105 +v 0.207317 0.966012 -1.101105 +v 0.295772 0.908269 -1.092613 +v 0.295772 0.861434 -1.205683 +v 0.295772 0.908269 -1.225083 +v 0.269079 0.989929 -1.567149 +v 0.207317 0.966012 -1.624892 +v 0.207317 0.989929 -1.567149 +v 0.269079 0.966012 -1.624892 +v 0.207317 0.908269 -1.648810 +v 0.269080 0.908269 -1.648810 +v 0.207317 0.850527 -1.624892 +v 0.269080 0.850527 -1.624892 +v 0.207317 0.826609 -1.567149 +v 0.269079 0.826609 -1.567149 +v 0.207317 0.850527 -1.509407 +v 0.269079 0.850527 -1.509407 +v 0.207317 0.908269 -1.485489 +v 0.269079 0.966012 -1.509407 +v 0.207317 0.966012 -1.509406 +v 0.295772 0.908269 -1.500914 +v 0.295772 0.861434 -1.613984 +v 0.295772 0.908269 -1.633384 +v 0.207317 0.989929 -1.975451 +v 0.269079 0.966012 -2.033194 +v 0.207317 0.966012 -2.033194 +v 0.269079 0.908269 -2.057111 +v 0.207317 0.908269 -2.057111 +v 0.207317 0.850527 -2.033194 +v 0.269079 0.850527 -2.033194 +v 0.207317 0.826609 -1.975451 +v 0.269079 0.850527 -1.917708 +v 0.207317 0.850527 -1.917708 +v 0.207317 0.908269 -1.893791 +v 0.269079 0.908269 -1.893791 +v 0.207317 0.966012 -1.917708 +v 0.269079 0.966012 -1.917708 +v 0.295772 0.908269 -1.909216 +v 0.295772 0.861434 -2.022286 +v 0.295772 0.908269 -2.041686 +v 0.906809 -0.197376 2.444303 +v 0.784319 -0.409536 2.689283 +v 0.784319 -0.409536 2.199322 +v 0.481215 -0.434565 2.617530 +v 0.654443 -0.134526 2.617530 +v 0.481215 -0.434565 2.271075 +v 0.872283 -0.218575 -0.312500 +v 1.088789 -0.343575 0.312500 +v 1.088790 -0.343575 -0.312500 +v 1.088790 -0.593575 -0.312500 +v 0.872283 -0.718575 0.312500 +v 0.872283 -0.718575 -0.312500 +v 0.655777 -0.593575 -0.312500 +v 0.872283 -0.218575 0.312500 +v 1.088790 -0.593575 0.312500 +v 0.655777 -0.593575 0.312500 +v 0.655777 -0.343575 -0.312500 +v 0.655777 -0.343575 0.312500 +v -0.475030 0.813421 1.869728 +v -0.475030 0.750921 0.369728 +v -0.475030 0.750921 1.869728 +v -0.412530 0.813420 0.369728 +v -0.412530 0.750921 1.869728 +v -0.412530 0.750921 0.369728 +v -0.475030 0.750921 1.932228 +v -0.475030 0.813420 0.369728 +v -0.412530 0.813421 1.869728 +v -0.475030 0.250921 1.932228 +v -0.412530 0.750921 1.932228 +v -0.412530 0.250921 1.869728 +v -0.475030 0.250921 1.869728 +v -0.412530 0.250921 1.932228 +v 0.475030 0.750921 0.369728 +v 0.475030 0.813421 1.869728 +v 0.475030 0.750921 1.869728 +v 0.412530 0.750921 1.869728 +v 0.412530 0.813420 0.369728 +v 0.412530 0.750920 0.369728 +v 0.475030 0.750921 1.932228 +v 0.412530 0.813420 1.869728 +v 0.475030 0.813420 0.369728 +v 0.475030 0.250921 1.932228 +v 0.412530 0.750921 1.932228 +v 0.475030 0.250921 1.869728 +v 0.412530 0.250921 1.869728 +v 0.412530 0.250921 1.932228 +v -0.475030 -0.750921 0.369728 +v -0.475030 -0.813421 1.869728 +v -0.475030 -0.750921 1.869728 +v -0.412530 -0.750921 1.869728 +v -0.412530 -0.813421 0.369728 +v -0.412530 -0.750921 0.369728 +v -0.475030 -0.750921 1.932228 +v -0.412530 -0.813421 1.869728 +v -0.475030 -0.813421 0.369728 +v -0.475030 -0.250921 1.932228 +v -0.412530 -0.750921 1.932228 +v -0.475030 -0.250921 1.869728 +v -0.412530 -0.250921 1.869728 +v -0.412530 -0.250921 1.932228 +v 0.475030 -0.813421 1.869728 +v 0.475030 -0.750921 0.369728 +v 0.475030 -0.750921 1.869728 +v 0.412530 -0.813421 0.369728 +v 0.412530 -0.750921 1.869728 +v 0.412530 -0.750921 0.369728 +v 0.475030 -0.750921 1.932228 +v 0.475030 -0.813421 0.369728 +v 0.412530 -0.813421 1.869728 +v 0.475030 -0.250921 1.932228 +v 0.412530 -0.750921 1.932228 +v 0.475030 -0.250921 1.869728 +v 0.412530 -0.250921 1.869728 +v 0.412530 -0.250921 1.932228 +v 0.473896 0.611795 -0.679757 +v 0.536184 0.986795 -0.674615 +v 0.536184 0.611795 -0.674615 +v 0.468753 0.986795 -0.617469 +v 0.468753 0.611795 -0.617469 +v 0.531041 0.986795 -0.612327 +v 0.531041 0.611795 -0.612327 +v 0.473896 0.986795 -0.679757 +v 0.531041 1.049295 -0.612327 +v 0.304755 1.049295 2.128347 +v 0.304755 0.986795 2.128347 +v 0.468753 1.049295 -0.617469 +v 0.299613 0.986795 2.190635 +v 0.242467 0.986795 2.123204 +v 0.242467 1.049295 2.123204 +v 0.299613 0.611795 2.190635 +v 0.304755 0.611795 2.128347 +v 0.237324 0.986795 2.185492 +v 0.242467 0.611795 2.123204 +v 0.237325 0.611795 2.185492 +v 0.673228 -0.500000 -0.471783 +v 0.326772 -0.500000 -0.471783 +v 0.326772 -0.500000 -0.818238 +v 0.377510 0.625000 -0.645011 +v 0.586614 0.625000 -0.558397 +v 0.622490 0.625000 -0.645011 +v -0.250000 -0.750000 -2.125000 +v 0.250000 0.687500 -2.125000 +v -0.250000 0.687500 -2.125000 +v 0.250000 0.687500 -1.375000 +v 0.250000 -0.750000 -1.375000 +v -0.250000 0.687500 -1.375000 +v -0.250000 0.750000 -2.125000 +v -0.250000 1.062500 -2.125000 +v -0.250000 0.750000 -2.375000 +v -0.250000 -0.750000 -2.375000 +v 0.250000 -0.750000 -2.375000 +v 0.250000 -0.750000 -2.125000 +v 0.250000 0.750000 -1.375000 +v 0.250000 1.062500 -1.937499 +v 0.250000 1.062500 -1.375000 +v 0.250000 0.687500 -2.375000 +v -0.250000 -0.750000 -1.375000 +v -0.250000 0.687500 -0.375000 +v 0.250000 -0.750000 -0.375000 +v -0.250000 -0.750000 -0.375000 +v 0.250000 0.750000 -2.125000 +v 0.250000 1.062500 -2.125000 +v -0.250000 0.687500 -2.375000 +v -0.250000 0.750000 -1.375000 +v 0.250000 0.750000 -0.375000 +v 0.250000 0.687500 -0.375000 +v -0.250000 1.062500 -1.937500 +v -0.250000 1.062500 -1.375000 +v 0.250000 1.062500 -0.625000 +v -0.250000 1.062500 -0.625000 +v -0.250000 0.750000 -0.375000 +v 0.250000 0.750000 -2.375000 +v 0.044558 0.077177 1.515425 +v 0.000000 0.170159 1.515425 +v 0.085079 0.147362 1.515425 +v 0.147362 0.085079 1.515425 +v 0.077177 0.044558 1.515425 +v 0.089117 -0.000000 1.515425 +v 0.170159 -0.000000 1.515425 +v 0.077177 -0.044558 1.515425 +v 0.147362 -0.085079 1.515425 +v 0.085079 -0.147362 1.515425 +v 0.044558 -0.077177 1.515425 +v 0.000000 -0.170159 1.515425 +v 0.000000 -0.089117 1.515425 +v -0.085079 -0.147362 1.515425 +v -0.044558 -0.077177 1.515425 +v -0.147362 -0.085079 1.515425 +v -0.077177 -0.044558 1.515425 +v -0.170159 -0.000000 1.515425 +v -0.089117 -0.000000 1.515425 +v -0.077177 0.044558 1.515425 +v -0.147362 0.085079 1.515425 +v -0.044558 0.077177 1.515425 +v -0.085079 0.147362 1.515425 +v 0.000000 0.089117 1.515425 +v 0.000000 0.599488 4.000000 +v 0.362223 0.627389 4.000000 +v 0.000000 0.724446 4.000000 +v 0.599488 -0.000000 4.000000 +v 0.627388 0.362223 4.000000 +v 0.519172 0.299744 4.000000 +v 0.627388 -0.362223 4.000000 +v 0.724446 -0.000000 4.000000 +v 0.299744 -0.519172 4.000000 +v 0.000000 -0.724446 4.000000 +v 0.362223 -0.627389 4.000000 +v -0.299744 -0.519172 4.000000 +v 0.000000 -0.599488 4.000000 +v -0.519172 -0.299744 4.000000 +v -0.724446 -0.000000 4.000000 +v -0.627389 -0.362223 4.000000 +v -0.599488 -0.000000 4.000000 +v -0.627389 0.362223 4.000000 +v -0.362223 0.627388 4.000000 +v -0.299745 0.519172 4.000000 +v -0.519172 0.299744 3.000000 +v -0.362223 0.627388 3.000000 +v -0.627389 0.362223 3.000000 +v 0.299744 0.519172 3.000000 +v 0.627388 0.362223 3.000000 +v 0.362223 0.627389 3.000000 +v 0.519172 -0.299744 3.000000 +v 0.362223 -0.627389 3.000000 +v 0.627389 -0.362223 3.000000 +v -0.299744 -0.519172 3.000000 +v -0.627389 -0.362223 3.000000 +v -0.362223 -0.627389 3.000000 +v 0.050433 0.087352 2.000000 +v 0.000000 0.599489 2.000000 +v 0.000000 0.100865 2.000000 +v 0.087351 0.050433 2.000000 +v 0.299744 0.519173 2.000000 +v 0.100865 0.000001 2.000000 +v 0.519172 0.299745 2.000000 +v 0.519172 -0.299744 2.000000 +v 0.599488 0.000001 2.000000 +v 0.050432 -0.087351 2.000000 +v 0.087351 -0.050432 2.000000 +v 0.000000 -0.599488 2.000000 +v 0.299744 -0.519171 2.000000 +v -0.050432 -0.087351 2.000000 +v 0.000000 -0.100864 2.000000 +v -0.087352 -0.050432 2.000000 +v -0.299744 -0.519171 2.000000 +v -0.599488 -0.000000 2.000000 +v -0.519172 -0.299744 2.000000 +v -0.087352 0.050433 2.000000 +v -0.100865 0.000001 2.000000 +v -0.299744 0.519172 2.000000 +v -0.519172 0.299744 2.000000 +v -0.050433 0.087352 2.000000 +v -0.087352 0.050434 5.611448 +v 0.087351 -0.050431 5.611448 +v 0.087351 0.050434 5.611448 +v 0.500000 0.866025 0.375000 +v 1.000000 0.000000 -0.375000 +v 0.500000 0.866025 -0.375000 +v 0.500000 -0.866025 0.375000 +v 0.500000 -0.866025 -0.375000 +v -0.500000 -0.866025 -0.375000 +v -1.000000 -0.000000 0.375000 +v -1.000000 0.000000 -0.375000 +v -0.500000 0.866025 0.375000 +v -0.500000 0.866025 -0.375000 +v 0.500000 0.866025 -2.375000 +v 1.000000 0.000000 -3.125000 +v 0.500000 0.866025 -3.125000 +v 1.000000 0.000000 -2.375000 +v 0.500000 -0.866026 -3.125000 +v 0.500000 -0.866025 -2.375000 +v -0.500000 -0.866025 -3.125000 +v -0.500000 -0.866025 -2.375000 +v -1.000000 0.000000 -3.125000 +v -0.500000 0.866025 -2.375000 +v -1.000000 0.000000 -2.375000 +v -0.500000 0.866025 -3.125000 +v -0.479958 0.611795 -0.679582 +v -0.542246 0.986795 -0.674439 +v -0.542247 0.611795 -0.674439 +v -0.537103 0.986795 -0.612151 +v -0.537104 0.611795 -0.612151 +v -0.474815 0.986795 -0.617294 +v -0.474815 0.611795 -0.617294 +v -0.479958 0.986795 -0.679582 +v -0.537104 1.049295 -0.612151 +v -0.474816 1.049295 -0.617294 +v -0.248530 0.986795 2.123379 +v -0.243387 0.986795 2.185668 +v -0.248530 1.049295 2.123379 +v -0.310818 0.986795 2.128522 +v -0.310818 1.049295 2.128522 +v -0.248530 0.611795 2.123379 +v -0.305675 0.986795 2.190811 +v -0.305675 0.611795 2.190811 +v -0.673228 -0.500000 -0.818238 +v -0.255019 -0.500000 -0.645011 +v -0.326772 -0.500000 -0.471783 +v -0.377510 0.625000 -0.645011 +v -0.586614 0.625000 -0.731624 +v -0.622490 0.625000 -0.645011 +v -0.207317 0.989930 -0.750546 +v -0.269079 0.966012 -0.808289 +v -0.207317 0.966012 -0.808289 +v -0.269079 0.908269 -0.832207 +v -0.207317 0.908269 -0.832207 +v -0.269079 0.850527 -0.808289 +v -0.207317 0.850527 -0.808289 +v -0.207317 0.826609 -0.750546 +v -0.269079 0.826609 -0.750546 +v -0.207317 0.850527 -0.692804 +v -0.269079 0.850527 -0.692804 +v -0.207317 0.908269 -0.668886 +v -0.269079 0.966012 -0.692804 +v -0.207317 0.966012 -0.692804 +v -0.295772 0.908269 -0.684311 +v -0.295772 0.861434 -0.797381 +v -0.295772 0.908269 -0.816781 +v -0.269079 0.989929 -1.158848 +v -0.207317 0.966012 -1.216590 +v -0.207317 0.989929 -1.158848 +v -0.269079 0.908269 -1.240508 +v -0.207317 0.908269 -1.240508 +v -0.269079 0.850527 -1.216591 +v -0.207317 0.850527 -1.216591 +v -0.269079 0.826609 -1.158848 +v -0.207317 0.826609 -1.158848 +v -0.269079 0.850527 -1.101106 +v -0.207317 0.850527 -1.101105 +v -0.269079 0.908269 -1.077188 +v -0.207317 0.908269 -1.077188 +v -0.207317 0.966012 -1.101105 +v -0.295772 0.908269 -1.092613 +v -0.295772 0.861434 -1.205683 +v -0.295772 0.908269 -1.225083 +v -0.207317 0.989929 -1.567149 +v -0.269079 0.966012 -1.624892 +v -0.207317 0.966012 -1.624892 +v -0.269079 0.908269 -1.648810 +v -0.207317 0.908269 -1.648810 +v -0.207317 0.850527 -1.624892 +v -0.269079 0.826609 -1.567150 +v -0.207317 0.826609 -1.567150 +v -0.207317 0.850527 -1.509407 +v -0.269079 0.908269 -1.485489 +v -0.207317 0.908269 -1.485489 +v -0.207317 0.966012 -1.509407 +v -0.269079 0.966012 -1.509407 +v -0.295772 0.908269 -1.500914 +v -0.295772 0.861434 -1.613985 +v -0.295772 0.908269 -1.633385 +v -0.207317 0.989930 -1.975451 +v -0.269079 0.966012 -2.033194 +v -0.207317 0.966012 -2.033194 +v -0.207317 0.908269 -2.057111 +v -0.269079 0.908269 -2.057111 +v -0.207317 0.850527 -2.033194 +v -0.269079 0.826609 -1.975451 +v -0.207317 0.826609 -1.975451 +v -0.207317 0.850527 -1.917709 +v -0.269079 0.850527 -1.917709 +v -0.207317 0.908269 -1.893791 +v -0.269079 0.908269 -1.893791 +v -0.207317 0.966012 -1.917708 +v -0.269079 0.966012 -1.917708 +v -0.295772 0.908269 -1.909216 +v -0.295772 0.842034 -1.975451 +v -0.295772 0.974504 -1.975451 +v 0.173228 -0.173228 -3.118932 +v 0.000000 -0.244981 -3.118932 +v -0.244981 0.000000 -3.118932 +v 0.173227 0.173227 0.368932 +v 0.000000 0.244981 0.368932 +v -0.173227 0.173227 0.368932 +v -0.173227 -0.173228 0.368932 +v 0.173227 -0.173227 0.368932 +v 0.249981 0.945274 -2.958606 +v 0.249981 1.031888 -2.994483 +v 0.249981 1.118502 -2.958606 +v 0.249981 1.118502 -2.785378 +v 0.249981 0.945274 -2.785378 +v 0.269079 0.908269 -0.832206 +v 0.269079 0.826609 -0.750546 +v 0.295772 0.955105 -0.797381 +v 0.295772 0.974504 -0.750546 +v 0.295772 0.955105 -0.703711 +v 0.295772 0.861434 -0.703711 +v 0.295772 0.861434 -0.797381 +v 0.269080 0.826609 -1.158848 +v 0.295772 0.955105 -1.205683 +v 0.295772 0.974504 -1.158847 +v 0.295772 0.955104 -1.112013 +v 0.295772 0.861434 -1.112013 +v 0.295772 0.842034 -1.158848 +v 0.269080 0.908269 -1.485489 +v 0.295772 0.955105 -1.613984 +v 0.295772 0.974504 -1.567149 +v 0.295772 0.955105 -1.520314 +v 0.295772 0.861434 -1.520314 +v 0.295772 0.842034 -1.567149 +v 0.269079 0.989930 -1.975451 +v 0.269079 0.826609 -1.975451 +v 0.295772 0.955105 -2.022286 +v 0.295772 0.974504 -1.975451 +v 0.295772 0.955105 -1.928616 +v 0.295772 0.861434 -1.928616 +v 0.295772 0.842034 -1.975451 +v 0.661828 -0.621696 2.444303 +v 0.697705 -0.559556 2.271075 +v 0.870933 -0.259517 2.271075 +v 0.870933 -0.259516 2.617530 +v 0.697705 -0.559556 2.617530 +v 0.654443 -0.134526 2.271075 +v 0.567829 -0.284546 2.199322 +v 0.445338 -0.496705 2.444303 +v 0.567829 -0.284546 2.689283 +v 0.690319 -0.072386 2.444303 +v 0.500000 -0.500000 -0.889991 +v 0.673228 -0.500000 -0.818238 +v 0.744981 -0.500000 -0.645011 +v 0.500000 -0.500000 -0.400030 +v 0.255019 -0.500000 -0.645011 +v 0.586614 0.625000 -0.731624 +v 0.500000 0.625000 -0.767501 +v 0.413386 0.625000 -0.731624 +v 0.413386 0.625000 -0.558397 +v 0.500000 0.625000 -0.522520 +v 0.299744 0.519172 4.000000 +v 0.519172 -0.299744 4.000000 +v -0.362223 -0.627389 4.000000 +v -0.519172 0.299744 4.000000 +v -0.299745 0.519172 3.000000 +v 0.519172 0.299744 3.000000 +v 0.299744 -0.519172 3.000000 +v -0.519172 -0.299744 3.000000 +v 0.050432 0.087353 5.611448 +v 0.000000 0.100866 5.611448 +v -0.050433 0.087353 5.611448 +v -0.100865 0.000002 5.611448 +v 0.000000 -0.100863 5.611448 +v -0.087352 -0.050431 5.611448 +v -0.050432 -0.087350 5.611448 +v 0.050432 -0.087350 5.611448 +v 0.100865 0.000002 5.611448 +v 1.000000 -0.000000 0.375000 +v -0.500000 -0.866025 0.375000 +v -0.243387 0.611795 2.185668 +v -0.310818 0.611795 2.128522 +v -0.500000 -0.500000 -0.400030 +v -0.673227 -0.500000 -0.471783 +v -0.744981 -0.500000 -0.645011 +v -0.500000 -0.500000 -0.889992 +v -0.326772 -0.500000 -0.818238 +v -0.586614 0.625000 -0.558397 +v -0.500000 0.625000 -0.522520 +v -0.413386 0.625000 -0.558397 +v -0.413386 0.625000 -0.731625 +v -0.500000 0.625000 -0.767501 +v -0.269079 0.989930 -0.750546 +v -0.269079 0.908269 -0.668886 +v -0.295772 0.955105 -0.797381 +v -0.295772 0.974504 -0.750546 +v -0.295772 0.955105 -0.703711 +v -0.295772 0.861434 -0.703711 +v -0.295772 0.842034 -0.750546 +v -0.269079 0.966012 -1.216590 +v -0.269079 0.966012 -1.101105 +v -0.295772 0.955104 -1.205683 +v -0.295772 0.974504 -1.158848 +v -0.295772 0.955104 -1.112013 +v -0.295772 0.861434 -1.112013 +v -0.295772 0.842034 -1.158848 +v -0.269079 0.989929 -1.567149 +v -0.269079 0.850527 -1.624892 +v -0.269079 0.850527 -1.509407 +v -0.295772 0.955104 -1.613984 +v -0.295772 0.974504 -1.567149 +v -0.295772 0.955104 -1.520314 +v -0.295772 0.861434 -1.520314 +v -0.295772 0.842034 -1.567150 +v -0.269079 0.989930 -1.975451 +v -0.269079 0.850527 -2.033194 +v -0.295772 0.908269 -2.041686 +v -0.295772 0.955105 -2.022286 +v -0.295772 0.955105 -1.928616 +v -0.295772 0.861434 -1.928616 +v -0.295772 0.861434 -2.022286 +v -0.173227 0.173227 -3.118932 +v 0.000000 0.244981 -3.118932 +v 0.173228 0.173227 -3.118932 +v 0.244981 0.000000 -3.118932 +v -0.173227 -0.173228 -3.118932 +v 0.249981 0.945274 -2.713625 +v 0.249981 1.031888 -2.749502 +v 0.249981 1.118502 -2.713625 +v 0.249981 1.118502 -2.540397 +v 0.249981 0.945274 -2.540397 +v -0.249981 1.031888 -2.749502 +v -0.249981 0.945274 -2.713625 +v -0.249981 0.909398 -2.627011 +v -0.249981 1.031888 -2.504521 +v -0.249981 1.118502 -2.540398 +v -0.249981 1.031888 -2.994483 +v -0.249981 0.945274 -2.958606 +v -0.249981 0.909398 -2.871992 +v -0.249981 1.031888 -2.749502 +v -0.249980 1.118502 -2.785378 +v 0.876733 -0.551959 2.548175 +v 0.586053 -0.304371 2.593377 +v 0.551005 -0.364964 2.574621 +v 0.843024 -0.591668 2.497790 +v 0.525250 -0.409266 2.523377 +v 0.822599 -0.601533 2.428962 +v 0.515690 -0.425405 2.453378 +v 0.820930 -0.578912 2.360134 +v 0.524887 -0.409056 2.383378 +v 0.838465 -0.529865 2.309748 +v 0.550376 -0.364602 2.332135 +v 0.870505 -0.467534 2.291306 +v 0.585327 -0.303952 2.313378 +v 0.620376 -0.243358 2.332134 +v 0.646131 -0.199057 2.383378 +v 0.908465 -0.408621 2.309748 +v 0.655690 -0.182918 2.453377 +v 0.942174 -0.368912 2.360134 +v 0.646494 -0.199266 2.523377 +v 0.962599 -0.359046 2.428962 +v 0.621005 -0.243721 2.574621 +v 0.964268 -0.381668 2.497789 +v 0.946733 -0.430715 2.548175 +v 1.101227 -0.681570 2.469018 +v 0.914693 -0.493046 2.566617 +v 1.055429 -0.714300 2.423376 +v 1.018491 -0.714631 2.361029 +v 1.000308 -0.682476 2.298681 +v 1.005754 -0.626449 2.253039 +v 1.033369 -0.561564 2.236333 +v 1.075754 -0.505206 2.253039 +v 1.121552 -0.472476 2.298681 +v 1.158491 -0.472144 2.361028 +v 1.176673 -0.504300 2.423376 +v 1.171227 -0.560327 2.469018 +v 1.256243 -0.771069 2.330546 +v 1.143612 -0.625212 2.485724 +v 1.196166 -0.795555 2.298250 +v 1.139721 -0.784624 2.254134 +v 1.102032 -0.741206 2.210018 +v 1.093198 -0.676935 2.177722 +v 1.115587 -0.609032 2.165901 +v 1.163198 -0.555691 2.177722 +v 1.223275 -0.531206 2.210018 +v 1.279721 -0.542137 2.254134 +v 1.317410 -0.585554 2.298250 +v 1.326243 -0.649825 2.330546 +v 1.385649 -0.764952 2.147086 +v 1.303855 -0.717729 2.342367 +v 1.334899 -0.816481 2.142498 +v 1.266247 -0.836016 2.129960 +v 1.198090 -0.818323 2.112834 +v 1.148689 -0.768143 2.095708 +v 1.131281 -0.698922 2.083170 +v 1.201281 -0.577679 2.083170 +v 1.269932 -0.558143 2.095708 +v 1.338090 -0.575836 2.112834 +v 1.387491 -0.626016 2.129960 +v 1.404899 -0.695237 2.142498 +v 1.396360 -0.771136 1.932145 +v 1.345154 -0.822402 1.933423 +v 1.275257 -0.841218 1.936914 +v 1.205398 -0.822543 1.941684 +v 1.154295 -0.771381 1.946454 +v 1.150531 -0.629207 2.078581 +v 1.135642 -0.701440 1.949945 +v 1.205642 -0.580197 1.949945 +v 1.275539 -0.561381 1.946454 +v 1.345398 -0.580056 1.941684 +v 1.396501 -0.631218 1.936914 +v 1.415154 -0.701158 1.933423 +v 1.361046 -0.750748 1.711173 +v 1.310290 -0.802273 1.715737 +v 1.241624 -0.821800 1.728206 +v 1.173446 -0.804095 1.745240 +v 1.124025 -0.753904 1.762273 +v 1.154436 -0.631462 1.951223 +v 1.106602 -0.684674 1.774743 +v 1.176602 -0.563430 1.774743 +v 1.245268 -0.543904 1.762273 +v 1.313446 -0.561608 1.745240 +v 1.362868 -0.611800 1.728206 +v 1.380290 -0.681030 1.715737 +v 1.298705 -0.714755 1.482584 +v 1.248342 -0.766507 1.488676 +v 1.180748 -0.786653 1.505321 +v 1.114035 -0.769794 1.528057 +v 1.066078 -0.720448 1.550794 +v 1.125847 -0.614956 1.779307 +v 1.049728 -0.651837 1.567438 +v 1.119728 -0.530594 1.567438 +v 1.187322 -0.510448 1.550794 +v 1.254035 -0.527307 1.528057 +v 1.301991 -0.576653 1.505321 +v 1.318342 -0.645263 1.488676 +v 1.222609 -0.670821 1.245910 +v 1.172383 -0.722653 1.252446 +v 1.105165 -0.743015 1.270301 +v 1.038964 -0.726452 1.294692 +v 0.991519 -0.677402 1.319082 +v 1.069365 -0.582346 1.573530 +v 0.975544 -0.609007 1.336938 +v 1.045544 -0.487764 1.336938 +v 1.112763 -0.467401 1.319082 +v 1.178964 -0.483964 1.294692 +v 1.226408 -0.533015 1.270301 +v 1.242383 -0.601409 1.252446 +v 1.144526 -0.625740 1.003635 +v 1.094187 -0.677506 1.009806 +v 1.026658 -0.697689 1.026667 +v 0.960034 -0.680881 1.049699 +v 0.912166 -0.631587 1.072732 +v 0.995318 -0.539595 1.343473 +v 0.895880 -0.563013 1.089593 +v 0.965880 -0.441770 1.089593 +v 1.033409 -0.421587 1.072732 +v 1.100034 -0.438394 1.049699 +v 1.147902 -0.487689 1.026667 +v 1.164187 -0.556262 1.009806 +v 1.075851 -0.586090 0.760105 +v 1.025202 -0.637677 0.765133 +v 0.956826 -0.657371 0.778870 +v 0.889045 -0.639896 0.797636 +v 0.840020 -0.589934 0.816401 +v 0.915541 -0.493536 1.095764 +v 0.822888 -0.520871 0.830139 +v 0.892888 -0.399628 0.830139 +v 0.961264 -0.379933 0.816401 +v 1.029045 -0.397409 0.797636 +v 1.078070 -0.447371 0.778870 +v 1.095202 -0.516433 0.765133 +v 1.027510 -0.558181 0.520874 +v 0.976472 -0.609543 0.523846 +v 0.907032 -0.628623 0.531965 +v 0.837798 -0.610309 0.543057 +v 0.787320 -0.559507 0.554148 +v 0.842239 -0.451215 0.835167 +v 0.769125 -0.489831 0.562268 +v 0.839124 -0.368587 0.562268 +v 0.908564 -0.349507 0.554148 +v 0.977798 -0.367821 0.543057 +v 1.028276 -0.418623 0.531965 +v 1.046472 -0.488299 0.523846 +v 1.009338 -0.547689 0.290518 +v 0.958094 -0.598932 0.290518 +v 0.888094 -0.617689 0.290518 +v 0.818094 -0.598932 0.290518 +v 0.766850 -0.547689 0.290518 +v 0.788086 -0.419949 0.565239 +v 0.748094 -0.477689 0.290518 +v 0.818094 -0.356445 0.290518 +v 0.888094 -0.337689 0.290518 +v 0.958094 -0.356445 0.290518 +v 1.009338 -0.407689 0.290518 +v 1.028094 -0.477689 0.290518 +v 0.000000 0.244981 -0.368932 +v 0.173227 0.173227 -0.368932 +v 0.244981 0.000000 -0.368932 +v 0.173227 -0.173227 -0.368932 +v 0.000000 -0.244981 -0.368932 +v -0.173227 -0.173227 -0.368932 +v -0.244981 0.000000 -0.368932 +v -0.173227 0.173227 -0.368932 +v 0.714536 0.412539 0.000002 +v 0.722677 0.000002 0.247212 +v 0.825075 0.000002 0.000002 +v 0.411767 0.237735 0.349610 +v 0.475467 0.000002 0.349610 +v 0.228257 0.000002 0.247212 +v 0.197676 0.114130 0.247212 +v 0.125859 0.000002 0.000002 +v 0.197676 0.114130 -0.247208 +v 0.228257 0.000002 -0.247208 +v 0.411767 0.237735 -0.349606 +v 0.475467 0.000002 -0.349606 +v 0.722678 0.000002 -0.247208 +v 0.412538 0.714538 0.000002 +v 0.625857 0.361341 0.247212 +v 0.237734 0.411769 0.349610 +v 0.114128 0.197678 0.247212 +v 0.108997 0.062931 0.000002 +v 0.062930 0.108999 0.000002 +v 0.114129 0.197678 -0.247208 +v 0.237734 0.411769 -0.349606 +v 0.625857 0.361341 -0.247208 +v 0.000000 0.722679 0.247212 +v 0.361339 0.625859 0.247212 +v 0.000000 0.475469 0.349610 +v 0.000000 0.228258 0.247212 +v 0.000000 0.228259 -0.247208 +v 0.000000 0.475469 -0.349606 +v 0.000000 0.722679 -0.247208 +v 0.361339 0.625859 -0.247208 +v 0.000000 0.825077 0.000002 +v -0.412537 0.714538 0.000002 +v -0.237733 0.411769 0.349610 +v -0.114128 0.197678 0.247212 +v 0.000000 0.125861 0.000002 +v -0.114128 0.197678 -0.247208 +v -0.237733 0.411769 -0.349606 +v -0.625857 0.361341 0.247212 +v -0.361338 0.625859 0.247212 +v -0.411766 0.237735 0.349610 +v -0.108997 0.062932 0.000002 +v -0.062929 0.108999 0.000002 +v -0.411766 0.237735 -0.349606 +v -0.625857 0.361341 -0.247208 +v -0.361338 0.625859 -0.247208 +v -0.825075 0.000002 0.000002 +v -0.714536 0.412540 0.000002 +v -0.722677 0.000002 0.247212 +v -0.228257 0.000002 0.247212 +v -0.197676 0.114130 0.247212 +v -0.125859 0.000002 0.000002 +v -0.197676 0.114130 -0.247208 +v -0.228257 0.000002 -0.247208 +v -0.722677 0.000002 -0.247208 +v -0.625857 -0.361336 0.247212 +v -0.475467 0.000002 0.349610 +v -0.197676 -0.114127 0.247212 +v -0.108997 -0.062928 0.000002 +v -0.197676 -0.114127 -0.247208 +v -0.475467 0.000002 -0.349606 +v -0.625857 -0.361336 -0.247208 +v -0.714536 -0.412536 0.000002 +v -0.361338 -0.625855 0.247212 +v -0.411766 -0.237732 0.349610 +v -0.114128 -0.197675 0.247212 +v -0.114128 -0.197674 -0.247208 +v -0.411767 -0.237732 -0.349606 +v -0.361338 -0.625855 -0.247208 +v -0.412537 -0.714534 0.000002 +v 0.000000 -0.722675 0.247212 +v -0.237733 -0.411765 0.349610 +v 0.000000 -0.475466 0.349610 +v 0.000000 -0.228255 0.247212 +v -0.062929 -0.108995 0.000002 +v 0.000000 -0.228255 -0.247208 +v -0.237733 -0.411765 -0.349606 +v 0.000000 -0.722675 -0.247208 +v 0.412538 -0.714534 0.000002 +v 0.000000 -0.825073 0.000002 +v 0.237734 -0.411765 0.349610 +v 0.114128 -0.197675 0.247212 +v 0.000000 -0.125858 0.000002 +v 0.062930 -0.108995 0.000002 +v 0.114129 -0.197675 -0.247208 +v 0.000000 -0.475465 -0.349606 +v 0.237734 -0.411765 -0.349606 +v 0.625857 -0.361337 0.247212 +v 0.361339 -0.625855 0.247212 +v 0.411767 -0.237732 0.349610 +v 0.197676 -0.114126 0.247212 +v 0.108997 -0.062928 0.000002 +v 0.411767 -0.237732 -0.349606 +v 0.625857 -0.361337 -0.247208 +v 0.361339 -0.625855 -0.247208 +v 0.714536 -0.412536 0.000002 +v 0.197676 -0.114127 -0.247208 +v 0.500000 0.500000 -0.889991 +v 0.673228 0.500000 -0.818238 +v 0.673228 0.500000 -0.471783 +v 0.500000 0.500000 -0.400030 +v 0.326772 0.500000 -0.471783 +v 0.255019 0.500000 -0.645011 +v 0.326773 0.500000 -0.818238 +v 0.744981 0.500000 -0.645011 +v 0.000000 0.724446 3.000000 +v 0.362223 0.627389 2.000000 +v 0.000000 0.724446 2.000000 +v 0.627389 0.362223 2.000000 +v 0.724446 -0.000000 2.000000 +v 0.724446 -0.000000 3.000000 +v 0.627388 -0.362223 2.000000 +v 0.362223 -0.627388 2.000000 +v 0.000000 -0.724446 2.000000 +v 0.000000 -0.724446 3.000000 +v -0.362223 -0.627389 2.000000 +v -0.627389 -0.362223 2.000000 +v -0.724446 -0.000000 2.000000 +v -0.724446 -0.000000 3.000000 +v -0.627389 0.362223 2.000000 +v 0.599488 -0.000000 3.000000 +v -0.362223 0.627388 2.000000 +v -0.325385 -0.563585 1.803562 +v 0.563584 -0.325386 1.803562 +v 0.484842 -0.000000 1.637495 +v 0.650771 -0.000000 1.803562 +v 0.000000 -0.650771 1.803562 +v 0.325386 -0.563584 1.803562 +v -0.325386 0.563584 1.803562 +v 0.325386 0.563584 1.803562 +v 0.000000 0.650771 1.803562 +v 0.563584 0.325386 1.803562 +v -0.563585 0.325385 1.803562 +v -0.650771 -0.000000 1.803562 +v -0.563584 -0.325386 1.803562 +v 0.000000 -0.484842 1.637495 +v -0.242421 0.419886 1.637495 +v -0.419886 0.242421 1.637495 +v 0.242421 0.419886 1.637495 +v 0.000000 0.484842 1.637495 +v -0.419886 -0.242421 1.637495 +v -0.242421 -0.419886 1.637495 +v 0.419886 -0.242421 1.637495 +v 0.242421 -0.419886 1.637495 +v 0.419886 0.242421 1.637495 +v -0.484842 -0.000000 1.637495 +v -0.077177 0.044559 0.220095 +v -0.089117 0.000001 0.220095 +v 0.000000 -0.089116 0.220095 +v 0.077177 -0.044557 0.220095 +v 0.089117 0.000001 0.220095 +v 0.000000 0.089118 0.220095 +v -0.044558 -0.077177 0.220095 +v 0.044558 -0.077176 0.220095 +v -0.044559 0.077178 0.220095 +v 0.077177 0.044559 0.220095 +v 0.044559 0.077178 0.220095 +v -0.077177 -0.044558 0.220095 +v 0.000000 0.599488 3.000000 +v -0.599488 -0.000000 3.000000 +v 0.000000 -0.599488 3.000000 +v -0.500000 0.500000 -0.400030 +v -0.744981 0.500000 -0.645011 +v -0.500000 0.500000 -0.889992 +v -0.255019 0.500000 -0.645011 +v -0.673227 0.500000 -0.818238 +v -0.326772 0.500000 -0.471783 +v -0.673227 0.500000 -0.471783 +v -0.326772 0.500000 -0.818238 +v 0.714536 0.412540 -2.749997 +v 0.722677 0.000002 -2.502787 +v 0.825075 0.000002 -2.749997 +v 0.411767 0.237735 -2.400389 +v 0.475467 0.000002 -2.400389 +v 0.228257 0.000002 -2.502787 +v 0.197676 0.114130 -2.502787 +v 0.125859 0.000002 -2.749997 +v 0.197676 0.114130 -2.997207 +v 0.228257 0.000002 -2.997207 +v 0.411767 0.237735 -3.099605 +v 0.475467 0.000002 -3.099605 +v 0.722678 0.000002 -2.997207 +v 0.412538 0.714538 -2.749997 +v 0.625857 0.361341 -2.502787 +v 0.237734 0.411769 -2.400389 +v 0.114128 0.197678 -2.502787 +v 0.062930 0.108999 -2.749997 +v 0.108997 0.062932 -2.749997 +v 0.114128 0.197678 -2.997207 +v 0.237734 0.411769 -3.099605 +v 0.625857 0.361341 -2.997207 +v 0.000000 0.825077 -2.749997 +v 0.361339 0.625859 -2.502787 +v 0.000000 0.722679 -2.502787 +v 0.000000 0.475469 -2.400389 +v 0.000000 0.228259 -2.502787 +v 0.000000 0.228259 -2.997207 +v 0.000000 0.475469 -3.099605 +v 0.000000 0.722679 -2.997207 +v 0.361339 0.625859 -2.997207 +v -0.361338 0.625859 -2.502788 +v -0.237733 0.411769 -2.400390 +v -0.114128 0.197678 -2.502787 +v 0.000000 0.125861 -2.749997 +v -0.114128 0.197678 -2.997207 +v -0.237733 0.411769 -3.099605 +v -0.361338 0.625859 -2.997207 +v -0.412537 0.714538 -2.749997 +v -0.625857 0.361341 -2.502788 +v -0.411767 0.237735 -2.400390 +v -0.197676 0.114130 -2.502787 +v -0.062929 0.108999 -2.749997 +v -0.108997 0.062932 -2.749997 +v -0.411766 0.237735 -3.099605 +v -0.625857 0.361341 -2.997207 +v -0.825075 0.000002 -2.749997 +v -0.714536 0.412540 -2.749997 +v -0.722677 0.000002 -2.502788 +v -0.228257 0.000002 -2.502787 +v -0.125859 0.000002 -2.749997 +v -0.197676 0.114130 -2.997207 +v -0.228257 0.000002 -2.997207 +v -0.722677 0.000002 -2.997207 +v -0.625857 -0.361336 -2.502787 +v -0.475467 0.000002 -2.400390 +v -0.197676 -0.114126 -2.502787 +v -0.197676 -0.114127 -2.997207 +v -0.475467 0.000002 -3.099605 +v -0.625857 -0.361336 -2.997207 +v -0.714536 -0.412536 -2.749997 +v -0.361338 -0.625855 -2.502787 +v -0.411767 -0.237732 -2.400389 +v -0.114128 -0.197674 -2.502787 +v -0.062929 -0.108995 -2.749997 +v -0.108997 -0.062928 -2.749997 +v -0.114128 -0.197675 -2.997207 +v -0.411767 -0.237732 -3.099605 +v -0.361338 -0.625855 -2.997207 +v -0.412537 -0.714534 -2.749997 +v 0.000000 -0.722675 -2.502787 +v -0.237733 -0.411765 -2.400389 +v 0.000000 -0.475466 -2.400389 +v 0.000000 -0.228255 -2.502787 +v 0.000000 -0.125858 -2.749997 +v 0.000000 -0.475465 -3.099605 +v -0.237733 -0.411765 -3.099605 +v 0.000000 -0.722675 -2.997207 +v 0.412538 -0.714534 -2.749997 +v 0.000000 -0.825073 -2.749997 +v 0.237734 -0.411765 -2.400389 +v 0.114129 -0.197675 -2.502787 +v 0.114128 -0.197674 -2.997207 +v 0.000000 -0.228255 -2.997207 +v 0.237734 -0.411765 -3.099605 +v 0.625857 -0.361337 -2.502787 +v 0.361339 -0.625855 -2.502787 +v 0.411767 -0.237732 -2.400389 +v 0.108997 -0.062928 -2.749997 +v 0.062930 -0.108995 -2.749997 +v 0.411767 -0.237732 -3.099605 +v 0.625857 -0.361337 -2.997207 +v 0.361339 -0.625855 -2.997207 +v 0.714536 -0.412536 -2.749997 +v 0.197676 -0.114126 -2.502787 +v 0.197676 -0.114126 -2.997207 +v 0.000000 0.244981 -2.381067 +v -0.173227 0.173227 -2.381067 +v -0.244980 0.000000 -2.381067 +v -0.173227 -0.173228 -2.381067 +v 0.000000 -0.244981 -2.381067 +v 0.173228 -0.173228 -2.381067 +v 0.244981 0.000000 -2.381067 +v 0.173228 0.173227 -2.381067 +v 0.766850 -0.407689 0.290518 +vt 0.342277 0.470539 +vt 0.311363 0.449920 +vt 0.336973 0.449920 +vt 0.319635 0.360294 +vt 0.374429 0.301471 +vt 0.374429 0.360294 +vt 0.442922 0.617647 +vt 0.438356 0.573529 +vt 0.438356 0.617647 +vt 0.456621 0.235294 +vt 0.511416 0.176471 +vt 0.511416 0.235294 +vt 0.059361 0.110294 +vt 0.054795 0.169118 +vt 0.054795 0.110294 +vt 0.305936 0.617647 +vt 0.310502 0.794118 +vt 0.305936 0.794118 +vt 0.694064 0.279412 +vt 0.397260 0.088235 +vt 0.452055 0.000000 +vt 0.452055 0.088235 +vt 0.118683 0.110505 +vt 0.118683 0.139406 +vt 0.109709 0.124955 +vt 0.219178 0.411765 +vt 0.223744 0.419118 +vt 0.223744 0.411765 +vt 0.223744 0.448529 +vt 0.219178 0.455882 +vt 0.219178 0.448529 +vt 0.301370 0.860294 +vt 0.305936 0.801471 +vt 0.305936 0.860294 +vt 0.433790 0.948529 +vt 0.438356 0.625000 +vt 0.438356 0.948529 +vt 0.219178 0.470588 +vt 0.223744 0.463235 +vt 0.219178 0.463235 +vt 0.442922 1.000000 +vt 0.447489 0.955882 +vt 0.447489 1.000000 +vt 0.045662 0.029412 +vt 0.041096 0.036765 +vt 0.041096 0.029412 +vt 0.041096 0.022059 +vt 0.004566 0.029412 +vt 0.004566 0.022059 +vt 0.013699 0.051471 +vt 0.050228 0.110294 +vt 0.013699 0.110294 +vt 0.059361 0.051471 +vt 0.050228 0.051471 +vt 0.219178 0.433824 +vt 0.223744 0.441176 +vt 0.223744 0.433824 +vt 0.219178 0.433824 +vt 0.223744 0.441176 +vt 0.223744 0.433824 +vt 0.063927 0.051471 +vt 0.059361 0.110294 +vt 0.799087 0.529412 +vt 0.853881 0.647059 +vt 0.799087 0.647059 +vt 0.223744 0.433824 +vt 0.219178 0.426471 +vt 0.223744 0.426471 +vt 0.223744 0.433824 +vt 0.219178 0.441176 +vt 0.219178 0.433824 +vt 0.762557 0.088235 +vt 0.817352 0.000000 +vt 0.817352 0.088235 +vt 0.360731 0.500000 +vt 0.342466 0.573529 +vt 0.342466 0.500000 +vt 0.319635 0.301471 +vt 0.292237 0.360294 +vt 0.292237 0.301471 +vt 0.223744 0.448529 +vt 0.219178 0.448529 +vt 0.461174 0.360537 +vt 0.461174 0.389597 +vt 0.454794 0.364793 +vt 0.223744 0.419118 +vt 0.219178 0.426471 +vt 0.219178 0.419118 +vt 0.223744 0.470588 +vt 0.219178 0.463235 +vt 0.223744 0.463235 +vt 0.223744 0.448529 +vt 0.219178 0.455882 +vt 0.219178 0.448529 +vt 0.219178 0.419118 +vt 0.223744 0.426471 +vt 0.219178 0.426471 +vt 0.219178 0.419118 +vt 0.223744 0.426471 +vt 0.228371 0.463247 +vt 0.236070 0.458111 +vt 0.237391 0.463247 +vt 0.429224 0.360294 +vt 0.456621 0.301471 +vt 0.456621 0.360294 +vt 0.219178 0.433824 +vt 0.219178 0.411765 +vt 0.223744 0.419118 +vt 0.223744 0.411765 +vt 0.433790 0.948529 +vt 0.438356 0.625000 +vt 0.433790 0.625000 +vt 0.301370 0.794118 +vt 0.305936 0.617647 +vt 0.305936 0.794118 +vt 0.219178 0.441176 +vt 0.223744 0.441176 +vt 0.301370 0.794118 +vt 0.296804 0.801471 +vt 0.296804 0.794118 +vt 0.228371 0.463247 +vt 0.236070 0.458111 +vt 0.237391 0.463247 +vt 0.223744 0.433824 +vt 0.292237 0.794118 +vt 0.296804 0.617647 +vt 0.296804 0.794118 +vt 0.219178 0.455882 +vt 0.210046 0.830882 +vt 0.283105 0.816176 +vt 0.283105 0.830882 +vt 0.223744 0.411765 +vt 0.219178 0.419118 +vt 0.219178 0.411765 +vt 0.799087 0.882353 +vt 0.853881 1.000000 +vt 0.799087 1.000000 +vt 0.219178 0.441176 +vt 0.219178 0.433824 +vt 0.229692 0.468382 +vt 0.236070 0.458111 +vt 0.237391 0.463247 +vt 0.210046 0.941176 +vt 0.283105 0.926471 +vt 0.283105 0.941176 +vt 0.447489 0.955882 +vt 0.442922 1.000000 +vt 0.447489 1.000000 +vt 0.210046 0.838235 +vt 0.283105 0.852941 +vt 0.210046 0.852941 +vt 0.301370 0.617647 +vt 0.301370 0.794118 +vt 0.360810 0.632280 +vt 0.360810 0.573965 +vt 0.376492 0.617702 +vt 0.296804 0.801471 +vt 0.301370 0.860294 +vt 0.296804 0.860294 +vt 0.372117 0.838450 +vt 0.377921 0.854637 +vt 0.366313 0.854637 +vt 0.301370 0.617647 +vt 0.296804 0.794118 +vt 0.296804 0.617647 +vt 0.296804 0.801471 +vt 0.293547 0.797798 +vt 0.296804 0.794118 +vt 0.004566 0.036765 +vt 0.000000 0.029412 +vt 0.004566 0.029412 +vt -0.000000 0.029412 +vt 0.219178 0.448529 +vt 0.223744 0.455882 +vt 0.223744 0.448529 +vt 0.304551 0.797798 +vt 0.301370 0.801471 +vt 0.301370 0.794118 +vt 0.292237 0.345588 +vt 0.219178 0.338235 +vt 0.292237 0.338235 +vt 0.301370 0.801471 +vt 0.305936 0.860294 +vt 0.301370 0.860294 +vt 0.310502 0.617647 +vt 0.310502 0.794118 +vt 0.305936 0.617647 +vt 0.310502 0.794118 +vt 0.305936 0.794118 +vt 0.301370 0.801471 +vt 0.304551 0.797798 +vt 0.438356 1.000000 +vt 0.433790 0.955882 +vt 0.438356 0.955882 +vt 0.292237 0.794118 +vt 0.219178 0.463235 +vt 0.223744 0.455882 +vt 0.219178 0.455882 +vt 0.223744 0.448529 +vt 0.223744 0.441176 +vt 0.293547 0.797798 +vt 0.045662 0.036765 +vt 0.041096 0.051471 +vt 0.292237 0.860294 +vt 0.296804 0.801471 +vt 0.296804 0.860294 +vt 0.438356 0.573529 +vt 0.442922 0.617647 +vt 0.438356 0.617647 +vt 0.296804 0.860294 +vt 0.301370 0.801471 +vt 0.296804 0.794118 +vt 0.296804 0.801471 +vt 0.296804 0.801471 +vt 0.301370 0.617647 +vt 0.210046 0.617647 +vt 0.283105 0.632353 +vt 0.210046 0.632353 +vt 0.598173 1.000000 +vt 0.652968 0.882353 +vt 0.652968 1.000000 +vt 0.223744 0.448529 +vt 0.219178 0.448529 +vt 0.304566 0.797886 +vt 0.301370 0.801471 +vt 0.301370 0.794118 +vt 0.219178 0.463235 +vt 0.223744 0.455882 +vt 0.219178 0.455882 +vt 0.223744 0.470588 +vt 0.219178 0.463235 +vt 0.223744 0.463235 +vt 0.223744 0.463235 +vt 0.223744 0.455882 +vt 0.511416 0.176471 +vt 0.456621 0.235294 +vt 0.456621 0.176471 +vt 0.296804 0.801471 +vt 0.293547 0.797798 +vt 0.296804 0.794118 +vt 0.073059 0.110294 +vt 0.063927 0.169118 +vt 0.063927 0.110294 +vt 0.304551 0.797798 +vt 0.301370 0.801471 +vt 0.301370 0.794118 +vt 0.223744 0.411765 +vt 0.219178 0.419118 +vt 0.219178 0.411765 +vt 0.598173 0.294118 +vt 0.652968 0.411765 +vt 0.598173 0.411765 +vt 0.438356 0.955882 +vt 0.442922 0.955882 +vt 0.004566 0.051471 +vt 0.000000 0.036765 +vt 0.146119 0.169118 +vt 0.127854 0.338235 +vt 0.127854 0.169118 +vt 0.118661 0.139960 +vt 0.118661 0.168966 +vt 0.112292 0.164718 +vt 0.219178 0.455882 +vt 0.449793 0.952194 +vt 0.447489 0.955882 +vt 0.447489 0.948529 +vt 0.292237 0.242647 +vt 0.397260 0.301471 +vt 0.292237 0.301471 +vt 0.442922 0.955882 +vt 0.440661 0.952194 +vt 0.442922 0.948529 +vt 0.449728 0.621287 +vt 0.447489 0.625000 +vt 0.447489 0.617647 +vt 0.442922 0.625000 +vt 0.442922 0.948529 +vt 0.000000 0.169118 +vt 0.009132 0.110294 +vt 0.009132 0.169118 +vt 0.598173 0.529412 +vt 0.652968 0.647059 +vt 0.598173 0.647059 +vt 0.442922 0.625000 +vt 0.440640 0.621287 +vt 0.442922 0.617647 +vt 0.223744 0.470588 +vt 0.219178 0.463235 +vt 0.223744 0.463235 +vt 0.447489 0.948529 +vt 0.452055 0.625000 +vt 0.447489 0.625000 +vt 0.237391 0.463247 +vt 0.228371 0.463247 +vt 0.232881 0.455984 +vt 0.118683 0.110505 +vt 0.118683 0.139406 +vt 0.109709 0.124955 +vt 0.164384 0.345588 +vt 0.146119 0.338235 +vt 0.164384 0.338235 +vt 0.219178 0.411765 +vt 0.223744 0.411765 +vt 0.223744 0.455882 +vt 0.127854 0.345588 +vt 0.127854 0.382353 +vt 0.114155 0.382353 +vt 0.219178 0.426471 +vt 0.223744 0.426471 +vt 0.219178 0.441176 +vt 0.365186 0.831254 +vt 0.328954 0.831254 +vt 0.347070 0.802082 +vt 0.301370 0.860294 +vt 0.305936 0.801471 +vt 0.305936 0.860294 +vt 0.045662 0.022059 +vt 0.041096 0.029412 +vt 0.447489 0.573529 +vt 0.442922 0.573529 +vt 0.041096 0.007353 +vt 0.415525 0.301471 +vt 0.415525 0.360294 +vt 0.452055 0.955882 +vt 0.073059 0.345588 +vt 0.018265 0.382353 +vt 0.000000 0.345588 +vt 0.073059 0.382353 +vt 0.219178 0.455882 +vt 0.223744 0.463235 +vt 0.223744 0.455882 +vt 0.164384 0.382353 +vt 0.146119 0.345588 +vt 0.305936 0.794118 +vt 0.310502 0.617647 +vt 0.310502 0.794118 +vt 0.333333 0.764706 +vt 0.356164 0.779412 +vt 0.333333 0.779412 +vt 0.219178 0.345588 +vt 0.178082 0.382353 +vt 0.136986 0.582690 +vt 0.132428 0.574480 +vt 0.136986 0.576331 +vt 0.136986 0.716219 +vt 0.132428 0.708120 +vt 0.136986 0.709860 +vt 0.132428 0.674036 +vt 0.136986 0.665350 +vt 0.136986 0.671709 +vt 0.136986 0.620841 +vt 0.132428 0.629490 +vt 0.132428 0.619027 +vt 0.136986 0.849748 +vt 0.132428 0.841760 +vt 0.136986 0.843389 +vt 0.132428 0.540397 +vt 0.136986 0.531821 +vt 0.136986 0.538180 +vt 0.132428 0.495850 +vt 0.136986 0.487312 +vt 0.136986 0.493670 +vt 0.132428 0.896770 +vt 0.136986 0.887899 +vt 0.136986 0.894257 +vt 0.132428 0.941316 +vt 0.136986 0.932409 +vt 0.136986 0.938767 +vt 0.136986 0.983277 +vt 0.132428 0.975400 +vt 0.136986 0.976918 +vt 0.329428 0.924405 +vt 0.292840 0.930207 +vt 0.298578 0.895724 +vt 0.292237 0.889706 +vt 0.283105 0.889706 +vt 0.356164 0.750000 +vt 0.333333 0.764706 +vt 0.333333 0.750000 +vt 0.283105 0.963235 +vt 0.292237 1.000000 +vt 0.283105 1.000000 +vt 0.283105 0.705882 +vt 0.292237 0.669118 +vt 0.292237 0.705882 +vt 0.292237 0.779412 +vt 0.292237 0.816176 +vt 0.283105 0.742647 +vt 0.283105 0.779412 +vt 0.132428 0.763130 +vt 0.136986 0.754370 +vt 0.136986 0.760728 +vt 0.136986 0.805238 +vt 0.132428 0.797213 +vt 0.136986 0.798879 +vt 0.314254 0.870480 +vt 0.332065 0.920158 +vt 0.372759 0.964691 +vt 0.339272 0.940257 +vt 0.341909 0.936009 +vt 0.332065 0.940257 +vt 0.298578 0.964691 +vt 0.329428 0.936009 +vt 0.357083 0.870480 +vt 0.341909 0.924405 +vt 0.339272 0.920158 +vt 0.360782 0.573830 +vt 0.360782 0.632318 +vt 0.345054 0.588452 +vt 0.890927 0.983706 +vt 0.963713 0.780700 +vt 0.963713 0.983706 +vt 0.342874 0.930207 +vt 0.283105 0.669118 +vt 0.356164 0.735294 +vt 0.333333 0.750000 +vt 0.333333 0.735294 +vt 0.328463 0.930207 +vt 0.335669 0.999174 +vt 0.335669 0.941811 +vt 0.314254 0.989934 +vt 0.335669 0.861240 +vt 0.356164 0.779412 +vt 0.333333 0.794118 +vt 0.333333 0.779412 +vt 0.372759 0.895724 +vt 0.378497 0.930207 +vt 0.223744 0.426471 +vt 0.219178 0.426471 +vt 0.000000 0.007353 +vt -0.000000 0.022059 +vt 0.219178 0.470588 +vt 0.223744 0.463235 +vt 0.890302 0.749101 +vt 0.890302 0.545323 +vt 0.999895 0.647212 +vt 0.292237 0.860294 +vt 0.652968 0.529412 +vt 0.335669 0.918603 +vt 0.219178 0.426471 +vt 0.223744 0.433824 +vt 0.223744 0.426471 +vt 0.223744 0.455882 +vt 0.219178 0.455882 +vt 0.689694 0.984059 +vt 0.762606 0.780702 +vt 0.762606 0.984059 +vt 0.397260 0.242647 +vt 0.292237 0.183824 +vt 0.397260 0.183824 +vt 0.447489 0.625000 +vt 0.447489 0.948529 +vt 0.763142 0.545216 +vt 0.763142 0.748889 +vt 0.653606 0.647052 +vt 0.433790 0.955882 +vt 0.438356 1.000000 +vt 0.292237 0.617647 +vt 0.296804 0.794118 +vt 0.292237 0.794118 +vt 0.449775 0.952245 +vt 0.447489 0.948529 +vt 0.447489 0.955882 +vt 0.442922 0.625000 +vt 0.442922 0.948529 +vt 0.440634 0.952245 +vt 0.442922 0.955882 +vt 0.449814 0.621500 +vt 0.447489 0.617647 +vt 0.447489 0.625000 +vt 0.433790 0.500000 +vt 0.415525 0.573529 +vt 0.415525 0.500000 +vt 0.223744 0.419118 +vt 0.442922 0.617647 +vt 0.440812 0.621442 +vt 0.442922 0.625000 +vt 0.853881 0.764706 +vt 0.853881 0.882353 +vt 0.219178 0.448529 +vt 0.219178 0.426471 +vt 0.223744 0.419118 +vt 0.219178 0.419118 +vt 0.311363 0.491158 +vt 0.324168 0.441379 +vt 0.336973 0.449920 +vt 0.461174 0.360537 +vt 0.461174 0.389597 +vt 0.454794 0.364793 +vt 0.598173 0.882353 +vt 0.652968 0.764706 +vt -0.000000 0.110294 +vt 0.004566 0.110294 +vt 0.301370 0.617647 +vt 0.301370 0.794118 +vt 0.000000 0.338235 +vt 0.073059 0.338235 +vt 0.210046 0.720588 +vt 0.283105 0.720588 +vt 0.073059 0.169118 +vt 0.228371 0.463247 +vt 0.237391 0.463247 +vt 0.236070 0.458111 +vt 0.223744 0.470588 +vt 0.223744 0.463235 +vt 0.219178 0.441176 +vt 0.223744 0.448529 +vt 0.223744 0.441176 +vt 0.223744 0.470588 +vt 0.219178 0.463235 +vt 0.305936 0.801471 +vt 0.310502 0.860294 +vt 0.305936 0.860294 +vt 0.223744 0.433824 +vt 0.219178 0.441176 +vt 0.219178 0.433824 +vt 0.219178 0.470588 +vt 0.219178 0.463235 +vt 0.013699 0.169118 +vt 0.228371 0.463247 +vt 0.237391 0.463247 +vt 0.236070 0.458111 +vt 0.397260 0.242647 +vt 0.452055 0.301471 +vt 0.397260 0.500000 +vt 0.378995 0.573529 +vt 0.378995 0.500000 +vt 0.223744 0.448529 +vt 0.219178 0.448529 +vt 0.292237 0.860294 +vt 0.726027 0.088235 +vt 0.634703 0.000000 +vt 0.726027 0.000000 +vt 0.210046 0.727941 +vt 0.210046 0.742647 +vt 0.228371 0.463247 +vt 0.237391 0.463247 +vt 0.236070 0.458111 +vt 0.438356 0.183824 +vt 0.456621 0.125000 +vt 0.456621 0.183824 +vt 0.219178 0.419118 +vt 0.223744 0.419118 +vt 0.799087 0.764706 +vt 0.452055 1.000000 +vt 0.223744 0.426471 +vt 0.252150 0.509209 +vt 0.264843 0.500743 +vt 0.282793 0.529648 +vt 0.282793 0.529648 +vt 0.277535 0.550087 +vt 0.264843 0.558553 +vt 0.252150 0.550087 +vt 0.246892 0.529648 +vt 0.252150 0.509209 +vt 0.264843 0.500743 +vt 0.277535 0.509209 +vt 0.127657 0.124955 +vt 0.125028 0.135173 +vt 0.112337 0.135173 +vt 0.112337 0.114737 +vt 0.125028 0.114737 +vt 0.232881 0.470509 +vt 0.229692 0.468382 +vt 0.229692 0.458111 +vt 0.236070 0.458111 +vt 0.236070 0.468382 +vt 0.236070 0.468382 +vt 0.232881 0.470509 +vt 0.229692 0.468382 +vt 0.229692 0.458111 +vt 0.232881 0.455984 +vt 0.236070 0.468382 +vt 0.232881 0.470509 +vt 0.229692 0.468382 +vt 0.229692 0.458111 +vt 0.232881 0.455984 +vt 0.236070 0.468382 +vt 0.232881 0.470509 +vt 0.228371 0.463247 +vt 0.229692 0.458111 +vt 0.232881 0.455984 +vt 0.328962 0.831345 +vt 0.334242 0.810816 +vt 0.346991 0.802313 +vt 0.359739 0.810816 +vt 0.365020 0.831345 +vt 0.359739 0.851874 +vt 0.346991 0.860377 +vt 0.334242 0.851874 +vt 0.359880 0.810626 +vt 0.359880 0.851882 +vt 0.347070 0.860426 +vt 0.334260 0.851882 +vt 0.334260 0.810626 +vt 0.376509 0.588452 +vt 0.376509 0.617696 +vt 0.345054 0.617696 +vt 0.345129 0.617702 +vt 0.345129 0.588544 +vt 0.376492 0.588544 +vt 0.336973 0.491158 +vt 0.324168 0.499699 +vt 0.311363 0.491158 +vt 0.306060 0.470539 +vt 0.324168 0.441379 +vt 0.467554 0.364793 +vt 0.470197 0.375067 +vt 0.467554 0.385341 +vt 0.454794 0.385341 +vt 0.452151 0.375067 +vt 0.375468 0.858587 +vt 0.372117 0.860033 +vt 0.368766 0.858587 +vt 0.365415 0.849241 +vt 0.366313 0.843846 +vt 0.368766 0.839896 +vt 0.375468 0.839895 +vt 0.377921 0.843846 +vt 0.378819 0.849241 +vt 0.799061 0.882380 +vt 0.653239 0.882380 +vt 0.689694 0.780702 +vt 0.690118 0.748889 +vt 0.690118 0.545216 +vt 1.000105 0.882203 +vt 0.854535 0.882203 +vt 0.890927 0.780700 +vt 0.963364 0.545323 +vt 0.963364 0.749101 +vt 0.342277 0.470539 +vt 0.336973 0.491158 +vt 0.324168 0.499699 +vt 0.306060 0.470539 +vt 0.311363 0.449920 +vt 0.467554 0.364793 +vt 0.470197 0.375067 +vt 0.467554 0.385341 +vt 0.454794 0.385341 +vt 0.452151 0.375067 +vt 0.236070 0.468382 +vt 0.232881 0.470509 +vt 0.229692 0.468382 +vt 0.232881 0.455984 +vt 0.229692 0.458111 +vt 0.236070 0.468382 +vt 0.232881 0.470509 +vt 0.229692 0.468382 +vt 0.232881 0.455984 +vt 0.229692 0.458111 +vt 0.236070 0.468382 +vt 0.232881 0.470509 +vt 0.229692 0.468382 +vt 0.232881 0.455984 +vt 0.229692 0.458111 +vt 0.237391 0.463247 +vt 0.232881 0.470509 +vt 0.236070 0.468382 +vt 0.228371 0.463247 +vt 0.229692 0.468382 +vt 0.232881 0.455984 +vt 0.229692 0.458111 +vt 0.236070 0.458111 +vt 0.277535 0.550087 +vt 0.264843 0.558553 +vt 0.252150 0.550087 +vt 0.246892 0.529648 +vt 0.277535 0.509209 +vt 0.127657 0.124955 +vt 0.125028 0.135173 +vt 0.112337 0.135173 +vt 0.112337 0.114737 +vt 0.125028 0.114737 +vt 0.109654 0.154463 +vt 0.112292 0.144208 +vt 0.125030 0.144208 +vt 0.127667 0.154463 +vt 0.125030 0.164718 +vt 0.112292 0.164718 +vt 0.109654 0.154463 +vt 0.112292 0.144208 +vt 0.118661 0.139960 +vt 0.125030 0.144208 +vt 0.127667 0.154463 +vt 0.125030 0.164718 +vt 0.118661 0.168966 +vt 0.511416 0.235294 +vt 0.694064 0.132353 +vt 0.694064 0.279412 +vt 0.292237 0.169118 +vt 0.219178 0.169118 +vt 0.292237 0.617647 +vt 0.296804 0.794118 +vt 0.292237 0.794118 +vt 0.223744 0.441176 +vt 0.219178 0.441176 +vt 0.452055 0.573529 +vt 0.447489 0.617647 +vt 0.447489 0.573529 +vt 0.223744 0.441176 +vt 0.452055 0.573529 +vt 0.433790 0.573529 +vt 0.310502 0.801471 +vt 0.310502 0.860294 +vt 0.452055 0.617647 +vt 0.447489 0.617647 +vt 0.018265 0.110294 +vt 0.018265 0.169118 +vt 0.442922 0.573529 +vt 0.223744 0.419118 +vt 0.442922 0.948529 +vt 0.397260 0.573529 +vt 0.452055 0.625000 +vt 0.452055 0.948529 +vt 0.219178 0.433824 +vt 0.219178 0.411765 +vt 0.223744 0.411765 +vt 0.360731 0.573529 +vt 0.726027 0.000000 +vt 0.762557 0.000000 +vt 0.219178 0.448529 +vt 0.429224 0.301471 +vt 0.283105 0.558824 +vt 0.292237 0.595588 +vt 0.283105 0.595588 +vt 1.000000 0.000000 +vt 0.799087 0.294118 +vt 0.853881 0.411765 +vt 0.799087 0.411765 +vt 0.296804 0.617647 +vt 0.296804 0.617647 +vt 0.853881 0.529412 +vt 0.223744 0.455882 +vt 0.292237 0.183824 +vt 0.365297 0.125000 +vt 0.365297 0.183824 +vt 0.210046 0.610294 +vt 0.283105 0.610294 +vt 0.219178 0.441176 +vt 0.210046 0.948529 +vt 0.210046 0.963235 +vt 0.223744 0.433824 +vt 0.219178 0.433824 +vt 0.146119 0.345588 +vt 0.146119 0.338235 +vt 0.433790 0.617647 +vt 0.433790 0.573529 +vt 0.305936 0.801471 +vt 0.310502 0.860294 +vt 0.219178 0.419118 +vt 0.296804 0.801471 +vt 0.296804 0.860294 +vt 0.301370 0.801471 +vt 0.301370 0.794118 +vt 0.305936 0.617647 +vt 0.301370 0.801471 +vt 0.598173 0.764706 +vt 0.433790 0.617647 +vt 0.433790 0.573529 +vt 0.310502 0.801471 +vt 0.310502 0.860294 +vt 0.292237 0.801471 +vt 0.292237 0.860294 +vt 0.273973 0.382353 +vt 0.219178 0.382353 +vt 0.219178 0.411765 +vt 0.223744 0.411765 +vt 0.223744 0.411765 +vt 0.219178 0.411765 +vt 0.219178 0.426471 +vt 0.164384 0.169118 +vt 0.456621 0.176471 +vt 0.059361 0.169118 +vt 0.310502 0.617647 +vt 0.694064 0.132353 +vt 0.397260 0.000000 +vt 0.433790 0.625000 +vt 0.223744 0.470588 +vt 0.442922 0.955882 +vt 0.063927 0.110294 +vt 0.223744 0.441176 +vt 0.223744 0.426471 +vt 0.219178 0.470588 +vt 0.223744 0.419118 +vt 0.438356 0.948529 +vt 0.292237 0.617647 +vt 0.210046 0.816176 +vt 0.210046 0.926471 +vt 0.283105 0.838235 +vt 0.310502 0.617647 +vt 0.433790 1.000000 +vt 0.292237 0.617647 +vt 0.045662 0.051471 +vt 0.292237 0.801471 +vt 0.283105 0.617647 +vt 0.219178 0.470588 +vt 0.073059 0.169118 +vt 0.652968 0.294118 +vt -0.000000 0.051471 +vt 0.000000 0.110294 +vt 0.219178 0.470588 +vt 0.452055 0.948529 +vt 0.045662 0.029412 +vt 0.045662 0.007353 +vt 0.452055 1.000000 +vt 0.356164 0.764706 +vt 0.132428 0.584943 +vt 0.132428 0.718583 +vt 0.132428 0.663573 +vt 0.136986 0.627199 +vt 0.132428 0.852223 +vt 0.132428 0.529933 +vt 0.132428 0.485387 +vt 0.132428 0.886307 +vt 0.132428 0.930853 +vt 0.132428 0.985863 +vt 0.292237 0.852941 +vt 0.356164 0.764706 +vt 0.292237 0.963235 +vt 0.292237 0.742647 +vt 0.132428 0.752667 +vt 0.132428 0.807676 +vt 0.357083 0.989934 +vt 0.292237 0.632353 +vt 0.356164 0.750000 +vt 0.356164 0.794118 +vt 0.292237 0.926471 +vt 0.004566 0.007353 +vt 0.223744 0.470588 +vt 0.853771 0.647212 +vt 0.292237 0.801471 +vt 0.292237 0.242647 +vt 0.799654 0.647052 +vt 0.433790 1.000000 +vt 0.210046 0.705882 +vt 0.000000 0.169118 +vt 0.219178 0.470588 +vt 0.219178 0.470588 +vt 0.310502 0.801471 +vt 0.223744 0.470588 +vt 0.013699 0.110294 +vt 0.452055 0.242647 +vt 0.292237 0.801471 +vt 0.634703 0.088235 +vt 0.283105 0.727941 +vt 0.438356 0.125000 +vt 0.452055 0.955882 +vt 0.452055 0.617647 +vt 0.452055 0.500000 +vt 0.452055 0.573529 +vt 0.726027 0.088235 +vt 0.292237 0.558824 +vt 1.000000 0.088235 +vt 0.853881 0.294118 +vt 0.292237 0.125000 +vt 0.210046 0.595588 +vt 0.283105 0.948529 +vt 0.310502 0.801471 +vt 0.146119 0.169118 +vt 0.438356 0.382353 +vt 0.452055 0.500000 +vt 0.438356 0.500000 +vt 0.383562 0.382353 +vt 0.369863 0.500000 +vt 0.369863 0.382353 +vt 0.059361 0.411765 +vt 0.045662 0.419118 +vt 0.045662 0.411765 +vt 0.045662 0.441176 +vt 0.059361 0.448529 +vt 0.045662 0.448529 +vt 0.210046 1.000000 +vt 0.210046 0.926471 +vt 0.283105 0.889706 +vt 0.283105 0.926471 +vt 0.210046 0.889706 +vt 0.283105 0.852941 +vt 0.210046 0.889706 +vt 0.191781 0.558824 +vt 0.205479 0.470588 +vt 0.205479 0.558824 +vt 0.210046 0.705882 +vt 0.283105 0.669118 +vt 0.283105 0.705882 +vt 0.210046 0.779412 +vt -0.000000 0.691176 +vt 0.073059 0.735294 +vt -0.000000 0.735294 +vt 0.136986 0.669118 +vt 0.210046 0.669118 +vt 0.178082 0.470588 +vt 0.191781 0.470588 +vt 0.219178 0.558824 +vt 0.232877 0.470588 +vt 0.232877 0.558824 +vt 0.164384 0.558824 +vt 0.178082 0.558824 +vt 0.136986 0.382353 +vt 0.159817 0.389706 +vt 0.136986 0.389706 +vt 0.109589 0.154412 +vt 0.073059 0.161765 +vt 0.073059 0.154412 +vt 0.205479 0.558824 +vt 0.219178 0.470588 +vt 0.109589 0.110294 +vt 0.073059 0.117647 +vt 0.073059 0.110294 +vt 0.246575 0.470588 +vt 0.246575 0.558824 +vt 0.073059 0.125000 +vt 0.109589 0.132353 +vt 0.073059 0.132353 +vt 0.210046 0.558824 +vt 0.452055 0.382353 +vt 0.438356 0.500000 +vt 0.438356 0.382353 +vt 0.136986 0.963235 +vt 0.283105 0.779412 +vt 0.210046 0.742647 +vt 0.283105 0.742647 +vt -0.000000 0.779412 +vt 0.073059 0.823529 +vt -0.000000 0.823529 +vt 0.109589 0.125000 +vt 0.109589 0.117647 +vt 0.424658 0.500000 +vt 0.424658 0.382353 +vt 0.424658 0.573529 +vt 0.429224 0.779412 +vt 0.424658 0.779412 +vt 0.109589 0.169118 +vt 0.109589 0.161765 +vt 0.401826 0.573529 +vt 0.397260 1.000000 +vt 0.397260 0.573529 +vt 0.328767 0.772059 +vt 0.310502 0.794118 +vt 0.310502 0.772059 +vt 0.136986 0.632353 +vt 0.374429 0.360294 +vt 0.383562 0.382353 +vt 0.369863 0.382353 +vt 0.283105 0.595588 +vt 0.210046 0.558824 +vt 0.210046 0.595588 +vt 0.109589 0.132353 +vt 0.073059 0.139706 +vt 0.073059 0.132353 +vt 0.109589 0.169118 +vt 0.073059 0.161765 +vt 0.109589 0.161765 +vt 0.424658 0.382353 +vt 0.410959 0.500000 +vt 0.410959 0.382353 +vt 0.136986 0.852941 +vt 0.328767 0.727941 +vt 0.310502 0.750000 +vt 0.310502 0.727941 +vt 0.136986 0.889706 +vt 0.136986 0.558824 +vt 0.150685 0.470588 +vt 0.150685 0.558824 +vt 0.429224 0.573529 +vt 0.433790 0.779412 +vt -0.000000 0.647059 +vt 0.073059 0.691176 +vt 0.392694 0.573529 +vt 0.073059 0.779412 +vt 0.073059 0.154412 +vt 0.109589 0.154412 +vt 0.397260 0.500000 +vt 0.383562 0.500000 +vt 0.191781 0.558824 +vt 0.178082 0.470588 +vt 0.191781 0.470588 +vt 0.109589 0.139706 +vt 0.073059 0.147059 +vt 0.356164 0.382353 +vt 0.342466 0.500000 +vt 0.342466 0.382353 +vt 0.383562 0.779412 +vt 0.388128 0.573529 +vt 0.388128 0.779412 +vt -0.000000 0.426471 +vt 0.027397 0.433824 +vt -0.000000 0.433824 +vt -0.000000 0.455882 +vt 0.027397 0.463235 +vt -0.000000 0.463235 +vt -0.000000 0.448529 +vt 0.027397 0.455882 +vt 0.091317 0.732981 +vt 0.200913 0.397059 +vt 0.219178 0.404412 +vt 0.200913 0.404412 +vt 0.100457 0.411765 +vt 0.118721 0.419118 +vt 0.100457 0.419118 +vt 0.027397 0.382353 +vt -0.000000 0.389706 +vt -0.000000 0.382353 +vt 0.027397 0.441176 +vt -0.000000 0.441176 +vt 0.027397 0.448529 +vt 0.027397 0.397059 +vt -0.000000 0.404412 +vt -0.000000 0.397059 +vt 0.027397 0.389706 +vt 0.027397 0.470588 +vt -0.000000 0.470588 +vt 0.045662 0.382353 +vt 0.045662 0.397059 +vt 0.027397 0.404412 +vt 0.045662 0.455882 +vt 0.082192 0.433824 +vt 0.068493 0.441176 +vt 0.068493 0.433824 +vt 0.045662 0.470588 +vt 0.200913 0.455882 +vt 0.178082 0.463235 +vt 0.178082 0.455882 +vt 0.045662 0.389706 +vt 0.045662 0.404412 +vt 0.027397 0.411765 +vt 0.045662 0.463235 +vt 0.027397 0.426471 +vt 0.027397 0.419118 +vt 0.045662 0.426471 +vt 0.059361 0.433824 +vt 0.045662 0.433824 +vt 0.059361 0.441176 +vt 0.059361 0.455882 +vt 0.068493 0.404412 +vt 0.082192 0.411765 +vt 0.068493 0.411765 +vt 0.219178 0.455882 +vt 0.200913 0.463235 +vt 0.059361 0.382353 +vt 0.059361 0.389706 +vt 0.059361 0.397059 +vt 0.059361 0.404412 +vt 0.059361 0.463235 +vt 0.059361 0.470588 +vt 0.068493 0.426471 +vt 0.059361 0.426471 +vt 0.068493 0.455882 +vt 0.068493 0.448529 +vt 0.109598 0.521940 +vt 0.091317 0.556104 +vt 0.091317 0.516382 +vt 0.068493 0.463235 +vt 0.082192 0.419118 +vt 0.068493 0.397059 +vt 0.506849 0.897059 +vt 0.488584 0.852941 +vt 0.506849 0.845588 +vt 0.068493 0.419118 +vt 0.059361 0.419118 +vt 0.219178 0.433824 +vt 0.200913 0.441176 +vt 0.200913 0.433824 +vt 0.082192 0.426471 +vt 0.068493 0.389706 +vt 0.082192 0.397059 +vt 0.082192 0.441176 +vt 0.082192 0.455882 +vt 0.178082 0.404412 +vt 0.200913 0.411765 +vt 0.178082 0.411765 +vt 0.068493 0.382353 +vt 0.082192 0.389706 +vt 0.082192 0.404412 +vt 0.082192 0.448529 +vt 0.082192 0.463235 +vt 0.068493 0.470588 +vt 0.100457 0.463235 +vt 0.082192 0.470588 +vt 0.100457 0.433824 +vt 0.100457 0.448529 +vt -0.000000 0.411765 +vt -0.000000 0.419118 +vt 0.082192 0.382353 +vt 0.100457 0.389706 +vt 0.100457 0.397059 +vt 0.100457 0.404412 +vt 0.100457 0.455882 +vt 0.100457 0.426471 +vt 0.118721 0.426471 +vt 0.118721 0.455882 +vt 0.118721 0.404412 +vt 0.118721 0.448529 +vt 0.178082 0.441176 +vt 0.159817 0.448529 +vt 0.159817 0.441176 +vt 0.118721 0.463235 +vt 0.100457 0.470588 +vt 0.136986 0.448529 +vt 0.118721 0.433824 +vt 0.100457 0.441176 +vt 0.118721 0.411765 +vt 0.118721 0.397059 +vt 0.100457 0.382353 +vt 0.118721 0.389706 +vt 0.136986 0.426471 +vt 0.136986 0.455882 +vt 0.178082 0.382353 +vt 0.200913 0.389706 +vt 0.178082 0.389706 +vt 0.136986 0.441176 +vt 0.118721 0.441176 +vt 0.136986 0.397059 +vt 0.159817 0.404412 +vt 0.136986 0.404412 +vt 0.136986 0.463235 +vt 0.118721 0.470588 +vt 0.136986 0.411765 +vt 0.136986 0.419118 +vt 0.159817 0.455882 +vt 0.159817 0.426471 +vt 0.136986 0.433824 +vt 0.159817 0.433824 +vt 0.159817 0.419118 +vt 0.159817 0.463235 +vt 0.136986 0.470588 +vt 0.159817 0.397059 +vt 0.159817 0.411765 +vt 0.159817 0.470588 +vt 0.118721 0.382353 +vt 0.178082 0.426471 +vt 0.178082 0.433824 +vt 0.159817 0.382353 +vt 0.178082 0.419118 +vt 0.178082 0.448529 +vt 0.200913 0.426471 +vt 0.200913 0.448529 +vt 0.178082 0.470588 +vt 0.178082 0.397059 +vt 0.200913 0.419118 +vt 0.219178 0.463235 +vt 0.200913 0.470588 +vt 0.219178 0.426471 +vt 0.219178 0.441176 +vt 0.219178 0.448529 +vt 0.200913 0.382353 +vt 0.219178 0.389706 +vt 0.219178 0.397059 +vt 0.219178 0.411765 +vt 0.219178 0.419118 +vt 0.205479 0.470588 +vt 0.109589 0.139706 +vt 0.073059 0.139706 +vt 0.136986 0.742647 +vt 0.150685 0.558824 +vt 0.164384 0.470588 +vt 0.452055 0.669118 +vt 0.470320 0.654412 +vt 0.470320 0.676471 +vt 0.488584 0.389706 +vt 0.470320 0.419118 +vt 0.470320 0.397059 +vt 0.561644 0.735294 +vt 0.579909 0.705882 +vt 0.579909 0.727941 +vt 0.598173 0.713235 +vt 0.579909 0.727941 +vt 0.579909 0.705882 +vt 0.470320 0.573529 +vt 0.452055 0.558824 +vt 0.470320 0.551471 +vt 0.579909 0.985294 +vt 0.561644 0.955882 +vt 0.579909 0.963235 +vt 0.561644 0.580882 +vt 0.543379 0.536765 +vt 0.561644 0.544118 +vt 0.525114 0.485294 +vt 0.506849 0.433824 +vt 0.525114 0.433824 +vt 0.525114 0.845588 +vt 0.561644 0.889706 +vt 0.543379 0.845588 +vt 0.561644 0.852941 +vt 0.506849 0.691176 +vt 0.488584 0.735294 +vt 0.488584 0.698529 +vt 0.470320 0.470588 +vt 0.452055 0.455882 +vt 0.470320 0.448529 +vt 0.543379 0.897059 +vt 0.525114 0.845588 +vt 0.543379 0.845588 +vt 0.579909 0.448529 +vt 0.561644 0.477941 +vt 0.561644 0.441176 +vt 0.506849 0.588235 +vt 0.488584 0.632353 +vt 0.488584 0.595588 +vt 0.579909 0.625000 +vt 0.598173 0.610294 +vt 0.598173 0.617647 +vt 0.506849 0.794118 +vt 0.525114 0.794118 +vt 0.506849 0.536765 +vt 0.488584 0.492647 +vt 0.506849 0.485294 +vt 0.561644 0.492647 +vt 0.543379 0.485294 +vt 0.525114 0.742647 +vt 0.506849 0.742647 +vt 0.543379 0.588235 +vt 0.525114 0.536765 +vt 0.488584 0.801471 +vt 0.470320 0.830882 +vt 0.470320 0.808824 +vt 0.506849 0.691176 +vt 0.488584 0.647059 +vt 0.506849 0.639706 +vt 0.506849 0.433824 +vt 0.525114 0.382353 +vt 0.525114 0.433824 +vt 0.543379 0.742647 +vt 0.525114 0.691176 +vt 0.543379 0.691176 +vt 0.506849 0.536765 +vt 0.488584 0.492647 +vt 0.506849 0.485294 +vt 0.506849 0.897059 +vt 0.488584 0.852941 +vt 0.506849 0.845588 +vt 0.579909 0.470588 +vt 0.598173 0.455882 +vt 0.598173 0.463235 +vt 0.470320 0.727941 +vt 0.452055 0.713235 +vt 0.470320 0.705882 +vt 0.579909 0.551471 +vt 0.561644 0.580882 +vt 0.561644 0.544118 +vt 0.488584 0.735294 +vt 0.488584 0.698529 +vt 0.525114 1.000000 +vt 0.543379 0.948529 +vt 0.543379 1.000000 +vt 0.525114 0.897059 +vt 0.543379 0.897059 +vt 0.561644 0.750000 +vt 0.543379 0.794118 +vt 0.579909 0.757353 +vt 0.561644 0.786765 +vt 0.470320 0.933824 +vt 0.452055 0.919118 +vt 0.470320 0.911765 +vt 0.452055 0.617647 +vt 0.470320 0.602941 +vt 0.470320 0.625000 +vt 0.470320 0.882353 +vt 0.470320 0.860294 +vt 0.561644 0.750000 +vt 0.543379 0.794118 +vt 0.543379 0.742647 +vt 0.525114 0.639706 +vt 0.506849 0.588235 +vt 0.525114 0.588235 +vt 0.525114 0.536765 +vt 0.488584 0.477941 +vt 0.470320 0.448529 +vt 0.488584 0.441176 +vt 0.579909 0.830882 +vt 0.561644 0.801471 +vt 0.579909 0.808824 +vt 0.525114 0.485294 +vt 0.452055 0.823529 +vt 0.488584 0.580882 +vt 0.488584 0.544118 +vt 0.488584 0.838235 +vt 0.506849 0.794118 +vt 0.470320 0.573529 +vt 0.452055 0.558824 +vt 0.470320 0.551471 +vt 0.579909 0.470588 +vt 0.598173 0.455882 +vt 0.598173 0.463235 +vt 0.561644 0.441176 +vt 0.579909 0.448529 +vt 0.579909 0.522059 +vt 0.561644 0.492647 +vt 0.579909 0.500000 +vt 0.598173 0.514706 +vt 0.598173 0.507353 +vt 0.470320 0.882353 +vt 0.452055 0.867647 +vt 0.470320 0.860294 +vt 0.561644 0.426471 +vt 0.543379 0.382353 +vt 0.561644 0.389706 +vt 0.488584 0.477941 +vt 0.488584 0.441176 +vt 0.470320 0.625000 +vt 0.452055 0.610294 +vt 0.470320 0.602941 +vt 0.525114 0.742647 +vt 0.506849 0.742647 +vt 0.543379 0.536765 +vt 0.598173 0.772059 +vt 0.579909 0.757353 +vt 0.598173 0.764706 +vt 0.598173 0.617647 +vt 0.579909 0.602941 +vt 0.598173 0.610294 +vt 0.579909 0.654412 +vt 0.561644 0.683824 +vt 0.561644 0.647059 +vt 0.561644 0.801471 +vt 0.525114 0.897059 +vt 0.506849 0.948529 +vt 0.525114 1.000000 +vt 0.525114 0.948529 +vt 0.543379 0.485294 +vt 0.488584 0.580882 +vt 0.488584 0.544118 +vt 0.452055 0.977941 +vt 0.470320 0.963235 +vt 0.470320 0.985294 +vt 0.579909 0.830882 +vt 0.579909 0.808824 +vt 0.506849 0.948529 +vt 0.525114 0.948529 +vt 0.525114 0.639706 +vt 0.109599 0.947655 +vt 0.109598 0.918189 +vt 0.598173 0.977941 +vt 0.598173 0.970588 +vt 0.598173 0.977941 +vt 0.579909 0.963235 +vt 0.598173 0.970588 +vt 0.506849 0.382353 +vt 0.561644 0.647059 +vt 0.543379 0.639706 +vt 0.525114 0.382353 +vt 0.543379 0.433824 +vt 0.488584 0.955882 +vt 0.488584 0.992647 +vt 0.561644 0.889706 +vt 0.561644 0.852941 +vt 0.470320 0.419118 +vt 0.452055 0.404412 +vt 0.470320 0.397059 +vt 0.470320 0.933824 +vt 0.452055 0.919118 +vt 0.470320 0.911765 +vt 0.488584 0.529412 +vt 0.470320 0.500000 +vt 0.543379 0.948529 +vt 0.525114 0.691176 +vt 0.561644 0.529412 +vt 0.579909 0.500000 +vt 0.579909 0.522059 +vt 0.543379 1.000000 +vt 0.598173 0.867647 +vt 0.579909 0.882353 +vt 0.579909 0.860294 +vt 0.561644 0.786765 +vt 0.598173 0.669118 +vt 0.579909 0.654412 +vt 0.598173 0.661765 +vt 0.397260 0.779412 +vt 0.401826 0.573529 +vt 0.401826 0.779412 +vt 0.109589 0.110294 +vt 0.073059 0.117647 +vt 0.073059 0.110294 +vt 0.073059 0.147059 +vt 0.328767 0.705882 +vt 0.310502 0.705882 +vt 0.073059 0.125000 +vt 0.228310 0.441176 +vt 0.228310 0.433824 +vt 0.228310 0.441176 +vt 0.228310 0.433824 +vt 0.228310 0.441176 +vt 0.228310 0.426471 +vt 0.228310 0.419118 +vt 0.228310 0.463235 +vt 0.228310 0.426471 +vt 0.228310 0.441176 +vt 0.228310 0.433824 +vt 0.228310 0.426471 +vt 0.228310 0.419118 +vt 0.228310 0.455882 +vt 0.228310 0.448529 +vt 0.228310 0.455882 +vt 0.228310 0.455882 +vt 0.228310 0.419118 +vt 0.228310 0.426471 +vt 0.228310 0.433824 +vt 0.228310 0.455882 +vt 0.228310 0.426471 +vt 0.228310 0.455882 +vt 0.228310 0.448529 +vt 0.228310 0.448529 +vt 0.228310 0.448529 +vt 0.228310 0.411765 +vt 0.228310 0.433824 +vt 0.228310 0.441176 +vt 0.228310 0.426471 +vt 0.228310 0.441176 +vt 0.228310 0.426471 +vt 0.228310 0.455882 +vt 0.228310 0.448529 +vt 0.406393 0.779412 +vt 0.136986 0.595588 +vt 0.328767 0.860294 +vt 0.310502 0.838235 +vt 0.328767 0.838235 +vt 0.310502 0.816176 +vt 0.369863 0.500000 +vt 0.374429 0.360294 +vt 0.406393 1.000000 +vt 0.406393 0.573529 +vt 0.328767 0.683824 +vt 0.310502 0.683824 +vt 0.433790 0.360294 +vt 0.365297 0.360294 +vt 0.420091 0.360294 +vt 0.410959 0.382353 +vt 0.420091 0.360294 +vt 0.397260 0.382353 +vt 0.406393 0.360294 +vt 0.351598 0.360294 +vt 0.397260 0.382353 +vt 0.406393 0.360294 +vt 0.356164 0.500000 +vt 0.356164 0.382353 +vt -0.000000 0.470588 +vt 0.073059 0.514706 +vt -0.000000 0.514706 +vt -0.000000 0.602941 +vt 0.073059 0.647059 +vt 0.392694 0.779412 +vt 0.392694 0.573529 +vt 0.219178 0.558824 +vt 0.232877 0.470588 +vt 0.232877 0.558824 +vt -0.000000 0.867647 +vt 0.073059 0.911765 +vt -0.000000 0.911765 +vt 0.210046 0.816176 +vt 0.283105 0.816176 +vt 0.091317 0.781697 +vt 0.109598 0.698051 +vt 0.109598 0.727517 +vt 0.073059 0.867647 +vt 0.091317 0.825917 +vt 0.091317 0.865639 +vt 0.073059 0.558824 +vt 0.091317 0.600323 +vt 0.073059 0.602941 +vt 0.091317 0.914355 +vt 0.073059 0.955882 +vt 0.091317 0.737478 +vt 0.091317 0.958574 +vt 0.073059 1.000000 +vt 0.091317 0.604820 +vt 0.091317 0.870136 +vt 0.091317 0.472163 +vt 0.073059 0.470588 +vt 0.525114 0.588235 +vt 0.091317 0.649040 +vt 0.109598 0.609995 +vt 0.109598 0.639461 +vt 0.091317 0.954077 +vt 0.228310 0.455882 +vt 0.109598 0.507378 +vt 0.091317 0.511885 +vt 0.109598 0.654023 +vt 0.091317 0.688762 +vt 0.109598 0.565968 +vt 0.091317 0.560601 +vt 0.109599 0.830134 +vt 0.109598 0.771545 +vt 0.091317 0.777200 +vt 0.091317 0.644543 +vt 0.109599 0.903628 +vt 0.091317 0.909858 +vt 0.109598 0.991683 +vt 0.091317 0.998296 +vt 0.109599 0.815572 +vt 0.091317 0.821420 +vt 0.397260 0.573529 +vt 0.109598 0.551406 +vt 0.109598 0.742078 +vt 0.109598 0.683489 +vt 0.109599 0.874162 +vt 0.109598 0.595434 +vt 0.109598 0.786106 +vt 0.109599 0.859600 +vt 0.109598 0.477913 +vt 0.415525 0.779412 +vt 0.420091 0.573529 +vt 0.420091 0.779412 +vt 0.406393 0.573529 +vt 0.410959 0.779412 +vt 0.136986 0.926471 +vt 0.410959 0.573529 +vt 0.328767 0.816176 +vt 0.136986 0.816176 +vt 0.410959 0.500000 +vt 0.210046 0.669118 +vt 0.283105 0.632353 +vt 0.136986 0.705882 +vt 0.342466 0.382353 +vt 0.342466 0.500000 +vt -0.000000 0.558824 +vt 0.328767 0.750000 +vt -0.000000 0.955882 +vt -0.000000 1.000000 +vt 0.410959 1.000000 +vt 0.410959 0.573529 +vt 0.397260 0.500000 +vt 0.383562 1.000000 +vt 0.378995 0.573529 +vt 0.383562 0.573529 +vt 0.388128 0.573529 +vt 0.378995 0.779412 +vt 0.383562 0.573529 +vt 0.219178 0.470588 +vt 0.109589 0.125000 +vt 0.109589 0.117647 +vt 0.392694 1.000000 +vt 0.429224 1.000000 +vt 0.424658 0.573529 +vt 0.429224 0.573529 +vt 0.420091 1.000000 +vt 0.415525 0.573529 +vt 0.420091 0.573529 +vt 0.424658 1.000000 +vt 0.415525 1.000000 +vt 0.383562 0.500000 +vt 0.164384 0.558824 +vt 0.164384 0.470588 +vt 0.283105 1.000000 +vt 0.210046 0.963235 +vt 0.210046 1.000000 +vt 0.356164 0.500000 +vt 0.447489 0.360294 +vt 0.452055 0.382353 +vt 0.442922 0.360294 +vt 0.388128 0.360294 +vt 0.429224 0.360294 +vt 0.365297 0.360294 +vt 0.351598 0.360294 +vt 0.388128 0.360294 +vt 0.392694 0.360294 +vt 0.228310 0.441176 +vt 0.228310 0.448529 +vt 0.228310 0.411765 +vt 0.228310 0.411765 +vt 0.228310 0.463235 +vt 0.228310 0.470588 +vt 0.228310 0.433824 +vt 0.228310 0.411765 +vt 0.228310 0.411765 +vt 0.228310 0.448529 +vt 0.228310 0.455882 +vt 0.228310 0.441176 +vt 0.228310 0.419118 +vt 0.228310 0.419118 +vt 0.228310 0.463235 +vt 0.228310 0.448529 +vt 0.228310 0.426471 +vt 0.228310 0.419118 +vt 0.228310 0.433824 +vt 0.228310 0.411765 +vt 0.228310 0.463235 +vt 0.228310 0.463235 +vt 0.228310 0.470588 +vt 0.228310 0.470588 +vt 0.228310 0.419118 +vt 0.228310 0.463235 +vt 0.228310 0.470588 +vt 0.228310 0.470588 +vt 0.228310 0.463235 +vt 0.452055 0.669118 +vt 0.470320 0.654412 +vt 0.470320 0.676471 +vt 0.488584 0.801471 +vt 0.579909 0.551471 +vt 0.543379 0.691176 +vt 0.525114 0.794118 +vt 0.561644 0.735294 +vt 0.561644 0.632353 +vt 0.543379 0.588235 +vt 0.561644 0.595588 +vt 0.470320 0.830882 +vt 0.470320 0.808824 +vt 0.598173 0.404412 +vt 0.579909 0.419118 +vt 0.579909 0.397059 +vt 0.488584 0.632353 +vt 0.488584 0.595588 +vt 0.543379 0.433824 +vt 0.561644 0.698529 +vt 0.488584 0.904412 +vt 0.452055 0.514706 +vt 0.470320 0.522059 +vt 0.598173 0.558824 +vt 0.579909 0.573529 +vt 0.561644 0.389706 +vt 0.561644 0.426471 +vt 0.543379 0.382353 +vt 0.452055 0.514706 +vt 0.470320 0.500000 +vt 0.470320 0.522059 +vt 0.598173 0.823529 +vt 0.598173 0.816176 +vt 0.579909 0.419118 +vt 0.579909 0.397059 +vt 0.488584 0.389706 +vt 0.598173 0.514706 +vt 0.598173 0.507353 +vt 0.598173 0.713235 +vt 0.488584 0.750000 +vt 0.561644 0.955882 +vt 0.452055 0.823529 +vt 0.452055 0.816176 +vt 0.598173 0.558824 +vt 0.579909 0.573529 +vt 0.561644 0.632353 +vt 0.561644 0.595588 +vt 0.561644 0.904412 +vt 0.470320 0.757353 +vt 0.452055 0.772059 +vt 0.452055 0.764706 +vt 0.598173 0.919118 +vt 0.579909 0.933824 +vt 0.579909 0.911765 +vt 0.561644 0.941176 +vt 0.561644 0.992647 +vt 0.488584 0.904412 +vt 0.598173 0.669118 +vt 0.598173 0.661765 +vt 0.579909 0.676471 +vt 0.579909 0.625000 +vt 0.598173 0.823529 +vt 0.598173 0.816176 +vt 0.452055 0.720588 +vt 0.470320 0.705882 +vt 0.470320 0.727941 +vt 0.488584 0.889706 +vt 0.488584 0.992647 +vt 0.470320 0.963235 +vt 0.488584 0.955882 +vt 0.598173 0.919118 +vt 0.579909 0.933824 +vt 0.579909 0.911765 +vt 0.561644 0.698529 +vt 0.506849 0.382353 +vt 0.598173 0.772059 +vt 0.598173 0.764706 +vt 0.452055 0.772059 +vt 0.470320 0.757353 +vt 0.470320 0.779412 +vt 0.488584 0.683824 +vt 0.506849 1.000000 +vt 0.488584 0.941176 +vt 0.470320 0.470588 +vt 0.452055 0.455882 +vt 0.452055 0.977941 +vt 0.470320 0.985294 +vt 0.579909 0.602941 +vt 0.579909 0.860294 +vt 0.579909 0.882353 +vt 0.506849 0.639706 +vt 0.506849 1.000000 +vt 0.488584 0.750000 +vt 0.488584 0.786765 +vt 0.598173 0.404412 +vt 0.598173 0.411765 +vt 0.488584 0.683824 +vt 0.488584 0.647059 +vt 0.543379 0.639706 +vt 0.561644 0.477941 +vt 0.561644 0.904412 +vt 0.452055 0.404412 +vt 0.561644 0.941176 +vt 0.452055 0.867647 +vt 0.488584 0.529412 +vt 0.488584 0.786765 +vt 0.598173 0.867647 +vt 0.598173 0.875000 +vt 0.246575 0.470588 +vt 0.246575 0.558824 +vt 0.178082 0.558824 +vt 0.136986 0.558824 +vt 0.150685 0.470588 +vt 0.433790 1.000000 +vt 0.433790 0.573529 +vt 0.424658 0.500000 +vt 0.210046 0.852941 +vt 0.452055 0.500000 +vt 0.136986 1.000000 +vt 0.210046 0.779412 +vt 0.073059 0.169118 +vt 0.401826 1.000000 +vt 0.328767 0.794118 +vt 0.378995 0.360294 +vt 0.283105 0.558824 +vt 0.073059 0.169118 +vt 0.136986 0.470588 +vt 0.433790 0.573529 +vt 0.109589 0.147059 +vt 0.091317 0.693259 +vt 0.219178 0.470588 +vt 0.219178 0.382353 +vt 0.136986 0.779412 +vt 0.452055 0.661765 +vt 0.488584 0.426471 +vt 0.598173 0.720588 +vt 0.452055 0.566176 +vt 0.561644 0.992647 +vt 0.452055 0.463235 +vt 0.488584 0.889706 +vt 0.452055 0.720588 +vt 0.579909 0.779412 +vt 0.452055 0.926471 +vt 0.452055 0.610294 +vt 0.561644 0.838235 +vt 0.452055 0.816176 +vt 0.452055 0.566176 +vt 0.561644 0.529412 +vt 0.452055 0.875000 +vt 0.452055 0.617647 +vt 0.579909 0.779412 +vt 0.579909 0.676471 +vt 0.561644 0.838235 +vt 0.452055 0.970588 +vt 0.579909 0.985294 +vt 0.561644 0.683824 +vt 0.452055 0.411765 +vt 0.452055 0.926471 +vt 0.598173 0.875000 +vt 0.109589 0.147059 +vt 0.228310 0.433824 +vt 0.228310 0.470588 +vt 0.228310 0.419118 +vt 0.228310 0.411765 +vt 0.228310 0.463235 +vt 0.310502 0.860294 +vt 0.378995 0.360294 +vt 0.429224 0.360294 +vt 0.360731 0.360294 +vt 0.415525 0.360294 +vt 0.415525 0.360294 +vt 0.401826 0.360294 +vt 0.347032 0.360294 +vt 0.401826 0.360294 +vt 0.109599 0.962217 +vt 0.415525 0.573529 +vt 0.210046 0.632353 +vt 0.136986 0.558824 +vt 0.378995 1.000000 +vt 0.388128 1.000000 +vt 0.378995 0.573529 +vt 0.283105 0.963235 +vt 0.442922 0.360294 +vt 0.447489 0.360294 +vt 0.392694 0.360294 +vt 0.433790 0.360294 +vt 0.360731 0.360294 +vt 0.347032 0.360294 +vt 0.228310 0.411765 +vt 0.228310 0.470588 +vt 0.228310 0.470588 +vt 0.452055 0.661765 +vt 0.488584 0.838235 +vt 0.598173 0.411765 +vt 0.452055 0.507353 +vt 0.598173 0.566176 +vt 0.452055 0.507353 +vt 0.488584 0.426471 +vt 0.598173 0.720588 +vt 0.598173 0.566176 +vt 0.470320 0.779412 +vt 0.598173 0.926471 +vt 0.488584 0.941176 +vt 0.452055 0.713235 +vt 0.598173 0.926471 +vt 0.452055 0.764706 +vt 0.452055 0.463235 +vt 0.452055 0.970588 +vt 0.452055 0.411765 +vt 0.452055 0.875000 +vt 0.136986 0.470588 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0823 0.0000 0.9966 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -0.9239 0.3827 +vn 0.0000 0.3827 -0.9239 +vn 0.0000 0.0000 1.0000 +vn -0.9966 0.0000 -0.0823 +vn 0.0000 -0.9239 -0.3827 +vn 0.9966 0.0000 0.0823 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.9239 0.3827 +vn 0.8660 0.5000 0.0000 +vn 0.0000 0.3827 0.9239 +vn -0.5000 -0.8660 0.0000 +vn 0.0000 0.6247 0.7809 +vn 0.0000 0.9239 -0.3827 +vn 0.0000 -0.3827 0.9239 +vn 0.0000 0.6247 -0.7809 +vn 0.9966 0.0000 -0.0823 +vn 0.0000 0.7071 0.7071 +vn 0.8334 0.5053 0.2237 +vn 0.5710 0.7541 0.3245 +vn 0.9330 0.1768 0.3133 +vn -0.8660 -0.5000 0.0000 +vn -0.5053 0.8334 0.2237 +vn -0.7541 0.5710 0.3245 +vn -0.1768 0.9330 0.3133 +vn -0.0823 0.0000 -0.9966 +vn -0.6696 -0.7384 0.0797 +vn -0.4653 -0.7468 0.4752 +vn -0.2070 -0.9701 0.1267 +vn 0.0000 -0.3827 -0.9239 +vn 0.0823 0.0000 -0.9966 +vn 0.6696 0.7384 0.0797 +vn 0.4654 0.7467 0.4752 +vn 0.2123 0.9692 0.1246 +vn -0.9966 0.0000 0.0823 +vn 0.0000 -0.7071 0.7071 +vn -0.8660 0.5000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.0823 -0.0000 0.9966 +vn 0.0582 0.7071 -0.7047 +vn 0.5053 -0.8334 0.2237 +vn 0.7487 -0.5832 0.3152 +vn 0.1768 -0.9330 0.3133 +vn -0.5000 0.8660 0.0000 +vn -0.7384 0.6696 0.0797 +vn -0.7395 0.4623 0.4894 +vn -0.9690 0.2139 0.1240 +vn 0.5000 -0.8660 0.0000 +vn -0.0582 0.7071 0.7047 +vn 0.5000 0.8660 0.0000 +vn 0.0000 -0.9885 0.1514 +vn -0.0582 0.7071 -0.7047 +vn 0.0000 0.9894 0.1453 +vn 0.0582 0.7071 0.7047 +vn -0.8334 -0.5053 0.2237 +vn -0.5710 -0.7541 0.3245 +vn -0.9330 -0.1768 0.3133 +vn 0.7369 -0.6712 0.0805 +vn 0.7395 -0.4623 0.4894 +vn 0.9700 -0.2078 0.1263 +vn 0.7388 0.6692 0.0795 +vn 0.9690 0.2139 0.1240 +vn 0.7396 0.4621 0.4894 +vn -0.6692 0.7388 0.0795 +vn -0.2139 0.9690 0.1240 +vn -0.4621 0.7396 0.4894 +vn -0.5053 -0.8333 0.2243 +vn -0.1698 -0.9324 0.3191 +vn -0.7488 -0.5831 0.3151 +vn 0.5053 0.8333 0.2243 +vn 0.1698 0.9324 0.3191 +vn 0.7489 0.5831 0.3150 +vn 0.6692 -0.7388 0.0795 +vn 0.2070 -0.9701 0.1267 +vn 0.4652 -0.7469 0.4752 +vn -0.8333 0.5053 0.2243 +vn -0.9324 0.1698 0.3191 +vn -0.5710 0.7542 0.3244 +vn -0.7388 -0.6692 0.0795 +vn -0.9701 -0.2070 0.1267 +vn -0.7395 -0.4622 0.4894 +vn 0.8327 -0.5052 0.2265 +vn 0.9330 -0.1768 0.3133 +vn 0.5710 -0.7542 0.3244 +vn 0.6626 0.3491 -0.6626 +vn 0.7940 -0.6079 0.0000 +vn 0.5355 -0.6530 -0.5356 +vn 0.0001 -0.6302 -0.7764 +vn -0.0000 0.3491 -0.9371 +vn -0.0701 -0.9407 0.3320 +vn 0.1036 -0.6226 0.7756 +vn -0.2196 -0.8584 0.4637 +vn 0.6335 0.6194 0.4637 +vn 0.5257 0.8503 0.0243 +vn 0.5117 0.8588 0.0260 +vn -0.6581 -0.7437 0.1176 +vn 0.0000 -0.6185 0.7858 +vn -0.7848 -0.5347 0.3134 +vn -0.9744 -0.2049 0.0929 +vn -0.7572 -0.0000 0.6532 +vn -0.9740 0.2072 0.0919 +vn -0.9366 -0.0976 0.3366 +vn -0.7449 0.6569 0.1169 +vn 0.0003 0.7919 0.6107 +vn -0.7071 0.7071 0.0000 +vn -0.5490 0.5491 0.6302 +vn 0.7848 0.5347 0.3134 +vn 0.9744 0.2049 0.0929 +vn 0.6537 0.7479 0.1152 +vn -0.0000 0.6185 0.7858 +vn 0.2037 0.9746 0.0934 +vn -0.0000 0.9848 -0.1735 +vn 0.7431 0.6587 0.1179 +vn 0.7572 -0.0000 0.6532 +vn 0.7071 0.7071 0.0000 +vn 0.7764 -0.0000 -0.6302 +vn 0.7071 -0.7071 -0.0000 +vn 0.5490 -0.5490 -0.6302 +vn 0.7764 -0.0003 0.6302 +vn 0.5374 0.5372 0.6501 +vn -0.8117 0.4687 0.3485 +vn -0.9582 -0.0224 0.2851 +vn -0.9530 -0.0271 0.3018 +vn 0.6217 0.0001 -0.7833 +vn -0.6079 -0.5615 -0.5615 +vn -0.6443 -0.0000 -0.7648 +vn 0.5599 0.5600 -0.6107 +vn 0.6079 -0.7940 0.0000 +vn -0.6079 -0.5615 0.5615 +vn -0.6530 -0.7574 0.0000 +vn 0.0000 -0.7764 -0.6302 +vn -0.6388 -0.0001 0.7694 +vn 0.6302 0.5490 0.5490 +vn -0.6302 0.5490 0.5490 +vn 0.6587 -0.7431 0.1179 +vn -0.9371 0.3491 -0.0000 +vn -0.5489 -0.6302 0.5491 +vn -0.6626 0.3491 0.6626 +vn -0.3786 -0.6557 0.6532 +vn 0.5347 0.7848 0.3134 +vn -0.6377 -0.0000 0.7703 +vn -0.7465 -0.6552 0.1160 +vn -0.2049 0.9744 0.0929 +vn -0.8529 0.4924 -0.1735 +vn 0.6217 0.0001 0.7833 +vn 0.6530 -0.5355 0.5356 +vn 0.0000 -0.6079 -0.7940 +vn -0.3191 -0.5522 -0.7703 +vn -0.5379 -0.3106 -0.7837 +vn 0.6530 -0.5355 -0.5356 +vn 0.3318 0.5750 0.7479 +vn 0.6712 0.3876 0.6319 +vn 0.5281 0.3047 0.7926 +vn 0.9334 0.3588 0.0001 +vn -0.2713 0.7906 -0.5490 +vn -0.1604 0.9871 -0.0000 +vn 0.6516 -0.3762 0.6587 +vn 0.7491 -0.6525 0.1145 +vn 0.0000 0.8880 0.4599 +vn -0.0000 0.3491 0.9371 +vn 0.5347 -0.7848 0.3134 +vn 0.2049 -0.9744 0.0929 +vn 0.6163 0.5568 0.5569 +vn -0.6302 0.7764 -0.0000 +vn -0.6388 0.5441 0.5439 +vn 0.6217 -0.7833 -0.0001 +vn -0.6302 -0.5490 -0.5490 +vn 0.6302 -0.5490 -0.5490 +vn 0.5615 -0.6079 0.5615 +vn 0.6626 0.3491 0.6626 +vn -0.6557 0.3786 0.6532 +vn 0.5469 -0.3157 0.7753 +vn -0.2698 0.7905 0.5498 +vn -0.5439 0.3141 0.7782 +vn -0.7071 -0.7071 0.0000 +vn -0.5372 -0.5374 -0.6501 +vn -0.0002 -0.6630 -0.7486 +vn 0.4924 0.8529 -0.1735 +vn 0.6377 -0.0000 0.7703 +vn -0.4924 0.8529 -0.1735 +vn -0.6163 -0.0000 -0.7875 +vn 0.6388 -0.0001 -0.7694 +vn -0.7875 -0.6163 0.0003 +vn -0.5353 -0.6530 0.5358 +vn 0.0000 0.7764 -0.6302 +vn 0.6302 0.7764 0.0000 +vn -0.6217 0.5537 -0.5540 +vn 0.9371 0.3491 -0.0000 +vn 0.3190 -0.5522 -0.7703 +vn 0.5380 -0.3104 -0.7837 +vn 0.0607 -0.0355 0.9975 +vn 0.3828 0.3472 0.8561 +vn 0.2987 0.3980 0.8674 +vn 0.4041 0.7713 -0.4918 +vn 0.1226 0.5158 -0.8479 +vn 0.2003 0.4657 -0.8620 +vn 0.4984 0.8669 0.0108 +vn 0.3615 0.8003 -0.4784 +vn -0.0000 0.8505 -0.5259 +vn -0.8654 -0.4947 0.0803 +vn -0.5127 -0.8585 0.0013 +vn -0.5097 -0.8603 0.0018 +vn -0.0045 -0.9924 -0.1230 +vn 0.4612 -0.8415 -0.2813 +vn 0.4821 -0.8506 -0.2100 +vn -0.1513 0.0876 -0.9846 +vn -0.3011 -0.4083 -0.8617 +vn -0.0582 0.0331 -0.9978 +vn 0.5087 0.6971 0.5053 +vn 0.4591 0.7288 0.5081 +vn 0.5018 0.8648 0.0181 +vn -0.5103 -0.7142 -0.4790 +vn -0.4969 -0.8677 0.0107 +vn -0.4619 -0.7383 -0.4915 +vn -0.3840 -0.3645 -0.8483 +vn -0.3856 0.2226 -0.8954 +vn -0.6254 -0.6534 -0.4265 +vn -0.4959 -0.8682 0.0177 +vn 0.2531 0.8683 -0.4265 +vn 0.9984 -0.0090 -0.0553 +vn 0.8650 0.4845 0.1305 +vn 0.9758 -0.0016 0.2189 +vn -0.0043 0.9968 0.0803 +vn -0.4757 0.8484 0.2323 +vn 0.0099 0.9908 0.1353 +vn -0.5886 -0.2525 -0.7680 +vn -0.4879 -0.8725 0.0260 +vn -0.3475 -0.7900 0.5051 +vn -0.0756 0.6360 -0.7680 +vn 0.1581 -0.0911 0.9832 +vn -0.1081 -0.5055 0.8560 +vn 0.3981 -0.2298 0.8881 +vn 0.8308 0.0797 0.5508 +vn 0.5910 0.2216 0.7756 +vn 0.7796 0.5310 0.3320 +vn 0.1267 0.9469 -0.2954 +vn -0.4728 -0.8811 0.0083 +vn 0.0158 -0.9993 -0.0334 +vn 0.0129 -0.9914 0.1305 +vn -0.0125 0.9989 0.0457 +vn -0.4955 0.8577 0.1371 +vn -0.6720 0.3880 -0.6308 +vn -0.8340 -0.1183 -0.5390 +vn -0.7567 -0.5832 -0.2954 +vn -0.4736 -0.8804 0.0243 +vn -0.3146 0.7814 -0.5390 +vn 0.8383 -0.4840 0.2509 +vn 0.6728 -0.3884 0.6296 +vn 0.0407 0.9927 -0.1137 +vn 0.5267 0.8500 0.0083 +vn 0.2847 -0.4932 -0.8220 +vn 0.7366 -0.4253 -0.5259 +vn 0.4253 -0.7366 -0.5259 +vn -0.4642 0.8626 -0.2012 +vn 0.5070 -0.8602 -0.0553 +vn -0.8393 -0.5316 -0.1137 +vn -0.6375 -0.3681 0.6768 +vn -0.0635 -0.0000 0.9980 +vn -0.7362 -0.0000 0.6768 +vn 0.4893 -0.8442 0.2189 +vn 0.3463 -0.7594 0.5508 +vn 0.9969 0.0077 -0.0781 +vn 0.8556 0.5117 -0.0781 +vn 0.9904 0.0113 -0.1374 +vn 0.8643 -0.4990 -0.0629 +vn -0.9791 -0.0293 -0.2012 +vn -0.8567 -0.5146 0.0355 +vn 0.8733 0.4860 -0.0334 +vn 0.0173 0.9992 0.0355 +vn -0.5059 -0.8626 0.0019 +vn -0.0153 -0.9968 -0.0781 +vn -0.0219 -0.9909 -0.1328 +vn -0.8423 0.4863 -0.2324 +vn -0.9978 -0.0106 0.0653 +vn -0.4834 -0.8754 -0.0010 +vn 0.5164 0.8563 -0.0010 +vn -0.4897 0.8694 0.0653 +vn -0.4729 0.8552 0.2120 +vn -0.8635 0.4985 0.0770 +vn 0.9777 0.0078 -0.2100 +vn 0.5082 0.8612 -0.0023 +vn -0.3979 -0.7642 0.5076 +vn -0.1935 -0.4594 0.8669 +vn -0.9771 -0.0181 0.2120 +vn -0.8488 -0.5148 0.1206 +vn -0.4917 -0.8708 -0.0023 +vn 0.0214 0.9925 0.1206 +vn 0.8404 -0.4852 -0.2415 +vn 0.8192 -0.4730 -0.3244 +vn 0.0269 0.9865 0.1616 +vn -0.4967 -0.8679 -0.0013 +vn 0.5033 0.8641 -0.0013 +vn 0.8472 0.5144 -0.1328 +vn 0.4972 0.8676 0.0011 +vn 0.8405 0.5164 -0.1637 +vn -0.4575 0.8435 0.2814 +vn -0.8395 0.4847 0.2457 +vn 0.9594 0.0214 -0.2813 +vn 0.8572 0.5001 -0.1230 +vn -0.0200 -0.9864 -0.1633 +vn -0.8409 -0.5165 0.1616 +vn -0.9593 -0.0255 0.2814 +vn 0.8118 -0.4687 -0.3484 +vn 0.0272 0.9843 0.1742 +vn -0.8344 0.4818 0.2676 +vn -0.9906 0.0002 0.1371 +vn -0.9726 -0.0123 0.2323 +vn 0.8389 0.5156 -0.1742 +vn 0.8442 0.5105 -0.1633 +vn -0.8389 -0.5157 0.1742 +vn -0.5028 -0.8644 0.0011 +vn -0.4530 0.8389 0.3018 +vn -0.8189 0.4728 0.3253 +vn -0.0271 -0.9843 -0.1742 +vn 0.4530 -0.8389 -0.3018 +vn 0.0212 0.9860 0.1653 +vn 0.8177 -0.4721 -0.3293 +vn 0.9530 0.0271 -0.3018 +vn 0.9582 0.0258 -0.2849 +vn 0.4567 -0.8428 -0.2849 +vn -0.4597 0.8410 0.2851 +vn -0.8433 -0.5114 0.1653 +vn -0.0270 -0.9861 -0.1637 +vn -0.8179 0.4722 0.3288 +vn 0.8342 -0.4816 -0.2687 +vn 0.9725 0.0194 -0.2321 +vn 0.4694 -0.8519 -0.2321 +vn 0.4941 0.8694 0.0019 +vn 0.8550 -0.4936 -0.1593 +vn 0.4902 0.8716 0.0018 +vn -0.8531 -0.5039 0.1353 +vn 0.4854 -0.8634 -0.1374 +vn -0.5047 0.8598 0.0774 +vn -0.8552 0.4937 0.1577 +vn 0.8625 -0.4979 -0.0906 +vn 0.8586 0.5108 -0.0442 +vn 0.4872 0.8733 0.0013 +vn -0.9970 0.0071 0.0774 +vn -0.8713 -0.4886 0.0457 +vn -0.0131 -0.9989 -0.0442 +vn 0.4918 -0.8672 -0.0781 +vn 0.6217 0.7833 -0.0000 +vn -0.6443 0.7648 -0.0001 +vn 0.3762 0.6516 0.6587 +vn 0.5491 -0.5489 0.6302 +vn -0.3362 -0.5823 0.7402 +vn 0.0000 -0.6724 0.7402 +vn 0.0000 -0.0635 0.9980 +vn -0.3362 0.5823 0.7402 +vn 0.0000 0.6724 0.7402 +vn -0.0318 0.0550 -0.9980 +vn 0.0000 -0.6724 -0.7402 +vn 0.3362 -0.5823 -0.7402 +vn -0.5823 -0.3362 0.7402 +vn -0.6724 0.0000 0.7402 +vn 0.0000 0.6724 -0.7402 +vn -0.0318 -0.0550 -0.9980 +vn 0.3362 0.5823 -0.7402 +vn 0.0550 0.0318 -0.9980 +vn 0.7362 0.0000 -0.6768 +vn 0.0635 0.0000 -0.9980 +vn 0.3681 -0.6375 0.6768 +vn -0.0550 -0.0318 -0.9980 +vn -0.7362 -0.0000 -0.6768 +vn -0.0635 0.0000 -0.9980 +vn -0.0000 0.7362 0.6768 +vn -0.0318 0.0550 0.9980 +vn -0.0000 0.0635 0.9980 +vn -0.5823 0.3362 0.7402 +vn -0.6375 -0.3681 -0.6768 +vn -0.3362 0.5823 -0.7402 +vn 0.0550 -0.0318 -0.9980 +vn 0.0318 -0.0550 -0.9980 +vn 0.6375 0.3681 0.6768 +vn 0.0318 0.0550 0.9980 +vn 0.0550 0.0318 0.9980 +vn -0.3362 -0.5823 -0.7402 +vn -0.6375 0.3681 0.6768 +vn 0.7362 -0.0000 0.6768 +vn 0.0550 -0.0318 0.9980 +vn 0.6375 -0.3681 0.6768 +vn 0.6375 -0.3681 -0.6768 +vn -0.3681 0.6375 0.6768 +vn 0.6375 0.3681 -0.6768 +vn -0.0550 0.0318 0.9980 +vn 0.6724 -0.0000 0.7402 +vn 0.5823 -0.3362 0.7402 +vn 0.3681 0.6375 0.6768 +vn -0.3681 0.6375 -0.6768 +vn -0.0000 0.7362 -0.6768 +vn -0.5823 0.3362 -0.7402 +vn 0.3362 -0.5823 0.7402 +vn -0.6724 -0.0000 -0.7402 +vn -0.3681 -0.6375 -0.6768 +vn -0.0000 -0.7362 -0.6768 +vn -0.6375 0.3681 -0.6768 +vn -0.0550 0.0318 -0.9980 +vn 0.3362 0.5823 0.7402 +vn 0.5823 0.3362 0.7402 +vn 0.0318 -0.0550 0.9980 +vn 0.6724 -0.0000 -0.7402 +vn 0.5823 -0.3362 -0.7402 +vn 0.0635 0.0000 0.9980 +vn -0.0000 -0.0635 -0.9980 +vn -0.5823 -0.3362 -0.7402 +vn -0.0000 0.0635 -0.9980 +vn 0.0318 0.0550 -0.9980 +vn -0.3681 -0.6375 0.6768 +vn -0.1846 -0.1066 -0.9770 +vn -0.2847 -0.4932 -0.8220 +vn -0.4932 -0.2847 -0.8220 +vn -0.0000 -0.7362 0.6768 +vn 0.3681 0.6375 -0.6768 +vn 0.3681 -0.6375 -0.6768 +vn -0.0318 -0.0550 0.9980 +vn 0.5823 0.3362 -0.7402 +vn 0.5521 0.3191 -0.7703 +vn 0.3053 0.5289 -0.7919 +vn -0.6217 -0.5538 0.5539 +vn -0.6443 -0.7648 -0.0001 +vn -0.6217 0.5539 -0.5538 +vn 0.2688 -0.7906 0.5502 +vn -0.8210 -0.1589 0.5483 +vn 0.9366 -0.0976 0.3366 +vn -0.6443 0.0001 0.7648 +vn 0.2422 0.6861 0.6861 +vn 0.8133 0.5819 -0.0000 +vn 0.2445 0.9696 -0.0000 +vn 0.2436 0.9699 0.0000 +vn 0.8133 0.4115 0.4115 +vn 0.8098 0.5868 0.0000 +vn 0.8153 0.4094 0.4094 +vn -0.7842 -0.4388 0.4388 +vn 0.0707 0.0000 0.9975 +vn 0.0442 -0.7064 0.7064 +vn -0.7823 -0.6228 -0.0000 +vn 0.0523 -0.7061 -0.7062 +vn -0.7834 -0.4395 -0.4395 +vn 0.2445 0.6856 0.6856 +vn 0.8133 0.0000 0.5819 +vn -0.7824 0.4404 0.4404 +vn 0.0637 0.9980 0.0000 +vn 0.0636 0.7057 0.7057 +vn 0.2422 -0.6861 0.6861 +vn 0.8168 0.0000 0.5769 +vn 0.2454 0.0000 0.9694 +vn 0.2445 -0.9696 0.0000 +vn 0.8133 -0.4115 0.4115 +vn 0.2445 -0.6857 0.6856 +vn -0.7824 0.4404 -0.4404 +vn 0.0757 0.0000 -0.9971 +vn 0.0636 0.7057 -0.7057 +vn -0.7824 -0.4404 -0.4404 +vn -0.7794 0.0000 -0.6266 +vn 0.2445 0.6856 -0.6857 +vn 0.8154 -0.0000 -0.5789 +vn 0.2460 -0.0000 -0.9693 +vn 0.0687 -0.0000 -0.9976 +vn -0.7807 0.4419 -0.4419 +vn -0.7811 -0.0000 -0.6244 +vn 0.2436 0.0000 0.9699 +vn 0.8112 -0.4135 0.4135 +vn 0.8097 -0.0000 0.5868 +vn -0.7806 0.6250 0.0000 +vn 0.0686 0.7055 0.7054 +vn -0.7811 0.4415 0.4415 +vn 0.8133 -0.0000 -0.5819 +vn 0.2421 -0.6861 -0.6861 +vn 0.2445 -0.0000 -0.9696 +vn -0.7823 0.0000 0.6228 +vn 0.0637 0.0000 0.9980 +vn 0.2430 -0.6859 -0.6859 +vn 0.2460 0.6854 0.6854 +vn 0.2430 0.9700 -0.0000 +vn 0.8168 0.4079 -0.4080 +vn 0.2454 0.6855 -0.6855 +vn 0.8133 0.4115 -0.4115 +vn 0.8189 0.4058 -0.4058 +vn 0.2469 0.6852 -0.6852 +vn -0.7831 -0.4397 0.4397 +vn 0.0637 -0.9980 -0.0000 +vn -0.7832 0.6218 -0.0000 +vn 0.0523 0.7061 0.7062 +vn -0.7834 0.4395 0.4395 +vn 0.0553 0.9985 -0.0000 +vn 0.8190 0.0000 0.5739 +vn 0.2468 0.0000 0.9691 +vn 0.0524 0.9986 -0.0000 +vn -0.7823 0.4404 0.4404 +vn -0.7834 0.6215 -0.0000 +vn 0.0757 0.0000 0.9971 +vn -0.7793 0.0000 0.6266 +vn 0.0706 -0.0000 -0.9975 +vn -0.7806 -0.0000 -0.6250 +vn 0.0523 0.7062 -0.7061 +vn -0.7834 0.4395 -0.4395 +vn -0.0000 0.6377 -0.7703 +vn 0.3746 -0.6485 0.6626 +vn 0.1559 -0.9878 0.0000 +vn -0.8191 -0.1625 -0.5502 +vn 0.2728 -0.7906 -0.5482 +vn -0.5457 0.3152 -0.7764 +vn 0.0000 -0.6079 0.7940 +vn -0.0000 0.8880 -0.4599 +vn -0.0000 0.7571 0.6533 +vn 0.0002 0.6377 0.7703 +vn -0.9350 -0.3546 -0.0000 +vn 0.3283 0.8857 -0.3283 +vn -0.6626 0.3491 -0.6626 +vn 0.0000 0.8863 -0.4631 +vn 0.3275 0.8863 0.3275 +vn 0.3283 0.8857 0.3283 +vn -0.3275 0.8863 -0.3275 +vn -0.6537 0.7479 0.1152 +vn -0.5539 -0.6217 -0.5538 +vn 0.4924 -0.8529 -0.1735 +vn 0.8529 0.4924 -0.1735 +vn 0.6475 0.0000 -0.7621 +vn -0.7764 0.0002 0.6302 +vn -0.5490 -0.5490 0.6302 +vn -0.8529 -0.4924 -0.1735 +vn -0.5347 0.7848 0.3134 +vn -0.4253 0.7366 -0.5259 +vn 0.2847 0.4932 -0.8220 +vn 0.0000 0.5695 -0.8220 +vn -0.9848 -0.0000 -0.1735 +vn -0.7366 0.4253 -0.5259 +vn -0.8505 -0.0000 -0.5259 +vn 0.8529 -0.4924 -0.1735 +vn 0.8505 -0.0000 -0.5259 +vn 0.9848 -0.0000 -0.1735 +vn -0.7366 -0.4253 -0.5259 +vn -0.4924 -0.8529 -0.1735 +vn -0.4253 -0.7366 -0.5259 +vn 0.0000 -0.9848 -0.1735 +vn 0.0000 -0.8505 -0.5259 +vn 0.7366 0.4253 -0.5259 +vn 0.5695 0.0000 -0.8220 +vn 0.1846 0.1066 -0.9770 +vn 0.4932 0.2847 -0.8220 +vn -0.7807 -0.4419 -0.4419 +vn 0.0686 0.0000 -0.9976 +vn 0.4253 0.7366 -0.5259 +vn 0.4932 -0.2847 -0.8220 +vn -0.4932 0.2847 -0.8220 +vn -0.2847 0.4932 -0.8220 +vn 0.0000 -0.5695 -0.8220 +vn 0.1066 -0.1846 -0.9770 +vn -0.1066 0.1846 -0.9770 +vn -0.5695 0.0000 -0.8220 +vn 0.1846 -0.1066 -0.9770 +vn -0.1066 -0.1846 -0.9770 +vn 0.0000 -0.2132 -0.9770 +vn 0.1066 0.1846 -0.9770 +vn -0.0000 0.2132 -0.9770 +vn -0.1846 0.1066 -0.9770 +vn -0.2132 -0.0000 -0.9770 +vn -0.5741 0.3317 -0.7486 +vn -0.6276 -0.0000 -0.7785 +vn -0.3189 0.5523 -0.7703 +vn -0.6557 -0.3786 0.6532 +vn 0.5458 -0.3152 -0.7764 +vn -0.3762 0.6516 0.6587 +vn -0.5440 -0.6388 -0.5440 +vn 0.7572 -0.0002 0.6532 +vn 0.9740 -0.2072 0.0919 +vn 0.6626 0.3826 0.6439 +vn -0.7648 -0.6443 0.0000 +vn 0.8216 0.1581 0.5478 +vn 0.9365 0.0975 0.3367 +vn -0.2072 -0.9740 0.0919 +vn -0.3784 0.6558 0.6532 +vn -0.3189 0.5523 0.7703 +vn 0.7574 -0.6530 -0.0001 +vn 0.3822 -0.6617 0.6451 +vn -0.0000 -0.6377 0.7703 +vn 0.3103 -0.5374 0.7841 +vn 0.5611 -0.3240 0.7618 +vn 0.6163 0.0000 0.7875 +vn 0.6443 -0.5408 0.5408 +vn 0.7571 -0.0000 0.6533 +vn -0.3787 -0.6557 0.6532 +vn -0.5523 -0.3189 0.7703 +vn -0.3189 -0.5523 0.7703 +vn -0.5523 0.3189 0.7703 +vn -0.6556 0.3788 0.6532 +vn 0.5491 -0.6302 -0.5489 +vn -0.7919 0.0000 -0.6107 +vn 0.0000 -0.7572 0.6532 +vn 0.5355 -0.6530 0.5356 +vn 0.4611 0.8874 0.0000 +vn -0.3275 0.8863 0.3275 +vn -0.3283 0.8857 -0.3283 +vn 0.4651 0.8853 0.0000 +vn 0.8112 0.5848 -0.0000 +vn 0.8168 -0.5769 0.0000 +vn 0.2430 -0.6859 0.6859 +vn 0.2454 -0.9694 -0.0000 +vn -0.7831 -0.4398 0.4397 +vn 0.0524 -0.9986 -0.0000 +vn -0.7834 -0.6215 -0.0000 +vn 0.8111 -0.4135 -0.4136 +vn 0.8132 0.4115 0.4115 +vn -0.7823 0.6228 0.0000 +vn 0.0705 0.7053 -0.7054 +vn 0.0706 0.9975 0.0000 +vn -0.7831 -0.4397 0.4398 +vn 0.0553 -0.7060 0.7060 +vn 0.0636 -0.7057 -0.7057 +vn 0.2445 0.0000 0.9696 +vn 0.0637 0.7057 0.7056 +vn -0.7806 0.0000 0.6250 +vn 0.0687 -0.9976 0.0000 +vn -0.7811 -0.6245 0.0000 +vn 0.0706 -0.7053 -0.7054 +vn 0.8112 -0.4135 -0.4135 +vn -0.7842 -0.4388 -0.4388 +vn 0.8133 -0.5819 0.0000 +vn 0.0442 -0.7064 -0.7064 +vn -0.0550 -0.0318 0.9980 +vn -0.0000 -0.7764 0.6302 +vn -0.5372 0.5374 -0.6501 +vn 0.0000 -0.7571 0.6533 +vn -0.0000 -0.6302 0.7764 +vn 0.1093 -0.9316 0.3468 +vn -0.7794 0.5392 0.3191 +vn -0.1093 0.9316 0.3468 +vn -0.1093 -0.9316 0.3467 +vn 0.0000 -0.7651 0.6439 +vn 0.0000 0.7480 0.6637 +vn -0.9316 0.1094 0.3467 +vn 0.3691 0.6390 0.6749 +vn 0.8203 0.1603 -0.5490 +vn 0.6443 0.5408 -0.5408 +vn -0.8626 0.4980 0.0889 +vn 0.0000 0.7697 0.6385 +vn 0.6560 0.0000 0.7548 +vn 0.8076 0.4170 0.4169 +vn 0.8076 -0.4170 0.4169 +vn 0.8076 -0.4170 -0.4170 +vn -0.4651 0.8853 -0.0000 +vn 0.1094 0.9316 0.3467 +vn 0.2132 -0.0000 -0.9770 +vn 0.7794 -0.5392 0.3191 +vn 0.6454 -0.3729 0.6666 +vn -0.5392 -0.7794 0.3191 +s off +f 529/79/18 247/80/18 248/81/18 +f 281/82/19 266/83/19 279/84/19 +f 405/85/20 558/86/20 400/87/20 +f 42/88/21 41/89/21 37/90/21 +f 60/91/18 63/92/18 68/93/18 +f 220/94/22 217/95/22 215/96/22 +f 41/89/21 45/97/21 37/90/21 +f 40/98/18 35/99/18 41/100/18 +f 54/101/21 52/102/21 53/103/21 +f 438/104/23 439/105/23 437/106/23 +f 120/107/24 121/108/24 118/109/24 +f 207/110/25 208/111/25 211/112/25 +f 229/113/26 240/114/26 237/115/26 +f 470/116/27 593/117/27 468/118/27 +f 238/119/28 242/120/28 236/121/28 +f 65/122/25 67/123/25 69/124/25 +f 70/125/29 63/126/29 61/127/29 +f 80/128/19 70/129/19 61/130/19 +f 74/131/22 70/129/22 67/132/22 +f 426/133/30 570/134/30 425/135/30 +f 458/136/30 584/137/30 459/138/30 +f 73/139/19 79/140/19 74/131/19 +f 380/141/31 379/142/31 377/143/31 +f 95/144/32 93/145/32 92/146/32 +f 148/147/30 135/148/30 147/149/30 +f 34/150/19 37/151/19 39/152/19 +f 167/153/33 163/154/33 162/155/33 +f 280/156/34 282/157/34 276/158/34 +f 135/148/35 136/159/35 137/160/35 +f 412/161/19 410/162/19 411/163/19 +f 128/164/36 129/165/36 127/166/36 +f 500/167/27 105/168/27 106/169/27 +f 102/170/24 103/171/24 100/172/24 +f 109/173/36 110/174/36 111/175/36 +f 440/176/36 441/177/36 439/105/36 +f 114/178/21 115/179/21 116/180/21 +f 259/181/37 283/182/37 260/183/37 +f 110/174/32 113/184/32 111/175/32 +f 420/185/23 423/186/23 421/187/23 +f 394/188/38 401/189/38 399/190/38 +f 185/191/19 188/192/19 191/193/19 +f 102/170/35 101/194/35 99/195/35 +f 190/196/39 191/197/39 194/198/39 +f 132/199/21 133/200/21 134/201/21 +f 112/202/30 101/194/30 113/184/30 +f 201/203/19 198/204/19 200/205/19 +f 136/159/24 139/206/24 137/160/24 +f 335/207/40 316/208/41 318/209/42 +f 513/210/23 144/211/23 142/212/23 +f 387/213/43 383/214/43 384/215/43 +f 95/144/30 84/216/30 94/217/30 +f 516/218/21 150/219/21 151/220/21 +f 332/221/44 313/222/45 312/223/46 +f 389/224/47 390/225/47 396/226/47 +f 336/227/48 540/228/49 334/229/50 +f 212/230/18 215/96/18 219/231/18 +f 158/232/29 163/233/29 168/234/29 +f 182/235/22 176/236/22 172/237/22 +f 551/238/25 366/239/25 364/240/25 +f 192/241/21 186/242/21 184/243/21 +f 170/244/22 172/245/22 176/246/22 +f 80/247/25 60/248/25 68/249/25 +f 59/250/29 61/127/29 63/126/29 +f 465/251/24 467/252/24 464/253/24 +f 174/254/21 178/255/21 180/256/21 +f 282/257/22 257/258/22 269/259/22 +f 221/260/25 222/261/25 218/262/25 +f 191/193/22 189/263/22 187/264/22 +f 178/265/21 175/266/21 173/267/21 +f 185/268/21 190/196/21 186/269/21 +f 243/270/26 244/271/26 245/272/26 +f 187/273/18 184/243/18 186/242/18 +f 419/274/51 416/275/51 417/276/51 +f 85/277/35 84/216/35 82/278/35 +f 187/279/22 194/198/22 191/197/22 +f 75/280/25 74/281/25 67/123/25 +f 196/282/29 186/283/29 195/284/29 +f 233/285/52 228/286/52 226/287/52 +f 209/288/22 204/289/22 207/110/22 +f 199/290/22 204/291/22 200/292/22 +f 206/293/22 200/205/22 198/204/22 +f 330/294/53 542/295/54 328/296/55 +f 557/297/43 374/298/43 372/299/43 +f 417/276/24 414/300/24 415/301/24 +f 201/302/21 208/303/21 205/304/21 +f 436/305/51 433/306/51 434/307/51 +f 494/308/27 88/309/27 87/310/27 +f 141/311/51 139/206/51 138/312/51 +f 39/313/22 36/314/22 34/315/22 +f 212/316/21 214/317/21 218/318/21 +f 77/319/22 72/320/22 58/321/22 +f 216/322/22 220/323/22 222/324/22 +f 494/325/23 91/326/23 89/327/23 +f 557/328/18 371/329/18 370/330/18 +f 393/331/56 390/225/56 391/332/56 +f 78/333/25 58/334/25 80/247/25 +f 262/335/21 253/336/21 263/337/21 +f 218/318/57 220/323/57 212/316/57 +f 611/338/22 50/339/22 51/340/22 +f 466/341/51 593/117/51 467/252/51 +f 231/342/28 227/343/28 234/344/28 +f 268/345/29 255/346/29 256/347/29 +f 233/348/26 229/349/26 237/350/26 +f 236/351/28 235/352/28 238/353/28 +f 237/115/19 235/354/19 234/355/19 +f 71/356/21 75/357/21 64/358/21 +f 556/359/31 369/360/31 367/361/31 +f 240/362/26 239/363/26 243/364/26 +f 72/320/22 60/91/22 58/321/22 +f 126/365/27 123/366/27 124/367/27 +f 392/368/18 399/369/18 402/370/18 +f 98/371/21 96/372/21 97/373/21 +f 48/374/21 46/375/21 47/376/21 +f 258/377/22 274/378/22 254/379/22 +f 128/164/23 125/380/23 126/381/23 +f 106/169/51 103/171/51 104/382/51 +f 272/383/21 273/384/21 265/385/21 +f 148/147/32 145/386/32 146/387/32 +f 415/301/35 570/134/35 413/388/35 +f 157/389/58 156/390/58 524/391/58 +f 193/392/25 194/393/25 197/394/25 +f 64/395/29 62/396/29 70/125/29 +f 405/85/56 559/397/56 406/398/56 +f 79/399/29 64/395/29 70/125/29 +f 279/84/19 265/400/19 278/401/19 +f 396/226/38 395/402/38 389/224/38 +f 264/403/21 280/404/21 276/405/21 +f 264/403/21 265/385/21 266/406/21 +f 451/407/51 585/408/51 450/409/51 +f 258/377/22 259/410/22 260/411/22 +f 205/412/21 203/413/21 201/414/21 +f 331/415/25 332/416/25 333/417/25 +f 275/418/22 278/419/22 258/377/22 +f 289/420/29 292/421/29 291/422/29 +f 307/423/29 286/424/29 284/425/29 +f 286/426/29 288/427/29 284/428/29 +f 289/429/29 287/430/29 290/431/29 +f 302/432/29 304/433/29 303/434/29 +f 292/435/29 294/436/29 291/437/29 +f 293/438/29 296/439/29 294/440/29 +f 299/441/29 302/442/29 300/443/29 +f 297/444/29 300/445/29 298/446/29 +f 296/447/29 297/448/29 298/449/29 +f 355/450/25 357/451/25 358/452/25 +f 540/228/25 315/453/25 311/454/25 +f 543/455/25 330/456/25 328/457/25 +f 539/458/25 310/459/25 308/460/25 +f 321/461/25 322/462/25 323/463/25 +f 316/208/25 317/464/25 318/465/25 +f 319/466/25 317/464/25 320/467/25 +f 306/468/29 307/469/29 305/470/29 +f 303/471/29 306/472/29 305/473/29 +f 355/450/25 356/474/25 353/475/25 +f 346/476/25 340/477/25 343/478/25 +f 363/479/25 362/480/25 359/481/25 +f 352/482/25 350/483/25 349/484/25 +f 162/485/25 165/486/25 167/487/25 +f 386/488/25 382/489/25 377/490/25 +f 345/491/25 346/476/25 343/478/25 +f 542/295/25 322/462/25 324/492/25 +f 546/493/25 339/494/25 337/495/25 +f 362/480/25 360/496/25 359/481/25 +f 340/477/25 341/497/25 342/498/25 +f 363/479/25 341/497/25 361/499/25 +f 349/484/25 351/500/25 352/482/25 +f 545/501/25 336/502/25 334/503/25 +f 345/491/25 347/504/25 348/505/25 +f 315/453/25 313/222/25 311/454/25 +f 80/247/25 69/124/25 67/123/25 +f 426/133/32 571/506/32 424/507/32 +f 81/508/29 61/127/29 72/509/29 +f 438/510/27 435/511/27 436/305/27 +f 383/512/29 388/513/29 378/514/29 +f 210/515/29 200/292/29 209/288/29 +f 556/359/59 371/329/59 368/516/59 +f 353/475/25 351/500/25 354/517/25 +f 473/518/32 476/519/32 474/520/32 +f 493/521/51 88/309/51 86/522/51 +f 375/523/25 370/524/25 367/525/25 +f 263/526/25 254/527/25 252/528/25 +f 234/355/28 236/529/28 231/530/28 +f 372/531/29 376/532/29 368/533/29 +f 395/534/20 392/535/20 393/331/20 +f 245/272/60 238/119/60 243/270/60 +f 233/348/61 234/344/61 227/343/61 +f 216/536/19 213/537/19 217/538/19 +f 394/539/38 396/540/38 398/541/38 +f 403/542/56 392/368/56 402/370/56 +f 390/543/56 392/544/56 397/545/56 +f 399/546/38 401/547/38 400/548/38 +f 166/549/21 160/550/21 159/551/21 +f 90/552/36 93/145/36 91/326/36 +f 403/553/56 402/554/56 405/555/56 +f 387/213/58 388/556/58 385/557/58 +f 493/521/24 83/558/24 85/277/24 +f 457/559/36 586/560/36 455/561/36 +f 407/562/18 408/563/18 409/564/18 +f 251/565/19 249/566/19 250/567/19 +f 373/568/58 376/569/58 374/298/58 +f 81/570/19 78/333/19 76/571/19 +f 170/572/19 173/267/19 177/573/19 +f 264/403/21 277/574/21 255/575/21 +f 338/576/62 321/461/63 323/577/64 +f 277/574/21 256/578/21 255/575/21 +f 427/579/22 429/580/22 428/581/22 +f 419/274/27 421/582/27 418/583/27 +f 432/584/35 577/585/35 430/586/35 +f 513/587/27 140/588/27 141/311/27 +f 183/589/21 174/590/21 180/591/21 +f 130/592/30 119/593/30 131/594/30 +f 129/165/32 130/592/32 131/594/32 +f 454/595/27 585/408/27 452/596/27 +f 75/357/21 66/597/21 64/358/21 +f 444/598/22 446/599/22 445/600/22 +f 257/601/18 253/602/18 255/346/18 +f 165/603/65 168/604/65 169/605/65 +f 451/407/24 448/606/24 449/607/24 +f 174/608/29 182/235/29 172/237/29 +f 45/609/29 44/610/29 38/611/29 +f 339/612/66 319/466/67 337/613/68 +f 460/614/22 462/615/22 461/616/22 +f 76/571/21 80/128/21 61/130/21 +f 261/617/18 263/618/18 252/619/18 +f 471/620/36 474/520/36 472/621/36 +f 377/143/19 388/556/19 386/622/19 +f 242/120/52 239/623/52 236/121/52 +f 457/559/32 459/138/32 456/624/32 +f 480/625/29 481/626/29 482/627/29 +f 33/628/25 483/629/25 484/630/25 +f 484/630/25 485/631/25 33/628/25 +f 31/632/25 486/633/25 32/634/25 +f 32/634/25 487/635/25 33/628/25 +f 489/636/21 490/637/21 52/102/21 +f 52/102/21 491/638/21 53/103/21 +f 53/103/21 492/639/21 54/101/21 +f 488/640/21 489/636/21 52/102/21 +f 496/641/21 497/642/21 96/372/21 +f 96/372/21 498/643/21 97/373/21 +f 97/373/21 499/644/21 98/371/21 +f 495/645/21 496/641/21 96/372/21 +f 116/180/21 501/646/21 114/178/21 +f 502/647/21 503/648/21 114/178/21 +f 114/178/21 504/649/21 505/650/21 +f 505/650/21 115/179/21 114/178/21 +f 501/646/21 502/647/21 114/178/21 +f 134/201/21 507/651/21 132/199/21 +f 508/652/21 509/653/21 132/199/21 +f 132/199/21 510/654/21 511/655/21 +f 511/655/21 133/200/21 132/199/21 +f 507/651/21 508/652/21 132/199/21 +f 151/220/21 514/656/21 515/657/21 +f 515/657/21 516/218/21 151/220/21 +f 149/658/21 517/659/21 518/660/21 +f 518/660/21 150/219/21 149/658/21 +f 519/661/59 520/662/59 154/663/59 +f 154/663/59 521/664/59 152/665/59 +f 152/665/59 522/666/59 153/667/59 +f 153/667/59 523/668/59 519/661/59 +f 524/391/58 525/669/58 157/389/58 +f 157/389/58 526/670/58 155/671/58 +f 155/671/58 527/672/58 156/390/58 +f 156/390/58 528/673/58 524/391/58 +f 166/674/25 159/675/25 165/486/25 +f 165/486/25 169/676/25 167/487/25 +f 160/677/29 161/678/29 163/233/29 +f 163/233/29 164/679/29 168/234/29 +f 530/680/18 531/681/18 246/682/18 +f 246/682/18 532/683/18 247/80/18 +f 247/80/18 533/684/18 248/81/18 +f 529/79/18 530/680/18 246/682/18 +f 251/565/19 534/685/19 535/686/19 +f 535/686/19 536/687/19 249/566/19 +f 249/566/19 537/688/19 538/689/19 +f 538/689/19 250/567/19 249/566/19 +f 366/239/25 547/690/25 548/691/25 +f 548/691/25 549/692/25 366/239/25 +f 364/240/25 550/693/25 551/238/25 +f 552/694/25 553/695/25 551/238/25 +f 551/238/25 554/696/25 365/697/25 +f 365/697/25 555/698/25 366/239/25 +f 366/239/25 549/692/25 364/240/25 +f 550/693/25 552/694/25 551/238/25 +f 370/524/25 556/699/25 367/525/25 +f 373/700/25 557/701/25 370/524/25 +f 376/532/29 369/702/29 368/533/29 +f 368/533/29 371/703/29 372/531/29 +f 382/489/25 380/704/25 377/490/25 +f 387/705/25 384/706/25 382/489/25 +f 388/513/29 379/707/29 378/514/29 +f 378/514/29 381/708/29 383/512/29 +f 409/564/18 560/709/18 407/562/18 +f 561/710/18 562/711/18 407/562/18 +f 407/562/18 563/712/18 564/713/18 +f 564/713/18 408/563/18 407/562/18 +f 560/709/18 561/710/18 407/562/18 +f 412/161/19 565/714/19 566/715/19 +f 566/715/19 567/716/19 410/162/19 +f 410/162/19 568/717/19 569/718/19 +f 569/718/19 411/163/19 410/162/19 +f 429/580/22 427/579/22 572/719/22 +f 573/720/22 427/579/22 574/721/22 +f 427/579/22 576/722/22 575/723/22 +f 576/722/22 427/579/22 428/581/22 +f 572/719/22 427/579/22 573/720/22 +f 446/599/22 444/598/22 579/724/22 +f 580/725/22 444/598/22 581/726/22 +f 444/598/22 583/727/22 582/728/22 +f 583/727/22 444/598/22 445/600/22 +f 579/724/22 444/598/22 580/725/22 +f 462/615/22 460/614/22 587/729/22 +f 588/730/22 460/614/22 589/731/22 +f 460/614/22 591/732/22 590/733/22 +f 591/732/22 460/614/22 461/616/22 +f 587/729/22 460/614/22 588/730/22 +f 594/734/22 479/735/22 595/736/22 +f 479/735/22 477/737/22 596/738/22 +f 477/737/22 478/739/22 597/740/22 +f 478/739/22 594/734/22 598/741/22 +f 482/627/29 599/742/29 600/743/29 +f 600/743/29 601/744/29 482/627/29 +f 602/745/29 480/625/29 482/627/29 +f 481/626/29 603/746/29 482/627/29 +f 482/627/29 601/744/29 602/745/29 +f 605/747/21 606/748/21 46/375/21 +f 46/375/21 607/749/21 47/376/21 +f 47/376/21 608/750/21 48/374/21 +f 604/751/21 605/747/21 46/375/21 +f 51/340/22 609/752/22 610/753/22 +f 610/753/22 611/338/22 51/340/22 +f 49/754/22 612/755/22 613/756/22 +f 613/756/22 50/339/22 49/754/22 +f 57/757/22 614/758/22 615/759/22 +f 615/759/22 616/760/22 57/757/22 +f 55/761/22 617/762/22 618/763/22 +f 618/763/22 56/764/22 55/761/22 +f 35/765/22 38/766/22 44/767/22 +f 271/768/22 257/258/22 268/769/22 +f 174/770/18 171/771/18 175/772/18 +f 465/251/35 592/773/35 463/774/35 +f 229/775/60 232/776/60 231/777/60 +f 120/107/35 119/593/35 117/778/35 +f 166/549/69 163/779/69 161/780/69 +f 197/394/22 187/781/22 196/782/22 +f 399/783/47 559/397/47 402/784/47 +f 66/597/18 69/785/18 62/786/18 +f 243/364/70 235/352/70 240/362/70 +f 227/787/28 232/776/28 228/286/28 +f 146/387/36 144/211/36 143/788/36 +f 485/631/25 32/634/25 33/628/25 +f 401/189/19 397/789/19 403/542/19 +f 158/790/71 159/551/71 160/550/71 +f 231/530/18 239/791/18 229/792/18 +f 154/663/59 153/667/59 519/661/59 +f 475/793/30 592/773/30 476/519/30 +f 454/794/23 586/560/23 453/795/23 +f 169/605/22 164/796/22 167/153/22 +f 34/150/25 40/797/25 42/798/25 +f 44/610/72 41/100/72 35/99/72 +f 69/785/18 63/92/18 62/786/18 +f 208/303/57 199/290/57 205/304/57 +f 434/307/24 577/585/24 431/799/24 +f 273/800/19 278/401/19 265/400/19 +f 272/383/21 255/575/21 253/336/21 +f 308/801/25 326/802/25 327/803/25 +f 390/543/73 398/541/73 396/540/73 +f 616/760/22 56/764/22 57/757/22 +f 45/804/74 39/152/74 37/151/74 +f 400/548/75 403/553/75 405/555/75 +f 384/805/18 381/806/18 382/807/18 +f 177/573/22 172/808/22 170/572/22 +f 219/231/21 214/809/21 212/230/21 +f 382/807/59 378/810/59 380/141/59 +f 594/734/22 477/737/22 479/735/22 +f 275/418/22 254/379/22 257/258/22 +f 124/367/51 121/108/51 122/811/51 +f 270/812/18 268/813/18 256/814/18 +f 329/815/76 327/803/77 326/816/78 +f 449/607/35 584/137/35 447/817/35 +f 333/818/79 539/458/80 331/819/81 +f 432/584/30 578/820/30 443/821/30 +f 283/822/21 253/336/21 267/823/21 +f 233/285/26 230/824/26 229/825/26 +f 225/826/22 216/827/22 222/261/22 +f 422/828/36 571/506/36 423/186/36 +f 223/829/21 218/262/21 214/830/21 +f 176/246/39 178/255/39 170/244/39 +f 195/284/21 190/831/21 193/392/21 +f 199/832/18 202/833/18 205/412/18 +f 179/834/25 180/591/25 176/236/25 +f 375/835/19 369/360/19 376/569/19 +f 399/836/38 558/86/38 404/837/38 +f 211/112/21 201/838/21 210/839/21 +f 224/840/29 214/830/29 216/841/29 +f 275/418/22 281/842/22 279/843/22 +f 470/844/23 472/621/23 469/845/23 +f 500/846/23 109/173/23 107/847/23 +f 442/848/32 578/820/32 441/177/32 +f 274/378/22 252/849/22 254/379/22 +f 529/79/18 246/682/18 247/80/18 +f 281/82/19 280/156/19 266/83/19 +f 405/85/20 406/398/20 558/86/20 +f 42/88/21 40/850/21 41/89/21 +f 60/91/18 59/851/18 63/92/18 +f 220/94/22 216/852/22 217/95/22 +f 41/89/21 43/853/21 45/97/21 +f 40/98/18 36/854/18 35/99/18 +f 54/101/21 488/640/21 52/102/21 +f 438/104/23 440/176/23 439/105/23 +f 120/107/24 122/811/24 121/108/24 +f 207/110/25 204/289/25 208/111/25 +f 229/113/26 239/855/26 240/114/26 +f 470/116/27 469/856/27 593/117/27 +f 238/119/28 241/857/28 242/120/28 +f 65/122/25 75/280/25 67/123/25 +f 70/125/29 62/396/29 63/126/29 +f 80/128/19 67/132/19 70/129/19 +f 74/131/22 79/140/22 70/129/22 +f 426/133/30 413/388/30 570/134/30 +f 458/136/30 447/817/30 584/137/30 +f 73/139/19 71/858/19 79/140/19 +f 380/141/31 378/810/31 379/142/31 +f 95/144/32 94/217/32 93/145/32 +f 148/147/30 512/859/30 135/148/30 +f 34/150/19 42/798/19 37/151/19 +f 167/153/33 164/796/33 163/154/33 +f 280/156/34 281/82/34 282/157/34 +f 135/148/35 512/859/35 136/159/35 +f 412/161/19 566/715/19 410/162/19 +f 128/164/36 506/860/36 129/165/36 +f 500/167/27 107/861/27 105/168/27 +f 102/170/24 104/382/24 103/171/24 +f 109/173/36 108/862/36 110/174/36 +f 440/176/36 442/848/36 441/177/36 +f 259/181/37 273/800/37 283/182/37 +f 110/174/32 112/202/32 113/184/32 +f 420/185/23 422/828/23 423/186/23 +f 394/188/38 398/863/38 401/189/38 +f 185/191/19 192/241/19 188/192/19 +f 102/170/35 100/172/35 101/194/35 +f 190/196/39 185/268/39 191/197/39 +f 112/202/30 99/195/30 101/194/30 +f 201/203/19 203/864/19 198/204/19 +f 136/159/24 138/312/24 139/206/24 +f 335/207/82 545/865/83 316/208/84 +f 513/210/23 143/788/23 144/211/23 +f 387/213/43 385/557/43 383/214/43 +f 95/144/30 82/278/30 84/216/30 +f 516/218/21 149/658/21 150/219/21 +f 332/221/85 544/866/86 313/222/87 +f 389/224/47 391/332/47 390/225/47 +f 336/227/88 314/867/89 540/228/90 +f 212/230/18 220/94/18 215/96/18 +f 158/232/29 160/677/29 163/233/29 +f 182/235/22 179/834/22 176/236/22 +f 551/238/25 365/697/25 366/239/25 +f 192/241/21 185/191/21 186/242/21 +f 80/247/25 58/334/25 60/248/25 +f 59/250/29 72/509/29 61/127/29 +f 465/251/24 466/341/24 467/252/24 +f 282/257/22 275/418/22 257/258/22 +f 221/260/25 225/826/25 222/261/25 +f 191/193/22 188/192/22 189/263/22 +f 178/265/21 174/868/21 175/266/21 +f 243/270/26 239/869/26 244/271/26 +f 187/273/18 189/870/18 184/243/18 +f 419/274/51 418/583/51 416/275/51 +f 85/277/35 83/558/35 84/216/35 +f 75/280/25 73/871/25 74/281/25 +f 196/282/29 187/872/29 186/283/29 +f 233/285/52 227/787/52 228/286/52 +f 209/288/22 200/292/22 204/289/22 +f 206/293/22 199/832/22 200/205/22 +f 330/294/91 325/873/92 542/295/93 +f 557/297/43 373/568/43 374/298/43 +f 417/276/24 416/275/24 414/300/24 +f 436/305/51 435/511/51 433/306/51 +f 494/308/27 89/874/27 88/309/27 +f 141/311/51 140/588/51 139/206/51 +f 39/313/22 35/765/22 36/314/22 +f 77/319/22 81/875/22 72/320/22 +f 494/325/23 90/552/23 91/326/23 +f 557/328/18 372/876/18 371/329/18 +f 393/331/56 392/535/56 390/225/56 +f 78/333/25 77/877/25 58/334/25 +f 262/335/21 267/823/21 253/336/21 +f 218/318/57 222/324/57 220/323/57 +f 611/338/22 49/754/22 50/339/22 +f 466/341/51 468/118/51 593/117/51 +f 268/345/29 257/601/29 255/346/29 +f 237/115/19 240/114/19 235/354/19 +f 71/356/21 73/878/21 75/357/21 +f 556/359/31 368/516/31 369/360/31 +f 72/320/22 59/851/22 60/91/22 +f 126/365/27 125/879/27 123/366/27 +f 392/368/18 394/880/18 399/369/18 +f 98/371/21 495/645/21 96/372/21 +f 48/374/21 604/751/21 46/375/21 +f 258/377/22 260/411/22 274/378/22 +f 128/164/23 127/166/23 125/380/23 +f 106/169/51 105/168/51 103/171/51 +f 272/383/21 283/822/21 273/384/21 +f 148/147/32 147/149/32 145/386/32 +f 415/301/35 414/300/35 570/134/35 +f 157/389/58 155/671/58 156/390/58 +f 193/392/25 190/831/25 194/393/25 +f 64/395/29 66/881/29 62/396/29 +f 405/85/56 402/784/56 559/397/56 +f 79/399/29 71/882/29 64/395/29 +f 279/84/19 266/83/19 265/400/19 +f 396/226/38 394/883/38 395/402/38 +f 264/403/21 266/406/21 280/404/21 +f 264/403/21 272/383/21 265/385/21 +f 451/407/51 452/596/51 585/408/51 +f 258/377/22 278/419/22 259/410/22 +f 205/412/21 202/833/21 203/413/21 +f 331/415/25 544/884/25 332/416/25 +f 275/418/22 279/843/22 278/419/22 +f 289/420/29 290/885/29 292/421/29 +f 307/423/29 285/886/29 286/424/29 +f 286/426/29 287/887/29 288/427/29 +f 289/429/29 288/888/29 287/430/29 +f 302/432/29 301/889/29 304/433/29 +f 292/435/29 293/890/29 294/436/29 +f 293/438/29 295/891/29 296/439/29 +f 299/441/29 301/892/29 302/442/29 +f 297/444/29 299/893/29 300/445/29 +f 296/447/29 295/894/29 297/448/29 +f 355/450/25 360/496/25 357/451/25 +f 540/228/25 314/895/25 315/453/25 +f 543/455/25 329/896/25 330/456/25 +f 539/458/25 309/897/25 310/459/25 +f 321/461/25 324/492/25 322/462/25 +f 316/208/25 320/467/25 317/464/25 +f 319/466/25 541/898/25 317/464/25 +f 306/468/29 285/899/29 307/469/29 +f 303/471/29 304/900/29 306/472/29 +f 355/450/25 358/452/25 356/474/25 +f 346/476/25 344/901/25 340/477/25 +f 363/479/25 361/499/25 362/480/25 +f 352/482/25 347/504/25 350/483/25 +f 162/485/25 166/674/25 165/486/25 +f 386/488/25 387/705/25 382/489/25 +f 345/491/25 348/505/25 346/476/25 +f 542/295/25 325/902/25 322/462/25 +f 546/493/25 338/903/25 339/494/25 +f 362/480/25 357/451/25 360/496/25 +f 340/477/25 344/901/25 341/497/25 +f 363/479/25 342/498/25 341/497/25 +f 349/484/25 354/517/25 351/500/25 +f 545/501/25 335/904/25 336/502/25 +f 345/491/25 350/483/25 347/504/25 +f 315/453/25 312/905/25 313/222/25 +f 80/247/25 68/249/25 69/124/25 +f 426/133/32 425/135/32 571/506/32 +f 81/508/29 76/906/29 61/127/29 +f 438/510/27 437/907/27 435/511/27 +f 383/512/29 385/908/29 388/513/29 +f 210/515/29 201/909/29 200/292/29 +f 556/359/59 370/330/59 371/329/59 +f 353/475/25 356/474/25 351/500/25 +f 473/518/32 475/793/32 476/519/32 +f 493/521/51 87/310/51 88/309/51 +f 375/523/25 373/700/25 370/524/25 +f 263/526/25 253/910/25 254/527/25 +f 234/355/28 235/354/28 236/529/28 +f 372/531/29 374/911/29 376/532/29 +f 395/534/20 394/912/20 392/535/20 +f 245/272/60 241/857/60 238/119/60 +f 233/348/61 237/350/61 234/344/61 +f 216/536/19 214/809/19 213/537/19 +f 403/542/56 397/789/56 392/368/56 +f 166/549/21 161/780/21 160/550/21 +f 90/552/36 92/146/36 93/145/36 +f 387/213/58 386/622/58 388/556/58 +f 493/521/24 86/522/24 83/558/24 +f 457/559/36 456/624/36 586/560/36 +f 251/565/19 535/686/19 249/566/19 +f 373/568/58 375/835/58 376/569/58 +f 81/570/19 77/877/19 78/333/19 +f 170/572/19 178/265/19 173/267/19 +f 264/403/21 276/405/21 277/574/21 +f 338/576/94 546/913/95 321/461/96 +f 277/574/21 270/914/21 256/578/21 +f 419/274/27 420/915/27 421/582/27 +f 432/584/35 431/799/35 577/585/35 +f 513/587/27 142/916/27 140/588/27 +f 183/589/21 181/917/21 174/590/21 +f 130/592/30 117/778/30 119/593/30 +f 129/165/32 506/860/32 130/592/32 +f 454/595/27 453/918/27 585/408/27 +f 75/357/21 65/919/21 66/597/21 +f 257/601/18 254/920/18 253/602/18 +f 165/603/65 158/790/65 168/604/65 +f 451/407/24 450/409/24 448/606/24 +f 174/608/29 181/921/29 182/235/29 +f 45/609/29 43/922/29 44/610/29 +f 339/612/97 541/923/98 319/466/99 +f 76/571/21 78/333/21 80/128/21 +f 261/617/18 262/924/18 263/618/18 +f 471/620/36 473/518/36 474/520/36 +f 377/143/19 379/142/19 388/556/19 +f 242/120/52 244/925/52 239/623/52 +f 457/559/32 458/136/32 459/138/32 +f 35/765/22 39/313/22 38/766/22 +f 271/768/22 269/259/22 257/258/22 +f 174/770/18 172/808/18 171/771/18 +f 465/251/35 464/253/35 592/773/35 +f 229/775/60 230/926/60 232/776/60 +f 120/107/35 118/109/35 119/593/35 +f 166/549/69 162/927/69 163/779/69 +f 197/394/22 194/393/22 187/781/22 +f 399/783/47 404/928/47 559/397/47 +f 66/597/18 65/919/18 69/785/18 +f 243/364/70 238/353/70 235/352/70 +f 227/787/28 231/777/28 232/776/28 +f 146/387/36 145/386/36 144/211/36 +f 485/631/25 31/632/25 32/634/25 +f 401/189/19 398/863/19 397/789/19 +f 158/790/71 165/603/71 159/551/71 +f 231/530/18 236/529/18 239/791/18 +f 154/663/59 152/665/59 153/667/59 +f 475/793/30 463/774/30 592/773/30 +f 454/794/23 455/561/23 586/560/23 +f 169/605/22 168/604/22 164/796/22 +f 34/150/25 36/929/25 40/797/25 +f 44/610/72 43/922/72 41/100/72 +f 69/785/18 68/93/18 63/92/18 +f 208/303/57 204/291/57 199/290/57 +f 434/307/24 433/306/24 577/585/24 +f 273/800/19 259/181/19 278/401/19 +f 272/383/21 264/403/21 255/575/21 +f 308/801/25 310/930/25 326/802/25 +f 390/543/73 397/545/73 398/541/73 +f 616/760/22 55/761/22 56/764/22 +f 45/804/74 38/931/74 39/152/74 +f 400/548/75 401/547/75 403/553/75 +f 384/805/18 383/932/18 381/806/18 +f 177/573/22 171/771/22 172/808/22 +f 219/231/21 213/537/21 214/809/21 +f 382/807/59 381/806/59 378/810/59 +f 594/734/22 478/739/22 477/737/22 +f 275/418/22 258/377/22 254/379/22 +f 124/367/51 123/366/51 121/108/51 +f 270/812/18 271/933/18 268/813/18 +f 329/815/100 543/934/101 327/803/102 +f 449/607/35 448/606/35 584/137/35 +f 333/818/103 309/935/104 539/458/105 +f 432/584/30 430/586/30 578/820/30 +f 283/822/21 272/383/21 253/336/21 +f 233/285/26 226/287/26 230/824/26 +f 225/826/22 224/936/22 216/827/22 +f 422/828/36 424/507/36 571/506/36 +f 223/829/21 221/260/21 218/262/21 +f 176/246/39 180/256/39 178/255/39 +f 195/284/21 186/283/21 190/831/21 +f 199/832/18 206/293/18 202/833/18 +f 179/834/25 183/589/25 180/591/25 +f 375/835/19 367/361/19 369/360/19 +f 399/836/38 400/87/38 558/86/38 +f 211/112/21 208/111/21 201/838/21 +f 224/840/29 223/829/29 214/830/29 +f 275/418/22 282/257/22 281/842/22 +f 470/844/23 471/620/23 472/621/23 +f 500/846/23 108/862/23 109/173/23 +f 442/848/32 443/821/32 578/820/32 +f 274/378/22 261/937/22 252/849/22 +s 1 +f 949/938/106 408/939/107 564/940/108 +f 879/941/106 529/942/109 878/943/110 +f 656/944/111 642/945/112 644/946/113 +f 652/947/114 663/948/115 651/949/116 +f 331/819/117 308/460/118 939/950/18 +f 323/951/119 899/952/22 338/953/120 +f 322/954/121 330/955/122 899/952/22 +f 540/228/123 901/956/22 334/229/124 +f 484/957/125 781/958/126 485/959/127 +f 312/960/128 891/961/21 332/962/129 +f 337/613/130 320/467/131 941/963/19 +f 333/964/132 888/965/133 886/966/19 +f 546/913/134 357/967/135 940/968/21 +f 484/957/125 775/969/136 774/970/19 +f 602/971/137 1051/972/138 480/973/139 +f 33/974/140 775/969/136 483/975/141 +f 731/976/142 732/977/143 720/978/144 +f 489/979/145 615/980/146 614/981/147 +f 601/982/148 1052/983/21 602/971/137 +f 54/984/149 55/985/150 616/986/151 +f 480/973/139 1050/987/18 481/988/152 +f 612/989/153 607/990/154 613/991/155 +f 308/801/118 543/934/156 939/992/18 +f 883/993/157 247/994/158 882/995/159 +f 939/950/18 344/996/160 331/819/117 +f 886/997/19 309/998/161 333/999/132 +f 311/454/162 544/866/163 901/956/22 +f 329/1000/164 900/1001/165 330/1002/122 +f 53/1003/166 55/985/150 492/1004/167 +f 949/938/106 563/1005/168 944/1006/110 +f 938/1007/43 298/1008/169 300/1009/170 +f 54/1010/149 615/980/146 488/1011/171 +f 340/1012/172 366/1013/173 343/1014/174 +f 152/1015/175 524/1016/176 528/1017/177 +f 940/968/21 362/1018/178 328/296/179 +f 566/1019/180 948/1020/159 942/1021/181 +f 318/1022/182 895/1023/18 335/1024/183 +f 491/1025/184 56/1026/185 618/1027/186 +f 48/1028/187 610/1029/188 604/1030/189 +f 881/1031/181 246/1032/190 880/1033/191 +f 901/956/22 347/1034/192 334/229/124 +f 153/1035/193 156/1036/194 527/1037/195 +f 544/866/163 348/1038/121 901/956/22 +f 481/1039/152 1049/1040/196 603/1041/197 +f 933/1042/33 296/1043/198 298/1008/169 +f 332/1044/129 887/1045/199 333/964/132 +f 366/1013/173 345/1046/200 343/1014/174 +f 886/966/19 902/1047/201 329/1000/164 +f 604/1030/189 609/1048/202 605/1049/203 +f 948/1020/159 562/1050/204 561/1051/205 +f 600/1052/206 1047/1053/126 1046/1054/19 +f 52/1055/207 57/1056/208 56/1026/185 +f 947/1057/191 408/1058/107 945/1059/209 +f 294/1060/210 930/1061/59 291/1062/211 +f 620/1063/212 641/1064/213 639/1065/214 +f 633/1066/215 634/1067/216 632/1068/217 +f 635/1069/218 636/1070/219 633/1066/215 +f 887/1045/199 911/1071/220 888/965/133 +f 754/1072/221 765/1073/222 753/1074/223 +f 692/1075/224 703/1076/225 691/1077/226 +f 630/1078/227 629/1079/228 631/1080/229 +f 639/1065/214 640/1081/230 637/1082/231 +f 637/1082/231 638/1083/232 635/1069/218 +f 626/1084/233 625/1085/234 627/1086/235 +f 628/1087/236 627/1086/235 629/1079/228 +f 632/1068/217 630/1088/227 631/1089/229 +f 648/1090/237 628/1087/236 630/1078/227 +f 641/1064/213 652/947/114 640/1081/230 +f 646/1091/238 624/1092/239 626/1084/233 +f 638/1083/232 650/1093/240 636/1070/219 +f 689/1094/241 676/1095/242 677/1096/243 +f 634/1067/216 648/1097/237 630/1088/227 +f 758/1098/244 745/1099/245 746/1100/246 +f 647/1101/247 626/1084/233 628/1087/236 +f 645/1102/248 622/1103/249 624/1092/239 +f 636/1070/219 649/1104/250 634/1067/216 +f 642/945/112 643/1105/251 619/1106/252 +f 655/1107/253 665/1108/254 653/1109/255 +f 653/1109/255 664/1110/256 652/947/114 +f 651/949/116 662/1111/257 650/1093/240 +f 676/1095/242 663/948/115 664/1110/256 +f 670/1112/258 680/1113/259 669/1114/260 +f 770/1115/261 757/1116/262 758/1098/244 +f 660/1117/263 647/1101/247 648/1090/237 +f 659/1118/264 646/1091/238 647/1101/247 +f 658/1119/265 645/1102/248 646/1091/238 +f 657/1120/266 644/946/113 645/1102/248 +f 650/1093/240 661/1121/267 649/1104/250 +f 649/1104/250 660/1122/263 648/1097/237 +f 666/1123/268 665/1108/254 667/1124/269 +f 674/1125/270 661/1121/267 662/1111/257 +f 658/1119/265 670/1112/258 657/1120/266 +f 675/1126/271 662/1111/257 663/948/115 +f 924/1127/272 904/1128/273 908/1129/274 +f 673/1130/275 660/1122/263 661/1121/267 +f 680/1113/259 691/1077/226 679/1131/276 +f 659/1118/264 671/1132/277 658/1119/265 +f 836/1133/278 837/1134/279 829/1135/280 +f 657/1120/266 669/1114/260 656/944/111 +f 656/944/111 668/1136/281 654/1137/282 +f 773/1138/283 760/1139/284 761/1140/285 +f 678/1141/286 677/1096/243 666/1123/268 +f 672/1142/287 682/1143/288 671/1132/277 +f 688/1144/289 675/1126/271 676/1095/242 +f 677/1096/243 664/1110/256 665/1108/254 +f 686/1145/290 673/1130/275 674/1125/270 +f 741/1146/291 752/1147/292 740/1148/293 +f 683/1149/294 684/1150/295 672/1142/287 +f 640/1081/230 651/949/116 638/1083/232 +f 671/1132/277 681/1151/296 670/1112/258 +f 687/1152/297 674/1125/270 675/1126/271 +f 669/1114/260 679/1131/276 668/1136/281 +f 685/1153/298 683/1154/294 673/1130/275 +f 697/1155/299 695/1156/300 685/1153/298 +f 701/1157/301 688/1144/289 689/1094/241 +f 699/1158/302 686/1145/290 687/1152/297 +f 624/1092/239 623/1159/303 625/1085/234 +f 622/1103/249 621/1160/304 623/1159/303 +f 619/1106/252 620/1063/212 621/1160/304 +f 695/1161/300 696/1162/305 684/1150/295 +f 684/1150/295 694/1163/306 682/1143/288 +f 682/1143/288 693/1164/307 681/1151/296 +f 681/1151/296 692/1075/224 680/1113/259 +f 698/1165/308 685/1153/298 686/1145/290 +f 679/1131/276 690/1166/309 678/1141/286 +f 702/1167/310 701/1157/301 690/1166/309 +f 710/1168/311 697/1155/299 698/1165/308 +f 694/1163/306 705/1169/312 693/1164/307 +f 711/1170/313 698/1165/308 699/1158/302 +f 748/1171/314 735/1172/315 736/1173/316 +f 709/1174/317 707/1175/318 697/1155/299 +f 723/1176/71 710/1168/311 711/1170/313 +f 713/1177/319 700/1178/320 701/1157/301 +f 668/1136/281 678/1141/286 666/1123/268 +f 693/1164/307 704/1179/321 692/1075/224 +f 696/1162/305 706/1180/322 694/1163/306 +f 707/1181/318 708/1182/323 696/1162/305 +f 714/1183/324 713/1177/319 702/1167/310 +f 722/1184/325 709/1174/317 710/1168/311 +f 755/1185/326 756/1186/327 744/1187/328 +f 724/1188/329 711/1170/313 712/1189/330 +f 718/1190/331 729/1191/332 717/1192/33 +f 721/1193/333 719/1194/334 709/1174/317 +f 703/1076/225 714/1183/324 702/1167/310 +f 708/1182/323 718/1190/331 706/1180/322 +f 706/1180/322 717/1192/33 705/1169/312 +f 705/1169/312 716/1195/335 704/1179/321 +f 704/1179/321 715/1196/336 703/1076/225 +f 734/1197/337 721/1193/333 722/1184/325 +f 726/1198/338 725/1199/339 714/1183/324 +f 737/1200/340 724/1188/329 725/1199/339 +f 691/1077/226 702/1167/310 690/1166/309 +f 735/1172/315 722/1184/325 723/1176/71 +f 716/1195/335 727/1201/341 715/1196/336 +f 733/1202/342 731/1203/142 721/1193/333 +f 715/1196/336 726/1198/338 714/1183/324 +f 720/978/144 730/1204/343 718/1190/331 +f 736/1173/316 723/1176/71 724/1188/329 +f 717/1192/33 728/1205/344 716/1195/335 +f 745/1099/245 743/1206/345 733/1202/342 +f 719/1207/334 720/978/144 708/1182/323 +f 738/1208/346 737/1200/340 726/1198/338 +f 749/1209/347 736/1173/316 737/1200/340 +f 730/1204/343 741/1146/291 729/1191/332 +f 643/1105/251 653/1109/255 641/1064/213 +f 746/1100/246 733/1202/342 734/1197/337 +f 727/1201/341 738/1208/346 726/1198/338 +f 743/1210/345 744/1187/328 732/977/143 +f 728/1205/344 739/1211/348 727/1201/341 +f 729/1191/332 740/1148/293 728/1205/344 +f 747/1212/349 734/1197/337 735/1172/315 +f 690/1166/309 689/1094/241 678/1141/286 +f 725/1199/339 712/1189/330 713/1177/319 +f 750/1213/350 749/1209/347 738/1208/346 +f 712/1189/330 699/1158/302 700/1178/320 +f 759/1214/351 746/1100/246 747/1212/349 +f 760/1139/284 747/1212/349 748/1171/314 +f 761/1140/285 748/1171/314 749/1209/347 +f 757/1116/262 755/1215/326 745/1099/245 +f 739/1211/348 750/1213/350 738/1208/346 +f 744/1187/328 754/1072/221 742/1216/352 +f 742/1216/352 753/1074/223 741/1146/291 +f 654/1137/282 655/1107/253 642/945/112 +f 740/1148/293 751/1217/353 739/1211/348 +f 769/1218/354 767/1219/355 757/1116/262 +f 762/1220/356 761/1140/285 750/1213/350 +f 660/1117/263 672/1142/287 659/1118/264 +f 772/1221/357 759/1214/351 760/1139/284 +f 771/1222/358 758/1098/244 759/1214/351 +f 654/1137/282 666/1123/268 667/1124/269 +f 751/1217/353 762/1220/356 750/1213/350 +f 767/1223/355 768/1224/359 756/1186/327 +f 756/1186/327 766/1225/360 754/1072/221 +f 753/1074/223 764/1226/361 752/1147/292 +f 700/1178/320 687/1152/297 688/1144/289 +f 752/1147/292 763/1227/362 751/1217/353 +f 732/977/143 742/1216/352 730/1204/343 +f 601/982/148 1046/1054/19 1053/1228/136 +f 613/991/155 46/1229/363 50/1230/364 +f 941/963/19 356/1231/365 337/613/130 +f 487/1232/366 776/1233/21 33/974/140 +f 816/1234/18 798/1235/367 807/1236/368 +f 1022/1237/369 1031/1238/370 1023/1239/371 +f 818/1240/372 808/1241/373 817/1242/374 +f 984/1243/18 985/1244/374 977/1245/373 +f 788/1246/375 789/1247/22 787/1248/376 +f 856/1249/377 857/1250/378 847/1251/379 +f 960/1252/380 962/1253/381 961/1254/382 +f 876/1255/59 869/1256/383 859/1257/69 +f 827/1258/22 836/1133/278 829/1135/280 +f 848/1259/384 835/1260/385 841/1261/386 +f 974/1262/387 982/1263/388 975/1264/389 +f 871/1265/390 864/1266/65 862/1267/370 +f 1009/1268/391 996/1269/22 1003/1270/385 +f 865/1271/392 873/1272/393 867/1273/394 +f 796/1274/395 797/1275/396 785/1276/397 +f 969/1277/398 968/1278/43 967/1279/33 +f 996/1269/22 989/1280/399 997/1281/58 +f 951/1282/400 1037/1283/401 1035/1284/402 +f 1040/1285/393 962/1253/381 1041/1286/403 +f 988/1287/65 989/1280/399 981/1288/404 +f 971/1289/405 952/1290/21 962/1253/381 +f 821/1291/406 830/1292/407 831/1293/408 +f 804/1294/387 797/1295/396 805/1296/409 +f 1036/1297/383 1029/1298/18 1028/1299/69 +f 826/1300/410 812/1301/19 810/1302/411 +f 783/1303/400 870/1304/401 868/1305/402 +f 1004/1306/278 1005/1307/279 998/1308/280 +f 877/1309/412 864/1310/65 872/1311/58 +f 983/1312/413 984/1313/18 976/1314/368 +f 791/1315/414 792/1316/380 793/1317/382 +f 804/1294/387 814/1318/388 806/1319/389 +f 860/1320/18 849/1321/415 858/1322/416 +f 849/1321/415 843/1323/43 842/1324/391 +f 818/1325/372 825/1326/417 826/1300/410 +f 817/1327/374 824/1328/418 818/1325/372 +f 1013/1329/419 1015/1330/31 1006/1331/420 +f 800/1332/33 788/1333/375 798/1334/367 +f 1005/1307/279 1006/1335/420 999/1336/407 +f 986/1337/372 995/1338/417 987/1339/410 +f 963/1340/71 964/1341/395 950/1342/31 +f 784/1343/21 868/1305/402 876/1255/59 +f 1037/1344/401 1031/1345/370 1030/1346/421 +f 834/1347/422 824/1348/418 833/1349/423 +f 952/1290/21 1035/1284/402 1043/1350/59 +f 832/1351/21 831/1293/408 830/1292/407 +f 785/1352/397 787/1248/376 786/1353/424 +f 837/1354/279 819/1355/399 829/1135/280 +f 956/1356/375 957/1357/22 955/1358/376 +f 1045/1359/412 1039/1360/65 1038/1361/58 +f 1045/1359/412 1034/1362/394 1032/1363/392 +f 791/1364/414 873/1365/393 877/1366/412 +f 789/1367/22 877/1366/412 872/1368/58 +f 838/1369/420 832/1370/21 830/1371/407 +f 867/1372/394 858/1373/416 866/1374/425 +f 870/1375/401 862/1267/370 861/1376/421 +f 966/1377/367 968/1378/43 956/1379/375 +f 813/1380/65 819/1355/399 820/1381/404 +f 792/1316/380 794/1382/381 793/1317/382 +f 1037/1344/401 1036/1297/383 1035/1284/402 +f 993/1383/59 985/1384/374 992/1385/69 +f 800/1386/33 790/1387/426 799/1388/43 +f 969/1389/398 978/1390/427 970/1391/428 +f 994/1392/418 1003/1270/385 995/1338/417 +f 1010/1393/43 1011/1394/429 1004/1306/278 +f 1029/1395/18 1011/1394/429 1019/1396/33 +f 873/1365/393 794/1382/381 874/1397/403 +f 951/1282/400 953/1398/397 954/1399/424 +f 644/946/113 619/1106/252 622/1103/249 +f 1024/1400/19 1013/1401/419 1023/1402/371 +f 953/1398/397 955/1358/376 954/1399/424 +f 1002/1403/422 994/1392/418 1001/1404/423 +f 860/1320/18 844/1405/429 850/1406/33 +f 812/1301/19 805/1296/409 795/1407/71 +f 797/1275/396 788/1333/375 785/1276/397 +f 299/893/430 922/1408/431 921/1409/432 +f 863/1410/19 847/1251/379 855/1411/71 +f 1024/1412/19 1016/1413/379 1014/1414/71 +f 1036/1297/383 1022/1237/369 1020/1415/433 +f 802/1416/428 810/1302/411 811/1417/434 +f 869/1256/383 860/1418/18 859/1257/69 +f 876/1255/59 875/1419/435 874/1397/403 +f 1023/1402/371 1021/1420/436 1022/1421/369 +f 1017/1422/384 1003/1270/385 1008/1423/386 +f 862/1424/370 863/1425/19 854/1426/371 +f 846/1427/419 839/1428/31 838/1429/420 +f 786/1430/424 871/1431/390 870/1304/401 +f 870/1375/401 869/1256/383 868/1305/402 +f 1018/1432/415 1010/1393/43 1009/1268/391 +f 972/1433/19 981/1288/404 974/1262/387 +f 857/1250/378 858/1322/416 849/1321/415 +f 961/1434/382 1045/1435/412 959/1436/414 +f 1029/1395/18 1018/1432/415 1027/1437/416 +f 1000/1438/21 1007/1439/437 1002/1440/422 +f 1017/1422/384 1002/1440/422 1007/1439/437 +f 985/1384/374 994/1441/418 986/1337/372 +f 816/1442/18 801/1443/398 800/1444/33 +f 288/1445/438 937/1446/71 284/1447/439 +f 48/1448/187 49/1449/440 611/1450/441 +f 51/1451/442 605/1049/203 609/1048/202 +f 523/1452/443 527/1037/195 155/1453/444 +f 57/1056/208 489/979/145 614/981/147 +f 46/1229/363 51/1451/442 50/1230/364 +f 940/968/21 321/461/445 546/913/134 +f 53/1003/166 618/1027/186 617/1454/446 +f 112/202/447 502/1455/448 99/195/449 +f 512/859/450 516/1456/451 515/1457/452 +f 117/778/449 509/1458/453 508/1459/448 +f 423/186/454 427/1460/455 575/1461/456 +f 437/907/457 445/1462/458 435/511/459 +f 148/147/460 149/1463/461 516/1456/451 +f 459/138/462 588/1464/463 589/1465/464 +f 90/552/465 96/1466/466 92/146/467 +f 500/846/468 504/1467/469 108/862/470 +f 464/253/471 594/1468/472 595/1469/473 +f 593/117/474 594/1468/472 467/252/475 +f 120/107/476 134/1470/477 122/811/478 +f 462/1471/479 448/606/480 450/409/481 +f 506/860/482 510/1472/483 132/1473/484 +f 430/586/485 581/1474/486 578/820/487 +f 116/1475/488 106/169/489 104/382/490 +f 456/624/491 589/1465/464 460/1476/492 +f 98/1477/477 87/310/493 493/521/478 +f 506/860/482 509/1458/453 130/592/494 +f 82/278/495 495/1478/496 85/277/497 +f 117/778/449 507/1479/498 120/107/476 +f 501/1480/499 104/382/490 102/170/500 +f 439/105/501 583/1481/502 437/106/457 +f 592/773/503 596/1482/504 476/519/505 +f 592/773/503 595/1469/473 479/1483/506 +f 108/862/470 114/1484/507 110/174/508 +f 134/1470/477 124/367/493 122/811/478 +f 573/1485/509 425/135/510 570/134/511 +f 476/519/505 477/1486/512 474/520/513 +f 435/511/459 446/1487/514 433/306/515 +f 433/306/515 579/1488/516 577/585/517 +f 937/1446/71 307/1489/518 284/1447/439 +f 543/934/156 362/1018/178 361/1490/519 +f 519/1491/520 157/1492/521 520/1493/522 +f 525/1494/523 520/1493/522 157/1492/521 +f 948/1020/159 560/1495/524 942/1021/181 +f 535/1496/525 879/941/106 878/943/110 +f 548/1497/526 340/1012/172 342/1498/527 +f 519/1499/520 155/1453/444 526/1500/528 +f 944/1006/110 568/1501/529 949/938/106 +f 947/1057/191 566/1502/180 942/1021/181 +f 880/1033/191 538/1503/180 881/1031/181 +f 946/1504/530 569/1505/531 944/1006/110 +f 885/1506/209 250/1507/532 880/1033/191 +f 945/1059/209 567/1508/533 947/1057/191 +f 943/1509/157 411/1510/534 946/1504/530 +f 320/467/131 545/865/535 941/963/19 +f 878/943/110 248/1511/536 884/1512/530 +f 895/1513/18 893/1514/537 335/1515/183 +f 891/1516/21 889/1517/538 332/1044/129 +f 289/1518/539 930/1061/59 931/1519/21 +f 31/1520/540 779/1521/196 486/1522/541 +f 899/1523/22 897/1524/542 338/1525/120 +f 326/1526/543 886/997/19 329/1527/164 +f 909/1528/544 900/1001/165 902/1047/201 +f 911/1071/220 919/1529/545 920/1530/546 +f 898/1531/547 913/1532/548 914/1533/549 +f 892/1534/550 906/1535/551 890/1536/552 +f 915/1537/553 896/1538/554 897/1524/542 +f 911/1539/220 902/1047/201 888/965/133 +f 903/1540/555 894/1541/556 896/1538/554 +f 906/1542/551 889/1517/538 890/1536/552 +f 914/1543/549 897/1524/542 898/1531/547 +f 907/1544/557 893/1514/537 894/1545/556 +f 794/1382/381 782/1546/31 784/1343/21 +f 912/1547/558 887/1045/199 889/1517/538 +f 893/1514/537 904/1128/273 892/1534/550 +f 905/1548/559 287/430/560 925/1549/561 +f 915/1537/553 922/1408/431 903/1550/555 +f 418/583/562 429/1551/563 416/275/481 +f 907/1544/557 924/1552/272 908/1553/274 +f 925/1554/561 910/1555/564 912/1547/558 +f 923/1556/565 906/1535/551 904/1557/273 +f 918/1558/566 914/1533/549 913/1532/548 +f 911/1539/220 917/1559/567 909/1560/544 +f 906/1542/551 925/1549/561 912/1561/558 +f 914/1543/549 921/1562/432 915/1563/553 +f 903/1540/555 916/1564/568 907/1565/557 +f 909/1528/544 918/1566/566 913/1567/548 +f 289/1518/539 936/1568/31 288/1445/438 +f 293/890/569 923/1569/565 924/1127/272 +f 920/1570/546 306/468/570 917/1559/567 +f 287/887/560 919/1571/545 925/1554/561 +f 926/1572/571 299/441/430 921/1562/432 +f 292/421/572 905/1573/559 923/1556/565 +f 306/472/570 918/1566/566 917/1574/567 +f 916/1564/568 297/448/573 295/894/574 +f 920/1530/546 286/424/575 285/886/576 +f 926/1575/571 304/433/577 301/889/578 +f 916/1576/568 293/438/569 924/1552/272 +f 303/1577/579 928/1578/22 302/1579/580 +f 932/1580/19 305/1581/581 307/1489/518 +f 331/819/117 346/1582/582 544/866/163 +f 302/1579/580 938/1007/43 300/1009/170 +f 935/1583/65 303/1577/579 305/1581/581 +f 524/1016/176 154/1584/583 525/1494/523 +f 352/1585/584 941/963/19 545/865/535 +f 946/1504/530 563/1005/168 407/1586/585 +f 315/1587/586 336/1588/587 891/961/21 +f 546/913/134 356/1231/365 358/1589/588 +f 883/1590/157 248/1511/536 533/1591/589 +f 335/1515/183 892/1534/550 336/1592/587 +f 330/1002/122 898/1531/547 899/1523/22 +f 152/1015/175 156/1036/194 522/1593/590 +f 336/1592/587 890/1536/552 891/1516/21 +f 542/295/591 940/968/21 328/296/179 +f 339/1594/592 894/1541/556 895/1595/18 +f 338/1525/120 896/1538/554 339/1594/592 +f 549/1596/593 342/1498/527 363/1597/594 +f 361/1490/519 939/992/18 543/934/156 +f 885/1506/209 246/1032/190 531/1598/595 +f 554/1599/596 354/1600/597 349/1601/598 +f 943/1509/157 407/1586/585 562/1050/204 +f 350/1602/599 554/1599/596 349/1601/598 +f 296/1603/198 934/1604/69 294/1060/210 +f 485/959/127 780/1605/22 31/1520/540 +f 47/1606/600 49/1449/440 608/1607/601 +f 555/1608/602 350/1602/599 345/1046/200 +f 553/1609/603 355/1610/604 353/1611/605 +f 550/1612/121 359/1613/606 360/1614/162 +f 552/1615/582 360/1614/162 355/1610/604 +f 364/1616/607 363/1597/594 359/1613/606 +f 885/1506/209 530/1617/608 879/941/106 +f 482/1618/609 1049/1040/196 1048/1619/22 +f 334/229/124 352/1585/584 545/865/535 +f 317/1620/610 339/1621/592 895/1622/18 +f 947/1057/191 560/1495/524 409/1623/611 +f 949/938/106 410/1624/612 945/1625/209 +f 537/1626/613 883/993/157 882/995/159 +f 565/1627/613 943/1509/157 948/1020/159 +f 538/1628/180 882/995/159 881/1031/181 +f 884/1512/530 535/1629/525 878/943/110 +f 883/1590/157 536/1630/614 884/1512/530 +f 885/1506/209 534/1631/529 251/1632/615 +f 95/144/460 496/1633/616 82/278/495 +f 512/859/450 514/1634/496 136/159/497 +f 511/1635/617 128/164/618 126/381/619 +f 472/621/620 478/1636/621 469/845/622 +f 494/308/619 499/1637/623 97/1638/617 +f 92/146/467 497/1639/624 95/144/460 +f 423/186/454 576/1640/502 421/187/457 +f 97/1641/617 90/552/465 494/325/619 +f 584/137/625 587/1642/626 588/1464/463 +f 151/1643/477 141/311/493 138/312/478 +f 577/585/517 580/1644/627 430/586/485 +f 586/560/628 460/1476/492 590/1645/629 +f 513/210/468 517/1646/469 143/788/470 +f 114/1484/507 112/202/447 110/174/508 +f 469/856/622 598/1647/630 593/117/474 +f 414/300/471 429/1551/563 572/1648/473 +f 143/788/470 149/1463/461 146/387/631 +f 441/177/491 581/1474/486 444/1649/492 +f 472/621/620 477/1486/512 597/1650/629 +f 574/1651/632 571/506/633 425/135/510 +f 586/560/628 591/1652/634 453/795/635 +f 421/582/457 428/1653/636 418/583/562 +f 126/365/619 133/1654/637 511/1655/617 +f 585/408/638 462/1471/479 450/409/481 +f 570/134/511 572/1648/473 573/1485/509 +f 99/195/449 501/1480/499 102/170/500 +f 106/169/489 505/1656/639 500/167/468 +f 439/105/501 444/1649/492 582/1657/629 +f 513/587/468 150/1658/623 518/1659/639 +f 85/277/497 98/1477/477 493/521/478 +f 136/159/497 151/1643/477 138/312/478 +f 585/408/638 591/1660/634 461/1661/640 +f 984/1662/18 966/1663/367 976/1664/368 +f 998/1308/280 990/1665/406 989/1280/399 +f 959/1666/414 960/1252/380 961/1254/382 +f 987/1339/410 972/1433/19 979/1667/411 +f 827/1258/22 819/1355/399 828/1668/58 +f 986/1669/372 977/1245/373 985/1244/374 +f 982/1263/388 976/1314/368 975/1264/389 +f 952/1290/21 1041/1286/403 962/1253/381 +f 1028/1299/69 1035/1284/402 1036/1297/383 +f 802/1670/428 803/1671/405 792/1672/380 +f 990/1665/406 999/1673/407 991/1674/408 +f 1024/1675/19 1032/1676/392 1033/1677/377 +f 795/1407/71 796/1274/395 782/1546/31 +f 965/1678/396 956/1379/375 953/1679/397 +f 964/1341/395 965/1678/396 953/1679/397 +f 1043/1350/59 1042/1680/435 1041/1286/403 +f 875/1419/435 860/1418/18 858/1373/416 +f 818/1240/372 810/1302/411 809/1681/427 +f 844/1405/429 845/1682/641 836/1133/278 +f 789/1683/22 871/1431/390 787/1684/376 +f 957/1685/22 958/1686/426 959/1666/414 +f 1032/1676/392 1025/1687/425 1033/1677/377 +f 1034/1688/394 1027/1689/416 1025/1687/425 +f 957/1690/22 1044/1691/390 955/1692/376 +f 832/1693/21 833/1349/423 822/1694/59 +f 865/1695/392 866/1374/425 856/1696/377 +f 853/1697/369 862/1424/370 854/1426/371 +f 957/1698/22 1045/1435/412 1038/1699/58 +f 816/1700/18 817/1242/374 808/1241/373 +f 819/1355/399 814/1701/388 820/1381/404 +f 1026/1702/378 1027/1437/416 1018/1432/415 +f 991/1674/408 1000/1703/21 993/1704/59 +f 789/1705/22 790/1706/426 791/1315/414 +f 970/1707/428 971/1289/405 960/1708/380 +f 1017/1709/384 1018/1432/415 1009/1268/391 +f 815/1710/413 822/1711/59 823/1712/69 +f 1015/1713/31 1016/1714/379 1007/1715/437 +f 1026/1716/378 1007/1715/437 1016/1714/379 +f 1016/1413/379 1025/1717/425 1026/1702/378 +f 843/1323/43 844/1405/429 836/1133/278 +f 784/1343/21 874/1397/403 794/1382/381 +f 783/1303/400 785/1352/397 786/1353/424 +f 1012/1718/641 1013/1329/419 1006/1331/420 +f 820/1381/404 812/1301/19 813/1380/65 +f 984/1719/18 969/1389/398 967/1720/33 +f 808/1721/373 802/1416/428 801/1443/398 +f 801/1722/398 792/1672/380 790/1387/426 +f 1000/1723/21 1001/1404/423 993/1724/59 +f 823/1725/69 807/1726/368 815/1727/413 +f 845/1728/641 830/1371/407 837/1134/279 +f 853/1729/369 846/1730/419 852/1731/436 +f 811/1417/434 812/1301/19 795/1407/71 +f 839/1732/31 847/1733/379 840/1734/437 +f 986/1669/372 979/1667/411 978/1735/427 +f 873/1272/393 875/1419/435 867/1273/394 +f 803/1671/405 795/1407/71 782/1546/31 +f 825/1326/417 813/1380/65 826/1300/410 +f 824/1348/418 835/1260/385 825/1326/417 +f 869/1256/383 853/1697/369 851/1736/433 +f 822/1737/59 817/1327/374 823/1738/69 +f 993/1739/59 983/1740/413 991/1741/408 +f 806/1742/389 798/1235/367 797/1295/396 +f 1011/1394/429 1012/1718/641 1004/1306/278 +f 971/1289/405 963/1340/71 950/1342/31 +f 1042/1680/435 1029/1298/18 1027/1689/416 +f 853/1729/369 844/1405/429 851/1743/433 +f 852/1744/436 838/1429/420 845/1682/641 +f 1044/1745/390 1039/1746/65 1031/1345/370 +f 863/1747/19 846/1730/419 854/1748/371 +f 970/1707/428 958/1749/426 969/1277/398 +f 848/1259/384 834/1750/422 840/1751/437 +f 827/1258/22 825/1326/417 835/1260/385 +f 972/1433/19 973/1752/409 963/1340/71 +f 1022/1421/369 1011/1394/429 1020/1753/433 +f 991/1741/408 982/1754/388 990/1755/406 +f 865/1695/392 863/1756/19 864/1757/65 +f 996/1269/22 1004/1306/278 998/1308/280 +f 975/1758/389 966/1663/367 965/1759/396 +f 974/1262/387 965/1759/396 973/1752/409 +f 972/1433/19 980/1760/434 979/1667/411 +f 782/1546/31 783/1303/400 784/1343/21 +f 1040/1761/393 1042/1680/435 1034/1362/394 +f 848/1762/384 849/1321/415 842/1324/391 +f 1031/1238/370 1024/1763/19 1023/1239/371 +f 842/1324/391 827/1258/22 835/1260/385 +f 989/1280/399 982/1754/388 981/1288/404 +f 806/1319/389 815/1727/413 807/1726/368 +f 995/1338/417 988/1287/65 987/1339/410 +f 964/1341/395 952/1290/21 950/1342/31 +f 970/1391/428 979/1667/411 980/1760/434 +f 857/1764/378 840/1734/437 847/1733/379 +f 1006/1335/420 1000/1765/21 999/1336/407 +f 996/1269/22 995/1338/417 1003/1270/385 +f 954/1766/424 1044/1691/390 1037/1283/401 +f 821/1767/406 815/1710/413 814/1701/388 +f 840/1751/437 832/1768/21 839/1769/31 +f 486/1522/541 778/1770/18 32/1771/642 +f 482/1618/609 1047/1053/126 599/1772/643 +f 32/1773/642 777/1774/138 487/1232/366 +f 551/1775/644 353/1611/605 354/1776/597 +f 882/995/159 532/1777/645 881/1031/181 +f 949/938/106 945/1625/209 408/939/107 +f 879/941/106 530/1617/608 529/942/109 +f 656/944/111 654/1137/282 642/945/112 +f 652/947/114 664/1110/256 663/948/115 +f 331/819/117 539/458/646 308/460/118 +f 323/951/119 322/954/121 899/952/22 +f 322/954/121 325/1778/647 330/955/122 +f 540/228/123 311/454/162 901/956/22 +f 484/957/125 774/970/19 781/958/126 +f 312/960/128 315/1587/586 891/961/21 +f 337/613/130 319/466/648 320/467/131 +f 333/964/132 887/1045/199 888/965/133 +f 546/913/134 358/1589/588 357/967/135 +f 484/957/125 483/975/141 775/969/136 +f 602/971/137 1052/983/21 1051/972/138 +f 33/974/140 776/1233/21 775/969/136 +f 731/976/142 743/1210/345 732/977/143 +f 489/979/145 488/1011/171 615/980/146 +f 601/982/148 1053/1228/136 1052/983/21 +f 54/984/149 492/1004/167 55/985/150 +f 480/973/139 1051/972/138 1050/987/18 +f 612/989/153 47/1606/600 607/990/154 +f 308/801/118 327/803/649 543/934/156 +f 883/993/157 533/1779/589 247/994/158 +f 939/950/18 341/1780/650 344/996/160 +f 886/997/19 310/1781/651 309/998/161 +f 311/454/162 313/222/652 544/866/163 +f 329/1000/164 902/1047/201 900/1001/165 +f 53/1003/166 617/1454/446 55/985/150 +f 949/938/106 564/940/108 563/1005/168 +f 938/1007/43 933/1042/33 298/1008/169 +f 54/1010/149 616/1782/151 615/980/146 +f 340/1012/172 547/1783/653 366/1013/173 +f 152/1015/175 521/1784/654 524/1016/176 +f 940/968/21 357/967/135 362/1018/178 +f 566/1019/180 565/1785/613 948/1020/159 +f 318/1022/182 317/1786/610 895/1023/18 +f 491/1025/184 52/1055/207 56/1026/185 +f 48/1028/187 611/1787/441 610/1029/188 +f 881/1031/181 532/1777/645 246/1032/190 +f 901/956/22 348/1038/121 347/1034/192 +f 153/1035/193 522/1593/590 156/1036/194 +f 544/866/163 346/1582/582 348/1038/121 +f 481/1039/152 1050/1788/18 1049/1040/196 +f 933/1042/33 929/1789/18 296/1043/198 +f 332/1044/129 889/1517/538 887/1045/199 +f 366/1013/173 555/1608/602 345/1046/200 +f 886/966/19 888/965/133 902/1047/201 +f 604/1030/189 610/1029/188 609/1048/202 +f 948/1020/159 943/1509/157 562/1050/204 +f 600/1052/206 599/1772/643 1047/1053/126 +f 52/1055/207 490/1790/655 57/1056/208 +f 947/1057/191 409/1623/611 408/1058/107 +f 294/1060/210 934/1604/69 930/1061/59 +f 620/1063/212 643/1105/251 641/1064/213 +f 633/1066/215 636/1070/219 634/1067/216 +f 635/1069/218 638/1083/232 636/1070/219 +f 887/1045/199 910/1791/564 911/1071/220 +f 754/1072/221 766/1225/360 765/1073/222 +f 692/1075/224 704/1179/321 703/1076/225 +f 630/1078/227 628/1087/236 629/1079/228 +f 639/1065/214 641/1064/213 640/1081/230 +f 637/1082/231 640/1081/230 638/1083/232 +f 626/1084/233 624/1092/239 625/1085/234 +f 628/1087/236 626/1084/233 627/1086/235 +f 632/1068/217 634/1067/216 630/1088/227 +f 648/1090/237 647/1101/247 628/1087/236 +f 641/1064/213 653/1109/255 652/947/114 +f 646/1091/238 645/1102/248 624/1092/239 +f 638/1083/232 651/949/116 650/1093/240 +f 689/1094/241 688/1144/289 676/1095/242 +f 634/1067/216 649/1104/250 648/1097/237 +f 758/1098/244 757/1116/262 745/1099/245 +f 647/1101/247 646/1091/238 626/1084/233 +f 645/1102/248 644/946/113 622/1103/249 +f 636/1070/219 650/1093/240 649/1104/250 +f 642/945/112 655/1107/253 643/1105/251 +f 655/1107/253 667/1124/269 665/1108/254 +f 653/1109/255 665/1108/254 664/1110/256 +f 651/949/116 663/948/115 662/1111/257 +f 676/1095/242 675/1126/271 663/948/115 +f 670/1112/258 681/1151/296 680/1113/259 +f 770/1115/261 769/1218/354 757/1116/262 +f 660/1117/263 659/1118/264 647/1101/247 +f 659/1118/264 658/1119/265 646/1091/238 +f 658/1119/265 657/1120/266 645/1102/248 +f 657/1120/266 656/944/111 644/946/113 +f 650/1093/240 662/1111/257 661/1121/267 +f 649/1104/250 661/1121/267 660/1122/263 +f 666/1123/268 677/1096/243 665/1108/254 +f 674/1125/270 673/1130/275 661/1121/267 +f 658/1119/265 671/1132/277 670/1112/258 +f 675/1126/271 674/1125/270 662/1111/257 +f 924/1127/272 923/1569/565 904/1128/273 +f 673/1130/275 683/1154/294 660/1122/263 +f 680/1113/259 692/1075/224 691/1077/226 +f 659/1118/264 672/1142/287 671/1132/277 +f 836/1133/278 845/1728/641 837/1134/279 +f 657/1120/266 670/1112/258 669/1114/260 +f 656/944/111 669/1114/260 668/1136/281 +f 773/1138/283 772/1221/357 760/1139/284 +f 678/1141/286 689/1094/241 677/1096/243 +f 672/1142/287 684/1150/295 682/1143/288 +f 688/1144/289 687/1152/297 675/1126/271 +f 677/1096/243 676/1095/242 664/1110/256 +f 686/1145/290 685/1153/298 673/1130/275 +f 741/1146/291 753/1074/223 752/1147/292 +f 683/1149/294 695/1161/300 684/1150/295 +f 640/1081/230 652/947/114 651/949/116 +f 671/1132/277 682/1143/288 681/1151/296 +f 687/1152/297 686/1145/290 674/1125/270 +f 669/1114/260 680/1113/259 679/1131/276 +f 685/1153/298 695/1156/300 683/1154/294 +f 697/1155/299 707/1175/318 695/1156/300 +f 701/1157/301 700/1178/320 688/1144/289 +f 699/1158/302 698/1165/308 686/1145/290 +f 624/1092/239 622/1103/249 623/1159/303 +f 622/1103/249 619/1106/252 621/1160/304 +f 619/1106/252 643/1105/251 620/1063/212 +f 695/1161/300 707/1181/318 696/1162/305 +f 684/1150/295 696/1162/305 694/1163/306 +f 682/1143/288 694/1163/306 693/1164/307 +f 681/1151/296 693/1164/307 692/1075/224 +f 698/1165/308 697/1155/299 685/1153/298 +f 679/1131/276 691/1077/226 690/1166/309 +f 702/1167/310 713/1177/319 701/1157/301 +f 710/1168/311 709/1174/317 697/1155/299 +f 694/1163/306 706/1180/322 705/1169/312 +f 711/1170/313 710/1168/311 698/1165/308 +f 748/1171/314 747/1212/349 735/1172/315 +f 709/1174/317 719/1194/334 707/1175/318 +f 723/1176/71 722/1184/325 710/1168/311 +f 713/1177/319 712/1189/330 700/1178/320 +f 668/1136/281 679/1131/276 678/1141/286 +f 693/1164/307 705/1169/312 704/1179/321 +f 696/1162/305 708/1182/323 706/1180/322 +f 707/1181/318 719/1207/334 708/1182/323 +f 714/1183/324 725/1199/339 713/1177/319 +f 722/1184/325 721/1193/333 709/1174/317 +f 755/1185/326 767/1223/355 756/1186/327 +f 724/1188/329 723/1176/71 711/1170/313 +f 718/1190/331 730/1204/343 729/1191/332 +f 721/1193/333 731/1203/142 719/1194/334 +f 703/1076/225 715/1196/336 714/1183/324 +f 708/1182/323 720/978/144 718/1190/331 +f 706/1180/322 718/1190/331 717/1192/33 +f 705/1169/312 717/1192/33 716/1195/335 +f 704/1179/321 716/1195/335 715/1196/336 +f 734/1197/337 733/1202/342 721/1193/333 +f 726/1198/338 737/1200/340 725/1199/339 +f 737/1200/340 736/1173/316 724/1188/329 +f 691/1077/226 703/1076/225 702/1167/310 +f 735/1172/315 734/1197/337 722/1184/325 +f 716/1195/335 728/1205/344 727/1201/341 +f 733/1202/342 743/1206/345 731/1203/142 +f 715/1196/336 727/1201/341 726/1198/338 +f 720/978/144 732/977/143 730/1204/343 +f 736/1173/316 735/1172/315 723/1176/71 +f 717/1192/33 729/1191/332 728/1205/344 +f 745/1099/245 755/1215/326 743/1206/345 +f 719/1207/334 731/976/142 720/978/144 +f 738/1208/346 749/1209/347 737/1200/340 +f 749/1209/347 748/1171/314 736/1173/316 +f 730/1204/343 742/1216/352 741/1146/291 +f 643/1105/251 655/1107/253 653/1109/255 +f 746/1100/246 745/1099/245 733/1202/342 +f 727/1201/341 739/1211/348 738/1208/346 +f 743/1210/345 755/1185/326 744/1187/328 +f 728/1205/344 740/1148/293 739/1211/348 +f 729/1191/332 741/1146/291 740/1148/293 +f 747/1212/349 746/1100/246 734/1197/337 +f 690/1166/309 701/1157/301 689/1094/241 +f 725/1199/339 724/1188/329 712/1189/330 +f 750/1213/350 761/1140/285 749/1209/347 +f 712/1189/330 711/1170/313 699/1158/302 +f 759/1214/351 758/1098/244 746/1100/246 +f 760/1139/284 759/1214/351 747/1212/349 +f 761/1140/285 760/1139/284 748/1171/314 +f 757/1116/262 767/1219/355 755/1215/326 +f 739/1211/348 751/1217/353 750/1213/350 +f 744/1187/328 756/1186/327 754/1072/221 +f 742/1216/352 754/1072/221 753/1074/223 +f 654/1137/282 667/1124/269 655/1107/253 +f 740/1148/293 752/1147/292 751/1217/353 +f 769/1218/354 1054/1792/656 767/1219/355 +f 762/1220/356 773/1138/283 761/1140/285 +f 660/1117/263 683/1149/294 672/1142/287 +f 772/1221/357 771/1222/358 759/1214/351 +f 771/1222/358 770/1115/261 758/1098/244 +f 654/1137/282 668/1136/281 666/1123/268 +f 751/1217/353 763/1227/362 762/1220/356 +f 767/1223/355 1054/1793/656 768/1224/359 +f 756/1186/327 768/1224/359 766/1225/360 +f 753/1074/223 765/1073/222 764/1226/361 +f 700/1178/320 699/1158/302 687/1152/297 +f 752/1147/292 764/1226/361 763/1227/362 +f 732/977/143 744/1187/328 742/1216/352 +f 601/982/148 600/1052/206 1046/1054/19 +f 613/991/155 607/990/154 46/1229/363 +f 941/963/19 351/1794/657 356/1231/365 +f 487/1232/366 777/1774/138 776/1233/21 +f 816/1234/18 800/1795/33 798/1235/367 +f 1022/1237/369 1030/1796/421 1031/1238/370 +f 818/1240/372 809/1681/427 808/1241/373 +f 984/1243/18 992/1797/69 985/1244/374 +f 788/1246/375 799/1798/43 789/1247/22 +f 856/1249/377 866/1799/425 857/1250/378 +f 960/1252/380 971/1289/405 962/1253/381 +f 876/1255/59 868/1305/402 869/1256/383 +f 827/1258/22 843/1323/43 836/1133/278 +f 848/1259/384 842/1324/391 835/1260/385 +f 974/1262/387 981/1288/404 982/1263/388 +f 871/1265/390 872/1800/58 864/1266/65 +f 1009/1268/391 1010/1393/43 996/1269/22 +f 865/1271/392 877/1309/412 873/1272/393 +f 796/1274/395 805/1296/409 797/1275/396 +f 969/1277/398 958/1749/426 968/1278/43 +f 996/1269/22 998/1308/280 989/1280/399 +f 951/1282/400 954/1766/424 1037/1283/401 +f 1040/1285/393 961/1434/382 962/1253/381 +f 988/1287/65 997/1281/58 989/1280/399 +f 971/1289/405 950/1342/31 952/1290/21 +f 821/1291/406 837/1354/279 830/1292/407 +f 804/1294/387 806/1742/389 797/1295/396 +f 1036/1297/383 1020/1415/433 1029/1298/18 +f 826/1300/410 813/1380/65 812/1301/19 +f 783/1303/400 786/1430/424 870/1304/401 +f 1004/1306/278 1012/1801/641 1005/1307/279 +f 877/1309/412 865/1271/392 864/1310/65 +f 983/1312/413 992/1802/69 984/1313/18 +f 791/1315/414 790/1706/426 792/1316/380 +f 804/1294/387 820/1381/404 814/1318/388 +f 860/1320/18 850/1406/33 849/1321/415 +f 849/1321/415 850/1406/33 843/1323/43 +f 818/1325/372 824/1328/418 825/1326/417 +f 817/1327/374 833/1803/423 824/1328/418 +f 1013/1329/419 1014/1804/71 1015/1330/31 +f 800/1332/33 799/1805/43 788/1333/375 +f 1005/1307/279 1012/1801/641 1006/1335/420 +f 986/1337/372 994/1441/418 995/1338/417 +f 963/1340/71 973/1752/409 964/1341/395 +f 784/1343/21 783/1303/400 868/1305/402 +f 1037/1344/401 1044/1745/390 1031/1345/370 +f 834/1347/422 841/1806/386 824/1348/418 +f 952/1290/21 951/1282/400 1035/1284/402 +f 832/1351/21 822/1807/59 831/1293/408 +f 785/1352/397 788/1246/375 787/1248/376 +f 837/1354/279 821/1291/406 819/1355/399 +f 956/1356/375 968/1808/43 957/1357/22 +f 1045/1359/412 1032/1363/392 1039/1360/65 +f 1045/1359/412 1040/1761/393 1034/1362/394 +f 791/1364/414 793/1809/382 873/1365/393 +f 789/1367/22 791/1364/414 877/1366/412 +f 838/1369/420 839/1810/31 832/1370/21 +f 867/1372/394 875/1419/435 858/1373/416 +f 870/1375/401 871/1265/390 862/1267/370 +f 966/1377/367 967/1811/33 968/1378/43 +f 813/1380/65 828/1668/58 819/1355/399 +f 792/1316/380 803/1671/405 794/1382/381 +f 1037/1344/401 1030/1346/421 1036/1297/383 +f 993/1383/59 1001/1812/423 985/1384/374 +f 800/1386/33 801/1722/398 790/1387/426 +f 969/1389/398 977/1813/373 978/1390/427 +f 994/1392/418 1008/1814/386 1003/1270/385 +f 1010/1393/43 1019/1396/33 1011/1394/429 +f 1029/1395/18 1020/1753/433 1011/1394/429 +f 873/1365/393 793/1809/382 794/1382/381 +f 951/1282/400 964/1341/395 953/1398/397 +f 644/946/113 642/945/112 619/1106/252 +f 1024/1400/19 1014/1815/71 1013/1401/419 +f 953/1398/397 956/1356/375 955/1358/376 +f 1002/1403/422 1008/1814/386 994/1392/418 +f 860/1320/18 851/1743/433 844/1405/429 +f 812/1301/19 804/1294/387 805/1296/409 +f 797/1275/396 798/1334/367 788/1333/375 +f 299/893/430 297/444/573 922/1408/431 +f 863/1410/19 856/1249/377 847/1251/379 +f 1024/1412/19 1033/1816/377 1016/1413/379 +f 1036/1297/383 1030/1796/421 1022/1237/369 +f 802/1416/428 809/1817/427 810/1302/411 +f 869/1256/383 851/1736/433 860/1418/18 +f 876/1255/59 859/1257/69 875/1419/435 +f 1023/1402/371 1013/1401/419 1021/1420/436 +f 1017/1422/384 1009/1268/391 1003/1270/385 +f 862/1424/370 864/1818/65 863/1425/19 +f 846/1427/419 855/1819/71 839/1428/31 +f 786/1430/424 787/1684/376 871/1431/390 +f 870/1375/401 861/1376/421 869/1256/383 +f 1018/1432/415 1019/1396/33 1010/1393/43 +f 972/1433/19 988/1287/65 981/1288/404 +f 857/1250/378 866/1799/425 858/1322/416 +f 961/1434/382 1040/1285/393 1045/1435/412 +f 1029/1395/18 1019/1396/33 1018/1432/415 +f 1000/1438/21 1015/1820/31 1007/1439/437 +f 1017/1422/384 1008/1423/386 1002/1440/422 +f 985/1384/374 1001/1812/423 994/1441/418 +f 816/1442/18 808/1721/373 801/1443/398 +f 288/1445/438 936/1568/31 937/1446/71 +f 48/1448/187 608/1607/601 49/1449/440 +f 51/1451/442 606/1821/655 605/1049/203 +f 523/1452/443 153/1035/193 527/1037/195 +f 57/1056/208 490/1790/655 489/979/145 +f 46/1229/363 606/1821/655 51/1451/442 +f 940/968/21 324/492/658 321/461/445 +f 53/1003/166 491/1025/184 618/1027/186 +f 112/202/447 503/1822/659 502/1455/448 +f 512/859/450 148/147/460 516/1456/451 +f 117/778/449 130/592/494 509/1458/453 +f 423/186/454 571/506/633 427/1460/455 +f 437/907/457 583/1823/502 445/1462/458 +f 148/147/460 146/387/631 149/1463/461 +f 459/138/462 584/137/625 588/1464/463 +f 90/552/465 498/1824/660 96/1466/466 +f 500/846/468 505/1825/639 504/1467/469 +f 464/253/471 467/252/475 594/1468/472 +f 593/117/474 598/1647/630 594/1468/472 +f 120/107/476 507/1479/498 134/1470/477 +f 462/1471/479 587/1642/626 448/606/480 +f 506/860/482 128/164/618 510/1472/483 +f 430/586/485 580/1644/627 581/1474/486 +f 116/1475/488 115/1826/661 106/169/489 +f 456/624/491 459/138/462 589/1465/464 +f 98/1477/477 499/1637/623 87/310/493 +f 506/860/482 132/1473/484 509/1458/453 +f 82/278/495 496/1633/616 495/1478/496 +f 117/778/449 508/1459/448 507/1479/498 +f 501/1480/499 116/1475/488 104/382/490 +f 439/105/501 582/1657/629 583/1481/502 +f 592/773/503 479/1483/506 596/1482/504 +f 592/773/503 464/253/471 595/1469/473 +f 108/862/470 504/1467/469 114/1484/507 +f 134/1470/477 133/1654/637 124/367/493 +f 573/1485/509 574/1651/632 425/135/510 +f 476/519/505 596/1482/504 477/1486/512 +f 435/511/459 445/1462/458 446/1487/514 +f 433/306/515 446/1487/514 579/1488/516 +f 937/1446/71 932/1580/19 307/1489/518 +f 543/934/156 328/296/179 362/1018/178 +f 519/1491/520 526/1827/528 157/1492/521 +f 525/1494/523 154/1584/583 520/1493/522 +f 948/1020/159 561/1051/205 560/1495/524 +f 535/1496/525 534/1828/529 879/941/106 +f 548/1497/526 547/1783/653 340/1012/172 +f 519/1499/520 523/1452/443 155/1453/444 +f 944/1006/110 569/1829/531 568/1501/529 +f 947/1057/191 567/1830/533 566/1502/180 +f 880/1033/191 250/1831/532 538/1503/180 +f 946/1504/530 411/1832/534 569/1505/531 +f 885/1506/209 251/1833/615 250/1507/532 +f 945/1059/209 410/1834/612 567/1508/533 +f 943/1509/157 412/1835/662 411/1510/534 +f 320/467/131 316/208/663 545/865/535 +f 878/943/110 529/942/109 248/1511/536 +f 895/1513/18 894/1545/556 893/1514/537 +f 891/1516/21 890/1536/552 889/1517/538 +f 289/1518/539 291/1062/211 930/1061/59 +f 31/1520/540 780/1605/22 779/1521/196 +f 899/1523/22 898/1531/547 897/1524/542 +f 326/1526/543 310/1781/651 886/997/19 +f 909/1528/544 913/1567/548 900/1001/165 +f 911/1071/220 910/1791/564 919/1529/545 +f 898/1531/547 900/1001/165 913/1532/548 +f 892/1534/550 904/1557/273 906/1535/551 +f 915/1537/553 903/1550/555 896/1538/554 +f 911/1539/220 909/1560/544 902/1047/201 +f 903/1540/555 907/1565/557 894/1541/556 +f 906/1542/551 912/1561/558 889/1517/538 +f 914/1543/549 915/1563/553 897/1524/542 +f 907/1544/557 908/1553/274 893/1514/537 +f 794/1382/381 803/1671/405 782/1546/31 +f 912/1547/558 910/1555/564 887/1045/199 +f 893/1514/537 908/1129/274 904/1128/273 +f 905/1548/559 290/431/664 287/430/560 +f 915/1537/553 921/1409/432 922/1408/431 +f 418/583/562 428/1653/636 429/1551/563 +f 907/1544/557 916/1576/568 924/1552/272 +f 925/1554/561 919/1571/545 910/1555/564 +f 923/1556/565 905/1573/559 906/1535/551 +f 918/1558/566 926/1575/571 914/1533/549 +f 911/1539/220 920/1570/546 917/1559/567 +f 906/1542/551 905/1548/559 925/1549/561 +f 914/1543/549 926/1572/571 921/1562/432 +f 903/1540/555 922/1836/431 916/1564/568 +f 909/1528/544 917/1574/567 918/1566/566 +f 289/1518/539 931/1519/21 936/1568/31 +f 293/890/569 292/435/572 923/1569/565 +f 920/1570/546 285/899/576 306/468/570 +f 287/887/560 286/426/575 919/1571/545 +f 926/1572/571 301/892/578 299/441/430 +f 292/421/572 290/885/664 905/1573/559 +f 306/472/570 304/900/577 918/1566/566 +f 916/1564/568 922/1836/431 297/448/573 +f 920/1530/546 919/1529/545 286/424/575 +f 926/1575/571 918/1558/566 304/433/577 +f 916/1576/568 295/891/574 293/438/569 +f 303/1577/579 927/1837/58 928/1578/22 +f 932/1580/19 935/1583/65 305/1581/581 +f 331/819/117 344/996/160 346/1582/582 +f 302/1579/580 928/1578/22 938/1007/43 +f 935/1583/65 927/1837/58 303/1577/579 +f 524/1016/176 521/1784/654 154/1584/583 +f 352/1585/584 351/1794/657 941/963/19 +f 946/1504/530 944/1006/110 563/1005/168 +f 315/1587/586 314/1838/665 336/1588/587 +f 546/913/134 337/613/130 356/1231/365 +f 883/1590/157 884/1512/530 248/1511/536 +f 335/1515/183 893/1514/537 892/1534/550 +f 330/1002/122 900/1001/165 898/1531/547 +f 152/1015/175 528/1017/177 156/1036/194 +f 336/1592/587 892/1534/550 890/1536/552 +f 542/295/591 324/492/658 940/968/21 +f 339/1594/592 896/1538/554 894/1541/556 +f 338/1525/120 897/1524/542 896/1538/554 +f 549/1596/593 548/1497/526 342/1498/527 +f 361/1490/519 341/1839/650 939/992/18 +f 885/1506/209 880/1033/191 246/1032/190 +f 554/1599/596 551/1840/644 354/1600/597 +f 943/1509/157 946/1504/530 407/1586/585 +f 350/1602/599 365/1841/666 554/1599/596 +f 296/1603/198 929/1842/18 934/1604/69 +f 485/959/127 781/958/126 780/1605/22 +f 47/1606/600 612/989/153 49/1449/440 +f 555/1608/602 365/1841/666 350/1602/599 +f 553/1609/603 552/1615/582 355/1610/604 +f 550/1612/121 364/1616/607 359/1613/606 +f 552/1615/582 550/1612/121 360/1614/162 +f 364/1616/607 549/1596/593 363/1597/594 +f 885/1506/209 531/1598/595 530/1617/608 +f 482/1618/609 603/1041/197 1049/1040/196 +f 334/229/124 347/1034/192 352/1585/584 +f 317/1620/610 541/1843/667 339/1621/592 +f 947/1057/191 942/1021/181 560/1495/524 +f 949/938/106 568/1844/529 410/1624/612 +f 537/1626/613 249/1845/662 883/993/157 +f 565/1627/613 412/1846/662 943/1509/157 +f 538/1628/180 537/1847/613 882/995/159 +f 884/1512/530 536/1848/614 535/1629/525 +f 883/1590/157 249/1849/662 536/1630/614 +f 885/1506/209 879/941/106 534/1631/529 +f 95/144/460 497/1639/624 496/1633/616 +f 512/859/450 515/1457/452 514/1634/496 +f 511/1635/617 510/1472/483 128/164/618 +f 472/621/620 597/1650/629 478/1636/621 +f 494/308/619 87/310/493 499/1637/623 +f 92/146/467 96/1466/466 497/1639/624 +f 423/186/454 575/1461/456 576/1640/502 +f 97/1641/617 498/1824/660 90/552/465 +f 584/137/625 448/606/480 587/1642/626 +f 151/1643/477 150/1658/623 141/311/493 +f 577/585/517 579/1488/516 580/1644/627 +f 586/560/628 456/624/491 460/1476/492 +f 513/210/468 518/1850/639 517/1646/469 +f 114/1484/507 503/1822/659 112/202/447 +f 469/856/622 478/1851/621 598/1647/630 +f 414/300/471 416/275/481 429/1551/563 +f 143/788/470 517/1646/469 149/1463/461 +f 441/177/491 578/820/487 581/1474/486 +f 472/621/620 474/520/513 477/1486/512 +f 574/1651/632 427/1460/455 571/506/633 +f 586/560/628 590/1645/629 591/1652/634 +f 421/582/457 576/1852/502 428/1653/636 +f 126/365/619 124/367/493 133/1654/637 +f 585/408/638 461/1661/640 462/1471/479 +f 570/134/511 414/300/471 572/1648/473 +f 99/195/449 502/1455/448 501/1480/499 +f 106/169/489 115/1826/661 505/1656/639 +f 439/105/501 441/177/491 444/1649/492 +f 513/587/468 141/311/493 150/1658/623 +f 85/277/497 495/1478/496 98/1477/477 +f 136/159/497 514/1634/496 151/1643/477 +f 585/408/638 453/918/635 591/1660/634 +f 984/1662/18 967/1853/33 966/1663/367 +f 998/1308/280 1005/1854/279 990/1665/406 +f 959/1666/414 958/1686/426 960/1252/380 +f 987/1339/410 988/1287/65 972/1433/19 +f 827/1258/22 829/1135/280 819/1355/399 +f 986/1669/372 978/1735/427 977/1245/373 +f 982/1263/388 983/1312/413 976/1314/368 +f 952/1290/21 1043/1350/59 1041/1286/403 +f 1028/1299/69 1043/1350/59 1035/1284/402 +f 802/1670/428 811/1417/434 803/1671/405 +f 990/1665/406 1005/1854/279 999/1673/407 +f 1024/1675/19 1039/1855/65 1032/1676/392 +f 795/1407/71 805/1296/409 796/1274/395 +f 965/1678/396 966/1377/367 956/1379/375 +f 964/1341/395 973/1752/409 965/1678/396 +f 1043/1350/59 1028/1299/69 1042/1680/435 +f 875/1419/435 859/1257/69 860/1418/18 +f 818/1240/372 826/1300/410 810/1302/411 +f 844/1405/429 852/1744/436 845/1682/641 +f 789/1683/22 872/1856/58 871/1431/390 +f 957/1685/22 968/1857/43 958/1686/426 +f 1032/1676/392 1034/1688/394 1025/1687/425 +f 1034/1688/394 1042/1680/435 1027/1689/416 +f 957/1690/22 1038/1858/58 1044/1691/390 +f 832/1693/21 834/1347/422 833/1349/423 +f 865/1695/392 867/1372/394 866/1374/425 +f 853/1697/369 861/1859/421 862/1424/370 +f 957/1698/22 959/1436/414 1045/1435/412 +f 816/1700/18 823/1860/69 817/1242/374 +f 819/1355/399 821/1767/406 814/1701/388 +f 1026/1702/378 1025/1717/425 1027/1437/416 +f 991/1674/408 999/1673/407 1000/1703/21 +f 789/1705/22 799/1861/43 790/1706/426 +f 970/1707/428 980/1760/434 971/1289/405 +f 1017/1709/384 1026/1716/378 1018/1432/415 +f 815/1710/413 831/1862/408 822/1711/59 +f 1015/1713/31 1014/1863/71 1016/1714/379 +f 1026/1716/378 1017/1709/384 1007/1715/437 +f 1016/1413/379 1033/1816/377 1025/1717/425 +f 843/1323/43 850/1406/33 844/1405/429 +f 784/1343/21 876/1255/59 874/1397/403 +f 783/1303/400 796/1274/395 785/1352/397 +f 1012/1718/641 1021/1864/436 1013/1329/419 +f 820/1381/404 804/1294/387 812/1301/19 +f 984/1719/18 977/1813/373 969/1389/398 +f 808/1721/373 809/1817/427 802/1416/428 +f 801/1722/398 802/1670/428 792/1672/380 +f 1000/1723/21 1002/1403/422 1001/1404/423 +f 823/1725/69 816/1865/18 807/1726/368 +f 845/1728/641 838/1369/420 830/1371/407 +f 853/1729/369 854/1748/371 846/1730/419 +f 811/1417/434 810/1302/411 812/1301/19 +f 839/1732/31 855/1866/71 847/1733/379 +f 986/1669/372 987/1339/410 979/1667/411 +f 873/1272/393 874/1397/403 875/1419/435 +f 803/1671/405 811/1417/434 795/1407/71 +f 825/1326/417 828/1668/58 813/1380/65 +f 824/1348/418 841/1806/386 835/1260/385 +f 869/1256/383 861/1859/421 853/1697/369 +f 822/1737/59 833/1803/423 817/1327/374 +f 993/1739/59 992/1867/69 983/1740/413 +f 806/1742/389 807/1236/368 798/1235/367 +f 1011/1394/429 1021/1864/436 1012/1718/641 +f 971/1289/405 980/1760/434 963/1340/71 +f 1042/1680/435 1028/1299/69 1029/1298/18 +f 853/1729/369 852/1731/436 844/1405/429 +f 852/1744/436 846/1427/419 838/1429/420 +f 1044/1745/390 1038/1868/58 1039/1746/65 +f 863/1747/19 855/1869/71 846/1730/419 +f 970/1707/428 960/1708/380 958/1749/426 +f 848/1259/384 841/1261/386 834/1750/422 +f 827/1258/22 828/1668/58 825/1326/417 +f 972/1433/19 974/1262/387 973/1752/409 +f 1022/1421/369 1021/1420/436 1011/1394/429 +f 991/1741/408 983/1740/413 982/1754/388 +f 865/1695/392 856/1696/377 863/1756/19 +f 996/1269/22 1010/1393/43 1004/1306/278 +f 975/1758/389 976/1664/368 966/1663/367 +f 974/1262/387 975/1758/389 965/1759/396 +f 972/1433/19 963/1340/71 980/1760/434 +f 782/1546/31 796/1274/395 783/1303/400 +f 1040/1761/393 1041/1286/403 1042/1680/435 +f 848/1762/384 857/1764/378 849/1321/415 +f 1031/1238/370 1039/1870/65 1024/1763/19 +f 842/1324/391 843/1323/43 827/1258/22 +f 989/1280/399 990/1755/406 982/1754/388 +f 806/1319/389 814/1318/388 815/1727/413 +f 995/1338/417 997/1281/58 988/1287/65 +f 964/1341/395 951/1282/400 952/1290/21 +f 970/1391/428 978/1390/427 979/1667/411 +f 857/1764/378 848/1762/384 840/1734/437 +f 1006/1335/420 1015/1871/31 1000/1765/21 +f 996/1269/22 997/1281/58 995/1338/417 +f 954/1766/424 955/1692/376 1044/1691/390 +f 821/1767/406 831/1862/408 815/1710/413 +f 840/1751/437 834/1750/422 832/1768/21 +f 486/1522/541 779/1521/196 778/1770/18 +f 482/1618/609 1048/1619/22 1047/1053/126 +f 32/1773/642 778/1872/18 777/1774/138 +f 551/1775/644 553/1609/603 353/1611/605 +f 882/995/159 247/994/158 532/1777/645 diff --git a/src/main/resources/assets/hbm/models/weapons/tesla_cannon.obj b/src/main/resources/assets/hbm/models/weapons/tesla_cannon.obj new file mode 100644 index 000000000..912159dad --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/tesla_cannon.obj @@ -0,0 +1,8340 @@ +# Blender v2.79 (sub 0) OBJ File: 'tesla_cannon.blend' +# www.blender.org +o Capacitor +v 0.000000 -0.125000 2.000000 +v -0.176777 -0.198223 2.000000 +v -0.250000 -0.375000 2.000000 +v -0.176777 -0.551777 2.000000 +v 0.000000 -0.625000 2.000000 +v 0.176777 -0.551777 2.000000 +v 0.250000 -0.375000 2.000000 +v 0.176777 -0.198223 2.000000 +v 0.000000 -0.125000 1.000000 +v -0.176777 -0.198223 1.000000 +v -0.250000 -0.375000 1.000000 +v -0.176777 -0.551777 1.000000 +v 0.000000 -0.625000 1.000000 +v 0.176777 -0.551777 1.000000 +v 0.250000 -0.375000 1.000000 +v 0.176777 -0.198223 1.000000 +vt 0.034286 0.057830 +vt 0.022913 0.028986 +vt 0.034286 0.000141 +vt 0.034286 0.058112 +vt 0.045659 0.086957 +vt 0.034286 0.115801 +vt 0.045659 0.028986 +vt 0.042328 0.049382 +vt 0.026244 0.049382 +vt 0.026244 0.008590 +vt 0.042328 0.008590 +vt 0.026244 0.107353 +vt 0.022913 0.086957 +vt 0.026244 0.066561 +vt 0.042328 0.066561 +vt 0.042328 0.107353 +vt 0.091429 0.152174 +vt 0.045714 0.173913 +vt 0.045714 0.152174 +vt 0.091429 0.021739 +vt 0.045714 0.043478 +vt 0.045714 0.021739 +vt 0.091429 0.108696 +vt 0.045714 0.130435 +vt 0.045714 0.108696 +vt 0.091429 0.043478 +vt 0.045714 0.065217 +vt 0.091429 -0.000000 +vt 0.045714 -0.000000 +vt 0.091429 0.130435 +vt 0.091429 0.086957 +vt 0.045714 0.086957 +vt 0.091429 0.065217 +vt 0.091429 0.173913 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 9/1/1 15/2/1 13/3/1 +f 5/4/2 7/5/2 1/6/2 +f 11/7/1 10/8/1 9/1/1 +f 9/1/1 16/9/1 15/2/1 +f 15/2/1 14/10/1 13/3/1 +f 13/3/1 12/11/1 11/7/1 +f 11/7/1 9/1/1 13/3/1 +f 1/6/2 2/12/2 3/13/2 +f 3/13/2 4/14/2 5/4/2 +f 5/4/2 6/15/2 7/5/2 +f 7/5/2 8/16/2 1/6/2 +f 1/6/2 3/13/2 5/4/2 +s 1 +f 12/17/3 5/18/4 4/19/3 +f 14/20/5 7/21/6 6/22/5 +f 10/23/7 3/24/8 2/25/7 +f 15/26/6 8/27/9 7/21/6 +f 13/28/4 6/22/5 5/29/4 +f 11/30/8 4/19/3 3/24/8 +f 9/31/10 2/25/7 1/32/10 +f 16/33/9 1/32/10 8/27/9 +f 12/17/3 13/34/4 5/18/4 +f 14/20/5 15/26/6 7/21/6 +f 10/23/7 11/30/8 3/24/8 +f 15/26/6 16/33/9 8/27/9 +f 13/28/4 14/20/5 6/22/5 +f 11/30/8 12/17/3 4/19/3 +f 9/31/10 10/23/7 2/25/7 +f 16/33/9 9/31/10 1/32/10 +o Extension +v 0.375000 0.375000 3.625000 +v 0.625000 0.375000 3.625000 +v 0.375000 0.625000 3.625000 +v 0.625000 0.625000 3.625000 +v 0.375000 0.625000 7.750000 +v 0.375000 0.375000 7.750000 +v 0.625000 0.375000 7.750000 +v 0.625000 0.625000 7.750000 +v 0.375000 -0.625000 3.625000 +v 0.625000 -0.625000 3.625000 +v 0.375000 -0.375000 3.625000 +v 0.625000 -0.375000 3.625000 +v 0.375000 -0.375000 7.750000 +v 0.375000 -0.625000 7.750000 +v 0.625000 -0.625000 7.750000 +v 0.625000 -0.375000 7.750000 +v 0.625000 0.375000 3.625000 +v 0.625000 0.375000 7.500000 +v 0.625000 -0.375000 3.625000 +v 0.625000 -0.375000 7.500000 +v 0.750000 -0.125000 3.625000 +v 0.750000 -0.125000 7.500000 +v 0.750000 0.125000 3.625000 +v 0.750000 0.125000 7.500000 +v -0.375000 0.375000 3.625000 +v -0.625000 0.375000 3.625000 +v -0.375000 0.625000 3.625000 +v -0.625000 0.625000 3.625000 +v -0.375000 0.625000 7.750000 +v -0.375000 0.375000 7.750000 +v -0.625000 0.375000 7.750000 +v -0.625000 0.625000 7.750000 +v -0.375000 -0.625000 3.625000 +v -0.625000 -0.625000 3.625000 +v -0.375000 -0.375000 3.625000 +v -0.625000 -0.375000 3.625000 +v -0.375000 -0.375000 7.750000 +v -0.375000 -0.625000 7.750000 +v -0.625000 -0.625000 7.750000 +v -0.625000 -0.375000 7.750000 +v -0.625000 0.375000 3.625000 +v -0.625000 0.375000 7.500000 +v -0.625000 -0.375000 3.625000 +v -0.625000 -0.375000 7.500000 +v -0.750000 -0.125000 3.625000 +v -0.750000 -0.125000 7.500000 +v -0.750000 0.125000 3.625000 +v -0.750000 0.125000 7.500000 +v 0.375000 -0.625000 3.625000 +v 0.375000 -0.625000 7.500000 +v -0.375000 -0.625000 3.625000 +v -0.375000 -0.625000 7.500000 +v -0.125000 -0.750000 3.625000 +v -0.125000 -0.750000 7.500000 +v 0.125000 -0.750000 3.625000 +v 0.125000 -0.750000 7.500000 +v 0.375000 0.625000 3.625000 +v 0.375000 0.625000 7.500000 +v -0.375000 0.625000 3.625000 +v -0.375000 0.625000 7.500000 +v -0.125000 0.750000 3.625000 +v -0.125000 0.750000 7.500000 +v 0.125000 0.750000 3.625000 +v 0.125000 0.750000 7.500000 +v 0.000000 1.000000 7.500000 +v -0.500000 0.866025 7.500000 +v -0.866025 0.500000 7.500000 +v -1.000000 0.000000 7.500000 +v -0.866025 -0.500000 7.500000 +v -0.500000 -0.866025 7.500000 +v 0.000000 -1.000000 7.500000 +v 0.500000 -0.866025 7.500000 +v 0.866025 -0.500000 7.500000 +v 1.000000 -0.000000 7.500000 +v 0.866026 0.500000 7.500000 +v 0.500000 0.866025 7.500000 +v 0.000000 1.000000 8.000000 +v -0.500000 0.866025 8.000000 +v -0.866025 0.500000 8.000000 +v -1.000000 0.000000 8.000000 +v -0.866025 -0.500000 8.000000 +v -0.500000 -0.866025 8.000000 +v 0.000000 -1.000000 8.000000 +v 0.500000 -0.866025 8.000000 +v 0.866025 -0.500000 8.000000 +v 1.000000 -0.000000 8.000000 +v 0.866026 0.500000 8.000000 +v 0.500000 0.866025 8.000000 +v 0.000000 0.750000 8.000000 +v -0.375000 0.649519 8.000000 +v -0.649519 0.375000 8.000000 +v -0.750000 0.000000 8.000000 +v -0.649519 -0.375000 8.000000 +v -0.375000 -0.649519 8.000000 +v 0.000000 -0.750000 8.000000 +v 0.375000 -0.649519 8.000000 +v 0.649519 -0.375000 8.000000 +v 0.750000 -0.000000 8.000000 +v 0.649519 0.375000 8.000000 +v 0.375000 0.649519 8.000000 +v 0.000000 0.750000 7.500000 +v -0.375000 0.649519 7.500000 +v -0.649519 0.375000 7.500000 +v -0.750000 0.000000 7.500000 +v -0.649519 -0.375000 7.500000 +v -0.375000 -0.649519 7.500000 +v 0.000000 -0.750000 7.500000 +v 0.375000 -0.649519 7.500000 +v 0.649519 -0.375000 7.500000 +v 0.750000 -0.000000 7.500000 +v 0.649519 0.375000 7.500000 +v 0.375000 0.649519 7.500000 +v 0.031463 -0.156463 6.911612 +v 0.005575 -0.182351 7.000000 +v 0.031463 -0.156463 7.088388 +v 0.093963 -0.093963 7.125000 +v 0.156463 -0.031463 7.088388 +v 0.182351 -0.005574 7.000000 +v 0.156463 -0.031463 6.911612 +v 0.093963 -0.093963 6.875000 +v 0.119851 -0.244851 6.911612 +v 0.093963 -0.270740 7.000000 +v 0.119851 -0.244851 7.088388 +v 0.182351 -0.182351 7.125000 +v 0.244851 -0.119851 7.088388 +v 0.270740 -0.093963 7.000000 +v 0.244851 -0.119851 6.911612 +v 0.182351 -0.182351 6.875000 +v 0.650888 -0.775889 6.911612 +v 0.625000 -0.801776 7.000000 +v 0.650888 -0.775889 7.088388 +v 0.713388 -0.713389 7.125000 +v 0.775889 -0.650889 7.088388 +v 0.801777 -0.625000 7.000000 +v 0.775889 -0.650889 6.911612 +v 0.713388 -0.713389 6.875000 +v 0.146447 -0.396447 6.823223 +v 0.094670 -0.448223 7.000000 +v 0.146447 -0.396447 7.176777 +v 0.271447 -0.271446 7.250000 +v 0.396447 -0.146447 7.176777 +v 0.448223 -0.094670 7.000000 +v 0.396447 -0.146447 6.823223 +v 0.271447 -0.271446 6.750000 +v 0.500000 -0.750000 6.823223 +v 0.448223 -0.801777 7.000000 +v 0.500000 -0.750000 7.176777 +v 0.625000 -0.625000 7.250000 +v 0.750000 -0.500000 7.176777 +v 0.801777 -0.448223 7.000000 +v 0.750000 -0.500000 6.823223 +v 0.625000 -0.625000 6.750000 +v -0.625000 0.625000 6.750000 +v -0.750000 0.500000 6.823223 +v -0.801777 0.448223 7.000000 +v -0.750000 0.500000 7.176777 +v -0.625000 0.625000 7.250000 +v -0.500000 0.750000 7.176777 +v -0.448223 0.801776 7.000000 +v -0.500000 0.750000 6.823223 +v -0.271447 0.271446 6.750000 +v -0.396447 0.146447 6.823223 +v -0.448223 0.094670 7.000000 +v -0.396447 0.146447 7.176777 +v -0.271447 0.271446 7.250000 +v -0.146447 0.396447 7.176777 +v -0.094670 0.448223 7.000000 +v -0.146447 0.396447 6.823223 +v -0.713388 0.713388 6.875000 +v -0.775888 0.650888 6.911612 +v -0.801777 0.625000 7.000000 +v -0.775888 0.650888 7.088388 +v -0.713388 0.713388 7.125000 +v -0.650888 0.775888 7.088388 +v -0.625000 0.801776 7.000000 +v -0.650888 0.775888 6.911612 +v -0.182351 0.182351 6.875000 +v -0.244851 0.119851 6.911612 +v -0.270740 0.093963 7.000000 +v -0.244851 0.119851 7.088388 +v -0.182351 0.182351 7.125000 +v -0.119851 0.244851 7.088388 +v -0.093963 0.270739 7.000000 +v -0.119851 0.244851 6.911612 +v -0.093963 0.093963 6.875000 +v -0.156463 0.031463 6.911612 +v -0.182351 0.005574 7.000000 +v -0.156463 0.031463 7.088388 +v -0.093963 0.093963 7.125000 +v -0.031463 0.156462 7.088388 +v -0.005575 0.182351 7.000000 +v -0.031463 0.156462 6.911612 +v -0.156463 -0.031463 6.911612 +v -0.182351 -0.005575 7.000000 +v -0.156463 -0.031463 7.088388 +v -0.093963 -0.093963 7.125000 +v -0.031463 -0.156463 7.088388 +v -0.005574 -0.182351 7.000000 +v -0.031463 -0.156463 6.911612 +v -0.093963 -0.093963 6.875000 +v -0.244851 -0.119851 6.911612 +v -0.270739 -0.093963 7.000000 +v -0.244851 -0.119851 7.088388 +v -0.182351 -0.182351 7.125000 +v -0.119851 -0.244851 7.088388 +v -0.093963 -0.270740 7.000000 +v -0.119851 -0.244851 6.911612 +v -0.182351 -0.182351 6.875000 +v -0.775888 -0.650888 6.911612 +v -0.801776 -0.625000 7.000000 +v -0.775888 -0.650888 7.088388 +v -0.713388 -0.713388 7.125000 +v -0.650888 -0.775889 7.088388 +v -0.625000 -0.801777 7.000000 +v -0.650888 -0.775889 6.911612 +v -0.713388 -0.713388 6.875000 +v -0.396447 -0.146447 6.823223 +v -0.448223 -0.094670 7.000000 +v -0.396447 -0.146447 7.176777 +v -0.271446 -0.271447 7.250000 +v -0.146447 -0.396447 7.176777 +v -0.094670 -0.448224 7.000000 +v -0.146447 -0.396447 6.823223 +v -0.271446 -0.271447 6.750000 +v -0.750000 -0.500000 6.823223 +v -0.801776 -0.448223 7.000000 +v -0.750000 -0.500000 7.176777 +v -0.625000 -0.625000 7.250000 +v -0.500000 -0.750000 7.176777 +v -0.448223 -0.801777 7.000000 +v -0.500000 -0.750000 6.823223 +v -0.625000 -0.625000 6.750000 +v 0.625000 0.625000 6.750000 +v 0.500000 0.750000 6.823223 +v 0.448223 0.801777 7.000000 +v 0.500000 0.750000 7.176777 +v 0.625000 0.625000 7.250000 +v 0.750000 0.500000 7.176777 +v 0.801776 0.448223 7.000000 +v 0.750000 0.500000 6.823223 +v 0.271446 0.271447 6.750000 +v 0.146447 0.396447 6.823223 +v 0.094670 0.448223 7.000000 +v 0.146447 0.396447 7.176777 +v 0.271446 0.271447 7.250000 +v 0.396447 0.146447 7.176777 +v 0.448223 0.094670 7.000000 +v 0.396447 0.146447 6.823223 +v 0.713388 0.713388 6.875000 +v 0.650888 0.775888 6.911612 +v 0.625000 0.801777 7.000000 +v 0.650888 0.775888 7.088388 +v 0.713388 0.713388 7.125000 +v 0.775888 0.650888 7.088388 +v 0.801776 0.625000 7.000000 +v 0.775888 0.650888 6.911612 +v 0.182351 0.182351 6.875000 +v 0.119851 0.244851 6.911612 +v 0.093963 0.270739 7.000000 +v 0.119851 0.244851 7.088388 +v 0.182351 0.182351 7.125000 +v 0.244851 0.119851 7.088388 +v 0.270740 0.093963 7.000000 +v 0.244851 0.119851 6.911612 +v 0.093963 0.093963 6.875000 +v 0.031463 0.156463 6.911612 +v 0.005574 0.182351 7.000000 +v 0.031463 0.156463 7.088388 +v 0.093963 0.093963 7.125000 +v 0.156463 0.031463 7.088388 +v 0.182351 0.005574 7.000000 +v 0.156463 0.031463 6.911612 +v -0.662913 -0.662912 7.625000 +v -0.600413 -0.725412 7.661612 +v -0.574525 -0.751301 7.750000 +v -0.600413 -0.725412 7.838388 +v -0.662913 -0.662912 7.875000 +v -0.725413 -0.600412 7.838388 +v -0.751301 -0.574524 7.750000 +v -0.725413 -0.600412 7.661612 +v -0.751301 -0.751301 7.625000 +v -0.688802 -0.813801 7.661612 +v -0.662913 -0.839689 7.750000 +v -0.688802 -0.813801 7.838388 +v -0.751301 -0.751301 7.875000 +v -0.813801 -0.688801 7.838388 +v -0.839690 -0.662912 7.750000 +v -0.813801 -0.688801 7.661612 +v 0.662912 -0.662913 7.625000 +v 0.725412 -0.600413 7.661612 +v 0.751301 -0.574525 7.750000 +v 0.725412 -0.600413 7.838388 +v 0.662912 -0.662913 7.875000 +v 0.600412 -0.725413 7.838388 +v 0.574524 -0.751301 7.750000 +v 0.600412 -0.725413 7.661612 +v 0.751301 -0.751301 7.625000 +v 0.813801 -0.688802 7.661612 +v 0.839689 -0.662913 7.750000 +v 0.813801 -0.688802 7.838388 +v 0.751301 -0.751301 7.875000 +v 0.688801 -0.813802 7.838388 +v 0.662912 -0.839690 7.750000 +v 0.688801 -0.813802 7.661612 +v 0.000000 0.937500 7.625000 +v -0.088387 0.937500 7.661612 +v -0.125000 0.937500 7.750000 +v -0.088387 0.937500 7.838388 +v 0.000000 0.937500 7.875000 +v 0.088389 0.937500 7.838388 +v 0.125000 0.937500 7.750000 +v 0.088389 0.937500 7.661612 +v 0.000000 1.062500 7.625000 +v -0.088387 1.062500 7.661612 +v -0.125000 1.062500 7.750000 +v -0.088387 1.062500 7.838388 +v 0.000000 1.062500 7.875000 +v 0.088389 1.062500 7.838388 +v 0.125000 1.062500 7.750000 +v 0.088389 1.062500 7.661612 +v -0.688801 0.813801 7.661612 +v -0.662912 0.839690 7.750000 +v -0.688801 0.813801 7.838388 +v -0.751301 0.751301 7.875000 +v -0.813800 0.688802 7.838388 +v -0.839689 0.662913 7.750000 +v -0.813800 0.688802 7.661612 +v -0.751301 0.751301 7.625000 +v -0.600412 0.725413 7.661612 +v -0.574524 0.751301 7.750000 +v -0.600412 0.725413 7.838388 +v -0.662912 0.662913 7.875000 +v -0.725412 0.600413 7.838388 +v -0.751301 0.574525 7.750000 +v -0.725412 0.600413 7.661612 +v -0.662912 0.662913 7.625000 +v 0.813801 0.688801 7.661612 +v 0.839690 0.662912 7.750000 +v 0.813801 0.688801 7.838388 +v 0.751301 0.751301 7.875000 +v 0.688802 0.813800 7.838388 +v 0.662913 0.839689 7.750000 +v 0.688802 0.813800 7.661612 +v 0.751301 0.751301 7.625000 +v 0.725413 0.600412 7.661612 +v 0.751301 0.574524 7.750000 +v 0.725413 0.600412 7.838388 +v 0.662913 0.662912 7.875000 +v 0.600413 0.725412 7.838388 +v 0.574525 0.751301 7.750000 +v 0.600413 0.725412 7.661612 +v 0.662913 0.662912 7.625000 +v -0.937500 0.000000 7.625000 +v -0.937500 -0.088388 7.661612 +v -0.937500 -0.125000 7.750000 +v -0.937500 -0.088388 7.838388 +v -0.937500 0.000000 7.875000 +v -0.937500 0.088389 7.838388 +v -0.937500 0.125000 7.750000 +v -0.937500 0.088389 7.661612 +v -1.062500 0.000000 7.625000 +v -1.062500 -0.088388 7.661612 +v -1.062500 -0.125000 7.750000 +v -1.062500 -0.088388 7.838388 +v -1.062500 0.000000 7.875000 +v -1.062500 0.088389 7.838388 +v -1.062500 0.125000 7.750000 +v -1.062500 0.088389 7.661612 +v 1.062500 -0.088389 7.661612 +v 1.062500 -0.125001 7.750000 +v 1.062500 -0.088389 7.838388 +v 1.062500 -0.000001 7.875000 +v 1.062500 0.088387 7.838388 +v 1.062500 0.124999 7.750000 +v 1.062500 0.088387 7.661612 +v 1.062500 -0.000001 7.625000 +v 0.937500 -0.088389 7.661612 +v 0.937500 -0.125001 7.750000 +v 0.937500 -0.088389 7.838388 +v 0.937500 -0.000001 7.875000 +v 0.937500 0.088387 7.838388 +v 0.937500 0.124999 7.750000 +v 0.937500 0.088387 7.661612 +v 0.937500 -0.000001 7.625000 +v -0.088389 -1.062500 7.661612 +v -0.125000 -1.062500 7.750000 +v -0.088389 -1.062500 7.838388 +v -0.000000 -1.062500 7.875000 +v 0.088387 -1.062500 7.838388 +v 0.125000 -1.062500 7.750000 +v 0.088387 -1.062500 7.661612 +v -0.000000 -1.062500 7.625000 +v -0.088389 -0.937500 7.661612 +v -0.125000 -0.937500 7.750000 +v -0.088389 -0.937500 7.838388 +v -0.000000 -0.937500 7.875000 +v 0.088387 -0.937500 7.838388 +v 0.125000 -0.937500 7.750000 +v 0.088387 -0.937500 7.661612 +v -0.000000 -0.937500 7.625000 +v 0.031463 -0.156463 4.536612 +v 0.005575 -0.182351 4.625000 +v 0.031463 -0.156463 4.713388 +v 0.093963 -0.093963 4.750000 +v 0.156463 -0.031463 4.713388 +v 0.182351 -0.005574 4.625000 +v 0.156463 -0.031463 4.536612 +v 0.093963 -0.093963 4.500000 +v 0.119851 -0.244851 4.536612 +v 0.093963 -0.270740 4.625000 +v 0.119851 -0.244851 4.713388 +v 0.182351 -0.182351 4.750000 +v 0.244851 -0.119851 4.713388 +v 0.270740 -0.093963 4.625000 +v 0.244851 -0.119851 4.536612 +v 0.182351 -0.182351 4.500000 +v 0.650888 -0.775888 4.536612 +v 0.625000 -0.801776 4.625000 +v 0.650888 -0.775888 4.713388 +v 0.713388 -0.713388 4.750000 +v 0.775889 -0.650889 4.713388 +v 0.801777 -0.625000 4.625000 +v 0.775889 -0.650889 4.536612 +v 0.713388 -0.713388 4.500000 +v 0.146447 -0.396447 4.448223 +v 0.094670 -0.448223 4.625000 +v 0.146447 -0.396447 4.801777 +v 0.271447 -0.271446 4.875000 +v 0.396447 -0.146447 4.801777 +v 0.448223 -0.094670 4.625000 +v 0.396447 -0.146447 4.448223 +v 0.271447 -0.271446 4.375000 +v 0.500000 -0.750000 4.448223 +v 0.448223 -0.801777 4.625000 +v 0.500000 -0.750000 4.801777 +v 0.625000 -0.625000 4.875000 +v 0.750000 -0.500000 4.801777 +v 0.801777 -0.448223 4.625000 +v 0.750000 -0.500000 4.448223 +v 0.625000 -0.625000 4.375000 +v -0.625000 0.625000 4.375000 +v -0.750000 0.500000 4.448223 +v -0.801777 0.448223 4.625000 +v -0.750000 0.500000 4.801777 +v -0.625000 0.625000 4.875000 +v -0.500000 0.750000 4.801777 +v -0.448223 0.801776 4.625000 +v -0.500000 0.750000 4.448223 +v -0.271447 0.271446 4.375000 +v -0.396447 0.146447 4.448223 +v -0.448223 0.094670 4.625000 +v -0.396447 0.146447 4.801777 +v -0.271447 0.271446 4.875000 +v -0.146447 0.396446 4.801777 +v -0.094670 0.448223 4.625000 +v -0.146447 0.396446 4.448223 +v -0.713388 0.713388 4.500000 +v -0.775888 0.650888 4.536612 +v -0.801777 0.625000 4.625000 +v -0.775888 0.650888 4.713388 +v -0.713388 0.713388 4.750000 +v -0.650888 0.775888 4.713388 +v -0.625000 0.801776 4.625000 +v -0.650888 0.775888 4.536612 +v -0.182351 0.182351 4.500000 +v -0.244851 0.119851 4.536612 +v -0.270740 0.093962 4.625000 +v -0.244851 0.119851 4.713388 +v -0.182351 0.182351 4.750000 +v -0.119851 0.244851 4.713388 +v -0.093963 0.270739 4.625000 +v -0.119851 0.244851 4.536612 +v -0.093963 0.093962 4.500000 +v -0.156463 0.031462 4.536612 +v -0.182351 0.005574 4.625000 +v -0.156463 0.031462 4.713388 +v -0.093963 0.093962 4.750000 +v -0.031463 0.156462 4.713388 +v -0.005575 0.182351 4.625000 +v -0.031463 0.156462 4.536612 +v -0.156463 -0.031463 4.536612 +v -0.182351 -0.005575 4.625000 +v -0.156463 -0.031463 4.713388 +v -0.093963 -0.093963 4.750000 +v -0.031463 -0.156463 4.713388 +v -0.005574 -0.182351 4.625000 +v -0.031463 -0.156463 4.536612 +v -0.093963 -0.093963 4.500000 +v -0.244851 -0.119851 4.536612 +v -0.270739 -0.093963 4.625000 +v -0.244851 -0.119851 4.713388 +v -0.182351 -0.182351 4.750000 +v -0.119851 -0.244851 4.713388 +v -0.093963 -0.270740 4.625000 +v -0.119851 -0.244851 4.536612 +v -0.182351 -0.182351 4.500000 +v -0.775888 -0.650888 4.536612 +v -0.801776 -0.625000 4.625000 +v -0.775888 -0.650888 4.713388 +v -0.713388 -0.713388 4.750000 +v -0.650888 -0.775889 4.713388 +v -0.625000 -0.801777 4.625000 +v -0.650888 -0.775889 4.536612 +v -0.713388 -0.713388 4.500000 +v -0.396447 -0.146447 4.448223 +v -0.448223 -0.094670 4.625000 +v -0.396447 -0.146447 4.801777 +v -0.271446 -0.271447 4.875000 +v -0.146447 -0.396447 4.801777 +v -0.094670 -0.448224 4.625000 +v -0.146447 -0.396447 4.448223 +v -0.271446 -0.271447 4.375000 +v -0.750000 -0.500000 4.448223 +v -0.801776 -0.448223 4.625000 +v -0.750000 -0.500000 4.801777 +v -0.625000 -0.625000 4.875000 +v -0.500000 -0.750000 4.801777 +v -0.448223 -0.801777 4.625000 +v -0.500000 -0.750000 4.448223 +v -0.625000 -0.625000 4.375000 +v 0.625000 0.625000 4.375000 +v 0.500000 0.750000 4.448223 +v 0.448223 0.801777 4.625000 +v 0.500000 0.750000 4.801777 +v 0.625000 0.625000 4.875000 +v 0.750000 0.500000 4.801777 +v 0.801776 0.448223 4.625000 +v 0.750000 0.500000 4.448223 +v 0.271446 0.271447 4.375000 +v 0.146447 0.396447 4.448223 +v 0.094670 0.448223 4.625000 +v 0.146447 0.396447 4.801777 +v 0.271446 0.271447 4.875000 +v 0.396447 0.146446 4.801777 +v 0.448223 0.094670 4.625000 +v 0.396447 0.146446 4.448223 +v 0.713388 0.713388 4.500000 +v 0.650888 0.775888 4.536612 +v 0.625000 0.801777 4.625000 +v 0.650888 0.775888 4.713388 +v 0.713388 0.713388 4.750000 +v 0.775888 0.650888 4.713388 +v 0.801776 0.625000 4.625000 +v 0.775888 0.650888 4.536612 +v 0.182351 0.182351 4.500000 +v 0.119851 0.244851 4.536612 +v 0.093963 0.270740 4.625000 +v 0.119851 0.244851 4.713388 +v 0.182351 0.182351 4.750000 +v 0.244851 0.119851 4.713388 +v 0.270740 0.093963 4.625000 +v 0.244851 0.119851 4.536612 +v 0.093963 0.093963 4.500000 +v 0.031463 0.156463 4.536612 +v 0.005574 0.182351 4.625000 +v 0.031463 0.156463 4.713388 +v 0.093963 0.093963 4.750000 +v 0.156463 0.031463 4.713388 +v 0.182351 0.005574 4.625000 +v 0.156463 0.031463 4.536612 +vt 1.000000 0.985507 +vt 0.811429 0.956522 +vt 1.000000 0.956522 +vt 1.000000 0.927536 +vt 0.811429 0.898551 +vt 1.000000 0.898551 +vt 0.811429 0.927536 +vt 0.811429 0.869565 +vt 1.000000 0.869565 +vt 1.000000 0.985507 +vt 0.811429 0.956522 +vt 1.000000 0.956522 +vt 1.000000 0.927536 +vt 0.811429 0.898551 +vt 1.000000 0.898551 +vt 0.811429 0.927536 +vt 0.811429 0.869565 +vt 1.000000 0.869565 +vt 0.811429 0.985507 +vt 1.000000 0.956522 +vt 1.000000 0.985507 +vt 0.811429 0.927536 +vt 1.000000 0.898551 +vt 1.000000 0.927536 +vt 0.811429 0.898551 +vt 1.000000 0.869565 +vt 0.811429 0.956522 +vt 0.811429 0.985507 +vt 1.000000 0.956522 +vt 1.000000 0.985507 +vt 0.811429 0.927536 +vt 1.000000 0.898551 +vt 1.000000 0.927536 +vt 0.811429 0.898551 +vt 1.000000 0.869565 +vt 0.811429 0.956522 +vt 0.965714 0.695652 +vt 0.977143 0.644928 +vt 0.977143 0.688406 +vt 0.965714 0.115942 +vt 0.977143 0.166667 +vt 0.965714 0.173913 +vt 0.965714 0.405797 +vt 0.977143 0.456522 +vt 0.965714 0.463768 +vt 0.965714 0.289855 +vt 0.977143 0.340580 +vt 0.965714 0.347826 +vt 0.965714 0.579710 +vt 0.977143 0.630435 +vt 0.965714 0.637681 +vt 0.965714 0.057971 +vt 0.977143 0.108696 +vt 0.977143 0.355072 +vt 0.977143 0.398551 +vt 0.965714 0.231884 +vt 0.977143 0.282609 +vt 0.977143 0.528986 +vt 0.977143 0.572464 +vt 0.965714 0.000000 +vt 0.977143 0.050725 +vt 0.977143 0.224638 +vt 0.965714 0.521739 +vt 0.977143 0.471014 +vt 0.977143 0.514493 +vt 0.942857 0.405797 +vt 0.931429 0.355072 +vt 0.942857 0.347826 +vt 0.931429 0.340580 +vt 0.942857 0.289855 +vt 0.931429 0.282609 +vt 0.942857 0.231884 +vt 0.931429 0.224638 +vt 0.942857 0.173913 +vt 0.931429 0.166667 +vt 0.942857 0.115942 +vt 0.931429 0.108696 +vt 0.942857 0.057971 +vt 0.931429 0.050725 +vt 0.942857 0.000000 +vt 0.942857 0.695652 +vt 0.931429 0.644928 +vt 0.942857 0.637681 +vt 0.931429 0.630435 +vt 0.942857 0.579710 +vt 0.931429 0.528986 +vt 0.942857 0.521739 +vt 0.931429 0.471014 +vt 0.942857 0.463768 +vt 0.931429 0.456522 +vt 0.800000 0.956522 +vt 0.800000 0.985507 +vt 0.811429 0.985507 +vt 0.800000 0.985507 +vt 0.811429 0.985507 +vt 0.800000 0.956522 +vt 0.028571 0.144923 +vt 0.034287 0.159420 +vt 0.028571 0.173917 +vt 0.034287 0.304348 +vt 0.028571 0.318845 +vt 0.022855 0.304348 +vt 0.028571 0.144923 +vt 0.034287 0.159420 +vt 0.028571 0.173917 +vt 0.034287 0.304348 +vt 0.028571 0.318845 +vt 0.022855 0.304348 +vt 0.028571 0.144923 +vt 0.034287 0.159420 +vt 0.028571 0.173917 +vt 0.034287 0.304348 +vt 0.028571 0.318845 +vt 0.022855 0.304348 +vt 0.034287 0.304348 +vt 0.028571 0.318845 +vt 0.022855 0.304348 +vt 0.028571 0.144923 +vt 0.034287 0.159420 +vt 0.028571 0.173917 +vt 0.834286 0.391243 +vt 0.828596 0.376812 +vt 0.834286 0.362380 +vt 0.834286 0.391243 +vt 0.828596 0.376812 +vt 0.834286 0.362380 +vt 0.834286 0.391243 +vt 0.828596 0.376812 +vt 0.834286 0.362380 +vt 0.834286 0.391243 +vt 0.828596 0.376812 +vt 0.834286 0.362380 +vt 0.834286 0.391243 +vt 0.828596 0.376812 +vt 0.834286 0.362380 +vt 0.834286 0.391243 +vt 0.828596 0.376812 +vt 0.834286 0.362380 +vt 0.834286 0.391243 +vt 0.828596 0.376812 +vt 0.834286 0.362380 +vt 0.834286 0.391243 +vt 0.828596 0.376812 +vt 0.834286 0.362380 +vt 0.028571 0.144923 +vt 0.034287 0.159420 +vt 0.028571 0.173917 +vt 0.034287 0.304348 +vt 0.028571 0.318845 +vt 0.022855 0.304348 +vt 0.028571 0.144923 +vt 0.034287 0.159420 +vt 0.028571 0.173917 +vt 0.034287 0.304348 +vt 0.028571 0.318845 +vt 0.022855 0.304348 +vt 0.028571 0.144923 +vt 0.034287 0.159420 +vt 0.028571 0.173917 +vt 0.034287 0.304348 +vt 0.028571 0.318845 +vt 0.022855 0.304348 +vt 0.034287 0.304348 +vt 0.028571 0.318845 +vt 0.022855 0.304348 +vt 0.028571 0.144923 +vt 0.034287 0.159420 +vt 0.028571 0.173917 +vt 0.811429 0.869565 +vt 0.811429 0.869565 +vt 0.977143 0.123188 +vt 0.977143 0.413043 +vt 0.977143 0.297101 +vt 0.977143 0.586957 +vt 0.977143 0.065217 +vt 0.977143 0.239130 +vt 0.977143 0.007246 +vt 0.977143 0.181159 +vt 0.931429 0.398551 +vt 0.931429 0.297101 +vt 0.931429 0.239130 +vt 0.931429 0.181159 +vt 0.931429 0.123188 +vt 0.931429 0.065217 +vt 0.931429 0.007246 +vt 0.931429 0.688406 +vt 0.931429 0.586957 +vt 0.931429 0.572464 +vt 0.931429 0.514493 +vt 0.931429 0.413043 +vt 0.800000 0.985507 +vt 0.800000 0.956522 +vt 0.800000 0.956522 +vt 0.800000 0.985507 +vt 0.022856 0.159420 +vt 0.024530 0.149169 +vt 0.032613 0.149169 +vt 0.032613 0.169671 +vt 0.024530 0.169671 +vt 0.028571 0.289851 +vt 0.032613 0.294097 +vt 0.032613 0.314599 +vt 0.024530 0.314599 +vt 0.024530 0.294097 +vt 0.022856 0.159420 +vt 0.024530 0.149169 +vt 0.032613 0.149169 +vt 0.032613 0.169671 +vt 0.024530 0.169671 +vt 0.028571 0.289851 +vt 0.032613 0.294097 +vt 0.032613 0.314599 +vt 0.024530 0.314599 +vt 0.024530 0.294097 +vt 0.022856 0.159420 +vt 0.024530 0.149169 +vt 0.032613 0.149169 +vt 0.032613 0.169671 +vt 0.024530 0.169671 +vt 0.028571 0.289851 +vt 0.032613 0.294097 +vt 0.032613 0.314599 +vt 0.024530 0.314599 +vt 0.024530 0.294097 +vt 0.028571 0.289851 +vt 0.032613 0.294097 +vt 0.032613 0.314599 +vt 0.024530 0.314599 +vt 0.024530 0.294097 +vt 0.022856 0.159420 +vt 0.024530 0.149169 +vt 0.032613 0.149169 +vt 0.032613 0.169671 +vt 0.024530 0.169671 +vt 0.838309 0.366607 +vt 0.839976 0.376812 +vt 0.838309 0.387016 +vt 0.830262 0.387016 +vt 0.830262 0.366607 +vt 0.838309 0.366607 +vt 0.839976 0.376812 +vt 0.838309 0.387016 +vt 0.830262 0.387016 +vt 0.830262 0.366607 +vt 0.838309 0.366607 +vt 0.839976 0.376812 +vt 0.838309 0.387016 +vt 0.830262 0.387016 +vt 0.830262 0.366607 +vt 0.838309 0.366607 +vt 0.839976 0.376812 +vt 0.838309 0.387016 +vt 0.830262 0.387016 +vt 0.830262 0.366607 +vt 0.838309 0.366607 +vt 0.839976 0.376812 +vt 0.838309 0.387016 +vt 0.830262 0.387016 +vt 0.830262 0.366607 +vt 0.838309 0.366607 +vt 0.839976 0.376812 +vt 0.838309 0.387016 +vt 0.830262 0.387016 +vt 0.830262 0.366607 +vt 0.838309 0.366607 +vt 0.839976 0.376812 +vt 0.838309 0.387016 +vt 0.830262 0.387016 +vt 0.830262 0.366607 +vt 0.838309 0.366607 +vt 0.839976 0.376812 +vt 0.838309 0.387016 +vt 0.830262 0.387016 +vt 0.830262 0.366607 +vt 0.022856 0.159420 +vt 0.024530 0.149169 +vt 0.032613 0.149169 +vt 0.032613 0.169671 +vt 0.024530 0.169671 +vt 0.028571 0.289851 +vt 0.032613 0.294097 +vt 0.032613 0.314599 +vt 0.024530 0.314599 +vt 0.024530 0.294097 +vt 0.022856 0.159420 +vt 0.024530 0.149169 +vt 0.032613 0.149169 +vt 0.032613 0.169671 +vt 0.024530 0.169671 +vt 0.028571 0.289851 +vt 0.032613 0.294097 +vt 0.032613 0.314599 +vt 0.024530 0.314599 +vt 0.024530 0.294097 +vt 0.022856 0.159420 +vt 0.024530 0.149169 +vt 0.032613 0.149169 +vt 0.032613 0.169671 +vt 0.024530 0.169671 +vt 0.028571 0.289851 +vt 0.032613 0.294097 +vt 0.032613 0.314599 +vt 0.024530 0.314599 +vt 0.024530 0.294097 +vt 0.028571 0.289851 +vt 0.032613 0.294097 +vt 0.032613 0.314599 +vt 0.024530 0.314599 +vt 0.024530 0.294097 +vt 0.022856 0.159420 +vt 0.024530 0.149169 +vt 0.032613 0.149169 +vt 0.032613 0.169671 +vt 0.024530 0.169671 +vt 0.822857 0.840580 +vt 1.000000 0.869565 +vt 0.822857 0.869565 +vt 1.000000 0.840580 +vt 0.822857 0.811594 +vt 1.000000 0.811594 +vt 1.000000 0.695652 +vt 0.822857 0.724638 +vt 0.822857 0.695652 +vt 0.822857 0.782609 +vt 1.000000 0.753623 +vt 1.000000 0.782609 +vt 1.000000 0.724638 +vt 0.822857 0.869565 +vt 1.000000 0.869565 +vt 1.000000 0.782609 +vt 0.822857 0.782609 +vt 0.822857 0.753623 +vt 1.000000 0.782609 +vt 0.822857 0.782609 +vt 1.000000 0.724638 +vt 0.822857 0.695652 +vt 1.000000 0.695652 +vt 1.000000 0.753623 +vt 1.000000 0.811594 +vt 0.822857 0.782609 +vt 1.000000 0.782609 +vt 1.000000 0.840580 +vt 1.000000 0.166667 +vt 1.000000 0.456522 +vt 1.000000 0.340580 +vt 1.000000 0.630435 +vt 1.000000 0.108696 +vt 1.000000 0.398551 +vt 1.000000 0.282609 +vt 1.000000 0.572464 +vt 1.000000 0.050725 +vt 1.000000 0.224638 +vt 1.000000 0.514493 +vt 1.000000 0.688406 +vt 0.040000 0.210145 +vt 0.045714 0.188406 +vt 0.048571 0.210145 +vt 0.054286 0.188406 +vt 0.057143 0.210145 +vt 0.057143 0.173913 +vt 0.062857 0.188406 +vt 0.057143 0.188406 +vt 0.065714 0.173913 +vt 0.071429 0.188406 +vt 0.065714 0.188406 +vt 0.074286 0.188406 +vt 0.082857 0.210145 +vt 0.074286 0.210145 +vt 0.082857 0.188406 +vt 0.091429 0.210145 +vt 0.031429 0.188406 +vt 0.037143 0.173913 +vt 0.037143 0.188406 +vt 0.022857 0.173913 +vt 0.028571 0.188406 +vt 0.022857 0.188406 +vt 0.022857 0.210145 +vt 0.031429 0.210145 +vt 0.048571 0.188406 +vt 0.054286 0.173913 +vt 0.040000 0.173913 +vt 0.040000 0.188406 +vt 0.065714 0.210145 +vt 0.074286 0.173913 +vt 0.080000 0.188406 +vt 0.088571 0.173913 +vt 0.088571 0.188406 +vt 0.040000 0.268116 +vt 0.031429 0.289855 +vt 0.031429 0.268116 +vt 0.071429 0.289855 +vt 0.065714 0.268116 +vt 0.074286 0.268116 +vt 0.028571 0.289855 +vt 0.022857 0.268116 +vt 0.062857 0.289855 +vt 0.057143 0.268116 +vt 0.091429 0.268116 +vt 0.082857 0.289855 +vt 0.082857 0.268116 +vt 0.045714 0.289855 +vt 0.048571 0.268116 +vt 0.080000 0.289855 +vt 0.048571 0.289855 +vt 0.071429 0.289855 +vt 0.065714 0.268116 +vt 0.074286 0.268116 +vt 0.088571 0.289855 +vt 0.082857 0.268116 +vt 0.091429 0.268116 +vt 0.054286 0.289855 +vt 0.048571 0.268116 +vt 0.057143 0.268116 +vt 0.065714 0.210145 +vt 0.062857 0.289855 +vt 0.080000 0.289855 +vt 0.040000 0.268116 +vt 0.048571 0.210145 +vt 0.031429 0.268116 +vt 0.022857 0.289855 +vt 0.022857 0.268116 +vt 0.045714 0.289855 +vt 0.031429 0.210145 +vt 0.091429 0.210145 +vt 0.065714 0.188406 +vt 0.074286 0.210145 +vt 0.082857 0.210145 +vt 0.037143 0.188406 +vt 0.040000 0.210145 +vt 0.031429 0.289855 +vt 0.040000 0.188406 +vt 0.045714 0.173913 +vt 0.045714 0.188406 +vt 0.074286 0.188406 +vt 0.080000 0.173913 +vt 0.080000 0.188406 +vt 0.048571 0.173913 +vt 0.054286 0.188406 +vt 0.048571 0.188406 +vt 0.057143 0.210145 +vt 0.062857 0.188406 +vt 0.082857 0.188406 +vt 0.088571 0.173913 +vt 0.088571 0.188406 +vt 0.031429 0.188406 +vt 0.037143 0.173913 +vt 0.022857 0.210145 +vt 0.028571 0.188406 +vt 0.065714 0.173913 +vt 0.071429 0.188406 +vt 0.022857 0.188406 +vt 0.028571 0.173913 +vt 0.057143 0.173913 +vt 0.057143 0.188406 +vt 0.040000 0.188406 +vt 0.048571 0.210145 +vt 0.040000 0.210145 +vt 0.048571 0.188406 +vt 0.057143 0.210145 +vt 0.057143 0.173913 +vt 0.062857 0.188406 +vt 0.057143 0.188406 +vt 0.065714 0.188406 +vt 0.071429 0.173913 +vt 0.071429 0.188406 +vt 0.074286 0.210145 +vt 0.080000 0.188406 +vt 0.082857 0.210145 +vt 0.082857 0.188406 +vt 0.091429 0.210145 +vt 0.031429 0.188406 +vt 0.037143 0.173913 +vt 0.037143 0.188406 +vt 0.022857 0.188406 +vt 0.028571 0.173913 +vt 0.028571 0.188406 +vt 0.022857 0.210145 +vt 0.031429 0.210145 +vt 0.048571 0.173913 +vt 0.054286 0.188406 +vt 0.040000 0.173913 +vt 0.045714 0.188406 +vt 0.065714 0.210145 +vt 0.074286 0.188406 +vt 0.080000 0.173913 +vt 0.088571 0.173913 +vt 0.088571 0.188406 +vt 0.040000 0.268116 +vt 0.031429 0.289855 +vt 0.031429 0.268116 +vt 0.071429 0.289855 +vt 0.065714 0.268116 +vt 0.074286 0.268116 +vt 0.022857 0.289855 +vt 0.022857 0.268116 +vt 0.057143 0.289855 +vt 0.057143 0.268116 +vt 0.091429 0.268116 +vt 0.082857 0.289855 +vt 0.082857 0.268116 +vt 0.045714 0.289855 +vt 0.048571 0.268116 +vt 0.080000 0.289855 +vt 0.054286 0.289855 +vt 0.048571 0.210145 +vt 0.057143 0.268116 +vt 0.048571 0.268116 +vt 0.031429 0.268116 +vt 0.040000 0.210145 +vt 0.040000 0.268116 +vt 0.082857 0.210145 +vt 0.091429 0.268116 +vt 0.082857 0.268116 +vt 0.065714 0.210145 +vt 0.074286 0.268116 +vt 0.065714 0.268116 +vt 0.022857 0.268116 +vt 0.031429 0.210145 +vt 0.048571 0.289855 +vt 0.031429 0.289855 +vt 0.082857 0.289855 +vt 0.071429 0.289855 +vt 0.045714 0.289855 +vt 0.022857 0.289855 +vt 0.074286 0.289855 +vt 0.062857 0.289855 +vt 0.065714 0.188406 +vt 0.074286 0.210145 +vt 0.040000 0.188406 +vt 0.022857 0.210145 +vt 0.028571 0.188406 +vt 0.080000 0.188406 +vt 0.057143 0.210145 +vt 0.062857 0.188406 +vt 0.054286 0.188406 +vt 0.037143 0.188406 +vt 0.082857 0.188406 +vt 0.091429 0.210145 +vt 0.074286 0.188406 +vt 0.080000 0.173913 +vt 0.057143 0.173913 +vt 0.057143 0.188406 +vt 0.048571 0.173913 +vt 0.048571 0.188406 +vt 0.031429 0.173913 +vt 0.031429 0.188406 +vt 0.082857 0.173913 +vt 0.088571 0.188406 +vt 0.065714 0.173913 +vt 0.071429 0.188406 +vt 0.040000 0.173913 +vt 0.045714 0.188406 +vt 0.022857 0.173913 +vt 0.022857 0.188406 +vt 0.811429 0.347826 +vt 0.805714 0.362319 +vt 0.805714 0.347826 +vt 0.834286 0.347826 +vt 0.828571 0.362319 +vt 0.828571 0.347826 +vt 0.800000 0.347826 +vt 0.800000 0.362319 +vt 0.794286 0.347826 +vt 0.794286 0.362319 +vt 0.817143 0.347826 +vt 0.811429 0.362319 +vt 0.822857 0.362319 +vt 0.817143 0.362319 +vt 0.822857 0.347826 +vt 0.840000 0.347826 +vt 0.834286 0.362319 +vt 0.840000 0.347826 +vt 0.834286 0.362319 +vt 0.834286 0.347826 +vt 0.822857 0.347826 +vt 0.817143 0.362319 +vt 0.817143 0.347826 +vt 0.800000 0.347826 +vt 0.805714 0.362319 +vt 0.800000 0.362319 +vt 0.811429 0.362319 +vt 0.811429 0.347826 +vt 0.794286 0.362319 +vt 0.794286 0.347826 +vt 0.828571 0.347826 +vt 0.822857 0.362319 +vt 0.828571 0.362319 +vt 0.805714 0.347826 +vt 0.840000 0.347826 +vt 0.834286 0.362319 +vt 0.834286 0.347826 +vt 0.828571 0.347826 +vt 0.822857 0.362319 +vt 0.822857 0.347826 +vt 0.817143 0.347826 +vt 0.811429 0.362319 +vt 0.811429 0.347826 +vt 0.805714 0.347826 +vt 0.800000 0.362319 +vt 0.800000 0.347826 +vt 0.828571 0.362319 +vt 0.817143 0.362319 +vt 0.805714 0.362319 +vt 0.794286 0.362319 +vt 0.794286 0.347826 +vt 0.822857 0.347826 +vt 0.817143 0.362319 +vt 0.817143 0.347826 +vt 0.811429 0.362319 +vt 0.811429 0.347826 +vt 0.828571 0.347826 +vt 0.822857 0.362319 +vt 0.834286 0.347826 +vt 0.828571 0.362319 +vt 0.805714 0.347826 +vt 0.800000 0.362319 +vt 0.800000 0.347826 +vt 0.794286 0.347826 +vt 0.794286 0.362319 +vt 0.805714 0.362319 +vt 0.840000 0.362319 +vt 0.834286 0.362319 +vt 0.840000 0.347826 +vt 0.834286 0.362319 +vt 0.834286 0.347826 +vt 0.805714 0.347826 +vt 0.811429 0.362319 +vt 0.805714 0.362319 +vt 0.794286 0.347826 +vt 0.800000 0.362319 +vt 0.794286 0.362319 +vt 0.828571 0.347826 +vt 0.828571 0.362319 +vt 0.817143 0.347826 +vt 0.811429 0.347826 +vt 0.822857 0.362319 +vt 0.817143 0.362319 +vt 0.800000 0.347826 +vt 0.822857 0.347826 +vt 0.840000 0.347826 +vt 0.834286 0.362319 +vt 0.834286 0.347826 +vt 0.817143 0.347826 +vt 0.822857 0.362319 +vt 0.817143 0.362319 +vt 0.805714 0.347826 +vt 0.800000 0.362319 +vt 0.800000 0.347826 +vt 0.811429 0.362319 +vt 0.811429 0.347826 +vt 0.794286 0.347826 +vt 0.794286 0.362319 +vt 0.828571 0.347826 +vt 0.822857 0.347826 +vt 0.828571 0.362319 +vt 0.805714 0.362319 +vt 0.840000 0.347826 +vt 0.834286 0.362319 +vt 0.834286 0.347826 +vt 0.811429 0.347826 +vt 0.805714 0.362319 +vt 0.805714 0.347826 +vt 0.800000 0.347826 +vt 0.794286 0.362319 +vt 0.794286 0.347826 +vt 0.828571 0.362319 +vt 0.828571 0.347826 +vt 0.817143 0.347826 +vt 0.811429 0.362319 +vt 0.822857 0.347826 +vt 0.817143 0.362319 +vt 0.800000 0.362319 +vt 0.822857 0.362319 +vt 0.840000 0.347826 +vt 0.834286 0.362319 +vt 0.834286 0.347826 +vt 0.811429 0.347826 +vt 0.805714 0.362319 +vt 0.805714 0.347826 +vt 0.800000 0.347826 +vt 0.794286 0.362319 +vt 0.794286 0.347826 +vt 0.828571 0.362319 +vt 0.828571 0.347826 +vt 0.817143 0.347826 +vt 0.811429 0.362319 +vt 0.822857 0.347826 +vt 0.817143 0.362319 +vt 0.800000 0.362319 +vt 0.822857 0.362319 +vt 0.040000 0.188406 +vt 0.048571 0.210145 +vt 0.040000 0.210145 +vt 0.048571 0.188406 +vt 0.057143 0.210145 +vt 0.057143 0.173913 +vt 0.062857 0.188406 +vt 0.057143 0.188406 +vt 0.065714 0.173913 +vt 0.071429 0.188406 +vt 0.065714 0.188406 +vt 0.074286 0.188406 +vt 0.082857 0.210145 +vt 0.074286 0.210145 +vt 0.082857 0.188406 +vt 0.091429 0.210145 +vt 0.031429 0.188406 +vt 0.037143 0.173913 +vt 0.037143 0.188406 +vt 0.022857 0.173913 +vt 0.028571 0.188406 +vt 0.022857 0.188406 +vt 0.022857 0.210145 +vt 0.031429 0.210145 +vt 0.054286 0.173913 +vt 0.054286 0.188406 +vt 0.040000 0.173913 +vt 0.045714 0.188406 +vt 0.065714 0.210145 +vt 0.080000 0.173913 +vt 0.080000 0.188406 +vt 0.082857 0.173913 +vt 0.088571 0.188406 +vt 0.040000 0.268116 +vt 0.031429 0.289855 +vt 0.031429 0.268116 +vt 0.071429 0.289855 +vt 0.065714 0.268116 +vt 0.074286 0.268116 +vt 0.028571 0.289855 +vt 0.022857 0.268116 +vt 0.057143 0.289855 +vt 0.057143 0.268116 +vt 0.091429 0.268116 +vt 0.082857 0.289855 +vt 0.082857 0.268116 +vt 0.045714 0.289855 +vt 0.048571 0.268116 +vt 0.074286 0.289855 +vt 0.048571 0.289855 +vt 0.074286 0.268116 +vt 0.065714 0.289855 +vt 0.065714 0.268116 +vt 0.088571 0.289855 +vt 0.082857 0.268116 +vt 0.091429 0.268116 +vt 0.057143 0.268116 +vt 0.048571 0.289855 +vt 0.048571 0.268116 +vt 0.065714 0.210145 +vt 0.062857 0.289855 +vt 0.080000 0.289855 +vt 0.040000 0.210145 +vt 0.040000 0.268116 +vt 0.031429 0.268116 +vt 0.022857 0.289855 +vt 0.022857 0.268116 +vt 0.045714 0.289855 +vt 0.031429 0.210145 +vt 0.082857 0.210145 +vt 0.065714 0.188406 +vt 0.074286 0.210145 +vt 0.048571 0.210145 +vt 0.037143 0.188406 +vt 0.031429 0.289855 +vt 0.040000 0.173913 +vt 0.045714 0.188406 +vt 0.040000 0.188406 +vt 0.074286 0.188406 +vt 0.080000 0.173913 +vt 0.080000 0.188406 +vt 0.048571 0.173913 +vt 0.054286 0.188406 +vt 0.048571 0.188406 +vt 0.057143 0.188406 +vt 0.057143 0.210145 +vt 0.082857 0.188406 +vt 0.088571 0.173913 +vt 0.088571 0.188406 +vt 0.031429 0.188406 +vt 0.037143 0.173913 +vt 0.022857 0.188406 +vt 0.022857 0.210145 +vt 0.065714 0.173913 +vt 0.071429 0.188406 +vt 0.091429 0.210145 +vt 0.022857 0.173913 +vt 0.028571 0.188406 +vt 0.057143 0.173913 +vt 0.062857 0.188406 +vt 0.040000 0.210145 +vt 0.045714 0.188406 +vt 0.048571 0.210145 +vt 0.048571 0.188406 +vt 0.057143 0.210145 +vt 0.057143 0.173913 +vt 0.062857 0.188406 +vt 0.057143 0.188406 +vt 0.065714 0.173913 +vt 0.071429 0.188406 +vt 0.065714 0.188406 +vt 0.074286 0.210145 +vt 0.080000 0.188406 +vt 0.082857 0.210145 +vt 0.082857 0.188406 +vt 0.091429 0.210145 +vt 0.031429 0.188406 +vt 0.037143 0.173913 +vt 0.037143 0.188406 +vt 0.022857 0.188406 +vt 0.028571 0.173913 +vt 0.028571 0.188406 +vt 0.022857 0.210145 +vt 0.031429 0.210145 +vt 0.048571 0.173913 +vt 0.054286 0.188406 +vt 0.040000 0.173913 +vt 0.040000 0.188406 +vt 0.065714 0.210145 +vt 0.074286 0.188406 +vt 0.080000 0.173913 +vt 0.082857 0.173913 +vt 0.088571 0.188406 +vt 0.040000 0.268116 +vt 0.031429 0.289855 +vt 0.031429 0.268116 +vt 0.071429 0.289855 +vt 0.065714 0.268116 +vt 0.074286 0.268116 +vt 0.022857 0.289855 +vt 0.022857 0.268116 +vt 0.057143 0.289855 +vt 0.057143 0.268116 +vt 0.091429 0.268116 +vt 0.082857 0.289855 +vt 0.082857 0.268116 +vt 0.045714 0.289855 +vt 0.048571 0.268116 +vt 0.080000 0.289855 +vt 0.048571 0.289855 +vt 0.048571 0.268116 +vt 0.057143 0.210145 +vt 0.057143 0.268116 +vt 0.031429 0.210145 +vt 0.040000 0.268116 +vt 0.031429 0.268116 +vt 0.082857 0.210145 +vt 0.091429 0.268116 +vt 0.082857 0.268116 +vt 0.065714 0.210145 +vt 0.074286 0.268116 +vt 0.065714 0.268116 +vt 0.048571 0.210145 +vt 0.022857 0.210145 +vt 0.022857 0.268116 +vt 0.048571 0.289855 +vt 0.031429 0.289855 +vt 0.088571 0.289855 +vt 0.071429 0.289855 +vt 0.040000 0.289855 +vt 0.028571 0.289855 +vt 0.074286 0.289855 +vt 0.062857 0.289855 +vt 0.065714 0.188406 +vt 0.074286 0.210145 +vt 0.040000 0.188406 +vt 0.040000 0.210145 +vt 0.022857 0.188406 +vt 0.080000 0.188406 +vt 0.062857 0.188406 +vt 0.048571 0.188406 +vt 0.037143 0.188406 +vt 0.082857 0.188406 +vt 0.091429 0.210145 +vt 0.074286 0.188406 +vt 0.080000 0.173913 +vt 0.057143 0.173913 +vt 0.057143 0.188406 +vt 0.048571 0.173913 +vt 0.054286 0.188406 +vt 0.031429 0.188406 +vt 0.037143 0.173913 +vt 0.088571 0.173913 +vt 0.088571 0.188406 +vt 0.065714 0.173913 +vt 0.071429 0.188406 +vt 0.040000 0.173913 +vt 0.045714 0.188406 +vt 0.028571 0.173913 +vt 0.028571 0.188406 +vt 0.822857 0.840580 +vt 0.822857 0.753623 +vt 0.822857 0.724638 +vt 0.822857 0.811594 +vt 1.000000 0.123188 +vt 1.000000 0.413043 +vt 1.000000 0.297101 +vt 1.000000 0.586957 +vt 1.000000 0.065217 +vt 1.000000 0.355072 +vt 1.000000 0.239130 +vt 1.000000 0.528986 +vt 1.000000 0.007246 +vt 1.000000 0.181159 +vt 1.000000 0.471014 +vt 1.000000 0.644928 +vt 0.062857 0.173913 +vt 0.071429 0.173913 +vt 0.031429 0.173913 +vt 0.028571 0.173913 +vt 0.048571 0.173913 +vt 0.045714 0.173913 +vt 0.080000 0.173913 +vt 0.082857 0.173913 +vt 0.037143 0.289855 +vt 0.065714 0.289855 +vt 0.022857 0.289855 +vt 0.057143 0.289855 +vt 0.088571 0.289855 +vt 0.040000 0.289855 +vt 0.074286 0.289855 +vt 0.054286 0.289855 +vt 0.065714 0.289855 +vt 0.082857 0.289855 +vt 0.048571 0.289855 +vt 0.057143 0.289855 +vt 0.074286 0.289855 +vt 0.028571 0.289855 +vt 0.040000 0.289855 +vt 0.037143 0.289855 +vt 0.040000 0.173913 +vt 0.074286 0.173913 +vt 0.054286 0.173913 +vt 0.082857 0.173913 +vt 0.031429 0.173913 +vt 0.071429 0.173913 +vt 0.022857 0.173913 +vt 0.062857 0.173913 +vt 0.062857 0.173913 +vt 0.065714 0.173913 +vt 0.031429 0.173913 +vt 0.022857 0.173913 +vt 0.054286 0.173913 +vt 0.045714 0.173913 +vt 0.074286 0.173913 +vt 0.082857 0.173913 +vt 0.037143 0.289855 +vt 0.065714 0.289855 +vt 0.028571 0.289855 +vt 0.062857 0.289855 +vt 0.088571 0.289855 +vt 0.040000 0.289855 +vt 0.074286 0.289855 +vt 0.048571 0.289855 +vt 0.054286 0.289855 +vt 0.037143 0.289855 +vt 0.088571 0.289855 +vt 0.065714 0.289855 +vt 0.040000 0.289855 +vt 0.028571 0.289855 +vt 0.080000 0.289855 +vt 0.057143 0.289855 +vt 0.074286 0.173913 +vt 0.062857 0.173913 +vt 0.054286 0.173913 +vt 0.037143 0.173913 +vt 0.088571 0.173913 +vt 0.071429 0.173913 +vt 0.045714 0.173913 +vt 0.028571 0.173913 +vt 0.840000 0.362319 +vt 0.840000 0.362319 +vt 0.840000 0.362319 +vt 0.840000 0.347826 +vt 0.840000 0.362319 +vt 0.840000 0.362319 +vt 0.840000 0.362319 +vt 0.840000 0.362319 +vt 0.062857 0.173913 +vt 0.071429 0.173913 +vt 0.031429 0.173913 +vt 0.028571 0.173913 +vt 0.048571 0.173913 +vt 0.045714 0.173913 +vt 0.074286 0.173913 +vt 0.088571 0.173913 +vt 0.037143 0.289855 +vt 0.065714 0.289855 +vt 0.022857 0.289855 +vt 0.062857 0.289855 +vt 0.088571 0.289855 +vt 0.040000 0.289855 +vt 0.080000 0.289855 +vt 0.054286 0.289855 +vt 0.071429 0.289855 +vt 0.082857 0.289855 +vt 0.054286 0.289855 +vt 0.057143 0.289855 +vt 0.074286 0.289855 +vt 0.028571 0.289855 +vt 0.040000 0.289855 +vt 0.037143 0.289855 +vt 0.045714 0.173913 +vt 0.074286 0.173913 +vt 0.054286 0.173913 +vt 0.082857 0.173913 +vt 0.031429 0.173913 +vt 0.071429 0.173913 +vt 0.028571 0.173913 +vt 0.062857 0.173913 +vt 0.062857 0.173913 +vt 0.071429 0.173913 +vt 0.031429 0.173913 +vt 0.022857 0.173913 +vt 0.054286 0.173913 +vt 0.045714 0.173913 +vt 0.074286 0.173913 +vt 0.088571 0.173913 +vt 0.037143 0.289855 +vt 0.065714 0.289855 +vt 0.028571 0.289855 +vt 0.062857 0.289855 +vt 0.088571 0.289855 +vt 0.040000 0.289855 +vt 0.074286 0.289855 +vt 0.054286 0.289855 +vt 0.054286 0.289855 +vt 0.037143 0.289855 +vt 0.082857 0.289855 +vt 0.065714 0.289855 +vt 0.045714 0.289855 +vt 0.022857 0.289855 +vt 0.080000 0.289855 +vt 0.057143 0.289855 +vt 0.074286 0.173913 +vt 0.062857 0.173913 +vt 0.054286 0.173913 +vt 0.031429 0.173913 +vt 0.082857 0.173913 +vt 0.071429 0.173913 +vt 0.045714 0.173913 +vt 0.022857 0.173913 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.0000 -1.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 -0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 -0.7071 -0.0000 +vn -0.2298 0.9732 0.0000 +vn -0.4472 0.8944 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.2298 -0.9732 0.0000 +vn -0.2298 -0.9732 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.8944 -0.4472 0.0000 +vn 0.9732 -0.2298 0.0000 +vn 0.8944 0.4472 0.0000 +vn 0.9732 0.2298 0.0000 +vn 0.4472 -0.8944 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.8660 0.5000 0.0000 +vn -0.4472 -0.8944 0.0000 +vn -0.8660 -0.5000 0.0000 +vn -0.9732 -0.2298 0.0000 +vn -0.8944 -0.4472 0.0000 +vn -0.9732 0.2298 0.0000 +vn -0.8944 0.4472 0.0000 +vn 0.2298 0.9732 0.0000 +vn 0.4472 0.8944 0.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.8660 0.5000 0.0000 +vn -1.0000 -0.0040 -0.0000 +vn -0.8530 0.1430 -0.5020 +vn -0.4980 0.4980 -0.7099 +vn 0.5000 0.5000 -0.7071 +vn 0.0040 1.0000 0.0000 +vn -0.1430 0.8530 0.5020 +vn -0.4980 0.4980 0.7099 +vn -0.5000 -0.5000 0.7071 +vn -0.8530 0.1430 0.5020 +vn -0.5000 -0.5000 -0.7071 +vn -0.1430 0.8530 -0.5020 +vn 0.5000 0.5000 0.7071 +vn 0.1464 -0.8536 0.5000 +vn 0.8536 -0.1464 -0.5000 +vn 0.5000 -0.5000 0.7071 +vn 0.5000 -0.5000 -0.7071 +vn 0.8536 -0.1464 0.5000 +vn 0.1464 -0.8536 -0.5000 +vn -0.8536 0.1464 -0.5000 +vn -0.5000 0.5000 0.7071 +vn -0.8536 0.1464 0.5000 +vn -0.5000 0.5000 -0.7071 +vn -0.1464 0.8536 -0.5000 +vn -0.1464 0.8536 0.5000 +vn 0.1430 -0.8530 -0.5020 +vn -0.0040 -1.0000 -0.0000 +vn 0.8530 -0.1430 0.5020 +vn 1.0000 0.0040 0.0000 +vn 0.4980 -0.4980 -0.7099 +vn 0.4980 -0.4980 0.7099 +vn 0.8530 -0.1430 -0.5020 +vn 0.1430 -0.8530 0.5020 +vn -0.0040 1.0000 -0.0000 +vn 0.1430 0.8530 -0.5020 +vn 0.4980 0.4980 -0.7099 +vn 1.0000 -0.0040 -0.0000 +vn 0.8530 0.1430 0.5020 +vn 0.4980 0.4980 0.7099 +vn 0.1430 0.8530 0.5020 +vn 0.8530 0.1430 -0.5020 +vn -0.8536 -0.1464 0.5000 +vn -0.1464 -0.8536 -0.5000 +vn -0.1464 -0.8536 0.5000 +vn -0.8536 -0.1464 -0.5000 +vn 0.8536 0.1464 -0.5000 +vn 0.8536 0.1464 0.5000 +vn 0.1464 0.8536 0.5000 +vn 0.1464 0.8536 -0.5000 +vn -0.8530 -0.1430 -0.5020 +vn -1.0000 0.0040 0.0000 +vn 0.0040 -1.0000 0.0000 +vn -0.1430 -0.8530 -0.5020 +vn -0.4980 -0.4980 0.7099 +vn -0.1430 -0.8530 0.5020 +vn -0.8530 -0.1430 0.5020 +vn -0.4980 -0.4980 -0.7099 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +s off +f 19/35/11 24/36/11 20/37/11 +f 18/38/12 22/39/12 17/40/12 +f 20/37/13 23/41/13 18/38/13 +f 17/40/14 21/42/14 19/43/14 +f 27/44/11 32/45/11 28/46/11 +f 26/47/12 30/48/12 25/49/12 +f 28/46/13 31/50/13 26/47/13 +f 25/49/14 29/51/14 27/52/14 +f 48/53/11 43/54/11 44/55/11 +f 46/56/12 42/57/12 41/58/12 +f 47/59/14 44/60/14 42/57/14 +f 45/61/13 41/58/13 43/54/13 +f 56/62/11 51/63/11 52/64/11 +f 54/65/12 50/66/12 49/67/12 +f 55/68/14 52/69/14 50/66/14 +f 53/70/13 49/67/13 51/63/13 +f 99/71/15 112/72/15 111/73/15 +f 97/74/15 108/75/15 96/76/15 +f 104/77/15 115/78/15 103/79/15 +f 94/80/15 105/81/15 93/82/15 +f 101/83/15 112/84/15 100/85/15 +f 98/86/15 109/87/15 97/74/15 +f 104/77/15 105/88/15 116/89/15 +f 95/90/15 106/91/15 94/80/15 +f 101/83/15 114/92/15 113/93/15 +f 99/94/15 110/95/15 98/86/15 +f 96/76/15 107/96/15 95/90/15 +f 102/97/15 115/98/15 114/99/15 +f 92/100/16 117/101/16 81/102/16 +f 117/103/16 82/104/16 81/102/16 +f 118/105/16 83/106/16 82/104/16 +f 119/107/16 84/108/16 83/106/16 +f 120/109/16 85/110/16 84/108/16 +f 121/111/16 86/112/16 85/110/16 +f 122/113/16 87/114/16 86/112/16 +f 87/115/16 124/116/16 88/117/16 +f 124/118/16 89/119/16 88/117/16 +f 89/119/16 126/120/16 90/121/16 +f 90/121/16 127/122/16 91/123/16 +f 127/124/16 92/100/16 91/123/16 +f 48/53/15 46/125/15 45/61/15 +f 22/126/15 24/36/15 21/127/15 +f 30/128/15 32/45/15 29/129/15 +f 56/62/15 54/130/15 53/70/15 +f 136/131/17 130/132/17 132/133/17 +f 150/134/18 148/135/18 146/136/18 +f 201/137/18 207/138/18 205/139/18 +f 187/140/17 189/141/17 191/142/17 +f 216/143/19 210/144/19 212/145/19 +f 230/146/20 228/147/20 226/148/20 +f 267/149/19 269/150/19 271/151/19 +f 281/152/20 287/153/20 285/154/20 +f 301/155/20 303/156/20 297/157/20 +f 317/158/18 319/159/18 313/160/18 +f 333/161/11 335/162/11 329/163/11 +f 340/164/17 338/165/17 344/166/17 +f 356/167/19 354/168/19 360/169/19 +f 381/170/14 383/171/14 377/172/14 +f 388/173/13 386/174/13 392/175/13 +f 404/176/12 402/177/12 408/178/12 +f 424/179/17 418/180/17 420/181/17 +f 438/182/18 436/183/18 434/184/18 +f 489/185/18 495/186/18 493/187/18 +f 475/188/17 477/189/17 479/190/17 +f 504/191/19 498/192/19 500/193/19 +f 518/194/20 516/195/20 514/196/20 +f 555/197/19 557/198/19 559/199/19 +f 569/200/20 575/201/20 573/202/20 +f 19/35/11 21/127/11 24/36/11 +f 18/38/12 23/41/12 22/39/12 +f 20/37/13 24/36/13 23/41/13 +f 17/40/14 22/39/14 21/42/14 +f 27/44/11 29/129/11 32/45/11 +f 26/47/12 31/50/12 30/48/12 +f 28/46/13 32/45/13 31/50/13 +f 25/49/14 30/48/14 29/51/14 +f 48/53/11 45/61/11 43/54/11 +f 46/56/12 47/59/12 42/57/12 +f 47/59/14 48/203/14 44/60/14 +f 45/61/13 46/56/13 41/58/13 +f 56/62/11 53/70/11 51/63/11 +f 54/65/12 55/68/12 50/66/12 +f 55/68/14 56/204/14 52/69/14 +f 53/70/13 54/65/13 49/67/13 +f 99/71/15 100/85/15 112/72/15 +f 97/74/15 109/205/15 108/75/15 +f 104/77/15 116/206/15 115/78/15 +f 94/80/15 106/207/15 105/81/15 +f 101/83/15 113/208/15 112/84/15 +f 98/86/15 110/209/15 109/87/15 +f 104/77/15 93/82/15 105/88/15 +f 95/90/15 107/210/15 106/91/15 +f 101/83/15 102/97/15 114/92/15 +f 99/94/15 111/211/15 110/95/15 +f 96/76/15 108/212/15 107/96/15 +f 102/97/15 103/79/15 115/98/15 +f 92/100/16 128/213/16 117/101/16 +f 117/103/16 118/214/16 82/104/16 +f 118/105/16 119/215/16 83/106/16 +f 119/107/16 120/216/16 84/108/16 +f 120/109/16 121/217/16 85/110/16 +f 121/111/16 122/218/16 86/112/16 +f 122/113/16 123/219/16 87/114/16 +f 87/115/16 123/220/16 124/116/16 +f 124/118/16 125/221/16 89/119/16 +f 89/119/16 125/222/16 126/120/16 +f 90/121/16 126/223/16 127/122/16 +f 127/124/16 128/224/16 92/100/16 +f 48/53/15 47/225/15 46/125/15 +f 22/126/15 23/226/15 24/36/15 +f 30/128/15 31/227/15 32/45/15 +f 56/62/15 55/228/15 54/130/15 +f 134/229/17 135/230/17 136/131/17 +f 136/131/17 129/231/17 130/132/17 +f 130/132/17 131/232/17 132/133/17 +f 132/133/17 133/233/17 134/229/17 +f 134/229/17 136/131/17 132/133/17 +f 152/234/18 151/235/18 150/134/18 +f 150/134/18 149/236/18 148/135/18 +f 148/135/18 147/237/18 146/136/18 +f 146/136/18 145/238/18 152/234/18 +f 152/234/18 150/134/18 146/136/18 +f 203/239/18 202/240/18 201/137/18 +f 201/137/18 208/241/18 207/138/18 +f 207/138/18 206/242/18 205/139/18 +f 205/139/18 204/243/18 203/239/18 +f 203/239/18 201/137/18 205/139/18 +f 185/244/17 186/245/17 187/140/17 +f 187/140/17 188/246/17 189/141/17 +f 189/141/17 190/247/17 191/142/17 +f 191/142/17 192/248/17 185/244/17 +f 185/244/17 187/140/17 191/142/17 +f 214/249/19 215/250/19 216/143/19 +f 216/143/19 209/251/19 210/144/19 +f 210/144/19 211/252/19 212/145/19 +f 212/145/19 213/253/19 214/249/19 +f 214/249/19 216/143/19 212/145/19 +f 232/254/20 231/255/20 230/146/20 +f 230/146/20 229/256/20 228/147/20 +f 228/147/20 227/257/20 226/148/20 +f 226/148/20 225/258/20 232/254/20 +f 232/254/20 230/146/20 226/148/20 +f 265/259/19 266/260/19 267/149/19 +f 267/149/19 268/261/19 269/150/19 +f 269/150/19 270/262/19 271/151/19 +f 271/151/19 272/263/19 265/259/19 +f 265/259/19 267/149/19 271/151/19 +f 283/264/20 282/265/20 281/152/20 +f 281/152/20 288/266/20 287/153/20 +f 287/153/20 286/267/20 285/154/20 +f 285/154/20 284/268/20 283/264/20 +f 283/264/20 281/152/20 285/154/20 +f 297/157/20 298/269/20 299/270/20 +f 299/270/20 300/271/20 297/157/20 +f 300/271/20 301/155/20 297/157/20 +f 301/155/20 302/272/20 303/156/20 +f 303/156/20 304/273/20 297/157/20 +f 313/160/18 314/274/18 315/275/18 +f 315/275/18 316/276/18 313/160/18 +f 316/276/18 317/158/18 313/160/18 +f 317/158/18 318/277/18 319/159/18 +f 319/159/18 320/278/18 313/160/18 +f 329/163/11 330/279/11 331/280/11 +f 331/280/11 332/281/11 329/163/11 +f 332/281/11 333/161/11 329/163/11 +f 333/161/11 334/282/11 335/162/11 +f 335/162/11 336/283/11 329/163/11 +f 344/166/17 343/284/17 342/285/17 +f 342/285/17 341/286/17 344/166/17 +f 341/286/17 340/164/17 344/166/17 +f 340/164/17 339/287/17 338/165/17 +f 338/165/17 337/288/17 344/166/17 +f 360/169/19 359/289/19 358/290/19 +f 358/290/19 357/291/19 360/169/19 +f 357/291/19 356/167/19 360/169/19 +f 356/167/19 355/292/19 354/168/19 +f 354/168/19 353/293/19 360/169/19 +f 377/172/14 378/294/14 379/295/14 +f 379/295/14 380/296/14 377/172/14 +f 380/296/14 381/170/14 377/172/14 +f 381/170/14 382/297/14 383/171/14 +f 383/171/14 384/298/14 377/172/14 +f 392/175/13 391/299/13 390/300/13 +f 390/300/13 389/301/13 392/175/13 +f 389/301/13 388/173/13 392/175/13 +f 388/173/13 387/302/13 386/174/13 +f 386/174/13 385/303/13 392/175/13 +f 408/178/12 407/304/12 406/305/12 +f 406/305/12 405/306/12 408/178/12 +f 405/306/12 404/176/12 408/178/12 +f 404/176/12 403/307/12 402/177/12 +f 402/177/12 401/308/12 408/178/12 +f 422/309/17 423/310/17 424/179/17 +f 424/179/17 417/311/17 418/180/17 +f 418/180/17 419/312/17 420/181/17 +f 420/181/17 421/313/17 422/309/17 +f 422/309/17 424/179/17 420/181/17 +f 440/314/18 439/315/18 438/182/18 +f 438/182/18 437/316/18 436/183/18 +f 436/183/18 435/317/18 434/184/18 +f 434/184/18 433/318/18 440/314/18 +f 440/314/18 438/182/18 434/184/18 +f 491/319/18 490/320/18 489/185/18 +f 489/185/18 496/321/18 495/186/18 +f 495/186/18 494/322/18 493/187/18 +f 493/187/18 492/323/18 491/319/18 +f 491/319/18 489/185/18 493/187/18 +f 473/324/17 474/325/17 475/188/17 +f 475/188/17 476/326/17 477/189/17 +f 477/189/17 478/327/17 479/190/17 +f 479/190/17 480/328/17 473/324/17 +f 473/324/17 475/188/17 479/190/17 +f 502/329/19 503/330/19 504/191/19 +f 504/191/19 497/331/19 498/192/19 +f 498/192/19 499/332/19 500/193/19 +f 500/193/19 501/333/19 502/329/19 +f 502/329/19 504/191/19 500/193/19 +f 520/334/20 519/335/20 518/194/20 +f 518/194/20 517/336/20 516/195/20 +f 516/195/20 515/337/20 514/196/20 +f 514/196/20 513/338/20 520/334/20 +f 520/334/20 518/194/20 514/196/20 +f 553/339/19 554/340/19 555/197/19 +f 555/197/19 556/341/19 557/198/19 +f 557/198/19 558/342/19 559/199/19 +f 559/199/19 560/343/19 553/339/19 +f 553/339/19 555/197/19 559/199/19 +f 571/344/20 570/345/20 569/200/20 +f 569/200/20 576/346/20 575/201/20 +f 575/201/20 574/347/20 573/202/20 +f 573/202/20 572/348/20 571/344/20 +f 571/344/20 569/200/20 573/202/20 +s 1 +f 78/349/21 75/350/22 76/351/22 +f 89/119/23 100/85/24 88/117/24 +f 71/352/25 70/353/26 69/354/26 +f 82/104/27 93/82/11 81/102/11 +f 35/355/28 38/356/29 36/357/28 +f 34/358/30 39/359/31 33/360/30 +f 39/359/31 38/356/29 37/361/29 +f 66/362/32 71/352/25 65/363/32 +f 92/100/33 103/79/34 91/123/34 +f 67/364/35 70/353/26 68/365/35 +f 85/110/36 96/76/14 84/108/14 +f 62/366/37 59/367/38 60/368/38 +f 63/369/39 58/370/40 57/371/40 +f 62/366/37 63/369/39 61/372/37 +f 79/373/41 74/374/42 73/375/42 +f 78/349/21 79/373/41 77/376/21 +f 86/112/43 97/74/36 85/110/36 +f 81/102/11 104/77/33 92/100/33 +f 83/106/44 94/80/27 82/104/27 +f 90/121/13 101/83/23 89/119/23 +f 87/114/12 98/86/43 86/112/43 +f 84/108/14 95/90/44 83/106/44 +f 91/123/34 102/97/13 90/121/13 +f 88/117/24 99/71/12 87/115/12 +f 109/205/34 120/377/13 108/75/13 +f 116/206/43 127/378/36 115/78/36 +f 106/207/24 117/379/12 105/81/12 +f 113/208/44 124/380/27 112/84/27 +f 110/209/33 121/381/34 109/87/34 +f 105/88/12 128/382/43 116/89/43 +f 107/210/23 118/383/24 106/91/24 +f 114/92/14 125/384/44 113/93/44 +f 111/211/11 122/385/33 110/95/33 +f 108/212/13 119/386/23 107/96/23 +f 115/98/36 126/387/14 114/99/14 +f 112/72/27 123/388/11 111/73/11 +f 154/389/45 137/390/46 153/391/46 +f 153/391/46 144/392/47 160/393/47 +f 136/394/16 143/395/48 144/396/16 +f 135/397/48 142/398/19 143/399/48 +f 142/400/49 157/401/50 158/402/49 +f 141/403/50 156/404/51 157/401/50 +f 139/405/52 130/406/20 138/407/20 +f 132/408/15 139/409/52 140/410/15 +f 156/411/51 139/409/53 155/412/53 +f 155/412/53 138/407/45 154/389/45 +f 137/413/54 136/414/16 144/392/16 +f 130/415/20 137/390/54 138/416/20 +f 160/393/47 143/395/55 159/417/55 +f 134/418/19 141/419/56 142/400/19 +f 141/403/56 132/420/15 140/421/15 +f 162/422/12 147/423/57 163/424/57 +f 150/425/13 167/426/58 166/427/13 +f 147/428/57 164/429/59 163/424/57 +f 151/430/58 168/431/60 167/426/58 +f 159/417/55 142/398/49 158/402/49 +f 164/432/59 149/433/61 165/434/61 +f 145/435/62 162/422/12 161/436/62 +f 149/437/61 166/427/13 165/434/61 +f 166/427/19 157/401/56 165/434/56 +f 168/431/60 145/438/62 161/436/62 +f 155/412/52 162/422/20 163/424/52 +f 167/426/48 158/402/19 166/427/19 +f 164/429/15 155/412/52 163/424/52 +f 160/393/16 167/426/48 168/431/16 +f 165/434/56 156/404/15 164/432/15 +f 154/389/20 161/436/54 162/422/20 +f 153/391/54 168/431/16 161/436/54 +f 187/439/14 170/440/63 171/441/14 +f 189/442/64 172/443/65 173/444/64 +f 185/445/66 176/446/67 169/447/66 +f 169/447/16 178/448/54 170/440/54 +f 186/449/63 169/447/66 170/440/63 +f 188/450/65 171/441/14 172/443/65 +f 178/448/54 171/441/20 170/440/54 +f 175/451/19 184/452/48 176/446/48 +f 174/453/68 189/454/64 173/455/64 +f 192/456/67 175/451/11 176/446/67 +f 182/457/56 175/451/19 174/453/56 +f 172/443/52 181/458/15 173/444/15 +f 194/459/69 179/460/70 178/448/69 +f 171/441/20 180/461/52 172/443/52 +f 173/455/15 182/457/56 174/453/56 +f 184/452/48 169/447/16 176/446/48 +f 182/457/71 199/462/72 183/463/72 +f 175/451/11 190/464/68 174/453/68 +f 199/465/19 208/466/48 200/467/48 +f 195/468/20 204/469/52 196/470/52 +f 208/471/48 193/472/16 200/473/48 +f 177/474/73 194/475/69 178/448/69 +f 196/476/52 205/477/15 197/478/15 +f 198/479/56 207/480/19 199/462/19 +f 181/481/74 198/482/71 182/457/71 +f 200/473/75 177/474/73 184/452/75 +f 202/483/54 195/484/20 194/459/54 +f 196/476/76 181/458/74 180/461/76 +f 197/485/15 206/486/56 198/482/56 +f 201/487/16 194/475/54 193/488/16 +f 179/460/70 196/470/76 180/461/76 +f 199/465/72 184/452/75 183/463/72 +f 218/489/77 233/490/78 234/491/77 +f 217/492/78 240/493/79 233/490/78 +f 216/494/16 223/495/60 224/496/16 +f 223/497/60 214/498/18 222/499/18 +f 238/500/80 221/501/81 237/502/81 +f 221/503/81 236/504/82 237/502/81 +f 219/505/64 210/506/17 218/507/17 +f 220/508/15 211/509/64 219/510/64 +f 236/511/82 219/510/83 235/512/83 +f 219/505/83 234/491/77 235/512/83 +f 209/513/66 224/514/16 217/492/66 +f 210/515/17 217/516/66 218/489/17 +f 240/493/79 223/495/84 239/517/84 +f 222/518/18 213/519/59 221/501/59 +f 221/503/59 212/520/15 220/521/15 +f 242/522/14 227/523/85 243/524/85 +f 230/525/12 247/526/86 246/527/12 +f 243/524/85 228/528/52 244/529/52 +f 247/526/86 232/530/54 248/531/54 +f 223/497/84 238/500/80 239/517/84 +f 244/532/52 229/533/87 245/534/87 +f 225/535/88 242/522/14 241/536/88 +f 229/537/87 246/527/12 245/534/87 +f 246/527/18 237/502/59 245/534/59 +f 232/538/54 241/536/88 248/531/54 +f 235/512/64 242/522/17 243/524/64 +f 239/517/60 246/527/18 247/526/60 +f 244/529/15 235/512/64 243/524/64 +f 248/531/16 239/517/60 247/526/60 +f 237/502/59 244/532/15 245/534/59 +f 234/491/17 241/536/66 242/522/17 +f 233/490/66 248/531/16 241/536/66 +f 264/539/60 249/540/16 256/541/60 +f 254/542/59 263/543/18 255/544/18 +f 260/545/64 253/546/15 252/547/64 +f 258/548/66 251/549/17 250/550/66 +f 255/544/18 264/539/60 256/541/60 +f 253/551/15 262/552/59 254/542/59 +f 251/549/17 260/545/64 252/547/64 +f 249/540/16 258/548/66 250/550/66 +f 249/540/48 272/553/89 256/541/89 +f 255/544/13 270/554/90 254/542/90 +f 253/546/56 268/555/91 252/547/91 +f 267/556/11 250/550/92 251/549/11 +f 272/557/89 255/544/13 256/541/89 +f 254/542/90 269/558/56 253/551/56 +f 252/547/91 267/559/11 251/549/11 +f 266/560/92 249/540/48 250/550/92 +f 274/561/93 259/562/94 258/548/93 +f 279/563/95 264/539/96 263/543/95 +f 261/564/97 278/565/98 262/552/98 +f 259/562/94 276/566/99 260/545/99 +f 257/567/100 274/568/93 258/548/93 +f 264/539/96 273/569/100 257/567/100 +f 262/552/98 279/570/95 263/543/95 +f 276/571/99 261/572/97 260/545/99 +f 275/573/17 284/574/64 276/566/64 +f 281/575/16 274/568/66 273/576/16 +f 288/577/60 273/569/16 280/578/60 +f 286/579/59 279/570/18 278/580/59 +f 284/581/64 277/582/15 276/571/64 +f 282/583/66 275/584/17 274/561/66 +f 287/585/18 280/586/60 279/563/18 +f 285/587/15 278/565/59 277/588/15 +f 292/589/59 299/590/18 291/591/18 +f 296/592/66 303/593/17 295/594/17 +f 290/595/60 299/590/18 298/596/60 +f 289/597/16 298/596/60 297/598/16 +f 293/599/15 300/600/59 292/589/59 +f 293/599/15 302/601/64 301/602/15 +f 294/603/64 303/593/17 302/601/64 +f 289/604/16 304/605/66 296/592/66 +f 305/606/16 320/607/54 312/608/54 +f 310/609/52 317/610/15 309/611/15 +f 306/612/48 315/613/19 314/614/48 +f 309/611/15 316/615/56 308/616/56 +f 306/612/48 313/617/16 305/618/16 +f 311/619/20 318/620/52 310/609/52 +f 311/619/20 320/607/54 319/621/20 +f 308/616/56 315/613/19 307/622/19 +f 321/623/16 336/624/101 328/625/101 +f 327/626/13 334/627/102 326/628/102 +f 325/629/15 332/630/103 324/631/103 +f 323/632/14 330/633/104 322/634/104 +f 328/625/101 335/635/13 327/626/13 +f 326/628/102 333/636/15 325/629/15 +f 324/631/103 331/637/14 323/632/14 +f 322/634/104 329/638/16 321/639/16 +f 347/640/56 340/641/15 348/642/15 +f 348/642/15 341/643/52 349/644/52 +f 346/645/19 339/646/56 347/640/56 +f 345/647/48 338/648/19 346/645/19 +f 350/649/20 343/650/54 351/651/54 +f 352/652/16 343/650/54 344/653/16 +f 350/649/20 341/643/52 342/654/20 +f 345/647/48 344/655/16 337/656/48 +f 368/657/16 353/658/60 361/659/60 +f 366/660/17 357/661/64 358/662/17 +f 368/663/16 359/664/66 360/665/16 +f 362/666/18 353/658/60 354/667/18 +f 364/668/15 357/661/64 365/669/64 +f 364/668/15 355/670/59 356/671/15 +f 367/672/66 358/662/17 359/664/66 +f 362/666/18 355/670/59 363/673/59 +f 369/674/16 384/675/105 376/676/105 +f 373/677/15 382/678/106 381/679/15 +f 371/680/12 378/681/107 370/682/107 +f 373/677/15 380/683/108 372/684/108 +f 369/685/16 378/681/107 377/686/16 +f 375/687/11 382/678/106 374/688/106 +f 376/676/105 383/689/11 375/687/11 +f 372/684/108 379/690/12 371/680/12 +f 400/691/16 385/692/107 393/693/107 +f 397/694/106 390/695/11 398/696/11 +f 399/697/105 392/698/16 400/699/16 +f 393/693/107 386/700/12 394/701/12 +f 396/702/15 389/703/106 397/694/106 +f 395/704/108 388/705/15 396/702/15 +f 398/696/11 391/706/105 399/697/105 +f 394/701/12 387/707/108 395/704/108 +f 416/708/16 401/709/104 409/710/104 +f 413/711/102 406/712/13 414/713/13 +f 415/714/101 408/715/16 416/716/16 +f 409/710/104 402/717/14 410/718/14 +f 412/719/15 405/720/102 413/711/102 +f 411/721/103 404/722/15 412/719/15 +f 414/713/13 407/723/101 415/714/101 +f 410/718/14 403/724/103 411/721/103 +f 426/725/45 441/726/46 442/727/45 +f 425/728/46 448/729/47 441/726/46 +f 424/730/16 431/731/48 432/732/16 +f 423/733/48 430/734/19 431/735/48 +f 430/736/49 445/737/50 446/738/49 +f 429/739/50 444/740/51 445/737/50 +f 427/741/52 418/742/20 426/743/20 +f 420/744/15 427/745/52 428/746/15 +f 444/747/51 427/745/53 443/748/53 +f 443/748/53 426/743/45 442/727/45 +f 425/728/54 424/749/16 432/750/16 +f 418/751/20 425/752/54 426/725/20 +f 448/729/47 431/731/55 447/753/55 +f 430/736/19 421/754/56 429/755/56 +f 421/756/56 428/757/15 429/739/56 +f 450/758/12 435/759/57 451/760/57 +f 438/761/13 455/762/58 454/763/13 +f 435/764/57 452/765/59 451/760/57 +f 455/762/58 440/766/60 456/767/60 +f 447/753/55 430/734/49 446/738/49 +f 452/768/59 437/769/61 453/770/61 +f 433/771/62 450/758/12 449/772/62 +f 453/770/61 438/773/13 454/763/13 +f 454/763/19 445/737/56 453/770/56 +f 456/767/60 433/774/62 449/772/62 +f 443/748/52 450/758/20 451/760/52 +f 455/762/48 446/738/19 454/763/19 +f 452/765/15 443/748/52 451/760/52 +f 448/729/16 455/762/48 456/767/16 +f 445/737/56 452/768/15 453/770/56 +f 450/758/20 441/726/54 449/772/54 +f 441/726/54 456/767/16 449/772/54 +f 459/775/14 474/776/63 458/777/63 +f 477/778/64 460/779/65 461/780/64 +f 457/781/66 480/782/67 464/783/67 +f 457/781/16 466/784/54 458/777/54 +f 474/785/63 457/781/66 458/777/63 +f 476/786/65 459/775/14 460/779/65 +f 466/784/54 459/775/20 458/777/54 +f 471/787/19 464/783/48 463/788/19 +f 462/789/68 477/790/64 461/791/64 +f 480/792/67 463/788/11 464/783/67 +f 470/793/56 463/788/19 462/789/56 +f 468/794/52 461/780/15 460/779/52 +f 482/795/69 467/796/70 466/784/69 +f 459/775/20 468/794/52 460/779/52 +f 461/791/15 470/793/56 462/789/56 +f 472/797/48 457/781/16 464/783/48 +f 470/793/71 487/798/72 471/787/72 +f 463/788/11 478/799/68 462/789/68 +f 495/800/19 488/801/48 487/802/19 +f 483/803/20 492/804/52 484/805/52 +f 496/806/48 481/807/16 488/808/48 +f 481/809/73 466/784/69 465/810/73 +f 484/811/52 493/812/15 485/813/15 +f 486/814/56 495/815/19 487/798/19 +f 485/816/74 470/793/71 469/817/74 +f 472/797/75 481/807/73 465/810/73 +f 490/818/54 483/819/20 482/795/54 +f 484/811/76 469/820/74 468/794/76 +f 493/821/15 486/822/56 485/816/15 +f 489/823/16 482/824/54 481/809/16 +f 467/796/70 484/805/76 468/794/76 +f 487/802/72 472/797/75 471/787/72 +f 522/825/77 505/826/78 521/827/78 +f 505/828/78 528/829/79 521/827/78 +f 504/830/16 511/831/60 512/832/16 +f 503/833/60 510/834/18 511/835/60 +f 526/836/80 509/837/81 525/838/81 +f 509/839/81 524/840/82 525/838/81 +f 507/841/64 498/842/17 506/843/17 +f 508/844/15 499/845/64 507/846/64 +f 524/847/82 507/846/83 523/848/83 +f 507/841/83 522/825/77 523/848/83 +f 497/849/66 512/850/16 505/828/66 +f 498/851/17 505/826/66 506/852/17 +f 528/829/79 511/831/84 527/853/84 +f 510/854/18 501/855/59 509/837/59 +f 501/856/59 508/857/15 509/839/59 +f 530/858/14 515/859/85 531/860/85 +f 518/861/12 535/862/86 534/863/12 +f 531/860/85 516/864/52 532/865/52 +f 535/862/86 520/866/54 536/867/54 +f 511/835/84 526/836/80 527/853/84 +f 532/868/52 517/869/87 533/870/87 +f 513/871/88 530/858/14 529/872/88 +f 517/873/87 534/863/12 533/870/87 +f 534/863/18 525/838/59 533/870/59 +f 536/867/54 513/874/88 529/872/88 +f 523/848/64 530/858/17 531/860/64 +f 527/853/60 534/863/18 535/862/60 +f 524/847/15 531/860/64 532/865/15 +f 536/867/16 527/853/60 535/862/60 +f 525/838/59 532/868/15 533/870/59 +f 522/825/17 529/872/66 530/858/17 +f 521/827/66 536/867/16 529/872/66 +f 544/875/60 545/876/16 537/877/16 +f 550/878/59 543/879/18 542/880/59 +f 548/881/64 541/882/15 540/883/64 +f 546/884/66 539/885/17 538/886/66 +f 543/879/18 552/887/60 544/875/60 +f 549/888/15 542/880/59 541/889/15 +f 539/885/17 548/881/64 540/883/64 +f 537/877/16 546/884/66 538/886/66 +f 537/877/48 560/890/89 544/875/89 +f 543/879/13 558/891/90 542/880/90 +f 557/892/56 540/883/91 541/882/56 +f 555/893/11 538/886/92 539/885/11 +f 544/875/89 559/894/13 543/879/13 +f 558/895/90 541/889/56 542/880/90 +f 540/883/91 555/896/11 539/885/11 +f 554/897/92 537/877/48 538/886/92 +f 562/898/93 547/899/94 546/884/93 +f 567/900/95 552/887/96 551/901/95 +f 565/902/97 550/878/98 549/888/97 +f 547/899/94 564/903/99 548/881/99 +f 545/876/100 562/904/93 546/884/93 +f 568/905/96 545/876/100 552/887/96 +f 550/878/98 567/906/95 551/901/95 +f 564/907/99 549/908/97 548/881/99 +f 563/909/17 572/910/64 564/903/64 +f 569/911/16 562/904/66 561/912/16 +f 576/913/60 561/914/16 568/905/60 +f 566/915/59 575/916/18 567/906/18 +f 564/907/64 573/917/15 565/918/15 +f 570/919/66 563/920/17 562/898/66 +f 575/921/18 568/922/60 567/900/18 +f 565/902/15 574/923/59 566/924/59 +f 78/349/21 77/376/21 75/350/22 +f 89/119/23 101/83/23 100/85/24 +f 71/352/25 72/925/25 70/353/26 +f 82/104/27 94/80/27 93/82/11 +f 35/355/28 37/361/29 38/356/29 +f 34/358/30 40/926/31 39/359/31 +f 39/359/31 40/926/31 38/356/29 +f 66/362/32 72/925/25 71/352/25 +f 92/100/33 104/77/33 103/79/34 +f 67/364/35 69/354/26 70/353/26 +f 85/110/36 97/74/36 96/76/14 +f 62/366/37 61/372/37 59/367/38 +f 63/369/39 64/927/39 58/370/40 +f 62/366/37 64/927/39 63/369/39 +f 79/373/41 80/928/41 74/374/42 +f 78/349/21 80/928/41 79/373/41 +f 86/112/43 98/86/43 97/74/36 +f 81/102/11 93/82/11 104/77/33 +f 83/106/44 95/90/44 94/80/27 +f 90/121/13 102/97/13 101/83/23 +f 87/114/12 99/94/12 98/86/43 +f 84/108/14 96/76/14 95/90/44 +f 91/123/34 103/79/34 102/97/13 +f 88/117/24 100/85/24 99/71/12 +f 109/205/34 121/929/34 120/377/13 +f 116/206/43 128/930/43 127/378/36 +f 106/207/24 118/931/24 117/379/12 +f 113/208/44 125/932/44 124/380/27 +f 110/209/33 122/933/33 121/381/34 +f 105/88/12 117/934/12 128/382/43 +f 107/210/23 119/935/23 118/383/24 +f 114/92/14 126/936/14 125/384/44 +f 111/211/11 123/937/11 122/385/33 +f 108/212/13 120/938/13 119/386/23 +f 115/98/36 127/939/36 126/387/14 +f 112/72/27 124/940/27 123/388/11 +f 154/389/45 138/416/45 137/390/46 +f 153/391/46 137/413/46 144/392/47 +f 136/394/16 135/941/48 143/395/48 +f 135/397/48 134/942/19 142/398/19 +f 142/400/49 141/419/50 157/401/50 +f 141/403/50 140/421/51 156/404/51 +f 139/405/52 131/943/52 130/406/20 +f 132/408/15 131/944/52 139/409/52 +f 156/411/51 140/410/51 139/409/53 +f 155/412/53 139/405/53 138/407/45 +f 137/413/54 129/945/54 136/414/16 +f 130/415/20 129/946/54 137/390/54 +f 160/393/47 144/396/47 143/395/55 +f 134/418/19 133/947/56 141/419/56 +f 141/403/56 133/948/56 132/420/15 +f 162/422/12 146/949/12 147/423/57 +f 150/425/13 151/950/58 167/426/58 +f 147/428/57 148/951/59 164/429/59 +f 151/430/58 152/952/60 168/431/60 +f 159/417/55 143/399/55 142/398/49 +f 164/432/59 148/953/59 149/433/61 +f 145/435/62 146/954/12 162/422/12 +f 149/437/61 150/955/13 166/427/13 +f 166/427/19 158/402/19 157/401/56 +f 168/431/60 152/956/60 145/438/62 +f 155/412/52 154/389/20 162/422/20 +f 167/426/48 159/417/48 158/402/19 +f 164/429/15 156/411/15 155/412/52 +f 160/393/16 159/417/48 167/426/48 +f 165/434/56 157/401/56 156/404/15 +f 154/389/20 153/391/54 161/436/54 +f 153/391/54 160/393/16 168/431/16 +f 187/439/14 186/957/63 170/440/63 +f 189/442/64 188/958/65 172/443/65 +f 185/445/66 192/959/67 176/446/67 +f 169/447/16 177/474/16 178/448/54 +f 186/449/63 185/960/66 169/447/66 +f 188/450/65 187/961/14 171/441/14 +f 178/448/54 179/460/20 171/441/20 +f 175/451/19 183/463/19 184/452/48 +f 174/453/68 190/962/68 189/454/64 +f 192/456/67 191/963/11 175/451/11 +f 182/457/56 183/463/19 175/451/19 +f 172/443/52 180/461/52 181/458/15 +f 194/459/69 195/484/70 179/460/70 +f 171/441/20 179/460/20 180/461/52 +f 173/455/15 181/481/15 182/457/56 +f 184/452/48 177/474/16 169/447/16 +f 182/457/71 198/479/71 199/462/72 +f 175/451/11 191/964/11 190/464/68 +f 199/465/19 207/965/19 208/466/48 +f 195/468/20 203/966/20 204/469/52 +f 208/471/48 201/967/16 193/472/16 +f 177/474/73 193/488/73 194/475/69 +f 196/476/52 204/968/52 205/477/15 +f 198/479/56 206/969/56 207/480/19 +f 181/481/74 197/485/74 198/482/71 +f 200/473/75 193/472/73 177/474/73 +f 202/483/54 203/970/20 195/484/20 +f 196/476/76 197/478/74 181/458/74 +f 197/485/15 205/971/15 206/486/56 +f 201/487/16 202/972/54 194/475/54 +f 179/460/70 195/468/70 196/470/76 +f 199/465/72 200/467/75 184/452/75 +f 218/489/77 217/516/78 233/490/78 +f 217/492/78 224/514/79 240/493/79 +f 216/494/16 215/973/60 223/495/60 +f 223/497/60 215/974/60 214/498/18 +f 238/500/80 222/518/80 221/501/81 +f 221/503/81 220/521/82 236/504/82 +f 219/505/64 211/975/64 210/506/17 +f 220/508/15 212/976/15 211/509/64 +f 236/511/82 220/508/82 219/510/83 +f 219/505/83 218/507/77 234/491/77 +f 209/513/66 216/977/16 224/514/16 +f 210/515/17 209/978/66 217/516/66 +f 240/493/79 224/496/79 223/495/84 +f 222/518/18 214/979/18 213/519/59 +f 221/503/59 213/980/59 212/520/15 +f 242/522/14 226/981/14 227/523/85 +f 230/525/12 231/982/86 247/526/86 +f 243/524/85 227/983/85 228/528/52 +f 247/526/86 231/984/86 232/530/54 +f 223/497/84 222/499/80 238/500/80 +f 244/532/52 228/985/52 229/533/87 +f 225/535/88 226/986/14 242/522/14 +f 229/537/87 230/987/12 246/527/12 +f 246/527/18 238/500/18 237/502/59 +f 232/538/54 225/988/88 241/536/88 +f 235/512/64 234/491/17 242/522/17 +f 239/517/60 238/500/18 246/527/18 +f 244/529/15 236/511/15 235/512/64 +f 248/531/16 240/493/16 239/517/60 +f 237/502/59 236/504/15 244/532/15 +f 234/491/17 233/490/66 241/536/66 +f 233/490/66 240/493/16 248/531/16 +f 264/539/60 257/567/16 249/540/16 +f 254/542/59 262/552/59 263/543/18 +f 260/545/64 261/572/15 253/546/15 +f 258/548/66 259/562/17 251/549/17 +f 255/544/18 263/543/18 264/539/60 +f 253/551/15 261/564/15 262/552/59 +f 251/549/17 259/562/17 260/545/64 +f 249/540/16 257/567/16 258/548/66 +f 249/540/48 265/989/48 272/553/89 +f 255/544/13 271/990/13 270/554/90 +f 253/546/56 269/991/56 268/555/91 +f 267/556/11 266/992/92 250/550/92 +f 272/557/89 271/993/13 255/544/13 +f 254/542/90 270/994/90 269/558/56 +f 252/547/91 268/995/91 267/559/11 +f 266/560/92 265/996/48 249/540/48 +f 274/561/93 275/584/94 259/562/94 +f 279/563/95 280/586/96 264/539/96 +f 261/564/97 277/588/97 278/565/98 +f 259/562/94 275/573/94 276/566/99 +f 257/567/100 273/576/100 274/568/93 +f 264/539/96 280/578/96 273/569/100 +f 262/552/98 278/580/98 279/570/95 +f 276/571/99 277/582/97 261/572/97 +f 275/573/17 283/997/17 284/574/64 +f 281/575/16 282/998/66 274/568/66 +f 288/577/60 281/999/16 273/569/16 +f 286/579/59 287/1000/18 279/570/18 +f 284/581/64 285/1001/15 277/582/15 +f 282/583/66 283/1002/17 275/584/17 +f 287/585/18 288/1003/60 280/586/60 +f 285/587/15 286/1004/59 278/565/59 +f 292/589/59 300/600/59 299/590/18 +f 296/592/66 304/605/66 303/593/17 +f 290/595/60 291/591/18 299/590/18 +f 289/597/16 290/595/60 298/596/60 +f 293/599/15 301/602/15 300/600/59 +f 293/599/15 294/603/64 302/601/64 +f 294/603/64 295/594/17 303/593/17 +f 289/604/16 297/1005/16 304/605/66 +f 305/606/16 313/1006/16 320/607/54 +f 310/609/52 318/620/52 317/610/15 +f 306/612/48 307/622/19 315/613/19 +f 309/611/15 317/610/15 316/615/56 +f 306/612/48 314/614/48 313/617/16 +f 311/619/20 319/621/20 318/620/52 +f 311/619/20 312/608/54 320/607/54 +f 308/616/56 316/615/56 315/613/19 +f 321/623/16 329/1007/16 336/624/101 +f 327/626/13 335/635/13 334/627/102 +f 325/629/15 333/636/15 332/630/103 +f 323/632/14 331/637/14 330/633/104 +f 328/625/101 336/624/101 335/635/13 +f 326/628/102 334/627/102 333/636/15 +f 324/631/103 332/630/103 331/637/14 +f 322/634/104 330/633/104 329/638/16 +f 347/640/56 339/646/56 340/641/15 +f 348/642/15 340/641/15 341/643/52 +f 346/645/19 338/648/19 339/646/56 +f 345/647/48 337/656/48 338/648/19 +f 350/649/20 342/654/20 343/650/54 +f 352/652/16 351/651/54 343/650/54 +f 350/649/20 349/644/52 341/643/52 +f 345/647/48 352/1008/16 344/655/16 +f 368/657/16 360/1009/16 353/658/60 +f 366/660/17 365/669/64 357/661/64 +f 368/663/16 367/672/66 359/664/66 +f 362/666/18 361/659/60 353/658/60 +f 364/668/15 356/671/15 357/661/64 +f 364/668/15 363/673/59 355/670/59 +f 367/672/66 366/660/17 358/662/17 +f 362/666/18 354/667/18 355/670/59 +f 369/674/16 377/1010/16 384/675/105 +f 373/677/15 374/688/106 382/678/106 +f 371/680/12 379/690/12 378/681/107 +f 373/677/15 381/679/15 380/683/108 +f 369/685/16 370/682/107 378/681/107 +f 375/687/11 383/689/11 382/678/106 +f 376/676/105 384/675/105 383/689/11 +f 372/684/108 380/683/108 379/690/12 +f 400/691/16 392/1011/16 385/692/107 +f 397/694/106 389/703/106 390/695/11 +f 399/697/105 391/706/105 392/698/16 +f 393/693/107 385/692/107 386/700/12 +f 396/702/15 388/705/15 389/703/106 +f 395/704/108 387/707/108 388/705/15 +f 398/696/11 390/695/11 391/706/105 +f 394/701/12 386/700/12 387/707/108 +f 416/708/16 408/1012/16 401/709/104 +f 413/711/102 405/720/102 406/712/13 +f 415/714/101 407/723/101 408/715/16 +f 409/710/104 401/709/104 402/717/14 +f 412/719/15 404/722/15 405/720/102 +f 411/721/103 403/724/103 404/722/15 +f 414/713/13 406/712/13 407/723/101 +f 410/718/14 402/717/14 403/724/103 +f 426/725/45 425/752/46 441/726/46 +f 425/728/46 432/750/47 448/729/47 +f 424/730/16 423/1013/48 431/731/48 +f 423/733/48 422/1014/19 430/734/19 +f 430/736/49 429/755/50 445/737/50 +f 429/739/50 428/757/51 444/740/51 +f 427/741/52 419/1015/52 418/742/20 +f 420/744/15 419/1016/52 427/745/52 +f 444/747/51 428/746/51 427/745/53 +f 443/748/53 427/741/53 426/743/45 +f 425/728/54 417/1017/54 424/749/16 +f 418/751/20 417/1018/54 425/752/54 +f 448/729/47 432/732/47 431/731/55 +f 430/736/19 422/1019/19 421/754/56 +f 421/756/56 420/1020/15 428/757/15 +f 450/758/12 434/1021/12 435/759/57 +f 438/761/13 439/1022/58 455/762/58 +f 435/764/57 436/1023/59 452/765/59 +f 455/762/58 439/1024/58 440/766/60 +f 447/753/55 431/735/55 430/734/49 +f 452/768/59 436/1025/59 437/769/61 +f 433/771/62 434/1026/12 450/758/12 +f 453/770/61 437/1027/61 438/773/13 +f 454/763/19 446/738/19 445/737/56 +f 456/767/60 440/1028/60 433/774/62 +f 443/748/52 442/727/20 450/758/20 +f 455/762/48 447/753/48 446/738/19 +f 452/765/15 444/747/15 443/748/52 +f 448/729/16 447/753/48 455/762/48 +f 445/737/56 444/740/15 452/768/15 +f 450/758/20 442/727/20 441/726/54 +f 441/726/54 448/729/16 456/767/16 +f 459/775/14 475/1029/14 474/776/63 +f 477/778/64 476/1030/65 460/779/65 +f 457/781/66 473/1031/66 480/782/67 +f 457/781/16 465/810/16 466/784/54 +f 474/785/63 473/1032/66 457/781/66 +f 476/786/65 475/1033/14 459/775/14 +f 466/784/54 467/796/20 459/775/20 +f 471/787/19 472/797/48 464/783/48 +f 462/789/68 478/1034/68 477/790/64 +f 480/792/67 479/1035/11 463/788/11 +f 470/793/56 471/787/19 463/788/19 +f 468/794/52 469/820/15 461/780/15 +f 482/795/69 483/819/70 467/796/70 +f 459/775/20 467/796/20 468/794/52 +f 461/791/15 469/817/15 470/793/56 +f 472/797/48 465/810/16 457/781/16 +f 470/793/71 486/814/71 487/798/72 +f 463/788/11 479/1036/11 478/799/68 +f 495/800/19 496/1037/48 488/801/48 +f 483/803/20 491/1038/20 492/804/52 +f 496/806/48 489/1039/16 481/807/16 +f 481/809/73 482/824/69 466/784/69 +f 484/811/52 492/1040/52 493/812/15 +f 486/814/56 494/1041/56 495/815/19 +f 485/816/74 486/822/71 470/793/71 +f 472/797/75 488/808/75 481/807/73 +f 490/818/54 491/1042/20 483/819/20 +f 484/811/76 485/813/74 469/820/74 +f 493/821/15 494/1043/56 486/822/56 +f 489/823/16 490/1044/54 482/824/54 +f 467/796/70 483/803/70 484/805/76 +f 487/802/72 488/801/75 472/797/75 +f 522/825/77 506/852/77 505/826/78 +f 505/828/78 512/850/79 528/829/79 +f 504/830/16 503/1045/60 511/831/60 +f 503/833/60 502/1046/18 510/834/18 +f 526/836/80 510/854/80 509/837/81 +f 509/839/81 508/857/82 524/840/82 +f 507/841/64 499/1047/64 498/842/17 +f 508/844/15 500/1048/15 499/845/64 +f 524/847/82 508/844/82 507/846/83 +f 507/841/83 506/843/77 522/825/77 +f 497/849/66 504/1049/16 512/850/16 +f 498/851/17 497/1050/66 505/826/66 +f 528/829/79 512/832/79 511/831/84 +f 510/854/18 502/1051/18 501/855/59 +f 501/856/59 500/1052/15 508/857/15 +f 530/858/14 514/1053/14 515/859/85 +f 518/861/12 519/1054/86 535/862/86 +f 531/860/85 515/1055/85 516/864/52 +f 535/862/86 519/1056/86 520/866/54 +f 511/835/84 510/834/80 526/836/80 +f 532/868/52 516/1057/52 517/869/87 +f 513/871/88 514/1058/14 530/858/14 +f 517/873/87 518/1059/12 534/863/12 +f 534/863/18 526/836/18 525/838/59 +f 536/867/54 520/1060/54 513/874/88 +f 523/848/64 522/825/17 530/858/17 +f 527/853/60 526/836/18 534/863/18 +f 524/847/15 523/848/64 531/860/64 +f 536/867/16 528/829/16 527/853/60 +f 525/838/59 524/840/15 532/868/15 +f 522/825/17 521/827/66 529/872/66 +f 521/827/66 528/829/16 536/867/16 +f 544/875/60 552/887/60 545/876/16 +f 550/878/59 551/901/18 543/879/18 +f 548/881/64 549/908/15 541/882/15 +f 546/884/66 547/899/17 539/885/17 +f 543/879/18 551/901/18 552/887/60 +f 549/888/15 550/878/59 542/880/59 +f 539/885/17 547/899/17 548/881/64 +f 537/877/16 545/876/16 546/884/66 +f 537/877/48 553/1061/48 560/890/89 +f 543/879/13 559/1062/13 558/891/90 +f 557/892/56 556/1063/91 540/883/91 +f 555/893/11 554/1064/92 538/886/92 +f 544/875/89 560/1065/89 559/894/13 +f 558/895/90 557/1066/56 541/889/56 +f 540/883/91 556/1067/91 555/896/11 +f 554/897/92 553/1068/48 537/877/48 +f 562/898/93 563/920/94 547/899/94 +f 567/900/95 568/922/96 552/887/96 +f 565/902/97 566/924/98 550/878/98 +f 547/899/94 563/909/94 564/903/99 +f 545/876/100 561/912/100 562/904/93 +f 568/905/96 561/914/100 545/876/100 +f 550/878/98 566/915/98 567/906/95 +f 564/907/99 565/918/97 549/908/97 +f 563/909/17 571/1069/17 572/910/64 +f 569/911/16 570/1070/66 562/904/66 +f 576/913/60 569/1071/16 561/914/16 +f 566/915/59 574/1072/59 575/916/18 +f 564/907/64 572/1073/64 573/917/15 +f 570/919/66 571/1074/17 563/920/17 +f 575/921/18 576/1075/60 568/922/60 +f 565/902/15 573/1076/15 574/923/59 +o Cog +v 0.000000 -0.625000 1.125000 +v -0.382684 -0.701121 1.125000 +v -0.707107 -0.917893 1.125000 +v -0.923880 -1.242317 1.125000 +v -1.000000 -1.625000 1.125000 +v -0.923880 -2.007684 1.125000 +v -0.707107 -2.332107 1.125000 +v -0.382684 -2.548880 1.125000 +v 0.000000 -2.625000 1.125000 +v 0.382683 -2.548880 1.125000 +v 0.707107 -2.332107 1.125000 +v 0.923880 -2.007684 1.125000 +v 1.000000 -1.625000 1.125000 +v 0.923880 -1.242317 1.125000 +v 0.707107 -0.917893 1.125000 +v 0.382683 -0.701120 1.125000 +v 0.382683 -0.701120 1.875000 +v 0.707107 -0.917893 1.875000 +v 0.923880 -1.242317 1.875000 +v 1.000000 -1.625000 1.875000 +v 0.923880 -2.007684 1.875000 +v 0.707107 -2.332107 1.875000 +v 0.382683 -2.548880 1.875000 +v 0.000000 -2.625000 1.875000 +v -0.382684 -2.548880 1.875000 +v -0.707107 -2.332107 1.875000 +v -0.923880 -2.007684 1.875000 +v -1.000000 -1.625000 1.875000 +v -0.923880 -1.242317 1.875000 +v -0.707107 -0.917893 1.875000 +v 0.000000 -0.625000 1.875000 +v -0.382684 -0.701121 1.875000 +v -0.239177 -0.422575 1.125000 +v -0.681119 -0.605634 1.125000 +v -1.019367 -0.943882 1.125000 +v -1.202425 -1.385823 1.125000 +v -1.202425 -1.864177 1.125000 +v -1.019367 -2.306119 1.125000 +v -0.681119 -2.644367 1.125000 +v -0.239177 -2.827425 1.125000 +v 0.239177 -2.827425 1.125000 +v 0.681118 -2.644367 1.125000 +v 1.019366 -2.306119 1.125000 +v 1.202425 -1.864177 1.125000 +v 1.202425 -1.385823 1.125000 +v 1.019366 -0.943881 1.125000 +v 0.681118 -0.605634 1.125000 +v 0.239177 -0.422575 1.125000 +v 0.239177 -0.422575 1.875000 +v -0.239177 -0.422575 1.875000 +v -0.681119 -0.605634 1.875000 +v -1.019367 -0.943882 1.875000 +v -1.202425 -1.385823 1.875000 +v -1.202425 -1.864177 1.875000 +v -1.019367 -2.306119 1.875000 +v -0.681119 -2.644367 1.875000 +v -0.239177 -2.827425 1.875000 +v 0.239177 -2.827425 1.875000 +v 0.681118 -2.644367 1.875000 +v 1.019366 -2.306119 1.875000 +v 1.202425 -1.864177 1.875000 +v 1.202425 -1.385823 1.875000 +v 1.019366 -0.943881 1.875000 +v 0.681118 -0.605634 1.875000 +vt 0.460000 0.471014 +vt 0.474286 0.471014 +vt 0.460000 0.507246 +vt 0.460000 0.471014 +vt 0.474286 0.471014 +vt 0.460000 0.507246 +vt 0.460000 0.471014 +vt 0.474286 0.471014 +vt 0.460000 0.507246 +vt 0.460000 0.471014 +vt 0.474286 0.471014 +vt 0.460000 0.507246 +vt 0.460000 0.471014 +vt 0.474286 0.471014 +vt 0.460000 0.507246 +vt 0.460000 0.471014 +vt 0.474286 0.471014 +vt 0.460000 0.507246 +vt 0.460000 0.471014 +vt 0.474286 0.471014 +vt 0.460000 0.507246 +vt 0.460000 0.471014 +vt 0.474286 0.471014 +vt 0.460000 0.507246 +vt 0.460000 0.471014 +vt 0.474286 0.471014 +vt 0.460000 0.507246 +vt 0.460000 0.471014 +vt 0.474286 0.471014 +vt 0.460000 0.507246 +vt 0.460000 0.471014 +vt 0.474286 0.471014 +vt 0.460000 0.507246 +vt 0.460000 0.471014 +vt 0.474286 0.471014 +vt 0.460000 0.507246 +vt 0.460000 0.471014 +vt 0.474286 0.471014 +vt 0.460000 0.507246 +vt 0.474286 0.471014 +vt 0.460000 0.507246 +vt 0.460000 0.471014 +vt 0.474286 0.471014 +vt 0.460000 0.507246 +vt 0.460000 0.471014 +vt 0.474286 0.471014 +vt 0.460000 0.507246 +vt 0.460000 0.471014 +vt 0.425714 0.471014 +vt 0.425714 0.507246 +vt 0.411429 0.471014 +vt 0.425714 0.471014 +vt 0.425714 0.507246 +vt 0.411429 0.471014 +vt 0.425714 0.471014 +vt 0.425714 0.507246 +vt 0.411429 0.471014 +vt 0.425714 0.471014 +vt 0.425714 0.507246 +vt 0.411429 0.471014 +vt 0.425714 0.471014 +vt 0.425714 0.507246 +vt 0.411429 0.471014 +vt 0.425714 0.471014 +vt 0.425714 0.507246 +vt 0.411429 0.471014 +vt 0.425714 0.471014 +vt 0.425714 0.507246 +vt 0.411429 0.471014 +vt 0.425714 0.471014 +vt 0.425714 0.507246 +vt 0.411429 0.471014 +vt 0.425714 0.471014 +vt 0.425714 0.507246 +vt 0.411429 0.471014 +vt 0.425714 0.471014 +vt 0.425714 0.507246 +vt 0.411429 0.471014 +vt 0.425714 0.471014 +vt 0.425714 0.507246 +vt 0.411429 0.471014 +vt 0.425714 0.471014 +vt 0.425714 0.507246 +vt 0.411429 0.471014 +vt 0.425714 0.471014 +vt 0.425714 0.507246 +vt 0.411429 0.471014 +vt 0.411429 0.471014 +vt 0.425714 0.471014 +vt 0.425714 0.507246 +vt 0.411429 0.471014 +vt 0.425714 0.471014 +vt 0.425714 0.507246 +vt 0.411429 0.471014 +vt 0.425714 0.471014 +vt 0.425714 0.507246 +vt 0.425714 0.434783 +vt 0.460000 0.434783 +vt 0.460000 0.434783 +vt 0.425714 0.434783 +vt 0.460000 0.434783 +vt 0.460000 0.434783 +vt 0.460000 0.434783 +vt 0.425714 0.434783 +vt 0.460000 0.434783 +vt 0.460000 0.434783 +vt 0.425714 0.434783 +vt 0.460000 0.434783 +vt 0.425714 0.434783 +vt 0.460000 0.434783 +vt 0.460000 0.434783 +vt 0.425714 0.434783 +vt 0.460000 0.434783 +vt 0.425714 0.434783 +vt 0.460000 0.434783 +vt 0.460000 0.434783 +vt 0.460000 0.434783 +vt 0.460000 0.434783 +vt 0.013596 0.733632 +vt 0.013597 0.570716 +vt 0.077832 0.570716 +vt 0.460000 0.434783 +vt 0.063096 0.990488 +vt 0.003750 0.928143 +vt 0.028332 0.777628 +vt 0.425714 0.434783 +vt 0.425714 0.434783 +vt 0.425714 0.434783 +vt 0.425714 0.434783 +vt 0.425714 0.434783 +vt 0.425714 0.434783 +vt 0.425714 0.434783 +vt 0.425714 0.434783 +vt 0.077832 0.733632 +vt 0.063096 0.758604 +vt 0.045714 0.767373 +vt 0.028332 0.758604 +vt 0.003750 0.696259 +vt 0.000293 0.652174 +vt 0.003750 0.608089 +vt 0.028332 0.545744 +vt 0.045714 0.536975 +vt 0.063096 0.545744 +vt 0.087678 0.608089 +vt 0.091136 0.652174 +vt 0.087678 0.696259 +vt 0.425714 0.434783 +vt 0.045714 0.999257 +vt 0.028332 0.990488 +vt 0.013596 0.965516 +vt 0.000293 0.884058 +vt 0.003750 0.839973 +vt 0.013597 0.802600 +vt 0.045714 0.768859 +vt 0.063096 0.777628 +vt 0.077832 0.802600 +vt 0.087678 0.839973 +vt 0.091136 0.884058 +vt 0.087678 0.928143 +vt 0.077832 0.965516 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0829 -0.9966 0.0000 +vn -0.7633 0.6460 0.0000 +vn 0.7633 0.6460 0.0000 +vn -0.4580 -0.8890 0.0000 +vn 0.4580 -0.8890 0.0000 +vn -0.9524 0.3047 0.0000 +vn 0.4580 0.8890 0.0000 +vn -0.0829 -0.9966 0.0000 +vn 0.8890 0.4580 0.0000 +vn 0.7633 -0.6460 0.0000 +vn -0.9966 -0.0829 0.0000 +vn -0.6460 0.7633 0.0000 +vn 0.0829 0.9966 0.0000 +vn 0.3047 -0.9524 0.0000 +vn 0.6460 0.7633 0.0000 +vn 0.9524 -0.3047 0.0000 +vn -0.8890 -0.4580 0.0000 +vn -0.8890 0.4580 0.0000 +vn -0.3047 0.9524 0.0000 +vn 0.6460 -0.7633 0.0000 +vn 0.3047 0.9524 0.0000 +vn 0.9966 0.0829 0.0000 +vn -0.6460 -0.7633 0.0000 +vn -0.9966 0.0829 0.0000 +vn 0.8890 -0.4580 0.0000 +vn -0.0829 0.9966 0.0000 +vn -0.3047 -0.9524 0.0000 +vn -0.9524 -0.3047 0.0000 +vn 0.9966 -0.0829 0.0000 +vn -0.4580 0.8890 0.0000 +vn 0.9524 0.3047 0.0000 +vn -0.7633 -0.6460 0.0000 +s off +f 611/1077/109 579/1078/109 580/1079/109 +f 612/1080/109 580/1081/109 581/1082/109 +f 613/1083/109 581/1084/109 582/1085/109 +f 614/1086/109 582/1087/109 583/1088/109 +f 615/1089/109 583/1090/109 584/1091/109 +f 616/1092/109 584/1093/109 585/1094/109 +f 617/1095/109 585/1096/109 586/1097/109 +f 618/1098/109 586/1099/109 587/1100/109 +f 619/1101/109 587/1102/109 588/1103/109 +f 620/1104/109 588/1105/109 589/1106/109 +f 621/1107/109 589/1108/109 590/1109/109 +f 622/1110/109 590/1111/109 591/1112/109 +f 623/1113/109 591/1114/109 592/1115/109 +f 592/1116/109 577/1117/109 624/1118/109 +f 577/1119/109 578/1120/109 609/1121/109 +f 578/1122/109 579/1123/109 610/1124/109 +f 628/1125/110 605/1126/110 606/1127/110 +f 629/1128/110 604/1129/110 605/1130/110 +f 630/1131/110 603/1132/110 604/1133/110 +f 631/1134/110 602/1135/110 603/1136/110 +f 632/1137/110 601/1138/110 602/1139/110 +f 633/1140/110 600/1141/110 601/1142/110 +f 634/1143/110 599/1144/110 600/1145/110 +f 635/1146/110 598/1147/110 599/1148/110 +f 636/1149/110 597/1150/110 598/1151/110 +f 637/1152/110 596/1153/110 597/1154/110 +f 638/1155/110 595/1156/110 596/1157/110 +f 639/1158/110 594/1159/110 595/1160/110 +f 640/1161/110 593/1162/110 594/1163/110 +f 593/1164/110 625/1165/110 607/1166/110 +f 607/1167/110 626/1168/110 608/1169/110 +f 608/1170/110 627/1171/110 606/1172/110 +f 619/1101/111 598/1173/111 587/1174/111 +f 630/1131/112 581/1175/112 613/1083/112 +f 589/1106/113 637/1152/113 620/1104/113 +f 603/1132/114 613/1083/114 582/1085/114 +f 620/1104/115 597/1176/115 588/1177/115 +f 631/1134/116 582/1178/116 614/1086/116 +f 590/1109/117 638/1155/117 621/1107/117 +f 602/1135/118 614/1086/118 583/1088/118 +f 625/1165/119 592/1179/119 624/1118/119 +f 621/1107/120 596/1180/120 589/1181/120 +f 632/1137/121 583/1182/121 615/1089/121 +f 607/1166/122 624/1118/122 577/1117/122 +f 591/1112/123 639/1158/123 622/1110/123 +f 601/1138/124 615/1089/124 584/1091/124 +f 609/1121/125 607/1183/125 577/1184/125 +f 622/1110/126 595/1185/126 590/1186/126 +f 633/1140/127 584/1187/127 616/1092/127 +f 578/1120/128 626/1168/128 609/1121/128 +f 592/1115/129 640/1161/129 623/1113/129 +f 600/1141/130 616/1092/130 585/1094/130 +f 610/1124/131 608/1188/131 578/1189/131 +f 623/1113/132 594/1190/132 591/1191/132 +f 634/1143/133 585/1192/133 617/1095/133 +f 579/1123/134 627/1171/134 610/1124/134 +f 599/1144/135 617/1095/135 586/1097/135 +f 628/1125/136 579/1193/136 611/1077/136 +f 635/1146/137 586/1194/137 618/1098/137 +f 605/1126/138 611/1077/138 580/1079/138 +f 598/1147/139 618/1098/139 587/1100/139 +f 591/1195/109 587/1196/109 583/1197/109 +f 629/1128/140 580/1198/140 612/1080/140 +f 588/1103/141 636/1149/141 619/1101/141 +f 593/1199/110 605/1200/110 601/1201/110 +f 604/1129/142 612/1080/142 581/1082/142 +f 619/1101/111 636/1149/111 598/1173/111 +f 630/1131/112 604/1202/112 581/1175/112 +f 589/1106/113 596/1153/113 637/1152/113 +f 603/1132/114 630/1131/114 613/1083/114 +f 620/1104/115 637/1152/115 597/1176/115 +f 631/1134/116 603/1203/116 582/1178/116 +f 590/1109/117 595/1156/117 638/1155/117 +f 602/1135/118 631/1134/118 614/1086/118 +f 625/1165/119 593/1204/119 592/1179/119 +f 621/1107/120 638/1155/120 596/1180/120 +f 632/1137/121 602/1205/121 583/1182/121 +f 607/1166/122 625/1165/122 624/1118/122 +f 591/1112/123 594/1159/123 639/1158/123 +f 601/1138/124 632/1137/124 615/1089/124 +f 609/1121/125 626/1168/125 607/1183/125 +f 622/1110/126 639/1158/126 595/1185/126 +f 633/1140/127 601/1206/127 584/1187/127 +f 578/1120/128 608/1169/128 626/1168/128 +f 592/1115/129 593/1162/129 640/1161/129 +f 600/1141/130 633/1140/130 616/1092/130 +f 610/1124/131 627/1171/131 608/1188/131 +f 623/1113/132 640/1161/132 594/1190/132 +f 634/1143/133 600/1207/133 585/1192/133 +f 579/1123/134 606/1172/134 627/1171/134 +f 599/1144/135 634/1143/135 617/1095/135 +f 628/1125/136 606/1208/136 579/1193/136 +f 635/1146/137 599/1209/137 586/1194/137 +f 605/1126/138 628/1125/138 611/1077/138 +f 598/1147/139 635/1146/139 618/1098/139 +f 579/1210/109 578/1211/109 591/1195/109 +f 578/1211/109 577/1212/109 591/1195/109 +f 577/1212/109 592/1213/109 591/1195/109 +f 591/1195/109 590/1214/109 589/1215/109 +f 589/1215/109 588/1216/109 587/1196/109 +f 587/1196/109 586/1217/109 583/1197/109 +f 586/1217/109 585/1218/109 583/1197/109 +f 585/1218/109 584/1219/109 583/1197/109 +f 583/1197/109 582/1220/109 581/1221/109 +f 581/1221/109 580/1222/109 579/1210/109 +f 591/1195/109 589/1215/109 587/1196/109 +f 583/1197/109 581/1221/109 579/1210/109 +f 579/1210/109 591/1195/109 583/1197/109 +f 629/1128/140 605/1223/140 580/1198/140 +f 588/1103/141 597/1150/141 636/1149/141 +f 593/1199/110 607/1224/110 608/1225/110 +f 608/1225/110 606/1226/110 593/1199/110 +f 606/1226/110 605/1200/110 593/1199/110 +f 605/1200/110 604/1227/110 603/1228/110 +f 603/1228/110 602/1229/110 605/1200/110 +f 602/1229/110 601/1201/110 605/1200/110 +f 601/1201/110 600/1230/110 599/1231/110 +f 599/1231/110 598/1232/110 597/1233/110 +f 597/1233/110 596/1234/110 595/1235/110 +f 595/1235/110 594/1236/110 597/1233/110 +f 594/1236/110 593/1199/110 597/1233/110 +f 601/1201/110 599/1231/110 593/1199/110 +f 599/1231/110 597/1233/110 593/1199/110 +f 604/1129/142 629/1128/142 612/1080/142 +o Gun +v 0.000000 0.625000 -2.000000 +v -0.312500 0.541266 -2.000000 +v -0.541266 0.312500 -2.000000 +v -0.625000 0.000000 -2.000000 +v -0.541266 -0.312500 -2.000000 +v -0.312500 -0.541266 -2.000000 +v 0.000000 -0.625000 -2.000000 +v 0.312500 -0.541266 -2.000000 +v 0.541265 -0.312500 -2.000000 +v 0.625000 -0.000000 -2.000000 +v 0.541266 0.312500 -2.000000 +v 0.312500 0.541266 -2.000000 +v 0.000000 0.625000 -5.625000 +v -0.312500 0.541266 -5.625000 +v -0.541266 0.312500 -5.625000 +v -0.625000 0.000000 -5.625000 +v -0.541266 -0.312500 -5.625000 +v -0.312500 -0.541266 -5.625000 +v 0.000000 -0.625000 -5.625000 +v 0.312500 -0.541266 -5.625000 +v 0.541265 -0.312500 -5.625000 +v 0.625000 -0.000000 -5.625000 +v 0.541266 0.312500 -5.625000 +v 0.312500 0.541266 -5.625000 +v -0.750000 -1.250000 3.000000 +v 0.750000 -1.250000 3.000000 +v -0.750000 -1.250000 -2.000000 +v 0.750000 -1.250000 -2.000000 +v -0.750000 0.375000 -2.000000 +v -0.750000 0.375000 3.000000 +v 0.750000 0.375000 3.000000 +v 0.750000 0.375000 -2.000000 +v -0.250000 0.750000 -2.000000 +v -0.250000 0.750000 3.000000 +v 0.250000 0.750000 3.000000 +v 0.250000 0.750000 -2.000000 +v 0.000000 0.750000 -5.625000 +v -0.375000 0.649519 -5.625000 +v -0.649519 0.375000 -5.625000 +v -0.750000 0.000000 -5.625000 +v -0.649519 -0.375000 -5.625000 +v -0.375000 -0.649519 -5.625000 +v 0.000000 -0.750000 -5.625000 +v 0.375000 -0.649519 -5.625000 +v 0.649519 -0.375000 -5.625000 +v 0.750000 -0.000000 -5.625000 +v 0.649519 0.375000 -5.625000 +v 0.375000 0.649519 -5.625000 +v 0.000000 0.750000 -6.000000 +v -0.375000 0.649519 -6.000000 +v -0.649519 0.375000 -6.000000 +v -0.750000 0.000000 -6.000000 +v -0.649519 -0.375000 -6.000000 +v -0.375000 -0.649519 -6.000000 +v 0.000000 -0.750000 -6.000000 +v 0.375000 -0.649519 -6.000000 +v 0.649519 -0.375000 -6.000000 +v 0.750000 -0.000000 -6.000000 +v 0.649519 0.375000 -6.000000 +v 0.375000 0.649519 -6.000000 +v -0.625000 0.000000 3.000000 +v -0.541266 0.312500 3.000000 +v -0.312500 0.541266 3.000000 +v 0.000000 0.625000 3.000000 +v -0.500000 -0.250000 -5.750000 +v -0.500000 -0.250000 -2.000000 +v 0.500000 -0.250000 -2.000000 +v 0.500000 -0.250000 -5.750000 +v -0.500000 -0.625000 -2.000000 +v -0.250000 -0.875000 -2.000000 +v 0.250000 -0.875000 -2.000000 +v 0.500000 -0.625000 -2.000000 +v -0.250000 -0.875000 -5.750000 +v -0.500000 -0.625000 -5.750000 +v 0.500000 -0.625000 -5.750000 +v 0.250000 -0.875000 -5.750000 +v -0.541266 -0.312500 3.000000 +v -0.312500 -0.541266 3.000000 +v 0.000000 -0.625000 3.000000 +v 0.312500 -0.541266 3.000000 +v 0.541265 -0.312500 3.000000 +v 0.625000 -0.000000 3.000000 +v 0.541266 0.312500 3.000000 +v 0.312500 0.541266 3.000000 +v -0.625000 0.000000 3.125000 +v -0.541266 0.312500 3.125000 +v -0.312500 0.541266 3.125000 +v 0.000000 0.625000 3.125000 +v -0.541266 -0.312500 3.125000 +v -0.312500 -0.541266 3.125000 +v 0.000000 -0.625000 3.125000 +v 0.312500 -0.541266 3.125000 +v 0.541265 -0.312500 3.125000 +v 0.625000 -0.000000 3.125000 +v 0.541266 0.312500 3.125000 +v 0.312500 0.541266 3.125000 +v 0.000000 1.000000 3.625000 +v -0.500000 0.866025 3.625000 +v -0.866025 0.500000 3.625000 +v -1.000000 0.000000 3.625000 +v -0.866025 -0.500000 3.625000 +v -0.500000 -0.866025 3.625000 +v 0.000000 -1.000000 3.625000 +v 0.500000 -0.866025 3.625000 +v 0.866025 -0.500000 3.625000 +v 1.000000 -0.000000 3.625000 +v 0.866026 0.500000 3.625000 +v 0.500000 0.866025 3.625000 +v 0.000000 1.000000 4.125000 +v -0.500000 0.866025 4.125000 +v -0.866025 0.500000 4.125000 +v -1.000000 0.000000 4.125000 +v -0.866025 -0.500000 4.125000 +v -0.500000 -0.866025 4.125000 +v 0.000000 -1.000000 4.125000 +v 0.500000 -0.866025 4.125000 +v 0.866025 -0.500000 4.125000 +v 1.000000 -0.000000 4.125000 +v 0.866026 0.500000 4.125000 +v 0.500000 0.866025 4.125000 +v 0.000000 0.750000 4.125000 +v -0.375000 0.649519 4.125000 +v -0.649519 0.375000 4.125000 +v -0.750000 0.000000 4.125000 +v -0.649519 -0.375000 4.125000 +v -0.375000 -0.649519 4.125000 +v 0.000000 -0.750000 4.125000 +v 0.375000 -0.649519 4.125000 +v 0.649519 -0.375000 4.125000 +v 0.750000 -0.000000 4.125000 +v 0.649519 0.375000 4.125000 +v 0.375000 0.649519 4.125000 +v 0.000000 0.500000 3.625000 +v -0.250000 0.433012 3.625000 +v -0.433013 0.250000 3.625000 +v -0.500000 -0.000000 3.625000 +v -0.433012 -0.250000 3.625000 +v -0.250000 -0.433013 3.625000 +v 0.000000 -0.500000 3.625000 +v 0.250000 -0.433013 3.625000 +v 0.433012 -0.250000 3.625000 +v 0.500000 -0.000000 3.625000 +v 0.433013 0.250000 3.625000 +v 0.250000 0.433012 3.625000 +v 0.000000 0.500000 -6.000000 +v -0.250000 0.433012 -6.000000 +v -0.433012 0.250000 -6.000000 +v -0.500000 0.000000 -6.000000 +v -0.433012 -0.250000 -6.000000 +v -0.250000 -0.433012 -6.000000 +v 0.000000 -0.500000 -6.000000 +v 0.250000 -0.433013 -6.000000 +v 0.433012 -0.250000 -6.000000 +v 0.500000 0.000000 -6.000000 +v 0.433013 0.250000 -6.000000 +v 0.250000 0.433012 -6.000000 +v 0.000000 0.500000 -6.250000 +v -0.250000 0.433012 -6.250000 +v -0.433012 0.250000 -6.250000 +v -0.500000 0.000000 -6.250000 +v -0.433012 -0.250000 -6.250000 +v -0.250000 -0.433012 -6.250000 +v 0.000000 -0.500000 -6.250000 +v 0.250000 -0.433013 -6.250000 +v 0.433012 -0.250000 -6.250000 +v 0.500000 0.000000 -6.250000 +v 0.433013 0.250000 -6.250000 +v 0.250000 0.433012 -6.250000 +v 0.000000 1.000000 -6.250000 +v -0.500000 0.866025 -6.250000 +v -0.866025 0.500000 -6.250000 +v -1.000000 -0.000000 -6.250000 +v -0.866025 -0.500000 -6.250000 +v -0.500000 -0.866025 -6.250000 +v 0.000000 -1.000000 -6.250000 +v 0.500000 -0.866026 -6.250000 +v 0.866025 -0.500000 -6.250000 +v 1.000000 -0.000001 -6.250000 +v 0.866026 0.499999 -6.250000 +v 0.500000 0.866025 -6.250000 +v 0.000000 1.000000 -6.750000 +v -0.500000 0.866025 -6.750000 +v -0.866025 0.500000 -6.750000 +v -1.000000 -0.000000 -6.750000 +v -0.866025 -0.500000 -6.750000 +v -0.500000 -0.866025 -6.750000 +v 0.000000 -1.000000 -6.750000 +v 0.500000 -0.866026 -6.750000 +v 0.866025 -0.500000 -6.750000 +v 1.000000 -0.000001 -6.750000 +v 0.866026 0.499999 -6.750000 +v 0.500000 0.866025 -6.750000 +v 0.000000 1.000000 -7.250000 +v -0.500000 0.866025 -7.250000 +v -0.866025 0.500000 -7.250000 +v -1.000000 -0.000000 -7.250000 +v -0.866025 -0.500000 -7.250000 +v -0.500000 -0.866025 -7.250000 +v 0.000000 -1.000000 -7.250000 +v 0.500000 -0.866026 -7.250000 +v 0.866025 -0.500000 -7.250000 +v 1.000000 -0.000001 -7.250000 +v 0.866026 0.499999 -7.250000 +v 0.500000 0.866025 -7.250000 +v 0.000000 1.000000 -7.750000 +v -0.500000 0.866025 -7.750000 +v -0.866025 0.500000 -7.750000 +v -1.000000 -0.000000 -7.750000 +v -0.866025 -0.500000 -7.750000 +v -0.500000 -0.866025 -7.750000 +v 0.000000 -1.000000 -7.750000 +v 0.500000 -0.866026 -7.750000 +v 0.866025 -0.500000 -7.750000 +v 1.000000 -0.000001 -7.750000 +v 0.866026 0.499999 -7.750000 +v 0.500000 0.866025 -7.750000 +v 0.000000 0.500000 -6.750000 +v -0.250000 0.433012 -6.750000 +v -0.433012 0.250000 -6.750000 +v -0.500000 0.000000 -6.750000 +v -0.433012 -0.250000 -6.750000 +v -0.250000 -0.433012 -6.750000 +v 0.000000 -0.500000 -6.750000 +v 0.250000 -0.433013 -6.750000 +v 0.433012 -0.250000 -6.750000 +v 0.500000 0.000000 -6.750000 +v 0.433013 0.250000 -6.750000 +v 0.250000 0.433012 -6.750000 +v 0.000000 0.500000 -7.250000 +v -0.250000 0.433012 -7.250000 +v -0.433012 0.250000 -7.250000 +v -0.500000 0.000000 -7.250000 +v -0.433012 -0.250000 -7.250000 +v -0.250000 -0.433012 -7.250000 +v 0.000000 -0.500000 -7.250000 +v 0.250000 -0.433013 -7.250000 +v 0.433012 -0.250000 -7.250000 +v 0.500000 0.000000 -7.250000 +v 0.433013 0.250000 -7.250000 +v 0.250000 0.433012 -7.250000 +v 0.000000 0.500000 -7.750000 +v -0.250000 0.433012 -7.750000 +v -0.433012 0.250000 -7.750000 +v -0.500000 0.000000 -7.750000 +v -0.433012 -0.250000 -7.750000 +v -0.250000 -0.433012 -7.750000 +v 0.000000 -0.500000 -7.750000 +v 0.250000 -0.433013 -7.750000 +v 0.433012 -0.250000 -7.750000 +v 0.500000 0.000000 -7.750000 +v 0.433013 0.250000 -7.750000 +v 0.250000 0.433012 -7.750000 +v 0.000000 0.500000 -8.000000 +v -0.250000 0.433012 -8.000000 +v -0.433012 0.250000 -8.000000 +v -0.500000 0.000000 -8.000000 +v -0.433012 -0.250000 -8.000000 +v -0.250000 -0.433012 -8.000000 +v 0.000000 -0.500000 -8.000000 +v 0.250000 -0.433013 -8.000000 +v 0.433012 -0.250000 -8.000000 +v 0.500000 0.000000 -8.000000 +v 0.433013 0.250000 -8.000000 +v 0.250000 0.433012 -8.000000 +v -0.750000 -0.125000 -6.750000 +v -0.750000 -0.125000 -7.250000 +v 0.750000 0.125000 -7.250000 +v 0.750000 0.125000 -6.750000 +v 0.838388 0.088388 -7.250000 +v 0.838388 0.088388 -6.750000 +v 0.875000 -0.000000 -7.250000 +v 0.875000 -0.000000 -6.750000 +v 0.838388 -0.088389 -7.250000 +v 0.838388 -0.088389 -6.750000 +v 0.750000 -0.125000 -7.250000 +v 0.750000 -0.125000 -6.750000 +v 0.661612 -0.088389 -7.250000 +v 0.661612 -0.088389 -6.750000 +v 0.625000 -0.000000 -7.250000 +v 0.625000 -0.000000 -6.750000 +v 0.661612 0.088388 -7.250000 +v 0.661612 0.088388 -6.750000 +v -0.838388 -0.088388 -7.250000 +v -0.838388 -0.088388 -6.750000 +v -0.875000 0.000000 -7.250000 +v -0.875000 0.000000 -6.750000 +v -0.838388 0.088388 -7.250000 +v -0.838388 0.088388 -6.750000 +v -0.750000 0.125000 -7.250000 +v -0.750000 0.125000 -6.750000 +v -0.661612 0.088388 -7.250000 +v -0.661612 0.088388 -6.750000 +v -0.625000 0.000000 -7.250000 +v -0.625000 0.000000 -6.750000 +v -0.661612 -0.088388 -7.250000 +v -0.661612 -0.088388 -6.750000 +v -0.125000 0.750000 -6.750000 +v -0.125000 0.750000 -7.250000 +v 0.125000 -0.750000 -7.250000 +v 0.125000 -0.750000 -6.750000 +v 0.088388 -0.838388 -7.250000 +v 0.088388 -0.838388 -6.750000 +v 0.000000 -0.875000 -7.250000 +v 0.000000 -0.875000 -6.750000 +v -0.088388 -0.838388 -7.250000 +v -0.088388 -0.838388 -6.750000 +v -0.125000 -0.750000 -7.250000 +v -0.125000 -0.750000 -6.750000 +v -0.088388 -0.661612 -7.250000 +v -0.088388 -0.661612 -6.750000 +v 0.000000 -0.625000 -7.250000 +v 0.000000 -0.625000 -6.750000 +v 0.088388 -0.661612 -7.250000 +v 0.088388 -0.661612 -6.750000 +v -0.088388 0.838388 -7.250000 +v -0.088388 0.838388 -6.750000 +v 0.000000 0.875000 -7.250000 +v 0.000000 0.875000 -6.750000 +v 0.088388 0.838388 -7.250000 +v 0.088388 0.838388 -6.750000 +v 0.125000 0.750000 -7.250000 +v 0.125000 0.750000 -6.750000 +v 0.088388 0.661611 -7.250000 +v 0.088388 0.661611 -6.750000 +v 0.000000 0.625000 -7.250000 +v 0.000000 0.625000 -6.750000 +v -0.088388 0.661611 -7.250000 +v -0.088388 0.661611 -6.750000 +v -0.618718 0.441942 -6.750000 +v -0.618718 0.441942 -7.250000 +v 0.618718 -0.441942 -7.250000 +v 0.618718 -0.441942 -6.750000 +v 0.655330 -0.530330 -7.250000 +v 0.655330 -0.530330 -6.750000 +v 0.618718 -0.618719 -7.250000 +v 0.618718 -0.618719 -6.750000 +v 0.530330 -0.655330 -7.250000 +v 0.530330 -0.655330 -6.750000 +v 0.441942 -0.618719 -7.250000 +v 0.441942 -0.618719 -6.750000 +v 0.405330 -0.530330 -7.250000 +v 0.405330 -0.530330 -6.750000 +v 0.441942 -0.441942 -7.250000 +v 0.441942 -0.441942 -6.750000 +v 0.530330 -0.405330 -7.250000 +v 0.530330 -0.405330 -6.750000 +v -0.655330 0.530330 -7.250000 +v -0.655330 0.530330 -6.750000 +v -0.618718 0.618718 -7.250000 +v -0.618718 0.618718 -6.750000 +v -0.530330 0.655330 -7.250000 +v -0.530330 0.655330 -6.750000 +v -0.441942 0.618718 -7.250000 +v -0.441941 0.618718 -6.750000 +v -0.405330 0.530330 -7.250000 +v -0.405330 0.530330 -6.750000 +v -0.441941 0.441942 -7.250000 +v -0.441941 0.441942 -6.750000 +v -0.530330 0.405330 -7.250000 +v -0.530330 0.405330 -6.750000 +v 0.441942 0.618718 -6.750000 +v 0.441942 0.618718 -7.250000 +v -0.441942 -0.618718 -7.250000 +v -0.441942 -0.618718 -6.750000 +v -0.530330 -0.655330 -7.250000 +v -0.530330 -0.655330 -6.750000 +v -0.618719 -0.618718 -7.250000 +v -0.618719 -0.618718 -6.750000 +v -0.655330 -0.530330 -7.250000 +v -0.655330 -0.530330 -6.750000 +v -0.618719 -0.441942 -7.250000 +v -0.618719 -0.441942 -6.750000 +v -0.530330 -0.405330 -7.250000 +v -0.530330 -0.405330 -6.750000 +v -0.441942 -0.441942 -7.250000 +v -0.441942 -0.441942 -6.750000 +v -0.405330 -0.530330 -7.250000 +v -0.405330 -0.530330 -6.750000 +v 0.530330 0.655330 -7.250000 +v 0.530330 0.655330 -6.750000 +v 0.618719 0.618718 -7.250000 +v 0.618719 0.618718 -6.750000 +v 0.655330 0.530330 -7.250000 +v 0.655330 0.530330 -6.750000 +v 0.618719 0.441941 -7.250000 +v 0.618719 0.441941 -6.750000 +v 0.530330 0.405330 -7.250000 +v 0.530330 0.405330 -6.750000 +v 0.441942 0.441941 -7.250000 +v 0.441942 0.441941 -6.750000 +v 0.405330 0.530330 -7.250000 +v 0.405330 0.530330 -6.750000 +v -0.500000 -1.250000 0.000000 +v 0.500000 -1.250000 0.000000 +v -0.500000 -1.250000 -2.000000 +v 0.500000 -1.250000 -2.000000 +v -0.500000 -2.000000 -2.000000 +v -0.500000 -2.000000 0.000000 +v 0.500000 -2.000000 0.000000 +v 0.500000 -2.000000 -2.000000 +v -0.560318 -0.124981 -2.187500 +v -0.564682 0.124981 -2.187500 +v -0.560318 -0.124981 -2.437500 +v -0.564682 0.124981 -2.437500 +v -0.814643 0.120618 -2.437500 +v -0.810280 -0.129344 -2.437500 +v -0.814643 0.120618 -2.187500 +v -0.810280 -0.129344 -2.187500 +v 0.187500 -3.250000 -0.375000 +v -0.187500 -3.250000 -0.375000 +v -0.187500 -3.250000 -2.000000 +v 0.187500 -3.250000 -2.000000 +v 0.187500 -3.000000 -2.000000 +v -0.187500 -3.000000 -2.000000 +v 0.187500 -3.000000 -0.375000 +v -0.187500 -3.000000 -0.375000 +v -0.187500 -2.000000 -1.500000 +v -0.062500 -2.000000 -1.375000 +v 0.062500 -2.000000 -1.375000 +v 0.187500 -2.000000 -1.500000 +v -0.062500 -2.000000 -2.000000 +v -0.187500 -2.000000 -1.875000 +v 0.187500 -2.000000 -1.875000 +v 0.062500 -2.000000 -2.000000 +v -0.187500 -3.000000 -1.875000 +v -0.062500 -3.000000 -2.000000 +v -0.062500 -3.000000 -1.375000 +v -0.187500 -3.000000 -1.500000 +v 0.187500 -3.000000 -1.500000 +v 0.062500 -3.000000 -1.375000 +v 0.062500 -3.000000 -2.000000 +v 0.187500 -3.000000 -1.875000 +v 0.187500 -2.000000 0.000000 +v -0.187500 -2.000000 0.000000 +v 0.187500 -2.000000 -0.250000 +v -0.187500 -2.000000 -0.250000 +v -0.187500 -2.875000 0.000000 +v 0.187500 -2.875000 0.000000 +v -0.187500 -2.875000 -0.250000 +v 0.187500 -2.875000 -0.250000 +v -0.810280 -0.129344 -5.187500 +v -0.814643 0.120618 -5.187500 +v -0.810280 -0.129344 -5.437500 +v -0.814643 0.120618 -5.437500 +v -0.564682 0.124981 -5.437500 +v -0.560318 -0.124981 -5.437500 +v -0.564682 0.124981 -5.187500 +v -0.560318 -0.124981 -5.187500 +v 1.064605 -0.116255 -2.437500 +v -1.064605 0.116255 -5.187500 +v -1.060242 -0.133707 -5.187500 +v 1.060242 0.133707 -2.437500 +v 1.060242 0.133707 -5.187500 +v 1.064605 -0.116255 -5.187500 +v -1.060242 -0.133707 -2.437500 +v -1.064605 0.116255 -2.437500 +v 0.560318 0.124981 -5.187500 +v 0.564682 -0.124981 -5.187500 +v 0.560318 0.124981 -5.437500 +v 0.564682 -0.124981 -5.437500 +v 0.814643 -0.120618 -5.437500 +v 0.810280 0.129344 -5.437500 +v 0.814643 -0.120618 -5.187500 +v 0.810280 0.129344 -5.187500 +v 0.810280 0.129344 -2.187500 +v 0.814643 -0.120618 -2.187500 +v 0.810280 0.129344 -2.437500 +v 0.814643 -0.120618 -2.437500 +v 0.564682 -0.124981 -2.437500 +v 0.560318 0.124981 -2.437500 +v 0.564682 -0.124981 -2.187500 +v 0.560318 0.124981 -2.187500 +v -0.662913 -0.662912 3.750000 +v -0.600413 -0.725412 3.786612 +v -0.574525 -0.751301 3.875000 +v -0.600413 -0.725412 3.963388 +v -0.662913 -0.662912 4.000000 +v -0.725413 -0.600412 3.963388 +v -0.751301 -0.574524 3.875000 +v -0.725413 -0.600412 3.786612 +v -0.751301 -0.751301 3.750000 +v -0.688802 -0.813801 3.786612 +v -0.662913 -0.839689 3.875000 +v -0.688802 -0.813801 3.963388 +v -0.751301 -0.751301 4.000000 +v -0.813801 -0.688801 3.963388 +v -0.839690 -0.662912 3.875000 +v -0.813801 -0.688801 3.786612 +v 0.662912 -0.662913 3.750000 +v 0.725412 -0.600413 3.786612 +v 0.751301 -0.574525 3.875000 +v 0.725412 -0.600413 3.963388 +v 0.662912 -0.662913 4.000000 +v 0.600412 -0.725413 3.963388 +v 0.574524 -0.751301 3.875000 +v 0.600412 -0.725413 3.786612 +v 0.751301 -0.751301 3.750000 +v 0.813801 -0.688802 3.786612 +v 0.839689 -0.662913 3.875000 +v 0.813801 -0.688802 3.963388 +v 0.751301 -0.751301 4.000000 +v 0.688801 -0.813802 3.963388 +v 0.662912 -0.839690 3.875000 +v 0.688801 -0.813802 3.786612 +v 0.000000 0.937500 3.750000 +v -0.088387 0.937500 3.786612 +v -0.125000 0.937500 3.875000 +v -0.088387 0.937500 3.963388 +v 0.000000 0.937500 4.000000 +v 0.088389 0.937500 3.963388 +v 0.125000 0.937500 3.875000 +v 0.088389 0.937500 3.786612 +v 0.000000 1.062500 3.750000 +v -0.088387 1.062500 3.786612 +v -0.125000 1.062500 3.875000 +v -0.088387 1.062500 3.963388 +v 0.000000 1.062500 4.000000 +v 0.088389 1.062500 3.963388 +v 0.125000 1.062500 3.875000 +v 0.088389 1.062500 3.786612 +v -0.688801 0.813801 3.786612 +v -0.662912 0.839690 3.875000 +v -0.688801 0.813801 3.963388 +v -0.751301 0.751301 4.000000 +v -0.813800 0.688802 3.963388 +v -0.839689 0.662913 3.875000 +v -0.813800 0.688802 3.786612 +v -0.751301 0.751301 3.750000 +v -0.600412 0.725413 3.786612 +v -0.574524 0.751301 3.875000 +v -0.600412 0.725413 3.963388 +v -0.662912 0.662913 4.000000 +v -0.725412 0.600413 3.963388 +v -0.751301 0.574525 3.875000 +v -0.725412 0.600413 3.786612 +v -0.662912 0.662913 3.750000 +v 0.813801 0.688801 3.786612 +v 0.839690 0.662912 3.875000 +v 0.813801 0.688801 3.963388 +v 0.751301 0.751301 4.000000 +v 0.688802 0.813800 3.963388 +v 0.662913 0.839689 3.875000 +v 0.688802 0.813800 3.786612 +v 0.751301 0.751301 3.750000 +v 0.725413 0.600412 3.786612 +v 0.751301 0.574524 3.875000 +v 0.725413 0.600412 3.963388 +v 0.662913 0.662912 4.000000 +v 0.600413 0.725412 3.963388 +v 0.574525 0.751301 3.875000 +v 0.600413 0.725412 3.786612 +v 0.662913 0.662912 3.750000 +v -0.937500 0.000000 3.750000 +v -0.937500 -0.088388 3.786612 +v -0.937500 -0.125000 3.875000 +v -0.937500 -0.088388 3.963388 +v -0.937500 0.000000 4.000000 +v -0.937500 0.088389 3.963388 +v -0.937500 0.125000 3.875000 +v -0.937500 0.088389 3.786612 +v -1.062500 0.000000 3.750000 +v -1.062500 -0.088388 3.786612 +v -1.062500 -0.125000 3.875000 +v -1.062500 -0.088388 3.963388 +v -1.062500 0.000000 4.000000 +v -1.062500 0.088389 3.963388 +v -1.062500 0.125000 3.875000 +v -1.062500 0.088389 3.786612 +v 1.062500 -0.088389 3.786612 +v 1.062500 -0.125001 3.875000 +v 1.062500 -0.088389 3.963388 +v 1.062500 -0.000001 4.000000 +v 1.062500 0.088387 3.963388 +v 1.062500 0.124999 3.875000 +v 1.062500 0.088387 3.786612 +v 1.062500 -0.000001 3.750000 +v 0.937500 -0.088389 3.786612 +v 0.937500 -0.125001 3.875000 +v 0.937500 -0.088389 3.963388 +v 0.937500 -0.000001 4.000000 +v 0.937500 0.088387 3.963388 +v 0.937500 0.124999 3.875000 +v 0.937500 0.088387 3.786612 +v 0.937500 -0.000001 3.750000 +v -0.088389 -1.062500 3.786612 +v -0.125000 -1.062500 3.875000 +v -0.088389 -1.062500 3.963388 +v -0.000000 -1.062500 4.000000 +v 0.088387 -1.062500 3.963388 +v 0.125000 -1.062500 3.875000 +v 0.088387 -1.062500 3.786612 +v -0.000000 -1.062500 3.750000 +v -0.088389 -0.937500 3.786612 +v -0.125000 -0.937500 3.875000 +v -0.088389 -0.937500 3.963388 +v -0.000000 -0.937500 4.000000 +v 0.088387 -0.937500 3.963388 +v 0.125000 -0.937500 3.875000 +v 0.088387 -0.937500 3.786612 +v -0.000000 -0.937500 3.750000 +v 0.364820 0.366721 -5.445083 +v 0.412380 0.339263 -5.312500 +v 0.364820 0.366721 -5.179917 +v 0.250000 0.433013 -5.125000 +v 0.135180 0.499304 -5.179917 +v 0.087620 0.526763 -5.312500 +v 0.135180 0.499304 -5.445083 +v 0.250000 0.433013 -5.500000 +v 0.489820 0.583228 -5.445083 +v 0.537380 0.555769 -5.312500 +v 0.489820 0.583228 -5.179917 +v 0.375000 0.649519 -5.125000 +v 0.260180 0.715810 -5.179917 +v 0.212620 0.743269 -5.312500 +v 0.260180 0.715810 -5.445083 +v 0.375000 0.649519 -5.500000 +v 0.951547 1.471350 -5.400888 +v 0.983253 1.453044 -5.312500 +v 0.951547 1.471350 -5.224112 +v 0.875000 1.515544 -5.187500 +v 0.798453 1.559739 -5.224112 +v 0.766747 1.578044 -5.312500 +v 0.798453 1.559739 -5.400888 +v 0.875000 1.515544 -5.437500 +v 0.903093 1.210650 -5.489277 +v 0.966506 1.174038 -5.312500 +v 0.903093 1.210650 -5.135723 +v 0.750000 1.299038 -5.062500 +v 0.596907 1.387426 -5.135723 +v 0.533494 1.424038 -5.312500 +v 0.596907 1.387426 -5.489277 +v 0.750000 1.299038 -5.562500 +v 0.528093 0.561131 -5.489277 +v 0.591506 0.524519 -5.312500 +v 0.528093 0.561131 -5.135723 +v 0.375000 0.649519 -5.062500 +v 0.221907 0.737907 -5.135723 +v 0.158494 0.774519 -5.312500 +v 0.221907 0.737907 -5.489277 +v 0.375000 0.649519 -5.562500 +v 0.375000 0.649519 -2.562500 +v 0.221907 0.737907 -2.489277 +v 0.158494 0.774519 -2.312500 +v 0.221907 0.737907 -2.135723 +v 0.375000 0.649519 -2.062500 +v 0.528093 0.561131 -2.135723 +v 0.591506 0.524519 -2.312500 +v 0.528093 0.561131 -2.489277 +v 0.750000 1.299038 -2.562500 +v 0.596907 1.387426 -2.489277 +v 0.533494 1.424038 -2.312500 +v 0.596907 1.387426 -2.135723 +v 0.750000 1.299038 -2.062500 +v 0.903093 1.210650 -2.135723 +v 0.966506 1.174038 -2.312500 +v 0.903093 1.210650 -2.489277 +v 0.875000 1.515544 -2.437500 +v 0.798453 1.559739 -2.400888 +v 0.766747 1.578044 -2.312500 +v 0.798453 1.559739 -2.224112 +v 0.875000 1.515544 -2.187500 +v 0.951547 1.471350 -2.224112 +v 0.983253 1.453044 -2.312500 +v 0.951547 1.471350 -2.400888 +v 0.375000 0.649519 -2.500000 +v 0.260180 0.715810 -2.445083 +v 0.212620 0.743269 -2.312500 +v 0.260180 0.715810 -2.179917 +v 0.375000 0.649519 -2.125000 +v 0.489820 0.583228 -2.179917 +v 0.537380 0.555769 -2.312500 +v 0.489820 0.583228 -2.445083 +v 0.250000 0.433013 -2.500000 +v 0.135180 0.499304 -2.445083 +v 0.087620 0.526763 -2.312500 +v 0.135180 0.499304 -2.179917 +v 0.250000 0.433013 -2.125000 +v 0.364820 0.366721 -2.179917 +v 0.412380 0.339263 -2.312500 +v 0.364820 0.366721 -2.445083 +v 0.375000 0.649519 -4.812500 +v 0.221907 0.737907 -4.739277 +v 0.158494 0.774519 -4.562500 +v 0.221907 0.737907 -4.385723 +v 0.375000 0.649519 -4.312500 +v 0.528093 0.561131 -4.385723 +v 0.591506 0.524519 -4.562500 +v 0.528093 0.561131 -4.739277 +v 0.750000 1.299038 -4.812500 +v 0.596907 1.387426 -4.739277 +v 0.533494 1.424038 -4.562500 +v 0.596907 1.387426 -4.385723 +v 0.750000 1.299038 -4.312500 +v 0.903093 1.210650 -4.385723 +v 0.966506 1.174038 -4.562500 +v 0.903093 1.210650 -4.739277 +v 0.875000 1.515544 -4.687500 +v 0.798453 1.559739 -4.650888 +v 0.766747 1.578044 -4.562500 +v 0.798453 1.559739 -4.474112 +v 0.875000 1.515544 -4.437500 +v 0.951547 1.471350 -4.474112 +v 0.983253 1.453044 -4.562500 +v 0.951547 1.471350 -4.650888 +v 0.375000 0.649519 -4.750000 +v 0.260180 0.715810 -4.695083 +v 0.212620 0.743269 -4.562500 +v 0.260180 0.715810 -4.429917 +v 0.375000 0.649519 -4.375000 +v 0.489820 0.583228 -4.429917 +v 0.537380 0.555769 -4.562500 +v 0.489820 0.583228 -4.695083 +v 0.250000 0.433013 -4.750000 +v 0.135180 0.499304 -4.695083 +v 0.087620 0.526763 -4.562500 +v 0.135180 0.499304 -4.429917 +v 0.250000 0.433013 -4.375000 +v 0.364820 0.366721 -4.429917 +v 0.412380 0.339263 -4.562500 +v 0.364820 0.366721 -4.695083 +v 0.364820 0.366721 -3.945083 +v 0.412380 0.339263 -3.812500 +v 0.364820 0.366721 -3.679917 +v 0.250000 0.433013 -3.625000 +v 0.135180 0.499304 -3.679917 +v 0.087620 0.526763 -3.812500 +v 0.135180 0.499304 -3.945083 +v 0.250000 0.433013 -4.000000 +v 0.489820 0.583228 -3.945083 +v 0.537380 0.555769 -3.812500 +v 0.489820 0.583228 -3.679917 +v 0.375000 0.649519 -3.625000 +v 0.260180 0.715810 -3.679917 +v 0.212620 0.743269 -3.812500 +v 0.260180 0.715810 -3.945083 +v 0.375000 0.649519 -4.000000 +v 0.951547 1.471350 -3.900888 +v 0.983253 1.453044 -3.812500 +v 0.951547 1.471350 -3.724112 +v 0.875000 1.515544 -3.687500 +v 0.798453 1.559739 -3.724112 +v 0.766747 1.578044 -3.812500 +v 0.798453 1.559739 -3.900888 +v 0.875000 1.515544 -3.937500 +v 0.903093 1.210650 -3.989277 +v 0.966506 1.174038 -3.812500 +v 0.903093 1.210650 -3.635723 +v 0.750000 1.299038 -3.562500 +v 0.596907 1.387426 -3.635723 +v 0.533494 1.424038 -3.812500 +v 0.596907 1.387426 -3.989277 +v 0.750000 1.299038 -4.062500 +v 0.528093 0.561131 -3.989277 +v 0.591506 0.524519 -3.812500 +v 0.528093 0.561131 -3.635723 +v 0.375000 0.649519 -3.562500 +v 0.221907 0.737907 -3.635723 +v 0.158494 0.774519 -3.812500 +v 0.221907 0.737907 -3.989277 +v 0.375000 0.649519 -4.062500 +v 0.364820 0.366721 -3.195083 +v 0.412380 0.339263 -3.062500 +v 0.364820 0.366721 -2.929917 +v 0.250000 0.433013 -2.875000 +v 0.135180 0.499304 -2.929917 +v 0.087620 0.526763 -3.062500 +v 0.135180 0.499304 -3.195083 +v 0.250000 0.433013 -3.250000 +v 0.489820 0.583228 -3.195083 +v 0.537380 0.555769 -3.062500 +v 0.489820 0.583228 -2.929917 +v 0.375000 0.649519 -2.875000 +v 0.260180 0.715810 -2.929917 +v 0.212620 0.743269 -3.062500 +v 0.260180 0.715810 -3.195083 +v 0.375000 0.649519 -3.250000 +v 0.951547 1.471350 -3.150888 +v 0.983253 1.453044 -3.062500 +v 0.951547 1.471350 -2.974112 +v 0.875000 1.515544 -2.937500 +v 0.798453 1.559739 -2.974112 +v 0.766747 1.578044 -3.062500 +v 0.798453 1.559739 -3.150888 +v 0.875000 1.515544 -3.187500 +v 0.903093 1.210650 -3.239277 +v 0.966506 1.174038 -3.062500 +v 0.903093 1.210650 -2.885723 +v 0.750000 1.299038 -2.812500 +v 0.596907 1.387426 -2.885723 +v 0.533494 1.424038 -3.062500 +v 0.596907 1.387426 -3.239277 +v 0.750000 1.299038 -3.312500 +v 0.528093 0.561131 -3.239277 +v 0.591506 0.524519 -3.062500 +v 0.528093 0.561131 -2.885723 +v 0.375000 0.649519 -2.812500 +v 0.221907 0.737907 -2.885723 +v 0.158494 0.774519 -3.062500 +v 0.221907 0.737907 -3.239277 +v 0.375000 0.649519 -3.312500 +v 0.375000 0.375000 2.750000 +v 0.625000 0.375000 2.750000 +v 0.375000 0.375000 2.500000 +v 0.625000 0.375000 2.500000 +v 0.375000 0.875000 2.750000 +v 0.625000 0.875000 2.750000 +v 0.375000 0.875000 2.500000 +v 0.625000 0.875000 2.500000 +v 0.375000 0.375000 -1.500000 +v 0.625000 0.375000 -1.500000 +v 0.375000 0.375000 -1.750000 +v 0.625000 0.375000 -1.750000 +v 0.375000 0.875000 -1.500000 +v 0.625000 0.875000 -1.500000 +v 0.375000 0.875000 -1.750000 +v 0.625000 0.875000 -1.750000 +v 0.375000 1.125000 2.500000 +v -0.375000 0.375000 2.500000 +v -0.625000 0.375000 2.500000 +v 0.625000 1.125000 2.500000 +v -0.375000 0.375000 2.750000 +v 0.375000 1.125000 -1.500000 +v 0.625000 1.125000 -1.500000 +v -0.625000 0.375000 2.750000 +v -0.625000 0.875000 2.750000 +v -0.375000 0.875000 2.750000 +v -0.625000 0.875000 2.500000 +v -0.375000 0.875000 2.500000 +v -0.625000 0.375000 -1.500000 +v -0.375000 0.375000 -1.500000 +v -0.625000 0.375000 -1.750000 +v -0.375000 0.375000 -1.750000 +v -0.625000 0.875000 -1.500000 +v -0.375000 0.875000 -1.500000 +v -0.625000 0.875000 -1.750000 +v -0.375000 0.875000 -1.750000 +v -0.625000 1.125000 2.500000 +v -0.375000 1.125000 2.500000 +v -0.625000 1.125000 -1.500000 +v -0.375000 1.125000 -1.500000 +v -0.062500 -2.750000 -0.875000 +v 0.062500 -2.750000 -0.875000 +v -0.062500 -2.750000 -1.250000 +v 0.062500 -2.750000 -1.250000 +v 0.062500 -2.000000 -1.250000 +v -0.062500 -2.000000 -1.250000 +v 0.062500 -2.000000 -1.000000 +v -0.062500 -2.000000 -1.000000 +v -0.750000 -0.125000 2.000000 +v 0.750000 -0.125000 2.000000 +v -0.750000 -0.125000 1.000000 +v 0.750000 -0.125000 1.000000 +v 0.750000 -1.250000 1.000000 +v -0.750000 -1.250000 1.000000 +v 0.750000 -1.250000 2.000000 +v -0.750000 -1.250000 2.000000 +v 0.187500 -1.375000 2.187500 +v 0.187500 -1.375000 2.562500 +v -0.187500 -1.375000 2.562500 +v -0.187500 -1.375000 2.187500 +v 0.187500 -1.250000 2.187500 +v -0.187500 -1.250000 2.187500 +v 0.187500 -1.250000 2.562500 +v -0.187500 -1.250000 2.562500 +v 0.265165 -1.359835 2.625000 +v 0.375000 -1.625000 2.625000 +v 0.265165 -1.890165 2.625000 +v 0.000000 -2.000000 2.625000 +v -0.265165 -1.890165 2.625000 +v -0.375000 -1.625000 2.625000 +v -0.265165 -1.359835 2.625000 +v 0.000000 -1.250000 2.625000 +v 0.176776 -1.448224 2.125000 +v 0.250000 -1.625000 2.125000 +v 0.176776 -1.801777 2.125000 +v 0.000000 -1.875000 2.125000 +v -0.176777 -1.801777 2.125000 +v -0.250000 -1.625000 2.125000 +v -0.176777 -1.448224 2.125000 +v 0.000000 -1.375000 2.125000 +v 0.176776 -1.448224 1.875000 +v 0.250000 -1.625000 1.875000 +v 0.176776 -1.801777 1.875000 +v 0.000000 -1.875000 1.875000 +v -0.176777 -1.801777 1.875000 +v -0.250000 -1.625000 1.875000 +v -0.176777 -1.448224 1.875000 +v 0.000000 -1.375000 1.875000 +v 0.265165 -1.359835 2.125000 +v 0.375000 -1.625000 2.125000 +v 0.265165 -1.890165 2.125000 +v 0.000000 -2.000000 2.125000 +v -0.265165 -1.890165 2.125000 +v -0.375000 -1.625000 2.125000 +v -0.265165 -1.359835 2.125000 +v 0.000000 -1.250000 2.125000 +v 0.000000 -1.250000 0.375000 +v -0.265165 -1.359835 0.375000 +v -0.375000 -1.625000 0.375000 +v -0.265165 -1.890165 0.375000 +v 0.000000 -2.000000 0.375000 +v 0.265165 -1.890165 0.375000 +v 0.375000 -1.625000 0.375000 +v 0.265165 -1.359835 0.375000 +v 0.000000 -1.250000 0.875000 +v -0.265165 -1.359835 0.875000 +v -0.375000 -1.625000 0.875000 +v -0.265165 -1.890165 0.875000 +v 0.000000 -2.000000 0.875000 +v 0.265165 -1.890165 0.875000 +v 0.375000 -1.625000 0.875000 +v 0.265165 -1.359835 0.875000 +v -0.187500 -1.250000 0.812500 +v 0.187500 -1.250000 0.812500 +v -0.187500 -1.250000 0.437500 +v 0.187500 -1.250000 0.437500 +v -0.187500 -1.375000 0.437500 +v -0.187500 -1.375000 0.812500 +v 0.187500 -1.375000 0.812500 +v 0.187500 -1.375000 0.437500 +v 0.000000 -1.375000 0.875000 +v -0.176777 -1.448224 0.875000 +v -0.250000 -1.625000 0.875000 +v -0.176777 -1.801777 0.875000 +v 0.000000 -1.875000 0.875000 +v 0.176776 -1.801777 0.875000 +v 0.250000 -1.625000 0.875000 +v 0.176776 -1.448224 0.875000 +v 0.000000 -1.375000 1.125000 +v -0.176777 -1.448224 1.125000 +v -0.250000 -1.625000 1.125000 +v -0.176777 -1.801777 1.125000 +v 0.000000 -1.875000 1.125000 +v 0.176776 -1.801777 1.125000 +v 0.250000 -1.625000 1.125000 +v 0.176776 -1.448224 1.125000 +v -0.125000 -0.875000 -2.437500 +v 0.125000 -0.875000 -2.437500 +v -0.125000 -0.875000 -2.812500 +v 0.125000 -0.875000 -2.812500 +v -0.125000 -1.687500 -2.000000 +v 0.125000 -1.687500 -2.000000 +v -0.125000 -1.312500 -2.000000 +v 0.125000 -1.312500 -2.000000 +v 1.062500 0.062500 3.937500 +v 1.062500 -0.062500 3.937500 +v 1.062500 0.062500 3.812500 +v 1.062500 -0.062500 3.812500 +v 1.437500 0.062500 3.812500 +v 1.437500 0.062500 3.937500 +v 1.437500 -0.062500 3.937500 +v 1.437500 -0.062500 3.812500 +v 1.250000 -0.125000 0.687500 +v 1.500000 -0.125000 0.687500 +v 1.250000 0.125000 0.687500 +v 1.500000 0.125000 0.687500 +v 1.125000 -0.250000 0.687500 +v 1.625000 -0.250000 0.687500 +v 1.125000 0.250000 0.687500 +v 1.625000 0.250000 0.687500 +v 1.250000 0.125000 0.562500 +v 1.250000 -0.125000 0.562500 +v 1.500000 -0.125000 0.562500 +v 1.500000 0.125000 0.562500 +v 1.125000 0.250000 0.562500 +v 1.125000 -0.250000 0.562500 +v 1.625000 -0.250000 0.562500 +v 1.625000 0.250000 0.562500 +v 1.125000 0.062500 0.687500 +v 1.125000 -0.062500 0.687500 +v 1.125000 0.062500 0.562500 +v 1.125000 -0.062500 0.562500 +v 0.875000 0.062500 0.687500 +v 0.875000 -0.062500 0.687500 +v 0.875000 0.062500 0.562500 +v 0.875000 -0.062500 0.562500 +v 0.875000 0.125000 0.750000 +v 0.875000 -0.125000 0.750000 +v 0.875000 0.125000 0.500000 +v 0.875000 -0.125000 0.500000 +v 0.750000 0.125000 0.750000 +v 0.750000 -0.125000 0.750000 +v 0.750000 0.125000 0.500000 +v 0.750000 -0.125000 0.500000 +v -0.375000 0.649519 -3.312500 +v -0.528093 0.561130 -3.239277 +v -0.591507 0.524519 -3.062500 +v -0.528093 0.561130 -2.885723 +v -0.375000 0.649519 -2.812500 +v -0.221907 0.737908 -2.885723 +v -0.158494 0.774519 -3.062500 +v -0.221907 0.737908 -3.239277 +v -0.750000 1.299038 -3.312500 +v -0.903093 1.210649 -3.239277 +v -0.966506 1.174038 -3.062500 +v -0.903093 1.210649 -2.885723 +v -0.750000 1.299038 -2.812500 +v -0.596907 1.387427 -2.885723 +v -0.533494 1.424038 -3.062500 +v -0.596907 1.387427 -3.239277 +v -0.875000 1.515544 -3.187500 +v -0.951547 1.471350 -3.150888 +v -0.983253 1.453045 -3.062500 +v -0.951547 1.471350 -2.974112 +v -0.875000 1.515544 -2.937500 +v -0.798453 1.559739 -2.974112 +v -0.766747 1.578044 -3.062500 +v -0.798453 1.559739 -3.150888 +v -0.375000 0.649519 -3.250000 +v -0.489820 0.583228 -3.195083 +v -0.537380 0.555769 -3.062500 +v -0.489820 0.583228 -2.929917 +v -0.375000 0.649519 -2.875000 +v -0.260180 0.715810 -2.929917 +v -0.212620 0.743269 -3.062500 +v -0.260180 0.715810 -3.195083 +v -0.250000 0.433013 -3.250000 +v -0.364820 0.366721 -3.195083 +v -0.412380 0.339263 -3.062500 +v -0.364820 0.366721 -2.929917 +v -0.250000 0.433013 -2.875000 +v -0.135180 0.499304 -2.929917 +v -0.087620 0.526763 -3.062500 +v -0.135180 0.499304 -3.195083 +v -0.375000 0.649519 -4.062500 +v -0.528093 0.561130 -3.989277 +v -0.591507 0.524519 -3.812500 +v -0.528093 0.561130 -3.635723 +v -0.375000 0.649519 -3.562500 +v -0.221907 0.737908 -3.635723 +v -0.158494 0.774519 -3.812500 +v -0.221907 0.737908 -3.989277 +v -0.750000 1.299038 -4.062500 +v -0.903093 1.210649 -3.989277 +v -0.966506 1.174038 -3.812500 +v -0.903093 1.210649 -3.635723 +v -0.750000 1.299038 -3.562500 +v -0.596907 1.387427 -3.635723 +v -0.533494 1.424038 -3.812500 +v -0.596907 1.387427 -3.989277 +v -0.875000 1.515544 -3.937500 +v -0.951547 1.471350 -3.900888 +v -0.983253 1.453045 -3.812500 +v -0.951547 1.471350 -3.724112 +v -0.875000 1.515544 -3.687500 +v -0.798453 1.559739 -3.724112 +v -0.766747 1.578044 -3.812500 +v -0.798453 1.559739 -3.900888 +v -0.375000 0.649519 -4.000000 +v -0.489820 0.583228 -3.945083 +v -0.537380 0.555769 -3.812500 +v -0.489820 0.583228 -3.679917 +v -0.375000 0.649519 -3.625000 +v -0.260180 0.715810 -3.679917 +v -0.212620 0.743269 -3.812500 +v -0.260180 0.715810 -3.945083 +v -0.250000 0.433013 -4.000000 +v -0.364820 0.366721 -3.945083 +v -0.412380 0.339263 -3.812500 +v -0.364820 0.366721 -3.679917 +v -0.250000 0.433013 -3.625000 +v -0.135180 0.499304 -3.679917 +v -0.087620 0.526763 -3.812500 +v -0.135180 0.499304 -3.945083 +v -0.135180 0.499304 -4.695083 +v -0.087620 0.526763 -4.562500 +v -0.135180 0.499304 -4.429917 +v -0.250000 0.433013 -4.375000 +v -0.364820 0.366721 -4.429917 +v -0.412380 0.339263 -4.562500 +v -0.364820 0.366721 -4.695083 +v -0.250000 0.433013 -4.750000 +v -0.260180 0.715810 -4.695083 +v -0.212620 0.743269 -4.562500 +v -0.260180 0.715810 -4.429917 +v -0.375000 0.649519 -4.375000 +v -0.489820 0.583228 -4.429917 +v -0.537380 0.555769 -4.562500 +v -0.489820 0.583228 -4.695083 +v -0.375000 0.649519 -4.750000 +v -0.798453 1.559739 -4.650888 +v -0.766747 1.578044 -4.562500 +v -0.798453 1.559739 -4.474112 +v -0.875000 1.515544 -4.437500 +v -0.951547 1.471350 -4.474112 +v -0.983253 1.453045 -4.562500 +v -0.951547 1.471350 -4.650888 +v -0.875000 1.515544 -4.687500 +v -0.596907 1.387427 -4.739277 +v -0.533494 1.424038 -4.562500 +v -0.596907 1.387427 -4.385723 +v -0.750000 1.299038 -4.312500 +v -0.903093 1.210649 -4.385723 +v -0.966506 1.174038 -4.562500 +v -0.903093 1.210649 -4.739277 +v -0.750000 1.299038 -4.812500 +v -0.221907 0.737908 -4.739277 +v -0.158494 0.774519 -4.562500 +v -0.221907 0.737908 -4.385723 +v -0.375000 0.649519 -4.312500 +v -0.528093 0.561130 -4.385723 +v -0.591507 0.524519 -4.562500 +v -0.528093 0.561130 -4.739277 +v -0.375000 0.649519 -4.812500 +v -0.135180 0.499304 -2.445083 +v -0.087620 0.526763 -2.312500 +v -0.135180 0.499304 -2.179917 +v -0.250000 0.433013 -2.125000 +v -0.364820 0.366721 -2.179917 +v -0.412380 0.339263 -2.312500 +v -0.364820 0.366721 -2.445083 +v -0.250000 0.433013 -2.500000 +v -0.260180 0.715810 -2.445083 +v -0.212620 0.743269 -2.312500 +v -0.260180 0.715810 -2.179917 +v -0.375000 0.649519 -2.125000 +v -0.489820 0.583228 -2.179917 +v -0.537380 0.555769 -2.312500 +v -0.489820 0.583228 -2.445083 +v -0.375000 0.649519 -2.500000 +v -0.798453 1.559739 -2.400888 +v -0.766747 1.578044 -2.312500 +v -0.798453 1.559739 -2.224112 +v -0.875000 1.515544 -2.187500 +v -0.951547 1.471350 -2.224112 +v -0.983253 1.453045 -2.312500 +v -0.951547 1.471350 -2.400888 +v -0.875000 1.515544 -2.437500 +v -0.596907 1.387427 -2.489277 +v -0.533494 1.424038 -2.312500 +v -0.596907 1.387427 -2.135723 +v -0.750000 1.299038 -2.062500 +v -0.903093 1.210649 -2.135723 +v -0.966506 1.174038 -2.312500 +v -0.903093 1.210649 -2.489277 +v -0.750000 1.299038 -2.562500 +v -0.221907 0.737908 -2.489277 +v -0.158494 0.774519 -2.312500 +v -0.221907 0.737908 -2.135723 +v -0.375000 0.649519 -2.062500 +v -0.528093 0.561130 -2.135723 +v -0.591507 0.524519 -2.312500 +v -0.528093 0.561130 -2.489277 +v -0.375000 0.649519 -2.562500 +v -0.375000 0.649519 -5.562500 +v -0.528093 0.561130 -5.489277 +v -0.591507 0.524519 -5.312500 +v -0.528093 0.561130 -5.135723 +v -0.375000 0.649519 -5.062500 +v -0.221907 0.737908 -5.135723 +v -0.158494 0.774519 -5.312500 +v -0.221907 0.737908 -5.489277 +v -0.750000 1.299038 -5.562500 +v -0.903093 1.210649 -5.489277 +v -0.966506 1.174038 -5.312500 +v -0.903093 1.210649 -5.135723 +v -0.750000 1.299038 -5.062500 +v -0.596907 1.387427 -5.135723 +v -0.533494 1.424038 -5.312500 +v -0.596907 1.387427 -5.489277 +v -0.875000 1.515544 -5.437500 +v -0.951547 1.471350 -5.400888 +v -0.983253 1.453045 -5.312500 +v -0.951547 1.471350 -5.224112 +v -0.875000 1.515544 -5.187500 +v -0.798453 1.559739 -5.224112 +v -0.766747 1.578044 -5.312500 +v -0.798453 1.559739 -5.400888 +v -0.375000 0.649519 -5.500000 +v -0.489820 0.583228 -5.445083 +v -0.537380 0.555769 -5.312500 +v -0.489820 0.583228 -5.179917 +v -0.375000 0.649519 -5.125000 +v -0.260180 0.715810 -5.179917 +v -0.212620 0.743269 -5.312500 +v -0.260180 0.715810 -5.445083 +v -0.250000 0.433013 -5.500000 +v -0.364820 0.366721 -5.445083 +v -0.412380 0.339263 -5.312500 +v -0.364820 0.366721 -5.179917 +v -0.250000 0.433013 -5.125000 +v -0.135180 0.499304 -5.179917 +v -0.087620 0.526763 -5.312500 +v -0.135180 0.499304 -5.445083 +vt 0.074286 0.362319 +vt 0.091429 0.478261 +vt 0.074286 0.536232 +vt 0.411429 0.536232 +vt 0.337143 0.362319 +vt 0.411429 0.362319 +vt 0.000000 0.362319 +vt 0.000000 0.536232 +vt 0.337143 0.536232 +vt 0.320000 0.420290 +vt 0.577143 0.181159 +vt 0.582857 0.217391 +vt 0.577143 0.217391 +vt 0.577143 0.260870 +vt 0.577143 0.224638 +vt 0.582857 0.260870 +vt 0.577143 0.304348 +vt 0.577143 0.268116 +vt 0.582857 0.304348 +vt 0.577143 0.347826 +vt 0.577143 0.311594 +vt 0.577143 0.355072 +vt 0.582857 0.391304 +vt 0.577143 0.391304 +vt 0.577143 0.434783 +vt 0.577143 0.398551 +vt 0.582857 0.434783 +vt 0.577143 0.471014 +vt 0.582857 0.478261 +vt 0.577143 0.514493 +vt 0.577143 0.478261 +vt 0.582857 0.000000 +vt 0.577143 0.043478 +vt 0.577143 0.007246 +vt 0.577143 0.050725 +vt 0.582857 0.086957 +vt 0.577143 0.086957 +vt 0.577143 0.094203 +vt 0.582857 0.130435 +vt 0.577143 0.130435 +vt 0.577143 0.137681 +vt 0.582857 0.173913 +vt 0.577143 0.173913 +vt 0.520000 0.579710 +vt 0.520000 0.695652 +vt 0.491429 0.666667 +vt 0.491429 0.608696 +vt 0.320000 0.666667 +vt 0.320000 0.608696 +vt 0.491429 0.695652 +vt 0.320000 0.739130 +vt 0.320000 0.695652 +vt 0.491429 0.579710 +vt 0.320000 0.579710 +vt 0.491429 0.536232 +vt 0.874286 -0.000000 +vt 0.862857 0.050725 +vt 0.862857 0.007246 +vt 0.874286 0.579710 +vt 0.862857 0.528986 +vt 0.874286 0.521739 +vt 0.874286 0.289855 +vt 0.862857 0.239130 +vt 0.874286 0.231884 +vt 0.874286 0.405797 +vt 0.862857 0.355072 +vt 0.874286 0.347826 +vt 0.874286 0.115942 +vt 0.862857 0.065217 +vt 0.874286 0.057971 +vt 0.874286 0.637681 +vt 0.862857 0.586957 +vt 0.862857 0.340580 +vt 0.862857 0.297101 +vt 0.874286 0.463768 +vt 0.862857 0.413043 +vt 0.862857 0.166667 +vt 0.862857 0.123188 +vt 0.874286 0.695652 +vt 0.862857 0.644928 +vt 0.862857 0.471014 +vt 0.874286 0.173913 +vt 0.862857 0.224638 +vt 0.862857 0.181159 +vt 0.797362 0.260890 +vt 0.836923 0.260890 +vt 0.817143 0.347784 +vt 0.611429 0.137681 +vt 0.600000 0.173913 +vt 0.600000 0.130435 +vt 0.611429 0.210145 +vt 0.600000 0.217391 +vt 0.611429 0.253623 +vt 0.600000 0.260870 +vt 0.611429 0.268116 +vt 0.600000 0.304348 +vt 0.611429 0.311594 +vt 0.600000 0.347826 +vt 0.611429 0.384058 +vt 0.600000 0.391304 +vt 0.611429 0.398551 +vt 0.600000 0.434783 +vt 0.611429 0.442029 +vt 0.600000 0.478261 +vt 0.611429 0.514493 +vt 0.600000 0.521739 +vt 0.600000 0.000000 +vt 0.611429 0.036232 +vt 0.600000 0.043478 +vt 0.611429 0.050725 +vt 0.600000 0.086957 +vt 0.611429 0.094203 +vt 0.645714 0.231884 +vt 0.622857 0.275362 +vt 0.622857 0.246377 +vt 0.645714 0.289855 +vt 0.622857 0.333333 +vt 0.622857 0.304348 +vt 0.622857 0.362319 +vt 0.645714 0.405797 +vt 0.622857 0.391304 +vt 0.622857 0.449275 +vt 0.622857 0.420290 +vt 0.645714 0.463768 +vt 0.622857 0.507246 +vt 0.622857 0.478261 +vt 0.622857 0.536232 +vt 0.645714 0.579710 +vt 0.622857 0.565217 +vt 0.622857 0.623188 +vt 0.622857 0.594203 +vt 0.645714 0.637681 +vt 0.622857 0.681159 +vt 0.622857 0.652174 +vt 0.645714 0.000000 +vt 0.622857 0.043478 +vt 0.622857 0.014493 +vt 0.622857 0.072464 +vt 0.645714 0.115942 +vt 0.622857 0.101449 +vt 0.622857 0.130435 +vt 0.645714 0.173913 +vt 0.622857 0.159420 +vt 0.622857 0.188406 +vt 0.622857 0.217391 +vt 0.737143 0.231884 +vt 0.714286 0.275362 +vt 0.714286 0.246377 +vt 0.737143 0.289855 +vt 0.714286 0.333333 +vt 0.714286 0.304348 +vt 0.737143 0.405797 +vt 0.714286 0.362319 +vt 0.737143 0.347826 +vt 0.714286 0.449275 +vt 0.714286 0.420290 +vt 0.737143 0.463768 +vt 0.714286 0.507246 +vt 0.714286 0.478261 +vt 0.737143 0.579710 +vt 0.714286 0.536232 +vt 0.737143 0.521739 +vt 0.714286 0.623188 +vt 0.714286 0.594203 +vt 0.737143 0.637681 +vt 0.714286 0.681159 +vt 0.714286 0.652174 +vt 0.737143 -0.000000 +vt 0.714286 0.043478 +vt 0.714286 0.014493 +vt 0.737143 0.115942 +vt 0.714286 0.072464 +vt 0.737143 0.057971 +vt 0.737143 0.173913 +vt 0.714286 0.130435 +vt 0.714286 0.188406 +vt 0.668571 0.231884 +vt 0.691429 0.275362 +vt 0.668571 0.289855 +vt 0.691429 0.333333 +vt 0.668571 0.347826 +vt 0.691429 0.362319 +vt 0.668571 0.405797 +vt 0.691429 0.449275 +vt 0.668571 0.463768 +vt 0.691429 0.507246 +vt 0.668571 0.521739 +vt 0.691429 0.536232 +vt 0.668571 0.579710 +vt 0.691429 0.594203 +vt 0.668571 0.637681 +vt 0.691429 0.681159 +vt 0.668571 0.695652 +vt 0.668571 0.000000 +vt 0.691429 0.043478 +vt 0.668571 0.057971 +vt 0.691429 0.072464 +vt 0.668571 0.115942 +vt 0.691429 0.130435 +vt 0.668571 0.173913 +vt 0.691429 0.188406 +vt 0.797366 0.029011 +vt 0.817143 0.000051 +vt 0.836920 0.086931 +vt 0.782857 0.188406 +vt 0.760000 0.231884 +vt 0.760000 0.173913 +vt 0.782857 0.275362 +vt 0.760000 0.289855 +vt 0.782857 0.333333 +vt 0.760000 0.347826 +vt 0.782857 0.362319 +vt 0.760000 0.405797 +vt 0.782857 0.449275 +vt 0.760000 0.463768 +vt 0.782857 0.507246 +vt 0.760000 0.521739 +vt 0.782857 0.536232 +vt 0.760000 0.579710 +vt 0.782857 0.594203 +vt 0.760000 0.637681 +vt 0.782857 0.681159 +vt 0.760000 0.695652 +vt 0.760000 -0.000000 +vt 0.782857 0.043478 +vt 0.760000 0.057971 +vt 0.782857 0.072464 +vt 0.760000 0.115942 +vt 0.782857 0.130435 +vt 0.697143 0.782609 +vt 0.605714 0.898551 +vt 0.605714 0.782609 +vt 0.605714 0.985507 +vt 0.697143 0.898551 +vt 0.697143 0.985507 +vt 0.697143 0.695652 +vt 0.605714 0.695652 +vt 0.731429 0.898551 +vt 0.731429 0.782609 +vt 0.571429 0.782609 +vt 0.571429 0.898551 +vt 0.411429 0.057971 +vt 0.400000 0.028986 +vt 0.411429 0.028986 +vt 0.411429 0.115942 +vt 0.400000 0.086957 +vt 0.411429 0.086957 +vt 0.240000 0.086957 +vt 0.251429 0.115942 +vt 0.240000 0.115942 +vt 0.240000 0.057971 +vt 0.251429 0.086957 +vt 0.240000 0.000000 +vt 0.251429 0.028986 +vt 0.240000 0.028986 +vt 0.251429 0.000000 +vt 0.262857 0.000000 +vt 0.262857 0.057971 +vt 0.251429 0.057971 +vt 0.382857 0.956522 +vt 0.457143 0.927536 +vt 0.457143 0.956522 +vt 0.382857 0.884058 +vt 0.368571 0.862319 +vt 0.374286 0.862319 +vt 0.457143 0.855072 +vt 0.382857 0.855072 +vt 0.468571 0.927536 +vt 0.457143 0.884058 +vt 0.468571 0.884058 +vt 0.320000 0.927536 +vt 0.360000 0.956522 +vt 0.320000 0.956522 +vt 0.320000 0.855072 +vt 0.360000 0.884058 +vt 0.320000 0.884058 +vt 0.374286 0.949275 +vt 0.360000 0.927536 +vt 0.382857 0.927536 +vt 0.400000 -0.000000 +vt 0.388571 -0.000000 +vt 0.262857 0.086957 +vt 0.262857 0.086957 +vt 0.388571 0.057971 +vt 0.388571 0.086957 +vt 0.262857 0.115942 +vt 0.388571 0.115942 +vt 0.251429 0.057971 +vt 0.262857 0.028986 +vt 0.262857 0.057971 +vt 0.388571 0.057971 +vt 0.262857 0.086957 +vt 0.262857 0.028986 +vt 0.388571 0.028986 +vt 0.388571 0.086957 +vt 0.262857 0.115942 +vt 0.388571 -0.000000 +vt 0.388571 -0.000000 +vt 0.262857 -0.000000 +vt 0.400000 -0.000000 +vt 0.400000 0.028986 +vt 0.388571 -0.000000 +vt 0.251429 0.086957 +vt 0.262857 0.086957 +vt 0.400000 0.057971 +vt 0.388571 0.028986 +vt 0.400000 0.057971 +vt 0.400000 0.086957 +vt 0.388571 0.086957 +vt 0.411429 0.086957 +vt 0.411429 0.057971 +vt 0.411429 0.028986 +vt 0.411429 -0.000000 +vt 0.411429 0.115942 +vt 0.240000 0.086957 +vt 0.251429 0.115942 +vt 0.240000 0.115942 +vt 0.240000 0.028986 +vt 0.240000 0.057971 +vt 0.240000 0.000000 +vt 0.251429 0.028986 +vt 0.251429 0.000000 +vt 0.262857 0.000000 +vt 0.834286 0.391243 +vt 0.828596 0.376812 +vt 0.834286 0.362380 +vt 0.834286 0.391243 +vt 0.828596 0.376812 +vt 0.834286 0.362380 +vt 0.834286 0.391243 +vt 0.828596 0.376812 +vt 0.834286 0.362380 +vt 0.834286 0.391243 +vt 0.828596 0.376812 +vt 0.834286 0.362380 +vt 0.834286 0.391243 +vt 0.828596 0.376812 +vt 0.834286 0.362380 +vt 0.834286 0.391243 +vt 0.828596 0.376812 +vt 0.834286 0.362380 +vt 0.834286 0.391243 +vt 0.828596 0.376812 +vt 0.834286 0.362380 +vt 0.834286 0.391243 +vt 0.828596 0.376812 +vt 0.834286 0.362380 +vt 0.791429 0.731884 +vt 0.797143 0.724638 +vt 0.800000 0.731884 +vt 0.731429 0.731884 +vt 0.737143 0.724638 +vt 0.740000 0.731884 +vt 0.748571 0.731884 +vt 0.754286 0.724638 +vt 0.757143 0.731884 +vt 0.774286 0.731884 +vt 0.765714 0.724638 +vt 0.771429 0.724638 +vt 0.782857 0.731884 +vt 0.788571 0.724638 +vt 0.740000 0.724638 +vt 0.745714 0.724638 +vt 0.765714 0.731884 +vt 0.757143 0.724638 +vt 0.762857 0.724638 +vt 0.774286 0.724638 +vt 0.780000 0.724638 +vt 0.782857 0.731884 +vt 0.774286 0.724638 +vt 0.780000 0.724638 +vt 0.765714 0.731884 +vt 0.757143 0.724638 +vt 0.762857 0.724638 +vt 0.748571 0.731884 +vt 0.740000 0.724638 +vt 0.745714 0.724638 +vt 0.788571 0.724638 +vt 0.791429 0.731884 +vt 0.771429 0.724638 +vt 0.774286 0.731884 +vt 0.754286 0.724638 +vt 0.757143 0.731884 +vt 0.731429 0.731884 +vt 0.737143 0.724638 +vt 0.740000 0.731884 +vt 0.800000 0.731884 +vt 0.791429 0.724638 +vt 0.797143 0.724638 +vt 0.774286 0.731884 +vt 0.780000 0.724638 +vt 0.782857 0.731884 +vt 0.765714 0.731884 +vt 0.757143 0.724638 +vt 0.762857 0.724638 +vt 0.748571 0.731884 +vt 0.740000 0.724638 +vt 0.745714 0.724638 +vt 0.788571 0.724638 +vt 0.791429 0.731884 +vt 0.765714 0.724638 +vt 0.771429 0.724638 +vt 0.754286 0.724638 +vt 0.757143 0.731884 +vt 0.731429 0.731884 +vt 0.737143 0.724638 +vt 0.740000 0.731884 +vt 0.797143 0.724638 +vt 0.800000 0.731884 +vt 0.800000 0.731884 +vt 0.791429 0.724638 +vt 0.797143 0.724638 +vt 0.740000 0.731884 +vt 0.731429 0.724638 +vt 0.737143 0.724638 +vt 0.748571 0.731884 +vt 0.754286 0.724638 +vt 0.757143 0.731884 +vt 0.765714 0.731884 +vt 0.771429 0.724638 +vt 0.774286 0.731884 +vt 0.782857 0.731884 +vt 0.788571 0.724638 +vt 0.791429 0.731884 +vt 0.740000 0.724638 +vt 0.745714 0.724638 +vt 0.757143 0.724638 +vt 0.762857 0.724638 +vt 0.780000 0.724638 +vt 0.800000 0.731884 +vt 0.791429 0.724638 +vt 0.797143 0.724638 +vt 0.731429 0.731884 +vt 0.737143 0.724638 +vt 0.740000 0.731884 +vt 0.748571 0.731884 +vt 0.754286 0.724638 +vt 0.757143 0.731884 +vt 0.765714 0.731884 +vt 0.771429 0.724638 +vt 0.774286 0.731884 +vt 0.782857 0.731884 +vt 0.788571 0.724638 +vt 0.791429 0.731884 +vt 0.740000 0.724638 +vt 0.745714 0.724638 +vt 0.757143 0.724638 +vt 0.762857 0.724638 +vt 0.774286 0.724638 +vt 0.780000 0.724638 +vt 0.537143 0.739130 +vt 0.354286 0.768116 +vt 0.354286 0.739130 +vt 0.571429 0.855072 +vt 0.548571 0.826087 +vt 0.571429 0.826087 +vt 0.571429 0.855072 +vt 0.548571 0.826087 +vt 0.571429 0.826087 +vt 0.548571 0.797101 +vt 0.571429 0.797101 +vt 0.571429 0.768116 +vt 0.548571 0.739130 +vt 0.571429 0.739130 +vt 0.320000 0.826087 +vt 0.342857 0.855072 +vt 0.320000 0.855072 +vt 0.320000 0.797101 +vt 0.342857 0.826087 +vt 0.320000 0.739130 +vt 0.342857 0.768116 +vt 0.320000 0.768116 +vt 0.537143 0.739130 +vt 0.354286 0.768116 +vt 0.354286 0.739130 +vt 0.537143 0.826087 +vt 0.548571 0.768116 +vt 0.537143 0.739130 +vt 0.342857 0.797101 +vt 0.354286 0.826087 +vt 0.537143 0.855072 +vt 0.354286 0.826087 +vt 0.537143 0.826087 +vt 0.342857 0.739130 +vt 0.354286 0.739130 +vt 0.537143 0.797101 +vt 0.354286 0.797101 +vt 0.548571 0.797101 +vt 0.571429 0.797101 +vt 0.571429 0.768116 +vt 0.548571 0.739130 +vt 0.571429 0.739130 +vt 0.320000 0.826087 +vt 0.342857 0.855072 +vt 0.320000 0.855072 +vt 0.320000 0.797101 +vt 0.342857 0.826087 +vt 0.320000 0.739130 +vt 0.342857 0.768116 +vt 0.320000 0.768116 +vt 0.537143 0.826087 +vt 0.548571 0.768116 +vt 0.537143 0.739130 +vt 0.342857 0.797101 +vt 0.354286 0.826087 +vt 0.537143 0.855072 +vt 0.354286 0.826087 +vt 0.537143 0.826087 +vt 0.342857 0.739130 +vt 0.354286 0.739130 +vt 0.537143 0.797101 +vt 0.354286 0.797101 +vt 0.588571 0.652174 +vt 0.622857 0.637681 +vt 0.622857 0.652174 +vt 0.571429 0.637681 +vt 0.537143 0.652174 +vt 0.537143 0.637681 +vt 0.577143 0.739130 +vt 0.588571 0.739130 +vt 0.588571 0.637681 +vt 0.577143 0.550725 +vt 0.588571 0.550725 +vt 0.571429 0.652174 +vt 0.320000 0.362319 +vt 0.091429 0.362319 +vt 0.182857 0.304348 +vt 0.182857 0.594203 +vt 0.137143 0.594203 +vt 0.091429 0.536232 +vt 0.188571 0.173913 +vt 0.234286 0.000000 +vt 0.234286 0.173913 +vt 0.182857 0.898551 +vt 0.131429 0.724638 +vt 0.182857 0.724638 +vt 0.137143 0.000000 +vt 0.137143 0.173913 +vt 0.320000 0.898551 +vt 0.320000 0.724638 +vt 0.091429 0.000000 +vt 0.091429 0.173913 +vt 0.337143 0.304348 +vt 0.320000 0.289855 +vt 0.337143 0.289855 +vt 0.371429 0.304348 +vt 0.354286 0.289855 +vt 0.371429 0.289855 +vt 0.388571 0.304348 +vt 0.388571 0.289855 +vt 0.354286 0.304348 +vt 0.371429 0.115967 +vt 0.383543 0.128694 +vt 0.388562 0.159420 +vt 0.371429 0.289830 +vt 0.354296 0.246377 +vt 0.371429 0.202924 +vt 0.371429 0.289830 +vt 0.354296 0.246377 +vt 0.371429 0.202924 +vt 0.371429 0.115967 +vt 0.383543 0.128694 +vt 0.388562 0.159420 +vt 0.354286 0.304348 +vt 0.337143 0.289855 +vt 0.354286 0.289855 +vt 0.388571 0.304348 +vt 0.371429 0.289855 +vt 0.388571 0.289855 +vt 0.371429 0.304348 +vt 0.337143 0.304348 +vt 0.320000 0.289855 +vt 0.411429 -0.000000 +vt 0.388571 0.086957 +vt 0.565714 0.434783 +vt 0.577143 0.536232 +vt 0.565714 0.565217 +vt 0.531429 0.463768 +vt 0.542857 0.536232 +vt 0.531429 0.536232 +vt 0.554286 0.434783 +vt 0.554286 0.565217 +vt 0.542857 0.463768 +vt 0.245714 0.898551 +vt 0.228571 0.913043 +vt 0.234286 0.898551 +vt 0.160000 0.956522 +vt 0.165714 0.942029 +vt 0.165714 0.956522 +vt 0.182857 0.942029 +vt 0.165714 0.927536 +vt 0.182857 0.927536 +vt 0.182857 0.913043 +vt 0.165714 0.898551 +vt 0.182857 0.898551 +vt 0.165714 0.913043 +vt 0.182857 0.956522 +vt 0.222857 0.898551 +vt 0.205714 0.913043 +vt 0.211429 0.898551 +vt 0.200000 0.898551 +vt 0.182857 0.913043 +vt 0.188571 0.898551 +vt 0.268571 0.898551 +vt 0.251429 0.913043 +vt 0.257143 0.898551 +vt 0.228571 0.927536 +vt 0.245714 0.942029 +vt 0.234286 0.942029 +vt 0.205714 0.927536 +vt 0.222857 0.942029 +vt 0.211429 0.942029 +vt 0.182857 0.927536 +vt 0.200000 0.942029 +vt 0.188571 0.942029 +vt 0.251429 0.927536 +vt 0.268571 0.942029 +vt 0.257143 0.942029 +vt 0.234286 0.956522 +vt 0.245714 0.956522 +vt 0.188571 0.956522 +vt 0.200000 0.956522 +vt 0.274286 0.913043 +vt 0.211429 0.956522 +vt 0.222857 0.956522 +vt 0.257143 0.956522 +vt 0.268571 0.956522 +vt 0.288571 0.949275 +vt 0.294286 0.920290 +vt 0.294286 0.949275 +vt 0.311429 0.949275 +vt 0.317143 0.920290 +vt 0.317143 0.949275 +vt 0.277143 0.949275 +vt 0.282857 0.920290 +vt 0.282857 0.949275 +vt 0.300000 0.949275 +vt 0.305714 0.920290 +vt 0.305714 0.949275 +vt 0.277143 0.920290 +vt 0.285714 0.913043 +vt 0.300000 0.920290 +vt 0.308571 0.913043 +vt 0.288571 0.920290 +vt 0.297143 0.913043 +vt 0.311429 0.920290 +vt 0.320000 0.913043 +vt 0.274286 0.913043 +vt 0.285714 0.898551 +vt 0.308571 0.898551 +vt 0.297143 0.898551 +vt 0.320000 0.898551 +vt 0.782857 0.731884 +vt 0.774286 0.724638 +vt 0.780000 0.724638 +vt 0.765714 0.731884 +vt 0.757143 0.724638 +vt 0.762857 0.724638 +vt 0.748571 0.731884 +vt 0.740000 0.724638 +vt 0.745714 0.724638 +vt 0.788571 0.724638 +vt 0.791429 0.731884 +vt 0.771429 0.724638 +vt 0.774286 0.731884 +vt 0.754286 0.724638 +vt 0.757143 0.731884 +vt 0.731429 0.731884 +vt 0.737143 0.724638 +vt 0.740000 0.731884 +vt 0.800000 0.731884 +vt 0.791429 0.724638 +vt 0.797143 0.724638 +vt 0.782857 0.731884 +vt 0.774286 0.724638 +vt 0.780000 0.724638 +vt 0.765714 0.731884 +vt 0.757143 0.724638 +vt 0.762857 0.724638 +vt 0.748571 0.731884 +vt 0.740000 0.724638 +vt 0.745714 0.724638 +vt 0.788571 0.724638 +vt 0.791429 0.731884 +vt 0.771429 0.724638 +vt 0.774286 0.731884 +vt 0.754286 0.724638 +vt 0.757143 0.731884 +vt 0.731429 0.731884 +vt 0.737143 0.724638 +vt 0.740000 0.731884 +vt 0.800000 0.731884 +vt 0.791429 0.724638 +vt 0.797143 0.724638 +vt 0.800000 0.731884 +vt 0.791429 0.724638 +vt 0.797143 0.724638 +vt 0.731429 0.731884 +vt 0.737143 0.724638 +vt 0.740000 0.731884 +vt 0.748571 0.731884 +vt 0.754286 0.724638 +vt 0.757143 0.731884 +vt 0.765714 0.731884 +vt 0.771429 0.724638 +vt 0.774286 0.731884 +vt 0.791429 0.731884 +vt 0.782857 0.724638 +vt 0.788571 0.724638 +vt 0.740000 0.724638 +vt 0.745714 0.724638 +vt 0.757143 0.724638 +vt 0.762857 0.724638 +vt 0.780000 0.724638 +vt 0.782857 0.731884 +vt 0.800000 0.731884 +vt 0.791429 0.724638 +vt 0.797143 0.724638 +vt 0.731429 0.731884 +vt 0.737143 0.724638 +vt 0.740000 0.731884 +vt 0.748571 0.731884 +vt 0.754286 0.724638 +vt 0.757143 0.731884 +vt 0.765714 0.731884 +vt 0.771429 0.724638 +vt 0.774286 0.731884 +vt 0.782857 0.731884 +vt 0.788571 0.724638 +vt 0.791429 0.731884 +vt 0.740000 0.724638 +vt 0.745714 0.724638 +vt 0.757143 0.724638 +vt 0.762857 0.724638 +vt 0.774286 0.724638 +vt 0.780000 0.724638 +vt 0.774286 0.731884 +vt 0.780000 0.724638 +vt 0.782857 0.731884 +vt 0.765714 0.731884 +vt 0.757143 0.724638 +vt 0.762857 0.724638 +vt 0.748571 0.731884 +vt 0.740000 0.724638 +vt 0.745714 0.724638 +vt 0.791429 0.731884 +vt 0.782857 0.724638 +vt 0.788571 0.724638 +vt 0.771429 0.724638 +vt 0.754286 0.724638 +vt 0.757143 0.731884 +vt 0.731429 0.731884 +vt 0.737143 0.724638 +vt 0.740000 0.731884 +vt 0.800000 0.731884 +vt 0.791429 0.724638 +vt 0.797143 0.724638 +vt 0.091429 0.420290 +vt 0.320000 0.478261 +vt 0.582857 0.347826 +vt 0.582857 0.521739 +vt 0.582857 0.043478 +vt 0.502857 0.695652 +vt 0.502857 0.579710 +vt 0.491429 0.739130 +vt 0.320000 0.536232 +vt 0.862857 0.572464 +vt 0.862857 0.282609 +vt 0.862857 0.398551 +vt 0.862857 0.108696 +vt 0.862857 0.630435 +vt 0.862857 0.456522 +vt 0.862857 0.688406 +vt 0.862857 0.514493 +vt 0.805723 0.340023 +vt 0.797362 0.318820 +vt 0.794302 0.289855 +vt 0.805723 0.239687 +vt 0.817143 0.231926 +vt 0.828563 0.239687 +vt 0.839984 0.289855 +vt 0.836924 0.318820 +vt 0.828563 0.340023 +vt 0.611429 0.166667 +vt 0.611429 0.181159 +vt 0.611429 0.224638 +vt 0.611429 0.297101 +vt 0.611429 0.340580 +vt 0.611429 0.355072 +vt 0.611429 0.427536 +vt 0.611429 0.471014 +vt 0.611429 0.485507 +vt 0.611429 0.007246 +vt 0.611429 0.079710 +vt 0.611429 0.123188 +vt 0.645714 0.347826 +vt 0.645714 0.521739 +vt 0.645714 0.695652 +vt 0.645714 0.057971 +vt 0.714286 0.391304 +vt 0.714286 0.565217 +vt 0.737143 0.695652 +vt 0.714286 0.101449 +vt 0.714286 0.159420 +vt 0.714286 0.217391 +vt 0.691429 0.246377 +vt 0.691429 0.304348 +vt 0.691429 0.391304 +vt 0.691429 0.420290 +vt 0.691429 0.478261 +vt 0.691429 0.565217 +vt 0.691429 0.623188 +vt 0.691429 0.652174 +vt 0.691429 0.014493 +vt 0.691429 0.101449 +vt 0.691429 0.159420 +vt 0.691429 0.217391 +vt 0.828562 0.108131 +vt 0.797366 0.086931 +vt 0.817143 0.115891 +vt 0.805725 0.108131 +vt 0.794306 0.057971 +vt 0.805725 0.007811 +vt 0.828562 0.007811 +vt 0.836920 0.029011 +vt 0.839980 0.057971 +vt 0.782857 0.217391 +vt 0.782857 0.246377 +vt 0.782857 0.304348 +vt 0.782857 0.391304 +vt 0.782857 0.420290 +vt 0.782857 0.478261 +vt 0.782857 0.565217 +vt 0.782857 0.623188 +vt 0.782857 0.652174 +vt 0.782857 0.014493 +vt 0.782857 0.101449 +vt 0.782857 0.159420 +vt 0.400000 0.115942 +vt 0.360000 0.855072 +vt 0.368571 0.949275 +vt 0.388571 0.115942 +vt 0.262857 -0.000000 +vt 0.400000 0.115942 +vt 0.838309 0.366607 +vt 0.839976 0.376812 +vt 0.838309 0.387016 +vt 0.830262 0.387016 +vt 0.830262 0.366607 +vt 0.838309 0.366607 +vt 0.839976 0.376812 +vt 0.838309 0.387016 +vt 0.830262 0.387016 +vt 0.830262 0.366607 +vt 0.838309 0.366607 +vt 0.839976 0.376812 +vt 0.838309 0.387016 +vt 0.830262 0.387016 +vt 0.830262 0.366607 +vt 0.838309 0.366607 +vt 0.839976 0.376812 +vt 0.838309 0.387016 +vt 0.830262 0.387016 +vt 0.830262 0.366607 +vt 0.838309 0.366607 +vt 0.839976 0.376812 +vt 0.838309 0.387016 +vt 0.830262 0.387016 +vt 0.830262 0.366607 +vt 0.838309 0.366607 +vt 0.839976 0.376812 +vt 0.838309 0.387016 +vt 0.830262 0.387016 +vt 0.830262 0.366607 +vt 0.838309 0.366607 +vt 0.839976 0.376812 +vt 0.838309 0.387016 +vt 0.830262 0.387016 +vt 0.830262 0.366607 +vt 0.838309 0.366607 +vt 0.839976 0.376812 +vt 0.838309 0.387016 +vt 0.830262 0.387016 +vt 0.830262 0.366607 +vt 0.791429 0.724638 +vt 0.731429 0.724638 +vt 0.748571 0.724638 +vt 0.782857 0.724638 +vt 0.782857 0.724638 +vt 0.765714 0.724638 +vt 0.748571 0.724638 +vt 0.731429 0.724638 +vt 0.774286 0.724638 +vt 0.782857 0.724638 +vt 0.748571 0.724638 +vt 0.731429 0.724638 +vt 0.791429 0.724638 +vt 0.731429 0.731884 +vt 0.748571 0.724638 +vt 0.765714 0.724638 +vt 0.782857 0.724638 +vt 0.774286 0.724638 +vt 0.731429 0.724638 +vt 0.748571 0.724638 +vt 0.765714 0.724638 +vt 0.782857 0.724638 +vt 0.537143 0.768116 +vt 0.548571 0.855072 +vt 0.548571 0.855072 +vt 0.537143 0.768116 +vt 0.354286 0.855072 +vt 0.354286 0.855072 +vt 0.137143 0.304348 +vt 0.182857 0.173913 +vt 0.320000 0.173913 +vt 0.320000 0.536232 +vt 0.137143 0.724638 +vt 0.091429 0.724638 +vt 0.188571 0.000000 +vt 0.131429 0.898551 +vt 0.320000 0.304348 +vt 0.383543 0.190146 +vt 0.371429 0.202874 +vt 0.359314 0.190146 +vt 0.354296 0.159420 +vt 0.359314 0.128694 +vt 0.359314 0.277103 +vt 0.359314 0.215651 +vt 0.383543 0.215651 +vt 0.388562 0.246377 +vt 0.383543 0.277103 +vt 0.359314 0.277103 +vt 0.359314 0.215651 +vt 0.383543 0.215651 +vt 0.388562 0.246377 +vt 0.383543 0.277103 +vt 0.383543 0.190146 +vt 0.371429 0.202874 +vt 0.359314 0.190146 +vt 0.354296 0.159420 +vt 0.359314 0.128694 +vt 0.320000 0.304348 +vt 0.577143 0.463768 +vt 0.160000 0.942029 +vt 0.274286 0.927536 +vt 0.274286 0.898551 +vt 0.782857 0.724638 +vt 0.765714 0.724638 +vt 0.748571 0.724638 +vt 0.731429 0.724638 +vt 0.782857 0.724638 +vt 0.765714 0.724638 +vt 0.748571 0.724638 +vt 0.731429 0.724638 +vt 0.731429 0.724638 +vt 0.748571 0.724638 +vt 0.765714 0.724638 +vt 0.774286 0.724638 +vt 0.731429 0.724638 +vt 0.748571 0.724638 +vt 0.765714 0.724638 +vt 0.782857 0.724638 +vt 0.774286 0.724638 +vt 0.765714 0.724638 +vt 0.748571 0.724638 +vt 0.731429 0.724638 +vt 0.577143 0.398551 +vt 0.411429 0.434783 +vt 0.411429 0.398551 +vt 0.577143 0.289855 +vt 0.411429 0.326087 +vt 0.411429 0.289855 +vt 0.577143 0.108696 +vt 0.411429 0.144928 +vt 0.411429 0.108696 +vt 0.577143 0.000000 +vt 0.411429 0.036232 +vt 0.411429 0.000000 +vt 0.577143 0.326087 +vt 0.411429 0.362319 +vt 0.577143 0.144928 +vt 0.411429 0.181159 +vt 0.577143 0.217391 +vt 0.411429 0.253623 +vt 0.411429 0.217391 +vt 0.577143 0.036232 +vt 0.411429 0.072464 +vt 0.577143 0.362319 +vt 0.577143 0.181159 +vt 0.577143 0.253623 +vt 0.577143 0.072464 +vt 0.931429 0.282609 +vt 0.925714 0.239130 +vt 0.931429 0.239130 +vt 0.931429 0.050725 +vt 0.925714 0.007246 +vt 0.931429 0.007246 +vt 0.931429 0.166667 +vt 0.925714 0.123188 +vt 0.931429 0.123188 +vt 0.931429 0.340580 +vt 0.925714 0.297101 +vt 0.931429 0.297101 +vt 0.931429 0.514493 +vt 0.925714 0.471014 +vt 0.931429 0.471014 +vt 0.931429 0.108696 +vt 0.925714 0.065217 +vt 0.931429 0.065217 +vt 0.931429 0.456522 +vt 0.925714 0.413043 +vt 0.931429 0.413043 +vt 0.931429 0.398551 +vt 0.925714 0.355072 +vt 0.931429 0.355072 +vt 0.931429 0.688406 +vt 0.925714 0.644928 +vt 0.931429 0.644928 +vt 0.931429 0.224638 +vt 0.925714 0.181159 +vt 0.931429 0.181159 +vt 0.931429 0.630435 +vt 0.925714 0.586957 +vt 0.931429 0.586957 +vt 0.931429 0.572464 +vt 0.925714 0.528986 +vt 0.931429 0.528986 +vt 0.897143 0.289855 +vt 0.897143 0.231884 +vt 0.925714 0.340580 +vt 0.925714 0.398551 +vt 0.897143 0.347826 +vt 0.925714 0.456522 +vt 0.897143 0.405797 +vt 0.925714 0.514493 +vt 0.897143 0.463768 +vt 0.925714 0.572464 +vt 0.897143 0.521739 +vt 0.897143 0.637681 +vt 0.897143 0.579710 +vt 0.925714 0.688406 +vt 0.925714 0.050725 +vt 0.897143 -0.000000 +vt 0.897143 0.115942 +vt 0.897143 0.057971 +vt 0.925714 0.166667 +vt 0.925714 0.224638 +vt 0.897143 0.173913 +vt 0.897143 0.695652 +vt 0.840000 0.275362 +vt 0.840000 0.246377 +vt 0.840000 0.304348 +vt 0.840000 0.362319 +vt 0.840000 0.420290 +vt 0.840000 0.478261 +vt 0.840000 0.536232 +vt 0.840000 0.623188 +vt 0.840000 0.594203 +vt 0.840000 0.652174 +vt 0.840000 0.014493 +vt 0.840000 0.072464 +vt 0.840000 0.130435 +vt 0.840000 0.217391 +vt 0.840000 0.188406 +vt 0.611429 0.231884 +vt 0.622857 0.260870 +vt 0.611429 0.260870 +vt 0.611429 0.086957 +vt 0.622857 0.115942 +vt 0.611429 0.115942 +vt 0.611429 -0.000000 +vt 0.622857 0.028986 +vt 0.611429 0.028986 +vt 0.622857 0.289855 +vt 0.611429 0.289855 +vt 0.622857 0.144928 +vt 0.611429 0.144928 +vt 0.611429 0.173913 +vt 0.622857 0.202899 +vt 0.611429 0.202899 +vt 0.622857 0.057971 +vt 0.611429 0.057971 +vt 0.622857 0.318841 +vt 0.611429 0.318841 +vt 0.622857 0.173913 +vt 0.622857 0.231884 +vt 0.622857 0.086957 +vt 0.622857 0.347826 +vt 0.611429 0.347826 +vt 0.714286 0.000000 +vt 0.691429 0.028986 +vt 0.691429 0.000000 +vt 0.714286 0.260870 +vt 0.691429 0.289855 +vt 0.691429 0.260870 +vt 0.714286 0.115942 +vt 0.691429 0.144928 +vt 0.691429 0.115942 +vt 0.714286 0.173913 +vt 0.691429 0.202899 +vt 0.691429 0.173913 +vt 0.714286 0.028986 +vt 0.691429 0.057971 +vt 0.714286 0.289855 +vt 0.691429 0.318841 +vt 0.714286 0.144928 +vt 0.714286 0.202899 +vt 0.691429 0.231884 +vt 0.714286 0.057971 +vt 0.691429 0.086957 +vt 0.714286 0.318841 +vt 0.691429 0.347826 +vt 0.714286 0.231884 +vt 0.714286 0.086957 +vt 0.794286 -0.000000 +vt 0.782857 0.028986 +vt 0.782857 -0.000000 +vt 0.794286 0.260870 +vt 0.782857 0.289855 +vt 0.782857 0.260870 +vt 0.794286 0.115942 +vt 0.782857 0.144928 +vt 0.782857 0.115942 +vt 0.794286 0.173913 +vt 0.782857 0.202899 +vt 0.782857 0.173913 +vt 0.794286 0.028986 +vt 0.782857 0.057971 +vt 0.794286 0.289855 +vt 0.782857 0.318841 +vt 0.794286 0.144928 +vt 0.794286 0.202899 +vt 0.782857 0.231884 +vt 0.794286 0.057971 +vt 0.782857 0.086957 +vt 0.794286 0.318841 +vt 0.782857 0.347826 +vt 0.794286 0.231884 +vt 0.794286 0.086957 +vt 0.794286 0.144928 +vt 0.817143 0.130435 +vt 0.817143 0.144928 +vt 0.794286 0.202899 +vt 0.817143 0.188406 +vt 0.817143 0.202899 +vt 0.794286 0.202899 +vt 0.817143 0.188406 +vt 0.817143 0.202899 +vt 0.794286 0.144928 +vt 0.817143 0.130435 +vt 0.817143 0.144928 +vt 0.794286 0.217391 +vt 0.817143 0.202899 +vt 0.817143 0.217391 +vt 0.794286 0.188406 +vt 0.817143 0.173913 +vt 0.794286 0.130435 +vt 0.817143 0.115942 +vt 0.794286 0.231884 +vt 0.817143 0.231884 +vt 0.794286 0.173913 +vt 0.817143 0.159420 +vt 0.794286 0.173913 +vt 0.817143 0.159420 +vt 0.817143 0.173913 +vt 0.794286 0.130435 +vt 0.817143 0.115942 +vt 0.817143 0.130435 +vt 0.794286 0.159420 +vt 0.817143 0.144928 +vt 0.794286 0.231884 +vt 0.817143 0.217391 +vt 0.817143 0.231884 +vt 0.817143 0.144928 +vt 0.794286 0.144928 +vt 0.817143 0.130435 +vt 0.794286 0.188406 +vt 0.794286 0.159420 +vt 0.817143 0.159420 +vt 0.794286 0.130435 +vt 0.817143 0.115942 +vt 0.794286 0.188406 +vt 0.817143 0.173913 +vt 0.817143 0.188406 +vt 0.794286 0.173913 +vt 0.794286 0.231884 +vt 0.817143 0.217391 +vt 0.817143 0.231884 +vt 0.794286 0.159420 +vt 0.794286 0.217391 +vt 0.817143 0.202899 +vt 0.794286 0.202899 +vt 0.794286 0.159420 +vt 0.817143 0.159420 +vt 0.794286 0.130435 +vt 0.817143 0.115942 +vt 0.794286 0.188406 +vt 0.817143 0.173913 +vt 0.817143 0.188406 +vt 0.794286 0.173913 +vt 0.794286 0.231884 +vt 0.817143 0.217391 +vt 0.817143 0.231884 +vt 0.794286 0.217391 +vt 0.794286 0.202899 +vt 0.794286 0.144928 +vt 0.817143 0.130435 +vt 0.817143 0.144928 +vt 0.794286 0.202899 +vt 0.817143 0.188406 +vt 0.817143 0.202899 +vt 0.794286 0.202899 +vt 0.817143 0.188406 +vt 0.817143 0.202899 +vt 0.794286 0.144928 +vt 0.817143 0.130435 +vt 0.817143 0.144928 +vt 0.794286 0.217391 +vt 0.817143 0.202899 +vt 0.817143 0.217391 +vt 0.794286 0.188406 +vt 0.817143 0.173913 +vt 0.794286 0.115942 +vt 0.817143 0.115942 +vt 0.794286 0.231884 +vt 0.817143 0.231884 +vt 0.794286 0.173913 +vt 0.817143 0.159420 +vt 0.794286 0.173913 +vt 0.817143 0.159420 +vt 0.817143 0.173913 +vt 0.794286 0.130435 +vt 0.817143 0.115942 +vt 0.817143 0.130435 +vt 0.794286 0.159420 +vt 0.817143 0.144928 +vt 0.794286 0.231884 +vt 0.817143 0.217391 +vt 0.817143 0.231884 +vt 0.817143 0.144928 +vt 0.794286 0.144928 +vt 0.817143 0.130435 +vt 0.794286 0.188406 +vt 0.794286 0.159420 +vt 0.817143 0.159420 +vt 0.794286 0.130435 +vt 0.817143 0.115942 +vt 0.794286 0.188406 +vt 0.817143 0.173913 +vt 0.817143 0.188406 +vt 0.794286 0.173913 +vt 0.794286 0.231884 +vt 0.817143 0.217391 +vt 0.817143 0.231884 +vt 0.794286 0.159420 +vt 0.794286 0.217391 +vt 0.817143 0.202899 +vt 0.794286 0.217391 +vt 0.794286 0.202899 +vt 0.794286 0.159420 +vt 0.817143 0.159420 +vt 0.794286 0.130435 +vt 0.817143 0.115942 +vt 0.794286 0.188406 +vt 0.817143 0.173913 +vt 0.817143 0.188406 +vt 0.794286 0.173913 +vt 0.794286 0.231884 +vt 0.817143 0.217391 +vt 0.817143 0.231884 +vt 0.794286 0.217391 +vt 0.794286 0.202899 +vt 0.457143 1.000000 +vt 0.382857 1.000000 +vt 0.485714 0.971014 +vt 0.502857 0.855072 +vt 0.502857 0.971014 +vt 0.508571 0.971014 +vt 0.514286 0.855072 +vt 0.514286 0.971014 +vt 0.474286 0.971014 +vt 0.480000 0.855072 +vt 0.480000 0.971014 +vt 0.520000 0.971014 +vt 0.520000 0.855072 +vt 0.468571 0.855072 +vt 0.468571 0.971014 +vt 0.485714 0.855072 +vt 0.537143 0.855072 +vt 0.537143 0.971014 +vt 0.360000 1.000000 +vt 0.320000 1.000000 +vt 0.374286 0.992754 +vt 0.811429 0.347826 +vt 0.805714 0.362319 +vt 0.805714 0.347826 +vt 0.828571 0.347826 +vt 0.834286 0.362319 +vt 0.828571 0.362319 +vt 0.800000 0.362319 +vt 0.800000 0.347826 +vt 0.794286 0.362319 +vt 0.794286 0.347826 +vt 0.817143 0.347826 +vt 0.811429 0.362319 +vt 0.822857 0.347826 +vt 0.817143 0.362319 +vt 0.822857 0.362319 +vt 0.840000 0.347826 +vt 0.834286 0.347826 +vt 0.834286 0.347826 +vt 0.840000 0.362319 +vt 0.834286 0.362319 +vt 0.822857 0.347826 +vt 0.817143 0.362319 +vt 0.817143 0.347826 +vt 0.805714 0.347826 +vt 0.800000 0.362319 +vt 0.800000 0.347826 +vt 0.811429 0.347826 +vt 0.811429 0.362319 +vt 0.794286 0.362319 +vt 0.794286 0.347826 +vt 0.828571 0.362319 +vt 0.822857 0.362319 +vt 0.828571 0.347826 +vt 0.805714 0.362319 +vt 0.840000 0.347826 +vt 0.834286 0.362319 +vt 0.834286 0.347826 +vt 0.828571 0.347826 +vt 0.822857 0.362319 +vt 0.822857 0.347826 +vt 0.817143 0.347826 +vt 0.811429 0.362319 +vt 0.811429 0.347826 +vt 0.805714 0.347826 +vt 0.800000 0.362319 +vt 0.800000 0.347826 +vt 0.828571 0.362319 +vt 0.817143 0.362319 +vt 0.805714 0.362319 +vt 0.794286 0.362319 +vt 0.794286 0.347826 +vt 0.817143 0.347826 +vt 0.822857 0.362319 +vt 0.817143 0.362319 +vt 0.811429 0.362319 +vt 0.811429 0.347826 +vt 0.828571 0.347826 +vt 0.822857 0.347826 +vt 0.834286 0.347826 +vt 0.828571 0.362319 +vt 0.805714 0.347826 +vt 0.800000 0.362319 +vt 0.800000 0.347826 +vt 0.794286 0.362319 +vt 0.794286 0.347826 +vt 0.805714 0.362319 +vt 0.840000 0.347826 +vt 0.834286 0.362319 +vt 0.840000 0.347826 +vt 0.834286 0.362319 +vt 0.834286 0.347826 +vt 0.805714 0.347826 +vt 0.811429 0.362319 +vt 0.805714 0.362319 +vt 0.800000 0.347826 +vt 0.794286 0.362319 +vt 0.794286 0.347826 +vt 0.828571 0.347826 +vt 0.828571 0.362319 +vt 0.811429 0.347826 +vt 0.817143 0.362319 +vt 0.822857 0.347826 +vt 0.817143 0.347826 +vt 0.800000 0.362319 +vt 0.822857 0.362319 +vt 0.834286 0.347826 +vt 0.840000 0.362319 +vt 0.834286 0.362319 +vt 0.822857 0.347826 +vt 0.817143 0.362319 +vt 0.817143 0.347826 +vt 0.805714 0.347826 +vt 0.800000 0.362319 +vt 0.800000 0.347826 +vt 0.811429 0.362319 +vt 0.811429 0.347826 +vt 0.794286 0.347826 +vt 0.794286 0.362319 +vt 0.828571 0.347826 +vt 0.822857 0.362319 +vt 0.828571 0.362319 +vt 0.805714 0.362319 +vt 0.840000 0.347826 +vt 0.834286 0.362319 +vt 0.834286 0.347826 +vt 0.811429 0.347826 +vt 0.805714 0.362319 +vt 0.805714 0.347826 +vt 0.800000 0.347826 +vt 0.794286 0.362319 +vt 0.794286 0.347826 +vt 0.828571 0.362319 +vt 0.828571 0.347826 +vt 0.817143 0.347826 +vt 0.811429 0.362319 +vt 0.822857 0.347826 +vt 0.817143 0.362319 +vt 0.800000 0.362319 +vt 0.822857 0.362319 +vt 0.840000 0.347826 +vt 0.834286 0.362319 +vt 0.834286 0.347826 +vt 0.811429 0.347826 +vt 0.805714 0.362319 +vt 0.805714 0.347826 +vt 0.794286 0.347826 +vt 0.800000 0.362319 +vt 0.794286 0.362319 +vt 0.828571 0.362319 +vt 0.828571 0.347826 +vt 0.817143 0.347826 +vt 0.811429 0.362319 +vt 0.822857 0.347826 +vt 0.817143 0.362319 +vt 0.800000 0.347826 +vt 0.822857 0.362319 +vt 0.731429 0.695652 +vt 0.737143 0.695652 +vt 0.754286 0.695652 +vt 0.771429 0.695652 +vt 0.788571 0.695652 +vt 0.745714 0.695652 +vt 0.762857 0.695652 +vt 0.774286 0.695652 +vt 0.780000 0.695652 +vt 0.797143 0.695652 +vt 0.742800 0.862319 +vt 0.737143 0.876666 +vt 0.731486 0.862319 +vt 0.740000 0.818841 +vt 0.745714 0.847826 +vt 0.740000 0.847826 +vt 0.765714 0.818841 +vt 0.757143 0.847826 +vt 0.757143 0.818841 +vt 0.782857 0.818841 +vt 0.774286 0.847826 +vt 0.774286 0.818841 +vt 0.800000 0.818841 +vt 0.791429 0.847826 +vt 0.791429 0.818841 +vt 0.731429 0.818841 +vt 0.737143 0.847826 +vt 0.731429 0.847826 +vt 0.748571 0.818841 +vt 0.754286 0.847826 +vt 0.748571 0.847826 +vt 0.771429 0.847826 +vt 0.765714 0.847826 +vt 0.782857 0.847826 +vt 0.782857 0.818841 +vt 0.774286 0.818841 +vt 0.757143 0.818841 +vt 0.740000 0.818841 +vt 0.765714 0.818841 +vt 0.748571 0.818841 +vt 0.731429 0.818841 +vt 0.800000 0.818841 +vt 0.791429 0.818841 +vt 0.782857 0.847826 +vt 0.765714 0.847826 +vt 0.754286 0.847826 +vt 0.748571 0.847826 +vt 0.737143 0.847826 +vt 0.731429 0.847826 +vt 0.791429 0.847826 +vt 0.780000 0.847826 +vt 0.774286 0.847826 +vt 0.762857 0.847826 +vt 0.757143 0.847826 +vt 0.740000 0.847826 +vt 0.742800 0.862319 +vt 0.737143 0.876666 +vt 0.731486 0.862319 +vt 0.797143 0.695652 +vt 0.774286 0.695652 +vt 0.780000 0.695652 +vt 0.762857 0.695652 +vt 0.745714 0.695652 +vt 0.788571 0.695652 +vt 0.771429 0.695652 +vt 0.748571 0.695652 +vt 0.754286 0.695652 +vt 0.731429 0.695652 +vt 0.737143 0.695652 +vt 0.774286 0.818841 +vt 0.757143 0.818841 +vt 0.740000 0.818841 +vt 0.782857 0.818841 +vt 0.765714 0.818841 +vt 0.748571 0.818841 +vt 0.731429 0.818841 +vt 0.791429 0.818841 +vt 0.782857 0.847826 +vt 0.771429 0.847826 +vt 0.765714 0.847826 +vt 0.754286 0.847826 +vt 0.748571 0.847826 +vt 0.737143 0.847826 +vt 0.731429 0.847826 +vt 0.800000 0.818841 +vt 0.791429 0.847826 +vt 0.774286 0.847826 +vt 0.762857 0.847826 +vt 0.757143 0.847826 +vt 0.740000 0.847826 +vt 0.742800 0.862319 +vt 0.737143 0.876666 +vt 0.731486 0.862319 +vt 0.791429 0.695652 +vt 0.797143 0.695652 +vt 0.780000 0.695652 +vt 0.762857 0.695652 +vt 0.745714 0.695652 +vt 0.788571 0.695652 +vt 0.771429 0.695652 +vt 0.754286 0.695652 +vt 0.731429 0.695652 +vt 0.737143 0.695652 +vt 0.731429 0.695652 +vt 0.737143 0.695652 +vt 0.748571 0.695652 +vt 0.754286 0.695652 +vt 0.771429 0.695652 +vt 0.788571 0.695652 +vt 0.745714 0.695652 +vt 0.762857 0.695652 +vt 0.774286 0.695652 +vt 0.780000 0.695652 +vt 0.791429 0.695652 +vt 0.797143 0.695652 +vt 0.742800 0.862319 +vt 0.737143 0.876666 +vt 0.731486 0.862319 +vt 0.748571 0.818841 +vt 0.740000 0.847826 +vt 0.740000 0.818841 +vt 0.757143 0.818841 +vt 0.762857 0.847826 +vt 0.757143 0.847826 +vt 0.774286 0.818841 +vt 0.780000 0.847826 +vt 0.774286 0.847826 +vt 0.791429 0.818841 +vt 0.797143 0.847826 +vt 0.791429 0.847826 +vt 0.731429 0.818841 +vt 0.737143 0.847826 +vt 0.731429 0.847826 +vt 0.754286 0.847826 +vt 0.748571 0.847826 +vt 0.765714 0.818841 +vt 0.771429 0.847826 +vt 0.765714 0.847826 +vt 0.782857 0.818841 +vt 0.788571 0.847826 +vt 0.782857 0.847826 +vt 0.800000 0.818841 +vt 0.731429 0.695652 +vt 0.737143 0.695652 +vt 0.748571 0.695652 +vt 0.754286 0.695652 +vt 0.771429 0.695652 +vt 0.788571 0.695652 +vt 0.745714 0.695652 +vt 0.762857 0.695652 +vt 0.774286 0.695652 +vt 0.780000 0.695652 +vt 0.791429 0.695652 +vt 0.797143 0.695652 +vt 0.742800 0.862319 +vt 0.737143 0.876666 +vt 0.731486 0.862319 +vt 0.748571 0.818841 +vt 0.740000 0.847826 +vt 0.740000 0.818841 +vt 0.765714 0.818841 +vt 0.757143 0.847826 +vt 0.757143 0.818841 +vt 0.774286 0.818841 +vt 0.780000 0.847826 +vt 0.774286 0.847826 +vt 0.800000 0.818841 +vt 0.791429 0.847826 +vt 0.791429 0.818841 +vt 0.731429 0.818841 +vt 0.737143 0.847826 +vt 0.731429 0.847826 +vt 0.754286 0.847826 +vt 0.748571 0.847826 +vt 0.765714 0.847826 +vt 0.782857 0.818841 +vt 0.788571 0.847826 +vt 0.782857 0.847826 +vt 0.411429 0.318841 +vt 0.388571 0.289855 +vt 0.411429 0.289855 +vt 0.411429 0.144928 +vt 0.388571 0.115942 +vt 0.411429 0.115942 +vt 0.411429 0.202899 +vt 0.388571 0.173913 +vt 0.411429 0.173913 +vt 0.388571 0.260870 +vt 0.411429 0.260870 +vt 0.411429 0.347826 +vt 0.388571 0.318841 +vt 0.388571 0.144928 +vt 0.411429 0.231884 +vt 0.388571 0.202899 +vt 0.388571 0.231884 +vt 0.354286 0.137681 +vt 0.342857 0.115942 +vt 0.354286 0.115942 +vt 0.354286 0.181159 +vt 0.342857 0.159420 +vt 0.354286 0.159420 +vt 0.354286 0.224638 +vt 0.342857 0.202899 +vt 0.354286 0.202899 +vt 0.354286 0.268116 +vt 0.342857 0.246377 +vt 0.354286 0.246377 +vt 0.411429 0.260870 +vt 0.388571 0.231884 +vt 0.411429 0.231884 +vt 0.388571 0.202899 +vt 0.411429 0.202899 +vt 0.342857 0.224638 +vt 0.354286 0.289855 +vt 0.342857 0.268116 +vt 0.342857 0.137681 +vt 0.342857 0.181159 +vt 0.411429 0.173913 +vt 0.388571 0.144928 +vt 0.411429 0.144928 +vt 0.411429 0.347826 +vt 0.388571 0.318841 +vt 0.411429 0.318841 +vt 0.411429 0.289855 +vt 0.388571 0.260870 +vt 0.388571 0.173913 +vt 0.388571 0.115942 +vt 0.411429 0.115942 +vt 0.388571 0.289855 +vt 0.354286 0.268116 +vt 0.342857 0.246377 +vt 0.354286 0.246377 +vt 0.354286 0.224638 +vt 0.342857 0.202899 +vt 0.354286 0.202899 +vt 0.342857 0.181159 +vt 0.354286 0.181159 +vt 0.354286 0.159420 +vt 0.342857 0.137681 +vt 0.354286 0.137681 +vt 0.354286 0.289855 +vt 0.342857 0.268116 +vt 0.342857 0.224638 +vt 0.342857 0.159420 +vt 0.342857 0.115942 +vt 0.354286 0.115942 +vt 0.748571 0.818841 +vt 0.740000 0.818841 +vt 0.731429 0.818841 +vt 0.800000 0.818841 +vt 0.791429 0.818841 +vt 0.782857 0.818841 +vt 0.788571 0.847826 +vt 0.782857 0.847826 +vt 0.765714 0.818841 +vt 0.771429 0.847826 +vt 0.765714 0.847826 +vt 0.754286 0.847826 +vt 0.748571 0.847826 +vt 0.737143 0.847826 +vt 0.731429 0.847826 +vt 0.791429 0.847826 +vt 0.774286 0.818841 +vt 0.780000 0.847826 +vt 0.774286 0.847826 +vt 0.757143 0.847826 +vt 0.757143 0.818841 +vt 0.740000 0.847826 +vt 0.742800 0.862319 +vt 0.737143 0.876666 +vt 0.731486 0.862319 +vt 0.791429 0.695652 +vt 0.797143 0.695652 +vt 0.774286 0.695652 +vt 0.780000 0.695652 +vt 0.762857 0.695652 +vt 0.745714 0.695652 +vt 0.788571 0.695652 +vt 0.771429 0.695652 +vt 0.748571 0.695652 +vt 0.754286 0.695652 +vt 0.737143 0.695652 +vt 0.774286 0.818841 +vt 0.757143 0.818841 +vt 0.740000 0.818841 +vt 0.782857 0.818841 +vt 0.765714 0.818841 +vt 0.748571 0.818841 +vt 0.731429 0.818841 +vt 0.800000 0.818841 +vt 0.791429 0.818841 +vt 0.782857 0.847826 +vt 0.765714 0.847826 +vt 0.754286 0.847826 +vt 0.748571 0.847826 +vt 0.737143 0.847826 +vt 0.731429 0.847826 +vt 0.791429 0.847826 +vt 0.780000 0.847826 +vt 0.774286 0.847826 +vt 0.757143 0.847826 +vt 0.740000 0.847826 +vt 0.742800 0.862319 +vt 0.737143 0.876666 +vt 0.731486 0.862319 +vt 0.791429 0.695652 +vt 0.797143 0.695652 +vt 0.780000 0.695652 +vt 0.757143 0.695652 +vt 0.762857 0.695652 +vt 0.745714 0.695652 +vt 0.788571 0.695652 +vt 0.771429 0.695652 +vt 0.748571 0.695652 +vt 0.754286 0.695652 +vt 0.737143 0.695652 +vt 0.737143 0.695652 +vt 0.748571 0.695652 +vt 0.754286 0.695652 +vt 0.771429 0.695652 +vt 0.788571 0.695652 +vt 0.745714 0.695652 +vt 0.762857 0.695652 +vt 0.774286 0.695652 +vt 0.780000 0.695652 +vt 0.791429 0.695652 +vt 0.797143 0.695652 +vt 0.742800 0.862319 +vt 0.737143 0.876666 +vt 0.731486 0.862319 +vt 0.748571 0.818841 +vt 0.740000 0.847826 +vt 0.740000 0.818841 +vt 0.765714 0.818841 +vt 0.757143 0.847826 +vt 0.757143 0.818841 +vt 0.774286 0.818841 +vt 0.780000 0.847826 +vt 0.774286 0.847826 +vt 0.800000 0.818841 +vt 0.791429 0.847826 +vt 0.791429 0.818841 +vt 0.731429 0.818841 +vt 0.737143 0.847826 +vt 0.731429 0.847826 +vt 0.754286 0.847826 +vt 0.748571 0.847826 +vt 0.765714 0.847826 +vt 0.782857 0.818841 +vt 0.788571 0.847826 +vt 0.782857 0.847826 +vt 0.731429 0.695652 +vt 0.737143 0.695652 +vt 0.754286 0.695652 +vt 0.771429 0.695652 +vt 0.788571 0.695652 +vt 0.745714 0.695652 +vt 0.762857 0.695652 +vt 0.780000 0.695652 +vt 0.791429 0.695652 +vt 0.797143 0.695652 +vt 0.742800 0.862319 +vt 0.737143 0.876666 +vt 0.731486 0.862319 +vt 0.748571 0.818841 +vt 0.740000 0.847826 +vt 0.740000 0.818841 +vt 0.765714 0.818841 +vt 0.757143 0.847826 +vt 0.757143 0.818841 +vt 0.782857 0.818841 +vt 0.774286 0.847826 +vt 0.774286 0.818841 +vt 0.800000 0.818841 +vt 0.791429 0.847826 +vt 0.791429 0.818841 +vt 0.731429 0.818841 +vt 0.737143 0.847826 +vt 0.731429 0.847826 +vt 0.754286 0.847826 +vt 0.748571 0.847826 +vt 0.765714 0.847826 +vt 0.788571 0.847826 +vt 0.782857 0.847826 +vt 0.782857 0.818841 +vt 0.774286 0.818841 +vt 0.757143 0.818841 +vt 0.748571 0.818841 +vt 0.740000 0.818841 +vt 0.765714 0.818841 +vt 0.731429 0.818841 +vt 0.791429 0.818841 +vt 0.788571 0.847826 +vt 0.782857 0.847826 +vt 0.771429 0.847826 +vt 0.765714 0.847826 +vt 0.754286 0.847826 +vt 0.748571 0.847826 +vt 0.737143 0.847826 +vt 0.731429 0.847826 +vt 0.800000 0.818841 +vt 0.791429 0.847826 +vt 0.780000 0.847826 +vt 0.774286 0.847826 +vt 0.757143 0.847826 +vt 0.740000 0.847826 +vt 0.742800 0.862319 +vt 0.737143 0.876666 +vt 0.731486 0.862319 +vt 0.791429 0.695652 +vt 0.797143 0.695652 +vt 0.774286 0.695652 +vt 0.780000 0.695652 +vt 0.762857 0.695652 +vt 0.745714 0.695652 +vt 0.788571 0.695652 +vt 0.771429 0.695652 +vt 0.754286 0.695652 +vt 0.731429 0.695652 +vt 0.737143 0.695652 +vt 0.577143 0.434783 +vt 0.925714 0.282609 +vt 0.925714 0.108696 +vt 0.925714 0.630435 +vt 0.840000 0.333333 +vt 0.840000 0.391304 +vt 0.840000 0.449275 +vt 0.840000 0.507246 +vt 0.840000 0.565217 +vt 0.840000 0.681159 +vt 0.840000 0.043478 +vt 0.840000 0.101449 +vt 0.840000 0.159420 +vt 0.622857 -0.000000 +vt 0.714286 0.347826 +vt 0.794286 0.347826 +vt 0.794286 0.115942 +vt 0.794286 0.115942 +vt 0.794286 0.144928 +vt 0.794286 0.115942 +vt 0.794286 0.217391 +vt 0.794286 0.115942 +vt 0.794286 0.130435 +vt 0.794286 0.115942 +vt 0.794286 0.144928 +vt 0.794286 0.115942 +vt 0.794286 0.115942 +vt 0.508571 0.855072 +vt 0.474286 0.855072 +vt 0.368571 0.992754 +vt 0.840000 0.362319 +vt 0.840000 0.347826 +vt 0.840000 0.362319 +vt 0.840000 0.362319 +vt 0.840000 0.362319 +vt 0.840000 0.347826 +vt 0.840000 0.362319 +vt 0.840000 0.362319 +vt 0.748571 0.695652 +vt 0.765714 0.695652 +vt 0.782857 0.695652 +vt 0.740000 0.695652 +vt 0.757143 0.695652 +vt 0.791429 0.695652 +vt 0.737143 0.847972 +vt 0.741143 0.852174 +vt 0.741143 0.872464 +vt 0.733143 0.872464 +vt 0.733143 0.852174 +vt 0.762857 0.847826 +vt 0.780000 0.847826 +vt 0.797143 0.847826 +vt 0.788571 0.847826 +vt 0.788571 0.847826 +vt 0.771429 0.847826 +vt 0.797143 0.847826 +vt 0.745714 0.847826 +vt 0.737143 0.847972 +vt 0.741143 0.852174 +vt 0.741143 0.872464 +vt 0.733143 0.872464 +vt 0.733143 0.852174 +vt 0.791429 0.695652 +vt 0.757143 0.695652 +vt 0.740000 0.695652 +vt 0.782857 0.695652 +vt 0.765714 0.695652 +vt 0.788571 0.847826 +vt 0.797143 0.847826 +vt 0.780000 0.847826 +vt 0.745714 0.847826 +vt 0.737143 0.847972 +vt 0.741143 0.852174 +vt 0.741143 0.872464 +vt 0.733143 0.872464 +vt 0.733143 0.852174 +vt 0.774286 0.695652 +vt 0.757143 0.695652 +vt 0.740000 0.695652 +vt 0.782857 0.695652 +vt 0.765714 0.695652 +vt 0.748571 0.695652 +vt 0.765714 0.695652 +vt 0.782857 0.695652 +vt 0.740000 0.695652 +vt 0.757143 0.695652 +vt 0.737143 0.847972 +vt 0.741143 0.852174 +vt 0.741143 0.872464 +vt 0.733143 0.872464 +vt 0.733143 0.852174 +vt 0.745714 0.847826 +vt 0.765714 0.695652 +vt 0.782857 0.695652 +vt 0.740000 0.695652 +vt 0.757143 0.695652 +vt 0.737143 0.847972 +vt 0.741143 0.852174 +vt 0.741143 0.872464 +vt 0.733143 0.872464 +vt 0.733143 0.852174 +vt 0.745714 0.847826 +vt 0.762857 0.847826 +vt 0.797143 0.847826 +vt 0.771429 0.847826 +vt 0.388571 0.347826 +vt 0.342857 0.289855 +vt 0.388571 0.347826 +vt 0.342857 0.289855 +vt 0.797143 0.847826 +vt 0.762857 0.847826 +vt 0.745714 0.847826 +vt 0.737143 0.847972 +vt 0.741143 0.852174 +vt 0.741143 0.872464 +vt 0.733143 0.872464 +vt 0.733143 0.852174 +vt 0.757143 0.695652 +vt 0.740000 0.695652 +vt 0.782857 0.695652 +vt 0.765714 0.695652 +vt 0.731429 0.695652 +vt 0.788571 0.847826 +vt 0.771429 0.847826 +vt 0.797143 0.847826 +vt 0.762857 0.847826 +vt 0.745714 0.847826 +vt 0.737143 0.847972 +vt 0.741143 0.852174 +vt 0.741143 0.872464 +vt 0.733143 0.872464 +vt 0.733143 0.852174 +vt 0.774286 0.695652 +vt 0.740000 0.695652 +vt 0.782857 0.695652 +vt 0.765714 0.695652 +vt 0.731429 0.695652 +vt 0.731429 0.695652 +vt 0.765714 0.695652 +vt 0.782857 0.695652 +vt 0.740000 0.695652 +vt 0.757143 0.695652 +vt 0.737143 0.847972 +vt 0.741143 0.852174 +vt 0.741143 0.872464 +vt 0.733143 0.872464 +vt 0.733143 0.852174 +vt 0.745714 0.847826 +vt 0.762857 0.847826 +vt 0.797143 0.847826 +vt 0.771429 0.847826 +vt 0.748571 0.695652 +vt 0.765714 0.695652 +vt 0.782857 0.695652 +vt 0.740000 0.695652 +vt 0.757143 0.695652 +vt 0.774286 0.695652 +vt 0.737143 0.847972 +vt 0.741143 0.852174 +vt 0.741143 0.872464 +vt 0.733143 0.872464 +vt 0.733143 0.852174 +vt 0.745714 0.847826 +vt 0.762857 0.847826 +vt 0.780000 0.847826 +vt 0.797143 0.847826 +vt 0.771429 0.847826 +vt 0.797143 0.847826 +vt 0.762857 0.847826 +vt 0.745714 0.847826 +vt 0.737143 0.847972 +vt 0.741143 0.852174 +vt 0.741143 0.872464 +vt 0.733143 0.872464 +vt 0.733143 0.852174 +vt 0.757143 0.695652 +vt 0.740000 0.695652 +vt 0.782857 0.695652 +vt 0.765714 0.695652 +vt 0.748571 0.695652 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.0175 0.9998 0.0000 +vn 0.0175 -0.9998 0.0000 +vn -0.7070 -0.0123 -0.7071 +vn 0.9998 0.0175 0.0000 +vn 0.7070 0.0123 0.7071 +vn -0.9998 -0.0175 0.0000 +vn 0.7070 0.0123 -0.7071 +vn -0.7070 -0.0123 0.7071 +vn 0.0000 1.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.0000 0.1644 0.9864 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.5000 -0.8660 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.8660 0.5000 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 0.3162 0.9487 0.0000 +vn -0.3162 0.9487 0.0000 +vn 0.6000 0.8000 0.0000 +vn -0.6000 0.8000 0.0000 +vn 0.6928 0.4000 -0.6000 +vn 0.4000 0.6928 -0.6000 +vn 0.0000 0.8000 -0.6000 +vn -0.4000 0.6928 -0.6000 +vn -0.6928 0.4000 -0.6000 +vn -0.8000 0.0000 -0.6000 +vn -0.6928 -0.4000 -0.6000 +vn -0.4000 -0.6928 -0.6000 +vn -0.0000 -0.8000 -0.6000 +vn 0.4000 -0.6928 -0.6000 +vn 0.6928 -0.4000 -0.6000 +vn 0.8000 -0.0000 -0.6000 +vn -0.7746 -0.4472 0.4472 +vn -0.4472 -0.7746 0.4472 +vn -0.0000 -0.8944 0.4472 +vn 0.4472 -0.7746 0.4472 +vn 0.7746 -0.4472 0.4472 +vn 0.8944 0.0000 0.4472 +vn 0.7746 0.4472 0.4472 +vn 0.4472 0.7746 0.4472 +vn -0.0000 0.8944 0.4472 +vn -0.4472 0.7746 0.4472 +vn -0.7746 0.4472 0.4472 +vn -0.8944 0.0000 0.4472 +vn 0.0000 -0.9239 0.3827 +vn 0.0000 0.9239 -0.3827 +vn 0.9239 0.0000 0.3827 +vn 0.9239 0.0000 -0.3827 +vn 0.3827 0.0000 -0.9239 +vn -0.3827 0.0000 -0.9239 +vn -0.3827 0.0000 0.9239 +vn 0.3827 0.0000 0.9239 +vn -0.9239 0.0000 -0.3827 +vn -0.9239 0.0000 0.3827 +vn 0.0000 -0.3827 0.9239 +vn 0.0000 0.3827 -0.9239 +vn 0.5000 -0.5000 0.7071 +vn -0.5000 0.5000 -0.7071 +vn 0.5000 -0.5000 -0.7071 +vn -0.5000 0.5000 0.7071 +vn -0.5000 -0.5000 -0.7071 +vn -0.5000 -0.5000 0.7071 +vn 0.5000 0.5000 -0.7071 +vn 0.5000 0.5000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn -0.0000 0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn -0.6124 0.3536 -0.7071 +vn -0.6124 0.3536 0.7071 +vn 0.6124 -0.3536 0.7071 +vn 0.6124 -0.3536 -0.7071 +vn -0.1295 0.9916 -0.0000 +vn 0.3970 0.6876 0.6080 +vn 0.9235 0.3836 0.0000 +vn -0.4886 0.5339 -0.6901 +vn 0.0247 0.9025 -0.4299 +vn 0.1091 0.1889 0.9759 +vn 0.0247 0.9025 0.4299 +vn -0.4886 0.5339 0.6901 +vn 0.9542 -0.2990 -0.0000 +vn 0.7693 0.4727 0.4299 +vn 0.7067 -0.1561 0.6901 +vn 0.1091 0.1889 -0.9759 +vn 0.7693 0.4727 -0.4299 +vn 0.7067 -0.1561 -0.6901 +vn 0.3970 0.6876 -0.6080 +vn -0.7361 0.6769 -0.0000 +vn 0.9542 -0.2991 0.0000 +vn 0.0000 0.3827 0.9239 +vn 0.0000 0.9239 0.3827 +vn -0.6124 -0.3536 0.7071 +vn -0.9542 -0.2991 -0.0000 +vn -0.7067 -0.1561 -0.6901 +vn -0.1091 0.1889 -0.9759 +vn 0.6124 0.3536 -0.7071 +vn 0.4886 0.5339 -0.6901 +vn 0.7361 0.6769 0.0000 +vn -0.0247 0.9025 -0.4299 +vn 0.1295 0.9916 0.0000 +vn -0.1091 0.1889 0.9759 +vn -0.0247 0.9025 0.4299 +vn -0.3970 0.6876 0.6080 +vn -0.7693 0.4727 0.4299 +vn -0.9235 0.3836 -0.0000 +vn -0.7693 0.4727 -0.4299 +vn -0.3970 0.6876 -0.6080 +vn 0.4886 0.5339 0.6901 +vn -0.7067 -0.1561 0.6901 +vn 0.6124 0.3536 0.7071 +vn -0.6124 -0.3536 -0.7071 +s off +f 671/1237/143 674/1238/143 670/1239/143 +f 667/1240/144 672/1241/144 668/1242/144 +f 666/1243/143 670/1239/143 665/1244/143 +f 669/1245/144 676/1246/144 672/1241/144 +f 663/1247/143 688/1248/143 664/1249/143 +f 688/1248/143 653/1250/143 664/1251/143 +f 677/1252/143 654/1253/143 653/1254/143 +f 678/1255/143 655/1256/143 654/1257/143 +f 655/1258/143 680/1259/143 656/1260/143 +f 680/1259/143 657/1261/143 656/1262/143 +f 681/1263/143 658/1264/143 657/1261/143 +f 682/1265/143 659/1266/143 658/1267/143 +f 683/1268/143 660/1269/143 659/1270/143 +f 660/1271/143 685/1272/143 661/1273/143 +f 661/1274/143 686/1275/143 662/1276/143 +f 662/1277/143 687/1278/143 663/1279/143 +f 705/1280/144 708/1281/144 716/1282/144 +f 713/1283/145 711/1284/145 710/1285/145 +f 715/1286/146 707/1287/146 712/1288/146 +f 710/1285/147 714/1289/147 713/1283/147 +f 716/1282/148 712/1288/148 711/1284/148 +f 709/1290/149 705/1291/149 714/1289/149 +f 755/1292/143 768/1293/143 767/1294/143 +f 753/1295/143 764/1296/143 752/1297/143 +f 760/1298/143 771/1299/143 759/1300/143 +f 750/1301/143 761/1302/143 749/1303/143 +f 757/1304/143 768/1305/143 756/1306/143 +f 754/1307/143 765/1308/143 753/1295/143 +f 760/1298/143 761/1309/143 772/1310/143 +f 751/1311/143 762/1312/143 750/1301/143 +f 757/1304/143 770/1313/143 769/1314/143 +f 755/1315/143 766/1316/143 754/1307/143 +f 752/1297/143 763/1317/143 751/1311/143 +f 758/1318/143 771/1319/143 770/1320/143 +f 777/1321/143 781/1322/143 773/1323/143 +f 794/1324/144 699/1325/144 698/1326/144 +f 699/1325/144 796/1327/144 700/1328/144 +f 700/1328/144 785/1329/144 689/1330/144 +f 785/1331/144 690/1332/144 689/1330/144 +f 786/1333/144 691/1334/144 690/1332/144 +f 691/1334/144 788/1335/144 692/1336/144 +f 788/1337/144 693/1338/144 692/1336/144 +f 789/1339/144 694/1340/144 693/1338/144 +f 694/1340/144 791/1341/144 695/1342/144 +f 695/1343/144 792/1344/144 696/1345/144 +f 792/1346/144 697/1347/144 696/1345/144 +f 793/1348/144 698/1326/144 697/1347/144 +f 819/1349/143 808/1350/143 807/1351/143 +f 820/1352/143 797/1353/143 808/1354/143 +f 797/1355/143 810/1356/143 798/1357/143 +f 810/1356/143 799/1358/143 798/1359/143 +f 811/1360/143 800/1361/143 799/1362/143 +f 800/1363/143 813/1364/143 801/1365/143 +f 813/1364/143 802/1366/143 801/1367/143 +f 814/1368/143 803/1369/143 802/1370/143 +f 815/1371/143 804/1372/143 803/1373/143 +f 804/1374/143 817/1375/143 805/1376/143 +f 805/1377/143 818/1378/143 806/1379/143 +f 806/1380/143 819/1349/143 807/1381/143 +f 843/1382/143 880/1383/143 879/1384/143 +f 844/1385/143 869/1386/143 880/1387/143 +f 834/1388/143 869/1389/143 833/1390/143 +f 834/1388/143 871/1391/143 870/1392/143 +f 835/1393/143 872/1394/143 871/1395/143 +f 837/1396/143 872/1397/143 836/1398/143 +f 837/1396/143 874/1399/143 873/1400/143 +f 838/1401/143 875/1402/143 874/1403/143 +f 839/1404/143 876/1405/143 875/1406/143 +f 841/1407/143 876/1408/143 840/1409/143 +f 842/1410/143 877/1411/143 841/1407/143 +f 843/1382/143 878/1412/143 842/1410/143 +f 831/1413/144 868/1414/144 832/1415/144 +f 832/1415/144 857/1416/144 821/1417/144 +f 857/1418/144 822/1419/144 821/1417/144 +f 822/1419/144 859/1420/144 823/1421/144 +f 823/1421/144 860/1422/144 824/1423/144 +f 860/1424/144 825/1425/144 824/1423/144 +f 861/1426/144 826/1427/144 825/1425/144 +f 826/1427/144 863/1428/144 827/1429/144 +f 827/1430/144 864/1431/144 828/1432/144 +f 864/1433/144 829/1434/144 828/1432/144 +f 865/1435/144 830/1436/144 829/1434/144 +f 866/1437/144 831/1413/144 830/1436/144 +f 901/1438/144 899/1439/144 895/1440/144 +f 890/1441/144 855/1442/144 854/1443/144 +f 855/1442/144 892/1444/144 856/1445/144 +f 856/1445/144 881/1446/144 845/1447/144 +f 881/1448/144 846/1449/144 845/1447/144 +f 846/1449/144 883/1450/144 847/1451/144 +f 847/1451/144 884/1452/144 848/1453/144 +f 884/1454/144 849/1455/144 848/1453/144 +f 885/1456/144 850/1457/144 849/1455/144 +f 850/1457/144 887/1458/144 851/1459/144 +f 851/1460/144 888/1461/144 852/1462/144 +f 888/1463/144 853/1464/144 852/1462/144 +f 889/1465/144 854/1443/144 853/1464/144 +f 1037/1466/145 1039/1467/145 1038/1468/145 +f 1034/1469/146 1040/1470/146 1036/1471/146 +f 1035/1472/149 1038/1468/149 1033/1473/149 +f 1036/1474/144 1037/1466/144 1035/1475/144 +f 1033/1476/143 1039/1467/143 1034/1477/143 +f 1042/1478/143 1048/1479/143 1041/1480/143 +f 1043/1481/144 1045/1482/144 1044/1483/144 +f 1087/1484/143 1081/1485/143 1088/1486/143 +f 1085/1487/150 1082/1488/150 1087/1484/150 +f 1088/1489/151 1083/1490/151 1086/1491/151 +f 1083/1490/151 1081/1492/151 1091/1493/151 +f 1083/1490/152 1090/1494/152 1084/1495/152 +f 1055/1496/146 1052/1497/146 1053/1498/146 +f 1050/1499/149 1079/1500/149 1056/1501/149 +f 1054/1502/149 1050/1499/149 1056/1503/149 +f 1053/1504/144 1051/1505/144 1054/1506/144 +f 1073/1507/146 1080/1508/146 1075/1509/146 +f 1076/1510/149 1077/1511/149 1074/1512/149 +f 1055/1513/146 1078/1514/146 1049/1515/146 +f 1046/1516/151 1048/1479/151 1095/1517/151 +f 1082/1488/150 1084/1495/150 1090/1518/150 +f 1082/1519/150 1096/1520/150 1045/1521/150 +f 1081/1522/153 1045/1521/153 1046/1523/153 +f 1105/1524/154 1089/1525/154 1092/1526/154 +f 1089/1525/153 1093/1527/153 1092/1526/153 +f 1093/1527/150 1107/1528/150 1092/1526/150 +f 1096/1520/155 1091/1529/155 1095/1530/155 +f 1104/1531/155 1108/1532/155 1107/1528/155 +f 1091/1529/151 1046/1533/151 1095/1530/151 +f 1103/1534/151 1089/1525/151 1108/1535/151 +f 1103/1536/151 1101/1537/151 1094/1538/151 +f 1107/1539/150 1105/1524/150 1092/1540/150 +f 1102/1541/156 1094/1542/156 1101/1537/156 +f 1047/1543/157 1095/1530/157 1048/1479/157 +f 1102/1541/150 1104/1544/150 1093/1545/150 +f 1097/1546/150 1102/1541/150 1099/1547/150 +f 1100/1548/151 1103/1536/151 1098/1549/151 +f 1098/1550/143 1104/1544/143 1097/1546/143 +f 1110/1551/144 1108/1552/144 1109/1553/144 +f 1111/1554/143 1105/1524/143 1112/1555/143 +f 1109/1556/151 1106/1557/151 1111/1554/151 +f 1112/1555/150 1107/1539/150 1110/1551/150 +f 1106/1557/151 1108/1558/151 1089/1559/151 +f 1099/1547/144 1101/1537/144 1100/1548/144 +f 1125/1560/147 1127/1561/147 1121/1562/147 +f 1141/1563/148 1143/1564/148 1137/1565/148 +f 1157/1566/158 1159/1567/158 1153/1568/158 +f 1164/1569/159 1162/1570/159 1168/1571/159 +f 1180/1572/160 1178/1573/160 1184/1574/160 +f 1205/1575/149 1207/1576/149 1201/1577/149 +f 1212/1578/146 1210/1579/146 1216/1580/146 +f 1228/1581/145 1226/1582/145 1232/1583/145 +f 1273/1584/161 1256/1585/161 1280/1586/161 +f 1280/1587/161 1255/1588/161 1279/1589/161 +f 1278/1590/161 1253/1591/161 1277/1592/161 +f 1275/1593/161 1252/1594/161 1251/1595/161 +f 1274/1596/161 1249/1597/161 1273/1584/161 +f 1278/1590/161 1255/1598/161 1254/1599/161 +f 1276/1600/161 1253/1601/161 1252/1602/161 +f 1274/1596/161 1251/1603/161 1250/1604/161 +f 1287/1605/161 1310/1606/161 1311/1607/161 +f 1285/1608/161 1308/1609/161 1309/1610/161 +f 1283/1611/161 1306/1612/161 1307/1613/161 +f 1287/1605/161 1312/1614/161 1288/1615/161 +f 1285/1608/161 1310/1616/161 1286/1617/161 +f 1283/1611/161 1308/1618/161 1284/1619/161 +f 1281/1620/161 1306/1621/161 1282/1622/161 +f 1281/1623/161 1312/1624/161 1305/1625/161 +f 1326/1626/161 1351/1627/161 1327/1628/161 +f 1325/1629/161 1348/1630/161 1349/1631/161 +f 1323/1632/161 1346/1633/161 1347/1634/161 +f 1327/1628/161 1352/1635/161 1328/1636/161 +f 1326/1626/161 1349/1637/161 1350/1638/161 +f 1323/1632/161 1348/1639/161 1324/1640/161 +f 1321/1641/161 1346/1642/161 1322/1643/161 +f 1328/1636/161 1345/1644/161 1321/1645/161 +f 1400/1646/161 1369/1647/161 1376/1648/161 +f 1399/1649/161 1376/1650/161 1375/1651/161 +f 1398/1652/161 1373/1653/161 1397/1654/161 +f 1396/1655/161 1371/1656/161 1395/1657/161 +f 1394/1658/161 1369/1659/161 1393/1660/161 +f 1398/1652/161 1375/1661/161 1374/1662/161 +f 1396/1655/161 1373/1663/161 1372/1664/161 +f 1395/1657/161 1370/1665/161 1394/1658/161 +f 1440/1666/161 1409/1667/161 1416/1668/161 +f 1440/1669/161 1415/1670/161 1439/1671/161 +f 1438/1672/161 1413/1673/161 1437/1674/161 +f 1436/1675/161 1411/1676/161 1435/1677/161 +f 1434/1678/161 1409/1679/161 1433/1680/161 +f 1438/1672/161 1415/1681/161 1414/1682/161 +f 1436/1675/161 1413/1683/161 1412/1684/161 +f 1434/1678/161 1411/1685/161 1410/1686/161 +f 1447/1687/149 1462/1688/149 1453/1689/149 +f 1459/1690/144 1468/1691/144 1458/1692/144 +f 1443/1693/144 1448/1694/144 1444/1695/144 +f 1444/1695/146 1446/1696/146 1442/1697/146 +f 1441/1698/149 1447/1699/149 1443/1700/149 +f 1450/1701/143 1453/1702/143 1449/1703/143 +f 1452/1704/146 1454/1705/146 1450/1701/146 +f 1449/1706/149 1455/1707/149 1451/1708/149 +f 1467/1709/149 1479/1710/149 1473/1711/149 +f 1446/1696/146 1448/1694/146 1460/1712/146 +f 1447/1699/149 1445/1713/149 1457/1714/149 +f 1454/1705/146 1456/1715/146 1463/1716/146 +f 1447/1717/145 1454/1718/145 1448/1719/145 +f 1455/1707/149 1453/1720/149 1462/1721/149 +f 1460/1722/146 1454/1718/146 1463/1723/146 +f 1458/1692/146 1466/1724/146 1461/1725/146 +f 1464/1726/149 1467/1727/149 1459/1728/149 +f 1470/1729/143 1473/1730/143 1469/1731/143 +f 1472/1732/146 1474/1733/146 1470/1729/146 +f 1469/1734/149 1475/1735/149 1471/1736/149 +f 1466/1724/146 1468/1691/146 1478/1737/146 +f 1467/1727/149 1465/1738/149 1477/1739/149 +f 1474/1733/146 1476/1740/146 1480/1741/146 +f 1467/1742/145 1474/1743/145 1468/1744/145 +f 1475/1735/149 1473/1745/149 1479/1746/149 +f 1478/1747/146 1474/1743/146 1480/1748/146 +f 1484/1749/144 1486/1750/144 1485/1751/144 +f 1481/1752/162 1487/1753/162 1488/1754/162 +f 1487/1755/146 1484/1749/146 1485/1756/146 +f 1483/1757/149 1488/1758/149 1486/1759/149 +f 1483/1757/145 1482/1760/145 1481/1752/145 +f 672/1761/146 671/1762/146 1492/1763/146 +f 1491/1764/149 1489/1765/149 670/1766/149 +f 1490/1767/145 1491/1768/145 1492/1769/145 +f 1493/1770/143 1491/1771/143 1494/1772/143 +f 1496/1773/144 1490/1767/144 1495/1774/144 +f 668/1775/145 1494/1772/145 667/1776/145 +f 665/1777/145 1495/1774/145 666/1778/145 +f 1500/1779/149 1504/1780/149 1502/1781/149 +f 1498/1782/146 1501/1783/146 1503/1784/146 +f 1499/1785/143 1503/1784/143 1504/1786/143 +f 1497/1787/144 1502/1781/144 1501/1783/144 +f 1532/1788/144 1533/1789/144 1534/1790/144 +f 1512/1791/143 1510/1792/143 1508/1793/143 +f 1545/1794/143 1547/1795/143 1549/1796/143 +f 1541/1797/144 1540/1798/144 1539/1799/144 +f 1560/1800/144 1555/1801/144 1556/1802/144 +f 1558/1803/143 1554/1804/143 1553/1805/143 +f 1559/1806/146 1556/1802/146 1554/1804/146 +f 1557/1807/149 1553/1808/149 1555/1801/149 +f 1044/1483/150 1047/1543/150 1042/1478/150 +f 1041/1480/151 1046/1516/151 1043/1809/151 +f 1047/1543/150 1045/1482/150 1096/1810/150 +f 1086/1491/144 1084/1495/144 1085/1487/144 +f 1581/1811/149 1577/1812/149 1579/1813/149 +f 1583/1814/163 1578/1815/163 1577/1816/163 +f 1582/1817/164 1579/1813/164 1580/1818/164 +f 1584/1819/146 1580/1818/146 1578/1815/146 +f 1594/1820/143 1600/1821/143 1596/1822/143 +f 1591/1823/146 1589/1824/146 1590/1825/146 +f 1587/1826/144 1592/1827/144 1588/1828/144 +f 1586/1829/143 1590/1830/143 1585/1831/143 +f 1588/1828/145 1591/1832/145 1586/1829/145 +f 1585/1833/158 1589/1824/158 1587/1826/158 +f 1596/1834/143 1599/1835/143 1595/1836/143 +f 1595/1837/143 1597/1838/143 1593/1839/143 +f 1593/1840/143 1598/1841/143 1594/1842/143 +f 1608/1843/144 1603/1844/144 1604/1845/144 +f 1605/1846/144 1604/1847/144 1601/1848/144 +f 1606/1849/144 1601/1850/144 1602/1851/144 +f 1607/1852/144 1602/1853/144 1603/1854/144 +f 1596/1855/149 1603/1844/149 1594/1856/149 +f 1593/1857/146 1601/1850/146 1595/1858/146 +f 1600/1821/158 1605/1846/158 1599/1835/158 +f 1597/1859/145 1607/1852/145 1598/1841/145 +f 1595/1860/145 1604/1847/145 1596/1861/145 +f 1594/1862/158 1602/1853/158 1593/1863/158 +f 1598/1841/146 1608/1843/146 1600/1821/146 +f 1599/1835/149 1606/1849/149 1597/1838/149 +f 1612/1864/144 1615/1865/144 1611/1866/144 +f 1609/1867/143 1614/1868/143 1610/1869/143 +f 1610/1870/145 1616/1871/145 1612/1872/145 +f 1611/1873/158 1613/1874/158 1609/1875/158 +f 1614/1876/146 1620/1877/146 1616/1871/146 +f 1615/1878/146 1617/1879/146 1613/1874/146 +f 1616/1880/146 1619/1881/146 1615/1865/146 +f 1613/1882/146 1618/1883/146 1614/1868/146 +f 1618/1884/145 1624/1885/145 1620/1877/145 +f 1619/1881/158 1621/1886/158 1617/1879/158 +f 1620/1877/144 1623/1887/144 1619/1881/144 +f 1617/1879/143 1622/1888/143 1618/1883/143 +f 1631/1889/165 1654/1890/165 1655/1891/165 +f 1629/1892/165 1652/1893/165 1653/1894/165 +f 1627/1895/165 1650/1896/165 1651/1897/165 +f 1631/1889/165 1656/1898/165 1632/1899/165 +f 1629/1892/165 1654/1900/165 1630/1901/165 +f 1627/1895/165 1652/1902/165 1628/1903/165 +f 1625/1904/165 1650/1905/165 1626/1906/165 +f 1625/1907/165 1656/1908/165 1649/1909/165 +f 1671/1910/165 1694/1911/165 1695/1912/165 +f 1669/1913/165 1692/1914/165 1693/1915/165 +f 1667/1916/165 1690/1917/165 1691/1918/165 +f 1671/1910/165 1696/1919/165 1672/1920/165 +f 1669/1913/165 1694/1921/165 1670/1922/165 +f 1667/1916/165 1692/1923/165 1668/1924/165 +f 1665/1925/165 1690/1926/165 1666/1927/165 +f 1665/1928/165 1696/1929/165 1689/1930/165 +f 1744/1931/165 1713/1932/165 1720/1933/165 +f 1744/1934/165 1719/1935/165 1743/1936/165 +f 1742/1937/165 1717/1938/165 1741/1939/165 +f 1740/1940/165 1715/1941/165 1739/1942/165 +f 1737/1943/165 1714/1944/165 1713/1945/165 +f 1742/1937/165 1719/1946/165 1718/1947/165 +f 1740/1940/165 1717/1948/165 1716/1949/165 +f 1739/1942/165 1714/1950/165 1738/1951/165 +f 1784/1952/165 1753/1953/165 1760/1954/165 +f 1784/1955/165 1759/1956/165 1783/1957/165 +f 1782/1958/165 1757/1959/165 1781/1960/165 +f 1780/1961/165 1755/1962/165 1779/1963/165 +f 1778/1964/165 1753/1965/165 1777/1966/165 +f 1782/1958/165 1759/1967/165 1758/1968/165 +f 1780/1961/165 1757/1969/165 1756/1970/165 +f 1778/1964/165 1755/1971/165 1754/1972/165 +f 1790/1973/165 1815/1974/165 1791/1975/165 +f 1789/1976/165 1812/1977/165 1813/1978/165 +f 1787/1979/165 1810/1980/165 1811/1981/165 +f 1792/1982/165 1815/1983/165 1816/1984/165 +f 1789/1976/165 1814/1985/165 1790/1973/165 +f 1787/1979/165 1812/1986/165 1788/1987/165 +f 1785/1988/165 1810/1989/165 1786/1990/165 +f 1785/1991/165 1816/1992/165 1809/1993/165 +f 671/1237/143 675/1994/143 674/1238/143 +f 667/1240/144 669/1245/144 672/1241/144 +f 666/1243/143 671/1237/143 670/1239/143 +f 669/1245/144 673/1995/144 676/1246/144 +f 663/1247/143 687/1278/143 688/1248/143 +f 688/1248/143 677/1252/143 653/1250/143 +f 677/1252/143 678/1255/143 654/1253/143 +f 678/1255/143 679/1996/143 655/1256/143 +f 655/1258/143 679/1996/143 680/1259/143 +f 680/1259/143 681/1263/143 657/1261/143 +f 681/1263/143 682/1265/143 658/1264/143 +f 682/1265/143 683/1997/143 659/1266/143 +f 683/1268/143 684/1998/143 660/1269/143 +f 660/1271/143 684/1998/143 685/1272/143 +f 661/1274/143 685/1272/143 686/1275/143 +f 662/1277/143 686/1275/143 687/1278/143 +f 708/1281/144 715/1999/144 716/1282/144 +f 716/1282/144 713/1283/144 705/1280/144 +f 713/1283/144 714/2000/144 705/1280/144 +f 713/1283/145 716/1282/145 711/1284/145 +f 715/1286/146 708/2001/146 707/1287/146 +f 710/1285/147 709/1290/147 714/1289/147 +f 716/1282/148 715/1286/148 712/1288/148 +f 709/1290/149 706/2002/149 705/1291/149 +f 755/1292/143 756/1306/143 768/1293/143 +f 753/1295/143 765/2003/143 764/1296/143 +f 760/1298/143 772/2004/143 771/1299/143 +f 750/1301/143 762/2005/143 761/1302/143 +f 757/1304/143 769/2006/143 768/1305/143 +f 754/1307/143 766/2007/143 765/1308/143 +f 760/1298/143 749/1303/143 761/1309/143 +f 751/1311/143 763/2008/143 762/1312/143 +f 757/1304/143 758/1318/143 770/1313/143 +f 755/1315/143 767/2009/143 766/1316/143 +f 752/1297/143 764/2010/143 763/1317/143 +f 758/1318/143 759/1300/143 771/1319/143 +f 773/1323/143 774/2011/143 777/1321/143 +f 774/2011/143 775/2012/143 777/1321/143 +f 775/2012/143 776/2013/143 777/1321/143 +f 777/1321/143 778/2014/143 779/2015/143 +f 779/2015/143 780/2016/143 781/1322/143 +f 781/1322/143 782/2017/143 783/2018/143 +f 783/2018/143 784/2019/143 773/1323/143 +f 777/1321/143 779/2015/143 781/1322/143 +f 781/1322/143 783/2018/143 773/1323/143 +f 794/1324/144 795/2020/144 699/1325/144 +f 699/1325/144 795/2021/144 796/1327/144 +f 700/1328/144 796/2022/144 785/1329/144 +f 785/1331/144 786/2023/144 690/1332/144 +f 786/1333/144 787/2024/144 691/1334/144 +f 691/1334/144 787/2025/144 788/1335/144 +f 788/1337/144 789/2026/144 693/1338/144 +f 789/1339/144 790/2027/144 694/1340/144 +f 694/1340/144 790/2028/144 791/1341/144 +f 695/1343/144 791/2029/144 792/1344/144 +f 792/1346/144 793/2030/144 697/1347/144 +f 793/1348/144 794/2031/144 698/1326/144 +f 819/1349/143 820/1352/143 808/1350/143 +f 820/1352/143 809/2032/143 797/1353/143 +f 797/1355/143 809/2032/143 810/1356/143 +f 810/1356/143 811/1360/143 799/1358/143 +f 811/1360/143 812/2033/143 800/1361/143 +f 800/1363/143 812/2033/143 813/1364/143 +f 813/1364/143 814/1368/143 802/1366/143 +f 814/1368/143 815/2034/143 803/1369/143 +f 815/1371/143 816/2035/143 804/1372/143 +f 804/1374/143 816/2035/143 817/1375/143 +f 805/1377/143 817/1375/143 818/1378/143 +f 806/1380/143 818/1378/143 819/1349/143 +f 843/1382/143 844/1385/143 880/1383/143 +f 844/1385/143 833/1390/143 869/1386/143 +f 834/1388/143 870/2036/143 869/1389/143 +f 834/1388/143 835/1393/143 871/1391/143 +f 835/1393/143 836/1398/143 872/1394/143 +f 837/1396/143 873/2037/143 872/1397/143 +f 837/1396/143 838/1401/143 874/1399/143 +f 838/1401/143 839/2038/143 875/1402/143 +f 839/1404/143 840/1409/143 876/1405/143 +f 841/1407/143 877/2039/143 876/1408/143 +f 842/1410/143 878/2040/143 877/1411/143 +f 843/1382/143 879/2041/143 878/1412/143 +f 831/1413/144 867/2042/144 868/1414/144 +f 832/1415/144 868/2043/144 857/1416/144 +f 857/1418/144 858/2044/144 822/1419/144 +f 822/1419/144 858/2045/144 859/1420/144 +f 823/1421/144 859/2046/144 860/1422/144 +f 860/1424/144 861/2047/144 825/1425/144 +f 861/1426/144 862/2048/144 826/1427/144 +f 826/1427/144 862/2049/144 863/1428/144 +f 827/1430/144 863/2050/144 864/1431/144 +f 864/1433/144 865/2051/144 829/1434/144 +f 865/1435/144 866/2052/144 830/1436/144 +f 866/1437/144 867/2053/144 831/1413/144 +f 895/1440/144 894/2054/144 903/2055/144 +f 894/2054/144 893/2056/144 903/2055/144 +f 893/2056/144 904/2057/144 903/2055/144 +f 903/2055/144 902/2058/144 901/1438/144 +f 901/1438/144 900/2059/144 899/1439/144 +f 899/1439/144 898/2060/144 895/1440/144 +f 898/2060/144 897/2061/144 895/1440/144 +f 897/2061/144 896/2062/144 895/1440/144 +f 903/2055/144 901/1438/144 895/1440/144 +f 890/1441/144 891/2063/144 855/1442/144 +f 855/1442/144 891/2064/144 892/1444/144 +f 856/1445/144 892/2065/144 881/1446/144 +f 881/1448/144 882/2066/144 846/1449/144 +f 846/1449/144 882/2067/144 883/1450/144 +f 847/1451/144 883/2068/144 884/1452/144 +f 884/1454/144 885/2069/144 849/1455/144 +f 885/1456/144 886/2070/144 850/1457/144 +f 850/1457/144 886/2071/144 887/1458/144 +f 851/1460/144 887/2072/144 888/1461/144 +f 888/1463/144 889/2073/144 853/1464/144 +f 889/1465/144 890/2074/144 854/1443/144 +f 1037/1466/145 1040/1470/145 1039/1467/145 +f 1034/1469/146 1039/1467/146 1040/1470/146 +f 1035/1472/149 1037/1466/149 1038/1468/149 +f 1036/1474/144 1040/1470/144 1037/1466/144 +f 1033/1476/143 1038/1468/143 1039/1467/143 +f 1042/1478/143 1047/1543/143 1048/1479/143 +f 1043/1481/144 1046/2075/144 1045/1482/144 +f 1087/1484/143 1082/1488/143 1081/1485/143 +f 1085/1487/150 1084/1495/150 1082/1488/150 +f 1088/1489/151 1081/1492/151 1083/1490/151 +f 1083/1490/152 1091/1529/152 1090/1494/152 +f 1055/1496/146 1049/1515/146 1052/1497/146 +f 1050/1499/149 1077/1511/149 1079/1500/149 +f 1054/1502/149 1051/1505/149 1050/1499/149 +f 1053/1504/144 1052/1497/144 1051/1505/144 +f 1073/1507/146 1078/1514/146 1080/1508/146 +f 1076/1510/149 1079/2076/149 1077/1511/149 +f 1055/1513/146 1080/2077/146 1078/1514/146 +f 1082/1519/150 1090/1494/150 1096/1520/150 +f 1081/1522/153 1082/1519/153 1045/1521/153 +f 1105/1524/154 1106/1557/154 1089/1525/154 +f 1089/1525/153 1094/1542/153 1093/1527/153 +f 1093/1527/150 1104/1531/150 1107/1528/150 +f 1096/1520/155 1090/1494/155 1091/1529/155 +f 1104/1531/155 1103/2078/155 1108/1532/155 +f 1091/1529/151 1081/2079/151 1046/1533/151 +f 1103/1534/151 1094/1542/151 1089/1525/151 +f 1102/1541/156 1093/1527/156 1094/1542/156 +f 1047/1543/157 1096/1520/157 1095/1530/157 +f 1097/1546/150 1104/1544/150 1102/1541/150 +f 1100/1548/151 1101/1537/151 1103/1536/151 +f 1098/1550/143 1103/2080/143 1104/1544/143 +f 1110/1551/144 1107/1539/144 1108/1552/144 +f 1111/1554/143 1106/1557/143 1105/1524/143 +f 1109/1556/151 1108/1558/151 1106/1557/151 +f 1112/1555/150 1105/1524/150 1107/1539/150 +f 1099/1547/144 1102/1541/144 1101/1537/144 +f 1121/1562/147 1122/2081/147 1125/1560/147 +f 1122/2081/147 1123/2082/147 1125/1560/147 +f 1123/2082/147 1124/2083/147 1125/1560/147 +f 1125/1560/147 1126/2084/147 1127/1561/147 +f 1127/1561/147 1128/2085/147 1121/1562/147 +f 1137/1565/148 1138/2086/148 1139/2087/148 +f 1139/2087/148 1140/2088/148 1137/1565/148 +f 1140/2088/148 1141/1563/148 1137/1565/148 +f 1141/1563/148 1142/2089/148 1143/1564/148 +f 1143/1564/148 1144/2090/148 1137/1565/148 +f 1153/1568/158 1154/2091/158 1155/2092/158 +f 1155/2092/158 1156/2093/158 1153/1568/158 +f 1156/2093/158 1157/1566/158 1153/1568/158 +f 1157/1566/158 1158/2094/158 1159/1567/158 +f 1159/1567/158 1160/2095/158 1153/1568/158 +f 1168/1571/159 1167/2096/159 1166/2097/159 +f 1166/2097/159 1165/2098/159 1168/1571/159 +f 1165/2098/159 1164/1569/159 1168/1571/159 +f 1164/1569/159 1163/2099/159 1162/1570/159 +f 1162/1570/159 1161/2100/159 1168/1571/159 +f 1184/1574/160 1183/2101/160 1182/2102/160 +f 1182/2102/160 1181/2103/160 1184/1574/160 +f 1181/2103/160 1180/1572/160 1184/1574/160 +f 1180/1572/160 1179/2104/160 1178/1573/160 +f 1178/1573/160 1177/2105/160 1184/1574/160 +f 1201/1577/149 1202/2106/149 1205/1575/149 +f 1202/2106/149 1203/2107/149 1205/1575/149 +f 1203/2107/149 1204/2108/149 1205/1575/149 +f 1205/1575/149 1206/2109/149 1207/1576/149 +f 1207/1576/149 1208/2110/149 1201/1577/149 +f 1216/1580/146 1215/2111/146 1214/2112/146 +f 1214/2112/146 1213/2113/146 1216/1580/146 +f 1213/2113/146 1212/1578/146 1216/1580/146 +f 1212/1578/146 1211/2114/146 1210/1579/146 +f 1210/1579/146 1209/2115/146 1216/1580/146 +f 1232/1583/145 1231/2116/145 1230/2117/145 +f 1230/2117/145 1229/2118/145 1232/1583/145 +f 1229/2118/145 1228/1581/145 1232/1583/145 +f 1228/1581/145 1227/2119/145 1226/1582/145 +f 1226/1582/145 1225/2120/145 1232/1583/145 +f 1273/1584/161 1249/2121/161 1256/1585/161 +f 1280/1587/161 1256/2122/161 1255/1588/161 +f 1278/1590/161 1254/2123/161 1253/1591/161 +f 1275/1593/161 1276/1600/161 1252/1594/161 +f 1274/1596/161 1250/2124/161 1249/1597/161 +f 1278/1590/161 1279/1589/161 1255/1598/161 +f 1276/1600/161 1277/1592/161 1253/1601/161 +f 1274/1596/161 1275/1593/161 1251/1603/161 +f 1287/1605/161 1286/1617/161 1310/1606/161 +f 1285/1608/161 1284/1619/161 1308/1609/161 +f 1283/1611/161 1282/1622/161 1306/1612/161 +f 1287/1605/161 1311/2125/161 1312/1614/161 +f 1285/1608/161 1309/2126/161 1310/1616/161 +f 1283/1611/161 1307/2127/161 1308/1618/161 +f 1281/1620/161 1305/2128/161 1306/1621/161 +f 1281/1623/161 1288/1615/161 1312/1624/161 +f 1326/1626/161 1350/2129/161 1351/1627/161 +f 1325/1629/161 1324/1640/161 1348/1630/161 +f 1323/1632/161 1322/1643/161 1346/1633/161 +f 1327/1628/161 1351/2130/161 1352/1635/161 +f 1326/1626/161 1325/1629/161 1349/1637/161 +f 1323/1632/161 1347/2131/161 1348/1639/161 +f 1321/1641/161 1345/2132/161 1346/1642/161 +f 1328/1636/161 1352/2133/161 1345/1644/161 +f 1400/1646/161 1393/1660/161 1369/1647/161 +f 1399/1649/161 1400/2134/161 1376/1650/161 +f 1398/1652/161 1374/2135/161 1373/1653/161 +f 1396/1655/161 1372/2136/161 1371/1656/161 +f 1394/1658/161 1370/2137/161 1369/1659/161 +f 1398/1652/161 1399/1649/161 1375/1661/161 +f 1396/1655/161 1397/1654/161 1373/1663/161 +f 1395/1657/161 1371/2138/161 1370/1665/161 +f 1440/1666/161 1433/1680/161 1409/1667/161 +f 1440/1669/161 1416/2139/161 1415/1670/161 +f 1438/1672/161 1414/2140/161 1413/1673/161 +f 1436/1675/161 1412/2141/161 1411/1676/161 +f 1434/1678/161 1410/2142/161 1409/1679/161 +f 1438/1672/161 1439/1671/161 1415/1681/161 +f 1436/1675/161 1437/1674/161 1413/1683/161 +f 1434/1678/161 1435/1677/161 1411/1685/161 +f 1447/1687/149 1457/2143/149 1462/1688/149 +f 1459/1690/144 1467/2144/144 1468/1691/144 +f 1443/1693/144 1447/2145/144 1448/1694/144 +f 1444/1695/146 1448/1694/146 1446/1696/146 +f 1441/1698/149 1445/1713/149 1447/1699/149 +f 1450/1701/143 1454/1705/143 1453/1702/143 +f 1452/1704/146 1456/1715/146 1454/1705/146 +f 1449/1706/149 1453/1720/149 1455/1707/149 +f 1467/1709/149 1477/2146/149 1479/1710/149 +f 1447/1717/145 1453/2147/145 1454/1718/145 +f 1460/1722/146 1448/1719/146 1454/1718/146 +f 1458/1692/146 1468/1691/146 1466/1724/146 +f 1464/1726/149 1465/1738/149 1467/1727/149 +f 1470/1729/143 1474/1733/143 1473/1730/143 +f 1472/1732/146 1476/1740/146 1474/1733/146 +f 1469/1734/149 1473/1745/149 1475/1735/149 +f 1467/1742/145 1473/2148/145 1474/1743/145 +f 1478/1747/146 1468/1744/146 1474/1743/146 +f 1484/1749/144 1483/1757/144 1486/1750/144 +f 1481/1752/162 1482/1760/162 1487/1753/162 +f 1487/1755/146 1482/1760/146 1484/1749/146 +f 1483/1757/149 1481/1752/149 1488/1758/149 +f 1483/1757/145 1484/1749/145 1482/1760/145 +f 671/1762/146 666/1778/146 1490/2149/146 +f 666/1778/146 1495/1774/146 1490/2149/146 +f 1493/2150/146 668/2151/146 1492/1763/146 +f 668/2151/146 672/1761/146 1492/1763/146 +f 671/1762/146 1490/2149/146 1492/1763/146 +f 669/2152/149 667/1776/149 1491/1764/149 +f 667/1776/149 1494/1772/149 1491/1764/149 +f 1496/2153/149 665/2154/149 1489/1765/149 +f 665/2154/149 670/1766/149 1489/1765/149 +f 669/2152/149 1491/1764/149 670/1766/149 +f 1490/1767/145 1489/2155/145 1491/1768/145 +f 1493/1770/143 1492/2156/143 1491/1771/143 +f 1496/1773/144 1489/2155/144 1490/1767/144 +f 668/1775/145 1493/1770/145 1494/1772/145 +f 665/1777/145 1496/1773/145 1495/1774/145 +f 1500/1779/149 1499/2157/149 1504/1780/149 +f 1498/1782/146 1497/1787/146 1501/1783/146 +f 1499/1785/143 1498/1782/143 1503/1784/143 +f 1497/1787/144 1500/1779/144 1502/1781/144 +f 1534/1790/144 1535/2158/144 1536/2159/144 +f 1536/2159/144 1529/2160/144 1534/1790/144 +f 1529/2160/144 1530/2161/144 1534/1790/144 +f 1530/2161/144 1531/2162/144 1534/1790/144 +f 1531/2162/144 1532/1788/144 1534/1790/144 +f 1512/1791/143 1511/2163/143 1510/1792/143 +f 1510/1792/143 1509/2164/143 1508/1793/143 +f 1508/1793/143 1507/2165/143 1506/2166/143 +f 1506/2166/143 1505/2167/143 1508/1793/143 +f 1505/2167/143 1512/1791/143 1508/1793/143 +f 1545/1794/143 1546/2168/143 1547/1795/143 +f 1547/1795/143 1548/2169/143 1549/1796/143 +f 1549/1796/143 1550/2170/143 1551/2171/143 +f 1551/2171/143 1552/2172/143 1549/1796/143 +f 1552/2172/143 1545/1794/143 1549/1796/143 +f 1539/1799/144 1538/2173/144 1537/2174/144 +f 1537/2174/144 1544/2175/144 1539/1799/144 +f 1544/2175/144 1543/2176/144 1539/1799/144 +f 1543/2176/144 1542/2177/144 1539/1799/144 +f 1542/2177/144 1541/1797/144 1539/1799/144 +f 1560/1800/144 1557/1807/144 1555/1801/144 +f 1558/1803/143 1559/1806/143 1554/1804/143 +f 1559/1806/146 1560/1800/146 1556/1802/146 +f 1557/1807/149 1558/2178/149 1553/1808/149 +f 1044/1483/150 1045/1482/150 1047/1543/150 +f 1041/1480/151 1048/1479/151 1046/1516/151 +f 1086/1491/144 1083/1490/144 1084/1495/144 +f 1581/1811/149 1583/2179/149 1577/1812/149 +f 1583/1814/163 1584/1819/163 1578/1815/163 +f 1582/1817/164 1581/1811/164 1579/1813/164 +f 1584/1819/146 1582/1817/146 1580/1818/146 +f 1594/1820/143 1598/1841/143 1600/1821/143 +f 1591/1823/146 1592/2180/146 1589/1824/146 +f 1587/1826/144 1589/1824/144 1592/1827/144 +f 1586/1829/143 1591/1832/143 1590/1830/143 +f 1588/1828/145 1592/1827/145 1591/1832/145 +f 1585/1833/158 1590/1825/158 1589/1824/158 +f 1596/1834/143 1600/1821/143 1599/1835/143 +f 1595/1837/143 1599/1835/143 1597/1838/143 +f 1593/1840/143 1597/1859/143 1598/1841/143 +f 1608/1843/144 1607/1852/144 1603/1844/144 +f 1605/1846/144 1608/1843/144 1604/1847/144 +f 1606/1849/144 1605/1846/144 1601/1850/144 +f 1607/1852/144 1606/2181/144 1602/1853/144 +f 1596/1855/149 1604/1845/149 1603/1844/149 +f 1593/1857/146 1602/1851/146 1601/1850/146 +f 1600/1821/158 1608/1843/158 1605/1846/158 +f 1597/1859/145 1606/2181/145 1607/1852/145 +f 1595/1860/145 1601/1848/145 1604/1847/145 +f 1594/1862/158 1603/1854/158 1602/1853/158 +f 1598/1841/146 1607/1852/146 1608/1843/146 +f 1599/1835/149 1605/1846/149 1606/1849/149 +f 1612/1864/144 1616/1880/144 1615/1865/144 +f 1609/1867/143 1613/1882/143 1614/1868/143 +f 1610/1870/145 1614/1876/145 1616/1871/145 +f 1611/1873/158 1615/1878/158 1613/1874/158 +f 1614/1876/146 1618/1884/146 1620/1877/146 +f 1615/1878/146 1619/1881/146 1617/1879/146 +f 1616/1880/146 1620/1877/146 1619/1881/146 +f 1613/1882/146 1617/1879/146 1618/1883/146 +f 1618/1884/145 1622/2182/145 1624/1885/145 +f 1619/1881/158 1623/1887/158 1621/1886/158 +f 1620/1877/144 1624/1885/144 1623/1887/144 +f 1617/1879/143 1621/1886/143 1622/1888/143 +f 1631/1889/165 1630/1901/165 1654/1890/165 +f 1629/1892/165 1628/1903/165 1652/1893/165 +f 1627/1895/165 1626/1906/165 1650/1896/165 +f 1631/1889/165 1655/2183/165 1656/1898/165 +f 1629/1892/165 1653/2184/165 1654/1900/165 +f 1627/1895/165 1651/2185/165 1652/1902/165 +f 1625/1904/165 1649/2186/165 1650/1905/165 +f 1625/1907/165 1632/1899/165 1656/1908/165 +f 1671/1910/165 1670/1922/165 1694/1911/165 +f 1669/1913/165 1668/1924/165 1692/1914/165 +f 1667/1916/165 1666/1927/165 1690/1917/165 +f 1671/1910/165 1695/2187/165 1696/1919/165 +f 1669/1913/165 1693/2188/165 1694/1921/165 +f 1667/1916/165 1691/2189/165 1692/1923/165 +f 1665/1925/165 1689/2190/165 1690/1926/165 +f 1665/1928/165 1672/1920/165 1696/1929/165 +f 1744/1931/165 1737/1943/165 1713/1932/165 +f 1744/1934/165 1720/2191/165 1719/1935/165 +f 1742/1937/165 1718/2192/165 1717/1938/165 +f 1740/1940/165 1716/2193/165 1715/1941/165 +f 1737/1943/165 1738/1951/165 1714/1944/165 +f 1742/1937/165 1743/1936/165 1719/1946/165 +f 1740/1940/165 1741/1939/165 1717/1948/165 +f 1739/1942/165 1715/2194/165 1714/1950/165 +f 1784/1952/165 1777/1966/165 1753/1953/165 +f 1784/1955/165 1760/2195/165 1759/1956/165 +f 1782/1958/165 1758/2196/165 1757/1959/165 +f 1780/1961/165 1756/2197/165 1755/1962/165 +f 1778/1964/165 1754/2198/165 1753/1965/165 +f 1782/1958/165 1783/1957/165 1759/1967/165 +f 1780/1961/165 1781/1960/165 1757/1969/165 +f 1778/1964/165 1779/1963/165 1755/1971/165 +f 1790/1973/165 1814/2199/165 1815/1974/165 +f 1789/1976/165 1788/1987/165 1812/1977/165 +f 1787/1979/165 1786/1990/165 1810/1980/165 +f 1792/1982/165 1791/1975/165 1815/1983/165 +f 1789/1976/165 1813/2200/165 1814/1985/165 +f 1787/1979/165 1811/2201/165 1812/1986/165 +f 1785/1988/165 1809/2202/165 1810/1989/165 +f 1785/1991/165 1792/1982/165 1816/1992/165 +s 1 +f 658/2203/161 647/2204/145 646/2205/161 +f 655/2206/166 644/2207/149 643/2208/166 +f 662/2209/146 651/2210/167 650/2211/146 +f 659/2212/145 648/2213/165 647/2214/145 +f 656/2215/149 645/2216/168 644/2207/149 +f 663/2217/167 652/2218/169 651/2210/167 +f 653/2219/158 642/2220/170 641/2221/158 +f 660/2222/165 649/2223/171 648/2213/165 +f 657/2224/168 646/2205/161 645/2216/168 +f 664/2225/169 641/2221/158 652/2218/169 +f 654/2226/170 643/2208/166 642/2220/170 +f 661/2227/171 650/2211/146 649/2223/171 +f 675/1994/172 673/1995/173 674/1238/173 +f 672/1761/174 675/1994/172 671/1762/174 +f 670/1766/175 673/1995/173 669/2152/175 +f 679/1996/166 692/1336/149 680/1259/149 +f 686/1275/146 699/1325/167 687/1278/167 +f 683/1268/145 696/1345/165 684/1998/165 +f 680/1259/149 693/1338/168 681/1263/168 +f 687/1278/167 700/1328/169 688/1248/169 +f 677/1252/158 690/1332/170 678/1255/170 +f 684/1998/165 697/1347/171 685/1272/171 +f 681/1263/168 694/1340/161 682/1265/161 +f 688/1248/169 689/1330/158 677/1252/158 +f 678/1255/170 691/1334/166 679/1996/166 +f 685/1272/171 698/1326/146 686/1275/146 +f 682/1265/161 695/1342/145 683/1997/145 +f 724/2228/169 735/2229/167 723/2230/167 +f 720/2231/165 731/2232/145 719/2233/145 +f 722/2234/146 733/2235/171 721/2236/171 +f 704/2237/158 736/2238/169 724/2239/169 +f 701/2240/149 726/2241/166 702/2242/166 +f 721/2243/171 732/2244/165 720/2245/165 +f 702/2246/166 727/2247/170 703/2248/170 +f 703/2249/170 728/2250/158 704/2251/158 +f 719/2252/145 730/2253/161 718/2254/161 +f 723/2255/167 734/2256/146 722/2257/146 +f 718/2258/161 729/2259/168 717/2260/168 +f 717/2261/168 725/2262/149 701/2263/149 +f 735/2229/176 748/2264/177 747/2265/176 +f 728/2266/178 748/2264/177 736/2238/177 +f 727/2267/179 737/2268/178 728/2250/178 +f 726/2269/180 738/2270/179 727/2247/179 +f 725/2271/181 739/2272/180 726/2241/180 +f 729/2273/182 740/2274/181 725/2262/181 +f 729/2259/182 742/2275/183 741/2276/182 +f 731/2277/184 742/2275/183 730/2253/183 +f 732/2278/185 743/2279/184 731/2232/184 +f 732/2244/185 745/2280/186 744/2281/185 +f 734/2282/187 745/2280/186 733/2235/186 +f 735/2283/176 746/2284/187 734/2256/187 +f 741/2276/168 752/1297/149 740/2274/149 +f 748/2264/169 759/1300/167 747/2265/167 +f 738/2270/170 749/1303/158 737/2268/158 +f 745/2280/171 756/1306/165 744/2281/165 +f 742/2275/161 753/1295/168 741/2276/168 +f 737/2268/158 760/1298/169 748/2264/169 +f 739/2272/166 750/1301/170 738/2270/170 +f 746/2284/146 757/1304/171 745/2280/171 +f 743/2285/145 754/1307/161 742/2275/161 +f 740/2274/149 751/1311/166 739/2272/166 +f 747/2265/167 758/1318/146 746/2284/146 +f 744/2281/165 755/1292/145 743/2279/145 +f 771/1299/188 784/2286/189 783/2287/188 +f 761/1309/190 784/2288/189 772/1310/189 +f 762/2005/191 773/2289/190 761/1302/190 +f 763/2008/192 774/2290/191 762/1312/191 +f 764/2010/193 775/2291/192 763/1317/192 +f 765/2003/194 776/2292/193 764/1296/193 +f 765/1308/194 778/2293/195 777/2294/194 +f 767/2009/196 778/2295/195 766/1316/195 +f 768/1293/197 779/2296/196 767/1294/196 +f 769/2006/198 780/2297/197 768/1305/197 +f 770/1313/199 781/2298/198 769/1314/198 +f 770/1320/199 783/2299/188 782/2300/199 +f 787/2301/166 800/2302/149 788/2303/149 +f 794/2304/146 807/2305/167 795/2306/167 +f 791/2307/145 804/2308/165 792/2309/165 +f 788/2303/149 801/2310/168 789/2311/168 +f 795/2306/167 808/2312/169 796/2313/169 +f 785/2314/158 798/2315/170 786/2316/170 +f 792/2309/165 805/2317/171 793/2318/171 +f 789/2311/168 802/2319/161 790/2320/161 +f 796/2313/169 797/2321/158 785/2314/158 +f 786/2316/170 799/2322/166 787/2301/166 +f 793/2318/171 806/2323/146 794/2304/146 +f 790/2320/161 803/2324/145 791/2325/145 +f 814/1368/161 827/1429/145 815/2034/145 +f 811/1360/166 824/1423/149 812/2033/149 +f 818/1378/146 831/1413/167 819/1349/167 +f 815/1371/145 828/1432/165 816/2035/165 +f 812/2033/149 825/1425/168 813/1364/168 +f 819/1349/167 832/1415/169 820/1352/169 +f 809/2032/158 822/1419/170 810/1356/170 +f 816/2035/165 829/1434/171 817/1375/171 +f 813/1364/168 826/1427/161 814/1368/161 +f 820/1352/169 821/1417/158 809/2032/158 +f 810/1356/170 823/1421/166 811/1360/166 +f 817/1375/171 830/1436/146 818/1378/146 +f 838/1401/161 851/1459/145 839/2038/145 +f 835/1393/166 848/1453/149 836/1398/149 +f 842/1410/146 855/1442/167 843/1382/167 +f 839/1404/145 852/1462/165 840/1409/165 +f 836/1398/149 849/1455/168 837/1396/168 +f 843/1382/167 856/1445/169 844/1385/169 +f 833/1390/158 846/1449/170 834/1388/170 +f 840/1409/165 853/1464/171 841/1407/171 +f 837/1396/168 850/1457/161 838/1401/161 +f 844/1385/169 845/1447/158 833/1390/158 +f 834/1388/170 847/1451/166 835/1393/166 +f 841/1407/171 854/1443/146 842/1410/146 +f 875/2326/145 864/2327/165 863/2328/145 +f 872/2329/149 861/2330/168 860/2331/149 +f 879/2332/167 868/2333/169 867/2334/167 +f 869/2335/158 858/2336/170 857/2337/158 +f 876/2338/165 865/2339/171 864/2327/165 +f 873/2340/168 862/2341/161 861/2330/168 +f 880/2342/169 857/2337/158 868/2333/169 +f 870/2343/170 859/2344/166 858/2336/170 +f 877/2345/171 866/2346/146 865/2339/171 +f 874/2347/161 863/2348/145 862/2341/161 +f 871/2349/166 860/2331/149 859/2344/166 +f 878/2350/146 867/2334/167 866/2346/146 +f 899/2351/145 888/2352/165 887/2353/145 +f 896/2354/149 885/2355/168 884/2356/149 +f 903/2357/167 892/2358/169 891/2359/167 +f 893/2360/158 882/2361/170 881/2362/158 +f 900/2363/165 889/2364/171 888/2352/165 +f 897/2365/168 886/2366/161 885/2355/168 +f 904/2367/169 881/2362/158 892/2358/169 +f 894/2368/170 883/2369/166 882/2361/170 +f 901/2370/171 890/2371/146 889/2364/171 +f 898/2372/161 887/2373/145 886/2366/161 +f 895/2374/166 884/2356/149 883/2369/166 +f 902/2375/146 891/2359/167 890/2371/146 +f 962/2376/146 963/2377/148 961/2378/146 +f 940/2379/146 941/2380/148 939/2381/146 +f 908/2382/158 909/2383/160 907/2384/158 +f 948/2385/149 949/2386/159 947/2387/149 +f 936/2388/148 906/2389/145 935/2390/148 +f 910/2391/160 911/2392/146 909/2383/160 +f 964/2393/148 965/2394/145 963/2377/148 +f 934/2395/146 935/2390/148 933/2396/146 +f 912/2397/146 913/2398/148 911/2392/146 +f 944/2399/145 945/2400/147 943/2401/145 +f 932/2402/160 933/2403/146 931/2404/160 +f 914/2405/148 915/2406/145 913/2398/148 +f 966/2407/145 967/2408/147 965/2409/145 +f 929/2410/158 932/2402/160 931/2404/160 +f 916/2411/145 917/2412/147 915/2406/145 +f 942/2413/148 943/2401/145 941/2380/148 +f 928/2414/159 929/2410/158 927/2415/159 +f 918/2416/147 919/2417/149 917/2412/147 +f 924/2418/147 925/2419/149 923/2420/147 +f 926/2421/149 927/2415/159 925/2419/149 +f 920/2422/149 921/2423/159 919/2424/149 +f 946/2425/147 947/2387/149 945/2400/147 +f 968/2426/147 938/2427/149 967/2408/147 +f 921/2423/159 908/2382/158 907/2384/158 +f 905/2428/145 923/2420/147 906/2389/145 +f 960/2429/160 961/2378/146 959/2430/160 +f 950/2431/159 951/2432/158 949/2386/159 +f 956/2433/159 957/2434/158 955/2435/159 +f 958/2436/158 959/2430/160 957/2434/158 +f 952/2437/158 953/2438/160 951/2439/158 +f 954/2440/160 939/2381/146 953/2438/160 +f 937/2441/149 955/2435/159 938/2427/149 +f 1026/2442/148 1027/2443/145 1025/2444/148 +f 1004/2445/148 1005/2446/145 1003/2447/148 +f 972/2448/160 973/2449/146 971/2450/160 +f 1012/2451/159 1013/2452/158 1011/2453/159 +f 1000/2454/145 970/2455/147 999/2456/145 +f 974/2457/146 975/2458/148 973/2449/146 +f 1027/2443/145 1030/2459/147 1029/2460/147 +f 998/2461/148 999/2456/145 997/2462/148 +f 976/2463/148 977/2464/145 975/2458/148 +f 1008/2465/147 1009/2466/149 1007/2467/147 +f 996/2468/146 997/2469/148 995/2470/146 +f 978/2471/145 979/2472/147 977/2464/145 +f 1030/2473/147 1031/2474/149 1029/2475/147 +f 993/2476/160 996/2468/146 995/2470/146 +f 980/2477/147 981/2478/149 979/2472/147 +f 1006/2479/145 1007/2467/147 1005/2446/145 +f 992/2480/158 993/2476/160 991/2481/158 +f 982/2482/149 983/2483/159 981/2478/149 +f 988/2484/149 989/2485/159 987/2486/149 +f 990/2487/159 991/2481/158 989/2485/159 +f 984/2488/159 985/2489/158 983/2490/159 +f 1010/2491/149 1011/2453/159 1009/2466/149 +f 1032/2492/149 1002/2493/159 1031/2474/149 +f 986/2494/158 971/2450/160 985/2489/158 +f 969/2495/147 987/2486/149 970/2455/147 +f 1024/2496/146 1025/2444/148 1023/2497/146 +f 1014/2498/158 1015/2499/160 1013/2452/158 +f 1020/2500/158 1021/2501/160 1019/2502/158 +f 1022/2503/160 1023/2497/146 1021/2501/160 +f 1016/2504/160 1017/2505/146 1015/2506/160 +f 1018/2507/146 1003/2447/148 1017/2505/146 +f 1001/2508/159 1019/2502/158 1002/2493/159 +f 1051/1505/145 1049/1515/200 1050/1499/200 +f 1055/1496/201 1054/2509/158 1056/2510/201 +f 1060/2511/202 1072/2512/203 1063/2513/203 +f 1064/2514/204 1066/2515/205 1061/2516/205 +f 1058/2517/206 1070/2518/207 1059/2519/207 +f 1072/2512/203 1064/2514/204 1063/2513/203 +f 1062/2520/208 1066/2515/205 1065/2521/208 +f 1068/2522/209 1058/2517/206 1057/2523/209 +f 1060/2511/202 1070/2518/207 1069/2524/202 +f 1062/2520/208 1068/2525/209 1057/2526/209 +f 1078/1514/210 1050/1499/200 1049/1515/200 +f 1074/1512/143 1078/1514/210 1073/1507/143 +f 1075/1509/144 1079/2527/211 1076/2528/144 +f 1056/2529/201 1080/2077/211 1055/1513/201 +f 1116/2530/212 1123/2531/148 1115/2532/148 +f 1119/2533/159 1128/2534/213 1127/2535/159 +f 1115/2532/148 1122/2536/214 1114/2537/214 +f 1114/2537/214 1121/2538/144 1113/2539/144 +f 1117/2540/143 1124/2541/212 1116/2530/212 +f 1118/2542/215 1125/2543/143 1117/2540/143 +f 1119/2533/159 1126/2544/215 1118/2542/215 +f 1113/2545/144 1128/2534/213 1120/2546/213 +f 1136/2547/216 1137/2548/144 1144/2549/216 +f 1134/2550/217 1141/2551/143 1133/2552/143 +f 1131/2553/160 1138/2554/218 1130/2555/218 +f 1132/2556/219 1141/2551/143 1140/2557/219 +f 1130/2555/218 1137/2558/144 1129/2559/144 +f 1134/2550/217 1143/2560/147 1142/2561/217 +f 1136/2547/216 1143/2560/147 1135/2562/147 +f 1132/2556/219 1139/2563/160 1131/2553/160 +f 1145/2564/144 1160/2565/220 1152/2566/220 +f 1151/2567/146 1158/2568/221 1150/2569/221 +f 1149/2570/143 1156/2571/222 1148/2572/222 +f 1147/2573/149 1154/2574/223 1146/2575/223 +f 1152/2566/220 1159/2576/146 1151/2567/146 +f 1150/2569/221 1157/2577/143 1149/2570/143 +f 1148/2572/222 1155/2578/149 1147/2573/149 +f 1146/2575/223 1153/2579/144 1145/2580/144 +f 1172/2581/143 1163/2582/219 1164/2583/143 +f 1172/2581/143 1165/2584/217 1173/2585/217 +f 1170/2586/160 1163/2582/219 1171/2587/219 +f 1169/2588/218 1162/2589/160 1170/2586/160 +f 1174/2590/147 1167/2591/216 1175/2592/216 +f 1175/2592/216 1168/2593/144 1176/2594/144 +f 1174/2590/147 1165/2584/217 1166/2595/147 +f 1176/2596/144 1161/2597/218 1169/2588/218 +f 1192/2598/144 1177/2599/214 1185/2600/214 +f 1190/2601/159 1181/2602/215 1182/2603/159 +f 1191/2604/213 1184/2605/144 1192/2606/144 +f 1186/2607/148 1177/2599/214 1178/2608/148 +f 1189/2609/215 1180/2610/143 1181/2602/215 +f 1187/2611/212 1180/2610/143 1188/2612/143 +f 1191/2604/213 1182/2603/159 1183/2613/213 +f 1186/2607/148 1179/2614/212 1187/2611/212 +f 1200/2615/224 1201/2616/144 1208/2617/224 +f 1198/2618/163 1205/2619/143 1197/2620/143 +f 1195/2621/145 1202/2622/164 1194/2623/164 +f 1197/2620/143 1204/2624/225 1196/2625/225 +f 1193/2626/144 1202/2622/164 1201/2627/144 +f 1199/2628/158 1206/2629/163 1198/2618/163 +f 1200/2615/224 1207/2630/158 1199/2628/158 +f 1196/2625/225 1203/2631/145 1195/2621/145 +f 1224/2632/144 1209/2633/164 1217/2634/164 +f 1221/2635/163 1214/2636/158 1222/2637/158 +f 1223/2638/224 1216/2639/144 1224/2640/144 +f 1217/2634/164 1210/2641/145 1218/2642/145 +f 1220/2643/143 1213/2644/163 1221/2635/163 +f 1219/2645/225 1212/2646/143 1220/2643/143 +f 1222/2637/158 1215/2647/224 1223/2638/224 +f 1218/2642/145 1211/2648/225 1219/2645/225 +f 1240/2649/144 1225/2650/223 1233/2651/223 +f 1237/2652/221 1230/2653/146 1238/2654/146 +f 1240/2655/144 1231/2656/220 1232/2657/144 +f 1233/2651/223 1226/2658/149 1234/2659/149 +f 1236/2660/143 1229/2661/221 1237/2652/221 +f 1235/2662/222 1228/2663/143 1236/2660/143 +f 1238/2654/146 1231/2656/220 1239/2664/220 +f 1234/2659/149 1227/2665/222 1235/2662/222 +f 1255/1588/226 1248/2666/144 1247/2667/226 +f 1254/2123/166 1245/2668/227 1253/1591/227 +f 1252/1594/143 1243/2669/228 1251/1595/228 +f 1250/2124/171 1241/2670/229 1249/1597/229 +f 1255/1598/226 1246/2671/166 1254/1599/166 +f 1253/1601/227 1244/2672/143 1252/1602/143 +f 1250/1604/171 1243/2673/228 1242/2674/171 +f 1249/2121/229 1248/2675/144 1256/1585/144 +f 1262/2676/230 1260/2677/231 1258/2678/232 +f 1271/2679/233 1262/2680/230 1263/2681/234 +f 1268/2682/235 1261/2683/236 1269/2684/237 +f 1266/2685/238 1259/2686/239 1267/2687/240 +f 1272/2688/241 1257/2689/242 1265/2690/243 +f 1272/2691/241 1263/2692/234 1264/2693/244 +f 1270/2694/245 1261/2695/236 1262/2696/230 +f 1268/2682/235 1259/2697/239 1260/2698/231 +f 1265/2690/243 1258/2699/232 1266/2685/238 +f 1273/1584/229 1272/2688/241 1265/2690/243 +f 1280/1587/144 1271/2679/233 1272/2691/241 +f 1277/1592/227 1270/2694/245 1278/1590/166 +f 1275/1593/228 1268/2682/235 1276/1600/143 +f 1273/1584/229 1266/2685/238 1274/1596/171 +f 1278/1590/166 1271/2679/233 1279/1589/226 +f 1276/1600/143 1269/2684/237 1277/1592/227 +f 1274/1596/171 1267/2687/240 1275/1593/228 +f 1286/1617/228 1295/2700/238 1294/2701/240 +f 1285/1608/143 1292/2702/237 1284/1619/227 +f 1283/1611/166 1290/2703/233 1282/1622/226 +f 1288/1615/229 1295/2700/238 1287/1605/171 +f 1286/1617/228 1293/2704/235 1285/1608/143 +f 1283/1611/166 1292/2702/237 1291/2705/245 +f 1281/1620/144 1290/2703/233 1289/2706/241 +f 1288/1615/229 1289/2707/241 1296/2708/243 +f 1296/2708/243 1303/2709/232 1295/2700/238 +f 1294/2701/240 1301/2710/231 1293/2704/235 +f 1291/2705/245 1300/2711/236 1299/2712/230 +f 1289/2706/241 1298/2713/234 1297/2714/244 +f 1289/2707/241 1304/2715/242 1296/2708/243 +f 1294/2701/240 1303/2716/232 1302/2717/239 +f 1292/2702/237 1301/2718/231 1300/2719/236 +f 1291/2705/245 1298/2720/234 1290/2703/233 +f 1299/2721/230 1301/2722/231 1303/2723/232 +f 1312/1624/229 1313/2724/144 1305/1625/144 +f 1311/1607/171 1318/2725/228 1319/2726/171 +f 1308/1609/227 1317/2727/143 1309/1610/143 +f 1306/1612/226 1315/2728/166 1307/1613/166 +f 1311/2125/171 1320/2729/229 1312/1614/229 +f 1309/2126/143 1318/2730/228 1310/1616/228 +f 1308/1618/227 1315/2731/166 1316/2732/227 +f 1306/1621/226 1313/2733/144 1314/2734/226 +f 1327/1628/171 1334/2735/240 1326/1626/228 +f 1325/1629/143 1332/2736/237 1324/1640/227 +f 1323/1632/166 1330/2737/233 1322/1643/226 +f 1328/1636/229 1335/2738/238 1327/1628/171 +f 1326/1626/228 1333/2739/235 1325/1629/143 +f 1323/1632/166 1332/2736/237 1331/2740/245 +f 1321/1641/144 1330/2737/233 1329/2741/241 +f 1321/1645/144 1336/2742/243 1328/1636/229 +f 1336/2742/243 1343/2743/232 1335/2738/238 +f 1333/2739/235 1342/2744/239 1341/2745/231 +f 1331/2740/245 1340/2746/236 1339/2747/230 +f 1329/2741/241 1338/2748/234 1337/2749/244 +f 1329/2750/241 1344/2751/242 1336/2742/243 +f 1335/2738/238 1342/2752/239 1334/2735/240 +f 1332/2736/237 1341/2753/231 1340/2754/236 +f 1331/2740/245 1338/2755/234 1330/2737/233 +f 1339/2756/230 1341/2757/231 1343/2758/232 +f 1345/1644/144 1360/2759/229 1353/2760/144 +f 1350/2129/228 1359/2761/171 1351/1627/171 +f 1348/1630/227 1357/2762/143 1349/1631/143 +f 1346/1633/226 1355/2763/166 1347/1634/166 +f 1351/2130/171 1360/2764/229 1352/1635/229 +f 1349/1637/143 1358/2765/228 1350/1638/228 +f 1347/2131/166 1356/2766/227 1348/1639/227 +f 1346/1642/226 1353/2767/144 1354/2768/226 +f 1375/1651/226 1368/2769/144 1367/2770/226 +f 1373/1653/227 1366/2771/166 1365/2772/227 +f 1372/2136/143 1363/2773/228 1371/1656/228 +f 1370/2137/171 1361/2774/229 1369/1659/229 +f 1375/1661/226 1366/2775/166 1374/1662/166 +f 1373/1663/227 1364/2776/143 1372/1664/143 +f 1370/1665/171 1363/2777/228 1362/2778/171 +f 1376/1648/144 1361/2779/229 1368/2780/144 +f 1382/2781/230 1380/2782/231 1378/2783/232 +f 1390/2784/245 1383/2785/234 1391/2786/233 +f 1389/2787/237 1380/2788/231 1381/2789/236 +f 1387/2790/240 1378/2791/232 1379/2792/239 +f 1385/2793/243 1384/2794/244 1377/2795/242 +f 1392/2796/241 1383/2797/234 1384/2798/244 +f 1390/2784/245 1381/2799/236 1382/2800/230 +f 1388/2801/235 1379/2802/239 1380/2803/231 +f 1386/2804/238 1377/2805/242 1378/2806/232 +f 1393/1660/229 1392/2807/241 1385/2793/243 +f 1400/2134/144 1391/2786/233 1392/2796/241 +f 1398/1652/166 1389/2787/237 1390/2784/245 +f 1395/1657/228 1388/2801/235 1396/1655/143 +f 1393/1660/229 1386/2804/238 1394/1658/171 +f 1398/1652/166 1391/2786/233 1399/1649/226 +f 1396/1655/143 1389/2787/237 1397/1654/227 +f 1394/1658/171 1387/2790/240 1395/1657/228 +f 1415/1670/226 1408/2808/144 1407/2809/226 +f 1413/1673/227 1406/2810/166 1405/2811/227 +f 1412/2141/143 1403/2812/228 1411/1676/228 +f 1410/2142/171 1401/2813/229 1409/1679/229 +f 1415/1681/226 1406/2814/166 1414/1682/166 +f 1413/1683/227 1404/2815/143 1412/1684/143 +f 1410/1686/171 1403/2816/228 1402/2817/171 +f 1416/1668/144 1401/2818/229 1408/2819/144 +f 1422/2820/230 1420/2821/231 1418/2822/232 +f 1430/2823/245 1423/2824/234 1431/2825/233 +f 1428/2826/235 1421/2827/236 1429/2828/237 +f 1427/2829/240 1418/2830/232 1419/2831/239 +f 1432/2832/241 1417/2833/242 1425/2834/243 +f 1432/2835/241 1423/2836/234 1424/2837/244 +f 1430/2823/245 1421/2838/236 1422/2839/230 +f 1427/2829/240 1420/2840/231 1428/2826/235 +f 1426/2841/246 1417/2842/242 1418/2843/232 +f 1433/1680/229 1432/2832/241 1425/2834/243 +f 1440/1669/144 1431/2825/233 1432/2835/241 +f 1438/1672/166 1429/2828/237 1430/2823/245 +f 1435/1677/228 1428/2826/235 1436/1675/143 +f 1433/1680/229 1426/2841/246 1434/1678/171 +f 1438/1672/166 1431/2825/233 1439/1671/226 +f 1436/1675/143 1429/2828/237 1437/1674/227 +f 1434/1678/171 1427/2829/240 1435/1677/228 +f 1442/1697/143 1445/1713/247 1441/1698/143 +f 1451/1708/144 1456/1715/211 1452/1704/144 +f 1455/1707/211 1463/1723/201 1456/1715/211 +f 1461/1725/143 1465/1738/247 1464/1726/143 +f 1463/1723/201 1457/2143/248 1460/1722/248 +f 1446/1696/247 1457/2143/248 1445/1713/247 +f 1471/1736/144 1476/1740/211 1472/1732/144 +f 1475/1735/211 1480/1748/201 1476/1740/211 +f 1480/1748/201 1477/2146/248 1478/1747/248 +f 1466/1724/247 1477/2146/248 1465/1738/247 +f 1533/2844/147 1510/2845/149 1534/2846/149 +f 1531/2847/148 1508/2848/145 1532/2849/145 +f 1529/2850/160 1506/2851/146 1530/2852/146 +f 1534/2846/149 1511/2853/159 1535/2854/159 +f 1532/2855/145 1509/2856/147 1533/2844/147 +f 1530/2852/146 1507/2857/148 1531/2847/148 +f 1536/2858/158 1505/2859/160 1529/2850/160 +f 1535/2854/159 1512/2860/158 1536/2858/158 +f 1523/2861/148 1516/2862/145 1524/2863/145 +f 1521/2864/160 1514/2865/146 1522/2866/146 +f 1527/2867/159 1520/2868/158 1528/2869/158 +f 1525/2870/147 1518/2871/149 1526/2872/149 +f 1538/2873/159 1545/2874/158 1537/2875/158 +f 1537/2875/158 1552/2876/160 1544/2877/160 +f 1526/2872/149 1519/2878/159 1527/2867/159 +f 1524/2879/145 1517/2880/147 1525/2870/147 +f 1522/2866/146 1515/2881/148 1523/2861/148 +f 1528/2869/158 1513/2882/160 1521/2864/160 +f 1543/2883/146 1550/2884/148 1542/2885/148 +f 1541/2886/145 1548/2887/147 1540/2888/147 +f 1539/2889/149 1546/2890/159 1538/2873/159 +f 1544/2877/160 1551/2891/146 1543/2883/146 +f 1542/2885/148 1549/2892/145 1541/2893/145 +f 1540/2888/147 1547/2894/149 1539/2889/149 +f 1564/2895/147 1571/2896/149 1563/2897/149 +f 1562/2898/159 1569/2899/158 1561/2900/158 +f 1561/2900/158 1576/2901/160 1568/2902/160 +f 1567/2903/146 1574/2904/148 1566/2905/148 +f 1565/2906/145 1572/2907/147 1564/2895/147 +f 1563/2897/149 1570/2908/159 1562/2898/159 +f 1568/2902/160 1575/2909/146 1567/2903/146 +f 1566/2905/148 1573/2910/145 1565/2911/145 +f 1628/1903/249 1635/2912/250 1627/1895/168 +f 1625/1904/144 1634/2913/251 1633/2914/252 +f 1632/1899/253 1633/2915/252 1640/2916/254 +f 1639/2917/255 1648/2918/256 1647/2919/257 +f 1637/2920/258 1646/2921/259 1645/2922/260 +f 1635/2912/250 1644/2923/261 1643/2924/262 +f 1633/2914/252 1642/2925/263 1641/2926/264 +f 1633/2915/252 1648/2927/256 1640/2916/254 +f 1638/2928/265 1647/2929/257 1646/2930/259 +f 1637/2920/258 1644/2931/261 1636/2932/266 +f 1635/2912/250 1642/2933/263 1634/2913/251 +f 1643/2934/262 1645/2935/260 1647/2936/257 +f 1649/1909/144 1664/2937/253 1657/2938/144 +f 1655/1891/167 1662/2939/267 1663/2940/167 +f 1652/1893/249 1661/2941/143 1653/1894/143 +f 1650/1896/268 1659/2942/168 1651/1897/168 +f 1655/2183/167 1664/2943/253 1656/1898/253 +f 1653/2184/143 1662/2944/267 1654/1900/267 +f 1652/1902/249 1659/2945/168 1660/2946/249 +f 1649/2186/144 1658/2947/268 1650/1905/268 +f 1671/1910/167 1678/2948/265 1670/1922/267 +f 1669/1913/143 1676/2949/266 1668/1924/249 +f 1667/1916/168 1674/2950/251 1666/1927/268 +f 1672/1920/253 1679/2951/255 1671/1910/167 +f 1670/1922/267 1677/2952/258 1669/1913/143 +f 1667/1916/168 1676/2949/266 1675/2953/250 +f 1665/1925/144 1674/2950/251 1673/2954/252 +f 1672/1920/253 1673/2955/252 1680/2956/254 +f 1680/2956/254 1687/2957/257 1679/2951/255 +f 1678/2948/265 1685/2958/260 1677/2952/258 +f 1675/2953/250 1684/2959/261 1683/2960/262 +f 1673/2954/252 1682/2961/263 1681/2962/264 +f 1673/2955/252 1688/2963/256 1680/2956/254 +f 1678/2948/265 1687/2964/257 1686/2965/259 +f 1677/2952/258 1684/2966/261 1676/2949/266 +f 1675/2953/250 1682/2967/263 1674/2950/251 +f 1683/2968/262 1685/2969/260 1687/2970/257 +f 1689/1930/144 1704/2971/253 1697/2972/144 +f 1694/1911/267 1703/2973/167 1695/1912/167 +f 1693/1915/143 1700/2974/249 1701/2975/143 +f 1690/1917/268 1699/2976/168 1691/1918/168 +f 1695/2187/167 1704/2977/253 1696/1919/253 +f 1693/2188/143 1702/2978/267 1694/1921/267 +f 1692/1923/249 1699/2979/168 1700/2980/249 +f 1689/2190/144 1698/2981/268 1690/1926/268 +f 1720/2191/144 1711/2982/268 1719/1935/268 +f 1717/1938/249 1710/2983/168 1709/2984/249 +f 1716/2193/143 1707/2985/267 1715/1941/267 +f 1714/1944/167 1705/2986/253 1713/1945/253 +f 1719/1946/268 1710/2987/168 1718/1947/168 +f 1717/1948/249 1708/2988/143 1716/1949/143 +f 1714/1950/167 1707/2989/267 1706/2990/167 +f 1720/1933/144 1705/2991/253 1712/2992/144 +f 1726/2993/262 1724/2994/260 1722/2995/257 +f 1734/2996/250 1727/2997/263 1735/2998/251 +f 1732/2999/258 1725/3000/261 1733/3001/266 +f 1731/3002/265 1722/3003/257 1723/3004/259 +f 1736/3005/252 1721/3006/256 1729/3007/254 +f 1736/3008/252 1727/3009/263 1728/3010/264 +f 1734/2996/250 1725/3011/261 1726/3012/262 +f 1731/3002/265 1724/3013/260 1732/2999/258 +f 1730/3014/255 1721/3015/256 1722/3016/257 +f 1737/1943/253 1736/3005/252 1729/3007/254 +f 1744/1934/144 1735/2998/251 1736/3008/252 +f 1741/1939/249 1734/2996/250 1742/1937/168 +f 1739/1942/267 1732/2999/258 1740/1940/143 +f 1737/1943/253 1730/3014/255 1738/1951/167 +f 1742/1937/168 1735/2998/251 1743/1936/268 +f 1740/1940/143 1733/3001/266 1741/1939/249 +f 1739/1942/267 1730/3014/255 1731/3002/265 +f 1759/1956/268 1752/3017/144 1751/3018/268 +f 1758/2196/168 1749/3019/249 1757/1959/249 +f 1756/2197/143 1747/3020/267 1755/1962/267 +f 1754/2198/167 1745/3021/253 1753/1965/253 +f 1759/1967/268 1750/3022/168 1758/1968/168 +f 1757/1969/249 1748/3023/143 1756/1970/143 +f 1755/1971/267 1746/3024/167 1754/1972/167 +f 1760/1954/144 1745/3025/253 1752/3026/144 +f 1766/3027/262 1764/3028/260 1762/3029/257 +f 1774/3030/250 1767/3031/263 1775/3032/251 +f 1772/3033/258 1765/3034/261 1773/3035/266 +f 1770/3036/255 1763/3037/259 1771/3038/265 +f 1776/3039/252 1761/3040/256 1769/3041/254 +f 1776/3042/252 1767/3043/263 1768/3044/264 +f 1774/3030/250 1765/3045/261 1766/3046/262 +f 1771/3038/265 1764/3047/260 1772/3033/258 +f 1770/3036/255 1761/3048/256 1762/3049/257 +f 1777/1966/253 1776/3039/252 1769/3041/254 +f 1784/1955/144 1775/3032/251 1776/3042/252 +f 1782/1958/168 1773/3035/266 1774/3030/250 +f 1779/1963/267 1772/3033/258 1780/1961/143 +f 1777/1966/253 1770/3036/255 1778/1964/167 +f 1782/1958/168 1775/3032/251 1783/1957/268 +f 1780/1961/143 1773/3035/266 1781/1960/249 +f 1778/1964/167 1771/3038/265 1779/1963/267 +f 1790/1973/267 1799/3050/255 1798/3051/265 +f 1789/1976/143 1796/3052/266 1788/1987/249 +f 1786/1990/268 1795/3053/250 1794/3054/251 +f 1792/1982/253 1799/3050/255 1791/1975/167 +f 1790/1973/267 1797/3055/258 1789/1976/143 +f 1788/1987/249 1795/3053/250 1787/1979/168 +f 1785/1988/144 1794/3054/251 1793/3056/252 +f 1785/1991/144 1800/3057/254 1792/1982/253 +f 1799/3050/255 1808/3058/256 1807/3059/257 +f 1797/3055/258 1806/3060/259 1805/3061/260 +f 1795/3053/250 1804/3062/261 1803/3063/262 +f 1793/3056/252 1802/3064/263 1801/3065/264 +f 1793/3066/252 1808/3067/256 1800/3057/254 +f 1798/3051/265 1807/3068/257 1806/3069/259 +f 1797/3055/258 1804/3070/261 1796/3052/266 +f 1795/3053/250 1802/3071/263 1794/3054/251 +f 1803/3072/262 1805/3073/260 1807/3074/257 +f 1809/1993/144 1824/3075/253 1817/3076/144 +f 1815/1974/167 1822/3077/267 1823/3078/167 +f 1812/1977/249 1821/3079/143 1813/1978/143 +f 1810/1980/268 1819/3080/168 1811/1981/168 +f 1815/1983/167 1824/3081/253 1816/1984/253 +f 1813/2200/143 1822/3082/267 1814/1985/267 +f 1811/2201/168 1820/3083/249 1812/1986/249 +f 1810/1989/268 1817/3084/144 1818/3085/268 +f 1630/1901/267 1637/2920/258 1629/1892/143 +f 1632/1899/253 1639/2917/255 1631/1889/167 +f 1627/1895/168 1634/2913/251 1626/1906/268 +f 1629/1892/143 1636/2932/266 1628/1903/249 +f 1631/1889/167 1638/2928/265 1630/1901/267 +f 658/2203/161 659/3086/145 647/2204/145 +f 655/2206/166 656/2215/149 644/2207/149 +f 662/2209/146 663/2217/167 651/2210/167 +f 659/2212/145 660/2222/165 648/2213/165 +f 656/2215/149 657/2224/168 645/2216/168 +f 663/2217/167 664/2225/169 652/2218/169 +f 653/2219/158 654/2226/170 642/2220/170 +f 660/2222/165 661/2227/171 649/2223/171 +f 657/2224/168 658/2203/161 646/2205/161 +f 664/2225/169 653/2219/158 641/2221/158 +f 654/2226/170 655/2206/166 643/2208/166 +f 661/2227/171 662/2209/146 650/2211/146 +f 675/1994/172 676/1246/172 673/1995/173 +f 672/1761/174 676/1246/172 675/1994/172 +f 670/1766/175 674/1238/173 673/1995/173 +f 679/1996/166 691/1334/166 692/1336/149 +f 686/1275/146 698/1326/146 699/1325/167 +f 683/1268/145 695/1343/145 696/1345/165 +f 680/1259/149 692/1336/149 693/1338/168 +f 687/1278/167 699/1325/167 700/1328/169 +f 677/1252/158 689/1330/158 690/1332/170 +f 684/1998/165 696/1345/165 697/1347/171 +f 681/1263/168 693/1338/168 694/1340/161 +f 688/1248/169 700/1328/169 689/1330/158 +f 678/1255/170 690/1332/170 691/1334/166 +f 685/1272/171 697/1347/171 698/1326/146 +f 682/1265/161 694/1340/161 695/1342/145 +f 724/2228/169 736/3087/169 735/2229/167 +f 720/2231/165 732/2278/165 731/2232/145 +f 722/2234/146 734/2282/146 733/2235/171 +f 704/2237/158 728/2266/158 736/2238/169 +f 701/2240/149 725/2271/149 726/2241/166 +f 721/2243/171 733/3088/171 732/2244/165 +f 702/2246/166 726/2269/166 727/2247/170 +f 703/2249/170 727/2267/170 728/2250/158 +f 719/2252/145 731/2277/145 730/2253/161 +f 723/2255/167 735/2283/167 734/2256/146 +f 718/2258/161 730/3089/161 729/2259/168 +f 717/2261/168 729/2273/168 725/2262/149 +f 735/2229/176 736/3087/177 748/2264/177 +f 728/2266/178 737/2268/178 748/2264/177 +f 727/2267/179 738/2270/179 737/2268/178 +f 726/2269/180 739/2272/180 738/2270/179 +f 725/2271/181 740/2274/181 739/2272/180 +f 729/2273/182 741/2276/182 740/2274/181 +f 729/2259/182 730/3089/183 742/2275/183 +f 731/2277/184 743/2285/184 742/2275/183 +f 732/2278/185 744/2281/185 743/2279/184 +f 732/2244/185 733/3088/186 745/2280/186 +f 734/2282/187 746/2284/187 745/2280/186 +f 735/2283/176 747/2265/176 746/2284/187 +f 741/2276/168 753/1295/168 752/1297/149 +f 748/2264/169 760/1298/169 759/1300/167 +f 738/2270/170 750/1301/170 749/1303/158 +f 745/2280/171 757/1304/171 756/1306/165 +f 742/2275/161 754/1307/161 753/1295/168 +f 737/2268/158 749/1303/158 760/1298/169 +f 739/2272/166 751/1311/166 750/1301/170 +f 746/2284/146 758/1318/146 757/1304/171 +f 743/2285/145 755/1315/145 754/1307/161 +f 740/2274/149 752/1297/149 751/1311/166 +f 747/2265/167 759/1300/167 758/1318/146 +f 744/2281/165 756/1306/165 755/1292/145 +f 771/1299/188 772/2004/189 784/2286/189 +f 761/1309/190 773/3090/190 784/2288/189 +f 762/2005/191 774/3091/191 773/2289/190 +f 763/2008/192 775/3092/192 774/2290/191 +f 764/2010/193 776/3093/193 775/2291/192 +f 765/2003/194 777/3094/194 776/2292/193 +f 765/1308/194 766/2007/195 778/2293/195 +f 767/2009/196 779/3095/196 778/2295/195 +f 768/1293/197 780/3096/197 779/2296/196 +f 769/2006/198 781/3097/198 780/2297/197 +f 770/1313/199 782/3098/199 781/2298/198 +f 770/1320/199 771/1319/188 783/2299/188 +f 787/2301/166 799/2322/166 800/2302/149 +f 794/2304/146 806/2323/146 807/2305/167 +f 791/2307/145 803/3099/145 804/2308/165 +f 788/2303/149 800/2302/149 801/2310/168 +f 795/2306/167 807/2305/167 808/2312/169 +f 785/2314/158 797/2321/158 798/2315/170 +f 792/2309/165 804/2308/165 805/2317/171 +f 789/2311/168 801/2310/168 802/2319/161 +f 796/2313/169 808/2312/169 797/2321/158 +f 786/2316/170 798/2315/170 799/2322/166 +f 793/2318/171 805/2317/171 806/2323/146 +f 790/2320/161 802/2319/161 803/2324/145 +f 814/1368/161 826/1427/161 827/1429/145 +f 811/1360/166 823/1421/166 824/1423/149 +f 818/1378/146 830/1436/146 831/1413/167 +f 815/1371/145 827/1430/145 828/1432/165 +f 812/2033/149 824/1423/149 825/1425/168 +f 819/1349/167 831/1413/167 832/1415/169 +f 809/2032/158 821/1417/158 822/1419/170 +f 816/2035/165 828/1432/165 829/1434/171 +f 813/1364/168 825/1425/168 826/1427/161 +f 820/1352/169 832/1415/169 821/1417/158 +f 810/1356/170 822/1419/170 823/1421/166 +f 817/1375/171 829/1434/171 830/1436/146 +f 838/1401/161 850/1457/161 851/1459/145 +f 835/1393/166 847/1451/166 848/1453/149 +f 842/1410/146 854/1443/146 855/1442/167 +f 839/1404/145 851/1460/145 852/1462/165 +f 836/1398/149 848/1453/149 849/1455/168 +f 843/1382/167 855/1442/167 856/1445/169 +f 833/1390/158 845/1447/158 846/1449/170 +f 840/1409/165 852/1462/165 853/1464/171 +f 837/1396/168 849/1455/168 850/1457/161 +f 844/1385/169 856/1445/169 845/1447/158 +f 834/1388/170 846/1449/170 847/1451/166 +f 841/1407/171 853/1464/171 854/1443/146 +f 875/2326/145 876/2338/165 864/2327/165 +f 872/2329/149 873/2340/168 861/2330/168 +f 879/2332/167 880/2342/169 868/2333/169 +f 869/2335/158 870/2343/170 858/2336/170 +f 876/2338/165 877/2345/171 865/2339/171 +f 873/2340/168 874/2347/161 862/2341/161 +f 880/2342/169 869/2335/158 857/2337/158 +f 870/2343/170 871/2349/166 859/2344/166 +f 877/2345/171 878/2350/146 866/2346/146 +f 874/2347/161 875/3100/145 863/2348/145 +f 871/2349/166 872/2329/149 860/2331/149 +f 878/2350/146 879/2332/167 867/2334/167 +f 899/2351/145 900/2363/165 888/2352/165 +f 896/2354/149 897/2365/168 885/2355/168 +f 903/2357/167 904/2367/169 892/2358/169 +f 893/2360/158 894/2368/170 882/2361/170 +f 900/2363/165 901/2370/171 889/2364/171 +f 897/2365/168 898/2372/161 886/2366/161 +f 904/2367/169 893/2360/158 881/2362/158 +f 894/2368/170 895/2374/166 883/2369/166 +f 901/2370/171 902/2375/146 890/2371/146 +f 898/2372/161 899/3101/145 887/2373/145 +f 895/2374/166 896/2354/149 884/2356/149 +f 902/2375/146 903/2357/167 891/2359/167 +f 962/2376/146 964/2393/148 963/2377/148 +f 940/2379/146 942/2413/148 941/2380/148 +f 908/2382/158 910/2391/160 909/2383/160 +f 948/2385/149 950/2431/159 949/2386/159 +f 936/2388/148 905/2428/145 906/2389/145 +f 910/2391/160 912/2397/146 911/2392/146 +f 964/2393/148 966/3102/145 965/2394/145 +f 934/2395/146 936/2388/148 935/2390/148 +f 912/2397/146 914/2405/148 913/2398/148 +f 944/2399/145 946/2425/147 945/2400/147 +f 932/2402/160 934/3103/146 933/2403/146 +f 914/2405/148 916/2411/145 915/2406/145 +f 966/2407/145 968/2426/147 967/2408/147 +f 929/2410/158 930/3104/158 932/2402/160 +f 916/2411/145 918/2416/147 917/2412/147 +f 942/2413/148 944/2399/145 943/2401/145 +f 928/2414/159 930/3104/158 929/2410/158 +f 918/2416/147 920/3105/149 919/2417/149 +f 924/2418/147 926/2421/149 925/2419/149 +f 926/2421/149 928/2414/159 927/2415/159 +f 920/2422/149 922/3106/159 921/2423/159 +f 946/2425/147 948/2385/149 947/2387/149 +f 968/2426/147 937/2441/149 938/2427/149 +f 921/2423/159 922/3106/159 908/2382/158 +f 905/2428/145 924/2418/147 923/2420/147 +f 960/2429/160 962/2376/146 961/2378/146 +f 950/2431/159 952/3107/158 951/2432/158 +f 956/2433/159 958/2436/158 957/2434/158 +f 958/2436/158 960/2429/160 959/2430/160 +f 952/2437/158 954/2440/160 953/2438/160 +f 954/2440/160 940/2379/146 939/2381/146 +f 937/2441/149 956/2433/159 955/2435/159 +f 1026/2442/148 1028/3108/145 1027/2443/145 +f 1004/2445/148 1006/2479/145 1005/2446/145 +f 972/2448/160 974/2457/146 973/2449/146 +f 1012/2451/159 1014/2498/158 1013/2452/158 +f 1000/2454/145 969/2495/147 970/2455/147 +f 974/2457/146 976/2463/148 975/2458/148 +f 1027/2443/145 1028/3108/145 1030/2459/147 +f 998/2461/148 1000/2454/145 999/2456/145 +f 976/2463/148 978/2471/145 977/2464/145 +f 1008/2465/147 1010/2491/149 1009/2466/149 +f 996/2468/146 998/3109/148 997/2469/148 +f 978/2471/145 980/2477/147 979/2472/147 +f 1030/2473/147 1032/2492/149 1031/2474/149 +f 993/2476/160 994/3110/160 996/2468/146 +f 980/2477/147 982/2482/149 981/2478/149 +f 1006/2479/145 1008/2465/147 1007/2467/147 +f 992/2480/158 994/3110/160 993/2476/160 +f 982/2482/149 984/3111/159 983/2483/159 +f 988/2484/149 990/2487/159 989/2485/159 +f 990/2487/159 992/2480/158 991/2481/158 +f 984/2488/159 986/2494/158 985/2489/158 +f 1010/2491/149 1012/2451/159 1011/2453/159 +f 1032/2492/149 1001/2508/159 1002/2493/159 +f 986/2494/158 972/2448/160 971/2450/160 +f 969/2495/147 988/2484/149 987/2486/149 +f 1024/2496/146 1026/2442/148 1025/2444/148 +f 1014/2498/158 1016/3112/160 1015/2499/160 +f 1020/2500/158 1022/2503/160 1021/2501/160 +f 1022/2503/160 1024/2496/146 1023/2497/146 +f 1016/2504/160 1018/2507/146 1017/2505/146 +f 1018/2507/146 1004/2445/148 1003/2447/148 +f 1001/2508/159 1020/2500/158 1019/2502/158 +f 1051/1505/145 1052/1497/145 1049/1515/200 +f 1055/1496/201 1053/1498/158 1054/2509/158 +f 1060/2511/202 1069/2524/202 1072/2512/203 +f 1064/2514/204 1071/3113/204 1066/2515/205 +f 1058/2517/206 1067/3114/206 1070/2518/207 +f 1072/2512/203 1071/3113/204 1064/2514/204 +f 1062/2520/208 1061/2516/205 1066/2515/205 +f 1068/2522/209 1067/3114/206 1058/2517/206 +f 1060/2511/202 1059/2519/207 1070/2518/207 +f 1062/2520/208 1065/2521/208 1068/2525/209 +f 1078/1514/210 1077/1511/210 1050/1499/200 +f 1074/1512/143 1077/1511/210 1078/1514/210 +f 1075/1509/144 1080/1508/211 1079/2527/211 +f 1056/2529/201 1079/3115/211 1080/2077/211 +f 1116/2530/212 1124/2541/212 1123/2531/148 +f 1119/2533/159 1120/2546/213 1128/2534/213 +f 1115/2532/148 1123/2531/148 1122/2536/214 +f 1114/2537/214 1122/2536/214 1121/2538/144 +f 1117/2540/143 1125/2543/143 1124/2541/212 +f 1118/2542/215 1126/2544/215 1125/2543/143 +f 1119/2533/159 1127/2535/159 1126/2544/215 +f 1113/2545/144 1121/3116/144 1128/2534/213 +f 1136/2547/216 1129/3117/144 1137/2548/144 +f 1134/2550/217 1142/2561/217 1141/2551/143 +f 1131/2553/160 1139/2563/160 1138/2554/218 +f 1132/2556/219 1133/2552/143 1141/2551/143 +f 1130/2555/218 1138/2554/218 1137/2558/144 +f 1134/2550/217 1135/2562/147 1143/2560/147 +f 1136/2547/216 1144/2549/216 1143/2560/147 +f 1132/2556/219 1140/2557/219 1139/2563/160 +f 1145/2564/144 1153/3118/144 1160/2565/220 +f 1151/2567/146 1159/2576/146 1158/2568/221 +f 1149/2570/143 1157/2577/143 1156/2571/222 +f 1147/2573/149 1155/2578/149 1154/2574/223 +f 1152/2566/220 1160/2565/220 1159/2576/146 +f 1150/2569/221 1158/2568/221 1157/2577/143 +f 1148/2572/222 1156/2571/222 1155/2578/149 +f 1146/2575/223 1154/2574/223 1153/2579/144 +f 1172/2581/143 1171/2587/219 1163/2582/219 +f 1172/2581/143 1164/2583/143 1165/2584/217 +f 1170/2586/160 1162/2589/160 1163/2582/219 +f 1169/2588/218 1161/2597/218 1162/2589/160 +f 1174/2590/147 1166/2595/147 1167/2591/216 +f 1175/2592/216 1167/2591/216 1168/2593/144 +f 1174/2590/147 1173/2585/217 1165/2584/217 +f 1176/2596/144 1168/3119/144 1161/2597/218 +f 1192/2598/144 1184/3120/144 1177/2599/214 +f 1190/2601/159 1189/2609/215 1181/2602/215 +f 1191/2604/213 1183/2613/213 1184/2605/144 +f 1186/2607/148 1185/2600/214 1177/2599/214 +f 1189/2609/215 1188/2612/143 1180/2610/143 +f 1187/2611/212 1179/2614/212 1180/2610/143 +f 1191/2604/213 1190/2601/159 1182/2603/159 +f 1186/2607/148 1178/2608/148 1179/2614/212 +f 1200/2615/224 1193/3121/144 1201/2616/144 +f 1198/2618/163 1206/2629/163 1205/2619/143 +f 1195/2621/145 1203/2631/145 1202/2622/164 +f 1197/2620/143 1205/2619/143 1204/2624/225 +f 1193/2626/144 1194/2623/164 1202/2622/164 +f 1199/2628/158 1207/2630/158 1206/2629/163 +f 1200/2615/224 1208/2617/224 1207/2630/158 +f 1196/2625/225 1204/2624/225 1203/2631/145 +f 1224/2632/144 1216/3122/144 1209/2633/164 +f 1221/2635/163 1213/2644/163 1214/2636/158 +f 1223/2638/224 1215/2647/224 1216/2639/144 +f 1217/2634/164 1209/2633/164 1210/2641/145 +f 1220/2643/143 1212/2646/143 1213/2644/163 +f 1219/2645/225 1211/2648/225 1212/2646/143 +f 1222/2637/158 1214/2636/158 1215/2647/224 +f 1218/2642/145 1210/2641/145 1211/2648/225 +f 1240/2649/144 1232/3123/144 1225/2650/223 +f 1237/2652/221 1229/2661/221 1230/2653/146 +f 1240/2655/144 1239/2664/220 1231/2656/220 +f 1233/2651/223 1225/2650/223 1226/2658/149 +f 1236/2660/143 1228/2663/143 1229/2661/221 +f 1235/2662/222 1227/2665/222 1228/2663/143 +f 1238/2654/146 1230/2653/146 1231/2656/220 +f 1234/2659/149 1226/2658/149 1227/2665/222 +f 1255/1588/226 1256/2122/144 1248/2666/144 +f 1254/2123/166 1246/3124/166 1245/2668/227 +f 1252/1594/143 1244/3125/143 1243/2669/228 +f 1250/2124/171 1242/3126/171 1241/2670/229 +f 1255/1598/226 1247/3127/226 1246/2671/166 +f 1253/1601/227 1245/3128/227 1244/2672/143 +f 1250/1604/171 1251/1603/228 1243/2673/228 +f 1249/2121/229 1241/3129/229 1248/2675/144 +f 1264/3130/244 1263/3131/234 1262/2676/230 +f 1262/2676/230 1261/3132/236 1260/2677/231 +f 1260/2677/231 1259/3133/239 1258/2678/232 +f 1258/2678/232 1257/3134/242 1264/3130/244 +f 1264/3130/244 1262/2676/230 1258/2678/232 +f 1271/2679/233 1270/2694/245 1262/2680/230 +f 1268/2682/235 1260/3135/231 1261/2683/236 +f 1266/2685/238 1258/3136/232 1259/2686/239 +f 1272/2688/241 1264/3137/244 1257/2689/242 +f 1272/2691/241 1271/2679/233 1263/2692/234 +f 1270/2694/245 1269/2684/237 1261/2695/236 +f 1268/2682/235 1267/2687/240 1259/2697/239 +f 1265/2690/243 1257/3138/242 1258/2699/232 +f 1273/1584/229 1280/1586/144 1272/2688/241 +f 1280/1587/144 1279/1589/226 1271/2679/233 +f 1277/1592/227 1269/2684/237 1270/2694/245 +f 1275/1593/228 1267/2687/240 1268/2682/235 +f 1273/1584/229 1265/2690/243 1266/2685/238 +f 1278/1590/166 1270/2694/245 1271/2679/233 +f 1276/1600/143 1268/2682/235 1269/2684/237 +f 1274/1596/171 1266/2685/238 1267/2687/240 +f 1286/1617/228 1287/1605/171 1295/2700/238 +f 1285/1608/143 1293/2704/235 1292/2702/237 +f 1283/1611/166 1291/2705/245 1290/2703/233 +f 1288/1615/229 1296/2708/243 1295/2700/238 +f 1286/1617/228 1294/2701/240 1293/2704/235 +f 1283/1611/166 1284/1619/227 1292/2702/237 +f 1281/1620/144 1282/1622/226 1290/2703/233 +f 1288/1615/229 1281/1623/144 1289/2707/241 +f 1296/2708/243 1304/3139/242 1303/2709/232 +f 1294/2701/240 1302/3140/239 1301/2710/231 +f 1291/2705/245 1292/2702/237 1300/2711/236 +f 1289/2706/241 1290/2703/233 1298/2713/234 +f 1289/2707/241 1297/3141/244 1304/2715/242 +f 1294/2701/240 1295/2700/238 1303/2716/232 +f 1292/2702/237 1293/2704/235 1301/2718/231 +f 1291/2705/245 1299/3142/230 1298/2720/234 +f 1297/3143/244 1298/3144/234 1299/2721/230 +f 1299/2721/230 1300/3145/236 1301/2722/231 +f 1301/2722/231 1302/3146/239 1303/2723/232 +f 1303/2723/232 1304/3147/242 1297/3143/244 +f 1297/3143/244 1299/2721/230 1303/2723/232 +f 1312/1624/229 1320/3148/229 1313/2724/144 +f 1311/1607/171 1310/1606/228 1318/2725/228 +f 1308/1609/227 1316/3149/227 1317/2727/143 +f 1306/1612/226 1314/3150/226 1315/2728/166 +f 1311/2125/171 1319/3151/171 1320/2729/229 +f 1309/2126/143 1317/3152/143 1318/2730/228 +f 1308/1618/227 1307/2127/166 1315/2731/166 +f 1306/1621/226 1305/2128/144 1313/2733/144 +f 1327/1628/171 1335/2738/238 1334/2735/240 +f 1325/1629/143 1333/2739/235 1332/2736/237 +f 1323/1632/166 1331/2740/245 1330/2737/233 +f 1328/1636/229 1336/2742/243 1335/2738/238 +f 1326/1626/228 1334/2735/240 1333/2739/235 +f 1323/1632/166 1324/1640/227 1332/2736/237 +f 1321/1641/144 1322/1643/226 1330/2737/233 +f 1321/1645/144 1329/2750/241 1336/2742/243 +f 1336/2742/243 1344/3153/242 1343/2743/232 +f 1333/2739/235 1334/2735/240 1342/2744/239 +f 1331/2740/245 1332/2736/237 1340/2746/236 +f 1329/2741/241 1330/2737/233 1338/2748/234 +f 1329/2750/241 1337/3154/244 1344/2751/242 +f 1335/2738/238 1343/3155/232 1342/2752/239 +f 1332/2736/237 1333/2739/235 1341/2753/231 +f 1331/2740/245 1339/3156/230 1338/2755/234 +f 1337/3157/244 1338/3158/234 1339/2756/230 +f 1339/2756/230 1340/3159/236 1341/2757/231 +f 1341/2757/231 1342/3160/239 1343/2758/232 +f 1343/2758/232 1344/3161/242 1337/3157/244 +f 1337/3157/244 1339/2756/230 1343/2758/232 +f 1345/1644/144 1352/2133/229 1360/2759/229 +f 1350/2129/228 1358/3162/228 1359/2761/171 +f 1348/1630/227 1356/3163/227 1357/2762/143 +f 1346/1633/226 1354/3164/226 1355/2763/166 +f 1351/2130/171 1359/3165/171 1360/2764/229 +f 1349/1637/143 1357/3166/143 1358/2765/228 +f 1347/2131/166 1355/3167/166 1356/2766/227 +f 1346/1642/226 1345/2132/144 1353/2767/144 +f 1375/1651/226 1376/1650/144 1368/2769/144 +f 1373/1653/227 1374/2135/166 1366/2771/166 +f 1372/2136/143 1364/3168/143 1363/2773/228 +f 1370/2137/171 1362/3169/171 1361/2774/229 +f 1375/1661/226 1367/3170/226 1366/2775/166 +f 1373/1663/227 1365/3171/227 1364/2776/143 +f 1370/1665/171 1371/2138/228 1363/2777/228 +f 1376/1648/144 1369/1647/229 1361/2779/229 +f 1384/3172/244 1383/3173/234 1382/2781/230 +f 1382/2781/230 1381/3174/236 1380/2782/231 +f 1380/2782/231 1379/3175/239 1378/2783/232 +f 1378/2783/232 1377/3176/242 1384/3172/244 +f 1384/3172/244 1382/2781/230 1378/2783/232 +f 1390/2784/245 1382/3177/230 1383/2785/234 +f 1389/2787/237 1388/2801/235 1380/2788/231 +f 1387/2790/240 1386/2804/238 1378/2791/232 +f 1385/2793/243 1392/2807/241 1384/2794/244 +f 1392/2796/241 1391/2786/233 1383/2797/234 +f 1390/2784/245 1389/2787/237 1381/2799/236 +f 1388/2801/235 1387/2790/240 1379/2802/239 +f 1386/2804/238 1385/2793/243 1377/2805/242 +f 1393/1660/229 1400/1646/144 1392/2807/241 +f 1400/2134/144 1399/1649/226 1391/2786/233 +f 1398/1652/166 1397/1654/227 1389/2787/237 +f 1395/1657/228 1387/2790/240 1388/2801/235 +f 1393/1660/229 1385/2793/243 1386/2804/238 +f 1398/1652/166 1390/2784/245 1391/2786/233 +f 1396/1655/143 1388/2801/235 1389/2787/237 +f 1394/1658/171 1386/2804/238 1387/2790/240 +f 1415/1670/226 1416/2139/144 1408/2808/144 +f 1413/1673/227 1414/2140/166 1406/2810/166 +f 1412/2141/143 1404/3178/143 1403/2812/228 +f 1410/2142/171 1402/3179/171 1401/2813/229 +f 1415/1681/226 1407/3180/226 1406/2814/166 +f 1413/1683/227 1405/3181/227 1404/2815/143 +f 1410/1686/171 1411/1685/228 1403/2816/228 +f 1416/1668/144 1409/1667/229 1401/2818/229 +f 1424/3182/244 1423/3183/234 1422/2820/230 +f 1422/2820/230 1421/3184/236 1420/2821/231 +f 1420/2821/231 1419/3185/239 1418/2822/232 +f 1418/2822/232 1417/3186/242 1424/3182/244 +f 1424/3182/244 1422/2820/230 1418/2822/232 +f 1430/2823/245 1422/3187/230 1423/2824/234 +f 1428/2826/235 1420/3188/231 1421/2827/236 +f 1427/2829/240 1426/2841/246 1418/2830/232 +f 1432/2832/241 1424/3189/244 1417/2833/242 +f 1432/2835/241 1431/2825/233 1423/2836/234 +f 1430/2823/245 1429/2828/237 1421/2838/236 +f 1427/2829/240 1419/3190/239 1420/2840/231 +f 1426/2841/246 1425/2834/243 1417/2842/242 +f 1433/1680/229 1440/1666/144 1432/2832/241 +f 1440/1669/144 1439/1671/226 1431/2825/233 +f 1438/1672/166 1437/1674/227 1429/2828/237 +f 1435/1677/228 1427/2829/240 1428/2826/235 +f 1433/1680/229 1425/2834/243 1426/2841/246 +f 1438/1672/166 1430/2823/245 1431/2825/233 +f 1436/1675/143 1428/2826/235 1429/2828/237 +f 1434/1678/171 1426/2841/246 1427/2829/240 +f 1442/1697/143 1446/1696/247 1445/1713/247 +f 1451/1708/144 1455/1707/211 1456/1715/211 +f 1455/1707/211 1462/1688/201 1463/1723/201 +f 1461/1725/143 1466/1724/247 1465/1738/247 +f 1463/1723/201 1462/1688/201 1457/2143/248 +f 1446/1696/247 1460/1722/248 1457/2143/248 +f 1471/1736/144 1475/1735/211 1476/1740/211 +f 1475/1735/211 1479/1710/201 1480/1748/201 +f 1480/1748/201 1479/1710/201 1477/2146/248 +f 1466/1724/247 1478/1747/248 1477/2146/248 +f 1533/2844/147 1509/2856/147 1510/2845/149 +f 1531/2847/148 1507/2857/148 1508/2848/145 +f 1529/2850/160 1505/2859/160 1506/2851/146 +f 1534/2846/149 1510/2845/149 1511/2853/159 +f 1532/2855/145 1508/3191/145 1509/2856/147 +f 1530/2852/146 1506/2851/146 1507/2857/148 +f 1536/2858/158 1512/2860/158 1505/2859/160 +f 1535/2854/159 1511/2853/159 1512/2860/158 +f 1523/2861/148 1515/2881/148 1516/2862/145 +f 1521/2864/160 1513/2882/160 1514/2865/146 +f 1527/2867/159 1519/2878/159 1520/2868/158 +f 1525/2870/147 1517/2880/147 1518/2871/149 +f 1538/2873/159 1546/2890/159 1545/2874/158 +f 1537/2875/158 1545/2874/158 1552/2876/160 +f 1526/2872/149 1518/2871/149 1519/2878/159 +f 1524/2879/145 1516/3192/145 1517/2880/147 +f 1522/2866/146 1514/2865/146 1515/2881/148 +f 1528/2869/158 1520/2868/158 1513/2882/160 +f 1543/2883/146 1551/2891/146 1550/2884/148 +f 1541/2886/145 1549/3193/145 1548/2887/147 +f 1539/2889/149 1547/2894/149 1546/2890/159 +f 1544/2877/160 1552/2876/160 1551/2891/146 +f 1542/2885/148 1550/2884/148 1549/2892/145 +f 1540/2888/147 1548/2887/147 1547/2894/149 +f 1564/2895/147 1572/2907/147 1571/2896/149 +f 1562/2898/159 1570/2908/159 1569/2899/158 +f 1561/2900/158 1569/2899/158 1576/2901/160 +f 1567/2903/146 1575/2909/146 1574/2904/148 +f 1565/2906/145 1573/3194/145 1572/2907/147 +f 1563/2897/149 1571/2896/149 1570/2908/159 +f 1568/2902/160 1576/2901/160 1575/2909/146 +f 1566/2905/148 1574/2904/148 1573/2910/145 +f 1628/1903/249 1636/2932/266 1635/2912/250 +f 1625/1904/144 1626/1906/268 1634/2913/251 +f 1632/1899/253 1625/1907/144 1633/2915/252 +f 1639/2917/255 1640/2916/254 1648/2918/256 +f 1637/2920/258 1638/2928/265 1646/2921/259 +f 1635/2912/250 1636/2932/266 1644/2923/261 +f 1633/2914/252 1634/2913/251 1642/2925/263 +f 1633/2915/252 1641/3195/264 1648/2927/256 +f 1638/2928/265 1639/2917/255 1647/2929/257 +f 1637/2920/258 1645/3196/260 1644/2931/261 +f 1635/2912/250 1643/3197/262 1642/2933/263 +f 1641/3198/264 1642/3199/263 1643/2934/262 +f 1643/2934/262 1644/3200/261 1645/2935/260 +f 1645/2935/260 1646/3201/259 1647/2936/257 +f 1647/2936/257 1648/3202/256 1641/3198/264 +f 1641/3198/264 1643/2934/262 1647/2936/257 +f 1649/1909/144 1656/1908/253 1664/2937/253 +f 1655/1891/167 1654/1890/267 1662/2939/267 +f 1652/1893/249 1660/3203/249 1661/2941/143 +f 1650/1896/268 1658/3204/268 1659/2942/168 +f 1655/2183/167 1663/3205/167 1664/2943/253 +f 1653/2184/143 1661/3206/143 1662/2944/267 +f 1652/1902/249 1651/2185/168 1659/2945/168 +f 1649/2186/144 1657/3207/144 1658/2947/268 +f 1671/1910/167 1679/2951/255 1678/2948/265 +f 1669/1913/143 1677/2952/258 1676/2949/266 +f 1667/1916/168 1675/2953/250 1674/2950/251 +f 1672/1920/253 1680/2956/254 1679/2951/255 +f 1670/1922/267 1678/2948/265 1677/2952/258 +f 1667/1916/168 1668/1924/249 1676/2949/266 +f 1665/1925/144 1666/1927/268 1674/2950/251 +f 1672/1920/253 1665/1928/144 1673/2955/252 +f 1680/2956/254 1688/3208/256 1687/2957/257 +f 1678/2948/265 1686/3209/259 1685/2958/260 +f 1675/2953/250 1676/2949/266 1684/2959/261 +f 1673/2954/252 1674/2950/251 1682/2961/263 +f 1673/2955/252 1681/3210/264 1688/2963/256 +f 1678/2948/265 1679/2951/255 1687/2964/257 +f 1677/2952/258 1685/3211/260 1684/2966/261 +f 1675/2953/250 1683/3212/262 1682/2967/263 +f 1681/3213/264 1682/3214/263 1683/2968/262 +f 1683/2968/262 1684/3215/261 1685/2969/260 +f 1685/2969/260 1686/3216/259 1687/2970/257 +f 1687/2970/257 1688/3217/256 1681/3213/264 +f 1681/3213/264 1683/2968/262 1687/2970/257 +f 1689/1930/144 1696/1929/253 1704/2971/253 +f 1694/1911/267 1702/3218/267 1703/2973/167 +f 1693/1915/143 1692/1914/249 1700/2974/249 +f 1690/1917/268 1698/3219/268 1699/2976/168 +f 1695/2187/167 1703/3220/167 1704/2977/253 +f 1693/2188/143 1701/3221/143 1702/2978/267 +f 1692/1923/249 1691/2189/168 1699/2979/168 +f 1689/2190/144 1697/3222/144 1698/2981/268 +f 1720/2191/144 1712/3223/144 1711/2982/268 +f 1717/1938/249 1718/2192/168 1710/2983/168 +f 1716/2193/143 1708/3224/143 1707/2985/267 +f 1714/1944/167 1706/3225/167 1705/2986/253 +f 1719/1946/268 1711/3226/268 1710/2987/168 +f 1717/1948/249 1709/3227/249 1708/2988/143 +f 1714/1950/167 1715/2194/267 1707/2989/267 +f 1720/1933/144 1713/1932/253 1705/2991/253 +f 1728/3228/264 1727/3229/263 1726/2993/262 +f 1726/2993/262 1725/3230/261 1724/2994/260 +f 1724/2994/260 1723/3231/259 1722/2995/257 +f 1722/2995/257 1721/3232/256 1728/3228/264 +f 1728/3228/264 1726/2993/262 1722/2995/257 +f 1734/2996/250 1726/3233/262 1727/2997/263 +f 1732/2999/258 1724/3234/260 1725/3000/261 +f 1731/3002/265 1730/3014/255 1722/3003/257 +f 1736/3005/252 1728/3235/264 1721/3006/256 +f 1736/3008/252 1735/2998/251 1727/3009/263 +f 1734/2996/250 1733/3001/266 1725/3011/261 +f 1731/3002/265 1723/3236/259 1724/3013/260 +f 1730/3014/255 1729/3007/254 1721/3015/256 +f 1737/1943/253 1744/1931/144 1736/3005/252 +f 1744/1934/144 1743/1936/268 1735/2998/251 +f 1741/1939/249 1733/3001/266 1734/2996/250 +f 1739/1942/267 1731/3002/265 1732/2999/258 +f 1737/1943/253 1729/3007/254 1730/3014/255 +f 1742/1937/168 1734/2996/250 1735/2998/251 +f 1740/1940/143 1732/2999/258 1733/3001/266 +f 1739/1942/267 1738/1951/167 1730/3014/255 +f 1759/1956/268 1760/2195/144 1752/3017/144 +f 1758/2196/168 1750/3237/168 1749/3019/249 +f 1756/2197/143 1748/3238/143 1747/3020/267 +f 1754/2198/167 1746/3239/167 1745/3021/253 +f 1759/1967/268 1751/3240/268 1750/3022/168 +f 1757/1969/249 1749/3241/249 1748/3023/143 +f 1755/1971/267 1747/3242/267 1746/3024/167 +f 1760/1954/144 1753/1953/253 1745/3025/253 +f 1768/3243/264 1767/3244/263 1766/3027/262 +f 1766/3027/262 1765/3245/261 1764/3028/260 +f 1764/3028/260 1763/3246/259 1762/3029/257 +f 1762/3029/257 1761/3247/256 1768/3243/264 +f 1768/3243/264 1766/3027/262 1762/3029/257 +f 1774/3030/250 1766/3248/262 1767/3031/263 +f 1772/3033/258 1764/3249/260 1765/3034/261 +f 1770/3036/255 1762/3250/257 1763/3037/259 +f 1776/3039/252 1768/3251/264 1761/3040/256 +f 1776/3042/252 1775/3032/251 1767/3043/263 +f 1774/3030/250 1773/3035/266 1765/3045/261 +f 1771/3038/265 1763/3252/259 1764/3047/260 +f 1770/3036/255 1769/3041/254 1761/3048/256 +f 1777/1966/253 1784/1952/144 1776/3039/252 +f 1784/1955/144 1783/1957/268 1775/3032/251 +f 1782/1958/168 1781/1960/249 1773/3035/266 +f 1779/1963/267 1771/3038/265 1772/3033/258 +f 1777/1966/253 1769/3041/254 1770/3036/255 +f 1782/1958/168 1774/3030/250 1775/3032/251 +f 1780/1961/143 1772/3033/258 1773/3035/266 +f 1778/1964/167 1770/3036/255 1771/3038/265 +f 1790/1973/267 1791/1975/167 1799/3050/255 +f 1789/1976/143 1797/3055/258 1796/3052/266 +f 1786/1990/268 1787/1979/168 1795/3053/250 +f 1792/1982/253 1800/3057/254 1799/3050/255 +f 1790/1973/267 1798/3051/265 1797/3055/258 +f 1788/1987/249 1796/3052/266 1795/3053/250 +f 1785/1988/144 1786/1990/268 1794/3054/251 +f 1785/1991/144 1793/3066/252 1800/3057/254 +f 1799/3050/255 1800/3057/254 1808/3058/256 +f 1797/3055/258 1798/3051/265 1806/3060/259 +f 1795/3053/250 1796/3052/266 1804/3062/261 +f 1793/3056/252 1794/3054/251 1802/3064/263 +f 1793/3066/252 1801/3253/264 1808/3067/256 +f 1798/3051/265 1799/3050/255 1807/3068/257 +f 1797/3055/258 1805/3254/260 1804/3070/261 +f 1795/3053/250 1803/3255/262 1802/3071/263 +f 1801/3256/264 1802/3257/263 1803/3072/262 +f 1803/3072/262 1804/3258/261 1805/3073/260 +f 1805/3073/260 1806/3259/259 1807/3074/257 +f 1807/3074/257 1808/3260/256 1801/3256/264 +f 1801/3256/264 1803/3072/262 1807/3074/257 +f 1809/1993/144 1816/1992/253 1824/3075/253 +f 1815/1974/167 1814/2199/267 1822/3077/267 +f 1812/1977/249 1820/3261/249 1821/3079/143 +f 1810/1980/268 1818/3262/268 1819/3080/168 +f 1815/1983/167 1823/3263/167 1824/3081/253 +f 1813/2200/143 1821/3264/143 1822/3082/267 +f 1811/2201/168 1819/3265/168 1820/3083/249 +f 1810/1989/268 1809/2202/144 1817/3084/144 +f 1630/1901/267 1638/2928/265 1637/2920/258 +f 1632/1899/253 1640/2916/254 1639/2917/255 +f 1627/1895/168 1635/2912/250 1634/2913/251 +f 1629/1892/143 1637/2920/258 1636/2932/266 +f 1631/1889/167 1639/2917/255 1638/2928/265 diff --git a/src/main/resources/assets/hbm/models/weapons/uzi.obj b/src/main/resources/assets/hbm/models/weapons/uzi.obj new file mode 100644 index 000000000..101594263 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/uzi.obj @@ -0,0 +1,4902 @@ +# Blender v2.79 (sub 0) OBJ File: 'uzi.blend' +# www.blender.org +o GunMirror +v 0.750000 0.000000 3.250000 +v -0.750000 0.000000 3.250000 +v 0.750000 0.000000 -5.500000 +v -0.750000 0.000000 -5.500000 +v 0.750000 1.500000 3.250000 +v -0.750000 1.500000 3.250000 +v 0.750000 1.500000 -5.500000 +v -0.750000 1.500000 -5.500000 +v 0.000000 1.250000 5.500000 +v 0.250000 1.183012 5.500000 +v 0.433013 1.000000 5.500000 +v 0.500000 0.750000 5.500000 +v 0.433013 0.500000 5.500000 +v 0.250000 0.316988 5.500000 +v 0.000000 0.250000 5.500000 +v -0.250000 0.316987 5.500000 +v -0.433012 0.500000 5.500000 +v -0.500000 0.750000 5.500000 +v -0.433013 1.000000 5.500000 +v -0.250000 1.183012 5.500000 +v 0.000000 1.250000 6.375000 +v 0.250000 1.183012 6.375000 +v 0.433013 1.000000 6.375000 +v 0.500000 0.750000 6.375000 +v 0.433013 0.500000 6.375000 +v 0.250000 0.316988 6.375000 +v 0.000000 0.250000 6.375000 +v -0.250000 0.316987 6.375000 +v -0.433012 0.500000 6.375000 +v -0.500000 0.750000 6.375000 +v -0.433013 1.000000 6.375000 +v -0.250000 1.183012 6.375000 +v 0.000000 1.000000 6.375000 +v 0.125000 0.966506 6.375000 +v 0.216506 0.875000 6.375000 +v 0.250000 0.750000 6.375000 +v 0.216506 0.625000 6.375000 +v 0.125000 0.533494 6.375000 +v 0.000000 0.500000 6.375000 +v -0.125000 0.533494 6.375000 +v -0.216506 0.625000 6.375000 +v -0.250000 0.750000 6.375000 +v -0.216506 0.875000 6.375000 +v -0.125000 0.966506 6.375000 +v 0.000000 1.000000 8.375000 +v 0.125000 0.966506 8.375000 +v 0.216506 0.875000 8.375000 +v 0.250000 0.750000 8.375000 +v 0.216506 0.625000 8.375000 +v 0.125000 0.533494 8.375000 +v 0.000000 0.500000 8.375000 +v -0.125000 0.533494 8.375000 +v -0.216506 0.625000 8.375000 +v -0.250000 0.750000 8.375000 +v -0.216506 0.875000 8.375000 +v -0.125000 0.966506 8.375000 +v 0.000000 0.937500 8.375000 +v 0.093750 0.912380 8.375000 +v 0.162380 0.843750 8.375000 +v 0.187500 0.750000 8.375000 +v 0.162380 0.656250 8.375000 +v 0.093750 0.587620 8.375000 +v 0.000000 0.562500 8.375000 +v -0.093750 0.587620 8.375000 +v -0.162380 0.656250 8.375000 +v -0.187500 0.750000 8.375000 +v -0.162380 0.843750 8.375000 +v -0.093750 0.912380 8.375000 +v 0.000000 0.937500 6.375000 +v 0.093750 0.912380 6.375000 +v 0.162380 0.843750 6.375000 +v 0.187500 0.750000 6.375000 +v 0.162380 0.656250 6.375000 +v 0.093750 0.587620 6.375000 +v 0.000000 0.562500 6.375000 +v -0.093750 0.587620 6.375000 +v -0.162380 0.656250 6.375000 +v -0.187500 0.750000 6.375000 +v -0.162380 0.843750 6.375000 +v -0.093750 0.912380 6.375000 +v 0.875000 -0.250000 1.250000 +v -0.875000 -0.250000 1.250000 +v 0.875000 -0.250000 -2.250000 +v -0.875000 -0.250000 -2.250000 +v 0.875000 0.500000 -2.250000 +v 0.875000 0.500000 1.250000 +v -0.875000 0.500000 1.250000 +v -0.875000 0.500000 -2.250000 +v 0.875000 1.000000 1.375000 +v 0.875000 1.000000 3.250000 +v -0.875000 1.000000 3.250000 +v -0.875000 1.000000 1.375000 +v 0.875000 0.125000 3.250000 +v 0.500000 -0.250000 3.250000 +v -0.500000 -0.250000 3.250000 +v -0.875000 0.125000 3.250000 +v 0.500000 -0.250000 1.375000 +v 0.875000 0.125000 1.375000 +v -0.875000 0.125000 1.375000 +v -0.500000 -0.250000 1.375000 +v 0.750000 0.125000 3.625000 +v 0.500000 -0.250000 3.625000 +v -0.750000 1.000000 3.625000 +v 0.750000 1.000000 3.625000 +v 0.625000 0.000000 3.625000 +v -0.625000 0.000000 3.625000 +v 0.625000 1.500000 3.625000 +v -0.625000 1.500000 3.625000 +v 0.625000 0.000000 5.500000 +v -0.625000 0.000000 5.500000 +v 0.625000 1.500000 5.500000 +v -0.625000 1.500000 5.500000 +v -0.750000 0.125000 3.625000 +v -0.500000 -0.250000 3.625000 +v 0.750000 0.125000 5.375000 +v 0.750000 1.000000 5.375000 +v -0.750000 0.125000 5.375000 +v -0.500000 -0.250000 5.375000 +v 0.500000 -0.250000 5.375000 +v -0.750000 1.000000 5.375000 +v 0.750000 1.500000 3.250000 +v 0.750000 1.500000 -3.750000 +v 0.375000 1.500000 3.250000 +v 0.375000 1.500000 -3.750000 +v 0.750000 1.750000 1.250000 +v 0.750000 1.750000 -1.750000 +v 0.375000 1.750000 1.250000 +v 0.375000 1.750000 -1.750000 +v -0.375000 1.500000 3.250000 +v -0.375000 1.500000 -3.750000 +v -0.750000 1.500000 3.250000 +v -0.750000 1.500000 -3.750000 +v -0.375000 1.750000 1.250000 +v -0.375000 1.750000 -1.750000 +v -0.750000 1.750000 1.250000 +v -0.750000 1.750000 -1.750000 +v -0.375000 1.500000 4.562500 +v -0.375000 1.500000 5.437500 +v -0.375000 1.875000 5.437500 +v -0.375000 2.018506 5.404197 +v -0.375000 2.140165 5.309359 +v -0.375000 2.221455 5.167424 +v -0.500000 1.875000 4.562500 +v -0.500000 2.018506 4.595803 +v -0.500000 2.140165 4.690641 +v -0.500000 2.221455 4.832576 +v -0.500000 2.250000 5.000000 +v -0.500000 2.221455 5.167424 +v -0.500000 2.140165 5.309359 +v -0.500000 2.018506 5.404197 +v -0.500000 1.875000 5.437500 +v -0.375000 2.250000 5.000000 +v -0.375000 2.221455 4.832576 +v -0.375000 2.140165 4.690641 +v -0.375000 2.018506 4.595803 +v -0.375000 1.875000 4.562500 +v -0.500000 1.500000 5.437500 +v -0.500000 1.500000 4.562500 +v -0.375000 2.000000 -5.375000 +v -0.375000 2.167424 -5.327425 +v -0.375000 2.309359 -5.191942 +v -0.375000 2.404197 -4.989178 +v -0.375000 2.437500 -4.750000 +v -0.375000 2.404197 -4.510823 +v -0.375000 2.309359 -4.308059 +v -0.375000 2.167424 -4.172575 +v -0.375000 2.000000 -4.125000 +v -0.500000 2.437500 -4.750000 +v -0.500000 2.404197 -4.989178 +v -0.500000 2.309359 -5.191942 +v -0.500000 2.167424 -5.327425 +v -0.500000 2.000000 -5.375000 +v -0.375000 1.500000 -4.125000 +v -0.375000 1.500000 -5.375000 +v -0.500000 2.404197 -4.510823 +v -0.500000 2.309359 -4.308059 +v -0.500000 2.167424 -4.172575 +v -0.500000 2.000000 -4.125000 +v -0.500000 1.500000 -4.125000 +v -0.500000 1.500000 -5.375000 +v 0.750000 1.500000 -1.500000 +v 0.750000 0.750000 -1.500000 +v 0.750000 0.750000 0.125000 +v 0.750000 1.500000 0.125000 +v 0.750000 1.500000 -1.500000 +v 0.750000 1.500000 0.125000 +v 0.750000 1.750000 -1.500000 +v 0.750000 1.750000 0.125000 +v 0.625000 1.500000 -1.500000 +v 0.625000 0.750000 -1.500000 +v 0.625000 0.750000 0.125000 +v 0.625000 1.500000 0.125000 +v -0.375000 -0.250000 -0.250000 +v 0.375000 -0.250000 -0.250000 +v 0.500000 1.500000 -1.500000 +v 0.500000 1.500000 0.125000 +v 0.500000 1.750000 -1.500000 +v 0.500000 1.750000 0.125000 +v 0.375000 -2.750000 -2.000000 +v -0.375000 -2.750000 -2.000000 +v -0.375000 -3.250000 -0.250000 +v -0.375000 -3.250000 -1.500000 +v 0.375000 -3.250000 -0.250000 +v 0.375000 -3.250000 -1.500000 +v 0.375000 -2.000000 -2.000000 +v -0.375000 -2.000000 -2.000000 +v 0.375000 -1.000000 -1.750000 +v -0.375000 -1.000000 -1.750000 +v 0.375000 -0.500000 -2.250000 +v -0.375000 -0.500000 -2.250000 +v 0.375000 -0.250000 -2.250000 +v -0.375000 -0.250000 -2.250000 +v -0.625000 -2.750000 -1.750000 +v -0.625000 -3.250000 -1.250000 +v -0.625000 -3.250000 -0.375000 +v -0.625000 -0.250000 -0.375000 +v -0.625000 -2.000000 -1.750000 +v -0.625000 -1.000000 -1.500000 +v -0.625000 -0.500000 -2.000000 +v -0.625000 -0.250000 -2.000000 +v 0.625000 -3.250000 -1.250000 +v 0.625000 -2.750000 -1.750000 +v 0.625000 -3.250000 -0.375000 +v 0.625000 -0.250000 -0.375000 +v 0.625000 -2.000000 -1.750000 +v 0.625000 -1.000000 -1.500000 +v 0.625000 -0.500000 -2.000000 +v 0.625000 -0.250000 -2.000000 +v 0.250000 0.000000 1.375000 +v -0.250000 0.000000 1.375000 +v 0.250000 0.000000 1.250000 +v -0.250000 0.000000 1.250000 +v 0.250000 -1.250000 1.375000 +v -0.250000 -1.250000 1.375000 +v 0.250000 -1.250000 1.250000 +v -0.250000 -1.250000 1.250000 +v 0.250000 -1.500000 1.000000 +v -0.250000 -1.500000 1.000000 +v 0.250000 -1.625000 1.000000 +v -0.250000 -1.625000 1.000000 +v 0.250000 -1.500000 0.250000 +v -0.250000 -1.500000 0.250000 +v 0.250000 -1.625000 0.250000 +v -0.250000 -1.625000 0.250000 +v 0.250000 -1.250000 -0.250000 +v -0.250000 -1.250000 -0.250000 +v 0.250000 -1.375000 -0.250000 +v -0.250000 -1.375000 -0.250000 +v 0.156250 -0.250000 0.312500 +v -0.156250 -0.250000 0.312500 +v 0.156250 -0.250000 0.187500 +v -0.156250 -0.250000 0.187500 +v 0.156250 -0.875000 0.312500 +v -0.156250 -0.875000 0.312500 +v 0.156250 -0.875000 0.187500 +v -0.156250 -0.875000 0.187500 +v 0.156250 -1.187500 0.562500 +v -0.156250 -1.187500 0.562500 +v 0.375000 1.500000 5.375000 +v -0.375000 1.500000 5.375000 +v 0.375000 1.500000 4.625000 +v -0.375000 1.500000 4.625000 +v 0.375000 1.625000 4.625000 +v 0.375000 1.625000 5.375000 +v -0.375000 1.625000 5.375000 +v -0.375000 1.625000 4.625000 +v 0.000000 1.625000 4.750000 +v 0.176777 1.625000 4.823223 +v 0.250000 1.625000 5.000000 +v 0.176777 1.625000 5.176777 +v 0.000000 1.625000 5.250000 +v -0.176777 1.625000 5.176777 +v -0.250000 1.625000 5.000000 +v -0.176777 1.625000 4.823223 +v 0.000000 1.687500 4.750000 +v 0.176777 1.687500 4.823223 +v 0.250000 1.687500 5.000000 +v 0.176777 1.687500 5.176777 +v 0.000000 1.687500 5.250000 +v -0.176777 1.687500 5.176777 +v -0.250000 1.687500 5.000000 +v -0.176777 1.687500 4.823223 +v 0.062500 1.687500 5.062500 +v -0.062500 1.687500 5.062500 +v 0.062500 1.687500 4.937500 +v -0.062500 1.687500 4.937500 +v 0.062500 2.187500 4.937500 +v 0.062500 2.187500 5.062500 +v -0.062500 2.187500 5.062500 +v -0.062500 2.187500 4.937500 +v 0.250000 1.500000 -4.250000 +v -0.250000 1.500000 -4.250000 +v 0.250000 1.500000 -5.250000 +v -0.250000 1.500000 -5.250000 +v 0.250000 1.750000 -5.250000 +v 0.250000 1.750000 -4.250000 +v -0.250000 1.750000 -4.250000 +v -0.250000 1.750000 -5.250000 +v -0.250000 1.500000 -4.250000 +v -0.250000 1.500000 -5.250000 +v -0.375000 1.500000 -4.250000 +v -0.375000 1.500000 -5.250000 +v -0.375000 2.000000 -4.250000 +v -0.375000 2.000000 -5.250000 +v -0.250000 2.000000 -4.250000 +v -0.250000 2.000000 -5.250000 +v 0.375000 1.500000 -4.250000 +v 0.375000 1.500000 -5.250000 +v 0.250000 1.500000 -4.250000 +v 0.250000 1.500000 -5.250000 +v 0.250000 2.000000 -4.250000 +v 0.250000 2.000000 -5.250000 +v 0.375000 2.000000 -4.250000 +v 0.375000 2.000000 -5.250000 +v 0.187500 1.750000 -4.625000 +v -0.187500 1.750000 -4.625000 +v 0.187500 1.750000 -4.875000 +v -0.187500 1.750000 -4.875000 +v 0.187500 2.250000 -4.875000 +v 0.187500 2.250000 -4.625000 +v -0.187500 2.250000 -4.625000 +v -0.187500 2.250000 -4.875000 +v 0.062500 2.375000 -4.875000 +v 0.062500 2.375000 -4.625000 +v -0.062500 2.375000 -4.625000 +v -0.062500 2.375000 -4.875000 +v 0.125000 2.250000 -4.625000 +v -0.125000 2.250000 -4.625000 +v 0.125000 2.250000 -4.875000 +v -0.125000 2.250000 -4.875000 +v 0.125000 2.125000 -4.625000 +v -0.125000 2.125000 -4.625000 +v 0.125000 2.125000 -4.875000 +v -0.125000 2.125000 -4.875000 +v -0.062500 2.312500 -4.625000 +v -0.062500 2.062500 -4.625000 +v -0.062500 2.312500 -4.875000 +v -0.062500 2.062500 -4.875000 +v 0.062500 2.312500 -4.625000 +v 0.062500 2.062500 -4.625000 +v 0.062500 2.312500 -4.875000 +v 0.062500 2.062500 -4.875000 +v 0.625000 0.000000 -5.500000 +v -0.625000 0.000000 -5.500000 +v 0.625000 1.000000 -5.500000 +v -0.625000 1.000000 -5.500000 +v 0.625000 1.000000 -5.750000 +v 0.625000 0.000000 -5.750000 +v -0.625000 0.000000 -5.750000 +v -0.625000 1.000000 -5.750000 +v 0.625000 0.750000 -6.000000 +v 0.625000 0.250000 -6.000000 +v -0.625000 0.250000 -6.000000 +v -0.625000 0.750000 -6.000000 +v 0.875000 0.312500 -5.875000 +v -0.875000 0.312500 -5.875000 +v 0.875000 0.224112 -5.838388 +v -0.875000 0.224112 -5.838388 +v 0.875000 0.187500 -5.750000 +v -0.875000 0.187500 -5.750000 +v 0.875000 0.224112 -5.661612 +v -0.875000 0.224112 -5.661612 +v 0.875000 0.312500 -5.625000 +v -0.875000 0.312500 -5.625000 +v 0.875000 0.400888 -5.661612 +v -0.875000 0.400888 -5.661612 +v 0.875000 0.437500 -5.750000 +v -0.875000 0.437500 -5.750000 +v 0.875000 0.400888 -5.838388 +v -0.875000 0.400888 -5.838388 +v 0.500000 1.500000 4.562500 +v 0.500000 1.500000 5.437500 +v 0.500000 1.875000 5.437500 +v 0.500000 2.018506 5.404197 +v 0.500000 2.140165 5.309359 +v 0.500000 2.221455 5.167424 +v 0.375000 1.875000 4.562500 +v 0.375000 2.018506 4.595803 +v 0.375000 2.140165 4.690641 +v 0.375000 2.221455 4.832576 +v 0.375000 2.250000 5.000000 +v 0.375000 2.221455 5.167424 +v 0.375000 2.140165 5.309359 +v 0.375000 2.018506 5.404197 +v 0.375000 1.875000 5.437500 +v 0.500000 2.250000 5.000000 +v 0.500000 2.221455 4.832576 +v 0.500000 2.140165 4.690641 +v 0.500000 2.018506 4.595803 +v 0.500000 1.875000 4.562500 +v 0.375000 1.500000 5.437500 +v 0.375000 1.500000 4.562500 +v 0.500000 2.000000 -5.375000 +v 0.500000 2.167424 -5.327425 +v 0.500000 2.309359 -5.191942 +v 0.500000 2.404197 -4.989178 +v 0.500000 2.437500 -4.750000 +v 0.500000 2.404197 -4.510823 +v 0.500000 2.309359 -4.308059 +v 0.500000 2.167424 -4.172575 +v 0.500000 2.000000 -4.125000 +v 0.375000 2.437500 -4.750000 +v 0.375000 2.404197 -4.989178 +v 0.375000 2.309359 -5.191942 +v 0.375000 2.167424 -5.327425 +v 0.375000 2.000000 -5.375000 +v 0.500000 1.500000 -4.125000 +v 0.500000 1.500000 -5.375000 +v 0.375000 2.404197 -4.510823 +v 0.375000 2.309359 -4.308059 +v 0.375000 2.167424 -4.172575 +v 0.375000 2.000000 -4.125000 +v 0.375000 1.500000 -4.125000 +v 0.375000 1.500000 -5.375000 +vt 0.336066 0.391304 +vt 0.049180 0.521739 +vt 0.336066 0.521739 +vt 0.336066 0.260870 +vt 0.049180 0.391304 +vt 0.049180 0.260870 +vt 0.000000 0.130435 +vt -0.000000 0.260870 +vt 0.348361 0.130435 +vt 0.336066 0.000000 +vt 0.336066 0.130435 +vt 0.663934 0.277174 +vt 0.655738 0.260870 +vt 0.655738 0.282609 +vt 0.663934 0.385870 +vt 0.655738 0.369565 +vt 0.655738 0.391304 +vt 0.663934 0.190217 +vt 0.655738 0.173913 +vt 0.655738 0.195652 +vt 0.655738 0.304348 +vt 0.663934 0.288043 +vt 0.663934 0.244565 +vt 0.655738 0.239130 +vt 0.663934 0.353261 +vt 0.655738 0.347826 +vt 0.663934 0.157609 +vt 0.655738 0.152174 +vt 0.663934 0.222826 +vt 0.655738 0.217391 +vt 0.663934 0.342391 +vt 0.655738 0.326087 +vt 0.655738 0.413043 +vt 0.663934 0.396739 +vt 0.663934 0.211957 +vt 0.663934 0.320652 +vt 0.706967 0.510870 +vt 0.704918 0.500000 +vt 0.704918 0.510870 +vt 0.706967 0.565217 +vt 0.704918 0.554348 +vt 0.704918 0.565217 +vt 0.706967 0.543478 +vt 0.704918 0.532609 +vt 0.704918 0.543478 +vt 0.706967 0.597826 +vt 0.704918 0.586957 +vt 0.704918 0.597826 +vt 0.706967 0.489130 +vt 0.704918 0.489130 +vt 0.706967 0.532609 +vt 0.704918 0.521739 +vt 0.706967 0.586957 +vt 0.704918 0.576087 +vt 0.706967 0.478261 +vt 0.704918 0.478261 +vt 0.706967 0.521739 +vt 0.706967 0.576087 +vt 0.704918 0.608696 +vt 0.663102 0.470094 +vt 0.657787 0.445681 +vt 0.652472 0.470094 +vt 0.598361 0.282609 +vt 0.483607 0.434783 +vt 0.598361 0.434783 +vt 0.483607 0.065217 +vt 0.598361 0.217391 +vt 0.598361 0.065217 +vt 0.483607 0.217391 +vt 0.459016 0.065217 +vt 0.459016 0.217391 +vt 0.622951 0.217391 +vt 0.622951 0.065217 +vt 0.483607 0.282609 +vt 0.598361 0.000000 +vt 0.483607 0.000000 +vt 0.663934 -0.000000 +vt 0.725410 0.152174 +vt 0.725410 0.000000 +vt 0.622951 0.119565 +vt 0.622951 0.032609 +vt 0.409836 0.391304 +vt 0.348361 0.260870 +vt 0.348361 0.391304 +vt 0.348361 0.250000 +vt 0.348361 0.510870 +vt 0.409836 0.141304 +vt 0.459016 0.250000 +vt 0.459016 0.141304 +vt 0.409836 0.510870 +vt 0.348361 0.402174 +vt 0.409836 0.130435 +vt 0.348361 -0.000000 +vt 0.409836 0.250000 +vt 0.348361 0.141304 +vt 0.737705 0.141304 +vt 0.823770 0.141304 +vt 0.836066 0.119565 +vt 0.836066 0.032609 +vt 0.795082 0.141304 +vt 0.737705 0.010870 +vt 0.639344 0.510870 +vt 0.475410 0.489130 +vt 0.409836 0.510870 +vt 0.573770 0.456522 +vt 0.536885 0.434783 +vt 0.536885 0.456522 +vt 0.483607 0.434783 +vt 0.475410 0.456522 +vt 0.483607 0.456522 +vt 0.639344 0.586956 +vt 0.475410 0.565217 +vt 0.409836 0.586956 +vt 0.475410 0.532609 +vt 0.639344 0.510870 +vt 0.409836 0.510870 +vt 0.733772 0.750000 +vt 0.747951 0.782232 +vt 0.762129 0.750000 +vt 0.742525 0.779778 +vt 0.737925 0.772791 +vt 0.733772 0.750000 +vt 0.692623 0.798848 +vt 0.713082 0.760865 +vt 0.672164 0.760865 +vt 0.684794 0.795957 +vt 0.678156 0.787723 +vt 0.672164 0.760865 +vt 0.180328 0.065217 +vt 0.049180 0.130435 +vt 0.180328 0.130435 +vt 0.233607 0.065217 +vt 0.233607 0.130435 +vt 0.467213 0.260870 +vt 0.471311 0.326087 +vt 0.471311 0.260870 +vt 0.413934 0.260870 +vt 0.467213 0.250000 +vt 0.413934 0.250000 +vt 0.413934 0.326087 +vt 0.409836 0.260870 +vt 0.409836 0.326087 +vt 0.471311 0.413043 +vt 0.479508 0.434783 +vt 0.479508 0.413043 +vt 0.418033 0.434783 +vt 0.409836 0.413043 +vt 0.409836 0.434783 +vt 0.471311 0.434783 +vt 0.418033 0.413043 +vt 0.483607 0.478261 +vt 0.180328 0.141304 +vt 0.528689 0.695652 +vt 0.536885 0.608696 +vt 0.495902 0.608696 +vt 0.467213 0.326087 +vt 0.717213 0.673913 +vt 0.676230 0.663043 +vt 0.676230 0.673913 +vt 0.717213 0.619565 +vt 0.676230 0.608696 +vt 0.676230 0.619565 +vt 0.733607 0.619565 +vt 0.719262 0.608696 +vt 0.719262 0.673913 +vt 0.733607 0.663043 +vt 0.717213 0.663043 +vt 0.758197 0.673913 +vt 0.733607 0.673913 +vt 0.758197 0.619565 +vt 0.733607 0.608696 +vt 0.774590 0.619565 +vt 0.758197 0.608696 +vt 0.774590 0.663043 +vt 0.758197 0.663043 +vt 0.668033 0.722826 +vt 0.657787 0.777174 +vt 0.668033 0.777174 +vt 0.653689 0.722826 +vt 0.643443 0.777174 +vt 0.653689 0.777174 +vt 0.657787 0.722826 +vt 0.672131 0.722826 +vt 0.672131 0.777174 +vt 0.653689 0.695652 +vt 0.643443 0.722826 +vt 0.657787 0.695652 +vt 0.672131 0.695652 +vt 0.536885 0.478261 +vt 0.573770 0.489130 +vt 0.741803 0.793478 +vt 0.766393 0.858696 +vt 0.766393 0.793478 +vt 0.741803 0.858696 +vt 0.737705 0.793478 +vt 0.737705 0.858696 +vt 0.770492 0.858696 +vt 0.770492 0.793478 +vt 0.813518 0.744565 +vt 0.821721 0.766322 +vt 0.829925 0.744565 +vt 0.651639 0.853261 +vt 0.684426 0.809783 +vt 0.651639 0.809783 +vt 0.829918 0.777174 +vt 0.834016 0.766304 +vt 0.829918 0.766304 +vt 0.838115 0.766304 +vt 0.842213 0.722826 +vt 0.838115 0.722826 +vt 0.834016 0.722826 +vt 0.829918 0.722826 +vt 0.842213 0.766304 +vt 0.846311 0.722826 +vt 0.696721 0.809783 +vt 0.729508 0.853261 +vt 0.729508 0.809783 +vt 0.684426 0.864130 +vt 0.684426 0.853261 +vt 0.684426 0.864130 +vt 0.651639 0.853261 +vt 0.651639 0.864130 +vt 0.696721 0.853261 +vt 0.688525 0.809783 +vt 0.688525 0.853261 +vt 0.737705 0.853261 +vt 0.737705 0.809783 +vt 0.688525 0.809783 +vt 0.647541 0.853261 +vt 0.651639 0.809783 +vt 0.647541 0.809783 +vt 0.647541 0.853261 +vt 0.647541 0.809783 +vt 0.684426 0.853261 +vt 0.688525 0.809783 +vt 0.684426 0.809783 +vt 0.635246 0.842391 +vt 0.631148 0.847826 +vt 0.635246 0.847826 +vt 0.631148 0.842391 +vt 0.627049 0.836957 +vt 0.639344 0.836957 +vt 0.614754 0.847826 +vt 0.610656 0.842391 +vt 0.610656 0.847826 +vt 0.606557 0.836957 +vt 0.608607 0.836957 +vt 0.618852 0.836957 +vt 0.614754 0.842391 +vt 0.608607 0.826087 +vt 0.606557 0.793478 +vt 0.616803 0.826087 +vt 0.618562 0.793404 +vt 0.610656 0.820652 +vt 0.614754 0.820652 +vt 0.637295 0.826087 +vt 0.639344 0.793478 +vt 0.629098 0.826087 +vt 0.627049 0.793478 +vt 0.631148 0.820652 +vt 0.635246 0.820652 +vt 0.643443 0.951087 +vt 0.659836 0.885870 +vt 0.643443 0.907609 +vt 0.602459 0.907609 +vt 0.586066 0.972826 +vt 0.602459 0.951087 +vt 0.524591 0.978309 +vt 0.520510 0.989130 +vt 0.524591 0.999951 +vt 0.524590 0.956569 +vt 0.521705 0.959739 +vt 0.527475 0.975042 +vt 0.733772 0.750000 +vt 0.747951 0.782232 +vt 0.762129 0.750000 +vt 0.742525 0.779778 +vt 0.737925 0.772791 +vt 0.733772 0.750000 +vt 0.692623 0.798848 +vt 0.713082 0.760865 +vt 0.672164 0.760865 +vt 0.684794 0.795957 +vt 0.678156 0.787723 +vt 0.672164 0.760865 +vt 0.663934 0.266304 +vt 0.663934 0.375000 +vt 0.663934 0.179348 +vt 0.663934 0.298913 +vt 0.663934 0.255435 +vt 0.663934 0.364130 +vt 0.663934 0.168478 +vt 0.663934 0.233696 +vt 0.663934 0.331522 +vt 0.663934 0.407609 +vt 0.663934 0.201087 +vt 0.663934 0.309783 +vt 0.706967 0.500000 +vt 0.706967 0.554348 +vt 0.706967 0.608696 +vt 0.654719 0.476052 +vt 0.657787 0.478232 +vt 0.660855 0.476052 +vt 0.663924 0.461957 +vt 0.663102 0.453819 +vt 0.660855 0.447861 +vt 0.654719 0.447861 +vt 0.652472 0.453819 +vt 0.651650 0.461957 +vt 0.663934 0.152174 +vt 0.635246 0.152174 +vt 0.635246 0.000000 +vt 0.409836 0.260870 +vt 0.409836 0.402174 +vt 0.409836 0.000000 +vt 0.823770 0.010870 +vt 0.795082 0.010870 +vt 0.639344 0.434783 +vt 0.409836 0.434783 +vt 0.573770 0.565217 +vt 0.573770 0.532609 +vt 0.734852 0.762334 +vt 0.737925 0.772791 +vt 0.742525 0.779778 +vt 0.753377 0.779778 +vt 0.757977 0.772791 +vt 0.761050 0.762334 +vt 0.762129 0.717768 +vt 0.733772 0.717768 +vt 0.734852 0.762334 +vt 0.733772 0.717768 +vt 0.762129 0.717768 +vt 0.762129 0.750000 +vt 0.761050 0.762334 +vt 0.757977 0.772791 +vt 0.747951 0.782232 +vt 0.753377 0.779778 +vt 0.673721 0.775401 +vt 0.678156 0.787723 +vt 0.684794 0.795957 +vt 0.700452 0.795957 +vt 0.707090 0.787723 +vt 0.711525 0.775401 +vt 0.713082 0.717456 +vt 0.672164 0.717456 +vt 0.673721 0.775401 +vt 0.672164 0.717456 +vt 0.713082 0.717456 +vt 0.713082 0.760865 +vt 0.711525 0.775401 +vt 0.707090 0.787723 +vt 0.692623 0.798848 +vt 0.700452 0.795957 +vt 0.049180 -0.000000 +vt 0.233607 0.141304 +vt 0.536885 0.673913 +vt 0.528689 0.586957 +vt 0.500000 0.586957 +vt 0.495902 0.673913 +vt 0.500000 0.695652 +vt 0.717213 0.608696 +vt 0.731557 0.608696 +vt 0.731557 0.673913 +vt 0.774590 0.608696 +vt 0.774590 0.673913 +vt 0.643443 0.695652 +vt 0.668033 0.695652 +vt 0.827522 0.729181 +vt 0.821721 0.722809 +vt 0.815921 0.729181 +vt 0.815921 0.759950 +vt 0.827522 0.759950 +vt 0.834016 0.777174 +vt 0.846311 0.766304 +vt 0.651639 0.864130 +vt 0.688525 0.853261 +vt 0.688525 0.853261 +vt 0.629098 0.836957 +vt 0.637295 0.836957 +vt 0.616803 0.836957 +vt 0.651639 0.972826 +vt 0.659836 0.972826 +vt 0.651639 0.885870 +vt 0.594262 0.885870 +vt 0.586066 0.885870 +vt 0.594262 0.972826 +vt 0.528671 0.989130 +vt 0.527476 0.981478 +vt 0.521705 0.981478 +vt 0.521705 0.996782 +vt 0.527476 0.996782 +vt 0.520510 0.967391 +vt 0.521705 0.975042 +vt 0.524590 0.978212 +vt 0.528670 0.967391 +vt 0.527475 0.959739 +vt 0.734852 0.762334 +vt 0.737925 0.772791 +vt 0.742525 0.779778 +vt 0.753377 0.779778 +vt 0.757977 0.772791 +vt 0.761050 0.762334 +vt 0.762129 0.717768 +vt 0.733772 0.717768 +vt 0.734852 0.762334 +vt 0.733772 0.717768 +vt 0.762129 0.717768 +vt 0.762129 0.750000 +vt 0.761050 0.762334 +vt 0.757977 0.772791 +vt 0.747951 0.782232 +vt 0.753377 0.779778 +vt 0.673721 0.775401 +vt 0.678156 0.787723 +vt 0.684794 0.795957 +vt 0.700452 0.795957 +vt 0.707090 0.787723 +vt 0.711525 0.775401 +vt 0.713082 0.717456 +vt 0.672164 0.717456 +vt 0.673721 0.775401 +vt 0.672164 0.717456 +vt 0.713082 0.717456 +vt 0.713082 0.760865 +vt 0.711525 0.775401 +vt 0.707090 0.787723 +vt 0.692623 0.798848 +vt 0.700452 0.795957 +vt 0.627049 0.217391 +vt 0.627049 0.239130 +vt 0.627049 0.326087 +vt 0.627049 0.347826 +vt 0.627049 0.391304 +vt 0.627049 0.413043 +vt 0.627049 0.195652 +vt 0.627049 0.304348 +vt 0.627049 0.260870 +vt 0.627049 0.282609 +vt 0.627049 0.369565 +vt 0.627049 0.173913 +vt 0.627049 0.152174 +vt 0.639344 0.554348 +vt 0.639344 0.565217 +vt 0.639344 0.532609 +vt 0.639344 0.543478 +vt 0.639344 0.586957 +vt 0.639344 0.597826 +vt 0.639344 0.489130 +vt 0.639344 0.500000 +vt 0.639344 0.521739 +vt 0.639344 0.576087 +vt 0.639344 0.478261 +vt 0.639344 0.510870 +vt 0.639344 0.608696 +vt 0.772541 0.510870 +vt 0.772541 0.565217 +vt 0.772541 0.543478 +vt 0.772541 0.597826 +vt 0.772541 0.500000 +vt 0.772541 0.554348 +vt 0.772541 0.532609 +vt 0.772541 0.586957 +vt 0.772541 0.489130 +vt 0.772541 0.521739 +vt 0.772541 0.576087 +vt 0.772541 0.608696 +vt 0.725410 0.271739 +vt 0.737705 0.233696 +vt 0.725410 0.228261 +vt 0.663934 0.358696 +vt 0.725410 0.358696 +vt 0.663934 0.228261 +vt 0.663934 0.402174 +vt 0.663934 0.271739 +vt 0.663934 0.478261 +vt 0.725410 0.402174 +vt 0.795082 0.271739 +vt 0.737705 0.271739 +vt 0.737705 0.396739 +vt 0.737705 0.478261 +vt 0.725410 0.478261 +vt 0.737705 0.228261 +vt 0.737705 0.358696 +vt 0.795082 0.228261 +vt 0.737705 0.152174 +vt 0.795082 0.396739 +vt 0.795082 0.478261 +vt 0.737705 0.402174 +vt 0.795082 0.358696 +vt 0.639344 0.489130 +vt 0.639344 0.456522 +vt 0.409836 0.456522 +vt 0.409836 0.489130 +vt 0.639344 0.565217 +vt 0.639344 0.532609 +vt 0.409836 0.532609 +vt 0.409836 0.565217 +vt 0.741803 0.782609 +vt 0.735656 0.793478 +vt 0.741803 0.793478 +vt 0.760246 0.782609 +vt 0.754098 0.793478 +vt 0.760246 0.793478 +vt 0.725410 0.782609 +vt 0.713115 0.793478 +vt 0.725410 0.793478 +vt 0.735656 0.782609 +vt 0.729508 0.793478 +vt 0.754098 0.782609 +vt 0.747951 0.793478 +vt 0.782787 0.782609 +vt 0.770492 0.793478 +vt 0.782787 0.793478 +vt 0.770492 0.782609 +vt 0.766393 0.793478 +vt 0.729508 0.782609 +vt 0.747951 0.782609 +vt 0.766393 0.782609 +vt 0.709016 0.809783 +vt 0.715164 0.798913 +vt 0.709016 0.798913 +vt 0.684426 0.809783 +vt 0.692623 0.798913 +vt 0.684426 0.798913 +vt 0.663934 0.809783 +vt 0.670082 0.798913 +vt 0.663934 0.798913 +vt 0.715164 0.809783 +vt 0.721311 0.798913 +vt 0.721311 0.809783 +vt 0.737705 0.798913 +vt 0.692623 0.809783 +vt 0.700820 0.798913 +vt 0.670082 0.809783 +vt 0.676230 0.798913 +vt 0.647541 0.809783 +vt 0.647541 0.798913 +vt 0.700820 0.809783 +vt 0.676230 0.809783 +vt 0.561475 0.934783 +vt 0.586066 0.891304 +vt 0.561475 0.891304 +vt 0.491803 0.695652 +vt 0.467213 0.956522 +vt 0.491803 0.956522 +vt 0.561475 0.804348 +vt 0.586066 0.739130 +vt 0.561475 0.739130 +vt 0.586066 0.695652 +vt 0.561475 0.695652 +vt 0.586066 0.804348 +vt 0.561475 0.956522 +vt 0.586066 0.934783 +vt 0.545082 0.739130 +vt 0.553279 0.804348 +vt 0.553279 0.739130 +vt 0.553279 0.956522 +vt 0.561475 0.934783 +vt 0.561475 0.956522 +vt 0.545082 0.804348 +vt 0.545082 0.891304 +vt 0.553279 0.934783 +vt 0.500000 0.956522 +vt 0.536885 0.695652 +vt 0.528689 0.695652 +vt 0.545082 0.804348 +vt 0.500000 0.695652 +vt 0.459016 0.695652 +vt 0.467213 0.695652 +vt 0.545082 0.891304 +vt 0.553279 0.804348 +vt 0.553279 0.934783 +vt 0.545082 0.739130 +vt 0.536885 0.695652 +vt 0.553279 0.739130 +vt 0.536885 0.891304 +vt 0.538934 0.891304 +vt 0.717213 0.717391 +vt 0.676230 0.717391 +vt 0.731557 0.717391 +vt 0.719262 0.717391 +vt 0.758197 0.717391 +vt 0.733607 0.717391 +vt 0.774590 0.717391 +vt 0.793033 0.755435 +vt 0.799180 0.750000 +vt 0.793033 0.750000 +vt 0.780738 0.755435 +vt 0.786885 0.750000 +vt 0.780738 0.750000 +vt 0.768443 0.755435 +vt 0.774590 0.750000 +vt 0.768443 0.750000 +vt 0.805328 0.755435 +vt 0.811475 0.750000 +vt 0.805328 0.750000 +vt 0.786885 0.755435 +vt 0.774590 0.755435 +vt 0.762295 0.755435 +vt 0.762295 0.750000 +vt 0.799180 0.755435 +vt 0.606557 0.853261 +vt 0.598361 0.847826 +vt 0.598361 0.853261 +vt 0.647541 0.793478 +vt 0.627049 0.858696 +vt 0.618852 0.847826 +vt 0.618852 0.858696 +vt 0.639344 0.847826 +vt 0.647541 0.836957 +vt 0.606557 0.798913 +vt 0.598361 0.788043 +vt 0.598361 0.798913 +vt 0.598361 0.804348 +vt 0.606557 0.815217 +vt 0.606557 0.804348 +vt 0.606557 0.847826 +vt 0.598361 0.836957 +vt 0.598361 0.831522 +vt 0.606557 0.836957 +vt 0.606557 0.831522 +vt 0.598361 0.820652 +vt 0.606557 0.820652 +vt 0.598361 0.815217 +vt 0.500000 0.956522 +vt 0.643443 0.972826 +vt 0.602459 0.994565 +vt 0.643443 0.994565 +vt 0.602459 0.885870 +vt 0.643443 0.864130 +vt 0.602459 0.864130 +vt 0.602459 0.972826 +vt 0.643443 0.885870 +vt 0.586066 0.961957 +vt 0.528689 0.967391 +vt 0.586066 0.967391 +vt 0.586066 0.956522 +vt 0.528689 0.961957 +vt 0.586066 0.994565 +vt 0.528689 1.000000 +vt 0.586066 1.000000 +vt 0.586066 0.989130 +vt 0.528689 0.994565 +vt 0.586066 0.983696 +vt 0.528689 0.989130 +vt 0.586066 0.978261 +vt 0.528689 0.983696 +vt 0.586066 0.972826 +vt 0.528689 0.978261 +vt 0.528689 0.972826 +vt 0.553279 0.956522 +vt 0.741803 0.782609 +vt 0.735656 0.793478 +vt 0.741803 0.793478 +vt 0.760246 0.782609 +vt 0.754098 0.793478 +vt 0.760246 0.793478 +vt 0.725410 0.782609 +vt 0.713115 0.793478 +vt 0.725410 0.793478 +vt 0.735656 0.782609 +vt 0.729508 0.793478 +vt 0.754098 0.782609 +vt 0.747951 0.793478 +vt 0.782787 0.782609 +vt 0.770492 0.793478 +vt 0.782787 0.793478 +vt 0.770492 0.782609 +vt 0.766393 0.793478 +vt 0.729508 0.782609 +vt 0.747951 0.782609 +vt 0.766393 0.782609 +vt 0.709016 0.809783 +vt 0.715164 0.798913 +vt 0.709016 0.798913 +vt 0.684426 0.809783 +vt 0.692623 0.798913 +vt 0.684426 0.798913 +vt 0.663934 0.809783 +vt 0.670082 0.798913 +vt 0.663934 0.798913 +vt 0.715164 0.809783 +vt 0.721311 0.798913 +vt 0.721311 0.809783 +vt 0.737705 0.798913 +vt 0.692623 0.809783 +vt 0.700820 0.798913 +vt 0.670082 0.809783 +vt 0.676230 0.798913 +vt 0.647541 0.809783 +vt 0.647541 0.798913 +vt 0.700820 0.809783 +vt 0.676230 0.809783 +vt 0.772541 0.478261 +vt 0.795082 0.233696 +vt 0.795082 0.152174 +vt 0.795082 0.402174 +vt 0.713115 0.782609 +vt 0.737705 0.809783 +vt 0.586066 0.956522 +vt 0.459016 0.956522 +vt 0.811475 0.755435 +vt 0.627049 0.847826 +vt 0.647541 0.847826 +vt 0.606557 0.788043 +vt 0.528689 0.956522 +vt 0.713115 0.782609 +vt 0.737705 0.809783 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.9487 0.0000 0.3162 +vn -0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.9487 0.0000 0.3162 +vn 0.0000 0.6247 0.7809 +vn 0.0000 -0.7682 -0.6402 +vn 0.8660 0.5000 0.0000 +vn -0.8660 0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.4072 -0.9129 0.0287 +vn -0.9363 -0.3291 0.1225 +vn -0.9188 -0.3671 0.1452 +vn 0.3827 -0.9239 0.0000 +vn 0.4072 -0.9129 0.0287 +vn -0.9871 0.0000 0.1602 +vn -0.9239 -0.3827 0.0000 +vn 0.9239 -0.3827 0.0000 +vn -0.3827 -0.9239 0.0000 +vn 0.9188 -0.3671 0.1452 +vn -0.4719 -0.8817 0.0000 +vn 0.9363 -0.3291 0.1225 +vn 0.9871 0.0000 0.1602 +vn 0.4719 -0.8817 0.0000 +vn -0.9571 -0.2898 0.0000 +vn 0.9571 -0.2898 0.0000 +vn 0.0000 0.9923 0.1240 +vn 0.0000 0.9923 -0.1240 +vn 0.0000 0.9981 0.0621 +vn 0.0000 0.9981 -0.0621 +vn 0.0000 0.9412 -0.3377 +vn 0.0000 0.7555 -0.6552 +vn 0.0000 0.7555 0.6552 +vn 0.0000 0.9412 0.3377 +vn 0.0000 0.1138 -0.9935 +vn 0.0000 0.4305 -0.9026 +vn 0.0000 0.1138 0.9935 +vn 0.0000 0.4305 0.9026 +vn 0.0000 0.8121 0.5835 +vn 0.0000 0.4965 0.8681 +vn 0.0000 0.9588 -0.2840 +vn 0.0000 0.1380 -0.9904 +vn 0.0000 0.4964 -0.8681 +vn 0.0000 0.1380 0.9904 +vn 0.0000 0.9588 0.2840 +vn 0.0000 0.8121 -0.5835 +vn -0.3416 -0.3416 -0.8756 +vn 0.4148 -0.2800 -0.8658 +vn -0.4148 -0.2800 -0.8658 +vn -0.2298 0.0000 0.9732 +vn 0.2298 0.0000 0.9732 +vn -0.3711 0.1112 -0.9219 +vn 0.3416 -0.3416 -0.8756 +vn 0.3458 -0.6635 -0.6635 +vn -0.3458 -0.6635 -0.6635 +vn 0.3711 0.1112 -0.9219 +vn -0.3827 0.0000 -0.9239 +vn -0.8727 -0.2257 -0.4330 +vn 0.9239 0.0000 -0.3827 +vn 0.3827 0.0000 -0.9239 +vn -0.9607 -0.1962 -0.1962 +vn -0.9123 0.0530 -0.4062 +vn -0.8507 0.0000 0.5257 +vn 0.9607 -0.1962 -0.1962 +vn 0.9123 0.0530 -0.4062 +vn 0.8507 0.0000 0.5257 +vn 0.8727 -0.2257 -0.4330 +vn -0.9626 -0.0605 -0.2642 +vn 0.9626 -0.0605 -0.2642 +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.9732 -0.2298 +vn 0.0000 0.9732 0.2298 +vn 0.0000 0.8944 0.4472 +vn 0.0000 -0.8944 -0.4472 +vn -0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +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.0000 -0.9239 -0.3827 +vn 0.0000 -0.3827 -0.9239 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn -0.0000 0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn -0.9239 0.0000 -0.3827 +s off +f 2/1/1 3/2/1 1/3/1 +f 6/4/2 4/5/2 2/1/2 +f 8/6/3 3/7/3 4/8/3 +f 107/9/4 1/10/4 5/11/4 +f 33/12/5 22/13/5 21/14/5 +f 40/15/5 29/16/5 28/17/5 +f 37/18/5 26/19/5 25/20/5 +f 32/21/5 33/22/5 21/14/5 +f 22/13/5 35/23/5 23/24/5 +f 29/16/5 42/25/5 30/26/5 +f 26/19/5 39/27/5 27/28/5 +f 23/24/5 36/29/5 24/30/5 +f 42/31/5 31/32/5 30/26/5 +f 27/33/5 40/34/5 28/17/5 +f 36/35/5 25/20/5 24/30/5 +f 43/36/5 32/21/5 31/32/5 +f 60/37/5 49/38/5 48/39/5 +f 67/40/5 56/41/5 55/42/5 +f 57/43/5 46/44/5 45/45/5 +f 64/46/5 53/47/5 52/48/5 +f 49/38/5 62/49/5 50/50/5 +f 56/41/5 57/43/5 45/45/5 +f 58/51/5 47/52/5 46/44/5 +f 65/53/5 54/54/5 53/47/5 +f 50/50/5 63/55/5 51/56/5 +f 59/57/5 48/39/5 47/52/5 +f 66/58/5 55/42/5 54/54/5 +f 51/59/5 64/46/5 52/48/5 +f 79/60/5 75/61/5 71/62/5 +f 82/63/1 83/64/1 81/65/1 +f 85/66/6 87/67/6 86/68/6 +f 88/69/3 83/70/3 84/71/3 +f 86/68/5 82/72/5 81/73/5 +f 87/67/2 84/74/2 82/63/2 +f 85/66/7 81/75/7 83/76/7 +f 89/77/6 91/78/6 90/79/6 +f 100/80/3 89/77/3 97/81/3 +f 110/82/2 108/83/2 106/84/2 +f 106/84/8 6/4/8 2/1/8 +f 108/85/6 5/11/6 6/4/6 +f 105/86/1 2/1/1 1/3/1 +f 111/87/5 110/88/5 109/89/5 +f 109/90/1 106/91/1 105/86/1 +f 111/92/7 105/93/7 107/9/7 +f 112/94/6 107/95/6 108/85/6 +f 103/96/6 90/79/6 91/78/6 +f 117/97/5 118/98/5 119/99/5 +f 120/100/6 104/101/6 103/96/6 +f 123/102/2 128/103/2 124/104/2 +f 125/105/7 186/106/7 188/107/7 +f 185/108/7 126/109/7 187/110/7 +f 131/111/2 136/112/2 132/113/2 +f 134/114/7 129/115/7 130/116/7 +f 156/117/7 152/118/7 139/119/7 +f 146/120/2 145/121/2 143/122/2 +f 163/123/7 167/124/7 159/125/7 +f 169/126/2 170/127/2 172/128/2 +f 182/129/7 7/130/7 181/131/7 +f 1/10/7 182/129/7 183/132/7 +f 5/11/7 183/132/7 184/133/7 +f 191/134/3 184/135/3 183/136/3 +f 190/137/6 183/138/6 182/139/6 +f 189/140/5 182/141/5 181/142/5 +f 196/143/3 188/144/3 186/145/3 +f 197/146/5 185/147/5 187/148/5 +f 198/149/7 195/150/7 197/146/7 +f 126/109/6 197/151/6 187/110/6 +f 189/152/6 7/130/6 8/6/6 +f 214/153/1 204/154/1 203/155/1 +f 192/156/7 190/137/7 189/140/7 +f 236/157/2 230/158/2 232/159/2 +f 233/160/7 231/161/7 229/162/7 +f 239/163/7 235/164/7 233/160/7 +f 236/165/2 240/166/2 234/167/2 +f 242/168/2 240/166/2 238/169/2 +f 243/170/7 237/171/7 239/163/7 +f 247/172/7 241/173/7 243/170/7 +f 242/168/2 248/174/2 244/175/2 +f 255/176/3 252/177/3 251/178/3 +f 254/179/5 249/180/5 250/181/5 +f 256/182/2 250/181/2 252/177/2 +f 253/183/7 251/178/7 249/184/7 +f 258/185/9 253/186/9 254/179/9 +f 255/176/10 258/187/10 256/182/10 +f 253/183/7 257/188/7 255/176/7 +f 254/179/2 256/182/2 258/185/2 +f 128/103/6 198/189/6 197/151/6 +f 125/105/6 198/189/6 127/190/6 +f 263/191/6 265/192/6 264/193/6 +f 266/194/3 261/195/3 262/196/3 +f 264/193/5 260/197/5 259/198/5 +f 281/199/6 279/200/6 277/201/6 +f 306/202/7 299/203/7 300/204/7 +f 287/205/6 289/206/6 288/207/6 +f 290/208/3 285/209/3 286/210/3 +f 288/207/5 284/211/5 283/212/5 +f 289/206/2 286/210/2 284/211/2 +f 287/213/7 283/214/7 285/209/7 +f 295/215/6 297/216/6 296/217/6 +f 306/202/6 303/218/6 305/219/6 +f 314/220/6 311/221/6 313/222/6 +f 298/223/3 293/224/3 294/225/3 +f 296/217/5 292/226/5 291/227/5 +f 305/219/5 301/228/5 299/203/5 +f 313/229/5 309/230/5 307/231/5 +f 304/232/3 300/204/3 302/233/3 +f 312/234/3 308/235/3 310/236/3 +f 310/236/2 311/221/2 312/234/2 +f 341/237/3 326/238/3 323/239/3 +f 337/240/3 322/241/3 326/238/3 +f 319/242/3 341/237/3 323/239/3 +f 325/243/5 339/244/5 324/245/5 +f 320/246/5 339/244/5 327/247/5 +f 321/248/5 335/249/5 325/243/5 +f 320/246/5 331/250/5 315/251/5 +f 332/252/5 321/248/5 316/253/5 +f 340/254/5 336/255/5 316/253/5 +f 333/256/3 319/242/3 317/257/3 +f 322/241/3 334/258/3 318/259/3 +f 338/260/3 342/261/3 317/257/3 +f 351/262/7 343/263/7 352/264/7 +f 353/265/2 346/266/2 354/267/2 +f 360/268/2 364/269/2 368/270/2 +f 359/271/7 357/272/7 365/273/7 +f 390/274/7 386/275/7 373/276/7 +f 380/277/2 379/278/2 377/279/2 +f 397/280/7 401/281/7 393/282/7 +f 403/283/2 404/284/2 406/285/2 +f 2/1/1 4/5/1 3/2/1 +f 6/4/2 8/6/2 4/5/2 +f 8/6/3 7/130/3 3/7/3 +f 107/9/4 105/93/4 1/10/4 +f 33/12/5 34/286/5 22/13/5 +f 40/15/5 41/287/5 29/16/5 +f 37/18/5 38/288/5 26/19/5 +f 32/21/5 44/289/5 33/22/5 +f 22/13/5 34/290/5 35/23/5 +f 29/16/5 41/291/5 42/25/5 +f 26/19/5 38/292/5 39/27/5 +f 23/24/5 35/293/5 36/29/5 +f 42/31/5 43/294/5 31/32/5 +f 27/33/5 39/295/5 40/34/5 +f 36/35/5 37/296/5 25/20/5 +f 43/36/5 44/297/5 32/21/5 +f 60/37/5 61/298/5 49/38/5 +f 67/40/5 68/299/5 56/41/5 +f 57/43/5 58/51/5 46/44/5 +f 64/46/5 65/53/5 53/47/5 +f 49/38/5 61/298/5 62/49/5 +f 56/41/5 68/299/5 57/43/5 +f 58/51/5 59/57/5 47/52/5 +f 65/53/5 66/58/5 54/54/5 +f 50/50/5 62/49/5 63/55/5 +f 59/57/5 60/37/5 48/39/5 +f 66/58/5 67/40/5 55/42/5 +f 51/59/5 63/300/5 64/46/5 +f 71/62/5 70/301/5 79/60/5 +f 70/301/5 69/302/5 79/60/5 +f 69/302/5 80/303/5 79/60/5 +f 79/60/5 78/304/5 77/305/5 +f 77/305/5 76/306/5 75/61/5 +f 75/61/5 74/307/5 71/62/5 +f 74/307/5 73/308/5 71/62/5 +f 73/308/5 72/309/5 71/62/5 +f 79/60/5 77/305/5 75/61/5 +f 82/63/1 84/74/1 83/64/1 +f 85/66/6 88/69/6 87/67/6 +f 88/69/3 85/66/3 83/70/3 +f 86/68/5 87/67/5 82/72/5 +f 87/67/2 88/69/2 84/74/2 +f 85/66/7 86/68/7 81/75/7 +f 89/77/6 92/310/6 91/78/6 +f 100/80/3 99/311/3 92/310/3 +f 92/310/3 89/77/3 100/80/3 +f 89/77/3 98/312/3 97/81/3 +f 110/82/2 112/313/2 108/83/2 +f 106/84/8 108/83/8 6/4/8 +f 108/85/6 107/95/6 5/11/6 +f 105/86/1 106/91/1 2/1/1 +f 111/87/5 112/94/5 110/88/5 +f 109/90/1 110/314/1 106/91/1 +f 111/92/7 109/315/7 105/93/7 +f 112/94/6 111/87/6 107/95/6 +f 103/96/6 104/101/6 90/79/6 +f 119/99/5 115/316/5 117/97/5 +f 115/316/5 116/317/5 117/97/5 +f 116/317/5 120/100/5 117/97/5 +f 120/100/6 116/317/6 104/101/6 +f 123/102/2 127/190/2 128/103/2 +f 125/105/7 121/318/7 186/106/7 +f 185/108/7 122/319/7 126/109/7 +f 131/111/2 135/320/2 136/112/2 +f 134/114/7 133/321/7 129/115/7 +f 156/117/7 155/322/7 154/323/7 +f 154/323/7 153/324/7 156/117/7 +f 153/324/7 152/118/7 156/117/7 +f 152/118/7 142/325/7 139/119/7 +f 142/325/7 141/326/7 139/119/7 +f 141/326/7 140/327/7 139/119/7 +f 139/119/7 138/328/7 137/329/7 +f 137/329/7 156/117/7 139/119/7 +f 145/121/2 144/330/2 143/122/2 +f 143/122/2 158/331/2 157/332/2 +f 157/332/2 151/333/2 143/122/2 +f 151/333/2 150/334/2 149/335/2 +f 143/122/2 151/333/2 147/336/2 +f 149/335/2 148/337/2 151/333/2 +f 148/337/2 147/336/2 151/333/2 +f 147/336/2 146/120/2 143/122/2 +f 159/125/7 160/338/7 161/339/7 +f 161/339/7 162/340/7 159/125/7 +f 162/340/7 163/123/7 159/125/7 +f 163/123/7 164/341/7 167/124/7 +f 164/341/7 165/342/7 167/124/7 +f 165/342/7 166/343/7 167/124/7 +f 167/124/7 173/344/7 174/345/7 +f 174/345/7 159/125/7 167/124/7 +f 170/127/2 171/346/2 172/128/2 +f 172/128/2 180/347/2 179/348/2 +f 179/348/2 178/349/2 172/128/2 +f 178/349/2 177/350/2 176/351/2 +f 172/128/2 178/349/2 168/352/2 +f 176/351/2 175/353/2 178/349/2 +f 175/353/2 168/352/2 178/349/2 +f 168/352/2 169/126/2 172/128/2 +f 182/129/7 3/354/7 7/130/7 +f 1/10/7 3/354/7 182/129/7 +f 5/11/7 1/10/7 183/132/7 +f 191/134/3 192/156/3 184/135/3 +f 190/137/6 191/134/6 183/138/6 +f 189/140/5 190/137/5 182/141/5 +f 196/143/3 198/149/3 188/144/3 +f 197/146/5 195/150/5 185/147/5 +f 198/149/7 196/143/7 195/150/7 +f 126/109/6 128/103/6 197/151/6 +f 8/6/6 6/4/6 189/152/6 +f 6/4/6 5/11/6 192/355/6 +f 5/11/6 184/133/6 192/355/6 +f 189/152/6 181/131/6 7/130/6 +f 6/4/6 192/355/6 189/152/6 +f 214/153/1 202/356/1 204/154/1 +f 204/154/1 221/357/1 203/155/1 +f 221/357/1 223/358/1 203/155/1 +f 203/155/1 201/359/1 214/153/1 +f 201/359/1 215/360/1 214/153/1 +f 192/156/7 191/134/7 190/137/7 +f 236/157/2 234/167/2 230/158/2 +f 233/160/7 235/361/7 231/161/7 +f 239/163/7 237/362/7 235/164/7 +f 236/165/2 238/363/2 240/166/2 +f 242/168/2 244/175/2 240/166/2 +f 243/170/7 241/173/7 237/171/7 +f 247/172/7 245/364/7 241/173/7 +f 242/168/2 246/365/2 248/174/2 +f 255/176/3 256/182/3 252/177/3 +f 254/179/5 253/186/5 249/180/5 +f 256/182/2 254/179/2 250/181/2 +f 253/183/7 255/176/7 251/178/7 +f 258/185/9 257/366/9 253/186/9 +f 255/176/10 257/367/10 258/187/10 +f 128/103/6 127/190/6 198/189/6 +f 125/105/6 188/107/6 198/189/6 +f 263/191/6 266/194/6 265/192/6 +f 266/194/3 263/191/3 261/195/3 +f 264/193/5 265/192/5 260/197/5 +f 277/201/6 276/368/6 275/369/6 +f 275/369/6 282/370/6 281/199/6 +f 281/199/6 280/371/6 279/200/6 +f 279/200/6 278/372/6 277/201/6 +f 277/201/6 275/369/6 281/199/6 +f 306/202/7 305/219/7 299/203/7 +f 287/205/6 290/373/6 289/206/6 +f 290/208/3 287/213/3 285/209/3 +f 288/207/5 289/206/5 284/211/5 +f 289/206/2 290/208/2 286/210/2 +f 287/213/7 288/374/7 283/214/7 +f 295/215/6 298/223/6 297/216/6 +f 306/202/6 304/375/6 303/218/6 +f 314/220/6 312/234/6 311/221/6 +f 298/223/3 295/215/3 293/224/3 +f 296/217/5 297/216/5 292/226/5 +f 305/219/5 303/376/5 301/228/5 +f 313/229/5 311/221/5 309/230/5 +f 304/232/3 306/202/3 300/204/3 +f 312/234/3 314/377/3 308/235/3 +f 310/236/2 309/230/2 311/221/2 +f 341/237/3 337/240/3 326/238/3 +f 337/240/3 330/378/3 322/241/3 +f 319/242/3 329/379/3 341/237/3 +f 325/243/5 335/249/5 339/244/5 +f 320/246/5 324/245/5 339/244/5 +f 321/248/5 328/380/5 335/249/5 +f 320/246/5 327/247/5 331/250/5 +f 332/252/5 328/380/5 321/248/5 +f 336/255/5 332/252/5 316/253/5 +f 316/253/5 315/251/5 340/254/5 +f 315/251/5 331/250/5 340/254/5 +f 333/256/3 329/379/3 319/242/3 +f 322/241/3 330/378/3 334/258/3 +f 342/261/3 333/256/3 317/257/3 +f 317/257/3 318/259/3 338/260/3 +f 318/259/3 334/258/3 338/260/3 +f 351/262/7 347/381/7 345/382/7 +f 345/382/7 343/263/7 351/262/7 +f 343/263/7 348/383/7 352/264/7 +f 353/265/2 349/384/2 344/385/2 +f 344/385/2 346/266/2 353/265/2 +f 346/266/2 350/386/2 354/267/2 +f 356/387/2 358/388/2 360/268/2 +f 360/268/2 362/389/2 364/269/2 +f 364/269/2 366/390/2 368/270/2 +f 368/270/2 370/391/2 356/387/2 +f 356/387/2 360/268/2 368/270/2 +f 357/272/7 355/392/7 369/393/7 +f 369/393/7 367/394/7 357/272/7 +f 367/394/7 365/273/7 357/272/7 +f 365/273/7 363/395/7 361/396/7 +f 361/396/7 359/271/7 365/273/7 +f 390/274/7 389/397/7 388/398/7 +f 388/398/7 387/399/7 390/274/7 +f 387/399/7 386/275/7 390/274/7 +f 386/275/7 376/400/7 373/276/7 +f 376/400/7 375/401/7 373/276/7 +f 375/401/7 374/402/7 373/276/7 +f 373/276/7 372/403/7 371/404/7 +f 371/404/7 390/274/7 373/276/7 +f 379/278/2 378/405/2 377/279/2 +f 377/279/2 392/406/2 391/407/2 +f 391/407/2 385/408/2 377/279/2 +f 385/408/2 384/409/2 383/410/2 +f 377/279/2 385/408/2 381/411/2 +f 383/410/2 382/412/2 385/408/2 +f 382/412/2 381/411/2 385/408/2 +f 381/411/2 380/277/2 377/279/2 +f 393/282/7 394/413/7 395/414/7 +f 395/414/7 396/415/7 393/282/7 +f 396/415/7 397/280/7 393/282/7 +f 397/280/7 398/416/7 401/281/7 +f 398/416/7 399/417/7 401/281/7 +f 399/417/7 400/418/7 401/281/7 +f 401/281/7 407/419/7 408/420/7 +f 408/420/7 393/282/7 401/281/7 +f 404/284/2 405/421/2 406/285/2 +f 406/285/2 414/422/2 413/423/2 +f 413/423/2 412/424/2 406/285/2 +f 412/424/2 411/425/2 410/426/2 +f 406/285/2 412/424/2 402/427/2 +f 410/426/2 409/428/2 412/424/2 +f 409/428/2 402/427/2 412/424/2 +f 402/427/2 403/283/2 406/285/2 +s 1 +f 23/24/11 12/429/7 11/430/11 +f 30/26/2 19/431/12 18/432/2 +f 27/33/1 16/433/13 15/434/1 +f 24/30/7 13/435/14 12/429/7 +f 31/32/12 20/436/15 19/431/12 +f 21/14/6 10/437/16 9/438/6 +f 28/17/13 17/439/17 16/433/13 +f 25/20/14 14/440/18 13/435/14 +f 32/21/15 9/438/6 20/436/15 +f 22/13/16 11/430/11 10/437/16 +f 29/16/17 18/432/2 17/439/17 +f 26/19/18 15/441/1 14/440/18 +f 55/42/12 44/442/15 43/443/12 +f 45/45/6 34/444/16 33/445/6 +f 52/48/13 41/446/17 40/447/13 +f 49/38/14 38/448/18 37/449/14 +f 56/41/15 33/445/6 44/442/15 +f 46/44/16 35/450/11 34/444/16 +f 53/47/17 42/451/2 41/446/17 +f 50/50/18 39/452/1 38/448/18 +f 47/52/11 36/453/7 35/450/11 +f 54/54/2 43/443/12 42/451/2 +f 51/59/1 40/447/13 39/454/1 +f 48/39/7 37/449/14 36/453/7 +f 72/455/2 61/298/12 60/37/2 +f 79/456/14 68/299/18 67/40/14 +f 69/457/1 58/51/13 57/43/1 +f 76/458/16 65/53/11 64/46/16 +f 73/459/12 62/49/15 61/298/12 +f 80/460/18 57/43/1 68/299/18 +f 70/461/13 59/57/17 58/51/13 +f 77/462/11 66/58/7 65/53/11 +f 74/463/15 63/55/6 62/49/15 +f 71/464/17 60/37/2 59/57/17 +f 78/465/7 67/40/14 66/58/7 +f 75/466/6 64/46/16 63/300/6 +f 95/467/19 113/468/20 96/469/21 +f 95/467/19 97/470/22 94/471/23 +f 91/78/24 99/472/25 96/469/21 +f 98/473/26 94/471/23 97/470/22 +f 96/469/21 100/474/27 95/467/19 +f 89/475/7 93/476/28 98/473/26 +f 118/477/29 113/468/20 114/478/29 +f 101/479/30 94/471/23 93/476/28 +f 104/480/31 93/476/28 90/481/31 +f 113/482/20 91/78/24 96/469/21 +f 102/483/32 95/467/19 94/471/23 +f 117/484/33 103/485/24 113/482/20 +f 115/486/34 102/483/32 101/479/30 +f 116/487/7 101/488/30 104/480/31 +f 119/489/32 114/478/29 102/483/32 +f 125/105/35 123/490/35 121/491/35 +f 128/103/36 122/492/36 124/493/36 +f 133/321/37 131/494/35 129/495/35 +f 136/112/38 130/496/36 132/497/36 +f 136/112/38 133/321/37 134/114/38 +f 153/498/39 145/499/40 146/500/39 +f 141/501/41 148/502/42 149/503/41 +f 156/504/43 158/505/3 143/506/43 +f 154/507/40 144/508/44 145/499/40 +f 142/509/42 147/510/6 148/502/42 +f 138/511/5 151/512/45 157/513/5 +f 139/514/45 150/515/46 151/512/45 +f 155/516/44 143/506/43 144/508/44 +f 152/517/6 146/500/39 147/510/6 +f 140/518/46 149/503/41 150/515/46 +f 176/519/47 166/520/48 165/521/47 +f 169/522/49 163/523/6 162/524/49 +f 172/525/50 160/526/51 159/527/50 +f 177/528/48 167/529/52 166/520/48 +f 178/530/52 173/531/5 167/529/52 +f 168/532/6 164/533/53 163/523/6 +f 171/534/51 161/535/54 160/526/51 +f 180/536/3 159/527/50 174/537/3 +f 175/538/53 165/521/47 164/533/53 +f 170/539/54 162/524/49 161/535/54 +f 210/540/55 207/541/56 208/542/57 +f 201/543/58 194/544/59 193/545/58 +f 206/546/60 199/547/61 200/548/55 +f 200/548/55 204/549/62 202/550/63 +f 208/542/57 205/551/64 206/546/60 +f 212/552/65 209/553/61 210/540/55 +f 213/554/66 206/555/60 200/556/55 +f 228/557/67 209/558/61 211/559/68 +f 214/153/69 217/560/70 213/554/66 +f 208/561/57 219/562/66 210/540/55 +f 219/562/66 212/552/65 210/540/55 +f 216/563/71 201/543/58 193/545/58 +f 217/560/70 208/561/57 206/555/60 +f 202/564/63 213/554/66 200/556/55 +f 221/565/72 225/566/73 223/567/74 +f 223/568/74 194/544/59 203/569/59 +f 207/570/56 225/566/73 205/571/64 +f 227/572/75 207/570/56 209/558/61 +f 222/573/75 204/574/62 199/575/61 +f 225/566/73 199/575/61 205/571/64 +f 215/360/71 218/576/76 217/560/70 +f 225/566/73 226/577/77 223/567/74 +f 235/578/78 232/159/3 231/579/3 +f 234/167/79 229/162/5 230/158/5 +f 237/580/80 236/165/78 235/581/78 +f 240/166/81 233/160/79 234/167/79 +f 244/175/82 239/163/81 240/166/81 +f 241/582/83 238/169/80 237/583/80 +f 245/584/84 242/168/83 241/582/83 +f 248/174/85 243/170/82 244/175/82 +f 282/585/86 267/586/3 274/587/86 +f 280/588/87 273/589/2 272/590/87 +f 278/591/88 271/592/5 270/593/88 +f 276/594/89 269/595/7 268/596/89 +f 281/597/2 274/587/86 273/589/2 +f 279/598/5 272/590/87 271/592/5 +f 277/599/7 270/593/88 269/600/7 +f 275/601/3 268/596/89 267/586/3 +f 341/602/27 327/603/25 339/604/27 +f 321/248/90 318/259/2 316/253/2 +f 319/242/91 315/605/7 317/257/7 +f 323/606/92 325/607/93 324/608/92 +f 325/607/93 322/241/90 321/248/90 +f 323/609/92 320/610/91 319/242/91 +f 337/611/22 339/612/27 335/613/22 +f 328/614/26 337/611/22 335/613/22 +f 328/614/26 334/615/91 330/616/26 +f 329/617/25 331/618/90 327/603/25 +f 340/619/93 333/620/90 342/621/93 +f 336/622/92 342/621/93 338/623/92 +f 332/624/91 338/623/92 334/615/91 +f 218/576/76 215/360/71 216/563/71 +f 226/577/77 224/625/74 223/567/74 +f 347/626/80 346/627/6 345/628/6 +f 349/629/94 343/630/1 344/631/1 +f 353/265/95 351/262/78 352/264/95 +f 351/262/78 350/632/80 347/626/80 +f 353/265/95 348/633/94 349/629/94 +f 357/634/96 356/635/3 355/636/3 +f 359/637/1 358/638/96 357/634/96 +f 361/639/97 360/640/1 359/641/1 +f 363/642/5 362/643/97 361/639/97 +f 365/644/98 364/645/5 363/642/5 +f 367/646/6 366/647/98 365/644/98 +f 369/648/99 368/649/6 367/646/6 +f 355/636/3 370/650/99 369/648/99 +f 216/563/71 220/651/100 218/576/76 +f 220/651/100 219/562/66 218/576/76 +f 228/557/67 226/577/77 227/572/75 +f 224/625/74 226/577/77 228/557/67 +f 387/652/39 379/653/40 380/654/39 +f 375/655/41 382/656/42 383/657/41 +f 390/658/43 392/659/3 377/660/43 +f 388/661/40 378/662/44 379/653/40 +f 376/663/42 381/664/6 382/656/42 +f 372/665/5 385/666/45 391/667/5 +f 373/668/45 384/669/46 385/666/45 +f 389/670/44 377/660/43 378/662/44 +f 386/671/6 380/654/39 381/664/6 +f 374/672/46 383/657/41 384/669/46 +f 410/673/47 400/674/48 399/675/47 +f 403/676/49 397/677/6 396/678/49 +f 406/679/50 394/680/51 393/681/50 +f 411/682/48 401/683/52 400/674/48 +f 412/684/52 407/685/5 401/683/52 +f 402/686/6 398/687/53 397/677/6 +f 405/688/51 395/689/54 394/680/51 +f 414/690/3 393/681/50 408/691/3 +f 409/692/53 399/675/47 398/687/53 +f 404/693/54 396/678/49 395/689/54 +f 23/24/11 24/30/7 12/429/7 +f 30/26/2 31/32/12 19/431/12 +f 27/33/1 28/17/13 16/433/13 +f 24/30/7 25/20/14 13/435/14 +f 31/32/12 32/21/15 20/436/15 +f 21/14/6 22/13/16 10/437/16 +f 28/17/13 29/16/17 17/439/17 +f 25/20/14 26/19/18 14/440/18 +f 32/21/15 21/14/6 9/438/6 +f 22/13/16 23/24/11 11/430/11 +f 29/16/17 30/26/2 18/432/2 +f 26/19/18 27/28/1 15/441/1 +f 55/42/12 56/41/15 44/442/15 +f 45/45/6 46/44/16 34/444/16 +f 52/48/13 53/47/17 41/446/17 +f 49/38/14 50/50/18 38/448/18 +f 56/41/15 45/45/6 33/445/6 +f 46/44/16 47/52/11 35/450/11 +f 53/47/17 54/54/2 42/451/2 +f 50/50/18 51/56/1 39/452/1 +f 47/52/11 48/39/7 36/453/7 +f 54/54/2 55/42/12 43/443/12 +f 51/59/1 52/48/13 40/447/13 +f 48/39/7 49/38/14 37/449/14 +f 72/455/2 73/459/12 61/298/12 +f 79/456/14 80/460/18 68/299/18 +f 69/457/1 70/461/13 58/51/13 +f 76/458/16 77/462/11 65/53/11 +f 73/459/12 74/463/15 62/49/15 +f 80/460/18 69/457/1 57/43/1 +f 70/461/13 71/464/17 59/57/17 +f 77/462/11 78/465/7 66/58/7 +f 74/463/15 75/694/6 63/55/6 +f 71/464/17 72/455/2 60/37/2 +f 78/465/7 79/456/14 67/40/14 +f 75/466/6 76/458/16 64/46/16 +f 95/467/19 114/478/29 113/468/20 +f 95/467/19 100/474/27 97/470/22 +f 91/78/24 92/310/2 99/472/25 +f 98/473/26 93/476/28 94/471/23 +f 96/469/21 99/472/25 100/474/27 +f 89/475/7 90/481/31 93/476/28 +f 118/477/29 117/695/33 113/468/20 +f 101/479/30 102/483/32 94/471/23 +f 104/480/31 101/488/30 93/476/28 +f 113/482/20 103/485/24 91/78/24 +f 102/483/32 114/478/29 95/467/19 +f 117/484/33 120/696/2 103/485/24 +f 115/486/34 119/489/32 102/483/32 +f 116/487/7 115/697/34 101/488/30 +f 119/489/32 118/477/29 114/478/29 +f 125/105/35 127/190/35 123/490/35 +f 128/103/36 126/109/36 122/492/36 +f 133/321/37 135/320/37 131/494/35 +f 136/112/38 134/114/38 130/496/36 +f 136/112/38 135/320/37 133/321/37 +f 153/498/39 154/507/40 145/499/40 +f 141/501/41 142/509/42 148/502/42 +f 156/504/43 137/698/3 158/505/3 +f 154/507/40 155/516/44 144/508/44 +f 142/509/42 152/517/6 147/510/6 +f 138/511/5 139/514/45 151/512/45 +f 139/514/45 140/518/46 150/515/46 +f 155/516/44 156/504/43 143/506/43 +f 152/517/6 153/498/39 146/500/39 +f 140/518/46 141/501/41 149/503/41 +f 176/519/47 177/528/48 166/520/48 +f 169/522/49 168/532/6 163/523/6 +f 172/525/50 171/534/51 160/526/51 +f 177/528/48 178/530/52 167/529/52 +f 178/530/52 179/699/5 173/531/5 +f 168/532/6 175/538/53 164/533/53 +f 171/534/51 170/539/54 161/535/54 +f 180/536/3 172/525/50 159/527/50 +f 175/538/53 176/519/47 165/521/47 +f 170/539/54 169/522/49 162/524/49 +f 210/540/55 209/553/61 207/541/56 +f 201/543/58 203/569/59 194/544/59 +f 206/546/60 205/551/64 199/547/61 +f 200/548/55 199/547/61 204/549/62 +f 208/542/57 207/541/56 205/551/64 +f 212/552/65 211/700/68 209/553/61 +f 213/554/66 217/560/70 206/555/60 +f 228/557/67 227/572/75 209/558/61 +f 214/153/69 215/360/71 217/560/70 +f 208/561/57 218/576/76 219/562/66 +f 219/562/66 220/651/100 212/552/65 +f 216/563/71 215/360/71 201/543/58 +f 217/560/70 218/576/76 208/561/57 +f 202/564/63 214/153/69 213/554/66 +f 221/565/72 222/573/75 225/566/73 +f 223/568/74 224/701/74 194/544/59 +f 207/570/56 226/577/77 225/566/73 +f 227/572/75 226/577/77 207/570/56 +f 222/573/75 221/565/72 204/574/62 +f 225/566/73 222/573/75 199/575/61 +f 235/578/78 236/157/78 232/159/3 +f 234/167/79 233/160/79 229/162/5 +f 237/580/80 238/363/80 236/165/78 +f 240/166/81 239/163/81 233/160/79 +f 244/175/82 243/170/82 239/163/81 +f 241/582/83 242/168/83 238/169/80 +f 245/584/84 246/365/84 242/168/83 +f 248/174/85 247/172/85 243/170/82 +f 282/585/86 275/601/3 267/586/3 +f 280/588/87 281/597/2 273/589/2 +f 278/591/88 279/598/5 271/592/5 +f 276/594/89 277/702/7 269/595/7 +f 281/597/2 282/585/86 274/587/86 +f 279/598/5 280/588/87 272/590/87 +f 277/599/7 278/591/88 270/593/88 +f 275/601/3 276/594/89 268/596/89 +f 341/602/27 329/617/25 327/603/25 +f 321/248/90 322/241/90 318/259/2 +f 319/242/91 320/610/91 315/605/7 +f 323/606/92 326/703/93 325/607/93 +f 325/607/93 326/703/93 322/241/90 +f 323/609/92 324/704/92 320/610/91 +f 337/611/22 341/705/27 339/612/27 +f 328/614/26 330/616/26 337/611/22 +f 328/614/26 332/624/91 334/615/91 +f 329/617/25 333/620/90 331/618/90 +f 340/619/93 331/618/90 333/620/90 +f 336/622/92 340/619/93 342/621/93 +f 332/624/91 336/622/92 338/623/92 +f 347/626/80 350/632/80 346/627/6 +f 349/629/94 348/633/94 343/630/1 +f 353/265/95 354/267/78 351/262/78 +f 351/262/78 354/267/78 350/632/80 +f 353/265/95 352/264/95 348/633/94 +f 357/634/96 358/638/96 356/635/3 +f 359/637/1 360/706/1 358/638/96 +f 361/639/97 362/643/97 360/640/1 +f 363/642/5 364/645/5 362/643/97 +f 365/644/98 366/647/98 364/645/5 +f 367/646/6 368/649/6 366/647/98 +f 369/648/99 370/650/99 368/649/6 +f 355/636/3 356/635/3 370/650/99 +f 387/652/39 388/661/40 379/653/40 +f 375/655/41 376/663/42 382/656/42 +f 390/658/43 371/707/3 392/659/3 +f 388/661/40 389/670/44 378/662/44 +f 376/663/42 386/671/6 381/664/6 +f 372/665/5 373/668/45 385/666/45 +f 373/668/45 374/672/46 384/669/46 +f 389/670/44 390/658/43 377/660/43 +f 386/671/6 387/652/39 380/654/39 +f 374/672/46 375/655/41 383/657/41 +f 410/673/47 411/682/48 400/674/48 +f 403/676/49 402/686/6 397/677/6 +f 406/679/50 405/688/51 394/680/51 +f 411/682/48 412/684/52 401/683/52 +f 412/684/52 413/708/5 407/685/5 +f 402/686/6 409/692/53 398/687/53 +f 405/688/51 404/693/54 395/689/54 +f 414/690/3 406/679/50 393/681/50 +f 409/692/53 410/673/47 399/675/47 +f 404/693/54 403/676/49 396/678/49 +o Slide +v -0.125500 1.625000 2.562500 +v -0.312500 1.625000 2.375500 +v 0.312500 1.625000 2.375500 +v 0.125500 1.625000 2.562500 +v -0.312500 1.625000 2.124500 +v -0.125500 1.625000 1.937500 +v 0.125500 1.625000 1.937500 +v 0.312500 1.625000 2.124500 +v -0.125500 1.875000 1.937500 +v -0.312500 2.125000 2.124500 +v -0.312500 2.125000 2.375500 +v -0.125500 1.875000 2.562500 +v 0.125500 1.875000 2.562500 +v 0.312500 2.125000 2.375500 +v 0.312500 2.125000 2.124500 +v 0.125500 1.875000 1.937500 +v 0.187833 2.125000 1.999833 +v 0.187833 2.125000 2.500167 +v -0.187833 2.125000 2.500167 +v -0.187833 2.125000 1.999833 +v -0.375000 1.500000 2.875000 +v 0.375000 1.500000 2.875000 +v -0.375000 1.625000 2.875000 +v 0.375000 1.625000 2.875000 +v -0.375000 1.500000 -1.125000 +v 0.375000 1.500000 -1.125000 +v -0.375000 1.625000 -1.125000 +v 0.375000 1.625000 -1.125000 +vt 0.536885 0.619565 +vt 0.540984 0.684783 +vt 0.536885 0.684783 +vt 0.637295 0.788043 +vt 0.641393 0.755435 +vt 0.641393 0.777174 +vt 0.612705 0.788043 +vt 0.608607 0.755435 +vt 0.612705 0.744565 +vt 0.672131 0.684783 +vt 0.676230 0.619565 +vt 0.676230 0.684783 +vt 0.672131 0.695652 +vt 0.672131 0.619565 +vt 0.540984 0.608696 +vt 0.672131 0.608696 +vt 0.540984 0.619565 +vt 0.637295 0.744565 +vt 0.608607 0.777174 +vt 0.540984 0.695652 +vt 0.600410 0.695652 +vt 0.592213 0.717391 +vt 0.592213 0.695652 +vt 0.614754 0.695652 +vt 0.606557 0.739130 +vt 0.606557 0.695652 +vt 0.629098 0.695652 +vt 0.620902 0.717391 +vt 0.620902 0.695652 +vt 0.586066 0.739130 +vt 0.586066 0.695652 +vt 0.635246 0.739130 +vt 0.629098 0.717391 +vt 0.635246 0.695652 +vt 0.602459 0.739130 +vt 0.600410 0.717391 +vt 0.643443 0.695652 +vt 0.629098 0.793478 +vt 0.620902 0.793478 +vt 0.620902 0.739130 +vt 0.629098 0.739130 +vt 0.614754 0.739130 +vt 0.590164 0.739130 +vt 0.631148 0.739130 +vt 0.618852 0.739130 +vt 0.643443 0.739130 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.3827 0.0000 0.9239 +vn -0.4872 -0.0000 0.8733 +vn -0.3827 0.0000 0.9239 +vn 0.9239 0.0000 -0.3827 +vn 0.9239 -0.0000 0.3827 +vn -0.3827 0.0000 -0.9239 +vn 0.4872 -0.0000 -0.8733 +vn 0.3827 0.0000 -0.9239 +vn -0.9239 -0.0000 0.3827 +vn -0.9239 -0.0000 -0.3827 +vn -0.4872 -0.0000 -0.8733 +vn 0.7071 -0.0000 0.7071 +vn 0.4872 -0.0000 0.8733 +vn 0.5642 0.8256 0.0000 +vn 0.9703 0.2419 0.0000 +vn -0.5642 0.8256 0.0000 +vn -0.9703 0.2419 0.0000 +vn -0.7071 -0.0000 0.7071 +vn -0.7071 -0.0000 -0.7071 +vn 0.7071 -0.0000 -0.7071 +s off +f 439/709/101 442/710/101 440/711/101 +f 433/712/102 424/713/102 425/714/102 +f 432/715/102 429/716/102 431/717/102 +f 438/718/103 435/719/103 436/720/103 +f 436/721/104 442/710/104 438/718/104 +f 437/722/105 439/723/105 435/724/105 +f 438/718/102 441/725/102 437/722/102 +f 439/709/101 441/725/101 442/710/101 +f 433/712/102 434/726/102 424/713/102 +f 432/715/102 428/727/102 429/716/102 +f 438/718/103 437/722/103 435/719/103 +f 436/721/104 440/728/104 442/710/104 +f 437/722/105 441/725/105 439/723/105 +f 438/718/102 442/710/102 441/725/102 +s 1 +f 418/729/106 426/730/107 415/731/108 +f 422/732/109 428/733/110 417/734/110 +f 420/735/111 430/736/112 421/737/113 +f 426/730/107 425/738/114 416/739/114 +f 424/740/115 423/741/116 419/742/115 +f 422/732/109 421/737/113 430/736/112 +f 428/733/110 432/743/117 427/744/118 +f 416/745/114 424/740/115 419/742/115 +f 426/746/119 434/726/120 433/712/120 +f 427/747/121 431/717/122 430/748/121 +f 426/746/119 430/748/121 423/749/119 +f 418/729/106 427/744/118 426/730/107 +f 422/732/109 429/750/109 428/733/110 +f 420/735/111 423/741/116 430/736/112 +f 416/739/114 415/731/108 426/730/107 +f 426/730/107 433/751/123 425/738/114 +f 434/752/124 423/741/116 424/740/115 +f 423/741/116 420/735/111 419/742/115 +f 431/753/125 429/750/109 430/736/112 +f 429/750/109 422/732/109 430/736/112 +f 418/729/106 417/734/110 427/744/118 +f 417/734/110 428/733/110 427/744/118 +f 416/745/114 425/754/114 424/740/115 +f 426/746/119 423/749/119 434/726/120 +f 427/747/121 432/715/122 431/717/122 +f 426/746/119 427/747/121 430/748/121 +o Bullet +v 0.000000 0.750000 -1.312500 +v 0.000000 0.750000 -0.812500 +v 0.132583 0.695083 -1.312500 +v 0.132583 0.695083 -0.812500 +v 0.187500 0.562500 -1.312500 +v 0.187500 0.562500 -0.812500 +v 0.132583 0.429917 -1.312500 +v 0.132583 0.429917 -0.812500 +v 0.000000 0.375000 -1.312500 +v 0.000000 0.375000 -0.812500 +v -0.132583 0.429918 -1.312500 +v -0.132583 0.429917 -0.812500 +v -0.187500 0.562500 -1.312500 +v -0.187500 0.562500 -0.812500 +v -0.132583 0.695082 -1.312500 +v -0.132583 0.695082 -0.812500 +v 0.099437 0.661937 -0.562500 +v 0.000000 0.703125 -0.562500 +v 0.140625 0.562500 -0.562500 +v 0.099437 0.463063 -0.562500 +v 0.000000 0.421875 -0.562500 +v -0.099437 0.463063 -0.562500 +v -0.140625 0.562500 -0.562500 +v -0.099437 0.661937 -0.562500 +v 0.033145 0.595646 -0.437500 +v 0.000000 0.609375 -0.437500 +v 0.046875 0.562500 -0.437500 +v 0.033145 0.529354 -0.437500 +v 0.000000 0.515625 -0.437500 +v -0.033146 0.529354 -0.437500 +v -0.046875 0.562500 -0.437500 +v -0.033146 0.595646 -0.437500 +vt 0.875234 0.004815 +vt 0.877028 0.016304 +vt 0.875234 0.027794 +vt 0.870902 0.032553 +vt 0.866569 0.027794 +vt 0.864775 0.016304 +vt 0.866569 0.004815 +vt 0.870902 0.000056 +vt 0.852459 0.043478 +vt 0.836066 0.054348 +vt 0.836066 0.043478 +vt 0.852459 0.054348 +vt 0.836066 0.065217 +vt 0.852459 0.065217 +vt 0.836066 0.076087 +vt 0.852459 0.076087 +vt 0.836066 0.086957 +vt 0.852459 -0.000000 +vt 0.836066 0.010870 +vt 0.836066 -0.000000 +vt 0.852459 0.010870 +vt 0.836066 0.021739 +vt 0.860656 0.010870 +vt 0.852459 0.021739 +vt 0.836066 0.032609 +vt 0.852459 0.032609 +vt 0.860656 0.054348 +vt 0.864754 0.059783 +vt 0.860656 0.065217 +vt 0.860656 0.043478 +vt 0.860656 0.076087 +vt 0.860656 0.021739 +vt 0.852459 0.086957 +vt 0.860656 0.086957 +vt 0.860656 0.032609 +vt 0.868223 0.034278 +vt 0.868811 0.038043 +vt 0.864796 0.038043 +vt 0.864754 0.027174 +vt 0.864754 0.000000 +vt 0.864754 0.005435 +vt 0.864754 0.065217 +vt 0.864754 0.070652 +vt 0.864754 0.048913 +vt 0.864754 0.038043 +vt 0.864754 0.010870 +vt 0.864754 0.016304 +vt 0.864754 0.081522 +vt 0.860656 0.000000 +vt 0.864754 0.054348 +vt 0.868223 0.041808 +vt 0.866803 0.043368 +vt 0.865384 0.041808 +vt 0.865384 0.034278 +vt 0.866803 0.032719 +vt 0.864754 0.021739 +vt 0.864754 0.043478 +vt 0.864754 0.032609 +vt 0.864754 0.076087 +vn 0.0000 0.0000 -1.0000 +vn -0.0000 0.9959 0.0905 +vn 0.7071 0.7071 0.0000 +vn -0.0000 1.0000 0.0000 +vn 0.7042 0.7042 0.0905 +vn 1.0000 0.0000 0.0000 +vn 0.9959 0.0000 0.0905 +vn 0.7071 -0.7071 0.0000 +vn 0.7042 -0.7042 0.0905 +vn -0.0000 -1.0000 0.0000 +vn -0.0000 -0.9959 0.0905 +vn -0.7071 -0.7071 -0.0000 +vn -0.7042 -0.7042 0.0905 +vn -1.0000 -0.0000 -0.0000 +vn -0.6530 -0.6530 0.3835 +vn -0.9959 0.0000 0.0905 +vn -0.7071 0.7071 0.0000 +vn -0.7042 0.7042 0.0905 +vn 0.6530 0.6530 0.3835 +vn 0.5275 0.0000 0.8496 +vn 0.9235 0.0000 0.3835 +vn 0.0000 0.9235 0.3835 +vn 0.6530 -0.6530 0.3835 +vn -0.9235 -0.0000 0.3835 +vn 0.0000 -0.9235 0.3835 +vn -0.6530 0.6530 0.3835 +vn 0.3730 -0.3730 0.8496 +vn -0.5275 0.0000 0.8496 +vn -0.3730 0.3730 0.8496 +vn 0.0000 -0.5275 0.8496 +vn -0.3730 -0.3730 0.8496 +vn 0.3730 0.3730 0.8496 +vn 0.0000 0.5275 0.8496 +s off +f 453/755/126 455/756/126 457/757/126 +f 457/757/126 443/758/126 445/759/126 +f 445/759/126 447/760/126 457/757/126 +f 447/760/126 449/761/126 457/757/126 +f 449/761/126 451/762/126 457/757/126 +f 451/762/126 453/755/126 457/757/126 +s 1 +f 444/763/127 445/764/128 443/765/129 +f 446/766/130 447/767/131 445/764/128 +f 448/768/132 449/769/133 447/767/131 +f 450/770/134 451/771/135 449/769/133 +f 452/772/136 453/773/137 451/774/135 +f 454/775/138 455/776/139 453/773/137 +f 452/772/136 464/777/140 454/775/138 +f 456/778/141 457/779/142 455/776/139 +f 458/780/143 443/765/129 457/779/142 +f 459/781/144 469/782/145 461/783/146 +f 458/780/143 460/784/147 444/763/127 +f 444/763/127 459/781/144 446/766/130 +f 450/770/134 461/783/146 462/785/148 +f 454/775/138 465/786/149 456/778/141 +f 452/787/136 462/785/148 463/788/150 +f 458/780/143 465/786/149 466/789/151 +f 448/768/132 459/781/144 461/783/146 +f 470/790/152 469/791/145 473/792/153 +f 465/786/149 474/793/154 466/789/151 +f 464/777/140 471/794/155 472/795/156 +f 462/785/148 469/796/145 470/797/152 +f 460/784/147 467/798/157 459/781/144 +f 466/789/151 468/799/158 460/784/147 +f 465/786/149 472/800/156 473/801/153 +f 462/785/148 471/802/155 463/788/150 +f 444/763/127 446/766/130 445/764/128 +f 446/766/130 448/768/132 447/767/131 +f 448/768/132 450/770/134 449/769/133 +f 450/770/134 452/787/136 451/771/135 +f 452/772/136 454/775/138 453/773/137 +f 454/775/138 456/778/141 455/776/139 +f 452/772/136 463/803/150 464/777/140 +f 456/778/141 458/780/143 457/779/142 +f 458/780/143 444/763/127 443/765/129 +f 459/781/144 467/804/157 469/782/145 +f 458/780/143 466/789/151 460/784/147 +f 444/763/127 460/784/147 459/781/144 +f 450/770/134 448/768/132 461/783/146 +f 454/775/138 464/777/140 465/786/149 +f 452/787/136 450/770/134 462/785/148 +f 458/780/143 456/778/141 465/786/149 +f 448/768/132 446/766/130 459/781/144 +f 469/791/145 467/805/157 473/792/153 +f 467/805/157 468/806/158 473/792/153 +f 468/806/158 474/807/154 473/792/153 +f 473/792/153 472/808/156 471/809/155 +f 471/809/155 470/790/152 473/792/153 +f 465/786/149 473/810/153 474/793/154 +f 464/777/140 463/803/150 471/794/155 +f 462/785/148 461/783/146 469/796/145 +f 460/784/147 468/811/158 467/798/157 +f 466/789/151 474/812/154 468/799/158 +f 465/786/149 464/777/140 472/800/156 +f 462/785/148 470/813/152 471/802/155 +o Magazine +v 0.375000 -4.750000 -0.375000 +v -0.375000 -4.750000 -0.375000 +v 0.375000 -4.750000 -1.375000 +v -0.375000 -4.750000 -1.375000 +v -0.375000 0.750000 -1.375000 +v 0.375000 0.750000 -1.375000 +v -0.375000 0.500000 -0.375000 +v 0.375000 0.500000 -0.375000 +v 0.375000 0.750000 -0.875000 +v -0.375000 0.750000 -0.875000 +v -0.187500 0.500000 -0.375000 +v -0.187500 0.500000 -1.375000 +v 0.187500 0.500000 -0.375000 +v 0.187500 0.500000 -1.375000 +v -0.187500 0.750000 -1.375000 +v -0.187500 0.750000 -0.875000 +v 0.187500 0.750000 -1.375000 +v 0.187500 0.750000 -0.875000 +vt 0.819672 0.141304 +vt 0.852459 0.206522 +vt 0.819672 0.206522 +vt 0.813525 0.663043 +vt 0.801230 0.663043 +vt 0.909836 0.663043 +vt 0.893443 0.684783 +vt 0.877049 0.684783 +vt 0.852459 0.684783 +vt 0.836066 0.684783 +vt 0.819672 0.663043 +vt 0.801230 0.750000 +vt 0.877049 0.701087 +vt 0.877049 0.722826 +vt 0.893443 0.701087 +vt 0.909836 0.722826 +vt 0.909836 0.684783 +vt 0.836066 0.701087 +vt 0.852459 0.722826 +vt 0.819672 0.722826 +vt 0.819672 0.701087 +vt 0.819672 0.684783 +vt 0.877049 0.206522 +vt 0.870902 0.663043 +vt 0.858607 0.663043 +vt 0.852459 0.141304 +vt 0.795082 0.663043 +vt 0.795082 0.206522 +vt 0.909836 0.206522 +vt 0.813525 0.750000 +vt 0.909836 0.701087 +vt 0.852459 0.701087 +vt 0.870902 0.684783 +vt 0.858607 0.684783 +vn 0.0000 -1.0000 0.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 1.0000 0.0000 +vn 0.0000 0.8944 0.4472 +vn 0.0000 0.0000 -1.0000 +s off +f 476/814/159 477/815/159 475/816/159 +f 475/816/160 487/817/160 485/818/160 +f 481/819/161 484/820/161 479/821/161 +f 480/822/162 483/823/162 482/824/162 +f 487/817/163 486/825/163 485/818/163 +f 484/820/163 489/826/163 479/821/163 +f 486/827/162 490/828/162 485/829/162 +f 481/830/164 490/828/164 484/820/164 +f 480/822/163 492/831/163 483/823/163 +f 492/831/161 488/832/161 487/833/161 +f 483/823/164 487/834/164 482/835/164 +f 478/836/165 486/837/165 488/838/165 +f 476/814/159 478/839/159 477/815/159 +f 481/840/160 476/841/160 485/818/160 +f 476/841/160 475/816/160 485/818/160 +f 475/816/160 482/824/160 487/817/160 +f 479/821/161 478/836/161 481/819/161 +f 478/836/161 476/842/161 481/819/161 +f 482/824/162 475/816/162 477/815/162 +f 477/815/162 480/822/162 482/824/162 +f 487/817/163 488/843/163 486/825/163 +f 484/820/163 490/828/163 489/826/163 +f 486/827/162 489/826/162 490/828/162 +f 481/830/164 485/844/164 490/828/164 +f 480/822/163 491/845/163 492/831/163 +f 492/831/161 491/845/161 488/832/161 +f 483/823/164 492/831/164 487/834/164 +f 480/822/165 477/815/165 488/838/165 +f 477/815/165 478/836/165 488/838/165 +f 478/836/165 479/821/165 486/837/165 +f 479/821/165 489/846/165 486/837/165 +f 488/838/165 491/847/165 480/822/165 +o StockFront +v 0.750000 0.000000 -2.500000 +v 0.750000 0.000000 -5.500000 +v 0.750000 0.437500 -5.500000 +v 0.750000 0.562500 -5.625000 +v 0.750000 0.562500 -5.875000 +v 0.750000 0.437500 -6.000000 +v 0.750000 -0.375000 -2.500000 +v 0.750000 -0.625000 -2.750000 +v 0.750000 -0.625000 -6.000000 +v 0.625000 0.437500 -6.000000 +v 0.625000 0.562500 -5.875000 +v 0.625000 0.562500 -5.625000 +v 0.625000 0.437500 -5.500000 +v 0.625000 0.000000 -5.500000 +v 0.625000 0.000000 -2.500000 +v 0.625000 -0.375000 -2.500000 +v 0.625000 -0.625000 -2.750000 +v 0.625000 -0.625000 -6.000000 +v -0.625000 0.000000 -2.500000 +v -0.625000 0.000000 -5.500000 +v -0.625000 0.437500 -5.500000 +v -0.625000 0.562500 -5.625000 +v -0.625000 0.562500 -5.875000 +v -0.625000 0.437500 -6.000000 +v -0.625000 -0.375000 -2.500000 +v -0.625000 -0.625000 -2.750000 +v -0.625000 -0.625000 -6.000000 +v -0.750000 0.437500 -6.000000 +v -0.750000 0.562500 -5.875000 +v -0.750000 0.562500 -5.625000 +v -0.750000 0.437500 -5.500000 +v -0.750000 0.000000 -5.500000 +v -0.750000 0.000000 -2.500000 +v -0.750000 -0.375000 -2.500000 +v -0.750000 -0.625000 -2.750000 +v -0.750000 -0.625000 -6.000000 +v -0.875000 -0.312500 -3.125000 +v 0.875000 -0.312500 -3.125000 +v -0.875000 -0.400888 -3.088388 +v 0.875000 -0.400888 -3.088388 +v -0.875000 -0.437500 -3.000000 +v 0.875000 -0.437500 -3.000000 +v -0.875000 -0.400888 -2.911612 +v 0.875000 -0.400888 -2.911612 +v -0.875000 -0.312500 -2.875000 +v 0.875000 -0.312500 -2.875000 +v -0.875000 -0.224112 -2.911612 +v 0.875000 -0.224112 -2.911612 +v -0.875000 -0.187500 -3.000000 +v 0.875000 -0.187500 -3.000000 +v -0.875000 -0.224112 -3.088388 +v 0.875000 -0.224112 -3.088388 +vt 0.881148 0.896739 +vt 0.897541 0.842391 +vt 0.897541 0.934783 +vt 0.790984 0.842391 +vt 0.881148 0.739130 +vt 0.885246 0.728261 +vt 0.897541 0.739130 +vt 0.881148 0.777174 +vt 0.897541 0.831522 +vt 0.790984 0.831522 +vt 0.897541 0.945652 +vt 0.893443 0.956522 +vt 0.893443 0.945652 +vt 0.901639 0.934783 +vt 0.885246 0.956522 +vt 0.885246 0.945652 +vt 0.782787 0.896739 +vt 0.778689 0.864130 +vt 0.782787 0.864130 +vt 0.881148 0.956522 +vt 0.881148 0.945652 +vt 0.782787 0.842391 +vt 0.877049 0.739130 +vt 0.877049 0.777174 +vt 0.782787 0.907609 +vt 0.881148 0.896739 +vt 0.897541 0.842391 +vt 0.897541 0.934783 +vt 0.790984 0.842391 +vt 0.881148 0.739130 +vt 0.885246 0.728261 +vt 0.897541 0.739130 +vt 0.881148 0.777174 +vt 0.897541 0.831522 +vt 0.790984 0.831522 +vt 0.897541 0.945652 +vt 0.893443 0.956522 +vt 0.893443 0.945652 +vt 0.901639 0.934783 +vt 0.885246 0.956522 +vt 0.885246 0.945652 +vt 0.782787 0.896739 +vt 0.778689 0.864130 +vt 0.782787 0.864130 +vt 0.881148 0.956522 +vt 0.881148 0.945652 +vt 0.782787 0.842391 +vt 0.877049 0.739130 +vt 0.877049 0.777174 +vt 0.782787 0.907609 +vt 0.524591 0.999951 +vt 0.520510 0.989130 +vt 0.524591 0.978309 +vt 0.527475 0.975042 +vt 0.524590 0.978212 +vt 0.521705 0.975042 +vt 0.881148 0.934783 +vt 0.893443 0.728261 +vt 0.782787 0.809783 +vt 0.782787 0.777174 +vt 0.897541 0.956522 +vt 0.901639 0.842391 +vt 0.778689 0.896739 +vt 0.782787 0.831522 +vt 0.881148 0.907609 +vt 0.881148 0.934783 +vt 0.893443 0.728261 +vt 0.782787 0.809783 +vt 0.782787 0.777174 +vt 0.897541 0.956522 +vt 0.901639 0.842391 +vt 0.778689 0.896739 +vt 0.782787 0.831522 +vt 0.881148 0.907609 +vt 0.527476 0.981478 +vt 0.528671 0.989130 +vt 0.527476 0.996782 +vt 0.521705 0.996782 +vt 0.521705 0.981478 +vt 0.520510 0.967391 +vt 0.521705 0.959739 +vt 0.524590 0.956569 +vt 0.527475 0.959739 +vt 0.528670 0.967391 +vt 0.528689 0.967391 +vt 0.586066 0.961957 +vt 0.586066 0.967391 +vt 0.528689 0.961957 +vt 0.586066 0.956522 +vt 0.528689 1.000000 +vt 0.586066 0.994565 +vt 0.586066 1.000000 +vt 0.528689 0.994565 +vt 0.586066 0.989130 +vt 0.528689 0.989130 +vt 0.586066 0.983696 +vt 0.528689 0.983696 +vt 0.586066 0.978261 +vt 0.528689 0.978261 +vt 0.586066 0.972826 +vt 0.528689 0.972826 +vt 0.528689 0.956522 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 +s off +f 494/848/166 501/849/166 498/850/166 +f 500/851/166 501/849/166 494/848/166 +f 505/852/167 504/853/167 502/854/167 +f 506/855/167 510/856/167 509/857/167 +f 498/858/168 503/859/168 497/860/168 +f 501/849/169 502/861/169 498/850/169 +f 497/860/170 504/862/170 496/863/170 +f 493/864/171 508/865/171 499/866/171 +f 496/863/172 505/867/172 495/868/172 +f 499/869/173 509/857/173 500/851/173 +f 495/870/171 506/855/171 494/871/171 +f 494/848/170 507/872/170 493/864/170 +f 500/851/174 510/856/174 501/849/174 +f 512/873/166 519/874/166 516/875/166 +f 518/876/166 519/874/166 512/873/166 +f 523/877/167 522/878/167 520/879/167 +f 524/880/167 528/881/167 527/882/167 +f 516/883/168 521/884/168 515/885/168 +f 519/874/169 520/886/169 516/875/169 +f 515/885/170 522/887/170 514/888/170 +f 511/889/171 526/890/171 517/891/171 +f 514/888/172 523/892/172 513/893/172 +f 517/894/173 527/882/173 518/876/173 +f 513/895/171 524/880/171 512/896/171 +f 512/873/170 525/897/170 511/889/170 +f 518/876/174 528/881/174 519/874/174 +f 542/898/166 538/899/166 534/900/166 +f 539/901/167 541/902/167 543/903/167 +f 498/850/166 497/860/166 496/863/166 +f 496/863/166 495/904/166 498/850/166 +f 495/904/166 494/848/166 498/850/166 +f 494/848/166 493/864/166 500/851/166 +f 493/864/166 499/866/166 500/851/166 +f 504/853/167 503/905/167 502/854/167 +f 502/854/167 510/856/167 506/855/167 +f 506/855/167 505/852/167 502/854/167 +f 508/906/167 507/907/167 509/857/167 +f 507/907/167 506/855/167 509/857/167 +f 498/858/168 502/908/168 503/859/168 +f 501/849/169 510/909/169 502/861/169 +f 497/860/170 503/859/170 504/862/170 +f 493/864/171 507/910/171 508/865/171 +f 496/863/172 504/862/172 505/867/172 +f 499/869/173 508/911/173 509/857/173 +f 495/870/171 505/852/171 506/855/171 +f 494/848/170 506/912/170 507/872/170 +f 500/851/174 509/857/174 510/856/174 +f 516/875/166 515/885/166 514/888/166 +f 514/888/166 513/913/166 516/875/166 +f 513/913/166 512/873/166 516/875/166 +f 512/873/166 511/889/166 518/876/166 +f 511/889/166 517/891/166 518/876/166 +f 522/878/167 521/914/167 520/879/167 +f 520/879/167 528/881/167 524/880/167 +f 524/880/167 523/877/167 520/879/167 +f 526/915/167 525/916/167 527/882/167 +f 525/916/167 524/880/167 527/882/167 +f 516/883/168 520/917/168 521/884/168 +f 519/874/169 528/918/169 520/886/169 +f 515/885/170 521/884/170 522/887/170 +f 511/889/171 525/919/171 526/890/171 +f 514/888/172 522/887/172 523/892/172 +f 517/894/173 526/920/173 527/882/173 +f 513/895/171 523/877/171 524/880/171 +f 512/873/170 524/921/170 525/897/170 +f 518/876/174 527/882/174 528/881/174 +f 534/900/166 532/922/166 530/923/166 +f 530/923/166 544/924/166 542/898/166 +f 542/898/166 540/925/166 538/899/166 +f 538/899/166 536/926/166 534/900/166 +f 534/900/166 530/923/166 542/898/166 +f 543/903/167 529/927/167 531/928/167 +f 531/928/167 533/929/167 543/903/167 +f 533/929/167 535/930/167 543/903/167 +f 535/930/167 537/931/167 543/903/167 +f 537/931/167 539/901/167 543/903/167 +s 1 +f 530/932/169 531/933/175 529/934/169 +f 532/935/175 533/936/174 531/933/175 +f 534/937/174 535/938/173 533/939/174 +f 536/940/173 537/941/171 535/938/173 +f 538/942/171 539/943/172 537/941/171 +f 540/944/172 541/945/170 539/943/172 +f 542/946/170 543/947/168 541/945/170 +f 544/948/168 529/934/169 543/947/168 +f 530/932/169 532/935/175 531/933/175 +f 532/935/175 534/949/174 533/936/174 +f 534/937/174 536/940/173 535/938/173 +f 536/940/173 538/942/171 537/941/171 +f 538/942/171 540/944/172 539/943/172 +f 540/944/172 542/946/170 541/945/170 +f 542/946/170 544/948/168 543/947/168 +f 544/948/168 530/932/169 529/934/169 +o StockBack +v 0.500000 0.000000 -2.500000 +v 0.500000 0.000000 -6.000000 +v 0.625000 0.000000 -6.000000 +v 0.625000 0.000000 -2.500000 +v 0.500000 -0.625000 -6.000000 +v 0.625000 -0.625000 -6.000000 +v 0.625000 -0.625000 -2.500000 +v 0.500000 -0.625000 -2.500000 +v 0.625000 0.000000 -6.000000 +v -0.625000 0.000000 -6.000000 +v 0.625000 -3.250000 -6.000000 +v -0.625000 -3.250000 -6.000000 +v 0.625000 0.000000 -6.250000 +v -0.625000 0.000000 -6.250000 +v 0.625000 -3.250000 -6.250000 +v -0.625000 -3.250000 -6.250000 +v 0.625000 -0.500000 -6.750000 +v -0.625000 -0.500000 -6.750000 +v 0.625000 -0.625000 -4.000000 +v 0.500000 -0.625000 -4.000000 +v 0.625000 -2.625000 -6.000000 +v 0.500000 -2.625000 -6.000000 +v 0.625000 -0.625000 -4.500000 +v 0.625000 -2.125000 -6.000000 +v 0.500000 -0.625000 -4.500000 +v 0.500000 -2.125000 -6.000000 +v -0.625000 0.000000 -2.500000 +v -0.625000 0.000000 -6.000000 +v -0.500000 0.000000 -6.000000 +v -0.500000 0.000000 -2.500000 +v -0.625000 -0.625000 -6.000000 +v -0.500000 -0.625000 -6.000000 +v -0.500000 -0.625000 -2.500000 +v -0.625000 -0.625000 -2.500000 +v -0.500000 -0.625000 -4.000000 +v -0.625000 -0.625000 -4.000000 +v -0.500000 -2.625000 -6.000000 +v -0.625000 -2.625000 -6.000000 +v -0.500000 -0.625000 -4.500000 +v -0.500000 -2.125000 -6.000000 +v -0.625000 -0.625000 -4.500000 +v -0.625000 -2.125000 -6.000000 +vt 0.778689 0.929348 +vt 0.663934 0.940217 +vt 0.663934 0.929348 +vt 0.663934 0.864130 +vt 0.778689 0.875000 +vt 0.663934 0.875000 +vt 0.659836 0.929348 +vt 0.778689 0.940217 +vt 0.663934 0.994565 +vt 0.934426 0.543478 +vt 0.975410 0.260870 +vt 0.975410 0.543478 +vt 1.000000 0.500000 +vt 0.934426 0.565217 +vt 0.934426 0.260870 +vt 0.975410 0.239130 +vt 0.975410 0.565217 +vt 0.934426 0.608696 +vt 0.934426 0.000000 +vt 0.934426 0.239130 +vt 0.909836 0.500000 +vt 0.922131 0.858696 +vt 0.926230 0.608696 +vt 0.926230 0.858696 +vt 0.938525 0.826087 +vt 0.909836 0.641304 +vt 0.922131 0.608696 +vt 0.942623 0.641304 +vt 0.938525 0.641304 +vt 0.778689 0.929348 +vt 0.663934 0.940217 +vt 0.663934 0.929348 +vt 0.663934 0.864130 +vt 0.778689 0.875000 +vt 0.663934 0.875000 +vt 0.659836 0.929348 +vt 0.778689 0.940217 +vt 0.663934 0.994565 +vt 0.922131 0.858696 +vt 0.926230 0.608696 +vt 0.926230 0.858696 +vt 0.938525 0.826087 +vt 0.909836 0.641304 +vt 0.922131 0.608696 +vt 0.942623 0.641304 +vt 0.938525 0.641304 +vt 0.778689 0.864130 +vt 0.659836 0.875000 +vt 0.778689 0.994565 +vt 0.983607 0.260870 +vt 0.983607 0.543478 +vt 0.975410 0.608696 +vt 0.975410 0.000000 +vt 0.926230 0.543478 +vt 0.926230 0.260870 +vt 0.909836 0.826087 +vt 0.942623 0.826087 +vt 0.778689 0.864130 +vt 0.659836 0.875000 +vt 0.778689 0.994565 +vt 0.909836 0.826087 +vt 0.942623 0.826087 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.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.0000 -0.1789 -0.9839 +vn 0.0000 -0.7071 0.7071 +s off +f 547/950/176 545/951/176 548/952/176 +f 552/953/177 550/954/177 551/955/177 +f 545/956/178 551/955/178 548/952/178 +f 546/957/179 552/958/179 545/951/179 +f 548/952/180 550/954/180 547/950/180 +f 554/959/178 555/960/178 553/961/178 +f 561/962/180 553/961/180 555/960/180 +f 553/961/176 558/963/176 554/959/176 +f 556/964/177 559/965/177 555/960/177 +f 557/966/181 562/967/181 558/963/181 +f 562/968/182 559/965/182 560/969/182 +f 562/970/179 556/964/179 554/959/179 +f 564/971/183 565/972/183 563/973/183 +f 565/972/180 567/974/180 563/973/180 +f 564/971/179 570/975/179 566/976/179 +f 570/977/181 567/974/181 568/978/181 +f 573/979/176 571/980/176 574/981/176 +f 578/982/177 576/983/177 577/984/177 +f 571/985/178 577/984/178 574/981/178 +f 572/986/179 578/987/179 571/980/179 +f 574/981/180 576/983/180 573/979/180 +f 580/988/183 581/989/183 579/990/183 +f 581/989/180 583/991/180 579/990/180 +f 580/988/179 586/992/179 582/993/179 +f 586/994/181 583/991/181 584/995/181 +f 547/950/176 546/957/176 545/951/176 +f 552/953/177 549/996/177 550/954/177 +f 545/956/178 552/997/178 551/955/178 +f 546/957/179 549/998/179 552/958/179 +f 548/952/180 551/955/180 550/954/180 +f 554/959/178 556/964/178 555/960/178 +f 555/960/180 559/999/180 561/962/180 +f 561/962/180 557/1000/180 553/961/180 +f 553/961/176 557/966/176 558/963/176 +f 556/964/177 560/969/177 559/965/177 +f 557/966/181 561/1001/181 562/967/181 +f 562/968/182 561/1002/182 559/965/182 +f 554/959/179 558/1003/179 562/970/179 +f 562/970/179 560/1004/179 556/964/179 +f 564/971/183 566/976/183 565/972/183 +f 565/972/180 568/978/180 567/974/180 +f 564/971/179 569/1005/179 570/975/179 +f 570/977/181 569/1006/181 567/974/181 +f 573/979/176 572/986/176 571/980/176 +f 578/982/177 575/1007/177 576/983/177 +f 571/985/178 578/1008/178 577/984/178 +f 572/986/179 575/1009/179 578/987/179 +f 574/981/180 577/984/180 576/983/180 +f 580/988/183 582/993/183 581/989/183 +f 581/989/180 584/995/180 583/991/180 +f 580/988/179 585/1010/179 586/992/179 +f 586/994/181 585/1011/181 583/991/181 +o Silencer +v 0.000000 1.500000 6.375000 +v -0.375000 1.399519 6.375000 +v -0.649519 1.125000 6.375000 +v -0.750000 0.750000 6.375000 +v -0.649519 0.375000 6.375000 +v -0.375000 0.100481 6.375000 +v 0.000000 0.000000 6.375000 +v 0.375000 0.100481 6.375000 +v 0.649519 0.375000 6.375000 +v 0.750000 0.750000 6.375000 +v 0.649519 1.124999 6.375000 +v 0.375000 1.399519 6.375000 +v -0.375000 1.399519 16.375000 +v 0.000000 1.500000 16.375000 +v -0.649519 1.125000 16.375000 +v -0.750000 0.750000 16.375000 +v -0.649519 0.375000 16.375000 +v -0.375000 0.100481 16.375000 +v 0.000000 0.000000 16.375000 +v 0.375000 0.100481 16.375000 +v 0.649519 0.375000 16.375000 +v 0.750000 0.750000 16.375000 +v 0.649519 1.124999 16.375000 +v 0.375000 1.399519 16.375000 +v -0.093750 0.912380 16.375000 +v 0.000000 0.937500 16.375000 +v -0.162380 0.843750 16.375000 +v -0.187500 0.750000 16.375000 +v -0.162380 0.656250 16.375000 +v -0.093750 0.587620 16.375000 +v 0.000000 0.562500 16.375000 +v 0.093750 0.587620 16.375000 +v 0.162380 0.656250 16.375000 +v 0.187500 0.750000 16.375000 +v 0.162380 0.843750 16.375000 +v 0.093750 0.912380 16.375000 +v -0.093750 0.912382 14.375000 +v 0.000000 0.937502 14.375000 +v -0.162380 0.843752 14.375000 +v -0.187500 0.750002 14.375000 +v -0.162380 0.656252 14.375000 +v -0.093750 0.587623 14.375000 +v 0.000000 0.562502 14.375000 +v 0.093750 0.587622 14.375000 +v 0.162380 0.656252 14.375000 +v 0.187500 0.750002 14.375000 +v 0.162380 0.843752 14.375000 +v 0.093750 0.912382 14.375000 +vt 0.455686 0.619620 +vt 0.455686 0.684728 +vt 0.413166 0.684728 +vt 0.327869 0.782609 +vt 0.344262 0.760870 +vt 0.344262 0.771739 +vt 0.327869 0.684783 +vt 0.344262 0.706522 +vt 0.327869 0.717391 +vt 0.327869 0.847826 +vt 0.344262 0.869565 +vt 0.327869 0.880435 +vt 0.327869 0.554348 +vt 0.344262 0.576087 +vt 0.327869 0.586957 +vt 0.327869 0.750000 +vt 0.344262 0.728261 +vt 0.344262 0.739130 +vt 0.344262 0.663043 +vt 0.344262 0.673913 +vt 0.327869 0.815217 +vt 0.344262 0.836957 +vt 0.327869 0.521739 +vt 0.344262 0.543478 +vt 0.327869 0.619565 +vt 0.344262 0.641304 +vt 0.327869 0.652174 +vt 0.344262 0.804348 +vt 0.327869 0.913043 +vt 0.344262 0.891304 +vt 0.344262 0.902174 +vt 0.344262 0.608696 +vt 0.421302 0.741838 +vt 0.415984 0.749981 +vt 0.410666 0.725553 +vt 0.446701 0.708559 +vt 0.434426 0.717282 +vt 0.422152 0.708559 +vt 0.409877 0.652174 +vt 0.413166 0.619620 +vt 0.422152 0.595789 +vt 0.434426 0.587066 +vt 0.446701 0.595789 +vt 0.458975 0.652174 +vt 0.344262 0.695652 +vt 0.344262 0.858696 +vt 0.344262 0.565217 +vt 0.344262 0.826087 +vt 0.344262 0.532609 +vt 0.344262 0.630435 +vt 0.344262 0.793478 +vt 0.344262 0.597826 +vt 0.412914 0.747799 +vt 0.410666 0.741838 +vt 0.409843 0.733696 +vt 0.412914 0.719592 +vt 0.421302 0.725553 +vt 0.415984 0.717410 +vt 0.419054 0.719592 +vt 0.422124 0.733696 +vt 0.419054 0.747799 +vt -0.000000 0.521739 +vt -0.000000 0.554348 +vt -0.000000 0.619565 +vt -0.000000 0.652174 +vt -0.000000 0.782609 +vt -0.000000 0.815217 +vt -0.000000 0.880435 +vt -0.000000 0.913043 +vt -0.000000 0.586957 +vt -0.000000 0.750000 +vt -0.000000 0.684783 +vt -0.000000 0.717391 +vt -0.000000 0.847826 +vt 0.409836 0.597826 +vt 0.409836 0.608696 +vt 0.409836 0.771739 +vt 0.409836 0.695652 +vt 0.409836 0.706522 +vt 0.409836 0.869565 +vt 0.409836 0.565217 +vt 0.409836 0.576087 +vt 0.409836 0.739130 +vt 0.409836 0.663043 +vt 0.409836 0.673913 +vt 0.409836 0.836957 +vt 0.409836 0.532609 +vt 0.409836 0.543478 +vt 0.409836 0.630435 +vt 0.409836 0.641304 +vt 0.409836 0.804348 +vt 0.409836 0.902174 +vt 0.409836 0.760870 +vt 0.409836 0.858696 +vt 0.409836 0.728261 +vt 0.409836 0.826087 +vt 0.409836 0.793478 +vt 0.409836 0.891304 +vn -0.0000 0.0000 -1.0000 +vn -0.0000 0.0000 1.0000 +vn -0.0000 -1.0000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn -1.0000 -0.0000 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.8660 0.5000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.8660 -0.5000 0.0000 +s off +f 591/1012/184 589/1013/184 597/1014/184 +f 609/1015/185 622/1016/185 621/1017/185 +f 599/1018/185 612/1019/185 600/1020/185 +f 607/1021/185 618/1022/185 606/1023/185 +f 604/1024/185 615/1025/185 603/1026/185 +f 610/1027/185 612/1028/185 622/1029/185 +f 599/1018/185 613/1030/185 611/1031/185 +f 608/1032/185 619/1033/185 607/1021/185 +f 605/1034/185 616/1035/185 604/1024/185 +f 602/1036/185 613/1037/185 601/1038/185 +f 609/1015/185 620/1039/185 608/1032/185 +f 605/1040/185 618/1041/185 617/1042/185 +f 603/1026/185 614/1043/185 602/1036/185 +f 633/1044/185 624/1045/185 627/1046/185 +f 589/1013/184 588/1047/184 597/1014/184 +f 588/1047/184 587/1048/184 597/1014/184 +f 587/1048/184 598/1049/184 597/1014/184 +f 597/1014/184 596/1050/184 595/1051/184 +f 595/1051/184 594/1052/184 593/1053/184 +f 593/1053/184 592/1054/184 591/1012/184 +f 591/1012/184 590/1055/184 589/1013/184 +f 597/1014/184 595/1051/184 593/1053/184 +f 593/1053/184 591/1012/184 597/1014/184 +f 609/1015/185 610/1027/185 622/1016/185 +f 599/1018/185 611/1056/185 612/1019/185 +f 607/1021/185 619/1057/185 618/1022/185 +f 604/1024/185 616/1058/185 615/1025/185 +f 610/1027/185 600/1020/185 612/1028/185 +f 599/1018/185 601/1038/185 613/1030/185 +f 608/1032/185 620/1059/185 619/1033/185 +f 605/1034/185 617/1060/185 616/1035/185 +f 602/1036/185 614/1061/185 613/1037/185 +f 609/1015/185 621/1062/185 620/1039/185 +f 605/1040/185 606/1023/185 618/1041/185 +f 603/1026/185 615/1063/185 614/1043/185 +f 624/1045/185 623/1064/185 627/1046/185 +f 623/1064/185 625/1065/185 627/1046/185 +f 625/1065/185 626/1066/185 627/1046/185 +f 627/1046/185 628/1067/185 631/1068/185 +f 628/1067/185 629/1069/185 631/1068/185 +f 629/1069/185 630/1070/185 631/1068/185 +f 631/1068/185 632/1071/185 633/1044/185 +f 633/1044/185 634/1072/185 624/1045/185 +f 631/1068/185 633/1044/185 627/1046/185 +s 1 +f 593/1073/186 604/1024/187 592/1074/187 +f 590/1075/188 601/1038/189 589/1076/189 +f 597/1077/190 608/1032/191 596/1078/191 +f 594/1079/192 605/1040/186 593/1080/186 +f 591/1081/193 602/1036/188 590/1075/188 +f 598/1082/194 609/1015/190 597/1077/190 +f 588/1083/195 600/1020/196 587/1084/196 +f 595/1085/197 606/1023/192 594/1079/192 +f 592/1074/187 603/1026/193 591/1081/193 +f 587/1084/196 610/1027/194 598/1082/194 +f 589/1076/189 599/1018/195 588/1083/195 +f 596/1078/191 607/1021/197 595/1085/197 +f 614/1043/191 627/1086/190 626/1087/191 +f 622/1016/187 633/1088/193 621/1017/193 +f 612/1019/186 623/1089/192 624/1090/186 +f 619/1057/189 630/1091/195 618/1022/195 +f 615/1025/190 628/1092/194 627/1093/190 +f 612/1028/186 634/1094/187 622/1029/187 +f 611/1031/192 625/1095/197 623/1096/192 +f 620/1059/188 631/1097/189 619/1033/189 +f 616/1035/194 629/1098/196 628/1099/194 +f 613/1037/197 626/1100/191 625/1101/197 +f 621/1062/193 632/1102/188 620/1039/188 +f 618/1041/195 629/1103/196 617/1042/196 +f 593/1073/186 605/1034/186 604/1024/187 +f 590/1075/188 602/1036/188 601/1038/189 +f 597/1077/190 609/1015/190 608/1032/191 +f 594/1079/192 606/1023/192 605/1040/186 +f 591/1081/193 603/1026/193 602/1036/188 +f 598/1082/194 610/1027/194 609/1015/190 +f 588/1083/195 599/1018/195 600/1020/196 +f 595/1085/197 607/1021/197 606/1023/192 +f 592/1074/187 604/1024/187 603/1026/193 +f 587/1084/196 600/1020/196 610/1027/194 +f 589/1076/189 601/1038/189 599/1018/195 +f 596/1078/191 608/1032/191 607/1021/197 +f 614/1043/191 615/1063/190 627/1086/190 +f 622/1016/187 634/1104/187 633/1088/193 +f 612/1019/186 611/1056/192 623/1089/192 +f 619/1057/189 631/1105/189 630/1091/195 +f 615/1025/190 616/1058/194 628/1092/194 +f 612/1028/186 624/1106/186 634/1094/187 +f 611/1031/192 613/1030/197 625/1095/197 +f 620/1059/188 632/1107/188 631/1097/189 +f 616/1035/194 617/1060/196 629/1098/196 +f 613/1037/197 614/1061/191 626/1100/191 +f 621/1062/193 633/1108/193 632/1102/188 +f 618/1041/195 630/1109/195 629/1103/196 +o Gun +v -0.750000 0.000000 3.250000 +v 0.750000 0.000000 3.250000 +v -0.750000 0.000000 -5.500000 +v 0.750000 0.000000 -5.500000 +v -0.750000 1.500000 3.250000 +v 0.750000 1.500000 3.250000 +v -0.750000 1.500000 -5.500000 +v 0.750000 1.500000 -5.500000 +v 0.000000 1.250000 5.500000 +v -0.250000 1.183012 5.500000 +v -0.433013 1.000000 5.500000 +v -0.500000 0.750000 5.500000 +v -0.433013 0.500000 5.500000 +v -0.250000 0.316988 5.500000 +v 0.000000 0.250000 5.500000 +v 0.250000 0.316987 5.500000 +v 0.433012 0.500000 5.500000 +v 0.500000 0.750000 5.500000 +v 0.433013 1.000000 5.500000 +v 0.250000 1.183012 5.500000 +v 0.000000 1.250000 6.375000 +v -0.250000 1.183012 6.375000 +v -0.433013 1.000000 6.375000 +v -0.500000 0.750000 6.375000 +v -0.433013 0.500000 6.375000 +v -0.250000 0.316988 6.375000 +v 0.000000 0.250000 6.375000 +v 0.250000 0.316987 6.375000 +v 0.433012 0.500000 6.375000 +v 0.500000 0.750000 6.375000 +v 0.433013 1.000000 6.375000 +v 0.250000 1.183012 6.375000 +v 0.000000 1.000000 6.375000 +v -0.125000 0.966506 6.375000 +v -0.216506 0.875000 6.375000 +v -0.250000 0.750000 6.375000 +v -0.216506 0.625000 6.375000 +v -0.125000 0.533494 6.375000 +v 0.000000 0.500000 6.375000 +v 0.125000 0.533494 6.375000 +v 0.216506 0.625000 6.375000 +v 0.250000 0.750000 6.375000 +v 0.216506 0.875000 6.375000 +v 0.125000 0.966506 6.375000 +v 0.000000 1.000000 8.375000 +v -0.125000 0.966506 8.375000 +v -0.216506 0.875000 8.375000 +v -0.250000 0.750000 8.375000 +v -0.216506 0.625000 8.375000 +v -0.125000 0.533494 8.375000 +v 0.000000 0.500000 8.375000 +v 0.125000 0.533494 8.375000 +v 0.216506 0.625000 8.375000 +v 0.250000 0.750000 8.375000 +v 0.216506 0.875000 8.375000 +v 0.125000 0.966506 8.375000 +v 0.000000 0.937500 8.375000 +v -0.093750 0.912380 8.375000 +v -0.162380 0.843750 8.375000 +v -0.187500 0.750000 8.375000 +v -0.162380 0.656250 8.375000 +v -0.093750 0.587620 8.375000 +v 0.000000 0.562500 8.375000 +v 0.093750 0.587620 8.375000 +v 0.162380 0.656250 8.375000 +v 0.187500 0.750000 8.375000 +v 0.162380 0.843750 8.375000 +v 0.093750 0.912380 8.375000 +v 0.000000 0.937500 6.375000 +v -0.093750 0.912380 6.375000 +v -0.162380 0.843750 6.375000 +v -0.187500 0.750000 6.375000 +v -0.162380 0.656250 6.375000 +v -0.093750 0.587620 6.375000 +v 0.000000 0.562500 6.375000 +v 0.093750 0.587620 6.375000 +v 0.162380 0.656250 6.375000 +v 0.187500 0.750000 6.375000 +v 0.162380 0.843750 6.375000 +v 0.093750 0.912380 6.375000 +v -0.875000 -0.250000 1.250000 +v 0.875000 -0.250000 1.250000 +v -0.875000 -0.250000 -2.250000 +v 0.875000 -0.250000 -2.250000 +v -0.875000 0.500000 -2.250000 +v -0.875000 0.500000 1.250000 +v 0.875000 0.500000 1.250000 +v 0.875000 0.500000 -2.250000 +v -0.875000 1.000000 1.375000 +v -0.875000 1.000000 3.250000 +v 0.875000 1.000000 3.250000 +v 0.875000 1.000000 1.375000 +v -0.875000 0.125000 3.250000 +v -0.500000 -0.250000 3.250000 +v 0.500000 -0.250000 3.250000 +v 0.875000 0.125000 3.250000 +v -0.500000 -0.250000 1.375000 +v -0.875000 0.125000 1.375000 +v 0.875000 0.125000 1.375000 +v 0.500000 -0.250000 1.375000 +v -0.750000 0.125000 3.625000 +v -0.500000 -0.250000 3.625000 +v 0.750000 1.000000 3.625000 +v -0.750000 1.000000 3.625000 +v -0.625000 0.000000 3.625000 +v 0.625000 0.000000 3.625000 +v -0.625000 1.500000 3.625000 +v 0.625000 1.500000 3.625000 +v -0.625000 0.000000 5.500000 +v 0.625000 0.000000 5.500000 +v -0.625000 1.500000 5.500000 +v 0.625000 1.500000 5.500000 +v 0.750000 0.125000 3.625000 +v 0.500000 -0.250000 3.625000 +v -0.750000 0.125000 5.375000 +v -0.750000 1.000000 5.375000 +v 0.750000 0.125000 5.375000 +v 0.500000 -0.250000 5.375000 +v -0.500000 -0.250000 5.375000 +v 0.750000 1.000000 5.375000 +v -0.750000 1.500000 3.250000 +v -0.750000 1.500000 -3.750000 +v -0.375000 1.500000 3.250000 +v -0.375000 1.500000 -3.750000 +v -0.750000 1.750000 1.250000 +v -0.750000 1.750000 -1.750000 +v -0.375000 1.750000 1.250000 +v -0.375000 1.750000 -1.750000 +v 0.375000 1.500000 3.250000 +v 0.375000 1.500000 -3.750000 +v 0.750000 1.500000 3.250000 +v 0.750000 1.500000 -3.750000 +v 0.375000 1.750000 1.250000 +v 0.375000 1.750000 -1.750000 +v 0.750000 1.750000 1.250000 +v 0.750000 1.750000 -1.750000 +v 0.375000 1.500000 4.562500 +v 0.375000 1.500000 5.437500 +v 0.375000 1.875000 5.437500 +v 0.375000 2.018506 5.404197 +v 0.375000 2.140165 5.309359 +v 0.375000 2.221455 5.167424 +v 0.500000 1.875000 4.562500 +v 0.500000 2.018506 4.595803 +v 0.500000 2.140165 4.690641 +v 0.500000 2.221455 4.832576 +v 0.500000 2.250000 5.000000 +v 0.500000 2.221455 5.167424 +v 0.500000 2.140165 5.309359 +v 0.500000 2.018506 5.404197 +v 0.500000 1.875000 5.437500 +v 0.375000 2.250000 5.000000 +v 0.375000 2.221455 4.832576 +v 0.375000 2.140165 4.690641 +v 0.375000 2.018506 4.595803 +v 0.375000 1.875000 4.562500 +v 0.500000 1.500000 5.437500 +v 0.500000 1.500000 4.562500 +v 0.375000 2.000000 -5.375000 +v 0.375000 2.167424 -5.327425 +v 0.375000 2.309359 -5.191942 +v 0.375000 2.404197 -4.989178 +v 0.375000 2.437500 -4.750000 +v 0.375000 2.404197 -4.510823 +v 0.375000 2.309359 -4.308059 +v 0.375000 2.167424 -4.172575 +v 0.375000 2.000000 -4.125000 +v 0.500000 2.437500 -4.750000 +v 0.500000 2.404197 -4.989178 +v 0.500000 2.309359 -5.191942 +v 0.500000 2.167424 -5.327425 +v 0.500000 2.000000 -5.375000 +v 0.375000 1.500000 -4.125000 +v 0.375000 1.500000 -5.375000 +v 0.500000 2.404197 -4.510823 +v 0.500000 2.309359 -4.308059 +v 0.500000 2.167424 -4.172575 +v 0.500000 2.000000 -4.125000 +v 0.500000 1.500000 -4.125000 +v 0.500000 1.500000 -5.375000 +v -0.750000 1.500000 -1.500000 +v -0.750000 0.750000 -1.500000 +v -0.750000 0.750000 0.125000 +v -0.750000 1.500000 0.125000 +v -0.750000 1.500000 -1.500000 +v -0.750000 1.500000 0.125000 +v -0.750000 1.750000 -1.500000 +v -0.750000 1.750000 0.125000 +v -0.625000 1.500000 -1.500000 +v -0.625000 0.750000 -1.500000 +v -0.625000 0.750000 0.125000 +v -0.625000 1.500000 0.125000 +v 0.375000 -0.250000 -0.250000 +v -0.375000 -0.250000 -0.250000 +v -0.500000 1.500000 -1.500000 +v -0.500000 1.500000 0.125000 +v -0.500000 1.750000 -1.500000 +v -0.500000 1.750000 0.125000 +v -0.375000 -2.750000 -2.000000 +v 0.375000 -2.750000 -2.000000 +v 0.375000 -3.250000 -0.250000 +v 0.375000 -3.250000 -1.500000 +v -0.375000 -3.250000 -0.250000 +v -0.375000 -3.250000 -1.500000 +v -0.375000 -2.000000 -2.000000 +v 0.375000 -2.000000 -2.000000 +v -0.375000 -1.000000 -1.750000 +v 0.375000 -1.000000 -1.750000 +v -0.375000 -0.500000 -2.250000 +v 0.375000 -0.500000 -2.250000 +v -0.375000 -0.250000 -2.250000 +v 0.375000 -0.250000 -2.250000 +v 0.625000 -2.750000 -1.750000 +v 0.625000 -3.250000 -1.250000 +v 0.625000 -3.250000 -0.375000 +v 0.625000 -0.250000 -0.375000 +v 0.625000 -2.000000 -1.750000 +v 0.625000 -1.000000 -1.500000 +v 0.625000 -0.500000 -2.000000 +v 0.625000 -0.250000 -2.000000 +v -0.625000 -3.250000 -1.250000 +v -0.625000 -2.750000 -1.750000 +v -0.625000 -3.250000 -0.375000 +v -0.625000 -0.250000 -0.375000 +v -0.625000 -2.000000 -1.750000 +v -0.625000 -1.000000 -1.500000 +v -0.625000 -0.500000 -2.000000 +v -0.625000 -0.250000 -2.000000 +v -0.250000 0.000000 1.375000 +v 0.250000 0.000000 1.375000 +v -0.250000 0.000000 1.250000 +v 0.250000 0.000000 1.250000 +v -0.250000 -1.250000 1.375000 +v 0.250000 -1.250000 1.375000 +v -0.250000 -1.250000 1.250000 +v 0.250000 -1.250000 1.250000 +v -0.250000 -1.500000 1.000000 +v 0.250000 -1.500000 1.000000 +v -0.250000 -1.625000 1.000000 +v 0.250000 -1.625000 1.000000 +v -0.250000 -1.500000 0.250000 +v 0.250000 -1.500000 0.250000 +v -0.250000 -1.625000 0.250000 +v 0.250000 -1.625000 0.250000 +v -0.250000 -1.250000 -0.250000 +v 0.250000 -1.250000 -0.250000 +v -0.250000 -1.375000 -0.250000 +v 0.250000 -1.375000 -0.250000 +v -0.156250 -0.250000 0.312500 +v 0.156250 -0.250000 0.312500 +v -0.156250 -0.250000 0.187500 +v 0.156250 -0.250000 0.187500 +v -0.156250 -0.875000 0.312500 +v 0.156250 -0.875000 0.312500 +v -0.156250 -0.875000 0.187500 +v 0.156250 -0.875000 0.187500 +v -0.156250 -1.187500 0.562500 +v 0.156250 -1.187500 0.562500 +v -0.375000 1.500000 5.375000 +v 0.375000 1.500000 5.375000 +v -0.375000 1.500000 4.625000 +v 0.375000 1.500000 4.625000 +v -0.375000 1.625000 4.625000 +v -0.375000 1.625000 5.375000 +v 0.375000 1.625000 5.375000 +v 0.375000 1.625000 4.625000 +v 0.000000 1.625000 4.750000 +v -0.176777 1.625000 4.823223 +v -0.250000 1.625000 5.000000 +v -0.176777 1.625000 5.176777 +v 0.000000 1.625000 5.250000 +v 0.176777 1.625000 5.176777 +v 0.250000 1.625000 5.000000 +v 0.176777 1.625000 4.823223 +v 0.000000 1.687500 4.750000 +v -0.176777 1.687500 4.823223 +v -0.250000 1.687500 5.000000 +v -0.176777 1.687500 5.176777 +v 0.000000 1.687500 5.250000 +v 0.176777 1.687500 5.176777 +v 0.250000 1.687500 5.000000 +v 0.176777 1.687500 4.823223 +v -0.062500 1.687500 5.062500 +v 0.062500 1.687500 5.062500 +v -0.062500 1.687500 4.937500 +v 0.062500 1.687500 4.937500 +v -0.062500 2.187500 4.937500 +v -0.062500 2.187500 5.062500 +v 0.062500 2.187500 5.062500 +v 0.062500 2.187500 4.937500 +v -0.250000 1.500000 -4.250000 +v 0.250000 1.500000 -4.250000 +v -0.250000 1.500000 -5.250000 +v 0.250000 1.500000 -5.250000 +v -0.250000 1.750000 -5.250000 +v -0.250000 1.750000 -4.250000 +v 0.250000 1.750000 -4.250000 +v 0.250000 1.750000 -5.250000 +v 0.250000 1.500000 -4.250000 +v 0.250000 1.500000 -5.250000 +v 0.375000 1.500000 -4.250000 +v 0.375000 1.500000 -5.250000 +v 0.375000 2.000000 -4.250000 +v 0.375000 2.000000 -5.250000 +v 0.250000 2.000000 -4.250000 +v 0.250000 2.000000 -5.250000 +v -0.375000 1.500000 -4.250000 +v -0.375000 1.500000 -5.250000 +v -0.250000 1.500000 -4.250000 +v -0.250000 1.500000 -5.250000 +v -0.250000 2.000000 -4.250000 +v -0.250000 2.000000 -5.250000 +v -0.375000 2.000000 -4.250000 +v -0.375000 2.000000 -5.250000 +v -0.187500 1.750000 -4.625000 +v 0.187500 1.750000 -4.625000 +v -0.187500 1.750000 -4.875000 +v 0.187500 1.750000 -4.875000 +v -0.187500 2.250000 -4.875000 +v -0.187500 2.250000 -4.625000 +v 0.187500 2.250000 -4.625000 +v 0.187500 2.250000 -4.875000 +v -0.062500 2.375000 -4.875000 +v -0.062500 2.375000 -4.625000 +v 0.062500 2.375000 -4.625000 +v 0.062500 2.375000 -4.875000 +v -0.125000 2.250000 -4.625000 +v 0.125000 2.250000 -4.625000 +v -0.125000 2.250000 -4.875000 +v 0.125000 2.250000 -4.875000 +v -0.125000 2.125000 -4.625000 +v 0.125000 2.125000 -4.625000 +v -0.125000 2.125000 -4.875000 +v 0.125000 2.125000 -4.875000 +v 0.062500 2.312500 -4.625000 +v 0.062500 2.062500 -4.625000 +v 0.062500 2.312500 -4.875000 +v 0.062500 2.062500 -4.875000 +v -0.062500 2.312500 -4.625000 +v -0.062500 2.062500 -4.625000 +v -0.062500 2.312500 -4.875000 +v -0.062500 2.062500 -4.875000 +v -0.625000 0.000000 -5.500000 +v 0.625000 0.000000 -5.500000 +v -0.625000 1.000000 -5.500000 +v 0.625000 1.000000 -5.500000 +v -0.625000 1.000000 -5.750000 +v -0.625000 0.000000 -5.750000 +v 0.625000 0.000000 -5.750000 +v 0.625000 1.000000 -5.750000 +v -0.625000 0.750000 -6.000000 +v -0.625000 0.250000 -6.000000 +v 0.625000 0.250000 -6.000000 +v 0.625000 0.750000 -6.000000 +v -0.875000 0.312500 -5.875000 +v 0.875000 0.312500 -5.875000 +v -0.875000 0.224112 -5.838388 +v 0.875000 0.224112 -5.838388 +v -0.875000 0.187500 -5.750000 +v 0.875000 0.187500 -5.750000 +v -0.875000 0.224112 -5.661612 +v 0.875000 0.224112 -5.661612 +v -0.875000 0.312500 -5.625000 +v 0.875000 0.312500 -5.625000 +v -0.875000 0.400888 -5.661612 +v 0.875000 0.400888 -5.661612 +v -0.875000 0.437500 -5.750000 +v 0.875000 0.437500 -5.750000 +v -0.875000 0.400888 -5.838388 +v 0.875000 0.400888 -5.838388 +v -0.500000 1.500000 4.562500 +v -0.500000 1.500000 5.437500 +v -0.500000 1.875000 5.437500 +v -0.500000 2.018506 5.404197 +v -0.500000 2.140165 5.309359 +v -0.500000 2.221455 5.167424 +v -0.375000 1.875000 4.562500 +v -0.375000 2.018506 4.595803 +v -0.375000 2.140165 4.690641 +v -0.375000 2.221455 4.832576 +v -0.375000 2.250000 5.000000 +v -0.375000 2.221455 5.167424 +v -0.375000 2.140165 5.309359 +v -0.375000 2.018506 5.404197 +v -0.375000 1.875000 5.437500 +v -0.500000 2.250000 5.000000 +v -0.500000 2.221455 4.832576 +v -0.500000 2.140165 4.690641 +v -0.500000 2.018506 4.595803 +v -0.500000 1.875000 4.562500 +v -0.375000 1.500000 5.437500 +v -0.375000 1.500000 4.562500 +v -0.500000 2.000000 -5.375000 +v -0.500000 2.167424 -5.327425 +v -0.500000 2.309359 -5.191942 +v -0.500000 2.404197 -4.989178 +v -0.500000 2.437500 -4.750000 +v -0.500000 2.404197 -4.510823 +v -0.500000 2.309359 -4.308059 +v -0.500000 2.167424 -4.172575 +v -0.500000 2.000000 -4.125000 +v -0.375000 2.437500 -4.750000 +v -0.375000 2.404197 -4.989178 +v -0.375000 2.309359 -5.191942 +v -0.375000 2.167424 -5.327425 +v -0.375000 2.000000 -5.375000 +v -0.500000 1.500000 -4.125000 +v -0.500000 1.500000 -5.375000 +v -0.375000 2.404197 -4.510823 +v -0.375000 2.309359 -4.308059 +v -0.375000 2.167424 -4.172575 +v -0.375000 2.000000 -4.125000 +v -0.375000 1.500000 -4.125000 +v -0.375000 1.500000 -5.375000 +vt 0.049180 0.521739 +vt 0.336066 0.391304 +vt 0.336066 0.521739 +vt 0.049180 0.391304 +vt 0.336066 0.260870 +vt 0.000000 0.130435 +vt 0.049180 0.260870 +vt -0.000000 0.260870 +vt 0.336066 0.000000 +vt 0.348361 0.130435 +vt 0.336066 0.130435 +vt 0.655738 0.260870 +vt 0.663934 0.277174 +vt 0.655738 0.282609 +vt 0.655738 0.369565 +vt 0.663934 0.385870 +vt 0.655738 0.391304 +vt 0.655738 0.173913 +vt 0.663934 0.190217 +vt 0.655738 0.195652 +vt 0.655738 0.304348 +vt 0.663934 0.288043 +vt 0.663934 0.298913 +vt 0.663934 0.244565 +vt 0.663934 0.255435 +vt 0.663934 0.353261 +vt 0.663934 0.364130 +vt 0.663934 0.157609 +vt 0.663934 0.168478 +vt 0.655738 0.239130 +vt 0.663934 0.222826 +vt 0.663934 0.233696 +vt 0.655738 0.326087 +vt 0.663934 0.342391 +vt 0.655738 0.347826 +vt 0.655738 0.413043 +vt 0.663934 0.396739 +vt 0.663934 0.407609 +vt 0.663934 0.211957 +vt 0.655738 0.217391 +vt 0.663934 0.320652 +vt 0.704918 0.500000 +vt 0.706967 0.510870 +vt 0.704918 0.510870 +vt 0.704918 0.554348 +vt 0.706967 0.565217 +vt 0.704918 0.565217 +vt 0.704918 0.532609 +vt 0.706967 0.543478 +vt 0.704918 0.543478 +vt 0.704918 0.586957 +vt 0.706967 0.597826 +vt 0.704918 0.597826 +vt 0.706967 0.489130 +vt 0.706967 0.500000 +vt 0.706967 0.554348 +vt 0.704918 0.521739 +vt 0.706967 0.532609 +vt 0.704918 0.576087 +vt 0.706967 0.586957 +vt 0.704918 0.489130 +vt 0.706967 0.478261 +vt 0.706967 0.521739 +vt 0.706967 0.576087 +vt 0.704918 0.608696 +vt 0.706967 0.608696 +vt 0.663102 0.470094 +vt 0.657787 0.478232 +vt 0.652472 0.453819 +vt 0.483607 0.434783 +vt 0.598361 0.282609 +vt 0.598361 0.434783 +vt 0.598361 0.217391 +vt 0.483607 0.065217 +vt 0.598361 0.065217 +vt 0.459016 0.065217 +vt 0.483607 0.217391 +vt 0.459016 0.217391 +vt 0.622951 0.217391 +vt 0.622951 0.065217 +vt 0.483607 0.282609 +vt 0.598361 0.000000 +vt 0.483607 0.000000 +vt 0.725410 0.152174 +vt 0.663934 -0.000000 +vt 0.725410 0.000000 +vt 0.663934 0.152174 +vt 0.622951 0.119565 +vt 0.348361 0.260870 +vt 0.409836 0.391304 +vt 0.348361 0.391304 +vt 0.348361 0.250000 +vt 0.348361 0.510870 +vt 0.459016 0.250000 +vt 0.409836 0.141304 +vt 0.459016 0.141304 +vt 0.348361 0.402174 +vt 0.409836 0.510870 +vt 0.348361 -0.000000 +vt 0.409836 0.130435 +vt 0.348361 0.141304 +vt 0.409836 0.250000 +vt 0.737705 0.141304 +vt 0.823770 0.141304 +vt 0.795082 0.141304 +vt 0.795082 0.010870 +vt 0.737705 0.010870 +vt 0.475410 0.489130 +vt 0.639344 0.510870 +vt 0.409836 0.510870 +vt 0.536885 0.434783 +vt 0.573770 0.456522 +vt 0.536885 0.456522 +vt 0.483607 0.434783 +vt 0.475410 0.456522 +vt 0.409836 0.434783 +vt 0.475410 0.565217 +vt 0.639344 0.586956 +vt 0.409836 0.586956 +vt 0.639344 0.510870 +vt 0.475410 0.532609 +vt 0.409836 0.510870 +vt 0.742525 0.779778 +vt 0.737925 0.772791 +vt 0.733772 0.750000 +vt 0.733772 0.750000 +vt 0.747951 0.782232 +vt 0.762129 0.750000 +vt 0.684794 0.795957 +vt 0.678156 0.787723 +vt 0.672164 0.760865 +vt 0.692623 0.798848 +vt 0.713082 0.760865 +vt 0.672164 0.760865 +vt 0.180328 0.065217 +vt 0.049180 0.130435 +vt 0.049180 -0.000000 +vt 0.233607 0.065217 +vt 0.471311 0.326087 +vt 0.467213 0.260870 +vt 0.471311 0.260870 +vt 0.467213 0.250000 +vt 0.413934 0.260870 +vt 0.413934 0.250000 +vt 0.409836 0.260870 +vt 0.413934 0.326087 +vt 0.409836 0.326087 +vt 0.479508 0.434783 +vt 0.471311 0.413043 +vt 0.479508 0.413043 +vt 0.409836 0.413043 +vt 0.418033 0.434783 +vt 0.409836 0.434783 +vt 0.418033 0.413043 +vt 0.471311 0.434783 +vt 0.483607 0.478261 +vt 0.483607 0.456522 +vt 0.233607 0.141304 +vt 0.233607 0.130435 +vt 0.536885 0.608696 +vt 0.528689 0.695652 +vt 0.495902 0.673913 +vt 0.467213 0.326087 +vt 0.676230 0.663043 +vt 0.717213 0.673913 +vt 0.676230 0.673913 +vt 0.676230 0.608696 +vt 0.717213 0.619565 +vt 0.676230 0.619565 +vt 0.719262 0.608696 +vt 0.733607 0.619565 +vt 0.733607 0.663043 +vt 0.719262 0.673913 +vt 0.717213 0.663043 +vt 0.758197 0.673913 +vt 0.733607 0.673913 +vt 0.733607 0.608696 +vt 0.758197 0.619565 +vt 0.758197 0.608696 +vt 0.774590 0.619565 +vt 0.774590 0.663043 +vt 0.774590 0.673913 +vt 0.657787 0.777174 +vt 0.668033 0.722826 +vt 0.668033 0.777174 +vt 0.643443 0.777174 +vt 0.653689 0.722826 +vt 0.653689 0.777174 +vt 0.657787 0.722826 +vt 0.672131 0.722826 +vt 0.672131 0.777174 +vt 0.643443 0.722826 +vt 0.653689 0.695652 +vt 0.657787 0.695652 +vt 0.672131 0.695652 +vt 0.536885 0.478261 +vt 0.573770 0.489130 +vt 0.766393 0.858696 +vt 0.741803 0.793478 +vt 0.766393 0.793478 +vt 0.737705 0.793478 +vt 0.741803 0.858696 +vt 0.737705 0.858696 +vt 0.770492 0.858696 +vt 0.770492 0.793478 +vt 0.821721 0.766322 +vt 0.813518 0.744565 +vt 0.821721 0.722809 +vt 0.684426 0.809783 +vt 0.651639 0.853261 +vt 0.651639 0.809783 +vt 0.834016 0.766304 +vt 0.829918 0.777174 +vt 0.829918 0.766304 +vt 0.842213 0.722826 +vt 0.838115 0.766304 +vt 0.838115 0.722826 +vt 0.834016 0.722826 +vt 0.829918 0.722826 +vt 0.846311 0.722826 +vt 0.842213 0.766304 +vt 0.729508 0.853261 +vt 0.696721 0.809783 +vt 0.729508 0.809783 +vt 0.684426 0.864130 +vt 0.684426 0.853261 +vt 0.651639 0.853261 +vt 0.684426 0.864130 +vt 0.651639 0.864130 +vt 0.688525 0.809783 +vt 0.696721 0.853261 +vt 0.688525 0.853261 +vt 0.737705 0.853261 +vt 0.737705 0.809783 +vt 0.688525 0.809783 +vt 0.651639 0.809783 +vt 0.647541 0.853261 +vt 0.647541 0.809783 +vt 0.647541 0.853261 +vt 0.647541 0.809783 +vt 0.688525 0.809783 +vt 0.684426 0.853261 +vt 0.684426 0.809783 +vt 0.631148 0.847826 +vt 0.635246 0.842391 +vt 0.635246 0.847826 +vt 0.627049 0.836957 +vt 0.631148 0.842391 +vt 0.639344 0.836957 +vt 0.610656 0.842391 +vt 0.614754 0.847826 +vt 0.610656 0.847826 +vt 0.606557 0.836957 +vt 0.608607 0.836957 +vt 0.614754 0.842391 +vt 0.618852 0.836957 +vt 0.608607 0.826087 +vt 0.606557 0.793478 +vt 0.616803 0.826087 +vt 0.618562 0.793404 +vt 0.614754 0.820652 +vt 0.610656 0.820652 +vt 0.637295 0.826087 +vt 0.639344 0.793478 +vt 0.629098 0.826087 +vt 0.627049 0.793478 +vt 0.635246 0.820652 +vt 0.631148 0.820652 +vt 0.659836 0.885870 +vt 0.659836 0.972826 +vt 0.643443 0.951087 +vt 0.586066 0.972826 +vt 0.586066 0.885870 +vt 0.602459 0.907609 +vt 0.524591 0.999951 +vt 0.520510 0.989130 +vt 0.524591 0.978309 +vt 0.524590 0.978212 +vt 0.521705 0.975042 +vt 0.527475 0.959739 +vt 0.742525 0.779778 +vt 0.737925 0.772791 +vt 0.733772 0.750000 +vt 0.733772 0.750000 +vt 0.747951 0.782232 +vt 0.762129 0.750000 +vt 0.684794 0.795957 +vt 0.678156 0.787723 +vt 0.672164 0.760865 +vt 0.692623 0.798848 +vt 0.713082 0.760865 +vt 0.672164 0.760865 +vt 0.663934 0.266304 +vt 0.663934 0.375000 +vt 0.663934 0.179348 +vt 0.655738 0.152174 +vt 0.663934 0.331522 +vt 0.663934 0.201087 +vt 0.663934 0.309783 +vt 0.704918 0.478261 +vt 0.654719 0.476052 +vt 0.652472 0.470094 +vt 0.651650 0.461957 +vt 0.654719 0.447861 +vt 0.663102 0.453819 +vt 0.657787 0.445681 +vt 0.660855 0.447861 +vt 0.663924 0.461957 +vt 0.660855 0.476052 +vt 0.635246 0.152174 +vt 0.622951 0.032609 +vt 0.635246 0.000000 +vt 0.409836 0.260870 +vt 0.409836 0.402174 +vt 0.409836 0.000000 +vt 0.823770 0.010870 +vt 0.836066 0.032609 +vt 0.836066 0.119565 +vt 0.639344 0.434783 +vt 0.573770 0.565217 +vt 0.573770 0.532609 +vt 0.734852 0.762334 +vt 0.733772 0.717768 +vt 0.762129 0.717768 +vt 0.762129 0.750000 +vt 0.761050 0.762334 +vt 0.757977 0.772791 +vt 0.747951 0.782232 +vt 0.753377 0.779778 +vt 0.734852 0.762334 +vt 0.737925 0.772791 +vt 0.742525 0.779778 +vt 0.753377 0.779778 +vt 0.757977 0.772791 +vt 0.761050 0.762334 +vt 0.762129 0.717768 +vt 0.733772 0.717768 +vt 0.673721 0.775401 +vt 0.672164 0.717456 +vt 0.713082 0.717456 +vt 0.713082 0.760865 +vt 0.711525 0.775401 +vt 0.707090 0.787723 +vt 0.692623 0.798848 +vt 0.700452 0.795957 +vt 0.673721 0.775401 +vt 0.678156 0.787723 +vt 0.684794 0.795957 +vt 0.700452 0.795957 +vt 0.707090 0.787723 +vt 0.711525 0.775401 +vt 0.713082 0.717456 +vt 0.672164 0.717456 +vt 0.180328 0.130435 +vt 0.180328 0.141304 +vt 0.536885 0.673913 +vt 0.500000 0.695652 +vt 0.495902 0.608696 +vt 0.500000 0.586957 +vt 0.528689 0.586957 +vt 0.717213 0.608696 +vt 0.731557 0.608696 +vt 0.731557 0.673913 +vt 0.758197 0.663043 +vt 0.774590 0.608696 +vt 0.643443 0.695652 +vt 0.668033 0.695652 +vt 0.827522 0.729181 +vt 0.829925 0.744565 +vt 0.827522 0.759950 +vt 0.815921 0.759950 +vt 0.815921 0.729181 +vt 0.834016 0.777174 +vt 0.846311 0.766304 +vt 0.651639 0.864130 +vt 0.688525 0.853261 +vt 0.688525 0.853261 +vt 0.629098 0.836957 +vt 0.637295 0.836957 +vt 0.616803 0.836957 +vt 0.651639 0.972826 +vt 0.643443 0.907609 +vt 0.651639 0.885870 +vt 0.594262 0.885870 +vt 0.602459 0.951087 +vt 0.594262 0.972826 +vt 0.527476 0.981478 +vt 0.528671 0.989130 +vt 0.527476 0.996782 +vt 0.521705 0.996782 +vt 0.521705 0.981478 +vt 0.520510 0.967391 +vt 0.521705 0.959739 +vt 0.524590 0.956569 +vt 0.528670 0.967391 +vt 0.527475 0.975042 +vt 0.734852 0.762334 +vt 0.733772 0.717768 +vt 0.762129 0.717768 +vt 0.762129 0.750000 +vt 0.761050 0.762334 +vt 0.757977 0.772791 +vt 0.747951 0.782232 +vt 0.753377 0.779778 +vt 0.734852 0.762334 +vt 0.737925 0.772791 +vt 0.742525 0.779778 +vt 0.753377 0.779778 +vt 0.757977 0.772791 +vt 0.761050 0.762334 +vt 0.762129 0.717768 +vt 0.733772 0.717768 +vt 0.673721 0.775401 +vt 0.672164 0.717456 +vt 0.713082 0.717456 +vt 0.713082 0.760865 +vt 0.711525 0.775401 +vt 0.707090 0.787723 +vt 0.692623 0.798848 +vt 0.700452 0.795957 +vt 0.673721 0.775401 +vt 0.678156 0.787723 +vt 0.684794 0.795957 +vt 0.700452 0.795957 +vt 0.707090 0.787723 +vt 0.711525 0.775401 +vt 0.713082 0.717456 +vt 0.672164 0.717456 +vt 0.627049 0.217391 +vt 0.627049 0.239130 +vt 0.627049 0.326087 +vt 0.627049 0.347826 +vt 0.627049 0.391304 +vt 0.627049 0.413043 +vt 0.627049 0.195652 +vt 0.627049 0.304348 +vt 0.627049 0.260870 +vt 0.627049 0.282609 +vt 0.627049 0.369565 +vt 0.627049 0.173913 +vt 0.627049 0.152174 +vt 0.639344 0.554348 +vt 0.639344 0.565217 +vt 0.639344 0.532609 +vt 0.639344 0.543478 +vt 0.639344 0.586957 +vt 0.639344 0.597826 +vt 0.639344 0.489130 +vt 0.639344 0.500000 +vt 0.639344 0.521739 +vt 0.639344 0.576087 +vt 0.639344 0.478261 +vt 0.639344 0.510870 +vt 0.639344 0.608696 +vt 0.772541 0.510870 +vt 0.772541 0.565217 +vt 0.772541 0.543478 +vt 0.772541 0.597826 +vt 0.772541 0.500000 +vt 0.772541 0.554348 +vt 0.772541 0.532609 +vt 0.772541 0.586957 +vt 0.772541 0.489130 +vt 0.772541 0.521739 +vt 0.772541 0.576087 +vt 0.772541 0.608696 +vt 0.725410 0.271739 +vt 0.737705 0.233696 +vt 0.737705 0.271739 +vt 0.663934 0.358696 +vt 0.725410 0.358696 +vt 0.663934 0.228261 +vt 0.725410 0.228261 +vt 0.663934 0.402174 +vt 0.663934 0.271739 +vt 0.725410 0.402174 +vt 0.663934 0.478261 +vt 0.795082 0.271739 +vt 0.737705 0.396739 +vt 0.737705 0.478261 +vt 0.725410 0.478261 +vt 0.737705 0.228261 +vt 0.737705 0.358696 +vt 0.737705 0.152174 +vt 0.795082 0.228261 +vt 0.795082 0.396739 +vt 0.737705 0.402174 +vt 0.795082 0.478261 +vt 0.795082 0.358696 +vt 0.639344 0.489130 +vt 0.639344 0.456522 +vt 0.409836 0.456522 +vt 0.409836 0.489130 +vt 0.639344 0.565217 +vt 0.639344 0.532609 +vt 0.409836 0.532609 +vt 0.409836 0.565217 +vt 0.735656 0.793478 +vt 0.741803 0.782609 +vt 0.741803 0.793478 +vt 0.754098 0.793478 +vt 0.760246 0.782609 +vt 0.760246 0.793478 +vt 0.713115 0.793478 +vt 0.725410 0.782609 +vt 0.725410 0.793478 +vt 0.729508 0.793478 +vt 0.735656 0.782609 +vt 0.747951 0.793478 +vt 0.754098 0.782609 +vt 0.770492 0.793478 +vt 0.782787 0.782609 +vt 0.782787 0.793478 +vt 0.766393 0.793478 +vt 0.770492 0.782609 +vt 0.729508 0.782609 +vt 0.747951 0.782609 +vt 0.766393 0.782609 +vt 0.715164 0.798913 +vt 0.709016 0.809783 +vt 0.709016 0.798913 +vt 0.692623 0.798913 +vt 0.684426 0.809783 +vt 0.684426 0.798913 +vt 0.670082 0.798913 +vt 0.663934 0.809783 +vt 0.663934 0.798913 +vt 0.721311 0.798913 +vt 0.715164 0.809783 +vt 0.737705 0.798913 +vt 0.721311 0.809783 +vt 0.700820 0.798913 +vt 0.692623 0.809783 +vt 0.676230 0.798913 +vt 0.670082 0.809783 +vt 0.647541 0.809783 +vt 0.647541 0.798913 +vt 0.700820 0.809783 +vt 0.676230 0.809783 +vt 0.586066 0.891304 +vt 0.561475 0.934783 +vt 0.561475 0.891304 +vt 0.467213 0.956522 +vt 0.491803 0.695652 +vt 0.491803 0.956522 +vt 0.586066 0.739130 +vt 0.561475 0.804348 +vt 0.561475 0.739130 +vt 0.586066 0.695652 +vt 0.561475 0.695652 +vt 0.586066 0.804348 +vt 0.586066 0.934783 +vt 0.561475 0.956522 +vt 0.553279 0.804348 +vt 0.545082 0.739130 +vt 0.553279 0.739130 +vt 0.561475 0.934783 +vt 0.553279 0.956522 +vt 0.561475 0.956522 +vt 0.545082 0.804348 +vt 0.545082 0.891304 +vt 0.553279 0.934783 +vt 0.536885 0.891304 +vt 0.500000 0.956522 +vt 0.536885 0.695652 +vt 0.528689 0.695652 +vt 0.545082 0.804348 +vt 0.545082 0.739130 +vt 0.459016 0.695652 +vt 0.467213 0.695652 +vt 0.545082 0.891304 +vt 0.538934 0.891304 +vt 0.553279 0.934783 +vt 0.536885 0.695652 +vt 0.553279 0.739130 +vt 0.553279 0.804348 +vt 0.500000 0.695652 +vt 0.717213 0.717391 +vt 0.676230 0.717391 +vt 0.731557 0.717391 +vt 0.719262 0.717391 +vt 0.758197 0.717391 +vt 0.733607 0.717391 +vt 0.774590 0.717391 +vt 0.799180 0.750000 +vt 0.793033 0.755435 +vt 0.793033 0.750000 +vt 0.786885 0.750000 +vt 0.780738 0.755435 +vt 0.780738 0.750000 +vt 0.774590 0.750000 +vt 0.768443 0.755435 +vt 0.768443 0.750000 +vt 0.811475 0.750000 +vt 0.805328 0.755435 +vt 0.805328 0.750000 +vt 0.786885 0.755435 +vt 0.774590 0.755435 +vt 0.762295 0.755435 +vt 0.762295 0.750000 +vt 0.799180 0.755435 +vt 0.598361 0.847826 +vt 0.606557 0.853261 +vt 0.598361 0.853261 +vt 0.647541 0.793478 +vt 0.618852 0.847826 +vt 0.627049 0.858696 +vt 0.618852 0.858696 +vt 0.647541 0.836957 +vt 0.639344 0.847826 +vt 0.598361 0.788043 +vt 0.606557 0.798913 +vt 0.598361 0.798913 +vt 0.598361 0.804348 +vt 0.606557 0.815217 +vt 0.606557 0.804348 +vt 0.598361 0.836957 +vt 0.606557 0.847826 +vt 0.606557 0.836957 +vt 0.598361 0.831522 +vt 0.606557 0.831522 +vt 0.598361 0.820652 +vt 0.606557 0.820652 +vt 0.598361 0.815217 +vt 0.500000 0.956522 +vt 0.602459 0.994565 +vt 0.643443 0.972826 +vt 0.643443 0.994565 +vt 0.643443 0.864130 +vt 0.602459 0.885870 +vt 0.602459 0.864130 +vt 0.602459 0.972826 +vt 0.643443 0.885870 +vt 0.528689 0.967391 +vt 0.586066 0.961957 +vt 0.586066 0.967391 +vt 0.528689 0.961957 +vt 0.586066 0.956522 +vt 0.528689 1.000000 +vt 0.586066 0.994565 +vt 0.586066 1.000000 +vt 0.528689 0.994565 +vt 0.586066 0.989130 +vt 0.528689 0.989130 +vt 0.586066 0.983696 +vt 0.528689 0.983696 +vt 0.586066 0.978261 +vt 0.528689 0.978261 +vt 0.586066 0.972826 +vt 0.528689 0.972826 +vt 0.553279 0.956522 +vt 0.735656 0.793478 +vt 0.741803 0.782609 +vt 0.741803 0.793478 +vt 0.754098 0.793478 +vt 0.760246 0.782609 +vt 0.760246 0.793478 +vt 0.713115 0.793478 +vt 0.725410 0.782609 +vt 0.725410 0.793478 +vt 0.729508 0.793478 +vt 0.735656 0.782609 +vt 0.747951 0.793478 +vt 0.754098 0.782609 +vt 0.770492 0.793478 +vt 0.782787 0.782609 +vt 0.782787 0.793478 +vt 0.766393 0.793478 +vt 0.770492 0.782609 +vt 0.729508 0.782609 +vt 0.747951 0.782609 +vt 0.766393 0.782609 +vt 0.715164 0.798913 +vt 0.709016 0.809783 +vt 0.709016 0.798913 +vt 0.692623 0.798913 +vt 0.684426 0.809783 +vt 0.684426 0.798913 +vt 0.670082 0.798913 +vt 0.663934 0.809783 +vt 0.663934 0.798913 +vt 0.721311 0.798913 +vt 0.715164 0.809783 +vt 0.737705 0.798913 +vt 0.721311 0.809783 +vt 0.700820 0.798913 +vt 0.692623 0.809783 +vt 0.676230 0.798913 +vt 0.670082 0.809783 +vt 0.647541 0.809783 +vt 0.647541 0.798913 +vt 0.700820 0.809783 +vt 0.676230 0.809783 +vt 0.772541 0.478261 +vt 0.795082 0.233696 +vt 0.795082 0.152174 +vt 0.795082 0.402174 +vt 0.713115 0.782609 +vt 0.737705 0.809783 +vt 0.586066 0.956522 +vt 0.459016 0.956522 +vt 0.811475 0.755435 +vt 0.627049 0.847826 +vt 0.647541 0.847826 +vt 0.606557 0.788043 +vt 0.528689 0.956522 +vt 0.713115 0.782609 +vt 0.737705 0.809783 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.9487 0.0000 0.3162 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.9487 0.0000 0.3162 +vn 0.0000 0.6247 0.7809 +vn 0.0000 -0.7682 -0.6402 +vn -0.8660 0.5000 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.4072 -0.9129 0.0287 +vn 0.9363 -0.3291 0.1225 +vn 0.4719 -0.8817 0.0000 +vn -0.3827 -0.9239 0.0000 +vn -0.4072 -0.9129 0.0287 +vn 0.9239 -0.3827 0.0000 +vn 0.9871 0.0000 0.1602 +vn 0.9188 -0.3671 0.1452 +vn -0.9239 -0.3827 0.0000 +vn 0.3827 -0.9239 0.0000 +vn -0.9188 -0.3671 0.1452 +vn -0.9363 -0.3291 0.1225 +vn -0.9871 0.0000 0.1602 +vn -0.4719 -0.8817 0.0000 +vn 0.9571 -0.2898 0.0000 +vn -0.9571 -0.2898 0.0000 +vn 0.0000 0.9923 0.1240 +vn 0.0000 0.9923 -0.1240 +vn 0.0000 0.9981 0.0621 +vn 0.0000 0.9981 -0.0621 +vn 0.0000 0.7555 -0.6552 +vn 0.0000 0.9412 -0.3377 +vn 0.0000 0.9412 0.3377 +vn 0.0000 0.7555 0.6552 +vn 0.0000 0.1138 -0.9935 +vn 0.0000 0.4305 -0.9026 +vn 0.0000 0.1138 0.9935 +vn 0.0000 0.4305 0.9026 +vn 0.0000 0.4965 0.8681 +vn 0.0000 0.8121 0.5835 +vn 0.0000 0.9588 -0.2840 +vn 0.0000 0.4964 -0.8681 +vn 0.0000 0.1380 -0.9904 +vn 0.0000 0.1380 0.9904 +vn 0.0000 0.9588 0.2840 +vn 0.0000 0.8121 -0.5835 +vn -0.4148 -0.2800 -0.8658 +vn 0.3416 -0.3416 -0.8756 +vn 0.4148 -0.2800 -0.8658 +vn -0.2298 0.0000 0.9732 +vn 0.2298 0.0000 0.9732 +vn -0.3416 -0.3416 -0.8756 +vn 0.3711 0.1112 -0.9219 +vn -0.3458 -0.6635 -0.6635 +vn 0.3458 -0.6635 -0.6635 +vn -0.3711 0.1112 -0.9219 +vn 0.3827 0.0000 -0.9239 +vn 0.8727 -0.2257 -0.4330 +vn -0.9239 0.0000 -0.3827 +vn -0.3827 0.0000 -0.9239 +vn 0.9123 0.0530 -0.4062 +vn 0.9607 -0.1962 -0.1962 +vn 0.9626 -0.0605 -0.2642 +vn 0.8507 0.0000 0.5257 +vn -0.9607 -0.1962 -0.1962 +vn -0.9123 0.0530 -0.4062 +vn -0.8727 -0.2257 -0.4330 +vn -0.8507 0.0000 0.5257 +vn -0.9626 -0.0605 -0.2642 +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.9732 -0.2298 +vn 0.0000 0.9732 0.2298 +vn 0.0000 0.8944 0.4472 +vn 0.0000 -0.8944 -0.4472 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +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.0000 -0.9239 -0.3827 +vn 0.0000 -0.3827 -0.9239 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.9239 0.0000 -0.3827 +s off +f 637/1110/198 636/1111/198 635/1112/198 +f 638/1113/199 640/1114/199 636/1111/199 +f 637/1115/200 642/1116/200 638/1117/200 +f 635/1118/201 741/1119/201 639/1120/201 +f 656/1121/202 667/1122/202 655/1123/202 +f 663/1124/202 674/1125/202 662/1126/202 +f 660/1127/202 671/1128/202 659/1129/202 +f 666/1130/202 667/1131/202 678/1132/202 +f 656/1121/202 669/1133/202 668/1134/202 +f 663/1124/202 676/1135/202 675/1136/202 +f 660/1127/202 673/1137/202 672/1138/202 +f 657/1139/202 670/1140/202 669/1141/202 +f 665/1142/202 676/1143/202 664/1144/202 +f 661/1145/202 674/1146/202 673/1147/202 +f 659/1129/202 670/1148/202 658/1149/202 +f 666/1130/202 677/1150/202 665/1142/202 +f 683/1151/202 694/1152/202 682/1153/202 +f 690/1154/202 701/1155/202 689/1156/202 +f 680/1157/202 691/1158/202 679/1159/202 +f 687/1160/202 698/1161/202 686/1162/202 +f 683/1151/202 696/1163/202 695/1164/202 +f 690/1154/202 691/1158/202 702/1165/202 +f 681/1166/202 692/1167/202 680/1157/202 +f 688/1168/202 699/1169/202 687/1160/202 +f 684/1170/202 697/1171/202 696/1163/202 +f 682/1153/202 693/1172/202 681/1166/202 +f 689/1156/202 700/1173/202 688/1168/202 +f 685/1174/202 698/1161/202 697/1175/202 +f 713/1176/202 703/1177/202 707/1178/202 +f 717/1179/198 716/1180/198 715/1181/198 +f 721/1182/203 719/1183/203 720/1184/203 +f 717/1185/200 722/1186/200 718/1187/200 +f 716/1188/202 720/1184/202 715/1189/202 +f 718/1190/199 721/1182/199 716/1180/199 +f 715/1191/204 719/1183/204 717/1192/204 +f 725/1193/203 723/1194/203 724/1195/203 +f 723/1194/200 726/1196/200 734/1197/200 +f 742/1198/199 744/1199/199 740/1200/199 +f 640/1114/205 740/1200/205 636/1111/205 +f 639/1120/203 742/1201/203 640/1114/203 +f 636/1111/198 739/1202/198 635/1112/198 +f 744/1203/202 745/1204/202 743/1205/202 +f 740/1206/198 743/1207/198 739/1202/198 +f 739/1208/204 745/1209/204 741/1119/204 +f 741/1210/203 746/1211/203 742/1201/203 +f 724/1195/203 737/1212/203 725/1193/203 +f 751/1213/202 754/1214/202 750/1215/202 +f 738/1216/203 754/1214/203 737/1212/203 +f 762/1217/199 757/1218/199 758/1219/199 +f 820/1220/204 759/1221/204 822/1222/204 +f 819/1223/204 760/1224/204 756/1225/204 +f 770/1226/199 765/1227/199 766/1228/199 +f 763/1229/204 768/1230/204 764/1231/204 +f 787/1232/204 788/1233/204 790/1234/204 +f 777/1235/199 781/1236/199 785/1237/199 +f 796/1238/204 795/1239/204 793/1240/204 +f 802/1241/199 812/1242/199 806/1243/199 +f 816/1244/204 641/1245/204 637/1246/204 +f 635/1118/204 816/1244/204 637/1246/204 +f 639/1120/204 817/1247/204 635/1118/204 +f 818/1248/200 825/1249/200 817/1250/200 +f 817/1251/203 824/1252/203 816/1253/203 +f 816/1254/202 823/1255/202 815/1256/202 +f 822/1257/200 830/1258/200 820/1259/200 +f 819/1260/202 831/1261/202 821/1262/202 +f 829/1263/204 832/1264/204 831/1261/204 +f 831/1265/203 760/1224/203 821/1266/203 +f 826/1267/203 818/1268/203 639/1120/203 +f 838/1269/198 848/1270/198 835/1271/198 +f 824/1252/204 826/1272/204 823/1255/204 +f 864/1273/199 870/1274/199 866/1275/199 +f 865/1276/204 867/1277/204 863/1278/204 +f 869/1279/204 873/1280/204 867/1277/204 +f 874/1281/199 870/1282/199 868/1283/199 +f 874/1281/199 876/1284/199 872/1285/199 +f 871/1286/204 877/1287/204 873/1280/204 +f 875/1288/204 881/1289/204 877/1287/204 +f 876/1284/199 882/1290/199 880/1291/199 +f 886/1292/200 889/1293/200 885/1294/200 +f 883/1295/202 888/1296/202 884/1297/202 +f 884/1297/199 890/1298/199 886/1292/199 +f 885/1294/204 887/1299/204 883/1300/204 +f 887/1301/206 892/1302/206 888/1296/206 +f 892/1303/207 889/1293/207 890/1298/207 +f 887/1299/204 889/1293/204 891/1304/204 +f 888/1296/199 892/1302/199 890/1298/199 +f 762/1217/203 832/1305/203 761/1306/203 +f 832/1305/203 759/1221/203 761/1306/203 +f 899/1307/203 897/1308/203 898/1309/203 +f 895/1310/200 900/1311/200 896/1312/200 +f 894/1313/202 898/1309/202 893/1314/202 +f 913/1315/203 915/1316/203 909/1317/203 +f 933/1318/204 940/1319/204 934/1320/204 +f 923/1321/203 921/1322/203 922/1323/203 +f 919/1324/200 924/1325/200 920/1326/200 +f 918/1327/202 922/1323/202 917/1328/202 +f 920/1326/199 923/1321/199 918/1327/199 +f 917/1329/204 921/1330/204 919/1324/204 +f 931/1331/203 929/1332/203 930/1333/203 +f 937/1334/203 940/1319/203 939/1335/203 +f 945/1336/203 948/1337/203 947/1338/203 +f 927/1339/200 932/1340/200 928/1341/200 +f 926/1342/202 930/1333/202 925/1343/202 +f 935/1344/202 939/1335/202 933/1318/202 +f 943/1345/202 947/1346/202 941/1347/202 +f 934/1320/200 938/1348/200 936/1349/200 +f 942/1350/200 946/1351/200 944/1352/200 +f 945/1336/199 944/1352/199 946/1351/199 +f 960/1353/200 975/1354/200 957/1355/200 +f 956/1356/200 971/1357/200 960/1353/200 +f 975/1354/200 953/1358/200 957/1355/200 +f 973/1359/202 959/1360/202 958/1361/202 +f 973/1359/202 954/1362/202 961/1363/202 +f 969/1364/202 955/1365/202 959/1360/202 +f 965/1366/202 954/1362/202 949/1367/202 +f 955/1365/202 966/1368/202 950/1369/202 +f 970/1370/202 974/1371/202 949/1367/202 +f 953/1358/200 967/1372/200 951/1373/200 +f 968/1374/200 956/1356/200 952/1375/200 +f 976/1376/200 972/1377/200 952/1375/200 +f 977/1378/204 979/1379/204 985/1380/204 +f 980/1381/199 978/1382/199 987/1383/199 +f 1002/1384/199 998/1385/199 994/1386/199 +f 1001/1387/204 1003/1388/204 995/1389/204 +f 1021/1390/204 1022/1391/204 1024/1392/204 +f 1011/1393/199 1015/1394/199 1019/1395/199 +f 1030/1396/204 1029/1397/204 1027/1398/204 +f 1036/1399/199 1046/1400/199 1040/1401/199 +f 637/1110/198 638/1113/198 636/1111/198 +f 638/1113/199 642/1116/199 640/1114/199 +f 637/1115/200 641/1245/200 642/1116/200 +f 635/1118/201 739/1208/201 741/1119/201 +f 656/1121/202 668/1402/202 667/1122/202 +f 663/1124/202 675/1403/202 674/1125/202 +f 660/1127/202 672/1404/202 671/1128/202 +f 666/1130/202 655/1123/202 667/1131/202 +f 656/1121/202 657/1139/202 669/1133/202 +f 663/1124/202 664/1144/202 676/1135/202 +f 660/1127/202 661/1405/202 673/1137/202 +f 657/1139/202 658/1149/202 670/1140/202 +f 665/1142/202 677/1406/202 676/1143/202 +f 661/1145/202 662/1126/202 674/1146/202 +f 659/1129/202 671/1407/202 670/1148/202 +f 666/1130/202 678/1408/202 677/1150/202 +f 683/1151/202 695/1164/202 694/1152/202 +f 690/1154/202 702/1165/202 701/1155/202 +f 680/1157/202 692/1167/202 691/1158/202 +f 687/1160/202 699/1169/202 698/1161/202 +f 683/1151/202 684/1170/202 696/1163/202 +f 690/1154/202 679/1159/202 691/1158/202 +f 681/1166/202 693/1172/202 692/1167/202 +f 688/1168/202 700/1173/202 699/1169/202 +f 684/1170/202 685/1409/202 697/1171/202 +f 682/1153/202 694/1152/202 693/1172/202 +f 689/1156/202 701/1155/202 700/1173/202 +f 685/1174/202 686/1162/202 698/1161/202 +f 703/1177/202 704/1410/202 707/1178/202 +f 704/1410/202 705/1411/202 707/1178/202 +f 705/1411/202 706/1412/202 707/1178/202 +f 707/1178/202 708/1413/202 711/1414/202 +f 708/1413/202 709/1415/202 711/1414/202 +f 709/1415/202 710/1416/202 711/1414/202 +f 711/1414/202 712/1417/202 713/1176/202 +f 713/1176/202 714/1418/202 703/1177/202 +f 711/1414/202 713/1176/202 707/1178/202 +f 717/1179/198 718/1190/198 716/1180/198 +f 721/1182/203 722/1186/203 719/1183/203 +f 717/1185/200 719/1183/200 722/1186/200 +f 716/1188/202 721/1182/202 720/1184/202 +f 718/1190/199 722/1186/199 721/1182/199 +f 715/1191/204 720/1184/204 719/1183/204 +f 725/1193/203 726/1196/203 723/1194/203 +f 726/1196/200 733/1419/200 734/1197/200 +f 734/1197/200 731/1420/200 723/1194/200 +f 731/1420/200 732/1421/200 723/1194/200 +f 742/1198/199 746/1422/199 744/1199/199 +f 640/1114/205 742/1198/205 740/1200/205 +f 639/1120/203 741/1210/203 742/1201/203 +f 636/1111/198 740/1206/198 739/1202/198 +f 744/1203/202 746/1211/202 745/1204/202 +f 740/1206/198 744/1423/198 743/1207/198 +f 739/1208/204 743/1424/204 745/1209/204 +f 741/1210/203 745/1204/203 746/1211/203 +f 724/1195/203 738/1216/203 737/1212/203 +f 750/1215/202 749/1425/202 751/1213/202 +f 749/1425/202 753/1426/202 751/1213/202 +f 753/1426/202 752/1427/202 751/1213/202 +f 738/1216/203 750/1215/203 754/1214/203 +f 762/1217/199 761/1306/199 757/1218/199 +f 820/1220/204 755/1428/204 759/1221/204 +f 819/1223/204 821/1266/204 760/1224/204 +f 770/1226/199 769/1429/199 765/1227/199 +f 763/1229/204 767/1430/204 768/1230/204 +f 788/1233/204 789/1431/204 790/1234/204 +f 790/1234/204 771/1432/204 772/1433/204 +f 772/1433/204 773/1434/204 790/1234/204 +f 773/1434/204 774/1435/204 775/1436/204 +f 790/1234/204 773/1434/204 786/1437/204 +f 775/1436/204 776/1438/204 773/1434/204 +f 776/1438/204 786/1437/204 773/1434/204 +f 786/1437/204 787/1232/204 790/1234/204 +f 777/1235/199 778/1439/199 779/1440/199 +f 779/1440/199 780/1441/199 777/1235/199 +f 780/1441/199 781/1236/199 777/1235/199 +f 781/1236/199 782/1442/199 785/1237/199 +f 782/1442/199 783/1443/199 785/1237/199 +f 783/1443/199 784/1444/199 785/1237/199 +f 785/1237/199 791/1445/199 792/1446/199 +f 792/1446/199 777/1235/199 785/1237/199 +f 795/1239/204 794/1447/204 793/1240/204 +f 793/1240/204 808/1448/204 807/1449/204 +f 807/1449/204 801/1450/204 793/1240/204 +f 801/1450/204 800/1451/204 799/1452/204 +f 793/1240/204 801/1450/204 797/1453/204 +f 799/1452/204 798/1454/204 801/1450/204 +f 798/1454/204 797/1453/204 801/1450/204 +f 797/1453/204 796/1238/204 793/1240/204 +f 806/1243/199 805/1455/199 804/1456/199 +f 804/1456/199 803/1457/199 806/1243/199 +f 803/1457/199 802/1241/199 806/1243/199 +f 802/1241/199 809/1458/199 812/1242/199 +f 809/1458/199 810/1459/199 812/1242/199 +f 810/1459/199 811/1460/199 812/1242/199 +f 812/1242/199 813/1461/199 814/1462/199 +f 814/1462/199 806/1243/199 812/1242/199 +f 816/1244/204 815/1463/204 641/1245/204 +f 635/1118/204 817/1247/204 816/1244/204 +f 639/1120/204 818/1268/204 817/1247/204 +f 818/1248/200 826/1272/200 825/1249/200 +f 817/1251/203 825/1249/203 824/1252/203 +f 816/1254/202 824/1252/202 823/1255/202 +f 822/1257/200 832/1264/200 830/1258/200 +f 819/1260/202 829/1263/202 831/1261/202 +f 829/1263/204 830/1258/204 832/1264/204 +f 831/1265/203 762/1217/203 760/1224/203 +f 639/1120/203 640/1114/203 826/1267/203 +f 640/1114/203 642/1116/203 823/1464/203 +f 826/1267/203 640/1114/203 823/1464/203 +f 642/1116/203 641/1245/203 823/1464/203 +f 641/1245/203 815/1463/203 823/1464/203 +f 838/1269/198 836/1465/198 848/1270/198 +f 848/1270/198 849/1466/198 835/1271/198 +f 835/1271/198 837/1467/198 838/1269/198 +f 837/1467/198 857/1468/198 855/1469/198 +f 838/1269/198 837/1467/198 855/1469/198 +f 824/1252/204 825/1249/204 826/1272/204 +f 864/1273/199 868/1283/199 870/1274/199 +f 865/1276/204 869/1470/204 867/1277/204 +f 869/1279/204 871/1471/204 873/1280/204 +f 874/1281/199 872/1472/199 870/1282/199 +f 874/1281/199 878/1473/199 876/1284/199 +f 871/1286/204 875/1288/204 877/1287/204 +f 875/1288/204 879/1474/204 881/1289/204 +f 876/1284/199 878/1473/199 882/1290/199 +f 886/1292/200 890/1298/200 889/1293/200 +f 883/1295/202 887/1301/202 888/1296/202 +f 884/1297/199 888/1296/199 890/1298/199 +f 885/1294/204 889/1293/204 887/1299/204 +f 887/1301/206 891/1475/206 892/1302/206 +f 892/1303/207 891/1476/207 889/1293/207 +f 762/1217/203 831/1265/203 832/1305/203 +f 832/1305/203 822/1222/203 759/1221/203 +f 899/1307/203 900/1311/203 897/1308/203 +f 895/1310/200 897/1308/200 900/1311/200 +f 894/1313/202 899/1307/202 898/1309/202 +f 909/1317/203 910/1477/203 911/1478/203 +f 911/1478/203 912/1479/203 913/1315/203 +f 913/1315/203 914/1480/203 915/1316/203 +f 915/1316/203 916/1481/203 909/1317/203 +f 909/1317/203 911/1478/203 913/1315/203 +f 933/1318/204 939/1335/204 940/1319/204 +f 923/1321/203 924/1482/203 921/1322/203 +f 919/1324/200 921/1330/200 924/1325/200 +f 918/1327/202 923/1321/202 922/1323/202 +f 920/1326/199 924/1325/199 923/1321/199 +f 917/1329/204 922/1483/204 921/1330/204 +f 931/1331/203 932/1340/203 929/1332/203 +f 937/1334/203 938/1484/203 940/1319/203 +f 945/1336/203 946/1351/203 948/1337/203 +f 927/1339/200 929/1332/200 932/1340/200 +f 926/1342/202 931/1331/202 930/1333/202 +f 935/1344/202 937/1485/202 939/1335/202 +f 943/1345/202 945/1336/202 947/1346/202 +f 934/1320/200 940/1319/200 938/1348/200 +f 942/1350/200 948/1486/200 946/1351/200 +f 945/1336/199 943/1345/199 944/1352/199 +f 960/1353/200 971/1357/200 975/1354/200 +f 956/1356/200 964/1487/200 971/1357/200 +f 975/1354/200 963/1488/200 953/1358/200 +f 973/1359/202 969/1364/202 959/1360/202 +f 973/1359/202 958/1361/202 954/1362/202 +f 969/1364/202 962/1489/202 955/1365/202 +f 965/1366/202 961/1363/202 954/1362/202 +f 955/1365/202 962/1489/202 966/1368/202 +f 974/1371/202 965/1366/202 949/1367/202 +f 949/1367/202 950/1369/202 970/1370/202 +f 950/1369/202 966/1368/202 970/1370/202 +f 953/1358/200 963/1488/200 967/1372/200 +f 968/1374/200 964/1487/200 956/1356/200 +f 972/1377/200 968/1374/200 952/1375/200 +f 952/1375/200 951/1373/200 976/1376/200 +f 951/1373/200 967/1372/200 976/1376/200 +f 979/1379/204 981/1490/204 985/1380/204 +f 985/1380/204 986/1491/204 977/1378/204 +f 986/1491/204 982/1492/204 977/1378/204 +f 978/1382/199 983/1493/199 987/1383/199 +f 987/1383/199 988/1494/199 980/1381/199 +f 988/1494/199 984/1495/199 980/1381/199 +f 994/1386/199 992/1496/199 990/1497/199 +f 990/1497/199 1004/1498/199 1002/1384/199 +f 1002/1384/199 1000/1499/199 998/1385/199 +f 998/1385/199 996/1500/199 994/1386/199 +f 994/1386/199 990/1497/199 1002/1384/199 +f 1003/1388/204 989/1501/204 991/1502/204 +f 991/1502/204 993/1503/204 1003/1388/204 +f 993/1503/204 995/1389/204 1003/1388/204 +f 995/1389/204 997/1504/204 999/1505/204 +f 999/1505/204 1001/1387/204 995/1389/204 +f 1022/1391/204 1023/1506/204 1024/1392/204 +f 1024/1392/204 1005/1507/204 1006/1508/204 +f 1006/1508/204 1007/1509/204 1024/1392/204 +f 1007/1509/204 1008/1510/204 1009/1511/204 +f 1024/1392/204 1007/1509/204 1020/1512/204 +f 1009/1511/204 1010/1513/204 1007/1509/204 +f 1010/1513/204 1020/1512/204 1007/1509/204 +f 1020/1512/204 1021/1390/204 1024/1392/204 +f 1011/1393/199 1012/1514/199 1013/1515/199 +f 1013/1515/199 1014/1516/199 1011/1393/199 +f 1014/1516/199 1015/1394/199 1011/1393/199 +f 1015/1394/199 1016/1517/199 1019/1395/199 +f 1016/1517/199 1017/1518/199 1019/1395/199 +f 1017/1518/199 1018/1519/199 1019/1395/199 +f 1019/1395/199 1025/1520/199 1026/1521/199 +f 1026/1521/199 1011/1393/199 1019/1395/199 +f 1029/1397/204 1028/1522/204 1027/1398/204 +f 1027/1398/204 1042/1523/204 1041/1524/204 +f 1041/1524/204 1035/1525/204 1027/1398/204 +f 1035/1525/204 1034/1526/204 1033/1527/204 +f 1027/1398/204 1035/1525/204 1031/1528/204 +f 1033/1527/204 1032/1529/204 1035/1525/204 +f 1032/1529/204 1031/1528/204 1035/1525/204 +f 1031/1528/204 1030/1396/204 1027/1398/204 +f 1040/1401/199 1039/1530/199 1038/1531/199 +f 1038/1531/199 1037/1532/199 1040/1401/199 +f 1037/1532/199 1036/1399/199 1040/1401/199 +f 1036/1399/199 1043/1533/199 1046/1400/199 +f 1043/1533/199 1044/1534/199 1046/1400/199 +f 1044/1534/199 1045/1535/199 1046/1400/199 +f 1046/1400/199 1047/1536/199 1048/1537/199 +f 1048/1537/199 1040/1401/199 1046/1400/199 +s 1 +f 646/1538/204 657/1139/208 645/1539/208 +f 653/1540/209 664/1144/199 652/1541/199 +f 650/1542/210 661/1145/198 649/1543/198 +f 647/1544/211 658/1149/204 646/1538/204 +f 654/1545/212 665/1142/209 653/1540/209 +f 644/1546/213 655/1123/203 643/1547/203 +f 651/1548/214 662/1126/210 650/1542/210 +f 648/1549/215 659/1129/211 647/1544/211 +f 643/1547/203 666/1130/212 654/1545/212 +f 645/1539/208 656/1121/213 644/1546/213 +f 652/1541/199 663/1124/214 651/1548/214 +f 649/1550/198 660/1127/215 648/1549/215 +f 678/1551/212 689/1156/209 677/1552/209 +f 668/1553/213 679/1159/203 667/1554/203 +f 675/1555/214 686/1162/210 674/1556/210 +f 672/1557/215 683/1151/211 671/1558/211 +f 667/1554/203 690/1154/212 678/1551/212 +f 669/1559/208 680/1157/213 668/1553/213 +f 676/1560/199 687/1160/214 675/1555/214 +f 673/1561/198 684/1170/215 672/1557/215 +f 670/1562/204 681/1166/208 669/1559/208 +f 677/1552/209 688/1168/199 676/1560/199 +f 674/1556/210 685/1174/198 673/1563/198 +f 671/1558/211 682/1153/204 670/1562/204 +f 695/1164/209 706/1564/199 694/1152/199 +f 702/1165/215 713/1565/211 701/1155/211 +f 692/1167/210 703/1566/198 691/1158/198 +f 699/1169/208 710/1567/213 698/1161/213 +f 696/1163/212 707/1568/209 695/1164/209 +f 691/1158/198 714/1569/215 702/1165/215 +f 693/1172/214 704/1570/210 692/1167/210 +f 700/1173/204 711/1571/208 699/1169/208 +f 697/1171/203 708/1572/212 696/1163/212 +f 694/1152/199 705/1573/214 693/1172/214 +f 701/1155/211 712/1574/204 700/1173/204 +f 698/1161/213 709/1575/203 697/1175/203 +f 729/1576/216 747/1577/217 748/1578/218 +f 731/1579/219 729/1576/216 728/1580/220 +f 733/1581/221 725/1193/222 730/1582/223 +f 728/1580/220 732/1583/224 731/1579/219 +f 734/1584/225 730/1582/223 729/1576/216 +f 727/1585/226 723/1586/204 732/1583/224 +f 747/1577/217 752/1587/218 748/1578/218 +f 728/1580/220 735/1588/227 727/1585/226 +f 727/1585/226 738/1589/228 724/1590/228 +f 725/1193/222 747/1591/217 730/1582/223 +f 729/1576/216 736/1592/229 728/1580/220 +f 737/1593/222 751/1594/230 747/1591/217 +f 736/1592/229 749/1595/231 735/1588/227 +f 735/1596/227 750/1597/204 738/1589/228 +f 748/1578/218 753/1598/229 736/1592/229 +f 757/1599/232 759/1221/232 755/1600/232 +f 756/1601/233 762/1217/233 758/1602/233 +f 765/1603/232 767/1430/234 763/1604/232 +f 764/1605/233 770/1226/235 766/1606/233 +f 767/1430/234 770/1226/235 768/1230/235 +f 779/1607/236 787/1608/237 780/1609/237 +f 782/1610/238 775/1611/239 783/1612/239 +f 792/1613/200 790/1614/240 777/1615/240 +f 778/1616/241 788/1617/236 779/1607/236 +f 781/1618/203 776/1619/238 782/1610/238 +f 785/1620/242 772/1621/202 791/1622/202 +f 784/1623/243 773/1624/242 785/1620/242 +f 777/1615/240 789/1625/241 778/1616/241 +f 780/1609/237 786/1626/203 781/1618/203 +f 783/1612/239 774/1627/243 784/1623/243 +f 800/1628/244 810/1629/245 799/1630/245 +f 797/1631/203 803/1632/246 796/1633/246 +f 794/1634/247 806/1635/248 793/1636/248 +f 801/1637/249 811/1638/244 800/1628/244 +f 807/1639/202 812/1640/249 801/1637/249 +f 798/1641/250 802/1642/203 797/1631/203 +f 795/1643/251 805/1644/247 794/1634/247 +f 793/1636/248 814/1645/200 808/1646/200 +f 799/1630/245 809/1647/250 798/1641/250 +f 796/1633/246 804/1648/251 795/1643/251 +f 841/1649/252 844/1650/253 842/1651/254 +f 828/1652/255 835/1653/256 827/1654/256 +f 833/1655/257 840/1656/258 834/1657/253 +f 838/1658/259 834/1657/253 836/1659/260 +f 839/1660/261 842/1651/254 840/1656/258 +f 843/1661/257 846/1662/262 844/1650/253 +f 840/1663/258 847/1664/263 834/1665/253 +f 843/1666/257 862/1667/264 845/1668/265 +f 851/1669/266 848/1270/267 847/1664/263 +f 842/1670/254 853/1671/263 852/1672/268 +f 846/1662/262 853/1671/263 844/1650/253 +f 835/1653/256 850/1673/269 827/1654/256 +f 842/1670/254 851/1669/266 840/1663/258 +f 836/1674/260 847/1664/263 848/1270/267 +f 855/1675/270 859/1676/271 856/1677/272 +f 828/1652/255 857/1678/273 837/1679/255 +f 841/1680/252 859/1676/271 860/1681/274 +f 841/1680/252 861/1682/272 843/1666/257 +f 838/1683/259 856/1677/272 833/1684/257 +f 833/1684/257 859/1676/271 839/1685/261 +f 849/1466/269 851/1669/266 852/1672/268 +f 859/1676/271 857/1686/273 860/1681/274 +f 866/1275/200 869/1687/275 865/1688/200 +f 863/1278/202 868/1283/276 864/1273/202 +f 870/1282/275 871/1689/277 869/1690/275 +f 867/1277/276 874/1281/278 868/1283/276 +f 873/1280/278 878/1473/279 874/1281/278 +f 872/1285/277 875/1691/280 871/1692/277 +f 876/1284/280 879/1693/281 875/1691/280 +f 877/1287/279 882/1290/282 878/1473/279 +f 901/1694/200 916/1695/283 908/1696/283 +f 907/1697/199 914/1698/284 906/1699/284 +f 905/1700/202 912/1701/285 904/1702/285 +f 903/1703/204 910/1704/286 902/1705/286 +f 908/1696/283 915/1706/199 907/1697/199 +f 906/1699/284 913/1707/202 905/1700/202 +f 904/1702/285 911/1708/204 903/1709/204 +f 902/1705/286 909/1710/200 901/1694/200 +f 961/1711/221 975/1712/225 973/1713/225 +f 952/1375/199 955/1365/287 950/1369/199 +f 949/1714/204 953/1358/288 951/1373/204 +f 959/1715/289 957/1716/290 958/1717/290 +f 956/1356/287 959/1715/289 955/1365/287 +f 954/1718/288 957/1719/290 953/1358/288 +f 973/1720/225 971/1721/219 969/1722/219 +f 971/1721/219 962/1723/224 969/1722/219 +f 968/1724/288 962/1723/224 964/1725/224 +f 965/1726/287 963/1727/221 961/1711/221 +f 967/1728/287 974/1729/289 976/1730/289 +f 976/1730/289 970/1731/290 972/1732/290 +f 972/1732/290 966/1733/288 968/1724/288 +f 852/1672/268 850/1673/269 849/1466/269 +f 860/1681/274 857/1686/273 858/1734/273 +f 980/1735/203 981/1736/277 979/1737/203 +f 977/1738/198 983/1739/291 978/1740/198 +f 985/1380/275 987/1383/292 986/1491/292 +f 984/1741/277 985/1380/275 981/1736/277 +f 982/1742/291 987/1383/292 983/1739/291 +f 990/1743/200 991/1744/293 989/1745/200 +f 992/1746/293 993/1747/198 991/1744/293 +f 994/1748/198 995/1749/294 993/1750/198 +f 996/1751/294 997/1752/202 995/1749/294 +f 998/1753/202 999/1754/295 997/1752/202 +f 1000/1755/295 1001/1756/203 999/1754/295 +f 1002/1757/203 1003/1758/296 1001/1756/203 +f 1004/1759/296 989/1745/200 1003/1758/296 +f 850/1673/269 852/1672/268 854/1760/297 +f 854/1760/297 852/1672/268 853/1671/263 +f 862/1667/264 861/1682/272 860/1681/274 +f 858/1734/273 862/1667/264 860/1681/274 +f 1013/1761/236 1021/1762/237 1014/1763/237 +f 1016/1764/238 1009/1765/239 1017/1766/239 +f 1026/1767/200 1024/1768/240 1011/1769/240 +f 1012/1770/241 1022/1771/236 1013/1761/236 +f 1015/1772/203 1010/1773/238 1016/1764/238 +f 1019/1774/242 1006/1775/202 1025/1776/202 +f 1018/1777/243 1007/1778/242 1019/1774/242 +f 1011/1769/240 1023/1779/241 1012/1770/241 +f 1014/1763/237 1020/1780/203 1015/1772/203 +f 1017/1766/239 1008/1781/243 1018/1777/243 +f 1034/1782/244 1044/1783/245 1033/1784/245 +f 1031/1785/203 1037/1786/246 1030/1787/246 +f 1028/1788/247 1040/1789/248 1027/1790/248 +f 1035/1791/249 1045/1792/244 1034/1782/244 +f 1041/1793/202 1046/1794/249 1035/1791/249 +f 1032/1795/250 1036/1796/203 1031/1785/203 +f 1029/1797/251 1039/1798/247 1028/1788/247 +f 1027/1790/248 1048/1799/200 1042/1800/200 +f 1033/1784/245 1043/1801/250 1032/1795/250 +f 1030/1787/246 1038/1802/251 1029/1797/251 +f 646/1538/204 658/1149/204 657/1139/208 +f 653/1540/209 665/1142/209 664/1144/199 +f 650/1542/210 662/1126/210 661/1145/198 +f 647/1544/211 659/1129/211 658/1149/204 +f 654/1545/212 666/1130/212 665/1142/209 +f 644/1546/213 656/1121/213 655/1123/203 +f 651/1548/214 663/1124/214 662/1126/210 +f 648/1549/215 660/1127/215 659/1129/211 +f 643/1547/203 655/1123/203 666/1130/212 +f 645/1539/208 657/1139/208 656/1121/213 +f 652/1541/199 664/1144/199 663/1124/214 +f 649/1550/198 661/1405/198 660/1127/215 +f 678/1551/212 690/1154/212 689/1156/209 +f 668/1553/213 680/1157/213 679/1159/203 +f 675/1555/214 687/1160/214 686/1162/210 +f 672/1557/215 684/1170/215 683/1151/211 +f 667/1554/203 679/1159/203 690/1154/212 +f 669/1559/208 681/1166/208 680/1157/213 +f 676/1560/199 688/1168/199 687/1160/214 +f 673/1561/198 685/1409/198 684/1170/215 +f 670/1562/204 682/1153/204 681/1166/208 +f 677/1552/209 689/1156/209 688/1168/199 +f 674/1556/210 686/1162/210 685/1174/198 +f 671/1558/211 683/1151/211 682/1153/204 +f 695/1164/209 707/1568/209 706/1564/199 +f 702/1165/215 714/1569/215 713/1565/211 +f 692/1167/210 704/1570/210 703/1566/198 +f 699/1169/208 711/1571/208 710/1567/213 +f 696/1163/212 708/1572/212 707/1568/209 +f 691/1158/198 703/1566/198 714/1569/215 +f 693/1172/214 705/1573/214 704/1570/210 +f 700/1173/204 712/1574/204 711/1571/208 +f 697/1171/203 709/1803/203 708/1572/212 +f 694/1152/199 706/1564/199 705/1573/214 +f 701/1155/211 713/1565/211 712/1574/204 +f 698/1161/213 710/1567/213 709/1575/203 +f 729/1576/216 730/1582/223 747/1577/217 +f 731/1579/219 734/1584/225 729/1576/216 +f 733/1581/221 726/1196/199 725/1193/222 +f 728/1580/220 727/1585/226 732/1583/224 +f 734/1584/225 733/1581/221 730/1582/223 +f 727/1585/226 724/1590/228 723/1586/204 +f 747/1577/217 751/1804/230 752/1587/218 +f 728/1580/220 736/1592/229 735/1588/227 +f 727/1585/226 735/1596/227 738/1589/228 +f 725/1193/222 737/1593/222 747/1591/217 +f 729/1576/216 748/1578/218 736/1592/229 +f 737/1593/222 754/1805/199 751/1594/230 +f 736/1592/229 753/1598/229 749/1595/231 +f 735/1596/227 749/1806/231 750/1597/204 +f 748/1578/218 752/1587/218 753/1598/229 +f 757/1599/232 761/1306/232 759/1221/232 +f 756/1601/233 760/1224/233 762/1217/233 +f 765/1603/232 769/1429/234 767/1430/234 +f 764/1605/233 768/1230/235 770/1226/235 +f 767/1430/234 769/1429/234 770/1226/235 +f 779/1607/236 788/1617/236 787/1608/237 +f 782/1610/238 776/1619/238 775/1611/239 +f 792/1613/200 771/1807/200 790/1614/240 +f 778/1616/241 789/1625/241 788/1617/236 +f 781/1618/203 786/1626/203 776/1619/238 +f 785/1620/242 773/1624/242 772/1621/202 +f 784/1623/243 774/1627/243 773/1624/242 +f 777/1615/240 790/1614/240 789/1625/241 +f 780/1609/237 787/1608/237 786/1626/203 +f 783/1612/239 775/1611/239 774/1627/243 +f 800/1628/244 811/1638/244 810/1629/245 +f 797/1631/203 802/1642/203 803/1632/246 +f 794/1634/247 805/1644/247 806/1635/248 +f 801/1637/249 812/1640/249 811/1638/244 +f 807/1639/202 813/1808/202 812/1640/249 +f 798/1641/250 809/1647/250 802/1642/203 +f 795/1643/251 804/1648/251 805/1644/247 +f 793/1636/248 806/1635/248 814/1645/200 +f 799/1630/245 810/1629/245 809/1647/250 +f 796/1633/246 803/1632/246 804/1648/251 +f 841/1649/252 843/1661/257 844/1650/253 +f 828/1652/255 837/1679/255 835/1653/256 +f 833/1655/257 839/1660/261 840/1656/258 +f 838/1658/259 833/1655/257 834/1657/253 +f 839/1660/261 841/1649/252 842/1651/254 +f 843/1661/257 845/1809/265 846/1662/262 +f 840/1663/258 851/1669/266 847/1664/263 +f 843/1666/257 861/1682/272 862/1667/264 +f 851/1669/266 849/1466/269 848/1270/267 +f 842/1670/254 844/1650/253 853/1671/263 +f 846/1662/262 854/1760/297 853/1671/263 +f 835/1653/256 849/1466/269 850/1673/269 +f 842/1670/254 852/1672/268 851/1669/266 +f 836/1674/260 834/1665/253 847/1664/263 +f 855/1675/270 857/1686/273 859/1676/271 +f 828/1652/255 858/1810/273 857/1678/273 +f 841/1680/252 839/1685/261 859/1676/271 +f 841/1680/252 860/1681/274 861/1682/272 +f 838/1683/259 855/1675/270 856/1677/272 +f 833/1684/257 856/1677/272 859/1676/271 +f 866/1275/200 870/1274/275 869/1687/275 +f 863/1278/202 867/1277/276 868/1283/276 +f 870/1282/275 872/1472/277 871/1689/277 +f 867/1277/276 873/1280/278 874/1281/278 +f 873/1280/278 877/1287/279 878/1473/279 +f 872/1285/277 876/1284/280 875/1691/280 +f 876/1284/280 880/1291/281 879/1693/281 +f 877/1287/279 881/1289/282 882/1290/282 +f 901/1694/200 909/1710/200 916/1695/283 +f 907/1697/199 915/1706/199 914/1698/284 +f 905/1700/202 913/1707/202 912/1701/285 +f 903/1703/204 911/1811/204 910/1704/286 +f 908/1696/283 916/1695/283 915/1706/199 +f 906/1699/284 914/1698/284 913/1707/202 +f 904/1702/285 912/1701/285 911/1708/204 +f 902/1705/286 910/1704/286 909/1710/200 +f 961/1711/221 963/1727/221 975/1712/225 +f 952/1375/199 956/1356/287 955/1365/287 +f 949/1714/204 954/1718/288 953/1358/288 +f 959/1715/289 960/1812/289 957/1716/290 +f 956/1356/287 960/1812/289 959/1715/289 +f 954/1718/288 958/1813/290 957/1719/290 +f 973/1720/225 975/1814/225 971/1721/219 +f 971/1721/219 964/1725/224 962/1723/224 +f 968/1724/288 966/1733/288 962/1723/224 +f 965/1726/287 967/1728/287 963/1727/221 +f 967/1728/287 965/1726/287 974/1729/289 +f 976/1730/289 974/1729/289 970/1731/290 +f 972/1732/290 970/1731/290 966/1733/288 +f 980/1735/203 984/1741/277 981/1736/277 +f 977/1738/198 982/1742/291 983/1739/291 +f 985/1380/275 988/1494/275 987/1383/292 +f 984/1741/277 988/1494/275 985/1380/275 +f 982/1742/291 986/1491/292 987/1383/292 +f 990/1743/200 992/1746/293 991/1744/293 +f 992/1746/293 994/1815/198 993/1747/198 +f 994/1748/198 996/1751/294 995/1749/294 +f 996/1751/294 998/1753/202 997/1752/202 +f 998/1753/202 1000/1755/295 999/1754/295 +f 1000/1755/295 1002/1757/203 1001/1756/203 +f 1002/1757/203 1004/1759/296 1003/1758/296 +f 1004/1759/296 990/1743/200 989/1745/200 +f 1013/1761/236 1022/1771/236 1021/1762/237 +f 1016/1764/238 1010/1773/238 1009/1765/239 +f 1026/1767/200 1005/1816/200 1024/1768/240 +f 1012/1770/241 1023/1779/241 1022/1771/236 +f 1015/1772/203 1020/1780/203 1010/1773/238 +f 1019/1774/242 1007/1778/242 1006/1775/202 +f 1018/1777/243 1008/1781/243 1007/1778/242 +f 1011/1769/240 1024/1768/240 1023/1779/241 +f 1014/1763/237 1021/1762/237 1020/1780/203 +f 1017/1766/239 1009/1765/239 1008/1781/243 +f 1034/1782/244 1045/1792/244 1044/1783/245 +f 1031/1785/203 1036/1796/203 1037/1786/246 +f 1028/1788/247 1039/1798/247 1040/1789/248 +f 1035/1791/249 1046/1794/249 1045/1792/244 +f 1041/1793/202 1047/1817/202 1046/1794/249 +f 1032/1795/250 1043/1801/250 1036/1796/203 +f 1029/1797/251 1038/1802/251 1039/1798/247 +f 1027/1790/248 1040/1789/248 1048/1799/200 +f 1033/1784/245 1044/1783/245 1043/1801/250 +f 1030/1787/246 1037/1786/246 1038/1802/251 diff --git a/src/main/resources/assets/hbm/my_hecking_realism.png b/src/main/resources/assets/hbm/my_hecking_realism.png new file mode 100644 index 000000000..dab8b86bc Binary files /dev/null and b/src/main/resources/assets/hbm/my_hecking_realism.png differ diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index b9fe59269..7bb46ab65 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -1,5 +1,4 @@ { - "misc.nullTau": {"category": "player", "sounds": [{"name": "misc/null", "stream": false}]}, "misc.nullChopper": {"category": "player", "sounds": [{"name": "misc/null", "stream": false}]}, "misc.nullCrashing": {"category": "player", "sounds": [{"name": "misc/null", "stream": false}]}, "misc.nullMine": {"category": "player", "sounds": [{"name": "misc/null", "stream": false}]}, @@ -65,6 +64,7 @@ "block.fel": {"category": "block", "sounds": [{"name": "block/fel", "stream": false}]}, "block.hephaestusRunning": {"category": "block", "sounds": [{"name": "block/hephaestusRunning", "stream": false}]}, "block.squeakyToy": {"category": "block", "sounds": [{"name": "block/squeakyToy", "stream": false}]}, + "block.pyroOperate": {"category": "block", "sounds": [{"name": "block/pyroOperate", "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}]}, @@ -208,11 +208,15 @@ "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.glOpen": {"category": "player", "sounds": [{"name": "weapon/glOpen", "stream": false}]}, + "weapon.glClose": {"category": "player", "sounds": [{"name": "weapon/glClose", "stream": false}]}, "weapon.44Shoot": {"category": "player", "sounds": [{"name": "weapon/44Shoot", "stream": false}]}, "weapon.trainImpact": {"category": "player", "sounds": [{"name": "weapon/trainImpact", "stream": false}]}, "weapon.nuclearExplosion": {"category": "player", "sounds": [{"name": "weapon/nuclearExplosion", "stream": true}]}, "weapon.explosionLargeNear": {"category": "player", "sounds": [{"name": "weapon/explosionLargeNear", "stream": false}]}, "weapon.explosionLargeFar": {"category": "player", "sounds": [{"name": "weapon/explosionLargeFar", "stream": false}]}, + "weapon.explosionSmallNear": {"category": "player", "sounds": ["weapon/explosionSmallNear1", "weapon/explosionSmallNear2", "weapon/explosionSmallNear3"]}, + "weapon.explosionSmallFar": {"category": "player", "sounds": ["weapon/explosionSmallFar1", "weapon/explosionSmallFar2"]}, "weapon.dFlash": {"category": "player", "sounds": [{"name": "weapon/dFlash", "stream": false}]}, @@ -220,6 +224,63 @@ "weapon.switchmode1": {"category": "player", "sounds": [{"name": "weapon/switchmode1", "stream": false}]}, "weapon.switchmode2": {"category": "player", "sounds": [{"name": "weapon/switchmode2", "stream": false}]}, + "weapon.fire.blackPowder": {"category": "player", "sounds": ["weapon/fire/blackPowder"]}, + "weapon.fire.flameLoop": {"category": "player", "sounds": ["weapon/fire/flameLoop"]}, + "weapon.fire.lockon": {"category": "player", "sounds": ["weapon/fire/lockon"]}, + "weapon.fire.shredderCycle": {"category": "player", "sounds": ["weapon/fire/shredderCycle"]}, + "weapon.fire.tau": {"category": "player", "sounds": ["weapon/fire/tau"]}, + "weapon.fire.tauLoop": {"category": "player", "sounds": ["weapon/fire/tauLoop"]}, + "weapon.fire.tauRelease": {"category": "player", "sounds": ["weapon/fire/tauRelease1", "weapon/fire/tauRelease2", "weapon/fire/tauRelease3"]}, + "weapon.fire.fatman": {"category": "player", "sounds": ["weapon/fire/fatman"]}, + "weapon.fire.smack": {"category": "player", "sounds": ["weapon/fire/smack"]}, + "weapon.fire.vstar": {"category": "player", "sounds": ["weapon/fire/vstar"]}, + "weapon.fire.loudestNoiseOnEarth": {"category": "player", "sounds": ["weapon/fire/loudestNoiseOnEarth"]}, + "weapon.fire.disintegration": {"category": "player", "sounds": ["weapon/fire/disintegration"]}, + "weapon.fire.laser": {"category": "player", "sounds": ["weapon/fire/laser"]}, + "weapon.fire.laserGatling": {"category": "player", "sounds": ["weapon/fire/laserGatling"]}, + "weapon.fire.silenced": {"category": "player", "sounds": ["weapon/fire/silenced"]}, + "weapon.fire.assault": {"category": "player", "sounds": ["weapon/fire/assault"]}, + "weapon.fire.pistol": {"category": "player", "sounds": ["weapon/fire/pistol"]}, + "weapon.fire.rifle": {"category": "player", "sounds": ["weapon/fire/rifle"]}, + "weapon.fire.rifleHeavy": {"category": "player", "sounds": ["weapon/fire/rifleHeavy"]}, + "weapon.fire.shotgun": {"category": "player", "sounds": ["weapon/fire/shotgun"]}, + "weapon.fire.shotgunAlt": {"category": "player", "sounds": ["weapon/fire/shotgunAlt"]}, + "weapon.fire.shotgunAuto": {"category": "player", "sounds": ["weapon/fire/shotgunAuto"]}, + "weapon.fire.greaseGun": {"category": "player", "sounds": ["weapon/fire/greaseGun"]}, + "weapon.fire.uzi": {"category": "player", "sounds": ["weapon/fire/uzi"]}, + "weapon.fire.tesla": {"category": "player", "sounds": ["weapon/fire/tesla"]}, + + "weapon.reload.boltClose": {"category": "player", "sounds": ["weapon/reload/boltClose"]}, + "weapon.reload.boltOpen": {"category": "player", "sounds": ["weapon/reload/boltOpen"]}, + "weapon.reload.closeClick": {"category": "player", "sounds": ["weapon/reload/closeClick"]}, + "weapon.reload.dryFireClick": {"category": "player", "sounds": ["weapon/reload/dryFireClick"]}, + "weapon.reload.insertCanister": {"category": "player", "sounds": ["weapon/reload/insertCanister"]}, + "weapon.reload.insertGrenade": {"category": "player", "sounds": ["weapon/reload/insertGrenade"]}, + "weapon.reload.insertLarge": {"category": "player", "sounds": ["weapon/reload/insertLarge"]}, + "weapon.reload.insertRocket": {"category": "player", "sounds": ["weapon/reload/insertRocket"]}, + "weapon.reload.leverCock": {"category": "player", "sounds": ["weapon/reload/leverCock"]}, + "weapon.reload.magInsert": {"category": "player", "sounds": ["weapon/reload/magInsert"]}, + "weapon.reload.magRemove": {"category": "player", "sounds": ["weapon/reload/magRemove"]}, + "weapon.reload.magSmallInsert": {"category": "player", "sounds": ["weapon/reload/magSmallInsert"]}, + "weapon.reload.magSmallRemove": {"category": "player", "sounds": ["weapon/reload/magSmallRemove"]}, + "weapon.reload.openLatch": {"category": "player", "sounds": ["weapon/reload/openLatch"]}, + "weapon.reload.pistolCock": {"category": "player", "sounds": ["weapon/reload/pistolCock"]}, + "weapon.reload.pressureValve": {"category": "player", "sounds": ["weapon/reload/pressureValve"]}, + "weapon.reload.revolverClose": {"category": "player", "sounds": ["weapon/reload/revolverClose"]}, + "weapon.reload.revolverCock": {"category": "player", "sounds": ["weapon/reload/revolverCock"]}, + "weapon.reload.revolverSpin": {"category": "player", "sounds": ["weapon/reload/revolverSpin"]}, + "weapon.reload.rifleCock": {"category": "player", "sounds": ["weapon/reload/rifleCock"]}, + "weapon.reload.shotgunCock": {"category": "player", "sounds": ["weapon/reload/shotgunCock"]}, + "weapon.reload.shotgunCockOpen": {"category": "player", "sounds": ["weapon/reload/shotgunCockOpen"]}, + "weapon.reload.shotgunCockClose": {"category": "player", "sounds": ["weapon/reload/shotgunCockClose"]}, + "weapon.reload.shotgunReload": {"category": "player", "sounds": ["weapon/reload/shotgunReload1", "weapon/reload/shotgunReload2", "weapon/reload/shotgunReload3"]}, + "weapon.reload.tubeFwoomp": {"category": "player", "sounds": ["weapon/reload/tubeFwoomp"]}, + "weapon.reload.impact": {"category": "player", "sounds": ["weapon/reload/impact1", "weapon/reload/impact2", "weapon/reload/impact3"]}, + "weapon.reload.fatmanFull": {"category": "player", "sounds": ["weapon/reload/fatmanFull"]}, + "weapon.reload.screw": {"category": "player", "sounds": ["weapon/reload/screw"]}, + + "weapon.foley.gunWhack": {"category": "player", "sounds": ["weapon/foley/gunWhack", "weapon/foley/gunWhack2"]}, + "turret.chekhov_fire": {"category": "block", "sounds": [{"name": "turret/chekhov_fire", "stream": false}]}, "turret.jeremy_fire": {"category": "block", "sounds": ["turret/jeremy_fire1", "turret/jeremy_fire2", "turret/jeremy_fire3", "turret/jeremy_fire4", "turret/jeremy_fire5"]}, "turret.jeremy_reload": {"category": "block", "sounds": [{"name": "turret/jeremy_reload", "stream": false}]}, @@ -269,10 +330,6 @@ "potatos.random": {"category": "player", "sounds": ["potatos/randResponse0", "potatos/randResponse1", "potatos/randResponse2", "potatos/randResponse3", "potatos/randResponse4", "potatos/randResponse5", "potatos/randResponse6", "potatos/randResponse7"]}, - "fm.clap": {"category": "block", "sounds": [{"name": "clap", "stream": false}]}, - "fm.mug": {"category": "block", "sounds": [{"name": "mug", "stream": false}]}, - "fm.sample": {"category": "block", "sounds": [{"name": "sample", "stream": false}]}, - "alarm.amsSiren": {"category": "record", "sounds": [{"name": "alarm/amsSiren", "stream": false}]}, "alarm.apcLoop": {"category": "record", "sounds": [{"name": "alarm/apcLoop", "stream": false}]}, "alarm.apcPass": {"category": "record", "sounds": [{"name": "alarm/apcPass", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/sounds/block/pyroOperate.ogg b/src/main/resources/assets/hbm/sounds/block/pyroOperate.ogg new file mode 100644 index 000000000..a86ebd29c Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/pyroOperate.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/warnAPUFire.ogg b/src/main/resources/assets/hbm/sounds/block/warnAPUFire.ogg new file mode 100644 index 000000000..5035c2109 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/warnAPUFire.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/explosionSmallFar1.ogg b/src/main/resources/assets/hbm/sounds/weapon/explosionSmallFar1.ogg new file mode 100644 index 000000000..df1680b49 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/explosionSmallFar1.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/explosionSmallFar2.ogg b/src/main/resources/assets/hbm/sounds/weapon/explosionSmallFar2.ogg new file mode 100644 index 000000000..3b9fac6ad Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/explosionSmallFar2.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/explosionSmallNear1.ogg b/src/main/resources/assets/hbm/sounds/weapon/explosionSmallNear1.ogg new file mode 100644 index 000000000..086a8953d Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/explosionSmallNear1.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/explosionSmallNear2.ogg b/src/main/resources/assets/hbm/sounds/weapon/explosionSmallNear2.ogg new file mode 100644 index 000000000..bc2509178 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/explosionSmallNear2.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/explosionSmallNear3.ogg b/src/main/resources/assets/hbm/sounds/weapon/explosionSmallNear3.ogg new file mode 100644 index 000000000..8a7bfe3c9 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/explosionSmallNear3.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/assault.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/assault.ogg new file mode 100644 index 000000000..6a49dbc1d Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/assault.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/blackPowder.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/blackPowder.ogg new file mode 100644 index 000000000..ea73cad21 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/blackPowder.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/disintegration.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/disintegration.ogg new file mode 100644 index 000000000..944cb0fb9 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/disintegration.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/fatman.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/fatman.ogg new file mode 100644 index 000000000..efe85f0b9 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/fatman.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/flameLoop.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/flameLoop.ogg new file mode 100644 index 000000000..8d2822779 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/flameLoop.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/greaseGun.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/greaseGun.ogg new file mode 100644 index 000000000..71bad6b35 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/greaseGun.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/laser.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/laser.ogg new file mode 100644 index 000000000..f6f869bba Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/laser.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/laserGatling.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/laserGatling.ogg new file mode 100644 index 000000000..e24acf08e Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/laserGatling.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/lockon.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/lockon.ogg new file mode 100644 index 000000000..6fb9782d4 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/lockon.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/loudestNoiseOnEarth.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/loudestNoiseOnEarth.ogg new file mode 100644 index 000000000..15b4cb7fe Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/loudestNoiseOnEarth.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/pistol.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/pistol.ogg new file mode 100644 index 000000000..5670830e6 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/pistol.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/rifle.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/rifle.ogg new file mode 100644 index 000000000..eb4f2fa43 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/rifle.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/rifleHeavy.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/rifleHeavy.ogg new file mode 100644 index 000000000..48f650331 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/rifleHeavy.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/shotgun.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/shotgun.ogg new file mode 100644 index 000000000..9c15eb596 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/shotgun.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/shotgunAlt.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/shotgunAlt.ogg new file mode 100644 index 000000000..422dae1e3 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/shotgunAlt.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/shotgunAuto.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/shotgunAuto.ogg new file mode 100644 index 000000000..eb8e6a76c Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/shotgunAuto.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/shredderCycle.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/shredderCycle.ogg new file mode 100644 index 000000000..3ae4901fa Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/shredderCycle.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/silenced.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/silenced.ogg new file mode 100644 index 000000000..2e972df03 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/silenced.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/smack.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/smack.ogg new file mode 100644 index 000000000..65386b73c Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/smack.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/tau.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/tau.ogg new file mode 100644 index 000000000..a09b1ac43 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/tau.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/tauLoop.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/tauLoop.ogg new file mode 100644 index 000000000..275db15a8 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/tauLoop.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/tauRelease1.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/tauRelease1.ogg new file mode 100644 index 000000000..e3d2992d6 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/tauRelease1.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/tauRelease2.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/tauRelease2.ogg new file mode 100644 index 000000000..3a466efb2 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/tauRelease2.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/tauRelease3.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/tauRelease3.ogg new file mode 100644 index 000000000..770c05b16 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/tauRelease3.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/tesla.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/tesla.ogg new file mode 100644 index 000000000..8c02cb806 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/tesla.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/uzi.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/uzi.ogg new file mode 100644 index 000000000..de44d99ab Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/uzi.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/fire/vstar.ogg b/src/main/resources/assets/hbm/sounds/weapon/fire/vstar.ogg new file mode 100644 index 000000000..346ffe2eb Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/fire/vstar.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/foley/gunWhack.ogg b/src/main/resources/assets/hbm/sounds/weapon/foley/gunWhack.ogg new file mode 100644 index 000000000..2f88f3fb8 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/foley/gunWhack.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/foley/gunWhack2.ogg b/src/main/resources/assets/hbm/sounds/weapon/foley/gunWhack2.ogg new file mode 100644 index 000000000..de102e4c3 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/foley/gunWhack2.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/glClose.ogg b/src/main/resources/assets/hbm/sounds/weapon/glClose.ogg new file mode 100644 index 000000000..c69c2bcf9 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/glClose.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/glOpen.ogg b/src/main/resources/assets/hbm/sounds/weapon/glOpen.ogg new file mode 100644 index 000000000..27ba81c76 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/glOpen.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/boltClose.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/boltClose.ogg new file mode 100644 index 000000000..45bd93171 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/boltClose.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/boltOpen.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/boltOpen.ogg new file mode 100644 index 000000000..3124cec57 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/boltOpen.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/closeClick.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/closeClick.ogg new file mode 100644 index 000000000..39f036143 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/closeClick.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/dryFireClick.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/dryFireClick.ogg new file mode 100644 index 000000000..a34d6da1d Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/dryFireClick.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/fatmanFull.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/fatmanFull.ogg new file mode 100644 index 000000000..e3af84df2 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/fatmanFull.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/impact1.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/impact1.ogg new file mode 100644 index 000000000..1e2a681ea Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/impact1.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/impact2.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/impact2.ogg new file mode 100644 index 000000000..8612f6f03 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/impact2.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/impact3.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/impact3.ogg new file mode 100644 index 000000000..8cacd6138 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/impact3.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/insertCanister.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/insertCanister.ogg new file mode 100644 index 000000000..bff37cdd3 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/insertCanister.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/insertGrenade.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/insertGrenade.ogg new file mode 100644 index 000000000..0b7a888a0 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/insertGrenade.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/insertLarge.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/insertLarge.ogg new file mode 100644 index 000000000..35e2a855b Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/insertLarge.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/insertRocket.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/insertRocket.ogg new file mode 100644 index 000000000..eb24d346a Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/insertRocket.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/leverCock.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/leverCock.ogg new file mode 100644 index 000000000..1591a4903 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/leverCock.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/magInsert.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/magInsert.ogg new file mode 100644 index 000000000..3db4f7dfe Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/magInsert.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/magRemove.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/magRemove.ogg new file mode 100644 index 000000000..995ada889 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/magRemove.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/magSmallInsert.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/magSmallInsert.ogg new file mode 100644 index 000000000..7c9b92a31 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/magSmallInsert.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/magSmallRemove.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/magSmallRemove.ogg new file mode 100644 index 000000000..2411f23eb Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/magSmallRemove.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/openLatch.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/openLatch.ogg new file mode 100644 index 000000000..57ce982d2 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/openLatch.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/pistolCock.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/pistolCock.ogg new file mode 100644 index 000000000..0898895cb Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/pistolCock.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/pressureValve.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/pressureValve.ogg new file mode 100644 index 000000000..ba3c3fc1b Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/pressureValve.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/revolverClose.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/revolverClose.ogg new file mode 100644 index 000000000..1e682c858 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/revolverClose.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/revolverCock.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/revolverCock.ogg new file mode 100644 index 000000000..184cade5f Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/revolverCock.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/revolverSpin.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/revolverSpin.ogg new file mode 100644 index 000000000..25cd591a6 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/revolverSpin.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/rifleCock.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/rifleCock.ogg new file mode 100644 index 000000000..474c91826 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/rifleCock.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/screw.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/screw.ogg new file mode 100644 index 000000000..e6dd7e05c Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/screw.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/shotgunCock.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/shotgunCock.ogg new file mode 100644 index 000000000..8e36020b2 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/shotgunCock.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/shotgunCockClose.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/shotgunCockClose.ogg new file mode 100644 index 000000000..c04bd3a02 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/shotgunCockClose.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/shotgunCockOpen.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/shotgunCockOpen.ogg new file mode 100644 index 000000000..0de904013 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/shotgunCockOpen.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/shotgunReload1.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/shotgunReload1.ogg new file mode 100644 index 000000000..7ab6c8105 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/shotgunReload1.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/shotgunReload2.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/shotgunReload2.ogg new file mode 100644 index 000000000..43e966250 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/shotgunReload2.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/shotgunReload3.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/shotgunReload3.ogg new file mode 100644 index 000000000..512c6ea81 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/shotgunReload3.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/reload/tubeFwoomp.ogg b/src/main/resources/assets/hbm/sounds/weapon/reload/tubeFwoomp.ogg new file mode 100644 index 000000000..f50d3f8b5 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/reload/tubeFwoomp.ogg differ diff --git a/src/main/resources/assets/hbm/textures/blocks/basalt.png b/src/main/resources/assets/hbm/textures/blocks/basalt.png index 8cc74f42c..ddf35c770 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/basalt.png and b/src/main/resources/assets/hbm/textures/blocks/basalt.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_luna_incendiary.png b/src/main/resources/assets/hbm/textures/blocks/basalt_top.png similarity index 51% rename from src/main/resources/assets/hbm/textures/items/ammo_luna_incendiary.png rename to src/main/resources/assets/hbm/textures/blocks/basalt_top.png index 3d15da550..77a745592 100644 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_luna_incendiary.png and b/src/main/resources/assets/hbm/textures/blocks/basalt_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/block_deprecated.png b/src/main/resources/assets/hbm/textures/blocks/block_deprecated.png new file mode 100644 index 000000000..5d3a513ac Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/block_deprecated.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/block_pu241.png b/src/main/resources/assets/hbm/textures/blocks/block_pu241.png new file mode 100644 index 000000000..442375755 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/block_pu241.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/block_u233.png b/src/main/resources/assets/hbm/textures/blocks/block_u233.png index fd260ba71..f87b793fb 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/block_u233.png and b/src/main/resources/assets/hbm/textures/blocks/block_u233.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/block_u233_old.png b/src/main/resources/assets/hbm/textures/blocks/block_u233_old.png new file mode 100644 index 000000000..6574dba3d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/block_u233_old.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cmb_brick_reinforced.png b/src/main/resources/assets/hbm/textures/blocks/cmb_brick_reinforced.png index ade707867..939e78a86 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/cmb_brick_reinforced.png and b/src/main/resources/assets/hbm/textures/blocks/cmb_brick_reinforced.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/drill_pipe.png b/src/main/resources/assets/hbm/textures/blocks/drill_pipe.png deleted file mode 100644 index ce47da701..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/drill_pipe.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/glyphid.png b/src/main/resources/assets/hbm/textures/blocks/glyphid.png new file mode 100644 index 000000000..57f80e334 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/glyphid.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/glyphid_base_rad.png b/src/main/resources/assets/hbm/textures/blocks/glyphid_base_rad.png new file mode 100644 index 000000000..a7050e29e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/glyphid_base_rad.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/glyphid_base_rad_alt.png b/src/main/resources/assets/hbm/textures/blocks/glyphid_base_rad_alt.png new file mode 100644 index 000000000..71bbc91ce Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/glyphid_base_rad_alt.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/glyphid_eggs_base_rad.png b/src/main/resources/assets/hbm/textures/blocks/glyphid_eggs_base_rad.png new file mode 100644 index 000000000..b55a9c7da Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/glyphid_eggs_base_rad.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/glyphid_eggs_rad.png b/src/main/resources/assets/hbm/textures/blocks/glyphid_eggs_rad.png new file mode 100644 index 000000000..11f9bdc1a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/glyphid_eggs_rad.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/hadron_core_in.png b/src/main/resources/assets/hbm/textures/blocks/hadron_core_in.png index 477cfb6fd..ff8c0e9b3 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/hadron_core_in.png and b/src/main/resources/assets/hbm/textures/blocks/hadron_core_in.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/hadron_core_out.png b/src/main/resources/assets/hbm/textures/blocks/hadron_core_out.png index 4f9cabbe7..7bd095d71 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/hadron_core_out.png and b/src/main/resources/assets/hbm/textures/blocks/hadron_core_out.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_shredder_bottom_alt.png b/src/main/resources/assets/hbm/textures/blocks/machine_shredder_bottom_alt.png index be4b6d73c..051390fba 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_shredder_bottom_alt.png and b/src/main/resources/assets/hbm/textures/blocks/machine_shredder_bottom_alt.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_shredder_front_alt.png b/src/main/resources/assets/hbm/textures/blocks/machine_shredder_front_alt.png index 7049ae709..b8ac27800 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_shredder_front_alt.png and b/src/main/resources/assets/hbm/textures/blocks/machine_shredder_front_alt.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_shredder_side_alt.png b/src/main/resources/assets/hbm/textures/blocks/machine_shredder_side_alt.png index de74959ec..817e0e6b7 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_shredder_side_alt.png and b/src/main/resources/assets/hbm/textures/blocks/machine_shredder_side_alt.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_shredder_top_alt.png b/src/main/resources/assets/hbm/textures/blocks/machine_shredder_top_alt.png index a1c241c4c..edc004f2c 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_shredder_top_alt.png and b/src/main/resources/assets/hbm/textures/blocks/machine_shredder_top_alt.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_basalt_asbestos.png b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_asbestos.png index b808e9ec0..08bae3077 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/ore_basalt_asbestos.png and b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_asbestos.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_luna_explosive.png b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_asbestos_top.png similarity index 50% rename from src/main/resources/assets/hbm/textures/items/ammo_luna_explosive.png rename to src/main/resources/assets/hbm/textures/blocks/ore_basalt_asbestos_top.png index 822eb02b1..b914d277a 100644 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_luna_explosive.png and b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_asbestos_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_basalt_fluorite.png b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_fluorite.png index a257b53ba..f5f3482c7 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/ore_basalt_fluorite.png and b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_fluorite.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_basalt_fluorite_top.png b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_fluorite_top.png new file mode 100644 index 000000000..8fbfac92d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_fluorite_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_basalt_gem.png b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_gem.png index 53be07abe..f3eb2c406 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/ore_basalt_gem.png and b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_gem.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_basalt_gem_top.png b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_gem_top.png new file mode 100644 index 000000000..1f331204b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_gem_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_basalt_molysite.png b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_molysite.png index e688aeaac..22f49d3f5 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/ore_basalt_molysite.png and b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_molysite.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_basalt_molysite_top.png b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_molysite_top.png new file mode 100644 index 000000000..b19ad36c9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_molysite_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_basalt_overlay.png b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_overlay.png deleted file mode 100644 index dba5f8339..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/ore_basalt_overlay.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_basalt_sulfur.png b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_sulfur.png index 4cb524681..eaf1ed5ac 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/ore_basalt_sulfur.png and b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_sulfur.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_basalt_sulfur_top.png b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_sulfur_top.png new file mode 100644 index 000000000..db2e0d04b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/ore_basalt_sulfur_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/particle/particle_ashes.png b/src/main/resources/assets/hbm/textures/blocks/particle/particle_ashes.png new file mode 100644 index 000000000..4a60bfb70 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/particle/particle_ashes.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/0_0_noise.png b/src/main/resources/assets/hbm/textures/blocks/playground/0_0_noise.png new file mode 100644 index 000000000..764360850 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/0_0_noise.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/0_1_verticals.png b/src/main/resources/assets/hbm/textures/blocks/playground/0_1_verticals.png new file mode 100644 index 000000000..d8a0c1169 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/0_1_verticals.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/0_2_framed.png b/src/main/resources/assets/hbm/textures/blocks/playground/0_2_framed.png new file mode 100644 index 000000000..c57639acf Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/0_2_framed.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/1_0_noise.png b/src/main/resources/assets/hbm/textures/blocks/playground/1_0_noise.png new file mode 100644 index 000000000..1006ddaa6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/1_0_noise.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/1_1_framed.png b/src/main/resources/assets/hbm/textures/blocks/playground/1_1_framed.png new file mode 100644 index 000000000..5b864439d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/1_1_framed.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/1_2_depth.png b/src/main/resources/assets/hbm/textures/blocks/playground/1_2_depth.png new file mode 100644 index 000000000..2c661253c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/1_2_depth.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/2_0_noise.png b/src/main/resources/assets/hbm/textures/blocks/playground/2_0_noise.png new file mode 100644 index 000000000..26c489a8f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/2_0_noise.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/2_1_verticals.png b/src/main/resources/assets/hbm/textures/blocks/playground/2_1_verticals.png new file mode 100644 index 000000000..64ef53bdb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/2_1_verticals.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/basalt_test.png b/src/main/resources/assets/hbm/textures/blocks/playground/basalt_test.png new file mode 100644 index 000000000..053622581 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/basalt_test.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/basalt_test_2.png b/src/main/resources/assets/hbm/textures/blocks/playground/basalt_test_2.png new file mode 100644 index 000000000..1a12e728c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/basalt_test_2.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/basalt_test_3.png b/src/main/resources/assets/hbm/textures/blocks/playground/basalt_test_3.png new file mode 100644 index 000000000..dc7698f50 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/basalt_test_3.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/basalt_test_4.png b/src/main/resources/assets/hbm/textures/blocks/playground/basalt_test_4.png new file mode 100644 index 000000000..e3e062e62 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/basalt_test_4.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/basalt_test_5.png b/src/main/resources/assets/hbm/textures/blocks/playground/basalt_test_5.png new file mode 100644 index 000000000..c4fb07664 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/basalt_test_5.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/basalt_test_6.png b/src/main/resources/assets/hbm/textures/blocks/playground/basalt_test_6.png new file mode 100644 index 000000000..962e430aa Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/basalt_test_6.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/deco_steel_blank_clean.png b/src/main/resources/assets/hbm/textures/blocks/playground/deco_steel_blank_clean.png new file mode 100644 index 000000000..96db3fd1a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/deco_steel_blank_clean.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/deco_steel_blank_clean_framed.png b/src/main/resources/assets/hbm/textures/blocks/playground/deco_steel_blank_clean_framed.png new file mode 100644 index 000000000..c1e4b548e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/deco_steel_blank_clean_framed.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/deco_steel_kit.png b/src/main/resources/assets/hbm/textures/blocks/playground/deco_steel_kit.png new file mode 100644 index 000000000..ab24ddc3c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/deco_steel_kit.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/dungeon_brick.png b/src/main/resources/assets/hbm/textures/blocks/playground/dungeon_brick.png new file mode 100644 index 000000000..a9b3f6981 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/dungeon_brick.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/ores.png b/src/main/resources/assets/hbm/textures/blocks/playground/ores.png new file mode 100644 index 000000000..c73322dca Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/ores.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/stainless_frame_thick.png b/src/main/resources/assets/hbm/textures/blocks/playground/stainless_frame_thick.png new file mode 100644 index 000000000..f985a1319 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/stainless_frame_thick.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/stainless_frame_thin.png b/src/main/resources/assets/hbm/textures/blocks/playground/stainless_frame_thin.png new file mode 100644 index 000000000..4a11a3bfe Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/stainless_frame_thin.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/stainless_frameless.png b/src/main/resources/assets/hbm/textures/blocks/playground/stainless_frameless.png new file mode 100644 index 000000000..4e111cba4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/stainless_frameless.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/stainless_kit.png b/src/main/resources/assets/hbm/textures/blocks/playground/stainless_kit.png new file mode 100644 index 000000000..4b2906b25 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/stainless_kit.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/stainless_kit_bright.png b/src/main/resources/assets/hbm/textures/blocks/playground/stainless_kit_bright.png new file mode 100644 index 000000000..126670dc6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/stainless_kit_bright.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/playground/stone.png b/src/main/resources/assets/hbm/textures/blocks/playground/stone.png new file mode 100755 index 000000000..87e19ff46 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/playground/stone.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rtty_programmer.png b/src/main/resources/assets/hbm/textures/blocks/rtty_programmer.png new file mode 100644 index 000000000..def98da38 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rtty_programmer.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rtty_programmer.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/rtty_programmer.png.mcmeta new file mode 100755 index 000000000..92dd223c8 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/rtty_programmer.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 10 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/rtty_reader.png b/src/main/resources/assets/hbm/textures/blocks/rtty_reader.png new file mode 100644 index 000000000..22366c094 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rtty_reader.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rtty_reader.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/rtty_reader.png.mcmeta new file mode 100755 index 000000000..92dd223c8 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/rtty_reader.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 10 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/scaffold_bar_side.png b/src/main/resources/assets/hbm/textures/blocks/scaffold_bar_side.png new file mode 100644 index 000000000..6c8ad885a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/scaffold_bar_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/scaffold_bar_top.png b/src/main/resources/assets/hbm/textures/blocks/scaffold_bar_top.png new file mode 100644 index 000000000..306526480 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/scaffold_bar_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/scaffold_grate_side.png b/src/main/resources/assets/hbm/textures/blocks/scaffold_grate_side.png new file mode 100644 index 000000000..0fb602b48 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/scaffold_grate_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/scaffold_grate_top.png b/src/main/resources/assets/hbm/textures/blocks/scaffold_grate_top.png new file mode 100644 index 000000000..2d8cda107 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/scaffold_grate_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/scaffold_pole_side.png b/src/main/resources/assets/hbm/textures/blocks/scaffold_pole_side.png new file mode 100644 index 000000000..3a9c53fc4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/scaffold_pole_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/scaffold_pole_top.png b/src/main/resources/assets/hbm/textures/blocks/scaffold_pole_top.png new file mode 100644 index 000000000..79c69a803 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/scaffold_pole_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/steel_corner.png b/src/main/resources/assets/hbm/textures/blocks/steel_corner.png deleted file mode 100644 index 26effad96..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/steel_corner.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/steel_wall.png b/src/main/resources/assets/hbm/textures/blocks/steel_wall.png index 76e4f32fd..8e457d39d 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/steel_wall.png and b/src/main/resources/assets/hbm/textures/blocks/steel_wall.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/steel_wall_alt.png b/src/main/resources/assets/hbm/textures/blocks/steel_wall_alt.png new file mode 100644 index 000000000..cb024e81d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/steel_wall_alt.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_keyhole_meta.png b/src/main/resources/assets/hbm/textures/blocks/stone_keyhole_meta.png new file mode 100644 index 000000000..a8f0e071f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_keyhole_meta.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/vine_phosphor.png b/src/main/resources/assets/hbm/textures/blocks/vine_phosphor.png new file mode 100644 index 000000000..16b22cfb1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/vine_phosphor.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_ground.png b/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_ground.png new file mode 100644 index 000000000..999d56b6a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_ground.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_hang.png b/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_hang.png new file mode 100644 index 000000000..67184d660 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_hang.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_item.png b/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_item.png new file mode 100644 index 000000000..9d0010d38 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_item.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_item.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_item.png.mcmeta new file mode 100644 index 000000000..a5c14ed33 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_item.png.mcmeta @@ -0,0 +1,16 @@ +{ + "animation": { + "interpolate": true, + "frametime": 8, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 3, + 2, + 1 + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_spots.png b/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_spots.png new file mode 100644 index 000000000..bf8b9ba3a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_spots.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_spots.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_spots.png.mcmeta new file mode 100644 index 000000000..a5c14ed33 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_spots.png.mcmeta @@ -0,0 +1,16 @@ +{ + "animation": { + "interpolate": true, + "frametime": 8, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 3, + 2, + 1 + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_spots_hang.png b/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_spots_hang.png new file mode 100644 index 000000000..c8dd11beb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_spots_hang.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_spots_hang.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_spots_hang.png.mcmeta new file mode 100644 index 000000000..a5c14ed33 --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/vine_phosphor_spots_hang.png.mcmeta @@ -0,0 +1,16 @@ +{ + "animation": { + "interpolate": true, + "frametime": 8, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 3, + 2, + 1 + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/textures/entity/ModelGrenade.png b/src/main/resources/assets/hbm/textures/entity/ModelGrenade.png deleted file mode 100644 index 519dd733d..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelGrenade.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeHE.png b/src/main/resources/assets/hbm/textures/entity/ModelGrenadeHE.png deleted file mode 100644 index 870b02d13..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeHE.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeIncendiary.png b/src/main/resources/assets/hbm/textures/entity/ModelGrenadeIncendiary.png deleted file mode 100644 index 3d175b379..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeIncendiary.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeSleek.png b/src/main/resources/assets/hbm/textures/entity/ModelGrenadeSleek.png deleted file mode 100644 index 581649526..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeSleek.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeToxic.png b/src/main/resources/assets/hbm/textures/entity/ModelGrenadeToxic.png deleted file mode 100644 index cd1064afc..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeToxic.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeTraining.png b/src/main/resources/assets/hbm/textures/entity/ModelGrenadeTraining.png deleted file mode 100644 index bac5fd09f..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeTraining.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocket.png b/src/main/resources/assets/hbm/textures/entity/ModelRocket.png deleted file mode 100644 index 9ada99c32..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelRocket.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketCanister.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketCanister.png deleted file mode 100644 index 3b1507beb..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelRocketCanister.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketEMP.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketEMP.png deleted file mode 100644 index 5dcff98f2..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelRocketEMP.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketGlare.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketGlare.png deleted file mode 100644 index 0a3c2aa52..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelRocketGlare.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketHE.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketHE.png deleted file mode 100644 index 275146752..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelRocketHE.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketIncendiary.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketIncendiary.png deleted file mode 100644 index d85bb21cc..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelRocketIncendiary.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketNuclear.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketNuclear.png deleted file mode 100644 index 81bf7d0e5..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelRocketNuclear.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketPhosphorus.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketPhosphorus.png deleted file mode 100644 index 30a9c896d..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelRocketPhosphorus.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketShrapnel.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketShrapnel.png deleted file mode 100644 index 62fa9befd..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelRocketShrapnel.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketSleek.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketSleek.png deleted file mode 100644 index cd8b70153..000000000 Binary files a/src/main/resources/assets/hbm/textures/entity/ModelRocketSleek.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/entity/dummy.png b/src/main/resources/assets/hbm/textures/entity/dummy.png new file mode 100644 index 000000000..2bef2f04e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/dummy.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/GUICoal.png b/src/main/resources/assets/hbm/textures/gui/GUICoal.png deleted file mode 100644 index 64a2c1bff..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/GUICoal.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/lead.png b/src/main/resources/assets/hbm/textures/gui/fluids/lead.png new file mode 100644 index 000000000..d6da14bdd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/lead.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/lead_hot.png b/src/main/resources/assets/hbm/textures/gui/fluids/lead_hot.png new file mode 100644 index 000000000..5d93be21e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/lead_hot.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/perfluoromethyl.png b/src/main/resources/assets/hbm/textures/gui/fluids/perfluoromethyl.png new file mode 100644 index 000000000..864ed637b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/perfluoromethyl.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/perfluoromethyl_cold.png b/src/main/resources/assets/hbm/textures/gui/fluids/perfluoromethyl_cold.png new file mode 100644 index 000000000..ebfca1137 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/perfluoromethyl_cold.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/perfluoromethyl_hot.png b/src/main/resources/assets/hbm/textures/gui/fluids/perfluoromethyl_hot.png new file mode 100644 index 000000000..8a489064d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/perfluoromethyl_hot.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_ams_base.png b/src/main/resources/assets/hbm/textures/gui/gui_ams_base.png deleted file mode 100644 index 6f94393f8..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/gui_ams_base.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_ams_base_alt.png b/src/main/resources/assets/hbm/textures/gui/gui_ams_base_alt.png deleted file mode 100644 index b89077159..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/gui_ams_base_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_ams_emitter.png b/src/main/resources/assets/hbm/textures/gui/gui_ams_emitter.png deleted file mode 100644 index e3d6a83b5..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/gui_ams_emitter.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_ams_limiter.png b/src/main/resources/assets/hbm/textures/gui/gui_ams_limiter.png deleted file mode 100644 index 6cb4472ce..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/gui_ams_limiter.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_casing_bag.png b/src/main/resources/assets/hbm/textures/gui/gui_casing_bag.png new file mode 100644 index 000000000..ac4b582c2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/gui_casing_bag.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_cmb_manufactory.png b/src/main/resources/assets/hbm/textures/gui/gui_cmb_manufactory.png deleted file mode 100644 index e23738da6..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/gui_cmb_manufactory.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_cyclotron.png b/src/main/resources/assets/hbm/textures/gui/gui_cyclotron.png deleted file mode 100644 index 3f3bb46de..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/gui_cyclotron.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_drill.png b/src/main/resources/assets/hbm/textures/gui/gui_drill.png deleted file mode 100644 index 16fb695ae..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/gui_drill.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_info.png b/src/main/resources/assets/hbm/textures/gui/gui_info.png deleted file mode 100644 index 587d44964..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/gui_info.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_radiobox.png b/src/main/resources/assets/hbm/textures/gui/gui_radiobox.png deleted file mode 100644 index 430580e2e..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/gui_radiobox.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_reactor_large_experimental.png b/src/main/resources/assets/hbm/textures/gui/gui_reactor_large_experimental.png deleted file mode 100644 index 6be614cb8..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/gui_reactor_large_experimental.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_selenium.png b/src/main/resources/assets/hbm/textures/gui/gui_selenium.png deleted file mode 100644 index 654594236..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/gui_selenium.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_shredder.png b/src/main/resources/assets/hbm/textures/gui/gui_shredder.png index 34e2e4ea5..19b774c76 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/gui_shredder.png and b/src/main/resources/assets/hbm/textures/gui/gui_shredder.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_telelinker.png b/src/main/resources/assets/hbm/textures/gui/gui_telelinker.png deleted file mode 100644 index ba165d278..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/gui_telelinker.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_watz_multiblock.png b/src/main/resources/assets/hbm/textures/gui/gui_watz_multiblock.png deleted file mode 100644 index a89e83f6b..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/gui_watz_multiblock.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/gui_wiki.png b/src/main/resources/assets/hbm/textures/gui/gui_wiki.png new file mode 100644 index 000000000..25d913919 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/gui_wiki.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/guide_pedestal.png b/src/main/resources/assets/hbm/textures/gui/guide_pedestal.png new file mode 100644 index 000000000..62073a986 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/guide_pedestal.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_rtty_programmer.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_rtty_programmer.png new file mode 100644 index 000000000..6529e3ac5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/machine/gui_rtty_programmer.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_rtty_reader.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_rtty_reader.png new file mode 100644 index 000000000..bfc870f73 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/machine/gui_rtty_reader.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_detector.png b/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_detector.png new file mode 100644 index 000000000..9b66746d1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_detector.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_dipole.png b/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_dipole.png new file mode 100644 index 000000000..06917dde0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_dipole.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_quadrupole.png b/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_quadrupole.png new file mode 100644 index 000000000..7a8830263 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_quadrupole.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_rfc.png b/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_rfc.png new file mode 100644 index 000000000..ac825a52f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_rfc.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_source.png b/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_source.png new file mode 100644 index 000000000..8483b85d8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_source.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_ammo_press.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_ammo_press.png new file mode 100644 index 000000000..cb3af2afc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/processing/gui_ammo_press.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_pyrooven.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_pyrooven.png new file mode 100644 index 000000000..bcefb15fb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/processing/gui_pyrooven.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_rotary_furnace.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_rotary_furnace.png new file mode 100644 index 000000000..54854a28d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/processing/gui_rotary_furnace.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_rotary_furnace_alt.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_rotary_furnace_alt.png new file mode 100644 index 000000000..d521b49e8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/processing/gui_rotary_furnace_alt.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_soldering_station.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_soldering_station.png index cb3081743..b99c7f982 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/processing/gui_soldering_station.png and b/src/main/resources/assets/hbm/textures/gui/processing/gui_soldering_station.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/puf6Tank.png b/src/main/resources/assets/hbm/textures/gui/puf6Tank.png deleted file mode 100644 index 07da76dac..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/puf6Tank.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/storage/gui_crane_inserter.png b/src/main/resources/assets/hbm/textures/gui/storage/gui_crane_inserter.png index 114a1561a..17e78f6bc 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/storage/gui_crane_inserter.png and b/src/main/resources/assets/hbm/textures/gui/storage/gui_crane_inserter.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/uf6Tank.png b/src/main/resources/assets/hbm/textures/gui/uf6Tank.png deleted file mode 100644 index 66371c4b3..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/uf6Tank.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/agar.png b/src/main/resources/assets/hbm/textures/items/agar.png new file mode 100644 index 000000000..8d83b359d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/agar.png differ diff --git a/src/main/resources/assets/hbm/textures/items/agar_base.png b/src/main/resources/assets/hbm/textures/items/agar_base.png new file mode 100644 index 000000000..74d5be9bf Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/agar_base.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo.png b/src/main/resources/assets/hbm/textures/items/ammo.png new file mode 100644 index 000000000..4af2d408c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_12gauge.png b/src/main/resources/assets/hbm/textures/items/ammo_12gauge.png deleted file mode 100644 index ec00ddf21..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_12gauge.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_12gauge_du.png b/src/main/resources/assets/hbm/textures/items/ammo_12gauge_du.png deleted file mode 100644 index 21b1a15a3..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_12gauge_du.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_12gauge_incendiary.png b/src/main/resources/assets/hbm/textures/items/ammo_12gauge_incendiary.png deleted file mode 100644 index 0e43c8788..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_12gauge_incendiary.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_12gauge_marauder.png b/src/main/resources/assets/hbm/textures/items/ammo_12gauge_marauder.png deleted file mode 100644 index 4adaf3bb5..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_12gauge_marauder.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_12gauge_percussion.png b/src/main/resources/assets/hbm/textures/items/ammo_12gauge_percussion.png deleted file mode 100644 index 1b60046f7..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_12gauge_percussion.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_12gauge_shrapnel.png b/src/main/resources/assets/hbm/textures/items/ammo_12gauge_shrapnel.png deleted file mode 100644 index d81c85033..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_12gauge_shrapnel.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_12gauge_sleek.png b/src/main/resources/assets/hbm/textures/items/ammo_12gauge_sleek.png deleted file mode 100644 index 0426df546..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_12gauge_sleek.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_20gauge.png b/src/main/resources/assets/hbm/textures/items/ammo_20gauge.png deleted file mode 100644 index 8c7cbd38f..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_20gauge.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_20gauge_caustic.png b/src/main/resources/assets/hbm/textures/items/ammo_20gauge_caustic.png deleted file mode 100644 index 303d26d4c..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_20gauge_caustic.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_20gauge_explosive.png b/src/main/resources/assets/hbm/textures/items/ammo_20gauge_explosive.png deleted file mode 100644 index e1c80fe3d..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_20gauge_explosive.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_20gauge_flechette.png b/src/main/resources/assets/hbm/textures/items/ammo_20gauge_flechette.png deleted file mode 100644 index a03bdb7f0..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_20gauge_flechette.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_20gauge_incendiary.png b/src/main/resources/assets/hbm/textures/items/ammo_20gauge_incendiary.png deleted file mode 100644 index 51dd8acb1..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_20gauge_incendiary.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_20gauge_shock.png b/src/main/resources/assets/hbm/textures/items/ammo_20gauge_shock.png deleted file mode 100644 index e50f545b2..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_20gauge_shock.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_20gauge_shrapnel.png b/src/main/resources/assets/hbm/textures/items/ammo_20gauge_shrapnel.png deleted file mode 100644 index b243ecc5e..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_20gauge_shrapnel.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_20gauge_sleek.png b/src/main/resources/assets/hbm/textures/items/ammo_20gauge_sleek.png deleted file mode 100644 index 759bf67c9..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_20gauge_sleek.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_20gauge_slug.png b/src/main/resources/assets/hbm/textures/items/ammo_20gauge_slug.png deleted file mode 100644 index 12a7f47e3..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_20gauge_slug.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_20gauge_wither.png b/src/main/resources/assets/hbm/textures/items/ammo_20gauge_wither.png deleted file mode 100644 index cc717431a..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_20gauge_wither.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_22lr.png b/src/main/resources/assets/hbm/textures/items/ammo_22lr.png deleted file mode 100644 index e2c70d0b2..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_22lr.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_22lr_ap.png b/src/main/resources/assets/hbm/textures/items/ammo_22lr_ap.png deleted file mode 100644 index a919ea35d..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_22lr_ap.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_22lr_chlorophyte.png b/src/main/resources/assets/hbm/textures/items/ammo_22lr_chlorophyte.png deleted file mode 100644 index 9001c86cc..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_22lr_chlorophyte.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_357_desh.png b/src/main/resources/assets/hbm/textures/items/ammo_357_desh.png deleted file mode 100644 index 899238a09..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_357_desh.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_357_ender.png b/src/main/resources/assets/hbm/textures/items/ammo_357_ender.png deleted file mode 100644 index 4ab1d41bb..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_357_ender.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_44.png b/src/main/resources/assets/hbm/textures/items/ammo_44.png deleted file mode 100644 index 1d741d30a..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_44.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_44_ap.png b/src/main/resources/assets/hbm/textures/items/ammo_44_ap.png deleted file mode 100644 index 477af4363..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_44_ap.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_44_bj.png b/src/main/resources/assets/hbm/textures/items/ammo_44_bj.png deleted file mode 100644 index 75b7b8f8c..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_44_bj.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_44_chlorophyte.png b/src/main/resources/assets/hbm/textures/items/ammo_44_chlorophyte.png deleted file mode 100644 index 47d8b75ec..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_44_chlorophyte.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_44_du.png b/src/main/resources/assets/hbm/textures/items/ammo_44_du.png deleted file mode 100644 index f1fa18816..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_44_du.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_44_phosphorus.png b/src/main/resources/assets/hbm/textures/items/ammo_44_phosphorus.png deleted file mode 100644 index eb8bd54a9..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_44_phosphorus.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_44_pip.png b/src/main/resources/assets/hbm/textures/items/ammo_44_pip.png deleted file mode 100644 index b0b384f74..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_44_pip.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_44_rocket.png b/src/main/resources/assets/hbm/textures/items/ammo_44_rocket.png deleted file mode 100644 index 418125b2e..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_44_rocket.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_44_silver.png b/src/main/resources/assets/hbm/textures/items/ammo_44_silver.png deleted file mode 100644 index 72650df56..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_44_silver.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_44_star.png b/src/main/resources/assets/hbm/textures/items/ammo_44_star.png deleted file mode 100644 index 626767ec4..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_44_star.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_45_ap.png b/src/main/resources/assets/hbm/textures/items/ammo_45_ap.png deleted file mode 100644 index 43cf97448..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_45_ap.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_45_du.png b/src/main/resources/assets/hbm/textures/items/ammo_45_du.png deleted file mode 100644 index f46671ea3..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_45_du.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_4gauge.png b/src/main/resources/assets/hbm/textures/items/ammo_4gauge.png deleted file mode 100644 index 2e8f067d2..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_4gauge.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_balefire.png b/src/main/resources/assets/hbm/textures/items/ammo_4gauge_balefire.png deleted file mode 100644 index 039f681cc..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_balefire.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_canister.png b/src/main/resources/assets/hbm/textures/items/ammo_4gauge_canister.png deleted file mode 100644 index 58b184c3e..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_canister.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_claw.png b/src/main/resources/assets/hbm/textures/items/ammo_4gauge_claw.png deleted file mode 100644 index 0352ebe13..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_claw.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_explosive.png b/src/main/resources/assets/hbm/textures/items/ammo_4gauge_explosive.png deleted file mode 100644 index 6f00d2af9..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_explosive.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_flechette.png b/src/main/resources/assets/hbm/textures/items/ammo_4gauge_flechette.png deleted file mode 100644 index f24e7e0b7..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_flechette.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_flechette_phosphorus.png b/src/main/resources/assets/hbm/textures/items/ammo_4gauge_flechette_phosphorus.png deleted file mode 100644 index 457d799d9..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_flechette_phosphorus.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_kampf.png b/src/main/resources/assets/hbm/textures/items/ammo_4gauge_kampf.png deleted file mode 100644 index 0226ead91..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_kampf.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_semtex.png b/src/main/resources/assets/hbm/textures/items/ammo_4gauge_semtex.png deleted file mode 100644 index 16c9c87a4..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_semtex.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_shrapnel.png b/src/main/resources/assets/hbm/textures/items/ammo_4gauge_shrapnel.png deleted file mode 100644 index f64b4271d..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_shrapnel.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_sleek.png b/src/main/resources/assets/hbm/textures/items/ammo_4gauge_sleek.png deleted file mode 100644 index 24f58d646..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_sleek.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_slug.png b/src/main/resources/assets/hbm/textures/items/ammo_4gauge_slug.png deleted file mode 100644 index 77523c498..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_slug.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_titan.png b/src/main/resources/assets/hbm/textures/items/ammo_4gauge_titan.png deleted file mode 100644 index 5547e1939..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_titan.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_vampire.png b/src/main/resources/assets/hbm/textures/items/ammo_4gauge_vampire.png deleted file mode 100644 index 3ed3b56e7..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_vampire.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_void.png b/src/main/resources/assets/hbm/textures/items/ammo_4gauge_void.png deleted file mode 100644 index f10417b2e..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_4gauge_void.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_50ae.png b/src/main/resources/assets/hbm/textures/items/ammo_50ae.png deleted file mode 100644 index 0a9b47c8b..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_50ae.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_50ae_ap.png b/src/main/resources/assets/hbm/textures/items/ammo_50ae_ap.png deleted file mode 100644 index 5d370b105..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_50ae_ap.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_50ae_chlorophyte.png b/src/main/resources/assets/hbm/textures/items/ammo_50ae_chlorophyte.png deleted file mode 100644 index 508c838f3..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_50ae_chlorophyte.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_50ae_du.png b/src/main/resources/assets/hbm/textures/items/ammo_50ae_du.png deleted file mode 100644 index ffaacbc63..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_50ae_du.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_50ae_star.png b/src/main/resources/assets/hbm/textures/items/ammo_50ae_star.png deleted file mode 100644 index 0553cb5ef..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_50ae_star.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_50bmg.png b/src/main/resources/assets/hbm/textures/items/ammo_50bmg.png deleted file mode 100644 index c0d7f783b..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_50bmg.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_50bmg_ap.png b/src/main/resources/assets/hbm/textures/items/ammo_50bmg_ap.png deleted file mode 100644 index d0e070a96..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_50bmg_ap.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_50bmg_chlorophyte.png b/src/main/resources/assets/hbm/textures/items/ammo_50bmg_chlorophyte.png deleted file mode 100644 index 6bfa27058..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_50bmg_chlorophyte.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_50bmg_du.png b/src/main/resources/assets/hbm/textures/items/ammo_50bmg_du.png deleted file mode 100644 index 38ccdfffb..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_50bmg_du.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_50bmg_explosive.png b/src/main/resources/assets/hbm/textures/items/ammo_50bmg_explosive.png deleted file mode 100644 index 1dc79f9e0..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_50bmg_explosive.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_50bmg_flechette.png b/src/main/resources/assets/hbm/textures/items/ammo_50bmg_flechette.png deleted file mode 100644 index a9de16507..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_50bmg_flechette.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_50bmg_flechette_am.png b/src/main/resources/assets/hbm/textures/items/ammo_50bmg_flechette_am.png deleted file mode 100644 index 300ed5765..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_50bmg_flechette_am.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_50bmg_flechette_po.png b/src/main/resources/assets/hbm/textures/items/ammo_50bmg_flechette_po.png deleted file mode 100644 index 97e1d8b6a..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_50bmg_flechette_po.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_50bmg_incendiary.png b/src/main/resources/assets/hbm/textures/items/ammo_50bmg_incendiary.png deleted file mode 100644 index 240346f90..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_50bmg_incendiary.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_50bmg_phosphorus.png b/src/main/resources/assets/hbm/textures/items/ammo_50bmg_phosphorus.png deleted file mode 100644 index ca7a3d690..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_50bmg_phosphorus.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_50bmg_sleek.png b/src/main/resources/assets/hbm/textures/items/ammo_50bmg_sleek.png deleted file mode 100644 index 71714637b..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_50bmg_sleek.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_50bmg_star.png b/src/main/resources/assets/hbm/textures/items/ammo_50bmg_star.png deleted file mode 100644 index 6f3248455..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_50bmg_star.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_556.png b/src/main/resources/assets/hbm/textures/items/ammo_556.png deleted file mode 100644 index 6ced441aa..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_556.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_556_ap.png b/src/main/resources/assets/hbm/textures/items/ammo_556_ap.png deleted file mode 100644 index 58c6e9436..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_556_ap.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_556_chlorophyte.png b/src/main/resources/assets/hbm/textures/items/ammo_556_chlorophyte.png deleted file mode 100644 index 0a847444d..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_556_chlorophyte.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_556_du.png b/src/main/resources/assets/hbm/textures/items/ammo_556_du.png deleted file mode 100644 index b7f0f4da9..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_556_du.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_556_flechette.png b/src/main/resources/assets/hbm/textures/items/ammo_556_flechette.png deleted file mode 100644 index cbda4bb7c..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_556_flechette.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_556_flechette_chlorophyte.png b/src/main/resources/assets/hbm/textures/items/ammo_556_flechette_chlorophyte.png deleted file mode 100644 index be9ab1a8c..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_556_flechette_chlorophyte.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_556_flechette_du.png b/src/main/resources/assets/hbm/textures/items/ammo_556_flechette_du.png deleted file mode 100644 index bfefb1649..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_556_flechette_du.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_556_flechette_incendiary.png b/src/main/resources/assets/hbm/textures/items/ammo_556_flechette_incendiary.png deleted file mode 100644 index 2e1115e79..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_556_flechette_incendiary.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_556_flechette_phosphorus.png b/src/main/resources/assets/hbm/textures/items/ammo_556_flechette_phosphorus.png deleted file mode 100644 index 5330f17ca..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_556_flechette_phosphorus.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_556_flechette_sleek.png b/src/main/resources/assets/hbm/textures/items/ammo_556_flechette_sleek.png deleted file mode 100644 index 6ff734314..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_556_flechette_sleek.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_556_k.png b/src/main/resources/assets/hbm/textures/items/ammo_556_k.png deleted file mode 100644 index 86bf85767..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_556_k.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_556_phosphorus.png b/src/main/resources/assets/hbm/textures/items/ammo_556_phosphorus.png deleted file mode 100644 index 7637beb63..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_556_phosphorus.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_556_sleek.png b/src/main/resources/assets/hbm/textures/items/ammo_556_sleek.png deleted file mode 100644 index 4c43c33fe..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_556_sleek.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_556_star.png b/src/main/resources/assets/hbm/textures/items/ammo_556_star.png deleted file mode 100644 index 14d73a757..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_556_star.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_556_tracer.png b/src/main/resources/assets/hbm/textures/items/ammo_556_tracer.png deleted file mode 100644 index 7610456d6..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_556_tracer.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_5mm.png b/src/main/resources/assets/hbm/textures/items/ammo_5mm.png deleted file mode 100644 index a8f597739..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_5mm.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_5mm_alt.png b/src/main/resources/assets/hbm/textures/items/ammo_5mm_alt.png deleted file mode 100644 index 3a511466b..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_5mm_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_5mm_chlorophyte.png b/src/main/resources/assets/hbm/textures/items/ammo_5mm_chlorophyte.png deleted file mode 100644 index 4c6d8c99a..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_5mm_chlorophyte.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_5mm_du.png b/src/main/resources/assets/hbm/textures/items/ammo_5mm_du.png deleted file mode 100644 index e508b69e0..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_5mm_du.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_5mm_explosive.png b/src/main/resources/assets/hbm/textures/items/ammo_5mm_explosive.png deleted file mode 100644 index 065481ff2..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_5mm_explosive.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_5mm_star.png b/src/main/resources/assets/hbm/textures/items/ammo_5mm_star.png deleted file mode 100644 index f270f4bb3..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_5mm_star.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_75bolt.png b/src/main/resources/assets/hbm/textures/items/ammo_75bolt.png deleted file mode 100644 index fca556d72..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_75bolt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_75bolt_he.png b/src/main/resources/assets/hbm/textures/items/ammo_75bolt_he.png deleted file mode 100644 index ed72697e5..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_75bolt_he.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_75bolt_incendiary.png b/src/main/resources/assets/hbm/textures/items/ammo_75bolt_incendiary.png deleted file mode 100644 index 768f2817a..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_75bolt_incendiary.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_762.png b/src/main/resources/assets/hbm/textures/items/ammo_762.png deleted file mode 100644 index e1b2e9726..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_762.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_762_ap.png b/src/main/resources/assets/hbm/textures/items/ammo_762_ap.png deleted file mode 100644 index 0b55a7515..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_762_ap.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_762_du.png b/src/main/resources/assets/hbm/textures/items/ammo_762_du.png deleted file mode 100644 index 3443e8b11..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_762_du.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_762_k.png b/src/main/resources/assets/hbm/textures/items/ammo_762_k.png deleted file mode 100644 index c1206a564..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_762_k.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_762_phosphorus.png b/src/main/resources/assets/hbm/textures/items/ammo_762_phosphorus.png deleted file mode 100644 index 6db355757..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_762_phosphorus.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_762_tracer.png b/src/main/resources/assets/hbm/textures/items/ammo_762_tracer.png deleted file mode 100644 index 818aa8c8c..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_762_tracer.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_9mm.png b/src/main/resources/assets/hbm/textures/items/ammo_9mm.png deleted file mode 100644 index 60950815d..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_9mm.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_9mm_ap.png b/src/main/resources/assets/hbm/textures/items/ammo_9mm_ap.png deleted file mode 100644 index 17f2f4df2..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_9mm_ap.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_9mm_chlorophyte.png b/src/main/resources/assets/hbm/textures/items/ammo_9mm_chlorophyte.png deleted file mode 100644 index 333ef997c..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_9mm_chlorophyte.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_9mm_du.png b/src/main/resources/assets/hbm/textures/items/ammo_9mm_du.png deleted file mode 100644 index c388b044e..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_9mm_du.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_9mm_rocket.png b/src/main/resources/assets/hbm/textures/items/ammo_9mm_rocket.png deleted file mode 100644 index ad908fbe9..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_9mm_rocket.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_bag.png b/src/main/resources/assets/hbm/textures/items/ammo_bag.png new file mode 100644 index 000000000..548646c58 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_bag.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_balefire.png b/src/main/resources/assets/hbm/textures/items/ammo_balefire.png deleted file mode 100644 index 729506f48..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_balefire.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_balefire_high.png b/src/main/resources/assets/hbm/textures/items/ammo_balefire_high.png deleted file mode 100644 index 527fcdf3c..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_balefire_high.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_cell.png b/src/main/resources/assets/hbm/textures/items/ammo_cell.png deleted file mode 100644 index b276895b2..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_cell.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_cell_explosive.png b/src/main/resources/assets/hbm/textures/items/ammo_cell_explosive.png deleted file mode 100644 index 3c0c06b78..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_cell_explosive.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_cell_incendiary.png b/src/main/resources/assets/hbm/textures/items/ammo_cell_incendiary.png deleted file mode 100644 index 231be55d4..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_cell_incendiary.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_dart.png b/src/main/resources/assets/hbm/textures/items/ammo_dart.png deleted file mode 100644 index 928dc9221..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_dart.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_dart_nerf.png b/src/main/resources/assets/hbm/textures/items/ammo_dart_nerf.png deleted file mode 100644 index fd73075b2..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_dart_nerf.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_dart_nuclear.png b/src/main/resources/assets/hbm/textures/items/ammo_dart_nuclear.png deleted file mode 100644 index a57398711..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_dart_nuclear.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_folly.png b/src/main/resources/assets/hbm/textures/items/ammo_folly.png deleted file mode 100644 index aa7e1cee2..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_folly.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_folly_du.png b/src/main/resources/assets/hbm/textures/items/ammo_folly_du.png deleted file mode 100644 index ca37c31ee..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_folly_du.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_folly_nuclear.png b/src/main/resources/assets/hbm/textures/items/ammo_folly_nuclear.png deleted file mode 100644 index 6c18843d8..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_folly_nuclear.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_fuel.png b/src/main/resources/assets/hbm/textures/items/ammo_fuel.png deleted file mode 100644 index d4bf581a4..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_fuel.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_fuel_gas.png b/src/main/resources/assets/hbm/textures/items/ammo_fuel_gas.png deleted file mode 100644 index 6c11f2185..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_fuel_gas.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_fuel_napalm.png b/src/main/resources/assets/hbm/textures/items/ammo_fuel_napalm.png deleted file mode 100644 index 44b359f1e..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_fuel_napalm.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_fuel_phosphorus.png b/src/main/resources/assets/hbm/textures/items/ammo_fuel_phosphorus.png deleted file mode 100644 index bb94f482a..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_fuel_phosphorus.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_fuel_vaporizer.png b/src/main/resources/assets/hbm/textures/items/ammo_fuel_vaporizer.png deleted file mode 100644 index 837d2dd5f..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_fuel_vaporizer.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_grenade.png b/src/main/resources/assets/hbm/textures/items/ammo_grenade.png deleted file mode 100644 index fef56db60..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_grenade.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_grenade_FG.png b/src/main/resources/assets/hbm/textures/items/ammo_grenade_FG.png deleted file mode 100644 index 12db05159..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_grenade_FG.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_grenade_concussion.png b/src/main/resources/assets/hbm/textures/items/ammo_grenade_concussion.png deleted file mode 100644 index 1751e2c62..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_grenade_concussion.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_grenade_finned.png b/src/main/resources/assets/hbm/textures/items/ammo_grenade_finned.png deleted file mode 100644 index 25a48819d..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_grenade_finned.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_grenade_he.png b/src/main/resources/assets/hbm/textures/items/ammo_grenade_he.png deleted file mode 100644 index 6392c9fbd..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_grenade_he.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_grenade_incendiary.png b/src/main/resources/assets/hbm/textures/items/ammo_grenade_incendiary.png deleted file mode 100644 index 97d7bfa08..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_grenade_incendiary.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_grenade_nuclear.png b/src/main/resources/assets/hbm/textures/items/ammo_grenade_nuclear.png deleted file mode 100644 index 4e165c970..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_grenade_nuclear.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_grenade_phosphorus.png b/src/main/resources/assets/hbm/textures/items/ammo_grenade_phosphorus.png deleted file mode 100644 index 2881d2f4c..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_grenade_phosphorus.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_grenade_sleek.png b/src/main/resources/assets/hbm/textures/items/ammo_grenade_sleek.png deleted file mode 100644 index 5873c51d9..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_grenade_sleek.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_grenade_toxic.png b/src/main/resources/assets/hbm/textures/items/ammo_grenade_toxic.png deleted file mode 100644 index 28e62d022..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_grenade_toxic.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_grenade_tracer.png b/src/main/resources/assets/hbm/textures/items/ammo_grenade_tracer.png deleted file mode 100644 index 265f2cda9..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_grenade_tracer.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_luna.png b/src/main/resources/assets/hbm/textures/items/ammo_luna.png deleted file mode 100644 index 7b826c3eb..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_luna.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_mirv.png b/src/main/resources/assets/hbm/textures/items/ammo_mirv.png deleted file mode 100644 index 1caf3b6c9..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_mirv.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_mirv_high.png b/src/main/resources/assets/hbm/textures/items/ammo_mirv_high.png deleted file mode 100644 index 8266ae872..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_mirv_high.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_mirv_low.png b/src/main/resources/assets/hbm/textures/items/ammo_mirv_low.png deleted file mode 100644 index 8feece87e..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_mirv_low.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_mirv_safe.png b/src/main/resources/assets/hbm/textures/items/ammo_mirv_safe.png deleted file mode 100644 index a90ebb3be..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_mirv_safe.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_mirv_special.png b/src/main/resources/assets/hbm/textures/items/ammo_mirv_special.png deleted file mode 100644 index bdadb290b..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_mirv_special.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_nuke.png b/src/main/resources/assets/hbm/textures/items/ammo_nuke.png deleted file mode 100644 index 212010e52..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_nuke.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_nuke_barrel.png b/src/main/resources/assets/hbm/textures/items/ammo_nuke_barrel.png deleted file mode 100644 index 68e1e79fa..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_nuke_barrel.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_nuke_high.png b/src/main/resources/assets/hbm/textures/items/ammo_nuke_high.png deleted file mode 100644 index 592de0bec..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_nuke_high.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_nuke_hive.png b/src/main/resources/assets/hbm/textures/items/ammo_nuke_hive.png deleted file mode 100644 index 788454adb..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_nuke_hive.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_nuke_low.png b/src/main/resources/assets/hbm/textures/items/ammo_nuke_low.png deleted file mode 100644 index d19c8310c..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_nuke_low.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_nuke_pumpkin.png b/src/main/resources/assets/hbm/textures/items/ammo_nuke_pumpkin.png deleted file mode 100644 index c110f2a81..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_nuke_pumpkin.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_nuke_safe.png b/src/main/resources/assets/hbm/textures/items/ammo_nuke_safe.png deleted file mode 100644 index e20a170ed..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_nuke_safe.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_nuke_tots.png b/src/main/resources/assets/hbm/textures/items/ammo_nuke_tots.png deleted file mode 100644 index 5ba9c2c74..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_nuke_tots.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_rocket.png b/src/main/resources/assets/hbm/textures/items/ammo_rocket.png deleted file mode 100644 index 7fec64353..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_rocket.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_rocket_balefire.png b/src/main/resources/assets/hbm/textures/items/ammo_rocket_balefire.png deleted file mode 100644 index a5a42216a..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_rocket_balefire.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_rocket_canister.png b/src/main/resources/assets/hbm/textures/items/ammo_rocket_canister.png deleted file mode 100644 index 9ecc19e40..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_rocket_canister.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_rocket_digamma.png b/src/main/resources/assets/hbm/textures/items/ammo_rocket_digamma.png deleted file mode 100644 index 785b7dd16..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_rocket_digamma.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_rocket_emp.png b/src/main/resources/assets/hbm/textures/items/ammo_rocket_emp.png deleted file mode 100644 index 57f7b245e..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_rocket_emp.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_rocket_glare.png b/src/main/resources/assets/hbm/textures/items/ammo_rocket_glare.png deleted file mode 100644 index 2da9af3c1..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_rocket_glare.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_rocket_he.png b/src/main/resources/assets/hbm/textures/items/ammo_rocket_he.png deleted file mode 100644 index be341237d..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_rocket_he.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_rocket_incendiary.png b/src/main/resources/assets/hbm/textures/items/ammo_rocket_incendiary.png deleted file mode 100644 index 06c6ad789..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_rocket_incendiary.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_rocket_nuclear.png b/src/main/resources/assets/hbm/textures/items/ammo_rocket_nuclear.png deleted file mode 100644 index 7a8112095..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_rocket_nuclear.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_rocket_phosphorus.png b/src/main/resources/assets/hbm/textures/items/ammo_rocket_phosphorus.png deleted file mode 100644 index 5798976d4..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_rocket_phosphorus.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_rocket_rpc.png b/src/main/resources/assets/hbm/textures/items/ammo_rocket_rpc.png deleted file mode 100644 index 0b16c9758..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_rocket_rpc.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_rocket_shrapnel.png b/src/main/resources/assets/hbm/textures/items/ammo_rocket_shrapnel.png deleted file mode 100644 index 7f9cd9a15..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_rocket_shrapnel.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_rocket_sleek.png b/src/main/resources/assets/hbm/textures/items/ammo_rocket_sleek.png deleted file mode 100644 index 8eff0d768..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_rocket_sleek.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_rocket_toxic.png b/src/main/resources/assets/hbm/textures/items/ammo_rocket_toxic.png deleted file mode 100644 index 1cad57c5b..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/ammo_rocket_toxic.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_secret.bmg50_equestrian.png b/src/main/resources/assets/hbm/textures/items/ammo_secret.bmg50_equestrian.png new file mode 100644 index 000000000..246b16aa1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_secret.bmg50_equestrian.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_secret.folly_nuke.png b/src/main/resources/assets/hbm/textures/items/ammo_secret.folly_nuke.png new file mode 100644 index 000000000..29a262ca2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_secret.folly_nuke.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_secret.folly_sm.png b/src/main/resources/assets/hbm/textures/items/ammo_secret.folly_sm.png new file mode 100644 index 000000000..30efa4d03 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_secret.folly_sm.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_secret.g12_equestrian.png b/src/main/resources/assets/hbm/textures/items/ammo_secret.g12_equestrian.png new file mode 100644 index 000000000..3d060b001 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_secret.g12_equestrian.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_secret.m44_equestrian.png b/src/main/resources/assets/hbm/textures/items/ammo_secret.m44_equestrian.png new file mode 100644 index 000000000..44cb11c96 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_secret.m44_equestrian.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_secret.p35_800.png b/src/main/resources/assets/hbm/textures/items/ammo_secret.p35_800.png new file mode 100644 index 000000000..af9c08959 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_secret.p35_800.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.b75.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.b75.png new file mode 100644 index 000000000..f81589f2a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.b75.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.b75_exp.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.b75_exp.png new file mode 100644 index 000000000..2c7e24b4f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.b75_exp.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.b75_inc.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.b75_inc.png new file mode 100644 index 000000000..b01ed4d9d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.b75_inc.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_ap.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_ap.png new file mode 100644 index 000000000..0892a1817 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_ap.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_du.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_du.png new file mode 100644 index 000000000..11994e39e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_du.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_fmj.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_fmj.png new file mode 100644 index 000000000..bbe08b3fa Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_fmj.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_jhp.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_jhp.png new file mode 100644 index 000000000..1692e288b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_jhp.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_sp.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_sp.png new file mode 100644 index 000000000..5a61f083b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.bmg50_sp.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.capacitor.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.capacitor.png new file mode 100644 index 000000000..15184342e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.capacitor.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.capacitor_blacklightning.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.capacitor_blacklightning.png new file mode 100644 index 000000000..00b4e57ae Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.capacitor_blacklightning.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.capacitor_ir.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.capacitor_ir.png new file mode 100644 index 000000000..0b398e264 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.capacitor_ir.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.capacitor_overcharge.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.capacitor_overcharge.png new file mode 100644 index 000000000..378f2cd82 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.capacitor_overcharge.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.coil_ferrouranium.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.coil_ferrouranium.png new file mode 100644 index 000000000..a8bb6196c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.coil_ferrouranium.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.coil_tungsten.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.coil_tungsten.png new file mode 100644 index 000000000..5e6692fb6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.coil_tungsten.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.flame_balefire.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.flame_balefire.png new file mode 100644 index 000000000..e52210024 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.flame_balefire.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.flame_diesel.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.flame_diesel.png new file mode 100644 index 000000000..67738713a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.flame_diesel.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.flame_gas.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.flame_gas.png new file mode 100644 index 000000000..22624ac48 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.flame_gas.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.flame_napalm.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.flame_napalm.png new file mode 100644 index 000000000..a8eea9e23 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.flame_napalm.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g10.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g10.png new file mode 100644 index 000000000..19577ed75 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.g10.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g10_du.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g10_du.png new file mode 100644 index 000000000..fba9a8631 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.g10_du.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g10_shrapnel.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g10_shrapnel.png new file mode 100644 index 000000000..b95bf7d02 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.g10_shrapnel.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g10_slug.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g10_slug.png new file mode 100644 index 000000000..efc9655b5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.g10_slug.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g12.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g12.png new file mode 100644 index 000000000..73659c905 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.g12.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_anthrax.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_anthrax.png new file mode 100644 index 000000000..28848a839 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_anthrax.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_bp.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_bp.png new file mode 100644 index 000000000..e6cf463dd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_bp.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_bp_magnum.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_bp_magnum.png new file mode 100644 index 000000000..2e3b56e7e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_bp_magnum.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_bp_slug.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_bp_slug.png new file mode 100644 index 000000000..98643063f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_bp_slug.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_explosive.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_explosive.png new file mode 100644 index 000000000..bc382afcd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_explosive.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_flechette.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_flechette.png new file mode 100644 index 000000000..60b41a6cb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_flechette.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_magnum.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_magnum.png new file mode 100644 index 000000000..5d04ed39e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_magnum.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_phosphorus.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_phosphorus.png new file mode 100644 index 000000000..de7316252 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_phosphorus.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_slug.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_slug.png new file mode 100644 index 000000000..e76016992 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.g12_slug.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g26_flare.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g26_flare.png new file mode 100644 index 000000000..2aa6a543f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.g26_flare.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g26_flare_supply.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g26_flare_supply.png new file mode 100644 index 000000000..8ff538264 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.g26_flare_supply.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g26_flare_weapon.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g26_flare_weapon.png new file mode 100644 index 000000000..88d62ac2a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.g26_flare_weapon.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g40_demo.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g40_demo.png new file mode 100644 index 000000000..72fb13e92 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.g40_demo.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g40_he.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g40_he.png new file mode 100644 index 000000000..42a048f47 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.g40_he.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g40_heat.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g40_heat.png new file mode 100644 index 000000000..298891567 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.g40_heat.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g40_inc.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g40_inc.png new file mode 100644 index 000000000..d16f73b87 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.g40_inc.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g40_phosphorus.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g40_phosphorus.png new file mode 100644 index 000000000..5ca95889b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.g40_phosphorus.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_ap.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_ap.png new file mode 100644 index 000000000..a9dbde5aa Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_ap.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_bp.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_bp.png new file mode 100644 index 000000000..fe66c7c00 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_bp.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_express.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_express.png new file mode 100644 index 000000000..cad8fbc2d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_express.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_fmj.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_fmj.png new file mode 100644 index 000000000..7025adb2a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_fmj.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_jhp.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_jhp.png new file mode 100644 index 000000000..6f13cbeb7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_jhp.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_sp.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_sp.png new file mode 100644 index 000000000..0aecdede2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_sp.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.m44_ap.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.m44_ap.png new file mode 100644 index 000000000..dc528cbf0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.m44_ap.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.m44_bp.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.m44_bp.png new file mode 100644 index 000000000..30fee7b56 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.m44_bp.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.m44_express.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.m44_express.png new file mode 100644 index 000000000..e83865576 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.m44_express.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.m44_fmj.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.m44_fmj.png new file mode 100644 index 000000000..c12398df4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.m44_fmj.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.m44_jhp.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.m44_jhp.png new file mode 100644 index 000000000..9fb718610 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.m44_jhp.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.m44_sp.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.m44_sp.png new file mode 100644 index 000000000..9f055e5d1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.m44_sp.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.nuke_demo.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.nuke_demo.png new file mode 100644 index 000000000..196bfa5c8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.nuke_demo.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.nuke_high.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.nuke_high.png new file mode 100644 index 000000000..8d7930c61 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.nuke_high.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.nuke_hive.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.nuke_hive.png new file mode 100644 index 000000000..fd36c5d17 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.nuke_hive.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.nuke_standard.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.nuke_standard.png new file mode 100644 index 000000000..72231bdf8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.nuke_standard.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.nuke_tots.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.nuke_tots.png new file mode 100644 index 000000000..7f113f8e5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.nuke_tots.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_ap.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_ap.png new file mode 100644 index 000000000..2f00653e3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_ap.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_fmj.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_fmj.png new file mode 100644 index 000000000..cfe452c8d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_fmj.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_jhp.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_jhp.png new file mode 100644 index 000000000..12bee077c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_jhp.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_sp.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_sp.png new file mode 100644 index 000000000..84b3d03a4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_sp.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.p9_ap.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.p9_ap.png new file mode 100644 index 000000000..b736f2d6d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.p9_ap.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.p9_fmj.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.p9_fmj.png new file mode 100644 index 000000000..dd6d98de3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.p9_fmj.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.p9_jhp.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.p9_jhp.png new file mode 100644 index 000000000..0c8b0d981 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.p9_jhp.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.p9_sp.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.p9_sp.png new file mode 100644 index 000000000..d3a773451 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.p9_sp.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.r556_ap.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.r556_ap.png new file mode 100644 index 000000000..8f36b353c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.r556_ap.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.r556_fmj.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.r556_fmj.png new file mode 100644 index 000000000..e7f744078 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.r556_fmj.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.r556_jhp.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.r556_jhp.png new file mode 100644 index 000000000..29bea50d5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.r556_jhp.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.r556_sp.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.r556_sp.png new file mode 100644 index 000000000..669baaf5a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.r556_sp.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.r762_ap.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.r762_ap.png new file mode 100644 index 000000000..7fc1069d6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.r762_ap.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.r762_du.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.r762_du.png new file mode 100644 index 000000000..69e21c070 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.r762_du.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.r762_fmj.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.r762_fmj.png new file mode 100644 index 000000000..e5b3f474d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.r762_fmj.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.r762_jhp.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.r762_jhp.png new file mode 100644 index 000000000..fb7683576 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.r762_jhp.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.r762_sp.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.r762_sp.png new file mode 100644 index 000000000..e876a5060 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.r762_sp.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.rocket_demo.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.rocket_demo.png new file mode 100644 index 000000000..a7d3428eb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.rocket_demo.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.rocket_he.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.rocket_he.png new file mode 100644 index 000000000..63bc3fff8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.rocket_he.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.rocket_heat.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.rocket_heat.png new file mode 100644 index 000000000..91374948a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.rocket_heat.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.rocket_inc.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.rocket_inc.png new file mode 100644 index 000000000..b0633b4d9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.rocket_inc.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.rocket_phosphorus.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.rocket_phosphorus.png new file mode 100644 index 000000000..9d6a8b794 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.rocket_phosphorus.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.stone.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.stone.png new file mode 100644 index 000000000..cf4a12ddf Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.stone.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.stone_ap.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.stone_ap.png new file mode 100644 index 000000000..24e72420f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.stone_ap.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.stone_iron.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.stone_iron.png new file mode 100644 index 000000000..8beb92f44 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.stone_iron.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.stone_shot.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.stone_shot.png new file mode 100644 index 000000000..b783a6da0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.stone_shot.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.tau_uranium.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.tau_uranium.png new file mode 100644 index 000000000..55ea16c6e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.tau_uranium.png differ diff --git a/src/main/resources/assets/hbm/textures/items/armor_battery.png b/src/main/resources/assets/hbm/textures/items/armor_battery.png index 86a0cb9a1..7ed6e9b1d 100644 Binary files a/src/main/resources/assets/hbm/textures/items/armor_battery.png and b/src/main/resources/assets/hbm/textures/items/armor_battery.png differ diff --git a/src/main/resources/assets/hbm/textures/items/armor_battery_mk2.png b/src/main/resources/assets/hbm/textures/items/armor_battery_mk2.png index 699a5b4e2..098dfc64d 100644 Binary files a/src/main/resources/assets/hbm/textures/items/armor_battery_mk2.png and b/src/main/resources/assets/hbm/textures/items/armor_battery_mk2.png differ diff --git a/src/main/resources/assets/hbm/textures/items/armor_battery_mk3.png b/src/main/resources/assets/hbm/textures/items/armor_battery_mk3.png index 96cc82109..91c23c265 100644 Binary files a/src/main/resources/assets/hbm/textures/items/armor_battery_mk3.png and b/src/main/resources/assets/hbm/textures/items/armor_battery_mk3.png differ diff --git a/src/main/resources/assets/hbm/textures/items/assembly_45.png b/src/main/resources/assets/hbm/textures/items/assembly_45.png deleted file mode 100644 index d64ceb33b..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/assembly_45.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/assembly_556.png b/src/main/resources/assets/hbm/textures/items/assembly_556.png deleted file mode 100644 index d54b686cd..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/assembly_556.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/assembly_762.png b/src/main/resources/assets/hbm/textures/items/assembly_762.png deleted file mode 100644 index 775fe97c0..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/assembly_762.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/assembly_actionexpress.png b/src/main/resources/assets/hbm/textures/items/assembly_actionexpress.png deleted file mode 100644 index 2bdec8691..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/assembly_actionexpress.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/assembly_calamity.png b/src/main/resources/assets/hbm/textures/items/assembly_calamity.png deleted file mode 100644 index a79498196..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/assembly_calamity.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/assembly_desh.png b/src/main/resources/assets/hbm/textures/items/assembly_desh.png deleted file mode 100644 index 669416e06..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/assembly_desh.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/assembly_gold.png b/src/main/resources/assets/hbm/textures/items/assembly_gold.png deleted file mode 100644 index 4b7f8cc00..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/assembly_gold.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/assembly_iron.png b/src/main/resources/assets/hbm/textures/items/assembly_iron.png deleted file mode 100644 index 70c4983c9..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/assembly_iron.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/assembly_lacunae.png b/src/main/resources/assets/hbm/textures/items/assembly_lacunae.png deleted file mode 100644 index 7797ca9f1..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/assembly_lacunae.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/assembly_lead.png b/src/main/resources/assets/hbm/textures/items/assembly_lead.png deleted file mode 100644 index f31459e53..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/assembly_lead.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/assembly_luna.png b/src/main/resources/assets/hbm/textures/items/assembly_luna.png deleted file mode 100644 index d0935642e..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/assembly_luna.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/assembly_nightmare.png b/src/main/resources/assets/hbm/textures/items/assembly_nightmare.png deleted file mode 100644 index 0dc3faedd..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/assembly_nightmare.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/assembly_nopip.png b/src/main/resources/assets/hbm/textures/items/assembly_nopip.png deleted file mode 100644 index 8345a3758..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/assembly_nopip.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/assembly_pip.png b/src/main/resources/assets/hbm/textures/items/assembly_pip.png deleted file mode 100644 index 18f2e48ce..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/assembly_pip.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/assembly_schrabidium.png b/src/main/resources/assets/hbm/textures/items/assembly_schrabidium.png deleted file mode 100644 index 9c052fc10..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/assembly_schrabidium.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/assembly_smg.png b/src/main/resources/assets/hbm/textures/items/assembly_smg.png deleted file mode 100644 index 47406609c..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/assembly_smg.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/assembly_steel.png b/src/main/resources/assets/hbm/textures/items/assembly_steel.png deleted file mode 100644 index e603a98ba..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/assembly_steel.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/assembly_uzi.png b/src/main/resources/assets/hbm/textures/items/assembly_uzi.png deleted file mode 100644 index b490a0fac..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/assembly_uzi.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/b_smoke1.png b/src/main/resources/assets/hbm/textures/items/b_smoke1.png deleted file mode 100644 index cb231250e..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/b_smoke1.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/b_smoke2.png b/src/main/resources/assets/hbm/textures/items/b_smoke2.png deleted file mode 100644 index 261a94755..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/b_smoke2.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/b_smoke3.png b/src/main/resources/assets/hbm/textures/items/b_smoke3.png deleted file mode 100644 index d44c3e03f..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/b_smoke3.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/b_smoke4.png b/src/main/resources/assets/hbm/textures/items/b_smoke4.png deleted file mode 100644 index 2d9c8dc3c..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/b_smoke4.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/b_smoke5.png b/src/main/resources/assets/hbm/textures/items/b_smoke5.png deleted file mode 100644 index 18973a461..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/b_smoke5.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/b_smoke6.png b/src/main/resources/assets/hbm/textures/items/b_smoke6.png deleted file mode 100644 index d0b9ff88b..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/b_smoke6.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/b_smoke7.png b/src/main/resources/assets/hbm/textures/items/b_smoke7.png deleted file mode 100644 index 5637b1118..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/b_smoke7.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/b_smoke8.png b/src/main/resources/assets/hbm/textures/items/b_smoke8.png deleted file mode 100644 index caa2ddf3f..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/b_smoke8.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/billet_u233.png b/src/main/resources/assets/hbm/textures/items/billet_u233.png index 4f204047c..c8781268d 100644 Binary files a/src/main/resources/assets/hbm/textures/items/billet_u233.png and b/src/main/resources/assets/hbm/textures/items/billet_u233.png differ diff --git a/src/main/resources/assets/hbm/textures/items/casing.buckshot.png b/src/main/resources/assets/hbm/textures/items/casing.buckshot.png new file mode 100644 index 000000000..b894a48fb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/casing.buckshot.png differ diff --git a/src/main/resources/assets/hbm/textures/items/casing.buckshot_advanced.png b/src/main/resources/assets/hbm/textures/items/casing.buckshot_advanced.png new file mode 100644 index 000000000..d50a478b2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/casing.buckshot_advanced.png differ diff --git a/src/main/resources/assets/hbm/textures/items/casing.large.png b/src/main/resources/assets/hbm/textures/items/casing.large.png new file mode 100644 index 000000000..5c220d1b9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/casing.large.png differ diff --git a/src/main/resources/assets/hbm/textures/items/casing.large_steel.png b/src/main/resources/assets/hbm/textures/items/casing.large_steel.png new file mode 100644 index 000000000..afd72532d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/casing.large_steel.png differ diff --git a/src/main/resources/assets/hbm/textures/items/casing.shotshell.png b/src/main/resources/assets/hbm/textures/items/casing.shotshell.png new file mode 100644 index 000000000..f6b55e841 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/casing.shotshell.png differ diff --git a/src/main/resources/assets/hbm/textures/items/casing.small.png b/src/main/resources/assets/hbm/textures/items/casing.small.png new file mode 100644 index 000000000..87e9269eb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/casing.small.png differ diff --git a/src/main/resources/assets/hbm/textures/items/casing.small_steel.png b/src/main/resources/assets/hbm/textures/items/casing.small_steel.png new file mode 100644 index 000000000..741e1d23a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/casing.small_steel.png differ diff --git a/src/main/resources/assets/hbm/textures/items/casing_bag.png b/src/main/resources/assets/hbm/textures/items/casing_bag.png new file mode 100644 index 000000000..d7f680ecc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/casing_bag.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chem_icon_SATURN.png b/src/main/resources/assets/hbm/textures/items/chem_icon_SATURN.png index 06149dfa9..af0895d30 100644 Binary files a/src/main/resources/assets/hbm/textures/items/chem_icon_SATURN.png and b/src/main/resources/assets/hbm/textures/items/chem_icon_SATURN.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chunk_ore.malachite.png b/src/main/resources/assets/hbm/textures/items/chunk_ore.malachite.png new file mode 100644 index 000000000..d63905cc6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chunk_ore.malachite.png differ diff --git a/src/main/resources/assets/hbm/textures/items/clay_tablet.png b/src/main/resources/assets/hbm/textures/items/clay_tablet.png new file mode 100644 index 000000000..640d51e22 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/clay_tablet.png differ diff --git a/src/main/resources/assets/hbm/textures/items/color_pallete.png b/src/main/resources/assets/hbm/textures/items/color_pallete.png deleted file mode 100644 index b2eb5e22f..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/color_pallete.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/fragment_base.png b/src/main/resources/assets/hbm/textures/items/fragment_base.png new file mode 100644 index 000000000..84424d3c6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/fragment_base.png differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_upgrade_debug_conversion.png b/src/main/resources/assets/hbm/textures/items/gun_upgrade_debug_conversion.png new file mode 100644 index 000000000..e8d8198f2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/gun_upgrade_debug_conversion.png differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_upgrade_debug_damage.png b/src/main/resources/assets/hbm/textures/items/gun_upgrade_debug_damage.png new file mode 100644 index 000000000..d71b134fd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/gun_upgrade_debug_damage.png differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_upgrade_debug_multishot.png b/src/main/resources/assets/hbm/textures/items/gun_upgrade_debug_multishot.png new file mode 100644 index 000000000..38180b907 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/gun_upgrade_debug_multishot.png differ diff --git a/src/main/resources/assets/hbm/textures/items/gun_upgrade_debug_shotspeed.png b/src/main/resources/assets/hbm/textures/items/gun_upgrade_debug_shotspeed.png new file mode 100644 index 000000000..06f516760 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/gun_upgrade_debug_shotspeed.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_beskar_single_alt.png b/src/main/resources/assets/hbm/textures/items/ingot_beskar_single_alt.png new file mode 100644 index 000000000..0f0a229de Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ingot_beskar_single_alt.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_ceramic.png b/src/main/resources/assets/hbm/textures/items/ingot_ceramic.png new file mode 100644 index 000000000..6b0805212 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ingot_ceramic.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_gunmetal.png b/src/main/resources/assets/hbm/textures/items/ingot_gunmetal.png new file mode 100644 index 000000000..dc26658ee Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ingot_gunmetal.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_gunsteel.png b/src/main/resources/assets/hbm/textures/items/ingot_gunsteel.png new file mode 100644 index 000000000..b97acdc54 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ingot_gunsteel.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_raw.png b/src/main/resources/assets/hbm/textures/items/ingot_raw.png new file mode 100644 index 000000000..7a8970348 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ingot_raw.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_saturnite.png b/src/main/resources/assets/hbm/textures/items/ingot_saturnite.png index f1280a32b..8c8d04d9b 100644 Binary files a/src/main/resources/assets/hbm/textures/items/ingot_saturnite.png and b/src/main/resources/assets/hbm/textures/items/ingot_saturnite.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_u233.png b/src/main/resources/assets/hbm/textures/items/ingot_u233.png index 6cbb0bb42..50f69f0a0 100644 Binary files a/src/main/resources/assets/hbm/textures/items/ingot_u233.png and b/src/main/resources/assets/hbm/textures/items/ingot_u233.png differ diff --git a/src/main/resources/assets/hbm/textures/items/item_secret.selenium_steel.png b/src/main/resources/assets/hbm/textures/items/item_secret.selenium_steel.png new file mode 100644 index 000000000..ae91dcdae Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/item_secret.selenium_steel.png differ diff --git a/src/main/resources/assets/hbm/textures/items/mold_barrel_heavy.png b/src/main/resources/assets/hbm/textures/items/mold_barrel_heavy.png new file mode 100644 index 000000000..62f61b3c4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/mold_barrel_heavy.png differ diff --git a/src/main/resources/assets/hbm/textures/items/mold_barrel_light.png b/src/main/resources/assets/hbm/textures/items/mold_barrel_light.png new file mode 100644 index 000000000..0e3bbe8e5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/mold_barrel_light.png differ diff --git a/src/main/resources/assets/hbm/textures/items/mold_grip.png b/src/main/resources/assets/hbm/textures/items/mold_grip.png new file mode 100644 index 000000000..e59e52749 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/mold_grip.png differ diff --git a/src/main/resources/assets/hbm/textures/items/mold_mechanism.png b/src/main/resources/assets/hbm/textures/items/mold_mechanism.png new file mode 100644 index 000000000..041996d88 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/mold_mechanism.png differ diff --git a/src/main/resources/assets/hbm/textures/items/mold_receiver_heavy.png b/src/main/resources/assets/hbm/textures/items/mold_receiver_heavy.png new file mode 100644 index 000000000..4036ee57b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/mold_receiver_heavy.png differ diff --git a/src/main/resources/assets/hbm/textures/items/mold_receiver_light.png b/src/main/resources/assets/hbm/textures/items/mold_receiver_light.png new file mode 100644 index 000000000..98d550222 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/mold_receiver_light.png differ diff --git a/src/main/resources/assets/hbm/textures/items/mold_steel_base.png b/src/main/resources/assets/hbm/textures/items/mold_steel_base.png new file mode 100644 index 000000000..fd2c59e1b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/mold_steel_base.png differ diff --git a/src/main/resources/assets/hbm/textures/items/mold_stock.png b/src/main/resources/assets/hbm/textures/items/mold_stock.png new file mode 100644 index 000000000..f8e24f415 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/mold_stock.png differ diff --git a/src/main/resources/assets/hbm/textures/items/motor_dnt.png b/src/main/resources/assets/hbm/textures/items/motor_dnt.png deleted file mode 100644 index 73e4c1e5b..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/motor_dnt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/nugget_u233.png b/src/main/resources/assets/hbm/textures/items/nugget_u233.png index b10284e2b..981f0830d 100644 Binary files a/src/main/resources/assets/hbm/textures/items/nugget_u233.png and b/src/main/resources/assets/hbm/textures/items/nugget_u233.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pa_coil.bscco.png b/src/main/resources/assets/hbm/textures/items/pa_coil.bscco.png new file mode 100644 index 000000000..2e5e4c02c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pa_coil.bscco.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pa_coil.gold.png b/src/main/resources/assets/hbm/textures/items/pa_coil.gold.png new file mode 100644 index 000000000..6ca29c0b6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pa_coil.gold.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pa_coil.niobium.png b/src/main/resources/assets/hbm/textures/items/pa_coil.niobium.png new file mode 100644 index 000000000..45681141e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pa_coil.niobium.png differ diff --git a/src/main/resources/assets/hbm/textures/items/part_barrel_heavy.png b/src/main/resources/assets/hbm/textures/items/part_barrel_heavy.png new file mode 100644 index 000000000..44f07bfcc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/part_barrel_heavy.png differ diff --git a/src/main/resources/assets/hbm/textures/items/part_barrel_light.png b/src/main/resources/assets/hbm/textures/items/part_barrel_light.png new file mode 100644 index 000000000..c407b692e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/part_barrel_light.png differ diff --git a/src/main/resources/assets/hbm/textures/items/part_grip.png b/src/main/resources/assets/hbm/textures/items/part_grip.png new file mode 100644 index 000000000..cf73e7502 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/part_grip.png differ diff --git a/src/main/resources/assets/hbm/textures/items/part_mechanism.png b/src/main/resources/assets/hbm/textures/items/part_mechanism.png new file mode 100644 index 000000000..734659e14 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/part_mechanism.png differ diff --git a/src/main/resources/assets/hbm/textures/items/part_receiver_heavy.png b/src/main/resources/assets/hbm/textures/items/part_receiver_heavy.png new file mode 100644 index 000000000..696cf78f4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/part_receiver_heavy.png differ diff --git a/src/main/resources/assets/hbm/textures/items/part_receiver_light.png b/src/main/resources/assets/hbm/textures/items/part_receiver_light.png new file mode 100644 index 000000000..ea2057903 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/part_receiver_light.png differ diff --git a/src/main/resources/assets/hbm/textures/items/part_stock.png b/src/main/resources/assets/hbm/textures/items/part_stock.png new file mode 100644 index 000000000..a93b55f67 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/part_stock.png differ diff --git a/src/main/resources/assets/hbm/textures/items/plate_gunmetal.png b/src/main/resources/assets/hbm/textures/items/plate_gunmetal.png new file mode 100644 index 000000000..84a7b470c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/plate_gunmetal.png differ diff --git a/src/main/resources/assets/hbm/textures/items/plate_gunsteel.png b/src/main/resources/assets/hbm/textures/items/plate_gunsteel.png new file mode 100644 index 000000000..833e792f1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/plate_gunsteel.png differ diff --git a/src/main/resources/assets/hbm/textures/items/plate_saturnite.png b/src/main/resources/assets/hbm/textures/items/plate_saturnite.png index 9f3e071ac..9cca74517 100644 Binary files a/src/main/resources/assets/hbm/textures/items/plate_saturnite.png and b/src/main/resources/assets/hbm/textures/items/plate_saturnite.png differ diff --git a/src/main/resources/assets/hbm/textures/items/playground/mekanisms_new_textures_suck_balls.png b/src/main/resources/assets/hbm/textures/items/playground/mekanisms_new_textures_suck_balls.png new file mode 100644 index 000000000..e3793924b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/playground/mekanisms_new_textures_suck_balls.png differ diff --git a/src/main/resources/assets/hbm/textures/items/rod_dual_u233.png b/src/main/resources/assets/hbm/textures/items/rod_dual_u233.png index 1afcbe290..949016d95 100644 Binary files a/src/main/resources/assets/hbm/textures/items/rod_dual_u233.png and b/src/main/resources/assets/hbm/textures/items/rod_dual_u233.png differ diff --git a/src/main/resources/assets/hbm/textures/items/rod_quad_u233.png b/src/main/resources/assets/hbm/textures/items/rod_quad_u233.png index f9ab4acff..dc2172ecf 100644 Binary files a/src/main/resources/assets/hbm/textures/items/rod_quad_u233.png and b/src/main/resources/assets/hbm/textures/items/rod_quad_u233.png differ diff --git a/src/main/resources/assets/hbm/textures/items/rod_u233.png b/src/main/resources/assets/hbm/textures/items/rod_u233.png index e286fd79d..833f515c9 100644 Binary files a/src/main/resources/assets/hbm/textures/items/rod_u233.png and b/src/main/resources/assets/hbm/textures/items/rod_u233.png differ diff --git a/src/main/resources/assets/hbm/textures/items/rotor_steel.png b/src/main/resources/assets/hbm/textures/items/rotor_steel.png deleted file mode 100644 index 17350ef8d..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/rotor_steel.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/settings_tool.png b/src/main/resources/assets/hbm/textures/items/settings_tool.png new file mode 100644 index 000000000..331bb4e62 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/settings_tool.png differ diff --git a/src/main/resources/assets/hbm/textures/items/upgrade_bedrock.png b/src/main/resources/assets/hbm/textures/items/upgrade_bedrock.png deleted file mode 100644 index fc6600e86..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/upgrade_bedrock.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/upgrade_mod_u.png b/src/main/resources/assets/hbm/textures/items/upgrade_mod_u.png deleted file mode 100644 index 6e6831ccb..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/upgrade_mod_u.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/misc/overlay_misc.png b/src/main/resources/assets/hbm/textures/misc/overlay_misc.png index 423b33845..4162b065c 100644 Binary files a/src/main/resources/assets/hbm/textures/misc/overlay_misc.png and b/src/main/resources/assets/hbm/textures/misc/overlay_misc.png differ diff --git a/src/main/resources/assets/hbm/textures/models/BFLauncher.png b/src/main/resources/assets/hbm/textures/models/BFLauncher.png deleted file mode 100644 index b1f69982c..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/BFLauncher.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/BaleFlare.png b/src/main/resources/assets/hbm/textures/models/BaleFlare.png deleted file mode 100644 index f75ae16be..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/BaleFlare.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/FatmanLauncher.png b/src/main/resources/assets/hbm/textures/models/FatmanLauncher.png deleted file mode 100644 index 44968347b..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/FatmanLauncher.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/JetPackPurple.png b/src/main/resources/assets/hbm/textures/models/JetPackPurple.png deleted file mode 100644 index c1d0faf6f..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/JetPackPurple.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelB92.png b/src/main/resources/assets/hbm/textures/models/ModelB92.png deleted file mode 100644 index 86dbc2994..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelB92.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelB92Dark.png b/src/main/resources/assets/hbm/textures/models/ModelB92Dark.png deleted file mode 100644 index e41f8582c..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelB92Dark.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelB93.png b/src/main/resources/assets/hbm/textures/models/ModelB93.png deleted file mode 100644 index 0861b9bfc..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelB93.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelBoltAction.png b/src/main/resources/assets/hbm/textures/models/ModelBoltAction.png deleted file mode 100644 index 410512914..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelBoltAction.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelBoltActionDark.png b/src/main/resources/assets/hbm/textures/models/ModelBoltActionDark.png deleted file mode 100644 index 3bd22f1f9..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelBoltActionDark.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelBoltActionDarkGreen.png b/src/main/resources/assets/hbm/textures/models/ModelBoltActionDarkGreen.png deleted file mode 100644 index cb40afaff..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelBoltActionDarkGreen.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelBoltActionGreen.png b/src/main/resources/assets/hbm/textures/models/ModelBoltActionGreen.png deleted file mode 100644 index 1c5c31255..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelBoltActionGreen.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelBoltActionSaturnite.png b/src/main/resources/assets/hbm/textures/models/ModelBoltActionSaturnite.png deleted file mode 100644 index f89c1a960..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelBoltActionSaturnite.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelCalBarrel.png b/src/main/resources/assets/hbm/textures/models/ModelCalBarrel.png deleted file mode 100644 index 1b5903f49..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelCalBarrel.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelCalDualStock.png b/src/main/resources/assets/hbm/textures/models/ModelCalDualStock.png deleted file mode 100644 index c24d88063..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelCalDualStock.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelCalStock.png b/src/main/resources/assets/hbm/textures/models/ModelCalStock.png deleted file mode 100644 index e1f8df03e..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelCalStock.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelCryolator.png b/src/main/resources/assets/hbm/textures/models/ModelCryolator.png deleted file mode 100644 index 89d71fb71..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelCryolator.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelDash.png b/src/main/resources/assets/hbm/textures/models/ModelDash.png deleted file mode 100755 index 26e6cac9d..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelDash.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelDefabricator.png b/src/main/resources/assets/hbm/textures/models/ModelDefabricator.png deleted file mode 100755 index 5752d9cb0..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelDefabricator.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelEMPRay.png b/src/main/resources/assets/hbm/textures/models/ModelEMPRay.png deleted file mode 100644 index 079430b27..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelEMPRay.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelEuthanasia.png b/src/main/resources/assets/hbm/textures/models/ModelEuthanasia.png deleted file mode 100644 index 9c3a2960d..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelEuthanasia.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelFolly.png b/src/main/resources/assets/hbm/textures/models/ModelFolly.png deleted file mode 100644 index 065460dca..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelFolly.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelGustav.png b/src/main/resources/assets/hbm/textures/models/ModelGustav.png deleted file mode 100644 index 7644f473f..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelGustav.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelGustavYellow.png b/src/main/resources/assets/hbm/textures/models/ModelGustavYellow.png deleted file mode 100644 index f35253ad7..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelGustavYellow.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelHP.png b/src/main/resources/assets/hbm/textures/models/ModelHP.png deleted file mode 100755 index 7f1c34c88..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelHP.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelImmolator.png b/src/main/resources/assets/hbm/textures/models/ModelImmolator.png deleted file mode 100644 index 2a54c1359..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelImmolator.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelJack.png b/src/main/resources/assets/hbm/textures/models/ModelJack.png deleted file mode 100644 index 68ee93088..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelJack.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelLacunae.png b/src/main/resources/assets/hbm/textures/models/ModelLacunae.png deleted file mode 100644 index 40981f04b..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelLacunae.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelLacunaeAvenger.png b/src/main/resources/assets/hbm/textures/models/ModelLacunaeAvenger.png deleted file mode 100644 index 867efab47..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelLacunaeAvenger.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelLacunaeReal.png b/src/main/resources/assets/hbm/textures/models/ModelLacunaeReal.png deleted file mode 100644 index 05736d980..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelLacunaeReal.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelLeverAction.png b/src/main/resources/assets/hbm/textures/models/ModelLeverAction.png deleted file mode 100644 index 8068043e3..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelLeverAction.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelLeverActionDark.png b/src/main/resources/assets/hbm/textures/models/ModelLeverActionDark.png deleted file mode 100644 index b8d66c59d..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelLeverActionDark.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelMP.png b/src/main/resources/assets/hbm/textures/models/ModelMP.png deleted file mode 100644 index a094364f6..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelMP.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelMP40.png b/src/main/resources/assets/hbm/textures/models/ModelMP40.png deleted file mode 100644 index 497ef5c81..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelMP40.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelMP_alt.png b/src/main/resources/assets/hbm/textures/models/ModelMP_alt.png deleted file mode 100644 index 4fd02a6e8..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelMP_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelNightmare.png b/src/main/resources/assets/hbm/textures/models/ModelNightmare.png deleted file mode 100644 index f3186dd48..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelNightmare.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelNightmare2.png b/src/main/resources/assets/hbm/textures/models/ModelNightmare2.png deleted file mode 100644 index d05821401..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelNightmare2.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelOSIPR.png b/src/main/resources/assets/hbm/textures/models/ModelOSIPR.png deleted file mode 100644 index f8f8b637b..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelOSIPR.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelPip.png b/src/main/resources/assets/hbm/textures/models/ModelPip.png deleted file mode 100755 index 40c63f03e..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelPip.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelPipGrey.png b/src/main/resources/assets/hbm/textures/models/ModelPipGrey.png deleted file mode 100644 index 9173393a2..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelPipGrey.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelPipNoScope.png b/src/main/resources/assets/hbm/textures/models/ModelPipNoScope.png deleted file mode 100644 index f912f4df1..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelPipNoScope.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelPipRed.png b/src/main/resources/assets/hbm/textures/models/ModelPipRed.png deleted file mode 100644 index 2488821dd..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelPipRed.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelPipSilver.png b/src/main/resources/assets/hbm/textures/models/ModelPipSilver.png deleted file mode 100644 index 0e874ca24..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelPipSilver.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelPylon_alt.png b/src/main/resources/assets/hbm/textures/models/ModelPylon_alt.png deleted file mode 100755 index 65cf39dad..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelPylon_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelRPG.png b/src/main/resources/assets/hbm/textures/models/ModelRPG.png deleted file mode 100644 index a7323d537..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelRPG.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelRevolver.png b/src/main/resources/assets/hbm/textures/models/ModelRevolver.png deleted file mode 100644 index 34fd41af0..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelRevolver.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelRevolverGold.png b/src/main/resources/assets/hbm/textures/models/ModelRevolverGold.png deleted file mode 100644 index 647bcea5b..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelRevolverGold.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelRevolverIron.png b/src/main/resources/assets/hbm/textures/models/ModelRevolverIron.png deleted file mode 100644 index 594005b8e..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelRevolverIron.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelRevolverLead.png b/src/main/resources/assets/hbm/textures/models/ModelRevolverLead.png deleted file mode 100644 index 69ed11934..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelRevolverLead.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelRevolverSaturnite.png b/src/main/resources/assets/hbm/textures/models/ModelRevolverSaturnite.png deleted file mode 100644 index 508d1e8b6..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelRevolverSaturnite.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelRevolverSchrabidium.png b/src/main/resources/assets/hbm/textures/models/ModelRevolverSchrabidium.png deleted file mode 100644 index 8254ead18..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelRevolverSchrabidium.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelRocketOld.png b/src/main/resources/assets/hbm/textures/models/ModelRocketOld.png deleted file mode 100644 index 36835fb13..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelRocketOld.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelSkyStinger.png b/src/main/resources/assets/hbm/textures/models/ModelSkyStinger.png deleted file mode 100644 index 6b0f85daa..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelSkyStinger.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelSpark.png b/src/main/resources/assets/hbm/textures/models/ModelSpark.png deleted file mode 100755 index fd6c47bee..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelSpark.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelStinger.png b/src/main/resources/assets/hbm/textures/models/ModelStinger.png deleted file mode 100644 index c296d5f79..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelStinger.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelTwiGun.png b/src/main/resources/assets/hbm/textures/models/ModelTwiGun.png deleted file mode 100755 index 403da0f56..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelTwiGun.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelUboinik.png b/src/main/resources/assets/hbm/textures/models/ModelUboinik.png deleted file mode 100644 index 9d8fd122b..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelUboinik.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelUzi.png b/src/main/resources/assets/hbm/textures/models/ModelUzi.png deleted file mode 100644 index c288d9495..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelUzi.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelUziBarrel.png b/src/main/resources/assets/hbm/textures/models/ModelUziBarrel.png deleted file mode 100644 index 110ebd5d4..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelUziBarrel.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelUziSaturnite.png b/src/main/resources/assets/hbm/textures/models/ModelUziSaturnite.png deleted file mode 100644 index f2d727f69..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelUziSaturnite.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelUziSilencer.png b/src/main/resources/assets/hbm/textures/models/ModelUziSilencer.png deleted file mode 100644 index ef102143d..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelUziSilencer.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelXVL1456.png b/src/main/resources/assets/hbm/textures/models/ModelXVL1456.png deleted file mode 100644 index 0faabee24..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelXVL1456.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/ModelZOMG.png b/src/main/resources/assets/hbm/textures/models/ModelZOMG.png deleted file mode 100644 index 941fae77b..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/ModelZOMG.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/PlasmaBeam.png b/src/main/resources/assets/hbm/textures/models/PlasmaBeam.png deleted file mode 100644 index 608752d56..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/PlasmaBeam.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/SteelBeam.png b/src/main/resources/assets/hbm/textures/models/SteelBeam.png deleted file mode 100644 index aca7ef40f..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/SteelBeam.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/SteelCorner.png b/src/main/resources/assets/hbm/textures/models/SteelCorner.png deleted file mode 100644 index 585b3bd3d..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/SteelCorner.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/SteelScaffold.png b/src/main/resources/assets/hbm/textures/models/SteelScaffold.png deleted file mode 100644 index 9ea7ecbea..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/SteelScaffold.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/SteelWall.png b/src/main/resources/assets/hbm/textures/models/SteelWall.png deleted file mode 100644 index 7ea292660..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/SteelWall.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/bombletThetaTexture.png b/src/main/resources/assets/hbm/textures/models/bombletThetaTexture.png deleted file mode 100755 index e4f809d0d..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/bombletThetaTexture.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_desert.png b/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_desert.png new file mode 100644 index 000000000..e489023d6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_desert.png differ diff --git a/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_grass.png b/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_grass.png new file mode 100644 index 000000000..293089481 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_grass.png differ diff --git a/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_snow.png b/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_snow.png new file mode 100644 index 000000000..56400bed9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_snow.png differ diff --git a/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_stone.png b/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_stone.png new file mode 100644 index 000000000..fafacb3f5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/bombs/mine_ap_stone.png differ diff --git a/src/main/resources/assets/hbm/textures/models/bombs/mine_shrapnel.png b/src/main/resources/assets/hbm/textures/models/bombs/mine_shrapnel.png new file mode 100644 index 000000000..2956d1bde Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/bombs/mine_shrapnel.png differ diff --git a/src/main/resources/assets/hbm/textures/models/dornier_0.png b/src/main/resources/assets/hbm/textures/models/dornier_0.png deleted file mode 100644 index c5552e2b8..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/dornier_0.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/dornier_3.png b/src/main/resources/assets/hbm/textures/models/dornier_3.png deleted file mode 100644 index 00c8985cb..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/dornier_3.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/ammo_press.png b/src/main/resources/assets/hbm/textures/models/machines/ammo_press.png new file mode 100644 index 000000000..77c7930ae Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/ammo_press.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/lpw2.png b/src/main/resources/assets/hbm/textures/models/machines/lpw2.png new file mode 100644 index 000000000..4b0ec544c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/lpw2.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/lpw2_term.png b/src/main/resources/assets/hbm/textures/models/machines/lpw2_term.png new file mode 100644 index 000000000..d969c507e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/lpw2_term.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/lpw2_term_error.png b/src/main/resources/assets/hbm/textures/models/machines/lpw2_term_error.png new file mode 100644 index 000000000..bb6496746 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/lpw2_term_error.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/pyrooven.png b/src/main/resources/assets/hbm/textures/models/machines/pyrooven.png new file mode 100644 index 000000000..8dd9c81c2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/pyrooven.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/rotary_furnace.png b/src/main/resources/assets/hbm/textures/models/machines/rotary_furnace.png new file mode 100644 index 000000000..851cf91ab Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/rotary_furnace.png differ diff --git a/src/main/resources/assets/hbm/textures/models/mine_ap.png b/src/main/resources/assets/hbm/textures/models/mine_ap.png deleted file mode 100644 index 073f2a657..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/mine_ap.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/mine_he.png b/src/main/resources/assets/hbm/textures/models/mine_he.png deleted file mode 100644 index d0305e489..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/mine_he.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/mine_shrap.png b/src/main/resources/assets/hbm/textures/models/mine_shrap.png deleted file mode 100644 index 6e89e8bc8..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/mine_shrap.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/missilePad.png b/src/main/resources/assets/hbm/textures/models/missilePad.png deleted file mode 100644 index 03a80eeb3..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/missilePad.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/particleaccelerator/beamline.png b/src/main/resources/assets/hbm/textures/models/particleaccelerator/beamline.png new file mode 100644 index 000000000..211a39526 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/particleaccelerator/beamline.png differ diff --git a/src/main/resources/assets/hbm/textures/models/particleaccelerator/detector.png b/src/main/resources/assets/hbm/textures/models/particleaccelerator/detector.png new file mode 100644 index 000000000..c2a747b48 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/particleaccelerator/detector.png differ diff --git a/src/main/resources/assets/hbm/textures/models/particleaccelerator/dipole.png b/src/main/resources/assets/hbm/textures/models/particleaccelerator/dipole.png new file mode 100644 index 000000000..9e6d5877b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/particleaccelerator/dipole.png differ diff --git a/src/main/resources/assets/hbm/textures/models/particleaccelerator/quadrupole.png b/src/main/resources/assets/hbm/textures/models/particleaccelerator/quadrupole.png new file mode 100644 index 000000000..6e6c1dbf6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/particleaccelerator/quadrupole.png differ diff --git a/src/main/resources/assets/hbm/textures/models/particleaccelerator/rfc.png b/src/main/resources/assets/hbm/textures/models/particleaccelerator/rfc.png new file mode 100644 index 000000000..dd2250548 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/particleaccelerator/rfc.png differ diff --git a/src/main/resources/assets/hbm/textures/models/particleaccelerator/source.png b/src/main/resources/assets/hbm/textures/models/particleaccelerator/source.png new file mode 100644 index 000000000..1c7bb4de6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/particleaccelerator/source.png differ diff --git a/src/main/resources/assets/hbm/textures/models/sat_base_old.png b/src/main/resources/assets/hbm/textures/models/sat_base_old.png deleted file mode 100644 index 2cb645e09..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/sat_base_old.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_LEAD.png b/src/main/resources/assets/hbm/textures/models/tank/tank_LEAD.png new file mode 100644 index 000000000..ee86122ea Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_LEAD.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_LEAD_HOT.png b/src/main/resources/assets/hbm/textures/models/tank/tank_LEAD_HOT.png new file mode 100644 index 000000000..a043b9a4d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_LEAD_HOT.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_PERFLUOROMETHYL.png b/src/main/resources/assets/hbm/textures/models/tank/tank_PERFLUOROMETHYL.png new file mode 100644 index 000000000..1fbb312bd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_PERFLUOROMETHYL.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_PERFLUOROMETHYL_COLD.png b/src/main/resources/assets/hbm/textures/models/tank/tank_PERFLUOROMETHYL_COLD.png new file mode 100644 index 000000000..d82c98640 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_PERFLUOROMETHYL_COLD.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_PERFLUOROMETHYL_HOT.png b/src/main/resources/assets/hbm/textures/models/tank/tank_PERFLUOROMETHYL_HOT.png new file mode 100644 index 000000000..37dfc64b7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_PERFLUOROMETHYL_HOT.png differ diff --git a/src/main/resources/assets/hbm/textures/models/test_container_double.png b/src/main/resources/assets/hbm/textures/models/test_container_double.png deleted file mode 100644 index 182a96c72..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/test_container_double.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/test_container_single.png b/src/main/resources/assets/hbm/textures/models/test_container_single.png deleted file mode 100644 index c00662549..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/test_container_single.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/trinkets/frizzle.png b/src/main/resources/assets/hbm/textures/models/trinkets/frizzle.png index 9f86fdd63..0e82cf285 100644 Binary files a/src/main/resources/assets/hbm/textures/models/trinkets/frizzle.png and b/src/main/resources/assets/hbm/textures/models/trinkets/frizzle.png differ diff --git a/src/main/resources/assets/hbm/textures/models/trinkets/pooh.png b/src/main/resources/assets/hbm/textures/models/trinkets/pooh.png new file mode 100644 index 000000000..e1d9a60d6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/trinkets/pooh.png differ diff --git a/src/main/resources/assets/hbm/textures/models/truck_busted.png b/src/main/resources/assets/hbm/textures/models/truck_busted.png deleted file mode 100644 index e19710622..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/truck_busted.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/am180.png b/src/main/resources/assets/hbm/textures/models/weapons/am180.png new file mode 100644 index 000000000..dec10075a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/am180.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/bio_revolver.png b/src/main/resources/assets/hbm/textures/models/weapons/bio_revolver.png index 32a05672c..b8590707a 100644 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/bio_revolver.png and b/src/main/resources/assets/hbm/textures/models/weapons/bio_revolver.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/bio_revolver_atlas.png b/src/main/resources/assets/hbm/textures/models/weapons/bio_revolver_atlas.png new file mode 100644 index 000000000..32a05672c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/bio_revolver_atlas.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/bolter_digamma.png b/src/main/resources/assets/hbm/textures/models/weapons/bolter_digamma.png deleted file mode 100644 index 75f234d43..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/bolter_digamma.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/c130_0.png b/src/main/resources/assets/hbm/textures/models/weapons/c130_0.png new file mode 100644 index 000000000..04729bcdf Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/c130_0.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/carbine.png b/src/main/resources/assets/hbm/textures/models/weapons/carbine.png deleted file mode 100644 index 49b5f2796..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/carbine.png and /dev/null differ 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 2d611e459..849c27b4e 100644 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/congolake.png and b/src/main/resources/assets/hbm/textures/models/weapons/congolake.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/dani_celestial.png b/src/main/resources/assets/hbm/textures/models/weapons/dani_celestial.png new file mode 100644 index 000000000..ebe3ebd70 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/dani_celestial.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/dani_lunar.png b/src/main/resources/assets/hbm/textures/models/weapons/dani_lunar.png new file mode 100644 index 000000000..4ea531472 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/dani_lunar.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/debug_gun.png b/src/main/resources/assets/hbm/textures/models/weapons/debug_gun.png new file mode 100644 index 000000000..49b083ca9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/debug_gun.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/double_barrel.png b/src/main/resources/assets/hbm/textures/models/weapons/double_barrel.png new file mode 100644 index 000000000..cc5e054d4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/double_barrel.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/double_barrel_sacred_dragon.png b/src/main/resources/assets/hbm/textures/models/weapons/double_barrel_sacred_dragon.png new file mode 100644 index 000000000..9ccf01cb1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/double_barrel_sacred_dragon.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/fatman.png b/src/main/resources/assets/hbm/textures/models/weapons/fatman.png new file mode 100644 index 000000000..b818f5736 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/fatman.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/fatman_mininuke.png b/src/main/resources/assets/hbm/textures/models/weapons/fatman_mininuke.png new file mode 100644 index 000000000..536780bb2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/fatman_mininuke.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/ff/mg42.png b/src/main/resources/assets/hbm/textures/models/weapons/ff/mg42.png deleted file mode 100644 index ebd226f1d..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/ff/mg42.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/ff/nightmare.png b/src/main/resources/assets/hbm/textures/models/weapons/ff/nightmare.png deleted file mode 100644 index a3cbdbe61..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/ff/nightmare.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/ff/nightmare_orig.png b/src/main/resources/assets/hbm/textures/models/weapons/ff/nightmare_orig.png deleted file mode 100644 index b89b0683c..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/ff/nightmare_orig.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/ff/rem700.png b/src/main/resources/assets/hbm/textures/models/weapons/ff/rem700.png deleted file mode 100644 index a7868015e..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/ff/rem700.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/ff/rem700poly.png b/src/main/resources/assets/hbm/textures/models/weapons/ff/rem700poly.png deleted file mode 100644 index abc88117a..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/ff/rem700poly.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/ff/rem700sat.png b/src/main/resources/assets/hbm/textures/models/weapons/ff/rem700sat.png deleted file mode 100644 index 3b8d95215..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/ff/rem700sat.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flamer.png b/src/main/resources/assets/hbm/textures/models/weapons/flamer.png deleted file mode 100644 index 57f0cb286..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/flamer.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flamethrower.png b/src/main/resources/assets/hbm/textures/models/weapons/flamethrower.png new file mode 100644 index 000000000..192380382 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/flamethrower.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flamethrower_daybreaker.png b/src/main/resources/assets/hbm/textures/models/weapons/flamethrower_daybreaker.png new file mode 100644 index 000000000..abb9a52d9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/flamethrower_daybreaker.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flamethrower_topaz.png b/src/main/resources/assets/hbm/textures/models/weapons/flamethrower_topaz.png new file mode 100644 index 000000000..53c100c73 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/flamethrower_topaz.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flaregun.png b/src/main/resources/assets/hbm/textures/models/weapons/flaregun.png new file mode 100644 index 000000000..248dc94f3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/flaregun.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flechette_barrel.png b/src/main/resources/assets/hbm/textures/models/weapons/flechette_barrel.png deleted file mode 100644 index 19b3d2872..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/flechette_barrel.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flechette_base.png b/src/main/resources/assets/hbm/textures/models/weapons/flechette_base.png deleted file mode 100644 index 5b1c03e7b..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/flechette_base.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flechette_body.png b/src/main/resources/assets/hbm/textures/models/weapons/flechette_body.png deleted file mode 100644 index dfa1525d9..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/flechette_body.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flechette_chamber.png b/src/main/resources/assets/hbm/textures/models/weapons/flechette_chamber.png deleted file mode 100644 index be140fef4..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/flechette_chamber.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flechette_drum.png b/src/main/resources/assets/hbm/textures/models/weapons/flechette_drum.png deleted file mode 100644 index 0655f3918..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/flechette_drum.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flechette_gren_tube.png b/src/main/resources/assets/hbm/textures/models/weapons/flechette_gren_tube.png deleted file mode 100644 index cbf0e2bd0..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/flechette_gren_tube.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flechette_grenades.png b/src/main/resources/assets/hbm/textures/models/weapons/flechette_grenades.png deleted file mode 100644 index 06b0307d2..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/flechette_grenades.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flechette_pivot.png b/src/main/resources/assets/hbm/textures/models/weapons/flechette_pivot.png deleted file mode 100644 index 03f921e8d..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/flechette_pivot.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flechette_stock.png b/src/main/resources/assets/hbm/textures/models/weapons/flechette_stock.png deleted file mode 100644 index c395eabd2..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/flechette_stock.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flechette_top.png b/src/main/resources/assets/hbm/textures/models/weapons/flechette_top.png deleted file mode 100644 index d2b1cc2b2..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/flechette_top.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flechette_trigger.png b/src/main/resources/assets/hbm/textures/models/weapons/flechette_trigger.png deleted file mode 100644 index 4eb011a40..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/flechette_trigger.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/g3-polymer.png b/src/main/resources/assets/hbm/textures/models/weapons/g3-polymer.png new file mode 100644 index 000000000..02feff6a5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/g3-polymer.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/g3.png b/src/main/resources/assets/hbm/textures/models/weapons/g3.png new file mode 100644 index 000000000..43e9abb39 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/g3.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/glass_cannon_panel.png b/src/main/resources/assets/hbm/textures/models/weapons/glass_cannon_panel.png deleted file mode 100644 index a1e40ff71..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/glass_cannon_panel.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/greasegun.png b/src/main/resources/assets/hbm/textures/models/weapons/greasegun.png index faa19137b..3af33de68 100644 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/greasegun.png and b/src/main/resources/assets/hbm/textures/models/weapons/greasegun.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/hangman.png b/src/main/resources/assets/hbm/textures/models/weapons/hangman.png new file mode 100644 index 000000000..6f007351f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/hangman.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/heavy_revolver.png b/src/main/resources/assets/hbm/textures/models/weapons/heavy_revolver.png new file mode 100644 index 000000000..c1bf5c1ba Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/heavy_revolver.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/henry.png b/src/main/resources/assets/hbm/textures/models/weapons/henry.png new file mode 100644 index 000000000..d822e7665 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/henry.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/hk69.png b/src/main/resources/assets/hbm/textures/models/weapons/hk69.png deleted file mode 100644 index 41b98d1cb..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/hk69.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/huntsman.png b/src/main/resources/assets/hbm/textures/models/weapons/huntsman.png index e29aabfbc..0b40e3aa8 100644 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/huntsman.png and b/src/main/resources/assets/hbm/textures/models/weapons/huntsman.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/lag.png b/src/main/resources/assets/hbm/textures/models/weapons/lag.png index dc8665cf5..908219059 100644 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/lag.png and b/src/main/resources/assets/hbm/textures/models/weapons/lag.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/lasrifle.png b/src/main/resources/assets/hbm/textures/models/weapons/lasrifle.png index 6d0b45444..7458e6d96 100644 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/lasrifle.png and b/src/main/resources/assets/hbm/textures/models/weapons/lasrifle.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/lent_gun.png b/src/main/resources/assets/hbm/textures/models/weapons/lent_gun.png deleted file mode 100644 index a03177bba..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/lent_gun.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/liberator.png b/src/main/resources/assets/hbm/textures/models/weapons/liberator.png index d4536cee0..d900422e6 100644 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/liberator.png and b/src/main/resources/assets/hbm/textures/models/weapons/liberator.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/lil_pip.png b/src/main/resources/assets/hbm/textures/models/weapons/lil_pip.png deleted file mode 100644 index 7709cf279..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/lil_pip.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/lunatic_sniper.png b/src/main/resources/assets/hbm/textures/models/weapons/lunatic_sniper.png deleted file mode 100644 index f67942de0..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/lunatic_sniper.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/maresleg.png b/src/main/resources/assets/hbm/textures/models/weapons/maresleg.png new file mode 100644 index 000000000..9d8abca1b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/maresleg.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/maresleg_broken.png b/src/main/resources/assets/hbm/textures/models/weapons/maresleg_broken.png new file mode 100644 index 000000000..0e895de19 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/maresleg_broken.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/minigun.png b/src/main/resources/assets/hbm/textures/models/weapons/minigun.png index efc513e4b..26001ba4b 100644 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/minigun.png and b/src/main/resources/assets/hbm/textures/models/weapons/minigun.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/minigun_lacunae.png b/src/main/resources/assets/hbm/textures/models/weapons/minigun_lacunae.png new file mode 100644 index 000000000..66bfa6d81 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/minigun_lacunae.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/missile_launcher.png b/src/main/resources/assets/hbm/textures/models/weapons/missile_launcher.png index 69124f72a..08a122b8a 100644 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/missile_launcher.png and b/src/main/resources/assets/hbm/textures/models/weapons/missile_launcher.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/moonlight.png b/src/main/resources/assets/hbm/textures/models/weapons/moonlight.png new file mode 100644 index 000000000..36b7c8dc7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/moonlight.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/novac.png b/src/main/resources/assets/hbm/textures/models/weapons/novac.png deleted file mode 100644 index 58f988ef4..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/novac.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/novac_scope.png b/src/main/resources/assets/hbm/textures/models/weapons/novac_scope.png deleted file mode 100644 index 47a38039d..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/novac_scope.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/panzerschreck.png b/src/main/resources/assets/hbm/textures/models/weapons/panzerschreck.png index e631118a2..fe1d0b071 100644 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/panzerschreck.png and b/src/main/resources/assets/hbm/textures/models/weapons/panzerschreck.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/pepperbox.png b/src/main/resources/assets/hbm/textures/models/weapons/pepperbox.png new file mode 100644 index 000000000..2334c4e2c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/pepperbox.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/pistol_texture.png b/src/main/resources/assets/hbm/textures/models/weapons/pistol_texture.png deleted file mode 100644 index 926d076b9..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/pistol_texture.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/protege.png b/src/main/resources/assets/hbm/textures/models/weapons/protege.png new file mode 100644 index 000000000..ecfca9109 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/protege.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/red_key.png b/src/main/resources/assets/hbm/textures/models/weapons/red_key.png deleted file mode 100644 index 1ce79923f..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/red_key.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/remington.png b/src/main/resources/assets/hbm/textures/models/weapons/remington.png deleted file mode 100644 index 01935ed26..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/remington.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/sauergun.png b/src/main/resources/assets/hbm/textures/models/weapons/sauergun.png deleted file mode 100644 index 7b06753af..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/sauergun.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/sexy.png b/src/main/resources/assets/hbm/textures/models/weapons/sexy.png new file mode 100644 index 000000000..40e151702 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/sexy.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/shredder.png b/src/main/resources/assets/hbm/textures/models/weapons/shredder.png index 859c9c50a..d071dd86e 100644 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/shredder.png and b/src/main/resources/assets/hbm/textures/models/weapons/shredder.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/shredder_orig.png b/src/main/resources/assets/hbm/textures/models/weapons/shredder_orig.png new file mode 100644 index 000000000..98f6bcc34 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/shredder_orig.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/sky_stinger.png b/src/main/resources/assets/hbm/textures/models/weapons/sky_stinger.png deleted file mode 100644 index 2424f2a56..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/sky_stinger.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/stg77.png b/src/main/resources/assets/hbm/textures/models/weapons/stg77.png new file mode 100644 index 000000000..6bb0d2949 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/stg77.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/tesla_cannon.png b/src/main/resources/assets/hbm/textures/models/weapons/tesla_cannon.png new file mode 100644 index 000000000..af930f13e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/tesla_cannon.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/thompson.png b/src/main/resources/assets/hbm/textures/models/weapons/thompson.png deleted file mode 100644 index 8ecdedaac..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/thompson.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/torpedo.png b/src/main/resources/assets/hbm/textures/models/weapons/torpedo.png index f7100bbf5..4c0c7abf8 100644 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/torpedo.png and b/src/main/resources/assets/hbm/textures/models/weapons/torpedo.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/twr.png b/src/main/resources/assets/hbm/textures/models/weapons/twr.png deleted file mode 100644 index 57ed6b512..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/twr.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/uzi.png b/src/main/resources/assets/hbm/textures/models/weapons/uzi.png index 32c59127c..ad691a7e9 100644 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/uzi.png and b/src/main/resources/assets/hbm/textures/models/weapons/uzi.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/vortex.png b/src/main/resources/assets/hbm/textures/models/weapons/vortex.png deleted file mode 100644 index 81e9c1cad..000000000 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/vortex.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/particle/skeleton.png b/src/main/resources/assets/hbm/textures/particle/skeleton.png new file mode 100644 index 000000000..184b5853e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/particle/skeleton.png differ diff --git a/src/main/resources/assets/hbm/textures/particle/skoilet.png b/src/main/resources/assets/hbm/textures/particle/skoilet.png new file mode 100644 index 000000000..971df0043 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/particle/skoilet.png differ diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta deleted file mode 100644 index 6476c146a..000000000 --- a/src/main/resources/pack.mcmeta +++ /dev/null @@ -1,18 +0,0 @@ -{ - "pack" : { - "pack_format" : 1, - "description" : "NTM language pack" - }, - "language" : { - "te_ST" : { - "name" : "This is a testing language", - "region" : "ST", - "bidirectional" : false - }, - "en_NT" : { - "name" : "Advanced English", - "region" : "Minecraftia", - "bidirectional" : false - } - } -} diff --git a/tools/export-json-animation-2_79.py b/tools/export-json-animation-2_79.py new file mode 100644 index 000000000..a76a0894f --- /dev/null +++ b/tools/export-json-animation-2_79.py @@ -0,0 +1,300 @@ +# HOW TO USE +# Make sure all your animation actions start on frame 0 and are named as such: +# Name.Part +# and run the export, they'll be split into Animation groups with each part being assigned as a Bus. +# EG. Reload.Body will apply an animation called Reload to the bus called Body +# For best results, make sure your object Transform Mode is set to YZX Euler, so rotations match in-game +# When importing, you can use the Action Editor to assign the imported animations to parts to view and modify them + +bl_info = { + "name": "Export JSON Animation", + "blender": (2, 79, 0), + "category": "Import-Export", +} + +import bpy +import json +import math +import mathutils + +from bpy_extras.io_utils import ExportHelper, ImportHelper +from bpy.props import StringProperty, BoolProperty, EnumProperty +from bpy.types import Operator + + +class ExportJSONAnimation(Operator, ExportHelper): + """Exports an animation in a NTM JSON format""" + bl_idname = "export.ntm_json" # Unique identifier for buttons and menu items to reference. + bl_label = "Export NTM .json" # Display name in the interface. + bl_options = {'REGISTER'} + + # ExportHelper mix-in class uses this. + filename_ext = ".json" + + filter_glob = StringProperty( + default="*.json", + options={'HIDDEN'}, + maxlen=255, # Max internal buffer length, longer would be clamped. + ) + + def execute(self, context): # execute() is called when running the operator. + print("writing JSON data to file...") + f = open(self.filepath, 'w', encoding='utf-8') + + collection = {"anim": {}, "offset": {}, "hierarchy": {}, "rotmode": {}} + dimensions = ["x", "z", "y"] # Swizzled to X, Z, Y + mult = [1, -1, 1] # +X, -Z, +Y + + # Reset to first frame, so our offsets are set to model defaults + # If you get weird offset issues, make sure your model is in its rest pose before exporting + context.scene.frame_set(0) + + animations = collection['anim'] + offsets = collection['offset'] + modes = collection['rotmode'] + hierarchy = collection['hierarchy'] + + actions = bpy.data.actions + for action in actions: + split = action.name.split('.') + if len(split) != 2: + continue + name = split[0] + part = split[1] + + if name not in animations: + animations[name] = {} + + animations[name][part] = {} + animation = animations[name][part] + + # Fetch all the animation data + for fcu in action.fcurves: + dimension = dimensions[fcu.array_index] + + if not fcu.data_path in animation: + animation[fcu.data_path] = {} + if not dimension in animation[fcu.data_path]: + animation[fcu.data_path][dimension] = [] + + multiplier = mult[fcu.array_index] + if fcu.data_path == 'rotation_euler': + multiplier *= 180 / math.pi + + previousMillis = 0 + previousInterpolation = "" + + for keyframe in fcu.keyframe_points: + timeToFrame = keyframe.co.x * (1 / context.scene.render.fps) * 1000 + millis = timeToFrame - previousMillis + value = keyframe.co.y * multiplier + tuple = [value, millis, keyframe.interpolation, keyframe.easing] + if previousInterpolation == "BEZIER": + tuple.append(keyframe.handle_left.x * (1 / context.scene.render.fps) * 1000) + tuple.append(keyframe.handle_left.y * multiplier) + tuple.append(keyframe.handle_left_type) + if keyframe.interpolation == "BEZIER": + tuple.append(keyframe.handle_right.x * (1 / context.scene.render.fps) * 1000) + tuple.append(keyframe.handle_right.y * multiplier) + tuple.append(keyframe.handle_right_type) + if keyframe.interpolation == "ELASTIC": + tuple.append(keyframe.amplitude) + tuple.append(keyframe.period) + if keyframe.interpolation == "BACK": + tuple.append(keyframe.back) + previousMillis = timeToFrame + previousInterpolation = keyframe.interpolation + animation[fcu.data_path][dimension].append(tuple) + + for object in bpy.data.objects: + if object.type != 'MESH': + continue + + if object.parent: + hierarchy[object.name] = object.parent.name + + if object.location != mathutils.Vector(): # don't export 0,0,0 + offsets[object.name] = [object.location.x, object.location.z, -object.location.y] + + if object.rotation_mode != 'YZX': + modes[object.name] = object.rotation_mode + + + + f.write(json.dumps(collection)) + f.close() + + return {'FINISHED'} # Lets Blender know the operator finished successfully. + + + + + +class ImportJSONAnimation(Operator, ImportHelper): + """Imports an animation from a NTM JSON format""" + bl_idname = "import.ntm_json" # important since its how bpy.ops.import_test.some_data is constructed + bl_label = "Import NTM .json" + bl_options = {'REGISTER'} + + # ImportHelper mix-in class uses this. + filename_ext = ".json" + + filter_glob = StringProperty( + default="*.json", + options={'HIDDEN'}, + maxlen=255, # Max internal buffer length, longer would be clamped. + ) + + def execute(self, context): + print("reading JSON data from file...") + f = open(self.filepath, 'r', encoding='utf-8') + data = f.read() + f.close() + + dimensions = ["x", "z", "y"] # Swizzled to X, Z, Y + mult = [1, -1, 1] # +X, -Z, +Y + + collection = json.loads(data) + animations = collection["anim"] + for name in animations: + for part in animations[name]: + actionName = name + '.' + part + animation = animations[name][part] + action = bpy.data.actions.find(actionName) >= 0 and bpy.data.actions[actionName] or bpy.data.actions.new(actionName) + + action.use_fake_user = True + + # Keep the actions, in case they're already associated with objects + # but remove the frames to replace with fresh ones + for fcurve in action.fcurves: + action.fcurves.remove(fcurve) + # action.fcurves.clear() + + for path in animation: + for dimension in animation[path]: + dimIndex = dimensions.index(dimension) + curve = action.fcurves.new(path, index=dimIndex) + + multiplier = mult[dimIndex] + if path == 'rotation_euler': + multiplier *= math.pi / 180 + + millis = 0 + previousInterpolation = '' + + for tuple in animation[path][dimension]: + value = tuple[0] * multiplier + millis = millis + tuple[1] + frame = round(millis * context.scene.render.fps / 1000) + + keyframe = curve.keyframe_points.insert(frame, value) + keyframe.interpolation = 'LINEAR' + if len(tuple) >= 3: + keyframe.interpolation = tuple[2] + + if len(tuple) >= 4: + keyframe.easing = tuple[3] + + i = 4 + + if previousInterpolation == 'BEZIER': + keyframe.handle_left.x = tuple[i] * context.scene.render.fps / 1000 + i += 1 + keyframe.handle_left.y = tuple[i] * multiplier + i += 1 + keyframe.handle_left_type = tuple[i] + i += 1 + if keyframe.interpolation == 'BEZIER': + keyframe.handle_right.x = tuple[i] * context.scene.render.fps / 1000 + i += 1 + keyframe.handle_right.y = tuple[i] * multiplier + i += 1 + keyframe.handle_right_type = tuple[i] + i += 1 + if keyframe.interpolation == 'ELASTIC': + keyframe.amplitude = tuple[i] + i += 1 + keyframe.period = tuple[i] + i += 1 + if keyframe.interpolation == 'BACK': + keyframe.back = tuple[i] + i += 1 + + previousInterpolation = keyframe.interpolation + + for object in bpy.data.objects: + if object.type != 'MESH': + continue + + bpy.ops.object.select_all(action='DESELECT') + object.select = True + bpy.ops.object.transform_apply(location=False, rotation=True, scale=False) + object.rotation_mode = 'YZX' + + if 'rotmode' in collection: + modes = collection['rotmode'] + for mode in modes: + bpy.data.objects[mode].rotation_mode = modes[mode] + + if 'hierarchy' in collection: + hierarchy = collection['hierarchy'] + for name in hierarchy: + parent = hierarchy[name] + + bpy.data.objects[name].parent = bpy.data.objects[parent] + + offsets = collection['offset'] + for name in offsets: + offset = offsets[name] + + for object in bpy.data.objects: + if object.type != 'MESH': + continue + + bpy.ops.object.select_all(action='DESELECT') + object.select = True + + if object.name == name: + savedLocation = bpy.context.scene.cursor_location + bpy.context.scene.cursor_location = (-offset[0], -offset[2], offset[1]) + bpy.ops.object.origin_set(type='ORIGIN_CURSOR') + bpy.context.scene.cursor_location = savedLocation + + return {'FINISHED'} + + + + + + +def menu_export(self, context): + self.layout.operator(ExportJSONAnimation.bl_idname) + +def menu_import(self, context): + self.layout.operator(ImportJSONAnimation.bl_idname) + +def register(): + bpy.utils.register_class(ExportJSONAnimation) + bpy.utils.register_class(ImportJSONAnimation) + if hasattr(bpy.types, "TOPBAR_MT_file_export"): + bpy.types.TOPBAR_MT_file_export.append(menu_export) + bpy.types.TOPBAR_MT_file_import.append(menu_import) + elif hasattr(bpy.types, "INFO_MT_file_export"): + bpy.types.INFO_MT_file_export.append(menu_export) + bpy.types.INFO_MT_file_import.append(menu_import) + +def unregister(): + bpy.utils.unregister_class(ExportJSONAnimation) + bpy.utils.unregister_class(ImportJSONAnimation) + if hasattr(bpy.types, "TOPBAR_MT_file_export"): + bpy.types.TOPBAR_MT_file_export.remove(menu_export) + bpy.types.TOPBAR_MT_file_import.remove(menu_import) + elif hasattr(bpy.types, "INFO_MT_file_export"): + bpy.types.INFO_MT_file_export.remove(menu_export) + bpy.types.INFO_MT_file_import.remove(menu_import) + + +# This allows you to run the script directly from Blender's Text editor +# to test the add-on without having to install it. +if __name__ == "__main__": + register() diff --git a/tools/export-json-animation-3_2.py b/tools/export-json-animation-3_2.py new file mode 100644 index 000000000..067d3a117 --- /dev/null +++ b/tools/export-json-animation-3_2.py @@ -0,0 +1,293 @@ +# HOW TO USE +# Make sure all your animation actions start on frame 0 and are named as such: +# Name.Part +# and run the export, they'll be split into Animation groups with each part being assigned as a Bus. +# EG. Reload.Body will apply an animation called Reload to the bus called Body +# For best results, make sure your object Transform Mode is set to YZX Euler, so rotations match in-game +# When importing, you can use the Action Editor to assign the imported animations to parts to view and modify them + +bl_info = { + "name": "Export JSON Animation", + "blender": (3, 2, 0), + "category": "Import-Export", +} + +import bpy +import json +import math +import mathutils + +from bpy_extras.io_utils import ExportHelper, ImportHelper +from bpy.props import StringProperty, BoolProperty, EnumProperty +from bpy.types import Operator + + +class ExportJSONAnimation(Operator, ExportHelper): + """Exports an animation in a NTM JSON format""" + bl_idname = "export.ntm_json" # Unique identifier for buttons and menu items to reference. + bl_label = "Export NTM .json" # Display name in the interface. + bl_options = {'REGISTER'} + + # ExportHelper mix-in class uses this. + filename_ext = ".json" + + filter_glob: StringProperty( + default="*.json", + options={'HIDDEN'}, + maxlen=255, # Max internal buffer length, longer would be clamped. + ) + + def execute(self, context): # execute() is called when running the operator. + print("writing JSON data to file...") + f = open(self.filepath, 'w', encoding='utf-8') + + collection = {"anim": {}, "offset": {}, "hierarchy": {}, "rotmode": {}} + dimensions = ["x", "z", "y"] # Swizzled to X, Z, Y + mult = [1, -1, 1] # +X, -Z, +Y + + # Reset to first frame, so our offsets are set to model defaults + # If you get weird offset issues, make sure your model is in its rest pose before exporting + context.scene.frame_set(0) + + animations = collection['anim'] + offsets = collection['offset'] + modes = collection['rotmode'] + hierarchy = collection['hierarchy'] + + actions = bpy.data.actions + for action in actions: + split = action.name.split('.') + if len(split) != 2: + continue + name = split[0] + part = split[1] + + if name not in animations: + animations[name] = {} + + animations[name][part] = {} + animation = animations[name][part] + + # Fetch all the animation data + for fcu in action.fcurves: + dimension = dimensions[fcu.array_index] + + if not fcu.data_path in animation: + animation[fcu.data_path] = {} + if not dimension in animation[fcu.data_path]: + animation[fcu.data_path][dimension] = [] + + multiplier = mult[fcu.array_index] + if fcu.data_path == 'rotation_euler': + multiplier *= 180 / math.pi + + previousMillis = 0 + previousInterpolation = "" + + for keyframe in fcu.keyframe_points: + timeToFrame = keyframe.co.x * (1 / context.scene.render.fps) * 1000 + millis = timeToFrame - previousMillis + value = keyframe.co.y * multiplier + tuple = [value, millis, keyframe.interpolation, keyframe.easing] + if previousInterpolation == "BEZIER": + tuple.append(keyframe.handle_left.x * (1 / context.scene.render.fps) * 1000) + tuple.append(keyframe.handle_left.y * multiplier) + tuple.append(keyframe.handle_left_type) + if keyframe.interpolation == "BEZIER": + tuple.append(keyframe.handle_right.x * (1 / context.scene.render.fps) * 1000) + tuple.append(keyframe.handle_right.y * multiplier) + tuple.append(keyframe.handle_right_type) + if keyframe.interpolation == "ELASTIC": + tuple.append(keyframe.amplitude) + tuple.append(keyframe.period) + if keyframe.interpolation == "BACK": + tuple.append(keyframe.back) + previousMillis = timeToFrame + previousInterpolation = keyframe.interpolation + animation[fcu.data_path][dimension].append(tuple) + + for object in bpy.data.objects: + if object.type != 'MESH': + continue + + if object.parent: + hierarchy[object.name] = object.parent.name + + if object.location != mathutils.Vector(): # don't export 0,0,0 + offsets[object.name] = [object.location.x, object.location.z, -object.location.y] + + if object.rotation_mode != 'YZX': + modes[object.name] = object.rotation_mode + + + + f.write(json.dumps(collection)) + f.close() + + return {'FINISHED'} # Lets Blender know the operator finished successfully. + + + + + +class ImportJSONAnimation(Operator, ImportHelper): + """Imports an animation from a NTM JSON format""" + bl_idname = "import.ntm_json" # important since its how bpy.ops.import_test.some_data is constructed + bl_label = "Import NTM .json" + bl_options = {'REGISTER'} + + # ImportHelper mix-in class uses this. + filename_ext = ".json" + + filter_glob: StringProperty( + default="*.json", + options={'HIDDEN'}, + maxlen=255, # Max internal buffer length, longer would be clamped. + ) + + def execute(self, context): + print("reading JSON data from file...") + f = open(self.filepath, 'r', encoding='utf-8') + data = f.read() + f.close() + + dimensions = ["x", "z", "y"] # Swizzled to X, Z, Y + mult = [1, -1, 1] # +X, -Z, +Y + + collection = json.loads(data) + animations = collection["anim"] + for name in animations: + for part in animations[name]: + actionName = name + '.' + part + animation = animations[name][part] + action = bpy.data.actions.find(actionName) >= 0 and bpy.data.actions[actionName] or bpy.data.actions.new(actionName) + + action.use_fake_user = True + + # Keep the actions, in case they're already associated with objects + # but remove the frames to replace with fresh ones + for fcurve in action.fcurves: + action.fcurves.remove(fcurve) + # action.fcurves.clear() + + for path in animation: + for dimension in animation[path]: + dimIndex = dimensions.index(dimension) + curve = action.fcurves.new(path, index=dimIndex) + + multiplier = mult[dimIndex] + if path == 'rotation_euler': + multiplier *= math.pi / 180 + + millis = 0 + previousInterpolation = '' + + for tuple in animation[path][dimension]: + value = tuple[0] * multiplier + millis = millis + tuple[1] + frame = round(millis * context.scene.render.fps / 1000) + + keyframe = curve.keyframe_points.insert(frame, value) + keyframe.interpolation = 'LINEAR' + if len(tuple) >= 3: + keyframe.interpolation = tuple[2] + + if len(tuple) >= 4: + keyframe.easing = tuple[3] + + i = 4 + + if previousInterpolation == 'BEZIER': + keyframe.handle_left.x = tuple[i] * context.scene.render.fps / 1000 + i += 1 + keyframe.handle_left.y = tuple[i] * multiplier + i += 1 + keyframe.handle_left_type = tuple[i] + i += 1 + if keyframe.interpolation == 'BEZIER': + keyframe.handle_right.x = tuple[i] * context.scene.render.fps / 1000 + i += 1 + keyframe.handle_right.y = tuple[i] * multiplier + i += 1 + keyframe.handle_right_type = tuple[i] + i += 1 + if keyframe.interpolation == 'ELASTIC': + keyframe.amplitude = tuple[i] + i += 1 + keyframe.period = tuple[i] + i += 1 + if keyframe.interpolation == 'BACK': + keyframe.back = tuple[i] + i += 1 + + previousInterpolation = keyframe.interpolation + + + for object in bpy.data.objects: + if object.type != 'MESH': + continue + + bpy.ops.object.select_all(action='DESELECT') + object.select_set(True) + bpy.ops.object.transform_apply(location=False, rotation=True, scale=False, properties=False) + object.rotation_mode = 'YZX' + + if 'rotmode' in collection: + modes = collection['rotmode'] + for mode in modes: + bpy.data.objects[mode].rotation_mode = modes[mode] + + if 'hierarchy' in collection: + hierarchy = collection['hierarchy'] + for name in hierarchy: + parent = hierarchy[name] + + bpy.data.objects[name].parent = bpy.data.objects[parent] + + offsets = collection['offset'] + for name in offsets: + offset = offsets[name] + + for object in bpy.data.objects: + if object.type != 'MESH': + continue + + bpy.ops.object.select_all(action='DESELECT') + object.select_set(True) + + if object.name == name: + savedLocation = bpy.context.scene.cursor.location + bpy.context.scene.cursor.location = (-offset[0], -offset[2], offset[1]) + bpy.ops.object.origin_set(type='ORIGIN_CURSOR') + bpy.context.scene.cursor.location = savedLocation + + return {'FINISHED'} + + + + + + +def menu_export(self, context): + self.layout.operator(ExportJSONAnimation.bl_idname) + +def menu_import(self, context): + self.layout.operator(ImportJSONAnimation.bl_idname) + +def register(): + bpy.utils.register_class(ExportJSONAnimation) + bpy.utils.register_class(ImportJSONAnimation) + bpy.types.TOPBAR_MT_file_export.append(menu_export) + bpy.types.TOPBAR_MT_file_import.append(menu_import) + +def unregister(): + bpy.utils.unregister_class(ExportJSONAnimation) + bpy.utils.unregister_class(ImportJSONAnimation) + bpy.types.TOPBAR_MT_file_export.remove(menu_export) + bpy.types.TOPBAR_MT_file_import.remove(menu_import) + + +# This allows you to run the script directly from Blender's Text editor +# to test the add-on without having to install it. +if __name__ == "__main__": + register() diff --git a/tools/export-json-animation-4_0.py b/tools/export-json-animation-4_0.py new file mode 100644 index 000000000..0ed89b963 --- /dev/null +++ b/tools/export-json-animation-4_0.py @@ -0,0 +1,290 @@ +# HOW TO USE +# Make sure all your animation actions start on frame 0 and are named as such: +# Name.Part +# and run the export, they'll be split into Animation groups with each part being assigned as a Bus. +# EG. Reload.Body will apply an animation called Reload to the bus called Body +# For best results, make sure your object Transform Mode is set to YZX Euler, so rotations match in-game +# When importing, you can use the Action Editor to assign the imported animations to parts to view and modify them + +bl_info = { + "name": "Export JSON Animation", + "blender": (4, 0, 0), + "category": "Import-Export", +} + +import bpy +import json +import math +import mathutils + +from bpy_extras.io_utils import ExportHelper, ImportHelper +from bpy.props import StringProperty, BoolProperty, EnumProperty +from bpy.types import Operator + + +class ExportJSONAnimation(Operator, ExportHelper): + """Exports an animation in a NTM JSON format""" + bl_idname = "export.ntm_json" # Unique identifier for buttons and menu items to reference. + bl_label = "Export NTM .json" # Display name in the interface. + bl_options = {'REGISTER'} + + # ExportHelper mix-in class uses this. + filename_ext = ".json" + + filter_glob: StringProperty( + default="*.json", + options={'HIDDEN'}, + maxlen=255, # Max internal buffer length, longer would be clamped. + ) + + def execute(self, context): # execute() is called when running the operator. + print("writing JSON data to file...") + f = open(self.filepath, 'w', encoding='utf-8') + + collection = {"anim": {}, "offset": {}, "hierarchy": {}, "rotmode": {}} + dimensions = ["x", "z", "y"] # Swizzled to X, Z, Y + mult = [1, -1, 1] # +X, -Z, +Y + + # Reset to first frame, so our offsets are set to model defaults + # If you get weird offset issues, make sure your model is in its rest pose before exporting + context.scene.frame_set(0) + + animations = collection['anim'] + offsets = collection['offset'] + modes = collection['rotmode'] + hierarchy = collection['hierarchy'] + + actions = bpy.data.actions + for action in actions: + split = action.name.split('.') + if len(split) != 2: + continue + name = split[0] + part = split[1] + + if name not in animations: + animations[name] = {} + + animations[name][part] = {} + animation = animations[name][part] + + # Fetch all the animation data + for fcu in action.fcurves: + dimension = dimensions[fcu.array_index] + + if not fcu.data_path in animation: + animation[fcu.data_path] = {} + if not dimension in animation[fcu.data_path]: + animation[fcu.data_path][dimension] = [] + + multiplier = mult[fcu.array_index] + if fcu.data_path == 'rotation_euler': + multiplier *= 180 / math.pi + + previousMillis = 0 + previousInterpolation = "" + + for keyframe in fcu.keyframe_points: + timeToFrame = keyframe.co.x * (1 / context.scene.render.fps) * 1000 + millis = timeToFrame - previousMillis + value = keyframe.co.y * multiplier + tuple = [value, millis, keyframe.interpolation, keyframe.easing] + if previousInterpolation == "BEZIER": + tuple.append(keyframe.handle_left.x * (1 / context.scene.render.fps) * 1000) + tuple.append(keyframe.handle_left.y * multiplier) + tuple.append(keyframe.handle_left_type) + if keyframe.interpolation == "BEZIER": + tuple.append(keyframe.handle_right.x * (1 / context.scene.render.fps) * 1000) + tuple.append(keyframe.handle_right.y * multiplier) + tuple.append(keyframe.handle_right_type) + if keyframe.interpolation == "ELASTIC": + tuple.append(keyframe.amplitude) + tuple.append(keyframe.period) + if keyframe.interpolation == "BACK": + tuple.append(keyframe.back) + previousMillis = timeToFrame + previousInterpolation = keyframe.interpolation + animation[fcu.data_path][dimension].append(tuple) + + for object in bpy.data.objects: + if object.type != 'MESH': + continue + + if object.parent: + hierarchy[object.name] = object.parent.name + + if object.location != mathutils.Vector(): # don't export 0,0,0 + offsets[object.name] = [object.location.x, object.location.z, -object.location.y] + + if object.rotation_mode != 'YZX': + modes[object.name] = object.rotation_mode + + + + f.write(json.dumps(collection)) + f.close() + + return {'FINISHED'} # Lets Blender know the operator finished successfully. + + + + + +class ImportJSONAnimation(Operator, ImportHelper): + """Imports an animation from a NTM JSON format""" + bl_idname = "import.ntm_json" # important since its how bpy.ops.import_test.some_data is constructed + bl_label = "Import NTM .json" + bl_options = {'REGISTER'} + + # ImportHelper mix-in class uses this. + filename_ext = ".json" + + filter_glob: StringProperty( + default="*.json", + options={'HIDDEN'}, + maxlen=255, # Max internal buffer length, longer would be clamped. + ) + + def execute(self, context): + print("reading JSON data from file...") + f = open(self.filepath, 'r', encoding='utf-8') + data = f.read() + f.close() + + dimensions = ["x", "z", "y"] # Swizzled to X, Z, Y + mult = [1, -1, 1] # +X, -Z, +Y + + collection = json.loads(data) + animations = collection["anim"] + for name in animations: + for part in animations[name]: + actionName = name + '.' + part + animation = animations[name][part] + action = bpy.data.actions.find(actionName) >= 0 and bpy.data.actions[actionName] or bpy.data.actions.new(actionName) + + action.use_fake_user = True + + # Keep the actions, in case they're already associated with objects + # but remove the frames to replace with fresh ones + action.fcurves.clear() + + for path in animation: + for dimension in animation[path]: + dimIndex = dimensions.index(dimension) + curve = action.fcurves.new(path, index=dimIndex) + + multiplier = mult[dimIndex] + if path == 'rotation_euler': + multiplier *= math.pi / 180 + + millis = 0 + previousInterpolation = '' + + for tuple in animation[path][dimension]: + value = tuple[0] * multiplier + millis = millis + tuple[1] + frame = round(millis * context.scene.render.fps / 1000) + + keyframe = curve.keyframe_points.insert(frame, value) + keyframe.interpolation = 'LINEAR' + if len(tuple) >= 3: + keyframe.interpolation = tuple[2] + + if len(tuple) >= 4: + keyframe.easing = tuple[3] + + i = 4 + + if previousInterpolation == 'BEZIER': + keyframe.handle_left.x = tuple[i] * context.scene.render.fps / 1000 + i += 1 + keyframe.handle_left.y = tuple[i] * multiplier + i += 1 + keyframe.handle_left_type = tuple[i] + i += 1 + if keyframe.interpolation == 'BEZIER': + keyframe.handle_right.x = tuple[i] * context.scene.render.fps / 1000 + i += 1 + keyframe.handle_right.y = tuple[i] * multiplier + i += 1 + keyframe.handle_right_type = tuple[i] + i += 1 + if keyframe.interpolation == 'ELASTIC': + keyframe.amplitude = tuple[i] + i += 1 + keyframe.period = tuple[i] + i += 1 + if keyframe.interpolation == 'BACK': + keyframe.back = tuple[i] + i += 1 + + previousInterpolation = keyframe.interpolation + + for object in bpy.data.objects: + if object.type != 'MESH': + continue + + bpy.ops.object.select_all(action='DESELECT') + object.select_set(True) + bpy.ops.object.transform_apply(location=False, rotation=True, scale=False, properties=False) + object.rotation_mode = 'YZX' + + if 'rotmode' in collection: + modes = collection['rotmode'] + for mode in modes: + bpy.data.objects[mode].rotation_mode = modes[mode] + + if 'hierarchy' in collection: + hierarchy = collection['hierarchy'] + for name in hierarchy: + parent = hierarchy[name] + + bpy.data.objects[name].parent = bpy.data.objects[parent] + + offsets = collection['offset'] + for name in offsets: + offset = offsets[name] + + for object in bpy.data.objects: + if object.type != 'MESH': + continue + + bpy.ops.object.select_all(action='DESELECT') + object.select_set(True) + + if object.name == name: + savedLocation = bpy.context.scene.cursor.location + bpy.context.scene.cursor.location = (-offset[0], -offset[2], offset[1]) + bpy.ops.object.origin_set(type='ORIGIN_CURSOR') + bpy.context.scene.cursor.location = savedLocation + + return {'FINISHED'} + + + + + + +def menu_export(self, context): + self.layout.operator(ExportJSONAnimation.bl_idname) + +def menu_import(self, context): + self.layout.operator(ImportJSONAnimation.bl_idname) + +def register(): + bpy.utils.register_class(ExportJSONAnimation) + bpy.utils.register_class(ImportJSONAnimation) + bpy.types.TOPBAR_MT_file_export.append(menu_export) + bpy.types.TOPBAR_MT_file_import.append(menu_import) + +def unregister(): + bpy.utils.unregister_class(ExportJSONAnimation) + bpy.utils.unregister_class(ImportJSONAnimation) + bpy.types.TOPBAR_MT_file_export.remove(menu_export) + bpy.types.TOPBAR_MT_file_import.remove(menu_import) + + +# This allows you to run the script directly from Blender's Text editor +# to test the add-on without having to install it. +if __name__ == "__main__": + register()